f0VMRgIBAQAAAAAAAAAAAAMAPgABAAAAwAnHAAAAAABAAAAAAAAAAPCe4AAAAAAAAAAAAEAAOAAMAEAAIQAfAAYAAAAEAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAoAIAAAAAAACgAgAAAAAAAAgAAAAAAAAAAwAAAAQAAADgAgAAAAAAAOACAAAAAAAA4AIAAAAAAAAcAAAAAAAAABwAAAAAAAAAAQAAAAAAAAABAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKz5xgAAAAAArPnGAAAAAAAAEAAAAAAAAAEAAAAFAAAAwPnGAAAAAADACccAAAAAAMAJxwAAAAAA4OAXAAAAAADg4BcAAAAAAAAQAAAAAAAAAQAAAAYAAACg2t4AAAAAAKD63gAAAAAAoPreAAAAAAAonwAAAAAAACifAAAAAAAAABAAAAAAAAABAAAABgAAAAB63wAAAAAAAKrfAAAAAAAAqt8AAAAAAJAMAAAAAAAAKFgAAAAAAAAAEAAAAAAAAAcAAAAEAAAAoNreAAAAAACg+t4AAAAAAKD63gAAAAAACAAAAAAAAAAwAAAAAAAAAAgAAAAAAAAAAgAAAAYAAADQad8AAAAAANCJ3wAAAAAA0InfAAAAAABQAgAAAAAAAFACAAAAAAAACAAAAAAAAABS5XRkBAAAAKDa3gAAAAAAoPreAAAAAACg+t4AAAAAACifAAAAAAAAYKUAAAAAAAABAAAAAAAAAFDldGQEAAAA1MrCAAAAAADUysIAAAAAANTKwgAAAAAALJoAAAAAAAAsmgAAAAAAAAQAAAAAAAAAUeV0ZAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAPwCAAAAAAAA/AIAAAAAAAD8AgAAAAAAACAAAAAAAAAAIAAAAAAAAAAEAAAAAAAAAC9saWI2NC9sZC1saW51eC14ODYtNjQuc28uMgAEAAAAEAAAAAEAAABHTlUAAAAAAAIAAAAGAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAATAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAuAAAAIAAAAAAAAAAAAAAAAAAAAAAAAABKAAAAIAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAIgAAAAAAAAAAAAAAAAAAAAAAAABzAAAAIAAAAAAAAAAAAAAAAAAAAAAAAACHAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAC5AAAAEQAAAAAAAAAAAAAAAAAAAAAAAADzAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAkAQAAEgAAAAAAAAAAAAAAAAAAAAAAAABbAQAAEgAAAAAAAAAAAAAAAAAAAAAAAACZAQAAEQAAAAAAAAAAAAAAAAAAAAAAAADMAQAAEgAAAAAAAAAAAAAAAAAAAAAAAACoAgAAEgAAAAAAAAAAAAAAAAAAAAAAAABpAwAAEgAAAAAAAAAAAAAAAAAAAAAAAABvAwAAEgAAAAAAAAAAAAAAAAAAAAAAAAClAwAAEgAAAAAAAAAAAAAAAAAAAAAAAACsAwAAEgAAAAAAAAAAAAAAAAAAAAAAAAACBAAAEgAAAAAAAAAAAAAAAAAAAAAAAAA+BAAAEgAAAAAAAAAAAAAAAAAAAAAAAADSBAAAEgAAAAAAAAAAAAAAAAAAAAAAAAA5BQAAEgAAAAAAAAAAAAAAAAAAAAAAAACBBQAAEgAAAAAAAAAAAAAAAAAAAAAAAADRBQAAEgAAAAAAAAAAAAAAAAAAAAAAAAAgBgAAEgAAAAAAAAAAAAAAAAAAAAAAAACZBgAAEgAAAAAAAAAAAAAAAAAAAAAAAAA/BwAAEgAAAAAAAAAAAAAAAAAAAAAAAAC1BwAAEgAAAAAAAAAAAAAAAAAAAAAAAABACAAAEgAAAAAAAAAAAAAAAAAAAAAAAACjCAAAEgAAAAAAAAAAAAAAAAAAAAAAAAD/CAAAEgAAAAAAAAAAAAAAAAAAAAAAAABFCQAAEgAAAAAAAAAAAAAAAAAAAAAAAACNCQAAEgAAAAAAAAAAAAAAAAAAAAAAAACLCgAAEgAAAAAAAAAAAAAAAAAAAAAAAADUCgAAEgAAAAAAAAAAAAAAAAAAAAAAAAB5CwAAEgAAAAAAAAAAAAAAAAAAAAAAAAC6CwAAEgAAAAAAAAAAAAAAAAAAAAAAAAAQDAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAwDAAAEgAAAAAAAAAAAAAAAAAAAAAAAABtDAAAEgAAAAAAAAAAAAAAAAAAAAAAAAC+DAAAEgAAAAAAAAAAAAAAAAAAAAAAAAADDQAAEgAAAAAAAAAAAAAAAAAAAAAAAAAsDQAAEgAAAAAAAAAAAAAAAAAAAAAAAACYDQAAEgAAAAAAAAAAAAAAAAAAAAAAAABTDgAAEgAAAAAAAAAAAAAAAAAAAAAAAACgDgAAEgAAAAAAAAAAAAAAAAAAAAAAAADeDgAAEgAAAAAAAAAAAAAAAAAAAAAAAAA0DwAAEgAAAAAAAAAAAAAAAAAAAAAAAADODwAAEgAAAAAAAAAAAAAAAAAAAAAAAAAmEAAAEgAAAAAAAAAAAAAAAAAAAAAAAABSEAAAEQAAAAAAAAAAAAAAAAAAAAAAAADMEAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAUEQAAEgAAAAAAAAAAAAAAAAAAAAAAAABOEQAAEgAAAAAAAAAAAAAAAAAAAAAAAAB9EQAAEgAAAAAAAAAAAAAAAAAAAAAAAACOEQAAEgAAAAAAAAAAAAAAAAAAAAAAAACUEQAAEgAAAAAAAAAAAAAAAAAAAAAAAACbEQAAEgAAAAAAAAAAAAAAAAAAAAAAAADeEQAAEgAAAAAAAAAAAAAAAAAAAAAAAAA2EgAAEgAAAAAAAAAAAAAAAAAAAAAAAABcEgAAEgAAAAAAAAAAAAAAAAAAAAAAAACrEgAAEgAAAAAAAAAAAAAAAAAAAAAAAAACEwAAEgAAAAAAAAAAAAAAAAAAAAAAAABNEwAAEgAAAAAAAAAAAAAAAAAAAAAAAAB8EwAAEgAAAAAAAAAAAAAAAAAAAAAAAACqEwAAEgAAAAAAAAAAAAAAAAAAAAAAAABUFAAAEgAAAAAAAAAAAAAAAAAAAAAAAACoFAAAEgAAAAAAAAAAAAAAAAAAAAAAAAB+FQAAEgAAAAAAAAAAAAAAAAAAAAAAAAC8FQAAEgAAAAAAAAAAAAAAAAAAAAAAAADrFQAAEgAAAAAAAAAAAAAAAAAAAAAAAAAqFgAAEgAAAAAAAAAAAAAAAAAAAAAAAAC3FgAAEgAAAAAAAAAAAAAAAAAAAAAAAAC8FgAAEgAAAAAAAAAAAAAAAAAAAAAAAADDFgAAEQAAAAAAAAAAAAAAAAAAAAAAAABpFwAAEgAAAAAAAAAAAAAAAAAAAAAAAAC7FwAAEgAAAAAAAAAAAAAAAAAAAAAAAADdGAAAEgAAAAAAAAAAAAAAAAAAAAAAAABSGQAAEgAAAAAAAAAAAAAAAAAAAAAAAABmGQAAEgAAAAAAAAAAAAAAAAAAAAAAAACgGQAAEgAAAAAAAAAAAAAAAAAAAAAAAADhGQAAEgAAAAAAAAAAAAAAAAAAAAAAAAAnGgAAEQAAAAAAAAAAAAAAAAAAAAAAAABgGgAAEQAAAAAAAAAAAAAAAAAAAAAAAACNGgAAEQAAAAAAAAAAAAAAAAAAAAAAAAC+GgAAEQAAAAAAAAAAAAAAAAAAAAAAAAD1GgAAEgAAAAAAAAAAAAAAAAAAAAAAAAAhGwAAEgAAAAAAAAAAAAAAAAAAAAAAAABbGwAAEgAAAAAAAAAAAAAAAAAAAAAAAACjGwAAEgAAAAAAAAAAAAAAAAAAAAAAAADpGwAAEgAAAAAAAAAAAAAAAAAAAAAAAAAdHAAAEgAAAAAAAAAAAAAAAAAAAAAAAABLHAAAEgAAAAAAAAAAAAAAAAAAAAAAAAB2HAAAEgAAAAAAAAAAAAAAAAAAAAAAAACkHAAAEgAAAAAAAAAAAAAAAAAAAAAAAABrHQAAEgAAAAAAAAAAAAAAAAAAAAAAAAAEHgAAEgAAAAAAAAAAAAAAAAAAAAAAAABdHgAAEgAAAAAAAAAAAAAAAAAAAAAAAAB2HgAAEgAAAAAAAAAAAAAAAAAAAAAAAADGHgAAEgAAAAAAAAAAAAAAAAAAAAAAAADdHgAAEgAAAAAAAAAAAAAAAAAAAAAAAABeHwAAEgAAAAAAAAAAAAAAAAAAAAAAAABjHwAAEgAAAAAAAAAAAAAAAAAAAAAAAAB2HwAAEgAAAAAAAAAAAAAAAAAAAAAAAAB9HwAAEgAAAAAAAAAAAAAAAAAAAAAAAADJHwAAEgAAAAAAAAAAAAAAAAAAAAAAAAAUIAAAEgAAAAAAAAAAAAAAAAAAAAAAAABFIAAAEgAAAAAAAAAAAAAAAAAAAAAAAACfIAAAEQAAAAAAAAAAAAAAAAAAAAAAAACmIAAAEgAAAAAAAAAAAAAAAAAAAAAAAADmIAAAEgAAAAAAAAAAAAAAAAAAAAAAAADtIAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAuIgAAEgAAAAAAAAAAAAAAAAAAAAAAAAA0IgAAEgAAAAAAAAAAAAAAAAAAAAAAAABzIgAAEQAAAAAAAAAAAAAAAAAAAAAAAACXIgAAEgAAAAAAAAAAAAAAAAAAAAAAAAC9IgAAEgAAAAAAAAAAAAAAAAAAAAAAAADuIgAAEgAAAAAAAAAAAAAAAAAAAAAAAAD/IgAAEgAAAAAAAAAAAAAAAAAAAAAAAAA5IwAAEgAAAAAAAAAAAAAAAAAAAAAAAAAxJAAAEgAAAAAAAAAAAAAAAAAAAAAAAABSJAAAEgAAAAAAAAAAAAAAAAAAAAAAAACQJAAAEgAAAAAAAAAAAAAAAAAAAAAAAACtJAAAEQAAAAAAAAAAAAAAAAAAAAAAAADEJAAAEgAAAAAAAAAAAAAAAAAAAAAAAADqJAAAEgAAAAAAAAAAAAAAAAAAAAAAAAD/JAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAaJQAAEgAAAAAAAAAAAAAAAAAAAAAAAABVJQAAEgAAAAAAAAAAAAAAAAAAAAAAAAChJQAAEgAAAAAAAAAAAAAAAAAAAAAAAADSJQAAEgAAAAAAAAAAAAAAAAAAAAAAAAADJgAAEgAAAAAAAAAAAAAAAAAAAAAAAADcJgAAEgAAAAAAAAAAAAAAAAAAAAAAAAA0KAAAEgAAAAAAAAAAAAAAAAAAAAAAAABvKAAAEgAAAAAAAAAAAAAAAAAAAAAAAADCKQAAEgAAAAAAAAAAAAAAAAAAAAAAAADtKQAAEgAAAAAAAAAAAAAAAAAAAAAAAAAmKgAAEgAAAAAAAAAAAAAAAAAAAAAAAABHKgAAEgAAAAAAAAAAAAAAAAAAAAAAAABOKgAAEgAAAAAAAAAAAAAAAAAAAAAAAABsKgAAEgAAAAAAAAAAAAAAAAAAAAAAAACRKgAAEgAAAAAAAAAAAAAAAAAAAAAAAADZKgAAEgAAAAAAAAAAAAAAAAAAAAAAAAARKwAAEgAAAAAAAAAAAAAAAAAAAAAAAADLKwAAEgAAAAAAAAAAAAAAAAAAAAAAAAAZLAAAEgAAAAAAAAAAAAAAAAAAAAAAAAByLAAAEgAAAAAAAAAAAAAAAAAAAAAAAADwLAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAQLQAAEgAAAAAAAAAAAAAAAAAAAAAAAAAsLQAAEgAAAAAAAAAAAAAAAAAAAAAAAABILQAAEgAAAAAAAAAAAAAAAAAAAAAAAABkLQAAEgAAAAAAAAAAAAAAAAAAAAAAAAABLgAAEgAAAAAAAAAAAAAAAAAAAAAAAAAILgAAEgAAAAAAAAAAAAAAAAAAAAAAAABTLgAAEgAAAAAAAAAAAAAAAAAAAAAAAAC4LgAAEgAAAAAAAAAAAAAAAAAAAAAAAADeLgAAEgAAAAAAAAAAAAAAAAAAAAAAAADdLwAAEgAAAAAAAAAAAAAAAAAAAAAAAAAOMAAAEgAAAAAAAAAAAAAAAAAAAAAAAAA2MAAAEgAAAAAAAAAAAAAAAAAAAAAAAABcMAAAEgAAAAAAAAAAAAAAAAAAAAAAAAB3MAAAEgAAAAAAAAAAAAAAAAAAAAAAAACUMAAAEgAAAAAAAAAAAAAAAAAAAAAAAAC4MAAAEgAAAAAAAAAAAAAAAAAAAAAAAAB/MQAAEgAAAAAAAAAAAAAAAAAAAAAAAACzMQAAEgAAAAAAAAAAAAAAAAAAAAAAAADnMQAAEgAAAAAAAAAAAAAAAAAAAAAAAAA5MgAAEgAAAAAAAAAAAAAAAAAAAAAAAACJMgAAEQAAAAAAAAAAAAAAAAAAAAAAAACqMgAAEgAAAAAAAAAAAAAAAAAAAAAAAADZMgAAEgAAAAAAAAAAAAAAAAAAAAAAAAABMwAAEgAAAAAAAAAAAAAAAAAAAAAAAABpMwAAEgAAAAAAAAAAAAAAAAAAAAAAAACaMwAAEgAAAAAAAAAAAAAAAAAAAAAAAAC1MwAAEgAAAAAAAAAAAAAAAAAAAAAAAADiMwAAEgAAAAAAAAAAAAAAAAAAAAAAAAD2MwAAEgAAAAAAAAAAAAAAAAAAAAAAAAAKNAAAEgAAAAAAAAAAAAAAAAAAAAAAAABANAAAEgAAAAAAAAAAAAAAAAAAAAAAAABrNAAAEgAAAAAAAAAAAAAAAAAAAAAAAACzNAAAEgAAAAAAAAAAAAAAAAAAAAAAAADQNAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAINQAAEgAAAAAAAAAAAAAAAAAAAAAAAAA7NQAAEgAAAAAAAAAAAAAAAAAAAAAAAAByNQAAEgAAAAAAAAAAAAAAAAAAAAAAAACrNQAAEgAAAAAAAAAAAAAAAAAAAAAAAADzNQAAEgAAAAAAAAAAAAAAAAAAAAAAAAApNgAAEgAAAAAAAAAAAAAAAAAAAAAAAABVNgAAEgAAAAAAAAAAAAAAAAAAAAAAAACwNgAAEgAAAAAAAAAAAAAAAAAAAAAAAAC2NgAAEgAAAAAAAAAAAAAAAAAAAAAAAADQNgAAEgAAAAAAAAAAAAAAAAAAAAAAAADYNgAAEgAAAAAAAAAAAAAAAAAAAAAAAAADNwAAEgAAAAAAAAAAAAAAAAAAAAAAAAA/NwAAEgAAAAAAAAAAAAAAAAAAAAAAAAB/NwAAEgAAAAAAAAAAAAAAAAAAAAAAAACiNwAAEgAAAAAAAAAAAAAAAAAAAAAAAADDNwAAEgAAAAAAAAAAAAAAAAAAAAAAAAAQOAAAEgAAAAAAAAAAAAAAAAAAAAAAAABAOAAAEgAAAAAAAAAAAAAAAAAAAAAAAACCOAAAEgAAAAAAAAAAAAAAAAAAAAAAAADkOAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAYOQAAEgAAAAAAAAAAAAAAAAAAAAAAAABDOQAAEgAAAAAAAAAAAAAAAAAAAAAAAADOOQAAEgAAAAAAAAAAAAAAAAAAAAAAAAAMOgAAEgAAAAAAAAAAAAAAAAAAAAAAAAA7OgAAEgAAAAAAAAAAAAAAAAAAAAAAAABvOgAAEgAAAAAAAAAAAAAAAAAAAAAAAADAOgAAEgAAAAAAAAAAAAAAAAAAAAAAAAAbOwAAEgAAAAAAAAAAAAAAAAAAAAAAAABNOwAAEgAAAAAAAAAAAAAAAAAAAAAAAAB9OwAAEgAAAAAAAAAAAAAAAAAAAAAAAACzOwAAEgAAAAAAAAAAAAAAAAAAAAAAAADxOwAAEgAAAAAAAAAAAAAAAAAAAAAAAACmPAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAJPQAAEgAAAAAAAAAAAAAAAAAAAAAAAABDPQAAEgAAAAAAAAAAAAAAAAAAAAAAAAB+PQAAEgAAAAAAAAAAAAAAAAAAAAAAAACyPQAAEgAAAAAAAAAAAAAAAAAAAAAAAADiPQAAEgAAAAAAAAAAAAAAAAAAAAAAAAAaPgAAEgAAAAAAAAAAAAAAAAAAAAAAAABFPgAAEgAAAAAAAAAAAAAAAAAAAAAAAABiPgAAEgAAAAAAAAAAAAAAAAAAAAAAAACNPgAAEgAAAAAAAAAAAAAAAAAAAAAAAAC1PgAAEgAAAAAAAAAAAAAAAAAAAAAAAADcPgAAEgAAAAAAAAAAAAAAAAAAAAAAAAD3PgAAEgAAAAAAAAAAAAAAAAAAAAAAAAAaPwAAEgAAAAAAAAAAAAAAAAAAAAAAAABSPwAAEgAAAAAAAAAAAAAAAAAAAAAAAACGPwAAEgAAAAAAAAAAAAAAAAAAAAAAAAC0PwAAEgAAAAAAAAAAAAAAAAAAAAAAAADrPwAAEgAAAAAAAAAAAAAAAAAAAAAAAAAlQAAAEgAAAAAAAAAAAAAAAAAAAAAAAADjQAAAEgAAAAAAAAAAAAAAAAAAAAAAAAD/QAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAoQQAAEgAAAAAAAAAAAAAAAAAAAAAAAABeQQAAEgAAAAAAAAAAAAAAAAAAAAAAAACGQQAAEgAAAAAAAAAAAAAAAAAAAAAAAACsQQAAEgAAAAAAAAAAAAAAAAAAAAAAAADcQQAAEgAAAAAAAAAAAAAAAAAAAAAAAAD2QQAAEgAAAAAAAAAAAAAAAAAAAAAAAAAiQgAAEgAAAAAAAAAAAAAAAAAAAAAAAABJQgAAEgAAAAAAAAAAAAAAAAAAAAAAAABuQgAAEgAAAAAAAAAAAAAAAAAAAAAAAACWQgAAEgAAAAAAAAAAAAAAAAAAAAAAAADSQgAAEgAAAAAAAAAAAAAAAAAAAAAAAAD7QgAAEgAAAAAAAAAAAAAAAAAAAAAAAAAcQwAAEgAAAAAAAAAAAAAAAAAAAAAAAABnQwAAEgAAAAAAAAAAAAAAAAAAAAAAAACSQwAAEgAAAAAAAAAAAAAAAAAAAAAAAAC8QwAAEgAAAAAAAAAAAAAAAAAAAAAAAADtQwAAEgAAAAAAAAAAAAAAAAAAAAAAAAAbRAAAEgAAAAAAAAAAAAAAAAAAAAAAAABSRAAAEgAAAAAAAAAAAAAAAAAAAAAAAACJRAAAEgAAAAAAAAAAAAAAAAAAAAAAAADDRAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAARQAAEgAAAAAAAAAAAAAAAAAAAAAAAAAyRQAAEgAAAAAAAAAAAAAAAAAAAAAAAABgRQAAEgAAAAAAAAAAAAAAAAAAAAAAAACPRQAAEgAAAAAAAAAAAAAAAAAAAAAAAACsRQAAEgAAAAAAAAAAAAAAAAAAAAAAAADkRQAAEgAAAAAAAAAAAAAAAAAAAAAAAAAiRgAAEgAAAAAAAAAAAAAAAAAAAAAAAABLRgAAEgAAAAAAAAAAAAAAAAAAAAAAAAB4RgAAEgAAAAAAAAAAAAAAAAAAAAAAAACbRgAAEgAAAAAAAAAAAAAAAAAAAAAAAADTRgAAEgAAAAAAAAAAAAAAAAAAAAAAAAAGRwAAEgAAAAAAAAAAAAAAAAAAAAAAAABJRwAAEgAAAAAAAAAAAAAAAAAAAAAAAAB1RwAAEgAAAAAAAAAAAAAAAAAAAAAAAACgRwAAEgAAAAAAAAAAAAAAAAAAAAAAAAD0RwAAEgAAAAAAAAAAAAAAAAAAAAAAAAAdSAAAEgAAAAAAAAAAAAAAAAAAAAAAAABoSAAAEgAAAAAAAAAAAAAAAAAAAAAAAACkSAAAEgAAAAAAAAAAAAAAAAAAAAAAAADTSAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAySQAAEgAAAAAAAAAAAAAAAAAAAAAAAAB8SQAAEgAAAAAAAAAAAAAAAAAAAAAAAADZSQAAEgAAAAAAAAAAAAAAAAAAAAAAAADfSQAAEgAAAAAAAAAAAAAAAAAAAAAAAADlSQAAEgAAAAAAAAAAAAAAAAAAAAAAAADrSQAAEgAAAAAAAAAAAAAAAAAAAAAAAAA1SgAAEgAAAAAAAAAAAAAAAAAAAAAAAAA7SgAAEgAAAAAAAAAAAAAAAAAAAAAAAABCSgAAEgAAAAAAAAAAAAAAAAAAAAAAAAB2SgAAEgAAAAAAAAAAAAAAAAAAAAAAAACaSgAAEgAAAAAAAAAAAAAAAAAAAAAAAACiSgAAEgAAAAAAAAAAAAAAAAAAAAAAAABdSwAAEgAAAAAAAAAAAAAAAAAAAAAAAACUSwAAEgAAAAAAAAAAAAAAAAAAAAAAAAA4TAAAEgAAAAAAAAAAAAAAAAAAAAAAAAByTAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAlTQAAEgAAAAAAAAAAAAAAAAAAAAAAAABRTQAAEgAAAAAAAAAAAAAAAAAAAAAAAADGTQAAEgAAAAAAAAAAAAAAAAAAAAAAAAD8TQAAEgAAAAAAAAAAAAAAAAAAAAAAAACRTgAAEgAAAAAAAAAAAAAAAAAAAAAAAAAATwAAEgAAAAAAAAAAAAAAAAAAAAAAAADXTwAAEgAAAAAAAAAAAAAAAAAAAAAAAAAIUAAAEgAAAAAAAAAAAAAAAAAAAAAAAABRUAAAEgAAAAAAAAAAAAAAAAAAAAAAAACoUAAAEgAAAAAAAAAAAAAAAAAAAAAAAADWUAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAaUQAAEgAAAAAAAAAAAAAAAAAAAAAAAABNUQAAEgAAAAAAAAAAAAAAAAAAAAAAAACgUQAAEgAAAAAAAAAAAAAAAAAAAAAAAADNUQAAEgAAAAAAAAAAAAAAAAAAAAAAAAAXUgAAEgAAAAAAAAAAAAAAAAAAAAAAAABvUgAAEgAAAAAAAAAAAAAAAAAAAAAAAACOUgAAEgAAAAAAAAAAAAAAAAAAAAAAAACrUgAAEgAAAAAAAAAAAAAAAAAAAAAAAADMUgAAEgAAAAAAAAAAAAAAAAAAAAAAAADnUgAAEgAAAAAAAAAAAAAAAAAAAAAAAADwUgAAEgAAAAAAAAAAAAAAAAAAAAAAAABTVAAAEgAAAAAAAAAAAAAAAAAAAAAAAABqVAAAEgAAAAAAAAAAAAAAAAAAAAAAAACFVQAAEgAAAAAAAAAAAAAAAAAAAAAAAACOVQAAEgAAAAAAAAAAAAAAAAAAAAAAAABbXQAAEgAAAAAAAAAAAAAAAAAAAAAAAAB2XQAAEgAAAAAAAAAAAAAAAAAAAAAAAACsXQAAEgAAAAAAAAAAAAAAAAAAAAAAAADiXQAAEgAAAAAAAAAAAAAAAAAAAAAAAAAWXgAAEgAAAAAAAAAAAAAAAAAAAAAAAABFXgAAEgAAAAAAAAAAAAAAAAAAAAAAAACUXgAAEgAAAAAAAAAAAAAAAAAAAAAAAADgXgAAEgAAAAAAAAAAAAAAAAAAAAAAAAAqXwAAEgAAAAAAAAAAAAAAAAAAAAAAAAB2XwAAEgAAAAAAAAAAAAAAAAAAAAAAAAB9XwAAEgAAAAAAAAAAAAAAAAAAAAAAAACLXwAAEgAAAAAAAAAAAAAAAAAAAAAAAACTXwAAEgAAAAAAAAAAAAAAAAAAAAAAAACbXwAAEgAAAAAAAAAAAAAAAAAAAAAAAACkXwAAEgAAAAAAAAAAAAAAAAAAAAAAAACrXwAAEgAAAAAAAAAAAAAAAAAAAAAAAACyXwAAEgAAAAAAAAAAAAAAAAAAAAAAAAC5XwAAEQAAAAAAAAAAAAAAAAAAAAAAAADsXwAAEgAAAAAAAAAAAAAAAAAAAAAAAAAgYAAAEgAAAAAAAAAAAAAAAAAAAAAAAABUYAAAEgAAAAAAAAAAAAAAAAAAAAAAAACQYAAAEgAAAAAAAAAAAAAAAAAAAAAAAADMYAAAEQAAAAAAAAAAAAAAAAAAAAAAAAD1YAAAEgAAAAAAAAAAAAAAAAAAAAAAAAA7YQAAEgAAAAAAAAAAAAAAAAAAAAAAAAB4YQAAEgAAAAAAAAAAAAAAAAAAAAAAAACxYQAAEgAAAAAAAAAAAAAAAAAAAAAAAADvYQAAEgAAAAAAAAAAAAAAAAAAAAAAAAAsYgAAEgAAAAAAAAAAAAAAAAAAAAAAAABmYgAAEgAAAAAAAAAAAAAAAAAAAAAAAACkYgAAEQAAAAAAAAAAAAAAAAAAAAAAAADZYgAAEQAAAAAAAAAAAAAAAAAAAAAAAAD/YgAAEgAAAAAAAAAAAAAAAAAAAAAAAAAGYwAAEgAAAAAAAAAAAAAAAAAAAAAAAAAPYwAAEgAAAAAAAAAAAAAAAAAAAAAAAAAfYwAAEgAAAAAAAAAAAAAAAAAAAAAAAAAzYwAAEgAAAAAAAAAAAAAAAAAAAAAAAABKYwAAEgAAAAAAAAAAAAAAAAAAAAAAAAB5YwAAEgAAAAAAAAAAAAAAAAAAAAAAAACPYwAAEgAAAAAAAAAAAAAAAAAAAAAAAAClYwAAEgAAAAAAAAAAAAAAAAAAAAAAAAC7YwAAEgAAAAAAAAAAAAAAAAAAAAAAAADDYwAAEgAAAAAAAAAAAAAAAAAAAAAAAAANZAAAEgAAAAAAAAAAAAAAAAAAAAAAAABBZAAAEgAAAAAAAAAAAAAAAAAAAAAAAAB8ZAAAEgAAAAAAAAAAAAAAAAAAAAAAAADFZAAAEgAAAAAAAAAAAAAAAAAAAAAAAADUZAAAEgAAAAAAAAAAAAAAAAAAAAAAAADgZAAAEgAAAAAAAAAAAAAAAAAAAAAAAADqZAAAEgAAAAAAAAAAAAAAAAAAAAAAAADyZAAAEgAAAAAAAAAAAAAAAAAAAAAAAAD3ZAAAEgAAAAAAAAAAAAAAAAAAAAAAAAADZQAAEgAAAAAAAAAAAAAAAAAAAAAAAAAQZQAAEgAAAAAAAAAAAAAAAAAAAAAAAAAWZQAAEgAAAAAAAAAAAAAAAAAAAAAAAAAdZQAAEgAAAAAAAAAAAAAAAAAAAAAAAAAnZQAAEgAAAAAAAAAAAAAAAAAAAAAAAAAtZQAAEgAAAAAAAAAAAAAAAAAAAAAAAAAyZQAAEgAAAAAAAAAAAAAAAAAAAAAAAAA6ZQAAEgAAAAAAAAAAAAAAAAAAAAAAAABjZQAAEgAAAAAAAAAAAAAAAAAAAAAAAABoZQAAEgAAAAAAAAAAAAAAAAAAAAAAAABtZQAAEgAAAAAAAAAAAAAAAAAAAAAAAABzZQAAEgAAAAAAAAAAAAAAAAAAAAAAAACBZQAAEgAAAAAAAAAAAAAAAAAAAAAAAACIZQAAEgAAAAAAAAAAAAAAAAAAAAAAAACUZQAAEgAAAAAAAAAAAAAAAAAAAAAAAACbZQAAEgAAAAAAAAAAAAAAAAAAAAAAAACgZQAAEgAAAAAAAAAAAAAAAAAAAAAAAACmZQAAEgAAAAAAAAAAAAAAAAAAAAAAAACtZQAAEgAAAAAAAAAAAAAAAAAAAAAAAACzZQAAEgAAAAAAAAAAAAAAAAAAAAAAAAC7ZQAAEgAAAAAAAAAAAAAAAAAAAAAAAADCZQAAEgAAAAAAAAAAAAAAAAAAAAAAAADKZQAAEgAAAAAAAAAAAAAAAAAAAAAAAADUZQAAEgAAAAAAAAAAAAAAAAAAAAAAAADfZQAAEgAAAAAAAAAAAAAAAAAAAAAAAADvZQAAEgAAAAAAAAAAAAAAAAAAAAAAAAD2ZQAAEgAAAAAAAAAAAAAAAAAAAAAAAAA6ZgAAEgAAAAAAAAAAAAAAAAAAAAAAAABOZgAAEQAAAAAAAAAAAAAAAAAAAAAAAABfZgAAEgAAAAAAAAAAAAAAAAAAAAAAAABsZgAAEgAAAAAAAAAAAAAAAAAAAAAAAACgZgAAEgAAAAAAAAAAAAAAAAAAAAAAAAClZgAAEgAAAAAAAAAAAAAAAAAAAAAAAACqZgAAEgAAAAAAAAAAAAAAAAAAAAAAAACwZgAAEgAAAAAAAAAAAAAAAAAAAAAAAAC5ZgAAEgAAAAAAAAAAAAAAAAAAAAAAAADCZgAAEgAAAAAAAAAAAAAAAAAAAAAAAADJZgAAEgAAAAAAAAAAAAAAAAAAAAAAAADQZgAAEgAAAAAAAAAAAAAAAAAAAAAAAADYZgAAEgAAAAAAAAAAAAAAAAAAAAAAAADgZgAAEgAAAAAAAAAAAAAAAAAAAAAAAADmZgAAEgAAAAAAAAAAAAAAAAAAAAAAAADtZgAAEgAAAAAAAAAAAAAAAAAAAAAAAAD0ZgAAEgAAAAAAAAAAAAAAAAAAAAAAAAA/ZwAAEgAAAAAAAAAAAAAAAAAAAAAAAABGZwAAEgAAAAAAAAAAAAAAAAAAAAAAAABKZwAAEgAAAAAAAAAAAAAAAAAAAAAAAABPZwAAEgAAAAAAAAAAAAAAAAAAAAAAAABdZwAAEgAAAAAAAAAAAAAAAAAAAAAAAABpZwAAEgAAAAAAAAAAAAAAAAAAAAAAAABwZwAAEgAAAAAAAAAAAAAAAAAAAAAAAAB9ZwAAEgAAAAAAAAAAAAAAAAAAAAAAAACKZwAAEgAAAAAAAAAAAAAAAAAAAAAAAACgZwAAEgAAAAAAAAAAAAAAAAAAAAAAAAC0ZwAAEgAAAAAAAAAAAAAAAAAAAAAAAADHZwAAEgAAAAAAAAAAAAAAAAAAAAAAAADbZwAAEgAAAAAAAAAAAAAAAAAAAAAAAADgZwAAEgAAAAAAAAAAAAAAAAAAAAAAAADlZwAAEgAAAAAAAAAAAAAAAAAAAAAAAAD2awAAEgAAAAAAAAAAAAAAAAAAAAAAAAAkbAAAEgAAAAAAAAAAAAAAAAAAAAAAAABzbAAAEgAAAAAAAAAAAAAAAAAAAAAAAADCbAAAEgAAAAAAAAAAAAAAAAAAAAAAAAD2bAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAPbQAAEQAAAAAAAAAAAAAAAAAAAAAAAAA2bQAAEgAAAAAAAAAAAAAAAAAAAAAAAABcbQAAEgAAAAAAAAAAAAAAAAAAAAAAAABjbQAAEgAAAAAAAAAAAAAAAAAAAAAAAABqbQAAEgAAAAAAAAAAAAAAAAAAAAAAAABxbQAAEgAAAAAAAAAAAAAAAAAAAAAAAACwbQAAEQAAAAAAAAAAAAAAAAAAAAAAAADjbQAAEgAAAAAAAAAAAAAAAAAAAAAAAAAXbgAAEgAAAAAAAAAAAAAAAAAAAAAAAABLbgAAEgAAAAAAAAAAAAAAAAAAAAAAAACHbgAAEgAAAAAAAAAAAAAAAAAAAAAAAADDbgAAEgAAAAAAAAAAAAAAAAAAAAAAAADPbgAAEgAAAAAAAAAAAAAAAAAAAAAAAADYbgAAEgAAAAAAAAAAAAAAAAAAAAAAAADfbgAAEgAAAAAAAAAAAAAAAAAAAAAAAADsbgAAEgAAAAAAAAAAAAAAAAAAAAAAAAD0bgAAEgAAAAAAAAAAAAAAAAAAAAAAAAACbwAAEgAAAAAAAAAAAAAAAAAAAAAAAAASbwAAIAAAAAAAAAAAAAAAAAAAAAAAAAAnbwAA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IQAXAChL3wAAAAAAgAAAAAAAAACiaAAAIgANALC91gAAAAAAAAEAAAAAAAA9GAAAIgANAHCfyAAAAAAAKQAAAAAAAACpSgAAIgANAICpzgAAAAAAlQAAAAAAAADzSgAAIgANACCqzgAAAAAAVwAAAAAAAABXWwAAIgANAGCn0AAAAAAA9AAAAAAAAAAoAAAAEgAPALjO3gAAAAAAAAAAAAAAAAC9VwAAIgANADCZzwAAAAAAiAAAAAAAAAAQWAAAIgANAMCZzwAAAAAAKgAAAAAAAACeWAAAIgANADCazwAAAAAA5gAAAAAAAADZDQAAIgANABBDyAAAAAAADwAAAAAAAAA0JgAAIgANANBizAAAAAAAHwEAAAAAAAD+MAAAIgANAEB2zAAAAAAA3gAAAAAAAADUVgAAIgANAMCXzwAAAAAAbQAAAAAAAACEaQAAIQAXAAiH3wAAAAAAgAAAAAAAAAAAAAIAAQABAAEAAgABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAMAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAIAAgABAAIAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQACAAEABAABAAEAAQABAAIAAQACAAEAAgABAAEAAQABAAUAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAIAAQABAAEAAQABAAEAAQACAAEAAQABAAEAAQACAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAYAAQACAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQACAAIAAgABAAIAAgABAAEAAgACAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAIAAQABAAIABwACAAEAAQABAAEAAQABAAEAAQABAAIABwACAAIAAgACAAIAAgABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQACAAIACAAFAAUAAQAFAAUABQACAAEAAQABAAEACQACAAUAAgACAAIACgACAAIABQAFAAIAAgABAAUABQAFAAsAAgACAAIAAgAFAAIABQACAAIAAgAMAAIABQACAAEAAQABAAgAAQAGAAYABgACAAIABgAGAAIAAgAGAAYABgABAAIABgAGAAgAAgACAAIABQAFAAUABQAFAAYABgAGAAEAAQABAAEAAQABAAEAAgACAAIAAQABAAEAAQABAAEAAgACAAIACAACAAgADQABAAEAAQABAAIAAgAFAAUABQACAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQClbwAAUAAAABAAAAABAAEAwW8AAFAAAAAQAAAAAQABAMtvAABQAAAAEAAAAAEACADWbwAAUAAAABAAAAABAAEAKnAAAMAAAAAAAAAAdRppCQAABQC1bwAAAAAAAHUaaQkAAAYAtW8AAAAAAAB1GmkJAAALALVvAAAAAAAAdRppCQAAAgC1bwAAEAAAABNpaQ0AAAcA4G8AABAAAAB0GWkJAAAIAOpvAAAQAAAAFGlpDQAAAwD2bwAAEAAAABZpaQ0AAAoAAHAAABAAAAAXaWkNAAANAApwAAAQAAAAlJGWBgAABAAUcAAAEAAAAJaRlgYAAAwAH3AAAAAAAAATaWkNAAAJAOBvAAAAAAAAFAAAAM8BAAAQAAAAGgAAAANIAKAQQBAAAgQguACwAAACCAQAQAAAAALCsBMAAAAAAAABAAwCAJARRDBADcLBEBoUQQBgAAARAFBAAAAAAAGBwSQFBQgCwAAIAAgAAIBAAAAgQSBCgBAIFTAIUQAAAAADGIEAkABCOCoAAEAEAEAAGAAABAogAF2ACpKKBQAgzwEAANYBAADYAQAA3wEAAOMBAADlAQAA5wEAAOkBAADtAQAA7wEAAPEBAAD3AQAA+gEAAAECAAAHAgAACgIAAA4CAAATAgAAFwIAABsCAAC4jfEO2LB5UuRiYFOM85ks6JsvRwBUJ3UJdoXEgLGrE+FnFI+WOSSaIlo3gEoxVyrOYDQmfpeWFE6l4YuTGMQu0jdqnOYDJXAqTvX83+scPvi55zIBFiRWgEygm1U5uKQOYFIEwydAGNq2fiNabl/7dip9LndtjrvEu6r13VgnVthIrF1B3Ge1Io2w/mq/Li92kZ0AzsF3OdZR9zAvkO9+bgh3cSriy8e3us3yCFv0s1RxM4FwTUm+bIDcb8z+vlTgrhwpGe5wipTiL5dM4wYSqEuQr4DRsSsoPYJCpXFN80rc1n6uNlNin3Jap85YSQcGVptIQu8FmiNpTfMYL9O9wId6ZiTYU9OM1dNDReVM8zgXxFG0j5aKSD9bLV34oVXq0+8OGmpf+w78mSw/W2smYiGfexL/BmMeu6hODsZ3OcM+z5sAX19saWJjX3N0YXJ0X21haW4AX19nbW9uX3N0YXJ0X18AX2luaXQAX2ZpbmkAX0lUTV9kZXJlZ2lzdGVyVE1DbG9uZVRhYmxlAF9JVE1fcmVnaXN0ZXJUTUNsb25lVGFibGUAX19jeGFfZmluYWxpemUAX0p2X1JlZ2lzdGVyQ2xhc3NlcwBfWk42Z29vZ2xlOHByb3RvYnVmOGludGVybmFsMTNWZXJpZnlWZXJzaW9uRWlpUEtjAF9aTjZnb29nbGU4cHJvdG9idWY4aW50ZXJuYWwyNmZpeGVkX2FkZHJlc3NfZW1wdHlfc3RyaW5nRQBfWk42Z29vZ2xlOHByb3RvYnVmOGludGVybmFsMTREZXN0cm95TWVzc2FnZUVQS3YAX1pONmdvb2dsZThwcm90b2J1ZjhpbnRlcm5hbDEzT25TaHV0ZG93blJ1bkVQRnZQS3ZFUzNfAF9aTjZnb29nbGU4cHJvdG9idWY4aW50ZXJuYWwxMUluaXRTQ0NJbXBsRVBOUzFfMTFTQ0NJbmZvQmFzZUUAX1pONmdvb2dsZThwcm90b2J1ZjI4X1RpbWVzdGFtcF9kZWZhdWx0X2luc3RhbmNlX0UAX1pONmdvb2dsZThwcm90b2J1ZjhpbnRlcm5hbDE3QXNzaWduRGVzY3JpcHRvcnNFUEtOUzFfMTVEZXNjcmlwdG9yVGFibGVFAF9aTjZnb29nbGU4cHJvdG9idWY4aW50ZXJuYWwyOUludGVybmFsTWV0YWRhdGFXaXRoQXJlbmFCYXNlSU5TMF8xNVVua25vd25GaWVsZFNldEVOUzFfMjVJbnRlcm5hbE1ldGFkYXRhV2l0aEFyZW5hRUUyN211dGFibGVfdW5rbm93bl9maWVsZHNfc2xvd0V2AF9aTjZnb29nbGU4cHJvdG9idWYxNVVua25vd25GaWVsZFNldDlNZXJnZUZyb21FUktTMV8AX1pONmdvb2dsZThwcm90b2J1ZjhpbnRlcm5hbDE0QXJlbmFTdHJpbmdQdHIxNENyZWF0ZUluc3RhbmNlRVBOUzBfNUFyZW5hRVBLTlN0M19fMTEyYmFzaWNfc3RyaW5nSWNOUzVfMTFjaGFyX3RyYWl0c0ljRUVOUzVfOWFsbG9jYXRvckljRUVFRQBfWm53bQBfWk42Z29vZ2xlOHByb3RvYnVmMTVVbmtub3duRmllbGRTZXQxM0NsZWFyRmFsbGJhY2tFdgBfWmRsUHYAX1pONmdvb2dsZThwcm90b2J1ZjhpbnRlcm5hbDE0V2lyZUZvcm1hdExpdGUxNlZlcmlmeVV0ZjhTdHJpbmdFUEtjaU5TMl85T3BlcmF0aW9uRVM0XwBfWk42Z29vZ2xlOHByb3RvYnVmMmlvMTZDb2RlZElucHV0U3RyZWFtMTVSZWFkVGFnRmFsbGJhY2tFagBfWk42Z29vZ2xlOHByb3RvYnVmOGludGVybmFsMTRXaXJlRm9ybWF0TGl0ZTlSZWFkQnl0ZXNFUE5TMF8yaW8xNkNvZGVkSW5wdXRTdHJlYW1FUE5TdDNfXzExMmJhc2ljX3N0cmluZ0ljTlM2XzExY2hhcl90cmFpdHNJY0VFTlM2XzlhbGxvY2F0b3JJY0VFRUUAX1pONmdvb2dsZThwcm90b2J1ZjhpbnRlcm5hbDEwV2lyZUZvcm1hdDlTa2lwRmllbGRFUE5TMF8yaW8xNkNvZGVkSW5wdXRTdHJlYW1FalBOUzBfMTVVbmtub3duRmllbGRTZXRFAF9aTjZnb29nbGU4cHJvdG9idWYyaW8xNkNvZGVkSW5wdXRTdHJlYW0yN1JlYWRWYXJpbnRTaXplQXNJbnRGYWxsYmFja0V2AF9aTjZnb29nbGU4cHJvdG9idWYyaW8xNkNvZGVkSW5wdXRTdHJlYW0zNUluY3JlbWVudFJlY3Vyc2lvbkRlcHRoQW5kUHVzaExpbWl0RWkAX1pONmdvb2dsZThwcm90b2J1ZjJpbzE2Q29kZWRJbnB1dFN0cmVhbTM0RGVjcmVtZW50UmVjdXJzaW9uRGVwdGhBbmRQb3BMaW1pdEVpAF9aTjZnb29nbGU4cHJvdG9idWY4aW50ZXJuYWwxNFdpcmVGb3JtYXRMaXRlMjRXcml0ZU1lc3NhZ2VNYXliZVRvQXJyYXlFaVJLTlMwXzExTWVzc2FnZUxpdGVFUE5TMF8yaW8xN0NvZGVkT3V0cHV0U3RyZWFtRQBfWk42Z29vZ2xlOHByb3RvYnVmOGludGVybmFsMTRXaXJlRm9ybWF0TGl0ZTIzV3JpdGVTdHJpbmdNYXliZUFsaWFzZWRFaVJLTlN0M19fMTEyYmFzaWNfc3RyaW5nSWNOUzNfMTFjaGFyX3RyYWl0c0ljRUVOUzNfOWFsbG9jYXRvckljRUVFRVBOUzBfMmlvMTdDb2RlZE91dHB1dFN0cmVhbUUAX1pONmdvb2dsZThwcm90b2J1ZjhpbnRlcm5hbDEwV2lyZUZvcm1hdDIyU2VyaWFsaXplVW5rbm93bkZpZWxkc0VSS05TMF8xNVVua25vd25GaWVsZFNldEVQTlMwXzJpbzE3Q29kZWRPdXRwdXRTdHJlYW1FAF9aTjZnb29nbGU4cHJvdG9idWYyaW8xN0NvZGVkT3V0cHV0U3RyZWFtMjZXcml0ZVN0cmluZ1dpdGhTaXplVG9BcnJheUVSS05TdDNfXzExMmJhc2ljX3N0cmluZ0ljTlMzXzExY2hhcl90cmFpdHNJY0VFTlMzXzlhbGxvY2F0b3JJY0VFRUVQaABfWk42Z29vZ2xlOHByb3RvYnVmOGludGVybmFsMTBXaXJlRm9ybWF0MjlTZXJpYWxpemVVbmtub3duRmllbGRzVG9BcnJheUVSS05TMF8xNVVua25vd25GaWVsZFNldEVQaABfWk42Z29vZ2xlOHByb3RvYnVmOGludGVybmFsMTBXaXJlRm9ybWF0MjRDb21wdXRlVW5rbm93bkZpZWxkc1NpemVFUktOUzBfMTVVbmtub3duRmllbGRTZXRFAF9aTjZnb29nbGU4cHJvdG9idWY4aW50ZXJuYWwxM1JlZmxlY3Rpb25PcHM1TWVyZ2VFUktOUzBfN01lc3NhZ2VFUFMzXwBfWk5TdDNfXzExMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVhU0VSS1M1XwBfWk42Z29vZ2xlOHByb3RvYnVmOGludGVybmFsMjBSZXBlYXRlZFB0ckZpZWxkQmFzZTE0SW50ZXJuYWxFeHRlbmRFaQBfWk42Z29vZ2xlOHByb3RvYnVmOGludGVybmFsMjBSZXBlYXRlZFB0ckZpZWxkQmFzZTE4TWVyZ2VGcm9tSW5uZXJMb29wSU5TMF8xNlJlcGVhdGVkUHRyRmllbGRJTlN0M19fMTEyYmFzaWNfc3RyaW5nSWNOUzVfMTFjaGFyX3RyYWl0c0ljRUVOUzVfOWFsbG9jYXRvckljRUVFRUUxMVR5cGVIYW5kbGVyRUVFdlBQdlNGX2lpAF9aTjZnb29nbGU4cHJvdG9idWY1QXJlbmExOENyZWF0ZU1heWJlTWVzc2FnZUlOUzBfM0FueUVKRUVFUFRfUFMxX0RwT1QwXwBfWk42Z29vZ2xlOHByb3RvYnVmOGludGVybmFsMTRXaXJlRm9ybWF0TGl0ZTIyV3JpdGVCeXRlc01heWJlQWxpYXNlZEVpUktOU3QzX18xMTJiYXNpY19zdHJpbmdJY05TM18xMWNoYXJfdHJhaXRzSWNFRU5TM185YWxsb2NhdG9ySWNFRUVFUE5TMF8yaW8xN0NvZGVkT3V0cHV0U3RyZWFtRQBfWk42Z29vZ2xlOHByb3RvYnVmMmlvMTZDb2RlZElucHV0U3RyZWFtMjBSZWFkVmFyaW50MzJGYWxsYmFja0VqAF9aTjZnb29nbGU4cHJvdG9idWY4aW50ZXJuYWwxNFdpcmVGb3JtYXRMaXRlOVdyaXRlRW51bUVpaVBOUzBfMmlvMTdDb2RlZE91dHB1dFN0cmVhbUUAX1pONmdvb2dsZThwcm90b2J1ZjNBbnk1Q2xlYXJFdgBfWk42Z29vZ2xlOHByb3RvYnVmOGludGVybmFsMjBSZXBlYXRlZFB0ckZpZWxkQmFzZTdSZXNlcnZlRWkAX1pONmdvb2dsZThwcm90b2J1ZjNBbnkyN01lcmdlUGFydGlhbEZyb21Db2RlZFN0cmVhbUVQTlMwXzJpbzE2Q29kZWRJbnB1dFN0cmVhbUUAX1pOSzZnb29nbGU4cHJvdG9idWYzQW55MzlJbnRlcm5hbFNlcmlhbGl6ZVdpdGhDYWNoZWRTaXplc1RvQXJyYXlFUGgAX1pOSzZnb29nbGU4cHJvdG9idWYzQW55MTJCeXRlU2l6ZUxvbmdFdgBfWk42Z29vZ2xlOHByb3RvYnVmMTZSZXBlYXRlZFB0ckZpZWxkSU5TdDNfXzExMmJhc2ljX3N0cmluZ0ljTlMyXzExY2hhcl90cmFpdHNJY0VFTlMyXzlhbGxvY2F0b3JJY0VFRUVFRDFFdgBfWk42Z29vZ2xlOHByb3RvYnVmMmlvMTZDb2RlZElucHV0U3RyZWFtMjBSZWFkVmFyaW50NjRGYWxsYmFja0V2AF9aTjZnb29nbGU4cHJvdG9idWY4aW50ZXJuYWwyMWFyZW5hX2Rlc3RydWN0X29iamVjdElOU3QzX18xMTJiYXNpY19zdHJpbmdJY05TM18xMWNoYXJfdHJhaXRzSWNFRU5TM185YWxsb2NhdG9ySWNFRUVFRUV2UHYAX1pONmdvb2dsZThwcm90b2J1ZjhpbnRlcm5hbDlBcmVuYUltcGwyOEFsbG9jYXRlQWxpZ25lZEFuZEFkZENsZWFudXBFbVBGdlB2RQBfWk5LNmdvb2dsZThwcm90b2J1ZjVBcmVuYTE3T25BcmVuYUFsbG9jYXRpb25FUEtTdDl0eXBlX2luZm9tAF9aTjZnb29nbGU4cHJvdG9idWY4aW50ZXJuYWwxNFdpcmVGb3JtYXRMaXRlOVdyaXRlQm9vbEVpYlBOUzBfMmlvMTdDb2RlZE91dHB1dFN0cmVhbUUAX1pONmdvb2dsZThwcm90b2J1ZjhpbnRlcm5hbDE0V2lyZUZvcm1hdExpdGUxMVdyaXRlU3RyaW5nRWlSS05TdDNfXzExMmJhc2ljX3N0cmluZ0ljTlMzXzExY2hhcl90cmFpdHNJY0VFTlMzXzlhbGxvY2F0b3JJY0VFRUVQTlMwXzJpbzE3Q29kZWRPdXRwdXRTdHJlYW1FAF9aTjZnb29nbGU4cHJvdG9idWY4aW50ZXJuYWwxNFdpcmVGb3JtYXRMaXRlMTBXcml0ZUludDMyRWlpUE5TMF8yaW8xN0NvZGVkT3V0cHV0U3RyZWFtRQBfWk42Z29vZ2xlOHByb3RvYnVmN01lc3NhZ2U5TWVyZ2VGcm9tRVJLUzFfAF9aVFZONmdvb2dsZThwcm90b2J1ZjhpbnRlcm5hbDEyTWFwRmllbGRCYXNlRQBfWk42Z29vZ2xlOHByb3RvYnVmNUFyZW5hMTNPd25EZXN0cnVjdG9ySU5TMF84aW50ZXJuYWwxMldyYXBwZWRNdXRleEVFRXZQVF8AX1pOSzZnb29nbGU4cHJvdG9idWY4aW50ZXJuYWwxMk1hcEZpZWxkQmFzZTI0U3luY01hcFdpdGhSZXBlYXRlZEZpZWxkRXYAX1pONmdvb2dsZThwcm90b2J1ZjhpbnRlcm5hbDEyTWFwRmllbGRCYXNlMTFTZXRNYXBEaXJ0eUV2AF9aTjZnb29nbGU4cHJvdG9idWY4aW50ZXJuYWwxMk1hcEZpZWxkQmFzZUQyRXYAX19zdGFja19jaGtfZmFpbABfWm5hbQBfWmRhUHYAX1pONmdvb2dsZThwcm90b2J1ZjJpbzE3Q29kZWRPdXRwdXRTdHJlYW0yMVdyaXRlVmFyaW50MzJTbG93UGF0aEVqAF9aTjZnb29nbGU4cHJvdG9idWY4aW50ZXJuYWwxNFdpcmVGb3JtYXRMaXRlMTBXcml0ZUludDY0RWlsUE5TMF8yaW8xN0NvZGVkT3V0cHV0U3RyZWFtRQBfWk42Z29vZ2xlOHByb3RvYnVmOVRpbWVzdGFtcEMxRVJLUzFfAF9aTjZnb29nbGU4cHJvdG9idWY1QXJlbmExOENyZWF0ZU1heWJlTWVzc2FnZUlOUzBfOVRpbWVzdGFtcEVKRUVFUFRfUFMxX0RwT1QwXwBfWk42Z29vZ2xlOHByb3RvYnVmOVRpbWVzdGFtcDI3TWVyZ2VQYXJ0aWFsRnJvbUNvZGVkU3RyZWFtRVBOUzBfMmlvMTZDb2RlZElucHV0U3RyZWFtRQBfWk5LNmdvb2dsZThwcm90b2J1ZjlUaW1lc3RhbXAzOUludGVybmFsU2VyaWFsaXplV2l0aENhY2hlZFNpemVzVG9BcnJheUVQaABfWk5LNmdvb2dsZThwcm90b2J1ZjlUaW1lc3RhbXAxMkJ5dGVTaXplTG9uZ0V2AF9aTjZnb29nbGU4cHJvdG9idWY5VGltZXN0YW1wOU1lcmdlRnJvbUVSS1MxXwBfWk42Z29vZ2xlOHByb3RvYnVmOGludGVybmFsOUFyZW5hSW1wbDE1QWxsb2NhdGVBbGlnbmVkRW0AX1pOSzZnb29nbGU4cHJvdG9idWYxMU1lc3NhZ2VMaXRlMTZJbnRlcm5hbEdldFRhYmxlRXYAX1pOSzZnb29nbGU4cHJvdG9idWYxMU1lc3NhZ2VMaXRlMjBHZXRNYXliZUFyZW5hUG9pbnRlckV2AF9aTjZnb29nbGU4cHJvdG9idWY4aW50ZXJuYWwxNFdpcmVGb3JtYXRMaXRlOVNraXBGaWVsZEVQTlMwXzJpbzE2Q29kZWRJbnB1dFN0cmVhbUVqAF9aTlN0M19fMTEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUMxRVJLUzVfAF9aTks2Z29vZ2xlOHByb3RvYnVmNk1hcEtleTE0R2V0U3RyaW5nVmFsdWVFdgBfWk42Z29vZ2xlOHByb3RvYnVmOGludGVybmFsMjFhcmVuYV9kZXN0cnVjdF9vYmplY3RJTlMwXzE2UmVwZWF0ZWRQdHJGaWVsZElOUzBfN01lc3NhZ2VFRUVFRXZQdgBfWk42Z29vZ2xlOHByb3RvYnVmOGludGVybmFsMTBMb2dNZXNzYWdlQzFFTlMwXzhMb2dMZXZlbEVQS2NpAF9aTjZnb29nbGU4cHJvdG9idWY4aW50ZXJuYWwxMExvZ01lc3NhZ2Vsc0VQS2MAX1pONmdvb2dsZThwcm90b2J1ZjhpbnRlcm5hbDExTG9nRmluaXNoZXJhU0VSTlMxXzEwTG9nTWVzc2FnZUUAX1pONmdvb2dsZThwcm90b2J1ZjhpbnRlcm5hbDEwTG9nTWVzc2FnZUQxRXYAX1pOSzZnb29nbGU4cHJvdG9idWY2TWFwS2V5NHR5cGVFdgBfWk5TdDNfXzExM19fdHJlZV9yZW1vdmVJUE5TXzE2X190cmVlX25vZGVfYmFzZUlQdkVFRUV2VF9TNV8AYmNtcABtZW1jbXAAX1pONmdvb2dsZThwcm90b2J1ZjE1RmllbGREZXNjcmlwdG9yMTRrQ3BwVHlwZVRvTmFtZUUAX1pONmdvb2dsZThwcm90b2J1ZjVBcmVuYTEzT3duRGVzdHJ1Y3RvcklOU3QzX18xMTJiYXNpY19zdHJpbmdJY05TM18xMWNoYXJfdHJhaXRzSWNFRU5TM185YWxsb2NhdG9ySWNFRUVFRUV2UFRfAG1lbXNldABfWk5TdDNfXzEyN19fdHJlZV9iYWxhbmNlX2FmdGVyX2luc2VydElQTlNfMTZfX3RyZWVfbm9kZV9iYXNlSVB2RUVFRXZUX1M1XwBfWk42Z29vZ2xlOHByb3RvYnVmOGludGVybmFsOUFyZW5hSW1wbDEwQWRkQ2xlYW51cEVQdlBGdlMzX0UAX1pONmdvb2dsZThwcm90b2J1ZjhpbnRlcm5hbDE5YXJlbmFfZGVsZXRlX29iamVjdElOUzBfN01lc3NhZ2VFRUV2UHYAX1pONmdvb2dsZThwcm90b2J1ZjhpbnRlcm5hbDIxYXJlbmFfZGVzdHJ1Y3Rfb2JqZWN0SU5TMV8yOUludGVybmFsTWV0YWRhdGFXaXRoQXJlbmFCYXNlSU5TMF8xNVVua25vd25GaWVsZFNldEVOUzFfMjVJbnRlcm5hbE1ldGFkYXRhV2l0aEFyZW5hRUU5Q29udGFpbmVyRUVFdlB2AF9aTjZnb29nbGU4cHJvdG9idWYzQW55OU1lcmdlRnJvbUVSS1MxXwBfWk42Z29vZ2xlOHByb3RvYnVmOGludGVybmFsMjFhcmVuYV9kZXN0cnVjdF9vYmplY3RJTlMxXzEyV3JhcHBlZE11dGV4RUVFdlB2AF9aTlN0M19fMTVtdXRleEQxRXYAX1pONmdvb2dsZThwcm90b2J1ZjJpbzE2Q29kZWRJbnB1dFN0cmVhbTEyU2tpcEZhbGxiYWNrRWlpAF9aTjZnb29nbGU4cHJvdG9idWY4aW50ZXJuYWwxMUdlbmVyaWNTd2FwRVBOUzBfMTFNZXNzYWdlTGl0ZUVTM18AX1pONmdvb2dsZThwcm90b2J1ZjhpbnRlcm5hbDE0QWRkRGVzY3JpcHRvcnNFUEtOUzFfMTVEZXNjcmlwdG9yVGFibGVFAHNjY19pbmZvX1RpbWVzdGFtcF9nb29nbGVfMmZwcm90b2J1Zl8yZnRpbWVzdGFtcF8yZXByb3RvAHNjY19pbmZvX0FueV9nb29nbGVfMmZwcm90b2J1Zl8yZmFueV8yZXByb3RvAGRlc2NyaXB0b3JfdGFibGVfZ29vZ2xlXzJmcHJvdG9idWZfMmZhbnlfMmVwcm90bwBkZXNjcmlwdG9yX3RhYmxlX2dvb2dsZV8yZnByb3RvYnVmXzJmdGltZXN0YW1wXzJlcHJvdG8AX1pOSzZnb29nbGU4cHJvdG9idWY3TWVzc2FnZTExR2V0VHlwZU5hbWVFdgBfWk5LNmdvb2dsZThwcm90b2J1ZjdNZXNzYWdlMjVJbml0aWFsaXphdGlvbkVycm9yU3RyaW5nRXYAX1pONmdvb2dsZThwcm90b2J1ZjdNZXNzYWdlMjFDaGVja1R5cGVBbmRNZXJnZUZyb21FUktOUzBfMTFNZXNzYWdlTGl0ZUUAX1pOSzZnb29nbGU4cHJvdG9idWYxMU1lc3NhZ2VMaXRlMzFTZXJpYWxpemVXaXRoQ2FjaGVkU2l6ZXNUb0FycmF5RVBoAF9aTjZnb29nbGU4cHJvdG9idWY3TWVzc2FnZTIwRGlzY2FyZFVua25vd25GaWVsZHNFdgBfWk5LNmdvb2dsZThwcm90b2J1ZjdNZXNzYWdlMTNTcGFjZVVzZWRMb25nRXYAX1pONmdvb2dsZThwcm90b2J1ZjdNZXNzYWdlOENvcHlGcm9tRVJLUzFfAF9aTks2Z29vZ2xlOHByb3RvYnVmN01lc3NhZ2UxM1NldENhY2hlZFNpemVFaQBfX2N4YV9wdXJlX3ZpcnR1YWwAX1pONmdvb2dsZThwcm90b2J1ZjhpbnRlcm5hbDE0QXJlbmFTdHJpbmdQdHIyMUNyZWF0ZUluc3RhbmNlTm9BcmVuYUVQS05TdDNfXzExMmJhc2ljX3N0cmluZ0ljTlMzXzExY2hhcl90cmFpdHNJY0VFTlMzXzlhbGxvY2F0b3JJY0VFRUUAX1pOSzZnb29nbGU4cHJvdG9idWYxMU1lc3NhZ2VMaXRlOEdldEFyZW5hRXYAX1pONmdvb2dsZThwcm90b2J1ZjhpbnRlcm5hbDE0V2lyZUZvcm1hdExpdGUxMFdyaXRlQnl0ZXNFaVJLTlN0M19fMTEyYmFzaWNfc3RyaW5nSWNOUzNfMTFjaGFyX3RyYWl0c0ljRUVOUzNfOWFsbG9jYXRvckljRUVFRVBOUzBfMmlvMTdDb2RlZE91dHB1dFN0cmVhbUUAX1pONmdvb2dsZThwcm90b2J1ZjhpbnRlcm5hbDE0V2lyZUZvcm1hdExpdGUxMVdyaXRlVUludDMyRWlqUE5TMF8yaW8xN0NvZGVkT3V0cHV0U3RyZWFtRQBfWk5TdDNfXzE1bXV0ZXg2dW5sb2NrRXYAX1pOS1N0M19fMTEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTdjb21wYXJlRW1tUEtjbQBfWk5TdDNfXzE1bXV0ZXg0bG9ja0V2AF9aTks0bGx2bTVSZWdleDVtYXRjaEVOU185U3RyaW5nUmVmRVBOU18xNVNtYWxsVmVjdG9ySW1wbElTMV9FRVBOU3QzX18xMTJiYXNpY19zdHJpbmdJY05TNV8xMWNoYXJfdHJhaXRzSWNFRU5TNV85YWxsb2NhdG9ySWNFRUVFAGZyZWUAX1pONGxsdm01UmVnZXhEMUV2AG1lbWNweQBfWk5TdDNfXzExMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUU2aW5zZXJ0RW1QS2MAX1pOU3QzX18xMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFNmFwcGVuZEVQS2MAX1pONGxsdm01UmVnZXhDMUVOU185U3RyaW5nUmVmRU5TMF8xMFJlZ2V4RmxhZ3NFAF9aTks0bGx2bTVSZWdleDdpc1ZhbGlkRVJOU3QzX18xMTJiYXNpY19zdHJpbmdJY05TMV8xMWNoYXJfdHJhaXRzSWNFRU5TMV85YWxsb2NhdG9ySWNFRUVFAHN0ZGVycgBfWk5LU3QzX18xMjFfX2Jhc2ljX3N0cmluZ19jb21tb25JTGIxRUUyMF9fdGhyb3dfbGVuZ3RoX2Vycm9yRXYAc3RybGVuAF9aTlN0M19fMTEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUMxRVJLUzVfbW1SS1M0XwBfWk5TdDNfXzE2dmVjdG9ySU5TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVOUzRfSVM2X0VFRTIxX19wdXNoX2JhY2tfc2xvd19wYXRoSVJLUzZfRUV2T1RfAF9aTlN0M19fMTZ2ZWN0b3JJTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRU5TNF9JUzZfRUVFMjFfX3B1c2hfYmFja19zbG93X3BhdGhJUzZfRUV2T1RfAGFib3J0AF9aTktTdDNfXzEyMF9fdmVjdG9yX2Jhc2VfY29tbW9uSUxiMUVFMjBfX3Rocm93X2xlbmd0aF9lcnJvckV2AF9aTjRsbHZtMjREaXNhYmxlQUJJQnJlYWtpbmdDaGVja3NFAF9aTks1Y2xhbmcxNURpcmVjdG9yeUxvb2t1cDdnZXROYW1lRXYAX1pON2FuZHJvaWQ0YmFzZTlTaG91bGRMb2dFTlMwXzExTG9nU2V2ZXJpdHlFUEtjAF9fZXJybm9fbG9jYXRpb24AX1pON2FuZHJvaWQ0YmFzZTEwTG9nTWVzc2FnZUMxRVBLY2pOUzBfMTFMb2dTZXZlcml0eUVTM19pAF9aTjdhbmRyb2lkNGJhc2UxMExvZ01lc3NhZ2U2c3RyZWFtRXYAX1pOU3QzX18xMjRfX3B1dF9jaGFyYWN0ZXJfc2VxdWVuY2VJY05TXzExY2hhcl90cmFpdHNJY0VFRUVSTlNfMTNiYXNpY19vc3RyZWFtSVRfVDBfRUVTN19QS1M0X20AX1pOU3QzX18xbHNJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRVJOU18xM2Jhc2ljX29zdHJlYW1JVF9UMF9FRVM5X1JLTlNfMTJiYXNpY19zdHJpbmdJUzZfUzdfVDFfRUUAX1pON2FuZHJvaWQ0YmFzZTEwTG9nTWVzc2FnZUQxRXYAX1pOU3QzX18xMTNiYXNpY19vc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUU2c2VudHJ5QzFFUlMzXwBfWk5LU3QzX18xOGlvc19iYXNlNmdldGxvY0V2AF9aTlN0M19fMTVjdHlwZUljRTJpZEUAX1pOS1N0M19fMTZsb2NhbGU5dXNlX2ZhY2V0RVJOUzBfMmlkRQBfWk5TdDNfXzE2bG9jYWxlRDFFdgBfWk5TdDNfXzE4aW9zX2Jhc2U1Y2xlYXJFagBfWk5TdDNfXzExM2Jhc2ljX29zdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRTZzZW50cnlEMUV2AF9aTlN0M19fMTEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTZhcHBlbmRFUEtjbQBfWk5LNmdvb2dsZThwcm90b2J1ZjdNZXNzYWdlMTZTaG9ydERlYnVnU3RyaW5nRXYAX1pOSzZnb29nbGU4cHJvdG9idWYzQW55OFVucGFja1RvRVBOUzBfN01lc3NhZ2VFAF9aTjZnb29nbGU4cHJvdG9idWYzQW55OFBhY2tGcm9tRVJLTlMwXzdNZXNzYWdlRQBfWk5TdDNfXzE2X190cmVlSU5TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVOU180bGVzc0lTNl9FRU5TNF9JUzZfRUVFNGZpbmRJUzZfRUVOU18xNV9fdHJlZV9pdGVyYXRvcklTNl9QTlNfMTFfX3RyZWVfbm9kZUlTNl9QdkVFbEVFUktUXwBfWk40bGx2bTN2ZnMxN2dldFJlYWxGaWxlU3lzdGVtRXYAX1pOU3QzX18xNl9fdHJlZUlOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFTlNfNGxlc3NJUzZfRUVOUzRfSVM2X0VFRTEyX19maW5kX2VxdWFsSVM2X0VFUlBOU18xNl9fdHJlZV9ub2RlX2Jhc2VJUHZFRVJQTlNfMTVfX3RyZWVfZW5kX25vZGVJU0ZfRUVSS1RfAF9aTktTdDNfXzE2X190cmVlSU5TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVOU180bGVzc0lTNl9FRU5TNF9JUzZfRUVFMTRfX2NvdW50X3VuaXF1ZUlTNl9FRW1SS1RfAF9aTjRsbHZtM3ZmczEwRmlsZVN5c3RlbTE2Z2V0QnVmZmVyRm9yRmlsZUVSS05TXzVUd2luZUVsYmIAX1pOU3QzX18xMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFOV9fZ3Jvd19ieUVtbW1tbW0AX1pOU3QzX18xNl9fdHJlZUlOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFTlNfNGxlc3NJUzZfRUVOUzRfSVM2X0VFRTdkZXN0cm95RVBOU18xMV9fdHJlZV9ub2RlSVM2X1B2RUUAX1pOU3QzX18xNnZlY3RvcklOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFTlM0X0lTNl9FRUU2aW5zZXJ0RU5TXzExX193cmFwX2l0ZXJJUEtTNl9FRVJTQV8AX1pONGxsdm0xNVNtYWxsVmVjdG9yQmFzZUltRThncm93X3BvZEVQdm1tAF9aTjRsbHZtM3N5czJmczEzbWFrZV9hYnNvbHV0ZUVSTlNfMTVTbWFsbFZlY3RvckltcGxJY0VFAF9aTktTdDNfXzExMGVycm9yX2NvZGU3bWVzc2FnZUV2AG1lbWNocgBfWk41Y2xhbmcxNEZyb250ZW5kQWN0aW9uQzJFdgBfWk40bGx2bTN2ZnMxOEluTWVtb3J5RmlsZVN5c3RlbUMxRWIAX1pONGxsdm0zc3lzNHBhdGg2YXBwZW5kRVJOU18xNVNtYWxsVmVjdG9ySW1wbEljRUVSS05TXzVUd2luZUVTN19TN19TN18AX1pONGxsdm0xMk1lbW9yeUJ1ZmZlcjEyZ2V0TWVtQnVmZmVyRU5TXzlTdHJpbmdSZWZFUzFfYgBfWk40bGx2bTN2ZnMxOEluTWVtb3J5RmlsZVN5c3RlbTdhZGRGaWxlRVJLTlNfNVR3aW5lRWxOU3QzX18xMTB1bmlxdWVfcHRySU5TXzEyTWVtb3J5QnVmZmVyRU5TNV8xNGRlZmF1bHRfZGVsZXRlSVM3X0VFRUVOU184T3B0aW9uYWxJakVFU0NfTlNCX0lOU18zc3lzMmZzOWZpbGVfdHlwZUVFRU5TQl9JTlNFXzVwZXJtc0VFRQBfWk40bGx2bTN2ZnMxN092ZXJsYXlGaWxlU3lzdGVtQzFFTlNfMThJbnRydXNpdmVSZWZDbnRQdHJJTlMwXzEwRmlsZVN5c3RlbUVFRQBfWk40bGx2bTN2ZnMxN092ZXJsYXlGaWxlU3lzdGVtMTFwdXNoT3ZlcmxheUVOU18xOEludHJ1c2l2ZVJlZkNudFB0cklOUzBfMTBGaWxlU3lzdGVtRUVFAGV4aXQAX1pOU3QzX18xNnZlY3RvcklOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFTlM0X0lTNl9FRUU1ZXJhc2VFTlNfMTFfX3dyYXBfaXRlcklQS1M2X0VFU0NfAExMVk1Jbml0aWFsaXplQUFyY2g2NFRhcmdldEluZm8ATExWTUluaXRpYWxpemVBUk1UYXJnZXRJbmZvAExMVk1Jbml0aWFsaXplQlBGVGFyZ2V0SW5mbwBMTFZNSW5pdGlhbGl6ZVg4NlRhcmdldEluZm8AX1pONWNsYW5nN3Rvb2xpbmczMGFkZFRhcmdldEFuZE1vZGVGb3JQcm9ncmFtTmFtZUVSTlN0M19fMTZ2ZWN0b3JJTlMxXzEyYmFzaWNfc3RyaW5nSWNOUzFfMTFjaGFyX3RyYWl0c0ljRUVOUzFfOWFsbG9jYXRvckljRUVFRU5TNl9JUzhfRUVFRU40bGx2bTlTdHJpbmdSZWZFAGdldGVudgBfWk5TdDNfXzExMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUU2YXNzaWduRVBLYwBfWk41Y2xhbmcxMUZpbGVNYW5hZ2VyQzFFUktOU18xN0ZpbGVTeXN0ZW1PcHRpb25zRU40bGx2bTE4SW50cnVzaXZlUmVmQ250UHRySU5TNF8zdmZzMTBGaWxlU3lzdGVtRUVFAF9aTjVjbGFuZzIyUENIQ29udGFpbmVyT3BlcmF0aW9uc0MxRXYAX1pONWNsYW5nN3Rvb2xpbmcxNFRvb2xJbnZvY2F0aW9uQzFFTlN0M19fMTZ2ZWN0b3JJTlMyXzEyYmFzaWNfc3RyaW5nSWNOUzJfMTFjaGFyX3RyYWl0c0ljRUVOUzJfOWFsbG9jYXRvckljRUVFRU5TN19JUzlfRUVFRU5TMl8xMHVuaXF1ZV9wdHJJTlNfMTRGcm9udGVuZEFjdGlvbkVOUzJfMTRkZWZhdWx0X2RlbGV0ZUlTRF9FRUVFUE5TXzExRmlsZU1hbmFnZXJFTlMyXzEwc2hhcmVkX3B0cklOU18yMlBDSENvbnRhaW5lck9wZXJhdGlvbnNFRUUAX1pOU3QzX18xMTlfX3NoYXJlZF93ZWFrX2NvdW50MTRfX3JlbGVhc2Vfd2Vha0V2AF9aTjVjbGFuZzd0b29saW5nMTRUb29sSW52b2NhdGlvbjNydW5FdgBfWk41Y2xhbmc3dG9vbGluZzE0VG9vbEludm9jYXRpb25EMUV2AF9aTjVjbGFuZzExRmlsZU1hbmFnZXJEMUV2AF9aTjRsbHZtM3ZmczEwRmlsZVN5c3RlbUQyRXYAX1pOSzRsbHZtM3ZmczZTdGF0dXMxMWlzRGlyZWN0b3J5RXYAX1pOSzRsbHZtNVR3aW5lM3N0ckV2AF9aTlN0M19fMTIxX19tdXJtdXIyX29yX2NpdHloYXNoSW1MbTY0RUVjbEVQS3ZtAF9aTlN0M19fMTIxX19tdXJtdXIyX29yX2NpdHloYXNoSW1MbTY0RUUxOF9faGFzaF9sZW5fMF90b18xNkVQS2NtAF9aTjRsbHZtMTVTbWFsbFZlY3RvckltcGxJTjVjbGFuZzE3RnJvbnRlbmRJbnB1dEZpbGVFRWFTRVJLUzNfAF9aTlN0M19fMTEzYmFzaWNfb3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFbHNFaQBfWk5TdDNfXzExM2Jhc2ljX29zdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRWxzRW0AX1pONWNsYW5nMTdEaWFnbm9zdGljc0VuZ2luZTExc2V0U2V2ZXJpdHlFak5TXzRkaWFnOFNldmVyaXR5RU5TXzE0U291cmNlTG9jYXRpb25FAF9aTjVjbGFuZzEyUHJlcHJvY2Vzc29yMTZBZGRQcmFnbWFIYW5kbGVyRU40bGx2bTlTdHJpbmdSZWZFUE5TXzEzUHJhZ21hSGFuZGxlckUAX1pUVk41Y2xhbmcxOFBQQ2hhaW5lZENhbGxiYWNrc0UAX1pONWNsYW5nMTJQcmVwcm9jZXNzb3IxOUVudGVyTWFpblNvdXJjZUZpbGVFdgBfWk41Y2xhbmcxMlByZXByb2Nlc3NvcjNMZXhFUk5TXzVUb2tlbkUAX1pONWNsYW5nMTRGcm9udGVuZEFjdGlvbkQyRXYAX1pONGxsdm0yM1NtYWxsVmVjdG9yVGVtcGxhdGVCYXNlSU41Y2xhbmcxN0Zyb250ZW5kSW5wdXRGaWxlRUxiMEVFNGdyb3dFbQBfWk40bGx2bTE1U21hbGxWZWN0b3JCYXNlSWpFMTNtYWxsb2NGb3JHcm93RW1tUm0AX1pONWNsYW5nMTFQUENhbGxiYWNrc0QyRXYAX1pOSzVjbGFuZzEzU291cmNlTWFuYWdlcjEzbG9hZFNMb2NFbnRyeUVqUGIAX19jeGFfZ3VhcmRfYWNxdWlyZQBfX2N4YV9ndWFyZF9yZWxlYXNlAF9aTlN0M19fMTEzYmFzaWNfb3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFbHNFUEt2AF9aTjVjbGFuZzE0TWFjcm9EaXJlY3RpdmUxM2dldERlZmluaXRpb25FdgBfWk5LNWNsYW5nMTNTb3VyY2VNYW5hZ2VyMjNnZXRFeHBhbnNpb25Mb2NTbG93Q2FzZUVOU18xNFNvdXJjZUxvY2F0aW9uRQBfWk41Y2xhbmcxM1ByYWdtYUhhbmRsZXJEMkV2AF9aTjVjbGFuZzExRmlsZU1hbmFnZXIxMmdldERpcmVjdG9yeUVONGxsdm05U3RyaW5nUmVmRWIAX1pONWNsYW5nMTFGaWxlTWFuYWdlcjdnZXRGaWxlRU40bGx2bTlTdHJpbmdSZWZFYmIAX1pONGxsdm0zc3lzNHBhdGgxMWlzX2Fic29sdXRlRVJLTlNfNVR3aW5lRU5TMV81U3R5bGVFAF9aTjRsbHZtM3N5czRwYXRoMTFwYXJlbnRfcGF0aEVOU185U3RyaW5nUmVmRU5TMV81U3R5bGVFAF9aTjVjbGFuZzEzU291cmNlTWFuYWdlcjI4Z2V0TWVtb3J5QnVmZmVyRm9yRmlsZU9yTm9uZUVQS05TXzlGaWxlRW50cnlFAF9aTks1Y2xhbmcxM1NvdXJjZU1hbmFnZXIyNGdldEZha2VCdWZmZXJGb3JSZWNvdmVyeUV2AF9aTks2Z29vZ2xlOHByb3RvYnVmN01lc3NhZ2UxMURlYnVnU3RyaW5nRXYAX1pOU3QzX18xcGxJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRU5TXzEyYmFzaWNfc3RyaW5nSVRfVDBfVDFfRUVQS1M2X1JLUzlfAGNlaWxmAF9aTlN0M19fMTEyX19uZXh0X3ByaW1lRW0AbWVtbW92ZQBfWk5LNWNsYW5nMTNTb3VyY2VNYW5hZ2VyMTNnZXRGaWxlSURTbG93RWoAX1pOSzVjbGFuZzEzU291cmNlTWFuYWdlcjExZ2V0RmlsZW5hbWVFTlNfMTRTb3VyY2VMb2NhdGlvbkUAX1pOSzVjbGFuZzE0U291cmNlTG9jYXRpb24xM3ByaW50VG9TdHJpbmdFUktOU18xM1NvdXJjZU1hbmFnZXJFAF9aTlN0M19fMTE5X19zaGFyZWRfd2Vha19jb3VudEQyRXYAX1pONGxsdm0xN2RlYWxsb2NhdGVfYnVmZmVyRVB2bW0AX1pOSzRsbHZtM3ZmczEwRmlsZVN5c3RlbTExZ2V0UmVhbFBhdGhFUktOU181VHdpbmVFUk5TXzE1U21hbGxWZWN0b3JJbXBsSWNFRQBfWk40bGx2bTN2ZnMxMEZpbGVTeXN0ZW03aXNMb2NhbEVSS05TXzVUd2luZUVSYgBfWk5LNGxsdm0zdmZzMTBGaWxlU3lzdGVtMTJtYWtlQWJzb2x1dGVFUk5TXzE1U21hbGxWZWN0b3JJbXBsSWNFRQBfWk41Y2xhbmcyNlByZXByb2Nlc3NvckZyb250ZW5kQWN0aW9uMTdDcmVhdGVBU1RDb25zdW1lckVSTlNfMTZDb21waWxlckluc3RhbmNlRU40bGx2bTlTdHJpbmdSZWZFAF9aTjVjbGFuZzE0RnJvbnRlbmRBY3Rpb24yMnNob3VsZEVyYXNlT3V0cHV0RmlsZXNFdgBfWk41Y2xhbmcxNEZyb250ZW5kQWN0aW9uMTNFbmRTb3VyY2VGaWxlRXYAX1pONWNsYW5nMTFQUENhbGxiYWNrczEwSGFzSW5jbHVkZUVOU18xNFNvdXJjZUxvY2F0aW9uRU40bGx2bTlTdHJpbmdSZWZFYk5TMl84T3B0aW9uYWxJTlNfMTJGaWxlRW50cnlSZWZFRUVOU182U3JjTWdyMThDaGFyYWN0ZXJpc3RpY0tpbmRFAF9aTktTdDNfXzExOV9fc2hhcmVkX3dlYWtfY291bnQxM19fZ2V0X2RlbGV0ZXJFUktTdDl0eXBlX2luZm8AX1pONmdvb2dsZThwcm90b2J1ZjIzU2h1dGRvd25Qcm90b2J1ZkxpYnJhcnlFdgBfWk41Y2xhbmcxMlByZXByb2Nlc3NvcjEzTGV4SGVhZGVyTmFtZUVSTlNfNVRva2VuRWIAX1pOSzVjbGFuZzEyUHJlcHJvY2Vzc29yMTFnZXRTcGVsbGluZ0VSS05TXzVUb2tlbkVSTjRsbHZtMTVTbWFsbFZlY3RvckltcGxJY0VFUGIAX1pONWNsYW5nMTJQcmVwcm9jZXNzb3IyNkdldEluY2x1ZGVGaWxlbmFtZVNwZWxsaW5nRU5TXzE0U291cmNlTG9jYXRpb25FUk40bGx2bTlTdHJpbmdSZWZFAF9aTjVjbGFuZzEyUHJlcHJvY2Vzc29yMTlDaGVja0VuZE9mRGlyZWN0aXZlRVBLY2IAX1pOSzRsbHZtMTNTdHJpbmdNYXBJbXBsN0ZpbmRLZXlFTlNfOVN0cmluZ1JlZkUAX1pONWNsYW5nMTJQcmVwcm9jZXNzb3IyNkRpc2NhcmRVbnRpbEVuZE9mRGlyZWN0aXZlRXYAX1pONGxsdm0zc3lzNHBhdGg2bmF0aXZlRVJOU18xNVNtYWxsVmVjdG9ySW1wbEljRUVOUzFfNVN0eWxlRQBfWk41Y2xhbmcxMlByZXByb2Nlc3NvcjEwTG9va3VwRmlsZUVOU18xNFNvdXJjZUxvY2F0aW9uRU40bGx2bTlTdHJpbmdSZWZFYlBLTlNfMTVEaXJlY3RvcnlMb29rdXBFUEtOU185RmlsZUVudHJ5RVJTNl9QTlMyXzE1U21hbGxWZWN0b3JJbXBsSWNFRVNEX1BOU185TW9kdWxlTWFwMTFLbm93bkhlYWRlckVQYlNIX2IAX1pONWNsYW5nNUxleGVyMTlnZXRMb2NGb3JFbmRPZlRva2VuRU5TXzE0U291cmNlTG9jYXRpb25FalJLTlNfMTNTb3VyY2VNYW5hZ2VyRVJLTlNfMTFMYW5nT3B0aW9uc0UAX1pOSzVjbGFuZzEyRnVuY3Rpb25EZWNsMjlnZXRUZW1wbGF0ZVNwZWNpYWxpemF0aW9uSW5mb0V2AF9aTks1Y2xhbmcxM0NYWFJlY29yZERlY2wyOWdldFRlbXBsYXRlU3BlY2lhbGl6YXRpb25LaW5kRXYAX1pOSzVjbGFuZzdWYXJEZWNsMjlnZXRUZW1wbGF0ZVNwZWNpYWxpemF0aW9uS2luZEV2AF9aTjVjbGFuZzExQVNUTm9kZUtpbmQxMWdldEZyb21Ob2RlRVJLTlNfNERlY2xFAF9aTks1Y2xhbmcxMkZ1bmN0aW9uRGVjbDI3Z2V0TWVtYmVyU3BlY2lhbGl6YXRpb25JbmZvRXYAX1pONGxsdm0xNVNtYWxsVmVjdG9yQmFzZUlqRThncm93X3BvZEVQdm1tAF9aTjRsbHZtMTVhbGxvY2F0ZV9idWZmZXJFbW0AX1pONWNsYW5nMTFEZWNsQ29udGV4dDdjbGFzc29mRVBLTlNfNERlY2xFAF9aTjVjbGFuZzREZWNsMTdjYXN0VG9EZWNsQ29udGV4dEVQS1MwXwBfWk5LNWNsYW5nMTFEZWNsQ29udGV4dDExZGVjbHNfYmVnaW5FdgBfWk5LNWNsYW5nNERlY2w4Z2V0QXR0cnNFdgBfWk5LNWNsYW5nMTJDYXB0dXJlZERlY2w3Z2V0Qm9keUV2AF9aTks1Y2xhbmcxN09iakNJbnRlcmZhY2VEZWNsMjJMb2FkRXh0ZXJuYWxEZWZpbml0aW9uRXYAX1pOSzVjbGFuZzE3Q2xhc3NUZW1wbGF0ZURlY2wxOGdldFNwZWNpYWxpemF0aW9uc0V2AF9aTks1Y2xhbmcxMFJlY29yZERlY2wxOWlzSW5qZWN0ZWRDbGFzc05hbWVFdgBfWk5LNWNsYW5nMjBGdW5jdGlvblRlbXBsYXRlRGVjbDE4Z2V0U3BlY2lhbGl6YXRpb25zRXYAX1pOSzVjbGFuZzEyRnVuY3Rpb25EZWNsMjlnZXRUZW1wbGF0ZVNwZWNpYWxpemF0aW9uS2luZEV2AF9aTks1Y2xhbmcxNVZhclRlbXBsYXRlRGVjbDE4Z2V0U3BlY2lhbGl6YXRpb25zRXYAX1pHVlpOSzVjbGFuZzI0VGVtcGxhdGVUZW1wbGF0ZVBhcm1EZWNsMThnZXREZWZhdWx0QXJndW1lbnRFdkU3Tm9uZUxvYwBfWlpOSzVjbGFuZzI0VGVtcGxhdGVUZW1wbGF0ZVBhcm1EZWNsMThnZXREZWZhdWx0QXJndW1lbnRFdkU3Tm9uZUxvYwBfWk41Y2xhbmc3VmFyRGVjbDdnZXRJbml0RXYAX1pOSzVjbGFuZzExUGFybVZhckRlY2wxM2hhc0RlZmF1bHRBcmdFdgBfWk41Y2xhbmcxMVBhcm1WYXJEZWNsMjdnZXRVbmluc3RhbnRpYXRlZERlZmF1bHRBcmdFdgBfWk41Y2xhbmcxMVBhcm1WYXJEZWNsMTNnZXREZWZhdWx0QXJnRXYAX1pONWNsYW5nMTFPTVBDaGlsZHJlbjExZ2V0Q2hpbGRyZW5FdgBfWk41Y2xhbmcxMUFTVE5vZGVLaW5kMTFnZXRGcm9tTm9kZUVSS05TXzRTdG10RQBfWk41Y2xhbmc0U3RtdDhjaGlsZHJlbkV2AF9aTks1Y2xhbmcxNlN0bXRJdGVyYXRvckJhc2UxMUdldERlY2xFeHByRXYAX1pONWNsYW5nMTZTdG10SXRlcmF0b3JCYXNlOE5leHREZWNsRWIAX1pONWNsYW5nMTZTdG10SXRlcmF0b3JCYXNlNk5leHRWQUV2AF9aTks1Y2xhbmcxMExhbWJkYUV4cHIxM2NhcHR1cmVfYmVnaW5FdgBfWk5LNWNsYW5nMTBMYW1iZGFFeHByMTNpc0luaXRDYXB0dXJlRVBLTlNfMTNMYW1iZGFDYXB0dXJlRQBfWk5LNWNsYW5nMTBMYW1iZGFFeHByMTRnZXRMYW1iZGFDbGFzc0V2AF9aTks1Y2xhbmc0RGVjbDEzZ2V0QVNUQ29udGV4dEV2AF9aTks1Y2xhbmcxMEFTVENvbnRleHQyMGdldE9iakNJbnRlcmZhY2VUeXBlRVBLTlNfMTdPYmpDSW50ZXJmYWNlRGVjbEVQUzFfAF9aTjVjbGFuZzEyQ2FwdHVyZWRTdG10MTVnZXRDYXB0dXJlZERlY2xFdgBfWk5LNWNsYW5nMTlOZXN0ZWROYW1lU3BlY2lmaWVyN2dldEtpbmRFdgBfWk5LNWNsYW5nMjJOZXN0ZWROYW1lU3BlY2lmaWVyTG9jMTBnZXRUeXBlTG9jRXYAX1pONWNsYW5nMTJUZW1wbGF0ZU5hbWVDMUVQTlNfMTJUZW1wbGF0ZURlY2xFAF9aTks1Y2xhbmcxMlRlbXBsYXRlTmFtZTI2Z2V0QXNEZXBlbmRlbnRUZW1wbGF0ZU5hbWVFdgBfWk5LNWNsYW5nMTJUZW1wbGF0ZU5hbWUyNmdldEFzUXVhbGlmaWVkVGVtcGxhdGVOYW1lRXYAX1pONWNsYW5nN1R5cGVMb2MyNGdldExvY2FsQWxpZ25tZW50Rm9yVHlwZUVOU184UXVhbFR5cGVFAF9aTks1Y2xhbmcyOVN1YnN0VGVtcGxhdGVUeXBlUGFybVBhY2tUeXBlMTVnZXRBcmd1bWVudFBhY2tFdgBfWk5LNWNsYW5nMTlEZXBlbmRlbnRFeHRJbnRUeXBlMTRnZXROdW1CaXRzRXhwckV2AF9aTks1Y2xhbmcxMUF1dG9UeXBlTG9jMThnZXRDb25jZXB0TmFtZUluZm9FdgBfWk5LNWNsYW5nNFR5cGUyN2dldFVucXVhbGlmaWVkRGVzdWdhcmVkVHlwZUV2AF9aTjVjbGFuZzEyVGVtcGxhdGVOYW1lQzFFUHYAX1pOSzVjbGFuZzIzT01QVXNlc0FsbG9jYXRvcnNDbGF1c2UxNmdldEFsbG9jYXRvckRhdGFFagBfWk5LNWNsYW5nMTNDWFhSZWNvcmREZWNsMTREZWZpbml0aW9uRGF0YTE2Z2V0QmFzZXNTbG93Q2FzZUV2AF9aTks1Y2xhbmcxMkZ1bmN0aW9uRGVjbDEyZ2V0TnVtUGFyYW1zRXYAX1pOSzVjbGFuZzE4Q1hYQ29uc3RydWN0b3JEZWNsMTBpbml0X2JlZ2luRXYAX1pOSzVjbGFuZzREZWNsMTVoYXNEZWZpbmluZ0F0dHJFdgBfWk41Y2xhbmc0RGVjbDE5Y2FzdEZyb21EZWNsQ29udGV4dEVQS05TXzExRGVjbENvbnRleHRFAF9aTks1Y2xhbmcxM0NYWFJlY29yZERlY2wyMWdldExhbWJkYUNhbGxPcGVyYXRvckV2AF9aTks1Y2xhbmcxM1NvdXJjZU1hbmFnZXIxNmdldENoYXJhY3RlckRhdGFFTlNfMTRTb3VyY2VMb2NhdGlvbkVQYgBfWk5LNGxsdm05U3RyaW5nUmVmMTdmaW5kX2ZpcnN0X25vdF9vZkVTMF9tAF9aTks0bGx2bTlTdHJpbmdSZWYxNmZpbmRfbGFzdF9ub3Rfb2ZFUzBfbQBfWk41Y2xhbmc1TGV4ZXIxMWdldFNwZWxsaW5nRVJLTlNfNVRva2VuRVJLTlNfMTNTb3VyY2VNYW5hZ2VyRVJLTlNfMTFMYW5nT3B0aW9uc0VQYgBfWk5LNWNsYW5nOU1hY3JvQXJnczE2Z2V0VW5leHBBcmd1bWVudEVqAF9aTks1Y2xhbmc5TWFjcm9BcmdzMjBBcmdOZWVkc1ByZWV4cGFuc2lvbkVQS05TXzVUb2tlbkVSTlNfMTJQcmVwcm9jZXNzb3JFAF9aTjVjbGFuZzlNYWNyb0FyZ3MxN2dldFByZUV4cEFyZ3VtZW50RWpSTlNfMTJQcmVwcm9jZXNzb3JFAF9aTjVjbGFuZzlNYWNyb0FyZ3MxMmdldEFyZ0xlbmd0aEVQS05TXzVUb2tlbkUAX1pONWNsYW5nNUxleGVyMTNnZXRTb3VyY2VUZXh0RU5TXzE1Q2hhclNvdXJjZVJhbmdlRVJLTlNfMTNTb3VyY2VNYW5hZ2VyRVJLTlNfMTFMYW5nT3B0aW9uc0VQYgBfWk5LNWNsYW5nMTJQcmVwcm9jZXNzb3IyNXVwZGF0ZU91dE9mRGF0ZUlkZW50aWZpZXJFUk5TXzE0SWRlbnRpZmllckluZm9FAF9aTjVjbGFuZzEyUHJlcHJvY2Vzc29yMjF1cGRhdGVNb2R1bGVNYWNyb0luZm9FUEtOU18xNElkZW50aWZpZXJJbmZvRVJOUzBfMTVNb2R1bGVNYWNyb0luZm9FAGZvcGVuAGZzZWVrAGZ0ZWxsAF9aTlN0M19fMTEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTZyZXNpemVFbWMAZnJlYWQAZmNsb3NlAF9aTlN0M19fMTEzYmFzaWNfb3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFbHNFbABfWk5TdDNfXzExMV9fY2FsbF9vbmNlRVJWbVB2UEZ2UzJfRQByZWFsbG9jAG1hbGxvYwBfWk5TdDNfXzExMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVDMklEbkVFUEtjAF9aTjZnb29nbGU4cHJvdG9idWYxMVN0cmluZ1BpZWNlQzJJTlN0M19fMTlhbGxvY2F0b3JJY0VFRUVSS05TM18xMmJhc2ljX3N0cmluZ0ljTlMzXzExY2hhcl90cmFpdHNJY0VFVF9FRQBfWk5LNmdvb2dsZThwcm90b2J1ZjExTWVzc2FnZUxpdGUxN1NlcmlhbGl6ZUFzU3RyaW5nRXYAX1pONmdvb2dsZThwcm90b2J1ZjR1dGlsMThCaW5hcnlUb0pzb25TdHJpbmdFUE5TMV8xMlR5cGVSZXNvbHZlckVSS05TdDNfXzExMmJhc2ljX3N0cmluZ0ljTlM0XzExY2hhcl90cmFpdHNJY0VFTlM0XzlhbGxvY2F0b3JJY0VFRUVTQ19QU0FfUktOUzFfMTZKc29uUHJpbnRPcHRpb25zRQBfWk42Z29vZ2xlOHByb3RvYnVmMTFTdHJpbmdQaWVjZTE4TG9nRmF0YWxTaXplVG9vQmlnRW1QS2MAX1pONmdvb2dsZThwcm90b2J1ZjR1dGlsMThKc29uVG9CaW5hcnlTdHJpbmdFUE5TMV8xMlR5cGVSZXNvbHZlckVSS05TdDNfXzExMmJhc2ljX3N0cmluZ0ljTlM0XzExY2hhcl90cmFpdHNJY0VFTlM0XzlhbGxvY2F0b3JJY0VFRUVOUzBfMTFTdHJpbmdQaWVjZUVQU0FfUktOUzFfMTZKc29uUGFyc2VPcHRpb25zRQBfWk5LNmdvb2dsZThwcm90b2J1ZjR1dGlsNlN0YXR1czhUb1N0cmluZ0V2AF9aTjZnb29nbGU4cHJvdG9idWYxMU1lc3NhZ2VMaXRlMTVQYXJzZUZyb21TdHJpbmdFUktOU3QzX18xMTJiYXNpY19zdHJpbmdJY05TMl8xMWNoYXJfdHJhaXRzSWNFRU5TMl85YWxsb2NhdG9ySWNFRUVFAF9aTjZnb29nbGU4cHJvdG9idWYxNERlc2NyaXB0b3JQb29sMTRnZW5lcmF0ZWRfcG9vbEV2AF9aTjZnb29nbGU4cHJvdG9idWY0dXRpbDMyTmV3VHlwZVJlc29sdmVyRm9yRGVzY3JpcHRvclBvb2xFUktOU3QzX18xMTJiYXNpY19zdHJpbmdJY05TMl8xMWNoYXJfdHJhaXRzSWNFRU5TMl85YWxsb2NhdG9ySWNFRUVFUEtOUzBfMTREZXNjcmlwdG9yUG9vbEUAX1pONmdvb2dsZThwcm90b2J1ZjJpbzE4U3RyaW5nT3V0cHV0U3RyZWFtQzFFUE5TdDNfXzExMmJhc2ljX3N0cmluZ0ljTlMzXzExY2hhcl90cmFpdHNJY0VFTlMzXzlhbGxvY2F0b3JJY0VFRUUAX1pONmdvb2dsZThwcm90b2J1ZjR1dGlsMThKc29uVG9CaW5hcnlTdHJlYW1FUE5TMV8xMlR5cGVSZXNvbHZlckVSS05TdDNfXzExMmJhc2ljX3N0cmluZ0ljTlM0XzExY2hhcl90cmFpdHNJY0VFTlM0XzlhbGxvY2F0b3JJY0VFRUVQTlMwXzJpbzE5WmVyb0NvcHlJbnB1dFN0cmVhbUVQTlNEXzIwWmVyb0NvcHlPdXRwdXRTdHJlYW1FUktOUzFfMTZKc29uUGFyc2VPcHRpb25zRQBfWk42Z29vZ2xlOHByb3RvYnVmMmlvMTZBcnJheUlucHV0U3RyZWFtQzFFUEt2aWkAX1pONmdvb2dsZThwcm90b2J1ZjJpbzE3Q29kZWRPdXRwdXRTdHJlYW1DMUVQTlMxXzIwWmVyb0NvcHlPdXRwdXRTdHJlYW1FAF9aTks2Z29vZ2xlOHByb3RvYnVmMTFNZXNzYWdlTGl0ZTIyU2VyaWFsaXplVG9Db2RlZFN0cmVhbUVQTlMwXzJpbzE3Q29kZWRPdXRwdXRTdHJlYW1FAF9aTjZnb29nbGU4cHJvdG9idWYyaW8xN0NvZGVkT3V0cHV0U3RyZWFtRDFFdgBfWk42Z29vZ2xlOHByb3RvYnVmMmlvMTZDb2RlZElucHV0U3RyZWFtMjRkZWZhdWx0X3JlY3Vyc2lvbl9saW1pdF9FAF9aTjZnb29nbGU4cHJvdG9idWYyaW8xNkNvZGVkSW5wdXRTdHJlYW03UmVmcmVzaEV2AF9aTjZnb29nbGU4cHJvdG9idWYxMU1lc3NhZ2VMaXRlMjBQYXJzZUZyb21Db2RlZFN0cmVhbUVQTlMwXzJpbzE2Q29kZWRJbnB1dFN0cmVhbUUAX1pONmdvb2dsZThwcm90b2J1ZjJpbzE2Q29kZWRJbnB1dFN0cmVhbUQxRXYAX1pOS1N0M19fMTEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTVyZmluZEVjbQBfWk45WmlwV3JpdGVyMThTdGFydEVudHJ5V2l0aFRpbWVFTlN0M19fMTE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TMF8xMWNoYXJfdHJhaXRzSWNFRUVFbWwAX1pOOVppcFdyaXRlcjEwV3JpdGVCeXRlc0VQS3ZtAF9aTjlaaXBXcml0ZXIxMUZpbmlzaEVudHJ5RXYAX1pOOVppcFdyaXRlcjE1RXJyb3JDb2RlU3RyaW5nRWkAX1pOOVppcFdyaXRlckMxRVA4X0lPX0ZJTEUAc3RyZXJyb3IAX1pOSzZnb29nbGU4cHJvdG9idWYxMU1lc3NhZ2VMaXRlMTdTZXJpYWxpemVUb1N0cmluZ0VQTlN0M19fMTEyYmFzaWNfc3RyaW5nSWNOUzJfMTFjaGFyX3RyYWl0c0ljRUVOUzJfOWFsbG9jYXRvckljRUVFRQBfWk5TdDNfXzExMl9faGFzaF90YWJsZUlOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFTlNfNGhhc2hJUzZfRUVOU184ZXF1YWxfdG9JUzZfRUVOUzRfSVM2X0VFRTI1X19lbXBsYWNlX3VuaXF1ZV9rZXlfYXJnc0lTNl9KUktTNl9FRUVOU180cGFpcklOU18xNV9faGFzaF9pdGVyYXRvcklQTlNfMTFfX2hhc2hfbm9kZUlTNl9QdkVFRUViRUVSS1RfRHBPVDBfAF9aTjlaaXBXcml0ZXI2RmluaXNoRXYAc3RyY2FzZWNtcABfWk5TdDNfXzExMl9faGFzaF90YWJsZUlOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFTlNfNGhhc2hJUzZfRUVOU184ZXF1YWxfdG9JUzZfRUVOUzRfSVM2X0VFRTZyZWhhc2hFbQBfWk5TdDNfXzExMl9faGFzaF90YWJsZUlOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFTlNfNGhhc2hJUzZfRUVOU184ZXF1YWxfdG9JUzZfRUVOUzRfSVM2X0VFRThfX3JlaGFzaEVtAHJlYWxwYXRoAGdldGN3ZABfWlRDTlN0M19fMTE5YmFzaWNfb3N0cmluZ3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFMF9OU18xM2Jhc2ljX29zdHJlYW1JY1MyX0VFAF9aVFZOU3QzX18xMTliYXNpY19vc3RyaW5nc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUAX1pUVk5TdDNfXzExNWJhc2ljX3N0cmluZ2J1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFAF9aVFROU3QzX18xMTliYXNpY19vc3RyaW5nc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUAX1pOU3QzX18xMTliYXNpY19vc3RyaW5nc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUQxRXYAX1pOU3QzX18xMTliYXNpY19vc3RyaW5nc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUQwRXYAX1pUdjBfbjI0X05TdDNfXzExOWJhc2ljX29zdHJpbmdzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRDFFdgBfWlR2MF9uMjRfTlN0M19fMTE5YmFzaWNfb3N0cmluZ3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVEMEV2AF9aTlN0M19fMTE1YmFzaWNfc3RyaW5nYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUQyRXYAX1pOU3QzX18xMTViYXNpY19zdHJpbmdidWZJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRDBFdgBfWk5TdDNfXzExNWJhc2ljX3N0cmluZ2J1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUU3c2Vla29mZkV4TlNfOGlvc19iYXNlN3NlZWtkaXJFagBfWk5TdDNfXzExNWJhc2ljX3N0cmluZ2J1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUU5dW5kZXJmbG93RXYAX1pOU3QzX18xMTViYXNpY19zdHJpbmdidWZJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFOXBiYWNrZmFpbEVpAF9aTlN0M19fMTE1YmFzaWNfc3RyaW5nYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRThvdmVyZmxvd0VpAF9aTktTdDNfXzExNWJhc2ljX3N0cmluZ2J1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUUzc3RyRXYAX1pUSU5TdDNfXzExOWJhc2ljX29zdHJpbmdzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRQBfWlRTTlN0M19fMTE5YmFzaWNfb3N0cmluZ3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFAF9aVElOU3QzX18xMTViYXNpY19zdHJpbmdidWZJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRQBfWlRTTlN0M19fMTE1YmFzaWNfc3RyaW5nYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUAX1pOU3QzX18xNnZlY3RvcklpTlNfOWFsbG9jYXRvcklpRUVFMjFfX3B1c2hfYmFja19zbG93X3BhdGhJUktpRUV2T1RfAF9aTlN0M19fMTZfX3RyZWVJTlNfMTJfX3ZhbHVlX3R5cGVJaWlFRU5TXzE5X19tYXBfdmFsdWVfY29tcGFyZUlpUzJfTlNfNGxlc3NJaUVFTGIxRUVFTlNfOWFsbG9jYXRvcklTMl9FRUU3ZGVzdHJveUVQTlNfMTFfX3RyZWVfbm9kZUlTMl9QdkVFAF9aTlN0M19fMTZ2ZWN0b3JJaU5TXzlhbGxvY2F0b3JJaUVFRTIxX19wdXNoX2JhY2tfc2xvd19wYXRoSWlFRXZPVF8AX1pOU3QzX18xNnZlY3RvcklpTlNfOWFsbG9jYXRvcklpRUVFOF9fYXBwZW5kRW0AX1pOU3QzX18xNl9fdHJlZUlOU18xMl9fdmFsdWVfdHlwZUlpTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRUVFTlNfMTlfX21hcF92YWx1ZV9jb21wYXJlSWlTOF9OU180bGVzc0lpRUVMYjFFRUVOUzVfSVM4X0VFRTdkZXN0cm95RVBOU18xMV9fdHJlZV9ub2RlSVM4X1B2RUUAX1pOU3QzX18xOGlvc19iYXNlNGluaXRFUHYAX1pOU3QzX18xMTViYXNpY19zdHJlYW1idWZJY05TXzExY2hhcl90cmFpdHNJY0VFRUMyRXYAX1pOU3QzX18xMTViYXNpY19zdHJlYW1idWZJY05TXzExY2hhcl90cmFpdHNJY0VFRUQyRXYAX1pOU3QzX18xMTNiYXNpY19vc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVEMkV2AF9aTlN0M19fMTliYXNpY19pb3NJY05TXzExY2hhcl90cmFpdHNJY0VFRUQyRXYAX1pOU3QzX18xMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFN3JlcGxhY2VFbW1QS2NtAF9aTlN0M19fMTEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTlwdXNoX2JhY2tFYwBfWk5TdDNfXzExMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUU3cmVzZXJ2ZUVtAF9aTlN0M19fMTEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTZhc3NpZ25FUEtjbQBzdHJ0b2wAX19jdHlwZV9iX2xvYwBzdHJ0b3VsAHN0cnRvbGwAc3RydG91bGwAc3RydG9kAHN0cnRvZgBmd3JpdGUAX1pUSU5TdDNfXzExM2Jhc2ljX29zdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRUUAX1pOU3QzX18xMTNiYXNpY19vc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVEMUV2AF9aTlN0M19fMTEzYmFzaWNfb3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRDBFdgBfWlR2MF9uMjRfTlN0M19fMTEzYmFzaWNfb3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRDFFdgBfWlR2MF9uMjRfTlN0M19fMTEzYmFzaWNfb3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRDBFdgBfWlRWTjEwX19jeHhhYml2MTIwX19zaV9jbGFzc190eXBlX2luZm9FAF9aTlN0M19fMTE1YmFzaWNfc3RyZWFtYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRUU1aW1idWVFUktOU182bG9jYWxlRQBfWk5TdDNfXzExNWJhc2ljX3N0cmVhbWJ1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVFNnNldGJ1ZkVQY2wAX1pOU3QzX18xMTViYXNpY19zdHJlYW1idWZJY05TXzExY2hhcl90cmFpdHNJY0VFRTRzeW5jRXYAX1pOU3QzX18xMTViYXNpY19zdHJlYW1idWZJY05TXzExY2hhcl90cmFpdHNJY0VFRTlzaG93bWFueWNFdgBfWk5TdDNfXzExNWJhc2ljX3N0cmVhbWJ1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVFNnhzZ2V0bkVQY2wAX1pOU3QzX18xMTViYXNpY19zdHJlYW1idWZJY05TXzExY2hhcl90cmFpdHNJY0VFRTV1Zmxvd0V2AF9aTlN0M19fMTE1YmFzaWNfc3RyZWFtYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRUU2eHNwdXRuRVBLY2wAX1pUSU5TdDNfXzExNWJhc2ljX3N0cmVhbWJ1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRQBfWlRWTjEwX19jeHhhYml2MTE3X19jbGFzc190eXBlX2luZm9FAHN0cmNocgBzbnByaW50ZgBfX3ZzbnByaW50Zl9jaGsAcHRocmVhZF9yd2xvY2tfaW5pdABwdGhyZWFkX3J3bG9ja19kZXN0cm95AF9aTlN0M19fMTZfX3NvcnRJUk5TXzZfX2xlc3NJaWlFRVBpRUV2VDBfUzVfVF8AcHRocmVhZF9yd2xvY2tfd3Jsb2NrAHB0aHJlYWRfcndsb2NrX3VubG9jawBwdGhyZWFkX3J3bG9ja19yZGxvY2sAbWVtcmNocgBfWk5TdDNfXzExMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUU2YXBwZW5kRW1jAF9aTlN0M19fMTEzYmFzaWNfb3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFbHNFdABfWk5TdDNfXzExM2Jhc2ljX29zdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRTV3cml0ZUVQS2NsAF9aTlN0M19fMTEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTVlcmFzZUVtbQBfX3Rsc19nZXRfYWRkcgBzaWdlbXB0eXNldABzaWdhY3Rpb24Ac3lzY29uZgBtbWFwAHNpZ2FsdHN0YWNrAHNjaGVkX2dldGNwdQBhbGFybQBzaWduYWwAbmFub3NsZWVwAHJhaXNlAHRpbWUAc3lzY2FsbABfWk5TdDNfXzE2dGhyZWFkMjBoYXJkd2FyZV9jb25jdXJyZW5jeUV2AG9wZW4AcmVhZABjbG9zZQBjbG9ja19nZXR0aW1lAHBlcnJvcgBnZXRwYWdlc2l6ZQBnZXRwaWQAcGlwZQBmY250bABzdHJkdXAAbHNlZWsAc3RybmxlbgBzdHJjbXAAc3RybmNweQBnZXRhdXh2YWwAc2lnZmlsbHNldABwdGhyZWFkX3NpZ21hc2sAbXVubWFwAF9aTlN0M19fMTEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUQyRXYAX1pOU3Q5ZXhjZXB0aW9uRDJFdgBfWlRJU3Q5ZXhjZXB0aW9uAF9fbWVtY3B5X2NoawBfWk5TdDNfXzExM2Jhc2ljX29zdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRWxzRWoAbG9nMgByaW50AGxkZXhwAF9faXNuYW5sAF9faXNpbmZsAGZyZXhwbABsZGV4cGwAX19pc25hbgBfX2lzaW5mAGZyZXhwAGxkZXhwZgB0cnVuY2wAX1pOU3QzX18xMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFNmluc2VydEVtbWMAZmVycm9yAG5hbgBuYW5mAF9fbWVtbW92ZV9jaGsAc2NoZWRfeWllbGQAc3RyY3B5AGdldHRpbWVvZmRheQBwdGhyZWFkX3NlbGYAcHRocmVhZF9nZXRzY2hlZHBhcmFtAHB0aHJlYWRfc2V0c3BlY2lmaWMAcHRocmVhZF9rZXlfY3JlYXRlAHB0aHJlYWRfZ2V0c3BlY2lmaWMAbW9kZgBjZWlsAGZsb29yAF9aVFROU3QzX18xMTRiYXNpY19pZnN0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRQBfWlRDTlN0M19fMTE0YmFzaWNfaWZzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRUUwX05TXzEzYmFzaWNfaXN0cmVhbUljUzJfRUUAX1pUVk5TdDNfXzExNGJhc2ljX2lmc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFAF9aTlN0M19fMTEzYmFzaWNfZmlsZWJ1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVFQzJFdgBfWk5TdDNfXzE3Z2V0bGluZUljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFUk5TXzEzYmFzaWNfaXN0cmVhbUlUX1QwX0VFUzlfUk5TXzEyYmFzaWNfc3RyaW5nSVM2X1M3X1QxX0VFUzZfAF9aTlN0M19fMTEzYmFzaWNfZmlsZWJ1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRDJFdgBfWlRWTlN0M19fMTEzYmFzaWNfZmlsZWJ1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRQBfWk5TdDNfXzExM2Jhc2ljX2ZpbGVidWZJY05TXzExY2hhcl90cmFpdHNJY0VFRTRzeW5jRXYAX1pOU3QzX18xMTNiYXNpY19maWxlYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVEMEV2AF9aTlN0M19fMTEzYmFzaWNfZmlsZWJ1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVFNWltYnVlRVJLTlNfNmxvY2FsZUUAX1pOU3QzX18xMTNiYXNpY19maWxlYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRUU2c2V0YnVmRVBjbABfWk5TdDNfXzExM2Jhc2ljX2ZpbGVidWZJY05TXzExY2hhcl90cmFpdHNJY0VFRTdzZWVrb2ZmRXhOU184aW9zX2Jhc2U3c2Vla2RpckVqAF9aTlN0M19fMTEzYmFzaWNfZmlsZWJ1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVFN3NlZWtwb3NFTlNfNGZwb3NJMTFfX21ic3RhdGVfdEVFagBfWk5TdDNfXzExM2Jhc2ljX2ZpbGVidWZJY05TXzExY2hhcl90cmFpdHNJY0VFRTl1bmRlcmZsb3dFdgBfWk5TdDNfXzExM2Jhc2ljX2ZpbGVidWZJY05TXzExY2hhcl90cmFpdHNJY0VFRTlwYmFja2ZhaWxFaQBfWk5TdDNfXzExM2Jhc2ljX2ZpbGVidWZJY05TXzExY2hhcl90cmFpdHNJY0VFRThvdmVyZmxvd0VpAF9aTlN0M19fMTZjaHJvbm8xMnN5c3RlbV9jbG9jazExZnJvbV90aW1lX3RFbABfWk5LU3QzX18xMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFN2NvbXBhcmVFbW1QS2MAX1pOU3QzX18xMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFNmFwcGVuZEVSS1M1X21tAF9aTlN0M19fMTEzYmFzaWNfaXN0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRDJFdgBfWk5TdDNfXzE2bG9jYWxlQzFFUktTMF8AX1pOU3QzX18xN2NvZGVjdnRJY2MxMV9fbWJzdGF0ZV90RTJpZEUAX1pOS1N0M19fMTZsb2NhbGU5aGFzX2ZhY2V0RVJOUzBfMmlkRQBmc2Vla28AZnRlbGxvAGZmbHVzaABfWk5TdDNfXzExM2Jhc2ljX2lzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRTZzZW50cnlDMUVSUzNfYgBfWlRJTlN0M19fMTEzYmFzaWNfaXN0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRQBfWk5TdDNfXzExM2Jhc2ljX2lzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRUQxRXYAX1pOU3QzX18xMTNiYXNpY19pc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVEMEV2AF9aVHYwX24yNF9OU3QzX18xMTNiYXNpY19pc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVEMUV2AF9aVHYwX24yNF9OU3QzX18xMTNiYXNpY19pc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVEMEV2AGxvY2FsdGltZV9yAGdtdGltZV9yAG1rdGltZQBfX21lbXNldF9jaGsAbWFkdmlzZQBfX2ZwcmludGZfY2hrAF9faXNvYzk5X3NzY2FuZgBPUEVOU1NMX21lbW9yeV9hbGxvYwBPUEVOU1NMX21lbW9yeV9mcmVlAHNkYWxsb2N4AE9QRU5TU0xfbWVtb3J5X2dldF9zaXplAGJzZWFyY2gAZnB1dHMAcHRocmVhZF9vbmNlAHB0aHJlYWRfbXV0ZXhfbG9jawBwdGhyZWFkX211dGV4X3VubG9jawBxc29ydABsaWJwdGhyZWFkLnNvLjAAR0xJQkNfMi4yLjUAbGlibS5zby42AGxpYnJ0LnNvLjEAbGliYy5zby42AEdMSUJDXzIuMwBHTElCQ18yLjMuNABHTElCQ18yLjQAR0xJQkNfMi42AEdMSUJDXzIuNwBHTElCQ18yLjE0AEdMSUJDXzIuMTYAbGQtbGludXgteDg2LTY0LnNvLjIAJE9SSUdJTi8uLi9saWI2NDokT1JJR0lOL2xpYjY0AGxpYnByb3RvYnVmLWNwcC1mdWxsLnNvAGxpYmJhc2Uuc28AbGliY2xhbmctY3BwLnNvLjE0Z2l0AGxpYnppcGFyY2hpdmUuc28AbGliYysrLnNvAGxpYmRsLnNvLjIAbGliZ2NjX3Muc28uMQAA0PreAAAAAAAIAAAAAAAAABCq3wAAAAAA2PreAAAAAAAIAAAAAAAAACiq3wAAAAAA4PreAAAAAAAIAAAAAAAAAECq3wAAAAAA6PreAAAAAAAIAAAAAAAAAFiq3wAAAAAA8PreAAAAAAAIAAAAAAAAAHCq3wAAAAAA+PreAAAAAAAIAAAAAAAAAJCq3wAAAAAAAPveAAAAAAAIAAAAAAAAAMCq3wAAAAAACPveAAAAAAAIAAAAAAAAANiq3wAAAAAAEPveAAAAAAAIAAAAAAAAAACr3wAAAAAAGPveAAAAAAAIAAAAAAAAABir3wAAAAAAIPveAAAAAAAIAAAAAAAAADCr3wAAAAAAKPveAAAAAAAIAAAAAAAAAEir3wAAAAAAMPveAAAAAAAIAAAAAAAAAGir3wAAAAAAOPveAAAAAAAIAAAAAAAAAICr3wAAAAAAQPveAAAAAAAIAAAAAAAAAJir3wAAAAAA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+BHfAAAAAAAIAAAAAAAAAJA9yAAAAAAAEBLfAAAAAAAIAAAAAAAAALCdyAAAAAAAGBLfAAAAAAAIAAAAAAAAAHCeyAAAAAAAIBLfAAAAAAAIAAAAAAAAANA9yAAAAAAAKBLfAAAAAAAIAAAAAAAAAPA9yAAAAAAAMBLfAAAAAAAIAAAAAAAAADA+yAAAAAAAOBLfAAAAAAAIAAAAAAAAAEA+yAAAAAAAQBLfAAAAAAAIAAAAAAAAAAAzyAAAAAAASBLfAAAAAAAIAAAAAAAAAFA+yAAAAAAAUBLfAAAAAAAIAAAAAAAAAJA+yAAAAAAAYBLfAAAAAAAIAAAAAAAAAKA+yAAAAAAAaBLfAAAAAAAIAAAAAAAAALA+yAAAAAAAcBLfAAAAAAAIAAAAAAAAAFBAyAAAAAAAeBLfAAAAAAAIAAAAAAAAAOBAyAAAAAAAiBLfAAAAAAAIAAAAAAAAADBByAAAAAAAkBLfAAAAAAAIAAAAAAAAALAsyAAAAAAAmBLfAAAAAAAIAAAAAAAAAMBByAAAAAAAuBLfAAAAAAAIAAAAAAAAAFBCyAAAAAAA0BLfAAAAAAAIAAAAAAAAAHBCyAAAAAAA2BLfAAAAAAAIAAAAAAAAAIBCyAAAAAAA8BLfAAAAAAAIAAAAAAAAAICeyAAAAAAA+BLfAAAAAAAIAAAAAAAAAOCeyAAAAAAAABPfAAAAAAAIAAAAAAAAANA9yAAAAAAACBPfAAAAAAAIAAAAAAAAAPA9yAAAAAAAEBPfAAAAAAAIAAAAAAAAADA+yAAAAAAAGBPfAAAAAAAIAAAAAAAAAEA+yAAAAAAAIBPfAAAAAAAIAAAAAAAAAAAzyAAAAAAAKBPfAAAAAAAIAAAAAAAAAFA+yAAAAAAAMBPfAAAAAAAIAAAAAAAAAJA+yAAAAAAAQBPfAAAAAAAIAAAAAAAAAKA+yAAAAAAASBPfAAAAAAAIAAAAAAAAALA+yAAAAAAAUBPfAAAAAAAIAAAAAAAAAFBAyAAAAAAAWBPfAAAAAAAIAAAAAAAAAOBAyAAAAAAAaBPfAAAAAAAIAAAAAAAAADBByAAAAAAAcBPfAAAAAAAIAAAAAAAAALAsyAAAAAAAeBPfAAAAAAAIAAAAAAAAAMBByAAAAAAAsBPfAAAAAAAIAAAAAAAAAHBCyAAAAAAAuBPfAAAAAAAIAAAA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VwAAAAAAAAAAAAAA4AXfAAAAAAABAAAAVwAAAAAAAAAAAAAAsAbfAAAAAAABAAAAVwAAAAAAAAAAAAAAgAffAAAAAAABAAAAVwAAAAAAAAAAAAAAUAjfAAAAAAABAAAAVwAAAAAAAAAAAAAAIAnfAAAAAAABAAAAVwAAAAAAAAAAAAAA8AnfAAAAAAABAAAAVwAAAAAAAAAAAAAAwArfAAAAAAABAAAAVwAAAAAAAAAAAAAAkAvfAAAAAAABAAAAVwAAAAAAAAAAAAAAaBTfAAAAAAABAAAAVwAAAAAAAAAAAAAAkBbfAAAAAAABAAAAVwAAAAAAAAAAAAAAYBffAAAAAAABAAAAVwAAAAAAAAAAAAAAMBjfAAAAAAABAAAAVwAAAAAAAAAAAAAA4BnfAAAAAAABAAAAVwAAAAAAAAAAAAAAsBrfAAAAAAABAAAAVwAAAAAAAAAAAAAAgBvfAAAAAAABAAAAVwAAAAAAAAAAAAAAUBzfAAAAAAABAAAAVwAAAAAAAAAAAAAAIB3fAAAAAAABAAAAVwAAAAAAAAAAAAAA8B3fAAAAAAABAAAAVwAAAAAAAAAAAAAAwB7fAAAAAAABAAAAVwAAAAAAAAAAAAAAkB/fAAAAAAABAAAAVwAAAAAAAAAAAAAAYCDfAAAAAAABAAAAVwAAAAAAAAAAAAAAgCTfAAAAAAABAAAAVwAAAAAAAAAAAAAAUCXfAAAAAAABAAAAVwAAAAAAAAAAAAAAICbfAAAAAAABAAAAVwAAAAAAAAAAAAAA8CbfAAAAAAABAAAAVwAAAAAAAAAAAAAAwCffAAAAAAABAAAAVwAAAAAAAAAAAAAAQCnfAAAAAAABAAAAVwAAAAAAAAAAAAAAECrfAAAAAAABAAAAVwAAAAAAAAAAAAAA4CrfAAAAAAABAAAAVwAAAAAAAAAAAAAAWCzfAAAAAAABAAAAVwAAAAAAAAAAAAAAKC3fAAAAAAABAAAAVwAAAAAAAAAAAAAAWC/fAAAAAAABAAAAVwAAAAAAAAAAAAAAKDDfAAAAAAABAAAAVwAAAAAAAAAAAAAA+DDfAAAAAAABAAAAVwAAAAAAAAAAAAAAyDHfAAAAAAABAAAAVwAAAAAAAAAAAAAAmDLfAAAAAAABAAAAVwAAAAAAAAAAAAAAaDPfAAAAAAABAAAAVwAAAAAAAAAAAAAAODTfAAAAAAABAAAAVwAAAAAAAAAAAAAACDXfAAAAAAABAAAAVwAAAAAAAAAAAAAA2DXfAAAAAAABAAAAVwAAAAAAAAAAAAAAqDbfAAAAAAABAAAAVwAAAAAAAAAAAAAAeDffAAAAAAABAAAAVwAAAAAAAAAAAAAASDjfAAAAAAABAAAAVwAAAAAAAAAAAAAAGDnfAAAAAAABAAAAVwAAAAAAAAAAAAAA6DnfAAAAAAABAAAAVwAAAAAAAAAAAAAA+PzeAAAAAAABAAAAWAAAAAAAAAAAAAAAyP3eAAAAAAABAAAAWAAAAAAAAAAAAAAAmP7eAAAAAAABAAAAWAAAAAAAAAAAAAAAaP/eAAAAAAABAAAAWAAAAAAAAAAAAAAAOADfAAAAAAABAAAAWAAAAAAAAAAAAAAACAHfAAAAAAABAAAAWAAAAAAAAAAAAAAA2AHfAAAAAAABAAAAWAAAAAAAAAAAAAAAqALfAAAAAAABAAAAWAAAAAAAAAAAAAAAiAPfAAAAAAABAAAAWAAAAAAAAAAAAAAAaATfAAAAAAABAAAAWAAAAAAAAAAAAAAAOAXfAAAAAAABAAAAWAAAAAAAAAAAAAAAGAbfAAAAAAABAAAAWAAAAAAAAAAAAAAA6AbfAAAAAAABAAAAWAAAAAAAAAAAAAAAuAffAAAAAAABAAAAWAAAAAAAAAAAAAAAiAjfAAAAAAABAAAAWAAAAAAAAAAAAAAAWAnfAAAAAAABAAAAWAAAAAAAAAAAAAAAKArfAAAAAAABAAAAWAAAAAAAAAAAAAAA+ArfAAAAAAABAAAAWAAAAAAAAAAAAAAAyAvfAAAAAAABAAAAWAAAAAAAAAAAAAAA2A7fAAAAAAABAAAAWAAAAAAAAAAAAAAAuA/fAAAAAAABAAAAWAAAAAAAAAAAAAAAmBDfAAAAAAABAAAAWAAAAAAAAAAAAAAAeBHfAAAAAAABAAAAWAAAAAAAAAAAAAAAWBLfAAAAAAABAAAAWAAAAAAAAAAAAAAAOBPfAAAAAAABAAAAWAAAAAAAAAAAAAAAoBTfAAAAAAABAAAAWAAAAAAAAAAAAAAAyBbfAAAAAAABAAAAWAAAAAAAAAAAAAAAmBffAAAAAAABAAAAWAAAAAAAAAAAAAAAaBjfAAAAAAABAAAAWAAAAAAAAAAAAAAAOBnfAAAAAAABAAAAWAAAAAAAAAAAAAAAGBrfAAAAAAABAAAAWAAAAAAAAAAAAAAA6BrfAAAAAAABAAAAWAAAAAAAAAAAAAAAuBvfAAAAAAABAAAAWAAAAAAAAAAAAAAAiBzfAAAAAAABAAAAWAAAAAAAAAAAAAAAWB3fAAAAAAABAAAAWAAAAAAAAAAAAAAAKB7fAAAAAAABAAAAWAAAAAAAAAAAAAAA+B7fAAAAAAABAAAAWAAAAAAAAAAAAAAAyB/fAAAAAAABAAAAWAAAAAAAAAAAAAAAmCDfAAAAAAABAAAAWAAAAAAAAAAAAAAAKCLfAAAAAAABAAAAWAAAAAAAAAAAAAAACCPfAAAAAAABAAAAWAAAAAAAAAAAAAAAuCTfAAAAAAABAAAAWAAAAAAAAAAAAAAAiCXfAAAAAAABAAAAWAAAAAAAAAAAAAAAWCbfAAAAAAABAAAAWAAAAAAAAAAAAAAAKCffAAAAAAABAAAAWAAAAAAAAAAAAAAA+CffAAAAAAABAAAAWAAAAAAAAAAAAAAAeCnfAAAAAAABAAAAWAAAAAAAAAAAAAAASCrfAAAAAAABAAAAWAAAAAAAAAAAAAAAGCvfAAAAAAABAAAAWAAAAAAAAAAAAAAAkCzfAAAAAAABAAAAWAAAAAAAAAAAAAAAYC3fAAAAAAABAAAAWAAAAAAAAAAAAAAAkC/fAAAAAAABAAAAWAAAAAAAAAAAAAAAYDDfAAAAAAABAAAAWAAAAAAAAAAAAAAAMDHfAAAAAAABAAAAWAAAAAAAAAAAAAAAADLfAAAAAAABAAAAWAAAAAAAAAAAAAAA0DLfAAAAAAABAAAAWAAAAAAAAAAAAAAAoDPfAAAAAAABAAAAWAAAAAAAAAAAAAAAcDTfAAAAAAABAAAAWAAAAAAAAAAAAAAAQDXfAAAAAAABAAAAWAAAAAAAAAAAAAAAEDbfAAAAAAABAAAAWAAAAAAAAAAAAAAA4DbfAAAAAAABAAAAWAAAAAAAAAAAAAAAsDffAAAAAAABAAAAWAAAAAAAAAAAAAAAgDjfAAAAAAABAAAAWAAAAAAAAAAAAAAAUDnfAAAAAAABAAAAWAAAAAAAAAAAAAAAIDrfAAAAAAABAAAAWAAAAAAAAAAAAAAAAP3eAAAAAAABAAAAWQAAAAAAAAAAAAAA0P3eAAAAAAABAAAAWQAAAAAAAAAAAAAAoP7eAAAAAAABAAAAWQAAAAAAAAAAAAAAcP/eAAAAAAABAAAAWQAAAAAAAAAAAAAAQADfAAAAAAABAAAAWQAAAAAAAAAAAAAAEAHfAAAAAAABAAAAWQAAAAAAAAAAAAAA4AHfAAAAAAABAAAAWQAAAAAAAAAAAAAAcATfAAAAAAABAAAAWQAAAAAAAAAAAAAAIAbfAAAAAAABAAAAWQAAAAAAAAAAAAAA8AbfAAAAAAABAAAAWQAAAAAAAAAAAAAAwAffAAAAAAABAAAAWQAAAAAAAAAAAAAAkAjfAAAAAAABAAAAWQAAAAAAAAAAAAAAYAnfAAAAAAABAAAAWQAAAAAAAAAAAAAAMArfAAAAAAABAAAAWQAAAAAAAAAAAAAAAAvfAAAAAAABAAAAWQAAAAAAAAAAAAAA0AvfAAAAAAABAAAAWQAAAAAAAAAAAAAAqBTfAAAAAAABAAAAWQAAAAAAAAAAAAAA0BbfAAAAAAABAAAAWQAAAAAAAAAAAAAAoBffAAAAAAABAAAAWQAAAAAAAAAAAAAAcBjfAAAAAAABAAAAWQAAAAAAAAAAAAAAIBrfAAAAAAABAAAAWQAAAAAAAAAAAAAA8BrfAAAAAAABAAAAWQAAAAAAAAAAAAAAwBvfAAAAAAABAAAAWQAAAAAAAAAAAAAAkBzfAAAAAAABAAAAWQAAAAAAAAAAAAAAYB3fAAAAAAABAAAAWQAAAAAAAAAAAAAAMB7fAAAAAAABAAAAWQAAAAAAAAAAAAAAAB/fAAAAAAABAAAAWQAAAAAAAAAAAAAA0B/fAAAAAAABAAAAWQAAAAAAAAAAAAAAoCDfAAAAAAABAAAAWQAAAAAAAAAAAAAAwCTfAAAAAAABAAAAWQAAAAAAAAAAAAAAkCXfAAAAAAABAAAAWQAAAAAAAAAAAAAAYCbfAAAAAAABAAAAWQAAAAAAAAAAAAAAMCffAAAAAAABAAAAWQAAAAAAAAAAAAAAACjfAAAAAAABAAAAWQAAAAAAAAAAAAAAgCnfAAAAAAABAAAAWQAAAAAAAAAAAAAAUCrfAAAAAAABAAAAWQAAAAAAAAAAAAAAICvfAAAAAAABAAAAWQAAAAAAAAAAAAAAmCzfAAAAAAABAAAAWQAAAAAAAAAAAAAAaC3fAAAAAAABAAAAWQAAAAAAAAAAAAAAmC/fAAAAAAABAAAA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WgAAAAAAAAAAAAAAqDjfAAAAAAABAAAAWgAAAAAAAAAAAAAAeDnfAAAAAAABAAAAWgAAAAAAAAAAAAAASDrfAAAAAAABAAAAWgAAAAAAAAAAAAAAUP3eAAAAAAABAAAAWwAAAAAAAAAAAAAAIP7eAAAAAAABAAAAWwAAAAAAAAAAAAAA8P7eAAAAAAABAAAAWwAAAAAAAAAAAAAAwP/eAAAAAAABAAAAWwAAAAAAAAAAAAAAkADfAAAAAAABAAAAWwAAAAAAAAAAAAAAYAHfAAAAAAABAAAAWwAAAAAAAAAAAAAAMALfAAAAAAABAAAAWwAAAAAAAAAAAAAAAAPfAAAAAAABAAAAWwAAAAAAAAAAAAAA4APfAAAAAAABAAAAWwAAAAAAAAAAAAAAwATfAAAAAAABAAAAWwAAAAAAAAAAAAAAkAXfAAAAAAABAAAAWwAAAAAAAAAAAAAAcAbfAAAAAAABAAAAWwAAAAAAAAAAAAAAQAffAAAAAAABAAAAWwAAAAAAAAAAAAAAEAjfAAAAAAABAAAAWwAAAAAAAAAAAAAA4AjfAAAAAAABAAAAWwAAAAAAAAAAAAAAsAnfAAAAAAABAAAAWwAAAAAAAAAAAAAAgArfAAAAAAABAAAAWwAAAAAAAAAAAAAAUAvfAAAAAAABAAAAWwAAAAAAAAAAAAAAIAzfAAAAAAABAAAAWwAAAAAAAAAAAAAAMA/fAAAAAAABAAAAWwAAAAAAAAAAAAAAEBDfAAAAAAABAAAAWwAAAAAAAAAAAAAA8BDfAAAAAAABAAAAWwAAAAAAAAAAAAAA0BHfAAAAAAABAAAAWwAAAAAAAAAAAAAAsBLfAAAAAAABAAAAWwAAAAAAAAAAAAAAkBPfAAAAAAABAAAAWwAAAAAAAAAAAAAA+BTfAAAAAAABAAAAWwAAAAAAAAAAAAAAIBffAAAAAAABAAAAWwAAAAAAAAAAAAAA8BffAAAAAAABAAAAWwAAAAAAAAAAAAAAwBjfAAAAAAABAAAAWwAAAAAAAAAAAAAAkBnfAAAAAAABAAAAWwAAAAAAAAAAAAAAcBrfAAAAAAABAAAAWwAAAAAAAAAAAAAAQBvfAAAAAAABAAAAWwAAAAAAAAAAAAAAEBzfAAAAAAABAAAAWwAAAAAAAAAAAAAA4BzfAAAAAAABAAAAWwAAAAAAAAAAAAAAsB3fAAAAAAABAAAAWwAAAAAAAAAAAAAAgB7fAAAAAAABAAAAWwAAAAAAAAAAAAAAUB/fAAAAAAABAAAAWwAAAAAAAAAAAAAAICDfAAAAAAABAAAAWwAAAAAAAAAAAAAA8CDfAAAAAAABAAAAWwAAAAAAAAAAAAAAgCLfAAAAAAABAAAAWwAAAAAAAAAAAAAAYCPfAAAAAAABAAAAWwAAAAAAAAAAAAAAECXfAAAAAAABAAAAWwAAAAAAAAAAAAAA4CXfAAAAAAABAAAAWwAAAAAAAAAAAAAAsCbfAAAAAAABAAAAWwAAAAAAAAAAAAAAgCffAAAAAAABAAAAWwAAAAAAAAAAAAAAUCjfAAAAAAABAAAAWwAAAAAAAAAAAAAA0CnfAAAAAAABAAAAWwAAAAAAAAAAAAAAoCrfAAAAAAABAAAAWwAAAAAAAAAAAAAAcCvfAAAAAAABAAAAWwAAAAAAAAAAAAAA6CzfAAAAAAABAAAAWwAAAAAAAAAAAAAAuC3fAAAAAAABAAAAWwAAAAAAAAAAAAAA6C/fAAAAAAABAAAAWwAAAAAAAAAAAAAAuDDfAAAAAAABAAAAWwAAAAAAAAAAAAAAiDHfAAAAAAABAAAAWwAAAAAAAAAAAAAAWDLfAAAAAAABAAAAWwAAAAAAAAAAAAAAKDPfAAAAAAABAAAAWwAAAAAAAAAAAAAA+DPfAAAAAAABAAAAWwAAAAAAAAAAAAAAyDTfAAAAAAABAAAAWwAAAAAAAAAAAAAAmDXfAAAAAAABAAAAWwAAAAAAAAAAAAAAaDbfAAAAAAABAAAAWwAAAAAAAAAAAAAAODffAAAAAAABAAAAWwAAAAAAAAAAAAAACDjfAAAAAAABAAAAWwAAAAAAAAAAAAAA2DjfAAAAAAABAAAAWwAAAAAAAAAAAAAAqDnfAAAAAAABAAAAWwAAAAAAAAAAAAAAeDrfAAAAAAABAAAAWwAAAAAAAAAAAAAAWP3eAAAAAAABAAAAXAAAAAAAAAAAAAAAKP7eAAAAAAABAAAAXAAAAAAAAAAAAAAA+P7eAAAAAAABAAAAXAAAAAAAAAAAAAAAyP/eAAAAAAABAAAAXAAAAAAAAAAAAAAAmADfAAAAAAABAAAAXAAAAAAAAAAAAAAAaAHfAAAAAAABAAAAXAAAAAAAAAAAAAAAOALfAAAAAAABAAAAXAAAAAAAAAAAAAAAyATfAAAAAAABAAAAXAAAAAAAAAAAAAAAeAbfAAAAAAABAAAAXAAAAAAAAAAAAAAASAffAAAAAAABAAAAXAAAAAAAAAAAAAAAGAjfAAAAAAABAAAAXAAAAAAAAAAAAAAA6AjfAAAAAAABAAAAXAAAAAAAAAAAAAAAuAnfAAAAAAABAAAAXAAAAAAAAAAAAAAAiArfAAAAAAABAAAAXAAAAAAAAAAAAAAAWAvfAAAAAAABAAAAXAAAAAAAAAAAAAAAKAzfAAAAAAABAAAAXAAAAAAAAAAAAAAAGBDfAAAAAAABAAAAXAAAAAAAAAAAAAAA2BHfAAAAAAABAAAAXAAAAAAAAAAAAAAAmBPfAAAAAAABAAAAXAAAAAAAAAAAAAAAABXfAAAAAAABAAAAXAAAAAAAAAAAAAAAKBffAAAAAAABAAAAXAAAAAAAAAAAAAAA+BffAAAAAAABAAAAXAAAAAAAAAAAAAAAyBjfAAAAAAABAAAAXAAAAAAAAAAAAAAAeBrfAAAAAAABAAAAXAAAAAAAAAAAAAAASBvfAAAAAAABAAAAXAAAAAAAAAAAAAAAGBzfAAAAAAABAAAAXAAAAAAAAAAAAAAA6BzfAAAAAAABAAAAXAAAAAAAAAAAAAAAuB3fAAAAAAABAAAAXAAAAAAAAAAAAAAAiB7fAAAAAAABAAAAXAAAAAAAAAAAAAAAWB/fAAAAAAABAAAAXAAAAAAAAAAAAAAAKCDfAAAAAAABAAAAXAAAAAAAAAAAAAAA+CDfAAAAAAABAAAAXAAAAAAAAAAAAAAAaCPfAAAAAAABAAAAXAAAAAAAAAAAAAAAGCXfAAAAAAABAAAAXAAAAAAAAAAAAAAA6CXfAAAAAAABAAAAXAAAAAAAAAAAAAAAuCbfAAAAAAABAAAAXAAAAAAAAAAAAAAAiCffAAAAAAABAAAAXAAAAAAAAAAAAAAAWCjfAAAAAAABAAAAXAAAAAAAAAAAAAAA2CnfAAAAAAABAAAAXAAAAAAAAAAAAAAAqCrfAAAAAAABAAAAXAAAAAAAAAAAAAAAeCvfAAAAAAABAAAAXAAAAAAAAAAAAAAA8CzfAAAAAAABAAAAXAAAAAAAAAAAAAAAwC3fAAAAAAABAAAAXAAAAAAAAAAAAAAA8C/fAAAAAAABAAAAXAAAAAAAAAAAAAAAwDDfAAAAAAABAAAAXAAAAAAAAAAAAAAAkDHfAAAAAAABAAAAXAAAAAAAAAAAAAAAYDLfAAAAAAABAAAAXAAAAAAAAAAAAAAAMDPfAAAAAAABAAAAXAAAAAAAAAAAAAAAADTfAAAAAAABAAAAXAAAAAAAAAAAAAAA0DTfAAAAAAABAAAAXAAAAAAAAAAAAAAAoDXfAAAAAAABAAAAXAAAAAAAAAAAAAAAcDbfAAAAAAABAAAAXAAAAAAAAAAAAAAAQDffAAAAAAABAAAAXAAAAAAAAAAAAAAAEDjfAAAAAAABAAAAXAAAAAAAAAAAAAAA4DjfAAAAAAABAAAAXAAAAAAAAAAAAAAAsDnfAAAAAAABAAAAXAAAAAAAAAAAAAAAgDrfAAAAAAABAAAAXAAAAAAAAAAAAAAA8ALfAAAAAAABAAAAXQAAAAAAAAAAAAAA0APfAAAAAAABAAAAXQAAAAAAAAAAAAAAgAXfAAAAAAABAAAAXQAAAAAAAAAAAAAAIA/fAAAAAAABAAAAXQAAAAAAAAAAAAAAABDfAAAAAAABAAAAXQAAAAAAAAAAAAAA4BDfAAAAAAABAAAAXQAAAAAAAAAAAAAAwBHfAAAAAAABAAAAXQAAAAAAAAAAAAAAoBLfAAAAAAABAAAAXQAAAAAAAAAAAAAAgBPfAAAAAAABAAAAXQAAAAAAAAAAAAAAgBnfAAAAAAABAAAAXQAAAAAAAAAAAAAAcCLfAAAAAAABAAAAXQAAAAAAAAAAAAAAUCPfAAAAAAABAAAAXQAAAAAAAAAAAAAAEAPfAAAAAAABAAAAXgAAAAAAAAAAAAAA8APfAAAAAAABAAAAXgAAAAAAAAAAAAAAoAXfAAAAAAABAAAAXgAAAAAAAAAAAAAAQA/fAAAAAAABAAAAXgAAAAAAAAAAAAAAIBDfAAAAAAABAAAAXgAAAAAAAAAAAAAAABHfAAAAAAABAAAAXgAAAAAAAAAAAAAA4BHfAAAAAAABAAAAXgAAAAAAAAAAAAAAwBLfAAAAAAABAAAAXgAAAAAAAAAAAAAAoBPfAAAAAAABAAAAXgAAAAAAAAAAAAAAoBnfAAAAAAABAAAAXgAAAAAAAAAAAAAAkCLfAAAAAAABAAAAXgAAAAAAAAAAAAAAcCPfAAAAAAABAAAAXgAAAAAAAAAAAAAASA/fAAAAAAABAAAA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wJbfAAAAAAAHAAAAZgEAAAAAAAAAAAAAyJbfAAAAAAAHAAAAZwEAAAAAAAAAAAAA0JbfAAAAAAAHAAAAaQEAAAAAAAAAAAAA2JbfAAAAAAAHAAAAaAEAAAAAAAAAAAAA4JbfAAAAAAAHAAAAagEAAAAAAAAAAAAA6JbfAAAAAAAHAAAAawEAAAAAAAAAAAAA8JbfAAAAAAAHAAAAbAEAAAAAAAAAAAAA+JbfAAAAAAAHAAAAbgEAAAAAAAAAAAAAAJffAAAAAAAHAAAAbwEAAAAAAAAAAAAACJffAAAAAAAHAAAAcAEAAAAAAAAAAAAAEJffAAAAAAAHAAAAcQEAAAAAAAAAAAAAGJffAAAAAAAHAAAAcgEAAAAAAAAAAAAAIJffAAAAAAAHAAAAcwEAAAAAAAAAAAAAKJffAAAAAAAHAAAAdAEAAAAAAAAAAAAAMJffAAAAAAAHAAAAdQEAAAAAAAAAAAAAOJffAAAAAAAHAAAAdgEAAAAAAAAAAAAAQJffAAAAAAAHAAAAdwEAAAAAAAAAAAAASJffAAAAAAAHAAAAeAEAAAAAAAAAAAAAUJffAAAAAAAHAAAAeQEAAAAAAAAAAAAAWJffAAAAAAAHAAAAegEAAAAAAAAAAAAAYJffAAAAAAAHAAAAewEAAAAAAAAAAAAAaJffAAAAAAAHAAAAfAEAAAAAAAAAAAAAcJffAAAAAAAHAAAAfQEAAAAAAAAAAAAAeJffAAAAAAAHAAAAfgEAAAAAAAAAAAAAgJffAAAAAAAHAAAAfwEAAAAAAAAAAAAAiJffAAAAAAAHAAAAgAEAAAAAAAAAAAAAkJffAAAAAAAHAAAAgQEAAAAAAAAAAAAAmJffAAAAAAAHAAAAggEAAAAAAAAAAAAAoJffAAAAAAAHAAAAgwEAAAAAAAAAAAAAqJffAAAAAAAHAAAAhAEAAAAAAAAAAAAAsJffAAAAAAAHAAAAhQEAAAAAAAAAAAAAuJffAAAAAAAHAAAAhgEAAAAAAAAAAAAAwJffAAAAAAAHAAAAhwEAAAAAAAAAAAAAyJffAAAAAAAHAAAAiAEAAAAAAAAAAAAA0JffAAAAAAAHAAAAiQEAAAAAAAAAAAAA2JffAAAAAAAHAAAAigEAAAAAAAAAAAAA4JffAAAAAAAHAAAAiwEAAAAAAAAAAAAA6JffAAAAAAAHAAAAjAEAAAAAAAAAAAAA8JffAAAAAAAHAAAAjQEAAAAAAAAAAAAA+JffAAAAAAAHAAAAjgEAAAAAAAAAAAAAAJjfAAAAAAAHAAAAkAEAAAAAAAAAAAAACJjfAAAAAAAHAAAAkQEAAAAAAAAAAAAAEJjfAAAAAAAHAAAAkgEAAAAAAAAAAAAAGJjfAAAAAAAHAAAAkwEAAAAAAAAAAAAAIJjfAAAAAAAHAAAAlAEAAAAAAAAAAAAAKJjfAAAAAAAHAAAAlQEAAAAAAAAAAAAAMJjfAAAAAAAHAAAAlgEAAAAAAAAAAAAAOJjfAAAAAAAHAAAAlwEAAAAAAAAAAAAAQJjfAAAAAAAHAAAAmAEAAAAAAAAAAAAASJjfAAAAAAAHAAAAmQEAAAAAAAAAAAAAUJjfAAAAAAAHAAAAmgEAAAAAAAAAAAAAWJjfAAAAAAAHAAAAmwEAAAAAAAAAAAAAYJjfAAAAAAAHAAAAnAEAAAAAAAAAAAAAaJjfAAAAAAAHAAAAnQEAAAAAAAAAAAAAcJjfAAAAAAAHAAAAngEAAAAAAAAAAAAAeJjfAAAAAAAHAAAAnwEAAAAAAAAAAAAAgJjfAAAAAAAHAAAAoAEAAAAAAAAAAAAAiJjfAAAAAAAHAAAAoQEAAAAAAAAAAAAAkJjfAAAAAAAHAAAAogEAAAAAAAAAAAAAmJjfAAAAAAAHAAAAowEAAAAAAAAAAAAAoJjfAAAAAAAHAAAApAEAAAAAAAAAAAAAqJjfAAAAAAAHAAAApQEAAAAAAAAAAAAAsJjfAAAAAAAHAAAApgEAAAAAAAAAAAAAuJjfAAAAAAAHAAAApwEAAAAAAAAAAAAAwJjfAAAAAAAHAAAAqAEAAAAAAAAAAAAAyJjfAAAAAAAHAAAAqQEAAAAAAAAAAAAA0JjfAAAAAAAHAAAAqgEAAAAAAAAAAAAA2JjfAAAAAAAHAAAAqwEAAAAAAAAAAAAA4JjfAAAAAAAHAAAArAEAAAAAAAAAAAAA6JjfAAAAAAAHAAAArQEAAAAAAAAAAAAA8JjfAAAAAAAHAAAArgEAAAAAAAAAAAAA+JjfAAAAAAAHAAAArwEAAAAAAAAAAAAAAJnfAAAAAAAHAAAAsAEAAAAAAAAAAAAACJnfAAAAAAAHAAAAsQEAAAAAAAAAAAAAEJnfAAAAAAAHAAAAsgEAAAAAAAAAAAAAGJnfAAAAAAAHAAAAtAEAAAAAAAAAAAAAIJnfAAAAAAAHAAAAtQEAAAAAAAAAAAAAKJnfAAAAAAAHAAAAtgEAAAAAAAAAAAAAMJnfAAAAAAAHAAAAtwEAAAAAAAAAAAAAOJnfAAAAAAAHAAAAuAEAAAAAAAAAAAAAQJnfAAAAAAAHAAAAvgEAAAAAAAAAAAAASJnfAAAAAAAHAAAAvwEAAAAAAAAAAAAAUJnfAAAAAAAHAAAAwAEAAAAAAAAAAAAAWJnfAAAAAAAHAAAAwQEAAAAAAAAAAAAAYJnfAAAAAAAHAAAAwgEAAAAAAAAAAAAAaJnfAAAAAAAHAAAAwwEAAAAAAAAAAAAAcJnfAAAAAAAHAAAAxAEAAAAAAAAAAAAAeJnfAAAAAAAHAAAAxQEAAAAAAAAAAAAAgJnfAAAAAAAHAAAAxgEAAAAAAAAAAAAAiJnfAAAAAAAHAAAAxwEAAAAAAAAAAAAAkJnfAAAAAAAHAAAAyAEAAAAAAAAAAAAAmJnfAAAAAAAHAAAAyQEAAAAAAAAAAAAAoJnfAAAAAAAHAAAAygEAAAAAAAAAAAAAqJnfAAAAAAAHAAAAywEAAAAAAAAAAAAAsJnfAAAAAAAHAAAAzAEAAAAAAAAAAAAAuJnfAAAAAAAHAAAAzQEAAAAAAAAAAAAAwJnfAAAAAAAHAAAAzgEAAAAAAAAAAAAAAAAAAAAAAAAAAIA/AACAfwAAgP8AAACAAACAvwEAAgD//39/AAAAX///f/8AAAAAAAAAAAAAAAC2+8QADPzEAJH8xAAY/cQAXU7FABFOxQC1TsUA607FABlPxQBUT8UAj0/FABlQxQCjUMUALVHFAGNRxQAMi8UANIzFADSMxQDDi8UAf4vFAPGLxQAAAAAAAAAAAAAAAAD/////CAAAAP///////////////ygAAAAQAAAAGAAAACAAAAD/////CAAAAP///////////////xAAAAAYAAAA/////wgAAAD///////////////8YAAAAEAAAAP////8IAAAA////////////////KAAAADAAAAAQAAAA/////wgAAAD///////////////8QAAAAGAAAAP////8IAAAA////////////////oAAAABAAAACoAAAAKAAAAEAAAACIAAAAkAAAAJgAAABYAAAAcAAAAP////8IAAAA////////////////EAAAACAAAAAoAAAA////////////////CAAAABAAAAAAAAAAAQAAACAAAAAoAAAA////////////////CAAAABAAAAAAAAAAAQAAAP////8IAAAA////////////////EAAAAHgAAAAgAAAAKAAAAP///////////////wgAAAAQAAAAAAAAAAEAAAD/////CAAAAP///////////////xAAAACoAAAAkAAAAHgAAAD/////CAAAAP///////////////xAAAAD/////CAAAAP///////////////xAAAAD/////CAAAAP///////////////xAAAAAYAAAA/////wgAAAD///////////////8QAAAAGAAAACAAAAD/////CAAAAP///////////////ygAAAAQAAAA/////wgAAAD///////////////8QAAAA/////wgAAAD///////////////8QAAAAGAAAAAAAAAAAAAAAAAAAAAoaa3l0aGUvcHJvdG8vYW5hbHlzaXMucHJvdG8SC2t5dGhlLnByb3RvGhlnb29nbGUvcHJvdG9idWYvYW55LnByb3RvGh9nb29nbGUvcHJvdG9idWYvdGltZXN0YW1wLnByb3RvGhlreXRoZS9wcm90by9zdG9yYWdlLnByb3RvIoMBCg9BbmFseXNpc1JlcXVlc3QSMQoLY29tcGlsYXRpb24YASABKAsyHC5reXRoZS5wcm90by5Db21waWxhdGlvblVuaXQSGQoRZmlsZV9kYXRhX3NlcnZpY2UYAiABKAkSEAoIcmV2aXNpb24YAyABKAkSEAoIYnVpbGRfaWQYBCABKAkiUgoOQW5hbHlzaXNPdXRwdXQSDQoFdmFsdWUYASABKAwSMQoMZmluYWxfcmVzdWx0GAogASgLMhsua3l0aGUucHJvdG8uQW5hbHlzaXNSZXN1bHQikgEKDkFuYWx5c2lzUmVzdWx0EjIKBnN0YXR1cxgBIAEoDjIiLmt5dGhlLnByb3RvLkFuYWx5c2lzUmVzdWx0LlN0YXR1cxIPCgdzdW1tYXJ5GAIgASgJIjsKBlN0YXR1cxIMCghDT01QTEVURRAAEg4KCklOQ09NUExFVEUQARITCg9JTlZBTElEX1JFUVVFU1QQAiKKBAoPQ29tcGlsYXRpb25Vbml0EiIKBnZfbmFtZRgBIAEoCzISLmt5dGhlLnByb3RvLlZOYW1lEj4KDnJlcXVpcmVkX2lucHV0GAMgAygLMiYua3l0aGUucHJvdG8uQ29tcGlsYXRpb25Vbml0LkZpbGVJbnB1dBIaChJoYXNfY29tcGlsZV9lcnJvcnMYBCABKAgSEAoIYXJndW1lbnQYBSADKAkSEwoLc291cmNlX2ZpbGUYBiADKAkSEgoKb3V0cHV0X2tleRgHIAEoCRIZChF3b3JraW5nX2RpcmVjdG9yeRgIIAEoCRIVCg1lbnRyeV9jb250ZXh0GAkgASgJEjUKC2Vudmlyb25tZW50GAogAygLMiAua3l0aGUucHJvdG8uQ29tcGlsYXRpb25Vbml0LkVudhIlCgdkZXRhaWxzGAsgAygLMhQuZ29vZ2xlLnByb3RvYnVmLkFueRqBAQoJRmlsZUlucHV0EiIKBnZfbmFtZRgBIAEoCzISLmt5dGhlLnByb3RvLlZOYW1lEiMKBGluZm8YAiABKAsyFS5reXRoZS5wcm90by5GaWxlSW5mbxIlCgdkZXRhaWxzGAQgAygLMhQuZ29vZ2xlLnByb3RvYnVmLkFueUoECAMQBBoiCgNFbnYSDAoEbmFtZRgBIAEoCRINCgV2YWx1ZRgCIAEoCUoECAIQAyKtBQoIS3ppcEluZm8SMwoHY29ycG9yYRgBIAMoCzIiLmt5dGhlLnByb3RvLkt6aXBJbmZvLkNvcnBvcmFFbnRyeRIMCgRzaXplGAQgASgDEhYKDmFic29sdXRlX3BhdGhzGAYgAygJEhwKFGNyaXRpY2FsX2t6aXBfZXJyb3JzGAUgAygJGskDCgpDb3JwdXNJbmZvEl4KGGxhbmd1YWdlX3JlcXVpcmVkX2lucHV0cxgEIAMoCzI8Lmt5dGhlLnByb3RvLkt6aXBJbmZvLkNvcnB1c0luZm8uTGFuZ3VhZ2VSZXF1aXJlZElucHV0c0VudHJ5Ek8KEGxhbmd1YWdlX3NvdXJjZXMYBSADKAsyNS5reXRoZS5wcm90by5LemlwSW5mby5Db3JwdXNJbmZvLkxhbmd1YWdlU291cmNlc0VudHJ5Gh8KDlJlcXVpcmVkSW5wdXRzEg0KBWNvdW50GAEgASgFGm4KG0xhbmd1YWdlUmVxdWlyZWRJbnB1dHNFbnRyeRILCgNrZXkYASABKAkSPgoFdmFsdWUYAiABKAsyLy5reXRoZS5wcm90by5LemlwSW5mby5Db3JwdXNJbmZvLlJlcXVpcmVkSW5wdXRzOgI4ARpnChRMYW5ndWFnZVNvdXJjZXNFbnRyeRILCgNrZXkYASABKAkSPgoFdmFsdWUYAiABKAsyLy5reXRoZS5wcm90by5LemlwSW5mby5Db3JwdXNJbmZvLlJlcXVpcmVkSW5wdXRzOgI4AUoECAEQAkoECAIQA0oECAMQBBpQCgxDb3Jwb3JhRW50cnkSCwoDa2V5GAEgASgJEi8KBXZhbHVlGAIgASgLMiAua3l0aGUucHJvdG8uS3ppcEluZm8uQ29ycHVzSW5mbzoCOAFKBAgCEANKBAgDEAQiRQoNQnVpbGRNZXRhZGF0YRI0ChBjb21taXRfdGltZXN0YW1wGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCI0CgxGaWxlc1JlcXVlc3QSJAoFZmlsZXMYASADKAsyFS5reXRoZS5wcm90by5GaWxlSW5mbyIoCghGaWxlSW5mbxIMCgRwYXRoGAEgASgJEg4KBmRpZ2VzdBgCIAEoCSJRCghGaWxlRGF0YRIPCgdjb250ZW50GAEgASgMEiMKBGluZm8YAiABKAsyFS5reXRoZS5wcm90by5GaWxlSW5mbxIPCgdtaXNzaW5nGAMgASgIImUKEUNvbXBpbGF0aW9uQnVuZGxlEioKBHVuaXQYASABKAsyHC5reXRoZS5wcm90by5Db21waWxhdGlvblVuaXQSJAoFZmlsZXMYAiADKAsyFS5reXRoZS5wcm90by5GaWxlRGF0YSKSAQoSSW5kZXhlZENvbXBpbGF0aW9uEioKBHVuaXQYASABKAsyHC5reXRoZS5wcm90by5Db21waWxhdGlvblVuaXQSNAoFaW5kZXgYAiABKAsyJS5reXRoZS5wcm90by5JbmRleGVkQ29tcGlsYXRpb24uSW5kZXgaGgoFSW5kZXgSEQoJcmV2aXNpb25zGAEgAygJQjcKH2NvbS5nb29nbGUuZGV2dG9vbHMua3l0aGUucHJvdG9aEWFuYWx5c2lzX2dvX3Byb3Rv+AEBYgZwcm90bzMAAAAAAAAAAAAAAAAAAAAAAP////84AAAACQAAAP////8oAAAAEAAAAP////8gAAAAFwAAAP////9AAAAAHwAAAP////8oAAAAJgAAAP////+wAAAANQAAAP////8YAAAAOwAAAEIAAAAwAAAARAAAAEsAAAAwAAAATQAAAP/////oAAAAVAAAAFsAAAAwAAAAXQAAAP////+4AAAAZgAAAP////8gAAAAbAAAAP////8wAAAAcgAAAP////8oAAAAeQAAAP////8oAAAAgQAAAP////84AAAAiAAAAP////8wAAAAjgAAAP////8oAAAAAAAAAAAAAAAAAAAAAAAwQwAAMEUAAAAAAAAAAAAAAIAAAACAAAAAgAAAAID/////////f/////////9/IiIiIiIiIiIiIiIiIiIiIkBAQEBAQEBAQEBAQEBAQEB+fn5+fn5+fn5+fn5+fn5+/v7+/v7+/v7+/v7+/v7+/gAAAAAAAAAA/////////38AAAAAAAAAAAAAAAAAAAAAjw3otpCPsdJtUfR5GGNRZQkAAAAAAAAACAAAAAAAAAAgAAAACAAAABAAAAAAAAAAUbFTb2u4kyO96kBZGXc4lv8AAAD/AAAA/wAAAP8AAACnAQAAEAAAABgAAAAQAAAAAQAAAAAAAAAAAAAA/////yEAAAAAAAAAGAAAAAAAAAD///////////////////9/a71B+6vZgx95IX4TGc3gW2fmCWqFrme7cvNuPDr1T6V/Ug5RjGgFm6vZgx8ZzeBbAQEBAQEBAQEBAQEBAQEBAf//////////3/////////8AAAAAAAAAALIHAAAAAAAAF91wMFoBWZE5WQ732OwvFVMPivvHRTa5qWO08cTLc4sAAAAAAAAAgAEBAAAAAAAAMzMzMzMzMzMzMzMzMzMzMzY2NjY2NjY2NjY2NjY2NjYs9yv8lCExIsJkTMijX1WfggMAAAEAAAAYAAAADAAAAAjJvPNn5glqO6fKhIWuZ7vYngXBB9V8NhfdcDA5WQ73iQMAAAEAAAAYAAAAEAAAAKwBAAABAAAAIAAAABAAAABcXFxcXFxcXFxcXFxcXFxccmADyjemKnTRovWOdQY1jhEREREREREREREREREREREA/wAAAP8AAAD/AAAA/wAAAAIAAAAAAAAAAAAAAAAAAJEAAAAAAAAAgAAAAAAAAAAAAAAAAADwfwAAAAAAAPD/9v/////////3/////////6eP+WQNLgzbpE/6vh1ItUcxC8D/ERVYaKeP+WSkT/q+MQvA/2cmM2cRFVhoh0q0jn0kGp08Wb88MR4rIUGNMoF/AwAAAQAAABAAAAAMAAAAgICAgICAgICAgICAgICAgAAAAAAAADBDAAAAAAAAMEUhAAAAAAAAABoAAAAAAAAAqAEAAAEAAAAYAAAAEAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAgAAAAAAAAACAIQAAAAgAAAAYAAAAAAAAANieBcFdnbvLB9V8NiopmmKjAQAAEAAAABAAAAAQAAAAigMAAAEAAAAgAAAAEAAAAPDw8PDw8PDw8PDw8PDw8PBCQ00gRFJCRyBLQVQgQUQgMQAAAAAAAAAqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAD/AAAA/wAAAP8AAAD/LAAAAAgAAAAYAAAACAAAAAEjRWeJq83v/ty6mHZUMhAfAAAACAAAAAgAAAAIAAAAUQAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAhAAAAAAAAABcAAAAAAAAAAQAAAAEAAAAAAAAAAgAAAKQBAAABAAAAEAAAABAAAACquIUs/JkBK6IsxYHcLbcOEQAAABEAAAAAAAAAAgAAABECAAAAAAAAAAIAAAAAAACIAwAAAQAAABAAAAAQAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAA/////wAAAAADAAAAAAAAAAAAAAAAAAAA8w8AAAAAAAAEAAAA4QAAAB0AAAAIAAAACAAAAAAAAAAgAAAAAAAAAEAAAAAAAAAADAAAAB8AAAAXAAAAOwAAAA8PDw8PDw8PDw8PDw8PDw+qqqqqqqqqqqqqqqqqqqqqVVVVVVVVVVVVVVVVVVVVVQsAAAAAAAAACgAAAAAAAAAr+JT+cvNuPPE2HV869U+l0YLmrX9SDlEfbD4rjGgFmxEQAAAAAAAAABAAAAAAAAAAAP8AAAD/AAAA/wAAAP8A///////////9//////////T/////////9f//////////AAAAAAAAAP8AAAAAAAAAKwAAAAgAAAAQAAAACAAAAIUDAAABAAAAIAAAAAwAAADOp0A9TWBrbgdOxdO6850YMQAAAAAAAAAiAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////4/+OqOI+KJaSOYZTJR5evqsBAAAQAAAAIAAAABAAAABqicYAaonGAESIxgBkiMYAi4jGALaIxgBAlsYAQJbGAFKTxgCBlcYAnJXGALuVxgA6rsYAOq7GABStxgA0rcYAW63GAIatxgAQu8YAELvGACK4xgBRusYAbLrGAIu6xgBreXRoZS9wcm90by9tZXRhZGF0YS5wcm90bwAtd3JhcHBlcgBjdWRhAENoZWNrIGZhaWxlZDogd3JpdGVyLm9rKCkAYWRkZWQgY29udGVudCBmb3IgAFN5c3RlbQBhcm1pbnRyLmgALyo9PT0tLS0tLS0tLS0tLS0tIGF2eDUxMnZibWl2bGludHJpbi5oIC0gVkJNSSBpbnRyaW5zaWNzIC0tLS0tLS0tLS0tLS0tLS0tLT09PQogKgogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwojaWZuZGVmIF9fSU1NSU5UUklOX0gKI2Vycm9yICJOZXZlciB1c2UgPGF2eDUxMnZibWl2bGludHJpbi5oPiBkaXJlY3RseTsgaW5jbHVkZSA8aW1taW50cmluLmg+IGluc3RlYWQuIgojZW5kaWYKCiNpZm5kZWYgX19WQk1JVkxJTlRSSU5fSAojZGVmaW5lIF9fVkJNSVZMSU5UUklOX0gKCi8qIERlZmluZSB0aGUgZGVmYXVsdCBhdHRyaWJ1dGVzIGZvciB0aGUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZS4gKi8KI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJhdng1MTJ2Ym1pLGF2eDUxMnZsIiksIF9fbWluX3ZlY3Rvcl93aWR0aF9fKDEyOCkpKQojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUzI1NiBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oImF2eDUxMnZibWksYXZ4NTEydmwiKSwgX19taW5fdmVjdG9yX3dpZHRoX18oMjU2KSkpCgoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX3Blcm11dGV4MnZhcl9lcGk4KF9fbTEyOGkgX19BLCBfX20xMjhpIF9fSSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdnBlcm1pMnZhcnFpMTI4KChfX3YxNnFpKV9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKV9fSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKV9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3Blcm11dGV4MnZhcl9lcGk4KF9fbTEyOGkgX19BLCBfX21tYXNrMTYgX19VLCBfX20xMjhpIF9fSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl8xMjgoX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpX21tX3Blcm11dGV4MnZhcl9lcGk4KF9fQSwgX19JLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2syX3Blcm11dGV4MnZhcl9lcGk4KF9fbTEyOGkgX19BLCBfX20xMjhpIF9fSSwgX19tbWFzazE2IF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfMTI4KF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKV9tbV9wZXJtdXRleDJ2YXJfZXBpOChfX0EsIF9fSSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKV9fSSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9wZXJtdXRleDJ2YXJfZXBpOChfX21tYXNrMTYgX19VLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzEyOChfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZxaSlfbW1fcGVybXV0ZXgydmFyX2VwaTgoX19BLCBfX0ksIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZxaSlfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X3Blcm11dGV4MnZhcl9lcGk4KF9fbTI1NmkgX19BLCBfX20yNTZpIF9fSSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfdnBlcm1pMnZhcnFpMjU2KChfX3YzMnFpKV9fQSwgKF9fdjMycWkpX19JLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMycWkpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfcGVybXV0ZXgydmFyX2VwaTgoX19tMjU2aSBfX0EsIF9fbW1hc2szMiBfX1UsIF9fbTI1NmkgX19JLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20yNTZpIF9fQikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzI1NihfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJxaSlfbW0yNTZfcGVybXV0ZXgydmFyX2VwaTgoX19BLCBfX0ksIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJxaSlfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFzazJfcGVybXV0ZXgydmFyX2VwaTgoX19tMjU2aSBfX0EsIF9fbTI1NmkgX19JLCBfX21tYXNrMzIgX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl8yNTYoX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMycWkpX21tMjU2X3Blcm11dGV4MnZhcl9lcGk4KF9fQSwgX19JLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMycWkpX19JKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X3Blcm11dGV4MnZhcl9lcGk4KF9fbW1hc2szMiBfX1UsIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfMjU2KF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMnFpKV9tbTI1Nl9wZXJtdXRleDJ2YXJfZXBpOChfX0EsIF9fSSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMnFpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fcGVybXV0ZXh2YXJfZXBpOCAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3Blcm12YXJxaTEyOCgoX192MTZxaSlfX0IsIChfX3YxNnFpKV9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9wZXJtdXRleHZhcl9lcGk4IChfX21tYXNrMTYgX19NLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl8xMjgoKF9fbW1hc2sxNilfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZxaSlfbW1fcGVybXV0ZXh2YXJfZXBpOChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZxaSlfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfcGVybXV0ZXh2YXJfZXBpOCAoX19tMTI4aSBfX1csIF9fbW1hc2sxNiBfX00sIF9fbTEyOGkgX19BLAogICAgICAgICAgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl8xMjgoKF9fbW1hc2sxNilfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZxaSlfbW1fcGVybXV0ZXh2YXJfZXBpOChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZxaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfcGVybXV0ZXh2YXJfZXBpOCAoX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3Blcm12YXJxaTI1NigoX192MzJxaSkgX19CLCAoX192MzJxaSkgX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X3Blcm11dGV4dmFyX2VwaTggKF9fbW1hc2szMiBfX00sIF9fbTI1NmkgX19BLAogICAgICAgIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfMjU2KChfX21tYXNrMzIpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMycWkpX21tMjU2X3Blcm11dGV4dmFyX2VwaTgoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMycWkpX21tMjU2X3NldHplcm9fc2kyNTYoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX3Blcm11dGV4dmFyX2VwaTggKF9fbTI1NmkgX19XLCBfX21tYXNrMzIgX19NLCBfX20yNTZpIF9fQSwKICAgICAgICAgICAgIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfMjU2KChfX21tYXNrMzIpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMycWkpX21tMjU2X3Blcm11dGV4dmFyX2VwaTgoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMycWkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX211bHRpc2hpZnRfZXBpNjRfZXBpOChfX20xMjhpIF9fWCwgX19tMTI4aSBfX1kpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdnBtdWx0aXNoaWZ0cWIxMjgoKF9fdjE2cWkpX19YLCAoX192MTZxaSlfX1kpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19tdWx0aXNoaWZ0X2VwaTY0X2VwaTgoX19tMTI4aSBfX1csIF9fbW1hc2sxNiBfX00sIF9fbTEyOGkgX19YLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aSBfX1kpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl8xMjgoKF9fbW1hc2sxNilfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpX21tX211bHRpc2hpZnRfZXBpNjRfZXBpOChfX1gsIF9fWSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X211bHRpc2hpZnRfZXBpNjRfZXBpOChfX21tYXNrMTYgX19NLCBfX20xMjhpIF9fWCwgX19tMTI4aSBfX1kpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl8xMjgoKF9fbW1hc2sxNilfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpX21tX211bHRpc2hpZnRfZXBpNjRfZXBpOChfX1gsIF9fWSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpX21tX3NldHplcm9fc2kxMjgoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tdWx0aXNoaWZ0X2VwaTY0X2VwaTgoX19tMjU2aSBfX1gsIF9fbTI1NmkgX19ZKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3ZwbXVsdGlzaGlmdHFiMjU2KChfX3YzMnFpKV9fWCwgKF9fdjMycWkpX19ZKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfbXVsdGlzaGlmdF9lcGk2NF9lcGk4KF9fbTI1NmkgX19XLCBfX21tYXNrMzIgX19NLCBfX20yNTZpIF9fWCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTI1NmkgX19ZKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfMjU2KChfX21tYXNrMzIpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMnFpKV9tbTI1Nl9tdWx0aXNoaWZ0X2VwaTY0X2VwaTgoX19YLCBfX1kpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMnFpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9tdWx0aXNoaWZ0X2VwaTY0X2VwaTgoX19tbWFzazMyIF9fTSwgX19tMjU2aSBfX1gsIF9fbTI1NmkgX19ZKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfMjU2KChfX21tYXNrMzIpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMnFpKV9tbTI1Nl9tdWx0aXNoaWZ0X2VwaTY0X2VwaTgoX19YLCBfX1kpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMnFpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgoKI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUzEyOAojdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2CgojZW5kaWYKAC8qPT09LS0tLSBhdnhpbnRyaW4uaCAtIEFWWCBpbnRyaW5zaWNzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKi8KCiNpZm5kZWYgX19JTU1JTlRSSU5fSAojZXJyb3IgIk5ldmVyIHVzZSA8YXZ4aW50cmluLmg+IGRpcmVjdGx5OyBpbmNsdWRlIDxpbW1pbnRyaW4uaD4gaW5zdGVhZC4iCiNlbmRpZgoKI2lmbmRlZiBfX0FWWElOVFJJTl9ICiNkZWZpbmUgX19BVlhJTlRSSU5fSAoKdHlwZWRlZiBkb3VibGUgX192NGRmIF9fYXR0cmlidXRlX18gKChfX3ZlY3Rvcl9zaXplX18gKDMyKSkpOwp0eXBlZGVmIGZsb2F0IF9fdjhzZiBfX2F0dHJpYnV0ZV9fICgoX192ZWN0b3Jfc2l6ZV9fICgzMikpKTsKdHlwZWRlZiBsb25nIGxvbmcgX192NGRpIF9fYXR0cmlidXRlX18gKChfX3ZlY3Rvcl9zaXplX18gKDMyKSkpOwp0eXBlZGVmIGludCBfX3Y4c2kgX19hdHRyaWJ1dGVfXyAoKF9fdmVjdG9yX3NpemVfXyAoMzIpKSk7CnR5cGVkZWYgc2hvcnQgX192MTZoaSBfX2F0dHJpYnV0ZV9fICgoX192ZWN0b3Jfc2l6ZV9fICgzMikpKTsKdHlwZWRlZiBjaGFyIF9fdjMycWkgX19hdHRyaWJ1dGVfXyAoKF9fdmVjdG9yX3NpemVfXyAoMzIpKSk7CgovKiBVbnNpZ25lZCB0eXBlcyAqLwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3Y0ZHUgX19hdHRyaWJ1dGVfXyAoKF9fdmVjdG9yX3NpemVfXyAoMzIpKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdjhzdSBfX2F0dHJpYnV0ZV9fICgoX192ZWN0b3Jfc2l6ZV9fICgzMikpKTsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX3YxNmh1IF9fYXR0cmlidXRlX18gKChfX3ZlY3Rvcl9zaXplX18gKDMyKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX192MzJxdSBfX2F0dHJpYnV0ZV9fICgoX192ZWN0b3Jfc2l6ZV9fICgzMikpKTsKCi8qIFdlIG5lZWQgYW4gZXhwbGljaXRseSBzaWduZWQgdmFyaWFudCBmb3IgY2hhci4gTm90ZSB0aGF0IHRoaXMgc2hvdWxkbid0CiAqIGFwcGVhciBpbiB0aGUgaW50ZXJmYWNlIHRob3VnaC4gKi8KdHlwZWRlZiBzaWduZWQgY2hhciBfX3YzMnFzIF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXygzMikpKTsKCnR5cGVkZWYgZmxvYXQgX19tMjU2IF9fYXR0cmlidXRlX18gKChfX3ZlY3Rvcl9zaXplX18gKDMyKSwgX19hbGlnbmVkX18oMzIpKSk7CnR5cGVkZWYgZG91YmxlIF9fbTI1NmQgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDMyKSwgX19hbGlnbmVkX18oMzIpKSk7CnR5cGVkZWYgbG9uZyBsb25nIF9fbTI1NmkgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDMyKSwgX19hbGlnbmVkX18oMzIpKSk7Cgp0eXBlZGVmIGZsb2F0IF9fbTI1Nl91IF9fYXR0cmlidXRlX18gKChfX3ZlY3Rvcl9zaXplX18gKDMyKSwgX19hbGlnbmVkX18oMSkpKTsKdHlwZWRlZiBkb3VibGUgX19tMjU2ZF91IF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXygzMiksIF9fYWxpZ25lZF9fKDEpKSk7CnR5cGVkZWYgbG9uZyBsb25nIF9fbTI1NmlfdSBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oMzIpLCBfX2FsaWduZWRfXygxKSkpOwoKLyogRGVmaW5lIHRoZSBkZWZhdWx0IGF0dHJpYnV0ZXMgZm9yIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlLiAqLwojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUyBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oImF2eCIpLCBfX21pbl92ZWN0b3Jfd2lkdGhfXygyNTYpKSkKI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJhdngiKSwgX19taW5fdmVjdG9yX3dpZHRoX18oMTI4KSkpCgovKiBBcml0aG1ldGljICovCi8vLyBBZGRzIHR3byAyNTYtYml0IHZlY3RvcnMgb2YgWzQgeCBkb3VibGVdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZBRERQRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLgovLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgc3VtcyBvZiBib3RoCi8vLyAgICBvcGVyYW5kcy4Kc3RhdGljIF9faW5saW5lIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl9hZGRfcGQoX19tMjU2ZCBfX2EsIF9fbTI1NmQgX19iKQp7CiAgcmV0dXJuIChfX20yNTZkKSgoX192NGRmKV9fYSsoX192NGRmKV9fYik7Cn0KCi8vLyBBZGRzIHR3byAyNTYtYml0IHZlY3RvcnMgb2YgWzggeCBmbG9hdF0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkFERFBTIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLgovLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBzdW1zIG9mIGJvdGgKLy8vICAgIG9wZXJhbmRzLgpzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUwpfbW0yNTZfYWRkX3BzKF9fbTI1NiBfX2EsIF9fbTI1NiBfX2IpCnsKICByZXR1cm4gKF9fbTI1NikoKF9fdjhzZilfX2ErKF9fdjhzZilfX2IpOwp9CgovLy8gU3VidHJhY3RzIHR3byAyNTYtYml0IHZlY3RvcnMgb2YgWzQgeCBkb3VibGVdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZTVUJQRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIG1pbnVlbmQuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZSBzdWJ0cmFoZW5kLgovLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbgovLy8gICAgYm90aCBvcGVyYW5kcy4Kc3RhdGljIF9faW5saW5lIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl9zdWJfcGQoX19tMjU2ZCBfX2EsIF9fbTI1NmQgX19iKQp7CiAgcmV0dXJuIChfX20yNTZkKSgoX192NGRmKV9fYS0oX192NGRmKV9fYik7Cn0KCi8vLyBTdWJ0cmFjdHMgdHdvIDI1Ni1iaXQgdmVjdG9ycyBvZiBbOCB4IGZsb2F0XS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWU1VCUFMgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIG1pbnVlbmQuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHN1YnRyYWhlbmQuCi8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4KLy8vICAgIGJvdGggb3BlcmFuZHMuCnN0YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl9zdWJfcHMoX19tMjU2IF9fYSwgX19tMjU2IF9fYikKewogIHJldHVybiAoX19tMjU2KSgoX192OHNmKV9fYS0oX192OHNmKV9fYik7Cn0KCi8vLyBBZGRzIHRoZSBldmVuLWluZGV4ZWQgdmFsdWVzIGFuZCBzdWJ0cmFjdHMgdGhlIG9kZC1pbmRleGVkIHZhbHVlcyBvZgovLy8gICAgdHdvIDI1Ni1iaXQgdmVjdG9ycyBvZiBbNCB4IGRvdWJsZV0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkFERFNVQlBEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgbGVmdCBzb3VyY2Ugb3BlcmFuZC4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIHJpZ2h0IHNvdXJjZSBvcGVyYW5kLgovLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgYWx0ZXJuYXRpbmcgc3VtcwovLy8gICAgYW5kIGRpZmZlcmVuY2VzIGJldHdlZW4gYm90aCBvcGVyYW5kcy4Kc3RhdGljIF9faW5saW5lIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl9hZGRzdWJfcGQoX19tMjU2ZCBfX2EsIF9fbTI1NmQgX19iKQp7CiAgcmV0dXJuIChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX2FkZHN1YnBkMjU2KChfX3Y0ZGYpX19hLCAoX192NGRmKV9fYik7Cn0KCi8vLyBBZGRzIHRoZSBldmVuLWluZGV4ZWQgdmFsdWVzIGFuZCBzdWJ0cmFjdHMgdGhlIG9kZC1pbmRleGVkIHZhbHVlcyBvZgovLy8gICAgdHdvIDI1Ni1iaXQgdmVjdG9ycyBvZiBbOCB4IGZsb2F0XS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQUREU1VCUFMgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGxlZnQgc291cmNlIG9wZXJhbmQuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHJpZ2h0IHNvdXJjZSBvcGVyYW5kLgovLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBhbHRlcm5hdGluZyBzdW1zIGFuZAovLy8gICAgZGlmZmVyZW5jZXMgYmV0d2VlbiBib3RoIG9wZXJhbmRzLgpzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUwpfbW0yNTZfYWRkc3ViX3BzKF9fbTI1NiBfX2EsIF9fbTI1NiBfX2IpCnsKICByZXR1cm4gKF9fbTI1NilfX2J1aWx0aW5faWEzMl9hZGRzdWJwczI1NigoX192OHNmKV9fYSwgKF9fdjhzZilfX2IpOwp9CgovLy8gRGl2aWRlcyB0d28gMjU2LWJpdCB2ZWN0b3JzIG9mIFs0IHggZG91YmxlXS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWRElWUEQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZSBkaXZpZGVuZC4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGRpdmlzb3IuCi8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZSBxdW90aWVudHMgb2YgYm90aAovLy8gICAgb3BlcmFuZHMuCnN0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW0yNTZfZGl2X3BkKF9fbTI1NmQgX19hLCBfX20yNTZkIF9fYikKewogIHJldHVybiAoX19tMjU2ZCkoKF9fdjRkZilfX2EvKF9fdjRkZilfX2IpOwp9CgovLy8gRGl2aWRlcyB0d28gMjU2LWJpdCB2ZWN0b3JzIG9mIFs4IHggZmxvYXRdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZESVZQUyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgZGl2aWRlbmQuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGRpdmlzb3IuCi8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHF1b3RpZW50cyBvZiBib3RoCi8vLyAgICBvcGVyYW5kcy4Kc3RhdGljIF9faW5saW5lIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMKX21tMjU2X2Rpdl9wcyhfX20yNTYgX19hLCBfX20yNTYgX19iKQp7CiAgcmV0dXJuIChfX20yNTYpKChfX3Y4c2YpX19hLyhfX3Y4c2YpX19iKTsKfQoKLy8vIENvbXBhcmVzIHR3byAyNTYtYml0IHZlY3RvcnMgb2YgWzQgeCBkb3VibGVdIGFuZCByZXR1cm5zIHRoZSBncmVhdGVyCi8vLyAgICBvZiBlYWNoIHBhaXIgb2YgdmFsdWVzLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNQVhQRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4KLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIG1heGltdW0gdmFsdWVzCi8vLyAgICBiZXR3ZWVuIGJvdGggb3BlcmFuZHMuCnN0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW0yNTZfbWF4X3BkKF9fbTI1NmQgX19hLCBfX20yNTZkIF9fYikKewogIHJldHVybiAoX19tMjU2ZClfX2J1aWx0aW5faWEzMl9tYXhwZDI1NigoX192NGRmKV9fYSwgKF9fdjRkZilfX2IpOwp9CgovLy8gQ29tcGFyZXMgdHdvIDI1Ni1iaXQgdmVjdG9ycyBvZiBbOCB4IGZsb2F0XSBhbmQgcmV0dXJucyB0aGUgZ3JlYXRlcgovLy8gICAgb2YgZWFjaCBwYWlyIG9mIHZhbHVlcy4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTUFYUFMgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLgovLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBtYXhpbXVtIHZhbHVlcwovLy8gICAgYmV0d2VlbiBib3RoIG9wZXJhbmRzLgpzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUwpfbW0yNTZfbWF4X3BzKF9fbTI1NiBfX2EsIF9fbTI1NiBfX2IpCnsKICByZXR1cm4gKF9fbTI1NilfX2J1aWx0aW5faWEzMl9tYXhwczI1NigoX192OHNmKV9fYSwgKF9fdjhzZilfX2IpOwp9CgovLy8gQ29tcGFyZXMgdHdvIDI1Ni1iaXQgdmVjdG9ycyBvZiBbNCB4IGRvdWJsZV0gYW5kIHJldHVybnMgdGhlIGxlc3NlcgovLy8gICAgb2YgZWFjaCBwYWlyIG9mIHZhbHVlcy4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTUlOUEQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuCi8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZSBtaW5pbXVtIHZhbHVlcwovLy8gICAgYmV0d2VlbiBib3RoIG9wZXJhbmRzLgpzdGF0aWMgX19pbmxpbmUgX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tMjU2X21pbl9wZChfX20yNTZkIF9fYSwgX19tMjU2ZCBfX2IpCnsKICByZXR1cm4gKF9fbTI1NmQpX19idWlsdGluX2lhMzJfbWlucGQyNTYoKF9fdjRkZilfX2EsIChfX3Y0ZGYpX19iKTsKfQoKLy8vIENvbXBhcmVzIHR3byAyNTYtYml0IHZlY3RvcnMgb2YgWzggeCBmbG9hdF0gYW5kIHJldHVybnMgdGhlIGxlc3NlcgovLy8gICAgb2YgZWFjaCBwYWlyIG9mIHZhbHVlcy4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTUlOUFMgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLgovLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBtaW5pbXVtIHZhbHVlcwovLy8gICAgYmV0d2VlbiBib3RoIG9wZXJhbmRzLgpzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUwpfbW0yNTZfbWluX3BzKF9fbTI1NiBfX2EsIF9fbTI1NiBfX2IpCnsKICByZXR1cm4gKF9fbTI1NilfX2J1aWx0aW5faWEzMl9taW5wczI1NigoX192OHNmKV9fYSwgKF9fdjhzZilfX2IpOwp9CgovLy8gTXVsdGlwbGllcyB0d28gMjU2LWJpdCB2ZWN0b3JzIG9mIFs0IHggZG91YmxlXS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTVVMUEQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuCi8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZSBwcm9kdWN0cyBvZiBib3RoCi8vLyAgICBvcGVyYW5kcy4Kc3RhdGljIF9faW5saW5lIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl9tdWxfcGQoX19tMjU2ZCBfX2EsIF9fbTI1NmQgX19iKQp7CiAgcmV0dXJuIChfX20yNTZkKSgoX192NGRmKV9fYSAqIChfX3Y0ZGYpX19iKTsKfQoKLy8vIE11bHRpcGxpZXMgdHdvIDI1Ni1iaXQgdmVjdG9ycyBvZiBbOCB4IGZsb2F0XS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTVVMUFMgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLgovLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBwcm9kdWN0cyBvZiBib3RoCi8vLyAgICBvcGVyYW5kcy4Kc3RhdGljIF9faW5saW5lIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMKX21tMjU2X211bF9wcyhfX20yNTYgX19hLCBfX20yNTYgX19iKQp7CiAgcmV0dXJuIChfX20yNTYpKChfX3Y4c2YpX19hICogKF9fdjhzZilfX2IpOwp9CgovLy8gQ2FsY3VsYXRlcyB0aGUgc3F1YXJlIHJvb3RzIG9mIHRoZSB2YWx1ZXMgaW4gYSAyNTYtYml0IHZlY3RvciBvZgovLy8gICAgWzQgeCBkb3VibGVdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZTUVJUUEQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4KLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIHNxdWFyZSByb290cyBvZiB0aGUKLy8vICAgIHZhbHVlcyBpbiB0aGUgb3BlcmFuZC4Kc3RhdGljIF9faW5saW5lIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl9zcXJ0X3BkKF9fbTI1NmQgX19hKQp7CiAgcmV0dXJuIChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX3NxcnRwZDI1NigoX192NGRmKV9fYSk7Cn0KCi8vLyBDYWxjdWxhdGVzIHRoZSBzcXVhcmUgcm9vdHMgb2YgdGhlIHZhbHVlcyBpbiBhIDI1Ni1iaXQgdmVjdG9yIG9mCi8vLyAgICBbOCB4IGZsb2F0XS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWU1FSVFBTIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4KLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgc3F1YXJlIHJvb3RzIG9mIHRoZQovLy8gICAgdmFsdWVzIGluIHRoZSBvcGVyYW5kLgpzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUwpfbW0yNTZfc3FydF9wcyhfX20yNTYgX19hKQp7CiAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2lhMzJfc3FydHBzMjU2KChfX3Y4c2YpX19hKTsKfQoKLy8vIENhbGN1bGF0ZXMgdGhlIHJlY2lwcm9jYWwgc3F1YXJlIHJvb3RzIG9mIHRoZSB2YWx1ZXMgaW4gYSAyNTYtYml0Ci8vLyAgICB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlJTUVJUUFMgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLgovLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSByZWNpcHJvY2FsIHNxdWFyZQovLy8gICAgcm9vdHMgb2YgdGhlIHZhbHVlcyBpbiB0aGUgb3BlcmFuZC4Kc3RhdGljIF9faW5saW5lIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMKX21tMjU2X3JzcXJ0X3BzKF9fbTI1NiBfX2EpCnsKICByZXR1cm4gKF9fbTI1NilfX2J1aWx0aW5faWEzMl9yc3FydHBzMjU2KChfX3Y4c2YpX19hKTsKfQoKLy8vIENhbGN1bGF0ZXMgdGhlIHJlY2lwcm9jYWxzIG9mIHRoZSB2YWx1ZXMgaW4gYSAyNTYtYml0IHZlY3RvciBvZgovLy8gICAgWzggeCBmbG9hdF0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlJDUFBTIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4KLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgcmVjaXByb2NhbHMgb2YgdGhlCi8vLyAgICB2YWx1ZXMgaW4gdGhlIG9wZXJhbmQuCnN0YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl9yY3BfcHMoX19tMjU2IF9fYSkKewogIHJldHVybiAoX19tMjU2KV9fYnVpbHRpbl9pYTMyX3JjcHBzMjU2KChfX3Y4c2YpX19hKTsKfQoKLy8vIFJvdW5kcyB0aGUgdmFsdWVzIGluIGEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGFzIHNwZWNpZmllZAovLy8gICAgYnkgdGhlIGJ5dGUgb3BlcmFuZC4gVGhlIHNvdXJjZSB2YWx1ZXMgYXJlIHJvdW5kZWQgdG8gaW50ZWdlciB2YWx1ZXMgYW5kCi8vLyAgICByZXR1cm5lZCBhcyA2NC1iaXQgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFxjb2RlCi8vLyBfX20yNTZkIF9tbTI1Nl9yb3VuZF9wZChfX20yNTZkIFYsIGNvbnN0IGludCBNKTsKLy8vIFxlbmRjb2RlCi8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUk9VTkRQRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBWCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4KLy8vIFxwYXJhbSBNCi8vLyAgICBBbiBpbnRlZ2VyIHZhbHVlIHRoYXQgc3BlY2lmaWVzIHRoZSByb3VuZGluZyBvcGVyYXRpb24uIFxuCi8vLyAgICBCaXRzIFs3OjRdIGFyZSByZXNlcnZlZC4gXG4KLy8vICAgIEJpdCBbM10gaXMgYSBwcmVjaXNpb24gZXhjZXB0aW9uIHZhbHVlOiBcbgovLy8gICAgICAwOiBBIG5vcm1hbCBQRSBleGNlcHRpb24gaXMgdXNlZC4gXG4KLy8vICAgICAgMTogVGhlIFBFIGZpZWxkIGlzIG5vdCB1cGRhdGVkLiBcbgovLy8gICAgQml0IFsyXSBpcyB0aGUgcm91bmRpbmcgY29udHJvbCBzb3VyY2U6IFxuCi8vLyAgICAgIDA6IFVzZSBiaXRzIFsxOjBdIG9mIFxhIE0uIFxuCi8vLyAgICAgIDE6IFVzZSB0aGUgY3VycmVudCBNWENTUiBzZXR0aW5nLiBcbgovLy8gICAgQml0cyBbMTowXSBjb250YWluIHRoZSByb3VuZGluZyBjb250cm9sIGRlZmluaXRpb246IFxuCi8vLyAgICAgIDAwOiBOZWFyZXN0LiBcbgovLy8gICAgICAwMTogRG93bndhcmQgKHRvd2FyZCBuZWdhdGl2ZSBpbmZpbml0eSkuIFxuCi8vLyAgICAgIDEwOiBVcHdhcmQgKHRvd2FyZCBwb3NpdGl2ZSBpbmZpbml0eSkuIFxuCi8vLyAgICAgIDExOiBUcnVuY2F0ZWQuCi8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZSByb3VuZGVkIHZhbHVlcy4KI2RlZmluZSBfbW0yNTZfcm91bmRfcGQoViwgTSkgXAogICgoX19tMjU2ZClfX2J1aWx0aW5faWEzMl9yb3VuZHBkMjU2KChfX3Y0ZGYpKF9fbTI1NmQpKFYpLCAoTSkpKQoKLy8vIFJvdW5kcyB0aGUgdmFsdWVzIHN0b3JlZCBpbiBhIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGFzCi8vLyAgICBzcGVjaWZpZWQgYnkgdGhlIGJ5dGUgb3BlcmFuZC4gVGhlIHNvdXJjZSB2YWx1ZXMgYXJlIHJvdW5kZWQgdG8gaW50ZWdlcgovLy8gICAgdmFsdWVzIGFuZCByZXR1cm5lZCBhcyBmbG9hdGluZy1wb2ludCB2YWx1ZXMuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFxjb2RlCi8vLyBfX20yNTYgX21tMjU2X3JvdW5kX3BzKF9fbTI1NiBWLCBjb25zdCBpbnQgTSk7Ci8vLyBcZW5kY29kZQovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlJPVU5EUFMgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gVgovLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4KLy8vIFxwYXJhbSBNCi8vLyAgICBBbiBpbnRlZ2VyIHZhbHVlIHRoYXQgc3BlY2lmaWVzIHRoZSByb3VuZGluZyBvcGVyYXRpb24uIFxuCi8vLyAgICBCaXRzIFs3OjRdIGFyZSByZXNlcnZlZC4gXG4KLy8vICAgIEJpdCBbM10gaXMgYSBwcmVjaXNpb24gZXhjZXB0aW9uIHZhbHVlOiBcbgovLy8gICAgICAwOiBBIG5vcm1hbCBQRSBleGNlcHRpb24gaXMgdXNlZC4gXG4KLy8vICAgICAgMTogVGhlIFBFIGZpZWxkIGlzIG5vdCB1cGRhdGVkLiBcbgovLy8gICAgQml0IFsyXSBpcyB0aGUgcm91bmRpbmcgY29udHJvbCBzb3VyY2U6IFxuCi8vLyAgICAgIDA6IFVzZSBiaXRzIFsxOjBdIG9mIFxhIE0uIFxuCi8vLyAgICAgIDE6IFVzZSB0aGUgY3VycmVudCBNWENTUiBzZXR0aW5nLiBcbgovLy8gICAgQml0cyBbMTowXSBjb250YWluIHRoZSByb3VuZGluZyBjb250cm9sIGRlZmluaXRpb246IFxuCi8vLyAgICAgIDAwOiBOZWFyZXN0LiBcbgovLy8gICAgICAwMTogRG93bndhcmQgKHRvd2FyZCBuZWdhdGl2ZSBpbmZpbml0eSkuIFxuCi8vLyAgICAgIDEwOiBVcHdhcmQgKHRvd2FyZCBwb3NpdGl2ZSBpbmZpbml0eSkuIFxuCi8vLyAgICAgIDExOiBUcnVuY2F0ZWQuCi8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHJvdW5kZWQgdmFsdWVzLgojZGVmaW5lIF9tbTI1Nl9yb3VuZF9wcyhWLCBNKSBcCiAgKChfX20yNTYpX19idWlsdGluX2lhMzJfcm91bmRwczI1NigoX192OHNmKShfX20yNTYpKFYpLCAoTSkpKQoKLy8vIFJvdW5kcyB1cCB0aGUgdmFsdWVzIHN0b3JlZCBpbiBhIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4gVGhlCi8vLyAgICBzb3VyY2UgdmFsdWVzIGFyZSByb3VuZGVkIHVwIHRvIGludGVnZXIgdmFsdWVzIGFuZCByZXR1cm5lZCBhcyA2NC1iaXQKLy8vICAgIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWVzLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBcY29kZQovLy8gX19tMjU2ZCBfbW0yNTZfY2VpbF9wZChfX20yNTZkIFYpOwovLy8gXGVuZGNvZGUKLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZST1VORFBEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIFYKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLgovLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgcm91bmRlZCB1cCB2YWx1ZXMuCiNkZWZpbmUgX21tMjU2X2NlaWxfcGQoVikgIF9tbTI1Nl9yb3VuZF9wZCgoViksIF9NTV9GUk9VTkRfQ0VJTCkKCi8vLyBSb3VuZHMgZG93biB0aGUgdmFsdWVzIHN0b3JlZCBpbiBhIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4KLy8vICAgIFRoZSBzb3VyY2UgdmFsdWVzIGFyZSByb3VuZGVkIGRvd24gdG8gaW50ZWdlciB2YWx1ZXMgYW5kIHJldHVybmVkIGFzCi8vLyAgICA2NC1iaXQgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFxjb2RlCi8vLyBfX20yNTZkIF9tbTI1Nl9mbG9vcl9wZChfX20yNTZkIFYpOwovLy8gXGVuZGNvZGUKLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZST1VORFBEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIFYKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLgovLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgcm91bmRlZCBkb3duCi8vLyAgICB2YWx1ZXMuCiNkZWZpbmUgX21tMjU2X2Zsb29yX3BkKFYpIF9tbTI1Nl9yb3VuZF9wZCgoViksIF9NTV9GUk9VTkRfRkxPT1IpCgovLy8gUm91bmRzIHVwIHRoZSB2YWx1ZXMgc3RvcmVkIGluIGEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uIFRoZQovLy8gICAgc291cmNlIHZhbHVlcyBhcmUgcm91bmRlZCB1cCB0byBpbnRlZ2VyIHZhbHVlcyBhbmQgcmV0dXJuZWQgYXMKLy8vICAgIGZsb2F0aW5nLXBvaW50IHZhbHVlcy4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gXGNvZGUKLy8vIF9fbTI1NiBfbW0yNTZfY2VpbF9wcyhfX20yNTYgVik7Ci8vLyBcZW5kY29kZQovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlJPVU5EUFMgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gVgovLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4KLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgcm91bmRlZCB1cCB2YWx1ZXMuCiNkZWZpbmUgX21tMjU2X2NlaWxfcHMoVikgIF9tbTI1Nl9yb3VuZF9wcygoViksIF9NTV9GUk9VTkRfQ0VJTCkKCi8vLyBSb3VuZHMgZG93biB0aGUgdmFsdWVzIHN0b3JlZCBpbiBhIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLiBUaGUKLy8vICAgIHNvdXJjZSB2YWx1ZXMgYXJlIHJvdW5kZWQgZG93biB0byBpbnRlZ2VyIHZhbHVlcyBhbmQgcmV0dXJuZWQgYXMKLy8vICAgIGZsb2F0aW5nLXBvaW50IHZhbHVlcy4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gXGNvZGUKLy8vIF9fbTI1NiBfbW0yNTZfZmxvb3JfcHMoX19tMjU2IFYpOwovLy8gXGVuZGNvZGUKLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZST1VORFBTIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIFYKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uCi8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHJvdW5kZWQgZG93biB2YWx1ZXMuCiNkZWZpbmUgX21tMjU2X2Zsb29yX3BzKFYpIF9tbTI1Nl9yb3VuZF9wcygoViksIF9NTV9GUk9VTkRfRkxPT1IpCgovKiBMb2dpY2FsICovCi8vLyBQZXJmb3JtcyBhIGJpdHdpc2UgQU5EIG9mIHR3byAyNTYtYml0IHZlY3RvcnMgb2YgWzQgeCBkb3VibGVdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZBTkRQRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLgovLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgYml0d2lzZSBBTkQgb2YgdGhlCi8vLyAgICB2YWx1ZXMgYmV0d2VlbiBib3RoIG9wZXJhbmRzLgpzdGF0aWMgX19pbmxpbmUgX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tMjU2X2FuZF9wZChfX20yNTZkIF9fYSwgX19tMjU2ZCBfX2IpCnsKICByZXR1cm4gKF9fbTI1NmQpKChfX3Y0ZHUpX19hICYgKF9fdjRkdSlfX2IpOwp9CgovLy8gUGVyZm9ybXMgYSBiaXR3aXNlIEFORCBvZiB0d28gMjU2LWJpdCB2ZWN0b3JzIG9mIFs4IHggZmxvYXRdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZBTkRQUyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4KLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgYml0d2lzZSBBTkQgb2YgdGhlCi8vLyAgICB2YWx1ZXMgYmV0d2VlbiBib3RoIG9wZXJhbmRzLgpzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUwpfbW0yNTZfYW5kX3BzKF9fbTI1NiBfX2EsIF9fbTI1NiBfX2IpCnsKICByZXR1cm4gKF9fbTI1NikoKF9fdjhzdSlfX2EgJiAoX192OHN1KV9fYik7Cn0KCi8vLyBQZXJmb3JtcyBhIGJpdHdpc2UgQU5EIG9mIHR3byAyNTYtYml0IHZlY3RvcnMgb2YgWzQgeCBkb3VibGVdLCB1c2luZwovLy8gICAgdGhlIG9uZSdzIGNvbXBsZW1lbnQgb2YgdGhlIHZhbHVlcyBjb250YWluZWQgaW4gdGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZBTkROUEQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZSBsZWZ0IHNvdXJjZSBvcGVyYW5kLiBUaGUKLy8vICAgIG9uZSdzIGNvbXBsZW1lbnQgb2YgdGhpcyB2YWx1ZSBpcyB1c2VkIGluIHRoZSBiaXR3aXNlIEFORC4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIHJpZ2h0IHNvdXJjZSBvcGVyYW5kLgovLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgYml0d2lzZSBBTkQgb2YgdGhlCi8vLyAgICB2YWx1ZXMgb2YgdGhlIHNlY29uZCBvcGVyYW5kIGFuZCB0aGUgb25lJ3MgY29tcGxlbWVudCBvZiB0aGUgZmlyc3QKLy8vICAgIG9wZXJhbmQuCnN0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW0yNTZfYW5kbm90X3BkKF9fbTI1NmQgX19hLCBfX20yNTZkIF9fYikKewogIHJldHVybiAoX19tMjU2ZCkofihfX3Y0ZHUpX19hICYgKF9fdjRkdSlfX2IpOwp9CgovLy8gUGVyZm9ybXMgYSBiaXR3aXNlIEFORCBvZiB0d28gMjU2LWJpdCB2ZWN0b3JzIG9mIFs4IHggZmxvYXRdLCB1c2luZwovLy8gICAgdGhlIG9uZSdzIGNvbXBsZW1lbnQgb2YgdGhlIHZhbHVlcyBjb250YWluZWQgaW4gdGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZBTkROUFMgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGxlZnQgc291cmNlIG9wZXJhbmQuIFRoZQovLy8gICAgb25lJ3MgY29tcGxlbWVudCBvZiB0aGlzIHZhbHVlIGlzIHVzZWQgaW4gdGhlIGJpdHdpc2UgQU5ELgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSByaWdodCBzb3VyY2Ugb3BlcmFuZC4KLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgYml0d2lzZSBBTkQgb2YgdGhlCi8vLyAgICB2YWx1ZXMgb2YgdGhlIHNlY29uZCBvcGVyYW5kIGFuZCB0aGUgb25lJ3MgY29tcGxlbWVudCBvZiB0aGUgZmlyc3QKLy8vICAgIG9wZXJhbmQuCnN0YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl9hbmRub3RfcHMoX19tMjU2IF9fYSwgX19tMjU2IF9fYikKewogIHJldHVybiAoX19tMjU2KSh+KF9fdjhzdSlfX2EgJiAoX192OHN1KV9fYik7Cn0KCi8vLyBQZXJmb3JtcyBhIGJpdHdpc2UgT1Igb2YgdHdvIDI1Ni1iaXQgdmVjdG9ycyBvZiBbNCB4IGRvdWJsZV0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk9SUEQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4KLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGJpdHdpc2UgT1Igb2YgdGhlCi8vLyAgICB2YWx1ZXMgYmV0d2VlbiBib3RoIG9wZXJhbmRzLgpzdGF0aWMgX19pbmxpbmUgX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tMjU2X29yX3BkKF9fbTI1NmQgX19hLCBfX20yNTZkIF9fYikKewogIHJldHVybiAoX19tMjU2ZCkoKF9fdjRkdSlfX2EgfCAoX192NGR1KV9fYik7Cn0KCi8vLyBQZXJmb3JtcyBhIGJpdHdpc2UgT1Igb2YgdHdvIDI1Ni1iaXQgdmVjdG9ycyBvZiBbOCB4IGZsb2F0XS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWT1JQUyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4KLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgYml0d2lzZSBPUiBvZiB0aGUKLy8vICAgIHZhbHVlcyBiZXR3ZWVuIGJvdGggb3BlcmFuZHMuCnN0YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl9vcl9wcyhfX20yNTYgX19hLCBfX20yNTYgX19iKQp7CiAgcmV0dXJuIChfX20yNTYpKChfX3Y4c3UpX19hIHwgKF9fdjhzdSlfX2IpOwp9CgovLy8gUGVyZm9ybXMgYSBiaXR3aXNlIFhPUiBvZiB0d28gMjU2LWJpdCB2ZWN0b3JzIG9mIFs0IHggZG91YmxlXS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWWE9SUEQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4KLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGJpdHdpc2UgWE9SIG9mIHRoZQovLy8gICAgdmFsdWVzIGJldHdlZW4gYm90aCBvcGVyYW5kcy4Kc3RhdGljIF9faW5saW5lIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl94b3JfcGQoX19tMjU2ZCBfX2EsIF9fbTI1NmQgX19iKQp7CiAgcmV0dXJuIChfX20yNTZkKSgoX192NGR1KV9fYSBeIChfX3Y0ZHUpX19iKTsKfQoKLy8vIFBlcmZvcm1zIGEgYml0d2lzZSBYT1Igb2YgdHdvIDI1Ni1iaXQgdmVjdG9ycyBvZiBbOCB4IGZsb2F0XS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWWE9SUFMgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuCi8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGJpdHdpc2UgWE9SIG9mIHRoZQovLy8gICAgdmFsdWVzIGJldHdlZW4gYm90aCBvcGVyYW5kcy4Kc3RhdGljIF9faW5saW5lIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMKX21tMjU2X3hvcl9wcyhfX20yNTYgX19hLCBfX20yNTYgX19iKQp7CiAgcmV0dXJuIChfX20yNTYpKChfX3Y4c3UpX19hIF4gKF9fdjhzdSlfX2IpOwp9CgovKiBIb3Jpem9udGFsIGFyaXRobWV0aWMgKi8KLy8vIEhvcml6b250YWxseSBhZGRzIHRoZSBhZGphY2VudCBwYWlycyBvZiB2YWx1ZXMgY29udGFpbmVkIGluIHR3bwovLy8gICAgMjU2LWJpdCB2ZWN0b3JzIG9mIFs0IHggZG91YmxlXS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWSEFERFBEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4KLy8vICAgIFRoZSBob3Jpem9udGFsIHN1bXMgb2YgdGhlIHZhbHVlcyBhcmUgcmV0dXJuZWQgaW4gdGhlIGV2ZW4taW5kZXhlZAovLy8gICAgZWxlbWVudHMgb2YgYSB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4KLy8vICAgIFRoZSBob3Jpem9udGFsIHN1bXMgb2YgdGhlIHZhbHVlcyBhcmUgcmV0dXJuZWQgaW4gdGhlIG9kZC1pbmRleGVkCi8vLyAgICBlbGVtZW50cyBvZiBhIHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uCi8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZSBob3Jpem9udGFsIHN1bXMgb2YKLy8vICAgIGJvdGggb3BlcmFuZHMuCnN0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW0yNTZfaGFkZF9wZChfX20yNTZkIF9fYSwgX19tMjU2ZCBfX2IpCnsKICByZXR1cm4gKF9fbTI1NmQpX19idWlsdGluX2lhMzJfaGFkZHBkMjU2KChfX3Y0ZGYpX19hLCAoX192NGRmKV9fYik7Cn0KCi8vLyBIb3Jpem9udGFsbHkgYWRkcyB0aGUgYWRqYWNlbnQgcGFpcnMgb2YgdmFsdWVzIGNvbnRhaW5lZCBpbiB0d28KLy8vICAgIDI1Ni1iaXQgdmVjdG9ycyBvZiBbOCB4IGZsb2F0XS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWSEFERFBTIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLgovLy8gICAgVGhlIGhvcml6b250YWwgc3VtcyBvZiB0aGUgdmFsdWVzIGFyZSByZXR1cm5lZCBpbiB0aGUgZWxlbWVudHMgd2l0aAovLy8gICAgaW5kZXggMCwgMSwgNCwgNSBvZiBhIHZlY3RvciBvZiBbOCB4IGZsb2F0XS4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4KLy8vICAgIFRoZSBob3Jpem9udGFsIHN1bXMgb2YgdGhlIHZhbHVlcyBhcmUgcmV0dXJuZWQgaW4gdGhlIGVsZW1lbnRzIHdpdGgKLy8vICAgIGluZGV4IDIsIDMsIDYsIDcgb2YgYSB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uCi8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGhvcml6b250YWwgc3VtcyBvZgovLy8gICAgYm90aCBvcGVyYW5kcy4Kc3RhdGljIF9faW5saW5lIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMKX21tMjU2X2hhZGRfcHMoX19tMjU2IF9fYSwgX19tMjU2IF9fYikKewogIHJldHVybiAoX19tMjU2KV9fYnVpbHRpbl9pYTMyX2hhZGRwczI1NigoX192OHNmKV9fYSwgKF9fdjhzZilfX2IpOwp9CgovLy8gSG9yaXpvbnRhbGx5IHN1YnRyYWN0cyB0aGUgYWRqYWNlbnQgcGFpcnMgb2YgdmFsdWVzIGNvbnRhaW5lZCBpbiB0d28KLy8vICAgIDI1Ni1iaXQgdmVjdG9ycyBvZiBbNCB4IGRvdWJsZV0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkhTVUJQRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuCi8vLyAgICBUaGUgaG9yaXpvbnRhbCBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSB2YWx1ZXMgYXJlIHJldHVybmVkIGluIHRoZQovLy8gICAgZXZlbi1pbmRleGVkIGVsZW1lbnRzIG9mIGEgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuCi8vLyAgICBUaGUgaG9yaXpvbnRhbCBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSB2YWx1ZXMgYXJlIHJldHVybmVkIGluIHRoZQovLy8gICAgb2RkLWluZGV4ZWQgZWxlbWVudHMgb2YgYSB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLgovLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgaG9yaXpvbnRhbAovLy8gICAgZGlmZmVyZW5jZXMgb2YgYm90aCBvcGVyYW5kcy4Kc3RhdGljIF9faW5saW5lIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl9oc3ViX3BkKF9fbTI1NmQgX19hLCBfX20yNTZkIF9fYikKewogIHJldHVybiAoX19tMjU2ZClfX2J1aWx0aW5faWEzMl9oc3VicGQyNTYoKF9fdjRkZilfX2EsIChfX3Y0ZGYpX19iKTsKfQoKLy8vIEhvcml6b250YWxseSBzdWJ0cmFjdHMgdGhlIGFkamFjZW50IHBhaXJzIG9mIHZhbHVlcyBjb250YWluZWQgaW4gdHdvCi8vLyAgICAyNTYtYml0IHZlY3RvcnMgb2YgWzggeCBmbG9hdF0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkhTVUJQUyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4KLy8vICAgIFRoZSBob3Jpem9udGFsIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHZhbHVlcyBhcmUgcmV0dXJuZWQgaW4gdGhlCi8vLyAgICBlbGVtZW50cyB3aXRoIGluZGV4IDAsIDEsIDQsIDUgb2YgYSB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuCi8vLyAgICBUaGUgaG9yaXpvbnRhbCBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSB2YWx1ZXMgYXJlIHJldHVybmVkIGluIHRoZQovLy8gICAgZWxlbWVudHMgd2l0aCBpbmRleCAyLCAzLCA2LCA3IG9mIGEgdmVjdG9yIG9mIFs4IHggZmxvYXRdLgovLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBob3Jpem9udGFsCi8vLyAgICBkaWZmZXJlbmNlcyBvZiBib3RoIG9wZXJhbmRzLgpzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUwpfbW0yNTZfaHN1Yl9wcyhfX20yNTYgX19hLCBfX20yNTYgX19iKQp7CiAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2lhMzJfaHN1YnBzMjU2KChfX3Y4c2YpX19hLCAoX192OHNmKV9fYik7Cn0KCi8qIFZlY3RvciBwZXJtdXRhdGlvbnMgKi8KLy8vIENvcGllcyB0aGUgdmFsdWVzIGluIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGFzIHNwZWNpZmllZAovLy8gICAgYnkgdGhlIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb3BlcmFuZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEVSTUlMUEQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4KLy8vIFxwYXJhbSBfX2MKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvcGVyYW5kIHNwZWNpZnlpbmcgaG93IHRoZSB2YWx1ZXMgYXJlIHRvIGJlCi8vLyAgICBjb3BpZWQuIFxuCi8vLyAgICBCaXQgWzFdOiBcbgovLy8gICAgICAwOiBCaXRzIFs2MzowXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbNjM6MF0gb2YgdGhlIHJldHVybmVkCi8vLyAgICAgICAgIHZlY3Rvci4gXG4KLy8vICAgICAgMTogQml0cyBbMTI3OjY0XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbNjM6MF0gb2YgdGhlCi8vLyAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4KLy8vICAgIEJpdCBbNjVdOiBcbgovLy8gICAgICAwOiBCaXRzIFs2MzowXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMTI3OjY0XSBvZiB0aGUKLy8vICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbgovLy8gICAgICAxOiBCaXRzIFsxMjc6NjRdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6NjRdIG9mIHRoZQovLy8gICAgICAgICByZXR1cm5lZCB2ZWN0b3IuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBjb3BpZWQgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmUgX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX3Blcm11dGV2YXJfcGQoX19tMTI4ZCBfX2EsIF9fbTEyOGkgX19jKQp7CiAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3ZwZXJtaWx2YXJwZCgoX192MmRmKV9fYSwgKF9fdjJkaSlfX2MpOwp9CgovLy8gQ29waWVzIHRoZSB2YWx1ZXMgaW4gYSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gYXMgc3BlY2lmaWVkCi8vLyAgICBieSB0aGUgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBvcGVyYW5kLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQRVJNSUxQRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLgovLy8gXHBhcmFtIF9fYwovLy8gICAgQSAyNTYtYml0IGludGVnZXIgdmVjdG9yIG9wZXJhbmQgc3BlY2lmeWluZyBob3cgdGhlIHZhbHVlcyBhcmUgdG8gYmUKLy8vICAgIGNvcGllZC4gXG4KLy8vICAgIEJpdCBbMV06IFxuCi8vLyAgICAgIDA6IEJpdHMgWzYzOjBdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFs2MzowXSBvZiB0aGUgcmV0dXJuZWQKLy8vICAgICAgICAgdmVjdG9yLiBcbgovLy8gICAgICAxOiBCaXRzIFsxMjc6NjRdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFs2MzowXSBvZiB0aGUKLy8vICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbgovLy8gICAgQml0IFs2NV06IFxuCi8vLyAgICAgIDA6IEJpdHMgWzYzOjBdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6NjRdIG9mIHRoZQovLy8gICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuCi8vLyAgICAgIDE6IEJpdHMgWzEyNzo2NF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzo2NF0gb2YgdGhlCi8vLyAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4KLy8vICAgIEJpdCBbMTI5XTogXG4KLy8vICAgICAgMDogQml0cyBbMTkxOjEyOF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzE5MToxMjhdIG9mIHRoZQovLy8gICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuCi8vLyAgICAgIDE6IEJpdHMgWzI1NToxOTJdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxOTE6MTI4XSBvZiB0aGUKLy8vICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbgovLy8gICAgQml0IFsxOTNdOiBcbgovLy8gICAgICAwOiBCaXRzIFsxOTE6MTI4XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMjU1OjE5Ml0gb2YgdGhlCi8vLyAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4KLy8vICAgICAgMTogQml0cyBbMjU1OjE5Ml0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzI1NToxOTJdIG9mIHRoZQovLy8gICAgcmV0dXJuZWQgdmVjdG9yLgovLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgY29waWVkIHZhbHVlcy4Kc3RhdGljIF9faW5saW5lIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl9wZXJtdXRldmFyX3BkKF9fbTI1NmQgX19hLCBfX20yNTZpIF9fYykKewogIHJldHVybiAoX19tMjU2ZClfX2J1aWx0aW5faWEzMl92cGVybWlsdmFycGQyNTYoKF9fdjRkZilfX2EsIChfX3Y0ZGkpX19jKTsKfQoKLy8vIENvcGllcyB0aGUgdmFsdWVzIHN0b3JlZCBpbiBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGFzCi8vLyAgICBzcGVjaWZpZWQgYnkgdGhlIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb3BlcmFuZC4KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQRVJNSUxQUyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uCi8vLyBccGFyYW0gX19jCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb3BlcmFuZCBzcGVjaWZ5aW5nIGhvdyB0aGUgdmFsdWVzIGFyZSB0byBiZQovLy8gICAgY29waWVkLiBcbgovLy8gICAgQml0cyBbMTowXTogXG4KLy8vICAgICAgMDA6IEJpdHMgWzMxOjBdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFszMTowXSBvZiB0aGUKLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4KLy8vICAgICAgMDE6IEJpdHMgWzYzOjMyXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMzE6MF0gb2YgdGhlCi8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuCi8vLyAgICAgIDEwOiBCaXRzIFs5NTo2NF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzMxOjBdIG9mIHRoZQovLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbgovLy8gICAgICAxMTogQml0cyBbMTI3Ojk2XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMzE6MF0gb2YgdGhlCi8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuCi8vLyAgICBCaXRzIFszMzozMl06IFxuCi8vLyAgICAgIDAwOiBCaXRzIFszMTowXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbNjM6MzJdIG9mIHRoZQovLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbgovLy8gICAgICAwMTogQml0cyBbNjM6MzJdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFs2MzozMl0gb2YgdGhlCi8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuCi8vLyAgICAgIDEwOiBCaXRzIFs5NTo2NF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzYzOjMyXSBvZiB0aGUKLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4KLy8vICAgICAgMTE6IEJpdHMgWzEyNzo5Nl0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzYzOjMyXSBvZiB0aGUKLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4KLy8vICAgIEJpdHMgWzY1OjY0XTogXG4KLy8vICAgICAgMDA6IEJpdHMgWzMxOjBdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFs5NTo2NF0gb2YgdGhlCi8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuCi8vLyAgICAgIDAxOiBCaXRzIFs2MzozMl0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzk1OjY0XSBvZiB0aGUKLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4KLy8vICAgICAgMTA6IEJpdHMgWzk1OjY0XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbOTU6NjRdIG9mIHRoZQovLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbgovLy8gICAgICAxMTogQml0cyBbMTI3Ojk2XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbOTU6NjRdIG9mIHRoZQovLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbgovLy8gICAgQml0cyBbOTc6OTZdOiBcbgovLy8gICAgICAwMDogQml0cyBbMzE6MF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzo5Nl0gb2YgdGhlCi8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuCi8vLyAgICAgIDAxOiBCaXRzIFs2MzozMl0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzo5Nl0gb2YgdGhlCi8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuCi8vLyAgICAgIDEwOiBCaXRzIFs5NTo2NF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzo5Nl0gb2YgdGhlCi8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuCi8vLyAgICAgIDExOiBCaXRzIFsxMjc6OTZdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6OTZdIG9mIHRoZQovLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb3BpZWQgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmUgX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fcGVybXV0ZXZhcl9wcyhfX20xMjggX19hLCBfX20xMjhpIF9fYykKewogIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3ZwZXJtaWx2YXJwcygoX192NHNmKV9fYSwgKF9fdjRzaSlfX2MpOwp9CgovLy8gQ29waWVzIHRoZSB2YWx1ZXMgc3RvcmVkIGluIGEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gYXMKLy8vICAgIHNwZWNpZmllZCBieSB0aGUgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBvcGVyYW5kLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQRVJNSUxQUyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uCi8vLyBccGFyYW0gX19jCi8vLyAgICBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3Igb3BlcmFuZCBzcGVjaWZ5aW5nIGhvdyB0aGUgdmFsdWVzIGFyZSB0byBiZQovLy8gICAgY29waWVkLiBcbgovLy8gICAgQml0cyBbMTowXTogXG4KLy8vICAgICAgMDA6IEJpdHMgWzMxOjBdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFszMTowXSBvZiB0aGUKLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4KLy8vICAgICAgMDE6IEJpdHMgWzYzOjMyXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMzE6MF0gb2YgdGhlCi8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuCi8vLyAgICAgIDEwOiBCaXRzIFs5NTo2NF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzMxOjBdIG9mIHRoZQovLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbgovLy8gICAgICAxMTogQml0cyBbMTI3Ojk2XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMzE6MF0gb2YgdGhlCi8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuCi8vLyAgICBCaXRzIFszMzozMl06IFxuCi8vLyAgICAgIDAwOiBCaXRzIFszMTowXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbNjM6MzJdIG9mIHRoZQovLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbgovLy8gICAgICAwMTogQml0cyBbNjM6MzJdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFs2MzozMl0gb2YgdGhlCi8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuCi8vLyAgICAgIDEwOiBCaXRzIFs5NTo2NF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzYzOjMyXSBvZiB0aGUKLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4KLy8vICAgICAgMTE6IEJpdHMgWzEyNzo5Nl0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzYzOjMyXSBvZiB0aGUKLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4KLy8vICAgIEJpdHMgWzY1OjY0XTogXG4KLy8vICAgICAgMDA6IEJpdHMgWzMxOjBdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFs5NTo2NF0gb2YgdGhlCi8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuCi8vLyAgICAgIDAxOiBCaXRzIFs2MzozMl0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzk1OjY0XSBvZiB0aGUKLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4KLy8vICAgICAgMTA6IEJpdHMgWzk1OjY0XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbOTU6NjRdIG9mIHRoZQovLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbgovLy8gICAgICAxMTogQml0cyBbMTI3Ojk2XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbOTU6NjRdIG9mIHRoZQovLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbgovLy8gICAgQml0cyBbOTc6OTZdOiBcbgovLy8gICAgICAwMDogQml0cyBbMzE6MF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzo5Nl0gb2YgdGhlCi8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuCi8vLyAgICAgIDAxOiBCaXRzIFs2MzozMl0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzo5Nl0gb2YgdGhlCi8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuCi8vLyAgICAgIDEwOiBCaXRzIFs5NTo2NF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzo5Nl0gb2YgdGhlCi8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuCi8vLyAgICAgIDExOiBCaXRzIFsxMjc6OTZdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6OTZdIG9mIHRoZQovLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbgovLy8gICAgQml0cyBbMTI5OjEyOF06IFxuCi8vLyAgICAgIDAwOiBCaXRzIFsxNTk6MTI4XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMTU5OjEyOF0gb2YgdGhlCi8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuCi8vLyAgICAgIDAxOiBCaXRzIFsxOTE6MTYwXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMTU5OjEyOF0gb2YgdGhlCi8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuCi8vLyAgICAgIDEwOiBCaXRzIFsyMjM6MTkyXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMTU5OjEyOF0gb2YgdGhlCi8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuCi8vLyAgICAgIDExOiBCaXRzIFsyNTU6MjI0XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMTU5OjEyOF0gb2YgdGhlCi8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuCi8vLyAgICBCaXRzIFsxNjE6MTYwXTogXG4KLy8vICAgICAgMDA6IEJpdHMgWzE1OToxMjhdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxOTE6MTYwXSBvZiB0aGUKLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4KLy8vICAgICAgMDE6IEJpdHMgWzE5MToxNjBdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxOTE6MTYwXSBvZiB0aGUKLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4KLy8vICAgICAgMTA6IEJpdHMgWzIyMzoxOTJdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxOTE6MTYwXSBvZiB0aGUKLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4KLy8vICAgICAgMTE6IEJpdHMgWzI1NToyMjRdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxOTE6MTYwXSBvZiB0aGUKLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4KLy8vICAgIEJpdHMgWzE5MzoxOTJdOiBcbgovLy8gICAgICAwMDogQml0cyBbMTU5OjEyOF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzIyMzoxOTJdIG9mIHRoZQovLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbgovLy8gICAgICAwMTogQml0cyBbMTkxOjE2MF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzIyMzoxOTJdIG9mIHRoZQovLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbgovLy8gICAgICAxMDogQml0cyBbMjIzOjE5Ml0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzIyMzoxOTJdIG9mIHRoZQovLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbgovLy8gICAgICAxMTogQml0cyBbMjU1OjIyNF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzIyMzoxOTJdIG9mIHRoZQovLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbgovLy8gICAgQml0cyBbMjI1OjIyNF06IFxuCi8vLyAgICAgIDAwOiBCaXRzIFsxNTk6MTI4XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMjU1OjIyNF0gb2YgdGhlCi8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuCi8vLyAgICAgIDAxOiBCaXRzIFsxOTE6MTYwXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMjU1OjIyNF0gb2YgdGhlCi8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuCi8vLyAgICAgIDEwOiBCaXRzIFsyMjM6MTkyXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMjU1OjIyNF0gb2YgdGhlCi8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuCi8vLyAgICAgIDExOiBCaXRzIFsyNTU6MjI0XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMjU1OjIyNF0gb2YgdGhlCi8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuCi8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvcGllZCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl9wZXJtdXRldmFyX3BzKF9fbTI1NiBfX2EsIF9fbTI1NmkgX19jKQp7CiAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2lhMzJfdnBlcm1pbHZhcnBzMjU2KChfX3Y4c2YpX19hLCAoX192OHNpKV9fYyk7Cn0KCi8vLyBDb3BpZXMgdGhlIHZhbHVlcyBpbiBhIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBhcyBzcGVjaWZpZWQKLy8vICAgIGJ5IHRoZSBpbW1lZGlhdGUgaW50ZWdlciBvcGVyYW5kLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBcY29kZQovLy8gX19tMTI4ZCBfbW1fcGVybXV0ZV9wZChfX20xMjhkIEEsIGNvbnN0IGludCBDKTsKLy8vIFxlbmRjb2RlCi8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEVSTUlMUEQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gQQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uCi8vLyBccGFyYW0gQwovLy8gICAgQW4gaW1tZWRpYXRlIGludGVnZXIgb3BlcmFuZCBzcGVjaWZ5aW5nIGhvdyB0aGUgdmFsdWVzIGFyZSB0byBiZQovLy8gICAgY29waWVkLiBcbgovLy8gICAgQml0IFswXTogXG4KLy8vICAgICAgMDogQml0cyBbNjM6MF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzYzOjBdIG9mIHRoZSByZXR1cm5lZAovLy8gICAgICAgICB2ZWN0b3IuIFxuCi8vLyAgICAgIDE6IEJpdHMgWzEyNzo2NF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzYzOjBdIG9mIHRoZQovLy8gICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuCi8vLyAgICBCaXQgWzFdOiBcbgovLy8gICAgICAwOiBCaXRzIFs2MzowXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMTI3OjY0XSBvZiB0aGUKLy8vICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbgovLy8gICAgICAxOiBCaXRzIFsxMjc6NjRdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6NjRdIG9mIHRoZQovLy8gICAgICAgICByZXR1cm5lZCB2ZWN0b3IuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBjb3BpZWQgdmFsdWVzLgojZGVmaW5lIF9tbV9wZXJtdXRlX3BkKEEsIEMpIFwKICAoKF9fbTEyOGQpX19idWlsdGluX2lhMzJfdnBlcm1pbHBkKChfX3YyZGYpKF9fbTEyOGQpKEEpLCAoaW50KShDKSkpCgovLy8gQ29waWVzIHRoZSB2YWx1ZXMgaW4gYSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gYXMgc3BlY2lmaWVkIGJ5Ci8vLyAgICB0aGUgaW1tZWRpYXRlIGludGVnZXIgb3BlcmFuZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gXGNvZGUKLy8vIF9fbTI1NmQgX21tMjU2X3Blcm11dGVfcGQoX19tMjU2ZCBBLCBjb25zdCBpbnQgQyk7Ci8vLyBcZW5kY29kZQovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBFUk1JTFBEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIEEKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLgovLy8gXHBhcmFtIEMKLy8vICAgIEFuIGltbWVkaWF0ZSBpbnRlZ2VyIG9wZXJhbmQgc3BlY2lmeWluZyBob3cgdGhlIHZhbHVlcyBhcmUgdG8gYmUKLy8vICAgIGNvcGllZC4gXG4KLy8vICAgIEJpdCBbMF06IFxuCi8vLyAgICAgIDA6IEJpdHMgWzYzOjBdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFs2MzowXSBvZiB0aGUgcmV0dXJuZWQKLy8vICAgICAgICAgdmVjdG9yLiBcbgovLy8gICAgICAxOiBCaXRzIFsxMjc6NjRdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFs2MzowXSBvZiB0aGUKLy8vICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbgovLy8gICAgQml0IFsxXTogXG4KLy8vICAgICAgMDogQml0cyBbNjM6MF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzo2NF0gb2YgdGhlCi8vLyAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4KLy8vICAgICAgMTogQml0cyBbMTI3OjY0XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMTI3OjY0XSBvZiB0aGUKLy8vICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbgovLy8gICAgQml0IFsyXTogXG4KLy8vICAgICAgMDogQml0cyBbMTkxOjEyOF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzE5MToxMjhdIG9mIHRoZQovLy8gICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuCi8vLyAgICAgIDE6IEJpdHMgWzI1NToxOTJdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxOTE6MTI4XSBvZiB0aGUKLy8vICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbgovLy8gICAgQml0IFszXTogXG4KLy8vICAgICAgMDogQml0cyBbMTkxOjEyOF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzI1NToxOTJdIG9mIHRoZQovLy8gICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuCi8vLyAgICAgIDE6IEJpdHMgWzI1NToxOTJdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsyNTU6MTkyXSBvZiB0aGUKLy8vICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLgovLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgY29waWVkIHZhbHVlcy4KI2RlZmluZSBfbW0yNTZfcGVybXV0ZV9wZChBLCBDKSBcCiAgKChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX3ZwZXJtaWxwZDI1NigoX192NGRmKShfX20yNTZkKShBKSwgKGludCkoQykpKQoKLy8vIENvcGllcyB0aGUgdmFsdWVzIGluIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gYXMgc3BlY2lmaWVkIGJ5Ci8vLyAgICB0aGUgaW1tZWRpYXRlIGludGVnZXIgb3BlcmFuZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gXGNvZGUKLy8vIF9fbTEyOCBfbW1fcGVybXV0ZV9wcyhfX20xMjggQSwgY29uc3QgaW50IEMpOwovLy8gXGVuZGNvZGUKLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQRVJNSUxQUyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBBCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLgovLy8gXHBhcmFtIEMKLy8vICAgIEFuIGltbWVkaWF0ZSBpbnRlZ2VyIG9wZXJhbmQgc3BlY2lmeWluZyBob3cgdGhlIHZhbHVlcyBhcmUgdG8gYmUKLy8vICAgIGNvcGllZC4gXG4KLy8vICAgIEJpdHMgWzE6MF06IFxuCi8vLyAgICAgIDAwOiBCaXRzIFszMTowXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMzE6MF0gb2YgdGhlCi8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuCi8vLyAgICAgIDAxOiBCaXRzIFs2MzozMl0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzMxOjBdIG9mIHRoZQovLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbgovLy8gICAgICAxMDogQml0cyBbOTU6NjRdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFszMTowXSBvZiB0aGUKLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4KLy8vICAgICAgMTE6IEJpdHMgWzEyNzo5Nl0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzMxOjBdIG9mIHRoZQovLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbgovLy8gICAgQml0cyBbMzoyXTogXG4KLy8vICAgICAgMDA6IEJpdHMgWzMxOjBdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFs2MzozMl0gb2YgdGhlCi8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuCi8vLyAgICAgIDAxOiBCaXRzIFs2MzozMl0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzYzOjMyXSBvZiB0aGUKLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4KLy8vICAgICAgMTA6IEJpdHMgWzk1OjY0XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbNjM6MzJdIG9mIHRoZQovLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbgovLy8gICAgICAxMTogQml0cyBbMTI3Ojk2XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbNjM6MzJdIG9mIHRoZQovLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbgovLy8gICAgQml0cyBbNTo0XTogXG4KLy8vICAgICAgMDA6IEJpdHMgWzMxOjBdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFs5NTo2NF0gb2YgdGhlCi8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuCi8vLyAgICAgIDAxOiBCaXRzIFs2MzozMl0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzk1OjY0XSBvZiB0aGUKLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4KLy8vICAgICAgMTA6IEJpdHMgWzk1OjY0XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbOTU6NjRdIG9mIHRoZQovLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbgovLy8gICAgICAxMTogQml0cyBbMTI3Ojk2XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbOTU6NjRdIG9mIHRoZQovLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbgovLy8gICAgQml0cyBbNzo2XTogXG4KLy8vICAgICAgMDA6IEJpdHMgWzMxOjBdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6OTZdIG9mIHRoZQovLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbgovLy8gICAgICAwMTogQml0cyBbNjM6MzJdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6OTZdIG9mIHRoZQovLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbgovLy8gICAgICAxMDogQml0cyBbOTU6NjRdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6OTZdIG9mIHRoZQovLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbgovLy8gICAgICAxMTogQml0cyBbMTI3Ojk2XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMTI3Ojk2XSBvZiB0aGUKLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29waWVkIHZhbHVlcy4KI2RlZmluZSBfbW1fcGVybXV0ZV9wcyhBLCBDKSBcCiAgKChfX20xMjgpX19idWlsdGluX2lhMzJfdnBlcm1pbHBzKChfX3Y0c2YpKF9fbTEyOCkoQSksIChpbnQpKEMpKSkKCi8vLyBDb3BpZXMgdGhlIHZhbHVlcyBpbiBhIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGFzIHNwZWNpZmllZCBieQovLy8gICAgdGhlIGltbWVkaWF0ZSBpbnRlZ2VyIG9wZXJhbmQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFxjb2RlCi8vLyBfX20yNTYgX21tMjU2X3Blcm11dGVfcHMoX19tMjU2IEEsIGNvbnN0IGludCBDKTsKLy8vIFxlbmRjb2RlCi8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEVSTUlMUFMgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gQQovLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4KLy8vIFxwYXJhbSBDCi8vLyAgICBBbiBpbW1lZGlhdGUgaW50ZWdlciBvcGVyYW5kIHNwZWNpZnlpbmcgaG93IHRoZSB2YWx1ZXMgYXJlIHRvIGJlCi8vLyAgICBjb3BpZWQuIFxuCi8vLyAgICBCaXRzIFsxOjBdOiBcbgovLy8gICAgICAwMDogQml0cyBbMzE6MF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzMxOjBdIG9mIHRoZQovLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbgovLy8gICAgICAwMTogQml0cyBbNjM6MzJdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFszMTowXSBvZiB0aGUKLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4KLy8vICAgICAgMTA6IEJpdHMgWzk1OjY0XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMzE6MF0gb2YgdGhlCi8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuCi8vLyAgICAgIDExOiBCaXRzIFsxMjc6OTZdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFszMTowXSBvZiB0aGUKLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4KLy8vICAgIEJpdHMgWzM6Ml06IFxuCi8vLyAgICAgIDAwOiBCaXRzIFszMTowXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbNjM6MzJdIG9mIHRoZQovLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbgovLy8gICAgICAwMTogQml0cyBbNjM6MzJdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFs2MzozMl0gb2YgdGhlCi8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuCi8vLyAgICAgIDEwOiBCaXRzIFs5NTo2NF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzYzOjMyXSBvZiB0aGUKLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4KLy8vICAgICAgMTE6IEJpdHMgWzEyNzo5Nl0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzYzOjMyXSBvZiB0aGUKLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4KLy8vICAgIEJpdHMgWzU6NF06IFxuCi8vLyAgICAgIDAwOiBCaXRzIFszMTowXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbOTU6NjRdIG9mIHRoZQovLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbgovLy8gICAgICAwMTogQml0cyBbNjM6MzJdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFs5NTo2NF0gb2YgdGhlCi8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuCi8vLyAgICAgIDEwOiBCaXRzIFs5NTo2NF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzk1OjY0XSBvZiB0aGUKLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4KLy8vICAgICAgMTE6IEJpdHMgWzEyNzo5Nl0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzk1OjY0XSBvZiB0aGUKLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4KLy8vICAgIEJpdHMgWzc6Nl06IFxuCi8vLyAgICAgIDAwOiBCaXRzIFszMTowXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMTI3Ojk2XSBvZiB0aGUKLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4KLy8vICAgICAgMDE6IEJpdHMgWzYzOjMyXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMTI3Ojk2XSBvZiB0aGUKLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4KLy8vICAgICAgMTA6IEJpdHMgWzk1OjY0XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMTI3Ojk2XSBvZiB0aGUKLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4KLy8vICAgICAgMTE6IEJpdHMgWzEyNzo5Nl0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzo5Nl0gb2YgdGhlCi8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuCi8vLyAgICBCaXRzIFsxOjBdOiBcbgovLy8gICAgICAwMDogQml0cyBbMTU5OjEyOF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzE1OToxMjhdIG9mIHRoZQovLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbgovLy8gICAgICAwMTogQml0cyBbMTkxOjE2MF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzE1OToxMjhdIG9mIHRoZQovLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbgovLy8gICAgICAxMDogQml0cyBbMjIzOjE5Ml0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzE1OToxMjhdIG9mIHRoZQovLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbgovLy8gICAgICAxMTogQml0cyBbMjU1OjIyNF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzE1OToxMjhdIG9mIHRoZQovLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbgovLy8gICAgQml0cyBbMzoyXTogXG4KLy8vICAgICAgMDA6IEJpdHMgWzE1OToxMjhdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxOTE6MTYwXSBvZiB0aGUKLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4KLy8vICAgICAgMDE6IEJpdHMgWzE5MToxNjBdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxOTE6MTYwXSBvZiB0aGUKLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4KLy8vICAgICAgMTA6IEJpdHMgWzIyMzoxOTJdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxOTE6MTYwXSBvZiB0aGUKLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4KLy8vICAgICAgMTE6IEJpdHMgWzI1NToyMjRdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxOTE6MTYwXSBvZiB0aGUKLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4KLy8vICAgIEJpdHMgWzU6NF06IFxuCi8vLyAgICAgIDAwOiBCaXRzIFsxNTk6MTI4XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMjIzOjE5Ml0gb2YgdGhlCi8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuCi8vLyAgICAgIDAxOiBCaXRzIFsxOTE6MTYwXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMjIzOjE5Ml0gb2YgdGhlCi8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuCi8vLyAgICAgIDEwOiBCaXRzIFsyMjM6MTkyXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMjIzOjE5Ml0gb2YgdGhlCi8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuCi8vLyAgICAgIDExOiBCaXRzIFsyNTU6MjI0XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMjIzOjE5Ml0gb2YgdGhlCi8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuCi8vLyAgICBCaXRzIFs3OjZdOiBcbgovLy8gICAgICAwMDogQml0cyBbMTU5OjEyOF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzI1NToyMjRdIG9mIHRoZQovLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbgovLy8gICAgICAwMTogQml0cyBbMTkxOjE2MF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzI1NToyMjRdIG9mIHRoZQovLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbgovLy8gICAgICAxMDogQml0cyBbMjIzOjE5Ml0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzI1NToyMjRdIG9mIHRoZQovLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbgovLy8gICAgICAxMTogQml0cyBbMjU1OjIyNF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzI1NToyMjRdIG9mIHRoZQovLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLgovLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb3BpZWQgdmFsdWVzLgojZGVmaW5lIF9tbTI1Nl9wZXJtdXRlX3BzKEEsIEMpIFwKICAoKF9fbTI1NilfX2J1aWx0aW5faWEzMl92cGVybWlscHMyNTYoKF9fdjhzZikoX19tMjU2KShBKSwgKGludCkoQykpKQoKLy8vIFBlcm11dGVzIDEyOC1iaXQgZGF0YSB2YWx1ZXMgc3RvcmVkIGluIHR3byAyNTYtYml0IHZlY3RvcnMgb2YKLy8vICAgIFs0IHggZG91YmxlXSwgYXMgc3BlY2lmaWVkIGJ5IHRoZSBpbW1lZGlhdGUgaW50ZWdlciBvcGVyYW5kLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBcY29kZQovLy8gX19tMjU2ZCBfbW0yNTZfcGVybXV0ZTJmMTI4X3BkKF9fbTI1NmQgVjEsIF9fbTI1NmQgVjIsIGNvbnN0IGludCBNKTsKLy8vIFxlbmRjb2RlCi8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEVSTTJGMTI4IDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIFYxCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4KLy8vIFxwYXJhbSBWMgovLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZS4KLy8vIFxwYXJhbSBNCi8vLyAgICBBbiBpbW1lZGlhdGUgaW50ZWdlciBvcGVyYW5kIHNwZWNpZnlpbmcgaG93IHRoZSB2YWx1ZXMgYXJlIHRvIGJlCi8vLyAgICBwZXJtdXRlZC4gXG4KLy8vICAgIEJpdHMgWzE6MF06IFxuCi8vLyAgICAgIDAwOiBCaXRzIFsxMjc6MF0gb2Ygb3BlcmFuZCBcYSBWMSBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzowXSBvZiB0aGUKLy8vICAgICAgICAgIGRlc3RpbmF0aW9uLiBcbgovLy8gICAgICAwMTogQml0cyBbMjU1OjEyOF0gb2Ygb3BlcmFuZCBcYSBWMSBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzowXSBvZiB0aGUKLy8vICAgICAgICAgIGRlc3RpbmF0aW9uLiBcbgovLy8gICAgICAxMDogQml0cyBbMTI3OjBdIG9mIG9wZXJhbmQgXGEgVjIgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6MF0gb2YgdGhlCi8vLyAgICAgICAgICBkZXN0aW5hdGlvbi4gXG4KLy8vICAgICAgMTE6IEJpdHMgWzI1NToxMjhdIG9mIG9wZXJhbmQgXGEgVjIgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6MF0gb2YgdGhlCi8vLyAgICAgICAgICBkZXN0aW5hdGlvbi4gXG4KLy8vICAgIEJpdHMgWzU6NF06IFxuCi8vLyAgICAgIDAwOiBCaXRzIFsxMjc6MF0gb2Ygb3BlcmFuZCBcYSBWMSBhcmUgY29waWVkIHRvIGJpdHMgWzI1NToxMjhdIG9mIHRoZQovLy8gICAgICAgICAgZGVzdGluYXRpb24uIFxuCi8vLyAgICAgIDAxOiBCaXRzIFsyNTU6MTI4XSBvZiBvcGVyYW5kIFxhIFYxIGFyZSBjb3BpZWQgdG8gYml0cyBbMjU1OjEyOF0gb2YgdGhlCi8vLyAgICAgICAgICBkZXN0aW5hdGlvbi4gXG4KLy8vICAgICAgMTA6IEJpdHMgWzEyNzowXSBvZiBvcGVyYW5kIFxhIFYyIGFyZSBjb3BpZWQgdG8gYml0cyBbMjU1OjEyOF0gb2YgdGhlCi8vLyAgICAgICAgICBkZXN0aW5hdGlvbi4gXG4KLy8vICAgICAgMTE6IEJpdHMgWzI1NToxMjhdIG9mIG9wZXJhbmQgXGEgVjIgYXJlIGNvcGllZCB0byBiaXRzIFsyNTU6MTI4XSBvZiB0aGUKLy8vICAgICAgICAgIGRlc3RpbmF0aW9uLgovLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgY29waWVkIHZhbHVlcy4KI2RlZmluZSBfbW0yNTZfcGVybXV0ZTJmMTI4X3BkKFYxLCBWMiwgTSkgXAogICgoX19tMjU2ZClfX2J1aWx0aW5faWEzMl92cGVybTJmMTI4X3BkMjU2KChfX3Y0ZGYpKF9fbTI1NmQpKFYxKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpKF9fbTI1NmQpKFYyKSwgKGludCkoTSkpKQoKLy8vIFBlcm11dGVzIDEyOC1iaXQgZGF0YSB2YWx1ZXMgc3RvcmVkIGluIHR3byAyNTYtYml0IHZlY3RvcnMgb2YKLy8vICAgIFs4IHggZmxvYXRdLCBhcyBzcGVjaWZpZWQgYnkgdGhlIGltbWVkaWF0ZSBpbnRlZ2VyIG9wZXJhbmQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFxjb2RlCi8vLyBfX20yNTYgX21tMjU2X3Blcm11dGUyZjEyOF9wcyhfX20yNTYgVjEsIF9fbTI1NiBWMiwgY29uc3QgaW50IE0pOwovLy8gXGVuZGNvZGUKLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQRVJNMkYxMjggPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gVjEKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uCi8vLyBccGFyYW0gVjIKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uCi8vLyBccGFyYW0gTQovLy8gICAgQW4gaW1tZWRpYXRlIGludGVnZXIgb3BlcmFuZCBzcGVjaWZ5aW5nIGhvdyB0aGUgdmFsdWVzIGFyZSB0byBiZQovLy8gICAgcGVybXV0ZWQuIFxuCi8vLyAgICBCaXRzIFsxOjBdOiBcbgovLy8gICAgMDA6IEJpdHMgWzEyNzowXSBvZiBvcGVyYW5kIFxhIFYxIGFyZSBjb3BpZWQgdG8gYml0cyBbMTI3OjBdIG9mIHRoZQovLy8gICAgZGVzdGluYXRpb24uIFxuCi8vLyAgICAwMTogQml0cyBbMjU1OjEyOF0gb2Ygb3BlcmFuZCBcYSBWMSBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzowXSBvZiB0aGUKLy8vICAgIGRlc3RpbmF0aW9uLiBcbgovLy8gICAgMTA6IEJpdHMgWzEyNzowXSBvZiBvcGVyYW5kIFxhIFYyIGFyZSBjb3BpZWQgdG8gYml0cyBbMTI3OjBdIG9mIHRoZQovLy8gICAgZGVzdGluYXRpb24uIFxuCi8vLyAgICAxMTogQml0cyBbMjU1OjEyOF0gb2Ygb3BlcmFuZCBcYSBWMiBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzowXSBvZiB0aGUKLy8vICAgIGRlc3RpbmF0aW9uLiBcbgovLy8gICAgQml0cyBbNTo0XTogXG4KLy8vICAgIDAwOiBCaXRzIFsxMjc6MF0gb2Ygb3BlcmFuZCBcYSBWMSBhcmUgY29waWVkIHRvIGJpdHMgWzI1NToxMjhdIG9mIHRoZQovLy8gICAgZGVzdGluYXRpb24uIFxuCi8vLyAgICAwMTogQml0cyBbMjU1OjEyOF0gb2Ygb3BlcmFuZCBcYSBWMSBhcmUgY29waWVkIHRvIGJpdHMgWzI1NToxMjhdIG9mIHRoZQovLy8gICAgZGVzdGluYXRpb24uIFxuCi8vLyAgICAxMDogQml0cyBbMTI3OjBdIG9mIG9wZXJhbmQgXGEgVjIgYXJlIGNvcGllZCB0byBiaXRzIFsyNTU6MTI4XSBvZiB0aGUKLy8vICAgIGRlc3RpbmF0aW9uLiBcbgovLy8gICAgMTE6IEJpdHMgWzI1NToxMjhdIG9mIG9wZXJhbmQgXGEgVjIgYXJlIGNvcGllZCB0byBiaXRzIFsyNTU6MTI4XSBvZiB0aGUKLy8vICAgIGRlc3RpbmF0aW9uLgovLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb3BpZWQgdmFsdWVzLgojZGVmaW5lIF9tbTI1Nl9wZXJtdXRlMmYxMjhfcHMoVjEsIFYyLCBNKSBcCiAgKChfX20yNTYpX19idWlsdGluX2lhMzJfdnBlcm0yZjEyOF9wczI1NigoX192OHNmKShfX20yNTYpKFYxKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZikoX19tMjU2KShWMiksIChpbnQpKE0pKSkKCi8vLyBQZXJtdXRlcyAxMjgtYml0IGRhdGEgdmFsdWVzIHN0b3JlZCBpbiB0d28gMjU2LWJpdCBpbnRlZ2VyIHZlY3RvcnMsCi8vLyAgICBhcyBzcGVjaWZpZWQgYnkgdGhlIGltbWVkaWF0ZSBpbnRlZ2VyIG9wZXJhbmQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFxjb2RlCi8vLyBfX20yNTZpIF9tbTI1Nl9wZXJtdXRlMmYxMjhfc2kyNTYoX19tMjU2aSBWMSwgX19tMjU2aSBWMiwgY29uc3QgaW50IE0pOwovLy8gXGVuZGNvZGUKLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQRVJNMkYxMjggPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gVjEKLy8vICAgIEEgMjU2LWJpdCBpbnRlZ2VyIHZlY3Rvci4KLy8vIFxwYXJhbSBWMgovLy8gICAgQSAyNTYtYml0IGludGVnZXIgdmVjdG9yLgovLy8gXHBhcmFtIE0KLy8vICAgIEFuIGltbWVkaWF0ZSBpbnRlZ2VyIG9wZXJhbmQgc3BlY2lmeWluZyBob3cgdGhlIHZhbHVlcyBhcmUgdG8gYmUgY29waWVkLgovLy8gICAgQml0cyBbMTowXTogXG4KLy8vICAgIDAwOiBCaXRzIFsxMjc6MF0gb2Ygb3BlcmFuZCBcYSBWMSBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzowXSBvZiB0aGUKLy8vICAgIGRlc3RpbmF0aW9uLiBcbgovLy8gICAgMDE6IEJpdHMgWzI1NToxMjhdIG9mIG9wZXJhbmQgXGEgVjEgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6MF0gb2YgdGhlCi8vLyAgICBkZXN0aW5hdGlvbi4gXG4KLy8vICAgIDEwOiBCaXRzIFsxMjc6MF0gb2Ygb3BlcmFuZCBcYSBWMiBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzowXSBvZiB0aGUKLy8vICAgIGRlc3RpbmF0aW9uLiBcbgovLy8gICAgMTE6IEJpdHMgWzI1NToxMjhdIG9mIG9wZXJhbmQgXGEgVjIgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6MF0gb2YgdGhlCi8vLyAgICBkZXN0aW5hdGlvbi4gXG4KLy8vICAgIEJpdHMgWzU6NF06IFxuCi8vLyAgICAwMDogQml0cyBbMTI3OjBdIG9mIG9wZXJhbmQgXGEgVjEgYXJlIGNvcGllZCB0byBiaXRzIFsyNTU6MTI4XSBvZiB0aGUKLy8vICAgIGRlc3RpbmF0aW9uLiBcbgovLy8gICAgMDE6IEJpdHMgWzI1NToxMjhdIG9mIG9wZXJhbmQgXGEgVjEgYXJlIGNvcGllZCB0byBiaXRzIFsyNTU6MTI4XSBvZiB0aGUKLy8vICAgIGRlc3RpbmF0aW9uLiBcbgovLy8gICAgMTA6IEJpdHMgWzEyNzowXSBvZiBvcGVyYW5kIFxhIFYyIGFyZSBjb3BpZWQgdG8gYml0cyBbMjU1OjEyOF0gb2YgdGhlCi8vLyAgICBkZXN0aW5hdGlvbi4gXG4KLy8vICAgIDExOiBCaXRzIFsyNTU6MTI4XSBvZiBvcGVyYW5kIFxhIFYyIGFyZSBjb3BpZWQgdG8gYml0cyBbMjU1OjEyOF0gb2YgdGhlCi8vLyAgICBkZXN0aW5hdGlvbi4KLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBjb3BpZWQgdmFsdWVzLgojZGVmaW5lIF9tbTI1Nl9wZXJtdXRlMmYxMjhfc2kyNTYoVjEsIFYyLCBNKSBcCiAgKChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3ZwZXJtMmYxMjhfc2kyNTYoKF9fdjhzaSkoX19tMjU2aSkoVjEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSkoX19tMjU2aSkoVjIpLCAoaW50KShNKSkpCgovKiBWZWN0b3IgQmxlbmQgKi8KLy8vIE1lcmdlcyA2NC1iaXQgZG91YmxlLXByZWNpc2lvbiBkYXRhIHZhbHVlcyBzdG9yZWQgaW4gZWl0aGVyIG9mIHRoZQovLy8gICAgdHdvIDI1Ni1iaXQgdmVjdG9ycyBvZiBbNCB4IGRvdWJsZV0sIGFzIHNwZWNpZmllZCBieSB0aGUgaW1tZWRpYXRlCi8vLyAgICBpbnRlZ2VyIG9wZXJhbmQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFxjb2RlCi8vLyBfX20yNTZkIF9tbTI1Nl9ibGVuZF9wZChfX20yNTZkIFYxLCBfX20yNTZkIFYyLCBjb25zdCBpbnQgTSk7Ci8vLyBcZW5kY29kZQovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkJMRU5EUEQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gVjEKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLgovLy8gXHBhcmFtIFYyCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4KLy8vIFxwYXJhbSBNCi8vLyAgICBBbiBpbW1lZGlhdGUgaW50ZWdlciBvcGVyYW5kLCB3aXRoIG1hc2sgYml0cyBbMzowXSBzcGVjaWZ5aW5nIGhvdyB0aGUKLy8vICAgIHZhbHVlcyBhcmUgdG8gYmUgY29waWVkLiBUaGUgcG9zaXRpb24gb2YgdGhlIG1hc2sgYml0IGNvcnJlc3BvbmRzIHRvIHRoZQovLy8gICAgaW5kZXggb2YgYSBjb3BpZWQgdmFsdWUuIFdoZW4gYSBtYXNrIGJpdCBpcyAwLCB0aGUgY29ycmVzcG9uZGluZyA2NC1iaXQKLy8vICAgIGVsZW1lbnQgaW4gb3BlcmFuZCBcYSBWMSBpcyBjb3BpZWQgdG8gdGhlIHNhbWUgcG9zaXRpb24gaW4gdGhlCi8vLyAgICBkZXN0aW5hdGlvbi4gV2hlbiBhIG1hc2sgYml0IGlzIDEsIHRoZSBjb3JyZXNwb25kaW5nIDY0LWJpdCBlbGVtZW50IGluCi8vLyAgICBvcGVyYW5kIFxhIFYyIGlzIGNvcGllZCB0byB0aGUgc2FtZSBwb3NpdGlvbiBpbiB0aGUgZGVzdGluYXRpb24uCi8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZSBjb3BpZWQgdmFsdWVzLgojZGVmaW5lIF9tbTI1Nl9ibGVuZF9wZChWMSwgVjIsIE0pIFwKICAoKF9fbTI1NmQpX19idWlsdGluX2lhMzJfYmxlbmRwZDI1NigoX192NGRmKShfX20yNTZkKShWMSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKShfX20yNTZkKShWMiksIChpbnQpKE0pKSkKCi8vLyBNZXJnZXMgMzItYml0IHNpbmdsZS1wcmVjaXNpb24gZGF0YSB2YWx1ZXMgc3RvcmVkIGluIGVpdGhlciBvZiB0aGUKLy8vICAgIHR3byAyNTYtYml0IHZlY3RvcnMgb2YgWzggeCBmbG9hdF0sIGFzIHNwZWNpZmllZCBieSB0aGUgaW1tZWRpYXRlCi8vLyAgICBpbnRlZ2VyIG9wZXJhbmQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFxjb2RlCi8vLyBfX20yNTYgX21tMjU2X2JsZW5kX3BzKF9fbTI1NiBWMSwgX19tMjU2IFYyLCBjb25zdCBpbnQgTSk7Ci8vLyBcZW5kY29kZQovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkJMRU5EUFMgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gVjEKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uCi8vLyBccGFyYW0gVjIKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uCi8vLyBccGFyYW0gTQovLy8gICAgQW4gaW1tZWRpYXRlIGludGVnZXIgb3BlcmFuZCwgd2l0aCBtYXNrIGJpdHMgWzc6MF0gc3BlY2lmeWluZyBob3cgdGhlCi8vLyAgICB2YWx1ZXMgYXJlIHRvIGJlIGNvcGllZC4gVGhlIHBvc2l0aW9uIG9mIHRoZSBtYXNrIGJpdCBjb3JyZXNwb25kcyB0byB0aGUKLy8vICAgIGluZGV4IG9mIGEgY29waWVkIHZhbHVlLiBXaGVuIGEgbWFzayBiaXQgaXMgMCwgdGhlIGNvcnJlc3BvbmRpbmcgMzItYml0Ci8vLyAgICBlbGVtZW50IGluIG9wZXJhbmQgXGEgVjEgaXMgY29waWVkIHRvIHRoZSBzYW1lIHBvc2l0aW9uIGluIHRoZQovLy8gICAgZGVzdGluYXRpb24uIFdoZW4gYSBtYXNrIGJpdCBpcyAxLCB0aGUgY29ycmVzcG9uZGluZyAzMi1iaXQgZWxlbWVudCBpbgovLy8gICAgb3BlcmFuZCBcYSBWMiBpcyBjb3BpZWQgdG8gdGhlIHNhbWUgcG9zaXRpb24gaW4gdGhlIGRlc3RpbmF0aW9uLgovLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb3BpZWQgdmFsdWVzLgojZGVmaW5lIF9tbTI1Nl9ibGVuZF9wcyhWMSwgVjIsIE0pIFwKICAoKF9fbTI1NilfX2J1aWx0aW5faWEzMl9ibGVuZHBzMjU2KChfX3Y4c2YpKF9fbTI1NikoVjEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKShfX20yNTYpKFYyKSwgKGludCkoTSkpKQoKLy8vIE1lcmdlcyA2NC1iaXQgZG91YmxlLXByZWNpc2lvbiBkYXRhIHZhbHVlcyBzdG9yZWQgaW4gZWl0aGVyIG9mIHRoZQovLy8gICAgdHdvIDI1Ni1iaXQgdmVjdG9ycyBvZiBbNCB4IGRvdWJsZV0sIGFzIHNwZWNpZmllZCBieSB0aGUgMjU2LWJpdCB2ZWN0b3IKLy8vICAgIG9wZXJhbmQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkJMRU5EVlBEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4KLy8vIFxwYXJhbSBfX2MKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb3BlcmFuZCwgd2l0aCBtYXNrIGJpdHMgMjU1LCAxOTEsIDEyNywgYW5kIDYzIHNwZWNpZnlpbmcKLy8vICAgIGhvdyB0aGUgdmFsdWVzIGFyZSB0byBiZSBjb3BpZWQuIFRoZSBwb3NpdGlvbiBvZiB0aGUgbWFzayBiaXQgY29ycmVzcG9uZHMKLy8vICAgIHRvIHRoZSBtb3N0IHNpZ25pZmljYW50IGJpdCBvZiBhIGNvcGllZCB2YWx1ZS4gV2hlbiBhIG1hc2sgYml0IGlzIDAsIHRoZQovLy8gICAgY29ycmVzcG9uZGluZyA2NC1iaXQgZWxlbWVudCBpbiBvcGVyYW5kIFxhIF9fYSBpcyBjb3BpZWQgdG8gdGhlIHNhbWUKLy8vICAgIHBvc2l0aW9uIGluIHRoZSBkZXN0aW5hdGlvbi4gV2hlbiBhIG1hc2sgYml0IGlzIDEsIHRoZSBjb3JyZXNwb25kaW5nCi8vLyAgICA2NC1iaXQgZWxlbWVudCBpbiBvcGVyYW5kIFxhIF9fYiBpcyBjb3BpZWQgdG8gdGhlIHNhbWUgcG9zaXRpb24gaW4gdGhlCi8vLyAgICBkZXN0aW5hdGlvbi4KLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGNvcGllZCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW0yNTZfYmxlbmR2X3BkKF9fbTI1NmQgX19hLCBfX20yNTZkIF9fYiwgX19tMjU2ZCBfX2MpCnsKICByZXR1cm4gKF9fbTI1NmQpX19idWlsdGluX2lhMzJfYmxlbmR2cGQyNTYoCiAgICAoX192NGRmKV9fYSwgKF9fdjRkZilfX2IsIChfX3Y0ZGYpX19jKTsKfQoKLy8vIE1lcmdlcyAzMi1iaXQgc2luZ2xlLXByZWNpc2lvbiBkYXRhIHZhbHVlcyBzdG9yZWQgaW4gZWl0aGVyIG9mIHRoZQovLy8gICAgdHdvIDI1Ni1iaXQgdmVjdG9ycyBvZiBbOCB4IGZsb2F0XSwgYXMgc3BlY2lmaWVkIGJ5IHRoZSAyNTYtYml0IHZlY3RvcgovLy8gICAgb3BlcmFuZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQkxFTkRWUFMgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4KLy8vIFxwYXJhbSBfX2MKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb3BlcmFuZCwgd2l0aCBtYXNrIGJpdHMgMjU1LCAyMjMsIDE5MSwgMTU5LCAxMjcsIDk1LCA2MywKLy8vICAgIGFuZCAzMSBzcGVjaWZ5aW5nIGhvdyB0aGUgdmFsdWVzIGFyZSB0byBiZSBjb3BpZWQuIFRoZSBwb3NpdGlvbiBvZiB0aGUKLy8vICAgIG1hc2sgYml0IGNvcnJlc3BvbmRzIHRvIHRoZSBtb3N0IHNpZ25pZmljYW50IGJpdCBvZiBhIGNvcGllZCB2YWx1ZS4gV2hlbgovLy8gICAgYSBtYXNrIGJpdCBpcyAwLCB0aGUgY29ycmVzcG9uZGluZyAzMi1iaXQgZWxlbWVudCBpbiBvcGVyYW5kIFxhIF9fYSBpcwovLy8gICAgY29waWVkIHRvIHRoZSBzYW1lIHBvc2l0aW9uIGluIHRoZSBkZXN0aW5hdGlvbi4gV2hlbiBhIG1hc2sgYml0IGlzIDEsIHRoZQovLy8gICAgY29ycmVzcG9uZGluZyAzMi1iaXQgZWxlbWVudCBpbiBvcGVyYW5kIFxhIF9fYiBpcyBjb3BpZWQgdG8gdGhlIHNhbWUKLy8vICAgIHBvc2l0aW9uIGluIHRoZSBkZXN0aW5hdGlvbi4KLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29waWVkIHZhbHVlcy4Kc3RhdGljIF9faW5saW5lIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMKX21tMjU2X2JsZW5kdl9wcyhfX20yNTYgX19hLCBfX20yNTYgX19iLCBfX20yNTYgX19jKQp7CiAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2lhMzJfYmxlbmR2cHMyNTYoCiAgICAoX192OHNmKV9fYSwgKF9fdjhzZilfX2IsIChfX3Y4c2YpX19jKTsKfQoKLyogVmVjdG9yIERvdCBQcm9kdWN0ICovCi8vLyBDb21wdXRlcyB0d28gZG90IHByb2R1Y3RzIGluIHBhcmFsbGVsLCB1c2luZyB0aGUgbG93ZXIgYW5kIHVwcGVyCi8vLyAgICBoYWx2ZXMgb2YgdHdvIFs4IHggZmxvYXRdIHZlY3RvcnMgYXMgaW5wdXQgdG8gdGhlIHR3byBjb21wdXRhdGlvbnMsIGFuZAovLy8gICAgcmV0dXJuaW5nIHRoZSB0d28gZG90IHByb2R1Y3RzIGluIHRoZSBsb3dlciBhbmQgdXBwZXIgaGFsdmVzIG9mIHRoZQovLy8gICAgWzggeCBmbG9hdF0gcmVzdWx0LgovLy8KLy8vICAgIFRoZSBpbW1lZGlhdGUgaW50ZWdlciBvcGVyYW5kIGNvbnRyb2xzIHdoaWNoIGlucHV0IGVsZW1lbnRzIHdpbGwKLy8vICAgIGNvbnRyaWJ1dGUgdG8gdGhlIGRvdCBwcm9kdWN0LCBhbmQgd2hlcmUgdGhlIGZpbmFsIHJlc3VsdHMgYXJlIHJldHVybmVkLgovLy8gICAgSW4gZ2VuZXJhbCwgZm9yIGVhY2ggZG90IHByb2R1Y3QsIHRoZSBmb3VyIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgb2YgdGhlCi8vLyAgICBpbnB1dCB2ZWN0b3JzIGFyZSBtdWx0aXBsaWVkOyB0aGUgZmlyc3QgdHdvIGFuZCBzZWNvbmQgdHdvIHByb2R1Y3RzIGFyZQovLy8gICAgc3VtbWVkLCB0aGVuIHRoZSB0d28gc3VtcyBhcmUgYWRkZWQgdG8gZm9ybSB0aGUgZmluYWwgcmVzdWx0LgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBcY29kZQovLy8gX19tMjU2IF9tbTI1Nl9kcF9wcyhfX20yNTYgVjEsIF9fbTI1NiBWMiwgY29uc3QgaW50IE0pOwovLy8gXGVuZGNvZGUKLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZEUFBTIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIFYxCi8vLyAgICBBIHZlY3RvciBvZiBbOCB4IGZsb2F0XSB2YWx1ZXMsIHRyZWF0ZWQgYXMgdHdvIFs0IHggZmxvYXRdIHZlY3RvcnMuCi8vLyBccGFyYW0gVjIKLy8vICAgIEEgdmVjdG9yIG9mIFs4IHggZmxvYXRdIHZhbHVlcywgdHJlYXRlZCBhcyB0d28gWzQgeCBmbG9hdF0gdmVjdG9ycy4KLy8vIFxwYXJhbSBNCi8vLyAgICBBbiBpbW1lZGlhdGUgaW50ZWdlciBhcmd1bWVudC4gQml0cyBbNzo0XSBkZXRlcm1pbmUgd2hpY2ggZWxlbWVudHMgb2YKLy8vICAgIHRoZSBpbnB1dCB2ZWN0b3JzIGFyZSB1c2VkLCB3aXRoIGJpdCBbNF0gY29ycmVzcG9uZGluZyB0byB0aGUgbG93ZXN0Ci8vLyAgICBlbGVtZW50IGFuZCBiaXQgWzddIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGhpZ2hlc3QgZWxlbWVudCBvZiBlYWNoIFs0IHgKLy8vICAgIGZsb2F0XSBzdWJ2ZWN0b3IuIElmIGEgYml0IGlzIHNldCwgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgZnJvbSB0aGUKLy8vICAgIHR3byBpbnB1dCB2ZWN0b3JzIGFyZSB1c2VkIGFzIGFuIGlucHV0IGZvciBkb3QgcHJvZHVjdDsgb3RoZXJ3aXNlIHRoYXQKLy8vICAgIGlucHV0IGlzIHRyZWF0ZWQgYXMgemVyby4gQml0cyBbMzowXSBkZXRlcm1pbmUgd2hpY2ggZWxlbWVudHMgb2YgdGhlCi8vLyAgICByZXN1bHQgd2lsbCByZWNlaXZlIGEgY29weSBvZiB0aGUgZmluYWwgZG90IHByb2R1Y3QsIHdpdGggYml0IFswXQovLy8gICAgY29ycmVzcG9uZGluZyB0byB0aGUgbG93ZXN0IGVsZW1lbnQgYW5kIGJpdCBbM10gY29ycmVzcG9uZGluZyB0byB0aGUKLy8vICAgIGhpZ2hlc3QgZWxlbWVudCBvZiBlYWNoIFs0IHggZmxvYXRdIHN1YnZlY3Rvci4gSWYgYSBiaXQgaXMgc2V0LCB0aGUgZG90Ci8vLyAgICBwcm9kdWN0IGlzIHJldHVybmVkIGluIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQ7IG90aGVyd2lzZSB0aGF0IGVsZW1lbnQKLy8vICAgIGlzIHNldCB0byB6ZXJvLiBUaGUgYml0bWFzayBpcyBhcHBsaWVkIGluIHRoZSBzYW1lIHdheSB0byBlYWNoIG9mIHRoZQovLy8gICAgdHdvIHBhcmFsbGVsIGRvdCBwcm9kdWN0IGNvbXB1dGF0aW9ucy4KLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgdHdvIGRvdCBwcm9kdWN0cy4KI2RlZmluZSBfbW0yNTZfZHBfcHMoVjEsIFYyLCBNKSBcCiAgKChfX20yNTYpX19idWlsdGluX2lhMzJfZHBwczI1NigoX192OHNmKShfX20yNTYpKFYxKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZikoX19tMjU2KShWMiksIChNKSkpCgovKiBWZWN0b3Igc2h1ZmZsZSAqLwovLy8gU2VsZWN0cyA4IGZsb2F0IHZhbHVlcyBmcm9tIHRoZSAyNTYtYml0IG9wZXJhbmRzIG9mIFs4IHggZmxvYXRdLCBhcwovLy8gICAgc3BlY2lmaWVkIGJ5IHRoZSBpbW1lZGlhdGUgdmFsdWUgb3BlcmFuZC4KLy8vCi8vLyAgICBUaGUgZm91ciBzZWxlY3RlZCBlbGVtZW50cyBpbiBlYWNoIG9wZXJhbmQgYXJlIGNvcGllZCB0byB0aGUgZGVzdGluYXRpb24KLy8vICAgIGFjY29yZGluZyB0byB0aGUgYml0cyBzcGVjaWZpZWQgaW4gdGhlIGltbWVkaWF0ZSBvcGVyYW5kLiBUaGUgc2VsZWN0ZWQKLy8vICAgIGVsZW1lbnRzIGZyb20gdGhlIGZpcnN0IDI1Ni1iaXQgb3BlcmFuZCBhcmUgY29waWVkIHRvIGJpdHMgWzYzOjBdIGFuZAovLy8gICAgYml0cyBbMTkxOjEyOF0gb2YgdGhlIGRlc3RpbmF0aW9uLCBhbmQgdGhlIHNlbGVjdGVkIGVsZW1lbnRzIGZyb20gdGhlCi8vLyAgICBzZWNvbmQgMjU2LWJpdCBvcGVyYW5kIGFyZSBjb3BpZWQgdG8gYml0cyBbMTI3OjY0XSBhbmQgYml0cyBbMjU1OjE5Ml0gb2YKLy8vICAgIHRoZSBkZXN0aW5hdGlvbi4gRm9yIGV4YW1wbGUsIGlmIGJpdHMgWzc6MF0gb2YgdGhlIGltbWVkaWF0ZSBvcGVyYW5kCi8vLyAgICBjb250YWluIGEgdmFsdWUgb2YgMHhGRiwgdGhlIDI1Ni1iaXQgZGVzdGluYXRpb24gdmVjdG9yIHdvdWxkIGNvbnRhaW4gdGhlCi8vLyAgICBmb2xsb3dpbmcgdmFsdWVzOiBiWzddLCBiWzddLCBhWzddLCBhWzddLCBiWzNdLCBiWzNdLCBhWzNdLCBhWzNdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBcY29kZQovLy8gX19tMjU2IF9tbTI1Nl9zaHVmZmxlX3BzKF9fbTI1NiBhLCBfX20yNTYgYiwgY29uc3QgaW50IG1hc2spOwovLy8gXGVuZGNvZGUKLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZTSFVGUFMgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gYQovLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4gVGhlIGZvdXIgc2VsZWN0ZWQgZWxlbWVudHMgaW4gdGhpcwovLy8gICAgb3BlcmFuZCBhcmUgY29waWVkIHRvIGJpdHMgWzYzOjBdIGFuZCBiaXRzIFsxOTE6MTI4XSBpbiB0aGUgZGVzdGluYXRpb24sCi8vLyAgICBhY2NvcmRpbmcgdG8gdGhlIGJpdHMgc3BlY2lmaWVkIGluIHRoZSBpbW1lZGlhdGUgb3BlcmFuZC4KLy8vIFxwYXJhbSBiCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLiBUaGUgZm91ciBzZWxlY3RlZCBlbGVtZW50cyBpbiB0aGlzCi8vLyAgICBvcGVyYW5kIGFyZSBjb3BpZWQgdG8gYml0cyBbMTI3OjY0XSBhbmQgYml0cyBbMjU1OjE5Ml0gaW4gdGhlCi8vLyAgICBkZXN0aW5hdGlvbiwgYWNjb3JkaW5nIHRvIHRoZSBiaXRzIHNwZWNpZmllZCBpbiB0aGUgaW1tZWRpYXRlIG9wZXJhbmQuCi8vLyBccGFyYW0gbWFzawovLy8gICAgQW4gaW1tZWRpYXRlIHZhbHVlIGNvbnRhaW5pbmcgYW4gOC1iaXQgdmFsdWUgc3BlY2lmeWluZyB3aGljaCBlbGVtZW50cyB0bwovLy8gICAgY29weSBmcm9tIFxhIGEgYW5kIFxhIGIgXG4uCi8vLyAgICBCaXRzIFszOjBdIHNwZWNpZnkgdGhlIHZhbHVlcyBjb3BpZWQgZnJvbSBvcGVyYW5kIFxhIGEuIFxuCi8vLyAgICBCaXRzIFs3OjRdIHNwZWNpZnkgdGhlIHZhbHVlcyBjb3BpZWQgZnJvbSBvcGVyYW5kIFxhIGIuIFxuCi8vLyAgICBUaGUgZGVzdGluYXRpb25zIHdpdGhpbiB0aGUgMjU2LWJpdCBkZXN0aW5hdGlvbiBhcmUgYXNzaWduZWQgdmFsdWVzIGFzCi8vLyAgICBmb2xsb3dzLCBhY2NvcmRpbmcgdG8gdGhlIGJpdCB2YWx1ZSBhc3NpZ25tZW50cyBkZXNjcmliZWQgYmVsb3c6IFxuCi8vLyAgICBCaXRzIFsxOjBdIGFyZSB1c2VkIHRvIGFzc2lnbiB2YWx1ZXMgdG8gYml0cyBbMzE6MF0gYW5kIFsxNTk6MTI4XSBpbiB0aGUKLy8vICAgIGRlc3RpbmF0aW9uLiBcbgovLy8gICAgQml0cyBbMzoyXSBhcmUgdXNlZCB0byBhc3NpZ24gdmFsdWVzIHRvIGJpdHMgWzYzOjMyXSBhbmQgWzE5MToxNjBdIGluIHRoZQovLy8gICAgZGVzdGluYXRpb24uIFxuCi8vLyAgICBCaXRzIFs1OjRdIGFyZSB1c2VkIHRvIGFzc2lnbiB2YWx1ZXMgdG8gYml0cyBbOTU6NjRdIGFuZCBbMjIzOjE5Ml0gaW4gdGhlCi8vLyAgICBkZXN0aW5hdGlvbi4gXG4KLy8vICAgIEJpdHMgWzc6Nl0gYXJlIHVzZWQgdG8gYXNzaWduIHZhbHVlcyB0byBiaXRzIFsxMjc6OTZdIGFuZCBbMjU1OjIyNF0gaW4KLy8vICAgIHRoZSBkZXN0aW5hdGlvbi4gXG4KLy8vICAgIEJpdCB2YWx1ZSBhc3NpZ25tZW50czogXG4KLy8vICAgIDAwOiBCaXRzIFszMTowXSBhbmQgWzE1OToxMjhdIGFyZSBjb3BpZWQgZnJvbSB0aGUgc2VsZWN0ZWQgb3BlcmFuZC4gXG4KLy8vICAgIDAxOiBCaXRzIFs2MzozMl0gYW5kIFsxOTE6MTYwXSBhcmUgY29waWVkIGZyb20gdGhlIHNlbGVjdGVkIG9wZXJhbmQuIFxuCi8vLyAgICAxMDogQml0cyBbOTU6NjRdIGFuZCBbMjIzOjE5Ml0gYXJlIGNvcGllZCBmcm9tIHRoZSBzZWxlY3RlZCBvcGVyYW5kLiBcbgovLy8gICAgMTE6IEJpdHMgWzEyNzo5Nl0gYW5kIFsyNTU6MjI0XSBhcmUgY29waWVkIGZyb20gdGhlIHNlbGVjdGVkIG9wZXJhbmQuCi8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHNodWZmbGVkIHZhbHVlcy4KI2RlZmluZSBfbW0yNTZfc2h1ZmZsZV9wcyhhLCBiLCBtYXNrKSBcCiAgKChfX20yNTYpX19idWlsdGluX2lhMzJfc2h1ZnBzMjU2KChfX3Y4c2YpKF9fbTI1NikoYSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZikoX19tMjU2KShiKSwgKGludCkobWFzaykpKQoKLy8vIFNlbGVjdHMgZm91ciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBmcm9tIHRoZSAyNTYtYml0IG9wZXJhbmRzIG9mCi8vLyAgICBbNCB4IGRvdWJsZV0sIGFzIHNwZWNpZmllZCBieSB0aGUgaW1tZWRpYXRlIHZhbHVlIG9wZXJhbmQuCi8vLwovLy8gICAgVGhlIHNlbGVjdGVkIGVsZW1lbnRzIGZyb20gdGhlIGZpcnN0IDI1Ni1iaXQgb3BlcmFuZCBhcmUgY29waWVkIHRvIGJpdHMKLy8vICAgIFs2MzowXSBhbmQgYml0cyBbMTkxOjEyOF0gaW4gdGhlIGRlc3RpbmF0aW9uLCBhbmQgdGhlIHNlbGVjdGVkIGVsZW1lbnRzCi8vLyAgICBmcm9tIHRoZSBzZWNvbmQgMjU2LWJpdCBvcGVyYW5kIGFyZSBjb3BpZWQgdG8gYml0cyBbMTI3OjY0XSBhbmQgYml0cwovLy8gICAgWzI1NToxOTJdIGluIHRoZSBkZXN0aW5hdGlvbi4gRm9yIGV4YW1wbGUsIGlmIGJpdHMgWzM6MF0gb2YgdGhlIGltbWVkaWF0ZQovLy8gICAgb3BlcmFuZCBjb250YWluIGEgdmFsdWUgb2YgMHhGLCB0aGUgMjU2LWJpdCBkZXN0aW5hdGlvbiB2ZWN0b3Igd291bGQKLy8vICAgIGNvbnRhaW4gdGhlIGZvbGxvd2luZyB2YWx1ZXM6IGJbM10sIGFbM10sIGJbMV0sIGFbMV0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFxjb2RlCi8vLyBfX20yNTZkIF9tbTI1Nl9zaHVmZmxlX3BkKF9fbTI1NmQgYSwgX19tMjU2ZCBiLCBjb25zdCBpbnQgbWFzayk7Ci8vLyBcZW5kY29kZQovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlNIVUZQRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBhCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4KLy8vIFxwYXJhbSBiCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4KLy8vIFxwYXJhbSBtYXNrCi8vLyAgICBBbiBpbW1lZGlhdGUgdmFsdWUgY29udGFpbmluZyA4LWJpdCB2YWx1ZXMgc3BlY2lmeWluZyB3aGljaCBlbGVtZW50cyB0bwovLy8gICAgY29weSBmcm9tIFxhIGEgYW5kIFxhIGI6IFxuCi8vLyAgICBCaXQgWzBdPTA6IEJpdHMgWzYzOjBdIGFyZSBjb3BpZWQgZnJvbSBcYSBhIHRvIGJpdHMgWzYzOjBdIG9mIHRoZQovLy8gICAgZGVzdGluYXRpb24uIFxuCi8vLyAgICBCaXQgWzBdPTE6IEJpdHMgWzEyNzo2NF0gYXJlIGNvcGllZCBmcm9tIFxhIGEgdG8gYml0cyBbNjM6MF0gb2YgdGhlCi8vLyAgICBkZXN0aW5hdGlvbi4gXG4KLy8vICAgIEJpdCBbMV09MDogQml0cyBbNjM6MF0gYXJlIGNvcGllZCBmcm9tIFxhIGIgdG8gYml0cyBbMTI3OjY0XSBvZiB0aGUKLy8vICAgIGRlc3RpbmF0aW9uLiBcbgovLy8gICAgQml0IFsxXT0xOiBCaXRzIFsxMjc6NjRdIGFyZSBjb3BpZWQgZnJvbSBcYSBiIHRvIGJpdHMgWzEyNzo2NF0gb2YgdGhlCi8vLyAgICBkZXN0aW5hdGlvbi4gXG4KLy8vICAgIEJpdCBbMl09MDogQml0cyBbMTkxOjEyOF0gYXJlIGNvcGllZCBmcm9tIFxhIGEgdG8gYml0cyBbMTkxOjEyOF0gb2YgdGhlCi8vLyAgICBkZXN0aW5hdGlvbi4gXG4KLy8vICAgIEJpdCBbMl09MTogQml0cyBbMjU1OjE5Ml0gYXJlIGNvcGllZCBmcm9tIFxhIGEgdG8gYml0cyBbMTkxOjEyOF0gb2YgdGhlCi8vLyAgICBkZXN0aW5hdGlvbi4gXG4KLy8vICAgIEJpdCBbM109MDogQml0cyBbMTkxOjEyOF0gYXJlIGNvcGllZCBmcm9tIFxhIGIgdG8gYml0cyBbMjU1OjE5Ml0gb2YgdGhlCi8vLyAgICBkZXN0aW5hdGlvbi4gXG4KLy8vICAgIEJpdCBbM109MTogQml0cyBbMjU1OjE5Ml0gYXJlIGNvcGllZCBmcm9tIFxhIGIgdG8gYml0cyBbMjU1OjE5Ml0gb2YgdGhlCi8vLyAgICBkZXN0aW5hdGlvbi4KLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIHNodWZmbGVkIHZhbHVlcy4KI2RlZmluZSBfbW0yNTZfc2h1ZmZsZV9wZChhLCBiLCBtYXNrKSBcCiAgKChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX3NodWZwZDI1NigoX192NGRmKShfX20yNTZkKShhKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZikoX19tMjU2ZCkoYiksIChpbnQpKG1hc2spKSkKCi8qIENvbXBhcmUgKi8KI2RlZmluZSBfQ01QX0VRX09RICAgIDB4MDAgLyogRXF1YWwgKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpICAqLwojZGVmaW5lIF9DTVBfTFRfT1MgICAgMHgwMSAvKiBMZXNzLXRoYW4gKG9yZGVyZWQsIHNpZ25hbGluZykgICovCiNkZWZpbmUgX0NNUF9MRV9PUyAgICAweDAyIC8qIExlc3MtdGhhbi1vci1lcXVhbCAob3JkZXJlZCwgc2lnbmFsaW5nKSAgKi8KI2RlZmluZSBfQ01QX1VOT1JEX1EgIDB4MDMgLyogVW5vcmRlcmVkIChub24tc2lnbmFsaW5nKSAgKi8KI2RlZmluZSBfQ01QX05FUV9VUSAgIDB4MDQgLyogTm90LWVxdWFsICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpICAqLwojZGVmaW5lIF9DTVBfTkxUX1VTICAgMHgwNSAvKiBOb3QtbGVzcy10aGFuICh1bm9yZGVyZWQsIHNpZ25hbGluZykgICovCiNkZWZpbmUgX0NNUF9OTEVfVVMgICAweDA2IC8qIE5vdC1sZXNzLXRoYW4tb3ItZXF1YWwgKHVub3JkZXJlZCwgc2lnbmFsaW5nKSAgKi8KI2RlZmluZSBfQ01QX09SRF9RICAgIDB4MDcgLyogT3JkZXJlZCAobm9uLXNpZ25hbGluZykgICAqLwojZGVmaW5lIF9DTVBfRVFfVVEgICAgMHgwOCAvKiBFcXVhbCAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSAgKi8KI2RlZmluZSBfQ01QX05HRV9VUyAgIDB4MDkgLyogTm90LWdyZWF0ZXItdGhhbi1vci1lcXVhbCAodW5vcmRlcmVkLCBzaWduYWxpbmcpICAqLwojZGVmaW5lIF9DTVBfTkdUX1VTICAgMHgwYSAvKiBOb3QtZ3JlYXRlci10aGFuICh1bm9yZGVyZWQsIHNpZ25hbGluZykgICovCiNkZWZpbmUgX0NNUF9GQUxTRV9PUSAweDBiIC8qIEZhbHNlIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSAgKi8KI2RlZmluZSBfQ01QX05FUV9PUSAgIDB4MGMgLyogTm90LWVxdWFsIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSAgKi8KI2RlZmluZSBfQ01QX0dFX09TICAgIDB4MGQgLyogR3JlYXRlci10aGFuLW9yLWVxdWFsIChvcmRlcmVkLCBzaWduYWxpbmcpICAqLwojZGVmaW5lIF9DTVBfR1RfT1MgICAgMHgwZSAvKiBHcmVhdGVyLXRoYW4gKG9yZGVyZWQsIHNpZ25hbGluZykgICovCiNkZWZpbmUgX0NNUF9UUlVFX1VRICAweDBmIC8qIFRydWUgKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykgICovCiNkZWZpbmUgX0NNUF9FUV9PUyAgICAweDEwIC8qIEVxdWFsIChvcmRlcmVkLCBzaWduYWxpbmcpICAqLwojZGVmaW5lIF9DTVBfTFRfT1EgICAgMHgxMSAvKiBMZXNzLXRoYW4gKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpICAqLwojZGVmaW5lIF9DTVBfTEVfT1EgICAgMHgxMiAvKiBMZXNzLXRoYW4tb3ItZXF1YWwgKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpICAqLwojZGVmaW5lIF9DTVBfVU5PUkRfUyAgMHgxMyAvKiBVbm9yZGVyZWQgKHNpZ25hbGluZykgICovCiNkZWZpbmUgX0NNUF9ORVFfVVMgICAweDE0IC8qIE5vdC1lcXVhbCAodW5vcmRlcmVkLCBzaWduYWxpbmcpICAqLwojZGVmaW5lIF9DTVBfTkxUX1VRICAgMHgxNSAvKiBOb3QtbGVzcy10aGFuICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpICAqLwojZGVmaW5lIF9DTVBfTkxFX1VRICAgMHgxNiAvKiBOb3QtbGVzcy10aGFuLW9yLWVxdWFsICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpICAqLwojZGVmaW5lIF9DTVBfT1JEX1MgICAgMHgxNyAvKiBPcmRlcmVkIChzaWduYWxpbmcpICAqLwojZGVmaW5lIF9DTVBfRVFfVVMgICAgMHgxOCAvKiBFcXVhbCAodW5vcmRlcmVkLCBzaWduYWxpbmcpICAqLwojZGVmaW5lIF9DTVBfTkdFX1VRICAgMHgxOSAvKiBOb3QtZ3JlYXRlci10aGFuLW9yLWVxdWFsICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpICAqLwojZGVmaW5lIF9DTVBfTkdUX1VRICAgMHgxYSAvKiBOb3QtZ3JlYXRlci10aGFuICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpICAqLwojZGVmaW5lIF9DTVBfRkFMU0VfT1MgMHgxYiAvKiBGYWxzZSAob3JkZXJlZCwgc2lnbmFsaW5nKSAgKi8KI2RlZmluZSBfQ01QX05FUV9PUyAgIDB4MWMgLyogTm90LWVxdWFsIChvcmRlcmVkLCBzaWduYWxpbmcpICAqLwojZGVmaW5lIF9DTVBfR0VfT1EgICAgMHgxZCAvKiBHcmVhdGVyLXRoYW4tb3ItZXF1YWwgKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpICAqLwojZGVmaW5lIF9DTVBfR1RfT1EgICAgMHgxZSAvKiBHcmVhdGVyLXRoYW4gKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpICAqLwojZGVmaW5lIF9DTVBfVFJVRV9VUyAgMHgxZiAvKiBUcnVlICh1bm9yZGVyZWQsIHNpZ25hbGluZykgICovCgovLy8gQ29tcGFyZXMgZWFjaCBvZiB0aGUgY29ycmVzcG9uZGluZyBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBvZiB0d28KLy8vICAgIDEyOC1iaXQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0sIHVzaW5nIHRoZSBvcGVyYXRpb24gc3BlY2lmaWVkIGJ5IHRoZQovLy8gICAgaW1tZWRpYXRlIGludGVnZXIgb3BlcmFuZC4KLy8vCi8vLyAgICBSZXR1cm5zIGEgWzIgeCBkb3VibGVdIHZlY3RvciBjb25zaXN0aW5nIG9mIHR3byBkb3VibGVzIGNvcnJlc3BvbmRpbmcgdG8KLy8vICAgIHRoZSB0d28gY29tcGFyaXNvbiByZXN1bHRzOiB6ZXJvIGlmIHRoZSBjb21wYXJpc29uIGlzIGZhbHNlLCBhbmQgYWxsIDEncwovLy8gICAgaWYgdGhlIGNvbXBhcmlzb24gaXMgdHJ1ZS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gXGNvZGUKLy8vIF9fbTEyOGQgX21tX2NtcF9wZChfX20xMjhkIGEsIF9fbTEyOGQgYiwgY29uc3QgaW50IGMpOwovLy8gXGVuZGNvZGUKLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBQRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBhCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4KLy8vIFxwYXJhbSBiCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4KLy8vIFxwYXJhbSBjCi8vLyAgICBBbiBpbW1lZGlhdGUgaW50ZWdlciBvcGVyYW5kLCB3aXRoIGJpdHMgWzQ6MF0gc3BlY2lmeWluZyB3aGljaCBjb21wYXJpc29uCi8vLyAgICBvcGVyYXRpb24gdG8gdXNlOiBcbgovLy8gICAgMHgwMDogRXF1YWwgKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuCi8vLyAgICAweDAxOiBMZXNzLXRoYW4gKG9yZGVyZWQsIHNpZ25hbGluZykgXG4KLy8vICAgIDB4MDI6IExlc3MtdGhhbi1vci1lcXVhbCAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbgovLy8gICAgMHgwMzogVW5vcmRlcmVkIChub24tc2lnbmFsaW5nKSBcbgovLy8gICAgMHgwNDogTm90LWVxdWFsICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuCi8vLyAgICAweDA1OiBOb3QtbGVzcy10aGFuICh1bm9yZGVyZWQsIHNpZ25hbGluZykgXG4KLy8vICAgIDB4MDY6IE5vdC1sZXNzLXRoYW4tb3ItZXF1YWwgKHVub3JkZXJlZCwgc2lnbmFsaW5nKSBcbgovLy8gICAgMHgwNzogT3JkZXJlZCAobm9uLXNpZ25hbGluZykgXG4KLy8vICAgIDB4MDg6IEVxdWFsICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuCi8vLyAgICAweDA5OiBOb3QtZ3JlYXRlci10aGFuLW9yLWVxdWFsICh1bm9yZGVyZWQsIHNpZ25hbGluZykgXG4KLy8vICAgIDB4MEE6IE5vdC1ncmVhdGVyLXRoYW4gKHVub3JkZXJlZCwgc2lnbmFsaW5nKSBcbgovLy8gICAgMHgwQjogRmFsc2UgKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuCi8vLyAgICAweDBDOiBOb3QtZXF1YWwgKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuCi8vLyAgICAweDBEOiBHcmVhdGVyLXRoYW4tb3ItZXF1YWwgKG9yZGVyZWQsIHNpZ25hbGluZykgXG4KLy8vICAgIDB4MEU6IEdyZWF0ZXItdGhhbiAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbgovLy8gICAgMHgwRjogVHJ1ZSAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbgovLy8gICAgMHgxMDogRXF1YWwgKG9yZGVyZWQsIHNpZ25hbGluZykgXG4KLy8vICAgIDB4MTE6IExlc3MtdGhhbiAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4KLy8vICAgIDB4MTI6IExlc3MtdGhhbi1vci1lcXVhbCAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4KLy8vICAgIDB4MTM6IFVub3JkZXJlZCAoc2lnbmFsaW5nKSBcbgovLy8gICAgMHgxNDogTm90LWVxdWFsICh1bm9yZGVyZWQsIHNpZ25hbGluZykgXG4KLy8vICAgIDB4MTU6IE5vdC1sZXNzLXRoYW4gKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4KLy8vICAgIDB4MTY6IE5vdC1sZXNzLXRoYW4tb3ItZXF1YWwgKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4KLy8vICAgIDB4MTc6IE9yZGVyZWQgKHNpZ25hbGluZykgXG4KLy8vICAgIDB4MTg6IEVxdWFsICh1bm9yZGVyZWQsIHNpZ25hbGluZykgXG4KLy8vICAgIDB4MTk6IE5vdC1ncmVhdGVyLXRoYW4tb3ItZXF1YWwgKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4KLy8vICAgIDB4MUE6IE5vdC1ncmVhdGVyLXRoYW4gKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4KLy8vICAgIDB4MUI6IEZhbHNlIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuCi8vLyAgICAweDFDOiBOb3QtZXF1YWwgKG9yZGVyZWQsIHNpZ25hbGluZykgXG4KLy8vICAgIDB4MUQ6IEdyZWF0ZXItdGhhbi1vci1lcXVhbCAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4KLy8vICAgIDB4MUU6IEdyZWF0ZXItdGhhbiAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4KLy8vICAgIDB4MUY6IFRydWUgKHVub3JkZXJlZCwgc2lnbmFsaW5nKQovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLgojZGVmaW5lIF9tbV9jbXBfcGQoYSwgYiwgYykgXAogICgoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9jbXBwZCgoX192MmRmKShfX20xMjhkKShhKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShiKSwgKGMpKSkKCi8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlcyBvZiB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mCi8vLyAgICBbNCB4IGZsb2F0XSwgdXNpbmcgdGhlIG9wZXJhdGlvbiBzcGVjaWZpZWQgYnkgdGhlIGltbWVkaWF0ZSBpbnRlZ2VyCi8vLyAgICBvcGVyYW5kLgovLy8KLy8vICAgIFJldHVybnMgYSBbNCB4IGZsb2F0XSB2ZWN0b3IgY29uc2lzdGluZyBvZiBmb3VyIGZsb2F0cyBjb3JyZXNwb25kaW5nIHRvCi8vLyAgICB0aGUgZm91ciBjb21wYXJpc29uIHJlc3VsdHM6IHplcm8gaWYgdGhlIGNvbXBhcmlzb24gaXMgZmFsc2UsIGFuZCBhbGwgMSdzCi8vLyAgICBpZiB0aGUgY29tcGFyaXNvbiBpcyB0cnVlLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBcY29kZQovLy8gX19tMTI4IF9tbV9jbXBfcHMoX19tMTI4IGEsIF9fbTEyOCBiLCBjb25zdCBpbnQgYyk7Ci8vLyBcZW5kY29kZQovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUFBTIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIGEKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uCi8vLyBccGFyYW0gYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4KLy8vIFxwYXJhbSBjCi8vLyAgICBBbiBpbW1lZGlhdGUgaW50ZWdlciBvcGVyYW5kLCB3aXRoIGJpdHMgWzQ6MF0gc3BlY2lmeWluZyB3aGljaCBjb21wYXJpc29uCi8vLyAgICBvcGVyYXRpb24gdG8gdXNlOiBcbgovLy8gICAgMHgwMDogRXF1YWwgKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuCi8vLyAgICAweDAxOiBMZXNzLXRoYW4gKG9yZGVyZWQsIHNpZ25hbGluZykgXG4KLy8vICAgIDB4MDI6IExlc3MtdGhhbi1vci1lcXVhbCAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbgovLy8gICAgMHgwMzogVW5vcmRlcmVkIChub24tc2lnbmFsaW5nKSBcbgovLy8gICAgMHgwNDogTm90LWVxdWFsICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuCi8vLyAgICAweDA1OiBOb3QtbGVzcy10aGFuICh1bm9yZGVyZWQsIHNpZ25hbGluZykgXG4KLy8vICAgIDB4MDY6IE5vdC1sZXNzLXRoYW4tb3ItZXF1YWwgKHVub3JkZXJlZCwgc2lnbmFsaW5nKSBcbgovLy8gICAgMHgwNzogT3JkZXJlZCAobm9uLXNpZ25hbGluZykgXG4KLy8vICAgIDB4MDg6IEVxdWFsICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuCi8vLyAgICAweDA5OiBOb3QtZ3JlYXRlci10aGFuLW9yLWVxdWFsICh1bm9yZGVyZWQsIHNpZ25hbGluZykgXG4KLy8vICAgIDB4MEE6IE5vdC1ncmVhdGVyLXRoYW4gKHVub3JkZXJlZCwgc2lnbmFsaW5nKSBcbgovLy8gICAgMHgwQjogRmFsc2UgKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuCi8vLyAgICAweDBDOiBOb3QtZXF1YWwgKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuCi8vLyAgICAweDBEOiBHcmVhdGVyLXRoYW4tb3ItZXF1YWwgKG9yZGVyZWQsIHNpZ25hbGluZykgXG4KLy8vICAgIDB4MEU6IEdyZWF0ZXItdGhhbiAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbgovLy8gICAgMHgwRjogVHJ1ZSAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbgovLy8gICAgMHgxMDogRXF1YWwgKG9yZGVyZWQsIHNpZ25hbGluZykgXG4KLy8vICAgIDB4MTE6IExlc3MtdGhhbiAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4KLy8vICAgIDB4MTI6IExlc3MtdGhhbi1vci1lcXVhbCAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4KLy8vICAgIDB4MTM6IFVub3JkZXJlZCAoc2lnbmFsaW5nKSBcbgovLy8gICAgMHgxNDogTm90LWVxdWFsICh1bm9yZGVyZWQsIHNpZ25hbGluZykgXG4KLy8vICAgIDB4MTU6IE5vdC1sZXNzLXRoYW4gKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4KLy8vICAgIDB4MTY6IE5vdC1sZXNzLXRoYW4tb3ItZXF1YWwgKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4KLy8vICAgIDB4MTc6IE9yZGVyZWQgKHNpZ25hbGluZykgXG4KLy8vICAgIDB4MTg6IEVxdWFsICh1bm9yZGVyZWQsIHNpZ25hbGluZykgXG4KLy8vICAgIDB4MTk6IE5vdC1ncmVhdGVyLXRoYW4tb3ItZXF1YWwgKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4KLy8vICAgIDB4MUE6IE5vdC1ncmVhdGVyLXRoYW4gKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4KLy8vICAgIDB4MUI6IEZhbHNlIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuCi8vLyAgICAweDFDOiBOb3QtZXF1YWwgKG9yZGVyZWQsIHNpZ25hbGluZykgXG4KLy8vICAgIDB4MUQ6IEdyZWF0ZXItdGhhbi1vci1lcXVhbCAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4KLy8vICAgIDB4MUU6IEdyZWF0ZXItdGhhbiAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4KLy8vICAgIDB4MUY6IFRydWUgKHVub3JkZXJlZCwgc2lnbmFsaW5nKQovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuCiNkZWZpbmUgX21tX2NtcF9wcyhhLCBiLCBjKSBcCiAgKChfX20xMjgpX19idWlsdGluX2lhMzJfY21wcHMoKF9fdjRzZikoX19tMTI4KShhKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoYiksIChjKSkpCgovLy8gQ29tcGFyZXMgZWFjaCBvZiB0aGUgY29ycmVzcG9uZGluZyBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBvZiB0d28KLy8vICAgIDI1Ni1iaXQgdmVjdG9ycyBvZiBbNCB4IGRvdWJsZV0sIHVzaW5nIHRoZSBvcGVyYXRpb24gc3BlY2lmaWVkIGJ5IHRoZQovLy8gICAgaW1tZWRpYXRlIGludGVnZXIgb3BlcmFuZC4KLy8vCi8vLyAgICBSZXR1cm5zIGEgWzQgeCBkb3VibGVdIHZlY3RvciBjb25zaXN0aW5nIG9mIGZvdXIgZG91YmxlcyBjb3JyZXNwb25kaW5nIHRvCi8vLyAgICB0aGUgZm91ciBjb21wYXJpc29uIHJlc3VsdHM6IHplcm8gaWYgdGhlIGNvbXBhcmlzb24gaXMgZmFsc2UsIGFuZCBhbGwgMSdzCi8vLyAgICBpZiB0aGUgY29tcGFyaXNvbiBpcyB0cnVlLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBcY29kZQovLy8gX19tMjU2ZCBfbW0yNTZfY21wX3BkKF9fbTI1NmQgYSwgX19tMjU2ZCBiLCBjb25zdCBpbnQgYyk7Ci8vLyBcZW5kY29kZQovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUFBEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIGEKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLgovLy8gXHBhcmFtIGIKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLgovLy8gXHBhcmFtIGMKLy8vICAgIEFuIGltbWVkaWF0ZSBpbnRlZ2VyIG9wZXJhbmQsIHdpdGggYml0cyBbNDowXSBzcGVjaWZ5aW5nIHdoaWNoIGNvbXBhcmlzb24KLy8vICAgIG9wZXJhdGlvbiB0byB1c2U6IFxuCi8vLyAgICAweDAwOiBFcXVhbCAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4KLy8vICAgIDB4MDE6IExlc3MtdGhhbiAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbgovLy8gICAgMHgwMjogTGVzcy10aGFuLW9yLWVxdWFsIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuCi8vLyAgICAweDAzOiBVbm9yZGVyZWQgKG5vbi1zaWduYWxpbmcpIFxuCi8vLyAgICAweDA0OiBOb3QtZXF1YWwgKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4KLy8vICAgIDB4MDU6IE5vdC1sZXNzLXRoYW4gKHVub3JkZXJlZCwgc2lnbmFsaW5nKSBcbgovLy8gICAgMHgwNjogTm90LWxlc3MtdGhhbi1vci1lcXVhbCAodW5vcmRlcmVkLCBzaWduYWxpbmcpIFxuCi8vLyAgICAweDA3OiBPcmRlcmVkIChub24tc2lnbmFsaW5nKSBcbgovLy8gICAgMHgwODogRXF1YWwgKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4KLy8vICAgIDB4MDk6IE5vdC1ncmVhdGVyLXRoYW4tb3ItZXF1YWwgKHVub3JkZXJlZCwgc2lnbmFsaW5nKSBcbgovLy8gICAgMHgwQTogTm90LWdyZWF0ZXItdGhhbiAodW5vcmRlcmVkLCBzaWduYWxpbmcpIFxuCi8vLyAgICAweDBCOiBGYWxzZSAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4KLy8vICAgIDB4MEM6IE5vdC1lcXVhbCAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4KLy8vICAgIDB4MEQ6IEdyZWF0ZXItdGhhbi1vci1lcXVhbCAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbgovLy8gICAgMHgwRTogR3JlYXRlci10aGFuIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuCi8vLyAgICAweDBGOiBUcnVlICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuCi8vLyAgICAweDEwOiBFcXVhbCAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbgovLy8gICAgMHgxMTogTGVzcy10aGFuIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbgovLy8gICAgMHgxMjogTGVzcy10aGFuLW9yLWVxdWFsIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbgovLy8gICAgMHgxMzogVW5vcmRlcmVkIChzaWduYWxpbmcpIFxuCi8vLyAgICAweDE0OiBOb3QtZXF1YWwgKHVub3JkZXJlZCwgc2lnbmFsaW5nKSBcbgovLy8gICAgMHgxNTogTm90LWxlc3MtdGhhbiAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbgovLy8gICAgMHgxNjogTm90LWxlc3MtdGhhbi1vci1lcXVhbCAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbgovLy8gICAgMHgxNzogT3JkZXJlZCAoc2lnbmFsaW5nKSBcbgovLy8gICAgMHgxODogRXF1YWwgKHVub3JkZXJlZCwgc2lnbmFsaW5nKSBcbgovLy8gICAgMHgxOTogTm90LWdyZWF0ZXItdGhhbi1vci1lcXVhbCAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbgovLy8gICAgMHgxQTogTm90LWdyZWF0ZXItdGhhbiAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbgovLy8gICAgMHgxQjogRmFsc2UgKG9yZGVyZWQsIHNpZ25hbGluZykgXG4KLy8vICAgIDB4MUM6IE5vdC1lcXVhbCAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbgovLy8gICAgMHgxRDogR3JlYXRlci10aGFuLW9yLWVxdWFsIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbgovLy8gICAgMHgxRTogR3JlYXRlci10aGFuIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbgovLy8gICAgMHgxRjogVHJ1ZSAodW5vcmRlcmVkLCBzaWduYWxpbmcpCi8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuCiNkZWZpbmUgX21tMjU2X2NtcF9wZChhLCBiLCBjKSBcCiAgKChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX2NtcHBkMjU2KChfX3Y0ZGYpKF9fbTI1NmQpKGEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpKF9fbTI1NmQpKGIpLCAoYykpKQoKLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWVzIG9mIHR3byAyNTYtYml0IHZlY3RvcnMgb2YKLy8vICAgIFs4IHggZmxvYXRdLCB1c2luZyB0aGUgb3BlcmF0aW9uIHNwZWNpZmllZCBieSB0aGUgaW1tZWRpYXRlIGludGVnZXIKLy8vICAgIG9wZXJhbmQuCi8vLwovLy8gICAgUmV0dXJucyBhIFs4IHggZmxvYXRdIHZlY3RvciBjb25zaXN0aW5nIG9mIGVpZ2h0IGZsb2F0cyBjb3JyZXNwb25kaW5nIHRvCi8vLyAgICB0aGUgZWlnaHQgY29tcGFyaXNvbiByZXN1bHRzOiB6ZXJvIGlmIHRoZSBjb21wYXJpc29uIGlzIGZhbHNlLCBhbmQgYWxsCi8vLyAgICAxJ3MgaWYgdGhlIGNvbXBhcmlzb24gaXMgdHJ1ZS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gXGNvZGUKLy8vIF9fbTI1NiBfbW0yNTZfY21wX3BzKF9fbTI1NiBhLCBfX20yNTYgYiwgY29uc3QgaW50IGMpOwovLy8gXGVuZGNvZGUKLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBQUyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBhCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLgovLy8gXHBhcmFtIGIKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uCi8vLyBccGFyYW0gYwovLy8gICAgQW4gaW1tZWRpYXRlIGludGVnZXIgb3BlcmFuZCwgd2l0aCBiaXRzIFs0OjBdIHNwZWNpZnlpbmcgd2hpY2ggY29tcGFyaXNvbgovLy8gICAgb3BlcmF0aW9uIHRvIHVzZTogXG4KLy8vICAgIDB4MDA6IEVxdWFsIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbgovLy8gICAgMHgwMTogTGVzcy10aGFuIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuCi8vLyAgICAweDAyOiBMZXNzLXRoYW4tb3ItZXF1YWwgKG9yZGVyZWQsIHNpZ25hbGluZykgXG4KLy8vICAgIDB4MDM6IFVub3JkZXJlZCAobm9uLXNpZ25hbGluZykgXG4KLy8vICAgIDB4MDQ6IE5vdC1lcXVhbCAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbgovLy8gICAgMHgwNTogTm90LWxlc3MtdGhhbiAodW5vcmRlcmVkLCBzaWduYWxpbmcpIFxuCi8vLyAgICAweDA2OiBOb3QtbGVzcy10aGFuLW9yLWVxdWFsICh1bm9yZGVyZWQsIHNpZ25hbGluZykgXG4KLy8vICAgIDB4MDc6IE9yZGVyZWQgKG5vbi1zaWduYWxpbmcpIFxuCi8vLyAgICAweDA4OiBFcXVhbCAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbgovLy8gICAgMHgwOTogTm90LWdyZWF0ZXItdGhhbi1vci1lcXVhbCAodW5vcmRlcmVkLCBzaWduYWxpbmcpIFxuCi8vLyAgICAweDBBOiBOb3QtZ3JlYXRlci10aGFuICh1bm9yZGVyZWQsIHNpZ25hbGluZykgXG4KLy8vICAgIDB4MEI6IEZhbHNlIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbgovLy8gICAgMHgwQzogTm90LWVxdWFsIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbgovLy8gICAgMHgwRDogR3JlYXRlci10aGFuLW9yLWVxdWFsIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuCi8vLyAgICAweDBFOiBHcmVhdGVyLXRoYW4gKG9yZGVyZWQsIHNpZ25hbGluZykgXG4KLy8vICAgIDB4MEY6IFRydWUgKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4KLy8vICAgIDB4MTA6IEVxdWFsIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuCi8vLyAgICAweDExOiBMZXNzLXRoYW4gKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuCi8vLyAgICAweDEyOiBMZXNzLXRoYW4tb3ItZXF1YWwgKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuCi8vLyAgICAweDEzOiBVbm9yZGVyZWQgKHNpZ25hbGluZykgXG4KLy8vICAgIDB4MTQ6IE5vdC1lcXVhbCAodW5vcmRlcmVkLCBzaWduYWxpbmcpIFxuCi8vLyAgICAweDE1OiBOb3QtbGVzcy10aGFuICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuCi8vLyAgICAweDE2OiBOb3QtbGVzcy10aGFuLW9yLWVxdWFsICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuCi8vLyAgICAweDE3OiBPcmRlcmVkIChzaWduYWxpbmcpIFxuCi8vLyAgICAweDE4OiBFcXVhbCAodW5vcmRlcmVkLCBzaWduYWxpbmcpIFxuCi8vLyAgICAweDE5OiBOb3QtZ3JlYXRlci10aGFuLW9yLWVxdWFsICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuCi8vLyAgICAweDFBOiBOb3QtZ3JlYXRlci10aGFuICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuCi8vLyAgICAweDFCOiBGYWxzZSAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbgovLy8gICAgMHgxQzogTm90LWVxdWFsIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuCi8vLyAgICAweDFEOiBHcmVhdGVyLXRoYW4tb3ItZXF1YWwgKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuCi8vLyAgICAweDFFOiBHcmVhdGVyLXRoYW4gKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuCi8vLyAgICAweDFGOiBUcnVlICh1bm9yZGVyZWQsIHNpZ25hbGluZykKLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLgojZGVmaW5lIF9tbTI1Nl9jbXBfcHMoYSwgYiwgYykgXAogICgoX19tMjU2KV9fYnVpbHRpbl9pYTMyX2NtcHBzMjU2KChfX3Y4c2YpKF9fbTI1NikoYSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKShfX20yNTYpKGIpLCAoYykpKQoKLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgc2NhbGFyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIG9mCi8vLyAgICB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXSwgdXNpbmcgdGhlIG9wZXJhdGlvbiBzcGVjaWZpZWQgYnkgdGhlCi8vLyAgICBpbW1lZGlhdGUgaW50ZWdlciBvcGVyYW5kLgovLy8KLy8vICAgIElmIHRoZSByZXN1bHQgaXMgdHJ1ZSwgYWxsIDY0IGJpdHMgb2YgdGhlIGRlc3RpbmF0aW9uIHZlY3RvciBhcmUgc2V0OwovLy8gICAgb3RoZXJ3aXNlIHRoZXkgYXJlIGNsZWFyZWQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFxjb2RlCi8vLyBfX20xMjhkIF9tbV9jbXBfc2QoX19tMTI4ZCBhLCBfX20xMjhkIGIsIGNvbnN0IGludCBjKTsKLy8vIFxlbmRjb2RlCi8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QU0QgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uCi8vLyBccGFyYW0gYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uCi8vLyBccGFyYW0gYwovLy8gICAgQW4gaW1tZWRpYXRlIGludGVnZXIgb3BlcmFuZCwgd2l0aCBiaXRzIFs0OjBdIHNwZWNpZnlpbmcgd2hpY2ggY29tcGFyaXNvbgovLy8gICAgb3BlcmF0aW9uIHRvIHVzZTogXG4KLy8vICAgIDB4MDA6IEVxdWFsIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbgovLy8gICAgMHgwMTogTGVzcy10aGFuIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuCi8vLyAgICAweDAyOiBMZXNzLXRoYW4tb3ItZXF1YWwgKG9yZGVyZWQsIHNpZ25hbGluZykgXG4KLy8vICAgIDB4MDM6IFVub3JkZXJlZCAobm9uLXNpZ25hbGluZykgXG4KLy8vICAgIDB4MDQ6IE5vdC1lcXVhbCAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbgovLy8gICAgMHgwNTogTm90LWxlc3MtdGhhbiAodW5vcmRlcmVkLCBzaWduYWxpbmcpIFxuCi8vLyAgICAweDA2OiBOb3QtbGVzcy10aGFuLW9yLWVxdWFsICh1bm9yZGVyZWQsIHNpZ25hbGluZykgXG4KLy8vICAgIDB4MDc6IE9yZGVyZWQgKG5vbi1zaWduYWxpbmcpIFxuCi8vLyAgICAweDA4OiBFcXVhbCAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbgovLy8gICAgMHgwOTogTm90LWdyZWF0ZXItdGhhbi1vci1lcXVhbCAodW5vcmRlcmVkLCBzaWduYWxpbmcpIFxuCi8vLyAgICAweDBBOiBOb3QtZ3JlYXRlci10aGFuICh1bm9yZGVyZWQsIHNpZ25hbGluZykgXG4KLy8vICAgIDB4MEI6IEZhbHNlIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbgovLy8gICAgMHgwQzogTm90LWVxdWFsIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbgovLy8gICAgMHgwRDogR3JlYXRlci10aGFuLW9yLWVxdWFsIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuCi8vLyAgICAweDBFOiBHcmVhdGVyLXRoYW4gKG9yZGVyZWQsIHNpZ25hbGluZykgXG4KLy8vICAgIDB4MEY6IFRydWUgKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4KLy8vICAgIDB4MTA6IEVxdWFsIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuCi8vLyAgICAweDExOiBMZXNzLXRoYW4gKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuCi8vLyAgICAweDEyOiBMZXNzLXRoYW4tb3ItZXF1YWwgKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuCi8vLyAgICAweDEzOiBVbm9yZGVyZWQgKHNpZ25hbGluZykgXG4KLy8vICAgIDB4MTQ6IE5vdC1lcXVhbCAodW5vcmRlcmVkLCBzaWduYWxpbmcpIFxuCi8vLyAgICAweDE1OiBOb3QtbGVzcy10aGFuICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuCi8vLyAgICAweDE2OiBOb3QtbGVzcy10aGFuLW9yLWVxdWFsICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuCi8vLyAgICAweDE3OiBPcmRlcmVkIChzaWduYWxpbmcpIFxuCi8vLyAgICAweDE4OiBFcXVhbCAodW5vcmRlcmVkLCBzaWduYWxpbmcpIFxuCi8vLyAgICAweDE5OiBOb3QtZ3JlYXRlci10aGFuLW9yLWVxdWFsICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuCi8vLyAgICAweDFBOiBOb3QtZ3JlYXRlci10aGFuICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuCi8vLyAgICAweDFCOiBGYWxzZSAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbgovLy8gICAgMHgxQzogTm90LWVxdWFsIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuCi8vLyAgICAweDFEOiBHcmVhdGVyLXRoYW4tb3ItZXF1YWwgKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuCi8vLyAgICAweDFFOiBHcmVhdGVyLXRoYW4gKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuCi8vLyAgICAweDFGOiBUcnVlICh1bm9yZGVyZWQsIHNpZ25hbGluZykKLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4KI2RlZmluZSBfbW1fY21wX3NkKGEsIGIsIGMpIFwKICAoKF9fbTEyOGQpX19idWlsdGluX2lhMzJfY21wc2QoKF9fdjJkZikoX19tMTI4ZCkoYSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikoX19tMTI4ZCkoYiksIChjKSkpCgovLy8gQ29tcGFyZXMgZWFjaCBvZiB0aGUgY29ycmVzcG9uZGluZyBzY2FsYXIgdmFsdWVzIG9mIHR3byAxMjgtYml0Ci8vLyAgICB2ZWN0b3JzIG9mIFs0IHggZmxvYXRdLCB1c2luZyB0aGUgb3BlcmF0aW9uIHNwZWNpZmllZCBieSB0aGUgaW1tZWRpYXRlCi8vLyAgICBpbnRlZ2VyIG9wZXJhbmQuCi8vLwovLy8gICAgSWYgdGhlIHJlc3VsdCBpcyB0cnVlLCBhbGwgMzIgYml0cyBvZiB0aGUgZGVzdGluYXRpb24gdmVjdG9yIGFyZSBzZXQ7Ci8vLyAgICBvdGhlcndpc2UgdGhleSBhcmUgY2xlYXJlZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gXGNvZGUKLy8vIF9fbTEyOCBfbW1fY21wX3NzKF9fbTEyOCBhLCBfX20xMjggYiwgY29uc3QgaW50IGMpOwovLy8gXGVuZGNvZGUKLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBTUyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBhCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLgovLy8gXHBhcmFtIGIKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uCi8vLyBccGFyYW0gYwovLy8gICAgQW4gaW1tZWRpYXRlIGludGVnZXIgb3BlcmFuZCwgd2l0aCBiaXRzIFs0OjBdIHNwZWNpZnlpbmcgd2hpY2ggY29tcGFyaXNvbgovLy8gICAgb3BlcmF0aW9uIHRvIHVzZTogXG4KLy8vICAgIDB4MDA6IEVxdWFsIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbgovLy8gICAgMHgwMTogTGVzcy10aGFuIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuCi8vLyAgICAweDAyOiBMZXNzLXRoYW4tb3ItZXF1YWwgKG9yZGVyZWQsIHNpZ25hbGluZykgXG4KLy8vICAgIDB4MDM6IFVub3JkZXJlZCAobm9uLXNpZ25hbGluZykgXG4KLy8vICAgIDB4MDQ6IE5vdC1lcXVhbCAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbgovLy8gICAgMHgwNTogTm90LWxlc3MtdGhhbiAodW5vcmRlcmVkLCBzaWduYWxpbmcpIFxuCi8vLyAgICAweDA2OiBOb3QtbGVzcy10aGFuLW9yLWVxdWFsICh1bm9yZGVyZWQsIHNpZ25hbGluZykgXG4KLy8vICAgIDB4MDc6IE9yZGVyZWQgKG5vbi1zaWduYWxpbmcpIFxuCi8vLyAgICAweDA4OiBFcXVhbCAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbgovLy8gICAgMHgwOTogTm90LWdyZWF0ZXItdGhhbi1vci1lcXVhbCAodW5vcmRlcmVkLCBzaWduYWxpbmcpIFxuCi8vLyAgICAweDBBOiBOb3QtZ3JlYXRlci10aGFuICh1bm9yZGVyZWQsIHNpZ25hbGluZykgXG4KLy8vICAgIDB4MEI6IEZhbHNlIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbgovLy8gICAgMHgwQzogTm90LWVxdWFsIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbgovLy8gICAgMHgwRDogR3JlYXRlci10aGFuLW9yLWVxdWFsIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuCi8vLyAgICAweDBFOiBHcmVhdGVyLXRoYW4gKG9yZGVyZWQsIHNpZ25hbGluZykgXG4KLy8vICAgIDB4MEY6IFRydWUgKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4KLy8vICAgIDB4MTA6IEVxdWFsIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuCi8vLyAgICAweDExOiBMZXNzLXRoYW4gKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuCi8vLyAgICAweDEyOiBMZXNzLXRoYW4tb3ItZXF1YWwgKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuCi8vLyAgICAweDEzOiBVbm9yZGVyZWQgKHNpZ25hbGluZykgXG4KLy8vICAgIDB4MTQ6IE5vdC1lcXVhbCAodW5vcmRlcmVkLCBzaWduYWxpbmcpIFxuCi8vLyAgICAweDE1OiBOb3QtbGVzcy10aGFuICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuCi8vLyAgICAweDE2OiBOb3QtbGVzcy10aGFuLW9yLWVxdWFsICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuCi8vLyAgICAweDE3OiBPcmRlcmVkIChzaWduYWxpbmcpIFxuCi8vLyAgICAweDE4OiBFcXVhbCAodW5vcmRlcmVkLCBzaWduYWxpbmcpIFxuCi8vLyAgICAweDE5OiBOb3QtZ3JlYXRlci10aGFuLW9yLWVxdWFsICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuCi8vLyAgICAweDFBOiBOb3QtZ3JlYXRlci10aGFuICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuCi8vLyAgICAweDFCOiBGYWxzZSAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbgovLy8gICAgMHgxQzogTm90LWVxdWFsIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuCi8vLyAgICAweDFEOiBHcmVhdGVyLXRoYW4tb3ItZXF1YWwgKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuCi8vLyAgICAweDFFOiBHcmVhdGVyLXRoYW4gKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuCi8vLyAgICAweDFGOiBUcnVlICh1bm9yZGVyZWQsIHNpZ25hbGluZykKLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLgojZGVmaW5lIF9tbV9jbXBfc3MoYSwgYiwgYykgXAogICgoX19tMTI4KV9fYnVpbHRpbl9pYTMyX2NtcHNzKChfX3Y0c2YpKF9fbTEyOCkoYSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKGIpLCAoYykpKQoKLy8vIFRha2VzIGEgWzggeCBpMzJdIHZlY3RvciBhbmQgcmV0dXJucyB0aGUgdmVjdG9yIGVsZW1lbnQgdmFsdWUKLy8vICAgIGluZGV4ZWQgYnkgdGhlIGltbWVkaWF0ZSBjb25zdGFudCBvcGVyYW5kLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZFWFRSQUNURjEyOCtDT01QT1NJVEUgPC9jPgovLy8gICBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggaTMyXS4KLy8vIFxwYXJhbSBfX2ltbQovLy8gICAgQW4gaW1tZWRpYXRlIGludGVnZXIgb3BlcmFuZCB3aXRoIGJpdHMgWzI6MF0gZGV0ZXJtaW5pbmcgd2hpY2ggdmVjdG9yCi8vLyAgICBlbGVtZW50IGlzIGV4dHJhY3RlZCBhbmQgcmV0dXJuZWQuCi8vLyBccmV0dXJucyBBIDMyLWJpdCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGV4dHJhY3RlZCAzMiBiaXRzIG9mIGV4dGVuZGVkCi8vLyAgICBwYWNrZWQgZGF0YS4KI2RlZmluZSBfbW0yNTZfZXh0cmFjdF9lcGkzMihYLCBOKSBcCiAgKChpbnQpX19idWlsdGluX2lhMzJfdmVjX2V4dF92OHNpKChfX3Y4c2kpKF9fbTI1NmkpKFgpLCAoaW50KShOKSkpCgovLy8gVGFrZXMgYSBbMTYgeCBpMTZdIHZlY3RvciBhbmQgcmV0dXJucyB0aGUgdmVjdG9yIGVsZW1lbnQgdmFsdWUKLy8vICAgIGluZGV4ZWQgYnkgdGhlIGltbWVkaWF0ZSBjb25zdGFudCBvcGVyYW5kLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZFWFRSQUNURjEyOCtDT01QT1NJVEUgPC9jPgovLy8gICBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzE2IHggaTE2XS4KLy8vIFxwYXJhbSBfX2ltbQovLy8gICAgQW4gaW1tZWRpYXRlIGludGVnZXIgb3BlcmFuZCB3aXRoIGJpdHMgWzM6MF0gZGV0ZXJtaW5pbmcgd2hpY2ggdmVjdG9yCi8vLyAgICBlbGVtZW50IGlzIGV4dHJhY3RlZCBhbmQgcmV0dXJuZWQuCi8vLyBccmV0dXJucyBBIDMyLWJpdCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGV4dHJhY3RlZCAxNiBiaXRzIG9mIHplcm8gZXh0ZW5kZWQKLy8vICAgIHBhY2tlZCBkYXRhLgojZGVmaW5lIF9tbTI1Nl9leHRyYWN0X2VwaTE2KFgsIE4pIFwKICAoKGludCkodW5zaWduZWQgc2hvcnQpX19idWlsdGluX2lhMzJfdmVjX2V4dF92MTZoaSgoX192MTZoaSkoX19tMjU2aSkoWCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShOKSkpCgovLy8gVGFrZXMgYSBbMzIgeCBpOF0gdmVjdG9yIGFuZCByZXR1cm5zIHRoZSB2ZWN0b3IgZWxlbWVudCB2YWx1ZQovLy8gICAgaW5kZXhlZCBieSB0aGUgaW1tZWRpYXRlIGNvbnN0YW50IG9wZXJhbmQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkVYVFJBQ1RGMTI4K0NPTVBPU0lURSA8L2M+Ci8vLyAgIGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMzIgeCBpOF0uCi8vLyBccGFyYW0gX19pbW0KLy8vICAgIEFuIGltbWVkaWF0ZSBpbnRlZ2VyIG9wZXJhbmQgd2l0aCBiaXRzIFs0OjBdIGRldGVybWluaW5nIHdoaWNoIHZlY3RvcgovLy8gICAgZWxlbWVudCBpcyBleHRyYWN0ZWQgYW5kIHJldHVybmVkLgovLy8gXHJldHVybnMgQSAzMi1iaXQgaW50ZWdlciBjb250YWluaW5nIHRoZSBleHRyYWN0ZWQgOCBiaXRzIG9mIHplcm8gZXh0ZW5kZWQKLy8vICAgIHBhY2tlZCBkYXRhLgojZGVmaW5lIF9tbTI1Nl9leHRyYWN0X2VwaTgoWCwgTikgXAogICgoaW50KSh1bnNpZ25lZCBjaGFyKV9fYnVpbHRpbl9pYTMyX3ZlY19leHRfdjMycWkoKF9fdjMycWkpKF9fbTI1NmkpKFgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShOKSkpCgojaWZkZWYgX194ODZfNjRfXwovLy8gVGFrZXMgYSBbNCB4IGk2NF0gdmVjdG9yIGFuZCByZXR1cm5zIHRoZSB2ZWN0b3IgZWxlbWVudCB2YWx1ZQovLy8gICAgaW5kZXhlZCBieSB0aGUgaW1tZWRpYXRlIGNvbnN0YW50IG9wZXJhbmQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkVYVFJBQ1RGMTI4K0NPTVBPU0lURSA8L2M+Ci8vLyAgIGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGk2NF0uCi8vLyBccGFyYW0gX19pbW0KLy8vICAgIEFuIGltbWVkaWF0ZSBpbnRlZ2VyIG9wZXJhbmQgd2l0aCBiaXRzIFsxOjBdIGRldGVybWluaW5nIHdoaWNoIHZlY3RvcgovLy8gICAgZWxlbWVudCBpcyBleHRyYWN0ZWQgYW5kIHJldHVybmVkLgovLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciBjb250YWluaW5nIHRoZSBleHRyYWN0ZWQgNjQgYml0cyBvZiBleHRlbmRlZAovLy8gICAgcGFja2VkIGRhdGEuCiNkZWZpbmUgX21tMjU2X2V4dHJhY3RfZXBpNjQoWCwgTikgXAogICgobG9uZyBsb25nKV9fYnVpbHRpbl9pYTMyX3ZlY19leHRfdjRkaSgoX192NGRpKShfX20yNTZpKShYKSwgKGludCkoTikpKQojZW5kaWYKCi8vLyBUYWtlcyBhIFs4IHggaTMyXSB2ZWN0b3IgYW5kIHJlcGxhY2VzIHRoZSB2ZWN0b3IgZWxlbWVudCB2YWx1ZQovLy8gICAgaW5kZXhlZCBieSB0aGUgaW1tZWRpYXRlIGNvbnN0YW50IG9wZXJhbmQgYnkgYSBuZXcgdmFsdWUuIFJldHVybnMgdGhlCi8vLyAgICBtb2RpZmllZCB2ZWN0b3IuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVklOU0VSVEYxMjgrQ09NUE9TSVRFIDwvYz4KLy8vICAgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSB2ZWN0b3Igb2YgWzggeCBpMzJdIHRvIGJlIHVzZWQgYnkgdGhlIGluc2VydCBvcGVyYXRpb24uCi8vLyBccGFyYW0gX19iCi8vLyAgICBBbiBpbnRlZ2VyIHZhbHVlLiBUaGUgcmVwbGFjZW1lbnQgdmFsdWUgZm9yIHRoZSBpbnNlcnQgb3BlcmF0aW9uLgovLy8gXHBhcmFtIF9faW1tCi8vLyAgICBBbiBpbW1lZGlhdGUgaW50ZWdlciBzcGVjaWZ5aW5nIHRoZSBpbmRleCBvZiB0aGUgdmVjdG9yIGVsZW1lbnQgdG8gYmUKLy8vICAgIHJlcGxhY2VkLgovLy8gXHJldHVybnMgQSBjb3B5IG9mIHZlY3RvciBcYSBfX2EsIGFmdGVyIHJlcGxhY2luZyBpdHMgZWxlbWVudCBpbmRleGVkIGJ5Ci8vLyAgICBcYSBfX2ltbSB3aXRoIFxhIF9fYi4KI2RlZmluZSBfbW0yNTZfaW5zZXJ0X2VwaTMyKFgsIEksIE4pIFwKICAoKF9fbTI1NmkpX19idWlsdGluX2lhMzJfdmVjX3NldF92OHNpKChfX3Y4c2kpKF9fbTI1NmkpKFgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShJKSwgKGludCkoTikpKQoKCi8vLyBUYWtlcyBhIFsxNiB4IGkxNl0gdmVjdG9yIGFuZCByZXBsYWNlcyB0aGUgdmVjdG9yIGVsZW1lbnQgdmFsdWUKLy8vICAgIGluZGV4ZWQgYnkgdGhlIGltbWVkaWF0ZSBjb25zdGFudCBvcGVyYW5kIHdpdGggYSBuZXcgdmFsdWUuIFJldHVybnMgdGhlCi8vLyAgICBtb2RpZmllZCB2ZWN0b3IuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVklOU0VSVEYxMjgrQ09NUE9TSVRFIDwvYz4KLy8vICAgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSB2ZWN0b3Igb2YgWzE2IHggaTE2XSB0byBiZSB1c2VkIGJ5IHRoZSBpbnNlcnQgb3BlcmF0aW9uLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQW4gaTE2IGludGVnZXIgdmFsdWUuIFRoZSByZXBsYWNlbWVudCB2YWx1ZSBmb3IgdGhlIGluc2VydCBvcGVyYXRpb24uCi8vLyBccGFyYW0gX19pbW0KLy8vICAgIEFuIGltbWVkaWF0ZSBpbnRlZ2VyIHNwZWNpZnlpbmcgdGhlIGluZGV4IG9mIHRoZSB2ZWN0b3IgZWxlbWVudCB0byBiZQovLy8gICAgcmVwbGFjZWQuCi8vLyBccmV0dXJucyBBIGNvcHkgb2YgdmVjdG9yIFxhIF9fYSwgYWZ0ZXIgcmVwbGFjaW5nIGl0cyBlbGVtZW50IGluZGV4ZWQgYnkKLy8vICAgIFxhIF9faW1tIHdpdGggXGEgX19iLgojZGVmaW5lIF9tbTI1Nl9pbnNlcnRfZXBpMTYoWCwgSSwgTikgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl92ZWNfc2V0X3YxNmhpKChfX3YxNmhpKShfX20yNTZpKShYKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKEkpLCAoaW50KShOKSkpCgovLy8gVGFrZXMgYSBbMzIgeCBpOF0gdmVjdG9yIGFuZCByZXBsYWNlcyB0aGUgdmVjdG9yIGVsZW1lbnQgdmFsdWUKLy8vICAgIGluZGV4ZWQgYnkgdGhlIGltbWVkaWF0ZSBjb25zdGFudCBvcGVyYW5kIHdpdGggYSBuZXcgdmFsdWUuIFJldHVybnMgdGhlCi8vLyAgICBtb2RpZmllZCB2ZWN0b3IuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVklOU0VSVEYxMjgrQ09NUE9TSVRFIDwvYz4KLy8vICAgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSB2ZWN0b3Igb2YgWzMyIHggaThdIHRvIGJlIHVzZWQgYnkgdGhlIGluc2VydCBvcGVyYXRpb24uCi8vLyBccGFyYW0gX19iCi8vLyAgICBBbiBpOCBpbnRlZ2VyIHZhbHVlLiBUaGUgcmVwbGFjZW1lbnQgdmFsdWUgZm9yIHRoZSBpbnNlcnQgb3BlcmF0aW9uLgovLy8gXHBhcmFtIF9faW1tCi8vLyAgICBBbiBpbW1lZGlhdGUgaW50ZWdlciBzcGVjaWZ5aW5nIHRoZSBpbmRleCBvZiB0aGUgdmVjdG9yIGVsZW1lbnQgdG8gYmUKLy8vICAgIHJlcGxhY2VkLgovLy8gXHJldHVybnMgQSBjb3B5IG9mIHZlY3RvciBcYSBfX2EsIGFmdGVyIHJlcGxhY2luZyBpdHMgZWxlbWVudCBpbmRleGVkIGJ5Ci8vLyAgICBcYSBfX2ltbSB3aXRoIFxhIF9fYi4KI2RlZmluZSBfbW0yNTZfaW5zZXJ0X2VwaTgoWCwgSSwgTikgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl92ZWNfc2V0X3YzMnFpKChfX3YzMnFpKShfX20yNTZpKShYKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKEkpLCAoaW50KShOKSkpCgojaWZkZWYgX194ODZfNjRfXwovLy8gVGFrZXMgYSBbNCB4IGk2NF0gdmVjdG9yIGFuZCByZXBsYWNlcyB0aGUgdmVjdG9yIGVsZW1lbnQgdmFsdWUKLy8vICAgIGluZGV4ZWQgYnkgdGhlIGltbWVkaWF0ZSBjb25zdGFudCBvcGVyYW5kIHdpdGggYSBuZXcgdmFsdWUuIFJldHVybnMgdGhlCi8vLyAgICBtb2RpZmllZCB2ZWN0b3IuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVklOU0VSVEYxMjgrQ09NUE9TSVRFIDwvYz4KLy8vICAgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSB2ZWN0b3Igb2YgWzQgeCBpNjRdIHRvIGJlIHVzZWQgYnkgdGhlIGluc2VydCBvcGVyYXRpb24uCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZhbHVlLiBUaGUgcmVwbGFjZW1lbnQgdmFsdWUgZm9yIHRoZSBpbnNlcnQgb3BlcmF0aW9uLgovLy8gXHBhcmFtIF9faW1tCi8vLyAgICBBbiBpbW1lZGlhdGUgaW50ZWdlciBzcGVjaWZ5aW5nIHRoZSBpbmRleCBvZiB0aGUgdmVjdG9yIGVsZW1lbnQgdG8gYmUKLy8vICAgIHJlcGxhY2VkLgovLy8gXHJldHVybnMgQSBjb3B5IG9mIHZlY3RvciBcYSBfX2EsIGFmdGVyIHJlcGxhY2luZyBpdHMgZWxlbWVudCBpbmRleGVkIGJ5Ci8vLyAgICAgXGEgX19pbW0gd2l0aCBcYSBfX2IuCiNkZWZpbmUgX21tMjU2X2luc2VydF9lcGk2NChYLCBJLCBOKSBcCiAgKChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3ZlY19zZXRfdjRkaSgoX192NGRpKShfX20yNTZpKShYKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoSSksIChpbnQpKE4pKSkKI2VuZGlmCgovKiBDb252ZXJzaW9uICovCi8vLyBDb252ZXJ0cyBhIHZlY3RvciBvZiBbNCB4IGkzMl0gaW50byBhIHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNWVERRMlBEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTMyXS4KLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRlZCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW0yNTZfY3Z0ZXBpMzJfcGQoX19tMTI4aSBfX2EpCnsKICByZXR1cm4gKF9fbTI1NmQpX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoKF9fdjRzaSlfX2EsIF9fdjRkZik7Cn0KCi8vLyBDb252ZXJ0cyBhIHZlY3RvciBvZiBbOCB4IGkzMl0gaW50byBhIHZlY3RvciBvZiBbOCB4IGZsb2F0XS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ1ZURFEyUFMgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IuCi8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRlZCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl9jdnRlcGkzMl9wcyhfX20yNTZpIF9fYSkKewogIHJldHVybiAoX19tMjU2KV9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKChfX3Y4c2kpX19hLCBfX3Y4c2YpOwp9CgovLy8gQ29udmVydHMgYSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gaW50byBhIDEyOC1iaXQgdmVjdG9yIG9mCi8vLyAgICBbNCB4IGZsb2F0XS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ1ZUUEQyUFMgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29udmVydGVkIHZhbHVlcy4Kc3RhdGljIF9faW5saW5lIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tMjU2X2N2dHBkX3BzKF9fbTI1NmQgX19hKQp7CiAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfY3Z0cGQycHMyNTYoKF9fdjRkZikgX19hKTsKfQoKLy8vIENvbnZlcnRzIGEgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGludG8gYSB2ZWN0b3Igb2YgWzggeCBpMzJdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDVlRQUzJEUSA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uCi8vLyBccmV0dXJucyBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29udmVydGVkIHZhbHVlcy4Kc3RhdGljIF9faW5saW5lIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl9jdnRwc19lcGkzMihfX20yNTYgX19hKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX2N2dHBzMmRxMjU2KChfX3Y4c2YpIF9fYSk7Cn0KCi8vLyBDb252ZXJ0cyBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGludG8gYSAyNTYtYml0IHZlY3RvciBvZiBbNAovLy8gICAgeCBkb3VibGVdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDVlRQUzJQRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uCi8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZSBjb252ZXJ0ZWQgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmUgX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tMjU2X2N2dHBzX3BkKF9fbTEyOCBfX2EpCnsKICByZXR1cm4gKF9fbTI1NmQpX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoKF9fdjRzZilfX2EsIF9fdjRkZik7Cn0KCi8vLyBDb252ZXJ0cyBhIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBpbnRvIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQKLy8vICAgIHggaTMyXSwgdHJ1bmNhdGluZyB0aGUgcmVzdWx0IGJ5IHJvdW5kaW5nIHRvd2FyZHMgemVybyB3aGVuIGl0IGlzCi8vLyAgICBpbmV4YWN0LgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDVlRUUEQyRFEgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBjb252ZXJ0ZWQgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmUgX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tMjU2X2N2dHRwZF9lcGkzMihfX20yNTZkIF9fYSkKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9jdnR0cGQyZHEyNTYoKF9fdjRkZikgX19hKTsKfQoKLy8vIENvbnZlcnRzIGEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGludG8gYSAxMjgtYml0IHZlY3RvciBvZiBbNAovLy8gICAgeCBpMzJdLiBXaGVuIGEgY29udmVyc2lvbiBpcyBpbmV4YWN0LCB0aGUgdmFsdWUgcmV0dXJuZWQgaXMgcm91bmRlZAovLy8gICAgYWNjb3JkaW5nIHRvIHRoZSByb3VuZGluZyBjb250cm9sIGJpdHMgaW4gdGhlIE1YQ1NSIHJlZ2lzdGVyLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDVlRQRDJEUSA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLgovLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRlZCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZSBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW0yNTZfY3Z0cGRfZXBpMzIoX19tMjU2ZCBfX2EpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfY3Z0cGQyZHEyNTYoKF9fdjRkZikgX19hKTsKfQoKLy8vIENvbnZlcnRzIGEgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGludG8gYSB2ZWN0b3Igb2YgWzggeCBpMzJdLAovLy8gICAgdHJ1bmNhdGluZyB0aGUgcmVzdWx0IGJ5IHJvdW5kaW5nIHRvd2FyZHMgemVybyB3aGVuIGl0IGlzIGluZXhhY3QuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNWVFRQUzJEUSA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uCi8vLyBccmV0dXJucyBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29udmVydGVkIHZhbHVlcy4Kc3RhdGljIF9faW5saW5lIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl9jdnR0cHNfZXBpMzIoX19tMjU2IF9fYSkKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9jdnR0cHMyZHEyNTYoKF9fdjhzZikgX19hKTsKfQoKLy8vIFJldHVybnMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIGlucHV0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGlzIGEgdXRpbGl0eSBmdW5jdGlvbiBhbmQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHNwZWNpZmljCi8vLyAgICBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4KLy8vIFxyZXR1cm5zIEEgNjQgYml0IGRvdWJsZSBjb250YWluaW5nIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSBpbnB1dCB2ZWN0b3IuCnN0YXRpYyBfX2lubGluZSBkb3VibGUgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl9jdnRzZF9mNjQoX19tMjU2ZCBfX2EpCnsKIHJldHVybiBfX2FbMF07Cn0KCi8vLyBSZXR1cm5zIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSBpbnB1dCB2ZWN0b3Igb2YgWzggeCBpMzJdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBpcyBhIHV0aWxpdHkgZnVuY3Rpb24gYW5kIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBzcGVjaWZpYwovLy8gICAgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGkzMl0uCi8vLyBccmV0dXJucyBBIDMyIGJpdCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIGlucHV0IHZlY3Rvci4Kc3RhdGljIF9faW5saW5lIGludCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tMjU2X2N2dHNpMjU2X3NpMzIoX19tMjU2aSBfX2EpCnsKIF9fdjhzaSBfX2IgPSAoX192OHNpKV9fYTsKIHJldHVybiBfX2JbMF07Cn0KCi8vLyBSZXR1cm5zIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSBpbnB1dCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGlzIGEgdXRpbGl0eSBmdW5jdGlvbiBhbmQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHNwZWNpZmljCi8vLyAgICBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLgovLy8gXHJldHVybnMgQSAzMiBiaXQgZmxvYXQgY29udGFpbmluZyB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGUgaW5wdXQgdmVjdG9yLgpzdGF0aWMgX19pbmxpbmUgZmxvYXQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl9jdnRzc19mMzIoX19tMjU2IF9fYSkKewogcmV0dXJuIF9fYVswXTsKfQoKLyogVmVjdG9yIHJlcGxpY2F0ZSAqLwovLy8gTW92ZXMgYW5kIGR1cGxpY2F0ZXMgb2RkLWluZGV4ZWQgdmFsdWVzIGZyb20gYSAyNTYtYml0IHZlY3RvciBvZgovLy8gICAgWzggeCBmbG9hdF0gdG8gZmxvYXQgdmFsdWVzIGluIGEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVlNIRFVQIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4gXG4KLy8vICAgIEJpdHMgWzI1NToyMjRdIG9mIFxhIF9fYSBhcmUgd3JpdHRlbiB0byBiaXRzIFsyNTU6MjI0XSBhbmQgWzIyMzoxOTJdIG9mCi8vLyAgICB0aGUgcmV0dXJuIHZhbHVlLiBcbgovLy8gICAgQml0cyBbMTkxOjE2MF0gb2YgXGEgX19hIGFyZSB3cml0dGVuIHRvIGJpdHMgWzE5MToxNjBdIGFuZCBbMTU5OjEyOF0gb2YKLy8vICAgIHRoZSByZXR1cm4gdmFsdWUuIFxuCi8vLyAgICBCaXRzIFsxMjc6OTZdIG9mIFxhIF9fYSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxMjc6OTZdIGFuZCBbOTU6NjRdIG9mIHRoZQovLy8gICAgcmV0dXJuIHZhbHVlLiBcbgovLy8gICAgQml0cyBbNjM6MzJdIG9mIFxhIF9fYSBhcmUgd3JpdHRlbiB0byBiaXRzIFs2MzozMl0gYW5kIFszMTowXSBvZiB0aGUKLy8vICAgIHJldHVybiB2YWx1ZS4KLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgbW92ZWQgYW5kIGR1cGxpY2F0ZWQKLy8vICAgIHZhbHVlcy4Kc3RhdGljIF9faW5saW5lIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMKX21tMjU2X21vdmVoZHVwX3BzKF9fbTI1NiBfX2EpCnsKICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjhzZilfX2EsIChfX3Y4c2YpX19hLCAxLCAxLCAzLCAzLCA1LCA1LCA3LCA3KTsKfQoKLy8vIE1vdmVzIGFuZCBkdXBsaWNhdGVzIGV2ZW4taW5kZXhlZCB2YWx1ZXMgZnJvbSBhIDI1Ni1iaXQgdmVjdG9yIG9mCi8vLyAgICBbOCB4IGZsb2F0XSB0byBmbG9hdCB2YWx1ZXMgaW4gYSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WU0xEVVAgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLiBcbgovLy8gICAgQml0cyBbMjIzOjE5Ml0gb2YgXGEgX19hIGFyZSB3cml0dGVuIHRvIGJpdHMgWzI1NToyMjRdIGFuZCBbMjIzOjE5Ml0gb2YKLy8vICAgIHRoZSByZXR1cm4gdmFsdWUuIFxuCi8vLyAgICBCaXRzIFsxNTk6MTI4XSBvZiBcYSBfX2EgYXJlIHdyaXR0ZW4gdG8gYml0cyBbMTkxOjE2MF0gYW5kIFsxNTk6MTI4XSBvZgovLy8gICAgdGhlIHJldHVybiB2YWx1ZS4gXG4KLy8vICAgIEJpdHMgWzk1OjY0XSBvZiBcYSBfX2EgYXJlIHdyaXR0ZW4gdG8gYml0cyBbMTI3Ojk2XSBhbmQgWzk1OjY0XSBvZiB0aGUKLy8vICAgIHJldHVybiB2YWx1ZS4gXG4KLy8vICAgIEJpdHMgWzMxOjBdIG9mIFxhIF9fYSBhcmUgd3JpdHRlbiB0byBiaXRzIFs2MzozMl0gYW5kIFszMTowXSBvZiB0aGUKLy8vICAgIHJldHVybiB2YWx1ZS4KLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgbW92ZWQgYW5kIGR1cGxpY2F0ZWQKLy8vICAgIHZhbHVlcy4Kc3RhdGljIF9faW5saW5lIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMKX21tMjU2X21vdmVsZHVwX3BzKF9fbTI1NiBfX2EpCnsKICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjhzZilfX2EsIChfX3Y4c2YpX19hLCAwLCAwLCAyLCAyLCA0LCA0LCA2LCA2KTsKfQoKLy8vIE1vdmVzIGFuZCBkdXBsaWNhdGVzIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgdmFsdWVzIGZyb20gYQovLy8gICAgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIHRvIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIGluIGEgMjU2LWJpdAovLy8gICAgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WRERVUCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLiBcbgovLy8gICAgQml0cyBbNjM6MF0gb2YgXGEgX19hIGFyZSB3cml0dGVuIHRvIGJpdHMgWzEyNzo2NF0gYW5kIFs2MzowXSBvZiB0aGUKLy8vICAgIHJldHVybiB2YWx1ZS4gXG4KLy8vICAgIEJpdHMgWzE5MToxMjhdIG9mIFxhIF9fYSBhcmUgd3JpdHRlbiB0byBiaXRzIFsyNTU6MTkyXSBhbmQgWzE5MToxMjhdIG9mCi8vLyAgICB0aGUgcmV0dXJuIHZhbHVlLgovLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgbW92ZWQgYW5kCi8vLyAgICBkdXBsaWNhdGVkIHZhbHVlcy4Kc3RhdGljIF9faW5saW5lIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl9tb3ZlZHVwX3BkKF9fbTI1NmQgX19hKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y0ZGYpX19hLCAoX192NGRmKV9fYSwgMCwgMCwgMiwgMik7Cn0KCi8qIFVucGFjayBhbmQgSW50ZXJsZWF2ZSAqLwovLy8gVW5wYWNrcyB0aGUgb2RkLWluZGV4ZWQgdmVjdG9yIGVsZW1lbnRzIGZyb20gdHdvIDI1Ni1iaXQgdmVjdG9ycyBvZgovLy8gICAgWzQgeCBkb3VibGVdIGFuZCBpbnRlcmxlYXZlcyB0aGVtIGludG8gYSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlVOUENLSFBEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uIFxuCi8vLyAgICBCaXRzIFsxMjc6NjRdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzYzOjBdIG9mIHRoZSByZXR1cm4gdmFsdWUuIFxuCi8vLyAgICBCaXRzIFsyNTU6MTkyXSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxOTE6MTI4XSBvZiB0aGUgcmV0dXJuIHZhbHVlLiBcbgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uIFxuCi8vLyAgICBCaXRzIFsxMjc6NjRdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzEyNzo2NF0gb2YgdGhlIHJldHVybiB2YWx1ZS4gXG4KLy8vICAgIEJpdHMgWzI1NToxOTJdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzI1NToxOTJdIG9mIHRoZSByZXR1cm4gdmFsdWUuIFxuCi8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZSBpbnRlcmxlYXZlZCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW0yNTZfdW5wYWNraGlfcGQoX19tMjU2ZCBfX2EsIF9fbTI1NmQgX19iKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y0ZGYpX19hLCAoX192NGRmKV9fYiwgMSwgNSwgMSsyLCA1KzIpOwp9CgovLy8gVW5wYWNrcyB0aGUgZXZlbi1pbmRleGVkIHZlY3RvciBlbGVtZW50cyBmcm9tIHR3byAyNTYtYml0IHZlY3RvcnMgb2YKLy8vICAgIFs0IHggZG91YmxlXSBhbmQgaW50ZXJsZWF2ZXMgdGhlbSBpbnRvIGEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZVTlBDS0xQRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLiBcbgovLy8gICAgQml0cyBbNjM6MF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbNjM6MF0gb2YgdGhlIHJldHVybiB2YWx1ZS4gXG4KLy8vICAgIEJpdHMgWzE5MToxMjhdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzE5MToxMjhdIG9mIHRoZSByZXR1cm4gdmFsdWUuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4gXG4KLy8vICAgIEJpdHMgWzYzOjBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzEyNzo2NF0gb2YgdGhlIHJldHVybiB2YWx1ZS4gXG4KLy8vICAgIEJpdHMgWzE5MToxMjhdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzI1NToxOTJdIG9mIHRoZSByZXR1cm4gdmFsdWUuIFxuCi8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZSBpbnRlcmxlYXZlZCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW0yNTZfdW5wYWNrbG9fcGQoX19tMjU2ZCBfX2EsIF9fbTI1NmQgX19iKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y0ZGYpX19hLCAoX192NGRmKV9fYiwgMCwgNCwgMCsyLCA0KzIpOwp9CgovLy8gVW5wYWNrcyB0aGUgMzItYml0IHZlY3RvciBlbGVtZW50cyAyLCAzLCA2IGFuZCA3IGZyb20gZWFjaCBvZiB0aGUKLy8vICAgIHR3byAyNTYtYml0IHZlY3RvcnMgb2YgWzggeCBmbG9hdF0gYW5kIGludGVybGVhdmVzIHRoZW0gaW50byBhIDI1Ni1iaXQKLy8vICAgIHZlY3RvciBvZiBbOCB4IGZsb2F0XS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWVU5QQ0tIUFMgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLiBcbgovLy8gICAgQml0cyBbOTU6NjRdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzMxOjBdIG9mIHRoZSByZXR1cm4gdmFsdWUuIFxuCi8vLyAgICBCaXRzIFsxMjc6OTZdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzk1OjY0XSBvZiB0aGUgcmV0dXJuIHZhbHVlLiBcbgovLy8gICAgQml0cyBbMjIzOjE5Ml0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMTU5OjEyOF0gb2YgdGhlIHJldHVybiB2YWx1ZS4gXG4KLy8vICAgIEJpdHMgWzI1NToyMjRdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzIyMzoxOTJdIG9mIHRoZSByZXR1cm4gdmFsdWUuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLiBcbgovLy8gICAgQml0cyBbOTU6NjRdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzYzOjMyXSBvZiB0aGUgcmV0dXJuIHZhbHVlLiBcbgovLy8gICAgQml0cyBbMTI3Ojk2XSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxMjc6OTZdIG9mIHRoZSByZXR1cm4gdmFsdWUuIFxuCi8vLyAgICBCaXRzIFsyMjM6MTkyXSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxOTE6MTYwXSBvZiB0aGUgcmV0dXJuIHZhbHVlLiBcbgovLy8gICAgQml0cyBbMjU1OjIyNF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMjU1OjIyNF0gb2YgdGhlIHJldHVybiB2YWx1ZS4KLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgaW50ZXJsZWF2ZWQgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUwpfbW0yNTZfdW5wYWNraGlfcHMoX19tMjU2IF9fYSwgX19tMjU2IF9fYikKewogIHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192OHNmKV9fYSwgKF9fdjhzZilfX2IsIDIsIDEwLCAyKzEsIDEwKzEsIDYsIDE0LCA2KzEsIDE0KzEpOwp9CgovLy8gVW5wYWNrcyB0aGUgMzItYml0IHZlY3RvciBlbGVtZW50cyAwLCAxLCA0IGFuZCA1IGZyb20gZWFjaCBvZiB0aGUKLy8vICAgIHR3byAyNTYtYml0IHZlY3RvcnMgb2YgWzggeCBmbG9hdF0gYW5kIGludGVybGVhdmVzIHRoZW0gaW50byBhIDI1Ni1iaXQKLy8vICAgIHZlY3RvciBvZiBbOCB4IGZsb2F0XS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWVU5QQ0tMUFMgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLiBcbgovLy8gICAgQml0cyBbMzE6MF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMzE6MF0gb2YgdGhlIHJldHVybiB2YWx1ZS4gXG4KLy8vICAgIEJpdHMgWzYzOjMyXSBhcmUgd3JpdHRlbiB0byBiaXRzIFs5NTo2NF0gb2YgdGhlIHJldHVybiB2YWx1ZS4gXG4KLy8vICAgIEJpdHMgWzE1OToxMjhdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzE1OToxMjhdIG9mIHRoZSByZXR1cm4gdmFsdWUuIFxuCi8vLyAgICBCaXRzIFsxOTE6MTYwXSBhcmUgd3JpdHRlbiB0byBiaXRzIFsyMjM6MTkyXSBvZiB0aGUgcmV0dXJuIHZhbHVlLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4gXG4KLy8vICAgIEJpdHMgWzMxOjBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzYzOjMyXSBvZiB0aGUgcmV0dXJuIHZhbHVlLiBcbgovLy8gICAgQml0cyBbNjM6MzJdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzEyNzo5Nl0gb2YgdGhlIHJldHVybiB2YWx1ZS4gXG4KLy8vICAgIEJpdHMgWzE1OToxMjhdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzE5MToxNjBdIG9mIHRoZSByZXR1cm4gdmFsdWUuIFxuCi8vLyAgICBCaXRzIFsxOTE6MTYwXSBhcmUgd3JpdHRlbiB0byBiaXRzIFsyNTU6MjI0XSBvZiB0aGUgcmV0dXJuIHZhbHVlLgovLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBpbnRlcmxlYXZlZCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl91bnBhY2tsb19wcyhfX20yNTYgX19hLCBfX20yNTYgX19iKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y4c2YpX19hLCAoX192OHNmKV9fYiwgMCwgOCwgMCsxLCA4KzEsIDQsIDEyLCA0KzEsIDEyKzEpOwp9CgovKiBCaXQgVGVzdCAqLwovLy8gR2l2ZW4gdHdvIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0sIHBlcmZvcm0gYW4KLy8vICAgIGVsZW1lbnQtYnktZWxlbWVudCBjb21wYXJpc29uIG9mIHRoZSBkb3VibGUtcHJlY2lzaW9uIGVsZW1lbnQgaW4gdGhlCi8vLyAgICBmaXJzdCBzb3VyY2UgdmVjdG9yIGFuZCB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IGluIHRoZSBzZWNvbmQgc291cmNlCi8vLyAgICB2ZWN0b3IuCi8vLwovLy8gICAgVGhlIEVGTEFHUyByZWdpc3RlciBpcyB1cGRhdGVkIGFzIGZvbGxvd3M6IFxuCi8vLyAgICBJZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgcGFpciBvZiBkb3VibGUtcHJlY2lzaW9uIGVsZW1lbnRzIHdoZXJlIHRoZQovLy8gICAgc2lnbi1iaXRzIG9mIGJvdGggZWxlbWVudHMgYXJlIDEsIHRoZSBaRiBmbGFnIGlzIHNldCB0byAwLiBPdGhlcndpc2UgdGhlCi8vLyAgICBaRiBmbGFnIGlzIHNldCB0byAxLiBcbgovLy8gICAgSWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHBhaXIgb2YgZG91YmxlLXByZWNpc2lvbiBlbGVtZW50cyB3aGVyZSB0aGUKLy8vICAgIHNpZ24tYml0IG9mIHRoZSBmaXJzdCBlbGVtZW50IGlzIDAgYW5kIHRoZSBzaWduLWJpdCBvZiB0aGUgc2Vjb25kIGVsZW1lbnQKLy8vICAgIGlzIDEsIHRoZSBDRiBmbGFnIGlzIHNldCB0byAwLiBPdGhlcndpc2UgdGhlIENGIGZsYWcgaXMgc2V0IHRvIDEuIFxuCi8vLyAgICBUaGlzIGludHJpbnNpYyByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgWkYgZmxhZy4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWVEVTVFBEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4KLy8vIFxyZXR1cm5zIHRoZSBaRiBmbGFnIGluIHRoZSBFRkxBR1MgcmVnaXN0ZXIuCnN0YXRpYyBfX2lubGluZSBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV90ZXN0el9wZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfdnRlc3R6cGQoKF9fdjJkZilfX2EsIChfX3YyZGYpX19iKTsKfQoKLy8vIEdpdmVuIHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdLCBwZXJmb3JtIGFuCi8vLyAgICBlbGVtZW50LWJ5LWVsZW1lbnQgY29tcGFyaXNvbiBvZiB0aGUgZG91YmxlLXByZWNpc2lvbiBlbGVtZW50IGluIHRoZQovLy8gICAgZmlyc3Qgc291cmNlIHZlY3RvciBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBpbiB0aGUgc2Vjb25kIHNvdXJjZQovLy8gICAgdmVjdG9yLgovLy8KLy8vICAgIFRoZSBFRkxBR1MgcmVnaXN0ZXIgaXMgdXBkYXRlZCBhcyBmb2xsb3dzOiBcbgovLy8gICAgSWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHBhaXIgb2YgZG91YmxlLXByZWNpc2lvbiBlbGVtZW50cyB3aGVyZSB0aGUKLy8vICAgIHNpZ24tYml0cyBvZiBib3RoIGVsZW1lbnRzIGFyZSAxLCB0aGUgWkYgZmxhZyBpcyBzZXQgdG8gMC4gT3RoZXJ3aXNlIHRoZQovLy8gICAgWkYgZmxhZyBpcyBzZXQgdG8gMS4gXG4KLy8vICAgIElmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBwYWlyIG9mIGRvdWJsZS1wcmVjaXNpb24gZWxlbWVudHMgd2hlcmUgdGhlCi8vLyAgICBzaWduLWJpdCBvZiB0aGUgZmlyc3QgZWxlbWVudCBpcyAwIGFuZCB0aGUgc2lnbi1iaXQgb2YgdGhlIHNlY29uZCBlbGVtZW50Ci8vLyAgICBpcyAxLCB0aGUgQ0YgZmxhZyBpcyBzZXQgdG8gMC4gT3RoZXJ3aXNlIHRoZSBDRiBmbGFnIGlzIHNldCB0byAxLiBcbgovLy8gICAgVGhpcyBpbnRyaW5zaWMgcmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIENGIGZsYWcuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlRFU1RQRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uCi8vLyBccmV0dXJucyB0aGUgQ0YgZmxhZyBpbiB0aGUgRUZMQUdTIHJlZ2lzdGVyLgpzdGF0aWMgX19pbmxpbmUgaW50IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fdGVzdGNfcGQoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Z0ZXN0Y3BkKChfX3YyZGYpX19hLCAoX192MmRmKV9fYik7Cn0KCi8vLyBHaXZlbiB0d28gMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXSwgcGVyZm9ybSBhbgovLy8gICAgZWxlbWVudC1ieS1lbGVtZW50IGNvbXBhcmlzb24gb2YgdGhlIGRvdWJsZS1wcmVjaXNpb24gZWxlbWVudCBpbiB0aGUKLy8vICAgIGZpcnN0IHNvdXJjZSB2ZWN0b3IgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgaW4gdGhlIHNlY29uZCBzb3VyY2UKLy8vICAgIHZlY3Rvci4KLy8vCi8vLyAgICBUaGUgRUZMQUdTIHJlZ2lzdGVyIGlzIHVwZGF0ZWQgYXMgZm9sbG93czogXG4KLy8vICAgIElmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBwYWlyIG9mIGRvdWJsZS1wcmVjaXNpb24gZWxlbWVudHMgd2hlcmUgdGhlCi8vLyAgICBzaWduLWJpdHMgb2YgYm90aCBlbGVtZW50cyBhcmUgMSwgdGhlIFpGIGZsYWcgaXMgc2V0IHRvIDAuIE90aGVyd2lzZSB0aGUKLy8vICAgIFpGIGZsYWcgaXMgc2V0IHRvIDEuIFxuCi8vLyAgICBJZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgcGFpciBvZiBkb3VibGUtcHJlY2lzaW9uIGVsZW1lbnRzIHdoZXJlIHRoZQovLy8gICAgc2lnbi1iaXQgb2YgdGhlIGZpcnN0IGVsZW1lbnQgaXMgMCBhbmQgdGhlIHNpZ24tYml0IG9mIHRoZSBzZWNvbmQgZWxlbWVudAovLy8gICAgaXMgMSwgdGhlIENGIGZsYWcgaXMgc2V0IHRvIDAuIE90aGVyd2lzZSB0aGUgQ0YgZmxhZyBpcyBzZXQgdG8gMS4gXG4KLy8vICAgIFRoaXMgaW50cmluc2ljIHJldHVybnMgMSBpZiBib3RoIHRoZSBaRiBhbmQgQ0YgZmxhZ3MgYXJlIHNldCB0byAwLAovLy8gICAgb3RoZXJ3aXNlIGl0IHJldHVybnMgMC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWVEVTVFBEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4KLy8vIFxyZXR1cm5zIDEgaWYgYm90aCB0aGUgWkYgYW5kIENGIGZsYWdzIGFyZSBzZXQgdG8gMCwgb3RoZXJ3aXNlIHJldHVybnMgMC4Kc3RhdGljIF9faW5saW5lIGludCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX3Rlc3RuemNfcGQoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Z0ZXN0bnpjcGQoKF9fdjJkZilfX2EsIChfX3YyZGYpX19iKTsKfQoKLy8vIEdpdmVuIHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMgb2YgWzQgeCBmbG9hdF0sIHBlcmZvcm0gYW4KLy8vICAgIGVsZW1lbnQtYnktZWxlbWVudCBjb21wYXJpc29uIG9mIHRoZSBzaW5nbGUtcHJlY2lzaW9uIGVsZW1lbnQgaW4gdGhlCi8vLyAgICBmaXJzdCBzb3VyY2UgdmVjdG9yIGFuZCB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IGluIHRoZSBzZWNvbmQgc291cmNlCi8vLyAgICB2ZWN0b3IuCi8vLwovLy8gICAgVGhlIEVGTEFHUyByZWdpc3RlciBpcyB1cGRhdGVkIGFzIGZvbGxvd3M6IFxuCi8vLyAgICBJZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgcGFpciBvZiBzaW5nbGUtcHJlY2lzaW9uIGVsZW1lbnRzIHdoZXJlIHRoZQovLy8gICAgc2lnbi1iaXRzIG9mIGJvdGggZWxlbWVudHMgYXJlIDEsIHRoZSBaRiBmbGFnIGlzIHNldCB0byAwLiBPdGhlcndpc2UgdGhlCi8vLyAgICBaRiBmbGFnIGlzIHNldCB0byAxLiBcbgovLy8gICAgSWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHBhaXIgb2Ygc2luZ2xlLXByZWNpc2lvbiBlbGVtZW50cyB3aGVyZSB0aGUKLy8vICAgIHNpZ24tYml0IG9mIHRoZSBmaXJzdCBlbGVtZW50IGlzIDAgYW5kIHRoZSBzaWduLWJpdCBvZiB0aGUgc2Vjb25kIGVsZW1lbnQKLy8vICAgIGlzIDEsIHRoZSBDRiBmbGFnIGlzIHNldCB0byAwLiBPdGhlcndpc2UgdGhlIENGIGZsYWcgaXMgc2V0IHRvIDEuIFxuCi8vLyAgICBUaGlzIGludHJpbnNpYyByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgWkYgZmxhZy4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWVEVTVFBTIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uCi8vLyBccmV0dXJucyB0aGUgWkYgZmxhZy4Kc3RhdGljIF9faW5saW5lIGludCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX3Rlc3R6X3BzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfdnRlc3R6cHMoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19iKTsKfQoKLy8vIEdpdmVuIHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMgb2YgWzQgeCBmbG9hdF0sIHBlcmZvcm0gYW4KLy8vICAgIGVsZW1lbnQtYnktZWxlbWVudCBjb21wYXJpc29uIG9mIHRoZSBzaW5nbGUtcHJlY2lzaW9uIGVsZW1lbnQgaW4gdGhlCi8vLyAgICBmaXJzdCBzb3VyY2UgdmVjdG9yIGFuZCB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IGluIHRoZSBzZWNvbmQgc291cmNlCi8vLyAgICB2ZWN0b3IuCi8vLwovLy8gICAgVGhlIEVGTEFHUyByZWdpc3RlciBpcyB1cGRhdGVkIGFzIGZvbGxvd3M6IFxuCi8vLyAgICBJZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgcGFpciBvZiBzaW5nbGUtcHJlY2lzaW9uIGVsZW1lbnRzIHdoZXJlIHRoZQovLy8gICAgc2lnbi1iaXRzIG9mIGJvdGggZWxlbWVudHMgYXJlIDEsIHRoZSBaRiBmbGFnIGlzIHNldCB0byAwLiBPdGhlcndpc2UgdGhlCi8vLyAgICBaRiBmbGFnIGlzIHNldCB0byAxLiBcbgovLy8gICAgSWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHBhaXIgb2Ygc2luZ2xlLXByZWNpc2lvbiBlbGVtZW50cyB3aGVyZSB0aGUKLy8vICAgIHNpZ24tYml0IG9mIHRoZSBmaXJzdCBlbGVtZW50IGlzIDAgYW5kIHRoZSBzaWduLWJpdCBvZiB0aGUgc2Vjb25kIGVsZW1lbnQKLy8vICAgIGlzIDEsIHRoZSBDRiBmbGFnIGlzIHNldCB0byAwLiBPdGhlcndpc2UgdGhlIENGIGZsYWcgaXMgc2V0IHRvIDEuIFxuCi8vLyAgICBUaGlzIGludHJpbnNpYyByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgQ0YgZmxhZy4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWVEVTVFBTIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uCi8vLyBccmV0dXJucyB0aGUgQ0YgZmxhZy4Kc3RhdGljIF9faW5saW5lIGludCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX3Rlc3RjX3BzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfdnRlc3RjcHMoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19iKTsKfQoKLy8vIEdpdmVuIHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMgb2YgWzQgeCBmbG9hdF0sIHBlcmZvcm0gYW4KLy8vICAgIGVsZW1lbnQtYnktZWxlbWVudCBjb21wYXJpc29uIG9mIHRoZSBzaW5nbGUtcHJlY2lzaW9uIGVsZW1lbnQgaW4gdGhlCi8vLyAgICBmaXJzdCBzb3VyY2UgdmVjdG9yIGFuZCB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IGluIHRoZSBzZWNvbmQgc291cmNlCi8vLyAgICB2ZWN0b3IuCi8vLwovLy8gICAgVGhlIEVGTEFHUyByZWdpc3RlciBpcyB1cGRhdGVkIGFzIGZvbGxvd3M6IFxuCi8vLyAgICBJZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgcGFpciBvZiBzaW5nbGUtcHJlY2lzaW9uIGVsZW1lbnRzIHdoZXJlIHRoZQovLy8gICAgc2lnbi1iaXRzIG9mIGJvdGggZWxlbWVudHMgYXJlIDEsIHRoZSBaRiBmbGFnIGlzIHNldCB0byAwLiBPdGhlcndpc2UgdGhlCi8vLyAgICBaRiBmbGFnIGlzIHNldCB0byAxLiBcbgovLy8gICAgSWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHBhaXIgb2Ygc2luZ2xlLXByZWNpc2lvbiBlbGVtZW50cyB3aGVyZSB0aGUKLy8vICAgIHNpZ24tYml0IG9mIHRoZSBmaXJzdCBlbGVtZW50IGlzIDAgYW5kIHRoZSBzaWduLWJpdCBvZiB0aGUgc2Vjb25kIGVsZW1lbnQKLy8vICAgIGlzIDEsIHRoZSBDRiBmbGFnIGlzIHNldCB0byAwLiBPdGhlcndpc2UgdGhlIENGIGZsYWcgaXMgc2V0IHRvIDEuIFxuCi8vLyAgICBUaGlzIGludHJpbnNpYyByZXR1cm5zIDEgaWYgYm90aCB0aGUgWkYgYW5kIENGIGZsYWdzIGFyZSBzZXQgdG8gMCwKLy8vICAgIG90aGVyd2lzZSBpdCByZXR1cm5zIDAuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlRFU1RQUyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLgovLy8gXHJldHVybnMgMSBpZiBib3RoIHRoZSBaRiBhbmQgQ0YgZmxhZ3MgYXJlIHNldCB0byAwLCBvdGhlcndpc2UgcmV0dXJucyAwLgpzdGF0aWMgX19pbmxpbmUgaW50IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fdGVzdG56Y19wcyhfX20xMjggX19hLCBfX20xMjggX19iKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Z0ZXN0bnpjcHMoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19iKTsKfQoKLy8vIEdpdmVuIHR3byAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMgb2YgWzQgeCBkb3VibGVdLCBwZXJmb3JtIGFuCi8vLyAgICBlbGVtZW50LWJ5LWVsZW1lbnQgY29tcGFyaXNvbiBvZiB0aGUgZG91YmxlLXByZWNpc2lvbiBlbGVtZW50cyBpbiB0aGUKLy8vICAgIGZpcnN0IHNvdXJjZSB2ZWN0b3IgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIGluIHRoZSBzZWNvbmQgc291cmNlCi8vLyAgICB2ZWN0b3IuCi8vLwovLy8gICAgVGhlIEVGTEFHUyByZWdpc3RlciBpcyB1cGRhdGVkIGFzIGZvbGxvd3M6IFxuCi8vLyAgICBJZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgcGFpciBvZiBkb3VibGUtcHJlY2lzaW9uIGVsZW1lbnRzIHdoZXJlIHRoZQovLy8gICAgc2lnbi1iaXRzIG9mIGJvdGggZWxlbWVudHMgYXJlIDEsIHRoZSBaRiBmbGFnIGlzIHNldCB0byAwLiBPdGhlcndpc2UgdGhlCi8vLyAgICBaRiBmbGFnIGlzIHNldCB0byAxLiBcbgovLy8gICAgSWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHBhaXIgb2YgZG91YmxlLXByZWNpc2lvbiBlbGVtZW50cyB3aGVyZSB0aGUKLy8vICAgIHNpZ24tYml0IG9mIHRoZSBmaXJzdCBlbGVtZW50IGlzIDAgYW5kIHRoZSBzaWduLWJpdCBvZiB0aGUgc2Vjb25kIGVsZW1lbnQKLy8vICAgIGlzIDEsIHRoZSBDRiBmbGFnIGlzIHNldCB0byAwLiBPdGhlcndpc2UgdGhlIENGIGZsYWcgaXMgc2V0IHRvIDEuIFxuCi8vLyAgICBUaGlzIGludHJpbnNpYyByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgWkYgZmxhZy4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWVEVTVFBEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4KLy8vIFxyZXR1cm5zIHRoZSBaRiBmbGFnLgpzdGF0aWMgX19pbmxpbmUgaW50IF9fREVGQVVMVF9GTl9BVFRSUwpfbW0yNTZfdGVzdHpfcGQoX19tMjU2ZCBfX2EsIF9fbTI1NmQgX19iKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Z0ZXN0enBkMjU2KChfX3Y0ZGYpX19hLCAoX192NGRmKV9fYik7Cn0KCi8vLyBHaXZlbiB0d28gMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFs0IHggZG91YmxlXSwgcGVyZm9ybSBhbgovLy8gICAgZWxlbWVudC1ieS1lbGVtZW50IGNvbXBhcmlzb24gb2YgdGhlIGRvdWJsZS1wcmVjaXNpb24gZWxlbWVudHMgaW4gdGhlCi8vLyAgICBmaXJzdCBzb3VyY2UgdmVjdG9yIGFuZCB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBpbiB0aGUgc2Vjb25kIHNvdXJjZQovLy8gICAgdmVjdG9yLgovLy8KLy8vICAgIFRoZSBFRkxBR1MgcmVnaXN0ZXIgaXMgdXBkYXRlZCBhcyBmb2xsb3dzOiBcbgovLy8gICAgSWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHBhaXIgb2YgZG91YmxlLXByZWNpc2lvbiBlbGVtZW50cyB3aGVyZSB0aGUKLy8vICAgIHNpZ24tYml0cyBvZiBib3RoIGVsZW1lbnRzIGFyZSAxLCB0aGUgWkYgZmxhZyBpcyBzZXQgdG8gMC4gT3RoZXJ3aXNlIHRoZQovLy8gICAgWkYgZmxhZyBpcyBzZXQgdG8gMS4gXG4KLy8vICAgIElmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBwYWlyIG9mIGRvdWJsZS1wcmVjaXNpb24gZWxlbWVudHMgd2hlcmUgdGhlCi8vLyAgICBzaWduLWJpdCBvZiB0aGUgZmlyc3QgZWxlbWVudCBpcyAwIGFuZCB0aGUgc2lnbi1iaXQgb2YgdGhlIHNlY29uZCBlbGVtZW50Ci8vLyAgICBpcyAxLCB0aGUgQ0YgZmxhZyBpcyBzZXQgdG8gMC4gT3RoZXJ3aXNlIHRoZSBDRiBmbGFnIGlzIHNldCB0byAxLiBcbgovLy8gICAgVGhpcyBpbnRyaW5zaWMgcmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIENGIGZsYWcuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlRFU1RQRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uCi8vLyBccmV0dXJucyB0aGUgQ0YgZmxhZy4Kc3RhdGljIF9faW5saW5lIGludCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tMjU2X3Rlc3RjX3BkKF9fbTI1NmQgX19hLCBfX20yNTZkIF9fYikKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl92dGVzdGNwZDI1NigoX192NGRmKV9fYSwgKF9fdjRkZilfX2IpOwp9CgovLy8gR2l2ZW4gdHdvIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9ycyBvZiBbNCB4IGRvdWJsZV0sIHBlcmZvcm0gYW4KLy8vICAgIGVsZW1lbnQtYnktZWxlbWVudCBjb21wYXJpc29uIG9mIHRoZSBkb3VibGUtcHJlY2lzaW9uIGVsZW1lbnRzIGluIHRoZQovLy8gICAgZmlyc3Qgc291cmNlIHZlY3RvciBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgaW4gdGhlIHNlY29uZCBzb3VyY2UKLy8vICAgIHZlY3Rvci4KLy8vCi8vLyAgICBUaGUgRUZMQUdTIHJlZ2lzdGVyIGlzIHVwZGF0ZWQgYXMgZm9sbG93czogXG4KLy8vICAgIElmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBwYWlyIG9mIGRvdWJsZS1wcmVjaXNpb24gZWxlbWVudHMgd2hlcmUgdGhlCi8vLyAgICBzaWduLWJpdHMgb2YgYm90aCBlbGVtZW50cyBhcmUgMSwgdGhlIFpGIGZsYWcgaXMgc2V0IHRvIDAuIE90aGVyd2lzZSB0aGUKLy8vICAgIFpGIGZsYWcgaXMgc2V0IHRvIDEuIFxuCi8vLyAgICBJZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgcGFpciBvZiBkb3VibGUtcHJlY2lzaW9uIGVsZW1lbnRzIHdoZXJlIHRoZQovLy8gICAgc2lnbi1iaXQgb2YgdGhlIGZpcnN0IGVsZW1lbnQgaXMgMCBhbmQgdGhlIHNpZ24tYml0IG9mIHRoZSBzZWNvbmQgZWxlbWVudAovLy8gICAgaXMgMSwgdGhlIENGIGZsYWcgaXMgc2V0IHRvIDAuIE90aGVyd2lzZSB0aGUgQ0YgZmxhZyBpcyBzZXQgdG8gMS4gXG4KLy8vICAgIFRoaXMgaW50cmluc2ljIHJldHVybnMgMSBpZiBib3RoIHRoZSBaRiBhbmQgQ0YgZmxhZ3MgYXJlIHNldCB0byAwLAovLy8gICAgb3RoZXJ3aXNlIGl0IHJldHVybnMgMC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWVEVTVFBEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4KLy8vIFxyZXR1cm5zIDEgaWYgYm90aCB0aGUgWkYgYW5kIENGIGZsYWdzIGFyZSBzZXQgdG8gMCwgb3RoZXJ3aXNlIHJldHVybnMgMC4Kc3RhdGljIF9faW5saW5lIGludCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tMjU2X3Rlc3RuemNfcGQoX19tMjU2ZCBfX2EsIF9fbTI1NmQgX19iKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Z0ZXN0bnpjcGQyNTYoKF9fdjRkZilfX2EsIChfX3Y0ZGYpX19iKTsKfQoKLy8vIEdpdmVuIHR3byAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMgb2YgWzggeCBmbG9hdF0sIHBlcmZvcm0gYW4KLy8vICAgIGVsZW1lbnQtYnktZWxlbWVudCBjb21wYXJpc29uIG9mIHRoZSBzaW5nbGUtcHJlY2lzaW9uIGVsZW1lbnQgaW4gdGhlCi8vLyAgICBmaXJzdCBzb3VyY2UgdmVjdG9yIGFuZCB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IGluIHRoZSBzZWNvbmQgc291cmNlCi8vLyAgICB2ZWN0b3IuCi8vLwovLy8gICAgVGhlIEVGTEFHUyByZWdpc3RlciBpcyB1cGRhdGVkIGFzIGZvbGxvd3M6IFxuCi8vLyAgICBJZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgcGFpciBvZiBzaW5nbGUtcHJlY2lzaW9uIGVsZW1lbnRzIHdoZXJlIHRoZQovLy8gICAgc2lnbi1iaXRzIG9mIGJvdGggZWxlbWVudHMgYXJlIDEsIHRoZSBaRiBmbGFnIGlzIHNldCB0byAwLiBPdGhlcndpc2UgdGhlCi8vLyAgICBaRiBmbGFnIGlzIHNldCB0byAxLiBcbgovLy8gICAgSWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHBhaXIgb2Ygc2luZ2xlLXByZWNpc2lvbiBlbGVtZW50cyB3aGVyZSB0aGUKLy8vICAgIHNpZ24tYml0IG9mIHRoZSBmaXJzdCBlbGVtZW50IGlzIDAgYW5kIHRoZSBzaWduLWJpdCBvZiB0aGUgc2Vjb25kIGVsZW1lbnQKLy8vICAgIGlzIDEsIHRoZSBDRiBmbGFnIGlzIHNldCB0byAwLiBPdGhlcndpc2UgdGhlIENGIGZsYWcgaXMgc2V0IHRvIDEuIFxuCi8vLyAgICBUaGlzIGludHJpbnNpYyByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgWkYgZmxhZy4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWVEVTVFBTIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uCi8vLyBccmV0dXJucyB0aGUgWkYgZmxhZy4Kc3RhdGljIF9faW5saW5lIGludCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tMjU2X3Rlc3R6X3BzKF9fbTI1NiBfX2EsIF9fbTI1NiBfX2IpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfdnRlc3R6cHMyNTYoKF9fdjhzZilfX2EsIChfX3Y4c2YpX19iKTsKfQoKLy8vIEdpdmVuIHR3byAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMgb2YgWzggeCBmbG9hdF0sIHBlcmZvcm0gYW4KLy8vICAgIGVsZW1lbnQtYnktZWxlbWVudCBjb21wYXJpc29uIG9mIHRoZSBzaW5nbGUtcHJlY2lzaW9uIGVsZW1lbnQgaW4gdGhlCi8vLyAgICBmaXJzdCBzb3VyY2UgdmVjdG9yIGFuZCB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IGluIHRoZSBzZWNvbmQgc291cmNlCi8vLyAgICB2ZWN0b3IuCi8vLwovLy8gICAgVGhlIEVGTEFHUyByZWdpc3RlciBpcyB1cGRhdGVkIGFzIGZvbGxvd3M6IFxuCi8vLyAgICBJZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgcGFpciBvZiBzaW5nbGUtcHJlY2lzaW9uIGVsZW1lbnRzIHdoZXJlIHRoZQovLy8gICAgc2lnbi1iaXRzIG9mIGJvdGggZWxlbWVudHMgYXJlIDEsIHRoZSBaRiBmbGFnIGlzIHNldCB0byAwLiBPdGhlcndpc2UgdGhlCi8vLyAgICBaRiBmbGFnIGlzIHNldCB0byAxLiBcbgovLy8gICAgSWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHBhaXIgb2Ygc2luZ2xlLXByZWNpc2lvbiBlbGVtZW50cyB3aGVyZSB0aGUKLy8vICAgIHNpZ24tYml0IG9mIHRoZSBmaXJzdCBlbGVtZW50IGlzIDAgYW5kIHRoZSBzaWduLWJpdCBvZiB0aGUgc2Vjb25kIGVsZW1lbnQKLy8vICAgIGlzIDEsIHRoZSBDRiBmbGFnIGlzIHNldCB0byAwLiBPdGhlcndpc2UgdGhlIENGIGZsYWcgaXMgc2V0IHRvIDEuIFxuCi8vLyAgICBUaGlzIGludHJpbnNpYyByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgQ0YgZmxhZy4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWVEVTVFBTIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uCi8vLyBccmV0dXJucyB0aGUgQ0YgZmxhZy4Kc3RhdGljIF9faW5saW5lIGludCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tMjU2X3Rlc3RjX3BzKF9fbTI1NiBfX2EsIF9fbTI1NiBfX2IpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfdnRlc3RjcHMyNTYoKF9fdjhzZilfX2EsIChfX3Y4c2YpX19iKTsKfQoKLy8vIEdpdmVuIHR3byAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMgb2YgWzggeCBmbG9hdF0sIHBlcmZvcm0gYW4KLy8vICAgIGVsZW1lbnQtYnktZWxlbWVudCBjb21wYXJpc29uIG9mIHRoZSBzaW5nbGUtcHJlY2lzaW9uIGVsZW1lbnRzIGluIHRoZQovLy8gICAgZmlyc3Qgc291cmNlIHZlY3RvciBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgaW4gdGhlIHNlY29uZCBzb3VyY2UKLy8vICAgIHZlY3Rvci4KLy8vCi8vLyAgICBUaGUgRUZMQUdTIHJlZ2lzdGVyIGlzIHVwZGF0ZWQgYXMgZm9sbG93czogXG4KLy8vICAgIElmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBwYWlyIG9mIHNpbmdsZS1wcmVjaXNpb24gZWxlbWVudHMgd2hlcmUgdGhlCi8vLyAgICBzaWduLWJpdHMgb2YgYm90aCBlbGVtZW50cyBhcmUgMSwgdGhlIFpGIGZsYWcgaXMgc2V0IHRvIDAuIE90aGVyd2lzZSB0aGUKLy8vICAgIFpGIGZsYWcgaXMgc2V0IHRvIDEuIFxuCi8vLyAgICBJZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgcGFpciBvZiBzaW5nbGUtcHJlY2lzaW9uIGVsZW1lbnRzIHdoZXJlIHRoZQovLy8gICAgc2lnbi1iaXQgb2YgdGhlIGZpcnN0IGVsZW1lbnQgaXMgMCBhbmQgdGhlIHNpZ24tYml0IG9mIHRoZSBzZWNvbmQgZWxlbWVudAovLy8gICAgaXMgMSwgdGhlIENGIGZsYWcgaXMgc2V0IHRvIDAuIE90aGVyd2lzZSB0aGUgQ0YgZmxhZyBpcyBzZXQgdG8gMS4gXG4KLy8vICAgIFRoaXMgaW50cmluc2ljIHJldHVybnMgMSBpZiBib3RoIHRoZSBaRiBhbmQgQ0YgZmxhZ3MgYXJlIHNldCB0byAwLAovLy8gICAgb3RoZXJ3aXNlIGl0IHJldHVybnMgMC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWVEVTVFBTIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uCi8vLyBccmV0dXJucyAxIGlmIGJvdGggdGhlIFpGIGFuZCBDRiBmbGFncyBhcmUgc2V0IHRvIDAsIG90aGVyd2lzZSByZXR1cm5zIDAuCnN0YXRpYyBfX2lubGluZSBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl90ZXN0bnpjX3BzKF9fbTI1NiBfX2EsIF9fbTI1NiBfX2IpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfdnRlc3RuemNwczI1NigoX192OHNmKV9fYSwgKF9fdjhzZilfX2IpOwp9CgovLy8gR2l2ZW4gdHdvIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3JzLCBwZXJmb3JtIGEgYml0LWJ5LWJpdCBjb21wYXJpc29uCi8vLyAgICBvZiB0aGUgdHdvIHNvdXJjZSB2ZWN0b3JzLgovLy8KLy8vICAgIFRoZSBFRkxBR1MgcmVnaXN0ZXIgaXMgdXBkYXRlZCBhcyBmb2xsb3dzOiBcbgovLy8gICAgSWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHBhaXIgb2YgYml0cyB3aGVyZSBib3RoIGJpdHMgYXJlIDEsIHRoZSBaRiBmbGFnCi8vLyAgICBpcyBzZXQgdG8gMC4gT3RoZXJ3aXNlIHRoZSBaRiBmbGFnIGlzIHNldCB0byAxLiBcbgovLy8gICAgSWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHBhaXIgb2YgYml0cyB3aGVyZSB0aGUgYml0IGZyb20gdGhlIGZpcnN0IHNvdXJjZQovLy8gICAgdmVjdG9yIGlzIDAgYW5kIHRoZSBiaXQgZnJvbSB0aGUgc2Vjb25kIHNvdXJjZSB2ZWN0b3IgaXMgMSwgdGhlIENGIGZsYWcKLy8vICAgIGlzIHNldCB0byAwLiBPdGhlcndpc2UgdGhlIENGIGZsYWcgaXMgc2V0IHRvIDEuIFxuCi8vLyAgICBUaGlzIGludHJpbnNpYyByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgWkYgZmxhZy4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFRFU1QgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IuCi8vLyBccmV0dXJucyB0aGUgWkYgZmxhZy4Kc3RhdGljIF9faW5saW5lIGludCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tMjU2X3Rlc3R6X3NpMjU2KF9fbTI1NmkgX19hLCBfX20yNTZpIF9fYikKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9wdGVzdHoyNTYoKF9fdjRkaSlfX2EsIChfX3Y0ZGkpX19iKTsKfQoKLy8vIEdpdmVuIHR3byAyNTYtYml0IGludGVnZXIgdmVjdG9ycywgcGVyZm9ybSBhIGJpdC1ieS1iaXQgY29tcGFyaXNvbgovLy8gICAgb2YgdGhlIHR3byBzb3VyY2UgdmVjdG9ycy4KLy8vCi8vLyAgICBUaGUgRUZMQUdTIHJlZ2lzdGVyIGlzIHVwZGF0ZWQgYXMgZm9sbG93czogXG4KLy8vICAgIElmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBwYWlyIG9mIGJpdHMgd2hlcmUgYm90aCBiaXRzIGFyZSAxLCB0aGUgWkYgZmxhZwovLy8gICAgaXMgc2V0IHRvIDAuIE90aGVyd2lzZSB0aGUgWkYgZmxhZyBpcyBzZXQgdG8gMS4gXG4KLy8vICAgIElmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBwYWlyIG9mIGJpdHMgd2hlcmUgdGhlIGJpdCBmcm9tIHRoZSBmaXJzdCBzb3VyY2UKLy8vICAgIHZlY3RvciBpcyAwIGFuZCB0aGUgYml0IGZyb20gdGhlIHNlY29uZCBzb3VyY2UgdmVjdG9yIGlzIDEsIHRoZSBDRiBmbGFnCi8vLyAgICBpcyBzZXQgdG8gMC4gT3RoZXJ3aXNlIHRoZSBDRiBmbGFnIGlzIHNldCB0byAxLiBcbgovLy8gICAgVGhpcyBpbnRyaW5zaWMgcmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIENGIGZsYWcuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBURVNUIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAyNTYtYml0IGludGVnZXIgdmVjdG9yLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAyNTYtYml0IGludGVnZXIgdmVjdG9yLgovLy8gXHJldHVybnMgdGhlIENGIGZsYWcuCnN0YXRpYyBfX2lubGluZSBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl90ZXN0Y19zaTI1NihfX20yNTZpIF9fYSwgX19tMjU2aSBfX2IpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfcHRlc3RjMjU2KChfX3Y0ZGkpX19hLCAoX192NGRpKV9fYik7Cn0KCi8vLyBHaXZlbiB0d28gMjU2LWJpdCBpbnRlZ2VyIHZlY3RvcnMsIHBlcmZvcm0gYSBiaXQtYnktYml0IGNvbXBhcmlzb24KLy8vICAgIG9mIHRoZSB0d28gc291cmNlIHZlY3RvcnMuCi8vLwovLy8gICAgVGhlIEVGTEFHUyByZWdpc3RlciBpcyB1cGRhdGVkIGFzIGZvbGxvd3M6IFxuCi8vLyAgICBJZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgcGFpciBvZiBiaXRzIHdoZXJlIGJvdGggYml0cyBhcmUgMSwgdGhlIFpGIGZsYWcKLy8vICAgIGlzIHNldCB0byAwLiBPdGhlcndpc2UgdGhlIFpGIGZsYWcgaXMgc2V0IHRvIDEuIFxuCi8vLyAgICBJZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgcGFpciBvZiBiaXRzIHdoZXJlIHRoZSBiaXQgZnJvbSB0aGUgZmlyc3Qgc291cmNlCi8vLyAgICB2ZWN0b3IgaXMgMCBhbmQgdGhlIGJpdCBmcm9tIHRoZSBzZWNvbmQgc291cmNlIHZlY3RvciBpcyAxLCB0aGUgQ0YgZmxhZwovLy8gICAgaXMgc2V0IHRvIDAuIE90aGVyd2lzZSB0aGUgQ0YgZmxhZyBpcyBzZXQgdG8gMS4gXG4KLy8vICAgIFRoaXMgaW50cmluc2ljIHJldHVybnMgMSBpZiBib3RoIHRoZSBaRiBhbmQgQ0YgZmxhZ3MgYXJlIHNldCB0byAwLAovLy8gICAgb3RoZXJ3aXNlIGl0IHJldHVybnMgMC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFRFU1QgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IuCi8vLyBccmV0dXJucyAxIGlmIGJvdGggdGhlIFpGIGFuZCBDRiBmbGFncyBhcmUgc2V0IHRvIDAsIG90aGVyd2lzZSByZXR1cm5zIDAuCnN0YXRpYyBfX2lubGluZSBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl90ZXN0bnpjX3NpMjU2KF9fbTI1NmkgX19hLCBfX20yNTZpIF9fYikKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9wdGVzdG56YzI1NigoX192NGRpKV9fYSwgKF9fdjRkaSlfX2IpOwp9CgovKiBWZWN0b3IgZXh0cmFjdCBzaWduIG1hc2sgKi8KLy8vIEV4dHJhY3RzIHRoZSBzaWduIGJpdHMgb2YgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBlbGVtZW50cwovLy8gICAgaW4gYSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gYW5kIHdyaXRlcyB0aGVtIHRvIHRoZSBsb3dlciBvcmRlcgovLy8gICAgYml0cyBvZiB0aGUgcmV0dXJuIHZhbHVlLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZNU0tQRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGRvdWJsZS1wcmVjaXNpb24KLy8vICAgIGZsb2F0aW5nIHBvaW50IHZhbHVlcyB3aXRoIHNpZ24gYml0cyB0byBiZSBleHRyYWN0ZWQuCi8vLyBccmV0dXJucyBUaGUgc2lnbiBiaXRzIGZyb20gdGhlIG9wZXJhbmQsIHdyaXR0ZW4gdG8gYml0cyBbMzowXS4Kc3RhdGljIF9faW5saW5lIGludCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tMjU2X21vdmVtYXNrX3BkKF9fbTI1NmQgX19hKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX21vdm1za3BkMjU2KChfX3Y0ZGYpX19hKTsKfQoKLy8vIEV4dHJhY3RzIHRoZSBzaWduIGJpdHMgb2Ygc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBlbGVtZW50cwovLy8gICAgaW4gYSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBhbmQgd3JpdGVzIHRoZW0gdG8gdGhlIGxvd2VyIG9yZGVyCi8vLyAgICBiaXRzIG9mIHRoZSByZXR1cm4gdmFsdWUuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVk1TS1BTIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nCi8vLyAgICBwb2ludCB2YWx1ZXMgd2l0aCBzaWduIGJpdHMgdG8gYmUgZXh0cmFjdGVkLgovLy8gXHJldHVybnMgVGhlIHNpZ24gYml0cyBmcm9tIHRoZSBvcGVyYW5kLCB3cml0dGVuIHRvIGJpdHMgWzc6MF0uCnN0YXRpYyBfX2lubGluZSBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl9tb3ZlbWFza19wcyhfX20yNTYgX19hKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX21vdm1za3BzMjU2KChfX3Y4c2YpX19hKTsKfQoKLyogVmVjdG9yIF9femVybyAqLwovLy8gWmVyb2VzIHRoZSBjb250ZW50cyBvZiBhbGwgWE1NIG9yIFlNTSByZWdpc3RlcnMuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlpFUk9BTEwgPC9jPiBpbnN0cnVjdGlvbi4Kc3RhdGljIF9faW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJhdngiKSkpCl9tbTI1Nl96ZXJvYWxsKHZvaWQpCnsKICBfX2J1aWx0aW5faWEzMl92emVyb2FsbCgpOwp9CgovLy8gWmVyb2VzIHRoZSB1cHBlciAxMjggYml0cyAoYml0cyAyNTU6MTI4KSBvZiBhbGwgWU1NIHJlZ2lzdGVycy4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWWkVST1VQUEVSIDwvYz4gaW5zdHJ1Y3Rpb24uCnN0YXRpYyBfX2lubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygiYXZ4IikpKQpfbW0yNTZfemVyb3VwcGVyKHZvaWQpCnsKICBfX2J1aWx0aW5faWEzMl92emVyb3VwcGVyKCk7Cn0KCi8qIFZlY3RvciBsb2FkIHdpdGggYnJvYWRjYXN0ICovCi8vLyBMb2FkcyBhIHNjYWxhciBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHZhbHVlIGZyb20gdGhlCi8vLyAgICBzcGVjaWZpZWQgYWRkcmVzcyBwb2ludGVkIHRvIGJ5IFxhIF9fYSBhbmQgYnJvYWRjYXN0cyBpdCB0byB0aGUgZWxlbWVudHMKLy8vICAgIG9mIGEgWzQgeCBmbG9hdF0gdmVjdG9yLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZCUk9BRENBU1RTUyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIFRoZSBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHZhbHVlIHRvIGJlIGJyb2FkY2FzdC4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gd2hvc2UgMzItYml0IGVsZW1lbnRzIGFyZSBzZXQKLy8vICAgIGVxdWFsIHRvIHRoZSBicm9hZGNhc3QgdmFsdWUuCnN0YXRpYyBfX2lubGluZSBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9icm9hZGNhc3Rfc3MoZmxvYXQgY29uc3QgKl9fYSkKewogIGZsb2F0IF9fZiA9ICpfX2E7CiAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOCkoX192NHNmKXsgX19mLCBfX2YsIF9fZiwgX19mIH07Cn0KCi8vLyBMb2FkcyBhIHNjYWxhciBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHZhbHVlIGZyb20gdGhlCi8vLyAgICBzcGVjaWZpZWQgYWRkcmVzcyBwb2ludGVkIHRvIGJ5IFxhIF9fYSBhbmQgYnJvYWRjYXN0cyBpdCB0byB0aGUgZWxlbWVudHMKLy8vICAgIG9mIGEgWzQgeCBkb3VibGVdIHZlY3Rvci4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQlJPQURDQVNUU0QgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBUaGUgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCB2YWx1ZSB0byBiZSBicm9hZGNhc3QuCi8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSB3aG9zZSA2NC1iaXQgZWxlbWVudHMgYXJlIHNldAovLy8gICAgZXF1YWwgdG8gdGhlIGJyb2FkY2FzdCB2YWx1ZS4Kc3RhdGljIF9faW5saW5lIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl9icm9hZGNhc3Rfc2QoZG91YmxlIGNvbnN0ICpfX2EpCnsKICBkb3VibGUgX19kID0gKl9fYTsKICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMjU2ZCkoX192NGRmKXsgX19kLCBfX2QsIF9fZCwgX19kIH07Cn0KCi8vLyBMb2FkcyBhIHNjYWxhciBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHZhbHVlIGZyb20gdGhlCi8vLyAgICBzcGVjaWZpZWQgYWRkcmVzcyBwb2ludGVkIHRvIGJ5IFxhIF9fYSBhbmQgYnJvYWRjYXN0cyBpdCB0byB0aGUgZWxlbWVudHMKLy8vICAgIG9mIGEgWzggeCBmbG9hdF0gdmVjdG9yLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZCUk9BRENBU1RTUyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIFRoZSBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHZhbHVlIHRvIGJlIGJyb2FkY2FzdC4KLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gd2hvc2UgMzItYml0IGVsZW1lbnRzIGFyZSBzZXQKLy8vICAgIGVxdWFsIHRvIHRoZSBicm9hZGNhc3QgdmFsdWUuCnN0YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl9icm9hZGNhc3Rfc3MoZmxvYXQgY29uc3QgKl9fYSkKewogIGZsb2F0IF9fZiA9ICpfX2E7CiAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTI1NikoX192OHNmKXsgX19mLCBfX2YsIF9fZiwgX19mLCBfX2YsIF9fZiwgX19mLCBfX2YgfTsKfQoKLy8vIExvYWRzIHRoZSBkYXRhIGZyb20gYSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gZnJvbSB0aGUKLy8vICAgIHNwZWNpZmllZCBhZGRyZXNzIHBvaW50ZWQgdG8gYnkgXGEgX19hIGFuZCBicm9hZGNhc3RzIGl0IHRvIDEyOC1iaXQKLy8vICAgIGVsZW1lbnRzIGluIGEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZCUk9BRENBU1RGMTI4IDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgVGhlIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSB0byBiZSBicm9hZGNhc3QuCi8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSB3aG9zZSAxMjgtYml0IGVsZW1lbnRzIGFyZSBzZXQKLy8vICAgIGVxdWFsIHRvIHRoZSBicm9hZGNhc3QgdmFsdWUuCnN0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW0yNTZfYnJvYWRjYXN0X3BkKF9fbTEyOGQgY29uc3QgKl9fYSkKewogIF9fbTEyOGQgX19iID0gX21tX2xvYWR1X3BkKChjb25zdCBkb3VibGUgKilfX2EpOwogIHJldHVybiAoX19tMjU2ZClfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192MmRmKV9fYiwgKF9fdjJkZilfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDEsIDAsIDEpOwp9CgovLy8gTG9hZHMgdGhlIGRhdGEgZnJvbSBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGZyb20gdGhlCi8vLyAgICBzcGVjaWZpZWQgYWRkcmVzcyBwb2ludGVkIHRvIGJ5IFxhIF9fYSBhbmQgYnJvYWRjYXN0cyBpdCB0byAxMjgtYml0Ci8vLyAgICBlbGVtZW50cyBpbiBhIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZCUk9BRENBU1RGMTI4IDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgVGhlIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIHRvIGJlIGJyb2FkY2FzdC4KLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gd2hvc2UgMTI4LWJpdCBlbGVtZW50cyBhcmUgc2V0Ci8vLyAgICBlcXVhbCB0byB0aGUgYnJvYWRjYXN0IHZhbHVlLgpzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUwpfbW0yNTZfYnJvYWRjYXN0X3BzKF9fbTEyOCBjb25zdCAqX19hKQp7CiAgX19tMTI4IF9fYiA9IF9tbV9sb2FkdV9wcygoY29uc3QgZmxvYXQgKilfX2EpOwogIHJldHVybiAoX19tMjU2KV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y0c2YpX19iLCAoX192NHNmKV9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAxLCAyLCAzLCAwLCAxLCAyLCAzKTsKfQoKLyogU0lNRCBsb2FkIG9wcyAqLwovLy8gTG9hZHMgNCBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHZhbHVlcyBmcm9tIGEgMzItYnl0ZSBhbGlnbmVkCi8vLyAgICBtZW1vcnkgbG9jYXRpb24gcG9pbnRlZCB0byBieSBcYSBfX3AgaW50byBhIHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVkFQRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX3AKLy8vICAgIEEgMzItYnl0ZSBhbGlnbmVkIHBvaW50ZXIgdG8gYSBtZW1vcnkgbG9jYXRpb24gY29udGFpbmluZwovLy8gICAgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCB2YWx1ZXMuCi8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZSBtb3ZlZCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW0yNTZfbG9hZF9wZChkb3VibGUgY29uc3QgKl9fcCkKewogIHJldHVybiAqKGNvbnN0IF9fbTI1NmQgKilfX3A7Cn0KCi8vLyBMb2FkcyA4IHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgdmFsdWVzIGZyb20gYSAzMi1ieXRlIGFsaWduZWQKLy8vICAgIG1lbW9yeSBsb2NhdGlvbiBwb2ludGVkIHRvIGJ5IFxhIF9fcCBpbnRvIGEgdmVjdG9yIG9mIFs4IHggZmxvYXRdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZBUFMgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19wCi8vLyAgICBBIDMyLWJ5dGUgYWxpZ25lZCBwb2ludGVyIHRvIGEgbWVtb3J5IGxvY2F0aW9uIGNvbnRhaW5pbmcgZmxvYXQgdmFsdWVzLgovLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBtb3ZlZCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl9sb2FkX3BzKGZsb2F0IGNvbnN0ICpfX3ApCnsKICByZXR1cm4gKihjb25zdCBfX20yNTYgKilfX3A7Cn0KCi8vLyBMb2FkcyA0IGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgdmFsdWVzIGZyb20gYW4gdW5hbGlnbmVkCi8vLyAgICBtZW1vcnkgbG9jYXRpb24gcG9pbnRlZCB0byBieSBcYSBfX3AgaW50byBhIHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVlVQRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX3AKLy8vICAgIEEgcG9pbnRlciB0byBhIG1lbW9yeSBsb2NhdGlvbiBjb250YWluaW5nIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmcKLy8vICAgIHBvaW50IHZhbHVlcy4KLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIG1vdmVkIHZhbHVlcy4Kc3RhdGljIF9faW5saW5lIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl9sb2FkdV9wZChkb3VibGUgY29uc3QgKl9fcCkKewogIHN0cnVjdCBfX2xvYWR1X3BkIHsKICAgIF9fbTI1NmRfdSBfX3Y7CiAgfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19fKSk7CiAgcmV0dXJuICgoY29uc3Qgc3RydWN0IF9fbG9hZHVfcGQqKV9fcCktPl9fdjsKfQoKLy8vIExvYWRzIDggc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCB2YWx1ZXMgZnJvbSBhbiB1bmFsaWduZWQKLy8vICAgIG1lbW9yeSBsb2NhdGlvbiBwb2ludGVkIHRvIGJ5IFxhIF9fcCBpbnRvIGEgdmVjdG9yIG9mIFs4IHggZmxvYXRdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZVUFMgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19wCi8vLyAgICBBIHBvaW50ZXIgdG8gYSBtZW1vcnkgbG9jYXRpb24gY29udGFpbmluZyBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nCi8vLyAgICBwb2ludCB2YWx1ZXMuCi8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIG1vdmVkIHZhbHVlcy4Kc3RhdGljIF9faW5saW5lIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMKX21tMjU2X2xvYWR1X3BzKGZsb2F0IGNvbnN0ICpfX3ApCnsKICBzdHJ1Y3QgX19sb2FkdV9wcyB7CiAgICBfX20yNTZfdSBfX3Y7CiAgfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19fKSk7CiAgcmV0dXJuICgoY29uc3Qgc3RydWN0IF9fbG9hZHVfcHMqKV9fcCktPl9fdjsKfQoKLy8vIExvYWRzIDI1NiBiaXRzIG9mIGludGVnZXIgZGF0YSBmcm9tIGEgMzItYnl0ZSBhbGlnbmVkIG1lbW9yeQovLy8gICAgbG9jYXRpb24gcG9pbnRlZCB0byBieSBcYSBfX3AgaW50byBlbGVtZW50cyBvZiBhIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVkRRQSA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX3AKLy8vICAgIEEgMzItYnl0ZSBhbGlnbmVkIHBvaW50ZXIgdG8gYSAyNTYtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgaW50ZWdlcgovLy8gICAgdmFsdWVzLgovLy8gXHJldHVybnMgQSAyNTYtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIG1vdmVkIHZhbHVlcy4Kc3RhdGljIF9faW5saW5lIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl9sb2FkX3NpMjU2KF9fbTI1NmkgY29uc3QgKl9fcCkKewogIHJldHVybiAqX19wOwp9CgovLy8gTG9hZHMgMjU2IGJpdHMgb2YgaW50ZWdlciBkYXRhIGZyb20gYW4gdW5hbGlnbmVkIG1lbW9yeSBsb2NhdGlvbgovLy8gICAgcG9pbnRlZCB0byBieSBcYSBfX3AgaW50byBhIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVkRRVSA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX3AKLy8vICAgIEEgcG9pbnRlciB0byBhIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBpbnRlZ2VyIHZhbHVlcy4KLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBtb3ZlZCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZSBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW0yNTZfbG9hZHVfc2kyNTYoX19tMjU2aV91IGNvbnN0ICpfX3ApCnsKICBzdHJ1Y3QgX19sb2FkdV9zaTI1NiB7CiAgICBfX20yNTZpX3UgX192OwogIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOwogIHJldHVybiAoKGNvbnN0IHN0cnVjdCBfX2xvYWR1X3NpMjU2KilfX3ApLT5fX3Y7Cn0KCi8vLyBMb2FkcyAyNTYgYml0cyBvZiBpbnRlZ2VyIGRhdGEgZnJvbSBhbiB1bmFsaWduZWQgbWVtb3J5IGxvY2F0aW9uCi8vLyAgICBwb2ludGVkIHRvIGJ5IFxhIF9fcCBpbnRvIGEgMjU2LWJpdCBpbnRlZ2VyIHZlY3Rvci4gVGhpcyBpbnRyaW5zaWMgbWF5Ci8vLyAgICBwZXJmb3JtIGJldHRlciB0aGFuIFxjIF9tbTI1Nl9sb2FkdV9zaTI1NiB3aGVuIHRoZSBkYXRhIGNyb3NzZXMgYSBjYWNoZQovLy8gICAgbGluZSBib3VuZGFyeS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTEREUVUgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19wCi8vLyAgICBBIHBvaW50ZXIgdG8gYSAyNTYtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgaW50ZWdlciB2YWx1ZXMuCi8vLyBccmV0dXJucyBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgbW92ZWQgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmUgX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tMjU2X2xkZHF1X3NpMjU2KF9fbTI1NmkgY29uc3QgKl9fcCkKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9sZGRxdTI1NigoY2hhciBjb25zdCAqKV9fcCk7Cn0KCi8qIFNJTUQgc3RvcmUgb3BzICovCi8vLyBTdG9yZXMgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCB2YWx1ZXMgZnJvbSBhIDI1Ni1iaXQgdmVjdG9yCi8vLyAgICBvZiBbNCB4IGRvdWJsZV0gdG8gYSAzMi1ieXRlIGFsaWduZWQgbWVtb3J5IGxvY2F0aW9uIHBvaW50ZWQgdG8gYnkKLy8vICAgIFxhIF9fcC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WQVBEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fcAovLy8gICAgQSAzMi1ieXRlIGFsaWduZWQgcG9pbnRlciB0byBhIG1lbW9yeSBsb2NhdGlvbiB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUKLy8vICAgIGRvdWJsZS1wcmVjaXNpb24gZmxvYWluZyBwb2ludCB2YWx1ZXMuCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZSB2YWx1ZXMgdG8gYmUgbW92ZWQuCnN0YXRpYyBfX2lubGluZSB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW0yNTZfc3RvcmVfcGQoZG91YmxlICpfX3AsIF9fbTI1NmQgX19hKQp7CiAgKihfX20yNTZkICopX19wID0gX19hOwp9CgovLy8gU3RvcmVzIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgdmFsdWVzIGZyb20gYSAyNTYtYml0IHZlY3RvcgovLy8gICAgb2YgWzggeCBmbG9hdF0gdG8gYSAzMi1ieXRlIGFsaWduZWQgbWVtb3J5IGxvY2F0aW9uIHBvaW50ZWQgdG8gYnkgXGEgX19wLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZBUFMgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19wCi8vLyAgICBBIDMyLWJ5dGUgYWxpZ25lZCBwb2ludGVyIHRvIGEgbWVtb3J5IGxvY2F0aW9uIHRoYXQgd2lsbCByZWNlaXZlIHRoZQovLy8gICAgZmxvYXQgdmFsdWVzLgovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSB2YWx1ZXMgdG8gYmUgbW92ZWQuCnN0YXRpYyBfX2lubGluZSB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW0yNTZfc3RvcmVfcHMoZmxvYXQgKl9fcCwgX19tMjU2IF9fYSkKewogICooX19tMjU2ICopX19wID0gX19hOwp9CgovLy8gU3RvcmVzIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgdmFsdWVzIGZyb20gYSAyNTYtYml0IHZlY3RvcgovLy8gICAgb2YgWzQgeCBkb3VibGVdIHRvIGFuIHVuYWxpZ25lZCBtZW1vcnkgbG9jYXRpb24gcG9pbnRlZCB0byBieSBcYSBfX3AuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVlVQRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX3AKLy8vICAgIEEgcG9pbnRlciB0byBhIG1lbW9yeSBsb2NhdGlvbiB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUgZG91YmxlLXByZWNpc2lvbgovLy8gICAgZmxvYXRpbmcgcG9pbnQgdmFsdWVzLgovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgdmFsdWVzIHRvIGJlIG1vdmVkLgpzdGF0aWMgX19pbmxpbmUgdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tMjU2X3N0b3JldV9wZChkb3VibGUgKl9fcCwgX19tMjU2ZCBfX2EpCnsKICBzdHJ1Y3QgX19zdG9yZXVfcGQgewogICAgX19tMjU2ZF91IF9fdjsKICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsKICAoKHN0cnVjdCBfX3N0b3JldV9wZCopX19wKS0+X192ID0gX19hOwp9CgovLy8gU3RvcmVzIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgdmFsdWVzIGZyb20gYSAyNTYtYml0IHZlY3RvcgovLy8gICAgb2YgWzggeCBmbG9hdF0gdG8gYW4gdW5hbGlnbmVkIG1lbW9yeSBsb2NhdGlvbiBwb2ludGVkIHRvIGJ5IFxhIF9fcC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WVVBTIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fcAovLy8gICAgQSBwb2ludGVyIHRvIGEgbWVtb3J5IGxvY2F0aW9uIHRoYXQgd2lsbCByZWNlaXZlIHRoZSBmbG9hdCB2YWx1ZXMuCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHZhbHVlcyB0byBiZSBtb3ZlZC4Kc3RhdGljIF9faW5saW5lIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl9zdG9yZXVfcHMoZmxvYXQgKl9fcCwgX19tMjU2IF9fYSkKewogIHN0cnVjdCBfX3N0b3JldV9wcyB7CiAgICBfX20yNTZfdSBfX3Y7CiAgfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19fKSk7CiAgKChzdHJ1Y3QgX19zdG9yZXVfcHMqKV9fcCktPl9fdiA9IF9fYTsKfQoKLy8vIFN0b3JlcyBpbnRlZ2VyIHZhbHVlcyBmcm9tIGEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciB0byBhIDMyLWJ5dGUKLy8vICAgIGFsaWduZWQgbWVtb3J5IGxvY2F0aW9uIHBvaW50ZWQgdG8gYnkgXGEgX19wLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZEUUEgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19wCi8vLyAgICBBIDMyLWJ5dGUgYWxpZ25lZCBwb2ludGVyIHRvIGEgbWVtb3J5IGxvY2F0aW9uIHRoYXQgd2lsbCByZWNlaXZlIHRoZQovLy8gICAgaW50ZWdlciB2YWx1ZXMuCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgdmFsdWVzIHRvIGJlIG1vdmVkLgpzdGF0aWMgX19pbmxpbmUgdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tMjU2X3N0b3JlX3NpMjU2KF9fbTI1NmkgKl9fcCwgX19tMjU2aSBfX2EpCnsKICAqX19wID0gX19hOwp9CgovLy8gU3RvcmVzIGludGVnZXIgdmFsdWVzIGZyb20gYSAyNTYtYml0IGludGVnZXIgdmVjdG9yIHRvIGFuIHVuYWxpZ25lZAovLy8gICAgbWVtb3J5IGxvY2F0aW9uIHBvaW50ZWQgdG8gYnkgXGEgX19wLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZEUVUgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19wCi8vLyAgICBBIHBvaW50ZXIgdG8gYSBtZW1vcnkgbG9jYXRpb24gdGhhdCB3aWxsIHJlY2VpdmUgdGhlIGludGVnZXIgdmFsdWVzLgovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAyNTYtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHZhbHVlcyB0byBiZSBtb3ZlZC4Kc3RhdGljIF9faW5saW5lIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl9zdG9yZXVfc2kyNTYoX19tMjU2aV91ICpfX3AsIF9fbTI1NmkgX19hKQp7CiAgc3RydWN0IF9fc3RvcmV1X3NpMjU2IHsKICAgIF9fbTI1NmlfdSBfX3Y7CiAgfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19fKSk7CiAgKChzdHJ1Y3QgX19zdG9yZXVfc2kyNTYqKV9fcCktPl9fdiA9IF9fYTsKfQoKLyogQ29uZGl0aW9uYWwgbG9hZCBvcHMgKi8KLy8vIENvbmRpdGlvbmFsbHkgbG9hZHMgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBlbGVtZW50cyBmcm9tIGEKLy8vICAgIG1lbW9yeSBsb2NhdGlvbiBwb2ludGVkIHRvIGJ5IFxhIF9fcCBpbnRvIGEgMTI4LWJpdCB2ZWN0b3Igb2YKLy8vICAgIFsyIHggZG91YmxlXSwgZGVwZW5kaW5nIG9uIHRoZSBtYXNrIGJpdHMgYXNzb2NpYXRlZCB3aXRoIGVhY2ggZGF0YQovLy8gICAgZWxlbWVudC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTUFTS01PVlBEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fcAovLy8gICAgQSBwb2ludGVyIHRvIGEgbWVtb3J5IGxvY2F0aW9uIHRoYXQgY29udGFpbnMgdGhlIGRvdWJsZS1wcmVjaXNpb24KLy8vICAgIGZsb2F0aW5nIHBvaW50IHZhbHVlcy4KLy8vIFxwYXJhbSBfX20KLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBtYXNrLiBUaGUgbW9zdCBzaWduaWZpY2FudCBiaXQgb2YKLy8vICAgIGVhY2ggZGF0YSBlbGVtZW50IHJlcHJlc2VudHMgdGhlIG1hc2sgYml0cy4gSWYgYSBtYXNrIGJpdCBpcyB6ZXJvLCB0aGUKLy8vICAgIGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4gdGhlIG1lbW9yeSBsb2NhdGlvbiBpcyBub3QgbG9hZGVkIGFuZCB0aGUKLy8vICAgIGNvcnJlc3BvbmRpbmcgZmllbGQgaW4gdGhlIHJldHVybiB2YWx1ZSBpcyBzZXQgdG8gemVyby4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGxvYWRlZCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZSBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza2xvYWRfcGQoZG91YmxlIGNvbnN0ICpfX3AsIF9fbTEyOGkgX19tKQp7CiAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX21hc2tsb2FkcGQoKGNvbnN0IF9fdjJkZiAqKV9fcCwgKF9fdjJkaSlfX20pOwp9CgovLy8gQ29uZGl0aW9uYWxseSBsb2FkcyBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IGVsZW1lbnRzIGZyb20gYQovLy8gICAgbWVtb3J5IGxvY2F0aW9uIHBvaW50ZWQgdG8gYnkgXGEgX19wIGludG8gYSAyNTYtYml0IHZlY3RvciBvZgovLy8gICAgWzQgeCBkb3VibGVdLCBkZXBlbmRpbmcgb24gdGhlIG1hc2sgYml0cyBhc3NvY2lhdGVkIHdpdGggZWFjaCBkYXRhCi8vLyAgICBlbGVtZW50LgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNQVNLTU9WUEQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19wCi8vLyAgICBBIHBvaW50ZXIgdG8gYSBtZW1vcnkgbG9jYXRpb24gdGhhdCBjb250YWlucyB0aGUgZG91YmxlLXByZWNpc2lvbgovLy8gICAgZmxvYXRpbmcgcG9pbnQgdmFsdWVzLgovLy8gXHBhcmFtIF9fbQovLy8gICAgQSAyNTYtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggcXVhZHdvcmRdIGNvbnRhaW5pbmcgdGhlIG1hc2suIFRoZSBtb3N0Ci8vLyAgICBzaWduaWZpY2FudCBiaXQgb2YgZWFjaCBxdWFkd29yZCBlbGVtZW50IHJlcHJlc2VudHMgdGhlIG1hc2sgYml0cy4gSWYgYQovLy8gICAgbWFzayBiaXQgaXMgemVybywgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4gdGhlIG1lbW9yeSBsb2NhdGlvbiBpcyBub3QKLy8vICAgIGxvYWRlZCBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgZmllbGQgaW4gdGhlIHJldHVybiB2YWx1ZSBpcyBzZXQgdG8gemVyby4KLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGxvYWRlZCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW0yNTZfbWFza2xvYWRfcGQoZG91YmxlIGNvbnN0ICpfX3AsIF9fbTI1NmkgX19tKQp7CiAgcmV0dXJuIChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX21hc2tsb2FkcGQyNTYoKGNvbnN0IF9fdjRkZiAqKV9fcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9fbSk7Cn0KCi8vLyBDb25kaXRpb25hbGx5IGxvYWRzIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgZWxlbWVudHMgZnJvbSBhCi8vLyAgICBtZW1vcnkgbG9jYXRpb24gcG9pbnRlZCB0byBieSBcYSBfX3AgaW50byBhIDEyOC1iaXQgdmVjdG9yIG9mCi8vLyAgICBbNCB4IGZsb2F0XSwgZGVwZW5kaW5nIG9uIHRoZSBtYXNrIGJpdHMgYXNzb2NpYXRlZCB3aXRoIGVhY2ggZGF0YQovLy8gICAgZWxlbWVudC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTUFTS01PVlBTIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fcAovLy8gICAgQSBwb2ludGVyIHRvIGEgbWVtb3J5IGxvY2F0aW9uIHRoYXQgY29udGFpbnMgdGhlIHNpbmdsZS1wcmVjaXNpb24KLy8vICAgIGZsb2F0aW5nIHBvaW50IHZhbHVlcy4KLy8vIFxwYXJhbSBfX20KLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBtYXNrLiBUaGUgbW9zdCBzaWduaWZpY2FudCBiaXQgb2YKLy8vICAgIGVhY2ggZGF0YSBlbGVtZW50IHJlcHJlc2VudHMgdGhlIG1hc2sgYml0cy4gSWYgYSBtYXNrIGJpdCBpcyB6ZXJvLCB0aGUKLy8vICAgIGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4gdGhlIG1lbW9yeSBsb2NhdGlvbiBpcyBub3QgbG9hZGVkIGFuZCB0aGUKLy8vICAgIGNvcnJlc3BvbmRpbmcgZmllbGQgaW4gdGhlIHJldHVybiB2YWx1ZSBpcyBzZXQgdG8gemVyby4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgbG9hZGVkIHZhbHVlcy4Kc3RhdGljIF9faW5saW5lIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tsb2FkX3BzKGZsb2F0IGNvbnN0ICpfX3AsIF9fbTEyOGkgX19tKQp7CiAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfbWFza2xvYWRwcygoY29uc3QgX192NHNmICopX19wLCAoX192NHNpKV9fbSk7Cn0KCi8vLyBDb25kaXRpb25hbGx5IGxvYWRzIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgZWxlbWVudHMgZnJvbSBhCi8vLyAgICBtZW1vcnkgbG9jYXRpb24gcG9pbnRlZCB0byBieSBcYSBfX3AgaW50byBhIDI1Ni1iaXQgdmVjdG9yIG9mCi8vLyAgICBbOCB4IGZsb2F0XSwgZGVwZW5kaW5nIG9uIHRoZSBtYXNrIGJpdHMgYXNzb2NpYXRlZCB3aXRoIGVhY2ggZGF0YQovLy8gICAgZWxlbWVudC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTUFTS01PVlBTIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fcAovLy8gICAgQSBwb2ludGVyIHRvIGEgbWVtb3J5IGxvY2F0aW9uIHRoYXQgY29udGFpbnMgdGhlIHNpbmdsZS1wcmVjaXNpb24KLy8vICAgIGZsb2F0aW5nIHBvaW50IHZhbHVlcy4KLy8vIFxwYXJhbSBfX20KLy8vICAgIEEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGR3b3JkXSBjb250YWluaW5nIHRoZSBtYXNrLiBUaGUgbW9zdAovLy8gICAgc2lnbmlmaWNhbnQgYml0IG9mIGVhY2ggZHdvcmQgZWxlbWVudCByZXByZXNlbnRzIHRoZSBtYXNrIGJpdHMuIElmIGEgbWFzawovLy8gICAgYml0IGlzIHplcm8sIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGluIHRoZSBtZW1vcnkgbG9jYXRpb24gaXMgbm90IGxvYWRlZAovLy8gICAgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGZpZWxkIGluIHRoZSByZXR1cm4gdmFsdWUgaXMgc2V0IHRvIHplcm8uCi8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGxvYWRlZCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl9tYXNrbG9hZF9wcyhmbG9hdCBjb25zdCAqX19wLCBfX20yNTZpIF9fbSkKewogIHJldHVybiAoX19tMjU2KV9fYnVpbHRpbl9pYTMyX21hc2tsb2FkcHMyNTYoKGNvbnN0IF9fdjhzZiAqKV9fcCwgKF9fdjhzaSlfX20pOwp9CgovKiBDb25kaXRpb25hbCBzdG9yZSBvcHMgKi8KLy8vIE1vdmVzIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgdmFsdWVzIGZyb20gYSAyNTYtYml0IHZlY3RvcgovLy8gICAgb2YgWzggeCBmbG9hdF0gdG8gYSBtZW1vcnkgbG9jYXRpb24gcG9pbnRlZCB0byBieSBcYSBfX3AsIGFjY29yZGluZyB0bwovLy8gICAgdGhlIHNwZWNpZmllZCBtYXNrLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNQVNLTU9WUFMgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19wCi8vLyAgICBBIHBvaW50ZXIgdG8gYSBtZW1vcnkgbG9jYXRpb24gdGhhdCB3aWxsIHJlY2VpdmUgdGhlIGZsb2F0IHZhbHVlcy4KLy8vIFxwYXJhbSBfX20KLy8vICAgIEEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGR3b3JkXSBjb250YWluaW5nIHRoZSBtYXNrLiBUaGUgbW9zdAovLy8gICAgc2lnbmlmaWNhbnQgYml0IG9mIGVhY2ggZHdvcmQgZWxlbWVudCBpbiB0aGUgbWFzayB2ZWN0b3IgcmVwcmVzZW50cyB0aGUKLy8vICAgIG1hc2sgYml0cy4gSWYgYSBtYXNrIGJpdCBpcyB6ZXJvLCB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBmcm9tIHZlY3RvcgovLy8gICAgXGEgX19hIGlzIG5vdCBzdG9yZWQgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGZpZWxkIGluIHRoZSBtZW1vcnkgbG9jYXRpb24KLy8vICAgIHBvaW50ZWQgdG8gYnkgXGEgX19wIGlzIG5vdCBjaGFuZ2VkLgovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSB2YWx1ZXMgdG8gYmUgc3RvcmVkLgpzdGF0aWMgX19pbmxpbmUgdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tMjU2X21hc2tzdG9yZV9wcyhmbG9hdCAqX19wLCBfX20yNTZpIF9fbSwgX19tMjU2IF9fYSkKewogIF9fYnVpbHRpbl9pYTMyX21hc2tzdG9yZXBzMjU2KChfX3Y4c2YgKilfX3AsIChfX3Y4c2kpX19tLCAoX192OHNmKV9fYSk7Cn0KCi8vLyBNb3ZlcyBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBmcm9tIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdCi8vLyAgICB0byBhIG1lbW9yeSBsb2NhdGlvbiBwb2ludGVkIHRvIGJ5IFxhIF9fcCwgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQKLy8vICAgIG1hc2suCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1BU0tNT1ZQRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX3AKLy8vICAgIEEgcG9pbnRlciB0byBhIG1lbW9yeSBsb2NhdGlvbiB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUgZmxvYXQgdmFsdWVzLgovLy8gXHBhcmFtIF9fbQovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIG1hc2suIFRoZSBtb3N0IHNpZ25pZmljYW50IGJpdCBvZgovLy8gICAgZWFjaCBmaWVsZCBpbiB0aGUgbWFzayB2ZWN0b3IgcmVwcmVzZW50cyB0aGUgbWFzayBiaXRzLiBJZiBhIG1hc2sgYml0IGlzCi8vLyAgICB6ZXJvLCB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBmcm9tIHZlY3RvciBcYSBfX2EgaXMgbm90IHN0b3JlZCBhbmQgdGhlCi8vLyAgICBjb3JyZXNwb25kaW5nIGZpZWxkIGluIHRoZSBtZW1vcnkgbG9jYXRpb24gcG9pbnRlZCB0byBieSBcYSBfX3AgaXMgbm90Ci8vLyAgICBjaGFuZ2VkLgovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgdmFsdWVzIHRvIGJlIHN0b3JlZC4Kc3RhdGljIF9faW5saW5lIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrc3RvcmVfcGQoZG91YmxlICpfX3AsIF9fbTEyOGkgX19tLCBfX20xMjhkIF9fYSkKewogIF9fYnVpbHRpbl9pYTMyX21hc2tzdG9yZXBkKChfX3YyZGYgKilfX3AsIChfX3YyZGkpX19tLCAoX192MmRmKV9fYSk7Cn0KCi8vLyBNb3ZlcyBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBmcm9tIGEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdCi8vLyAgICB0byBhIG1lbW9yeSBsb2NhdGlvbiBwb2ludGVkIHRvIGJ5IFxhIF9fcCwgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQKLy8vICAgIG1hc2suCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1BU0tNT1ZQRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX3AKLy8vICAgIEEgcG9pbnRlciB0byBhIG1lbW9yeSBsb2NhdGlvbiB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUgZmxvYXQgdmFsdWVzLgovLy8gXHBhcmFtIF9fbQovLy8gICAgQSAyNTYtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggcXVhZHdvcmRdIGNvbnRhaW5pbmcgdGhlIG1hc2suIFRoZSBtb3N0Ci8vLyAgICBzaWduaWZpY2FudCBiaXQgb2YgZWFjaCBxdWFkd29yZCBlbGVtZW50IGluIHRoZSBtYXNrIHZlY3RvciByZXByZXNlbnRzCi8vLyAgICB0aGUgbWFzayBiaXRzLiBJZiBhIG1hc2sgYml0IGlzIHplcm8sIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGZyb20gdmVjdG9yCi8vLyAgICBfX2EgaXMgbm90IHN0b3JlZCBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgZmllbGQgaW4gdGhlIG1lbW9yeSBsb2NhdGlvbgovLy8gICAgcG9pbnRlZCB0byBieSBcYSBfX3AgaXMgbm90IGNoYW5nZWQuCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZSB2YWx1ZXMgdG8gYmUgc3RvcmVkLgpzdGF0aWMgX19pbmxpbmUgdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tMjU2X21hc2tzdG9yZV9wZChkb3VibGUgKl9fcCwgX19tMjU2aSBfX20sIF9fbTI1NmQgX19hKQp7CiAgX19idWlsdGluX2lhMzJfbWFza3N0b3JlcGQyNTYoKF9fdjRkZiAqKV9fcCwgKF9fdjRkaSlfX20sIChfX3Y0ZGYpX19hKTsKfQoKLy8vIE1vdmVzIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgdmFsdWVzIGZyb20gYSAxMjgtYml0IHZlY3RvcgovLy8gICAgb2YgWzQgeCBmbG9hdF0gdG8gYSBtZW1vcnkgbG9jYXRpb24gcG9pbnRlZCB0byBieSBcYSBfX3AsIGFjY29yZGluZyB0bwovLy8gICAgdGhlIHNwZWNpZmllZCBtYXNrLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNQVNLTU9WUFMgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19wCi8vLyAgICBBIHBvaW50ZXIgdG8gYSBtZW1vcnkgbG9jYXRpb24gdGhhdCB3aWxsIHJlY2VpdmUgdGhlIGZsb2F0IHZhbHVlcy4KLy8vIFxwYXJhbSBfX20KLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBtYXNrLiBUaGUgbW9zdCBzaWduaWZpY2FudCBiaXQgb2YKLy8vICAgIGVhY2ggZmllbGQgaW4gdGhlIG1hc2sgdmVjdG9yIHJlcHJlc2VudHMgdGhlIG1hc2sgYml0cy4gSWYgYSBtYXNrIGJpdCBpcwovLy8gICAgemVybywgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgZnJvbSB2ZWN0b3IgX19hIGlzIG5vdCBzdG9yZWQgYW5kIHRoZQovLy8gICAgY29ycmVzcG9uZGluZyBmaWVsZCBpbiB0aGUgbWVtb3J5IGxvY2F0aW9uIHBvaW50ZWQgdG8gYnkgXGEgX19wIGlzIG5vdAovLy8gICAgY2hhbmdlZC4KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgdmFsdWVzIHRvIGJlIHN0b3JlZC4Kc3RhdGljIF9faW5saW5lIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrc3RvcmVfcHMoZmxvYXQgKl9fcCwgX19tMTI4aSBfX20sIF9fbTEyOCBfX2EpCnsKICBfX2J1aWx0aW5faWEzMl9tYXNrc3RvcmVwcygoX192NHNmICopX19wLCAoX192NHNpKV9fbSwgKF9fdjRzZilfX2EpOwp9CgovKiBDYWNoZWFiaWxpdHkgc3VwcG9ydCBvcHMgKi8KLy8vIE1vdmVzIGludGVnZXIgZGF0YSBmcm9tIGEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciB0byBhIDMyLWJ5dGUKLy8vICAgIGFsaWduZWQgbWVtb3J5IGxvY2F0aW9uLiBUbyBtaW5pbWl6ZSBjYWNoaW5nLCB0aGUgZGF0YSBpcyBmbGFnZ2VkIGFzCi8vLyAgICBub24tdGVtcG9yYWwgKHVubGlrZWx5IHRvIGJlIHVzZWQgYWdhaW4gc29vbikuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVk5URFEgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIHBvaW50ZXIgdG8gYSAzMi1ieXRlIGFsaWduZWQgbWVtb3J5IGxvY2F0aW9uIHRoYXQgd2lsbCByZWNlaXZlIHRoZQovLy8gICAgaW50ZWdlciB2YWx1ZXMuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgdmFsdWVzIHRvIGJlIG1vdmVkLgpzdGF0aWMgX19pbmxpbmUgdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tMjU2X3N0cmVhbV9zaTI1NihfX20yNTZpICpfX2EsIF9fbTI1NmkgX19iKQp7CiAgdHlwZWRlZiBfX3Y0ZGkgX192NGRpX2FsaWduZWQgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCgzMikpKTsKICBfX2J1aWx0aW5fbm9udGVtcG9yYWxfc3RvcmUoKF9fdjRkaV9hbGlnbmVkKV9fYiwgKF9fdjRkaV9hbGlnbmVkKilfX2EpOwp9CgovLy8gTW92ZXMgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgZnJvbSBhIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXQovLy8gICAgdG8gYSAzMi1ieXRlIGFsaWduZWQgbWVtb3J5IGxvY2F0aW9uLiBUbyBtaW5pbWl6ZSBjYWNoaW5nLCB0aGUgZGF0YSBpcwovLy8gICAgZmxhZ2dlZCBhcyBub24tdGVtcG9yYWwgKHVubGlrZWx5IHRvIGJlIHVzZWQgYWdhaW4gc29vbikuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVk5UUEQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIHBvaW50ZXIgdG8gYSAzMi1ieXRlIGFsaWduZWQgbWVtb3J5IGxvY2F0aW9uIHRoYXQgd2lsbCByZWNlaXZlIHRoZQovLy8gICAgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZSB2YWx1ZXMgdG8gYmUgbW92ZWQuCnN0YXRpYyBfX2lubGluZSB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW0yNTZfc3RyZWFtX3BkKGRvdWJsZSAqX19hLCBfX20yNTZkIF9fYikKewogIHR5cGVkZWYgX192NGRmIF9fdjRkZl9hbGlnbmVkIF9fYXR0cmlidXRlX18oKGFsaWduZWQoMzIpKSk7CiAgX19idWlsdGluX25vbnRlbXBvcmFsX3N0b3JlKChfX3Y0ZGZfYWxpZ25lZClfX2IsIChfX3Y0ZGZfYWxpZ25lZCopX19hKTsKfQoKLy8vIE1vdmVzIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgdmFsdWVzIGZyb20gYSAyNTYtYml0IHZlY3RvcgovLy8gICAgb2YgWzggeCBmbG9hdF0gdG8gYSAzMi1ieXRlIGFsaWduZWQgbWVtb3J5IGxvY2F0aW9uLiBUbyBtaW5pbWl6ZQovLy8gICAgY2FjaGluZywgdGhlIGRhdGEgaXMgZmxhZ2dlZCBhcyBub24tdGVtcG9yYWwgKHVubGlrZWx5IHRvIGJlIHVzZWQgYWdhaW4KLy8vICAgIHNvb24pLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZOVFBTIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fcAovLy8gICAgQSBwb2ludGVyIHRvIGEgMzItYnl0ZSBhbGlnbmVkIG1lbW9yeSBsb2NhdGlvbiB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUKLy8vICAgIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgdmFsdWVzLgovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSB2YWx1ZXMgdG8gYmUgbW92ZWQuCnN0YXRpYyBfX2lubGluZSB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW0yNTZfc3RyZWFtX3BzKGZsb2F0ICpfX3AsIF9fbTI1NiBfX2EpCnsKICB0eXBlZGVmIF9fdjhzZiBfX3Y4c2ZfYWxpZ25lZCBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDMyKSkpOwogIF9fYnVpbHRpbl9ub250ZW1wb3JhbF9zdG9yZSgoX192OHNmX2FsaWduZWQpX19hLCAoX192OHNmX2FsaWduZWQqKV9fcCk7Cn0KCi8qIENyZWF0ZSB2ZWN0b3JzICovCi8vLyBDcmVhdGUgYSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gd2l0aCB1bmRlZmluZWQgdmFsdWVzLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBoYXMgbm8gY29ycmVzcG9uZGluZyBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHVuZGVmaW5lZCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl91bmRlZmluZWRfcGQodm9pZCkKewogIHJldHVybiAoX19tMjU2ZClfX2J1aWx0aW5faWEzMl91bmRlZjI1NigpOwp9CgovLy8gQ3JlYXRlIGEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gd2l0aCB1bmRlZmluZWQgdmFsdWVzLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBoYXMgbm8gY29ycmVzcG9uZGluZyBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdW5kZWZpbmVkIHZhbHVlcy4Kc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUwpfbW0yNTZfdW5kZWZpbmVkX3BzKHZvaWQpCnsKICByZXR1cm4gKF9fbTI1NilfX2J1aWx0aW5faWEzMl91bmRlZjI1NigpOwp9CgovLy8gQ3JlYXRlIGEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciB3aXRoIHVuZGVmaW5lZCB2YWx1ZXMuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGhhcyBubyBjb3JyZXNwb25kaW5nIGluc3RydWN0aW9uLgovLy8KLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHVuZGVmaW5lZCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl91bmRlZmluZWRfc2kyNTYodm9pZCkKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl91bmRlZjI1NigpOwp9CgovLy8gQ29uc3RydWN0cyBhIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZG91YmxlXQovLy8gICAgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWVzLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZVTlBDS0xQRCtWSU5TRVJURjEyOCA8L2M+Ci8vLyAgIGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjU1OjE5Ml0KLy8vICAgIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE5MToxMjhdCi8vLyAgICBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fYwovLy8gICAgQSBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxMjc6NjRdCi8vLyAgICBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fZAovLy8gICAgQSBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs2MzowXQovLy8gICAgb2YgdGhlIHJlc3VsdC4KLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4Kc3RhdGljIF9faW5saW5lIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl9zZXRfcGQoZG91YmxlIF9fYSwgZG91YmxlIF9fYiwgZG91YmxlIF9fYywgZG91YmxlIF9fZCkKewogIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20yNTZkKXsgX19kLCBfX2MsIF9fYiwgX19hIH07Cn0KCi8vLyBDb25zdHJ1Y3RzIGEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gaW5pdGlhbGl6ZWQKLy8vICAgIHdpdGggdGhlIHNwZWNpZmllZCBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcy4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1dGlsaXR5IGZ1bmN0aW9uIGFuZCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lmaWMKLy8vICAgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsyNTU6MjI0XQovLy8gICAgb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjIzOjE5Ml0KLy8vICAgIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19jCi8vLyAgICBBIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE5MToxNjBdCi8vLyAgICBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fZAovLy8gICAgQSBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxNTk6MTI4XQovLy8gICAgb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2UKLy8vICAgIEEgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTI3Ojk2XQovLy8gICAgb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2YKLy8vICAgIEEgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbOTU6NjRdCi8vLyAgICBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fZwovLy8gICAgQSBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs2MzozMl0KLy8vICAgIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19oCi8vLyAgICBBIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzMxOjBdCi8vLyAgICBvZiB0aGUgcmVzdWx0LgovLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uCnN0YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl9zZXRfcHMoZmxvYXQgX19hLCBmbG9hdCBfX2IsIGZsb2F0IF9fYywgZmxvYXQgX19kLAogICAgICAgICAgICAgIGZsb2F0IF9fZSwgZmxvYXQgX19mLCBmbG9hdCBfX2csIGZsb2F0IF9faCkKewogIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20yNTYpeyBfX2gsIF9fZywgX19mLCBfX2UsIF9fZCwgX19jLCBfX2IsIF9fYSB9Owp9CgovLy8gQ29uc3RydWN0cyBhIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgc3BlY2lmaWVkCi8vLyAgICAzMi1iaXQgaW50ZWdyYWwgdmFsdWVzLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBpcyBhIHV0aWxpdHkgZnVuY3Rpb24gYW5kIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBzcGVjaWZpYwovLy8gICBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19pMAovLy8gICAgQSAzMi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzI1NToyMjRdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19pMQovLy8gICAgQSAzMi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzIyMzoxOTJdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19pMgovLy8gICAgQSAzMi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE5MToxNjBdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19pMwovLy8gICAgQSAzMi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE1OToxMjhdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19pNAovLy8gICAgQSAzMi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzEyNzo5Nl0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2k1Ci8vLyAgICBBIDMyLWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbOTU6NjRdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19pNgovLy8gICAgQSAzMi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzYzOjMyXSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9faTcKLy8vICAgIEEgMzItYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFszMTowXSBvZiB0aGUgcmVzdWx0LgovLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMjU2LWJpdCBpbnRlZ2VyIHZlY3Rvci4Kc3RhdGljIF9faW5saW5lIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl9zZXRfZXBpMzIoaW50IF9faTAsIGludCBfX2kxLCBpbnQgX19pMiwgaW50IF9faTMsCiAgICAgICAgICAgICAgICAgaW50IF9faTQsIGludCBfX2k1LCBpbnQgX19pNiwgaW50IF9faTcpCnsKICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMjU2aSkoX192OHNpKXsgX19pNywgX19pNiwgX19pNSwgX19pNCwgX19pMywgX19pMiwgX19pMSwgX19pMCB9Owp9CgovLy8gQ29uc3RydWN0cyBhIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgc3BlY2lmaWVkCi8vLyAgICAxNi1iaXQgaW50ZWdyYWwgdmFsdWVzLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBpcyBhIHV0aWxpdHkgZnVuY3Rpb24gYW5kIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBzcGVjaWZpYwovLy8gICBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX193MTUKLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsyNTU6MjQwXSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fdzE0Ci8vLyAgICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjM5OjIyNF0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX3cxMwovLy8gICAgQSAxNi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzIyMzoyMDhdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX193MTIKLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsyMDc6MTkyXSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fdzExCi8vLyAgICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTkxOjE3Nl0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX3cxMAovLy8gICAgQSAxNi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE3NToxNjBdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX193MDkKLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxNTk6MTQ0XSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fdzA4Ci8vLyAgICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTQzOjEyOF0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX3cwNwovLy8gICAgQSAxNi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzEyNzoxMTJdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX193MDYKLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxMTE6OTZdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX193MDUKLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs5NTo4MF0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX3cwNAovLy8gICAgQSAxNi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzc5OjY0XSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fdzAzCi8vLyAgICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNjM6NDhdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX193MDIKLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs0NzozMl0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX3cwMQovLy8gICAgQSAxNi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzMxOjE2XSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fdzAwCi8vLyAgICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTU6MF0gb2YgdGhlIHJlc3VsdC4KLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IuCnN0YXRpYyBfX2lubGluZSBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW0yNTZfc2V0X2VwaTE2KHNob3J0IF9fdzE1LCBzaG9ydCBfX3cxNCwgc2hvcnQgX193MTMsIHNob3J0IF9fdzEyLAogICAgICAgICAgICAgICAgIHNob3J0IF9fdzExLCBzaG9ydCBfX3cxMCwgc2hvcnQgX193MDksIHNob3J0IF9fdzA4LAogICAgICAgICAgICAgICAgIHNob3J0IF9fdzA3LCBzaG9ydCBfX3cwNiwgc2hvcnQgX193MDUsIHNob3J0IF9fdzA0LAogICAgICAgICAgICAgICAgIHNob3J0IF9fdzAzLCBzaG9ydCBfX3cwMiwgc2hvcnQgX193MDEsIHNob3J0IF9fdzAwKQp7CiAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTI1NmkpKF9fdjE2aGkpeyBfX3cwMCwgX193MDEsIF9fdzAyLCBfX3cwMywgX193MDQsIF9fdzA1LCBfX3cwNiwKICAgIF9fdzA3LCBfX3cwOCwgX193MDksIF9fdzEwLCBfX3cxMSwgX193MTIsIF9fdzEzLCBfX3cxNCwgX193MTUgfTsKfQoKLy8vIENvbnN0cnVjdHMgYSAyNTYtYml0IGludGVnZXIgdmVjdG9yIGluaXRpYWxpemVkIHdpdGggdGhlIHNwZWNpZmllZAovLy8gICAgOC1iaXQgaW50ZWdyYWwgdmFsdWVzLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBpcyBhIHV0aWxpdHkgZnVuY3Rpb24gYW5kIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBzcGVjaWZpYwovLy8gICBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19iMzEKLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsyNTU6MjQ4XSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fYjMwCi8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjQ3OjI0MF0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2IyOQovLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzIzOToyMzJdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19iMjgKLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsyMzE6MjI0XSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fYjI3Ci8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjIzOjIxNl0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2IyNgovLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzIxNToyMDhdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19iMjUKLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsyMDc6MjAwXSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fYjI0Ci8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTk5OjE5Ml0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2IyMwovLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE5MToxODRdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19iMjIKLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxODM6MTc2XSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fYjIxCi8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTc1OjE2OF0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2IyMAovLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE2NzoxNjBdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19iMTkKLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxNTk6MTUyXSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fYjE4Ci8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTUxOjE0NF0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2IxNwovLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE0MzoxMzZdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19iMTYKLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxMzU6MTI4XSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fYjE1Ci8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTI3OjEyMF0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2IxNAovLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzExOToxMTJdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19iMTMKLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxMTE6MTA0XSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fYjEyCi8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTAzOjk2XSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fYjExCi8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbOTU6ODhdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19iMTAKLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs4Nzo4MF0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2IwOQovLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzc5OjcyXSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fYjA4Ci8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNzE6NjRdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19iMDcKLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs2Mzo1Nl0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2IwNgovLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzU1OjQ4XSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fYjA1Ci8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNDc6NDBdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19iMDQKLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFszOTozMl0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2IwMwovLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzMxOjI0XSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fYjAyCi8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjM6MTZdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19iMDEKLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxNTo4XSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fYjAwCi8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNzowXSBvZiB0aGUgcmVzdWx0LgovLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMjU2LWJpdCBpbnRlZ2VyIHZlY3Rvci4Kc3RhdGljIF9faW5saW5lIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl9zZXRfZXBpOChjaGFyIF9fYjMxLCBjaGFyIF9fYjMwLCBjaGFyIF9fYjI5LCBjaGFyIF9fYjI4LAogICAgICAgICAgICAgICAgY2hhciBfX2IyNywgY2hhciBfX2IyNiwgY2hhciBfX2IyNSwgY2hhciBfX2IyNCwKICAgICAgICAgICAgICAgIGNoYXIgX19iMjMsIGNoYXIgX19iMjIsIGNoYXIgX19iMjEsIGNoYXIgX19iMjAsCiAgICAgICAgICAgICAgICBjaGFyIF9fYjE5LCBjaGFyIF9fYjE4LCBjaGFyIF9fYjE3LCBjaGFyIF9fYjE2LAogICAgICAgICAgICAgICAgY2hhciBfX2IxNSwgY2hhciBfX2IxNCwgY2hhciBfX2IxMywgY2hhciBfX2IxMiwKICAgICAgICAgICAgICAgIGNoYXIgX19iMTEsIGNoYXIgX19iMTAsIGNoYXIgX19iMDksIGNoYXIgX19iMDgsCiAgICAgICAgICAgICAgICBjaGFyIF9fYjA3LCBjaGFyIF9fYjA2LCBjaGFyIF9fYjA1LCBjaGFyIF9fYjA0LAogICAgICAgICAgICAgICAgY2hhciBfX2IwMywgY2hhciBfX2IwMiwgY2hhciBfX2IwMSwgY2hhciBfX2IwMCkKewogIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20yNTZpKShfX3YzMnFpKXsKICAgIF9fYjAwLCBfX2IwMSwgX19iMDIsIF9fYjAzLCBfX2IwNCwgX19iMDUsIF9fYjA2LCBfX2IwNywKICAgIF9fYjA4LCBfX2IwOSwgX19iMTAsIF9fYjExLCBfX2IxMiwgX19iMTMsIF9fYjE0LCBfX2IxNSwKICAgIF9fYjE2LCBfX2IxNywgX19iMTgsIF9fYjE5LCBfX2IyMCwgX19iMjEsIF9fYjIyLCBfX2IyMywKICAgIF9fYjI0LCBfX2IyNSwgX19iMjYsIF9fYjI3LCBfX2IyOCwgX19iMjksIF9fYjMwLCBfX2IzMQogIH07Cn0KCi8vLyBDb25zdHJ1Y3RzIGEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBpbml0aWFsaXplZCB3aXRoIHRoZSBzcGVjaWZpZWQKLy8vICAgIDY0LWJpdCBpbnRlZ3JhbCB2YWx1ZXMuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBVTlBDS0xRRFErVklOU0VSVEYxMjggPC9jPgovLy8gICBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDY0LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjU1OjE5Ml0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgNjQtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxOTE6MTI4XSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fYwovLy8gICAgQSA2NC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzEyNzo2NF0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2QKLy8vICAgIEEgNjQtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs2MzowXSBvZiB0aGUgcmVzdWx0LgovLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMjU2LWJpdCBpbnRlZ2VyIHZlY3Rvci4Kc3RhdGljIF9faW5saW5lIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl9zZXRfZXBpNjR4KGxvbmcgbG9uZyBfX2EsIGxvbmcgbG9uZyBfX2IsIGxvbmcgbG9uZyBfX2MsIGxvbmcgbG9uZyBfX2QpCnsKICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMjU2aSkoX192NGRpKXsgX19kLCBfX2MsIF9fYiwgX19hIH07Cn0KCi8qIENyZWF0ZSB2ZWN0b3JzIHdpdGggZWxlbWVudHMgaW4gcmV2ZXJzZSBvcmRlciAqLwovLy8gQ29uc3RydWN0cyBhIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSwKLy8vICAgIGluaXRpYWxpemVkIGluIHJldmVyc2Ugb3JkZXIgd2l0aCB0aGUgc3BlY2lmaWVkIGRvdWJsZS1wcmVjaXNpb24KLy8vICAgIGZsb2F0aW5nLXBvaW50IHZhbHVlcy4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWVU5QQ0tMUEQrVklOU0VSVEYxMjggPC9jPgovLy8gICBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzYzOjBdCi8vLyAgICBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxMjc6NjRdCi8vLyAgICBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fYwovLy8gICAgQSBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxOTE6MTI4XQovLy8gICAgb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2QKLy8vICAgIEEgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjU1OjE5Ml0KLy8vICAgIG9mIHRoZSByZXN1bHQuCi8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uCnN0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW0yNTZfc2V0cl9wZChkb3VibGUgX19hLCBkb3VibGUgX19iLCBkb3VibGUgX19jLCBkb3VibGUgX19kKQp7CiAgcmV0dXJuIF9tbTI1Nl9zZXRfcGQoX19kLCBfX2MsIF9fYiwgX19hKTsKfQoKLy8vIENvbnN0cnVjdHMgYSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbOCB4IGZsb2F0XSwKLy8vICAgIGluaXRpYWxpemVkIGluIHJldmVyc2Ugb3JkZXIgd2l0aCB0aGUgc3BlY2lmaWVkIHNpbmdsZS1wcmVjaXNpb24KLy8vICAgIGZsb2F0LXBvaW50IHZhbHVlcy4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1dGlsaXR5IGZ1bmN0aW9uIGFuZCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lmaWMKLy8vICAgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFszMTowXQovLy8gICAgb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNjM6MzJdCi8vLyAgICBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fYwovLy8gICAgQSBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs5NTo2NF0KLy8vICAgIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19kCi8vLyAgICBBIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzEyNzo5Nl0KLy8vICAgIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19lCi8vLyAgICBBIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE1OToxMjhdCi8vLyAgICBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fZgovLy8gICAgQSBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxOTE6MTYwXQovLy8gICAgb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2cKLy8vICAgIEEgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjIzOjE5Ml0KLy8vICAgIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19oCi8vLyAgICBBIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzI1NToyMjRdCi8vLyAgICBvZiB0aGUgcmVzdWx0LgovLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uCnN0YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl9zZXRyX3BzKGZsb2F0IF9fYSwgZmxvYXQgX19iLCBmbG9hdCBfX2MsIGZsb2F0IF9fZCwKICAgICAgICAgICAgICAgZmxvYXQgX19lLCBmbG9hdCBfX2YsIGZsb2F0IF9fZywgZmxvYXQgX19oKQp7CiAgcmV0dXJuIF9tbTI1Nl9zZXRfcHMoX19oLCBfX2csIF9fZiwgX19lLCBfX2QsIF9fYywgX19iLCBfX2EpOwp9CgovLy8gQ29uc3RydWN0cyBhIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IsIGluaXRpYWxpemVkIGluIHJldmVyc2Ugb3JkZXIKLy8vICAgIHdpdGggdGhlIHNwZWNpZmllZCAzMi1iaXQgaW50ZWdyYWwgdmFsdWVzLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBpcyBhIHV0aWxpdHkgZnVuY3Rpb24gYW5kIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBzcGVjaWZpYwovLy8gICBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19pMAovLy8gICAgQSAzMi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzMxOjBdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19pMQovLy8gICAgQSAzMi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzYzOjMyXSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9faTIKLy8vICAgIEEgMzItYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs5NTo2NF0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2kzCi8vLyAgICBBIDMyLWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTI3Ojk2XSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9faTQKLy8vICAgIEEgMzItYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxNTk6MTI4XSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9faTUKLy8vICAgIEEgMzItYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxOTE6MTYwXSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9faTYKLy8vICAgIEEgMzItYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsyMjM6MTkyXSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9faTcKLy8vICAgIEEgMzItYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsyNTU6MjI0XSBvZiB0aGUgcmVzdWx0LgovLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMjU2LWJpdCBpbnRlZ2VyIHZlY3Rvci4Kc3RhdGljIF9faW5saW5lIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl9zZXRyX2VwaTMyKGludCBfX2kwLCBpbnQgX19pMSwgaW50IF9faTIsIGludCBfX2kzLAogICAgICAgICAgICAgICAgICBpbnQgX19pNCwgaW50IF9faTUsIGludCBfX2k2LCBpbnQgX19pNykKewogIHJldHVybiBfbW0yNTZfc2V0X2VwaTMyKF9faTcsIF9faTYsIF9faTUsIF9faTQsIF9faTMsIF9faTIsIF9faTEsIF9faTApOwp9CgovLy8gQ29uc3RydWN0cyBhIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IsIGluaXRpYWxpemVkIGluIHJldmVyc2Ugb3JkZXIKLy8vICAgIHdpdGggdGhlIHNwZWNpZmllZCAxNi1iaXQgaW50ZWdyYWwgdmFsdWVzLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBpcyBhIHV0aWxpdHkgZnVuY3Rpb24gYW5kIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBzcGVjaWZpYwovLy8gICBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX193MTUKLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxNTowXSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fdzE0Ci8vLyAgICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMzE6MTZdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX193MTMKLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs0NzozMl0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX3cxMgovLy8gICAgQSAxNi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzYzOjQ4XSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fdzExCi8vLyAgICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNzk6NjRdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX193MTAKLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs5NTo4MF0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX3cwOQovLy8gICAgQSAxNi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzExMTo5Nl0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX3cwOAovLy8gICAgQSAxNi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzEyNzoxMTJdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX193MDcKLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxNDM6MTI4XSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fdzA2Ci8vLyAgICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTU5OjE0NF0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX3cwNQovLy8gICAgQSAxNi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE3NToxNjBdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX193MDQKLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxOTE6MTc2XSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fdzAzCi8vLyAgICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjA3OjE5Ml0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX3cwMgovLy8gICAgQSAxNi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzIyMzoyMDhdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX193MDEKLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsyMzk6MjI0XSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fdzAwCi8vLyAgICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjU1OjI0MF0gb2YgdGhlIHJlc3VsdC4KLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IuCnN0YXRpYyBfX2lubGluZSBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW0yNTZfc2V0cl9lcGkxNihzaG9ydCBfX3cxNSwgc2hvcnQgX193MTQsIHNob3J0IF9fdzEzLCBzaG9ydCBfX3cxMiwKICAgICAgIHNob3J0IF9fdzExLCBzaG9ydCBfX3cxMCwgc2hvcnQgX193MDksIHNob3J0IF9fdzA4LAogICAgICAgc2hvcnQgX193MDcsIHNob3J0IF9fdzA2LCBzaG9ydCBfX3cwNSwgc2hvcnQgX193MDQsCiAgICAgICBzaG9ydCBfX3cwMywgc2hvcnQgX193MDIsIHNob3J0IF9fdzAxLCBzaG9ydCBfX3cwMCkKewogIHJldHVybiBfbW0yNTZfc2V0X2VwaTE2KF9fdzAwLCBfX3cwMSwgX193MDIsIF9fdzAzLAogICAgICAgICAgICAgICAgICAgICAgICAgIF9fdzA0LCBfX3cwNSwgX193MDYsIF9fdzA3LAogICAgICAgICAgICAgICAgICAgICAgICAgIF9fdzA4LCBfX3cwOSwgX193MTAsIF9fdzExLAogICAgICAgICAgICAgICAgICAgICAgICAgIF9fdzEyLCBfX3cxMywgX193MTQsIF9fdzE1KTsKfQoKLy8vIENvbnN0cnVjdHMgYSAyNTYtYml0IGludGVnZXIgdmVjdG9yLCBpbml0aWFsaXplZCBpbiByZXZlcnNlIG9yZGVyCi8vLyAgICB3aXRoIHRoZSBzcGVjaWZpZWQgOC1iaXQgaW50ZWdyYWwgdmFsdWVzLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBpcyBhIHV0aWxpdHkgZnVuY3Rpb24gYW5kIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBzcGVjaWZpYwovLy8gICBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19iMzEKLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs3OjBdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19iMzAKLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxNTo4XSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fYjI5Ci8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjM6MTZdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19iMjgKLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFszMToyNF0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2IyNwovLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzM5OjMyXSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fYjI2Ci8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNDc6NDBdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19iMjUKLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs1NTo0OF0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2IyNAovLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzYzOjU2XSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fYjIzCi8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNzE6NjRdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19iMjIKLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs3OTo3Ml0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2IyMQovLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzg3OjgwXSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fYjIwCi8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbOTU6ODhdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19iMTkKLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxMDM6OTZdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19iMTgKLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxMTE6MTA0XSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fYjE3Ci8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTE5OjExMl0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2IxNgovLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzEyNzoxMjBdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19iMTUKLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxMzU6MTI4XSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fYjE0Ci8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTQzOjEzNl0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2IxMwovLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE1MToxNDRdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19iMTIKLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxNTk6MTUyXSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fYjExCi8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTY3OjE2MF0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2IxMAovLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE3NToxNjhdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19iMDkKLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxODM6MTc2XSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fYjA4Ci8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTkxOjE4NF0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2IwNwovLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE5OToxOTJdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19iMDYKLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsyMDc6MjAwXSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fYjA1Ci8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjE1OjIwOF0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2IwNAovLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzIyMzoyMTZdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19iMDMKLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsyMzE6MjI0XSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fYjAyCi8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjM5OjIzMl0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2IwMQovLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzI0NzoyNDBdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19iMDAKLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsyNTU6MjQ4XSBvZiB0aGUgcmVzdWx0LgovLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMjU2LWJpdCBpbnRlZ2VyIHZlY3Rvci4Kc3RhdGljIF9faW5saW5lIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl9zZXRyX2VwaTgoY2hhciBfX2IzMSwgY2hhciBfX2IzMCwgY2hhciBfX2IyOSwgY2hhciBfX2IyOCwKICAgICAgICAgICAgICAgICBjaGFyIF9fYjI3LCBjaGFyIF9fYjI2LCBjaGFyIF9fYjI1LCBjaGFyIF9fYjI0LAogICAgICAgICAgICAgICAgIGNoYXIgX19iMjMsIGNoYXIgX19iMjIsIGNoYXIgX19iMjEsIGNoYXIgX19iMjAsCiAgICAgICAgICAgICAgICAgY2hhciBfX2IxOSwgY2hhciBfX2IxOCwgY2hhciBfX2IxNywgY2hhciBfX2IxNiwKICAgICAgICAgICAgICAgICBjaGFyIF9fYjE1LCBjaGFyIF9fYjE0LCBjaGFyIF9fYjEzLCBjaGFyIF9fYjEyLAogICAgICAgICAgICAgICAgIGNoYXIgX19iMTEsIGNoYXIgX19iMTAsIGNoYXIgX19iMDksIGNoYXIgX19iMDgsCiAgICAgICAgICAgICAgICAgY2hhciBfX2IwNywgY2hhciBfX2IwNiwgY2hhciBfX2IwNSwgY2hhciBfX2IwNCwKICAgICAgICAgICAgICAgICBjaGFyIF9fYjAzLCBjaGFyIF9fYjAyLCBjaGFyIF9fYjAxLCBjaGFyIF9fYjAwKQp7CiAgcmV0dXJuIF9tbTI1Nl9zZXRfZXBpOChfX2IwMCwgX19iMDEsIF9fYjAyLCBfX2IwMywgX19iMDQsIF9fYjA1LCBfX2IwNiwgX19iMDcsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX2IwOCwgX19iMDksIF9fYjEwLCBfX2IxMSwgX19iMTIsIF9fYjEzLCBfX2IxNCwgX19iMTUsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX2IxNiwgX19iMTcsIF9fYjE4LCBfX2IxOSwgX19iMjAsIF9fYjIxLCBfX2IyMiwgX19iMjMsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX2IyNCwgX19iMjUsIF9fYjI2LCBfX2IyNywgX19iMjgsIF9fYjI5LCBfX2IzMCwgX19iMzEpOwp9CgovLy8gQ29uc3RydWN0cyBhIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IsIGluaXRpYWxpemVkIGluIHJldmVyc2Ugb3JkZXIKLy8vICAgIHdpdGggdGhlIHNwZWNpZmllZCA2NC1iaXQgaW50ZWdyYWwgdmFsdWVzLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQVU5QQ0tMUURRK1ZJTlNFUlRGMTI4IDwvYz4KLy8vICAgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSA2NC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzYzOjBdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDY0LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTI3OjY0XSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fYwovLy8gICAgQSA2NC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE5MToxMjhdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19kCi8vLyAgICBBIDY0LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjU1OjE5Ml0gb2YgdGhlIHJlc3VsdC4KLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IuCnN0YXRpYyBfX2lubGluZSBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW0yNTZfc2V0cl9lcGk2NHgobG9uZyBsb25nIF9fYSwgbG9uZyBsb25nIF9fYiwgbG9uZyBsb25nIF9fYywgbG9uZyBsb25nIF9fZCkKewogIHJldHVybiBfbW0yNTZfc2V0X2VwaTY0eChfX2QsIF9fYywgX19iLCBfX2EpOwp9CgovKiBDcmVhdGUgdmVjdG9ycyB3aXRoIHJlcGVhdGVkIGVsZW1lbnRzICovCi8vLyBDb25zdHJ1Y3RzIGEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLCB3aXRoIGVhY2gKLy8vICAgIG9mIHRoZSBmb3VyIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmVjdG9yIGVsZW1lbnRzIHNldCB0byB0aGUKLy8vICAgIHNwZWNpZmllZCBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZERFVQK1ZJTlNFUlRGMTI4IDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fdwovLy8gICAgQSBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBlYWNoIHZlY3RvcgovLy8gICAgZWxlbWVudCBvZiB0aGUgcmVzdWx0LgovLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLgpzdGF0aWMgX19pbmxpbmUgX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tMjU2X3NldDFfcGQoZG91YmxlIF9fdykKewogIHJldHVybiBfbW0yNTZfc2V0X3BkKF9fdywgX193LCBfX3csIF9fdyk7Cn0KCi8vLyBDb25zdHJ1Y3RzIGEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0sIHdpdGggZWFjaAovLy8gICAgb2YgdGhlIGVpZ2h0IHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmVjdG9yIGVsZW1lbnRzIHNldCB0byB0aGUKLy8vICAgIHNwZWNpZmllZCBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQRVJNSUxQUytWSU5TRVJURjEyOCA8L2M+Ci8vLyAgIGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX3cKLy8vICAgIEEgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgZWFjaCB2ZWN0b3IKLy8vICAgIGVsZW1lbnQgb2YgdGhlIHJlc3VsdC4KLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLgpzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUwpfbW0yNTZfc2V0MV9wcyhmbG9hdCBfX3cpCnsKICByZXR1cm4gX21tMjU2X3NldF9wcyhfX3csIF9fdywgX193LCBfX3csIF9fdywgX193LCBfX3csIF9fdyk7Cn0KCi8vLyBDb25zdHJ1Y3RzIGEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGkzMl0sIHdpdGggZWFjaCBvZiB0aGUKLy8vICAgIDMyLWJpdCBpbnRlZ3JhbCB2ZWN0b3IgZWxlbWVudHMgc2V0IHRvIHRoZSBzcGVjaWZpZWQgMzItYml0IGludGVncmFsCi8vLyAgICB2YWx1ZS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEVSTUlMUFMrVklOU0VSVEYxMjggPC9jPgovLy8gICBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19pCi8vLyAgICBBIDMyLWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgZWFjaCB2ZWN0b3IgZWxlbWVudCBvZiB0aGUKLy8vICAgIHJlc3VsdC4KLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpMzJdLgpzdGF0aWMgX19pbmxpbmUgX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tMjU2X3NldDFfZXBpMzIoaW50IF9faSkKewogIHJldHVybiBfbW0yNTZfc2V0X2VwaTMyKF9faSwgX19pLCBfX2ksIF9faSwgX19pLCBfX2ksIF9faSwgX19pKTsKfQoKLy8vIENvbnN0cnVjdHMgYSAyNTYtYml0IGludGVnZXIgdmVjdG9yIG9mIFsxNiB4IGkxNl0sIHdpdGggZWFjaCBvZiB0aGUKLy8vICAgIDE2LWJpdCBpbnRlZ3JhbCB2ZWN0b3IgZWxlbWVudHMgc2V0IHRvIHRoZSBzcGVjaWZpZWQgMTYtYml0IGludGVncmFsCi8vLyAgICB2YWx1ZS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFNIVUZCK1ZJTlNFUlRGMTI4IDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fdwovLy8gICAgQSAxNi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGVhY2ggdmVjdG9yIGVsZW1lbnQgb2YgdGhlCi8vLyAgICByZXN1bHQuCi8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAyNTYtYml0IGludGVnZXIgdmVjdG9yIG9mIFsxNiB4IGkxNl0uCnN0YXRpYyBfX2lubGluZSBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW0yNTZfc2V0MV9lcGkxNihzaG9ydCBfX3cpCnsKICByZXR1cm4gX21tMjU2X3NldF9lcGkxNihfX3csIF9fdywgX193LCBfX3csIF9fdywgX193LCBfX3csIF9fdywKICAgICAgICAgICAgICAgICAgICAgICAgICBfX3csIF9fdywgX193LCBfX3csIF9fdywgX193LCBfX3csIF9fdyk7Cn0KCi8vLyBDb25zdHJ1Y3RzIGEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMzIgeCBpOF0sIHdpdGggZWFjaCBvZiB0aGUKLy8vICAgIDgtYml0IGludGVncmFsIHZlY3RvciBlbGVtZW50cyBzZXQgdG8gdGhlIHNwZWNpZmllZCA4LWJpdCBpbnRlZ3JhbCB2YWx1ZS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFNIVUZCK1ZJTlNFUlRGMTI4IDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYgovLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGVhY2ggdmVjdG9yIGVsZW1lbnQgb2YgdGhlCi8vLyAgICByZXN1bHQuCi8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAyNTYtYml0IGludGVnZXIgdmVjdG9yIG9mIFszMiB4IGk4XS4Kc3RhdGljIF9faW5saW5lIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl9zZXQxX2VwaTgoY2hhciBfX2IpCnsKICByZXR1cm4gX21tMjU2X3NldF9lcGk4KF9fYiwgX19iLCBfX2IsIF9fYiwgX19iLCBfX2IsIF9fYiwgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgX19iLCBfX2IsIF9fYiwgX19iLCBfX2IsIF9fYiwgX19iLCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX2IsIF9fYiwgX19iLCBfX2IsIF9fYiwgX19iLCBfX2IsIF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgIF9fYiwgX19iLCBfX2IsIF9fYiwgX19iLCBfX2IsIF9fYiwgX19iKTsKfQoKLy8vIENvbnN0cnVjdHMgYSAyNTYtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTY0XSwgd2l0aCBlYWNoIG9mIHRoZQovLy8gICAgNjQtYml0IGludGVncmFsIHZlY3RvciBlbGVtZW50cyBzZXQgdG8gdGhlIHNwZWNpZmllZCA2NC1iaXQgaW50ZWdyYWwKLy8vICAgIHZhbHVlLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZERFVQK1ZJTlNFUlRGMTI4IDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fcQovLy8gICAgQSA2NC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGVhY2ggdmVjdG9yIGVsZW1lbnQgb2YgdGhlCi8vLyAgICByZXN1bHQuCi8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAyNTYtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTY0XS4Kc3RhdGljIF9faW5saW5lIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl9zZXQxX2VwaTY0eChsb25nIGxvbmcgX19xKQp7CiAgcmV0dXJuIF9tbTI1Nl9zZXRfZXBpNjR4KF9fcSwgX19xLCBfX3EsIF9fcSk7Cn0KCi8qIENyZWF0ZSBfX3plcm9lZCB2ZWN0b3JzICovCi8vLyBDb25zdHJ1Y3RzIGEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIHdpdGggYWxsCi8vLyAgICB2ZWN0b3IgZWxlbWVudHMgaW5pdGlhbGl6ZWQgdG8gemVyby4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWWE9SUFMgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSB3aXRoIGFsbCBlbGVtZW50cyBzZXQgdG8gemVyby4Kc3RhdGljIF9faW5saW5lIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl9zZXR6ZXJvX3BkKHZvaWQpCnsKICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMjU2ZCl7IDAsIDAsIDAsIDAgfTsKfQoKLy8vIENvbnN0cnVjdHMgYSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbOCB4IGZsb2F0XSB3aXRoIGFsbAovLy8gICAgdmVjdG9yIGVsZW1lbnRzIGluaXRpYWxpemVkIHRvIHplcm8uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlhPUlBTIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSB3aXRoIGFsbCBlbGVtZW50cyBzZXQgdG8gemVyby4Kc3RhdGljIF9faW5saW5lIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMKX21tMjU2X3NldHplcm9fcHModm9pZCkKewogIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20yNTYpeyAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwIH07Cn0KCi8vLyBDb25zdHJ1Y3RzIGEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBpbml0aWFsaXplZCB0byB6ZXJvLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZYT1JQUyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBpbml0aWFsaXplZCB0byB6ZXJvLgpzdGF0aWMgX19pbmxpbmUgX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tMjU2X3NldHplcm9fc2kyNTYodm9pZCkKewogIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20yNTZpKShfX3Y0ZGkpeyAwLCAwLCAwLCAwIH07Cn0KCi8qIENhc3QgYmV0d2VlbiB2ZWN0b3IgdHlwZXMgKi8KLy8vIENhc3RzIGEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGludG8gYSAyNTYtYml0Ci8vLyAgICBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGhhcyBubyBjb3JyZXNwb25kaW5nIGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLgovLy8gXHJldHVybnMgQSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBzYW1lCi8vLyAgICBiaXR3aXNlIHBhdHRlcm4gYXMgdGhlIHBhcmFtZXRlci4Kc3RhdGljIF9faW5saW5lIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMKX21tMjU2X2Nhc3RwZF9wcyhfX20yNTZkIF9fYSkKewogIHJldHVybiAoX19tMjU2KV9fYTsKfQoKLy8vIENhc3RzIGEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGludG8gYSAyNTYtYml0Ci8vLyAgICBpbnRlZ2VyIHZlY3Rvci4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgaGFzIG5vIGNvcnJlc3BvbmRpbmcgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uCi8vLyBccmV0dXJucyBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgc2FtZSBiaXR3aXNlIHBhdHRlcm4gYXMgdGhlCi8vLyAgICBwYXJhbWV0ZXIuCnN0YXRpYyBfX2lubGluZSBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW0yNTZfY2FzdHBkX3NpMjU2KF9fbTI1NmQgX19hKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYTsKfQoKLy8vIENhc3RzIGEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gaW50byBhIDI1Ni1iaXQKLy8vICAgIGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGhhcyBubyBjb3JyZXNwb25kaW5nIGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uCi8vLyBccmV0dXJucyBBIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZSBzYW1lCi8vLyAgICBiaXR3aXNlIHBhdHRlcm4gYXMgdGhlIHBhcmFtZXRlci4Kc3RhdGljIF9faW5saW5lIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl9jYXN0cHNfcGQoX19tMjU2IF9fYSkKewogIHJldHVybiAoX19tMjU2ZClfX2E7Cn0KCi8vLyBDYXN0cyBhIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGludG8gYSAyNTYtYml0Ci8vLyAgICBpbnRlZ2VyIHZlY3Rvci4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgaGFzIG5vIGNvcnJlc3BvbmRpbmcgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4KLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBzYW1lIGJpdHdpc2UgcGF0dGVybiBhcyB0aGUKLy8vICAgIHBhcmFtZXRlci4Kc3RhdGljIF9faW5saW5lIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl9jYXN0cHNfc2kyNTYoX19tMjU2IF9fYSkKewogIHJldHVybiAoX19tMjU2aSlfX2E7Cn0KCi8vLyBDYXN0cyBhIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgaW50byBhIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yCi8vLyAgICBvZiBbOCB4IGZsb2F0XS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgaGFzIG5vIGNvcnJlc3BvbmRpbmcgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAyNTYtYml0IGludGVnZXIgdmVjdG9yLgovLy8gXHJldHVybnMgQSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBzYW1lCi8vLyAgICBiaXR3aXNlIHBhdHRlcm4gYXMgdGhlIHBhcmFtZXRlci4Kc3RhdGljIF9faW5saW5lIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMKX21tMjU2X2Nhc3RzaTI1Nl9wcyhfX20yNTZpIF9fYSkKewogIHJldHVybiAoX19tMjU2KV9fYTsKfQoKLy8vIENhc3RzIGEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBpbnRvIGEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3IKLy8vICAgIG9mIFs0IHggZG91YmxlXS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgaGFzIG5vIGNvcnJlc3BvbmRpbmcgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAyNTYtYml0IGludGVnZXIgdmVjdG9yLgovLy8gXHJldHVybnMgQSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgc2FtZQovLy8gICAgYml0d2lzZSBwYXR0ZXJuIGFzIHRoZSBwYXJhbWV0ZXIuCnN0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW0yNTZfY2FzdHNpMjU2X3BkKF9fbTI1NmkgX19hKQp7CiAgcmV0dXJuIChfX20yNTZkKV9fYTsKfQoKLy8vIFJldHVybnMgdGhlIGxvd2VyIDEyOCBiaXRzIG9mIGEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YKLy8vICAgIFs0IHggZG91YmxlXSBhcyBhIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgaGFzIG5vIGNvcnJlc3BvbmRpbmcgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZQovLy8gICAgbG93ZXIgMTI4IGJpdHMgb2YgdGhlIHBhcmFtZXRlci4Kc3RhdGljIF9faW5saW5lIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl9jYXN0cGQyNTZfcGQxMjgoX19tMjU2ZCBfX2EpCnsKICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjRkZilfX2EsIChfX3Y0ZGYpX19hLCAwLCAxKTsKfQoKLy8vIFJldHVybnMgdGhlIGxvd2VyIDEyOCBiaXRzIG9mIGEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YKLy8vICAgIFs4IHggZmxvYXRdIGFzIGEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGhhcyBubyBjb3JyZXNwb25kaW5nIGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlCi8vLyAgICBsb3dlciAxMjggYml0cyBvZiB0aGUgcGFyYW1ldGVyLgpzdGF0aWMgX19pbmxpbmUgX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUwpfbW0yNTZfY2FzdHBzMjU2X3BzMTI4KF9fbTI1NiBfX2EpCnsKICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjhzZilfX2EsIChfX3Y4c2YpX19hLCAwLCAxLCAyLCAzKTsKfQoKLy8vIFRydW5jYXRlcyBhIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgaW50byBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGhhcyBubyBjb3JyZXNwb25kaW5nIGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMjU2LWJpdCBpbnRlZ2VyIHZlY3Rvci4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBsb3dlciAxMjggYml0cyBvZiB0aGUKLy8vICAgIHBhcmFtZXRlci4Kc3RhdGljIF9faW5saW5lIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl9jYXN0c2kyNTZfc2kxMjgoX19tMjU2aSBfX2EpCnsKICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjRkaSlfX2EsIChfX3Y0ZGkpX19hLCAwLCAxKTsKfQoKLy8vIENvbnN0cnVjdHMgYSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gZnJvbSBhCi8vLyAgICAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uCi8vLwovLy8gICAgVGhlIGxvd2VyIDEyOCBiaXRzIGNvbnRhaW4gdGhlIHZhbHVlIG9mIHRoZSBzb3VyY2UgdmVjdG9yLiBUaGUgY29udGVudHMKLy8vICAgIG9mIHRoZSB1cHBlciAxMjggYml0cyBhcmUgdW5kZWZpbmVkLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBoYXMgbm8gY29ycmVzcG9uZGluZyBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4KLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLiBUaGUgbG93ZXIgMTI4IGJpdHMKLy8vICAgIGNvbnRhaW4gdGhlIHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXIuIFRoZSBjb250ZW50cyBvZiB0aGUgdXBwZXIgMTI4IGJpdHMKLy8vICAgIGFyZSB1bmRlZmluZWQuCnN0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW0yNTZfY2FzdHBkMTI4X3BkMjU2KF9fbTEyOGQgX19hKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3YyZGYpX19hLCAoX192MmRmKV9fYSwgMCwgMSwgLTEsIC0xKTsKfQoKLy8vIENvbnN0cnVjdHMgYSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBmcm9tIGEKLy8vICAgIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLgovLy8KLy8vICAgIFRoZSBsb3dlciAxMjggYml0cyBjb250YWluIHRoZSB2YWx1ZSBvZiB0aGUgc291cmNlIHZlY3Rvci4gVGhlIGNvbnRlbnRzCi8vLyAgICBvZiB0aGUgdXBwZXIgMTI4IGJpdHMgYXJlIHVuZGVmaW5lZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgaGFzIG5vIGNvcnJlc3BvbmRpbmcgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4KLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uIFRoZSBsb3dlciAxMjggYml0cwovLy8gICAgY29udGFpbiB0aGUgdmFsdWUgb2YgdGhlIHBhcmFtZXRlci4gVGhlIGNvbnRlbnRzIG9mIHRoZSB1cHBlciAxMjggYml0cwovLy8gICAgYXJlIHVuZGVmaW5lZC4Kc3RhdGljIF9faW5saW5lIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMKX21tMjU2X2Nhc3RwczEyOF9wczI1NihfX20xMjggX19hKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYSwgMCwgMSwgMiwgMywgLTEsIC0xLCAtMSwgLTEpOwp9CgovLy8gQ29uc3RydWN0cyBhIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgZnJvbSBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuCi8vLwovLy8gICAgVGhlIGxvd2VyIDEyOCBiaXRzIGNvbnRhaW4gdGhlIHZhbHVlIG9mIHRoZSBzb3VyY2UgdmVjdG9yLiBUaGUgY29udGVudHMKLy8vICAgIG9mIHRoZSB1cHBlciAxMjggYml0cyBhcmUgdW5kZWZpbmVkLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBoYXMgbm8gY29ycmVzcG9uZGluZyBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuCi8vLyBccmV0dXJucyBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IuIFRoZSBsb3dlciAxMjggYml0cyBjb250YWluIHRoZSB2YWx1ZSBvZgovLy8gICAgdGhlIHBhcmFtZXRlci4gVGhlIGNvbnRlbnRzIG9mIHRoZSB1cHBlciAxMjggYml0cyBhcmUgdW5kZWZpbmVkLgpzdGF0aWMgX19pbmxpbmUgX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tMjU2X2Nhc3RzaTEyOF9zaTI1NihfX20xMjhpIF9fYSkKewogIHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192MmRpKV9fYSwgKF9fdjJkaSlfX2EsIDAsIDEsIC0xLCAtMSk7Cn0KCi8vLyBDb25zdHJ1Y3RzIGEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGZyb20gYQovLy8gICAgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgMTI4IGJpdHMKLy8vICAgIGNvbnRhaW4gdGhlIHZhbHVlIG9mIHRoZSBzb3VyY2UgdmVjdG9yLiBUaGUgdXBwZXIgMTI4IGJpdHMgYXJlIHNldAovLy8gICAgdG8gemVyby4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgaGFzIG5vIGNvcnJlc3BvbmRpbmcgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uCi8vLyBccmV0dXJucyBBIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4gVGhlIGxvd2VyIDEyOCBiaXRzCi8vLyAgICBjb250YWluIHRoZSB2YWx1ZSBvZiB0aGUgcGFyYW1ldGVyLiBUaGUgdXBwZXIgMTI4IGJpdHMgYXJlIHNldCB0byB6ZXJvLgpzdGF0aWMgX19pbmxpbmUgX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tMjU2X3pleHRwZDEyOF9wZDI1NihfX20xMjhkIF9fYSkKewogIHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192MmRmKV9fYSwgKF9fdjJkZilfbW1fc2V0emVyb19wZCgpLCAwLCAxLCAyLCAzKTsKfQoKLy8vIENvbnN0cnVjdHMgYSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBmcm9tIGEKLy8vICAgIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIgMTI4IGJpdHMgY29udGFpbgovLy8gICAgdGhlIHZhbHVlIG9mIHRoZSBzb3VyY2UgdmVjdG9yLiBUaGUgdXBwZXIgMTI4IGJpdHMgYXJlIHNldCB0byB6ZXJvLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBoYXMgbm8gY29ycmVzcG9uZGluZyBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLgovLy8gXHJldHVybnMgQSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4gVGhlIGxvd2VyIDEyOCBiaXRzCi8vLyAgICBjb250YWluIHRoZSB2YWx1ZSBvZiB0aGUgcGFyYW1ldGVyLiBUaGUgdXBwZXIgMTI4IGJpdHMgYXJlIHNldCB0byB6ZXJvLgpzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUwpfbW0yNTZfemV4dHBzMTI4X3BzMjU2KF9fbTEyOCBfX2EpCnsKICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjRzZilfX2EsIChfX3Y0c2YpX21tX3NldHplcm9fcHMoKSwgMCwgMSwgMiwgMywgNCwgNSwgNiwgNyk7Cn0KCi8vLyBDb25zdHJ1Y3RzIGEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBmcm9tIGEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4KLy8vICAgIFRoZSBsb3dlciAxMjggYml0cyBjb250YWluIHRoZSB2YWx1ZSBvZiB0aGUgc291cmNlIHZlY3Rvci4gVGhlIHVwcGVyCi8vLyAgICAxMjggYml0cyBhcmUgc2V0IHRvIHplcm8uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGhhcyBubyBjb3JyZXNwb25kaW5nIGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4KLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCBpbnRlZ2VyIHZlY3Rvci4gVGhlIGxvd2VyIDEyOCBiaXRzIGNvbnRhaW4gdGhlIHZhbHVlIG9mCi8vLyAgICB0aGUgcGFyYW1ldGVyLiBUaGUgdXBwZXIgMTI4IGJpdHMgYXJlIHNldCB0byB6ZXJvLgpzdGF0aWMgX19pbmxpbmUgX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tMjU2X3pleHRzaTEyOF9zaTI1NihfX20xMjhpIF9fYSkKewogIHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192MmRpKV9fYSwgKF9fdjJkaSlfbW1fc2V0emVyb19zaTEyOCgpLCAwLCAxLCAyLCAzKTsKfQoKLyoKICAgVmVjdG9yIGluc2VydC4KICAgV2UgdXNlIG1hY3JvcyByYXRoZXIgdGhhbiBpbmxpbmVzIGJlY2F1c2Ugd2Ugb25seSB3YW50IHRvIGFjY2VwdAogICBpbnZvY2F0aW9ucyB3aGVyZSB0aGUgaW1tZWRpYXRlIE0gaXMgYSBjb25zdGFudCBleHByZXNzaW9uLgoqLwovLy8gQ29uc3RydWN0cyBhIG5ldyAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBieSBmaXJzdCBkdXBsaWNhdGluZwovLy8gICAgYSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBnaXZlbiBpbiB0aGUgZmlyc3QgcGFyYW1ldGVyLCBhbmQgdGhlbgovLy8gICAgcmVwbGFjaW5nIGVpdGhlciB0aGUgdXBwZXIgb3IgdGhlIGxvd2VyIDEyOCBiaXRzIHdpdGggdGhlIGNvbnRlbnRzIG9mIGEKLy8vICAgIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGluIHRoZSBzZWNvbmQgcGFyYW1ldGVyLgovLy8KLy8vICAgIFRoZSBpbW1lZGlhdGUgaW50ZWdlciBwYXJhbWV0ZXIgZGV0ZXJtaW5lcyBiZXR3ZWVuIHRoZSB1cHBlciBvciB0aGUgbG93ZXIKLy8vICAgIDEyOCBiaXRzLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBcY29kZQovLy8gX19tMjU2IF9tbTI1Nl9pbnNlcnRmMTI4X3BzKF9fbTI1NiBWMSwgX19tMTI4IFYyLCBjb25zdCBpbnQgTSk7Ci8vLyBcZW5kY29kZQovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVklOU0VSVEYxMjggPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gVjEKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uIFRoaXMgdmVjdG9yIGlzIGNvcGllZCB0byB0aGUgcmVzdWx0Ci8vLyAgICBmaXJzdCwgYW5kIHRoZW4gZWl0aGVyIHRoZSB1cHBlciBvciB0aGUgbG93ZXIgMTI4IGJpdHMgb2YgdGhlIHJlc3VsdCB3aWxsCi8vLyAgICBiZSByZXBsYWNlZCBieSB0aGUgY29udGVudHMgb2YgXGEgVjIuCi8vLyBccGFyYW0gVjIKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBjb250ZW50cyBvZiB0aGlzIHBhcmFtZXRlciBhcmUKLy8vICAgIHdyaXR0ZW4gdG8gZWl0aGVyIHRoZSB1cHBlciBvciB0aGUgbG93ZXIgMTI4IGJpdHMgb2YgdGhlIHJlc3VsdCBkZXBlbmRpbmcKLy8vICAgIG9uIHRoZSB2YWx1ZSBvZiBwYXJhbWV0ZXIgXGEgTS4KLy8vIFxwYXJhbSBNCi8vLyAgICBBbiBpbW1lZGlhdGUgaW50ZWdlci4gVGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdCBkZXRlcm1pbmVzIGhvdyB0aGUgdmFsdWVzCi8vLyAgICBmcm9tIHRoZSB0d28gcGFyYW1ldGVycyBhcmUgaW50ZXJsZWF2ZWQ6IFxuCi8vLyAgICBJZiBiaXQgWzBdIG9mIFxhIE0gaXMgMCwgXGEgVjIgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6MF0gb2YgdGhlIHJlc3VsdCwKLy8vICAgIGFuZCBiaXRzIFsyNTU6MTI4XSBvZiBcYSBWMSBhcmUgY29waWVkIHRvIGJpdHMgWzI1NToxMjhdIG9mIHRoZQovLy8gICAgcmVzdWx0LiBcbgovLy8gICAgSWYgYml0IFswXSBvZiBcYSBNIGlzIDEsIFxhIFYyIGFyZSBjb3BpZWQgdG8gYml0cyBbMjU1OjEyOF0gb2YgdGhlCi8vLyAgICByZXN1bHQsIGFuZCBiaXRzIFsxMjc6MF0gb2YgXGEgVjEgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6MF0gb2YgdGhlCi8vLyAgICByZXN1bHQuCi8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGludGVybGVhdmVkIHZhbHVlcy4KI2RlZmluZSBfbW0yNTZfaW5zZXJ0ZjEyOF9wcyhWMSwgVjIsIE0pIFwKICAoKF9fbTI1NilfX2J1aWx0aW5faWEzMl92aW5zZXJ0ZjEyOF9wczI1NigoX192OHNmKShfX20yNTYpKFYxKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoVjIpLCAoaW50KShNKSkpCgovLy8gQ29uc3RydWN0cyBhIG5ldyAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gYnkgZmlyc3QgZHVwbGljYXRpbmcKLy8vICAgIGEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGdpdmVuIGluIHRoZSBmaXJzdCBwYXJhbWV0ZXIsIGFuZCB0aGVuCi8vLyAgICByZXBsYWNpbmcgZWl0aGVyIHRoZSB1cHBlciBvciB0aGUgbG93ZXIgMTI4IGJpdHMgd2l0aCB0aGUgY29udGVudHMgb2YgYQovLy8gICAgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGluIHRoZSBzZWNvbmQgcGFyYW1ldGVyLgovLy8KLy8vICAgIFRoZSBpbW1lZGlhdGUgaW50ZWdlciBwYXJhbWV0ZXIgZGV0ZXJtaW5lcyBiZXR3ZWVuIHRoZSB1cHBlciBvciB0aGUgbG93ZXIKLy8vICAgIDEyOCBiaXRzLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBcY29kZQovLy8gX19tMjU2ZCBfbW0yNTZfaW5zZXJ0ZjEyOF9wZChfX20yNTZkIFYxLCBfX20xMjhkIFYyLCBjb25zdCBpbnQgTSk7Ci8vLyBcZW5kY29kZQovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVklOU0VSVEYxMjggPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gVjEKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLiBUaGlzIHZlY3RvciBpcyBjb3BpZWQgdG8gdGhlIHJlc3VsdAovLy8gICAgZmlyc3QsIGFuZCB0aGVuIGVpdGhlciB0aGUgdXBwZXIgb3IgdGhlIGxvd2VyIDEyOCBiaXRzIG9mIHRoZSByZXN1bHQgd2lsbAovLy8gICAgYmUgcmVwbGFjZWQgYnkgdGhlIGNvbnRlbnRzIG9mIFxhIFYyLgovLy8gXHBhcmFtIFYyCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGNvbnRlbnRzIG9mIHRoaXMgcGFyYW1ldGVyIGFyZQovLy8gICAgd3JpdHRlbiB0byBlaXRoZXIgdGhlIHVwcGVyIG9yIHRoZSBsb3dlciAxMjggYml0cyBvZiB0aGUgcmVzdWx0IGRlcGVuZGluZwovLy8gICAgb24gdGhlIHZhbHVlIG9mIHBhcmFtZXRlciBcYSBNLgovLy8gXHBhcmFtIE0KLy8vICAgIEFuIGltbWVkaWF0ZSBpbnRlZ2VyLiBUaGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0IGRldGVybWluZXMgaG93IHRoZSB2YWx1ZXMKLy8vICAgIGZyb20gdGhlIHR3byBwYXJhbWV0ZXJzIGFyZSBpbnRlcmxlYXZlZDogXG4KLy8vICAgIElmIGJpdCBbMF0gb2YgXGEgTSBpcyAwLCBcYSBWMiBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzowXSBvZiB0aGUgcmVzdWx0LAovLy8gICAgYW5kIGJpdHMgWzI1NToxMjhdIG9mIFxhIFYxIGFyZSBjb3BpZWQgdG8gYml0cyBbMjU1OjEyOF0gb2YgdGhlCi8vLyAgICByZXN1bHQuIFxuCi8vLyAgICBJZiBiaXQgWzBdIG9mIFxhIE0gaXMgMSwgXGEgVjIgYXJlIGNvcGllZCB0byBiaXRzIFsyNTU6MTI4XSBvZiB0aGUKLy8vICAgIHJlc3VsdCwgYW5kIGJpdHMgWzEyNzowXSBvZiBcYSBWMSBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzowXSBvZiB0aGUKLy8vICAgIHJlc3VsdC4KLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGludGVybGVhdmVkIHZhbHVlcy4KI2RlZmluZSBfbW0yNTZfaW5zZXJ0ZjEyOF9wZChWMSwgVjIsIE0pIFwKICAoKF9fbTI1NmQpX19idWlsdGluX2lhMzJfdmluc2VydGYxMjhfcGQyNTYoKF9fdjRkZikoX19tMjU2ZCkoVjEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKFYyKSwgKGludCkoTSkpKQoKLy8vIENvbnN0cnVjdHMgYSBuZXcgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBieSBmaXJzdCBkdXBsaWNhdGluZyBhCi8vLyAgICAyNTYtYml0IGludGVnZXIgdmVjdG9yIGdpdmVuIGluIHRoZSBmaXJzdCBwYXJhbWV0ZXIsIGFuZCB0aGVuIHJlcGxhY2luZwovLy8gICAgZWl0aGVyIHRoZSB1cHBlciBvciB0aGUgbG93ZXIgMTI4IGJpdHMgd2l0aCB0aGUgY29udGVudHMgb2YgYSAxMjgtYml0Ci8vLyAgICBpbnRlZ2VyIHZlY3RvciBpbiB0aGUgc2Vjb25kIHBhcmFtZXRlci4KLy8vCi8vLyAgICBUaGUgaW1tZWRpYXRlIGludGVnZXIgcGFyYW1ldGVyIGRldGVybWluZXMgYmV0d2VlbiB0aGUgdXBwZXIgb3IgdGhlIGxvd2VyCi8vLyAgICAxMjggYml0cy4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gXGNvZGUKLy8vIF9fbTI1NmkgX21tMjU2X2luc2VydGYxMjhfc2kyNTYoX19tMjU2aSBWMSwgX19tMTI4aSBWMiwgY29uc3QgaW50IE0pOwovLy8gXGVuZGNvZGUKLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZJTlNFUlRGMTI4IDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIFYxCi8vLyAgICBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IuIFRoaXMgdmVjdG9yIGlzIGNvcGllZCB0byB0aGUgcmVzdWx0IGZpcnN0LCBhbmQKLy8vICAgIHRoZW4gZWl0aGVyIHRoZSB1cHBlciBvciB0aGUgbG93ZXIgMTI4IGJpdHMgb2YgdGhlIHJlc3VsdCB3aWxsIGJlCi8vLyAgICByZXBsYWNlZCBieSB0aGUgY29udGVudHMgb2YgXGEgVjIuCi8vLyBccGFyYW0gVjIKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4gVGhlIGNvbnRlbnRzIG9mIHRoaXMgcGFyYW1ldGVyIGFyZSB3cml0dGVuIHRvCi8vLyAgICBlaXRoZXIgdGhlIHVwcGVyIG9yIHRoZSBsb3dlciAxMjggYml0cyBvZiB0aGUgcmVzdWx0IGRlcGVuZGluZyBvbiB0aGUKLy8vICAgICB2YWx1ZSBvZiBwYXJhbWV0ZXIgXGEgTS4KLy8vIFxwYXJhbSBNCi8vLyAgICBBbiBpbW1lZGlhdGUgaW50ZWdlci4gVGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdCBkZXRlcm1pbmVzIGhvdyB0aGUgdmFsdWVzCi8vLyAgICBmcm9tIHRoZSB0d28gcGFyYW1ldGVycyBhcmUgaW50ZXJsZWF2ZWQ6IFxuCi8vLyAgICBJZiBiaXQgWzBdIG9mIFxhIE0gaXMgMCwgXGEgVjIgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6MF0gb2YgdGhlIHJlc3VsdCwKLy8vICAgIGFuZCBiaXRzIFsyNTU6MTI4XSBvZiBcYSBWMSBhcmUgY29waWVkIHRvIGJpdHMgWzI1NToxMjhdIG9mIHRoZQovLy8gICAgcmVzdWx0LiBcbgovLy8gICAgSWYgYml0IFswXSBvZiBcYSBNIGlzIDEsIFxhIFYyIGFyZSBjb3BpZWQgdG8gYml0cyBbMjU1OjEyOF0gb2YgdGhlCi8vLyAgICByZXN1bHQsIGFuZCBiaXRzIFsxMjc6MF0gb2YgXGEgVjEgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6MF0gb2YgdGhlCi8vLyAgICByZXN1bHQuCi8vLyBccmV0dXJucyBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgaW50ZXJsZWF2ZWQgdmFsdWVzLgojZGVmaW5lIF9tbTI1Nl9pbnNlcnRmMTI4X3NpMjU2KFYxLCBWMiwgTSkgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl92aW5zZXJ0ZjEyOF9zaTI1NigoX192OHNpKShfX20yNTZpKShWMSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSkoX19tMTI4aSkoVjIpLCAoaW50KShNKSkpCgovKgogICBWZWN0b3IgZXh0cmFjdC4KICAgV2UgdXNlIG1hY3JvcyByYXRoZXIgdGhhbiBpbmxpbmVzIGJlY2F1c2Ugd2Ugb25seSB3YW50IHRvIGFjY2VwdAogICBpbnZvY2F0aW9ucyB3aGVyZSB0aGUgaW1tZWRpYXRlIE0gaXMgYSBjb25zdGFudCBleHByZXNzaW9uLgoqLwovLy8gRXh0cmFjdHMgZWl0aGVyIHRoZSB1cHBlciBvciB0aGUgbG93ZXIgMTI4IGJpdHMgZnJvbSBhIDI1Ni1iaXQgdmVjdG9yCi8vLyAgICBvZiBbOCB4IGZsb2F0XSwgYXMgZGV0ZXJtaW5lZCBieSB0aGUgaW1tZWRpYXRlIGludGVnZXIgcGFyYW1ldGVyLCBhbmQKLy8vICAgIHJldHVybnMgdGhlIGV4dHJhY3RlZCBiaXRzIGFzIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFxjb2RlCi8vLyBfX20xMjggX21tMjU2X2V4dHJhY3RmMTI4X3BzKF9fbTI1NiBWLCBjb25zdCBpbnQgTSk7Ci8vLyBcZW5kY29kZQovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkVYVFJBQ1RGMTI4IDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIFYKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uCi8vLyBccGFyYW0gTQovLy8gICAgQW4gaW1tZWRpYXRlIGludGVnZXIuIFRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQgZGV0ZXJtaW5lcyB3aGljaCBiaXRzIGFyZQovLy8gICAgZXh0cmFjdGVkIGZyb20gdGhlIGZpcnN0IHBhcmFtZXRlcjogXG4KLy8vICAgIElmIGJpdCBbMF0gb2YgXGEgTSBpcyAwLCBiaXRzIFsxMjc6MF0gb2YgXGEgViBhcmUgY29waWVkIHRvIHRoZQovLy8gICAgcmVzdWx0LiBcbgovLy8gICAgSWYgYml0IFswXSBvZiBcYSBNIGlzIDEsIGJpdHMgWzI1NToxMjhdIG9mIFxhIFYgYXJlIGNvcGllZCB0byB0aGUgcmVzdWx0LgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBleHRyYWN0ZWQgYml0cy4KI2RlZmluZSBfbW0yNTZfZXh0cmFjdGYxMjhfcHMoViwgTSkgXAogICgoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3ZleHRyYWN0ZjEyOF9wczI1NigoX192OHNmKShfX20yNTYpKFYpLCAoaW50KShNKSkpCgovLy8gRXh0cmFjdHMgZWl0aGVyIHRoZSB1cHBlciBvciB0aGUgbG93ZXIgMTI4IGJpdHMgZnJvbSBhIDI1Ni1iaXQgdmVjdG9yCi8vLyAgICBvZiBbNCB4IGRvdWJsZV0sIGFzIGRldGVybWluZWQgYnkgdGhlIGltbWVkaWF0ZSBpbnRlZ2VyIHBhcmFtZXRlciwgYW5kCi8vLyAgICByZXR1cm5zIHRoZSBleHRyYWN0ZWQgYml0cyBhcyBhIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gXGNvZGUKLy8vIF9fbTEyOGQgX21tMjU2X2V4dHJhY3RmMTI4X3BkKF9fbTI1NmQgViwgY29uc3QgaW50IE0pOwovLy8gXGVuZGNvZGUKLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZFWFRSQUNURjEyOCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBWCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4KLy8vIFxwYXJhbSBNCi8vLyAgICBBbiBpbW1lZGlhdGUgaW50ZWdlci4gVGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdCBkZXRlcm1pbmVzIHdoaWNoIGJpdHMgYXJlCi8vLyAgICBleHRyYWN0ZWQgZnJvbSB0aGUgZmlyc3QgcGFyYW1ldGVyOiBcbgovLy8gICAgSWYgYml0IFswXSBvZiBcYSBNIGlzIDAsIGJpdHMgWzEyNzowXSBvZiBcYSBWIGFyZSBjb3BpZWQgdG8gdGhlCi8vLyAgICByZXN1bHQuIFxuCi8vLyAgICBJZiBiaXQgWzBdIG9mIFxhIE0gaXMgMSwgYml0cyBbMjU1OjEyOF0gb2YgXGEgViBhcmUgY29waWVkIHRvIHRoZSByZXN1bHQuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBleHRyYWN0ZWQgYml0cy4KI2RlZmluZSBfbW0yNTZfZXh0cmFjdGYxMjhfcGQoViwgTSkgXAogICgoX19tMTI4ZClfX2J1aWx0aW5faWEzMl92ZXh0cmFjdGYxMjhfcGQyNTYoKF9fdjRkZikoX19tMjU2ZCkoViksIChpbnQpKE0pKSkKCi8vLyBFeHRyYWN0cyBlaXRoZXIgdGhlIHVwcGVyIG9yIHRoZSBsb3dlciAxMjggYml0cyBmcm9tIGEgMjU2LWJpdAovLy8gICAgaW50ZWdlciB2ZWN0b3IsIGFzIGRldGVybWluZWQgYnkgdGhlIGltbWVkaWF0ZSBpbnRlZ2VyIHBhcmFtZXRlciwgYW5kCi8vLyAgICByZXR1cm5zIHRoZSBleHRyYWN0ZWQgYml0cyBhcyBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFxjb2RlCi8vLyBfX20xMjhpIF9tbTI1Nl9leHRyYWN0ZjEyOF9zaTI1NihfX20yNTZpIFYsIGNvbnN0IGludCBNKTsKLy8vIFxlbmRjb2RlCi8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWRVhUUkFDVEYxMjggPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gVgovLy8gICAgQSAyNTYtYml0IGludGVnZXIgdmVjdG9yLgovLy8gXHBhcmFtIE0KLy8vICAgIEFuIGltbWVkaWF0ZSBpbnRlZ2VyLiBUaGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0IGRldGVybWluZXMgd2hpY2ggYml0cyBhcmUKLy8vICAgIGV4dHJhY3RlZCBmcm9tIHRoZSBmaXJzdCBwYXJhbWV0ZXI6ICBcbgovLy8gICAgSWYgYml0IFswXSBvZiBcYSBNIGlzIDAsIGJpdHMgWzEyNzowXSBvZiBcYSBWIGFyZSBjb3BpZWQgdG8gdGhlCi8vLyAgICByZXN1bHQuIFxuCi8vLyAgICBJZiBiaXQgWzBdIG9mIFxhIE0gaXMgMSwgYml0cyBbMjU1OjEyOF0gb2YgXGEgViBhcmUgY29waWVkIHRvIHRoZSByZXN1bHQuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgZXh0cmFjdGVkIGJpdHMuCiNkZWZpbmUgX21tMjU2X2V4dHJhY3RmMTI4X3NpMjU2KFYsIE0pIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdmV4dHJhY3RmMTI4X3NpMjU2KChfX3Y4c2kpKF9fbTI1NmkpKFYpLCAoaW50KShNKSkpCgovLy8gQ29uc3RydWN0cyBhIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGJ5Ci8vLyAgICBjb25jYXRlbmF0aW5nIHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMgb2YgWzQgeCBmbG9hdF0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVklOU0VSVEYxMjggPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19oaQovLy8gICAgQSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XSB0byBiZSBjb3BpZWQgdG8gdGhlIHVwcGVyCi8vLyAgICAxMjggYml0cyBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fbG8KLy8vICAgIEEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gdG8gYmUgY29waWVkIHRvIHRoZSBsb3dlcgovLy8gICAgMTI4IGJpdHMgb2YgdGhlIHJlc3VsdC4KLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUKLy8vICAgIGNvbmNhdGVuYXRlZCByZXN1bHQuCnN0YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl9zZXRfbTEyOCAoX19tMTI4IF9faGksIF9fbTEyOCBfX2xvKQp7CiAgcmV0dXJuIChfX20yNTYpIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y0c2YpX19sbywgKF9fdjRzZilfX2hpLCAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3KTsKfQoKLy8vIENvbnN0cnVjdHMgYSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gYnkKLy8vICAgIGNvbmNhdGVuYXRpbmcgdHdvIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVklOU0VSVEYxMjggPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19oaQovLy8gICAgQSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gdG8gYmUgY29waWVkIHRvIHRoZSB1cHBlcgovLy8gICAgMTI4IGJpdHMgb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2xvCi8vLyAgICBBIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSB0byBiZSBjb3BpZWQgdG8gdGhlIGxvd2VyCi8vLyAgICAxMjggYml0cyBvZiB0aGUgcmVzdWx0LgovLy8gXHJldHVybnMgQSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUKLy8vICAgIGNvbmNhdGVuYXRlZCByZXN1bHQuCnN0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW0yNTZfc2V0X20xMjhkIChfX20xMjhkIF9faGksIF9fbTEyOGQgX19sbykKewogIHJldHVybiAoX19tMjU2ZCkgX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjJkZilfX2xvLCAoX192MmRmKV9faGksIDAsIDEsIDIsIDMpOwp9CgovLy8gQ29uc3RydWN0cyBhIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgYnkgY29uY2F0ZW5hdGluZyB0d28gMTI4LWJpdAovLy8gICAgaW50ZWdlciB2ZWN0b3JzLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZJTlNFUlRGMTI4IDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9faGkKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciB0byBiZSBjb3BpZWQgdG8gdGhlIHVwcGVyIDEyOCBiaXRzIG9mIHRoZQovLy8gICAgcmVzdWx0LgovLy8gXHBhcmFtIF9fbG8KLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciB0byBiZSBjb3BpZWQgdG8gdGhlIGxvd2VyIDEyOCBiaXRzIG9mIHRoZQovLy8gICAgcmVzdWx0LgovLy8gXHJldHVybnMgQSAyNTYtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbmNhdGVuYXRlZCByZXN1bHQuCnN0YXRpYyBfX2lubGluZSBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW0yNTZfc2V0X20xMjhpIChfX20xMjhpIF9faGksIF9fbTEyOGkgX19sbykKewogIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjJkaSlfX2xvLCAoX192MmRpKV9faGksIDAsIDEsIDIsIDMpOwp9CgovLy8gQ29uc3RydWN0cyBhIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGJ5Ci8vLyAgICBjb25jYXRlbmF0aW5nIHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMgb2YgWzQgeCBmbG9hdF0uIFRoaXMgaXMKLy8vICAgIHNpbWlsYXIgdG8gX21tMjU2X3NldF9tMTI4LCBidXQgdGhlIG9yZGVyIG9mIHRoZSBpbnB1dCBwYXJhbWV0ZXJzIGlzCi8vLyAgICBzd2FwcGVkLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZJTlNFUlRGMTI4IDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fbG8KLy8vICAgIEEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gdG8gYmUgY29waWVkIHRvIHRoZSBsb3dlcgovLy8gICAgMTI4IGJpdHMgb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2hpCi8vLyAgICBBIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIHRvIGJlIGNvcGllZCB0byB0aGUgdXBwZXIKLy8vICAgIDEyOCBiaXRzIG9mIHRoZSByZXN1bHQuCi8vLyBccmV0dXJucyBBIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlCi8vLyAgICBjb25jYXRlbmF0ZWQgcmVzdWx0LgpzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUwpfbW0yNTZfc2V0cl9tMTI4IChfX20xMjggX19sbywgX19tMTI4IF9faGkpCnsKICByZXR1cm4gX21tMjU2X3NldF9tMTI4KF9faGksIF9fbG8pOwp9CgovLy8gQ29uc3RydWN0cyBhIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBieQovLy8gICAgY29uY2F0ZW5hdGluZyB0d28gMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXS4gVGhpcyBpcwovLy8gICAgc2ltaWxhciB0byBfbW0yNTZfc2V0X20xMjhkLCBidXQgdGhlIG9yZGVyIG9mIHRoZSBpbnB1dCBwYXJhbWV0ZXJzIGlzCi8vLyAgICBzd2FwcGVkLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZJTlNFUlRGMTI4IDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fbG8KLy8vICAgIEEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIHRvIGJlIGNvcGllZCB0byB0aGUgbG93ZXIKLy8vICAgIDEyOCBiaXRzIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19oaQovLy8gICAgQSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gdG8gYmUgY29waWVkIHRvIHRoZSB1cHBlcgovLy8gICAgMTI4IGJpdHMgb2YgdGhlIHJlc3VsdC4KLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlCi8vLyAgICBjb25jYXRlbmF0ZWQgcmVzdWx0LgpzdGF0aWMgX19pbmxpbmUgX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tMjU2X3NldHJfbTEyOGQgKF9fbTEyOGQgX19sbywgX19tMTI4ZCBfX2hpKQp7CiAgcmV0dXJuIChfX20yNTZkKV9tbTI1Nl9zZXRfbTEyOGQoX19oaSwgX19sbyk7Cn0KCi8vLyBDb25zdHJ1Y3RzIGEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBieSBjb25jYXRlbmF0aW5nIHR3byAxMjgtYml0Ci8vLyAgICBpbnRlZ2VyIHZlY3RvcnMuIFRoaXMgaXMgc2ltaWxhciB0byBfbW0yNTZfc2V0X20xMjhpLCBidXQgdGhlIG9yZGVyIG9mCi8vLyAgICB0aGUgaW5wdXQgcGFyYW1ldGVycyBpcyBzd2FwcGVkLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZJTlNFUlRGMTI4IDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fbG8KLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciB0byBiZSBjb3BpZWQgdG8gdGhlIGxvd2VyIDEyOCBiaXRzIG9mIHRoZQovLy8gICAgcmVzdWx0LgovLy8gXHBhcmFtIF9faGkKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciB0byBiZSBjb3BpZWQgdG8gdGhlIHVwcGVyIDEyOCBiaXRzIG9mIHRoZQovLy8gICAgcmVzdWx0LgovLy8gXHJldHVybnMgQSAyNTYtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbmNhdGVuYXRlZCByZXN1bHQuCnN0YXRpYyBfX2lubGluZSBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW0yNTZfc2V0cl9tMTI4aSAoX19tMTI4aSBfX2xvLCBfX20xMjhpIF9faGkpCnsKICByZXR1cm4gKF9fbTI1NmkpX21tMjU2X3NldF9tMTI4aShfX2hpLCBfX2xvKTsKfQoKLyogU0lNRCBsb2FkIG9wcyAodW5hbGlnbmVkKSAqLwovLy8gTG9hZHMgdHdvIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9ycyBvZiBbNCB4IGZsb2F0XSBmcm9tCi8vLyAgICB1bmFsaWduZWQgbWVtb3J5IGxvY2F0aW9ucyBhbmQgY29uc3RydWN0cyBhIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yCi8vLyAgICBvZiBbOCB4IGZsb2F0XSBieSBjb25jYXRlbmF0aW5nIHRoZSB0d28gMTI4LWJpdCB2ZWN0b3JzLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byBsb2FkIGluc3RydWN0aW9ucyBmb2xsb3dlZCBieSB0aGUKLy8vICAgPGM+IFZJTlNFUlRGMTI4IDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYWRkcl9oaQovLy8gICAgQSBwb2ludGVyIHRvIGEgMTI4LWJpdCBtZW1vcnkgbG9jYXRpb24gY29udGFpbmluZyA0IGNvbnNlY3V0aXZlCi8vLyAgICBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcy4gVGhlc2UgdmFsdWVzIGFyZSB0byBiZSBjb3BpZWQgdG8KLy8vICAgIGJpdHNbMjU1OjEyOF0gb2YgdGhlIHJlc3VsdC4gVGhlIGFkZHJlc3Mgb2YgdGhlIG1lbW9yeSBsb2NhdGlvbiBkb2VzIG5vdAovLy8gICAgaGF2ZSB0byBiZSBhbGlnbmVkLgovLy8gXHBhcmFtIF9fYWRkcl9sbwovLy8gICAgQSBwb2ludGVyIHRvIGEgMTI4LWJpdCBtZW1vcnkgbG9jYXRpb24gY29udGFpbmluZyA0IGNvbnNlY3V0aXZlCi8vLyAgICBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcy4gVGhlc2UgdmFsdWVzIGFyZSB0byBiZSBjb3BpZWQgdG8KLy8vICAgIGJpdHNbMTI3OjBdIG9mIHRoZSByZXN1bHQuIFRoZSBhZGRyZXNzIG9mIHRoZSBtZW1vcnkgbG9jYXRpb24gZG9lcyBub3QKLy8vICAgIGhhdmUgdG8gYmUgYWxpZ25lZC4KLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUKLy8vICAgIGNvbmNhdGVuYXRlZCByZXN1bHQuCnN0YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTI1Nl9sb2FkdTJfbTEyOChmbG9hdCBjb25zdCAqX19hZGRyX2hpLCBmbG9hdCBjb25zdCAqX19hZGRyX2xvKQp7CiAgcmV0dXJuIF9tbTI1Nl9zZXRfbTEyOChfbW1fbG9hZHVfcHMoX19hZGRyX2hpKSwgX21tX2xvYWR1X3BzKF9fYWRkcl9sbykpOwp9CgovLy8gTG9hZHMgdHdvIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0gZnJvbQovLy8gICAgdW5hbGlnbmVkIG1lbW9yeSBsb2NhdGlvbnMgYW5kIGNvbnN0cnVjdHMgYSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcgovLy8gICAgb2YgWzQgeCBkb3VibGVdIGJ5IGNvbmNhdGVuYXRpbmcgdGhlIHR3byAxMjgtYml0IHZlY3RvcnMuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIGxvYWQgaW5zdHJ1Y3Rpb25zIGZvbGxvd2VkIGJ5IHRoZQovLy8gICA8Yz4gVklOU0VSVEYxMjggPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hZGRyX2hpCi8vLyAgICBBIHBvaW50ZXIgdG8gYSAxMjgtYml0IG1lbW9yeSBsb2NhdGlvbiBjb250YWluaW5nIHR3byBjb25zZWN1dGl2ZQovLy8gICAgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMuIFRoZXNlIHZhbHVlcyBhcmUgdG8gYmUgY29waWVkIHRvCi8vLyAgICBiaXRzWzI1NToxMjhdIG9mIHRoZSByZXN1bHQuIFRoZSBhZGRyZXNzIG9mIHRoZSBtZW1vcnkgbG9jYXRpb24gZG9lcyBub3QKLy8vICAgIGhhdmUgdG8gYmUgYWxpZ25lZC4KLy8vIFxwYXJhbSBfX2FkZHJfbG8KLy8vICAgIEEgcG9pbnRlciB0byBhIDEyOC1iaXQgbWVtb3J5IGxvY2F0aW9uIGNvbnRhaW5pbmcgdHdvIGNvbnNlY3V0aXZlCi8vLyAgICBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcy4gVGhlc2UgdmFsdWVzIGFyZSB0byBiZSBjb3BpZWQgdG8KLy8vICAgIGJpdHNbMTI3OjBdIG9mIHRoZSByZXN1bHQuIFRoZSBhZGRyZXNzIG9mIHRoZSBtZW1vcnkgbG9jYXRpb24gZG9lcyBub3QKLy8vICAgIGhhdmUgdG8gYmUgYWxpZ25lZC4KLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlCi8vLyAgICBjb25jYXRlbmF0ZWQgcmVzdWx0LgpzdGF0aWMgX19pbmxpbmUgX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tMjU2X2xvYWR1Ml9tMTI4ZChkb3VibGUgY29uc3QgKl9fYWRkcl9oaSwgZG91YmxlIGNvbnN0ICpfX2FkZHJfbG8pCnsKICByZXR1cm4gX21tMjU2X3NldF9tMTI4ZChfbW1fbG9hZHVfcGQoX19hZGRyX2hpKSwgX21tX2xvYWR1X3BkKF9fYWRkcl9sbykpOwp9CgovLy8gTG9hZHMgdHdvIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3JzIGZyb20gdW5hbGlnbmVkIG1lbW9yeSBsb2NhdGlvbnMgYW5kCi8vLyAgICBjb25zdHJ1Y3RzIGEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBieSBjb25jYXRlbmF0aW5nIHRoZSB0d28gMTI4LWJpdAovLy8gICAgdmVjdG9ycy4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gbG9hZCBpbnN0cnVjdGlvbnMgZm9sbG93ZWQgYnkgdGhlCi8vLyAgIDxjPiBWSU5TRVJURjEyOCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2FkZHJfaGkKLy8vICAgIEEgcG9pbnRlciB0byBhIDEyOC1iaXQgbWVtb3J5IGxvY2F0aW9uIGNvbnRhaW5pbmcgYSAxMjgtYml0IGludGVnZXIKLy8vICAgIHZlY3Rvci4gVGhpcyB2ZWN0b3IgaXMgdG8gYmUgY29waWVkIHRvIGJpdHNbMjU1OjEyOF0gb2YgdGhlIHJlc3VsdC4gVGhlCi8vLyAgICBhZGRyZXNzIG9mIHRoZSBtZW1vcnkgbG9jYXRpb24gZG9lcyBub3QgaGF2ZSB0byBiZSBhbGlnbmVkLgovLy8gXHBhcmFtIF9fYWRkcl9sbwovLy8gICAgQSBwb2ludGVyIHRvIGEgMTI4LWJpdCBtZW1vcnkgbG9jYXRpb24gY29udGFpbmluZyBhIDEyOC1iaXQgaW50ZWdlcgovLy8gICAgdmVjdG9yLiBUaGlzIHZlY3RvciBpcyB0byBiZSBjb3BpZWQgdG8gYml0c1sxMjc6MF0gb2YgdGhlIHJlc3VsdC4gVGhlCi8vLyAgICBhZGRyZXNzIG9mIHRoZSBtZW1vcnkgbG9jYXRpb24gZG9lcyBub3QgaGF2ZSB0byBiZSBhbGlnbmVkLgovLy8gXHJldHVybnMgQSAyNTYtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbmNhdGVuYXRlZCByZXN1bHQuCnN0YXRpYyBfX2lubGluZSBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW0yNTZfbG9hZHUyX20xMjhpKF9fbTEyOGlfdSBjb25zdCAqX19hZGRyX2hpLCBfX20xMjhpX3UgY29uc3QgKl9fYWRkcl9sbykKewogICByZXR1cm4gX21tMjU2X3NldF9tMTI4aShfbW1fbG9hZHVfc2kxMjgoX19hZGRyX2hpKSwgX21tX2xvYWR1X3NpMTI4KF9fYWRkcl9sbykpOwp9CgovKiBTSU1EIHN0b3JlIG9wcyAodW5hbGlnbmVkKSAqLwovLy8gU3RvcmVzIHRoZSB1cHBlciBhbmQgbG93ZXIgMTI4IGJpdHMgb2YgYSAyNTYtYml0IGZsb2F0aW5nLXBvaW50Ci8vLyAgICB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gaW50byB0d28gZGlmZmVyZW50IHVuYWxpZ25lZCBtZW1vcnkgbG9jYXRpb25zLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZFWFRSQUNURjEyOCA8L2M+IGluc3RydWN0aW9uIGFuZCB0aGUKLy8vICAgc3RvcmUgaW5zdHJ1Y3Rpb25zLgovLy8KLy8vIFxwYXJhbSBfX2FkZHJfaGkKLy8vICAgIEEgcG9pbnRlciB0byBhIDEyOC1iaXQgbWVtb3J5IGxvY2F0aW9uLiBCaXRzWzI1NToxMjhdIG9mIFxhIF9fYSBhcmUgdG8gYmUKLy8vICAgIGNvcGllZCB0byB0aGlzIG1lbW9yeSBsb2NhdGlvbi4gVGhlIGFkZHJlc3Mgb2YgdGhpcyBtZW1vcnkgbG9jYXRpb24gZG9lcwovLy8gICAgbm90IGhhdmUgdG8gYmUgYWxpZ25lZC4KLy8vIFxwYXJhbSBfX2FkZHJfbG8KLy8vICAgIEEgcG9pbnRlciB0byBhIDEyOC1iaXQgbWVtb3J5IGxvY2F0aW9uLiBCaXRzWzEyNzowXSBvZiBcYSBfX2EgYXJlIHRvIGJlCi8vLyAgICBjb3BpZWQgdG8gdGhpcyBtZW1vcnkgbG9jYXRpb24uIFRoZSBhZGRyZXNzIG9mIHRoaXMgbWVtb3J5IGxvY2F0aW9uIGRvZXMKLy8vICAgIG5vdCBoYXZlIHRvIGJlIGFsaWduZWQuCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLgpzdGF0aWMgX19pbmxpbmUgdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tMjU2X3N0b3JldTJfbTEyOChmbG9hdCAqX19hZGRyX2hpLCBmbG9hdCAqX19hZGRyX2xvLCBfX20yNTYgX19hKQp7CiAgX19tMTI4IF9fdjEyODsKCiAgX192MTI4ID0gX21tMjU2X2Nhc3RwczI1Nl9wczEyOChfX2EpOwogIF9tbV9zdG9yZXVfcHMoX19hZGRyX2xvLCBfX3YxMjgpOwogIF9fdjEyOCA9IF9tbTI1Nl9leHRyYWN0ZjEyOF9wcyhfX2EsIDEpOwogIF9tbV9zdG9yZXVfcHMoX19hZGRyX2hpLCBfX3YxMjgpOwp9CgovLy8gU3RvcmVzIHRoZSB1cHBlciBhbmQgbG93ZXIgMTI4IGJpdHMgb2YgYSAyNTYtYml0IGZsb2F0aW5nLXBvaW50Ci8vLyAgICB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGludG8gdHdvIGRpZmZlcmVudCB1bmFsaWduZWQgbWVtb3J5IGxvY2F0aW9ucy4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWRVhUUkFDVEYxMjggPC9jPiBpbnN0cnVjdGlvbiBhbmQgdGhlCi8vLyAgIHN0b3JlIGluc3RydWN0aW9ucy4KLy8vCi8vLyBccGFyYW0gX19hZGRyX2hpCi8vLyAgICBBIHBvaW50ZXIgdG8gYSAxMjgtYml0IG1lbW9yeSBsb2NhdGlvbi4gQml0c1syNTU6MTI4XSBvZiBcYSBfX2EgYXJlIHRvIGJlCi8vLyAgICBjb3BpZWQgdG8gdGhpcyBtZW1vcnkgbG9jYXRpb24uIFRoZSBhZGRyZXNzIG9mIHRoaXMgbWVtb3J5IGxvY2F0aW9uIGRvZXMKLy8vICAgIG5vdCBoYXZlIHRvIGJlIGFsaWduZWQuCi8vLyBccGFyYW0gX19hZGRyX2xvCi8vLyAgICBBIHBvaW50ZXIgdG8gYSAxMjgtYml0IG1lbW9yeSBsb2NhdGlvbi4gQml0c1sxMjc6MF0gb2YgXGEgX19hIGFyZSB0byBiZQovLy8gICAgY29waWVkIHRvIHRoaXMgbWVtb3J5IGxvY2F0aW9uLiBUaGUgYWRkcmVzcyBvZiB0aGlzIG1lbW9yeSBsb2NhdGlvbiBkb2VzCi8vLyAgICBub3QgaGF2ZSB0byBiZSBhbGlnbmVkLgovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uCnN0YXRpYyBfX2lubGluZSB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW0yNTZfc3RvcmV1Ml9tMTI4ZChkb3VibGUgKl9fYWRkcl9oaSwgZG91YmxlICpfX2FkZHJfbG8sIF9fbTI1NmQgX19hKQp7CiAgX19tMTI4ZCBfX3YxMjg7CgogIF9fdjEyOCA9IF9tbTI1Nl9jYXN0cGQyNTZfcGQxMjgoX19hKTsKICBfbW1fc3RvcmV1X3BkKF9fYWRkcl9sbywgX192MTI4KTsKICBfX3YxMjggPSBfbW0yNTZfZXh0cmFjdGYxMjhfcGQoX19hLCAxKTsKICBfbW1fc3RvcmV1X3BkKF9fYWRkcl9oaSwgX192MTI4KTsKfQoKLy8vIFN0b3JlcyB0aGUgdXBwZXIgYW5kIGxvd2VyIDEyOCBiaXRzIG9mIGEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBpbnRvCi8vLyAgICB0d28gZGlmZmVyZW50IHVuYWxpZ25lZCBtZW1vcnkgbG9jYXRpb25zLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZFWFRSQUNURjEyOCA8L2M+IGluc3RydWN0aW9uIGFuZCB0aGUKLy8vICAgc3RvcmUgaW5zdHJ1Y3Rpb25zLgovLy8KLy8vIFxwYXJhbSBfX2FkZHJfaGkKLy8vICAgIEEgcG9pbnRlciB0byBhIDEyOC1iaXQgbWVtb3J5IGxvY2F0aW9uLiBCaXRzWzI1NToxMjhdIG9mIFxhIF9fYSBhcmUgdG8gYmUKLy8vICAgIGNvcGllZCB0byB0aGlzIG1lbW9yeSBsb2NhdGlvbi4gVGhlIGFkZHJlc3Mgb2YgdGhpcyBtZW1vcnkgbG9jYXRpb24gZG9lcwovLy8gICAgbm90IGhhdmUgdG8gYmUgYWxpZ25lZC4KLy8vIFxwYXJhbSBfX2FkZHJfbG8KLy8vICAgIEEgcG9pbnRlciB0byBhIDEyOC1iaXQgbWVtb3J5IGxvY2F0aW9uLiBCaXRzWzEyNzowXSBvZiBcYSBfX2EgYXJlIHRvIGJlCi8vLyAgICBjb3BpZWQgdG8gdGhpcyBtZW1vcnkgbG9jYXRpb24uIFRoZSBhZGRyZXNzIG9mIHRoaXMgbWVtb3J5IGxvY2F0aW9uIGRvZXMKLy8vICAgIG5vdCBoYXZlIHRvIGJlIGFsaWduZWQuCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IuCnN0YXRpYyBfX2lubGluZSB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW0yNTZfc3RvcmV1Ml9tMTI4aShfX20xMjhpX3UgKl9fYWRkcl9oaSwgX19tMTI4aV91ICpfX2FkZHJfbG8sIF9fbTI1NmkgX19hKQp7CiAgX19tMTI4aSBfX3YxMjg7CgogIF9fdjEyOCA9IF9tbTI1Nl9jYXN0c2kyNTZfc2kxMjgoX19hKTsKICBfbW1fc3RvcmV1X3NpMTI4KF9fYWRkcl9sbywgX192MTI4KTsKICBfX3YxMjggPSBfbW0yNTZfZXh0cmFjdGYxMjhfc2kyNTYoX19hLCAxKTsKICBfbW1fc3RvcmV1X3NpMTI4KF9fYWRkcl9oaSwgX192MTI4KTsKfQoKI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUwojdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTMTI4CgojZW5kaWYgLyogX19BVlhJTlRSSU5fSCAqLwoALyo9PT0tLS0tLS0tLS0tLS0tLS0tLSBnZm5paW50cmluLmggLSBHRk5JIGludHJpbnNpY3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKgogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwojaWZuZGVmIF9fSU1NSU5UUklOX0gKI2Vycm9yICJOZXZlciB1c2UgPGdmbmlpbnRyaW4uaD4gZGlyZWN0bHk7IGluY2x1ZGUgPGltbWludHJpbi5oPiBpbnN0ZWFkLiIKI2VuZGlmCgojaWZuZGVmIF9fR0ZOSUlOVFJJTl9ICiNkZWZpbmUgX19HRk5JSU5UUklOX0gKCi8qIERlZmF1bHQgYXR0cmlidXRlcyBmb3Igc2ltcGxlIGZvcm0gKG5vIG1hc2tpbmcpLiAqLwojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUyBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oImdmbmkiKSwgX19taW5fdmVjdG9yX3dpZHRoX18oMTI4KSkpCgovKiBEZWZhdWx0IGF0dHJpYnV0ZXMgZm9yIFlNTSB1bm1hc2tlZCBmb3JtLiAqLwojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSU19ZIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygiYXZ4LGdmbmkiKSwgX19taW5fdmVjdG9yX3dpZHRoX18oMjU2KSkpCgovKiBEZWZhdWx0IGF0dHJpYnV0ZXMgZm9yIFpNTSBmb3Jtcy4gKi8KI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlNfWiBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oImF2eDUxMmJ3LGdmbmkiKSwgX19taW5fdmVjdG9yX3dpZHRoX18oNTEyKSkpCgovKiBEZWZhdWx0IGF0dHJpYnV0ZXMgZm9yIFZMWCBmb3Jtcy4gKi8KI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlNfVkwxMjggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJhdng1MTJidyxhdng1MTJ2bCxnZm5pIiksIF9fbWluX3ZlY3Rvcl93aWR0aF9fKDEyOCkpKQojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSU19WTDI1NiBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oImF2eDUxMmJ3LGF2eDUxMnZsLGdmbmkiKSwgX19taW5fdmVjdG9yX3dpZHRoX18oMjU2KSkpCgojZGVmaW5lIF9tbV9nZjJwOGFmZmluZWludl9lcGk2NF9lcGk4KEEsIEIsIEkpIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdmdmMnA4YWZmaW5laW52cWJfdjE2cWkoKF9fdjE2cWkpKF9fbTEyOGkpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKShfX20xMjhpKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhcikoSSkpKQoKI2RlZmluZSBfbW1fZ2YycDhhZmZpbmVfZXBpNjRfZXBpOChBLCBCLCBJKSBcCiAgKChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3ZnZjJwOGFmZmluZXFiX3YxNnFpKChfX3YxNnFpKShfX20xMjhpKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZxaSkoX19tMTI4aSkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIpKEkpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9nZjJwOG11bF9lcGk4KF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfdmdmMnA4bXVsYl92MTZxaSgoX192MTZxaSkgX19BLAogICAgICAgICAgICAgIChfX3YxNnFpKSBfX0IpOwp9CgojaWZkZWYgX19BVlhJTlRSSU5fSAojZGVmaW5lIF9tbTI1Nl9nZjJwOGFmZmluZWludl9lcGk2NF9lcGk4KEEsIEIsIEkpIFwKICAoKF9fbTI1NmkpX19idWlsdGluX2lhMzJfdmdmMnA4YWZmaW5laW52cWJfdjMycWkoKF9fdjMycWkpKF9fbTI1NmkpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMnFpKShfX20yNTZpKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhcikoSSkpKQoKI2RlZmluZSBfbW0yNTZfZ2YycDhhZmZpbmVfZXBpNjRfZXBpOChBLCBCLCBJKSBcCiAgKChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3ZnZjJwOGFmZmluZXFiX3YzMnFpKChfX3YzMnFpKShfX20yNTZpKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJxaSkoX19tMjU2aSkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIpKEkpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTX1kKX21tMjU2X2dmMnA4bXVsX2VwaTgoX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl92Z2YycDhtdWxiX3YzMnFpKChfX3YzMnFpKSBfX0EsCiAgICAgICAgICAgICAgKF9fdjMycWkpIF9fQik7Cn0KI2VuZGlmIC8qIF9fQVZYSU5UUklOX0ggKi8KCiNpZmRlZiBfX0FWWDUxMkJXSU5UUklOX0gKI2RlZmluZSBfbW01MTJfZ2YycDhhZmZpbmVpbnZfZXBpNjRfZXBpOChBLCBCLCBJKSBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3ZnZjJwOGFmZmluZWludnFiX3Y2NHFpKChfX3Y2NHFpKShfX201MTJpKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NjRxaSkoX19tNTEyaSkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIpKEkpKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfZ2YycDhhZmZpbmVpbnZfZXBpNjRfZXBpOChTLCBVLCBBLCBCLCBJKSBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfNTEyKChfX21tYXNrNjQpKFUpLCBcCiAgICAgICAgIChfX3Y2NHFpKV9tbTUxMl9nZjJwOGFmZmluZWludl9lcGk2NF9lcGk4KEEsIEIsIEkpLCBcCiAgICAgICAgIChfX3Y2NHFpKShfX201MTJpKShTKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9nZjJwOGFmZmluZWludl9lcGk2NF9lcGk4KFUsIEEsIEIsIEkpIFwKICBfbW01MTJfbWFza19nZjJwOGFmZmluZWludl9lcGk2NF9lcGk4KChfX201MTJpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCksIFwKICAgICAgICAgVSwgQSwgQiwgSSkKCiNkZWZpbmUgX21tNTEyX2dmMnA4YWZmaW5lX2VwaTY0X2VwaTgoQSwgQiwgSSkgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl92Z2YycDhhZmZpbmVxYl92NjRxaSgoX192NjRxaSkoX19tNTEyaSkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjY0cWkpKF9fbTUxMmkpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyKShJKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX2dmMnA4YWZmaW5lX2VwaTY0X2VwaTgoUywgVSwgQSwgQiwgSSkgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzUxMigoX19tbWFzazY0KShVKSwgXAogICAgICAgICAoX192NjRxaSlfbW01MTJfZ2YycDhhZmZpbmVfZXBpNjRfZXBpOCgoQSksIChCKSwgKEkpKSwgXAogICAgICAgICAoX192NjRxaSkoX19tNTEyaSkoUykpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfZ2YycDhhZmZpbmVfZXBpNjRfZXBpOChVLCBBLCBCLCBJKSBcCiAgX21tNTEyX21hc2tfZ2YycDhhZmZpbmVfZXBpNjRfZXBpOCgoX19tNTEyaSlfbW01MTJfc2V0emVyb19zaTUxMigpLCBcCiAgICAgICAgIFUsIEEsIEIsIEkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSU19aCl9tbTUxMl9nZjJwOG11bF9lcGk4KF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSkgX19idWlsdGluX2lhMzJfdmdmMnA4bXVsYl92NjRxaSgoX192NjRxaSkgX19BLAogICAgICAgICAgICAgIChfX3Y2NHFpKSBfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSU19aCl9tbTUxMl9tYXNrX2dmMnA4bXVsX2VwaTgoX19tNTEyaSBfX1MsIF9fbW1hc2s2NCBfX1UsIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSkgX19idWlsdGluX2lhMzJfc2VsZWN0Yl81MTIoX19VLAogICAgICAgICAgICAgIChfX3Y2NHFpKSBfbW01MTJfZ2YycDhtdWxfZXBpOChfX0EsIF9fQiksCiAgICAgICAgICAgICAgKF9fdjY0cWkpIF9fUyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTX1oKX21tNTEyX21hc2t6X2dmMnA4bXVsX2VwaTgoX19tbWFzazY0IF9fVSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIF9tbTUxMl9tYXNrX2dmMnA4bXVsX2VwaTgoKF9fbTUxMmkpX21tNTEyX3NldHplcm9fc2k1MTIoKSwKICAgICAgICAgICAgICBfX1UsIF9fQSwgX19CKTsKfQojZW5kaWYgLyogX19BVlg1MTJCV0lOVFJJTl9IICovCgojaWZkZWYgX19BVlg1MTJWTEJXSU5UUklOX0gKI2RlZmluZSBfbW1fbWFza19nZjJwOGFmZmluZWludl9lcGk2NF9lcGk4KFMsIFUsIEEsIEIsIEkpIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl8xMjgoKF9fbW1hc2sxNikoVSksIFwKICAgICAgICAgKF9fdjE2cWkpX21tX2dmMnA4YWZmaW5laW52X2VwaTY0X2VwaTgoQSwgQiwgSSksIFwKICAgICAgICAgKF9fdjE2cWkpKF9fbTEyOGkpKFMpKSkKCiNkZWZpbmUgX21tX21hc2t6X2dmMnA4YWZmaW5laW52X2VwaTY0X2VwaTgoVSwgQSwgQiwgSSkgXAogIF9tbV9tYXNrX2dmMnA4YWZmaW5laW52X2VwaTY0X2VwaTgoKF9fbTEyOGkpX21tX3NldHplcm9fc2kxMjgoKSwgXAogICAgICAgICBVLCBBLCBCLCBJKQoKI2RlZmluZSBfbW0yNTZfbWFza19nZjJwOGFmZmluZWludl9lcGk2NF9lcGk4KFMsIFUsIEEsIEIsIEkpIFwKICAoKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl8yNTYoKF9fbW1hc2szMikoVSksIFwKICAgICAgICAgKF9fdjMycWkpX21tMjU2X2dmMnA4YWZmaW5laW52X2VwaTY0X2VwaTgoQSwgQiwgSSksIFwKICAgICAgICAgKF9fdjMycWkpKF9fbTI1NmkpKFMpKSkKCiNkZWZpbmUgX21tMjU2X21hc2t6X2dmMnA4YWZmaW5laW52X2VwaTY0X2VwaTgoVSwgQSwgQiwgSSkgXAogIF9tbTI1Nl9tYXNrX2dmMnA4YWZmaW5laW52X2VwaTY0X2VwaTgoKF9fbTI1NmkpX21tMjU2X3NldHplcm9fc2kyNTYoKSwgXAogICAgICAgICBVLCBBLCBCLCBJKQoKI2RlZmluZSBfbW1fbWFza19nZjJwOGFmZmluZV9lcGk2NF9lcGk4KFMsIFUsIEEsIEIsIEkpIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl8xMjgoKF9fbW1hc2sxNikoVSksIFwKICAgICAgICAgKF9fdjE2cWkpX21tX2dmMnA4YWZmaW5lX2VwaTY0X2VwaTgoQSwgQiwgSSksIFwKICAgICAgICAgKF9fdjE2cWkpKF9fbTEyOGkpKFMpKSkKCiNkZWZpbmUgX21tX21hc2t6X2dmMnA4YWZmaW5lX2VwaTY0X2VwaTgoVSwgQSwgQiwgSSkgXAogIF9tbV9tYXNrX2dmMnA4YWZmaW5lX2VwaTY0X2VwaTgoKF9fbTEyOGkpX21tX3NldHplcm9fc2kxMjgoKSwgVSwgQSwgQiwgSSkKCiNkZWZpbmUgX21tMjU2X21hc2tfZ2YycDhhZmZpbmVfZXBpNjRfZXBpOChTLCBVLCBBLCBCLCBJKSBcCiAgKChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfMjU2KChfX21tYXNrMzIpKFUpLCBcCiAgICAgICAgIChfX3YzMnFpKV9tbTI1Nl9nZjJwOGFmZmluZV9lcGk2NF9lcGk4KEEsIEIsIEkpLCBcCiAgICAgICAgIChfX3YzMnFpKShfX20yNTZpKShTKSkpCgojZGVmaW5lIF9tbTI1Nl9tYXNrel9nZjJwOGFmZmluZV9lcGk2NF9lcGk4KFUsIEEsIEIsIEkpIFwKICBfbW0yNTZfbWFza19nZjJwOGFmZmluZV9lcGk2NF9lcGk4KChfX20yNTZpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCksIFwKICAgICAgICAgVSwgQSwgQiwgSSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTX1ZMMTI4Cl9tbV9tYXNrX2dmMnA4bXVsX2VwaTgoX19tMTI4aSBfX1MsIF9fbW1hc2sxNiBfX1UsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfc2VsZWN0Yl8xMjgoX19VLAogICAgICAgICAgICAgIChfX3YxNnFpKSBfbW1fZ2YycDhtdWxfZXBpOChfX0EsIF9fQiksCiAgICAgICAgICAgICAgKF9fdjE2cWkpIF9fUyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTX1ZMMTI4Cl9tbV9tYXNrel9nZjJwOG11bF9lcGk4KF9fbW1hc2sxNiBfX1UsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiBfbW1fbWFza19nZjJwOG11bF9lcGk4KChfX20xMjhpKV9tbV9zZXR6ZXJvX3NpMTI4KCksCiAgICAgICAgICAgICAgX19VLCBfX0EsIF9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTX1ZMMjU2Cl9tbTI1Nl9tYXNrX2dmMnA4bXVsX2VwaTgoX19tMjU2aSBfX1MsIF9fbW1hc2szMiBfX1UsIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikKewogIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfc2VsZWN0Yl8yNTYoX19VLAogICAgICAgICAgICAgIChfX3YzMnFpKSBfbW0yNTZfZ2YycDhtdWxfZXBpOChfX0EsIF9fQiksCiAgICAgICAgICAgICAgKF9fdjMycWkpIF9fUyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTX1ZMMjU2Cl9tbTI1Nl9tYXNrel9nZjJwOG11bF9lcGk4KF9fbW1hc2szMiBfX1UsIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikKewogIHJldHVybiBfbW0yNTZfbWFza19nZjJwOG11bF9lcGk4KChfX20yNTZpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCksCiAgICAgICAgICAgICAgX19VLCBfX0EsIF9fQik7Cn0KI2VuZGlmIC8qIF9fQVZYNTEyVkxCV0lOVFJJTl9IICovCgojdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTCiN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlNfWQojdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTX1oKI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSU19WTDEyOAojdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTX1ZMMjU2CgojZW5kaWYgLyogX19HRk5JSU5UUklOX0ggKi8KCgAvKj09PS0tLS0gbW1pbnRyaW4uaCAtIE1NWCBpbnRyaW5zaWNzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqCiAqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCiAqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCgojaWZuZGVmIF9fTU1JTlRSSU5fSAojZGVmaW5lIF9fTU1JTlRSSU5fSAoKI2lmICFkZWZpbmVkKF9faTM4Nl9fKSAmJiAhZGVmaW5lZChfX3g4Nl82NF9fKQojZXJyb3IgIlRoaXMgaGVhZGVyIGlzIG9ubHkgbWVhbnQgdG8gYmUgdXNlZCBvbiB4ODYgYW5kIHg2NCBhcmNoaXRlY3R1cmUiCiNlbmRpZgoKdHlwZWRlZiBsb25nIGxvbmcgX19tNjQgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDgpLCBfX2FsaWduZWRfXyg4KSkpOwoKdHlwZWRlZiBsb25nIGxvbmcgX192MWRpIF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXyg4KSkpOwp0eXBlZGVmIGludCBfX3Yyc2kgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDgpKSk7CnR5cGVkZWYgc2hvcnQgX192NGhpIF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXyg4KSkpOwp0eXBlZGVmIGNoYXIgX192OHFpIF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXyg4KSkpOwoKLyogRGVmaW5lIHRoZSBkZWZhdWx0IGF0dHJpYnV0ZXMgZm9yIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlLiAqLwojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUyBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oIm1teCIpLCBfX21pbl92ZWN0b3Jfd2lkdGhfXyg2NCkpKQoKLy8vIENsZWFycyB0aGUgTU1YIHN0YXRlIGJ5IHNldHRpbmcgdGhlIHN0YXRlIG9mIHRoZSB4ODcgc3RhY2sgcmVnaXN0ZXJzCi8vLyAgICB0byBlbXB0eS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBFTU1TIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwpzdGF0aWMgX19pbmxpbmVfXyB2b2lkICBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oIm1teCIpKSkKX21tX2VtcHR5KHZvaWQpCnsKICAgIF9fYnVpbHRpbl9pYTMyX2VtbXMoKTsKfQoKLy8vIENvbnN0cnVjdHMgYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IsIHNldHRpbmcgdGhlIGxvd2VyIDMyIGJpdHMgdG8gdGhlCi8vLyAgICB2YWx1ZSBvZiB0aGUgMzItYml0IGludGVnZXIgcGFyYW1ldGVyIGFuZCBzZXR0aW5nIHRoZSB1cHBlciAzMiBiaXRzIHRvIDAuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gTU9WRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2kKLy8vICAgIEEgMzItYml0IGludGVnZXIgdmFsdWUuCi8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3Rvci4gVGhlIGxvd2VyIDMyIGJpdHMgY29udGFpbiB0aGUgdmFsdWUgb2YgdGhlCi8vLyAgICBwYXJhbWV0ZXIuIFRoZSB1cHBlciAzMiBiaXRzIGFyZSBzZXQgdG8gMC4Kc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jdnRzaTMyX3NpNjQoaW50IF9faSkKewogICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl92ZWNfaW5pdF92MnNpKF9faSwgMCk7Cn0KCi8vLyBSZXR1cm5zIHRoZSBsb3dlciAzMiBiaXRzIG9mIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIGFzIGEgMzItYml0Ci8vLyAgICBzaWduZWQgaW50ZWdlci4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBNT1ZEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fbQovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IuCi8vLyBccmV0dXJucyBBIDMyLWJpdCBzaWduZWQgaW50ZWdlciB2YWx1ZSBjb250YWluaW5nIHRoZSBsb3dlciAzMiBiaXRzIG9mIHRoZQovLy8gICAgcGFyYW1ldGVyLgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jdnRzaTY0X3NpMzIoX19tNjQgX19tKQp7CiAgICByZXR1cm4gX19idWlsdGluX2lhMzJfdmVjX2V4dF92MnNpKChfX3Yyc2kpX19tLCAwKTsKfQoKLy8vIENhc3RzIGEgNjQtYml0IHNpZ25lZCBpbnRlZ2VyIHZhbHVlIGludG8gYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gTU9WUSA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2kKLy8vICAgIEEgNjQtYml0IHNpZ25lZCBpbnRlZ2VyLgovLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgc2FtZSBiaXR3aXNlIHBhdHRlcm4gYXMgdGhlCi8vLyAgICBwYXJhbWV0ZXIuCnN0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY3Z0c2k2NF9tNjQobG9uZyBsb25nIF9faSkKewogICAgcmV0dXJuIChfX202NClfX2k7Cn0KCi8vLyBDYXN0cyBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBpbnRvIGEgNjQtYml0IHNpZ25lZCBpbnRlZ2VyIHZhbHVlLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IE1PVlEgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19tCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3Rvci4KLy8vIFxyZXR1cm5zIEEgNjQtYml0IHNpZ25lZCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIHNhbWUgYml0d2lzZSBwYXR0ZXJuIGFzIHRoZQovLy8gICAgcGFyYW1ldGVyLgpzdGF0aWMgX19pbmxpbmVfXyBsb25nIGxvbmcgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jdnRtNjRfc2k2NChfX202NCBfX20pCnsKICAgIHJldHVybiAobG9uZyBsb25nKV9fbTsKfQoKLy8vIENvbnZlcnRzIDE2LWJpdCBzaWduZWQgaW50ZWdlcnMgZnJvbSBib3RoIDY0LWJpdCBpbnRlZ2VyIHZlY3RvcgovLy8gICAgcGFyYW1ldGVycyBvZiBbNCB4IGkxNl0gaW50byA4LWJpdCBzaWduZWQgaW50ZWdlciB2YWx1ZXMsIGFuZCBjb25zdHJ1Y3RzCi8vLyAgICBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XSBhcyB0aGUgcmVzdWx0LiBQb3NpdGl2ZSB2YWx1ZXMKLy8vICAgIGdyZWF0ZXIgdGhhbiAweDdGIGFyZSBzYXR1cmF0ZWQgdG8gMHg3Ri4gTmVnYXRpdmUgdmFsdWVzIGxlc3MgdGhhbiAweDgwCi8vLyAgICBhcmUgc2F0dXJhdGVkIHRvIDB4ODAuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUEFDS1NTV0IgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19tMQovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLiBFYWNoIDE2LWJpdCBlbGVtZW50IGlzIHRyZWF0ZWQgYXMgYQovLy8gICAgMTYtYml0IHNpZ25lZCBpbnRlZ2VyIGFuZCBpcyBjb252ZXJ0ZWQgdG8gYW4gOC1iaXQgc2lnbmVkIGludGVnZXIgd2l0aAovLy8gICAgc2F0dXJhdGlvbi4gUG9zaXRpdmUgdmFsdWVzIGdyZWF0ZXIgdGhhbiAweDdGIGFyZSBzYXR1cmF0ZWQgdG8gMHg3Ri4KLy8vICAgIE5lZ2F0aXZlIHZhbHVlcyBsZXNzIHRoYW4gMHg4MCBhcmUgc2F0dXJhdGVkIHRvIDB4ODAuIFRoZSBjb252ZXJ0ZWQKLy8vICAgIFs0IHggaThdIHZhbHVlcyBhcmUgd3JpdHRlbiB0byB0aGUgbG93ZXIgMzIgYml0cyBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fbTIKLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4gRWFjaCAxNi1iaXQgZWxlbWVudCBpcyB0cmVhdGVkIGFzIGEKLy8vICAgIDE2LWJpdCBzaWduZWQgaW50ZWdlciBhbmQgaXMgY29udmVydGVkIHRvIGFuIDgtYml0IHNpZ25lZCBpbnRlZ2VyIHdpdGgKLy8vICAgIHNhdHVyYXRpb24uIFBvc2l0aXZlIHZhbHVlcyBncmVhdGVyIHRoYW4gMHg3RiBhcmUgc2F0dXJhdGVkIHRvIDB4N0YuCi8vLyAgICBOZWdhdGl2ZSB2YWx1ZXMgbGVzcyB0aGFuIDB4ODAgYXJlIHNhdHVyYXRlZCB0byAweDgwLiBUaGUgY29udmVydGVkCi8vLyAgICBbNCB4IGk4XSB2YWx1ZXMgYXJlIHdyaXR0ZW4gdG8gdGhlIHVwcGVyIDMyIGJpdHMgb2YgdGhlIHJlc3VsdC4KLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRlZAovLy8gICAgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3BhY2tzX3BpMTYoX19tNjQgX19tMSwgX19tNjQgX19tMikKewogICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wYWNrc3N3YigoX192NGhpKV9fbTEsIChfX3Y0aGkpX19tMik7Cn0KCi8vLyBDb252ZXJ0cyAzMi1iaXQgc2lnbmVkIGludGVnZXJzIGZyb20gYm90aCA2NC1iaXQgaW50ZWdlciB2ZWN0b3IKLy8vICAgIHBhcmFtZXRlcnMgb2YgWzIgeCBpMzJdIGludG8gMTYtYml0IHNpZ25lZCBpbnRlZ2VyIHZhbHVlcywgYW5kIGNvbnN0cnVjdHMKLy8vICAgIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XSBhcyB0aGUgcmVzdWx0LiBQb3NpdGl2ZSB2YWx1ZXMKLy8vICAgIGdyZWF0ZXIgdGhhbiAweDdGRkYgYXJlIHNhdHVyYXRlZCB0byAweDdGRkYuIE5lZ2F0aXZlIHZhbHVlcyBsZXNzIHRoYW4KLy8vICAgIDB4ODAwMCBhcmUgc2F0dXJhdGVkIHRvIDB4ODAwMC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQQUNLU1NEVyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX20xCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0uIEVhY2ggMzItYml0IGVsZW1lbnQgaXMgdHJlYXRlZCBhcyBhCi8vLyAgICAzMi1iaXQgc2lnbmVkIGludGVnZXIgYW5kIGlzIGNvbnZlcnRlZCB0byBhIDE2LWJpdCBzaWduZWQgaW50ZWdlciB3aXRoCi8vLyAgICBzYXR1cmF0aW9uLiBQb3NpdGl2ZSB2YWx1ZXMgZ3JlYXRlciB0aGFuIDB4N0ZGRiBhcmUgc2F0dXJhdGVkIHRvIDB4N0ZGRi4KLy8vICAgIE5lZ2F0aXZlIHZhbHVlcyBsZXNzIHRoYW4gMHg4MDAwIGFyZSBzYXR1cmF0ZWQgdG8gMHg4MDAwLiBUaGUgY29udmVydGVkCi8vLyAgICBbMiB4IGkxNl0gdmFsdWVzIGFyZSB3cml0dGVuIHRvIHRoZSBsb3dlciAzMiBiaXRzIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19tMgovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdLiBFYWNoIDMyLWJpdCBlbGVtZW50IGlzIHRyZWF0ZWQgYXMgYQovLy8gICAgMzItYml0IHNpZ25lZCBpbnRlZ2VyIGFuZCBpcyBjb252ZXJ0ZWQgdG8gYSAxNi1iaXQgc2lnbmVkIGludGVnZXIgd2l0aAovLy8gICAgc2F0dXJhdGlvbi4gUG9zaXRpdmUgdmFsdWVzIGdyZWF0ZXIgdGhhbiAweDdGRkYgYXJlIHNhdHVyYXRlZCB0byAweDdGRkYuCi8vLyAgICBOZWdhdGl2ZSB2YWx1ZXMgbGVzcyB0aGFuIDB4ODAwMCBhcmUgc2F0dXJhdGVkIHRvIDB4ODAwMC4gVGhlIGNvbnZlcnRlZAovLy8gICAgWzIgeCBpMTZdIHZhbHVlcyBhcmUgd3JpdHRlbiB0byB0aGUgdXBwZXIgMzIgYml0cyBvZiB0aGUgcmVzdWx0LgovLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRlZAovLy8gICAgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3BhY2tzX3BpMzIoX19tNjQgX19tMSwgX19tNjQgX19tMikKewogICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wYWNrc3NkdygoX192MnNpKV9fbTEsIChfX3Yyc2kpX19tMik7Cn0KCi8vLyBDb252ZXJ0cyAxNi1iaXQgc2lnbmVkIGludGVnZXJzIGZyb20gYm90aCA2NC1iaXQgaW50ZWdlciB2ZWN0b3IKLy8vICAgIHBhcmFtZXRlcnMgb2YgWzQgeCBpMTZdIGludG8gOC1iaXQgdW5zaWduZWQgaW50ZWdlciB2YWx1ZXMsIGFuZAovLy8gICAgY29uc3RydWN0cyBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XSBhcyB0aGUgcmVzdWx0LiBWYWx1ZXMKLy8vICAgIGdyZWF0ZXIgdGhhbiAweEZGIGFyZSBzYXR1cmF0ZWQgdG8gMHhGRi4gVmFsdWVzIGxlc3MgdGhhbiAwIGFyZSBzYXR1cmF0ZWQKLy8vICAgIHRvIDAuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUEFDS1VTV0IgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19tMQovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLiBFYWNoIDE2LWJpdCBlbGVtZW50IGlzIHRyZWF0ZWQgYXMgYQovLy8gICAgMTYtYml0IHNpZ25lZCBpbnRlZ2VyIGFuZCBpcyBjb252ZXJ0ZWQgdG8gYW4gOC1iaXQgdW5zaWduZWQgaW50ZWdlciB3aXRoCi8vLyAgICBzYXR1cmF0aW9uLiBWYWx1ZXMgZ3JlYXRlciB0aGFuIDB4RkYgYXJlIHNhdHVyYXRlZCB0byAweEZGLiBWYWx1ZXMgbGVzcwovLy8gICAgdGhhbiAwIGFyZSBzYXR1cmF0ZWQgdG8gMC4gVGhlIGNvbnZlcnRlZCBbNCB4IGk4XSB2YWx1ZXMgYXJlIHdyaXR0ZW4gdG8KLy8vICAgIHRoZSBsb3dlciAzMiBiaXRzIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19tMgovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLiBFYWNoIDE2LWJpdCBlbGVtZW50IGlzIHRyZWF0ZWQgYXMgYQovLy8gICAgMTYtYml0IHNpZ25lZCBpbnRlZ2VyIGFuZCBpcyBjb252ZXJ0ZWQgdG8gYW4gOC1iaXQgdW5zaWduZWQgaW50ZWdlciB3aXRoCi8vLyAgICBzYXR1cmF0aW9uLiBWYWx1ZXMgZ3JlYXRlciB0aGFuIDB4RkYgYXJlIHNhdHVyYXRlZCB0byAweEZGLiBWYWx1ZXMgbGVzcwovLy8gICAgdGhhbiAwIGFyZSBzYXR1cmF0ZWQgdG8gMC4gVGhlIGNvbnZlcnRlZCBbNCB4IGk4XSB2YWx1ZXMgYXJlIHdyaXR0ZW4gdG8KLy8vICAgIHRoZSB1cHBlciAzMiBiaXRzIG9mIHRoZSByZXN1bHQuCi8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XSBjb250YWluaW5nIHRoZSBjb252ZXJ0ZWQKLy8vICAgIHZhbHVlcy4Kc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9wYWNrc19wdTE2KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCnsKICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcGFja3Vzd2IoKF9fdjRoaSlfX20xLCAoX192NGhpKV9fbTIpOwp9CgovLy8gVW5wYWNrcyB0aGUgdXBwZXIgMzIgYml0cyBmcm9tIHR3byA2NC1iaXQgaW50ZWdlciB2ZWN0b3JzIG9mIFs4IHggaThdCi8vLyAgICBhbmQgaW50ZXJsZWF2ZXMgdGhlbSBpbnRvIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBVTlBDS0hCVyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX20xCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XS4gXG4KLy8vICAgIEJpdHMgWzM5OjMyXSBhcmUgd3JpdHRlbiB0byBiaXRzIFs3OjBdIG9mIHRoZSByZXN1bHQuIFxuCi8vLyAgICBCaXRzIFs0Nzo0MF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMjM6MTZdIG9mIHRoZSByZXN1bHQuIFxuCi8vLyAgICBCaXRzIFs1NTo0OF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMzk6MzJdIG9mIHRoZSByZXN1bHQuIFxuCi8vLyAgICBCaXRzIFs2Mzo1Nl0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbNTU6NDhdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19tMgovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0uCi8vLyAgICBCaXRzIFszOTozMl0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMTU6OF0gb2YgdGhlIHJlc3VsdC4gXG4KLy8vICAgIEJpdHMgWzQ3OjQwXSBhcmUgd3JpdHRlbiB0byBiaXRzIFszMToyNF0gb2YgdGhlIHJlc3VsdC4gXG4KLy8vICAgIEJpdHMgWzU1OjQ4XSBhcmUgd3JpdHRlbiB0byBiaXRzIFs0Nzo0MF0gb2YgdGhlIHJlc3VsdC4gXG4KLy8vICAgIEJpdHMgWzYzOjU2XSBhcmUgd3JpdHRlbiB0byBiaXRzIFs2Mzo1Nl0gb2YgdGhlIHJlc3VsdC4KLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdIGNvbnRhaW5pbmcgdGhlIGludGVybGVhdmVkCi8vLyAgICB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fdW5wYWNraGlfcGk4KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCnsKICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcHVucGNraGJ3KChfX3Y4cWkpX19tMSwgKF9fdjhxaSlfX20yKTsKfQoKLy8vIFVucGFja3MgdGhlIHVwcGVyIDMyIGJpdHMgZnJvbSB0d28gNjQtYml0IGludGVnZXIgdmVjdG9ycyBvZgovLy8gICAgWzQgeCBpMTZdIGFuZCBpbnRlcmxlYXZlcyB0aGVtIGludG8gYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBVTlBDS0hXRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX20xCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uCi8vLyAgICBCaXRzIFs0NzozMl0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMTU6MF0gb2YgdGhlIHJlc3VsdC4gXG4KLy8vICAgIEJpdHMgWzYzOjQ4XSBhcmUgd3JpdHRlbiB0byBiaXRzIFs0NzozMl0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX20yCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uCi8vLyAgICBCaXRzIFs0NzozMl0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMzE6MTZdIG9mIHRoZSByZXN1bHQuIFxuCi8vLyAgICBCaXRzIFs2Mzo0OF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbNjM6NDhdIG9mIHRoZSByZXN1bHQuCi8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyB0aGUgaW50ZXJsZWF2ZWQKLy8vICAgIHZhbHVlcy4Kc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV91bnBhY2toaV9waTE2KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCnsKICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcHVucGNraHdkKChfX3Y0aGkpX19tMSwgKF9fdjRoaSlfX20yKTsKfQoKLy8vIFVucGFja3MgdGhlIHVwcGVyIDMyIGJpdHMgZnJvbSB0d28gNjQtYml0IGludGVnZXIgdmVjdG9ycyBvZgovLy8gICAgWzIgeCBpMzJdIGFuZCBpbnRlcmxlYXZlcyB0aGVtIGludG8gYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBVTlBDS0hEUSA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX20xCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0uIFRoZSB1cHBlciAzMiBiaXRzIGFyZSB3cml0dGVuIHRvCi8vLyAgICB0aGUgbG93ZXIgMzIgYml0cyBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fbTIKLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFsyIHggaTMyXS4gVGhlIHVwcGVyIDMyIGJpdHMgYXJlIHdyaXR0ZW4gdG8KLy8vICAgIHRoZSB1cHBlciAzMiBiaXRzIG9mIHRoZSByZXN1bHQuCi8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0gY29udGFpbmluZyB0aGUgaW50ZXJsZWF2ZWQKLy8vICAgIHZhbHVlcy4Kc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV91bnBhY2toaV9waTMyKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCnsKICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcHVucGNraGRxKChfX3Yyc2kpX19tMSwgKF9fdjJzaSlfX20yKTsKfQoKLy8vIFVucGFja3MgdGhlIGxvd2VyIDMyIGJpdHMgZnJvbSB0d28gNjQtYml0IGludGVnZXIgdmVjdG9ycyBvZiBbOCB4IGk4XQovLy8gICAgYW5kIGludGVybGVhdmVzIHRoZW0gaW50byBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQVU5QQ0tMQlcgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19tMQovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0uCi8vLyAgICBCaXRzIFs3OjBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzc6MF0gb2YgdGhlIHJlc3VsdC4gXG4KLy8vICAgIEJpdHMgWzE1OjhdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzIzOjE2XSBvZiB0aGUgcmVzdWx0LiBcbgovLy8gICAgQml0cyBbMjM6MTZdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzM5OjMyXSBvZiB0aGUgcmVzdWx0LiBcbgovLy8gICAgQml0cyBbMzE6MjRdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzU1OjQ4XSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fbTIKLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdLgovLy8gICAgQml0cyBbNzowXSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxNTo4XSBvZiB0aGUgcmVzdWx0LiBcbgovLy8gICAgQml0cyBbMTU6OF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMzE6MjRdIG9mIHRoZSByZXN1bHQuIFxuCi8vLyAgICBCaXRzIFsyMzoxNl0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbNDc6NDBdIG9mIHRoZSByZXN1bHQuIFxuCi8vLyAgICBCaXRzIFszMToyNF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbNjM6NTZdIG9mIHRoZSByZXN1bHQuCi8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XSBjb250YWluaW5nIHRoZSBpbnRlcmxlYXZlZAovLy8gICAgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3VucGFja2xvX3BpOChfX202NCBfX20xLCBfX202NCBfX20yKQp7CiAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3B1bnBja2xidygoX192OHFpKV9fbTEsIChfX3Y4cWkpX19tMik7Cn0KCi8vLyBVbnBhY2tzIHRoZSBsb3dlciAzMiBiaXRzIGZyb20gdHdvIDY0LWJpdCBpbnRlZ2VyIHZlY3RvcnMgb2YKLy8vICAgIFs0IHggaTE2XSBhbmQgaW50ZXJsZWF2ZXMgdGhlbSBpbnRvIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQVU5QQ0tMV0QgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19tMQovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLgovLy8gICAgQml0cyBbMTU6MF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMTU6MF0gb2YgdGhlIHJlc3VsdC4gXG4KLy8vICAgIEJpdHMgWzMxOjE2XSBhcmUgd3JpdHRlbiB0byBiaXRzIFs0NzozMl0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX20yCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uCi8vLyAgICBCaXRzIFsxNTowXSBhcmUgd3JpdHRlbiB0byBiaXRzIFszMToxNl0gb2YgdGhlIHJlc3VsdC4gXG4KLy8vICAgIEJpdHMgWzMxOjE2XSBhcmUgd3JpdHRlbiB0byBiaXRzIFs2Mzo0OF0gb2YgdGhlIHJlc3VsdC4KLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XSBjb250YWluaW5nIHRoZSBpbnRlcmxlYXZlZAovLy8gICAgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3VucGFja2xvX3BpMTYoX19tNjQgX19tMSwgX19tNjQgX19tMikKewogICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wdW5wY2tsd2QoKF9fdjRoaSlfX20xLCAoX192NGhpKV9fbTIpOwp9CgovLy8gVW5wYWNrcyB0aGUgbG93ZXIgMzIgYml0cyBmcm9tIHR3byA2NC1iaXQgaW50ZWdlciB2ZWN0b3JzIG9mCi8vLyAgICBbMiB4IGkzMl0gYW5kIGludGVybGVhdmVzIHRoZW0gaW50byBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFVOUENLTERRIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fbTEKLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFsyIHggaTMyXS4gVGhlIGxvd2VyIDMyIGJpdHMgYXJlIHdyaXR0ZW4gdG8KLy8vICAgIHRoZSBsb3dlciAzMiBiaXRzIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19tMgovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdLiBUaGUgbG93ZXIgMzIgYml0cyBhcmUgd3JpdHRlbiB0bwovLy8gICAgdGhlIHVwcGVyIDMyIGJpdHMgb2YgdGhlIHJlc3VsdC4KLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFsyIHggaTMyXSBjb250YWluaW5nIHRoZSBpbnRlcmxlYXZlZAovLy8gICAgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3VucGFja2xvX3BpMzIoX19tNjQgX19tMSwgX19tNjQgX19tMikKewogICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wdW5wY2tsZHEoKF9fdjJzaSlfX20xLCAoX192MnNpKV9fbTIpOwp9CgovLy8gQWRkcyBlYWNoIDgtYml0IGludGVnZXIgZWxlbWVudCBvZiB0aGUgZmlyc3QgNjQtYml0IGludGVnZXIgdmVjdG9yCi8vLyAgICBvZiBbOCB4IGk4XSB0byB0aGUgY29ycmVzcG9uZGluZyA4LWJpdCBpbnRlZ2VyIGVsZW1lbnQgb2YgdGhlIHNlY29uZAovLy8gICAgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdLiBUaGUgbG93ZXIgOCBiaXRzIG9mIHRoZSByZXN1bHRzIGFyZQovLy8gICAgcGFja2VkIGludG8gYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUEFEREIgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19tMQovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0uCi8vLyBccGFyYW0gX19tMgovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0uCi8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XSBjb250YWluaW5nIHRoZSBzdW1zIG9mIGJvdGgKLy8vICAgIHBhcmFtZXRlcnMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fYWRkX3BpOChfX202NCBfX20xLCBfX202NCBfX20yKQp7CiAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BhZGRiKChfX3Y4cWkpX19tMSwgKF9fdjhxaSlfX20yKTsKfQoKLy8vIEFkZHMgZWFjaCAxNi1iaXQgaW50ZWdlciBlbGVtZW50IG9mIHRoZSBmaXJzdCA2NC1iaXQgaW50ZWdlciB2ZWN0b3IKLy8vICAgIG9mIFs0IHggaTE2XSB0byB0aGUgY29ycmVzcG9uZGluZyAxNi1iaXQgaW50ZWdlciBlbGVtZW50IG9mIHRoZSBzZWNvbmQKLy8vICAgIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uIFRoZSBsb3dlciAxNiBiaXRzIG9mIHRoZSByZXN1bHRzIGFyZQovLy8gICAgcGFja2VkIGludG8gYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBBRERXIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fbTEKLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4KLy8vIFxwYXJhbSBfX20yCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uCi8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyB0aGUgc3VtcyBvZiBib3RoCi8vLyAgICBwYXJhbWV0ZXJzLgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2FkZF9waTE2KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCnsKICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcGFkZHcoKF9fdjRoaSlfX20xLCAoX192NGhpKV9fbTIpOwp9CgovLy8gQWRkcyBlYWNoIDMyLWJpdCBpbnRlZ2VyIGVsZW1lbnQgb2YgdGhlIGZpcnN0IDY0LWJpdCBpbnRlZ2VyIHZlY3RvcgovLy8gICAgb2YgWzIgeCBpMzJdIHRvIHRoZSBjb3JyZXNwb25kaW5nIDMyLWJpdCBpbnRlZ2VyIGVsZW1lbnQgb2YgdGhlIHNlY29uZAovLy8gICAgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFsyIHggaTMyXS4gVGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhlIHJlc3VsdHMgYXJlCi8vLyAgICBwYWNrZWQgaW50byBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUEFEREQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19tMQovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdLgovLy8gXHBhcmFtIF9fbTIKLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFsyIHggaTMyXS4KLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFsyIHggaTMyXSBjb250YWluaW5nIHRoZSBzdW1zIG9mIGJvdGgKLy8vICAgIHBhcmFtZXRlcnMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fYWRkX3BpMzIoX19tNjQgX19tMSwgX19tNjQgX19tMikKewogICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wYWRkZCgoX192MnNpKV9fbTEsIChfX3Yyc2kpX19tMik7Cn0KCi8vLyBBZGRzIGVhY2ggOC1iaXQgc2lnbmVkIGludGVnZXIgZWxlbWVudCBvZiB0aGUgZmlyc3QgNjQtYml0IGludGVnZXIKLy8vICAgIHZlY3RvciBvZiBbOCB4IGk4XSB0byB0aGUgY29ycmVzcG9uZGluZyA4LWJpdCBzaWduZWQgaW50ZWdlciBlbGVtZW50IG9mCi8vLyAgICB0aGUgc2Vjb25kIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XS4gUG9zaXRpdmUgc3VtcyBncmVhdGVyIHRoYW4KLy8vICAgIDB4N0YgYXJlIHNhdHVyYXRlZCB0byAweDdGLiBOZWdhdGl2ZSBzdW1zIGxlc3MgdGhhbiAweDgwIGFyZSBzYXR1cmF0ZWQgdG8KLy8vICAgIDB4ODAuIFRoZSByZXN1bHRzIGFyZSBwYWNrZWQgaW50byBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQQUREU0IgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19tMQovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0uCi8vLyBccGFyYW0gX19tMgovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0uCi8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XSBjb250YWluaW5nIHRoZSBzYXR1cmF0ZWQgc3VtcwovLy8gICAgb2YgYm90aCBwYXJhbWV0ZXJzLgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2FkZHNfcGk4KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCnsKICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcGFkZHNiKChfX3Y4cWkpX19tMSwgKF9fdjhxaSlfX20yKTsKfQoKLy8vIEFkZHMgZWFjaCAxNi1iaXQgc2lnbmVkIGludGVnZXIgZWxlbWVudCBvZiB0aGUgZmlyc3QgNjQtYml0IGludGVnZXIKLy8vICAgIHZlY3RvciBvZiBbNCB4IGkxNl0gdG8gdGhlIGNvcnJlc3BvbmRpbmcgMTYtYml0IHNpZ25lZCBpbnRlZ2VyIGVsZW1lbnQgb2YKLy8vICAgIHRoZSBzZWNvbmQgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4gUG9zaXRpdmUgc3VtcyBncmVhdGVyIHRoYW4KLy8vICAgIDB4N0ZGRiBhcmUgc2F0dXJhdGVkIHRvIDB4N0ZGRi4gTmVnYXRpdmUgc3VtcyBsZXNzIHRoYW4gMHg4MDAwIGFyZQovLy8gICAgc2F0dXJhdGVkIHRvIDB4ODAwMC4gVGhlIHJlc3VsdHMgYXJlIHBhY2tlZCBpbnRvIGEgNjQtYml0IGludGVnZXIgdmVjdG9yCi8vLyAgICBvZiBbNCB4IGkxNl0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUEFERFNXIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fbTEKLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4KLy8vIFxwYXJhbSBfX20yCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uCi8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyB0aGUgc2F0dXJhdGVkIHN1bXMKLy8vICAgIG9mIGJvdGggcGFyYW1ldGVycy4Kc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9hZGRzX3BpMTYoX19tNjQgX19tMSwgX19tNjQgX19tMikKewogICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wYWRkc3coKF9fdjRoaSlfX20xLCAoX192NGhpKV9fbTIpOwp9CgovLy8gQWRkcyBlYWNoIDgtYml0IHVuc2lnbmVkIGludGVnZXIgZWxlbWVudCBvZiB0aGUgZmlyc3QgNjQtYml0IGludGVnZXIKLy8vICAgIHZlY3RvciBvZiBbOCB4IGk4XSB0byB0aGUgY29ycmVzcG9uZGluZyA4LWJpdCB1bnNpZ25lZCBpbnRlZ2VyIGVsZW1lbnQgb2YKLy8vICAgIHRoZSBzZWNvbmQgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdLiBTdW1zIGdyZWF0ZXIgdGhhbiAweEZGIGFyZQovLy8gICAgc2F0dXJhdGVkIHRvIDB4RkYuIFRoZSByZXN1bHRzIGFyZSBwYWNrZWQgaW50byBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZgovLy8gICAgWzggeCBpOF0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUEFERFVTQiA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX20xCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XS4KLy8vIFxwYXJhbSBfX20yCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XS4KLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdIGNvbnRhaW5pbmcgdGhlIHNhdHVyYXRlZAovLy8gICAgdW5zaWduZWQgc3VtcyBvZiBib3RoIHBhcmFtZXRlcnMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fYWRkc19wdTgoX19tNjQgX19tMSwgX19tNjQgX19tMikKewogICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wYWRkdXNiKChfX3Y4cWkpX19tMSwgKF9fdjhxaSlfX20yKTsKfQoKLy8vIEFkZHMgZWFjaCAxNi1iaXQgdW5zaWduZWQgaW50ZWdlciBlbGVtZW50IG9mIHRoZSBmaXJzdCA2NC1iaXQgaW50ZWdlcgovLy8gICAgdmVjdG9yIG9mIFs0IHggaTE2XSB0byB0aGUgY29ycmVzcG9uZGluZyAxNi1iaXQgdW5zaWduZWQgaW50ZWdlciBlbGVtZW50Ci8vLyAgICBvZiB0aGUgc2Vjb25kIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uIFN1bXMgZ3JlYXRlciB0aGFuCi8vLyAgICAweEZGRkYgYXJlIHNhdHVyYXRlZCB0byAweEZGRkYuIFRoZSByZXN1bHRzIGFyZSBwYWNrZWQgaW50byBhIDY0LWJpdAovLy8gICAgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBBRERVU1cgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19tMQovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLgovLy8gXHBhcmFtIF9fbTIKLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4KLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XSBjb250YWluaW5nIHRoZSBzYXR1cmF0ZWQKLy8vICAgIHVuc2lnbmVkIHN1bXMgb2YgYm90aCBwYXJhbWV0ZXJzLgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2FkZHNfcHUxNihfX202NCBfX20xLCBfX202NCBfX20yKQp7CiAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BhZGR1c3coKF9fdjRoaSlfX20xLCAoX192NGhpKV9fbTIpOwp9CgovLy8gU3VidHJhY3RzIGVhY2ggOC1iaXQgaW50ZWdlciBlbGVtZW50IG9mIHRoZSBzZWNvbmQgNjQtYml0IGludGVnZXIKLy8vICAgIHZlY3RvciBvZiBbOCB4IGk4XSBmcm9tIHRoZSBjb3JyZXNwb25kaW5nIDgtYml0IGludGVnZXIgZWxlbWVudCBvZiB0aGUKLy8vICAgIGZpcnN0IDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XS4gVGhlIGxvd2VyIDggYml0cyBvZiB0aGUgcmVzdWx0cwovLy8gICAgYXJlIHBhY2tlZCBpbnRvIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBTVUJCIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fbTEKLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdIGNvbnRhaW5pbmcgdGhlIG1pbnVlbmRzLgovLy8gXHBhcmFtIF9fbTIKLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdIGNvbnRhaW5pbmcgdGhlIHN1YnRyYWhlbmRzLgovLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0gY29udGFpbmluZyB0aGUgZGlmZmVyZW5jZXMgb2YKLy8vICAgIGJvdGggcGFyYW1ldGVycy4Kc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zdWJfcGk4KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCnsKICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcHN1YmIoKF9fdjhxaSlfX20xLCAoX192OHFpKV9fbTIpOwp9CgovLy8gU3VidHJhY3RzIGVhY2ggMTYtYml0IGludGVnZXIgZWxlbWVudCBvZiB0aGUgc2Vjb25kIDY0LWJpdCBpbnRlZ2VyCi8vLyAgICB2ZWN0b3Igb2YgWzQgeCBpMTZdIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgMTYtYml0IGludGVnZXIgZWxlbWVudCBvZiB0aGUKLy8vICAgIGZpcnN0IDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uIFRoZSBsb3dlciAxNiBiaXRzIG9mIHRoZQovLy8gICAgcmVzdWx0cyBhcmUgcGFja2VkIGludG8gYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBTVUJXIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fbTEKLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XSBjb250YWluaW5nIHRoZSBtaW51ZW5kcy4KLy8vIFxwYXJhbSBfX20yCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyB0aGUgc3VidHJhaGVuZHMuCi8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyB0aGUgZGlmZmVyZW5jZXMgb2YKLy8vICAgIGJvdGggcGFyYW1ldGVycy4Kc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zdWJfcGkxNihfX202NCBfX20xLCBfX202NCBfX20yKQp7CiAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BzdWJ3KChfX3Y0aGkpX19tMSwgKF9fdjRoaSlfX20yKTsKfQoKLy8vIFN1YnRyYWN0cyBlYWNoIDMyLWJpdCBpbnRlZ2VyIGVsZW1lbnQgb2YgdGhlIHNlY29uZCA2NC1iaXQgaW50ZWdlcgovLy8gICAgdmVjdG9yIG9mIFsyIHggaTMyXSBmcm9tIHRoZSBjb3JyZXNwb25kaW5nIDMyLWJpdCBpbnRlZ2VyIGVsZW1lbnQgb2YgdGhlCi8vLyAgICBmaXJzdCA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdLiBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGUKLy8vICAgIHJlc3VsdHMgYXJlIHBhY2tlZCBpbnRvIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFsyIHggaTMyXS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQU1VCRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX20xCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0gY29udGFpbmluZyB0aGUgbWludWVuZHMuCi8vLyBccGFyYW0gX19tMgovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdIGNvbnRhaW5pbmcgdGhlIHN1YnRyYWhlbmRzLgovLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdIGNvbnRhaW5pbmcgdGhlIGRpZmZlcmVuY2VzIG9mCi8vLyAgICBib3RoIHBhcmFtZXRlcnMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc3ViX3BpMzIoX19tNjQgX19tMSwgX19tNjQgX19tMikKewogICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wc3ViZCgoX192MnNpKV9fbTEsIChfX3Yyc2kpX19tMik7Cn0KCi8vLyBTdWJ0cmFjdHMgZWFjaCA4LWJpdCBzaWduZWQgaW50ZWdlciBlbGVtZW50IG9mIHRoZSBzZWNvbmQgNjQtYml0Ci8vLyAgICBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XSBmcm9tIHRoZSBjb3JyZXNwb25kaW5nIDgtYml0IHNpZ25lZCBpbnRlZ2VyCi8vLyAgICBlbGVtZW50IG9mIHRoZSBmaXJzdCA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0uIFBvc2l0aXZlIHJlc3VsdHMKLy8vICAgIGdyZWF0ZXIgdGhhbiAweDdGIGFyZSBzYXR1cmF0ZWQgdG8gMHg3Ri4gTmVnYXRpdmUgcmVzdWx0cyBsZXNzIHRoYW4gMHg4MAovLy8gICAgYXJlIHNhdHVyYXRlZCB0byAweDgwLiBUaGUgcmVzdWx0cyBhcmUgcGFja2VkIGludG8gYSA2NC1iaXQgaW50ZWdlcgovLy8gICAgdmVjdG9yIG9mIFs4IHggaThdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBTVUJTQiA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX20xCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XSBjb250YWluaW5nIHRoZSBtaW51ZW5kcy4KLy8vIFxwYXJhbSBfX20yCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XSBjb250YWluaW5nIHRoZSBzdWJ0cmFoZW5kcy4KLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdIGNvbnRhaW5pbmcgdGhlIHNhdHVyYXRlZAovLy8gICAgZGlmZmVyZW5jZXMgb2YgYm90aCBwYXJhbWV0ZXJzLgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3N1YnNfcGk4KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCnsKICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcHN1YnNiKChfX3Y4cWkpX19tMSwgKF9fdjhxaSlfX20yKTsKfQoKLy8vIFN1YnRyYWN0cyBlYWNoIDE2LWJpdCBzaWduZWQgaW50ZWdlciBlbGVtZW50IG9mIHRoZSBzZWNvbmQgNjQtYml0Ci8vLyAgICBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0gZnJvbSB0aGUgY29ycmVzcG9uZGluZyAxNi1iaXQgc2lnbmVkIGludGVnZXIKLy8vICAgIGVsZW1lbnQgb2YgdGhlIGZpcnN0IDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uIFBvc2l0aXZlIHJlc3VsdHMKLy8vICAgIGdyZWF0ZXIgdGhhbiAweDdGRkYgYXJlIHNhdHVyYXRlZCB0byAweDdGRkYuIE5lZ2F0aXZlIHJlc3VsdHMgbGVzcyB0aGFuCi8vLyAgICAweDgwMDAgYXJlIHNhdHVyYXRlZCB0byAweDgwMDAuIFRoZSByZXN1bHRzIGFyZSBwYWNrZWQgaW50byBhIDY0LWJpdAovLy8gICAgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBTVUJTVyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX20xCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyB0aGUgbWludWVuZHMuCi8vLyBccGFyYW0gX19tMgovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcgdGhlIHN1YnRyYWhlbmRzLgovLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcgdGhlIHNhdHVyYXRlZAovLy8gICAgZGlmZmVyZW5jZXMgb2YgYm90aCBwYXJhbWV0ZXJzLgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3N1YnNfcGkxNihfX202NCBfX20xLCBfX202NCBfX20yKQp7CiAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BzdWJzdygoX192NGhpKV9fbTEsIChfX3Y0aGkpX19tMik7Cn0KCi8vLyBTdWJ0cmFjdHMgZWFjaCA4LWJpdCB1bnNpZ25lZCBpbnRlZ2VyIGVsZW1lbnQgb2YgdGhlIHNlY29uZCA2NC1iaXQKLy8vICAgIGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgOC1iaXQgdW5zaWduZWQgaW50ZWdlcgovLy8gICAgZWxlbWVudCBvZiB0aGUgZmlyc3QgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdLgovLy8KLy8vICAgIElmIGFuIGVsZW1lbnQgb2YgdGhlIGZpcnN0IHZlY3RvciBpcyBsZXNzIHRoYW4gdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudAovLy8gICAgb2YgdGhlIHNlY29uZCB2ZWN0b3IsIHRoZSByZXN1bHQgaXMgc2F0dXJhdGVkIHRvIDAuIFRoZSByZXN1bHRzIGFyZQovLy8gICAgcGFja2VkIGludG8gYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFNVQlVTQiA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX20xCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XSBjb250YWluaW5nIHRoZSBtaW51ZW5kcy4KLy8vIFxwYXJhbSBfX20yCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XSBjb250YWluaW5nIHRoZSBzdWJ0cmFoZW5kcy4KLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdIGNvbnRhaW5pbmcgdGhlIHNhdHVyYXRlZAovLy8gICAgZGlmZmVyZW5jZXMgb2YgYm90aCBwYXJhbWV0ZXJzLgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3N1YnNfcHU4KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCnsKICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcHN1YnVzYigoX192OHFpKV9fbTEsIChfX3Y4cWkpX19tMik7Cn0KCi8vLyBTdWJ0cmFjdHMgZWFjaCAxNi1iaXQgdW5zaWduZWQgaW50ZWdlciBlbGVtZW50IG9mIHRoZSBzZWNvbmQgNjQtYml0Ci8vLyAgICBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0gZnJvbSB0aGUgY29ycmVzcG9uZGluZyAxNi1iaXQgdW5zaWduZWQKLy8vICAgIGludGVnZXIgZWxlbWVudCBvZiB0aGUgZmlyc3QgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4KLy8vCi8vLyAgICBJZiBhbiBlbGVtZW50IG9mIHRoZSBmaXJzdCB2ZWN0b3IgaXMgbGVzcyB0aGFuIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQKLy8vICAgIG9mIHRoZSBzZWNvbmQgdmVjdG9yLCB0aGUgcmVzdWx0IGlzIHNhdHVyYXRlZCB0byAwLiBUaGUgcmVzdWx0cyBhcmUKLy8vICAgIHBhY2tlZCBpbnRvIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQU1VCVVNXIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fbTEKLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XSBjb250YWluaW5nIHRoZSBtaW51ZW5kcy4KLy8vIFxwYXJhbSBfX20yCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyB0aGUgc3VidHJhaGVuZHMuCi8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyB0aGUgc2F0dXJhdGVkCi8vLyAgICBkaWZmZXJlbmNlcyBvZiBib3RoIHBhcmFtZXRlcnMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc3Vic19wdTE2KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCnsKICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcHN1YnVzdygoX192NGhpKV9fbTEsIChfX3Y0aGkpX19tMik7Cn0KCi8vLyBNdWx0aXBsaWVzIGVhY2ggMTYtYml0IHNpZ25lZCBpbnRlZ2VyIGVsZW1lbnQgb2YgdGhlIGZpcnN0IDY0LWJpdAovLy8gICAgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdIGJ5IHRoZSBjb3JyZXNwb25kaW5nIDE2LWJpdCBzaWduZWQgaW50ZWdlcgovLy8gICAgZWxlbWVudCBvZiB0aGUgc2Vjb25kIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0gYW5kIGdldCBmb3VyCi8vLyAgICAzMi1iaXQgcHJvZHVjdHMuIEFkZHMgYWRqYWNlbnQgcGFpcnMgb2YgcHJvZHVjdHMgdG8gZ2V0IHR3byAzMi1iaXQgc3Vtcy4KLy8vICAgIFRoZSBsb3dlciAzMiBiaXRzIG9mIHRoZXNlIHR3byBzdW1zIGFyZSBwYWNrZWQgaW50byBhIDY0LWJpdCBpbnRlZ2VyCi8vLyAgICB2ZWN0b3Igb2YgWzIgeCBpMzJdLgovLy8KLy8vICAgIEZvciBleGFtcGxlLCBiaXRzIFsxNTowXSBvZiBib3RoIHBhcmFtZXRlcnMgYXJlIG11bHRpcGxpZWQsIGJpdHMgWzMxOjE2XQovLy8gICAgb2YgYm90aCBwYXJhbWV0ZXJzIGFyZSBtdWx0aXBsaWVkLCBhbmQgdGhlIHN1bSBvZiBib3RoIHJlc3VsdHMgaXMgd3JpdHRlbgovLy8gICAgdG8gYml0cyBbMzE6MF0gb2YgdGhlIHJlc3VsdC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQTUFERFdEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fbTEKLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4KLy8vIFxwYXJhbSBfX20yCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uCi8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0gY29udGFpbmluZyB0aGUgc3VtcyBvZgovLy8gICAgcHJvZHVjdHMgb2YgYm90aCBwYXJhbWV0ZXJzLgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX21hZGRfcGkxNihfX202NCBfX20xLCBfX202NCBfX20yKQp7CiAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BtYWRkd2QoKF9fdjRoaSlfX20xLCAoX192NGhpKV9fbTIpOwp9CgovLy8gTXVsdGlwbGllcyBlYWNoIDE2LWJpdCBzaWduZWQgaW50ZWdlciBlbGVtZW50IG9mIHRoZSBmaXJzdCA2NC1iaXQKLy8vICAgIGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XSBieSB0aGUgY29ycmVzcG9uZGluZyAxNi1iaXQgc2lnbmVkIGludGVnZXIKLy8vICAgIGVsZW1lbnQgb2YgdGhlIHNlY29uZCA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLiBQYWNrcyB0aGUgdXBwZXIKLy8vICAgIDE2IGJpdHMgb2YgdGhlIDMyLWJpdCBwcm9kdWN0cyBpbnRvIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQTVVMSFcgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19tMQovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLgovLy8gXHBhcmFtIF9fbTIKLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4KLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XSBjb250YWluaW5nIHRoZSB1cHBlciAxNiBiaXRzCi8vLyAgICBvZiB0aGUgcHJvZHVjdHMgb2YgYm90aCBwYXJhbWV0ZXJzLgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX211bGhpX3BpMTYoX19tNjQgX19tMSwgX19tNjQgX19tMikKewogICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wbXVsaHcoKF9fdjRoaSlfX20xLCAoX192NGhpKV9fbTIpOwp9CgovLy8gTXVsdGlwbGllcyBlYWNoIDE2LWJpdCBzaWduZWQgaW50ZWdlciBlbGVtZW50IG9mIHRoZSBmaXJzdCA2NC1iaXQKLy8vICAgIGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XSBieSB0aGUgY29ycmVzcG9uZGluZyAxNi1iaXQgc2lnbmVkIGludGVnZXIKLy8vICAgIGVsZW1lbnQgb2YgdGhlIHNlY29uZCA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLiBQYWNrcyB0aGUgbG93ZXIKLy8vICAgIDE2IGJpdHMgb2YgdGhlIDMyLWJpdCBwcm9kdWN0cyBpbnRvIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQTVVMTFcgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19tMQovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLgovLy8gXHBhcmFtIF9fbTIKLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4KLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XSBjb250YWluaW5nIHRoZSBsb3dlciAxNiBiaXRzCi8vLyAgICBvZiB0aGUgcHJvZHVjdHMgb2YgYm90aCBwYXJhbWV0ZXJzLgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX211bGxvX3BpMTYoX19tNjQgX19tMSwgX19tNjQgX19tMikKewogICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wbXVsbHcoKF9fdjRoaSlfX20xLCAoX192NGhpKV9fbTIpOwp9CgovLy8gTGVmdC1zaGlmdHMgZWFjaCAxNi1iaXQgc2lnbmVkIGludGVnZXIgZWxlbWVudCBvZiB0aGUgZmlyc3QKLy8vICAgIHBhcmFtZXRlciwgd2hpY2ggaXMgYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLCBieSB0aGUgbnVtYmVyCi8vLyAgICBvZiBiaXRzIHNwZWNpZmllZCBieSB0aGUgc2Vjb25kIHBhcmFtZXRlciwgd2hpY2ggaXMgYSA2NC1iaXQgaW50ZWdlci4gVGhlCi8vLyAgICBsb3dlciAxNiBiaXRzIG9mIHRoZSByZXN1bHRzIGFyZSBwYWNrZWQgaW50byBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZgovLy8gICAgWzQgeCBpMTZdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBTTExXIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fbQovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLgovLy8gXHBhcmFtIF9fY291bnQKLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGludGVycHJldGVkIGFzIGEgc2luZ2xlIDY0LWJpdCBpbnRlZ2VyLgovLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcgdGhlIGxlZnQtc2hpZnRlZAovLy8gICAgdmFsdWVzLiBJZiBcYSBfX2NvdW50IGlzIGdyZWF0ZXIgb3IgZXF1YWwgdG8gMTYsIHRoZSByZXN1bHQgaXMgc2V0IHRvIGFsbAovLy8gICAgMC4Kc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zbGxfcGkxNihfX202NCBfX20sIF9fbTY0IF9fY291bnQpCnsKICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcHNsbHcoKF9fdjRoaSlfX20sIF9fY291bnQpOwp9CgovLy8gTGVmdC1zaGlmdHMgZWFjaCAxNi1iaXQgc2lnbmVkIGludGVnZXIgZWxlbWVudCBvZiBhIDY0LWJpdCBpbnRlZ2VyCi8vLyAgICB2ZWN0b3Igb2YgWzQgeCBpMTZdIGJ5IHRoZSBudW1iZXIgb2YgYml0cyBzcGVjaWZpZWQgYnkgYSAzMi1iaXQgaW50ZWdlci4KLy8vICAgIFRoZSBsb3dlciAxNiBiaXRzIG9mIHRoZSByZXN1bHRzIGFyZSBwYWNrZWQgaW50byBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvcgovLy8gICAgb2YgWzQgeCBpMTZdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBTTExXIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fbQovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLgovLy8gXHBhcmFtIF9fY291bnQKLy8vICAgIEEgMzItYml0IGludGVnZXIgdmFsdWUuCi8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyB0aGUgbGVmdC1zaGlmdGVkCi8vLyAgICB2YWx1ZXMuIElmIFxhIF9fY291bnQgaXMgZ3JlYXRlciBvciBlcXVhbCB0byAxNiwgdGhlIHJlc3VsdCBpcyBzZXQgdG8gYWxsCi8vLyAgICAwLgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3NsbGlfcGkxNihfX202NCBfX20sIGludCBfX2NvdW50KQp7CiAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BzbGx3aSgoX192NGhpKV9fbSwgX19jb3VudCk7Cn0KCi8vLyBMZWZ0LXNoaWZ0cyBlYWNoIDMyLWJpdCBzaWduZWQgaW50ZWdlciBlbGVtZW50IG9mIHRoZSBmaXJzdAovLy8gICAgcGFyYW1ldGVyLCB3aGljaCBpcyBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0sIGJ5IHRoZSBudW1iZXIKLy8vICAgIG9mIGJpdHMgc3BlY2lmaWVkIGJ5IHRoZSBzZWNvbmQgcGFyYW1ldGVyLCB3aGljaCBpcyBhIDY0LWJpdCBpbnRlZ2VyLiBUaGUKLy8vICAgIGxvd2VyIDMyIGJpdHMgb2YgdGhlIHJlc3VsdHMgYXJlIHBhY2tlZCBpbnRvIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mCi8vLyAgICBbMiB4IGkzMl0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFNMTEQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19tCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0uCi8vLyBccGFyYW0gX19jb3VudAovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgaW50ZXJwcmV0ZWQgYXMgYSBzaW5nbGUgNjQtYml0IGludGVnZXIuCi8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0gY29udGFpbmluZyB0aGUgbGVmdC1zaGlmdGVkCi8vLyAgICB2YWx1ZXMuIElmIFxhIF9fY291bnQgaXMgZ3JlYXRlciBvciBlcXVhbCB0byAzMiwgdGhlIHJlc3VsdCBpcyBzZXQgdG8gYWxsCi8vLyAgICAwLgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3NsbF9waTMyKF9fbTY0IF9fbSwgX19tNjQgX19jb3VudCkKewogICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wc2xsZCgoX192MnNpKV9fbSwgX19jb3VudCk7Cn0KCi8vLyBMZWZ0LXNoaWZ0cyBlYWNoIDMyLWJpdCBzaWduZWQgaW50ZWdlciBlbGVtZW50IG9mIGEgNjQtYml0IGludGVnZXIKLy8vICAgIHZlY3RvciBvZiBbMiB4IGkzMl0gYnkgdGhlIG51bWJlciBvZiBiaXRzIHNwZWNpZmllZCBieSBhIDMyLWJpdCBpbnRlZ2VyLgovLy8gICAgVGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhlIHJlc3VsdHMgYXJlIHBhY2tlZCBpbnRvIGEgNjQtYml0IGludGVnZXIgdmVjdG9yCi8vLyAgICBvZiBbMiB4IGkzMl0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFNMTEQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19tCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0uCi8vLyBccGFyYW0gX19jb3VudAovLy8gICAgQSAzMi1iaXQgaW50ZWdlciB2YWx1ZS4KLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFsyIHggaTMyXSBjb250YWluaW5nIHRoZSBsZWZ0LXNoaWZ0ZWQKLy8vICAgIHZhbHVlcy4gSWYgXGEgX19jb3VudCBpcyBncmVhdGVyIG9yIGVxdWFsIHRvIDMyLCB0aGUgcmVzdWx0IGlzIHNldCB0byBhbGwKLy8vICAgIDAuCnN0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc2xsaV9waTMyKF9fbTY0IF9fbSwgaW50IF9fY291bnQpCnsKICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcHNsbGRpKChfX3Yyc2kpX19tLCBfX2NvdW50KTsKfQoKLy8vIExlZnQtc2hpZnRzIHRoZSBmaXJzdCA2NC1iaXQgaW50ZWdlciBwYXJhbWV0ZXIgYnkgdGhlIG51bWJlciBvZiBiaXRzCi8vLyAgICBzcGVjaWZpZWQgYnkgdGhlIHNlY29uZCA2NC1iaXQgaW50ZWdlciBwYXJhbWV0ZXIuIFRoZSBsb3dlciA2NCBiaXRzIG9mCi8vLyAgICByZXN1bHQgYXJlIHJldHVybmVkLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBTTExRIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fbQovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgaW50ZXJwcmV0ZWQgYXMgYSBzaW5nbGUgNjQtYml0IGludGVnZXIuCi8vLyBccGFyYW0gX19jb3VudAovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgaW50ZXJwcmV0ZWQgYXMgYSBzaW5nbGUgNjQtYml0IGludGVnZXIuCi8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBsZWZ0LXNoaWZ0ZWQgdmFsdWUuIElmCi8vLyAgICAgXGEgX19jb3VudCBpcyBncmVhdGVyIG9yIGVxdWFsIHRvIDY0LCB0aGUgcmVzdWx0IGlzIHNldCB0byAwLgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3NsbF9zaTY0KF9fbTY0IF9fbSwgX19tNjQgX19jb3VudCkKewogICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wc2xscSgoX192MWRpKV9fbSwgX19jb3VudCk7Cn0KCi8vLyBMZWZ0LXNoaWZ0cyB0aGUgZmlyc3QgcGFyYW1ldGVyLCB3aGljaCBpcyBhIDY0LWJpdCBpbnRlZ2VyLCBieSB0aGUKLy8vICAgIG51bWJlciBvZiBiaXRzIHNwZWNpZmllZCBieSB0aGUgc2Vjb25kIHBhcmFtZXRlciwgd2hpY2ggaXMgYSAzMi1iaXQKLy8vICAgIGludGVnZXIuIFRoZSBsb3dlciA2NCBiaXRzIG9mIHJlc3VsdCBhcmUgcmV0dXJuZWQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFNMTFEgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19tCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBpbnRlcnByZXRlZCBhcyBhIHNpbmdsZSA2NC1iaXQgaW50ZWdlci4KLy8vIFxwYXJhbSBfX2NvdW50Ci8vLyAgICBBIDMyLWJpdCBpbnRlZ2VyIHZhbHVlLgovLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgbGVmdC1zaGlmdGVkIHZhbHVlLiBJZgovLy8gICAgIFxhIF9fY291bnQgaXMgZ3JlYXRlciBvciBlcXVhbCB0byA2NCwgdGhlIHJlc3VsdCBpcyBzZXQgdG8gMC4Kc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zbGxpX3NpNjQoX19tNjQgX19tLCBpbnQgX19jb3VudCkKewogICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wc2xscWkoKF9fdjFkaSlfX20sIF9fY291bnQpOwp9CgovLy8gUmlnaHQtc2hpZnRzIGVhY2ggMTYtYml0IGludGVnZXIgZWxlbWVudCBvZiB0aGUgZmlyc3QgcGFyYW1ldGVyLAovLy8gICAgd2hpY2ggaXMgYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLCBieSB0aGUgbnVtYmVyIG9mIGJpdHMKLy8vICAgIHNwZWNpZmllZCBieSB0aGUgc2Vjb25kIHBhcmFtZXRlciwgd2hpY2ggaXMgYSA2NC1iaXQgaW50ZWdlci4KLy8vCi8vLyAgICBIaWdoLW9yZGVyIGJpdHMgYXJlIGZpbGxlZCB3aXRoIHRoZSBzaWduIGJpdCBvZiB0aGUgaW5pdGlhbCB2YWx1ZSBvZiBlYWNoCi8vLyAgICAxNi1iaXQgZWxlbWVudC4gVGhlIDE2LWJpdCByZXN1bHRzIGFyZSBwYWNrZWQgaW50byBhIDY0LWJpdCBpbnRlZ2VyCi8vLyAgICB2ZWN0b3Igb2YgWzQgeCBpMTZdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBTUkFXIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fbQovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLgovLy8gXHBhcmFtIF9fY291bnQKLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGludGVycHJldGVkIGFzIGEgc2luZ2xlIDY0LWJpdCBpbnRlZ2VyLgovLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcgdGhlIHJpZ2h0LXNoaWZ0ZWQKLy8vICAgIHZhbHVlcy4Kc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zcmFfcGkxNihfX202NCBfX20sIF9fbTY0IF9fY291bnQpCnsKICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcHNyYXcoKF9fdjRoaSlfX20sIF9fY291bnQpOwp9CgovLy8gUmlnaHQtc2hpZnRzIGVhY2ggMTYtYml0IGludGVnZXIgZWxlbWVudCBvZiBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvcgovLy8gICAgb2YgWzQgeCBpMTZdIGJ5IHRoZSBudW1iZXIgb2YgYml0cyBzcGVjaWZpZWQgYnkgYSAzMi1iaXQgaW50ZWdlci4KLy8vCi8vLyAgICBIaWdoLW9yZGVyIGJpdHMgYXJlIGZpbGxlZCB3aXRoIHRoZSBzaWduIGJpdCBvZiB0aGUgaW5pdGlhbCB2YWx1ZSBvZiBlYWNoCi8vLyAgICAxNi1iaXQgZWxlbWVudC4gVGhlIDE2LWJpdCByZXN1bHRzIGFyZSBwYWNrZWQgaW50byBhIDY0LWJpdCBpbnRlZ2VyCi8vLyAgICB2ZWN0b3Igb2YgWzQgeCBpMTZdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBTUkFXIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fbQovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLgovLy8gXHBhcmFtIF9fY291bnQKLy8vICAgIEEgMzItYml0IGludGVnZXIgdmFsdWUuCi8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyB0aGUgcmlnaHQtc2hpZnRlZAovLy8gICAgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3NyYWlfcGkxNihfX202NCBfX20sIGludCBfX2NvdW50KQp7CiAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BzcmF3aSgoX192NGhpKV9fbSwgX19jb3VudCk7Cn0KCi8vLyBSaWdodC1zaGlmdHMgZWFjaCAzMi1iaXQgaW50ZWdlciBlbGVtZW50IG9mIHRoZSBmaXJzdCBwYXJhbWV0ZXIsCi8vLyAgICB3aGljaCBpcyBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0sIGJ5IHRoZSBudW1iZXIgb2YgYml0cwovLy8gICAgc3BlY2lmaWVkIGJ5IHRoZSBzZWNvbmQgcGFyYW1ldGVyLCB3aGljaCBpcyBhIDY0LWJpdCBpbnRlZ2VyLgovLy8KLy8vICAgIEhpZ2gtb3JkZXIgYml0cyBhcmUgZmlsbGVkIHdpdGggdGhlIHNpZ24gYml0IG9mIHRoZSBpbml0aWFsIHZhbHVlIG9mIGVhY2gKLy8vICAgIDMyLWJpdCBlbGVtZW50LiBUaGUgMzItYml0IHJlc3VsdHMgYXJlIHBhY2tlZCBpbnRvIGEgNjQtYml0IGludGVnZXIKLy8vICAgIHZlY3RvciBvZiBbMiB4IGkzMl0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFNSQUQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19tCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0uCi8vLyBccGFyYW0gX19jb3VudAovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgaW50ZXJwcmV0ZWQgYXMgYSBzaW5nbGUgNjQtYml0IGludGVnZXIuCi8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0gY29udGFpbmluZyB0aGUgcmlnaHQtc2hpZnRlZAovLy8gICAgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3NyYV9waTMyKF9fbTY0IF9fbSwgX19tNjQgX19jb3VudCkKewogICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wc3JhZCgoX192MnNpKV9fbSwgX19jb3VudCk7Cn0KCi8vLyBSaWdodC1zaGlmdHMgZWFjaCAzMi1iaXQgaW50ZWdlciBlbGVtZW50IG9mIGEgNjQtYml0IGludGVnZXIgdmVjdG9yCi8vLyAgICBvZiBbMiB4IGkzMl0gYnkgdGhlIG51bWJlciBvZiBiaXRzIHNwZWNpZmllZCBieSBhIDMyLWJpdCBpbnRlZ2VyLgovLy8KLy8vICAgIEhpZ2gtb3JkZXIgYml0cyBhcmUgZmlsbGVkIHdpdGggdGhlIHNpZ24gYml0IG9mIHRoZSBpbml0aWFsIHZhbHVlIG9mIGVhY2gKLy8vICAgIDMyLWJpdCBlbGVtZW50LiBUaGUgMzItYml0IHJlc3VsdHMgYXJlIHBhY2tlZCBpbnRvIGEgNjQtYml0IGludGVnZXIKLy8vICAgIHZlY3RvciBvZiBbMiB4IGkzMl0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFNSQUQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19tCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0uCi8vLyBccGFyYW0gX19jb3VudAovLy8gICAgQSAzMi1iaXQgaW50ZWdlciB2YWx1ZS4KLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFsyIHggaTMyXSBjb250YWluaW5nIHRoZSByaWdodC1zaGlmdGVkCi8vLyAgICB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc3JhaV9waTMyKF9fbTY0IF9fbSwgaW50IF9fY291bnQpCnsKICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcHNyYWRpKChfX3Yyc2kpX19tLCBfX2NvdW50KTsKfQoKLy8vIFJpZ2h0LXNoaWZ0cyBlYWNoIDE2LWJpdCBpbnRlZ2VyIGVsZW1lbnQgb2YgdGhlIGZpcnN0IHBhcmFtZXRlciwKLy8vICAgIHdoaWNoIGlzIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XSwgYnkgdGhlIG51bWJlciBvZiBiaXRzCi8vLyAgICBzcGVjaWZpZWQgYnkgdGhlIHNlY29uZCBwYXJhbWV0ZXIsIHdoaWNoIGlzIGEgNjQtYml0IGludGVnZXIuCi8vLwovLy8gICAgSGlnaC1vcmRlciBiaXRzIGFyZSBjbGVhcmVkLiBUaGUgMTYtYml0IHJlc3VsdHMgYXJlIHBhY2tlZCBpbnRvIGEgNjQtYml0Ci8vLyAgICBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFNSTFcgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19tCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uCi8vLyBccGFyYW0gX19jb3VudAovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgaW50ZXJwcmV0ZWQgYXMgYSBzaW5nbGUgNjQtYml0IGludGVnZXIuCi8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyB0aGUgcmlnaHQtc2hpZnRlZAovLy8gICAgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3NybF9waTE2KF9fbTY0IF9fbSwgX19tNjQgX19jb3VudCkKewogICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wc3JsdygoX192NGhpKV9fbSwgX19jb3VudCk7Cn0KCi8vLyBSaWdodC1zaGlmdHMgZWFjaCAxNi1iaXQgaW50ZWdlciBlbGVtZW50IG9mIGEgNjQtYml0IGludGVnZXIgdmVjdG9yCi8vLyAgICBvZiBbNCB4IGkxNl0gYnkgdGhlIG51bWJlciBvZiBiaXRzIHNwZWNpZmllZCBieSBhIDMyLWJpdCBpbnRlZ2VyLgovLy8KLy8vICAgIEhpZ2gtb3JkZXIgYml0cyBhcmUgY2xlYXJlZC4gVGhlIDE2LWJpdCByZXN1bHRzIGFyZSBwYWNrZWQgaW50byBhIDY0LWJpdAovLy8gICAgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBTUkxXIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fbQovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLgovLy8gXHBhcmFtIF9fY291bnQKLy8vICAgIEEgMzItYml0IGludGVnZXIgdmFsdWUuCi8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyB0aGUgcmlnaHQtc2hpZnRlZAovLy8gICAgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3NybGlfcGkxNihfX202NCBfX20sIGludCBfX2NvdW50KQp7CiAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3Bzcmx3aSgoX192NGhpKV9fbSwgX19jb3VudCk7Cn0KCi8vLyBSaWdodC1zaGlmdHMgZWFjaCAzMi1iaXQgaW50ZWdlciBlbGVtZW50IG9mIHRoZSBmaXJzdCBwYXJhbWV0ZXIsCi8vLyAgICB3aGljaCBpcyBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0sIGJ5IHRoZSBudW1iZXIgb2YgYml0cwovLy8gICAgc3BlY2lmaWVkIGJ5IHRoZSBzZWNvbmQgcGFyYW1ldGVyLCB3aGljaCBpcyBhIDY0LWJpdCBpbnRlZ2VyLgovLy8KLy8vICAgIEhpZ2gtb3JkZXIgYml0cyBhcmUgY2xlYXJlZC4gVGhlIDMyLWJpdCByZXN1bHRzIGFyZSBwYWNrZWQgaW50byBhIDY0LWJpdAovLy8gICAgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBTUkxEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fbQovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdLgovLy8gXHBhcmFtIF9fY291bnQKLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGludGVycHJldGVkIGFzIGEgc2luZ2xlIDY0LWJpdCBpbnRlZ2VyLgovLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdIGNvbnRhaW5pbmcgdGhlIHJpZ2h0LXNoaWZ0ZWQKLy8vICAgIHZhbHVlcy4Kc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zcmxfcGkzMihfX202NCBfX20sIF9fbTY0IF9fY291bnQpCnsKICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcHNybGQoKF9fdjJzaSlfX20sIF9fY291bnQpOwp9CgovLy8gUmlnaHQtc2hpZnRzIGVhY2ggMzItYml0IGludGVnZXIgZWxlbWVudCBvZiBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvcgovLy8gICAgb2YgWzIgeCBpMzJdIGJ5IHRoZSBudW1iZXIgb2YgYml0cyBzcGVjaWZpZWQgYnkgYSAzMi1iaXQgaW50ZWdlci4KLy8vCi8vLyAgICBIaWdoLW9yZGVyIGJpdHMgYXJlIGNsZWFyZWQuIFRoZSAzMi1iaXQgcmVzdWx0cyBhcmUgcGFja2VkIGludG8gYSA2NC1iaXQKLy8vICAgIGludGVnZXIgdmVjdG9yIG9mIFsyIHggaTMyXS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQU1JMRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX20KLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFsyIHggaTMyXS4KLy8vIFxwYXJhbSBfX2NvdW50Ci8vLyAgICBBIDMyLWJpdCBpbnRlZ2VyIHZhbHVlLgovLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdIGNvbnRhaW5pbmcgdGhlIHJpZ2h0LXNoaWZ0ZWQKLy8vICAgIHZhbHVlcy4Kc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zcmxpX3BpMzIoX19tNjQgX19tLCBpbnQgX19jb3VudCkKewogICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wc3JsZGkoKF9fdjJzaSlfX20sIF9fY291bnQpOwp9CgovLy8gUmlnaHQtc2hpZnRzIHRoZSBmaXJzdCA2NC1iaXQgaW50ZWdlciBwYXJhbWV0ZXIgYnkgdGhlIG51bWJlciBvZiBiaXRzCi8vLyAgICBzcGVjaWZpZWQgYnkgdGhlIHNlY29uZCA2NC1iaXQgaW50ZWdlciBwYXJhbWV0ZXIuCi8vLwovLy8gICAgSGlnaC1vcmRlciBiaXRzIGFyZSBjbGVhcmVkLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBTUkxRIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fbQovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgaW50ZXJwcmV0ZWQgYXMgYSBzaW5nbGUgNjQtYml0IGludGVnZXIuCi8vLyBccGFyYW0gX19jb3VudAovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgaW50ZXJwcmV0ZWQgYXMgYSBzaW5nbGUgNjQtYml0IGludGVnZXIuCi8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSByaWdodC1zaGlmdGVkIHZhbHVlLgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3NybF9zaTY0KF9fbTY0IF9fbSwgX19tNjQgX19jb3VudCkKewogICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wc3JscSgoX192MWRpKV9fbSwgX19jb3VudCk7Cn0KCi8vLyBSaWdodC1zaGlmdHMgdGhlIGZpcnN0IHBhcmFtZXRlciwgd2hpY2ggaXMgYSA2NC1iaXQgaW50ZWdlciwgYnkgdGhlCi8vLyAgICBudW1iZXIgb2YgYml0cyBzcGVjaWZpZWQgYnkgdGhlIHNlY29uZCBwYXJhbWV0ZXIsIHdoaWNoIGlzIGEgMzItYml0Ci8vLyAgICBpbnRlZ2VyLgovLy8KLy8vICAgIEhpZ2gtb3JkZXIgYml0cyBhcmUgY2xlYXJlZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQU1JMUSA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX20KLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGludGVycHJldGVkIGFzIGEgc2luZ2xlIDY0LWJpdCBpbnRlZ2VyLgovLy8gXHBhcmFtIF9fY291bnQKLy8vICAgIEEgMzItYml0IGludGVnZXIgdmFsdWUuCi8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSByaWdodC1zaGlmdGVkIHZhbHVlLgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3NybGlfc2k2NChfX202NCBfX20sIGludCBfX2NvdW50KQp7CiAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BzcmxxaSgoX192MWRpKV9fbSwgX19jb3VudCk7Cn0KCi8vLyBQZXJmb3JtcyBhIGJpdHdpc2UgQU5EIG9mIHR3byA2NC1iaXQgaW50ZWdlciB2ZWN0b3JzLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBBTkQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19tMQovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IuCi8vLyBccGFyYW0gX19tMgovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IuCi8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBiaXR3aXNlIEFORCBvZiBib3RoCi8vLyAgICBwYXJhbWV0ZXJzLgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2FuZF9zaTY0KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCnsKICAgIHJldHVybiBfX2J1aWx0aW5faWEzMl9wYW5kKChfX3YxZGkpX19tMSwgKF9fdjFkaSlfX20yKTsKfQoKLy8vIFBlcmZvcm1zIGEgYml0d2lzZSBOT1Qgb2YgdGhlIGZpcnN0IDY0LWJpdCBpbnRlZ2VyIHZlY3RvciwgYW5kIHRoZW4KLy8vICAgIHBlcmZvcm1zIGEgYml0d2lzZSBBTkQgb2YgdGhlIGludGVybWVkaWF0ZSByZXN1bHQgYW5kIHRoZSBzZWNvbmQgNjQtYml0Ci8vLyAgICBpbnRlZ2VyIHZlY3Rvci4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQQU5ETiA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX20xCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3Rvci4gVGhlIG9uZSdzIGNvbXBsZW1lbnQgb2YgdGhpcyBwYXJhbWV0ZXIgaXMgdXNlZAovLy8gICAgaW4gdGhlIGJpdHdpc2UgQU5ELgovLy8gXHBhcmFtIF9fbTIKLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yLgovLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgYml0d2lzZSBBTkQgb2YgdGhlIHNlY29uZAovLy8gICAgcGFyYW1ldGVyIGFuZCB0aGUgb25lJ3MgY29tcGxlbWVudCBvZiB0aGUgZmlyc3QgcGFyYW1ldGVyLgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2FuZG5vdF9zaTY0KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCnsKICAgIHJldHVybiBfX2J1aWx0aW5faWEzMl9wYW5kbigoX192MWRpKV9fbTEsIChfX3YxZGkpX19tMik7Cn0KCi8vLyBQZXJmb3JtcyBhIGJpdHdpc2UgT1Igb2YgdHdvIDY0LWJpdCBpbnRlZ2VyIHZlY3RvcnMuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUE9SIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fbTEKLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yLgovLy8gXHBhcmFtIF9fbTIKLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yLgovLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgYml0d2lzZSBPUiBvZiBib3RoCi8vLyAgICBwYXJhbWV0ZXJzLgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX29yX3NpNjQoX19tNjQgX19tMSwgX19tNjQgX19tMikKewogICAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3BvcigoX192MWRpKV9fbTEsIChfX3YxZGkpX19tMik7Cn0KCi8vLyBQZXJmb3JtcyBhIGJpdHdpc2UgZXhjbHVzaXZlIE9SIG9mIHR3byA2NC1iaXQgaW50ZWdlciB2ZWN0b3JzLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBYT1IgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19tMQovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IuCi8vLyBccGFyYW0gX19tMgovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IuCi8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBiaXR3aXNlIGV4Y2x1c2l2ZSBPUiBvZiBib3RoCi8vLyAgICBwYXJhbWV0ZXJzLgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3hvcl9zaTY0KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCnsKICAgIHJldHVybiBfX2J1aWx0aW5faWEzMl9weG9yKChfX3YxZGkpX19tMSwgKF9fdjFkaSlfX20yKTsKfQoKLy8vIENvbXBhcmVzIHRoZSA4LWJpdCBpbnRlZ2VyIGVsZW1lbnRzIG9mIHR3byA2NC1iaXQgaW50ZWdlciB2ZWN0b3JzIG9mCi8vLyAgICBbOCB4IGk4XSB0byBkZXRlcm1pbmUgaWYgdGhlIGVsZW1lbnQgb2YgdGhlIGZpcnN0IHZlY3RvciBpcyBlcXVhbCB0byB0aGUKLy8vICAgIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBvZiB0aGUgc2Vjb25kIHZlY3Rvci4KLy8vCi8vLyAgICBUaGUgY29tcGFyaXNvbiB5aWVsZHMgMCBmb3IgZmFsc2UsIDB4RkYgZm9yIHRydWUuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUENNUEVRQiA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX20xCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XS4KLy8vIFxwYXJhbSBfX20yCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XS4KLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24KLy8vICAgIHJlc3VsdHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY21wZXFfcGk4KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCnsKICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcGNtcGVxYigoX192OHFpKV9fbTEsIChfX3Y4cWkpX19tMik7Cn0KCi8vLyBDb21wYXJlcyB0aGUgMTYtYml0IGludGVnZXIgZWxlbWVudHMgb2YgdHdvIDY0LWJpdCBpbnRlZ2VyIHZlY3RvcnMgb2YKLy8vICAgIFs0IHggaTE2XSB0byBkZXRlcm1pbmUgaWYgdGhlIGVsZW1lbnQgb2YgdGhlIGZpcnN0IHZlY3RvciBpcyBlcXVhbCB0byB0aGUKLy8vICAgIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBvZiB0aGUgc2Vjb25kIHZlY3Rvci4KLy8vCi8vLyAgICBUaGUgY29tcGFyaXNvbiB5aWVsZHMgMCBmb3IgZmFsc2UsIDB4RkZGRiBmb3IgdHJ1ZS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQQ01QRVFXIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fbTEKLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4KLy8vIFxwYXJhbSBfX20yCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uCi8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyB0aGUgY29tcGFyaXNvbgovLy8gICAgcmVzdWx0cy4Kc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jbXBlcV9waTE2KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCnsKICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcGNtcGVxdygoX192NGhpKV9fbTEsIChfX3Y0aGkpX19tMik7Cn0KCi8vLyBDb21wYXJlcyB0aGUgMzItYml0IGludGVnZXIgZWxlbWVudHMgb2YgdHdvIDY0LWJpdCBpbnRlZ2VyIHZlY3RvcnMgb2YKLy8vICAgIFsyIHggaTMyXSB0byBkZXRlcm1pbmUgaWYgdGhlIGVsZW1lbnQgb2YgdGhlIGZpcnN0IHZlY3RvciBpcyBlcXVhbCB0byB0aGUKLy8vICAgIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBvZiB0aGUgc2Vjb25kIHZlY3Rvci4KLy8vCi8vLyAgICBUaGUgY29tcGFyaXNvbiB5aWVsZHMgMCBmb3IgZmFsc2UsIDB4RkZGRkZGRkYgZm9yIHRydWUuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUENNUEVRRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX20xCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0uCi8vLyBccGFyYW0gX19tMgovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdLgovLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24KLy8vICAgIHJlc3VsdHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY21wZXFfcGkzMihfX202NCBfX20xLCBfX202NCBfX20yKQp7CiAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BjbXBlcWQoKF9fdjJzaSlfX20xLCAoX192MnNpKV9fbTIpOwp9CgovLy8gQ29tcGFyZXMgdGhlIDgtYml0IGludGVnZXIgZWxlbWVudHMgb2YgdHdvIDY0LWJpdCBpbnRlZ2VyIHZlY3RvcnMgb2YKLy8vICAgIFs4IHggaThdIHRvIGRldGVybWluZSBpZiB0aGUgZWxlbWVudCBvZiB0aGUgZmlyc3QgdmVjdG9yIGlzIGdyZWF0ZXIgdGhhbgovLy8gICAgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBvZiB0aGUgc2Vjb25kIHZlY3Rvci4KLy8vCi8vLyAgICBUaGUgY29tcGFyaXNvbiB5aWVsZHMgMCBmb3IgZmFsc2UsIDB4RkYgZm9yIHRydWUuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUENNUEdUQiA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX20xCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XS4KLy8vIFxwYXJhbSBfX20yCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XS4KLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24KLy8vICAgIHJlc3VsdHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY21wZ3RfcGk4KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCnsKICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcGNtcGd0YigoX192OHFpKV9fbTEsIChfX3Y4cWkpX19tMik7Cn0KCi8vLyBDb21wYXJlcyB0aGUgMTYtYml0IGludGVnZXIgZWxlbWVudHMgb2YgdHdvIDY0LWJpdCBpbnRlZ2VyIHZlY3RvcnMgb2YKLy8vICAgIFs0IHggaTE2XSB0byBkZXRlcm1pbmUgaWYgdGhlIGVsZW1lbnQgb2YgdGhlIGZpcnN0IHZlY3RvciBpcyBncmVhdGVyIHRoYW4KLy8vICAgIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgb2YgdGhlIHNlY29uZCB2ZWN0b3IuCi8vLwovLy8gICAgVGhlIGNvbXBhcmlzb24geWllbGRzIDAgZm9yIGZhbHNlLCAweEZGRkYgZm9yIHRydWUuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUENNUEdUVyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX20xCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uCi8vLyBccGFyYW0gX19tMgovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLgovLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24KLy8vICAgIHJlc3VsdHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY21wZ3RfcGkxNihfX202NCBfX20xLCBfX202NCBfX20yKQp7CiAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BjbXBndHcoKF9fdjRoaSlfX20xLCAoX192NGhpKV9fbTIpOwp9CgovLy8gQ29tcGFyZXMgdGhlIDMyLWJpdCBpbnRlZ2VyIGVsZW1lbnRzIG9mIHR3byA2NC1iaXQgaW50ZWdlciB2ZWN0b3JzIG9mCi8vLyAgICBbMiB4IGkzMl0gdG8gZGV0ZXJtaW5lIGlmIHRoZSBlbGVtZW50IG9mIHRoZSBmaXJzdCB2ZWN0b3IgaXMgZ3JlYXRlciB0aGFuCi8vLyAgICB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IG9mIHRoZSBzZWNvbmQgdmVjdG9yLgovLy8KLy8vICAgIFRoZSBjb21wYXJpc29uIHlpZWxkcyAwIGZvciBmYWxzZSwgMHhGRkZGRkZGRiBmb3IgdHJ1ZS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQQ01QR1REIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fbTEKLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFsyIHggaTMyXS4KLy8vIFxwYXJhbSBfX20yCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0uCi8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0gY29udGFpbmluZyB0aGUgY29tcGFyaXNvbgovLy8gICAgcmVzdWx0cy4Kc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jbXBndF9waTMyKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCnsKICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcGNtcGd0ZCgoX192MnNpKV9fbTEsIChfX3Yyc2kpX19tMik7Cn0KCi8vLyBDb25zdHJ1Y3RzIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIGluaXRpYWxpemVkIHRvIHplcm8uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFhPUiA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciB3aXRoIGFsbCBlbGVtZW50cyBzZXQgdG8gemVyby4Kc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zZXR6ZXJvX3NpNjQodm9pZCkKewogICAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTY0KXsgMExMIH07Cn0KCi8vLyBDb25zdHJ1Y3RzIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIGluaXRpYWxpemVkIHdpdGggdGhlIHNwZWNpZmllZAovLy8gICAgMzItYml0IGludGVnZXIgdmFsdWVzLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBpcyBhIHV0aWxpdHkgZnVuY3Rpb24gYW5kIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBzcGVjaWZpYwovLy8gICAgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9faTEKLy8vICAgIEEgMzItYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIHRoZSB1cHBlciAzMiBiaXRzIG9mIHRoZQovLy8gICAgcmVzdWx0LgovLy8gXHBhcmFtIF9faTAKLy8vICAgIEEgMzItYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIHRoZSBsb3dlciAzMiBiaXRzIG9mIHRoZQovLy8gICAgcmVzdWx0LgovLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgNjQtYml0IGludGVnZXIgdmVjdG9yLgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3NldF9waTMyKGludCBfX2kxLCBpbnQgX19pMCkKewogICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl92ZWNfaW5pdF92MnNpKF9faTAsIF9faTEpOwp9CgovLy8gQ29uc3RydWN0cyBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBpbml0aWFsaXplZCB3aXRoIHRoZSBzcGVjaWZpZWQKLy8vICAgIDE2LWJpdCBpbnRlZ2VyIHZhbHVlcy4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1dGlsaXR5IGZ1bmN0aW9uIGFuZCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lmaWMKLy8vICAgIGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX3MzCi8vLyAgICBBIDE2LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs2Mzo0OF0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX3MyCi8vLyAgICBBIDE2LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs0NzozMl0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX3MxCi8vLyAgICBBIDE2LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFszMToxNl0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX3MwCi8vLyAgICBBIDE2LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxNTowXSBvZiB0aGUgcmVzdWx0LgovLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgNjQtYml0IGludGVnZXIgdmVjdG9yLgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3NldF9waTE2KHNob3J0IF9fczMsIHNob3J0IF9fczIsIHNob3J0IF9fczEsIHNob3J0IF9fczApCnsKICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfdmVjX2luaXRfdjRoaShfX3MwLCBfX3MxLCBfX3MyLCBfX3MzKTsKfQoKLy8vIENvbnN0cnVjdHMgYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgc3BlY2lmaWVkCi8vLyAgICA4LWJpdCBpbnRlZ2VyIHZhbHVlcy4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1dGlsaXR5IGZ1bmN0aW9uIGFuZCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lmaWMKLy8vICAgIGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2I3Ci8vLyAgICBBbiA4LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs2Mzo1Nl0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2I2Ci8vLyAgICBBbiA4LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs1NTo0OF0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2I1Ci8vLyAgICBBbiA4LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs0Nzo0MF0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2I0Ci8vLyAgICBBbiA4LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFszOTozMl0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2IzCi8vLyAgICBBbiA4LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFszMToyNF0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2IyCi8vLyAgICBBbiA4LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsyMzoxNl0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2IxCi8vLyAgICBBbiA4LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxNTo4XSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fYjAKLy8vICAgIEFuIDgtYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzc6MF0gb2YgdGhlIHJlc3VsdC4KLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDY0LWJpdCBpbnRlZ2VyIHZlY3Rvci4Kc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zZXRfcGk4KGNoYXIgX19iNywgY2hhciBfX2I2LCBjaGFyIF9fYjUsIGNoYXIgX19iNCwgY2hhciBfX2IzLCBjaGFyIF9fYjIsCiAgICAgICAgICAgIGNoYXIgX19iMSwgY2hhciBfX2IwKQp7CiAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3ZlY19pbml0X3Y4cWkoX19iMCwgX19iMSwgX19iMiwgX19iMywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2I0LCBfX2I1LCBfX2I2LCBfX2I3KTsKfQoKLy8vIENvbnN0cnVjdHMgYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdLCB3aXRoIGVhY2ggb2YgdGhlCi8vLyAgICAzMi1iaXQgaW50ZWdlciB2ZWN0b3IgZWxlbWVudHMgc2V0IHRvIHRoZSBzcGVjaWZpZWQgMzItYml0IGludGVnZXIKLy8vICAgIHZhbHVlLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBpcyBhIHV0aWxpdHkgZnVuY3Rpb24gYW5kIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBzcGVjaWZpYwovLy8gICAgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9faQovLy8gICAgQSAzMi1iaXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgZWFjaCB2ZWN0b3IgZWxlbWVudCBvZiB0aGUKLy8vICAgIHJlc3VsdC4KLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0uCnN0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc2V0MV9waTMyKGludCBfX2kpCnsKICAgIHJldHVybiBfbW1fc2V0X3BpMzIoX19pLCBfX2kpOwp9CgovLy8gQ29uc3RydWN0cyBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0sIHdpdGggZWFjaCBvZiB0aGUKLy8vICAgIDE2LWJpdCBpbnRlZ2VyIHZlY3RvciBlbGVtZW50cyBzZXQgdG8gdGhlIHNwZWNpZmllZCAxNi1iaXQgaW50ZWdlcgovLy8gICAgdmFsdWUuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGlzIGEgdXRpbGl0eSBmdW5jdGlvbiBhbmQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHNwZWNpZmljCi8vLyAgICBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX193Ci8vLyAgICBBIDE2LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBlYWNoIHZlY3RvciBlbGVtZW50IG9mIHRoZQovLy8gICAgcmVzdWx0LgovLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4Kc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zZXQxX3BpMTYoc2hvcnQgX193KQp7CiAgICByZXR1cm4gX21tX3NldF9waTE2KF9fdywgX193LCBfX3csIF9fdyk7Cn0KCi8vLyBDb25zdHJ1Y3RzIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdLCB3aXRoIGVhY2ggb2YgdGhlCi8vLyAgICA4LWJpdCBpbnRlZ2VyIHZlY3RvciBlbGVtZW50cyBzZXQgdG8gdGhlIHNwZWNpZmllZCA4LWJpdCBpbnRlZ2VyIHZhbHVlLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBpcyBhIHV0aWxpdHkgZnVuY3Rpb24gYW5kIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBzcGVjaWZpYwovLy8gICAgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYgovLy8gICAgQW4gOC1iaXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgZWFjaCB2ZWN0b3IgZWxlbWVudCBvZiB0aGUKLy8vICAgIHJlc3VsdC4KLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XS4Kc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zZXQxX3BpOChjaGFyIF9fYikKewogICAgcmV0dXJuIF9tbV9zZXRfcGk4KF9fYiwgX19iLCBfX2IsIF9fYiwgX19iLCBfX2IsIF9fYiwgX19iKTsKfQoKLy8vIENvbnN0cnVjdHMgYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IsIGluaXRpYWxpemVkIGluIHJldmVyc2Ugb3JkZXIgd2l0aAovLy8gICAgdGhlIHNwZWNpZmllZCAzMi1iaXQgaW50ZWdlciB2YWx1ZXMuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGlzIGEgdXRpbGl0eSBmdW5jdGlvbiBhbmQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHNwZWNpZmljCi8vLyAgICBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19pMAovLy8gICAgQSAzMi1iaXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgdGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhlCi8vLyAgICByZXN1bHQuCi8vLyBccGFyYW0gX19pMQovLy8gICAgQSAzMi1iaXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgdGhlIHVwcGVyIDMyIGJpdHMgb2YgdGhlCi8vLyAgICByZXN1bHQuCi8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCA2NC1iaXQgaW50ZWdlciB2ZWN0b3IuCnN0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc2V0cl9waTMyKGludCBfX2kwLCBpbnQgX19pMSkKewogICAgcmV0dXJuIF9tbV9zZXRfcGkzMihfX2kxLCBfX2kwKTsKfQoKLy8vIENvbnN0cnVjdHMgYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IsIGluaXRpYWxpemVkIGluIHJldmVyc2Ugb3JkZXIgd2l0aAovLy8gICAgdGhlIHNwZWNpZmllZCAxNi1iaXQgaW50ZWdlciB2YWx1ZXMuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGlzIGEgdXRpbGl0eSBmdW5jdGlvbiBhbmQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHNwZWNpZmljCi8vLyAgICBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX193MAovLy8gICAgQSAxNi1iaXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTU6MF0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX3cxCi8vLyAgICBBIDE2LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFszMToxNl0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX3cyCi8vLyAgICBBIDE2LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs0NzozMl0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX3czCi8vLyAgICBBIDE2LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs2Mzo0OF0gb2YgdGhlIHJlc3VsdC4KLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDY0LWJpdCBpbnRlZ2VyIHZlY3Rvci4Kc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zZXRyX3BpMTYoc2hvcnQgX193MCwgc2hvcnQgX193MSwgc2hvcnQgX193Miwgc2hvcnQgX193MykKewogICAgcmV0dXJuIF9tbV9zZXRfcGkxNihfX3czLCBfX3cyLCBfX3cxLCBfX3cwKTsKfQoKLy8vIENvbnN0cnVjdHMgYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IsIGluaXRpYWxpemVkIGluIHJldmVyc2Ugb3JkZXIgd2l0aAovLy8gICAgdGhlIHNwZWNpZmllZCA4LWJpdCBpbnRlZ2VyIHZhbHVlcy4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1dGlsaXR5IGZ1bmN0aW9uIGFuZCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lmaWMKLy8vICAgIGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2IwCi8vLyAgICBBbiA4LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs3OjBdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19iMQovLy8gICAgQW4gOC1iaXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTU6OF0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2IyCi8vLyAgICBBbiA4LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsyMzoxNl0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2IzCi8vLyAgICBBbiA4LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFszMToyNF0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2I0Ci8vLyAgICBBbiA4LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFszOTozMl0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2I1Ci8vLyAgICBBbiA4LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs0Nzo0MF0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2I2Ci8vLyAgICBBbiA4LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs1NTo0OF0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2I3Ci8vLyAgICBBbiA4LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs2Mzo1Nl0gb2YgdGhlIHJlc3VsdC4KLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDY0LWJpdCBpbnRlZ2VyIHZlY3Rvci4Kc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zZXRyX3BpOChjaGFyIF9fYjAsIGNoYXIgX19iMSwgY2hhciBfX2IyLCBjaGFyIF9fYjMsIGNoYXIgX19iNCwgY2hhciBfX2I1LAogICAgICAgICAgICAgY2hhciBfX2I2LCBjaGFyIF9fYjcpCnsKICAgIHJldHVybiBfbW1fc2V0X3BpOChfX2I3LCBfX2I2LCBfX2I1LCBfX2I0LCBfX2IzLCBfX2IyLCBfX2IxLCBfX2IwKTsKfQoKI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUwoKLyogQWxpYXNlcyBmb3IgY29tcGF0aWJpbGl0eS4gKi8KI2RlZmluZSBfbV9lbXB0eSBfbW1fZW1wdHkKI2RlZmluZSBfbV9mcm9tX2ludCBfbW1fY3Z0c2kzMl9zaTY0CiNkZWZpbmUgX21fZnJvbV9pbnQ2NCBfbW1fY3Z0c2k2NF9tNjQKI2RlZmluZSBfbV90b19pbnQgX21tX2N2dHNpNjRfc2kzMgojZGVmaW5lIF9tX3RvX2ludDY0IF9tbV9jdnRtNjRfc2k2NAojZGVmaW5lIF9tX3BhY2tzc3diIF9tbV9wYWNrc19waTE2CiNkZWZpbmUgX21fcGFja3NzZHcgX21tX3BhY2tzX3BpMzIKI2RlZmluZSBfbV9wYWNrdXN3YiBfbW1fcGFja3NfcHUxNgojZGVmaW5lIF9tX3B1bnBja2hidyBfbW1fdW5wYWNraGlfcGk4CiNkZWZpbmUgX21fcHVucGNraHdkIF9tbV91bnBhY2toaV9waTE2CiNkZWZpbmUgX21fcHVucGNraGRxIF9tbV91bnBhY2toaV9waTMyCiNkZWZpbmUgX21fcHVucGNrbGJ3IF9tbV91bnBhY2tsb19waTgKI2RlZmluZSBfbV9wdW5wY2tsd2QgX21tX3VucGFja2xvX3BpMTYKI2RlZmluZSBfbV9wdW5wY2tsZHEgX21tX3VucGFja2xvX3BpMzIKI2RlZmluZSBfbV9wYWRkYiBfbW1fYWRkX3BpOAojZGVmaW5lIF9tX3BhZGR3IF9tbV9hZGRfcGkxNgojZGVmaW5lIF9tX3BhZGRkIF9tbV9hZGRfcGkzMgojZGVmaW5lIF9tX3BhZGRzYiBfbW1fYWRkc19waTgKI2RlZmluZSBfbV9wYWRkc3cgX21tX2FkZHNfcGkxNgojZGVmaW5lIF9tX3BhZGR1c2IgX21tX2FkZHNfcHU4CiNkZWZpbmUgX21fcGFkZHVzdyBfbW1fYWRkc19wdTE2CiNkZWZpbmUgX21fcHN1YmIgX21tX3N1Yl9waTgKI2RlZmluZSBfbV9wc3VidyBfbW1fc3ViX3BpMTYKI2RlZmluZSBfbV9wc3ViZCBfbW1fc3ViX3BpMzIKI2RlZmluZSBfbV9wc3Vic2IgX21tX3N1YnNfcGk4CiNkZWZpbmUgX21fcHN1YnN3IF9tbV9zdWJzX3BpMTYKI2RlZmluZSBfbV9wc3VidXNiIF9tbV9zdWJzX3B1OAojZGVmaW5lIF9tX3BzdWJ1c3cgX21tX3N1YnNfcHUxNgojZGVmaW5lIF9tX3BtYWRkd2QgX21tX21hZGRfcGkxNgojZGVmaW5lIF9tX3BtdWxodyBfbW1fbXVsaGlfcGkxNgojZGVmaW5lIF9tX3BtdWxsdyBfbW1fbXVsbG9fcGkxNgojZGVmaW5lIF9tX3BzbGx3IF9tbV9zbGxfcGkxNgojZGVmaW5lIF9tX3BzbGx3aSBfbW1fc2xsaV9waTE2CiNkZWZpbmUgX21fcHNsbGQgX21tX3NsbF9waTMyCiNkZWZpbmUgX21fcHNsbGRpIF9tbV9zbGxpX3BpMzIKI2RlZmluZSBfbV9wc2xscSBfbW1fc2xsX3NpNjQKI2RlZmluZSBfbV9wc2xscWkgX21tX3NsbGlfc2k2NAojZGVmaW5lIF9tX3BzcmF3IF9tbV9zcmFfcGkxNgojZGVmaW5lIF9tX3BzcmF3aSBfbW1fc3JhaV9waTE2CiNkZWZpbmUgX21fcHNyYWQgX21tX3NyYV9waTMyCiNkZWZpbmUgX21fcHNyYWRpIF9tbV9zcmFpX3BpMzIKI2RlZmluZSBfbV9wc3JsdyBfbW1fc3JsX3BpMTYKI2RlZmluZSBfbV9wc3Jsd2kgX21tX3NybGlfcGkxNgojZGVmaW5lIF9tX3BzcmxkIF9tbV9zcmxfcGkzMgojZGVmaW5lIF9tX3BzcmxkaSBfbW1fc3JsaV9waTMyCiNkZWZpbmUgX21fcHNybHEgX21tX3NybF9zaTY0CiNkZWZpbmUgX21fcHNybHFpIF9tbV9zcmxpX3NpNjQKI2RlZmluZSBfbV9wYW5kIF9tbV9hbmRfc2k2NAojZGVmaW5lIF9tX3BhbmRuIF9tbV9hbmRub3Rfc2k2NAojZGVmaW5lIF9tX3BvciBfbW1fb3Jfc2k2NAojZGVmaW5lIF9tX3B4b3IgX21tX3hvcl9zaTY0CiNkZWZpbmUgX21fcGNtcGVxYiBfbW1fY21wZXFfcGk4CiNkZWZpbmUgX21fcGNtcGVxdyBfbW1fY21wZXFfcGkxNgojZGVmaW5lIF9tX3BjbXBlcWQgX21tX2NtcGVxX3BpMzIKI2RlZmluZSBfbV9wY21wZ3RiIF9tbV9jbXBndF9waTgKI2RlZmluZSBfbV9wY21wZ3R3IF9tbV9jbXBndF9waTE2CiNkZWZpbmUgX21fcGNtcGd0ZCBfbW1fY21wZ3RfcGkzMgoKI2VuZGlmIC8qIF9fTU1JTlRSSU5fSCAqLwoKAC8qPT09LS0tLSBwY29uZmlnaW50cmluLmggLSBYODYgcGxhdGZvcm0gY29uZmlndXJhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKi8KCiNpZiAhZGVmaW5lZCBfX1g4NklOVFJJTl9IICYmICFkZWZpbmVkIF9fSU1NSU5UUklOX0gKI2Vycm9yICJOZXZlciB1c2UgPHBjb25maWdpbnRyaW4uaD4gZGlyZWN0bHk7IGluY2x1ZGUgPHg4NmludHJpbi5oPiBpbnN0ZWFkLiIKI2VuZGlmCgojaWZuZGVmIF9fUENPTkZJR0lOVFJJTl9ICiNkZWZpbmUgX19QQ09ORklHSU5UUklOX0gKCiNkZWZpbmUgX19QQ09ORklHX0tFWV9QUk9HUkFNIDB4MDAwMDAwMDEKCiNpZiBfX2hhc19leHRlbnNpb24oZ251X2FzbSkKCi8qIERlZmluZSB0aGUgZGVmYXVsdCBhdHRyaWJ1dGVzIGZvciB0aGUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZS4gKi8KI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMgXAogIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgIF9fdGFyZ2V0X18oInBjb25maWciKSkpCgpzdGF0aWMgX19pbmxpbmUgdW5zaWduZWQgaW50IF9fREVGQVVMVF9GTl9BVFRSUwpfcGNvbmZpZ191MzIodW5zaWduZWQgaW50IF9fbGVhZiwgX19TSVpFX1RZUEVfXyBfX2RbXSkKewogIHVuc2lnbmVkIGludCBfX3Jlc3VsdDsKICBfX2FzbV9fICgicGNvbmZpZyIKICAgICAgICAgICA6ICI9YSIgKF9fcmVzdWx0KSwgIj1iIiAoX19kWzBdKSwgIj1jIiAoX19kWzFdKSwgIj1kIiAoX19kWzJdKQogICAgICAgICAgIDogImEiIChfX2xlYWYpLCAiYiIgKF9fZFswXSksICJjIiAoX19kWzFdKSwgImQiIChfX2RbMl0pCiAgICAgICAgICAgOiAiY2MiKTsKICByZXR1cm4gX19yZXN1bHQ7Cn0KCiN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlMKCiNlbmRpZiAvKiBfX2hhc19leHRlbnNpb24oZ251X2FzbSkgKi8KCiNlbmRpZgoALyo9PT0tLS0tIHhtbWludHJpbi5oIC0gU1NFIGludHJpbnNpY3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwoKI2lmbmRlZiBfX1hNTUlOVFJJTl9ICiNkZWZpbmUgX19YTU1JTlRSSU5fSAoKI2lmICFkZWZpbmVkKF9faTM4Nl9fKSAmJiAhZGVmaW5lZChfX3g4Nl82NF9fKQojZXJyb3IgIlRoaXMgaGVhZGVyIGlzIG9ubHkgbWVhbnQgdG8gYmUgdXNlZCBvbiB4ODYgYW5kIHg2NCBhcmNoaXRlY3R1cmUiCiNlbmRpZgoKI2luY2x1ZGUgPG1taW50cmluLmg+Cgp0eXBlZGVmIGludCBfX3Y0c2kgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDE2KSkpOwp0eXBlZGVmIGZsb2F0IF9fdjRzZiBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oMTYpKSk7CnR5cGVkZWYgZmxvYXQgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXygxNiksIF9fYWxpZ25lZF9fKDE2KSkpOwoKdHlwZWRlZiBmbG9hdCBfX20xMjhfdSBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oMTYpLCBfX2FsaWduZWRfXygxKSkpOwoKLyogVW5zaWduZWQgdHlwZXMgKi8KdHlwZWRlZiB1bnNpZ25lZCBpbnQgX192NHN1IF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXygxNikpKTsKCi8qIFRoaXMgaGVhZGVyIHNob3VsZCBvbmx5IGJlIGluY2x1ZGVkIGluIGEgaG9zdGVkIGVudmlyb25tZW50IGFzIGl0IGRlcGVuZHMgb24KICogYSBzdGFuZGFyZCBsaWJyYXJ5IHRvIHByb3ZpZGUgYWxsb2NhdGlvbiByb3V0aW5lcy4gKi8KI2lmIF9fU1REQ19IT1NURURfXwojaW5jbHVkZSA8bW1fbWFsbG9jLmg+CiNlbmRpZgoKLyogRGVmaW5lIHRoZSBkZWZhdWx0IGF0dHJpYnV0ZXMgZm9yIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlLiAqLwojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUyBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oInNzZSIpLCBfX21pbl92ZWN0b3Jfd2lkdGhfXygxMjgpKSkKI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygibW14LHNzZSIpLCBfX21pbl92ZWN0b3Jfd2lkdGhfXyg2NCkpKQoKLy8vIEFkZHMgdGhlIDMyLWJpdCBmbG9hdCB2YWx1ZXMgaW4gdGhlIGxvdy1vcmRlciBiaXRzIG9mIHRoZSBvcGVyYW5kcy4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQUREU1MgLyBBRERTUyA8L2M+IGluc3RydWN0aW9ucy4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuCi8vLyAgICBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNhbGN1bGF0aW9uLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLgovLy8gICAgVGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZSB1c2VkIGluIHRoZSBjYWxjdWxhdGlvbi4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gd2hvc2UgbG93ZXIgMzIgYml0cyBjb250YWluIHRoZSBzdW0KLy8vICAgIG9mIHRoZSBsb3dlciAzMiBiaXRzIG9mIGJvdGggb3BlcmFuZHMuIFRoZSB1cHBlciA5NiBiaXRzIGFyZSBjb3BpZWQgZnJvbQovLy8gICAgdGhlIHVwcGVyIDk2IGJpdHMgb2YgdGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9hZGRfc3MoX19tMTI4IF9fYSwgX19tMTI4IF9fYikKewogIF9fYVswXSArPSBfX2JbMF07CiAgcmV0dXJuIF9fYTsKfQoKLy8vIEFkZHMgdHdvIDEyOC1iaXQgdmVjdG9ycyBvZiBbNCB4IGZsb2F0XSwgYW5kIHJldHVybnMgdGhlIHJlc3VsdHMgb2YKLy8vICAgIHRoZSBhZGRpdGlvbi4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQUREUFMgLyBBRERQUyA8L2M+IGluc3RydWN0aW9ucy4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHN1bXMgb2YgYm90aAovLy8gICAgb3BlcmFuZHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2FkZF9wcyhfX20xMjggX19hLCBfX20xMjggX19iKQp7CiAgcmV0dXJuIChfX20xMjgpKChfX3Y0c2YpX19hICsgKF9fdjRzZilfX2IpOwp9CgovLy8gU3VidHJhY3RzIHRoZSAzMi1iaXQgZmxvYXQgdmFsdWUgaW4gdGhlIGxvdy1vcmRlciBiaXRzIG9mIHRoZSBzZWNvbmQKLy8vICAgIG9wZXJhbmQgZnJvbSB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBpbiB0aGUgZmlyc3Qgb3BlcmFuZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWU1VCU1MgLyBTVUJTUyA8L2M+IGluc3RydWN0aW9ucy4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIG1pbnVlbmQuIFRoZSBsb3dlciAzMiBiaXRzCi8vLyAgICBvZiB0aGlzIG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNhbGN1bGF0aW9uLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBzdWJ0cmFoZW5kLiBUaGUgbG93ZXIgMzIKLy8vICAgIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZSB1c2VkIGluIHRoZSBjYWxjdWxhdGlvbi4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gd2hvc2UgbG93ZXIgMzIgYml0cyBjb250YWluIHRoZQovLy8gICAgZGlmZmVyZW5jZSBvZiB0aGUgbG93ZXIgMzIgYml0cyBvZiBib3RoIG9wZXJhbmRzLiBUaGUgdXBwZXIgOTYgYml0cyBhcmUKLy8vICAgIGNvcGllZCBmcm9tIHRoZSB1cHBlciA5NiBiaXRzIG9mIHRoZSBmaXJzdCBzb3VyY2Ugb3BlcmFuZC4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc3ViX3NzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpCnsKICBfX2FbMF0gLT0gX19iWzBdOwogIHJldHVybiBfX2E7Cn0KCi8vLyBTdWJ0cmFjdHMgZWFjaCBvZiB0aGUgdmFsdWVzIG9mIHRoZSBzZWNvbmQgb3BlcmFuZCBmcm9tIHRoZSBmaXJzdAovLy8gICAgb3BlcmFuZCwgYm90aCBvZiB3aGljaCBhcmUgMTI4LWJpdCB2ZWN0b3JzIG9mIFs0IHggZmxvYXRdIGFuZCByZXR1cm5zCi8vLyAgICB0aGUgcmVzdWx0cyBvZiB0aGUgc3VidHJhY3Rpb24uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlNVQlBTIC8gU1VCUFMgPC9jPiBpbnN0cnVjdGlvbnMuCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBtaW51ZW5kLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBzdWJ0cmFoZW5kLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuCi8vLyAgICBib3RoIG9wZXJhbmRzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zdWJfcHMoX19tMTI4IF9fYSwgX19tMTI4IF9fYikKewogIHJldHVybiAoX19tMTI4KSgoX192NHNmKV9fYSAtIChfX3Y0c2YpX19iKTsKfQoKLy8vIE11bHRpcGxpZXMgdHdvIDMyLWJpdCBmbG9hdCB2YWx1ZXMgaW4gdGhlIGxvdy1vcmRlciBiaXRzIG9mIHRoZQovLy8gICAgb3BlcmFuZHMuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1VTFNTIC8gTVVMU1MgPC9jPiBpbnN0cnVjdGlvbnMuCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLgovLy8gICAgVGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZSB1c2VkIGluIHRoZSBjYWxjdWxhdGlvbi4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4KLy8vICAgIFRoZSBsb3dlciAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUgdXNlZCBpbiB0aGUgY2FsY3VsYXRpb24uCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHByb2R1Y3Qgb2YgdGhlIGxvd2VyCi8vLyAgICAzMiBiaXRzIG9mIGJvdGggb3BlcmFuZHMuIFRoZSB1cHBlciA5NiBiaXRzIGFyZSBjb3BpZWQgZnJvbSB0aGUgdXBwZXIgOTYKLy8vICAgIGJpdHMgb2YgdGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9tdWxfc3MoX19tMTI4IF9fYSwgX19tMTI4IF9fYikKewogIF9fYVswXSAqPSBfX2JbMF07CiAgcmV0dXJuIF9fYTsKfQoKLy8vIE11bHRpcGxpZXMgdHdvIDEyOC1iaXQgdmVjdG9ycyBvZiBbNCB4IGZsb2F0XSBhbmQgcmV0dXJucyB0aGUKLy8vICAgIHJlc3VsdHMgb2YgdGhlIG11bHRpcGxpY2F0aW9uLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNVUxQUyAvIE1VTFBTIDwvYz4gaW5zdHJ1Y3Rpb25zLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgcHJvZHVjdHMgb2YgYm90aAovLy8gICAgb3BlcmFuZHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX211bF9wcyhfX20xMjggX19hLCBfX20xMjggX19iKQp7CiAgcmV0dXJuIChfX20xMjgpKChfX3Y0c2YpX19hICogKF9fdjRzZilfX2IpOwp9CgovLy8gRGl2aWRlcyB0aGUgdmFsdWUgaW4gdGhlIGxvdy1vcmRlciAzMiBiaXRzIG9mIHRoZSBmaXJzdCBvcGVyYW5kIGJ5Ci8vLyAgICB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBpbiB0aGUgc2Vjb25kIG9wZXJhbmQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkRJVlNTIC8gRElWU1MgPC9jPiBpbnN0cnVjdGlvbnMuCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBkaXZpZGVuZC4gVGhlIGxvd2VyIDMyCi8vLyAgICBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUgdXNlZCBpbiB0aGUgY2FsY3VsYXRpb24uCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGRpdmlzb3IuIFRoZSBsb3dlciAzMiBiaXRzCi8vLyAgICBvZiB0aGlzIG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNhbGN1bGF0aW9uLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBxdW90aWVudHMgb2YgdGhlCi8vLyAgICBsb3dlciAzMiBiaXRzIG9mIGJvdGggb3BlcmFuZHMuIFRoZSB1cHBlciA5NiBiaXRzIGFyZSBjb3BpZWQgZnJvbSB0aGUKLy8vICAgIHVwcGVyIDk2IGJpdHMgb2YgdGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9kaXZfc3MoX19tMTI4IF9fYSwgX19tMTI4IF9fYikKewogIF9fYVswXSAvPSBfX2JbMF07CiAgcmV0dXJuIF9fYTsKfQoKLy8vIERpdmlkZXMgdHdvIDEyOC1iaXQgdmVjdG9ycyBvZiBbNCB4IGZsb2F0XS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWRElWUFMgLyBESVZQUyA8L2M+IGluc3RydWN0aW9ucy4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGRpdmlkZW5kLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBkaXZpc29yLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBxdW90aWVudHMgb2YgYm90aAovLy8gICAgb3BlcmFuZHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2Rpdl9wcyhfX20xMjggX19hLCBfX20xMjggX19iKQp7CiAgcmV0dXJuIChfX20xMjgpKChfX3Y0c2YpX19hIC8gKF9fdjRzZilfX2IpOwp9CgovLy8gQ2FsY3VsYXRlcyB0aGUgc3F1YXJlIHJvb3Qgb2YgdGhlIHZhbHVlIHN0b3JlZCBpbiB0aGUgbG93LW9yZGVyIGJpdHMKLy8vICAgIG9mIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlNRUlRTUyAvIFNRUlRTUyA8L2M+IGluc3RydWN0aW9ucy4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlCi8vLyAgICB1c2VkIGluIHRoZSBjYWxjdWxhdGlvbi4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgc3F1YXJlIHJvb3Qgb2YgdGhlCi8vLyAgICB2YWx1ZSBpbiB0aGUgbG93LW9yZGVyIGJpdHMgb2YgdGhlIG9wZXJhbmQuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3NxcnRfc3MoX19tMTI4IF9fYSkKewogIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3NxcnRzcygoX192NHNmKV9fYSk7Cn0KCi8vLyBDYWxjdWxhdGVzIHRoZSBzcXVhcmUgcm9vdHMgb2YgdGhlIHZhbHVlcyBzdG9yZWQgaW4gYSAxMjgtYml0IHZlY3RvcgovLy8gICAgb2YgWzQgeCBmbG9hdF0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlNRUlRQUyAvIFNRUlRQUyA8L2M+IGluc3RydWN0aW9ucy4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBzcXVhcmUgcm9vdHMgb2YgdGhlCi8vLyAgICB2YWx1ZXMgaW4gdGhlIG9wZXJhbmQuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3NxcnRfcHMoX19tMTI4IF9fYSkKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9zcXJ0cHMoKF9fdjRzZilfX2EpOwp9CgovLy8gQ2FsY3VsYXRlcyB0aGUgYXBwcm94aW1hdGUgcmVjaXByb2NhbCBvZiB0aGUgdmFsdWUgc3RvcmVkIGluIHRoZQovLy8gICAgbG93LW9yZGVyIGJpdHMgb2YgYSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUkNQU1MgLyBSQ1BTUyA8L2M+IGluc3RydWN0aW9ucy4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlCi8vLyAgICB1c2VkIGluIHRoZSBjYWxjdWxhdGlvbi4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgYXBwcm94aW1hdGUKLy8vICAgIHJlY2lwcm9jYWwgb2YgdGhlIHZhbHVlIGluIHRoZSBsb3ctb3JkZXIgYml0cyBvZiB0aGUgb3BlcmFuZC4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fcmNwX3NzKF9fbTEyOCBfX2EpCnsKICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl9yY3BzcygoX192NHNmKV9fYSk7Cn0KCi8vLyBDYWxjdWxhdGVzIHRoZSBhcHByb3hpbWF0ZSByZWNpcHJvY2FscyBvZiB0aGUgdmFsdWVzIHN0b3JlZCBpbiBhCi8vLyAgICAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUkNQUFMgLyBSQ1BQUyA8L2M+IGluc3RydWN0aW9ucy4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBhcHByb3hpbWF0ZQovLy8gICAgcmVjaXByb2NhbHMgb2YgdGhlIHZhbHVlcyBpbiB0aGUgb3BlcmFuZC4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fcmNwX3BzKF9fbTEyOCBfX2EpCnsKICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl9yY3BwcygoX192NHNmKV9fYSk7Cn0KCi8vLyBDYWxjdWxhdGVzIHRoZSBhcHByb3hpbWF0ZSByZWNpcHJvY2FsIG9mIHRoZSBzcXVhcmUgcm9vdCBvZiB0aGUgdmFsdWUKLy8vICAgIHN0b3JlZCBpbiB0aGUgbG93LW9yZGVyIGJpdHMgb2YgYSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUlNRUlRTUyAvIFJTUVJUU1MgPC9jPiBpbnN0cnVjdGlvbnMuCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZQovLy8gICAgdXNlZCBpbiB0aGUgY2FsY3VsYXRpb24uCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGFwcHJveGltYXRlCi8vLyAgICByZWNpcHJvY2FsIG9mIHRoZSBzcXVhcmUgcm9vdCBvZiB0aGUgdmFsdWUgaW4gdGhlIGxvdy1vcmRlciBiaXRzIG9mIHRoZQovLy8gICAgb3BlcmFuZC4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fcnNxcnRfc3MoX19tMTI4IF9fYSkKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9yc3FydHNzKChfX3Y0c2YpX19hKTsKfQoKLy8vIENhbGN1bGF0ZXMgdGhlIGFwcHJveGltYXRlIHJlY2lwcm9jYWxzIG9mIHRoZSBzcXVhcmUgcm9vdHMgb2YgdGhlCi8vLyAgICB2YWx1ZXMgc3RvcmVkIGluIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlJTUVJUUFMgLyBSU1FSVFBTIDwvYz4gaW5zdHJ1Y3Rpb25zLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGFwcHJveGltYXRlCi8vLyAgICByZWNpcHJvY2FscyBvZiB0aGUgc3F1YXJlIHJvb3RzIG9mIHRoZSB2YWx1ZXMgaW4gdGhlIG9wZXJhbmQuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3JzcXJ0X3BzKF9fbTEyOCBfX2EpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfcnNxcnRwcygoX192NHNmKV9fYSk7Cn0KCi8vLyBDb21wYXJlcyB0d28gMzItYml0IGZsb2F0IHZhbHVlcyBpbiB0aGUgbG93LW9yZGVyIGJpdHMgb2YgYm90aAovLy8gICAgb3BlcmFuZHMgYW5kIHJldHVybnMgdGhlIGxlc3NlciB2YWx1ZSBpbiB0aGUgbG93LW9yZGVyIGJpdHMgb2YgdGhlCi8vLyAgICB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1JTlNTIC8gTUlOU1MgPC9jPiBpbnN0cnVjdGlvbnMuCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuIFRoZSBsb3dlcgovLy8gICAgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4gVGhlIGxvd2VyCi8vLyAgICAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gd2hvc2UgbG93ZXIgMzIgYml0cyBjb250YWluIHRoZQovLy8gICAgbWluaW11bSB2YWx1ZSBiZXR3ZWVuIGJvdGggb3BlcmFuZHMuIFRoZSB1cHBlciA5NiBiaXRzIGFyZSBjb3BpZWQgZnJvbQovLy8gICAgdGhlIHVwcGVyIDk2IGJpdHMgb2YgdGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9taW5fc3MoX19tMTI4IF9fYSwgX19tMTI4IF9fYikKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9taW5zcygoX192NHNmKV9fYSwgKF9fdjRzZilfX2IpOwp9CgovLy8gQ29tcGFyZXMgdHdvIDEyOC1iaXQgdmVjdG9ycyBvZiBbNCB4IGZsb2F0XSBhbmQgcmV0dXJucyB0aGUgbGVzc2VyCi8vLyAgICBvZiBlYWNoIHBhaXIgb2YgdmFsdWVzLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNSU5QUyAvIE1JTlBTIDwvYz4gaW5zdHJ1Y3Rpb25zLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIG1pbmltdW0gdmFsdWVzCi8vLyAgICBiZXR3ZWVuIGJvdGggb3BlcmFuZHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX21pbl9wcyhfX20xMjggX19hLCBfX20xMjggX19iKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX21pbnBzKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYik7Cn0KCi8vLyBDb21wYXJlcyB0d28gMzItYml0IGZsb2F0IHZhbHVlcyBpbiB0aGUgbG93LW9yZGVyIGJpdHMgb2YgYm90aAovLy8gICAgb3BlcmFuZHMgYW5kIHJldHVybnMgdGhlIGdyZWF0ZXIgdmFsdWUgaW4gdGhlIGxvdy1vcmRlciBiaXRzIG9mIGEgMTI4LWJpdAovLy8gICAgdmVjdG9yIG9mIFs0IHggZmxvYXRdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNQVhTUyAvIE1BWFNTIDwvYz4gaW5zdHJ1Y3Rpb25zLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLiBUaGUgbG93ZXIKLy8vICAgIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZSB1c2VkIGluIHRoZSBjb21wYXJpc29uLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuIFRoZSBsb3dlcgovLy8gICAgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIHdob3NlIGxvd2VyIDMyIGJpdHMgY29udGFpbiB0aGUKLy8vICAgIG1heGltdW0gdmFsdWUgYmV0d2VlbiBib3RoIG9wZXJhbmRzLiBUaGUgdXBwZXIgOTYgYml0cyBhcmUgY29waWVkIGZyb20KLy8vICAgIHRoZSB1cHBlciA5NiBiaXRzIG9mIHRoZSBmaXJzdCBzb3VyY2Ugb3BlcmFuZC4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fbWF4X3NzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfbWF4c3MoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19iKTsKfQoKLy8vIENvbXBhcmVzIHR3byAxMjgtYml0IHZlY3RvcnMgb2YgWzQgeCBmbG9hdF0gYW5kIHJldHVybnMgdGhlIGdyZWF0ZXIKLy8vICAgIG9mIGVhY2ggcGFpciBvZiB2YWx1ZXMuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1BWFBTIC8gTUFYUFMgPC9jPiBpbnN0cnVjdGlvbnMuCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgbWF4aW11bSB2YWx1ZXMKLy8vICAgIGJldHdlZW4gYm90aCBvcGVyYW5kcy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fbWF4X3BzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfbWF4cHMoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19iKTsKfQoKLy8vIFBlcmZvcm1zIGEgYml0d2lzZSBBTkQgb2YgdHdvIDEyOC1iaXQgdmVjdG9ycyBvZiBbNCB4IGZsb2F0XS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQU5EUFMgLyBBTkRQUyA8L2M+IGluc3RydWN0aW9ucy4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGJpdHdpc2UgQU5EIG9mIHRoZQovLy8gICAgdmFsdWVzIGJldHdlZW4gYm90aCBvcGVyYW5kcy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fYW5kX3BzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpCnsKICByZXR1cm4gKF9fbTEyOCkoKF9fdjRzdSlfX2EgJiAoX192NHN1KV9fYik7Cn0KCi8vLyBQZXJmb3JtcyBhIGJpdHdpc2UgQU5EIG9mIHR3byAxMjgtYml0IHZlY3RvcnMgb2YgWzQgeCBmbG9hdF0sIHVzaW5nCi8vLyAgICB0aGUgb25lJ3MgY29tcGxlbWVudCBvZiB0aGUgdmFsdWVzIGNvbnRhaW5lZCBpbiB0aGUgZmlyc3Qgc291cmNlCi8vLyAgICBvcGVyYW5kLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZBTkROUFMgLyBBTkROUFMgPC9jPiBpbnN0cnVjdGlvbnMuCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBmaXJzdCBzb3VyY2Ugb3BlcmFuZC4gVGhlCi8vLyAgICBvbmUncyBjb21wbGVtZW50IG9mIHRoaXMgdmFsdWUgaXMgdXNlZCBpbiB0aGUgYml0d2lzZSBBTkQuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHNlY29uZCBzb3VyY2Ugb3BlcmFuZC4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgYml0d2lzZSBBTkQgb2YgdGhlCi8vLyAgICBvbmUncyBjb21wbGVtZW50IG9mIHRoZSBmaXJzdCBvcGVyYW5kIGFuZCB0aGUgdmFsdWVzIGluIHRoZSBzZWNvbmQKLy8vICAgIG9wZXJhbmQuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2FuZG5vdF9wcyhfX20xMjggX19hLCBfX20xMjggX19iKQp7CiAgcmV0dXJuIChfX20xMjgpKH4oX192NHN1KV9fYSAmIChfX3Y0c3UpX19iKTsKfQoKLy8vIFBlcmZvcm1zIGEgYml0d2lzZSBPUiBvZiB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mIFs0IHggZmxvYXRdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZPUlBTIC8gT1JQUyA8L2M+IGluc3RydWN0aW9ucy4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGJpdHdpc2UgT1Igb2YgdGhlCi8vLyAgICB2YWx1ZXMgYmV0d2VlbiBib3RoIG9wZXJhbmRzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9vcl9wcyhfX20xMjggX19hLCBfX20xMjggX19iKQp7CiAgcmV0dXJuIChfX20xMjgpKChfX3Y0c3UpX19hIHwgKF9fdjRzdSlfX2IpOwp9CgovLy8gUGVyZm9ybXMgYSBiaXR3aXNlIGV4Y2x1c2l2ZSBPUiBvZiB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mCi8vLyAgICBbNCB4IGZsb2F0XS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWWE9SUFMgLyBYT1JQUyA8L2M+IGluc3RydWN0aW9ucy4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGJpdHdpc2UgZXhjbHVzaXZlIE9SCi8vLyAgICBvZiB0aGUgdmFsdWVzIGJldHdlZW4gYm90aCBvcGVyYW5kcy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1feG9yX3BzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpCnsKICByZXR1cm4gKF9fbTEyOCkoKF9fdjRzdSlfX2EgXiAoX192NHN1KV9fYik7Cn0KCi8vLyBDb21wYXJlcyB0d28gMzItYml0IGZsb2F0IHZhbHVlcyBpbiB0aGUgbG93LW9yZGVyIGJpdHMgb2YgYm90aAovLy8gICAgb3BlcmFuZHMgZm9yIGVxdWFsaXR5IGFuZCByZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24gaW4gdGhlCi8vLyAgICBsb3ctb3JkZXIgYml0cyBvZiBhIHZlY3RvciBbNCB4IGZsb2F0XS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QRVFTUyAvIENNUEVRU1MgPC9jPiBpbnN0cnVjdGlvbnMuCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuIFRoZSBsb3dlcgovLy8gICAgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4gVGhlIGxvd2VyCi8vLyAgICAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzCi8vLyAgICBpbiB0aGUgbG93LW9yZGVyIGJpdHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2NtcGVxX3NzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpCnsKICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl9jbXBlcXNzKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYik7Cn0KCi8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIDMyLWJpdCBmbG9hdCB2YWx1ZXMgb2YgdGhlCi8vLyAgICAxMjgtYml0IHZlY3RvcnMgb2YgWzQgeCBmbG9hdF0gZm9yIGVxdWFsaXR5LgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBFUVBTIC8gQ01QRVFQUyA8L2M+IGluc3RydWN0aW9ucy4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jbXBlcV9wcyhfX20xMjggX19hLCBfX20xMjggX19iKQp7CiAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfY21wZXFwcygoX192NHNmKV9fYSwgKF9fdjRzZilfX2IpOwp9CgovLy8gQ29tcGFyZXMgdHdvIDMyLWJpdCBmbG9hdCB2YWx1ZXMgaW4gdGhlIGxvdy1vcmRlciBiaXRzIG9mIGJvdGgKLy8vICAgIG9wZXJhbmRzIHRvIGRldGVybWluZSBpZiB0aGUgdmFsdWUgaW4gdGhlIGZpcnN0IG9wZXJhbmQgaXMgbGVzcyB0aGFuIHRoZQovLy8gICAgY29ycmVzcG9uZGluZyB2YWx1ZSBpbiB0aGUgc2Vjb25kIG9wZXJhbmQgYW5kIHJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUKLy8vICAgIGNvbXBhcmlzb24gaW4gdGhlIGxvdy1vcmRlciBiaXRzIG9mIGEgdmVjdG9yIG9mIFs0IHggZmxvYXRdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBMVFNTIC8gQ01QTFRTUyA8L2M+IGluc3RydWN0aW9ucy4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4gVGhlIGxvd2VyCi8vLyAgICAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLiBUaGUgbG93ZXIKLy8vICAgIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZSB1c2VkIGluIHRoZSBjb21wYXJpc29uLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMKLy8vICAgIGluIHRoZSBsb3ctb3JkZXIgYml0cy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY21wbHRfc3MoX19tMTI4IF9fYSwgX19tMTI4IF9fYikKewogIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX2NtcGx0c3MoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19iKTsKfQoKLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgMzItYml0IGZsb2F0IHZhbHVlcyBvZiB0aGUKLy8vICAgIDEyOC1iaXQgdmVjdG9ycyBvZiBbNCB4IGZsb2F0XSB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlcyBpbiB0aGUgZmlyc3QKLy8vICAgIG9wZXJhbmQgYXJlIGxlc3MgdGhhbiB0aG9zZSBpbiB0aGUgc2Vjb25kIG9wZXJhbmQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUExUUFMgLyBDTVBMVFBTIDwvYz4gaW5zdHJ1Y3Rpb25zLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2NtcGx0X3BzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpCnsKICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl9jbXBsdHBzKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYik7Cn0KCi8vLyBDb21wYXJlcyB0d28gMzItYml0IGZsb2F0IHZhbHVlcyBpbiB0aGUgbG93LW9yZGVyIGJpdHMgb2YgYm90aAovLy8gICAgb3BlcmFuZHMgdG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZSBpbiB0aGUgZmlyc3Qgb3BlcmFuZCBpcyBsZXNzIHRoYW4gb3IKLy8vICAgIGVxdWFsIHRvIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGluIHRoZSBzZWNvbmQgb3BlcmFuZCBhbmQgcmV0dXJucyB0aGUKLy8vICAgIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvbiBpbiB0aGUgbG93LW9yZGVyIGJpdHMgb2YgYSB2ZWN0b3Igb2YKLy8vICAgIFs0IHggZmxvYXRdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBMRVNTIC8gQ01QTEVTUyA8L2M+IGluc3RydWN0aW9ucy4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4gVGhlIGxvd2VyCi8vLyAgICAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLiBUaGUgbG93ZXIKLy8vICAgIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZSB1c2VkIGluIHRoZSBjb21wYXJpc29uLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMKLy8vICAgIGluIHRoZSBsb3ctb3JkZXIgYml0cy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY21wbGVfc3MoX19tMTI4IF9fYSwgX19tMTI4IF9fYikKewogIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX2NtcGxlc3MoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19iKTsKfQoKLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgMzItYml0IGZsb2F0IHZhbHVlcyBvZiB0aGUKLy8vICAgIDEyOC1iaXQgdmVjdG9ycyBvZiBbNCB4IGZsb2F0XSB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlcyBpbiB0aGUgZmlyc3QKLy8vICAgIG9wZXJhbmQgYXJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aG9zZSBpbiB0aGUgc2Vjb25kIG9wZXJhbmQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUExFUFMgLyBDTVBMRVBTIDwvYz4gaW5zdHJ1Y3Rpb25zLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2NtcGxlX3BzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpCnsKICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl9jbXBsZXBzKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYik7Cn0KCi8vLyBDb21wYXJlcyB0d28gMzItYml0IGZsb2F0IHZhbHVlcyBpbiB0aGUgbG93LW9yZGVyIGJpdHMgb2YgYm90aAovLy8gICAgb3BlcmFuZHMgdG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZSBpbiB0aGUgZmlyc3Qgb3BlcmFuZCBpcyBncmVhdGVyIHRoYW4KLy8vICAgIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGluIHRoZSBzZWNvbmQgb3BlcmFuZCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IG9mCi8vLyAgICB0aGUgY29tcGFyaXNvbiBpbiB0aGUgbG93LW9yZGVyIGJpdHMgb2YgYSB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUExUU1MgLyBDTVBMVFNTIDwvYz4gaW5zdHJ1Y3Rpb25zLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLiBUaGUgbG93ZXIKLy8vICAgIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZSB1c2VkIGluIHRoZSBjb21wYXJpc29uLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuIFRoZSBsb3dlcgovLy8gICAgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cwovLy8gICAgaW4gdGhlIGxvdy1vcmRlciBiaXRzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jbXBndF9zcyhfX20xMjggX19hLCBfX20xMjggX19iKQp7CiAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjRzZilfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfX2J1aWx0aW5faWEzMl9jbXBsdHNzKChfX3Y0c2YpX19iLCAoX192NHNmKV9fYSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNCwgMSwgMiwgMyk7Cn0KCi8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIDMyLWJpdCBmbG9hdCB2YWx1ZXMgb2YgdGhlCi8vLyAgICAxMjgtYml0IHZlY3RvcnMgb2YgWzQgeCBmbG9hdF0gdG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZXMgaW4gdGhlIGZpcnN0Ci8vLyAgICBvcGVyYW5kIGFyZSBncmVhdGVyIHRoYW4gdGhvc2UgaW4gdGhlIHNlY29uZCBvcGVyYW5kLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBMVFBTIC8gQ01QTFRQUyA8L2M+IGluc3RydWN0aW9ucy4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jbXBndF9wcyhfX20xMjggX19hLCBfX20xMjggX19iKQp7CiAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfY21wbHRwcygoX192NHNmKV9fYiwgKF9fdjRzZilfX2EpOwp9CgovLy8gQ29tcGFyZXMgdHdvIDMyLWJpdCBmbG9hdCB2YWx1ZXMgaW4gdGhlIGxvdy1vcmRlciBiaXRzIG9mIGJvdGgKLy8vICAgIG9wZXJhbmRzIHRvIGRldGVybWluZSBpZiB0aGUgdmFsdWUgaW4gdGhlIGZpcnN0IG9wZXJhbmQgaXMgZ3JlYXRlciB0aGFuCi8vLyAgICBvciBlcXVhbCB0byB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBpbiB0aGUgc2Vjb25kIG9wZXJhbmQgYW5kIHJldHVybnMKLy8vICAgIHRoZSByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24gaW4gdGhlIGxvdy1vcmRlciBiaXRzIG9mIGEgdmVjdG9yIG9mCi8vLyAgICBbNCB4IGZsb2F0XS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QTEVTUyAvIENNUExFU1MgPC9jPiBpbnN0cnVjdGlvbnMuCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuIFRoZSBsb3dlcgovLy8gICAgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4gVGhlIGxvd2VyCi8vLyAgICAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzCi8vLyAgICBpbiB0aGUgbG93LW9yZGVyIGJpdHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2NtcGdlX3NzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpCnsKICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192NHNmKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9fYnVpbHRpbl9pYTMyX2NtcGxlc3MoKF9fdjRzZilfX2IsIChfX3Y0c2YpX19hKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LCAxLCAyLCAzKTsKfQoKLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgMzItYml0IGZsb2F0IHZhbHVlcyBvZiB0aGUKLy8vICAgIDEyOC1iaXQgdmVjdG9ycyBvZiBbNCB4IGZsb2F0XSB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlcyBpbiB0aGUgZmlyc3QKLy8vICAgIG9wZXJhbmQgYXJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aG9zZSBpbiB0aGUgc2Vjb25kIG9wZXJhbmQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUExFUFMgLyBDTVBMRVBTIDwvYz4gaW5zdHJ1Y3Rpb25zLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2NtcGdlX3BzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpCnsKICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl9jbXBsZXBzKChfX3Y0c2YpX19iLCAoX192NHNmKV9fYSk7Cn0KCi8vLyBDb21wYXJlcyB0d28gMzItYml0IGZsb2F0IHZhbHVlcyBpbiB0aGUgbG93LW9yZGVyIGJpdHMgb2YgYm90aAovLy8gICAgb3BlcmFuZHMgZm9yIGluZXF1YWxpdHkgYW5kIHJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvbiBpbiB0aGUKLy8vICAgIGxvdy1vcmRlciBiaXRzIG9mIGEgdmVjdG9yIG9mIFs0IHggZmxvYXRdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBORVFTUyAvIENNUE5FUVNTIDwvYz4KLy8vICAgaW5zdHJ1Y3Rpb25zLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLiBUaGUgbG93ZXIKLy8vICAgIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZSB1c2VkIGluIHRoZSBjb21wYXJpc29uLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuIFRoZSBsb3dlcgovLy8gICAgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cwovLy8gICAgaW4gdGhlIGxvdy1vcmRlciBiaXRzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jbXBuZXFfc3MoX19tMTI4IF9fYSwgX19tMTI4IF9fYikKewogIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX2NtcG5lcXNzKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYik7Cn0KCi8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIDMyLWJpdCBmbG9hdCB2YWx1ZXMgb2YgdGhlCi8vLyAgICAxMjgtYml0IHZlY3RvcnMgb2YgWzQgeCBmbG9hdF0gZm9yIGluZXF1YWxpdHkuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUE5FUVBTIC8gQ01QTkVRUFMgPC9jPgovLy8gICBpbnN0cnVjdGlvbnMuCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY21wbmVxX3BzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpCnsKICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl9jbXBuZXFwcygoX192NHNmKV9fYSwgKF9fdjRzZilfX2IpOwp9CgovLy8gQ29tcGFyZXMgdHdvIDMyLWJpdCBmbG9hdCB2YWx1ZXMgaW4gdGhlIGxvdy1vcmRlciBiaXRzIG9mIGJvdGgKLy8vICAgIG9wZXJhbmRzIHRvIGRldGVybWluZSBpZiB0aGUgdmFsdWUgaW4gdGhlIGZpcnN0IG9wZXJhbmQgaXMgbm90IGxlc3MgdGhhbgovLy8gICAgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4gdGhlIHNlY29uZCBvcGVyYW5kIGFuZCByZXR1cm5zIHRoZSByZXN1bHQgb2YKLy8vICAgIHRoZSBjb21wYXJpc29uIGluIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBhIHZlY3RvciBvZiBbNCB4IGZsb2F0XS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QTkxUU1MgLyBDTVBOTFRTUyA8L2M+Ci8vLyAgIGluc3RydWN0aW9ucy4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4gVGhlIGxvd2VyCi8vLyAgICAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLiBUaGUgbG93ZXIKLy8vICAgIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZSB1c2VkIGluIHRoZSBjb21wYXJpc29uLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMKLy8vICAgIGluIHRoZSBsb3ctb3JkZXIgYml0cy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY21wbmx0X3NzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpCnsKICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl9jbXBubHRzcygoX192NHNmKV9fYSwgKF9fdjRzZilfX2IpOwp9CgovLy8gQ29tcGFyZXMgZWFjaCBvZiB0aGUgY29ycmVzcG9uZGluZyAzMi1iaXQgZmxvYXQgdmFsdWVzIG9mIHRoZQovLy8gICAgMTI4LWJpdCB2ZWN0b3JzIG9mIFs0IHggZmxvYXRdIHRvIGRldGVybWluZSBpZiB0aGUgdmFsdWVzIGluIHRoZSBmaXJzdAovLy8gICAgb3BlcmFuZCBhcmUgbm90IGxlc3MgdGhhbiB0aG9zZSBpbiB0aGUgc2Vjb25kIG9wZXJhbmQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUE5MVFBTIC8gQ01QTkxUUFMgPC9jPgovLy8gICBpbnN0cnVjdGlvbnMuCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY21wbmx0X3BzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpCnsKICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl9jbXBubHRwcygoX192NHNmKV9fYSwgKF9fdjRzZilfX2IpOwp9CgovLy8gQ29tcGFyZXMgdHdvIDMyLWJpdCBmbG9hdCB2YWx1ZXMgaW4gdGhlIGxvdy1vcmRlciBiaXRzIG9mIGJvdGgKLy8vICAgIG9wZXJhbmRzIHRvIGRldGVybWluZSBpZiB0aGUgdmFsdWUgaW4gdGhlIGZpcnN0IG9wZXJhbmQgaXMgbm90IGxlc3MgdGhhbgovLy8gICAgb3IgZXF1YWwgdG8gdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4gdGhlIHNlY29uZCBvcGVyYW5kIGFuZCByZXR1cm5zCi8vLyAgICB0aGUgcmVzdWx0IG9mIHRoZSBjb21wYXJpc29uIGluIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBhIHZlY3RvciBvZgovLy8gICAgWzQgeCBmbG9hdF0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUE5MRVNTIC8gQ01QTkxFU1MgPC9jPgovLy8gICBpbnN0cnVjdGlvbnMuCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuIFRoZSBsb3dlcgovLy8gICAgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4gVGhlIGxvd2VyCi8vLyAgICAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzCi8vLyAgICBpbiB0aGUgbG93LW9yZGVyIGJpdHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2NtcG5sZV9zcyhfX20xMjggX19hLCBfX20xMjggX19iKQp7CiAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfY21wbmxlc3MoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19iKTsKfQoKLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgMzItYml0IGZsb2F0IHZhbHVlcyBvZiB0aGUKLy8vICAgIDEyOC1iaXQgdmVjdG9ycyBvZiBbNCB4IGZsb2F0XSB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlcyBpbiB0aGUgZmlyc3QKLy8vICAgIG9wZXJhbmQgYXJlIG5vdCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhvc2UgaW4gdGhlIHNlY29uZCBvcGVyYW5kLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBOTEVQUyAvIENNUE5MRVBTIDwvYz4KLy8vICAgaW5zdHJ1Y3Rpb25zLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2NtcG5sZV9wcyhfX20xMjggX19hLCBfX20xMjggX19iKQp7CiAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfY21wbmxlcHMoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19iKTsKfQoKLy8vIENvbXBhcmVzIHR3byAzMi1iaXQgZmxvYXQgdmFsdWVzIGluIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBib3RoCi8vLyAgICBvcGVyYW5kcyB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlIGluIHRoZSBmaXJzdCBvcGVyYW5kIGlzIG5vdCBncmVhdGVyCi8vLyAgICB0aGFuIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGluIHRoZSBzZWNvbmQgb3BlcmFuZCBhbmQgcmV0dXJucyB0aGUKLy8vICAgIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvbiBpbiB0aGUgbG93LW9yZGVyIGJpdHMgb2YgYSB2ZWN0b3Igb2YKLy8vICAgIFs0IHggZmxvYXRdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBOTFRTUyAvIENNUE5MVFNTIDwvYz4KLy8vICAgaW5zdHJ1Y3Rpb25zLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLiBUaGUgbG93ZXIKLy8vICAgIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZSB1c2VkIGluIHRoZSBjb21wYXJpc29uLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuIFRoZSBsb3dlcgovLy8gICAgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cwovLy8gICAgaW4gdGhlIGxvdy1vcmRlciBiaXRzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jbXBuZ3Rfc3MoX19tMTI4IF9fYSwgX19tMTI4IF9fYikKewogIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y0c2YpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX19idWlsdGluX2lhMzJfY21wbmx0c3MoKF9fdjRzZilfX2IsIChfX3Y0c2YpX19hKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LCAxLCAyLCAzKTsKfQoKLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgMzItYml0IGZsb2F0IHZhbHVlcyBvZiB0aGUKLy8vICAgIDEyOC1iaXQgdmVjdG9ycyBvZiBbNCB4IGZsb2F0XSB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlcyBpbiB0aGUgZmlyc3QKLy8vICAgIG9wZXJhbmQgYXJlIG5vdCBncmVhdGVyIHRoYW4gdGhvc2UgaW4gdGhlIHNlY29uZCBvcGVyYW5kLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBOTFRQUyAvIENNUE5MVFBTIDwvYz4KLy8vICAgaW5zdHJ1Y3Rpb25zLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2NtcG5ndF9wcyhfX20xMjggX19hLCBfX20xMjggX19iKQp7CiAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfY21wbmx0cHMoKF9fdjRzZilfX2IsIChfX3Y0c2YpX19hKTsKfQoKLy8vIENvbXBhcmVzIHR3byAzMi1iaXQgZmxvYXQgdmFsdWVzIGluIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBib3RoCi8vLyAgICBvcGVyYW5kcyB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlIGluIHRoZSBmaXJzdCBvcGVyYW5kIGlzIG5vdCBncmVhdGVyCi8vLyAgICB0aGFuIG9yIGVxdWFsIHRvIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGluIHRoZSBzZWNvbmQgb3BlcmFuZCBhbmQKLy8vICAgIHJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvbiBpbiB0aGUgbG93LW9yZGVyIGJpdHMgb2YgYSB2ZWN0b3IKLy8vICAgIG9mIFs0IHggZmxvYXRdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBOTEVTUyAvIENNUE5MRVNTIDwvYz4KLy8vICAgaW5zdHJ1Y3Rpb25zLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLiBUaGUgbG93ZXIKLy8vICAgIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZSB1c2VkIGluIHRoZSBjb21wYXJpc29uLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuIFRoZSBsb3dlcgovLy8gICAgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cwovLy8gICAgaW4gdGhlIGxvdy1vcmRlciBiaXRzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jbXBuZ2Vfc3MoX19tMTI4IF9fYSwgX19tMTI4IF9fYikKewogIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y0c2YpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX19idWlsdGluX2lhMzJfY21wbmxlc3MoKF9fdjRzZilfX2IsIChfX3Y0c2YpX19hKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LCAxLCAyLCAzKTsKfQoKLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgMzItYml0IGZsb2F0IHZhbHVlcyBvZiB0aGUKLy8vICAgIDEyOC1iaXQgdmVjdG9ycyBvZiBbNCB4IGZsb2F0XSB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlcyBpbiB0aGUgZmlyc3QKLy8vICAgIG9wZXJhbmQgYXJlIG5vdCBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhvc2UgaW4gdGhlIHNlY29uZCBvcGVyYW5kLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBOTEVQUyAvIENNUE5MRVBTIDwvYz4KLy8vICAgaW5zdHJ1Y3Rpb25zLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2NtcG5nZV9wcyhfX20xMjggX19hLCBfX20xMjggX19iKQp7CiAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfY21wbmxlcHMoKF9fdjRzZilfX2IsIChfX3Y0c2YpX19hKTsKfQoKLy8vIENvbXBhcmVzIHR3byAzMi1iaXQgZmxvYXQgdmFsdWVzIGluIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBib3RoCi8vLyAgICBvcGVyYW5kcyB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlIGluIHRoZSBmaXJzdCBvcGVyYW5kIGlzIG9yZGVyZWQgd2l0aAovLy8gICAgcmVzcGVjdCB0byB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBpbiB0aGUgc2Vjb25kIG9wZXJhbmQgYW5kIHJldHVybnMgdGhlCi8vLyAgICByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24gaW4gdGhlIGxvdy1vcmRlciBiaXRzIG9mIGEgdmVjdG9yIG9mCi8vLyAgICBbNCB4IGZsb2F0XS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QT1JEU1MgLyBDTVBPUkRTUyA8L2M+Ci8vLyAgIGluc3RydWN0aW9ucy4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4gVGhlIGxvd2VyCi8vLyAgICAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLiBUaGUgbG93ZXIKLy8vICAgIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZSB1c2VkIGluIHRoZSBjb21wYXJpc29uLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMKLy8vICAgIGluIHRoZSBsb3ctb3JkZXIgYml0cy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY21wb3JkX3NzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpCnsKICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl9jbXBvcmRzcygoX192NHNmKV9fYSwgKF9fdjRzZilfX2IpOwp9CgovLy8gQ29tcGFyZXMgZWFjaCBvZiB0aGUgY29ycmVzcG9uZGluZyAzMi1iaXQgZmxvYXQgdmFsdWVzIG9mIHRoZQovLy8gICAgMTI4LWJpdCB2ZWN0b3JzIG9mIFs0IHggZmxvYXRdIHRvIGRldGVybWluZSBpZiB0aGUgdmFsdWVzIGluIHRoZSBmaXJzdAovLy8gICAgb3BlcmFuZCBhcmUgb3JkZXJlZCB3aXRoIHJlc3BlY3QgdG8gdGhvc2UgaW4gdGhlIHNlY29uZCBvcGVyYW5kLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBPUkRQUyAvIENNUE9SRFBTIDwvYz4KLy8vICAgaW5zdHJ1Y3Rpb25zLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2NtcG9yZF9wcyhfX20xMjggX19hLCBfX20xMjggX19iKQp7CiAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfY21wb3JkcHMoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19iKTsKfQoKLy8vIENvbXBhcmVzIHR3byAzMi1iaXQgZmxvYXQgdmFsdWVzIGluIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBib3RoCi8vLyAgICBvcGVyYW5kcyB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlIGluIHRoZSBmaXJzdCBvcGVyYW5kIGlzIHVub3JkZXJlZAovLy8gICAgd2l0aCByZXNwZWN0IHRvIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGluIHRoZSBzZWNvbmQgb3BlcmFuZCBhbmQKLy8vICAgIHJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvbiBpbiB0aGUgbG93LW9yZGVyIGJpdHMgb2YgYSB2ZWN0b3IKLy8vICAgIG9mIFs0IHggZmxvYXRdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBVTk9SRFNTIC8gQ01QVU5PUkRTUyA8L2M+Ci8vLyAgIGluc3RydWN0aW9ucy4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4gVGhlIGxvd2VyCi8vLyAgICAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLiBUaGUgbG93ZXIKLy8vICAgIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZSB1c2VkIGluIHRoZSBjb21wYXJpc29uLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMKLy8vICAgIGluIHRoZSBsb3ctb3JkZXIgYml0cy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY21wdW5vcmRfc3MoX19tMTI4IF9fYSwgX19tMTI4IF9fYikKewogIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX2NtcHVub3Jkc3MoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19iKTsKfQoKLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgMzItYml0IGZsb2F0IHZhbHVlcyBvZiB0aGUKLy8vICAgIDEyOC1iaXQgdmVjdG9ycyBvZiBbNCB4IGZsb2F0XSB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlcyBpbiB0aGUgZmlyc3QKLy8vICAgIG9wZXJhbmQgYXJlIHVub3JkZXJlZCB3aXRoIHJlc3BlY3QgdG8gdGhvc2UgaW4gdGhlIHNlY29uZCBvcGVyYW5kLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBVTk9SRFBTIC8gQ01QVU5PUkRQUyA8L2M+Ci8vLyAgIGluc3RydWN0aW9ucy4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jbXB1bm9yZF9wcyhfX20xMjggX19hLCBfX20xMjggX19iKQp7CiAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfY21wdW5vcmRwcygoX192NHNmKV9fYSwgKF9fdjRzZilfX2IpOwp9CgovLy8gQ29tcGFyZXMgdHdvIDMyLWJpdCBmbG9hdCB2YWx1ZXMgaW4gdGhlIGxvdy1vcmRlciBiaXRzIG9mIGJvdGgKLy8vICAgIG9wZXJhbmRzIGZvciBlcXVhbGl0eSBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBjb21wYXJpc29uLgovLy8KLy8vICAgIElmIGVpdGhlciBvZiB0aGUgdHdvIGxvd2VyIDMyLWJpdCB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVybmVkLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDT01JU1MgLyBDT01JU1MgPC9jPgovLy8gICBpbnN0cnVjdGlvbnMuCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZQovLy8gICAgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUKLy8vICAgIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uCi8vLyBccmV0dXJucyBBbiBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4gSWYgZWl0aGVyIG9mIHRoZQovLy8gICAgdHdvIGxvd2VyIDMyLWJpdCB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVybmVkLgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jb21pZXFfc3MoX19tMTI4IF9fYSwgX19tMTI4IF9fYikKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9jb21pZXEoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19iKTsKfQoKLy8vIENvbXBhcmVzIHR3byAzMi1iaXQgZmxvYXQgdmFsdWVzIGluIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBib3RoCi8vLyAgICBvcGVyYW5kcyB0byBkZXRlcm1pbmUgaWYgdGhlIGZpcnN0IG9wZXJhbmQgaXMgbGVzcyB0aGFuIHRoZSBzZWNvbmQKLy8vICAgIG9wZXJhbmQgYW5kIHJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvbi4KLy8vCi8vLyAgICBJZiBlaXRoZXIgb2YgdGhlIHR3byBsb3dlciAzMi1iaXQgdmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ09NSVNTIC8gQ09NSVNTIDwvYz4KLy8vICAgaW5zdHJ1Y3Rpb25zLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUKLy8vICAgIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlCi8vLyAgICB1c2VkIGluIHRoZSBjb21wYXJpc29uLgovLy8gXHJldHVybnMgQW4gaW50ZWdlciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuIElmIGVpdGhlciBvZiB0aGUgdHdvCi8vLyAgICAgbG93ZXIgMzItYml0IHZhbHVlcyBpcyBOYU4sIDAgaXMgcmV0dXJuZWQuCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2NvbWlsdF9zcyhfX20xMjggX19hLCBfX20xMjggX19iKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2NvbWlsdCgoX192NHNmKV9fYSwgKF9fdjRzZilfX2IpOwp9CgovLy8gQ29tcGFyZXMgdHdvIDMyLWJpdCBmbG9hdCB2YWx1ZXMgaW4gdGhlIGxvdy1vcmRlciBiaXRzIG9mIGJvdGgKLy8vICAgIG9wZXJhbmRzIHRvIGRldGVybWluZSBpZiB0aGUgZmlyc3Qgb3BlcmFuZCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlCi8vLyAgICBzZWNvbmQgb3BlcmFuZCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBjb21wYXJpc29uLgovLy8KLy8vICAgIElmIGVpdGhlciBvZiB0aGUgdHdvIGxvd2VyIDMyLWJpdCB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVybmVkLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDT01JU1MgLyBDT01JU1MgPC9jPiBpbnN0cnVjdGlvbnMuCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZQovLy8gICAgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUKLy8vICAgIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uCi8vLyBccmV0dXJucyBBbiBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4gSWYgZWl0aGVyIG9mIHRoZSB0d28KLy8vICAgICBsb3dlciAzMi1iaXQgdmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4Kc3RhdGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY29taWxlX3NzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfY29taWxlKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYik7Cn0KCi8vLyBDb21wYXJlcyB0d28gMzItYml0IGZsb2F0IHZhbHVlcyBpbiB0aGUgbG93LW9yZGVyIGJpdHMgb2YgYm90aAovLy8gICAgb3BlcmFuZHMgdG8gZGV0ZXJtaW5lIGlmIHRoZSBmaXJzdCBvcGVyYW5kIGlzIGdyZWF0ZXIgdGhhbiB0aGUgc2Vjb25kCi8vLyAgICBvcGVyYW5kIGFuZCByZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24uCi8vLwovLy8gICAgSWYgZWl0aGVyIG9mIHRoZSB0d28gbG93ZXIgMzItYml0IHZhbHVlcyBpcyBOYU4sIDAgaXMgcmV0dXJuZWQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNPTUlTUyAvIENPTUlTUyA8L2M+IGluc3RydWN0aW9ucy4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlCi8vLyAgICB1c2VkIGluIHRoZSBjb21wYXJpc29uLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZQovLy8gICAgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4KLy8vIFxyZXR1cm5zIEFuIGludGVnZXIgY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLiBJZiBlaXRoZXIgb2YgdGhlCi8vLyAgICAgdHdvIGxvd2VyIDMyLWJpdCB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVybmVkLgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jb21pZ3Rfc3MoX19tMTI4IF9fYSwgX19tMTI4IF9fYikKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9jb21pZ3QoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19iKTsKfQoKLy8vIENvbXBhcmVzIHR3byAzMi1iaXQgZmxvYXQgdmFsdWVzIGluIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBib3RoCi8vLyAgICBvcGVyYW5kcyB0byBkZXRlcm1pbmUgaWYgdGhlIGZpcnN0IG9wZXJhbmQgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvCi8vLyAgICB0aGUgc2Vjb25kIG9wZXJhbmQgYW5kIHJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvbi4KLy8vCi8vLyAgICBJZiBlaXRoZXIgb2YgdGhlIHR3byBsb3dlciAzMi1iaXQgdmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ09NSVNTIC8gQ09NSVNTIDwvYz4gaW5zdHJ1Y3Rpb25zLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUKLy8vICAgIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlCi8vLyAgICB1c2VkIGluIHRoZSBjb21wYXJpc29uLgovLy8gXHJldHVybnMgQW4gaW50ZWdlciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuIElmIGVpdGhlciBvZiB0aGUgdHdvCi8vLyAgICBsb3dlciAzMi1iaXQgdmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4Kc3RhdGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY29taWdlX3NzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfY29taWdlKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYik7Cn0KCi8vLyBDb21wYXJlcyB0d28gMzItYml0IGZsb2F0IHZhbHVlcyBpbiB0aGUgbG93LW9yZGVyIGJpdHMgb2YgYm90aAovLy8gICAgb3BlcmFuZHMgdG8gZGV0ZXJtaW5lIGlmIHRoZSBmaXJzdCBvcGVyYW5kIGlzIG5vdCBlcXVhbCB0byB0aGUgc2Vjb25kCi8vLyAgICBvcGVyYW5kIGFuZCByZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24uCi8vLwovLy8gICAgSWYgZWl0aGVyIG9mIHRoZSB0d28gbG93ZXIgMzItYml0IHZhbHVlcyBpcyBOYU4sIDEgaXMgcmV0dXJuZWQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNPTUlTUyAvIENPTUlTUyA8L2M+IGluc3RydWN0aW9ucy4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlCi8vLyAgICB1c2VkIGluIHRoZSBjb21wYXJpc29uLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZQovLy8gICAgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4KLy8vIFxyZXR1cm5zIEFuIGludGVnZXIgY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLiBJZiBlaXRoZXIgb2YgdGhlCi8vLyAgICAgdHdvIGxvd2VyIDMyLWJpdCB2YWx1ZXMgaXMgTmFOLCAxIGlzIHJldHVybmVkLgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jb21pbmVxX3NzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfY29taW5lcSgoX192NHNmKV9fYSwgKF9fdjRzZilfX2IpOwp9CgovLy8gUGVyZm9ybXMgYW4gdW5vcmRlcmVkIGNvbXBhcmlzb24gb2YgdHdvIDMyLWJpdCBmbG9hdCB2YWx1ZXMgdXNpbmcKLy8vICAgIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBib3RoIG9wZXJhbmRzIHRvIGRldGVybWluZSBlcXVhbGl0eSBhbmQgcmV0dXJucwovLy8gICAgdGhlIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvbi4KLy8vCi8vLyAgICBJZiBlaXRoZXIgb2YgdGhlIHR3byBsb3dlciAzMi1iaXQgdmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWVUNPTUlTUyAvIFVDT01JU1MgPC9jPiBpbnN0cnVjdGlvbnMuCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZQovLy8gICAgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUKLy8vICAgIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uCi8vLyBccmV0dXJucyBBbiBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4gSWYgZWl0aGVyIG9mIHRoZSB0d28KLy8vICAgICBsb3dlciAzMi1iaXQgdmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4Kc3RhdGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fdWNvbWllcV9zcyhfX20xMjggX19hLCBfX20xMjggX19iKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Vjb21pZXEoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19iKTsKfQoKLy8vIFBlcmZvcm1zIGFuIHVub3JkZXJlZCBjb21wYXJpc29uIG9mIHR3byAzMi1iaXQgZmxvYXQgdmFsdWVzIHVzaW5nCi8vLyAgICB0aGUgbG93LW9yZGVyIGJpdHMgb2YgYm90aCBvcGVyYW5kcyB0byBkZXRlcm1pbmUgaWYgdGhlIGZpcnN0IG9wZXJhbmQgaXMKLy8vICAgIGxlc3MgdGhhbiB0aGUgc2Vjb25kIG9wZXJhbmQgYW5kIHJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvbi4KLy8vCi8vLyAgICBJZiBlaXRoZXIgb2YgdGhlIHR3byBsb3dlciAzMi1iaXQgdmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWVUNPTUlTUyAvIFVDT01JU1MgPC9jPiBpbnN0cnVjdGlvbnMuCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZQovLy8gICAgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUKLy8vICAgIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uCi8vLyBccmV0dXJucyBBbiBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4gSWYgZWl0aGVyIG9mIHRoZSB0d28KLy8vICAgIGxvd2VyIDMyLWJpdCB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVybmVkLgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV91Y29taWx0X3NzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfdWNvbWlsdCgoX192NHNmKV9fYSwgKF9fdjRzZilfX2IpOwp9CgovLy8gUGVyZm9ybXMgYW4gdW5vcmRlcmVkIGNvbXBhcmlzb24gb2YgdHdvIDMyLWJpdCBmbG9hdCB2YWx1ZXMgdXNpbmcKLy8vICAgIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBib3RoIG9wZXJhbmRzIHRvIGRldGVybWluZSBpZiB0aGUgZmlyc3Qgb3BlcmFuZCBpcwovLy8gICAgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBzZWNvbmQgb3BlcmFuZCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZQovLy8gICAgY29tcGFyaXNvbi4KLy8vCi8vLyAgICBJZiBlaXRoZXIgb2YgdGhlIHR3byBsb3dlciAzMi1iaXQgdmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWVUNPTUlTUyAvIFVDT01JU1MgPC9jPiBpbnN0cnVjdGlvbnMuCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZQovLy8gICAgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUKLy8vICAgIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uCi8vLyBccmV0dXJucyBBbiBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4gSWYgZWl0aGVyIG9mIHRoZSB0d28KLy8vICAgICBsb3dlciAzMi1iaXQgdmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4Kc3RhdGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fdWNvbWlsZV9zcyhfX20xMjggX19hLCBfX20xMjggX19iKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Vjb21pbGUoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19iKTsKfQoKLy8vIFBlcmZvcm1zIGFuIHVub3JkZXJlZCBjb21wYXJpc29uIG9mIHR3byAzMi1iaXQgZmxvYXQgdmFsdWVzIHVzaW5nCi8vLyAgICB0aGUgbG93LW9yZGVyIGJpdHMgb2YgYm90aCBvcGVyYW5kcyB0byBkZXRlcm1pbmUgaWYgdGhlIGZpcnN0IG9wZXJhbmQgaXMKLy8vICAgIGdyZWF0ZXIgdGhhbiB0aGUgc2Vjb25kIG9wZXJhbmQgYW5kIHJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUKLy8vICAgIGNvbXBhcmlzb24uCi8vLwovLy8gICAgSWYgZWl0aGVyIG9mIHRoZSB0d28gbG93ZXIgMzItYml0IHZhbHVlcyBpcyBOYU4sIDAgaXMgcmV0dXJuZWQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlVDT01JU1MgLyBVQ09NSVNTIDwvYz4gaW5zdHJ1Y3Rpb25zLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUKLy8vICAgIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlCi8vLyAgICB1c2VkIGluIHRoZSBjb21wYXJpc29uLgovLy8gXHJldHVybnMgQW4gaW50ZWdlciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuIElmIGVpdGhlciBvZiB0aGUgdHdvCi8vLyAgICAgbG93ZXIgMzItYml0IHZhbHVlcyBpcyBOYU4sIDAgaXMgcmV0dXJuZWQuCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3Vjb21pZ3Rfc3MoX19tMTI4IF9fYSwgX19tMTI4IF9fYikKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl91Y29taWd0KChfX3Y0c2YpX19hLCAoX192NHNmKV9fYik7Cn0KCi8vLyBQZXJmb3JtcyBhbiB1bm9yZGVyZWQgY29tcGFyaXNvbiBvZiB0d28gMzItYml0IGZsb2F0IHZhbHVlcyB1c2luZwovLy8gICAgdGhlIGxvdy1vcmRlciBiaXRzIG9mIGJvdGggb3BlcmFuZHMgdG8gZGV0ZXJtaW5lIGlmIHRoZSBmaXJzdCBvcGVyYW5kIGlzCi8vLyAgICBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHNlY29uZCBvcGVyYW5kIGFuZCByZXR1cm5zIHRoZSByZXN1bHQgb2YKLy8vICAgIHRoZSBjb21wYXJpc29uLgovLy8KLy8vICAgIElmIGVpdGhlciBvZiB0aGUgdHdvIGxvd2VyIDMyLWJpdCB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVybmVkLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZVQ09NSVNTIC8gVUNPTUlTUyA8L2M+IGluc3RydWN0aW9ucy4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlCi8vLyAgICB1c2VkIGluIHRoZSBjb21wYXJpc29uLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZQovLy8gICAgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4KLy8vIFxyZXR1cm5zIEFuIGludGVnZXIgY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLiBJZiBlaXRoZXIgb2YgdGhlIHR3bwovLy8gICAgIGxvd2VyIDMyLWJpdCB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVybmVkLgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV91Y29taWdlX3NzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfdWNvbWlnZSgoX192NHNmKV9fYSwgKF9fdjRzZilfX2IpOwp9CgovLy8gUGVyZm9ybXMgYW4gdW5vcmRlcmVkIGNvbXBhcmlzb24gb2YgdHdvIDMyLWJpdCBmbG9hdCB2YWx1ZXMgdXNpbmcKLy8vICAgIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBib3RoIG9wZXJhbmRzIHRvIGRldGVybWluZSBpbmVxdWFsaXR5IGFuZCByZXR1cm5zCi8vLyAgICB0aGUgcmVzdWx0IG9mIHRoZSBjb21wYXJpc29uLgovLy8KLy8vICAgIElmIGVpdGhlciBvZiB0aGUgdHdvIGxvd2VyIDMyLWJpdCB2YWx1ZXMgaXMgTmFOLCAxIGlzIHJldHVybmVkLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZVQ09NSVNTIC8gVUNPTUlTUyA8L2M+IGluc3RydWN0aW9ucy4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlCi8vLyAgICB1c2VkIGluIHRoZSBjb21wYXJpc29uLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZQovLy8gICAgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4KLy8vIFxyZXR1cm5zIEFuIGludGVnZXIgY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLiBJZiBlaXRoZXIgb2YgdGhlIHR3bwovLy8gICAgbG93ZXIgMzItYml0IHZhbHVlcyBpcyBOYU4sIDEgaXMgcmV0dXJuZWQuCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3Vjb21pbmVxX3NzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfdWNvbWluZXEoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19iKTsKfQoKLy8vIENvbnZlcnRzIGEgZmxvYXQgdmFsdWUgY29udGFpbmVkIGluIHRoZSBsb3dlciAzMiBiaXRzIG9mIGEgdmVjdG9yIG9mCi8vLyAgICBbNCB4IGZsb2F0XSBpbnRvIGEgMzItYml0IGludGVnZXIuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNWVFNTMlNJIC8gQ1ZUU1MyU0kgPC9jPgovLy8gICBpbnN0cnVjdGlvbnMuCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZQovLy8gICAgdXNlZCBpbiB0aGUgY29udmVyc2lvbi4KLy8vIFxyZXR1cm5zIEEgMzItYml0IGludGVnZXIgY29udGFpbmluZyB0aGUgY29udmVydGVkIHZhbHVlLgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jdnRzc19zaTMyKF9fbTEyOCBfX2EpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfY3Z0c3Myc2koKF9fdjRzZilfX2EpOwp9CgovLy8gQ29udmVydHMgYSBmbG9hdCB2YWx1ZSBjb250YWluZWQgaW4gdGhlIGxvd2VyIDMyIGJpdHMgb2YgYSB2ZWN0b3Igb2YKLy8vICAgIFs0IHggZmxvYXRdIGludG8gYSAzMi1iaXQgaW50ZWdlci4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ1ZUU1MyU0kgLyBDVlRTUzJTSSA8L2M+Ci8vLyAgIGluc3RydWN0aW9ucy4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlCi8vLyAgICB1c2VkIGluIHRoZSBjb252ZXJzaW9uLgovLy8gXHJldHVybnMgQSAzMi1iaXQgaW50ZWdlciBjb250YWluaW5nIHRoZSBjb252ZXJ0ZWQgdmFsdWUuCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2N2dF9zczJzaShfX20xMjggX19hKQp7CiAgcmV0dXJuIF9tbV9jdnRzc19zaTMyKF9fYSk7Cn0KCiNpZmRlZiBfX3g4Nl82NF9fCgovLy8gQ29udmVydHMgYSBmbG9hdCB2YWx1ZSBjb250YWluZWQgaW4gdGhlIGxvd2VyIDMyIGJpdHMgb2YgYSB2ZWN0b3Igb2YKLy8vICAgIFs0IHggZmxvYXRdIGludG8gYSA2NC1iaXQgaW50ZWdlci4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ1ZUU1MyU0kgLyBDVlRTUzJTSSA8L2M+Ci8vLyAgIGluc3RydWN0aW9ucy4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlCi8vLyAgICB1c2VkIGluIHRoZSBjb252ZXJzaW9uLgovLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciBjb250YWluaW5nIHRoZSBjb252ZXJ0ZWQgdmFsdWUuCnN0YXRpYyBfX2lubGluZV9fIGxvbmcgbG9uZyBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2N2dHNzX3NpNjQoX19tMTI4IF9fYSkKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9jdnRzczJzaTY0KChfX3Y0c2YpX19hKTsKfQoKI2VuZGlmCgovLy8gQ29udmVydHMgdHdvIGxvdy1vcmRlciBmbG9hdCB2YWx1ZXMgaW4gYSAxMjgtYml0IHZlY3RvciBvZgovLy8gICAgWzQgeCBmbG9hdF0gaW50byBhIDY0LWJpdCB2ZWN0b3Igb2YgWzIgeCBpMzJdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IENWVFBTMlBJIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4KLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRlZCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgKX21tX2N2dHBzX3BpMzIoX19tMTI4IF9fYSkKewogIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfY3Z0cHMycGkoKF9fdjRzZilfX2EpOwp9CgovLy8gQ29udmVydHMgdHdvIGxvdy1vcmRlciBmbG9hdCB2YWx1ZXMgaW4gYSAxMjgtYml0IHZlY3RvciBvZgovLy8gICAgWzQgeCBmbG9hdF0gaW50byBhIDY0LWJpdCB2ZWN0b3Igb2YgWzIgeCBpMzJdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IENWVFBTMlBJIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4KLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRlZCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgKX21tX2N2dF9wczJwaShfX20xMjggX19hKQp7CiAgcmV0dXJuIF9tbV9jdnRwc19waTMyKF9fYSk7Cn0KCi8vLyBDb252ZXJ0cyBhIGZsb2F0IHZhbHVlIGNvbnRhaW5lZCBpbiB0aGUgbG93ZXIgMzIgYml0cyBvZiBhIHZlY3RvciBvZgovLy8gICAgWzQgeCBmbG9hdF0gaW50byBhIDMyLWJpdCBpbnRlZ2VyLCB0cnVuY2F0aW5nIHRoZSByZXN1bHQgd2hlbiBpdCBpcwovLy8gICAgaW5leGFjdC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ1ZUVFNTMlNJIC8gQ1ZUVFNTMlNJIDwvYz4KLy8vICAgaW5zdHJ1Y3Rpb25zLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUKLy8vICAgIHVzZWQgaW4gdGhlIGNvbnZlcnNpb24uCi8vLyBccmV0dXJucyBBIDMyLWJpdCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRlZCB2YWx1ZS4Kc3RhdGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY3Z0dHNzX3NpMzIoX19tMTI4IF9fYSkKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9jdnR0c3Myc2koKF9fdjRzZilfX2EpOwp9CgovLy8gQ29udmVydHMgYSBmbG9hdCB2YWx1ZSBjb250YWluZWQgaW4gdGhlIGxvd2VyIDMyIGJpdHMgb2YgYSB2ZWN0b3Igb2YKLy8vICAgIFs0IHggZmxvYXRdIGludG8gYSAzMi1iaXQgaW50ZWdlciwgdHJ1bmNhdGluZyB0aGUgcmVzdWx0IHdoZW4gaXQgaXMKLy8vICAgIGluZXhhY3QuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNWVFRTUzJTSSAvIENWVFRTUzJTSSA8L2M+Ci8vLyAgIGluc3RydWN0aW9ucy4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlCi8vLyAgICB1c2VkIGluIHRoZSBjb252ZXJzaW9uLgovLy8gXHJldHVybnMgQSAzMi1iaXQgaW50ZWdlciBjb250YWluaW5nIHRoZSBjb252ZXJ0ZWQgdmFsdWUuCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2N2dHRfc3Myc2koX19tMTI4IF9fYSkKewogIHJldHVybiBfbW1fY3Z0dHNzX3NpMzIoX19hKTsKfQoKI2lmZGVmIF9feDg2XzY0X18KLy8vIENvbnZlcnRzIGEgZmxvYXQgdmFsdWUgY29udGFpbmVkIGluIHRoZSBsb3dlciAzMiBiaXRzIG9mIGEgdmVjdG9yIG9mCi8vLyAgICBbNCB4IGZsb2F0XSBpbnRvIGEgNjQtYml0IGludGVnZXIsIHRydW5jYXRpbmcgdGhlIHJlc3VsdCB3aGVuIGl0IGlzCi8vLyAgICBpbmV4YWN0LgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDVlRUU1MyU0kgLyBDVlRUU1MyU0kgPC9jPgovLy8gICBpbnN0cnVjdGlvbnMuCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZQovLy8gICAgdXNlZCBpbiB0aGUgY29udmVyc2lvbi4KLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgY29udGFpbmluZyB0aGUgY29udmVydGVkIHZhbHVlLgpzdGF0aWMgX19pbmxpbmVfXyBsb25nIGxvbmcgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jdnR0c3Nfc2k2NChfX20xMjggX19hKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2N2dHRzczJzaTY0KChfX3Y0c2YpX19hKTsKfQojZW5kaWYKCi8vLyBDb252ZXJ0cyB0d28gbG93LW9yZGVyIGZsb2F0IHZhbHVlcyBpbiBhIDEyOC1iaXQgdmVjdG9yIG9mCi8vLyAgICBbNCB4IGZsb2F0XSBpbnRvIGEgNjQtYml0IHZlY3RvciBvZiBbMiB4IGkzMl0sIHRydW5jYXRpbmcgdGhlIHJlc3VsdAovLy8gICAgd2hlbiBpdCBpcyBpbmV4YWN0LgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IENWVFRQUzJQSSAvIFZUVFBTMlBJIDwvYz4KLy8vICAgaW5zdHJ1Y3Rpb25zLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uCi8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBjb252ZXJ0ZWQgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YCl9tbV9jdnR0cHNfcGkzMihfX20xMjggX19hKQp7CiAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9jdnR0cHMycGkoKF9fdjRzZilfX2EpOwp9CgovLy8gQ29udmVydHMgdHdvIGxvdy1vcmRlciBmbG9hdCB2YWx1ZXMgaW4gYSAxMjgtYml0IHZlY3RvciBvZiBbNCB4Ci8vLyAgICBmbG9hdF0gaW50byBhIDY0LWJpdCB2ZWN0b3Igb2YgWzIgeCBpMzJdLCB0cnVuY2F0aW5nIHRoZSByZXN1bHQgd2hlbiBpdAovLy8gICAgaXMgaW5leGFjdC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBDVlRUUFMyUEkgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLgovLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29udmVydGVkIHZhbHVlcy4Kc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTX01NWApfbW1fY3Z0dF9wczJwaShfX20xMjggX19hKQp7CiAgcmV0dXJuIF9tbV9jdnR0cHNfcGkzMihfX2EpOwp9CgovLy8gQ29udmVydHMgYSAzMi1iaXQgc2lnbmVkIGludGVnZXIgdmFsdWUgaW50byBhIGZsb2F0aW5nIHBvaW50IHZhbHVlCi8vLyAgICBhbmQgd3JpdGVzIGl0IHRvIHRoZSBsb3dlciAzMiBiaXRzIG9mIHRoZSBkZXN0aW5hdGlvbi4gVGhlIHJlbWFpbmluZwovLy8gICAgaGlnaGVyIG9yZGVyIGVsZW1lbnRzIG9mIHRoZSBkZXN0aW5hdGlvbiB2ZWN0b3IgYXJlIGNvcGllZCBmcm9tIHRoZQovLy8gICAgY29ycmVzcG9uZGluZyBlbGVtZW50cyBpbiB0aGUgZmlyc3Qgb3BlcmFuZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ1ZUU0kyU1MgLyBDVlRTSTJTUyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDMyLWJpdCBzaWduZWQgaW50ZWdlciBvcGVyYW5kIGNvbnRhaW5pbmcgdGhlIHZhbHVlIHRvIGJlIGNvbnZlcnRlZC4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gd2hvc2UgbG93ZXIgMzIgYml0cyBjb250YWluIHRoZQovLy8gICAgY29udmVydGVkIHZhbHVlIG9mIHRoZSBzZWNvbmQgb3BlcmFuZC4gVGhlIHVwcGVyIDk2IGJpdHMgYXJlIGNvcGllZCBmcm9tCi8vLyAgICB0aGUgdXBwZXIgOTYgYml0cyBvZiB0aGUgZmlyc3Qgb3BlcmFuZC4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY3Z0c2kzMl9zcyhfX20xMjggX19hLCBpbnQgX19iKQp7CiAgX19hWzBdID0gX19iOwogIHJldHVybiBfX2E7Cn0KCi8vLyBDb252ZXJ0cyBhIDMyLWJpdCBzaWduZWQgaW50ZWdlciB2YWx1ZSBpbnRvIGEgZmxvYXRpbmcgcG9pbnQgdmFsdWUKLy8vICAgIGFuZCB3cml0ZXMgaXQgdG8gdGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhlIGRlc3RpbmF0aW9uLiBUaGUgcmVtYWluaW5nCi8vLyAgICBoaWdoZXIgb3JkZXIgZWxlbWVudHMgb2YgdGhlIGRlc3RpbmF0aW9uIGFyZSBjb3BpZWQgZnJvbSB0aGUKLy8vICAgIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgaW4gdGhlIGZpcnN0IG9wZXJhbmQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNWVFNJMlNTIC8gQ1ZUU0kyU1MgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAzMi1iaXQgc2lnbmVkIGludGVnZXIgb3BlcmFuZCBjb250YWluaW5nIHRoZSB2YWx1ZSB0byBiZSBjb252ZXJ0ZWQuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIHdob3NlIGxvd2VyIDMyIGJpdHMgY29udGFpbiB0aGUKLy8vICAgIGNvbnZlcnRlZCB2YWx1ZSBvZiB0aGUgc2Vjb25kIG9wZXJhbmQuIFRoZSB1cHBlciA5NiBiaXRzIGFyZSBjb3BpZWQgZnJvbQovLy8gICAgdGhlIHVwcGVyIDk2IGJpdHMgb2YgdGhlIGZpcnN0IG9wZXJhbmQuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2N2dF9zaTJzcyhfX20xMjggX19hLCBpbnQgX19iKQp7CiAgcmV0dXJuIF9tbV9jdnRzaTMyX3NzKF9fYSwgX19iKTsKfQoKI2lmZGVmIF9feDg2XzY0X18KCi8vLyBDb252ZXJ0cyBhIDY0LWJpdCBzaWduZWQgaW50ZWdlciB2YWx1ZSBpbnRvIGEgZmxvYXRpbmcgcG9pbnQgdmFsdWUKLy8vICAgIGFuZCB3cml0ZXMgaXQgdG8gdGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhlIGRlc3RpbmF0aW9uLiBUaGUgcmVtYWluaW5nCi8vLyAgICBoaWdoZXIgb3JkZXIgZWxlbWVudHMgb2YgdGhlIGRlc3RpbmF0aW9uIGFyZSBjb3BpZWQgZnJvbSB0aGUKLy8vICAgIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgaW4gdGhlIGZpcnN0IG9wZXJhbmQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNWVFNJMlNTIC8gQ1ZUU0kyU1MgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSA2NC1iaXQgc2lnbmVkIGludGVnZXIgb3BlcmFuZCBjb250YWluaW5nIHRoZSB2YWx1ZSB0byBiZSBjb252ZXJ0ZWQuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIHdob3NlIGxvd2VyIDMyIGJpdHMgY29udGFpbiB0aGUKLy8vICAgIGNvbnZlcnRlZCB2YWx1ZSBvZiB0aGUgc2Vjb25kIG9wZXJhbmQuIFRoZSB1cHBlciA5NiBiaXRzIGFyZSBjb3BpZWQgZnJvbQovLy8gICAgdGhlIHVwcGVyIDk2IGJpdHMgb2YgdGhlIGZpcnN0IG9wZXJhbmQuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2N2dHNpNjRfc3MoX19tMTI4IF9fYSwgbG9uZyBsb25nIF9fYikKewogIF9fYVswXSA9IF9fYjsKICByZXR1cm4gX19hOwp9CgojZW5kaWYKCi8vLyBDb252ZXJ0cyB0d28gZWxlbWVudHMgb2YgYSA2NC1iaXQgdmVjdG9yIG9mIFsyIHggaTMyXSBpbnRvIHR3bwovLy8gICAgZmxvYXRpbmcgcG9pbnQgdmFsdWVzIGFuZCB3cml0ZXMgdGhlbSB0byB0aGUgbG93ZXIgNjQtYml0cyBvZiB0aGUKLy8vICAgIGRlc3RpbmF0aW9uLiBUaGUgcmVtYWluaW5nIGhpZ2hlciBvcmRlciBlbGVtZW50cyBvZiB0aGUgZGVzdGluYXRpb24gYXJlCi8vLyAgICBjb3BpZWQgZnJvbSB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBpbiB0aGUgZmlyc3Qgb3BlcmFuZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBDVlRQSTJQUyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDY0LWJpdCB2ZWN0b3Igb2YgWzIgeCBpMzJdLiBUaGUgZWxlbWVudHMgaW4gdGhpcyB2ZWN0b3IgYXJlIGNvbnZlcnRlZAovLy8gICAgYW5kIHdyaXR0ZW4gdG8gdGhlIGNvcnJlc3BvbmRpbmcgbG93LW9yZGVyIGVsZW1lbnRzIGluIHRoZSBkZXN0aW5hdGlvbi4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gd2hvc2UgbG93ZXIgNjQgYml0cyBjb250YWluIHRoZQovLy8gICAgY29udmVydGVkIHZhbHVlIG9mIHRoZSBzZWNvbmQgb3BlcmFuZC4gVGhlIHVwcGVyIDY0IGJpdHMgYXJlIGNvcGllZCBmcm9tCi8vLyAgICB0aGUgdXBwZXIgNjQgYml0cyBvZiB0aGUgZmlyc3Qgb3BlcmFuZC4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSU19NTVgKX21tX2N2dHBpMzJfcHMoX19tMTI4IF9fYSwgX19tNjQgX19iKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2N2dHBpMnBzKChfX3Y0c2YpX19hLCAoX192MnNpKV9fYik7Cn0KCi8vLyBDb252ZXJ0cyB0d28gZWxlbWVudHMgb2YgYSA2NC1iaXQgdmVjdG9yIG9mIFsyIHggaTMyXSBpbnRvIHR3bwovLy8gICAgZmxvYXRpbmcgcG9pbnQgdmFsdWVzIGFuZCB3cml0ZXMgdGhlbSB0byB0aGUgbG93ZXIgNjQtYml0cyBvZiB0aGUKLy8vICAgIGRlc3RpbmF0aW9uLiBUaGUgcmVtYWluaW5nIGhpZ2hlciBvcmRlciBlbGVtZW50cyBvZiB0aGUgZGVzdGluYXRpb24gYXJlCi8vLyAgICBjb3BpZWQgZnJvbSB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBpbiB0aGUgZmlyc3Qgb3BlcmFuZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBDVlRQSTJQUyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDY0LWJpdCB2ZWN0b3Igb2YgWzIgeCBpMzJdLiBUaGUgZWxlbWVudHMgaW4gdGhpcyB2ZWN0b3IgYXJlIGNvbnZlcnRlZAovLy8gICAgYW5kIHdyaXR0ZW4gdG8gdGhlIGNvcnJlc3BvbmRpbmcgbG93LW9yZGVyIGVsZW1lbnRzIGluIHRoZSBkZXN0aW5hdGlvbi4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gd2hvc2UgbG93ZXIgNjQgYml0cyBjb250YWluIHRoZQovLy8gICAgY29udmVydGVkIHZhbHVlIGZyb20gdGhlIHNlY29uZCBvcGVyYW5kLiBUaGUgdXBwZXIgNjQgYml0cyBhcmUgY29waWVkCi8vLyAgICBmcm9tIHRoZSB1cHBlciA2NCBiaXRzIG9mIHRoZSBmaXJzdCBvcGVyYW5kLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTX01NWApfbW1fY3Z0X3BpMnBzKF9fbTEyOCBfX2EsIF9fbTY0IF9fYikKewogIHJldHVybiBfbW1fY3Z0cGkzMl9wcyhfX2EsIF9fYik7Cn0KCi8vLyBFeHRyYWN0cyBhIGZsb2F0IHZhbHVlIGNvbnRhaW5lZCBpbiB0aGUgbG93ZXIgMzIgYml0cyBvZiBhIHZlY3RvciBvZgovLy8gICAgWzQgeCBmbG9hdF0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGhhcyBubyBjb3JyZXNwb25kaW5nIGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUKLy8vICAgIHVzZWQgaW4gdGhlIGV4dHJhY3Rpb24uCi8vLyBccmV0dXJucyBBIDMyLWJpdCBmbG9hdCBjb250YWluaW5nIHRoZSBleHRyYWN0ZWQgdmFsdWUuCnN0YXRpYyBfX2lubGluZV9fIGZsb2F0IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY3Z0c3NfZjMyKF9fbTEyOCBfX2EpCnsKICByZXR1cm4gX19hWzBdOwp9CgovLy8gTG9hZHMgdHdvIHBhY2tlZCBmbG9hdCB2YWx1ZXMgZnJvbSB0aGUgYWRkcmVzcyBcYSBfX3AgaW50byB0aGUKLy8vICAgICBoaWdoLW9yZGVyIGJpdHMgb2YgYSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvdy1vcmRlciBiaXRzCi8vLyAgICAgYXJlIGNvcGllZCBmcm9tIHRoZSBsb3ctb3JkZXIgYml0cyBvZiB0aGUgZmlyc3Qgb3BlcmFuZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WSFBEIC8gTU9WSFBEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gQml0cyBbNjM6MF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbNjM6MF0KLy8vICAgIG9mIHRoZSBkZXN0aW5hdGlvbi4KLy8vIFxwYXJhbSBfX3AKLy8vICAgIEEgcG9pbnRlciB0byB0d28gcGFja2VkIGZsb2F0IHZhbHVlcy4gQml0cyBbNjM6MF0gYXJlIHdyaXR0ZW4gdG8gYml0cwovLy8gICAgWzEyNzo2NF0gb2YgdGhlIGRlc3RpbmF0aW9uLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBtb3ZlZCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2xvYWRoX3BpKF9fbTEyOCBfX2EsIGNvbnN0IF9fbTY0ICpfX3ApCnsKICB0eXBlZGVmIGZsb2F0IF9fbW1fbG9hZGhfcGlfdjJmMzIgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDgpKSk7CiAgc3RydWN0IF9fbW1fbG9hZGhfcGlfc3RydWN0IHsKICAgIF9fbW1fbG9hZGhfcGlfdjJmMzIgX191OwogIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOwogIF9fbW1fbG9hZGhfcGlfdjJmMzIgX19iID0gKChjb25zdCBzdHJ1Y3QgX19tbV9sb2FkaF9waV9zdHJ1Y3QqKV9fcCktPl9fdTsKICBfX20xMjggX19iYiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fYiwgX19iLCAwLCAxLCAwLCAxKTsKICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19hLCBfX2JiLCAwLCAxLCA0LCA1KTsKfQoKLy8vIExvYWRzIHR3byBwYWNrZWQgZmxvYXQgdmFsdWVzIGZyb20gdGhlIGFkZHJlc3MgXGEgX19wIGludG8gdGhlCi8vLyAgICBsb3ctb3JkZXIgYml0cyBvZiBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgaGlnaC1vcmRlciBiaXRzCi8vLyAgICBhcmUgY29waWVkIGZyb20gdGhlIGhpZ2gtb3JkZXIgYml0cyBvZiB0aGUgZmlyc3Qgb3BlcmFuZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WTFBEIC8gTU9WTFBEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gQml0cyBbMTI3OjY0XSBhcmUgd3JpdHRlbiB0byBiaXRzCi8vLyAgICBbMTI3OjY0XSBvZiB0aGUgZGVzdGluYXRpb24uCi8vLyBccGFyYW0gX19wCi8vLyAgICBBIHBvaW50ZXIgdG8gdHdvIHBhY2tlZCBmbG9hdCB2YWx1ZXMuIEJpdHMgWzYzOjBdIGFyZSB3cml0dGVuIHRvIGJpdHMKLy8vICAgIFs2MzowXSBvZiB0aGUgZGVzdGluYXRpb24uCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIG1vdmVkIHZhbHVlcy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fbG9hZGxfcGkoX19tMTI4IF9fYSwgY29uc3QgX19tNjQgKl9fcCkKewogIHR5cGVkZWYgZmxvYXQgX19tbV9sb2FkbF9waV92MmYzMiBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oOCkpKTsKICBzdHJ1Y3QgX19tbV9sb2FkbF9waV9zdHJ1Y3QgewogICAgX19tbV9sb2FkbF9waV92MmYzMiBfX3U7CiAgfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19fKSk7CiAgX19tbV9sb2FkbF9waV92MmYzMiBfX2IgPSAoKGNvbnN0IHN0cnVjdCBfX21tX2xvYWRsX3BpX3N0cnVjdCopX19wKS0+X191OwogIF9fbTEyOCBfX2JiID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19iLCBfX2IsIDAsIDEsIDAsIDEpOwogIHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX2EsIF9fYmIsIDQsIDUsIDIsIDMpOwp9CgovLy8gQ29uc3RydWN0cyBhIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIKLy8vICAgIDMyIGJpdHMgb2YgdGhlIHZlY3RvciBhcmUgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgc2luZ2xlLXByZWNpc2lvbgovLy8gICAgZmxvYXRpbmctcG9pbnQgdmFsdWUgbG9hZGVkIGZyb20gYSBzcGVjaWZpZWQgbWVtb3J5IGxvY2F0aW9uLiBUaGUgdXBwZXIKLy8vICAgIDk2IGJpdHMgYXJlIHNldCB0byB6ZXJvLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZTUyAvIE1PVlNTIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fcAovLy8gICAgQSBwb2ludGVyIHRvIGEgMzItYml0IG1lbW9yeSBsb2NhdGlvbiBjb250YWluaW5nIGEgc2luZ2xlLXByZWNpc2lvbgovLy8gICAgZmxvYXRpbmctcG9pbnQgdmFsdWUuCi8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlCi8vLyAgICBsb3dlciAzMiBiaXRzIGNvbnRhaW4gdGhlIHZhbHVlIGxvYWRlZCBmcm9tIHRoZSBtZW1vcnkgbG9jYXRpb24uIFRoZQovLy8gICAgdXBwZXIgOTYgYml0cyBhcmUgc2V0IHRvIHplcm8uCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2xvYWRfc3MoY29uc3QgZmxvYXQgKl9fcCkKewogIHN0cnVjdCBfX21tX2xvYWRfc3Nfc3RydWN0IHsKICAgIGZsb2F0IF9fdTsKICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsKICBmbG9hdCBfX3UgPSAoKGNvbnN0IHN0cnVjdCBfX21tX2xvYWRfc3Nfc3RydWN0KilfX3ApLT5fX3U7CiAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOCl7IF9fdSwgMCwgMCwgMCB9Owp9CgovLy8gTG9hZHMgYSAzMi1iaXQgZmxvYXQgdmFsdWUgYW5kIGR1cGxpY2F0ZXMgaXQgdG8gYWxsIGZvdXIgdmVjdG9yCi8vLyAgICBlbGVtZW50cyBvZiBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZCUk9BRENBU1RTUyAvIE1PVlNTICsgc2h1ZmZsaW5nIDwvYz4KLy8vICAgIGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX3AKLy8vICAgIEEgcG9pbnRlciB0byBhIGZsb2F0IHZhbHVlIHRvIGJlIGxvYWRlZCBhbmQgZHVwbGljYXRlZC4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgbG9hZGVkIGFuZAovLy8gICAgZHVwbGljYXRlZCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2xvYWQxX3BzKGNvbnN0IGZsb2F0ICpfX3ApCnsKICBzdHJ1Y3QgX19tbV9sb2FkMV9wc19zdHJ1Y3QgewogICAgZmxvYXQgX191OwogIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOwogIGZsb2F0IF9fdSA9ICgoY29uc3Qgc3RydWN0IF9fbW1fbG9hZDFfcHNfc3RydWN0KilfX3ApLT5fX3U7CiAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOCl7IF9fdSwgX191LCBfX3UsIF9fdSB9Owp9CgojZGVmaW5lICAgICAgICBfbW1fbG9hZF9wczEocCkgX21tX2xvYWQxX3BzKHApCgovLy8gTG9hZHMgYSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBmcm9tIGFuIGFsaWduZWQKLy8vICAgIG1lbW9yeSBsb2NhdGlvbi4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WQVBTIC8gTU9WQVBTIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fcAovLy8gICAgQSBwb2ludGVyIHRvIGEgMTI4LWJpdCBtZW1vcnkgbG9jYXRpb24uIFRoZSBhZGRyZXNzIG9mIHRoZSBtZW1vcnkKLy8vICAgIGxvY2F0aW9uIGhhcyB0byBiZSAxMjgtYml0IGFsaWduZWQuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGxvYWRlZCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2xvYWRfcHMoY29uc3QgZmxvYXQgKl9fcCkKewogIHJldHVybiAqKGNvbnN0IF9fbTEyOCopX19wOwp9CgovLy8gTG9hZHMgYSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBmcm9tIGFuCi8vLyAgICB1bmFsaWduZWQgbWVtb3J5IGxvY2F0aW9uLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZVUFMgLyBNT1ZVUFMgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19wCi8vLyAgICBBIHBvaW50ZXIgdG8gYSAxMjgtYml0IG1lbW9yeSBsb2NhdGlvbi4gVGhlIGFkZHJlc3Mgb2YgdGhlIG1lbW9yeQovLy8gICAgbG9jYXRpb24gZG9lcyBub3QgaGF2ZSB0byBiZSBhbGlnbmVkLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBsb2FkZWQgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9sb2FkdV9wcyhjb25zdCBmbG9hdCAqX19wKQp7CiAgc3RydWN0IF9fbG9hZHVfcHMgewogICAgX19tMTI4X3UgX192OwogIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOwogIHJldHVybiAoKGNvbnN0IHN0cnVjdCBfX2xvYWR1X3BzKilfX3ApLT5fX3Y7Cn0KCi8vLyBMb2FkcyBmb3VyIHBhY2tlZCBmbG9hdCB2YWx1ZXMsIGluIHJldmVyc2Ugb3JkZXIsIGZyb20gYW4gYWxpZ25lZAovLy8gICAgbWVtb3J5IGxvY2F0aW9uIHRvIDMyLWJpdCBlbGVtZW50cyBpbiBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZBUFMgLyBNT1ZBUFMgKyBzaHVmZmxpbmcgPC9jPgovLy8gICAgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fcAovLy8gICAgQSBwb2ludGVyIHRvIGEgMTI4LWJpdCBtZW1vcnkgbG9jYXRpb24uIFRoZSBhZGRyZXNzIG9mIHRoZSBtZW1vcnkKLy8vICAgIGxvY2F0aW9uIGhhcyB0byBiZSAxMjgtYml0IGFsaWduZWQuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIG1vdmVkIHZhbHVlcywgbG9hZGVkCi8vLyAgICBpbiByZXZlcnNlIG9yZGVyLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9sb2Fkcl9wcyhjb25zdCBmbG9hdCAqX19wKQp7CiAgX19tMTI4IF9fYSA9IF9tbV9sb2FkX3BzKF9fcCk7CiAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYSwgMywgMiwgMSwgMCk7Cn0KCi8vLyBDcmVhdGUgYSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSB3aXRoIHVuZGVmaW5lZCB2YWx1ZXMuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGhhcyBubyBjb3JyZXNwb25kaW5nIGluc3RydWN0aW9uLgovLy8KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB1bmRlZmluZWQgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV91bmRlZmluZWRfcHModm9pZCkKewogIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3VuZGVmMTI4KCk7Cn0KCi8vLyBDb25zdHJ1Y3RzIGEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlcgovLy8gICAgMzIgYml0cyBvZiB0aGUgdmVjdG9yIGFyZSBpbml0aWFsaXplZCB3aXRoIHRoZSBzcGVjaWZpZWQgc2luZ2xlLXByZWNpc2lvbgovLy8gICAgZmxvYXRpbmctcG9pbnQgdmFsdWUuIFRoZSB1cHBlciA5NiBiaXRzIGFyZSBzZXQgdG8gemVyby4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WU1MgLyBNT1ZTUyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX3cKLy8vICAgIEEgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgdGhlIGxvd2VyIDMyCi8vLyAgICBiaXRzIG9mIHRoZSByZXN1bHQuCi8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlCi8vLyAgICBsb3dlciAzMiBiaXRzIGNvbnRhaW4gdGhlIHZhbHVlIHByb3ZpZGVkIGluIHRoZSBzb3VyY2Ugb3BlcmFuZC4gVGhlCi8vLyAgICB1cHBlciA5NiBiaXRzIGFyZSBzZXQgdG8gemVyby4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc2V0X3NzKGZsb2F0IF9fdykKewogIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjgpeyBfX3csIDAsIDAsIDAgfTsKfQoKLy8vIENvbnN0cnVjdHMgYSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XSwgd2l0aCBlYWNoCi8vLyAgICBvZiB0aGUgZm91ciBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZlY3RvciBlbGVtZW50cyBzZXQgdG8gdGhlCi8vLyAgICBzcGVjaWZpZWQgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEVSTUlMUFMgLyBQRVJNSUxQUyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX3cKLy8vICAgIEEgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgZWFjaCB2ZWN0b3IKLy8vICAgIGVsZW1lbnQgb2YgdGhlIHJlc3VsdC4KLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zZXQxX3BzKGZsb2F0IF9fdykKewogIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjgpeyBfX3csIF9fdywgX193LCBfX3cgfTsKfQoKLyogTWljcm9zb2Z0IHNwZWNpZmljLiAqLwovLy8gQ29uc3RydWN0cyBhIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLCB3aXRoIGVhY2gKLy8vICAgIG9mIHRoZSBmb3VyIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmVjdG9yIGVsZW1lbnRzIHNldCB0byB0aGUKLy8vICAgIHNwZWNpZmllZCBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQRVJNSUxQUyAvIFBFUk1JTFBTIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fdwovLy8gICAgQSBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBlYWNoIHZlY3RvcgovLy8gICAgZWxlbWVudCBvZiB0aGUgcmVzdWx0LgovLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3NldF9wczEoZmxvYXQgX193KQp7CiAgICByZXR1cm4gX21tX3NldDFfcHMoX193KTsKfQoKLy8vIENvbnN0cnVjdHMgYSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XQovLy8gICAgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWVzLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBpcyBhIHV0aWxpdHkgZnVuY3Rpb24gYW5kIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBzcGVjaWZpYwovLy8gICAgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fegovLy8gICAgQSBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxMjc6OTZdCi8vLyAgICBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9feQovLy8gICAgQSBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs5NTo2NF0KLy8vICAgIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX194Ci8vLyAgICBBIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzYzOjMyXQovLy8gICAgb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX3cKLy8vICAgIEEgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMzE6MF0KLy8vICAgIG9mIHRoZSByZXN1bHQuCi8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc2V0X3BzKGZsb2F0IF9feiwgZmxvYXQgX195LCBmbG9hdCBfX3gsIGZsb2F0IF9fdykKewogIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjgpeyBfX3csIF9feCwgX195LCBfX3ogfTsKfQoKLy8vIENvbnN0cnVjdHMgYSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XSwKLy8vICAgIGluaXRpYWxpemVkIGluIHJldmVyc2Ugb3JkZXIgd2l0aCB0aGUgc3BlY2lmaWVkIDMyLWJpdCBzaW5nbGUtcHJlY2lzaW9uCi8vLyAgICBmbG9hdC1wb2ludCB2YWx1ZXMuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGlzIGEgdXRpbGl0eSBmdW5jdGlvbiBhbmQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHNwZWNpZmljCi8vLyAgICBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX196Ci8vLyAgICBBIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzMxOjBdCi8vLyAgICBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9feQovLy8gICAgQSBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs2MzozMl0KLy8vICAgIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX194Ci8vLyAgICBBIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzk1OjY0XQovLy8gICAgb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX3cKLy8vICAgIEEgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTI3Ojk2XQovLy8gICAgb2YgdGhlIHJlc3VsdC4KLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zZXRyX3BzKGZsb2F0IF9feiwgZmxvYXQgX195LCBmbG9hdCBfX3gsIGZsb2F0IF9fdykKewogIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjgpeyBfX3osIF9feSwgX194LCBfX3cgfTsKfQoKLy8vIENvbnN0cnVjdHMgYSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBpbml0aWFsaXplZAovLy8gICAgdG8gemVyby4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWWE9SUFMgLyBYT1JQUyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIHdpdGgKLy8vICAgIGFsbCBlbGVtZW50cyBzZXQgdG8gemVyby4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc2V0emVyb19wcyh2b2lkKQp7CiAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOCl7IDAsIDAsIDAsIDAgfTsKfQoKLy8vIFN0b3JlcyB0aGUgdXBwZXIgNjQgYml0cyBvZiBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIHRvIGEKLy8vICAgIG1lbW9yeSBsb2NhdGlvbi4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEVYVFJRIC8gUEVYVFJRIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fcAovLy8gICAgQSBwb2ludGVyIHRvIGEgNjQtYml0IG1lbW9yeSBsb2NhdGlvbi4KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgdmFsdWVzIHRvIGJlIHN0b3JlZC4Kc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3N0b3JlaF9waShfX202NCAqX19wLCBfX20xMjggX19hKQp7CiAgdHlwZWRlZiBmbG9hdCBfX21tX3N0b3JlaF9waV92MmYzMiBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oOCkpKTsKICBzdHJ1Y3QgX19tbV9zdG9yZWhfcGlfc3RydWN0IHsKICAgIF9fbW1fc3RvcmVoX3BpX3YyZjMyIF9fdTsKICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsKICAoKHN0cnVjdCBfX21tX3N0b3JlaF9waV9zdHJ1Y3QqKV9fcCktPl9fdSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fYSwgX19hLCAyLCAzKTsKfQoKLy8vIFN0b3JlcyB0aGUgbG93ZXIgNjQgYml0cyBvZiBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIHRvIGEKLy8vICAgICBtZW1vcnkgbG9jYXRpb24uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVkxQUyAvIE1PVkxQUyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX3AKLy8vICAgIEEgcG9pbnRlciB0byBhIG1lbW9yeSBsb2NhdGlvbiB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUgZmxvYXQgdmFsdWVzLgovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSB2YWx1ZXMgdG8gYmUgc3RvcmVkLgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc3RvcmVsX3BpKF9fbTY0ICpfX3AsIF9fbTEyOCBfX2EpCnsKICB0eXBlZGVmIGZsb2F0IF9fbW1fc3RvcmVoX3BpX3YyZjMyIF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXyg4KSkpOwogIHN0cnVjdCBfX21tX3N0b3JlaF9waV9zdHJ1Y3QgewogICAgX19tbV9zdG9yZWhfcGlfdjJmMzIgX191OwogIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOwogICgoc3RydWN0IF9fbW1fc3RvcmVoX3BpX3N0cnVjdCopX19wKS0+X191ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19hLCBfX2EsIDAsIDEpOwp9CgovLy8gU3RvcmVzIHRoZSBsb3dlciAzMiBiaXRzIG9mIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gdG8gYQovLy8gICAgIG1lbW9yeSBsb2NhdGlvbi4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WU1MgLyBNT1ZTUyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX3AKLy8vICAgIEEgcG9pbnRlciB0byBhIDMyLWJpdCBtZW1vcnkgbG9jYXRpb24uCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHZhbHVlIHRvIGJlIHN0b3JlZC4Kc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3N0b3JlX3NzKGZsb2F0ICpfX3AsIF9fbTEyOCBfX2EpCnsKICBzdHJ1Y3QgX19tbV9zdG9yZV9zc19zdHJ1Y3QgewogICAgZmxvYXQgX191OwogIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOwogICgoc3RydWN0IF9fbW1fc3RvcmVfc3Nfc3RydWN0KilfX3ApLT5fX3UgPSBfX2FbMF07Cn0KCi8vLyBTdG9yZXMgYSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSB0byBhbiB1bmFsaWduZWQgbWVtb3J5Ci8vLyAgICBsb2NhdGlvbi4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WVVBTIC8gTU9WVVBTIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fcAovLy8gICAgQSBwb2ludGVyIHRvIGEgMTI4LWJpdCBtZW1vcnkgbG9jYXRpb24uIFRoZSBhZGRyZXNzIG9mIHRoZSBtZW1vcnkKLy8vICAgIGxvY2F0aW9uIGRvZXMgbm90IGhhdmUgdG8gYmUgYWxpZ25lZC4KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgdmFsdWVzIHRvIGJlIHN0b3JlZC4Kc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3N0b3JldV9wcyhmbG9hdCAqX19wLCBfX20xMjggX19hKQp7CiAgc3RydWN0IF9fc3RvcmV1X3BzIHsKICAgIF9fbTEyOF91IF9fdjsKICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsKICAoKHN0cnVjdCBfX3N0b3JldV9wcyopX19wKS0+X192ID0gX19hOwp9CgovLy8gU3RvcmVzIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gaW50byBhbiBhbGlnbmVkIG1lbW9yeQovLy8gICAgbG9jYXRpb24uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVkFQUyAvIE1PVkFQUyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX3AKLy8vICAgIEEgcG9pbnRlciB0byBhIDEyOC1iaXQgbWVtb3J5IGxvY2F0aW9uLiBUaGUgYWRkcmVzcyBvZiB0aGUgbWVtb3J5Ci8vLyAgICBsb2NhdGlvbiBoYXMgdG8gYmUgMTYtYnl0ZSBhbGlnbmVkLgovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSB2YWx1ZXMgdG8gYmUgc3RvcmVkLgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc3RvcmVfcHMoZmxvYXQgKl9fcCwgX19tMTI4IF9fYSkKewogICooX19tMTI4KilfX3AgPSBfX2E7Cn0KCi8vLyBTdG9yZXMgdGhlIGxvd2VyIDMyIGJpdHMgb2YgYSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBpbnRvCi8vLyAgICBmb3VyIGNvbnRpZ3VvdXMgZWxlbWVudHMgaW4gYW4gYWxpZ25lZCBtZW1vcnkgbG9jYXRpb24uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIDxjPiBWTU9WQVBTIC8gTU9WQVBTICsgc2h1ZmZsaW5nIDwvYz4KLy8vICAgIGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX3AKLy8vICAgIEEgcG9pbnRlciB0byBhIDEyOC1iaXQgbWVtb3J5IGxvY2F0aW9uLgovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSB3aG9zZSBsb3dlciAzMiBiaXRzIGFyZSBzdG9yZWQgdG8gZWFjaAovLy8gICAgb2YgdGhlIGZvdXIgY29udGlndW91cyBlbGVtZW50cyBwb2ludGVkIGJ5IFxhIF9fcC4Kc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3N0b3JlMV9wcyhmbG9hdCAqX19wLCBfX20xMjggX19hKQp7CiAgX19hID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19hLCAwLCAwLCAwLCAwKTsKICBfbW1fc3RvcmVfcHMoX19wLCBfX2EpOwp9CgovLy8gU3RvcmVzIHRoZSBsb3dlciAzMiBiaXRzIG9mIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gaW50bwovLy8gICAgZm91ciBjb250aWd1b3VzIGVsZW1lbnRzIGluIGFuIGFsaWduZWQgbWVtb3J5IGxvY2F0aW9uLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byA8Yz4gVk1PVkFQUyAvIE1PVkFQUyArIHNodWZmbGluZyA8L2M+Ci8vLyAgICBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19wCi8vLyAgICBBIHBvaW50ZXIgdG8gYSAxMjgtYml0IG1lbW9yeSBsb2NhdGlvbi4KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gd2hvc2UgbG93ZXIgMzIgYml0cyBhcmUgc3RvcmVkIHRvIGVhY2gKLy8vICAgIG9mIHRoZSBmb3VyIGNvbnRpZ3VvdXMgZWxlbWVudHMgcG9pbnRlZCBieSBcYSBfX3AuCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zdG9yZV9wczEoZmxvYXQgKl9fcCwgX19tMTI4IF9fYSkKewogIF9tbV9zdG9yZTFfcHMoX19wLCBfX2EpOwp9CgovLy8gU3RvcmVzIGZsb2F0IHZhbHVlcyBmcm9tIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gdG8gYW4KLy8vICAgIGFsaWduZWQgbWVtb3J5IGxvY2F0aW9uIGluIHJldmVyc2Ugb3JkZXIuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVkFQUyAvIE1PVkFQUyArIHNodWZmbGluZyA8L2M+Ci8vLyAgICBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19wCi8vLyAgICBBIHBvaW50ZXIgdG8gYSAxMjgtYml0IG1lbW9yeSBsb2NhdGlvbi4gVGhlIGFkZHJlc3Mgb2YgdGhlIG1lbW9yeQovLy8gICAgbG9jYXRpb24gaGFzIHRvIGJlIDEyOC1iaXQgYWxpZ25lZC4KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgdmFsdWVzIHRvIGJlIHN0b3JlZC4Kc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3N0b3Jlcl9wcyhmbG9hdCAqX19wLCBfX20xMjggX19hKQp7CiAgX19hID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19hLCAzLCAyLCAxLCAwKTsKICBfbW1fc3RvcmVfcHMoX19wLCBfX2EpOwp9CgojZGVmaW5lIF9NTV9ISU5UX0VUMCA3CiNkZWZpbmUgX01NX0hJTlRfRVQxIDYKI2RlZmluZSBfTU1fSElOVF9UMCAgMwojZGVmaW5lIF9NTV9ISU5UX1QxICAyCiNkZWZpbmUgX01NX0hJTlRfVDIgIDEKI2RlZmluZSBfTU1fSElOVF9OVEEgMAoKI2lmbmRlZiBfTVNDX1ZFUgovKiBGSVhNRTogV2UgaGF2ZSB0byAjZGVmaW5lIHRoaXMgYmVjYXVzZSAic2VsIiBtdXN0IGJlIGEgY29uc3RhbnQgaW50ZWdlciwgYW5kCiAgIFNlbWEgZG9lc24ndCBkbyBhbnkgZm9ybSBvZiBjb25zdGFudCBwcm9wYWdhdGlvbiB5ZXQuICovCgovLy8gTG9hZHMgb25lIGNhY2hlIGxpbmUgb2YgZGF0YSBmcm9tIHRoZSBzcGVjaWZpZWQgYWRkcmVzcyB0byBhIGxvY2F0aW9uCi8vLyAgICBjbG9zZXIgdG8gdGhlIHByb2Nlc3Nvci4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gXGNvZGUKLy8vIHZvaWQgX21tX3ByZWZldGNoKGNvbnN0IHZvaWQgKiBhLCBjb25zdCBpbnQgc2VsKTsKLy8vIFxlbmRjb2RlCi8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQUkVGRVRDSE5UQSA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBhCi8vLyAgICBBIHBvaW50ZXIgdG8gYSBtZW1vcnkgbG9jYXRpb24gY29udGFpbmluZyBhIGNhY2hlIGxpbmUgb2YgZGF0YS4KLy8vIFxwYXJhbSBzZWwKLy8vICAgIEEgcHJlZGVmaW5lZCBpbnRlZ2VyIGNvbnN0YW50IHNwZWNpZnlpbmcgdGhlIHR5cGUgb2YgcHJlZmV0Y2gKLy8vICAgIG9wZXJhdGlvbjogXG4KLy8vICAgIF9NTV9ISU5UX05UQTogTW92ZSBkYXRhIHVzaW5nIHRoZSBub24tdGVtcG9yYWwgYWNjZXNzIChOVEEpIGhpbnQuIFRoZQovLy8gICAgUFJFRkVUQ0hOVEEgaW5zdHJ1Y3Rpb24gd2lsbCBiZSBnZW5lcmF0ZWQuIFxuCi8vLyAgICBfTU1fSElOVF9UMDogTW92ZSBkYXRhIHVzaW5nIHRoZSBUMCBoaW50LiBUaGUgUFJFRkVUQ0hUMCBpbnN0cnVjdGlvbiB3aWxsCi8vLyAgICBiZSBnZW5lcmF0ZWQuIFxuCi8vLyAgICBfTU1fSElOVF9UMTogTW92ZSBkYXRhIHVzaW5nIHRoZSBUMSBoaW50LiBUaGUgUFJFRkVUQ0hUMSBpbnN0cnVjdGlvbiB3aWxsCi8vLyAgICBiZSBnZW5lcmF0ZWQuIFxuCi8vLyAgICBfTU1fSElOVF9UMjogTW92ZSBkYXRhIHVzaW5nIHRoZSBUMiBoaW50LiBUaGUgUFJFRkVUQ0hUMiBpbnN0cnVjdGlvbiB3aWxsCi8vLyAgICBiZSBnZW5lcmF0ZWQuCiNkZWZpbmUgX21tX3ByZWZldGNoKGEsIHNlbCkgKF9fYnVpbHRpbl9wcmVmZXRjaCgoY29uc3Qgdm9pZCAqKShhKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChzZWwpID4+IDIpICYgMSwgKHNlbCkgJiAweDMpKQojZW5kaWYKCi8vLyBTdG9yZXMgYSA2NC1iaXQgaW50ZWdlciBpbiB0aGUgc3BlY2lmaWVkIGFsaWduZWQgbWVtb3J5IGxvY2F0aW9uLiBUbwovLy8gICAgbWluaW1pemUgY2FjaGluZywgdGhlIGRhdGEgaXMgZmxhZ2dlZCBhcyBub24tdGVtcG9yYWwgKHVubGlrZWx5IHRvIGJlCi8vLyAgICB1c2VkIGFnYWluIHNvb24pLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IE1PVk5UUSA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX3AKLy8vICAgIEEgcG9pbnRlciB0byBhbiBhbGlnbmVkIG1lbW9yeSBsb2NhdGlvbiB1c2VkIHRvIHN0b3JlIHRoZSByZWdpc3RlciB2YWx1ZS4KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgNjQtYml0IGludGVnZXIgY29udGFpbmluZyB0aGUgdmFsdWUgdG8gYmUgc3RvcmVkLgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSU19NTVgKX21tX3N0cmVhbV9waShfX202NCAqX19wLCBfX202NCBfX2EpCnsKICBfX2J1aWx0aW5faWEzMl9tb3ZudHEoX19wLCBfX2EpOwp9CgovLy8gTW92ZXMgcGFja2VkIGZsb2F0IHZhbHVlcyBmcm9tIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gdG8gYQovLy8gICAgMTI4LWJpdCBhbGlnbmVkIG1lbW9yeSBsb2NhdGlvbi4gVG8gbWluaW1pemUgY2FjaGluZywgdGhlIGRhdGEgaXMgZmxhZ2dlZAovLy8gICAgYXMgbm9uLXRlbXBvcmFsICh1bmxpa2VseSB0byBiZSB1c2VkIGFnYWluIHNvb24pLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZOVFBTIC8gTU9WTlRQUyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX3AKLy8vICAgIEEgcG9pbnRlciB0byBhIDEyOC1iaXQgYWxpZ25lZCBtZW1vcnkgbG9jYXRpb24gdGhhdCB3aWxsIHJlY2VpdmUgdGhlCi8vLyAgICBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcy4KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgdmFsdWVzIHRvIGJlIG1vdmVkLgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc3RyZWFtX3BzKGZsb2F0ICpfX3AsIF9fbTEyOCBfX2EpCnsKICBfX2J1aWx0aW5fbm9udGVtcG9yYWxfc3RvcmUoKF9fdjRzZilfX2EsIChfX3Y0c2YqKV9fcCk7Cn0KCiNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQpleHRlcm4gIkMiIHsKI2VuZGlmCgovLy8gRm9yY2VzIHN0cm9uZyBtZW1vcnkgb3JkZXJpbmcgKHNlcmlhbGl6YXRpb24pIGJldHdlZW4gc3RvcmUKLy8vICAgIGluc3RydWN0aW9ucyBwcmVjZWRpbmcgdGhpcyBpbnN0cnVjdGlvbiBhbmQgc3RvcmUgaW5zdHJ1Y3Rpb25zIGZvbGxvd2luZwovLy8gICAgdGhpcyBpbnN0cnVjdGlvbiwgZW5zdXJpbmcgdGhlIHN5c3RlbSBjb21wbGV0ZXMgYWxsIHByZXZpb3VzIHN0b3JlcwovLy8gICAgYmVmb3JlIGV4ZWN1dGluZyBzdWJzZXF1ZW50IHN0b3Jlcy4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBTRkVOQ0UgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCnZvaWQgX21tX3NmZW5jZSh2b2lkKTsKCiNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQp9IC8vIGV4dGVybiAiQyIKI2VuZGlmCgovLy8gRXh0cmFjdHMgMTYtYml0IGVsZW1lbnQgZnJvbSBhIDY0LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMTZdIGFuZAovLy8gICAgcmV0dXJucyBpdCwgYXMgc3BlY2lmaWVkIGJ5IHRoZSBpbW1lZGlhdGUgaW50ZWdlciBvcGVyYW5kLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBcY29kZQovLy8gaW50IF9tbV9leHRyYWN0X3BpMTYoX19tNjQgYSwgaW50IG4pOwovLy8gXGVuZGNvZGUKLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQRVhUUlcgLyBQRVhUUlcgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gYQovLy8gICAgQSA2NC1iaXQgdmVjdG9yIG9mIFs0IHggaTE2XS4KLy8vIFxwYXJhbSBuCi8vLyAgICBBbiBpbW1lZGlhdGUgaW50ZWdlciBvcGVyYW5kIHRoYXQgZGV0ZXJtaW5lcyB3aGljaCBiaXRzIGFyZSBleHRyYWN0ZWQ6IFxuCi8vLyAgICAwOiBCaXRzIFsxNTowXSBhcmUgY29waWVkIHRvIHRoZSBkZXN0aW5hdGlvbi4gXG4KLy8vICAgIDE6IEJpdHMgWzMxOjE2XSBhcmUgY29waWVkIHRvIHRoZSBkZXN0aW5hdGlvbi4gXG4KLy8vICAgIDI6IEJpdHMgWzQ3OjMyXSBhcmUgY29waWVkIHRvIHRoZSBkZXN0aW5hdGlvbi4gXG4KLy8vICAgIDM6IEJpdHMgWzYzOjQ4XSBhcmUgY29waWVkIHRvIHRoZSBkZXN0aW5hdGlvbi4KLy8vIFxyZXR1cm5zIEEgMTYtYml0IGludGVnZXIgY29udGFpbmluZyB0aGUgZXh0cmFjdGVkIDE2IGJpdHMgb2YgcGFja2VkIGRhdGEuCiNkZWZpbmUgX21tX2V4dHJhY3RfcGkxNihhLCBuKSBcCiAgKChpbnQpX19idWlsdGluX2lhMzJfdmVjX2V4dF92NGhpKChfX3Y0aGkpYSwgKGludCluKSkKCi8vLyBDb3BpZXMgZGF0YSBmcm9tIHRoZSA2NC1iaXQgdmVjdG9yIG9mIFs0IHggaTE2XSB0byB0aGUgZGVzdGluYXRpb24sCi8vLyAgICBhbmQgaW5zZXJ0cyB0aGUgbG93ZXIgMTYtYml0cyBvZiBhbiBpbnRlZ2VyIG9wZXJhbmQgYXQgdGhlIDE2LWJpdCBvZmZzZXQKLy8vICAgIHNwZWNpZmllZCBieSB0aGUgaW1tZWRpYXRlIG9wZXJhbmQgXGEgbi4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gXGNvZGUKLy8vIF9fbTY0IF9tbV9pbnNlcnRfcGkxNihfX202NCBhLCBpbnQgZCwgaW50IG4pOwovLy8gXGVuZGNvZGUKLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBJTlNSVyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBhCi8vLyAgICBBIDY0LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMTZdLgovLy8gXHBhcmFtIGQKLy8vICAgIEFuIGludGVnZXIuIFRoZSBsb3dlciAxNi1iaXQgdmFsdWUgZnJvbSB0aGlzIG9wZXJhbmQgaXMgd3JpdHRlbiB0byB0aGUKLy8vICAgIGRlc3RpbmF0aW9uIGF0IHRoZSBvZmZzZXQgc3BlY2lmaWVkIGJ5IG9wZXJhbmQgXGEgbi4KLy8vIFxwYXJhbSBuCi8vLyAgICBBbiBpbW1lZGlhdGUgaW50ZWdlciBvcGVyYW50IHRoYXQgZGV0ZXJtaW5lcyB3aGljaCB0aGUgYml0cyB0byBiZSB1c2VkCi8vLyAgICBpbiB0aGUgZGVzdGluYXRpb24uIFxuCi8vLyAgICAwOiBCaXRzIFsxNTowXSBhcmUgY29waWVkIHRvIHRoZSBkZXN0aW5hdGlvbi4gXG4KLy8vICAgIDE6IEJpdHMgWzMxOjE2XSBhcmUgY29waWVkIHRvIHRoZSBkZXN0aW5hdGlvbi4gXG4KLy8vICAgIDI6IEJpdHMgWzQ3OjMyXSBhcmUgY29waWVkIHRvIHRoZSBkZXN0aW5hdGlvbi4gXG4KLy8vICAgIDM6IEJpdHMgWzYzOjQ4XSBhcmUgY29waWVkIHRvIHRoZSBkZXN0aW5hdGlvbi4gIFxuCi8vLyAgICBUaGUgcmVtYWluaW5nIGJpdHMgaW4gdGhlIGRlc3RpbmF0aW9uIGFyZSBjb3BpZWQgZnJvbSB0aGUgY29ycmVzcG9uZGluZwovLy8gICAgYml0cyBpbiBvcGVyYW5kIFxhIGEuCi8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBjb3BpZWQgcGFja2VkIGRhdGEgZnJvbSB0aGUKLy8vICAgIG9wZXJhbmRzLgojZGVmaW5lIF9tbV9pbnNlcnRfcGkxNihhLCBkLCBuKSBcCiAgKChfX202NClfX2J1aWx0aW5faWEzMl92ZWNfc2V0X3Y0aGkoKF9fdjRoaSlhLCAoaW50KWQsIChpbnQpbikpCgovLy8gQ29tcGFyZXMgZWFjaCBvZiB0aGUgY29ycmVzcG9uZGluZyBwYWNrZWQgMTYtYml0IGludGVnZXIgdmFsdWVzIG9mCi8vLyAgICB0aGUgNjQtYml0IGludGVnZXIgdmVjdG9ycywgYW5kIHdyaXRlcyB0aGUgZ3JlYXRlciB2YWx1ZSB0byB0aGUKLy8vICAgIGNvcnJlc3BvbmRpbmcgYml0cyBpbiB0aGUgZGVzdGluYXRpb24uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUE1BWFNXIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuCi8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgKX21tX21heF9waTE2KF9fbTY0IF9fYSwgX19tNjQgX19iKQp7CiAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wbWF4c3coKF9fdjRoaSlfX2EsIChfX3Y0aGkpX19iKTsKfQoKLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgcGFja2VkIDgtYml0IHVuc2lnbmVkIGludGVnZXIKLy8vICAgIHZhbHVlcyBvZiB0aGUgNjQtYml0IGludGVnZXIgdmVjdG9ycywgYW5kIHdyaXRlcyB0aGUgZ3JlYXRlciB2YWx1ZSB0byB0aGUKLy8vICAgIGNvcnJlc3BvbmRpbmcgYml0cyBpbiB0aGUgZGVzdGluYXRpb24uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUE1BWFVCIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuCi8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgKX21tX21heF9wdTgoX19tNjQgX19hLCBfX202NCBfX2IpCnsKICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BtYXh1YigoX192OHFpKV9fYSwgKF9fdjhxaSlfX2IpOwp9CgovLy8gQ29tcGFyZXMgZWFjaCBvZiB0aGUgY29ycmVzcG9uZGluZyBwYWNrZWQgMTYtYml0IGludGVnZXIgdmFsdWVzIG9mCi8vLyAgICB0aGUgNjQtYml0IGludGVnZXIgdmVjdG9ycywgYW5kIHdyaXRlcyB0aGUgbGVzc2VyIHZhbHVlIHRvIHRoZQovLy8gICAgY29ycmVzcG9uZGluZyBiaXRzIGluIHRoZSBkZXN0aW5hdGlvbi4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQTUlOU1cgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4KLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4Kc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTX01NWApfbW1fbWluX3BpMTYoX19tNjQgX19hLCBfX202NCBfX2IpCnsKICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BtaW5zdygoX192NGhpKV9fYSwgKF9fdjRoaSlfX2IpOwp9CgovLy8gQ29tcGFyZXMgZWFjaCBvZiB0aGUgY29ycmVzcG9uZGluZyBwYWNrZWQgOC1iaXQgdW5zaWduZWQgaW50ZWdlcgovLy8gICAgdmFsdWVzIG9mIHRoZSA2NC1iaXQgaW50ZWdlciB2ZWN0b3JzLCBhbmQgd3JpdGVzIHRoZSBsZXNzZXIgdmFsdWUgdG8gdGhlCi8vLyAgICBjb3JyZXNwb25kaW5nIGJpdHMgaW4gdGhlIGRlc3RpbmF0aW9uLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBNSU5VQiA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLgovLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YCl9tbV9taW5fcHU4KF9fbTY0IF9fYSwgX19tNjQgX19iKQp7CiAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wbWludWIoKF9fdjhxaSlfX2EsIChfX3Y4cWkpX19iKTsKfQoKLy8vIFRha2VzIHRoZSBtb3N0IHNpZ25pZmljYW50IGJpdCBmcm9tIGVhY2ggOC1iaXQgZWxlbWVudCBpbiBhIDY0LWJpdAovLy8gICAgaW50ZWdlciB2ZWN0b3IgdG8gY3JlYXRlIGFuIDgtYml0IG1hc2sgdmFsdWUuIFplcm8tZXh0ZW5kcyB0aGUgdmFsdWUgdG8KLy8vICAgIDMyLWJpdCBpbnRlZ2VyIGFuZCB3cml0ZXMgaXQgdG8gdGhlIGRlc3RpbmF0aW9uLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBNT1ZNU0tCIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgdmFsdWVzIHdpdGggYml0cyB0byBiZSBleHRyYWN0ZWQuCi8vLyBccmV0dXJucyBUaGUgbW9zdCBzaWduaWZpY2FudCBiaXQgZnJvbSBlYWNoIDgtYml0IGVsZW1lbnQgaW4gXGEgX19hLAovLy8gICAgd3JpdHRlbiB0byBiaXRzIFs3OjBdLgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTX01NWApfbW1fbW92ZW1hc2tfcGk4KF9fbTY0IF9fYSkKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9wbW92bXNrYigoX192OHFpKV9fYSk7Cn0KCi8vLyBNdWx0aXBsaWVzIHBhY2tlZCAxNi1iaXQgdW5zaWduZWQgaW50ZWdlciB2YWx1ZXMgYW5kIHdyaXRlcyB0aGUKLy8vICAgIGhpZ2gtb3JkZXIgMTYgYml0cyBvZiBlYWNoIDMyLWJpdCBwcm9kdWN0IHRvIHRoZSBjb3JyZXNwb25kaW5nIGJpdHMgaW4KLy8vICAgIHRoZSBkZXN0aW5hdGlvbi4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQTVVMSFVXIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuCi8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBwcm9kdWN0cyBvZiBib3RoIG9wZXJhbmRzLgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YCl9tbV9tdWxoaV9wdTE2KF9fbTY0IF9fYSwgX19tNjQgX19iKQp7CiAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wbXVsaHV3KChfX3Y0aGkpX19hLCAoX192NGhpKV9fYik7Cn0KCi8vLyBTaHVmZmxlcyB0aGUgNCAxNi1iaXQgaW50ZWdlcnMgZnJvbSBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciB0byB0aGUKLy8vICAgIGRlc3RpbmF0aW9uLCBhcyBzcGVjaWZpZWQgYnkgdGhlIGltbWVkaWF0ZSB2YWx1ZSBvcGVyYW5kLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBcY29kZQovLy8gX19tNjQgX21tX3NodWZmbGVfcGkxNihfX202NCBhLCBjb25zdCBpbnQgbik7Ci8vLyBcZW5kY29kZQovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFNIVUZXIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIGEKLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHZhbHVlcyB0byBiZSBzaHVmZmxlZC4KLy8vIFxwYXJhbSBuCi8vLyAgICBBbiBpbW1lZGlhdGUgdmFsdWUgY29udGFpbmluZyBhbiA4LWJpdCB2YWx1ZSBzcGVjaWZ5aW5nIHdoaWNoIGVsZW1lbnRzIHRvCi8vLyAgICBjb3B5IGZyb20gXGEgYS4gVGhlIGRlc3RpbmF0aW9ucyB3aXRoaW4gdGhlIDY0LWJpdCBkZXN0aW5hdGlvbiBhcmUKLy8vICAgIGFzc2lnbmVkIHZhbHVlcyBhcyBmb2xsb3dzOiBcbgovLy8gICAgQml0cyBbMTowXSBhcmUgdXNlZCB0byBhc3NpZ24gdmFsdWVzIHRvIGJpdHMgWzE1OjBdIGluIHRoZQovLy8gICAgZGVzdGluYXRpb24uIFxuCi8vLyAgICBCaXRzIFszOjJdIGFyZSB1c2VkIHRvIGFzc2lnbiB2YWx1ZXMgdG8gYml0cyBbMzE6MTZdIGluIHRoZQovLy8gICAgZGVzdGluYXRpb24uIFxuCi8vLyAgICBCaXRzIFs1OjRdIGFyZSB1c2VkIHRvIGFzc2lnbiB2YWx1ZXMgdG8gYml0cyBbNDc6MzJdIGluIHRoZQovLy8gICAgZGVzdGluYXRpb24uIFxuCi8vLyAgICBCaXRzIFs3OjZdIGFyZSB1c2VkIHRvIGFzc2lnbiB2YWx1ZXMgdG8gYml0cyBbNjM6NDhdIGluIHRoZQovLy8gICAgZGVzdGluYXRpb24uIFxuCi8vLyAgICBCaXQgdmFsdWUgYXNzaWdubWVudHM6IFxuCi8vLyAgICAwMDogYXNzaWduZWQgZnJvbSBiaXRzIFsxNTowXSBvZiBcYSBhLiBcbgovLy8gICAgMDE6IGFzc2lnbmVkIGZyb20gYml0cyBbMzE6MTZdIG9mIFxhIGEuIFxuCi8vLyAgICAxMDogYXNzaWduZWQgZnJvbSBiaXRzIFs0NzozMl0gb2YgXGEgYS4gXG4KLy8vICAgIDExOiBhc3NpZ25lZCBmcm9tIGJpdHMgWzYzOjQ4XSBvZiBcYSBhLgovLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgc2h1ZmZsZWQgdmFsdWVzLgojZGVmaW5lIF9tbV9zaHVmZmxlX3BpMTYoYSwgbikgXAogICgoX19tNjQpX19idWlsdGluX2lhMzJfcHNodWZ3KChfX3Y0aGkpKF9fbTY0KShhKSwgKG4pKSkKCi8vLyBDb25kaXRpb25hbGx5IGNvcGllcyB0aGUgdmFsdWVzIGZyb20gZWFjaCA4LWJpdCBlbGVtZW50IGluIHRoZSBmaXJzdAovLy8gICAgNjQtYml0IGludGVnZXIgdmVjdG9yIG9wZXJhbmQgdG8gdGhlIHNwZWNpZmllZCBtZW1vcnkgbG9jYXRpb24sIGFzCi8vLyAgICBzcGVjaWZpZWQgYnkgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0IGluIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgaW4gdGhlCi8vLyAgICBzZWNvbmQgNjQtYml0IGludGVnZXIgdmVjdG9yIG9wZXJhbmQuCi8vLwovLy8gICAgVG8gbWluaW1pemUgY2FjaGluZywgdGhlIGRhdGEgaXMgZmxhZ2dlZCBhcyBub24tdGVtcG9yYWwKLy8vICAgICh1bmxpa2VseSB0byBiZSB1c2VkIGFnYWluIHNvb24pLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IE1BU0tNT1ZRIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fZAovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgdmFsdWVzIHdpdGggZWxlbWVudHMgdG8gYmUgY29waWVkLgovLy8gXHBhcmFtIF9fbgovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb3BlcmFuZC4gVGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0IGZyb20gZWFjaCA4LWJpdAovLy8gICAgZWxlbWVudCBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBpbiBvcGVyYW5kIFxhIF9fZAovLy8gICAgaXMgY29waWVkLiBJZiB0aGUgbW9zdCBzaWduaWZpY2FudCBiaXQgb2YgYSBnaXZlbiBlbGVtZW50IGlzIDEsIHRoZQovLy8gICAgY29ycmVzcG9uZGluZyBlbGVtZW50IGluIG9wZXJhbmQgXGEgX19kIGlzIGNvcGllZC4KLy8vIFxwYXJhbSBfX3AKLy8vICAgIEEgcG9pbnRlciB0byBhIDY0LWJpdCBtZW1vcnkgbG9jYXRpb24gdGhhdCB3aWxsIHJlY2VpdmUgdGhlIGNvbmRpdGlvbmFsbHkKLy8vICAgIGNvcGllZCBpbnRlZ2VyIHZhbHVlcy4gVGhlIGFkZHJlc3Mgb2YgdGhlIG1lbW9yeSBsb2NhdGlvbiBkb2VzIG5vdCBoYXZlCi8vLyAgICB0byBiZSBhbGlnbmVkLgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSU19NTVgKX21tX21hc2ttb3ZlX3NpNjQoX19tNjQgX19kLCBfX202NCBfX24sIGNoYXIgKl9fcCkKewogIF9fYnVpbHRpbl9pYTMyX21hc2ttb3ZxKChfX3Y4cWkpX19kLCAoX192OHFpKV9fbiwgX19wKTsKfQoKLy8vIENvbXB1dGVzIHRoZSByb3VuZGVkIGF2ZXJhZ2VzIG9mIHRoZSBwYWNrZWQgdW5zaWduZWQgOC1iaXQgaW50ZWdlcgovLy8gICAgdmFsdWVzIGFuZCB3cml0ZXMgdGhlIGF2ZXJhZ2VzIHRvIHRoZSBjb3JyZXNwb25kaW5nIGJpdHMgaW4gdGhlCi8vLyAgICBkZXN0aW5hdGlvbi4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQQVZHQiA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLgovLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgYXZlcmFnZXMgb2YgYm90aCBvcGVyYW5kcy4Kc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTX01NWApfbW1fYXZnX3B1OChfX202NCBfX2EsIF9fbTY0IF9fYikKewogIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcGF2Z2IoKF9fdjhxaSlfX2EsIChfX3Y4cWkpX19iKTsKfQoKLy8vIENvbXB1dGVzIHRoZSByb3VuZGVkIGF2ZXJhZ2VzIG9mIHRoZSBwYWNrZWQgdW5zaWduZWQgMTYtYml0IGludGVnZXIKLy8vICAgIHZhbHVlcyBhbmQgd3JpdGVzIHRoZSBhdmVyYWdlcyB0byB0aGUgY29ycmVzcG9uZGluZyBiaXRzIGluIHRoZQovLy8gICAgZGVzdGluYXRpb24uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUEFWR1cgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4KLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGF2ZXJhZ2VzIG9mIGJvdGggb3BlcmFuZHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgKX21tX2F2Z19wdTE2KF9fbTY0IF9fYSwgX19tNjQgX19iKQp7CiAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wYXZndygoX192NGhpKV9fYSwgKF9fdjRoaSlfX2IpOwp9CgovLy8gU3VidHJhY3RzIHRoZSBjb3JyZXNwb25kaW5nIDgtYml0IHVuc2lnbmVkIGludGVnZXIgdmFsdWVzIG9mIHRoZSB0d28KLy8vICAgIDY0LWJpdCB2ZWN0b3Igb3BlcmFuZHMgYW5kIGNvbXB1dGVzIHRoZSBhYnNvbHV0ZSB2YWx1ZSBmb3IgZWFjaCBvZiB0aGUKLy8vICAgIGRpZmZlcmVuY2UuIFRoZW4gc3VtIG9mIHRoZSA4IGFic29sdXRlIGRpZmZlcmVuY2VzIGlzIHdyaXR0ZW4gdG8gdGhlCi8vLyAgICBiaXRzIFsxNTowXSBvZiB0aGUgZGVzdGluYXRpb247IHRoZSByZW1haW5pbmcgYml0cyBbNjM6MTZdIGFyZSBjbGVhcmVkLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBTQURCVyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLgovLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igd2hvc2UgbG93ZXIgMTYgYml0cyBjb250YWluIHRoZSBzdW1zIG9mIHRoZQovLy8gICAgc2V0cyBvZiBhYnNvbHV0ZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGJvdGggb3BlcmFuZHMuIFRoZSB1cHBlciBiaXRzIGFyZQovLy8gICAgY2xlYXJlZC4Kc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTX01NWApfbW1fc2FkX3B1OChfX202NCBfX2EsIF9fbTY0IF9fYikKewogIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcHNhZGJ3KChfX3Y4cWkpX19hLCAoX192OHFpKV9fYik7Cn0KCiNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQpleHRlcm4gIkMiIHsKI2VuZGlmCgovLy8gUmV0dXJucyB0aGUgY29udGVudHMgb2YgdGhlIE1YQ1NSIHJlZ2lzdGVyIGFzIGEgMzItYml0IHVuc2lnbmVkCi8vLyAgICBpbnRlZ2VyIHZhbHVlLgovLy8KLy8vICAgIFRoZXJlIGFyZSBzZXZlcmFsIGdyb3VwcyBvZiBtYWNyb3MgYXNzb2NpYXRlZCB3aXRoIHRoaXMKLy8vICAgIGludHJpbnNpYywgaW5jbHVkaW5nOgovLy8gICAgPHVsPgovLy8gICAgPGxpPgovLy8gICAgICBGb3IgY2hlY2tpbmcgZXhjZXB0aW9uIHN0YXRlczogX01NX0VYQ0VQVF9JTlZBTElELCBfTU1fRVhDRVBUX0RJVl9aRVJPLAovLy8gICAgICBfTU1fRVhDRVBUX0RFTk9STSwgX01NX0VYQ0VQVF9PVkVSRkxPVywgX01NX0VYQ0VQVF9VTkRFUkZMT1csCi8vLyAgICAgIF9NTV9FWENFUFRfSU5FWEFDVC4gVGhlcmUgaXMgYSBjb252ZW5pZW5jZSB3cmFwcGVyCi8vLyAgICAgIF9NTV9HRVRfRVhDRVBUSU9OX1NUQVRFKCkuCi8vLyAgICA8L2xpPgovLy8gICAgPGxpPgovLy8gICAgICBGb3IgY2hlY2tpbmcgZXhjZXB0aW9uIG1hc2tzOiBfTU1fTUFTS19VTkRFUkZMT1csIF9NTV9NQVNLX09WRVJGTE9XLAovLy8gICAgICBfTU1fTUFTS19JTlZBTElELCBfTU1fTUFTS19ERU5PUk0sIF9NTV9NQVNLX0RJVl9aRVJPLCBfTU1fTUFTS19JTkVYQUNULgovLy8gICAgICBUaGVyZSBpcyBhIGNvbnZlbmllbmNlIHdyYXBwZXIgX01NX0dFVF9FWENFUFRJT05fTUFTSygpLgovLy8gICAgPC9saT4KLy8vICAgIDxsaT4KLy8vICAgICAgRm9yIGNoZWNraW5nIHJvdW5kaW5nIG1vZGVzOiBfTU1fUk9VTkRfTkVBUkVTVCwgX01NX1JPVU5EX0RPV04sCi8vLyAgICAgIF9NTV9ST1VORF9VUCwgX01NX1JPVU5EX1RPV0FSRF9aRVJPLiBUaGVyZSBpcyBhIGNvbnZlbmllbmNlIHdyYXBwZXIKLy8vICAgICAgX01NX0dFVF9ST1VORElOR19NT0RFKCkuCi8vLyAgICA8L2xpPgovLy8gICAgPGxpPgovLy8gICAgICBGb3IgY2hlY2tpbmcgZmx1c2gtdG8temVybyBtb2RlOiBfTU1fRkxVU0hfWkVST19PTiwgX01NX0ZMVVNIX1pFUk9fT0ZGLgovLy8gICAgICBUaGVyZSBpcyBhIGNvbnZlbmllbmNlIHdyYXBwZXIgX01NX0dFVF9GTFVTSF9aRVJPX01PREUoKS4KLy8vICAgIDwvbGk+Ci8vLyAgICA8bGk+Ci8vLyAgICAgIEZvciBjaGVja2luZyBkZW5vcm1hbHMtYXJlLXplcm8gbW9kZTogX01NX0RFTk9STUFMU19aRVJPX09OLAovLy8gICAgICBfTU1fREVOT1JNQUxTX1pFUk9fT0ZGLiBUaGVyZSBpcyBhIGNvbnZlbmllbmNlIHdyYXBwZXIKLy8vICAgICAgX01NX0dFVF9ERU5PUk1BTFNfWkVST19NT0RFKCkuCi8vLyAgICA8L2xpPgovLy8gICAgPC91bD4KLy8vCi8vLyAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBleHByZXNzaW9uIGNoZWNrcyBpZiBhbiBvdmVyZmxvdyBleGNlcHRpb24gaGFzCi8vLyAgICBvY2N1cnJlZDoKLy8vICAgIFxjb2RlCi8vLyAgICAgICggX21tX2dldGNzcigpICYgX01NX0VYQ0VQVF9PVkVSRkxPVyApCi8vLyAgICBcZW5kY29kZQovLy8KLy8vICAgIFRoZSBmb2xsb3dpbmcgZXhwcmVzc2lvbiBnZXRzIHRoZSBjdXJyZW50IHJvdW5kaW5nIG1vZGU6Ci8vLyAgICBcY29kZQovLy8gICAgICBfTU1fR0VUX1JPVU5ESU5HX01PREUoKQovLy8gICAgXGVuZGNvZGUKLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWU1RNWENTUiAvIFNUTVhDU1IgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccmV0dXJucyBBIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNvbnRlbnRzIG9mIHRoZSBNWENTUgovLy8gICAgcmVnaXN0ZXIuCnVuc2lnbmVkIGludCBfbW1fZ2V0Y3NyKHZvaWQpOwoKLy8vIFNldHMgdGhlIE1YQ1NSIHJlZ2lzdGVyIHdpdGggdGhlIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlLgovLy8KLy8vICAgIFRoZXJlIGFyZSBzZXZlcmFsIGdyb3VwcyBvZiBtYWNyb3MgYXNzb2NpYXRlZCB3aXRoIHRoaXMgaW50cmluc2ljLAovLy8gICAgaW5jbHVkaW5nOgovLy8gICAgPHVsPgovLy8gICAgPGxpPgovLy8gICAgICBGb3Igc2V0dGluZyBleGNlcHRpb24gc3RhdGVzOiBfTU1fRVhDRVBUX0lOVkFMSUQsIF9NTV9FWENFUFRfRElWX1pFUk8sCi8vLyAgICAgIF9NTV9FWENFUFRfREVOT1JNLCBfTU1fRVhDRVBUX09WRVJGTE9XLCBfTU1fRVhDRVBUX1VOREVSRkxPVywKLy8vICAgICAgX01NX0VYQ0VQVF9JTkVYQUNULiBUaGVyZSBpcyBhIGNvbnZlbmllbmNlIHdyYXBwZXIKLy8vICAgICAgX01NX1NFVF9FWENFUFRJT05fU1RBVEUoeCkgd2hlcmUgeCBpcyBvbmUgb2YgdGhlc2UgbWFjcm9zLgovLy8gICAgPC9saT4KLy8vICAgIDxsaT4KLy8vICAgICAgRm9yIHNldHRpbmcgZXhjZXB0aW9uIG1hc2tzOiBfTU1fTUFTS19VTkRFUkZMT1csIF9NTV9NQVNLX09WRVJGTE9XLAovLy8gICAgICBfTU1fTUFTS19JTlZBTElELCBfTU1fTUFTS19ERU5PUk0sIF9NTV9NQVNLX0RJVl9aRVJPLCBfTU1fTUFTS19JTkVYQUNULgovLy8gICAgICBUaGVyZSBpcyBhIGNvbnZlbmllbmNlIHdyYXBwZXIgX01NX1NFVF9FWENFUFRJT05fTUFTSyh4KSB3aGVyZSB4IGlzIG9uZQovLy8gICAgICBvZiB0aGVzZSBtYWNyb3MuCi8vLyAgICA8L2xpPgovLy8gICAgPGxpPgovLy8gICAgICBGb3Igc2V0dGluZyByb3VuZGluZyBtb2RlczogX01NX1JPVU5EX05FQVJFU1QsIF9NTV9ST1VORF9ET1dOLAovLy8gICAgICBfTU1fUk9VTkRfVVAsIF9NTV9ST1VORF9UT1dBUkRfWkVSTy4gVGhlcmUgaXMgYSBjb252ZW5pZW5jZSB3cmFwcGVyCi8vLyAgICAgIF9NTV9TRVRfUk9VTkRJTkdfTU9ERSh4KSB3aGVyZSB4IGlzIG9uZSBvZiB0aGVzZSBtYWNyb3MuCi8vLyAgICA8L2xpPgovLy8gICAgPGxpPgovLy8gICAgICBGb3Igc2V0dGluZyBmbHVzaC10by16ZXJvIG1vZGU6IF9NTV9GTFVTSF9aRVJPX09OLCBfTU1fRkxVU0hfWkVST19PRkYuCi8vLyAgICAgIFRoZXJlIGlzIGEgY29udmVuaWVuY2Ugd3JhcHBlciBfTU1fU0VUX0ZMVVNIX1pFUk9fTU9ERSh4KSB3aGVyZSB4IGlzCi8vLyAgICAgIG9uZSBvZiB0aGVzZSBtYWNyb3MuCi8vLyAgICA8L2xpPgovLy8gICAgPGxpPgovLy8gICAgICBGb3Igc2V0dGluZyBkZW5vcm1hbHMtYXJlLXplcm8gbW9kZTogX01NX0RFTk9STUFMU19aRVJPX09OLAovLy8gICAgICBfTU1fREVOT1JNQUxTX1pFUk9fT0ZGLiBUaGVyZSBpcyBhIGNvbnZlbmllbmNlIHdyYXBwZXIKLy8vICAgICAgX01NX1NFVF9ERU5PUk1BTFNfWkVST19NT0RFKHgpIHdoZXJlIHggaXMgb25lIG9mIHRoZXNlIG1hY3Jvcy4KLy8vICAgIDwvbGk+Ci8vLyAgICA8L3VsPgovLy8KLy8vICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGV4cHJlc3Npb24gY2F1c2VzIHN1YnNlcXVlbnQgZmxvYXRpbmctcG9pbnQKLy8vICAgIG9wZXJhdGlvbnMgdG8gcm91bmQgdXA6Ci8vLyAgICAgIF9tbV9zZXRjc3IoX21tX2dldGNzcigpIHwgX01NX1JPVU5EX1VQKQovLy8KLy8vICAgIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBzZXRzIHRoZSBEQVogYW5kIEZUWiBmbGFnczoKLy8vICAgIFxjb2RlCi8vLyAgICB2b2lkIHNldEZsYWdzKCkgewovLy8gICAgICBfTU1fU0VUX0ZMVVNIX1pFUk9fTU9ERShfTU1fRkxVU0hfWkVST19PTik7Ci8vLyAgICAgIF9NTV9TRVRfREVOT1JNQUxTX1pFUk9fTU9ERShfTU1fREVOT1JNQUxTX1pFUk9fT04pOwovLy8gICAgfQovLy8gICAgXGVuZGNvZGUKLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTERNWENTUiAvIExETVhDU1IgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19pCi8vLyAgICBBIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlIHRvIGJlIHdyaXR0ZW4gdG8gdGhlIE1YQ1NSIHJlZ2lzdGVyLgp2b2lkIF9tbV9zZXRjc3IodW5zaWduZWQgaW50IF9faSk7CgojaWYgZGVmaW5lZChfX2NwbHVzcGx1cykKfSAvLyBleHRlcm4gIkMiCiNlbmRpZgoKLy8vIFNlbGVjdHMgNCBmbG9hdCB2YWx1ZXMgZnJvbSB0aGUgMTI4LWJpdCBvcGVyYW5kcyBvZiBbNCB4IGZsb2F0XSwgYXMKLy8vICAgIHNwZWNpZmllZCBieSB0aGUgaW1tZWRpYXRlIHZhbHVlIG9wZXJhbmQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFxjb2RlCi8vLyBfX20xMjggX21tX3NodWZmbGVfcHMoX19tMTI4IGEsIF9fbTEyOCBiLCBjb25zdCBpbnQgbWFzayk7Ci8vLyBcZW5kY29kZQovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlNIVUZQUyAvIFNIVUZQUyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBhCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLgovLy8gXHBhcmFtIGIKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uCi8vLyBccGFyYW0gbWFzawovLy8gICAgQW4gaW1tZWRpYXRlIHZhbHVlIGNvbnRhaW5pbmcgYW4gOC1iaXQgdmFsdWUgc3BlY2lmeWluZyB3aGljaCBlbGVtZW50cyB0bwovLy8gICAgY29weSBmcm9tIFxhIGEgYW5kIFxhIGIuIFxuCi8vLyAgICBCaXRzIFszOjBdIHNwZWNpZnkgdGhlIHZhbHVlcyBjb3BpZWQgZnJvbSBvcGVyYW5kIFxhIGEuIFxuCi8vLyAgICBCaXRzIFs3OjRdIHNwZWNpZnkgdGhlIHZhbHVlcyBjb3BpZWQgZnJvbSBvcGVyYW5kIFxhIGIuIFxuCi8vLyAgICBUaGUgZGVzdGluYXRpb25zIHdpdGhpbiB0aGUgMTI4LWJpdCBkZXN0aW5hdGlvbiBhcmUgYXNzaWduZWQgdmFsdWVzIGFzCi8vLyAgICBmb2xsb3dzOiBcbgovLy8gICAgQml0cyBbMTowXSBhcmUgdXNlZCB0byBhc3NpZ24gdmFsdWVzIHRvIGJpdHMgWzMxOjBdIGluIHRoZQovLy8gICAgZGVzdGluYXRpb24uIFxuCi8vLyAgICBCaXRzIFszOjJdIGFyZSB1c2VkIHRvIGFzc2lnbiB2YWx1ZXMgdG8gYml0cyBbNjM6MzJdIGluIHRoZQovLy8gICAgZGVzdGluYXRpb24uIFxuCi8vLyAgICBCaXRzIFs1OjRdIGFyZSB1c2VkIHRvIGFzc2lnbiB2YWx1ZXMgdG8gYml0cyBbOTU6NjRdIGluIHRoZQovLy8gICAgZGVzdGluYXRpb24uIFxuCi8vLyAgICBCaXRzIFs3OjZdIGFyZSB1c2VkIHRvIGFzc2lnbiB2YWx1ZXMgdG8gYml0cyBbMTI3Ojk2XSBpbiB0aGUKLy8vICAgIGRlc3RpbmF0aW9uLiBcbgovLy8gICAgQml0IHZhbHVlIGFzc2lnbm1lbnRzOiBcbgovLy8gICAgMDA6IEJpdHMgWzMxOjBdIGNvcGllZCBmcm9tIHRoZSBzcGVjaWZpZWQgb3BlcmFuZC4gXG4KLy8vICAgIDAxOiBCaXRzIFs2MzozMl0gY29waWVkIGZyb20gdGhlIHNwZWNpZmllZCBvcGVyYW5kLiBcbgovLy8gICAgMTA6IEJpdHMgWzk1OjY0XSBjb3BpZWQgZnJvbSB0aGUgc3BlY2lmaWVkIG9wZXJhbmQuIFxuCi8vLyAgICAxMTogQml0cyBbMTI3Ojk2XSBjb3BpZWQgZnJvbSB0aGUgc3BlY2lmaWVkIG9wZXJhbmQuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHNodWZmbGVkIHZhbHVlcy4KI2RlZmluZSBfbW1fc2h1ZmZsZV9wcyhhLCBiLCBtYXNrKSBcCiAgKChfX20xMjgpX19idWlsdGluX2lhMzJfc2h1ZnBzKChfX3Y0c2YpKF9fbTEyOCkoYSksIChfX3Y0c2YpKF9fbTEyOCkoYiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkobWFzaykpKQoKLy8vIFVucGFja3MgdGhlIGhpZ2gtb3JkZXIgKGluZGV4IDIsMykgdmFsdWVzIGZyb20gdHdvIDEyOC1iaXQgdmVjdG9ycyBvZgovLy8gICAgWzQgeCBmbG9hdF0gYW5kIGludGVybGVhdmVzIHRoZW0gaW50byBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZVTlBDS0hQUyAvIFVOUENLSFBTIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gXG4KLy8vICAgIEJpdHMgWzk1OjY0XSBhcmUgd3JpdHRlbiB0byBiaXRzIFszMTowXSBvZiB0aGUgZGVzdGluYXRpb24uIFxuCi8vLyAgICBCaXRzIFsxMjc6OTZdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzk1OjY0XSBvZiB0aGUgZGVzdGluYXRpb24uCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLgovLy8gICAgQml0cyBbOTU6NjRdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzYzOjMyXSBvZiB0aGUgZGVzdGluYXRpb24uIFxuCi8vLyAgICBCaXRzIFsxMjc6OTZdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzEyNzo5Nl0gb2YgdGhlIGRlc3RpbmF0aW9uLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBpbnRlcmxlYXZlZCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3VucGFja2hpX3BzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpCnsKICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19iLCAyLCA2LCAzLCA3KTsKfQoKLy8vIFVucGFja3MgdGhlIGxvdy1vcmRlciAoaW5kZXggMCwxKSB2YWx1ZXMgZnJvbSB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mCi8vLyAgICBbNCB4IGZsb2F0XSBhbmQgaW50ZXJsZWF2ZXMgdGhlbSBpbnRvIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlVOUENLTFBTIC8gVU5QQ0tMUFMgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBcbgovLy8gICAgQml0cyBbMzE6MF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMzE6MF0gb2YgdGhlIGRlc3RpbmF0aW9uLiAgXG4KLy8vICAgIEJpdHMgWzYzOjMyXSBhcmUgd3JpdHRlbiB0byBiaXRzIFs5NTo2NF0gb2YgdGhlIGRlc3RpbmF0aW9uLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gXG4KLy8vICAgIEJpdHMgWzMxOjBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzYzOjMyXSBvZiB0aGUgZGVzdGluYXRpb24uIFxuCi8vLyAgICBCaXRzIFs2MzozMl0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMTI3Ojk2XSBvZiB0aGUgZGVzdGluYXRpb24uCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGludGVybGVhdmVkIHZhbHVlcy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fdW5wYWNrbG9fcHMoX19tMTI4IF9fYSwgX19tMTI4IF9fYikKewogIHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192NHNmKV9fYSwgKF9fdjRzZilfX2IsIDAsIDQsIDEsIDUpOwp9CgovLy8gQ29uc3RydWN0cyBhIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIKLy8vICAgIDMyIGJpdHMgYXJlIHNldCB0byB0aGUgbG93ZXIgMzIgYml0cyBvZiB0aGUgc2Vjb25kIHBhcmFtZXRlci4gVGhlIHVwcGVyCi8vLyAgICA5NiBiaXRzIGFyZSBzZXQgdG8gdGhlIHVwcGVyIDk2IGJpdHMgb2YgdGhlIGZpcnN0IHBhcmFtZXRlci4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQkxFTkRQUyAvIEJMRU5EUFMgLyBNT1ZTUyA8L2M+Ci8vLyAgICBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgdXBwZXIgOTYgYml0cyBhcmUKLy8vICAgIHdyaXR0ZW4gdG8gdGhlIHVwcGVyIDk2IGJpdHMgb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciAzMiBiaXRzIGFyZQovLy8gICAgd3JpdHRlbiB0byB0aGUgbG93ZXIgMzIgYml0cyBvZiB0aGUgcmVzdWx0LgovLy8gXHJldHVybnMgQSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fbW92ZV9zcyhfX20xMjggX19hLCBfX20xMjggX19iKQp7CiAgX19hWzBdID0gX19iWzBdOwogIHJldHVybiBfX2E7Cn0KCi8vLyBDb25zdHJ1Y3RzIGEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlcgovLy8gICAgNjQgYml0cyBhcmUgc2V0IHRvIHRoZSB1cHBlciA2NCBiaXRzIG9mIHRoZSBzZWNvbmQgcGFyYW1ldGVyLiBUaGUgdXBwZXIKLy8vICAgIDY0IGJpdHMgYXJlIHNldCB0byB0aGUgdXBwZXIgNjQgYml0cyBvZiB0aGUgZmlyc3QgcGFyYW1ldGVyLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZVTlBDS0hQRCAvIFVOUENLSFBEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIHVwcGVyIDY0IGJpdHMgYXJlCi8vLyAgICB3cml0dGVuIHRvIHRoZSB1cHBlciA2NCBiaXRzIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgdXBwZXIgNjQgYml0cyBhcmUKLy8vICAgIHdyaXR0ZW4gdG8gdGhlIGxvd2VyIDY0IGJpdHMgb2YgdGhlIHJlc3VsdC4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX21vdmVobF9wcyhfX20xMjggX19hLCBfX20xMjggX19iKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYiwgNiwgNywgMiwgMyk7Cn0KCi8vLyBDb25zdHJ1Y3RzIGEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlcgovLy8gICAgNjQgYml0cyBhcmUgc2V0IHRvIHRoZSBsb3dlciA2NCBiaXRzIG9mIHRoZSBmaXJzdCBwYXJhbWV0ZXIuIFRoZSB1cHBlcgovLy8gICAgNjQgYml0cyBhcmUgc2V0IHRvIHRoZSBsb3dlciA2NCBiaXRzIG9mIHRoZSBzZWNvbmQgcGFyYW1ldGVyLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZVTlBDS0xQRCAvIFVOUENLTFBEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIDY0IGJpdHMgYXJlCi8vLyAgICB3cml0dGVuIHRvIHRoZSBsb3dlciA2NCBiaXRzIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIgNjQgYml0cyBhcmUKLy8vICAgIHdyaXR0ZW4gdG8gdGhlIHVwcGVyIDY0IGJpdHMgb2YgdGhlIHJlc3VsdC4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX21vdmVsaF9wcyhfX20xMjggX19hLCBfX20xMjggX19iKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYiwgMCwgMSwgNCwgNSk7Cn0KCi8vLyBDb252ZXJ0cyBhIDY0LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMTZdIGludG8gYSAxMjgtYml0IHZlY3RvciBvZiBbNCB4Ci8vLyAgICBmbG9hdF0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gQ1ZUUEkyUFMgKyBDT01QT1NJVEUgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDY0LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMTZdLiBUaGUgZWxlbWVudHMgb2YgdGhlIGRlc3RpbmF0aW9uIGFyZSBjb3BpZWQKLy8vICAgIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgaW4gdGhpcyBvcGVyYW5kLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb3BpZWQgYW5kIGNvbnZlcnRlZAovLy8gICAgdmFsdWVzIGZyb20gdGhlIG9wZXJhbmQuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YCl9tbV9jdnRwaTE2X3BzKF9fbTY0IF9fYSkKewogIF9fbTY0IF9fYiwgX19jOwogIF9fbTEyOCBfX3I7CgogIF9fYiA9IF9tbV9zZXR6ZXJvX3NpNjQoKTsKICBfX2IgPSBfbW1fY21wZ3RfcGkxNihfX2IsIF9fYSk7CiAgX19jID0gX21tX3VucGFja2hpX3BpMTYoX19hLCBfX2IpOwogIF9fciA9IF9tbV9zZXR6ZXJvX3BzKCk7CiAgX19yID0gX21tX2N2dHBpMzJfcHMoX19yLCBfX2MpOwogIF9fciA9IF9tbV9tb3ZlbGhfcHMoX19yLCBfX3IpOwogIF9fYyA9IF9tbV91bnBhY2tsb19waTE2KF9fYSwgX19iKTsKICBfX3IgPSBfbW1fY3Z0cGkzMl9wcyhfX3IsIF9fYyk7CgogIHJldHVybiBfX3I7Cn0KCi8vLyBDb252ZXJ0cyBhIDY0LWJpdCB2ZWN0b3Igb2YgMTYtYml0IHVuc2lnbmVkIGludGVnZXIgdmFsdWVzIGludG8gYQovLy8gICAgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gQ1ZUUEkyUFMgKyBDT01QT1NJVEUgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDY0LWJpdCB2ZWN0b3Igb2YgMTYtYml0IHVuc2lnbmVkIGludGVnZXIgdmFsdWVzLiBUaGUgZWxlbWVudHMgb2YgdGhlCi8vLyAgICBkZXN0aW5hdGlvbiBhcmUgY29waWVkIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgaW4gdGhpcyBvcGVyYW5kLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb3BpZWQgYW5kIGNvbnZlcnRlZAovLy8gICAgdmFsdWVzIGZyb20gdGhlIG9wZXJhbmQuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YCl9tbV9jdnRwdTE2X3BzKF9fbTY0IF9fYSkKewogIF9fbTY0IF9fYiwgX19jOwogIF9fbTEyOCBfX3I7CgogIF9fYiA9IF9tbV9zZXR6ZXJvX3NpNjQoKTsKICBfX2MgPSBfbW1fdW5wYWNraGlfcGkxNihfX2EsIF9fYik7CiAgX19yID0gX21tX3NldHplcm9fcHMoKTsKICBfX3IgPSBfbW1fY3Z0cGkzMl9wcyhfX3IsIF9fYyk7CiAgX19yID0gX21tX21vdmVsaF9wcyhfX3IsIF9fcik7CiAgX19jID0gX21tX3VucGFja2xvX3BpMTYoX19hLCBfX2IpOwogIF9fciA9IF9tbV9jdnRwaTMyX3BzKF9fciwgX19jKTsKCiAgcmV0dXJuIF9fcjsKfQoKLy8vIENvbnZlcnRzIHRoZSBsb3dlciBmb3VyIDgtYml0IHZhbHVlcyBmcm9tIGEgNjQtYml0IHZlY3RvciBvZiBbOCB4IGk4XQovLy8gICAgaW50byBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IENWVFBJMlBTICsgQ09NUE9TSVRFIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSA2NC1iaXQgdmVjdG9yIG9mIFs4IHggaThdLiBUaGUgZWxlbWVudHMgb2YgdGhlIGRlc3RpbmF0aW9uIGFyZSBjb3BpZWQKLy8vICAgIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgbG93ZXIgNCBlbGVtZW50cyBpbiB0aGlzIG9wZXJhbmQuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvcGllZCBhbmQgY29udmVydGVkCi8vLyAgICB2YWx1ZXMgZnJvbSB0aGUgb3BlcmFuZC4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSU19NTVgKX21tX2N2dHBpOF9wcyhfX202NCBfX2EpCnsKICBfX202NCBfX2I7CgogIF9fYiA9IF9tbV9zZXR6ZXJvX3NpNjQoKTsKICBfX2IgPSBfbW1fY21wZ3RfcGk4KF9fYiwgX19hKTsKICBfX2IgPSBfbW1fdW5wYWNrbG9fcGk4KF9fYSwgX19iKTsKCiAgcmV0dXJuIF9tbV9jdnRwaTE2X3BzKF9fYik7Cn0KCi8vLyBDb252ZXJ0cyB0aGUgbG93ZXIgZm91ciB1bnNpZ25lZCA4LWJpdCBpbnRlZ2VyIHZhbHVlcyBmcm9tIGEgNjQtYml0Ci8vLyAgICB2ZWN0b3Igb2YgWzggeCB1OF0gaW50byBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IENWVFBJMlBTICsgQ09NUE9TSVRFIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSA2NC1iaXQgdmVjdG9yIG9mIHVuc2lnbmVkIDgtYml0IGludGVnZXIgdmFsdWVzLiBUaGUgZWxlbWVudHMgb2YgdGhlCi8vLyAgICBkZXN0aW5hdGlvbiBhcmUgY29waWVkIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgbG93ZXIgNCBlbGVtZW50cyBpbiB0aGlzCi8vLyAgICBvcGVyYW5kLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb3BpZWQgYW5kIGNvbnZlcnRlZAovLy8gICAgdmFsdWVzIGZyb20gdGhlIHNvdXJjZSBvcGVyYW5kLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTX01NWApfbW1fY3Z0cHU4X3BzKF9fbTY0IF9fYSkKewogIF9fbTY0IF9fYjsKCiAgX19iID0gX21tX3NldHplcm9fc2k2NCgpOwogIF9fYiA9IF9tbV91bnBhY2tsb19waTgoX19hLCBfX2IpOwoKICByZXR1cm4gX21tX2N2dHBpMTZfcHMoX19iKTsKfQoKLy8vIENvbnZlcnRzIHRoZSB0d28gMzItYml0IHNpZ25lZCBpbnRlZ2VyIHZhbHVlcyBmcm9tIGVhY2ggNjQtYml0IHZlY3RvcgovLy8gICAgb3BlcmFuZCBvZiBbMiB4IGkzMl0gaW50byBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IENWVFBJMlBTICsgQ09NUE9TSVRFIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSA2NC1iaXQgdmVjdG9yIG9mIFsyIHggaTMyXS4gVGhlIGxvd2VyIGVsZW1lbnRzIG9mIHRoZSBkZXN0aW5hdGlvbiBhcmUKLy8vICAgIGNvcGllZCBmcm9tIHRoZSBlbGVtZW50cyBpbiB0aGlzIG9wZXJhbmQuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDY0LWJpdCB2ZWN0b3Igb2YgWzIgeCBpMzJdLiBUaGUgdXBwZXIgZWxlbWVudHMgb2YgdGhlIGRlc3RpbmF0aW9uIGFyZQovLy8gICAgY29waWVkIGZyb20gdGhlIGVsZW1lbnRzIGluIHRoaXMgb3BlcmFuZC4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gd2hvc2UgbG93ZXIgNjQgYml0cyBjb250YWluIHRoZQovLy8gICAgY29waWVkIGFuZCBjb252ZXJ0ZWQgdmFsdWVzIGZyb20gdGhlIGZpcnN0IG9wZXJhbmQuIFRoZSB1cHBlciA2NCBiaXRzCi8vLyAgICBjb250YWluIHRoZSBjb3BpZWQgYW5kIGNvbnZlcnRlZCB2YWx1ZXMgZnJvbSB0aGUgc2Vjb25kIG9wZXJhbmQuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YCl9tbV9jdnRwaTMyeDJfcHMoX19tNjQgX19hLCBfX202NCBfX2IpCnsKICBfX20xMjggX19jOwoKICBfX2MgPSBfbW1fc2V0emVyb19wcygpOwogIF9fYyA9IF9tbV9jdnRwaTMyX3BzKF9fYywgX19iKTsKICBfX2MgPSBfbW1fbW92ZWxoX3BzKF9fYywgX19jKTsKCiAgcmV0dXJuIF9tbV9jdnRwaTMyX3BzKF9fYywgX19hKTsKfQoKLy8vIENvbnZlcnRzIGVhY2ggc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCBlbGVtZW50IG9mIGEgMTI4LWJpdAovLy8gICAgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGludG8gYSAxNi1iaXQgc2lnbmVkIGludGVnZXIsIGFuZAovLy8gICAgcGFja3MgdGhlIHJlc3VsdHMgaW50byBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uCi8vLwovLy8gICAgSWYgdGhlIGZsb2F0aW5nLXBvaW50IGVsZW1lbnQgaXMgTmFOIG9yIGluZmluaXR5LCBvciBpZiB0aGUKLy8vICAgIGZsb2F0aW5nLXBvaW50IGVsZW1lbnQgaXMgZ3JlYXRlciB0aGFuIDB4N0ZGRkZGRkYgb3IgbGVzcyB0aGFuIC0weDgwMDAsCi8vLyAgICBpdCBpcyBjb252ZXJ0ZWQgdG8gMHg4MDAwLiBPdGhlcndpc2UgaWYgdGhlIGZsb2F0aW5nLXBvaW50IGVsZW1lbnQgaXMKLy8vICAgIGdyZWF0ZXIgdGhhbiAweDdGRkYsIGl0IGlzIGNvbnZlcnRlZCB0byAweDdGRkYuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gQ1ZUUFMyUEkgKyBDT01QT1NJVEUgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLgovLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRlZAovLy8gICAgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YCl9tbV9jdnRwc19waTE2KF9fbTEyOCBfX2EpCnsKICBfX202NCBfX2IsIF9fYzsKCiAgX19iID0gX21tX2N2dHBzX3BpMzIoX19hKTsKICBfX2EgPSBfbW1fbW92ZWhsX3BzKF9fYSwgX19hKTsKICBfX2MgPSBfbW1fY3Z0cHNfcGkzMihfX2EpOwoKICByZXR1cm4gX21tX3BhY2tzX3BpMzIoX19iLCBfX2MpOwp9CgovLy8gQ29udmVydHMgZWFjaCBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IGVsZW1lbnQgb2YgYSAxMjgtYml0Ci8vLyAgICBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gaW50byBhbiA4LWJpdCBzaWduZWQgaW50ZWdlciwgYW5kCi8vLyAgICBwYWNrcyB0aGUgcmVzdWx0cyBpbnRvIHRoZSBsb3dlciAzMiBiaXRzIG9mIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mCi8vLyAgICBbOCB4IGk4XS4gVGhlIHVwcGVyIDMyIGJpdHMgb2YgdGhlIHZlY3RvciBhcmUgc2V0IHRvIDAuCi8vLwovLy8gICAgSWYgdGhlIGZsb2F0aW5nLXBvaW50IGVsZW1lbnQgaXMgTmFOIG9yIGluZmluaXR5LCBvciBpZiB0aGUKLy8vICAgIGZsb2F0aW5nLXBvaW50IGVsZW1lbnQgaXMgZ3JlYXRlciB0aGFuIDB4N0ZGRkZGRkYgb3IgbGVzcyB0aGFuIC0weDgwLCBpdAovLy8gICAgaXMgY29udmVydGVkIHRvIDB4ODAuIE90aGVyd2lzZSBpZiB0aGUgZmxvYXRpbmctcG9pbnQgZWxlbWVudCBpcyBncmVhdGVyCi8vLyAgICB0aGFuIDB4N0YsIGl0IGlzIGNvbnZlcnRlZCB0byAweDdGLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IENWVFBTMlBJICsgQ09NUE9TSVRFIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uCi8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XS4gVGhlIGxvd2VyIDMyIGJpdHMgY29udGFpbiB0aGUKLy8vICAgIGNvbnZlcnRlZCB2YWx1ZXMgYW5kIHRoZSB1cHBwZXIgMzIgYml0cyBhcmUgc2V0IHRvIHplcm8uCnN0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgKX21tX2N2dHBzX3BpOChfX20xMjggX19hKQp7CiAgX19tNjQgX19iLCBfX2M7CgogIF9fYiA9IF9tbV9jdnRwc19waTE2KF9fYSk7CiAgX19jID0gX21tX3NldHplcm9fc2k2NCgpOwoKICByZXR1cm4gX21tX3BhY2tzX3BpMTYoX19iLCBfX2MpOwp9CgovLy8gRXh0cmFjdHMgdGhlIHNpZ24gYml0cyBmcm9tIGVhY2ggc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludAovLy8gICAgZWxlbWVudCBvZiBhIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGFuZCByZXR1cm5zIHRoZQovLy8gICAgc2lnbiBiaXRzIGluIGJpdHMgWzA6M10gb2YgdGhlIHJlc3VsdC4gQml0cyBbMzE6NF0gb2YgdGhlIHJlc3VsdCBhcmUgc2V0Ci8vLyAgICB0byB6ZXJvLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZNU0tQUyAvIE1PVk1TS1BTIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4KLy8vIFxyZXR1cm5zIEEgMzItYml0IGludGVnZXIgdmFsdWUuIEJpdHMgWzM6MF0gY29udGFpbiB0aGUgc2lnbiBiaXRzIGZyb20gZWFjaAovLy8gICAgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCBlbGVtZW50IG9mIHRoZSBwYXJhbWV0ZXIuIEJpdHMgWzMxOjRdIGFyZQovLy8gICAgc2V0IHRvIHplcm8uCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX21vdmVtYXNrX3BzKF9fbTEyOCBfX2EpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfbW92bXNrcHMoKF9fdjRzZilfX2EpOwp9CgoKI2RlZmluZSBfTU1fQUxJR04xNiBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDE2KSkpCgojZGVmaW5lIF9NTV9TSFVGRkxFKHosIHksIHgsIHcpICgoKHopIDw8IDYpIHwgKCh5KSA8PCA0KSB8ICgoeCkgPDwgMikgfCAodykpCgojZGVmaW5lIF9NTV9FWENFUFRfSU5WQUxJRCAgICAoMHgwMDAxVSkKI2RlZmluZSBfTU1fRVhDRVBUX0RFTk9STSAgICAgKDB4MDAwMlUpCiNkZWZpbmUgX01NX0VYQ0VQVF9ESVZfWkVSTyAgICgweDAwMDRVKQojZGVmaW5lIF9NTV9FWENFUFRfT1ZFUkZMT1cgICAoMHgwMDA4VSkKI2RlZmluZSBfTU1fRVhDRVBUX1VOREVSRkxPVyAgKDB4MDAxMFUpCiNkZWZpbmUgX01NX0VYQ0VQVF9JTkVYQUNUICAgICgweDAwMjBVKQojZGVmaW5lIF9NTV9FWENFUFRfTUFTSyAgICAgICAoMHgwMDNmVSkKCiNkZWZpbmUgX01NX01BU0tfSU5WQUxJRCAgICAgICgweDAwODBVKQojZGVmaW5lIF9NTV9NQVNLX0RFTk9STSAgICAgICAoMHgwMTAwVSkKI2RlZmluZSBfTU1fTUFTS19ESVZfWkVSTyAgICAgKDB4MDIwMFUpCiNkZWZpbmUgX01NX01BU0tfT1ZFUkZMT1cgICAgICgweDA0MDBVKQojZGVmaW5lIF9NTV9NQVNLX1VOREVSRkxPVyAgICAoMHgwODAwVSkKI2RlZmluZSBfTU1fTUFTS19JTkVYQUNUICAgICAgKDB4MTAwMFUpCiNkZWZpbmUgX01NX01BU0tfTUFTSyAgICAgICAgICgweDFmODBVKQoKI2RlZmluZSBfTU1fUk9VTkRfTkVBUkVTVCAgICAgKDB4MDAwMFUpCiNkZWZpbmUgX01NX1JPVU5EX0RPV04gICAgICAgICgweDIwMDBVKQojZGVmaW5lIF9NTV9ST1VORF9VUCAgICAgICAgICAoMHg0MDAwVSkKI2RlZmluZSBfTU1fUk9VTkRfVE9XQVJEX1pFUk8gKDB4NjAwMFUpCiNkZWZpbmUgX01NX1JPVU5EX01BU0sgICAgICAgICgweDYwMDBVKQoKI2RlZmluZSBfTU1fRkxVU0hfWkVST19NQVNLICAgKDB4ODAwMFUpCiNkZWZpbmUgX01NX0ZMVVNIX1pFUk9fT04gICAgICgweDgwMDBVKQojZGVmaW5lIF9NTV9GTFVTSF9aRVJPX09GRiAgICAoMHgwMDAwVSkKCiNkZWZpbmUgX01NX0dFVF9FWENFUFRJT05fTUFTSygpIChfbW1fZ2V0Y3NyKCkgJiBfTU1fTUFTS19NQVNLKQojZGVmaW5lIF9NTV9HRVRfRVhDRVBUSU9OX1NUQVRFKCkgKF9tbV9nZXRjc3IoKSAmIF9NTV9FWENFUFRfTUFTSykKI2RlZmluZSBfTU1fR0VUX0ZMVVNIX1pFUk9fTU9ERSgpIChfbW1fZ2V0Y3NyKCkgJiBfTU1fRkxVU0hfWkVST19NQVNLKQojZGVmaW5lIF9NTV9HRVRfUk9VTkRJTkdfTU9ERSgpIChfbW1fZ2V0Y3NyKCkgJiBfTU1fUk9VTkRfTUFTSykKCiNkZWZpbmUgX01NX1NFVF9FWENFUFRJT05fTUFTSyh4KSAoX21tX3NldGNzcigoX21tX2dldGNzcigpICYgfl9NTV9NQVNLX01BU0spIHwgKHgpKSkKI2RlZmluZSBfTU1fU0VUX0VYQ0VQVElPTl9TVEFURSh4KSAoX21tX3NldGNzcigoX21tX2dldGNzcigpICYgfl9NTV9FWENFUFRfTUFTSykgfCAoeCkpKQojZGVmaW5lIF9NTV9TRVRfRkxVU0hfWkVST19NT0RFKHgpIChfbW1fc2V0Y3NyKChfbW1fZ2V0Y3NyKCkgJiB+X01NX0ZMVVNIX1pFUk9fTUFTSykgfCAoeCkpKQojZGVmaW5lIF9NTV9TRVRfUk9VTkRJTkdfTU9ERSh4KSAoX21tX3NldGNzcigoX21tX2dldGNzcigpICYgfl9NTV9ST1VORF9NQVNLKSB8ICh4KSkpCgojZGVmaW5lIF9NTV9UUkFOU1BPU0U0X1BTKHJvdzAsIHJvdzEsIHJvdzIsIHJvdzMpIFwKZG8geyBcCiAgX19tMTI4IHRtcDMsIHRtcDIsIHRtcDEsIHRtcDA7IFwKICB0bXAwID0gX21tX3VucGFja2xvX3BzKChyb3cwKSwgKHJvdzEpKTsgXAogIHRtcDIgPSBfbW1fdW5wYWNrbG9fcHMoKHJvdzIpLCAocm93MykpOyBcCiAgdG1wMSA9IF9tbV91bnBhY2toaV9wcygocm93MCksIChyb3cxKSk7IFwKICB0bXAzID0gX21tX3VucGFja2hpX3BzKChyb3cyKSwgKHJvdzMpKTsgXAogIChyb3cwKSA9IF9tbV9tb3ZlbGhfcHModG1wMCwgdG1wMik7IFwKICAocm93MSkgPSBfbW1fbW92ZWhsX3BzKHRtcDIsIHRtcDApOyBcCiAgKHJvdzIpID0gX21tX21vdmVsaF9wcyh0bXAxLCB0bXAzKTsgXAogIChyb3czKSA9IF9tbV9tb3ZlaGxfcHModG1wMywgdG1wMSk7IFwKfSB3aGlsZSAoMCkKCi8qIEFsaWFzZXMgZm9yIGNvbXBhdGliaWxpdHkuICovCiNkZWZpbmUgX21fcGV4dHJ3IF9tbV9leHRyYWN0X3BpMTYKI2RlZmluZSBfbV9waW5zcncgX21tX2luc2VydF9waTE2CiNkZWZpbmUgX21fcG1heHN3IF9tbV9tYXhfcGkxNgojZGVmaW5lIF9tX3BtYXh1YiBfbW1fbWF4X3B1OAojZGVmaW5lIF9tX3BtaW5zdyBfbW1fbWluX3BpMTYKI2RlZmluZSBfbV9wbWludWIgX21tX21pbl9wdTgKI2RlZmluZSBfbV9wbW92bXNrYiBfbW1fbW92ZW1hc2tfcGk4CiNkZWZpbmUgX21fcG11bGh1dyBfbW1fbXVsaGlfcHUxNgojZGVmaW5lIF9tX3BzaHVmdyBfbW1fc2h1ZmZsZV9waTE2CiNkZWZpbmUgX21fbWFza21vdnEgX21tX21hc2ttb3ZlX3NpNjQKI2RlZmluZSBfbV9wYXZnYiBfbW1fYXZnX3B1OAojZGVmaW5lIF9tX3Bhdmd3IF9tbV9hdmdfcHUxNgojZGVmaW5lIF9tX3BzYWRidyBfbW1fc2FkX3B1OAojZGVmaW5lIF9tXyBfbW1fCiNkZWZpbmUgX21fIF9tbV8KCiN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlMKI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSU19NTVgKCi8qIFVnbHkgaGFjayBmb3IgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkgKGNvbXBhdGlibGUgd2l0aCBnY2MpICovCiNpZiBkZWZpbmVkKF9fU1NFMl9fKSAmJiAhX19idWlsZGluZ19tb2R1bGUoX0J1aWx0aW5faW50cmluc2ljcykKI2luY2x1ZGUgPGVtbWludHJpbi5oPgojZW5kaWYKCiNlbmRpZiAvKiBfX1hNTUlOVFJJTl9IICovCgAvKj09PS0tLS0geHNhdmVjaW50cmluLmggLSBYU0FWRUMgaW50cmluc2ljIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqCiAqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCiAqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCgojaWZuZGVmIF9fSU1NSU5UUklOX0gKI2Vycm9yICJOZXZlciB1c2UgPHhzYXZlY2ludHJpbi5oPiBkaXJlY3RseTsgaW5jbHVkZSA8aW1taW50cmluLmg+IGluc3RlYWQuIgojZW5kaWYKCiNpZm5kZWYgX19YU0FWRUNJTlRSSU5fSAojZGVmaW5lIF9fWFNBVkVDSU5UUklOX0gKCi8qIERlZmluZSB0aGUgZGVmYXVsdCBhdHRyaWJ1dGVzIGZvciB0aGUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZS4gKi8KI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCAgX190YXJnZXRfXygieHNhdmVjIikpKQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMKX3hzYXZlYyh2b2lkICpfX3AsIHVuc2lnbmVkIGxvbmcgbG9uZyBfX20pIHsKICBfX2J1aWx0aW5faWEzMl94c2F2ZWMoX19wLCBfX20pOwp9CgojaWZkZWYgX194ODZfNjRfXwpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUwpfeHNhdmVjNjQodm9pZCAqX19wLCB1bnNpZ25lZCBsb25nIGxvbmcgX19tKSB7CiAgX19idWlsdGluX2lhMzJfeHNhdmVjNjQoX19wLCBfX20pOwp9CiNlbmRpZgoKI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUwoKI2VuZGlmCgAgaW4gcmVnZXhwIABwYXR0ZXJuIHRvbyBsYXJnZSAtIHJldmVyc2UgY29tcGlsZSBmYWlsZWQAWzpwdW5jdDpdAHVuaGFuZGxlZCBvcGNvZGU6IABqb2JfLnNpemUoKSA9IAB7JWQsJWR9ACg/LW06XikAKD8tbTokKQBPbGRfU29nZGlhbgAlczogdW5hYmxlIHRvIGZpbmQgTE9BRCBzZWdtZW50IGZvciBwYzogJXAsIHN0YXJ0X2FkZHI6ICV6eABsZW4gKyAxIDwgc2l6ZW9mKHN5bWJvbF9idWZfKQBhbgBhUwA8ACsrAG1tAFN1YnN0cmluZywgbGVuID0gACwgZW5kX3BvcyA9IAAgd2hpY2ggYXJlIG91dHNpZGUgb2YgdGhlIGNoaWxkJ3MgbGVuZ3RoIG9mIAAlZAB7AG91dCAhPSBudWxscHRyAFJlYWRlckxvY2sgcmV0dXJuaW5nIABUWkRJUgB0emRhdGEAZXh0ZXJuYWwvYm9yaW5nc3NsL3NyYy9jcnlwdG8vZmlwc21vZHVsZS9jaXBoZXIvY2lwaGVyLmMARmFpbGVkIHRvIGNyZWF0ZSBQLTI1NiBncm91cC4KAERSQkcgQ2xlYXIgS0FUADx1bmtub3duPgBzeXN0ZW0gbGlicmFyeQBleHRlcm5hbC9reXRoZS9reXRoZS9jeHgvZXh0cmFjdG9yL2N4eF9leHRyYWN0b3IuY2MALS1jdWRhLWhvc3Qtb25seQAtREtZVEhFX0lTX1JVTk5JTkc9MQBvYmplY3RpdmVjAENoZWNrIGZhaWxlZDogbm9kZS5nZXRNZW1vaXphdGlvbkRhdGEoKSAhPSBudWxscHRyAF9fY2xhbmdfaGlwX2NtYXRoLmgALyo9PT0tLS0tIGFkeGludHJpbi5oIC0gQURYIGludHJpbnNpY3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwoKI2lmbmRlZiBfX0lNTUlOVFJJTl9ICiNlcnJvciAiTmV2ZXIgdXNlIDxhZHhpbnRyaW4uaD4gZGlyZWN0bHk7IGluY2x1ZGUgPGltbWludHJpbi5oPiBpbnN0ZWFkLiIKI2VuZGlmCgojaWZuZGVmIF9fQURYSU5UUklOX0gKI2RlZmluZSBfX0FEWElOVFJJTl9ICgovKiBEZWZpbmUgdGhlIGRlZmF1bHQgYXR0cmlidXRlcyBmb3IgdGhlIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUuICovCiNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgovKiBJbnRyaW5zaWNzIHRoYXQgYXJlIGF2YWlsYWJsZSBvbmx5IGlmIF9fQURYX18gZGVmaW5lZCAqLwpzdGF0aWMgX19pbmxpbmUgdW5zaWduZWQgY2hhciBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oImFkeCIpKSkKX2FkZGNhcnJ5eF91MzIodW5zaWduZWQgY2hhciBfX2NmLCB1bnNpZ25lZCBpbnQgX194LCB1bnNpZ25lZCBpbnQgX195LAogICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKl9fcCkKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9hZGRjYXJyeXhfdTMyKF9fY2YsIF9feCwgX195LCBfX3ApOwp9CgojaWZkZWYgX194ODZfNjRfXwpzdGF0aWMgX19pbmxpbmUgdW5zaWduZWQgY2hhciBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oImFkeCIpKSkKX2FkZGNhcnJ5eF91NjQodW5zaWduZWQgY2hhciBfX2NmLCB1bnNpZ25lZCBsb25nIGxvbmcgX194LAogICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgX195LCB1bnNpZ25lZCBsb25nIGxvbmcgICpfX3ApCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfYWRkY2Fycnl4X3U2NChfX2NmLCBfX3gsIF9feSwgX19wKTsKfQojZW5kaWYKCi8qIEludHJpbnNpY3MgdGhhdCBhcmUgYWxzbyBhdmFpbGFibGUgaWYgX19BRFhfXyB1bmRlZmluZWQgKi8Kc3RhdGljIF9faW5saW5lIHVuc2lnbmVkIGNoYXIgX19ERUZBVUxUX0ZOX0FUVFJTCl9hZGRjYXJyeV91MzIodW5zaWduZWQgY2hhciBfX2NmLCB1bnNpZ25lZCBpbnQgX194LCB1bnNpZ25lZCBpbnQgX195LAogICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqX19wKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2FkZGNhcnJ5eF91MzIoX19jZiwgX194LCBfX3ksIF9fcCk7Cn0KCiNpZmRlZiBfX3g4Nl82NF9fCnN0YXRpYyBfX2lubGluZSB1bnNpZ25lZCBjaGFyIF9fREVGQVVMVF9GTl9BVFRSUwpfYWRkY2FycnlfdTY0KHVuc2lnbmVkIGNoYXIgX19jZiwgdW5zaWduZWQgbG9uZyBsb25nIF9feCwKICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgX195LCB1bnNpZ25lZCBsb25nIGxvbmcgICpfX3ApCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfYWRkY2Fycnl4X3U2NChfX2NmLCBfX3gsIF9feSwgX19wKTsKfQojZW5kaWYKCnN0YXRpYyBfX2lubGluZSB1bnNpZ25lZCBjaGFyIF9fREVGQVVMVF9GTl9BVFRSUwpfc3ViYm9ycm93X3UzMih1bnNpZ25lZCBjaGFyIF9fY2YsIHVuc2lnbmVkIGludCBfX3gsIHVuc2lnbmVkIGludCBfX3ksCiAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICpfX3ApCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfc3ViYm9ycm93X3UzMihfX2NmLCBfX3gsIF9feSwgX19wKTsKfQoKI2lmZGVmIF9feDg2XzY0X18Kc3RhdGljIF9faW5saW5lIHVuc2lnbmVkIGNoYXIgX19ERUZBVUxUX0ZOX0FUVFJTCl9zdWJib3Jyb3dfdTY0KHVuc2lnbmVkIGNoYXIgX19jZiwgdW5zaWduZWQgbG9uZyBsb25nIF9feCwKICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIF9feSwgdW5zaWduZWQgbG9uZyBsb25nICAqX19wKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3N1YmJvcnJvd191NjQoX19jZiwgX194LCBfX3ksIF9fcCk7Cn0KI2VuZGlmCgojdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTCgojZW5kaWYgLyogX19BRFhJTlRSSU5fSCAqLwoAYW14aW50cmluLmgAYXZ4NTEydnAyaW50ZXJzZWN0aW50cmluLmgALyo9PT0tLS0tLS0gY2V0LmggLUNvbnRyb2wtZmxvdyBFbmZvcmNlbWVudCBUZWNobm9sb2d5ICBmZWF0dXJlIC0tLS0tLS0tLS0tLT09PQogKiBBZGQgeDg2IGZlYXR1cmUgd2l0aCBJQlQgYW5kL29yIFNIU1RLIGJpdHMgdG8gRUxGIHByb2dyYW0gcHJvcGVydHkgaWYgdGhleQogKiBhcmUgZW5hYmxlZC4gT3RoZXJ3aXNlLCBjb250ZW50cyBpbiB0aGlzIGhlYWRlciBmaWxlIGFyZSB1bnVzZWQuIFRoaXMgZmlsZQogKiBpcyBtYWlubHkgZGVzaWduIGZvciBhc3NlbWJseSBzb3VyY2UgY29kZSB3aGljaCB3YW50IHRvIGVuYWJsZSBDRVQuCiAqCiAqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCiAqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCiNpZm5kZWYgX19DRVRfSAojZGVmaW5lIF9fQ0VUX0gKCiNpZmRlZiBfX0FTU0VNQkxFUl9fCgojaWZuZGVmIF9fQ0VUX18KIyBkZWZpbmUgX0NFVF9FTkRCUgojZW5kaWYKCiNpZmRlZiBfX0NFVF9fCgojIGlmZGVmIF9fTFA2NF9fCiMgIGlmIF9fQ0VUX18gJiAweDEKIyAgICBkZWZpbmUgX0NFVF9FTkRCUiBlbmRicjY0CiMgIGVsc2UKIyAgICBkZWZpbmUgX0NFVF9FTkRCUgojICBlbmRpZgojIGVsc2UKIyAgaWYgX19DRVRfXyAmIDB4MQojICAgIGRlZmluZSBfQ0VUX0VOREJSIGVuZGJyMzIKIyAgZWxzZQojICAgIGRlZmluZSBfQ0VUX0VOREJSCiMgIGVuZGlmCiMgZW5kaWYKCgojICBpZmRlZiBfX0xQNjRfXwojICAgZGVmaW5lIF9fUFJPUEVSVFlfQUxJR04gMwojICBlbHNlCiMgICBkZWZpbmUgX19QUk9QRVJUWV9BTElHTiAyCiMgIGVuZGlmCgoJLnB1c2hzZWN0aW9uICIubm90ZS5nbnUucHJvcGVydHkiLCAiYSIKCS5wMmFsaWduIF9fUFJPUEVSVFlfQUxJR04KCS5sb25nIDFmIC0gMGYJCS8qIG5hbWUgbGVuZ3RoLiAgKi8KCS5sb25nIDRmIC0gMWYJCS8qIGRhdGEgbGVuZ3RoLiAgKi8KCS8qIE5UX0dOVV9QUk9QRVJUWV9UWVBFXzAuICAgKi8KCS5sb25nIDUJCQkvKiBub3RlIHR5cGUuICAqLwowOgoJLmFzY2l6ICJHTlUiCQkvKiB2ZW5kb3IgbmFtZS4gICovCjE6CgkucDJhbGlnbiBfX1BST1BFUlRZX0FMSUdOCgkvKiBHTlVfUFJPUEVSVFlfWDg2X0ZFQVRVUkVfMV9BTkQuICAqLwoJLmxvbmcgMHhjMDAwMDAwMgkvKiBwcl90eXBlLiAgKi8KCS5sb25nIDNmIC0gMmYJCS8qIHByX2RhdGFzei4gICovCjI6CgkvKiBHTlVfUFJPUEVSVFlfWDg2X0ZFQVRVUkVfMV9YWFguICAqLwoJLmxvbmcgX19DRVRfXwozOgoJLnAyYWxpZ24gX19QUk9QRVJUWV9BTElHTgo0OgoJLnBvcHNlY3Rpb24KI2VuZGlmCiNlbmRpZgojZW5kaWYKAC8qPT09LS0tLSBjbGZsdXNob3B0aW50cmluLmggLSBDTEZMVVNIT1BUIGludHJpbnNpYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKi8KCiNpZm5kZWYgX19JTU1JTlRSSU5fSAojZXJyb3IgIk5ldmVyIHVzZSA8Y2xmbHVzaG9wdGludHJpbi5oPiBkaXJlY3RseTsgaW5jbHVkZSA8aW1taW50cmluLmg+IGluc3RlYWQuIgojZW5kaWYKCiNpZm5kZWYgX19DTEZMVVNIT1BUSU5UUklOX0gKI2RlZmluZSBfX0NMRkxVU0hPUFRJTlRSSU5fSAoKLyogRGVmaW5lIHRoZSBkZWZhdWx0IGF0dHJpYnV0ZXMgZm9yIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlLiAqLwojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUyBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sICBfX3RhcmdldF9fKCJjbGZsdXNob3B0IikpKQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2NsZmx1c2hvcHQodm9pZCBjb25zdCAqIF9fbSkgewogIF9fYnVpbHRpbl9pYTMyX2NsZmx1c2hvcHQoX19tKTsKfQoKI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUwoKI2VuZGlmCgAvKj09PS0tLS0gY3B1aWQuaCAtIFg4NiBjcHUgbW9kZWwgZGV0ZWN0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqCiAqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCiAqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCgojaWZuZGVmIF9fQ1BVSURfSAojZGVmaW5lIF9fQ1BVSURfSAoKI2lmICEoX194ODZfNjRfXyB8fCBfX2kzODZfXykKI2Vycm9yIHRoaXMgaGVhZGVyIGlzIGZvciB4ODYgb25seQojZW5kaWYKCi8qIFJlc3BvbnNlcyBpZGVudGlmaWNhdGlvbiByZXF1ZXN0IHdpdGggJWVheCAwICovCi8qIEFNRDogICAgICJBdXRoZW50aWNBTUQiICovCiNkZWZpbmUgc2lnbmF0dXJlX0FNRF9lYnggMHg2ODc0NzU0MQojZGVmaW5lIHNpZ25hdHVyZV9BTURfZWR4IDB4Njk3NDZlNjUKI2RlZmluZSBzaWduYXR1cmVfQU1EX2VjeCAweDQ0NGQ0MTYzCi8qIENFTlRBVVI6ICJDZW50YXVySGF1bHMiICovCiNkZWZpbmUgc2lnbmF0dXJlX0NFTlRBVVJfZWJ4IDB4NzQ2ZTY1NDMKI2RlZmluZSBzaWduYXR1cmVfQ0VOVEFVUl9lZHggMHg0ODcyNzU2MQojZGVmaW5lIHNpZ25hdHVyZV9DRU5UQVVSX2VjeCAweDczNmM3NTYxCi8qIENZUklYOiAgICJDeXJpeEluc3RlYWQiICovCiNkZWZpbmUgc2lnbmF0dXJlX0NZUklYX2VieCAweDY5NzI3OTQzCiNkZWZpbmUgc2lnbmF0dXJlX0NZUklYX2VkeCAweDczNmU0OTc4CiNkZWZpbmUgc2lnbmF0dXJlX0NZUklYX2VjeCAweDY0NjE2NTc0Ci8qIEhZR09OOiAgICJIeWdvbkdlbnVpbmUiICovCiNkZWZpbmUgc2lnbmF0dXJlX0hZR09OX2VieCAweDZmNjc3OTQ4CiNkZWZpbmUgc2lnbmF0dXJlX0hZR09OX2VkeCAweDZlNjU0NzZlCiNkZWZpbmUgc2lnbmF0dXJlX0hZR09OX2VjeCAweDY1NmU2OTc1Ci8qIElOVEVMOiAgICJHZW51aW5lSW50ZWwiICovCiNkZWZpbmUgc2lnbmF0dXJlX0lOVEVMX2VieCAweDc1NmU2NTQ3CiNkZWZpbmUgc2lnbmF0dXJlX0lOVEVMX2VkeCAweDQ5NjU2ZTY5CiNkZWZpbmUgc2lnbmF0dXJlX0lOVEVMX2VjeCAweDZjNjU3NDZlCi8qIFRNMTogICAgICJUcmFuc21ldGFDUFUiICovCiNkZWZpbmUgc2lnbmF0dXJlX1RNMV9lYnggMHg2ZTYxNzI1NAojZGVmaW5lIHNpZ25hdHVyZV9UTTFfZWR4IDB4NzQ2NTZkNzMKI2RlZmluZSBzaWduYXR1cmVfVE0xX2VjeCAweDU1NTA0MzYxCi8qIFRNMjogICAgICJHZW51aW5lVE14ODYiICovCiNkZWZpbmUgc2lnbmF0dXJlX1RNMl9lYnggMHg3NTZlNjU0NwojZGVmaW5lIHNpZ25hdHVyZV9UTTJfZWR4IDB4NTQ2NTZlNjkKI2RlZmluZSBzaWduYXR1cmVfVE0yX2VjeCAweDM2Mzg3ODRkCi8qIE5TQzogICAgICJHZW9kZSBieSBOU0MiICovCiNkZWZpbmUgc2lnbmF0dXJlX05TQ19lYnggMHg2NDZmNjU0NwojZGVmaW5lIHNpZ25hdHVyZV9OU0NfZWR4IDB4Nzk2MjIwNjUKI2RlZmluZSBzaWduYXR1cmVfTlNDX2VjeCAweDQzNTM0ZTIwCi8qIE5FWEdFTjogICJOZXhHZW5Ecml2ZW4iICovCiNkZWZpbmUgc2lnbmF0dXJlX05FWEdFTl9lYnggMHg0Nzc4NjU0ZQojZGVmaW5lIHNpZ25hdHVyZV9ORVhHRU5fZWR4IDB4NzI0NDZlNjUKI2RlZmluZSBzaWduYXR1cmVfTkVYR0VOX2VjeCAweDZlNjU3NjY5Ci8qIFJJU0U6ICAgICJSaXNlUmlzZVJpc2UiICovCiNkZWZpbmUgc2lnbmF0dXJlX1JJU0VfZWJ4IDB4NjU3MzY5NTIKI2RlZmluZSBzaWduYXR1cmVfUklTRV9lZHggMHg2NTczNjk1MgojZGVmaW5lIHNpZ25hdHVyZV9SSVNFX2VjeCAweDY1NzM2OTUyCi8qIFNJUzogICAgICJTaVMgU2lTIFNpUyAiICovCiNkZWZpbmUgc2lnbmF0dXJlX1NJU19lYnggMHgyMDUzNjk1MwojZGVmaW5lIHNpZ25hdHVyZV9TSVNfZWR4IDB4MjA1MzY5NTMKI2RlZmluZSBzaWduYXR1cmVfU0lTX2VjeCAweDIwNTM2OTUzCi8qIFVNQzogICAgICJVTUMgVU1DIFVNQyAiICovCiNkZWZpbmUgc2lnbmF0dXJlX1VNQ19lYnggMHgyMDQzNGQ1NQojZGVmaW5lIHNpZ25hdHVyZV9VTUNfZWR4IDB4MjA0MzRkNTUKI2RlZmluZSBzaWduYXR1cmVfVU1DX2VjeCAweDIwNDM0ZDU1Ci8qIFZJQTogICAgICJWSUEgVklBIFZJQSAiICovCiNkZWZpbmUgc2lnbmF0dXJlX1ZJQV9lYnggMHgyMDQxNDk1NgojZGVmaW5lIHNpZ25hdHVyZV9WSUFfZWR4IDB4MjA0MTQ5NTYKI2RlZmluZSBzaWduYXR1cmVfVklBX2VjeCAweDIwNDE0OTU2Ci8qIFZPUlRFWDogICJWb3J0ZXg4NiBTb0MiICovCiNkZWZpbmUgc2lnbmF0dXJlX1ZPUlRFWF9lYnggMHg3NDcyNmY1NgojZGVmaW5lIHNpZ25hdHVyZV9WT1JURVhfZWR4IDB4MzYzODc4NjUKI2RlZmluZSBzaWduYXR1cmVfVk9SVEVYX2VjeCAweDQzNmY1MzIwCgovKiBGZWF0dXJlcyBpbiAlZWN4IGZvciBsZWFmIDEgKi8KI2RlZmluZSBiaXRfU1NFMyAgICAgICAgMHgwMDAwMDAwMQojZGVmaW5lIGJpdF9QQ0xNVUxRRFEgICAweDAwMDAwMDAyCiNkZWZpbmUgYml0X1BDTE1VTCAgICAgIGJpdF9QQ0xNVUxRRFEgICAvKiBmb3IgZ2NjIGNvbXBhdCAqLwojZGVmaW5lIGJpdF9EVEVTNjQgICAgICAweDAwMDAwMDA0CiNkZWZpbmUgYml0X01PTklUT1IgICAgIDB4MDAwMDAwMDgKI2RlZmluZSBiaXRfRFNDUEwgICAgICAgMHgwMDAwMDAxMAojZGVmaW5lIGJpdF9WTVggICAgICAgICAweDAwMDAwMDIwCiNkZWZpbmUgYml0X1NNWCAgICAgICAgIDB4MDAwMDAwNDAKI2RlZmluZSBiaXRfRUlTVCAgICAgICAgMHgwMDAwMDA4MAojZGVmaW5lIGJpdF9UTTIgICAgICAgICAweDAwMDAwMTAwCiNkZWZpbmUgYml0X1NTU0UzICAgICAgIDB4MDAwMDAyMDAKI2RlZmluZSBiaXRfQ05YVElEICAgICAgMHgwMDAwMDQwMAojZGVmaW5lIGJpdF9GTUEgICAgICAgICAweDAwMDAxMDAwCiNkZWZpbmUgYml0X0NNUFhDSEcxNkIgIDB4MDAwMDIwMDAKI2RlZmluZSBiaXRfeFRQUiAgICAgICAgMHgwMDAwNDAwMAojZGVmaW5lIGJpdF9QRENNICAgICAgICAweDAwMDA4MDAwCiNkZWZpbmUgYml0X1BDSUQgICAgICAgIDB4MDAwMjAwMDAKI2RlZmluZSBiaXRfRENBICAgICAgICAgMHgwMDA0MDAwMAojZGVmaW5lIGJpdF9TU0U0MSAgICAgICAweDAwMDgwMDAwCiNkZWZpbmUgYml0X1NTRTRfMSAgICAgIGJpdF9TU0U0MSAgICAgICAvKiBmb3IgZ2NjIGNvbXBhdCAqLwojZGVmaW5lIGJpdF9TU0U0MiAgICAgICAweDAwMTAwMDAwCiNkZWZpbmUgYml0X1NTRTRfMiAgICAgIGJpdF9TU0U0MiAgICAgICAvKiBmb3IgZ2NjIGNvbXBhdCAqLwojZGVmaW5lIGJpdF94MkFQSUMgICAgICAweDAwMjAwMDAwCiNkZWZpbmUgYml0X01PVkJFICAgICAgIDB4MDA0MDAwMDAKI2RlZmluZSBiaXRfUE9QQ05UICAgICAgMHgwMDgwMDAwMAojZGVmaW5lIGJpdF9UU0NEZWFkbGluZSAweDAxMDAwMDAwCiNkZWZpbmUgYml0X0FFU05JICAgICAgIDB4MDIwMDAwMDAKI2RlZmluZSBiaXRfQUVTICAgICAgICAgYml0X0FFU05JICAgICAgIC8qIGZvciBnY2MgY29tcGF0ICovCiNkZWZpbmUgYml0X1hTQVZFICAgICAgIDB4MDQwMDAwMDAKI2RlZmluZSBiaXRfT1NYU0FWRSAgICAgMHgwODAwMDAwMAojZGVmaW5lIGJpdF9BVlggICAgICAgICAweDEwMDAwMDAwCiNkZWZpbmUgYml0X0YxNkMgICAgICAgIDB4MjAwMDAwMDAKI2RlZmluZSBiaXRfUkRSTkQgICAgICAgMHg0MDAwMDAwMAoKLyogRmVhdHVyZXMgaW4gJWVkeCBmb3IgbGVhZiAxICovCiNkZWZpbmUgYml0X0ZQVSAgICAgICAgIDB4MDAwMDAwMDEKI2RlZmluZSBiaXRfVk1FICAgICAgICAgMHgwMDAwMDAwMgojZGVmaW5lIGJpdF9ERSAgICAgICAgICAweDAwMDAwMDA0CiNkZWZpbmUgYml0X1BTRSAgICAgICAgIDB4MDAwMDAwMDgKI2RlZmluZSBiaXRfVFNDICAgICAgICAgMHgwMDAwMDAxMAojZGVmaW5lIGJpdF9NU1IgICAgICAgICAweDAwMDAwMDIwCiNkZWZpbmUgYml0X1BBRSAgICAgICAgIDB4MDAwMDAwNDAKI2RlZmluZSBiaXRfTUNFICAgICAgICAgMHgwMDAwMDA4MAojZGVmaW5lIGJpdF9DWDggICAgICAgICAweDAwMDAwMTAwCiNkZWZpbmUgYml0X0NNUFhDSEc4QiAgIGJpdF9DWDggICAgICAgICAvKiBmb3IgZ2NjIGNvbXBhdCAqLwojZGVmaW5lIGJpdF9BUElDICAgICAgICAweDAwMDAwMjAwCiNkZWZpbmUgYml0X1NFUCAgICAgICAgIDB4MDAwMDA4MDAKI2RlZmluZSBiaXRfTVRSUiAgICAgICAgMHgwMDAwMTAwMAojZGVmaW5lIGJpdF9QR0UgICAgICAgICAweDAwMDAyMDAwCiNkZWZpbmUgYml0X01DQSAgICAgICAgIDB4MDAwMDQwMDAKI2RlZmluZSBiaXRfQ01PViAgICAgICAgMHgwMDAwODAwMAojZGVmaW5lIGJpdF9QQVQgICAgICAgICAweDAwMDEwMDAwCiNkZWZpbmUgYml0X1BTRTM2ICAgICAgIDB4MDAwMjAwMDAKI2RlZmluZSBiaXRfUFNOICAgICAgICAgMHgwMDA0MDAwMAojZGVmaW5lIGJpdF9DTEZTSCAgICAgICAweDAwMDgwMDAwCiNkZWZpbmUgYml0X0RTICAgICAgICAgIDB4MDAyMDAwMDAKI2RlZmluZSBiaXRfQUNQSSAgICAgICAgMHgwMDQwMDAwMAojZGVmaW5lIGJpdF9NTVggICAgICAgICAweDAwODAwMDAwCiNkZWZpbmUgYml0X0ZYU1IgICAgICAgIDB4MDEwMDAwMDAKI2RlZmluZSBiaXRfRlhTQVZFICAgICAgYml0X0ZYU1IgICAgICAgIC8qIGZvciBnY2MgY29tcGF0ICovCiNkZWZpbmUgYml0X1NTRSAgICAgICAgIDB4MDIwMDAwMDAKI2RlZmluZSBiaXRfU1NFMiAgICAgICAgMHgwNDAwMDAwMAojZGVmaW5lIGJpdF9TUyAgICAgICAgICAweDA4MDAwMDAwCiNkZWZpbmUgYml0X0hUVCAgICAgICAgIDB4MTAwMDAwMDAKI2RlZmluZSBiaXRfVE0gICAgICAgICAgMHgyMDAwMDAwMAojZGVmaW5lIGJpdF9QQkUgICAgICAgICAweDgwMDAwMDAwCgovKiBGZWF0dXJlcyBpbiAlZWJ4IGZvciBsZWFmIDcgc3ViLWxlYWYgMCAqLwojZGVmaW5lIGJpdF9GU0dTQkFTRSAgICAweDAwMDAwMDAxCiNkZWZpbmUgYml0X1NHWCAgICAgICAgIDB4MDAwMDAwMDQKI2RlZmluZSBiaXRfQk1JICAgICAgICAgMHgwMDAwMDAwOAojZGVmaW5lIGJpdF9ITEUgICAgICAgICAweDAwMDAwMDEwCiNkZWZpbmUgYml0X0FWWDIgICAgICAgIDB4MDAwMDAwMjAKI2RlZmluZSBiaXRfU01FUCAgICAgICAgMHgwMDAwMDA4MAojZGVmaW5lIGJpdF9CTUkyICAgICAgICAweDAwMDAwMTAwCiNkZWZpbmUgYml0X0VOSF9NT1ZTQiAgIDB4MDAwMDAyMDAKI2RlZmluZSBiaXRfSU5WUENJRCAgICAgMHgwMDAwMDQwMAojZGVmaW5lIGJpdF9SVE0gICAgICAgICAweDAwMDAwODAwCiNkZWZpbmUgYml0X01QWCAgICAgICAgIDB4MDAwMDQwMDAKI2RlZmluZSBiaXRfQVZYNTEyRiAgICAgMHgwMDAxMDAwMAojZGVmaW5lIGJpdF9BVlg1MTJEUSAgICAweDAwMDIwMDAwCiNkZWZpbmUgYml0X1JEU0VFRCAgICAgIDB4MDAwNDAwMDAKI2RlZmluZSBiaXRfQURYICAgICAgICAgMHgwMDA4MDAwMAojZGVmaW5lIGJpdF9BVlg1MTJJRk1BICAweDAwMjAwMDAwCiNkZWZpbmUgYml0X0NMRkxVU0hPUFQgIDB4MDA4MDAwMDAKI2RlZmluZSBiaXRfQ0xXQiAgICAgICAgMHgwMTAwMDAwMAojZGVmaW5lIGJpdF9BVlg1MTJQRiAgICAweDA0MDAwMDAwCiNkZWZpbmUgYml0X0FWWDUxMkVSICAgIDB4MDgwMDAwMDAKI2RlZmluZSBiaXRfQVZYNTEyQ0QgICAgMHgxMDAwMDAwMAojZGVmaW5lIGJpdF9TSEEgICAgICAgICAweDIwMDAwMDAwCiNkZWZpbmUgYml0X0FWWDUxMkJXICAgIDB4NDAwMDAwMDAKI2RlZmluZSBiaXRfQVZYNTEyVkwgICAgMHg4MDAwMDAwMAoKLyogRmVhdHVyZXMgaW4gJWVjeCBmb3IgbGVhZiA3IHN1Yi1sZWFmIDAgKi8KI2RlZmluZSBiaXRfUFJFRlRDSFdUMSAgICAgICAweDAwMDAwMDAxCiNkZWZpbmUgYml0X0FWWDUxMlZCTUkgICAgICAgMHgwMDAwMDAwMgojZGVmaW5lIGJpdF9QS1UgICAgICAgICAgICAgIDB4MDAwMDAwMDQKI2RlZmluZSBiaXRfT1NQS0UgICAgICAgICAgICAweDAwMDAwMDEwCiNkZWZpbmUgYml0X1dBSVRQS0cgICAgICAgICAgMHgwMDAwMDAyMAojZGVmaW5lIGJpdF9BVlg1MTJWQk1JMiAgICAgIDB4MDAwMDAwNDAKI2RlZmluZSBiaXRfU0hTVEsgICAgICAgICAgICAweDAwMDAwMDgwCiNkZWZpbmUgYml0X0dGTkkgICAgICAgICAgICAgMHgwMDAwMDEwMAojZGVmaW5lIGJpdF9WQUVTICAgICAgICAgICAgIDB4MDAwMDAyMDAKI2RlZmluZSBiaXRfVlBDTE1VTFFEUSAgICAgICAweDAwMDAwNDAwCiNkZWZpbmUgYml0X0FWWDUxMlZOTkkgICAgICAgMHgwMDAwMDgwMAojZGVmaW5lIGJpdF9BVlg1MTJCSVRBTEcgICAgIDB4MDAwMDEwMDAKI2RlZmluZSBiaXRfQVZYNTEyVlBPUENOVERRICAweDAwMDA0MDAwCiNkZWZpbmUgYml0X1JEUElEICAgICAgICAgICAgMHgwMDQwMDAwMAojZGVmaW5lIGJpdF9DTERFTU9URSAgICAgICAgIDB4MDIwMDAwMDAKI2RlZmluZSBiaXRfTU9WRElSSSAgICAgICAgICAweDA4MDAwMDAwCiNkZWZpbmUgYml0X01PVkRJUjY0QiAgICAgICAgMHgxMDAwMDAwMAojZGVmaW5lIGJpdF9FTlFDTUQgICAgICAgICAgIDB4MjAwMDAwMDAKCi8qIEZlYXR1cmVzIGluICVlZHggZm9yIGxlYWYgNyBzdWItbGVhZiAwICovCiNkZWZpbmUgYml0X0FWWDUxMjRWTk5JVyAgMHgwMDAwMDAwNAojZGVmaW5lIGJpdF9BVlg1MTI0Rk1BUFMgIDB4MDAwMDAwMDgKI2RlZmluZSBiaXRfVUlOVFIgICAgICAgICAweDAwMDAwMDIwCiNkZWZpbmUgYml0X1NFUklBTElaRSAgICAgMHgwMDAwNDAwMAojZGVmaW5lIGJpdF9UU1hMRFRSSyAgICAgIDB4MDAwMTAwMDAKI2RlZmluZSBiaXRfUENPTkZJRyAgICAgICAweDAwMDQwMDAwCiNkZWZpbmUgYml0X0lCVCAgICAgICAgICAgMHgwMDEwMDAwMAojZGVmaW5lIGJpdF9BTVhCRjE2ICAgICAgIDB4MDA0MDAwMDAKI2RlZmluZSBiaXRfQVZYNTEyRlAxNiAgICAweDAwODAwMDAwCiNkZWZpbmUgYml0X0FNWFRJTEUgICAgICAgMHgwMTAwMDAwMAojZGVmaW5lIGJpdF9BTVhJTlQ4ICAgICAgIDB4MDIwMDAwMDAKCi8qIEZlYXR1cmVzIGluICVlYXggZm9yIGxlYWYgNyBzdWItbGVhZiAxICovCiNkZWZpbmUgYml0X0FWWFZOTkkgICAgICAgMHgwMDAwMDAwOAojZGVmaW5lIGJpdF9BVlg1MTJCRjE2ICAgIDB4MDAwMDAwMjAKI2RlZmluZSBiaXRfSFJFU0VUICAgICAgICAweDAwNDAwMDAwCgovKiBGZWF0dXJlcyBpbiAlZWF4IGZvciBsZWFmIDEzIHN1Yi1sZWFmIDEgKi8KI2RlZmluZSBiaXRfWFNBVkVPUFQgICAgMHgwMDAwMDAwMQojZGVmaW5lIGJpdF9YU0FWRUMgICAgICAweDAwMDAwMDAyCiNkZWZpbmUgYml0X1hTQVZFUyAgICAgIDB4MDAwMDAwMDgKCi8qIEZlYXR1cmVzIGluICVlYXggZm9yIGxlYWYgMHgxNCBzdWItbGVhZiAwICovCiNkZWZpbmUgYml0X1BUV1JJVEUgICAgIDB4MDAwMDAwMTAKCi8qIEZlYXR1cmVzIGluICVlY3ggZm9yIGxlYWYgMHg4MDAwMDAwMSAqLwojZGVmaW5lIGJpdF9MQUhGX0xNICAgICAweDAwMDAwMDAxCiNkZWZpbmUgYml0X0FCTSAgICAgICAgIDB4MDAwMDAwMjAKI2RlZmluZSBiaXRfTFpDTlQgICAgICAgYml0X0FCTSAgICAgICAgLyogZm9yIGdjYyBjb21wYXQgKi8KI2RlZmluZSBiaXRfU1NFNGEgICAgICAgMHgwMDAwMDA0MAojZGVmaW5lIGJpdF9QUkZDSFcgICAgICAweDAwMDAwMTAwCiNkZWZpbmUgYml0X1hPUCAgICAgICAgIDB4MDAwMDA4MDAKI2RlZmluZSBiaXRfTFdQICAgICAgICAgMHgwMDAwODAwMAojZGVmaW5lIGJpdF9GTUE0ICAgICAgICAweDAwMDEwMDAwCiNkZWZpbmUgYml0X1RCTSAgICAgICAgIDB4MDAyMDAwMDAKI2RlZmluZSBiaXRfTVdBSVRYICAgICAgMHgyMDAwMDAwMAoKLyogRmVhdHVyZXMgaW4gJWVkeCBmb3IgbGVhZiAweDgwMDAwMDAxICovCiNkZWZpbmUgYml0X01NWEVYVCAgICAgIDB4MDA0MDAwMDAKI2RlZmluZSBiaXRfTE0gICAgICAgICAgMHgyMDAwMDAwMAojZGVmaW5lIGJpdF8zRE5PV1AgICAgICAweDQwMDAwMDAwCiNkZWZpbmUgYml0XzNETk9XICAgICAgIDB4ODAwMDAwMDAKCi8qIEZlYXR1cmVzIGluICVlYnggZm9yIGxlYWYgMHg4MDAwMDAwOCAqLwojZGVmaW5lIGJpdF9DTFpFUk8gICAgICAweDAwMDAwMDAxCiNkZWZpbmUgYml0X1dCTk9JTlZEICAgIDB4MDAwMDAyMDAKCgojaWYgX19pMzg2X18KI2RlZmluZSBfX2NwdWlkKF9fbGVhZiwgX19lYXgsIF9fZWJ4LCBfX2VjeCwgX19lZHgpIFwKICAgIF9fYXNtKCJjcHVpZCIgOiAiPWEiKF9fZWF4KSwgIj1iIiAoX19lYngpLCAiPWMiKF9fZWN4KSwgIj1kIihfX2VkeCkgXAogICAgICAgICAgICAgICAgICA6ICIwIihfX2xlYWYpKQoKI2RlZmluZSBfX2NwdWlkX2NvdW50KF9fbGVhZiwgX19jb3VudCwgX19lYXgsIF9fZWJ4LCBfX2VjeCwgX19lZHgpIFwKICAgIF9fYXNtKCJjcHVpZCIgOiAiPWEiKF9fZWF4KSwgIj1iIiAoX19lYngpLCAiPWMiKF9fZWN4KSwgIj1kIihfX2VkeCkgXAogICAgICAgICAgICAgICAgICA6ICIwIihfX2xlYWYpLCAiMiIoX19jb3VudCkpCiNlbHNlCi8qIHg4Ni02NCB1c2VzICVyYnggYXMgdGhlIGJhc2UgcmVnaXN0ZXIsIHNvIHByZXNlcnZlIGl0LiAqLwojZGVmaW5lIF9fY3B1aWQoX19sZWFmLCBfX2VheCwgX19lYngsIF9fZWN4LCBfX2VkeCkgXAogICAgX19hc20oIiAgeGNoZ3EgICUlcmJ4LCVxMVxuIiBcCiAgICAgICAgICAiICBjcHVpZFxuIiBcCiAgICAgICAgICAiICB4Y2hncSAgJSVyYngsJXExIiBcCiAgICAgICAgOiAiPWEiKF9fZWF4KSwgIj1yIiAoX19lYngpLCAiPWMiKF9fZWN4KSwgIj1kIihfX2VkeCkgXAogICAgICAgIDogIjAiKF9fbGVhZikpCgojZGVmaW5lIF9fY3B1aWRfY291bnQoX19sZWFmLCBfX2NvdW50LCBfX2VheCwgX19lYngsIF9fZWN4LCBfX2VkeCkgXAogICAgX19hc20oIiAgeGNoZ3EgICUlcmJ4LCVxMVxuIiBcCiAgICAgICAgICAiICBjcHVpZFxuIiBcCiAgICAgICAgICAiICB4Y2hncSAgJSVyYngsJXExIiBcCiAgICAgICAgOiAiPWEiKF9fZWF4KSwgIj1yIiAoX19lYngpLCAiPWMiKF9fZWN4KSwgIj1kIihfX2VkeCkgXAogICAgICAgIDogIjAiKF9fbGVhZiksICIyIihfX2NvdW50KSkKI2VuZGlmCgpzdGF0aWMgX19pbmxpbmUgaW50IF9fZ2V0X2NwdWlkX21heCAodW5zaWduZWQgaW50IF9fbGVhZiwgdW5zaWduZWQgaW50ICpfX3NpZykKewogICAgdW5zaWduZWQgaW50IF9fZWF4LCBfX2VieCwgX19lY3gsIF9fZWR4OwojaWYgX19pMzg2X18KICAgIGludCBfX2NwdWlkX3N1cHBvcnRlZDsKCiAgICBfX2FzbSgiICBwdXNoZmxcbiIKICAgICAgICAgICIgIHBvcGwgICAlJWVheFxuIgogICAgICAgICAgIiAgbW92bCAgICUlZWF4LCUlZWN4XG4iCiAgICAgICAgICAiICB4b3JsICAgJDB4MDAyMDAwMDAsJSVlYXhcbiIKICAgICAgICAgICIgIHB1c2hsICAlJWVheFxuIgogICAgICAgICAgIiAgcG9wZmxcbiIKICAgICAgICAgICIgIHB1c2hmbFxuIgogICAgICAgICAgIiAgcG9wbCAgICUlZWF4XG4iCiAgICAgICAgICAiICBtb3ZsICAgJDAsJTBcbiIKICAgICAgICAgICIgIGNtcGwgICAlJWVheCwlJWVjeFxuIgogICAgICAgICAgIiAgamUgICAgIDFmXG4iCiAgICAgICAgICAiICBtb3ZsICAgJDEsJTBcbiIKICAgICAgICAgICIxOiIKICAgICAgICA6ICI9ciIgKF9fY3B1aWRfc3VwcG9ydGVkKSA6IDogImVheCIsICJlY3giKTsKICAgIGlmICghX19jcHVpZF9zdXBwb3J0ZWQpCiAgICAgICAgcmV0dXJuIDA7CiNlbmRpZgoKICAgIF9fY3B1aWQoX19sZWFmLCBfX2VheCwgX19lYngsIF9fZWN4LCBfX2VkeCk7CiAgICBpZiAoX19zaWcpCiAgICAgICAgKl9fc2lnID0gX19lYng7CiAgICByZXR1cm4gX19lYXg7Cn0KCnN0YXRpYyBfX2lubGluZSBpbnQgX19nZXRfY3B1aWQgKHVuc2lnbmVkIGludCBfX2xlYWYsIHVuc2lnbmVkIGludCAqX19lYXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqX19lYngsIHVuc2lnbmVkIGludCAqX19lY3gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqX19lZHgpCnsKICAgIHVuc2lnbmVkIGludCBfX21heF9sZWFmID0gX19nZXRfY3B1aWRfbWF4KF9fbGVhZiAmIDB4ODAwMDAwMDAsIDApOwoKICAgIGlmIChfX21heF9sZWFmID09IDAgfHwgX19tYXhfbGVhZiA8IF9fbGVhZikKICAgICAgICByZXR1cm4gMDsKCiAgICBfX2NwdWlkKF9fbGVhZiwgKl9fZWF4LCAqX19lYngsICpfX2VjeCwgKl9fZWR4KTsKICAgIHJldHVybiAxOwp9CgpzdGF0aWMgX19pbmxpbmUgaW50IF9fZ2V0X2NwdWlkX2NvdW50ICh1bnNpZ25lZCBpbnQgX19sZWFmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19zdWJsZWFmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKl9fZWF4LCB1bnNpZ25lZCBpbnQgKl9fZWJ4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKl9fZWN4LCB1bnNpZ25lZCBpbnQgKl9fZWR4KQp7CiAgICB1bnNpZ25lZCBpbnQgX19tYXhfbGVhZiA9IF9fZ2V0X2NwdWlkX21heChfX2xlYWYgJiAweDgwMDAwMDAwLCAwKTsKCiAgICBpZiAoX19tYXhfbGVhZiA9PSAwIHx8IF9fbWF4X2xlYWYgPCBfX2xlYWYpCiAgICAgICAgcmV0dXJuIDA7CgogICAgX19jcHVpZF9jb3VudChfX2xlYWYsIF9fc3VibGVhZiwgKl9fZWF4LCAqX19lYngsICpfX2VjeCwgKl9fZWR4KTsKICAgIHJldHVybiAxOwp9CgojZW5kaWYgLyogX19DUFVJRF9IICovCgBrZXlsb2NrZXJpbnRyaW4uaAAvKj09PS0tLS0gc3RkYm9vbC5oIC0gU3RhbmRhcmQgaGVhZGVyIGZvciBib29sZWFucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqCiAqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCiAqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCgojaWZuZGVmIF9fU1REQk9PTF9ICiNkZWZpbmUgX19TVERCT09MX0gKCi8qIERvbid0IGRlZmluZSBib29sLCB0cnVlLCBhbmQgZmFsc2UgaW4gQysrLCBleGNlcHQgYXMgYSBHTlUgZXh0ZW5zaW9uLiAqLwojaWZuZGVmIF9fY3BsdXNwbHVzCiNkZWZpbmUgYm9vbCBfQm9vbAojZGVmaW5lIHRydWUgMQojZGVmaW5lIGZhbHNlIDAKI2VsaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgIWRlZmluZWQoX19TVFJJQ1RfQU5TSV9fKQovKiBEZWZpbmUgX0Jvb2wgYXMgYSBHTlUgZXh0ZW5zaW9uLiAqLwojZGVmaW5lIF9Cb29sIGJvb2wKI2lmIF9fY3BsdXNwbHVzIDwgMjAxMTAzTAovKiBGb3IgQysrOTgsIGRlZmluZSBib29sLCBmYWxzZSwgdHJ1ZSBhcyBhIEdOVSBleHRlbnNpb24uICovCiNkZWZpbmUgYm9vbCAgYm9vbAojZGVmaW5lIGZhbHNlIGZhbHNlCiNkZWZpbmUgdHJ1ZSAgdHJ1ZQojZW5kaWYKI2VuZGlmCgojZGVmaW5lIF9fYm9vbF90cnVlX2ZhbHNlX2FyZV9kZWZpbmVkIDEKCiNlbmRpZiAvKiBfX1NUREJPT0xfSCAqLwoALyo9PT0tLS0tIHRibWludHJpbi5oIC0gVEJNIGludHJpbnNpY3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwoKI2lmbmRlZiBfX1g4NklOVFJJTl9ICiNlcnJvciAiTmV2ZXIgdXNlIDx0Ym1pbnRyaW4uaD4gZGlyZWN0bHk7IGluY2x1ZGUgPHg4NmludHJpbi5oPiBpbnN0ZWFkLiIKI2VuZGlmCgojaWZuZGVmIF9fVEJNSU5UUklOX0gKI2RlZmluZSBfX1RCTUlOVFJJTl9ICgovKiBEZWZpbmUgdGhlIGRlZmF1bHQgYXR0cmlidXRlcyBmb3IgdGhlIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUuICovCiNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygidGJtIikpKQoKI2RlZmluZSBfX2JleHRyaV91MzIoYSwgYikgXAogICgodW5zaWduZWQgaW50KV9fYnVpbHRpbl9pYTMyX2JleHRyaV91MzIoKHVuc2lnbmVkIGludCkoYSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBpbnQpKGIpKSkKCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGludCBfX0RFRkFVTFRfRk5fQVRUUlMKX19ibGNmaWxsX3UzMih1bnNpZ25lZCBpbnQgX19hKQp7CiAgcmV0dXJuIF9fYSAmIChfX2EgKyAxKTsKfQoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgaW50IF9fREVGQVVMVF9GTl9BVFRSUwpfX2JsY2lfdTMyKHVuc2lnbmVkIGludCBfX2EpCnsKICByZXR1cm4gX19hIHwgfihfX2EgKyAxKTsKfQoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgaW50IF9fREVGQVVMVF9GTl9BVFRSUwpfX2JsY2ljX3UzMih1bnNpZ25lZCBpbnQgX19hKQp7CiAgcmV0dXJuIH5fX2EgJiAoX19hICsgMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGludCBfX0RFRkFVTFRfRk5fQVRUUlMKX19ibGNtc2tfdTMyKHVuc2lnbmVkIGludCBfX2EpCnsKICByZXR1cm4gX19hIF4gKF9fYSArIDEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTCl9fYmxjc191MzIodW5zaWduZWQgaW50IF9fYSkKewogIHJldHVybiBfX2EgfCAoX19hICsgMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGludCBfX0RFRkFVTFRfRk5fQVRUUlMKX19ibHNmaWxsX3UzMih1bnNpZ25lZCBpbnQgX19hKQp7CiAgcmV0dXJuIF9fYSB8IChfX2EgLSAxKTsKfQoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgaW50IF9fREVGQVVMVF9GTl9BVFRSUwpfX2Jsc2ljX3UzMih1bnNpZ25lZCBpbnQgX19hKQp7CiAgcmV0dXJuIH5fX2EgfCAoX19hIC0gMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGludCBfX0RFRkFVTFRfRk5fQVRUUlMKX190MW1za2NfdTMyKHVuc2lnbmVkIGludCBfX2EpCnsKICByZXR1cm4gfl9fYSB8IChfX2EgKyAxKTsKfQoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgaW50IF9fREVGQVVMVF9GTl9BVFRSUwpfX3R6bXNrX3UzMih1bnNpZ25lZCBpbnQgX19hKQp7CiAgcmV0dXJuIH5fX2EgJiAoX19hIC0gMSk7Cn0KCiNpZmRlZiBfX3g4Nl82NF9fCiNkZWZpbmUgX19iZXh0cmlfdTY0KGEsIGIpIFwKICAoKHVuc2lnbmVkIGxvbmcgbG9uZylfX2J1aWx0aW5faWEzMl9iZXh0cmlfdTY0KCh1bnNpZ25lZCBsb25nIGxvbmcpKGEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZyBsb25nKShiKSkpCgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nIGxvbmcgX19ERUZBVUxUX0ZOX0FUVFJTCl9fYmxjZmlsbF91NjQodW5zaWduZWQgbG9uZyBsb25nIF9fYSkKewogIHJldHVybiBfX2EgJiAoX19hICsgMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0RFRkFVTFRfRk5fQVRUUlMKX19ibGNpX3U2NCh1bnNpZ25lZCBsb25nIGxvbmcgX19hKQp7CiAgcmV0dXJuIF9fYSB8IH4oX19hICsgMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0RFRkFVTFRfRk5fQVRUUlMKX19ibGNpY191NjQodW5zaWduZWQgbG9uZyBsb25nIF9fYSkKewogIHJldHVybiB+X19hICYgKF9fYSArIDEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nIGxvbmcgX19ERUZBVUxUX0ZOX0FUVFJTCl9fYmxjbXNrX3U2NCh1bnNpZ25lZCBsb25nIGxvbmcgX19hKQp7CiAgcmV0dXJuIF9fYSBeIChfX2EgKyAxKTsKfQoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgbG9uZyBsb25nIF9fREVGQVVMVF9GTl9BVFRSUwpfX2JsY3NfdTY0KHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EpCnsKICByZXR1cm4gX19hIHwgKF9fYSArIDEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nIGxvbmcgX19ERUZBVUxUX0ZOX0FUVFJTCl9fYmxzZmlsbF91NjQodW5zaWduZWQgbG9uZyBsb25nIF9fYSkKewogIHJldHVybiBfX2EgfCAoX19hIC0gMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0RFRkFVTFRfRk5fQVRUUlMKX19ibHNpY191NjQodW5zaWduZWQgbG9uZyBsb25nIF9fYSkKewogIHJldHVybiB+X19hIHwgKF9fYSAtIDEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nIGxvbmcgX19ERUZBVUxUX0ZOX0FUVFJTCl9fdDFtc2tjX3U2NCh1bnNpZ25lZCBsb25nIGxvbmcgX19hKQp7CiAgcmV0dXJuIH5fX2EgfCAoX19hICsgMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0RFRkFVTFRfRk5fQVRUUlMKX190em1za191NjQodW5zaWduZWQgbG9uZyBsb25nIF9fYSkKewogIHJldHVybiB+X19hICYgKF9fYSAtIDEpOwp9CiNlbmRpZgoKI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUwoKI2VuZGlmIC8qIF9fVEJNSU5UUklOX0ggKi8KAC8qLQogKiBDb3B5cmlnaHQgKGMpIDIwMTEgRWQgU2Nob3V0ZW4gPGVkQEZyZWVCU0Qub3JnPgogKiAgICAgICAgICAgICAgICAgICAgRGF2aWQgQ2hpc25hbGwgPHRoZXJhdmVuQEZyZWVCU0Qub3JnPgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogKgogKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCiAqIGFyZSBtZXQ6CiAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CiAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQogKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogKgogKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECiAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQogKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQogKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQogKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAogKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwogKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQogKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCiAqIFNVQ0ggREFNQUdFLgogKgogKiAkRnJlZUJTRCQKICovCgojcHJhZ21hIG9uY2UKCiNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KI2luY2x1ZGUgPHN5cy90eXBlcy5oPgojaW5jbHVkZSA8c3RkYm9vbC5oPgoKLyoKICogQzogRG8gaXQgb3Vyc2VsdmVzLgogKiBOb3RlIHRoYXQgdGhlIHJ1bnRpbWUgcmVwcmVzZW50YXRpb24gZGVmaW5lZCBoZXJlIHNob3VsZCBiZSBjb21wYXRpYmxlCiAqIHdpdGggdGhlIEMrKyBvbmUsIGkuZS4gYW4gX0F0b21pYyhUKSBuZWVkcyB0byBjb250YWluIHRoZSBzYW1lCiAqIGJpdHMgYXMgYSBULgogKi8KCiNpbmNsdWRlIDxzdGRkZWYuaD4gIC8qIEZvciBwdHJkaWZmX3QuICovCiNpbmNsdWRlIDxzdGRpbnQuaD4KLy8gSW5jbHVkZSB1Y2hhci5oIG9ubHkgd2hlbiBhdmFpbGFibGUuICBCaW9uaWMncyBzdGRhdG9taWMuaCBpcyBhbHNvIHVzZWQgZm9yCi8vIHRoZSBob3N0ICh2aWEgYSBjb3B5IGluIHByZWJ1aWx0cy9jbGFuZykgYW5kIHVjaGFyLmggaXMgbm90IGF2YWlsYWJsZSBpbiB0aGUKLy8gZ2xpYmMgdXNlZCBmb3IgdGhlIGhvc3QuCiNpZiBkZWZpbmVkKF9fQklPTklDX18pCiMgaW5jbHVkZSA8dWNoYXIuaD4gIC8qIEZvciBjaGFyMTZfdCBhbmQgY2hhcjMyX3QuICAgICAgICAgICAgICAqLwojZW5kaWYKCi8qCiAqIDcuMTcuMSBBdG9taWMgbG9jay1mcmVlIG1hY3Jvcy4KICovCgojaWZkZWYgX19HQ0NfQVRPTUlDX0JPT0xfTE9DS19GUkVFCiNkZWZpbmUJQVRPTUlDX0JPT0xfTE9DS19GUkVFCQlfX0dDQ19BVE9NSUNfQk9PTF9MT0NLX0ZSRUUKI2VuZGlmCiNpZmRlZiBfX0dDQ19BVE9NSUNfQ0hBUl9MT0NLX0ZSRUUKI2RlZmluZQlBVE9NSUNfQ0hBUl9MT0NLX0ZSRUUJCV9fR0NDX0FUT01JQ19DSEFSX0xPQ0tfRlJFRQojZW5kaWYKI2lmZGVmIF9fR0NDX0FUT01JQ19DSEFSMTZfVF9MT0NLX0ZSRUUKI2RlZmluZQlBVE9NSUNfQ0hBUjE2X1RfTE9DS19GUkVFCV9fR0NDX0FUT01JQ19DSEFSMTZfVF9MT0NLX0ZSRUUKI2VuZGlmCiNpZmRlZiBfX0dDQ19BVE9NSUNfQ0hBUjMyX1RfTE9DS19GUkVFCiNkZWZpbmUJQVRPTUlDX0NIQVIzMl9UX0xPQ0tfRlJFRQlfX0dDQ19BVE9NSUNfQ0hBUjMyX1RfTE9DS19GUkVFCiNlbmRpZgojaWZkZWYgX19HQ0NfQVRPTUlDX1dDSEFSX1RfTE9DS19GUkVFCiNkZWZpbmUJQVRPTUlDX1dDSEFSX1RfTE9DS19GUkVFCV9fR0NDX0FUT01JQ19XQ0hBUl9UX0xPQ0tfRlJFRQojZW5kaWYKI2lmZGVmIF9fR0NDX0FUT01JQ19TSE9SVF9MT0NLX0ZSRUUKI2RlZmluZQlBVE9NSUNfU0hPUlRfTE9DS19GUkVFCQlfX0dDQ19BVE9NSUNfU0hPUlRfTE9DS19GUkVFCiNlbmRpZgojaWZkZWYgX19HQ0NfQVRPTUlDX0lOVF9MT0NLX0ZSRUUKI2RlZmluZQlBVE9NSUNfSU5UX0xPQ0tfRlJFRQkJX19HQ0NfQVRPTUlDX0lOVF9MT0NLX0ZSRUUKI2VuZGlmCiNpZmRlZiBfX0dDQ19BVE9NSUNfTE9OR19MT0NLX0ZSRUUKI2RlZmluZQlBVE9NSUNfTE9OR19MT0NLX0ZSRUUJCV9fR0NDX0FUT01JQ19MT05HX0xPQ0tfRlJFRQojZW5kaWYKI2lmZGVmIF9fR0NDX0FUT01JQ19MTE9OR19MT0NLX0ZSRUUKI2RlZmluZQlBVE9NSUNfTExPTkdfTE9DS19GUkVFCQlfX0dDQ19BVE9NSUNfTExPTkdfTE9DS19GUkVFCiNlbmRpZgojaWZkZWYgX19HQ0NfQVRPTUlDX1BPSU5URVJfTE9DS19GUkVFCiNkZWZpbmUJQVRPTUlDX1BPSU5URVJfTE9DS19GUkVFCV9fR0NDX0FUT01JQ19QT0lOVEVSX0xPQ0tfRlJFRQojZW5kaWYKCi8qCiAqIDcuMTcuMiBJbml0aWFsaXphdGlvbi4KICovCgojZGVmaW5lCUFUT01JQ19WQVJfSU5JVCh2YWx1ZSkJCSh2YWx1ZSkKI2RlZmluZQlhdG9taWNfaW5pdChvYmosIHZhbHVlKQkJX19jMTFfYXRvbWljX2luaXQob2JqLCB2YWx1ZSkKCi8qCiAqIENsYW5nIGFuZCByZWNlbnQgR0NDIGJvdGggcHJvdmlkZSBwcmVkZWZpbmVkIG1hY3JvcyBmb3IgdGhlIG1lbW9yeQogKiBvcmRlcmluZ3MuICBJZiB3ZSBhcmUgdXNpbmcgYSBjb21waWxlciB0aGF0IGRvZXNuJ3QgZGVmaW5lIHRoZW0sIHVzZSB0aGUKICogY2xhbmcgdmFsdWVzIC0gdGhlc2Ugd2lsbCBiZSBpZ25vcmVkIGluIHRoZSBmYWxsYmFjayBwYXRoLgogKi8KCiNpZm5kZWYgX19BVE9NSUNfUkVMQVhFRAojZGVmaW5lIF9fQVRPTUlDX1JFTEFYRUQJCTAKI2VuZGlmCiNpZm5kZWYgX19BVE9NSUNfQ09OU1VNRQojZGVmaW5lIF9fQVRPTUlDX0NPTlNVTUUJCTEKI2VuZGlmCiNpZm5kZWYgX19BVE9NSUNfQUNRVUlSRQojZGVmaW5lIF9fQVRPTUlDX0FDUVVJUkUJCTIKI2VuZGlmCiNpZm5kZWYgX19BVE9NSUNfUkVMRUFTRQojZGVmaW5lIF9fQVRPTUlDX1JFTEVBU0UJCTMKI2VuZGlmCiNpZm5kZWYgX19BVE9NSUNfQUNRX1JFTAojZGVmaW5lIF9fQVRPTUlDX0FDUV9SRUwJCTQKI2VuZGlmCiNpZm5kZWYgX19BVE9NSUNfU0VRX0NTVAojZGVmaW5lIF9fQVRPTUlDX1NFUV9DU1QJCTUKI2VuZGlmCgovKgogKiA3LjE3LjMgT3JkZXIgYW5kIGNvbnNpc3RlbmN5LgogKgogKiBUaGUgbWVtb3J5X29yZGVyXyogY29uc3RhbnRzIHRoYXQgZGVub3RlIHRoZSBiYXJyaWVyIGJlaGF2aW91ciBvZiB0aGUKICogYXRvbWljIG9wZXJhdGlvbnMuCiAqIFRoZSBlbnVtIHZhbHVlcyBtdXN0IGJlIGlkZW50aWNhbCB0byB0aG9zZSB1c2VkIGJ5IHRoZQogKiBDKysgPGF0b21pYz4gaGVhZGVyLgogKi8KCnR5cGVkZWYgZW51bSB7CgltZW1vcnlfb3JkZXJfcmVsYXhlZCA9IF9fQVRPTUlDX1JFTEFYRUQsCgltZW1vcnlfb3JkZXJfY29uc3VtZSA9IF9fQVRPTUlDX0NPTlNVTUUsCgltZW1vcnlfb3JkZXJfYWNxdWlyZSA9IF9fQVRPTUlDX0FDUVVJUkUsCgltZW1vcnlfb3JkZXJfcmVsZWFzZSA9IF9fQVRPTUlDX1JFTEVBU0UsCgltZW1vcnlfb3JkZXJfYWNxX3JlbCA9IF9fQVRPTUlDX0FDUV9SRUwsCgltZW1vcnlfb3JkZXJfc2VxX2NzdCA9IF9fQVRPTUlDX1NFUV9DU1QKfSBtZW1vcnlfb3JkZXI7CgovKgogKiA3LjE3LjQgRmVuY2VzLgogKi8KCnN0YXRpYyBfX2lubGluZSB2b2lkIGF0b21pY190aHJlYWRfZmVuY2UobWVtb3J5X29yZGVyIF9fb3JkZXIgX19hdHRyaWJ1dGVfXygodW51c2VkKSkpIHsKCV9fYzExX2F0b21pY190aHJlYWRfZmVuY2UoX19vcmRlcik7Cn0KCnN0YXRpYyBfX2lubGluZSB2b2lkIGF0b21pY19zaWduYWxfZmVuY2UobWVtb3J5X29yZGVyIF9fb3JkZXIgX19hdHRyaWJ1dGVfXygodW51c2VkKSkpIHsKCV9fYzExX2F0b21pY19zaWduYWxfZmVuY2UoX19vcmRlcik7Cn0KCi8qCiAqIDcuMTcuNSBMb2NrLWZyZWUgcHJvcGVydHkuCiAqLwoKI2RlZmluZQlhdG9taWNfaXNfbG9ja19mcmVlKG9iaikgX19jMTFfYXRvbWljX2lzX2xvY2tfZnJlZShzaXplb2YoKihvYmopKSkKCi8qCiAqIDcuMTcuNiBBdG9taWMgaW50ZWdlciB0eXBlcy4KICovCgp0eXBlZGVmIF9BdG9taWMoYm9vbCkJCQlhdG9taWNfYm9vbDsKdHlwZWRlZiBfQXRvbWljKGNoYXIpCQkJYXRvbWljX2NoYXI7CnR5cGVkZWYgX0F0b21pYyhzaWduZWQgY2hhcikJCWF0b21pY19zY2hhcjsKdHlwZWRlZiBfQXRvbWljKHVuc2lnbmVkIGNoYXIpCQlhdG9taWNfdWNoYXI7CnR5cGVkZWYgX0F0b21pYyhzaG9ydCkJCQlhdG9taWNfc2hvcnQ7CnR5cGVkZWYgX0F0b21pYyh1bnNpZ25lZCBzaG9ydCkJCWF0b21pY191c2hvcnQ7CnR5cGVkZWYgX0F0b21pYyhpbnQpCQkJYXRvbWljX2ludDsKdHlwZWRlZiBfQXRvbWljKHVuc2lnbmVkIGludCkJCWF0b21pY191aW50Owp0eXBlZGVmIF9BdG9taWMobG9uZykJCQlhdG9taWNfbG9uZzsKdHlwZWRlZiBfQXRvbWljKHVuc2lnbmVkIGxvbmcpCQlhdG9taWNfdWxvbmc7CnR5cGVkZWYgX0F0b21pYyhsb25nIGxvbmcpCQlhdG9taWNfbGxvbmc7CnR5cGVkZWYgX0F0b21pYyh1bnNpZ25lZCBsb25nIGxvbmcpCWF0b21pY191bGxvbmc7CiNpZiBkZWZpbmVkKF9fQklPTklDX18pIHx8IChkZWZpbmVkKF9fY3BsdXNwbHVzKSAmJiBfX2NwbHVzcGx1cyA+PSAyMDExMDNMKQogIHR5cGVkZWYgX0F0b21pYyhjaGFyMTZfdCkJCWF0b21pY19jaGFyMTZfdDsKICB0eXBlZGVmIF9BdG9taWMoY2hhcjMyX3QpCQlhdG9taWNfY2hhcjMyX3Q7CiNlbmRpZgp0eXBlZGVmIF9BdG9taWMod2NoYXJfdCkJCWF0b21pY193Y2hhcl90Owp0eXBlZGVmIF9BdG9taWMoaW50X2xlYXN0OF90KQkJYXRvbWljX2ludF9sZWFzdDhfdDsKdHlwZWRlZiBfQXRvbWljKHVpbnRfbGVhc3Q4X3QpCWF0b21pY191aW50X2xlYXN0OF90Owp0eXBlZGVmIF9BdG9taWMoaW50X2xlYXN0MTZfdCkJYXRvbWljX2ludF9sZWFzdDE2X3Q7CnR5cGVkZWYgX0F0b21pYyh1aW50X2xlYXN0MTZfdCkJYXRvbWljX3VpbnRfbGVhc3QxNl90Owp0eXBlZGVmIF9BdG9taWMoaW50X2xlYXN0MzJfdCkJYXRvbWljX2ludF9sZWFzdDMyX3Q7CnR5cGVkZWYgX0F0b21pYyh1aW50X2xlYXN0MzJfdCkJYXRvbWljX3VpbnRfbGVhc3QzMl90Owp0eXBlZGVmIF9BdG9taWMoaW50X2xlYXN0NjRfdCkJYXRvbWljX2ludF9sZWFzdDY0X3Q7CnR5cGVkZWYgX0F0b21pYyh1aW50X2xlYXN0NjRfdCkJYXRvbWljX3VpbnRfbGVhc3Q2NF90Owp0eXBlZGVmIF9BdG9taWMoaW50X2Zhc3Q4X3QpCQlhdG9taWNfaW50X2Zhc3Q4X3Q7CnR5cGVkZWYgX0F0b21pYyh1aW50X2Zhc3Q4X3QpCQlhdG9taWNfdWludF9mYXN0OF90Owp0eXBlZGVmIF9BdG9taWMoaW50X2Zhc3QxNl90KQkJYXRvbWljX2ludF9mYXN0MTZfdDsKdHlwZWRlZiBfQXRvbWljKHVpbnRfZmFzdDE2X3QpCWF0b21pY191aW50X2Zhc3QxNl90Owp0eXBlZGVmIF9BdG9taWMoaW50X2Zhc3QzMl90KQkJYXRvbWljX2ludF9mYXN0MzJfdDsKdHlwZWRlZiBfQXRvbWljKHVpbnRfZmFzdDMyX3QpCWF0b21pY191aW50X2Zhc3QzMl90Owp0eXBlZGVmIF9BdG9taWMoaW50X2Zhc3Q2NF90KQkJYXRvbWljX2ludF9mYXN0NjRfdDsKdHlwZWRlZiBfQXRvbWljKHVpbnRfZmFzdDY0X3QpCWF0b21pY191aW50X2Zhc3Q2NF90Owp0eXBlZGVmIF9BdG9taWMoaW50cHRyX3QpCQlhdG9taWNfaW50cHRyX3Q7CnR5cGVkZWYgX0F0b21pYyh1aW50cHRyX3QpCQlhdG9taWNfdWludHB0cl90Owp0eXBlZGVmIF9BdG9taWMoc2l6ZV90KQkJYXRvbWljX3NpemVfdDsKdHlwZWRlZiBfQXRvbWljKHB0cmRpZmZfdCkJCWF0b21pY19wdHJkaWZmX3Q7CnR5cGVkZWYgX0F0b21pYyhpbnRtYXhfdCkJCWF0b21pY19pbnRtYXhfdDsKdHlwZWRlZiBfQXRvbWljKHVpbnRtYXhfdCkJCWF0b21pY191aW50bWF4X3Q7CgovKgogKiA3LjE3LjcgT3BlcmF0aW9ucyBvbiBhdG9taWMgdHlwZXMuCiAqLwoKLyoKICogQ29tcGlsZXItc3BlY2lmaWMgb3BlcmF0aW9ucy4KICovCgojZGVmaW5lCWF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZ19leHBsaWNpdChvYmplY3QsIGV4cGVjdGVkLAlcCiAgICBkZXNpcmVkLCBzdWNjZXNzLCBmYWlsdXJlKQkJCQkJCVwKCV9fYzExX2F0b21pY19jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZyhvYmplY3QsIGV4cGVjdGVkLCBkZXNpcmVkLAlcCgkgICAgc3VjY2VzcywgZmFpbHVyZSkKI2RlZmluZQlhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrX2V4cGxpY2l0KG9iamVjdCwgZXhwZWN0ZWQsCQlcCiAgICBkZXNpcmVkLCBzdWNjZXNzLCBmYWlsdXJlKQkJCQkJCVwKCV9fYzExX2F0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWsob2JqZWN0LCBleHBlY3RlZCwgZGVzaXJlZCwJXAoJICAgIHN1Y2Nlc3MsIGZhaWx1cmUpCiNkZWZpbmUJYXRvbWljX2V4Y2hhbmdlX2V4cGxpY2l0KG9iamVjdCwgZGVzaXJlZCwgb3JkZXIpCQlcCglfX2MxMV9hdG9taWNfZXhjaGFuZ2Uob2JqZWN0LCBkZXNpcmVkLCBvcmRlcikKI2RlZmluZQlhdG9taWNfZmV0Y2hfYWRkX2V4cGxpY2l0KG9iamVjdCwgb3BlcmFuZCwgb3JkZXIpCQlcCglfX2MxMV9hdG9taWNfZmV0Y2hfYWRkKG9iamVjdCwgb3BlcmFuZCwgb3JkZXIpCiNkZWZpbmUJYXRvbWljX2ZldGNoX2FuZF9leHBsaWNpdChvYmplY3QsIG9wZXJhbmQsIG9yZGVyKQkJXAoJX19jMTFfYXRvbWljX2ZldGNoX2FuZChvYmplY3QsIG9wZXJhbmQsIG9yZGVyKQojZGVmaW5lCWF0b21pY19mZXRjaF9vcl9leHBsaWNpdChvYmplY3QsIG9wZXJhbmQsIG9yZGVyKQkJXAoJX19jMTFfYXRvbWljX2ZldGNoX29yKG9iamVjdCwgb3BlcmFuZCwgb3JkZXIpCiNkZWZpbmUJYXRvbWljX2ZldGNoX3N1Yl9leHBsaWNpdChvYmplY3QsIG9wZXJhbmQsIG9yZGVyKQkJXAoJX19jMTFfYXRvbWljX2ZldGNoX3N1YihvYmplY3QsIG9wZXJhbmQsIG9yZGVyKQojZGVmaW5lCWF0b21pY19mZXRjaF94b3JfZXhwbGljaXQob2JqZWN0LCBvcGVyYW5kLCBvcmRlcikJCVwKCV9fYzExX2F0b21pY19mZXRjaF94b3Iob2JqZWN0LCBvcGVyYW5kLCBvcmRlcikKI2RlZmluZQlhdG9taWNfbG9hZF9leHBsaWNpdChvYmplY3QsIG9yZGVyKQkJCQlcCglfX2MxMV9hdG9taWNfbG9hZChvYmplY3QsIG9yZGVyKQojZGVmaW5lCWF0b21pY19zdG9yZV9leHBsaWNpdChvYmplY3QsIGRlc2lyZWQsIG9yZGVyKQkJCVwKCV9fYzExX2F0b21pY19zdG9yZShvYmplY3QsIGRlc2lyZWQsIG9yZGVyKQoKLyoKICogQ29udmVuaWVuY2UgZnVuY3Rpb25zLgogKi8KCiNkZWZpbmUJYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nKG9iamVjdCwgZXhwZWN0ZWQsIGRlc2lyZWQpCVwKCWF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZ19leHBsaWNpdChvYmplY3QsIGV4cGVjdGVkLAlcCgkgICAgZGVzaXJlZCwgbWVtb3J5X29yZGVyX3NlcV9jc3QsIG1lbW9yeV9vcmRlcl9zZXFfY3N0KQojZGVmaW5lCWF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWsob2JqZWN0LCBleHBlY3RlZCwgZGVzaXJlZCkJCVwKCWF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWtfZXhwbGljaXQob2JqZWN0LCBleHBlY3RlZCwJCVwKCSAgICBkZXNpcmVkLCBtZW1vcnlfb3JkZXJfc2VxX2NzdCwgbWVtb3J5X29yZGVyX3NlcV9jc3QpCiNkZWZpbmUJYXRvbWljX2V4Y2hhbmdlKG9iamVjdCwgZGVzaXJlZCkJCQkJXAoJYXRvbWljX2V4Y2hhbmdlX2V4cGxpY2l0KG9iamVjdCwgZGVzaXJlZCwgbWVtb3J5X29yZGVyX3NlcV9jc3QpCiNkZWZpbmUJYXRvbWljX2ZldGNoX2FkZChvYmplY3QsIG9wZXJhbmQpCQkJCVwKCWF0b21pY19mZXRjaF9hZGRfZXhwbGljaXQob2JqZWN0LCBvcGVyYW5kLCBtZW1vcnlfb3JkZXJfc2VxX2NzdCkKI2RlZmluZQlhdG9taWNfZmV0Y2hfYW5kKG9iamVjdCwgb3BlcmFuZCkJCQkJXAoJYXRvbWljX2ZldGNoX2FuZF9leHBsaWNpdChvYmplY3QsIG9wZXJhbmQsIG1lbW9yeV9vcmRlcl9zZXFfY3N0KQojZGVmaW5lCWF0b21pY19mZXRjaF9vcihvYmplY3QsIG9wZXJhbmQpCQkJCVwKCWF0b21pY19mZXRjaF9vcl9leHBsaWNpdChvYmplY3QsIG9wZXJhbmQsIG1lbW9yeV9vcmRlcl9zZXFfY3N0KQojZGVmaW5lCWF0b21pY19mZXRjaF9zdWIob2JqZWN0LCBvcGVyYW5kKQkJCQlcCglhdG9taWNfZmV0Y2hfc3ViX2V4cGxpY2l0KG9iamVjdCwgb3BlcmFuZCwgbWVtb3J5X29yZGVyX3NlcV9jc3QpCiNkZWZpbmUJYXRvbWljX2ZldGNoX3hvcihvYmplY3QsIG9wZXJhbmQpCQkJCVwKCWF0b21pY19mZXRjaF94b3JfZXhwbGljaXQob2JqZWN0LCBvcGVyYW5kLCBtZW1vcnlfb3JkZXJfc2VxX2NzdCkKI2RlZmluZQlhdG9taWNfbG9hZChvYmplY3QpCQkJCQkJXAoJYXRvbWljX2xvYWRfZXhwbGljaXQob2JqZWN0LCBtZW1vcnlfb3JkZXJfc2VxX2NzdCkKI2RlZmluZQlhdG9taWNfc3RvcmUob2JqZWN0LCBkZXNpcmVkKQkJCQkJXAoJYXRvbWljX3N0b3JlX2V4cGxpY2l0KG9iamVjdCwgZGVzaXJlZCwgbWVtb3J5X29yZGVyX3NlcV9jc3QpCgovKgogKiA3LjE3LjggQXRvbWljIGZsYWcgdHlwZSBhbmQgb3BlcmF0aW9ucy4KICoKICogWFhYOiBBc3N1bWUgYXRvbWljX2Jvb2wgY2FuIGJlIHVzZWQgYXMgYW4gYXRvbWljX2ZsYWcuIElzIHRoZXJlIHNvbWUKICoga2luZCBvZiBjb21waWxlciBidWlsdC1pbiB0eXBlIHdlIGNvdWxkIHVzZT8KICovCgp0eXBlZGVmIHN0cnVjdCB7CglhdG9taWNfYm9vbAlfX2ZsYWc7Cn0gYXRvbWljX2ZsYWc7CgojZGVmaW5lCUFUT01JQ19GTEFHX0lOSVQJCXsgQVRPTUlDX1ZBUl9JTklUKGZhbHNlKSB9CgpzdGF0aWMgX19pbmxpbmUgYm9vbCBhdG9taWNfZmxhZ190ZXN0X2FuZF9zZXRfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX2ZsYWcgKl9fb2JqZWN0LCBtZW1vcnlfb3JkZXIgX19vcmRlcikgewoJcmV0dXJuIChhdG9taWNfZXhjaGFuZ2VfZXhwbGljaXQoJl9fb2JqZWN0LT5fX2ZsYWcsIDEsIF9fb3JkZXIpKTsKfQoKc3RhdGljIF9faW5saW5lIHZvaWQgYXRvbWljX2ZsYWdfY2xlYXJfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX2ZsYWcgKl9fb2JqZWN0LCBtZW1vcnlfb3JkZXIgX19vcmRlcikgewoJYXRvbWljX3N0b3JlX2V4cGxpY2l0KCZfX29iamVjdC0+X19mbGFnLCAwLCBfX29yZGVyKTsKfQoKc3RhdGljIF9faW5saW5lIGJvb2wgYXRvbWljX2ZsYWdfdGVzdF9hbmRfc2V0KHZvbGF0aWxlIGF0b21pY19mbGFnICpfX29iamVjdCkgewoJcmV0dXJuIChhdG9taWNfZmxhZ190ZXN0X2FuZF9zZXRfZXhwbGljaXQoX19vYmplY3QsIG1lbW9yeV9vcmRlcl9zZXFfY3N0KSk7Cn0KCnN0YXRpYyBfX2lubGluZSB2b2lkIGF0b21pY19mbGFnX2NsZWFyKHZvbGF0aWxlIGF0b21pY19mbGFnICpfX29iamVjdCkgewoJYXRvbWljX2ZsYWdfY2xlYXJfZXhwbGljaXQoX19vYmplY3QsIG1lbW9yeV9vcmRlcl9zZXFfY3N0KTsKfQoAcHBjX3dyYXBwZXJzL21tX21hbGxvYy5oAHNhbml0aXplci9kZnNhbl9pbnRlcmZhY2UuaAAgKGZzZWVrKGhhbmRsZSwgMCwgMik9AD49AHByZWZlci1yZWxhdGl2ZQBpbnZhbGlkIHJld3JpdGUgcGF0dGVybjogAGNhcHR1cmUgJWQgLT4gJWQAKCVwKQBNb25nb2xpYW4AT2xkX0h1bmdhcmlhbgBPc2FnZQBQZABXYXJhbmdfQ2l0aQBQQzogAFVuc29ydGVkIGFkZHIgbWFwIGVudHJ5OiAweCVseDogJXMgPC0+IDB4JWx4OiAlcwBSZWFkaW5nICV6ZCBieXRlcyBmcm9tIG9mZnNldCAlanUgcmV0dXJuZWQgJXpkIHdoaWNoIGlzIG5vdCBhIG11bHRpcGxlIG9mICV6dS4AYmFzZSAhPSBrSW52YWxpZEJhc2UAbWF5IG5vdCBkZWxldGUgZGVmYXVsdCBhcmVuYQByZWdpb24tPmhlYWRlci5hcmVuYSA9PSBhcmVuYQBsb25nAGNoYXIzMl90AG1MAG5lAFN0AFBFUk1JU1NJT05fREVOSUVEACFvaygpAFN0cmluZyBjYW5ub3QgZW5kIHdpdGggXAAsIGJlZ2luID0gAGV4dGVybmFsL2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3Rocm93X2RlbGVnYXRlLmNjADBYAGV4dGVybmFsL2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL251bWJlcnMuY2MAY29uZGl0aW9uIHVudHJ1ZSBvbiByZXR1cm4gZnJvbSBBd2FpdABFbnF1ZXVlIHRvIGVtcHR5IGxpc3QgZmFpbGVkAHdhaXRlcnMgZGlzYXBwZWFyZWQgZHVyaW5nIEVucXVldWUoKSEAVW53YWl0ACN0cmFucz0AZmFpbGVkIHRvIHNldCBGRF9DTE9FWEVDIG9uIHVyYW5kb20gZmQACkNhbGN1bGF0ZWQ6IABidWlsdCBvbjogbi9hAFNTTCByb3V0aW5lcwBVc2VyIGRlZmluZWQgZnVuY3Rpb25zAG1hbGxvYyBmYWlsdXJlAGV4dGVybmFsL3Byb3RvYnVmL3NyYy9nb29nbGUvcHJvdG9idWYvbWFwX2ZpZWxkLmgAICBFeHBlY3RlZCA6IABreXRoZS5wcm90by5TY2FuUmVxdWVzdC5mYWN0X3ByZWZpeAAtWGFuYWx5emVyAC5remlwAC8AQ2FuJ3QgZ2V0IHdvcmtpbmcgZGlyZWN0b3J5OiAALgBreXRoZV9tZXRhZGF0YQBGb3VuZCBudWxsIGZpbGU6IABTZWFyY2ggcGF0aCB3YXMgAFN5c3Jvb3Qgc2V0IHRvIAAjdW5kZWYAX19jbGFuZ19jdWRhX2RldmljZV9mdW5jdGlvbnMuaAAvKj09PS0tLS0gYXJtX2FjbGUuaCAtIEFSTSBOb24tTmVvbiBpbnRyaW5zaWNzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqCiAqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCiAqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCgojaWZuZGVmIF9fQVJNX0FDTEVfSAojZGVmaW5lIF9fQVJNX0FDTEVfSAoKI2lmbmRlZiBfX0FSTV9BQ0xFCiNlcnJvciAiQUNMRSBpbnRyaW5zaWNzIHN1cHBvcnQgbm90IGVuYWJsZWQuIgojZW5kaWYKCiNpbmNsdWRlIDxzdGRpbnQuaD4KCiNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQpleHRlcm4gIkMiIHsKI2VuZGlmCgovKiA4IFNZTkNIUk9OSVpBVElPTiwgQkFSUklFUiBBTkQgSElOVCBJTlRSSU5TSUNTICovCi8qIDguMyBNZW1vcnkgYmFycmllcnMgKi8KI2lmICFfX2hhc19idWlsdGluKF9fZG1iKQojZGVmaW5lIF9fZG1iKGkpIF9fYnVpbHRpbl9hcm1fZG1iKGkpCiNlbmRpZgojaWYgIV9faGFzX2J1aWx0aW4oX19kc2IpCiNkZWZpbmUgX19kc2IoaSkgX19idWlsdGluX2FybV9kc2IoaSkKI2VuZGlmCiNpZiAhX19oYXNfYnVpbHRpbihfX2lzYikKI2RlZmluZSBfX2lzYihpKSBfX2J1aWx0aW5fYXJtX2lzYihpKQojZW5kaWYKCi8qIDguNCBIaW50cyAqLwoKI2lmICFfX2hhc19idWlsdGluKF9fd2ZpKQpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpIF9fd2ZpKHZvaWQpIHsKICBfX2J1aWx0aW5fYXJtX3dmaSgpOwp9CiNlbmRpZgoKI2lmICFfX2hhc19idWlsdGluKF9fd2ZlKQpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpIF9fd2ZlKHZvaWQpIHsKICBfX2J1aWx0aW5fYXJtX3dmZSgpOwp9CiNlbmRpZgoKI2lmICFfX2hhc19idWlsdGluKF9fc2V2KQpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpIF9fc2V2KHZvaWQpIHsKICBfX2J1aWx0aW5fYXJtX3NldigpOwp9CiNlbmRpZgoKI2lmICFfX2hhc19idWlsdGluKF9fc2V2bCkKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKSBfX3Nldmwodm9pZCkgewogIF9fYnVpbHRpbl9hcm1fc2V2bCgpOwp9CiNlbmRpZgoKI2lmICFfX2hhc19idWlsdGluKF9feWllbGQpCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkgX195aWVsZCh2b2lkKSB7CiAgX19idWlsdGluX2FybV95aWVsZCgpOwp9CiNlbmRpZgoKI2lmIF9fQVJNXzMyQklUX1NUQVRFCiNkZWZpbmUgX19kYmcodCkgX19idWlsdGluX2FybV9kYmcodCkKI2VuZGlmCgovKiA4LjUgU3dhcCAqLwpzdGF0aWMgX19pbmxpbmVfXyB1aW50MzJfdCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpfX3N3cCh1aW50MzJfdCBfX3gsIHZvbGF0aWxlIHVpbnQzMl90ICpfX3ApIHsKICB1aW50MzJfdCB2OwogIGRvCiAgICB2ID0gX19idWlsdGluX2FybV9sZHJleChfX3ApOwogIHdoaWxlIChfX2J1aWx0aW5fYXJtX3N0cmV4KF9feCwgX19wKSk7CiAgcmV0dXJuIHY7Cn0KCi8qIDguNiBNZW1vcnkgcHJlZmV0Y2ggaW50cmluc2ljcyAqLwovKiA4LjYuMSBEYXRhIHByZWZldGNoICovCiNkZWZpbmUgX19wbGQoYWRkcikgX19wbGR4KDAsIDAsIDAsIGFkZHIpCgojaWYgX19BUk1fMzJCSVRfU1RBVEUKI2RlZmluZSBfX3BsZHgoYWNjZXNzX2tpbmQsIGNhY2hlX2xldmVsLCByZXRlbnRpb25fcG9saWN5LCBhZGRyKSBcCiAgX19idWlsdGluX2FybV9wcmVmZXRjaChhZGRyLCBhY2Nlc3Nfa2luZCwgMSkKI2Vsc2UKI2RlZmluZSBfX3BsZHgoYWNjZXNzX2tpbmQsIGNhY2hlX2xldmVsLCByZXRlbnRpb25fcG9saWN5LCBhZGRyKSBcCiAgX19idWlsdGluX2FybV9wcmVmZXRjaChhZGRyLCBhY2Nlc3Nfa2luZCwgY2FjaGVfbGV2ZWwsIHJldGVudGlvbl9wb2xpY3ksIDEpCiNlbmRpZgoKLyogOC42LjIgSW5zdHJ1Y3Rpb24gcHJlZmV0Y2ggKi8KI2RlZmluZSBfX3BsaShhZGRyKSBfX3BsaXgoMCwgMCwgYWRkcikKCiNpZiBfX0FSTV8zMkJJVF9TVEFURQojZGVmaW5lIF9fcGxpeChjYWNoZV9sZXZlbCwgcmV0ZW50aW9uX3BvbGljeSwgYWRkcikgXAogIF9fYnVpbHRpbl9hcm1fcHJlZmV0Y2goYWRkciwgMCwgMCkKI2Vsc2UKI2RlZmluZSBfX3BsaXgoY2FjaGVfbGV2ZWwsIHJldGVudGlvbl9wb2xpY3ksIGFkZHIpIFwKICBfX2J1aWx0aW5fYXJtX3ByZWZldGNoKGFkZHIsIDAsIGNhY2hlX2xldmVsLCByZXRlbnRpb25fcG9saWN5LCAwKQojZW5kaWYKCi8qIDguNyBOT1AgKi8KI2lmICFkZWZpbmVkKF9NU0NfVkVSKSB8fCAhZGVmaW5lZChfX2FhcmNoNjRfXykKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKSBfX25vcCh2b2lkKSB7CiAgX19idWlsdGluX2FybV9ub3AoKTsKfQojZW5kaWYKCi8qIDkgREFUQS1QUk9DRVNTSU5HIElOVFJJTlNJQ1MgKi8KLyogOS4yIE1pc2NlbGxhbmVvdXMgZGF0YS1wcm9jZXNzaW5nIGludHJpbnNpY3MgKi8KLyogUk9SICovCnN0YXRpYyBfX2lubGluZV9fIHVpbnQzMl90IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCl9fcm9yKHVpbnQzMl90IF9feCwgdWludDMyX3QgX195KSB7CiAgX195ICU9IDMyOwogIGlmIChfX3kgPT0gMCkKICAgIHJldHVybiBfX3g7CiAgcmV0dXJuIChfX3ggPj4gX195KSB8IChfX3ggPDwgKDMyIC0gX195KSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVpbnQ2NF90IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCl9fcm9ybGwodWludDY0X3QgX194LCB1aW50MzJfdCBfX3kpIHsKICBfX3kgJT0gNjQ7CiAgaWYgKF9feSA9PSAwKQogICAgcmV0dXJuIF9feDsKICByZXR1cm4gKF9feCA+PiBfX3kpIHwgKF9feCA8PCAoNjQgLSBfX3kpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgbG9uZyBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpfX3JvcmwodW5zaWduZWQgbG9uZyBfX3gsIHVpbnQzMl90IF9feSkgewojaWYgX19TSVpFT0ZfTE9OR19fID09IDQKICByZXR1cm4gX19yb3IoX194LCBfX3kpOwojZWxzZQogIHJldHVybiBfX3JvcmxsKF9feCwgX195KTsKI2VuZGlmCn0KCgovKiBDTFogKi8Kc3RhdGljIF9faW5saW5lX18gdWludDMyX3QgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKX19jbHoodWludDMyX3QgX190KSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9jbHooX190KTsKfQoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgbG9uZyBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpfX2NsemwodW5zaWduZWQgbG9uZyBfX3QpIHsKICByZXR1cm4gX19idWlsdGluX2NsemwoX190KTsKfQoKc3RhdGljIF9faW5saW5lX18gdWludDY0X3QgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKX19jbHpsbCh1aW50NjRfdCBfX3QpIHsKICByZXR1cm4gX19idWlsdGluX2NsemxsKF9fdCk7Cn0KCi8qIENMUyAqLwpzdGF0aWMgX19pbmxpbmVfXyB1aW50MzJfdCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpfX2Nscyh1aW50MzJfdCBfX3QpIHsKICByZXR1cm4gX19idWlsdGluX2FybV9jbHMoX190KTsKfQoKc3RhdGljIF9faW5saW5lX18gdWludDMyX3QgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKX19jbHNsKHVuc2lnbmVkIGxvbmcgX190KSB7CiNpZiBfX1NJWkVPRl9MT05HX18gPT0gNAogIHJldHVybiBfX2J1aWx0aW5fYXJtX2NscyhfX3QpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fYXJtX2NsczY0KF9fdCk7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyB1aW50MzJfdCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpfX2Nsc2xsKHVpbnQ2NF90IF9fdCkgewogIHJldHVybiBfX2J1aWx0aW5fYXJtX2NsczY0KF9fdCk7Cn0KCi8qIFJFViAqLwpzdGF0aWMgX19pbmxpbmVfXyB1aW50MzJfdCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpfX3Jldih1aW50MzJfdCBfX3QpIHsKICByZXR1cm4gX19idWlsdGluX2Jzd2FwMzIoX190KTsKfQoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgbG9uZyBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpfX3JldmwodW5zaWduZWQgbG9uZyBfX3QpIHsKI2lmIF9fU0laRU9GX0xPTkdfXyA9PSA0CiAgcmV0dXJuIF9fYnVpbHRpbl9ic3dhcDMyKF9fdCk7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9ic3dhcDY0KF9fdCk7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyB1aW50NjRfdCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpfX3JldmxsKHVpbnQ2NF90IF9fdCkgewogIHJldHVybiBfX2J1aWx0aW5fYnN3YXA2NChfX3QpOwp9CgovKiBSRVYxNiAqLwpzdGF0aWMgX19pbmxpbmVfXyB1aW50MzJfdCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpfX3JldjE2KHVpbnQzMl90IF9fdCkgewogIHJldHVybiBfX3JvcihfX3JldihfX3QpLCAxNik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVpbnQ2NF90IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCl9fcmV2MTZsbCh1aW50NjRfdCBfX3QpIHsKICByZXR1cm4gKCgodWludDY0X3QpX19yZXYxNihfX3QgPj4gMzIpKSA8PCAzMikgfCBfX3JldjE2KF9fdCk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGxvbmcgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKX19yZXYxNmwodW5zaWduZWQgbG9uZyBfX3QpIHsKI2lmIF9fU0laRU9GX0xPTkdfXyA9PSA0CiAgICByZXR1cm4gX19yZXYxNihfX3QpOwojZWxzZQogICAgcmV0dXJuIF9fcmV2MTZsbChfX3QpOwojZW5kaWYKfQoKLyogUkVWU0ggKi8Kc3RhdGljIF9faW5saW5lX18gaW50MTZfdCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpfX3JldnNoKGludDE2X3QgX190KSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9ic3dhcDE2KF9fdCk7Cn0KCi8qIFJCSVQgKi8Kc3RhdGljIF9faW5saW5lX18gdWludDMyX3QgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKX19yYml0KHVpbnQzMl90IF9fdCkgewogIHJldHVybiBfX2J1aWx0aW5fYXJtX3JiaXQoX190KTsKfQoKc3RhdGljIF9faW5saW5lX18gdWludDY0X3QgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKX19yYml0bGwodWludDY0X3QgX190KSB7CiNpZiBfX0FSTV8zMkJJVF9TVEFURQogIHJldHVybiAoKCh1aW50NjRfdClfX2J1aWx0aW5fYXJtX3JiaXQoX190KSkgPDwgMzIpIHwKICAgICAgICAgX19idWlsdGluX2FybV9yYml0KF9fdCA+PiAzMik7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hcm1fcmJpdDY0KF9fdCk7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCl9fcmJpdGwodW5zaWduZWQgbG9uZyBfX3QpIHsKI2lmIF9fU0laRU9GX0xPTkdfXyA9PSA0CiAgcmV0dXJuIF9fcmJpdChfX3QpOwojZWxzZQogIHJldHVybiBfX3JiaXRsbChfX3QpOwojZW5kaWYKfQoKLyoKICogOS4zIDE2LWJpdCBtdWx0aXBsaWNhdGlvbnMKICovCiNpZiBfX0FSTV9GRUFUVVJFX0RTUApzdGF0aWMgX19pbmxpbmVfXyBpbnQzMl90IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLF9fbm9kZWJ1Z19fKSkKX19zbXVsYmIoaW50MzJfdCBfX2EsIGludDMyX3QgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hcm1fc211bGJiKF9fYSwgX19iKTsKfQpzdGF0aWMgX19pbmxpbmVfXyBpbnQzMl90IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLF9fbm9kZWJ1Z19fKSkKX19zbXVsYnQoaW50MzJfdCBfX2EsIGludDMyX3QgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hcm1fc211bGJ0KF9fYSwgX19iKTsKfQpzdGF0aWMgX19pbmxpbmVfXyBpbnQzMl90IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLF9fbm9kZWJ1Z19fKSkKX19zbXVsdGIoaW50MzJfdCBfX2EsIGludDMyX3QgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hcm1fc211bHRiKF9fYSwgX19iKTsKfQpzdGF0aWMgX19pbmxpbmVfXyBpbnQzMl90IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLF9fbm9kZWJ1Z19fKSkKX19zbXVsdHQoaW50MzJfdCBfX2EsIGludDMyX3QgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hcm1fc211bHR0KF9fYSwgX19iKTsKfQpzdGF0aWMgX19pbmxpbmVfXyBpbnQzMl90IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLF9fbm9kZWJ1Z19fKSkKX19zbXVsd2IoaW50MzJfdCBfX2EsIGludDMyX3QgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hcm1fc211bHdiKF9fYSwgX19iKTsKfQpzdGF0aWMgX19pbmxpbmVfXyBpbnQzMl90IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLF9fbm9kZWJ1Z19fKSkKX19zbXVsd3QoaW50MzJfdCBfX2EsIGludDMyX3QgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hcm1fc211bHd0KF9fYSwgX19iKTsKfQojZW5kaWYKCi8qCiAqIDkuNCBTYXR1cmF0aW5nIGludHJpbnNpY3MKICoKICogRklYTUU6IENoYW5nZSBndWFyZCB0byB0aGVpciBjb3Jyb3Nwb25kaW5nIF9fQVJNX0ZFQVRVUkUgZmxhZyB3aGVuIFEgZmxhZwogKiBpbnRyaW5zaWNzIGFyZSBpbXBsZW1lbnRlZCBhbmQgdGhlIGZsYWcgaXMgZW5hYmxlZC4KICovCi8qIDkuNC4xIFdpZHRoLXNwZWNpZmllZCBzYXR1cmF0aW9uIGludHJpbnNpY3MgKi8KI2lmIF9fQVJNX0ZFQVRVUkVfU0FUCiNkZWZpbmUgX19zc2F0KHgsIHkpIF9fYnVpbHRpbl9hcm1fc3NhdCh4LCB5KQojZGVmaW5lIF9fdXNhdCh4LCB5KSBfX2J1aWx0aW5fYXJtX3VzYXQoeCwgeSkKI2VuZGlmCgovKiA5LjQuMiBTYXR1cmF0aW5nIGFkZGl0aW9uIGFuZCBzdWJ0cmFjdGlvbiBpbnRyaW5zaWNzICovCiNpZiBfX0FSTV9GRUFUVVJFX0RTUApzdGF0aWMgX19pbmxpbmVfXyBpbnQzMl90IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCl9fcWFkZChpbnQzMl90IF9fdCwgaW50MzJfdCBfX3YpIHsKICByZXR1cm4gX19idWlsdGluX2FybV9xYWRkKF9fdCwgX192KTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50MzJfdCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpfX3FzdWIoaW50MzJfdCBfX3QsIGludDMyX3QgX192KSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hcm1fcXN1YihfX3QsIF9fdik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludDMyX3QgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKX19xZGJsKGludDMyX3QgX190KSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hcm1fcWFkZChfX3QsIF9fdCk7Cn0KI2VuZGlmCgovKiA5LjQuMyBBY2N1bXVsdGF0aW5nIG11bHRpcGxpY2F0aW9ucyAqLwojaWYgX19BUk1fRkVBVFVSRV9EU1AKc3RhdGljIF9faW5saW5lX18gaW50MzJfdCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpfX3NtbGFiYihpbnQzMl90IF9fYSwgaW50MzJfdCBfX2IsIGludDMyX3QgX19jKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hcm1fc21sYWJiKF9fYSwgX19iLCBfX2MpOwp9CnN0YXRpYyBfX2lubGluZV9fIGludDMyX3QgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKX19zbWxhYnQoaW50MzJfdCBfX2EsIGludDMyX3QgX19iLCBpbnQzMl90IF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fYXJtX3NtbGFidChfX2EsIF9fYiwgX19jKTsKfQpzdGF0aWMgX19pbmxpbmVfXyBpbnQzMl90IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCl9fc21sYXRiKGludDMyX3QgX19hLCBpbnQzMl90IF9fYiwgaW50MzJfdCBfX2MpIHsKICByZXR1cm4gX19idWlsdGluX2FybV9zbWxhdGIoX19hLCBfX2IsIF9fYyk7Cn0Kc3RhdGljIF9faW5saW5lX18gaW50MzJfdCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpfX3NtbGF0dChpbnQzMl90IF9fYSwgaW50MzJfdCBfX2IsIGludDMyX3QgX19jKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hcm1fc21sYXR0KF9fYSwgX19iLCBfX2MpOwp9CnN0YXRpYyBfX2lubGluZV9fIGludDMyX3QgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKX19zbWxhd2IoaW50MzJfdCBfX2EsIGludDMyX3QgX19iLCBpbnQzMl90IF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fYXJtX3NtbGF3YihfX2EsIF9fYiwgX19jKTsKfQpzdGF0aWMgX19pbmxpbmVfXyBpbnQzMl90IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCl9fc21sYXd0KGludDMyX3QgX19hLCBpbnQzMl90IF9fYiwgaW50MzJfdCBfX2MpIHsKICByZXR1cm4gX19idWlsdGluX2FybV9zbWxhd3QoX19hLCBfX2IsIF9fYyk7Cn0KI2VuZGlmCgoKLyogOS41LjQgUGFyYWxsZWwgMTYtYml0IHNhdHVyYXRpb24gKi8KI2lmIF9fQVJNX0ZFQVRVUkVfU0lNRDMyCiNkZWZpbmUgX19zc2F0MTYoeCwgeSkgX19idWlsdGluX2FybV9zc2F0MTYoeCwgeSkKI2RlZmluZSBfX3VzYXQxNih4LCB5KSBfX2J1aWx0aW5fYXJtX3VzYXQxNih4LCB5KQojZW5kaWYKCi8qIDkuNS41IFBhY2tpbmcgYW5kIHVucGFja2luZyAqLwojaWYgX19BUk1fRkVBVFVSRV9TSU1EMzIKdHlwZWRlZiBpbnQzMl90IGludDh4NF90Owp0eXBlZGVmIGludDMyX3QgaW50MTZ4Ml90Owp0eXBlZGVmIHVpbnQzMl90IHVpbnQ4eDRfdDsKdHlwZWRlZiB1aW50MzJfdCB1aW50MTZ4Ml90OwoKc3RhdGljIF9faW5saW5lX18gaW50MTZ4Ml90IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCl9fc3h0YWIxNihpbnQxNngyX3QgX19hLCBpbnQ4eDRfdCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FybV9zeHRhYjE2KF9fYSwgX19iKTsKfQpzdGF0aWMgX19pbmxpbmVfXyBpbnQxNngyX3QgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKX19zeHRiMTYoaW50OHg0X3QgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hcm1fc3h0YjE2KF9fYSk7Cn0Kc3RhdGljIF9faW5saW5lX18gaW50MTZ4Ml90IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCl9fdXh0YWIxNihpbnQxNngyX3QgX19hLCBpbnQ4eDRfdCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FybV91eHRhYjE2KF9fYSwgX19iKTsKfQpzdGF0aWMgX19pbmxpbmVfXyBpbnQxNngyX3QgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKX191eHRiMTYoaW50OHg0X3QgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hcm1fdXh0YjE2KF9fYSk7Cn0KI2VuZGlmCgovKiA5LjUuNiBQYXJhbGxlbCBzZWxlY3Rpb24gKi8KI2lmIF9fQVJNX0ZFQVRVUkVfU0lNRDMyCnN0YXRpYyBfX2lubGluZV9fIHVpbnQ4eDRfdCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpfX3NlbCh1aW50OHg0X3QgX19hLCB1aW50OHg0X3QgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hcm1fc2VsKF9fYSwgX19iKTsKfQojZW5kaWYKCi8qIDkuNS43IFBhcmFsbGVsIDgtYml0IGFkZGl0aW9uIGFuZCBzdWJ0cmFjdGlvbiAqLwojaWYgX19BUk1fRkVBVFVSRV9TSU1EMzIKc3RhdGljIF9faW5saW5lX18gaW50OHg0X3QgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKX19xYWRkOChpbnQ4eDRfdCBfX2EsIGludDh4NF90IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYXJtX3FhZGQ4KF9fYSwgX19iKTsKfQpzdGF0aWMgX19pbmxpbmVfXyBpbnQ4eDRfdCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpfX3FzdWI4KGludDh4NF90IF9fYSwgaW50OHg0X3QgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hcm1fcXN1YjgoX19hLCBfX2IpOwp9CnN0YXRpYyBfX2lubGluZV9fIGludDh4NF90IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCl9fc2FkZDgoaW50OHg0X3QgX19hLCBpbnQ4eDRfdCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FybV9zYWRkOChfX2EsIF9fYik7Cn0Kc3RhdGljIF9faW5saW5lX18gaW50OHg0X3QgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKX19zaGFkZDgoaW50OHg0X3QgX19hLCBpbnQ4eDRfdCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FybV9zaGFkZDgoX19hLCBfX2IpOwp9CnN0YXRpYyBfX2lubGluZV9fIGludDh4NF90IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCl9fc2hzdWI4KGludDh4NF90IF9fYSwgaW50OHg0X3QgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hcm1fc2hzdWI4KF9fYSwgX19iKTsKfQpzdGF0aWMgX19pbmxpbmVfXyBpbnQ4eDRfdCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpfX3NzdWI4KGludDh4NF90IF9fYSwgaW50OHg0X3QgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hcm1fc3N1YjgoX19hLCBfX2IpOwp9CnN0YXRpYyBfX2lubGluZV9fIHVpbnQ4eDRfdCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpfX3VhZGQ4KHVpbnQ4eDRfdCBfX2EsIHVpbnQ4eDRfdCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FybV91YWRkOChfX2EsIF9fYik7Cn0Kc3RhdGljIF9faW5saW5lX18gdWludDh4NF90IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCl9fdWhhZGQ4KHVpbnQ4eDRfdCBfX2EsIHVpbnQ4eDRfdCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FybV91aGFkZDgoX19hLCBfX2IpOwp9CnN0YXRpYyBfX2lubGluZV9fIHVpbnQ4eDRfdCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpfX3Voc3ViOCh1aW50OHg0X3QgX19hLCB1aW50OHg0X3QgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hcm1fdWhzdWI4KF9fYSwgX19iKTsKfQpzdGF0aWMgX19pbmxpbmVfXyB1aW50OHg0X3QgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKX191cWFkZDgodWludDh4NF90IF9fYSwgdWludDh4NF90IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYXJtX3VxYWRkOChfX2EsIF9fYik7Cn0Kc3RhdGljIF9faW5saW5lX18gdWludDh4NF90IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCl9fdXFzdWI4KHVpbnQ4eDRfdCBfX2EsIHVpbnQ4eDRfdCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FybV91cXN1YjgoX19hLCBfX2IpOwp9CnN0YXRpYyBfX2lubGluZV9fIHVpbnQ4eDRfdCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpfX3VzdWI4KHVpbnQ4eDRfdCBfX2EsIHVpbnQ4eDRfdCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FybV91c3ViOChfX2EsIF9fYik7Cn0KI2VuZGlmCgovKiA5LjUuOCBTdW0gb2YgOC1iaXQgYWJzb2x1dGUgZGlmZmVyZW5jZXMgKi8KI2lmIF9fQVJNX0ZFQVRVUkVfU0lNRDMyCnN0YXRpYyBfX2lubGluZV9fIHVpbnQzMl90IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCl9fdXNhZDgodWludDh4NF90IF9fYSwgdWludDh4NF90IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYXJtX3VzYWQ4KF9fYSwgX19iKTsKfQpzdGF0aWMgX19pbmxpbmVfXyB1aW50MzJfdCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpfX3VzYWRhOCh1aW50OHg0X3QgX19hLCB1aW50OHg0X3QgX19iLCB1aW50MzJfdCBfX2MpIHsKICByZXR1cm4gX19idWlsdGluX2FybV91c2FkYTgoX19hLCBfX2IsIF9fYyk7Cn0KI2VuZGlmCgovKiA5LjUuOSBQYXJhbGxlbCAxNi1iaXQgYWRkaXRpb24gYW5kIHN1YnRyYWN0aW9uICovCiNpZiBfX0FSTV9GRUFUVVJFX1NJTUQzMgpzdGF0aWMgX19pbmxpbmVfXyBpbnQxNngyX3QgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKX19xYWRkMTYoaW50MTZ4Ml90IF9fYSwgaW50MTZ4Ml90IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYXJtX3FhZGQxNihfX2EsIF9fYik7Cn0Kc3RhdGljIF9faW5saW5lX18gaW50MTZ4Ml90IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCl9fcWFzeChpbnQxNngyX3QgX19hLCBpbnQxNngyX3QgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hcm1fcWFzeChfX2EsIF9fYik7Cn0Kc3RhdGljIF9faW5saW5lX18gaW50MTZ4Ml90IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCl9fcXNheChpbnQxNngyX3QgX19hLCBpbnQxNngyX3QgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hcm1fcXNheChfX2EsIF9fYik7Cn0Kc3RhdGljIF9faW5saW5lX18gaW50MTZ4Ml90IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCl9fcXN1YjE2KGludDE2eDJfdCBfX2EsIGludDE2eDJfdCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FybV9xc3ViMTYoX19hLCBfX2IpOwp9CnN0YXRpYyBfX2lubGluZV9fIGludDE2eDJfdCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpfX3NhZGQxNihpbnQxNngyX3QgX19hLCBpbnQxNngyX3QgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hcm1fc2FkZDE2KF9fYSwgX19iKTsKfQpzdGF0aWMgX19pbmxpbmVfXyBpbnQxNngyX3QgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKX19zYXN4KGludDE2eDJfdCBfX2EsIGludDE2eDJfdCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FybV9zYXN4KF9fYSwgX19iKTsKfQpzdGF0aWMgX19pbmxpbmVfXyBpbnQxNngyX3QgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKX19zaGFkZDE2KGludDE2eDJfdCBfX2EsIGludDE2eDJfdCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FybV9zaGFkZDE2KF9fYSwgX19iKTsKfQpzdGF0aWMgX19pbmxpbmVfXyBpbnQxNngyX3QgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKX19zaGFzeChpbnQxNngyX3QgX19hLCBpbnQxNngyX3QgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hcm1fc2hhc3goX19hLCBfX2IpOwp9CnN0YXRpYyBfX2lubGluZV9fIGludDE2eDJfdCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpfX3Noc2F4KGludDE2eDJfdCBfX2EsIGludDE2eDJfdCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FybV9zaHNheChfX2EsIF9fYik7Cn0Kc3RhdGljIF9faW5saW5lX18gaW50MTZ4Ml90IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCl9fc2hzdWIxNihpbnQxNngyX3QgX19hLCBpbnQxNngyX3QgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hcm1fc2hzdWIxNihfX2EsIF9fYik7Cn0Kc3RhdGljIF9faW5saW5lX18gaW50MTZ4Ml90IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCl9fc3NheChpbnQxNngyX3QgX19hLCBpbnQxNngyX3QgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hcm1fc3NheChfX2EsIF9fYik7Cn0Kc3RhdGljIF9faW5saW5lX18gaW50MTZ4Ml90IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCl9fc3N1YjE2KGludDE2eDJfdCBfX2EsIGludDE2eDJfdCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FybV9zc3ViMTYoX19hLCBfX2IpOwp9CnN0YXRpYyBfX2lubGluZV9fIHVpbnQxNngyX3QgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKX191YWRkMTYodWludDE2eDJfdCBfX2EsIHVpbnQxNngyX3QgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hcm1fdWFkZDE2KF9fYSwgX19iKTsKfQpzdGF0aWMgX19pbmxpbmVfXyB1aW50MTZ4Ml90IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCl9fdWFzeCh1aW50MTZ4Ml90IF9fYSwgdWludDE2eDJfdCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FybV91YXN4KF9fYSwgX19iKTsKfQpzdGF0aWMgX19pbmxpbmVfXyB1aW50MTZ4Ml90IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCl9fdWhhZGQxNih1aW50MTZ4Ml90IF9fYSwgdWludDE2eDJfdCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FybV91aGFkZDE2KF9fYSwgX19iKTsKfQpzdGF0aWMgX19pbmxpbmVfXyB1aW50MTZ4Ml90IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCl9fdWhhc3godWludDE2eDJfdCBfX2EsIHVpbnQxNngyX3QgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hcm1fdWhhc3goX19hLCBfX2IpOwp9CnN0YXRpYyBfX2lubGluZV9fIHVpbnQxNngyX3QgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKX191aHNheCh1aW50MTZ4Ml90IF9fYSwgdWludDE2eDJfdCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FybV91aHNheChfX2EsIF9fYik7Cn0Kc3RhdGljIF9faW5saW5lX18gdWludDE2eDJfdCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpfX3Voc3ViMTYodWludDE2eDJfdCBfX2EsIHVpbnQxNngyX3QgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hcm1fdWhzdWIxNihfX2EsIF9fYik7Cn0Kc3RhdGljIF9faW5saW5lX18gdWludDE2eDJfdCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpfX3VxYWRkMTYodWludDE2eDJfdCBfX2EsIHVpbnQxNngyX3QgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hcm1fdXFhZGQxNihfX2EsIF9fYik7Cn0Kc3RhdGljIF9faW5saW5lX18gdWludDE2eDJfdCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpfX3VxYXN4KHVpbnQxNngyX3QgX19hLCB1aW50MTZ4Ml90IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYXJtX3VxYXN4KF9fYSwgX19iKTsKfQpzdGF0aWMgX19pbmxpbmVfXyB1aW50MTZ4Ml90IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCl9fdXFzYXgodWludDE2eDJfdCBfX2EsIHVpbnQxNngyX3QgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hcm1fdXFzYXgoX19hLCBfX2IpOwp9CnN0YXRpYyBfX2lubGluZV9fIHVpbnQxNngyX3QgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKX191cXN1YjE2KHVpbnQxNngyX3QgX19hLCB1aW50MTZ4Ml90IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYXJtX3Vxc3ViMTYoX19hLCBfX2IpOwp9CnN0YXRpYyBfX2lubGluZV9fIHVpbnQxNngyX3QgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKX191c2F4KHVpbnQxNngyX3QgX19hLCB1aW50MTZ4Ml90IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYXJtX3VzYXgoX19hLCBfX2IpOwp9CnN0YXRpYyBfX2lubGluZV9fIHVpbnQxNngyX3QgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKX191c3ViMTYodWludDE2eDJfdCBfX2EsIHVpbnQxNngyX3QgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hcm1fdXN1YjE2KF9fYSwgX19iKTsKfQojZW5kaWYKCi8qIDkuNS4xMCBQYXJhbGxlbCAxNi1iaXQgbXVsdGlwbGljYXRpb25zICovCiNpZiBfX0FSTV9GRUFUVVJFX1NJTUQzMgpzdGF0aWMgX19pbmxpbmVfXyBpbnQzMl90IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCl9fc21sYWQoaW50MTZ4Ml90IF9fYSwgaW50MTZ4Ml90IF9fYiwgaW50MzJfdCBfX2MpIHsKICByZXR1cm4gX19idWlsdGluX2FybV9zbWxhZChfX2EsIF9fYiwgX19jKTsKfQpzdGF0aWMgX19pbmxpbmVfXyBpbnQzMl90IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCl9fc21sYWR4KGludDE2eDJfdCBfX2EsIGludDE2eDJfdCBfX2IsIGludDMyX3QgX19jKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hcm1fc21sYWR4KF9fYSwgX19iLCBfX2MpOwp9CnN0YXRpYyBfX2lubGluZV9fIGludDY0X3QgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKX19zbWxhbGQoaW50MTZ4Ml90IF9fYSwgaW50MTZ4Ml90IF9fYiwgaW50NjRfdCBfX2MpIHsKICByZXR1cm4gX19idWlsdGluX2FybV9zbWxhbGQoX19hLCBfX2IsIF9fYyk7Cn0Kc3RhdGljIF9faW5saW5lX18gaW50NjRfdCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpfX3NtbGFsZHgoaW50MTZ4Ml90IF9fYSwgaW50MTZ4Ml90IF9fYiwgaW50NjRfdCBfX2MpIHsKICByZXR1cm4gX19idWlsdGluX2FybV9zbWxhbGR4KF9fYSwgX19iLCBfX2MpOwp9CnN0YXRpYyBfX2lubGluZV9fIGludDMyX3QgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKX19zbWxzZChpbnQxNngyX3QgX19hLCBpbnQxNngyX3QgX19iLCBpbnQzMl90IF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fYXJtX3NtbHNkKF9fYSwgX19iLCBfX2MpOwp9CnN0YXRpYyBfX2lubGluZV9fIGludDMyX3QgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKX19zbWxzZHgoaW50MTZ4Ml90IF9fYSwgaW50MTZ4Ml90IF9fYiwgaW50MzJfdCBfX2MpIHsKICByZXR1cm4gX19idWlsdGluX2FybV9zbWxzZHgoX19hLCBfX2IsIF9fYyk7Cn0Kc3RhdGljIF9faW5saW5lX18gaW50NjRfdCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpfX3NtbHNsZChpbnQxNngyX3QgX19hLCBpbnQxNngyX3QgX19iLCBpbnQ2NF90IF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fYXJtX3NtbHNsZChfX2EsIF9fYiwgX19jKTsKfQpzdGF0aWMgX19pbmxpbmVfXyBpbnQ2NF90IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCl9fc21sc2xkeChpbnQxNngyX3QgX19hLCBpbnQxNngyX3QgX19iLCBpbnQ2NF90IF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fYXJtX3NtbHNsZHgoX19hLCBfX2IsIF9fYyk7Cn0Kc3RhdGljIF9faW5saW5lX18gaW50MzJfdCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpfX3NtdWFkKGludDE2eDJfdCBfX2EsIGludDE2eDJfdCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FybV9zbXVhZChfX2EsIF9fYik7Cn0Kc3RhdGljIF9faW5saW5lX18gaW50MzJfdCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpfX3NtdWFkeChpbnQxNngyX3QgX19hLCBpbnQxNngyX3QgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hcm1fc211YWR4KF9fYSwgX19iKTsKfQpzdGF0aWMgX19pbmxpbmVfXyBpbnQzMl90IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCl9fc211c2QoaW50MTZ4Ml90IF9fYSwgaW50MTZ4Ml90IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYXJtX3NtdXNkKF9fYSwgX19iKTsKfQpzdGF0aWMgX19pbmxpbmVfXyBpbnQzMl90IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCl9fc211c2R4KGludDE2eDJfdCBfX2EsIGludDE2eDJfdCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FybV9zbXVzZHgoX19hLCBfX2IpOwp9CiNlbmRpZgoKLyogOS43IENSQzMyIGludHJpbnNpY3MgKi8KI2lmIF9fQVJNX0ZFQVRVUkVfQ1JDMzIKc3RhdGljIF9faW5saW5lX18gdWludDMyX3QgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKX19jcmMzMmIodWludDMyX3QgX19hLCB1aW50OF90IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYXJtX2NyYzMyYihfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVpbnQzMl90IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCl9fY3JjMzJoKHVpbnQzMl90IF9fYSwgdWludDE2X3QgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hcm1fY3JjMzJoKF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdWludDMyX3QgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKX19jcmMzMncodWludDMyX3QgX19hLCB1aW50MzJfdCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FybV9jcmMzMncoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB1aW50MzJfdCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpfX2NyYzMyZCh1aW50MzJfdCBfX2EsIHVpbnQ2NF90IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYXJtX2NyYzMyZChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVpbnQzMl90IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCl9fY3JjMzJjYih1aW50MzJfdCBfX2EsIHVpbnQ4X3QgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hcm1fY3JjMzJjYihfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVpbnQzMl90IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCl9fY3JjMzJjaCh1aW50MzJfdCBfX2EsIHVpbnQxNl90IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYXJtX2NyYzMyY2goX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB1aW50MzJfdCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpfX2NyYzMyY3codWludDMyX3QgX19hLCB1aW50MzJfdCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FybV9jcmMzMmN3KF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdWludDMyX3QgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKX19jcmMzMmNkKHVpbnQzMl90IF9fYSwgdWludDY0X3QgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hcm1fY3JjMzJjZChfX2EsIF9fYik7Cn0KI2VuZGlmCgovKiBBcm12OC4zLUEgSmF2YXNjcmlwdCBjb252ZXJzaW9uIGludHJpbnNpYyAqLwojaWYgX19BUk1fNjRCSVRfU1RBVEUgJiYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX0pDVlQpCnN0YXRpYyBfX2lubGluZV9fIGludDMyX3QgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKX19qY3Z0KGRvdWJsZSBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX2FybV9qY3Z0KF9fYSk7Cn0KI2VuZGlmCgovKiBBcm12OC41LUEgRlAgcm91bmRpbmcgaW50cmluc2ljcyAqLwojaWYgX19BUk1fNjRCSVRfU1RBVEUgJiYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX0ZSSU5UKQpzdGF0aWMgX19pbmxpbmVfXyBmbG9hdCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpfX2ZyaW50MzJ6ZihmbG9hdCBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX2FybV9mcmludDMyemYoX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gZG91YmxlIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCl9fZnJpbnQzMnooZG91YmxlIF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fYXJtX2ZyaW50MzJ6KF9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGZsb2F0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCl9fZnJpbnQ2NHpmKGZsb2F0IF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fYXJtX2ZyaW50NjR6ZihfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBkb3VibGUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKX19mcmludDY0eihkb3VibGUgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hcm1fZnJpbnQ2NHooX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gZmxvYXQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKX19mcmludDMyeGYoZmxvYXQgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hcm1fZnJpbnQzMnhmKF9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGRvdWJsZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpfX2ZyaW50MzJ4KGRvdWJsZSBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX2FybV9mcmludDMyeChfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBmbG9hdCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpfX2ZyaW50NjR4ZihmbG9hdCBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX2FybV9mcmludDY0eGYoX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gZG91YmxlIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCl9fZnJpbnQ2NHgoZG91YmxlIF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fYXJtX2ZyaW50NjR4KF9fYSk7Cn0KI2VuZGlmCgovKiBBcm12OC43LUEgbG9hZC9zdG9yZSA2NC1ieXRlIGludHJpbnNpY3MgKi8KI2lmIF9fQVJNXzY0QklUX1NUQVRFICYmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9MUzY0KQp0eXBlZGVmIHN0cnVjdCB7CiAgICB1aW50NjRfdCB2YWxbOF07Cn0gZGF0YTUxMl90OwoKc3RhdGljIF9faW5saW5lX18gZGF0YTUxMl90IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCl9fYXJtX2xkNjRiKGNvbnN0IHZvaWQgKl9fYWRkcikgewogICAgZGF0YTUxMl90IF9fdmFsdWU7CiAgICBfX2J1aWx0aW5fYXJtX2xkNjRiKF9fYWRkciwgX192YWx1ZS52YWwpOwogICAgcmV0dXJuIF9fdmFsdWU7Cn0Kc3RhdGljIF9faW5saW5lX18gdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpfX2FybV9zdDY0Yih2b2lkICpfX2FkZHIsIGRhdGE1MTJfdCBfX3ZhbHVlKSB7CiAgICBfX2J1aWx0aW5fYXJtX3N0NjRiKF9fYWRkciwgX192YWx1ZS52YWwpOwp9CnN0YXRpYyBfX2lubGluZV9fIHVpbnQ2NF90IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCl9fYXJtX3N0NjRidih2b2lkICpfX2FkZHIsIGRhdGE1MTJfdCBfX3ZhbHVlKSB7CiAgICByZXR1cm4gX19idWlsdGluX2FybV9zdDY0YnYoX19hZGRyLCBfX3ZhbHVlLnZhbCk7Cn0Kc3RhdGljIF9faW5saW5lX18gdWludDY0X3QgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKX19hcm1fc3Q2NGJ2MCh2b2lkICpfX2FkZHIsIGRhdGE1MTJfdCBfX3ZhbHVlKSB7CiAgICByZXR1cm4gX19idWlsdGluX2FybV9zdDY0YnYwKF9fYWRkciwgX192YWx1ZS52YWwpOwp9CiNlbmRpZgoKLyogMTAuMSBTcGVjaWFsIHJlZ2lzdGVyIGludHJpbnNpY3MgKi8KI2RlZmluZSBfX2FybV9yc3Ioc3lzcmVnKSBfX2J1aWx0aW5fYXJtX3JzcihzeXNyZWcpCiNkZWZpbmUgX19hcm1fcnNyNjQoc3lzcmVnKSBfX2J1aWx0aW5fYXJtX3JzcjY0KHN5c3JlZykKI2RlZmluZSBfX2FybV9yc3JwKHN5c3JlZykgX19idWlsdGluX2FybV9yc3JwKHN5c3JlZykKI2RlZmluZSBfX2FybV9yc3JmKHN5c3JlZykgX19idWlsdGluX2JpdF9jYXN0KGZsb2F0LCBfX2FybV9yc3Ioc3lzcmVnKSkKI2RlZmluZSBfX2FybV9yc3JmNjQoc3lzcmVnKSBfX2J1aWx0aW5fYml0X2Nhc3QoZG91YmxlLCBfX2FybV9yc3I2NChzeXNyZWcpKQojZGVmaW5lIF9fYXJtX3dzcihzeXNyZWcsIHYpIF9fYnVpbHRpbl9hcm1fd3NyKHN5c3JlZywgdikKI2RlZmluZSBfX2FybV93c3I2NChzeXNyZWcsIHYpIF9fYnVpbHRpbl9hcm1fd3NyNjQoc3lzcmVnLCB2KQojZGVmaW5lIF9fYXJtX3dzcnAoc3lzcmVnLCB2KSBfX2J1aWx0aW5fYXJtX3dzcnAoc3lzcmVnLCB2KQojZGVmaW5lIF9fYXJtX3dzcmYoc3lzcmVnLCB2KSBfX2FybV93c3Ioc3lzcmVnLCBfX2J1aWx0aW5fYml0X2Nhc3QodWludDMyX3QsIHYpKQojZGVmaW5lIF9fYXJtX3dzcmY2NChzeXNyZWcsIHYpIF9fYXJtX3dzcjY0KHN5c3JlZywgX19idWlsdGluX2JpdF9jYXN0KHVpbnQ2NF90LCB2KSkKCi8qIE1lbW9yeSBUYWdnaW5nIEV4dGVuc2lvbnMgKE1URSkgSW50cmluc2ljcyAqLwojaWYgX19BUk1fRkVBVFVSRV9NRU1PUllfVEFHR0lORwojZGVmaW5lIF9fYXJtX210ZV9jcmVhdGVfcmFuZG9tX3RhZyhfX3B0ciwgX19tYXNrKSAgX19idWlsdGluX2FybV9pcmcoX19wdHIsIF9fbWFzaykKI2RlZmluZSBfX2FybV9tdGVfaW5jcmVtZW50X3RhZyhfX3B0ciwgX190YWdfb2Zmc2V0KSAgX19idWlsdGluX2FybV9hZGRnKF9fcHRyLCBfX3RhZ19vZmZzZXQpCiNkZWZpbmUgX19hcm1fbXRlX2V4Y2x1ZGVfdGFnKF9fcHRyLCBfX2V4Y2x1ZGVkKSAgX19idWlsdGluX2FybV9nbWkoX19wdHIsIF9fZXhjbHVkZWQpCiNkZWZpbmUgX19hcm1fbXRlX2dldF90YWcoX19wdHIpIF9fYnVpbHRpbl9hcm1fbGRnKF9fcHRyKQojZGVmaW5lIF9fYXJtX210ZV9zZXRfdGFnKF9fcHRyKSBfX2J1aWx0aW5fYXJtX3N0ZyhfX3B0cikKI2RlZmluZSBfX2FybV9tdGVfcHRyZGlmZihfX3B0cmEsIF9fcHRyYikgX19idWlsdGluX2FybV9zdWJwKF9fcHRyYSwgX19wdHJiKQojZW5kaWYKCi8qIFRyYW5zYWN0aW9uYWwgTWVtb3J5IEV4dGVuc2lvbiAoVE1FKSBJbnRyaW5zaWNzICovCiNpZiBfX0FSTV9GRUFUVVJFX1RNRQoKI2RlZmluZSBfVE1GQUlMVVJFX1JFQVNPTiAgMHgwMDAwN2ZmZnUKI2RlZmluZSBfVE1GQUlMVVJFX1JUUlkgICAgMHgwMDAwODAwMHUKI2RlZmluZSBfVE1GQUlMVVJFX0NOQ0wgICAgMHgwMDAxMDAwMHUKI2RlZmluZSBfVE1GQUlMVVJFX01FTSAgICAgMHgwMDAyMDAwMHUKI2RlZmluZSBfVE1GQUlMVVJFX0lNUCAgICAgMHgwMDA0MDAwMHUKI2RlZmluZSBfVE1GQUlMVVJFX0VSUiAgICAgMHgwMDA4MDAwMHUKI2RlZmluZSBfVE1GQUlMVVJFX1NJWkUgICAgMHgwMDEwMDAwMHUKI2RlZmluZSBfVE1GQUlMVVJFX05FU1QgICAgMHgwMDIwMDAwMHUKI2RlZmluZSBfVE1GQUlMVVJFX0RCRyAgICAgMHgwMDQwMDAwMHUKI2RlZmluZSBfVE1GQUlMVVJFX0lOVCAgICAgMHgwMDgwMDAwMHUKI2RlZmluZSBfVE1GQUlMVVJFX1RSSVZJQUwgMHgwMTAwMDAwMHUKCiNkZWZpbmUgX190c3RhcnQoKSAgICAgICAgX19idWlsdGluX2FybV90c3RhcnQoKQojZGVmaW5lIF9fdGNvbW1pdCgpICAgICAgIF9fYnVpbHRpbl9hcm1fdGNvbW1pdCgpCiNkZWZpbmUgX190Y2FuY2VsKF9fYXJnKSAgX19idWlsdGluX2FybV90Y2FuY2VsKF9fYXJnKQojZGVmaW5lIF9fdHRlc3QoKSAgICAgICAgIF9fYnVpbHRpbl9hcm1fdHRlc3QoKQoKI2VuZGlmIC8qIF9fQVJNX0ZFQVRVUkVfVE1FICovCgovKiBBcm12OC41LUEgUmFuZG9tIG51bWJlciBnZW5lcmF0aW9uIGludHJpbnNpY3MgKi8KI2lmIF9fQVJNXzY0QklUX1NUQVRFICYmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9STkcpCnN0YXRpYyBfX2lubGluZV9fIGludCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpfX3JuZHIodWludDY0X3QgKl9fcCkgewogIHJldHVybiBfX2J1aWx0aW5fYXJtX3JuZHIoX19wKTsKfQpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKX19ybmRycnModWludDY0X3QgKl9fcCkgewogIHJldHVybiBfX2J1aWx0aW5fYXJtX3JuZHJycyhfX3ApOwp9CiNlbmRpZgoKI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpCn0KI2VuZGlmCgojZW5kaWYgLyogX19BUk1fQUNMRV9IICovCgBhdng1MTJkcWludHJpbi5oAC8qPT09LS0tLSBhdng1MTJ2bGludHJpbi5oIC0gQVZYNTEyVkwgaW50cmluc2ljcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKi8KCiNpZm5kZWYgX19JTU1JTlRSSU5fSAojZXJyb3IgIk5ldmVyIHVzZSA8YXZ4NTEydmxpbnRyaW4uaD4gZGlyZWN0bHk7IGluY2x1ZGUgPGltbWludHJpbi5oPiBpbnN0ZWFkLiIKI2VuZGlmCgojaWZuZGVmIF9fQVZYNTEyVkxJTlRSSU5fSAojZGVmaW5lIF9fQVZYNTEyVkxJTlRSSU5fSAoKI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJhdng1MTJ2bCIpLCBfX21pbl92ZWN0b3Jfd2lkdGhfXygxMjgpKSkKI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJhdng1MTJ2bCIpLCBfX21pbl92ZWN0b3Jfd2lkdGhfXygyNTYpKSkKCnR5cGVkZWYgc2hvcnQgX192MmhpIF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXyg0KSkpOwp0eXBlZGVmIGNoYXIgX192NHFpIF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXyg0KSkpOwp0eXBlZGVmIGNoYXIgX192MnFpIF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXygyKSkpOwoKLyogSW50ZWdlciBjb21wYXJlICovCgojZGVmaW5lIF9tbV9jbXBlcV9lcGkzMl9tYXNrKEEsIEIpIFwKICAgIF9tbV9jbXBfZXBpMzJfbWFzaygoQSksIChCKSwgX01NX0NNUElOVF9FUSkKI2RlZmluZSBfbW1fbWFza19jbXBlcV9lcGkzMl9tYXNrKGssIEEsIEIpIFwKICAgIF9tbV9tYXNrX2NtcF9lcGkzMl9tYXNrKChrKSwgKEEpLCAoQiksIF9NTV9DTVBJTlRfRVEpCiNkZWZpbmUgX21tX2NtcGdlX2VwaTMyX21hc2soQSwgQikgXAogICAgX21tX2NtcF9lcGkzMl9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX0dFKQojZGVmaW5lIF9tbV9tYXNrX2NtcGdlX2VwaTMyX21hc2soaywgQSwgQikgXAogICAgX21tX21hc2tfY21wX2VwaTMyX21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9HRSkKI2RlZmluZSBfbW1fY21wZ3RfZXBpMzJfbWFzayhBLCBCKSBcCiAgICBfbW1fY21wX2VwaTMyX21hc2soKEEpLCAoQiksIF9NTV9DTVBJTlRfR1QpCiNkZWZpbmUgX21tX21hc2tfY21wZ3RfZXBpMzJfbWFzayhrLCBBLCBCKSBcCiAgICBfbW1fbWFza19jbXBfZXBpMzJfbWFzaygoayksIChBKSwgKEIpLCBfTU1fQ01QSU5UX0dUKQojZGVmaW5lIF9tbV9jbXBsZV9lcGkzMl9tYXNrKEEsIEIpIFwKICAgIF9tbV9jbXBfZXBpMzJfbWFzaygoQSksIChCKSwgX01NX0NNUElOVF9MRSkKI2RlZmluZSBfbW1fbWFza19jbXBsZV9lcGkzMl9tYXNrKGssIEEsIEIpIFwKICAgIF9tbV9tYXNrX2NtcF9lcGkzMl9tYXNrKChrKSwgKEEpLCAoQiksIF9NTV9DTVBJTlRfTEUpCiNkZWZpbmUgX21tX2NtcGx0X2VwaTMyX21hc2soQSwgQikgXAogICAgX21tX2NtcF9lcGkzMl9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX0xUKQojZGVmaW5lIF9tbV9tYXNrX2NtcGx0X2VwaTMyX21hc2soaywgQSwgQikgXAogICAgX21tX21hc2tfY21wX2VwaTMyX21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9MVCkKI2RlZmluZSBfbW1fY21wbmVxX2VwaTMyX21hc2soQSwgQikgXAogICAgX21tX2NtcF9lcGkzMl9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX05FKQojZGVmaW5lIF9tbV9tYXNrX2NtcG5lcV9lcGkzMl9tYXNrKGssIEEsIEIpIFwKICAgIF9tbV9tYXNrX2NtcF9lcGkzMl9tYXNrKChrKSwgKEEpLCAoQiksIF9NTV9DTVBJTlRfTkUpCgojZGVmaW5lIF9tbTI1Nl9jbXBlcV9lcGkzMl9tYXNrKEEsIEIpIFwKICAgIF9tbTI1Nl9jbXBfZXBpMzJfbWFzaygoQSksIChCKSwgX01NX0NNUElOVF9FUSkKI2RlZmluZSBfbW0yNTZfbWFza19jbXBlcV9lcGkzMl9tYXNrKGssIEEsIEIpIFwKICAgIF9tbTI1Nl9tYXNrX2NtcF9lcGkzMl9tYXNrKChrKSwgKEEpLCAoQiksIF9NTV9DTVBJTlRfRVEpCiNkZWZpbmUgX21tMjU2X2NtcGdlX2VwaTMyX21hc2soQSwgQikgXAogICAgX21tMjU2X2NtcF9lcGkzMl9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX0dFKQojZGVmaW5lIF9tbTI1Nl9tYXNrX2NtcGdlX2VwaTMyX21hc2soaywgQSwgQikgXAogICAgX21tMjU2X21hc2tfY21wX2VwaTMyX21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9HRSkKI2RlZmluZSBfbW0yNTZfY21wZ3RfZXBpMzJfbWFzayhBLCBCKSBcCiAgICBfbW0yNTZfY21wX2VwaTMyX21hc2soKEEpLCAoQiksIF9NTV9DTVBJTlRfR1QpCiNkZWZpbmUgX21tMjU2X21hc2tfY21wZ3RfZXBpMzJfbWFzayhrLCBBLCBCKSBcCiAgICBfbW0yNTZfbWFza19jbXBfZXBpMzJfbWFzaygoayksIChBKSwgKEIpLCBfTU1fQ01QSU5UX0dUKQojZGVmaW5lIF9tbTI1Nl9jbXBsZV9lcGkzMl9tYXNrKEEsIEIpIFwKICAgIF9tbTI1Nl9jbXBfZXBpMzJfbWFzaygoQSksIChCKSwgX01NX0NNUElOVF9MRSkKI2RlZmluZSBfbW0yNTZfbWFza19jbXBsZV9lcGkzMl9tYXNrKGssIEEsIEIpIFwKICAgIF9tbTI1Nl9tYXNrX2NtcF9lcGkzMl9tYXNrKChrKSwgKEEpLCAoQiksIF9NTV9DTVBJTlRfTEUpCiNkZWZpbmUgX21tMjU2X2NtcGx0X2VwaTMyX21hc2soQSwgQikgXAogICAgX21tMjU2X2NtcF9lcGkzMl9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX0xUKQojZGVmaW5lIF9tbTI1Nl9tYXNrX2NtcGx0X2VwaTMyX21hc2soaywgQSwgQikgXAogICAgX21tMjU2X21hc2tfY21wX2VwaTMyX21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9MVCkKI2RlZmluZSBfbW0yNTZfY21wbmVxX2VwaTMyX21hc2soQSwgQikgXAogICAgX21tMjU2X2NtcF9lcGkzMl9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX05FKQojZGVmaW5lIF9tbTI1Nl9tYXNrX2NtcG5lcV9lcGkzMl9tYXNrKGssIEEsIEIpIFwKICAgIF9tbTI1Nl9tYXNrX2NtcF9lcGkzMl9tYXNrKChrKSwgKEEpLCAoQiksIF9NTV9DTVBJTlRfTkUpCgojZGVmaW5lIF9tbV9jbXBlcV9lcHUzMl9tYXNrKEEsIEIpIFwKICAgIF9tbV9jbXBfZXB1MzJfbWFzaygoQSksIChCKSwgX01NX0NNUElOVF9FUSkKI2RlZmluZSBfbW1fbWFza19jbXBlcV9lcHUzMl9tYXNrKGssIEEsIEIpIFwKICAgIF9tbV9tYXNrX2NtcF9lcHUzMl9tYXNrKChrKSwgKEEpLCAoQiksIF9NTV9DTVBJTlRfRVEpCiNkZWZpbmUgX21tX2NtcGdlX2VwdTMyX21hc2soQSwgQikgXAogICAgX21tX2NtcF9lcHUzMl9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX0dFKQojZGVmaW5lIF9tbV9tYXNrX2NtcGdlX2VwdTMyX21hc2soaywgQSwgQikgXAogICAgX21tX21hc2tfY21wX2VwdTMyX21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9HRSkKI2RlZmluZSBfbW1fY21wZ3RfZXB1MzJfbWFzayhBLCBCKSBcCiAgICBfbW1fY21wX2VwdTMyX21hc2soKEEpLCAoQiksIF9NTV9DTVBJTlRfR1QpCiNkZWZpbmUgX21tX21hc2tfY21wZ3RfZXB1MzJfbWFzayhrLCBBLCBCKSBcCiAgICBfbW1fbWFza19jbXBfZXB1MzJfbWFzaygoayksIChBKSwgKEIpLCBfTU1fQ01QSU5UX0dUKQojZGVmaW5lIF9tbV9jbXBsZV9lcHUzMl9tYXNrKEEsIEIpIFwKICAgIF9tbV9jbXBfZXB1MzJfbWFzaygoQSksIChCKSwgX01NX0NNUElOVF9MRSkKI2RlZmluZSBfbW1fbWFza19jbXBsZV9lcHUzMl9tYXNrKGssIEEsIEIpIFwKICAgIF9tbV9tYXNrX2NtcF9lcHUzMl9tYXNrKChrKSwgKEEpLCAoQiksIF9NTV9DTVBJTlRfTEUpCiNkZWZpbmUgX21tX2NtcGx0X2VwdTMyX21hc2soQSwgQikgXAogICAgX21tX2NtcF9lcHUzMl9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX0xUKQojZGVmaW5lIF9tbV9tYXNrX2NtcGx0X2VwdTMyX21hc2soaywgQSwgQikgXAogICAgX21tX21hc2tfY21wX2VwdTMyX21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9MVCkKI2RlZmluZSBfbW1fY21wbmVxX2VwdTMyX21hc2soQSwgQikgXAogICAgX21tX2NtcF9lcHUzMl9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX05FKQojZGVmaW5lIF9tbV9tYXNrX2NtcG5lcV9lcHUzMl9tYXNrKGssIEEsIEIpIFwKICAgIF9tbV9tYXNrX2NtcF9lcHUzMl9tYXNrKChrKSwgKEEpLCAoQiksIF9NTV9DTVBJTlRfTkUpCgojZGVmaW5lIF9tbTI1Nl9jbXBlcV9lcHUzMl9tYXNrKEEsIEIpIFwKICAgIF9tbTI1Nl9jbXBfZXB1MzJfbWFzaygoQSksIChCKSwgX01NX0NNUElOVF9FUSkKI2RlZmluZSBfbW0yNTZfbWFza19jbXBlcV9lcHUzMl9tYXNrKGssIEEsIEIpIFwKICAgIF9tbTI1Nl9tYXNrX2NtcF9lcHUzMl9tYXNrKChrKSwgKEEpLCAoQiksIF9NTV9DTVBJTlRfRVEpCiNkZWZpbmUgX21tMjU2X2NtcGdlX2VwdTMyX21hc2soQSwgQikgXAogICAgX21tMjU2X2NtcF9lcHUzMl9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX0dFKQojZGVmaW5lIF9tbTI1Nl9tYXNrX2NtcGdlX2VwdTMyX21hc2soaywgQSwgQikgXAogICAgX21tMjU2X21hc2tfY21wX2VwdTMyX21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9HRSkKI2RlZmluZSBfbW0yNTZfY21wZ3RfZXB1MzJfbWFzayhBLCBCKSBcCiAgICBfbW0yNTZfY21wX2VwdTMyX21hc2soKEEpLCAoQiksIF9NTV9DTVBJTlRfR1QpCiNkZWZpbmUgX21tMjU2X21hc2tfY21wZ3RfZXB1MzJfbWFzayhrLCBBLCBCKSBcCiAgICBfbW0yNTZfbWFza19jbXBfZXB1MzJfbWFzaygoayksIChBKSwgKEIpLCBfTU1fQ01QSU5UX0dUKQojZGVmaW5lIF9tbTI1Nl9jbXBsZV9lcHUzMl9tYXNrKEEsIEIpIFwKICAgIF9tbTI1Nl9jbXBfZXB1MzJfbWFzaygoQSksIChCKSwgX01NX0NNUElOVF9MRSkKI2RlZmluZSBfbW0yNTZfbWFza19jbXBsZV9lcHUzMl9tYXNrKGssIEEsIEIpIFwKICAgIF9tbTI1Nl9tYXNrX2NtcF9lcHUzMl9tYXNrKChrKSwgKEEpLCAoQiksIF9NTV9DTVBJTlRfTEUpCiNkZWZpbmUgX21tMjU2X2NtcGx0X2VwdTMyX21hc2soQSwgQikgXAogICAgX21tMjU2X2NtcF9lcHUzMl9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX0xUKQojZGVmaW5lIF9tbTI1Nl9tYXNrX2NtcGx0X2VwdTMyX21hc2soaywgQSwgQikgXAogICAgX21tMjU2X21hc2tfY21wX2VwdTMyX21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9MVCkKI2RlZmluZSBfbW0yNTZfY21wbmVxX2VwdTMyX21hc2soQSwgQikgXAogICAgX21tMjU2X2NtcF9lcHUzMl9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX05FKQojZGVmaW5lIF9tbTI1Nl9tYXNrX2NtcG5lcV9lcHUzMl9tYXNrKGssIEEsIEIpIFwKICAgIF9tbTI1Nl9tYXNrX2NtcF9lcHUzMl9tYXNrKChrKSwgKEEpLCAoQiksIF9NTV9DTVBJTlRfTkUpCgojZGVmaW5lIF9tbV9jbXBlcV9lcGk2NF9tYXNrKEEsIEIpIFwKICAgIF9tbV9jbXBfZXBpNjRfbWFzaygoQSksIChCKSwgX01NX0NNUElOVF9FUSkKI2RlZmluZSBfbW1fbWFza19jbXBlcV9lcGk2NF9tYXNrKGssIEEsIEIpIFwKICAgIF9tbV9tYXNrX2NtcF9lcGk2NF9tYXNrKChrKSwgKEEpLCAoQiksIF9NTV9DTVBJTlRfRVEpCiNkZWZpbmUgX21tX2NtcGdlX2VwaTY0X21hc2soQSwgQikgXAogICAgX21tX2NtcF9lcGk2NF9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX0dFKQojZGVmaW5lIF9tbV9tYXNrX2NtcGdlX2VwaTY0X21hc2soaywgQSwgQikgXAogICAgX21tX21hc2tfY21wX2VwaTY0X21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9HRSkKI2RlZmluZSBfbW1fY21wZ3RfZXBpNjRfbWFzayhBLCBCKSBcCiAgICBfbW1fY21wX2VwaTY0X21hc2soKEEpLCAoQiksIF9NTV9DTVBJTlRfR1QpCiNkZWZpbmUgX21tX21hc2tfY21wZ3RfZXBpNjRfbWFzayhrLCBBLCBCKSBcCiAgICBfbW1fbWFza19jbXBfZXBpNjRfbWFzaygoayksIChBKSwgKEIpLCBfTU1fQ01QSU5UX0dUKQojZGVmaW5lIF9tbV9jbXBsZV9lcGk2NF9tYXNrKEEsIEIpIFwKICAgIF9tbV9jbXBfZXBpNjRfbWFzaygoQSksIChCKSwgX01NX0NNUElOVF9MRSkKI2RlZmluZSBfbW1fbWFza19jbXBsZV9lcGk2NF9tYXNrKGssIEEsIEIpIFwKICAgIF9tbV9tYXNrX2NtcF9lcGk2NF9tYXNrKChrKSwgKEEpLCAoQiksIF9NTV9DTVBJTlRfTEUpCiNkZWZpbmUgX21tX2NtcGx0X2VwaTY0X21hc2soQSwgQikgXAogICAgX21tX2NtcF9lcGk2NF9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX0xUKQojZGVmaW5lIF9tbV9tYXNrX2NtcGx0X2VwaTY0X21hc2soaywgQSwgQikgXAogICAgX21tX21hc2tfY21wX2VwaTY0X21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9MVCkKI2RlZmluZSBfbW1fY21wbmVxX2VwaTY0X21hc2soQSwgQikgXAogICAgX21tX2NtcF9lcGk2NF9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX05FKQojZGVmaW5lIF9tbV9tYXNrX2NtcG5lcV9lcGk2NF9tYXNrKGssIEEsIEIpIFwKICAgIF9tbV9tYXNrX2NtcF9lcGk2NF9tYXNrKChrKSwgKEEpLCAoQiksIF9NTV9DTVBJTlRfTkUpCgojZGVmaW5lIF9tbTI1Nl9jbXBlcV9lcGk2NF9tYXNrKEEsIEIpIFwKICAgIF9tbTI1Nl9jbXBfZXBpNjRfbWFzaygoQSksIChCKSwgX01NX0NNUElOVF9FUSkKI2RlZmluZSBfbW0yNTZfbWFza19jbXBlcV9lcGk2NF9tYXNrKGssIEEsIEIpIFwKICAgIF9tbTI1Nl9tYXNrX2NtcF9lcGk2NF9tYXNrKChrKSwgKEEpLCAoQiksIF9NTV9DTVBJTlRfRVEpCiNkZWZpbmUgX21tMjU2X2NtcGdlX2VwaTY0X21hc2soQSwgQikgXAogICAgX21tMjU2X2NtcF9lcGk2NF9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX0dFKQojZGVmaW5lIF9tbTI1Nl9tYXNrX2NtcGdlX2VwaTY0X21hc2soaywgQSwgQikgXAogICAgX21tMjU2X21hc2tfY21wX2VwaTY0X21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9HRSkKI2RlZmluZSBfbW0yNTZfY21wZ3RfZXBpNjRfbWFzayhBLCBCKSBcCiAgICBfbW0yNTZfY21wX2VwaTY0X21hc2soKEEpLCAoQiksIF9NTV9DTVBJTlRfR1QpCiNkZWZpbmUgX21tMjU2X21hc2tfY21wZ3RfZXBpNjRfbWFzayhrLCBBLCBCKSBcCiAgICBfbW0yNTZfbWFza19jbXBfZXBpNjRfbWFzaygoayksIChBKSwgKEIpLCBfTU1fQ01QSU5UX0dUKQojZGVmaW5lIF9tbTI1Nl9jbXBsZV9lcGk2NF9tYXNrKEEsIEIpIFwKICAgIF9tbTI1Nl9jbXBfZXBpNjRfbWFzaygoQSksIChCKSwgX01NX0NNUElOVF9MRSkKI2RlZmluZSBfbW0yNTZfbWFza19jbXBsZV9lcGk2NF9tYXNrKGssIEEsIEIpIFwKICAgIF9tbTI1Nl9tYXNrX2NtcF9lcGk2NF9tYXNrKChrKSwgKEEpLCAoQiksIF9NTV9DTVBJTlRfTEUpCiNkZWZpbmUgX21tMjU2X2NtcGx0X2VwaTY0X21hc2soQSwgQikgXAogICAgX21tMjU2X2NtcF9lcGk2NF9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX0xUKQojZGVmaW5lIF9tbTI1Nl9tYXNrX2NtcGx0X2VwaTY0X21hc2soaywgQSwgQikgXAogICAgX21tMjU2X21hc2tfY21wX2VwaTY0X21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9MVCkKI2RlZmluZSBfbW0yNTZfY21wbmVxX2VwaTY0X21hc2soQSwgQikgXAogICAgX21tMjU2X2NtcF9lcGk2NF9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX05FKQojZGVmaW5lIF9tbTI1Nl9tYXNrX2NtcG5lcV9lcGk2NF9tYXNrKGssIEEsIEIpIFwKICAgIF9tbTI1Nl9tYXNrX2NtcF9lcGk2NF9tYXNrKChrKSwgKEEpLCAoQiksIF9NTV9DTVBJTlRfTkUpCgojZGVmaW5lIF9tbV9jbXBlcV9lcHU2NF9tYXNrKEEsIEIpIFwKICAgIF9tbV9jbXBfZXB1NjRfbWFzaygoQSksIChCKSwgX01NX0NNUElOVF9FUSkKI2RlZmluZSBfbW1fbWFza19jbXBlcV9lcHU2NF9tYXNrKGssIEEsIEIpIFwKICAgIF9tbV9tYXNrX2NtcF9lcHU2NF9tYXNrKChrKSwgKEEpLCAoQiksIF9NTV9DTVBJTlRfRVEpCiNkZWZpbmUgX21tX2NtcGdlX2VwdTY0X21hc2soQSwgQikgXAogICAgX21tX2NtcF9lcHU2NF9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX0dFKQojZGVmaW5lIF9tbV9tYXNrX2NtcGdlX2VwdTY0X21hc2soaywgQSwgQikgXAogICAgX21tX21hc2tfY21wX2VwdTY0X21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9HRSkKI2RlZmluZSBfbW1fY21wZ3RfZXB1NjRfbWFzayhBLCBCKSBcCiAgICBfbW1fY21wX2VwdTY0X21hc2soKEEpLCAoQiksIF9NTV9DTVBJTlRfR1QpCiNkZWZpbmUgX21tX21hc2tfY21wZ3RfZXB1NjRfbWFzayhrLCBBLCBCKSBcCiAgICBfbW1fbWFza19jbXBfZXB1NjRfbWFzaygoayksIChBKSwgKEIpLCBfTU1fQ01QSU5UX0dUKQojZGVmaW5lIF9tbV9jbXBsZV9lcHU2NF9tYXNrKEEsIEIpIFwKICAgIF9tbV9jbXBfZXB1NjRfbWFzaygoQSksIChCKSwgX01NX0NNUElOVF9MRSkKI2RlZmluZSBfbW1fbWFza19jbXBsZV9lcHU2NF9tYXNrKGssIEEsIEIpIFwKICAgIF9tbV9tYXNrX2NtcF9lcHU2NF9tYXNrKChrKSwgKEEpLCAoQiksIF9NTV9DTVBJTlRfTEUpCiNkZWZpbmUgX21tX2NtcGx0X2VwdTY0X21hc2soQSwgQikgXAogICAgX21tX2NtcF9lcHU2NF9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX0xUKQojZGVmaW5lIF9tbV9tYXNrX2NtcGx0X2VwdTY0X21hc2soaywgQSwgQikgXAogICAgX21tX21hc2tfY21wX2VwdTY0X21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9MVCkKI2RlZmluZSBfbW1fY21wbmVxX2VwdTY0X21hc2soQSwgQikgXAogICAgX21tX2NtcF9lcHU2NF9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX05FKQojZGVmaW5lIF9tbV9tYXNrX2NtcG5lcV9lcHU2NF9tYXNrKGssIEEsIEIpIFwKICAgIF9tbV9tYXNrX2NtcF9lcHU2NF9tYXNrKChrKSwgKEEpLCAoQiksIF9NTV9DTVBJTlRfTkUpCgojZGVmaW5lIF9tbTI1Nl9jbXBlcV9lcHU2NF9tYXNrKEEsIEIpIFwKICAgIF9tbTI1Nl9jbXBfZXB1NjRfbWFzaygoQSksIChCKSwgX01NX0NNUElOVF9FUSkKI2RlZmluZSBfbW0yNTZfbWFza19jbXBlcV9lcHU2NF9tYXNrKGssIEEsIEIpIFwKICAgIF9tbTI1Nl9tYXNrX2NtcF9lcHU2NF9tYXNrKChrKSwgKEEpLCAoQiksIF9NTV9DTVBJTlRfRVEpCiNkZWZpbmUgX21tMjU2X2NtcGdlX2VwdTY0X21hc2soQSwgQikgXAogICAgX21tMjU2X2NtcF9lcHU2NF9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX0dFKQojZGVmaW5lIF9tbTI1Nl9tYXNrX2NtcGdlX2VwdTY0X21hc2soaywgQSwgQikgXAogICAgX21tMjU2X21hc2tfY21wX2VwdTY0X21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9HRSkKI2RlZmluZSBfbW0yNTZfY21wZ3RfZXB1NjRfbWFzayhBLCBCKSBcCiAgICBfbW0yNTZfY21wX2VwdTY0X21hc2soKEEpLCAoQiksIF9NTV9DTVBJTlRfR1QpCiNkZWZpbmUgX21tMjU2X21hc2tfY21wZ3RfZXB1NjRfbWFzayhrLCBBLCBCKSBcCiAgICBfbW0yNTZfbWFza19jbXBfZXB1NjRfbWFzaygoayksIChBKSwgKEIpLCBfTU1fQ01QSU5UX0dUKQojZGVmaW5lIF9tbTI1Nl9jbXBsZV9lcHU2NF9tYXNrKEEsIEIpIFwKICAgIF9tbTI1Nl9jbXBfZXB1NjRfbWFzaygoQSksIChCKSwgX01NX0NNUElOVF9MRSkKI2RlZmluZSBfbW0yNTZfbWFza19jbXBsZV9lcHU2NF9tYXNrKGssIEEsIEIpIFwKICAgIF9tbTI1Nl9tYXNrX2NtcF9lcHU2NF9tYXNrKChrKSwgKEEpLCAoQiksIF9NTV9DTVBJTlRfTEUpCiNkZWZpbmUgX21tMjU2X2NtcGx0X2VwdTY0X21hc2soQSwgQikgXAogICAgX21tMjU2X2NtcF9lcHU2NF9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX0xUKQojZGVmaW5lIF9tbTI1Nl9tYXNrX2NtcGx0X2VwdTY0X21hc2soaywgQSwgQikgXAogICAgX21tMjU2X21hc2tfY21wX2VwdTY0X21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9MVCkKI2RlZmluZSBfbW0yNTZfY21wbmVxX2VwdTY0X21hc2soQSwgQikgXAogICAgX21tMjU2X2NtcF9lcHU2NF9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX05FKQojZGVmaW5lIF9tbTI1Nl9tYXNrX2NtcG5lcV9lcHU2NF9tYXNrKGssIEEsIEIpIFwKICAgIF9tbTI1Nl9tYXNrX2NtcF9lcHU2NF9tYXNrKChrKSwgKEEpLCAoQiksIF9NTV9DTVBJTlRfTkUpCgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19hZGRfZXBpMzIoX19tMjU2aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X2FkZF9lcGkzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2FkZF9lcGkzMihfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9hZGRfZXBpMzIoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19hZGRfZXBpNjQoX19tMjU2aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX21tMjU2X2FkZF9lcGk2NChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2FkZF9lcGk2NChfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9hZGRfZXBpNjQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19zdWJfZXBpMzIoX19tMjU2aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X3N1Yl9lcGkzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X3N1Yl9lcGkzMihfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9zdWJfZXBpMzIoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19zdWJfZXBpNjQoX19tMjU2aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX21tMjU2X3N1Yl9lcGk2NChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X3N1Yl9lcGk2NChfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9zdWJfZXBpNjQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19hZGRfZXBpMzIoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX2FkZF9lcGkzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2FkZF9lcGkzMihfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9hZGRfZXBpMzIoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19hZGRfZXBpNjQoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX21tX2FkZF9lcGk2NChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2FkZF9lcGk2NChfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9hZGRfZXBpNjQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19zdWJfZXBpMzIoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX3N1Yl9lcGkzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X3N1Yl9lcGkzMihfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9zdWJfZXBpMzIoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19zdWJfZXBpNjQoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX21tX3N1Yl9lcGk2NChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X3N1Yl9lcGk2NChfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9zdWJfZXBpNjQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19tdWxfZXBpMzIoX19tMjU2aSBfX1csIF9fbW1hc2s4IF9fTSwgX19tMjU2aSBfX1gsIF9fbTI1NmkgX19ZKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMjU2KChfX21tYXNrOClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX21tMjU2X211bF9lcGkzMihfX1gsIF9fWSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X211bF9lcGkzMihfX21tYXNrOCBfX00sIF9fbTI1NmkgX19YLCBfX20yNTZpIF9fWSkKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzI1NigoX19tbWFzazgpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9tdWxfZXBpMzIoX19YLCBfX1kpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19tdWxfZXBpMzIoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fTSwgX19tMTI4aSBfX1gsIF9fbTEyOGkgX19ZKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMTI4KChfX21tYXNrOClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX21tX211bF9lcGkzMihfX1gsIF9fWSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X211bF9lcGkzMihfX21tYXNrOCBfX00sIF9fbTEyOGkgX19YLCBfX20xMjhpIF9fWSkKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzEyOCgoX19tbWFzazgpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9tdWxfZXBpMzIoX19YLCBfX1kpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19tdWxfZXB1MzIoX19tMjU2aSBfX1csIF9fbW1hc2s4IF9fTSwgX19tMjU2aSBfX1gsIF9fbTI1NmkgX19ZKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMjU2KChfX21tYXNrOClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX21tMjU2X211bF9lcHUzMihfX1gsIF9fWSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X211bF9lcHUzMihfX21tYXNrOCBfX00sIF9fbTI1NmkgX19YLCBfX20yNTZpIF9fWSkKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzI1NigoX19tbWFzazgpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9tdWxfZXB1MzIoX19YLCBfX1kpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19tdWxfZXB1MzIoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fTSwgX19tMTI4aSBfX1gsIF9fbTEyOGkgX19ZKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMTI4KChfX21tYXNrOClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX21tX211bF9lcHUzMihfX1gsIF9fWSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X211bF9lcHUzMihfX21tYXNrOCBfX00sIF9fbTEyOGkgX19YLCBfX20xMjhpIF9fWSkKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzEyOCgoX19tbWFzazgpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9tdWxfZXB1MzIoX19YLCBfX1kpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfbXVsbG9fZXBpMzIoX19tbWFzazggX19NLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8yNTYoKF9fbW1hc2s4KV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfbXVsbG9fZXBpMzIoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19tdWxsb19lcGkzMihfX20yNTZpIF9fVywgX19tbWFzazggX19NLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8yNTYoKF9fbW1hc2s4KV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfbXVsbG9fZXBpMzIoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9tdWxsb19lcGkzMihfX21tYXNrOCBfX00sIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzEyOCgoX19tbWFzazgpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9tdWxsb19lcGkzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX3NldHplcm9fc2kxMjgoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX211bGxvX2VwaTMyKF9fbTEyOGkgX19XLCBfX21tYXNrOCBfX00sIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzEyOCgoX19tbWFzazgpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9tdWxsb19lcGkzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2FuZF9lcGkzMihfX20yNTZpIF9fYSwgX19tMjU2aSBfX2IpCnsKICByZXR1cm4gKF9fbTI1NmkpKChfX3Y4c3UpX19hICYgKF9fdjhzdSlfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19hbmRfZXBpMzIoX19tMjU2aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X2FuZF9lcGkzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2FuZF9lcGkzMihfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikKewogIHJldHVybiAoX19tMjU2aSlfbW0yNTZfbWFza19hbmRfZXBpMzIoX21tMjU2X3NldHplcm9fc2kyNTYoKSwgX19VLCBfX0EsIF9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9hbmRfZXBpMzIoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQp7CiAgcmV0dXJuIChfX20xMjhpKSgoX192NHN1KV9fYSAmIChfX3Y0c3UpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfYW5kX2VwaTMyKF9fbTEyOGkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9hbmRfZXBpMzIoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9hbmRfZXBpMzIoX19tbWFzazggX19VLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX21tX21hc2tfYW5kX2VwaTMyKF9tbV9zZXR6ZXJvX3NpMTI4KCksIF9fVSwgX19BLCBfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfYW5kbm90X2VwaTMyKF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikKewogIHJldHVybiAoX19tMjU2aSkofihfX3Y4c3UpX19BICYgKF9fdjhzdSlfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19hbmRub3RfZXBpMzIoX19tMjU2aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X2FuZG5vdF9lcGkzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2FuZG5vdF9lcGkzMihfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikKewogIHJldHVybiAoX19tMjU2aSlfbW0yNTZfbWFza19hbmRub3RfZXBpMzIoX21tMjU2X3NldHplcm9fc2kyNTYoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fVSwgX19BLCBfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fYW5kbm90X2VwaTMyKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSkofihfX3Y0c3UpX19BICYgKF9fdjRzdSlfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19hbmRub3RfZXBpMzIoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX2FuZG5vdF9lcGkzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2FuZG5vdF9lcGkzMihfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfbW1fbWFza19hbmRub3RfZXBpMzIoX21tX3NldHplcm9fc2kxMjgoKSwgX19VLCBfX0EsIF9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9vcl9lcGkzMihfX20yNTZpIF9fYSwgX19tMjU2aSBfX2IpCnsKICByZXR1cm4gKF9fbTI1NmkpKChfX3Y4c3UpX19hIHwgKF9fdjhzdSlfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19vcl9lcGkzMiAoX19tMjU2aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X29yX2VwaTMyKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfb3JfZXBpMzIoX19tbWFzazggX19VLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX21tMjU2X21hc2tfb3JfZXBpMzIoX21tMjU2X3NldHplcm9fc2kyNTYoKSwgX19VLCBfX0EsIF9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9vcl9lcGkzMihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpCnsKICByZXR1cm4gKF9fbTEyOGkpKChfX3Y0c3UpX19hIHwgKF9fdjRzdSlfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19vcl9lcGkzMihfX20xMjhpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfbW1fb3JfZXBpMzIoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9vcl9lcGkzMihfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfbW1fbWFza19vcl9lcGkzMihfbW1fc2V0emVyb19zaTEyOCgpLCBfX1UsIF9fQSwgX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X3hvcl9lcGkzMihfX20yNTZpIF9fYSwgX19tMjU2aSBfX2IpCnsKICByZXR1cm4gKF9fbTI1NmkpKChfX3Y4c3UpX19hIF4gKF9fdjhzdSlfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza194b3JfZXBpMzIoX19tMjU2aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X3hvcl9lcGkzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X3hvcl9lcGkzMihfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikKewogIHJldHVybiAoX19tMjU2aSlfbW0yNTZfbWFza194b3JfZXBpMzIoX21tMjU2X3NldHplcm9fc2kyNTYoKSwgX19VLCBfX0EsIF9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV94b3JfZXBpMzIoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQp7CiAgcmV0dXJuIChfX20xMjhpKSgoX192NHN1KV9fYSBeIChfX3Y0c3UpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfeG9yX2VwaTMyKF9fbTEyOGkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV94b3JfZXBpMzIoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel94b3JfZXBpMzIoX19tbWFzazggX19VLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX21tX21hc2tfeG9yX2VwaTMyKF9tbV9zZXR6ZXJvX3NpMTI4KCksIF9fVSwgX19BLCBfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfYW5kX2VwaTY0KF9fbTI1NmkgX19hLCBfX20yNTZpIF9fYikKewogIHJldHVybiAoX19tMjU2aSkoKF9fdjRkdSlfX2EgJiAoX192NGR1KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2FuZF9lcGk2NChfX20yNTZpIF9fVywgX19tbWFzazggX19VLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfYW5kX2VwaTY0KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfYW5kX2VwaTY0KF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9tbTI1Nl9tYXNrX2FuZF9lcGk2NChfbW0yNTZfc2V0emVyb19zaTI1NigpLCBfX1UsIF9fQSwgX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX2FuZF9lcGk2NChfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpCnsKICByZXR1cm4gKF9fbTEyOGkpKChfX3YyZHUpX19hICYgKF9fdjJkdSlfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19hbmRfZXBpNjQoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX21tX2FuZF9lcGk2NChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2FuZF9lcGk2NChfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfbW1fbWFza19hbmRfZXBpNjQoX21tX3NldHplcm9fc2kxMjgoKSwgX19VLCBfX0EsIF9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9hbmRub3RfZXBpNjQoX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKSh+KF9fdjRkdSlfX0EgJiAoX192NGR1KV9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2FuZG5vdF9lcGk2NChfX20yNTZpIF9fVywgX19tbWFzazggX19VLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfYW5kbm90X2VwaTY0KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfYW5kbm90X2VwaTY0KF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9tbTI1Nl9tYXNrX2FuZG5vdF9lcGk2NChfbW0yNTZfc2V0emVyb19zaTI1NigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19VLCBfX0EsIF9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9hbmRub3RfZXBpNjQoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKSh+KF9fdjJkdSlfX0EgJiAoX192MmR1KV9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2FuZG5vdF9lcGk2NChfX20xMjhpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfbW1fYW5kbm90X2VwaTY0KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfYW5kbm90X2VwaTY0KF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9tbV9tYXNrX2FuZG5vdF9lcGk2NChfbW1fc2V0emVyb19zaTEyOCgpLCBfX1UsIF9fQSwgX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X29yX2VwaTY0KF9fbTI1NmkgX19hLCBfX20yNTZpIF9fYikKewogIHJldHVybiAoX19tMjU2aSkoKF9fdjRkdSlfX2EgfCAoX192NGR1KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX29yX2VwaTY0KF9fbTI1NmkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9vcl9lcGk2NChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X29yX2VwaTY0KF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9tbTI1Nl9tYXNrX29yX2VwaTY0KF9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCksIF9fVSwgX19BLCBfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fb3JfZXBpNjQoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQp7CiAgcmV0dXJuIChfX20xMjhpKSgoX192MmR1KV9fYSB8IChfX3YyZHUpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfb3JfZXBpNjQoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX21tX29yX2VwaTY0KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfb3JfZXBpNjQoX19tbWFzazggX19VLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX21tX21hc2tfb3JfZXBpNjQoX21tX3NldHplcm9fc2kxMjgoKSwgX19VLCBfX0EsIF9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl94b3JfZXBpNjQoX19tMjU2aSBfX2EsIF9fbTI1NmkgX19iKQp7CiAgcmV0dXJuIChfX20yNTZpKSgoX192NGR1KV9fYSBeIChfX3Y0ZHUpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfeG9yX2VwaTY0KF9fbTI1NmkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl94b3JfZXBpNjQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel94b3JfZXBpNjQoX19tbWFzazggX19VLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX21tMjU2X21hc2tfeG9yX2VwaTY0KF9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCksIF9fVSwgX19BLCBfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1feG9yX2VwaTY0KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikKewogIHJldHVybiAoX19tMTI4aSkoKF9fdjJkdSlfX2EgXiAoX192MmR1KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3hvcl9lcGk2NChfX20xMjhpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhpIF9fQSwKICAgICAgICBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV94b3JfZXBpNjQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel94b3JfZXBpNjQoX19tbWFzazggX19VLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX21tX21hc2tfeG9yX2VwaTY0KF9tbV9zZXR6ZXJvX3NpMTI4KCksIF9fVSwgX19BLCBfX0IpOwp9CgojZGVmaW5lIF9tbV9jbXBfZXBpMzJfbWFzayhhLCBiLCBwKSBcCiAgKChfX21tYXNrOClfX2J1aWx0aW5faWEzMl9jbXBkMTI4X21hc2soKF9fdjRzaSkoX19tMTI4aSkoYSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKShfX20xMjhpKShiKSwgKGludCkocCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEpKQoKI2RlZmluZSBfbW1fbWFza19jbXBfZXBpMzJfbWFzayhtLCBhLCBiLCBwKSBcCiAgKChfX21tYXNrOClfX2J1aWx0aW5faWEzMl9jbXBkMTI4X21hc2soKF9fdjRzaSkoX19tMTI4aSkoYSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKShfX20xMjhpKShiKSwgKGludCkocCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKG0pKSkKCiNkZWZpbmUgX21tX2NtcF9lcHUzMl9tYXNrKGEsIGIsIHApIFwKICAoKF9fbW1hc2s4KV9fYnVpbHRpbl9pYTMyX3VjbXBkMTI4X21hc2soKF9fdjRzaSkoX19tMTI4aSkoYSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSkoX19tMTI4aSkoYiksIChpbnQpKHApLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSkpCgojZGVmaW5lIF9tbV9tYXNrX2NtcF9lcHUzMl9tYXNrKG0sIGEsIGIsIHApIFwKICAoKF9fbW1hc2s4KV9fYnVpbHRpbl9pYTMyX3VjbXBkMTI4X21hc2soKF9fdjRzaSkoX19tMTI4aSkoYSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSkoX19tMTI4aSkoYiksIChpbnQpKHApLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkobSkpKQoKI2RlZmluZSBfbW0yNTZfY21wX2VwaTMyX21hc2soYSwgYiwgcCkgXAogICgoX19tbWFzazgpX19idWlsdGluX2lhMzJfY21wZDI1Nl9tYXNrKChfX3Y4c2kpKF9fbTI1NmkpKGEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSkoX19tMjU2aSkoYiksIChpbnQpKHApLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xKSkKCiNkZWZpbmUgX21tMjU2X21hc2tfY21wX2VwaTMyX21hc2sobSwgYSwgYiwgcCkgXAogICgoX19tbWFzazgpX19idWlsdGluX2lhMzJfY21wZDI1Nl9tYXNrKChfX3Y4c2kpKF9fbTI1NmkpKGEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSkoX19tMjU2aSkoYiksIChpbnQpKHApLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShtKSkpCgojZGVmaW5lIF9tbTI1Nl9jbXBfZXB1MzJfbWFzayhhLCBiLCBwKSBcCiAgKChfX21tYXNrOClfX2J1aWx0aW5faWEzMl91Y21wZDI1Nl9tYXNrKChfX3Y4c2kpKF9fbTI1NmkpKGEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpKF9fbTI1NmkpKGIpLCAoaW50KShwKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEpKQoKI2RlZmluZSBfbW0yNTZfbWFza19jbXBfZXB1MzJfbWFzayhtLCBhLCBiLCBwKSBcCiAgKChfX21tYXNrOClfX2J1aWx0aW5faWEzMl91Y21wZDI1Nl9tYXNrKChfX3Y4c2kpKF9fbTI1NmkpKGEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpKF9fbTI1NmkpKGIpLCAoaW50KShwKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKG0pKSkKCiNkZWZpbmUgX21tX2NtcF9lcGk2NF9tYXNrKGEsIGIsIHApIFwKICAoKF9fbW1hc2s4KV9fYnVpbHRpbl9pYTMyX2NtcHExMjhfbWFzaygoX192MmRpKShfX20xMjhpKShhKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpKF9fbTEyOGkpKGIpLCAoaW50KShwKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSkpCgojZGVmaW5lIF9tbV9tYXNrX2NtcF9lcGk2NF9tYXNrKG0sIGEsIGIsIHApIFwKICAoKF9fbW1hc2s4KV9fYnVpbHRpbl9pYTMyX2NtcHExMjhfbWFzaygoX192MmRpKShfX20xMjhpKShhKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpKF9fbTEyOGkpKGIpLCAoaW50KShwKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkobSkpKQoKI2RlZmluZSBfbW1fY21wX2VwdTY0X21hc2soYSwgYiwgcCkgXAogICgoX19tbWFzazgpX19idWlsdGluX2lhMzJfdWNtcHExMjhfbWFzaygoX192MmRpKShfX20xMjhpKShhKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKShfX20xMjhpKShiKSwgKGludCkocCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xKSkKCiNkZWZpbmUgX21tX21hc2tfY21wX2VwdTY0X21hc2sobSwgYSwgYiwgcCkgXAogICgoX19tbWFzazgpX19idWlsdGluX2lhMzJfdWNtcHExMjhfbWFzaygoX192MmRpKShfX20xMjhpKShhKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKShfX20xMjhpKShiKSwgKGludCkocCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShtKSkpCgojZGVmaW5lIF9tbTI1Nl9jbXBfZXBpNjRfbWFzayhhLCBiLCBwKSBcCiAgKChfX21tYXNrOClfX2J1aWx0aW5faWEzMl9jbXBxMjU2X21hc2soKF9fdjRkaSkoX19tMjU2aSkoYSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKShfX20yNTZpKShiKSwgKGludCkocCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEpKQoKI2RlZmluZSBfbW0yNTZfbWFza19jbXBfZXBpNjRfbWFzayhtLCBhLCBiLCBwKSBcCiAgKChfX21tYXNrOClfX2J1aWx0aW5faWEzMl9jbXBxMjU2X21hc2soKF9fdjRkaSkoX19tMjU2aSkoYSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKShfX20yNTZpKShiKSwgKGludCkocCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKG0pKSkKCiNkZWZpbmUgX21tMjU2X2NtcF9lcHU2NF9tYXNrKGEsIGIsIHApIFwKICAoKF9fbW1hc2s4KV9fYnVpbHRpbl9pYTMyX3VjbXBxMjU2X21hc2soKF9fdjRkaSkoX19tMjU2aSkoYSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSkoX19tMjU2aSkoYiksIChpbnQpKHApLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSkpCgojZGVmaW5lIF9tbTI1Nl9tYXNrX2NtcF9lcHU2NF9tYXNrKG0sIGEsIGIsIHApIFwKICAoKF9fbW1hc2s4KV9fYnVpbHRpbl9pYTMyX3VjbXBxMjU2X21hc2soKF9fdjRkaSkoX19tMjU2aSkoYSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSkoX19tMjU2aSkoYiksIChpbnQpKHApLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkobSkpKQoKI2RlZmluZSBfbW0yNTZfY21wX3BzX21hc2soYSwgYiwgcCkgIFwKICAoKF9fbW1hc2s4KV9fYnVpbHRpbl9pYTMyX2NtcHBzMjU2X21hc2soKF9fdjhzZikoX19tMjU2KShhKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKShfX20yNTYpKGIpLCAoaW50KShwKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEpKQoKI2RlZmluZSBfbW0yNTZfbWFza19jbXBfcHNfbWFzayhtLCBhLCBiLCBwKSAgXAogICgoX19tbWFzazgpX19idWlsdGluX2lhMzJfY21wcHMyNTZfbWFzaygoX192OHNmKShfX20yNTYpKGEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpKF9fbTI1NikoYiksIChpbnQpKHApLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkobSkpKQoKI2RlZmluZSBfbW0yNTZfY21wX3BkX21hc2soYSwgYiwgcCkgIFwKICAoKF9fbW1hc2s4KV9fYnVpbHRpbl9pYTMyX2NtcHBkMjU2X21hc2soKF9fdjRkZikoX19tMjU2ZCkoYSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZikoX19tMjU2ZCkoYiksIChpbnQpKHApLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSkpCgojZGVmaW5lIF9tbTI1Nl9tYXNrX2NtcF9wZF9tYXNrKG0sIGEsIGIsIHApICBcCiAgKChfX21tYXNrOClfX2J1aWx0aW5faWEzMl9jbXBwZDI1Nl9tYXNrKChfX3Y0ZGYpKF9fbTI1NmQpKGEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpKF9fbTI1NmQpKGIpLCAoaW50KShwKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKG0pKSkKCiNkZWZpbmUgX21tX2NtcF9wc19tYXNrKGEsIGIsIHApICBcCiAgKChfX21tYXNrOClfX2J1aWx0aW5faWEzMl9jbXBwczEyOF9tYXNrKChfX3Y0c2YpKF9fbTEyOCkoYSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikoX19tMTI4KShiKSwgKGludCkocCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xKSkKCiNkZWZpbmUgX21tX21hc2tfY21wX3BzX21hc2sobSwgYSwgYiwgcCkgIFwKICAoKF9fbW1hc2s4KV9fYnVpbHRpbl9pYTMyX2NtcHBzMTI4X21hc2soKF9fdjRzZikoX19tMTI4KShhKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKGIpLCAoaW50KShwKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKG0pKSkKCiNkZWZpbmUgX21tX2NtcF9wZF9tYXNrKGEsIGIsIHApICBcCiAgKChfX21tYXNrOClfX2J1aWx0aW5faWEzMl9jbXBwZDEyOF9tYXNrKChfX3YyZGYpKF9fbTEyOGQpKGEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKGIpLCAoaW50KShwKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEpKQoKI2RlZmluZSBfbW1fbWFza19jbXBfcGRfbWFzayhtLCBhLCBiLCBwKSAgXAogICgoX19tbWFzazgpX19idWlsdGluX2lhMzJfY21wcGQxMjhfbWFzaygoX192MmRmKShfX20xMjhkKShhKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShiKSwgKGludCkocCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShtKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19mbWFkZF9wZChfX20xMjhkIF9fQSwgX19tbWFzazggX19VLCBfX20xMjhkIF9fQiwgX19tMTI4ZCBfX0MpCnsKICByZXR1cm4gKF9fbTEyOGQpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzEyOCgoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICAgICBfX2J1aWx0aW5faWEzMl92Zm1hZGRwZCAoKF9fdjJkZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKSBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpIF9fQyksCiAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikgX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2szX2ZtYWRkX3BkKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQiwgX19tMTI4ZCBfX0MsIF9fbW1hc2s4IF9fVSkKewogIHJldHVybiAoX19tMTI4ZCkgX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMTI4KChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgICAgIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBkICgoX192MmRmKSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikgX19DKSwKICAgICAgICAgICAgICAgICAgICAoX192MmRmKSBfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfZm1hZGRfcGQoX19tbWFzazggX19VLCBfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IsIF9fbTEyOGQgX19DKQp7CiAgcmV0dXJuIChfX20xMjhkKSBfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF8xMjgoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgX19idWlsdGluX2lhMzJfdmZtYWRkcGQgKChfX3YyZGYpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikgX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKSBfX0MpLAogICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX3NldHplcm9fcGQoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2Ztc3ViX3BkKF9fbTEyOGQgX19BLCBfX21tYXNrOCBfX1UsIF9fbTEyOGQgX19CLCBfX20xMjhkIF9fQykKewogIHJldHVybiAoX19tMTI4ZCkgX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMTI4KChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgICAgIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBkICgoX192MmRmKSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3YyZGYpIF9fQyksCiAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikgX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2Ztc3ViX3BkKF9fbW1hc2s4IF9fVSwgX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CLCBfX20xMjhkIF9fQykKewogIHJldHVybiAoX19tMTI4ZCkgX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMTI4KChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgICAgIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBkICgoX192MmRmKSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3YyZGYpIF9fQyksCiAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfbW1fc2V0emVyb19wZCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2szX2ZubWFkZF9wZChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IsIF9fbTEyOGQgX19DLCBfX21tYXNrOCBfX1UpCnsKICByZXR1cm4gKF9fbTEyOGQpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzEyOCgoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICAgICBfX2J1aWx0aW5faWEzMl92Zm1hZGRwZCAoLShfX3YyZGYpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikgX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKSBfX0MpLAogICAgICAgICAgICAgICAgICAgIChfX3YyZGYpIF9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9mbm1hZGRfcGQoX19tbWFzazggX19VLCBfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IsIF9fbTEyOGQgX19DKQp7CiAgcmV0dXJuIChfX20xMjhkKSBfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF8xMjgoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgX19idWlsdGluX2lhMzJfdmZtYWRkcGQgKC0oX192MmRmKSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikgX19DKSwKICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9tbV9zZXR6ZXJvX3BkKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfZm5tc3ViX3BkKF9fbW1hc2s4IF9fVSwgX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CLCBfX20xMjhkIF9fQykKewogIHJldHVybiAoX19tMTI4ZCkgX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMTI4KChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgICAgIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBkICgtKF9fdjJkZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKSBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192MmRmKSBfX0MpLAogICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX3NldHplcm9fcGQoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2ZtYWRkX3BkKF9fbTI1NmQgX19BLCBfX21tYXNrOCBfX1UsIF9fbTI1NmQgX19CLCBfX20yNTZkIF9fQykKewogIHJldHVybiAoX19tMjU2ZCkgX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMjU2KChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgICAgIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBkMjU2ICgoX192NGRmKSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZikgX19DKSwKICAgICAgICAgICAgICAgICAgICAoX192NGRmKSBfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFzazNfZm1hZGRfcGQoX19tMjU2ZCBfX0EsIF9fbTI1NmQgX19CLCBfX20yNTZkIF9fQywgX19tbWFzazggX19VKQp7CiAgcmV0dXJuIChfX20yNTZkKSBfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF8yNTYoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgX19idWlsdGluX2lhMzJfdmZtYWRkcGQyNTYgKChfX3Y0ZGYpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZikgX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKSBfX0MpLAogICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpIF9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9mbWFkZF9wZChfX21tYXNrOCBfX1UsIF9fbTI1NmQgX19BLCBfX20yNTZkIF9fQiwgX19tMjU2ZCBfX0MpCnsKICByZXR1cm4gKF9fbTI1NmQpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzI1NigoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICAgICBfX2J1aWx0aW5faWEzMl92Zm1hZGRwZDI1NiAoKF9fdjRkZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKSBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpIF9fQyksCiAgICAgICAgICAgICAgICAgICAgKF9fdjRkZilfbW0yNTZfc2V0emVyb19wZCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfZm1zdWJfcGQoX19tMjU2ZCBfX0EsIF9fbW1hc2s4IF9fVSwgX19tMjU2ZCBfX0IsIF9fbTI1NmQgX19DKQp7CiAgcmV0dXJuIChfX20yNTZkKSBfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF8yNTYoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgX19idWlsdGluX2lhMzJfdmZtYWRkcGQyNTYgKChfX3Y0ZGYpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZikgX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjRkZikgX19DKSwKICAgICAgICAgICAgICAgICAgICAoX192NGRmKSBfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfZm1zdWJfcGQoX19tbWFzazggX19VLCBfX20yNTZkIF9fQSwgX19tMjU2ZCBfX0IsIF9fbTI1NmQgX19DKQp7CiAgcmV0dXJuIChfX20yNTZkKSBfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF8yNTYoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgX19idWlsdGluX2lhMzJfdmZtYWRkcGQyNTYgKChfX3Y0ZGYpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZikgX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjRkZikgX19DKSwKICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9tbTI1Nl9zZXR6ZXJvX3BkKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFzazNfZm5tYWRkX3BkKF9fbTI1NmQgX19BLCBfX20yNTZkIF9fQiwgX19tMjU2ZCBfX0MsIF9fbW1hc2s4IF9fVSkKewogIHJldHVybiAoX19tMjU2ZCkgX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMjU2KChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgICAgIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBkMjU2ICgtKF9fdjRkZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKSBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpIF9fQyksCiAgICAgICAgICAgICAgICAgICAgKF9fdjRkZikgX19DKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2ZubWFkZF9wZChfX21tYXNrOCBfX1UsIF9fbTI1NmQgX19BLCBfX20yNTZkIF9fQiwgX19tMjU2ZCBfX0MpCnsKICByZXR1cm4gKF9fbTI1NmQpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzI1NigoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICAgICBfX2J1aWx0aW5faWEzMl92Zm1hZGRwZDI1NiAoLShfX3Y0ZGYpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZikgX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKSBfX0MpLAogICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpX21tMjU2X3NldHplcm9fcGQoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9mbm1zdWJfcGQoX19tbWFzazggX19VLCBfX20yNTZkIF9fQSwgX19tMjU2ZCBfX0IsIF9fbTI1NmQgX19DKQp7CiAgcmV0dXJuIChfX20yNTZkKSBfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF8yNTYoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgX19idWlsdGluX2lhMzJfdmZtYWRkcGQyNTYgKC0oX192NGRmKSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3Y0ZGYpIF9fQyksCiAgICAgICAgICAgICAgICAgICAgKF9fdjRkZilfbW0yNTZfc2V0emVyb19wZCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19mbWFkZF9wcyhfX20xMjggX19BLCBfX21tYXNrOCBfX1UsIF9fbTEyOCBfX0IsIF9fbTEyOCBfX0MpCnsKICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMTI4KChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgICAgIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBzICgoX192NHNmKSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikgX19DKSwKICAgICAgICAgICAgICAgICAgICAoX192NHNmKSBfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrM19mbWFkZF9wcyhfX20xMjggX19BLCBfX20xMjggX19CLCBfX20xMjggX19DLCBfX21tYXNrOCBfX1UpCnsKICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMTI4KChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgICAgIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBzICgoX192NHNmKSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikgX19DKSwKICAgICAgICAgICAgICAgICAgICAoX192NHNmKSBfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9mbWFkZF9wcyhfX21tYXNrOCBfX1UsIF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IsIF9fbTEyOCBfX0MpCnsKICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMTI4KChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgICAgIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBzICgoX192NHNmKSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikgX19DKSwKICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9tbV9zZXR6ZXJvX3BzKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2Ztc3ViX3BzKF9fbTEyOCBfX0EsIF9fbW1hc2s4IF9fVSwgX19tMTI4IF9fQiwgX19tMTI4IF9fQykKewogIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18xMjgoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgX19idWlsdGluX2lhMzJfdmZtYWRkcHMgKChfX3Y0c2YpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikgX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjRzZikgX19DKSwKICAgICAgICAgICAgICAgICAgICAoX192NHNmKSBfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9mbXN1Yl9wcyhfX21tYXNrOCBfX1UsIF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IsIF9fbTEyOCBfX0MpCnsKICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMTI4KChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgICAgIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBzICgoX192NHNmKSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3Y0c2YpIF9fQyksCiAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfbW1fc2V0emVyb19wcygpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFzazNfZm5tYWRkX3BzKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IsIF9fbTEyOCBfX0MsIF9fbW1hc2s4IF9fVSkKewogIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18xMjgoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgX19idWlsdGluX2lhMzJfdmZtYWRkcHMgKC0oX192NHNmKSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikgX19DKSwKICAgICAgICAgICAgICAgICAgICAoX192NHNmKSBfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9mbm1hZGRfcHMoX19tbWFzazggX19VLCBfX20xMjggX19BLCBfX20xMjggX19CLCBfX20xMjggX19DKQp7CiAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzEyOCgoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICAgICBfX2J1aWx0aW5faWEzMl92Zm1hZGRwcyAoLShfX3Y0c2YpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikgX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKSBfX0MpLAogICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX3NldHplcm9fcHMoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2ZubXN1Yl9wcyhfX21tYXNrOCBfX1UsIF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IsIF9fbTEyOCBfX0MpCnsKICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMTI4KChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgICAgIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBzICgtKF9fdjRzZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKSBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192NHNmKSBfX0MpLAogICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX3NldHplcm9fcHMoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfZm1hZGRfcHMoX19tMjU2IF9fQSwgX19tbWFzazggX19VLCBfX20yNTYgX19CLCBfX20yNTYgX19DKQp7CiAgcmV0dXJuIChfX20yNTYpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzI1NigoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICAgICBfX2J1aWx0aW5faWEzMl92Zm1hZGRwczI1NiAoKF9fdjhzZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKSBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpIF9fQyksCiAgICAgICAgICAgICAgICAgICAgKF9fdjhzZikgX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFzazNfZm1hZGRfcHMoX19tMjU2IF9fQSwgX19tMjU2IF9fQiwgX19tMjU2IF9fQywgX19tbWFzazggX19VKQp7CiAgcmV0dXJuIChfX20yNTYpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzI1NigoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICAgICBfX2J1aWx0aW5faWEzMl92Zm1hZGRwczI1NiAoKF9fdjhzZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKSBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpIF9fQyksCiAgICAgICAgICAgICAgICAgICAgKF9fdjhzZikgX19DKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfZm1hZGRfcHMoX19tbWFzazggX19VLCBfX20yNTYgX19BLCBfX20yNTYgX19CLCBfX20yNTYgX19DKQp7CiAgcmV0dXJuIChfX20yNTYpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzI1NigoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICAgICBfX2J1aWx0aW5faWEzMl92Zm1hZGRwczI1NiAoKF9fdjhzZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKSBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpIF9fQyksCiAgICAgICAgICAgICAgICAgICAgKF9fdjhzZilfbW0yNTZfc2V0emVyb19wcygpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19mbXN1Yl9wcyhfX20yNTYgX19BLCBfX21tYXNrOCBfX1UsIF9fbTI1NiBfX0IsIF9fbTI1NiBfX0MpCnsKICByZXR1cm4gKF9fbTI1NikgX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMjU2KChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgICAgIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBzMjU2ICgoX192OHNmKSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3Y4c2YpIF9fQyksCiAgICAgICAgICAgICAgICAgICAgKF9fdjhzZikgX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfZm1zdWJfcHMoX19tbWFzazggX19VLCBfX20yNTYgX19BLCBfX20yNTYgX19CLCBfX20yNTYgX19DKQp7CiAgcmV0dXJuIChfX20yNTYpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzI1NigoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICAgICBfX2J1aWx0aW5faWEzMl92Zm1hZGRwczI1NiAoKF9fdjhzZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKSBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192OHNmKSBfX0MpLAogICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX21tMjU2X3NldHplcm9fcHMoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2szX2ZubWFkZF9wcyhfX20yNTYgX19BLCBfX20yNTYgX19CLCBfX20yNTYgX19DLCBfX21tYXNrOCBfX1UpCnsKICByZXR1cm4gKF9fbTI1NikgX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMjU2KChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgICAgIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBzMjU2ICgtKF9fdjhzZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKSBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpIF9fQyksCiAgICAgICAgICAgICAgICAgICAgKF9fdjhzZikgX19DKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfZm5tYWRkX3BzKF9fbW1hc2s4IF9fVSwgX19tMjU2IF9fQSwgX19tMjU2IF9fQiwgX19tMjU2IF9fQykKewogIHJldHVybiAoX19tMjU2KSBfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18yNTYoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgX19idWlsdGluX2lhMzJfdmZtYWRkcHMyNTYgKC0oX192OHNmKSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZikgX19DKSwKICAgICAgICAgICAgICAgICAgICAoX192OHNmKV9tbTI1Nl9zZXR6ZXJvX3BzKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9mbm1zdWJfcHMoX19tbWFzazggX19VLCBfX20yNTYgX19BLCBfX20yNTYgX19CLCBfX20yNTYgX19DKQp7CiAgcmV0dXJuIChfX20yNTYpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzI1NigoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICAgICBfX2J1aWx0aW5faWEzMl92Zm1hZGRwczI1NiAoLShfX3Y4c2YpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZikgX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjhzZikgX19DKSwKICAgICAgICAgICAgICAgICAgICAoX192OHNmKV9tbTI1Nl9zZXR6ZXJvX3BzKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19mbWFkZHN1Yl9wZChfX20xMjhkIF9fQSwgX19tbWFzazggX19VLCBfX20xMjhkIF9fQiwgX19tMTI4ZCBfX0MpCnsKICByZXR1cm4gKF9fbTEyOGQpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzEyOCgoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICAgICBfX2J1aWx0aW5faWEzMl92Zm1hZGRzdWJwZCAoKF9fdjJkZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKSBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpIF9fQyksCiAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikgX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2szX2ZtYWRkc3ViX3BkKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQiwgX19tMTI4ZCBfX0MsIF9fbW1hc2s4IF9fVSkKewogIHJldHVybiAoX19tMTI4ZCkgX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMTI4KChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgICAgIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHN1YnBkICgoX192MmRmKSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikgX19DKSwKICAgICAgICAgICAgICAgICAgICAoX192MmRmKSBfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfZm1hZGRzdWJfcGQoX19tbWFzazggX19VLCBfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IsIF9fbTEyOGQgX19DKQp7CiAgcmV0dXJuIChfX20xMjhkKSBfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF8xMjgoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgX19idWlsdGluX2lhMzJfdmZtYWRkc3VicGQgKChfX3YyZGYpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikgX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKSBfX0MpLAogICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX3NldHplcm9fcGQoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2Ztc3ViYWRkX3BkKF9fbTEyOGQgX19BLCBfX21tYXNrOCBfX1UsIF9fbTEyOGQgX19CLCBfX20xMjhkIF9fQykKewogIHJldHVybiAoX19tMTI4ZCkgX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMTI4KChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgICAgIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHN1YnBkICgoX192MmRmKSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3YyZGYpIF9fQyksCiAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikgX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2Ztc3ViYWRkX3BkKF9fbW1hc2s4IF9fVSwgX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CLCBfX20xMjhkIF9fQykKewogIHJldHVybiAoX19tMTI4ZCkgX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMTI4KChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgICAgIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHN1YnBkICgoX192MmRmKSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3YyZGYpIF9fQyksCiAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfbW1fc2V0emVyb19wZCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfZm1hZGRzdWJfcGQoX19tMjU2ZCBfX0EsIF9fbW1hc2s4IF9fVSwgX19tMjU2ZCBfX0IsIF9fbTI1NmQgX19DKQp7CiAgcmV0dXJuIChfX20yNTZkKSBfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF8yNTYoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgX19idWlsdGluX2lhMzJfdmZtYWRkc3VicGQyNTYgKChfX3Y0ZGYpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZikgX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKSBfX0MpLAogICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpIF9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrM19mbWFkZHN1Yl9wZChfX20yNTZkIF9fQSwgX19tMjU2ZCBfX0IsIF9fbTI1NmQgX19DLCBfX21tYXNrOCBfX1UpCnsKICByZXR1cm4gKF9fbTI1NmQpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzI1NigoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICAgICBfX2J1aWx0aW5faWEzMl92Zm1hZGRzdWJwZDI1NiAoKF9fdjRkZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKSBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpIF9fQyksCiAgICAgICAgICAgICAgICAgICAgKF9fdjRkZikgX19DKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2ZtYWRkc3ViX3BkKF9fbW1hc2s4IF9fVSwgX19tMjU2ZCBfX0EsIF9fbTI1NmQgX19CLCBfX20yNTZkIF9fQykKewogIHJldHVybiAoX19tMjU2ZCkgX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMjU2KChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgICAgIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHN1YnBkMjU2ICgoX192NGRmKSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZikgX19DKSwKICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9tbTI1Nl9zZXR6ZXJvX3BkKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19mbXN1YmFkZF9wZChfX20yNTZkIF9fQSwgX19tbWFzazggX19VLCBfX20yNTZkIF9fQiwgX19tMjU2ZCBfX0MpCnsKICByZXR1cm4gKF9fbTI1NmQpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzI1NigoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICAgICBfX2J1aWx0aW5faWEzMl92Zm1hZGRzdWJwZDI1NiAoKF9fdjRkZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKSBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192NGRmKSBfX0MpLAogICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpIF9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9mbXN1YmFkZF9wZChfX21tYXNrOCBfX1UsIF9fbTI1NmQgX19BLCBfX20yNTZkIF9fQiwgX19tMjU2ZCBfX0MpCnsKICByZXR1cm4gKF9fbTI1NmQpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzI1NigoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICAgICBfX2J1aWx0aW5faWEzMl92Zm1hZGRzdWJwZDI1NiAoKF9fdjRkZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKSBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192NGRmKSBfX0MpLAogICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpX21tMjU2X3NldHplcm9fcGQoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfZm1hZGRzdWJfcHMoX19tMTI4IF9fQSwgX19tbWFzazggX19VLCBfX20xMjggX19CLCBfX20xMjggX19DKQp7CiAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzEyOCgoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICAgICBfX2J1aWx0aW5faWEzMl92Zm1hZGRzdWJwcyAoKF9fdjRzZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKSBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpIF9fQyksCiAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikgX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFzazNfZm1hZGRzdWJfcHMoX19tMTI4IF9fQSwgX19tMTI4IF9fQiwgX19tMTI4IF9fQywgX19tbWFzazggX19VKQp7CiAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzEyOCgoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICAgICBfX2J1aWx0aW5faWEzMl92Zm1hZGRzdWJwcyAoKF9fdjRzZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKSBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpIF9fQyksCiAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikgX19DKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfZm1hZGRzdWJfcHMoX19tbWFzazggX19VLCBfX20xMjggX19BLCBfX20xMjggX19CLCBfX20xMjggX19DKQp7CiAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzEyOCgoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICAgICBfX2J1aWx0aW5faWEzMl92Zm1hZGRzdWJwcyAoKF9fdjRzZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKSBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpIF9fQyksCiAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfbW1fc2V0emVyb19wcygpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19mbXN1YmFkZF9wcyhfX20xMjggX19BLCBfX21tYXNrOCBfX1UsIF9fbTEyOCBfX0IsIF9fbTEyOCBfX0MpCnsKICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMTI4KChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgICAgIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHN1YnBzICgoX192NHNmKSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3Y0c2YpIF9fQyksCiAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikgX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfZm1zdWJhZGRfcHMoX19tbWFzazggX19VLCBfX20xMjggX19BLCBfX20xMjggX19CLCBfX20xMjggX19DKQp7CiAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzEyOCgoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICAgICBfX2J1aWx0aW5faWEzMl92Zm1hZGRzdWJwcyAoKF9fdjRzZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKSBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192NHNmKSBfX0MpLAogICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX3NldHplcm9fcHMoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfZm1hZGRzdWJfcHMoX19tMjU2IF9fQSwgX19tbWFzazggX19VLCBfX20yNTYgX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgX19tMjU2IF9fQykKewogIHJldHVybiAoX19tMjU2KSBfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18yNTYoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgX19idWlsdGluX2lhMzJfdmZtYWRkc3VicHMyNTYgKChfX3Y4c2YpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZikgX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKSBfX0MpLAogICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpIF9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2szX2ZtYWRkc3ViX3BzKF9fbTI1NiBfX0EsIF9fbTI1NiBfX0IsIF9fbTI1NiBfX0MsIF9fbW1hc2s4IF9fVSkKewogIHJldHVybiAoX19tMjU2KSBfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18yNTYoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgX19idWlsdGluX2lhMzJfdmZtYWRkc3VicHMyNTYgKChfX3Y4c2YpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZikgX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKSBfX0MpLAogICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpIF9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2ZtYWRkc3ViX3BzKF9fbW1hc2s4IF9fVSwgX19tMjU2IF9fQSwgX19tMjU2IF9fQiwgX19tMjU2IF9fQykKewogIHJldHVybiAoX19tMjU2KSBfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18yNTYoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgX19idWlsdGluX2lhMzJfdmZtYWRkc3VicHMyNTYgKChfX3Y4c2YpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZikgX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKSBfX0MpLAogICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX21tMjU2X3NldHplcm9fcHMoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfZm1zdWJhZGRfcHMoX19tMjU2IF9fQSwgX19tbWFzazggX19VLCBfX20yNTYgX19CLCBfX20yNTYgX19DKQp7CiAgcmV0dXJuIChfX20yNTYpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzI1NigoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICAgICBfX2J1aWx0aW5faWEzMl92Zm1hZGRzdWJwczI1NiAoKF9fdjhzZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKSBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192OHNmKSBfX0MpLAogICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpIF9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2Ztc3ViYWRkX3BzKF9fbW1hc2s4IF9fVSwgX19tMjU2IF9fQSwgX19tMjU2IF9fQiwgX19tMjU2IF9fQykKewogIHJldHVybiAoX19tMjU2KSBfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18yNTYoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgX19idWlsdGluX2lhMzJfdmZtYWRkc3VicHMyNTYgKChfX3Y4c2YpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZikgX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjhzZikgX19DKSwKICAgICAgICAgICAgICAgICAgICAoX192OHNmKV9tbTI1Nl9zZXR6ZXJvX3BzKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFzazNfZm1zdWJfcGQoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CLCBfX20xMjhkIF9fQywgX19tbWFzazggX19VKQp7CiAgcmV0dXJuIChfX20xMjhkKSBfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF8xMjgoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgX19idWlsdGluX2lhMzJfdmZtYWRkcGQgKChfX3YyZGYpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikgX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjJkZikgX19DKSwKICAgICAgICAgICAgICAgICAgICAoX192MmRmKSBfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFzazNfZm1zdWJfcGQoX19tMjU2ZCBfX0EsIF9fbTI1NmQgX19CLCBfX20yNTZkIF9fQywgX19tbWFzazggX19VKQp7CiAgcmV0dXJuIChfX20yNTZkKSBfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF8yNTYoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgX19idWlsdGluX2lhMzJfdmZtYWRkcGQyNTYgKChfX3Y0ZGYpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZikgX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjRkZikgX19DKSwKICAgICAgICAgICAgICAgICAgICAoX192NGRmKSBfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrM19mbXN1Yl9wcyhfX20xMjggX19BLCBfX20xMjggX19CLCBfX20xMjggX19DLCBfX21tYXNrOCBfX1UpCnsKICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMTI4KChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgICAgIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBzICgoX192NHNmKSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3Y0c2YpIF9fQyksCiAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikgX19DKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFzazNfZm1zdWJfcHMoX19tMjU2IF9fQSwgX19tMjU2IF9fQiwgX19tMjU2IF9fQywgX19tbWFzazggX19VKQp7CiAgcmV0dXJuIChfX20yNTYpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzI1NigoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICAgICBfX2J1aWx0aW5faWEzMl92Zm1hZGRwczI1NiAoKF9fdjhzZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKSBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192OHNmKSBfX0MpLAogICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpIF9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrM19mbXN1YmFkZF9wZChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IsIF9fbTEyOGQgX19DLCBfX21tYXNrOCBfX1UpCnsKICByZXR1cm4gKF9fbTEyOGQpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzEyOCgoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICAgICBfX2J1aWx0aW5faWEzMl92Zm1hZGRzdWJwZCAoKF9fdjJkZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKSBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192MmRmKSBfX0MpLAogICAgICAgICAgICAgICAgICAgIChfX3YyZGYpIF9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrM19mbXN1YmFkZF9wZChfX20yNTZkIF9fQSwgX19tMjU2ZCBfX0IsIF9fbTI1NmQgX19DLCBfX21tYXNrOCBfX1UpCnsKICByZXR1cm4gKF9fbTI1NmQpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzI1NigoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICAgICBfX2J1aWx0aW5faWEzMl92Zm1hZGRzdWJwZDI1NiAoKF9fdjRkZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKSBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192NGRmKSBfX0MpLAogICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpIF9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2szX2Ztc3ViYWRkX3BzKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IsIF9fbTEyOCBfX0MsIF9fbW1hc2s4IF9fVSkKewogIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18xMjgoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgX19idWlsdGluX2lhMzJfdmZtYWRkc3VicHMgKChfX3Y0c2YpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikgX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjRzZikgX19DKSwKICAgICAgICAgICAgICAgICAgICAoX192NHNmKSBfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrM19mbXN1YmFkZF9wcyhfX20yNTYgX19BLCBfX20yNTYgX19CLCBfX20yNTYgX19DLCBfX21tYXNrOCBfX1UpCnsKICByZXR1cm4gKF9fbTI1NikgX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMjU2KChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgICAgIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHN1YnBzMjU2ICgoX192OHNmKSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3Y4c2YpIF9fQyksCiAgICAgICAgICAgICAgICAgICAgKF9fdjhzZikgX19DKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfZm5tYWRkX3BkKF9fbTEyOGQgX19BLCBfX21tYXNrOCBfX1UsIF9fbTEyOGQgX19CLCBfX20xMjhkIF9fQykKewogIHJldHVybiAoX19tMTI4ZCkgX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMTI4KChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgICAgIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBkICgoX192MmRmKSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192MmRmKSBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpIF9fQyksCiAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikgX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfZm5tYWRkX3BkKF9fbTI1NmQgX19BLCBfX21tYXNrOCBfX1UsIF9fbTI1NmQgX19CLCBfX20yNTZkIF9fQykKewogIHJldHVybiAoX19tMjU2ZCkgX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMjU2KChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgICAgIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBkMjU2ICgoX192NGRmKSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192NGRmKSBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpIF9fQyksCiAgICAgICAgICAgICAgICAgICAgKF9fdjRkZikgX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19mbm1hZGRfcHMoX19tMTI4IF9fQSwgX19tbWFzazggX19VLCBfX20xMjggX19CLCBfX20xMjggX19DKQp7CiAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzEyOCgoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICAgICBfX2J1aWx0aW5faWEzMl92Zm1hZGRwcyAoKF9fdjRzZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjRzZikgX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKSBfX0MpLAogICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpIF9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfZm5tYWRkX3BzKF9fbTI1NiBfX0EsIF9fbW1hc2s4IF9fVSwgX19tMjU2IF9fQiwgX19tMjU2IF9fQykKewogIHJldHVybiAoX19tMjU2KSBfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18yNTYoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgX19idWlsdGluX2lhMzJfdmZtYWRkcHMyNTYgKChfX3Y4c2YpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3Y4c2YpIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZikgX19DKSwKICAgICAgICAgICAgICAgICAgICAoX192OHNmKSBfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19mbm1zdWJfcGQoX19tMTI4ZCBfX0EsIF9fbW1hc2s4IF9fVSwgX19tMTI4ZCBfX0IsIF9fbTEyOGQgX19DKQp7CiAgcmV0dXJuIChfX20xMjhkKSBfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF8xMjgoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgX19idWlsdGluX2lhMzJfdmZtYWRkcGQgKChfX3YyZGYpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3YyZGYpIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3YyZGYpIF9fQyksCiAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikgX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2szX2ZubXN1Yl9wZChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IsIF9fbTEyOGQgX19DLCBfX21tYXNrOCBfX1UpCnsKICByZXR1cm4gKF9fbTEyOGQpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzEyOCgoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICAgICBfX2J1aWx0aW5faWEzMl92Zm1hZGRwZCAoKF9fdjJkZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjJkZikgX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjJkZikgX19DKSwKICAgICAgICAgICAgICAgICAgICAoX192MmRmKSBfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19mbm1zdWJfcGQoX19tMjU2ZCBfX0EsIF9fbW1hc2s4IF9fVSwgX19tMjU2ZCBfX0IsIF9fbTI1NmQgX19DKQp7CiAgcmV0dXJuIChfX20yNTZkKSBfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF8yNTYoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgX19idWlsdGluX2lhMzJfdmZtYWRkcGQyNTYgKChfX3Y0ZGYpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3Y0ZGYpIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3Y0ZGYpIF9fQyksCiAgICAgICAgICAgICAgICAgICAgKF9fdjRkZikgX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2szX2ZubXN1Yl9wZChfX20yNTZkIF9fQSwgX19tMjU2ZCBfX0IsIF9fbTI1NmQgX19DLCBfX21tYXNrOCBfX1UpCnsKICByZXR1cm4gKF9fbTI1NmQpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzI1NigoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICAgICBfX2J1aWx0aW5faWEzMl92Zm1hZGRwZDI1NiAoKF9fdjRkZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjRkZikgX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjRkZikgX19DKSwKICAgICAgICAgICAgICAgICAgICAoX192NGRmKSBfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2ZubXN1Yl9wcyhfX20xMjggX19BLCBfX21tYXNrOCBfX1UsIF9fbTEyOCBfX0IsIF9fbTEyOCBfX0MpCnsKICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMTI4KChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgICAgIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBzICgoX192NHNmKSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192NHNmKSBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192NHNmKSBfX0MpLAogICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpIF9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2szX2ZubXN1Yl9wcyhfX20xMjggX19BLCBfX20xMjggX19CLCBfX20xMjggX19DLCBfX21tYXNrOCBfX1UpCnsKICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMTI4KChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgICAgIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBzICgoX192NHNmKSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192NHNmKSBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192NHNmKSBfX0MpLAogICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpIF9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfZm5tc3ViX3BzKF9fbTI1NiBfX0EsIF9fbW1hc2s4IF9fVSwgX19tMjU2IF9fQiwgX19tMjU2IF9fQykKewogIHJldHVybiAoX19tMjU2KSBfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18yNTYoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgX19idWlsdGluX2lhMzJfdmZtYWRkcHMyNTYgKChfX3Y4c2YpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3Y4c2YpIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3Y4c2YpIF9fQyksCiAgICAgICAgICAgICAgICAgICAgKF9fdjhzZikgX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFzazNfZm5tc3ViX3BzKF9fbTI1NiBfX0EsIF9fbTI1NiBfX0IsIF9fbTI1NiBfX0MsIF9fbW1hc2s4IF9fVSkKewogIHJldHVybiAoX19tMjU2KSBfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18yNTYoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgX19idWlsdGluX2lhMzJfdmZtYWRkcHMyNTYgKChfX3Y4c2YpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3Y4c2YpIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3Y4c2YpIF9fQyksCiAgICAgICAgICAgICAgICAgICAgKF9fdjhzZikgX19DKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfYWRkX3BkKF9fbTEyOGQgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikgewogIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX2FkZF9wZChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9hZGRfcGQoX19tbWFzazggX19VLCBfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpIHsKICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9tbV9hZGRfcGQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfbW1fc2V0emVyb19wZCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfYWRkX3BkKF9fbTI1NmQgX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NmQgX19BLCBfX20yNTZkIF9fQikgewogIHJldHVybiAoX19tMjU2ZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF8yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpX21tMjU2X2FkZF9wZChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9hZGRfcGQoX19tbWFzazggX19VLCBfX20yNTZkIF9fQSwgX19tMjU2ZCBfX0IpIHsKICByZXR1cm4gKF9fbTI1NmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9tbTI1Nl9hZGRfcGQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZilfbW0yNTZfc2V0emVyb19wZCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19hZGRfcHMoX19tMTI4IF9fVywgX19tbWFzazggX19VLCBfX20xMjggX19BLCBfX20xMjggX19CKSB7CiAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX2FkZF9wcyhfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfYWRkX3BzKF9fbW1hc2s4IF9fVSwgX19tMTI4IF9fQSwgX19tMTI4IF9fQikgewogIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9tbV9hZGRfcHMoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9tbV9zZXR6ZXJvX3BzKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2FkZF9wcyhfX20yNTYgX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NiBfX0EsIF9fbTI1NiBfX0IpIHsKICByZXR1cm4gKF9fbTI1NilfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZilfbW0yNTZfYWRkX3BzKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9hZGRfcHMoX19tbWFzazggX19VLCBfX20yNTYgX19BLCBfX20yNTYgX19CKSB7CiAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX21tMjU2X2FkZF9wcyhfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX21tMjU2X3NldHplcm9fcHMoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2JsZW5kX2VwaTMyIChfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fVykgewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfc2VsZWN0ZF8xMjggKChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgKF9fdjRzaSkgX19XLAogICAgICAgICAgICAgICAgKF9fdjRzaSkgX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfYmxlbmRfZXBpMzIgKF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19XKSB7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzI1NiAoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAoX192OHNpKSBfX1csCiAgICAgICAgICAgICAgICAoX192OHNpKSBfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19ibGVuZF9wZCAoX19tbWFzazggX19VLCBfX20xMjhkIF9fQSwgX19tMTI4ZCBfX1cpIHsKICByZXR1cm4gKF9fbTEyOGQpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzEyOCAoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgKF9fdjJkZikgX19XLAogICAgICAgICAgICAgICAgIChfX3YyZGYpIF9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2JsZW5kX3BkIChfX21tYXNrOCBfX1UsIF9fbTI1NmQgX19BLCBfX20yNTZkIF9fVykgewogIHJldHVybiAoX19tMjU2ZCkgX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMjU2ICgoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICAoX192NGRmKSBfX1csCiAgICAgICAgICAgICAgICAgKF9fdjRkZikgX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19ibGVuZF9wcyAoX19tbWFzazggX19VLCBfX20xMjggX19BLCBfX20xMjggX19XKSB7CiAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzEyOCAoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAoX192NHNmKSBfX1csCiAgICAgICAgICAgICAgICAoX192NHNmKSBfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2JsZW5kX3BzIChfX21tYXNrOCBfX1UsIF9fbTI1NiBfX0EsIF9fbTI1NiBfX1cpIHsKICByZXR1cm4gKF9fbTI1NikgX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMjU2ICgoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgIChfX3Y4c2YpIF9fVywKICAgICAgICAgICAgICAgIChfX3Y4c2YpIF9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2JsZW5kX2VwaTY0IChfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fVykgewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfc2VsZWN0cV8xMjggKChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgKF9fdjJkaSkgX19XLAogICAgICAgICAgICAgICAgKF9fdjJkaSkgX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfYmxlbmRfZXBpNjQgKF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19XKSB7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzI1NiAoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAoX192NGRpKSBfX1csCiAgICAgICAgICAgICAgICAoX192NGRpKSBfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19jb21wcmVzc19wZCAoX19tMTI4ZCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4ZCBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGQpIF9fYnVpbHRpbl9pYTMyX2NvbXByZXNzZGYxMjhfbWFzayAoKF9fdjJkZikgX19BLAogICAgICAgICAgICAgICAgICAoX192MmRmKSBfX1csCiAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2NvbXByZXNzX3BkIChfX21tYXNrOCBfX1UsIF9fbTEyOGQgX19BKSB7CiAgcmV0dXJuIChfX20xMjhkKSBfX2J1aWx0aW5faWEzMl9jb21wcmVzc2RmMTI4X21hc2sgKChfX3YyZGYpIF9fQSwKICAgICAgICAgICAgICAgICAgKF9fdjJkZikKICAgICAgICAgICAgICAgICAgX21tX3NldHplcm9fcGQgKCksCiAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfY29tcHJlc3NfcGQgKF9fbTI1NmQgX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NmQgX19BKSB7CiAgcmV0dXJuIChfX20yNTZkKSBfX2J1aWx0aW5faWEzMl9jb21wcmVzc2RmMjU2X21hc2sgKChfX3Y0ZGYpIF9fQSwKICAgICAgICAgICAgICAgICAgKF9fdjRkZikgX19XLAogICAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9jb21wcmVzc19wZCAoX19tbWFzazggX19VLCBfX20yNTZkIF9fQSkgewogIHJldHVybiAoX19tMjU2ZCkgX19idWlsdGluX2lhMzJfY29tcHJlc3NkZjI1Nl9tYXNrICgoX192NGRmKSBfX0EsCiAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpCiAgICAgICAgICAgICAgICAgIF9tbTI1Nl9zZXR6ZXJvX3BkICgpLAogICAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2NvbXByZXNzX2VwaTY0IChfX20xMjhpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkgewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfY29tcHJlc3NkaTEyOF9tYXNrICgoX192MmRpKSBfX0EsCiAgICAgICAgICAgICAgICAgIChfX3YyZGkpIF9fVywKICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfY29tcHJlc3NfZXBpNjQgKF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX2NvbXByZXNzZGkxMjhfbWFzayAoKF9fdjJkaSkgX19BLAogICAgICAgICAgICAgICAgICAoX192MmRpKQogICAgICAgICAgICAgICAgICBfbW1fc2V0emVyb19zaTEyOCAoKSwKICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19jb21wcmVzc19lcGk2NCAoX19tMjU2aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX2NvbXByZXNzZGkyNTZfbWFzayAoKF9fdjRkaSkgX19BLAogICAgICAgICAgICAgICAgICAoX192NGRpKSBfX1csCiAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2NvbXByZXNzX2VwaTY0IChfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19BKSB7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl9jb21wcmVzc2RpMjU2X21hc2sgKChfX3Y0ZGkpIF9fQSwKICAgICAgICAgICAgICAgICAgKF9fdjRkaSkKICAgICAgICAgICAgICAgICAgX21tMjU2X3NldHplcm9fc2kyNTYgKCksCiAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19jb21wcmVzc19wcyAoX19tMTI4IF9fVywgX19tbWFzazggX19VLCBfX20xMjggX19BKSB7CiAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX2NvbXByZXNzc2YxMjhfbWFzayAoKF9fdjRzZikgX19BLAogICAgICAgICAgICAgICAgIChfX3Y0c2YpIF9fVywKICAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2NvbXByZXNzX3BzIChfX21tYXNrOCBfX1UsIF9fbTEyOCBfX0EpIHsKICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfY29tcHJlc3NzZjEyOF9tYXNrICgoX192NHNmKSBfX0EsCiAgICAgICAgICAgICAgICAgKF9fdjRzZikKICAgICAgICAgICAgICAgICBfbW1fc2V0emVyb19wcyAoKSwKICAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfY29tcHJlc3NfcHMgKF9fbTI1NiBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2IF9fQSkgewogIHJldHVybiAoX19tMjU2KSBfX2J1aWx0aW5faWEzMl9jb21wcmVzc3NmMjU2X21hc2sgKChfX3Y4c2YpIF9fQSwKICAgICAgICAgICAgICAgICAoX192OHNmKSBfX1csCiAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9jb21wcmVzc19wcyAoX19tbWFzazggX19VLCBfX20yNTYgX19BKSB7CiAgcmV0dXJuIChfX20yNTYpIF9fYnVpbHRpbl9pYTMyX2NvbXByZXNzc2YyNTZfbWFzayAoKF9fdjhzZikgX19BLAogICAgICAgICAgICAgICAgIChfX3Y4c2YpCiAgICAgICAgICAgICAgICAgX21tMjU2X3NldHplcm9fcHMgKCksCiAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19jb21wcmVzc19lcGkzMiAoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX2NvbXByZXNzc2kxMjhfbWFzayAoKF9fdjRzaSkgX19BLAogICAgICAgICAgICAgICAgICAoX192NHNpKSBfX1csCiAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2NvbXByZXNzX2VwaTMyIChfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BKSB7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9jb21wcmVzc3NpMTI4X21hc2sgKChfX3Y0c2kpIF9fQSwKICAgICAgICAgICAgICAgICAgKF9fdjRzaSkKICAgICAgICAgICAgICAgICAgX21tX3NldHplcm9fc2kxMjggKCksCiAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfY29tcHJlc3NfZXBpMzIgKF9fbTI1NmkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19BKSB7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl9jb21wcmVzc3NpMjU2X21hc2sgKChfX3Y4c2kpIF9fQSwKICAgICAgICAgICAgICAgICAgKF9fdjhzaSkgX19XLAogICAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9jb21wcmVzc19lcGkzMiAoX19tbWFzazggX19VLCBfX20yNTZpIF9fQSkgewogIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfY29tcHJlc3NzaTI1Nl9tYXNrICgoX192OHNpKSBfX0EsCiAgICAgICAgICAgICAgICAgIChfX3Y4c2kpCiAgICAgICAgICAgICAgICAgIF9tbTI1Nl9zZXR6ZXJvX3NpMjU2ICgpLAogICAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2NvbXByZXNzc3RvcmV1X3BkICh2b2lkICpfX1AsIF9fbW1hc2s4IF9fVSwgX19tMTI4ZCBfX0EpIHsKICBfX2J1aWx0aW5faWEzMl9jb21wcmVzc3N0b3JlZGYxMjhfbWFzayAoKF9fdjJkZiAqKSBfX1AsCiAgICAgICAgICAgIChfX3YyZGYpIF9fQSwKICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19jb21wcmVzc3N0b3JldV9wZCAodm9pZCAqX19QLCBfX21tYXNrOCBfX1UsIF9fbTI1NmQgX19BKSB7CiAgX19idWlsdGluX2lhMzJfY29tcHJlc3NzdG9yZWRmMjU2X21hc2sgKChfX3Y0ZGYgKikgX19QLAogICAgICAgICAgICAoX192NGRmKSBfX0EsCiAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfY29tcHJlc3NzdG9yZXVfZXBpNjQgKHZvaWQgKl9fUCwgX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkgewogIF9fYnVpbHRpbl9pYTMyX2NvbXByZXNzc3RvcmVkaTEyOF9tYXNrICgoX192MmRpICopIF9fUCwKICAgICAgICAgICAgKF9fdjJkaSkgX19BLAogICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2NvbXByZXNzc3RvcmV1X2VwaTY0ICh2b2lkICpfX1AsIF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EpIHsKICBfX2J1aWx0aW5faWEzMl9jb21wcmVzc3N0b3JlZGkyNTZfbWFzayAoKF9fdjRkaSAqKSBfX1AsCiAgICAgICAgICAgIChfX3Y0ZGkpIF9fQSwKICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19jb21wcmVzc3N0b3JldV9wcyAodm9pZCAqX19QLCBfX21tYXNrOCBfX1UsIF9fbTEyOCBfX0EpIHsKICBfX2J1aWx0aW5faWEzMl9jb21wcmVzc3N0b3Jlc2YxMjhfbWFzayAoKF9fdjRzZiAqKSBfX1AsCiAgICAgICAgICAgIChfX3Y0c2YpIF9fQSwKICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19jb21wcmVzc3N0b3JldV9wcyAodm9pZCAqX19QLCBfX21tYXNrOCBfX1UsIF9fbTI1NiBfX0EpIHsKICBfX2J1aWx0aW5faWEzMl9jb21wcmVzc3N0b3Jlc2YyNTZfbWFzayAoKF9fdjhzZiAqKSBfX1AsCiAgICAgICAgICAgIChfX3Y4c2YpIF9fQSwKICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19jb21wcmVzc3N0b3JldV9lcGkzMiAodm9pZCAqX19QLCBfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BKSB7CiAgX19idWlsdGluX2lhMzJfY29tcHJlc3NzdG9yZXNpMTI4X21hc2sgKChfX3Y0c2kgKikgX19QLAogICAgICAgICAgICAoX192NHNpKSBfX0EsCiAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfY29tcHJlc3NzdG9yZXVfZXBpMzIgKHZvaWQgKl9fUCwgX19tbWFzazggX19VLCBfX20yNTZpIF9fQSkgewogIF9fYnVpbHRpbl9pYTMyX2NvbXByZXNzc3RvcmVzaTI1Nl9tYXNrICgoX192OHNpICopIF9fUCwKICAgICAgICAgICAgKF9fdjhzaSkgX19BLAogICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2N2dGVwaTMyX3BkIChfX20xMjhkIF9fVywgX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkgewogIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF8xMjgoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9tbV9jdnRlcGkzMl9wZChfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfY3Z0ZXBpMzJfcGQgKF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMTI4KChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfbW1fY3Z0ZXBpMzJfcGQoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX3NldHplcm9fcGQoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2N2dGVwaTMyX3BkIChfX20yNTZkIF9fVywgX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkgewogIHJldHVybiAoX19tMjU2ZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF8yNTYoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9tbTI1Nl9jdnRlcGkzMl9wZChfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfY3Z0ZXBpMzJfcGQgKF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMjU2KChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZilfbW0yNTZfY3Z0ZXBpMzJfcGQoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpX21tMjU2X3NldHplcm9fcGQoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfY3Z0ZXBpMzJfcHMgKF9fbTEyOCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EpIHsKICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfbW1fY3Z0ZXBpMzJfcHMoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9jdnRlcGkzMl9wcyAoX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkgewogIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9tbV9jdnRlcGkzMl9wcyhfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9tbV9zZXR6ZXJvX3BzKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2N2dGVwaTMyX3BzIChfX20yNTYgX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19BKSB7CiAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX21tMjU2X2N2dGVwaTMyX3BzKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfY3Z0ZXBpMzJfcHMgKF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EpIHsKICByZXR1cm4gKF9fbTI1NilfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZilfbW0yNTZfY3Z0ZXBpMzJfcHMoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZilfbW0yNTZfc2V0emVyb19wcygpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfY3Z0cGRfZXBpMzIgKF9fbTEyOGkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGQgX19BKSB7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9jdnRwZDJkcTEyOF9tYXNrICgoX192MmRmKSBfX0EsCiAgICAgICAgICAgICAgICAoX192NHNpKSBfX1csCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9jdnRwZF9lcGkzMiAoX19tbWFzazggX19VLCBfX20xMjhkIF9fQSkgewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfY3Z0cGQyZHExMjhfbWFzayAoKF9fdjJkZikgX19BLAogICAgICAgICAgICAgICAgKF9fdjRzaSkKICAgICAgICAgICAgICAgIF9tbV9zZXR6ZXJvX3NpMTI4ICgpLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19jdnRwZF9lcGkzMiAoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2ZCBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfbW0yNTZfY3Z0cGRfZXBpMzIoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfY3Z0cGRfZXBpMzIgKF9fbW1hc2s4IF9fVSwgX19tMjU2ZCBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfbW0yNTZfY3Z0cGRfZXBpMzIoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19jdnRwZF9wcyAoX19tMTI4IF9fVywgX19tbWFzazggX19VLCBfX20xMjhkIF9fQSkgewogIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9jdnRwZDJwc19tYXNrICgoX192MmRmKSBfX0EsCiAgICAgICAgICAgIChfX3Y0c2YpIF9fVywKICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9jdnRwZF9wcyAoX19tbWFzazggX19VLCBfX20xMjhkIF9fQSkgewogIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9jdnRwZDJwc19tYXNrICgoX192MmRmKSBfX0EsCiAgICAgICAgICAgIChfX3Y0c2YpCiAgICAgICAgICAgIF9tbV9zZXR6ZXJvX3BzICgpLAogICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfY3Z0cGRfcHMgKF9fbTEyOCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2ZCBfX0EpIHsKICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfbW0yNTZfY3Z0cGRfcHMoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9jdnRwZF9wcyAoX19tbWFzazggX19VLCBfX20yNTZkIF9fQSkgewogIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9tbTI1Nl9jdnRwZF9wcyhfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9tbV9zZXR6ZXJvX3BzKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fY3Z0cGRfZXB1MzIgKF9fbTEyOGQgX19BKSB7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9jdnRwZDJ1ZHExMjhfbWFzayAoKF9fdjJkZikgX19BLAogICAgICAgICAgICAgICAgIChfX3Y0c2kpCiAgICAgICAgICAgICAgICAgX21tX3NldHplcm9fc2kxMjggKCksCiAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSAtMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2N2dHBkX2VwdTMyIChfX20xMjhpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhkIF9fQSkgewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfY3Z0cGQydWRxMTI4X21hc2sgKChfX3YyZGYpIF9fQSwKICAgICAgICAgICAgICAgICAoX192NHNpKSBfX1csCiAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfY3Z0cGRfZXB1MzIgKF9fbW1hc2s4IF9fVSwgX19tMTI4ZCBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX2N2dHBkMnVkcTEyOF9tYXNrICgoX192MmRmKSBfX0EsCiAgICAgICAgICAgICAgICAgKF9fdjRzaSkKICAgICAgICAgICAgICAgICBfbW1fc2V0emVyb19zaTEyOCAoKSwKICAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9jdnRwZF9lcHUzMiAoX19tMjU2ZCBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX2N2dHBkMnVkcTI1Nl9tYXNrICgoX192NGRmKSBfX0EsCiAgICAgICAgICAgICAgICAgKF9fdjRzaSkKICAgICAgICAgICAgICAgICBfbW1fc2V0emVyb19zaTEyOCAoKSwKICAgICAgICAgICAgICAgICAoX19tbWFzazgpIC0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfY3Z0cGRfZXB1MzIgKF9fbTEyOGkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NmQgX19BKSB7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9jdnRwZDJ1ZHEyNTZfbWFzayAoKF9fdjRkZikgX19BLAogICAgICAgICAgICAgICAgIChfX3Y0c2kpIF9fVywKICAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9jdnRwZF9lcHUzMiAoX19tbWFzazggX19VLCBfX20yNTZkIF9fQSkgewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfY3Z0cGQydWRxMjU2X21hc2sgKChfX3Y0ZGYpIF9fQSwKICAgICAgICAgICAgICAgICAoX192NHNpKQogICAgICAgICAgICAgICAgIF9tbV9zZXR6ZXJvX3NpMTI4ICgpLAogICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfY3Z0cHNfZXBpMzIgKF9fbTEyOGkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOCBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfbW1fY3Z0cHNfZXBpMzIoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfY3Z0cHNfZXBpMzIgKF9fbW1hc2s4IF9fVSwgX19tMTI4IF9fQSkgewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9jdnRwc19lcGkzMihfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19jdnRwc19lcGkzMiAoX19tMjU2aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2IF9fQSkgewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9jdnRwc19lcGkzMihfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9jdnRwc19lcGkzMiAoX19tbWFzazggX19VLCBfX20yNTYgX19BKSB7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X2N2dHBzX2VwaTMyKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X3NldHplcm9fc2kyNTYoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2N2dHBzX3BkIChfX20xMjhkIF9fVywgX19tbWFzazggX19VLCBfX20xMjggX19BKSB7CiAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfbW1fY3Z0cHNfcGQoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2N2dHBzX3BkIChfX21tYXNrOCBfX1UsIF9fbTEyOCBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9tbV9jdnRwc19wZChfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfbW1fc2V0emVyb19wZCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfY3Z0cHNfcGQgKF9fbTI1NmQgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOCBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9tbTI1Nl9jdnRwc19wZChfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfY3Z0cHNfcGQgKF9fbW1hc2s4IF9fVSwgX19tMTI4IF9fQSkgewogIHJldHVybiAoX19tMjU2ZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF8yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpX21tMjU2X2N2dHBzX3BkKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9tbTI1Nl9zZXR6ZXJvX3BkKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fY3Z0cHNfZXB1MzIgKF9fbTEyOCBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX2N2dHBzMnVkcTEyOF9tYXNrICgoX192NHNmKSBfX0EsCiAgICAgICAgICAgICAgICAgKF9fdjRzaSkKICAgICAgICAgICAgICAgICBfbW1fc2V0emVyb19zaTEyOCAoKSwKICAgICAgICAgICAgICAgICAoX19tbWFzazgpIC0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfY3Z0cHNfZXB1MzIgKF9fbTEyOGkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOCBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX2N2dHBzMnVkcTEyOF9tYXNrICgoX192NHNmKSBfX0EsCiAgICAgICAgICAgICAgICAgKF9fdjRzaSkgX19XLAogICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2N2dHBzX2VwdTMyIChfX21tYXNrOCBfX1UsIF9fbTEyOCBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX2N2dHBzMnVkcTEyOF9tYXNrICgoX192NHNmKSBfX0EsCiAgICAgICAgICAgICAgICAgKF9fdjRzaSkKICAgICAgICAgICAgICAgICBfbW1fc2V0emVyb19zaTEyOCAoKSwKICAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9jdnRwc19lcHUzMiAoX19tMjU2IF9fQSkgewogIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfY3Z0cHMydWRxMjU2X21hc2sgKChfX3Y4c2YpIF9fQSwKICAgICAgICAgICAgICAgICAoX192OHNpKQogICAgICAgICAgICAgICAgIF9tbTI1Nl9zZXR6ZXJvX3NpMjU2ICgpLAogICAgICAgICAgICAgICAgIChfX21tYXNrOCkgLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19jdnRwc19lcHUzMiAoX19tMjU2aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2IF9fQSkgewogIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfY3Z0cHMydWRxMjU2X21hc2sgKChfX3Y4c2YpIF9fQSwKICAgICAgICAgICAgICAgICAoX192OHNpKSBfX1csCiAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfY3Z0cHNfZXB1MzIgKF9fbW1hc2s4IF9fVSwgX19tMjU2IF9fQSkgewogIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfY3Z0cHMydWRxMjU2X21hc2sgKChfX3Y4c2YpIF9fQSwKICAgICAgICAgICAgICAgICAoX192OHNpKQogICAgICAgICAgICAgICAgIF9tbTI1Nl9zZXR6ZXJvX3NpMjU2ICgpLAogICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfY3Z0dHBkX2VwaTMyIChfX20xMjhpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhkIF9fQSkgewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfY3Z0dHBkMmRxMTI4X21hc2sgKChfX3YyZGYpIF9fQSwKICAgICAgICAgICAgICAgICAoX192NHNpKSBfX1csCiAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfY3Z0dHBkX2VwaTMyIChfX21tYXNrOCBfX1UsIF9fbTEyOGQgX19BKSB7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9jdnR0cGQyZHExMjhfbWFzayAoKF9fdjJkZikgX19BLAogICAgICAgICAgICAgICAgIChfX3Y0c2kpCiAgICAgICAgICAgICAgICAgX21tX3NldHplcm9fc2kxMjggKCksCiAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19jdnR0cGRfZXBpMzIgKF9fbTEyOGkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NmQgX19BKSB7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tMjU2X2N2dHRwZF9lcGkzMihfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9jdnR0cGRfZXBpMzIgKF9fbW1hc2s4IF9fVSwgX19tMjU2ZCBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfbW0yNTZfY3Z0dHBkX2VwaTMyKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX3NldHplcm9fc2kxMjgoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9jdnR0cGRfZXB1MzIgKF9fbTEyOGQgX19BKSB7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9jdnR0cGQydWRxMTI4X21hc2sgKChfX3YyZGYpIF9fQSwKICAgICAgICAgICAgICAgICAgKF9fdjRzaSkKICAgICAgICAgICAgICAgICAgX21tX3NldHplcm9fc2kxMjggKCksCiAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkgLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19jdnR0cGRfZXB1MzIgKF9fbTEyOGkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGQgX19BKSB7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9jdnR0cGQydWRxMTI4X21hc2sgKChfX3YyZGYpIF9fQSwKICAgICAgICAgICAgICAgICAgKF9fdjRzaSkgX19XLAogICAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9jdnR0cGRfZXB1MzIgKF9fbW1hc2s4IF9fVSwgX19tMTI4ZCBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX2N2dHRwZDJ1ZHExMjhfbWFzayAoKF9fdjJkZikgX19BLAogICAgICAgICAgICAgICAgICAoX192NHNpKQogICAgICAgICAgICAgICAgICBfbW1fc2V0emVyb19zaTEyOCAoKSwKICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfY3Z0dHBkX2VwdTMyIChfX20yNTZkIF9fQSkgewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfY3Z0dHBkMnVkcTI1Nl9tYXNrICgoX192NGRmKSBfX0EsCiAgICAgICAgICAgICAgICAgIChfX3Y0c2kpCiAgICAgICAgICAgICAgICAgIF9tbV9zZXR6ZXJvX3NpMTI4ICgpLAogICAgICAgICAgICAgICAgICAoX19tbWFzazgpIC0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfY3Z0dHBkX2VwdTMyIChfX20xMjhpIF9fVywgX19tbWFzazggX19VLCBfX20yNTZkIF9fQSkgewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfY3Z0dHBkMnVkcTI1Nl9tYXNrICgoX192NGRmKSBfX0EsCiAgICAgICAgICAgICAgICAgIChfX3Y0c2kpIF9fVywKICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfY3Z0dHBkX2VwdTMyIChfX21tYXNrOCBfX1UsIF9fbTI1NmQgX19BKSB7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9jdnR0cGQydWRxMjU2X21hc2sgKChfX3Y0ZGYpIF9fQSwKICAgICAgICAgICAgICAgICAgKF9fdjRzaSkKICAgICAgICAgICAgICAgICAgX21tX3NldHplcm9fc2kxMjggKCksCiAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfY3Z0dHBzX2VwaTMyIChfX20xMjhpIF9fVywgX19tbWFzazggX19VLCBfX20xMjggX19BKSB7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX2N2dHRwc19lcGkzMihfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9jdnR0cHNfZXBpMzIgKF9fbW1hc2s4IF9fVSwgX19tMTI4IF9fQSkgewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9jdnR0cHNfZXBpMzIoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfY3Z0dHBzX2VwaTMyIChfX20yNTZpIF9fVywgX19tbWFzazggX19VLCBfX20yNTYgX19BKSB7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X2N2dHRwc19lcGkzMihfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9jdnR0cHNfZXBpMzIgKF9fbW1hc2s4IF9fVSwgX19tMjU2IF9fQSkgewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9jdnR0cHNfZXBpMzIoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX2N2dHRwc19lcHUzMiAoX19tMTI4IF9fQSkgewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfY3Z0dHBzMnVkcTEyOF9tYXNrICgoX192NHNmKSBfX0EsCiAgICAgICAgICAgICAgICAgIChfX3Y0c2kpCiAgICAgICAgICAgICAgICAgIF9tbV9zZXR6ZXJvX3NpMTI4ICgpLAogICAgICAgICAgICAgICAgICAoX19tbWFzazgpIC0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfY3Z0dHBzX2VwdTMyIChfX20xMjhpIF9fVywgX19tbWFzazggX19VLCBfX20xMjggX19BKSB7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9jdnR0cHMydWRxMTI4X21hc2sgKChfX3Y0c2YpIF9fQSwKICAgICAgICAgICAgICAgICAgKF9fdjRzaSkgX19XLAogICAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9jdnR0cHNfZXB1MzIgKF9fbW1hc2s4IF9fVSwgX19tMTI4IF9fQSkgewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfY3Z0dHBzMnVkcTEyOF9tYXNrICgoX192NHNmKSBfX0EsCiAgICAgICAgICAgICAgICAgIChfX3Y0c2kpCiAgICAgICAgICAgICAgICAgIF9tbV9zZXR6ZXJvX3NpMTI4ICgpLAogICAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9jdnR0cHNfZXB1MzIgKF9fbTI1NiBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX2N2dHRwczJ1ZHEyNTZfbWFzayAoKF9fdjhzZikgX19BLAogICAgICAgICAgICAgICAgICAoX192OHNpKQogICAgICAgICAgICAgICAgICBfbW0yNTZfc2V0emVyb19zaTI1NiAoKSwKICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSAtMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2N2dHRwc19lcHUzMiAoX19tMjU2aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2IF9fQSkgewogIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfY3Z0dHBzMnVkcTI1Nl9tYXNrICgoX192OHNmKSBfX0EsCiAgICAgICAgICAgICAgICAgIChfX3Y4c2kpIF9fVywKICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfY3Z0dHBzX2VwdTMyIChfX21tYXNrOCBfX1UsIF9fbTI1NiBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX2N2dHRwczJ1ZHEyNTZfbWFzayAoKF9fdjhzZikgX19BLAogICAgICAgICAgICAgICAgICAoX192OHNpKQogICAgICAgICAgICAgICAgICBfbW0yNTZfc2V0emVyb19zaTI1NiAoKSwKICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fY3Z0ZXB1MzJfcGQgKF9fbTEyOGkgX19BKSB7CiAgcmV0dXJuIChfX20xMjhkKSBfX2J1aWx0aW5fY29udmVydHZlY3RvcigKICAgICAgX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjRzdSlfX0EsIChfX3Y0c3UpX19BLCAwLCAxKSwgX192MmRmKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfY3Z0ZXB1MzJfcGQgKF9fbTEyOGQgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BKSB7CiAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzEyOCgoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX2N2dGVwdTMyX3BkKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9jdnRlcHUzMl9wZCAoX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkgewogIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF8xMjgoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9tbV9jdnRlcHUzMl9wZChfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfbW1fc2V0emVyb19wZCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2N2dGVwdTMyX3BkIChfX20xMjhpIF9fQSkgewogIHJldHVybiAoX19tMjU2ZClfX2J1aWx0aW5fY29udmVydHZlY3RvcigoX192NHN1KV9fQSwgX192NGRmKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfY3Z0ZXB1MzJfcGQgKF9fbTI1NmQgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BKSB7CiAgcmV0dXJuIChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzI1NigoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpX21tMjU2X2N2dGVwdTMyX3BkKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9jdnRlcHUzMl9wZCAoX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkgewogIHJldHVybiAoX19tMjU2ZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF8yNTYoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9tbTI1Nl9jdnRlcHUzMl9wZChfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZilfbW0yNTZfc2V0emVyb19wZCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fY3Z0ZXB1MzJfcHMgKF9fbTEyOGkgX19BKSB7CiAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoKF9fdjRzdSlfX0EsIF9fdjRzZik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfY3Z0ZXB1MzJfcHMgKF9fbTEyOCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EpIHsKICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfbW1fY3Z0ZXB1MzJfcHMoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9jdnRlcHUzMl9wcyAoX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkgewogIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9tbV9jdnRlcHUzMl9wcyhfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9tbV9zZXR6ZXJvX3BzKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9jdnRlcHUzMl9wcyAoX19tMjU2aSBfX0EpIHsKICByZXR1cm4gKF9fbTI1NilfX2J1aWx0aW5fY29udmVydHZlY3RvcigoX192OHN1KV9fQSwgX192OHNmKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19jdnRlcHUzMl9wcyAoX19tMjU2IF9fVywgX19tbWFzazggX19VLCBfX20yNTZpIF9fQSkgewogIHJldHVybiAoX19tMjU2KV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKV9tbTI1Nl9jdnRlcHUzMl9wcyhfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2N2dGVwdTMyX3BzIChfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19BKSB7CiAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX21tMjU2X2N2dGVwdTMyX3BzKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX21tMjU2X3NldHplcm9fcHMoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2Rpdl9wZChfX20xMjhkIF9fVywgX19tbWFzazggX19VLCBfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpIHsKICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9tbV9kaXZfcGQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfZGl2X3BkKF9fbW1hc2s4IF9fVSwgX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKSB7CiAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfbW1fZGl2X3BkKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX3NldHplcm9fcGQoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2Rpdl9wZChfX20yNTZkIF9fVywgX19tbWFzazggX19VLCBfX20yNTZkIF9fQSwgX19tMjU2ZCBfX0IpIHsKICByZXR1cm4gKF9fbTI1NmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9tbTI1Nl9kaXZfcGQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfZGl2X3BkKF9fbW1hc2s4IF9fVSwgX19tMjU2ZCBfX0EsIF9fbTI1NmQgX19CKSB7CiAgcmV0dXJuIChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZilfbW0yNTZfZGl2X3BkKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpX21tMjU2X3NldHplcm9fcGQoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfZGl2X3BzKF9fbTEyOCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4IF9fQSwgX19tMTI4IF9fQikgewogIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9tbV9kaXZfcHMoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2Rpdl9wcyhfX21tYXNrOCBfX1UsIF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpIHsKICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfbW1fZGl2X3BzKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfbW1fc2V0emVyb19wcygpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19kaXZfcHMoX19tMjU2IF9fVywgX19tbWFzazggX19VLCBfX20yNTYgX19BLCBfX20yNTYgX19CKSB7CiAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX21tMjU2X2Rpdl9wcyhfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfZGl2X3BzKF9fbW1hc2s4IF9fVSwgX19tMjU2IF9fQSwgX19tMjU2IF9fQikgewogIHJldHVybiAoX19tMjU2KV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKV9tbTI1Nl9kaXZfcHMoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKV9tbTI1Nl9zZXR6ZXJvX3BzKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19leHBhbmRfcGQgKF9fbTEyOGQgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGQgX19BKSB7CiAgcmV0dXJuIChfX20xMjhkKSBfX2J1aWx0aW5faWEzMl9leHBhbmRkZjEyOF9tYXNrICgoX192MmRmKSBfX0EsCiAgICAgICAgICAgICAgICAoX192MmRmKSBfX1csCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9leHBhbmRfcGQgKF9fbW1hc2s4IF9fVSwgX19tMTI4ZCBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGQpIF9fYnVpbHRpbl9pYTMyX2V4cGFuZGRmMTI4X21hc2sgKChfX3YyZGYpIF9fQSwKICAgICAgICAgICAgICAgICAoX192MmRmKQogICAgICAgICAgICAgICAgIF9tbV9zZXR6ZXJvX3BkICgpLAogICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfZXhwYW5kX3BkIChfX20yNTZkIF9fVywgX19tbWFzazggX19VLCBfX20yNTZkIF9fQSkgewogIHJldHVybiAoX19tMjU2ZCkgX19idWlsdGluX2lhMzJfZXhwYW5kZGYyNTZfbWFzayAoKF9fdjRkZikgX19BLAogICAgICAgICAgICAgICAgKF9fdjRkZikgX19XLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfZXhwYW5kX3BkIChfX21tYXNrOCBfX1UsIF9fbTI1NmQgX19BKSB7CiAgcmV0dXJuIChfX20yNTZkKSBfX2J1aWx0aW5faWEzMl9leHBhbmRkZjI1Nl9tYXNrICgoX192NGRmKSBfX0EsCiAgICAgICAgICAgICAgICAgKF9fdjRkZikKICAgICAgICAgICAgICAgICBfbW0yNTZfc2V0emVyb19wZCAoKSwKICAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2V4cGFuZF9lcGk2NCAoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX2V4cGFuZGRpMTI4X21hc2sgKChfX3YyZGkpIF9fQSwKICAgICAgICAgICAgICAgIChfX3YyZGkpIF9fVywKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2V4cGFuZF9lcGk2NCAoX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkgewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfZXhwYW5kZGkxMjhfbWFzayAoKF9fdjJkaSkgX19BLAogICAgICAgICAgICAgICAgIChfX3YyZGkpCiAgICAgICAgICAgICAgICAgX21tX3NldHplcm9fc2kxMjggKCksCiAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19leHBhbmRfZXBpNjQgKF9fbTI1NmkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19BKSB7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl9leHBhbmRkaTI1Nl9tYXNrICgoX192NGRpKSBfX0EsCiAgICAgICAgICAgICAgICAoX192NGRpKSBfX1csCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9leHBhbmRfZXBpNjQgKF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX2V4cGFuZGRpMjU2X21hc2sgKChfX3Y0ZGkpIF9fQSwKICAgICAgICAgICAgICAgICAoX192NGRpKQogICAgICAgICAgICAgICAgIF9tbTI1Nl9zZXR6ZXJvX3NpMjU2ICgpLAogICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfZXhwYW5kbG9hZHVfcGQgKF9fbTEyOGQgX19XLCBfX21tYXNrOCBfX1UsIHZvaWQgY29uc3QgKl9fUCkgewogIHJldHVybiAoX19tMTI4ZCkgX19idWlsdGluX2lhMzJfZXhwYW5kbG9hZGRmMTI4X21hc2sgKChjb25zdCBfX3YyZGYgKikgX19QLAogICAgICAgICAgICAgIChfX3YyZGYpIF9fVywKICAgICAgICAgICAgICAoX19tbWFzazgpCiAgICAgICAgICAgICAgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2V4cGFuZGxvYWR1X3BkIChfX21tYXNrOCBfX1UsIHZvaWQgY29uc3QgKl9fUCkgewogIHJldHVybiAoX19tMTI4ZCkgX19idWlsdGluX2lhMzJfZXhwYW5kbG9hZGRmMTI4X21hc2sgKChjb25zdCBfX3YyZGYgKikgX19QLAogICAgICAgICAgICAgICAoX192MmRmKQogICAgICAgICAgICAgICBfbW1fc2V0emVyb19wZCAoKSwKICAgICAgICAgICAgICAgKF9fbW1hc2s4KQogICAgICAgICAgICAgICBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19leHBhbmRsb2FkdV9wZCAoX19tMjU2ZCBfX1csIF9fbW1hc2s4IF9fVSwgdm9pZCBjb25zdCAqX19QKSB7CiAgcmV0dXJuIChfX20yNTZkKSBfX2J1aWx0aW5faWEzMl9leHBhbmRsb2FkZGYyNTZfbWFzayAoKGNvbnN0IF9fdjRkZiAqKSBfX1AsCiAgICAgICAgICAgICAgKF9fdjRkZikgX19XLAogICAgICAgICAgICAgIChfX21tYXNrOCkKICAgICAgICAgICAgICBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfZXhwYW5kbG9hZHVfcGQgKF9fbW1hc2s4IF9fVSwgdm9pZCBjb25zdCAqX19QKSB7CiAgcmV0dXJuIChfX20yNTZkKSBfX2J1aWx0aW5faWEzMl9leHBhbmRsb2FkZGYyNTZfbWFzayAoKGNvbnN0IF9fdjRkZiAqKSBfX1AsCiAgICAgICAgICAgICAgIChfX3Y0ZGYpCiAgICAgICAgICAgICAgIF9tbTI1Nl9zZXR6ZXJvX3BkICgpLAogICAgICAgICAgICAgICAoX19tbWFzazgpCiAgICAgICAgICAgICAgIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2V4cGFuZGxvYWR1X2VwaTY0IChfX20xMjhpIF9fVywgX19tbWFzazggX19VLCB2b2lkIGNvbnN0ICpfX1ApIHsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX2V4cGFuZGxvYWRkaTEyOF9tYXNrICgoY29uc3QgX192MmRpICopIF9fUCwKICAgICAgICAgICAgICAoX192MmRpKSBfX1csCiAgICAgICAgICAgICAgKF9fbW1hc2s4KQogICAgICAgICAgICAgIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9leHBhbmRsb2FkdV9lcGk2NCAoX19tbWFzazggX19VLCB2b2lkIGNvbnN0ICpfX1ApIHsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX2V4cGFuZGxvYWRkaTEyOF9tYXNrICgoY29uc3QgX192MmRpICopIF9fUCwKICAgICAgICAgICAgICAgKF9fdjJkaSkKICAgICAgICAgICAgICAgX21tX3NldHplcm9fc2kxMjggKCksCiAgICAgICAgICAgICAgIChfX21tYXNrOCkKICAgICAgICAgICAgICAgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfZXhwYW5kbG9hZHVfZXBpNjQgKF9fbTI1NmkgX19XLCBfX21tYXNrOCBfX1UsCiAgICAgICAgICAgICB2b2lkIGNvbnN0ICpfX1ApIHsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX2V4cGFuZGxvYWRkaTI1Nl9tYXNrICgoY29uc3QgX192NGRpICopIF9fUCwKICAgICAgICAgICAgICAoX192NGRpKSBfX1csCiAgICAgICAgICAgICAgKF9fbW1hc2s4KQogICAgICAgICAgICAgIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9leHBhbmRsb2FkdV9lcGk2NCAoX19tbWFzazggX19VLCB2b2lkIGNvbnN0ICpfX1ApIHsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX2V4cGFuZGxvYWRkaTI1Nl9tYXNrICgoY29uc3QgX192NGRpICopIF9fUCwKICAgICAgICAgICAgICAgKF9fdjRkaSkKICAgICAgICAgICAgICAgX21tMjU2X3NldHplcm9fc2kyNTYgKCksCiAgICAgICAgICAgICAgIChfX21tYXNrOCkKICAgICAgICAgICAgICAgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19leHBhbmRsb2FkdV9wcyAoX19tMTI4IF9fVywgX19tbWFzazggX19VLCB2b2lkIGNvbnN0ICpfX1ApIHsKICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfZXhwYW5kbG9hZHNmMTI4X21hc2sgKChjb25zdCBfX3Y0c2YgKikgX19QLAogICAgICAgICAgICAgICAgICAgKF9fdjRzZikgX19XLAogICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9leHBhbmRsb2FkdV9wcyAoX19tbWFzazggX19VLCB2b2lkIGNvbnN0ICpfX1ApIHsKICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfZXhwYW5kbG9hZHNmMTI4X21hc2sgKChjb25zdCBfX3Y0c2YgKikgX19QLAogICAgICAgICAgICAgIChfX3Y0c2YpCiAgICAgICAgICAgICAgX21tX3NldHplcm9fcHMgKCksCiAgICAgICAgICAgICAgKF9fbW1hc2s4KQogICAgICAgICAgICAgIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfZXhwYW5kbG9hZHVfcHMgKF9fbTI1NiBfX1csIF9fbW1hc2s4IF9fVSwgdm9pZCBjb25zdCAqX19QKSB7CiAgcmV0dXJuIChfX20yNTYpIF9fYnVpbHRpbl9pYTMyX2V4cGFuZGxvYWRzZjI1Nl9tYXNrICgoY29uc3QgX192OHNmICopIF9fUCwKICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpIF9fVywKICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfZXhwYW5kbG9hZHVfcHMgKF9fbW1hc2s4IF9fVSwgdm9pZCBjb25zdCAqX19QKSB7CiAgcmV0dXJuIChfX20yNTYpIF9fYnVpbHRpbl9pYTMyX2V4cGFuZGxvYWRzZjI1Nl9tYXNrICgoY29uc3QgX192OHNmICopIF9fUCwKICAgICAgICAgICAgICAoX192OHNmKQogICAgICAgICAgICAgIF9tbTI1Nl9zZXR6ZXJvX3BzICgpLAogICAgICAgICAgICAgIChfX21tYXNrOCkKICAgICAgICAgICAgICBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19leHBhbmRsb2FkdV9lcGkzMiAoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgdm9pZCBjb25zdCAqX19QKSB7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9leHBhbmRsb2Fkc2kxMjhfbWFzayAoKGNvbnN0IF9fdjRzaSAqKSBfX1AsCiAgICAgICAgICAgICAgKF9fdjRzaSkgX19XLAogICAgICAgICAgICAgIChfX21tYXNrOCkKICAgICAgICAgICAgICBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfZXhwYW5kbG9hZHVfZXBpMzIgKF9fbW1hc2s4IF9fVSwgdm9pZCBjb25zdCAqX19QKSB7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9leHBhbmRsb2Fkc2kxMjhfbWFzayAoKGNvbnN0IF9fdjRzaSAqKSBfX1AsCiAgICAgICAgICAgICAgIChfX3Y0c2kpCiAgICAgICAgICAgICAgIF9tbV9zZXR6ZXJvX3NpMTI4ICgpLAogICAgICAgICAgICAgICAoX19tbWFzazgpICAgICBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19leHBhbmRsb2FkdV9lcGkzMiAoX19tMjU2aSBfX1csIF9fbW1hc2s4IF9fVSwKICAgICAgICAgICAgIHZvaWQgY29uc3QgKl9fUCkgewogIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfZXhwYW5kbG9hZHNpMjU2X21hc2sgKChjb25zdCBfX3Y4c2kgKikgX19QLAogICAgICAgICAgICAgIChfX3Y4c2kpIF9fVywKICAgICAgICAgICAgICAoX19tbWFzazgpCiAgICAgICAgICAgICAgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2V4cGFuZGxvYWR1X2VwaTMyIChfX21tYXNrOCBfX1UsIHZvaWQgY29uc3QgKl9fUCkgewogIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfZXhwYW5kbG9hZHNpMjU2X21hc2sgKChjb25zdCBfX3Y4c2kgKikgX19QLAogICAgICAgICAgICAgICAoX192OHNpKQogICAgICAgICAgICAgICBfbW0yNTZfc2V0emVyb19zaTI1NiAoKSwKICAgICAgICAgICAgICAgKF9fbW1hc2s4KQogICAgICAgICAgICAgICBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2V4cGFuZF9wcyAoX19tMTI4IF9fVywgX19tbWFzazggX19VLCBfX20xMjggX19BKSB7CiAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX2V4cGFuZHNmMTI4X21hc2sgKChfX3Y0c2YpIF9fQSwKICAgICAgICAgICAgICAgKF9fdjRzZikgX19XLAogICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2V4cGFuZF9wcyAoX19tbWFzazggX19VLCBfX20xMjggX19BKSB7CiAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX2V4cGFuZHNmMTI4X21hc2sgKChfX3Y0c2YpIF9fQSwKICAgICAgICAgICAgICAgIChfX3Y0c2YpCiAgICAgICAgICAgICAgICBfbW1fc2V0emVyb19wcyAoKSwKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19leHBhbmRfcHMgKF9fbTI1NiBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2IF9fQSkgewogIHJldHVybiAoX19tMjU2KSBfX2J1aWx0aW5faWEzMl9leHBhbmRzZjI1Nl9tYXNrICgoX192OHNmKSBfX0EsCiAgICAgICAgICAgICAgIChfX3Y4c2YpIF9fVywKICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9leHBhbmRfcHMgKF9fbW1hc2s4IF9fVSwgX19tMjU2IF9fQSkgewogIHJldHVybiAoX19tMjU2KSBfX2J1aWx0aW5faWEzMl9leHBhbmRzZjI1Nl9tYXNrICgoX192OHNmKSBfX0EsCiAgICAgICAgICAgICAgICAoX192OHNmKQogICAgICAgICAgICAgICAgX21tMjU2X3NldHplcm9fcHMgKCksCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2V4cGFuZF9lcGkzMiAoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX2V4cGFuZHNpMTI4X21hc2sgKChfX3Y0c2kpIF9fQSwKICAgICAgICAgICAgICAgIChfX3Y0c2kpIF9fVywKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2V4cGFuZF9lcGkzMiAoX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkgewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfZXhwYW5kc2kxMjhfbWFzayAoKF9fdjRzaSkgX19BLAogICAgICAgICAgICAgICAgIChfX3Y0c2kpCiAgICAgICAgICAgICAgICAgX21tX3NldHplcm9fc2kxMjggKCksCiAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19leHBhbmRfZXBpMzIgKF9fbTI1NmkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19BKSB7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl9leHBhbmRzaTI1Nl9tYXNrICgoX192OHNpKSBfX0EsCiAgICAgICAgICAgICAgICAoX192OHNpKSBfX1csCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9leHBhbmRfZXBpMzIgKF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX2V4cGFuZHNpMjU2X21hc2sgKChfX3Y4c2kpIF9fQSwKICAgICAgICAgICAgICAgICAoX192OHNpKQogICAgICAgICAgICAgICAgIF9tbTI1Nl9zZXR6ZXJvX3NpMjU2ICgpLAogICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX2dldGV4cF9wZCAoX19tMTI4ZCBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGQpIF9fYnVpbHRpbl9pYTMyX2dldGV4cHBkMTI4X21hc2sgKChfX3YyZGYpIF9fQSwKICAgICAgICAgICAgICAgIChfX3YyZGYpCiAgICAgICAgICAgICAgICBfbW1fc2V0emVyb19wZCAoKSwKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19nZXRleHBfcGQgKF9fbTEyOGQgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGQgX19BKSB7CiAgcmV0dXJuIChfX20xMjhkKSBfX2J1aWx0aW5faWEzMl9nZXRleHBwZDEyOF9tYXNrICgoX192MmRmKSBfX0EsCiAgICAgICAgICAgICAgICAoX192MmRmKSBfX1csCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9nZXRleHBfcGQgKF9fbW1hc2s4IF9fVSwgX19tMTI4ZCBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGQpIF9fYnVpbHRpbl9pYTMyX2dldGV4cHBkMTI4X21hc2sgKChfX3YyZGYpIF9fQSwKICAgICAgICAgICAgICAgIChfX3YyZGYpCiAgICAgICAgICAgICAgICBfbW1fc2V0emVyb19wZCAoKSwKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2dldGV4cF9wZCAoX19tMjU2ZCBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmQpIF9fYnVpbHRpbl9pYTMyX2dldGV4cHBkMjU2X21hc2sgKChfX3Y0ZGYpIF9fQSwKICAgICAgICAgICAgICAgIChfX3Y0ZGYpCiAgICAgICAgICAgICAgICBfbW0yNTZfc2V0emVyb19wZCAoKSwKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19nZXRleHBfcGQgKF9fbTI1NmQgX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NmQgX19BKSB7CiAgcmV0dXJuIChfX20yNTZkKSBfX2J1aWx0aW5faWEzMl9nZXRleHBwZDI1Nl9tYXNrICgoX192NGRmKSBfX0EsCiAgICAgICAgICAgICAgICAoX192NGRmKSBfX1csCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9nZXRleHBfcGQgKF9fbW1hc2s4IF9fVSwgX19tMjU2ZCBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmQpIF9fYnVpbHRpbl9pYTMyX2dldGV4cHBkMjU2X21hc2sgKChfX3Y0ZGYpIF9fQSwKICAgICAgICAgICAgICAgIChfX3Y0ZGYpCiAgICAgICAgICAgICAgICBfbW0yNTZfc2V0emVyb19wZCAoKSwKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fZ2V0ZXhwX3BzIChfX20xMjggX19BKSB7CiAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX2dldGV4cHBzMTI4X21hc2sgKChfX3Y0c2YpIF9fQSwKICAgICAgICAgICAgICAgKF9fdjRzZikKICAgICAgICAgICAgICAgX21tX3NldHplcm9fcHMgKCksCiAgICAgICAgICAgICAgIChfX21tYXNrOCkgLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2dldGV4cF9wcyAoX19tMTI4IF9fVywgX19tbWFzazggX19VLCBfX20xMjggX19BKSB7CiAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX2dldGV4cHBzMTI4X21hc2sgKChfX3Y0c2YpIF9fQSwKICAgICAgICAgICAgICAgKF9fdjRzZikgX19XLAogICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2dldGV4cF9wcyAoX19tbWFzazggX19VLCBfX20xMjggX19BKSB7CiAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX2dldGV4cHBzMTI4X21hc2sgKChfX3Y0c2YpIF9fQSwKICAgICAgICAgICAgICAgKF9fdjRzZikKICAgICAgICAgICAgICAgX21tX3NldHplcm9fcHMgKCksCiAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfZ2V0ZXhwX3BzIChfX20yNTYgX19BKSB7CiAgcmV0dXJuIChfX20yNTYpIF9fYnVpbHRpbl9pYTMyX2dldGV4cHBzMjU2X21hc2sgKChfX3Y4c2YpIF9fQSwKICAgICAgICAgICAgICAgKF9fdjhzZikKICAgICAgICAgICAgICAgX21tMjU2X3NldHplcm9fcHMgKCksCiAgICAgICAgICAgICAgIChfX21tYXNrOCkgLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2dldGV4cF9wcyAoX19tMjU2IF9fVywgX19tbWFzazggX19VLCBfX20yNTYgX19BKSB7CiAgcmV0dXJuIChfX20yNTYpIF9fYnVpbHRpbl9pYTMyX2dldGV4cHBzMjU2X21hc2sgKChfX3Y4c2YpIF9fQSwKICAgICAgICAgICAgICAgKF9fdjhzZikgX19XLAogICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2dldGV4cF9wcyAoX19tbWFzazggX19VLCBfX20yNTYgX19BKSB7CiAgcmV0dXJuIChfX20yNTYpIF9fYnVpbHRpbl9pYTMyX2dldGV4cHBzMjU2X21hc2sgKChfX3Y4c2YpIF9fQSwKICAgICAgICAgICAgICAgKF9fdjhzZikKICAgICAgICAgICAgICAgX21tMjU2X3NldHplcm9fcHMgKCksCiAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfbWF4X3BkKF9fbTEyOGQgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikgewogIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX21heF9wZChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9tYXhfcGQoX19tbWFzazggX19VLCBfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpIHsKICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9tbV9tYXhfcGQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfbW1fc2V0emVyb19wZCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfbWF4X3BkKF9fbTI1NmQgX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NmQgX19BLCBfX20yNTZkIF9fQikgewogIHJldHVybiAoX19tMjU2ZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF8yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpX21tMjU2X21heF9wZChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9tYXhfcGQoX19tbWFzazggX19VLCBfX20yNTZkIF9fQSwgX19tMjU2ZCBfX0IpIHsKICByZXR1cm4gKF9fbTI1NmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9tbTI1Nl9tYXhfcGQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZilfbW0yNTZfc2V0emVyb19wZCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19tYXhfcHMoX19tMTI4IF9fVywgX19tbWFzazggX19VLCBfX20xMjggX19BLCBfX20xMjggX19CKSB7CiAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX21heF9wcyhfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfbWF4X3BzKF9fbW1hc2s4IF9fVSwgX19tMTI4IF9fQSwgX19tMTI4IF9fQikgewogIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9tbV9tYXhfcHMoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9tbV9zZXR6ZXJvX3BzKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX21heF9wcyhfX20yNTYgX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NiBfX0EsIF9fbTI1NiBfX0IpIHsKICByZXR1cm4gKF9fbTI1NilfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZilfbW0yNTZfbWF4X3BzKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9tYXhfcHMoX19tbWFzazggX19VLCBfX20yNTYgX19BLCBfX20yNTYgX19CKSB7CiAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX21tMjU2X21heF9wcyhfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX21tMjU2X3NldHplcm9fcHMoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX21pbl9wZChfX20xMjhkIF9fVywgX19tbWFzazggX19VLCBfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpIHsKICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9tbV9taW5fcGQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfbWluX3BkKF9fbW1hc2s4IF9fVSwgX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKSB7CiAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfbW1fbWluX3BkKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX3NldHplcm9fcGQoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX21pbl9wZChfX20yNTZkIF9fVywgX19tbWFzazggX19VLCBfX20yNTZkIF9fQSwgX19tMjU2ZCBfX0IpIHsKICByZXR1cm4gKF9fbTI1NmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9tbTI1Nl9taW5fcGQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfbWluX3BkKF9fbW1hc2s4IF9fVSwgX19tMjU2ZCBfX0EsIF9fbTI1NmQgX19CKSB7CiAgcmV0dXJuIChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZilfbW0yNTZfbWluX3BkKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpX21tMjU2X3NldHplcm9fcGQoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfbWluX3BzKF9fbTEyOCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4IF9fQSwgX19tMTI4IF9fQikgewogIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9tbV9taW5fcHMoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X21pbl9wcyhfX21tYXNrOCBfX1UsIF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpIHsKICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfbW1fbWluX3BzKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfbW1fc2V0emVyb19wcygpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19taW5fcHMoX19tMjU2IF9fVywgX19tbWFzazggX19VLCBfX20yNTYgX19BLCBfX20yNTYgX19CKSB7CiAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX21tMjU2X21pbl9wcyhfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfbWluX3BzKF9fbW1hc2s4IF9fVSwgX19tMjU2IF9fQSwgX19tMjU2IF9fQikgewogIHJldHVybiAoX19tMjU2KV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKV9tbTI1Nl9taW5fcHMoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKV9tbTI1Nl9zZXR6ZXJvX3BzKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19tdWxfcGQoX19tMTI4ZCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKSB7CiAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfbW1fbXVsX3BkKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X211bF9wZChfX21tYXNrOCBfX1UsIF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikgewogIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX211bF9wZChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9tbV9zZXR6ZXJvX3BkKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19tdWxfcGQoX19tMjU2ZCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2ZCBfX0EsIF9fbTI1NmQgX19CKSB7CiAgcmV0dXJuIChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZilfbW0yNTZfbXVsX3BkKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X211bF9wZChfX21tYXNrOCBfX1UsIF9fbTI1NmQgX19BLCBfX20yNTZkIF9fQikgewogIHJldHVybiAoX19tMjU2ZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF8yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpX21tMjU2X211bF9wZChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9tbTI1Nl9zZXR6ZXJvX3BkKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX211bF9wcyhfX20xMjggX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpIHsKICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfbW1fbXVsX3BzKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9tdWxfcHMoX19tbWFzazggX19VLCBfX20xMjggX19BLCBfX20xMjggX19CKSB7CiAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX211bF9wcyhfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX3NldHplcm9fcHMoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfbXVsX3BzKF9fbTI1NiBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2IF9fQSwgX19tMjU2IF9fQikgewogIHJldHVybiAoX19tMjU2KV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKV9tbTI1Nl9tdWxfcHMoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X211bF9wcyhfX21tYXNrOCBfX1UsIF9fbTI1NiBfX0EsIF9fbTI1NiBfX0IpIHsKICByZXR1cm4gKF9fbTI1NilfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZilfbW0yNTZfbXVsX3BzKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZilfbW0yNTZfc2V0emVyb19wcygpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfYWJzX2VwaTMyKF9fbTEyOGkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BKSB7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX2Fic19lcGkzMihfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9hYnNfZXBpMzIoX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkgewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9hYnNfZXBpMzIoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfYWJzX2VwaTMyKF9fbTI1NmkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19BKSB7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X2Fic19lcGkzMihfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9hYnNfZXBpMzIoX19tbWFzazggX19VLCBfX20yNTZpIF9fQSkgewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9hYnNfZXBpMzIoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX2Fic19lcGk2NCAoX19tMTI4aSBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcGFic3ExMjgoKF9fdjJkaSlfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19hYnNfZXBpNjQgKF9fbTEyOGkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BKSB7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX21tX2Fic19lcGk2NChfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9hYnNfZXBpNjQgKF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfbW1fYWJzX2VwaTY0KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX21tX3NldHplcm9fc2kxMjgoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9hYnNfZXBpNjQgKF9fbTI1NmkgX19BKSB7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3BhYnNxMjU2ICgoX192NGRpKV9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2Fic19lcGk2NCAoX19tMjU2aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfYWJzX2VwaTY0KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2Fic19lcGk2NCAoX19tbWFzazggX19VLCBfX20yNTZpIF9fQSkgewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9hYnNfZXBpNjQoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X21heF9lcGkzMihfX21tYXNrOCBfX00sIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikgewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzEyOCgoX19tbWFzazgpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9tYXhfZXBpMzIoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19tYXhfZXBpMzIoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fTSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKSB7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMTI4KChfX21tYXNrOClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX21heF9lcGkzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X21heF9lcGkzMihfX21tYXNrOCBfX00sIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikgewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzI1NigoX19tbWFzazgpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9tYXhfZXBpMzIoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19tYXhfZXBpMzIoX19tMjU2aSBfX1csIF9fbW1hc2s4IF9fTSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKSB7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMjU2KChfX21tYXNrOClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X21heF9lcGkzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21heF9lcGk2NCAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKSB7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BtYXhzcTEyOCgoX192MmRpKV9fQSwgKF9fdjJkaSlfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfbWF4X2VwaTY0IChfX21tYXNrOCBfX00sIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikgewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzEyOCgoX19tbWFzazgpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9tYXhfZXBpNjQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19tYXhfZXBpNjQgKF9fbTEyOGkgX19XLCBfX21tYXNrOCBfX00sIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikgewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzEyOCgoX19tbWFzazgpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9tYXhfZXBpNjQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXhfZXBpNjQgKF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikgewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9wbWF4c3EyNTYoKF9fdjRkaSlfX0EsIChfX3Y0ZGkpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X21heF9lcGk2NCAoX19tbWFzazggX19NLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpIHsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8yNTYoKF9fbW1hc2s4KV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfbWF4X2VwaTY0KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfbWF4X2VwaTY0IChfX20yNTZpIF9fVywgX19tbWFzazggX19NLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpIHsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8yNTYoKF9fbW1hc2s4KV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfbWF4X2VwaTY0KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfbWF4X2VwdTMyKF9fbW1hc2s4IF9fTSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKSB7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMTI4KChfX21tYXNrOClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX21heF9lcHUzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX3NldHplcm9fc2kxMjgoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX21heF9lcHUzMihfX20xMjhpIF9fVywgX19tbWFzazggX19NLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpIHsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8xMjgoKF9fbW1hc2s4KV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfbW1fbWF4X2VwdTMyKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfbWF4X2VwdTMyKF9fbW1hc2s4IF9fTSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKSB7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMjU2KChfX21tYXNrOClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X21heF9lcHUzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X3NldHplcm9fc2kyNTYoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX21heF9lcHUzMihfX20yNTZpIF9fVywgX19tbWFzazggX19NLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpIHsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8yNTYoKF9fbW1hc2s4KV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfbWF4X2VwdTMyKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWF4X2VwdTY0IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpIHsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcG1heHVxMTI4KChfX3YyZGkpX19BLCAoX192MmRpKV9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9tYXhfZXB1NjQgKF9fbW1hc2s4IF9fTSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKSB7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMTI4KChfX21tYXNrOClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX21tX21heF9lcHU2NChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX21tX3NldHplcm9fc2kxMjgoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX21heF9lcHU2NCAoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fTSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKSB7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMTI4KChfX21tYXNrOClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX21tX21heF9lcHU2NChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21heF9lcHU2NCAoX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKSB7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3BtYXh1cTI1NigoX192NGRpKV9fQSwgKF9fdjRkaSlfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfbWF4X2VwdTY0IChfX21tYXNrOCBfX00sIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikgewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzI1NigoX19tbWFzazgpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9tYXhfZXB1NjQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19tYXhfZXB1NjQgKF9fbTI1NmkgX19XLCBfX21tYXNrOCBfX00sIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikgewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzI1NigoX19tbWFzazgpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9tYXhfZXB1NjQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9taW5fZXBpMzIoX19tbWFzazggX19NLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpIHsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8xMjgoKF9fbW1hc2s4KV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfbW1fbWluX2VwaTMyKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfbWluX2VwaTMyKF9fbTEyOGkgX19XLCBfX21tYXNrOCBfX00sIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikgewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzEyOCgoX19tbWFzazgpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9taW5fZXBpMzIoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9taW5fZXBpMzIoX19tbWFzazggX19NLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpIHsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8yNTYoKF9fbW1hc2s4KV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfbWluX2VwaTMyKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfbWluX2VwaTMyKF9fbTI1NmkgX19XLCBfX21tYXNrOCBfX00sIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikgewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzI1NigoX19tbWFzazgpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9taW5fZXBpMzIoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9taW5fZXBpNjQgKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikgewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wbWluc3ExMjgoKF9fdjJkaSlfX0EsIChfX3YyZGkpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfbWluX2VwaTY0IChfX20xMjhpIF9fVywgX19tbWFzazggX19NLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpIHsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8xMjgoKF9fbW1hc2s4KV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfbW1fbWluX2VwaTY0KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfbWluX2VwaTY0IChfX21tYXNrOCBfX00sIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikgewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzEyOCgoX19tbWFzazgpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9taW5fZXBpNjQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWluX2VwaTY0IChfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpIHsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfcG1pbnNxMjU2KChfX3Y0ZGkpX19BLCAoX192NGRpKV9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX21pbl9lcGk2NCAoX19tMjU2aSBfX1csIF9fbW1hc2s4IF9fTSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKSB7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMjU2KChfX21tYXNrOClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX21tMjU2X21pbl9lcGk2NChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X21pbl9lcGk2NCAoX19tbWFzazggX19NLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpIHsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8yNTYoKF9fbW1hc2s4KV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfbWluX2VwaTY0KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X21pbl9lcHUzMihfX21tYXNrOCBfX00sIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikgewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzEyOCgoX19tbWFzazgpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9taW5fZXB1MzIoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19taW5fZXB1MzIoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fTSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKSB7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMTI4KChfX21tYXNrOClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX21pbl9lcHUzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X21pbl9lcHUzMihfX21tYXNrOCBfX00sIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikgewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzI1NigoX19tbWFzazgpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9taW5fZXB1MzIoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19taW5fZXB1MzIoX19tMjU2aSBfX1csIF9fbW1hc2s4IF9fTSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKSB7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMjU2KChfX21tYXNrOClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X21pbl9lcHUzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21pbl9lcHU2NCAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKSB7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BtaW51cTEyOCgoX192MmRpKV9fQSwgKF9fdjJkaSlfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19taW5fZXB1NjQgKF9fbTEyOGkgX19XLCBfX21tYXNrOCBfX00sIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikgewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzEyOCgoX19tbWFzazgpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9taW5fZXB1NjQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9taW5fZXB1NjQgKF9fbW1hc2s4IF9fTSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKSB7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMTI4KChfX21tYXNrOClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX21tX21pbl9lcHU2NChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX21tX3NldHplcm9fc2kxMjgoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9taW5fZXB1NjQgKF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikgewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9wbWludXEyNTYoKF9fdjRkaSlfX0EsIChfX3Y0ZGkpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfbWluX2VwdTY0IChfX20yNTZpIF9fVywgX19tbWFzazggX19NLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpIHsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8yNTYoKF9fbW1hc2s4KV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfbWluX2VwdTY0KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfbWluX2VwdTY0IChfX21tYXNrOCBfX00sIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikgewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzI1NigoX19tbWFzazgpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9taW5fZXB1NjQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgojZGVmaW5lIF9tbV9yb3VuZHNjYWxlX3BkKEEsIGltbSkgXAogICgoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9ybmRzY2FsZXBkXzEyOF9tYXNrKChfX3YyZGYpKF9fbTEyOGQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoaW1tKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX3NldHplcm9fcGQoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSkpCgoKI2RlZmluZSBfbW1fbWFza19yb3VuZHNjYWxlX3BkKFcsIFUsIEEsIGltbSkgXAogICgoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9ybmRzY2FsZXBkXzEyOF9tYXNrKChfX3YyZGYpKF9fbTEyOGQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoaW1tKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKFcpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSkpCgoKI2RlZmluZSBfbW1fbWFza3pfcm91bmRzY2FsZV9wZChVLCBBLCBpbW0pIFwKICAoKF9fbTEyOGQpX19idWlsdGluX2lhMzJfcm5kc2NhbGVwZF8xMjhfbWFzaygoX192MmRmKShfX20xMjhkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKGltbSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9tbV9zZXR6ZXJvX3BkKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpKSkKCgojZGVmaW5lIF9tbTI1Nl9yb3VuZHNjYWxlX3BkKEEsIGltbSkgXAogICgoX19tMjU2ZClfX2J1aWx0aW5faWEzMl9ybmRzY2FsZXBkXzI1Nl9tYXNrKChfX3Y0ZGYpKF9fbTI1NmQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoaW1tKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpX21tMjU2X3NldHplcm9fcGQoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSkpCgoKI2RlZmluZSBfbW0yNTZfbWFza19yb3VuZHNjYWxlX3BkKFcsIFUsIEEsIGltbSkgXAogICgoX19tMjU2ZClfX2J1aWx0aW5faWEzMl9ybmRzY2FsZXBkXzI1Nl9tYXNrKChfX3Y0ZGYpKF9fbTI1NmQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoaW1tKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpKF9fbTI1NmQpKFcpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSkpCgoKI2RlZmluZSBfbW0yNTZfbWFza3pfcm91bmRzY2FsZV9wZChVLCBBLCBpbW0pICBcCiAgKChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX3JuZHNjYWxlcGRfMjU2X21hc2soKF9fdjRkZikoX19tMjU2ZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZilfbW0yNTZfc2V0emVyb19wZCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSkpCgojZGVmaW5lIF9tbV9yb3VuZHNjYWxlX3BzKEEsIGltbSkgIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl9ybmRzY2FsZXBzXzEyOF9tYXNrKChfX3Y0c2YpKF9fbTEyOCkoQSksIChpbnQpKGltbSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX3NldHplcm9fcHMoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xKSkKCgojZGVmaW5lIF9tbV9tYXNrX3JvdW5kc2NhbGVfcHMoVywgVSwgQSwgaW1tKSAgXAogICgoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3JuZHNjYWxlcHNfMTI4X21hc2soKF9fdjRzZikoX19tMTI4KShBKSwgKGludCkoaW1tKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikoX19tMTI4KShXKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSkpCgoKI2RlZmluZSBfbW1fbWFza3pfcm91bmRzY2FsZV9wcyhVLCBBLCBpbW0pICBcCiAgKChfX20xMjgpX19idWlsdGluX2lhMzJfcm5kc2NhbGVwc18xMjhfbWFzaygoX192NHNmKShfX20xMjgpKEEpLCAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9tbV9zZXR6ZXJvX3BzKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSkpKQoKI2RlZmluZSBfbW0yNTZfcm91bmRzY2FsZV9wcyhBLCBpbW0pICBcCiAgKChfX20yNTYpX19idWlsdGluX2lhMzJfcm5kc2NhbGVwc18yNTZfbWFzaygoX192OHNmKShfX20yNTYpKEEpLCAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKV9tbTI1Nl9zZXR6ZXJvX3BzKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSkpCgojZGVmaW5lIF9tbTI1Nl9tYXNrX3JvdW5kc2NhbGVfcHMoVywgVSwgQSwgaW1tKSAgXAogICgoX19tMjU2KV9fYnVpbHRpbl9pYTMyX3JuZHNjYWxlcHNfMjU2X21hc2soKF9fdjhzZikoX19tMjU2KShBKSwgKGludCkoaW1tKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZikoX19tMjU2KShXKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSkpCgoKI2RlZmluZSBfbW0yNTZfbWFza3pfcm91bmRzY2FsZV9wcyhVLCBBLCBpbW0pICBcCiAgKChfX20yNTYpX19idWlsdGluX2lhMzJfcm5kc2NhbGVwc18yNTZfbWFzaygoX192OHNmKShfX20yNTYpKEEpLCAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKV9tbTI1Nl9zZXR6ZXJvX3BzKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSkpKQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX3NjYWxlZl9wZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKSB7CiAgcmV0dXJuIChfX20xMjhkKSBfX2J1aWx0aW5faWEzMl9zY2FsZWZwZDEyOF9tYXNrICgoX192MmRmKSBfX0EsCiAgICAgICAgICAgICAgICAoX192MmRmKSBfX0IsCiAgICAgICAgICAgICAgICAoX192MmRmKQogICAgICAgICAgICAgICAgX21tX3NldHplcm9fcGQgKCksCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIC0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfc2NhbGVmX3BkIChfX20xMjhkIF9fVywgX19tbWFzazggX19VLCBfX20xMjhkIF9fQSwKICAgICAgICBfX20xMjhkIF9fQikgewogIHJldHVybiAoX19tMTI4ZCkgX19idWlsdGluX2lhMzJfc2NhbGVmcGQxMjhfbWFzayAoKF9fdjJkZikgX19BLAogICAgICAgICAgICAgICAgKF9fdjJkZikgX19CLAogICAgICAgICAgICAgICAgKF9fdjJkZikgX19XLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfc2NhbGVmX3BkIChfX21tYXNrOCBfX1UsIF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikgewogIHJldHVybiAoX19tMTI4ZCkgX19idWlsdGluX2lhMzJfc2NhbGVmcGQxMjhfbWFzayAoKF9fdjJkZikgX19BLAogICAgICAgICAgICAgICAgKF9fdjJkZikgX19CLAogICAgICAgICAgICAgICAgKF9fdjJkZikKICAgICAgICAgICAgICAgIF9tbV9zZXR6ZXJvX3BkICgpLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfc2NhbGVmX3BkIChfX20yNTZkIF9fQSwgX19tMjU2ZCBfX0IpIHsKICByZXR1cm4gKF9fbTI1NmQpIF9fYnVpbHRpbl9pYTMyX3NjYWxlZnBkMjU2X21hc2sgKChfX3Y0ZGYpIF9fQSwKICAgICAgICAgICAgICAgIChfX3Y0ZGYpIF9fQiwKICAgICAgICAgICAgICAgIChfX3Y0ZGYpCiAgICAgICAgICAgICAgICBfbW0yNTZfc2V0emVyb19wZCAoKSwKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19zY2FsZWZfcGQgKF9fbTI1NmQgX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NmQgX19BLAogICAgICAgICAgIF9fbTI1NmQgX19CKSB7CiAgcmV0dXJuIChfX20yNTZkKSBfX2J1aWx0aW5faWEzMl9zY2FsZWZwZDI1Nl9tYXNrICgoX192NGRmKSBfX0EsCiAgICAgICAgICAgICAgICAoX192NGRmKSBfX0IsCiAgICAgICAgICAgICAgICAoX192NGRmKSBfX1csCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9zY2FsZWZfcGQgKF9fbW1hc2s4IF9fVSwgX19tMjU2ZCBfX0EsIF9fbTI1NmQgX19CKSB7CiAgcmV0dXJuIChfX20yNTZkKSBfX2J1aWx0aW5faWEzMl9zY2FsZWZwZDI1Nl9tYXNrICgoX192NGRmKSBfX0EsCiAgICAgICAgICAgICAgICAoX192NGRmKSBfX0IsCiAgICAgICAgICAgICAgICAoX192NGRmKQogICAgICAgICAgICAgICAgX21tMjU2X3NldHplcm9fcGQgKCksCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX3NjYWxlZl9wcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQikgewogIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9zY2FsZWZwczEyOF9tYXNrICgoX192NHNmKSBfX0EsCiAgICAgICAgICAgICAgIChfX3Y0c2YpIF9fQiwKICAgICAgICAgICAgICAgKF9fdjRzZikKICAgICAgICAgICAgICAgX21tX3NldHplcm9fcHMgKCksCiAgICAgICAgICAgICAgIChfX21tYXNrOCkgLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3NjYWxlZl9wcyAoX19tMTI4IF9fVywgX19tbWFzazggX19VLCBfX20xMjggX19BLCBfX20xMjggX19CKSB7CiAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX3NjYWxlZnBzMTI4X21hc2sgKChfX3Y0c2YpIF9fQSwKICAgICAgICAgICAgICAgKF9fdjRzZikgX19CLAogICAgICAgICAgICAgICAoX192NHNmKSBfX1csCiAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfc2NhbGVmX3BzIChfX21tYXNrOCBfX1UsIF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpIHsKICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfc2NhbGVmcHMxMjhfbWFzayAoKF9fdjRzZikgX19BLAogICAgICAgICAgICAgICAoX192NHNmKSBfX0IsCiAgICAgICAgICAgICAgIChfX3Y0c2YpCiAgICAgICAgICAgICAgIF9tbV9zZXR6ZXJvX3BzICgpLAogICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X3NjYWxlZl9wcyAoX19tMjU2IF9fQSwgX19tMjU2IF9fQikgewogIHJldHVybiAoX19tMjU2KSBfX2J1aWx0aW5faWEzMl9zY2FsZWZwczI1Nl9tYXNrICgoX192OHNmKSBfX0EsCiAgICAgICAgICAgICAgIChfX3Y4c2YpIF9fQiwKICAgICAgICAgICAgICAgKF9fdjhzZikKICAgICAgICAgICAgICAgX21tMjU2X3NldHplcm9fcHMgKCksCiAgICAgICAgICAgICAgIChfX21tYXNrOCkgLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX3NjYWxlZl9wcyAoX19tMjU2IF9fVywgX19tbWFzazggX19VLCBfX20yNTYgX19BLAogICAgICAgICAgIF9fbTI1NiBfX0IpIHsKICByZXR1cm4gKF9fbTI1NikgX19idWlsdGluX2lhMzJfc2NhbGVmcHMyNTZfbWFzayAoKF9fdjhzZikgX19BLAogICAgICAgICAgICAgICAoX192OHNmKSBfX0IsCiAgICAgICAgICAgICAgIChfX3Y4c2YpIF9fVywKICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9zY2FsZWZfcHMgKF9fbW1hc2s4IF9fVSwgX19tMjU2IF9fQSwgX19tMjU2IF9fQikgewogIHJldHVybiAoX19tMjU2KSBfX2J1aWx0aW5faWEzMl9zY2FsZWZwczI1Nl9tYXNrICgoX192OHNmKSBfX0EsCiAgICAgICAgICAgICAgIChfX3Y4c2YpIF9fQiwKICAgICAgICAgICAgICAgKF9fdjhzZikKICAgICAgICAgICAgICAgX21tMjU2X3NldHplcm9fcHMgKCksCiAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKI2RlZmluZSBfbW1faTY0c2NhdHRlcl9wZChhZGRyLCBpbmRleCwgdjEsIHNjYWxlKSBcCiAgX19idWlsdGluX2lhMzJfc2NhdHRlcmRpdjJkZigodm9pZCAqKShhZGRyKSwgKF9fbW1hc2s4KS0xLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKShfX20xMjhpKShpbmRleCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKHYxKSwgKGludCkoc2NhbGUpKQoKI2RlZmluZSBfbW1fbWFza19pNjRzY2F0dGVyX3BkKGFkZHIsIG1hc2ssIGluZGV4LCB2MSwgc2NhbGUpIFwKICBfX2J1aWx0aW5faWEzMl9zY2F0dGVyZGl2MmRmKCh2b2lkICopKGFkZHIpLCAoX19tbWFzazgpKG1hc2spLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKShfX20xMjhpKShpbmRleCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKHYxKSwgKGludCkoc2NhbGUpKQoKI2RlZmluZSBfbW1faTY0c2NhdHRlcl9lcGk2NChhZGRyLCBpbmRleCwgdjEsIHNjYWxlKSBcCiAgX19idWlsdGluX2lhMzJfc2NhdHRlcmRpdjJkaSgodm9pZCAqKShhZGRyKSwgKF9fbW1hc2s4KS0xLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKShfX20xMjhpKShpbmRleCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpKF9fbTEyOGkpKHYxKSwgKGludCkoc2NhbGUpKQoKI2RlZmluZSBfbW1fbWFza19pNjRzY2F0dGVyX2VwaTY0KGFkZHIsIG1hc2ssIGluZGV4LCB2MSwgc2NhbGUpIFwKICBfX2J1aWx0aW5faWEzMl9zY2F0dGVyZGl2MmRpKCh2b2lkICopKGFkZHIpLCAoX19tbWFzazgpKG1hc2spLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKShfX20xMjhpKShpbmRleCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpKF9fbTEyOGkpKHYxKSwgKGludCkoc2NhbGUpKQoKI2RlZmluZSBfbW0yNTZfaTY0c2NhdHRlcl9wZChhZGRyLCBpbmRleCwgdjEsIHNjYWxlKSBcCiAgX19idWlsdGluX2lhMzJfc2NhdHRlcmRpdjRkZigodm9pZCAqKShhZGRyKSwgKF9fbW1hc2s4KS0xLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKShfX20yNTZpKShpbmRleCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpKF9fbTI1NmQpKHYxKSwgKGludCkoc2NhbGUpKQoKI2RlZmluZSBfbW0yNTZfbWFza19pNjRzY2F0dGVyX3BkKGFkZHIsIG1hc2ssIGluZGV4LCB2MSwgc2NhbGUpIFwKICBfX2J1aWx0aW5faWEzMl9zY2F0dGVyZGl2NGRmKCh2b2lkICopKGFkZHIpLCAoX19tbWFzazgpKG1hc2spLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKShfX20yNTZpKShpbmRleCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpKF9fbTI1NmQpKHYxKSwgKGludCkoc2NhbGUpKQoKI2RlZmluZSBfbW0yNTZfaTY0c2NhdHRlcl9lcGk2NChhZGRyLCBpbmRleCwgdjEsIHNjYWxlKSBcCiAgX19idWlsdGluX2lhMzJfc2NhdHRlcmRpdjRkaSgodm9pZCAqKShhZGRyKSwgKF9fbW1hc2s4KS0xLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKShfX20yNTZpKShpbmRleCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpKF9fbTI1NmkpKHYxKSwgKGludCkoc2NhbGUpKQoKI2RlZmluZSBfbW0yNTZfbWFza19pNjRzY2F0dGVyX2VwaTY0KGFkZHIsIG1hc2ssIGluZGV4LCB2MSwgc2NhbGUpIFwKICBfX2J1aWx0aW5faWEzMl9zY2F0dGVyZGl2NGRpKCh2b2lkICopKGFkZHIpLCAoX19tbWFzazgpKG1hc2spLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKShfX20yNTZpKShpbmRleCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpKF9fbTI1NmkpKHYxKSwgKGludCkoc2NhbGUpKQoKI2RlZmluZSBfbW1faTY0c2NhdHRlcl9wcyhhZGRyLCBpbmRleCwgdjEsIHNjYWxlKSBcCiAgX19idWlsdGluX2lhMzJfc2NhdHRlcmRpdjRzZigodm9pZCAqKShhZGRyKSwgKF9fbW1hc2s4KS0xLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKShfX20xMjhpKShpbmRleCksIChfX3Y0c2YpKF9fbTEyOCkodjEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShzY2FsZSkpCgojZGVmaW5lIF9tbV9tYXNrX2k2NHNjYXR0ZXJfcHMoYWRkciwgbWFzaywgaW5kZXgsIHYxLCBzY2FsZSkgXAogIF9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJkaXY0c2YoKHZvaWQgKikoYWRkciksIChfX21tYXNrOCkobWFzayksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpKF9fbTEyOGkpKGluZGV4KSwgKF9fdjRzZikoX19tMTI4KSh2MSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKHNjYWxlKSkKCiNkZWZpbmUgX21tX2k2NHNjYXR0ZXJfZXBpMzIoYWRkciwgaW5kZXgsIHYxLCBzY2FsZSkgXAogIF9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJkaXY0c2koKHZvaWQgKikoYWRkciksIChfX21tYXNrOCktMSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSkoX19tMTI4aSkoaW5kZXgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKShfX20xMjhpKSh2MSksIChpbnQpKHNjYWxlKSkKCiNkZWZpbmUgX21tX21hc2tfaTY0c2NhdHRlcl9lcGkzMihhZGRyLCBtYXNrLCBpbmRleCwgdjEsIHNjYWxlKSBcCiAgX19idWlsdGluX2lhMzJfc2NhdHRlcmRpdjRzaSgodm9pZCAqKShhZGRyKSwgKF9fbW1hc2s4KShtYXNrKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSkoX19tMTI4aSkoaW5kZXgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKShfX20xMjhpKSh2MSksIChpbnQpKHNjYWxlKSkKCiNkZWZpbmUgX21tMjU2X2k2NHNjYXR0ZXJfcHMoYWRkciwgaW5kZXgsIHYxLCBzY2FsZSkgXAogIF9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJkaXY4c2YoKHZvaWQgKikoYWRkciksIChfX21tYXNrOCktMSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSkoX19tMjU2aSkoaW5kZXgpLCAoX192NHNmKShfX20xMjgpKHYxKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoc2NhbGUpKQoKI2RlZmluZSBfbW0yNTZfbWFza19pNjRzY2F0dGVyX3BzKGFkZHIsIG1hc2ssIGluZGV4LCB2MSwgc2NhbGUpIFwKICBfX2J1aWx0aW5faWEzMl9zY2F0dGVyZGl2OHNmKCh2b2lkICopKGFkZHIpLCAoX19tbWFzazgpKG1hc2spLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKShfX20yNTZpKShpbmRleCksIChfX3Y0c2YpKF9fbTEyOCkodjEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShzY2FsZSkpCgojZGVmaW5lIF9tbTI1Nl9pNjRzY2F0dGVyX2VwaTMyKGFkZHIsIGluZGV4LCB2MSwgc2NhbGUpIFwKICBfX2J1aWx0aW5faWEzMl9zY2F0dGVyZGl2OHNpKCh2b2lkICopKGFkZHIpLCAoX19tbWFzazgpLTEsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpKF9fbTI1NmkpKGluZGV4KSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSkoX19tMTI4aSkodjEpLCAoaW50KShzY2FsZSkpCgojZGVmaW5lIF9tbTI1Nl9tYXNrX2k2NHNjYXR0ZXJfZXBpMzIoYWRkciwgbWFzaywgaW5kZXgsIHYxLCBzY2FsZSkgXAogIF9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJkaXY4c2koKHZvaWQgKikoYWRkciksIChfX21tYXNrOCkobWFzayksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpKF9fbTI1NmkpKGluZGV4KSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSkoX19tMTI4aSkodjEpLCAoaW50KShzY2FsZSkpCgojZGVmaW5lIF9tbV9pMzJzY2F0dGVyX3BkKGFkZHIsIGluZGV4LCB2MSwgc2NhbGUpIFwKICBfX2J1aWx0aW5faWEzMl9zY2F0dGVyc2l2MmRmKCh2b2lkICopKGFkZHIpLCAoX19tbWFzazgpLTEsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpKF9fbTEyOGkpKGluZGV4KSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikoX19tMTI4ZCkodjEpLCAoaW50KShzY2FsZSkpCgojZGVmaW5lIF9tbV9tYXNrX2kzMnNjYXR0ZXJfcGQoYWRkciwgbWFzaywgaW5kZXgsIHYxLCBzY2FsZSkgXAogICAgX19idWlsdGluX2lhMzJfc2NhdHRlcnNpdjJkZigodm9pZCAqKShhZGRyKSwgKF9fbW1hc2s4KShtYXNrKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKShfX20xMjhpKShpbmRleCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikoX19tMTI4ZCkodjEpLCAoaW50KShzY2FsZSkpCgojZGVmaW5lIF9tbV9pMzJzY2F0dGVyX2VwaTY0KGFkZHIsIGluZGV4LCB2MSwgc2NhbGUpIFwKICAgIF9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJzaXYyZGkoKHZvaWQgKikoYWRkciksIChfX21tYXNrOCktMSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKShfX20xMjhpKShpbmRleCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSkoX19tMTI4aSkodjEpLCAoaW50KShzY2FsZSkpCgojZGVmaW5lIF9tbV9tYXNrX2kzMnNjYXR0ZXJfZXBpNjQoYWRkciwgbWFzaywgaW5kZXgsIHYxLCBzY2FsZSkgXAogICAgX19idWlsdGluX2lhMzJfc2NhdHRlcnNpdjJkaSgodm9pZCAqKShhZGRyKSwgKF9fbW1hc2s4KShtYXNrKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKShfX20xMjhpKShpbmRleCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSkoX19tMTI4aSkodjEpLCAoaW50KShzY2FsZSkpCgojZGVmaW5lIF9tbTI1Nl9pMzJzY2F0dGVyX3BkKGFkZHIsIGluZGV4LCB2MSwgc2NhbGUpIFwKICAgIF9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJzaXY0ZGYoKHZvaWQgKikoYWRkciksIChfX21tYXNrOCktMSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKShfX20xMjhpKShpbmRleCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZikoX19tMjU2ZCkodjEpLCAoaW50KShzY2FsZSkpCgojZGVmaW5lIF9tbTI1Nl9tYXNrX2kzMnNjYXR0ZXJfcGQoYWRkciwgbWFzaywgaW5kZXgsIHYxLCBzY2FsZSkgXAogICAgX19idWlsdGluX2lhMzJfc2NhdHRlcnNpdjRkZigodm9pZCAqKShhZGRyKSwgKF9fbW1hc2s4KShtYXNrKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKShfX20xMjhpKShpbmRleCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZikoX19tMjU2ZCkodjEpLCAoaW50KShzY2FsZSkpCgojZGVmaW5lIF9tbTI1Nl9pMzJzY2F0dGVyX2VwaTY0KGFkZHIsIGluZGV4LCB2MSwgc2NhbGUpIFwKICAgIF9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJzaXY0ZGkoKHZvaWQgKikoYWRkciksIChfX21tYXNrOCktMSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKShfX20xMjhpKShpbmRleCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSkoX19tMjU2aSkodjEpLCAoaW50KShzY2FsZSkpCgojZGVmaW5lIF9tbTI1Nl9tYXNrX2kzMnNjYXR0ZXJfZXBpNjQoYWRkciwgbWFzaywgaW5kZXgsIHYxLCBzY2FsZSkgXAogICAgX19idWlsdGluX2lhMzJfc2NhdHRlcnNpdjRkaSgodm9pZCAqKShhZGRyKSwgKF9fbW1hc2s4KShtYXNrKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKShfX20xMjhpKShpbmRleCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSkoX19tMjU2aSkodjEpLCAoaW50KShzY2FsZSkpCgojZGVmaW5lIF9tbV9pMzJzY2F0dGVyX3BzKGFkZHIsIGluZGV4LCB2MSwgc2NhbGUpIFwKICAgIF9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJzaXY0c2YoKHZvaWQgKikoYWRkciksIChfX21tYXNrOCktMSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKShfX20xMjhpKShpbmRleCksIChfX3Y0c2YpKF9fbTEyOCkodjEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKHNjYWxlKSkKCiNkZWZpbmUgX21tX21hc2tfaTMyc2NhdHRlcl9wcyhhZGRyLCBtYXNrLCBpbmRleCwgdjEsIHNjYWxlKSBcCiAgICBfX2J1aWx0aW5faWEzMl9zY2F0dGVyc2l2NHNmKCh2b2lkICopKGFkZHIpLCAoX19tbWFzazgpKG1hc2spLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpKF9fbTEyOGkpKGluZGV4KSwgKF9fdjRzZikoX19tMTI4KSh2MSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoc2NhbGUpKQoKI2RlZmluZSBfbW1faTMyc2NhdHRlcl9lcGkzMihhZGRyLCBpbmRleCwgdjEsIHNjYWxlKSBcCiAgICBfX2J1aWx0aW5faWEzMl9zY2F0dGVyc2l2NHNpKCh2b2lkICopKGFkZHIpLCAoX19tbWFzazgpLTEsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSkoX19tMTI4aSkoaW5kZXgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpKF9fbTEyOGkpKHYxKSwgKGludCkoc2NhbGUpKQoKI2RlZmluZSBfbW1fbWFza19pMzJzY2F0dGVyX2VwaTMyKGFkZHIsIG1hc2ssIGluZGV4LCB2MSwgc2NhbGUpIFwKICAgIF9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJzaXY0c2koKHZvaWQgKikoYWRkciksIChfX21tYXNrOCkobWFzayksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSkoX19tMTI4aSkoaW5kZXgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpKF9fbTEyOGkpKHYxKSwgKGludCkoc2NhbGUpKQoKI2RlZmluZSBfbW0yNTZfaTMyc2NhdHRlcl9wcyhhZGRyLCBpbmRleCwgdjEsIHNjYWxlKSBcCiAgICBfX2J1aWx0aW5faWEzMl9zY2F0dGVyc2l2OHNmKCh2b2lkICopKGFkZHIpLCAoX19tbWFzazgpLTEsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSkoX19tMjU2aSkoaW5kZXgpLCAoX192OHNmKShfX20yNTYpKHYxKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShzY2FsZSkpCgojZGVmaW5lIF9tbTI1Nl9tYXNrX2kzMnNjYXR0ZXJfcHMoYWRkciwgbWFzaywgaW5kZXgsIHYxLCBzY2FsZSkgXAogICAgX19idWlsdGluX2lhMzJfc2NhdHRlcnNpdjhzZigodm9pZCAqKShhZGRyKSwgKF9fbW1hc2s4KShtYXNrKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKShfX20yNTZpKShpbmRleCksIChfX3Y4c2YpKF9fbTI1NikodjEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKHNjYWxlKSkKCiNkZWZpbmUgX21tMjU2X2kzMnNjYXR0ZXJfZXBpMzIoYWRkciwgaW5kZXgsIHYxLCBzY2FsZSkgXAogICAgX19idWlsdGluX2lhMzJfc2NhdHRlcnNpdjhzaSgodm9pZCAqKShhZGRyKSwgKF9fbW1hc2s4KS0xLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpKF9fbTI1NmkpKGluZGV4KSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKShfX20yNTZpKSh2MSksIChpbnQpKHNjYWxlKSkKCiNkZWZpbmUgX21tMjU2X21hc2tfaTMyc2NhdHRlcl9lcGkzMihhZGRyLCBtYXNrLCBpbmRleCwgdjEsIHNjYWxlKSBcCiAgICBfX2J1aWx0aW5faWEzMl9zY2F0dGVyc2l2OHNpKCh2b2lkICopKGFkZHIpLCAoX19tbWFzazgpKG1hc2spLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpKF9fbTI1NmkpKGluZGV4KSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKShfX20yNTZpKSh2MSksIChpbnQpKHNjYWxlKSkKCiAgc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKICBfbW1fbWFza19zcXJ0X3BkKF9fbTEyOGQgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGQgX19BKSB7CiAgICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX3NxcnRfcGQoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfX1cpOwogIH0KCiAgc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKICBfbW1fbWFza3pfc3FydF9wZChfX21tYXNrOCBfX1UsIF9fbTEyOGQgX19BKSB7CiAgICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX3NxcnRfcGQoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfbW1fc2V0emVyb19wZCgpKTsKICB9CgogIHN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2CiAgX21tMjU2X21hc2tfc3FydF9wZChfX20yNTZkIF9fVywgX19tbWFzazggX19VLCBfX20yNTZkIF9fQSkgewogICAgcmV0dXJuIChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9tbTI1Nl9zcXJ0X3BkKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpX19XKTsKICB9CgogIHN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2CiAgX21tMjU2X21hc2t6X3NxcnRfcGQoX19tbWFzazggX19VLCBfX20yNTZkIF9fQSkgewogICAgcmV0dXJuIChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9tbTI1Nl9zcXJ0X3BkKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpX21tMjU2X3NldHplcm9fcGQoKSk7CiAgfQoKICBzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4CiAgX21tX21hc2tfc3FydF9wcyhfX20xMjggX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOCBfX0EpIHsKICAgIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX3NxcnRfcHMoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9fVyk7CiAgfQoKICBzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4CiAgX21tX21hc2t6X3NxcnRfcHMoX19tbWFzazggX19VLCBfX20xMjggX19BKSB7CiAgICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9tbV9zcXJ0X3BzKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfbW1fc2V0emVyb19wcygpKTsKICB9CgogIHN0YXRpYyBfX2lubGluZV9fIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKICBfbW0yNTZfbWFza19zcXJ0X3BzKF9fbTI1NiBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2IF9fQSkgewogICAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZilfbW0yNTZfc3FydF9wcyhfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX19XKTsKICB9CgogIHN0YXRpYyBfX2lubGluZV9fIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKICBfbW0yNTZfbWFza3pfc3FydF9wcyhfX21tYXNrOCBfX1UsIF9fbTI1NiBfX0EpIHsKICAgIHJldHVybiAoX19tMjU2KV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX21tMjU2X3NxcnRfcHMoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKV9tbTI1Nl9zZXR6ZXJvX3BzKCkpOwogIH0KCiAgc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKICBfbW1fbWFza19zdWJfcGQoX19tMTI4ZCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKSB7CiAgICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX3N1Yl9wZChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX19XKTsKICB9CgogIHN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4CiAgX21tX21hc2t6X3N1Yl9wZChfX21tYXNrOCBfX1UsIF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikgewogICAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9tbV9zdWJfcGQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9tbV9zZXR6ZXJvX3BkKCkpOwogIH0KCiAgc3RhdGljIF9faW5saW5lX18gX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKICBfbW0yNTZfbWFza19zdWJfcGQoX19tMjU2ZCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2ZCBfX0EsIF9fbTI1NmQgX19CKSB7CiAgICByZXR1cm4gKF9fbTI1NmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpX21tMjU2X3N1Yl9wZChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpX19XKTsKICB9CgogIHN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2CiAgX21tMjU2X21hc2t6X3N1Yl9wZChfX21tYXNrOCBfX1UsIF9fbTI1NmQgX19BLCBfX20yNTZkIF9fQikgewogICAgcmV0dXJuIChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9tbTI1Nl9zdWJfcGQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9tbTI1Nl9zZXR6ZXJvX3BkKCkpOwogIH0KCiAgc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOAogIF9tbV9tYXNrX3N1Yl9wcyhfX20xMjggX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpIHsKICAgIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX3N1Yl9wcyhfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfX1cpOwogIH0KCiAgc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOAogIF9tbV9tYXNrel9zdWJfcHMoX19tbWFzazggX19VLCBfX20xMjggX19BLCBfX20xMjggX19CKSB7CiAgICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9tbV9zdWJfcHMoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX3NldHplcm9fcHMoKSk7CiAgfQoKICBzdGF0aWMgX19pbmxpbmVfXyBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2CiAgX21tMjU2X21hc2tfc3ViX3BzKF9fbTI1NiBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2IF9fQSwgX19tMjU2IF9fQikgewogICAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZilfbW0yNTZfc3ViX3BzKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKV9fVyk7CiAgfQoKICBzdGF0aWMgX19pbmxpbmVfXyBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2CiAgX21tMjU2X21hc2t6X3N1Yl9wcyhfX21tYXNrOCBfX1UsIF9fbTI1NiBfX0EsIF9fbTI1NiBfX0IpIHsKICAgIHJldHVybiAoX19tMjU2KV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX21tMjU2X3N1Yl9wcyhfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZilfbW0yNTZfc2V0emVyb19wcygpKTsKICB9CgogIHN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4CiAgX21tX3Blcm11dGV4MnZhcl9lcGkzMihfX20xMjhpIF9fQSwgX19tMTI4aSBfX0ksIF9fbTEyOGkgX19CKSB7CiAgICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdnBlcm1pMnZhcmQxMjgoKF9fdjRzaSkgX19BLCAoX192NHNpKV9fSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9fQik7CiAgfQoKICBzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOAogIF9tbV9tYXNrX3Blcm11dGV4MnZhcl9lcGkzMihfX20xMjhpIF9fQSwgX19tbWFzazggX19VLCBfX20xMjhpIF9fSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aSBfX0IpIHsKICAgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzEyOChfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX3Blcm11dGV4MnZhcl9lcGkzMihfX0EsIF9fSSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfX0EpOwogIH0KCiAgc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKICBfbW1fbWFzazJfcGVybXV0ZXgydmFyX2VwaTMyKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fSSwgX19tbWFzazggX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aSBfX0IpIHsKICAgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzEyOChfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX3Blcm11dGV4MnZhcl9lcGkzMihfX0EsIF9fSSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfX0kpOwogIH0KCiAgc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKICBfbW1fbWFza3pfcGVybXV0ZXgydmFyX2VwaTMyKF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19JLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aSBfX0IpIHsKICAgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzEyOChfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX3Blcm11dGV4MnZhcl9lcGkzMihfX0EsIF9fSSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfbW1fc2V0emVyb19zaTEyOCgpKTsKICB9CgogIHN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2CiAgX21tMjU2X3Blcm11dGV4MnZhcl9lcGkzMihfX20yNTZpIF9fQSwgX19tMjU2aSBfX0ksIF9fbTI1NmkgX19CKSB7CiAgICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfdnBlcm1pMnZhcmQyNTYoKF9fdjhzaSlfX0EsIChfX3Y4c2kpIF9fSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKSBfX0IpOwogIH0KCiAgc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKICBfbW0yNTZfbWFza19wZXJtdXRleDJ2YXJfZXBpMzIoX19tMjU2aSBfX0EsIF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTI1NmkgX19CKSB7CiAgICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8yNTYoX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9wZXJtdXRleDJ2YXJfZXBpMzIoX19BLCBfX0ksIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX19BKTsKICB9CgogIHN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2CiAgX21tMjU2X21hc2syX3Blcm11dGV4MnZhcl9lcGkzMihfX20yNTZpIF9fQSwgX19tMjU2aSBfX0ksIF9fbW1hc2s4IF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTI1NmkgX19CKSB7CiAgICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8yNTYoX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9wZXJtdXRleDJ2YXJfZXBpMzIoX19BLCBfX0ksIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX19JKTsKICB9CgogIHN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2CiAgX21tMjU2X21hc2t6X3Blcm11dGV4MnZhcl9lcGkzMihfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTI1NmkgX19CKSB7CiAgICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8yNTYoX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9wZXJtdXRleDJ2YXJfZXBpMzIoX19BLCBfX0ksIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X3NldHplcm9fc2kyNTYoKSk7CiAgfQoKICBzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOAogIF9tbV9wZXJtdXRleDJ2YXJfcGQoX19tMTI4ZCBfX0EsIF9fbTEyOGkgX19JLCBfX20xMjhkIF9fQikgewogICAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3ZwZXJtaTJ2YXJwZDEyOCgoX192MmRmKV9fQSwgKF9fdjJkaSlfX0ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX19CKTsKICB9CgogIHN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4CiAgX21tX21hc2tfcGVybXV0ZXgydmFyX3BkKF9fbTEyOGQgX19BLCBfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19JLCBfX20xMjhkIF9fQikgewogICAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzEyOChfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX3Blcm11dGV4MnZhcl9wZChfX0EsIF9fSSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfX0EpOwogIH0KCiAgc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKICBfbW1fbWFzazJfcGVybXV0ZXgydmFyX3BkKF9fbTEyOGQgX19BLCBfX20xMjhpIF9fSSwgX19tbWFzazggX19VLCBfX20xMjhkIF9fQikgewogICAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzEyOChfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX3Blcm11dGV4MnZhcl9wZChfX0EsIF9fSSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikoX19tMTI4ZClfX0kpOwogIH0KCiAgc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKICBfbW1fbWFza3pfcGVybXV0ZXgydmFyX3BkKF9fbW1hc2s4IF9fVSwgX19tMTI4ZCBfX0EsIF9fbTEyOGkgX19JLCBfX20xMjhkIF9fQikgewogICAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzEyOChfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX3Blcm11dGV4MnZhcl9wZChfX0EsIF9fSSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfbW1fc2V0emVyb19wZCgpKTsKICB9CgogIHN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2CiAgX21tMjU2X3Blcm11dGV4MnZhcl9wZChfX20yNTZkIF9fQSwgX19tMjU2aSBfX0ksIF9fbTI1NmQgX19CKSB7CiAgICByZXR1cm4gKF9fbTI1NmQpX19idWlsdGluX2lhMzJfdnBlcm1pMnZhcnBkMjU2KChfX3Y0ZGYpX19BLCAoX192NGRpKV9fSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZilfX0IpOwogIH0KCiAgc3RhdGljIF9faW5saW5lX18gX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKICBfbW0yNTZfbWFza19wZXJtdXRleDJ2YXJfcGQoX19tMjU2ZCBfX0EsIF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTI1NmQgX19CKSB7CiAgICByZXR1cm4gKF9fbTI1NmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMjU2KF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZilfbW0yNTZfcGVybXV0ZXgydmFyX3BkKF9fQSwgX19JLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9fQSk7CiAgfQoKICBzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgogIF9tbTI1Nl9tYXNrMl9wZXJtdXRleDJ2YXJfcGQoX19tMjU2ZCBfX0EsIF9fbTI1NmkgX19JLCBfX21tYXNrOCBfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20yNTZkIF9fQikgewogICAgcmV0dXJuIChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzI1NihfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpX21tMjU2X3Blcm11dGV4MnZhcl9wZChfX0EsIF9fSSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZikoX19tMjU2ZClfX0kpOwogIH0KCiAgc3RhdGljIF9faW5saW5lX18gX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKICBfbW0yNTZfbWFza3pfcGVybXV0ZXgydmFyX3BkKF9fbW1hc2s4IF9fVSwgX19tMjU2ZCBfX0EsIF9fbTI1NmkgX19JLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMjU2ZCBfX0IpIHsKICAgIHJldHVybiAoX19tMjU2ZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF8yNTYoX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9tbTI1Nl9wZXJtdXRleDJ2YXJfcGQoX19BLCBfX0ksIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpX21tMjU2X3NldHplcm9fcGQoKSk7CiAgfQoKICBzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4CiAgX21tX3Blcm11dGV4MnZhcl9wcyhfX20xMjggX19BLCBfX20xMjhpIF9fSSwgX19tMTI4IF9fQikgewogICAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfdnBlcm1pMnZhcnBzMTI4KChfX3Y0c2YpX19BLCAoX192NHNpKV9fSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9fQik7CiAgfQoKICBzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4CiAgX21tX21hc2tfcGVybXV0ZXgydmFyX3BzKF9fbTEyOCBfX0EsIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0ksIF9fbTEyOCBfX0IpIHsKICAgIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzEyOChfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX3Blcm11dGV4MnZhcl9wcyhfX0EsIF9fSSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfX0EpOwogIH0KCiAgc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOAogIF9tbV9tYXNrMl9wZXJtdXRleDJ2YXJfcHMoX19tMTI4IF9fQSwgX19tMTI4aSBfX0ksIF9fbW1hc2s4IF9fVSwgX19tMTI4IF9fQikgewogICAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMTI4KF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfbW1fcGVybXV0ZXgydmFyX3BzKF9fQSwgX19JLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpX19JKTsKICB9CgogIHN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKICBfbW1fbWFza3pfcGVybXV0ZXgydmFyX3BzKF9fbW1hc2s4IF9fVSwgX19tMTI4IF9fQSwgX19tMTI4aSBfX0ksIF9fbTEyOCBfX0IpIHsKICAgIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzEyOChfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX3Blcm11dGV4MnZhcl9wcyhfX0EsIF9fSSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfbW1fc2V0emVyb19wcygpKTsKICB9CgogIHN0YXRpYyBfX2lubGluZV9fIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKICBfbW0yNTZfcGVybXV0ZXgydmFyX3BzKF9fbTI1NiBfX0EsIF9fbTI1NmkgX19JLCBfX20yNTYgX19CKSB7CiAgICByZXR1cm4gKF9fbTI1NilfX2J1aWx0aW5faWEzMl92cGVybWkydmFycHMyNTYoKF9fdjhzZilfX0EsIChfX3Y4c2kpX19JLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpIF9fQik7CiAgfQoKICBzdGF0aWMgX19pbmxpbmVfXyBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2CiAgX21tMjU2X21hc2tfcGVybXV0ZXgydmFyX3BzKF9fbTI1NiBfX0EsIF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0ksIF9fbTI1NiBfX0IpIHsKICAgIHJldHVybiAoX19tMjU2KV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzI1NihfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX21tMjU2X3Blcm11dGV4MnZhcl9wcyhfX0EsIF9fSSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZilfX0EpOwogIH0KCiAgc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgogIF9tbTI1Nl9tYXNrMl9wZXJtdXRleDJ2YXJfcHMoX19tMjU2IF9fQSwgX19tMjU2aSBfX0ksIF9fbW1hc2s4IF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTI1NiBfX0IpIHsKICAgIHJldHVybiAoX19tMjU2KV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzI1NihfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX21tMjU2X3Blcm11dGV4MnZhcl9wcyhfX0EsIF9fSSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZikoX19tMjU2KV9fSSk7CiAgfQoKICBzdGF0aWMgX19pbmxpbmVfXyBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2CiAgX21tMjU2X21hc2t6X3Blcm11dGV4MnZhcl9wcyhfX21tYXNrOCBfX1UsIF9fbTI1NiBfX0EsIF9fbTI1NmkgX19JLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMjU2IF9fQikgewogICAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMjU2KF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZilfbW0yNTZfcGVybXV0ZXgydmFyX3BzKF9fQSwgX19JLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKV9tbTI1Nl9zZXR6ZXJvX3BzKCkpOwogIH0KCiAgc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKICBfbW1fcGVybXV0ZXgydmFyX2VwaTY0KF9fbTEyOGkgX19BLCBfX20xMjhpIF9fSSwgX19tMTI4aSBfX0IpIHsKICAgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92cGVybWkydmFycTEyOCgoX192MmRpKV9fQSwgKF9fdjJkaSlfX0ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfX0IpOwogIH0KCiAgc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKICBfbW1fbWFza19wZXJtdXRleDJ2YXJfZXBpNjQoX19tMTI4aSBfX0EsIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGkgX19CKSB7CiAgICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8xMjgoX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9wZXJtdXRleDJ2YXJfZXBpNjQoX19BLCBfX0ksIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX19BKTsKICB9CgogIHN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4CiAgX21tX21hc2syX3Blcm11dGV4MnZhcl9lcGk2NChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0ksIF9fbW1hc2s4IF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGkgX19CKSB7CiAgICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8xMjgoX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9wZXJtdXRleDJ2YXJfZXBpNjQoX19BLCBfX0ksIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX19JKTsKICB9CgogIHN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4CiAgX21tX21hc2t6X3Blcm11dGV4MnZhcl9lcGk2NChfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGkgX19CKSB7CiAgICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8xMjgoX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9wZXJtdXRleDJ2YXJfZXBpNjQoX19BLCBfX0ksIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX21tX3NldHplcm9fc2kxMjgoKSk7CiAgfQoKCiAgc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKICBfbW0yNTZfcGVybXV0ZXgydmFyX2VwaTY0KF9fbTI1NmkgX19BLCBfX20yNTZpIF9fSSwgX19tMjU2aSBfX0IpIHsKICAgIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl92cGVybWkydmFycTI1NigoX192NGRpKV9fQSwgKF9fdjRkaSkgX19JLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpIF9fQik7CiAgfQoKICBzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgogIF9tbTI1Nl9tYXNrX3Blcm11dGV4MnZhcl9lcGk2NChfX20yNTZpIF9fQSwgX19tbWFzazggX19VLCBfX20yNTZpIF9fSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMjU2aSBfX0IpIHsKICAgIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzI1NihfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX21tMjU2X3Blcm11dGV4MnZhcl9lcGk2NChfX0EsIF9fSSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfX0EpOwogIH0KCiAgc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKICBfbW0yNTZfbWFzazJfcGVybXV0ZXgydmFyX2VwaTY0KF9fbTI1NmkgX19BLCBfX20yNTZpIF9fSSwgX19tbWFzazggX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMjU2aSBfX0IpIHsKICAgIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzI1NihfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX21tMjU2X3Blcm11dGV4MnZhcl9lcGk2NChfX0EsIF9fSSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfX0kpOwogIH0KCiAgc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKICBfbW0yNTZfbWFza3pfcGVybXV0ZXgydmFyX2VwaTY0KF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19JLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMjU2aSBfX0IpIHsKICAgIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzI1NihfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX21tMjU2X3Blcm11dGV4MnZhcl9lcGk2NChfX0EsIF9fSSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKICB9CgogIHN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4CiAgX21tX21hc2tfY3Z0ZXBpOF9lcGkzMihfX20xMjhpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkKICB7CiAgICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9jdnRlcGk4X2VwaTMyKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfX1cpOwogIH0KCiAgc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKICBfbW1fbWFza3pfY3Z0ZXBpOF9lcGkzMihfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BKQogIHsKICAgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX2N2dGVwaThfZXBpMzIoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwogIH0KCiAgc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKICBfbW0yNTZfbWFza19jdnRlcGk4X2VwaTMyIChfX20yNTZpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkKICB7CiAgICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9jdnRlcGk4X2VwaTMyKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfX1cpOwogIH0KCiAgc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKICBfbW0yNTZfbWFza3pfY3Z0ZXBpOF9lcGkzMiAoX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkKICB7CiAgICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9jdnRlcGk4X2VwaTMyKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKICB9CgogIHN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4CiAgX21tX21hc2tfY3Z0ZXBpOF9lcGk2NChfX20xMjhpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkKICB7CiAgICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9jdnRlcGk4X2VwaTY0KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfX1cpOwogIH0KCiAgc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKICBfbW1fbWFza3pfY3Z0ZXBpOF9lcGk2NChfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BKQogIHsKICAgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX21tX2N2dGVwaThfZXBpNjQoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwogIH0KCiAgc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKICBfbW0yNTZfbWFza19jdnRlcGk4X2VwaTY0KF9fbTI1NmkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BKQogIHsKICAgIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX21tMjU2X2N2dGVwaThfZXBpNjQoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9fVyk7CiAgfQoKICBzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgogIF9tbTI1Nl9tYXNrel9jdnRlcGk4X2VwaTY0KF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EpCiAgewogICAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfY3Z0ZXBpOF9lcGk2NChfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX21tMjU2X3NldHplcm9fc2kyNTYoKSk7CiAgfQoKICBzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOAogIF9tbV9tYXNrX2N2dGVwaTMyX2VwaTY0KF9fbTEyOGkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19YKQogIHsKICAgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX21tX2N2dGVwaTMyX2VwaTY0KF9fWCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfX1cpOwogIH0KCiAgc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKICBfbW1fbWFza3pfY3Z0ZXBpMzJfZXBpNjQoX19tbWFzazggX19VLCBfX20xMjhpIF9fWCkKICB7CiAgICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9jdnRlcGkzMl9lcGk2NChfX1gpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX21tX3NldHplcm9fc2kxMjgoKSk7CiAgfQoKICBzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgogIF9tbTI1Nl9tYXNrX2N2dGVwaTMyX2VwaTY0KF9fbTI1NmkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19YKQogIHsKICAgIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX21tMjU2X2N2dGVwaTMyX2VwaTY0KF9fWCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfX1cpOwogIH0KCiAgc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKICBfbW0yNTZfbWFza3pfY3Z0ZXBpMzJfZXBpNjQoX19tbWFzazggX19VLCBfX20xMjhpIF9fWCkKICB7CiAgICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9jdnRlcGkzMl9lcGk2NChfX1gpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX21tMjU2X3NldHplcm9fc2kyNTYoKSk7CiAgfQoKICBzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOAogIF9tbV9tYXNrX2N2dGVwaTE2X2VwaTMyKF9fbTEyOGkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BKQogIHsKICAgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX2N2dGVwaTE2X2VwaTMyKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfX1cpOwogIH0KCiAgc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKICBfbW1fbWFza3pfY3Z0ZXBpMTZfZXBpMzIoX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkKICB7CiAgICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9jdnRlcGkxNl9lcGkzMihfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX3NldHplcm9fc2kxMjgoKSk7CiAgfQoKICBzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgogIF9tbTI1Nl9tYXNrX2N2dGVwaTE2X2VwaTMyKF9fbTI1NmkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BKQogIHsKICAgIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X2N2dGVwaTE2X2VwaTMyKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfX1cpOwogIH0KCiAgc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKICBfbW0yNTZfbWFza3pfY3Z0ZXBpMTZfZXBpMzIgKF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EpCiAgewogICAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfY3Z0ZXBpMTZfZXBpMzIoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwogIH0KCiAgc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKICBfbW1fbWFza19jdnRlcGkxNl9lcGk2NChfX20xMjhpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkKICB7CiAgICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9jdnRlcGkxNl9lcGk2NChfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX19XKTsKICB9CgogIHN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4CiAgX21tX21hc2t6X2N2dGVwaTE2X2VwaTY0KF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EpCiAgewogICAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfbW1fY3Z0ZXBpMTZfZXBpNjQoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwogIH0KCiAgc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKICBfbW0yNTZfbWFza19jdnRlcGkxNl9lcGk2NChfX20yNTZpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkKICB7CiAgICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9jdnRlcGkxNl9lcGk2NChfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX19XKTsKICB9CgogIHN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2CiAgX21tMjU2X21hc2t6X2N2dGVwaTE2X2VwaTY0KF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EpCiAgewogICAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfY3Z0ZXBpMTZfZXBpNjQoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwogIH0KCgogIHN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4CiAgX21tX21hc2tfY3Z0ZXB1OF9lcGkzMihfX20xMjhpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkKICB7CiAgICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9jdnRlcHU4X2VwaTMyKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfX1cpOwogIH0KCiAgc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKICBfbW1fbWFza3pfY3Z0ZXB1OF9lcGkzMihfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BKQogIHsKICAgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX2N2dGVwdThfZXBpMzIoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwogIH0KCiAgc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKICBfbW0yNTZfbWFza19jdnRlcHU4X2VwaTMyKF9fbTI1NmkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BKQogIHsKICAgIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X2N2dGVwdThfZXBpMzIoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9fVyk7CiAgfQoKICBzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgogIF9tbTI1Nl9tYXNrel9jdnRlcHU4X2VwaTMyKF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EpCiAgewogICAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfY3Z0ZXB1OF9lcGkzMihfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X3NldHplcm9fc2kyNTYoKSk7CiAgfQoKICBzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOAogIF9tbV9tYXNrX2N2dGVwdThfZXBpNjQoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EpCiAgewogICAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfbW1fY3Z0ZXB1OF9lcGk2NChfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX19XKTsKICB9CgogIHN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4CiAgX21tX21hc2t6X2N2dGVwdThfZXBpNjQoX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkKICB7CiAgICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9jdnRlcHU4X2VwaTY0KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfbW1fc2V0emVyb19zaTEyOCgpKTsKICB9CgogIHN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2CiAgX21tMjU2X21hc2tfY3Z0ZXB1OF9lcGk2NChfX20yNTZpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkKICB7CiAgICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9jdnRlcHU4X2VwaTY0KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfX1cpOwogIH0KCiAgc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKICBfbW0yNTZfbWFza3pfY3Z0ZXB1OF9lcGk2NCAoX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkKICB7CiAgICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9jdnRlcHU4X2VwaTY0KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKICB9CgogIHN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4CiAgX21tX21hc2tfY3Z0ZXB1MzJfZXBpNjQoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX1gpCiAgewogICAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfbW1fY3Z0ZXB1MzJfZXBpNjQoX19YKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9fVyk7CiAgfQoKICBzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOAogIF9tbV9tYXNrel9jdnRlcHUzMl9lcGk2NChfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19YKQogIHsKICAgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX21tX2N2dGVwdTMyX2VwaTY0KF9fWCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfbW1fc2V0emVyb19zaTEyOCgpKTsKICB9CgogIHN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2CiAgX21tMjU2X21hc2tfY3Z0ZXB1MzJfZXBpNjQoX19tMjU2aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX1gpCiAgewogICAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfY3Z0ZXB1MzJfZXBpNjQoX19YKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9fVyk7CiAgfQoKICBzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgogIF9tbTI1Nl9tYXNrel9jdnRlcHUzMl9lcGk2NChfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19YKQogIHsKICAgIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX21tMjU2X2N2dGVwdTMyX2VwaTY0KF9fWCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKICB9CgogIHN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4CiAgX21tX21hc2tfY3Z0ZXB1MTZfZXBpMzIoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EpCiAgewogICAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfbW1fY3Z0ZXB1MTZfZXBpMzIoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9fVyk7CiAgfQoKICBzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOAogIF9tbV9tYXNrel9jdnRlcHUxNl9lcGkzMihfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BKQogIHsKICAgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX2N2dGVwdTE2X2VwaTMyKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfbW1fc2V0emVyb19zaTEyOCgpKTsKICB9CgogIHN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2CiAgX21tMjU2X21hc2tfY3Z0ZXB1MTZfZXBpMzIoX19tMjU2aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EpCiAgewogICAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfY3Z0ZXB1MTZfZXBpMzIoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9fVyk7CiAgfQoKICBzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgogIF9tbTI1Nl9tYXNrel9jdnRlcHUxNl9lcGkzMihfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BKQogIHsKICAgIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X2N2dGVwdTE2X2VwaTMyKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKICB9CgogIHN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4CiAgX21tX21hc2tfY3Z0ZXB1MTZfZXBpNjQoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EpCiAgewogICAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfbW1fY3Z0ZXB1MTZfZXBpNjQoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9fVyk7CiAgfQoKICBzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOAogIF9tbV9tYXNrel9jdnRlcHUxNl9lcGk2NChfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BKQogIHsKICAgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX21tX2N2dGVwdTE2X2VwaTY0KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfbW1fc2V0emVyb19zaTEyOCgpKTsKICB9CgogIHN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2CiAgX21tMjU2X21hc2tfY3Z0ZXB1MTZfZXBpNjQoX19tMjU2aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EpCiAgewogICAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfY3Z0ZXB1MTZfZXBpNjQoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9fVyk7CiAgfQoKICBzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgogIF9tbTI1Nl9tYXNrel9jdnRlcHUxNl9lcGk2NChfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BKQogIHsKICAgIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX21tMjU2X2N2dGVwdTE2X2VwaTY0KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKICB9CgoKI2RlZmluZSBfbW1fcm9sX2VwaTMyKGEsIGIpIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHJvbGQxMjgoKF9fdjRzaSkoX19tMTI4aSkoYSksIChpbnQpKGIpKSkKCiNkZWZpbmUgX21tX21hc2tfcm9sX2VwaTMyKHcsIHUsIGEsIGIpIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8xMjgoKF9fbW1hc2s4KSh1KSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9yb2xfZXBpMzIoKGEpLCAoYikpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpKF9fbTEyOGkpKHcpKSkKCiNkZWZpbmUgX21tX21hc2t6X3JvbF9lcGkzMih1LCBhLCBiKSBcCiAgKChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMTI4KChfX21tYXNrOCkodSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfbW1fcm9sX2VwaTMyKChhKSwgKGIpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpKQoKI2RlZmluZSBfbW0yNTZfcm9sX2VwaTMyKGEsIGIpIFwKICAoKF9fbTI1NmkpX19idWlsdGluX2lhMzJfcHJvbGQyNTYoKF9fdjhzaSkoX19tMjU2aSkoYSksIChpbnQpKGIpKSkKCiNkZWZpbmUgX21tMjU2X21hc2tfcm9sX2VwaTMyKHcsIHUsIGEsIGIpIFwKICAoKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8yNTYoKF9fbW1hc2s4KSh1KSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9yb2xfZXBpMzIoKGEpLCAoYikpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpKF9fbTI1NmkpKHcpKSkKCiNkZWZpbmUgX21tMjU2X21hc2t6X3JvbF9lcGkzMih1LCBhLCBiKSBcCiAgKChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMjU2KChfX21tYXNrOCkodSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfcm9sX2VwaTMyKChhKSwgKGIpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpKQoKI2RlZmluZSBfbW1fcm9sX2VwaTY0KGEsIGIpIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHJvbHExMjgoKF9fdjJkaSkoX19tMTI4aSkoYSksIChpbnQpKGIpKSkKCiNkZWZpbmUgX21tX21hc2tfcm9sX2VwaTY0KHcsIHUsIGEsIGIpIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8xMjgoKF9fbW1hc2s4KSh1KSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9yb2xfZXBpNjQoKGEpLCAoYikpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpKF9fbTEyOGkpKHcpKSkKCiNkZWZpbmUgX21tX21hc2t6X3JvbF9lcGk2NCh1LCBhLCBiKSBcCiAgKChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMTI4KChfX21tYXNrOCkodSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfbW1fcm9sX2VwaTY0KChhKSwgKGIpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpKQoKI2RlZmluZSBfbW0yNTZfcm9sX2VwaTY0KGEsIGIpIFwKICAoKF9fbTI1NmkpX19idWlsdGluX2lhMzJfcHJvbHEyNTYoKF9fdjRkaSkoX19tMjU2aSkoYSksIChpbnQpKGIpKSkKCiNkZWZpbmUgX21tMjU2X21hc2tfcm9sX2VwaTY0KHcsIHUsIGEsIGIpIFwKICAoKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8yNTYoKF9fbW1hc2s4KSh1KSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9yb2xfZXBpNjQoKGEpLCAoYikpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpKF9fbTI1NmkpKHcpKSkKCiNkZWZpbmUgX21tMjU2X21hc2t6X3JvbF9lcGk2NCh1LCBhLCBiKSBcCiAgKChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMjU2KChfX21tYXNrOCkodSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfcm9sX2VwaTY0KChhKSwgKGIpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpKQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX3JvbHZfZXBpMzIgKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wcm9sdmQxMjgoKF9fdjRzaSlfX0EsIChfX3Y0c2kpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfcm9sdl9lcGkzMiAoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMTI4KF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfbW1fcm9sdl9lcGkzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X3JvbHZfZXBpMzIgKF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMTI4KF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfbW1fcm9sdl9lcGkzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX3NldHplcm9fc2kxMjgoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9yb2x2X2VwaTMyIChfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfcHJvbHZkMjU2KChfX3Y4c2kpX19BLCAoX192OHNpKV9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX3JvbHZfZXBpMzIgKF9fbTI1NmkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzI1NihfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfcm9sdl9lcGkzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfcm9sdl9lcGkzMiAoX19tbWFzazggX19VLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8yNTYoX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X3JvbHZfZXBpMzIoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X3NldHplcm9fc2kyNTYoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9yb2x2X2VwaTY0IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHJvbHZxMTI4KChfX3YyZGkpX19BLCAoX192MmRpKV9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3JvbHZfZXBpNjQgKF9fbTEyOGkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzEyOChfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX21tX3JvbHZfZXBpNjQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9yb2x2X2VwaTY0IChfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzEyOChfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX21tX3JvbHZfZXBpNjQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfcm9sdl9lcGk2NCAoX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3Byb2x2cTI1NigoX192NGRpKV9fQSwgKF9fdjRkaSlfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19yb2x2X2VwaTY0IChfX20yNTZpIF9fVywgX19tbWFzazggX19VLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8yNTYoX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX21tMjU2X3JvbHZfZXBpNjQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X3JvbHZfZXBpNjQgKF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMjU2KF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9yb2x2X2VwaTY0KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgojZGVmaW5lIF9tbV9yb3JfZXBpMzIoYSwgYikgXAogICgoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wcm9yZDEyOCgoX192NHNpKShfX20xMjhpKShhKSwgKGludCkoYikpKQoKI2RlZmluZSBfbW1fbWFza19yb3JfZXBpMzIodywgdSwgYSwgYikgXAogICgoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzEyOCgoX19tbWFzazgpKHUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX3Jvcl9lcGkzMigoYSksIChiKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSkoX19tMTI4aSkodykpKQoKI2RlZmluZSBfbW1fbWFza3pfcm9yX2VwaTMyKHUsIGEsIGIpIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8xMjgoKF9fbW1hc2s4KSh1KSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9yb3JfZXBpMzIoKGEpLCAoYikpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX3NldHplcm9fc2kxMjgoKSkpCgojZGVmaW5lIF9tbTI1Nl9yb3JfZXBpMzIoYSwgYikgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9wcm9yZDI1NigoX192OHNpKShfX20yNTZpKShhKSwgKGludCkoYikpKQoKI2RlZmluZSBfbW0yNTZfbWFza19yb3JfZXBpMzIodywgdSwgYSwgYikgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzI1NigoX19tbWFzazgpKHUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X3Jvcl9lcGkzMigoYSksIChiKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSkoX19tMjU2aSkodykpKQoKI2RlZmluZSBfbW0yNTZfbWFza3pfcm9yX2VwaTMyKHUsIGEsIGIpIFwKICAoKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8yNTYoKF9fbW1hc2s4KSh1KSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9yb3JfZXBpMzIoKGEpLCAoYikpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X3NldHplcm9fc2kyNTYoKSkpCgojZGVmaW5lIF9tbV9yb3JfZXBpNjQoYSwgYikgXAogICgoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wcm9ycTEyOCgoX192MmRpKShfX20xMjhpKShhKSwgKGludCkoYikpKQoKI2RlZmluZSBfbW1fbWFza19yb3JfZXBpNjQodywgdSwgYSwgYikgXAogICgoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzEyOCgoX19tbWFzazgpKHUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX21tX3Jvcl9lcGk2NCgoYSksIChiKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSkoX19tMTI4aSkodykpKQoKI2RlZmluZSBfbW1fbWFza3pfcm9yX2VwaTY0KHUsIGEsIGIpIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8xMjgoKF9fbW1hc2s4KSh1KSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9yb3JfZXBpNjQoKGEpLCAoYikpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX21tX3NldHplcm9fc2kxMjgoKSkpCgojZGVmaW5lIF9tbTI1Nl9yb3JfZXBpNjQoYSwgYikgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9wcm9ycTI1NigoX192NGRpKShfX20yNTZpKShhKSwgKGludCkoYikpKQoKI2RlZmluZSBfbW0yNTZfbWFza19yb3JfZXBpNjQodywgdSwgYSwgYikgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzI1NigoX19tbWFzazgpKHUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX21tMjU2X3Jvcl9lcGk2NCgoYSksIChiKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSkoX19tMjU2aSkodykpKQoKI2RlZmluZSBfbW0yNTZfbWFza3pfcm9yX2VwaTY0KHUsIGEsIGIpIFwKICAoKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8yNTYoKF9fbW1hc2s4KSh1KSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9yb3JfZXBpNjQoKGEpLCAoYikpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX21tMjU2X3NldHplcm9fc2kyNTYoKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19zbGxfZXBpMzIoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX3NsbF9lcGkzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X3NsbF9lcGkzMihfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9zbGxfZXBpMzIoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19zbGxfZXBpMzIoX19tMjU2aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X3NsbF9lcGkzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X3NsbF9lcGkzMihfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9zbGxfZXBpMzIoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19zbGxpX2VwaTMyKF9fbTEyOGkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BLCB1bnNpZ25lZCBpbnQgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX3NsbGlfZXBpMzIoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9zbGxpX2VwaTMyKF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIHVuc2lnbmVkIGludCBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfbW1fc2xsaV9lcGkzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX3NldHplcm9fc2kxMjgoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX3NsbGlfZXBpMzIoX19tMjU2aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EsIHVuc2lnbmVkIGludCBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfc2xsaV9lcGkzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X3NsbGlfZXBpMzIoX19tbWFzazggX19VLCBfX20yNTZpIF9fQSwgdW5zaWduZWQgaW50IF9fQikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9zbGxpX2VwaTMyKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfc2xsX2VwaTY0KF9fbTEyOGkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9zbGxfZXBpNjQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9zbGxfZXBpNjQoX19tbWFzazggX19VLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfbW1fc2xsX2VwaTY0KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfc2xsX2VwaTY0KF9fbTI1NmkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9zbGxfZXBpNjQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9zbGxfZXBpNjQoX19tbWFzazggX19VLCBfX20yNTZpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfc2xsX2VwaTY0KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfc2xsaV9lcGk2NChfX20xMjhpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhpIF9fQSwgdW5zaWduZWQgaW50IF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9zbGxpX2VwaTY0KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfc2xsaV9lcGk2NChfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BLCB1bnNpZ25lZCBpbnQgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX21tX3NsbGlfZXBpNjQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19zbGxpX2VwaTY0KF9fbTI1NmkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19BLCB1bnNpZ25lZCBpbnQgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX21tMjU2X3NsbGlfZXBpNjQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9zbGxpX2VwaTY0KF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EsIHVuc2lnbmVkIGludCBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfc2xsaV9lcGk2NChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX21tMjU2X3NldHplcm9fc2kyNTYoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9yb3J2X2VwaTMyIChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHJvcnZkMTI4KChfX3Y0c2kpX19BLCAoX192NHNpKV9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3JvcnZfZXBpMzIgKF9fbTEyOGkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzEyOChfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX3JvcnZfZXBpMzIoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9yb3J2X2VwaTMyIChfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzEyOChfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX3JvcnZfZXBpMzIoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfcm9ydl9lcGkzMiAoX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3Byb3J2ZDI1NigoX192OHNpKV9fQSwgKF9fdjhzaSlfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19yb3J2X2VwaTMyIChfX20yNTZpIF9fVywgX19tbWFzazggX19VLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8yNTYoX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X3JvcnZfZXBpMzIoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X3JvcnZfZXBpMzIgKF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMjU2KF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9yb3J2X2VwaTMyKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fcm9ydl9lcGk2NCAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3Byb3J2cTEyOCgoX192MmRpKV9fQSwgKF9fdjJkaSlfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19yb3J2X2VwaTY0IChfX20xMjhpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8xMjgoX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9yb3J2X2VwaTY0KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfcm9ydl9lcGk2NCAoX19tbWFzazggX19VLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8xMjgoX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9yb3J2X2VwaTY0KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X3JvcnZfZXBpNjQgKF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9wcm9ydnEyNTYoKF9fdjRkaSlfX0EsIChfX3Y0ZGkpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfcm9ydl9lcGk2NCAoX19tMjU2aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMjU2KF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9yb3J2X2VwaTY0KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9yb3J2X2VwaTY0IChfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzI1NihfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfcm9ydl9lcGk2NChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfc2xsdl9lcGk2NChfX20xMjhpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhpIF9fWCwgX19tMTI4aSBfX1kpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfbW1fc2xsdl9lcGk2NChfX1gsIF9fWSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X3NsbHZfZXBpNjQoX19tbWFzazggX19VLCBfX20xMjhpIF9fWCwgX19tMTI4aSBfX1kpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfbW1fc2xsdl9lcGk2NChfX1gsIF9fWSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX21tX3NldHplcm9fc2kxMjgoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX3NsbHZfZXBpNjQoX19tMjU2aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX1gsIF9fbTI1NmkgX19ZKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfc2xsdl9lcGk2NChfX1gsIF9fWSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfc2xsdl9lcGk2NChfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19YLCBfX20yNTZpIF9fWSkKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX21tMjU2X3NsbHZfZXBpNjQoX19YLCBfX1kpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX21tMjU2X3NldHplcm9fc2kyNTYoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3NsbHZfZXBpMzIoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX1gsIF9fbTEyOGkgX19ZKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX3NsbHZfZXBpMzIoX19YLCBfX1kpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9zbGx2X2VwaTMyKF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX1gsIF9fbTEyOGkgX19ZKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX3NsbHZfZXBpMzIoX19YLCBfX1kpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19zbGx2X2VwaTMyKF9fbTI1NmkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19YLCBfX20yNTZpIF9fWSkKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X3NsbHZfZXBpMzIoX19YLCBfX1kpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X3NsbHZfZXBpMzIoX19tbWFzazggX19VLCBfX20yNTZpIF9fWCwgX19tMjU2aSBfX1kpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9zbGx2X2VwaTMyKF9fWCwgX19ZKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19zcmx2X2VwaTY0KF9fbTEyOGkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19YLCBfX20xMjhpIF9fWSkKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9zcmx2X2VwaTY0KF9fWCwgX19ZKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfc3Jsdl9lcGk2NChfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19YLCBfX20xMjhpIF9fWSkKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9zcmx2X2VwaTY0KF9fWCwgX19ZKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfc3Jsdl9lcGk2NChfX20yNTZpIF9fVywgX19tbWFzazggX19VLCBfX20yNTZpIF9fWCwgX19tMjU2aSBfX1kpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9zcmx2X2VwaTY0KF9fWCwgX19ZKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9zcmx2X2VwaTY0KF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX1gsIF9fbTI1NmkgX19ZKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfc3Jsdl9lcGk2NChfX1gsIF9fWSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfc3Jsdl9lcGkzMihfX20xMjhpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhpIF9fWCwgX19tMTI4aSBfX1kpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9zcmx2X2VwaTMyKF9fWCwgX19ZKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9zcmx2X2VwaTMyKF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX1gsIF9fbTEyOGkgX19ZKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfbW1fc3Jsdl9lcGkzMihfX1gsIF9fWSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfc3Jsdl9lcGkzMihfX20yNTZpIF9fVywgX19tbWFzazggX19VLCBfX20yNTZpIF9fWCwgX19tMjU2aSBfX1kpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9zcmx2X2VwaTMyKF9fWCwgX19ZKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9zcmx2X2VwaTMyKF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX1gsIF9fbTI1NmkgX19ZKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfc3Jsdl9lcGkzMihfX1gsIF9fWSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfc3JsX2VwaTMyKF9fbTEyOGkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9zcmxfZXBpMzIoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9zcmxfZXBpMzIoX19tbWFzazggX19VLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfbW1fc3JsX2VwaTMyKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfc3JsX2VwaTMyKF9fbTI1NmkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9zcmxfZXBpMzIoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9zcmxfZXBpMzIoX19tbWFzazggX19VLCBfX20yNTZpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfc3JsX2VwaTMyKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfc3JsaV9lcGkzMihfX20xMjhpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhpIF9fQSwgdW5zaWduZWQgaW50IF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9zcmxpX2VwaTMyKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfc3JsaV9lcGkzMihfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BLCB1bnNpZ25lZCBpbnQgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX3NybGlfZXBpMzIoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19zcmxpX2VwaTMyKF9fbTI1NmkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19BLCB1bnNpZ25lZCBpbnQgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X3NybGlfZXBpMzIoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9zcmxpX2VwaTMyKF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EsIHVuc2lnbmVkIGludCBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfc3JsaV9lcGkzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X3NldHplcm9fc2kyNTYoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3NybF9lcGk2NChfX20xMjhpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfbW1fc3JsX2VwaTY0KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfc3JsX2VwaTY0KF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX21tX3NybF9lcGk2NChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX21tX3NldHplcm9fc2kxMjgoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX3NybF9lcGk2NChfX20yNTZpIF9fVywgX19tbWFzazggX19VLCBfX20yNTZpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfc3JsX2VwaTY0KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfc3JsX2VwaTY0KF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX21tMjU2X3NybF9lcGk2NChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX21tMjU2X3NldHplcm9fc2kyNTYoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3NybGlfZXBpNjQoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIHVuc2lnbmVkIGludCBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfbW1fc3JsaV9lcGk2NChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X3NybGlfZXBpNjQoX19tbWFzazggX19VLCBfX20xMjhpIF9fQSwgdW5zaWduZWQgaW50IF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9zcmxpX2VwaTY0KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfc3JsaV9lcGk2NChfX20yNTZpIF9fVywgX19tbWFzazggX19VLCBfX20yNTZpIF9fQSwgdW5zaWduZWQgaW50IF9fQikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9zcmxpX2VwaTY0KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfc3JsaV9lcGk2NChfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19BLCB1bnNpZ25lZCBpbnQgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX21tMjU2X3NybGlfZXBpNjQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19zcmF2X2VwaTMyKF9fbTEyOGkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19YLCBfX20xMjhpIF9fWSkKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX3NyYXZfZXBpMzIoX19YLCBfX1kpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X3NyYXZfZXBpMzIoX19tbWFzazggX19VLCBfX20xMjhpIF9fWCwgX19tMTI4aSBfX1kpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9zcmF2X2VwaTMyKF9fWCwgX19ZKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19zcmF2X2VwaTMyKF9fbTI1NmkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19YLCBfX20yNTZpIF9fWSkKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X3NyYXZfZXBpMzIoX19YLCBfX1kpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X3NyYXZfZXBpMzIoX19tbWFzazggX19VLCBfX20yNTZpIF9fWCwgX19tMjU2aSBfX1kpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9zcmF2X2VwaTMyKF9fWCwgX19ZKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fc3Jhdl9lcGk2NChfX20xMjhpIF9fWCwgX19tMTI4aSBfX1kpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNyYXZxMTI4KChfX3YyZGkpX19YLCAoX192MmRpKV9fWSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3NyYXZfZXBpNjQoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX1gsIF9fbTEyOGkgX19ZKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX21tX3NyYXZfZXBpNjQoX19YLCBfX1kpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9zcmF2X2VwaTY0KF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX1gsIF9fbTEyOGkgX19ZKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX21tX3NyYXZfZXBpNjQoX19YLCBfX1kpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfc3Jhdl9lcGk2NChfX20yNTZpIF9fWCwgX19tMjU2aSBfX1kpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfcHNyYXZxMjU2KChfX3Y0ZGkpX19YLCAoX192NGRpKSBfX1kpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19zcmF2X2VwaTY0KF9fbTI1NmkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19YLCBfX20yNTZpIF9fWSkKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9zcmF2X2VwaTY0KF9fWCwgX19ZKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfc3Jhdl9lcGk2NCAoX19tbWFzazggX19VLCBfX20yNTZpIF9fWCwgX19tMjU2aSBfX1kpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfc3Jhdl9lcGk2NChfX1gsIF9fWSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX21tMjU2X3NldHplcm9fc2kyNTYoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX21vdl9lcGkzMiAoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMTI4ICgoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICAoX192NHNpKSBfX0EsCiAgICAgICAgICAgICAgICAgKF9fdjRzaSkgX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X21vdl9lcGkzMiAoX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfc2VsZWN0ZF8xMjggKChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgIChfX3Y0c2kpIF9fQSwKICAgICAgICAgICAgICAgICAoX192NHNpKSBfbW1fc2V0emVyb19zaTEyOCAoKSk7Cn0KCgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19tb3ZfZXBpMzIgKF9fbTI1NmkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19BKQp7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzI1NiAoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgKF9fdjhzaSkgX19BLAogICAgICAgICAgICAgICAgIChfX3Y4c2kpIF9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9tb3ZfZXBpMzIgKF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EpCnsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMjU2ICgoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICAoX192OHNpKSBfX0EsCiAgICAgICAgICAgICAgICAgKF9fdjhzaSkgX21tMjU2X3NldHplcm9fc2kyNTYgKCkpOwp9CgpzdGF0aWMgX19pbmxpbmUgX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX2xvYWRfZXBpMzIgKHZvaWQgY29uc3QgKl9fUCkKewogIHJldHVybiAqKGNvbnN0IF9fbTEyOGkgKikgX19QOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19sb2FkX2VwaTMyIChfX20xMjhpIF9fVywgX19tbWFzazggX19VLCB2b2lkIGNvbnN0ICpfX1ApCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX21vdmRxYTMybG9hZDEyOF9tYXNrICgoY29uc3QgX192NHNpICopIF9fUCwKICAgICAgICAgICAgICAoX192NHNpKSBfX1csCiAgICAgICAgICAgICAgKF9fbW1hc2s4KQogICAgICAgICAgICAgIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9sb2FkX2VwaTMyIChfX21tYXNrOCBfX1UsIHZvaWQgY29uc3QgKl9fUCkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfbW92ZHFhMzJsb2FkMTI4X21hc2sgKChjb25zdCBfX3Y0c2kgKikgX19QLAogICAgICAgICAgICAgIChfX3Y0c2kpCiAgICAgICAgICAgICAgX21tX3NldHplcm9fc2kxMjggKCksCiAgICAgICAgICAgICAgKF9fbW1hc2s4KQogICAgICAgICAgICAgIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZSBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbG9hZF9lcGkzMiAodm9pZCBjb25zdCAqX19QKQp7CiAgcmV0dXJuICooY29uc3QgX19tMjU2aSAqKSBfX1A7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2xvYWRfZXBpMzIgKF9fbTI1NmkgX19XLCBfX21tYXNrOCBfX1UsIHZvaWQgY29uc3QgKl9fUCkKewogIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfbW92ZHFhMzJsb2FkMjU2X21hc2sgKChjb25zdCBfX3Y4c2kgKikgX19QLAogICAgICAgICAgICAgIChfX3Y4c2kpIF9fVywKICAgICAgICAgICAgICAoX19tbWFzazgpCiAgICAgICAgICAgICAgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2xvYWRfZXBpMzIgKF9fbW1hc2s4IF9fVSwgdm9pZCBjb25zdCAqX19QKQp7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl9tb3ZkcWEzMmxvYWQyNTZfbWFzayAoKGNvbnN0IF9fdjhzaSAqKSBfX1AsCiAgICAgICAgICAgICAgKF9fdjhzaSkKICAgICAgICAgICAgICBfbW0yNTZfc2V0emVyb19zaTI1NiAoKSwKICAgICAgICAgICAgICAoX19tbWFzazgpCiAgICAgICAgICAgICAgX19VKTsKfQoKc3RhdGljIF9faW5saW5lIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9zdG9yZV9lcGkzMiAodm9pZCAqX19QLCBfX20xMjhpIF9fQSkKewogICooX19tMTI4aSAqKSBfX1AgPSBfX0E7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3N0b3JlX2VwaTMyICh2b2lkICpfX1AsIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EpCnsKICBfX2J1aWx0aW5faWEzMl9tb3ZkcWEzMnN0b3JlMTI4X21hc2sgKChfX3Y0c2kgKikgX19QLAogICAgICAgICAgKF9fdjRzaSkgX19BLAogICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmUgdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X3N0b3JlX2VwaTMyICh2b2lkICpfX1AsIF9fbTI1NmkgX19BKQp7CiAgKihfX20yNTZpICopIF9fUCA9IF9fQTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfc3RvcmVfZXBpMzIgKHZvaWQgKl9fUCwgX19tbWFzazggX19VLCBfX20yNTZpIF9fQSkKewogIF9fYnVpbHRpbl9pYTMyX21vdmRxYTMyc3RvcmUyNTZfbWFzayAoKF9fdjhzaSAqKSBfX1AsCiAgICAgICAgICAoX192OHNpKSBfX0EsCiAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX21vdl9lcGk2NCAoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMTI4ICgoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICAoX192MmRpKSBfX0EsCiAgICAgICAgICAgICAgICAgKF9fdjJkaSkgX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X21vdl9lcGk2NCAoX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfc2VsZWN0cV8xMjggKChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgIChfX3YyZGkpIF9fQSwKICAgICAgICAgICAgICAgICAoX192MmRpKSBfbW1fc2V0emVyb19zaTEyOCAoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX21vdl9lcGk2NCAoX19tMjU2aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EpCnsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMjU2ICgoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICAoX192NGRpKSBfX0EsCiAgICAgICAgICAgICAgICAgKF9fdjRkaSkgX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X21vdl9lcGk2NCAoX19tbWFzazggX19VLCBfX20yNTZpIF9fQSkKewogIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfc2VsZWN0cV8yNTYgKChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgIChfX3Y0ZGkpIF9fQSwKICAgICAgICAgICAgICAgICAoX192NGRpKSBfbW0yNTZfc2V0emVyb19zaTI1NiAoKSk7Cn0KCnN0YXRpYyBfX2lubGluZSBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbG9hZF9lcGk2NCAodm9pZCBjb25zdCAqX19QKQp7CiAgcmV0dXJuICooY29uc3QgX19tMTI4aSAqKSBfX1A7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2xvYWRfZXBpNjQgKF9fbTEyOGkgX19XLCBfX21tYXNrOCBfX1UsIHZvaWQgY29uc3QgKl9fUCkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfbW92ZHFhNjRsb2FkMTI4X21hc2sgKChjb25zdCBfX3YyZGkgKikgX19QLAogICAgICAgICAgICAgIChfX3YyZGkpIF9fVywKICAgICAgICAgICAgICAoX19tbWFzazgpCiAgICAgICAgICAgICAgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2xvYWRfZXBpNjQgKF9fbW1hc2s4IF9fVSwgdm9pZCBjb25zdCAqX19QKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9tb3ZkcWE2NGxvYWQxMjhfbWFzayAoKGNvbnN0IF9fdjJkaSAqKSBfX1AsCiAgICAgICAgICAgICAgKF9fdjJkaSkKICAgICAgICAgICAgICBfbW1fc2V0emVyb19zaTEyOCAoKSwKICAgICAgICAgICAgICAoX19tbWFzazgpCiAgICAgICAgICAgICAgX19VKTsKfQoKc3RhdGljIF9faW5saW5lIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9sb2FkX2VwaTY0ICh2b2lkIGNvbnN0ICpfX1ApCnsKICByZXR1cm4gKihjb25zdCBfX20yNTZpICopIF9fUDsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfbG9hZF9lcGk2NCAoX19tMjU2aSBfX1csIF9fbW1hc2s4IF9fVSwgdm9pZCBjb25zdCAqX19QKQp7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl9tb3ZkcWE2NGxvYWQyNTZfbWFzayAoKGNvbnN0IF9fdjRkaSAqKSBfX1AsCiAgICAgICAgICAgICAgKF9fdjRkaSkgX19XLAogICAgICAgICAgICAgIChfX21tYXNrOCkKICAgICAgICAgICAgICBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfbG9hZF9lcGk2NCAoX19tbWFzazggX19VLCB2b2lkIGNvbnN0ICpfX1ApCnsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX21vdmRxYTY0bG9hZDI1Nl9tYXNrICgoY29uc3QgX192NGRpICopIF9fUCwKICAgICAgICAgICAgICAoX192NGRpKQogICAgICAgICAgICAgIF9tbTI1Nl9zZXR6ZXJvX3NpMjU2ICgpLAogICAgICAgICAgICAgIChfX21tYXNrOCkKICAgICAgICAgICAgICBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmUgdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX3N0b3JlX2VwaTY0ICh2b2lkICpfX1AsIF9fbTEyOGkgX19BKQp7CiAgKihfX20xMjhpICopIF9fUCA9IF9fQTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfc3RvcmVfZXBpNjQgKHZvaWQgKl9fUCwgX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkKewogIF9fYnVpbHRpbl9pYTMyX21vdmRxYTY0c3RvcmUxMjhfbWFzayAoKF9fdjJkaSAqKSBfX1AsCiAgICAgICAgICAoX192MmRpKSBfX0EsCiAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZSB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfc3RvcmVfZXBpNjQgKHZvaWQgKl9fUCwgX19tMjU2aSBfX0EpCnsKICAqKF9fbTI1NmkgKikgX19QID0gX19BOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19zdG9yZV9lcGk2NCAodm9pZCAqX19QLCBfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19BKQp7CiAgX19idWlsdGluX2lhMzJfbW92ZHFhNjRzdG9yZTI1Nl9tYXNrICgoX192NGRpICopIF9fUCwKICAgICAgICAgIChfX3Y0ZGkpIF9fQSwKICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfbW92ZWR1cF9wZCAoX19tMTI4ZCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4ZCBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9tbV9tb3ZlZHVwX3BkKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9tb3ZlZHVwX3BkIChfX21tYXNrOCBfX1UsIF9fbTEyOGQgX19BKQp7CiAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfbW1fbW92ZWR1cF9wZChfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfbW1fc2V0emVyb19wZCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfbW92ZWR1cF9wZCAoX19tMjU2ZCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2ZCBfX0EpCnsKICByZXR1cm4gKF9fbTI1NmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9tbTI1Nl9tb3ZlZHVwX3BkKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9tb3ZlZHVwX3BkIChfX21tYXNrOCBfX1UsIF9fbTI1NmQgX19BKQp7CiAgcmV0dXJuIChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZilfbW0yNTZfbW92ZWR1cF9wZChfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZilfbW0yNTZfc2V0emVyb19wZCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfc2V0MV9lcGkzMihfX20xMjhpIF9fTywgX19tbWFzazggX19NLCBpbnQgX19BKQp7CiAgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzEyOChfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKSBfbW1fc2V0MV9lcGkzMihfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfX08pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfc2V0MV9lcGkzMiggX19tbWFzazggX19NLCBpbnQgX19BKQp7CiAgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzEyOChfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKSBfbW1fc2V0MV9lcGkzMihfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfc2V0MV9lcGkzMihfX20yNTZpIF9fTywgX19tbWFzazggX19NLCBpbnQgX19BKQp7CiAgIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzI1NihfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKSBfbW0yNTZfc2V0MV9lcGkzMihfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfX08pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfc2V0MV9lcGkzMiggX19tbWFzazggX19NLCBpbnQgX19BKQp7CiAgIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzI1NihfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKSBfbW0yNTZfc2V0MV9lcGkzMihfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3NldDFfZXBpNjQgKF9fbTEyOGkgX19PLCBfX21tYXNrOCBfX00sIGxvbmcgbG9uZyBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMTI4KF9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpIF9tbV9zZXQxX2VwaTY0eChfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSkgX19PKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X3NldDFfZXBpNjQgKF9fbW1hc2s4IF9fTSwgbG9uZyBsb25nIF9fQSkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfc2VsZWN0cV8xMjgoX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSkgX21tX3NldDFfZXBpNjR4KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKSBfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfc2V0MV9lcGk2NCAoX19tMjU2aSBfX08sIF9fbW1hc2s4IF9fTSwgbG9uZyBsb25nIF9fQSkKewogIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfc2VsZWN0cV8yNTYoX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSkgX21tMjU2X3NldDFfZXBpNjR4KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKSBfX08pIDsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X3NldDFfZXBpNjQgKF9fbW1hc2s4IF9fTSwgbG9uZyBsb25nIF9fQSkKewogICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMjU2KF9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKSBfbW0yNTZfc2V0MV9lcGk2NHgoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKSBfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKI2RlZmluZSBfbW1fZml4dXBpbW1fcGQoQSwgQiwgQywgaW1tKSBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2ZpeHVwaW1tcGQxMjhfbWFzaygoX192MmRmKShfX20xMjhkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikoX19tMTI4ZCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpKF9fbTEyOGkpKEMpLCAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEpKQoKI2RlZmluZSBfbW1fbWFza19maXh1cGltbV9wZChBLCBVLCBCLCBDLCBpbW0pIFwKICAoKF9fbTEyOGQpX19idWlsdGluX2lhMzJfZml4dXBpbW1wZDEyOF9tYXNrKChfX3YyZGYpKF9fbTEyOGQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSkoX19tMTI4aSkoQyksIChpbnQpKGltbSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSkpKQoKI2RlZmluZSBfbW1fbWFza3pfZml4dXBpbW1fcGQoVSwgQSwgQiwgQywgaW1tKSBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2ZpeHVwaW1tcGQxMjhfbWFza3ooKF9fdjJkZikoX19tMTI4ZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpKF9fbTEyOGkpKEMpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoaW1tKSwgKF9fbW1hc2s4KShVKSkpCgojZGVmaW5lIF9tbTI1Nl9maXh1cGltbV9wZChBLCBCLCBDLCBpbW0pIFwKICAoKF9fbTI1NmQpX19idWlsdGluX2lhMzJfZml4dXBpbW1wZDI1Nl9tYXNrKChfX3Y0ZGYpKF9fbTI1NmQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKShfX20yNTZkKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSkoX19tMjU2aSkoQyksIChpbnQpKGltbSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSkpCgojZGVmaW5lIF9tbTI1Nl9tYXNrX2ZpeHVwaW1tX3BkKEEsIFUsIEIsIEMsIGltbSkgXAogICgoX19tMjU2ZClfX2J1aWx0aW5faWEzMl9maXh1cGltbXBkMjU2X21hc2soKF9fdjRkZikoX19tMjU2ZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpKF9fbTI1NmQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKShfX20yNTZpKShDKSwgKGludCkoaW1tKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSkpCgojZGVmaW5lIF9tbTI1Nl9tYXNrel9maXh1cGltbV9wZChVLCBBLCBCLCBDLCBpbW0pIFwKICAoKF9fbTI1NmQpX19idWlsdGluX2lhMzJfZml4dXBpbW1wZDI1Nl9tYXNreigoX192NGRmKShfX20yNTZkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpKF9fbTI1NmQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSkoX19tMjU2aSkoQyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShpbW0pLCAoX19tbWFzazgpKFUpKSkKCiNkZWZpbmUgX21tX2ZpeHVwaW1tX3BzKEEsIEIsIEMsIGltbSkgXAogICgoX19tMTI4KV9fYnVpbHRpbl9pYTMyX2ZpeHVwaW1tcHMxMjhfbWFzaygoX192NHNmKShfX20xMjgpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSkoX19tMTI4aSkoQyksIChpbnQpKGltbSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xKSkKCiNkZWZpbmUgX21tX21hc2tfZml4dXBpbW1fcHMoQSwgVSwgQiwgQywgaW1tKSBcCiAgKChfX20xMjgpX19idWlsdGluX2lhMzJfZml4dXBpbW1wczEyOF9tYXNrKChfX3Y0c2YpKF9fbTEyOCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikoX19tMTI4KShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKShfX20xMjhpKShDKSwgKGludCkoaW1tKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpKSkKCiNkZWZpbmUgX21tX21hc2t6X2ZpeHVwaW1tX3BzKFUsIEEsIEIsIEMsIGltbSkgXAogICgoX19tMTI4KV9fYnVpbHRpbl9pYTMyX2ZpeHVwaW1tcHMxMjhfbWFza3ooKF9fdjRzZikoX19tMTI4KShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikoX19tMTI4KShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSkoX19tMTI4aSkoQyksIChpbnQpKGltbSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSkpKQoKI2RlZmluZSBfbW0yNTZfZml4dXBpbW1fcHMoQSwgQiwgQywgaW1tKSBcCiAgKChfX20yNTYpX19idWlsdGluX2lhMzJfZml4dXBpbW1wczI1Nl9tYXNrKChfX3Y4c2YpKF9fbTI1NikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZikoX19tMjU2KShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKShfX20yNTZpKShDKSwgKGludCkoaW1tKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEpKQoKI2RlZmluZSBfbW0yNTZfbWFza19maXh1cGltbV9wcyhBLCBVLCBCLCBDLCBpbW0pIFwKICAoKF9fbTI1NilfX2J1aWx0aW5faWEzMl9maXh1cGltbXBzMjU2X21hc2soKF9fdjhzZikoX19tMjU2KShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKShfX20yNTYpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpKF9fbTI1NmkpKEMpLCAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSkpKQoKI2RlZmluZSBfbW0yNTZfbWFza3pfZml4dXBpbW1fcHMoVSwgQSwgQiwgQywgaW1tKSBcCiAgKChfX20yNTYpX19idWlsdGluX2lhMzJfZml4dXBpbW1wczI1Nl9tYXNreigoX192OHNmKShfX20yNTYpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKShfX20yNTYpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKShfX20yNTZpKShDKSwgKGludCkoaW1tKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19sb2FkX3BkIChfX20xMjhkIF9fVywgX19tbWFzazggX19VLCB2b2lkIGNvbnN0ICpfX1ApCnsKICByZXR1cm4gKF9fbTEyOGQpIF9fYnVpbHRpbl9pYTMyX2xvYWRhcGQxMjhfbWFzayAoKGNvbnN0IF9fdjJkZiAqKSBfX1AsCiAgICAgICAgICAgICAgIChfX3YyZGYpIF9fVywKICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfbG9hZF9wZCAoX19tbWFzazggX19VLCB2b2lkIGNvbnN0ICpfX1ApCnsKICByZXR1cm4gKF9fbTEyOGQpIF9fYnVpbHRpbl9pYTMyX2xvYWRhcGQxMjhfbWFzayAoKGNvbnN0IF9fdjJkZiAqKSBfX1AsCiAgICAgICAgICAgICAgIChfX3YyZGYpCiAgICAgICAgICAgICAgIF9tbV9zZXR6ZXJvX3BkICgpLAogICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2xvYWRfcGQgKF9fbTI1NmQgX19XLCBfX21tYXNrOCBfX1UsIHZvaWQgY29uc3QgKl9fUCkKewogIHJldHVybiAoX19tMjU2ZCkgX19idWlsdGluX2lhMzJfbG9hZGFwZDI1Nl9tYXNrICgoY29uc3QgX192NGRmICopIF9fUCwKICAgICAgICAgICAgICAgKF9fdjRkZikgX19XLAogICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9sb2FkX3BkIChfX21tYXNrOCBfX1UsIHZvaWQgY29uc3QgKl9fUCkKewogIHJldHVybiAoX19tMjU2ZCkgX19idWlsdGluX2lhMzJfbG9hZGFwZDI1Nl9tYXNrICgoY29uc3QgX192NGRmICopIF9fUCwKICAgICAgICAgICAgICAgKF9fdjRkZikKICAgICAgICAgICAgICAgX21tMjU2X3NldHplcm9fcGQgKCksCiAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19sb2FkX3BzIChfX20xMjggX19XLCBfX21tYXNrOCBfX1UsIHZvaWQgY29uc3QgKl9fUCkKewogIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9sb2FkYXBzMTI4X21hc2sgKChjb25zdCBfX3Y0c2YgKikgX19QLAogICAgICAgICAgICAgIChfX3Y0c2YpIF9fVywKICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2xvYWRfcHMgKF9fbW1hc2s4IF9fVSwgdm9pZCBjb25zdCAqX19QKQp7CiAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX2xvYWRhcHMxMjhfbWFzayAoKGNvbnN0IF9fdjRzZiAqKSBfX1AsCiAgICAgICAgICAgICAgKF9fdjRzZikKICAgICAgICAgICAgICBfbW1fc2V0emVyb19wcyAoKSwKICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfbG9hZF9wcyAoX19tMjU2IF9fVywgX19tbWFzazggX19VLCB2b2lkIGNvbnN0ICpfX1ApCnsKICByZXR1cm4gKF9fbTI1NikgX19idWlsdGluX2lhMzJfbG9hZGFwczI1Nl9tYXNrICgoY29uc3QgX192OHNmICopIF9fUCwKICAgICAgICAgICAgICAoX192OHNmKSBfX1csCiAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9sb2FkX3BzIChfX21tYXNrOCBfX1UsIHZvaWQgY29uc3QgKl9fUCkKewogIHJldHVybiAoX19tMjU2KSBfX2J1aWx0aW5faWEzMl9sb2FkYXBzMjU2X21hc2sgKChjb25zdCBfX3Y4c2YgKikgX19QLAogICAgICAgICAgICAgIChfX3Y4c2YpCiAgICAgICAgICAgICAgX21tMjU2X3NldHplcm9fcHMgKCksCiAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmUgX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX2xvYWR1X2VwaTY0ICh2b2lkIGNvbnN0ICpfX1ApCnsKICBzdHJ1Y3QgX19sb2FkdV9lcGk2NCB7CiAgICBfX20xMjhpX3UgX192OwogIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOwogIHJldHVybiAoKGNvbnN0IHN0cnVjdCBfX2xvYWR1X2VwaTY0KilfX1ApLT5fX3Y7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2xvYWR1X2VwaTY0IChfX20xMjhpIF9fVywgX19tbWFzazggX19VLCB2b2lkIGNvbnN0ICpfX1ApCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX2xvYWRkcXVkaTEyOF9tYXNrICgoY29uc3QgX192MmRpICopIF9fUCwKICAgICAgICAgICAgICAgICAoX192MmRpKSBfX1csCiAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfbG9hZHVfZXBpNjQgKF9fbW1hc2s4IF9fVSwgdm9pZCBjb25zdCAqX19QKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9sb2FkZHF1ZGkxMjhfbWFzayAoKGNvbnN0IF9fdjJkaSAqKSBfX1AsCiAgICAgICAgICAgICAgICAgKF9fdjJkaSkKICAgICAgICAgICAgICAgICBfbW1fc2V0emVyb19zaTEyOCAoKSwKICAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZSBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbG9hZHVfZXBpNjQgKHZvaWQgY29uc3QgKl9fUCkKewogIHN0cnVjdCBfX2xvYWR1X2VwaTY0IHsKICAgIF9fbTI1NmlfdSBfX3Y7CiAgfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19fKSk7CiAgcmV0dXJuICgoY29uc3Qgc3RydWN0IF9fbG9hZHVfZXBpNjQqKV9fUCktPl9fdjsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfbG9hZHVfZXBpNjQgKF9fbTI1NmkgX19XLCBfX21tYXNrOCBfX1UsIHZvaWQgY29uc3QgKl9fUCkKewogIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfbG9hZGRxdWRpMjU2X21hc2sgKChjb25zdCBfX3Y0ZGkgKikgX19QLAogICAgICAgICAgICAgICAgIChfX3Y0ZGkpIF9fVywKICAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9sb2FkdV9lcGk2NCAoX19tbWFzazggX19VLCB2b2lkIGNvbnN0ICpfX1ApCnsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX2xvYWRkcXVkaTI1Nl9tYXNrICgoY29uc3QgX192NGRpICopIF9fUCwKICAgICAgICAgICAgICAgICAoX192NGRpKQogICAgICAgICAgICAgICAgIF9tbTI1Nl9zZXR6ZXJvX3NpMjU2ICgpLAogICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9sb2FkdV9lcGkzMiAodm9pZCBjb25zdCAqX19QKQp7CiAgc3RydWN0IF9fbG9hZHVfZXBpMzIgewogICAgX19tMTI4aV91IF9fdjsKICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsKICByZXR1cm4gKChjb25zdCBzdHJ1Y3QgX19sb2FkdV9lcGkzMiopX19QKS0+X192Owp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19sb2FkdV9lcGkzMiAoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgdm9pZCBjb25zdCAqX19QKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9sb2FkZHF1c2kxMjhfbWFzayAoKGNvbnN0IF9fdjRzaSAqKSBfX1AsCiAgICAgICAgICAgICAgICAgKF9fdjRzaSkgX19XLAogICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2xvYWR1X2VwaTMyIChfX21tYXNrOCBfX1UsIHZvaWQgY29uc3QgKl9fUCkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfbG9hZGRxdXNpMTI4X21hc2sgKChjb25zdCBfX3Y0c2kgKikgX19QLAogICAgICAgICAgICAgICAgIChfX3Y0c2kpCiAgICAgICAgICAgICAgICAgX21tX3NldHplcm9fc2kxMjggKCksCiAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmUgX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2xvYWR1X2VwaTMyICh2b2lkIGNvbnN0ICpfX1ApCnsKICBzdHJ1Y3QgX19sb2FkdV9lcGkzMiB7CiAgICBfX20yNTZpX3UgX192OwogIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOwogIHJldHVybiAoKGNvbnN0IHN0cnVjdCBfX2xvYWR1X2VwaTMyKilfX1ApLT5fX3Y7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2xvYWR1X2VwaTMyIChfX20yNTZpIF9fVywgX19tbWFzazggX19VLCB2b2lkIGNvbnN0ICpfX1ApCnsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX2xvYWRkcXVzaTI1Nl9tYXNrICgoY29uc3QgX192OHNpICopIF9fUCwKICAgICAgICAgICAgICAgICAoX192OHNpKSBfX1csCiAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfbG9hZHVfZXBpMzIgKF9fbW1hc2s4IF9fVSwgdm9pZCBjb25zdCAqX19QKQp7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl9sb2FkZHF1c2kyNTZfbWFzayAoKGNvbnN0IF9fdjhzaSAqKSBfX1AsCiAgICAgICAgICAgICAgICAgKF9fdjhzaSkKICAgICAgICAgICAgICAgICBfbW0yNTZfc2V0emVyb19zaTI1NiAoKSwKICAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2xvYWR1X3BkIChfX20xMjhkIF9fVywgX19tbWFzazggX19VLCB2b2lkIGNvbnN0ICpfX1ApCnsKICByZXR1cm4gKF9fbTEyOGQpIF9fYnVpbHRpbl9pYTMyX2xvYWR1cGQxMjhfbWFzayAoKGNvbnN0IF9fdjJkZiAqKSBfX1AsCiAgICAgICAgICAgICAgIChfX3YyZGYpIF9fVywKICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfbG9hZHVfcGQgKF9fbW1hc2s4IF9fVSwgdm9pZCBjb25zdCAqX19QKQp7CiAgcmV0dXJuIChfX20xMjhkKSBfX2J1aWx0aW5faWEzMl9sb2FkdXBkMTI4X21hc2sgKChjb25zdCBfX3YyZGYgKikgX19QLAogICAgICAgICAgICAgICAoX192MmRmKQogICAgICAgICAgICAgICBfbW1fc2V0emVyb19wZCAoKSwKICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19sb2FkdV9wZCAoX19tMjU2ZCBfX1csIF9fbW1hc2s4IF9fVSwgdm9pZCBjb25zdCAqX19QKQp7CiAgcmV0dXJuIChfX20yNTZkKSBfX2J1aWx0aW5faWEzMl9sb2FkdXBkMjU2X21hc2sgKChjb25zdCBfX3Y0ZGYgKikgX19QLAogICAgICAgICAgICAgICAoX192NGRmKSBfX1csCiAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2xvYWR1X3BkIChfX21tYXNrOCBfX1UsIHZvaWQgY29uc3QgKl9fUCkKewogIHJldHVybiAoX19tMjU2ZCkgX19idWlsdGluX2lhMzJfbG9hZHVwZDI1Nl9tYXNrICgoY29uc3QgX192NGRmICopIF9fUCwKICAgICAgICAgICAgICAgKF9fdjRkZikKICAgICAgICAgICAgICAgX21tMjU2X3NldHplcm9fcGQgKCksCiAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19sb2FkdV9wcyAoX19tMTI4IF9fVywgX19tbWFzazggX19VLCB2b2lkIGNvbnN0ICpfX1ApCnsKICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfbG9hZHVwczEyOF9tYXNrICgoY29uc3QgX192NHNmICopIF9fUCwKICAgICAgICAgICAgICAoX192NHNmKSBfX1csCiAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9sb2FkdV9wcyAoX19tbWFzazggX19VLCB2b2lkIGNvbnN0ICpfX1ApCnsKICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfbG9hZHVwczEyOF9tYXNrICgoY29uc3QgX192NHNmICopIF9fUCwKICAgICAgICAgICAgICAoX192NHNmKQogICAgICAgICAgICAgIF9tbV9zZXR6ZXJvX3BzICgpLAogICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19sb2FkdV9wcyAoX19tMjU2IF9fVywgX19tbWFzazggX19VLCB2b2lkIGNvbnN0ICpfX1ApCnsKICByZXR1cm4gKF9fbTI1NikgX19idWlsdGluX2lhMzJfbG9hZHVwczI1Nl9tYXNrICgoY29uc3QgX192OHNmICopIF9fUCwKICAgICAgICAgICAgICAoX192OHNmKSBfX1csCiAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9sb2FkdV9wcyAoX19tbWFzazggX19VLCB2b2lkIGNvbnN0ICpfX1ApCnsKICByZXR1cm4gKF9fbTI1NikgX19idWlsdGluX2lhMzJfbG9hZHVwczI1Nl9tYXNrICgoY29uc3QgX192OHNmICopIF9fUCwKICAgICAgICAgICAgICAoX192OHNmKQogICAgICAgICAgICAgIF9tbTI1Nl9zZXR6ZXJvX3BzICgpLAogICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfc3RvcmVfcGQgKHZvaWQgKl9fUCwgX19tbWFzazggX19VLCBfX20xMjhkIF9fQSkKewogIF9fYnVpbHRpbl9pYTMyX3N0b3JlYXBkMTI4X21hc2sgKChfX3YyZGYgKikgX19QLAogICAgICAgICAgIChfX3YyZGYpIF9fQSwKICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX3N0b3JlX3BkICh2b2lkICpfX1AsIF9fbW1hc2s4IF9fVSwgX19tMjU2ZCBfX0EpCnsKICBfX2J1aWx0aW5faWEzMl9zdG9yZWFwZDI1Nl9tYXNrICgoX192NGRmICopIF9fUCwKICAgICAgICAgICAoX192NGRmKSBfX0EsCiAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19zdG9yZV9wcyAodm9pZCAqX19QLCBfX21tYXNrOCBfX1UsIF9fbTEyOCBfX0EpCnsKICBfX2J1aWx0aW5faWEzMl9zdG9yZWFwczEyOF9tYXNrICgoX192NHNmICopIF9fUCwKICAgICAgICAgICAoX192NHNmKSBfX0EsCiAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19zdG9yZV9wcyAodm9pZCAqX19QLCBfX21tYXNrOCBfX1UsIF9fbTI1NiBfX0EpCnsKICBfX2J1aWx0aW5faWEzMl9zdG9yZWFwczI1Nl9tYXNrICgoX192OHNmICopIF9fUCwKICAgICAgICAgICAoX192OHNmKSBfX0EsCiAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmUgdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX3N0b3JldV9lcGk2NCAodm9pZCAqX19QLCBfX20xMjhpIF9fQSkKewogIHN0cnVjdCBfX3N0b3JldV9lcGk2NCB7CiAgICBfX20xMjhpX3UgX192OwogIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOwogICgoc3RydWN0IF9fc3RvcmV1X2VwaTY0KilfX1ApLT5fX3YgPSBfX0E7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3N0b3JldV9lcGk2NCAodm9pZCAqX19QLCBfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BKQp7CiAgX19idWlsdGluX2lhMzJfc3RvcmVkcXVkaTEyOF9tYXNrICgoX192MmRpICopIF9fUCwKICAgICAgICAgICAgIChfX3YyZGkpIF9fQSwKICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9zdG9yZXVfZXBpNjQgKHZvaWQgKl9fUCwgX19tMjU2aSBfX0EpCnsKICBzdHJ1Y3QgX19zdG9yZXVfZXBpNjQgewogICAgX19tMjU2aV91IF9fdjsKICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsKICAoKHN0cnVjdCBfX3N0b3JldV9lcGk2NCopX19QKS0+X192ID0gX19BOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19zdG9yZXVfZXBpNjQgKHZvaWQgKl9fUCwgX19tbWFzazggX19VLCBfX20yNTZpIF9fQSkKewogIF9fYnVpbHRpbl9pYTMyX3N0b3JlZHF1ZGkyNTZfbWFzayAoKF9fdjRkaSAqKSBfX1AsCiAgICAgICAgICAgICAoX192NGRpKSBfX0EsCiAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZSB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fc3RvcmV1X2VwaTMyICh2b2lkICpfX1AsIF9fbTEyOGkgX19BKQp7CiAgc3RydWN0IF9fc3RvcmV1X2VwaTMyIHsKICAgIF9fbTEyOGlfdSBfX3Y7CiAgfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19fKSk7CiAgKChzdHJ1Y3QgX19zdG9yZXVfZXBpMzIqKV9fUCktPl9fdiA9IF9fQTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfc3RvcmV1X2VwaTMyICh2b2lkICpfX1AsIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EpCnsKICBfX2J1aWx0aW5faWEzMl9zdG9yZWRxdXNpMTI4X21hc2sgKChfX3Y0c2kgKikgX19QLAogICAgICAgICAgICAgKF9fdjRzaSkgX19BLAogICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmUgdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X3N0b3JldV9lcGkzMiAodm9pZCAqX19QLCBfX20yNTZpIF9fQSkKewogIHN0cnVjdCBfX3N0b3JldV9lcGkzMiB7CiAgICBfX20yNTZpX3UgX192OwogIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOwogICgoc3RydWN0IF9fc3RvcmV1X2VwaTMyKilfX1ApLT5fX3YgPSBfX0E7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX3N0b3JldV9lcGkzMiAodm9pZCAqX19QLCBfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19BKQp7CiAgX19idWlsdGluX2lhMzJfc3RvcmVkcXVzaTI1Nl9tYXNrICgoX192OHNpICopIF9fUCwKICAgICAgICAgICAgIChfX3Y4c2kpIF9fQSwKICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfc3RvcmV1X3BkICh2b2lkICpfX1AsIF9fbW1hc2s4IF9fVSwgX19tMTI4ZCBfX0EpCnsKICBfX2J1aWx0aW5faWEzMl9zdG9yZXVwZDEyOF9tYXNrICgoX192MmRmICopIF9fUCwKICAgICAgICAgICAoX192MmRmKSBfX0EsCiAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19zdG9yZXVfcGQgKHZvaWQgKl9fUCwgX19tbWFzazggX19VLCBfX20yNTZkIF9fQSkKewogIF9fYnVpbHRpbl9pYTMyX3N0b3JldXBkMjU2X21hc2sgKChfX3Y0ZGYgKikgX19QLAogICAgICAgICAgIChfX3Y0ZGYpIF9fQSwKICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3N0b3JldV9wcyAodm9pZCAqX19QLCBfX21tYXNrOCBfX1UsIF9fbTEyOCBfX0EpCnsKICBfX2J1aWx0aW5faWEzMl9zdG9yZXVwczEyOF9tYXNrICgoX192NHNmICopIF9fUCwKICAgICAgICAgICAoX192NHNmKSBfX0EsCiAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19zdG9yZXVfcHMgKHZvaWQgKl9fUCwgX19tbWFzazggX19VLCBfX20yNTYgX19BKQp7CiAgX19idWlsdGluX2lhMzJfc3RvcmV1cHMyNTZfbWFzayAoKF9fdjhzZiAqKSBfX1AsCiAgICAgICAgICAgKF9fdjhzZikgX19BLAogICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3VucGFja2hpX3BkKF9fbTEyOGQgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikKewogIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX3VucGFja2hpX3BkKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X3VucGFja2hpX3BkKF9fbW1hc2s4IF9fVSwgX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQp7CiAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfbW1fdW5wYWNraGlfcGQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfbW1fc2V0emVyb19wZCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfdW5wYWNraGlfcGQoX19tMjU2ZCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2ZCBfX0EsIF9fbTI1NmQgX19CKQp7CiAgcmV0dXJuIChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZilfbW0yNTZfdW5wYWNraGlfcGQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfdW5wYWNraGlfcGQoX19tbWFzazggX19VLCBfX20yNTZkIF9fQSwgX19tMjU2ZCBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9tbTI1Nl91bnBhY2toaV9wZChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9tbTI1Nl9zZXR6ZXJvX3BkKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3VucGFja2hpX3BzKF9fbTEyOCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4IF9fQSwgX19tMTI4IF9fQikKewogIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9tbV91bnBhY2toaV9wcyhfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfdW5wYWNraGlfcHMoX19tbWFzazggX19VLCBfX20xMjggX19BLCBfX20xMjggX19CKQp7CiAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX3VucGFja2hpX3BzKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfbW1fc2V0emVyb19wcygpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza191bnBhY2toaV9wcyhfX20yNTYgX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NiBfX0EsIF9fbTI1NiBfX0IpCnsKICByZXR1cm4gKF9fbTI1NilfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX21tMjU2X3VucGFja2hpX3BzKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfdW5wYWNraGlfcHMoX19tbWFzazggX19VLCBfX20yNTYgX19BLCBfX20yNTYgX19CKQp7CiAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKV9tbTI1Nl91bnBhY2toaV9wcyhfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKV9tbTI1Nl9zZXR6ZXJvX3BzKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza191bnBhY2tsb19wZChfX20xMjhkIF9fVywgX19tbWFzazggX19VLCBfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9tbV91bnBhY2tsb19wZChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel91bnBhY2tsb19wZChfX21tYXNrOCBfX1UsIF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikKewogIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX3VucGFja2xvX3BkKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX3NldHplcm9fcGQoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX3VucGFja2xvX3BkKF9fbTI1NmQgX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NmQgX19BLCBfX20yNTZkIF9fQikKewogIHJldHVybiAoX19tMjU2ZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF8yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpX21tMjU2X3VucGFja2xvX3BkKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X3VucGFja2xvX3BkKF9fbW1hc2s4IF9fVSwgX19tMjU2ZCBfX0EsIF9fbTI1NmQgX19CKQp7CiAgcmV0dXJuIChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZilfbW0yNTZfdW5wYWNrbG9fcGQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZilfbW0yNTZfc2V0emVyb19wZCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza191bnBhY2tsb19wcyhfX20xMjggX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCnsKICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfbW1fdW5wYWNrbG9fcHMoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X3VucGFja2xvX3BzKF9fbW1hc2s4IF9fVSwgX19tMTI4IF9fQSwgX19tMTI4IF9fQikKewogIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9tbV91bnBhY2tsb19wcyhfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX3NldHplcm9fcHMoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfdW5wYWNrbG9fcHMoX19tMjU2IF9fVywgX19tbWFzazggX19VLCBfX20yNTYgX19BLCBfX20yNTYgX19CKQp7CiAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKV9tbTI1Nl91bnBhY2tsb19wcyhfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X3VucGFja2xvX3BzKF9fbW1hc2s4IF9fVSwgX19tMjU2IF9fQSwgX19tMjU2IF9fQikKewogIHJldHVybiAoX19tMjU2KV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZilfbW0yNTZfdW5wYWNrbG9fcHMoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZilfbW0yNTZfc2V0emVyb19wcygpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX3JjcDE0X3BkIChfX20xMjhkIF9fQSkKewogIHJldHVybiAoX19tMTI4ZCkgX19idWlsdGluX2lhMzJfcmNwMTRwZDEyOF9tYXNrICgoX192MmRmKSBfX0EsCiAgICAgICAgICAgICAgICAoX192MmRmKQogICAgICAgICAgICAgICAgX21tX3NldHplcm9fcGQgKCksCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIC0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfcmNwMTRfcGQgKF9fbTEyOGQgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGQgX19BKQp7CiAgcmV0dXJuIChfX20xMjhkKSBfX2J1aWx0aW5faWEzMl9yY3AxNHBkMTI4X21hc2sgKChfX3YyZGYpIF9fQSwKICAgICAgICAgICAgICAgIChfX3YyZGYpIF9fVywKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X3JjcDE0X3BkIChfX21tYXNrOCBfX1UsIF9fbTEyOGQgX19BKQp7CiAgcmV0dXJuIChfX20xMjhkKSBfX2J1aWx0aW5faWEzMl9yY3AxNHBkMTI4X21hc2sgKChfX3YyZGYpIF9fQSwKICAgICAgICAgICAgICAgIChfX3YyZGYpCiAgICAgICAgICAgICAgICBfbW1fc2V0emVyb19wZCAoKSwKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X3JjcDE0X3BkIChfX20yNTZkIF9fQSkKewogIHJldHVybiAoX19tMjU2ZCkgX19idWlsdGluX2lhMzJfcmNwMTRwZDI1Nl9tYXNrICgoX192NGRmKSBfX0EsCiAgICAgICAgICAgICAgICAoX192NGRmKQogICAgICAgICAgICAgICAgX21tMjU2X3NldHplcm9fcGQgKCksCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIC0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfcmNwMTRfcGQgKF9fbTI1NmQgX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NmQgX19BKQp7CiAgcmV0dXJuIChfX20yNTZkKSBfX2J1aWx0aW5faWEzMl9yY3AxNHBkMjU2X21hc2sgKChfX3Y0ZGYpIF9fQSwKICAgICAgICAgICAgICAgIChfX3Y0ZGYpIF9fVywKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X3JjcDE0X3BkIChfX21tYXNrOCBfX1UsIF9fbTI1NmQgX19BKQp7CiAgcmV0dXJuIChfX20yNTZkKSBfX2J1aWx0aW5faWEzMl9yY3AxNHBkMjU2X21hc2sgKChfX3Y0ZGYpIF9fQSwKICAgICAgICAgICAgICAgIChfX3Y0ZGYpCiAgICAgICAgICAgICAgICBfbW0yNTZfc2V0emVyb19wZCAoKSwKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fcmNwMTRfcHMgKF9fbTEyOCBfX0EpCnsKICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfcmNwMTRwczEyOF9tYXNrICgoX192NHNmKSBfX0EsCiAgICAgICAgICAgICAgIChfX3Y0c2YpCiAgICAgICAgICAgICAgIF9tbV9zZXR6ZXJvX3BzICgpLAogICAgICAgICAgICAgICAoX19tbWFzazgpIC0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19yY3AxNF9wcyAoX19tMTI4IF9fVywgX19tbWFzazggX19VLCBfX20xMjggX19BKQp7CiAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX3JjcDE0cHMxMjhfbWFzayAoKF9fdjRzZikgX19BLAogICAgICAgICAgICAgICAoX192NHNmKSBfX1csCiAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfcmNwMTRfcHMgKF9fbW1hc2s4IF9fVSwgX19tMTI4IF9fQSkKewogIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9yY3AxNHBzMTI4X21hc2sgKChfX3Y0c2YpIF9fQSwKICAgICAgICAgICAgICAgKF9fdjRzZikKICAgICAgICAgICAgICAgX21tX3NldHplcm9fcHMgKCksCiAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfcmNwMTRfcHMgKF9fbTI1NiBfX0EpCnsKICByZXR1cm4gKF9fbTI1NikgX19idWlsdGluX2lhMzJfcmNwMTRwczI1Nl9tYXNrICgoX192OHNmKSBfX0EsCiAgICAgICAgICAgICAgIChfX3Y4c2YpCiAgICAgICAgICAgICAgIF9tbTI1Nl9zZXR6ZXJvX3BzICgpLAogICAgICAgICAgICAgICAoX19tbWFzazgpIC0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19yY3AxNF9wcyAoX19tMjU2IF9fVywgX19tbWFzazggX19VLCBfX20yNTYgX19BKQp7CiAgcmV0dXJuIChfX20yNTYpIF9fYnVpbHRpbl9pYTMyX3JjcDE0cHMyNTZfbWFzayAoKF9fdjhzZikgX19BLAogICAgICAgICAgICAgICAoX192OHNmKSBfX1csCiAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfcmNwMTRfcHMgKF9fbW1hc2s4IF9fVSwgX19tMjU2IF9fQSkKewogIHJldHVybiAoX19tMjU2KSBfX2J1aWx0aW5faWEzMl9yY3AxNHBzMjU2X21hc2sgKChfX3Y4c2YpIF9fQSwKICAgICAgICAgICAgICAgKF9fdjhzZikKICAgICAgICAgICAgICAgX21tMjU2X3NldHplcm9fcHMgKCksCiAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKI2RlZmluZSBfbW1fbWFza19wZXJtdXRlX3BkKFcsIFUsIFgsIEMpIFwKICAoKF9fbTEyOGQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMTI4KChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX3Blcm11dGVfcGQoKFgpLCAoQykpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShXKSkpCgojZGVmaW5lIF9tbV9tYXNrel9wZXJtdXRlX3BkKFUsIFgsIEMpIFwKICAoKF9fbTEyOGQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMTI4KChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX3Blcm11dGVfcGQoKFgpLCAoQykpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9tbV9zZXR6ZXJvX3BkKCkpKQoKI2RlZmluZSBfbW0yNTZfbWFza19wZXJtdXRlX3BkKFcsIFUsIFgsIEMpIFwKICAoKF9fbTI1NmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMjU2KChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpX21tMjU2X3Blcm11dGVfcGQoKFgpLCAoQykpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKShfX20yNTZkKShXKSkpCgojZGVmaW5lIF9tbTI1Nl9tYXNrel9wZXJtdXRlX3BkKFUsIFgsIEMpIFwKICAoKF9fbTI1NmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMjU2KChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpX21tMjU2X3Blcm11dGVfcGQoKFgpLCAoQykpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9tbTI1Nl9zZXR6ZXJvX3BkKCkpKQoKI2RlZmluZSBfbW1fbWFza19wZXJtdXRlX3BzKFcsIFUsIFgsIEMpIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18xMjgoKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9tbV9wZXJtdXRlX3BzKChYKSwgKEMpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKFcpKSkKCiNkZWZpbmUgX21tX21hc2t6X3Blcm11dGVfcHMoVSwgWCwgQykgXAogICgoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzEyOCgoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX3Blcm11dGVfcHMoKFgpLCAoQykpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX3NldHplcm9fcHMoKSkpCgojZGVmaW5lIF9tbTI1Nl9tYXNrX3Blcm11dGVfcHMoVywgVSwgWCwgQykgXAogICgoX19tMjU2KV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzI1NigoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX21tMjU2X3Blcm11dGVfcHMoKFgpLCAoQykpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpKF9fbTI1NikoVykpKQoKI2RlZmluZSBfbW0yNTZfbWFza3pfcGVybXV0ZV9wcyhVLCBYLCBDKSBcCiAgKChfX20yNTYpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMjU2KChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZilfbW0yNTZfcGVybXV0ZV9wcygoWCksIChDKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZilfbW0yNTZfc2V0emVyb19wcygpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3Blcm11dGV2YXJfcGQoX19tMTI4ZCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4ZCBfX0EsIF9fbTEyOGkgX19DKQp7CiAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX3Blcm11dGV2YXJfcGQoX19BLCBfX0MpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X3Blcm11dGV2YXJfcGQoX19tbWFzazggX19VLCBfX20xMjhkIF9fQSwgX19tMTI4aSBfX0MpCnsKICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfbW1fcGVybXV0ZXZhcl9wZChfX0EsIF9fQyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfbW1fc2V0emVyb19wZCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfcGVybXV0ZXZhcl9wZChfX20yNTZkIF9fVywgX19tbWFzazggX19VLCBfX20yNTZkIF9fQSwgX19tMjU2aSBfX0MpCnsKICByZXR1cm4gKF9fbTI1NmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZilfbW0yNTZfcGVybXV0ZXZhcl9wZChfX0EsIF9fQyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfcGVybXV0ZXZhcl9wZChfX21tYXNrOCBfX1UsIF9fbTI1NmQgX19BLCBfX20yNTZpIF9fQykKewogIHJldHVybiAoX19tMjU2ZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF8yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9tbTI1Nl9wZXJtdXRldmFyX3BkKF9fQSwgX19DKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9tbTI1Nl9zZXR6ZXJvX3BkKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3Blcm11dGV2YXJfcHMoX19tMTI4IF9fVywgX19tbWFzazggX19VLCBfX20xMjggX19BLCBfX20xMjhpIF9fQykKewogIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX3Blcm11dGV2YXJfcHMoX19BLCBfX0MpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfcGVybXV0ZXZhcl9wcyhfX21tYXNrOCBfX1UsIF9fbTEyOCBfX0EsIF9fbTEyOGkgX19DKQp7CiAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfbW1fcGVybXV0ZXZhcl9wcyhfX0EsIF9fQyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfbW1fc2V0emVyb19wcygpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19wZXJtdXRldmFyX3BzKF9fbTI1NiBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2IF9fQSwgX19tMjU2aSBfX0MpCnsKICByZXR1cm4gKF9fbTI1NilfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZilfbW0yNTZfcGVybXV0ZXZhcl9wcyhfX0EsIF9fQyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfcGVybXV0ZXZhcl9wcyhfX21tYXNrOCBfX1UsIF9fbTI1NiBfX0EsIF9fbTI1NmkgX19DKQp7CiAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX21tMjU2X3Blcm11dGV2YXJfcHMoX19BLCBfX0MpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKV9tbTI1Nl9zZXR6ZXJvX3BzKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX21tYXNrOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX3Rlc3RfZXBpMzJfbWFzayAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIF9tbV9jbXBuZXFfZXBpMzJfbWFzayAoX21tX2FuZF9zaTEyOCAoX19BLCBfX0IpLCBfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tbWFzazggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3Rlc3RfZXBpMzJfbWFzayAoX19tbWFzazggX19VLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gX21tX21hc2tfY21wbmVxX2VwaTMyX21hc2sgKF9fVSwgX21tX2FuZF9zaTEyOCAoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX21tX3NldHplcm9fc2kxMjgoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbW1hc2s4IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfdGVzdF9lcGkzMl9tYXNrIChfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gX21tMjU2X2NtcG5lcV9lcGkzMl9tYXNrIChfbW0yNTZfYW5kX3NpMjU2IChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX21tMjU2X3NldHplcm9fc2kyNTYoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbW1hc2s4IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza190ZXN0X2VwaTMyX21hc2sgKF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIF9tbTI1Nl9tYXNrX2NtcG5lcV9lcGkzMl9tYXNrIChfX1UsIF9tbTI1Nl9hbmRfc2kyNTYgKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX21tYXNrOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX3Rlc3RfZXBpNjRfbWFzayAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIF9tbV9jbXBuZXFfZXBpNjRfbWFzayAoX21tX2FuZF9zaTEyOCAoX19BLCBfX0IpLCBfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tbWFzazggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3Rlc3RfZXBpNjRfbWFzayAoX19tbWFzazggX19VLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gX21tX21hc2tfY21wbmVxX2VwaTY0X21hc2sgKF9fVSwgX21tX2FuZF9zaTEyOCAoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX21tX3NldHplcm9fc2kxMjgoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbW1hc2s4IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfdGVzdF9lcGk2NF9tYXNrIChfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gX21tMjU2X2NtcG5lcV9lcGk2NF9tYXNrIChfbW0yNTZfYW5kX3NpMjU2IChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX21tMjU2X3NldHplcm9fc2kyNTYoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbW1hc2s4IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza190ZXN0X2VwaTY0X21hc2sgKF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIF9tbTI1Nl9tYXNrX2NtcG5lcV9lcGk2NF9tYXNrIChfX1UsIF9tbTI1Nl9hbmRfc2kyNTYgKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX21tYXNrOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX3Rlc3RuX2VwaTMyX21hc2sgKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiBfbW1fY21wZXFfZXBpMzJfbWFzayAoX21tX2FuZF9zaTEyOCAoX19BLCBfX0IpLCBfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tbWFzazggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3Rlc3RuX2VwaTMyX21hc2sgKF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIF9tbV9tYXNrX2NtcGVxX2VwaTMyX21hc2sgKF9fVSwgX21tX2FuZF9zaTEyOCAoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tbWFzazggX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl90ZXN0bl9lcGkzMl9tYXNrIChfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gX21tMjU2X2NtcGVxX2VwaTMyX21hc2sgKF9tbTI1Nl9hbmRfc2kyNTYgKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX21tYXNrOCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfdGVzdG5fZXBpMzJfbWFzayAoX19tbWFzazggX19VLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gX21tMjU2X21hc2tfY21wZXFfZXBpMzJfbWFzayAoX19VLCBfbW0yNTZfYW5kX3NpMjU2IChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX21tYXNrOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX3Rlc3RuX2VwaTY0X21hc2sgKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiBfbW1fY21wZXFfZXBpNjRfbWFzayAoX21tX2FuZF9zaTEyOCAoX19BLCBfX0IpLCBfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tbWFzazggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3Rlc3RuX2VwaTY0X21hc2sgKF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIF9tbV9tYXNrX2NtcGVxX2VwaTY0X21hc2sgKF9fVSwgX21tX2FuZF9zaTEyOCAoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tbWFzazggX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl90ZXN0bl9lcGk2NF9tYXNrIChfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gX21tMjU2X2NtcGVxX2VwaTY0X21hc2sgKF9tbTI1Nl9hbmRfc2kyNTYgKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX21tYXNrOCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfdGVzdG5fZXBpNjRfbWFzayAoX19tbWFzazggX19VLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gX21tMjU2X21hc2tfY21wZXFfZXBpNjRfbWFzayAoX19VLCBfbW0yNTZfYW5kX3NpMjU2IChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza191bnBhY2toaV9lcGkzMihfX20xMjhpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX3VucGFja2hpX2VwaTMyKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X3VucGFja2hpX2VwaTMyKF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV91bnBhY2toaV9lcGkzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza191bnBhY2toaV9lcGkzMihfX20yNTZpIF9fVywgX19tbWFzazggX19VLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X3VucGFja2hpX2VwaTMyKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X3VucGFja2hpX2VwaTMyKF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl91bnBhY2toaV9lcGkzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza191bnBhY2toaV9lcGk2NChfX20xMjhpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX21tX3VucGFja2hpX2VwaTY0KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X3VucGFja2hpX2VwaTY0KF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV91bnBhY2toaV9lcGk2NChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza191bnBhY2toaV9lcGk2NChfX20yNTZpIF9fVywgX19tbWFzazggX19VLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX21tMjU2X3VucGFja2hpX2VwaTY0KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X3VucGFja2hpX2VwaTY0KF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl91bnBhY2toaV9lcGk2NChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza191bnBhY2tsb19lcGkzMihfX20xMjhpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX3VucGFja2xvX2VwaTMyKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X3VucGFja2xvX2VwaTMyKF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV91bnBhY2tsb19lcGkzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza191bnBhY2tsb19lcGkzMihfX20yNTZpIF9fVywgX19tbWFzazggX19VLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X3VucGFja2xvX2VwaTMyKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X3VucGFja2xvX2VwaTMyKF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl91bnBhY2tsb19lcGkzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza191bnBhY2tsb19lcGk2NChfX20xMjhpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX21tX3VucGFja2xvX2VwaTY0KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X3VucGFja2xvX2VwaTY0KF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV91bnBhY2tsb19lcGk2NChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza191bnBhY2tsb19lcGk2NChfX20yNTZpIF9fVywgX19tbWFzazggX19VLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX21tMjU2X3VucGFja2xvX2VwaTY0KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X3VucGFja2xvX2VwaTY0KF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl91bnBhY2tsb19lcGk2NChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19zcmFfZXBpMzIoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX3NyYV9lcGkzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X3NyYV9lcGkzMihfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9zcmFfZXBpMzIoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19zcmFfZXBpMzIoX19tMjU2aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X3NyYV9lcGkzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X3NyYV9lcGkzMihfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9zcmFfZXBpMzIoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19zcmFpX2VwaTMyKF9fbTEyOGkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BLCB1bnNpZ25lZCBpbnQgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX3NyYWlfZXBpMzIoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9zcmFpX2VwaTMyKF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIHVuc2lnbmVkIGludCBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfbW1fc3JhaV9lcGkzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX3NldHplcm9fc2kxMjgoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX3NyYWlfZXBpMzIoX19tMjU2aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EsIHVuc2lnbmVkIGludCBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfc3JhaV9lcGkzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X3NyYWlfZXBpMzIoX19tbWFzazggX19VLCBfX20yNTZpIF9fQSwgdW5zaWduZWQgaW50IF9fQikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9zcmFpX2VwaTMyKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX3NyYV9lcGk2NChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNyYXExMjgoKF9fdjJkaSlfX0EsIChfX3YyZGkpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfc3JhX2VwaTY0KF9fbTEyOGkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzEyOCgoX19tbWFzazgpX19VLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX21tX3NyYV9lcGk2NChfX0EsIF9fQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfc3JhX2VwaTY0KF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMTI4KChfX21tYXNrOClfX1UsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfbW1fc3JhX2VwaTY0KF9fQSwgX19CKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfc3JhX2VwaTY0KF9fbTI1NmkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9wc3JhcTI1NigoX192NGRpKSBfX0EsIChfX3YyZGkpIF9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX3NyYV9lcGk2NChfX20yNTZpIF9fVywgX19tbWFzazggX19VLCBfX20yNTZpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8yNTYoKF9fbW1hc2s4KV9fVSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfc3JhX2VwaTY0KF9fQSwgX19CKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfc3JhX2VwaTY0KF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMjU2KChfX21tYXNrOClfX1UsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX21tMjU2X3NyYV9lcGk2NChfX0EsIF9fQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX21tMjU2X3NldHplcm9fc2kyNTYoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9zcmFpX2VwaTY0KF9fbTEyOGkgX19BLCB1bnNpZ25lZCBpbnQgX19pbW0pCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNyYXFpMTI4KChfX3YyZGkpX19BLCBfX2ltbSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3NyYWlfZXBpNjQoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIHVuc2lnbmVkIGludCBfX2ltbSkKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzEyOCgoX19tbWFzazgpX19VLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9zcmFpX2VwaTY0KF9fQSwgX19pbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9zcmFpX2VwaTY0KF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIHVuc2lnbmVkIGludCBfX2ltbSkKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzEyOCgoX19tbWFzazgpX19VLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9zcmFpX2VwaTY0KF9fQSwgX19pbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfc3JhaV9lcGk2NChfX20yNTZpIF9fQSwgdW5zaWduZWQgaW50IF9faW1tKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3BzcmFxaTI1NigoX192NGRpKV9fQSwgX19pbW0pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19zcmFpX2VwaTY0KF9fbTI1NmkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19BLAogICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX2ltbSkKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzI1NigoX19tbWFzazgpX19VLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9zcmFpX2VwaTY0KF9fQSwgX19pbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9zcmFpX2VwaTY0KF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EsIHVuc2lnbmVkIGludCBfX2ltbSkKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzI1NigoX19tbWFzazgpX19VLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9zcmFpX2VwaTY0KF9fQSwgX19pbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgojZGVmaW5lIF9tbV90ZXJuYXJ5bG9naWNfZXBpMzIoQSwgQiwgQywgaW1tKSBcCiAgKChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3B0ZXJubG9nZDEyOF9tYXNrKChfX3Y0c2kpKF9fbTEyOGkpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpKF9fbTEyOGkpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpKF9fbTEyOGkpKEMpLCAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSkpCgojZGVmaW5lIF9tbV9tYXNrX3Rlcm5hcnlsb2dpY19lcGkzMihBLCBVLCBCLCBDLCBpbW0pIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHRlcm5sb2dkMTI4X21hc2soKF9fdjRzaSkoX19tMTI4aSkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSkoX19tMTI4aSkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSkoX19tMTI4aSkoQyksIChpbnQpKGltbSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSkpCgojZGVmaW5lIF9tbV9tYXNrel90ZXJuYXJ5bG9naWNfZXBpMzIoVSwgQSwgQiwgQywgaW1tKSBcCiAgKChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3B0ZXJubG9nZDEyOF9tYXNreigoX192NHNpKShfX20xMjhpKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSkoX19tMTI4aSkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpKF9fbTEyOGkpKEMpLCAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpKSkKCiNkZWZpbmUgX21tMjU2X3Rlcm5hcnlsb2dpY19lcGkzMihBLCBCLCBDLCBpbW0pIFwKICAoKF9fbTI1NmkpX19idWlsdGluX2lhMzJfcHRlcm5sb2dkMjU2X21hc2soKF9fdjhzaSkoX19tMjU2aSkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSkoX19tMjU2aSkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSkoX19tMjU2aSkoQyksIChpbnQpKGltbSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xKSkKCiNkZWZpbmUgX21tMjU2X21hc2tfdGVybmFyeWxvZ2ljX2VwaTMyKEEsIFUsIEIsIEMsIGltbSkgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9wdGVybmxvZ2QyNTZfbWFzaygoX192OHNpKShfX20yNTZpKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKShfX20yNTZpKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKShfX20yNTZpKShDKSwgKGludCkoaW1tKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpKSkKCiNkZWZpbmUgX21tMjU2X21hc2t6X3Rlcm5hcnlsb2dpY19lcGkzMihVLCBBLCBCLCBDLCBpbW0pIFwKICAoKF9fbTI1NmkpX19idWlsdGluX2lhMzJfcHRlcm5sb2dkMjU2X21hc2t6KChfX3Y4c2kpKF9fbTI1NmkpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKShfX20yNTZpKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSkoX19tMjU2aSkoQyksIChpbnQpKGltbSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSkpKQoKI2RlZmluZSBfbW1fdGVybmFyeWxvZ2ljX2VwaTY0KEEsIEIsIEMsIGltbSkgXAogICgoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wdGVybmxvZ3ExMjhfbWFzaygoX192MmRpKShfX20xMjhpKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKShfX20xMjhpKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKShfX20xMjhpKShDKSwgKGludCkoaW1tKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEpKQoKI2RlZmluZSBfbW1fbWFza190ZXJuYXJ5bG9naWNfZXBpNjQoQSwgVSwgQiwgQywgaW1tKSBcCiAgKChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3B0ZXJubG9ncTEyOF9tYXNrKChfX3YyZGkpKF9fbTEyOGkpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpKF9fbTEyOGkpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpKF9fbTEyOGkpKEMpLCAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSkpKQoKI2RlZmluZSBfbW1fbWFza3pfdGVybmFyeWxvZ2ljX2VwaTY0KFUsIEEsIEIsIEMsIGltbSkgXAogICgoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wdGVybmxvZ3ExMjhfbWFza3ooKF9fdjJkaSkoX19tMTI4aSkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpKF9fbTEyOGkpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKShfX20xMjhpKShDKSwgKGludCkoaW1tKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSkpCgojZGVmaW5lIF9tbTI1Nl90ZXJuYXJ5bG9naWNfZXBpNjQoQSwgQiwgQywgaW1tKSBcCiAgKChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3B0ZXJubG9ncTI1Nl9tYXNrKChfX3Y0ZGkpKF9fbTI1NmkpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpKF9fbTI1NmkpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpKF9fbTI1NmkpKEMpLCAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSkpCgojZGVmaW5lIF9tbTI1Nl9tYXNrX3Rlcm5hcnlsb2dpY19lcGk2NChBLCBVLCBCLCBDLCBpbW0pIFwKICAoKF9fbTI1NmkpX19idWlsdGluX2lhMzJfcHRlcm5sb2dxMjU2X21hc2soKF9fdjRkaSkoX19tMjU2aSkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSkoX19tMjU2aSkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSkoX19tMjU2aSkoQyksIChpbnQpKGltbSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSkpCgojZGVmaW5lIF9tbTI1Nl9tYXNrel90ZXJuYXJ5bG9naWNfZXBpNjQoVSwgQSwgQiwgQywgaW1tKSBcCiAgKChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3B0ZXJubG9ncTI1Nl9tYXNreigoX192NGRpKShfX20yNTZpKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSkoX19tMjU2aSkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpKF9fbTI1NmkpKEMpLCAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpKSkKCgoKI2RlZmluZSBfbW0yNTZfc2h1ZmZsZV9mMzJ4NChBLCBCLCBpbW0pIFwKICAoKF9fbTI1NilfX2J1aWx0aW5faWEzMl9zaHVmX2YzMng0XzI1NigoX192OHNmKShfX20yNTYpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZikoX19tMjU2KShCKSwgKGludCkoaW1tKSkpCgojZGVmaW5lIF9tbTI1Nl9tYXNrX3NodWZmbGVfZjMyeDQoVywgVSwgQSwgQiwgaW1tKSBcCiAgKChfX20yNTYpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMjU2KChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZilfbW0yNTZfc2h1ZmZsZV9mMzJ4NCgoQSksIChCKSwgKGltbSkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpKF9fbTI1NikoVykpKQoKI2RlZmluZSBfbW0yNTZfbWFza3pfc2h1ZmZsZV9mMzJ4NChVLCBBLCBCLCBpbW0pIFwKICAoKF9fbTI1NilfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18yNTYoKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKV9tbTI1Nl9zaHVmZmxlX2YzMng0KChBKSwgKEIpLCAoaW1tKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZilfbW0yNTZfc2V0emVyb19wcygpKSkKCiNkZWZpbmUgX21tMjU2X3NodWZmbGVfZjY0eDIoQSwgQiwgaW1tKSBcCiAgKChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX3NodWZfZjY0eDJfMjU2KChfX3Y0ZGYpKF9fbTI1NmQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpKF9fbTI1NmQpKEIpLCAoaW50KShpbW0pKSkKCiNkZWZpbmUgX21tMjU2X21hc2tfc2h1ZmZsZV9mNjR4MihXLCBVLCBBLCBCLCBpbW0pIFwKICAoKF9fbTI1NmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMjU2KChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZilfbW0yNTZfc2h1ZmZsZV9mNjR4MigoQSksIChCKSwgKGltbSkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpKF9fbTI1NmQpKFcpKSkKCiNkZWZpbmUgX21tMjU2X21hc2t6X3NodWZmbGVfZjY0eDIoVSwgQSwgQiwgaW1tKSBcCiAgKChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzI1NigoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpX21tMjU2X3NodWZmbGVfZjY0eDIoKEEpLCAoQiksIChpbW0pKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9tbTI1Nl9zZXR6ZXJvX3BkKCkpKQoKI2RlZmluZSBfbW0yNTZfc2h1ZmZsZV9pMzJ4NChBLCBCLCBpbW0pIFwKICAoKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2h1Zl9pMzJ4NF8yNTYoKF9fdjhzaSkoX19tMjU2aSkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSkoX19tMjU2aSkoQiksIChpbnQpKGltbSkpKQoKI2RlZmluZSBfbW0yNTZfbWFza19zaHVmZmxlX2kzMng0KFcsIFUsIEEsIEIsIGltbSkgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzI1NigoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X3NodWZmbGVfaTMyeDQoKEEpLCAoQiksIChpbW0pKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKShfX20yNTZpKShXKSkpCgojZGVmaW5lIF9tbTI1Nl9tYXNrel9zaHVmZmxlX2kzMng0KFUsIEEsIEIsIGltbSkgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzI1NigoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X3NodWZmbGVfaTMyeDQoKEEpLCAoQiksIChpbW0pKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpKQoKI2RlZmluZSBfbW0yNTZfc2h1ZmZsZV9pNjR4MihBLCBCLCBpbW0pIFwKICAoKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2h1Zl9pNjR4Ml8yNTYoKF9fdjRkaSkoX19tMjU2aSkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSkoX19tMjU2aSkoQiksIChpbnQpKGltbSkpKQoKI2RlZmluZSBfbW0yNTZfbWFza19zaHVmZmxlX2k2NHgyKFcsIFUsIEEsIEIsIGltbSkgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzI1NigoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX21tMjU2X3NodWZmbGVfaTY0eDIoKEEpLCAoQiksIChpbW0pKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKShfX20yNTZpKShXKSkpCgoKI2RlZmluZSBfbW0yNTZfbWFza3pfc2h1ZmZsZV9pNjR4MihVLCBBLCBCLCBpbW0pIFwKICAoKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8yNTYoKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9zaHVmZmxlX2k2NHgyKChBKSwgKEIpLCAoaW1tKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKSkKCiNkZWZpbmUgX21tX21hc2tfc2h1ZmZsZV9wZChXLCBVLCBBLCBCLCBNKSBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzEyOCgoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9tbV9zaHVmZmxlX3BkKChBKSwgKEIpLCAoTSkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShXKSkpCgojZGVmaW5lIF9tbV9tYXNrel9zaHVmZmxlX3BkKFUsIEEsIEIsIE0pIFwKICAoKF9fbTEyOGQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMTI4KChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX3NodWZmbGVfcGQoKEEpLCAoQiksIChNKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX3NldHplcm9fcGQoKSkpCgojZGVmaW5lIF9tbTI1Nl9tYXNrX3NodWZmbGVfcGQoVywgVSwgQSwgQiwgTSkgXAogICgoX19tMjU2ZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF8yNTYoKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZilfbW0yNTZfc2h1ZmZsZV9wZCgoQSksIChCKSwgKE0pKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZikoX19tMjU2ZCkoVykpKQoKI2RlZmluZSBfbW0yNTZfbWFza3pfc2h1ZmZsZV9wZChVLCBBLCBCLCBNKSBcCiAgKChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzI1NigoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9tbTI1Nl9zaHVmZmxlX3BkKChBKSwgKEIpLCAoTSkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9tbTI1Nl9zZXR6ZXJvX3BkKCkpKQoKI2RlZmluZSBfbW1fbWFza19zaHVmZmxlX3BzKFcsIFUsIEEsIEIsIE0pIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18xMjgoKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9tbV9zaHVmZmxlX3BzKChBKSwgKEIpLCAoTSkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoVykpKQoKI2RlZmluZSBfbW1fbWFza3pfc2h1ZmZsZV9wcyhVLCBBLCBCLCBNKSBcCiAgKChfX20xMjgpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMTI4KChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfbW1fc2h1ZmZsZV9wcygoQSksIChCKSwgKE0pKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9tbV9zZXR6ZXJvX3BzKCkpKQoKI2RlZmluZSBfbW0yNTZfbWFza19zaHVmZmxlX3BzKFcsIFUsIEEsIEIsIE0pIFwKICAoKF9fbTI1NilfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18yNTYoKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKV9tbTI1Nl9zaHVmZmxlX3BzKChBKSwgKEIpLCAoTSkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpKF9fbTI1NikoVykpKQoKI2RlZmluZSBfbW0yNTZfbWFza3pfc2h1ZmZsZV9wcyhVLCBBLCBCLCBNKSBcCiAgKChfX20yNTYpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMjU2KChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZilfbW0yNTZfc2h1ZmZsZV9wcygoQSksIChCKSwgKE0pKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKV9tbTI1Nl9zZXR6ZXJvX3BzKCkpKQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX3JzcXJ0MTRfcGQgKF9fbTEyOGQgX19BKQp7CiAgcmV0dXJuIChfX20xMjhkKSBfX2J1aWx0aW5faWEzMl9yc3FydDE0cGQxMjhfbWFzayAoKF9fdjJkZikgX19BLAogICAgICAgICAgICAgICAgIChfX3YyZGYpCiAgICAgICAgICAgICAgICAgX21tX3NldHplcm9fcGQgKCksCiAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSAtMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3JzcXJ0MTRfcGQgKF9fbTEyOGQgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGQgX19BKQp7CiAgcmV0dXJuIChfX20xMjhkKSBfX2J1aWx0aW5faWEzMl9yc3FydDE0cGQxMjhfbWFzayAoKF9fdjJkZikgX19BLAogICAgICAgICAgICAgICAgIChfX3YyZGYpIF9fVywKICAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9yc3FydDE0X3BkIChfX21tYXNrOCBfX1UsIF9fbTEyOGQgX19BKQp7CiAgcmV0dXJuIChfX20xMjhkKSBfX2J1aWx0aW5faWEzMl9yc3FydDE0cGQxMjhfbWFzayAoKF9fdjJkZikgX19BLAogICAgICAgICAgICAgICAgIChfX3YyZGYpCiAgICAgICAgICAgICAgICAgX21tX3NldHplcm9fcGQgKCksCiAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfcnNxcnQxNF9wZCAoX19tMjU2ZCBfX0EpCnsKICByZXR1cm4gKF9fbTI1NmQpIF9fYnVpbHRpbl9pYTMyX3JzcXJ0MTRwZDI1Nl9tYXNrICgoX192NGRmKSBfX0EsCiAgICAgICAgICAgICAgICAgKF9fdjRkZikKICAgICAgICAgICAgICAgICBfbW0yNTZfc2V0emVyb19wZCAoKSwKICAgICAgICAgICAgICAgICAoX19tbWFzazgpIC0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfcnNxcnQxNF9wZCAoX19tMjU2ZCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2ZCBfX0EpCnsKICByZXR1cm4gKF9fbTI1NmQpIF9fYnVpbHRpbl9pYTMyX3JzcXJ0MTRwZDI1Nl9tYXNrICgoX192NGRmKSBfX0EsCiAgICAgICAgICAgICAgICAgKF9fdjRkZikgX19XLAogICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X3JzcXJ0MTRfcGQgKF9fbW1hc2s4IF9fVSwgX19tMjU2ZCBfX0EpCnsKICByZXR1cm4gKF9fbTI1NmQpIF9fYnVpbHRpbl9pYTMyX3JzcXJ0MTRwZDI1Nl9tYXNrICgoX192NGRmKSBfX0EsCiAgICAgICAgICAgICAgICAgKF9fdjRkZikKICAgICAgICAgICAgICAgICBfbW0yNTZfc2V0emVyb19wZCAoKSwKICAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX3JzcXJ0MTRfcHMgKF9fbTEyOCBfX0EpCnsKICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfcnNxcnQxNHBzMTI4X21hc2sgKChfX3Y0c2YpIF9fQSwKICAgICAgICAgICAgICAgIChfX3Y0c2YpCiAgICAgICAgICAgICAgICBfbW1fc2V0emVyb19wcyAoKSwKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3JzcXJ0MTRfcHMgKF9fbTEyOCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4IF9fQSkKewogIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9yc3FydDE0cHMxMjhfbWFzayAoKF9fdjRzZikgX19BLAogICAgICAgICAgICAgICAgKF9fdjRzZikgX19XLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9yc3FydDE0X3BzIChfX21tYXNrOCBfX1UsIF9fbTEyOCBfX0EpCnsKICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfcnNxcnQxNHBzMTI4X21hc2sgKChfX3Y0c2YpIF9fQSwKICAgICAgICAgICAgICAgIChfX3Y0c2YpCiAgICAgICAgICAgICAgICBfbW1fc2V0emVyb19wcyAoKSwKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfcnNxcnQxNF9wcyAoX19tMjU2IF9fQSkKewogIHJldHVybiAoX19tMjU2KSBfX2J1aWx0aW5faWEzMl9yc3FydDE0cHMyNTZfbWFzayAoKF9fdjhzZikgX19BLAogICAgICAgICAgICAgICAgKF9fdjhzZikKICAgICAgICAgICAgICAgIF9tbTI1Nl9zZXR6ZXJvX3BzICgpLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSAtMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfcnNxcnQxNF9wcyAoX19tMjU2IF9fVywgX19tbWFzazggX19VLCBfX20yNTYgX19BKQp7CiAgcmV0dXJuIChfX20yNTYpIF9fYnVpbHRpbl9pYTMyX3JzcXJ0MTRwczI1Nl9tYXNrICgoX192OHNmKSBfX0EsCiAgICAgICAgICAgICAgICAoX192OHNmKSBfX1csCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X3JzcXJ0MTRfcHMgKF9fbW1hc2s4IF9fVSwgX19tMjU2IF9fQSkKewogIHJldHVybiAoX19tMjU2KSBfX2J1aWx0aW5faWEzMl9yc3FydDE0cHMyNTZfbWFzayAoKF9fdjhzZikgX19BLAogICAgICAgICAgICAgICAgKF9fdjhzZikKICAgICAgICAgICAgICAgIF9tbTI1Nl9zZXR6ZXJvX3BzICgpLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9icm9hZGNhc3RfZjMyeDQoX19tMTI4IF9fQSkKewogIHJldHVybiAoX19tMjU2KV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y0c2YpX19BLCAoX192NHNmKV9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAxLCAyLCAzLCAwLCAxLCAyLCAzKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19icm9hZGNhc3RfZjMyeDQoX19tMjU2IF9fTywgX19tbWFzazggX19NLCBfX20xMjggX19BKQp7CiAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMjU2KChfX21tYXNrOClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZilfbW0yNTZfYnJvYWRjYXN0X2YzMng0KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZilfX08pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9icm9hZGNhc3RfZjMyeDQgKF9fbW1hc2s4IF9fTSwgX19tMTI4IF9fQSkKewogIHJldHVybiAoX19tMjU2KV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzI1NigoX19tbWFzazgpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX21tMjU2X2Jyb2FkY2FzdF9mMzJ4NChfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX21tMjU2X3NldHplcm9fcHMoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9icm9hZGNhc3RfaTMyeDQoX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjRzaSlfX0EsIChfX3Y0c2kpX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAxLCAyLCAzLCAwLCAxLCAyLCAzKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfYnJvYWRjYXN0X2kzMng0KF9fbTI1NmkgX19PLCBfX21tYXNrOCBfX00sIF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMjU2KChfX21tYXNrOClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfYnJvYWRjYXN0X2kzMng0KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfX08pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfYnJvYWRjYXN0X2kzMng0KF9fbW1hc2s4IF9fTSwgX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8yNTYoKF9fbW1hc2s4KV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9icm9hZGNhc3RfaTMyeDQoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19icm9hZGNhc3RzZF9wZCAoX19tMjU2ZCBfX08sIF9fbW1hc2s4IF9fTSwgX19tMTI4ZCBfX0EpCnsKICByZXR1cm4gKF9fbTI1NmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMjU2KF9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpIF9tbTI1Nl9icm9hZGNhc3RzZF9wZChfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZikgX19PKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2Jyb2FkY2FzdHNkX3BkIChfX21tYXNrOCBfX00sIF9fbTEyOGQgX19BKQp7CiAgcmV0dXJuIChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzI1NihfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKSBfbW0yNTZfYnJvYWRjYXN0c2RfcGQoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpIF9tbTI1Nl9zZXR6ZXJvX3BkKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2Jyb2FkY2FzdHNzX3BzIChfX20xMjggX19PLCBfX21tYXNrOCBfX00sIF9fbTEyOCBfX0EpCnsKICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18xMjgoX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKSBfbW1fYnJvYWRjYXN0c3NfcHMoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikgX19PKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfYnJvYWRjYXN0c3NfcHMgKF9fbW1hc2s4IF9fTSwgX19tMTI4IF9fQSkKewogIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzEyOChfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpIF9tbV9icm9hZGNhc3Rzc19wcyhfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKSBfbW1fc2V0emVyb19wcygpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19icm9hZGNhc3Rzc19wcyAoX19tMjU2IF9fTywgX19tbWFzazggX19NLCBfX20xMjggX19BKQp7CiAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMjU2KF9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZikgX21tMjU2X2Jyb2FkY2FzdHNzX3BzKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpIF9fTyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2Jyb2FkY2FzdHNzX3BzIChfX21tYXNrOCBfX00sIF9fbTEyOCBfX0EpCnsKICByZXR1cm4gKF9fbTI1NilfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18yNTYoX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKSBfbW0yNTZfYnJvYWRjYXN0c3NfcHMoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZikgX21tMjU2X3NldHplcm9fcHMoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2Jyb2FkY2FzdGRfZXBpMzIgKF9fbTEyOGkgX19PLCBfX21tYXNrOCBfX00sIF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMTI4KF9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSkgX21tX2Jyb2FkY2FzdGRfZXBpMzIoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSkgX19PKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2Jyb2FkY2FzdGRfZXBpMzIgKF9fbW1hc2s4IF9fTSwgX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8xMjgoX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKSBfbW1fYnJvYWRjYXN0ZF9lcGkzMihfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKSBfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfYnJvYWRjYXN0ZF9lcGkzMiAoX19tMjU2aSBfX08sIF9fbW1hc2s4IF9fTSwgX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8yNTYoX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKSBfbW0yNTZfYnJvYWRjYXN0ZF9lcGkzMihfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKSBfX08pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfYnJvYWRjYXN0ZF9lcGkzMiAoX19tbWFzazggX19NLCBfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzI1NihfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpIF9tbTI1Nl9icm9hZGNhc3RkX2VwaTMyKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpIF9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19icm9hZGNhc3RxX2VwaTY0IChfX20xMjhpIF9fTywgX19tbWFzazggX19NLCBfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzEyOChfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpIF9tbV9icm9hZGNhc3RxX2VwaTY0KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpIF9fTyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9icm9hZGNhc3RxX2VwaTY0IChfX21tYXNrOCBfX00sIF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMTI4KF9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSkgX21tX2Jyb2FkY2FzdHFfZXBpNjQoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSkgX21tX3NldHplcm9fc2kxMjgoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2Jyb2FkY2FzdHFfZXBpNjQgKF9fbTI1NmkgX19PLCBfX21tYXNrOCBfX00sIF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMjU2KF9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSkgX21tMjU2X2Jyb2FkY2FzdHFfZXBpNjQoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSkgX19PKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2Jyb2FkY2FzdHFfZXBpNjQgKF9fbW1hc2s4IF9fTSwgX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8yNTYoX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKSBfbW0yNTZfYnJvYWRjYXN0cV9lcGk2NChfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKSBfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX2N2dHNlcGkzMl9lcGk4IChfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnNkYjEyOF9tYXNrICgoX192NHNpKSBfX0EsCiAgICAgICAgICAgICAgIChfX3YxNnFpKV9tbV91bmRlZmluZWRfc2kxMjgoKSwKICAgICAgICAgICAgICAgKF9fbW1hc2s4KSAtMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2N2dHNlcGkzMl9lcGk4IChfX20xMjhpIF9fTywgX19tbWFzazggX19NLCBfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnNkYjEyOF9tYXNrICgoX192NHNpKSBfX0EsCiAgICAgICAgICAgICAgIChfX3YxNnFpKSBfX08sIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9jdnRzZXBpMzJfZXBpOCAoX19tbWFzazggX19NLCBfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnNkYjEyOF9tYXNrICgoX192NHNpKSBfX0EsCiAgICAgICAgICAgICAgIChfX3YxNnFpKSBfbW1fc2V0emVyb19zaTEyOCAoKSwKICAgICAgICAgICAgICAgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfY3Z0c2VwaTMyX3N0b3JldV9lcGk4ICh2b2lkICogX19QLCBfX21tYXNrOCBfX00sIF9fbTEyOGkgX19BKQp7CiAgX19idWlsdGluX2lhMzJfcG1vdnNkYjEyOG1lbV9tYXNrICgoX192MTZxaSAqKSBfX1AsIChfX3Y0c2kpIF9fQSwgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2N2dHNlcGkzMl9lcGk4IChfX20yNTZpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnNkYjI1Nl9tYXNrICgoX192OHNpKSBfX0EsCiAgICAgICAgICAgICAgIChfX3YxNnFpKV9tbV91bmRlZmluZWRfc2kxMjgoKSwKICAgICAgICAgICAgICAgKF9fbW1hc2s4KSAtMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2N2dHNlcGkzMl9lcGk4IChfX20xMjhpIF9fTywgX19tbWFzazggX19NLCBfX20yNTZpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnNkYjI1Nl9tYXNrICgoX192OHNpKSBfX0EsCiAgICAgICAgICAgICAgIChfX3YxNnFpKSBfX08sIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9jdnRzZXBpMzJfZXBpOCAoX19tbWFzazggX19NLCBfX20yNTZpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnNkYjI1Nl9tYXNrICgoX192OHNpKSBfX0EsCiAgICAgICAgICAgICAgIChfX3YxNnFpKSBfbW1fc2V0emVyb19zaTEyOCAoKSwKICAgICAgICAgICAgICAgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfY3Z0c2VwaTMyX3N0b3JldV9lcGk4ICh2b2lkICogX19QLCBfX21tYXNrOCBfX00sIF9fbTI1NmkgX19BKQp7CiAgX19idWlsdGluX2lhMzJfcG1vdnNkYjI1Nm1lbV9tYXNrICgoX192MTZxaSAqKSBfX1AsIChfX3Y4c2kpIF9fQSwgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX2N2dHNlcGkzMl9lcGkxNiAoX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Btb3ZzZHcxMjhfbWFzayAoKF9fdjRzaSkgX19BLAogICAgICAgICAgICAgICAoX192OGhpKV9tbV9zZXR6ZXJvX3NpMTI4ICgpLAogICAgICAgICAgICAgICAoX19tbWFzazgpIC0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfY3Z0c2VwaTMyX2VwaTE2IChfX20xMjhpIF9fTywgX19tbWFzazggX19NLCBfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnNkdzEyOF9tYXNrICgoX192NHNpKSBfX0EsCiAgICAgICAgICAgICAgIChfX3Y4aGkpX19PLAogICAgICAgICAgICAgICBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfY3Z0c2VwaTMyX2VwaTE2IChfX21tYXNrOCBfX00sIF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92c2R3MTI4X21hc2sgKChfX3Y0c2kpIF9fQSwKICAgICAgICAgICAgICAgKF9fdjhoaSkgX21tX3NldHplcm9fc2kxMjggKCksCiAgICAgICAgICAgICAgIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2N2dHNlcGkzMl9zdG9yZXVfZXBpMTYgKHZvaWQgKiBfX1AsIF9fbW1hc2s4IF9fTSwgX19tMTI4aSBfX0EpCnsKICBfX2J1aWx0aW5faWEzMl9wbW92c2R3MTI4bWVtX21hc2sgKChfX3Y4aGkgKikgX19QLCAoX192NHNpKSBfX0EsIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9jdnRzZXBpMzJfZXBpMTYgKF9fbTI1NmkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92c2R3MjU2X21hc2sgKChfX3Y4c2kpIF9fQSwKICAgICAgICAgICAgICAgKF9fdjhoaSlfbW1fdW5kZWZpbmVkX3NpMTI4KCksCiAgICAgICAgICAgICAgIChfX21tYXNrOCkgLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19jdnRzZXBpMzJfZXBpMTYgKF9fbTEyOGkgX19PLCBfX21tYXNrOCBfX00sIF9fbTI1NmkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92c2R3MjU2X21hc2sgKChfX3Y4c2kpIF9fQSwKICAgICAgICAgICAgICAgKF9fdjhoaSkgX19PLCBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfY3Z0c2VwaTMyX2VwaTE2IChfX21tYXNrOCBfX00sIF9fbTI1NmkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92c2R3MjU2X21hc2sgKChfX3Y4c2kpIF9fQSwKICAgICAgICAgICAgICAgKF9fdjhoaSkgX21tX3NldHplcm9fc2kxMjggKCksCiAgICAgICAgICAgICAgIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2N2dHNlcGkzMl9zdG9yZXVfZXBpMTYgKHZvaWQgKiBfX1AsIF9fbW1hc2s4IF9fTSwgX19tMjU2aSBfX0EpCnsKICBfX2J1aWx0aW5faWEzMl9wbW92c2R3MjU2bWVtX21hc2sgKChfX3Y4aGkgKikgX19QLCAoX192OHNpKSBfX0EsIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9jdnRzZXBpNjRfZXBpOCAoX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Btb3ZzcWIxMjhfbWFzayAoKF9fdjJkaSkgX19BLAogICAgICAgICAgICAgICAoX192MTZxaSlfbW1fdW5kZWZpbmVkX3NpMTI4KCksCiAgICAgICAgICAgICAgIChfX21tYXNrOCkgLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19jdnRzZXBpNjRfZXBpOCAoX19tMTI4aSBfX08sIF9fbW1hc2s4IF9fTSwgX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Btb3ZzcWIxMjhfbWFzayAoKF9fdjJkaSkgX19BLAogICAgICAgICAgICAgICAoX192MTZxaSkgX19PLCBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfY3Z0c2VwaTY0X2VwaTggKF9fbW1hc2s4IF9fTSwgX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Btb3ZzcWIxMjhfbWFzayAoKF9fdjJkaSkgX19BLAogICAgICAgICAgICAgICAoX192MTZxaSkgX21tX3NldHplcm9fc2kxMjggKCksCiAgICAgICAgICAgICAgIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2N2dHNlcGk2NF9zdG9yZXVfZXBpOCAodm9pZCAqIF9fUCwgX19tbWFzazggX19NLCBfX20xMjhpIF9fQSkKewogIF9fYnVpbHRpbl9pYTMyX3Btb3ZzcWIxMjhtZW1fbWFzayAoKF9fdjE2cWkgKikgX19QLCAoX192MmRpKSBfX0EsIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9jdnRzZXBpNjRfZXBpOCAoX19tMjU2aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Btb3ZzcWIyNTZfbWFzayAoKF9fdjRkaSkgX19BLAogICAgICAgICAgICAgICAoX192MTZxaSlfbW1fdW5kZWZpbmVkX3NpMTI4KCksCiAgICAgICAgICAgICAgIChfX21tYXNrOCkgLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19jdnRzZXBpNjRfZXBpOCAoX19tMTI4aSBfX08sIF9fbW1hc2s4IF9fTSwgX19tMjU2aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Btb3ZzcWIyNTZfbWFzayAoKF9fdjRkaSkgX19BLAogICAgICAgICAgICAgICAoX192MTZxaSkgX19PLCBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfY3Z0c2VwaTY0X2VwaTggKF9fbW1hc2s4IF9fTSwgX19tMjU2aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Btb3ZzcWIyNTZfbWFzayAoKF9fdjRkaSkgX19BLAogICAgICAgICAgICAgICAoX192MTZxaSkgX21tX3NldHplcm9fc2kxMjggKCksCiAgICAgICAgICAgICAgIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2N2dHNlcGk2NF9zdG9yZXVfZXBpOCAodm9pZCAqIF9fUCwgX19tbWFzazggX19NLCBfX20yNTZpIF9fQSkKewogIF9fYnVpbHRpbl9pYTMyX3Btb3ZzcWIyNTZtZW1fbWFzayAoKF9fdjE2cWkgKikgX19QLCAoX192NGRpKSBfX0EsIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9jdnRzZXBpNjRfZXBpMzIgKF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92c3FkMTI4X21hc2sgKChfX3YyZGkpIF9fQSwKICAgICAgICAgICAgICAgKF9fdjRzaSlfbW1fdW5kZWZpbmVkX3NpMTI4KCksCiAgICAgICAgICAgICAgIChfX21tYXNrOCkgLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19jdnRzZXBpNjRfZXBpMzIgKF9fbTEyOGkgX19PLCBfX21tYXNrOCBfX00sIF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92c3FkMTI4X21hc2sgKChfX3YyZGkpIF9fQSwKICAgICAgICAgICAgICAgKF9fdjRzaSkgX19PLCBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfY3Z0c2VwaTY0X2VwaTMyIChfX21tYXNrOCBfX00sIF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92c3FkMTI4X21hc2sgKChfX3YyZGkpIF9fQSwKICAgICAgICAgICAgICAgKF9fdjRzaSkgX21tX3NldHplcm9fc2kxMjggKCksCiAgICAgICAgICAgICAgIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2N2dHNlcGk2NF9zdG9yZXVfZXBpMzIgKHZvaWQgKiBfX1AsIF9fbW1hc2s4IF9fTSwgX19tMTI4aSBfX0EpCnsKICBfX2J1aWx0aW5faWEzMl9wbW92c3FkMTI4bWVtX21hc2sgKChfX3Y0c2kgKikgX19QLCAoX192MmRpKSBfX0EsIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9jdnRzZXBpNjRfZXBpMzIgKF9fbTI1NmkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92c3FkMjU2X21hc2sgKChfX3Y0ZGkpIF9fQSwKICAgICAgICAgICAgICAgKF9fdjRzaSlfbW1fdW5kZWZpbmVkX3NpMTI4KCksCiAgICAgICAgICAgICAgIChfX21tYXNrOCkgLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19jdnRzZXBpNjRfZXBpMzIgKF9fbTEyOGkgX19PLCBfX21tYXNrOCBfX00sIF9fbTI1NmkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92c3FkMjU2X21hc2sgKChfX3Y0ZGkpIF9fQSwKICAgICAgICAgICAgICAgKF9fdjRzaSlfX08sCiAgICAgICAgICAgICAgIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9jdnRzZXBpNjRfZXBpMzIgKF9fbW1hc2s4IF9fTSwgX19tMjU2aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Btb3ZzcWQyNTZfbWFzayAoKF9fdjRkaSkgX19BLAogICAgICAgICAgICAgICAoX192NHNpKSBfbW1fc2V0emVyb19zaTEyOCAoKSwKICAgICAgICAgICAgICAgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfY3Z0c2VwaTY0X3N0b3JldV9lcGkzMiAodm9pZCAqIF9fUCwgX19tbWFzazggX19NLCBfX20yNTZpIF9fQSkKewogIF9fYnVpbHRpbl9pYTMyX3Btb3ZzcWQyNTZtZW1fbWFzayAoKF9fdjRzaSAqKSBfX1AsIChfX3Y0ZGkpIF9fQSwgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX2N2dHNlcGk2NF9lcGkxNiAoX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Btb3ZzcXcxMjhfbWFzayAoKF9fdjJkaSkgX19BLAogICAgICAgICAgICAgICAoX192OGhpKV9tbV91bmRlZmluZWRfc2kxMjgoKSwKICAgICAgICAgICAgICAgKF9fbW1hc2s4KSAtMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2N2dHNlcGk2NF9lcGkxNiAoX19tMTI4aSBfX08sIF9fbW1hc2s4IF9fTSwgX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Btb3ZzcXcxMjhfbWFzayAoKF9fdjJkaSkgX19BLAogICAgICAgICAgICAgICAoX192OGhpKSBfX08sIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9jdnRzZXBpNjRfZXBpMTYgKF9fbW1hc2s4IF9fTSwgX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Btb3ZzcXcxMjhfbWFzayAoKF9fdjJkaSkgX19BLAogICAgICAgICAgICAgICAoX192OGhpKSBfbW1fc2V0emVyb19zaTEyOCAoKSwKICAgICAgICAgICAgICAgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfY3Z0c2VwaTY0X3N0b3JldV9lcGkxNiAodm9pZCAqIF9fUCwgX19tbWFzazggX19NLCBfX20xMjhpIF9fQSkKewogIF9fYnVpbHRpbl9pYTMyX3Btb3ZzcXcxMjhtZW1fbWFzayAoKF9fdjhoaSAqKSBfX1AsIChfX3YyZGkpIF9fQSwgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2N2dHNlcGk2NF9lcGkxNiAoX19tMjU2aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Btb3ZzcXcyNTZfbWFzayAoKF9fdjRkaSkgX19BLAogICAgICAgICAgICAgICAoX192OGhpKV9tbV91bmRlZmluZWRfc2kxMjgoKSwKICAgICAgICAgICAgICAgKF9fbW1hc2s4KSAtMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2N2dHNlcGk2NF9lcGkxNiAoX19tMTI4aSBfX08sIF9fbW1hc2s4IF9fTSwgX19tMjU2aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Btb3ZzcXcyNTZfbWFzayAoKF9fdjRkaSkgX19BLAogICAgICAgICAgICAgICAoX192OGhpKSBfX08sIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9jdnRzZXBpNjRfZXBpMTYgKF9fbW1hc2s4IF9fTSwgX19tMjU2aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Btb3ZzcXcyNTZfbWFzayAoKF9fdjRkaSkgX19BLAogICAgICAgICAgICAgICAoX192OGhpKSBfbW1fc2V0emVyb19zaTEyOCAoKSwKICAgICAgICAgICAgICAgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfY3Z0c2VwaTY0X3N0b3JldV9lcGkxNiAodm9pZCAqIF9fUCwgX19tbWFzazggX19NLCBfX20yNTZpIF9fQSkKewogIF9fYnVpbHRpbl9pYTMyX3Btb3ZzcXcyNTZtZW1fbWFzayAoKF9fdjhoaSAqKSBfX1AsIChfX3Y0ZGkpIF9fQSwgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX2N2dHVzZXBpMzJfZXBpOCAoX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Btb3Z1c2RiMTI4X21hc2sgKChfX3Y0c2kpIF9fQSwKICAgICAgICAgICAgICAgIChfX3YxNnFpKV9tbV91bmRlZmluZWRfc2kxMjgoKSwKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19jdnR1c2VwaTMyX2VwaTggKF9fbTEyOGkgX19PLCBfX21tYXNrOCBfX00sIF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92dXNkYjEyOF9tYXNrICgoX192NHNpKSBfX0EsCiAgICAgICAgICAgICAgICAoX192MTZxaSkgX19PLAogICAgICAgICAgICAgICAgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2N2dHVzZXBpMzJfZXBpOCAoX19tbWFzazggX19NLCBfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnVzZGIxMjhfbWFzayAoKF9fdjRzaSkgX19BLAogICAgICAgICAgICAgICAgKF9fdjE2cWkpIF9tbV9zZXR6ZXJvX3NpMTI4ICgpLAogICAgICAgICAgICAgICAgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfY3Z0dXNlcGkzMl9zdG9yZXVfZXBpOCAodm9pZCAqIF9fUCwgX19tbWFzazggX19NLCBfX20xMjhpIF9fQSkKewogIF9fYnVpbHRpbl9pYTMyX3Btb3Z1c2RiMTI4bWVtX21hc2sgKChfX3YxNnFpICopIF9fUCwgKF9fdjRzaSkgX19BLCBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfY3Z0dXNlcGkzMl9lcGk4IChfX20yNTZpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnVzZGIyNTZfbWFzayAoKF9fdjhzaSkgX19BLAogICAgICAgICAgICAgICAgKF9fdjE2cWkpX21tX3VuZGVmaW5lZF9zaTEyOCgpLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSAtMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2N2dHVzZXBpMzJfZXBpOCAoX19tMTI4aSBfX08sIF9fbW1hc2s4IF9fTSwgX19tMjU2aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Btb3Z1c2RiMjU2X21hc2sgKChfX3Y4c2kpIF9fQSwKICAgICAgICAgICAgICAgIChfX3YxNnFpKSBfX08sCiAgICAgICAgICAgICAgICBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfY3Z0dXNlcGkzMl9lcGk4IChfX21tYXNrOCBfX00sIF9fbTI1NmkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92dXNkYjI1Nl9tYXNrICgoX192OHNpKSBfX0EsCiAgICAgICAgICAgICAgICAoX192MTZxaSkgX21tX3NldHplcm9fc2kxMjggKCksCiAgICAgICAgICAgICAgICBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19jdnR1c2VwaTMyX3N0b3JldV9lcGk4ICh2b2lkICogX19QLCBfX21tYXNrOCBfX00sIF9fbTI1NmkgX19BKQp7CiAgX19idWlsdGluX2lhMzJfcG1vdnVzZGIyNTZtZW1fbWFzayAoKF9fdjE2cWkqKSBfX1AsIChfX3Y4c2kpIF9fQSwgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX2N2dHVzZXBpMzJfZXBpMTYgKF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92dXNkdzEyOF9tYXNrICgoX192NHNpKSBfX0EsCiAgICAgICAgICAgICAgICAoX192OGhpKV9tbV91bmRlZmluZWRfc2kxMjgoKSwKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19jdnR1c2VwaTMyX2VwaTE2IChfX20xMjhpIF9fTywgX19tbWFzazggX19NLCBfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnVzZHcxMjhfbWFzayAoKF9fdjRzaSkgX19BLAogICAgICAgICAgICAgICAgKF9fdjhoaSkgX19PLCBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfY3Z0dXNlcGkzMl9lcGkxNiAoX19tbWFzazggX19NLCBfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnVzZHcxMjhfbWFzayAoKF9fdjRzaSkgX19BLAogICAgICAgICAgICAgICAgKF9fdjhoaSkgX21tX3NldHplcm9fc2kxMjggKCksCiAgICAgICAgICAgICAgICBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19jdnR1c2VwaTMyX3N0b3JldV9lcGkxNiAodm9pZCAqIF9fUCwgX19tbWFzazggX19NLCBfX20xMjhpIF9fQSkKewogIF9fYnVpbHRpbl9pYTMyX3Btb3Z1c2R3MTI4bWVtX21hc2sgKChfX3Y4aGkgKikgX19QLCAoX192NHNpKSBfX0EsIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9jdnR1c2VwaTMyX2VwaTE2IChfX20yNTZpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnVzZHcyNTZfbWFzayAoKF9fdjhzaSkgX19BLAogICAgICAgICAgICAgICAgKF9fdjhoaSkgX21tX3VuZGVmaW5lZF9zaTEyOCgpLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSAtMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2N2dHVzZXBpMzJfZXBpMTYgKF9fbTEyOGkgX19PLCBfX21tYXNrOCBfX00sIF9fbTI1NmkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92dXNkdzI1Nl9tYXNrICgoX192OHNpKSBfX0EsCiAgICAgICAgICAgICAgICAoX192OGhpKSBfX08sIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9jdnR1c2VwaTMyX2VwaTE2IChfX21tYXNrOCBfX00sIF9fbTI1NmkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92dXNkdzI1Nl9tYXNrICgoX192OHNpKSBfX0EsCiAgICAgICAgICAgICAgICAoX192OGhpKSBfbW1fc2V0emVyb19zaTEyOCAoKSwKICAgICAgICAgICAgICAgIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2N2dHVzZXBpMzJfc3RvcmV1X2VwaTE2ICh2b2lkICogX19QLCBfX21tYXNrOCBfX00sIF9fbTI1NmkgX19BKQp7CiAgX19idWlsdGluX2lhMzJfcG1vdnVzZHcyNTZtZW1fbWFzayAoKF9fdjhoaSAqKSBfX1AsIChfX3Y4c2kpIF9fQSwgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX2N2dHVzZXBpNjRfZXBpOCAoX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Btb3Z1c3FiMTI4X21hc2sgKChfX3YyZGkpIF9fQSwKICAgICAgICAgICAgICAgIChfX3YxNnFpKV9tbV91bmRlZmluZWRfc2kxMjgoKSwKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19jdnR1c2VwaTY0X2VwaTggKF9fbTEyOGkgX19PLCBfX21tYXNrOCBfX00sIF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92dXNxYjEyOF9tYXNrICgoX192MmRpKSBfX0EsCiAgICAgICAgICAgICAgICAoX192MTZxaSkgX19PLAogICAgICAgICAgICAgICAgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2N2dHVzZXBpNjRfZXBpOCAoX19tbWFzazggX19NLCBfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnVzcWIxMjhfbWFzayAoKF9fdjJkaSkgX19BLAogICAgICAgICAgICAgICAgKF9fdjE2cWkpIF9tbV9zZXR6ZXJvX3NpMTI4ICgpLAogICAgICAgICAgICAgICAgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfY3Z0dXNlcGk2NF9zdG9yZXVfZXBpOCAodm9pZCAqIF9fUCwgX19tbWFzazggX19NLCBfX20xMjhpIF9fQSkKewogIF9fYnVpbHRpbl9pYTMyX3Btb3Z1c3FiMTI4bWVtX21hc2sgKChfX3YxNnFpICopIF9fUCwgKF9fdjJkaSkgX19BLCBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfY3Z0dXNlcGk2NF9lcGk4IChfX20yNTZpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnVzcWIyNTZfbWFzayAoKF9fdjRkaSkgX19BLAogICAgICAgICAgICAgICAgKF9fdjE2cWkpX21tX3VuZGVmaW5lZF9zaTEyOCgpLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSAtMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2N2dHVzZXBpNjRfZXBpOCAoX19tMTI4aSBfX08sIF9fbW1hc2s4IF9fTSwgX19tMjU2aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Btb3Z1c3FiMjU2X21hc2sgKChfX3Y0ZGkpIF9fQSwKICAgICAgICAgICAgICAgIChfX3YxNnFpKSBfX08sCiAgICAgICAgICAgICAgICBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfY3Z0dXNlcGk2NF9lcGk4IChfX21tYXNrOCBfX00sIF9fbTI1NmkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92dXNxYjI1Nl9tYXNrICgoX192NGRpKSBfX0EsCiAgICAgICAgICAgICAgICAoX192MTZxaSkgX21tX3NldHplcm9fc2kxMjggKCksCiAgICAgICAgICAgICAgICBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19jdnR1c2VwaTY0X3N0b3JldV9lcGk4ICh2b2lkICogX19QLCBfX21tYXNrOCBfX00sIF9fbTI1NmkgX19BKQp7CiAgX19idWlsdGluX2lhMzJfcG1vdnVzcWIyNTZtZW1fbWFzayAoKF9fdjE2cWkgKikgX19QLCAoX192NGRpKSBfX0EsIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9jdnR1c2VwaTY0X2VwaTMyIChfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnVzcWQxMjhfbWFzayAoKF9fdjJkaSkgX19BLAogICAgICAgICAgICAgICAgKF9fdjRzaSlfbW1fdW5kZWZpbmVkX3NpMTI4KCksCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIC0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfY3Z0dXNlcGk2NF9lcGkzMiAoX19tMTI4aSBfX08sIF9fbW1hc2s4IF9fTSwgX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Btb3Z1c3FkMTI4X21hc2sgKChfX3YyZGkpIF9fQSwKICAgICAgICAgICAgICAgIChfX3Y0c2kpIF9fTywgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2N2dHVzZXBpNjRfZXBpMzIgKF9fbW1hc2s4IF9fTSwgX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Btb3Z1c3FkMTI4X21hc2sgKChfX3YyZGkpIF9fQSwKICAgICAgICAgICAgICAgIChfX3Y0c2kpIF9tbV9zZXR6ZXJvX3NpMTI4ICgpLAogICAgICAgICAgICAgICAgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfY3Z0dXNlcGk2NF9zdG9yZXVfZXBpMzIgKHZvaWQgKiBfX1AsIF9fbW1hc2s4IF9fTSwgX19tMTI4aSBfX0EpCnsKICBfX2J1aWx0aW5faWEzMl9wbW92dXNxZDEyOG1lbV9tYXNrICgoX192NHNpICopIF9fUCwgKF9fdjJkaSkgX19BLCBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfY3Z0dXNlcGk2NF9lcGkzMiAoX19tMjU2aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Btb3Z1c3FkMjU2X21hc2sgKChfX3Y0ZGkpIF9fQSwKICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX3VuZGVmaW5lZF9zaTEyOCgpLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSAtMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2N2dHVzZXBpNjRfZXBpMzIgKF9fbTEyOGkgX19PLCBfX21tYXNrOCBfX00sIF9fbTI1NmkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92dXNxZDI1Nl9tYXNrICgoX192NGRpKSBfX0EsCiAgICAgICAgICAgICAgICAoX192NHNpKSBfX08sIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9jdnR1c2VwaTY0X2VwaTMyIChfX21tYXNrOCBfX00sIF9fbTI1NmkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92dXNxZDI1Nl9tYXNrICgoX192NGRpKSBfX0EsCiAgICAgICAgICAgICAgICAoX192NHNpKSBfbW1fc2V0emVyb19zaTEyOCAoKSwKICAgICAgICAgICAgICAgIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2N2dHVzZXBpNjRfc3RvcmV1X2VwaTMyICh2b2lkICogX19QLCBfX21tYXNrOCBfX00sIF9fbTI1NmkgX19BKQp7CiAgX19idWlsdGluX2lhMzJfcG1vdnVzcWQyNTZtZW1fbWFzayAoKF9fdjRzaSAqKSBfX1AsIChfX3Y0ZGkpIF9fQSwgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX2N2dHVzZXBpNjRfZXBpMTYgKF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92dXNxdzEyOF9tYXNrICgoX192MmRpKSBfX0EsCiAgICAgICAgICAgICAgICAoX192OGhpKV9tbV91bmRlZmluZWRfc2kxMjgoKSwKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19jdnR1c2VwaTY0X2VwaTE2IChfX20xMjhpIF9fTywgX19tbWFzazggX19NLCBfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnVzcXcxMjhfbWFzayAoKF9fdjJkaSkgX19BLAogICAgICAgICAgICAgICAgKF9fdjhoaSkgX19PLCBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfY3Z0dXNlcGk2NF9lcGkxNiAoX19tbWFzazggX19NLCBfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnVzcXcxMjhfbWFzayAoKF9fdjJkaSkgX19BLAogICAgICAgICAgICAgICAgKF9fdjhoaSkgX21tX3NldHplcm9fc2kxMjggKCksCiAgICAgICAgICAgICAgICBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19jdnR1c2VwaTY0X3N0b3JldV9lcGkxNiAodm9pZCAqIF9fUCwgX19tbWFzazggX19NLCBfX20xMjhpIF9fQSkKewogIF9fYnVpbHRpbl9pYTMyX3Btb3Z1c3F3MTI4bWVtX21hc2sgKChfX3Y4aGkgKikgX19QLCAoX192MmRpKSBfX0EsIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9jdnR1c2VwaTY0X2VwaTE2IChfX20yNTZpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnVzcXcyNTZfbWFzayAoKF9fdjRkaSkgX19BLAogICAgICAgICAgICAgICAgKF9fdjhoaSlfbW1fdW5kZWZpbmVkX3NpMTI4KCksCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIC0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfY3Z0dXNlcGk2NF9lcGkxNiAoX19tMTI4aSBfX08sIF9fbW1hc2s4IF9fTSwgX19tMjU2aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Btb3Z1c3F3MjU2X21hc2sgKChfX3Y0ZGkpIF9fQSwKICAgICAgICAgICAgICAgIChfX3Y4aGkpIF9fTywgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2N2dHVzZXBpNjRfZXBpMTYgKF9fbW1hc2s4IF9fTSwgX19tMjU2aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Btb3Z1c3F3MjU2X21hc2sgKChfX3Y0ZGkpIF9fQSwKICAgICAgICAgICAgICAgIChfX3Y4aGkpIF9tbV9zZXR6ZXJvX3NpMTI4ICgpLAogICAgICAgICAgICAgICAgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfY3Z0dXNlcGk2NF9zdG9yZXVfZXBpMTYgKHZvaWQgKiBfX1AsIF9fbW1hc2s4IF9fTSwgX19tMjU2aSBfX0EpCnsKICBfX2J1aWx0aW5faWEzMl9wbW92dXNxdzI1Nm1lbV9tYXNrICgoX192OGhpICopIF9fUCwgKF9fdjRkaSkgX19BLCBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fY3Z0ZXBpMzJfZXBpOCAoX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX3NodWZmbGV2ZWN0b3IoCiAgICAgIF9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKChfX3Y0c2kpX19BLCBfX3Y0cWkpLCAoX192NHFpKXswLCAwLCAwLCAwfSwgMCwgMSwKICAgICAgMiwgMywgNCwgNSwgNiwgNywgNywgNywgNywgNywgNywgNywgNywgNyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2N2dGVwaTMyX2VwaTggKF9fbTEyOGkgX19PLCBfX21tYXNrOCBfX00sIF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92ZGIxMjhfbWFzayAoKF9fdjRzaSkgX19BLAogICAgICAgICAgICAgIChfX3YxNnFpKSBfX08sIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9jdnRlcGkzMl9lcGk4IChfX21tYXNrOCBfX00sIF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92ZGIxMjhfbWFzayAoKF9fdjRzaSkgX19BLAogICAgICAgICAgICAgIChfX3YxNnFpKQogICAgICAgICAgICAgIF9tbV9zZXR6ZXJvX3NpMTI4ICgpLAogICAgICAgICAgICAgIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2N2dGVwaTMyX3N0b3JldV9lcGk4ICh2b2lkICogX19QLCBfX21tYXNrOCBfX00sIF9fbTEyOGkgX19BKQp7CiAgX19idWlsdGluX2lhMzJfcG1vdmRiMTI4bWVtX21hc2sgKChfX3YxNnFpICopIF9fUCwgKF9fdjRzaSkgX19BLCBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfY3Z0ZXBpMzJfZXBpOCAoX19tMjU2aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX3NodWZmbGV2ZWN0b3IoCiAgICAgIF9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKChfX3Y4c2kpX19BLCBfX3Y4cWkpLAogICAgICAoX192OHFpKXswLCAwLCAwLCAwLCAwLCAwLCAwLCAwfSwgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLAogICAgICAxMiwgMTMsIDE0LCAxNSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2N2dGVwaTMyX2VwaTggKF9fbTEyOGkgX19PLCBfX21tYXNrOCBfX00sIF9fbTI1NmkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92ZGIyNTZfbWFzayAoKF9fdjhzaSkgX19BLAogICAgICAgICAgICAgIChfX3YxNnFpKSBfX08sIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9jdnRlcGkzMl9lcGk4IChfX21tYXNrOCBfX00sIF9fbTI1NmkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92ZGIyNTZfbWFzayAoKF9fdjhzaSkgX19BLAogICAgICAgICAgICAgIChfX3YxNnFpKSBfbW1fc2V0emVyb19zaTEyOCAoKSwKICAgICAgICAgICAgICBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19jdnRlcGkzMl9zdG9yZXVfZXBpOCAodm9pZCAqIF9fUCwgX19tbWFzazggX19NLCBfX20yNTZpIF9fQSkKewogIF9fYnVpbHRpbl9pYTMyX3Btb3ZkYjI1Nm1lbV9tYXNrICgoX192MTZxaSAqKSBfX1AsIChfX3Y4c2kpIF9fQSwgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX2N2dGVwaTMyX2VwaTE2IChfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigKICAgICAgX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoKF9fdjRzaSlfX0EsIF9fdjRoaSksIChfX3Y0aGkpezAsIDAsIDAsIDB9LCAwLCAxLAogICAgICAyLCAzLCA0LCA1LCA2LCA3KTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfY3Z0ZXBpMzJfZXBpMTYgKF9fbTEyOGkgX19PLCBfX21tYXNrOCBfX00sIF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92ZHcxMjhfbWFzayAoKF9fdjRzaSkgX19BLAogICAgICAgICAgICAgIChfX3Y4aGkpIF9fTywgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2N2dGVwaTMyX2VwaTE2IChfX21tYXNrOCBfX00sIF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92ZHcxMjhfbWFzayAoKF9fdjRzaSkgX19BLAogICAgICAgICAgICAgIChfX3Y4aGkpIF9tbV9zZXR6ZXJvX3NpMTI4ICgpLAogICAgICAgICAgICAgIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2N2dGVwaTMyX3N0b3JldV9lcGkxNiAodm9pZCAqIF9fUCwgX19tbWFzazggX19NLCBfX20xMjhpIF9fQSkKewogIF9fYnVpbHRpbl9pYTMyX3Btb3ZkdzEyOG1lbV9tYXNrICgoX192OGhpICopIF9fUCwgKF9fdjRzaSkgX19BLCBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfY3Z0ZXBpMzJfZXBpMTYgKF9fbTI1NmkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKChfX3Y4c2kpX19BLCBfX3Y4aGkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19jdnRlcGkzMl9lcGkxNiAoX19tMTI4aSBfX08sIF9fbW1hc2s4IF9fTSwgX19tMjU2aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Btb3ZkdzI1Nl9tYXNrICgoX192OHNpKSBfX0EsCiAgICAgICAgICAgICAgKF9fdjhoaSkgX19PLCBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfY3Z0ZXBpMzJfZXBpMTYgKF9fbW1hc2s4IF9fTSwgX19tMjU2aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Btb3ZkdzI1Nl9tYXNrICgoX192OHNpKSBfX0EsCiAgICAgICAgICAgICAgKF9fdjhoaSkgX21tX3NldHplcm9fc2kxMjggKCksCiAgICAgICAgICAgICAgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfY3Z0ZXBpMzJfc3RvcmV1X2VwaTE2ICh2b2lkICogIF9fUCwgX19tbWFzazggX19NLCBfX20yNTZpIF9fQSkKewogIF9fYnVpbHRpbl9pYTMyX3Btb3ZkdzI1Nm1lbV9tYXNrICgoX192OGhpICopIF9fUCwgKF9fdjhzaSkgX19BLCBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fY3Z0ZXBpNjRfZXBpOCAoX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX3NodWZmbGV2ZWN0b3IoCiAgICAgIF9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKChfX3YyZGkpX19BLCBfX3YycWkpLCAoX192MnFpKXswLCAwfSwgMCwgMSwgMiwgMywKICAgICAgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2N2dGVwaTY0X2VwaTggKF9fbTEyOGkgX19PLCBfX21tYXNrOCBfX00sIF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92cWIxMjhfbWFzayAoKF9fdjJkaSkgX19BLAogICAgICAgICAgICAgIChfX3YxNnFpKSBfX08sIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9jdnRlcGk2NF9lcGk4IChfX21tYXNrOCBfX00sIF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92cWIxMjhfbWFzayAoKF9fdjJkaSkgX19BLAogICAgICAgICAgICAgIChfX3YxNnFpKSBfbW1fc2V0emVyb19zaTEyOCAoKSwKICAgICAgICAgICAgICBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19jdnRlcGk2NF9zdG9yZXVfZXBpOCAodm9pZCAqIF9fUCwgX19tbWFzazggX19NLCBfX20xMjhpIF9fQSkKewogIF9fYnVpbHRpbl9pYTMyX3Btb3ZxYjEyOG1lbV9tYXNrICgoX192MTZxaSAqKSBfX1AsIChfX3YyZGkpIF9fQSwgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2N2dGVwaTY0X2VwaTggKF9fbTI1NmkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKAogICAgICBfX2J1aWx0aW5fY29udmVydHZlY3RvcigoX192NGRpKV9fQSwgX192NHFpKSwgKF9fdjRxaSl7MCwgMCwgMCwgMH0sIDAsIDEsCiAgICAgIDIsIDMsIDQsIDUsIDYsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19jdnRlcGk2NF9lcGk4IChfX20xMjhpIF9fTywgX19tbWFzazggX19NLCBfX20yNTZpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnFiMjU2X21hc2sgKChfX3Y0ZGkpIF9fQSwKICAgICAgICAgICAgICAoX192MTZxaSkgX19PLCBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfY3Z0ZXBpNjRfZXBpOCAoX19tbWFzazggX19NLCBfX20yNTZpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnFiMjU2X21hc2sgKChfX3Y0ZGkpIF9fQSwKICAgICAgICAgICAgICAoX192MTZxaSkgX21tX3NldHplcm9fc2kxMjggKCksCiAgICAgICAgICAgICAgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfY3Z0ZXBpNjRfc3RvcmV1X2VwaTggKHZvaWQgKiBfX1AsIF9fbW1hc2s4IF9fTSwgX19tMjU2aSBfX0EpCnsKICBfX2J1aWx0aW5faWEzMl9wbW92cWIyNTZtZW1fbWFzayAoKF9fdjE2cWkgKikgX19QLCAoX192NGRpKSBfX0EsIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9jdnRlcGk2NF9lcGkzMiAoX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX3NodWZmbGV2ZWN0b3IoCiAgICAgIF9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKChfX3YyZGkpX19BLCBfX3Yyc2kpLCAoX192MnNpKXswLCAwfSwgMCwgMSwgMiwgMyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2N2dGVwaTY0X2VwaTMyIChfX20xMjhpIF9fTywgX19tbWFzazggX19NLCBfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnFkMTI4X21hc2sgKChfX3YyZGkpIF9fQSwKICAgICAgICAgICAgICAoX192NHNpKSBfX08sIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9jdnRlcGk2NF9lcGkzMiAoX19tbWFzazggX19NLCBfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnFkMTI4X21hc2sgKChfX3YyZGkpIF9fQSwKICAgICAgICAgICAgICAoX192NHNpKSBfbW1fc2V0emVyb19zaTEyOCAoKSwKICAgICAgICAgICAgICBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19jdnRlcGk2NF9zdG9yZXVfZXBpMzIgKHZvaWQgKiBfX1AsIF9fbW1hc2s4IF9fTSwgX19tMTI4aSBfX0EpCnsKICBfX2J1aWx0aW5faWEzMl9wbW92cWQxMjhtZW1fbWFzayAoKF9fdjRzaSAqKSBfX1AsIChfX3YyZGkpIF9fQSwgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2N2dGVwaTY0X2VwaTMyIChfX20yNTZpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5fY29udmVydHZlY3RvcigoX192NGRpKV9fQSwgX192NHNpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfY3Z0ZXBpNjRfZXBpMzIgKF9fbTEyOGkgX19PLCBfX21tYXNrOCBfX00sIF9fbTI1NmkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMTI4KChfX21tYXNrOClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tMjU2X2N2dGVwaTY0X2VwaTMyKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX19PKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2N2dGVwaTY0X2VwaTMyIChfX21tYXNrOCBfX00sIF9fbTI1NmkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMTI4KChfX21tYXNrOClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tMjU2X2N2dGVwaTY0X2VwaTMyKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX3NldHplcm9fc2kxMjgoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2N2dGVwaTY0X3N0b3JldV9lcGkzMiAodm9pZCAqIF9fUCwgX19tbWFzazggX19NLCBfX20yNTZpIF9fQSkKewogIF9fYnVpbHRpbl9pYTMyX3Btb3ZxZDI1Nm1lbV9tYXNrICgoX192NHNpICopIF9fUCwgKF9fdjRkaSkgX19BLCBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fY3Z0ZXBpNjRfZXBpMTYgKF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKAogICAgICBfX2J1aWx0aW5fY29udmVydHZlY3RvcigoX192MmRpKV9fQSwgX192MmhpKSwgKF9fdjJoaSl7MCwgMH0sIDAsIDEsIDIsIDMsCiAgICAgIDMsIDMsIDMsIDMpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19jdnRlcGk2NF9lcGkxNiAoX19tMTI4aSBfX08sIF9fbW1hc2s4IF9fTSwgX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Btb3ZxdzEyOF9tYXNrICgoX192MmRpKSBfX0EsCiAgICAgICAgICAgICAgKF9fdjhoaSlfX08sCiAgICAgICAgICAgICAgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2N2dGVwaTY0X2VwaTE2IChfX21tYXNrOCBfX00sIF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92cXcxMjhfbWFzayAoKF9fdjJkaSkgX19BLAogICAgICAgICAgICAgIChfX3Y4aGkpIF9tbV9zZXR6ZXJvX3NpMTI4ICgpLAogICAgICAgICAgICAgIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2N2dGVwaTY0X3N0b3JldV9lcGkxNiAodm9pZCAqIF9fUCwgX19tbWFzazggX19NLCBfX20xMjhpIF9fQSkKewogIF9fYnVpbHRpbl9pYTMyX3Btb3ZxdzEyOG1lbV9tYXNrICgoX192OGhpICopIF9fUCwgKF9fdjJkaSkgX19BLCBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfY3Z0ZXBpNjRfZXBpMTYgKF9fbTI1NmkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKAogICAgICBfX2J1aWx0aW5fY29udmVydHZlY3RvcigoX192NGRpKV9fQSwgX192NGhpKSwgKF9fdjRoaSl7MCwgMCwgMCwgMH0sIDAsIDEsCiAgICAgIDIsIDMsIDQsIDUsIDYsIDcpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19jdnRlcGk2NF9lcGkxNiAoX19tMTI4aSBfX08sIF9fbW1hc2s4IF9fTSwgX19tMjU2aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Btb3ZxdzI1Nl9tYXNrICgoX192NGRpKSBfX0EsCiAgICAgICAgICAgICAgKF9fdjhoaSkgX19PLCBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfY3Z0ZXBpNjRfZXBpMTYgKF9fbW1hc2s4IF9fTSwgX19tMjU2aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Btb3ZxdzI1Nl9tYXNrICgoX192NGRpKSBfX0EsCiAgICAgICAgICAgICAgKF9fdjhoaSkgX21tX3NldHplcm9fc2kxMjggKCksCiAgICAgICAgICAgICAgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfY3Z0ZXBpNjRfc3RvcmV1X2VwaTE2ICh2b2lkICogX19QLCBfX21tYXNrOCBfX00sIF9fbTI1NmkgX19BKQp7CiAgX19idWlsdGluX2lhMzJfcG1vdnF3MjU2bWVtX21hc2sgKChfX3Y4aGkgKikgX19QLCAoX192NGRpKSBfX0EsIF9fTSk7Cn0KCiNkZWZpbmUgX21tMjU2X2V4dHJhY3RmMzJ4NF9wcyhBLCBpbW0pIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl9leHRyYWN0ZjMyeDRfMjU2X21hc2soKF9fdjhzZikoX19tMjU2KShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX3VuZGVmaW5lZF9wcygpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSkpCgojZGVmaW5lIF9tbTI1Nl9tYXNrX2V4dHJhY3RmMzJ4NF9wcyhXLCBVLCBBLCBpbW0pIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl9leHRyYWN0ZjMyeDRfMjU2X21hc2soKF9fdjhzZikoX19tMjU2KShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoVyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSkpCgojZGVmaW5lIF9tbTI1Nl9tYXNrel9leHRyYWN0ZjMyeDRfcHMoVSwgQSwgaW1tKSBcCiAgKChfX20xMjgpX19idWlsdGluX2lhMzJfZXh0cmFjdGYzMng0XzI1Nl9tYXNrKChfX3Y4c2YpKF9fbTI1NikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoaW1tKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9tbV9zZXR6ZXJvX3BzKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSkpCgojZGVmaW5lIF9tbTI1Nl9leHRyYWN0aTMyeDRfZXBpMzIoQSwgaW1tKSBcCiAgKChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX2V4dHJhY3RpMzJ4NF8yNTZfbWFzaygoX192OHNpKShfX20yNTZpKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoaW1tKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfbW1fdW5kZWZpbmVkX3NpMTI4KCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSkpCgojZGVmaW5lIF9tbTI1Nl9tYXNrX2V4dHJhY3RpMzJ4NF9lcGkzMihXLCBVLCBBLCBpbW0pIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfZXh0cmFjdGkzMng0XzI1Nl9tYXNrKChfX3Y4c2kpKF9fbTI1NmkpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKShfX20xMjhpKShXKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSkpCgojZGVmaW5lIF9tbTI1Nl9tYXNrel9leHRyYWN0aTMyeDRfZXBpMzIoVSwgQSwgaW1tKSBcCiAgKChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX2V4dHJhY3RpMzJ4NF8yNTZfbWFzaygoX192OHNpKShfX20yNTZpKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoaW1tKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfbW1fc2V0emVyb19zaTEyOCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpKSkKCiNkZWZpbmUgX21tMjU2X2luc2VydGYzMng0KEEsIEIsIGltbSkgXAogICgoX19tMjU2KV9fYnVpbHRpbl9pYTMyX2luc2VydGYzMng0XzI1NigoX192OHNmKShfX20yNTYpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoQiksIChpbnQpKGltbSkpKQoKI2RlZmluZSBfbW0yNTZfbWFza19pbnNlcnRmMzJ4NChXLCBVLCBBLCBCLCBpbW0pIFwKICAoKF9fbTI1NilfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18yNTYoKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZilfbW0yNTZfaW5zZXJ0ZjMyeDQoKEEpLCAoQiksIChpbW0pKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZikoX19tMjU2KShXKSkpCgojZGVmaW5lIF9tbTI1Nl9tYXNrel9pbnNlcnRmMzJ4NChVLCBBLCBCLCBpbW0pIFwKICAoKF9fbTI1NilfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18yNTYoKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZilfbW0yNTZfaW5zZXJ0ZjMyeDQoKEEpLCAoQiksIChpbW0pKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZilfbW0yNTZfc2V0emVyb19wcygpKSkKCiNkZWZpbmUgX21tMjU2X2luc2VydGkzMng0KEEsIEIsIGltbSkgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9pbnNlcnRpMzJ4NF8yNTYoKF9fdjhzaSkoX19tMjU2aSkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpKF9fbTEyOGkpKEIpLCAoaW50KShpbW0pKSkKCiNkZWZpbmUgX21tMjU2X21hc2tfaW5zZXJ0aTMyeDQoVywgVSwgQSwgQiwgaW1tKSBcCiAgKChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMjU2KChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X2luc2VydGkzMng0KChBKSwgKEIpLCAoaW1tKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpKF9fbTI1NmkpKFcpKSkKCiNkZWZpbmUgX21tMjU2X21hc2t6X2luc2VydGkzMng0KFUsIEEsIEIsIGltbSkgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzI1NigoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9pbnNlcnRpMzJ4NCgoQSksIChCKSwgKGltbSkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpKQoKI2RlZmluZSBfbW1fZ2V0bWFudF9wZChBLCBCLCBDKSBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2dldG1hbnRwZDEyOF9tYXNrKChfX3YyZGYpKF9fbTEyOGQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKCgoQyk8PDIpIHwgKEIpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9tbV9zZXR6ZXJvX3BkKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xKSkKCiNkZWZpbmUgX21tX21hc2tfZ2V0bWFudF9wZChXLCBVLCBBLCBCLCBDKSBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2dldG1hbnRwZDEyOF9tYXNrKChfX3YyZGYpKF9fbTEyOGQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKCgoQyk8PDIpIHwgKEIpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShXKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpKSkKCiNkZWZpbmUgX21tX21hc2t6X2dldG1hbnRfcGQoVSwgQSwgQiwgQykgXAogICgoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9nZXRtYW50cGQxMjhfbWFzaygoX192MmRmKShfX20xMjhkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KSgoKEMpPDwyKSB8IChCKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfbW1fc2V0emVyb19wZCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSkpKQoKI2RlZmluZSBfbW0yNTZfZ2V0bWFudF9wZChBLCBCLCBDKSBcCiAgKChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX2dldG1hbnRwZDI1Nl9tYXNrKChfX3Y0ZGYpKF9fbTI1NmQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKCgoQyk8PDIpIHwgKEIpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9tbTI1Nl9zZXR6ZXJvX3BkKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xKSkKCiNkZWZpbmUgX21tMjU2X21hc2tfZ2V0bWFudF9wZChXLCBVLCBBLCBCLCBDKSBcCiAgKChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX2dldG1hbnRwZDI1Nl9tYXNrKChfX3Y0ZGYpKF9fbTI1NmQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKCgoQyk8PDIpIHwgKEIpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKShfX20yNTZkKShXKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpKSkKCiNkZWZpbmUgX21tMjU2X21hc2t6X2dldG1hbnRfcGQoVSwgQSwgQiwgQykgXAogICgoX19tMjU2ZClfX2J1aWx0aW5faWEzMl9nZXRtYW50cGQyNTZfbWFzaygoX192NGRmKShfX20yNTZkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KSgoKEMpPDwyKSB8IChCKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZilfbW0yNTZfc2V0emVyb19wZCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSkpKQoKI2RlZmluZSBfbW1fZ2V0bWFudF9wcyhBLCBCLCBDKSBcCiAgKChfX20xMjgpX19idWlsdGluX2lhMzJfZ2V0bWFudHBzMTI4X21hc2soKF9fdjRzZikoX19tMTI4KShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKCgoQyk8PDIpIHwgKEIpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX3NldHplcm9fcHMoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSkpCgojZGVmaW5lIF9tbV9tYXNrX2dldG1hbnRfcHMoVywgVSwgQSwgQiwgQykgXAogICgoX19tMTI4KV9fYnVpbHRpbl9pYTMyX2dldG1hbnRwczEyOF9tYXNrKChfX3Y0c2YpKF9fbTEyOCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KSgoKEMpPDwyKSB8IChCKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKFcpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSkpCgojZGVmaW5lIF9tbV9tYXNrel9nZXRtYW50X3BzKFUsIEEsIEIsIEMpIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl9nZXRtYW50cHMxMjhfbWFzaygoX192NHNmKShfX20xMjgpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoKChDKTw8MikgfCAoQikpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfbW1fc2V0emVyb19wcygpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSkpCgojZGVmaW5lIF9tbTI1Nl9nZXRtYW50X3BzKEEsIEIsIEMpIFwKICAoKF9fbTI1NilfX2J1aWx0aW5faWEzMl9nZXRtYW50cHMyNTZfbWFzaygoX192OHNmKShfX20yNTYpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoKChDKTw8MikgfCAoQikpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZilfbW0yNTZfc2V0emVyb19wcygpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xKSkKCiNkZWZpbmUgX21tMjU2X21hc2tfZ2V0bWFudF9wcyhXLCBVLCBBLCBCLCBDKSBcCiAgKChfX20yNTYpX19idWlsdGluX2lhMzJfZ2V0bWFudHBzMjU2X21hc2soKF9fdjhzZikoX19tMjU2KShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKCgoQyk8PDIpIHwgKEIpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpKF9fbTI1NikoVyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpKSkKCiNkZWZpbmUgX21tMjU2X21hc2t6X2dldG1hbnRfcHMoVSwgQSwgQiwgQykgXAogICgoX19tMjU2KV9fYnVpbHRpbl9pYTMyX2dldG1hbnRwczI1Nl9tYXNrKChfX3Y4c2YpKF9fbTI1NikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KSgoKEMpPDwyKSB8IChCKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKV9tbTI1Nl9zZXR6ZXJvX3BzKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpKSkKCiNkZWZpbmUgX21tX21tYXNrX2k2NGdhdGhlcl9wZCh2MV9vbGQsIG1hc2ssIGluZGV4LCBhZGRyLCBzY2FsZSkgXAogICgoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9nYXRoZXIzZGl2MmRmKChfX3YyZGYpKF9fbTEyOGQpKHYxX29sZCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCBjb25zdCAqKShhZGRyKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpKF9fbTEyOGkpKGluZGV4KSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkobWFzayksIChpbnQpKHNjYWxlKSkpCgojZGVmaW5lIF9tbV9tbWFza19pNjRnYXRoZXJfZXBpNjQodjFfb2xkLCBtYXNrLCBpbmRleCwgYWRkciwgc2NhbGUpIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfZ2F0aGVyM2RpdjJkaSgoX192MmRpKShfX20xMjhpKSh2MV9vbGQpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgY29uc3QgKikoYWRkciksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKShfX20xMjhpKShpbmRleCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKG1hc2spLCAoaW50KShzY2FsZSkpKQoKI2RlZmluZSBfbW0yNTZfbW1hc2tfaTY0Z2F0aGVyX3BkKHYxX29sZCwgbWFzaywgaW5kZXgsIGFkZHIsIHNjYWxlKSBcCiAgKChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX2dhdGhlcjNkaXY0ZGYoKF9fdjRkZikoX19tMjU2ZCkodjFfb2xkKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkIGNvbnN0ICopKGFkZHIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSkoX19tMjU2aSkoaW5kZXgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShtYXNrKSwgKGludCkoc2NhbGUpKSkKCiNkZWZpbmUgX21tMjU2X21tYXNrX2k2NGdhdGhlcl9lcGk2NCh2MV9vbGQsIG1hc2ssIGluZGV4LCBhZGRyLCBzY2FsZSkgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9nYXRoZXIzZGl2NGRpKChfX3Y0ZGkpKF9fbTI1NmkpKHYxX29sZCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCBjb25zdCAqKShhZGRyKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpKF9fbTI1NmkpKGluZGV4KSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkobWFzayksIChpbnQpKHNjYWxlKSkpCgojZGVmaW5lIF9tbV9tbWFza19pNjRnYXRoZXJfcHModjFfb2xkLCBtYXNrLCBpbmRleCwgYWRkciwgc2NhbGUpIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl9nYXRoZXIzZGl2NHNmKChfX3Y0c2YpKF9fbTEyOCkodjFfb2xkKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgY29uc3QgKikoYWRkciksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpKF9fbTEyOGkpKGluZGV4KSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShtYXNrKSwgKGludCkoc2NhbGUpKSkKCiNkZWZpbmUgX21tX21tYXNrX2k2NGdhdGhlcl9lcGkzMih2MV9vbGQsIG1hc2ssIGluZGV4LCBhZGRyLCBzY2FsZSkgXAogICgoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9nYXRoZXIzZGl2NHNpKChfX3Y0c2kpKF9fbTEyOGkpKHYxX29sZCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCBjb25zdCAqKShhZGRyKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpKF9fbTEyOGkpKGluZGV4KSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkobWFzayksIChpbnQpKHNjYWxlKSkpCgojZGVmaW5lIF9tbTI1Nl9tbWFza19pNjRnYXRoZXJfcHModjFfb2xkLCBtYXNrLCBpbmRleCwgYWRkciwgc2NhbGUpIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl9nYXRoZXIzZGl2OHNmKChfX3Y0c2YpKF9fbTEyOCkodjFfb2xkKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgY29uc3QgKikoYWRkciksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpKF9fbTI1NmkpKGluZGV4KSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShtYXNrKSwgKGludCkoc2NhbGUpKSkKCiNkZWZpbmUgX21tMjU2X21tYXNrX2k2NGdhdGhlcl9lcGkzMih2MV9vbGQsIG1hc2ssIGluZGV4LCBhZGRyLCBzY2FsZSkgXAogICgoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9nYXRoZXIzZGl2OHNpKChfX3Y0c2kpKF9fbTEyOGkpKHYxX29sZCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCBjb25zdCAqKShhZGRyKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpKF9fbTI1NmkpKGluZGV4KSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkobWFzayksIChpbnQpKHNjYWxlKSkpCgojZGVmaW5lIF9tbV9tbWFza19pMzJnYXRoZXJfcGQodjFfb2xkLCBtYXNrLCBpbmRleCwgYWRkciwgc2NhbGUpIFwKICAoKF9fbTEyOGQpX19idWlsdGluX2lhMzJfZ2F0aGVyM3NpdjJkZigoX192MmRmKShfX20xMjhkKSh2MV9vbGQpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgY29uc3QgKikoYWRkciksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKShfX20xMjhpKShpbmRleCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKG1hc2spLCAoaW50KShzY2FsZSkpKQoKI2RlZmluZSBfbW1fbW1hc2tfaTMyZ2F0aGVyX2VwaTY0KHYxX29sZCwgbWFzaywgaW5kZXgsIGFkZHIsIHNjYWxlKSBcCiAgKChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX2dhdGhlcjNzaXYyZGkoKF9fdjJkaSkoX19tMTI4aSkodjFfb2xkKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkIGNvbnN0ICopKGFkZHIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSkoX19tMTI4aSkoaW5kZXgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShtYXNrKSwgKGludCkoc2NhbGUpKSkKCiNkZWZpbmUgX21tMjU2X21tYXNrX2kzMmdhdGhlcl9wZCh2MV9vbGQsIG1hc2ssIGluZGV4LCBhZGRyLCBzY2FsZSkgXAogICgoX19tMjU2ZClfX2J1aWx0aW5faWEzMl9nYXRoZXIzc2l2NGRmKChfX3Y0ZGYpKF9fbTI1NmQpKHYxX29sZCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCBjb25zdCAqKShhZGRyKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpKF9fbTEyOGkpKGluZGV4KSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkobWFzayksIChpbnQpKHNjYWxlKSkpCgojZGVmaW5lIF9tbTI1Nl9tbWFza19pMzJnYXRoZXJfZXBpNjQodjFfb2xkLCBtYXNrLCBpbmRleCwgYWRkciwgc2NhbGUpIFwKICAoKF9fbTI1NmkpX19idWlsdGluX2lhMzJfZ2F0aGVyM3NpdjRkaSgoX192NGRpKShfX20yNTZpKSh2MV9vbGQpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgY29uc3QgKikoYWRkciksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKShfX20xMjhpKShpbmRleCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKG1hc2spLCAoaW50KShzY2FsZSkpKQoKI2RlZmluZSBfbW1fbW1hc2tfaTMyZ2F0aGVyX3BzKHYxX29sZCwgbWFzaywgaW5kZXgsIGFkZHIsIHNjYWxlKSBcCiAgKChfX20xMjgpX19idWlsdGluX2lhMzJfZ2F0aGVyM3NpdjRzZigoX192NHNmKShfX20xMjgpKHYxX29sZCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkIGNvbnN0ICopKGFkZHIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKShfX20xMjhpKShpbmRleCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkobWFzayksIChpbnQpKHNjYWxlKSkpCgojZGVmaW5lIF9tbV9tbWFza19pMzJnYXRoZXJfZXBpMzIodjFfb2xkLCBtYXNrLCBpbmRleCwgYWRkciwgc2NhbGUpIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfZ2F0aGVyM3NpdjRzaSgoX192NHNpKShfX20xMjhpKSh2MV9vbGQpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgY29uc3QgKikoYWRkciksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKShfX20xMjhpKShpbmRleCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKG1hc2spLCAoaW50KShzY2FsZSkpKQoKI2RlZmluZSBfbW0yNTZfbW1hc2tfaTMyZ2F0aGVyX3BzKHYxX29sZCwgbWFzaywgaW5kZXgsIGFkZHIsIHNjYWxlKSBcCiAgKChfX20yNTYpX19idWlsdGluX2lhMzJfZ2F0aGVyM3NpdjhzZigoX192OHNmKShfX20yNTYpKHYxX29sZCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkIGNvbnN0ICopKGFkZHIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKShfX20yNTZpKShpbmRleCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkobWFzayksIChpbnQpKHNjYWxlKSkpCgojZGVmaW5lIF9tbTI1Nl9tbWFza19pMzJnYXRoZXJfZXBpMzIodjFfb2xkLCBtYXNrLCBpbmRleCwgYWRkciwgc2NhbGUpIFwKICAoKF9fbTI1NmkpX19idWlsdGluX2lhMzJfZ2F0aGVyM3NpdjhzaSgoX192OHNpKShfX20yNTZpKSh2MV9vbGQpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgY29uc3QgKikoYWRkciksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKShfX20yNTZpKShpbmRleCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKG1hc2spLCAoaW50KShzY2FsZSkpKQoKI2RlZmluZSBfbW0yNTZfcGVybXV0ZXhfcGQoWCwgQykgXAogICgoX19tMjU2ZClfX2J1aWx0aW5faWEzMl9wZXJtZGYyNTYoKF9fdjRkZikoX19tMjU2ZCkoWCksIChpbnQpKEMpKSkKCiNkZWZpbmUgX21tMjU2X21hc2tfcGVybXV0ZXhfcGQoVywgVSwgWCwgQykgXAogICgoX19tMjU2ZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF8yNTYoKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9tbTI1Nl9wZXJtdXRleF9wZCgoWCksIChDKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZikoX19tMjU2ZCkoVykpKQoKI2RlZmluZSBfbW0yNTZfbWFza3pfcGVybXV0ZXhfcGQoVSwgWCwgQykgXAogICgoX19tMjU2ZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF8yNTYoKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZilfbW0yNTZfcGVybXV0ZXhfcGQoKFgpLCAoQykpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9tbTI1Nl9zZXR6ZXJvX3BkKCkpKQoKI2RlZmluZSBfbW0yNTZfcGVybXV0ZXhfZXBpNjQoWCwgQykgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9wZXJtZGkyNTYoKF9fdjRkaSkoX19tMjU2aSkoWCksIChpbnQpKEMpKSkKCiNkZWZpbmUgX21tMjU2X21hc2tfcGVybXV0ZXhfZXBpNjQoVywgVSwgWCwgQykgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzI1NigoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfcGVybXV0ZXhfZXBpNjQoKFgpLCAoQykpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSkoX19tMjU2aSkoVykpKQoKI2RlZmluZSBfbW0yNTZfbWFza3pfcGVybXV0ZXhfZXBpNjQoVSwgWCwgQykgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzI1NigoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfcGVybXV0ZXhfZXBpNjQoKFgpLCAoQykpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9wZXJtdXRleHZhcl9wZCAoX19tMjU2aSBfX1gsIF9fbTI1NmQgX19ZKQp7CiAgcmV0dXJuIChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX3Blcm12YXJkZjI1NigoX192NGRmKV9fWSwgKF9fdjRkaSlfX1gpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19wZXJtdXRleHZhcl9wZCAoX19tMjU2ZCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX1gsCiAgICAgICAgICBfX20yNTZkIF9fWSkKewogIHJldHVybiAoX19tMjU2ZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF8yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpX21tMjU2X3Blcm11dGV4dmFyX3BkKF9fWCwgX19ZKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X3Blcm11dGV4dmFyX3BkIChfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19YLCBfX20yNTZkIF9fWSkKewogIHJldHVybiAoX19tMjU2ZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF8yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpX21tMjU2X3Blcm11dGV4dmFyX3BkKF9fWCwgX19ZKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpX21tMjU2X3NldHplcm9fcGQoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9wZXJtdXRleHZhcl9lcGk2NCAoIF9fbTI1NmkgX19YLCBfX20yNTZpIF9fWSkKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9wZXJtdmFyZGkyNTYoKF9fdjRkaSkgX19ZLCAoX192NGRpKSBfX1gpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfcGVybXV0ZXh2YXJfZXBpNjQgKF9fbW1hc2s4IF9fTSwgX19tMjU2aSBfX1gsIF9fbTI1NmkgX19ZKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMjU2KChfX21tYXNrOClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9wZXJtdXRleHZhcl9lcGk2NChfX1gsIF9fWSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19wZXJtdXRleHZhcl9lcGk2NCAoX19tMjU2aSBfX1csIF9fbW1hc2s4IF9fTSwgX19tMjU2aSBfX1gsCiAgICAgICAgICAgICBfX20yNTZpIF9fWSkKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzI1NigoX19tbWFzazgpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfcGVybXV0ZXh2YXJfZXBpNjQoX19YLCBfX1kpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfX1cpOwp9CgojZGVmaW5lIF9tbTI1Nl9wZXJtdXRleHZhcl9wcyhBLCBCKSBfbW0yNTZfcGVybXV0ZXZhcjh4MzJfcHMoKEIpLCAoQSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX3Blcm11dGV4dmFyX3BzKF9fbTI1NiBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX1gsIF9fbTI1NiBfX1kpCnsKICByZXR1cm4gKF9fbTI1NilfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX21tMjU2X3Blcm11dGV4dmFyX3BzKF9fWCwgX19ZKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfcGVybXV0ZXh2YXJfcHMoX19tbWFzazggX19VLCBfX20yNTZpIF9fWCwgX19tMjU2IF9fWSkKewogIHJldHVybiAoX19tMjU2KV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZilfbW0yNTZfcGVybXV0ZXh2YXJfcHMoX19YLCBfX1kpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZilfbW0yNTZfc2V0emVyb19wcygpKTsKfQoKI2RlZmluZSBfbW0yNTZfcGVybXV0ZXh2YXJfZXBpMzIoQSwgQikgX21tMjU2X3Blcm11dGV2YXI4eDMyX2VwaTMyKChCKSwgKEEpKQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfcGVybXV0ZXh2YXJfZXBpMzIoX19tMjU2aSBfX1csIF9fbW1hc2s4IF9fTSwgX19tMjU2aSBfX1gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTI1NmkgX19ZKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMjU2KChfX21tYXNrOClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9wZXJtdXRleHZhcl9lcGkzMihfX1gsIF9fWSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9wZXJtdXRleHZhcl9lcGkzMihfX21tYXNrOCBfX00sIF9fbTI1NmkgX19YLCBfX20yNTZpIF9fWSkKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzI1NigoX19tbWFzazgpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfcGVybXV0ZXh2YXJfZXBpMzIoX19YLCBfX1kpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKI2RlZmluZSBfbW1fYWxpZ25yX2VwaTMyKEEsIEIsIGltbSkgXAogICgoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9hbGlnbmQxMjgoKF9fdjRzaSkoX19tMTI4aSkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpKF9fbTEyOGkpKEIpLCAoaW50KShpbW0pKSkKCiNkZWZpbmUgX21tX21hc2tfYWxpZ25yX2VwaTMyKFcsIFUsIEEsIEIsIGltbSkgXAogICgoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzEyOCgoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX2FsaWducl9lcGkzMigoQSksIChCKSwgKGltbSkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpKF9fbTEyOGkpKFcpKSkKCiNkZWZpbmUgX21tX21hc2t6X2FsaWducl9lcGkzMihVLCBBLCBCLCBpbW0pIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8xMjgoKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9hbGlnbnJfZXBpMzIoKEEpLCAoQiksIChpbW0pKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpKQoKI2RlZmluZSBfbW0yNTZfYWxpZ25yX2VwaTMyKEEsIEIsIGltbSkgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9hbGlnbmQyNTYoKF9fdjhzaSkoX19tMjU2aSkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpKF9fbTI1NmkpKEIpLCAoaW50KShpbW0pKSkKCiNkZWZpbmUgX21tMjU2X21hc2tfYWxpZ25yX2VwaTMyKFcsIFUsIEEsIEIsIGltbSkgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzI1NigoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X2FsaWducl9lcGkzMigoQSksIChCKSwgKGltbSkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpKF9fbTI1NmkpKFcpKSkKCiNkZWZpbmUgX21tMjU2X21hc2t6X2FsaWducl9lcGkzMihVLCBBLCBCLCBpbW0pIFwKICAoKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8yNTYoKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9hbGlnbnJfZXBpMzIoKEEpLCAoQiksIChpbW0pKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpKQoKI2RlZmluZSBfbW1fYWxpZ25yX2VwaTY0KEEsIEIsIGltbSkgXAogICgoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9hbGlnbnExMjgoKF9fdjJkaSkoX19tMTI4aSkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpKF9fbTEyOGkpKEIpLCAoaW50KShpbW0pKSkKCiNkZWZpbmUgX21tX21hc2tfYWxpZ25yX2VwaTY0KFcsIFUsIEEsIEIsIGltbSkgXAogICgoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzEyOCgoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX21tX2FsaWducl9lcGk2NCgoQSksIChCKSwgKGltbSkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpKF9fbTEyOGkpKFcpKSkKCiNkZWZpbmUgX21tX21hc2t6X2FsaWducl9lcGk2NChVLCBBLCBCLCBpbW0pIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8xMjgoKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9hbGlnbnJfZXBpNjQoKEEpLCAoQiksIChpbW0pKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpKQoKI2RlZmluZSBfbW0yNTZfYWxpZ25yX2VwaTY0KEEsIEIsIGltbSkgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9hbGlnbnEyNTYoKF9fdjRkaSkoX19tMjU2aSkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpKF9fbTI1NmkpKEIpLCAoaW50KShpbW0pKSkKCiNkZWZpbmUgX21tMjU2X21hc2tfYWxpZ25yX2VwaTY0KFcsIFUsIEEsIEIsIGltbSkgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzI1NigoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX21tMjU2X2FsaWducl9lcGk2NCgoQSksIChCKSwgKGltbSkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpKF9fbTI1NmkpKFcpKSkKCiNkZWZpbmUgX21tMjU2X21hc2t6X2FsaWducl9lcGk2NChVLCBBLCBCLCBpbW0pIFwKICAoKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8yNTYoKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9hbGlnbnJfZXBpNjQoKEEpLCAoQiksIChpbW0pKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpKQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19tb3ZlaGR1cF9wcyAoX19tMTI4IF9fVywgX19tbWFzazggX19VLCBfX20xMjggX19BKQp7CiAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX21vdmVoZHVwX3BzKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfbW92ZWhkdXBfcHMgKF9fbW1hc2s4IF9fVSwgX19tMTI4IF9fQSkKewogIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9tbV9tb3ZlaGR1cF9wcyhfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9tbV9zZXR6ZXJvX3BzKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX21vdmVoZHVwX3BzIChfX20yNTYgX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NiBfX0EpCnsKICByZXR1cm4gKF9fbTI1NilfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZilfbW0yNTZfbW92ZWhkdXBfcHMoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9tb3ZlaGR1cF9wcyAoX19tbWFzazggX19VLCBfX20yNTYgX19BKQp7CiAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX21tMjU2X21vdmVoZHVwX3BzKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX21tMjU2X3NldHplcm9fcHMoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfbW92ZWxkdXBfcHMgKF9fbTEyOCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4IF9fQSkKewogIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9tbV9tb3ZlbGR1cF9wcyhfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X21vdmVsZHVwX3BzIChfX21tYXNrOCBfX1UsIF9fbTEyOCBfX0EpCnsKICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfbW1fbW92ZWxkdXBfcHMoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfbW1fc2V0emVyb19wcygpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19tb3ZlbGR1cF9wcyAoX19tMjU2IF9fVywgX19tbWFzazggX19VLCBfX20yNTYgX19BKQp7CiAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX21tMjU2X21vdmVsZHVwX3BzKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfbW92ZWxkdXBfcHMgKF9fbW1hc2s4IF9fVSwgX19tMjU2IF9fQSkKewogIHJldHVybiAoX19tMjU2KV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKV9tbTI1Nl9tb3ZlbGR1cF9wcyhfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKV9tbTI1Nl9zZXR6ZXJvX3BzKCkpOwp9CgojZGVmaW5lIF9tbTI1Nl9tYXNrX3NodWZmbGVfZXBpMzIoVywgVSwgQSwgSSkgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzI1NigoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X3NodWZmbGVfZXBpMzIoKEEpLCAoSSkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpKF9fbTI1NmkpKFcpKSkKCiNkZWZpbmUgX21tMjU2X21hc2t6X3NodWZmbGVfZXBpMzIoVSwgQSwgSSkgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzI1NigoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X3NodWZmbGVfZXBpMzIoKEEpLCAoSSkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X3NldHplcm9fc2kyNTYoKSkpCgojZGVmaW5lIF9tbV9tYXNrX3NodWZmbGVfZXBpMzIoVywgVSwgQSwgSSkgXAogICgoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzEyOCgoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX3NodWZmbGVfZXBpMzIoKEEpLCAoSSkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpKF9fbTEyOGkpKFcpKSkKCiNkZWZpbmUgX21tX21hc2t6X3NodWZmbGVfZXBpMzIoVSwgQSwgSSkgXAogICgoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzEyOCgoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX3NodWZmbGVfZXBpMzIoKEEpLCAoSSkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX3NldHplcm9fc2kxMjgoKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19tb3ZfcGQgKF9fbTEyOGQgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGQgX19BKQp7CiAgcmV0dXJuIChfX20xMjhkKSBfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF8xMjggKChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgIChfX3YyZGYpIF9fQSwKICAgICAgICAgICAgICAoX192MmRmKSBfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfbW92X3BkIChfX21tYXNrOCBfX1UsIF9fbTEyOGQgX19BKQp7CiAgcmV0dXJuIChfX20xMjhkKSBfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF8xMjggKChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgIChfX3YyZGYpIF9fQSwKICAgICAgICAgICAgICAoX192MmRmKSBfbW1fc2V0emVyb19wZCAoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX21vdl9wZCAoX19tMjU2ZCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2ZCBfX0EpCnsKICByZXR1cm4gKF9fbTI1NmQpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzI1NiAoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgKF9fdjRkZikgX19BLAogICAgICAgICAgICAgIChfX3Y0ZGYpIF9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9tb3ZfcGQgKF9fbW1hc2s4IF9fVSwgX19tMjU2ZCBfX0EpCnsKICByZXR1cm4gKF9fbTI1NmQpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzI1NiAoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgKF9fdjRkZikgX19BLAogICAgICAgICAgICAgIChfX3Y0ZGYpIF9tbTI1Nl9zZXR6ZXJvX3BkICgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19tb3ZfcHMgKF9fbTEyOCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4IF9fQSkKewogIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18xMjggKChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgKF9fdjRzZikgX19BLAogICAgICAgICAgICAgKF9fdjRzZikgX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfbW92X3BzIChfX21tYXNrOCBfX1UsIF9fbTEyOCBfX0EpCnsKICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMTI4ICgoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgIChfX3Y0c2YpIF9fQSwKICAgICAgICAgICAgIChfX3Y0c2YpIF9tbV9zZXR6ZXJvX3BzICgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19tb3ZfcHMgKF9fbTI1NiBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2IF9fQSkKewogIHJldHVybiAoX19tMjU2KSBfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18yNTYgKChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgKF9fdjhzZikgX19BLAogICAgICAgICAgICAgKF9fdjhzZikgX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfbW92X3BzIChfX21tYXNrOCBfX1UsIF9fbTI1NiBfX0EpCnsKICByZXR1cm4gKF9fbTI1NikgX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMjU2ICgoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgIChfX3Y4c2YpIF9fQSwKICAgICAgICAgICAgIChfX3Y4c2YpIF9tbTI1Nl9zZXR6ZXJvX3BzICgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19jdnRwaF9wcyAoX19tMTI4IF9fVywgX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl92Y3Z0cGgycHNfbWFzayAoKF9fdjhoaSkgX19BLAogICAgICAgICAgICAgKF9fdjRzZikgX19XLAogICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9jdnRwaF9wcyAoX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl92Y3Z0cGgycHNfbWFzayAoKF9fdjhoaSkgX19BLAogICAgICAgICAgICAgKF9fdjRzZikKICAgICAgICAgICAgIF9tbV9zZXR6ZXJvX3BzICgpLAogICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2N2dHBoX3BzIChfX20yNTYgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX20yNTYpIF9fYnVpbHRpbl9pYTMyX3ZjdnRwaDJwczI1Nl9tYXNrICgoX192OGhpKSBfX0EsCiAgICAgICAgICAgICAgICAoX192OHNmKSBfX1csCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2N2dHBoX3BzIChfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX20yNTYpIF9fYnVpbHRpbl9pYTMyX3ZjdnRwaDJwczI1Nl9tYXNrICgoX192OGhpKSBfX0EsCiAgICAgICAgICAgICAgICAoX192OHNmKQogICAgICAgICAgICAgICAgX21tMjU2X3NldHplcm9fcHMgKCksCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCiNkZWZpbmUgX21tX21hc2tfY3Z0X3JvdW5kcHNfcGgoVywgVSwgQSwgSSkgXAogICgoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92Y3Z0cHMycGhfbWFzaygoX192NHNmKShfX20xMjgpKEEpLCAoaW50KShJKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKShfX20xMjhpKShXKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpKSkKCiNkZWZpbmUgX21tX21hc2t6X2N2dF9yb3VuZHBzX3BoKFUsIEEsIEkpIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdmN2dHBzMnBoX21hc2soKF9fdjRzZikoX19tMTI4KShBKSwgKGludCkoSSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfbW1fc2V0emVyb19zaTEyOCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSkpKQoKI2RlZmluZSBfbW1fbWFza19jdnRwc19waCAgX21tX21hc2tfY3Z0X3JvdW5kcHNfcGgKI2RlZmluZSBfbW1fbWFza3pfY3Z0cHNfcGggX21tX21hc2t6X2N2dF9yb3VuZHBzX3BoCgojZGVmaW5lIF9tbTI1Nl9tYXNrX2N2dF9yb3VuZHBzX3BoKFcsIFUsIEEsIEkpIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdmN2dHBzMnBoMjU2X21hc2soKF9fdjhzZikoX19tMjU2KShBKSwgKGludCkoSSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSkoX19tMTI4aSkoVyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSkpCgojZGVmaW5lIF9tbTI1Nl9tYXNrel9jdnRfcm91bmRwc19waChVLCBBLCBJKSBcCiAgKChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3ZjdnRwczJwaDI1Nl9tYXNrKChfX3Y4c2YpKF9fbTI1NikoQSksIChpbnQpKEkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX3NldHplcm9fc2kxMjgoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpKSkKCiNkZWZpbmUgX21tMjU2X21hc2tfY3Z0cHNfcGggIF9tbTI1Nl9tYXNrX2N2dF9yb3VuZHBzX3BoCiNkZWZpbmUgX21tMjU2X21hc2t6X2N2dHBzX3BoIF9tbTI1Nl9tYXNrel9jdnRfcm91bmRwc19waAoKCiN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUzI1NgoKI2VuZGlmIC8qIF9fQVZYNTEyVkxJTlRSSU5fSCAqLwoALyo9PT0tLS0tIG13YWl0eGludHJpbi5oIC0gTU9OSVRPUlgvTVdBSVRYIGludHJpbnNpY3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwoKI2lmbmRlZiBfX1g4NklOVFJJTl9ICiNlcnJvciAiTmV2ZXIgdXNlIDxtd2FpdHhpbnRyaW4uaD4gZGlyZWN0bHk7IGluY2x1ZGUgPHg4NmludHJpbi5oPiBpbnN0ZWFkLiIKI2VuZGlmCgojaWZuZGVmIF9fTVdBSVRYSU5UUklOX0gKI2RlZmluZSBfX01XQUlUWElOVFJJTl9ICgovKiBEZWZpbmUgdGhlIGRlZmF1bHQgYXR0cmlidXRlcyBmb3IgdGhlIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUuICovCiNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgIF9fdGFyZ2V0X18oIm13YWl0eCIpKSkKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX21vbml0b3J4KHZvaWQgKiBfX3AsIHVuc2lnbmVkIF9fZXh0ZW5zaW9ucywgdW5zaWduZWQgX19oaW50cykKewogIF9fYnVpbHRpbl9pYTMyX21vbml0b3J4KF9fcCwgX19leHRlbnNpb25zLCBfX2hpbnRzKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX213YWl0eCh1bnNpZ25lZCBfX2V4dGVuc2lvbnMsIHVuc2lnbmVkIF9faGludHMsIHVuc2lnbmVkIF9fY2xvY2spCnsKICBfX2J1aWx0aW5faWEzMl9td2FpdHgoX19leHRlbnNpb25zLCBfX2hpbnRzLCBfX2Nsb2NrKTsKfQoKI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUwoKI2VuZGlmIC8qIF9fTVdBSVRYSU5UUklOX0ggKi8KAG9wZW5jbC1jLWJhc2UuaABwa3VpbnRyaW4uaAAsICgtMSk9AFVua25vd24gZW5jb2RpbmcgAHBhdHRlcm4gdG9vIGxhcmdlIC0gY29tcGlsZSBmYWlsZWQAXHcAdHJhaWxpbmcgXABBaG9tAEthdGFrYW5hAEx5Y2lhbgBQYWxteXJlbmUAUwBUYW5ndXQAU0lHQlVTACUuKnMAL3Byb2Mvc2VsZi9leGUAJXM6IG9wZW4gZmFpbGVkOiBlcnJubz0lZAB3Y2hhcl90AGRlY2x0eXBlKGF1dG8pAHBwAFNpAGV4dGVybmFsL2Fic2VpbC1jcHAvYWJzbC9zdGF0dXMvc3RhdHVzb3IuY2MAZXh0ZXJuYWwvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvY29yZF9yZXBfYnRyZWUuY2MAdHJlZSAhPSBudWxscHRyAGluZgBleHRlcm5hbC9ib3Jpbmdzc2wvc3JjL2NyeXB0by9maXBzbW9kdWxlL3JzYS9ibGluZGluZy5jAEFFUy1HQ00gRGVjcnlwdGlvbiBLQVQAcGxhdGZvcm06IG4vYQB1bmtub3duIGxpYnJhcnkAY29uZmlndXJhdGlvbiBmaWxlIHJvdXRpbmVzAFBLQ1M4IHJvdXRpbmVzAFByb3RvY29sIEJ1ZmZlciBtYXAgdXNhZ2UgZXJyb3I6CgBreXRoZS5wcm90by5jb21tb24uTm9kZUluZm8uZGVmaW5pdGlvbgBreXRoZS5wcm90by5jb21tb24uQ29ycHVzUGF0aC5jb3JwdXMAa3l0aGUucHJvdG8uY29tbW9uLkxhbmd1YWdlLm5hbWUAb3V0L3Nvb25nLy5pbnRlcm1lZGlhdGVzL2V4dGVybmFsL2t5dGhlL2N4eF9leHRyYWN0b3IvbGludXhfZ2xpYmNfeDg2XzY0L2dlbi9wcm90by9reXRoZS9wcm90by9zdG9yYWdlLnBiLmNjAC9reXRoZV9jeHhfZXh0cmFjdG9yX3Jvb3QAPHN0ZGluOgBQcmV2aW91cyByZWNvcmQgZm9yIABhdng1MTJmcDE2aW50cmluLmgALyo9PT0tLS0tLS0tLS0tLS0tIGF2eDUxMnZibWkyaW50cmluLmggLSBWQk1JMiBpbnRyaW5zaWNzIC0tLS0tLS0tLS0tLS0tLS0tLT09PQogKgogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwojaWZuZGVmIF9fSU1NSU5UUklOX0gKI2Vycm9yICJOZXZlciB1c2UgPGF2eDUxMnZibWkyaW50cmluLmg+IGRpcmVjdGx5OyBpbmNsdWRlIDxpbW1pbnRyaW4uaD4gaW5zdGVhZC4iCiNlbmRpZgoKI2lmbmRlZiBfX0FWWDUxMlZCTUkySU5UUklOX0gKI2RlZmluZSBfX0FWWDUxMlZCTUkySU5UUklOX0gKCi8qIERlZmluZSB0aGUgZGVmYXVsdCBhdHRyaWJ1dGVzIGZvciB0aGUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZS4gKi8KI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJhdng1MTJ2Ym1pMiIpLCBfX21pbl92ZWN0b3Jfd2lkdGhfXyg1MTIpKSkKCgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW01MTJfbWFza19jb21wcmVzc19lcGkxNihfX201MTJpIF9fUywgX19tbWFzazMyIF9fVSwgX19tNTEyaSBfX0QpCnsKICByZXR1cm4gKF9fbTUxMmkpIF9fYnVpbHRpbl9pYTMyX2NvbXByZXNzaGk1MTJfbWFzayAoKF9fdjMyaGkpIF9fRCwKICAgICAgICAgICAgICAoX192MzJoaSkgX19TLAogICAgICAgICAgICAgIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTUxMl9tYXNrel9jb21wcmVzc19lcGkxNihfX21tYXNrMzIgX19VLCBfX201MTJpIF9fRCkKewogIHJldHVybiAoX19tNTEyaSkgX19idWlsdGluX2lhMzJfY29tcHJlc3NoaTUxMl9tYXNrICgoX192MzJoaSkgX19ELAogICAgICAgICAgICAgIChfX3YzMmhpKSBfbW01MTJfc2V0emVyb19zaTUxMigpLAogICAgICAgICAgICAgIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTUxMl9tYXNrX2NvbXByZXNzX2VwaTgoX19tNTEyaSBfX1MsIF9fbW1hc2s2NCBfX1UsIF9fbTUxMmkgX19EKQp7CiAgcmV0dXJuIChfX201MTJpKSBfX2J1aWx0aW5faWEzMl9jb21wcmVzc3FpNTEyX21hc2sgKChfX3Y2NHFpKSBfX0QsCiAgICAgICAgICAgICAgKF9fdjY0cWkpIF9fUywKICAgICAgICAgICAgICBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW01MTJfbWFza3pfY29tcHJlc3NfZXBpOChfX21tYXNrNjQgX19VLCBfX201MTJpIF9fRCkKewogIHJldHVybiAoX19tNTEyaSkgX19idWlsdGluX2lhMzJfY29tcHJlc3NxaTUxMl9tYXNrICgoX192NjRxaSkgX19ELAogICAgICAgICAgICAgIChfX3Y2NHFpKSBfbW01MTJfc2V0emVyb19zaTUxMigpLAogICAgICAgICAgICAgIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTUxMl9tYXNrX2NvbXByZXNzc3RvcmV1X2VwaTE2KHZvaWQgKl9fUCwgX19tbWFzazMyIF9fVSwgX19tNTEyaSBfX0QpCnsKICBfX2J1aWx0aW5faWEzMl9jb21wcmVzc3N0b3JlaGk1MTJfbWFzayAoKF9fdjMyaGkgKikgX19QLCAoX192MzJoaSkgX19ELAogICAgICAgICAgICAgIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTUxMl9tYXNrX2NvbXByZXNzc3RvcmV1X2VwaTgodm9pZCAqX19QLCBfX21tYXNrNjQgX19VLCBfX201MTJpIF9fRCkKewogIF9fYnVpbHRpbl9pYTMyX2NvbXByZXNzc3RvcmVxaTUxMl9tYXNrICgoX192NjRxaSAqKSBfX1AsIChfX3Y2NHFpKSBfX0QsCiAgICAgICAgICAgICAgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tNTEyX21hc2tfZXhwYW5kX2VwaTE2KF9fbTUxMmkgX19TLCBfX21tYXNrMzIgX19VLCBfX201MTJpIF9fRCkKewogIHJldHVybiAoX19tNTEyaSkgX19idWlsdGluX2lhMzJfZXhwYW5kaGk1MTJfbWFzayAoKF9fdjMyaGkpIF9fRCwKICAgICAgICAgICAgICAoX192MzJoaSkgX19TLAogICAgICAgICAgICAgIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTUxMl9tYXNrel9leHBhbmRfZXBpMTYoX19tbWFzazMyIF9fVSwgX19tNTEyaSBfX0QpCnsKICByZXR1cm4gKF9fbTUxMmkpIF9fYnVpbHRpbl9pYTMyX2V4cGFuZGhpNTEyX21hc2sgKChfX3YzMmhpKSBfX0QsCiAgICAgICAgICAgICAgKF9fdjMyaGkpIF9tbTUxMl9zZXR6ZXJvX3NpNTEyKCksCiAgICAgICAgICAgICAgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tNTEyX21hc2tfZXhwYW5kX2VwaTgoX19tNTEyaSBfX1MsIF9fbW1hc2s2NCBfX1UsIF9fbTUxMmkgX19EKQp7CiAgcmV0dXJuIChfX201MTJpKSBfX2J1aWx0aW5faWEzMl9leHBhbmRxaTUxMl9tYXNrICgoX192NjRxaSkgX19ELAogICAgICAgICAgICAgIChfX3Y2NHFpKSBfX1MsCiAgICAgICAgICAgICAgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tNTEyX21hc2t6X2V4cGFuZF9lcGk4KF9fbW1hc2s2NCBfX1UsIF9fbTUxMmkgX19EKQp7CiAgcmV0dXJuIChfX201MTJpKSBfX2J1aWx0aW5faWEzMl9leHBhbmRxaTUxMl9tYXNrICgoX192NjRxaSkgX19ELAogICAgICAgICAgICAgIChfX3Y2NHFpKSBfbW01MTJfc2V0emVyb19zaTUxMigpLAogICAgICAgICAgICAgIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTUxMl9tYXNrX2V4cGFuZGxvYWR1X2VwaTE2KF9fbTUxMmkgX19TLCBfX21tYXNrMzIgX19VLCB2b2lkIGNvbnN0ICpfX1ApCnsKICByZXR1cm4gKF9fbTUxMmkpIF9fYnVpbHRpbl9pYTMyX2V4cGFuZGxvYWRoaTUxMl9tYXNrICgoY29uc3QgX192MzJoaSAqKV9fUCwKICAgICAgICAgICAgICAoX192MzJoaSkgX19TLAogICAgICAgICAgICAgIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTUxMl9tYXNrel9leHBhbmRsb2FkdV9lcGkxNihfX21tYXNrMzIgX19VLCB2b2lkIGNvbnN0ICpfX1ApCnsKICByZXR1cm4gKF9fbTUxMmkpIF9fYnVpbHRpbl9pYTMyX2V4cGFuZGxvYWRoaTUxMl9tYXNrICgoY29uc3QgX192MzJoaSAqKV9fUCwKICAgICAgICAgICAgICAoX192MzJoaSkgX21tNTEyX3NldHplcm9fc2k1MTIoKSwKICAgICAgICAgICAgICBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW01MTJfbWFza19leHBhbmRsb2FkdV9lcGk4KF9fbTUxMmkgX19TLCBfX21tYXNrNjQgX19VLCB2b2lkIGNvbnN0ICpfX1ApCnsKICByZXR1cm4gKF9fbTUxMmkpIF9fYnVpbHRpbl9pYTMyX2V4cGFuZGxvYWRxaTUxMl9tYXNrICgoY29uc3QgX192NjRxaSAqKV9fUCwKICAgICAgICAgICAgICAoX192NjRxaSkgX19TLAogICAgICAgICAgICAgIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTUxMl9tYXNrel9leHBhbmRsb2FkdV9lcGk4KF9fbW1hc2s2NCBfX1UsIHZvaWQgY29uc3QgKl9fUCkKewogIHJldHVybiAoX19tNTEyaSkgX19idWlsdGluX2lhMzJfZXhwYW5kbG9hZHFpNTEyX21hc2sgKChjb25zdCBfX3Y2NHFpICopX19QLAogICAgICAgICAgICAgIChfX3Y2NHFpKSBfbW01MTJfc2V0emVyb19zaTUxMigpLAogICAgICAgICAgICAgIF9fVSk7Cn0KCiNkZWZpbmUgX21tNTEyX3NobGRpX2VwaTY0KEEsIEIsIEkpIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfdnBzaGxkcTUxMigoX192OGRpKShfX201MTJpKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpKF9fbTUxMmkpKEIpLCAoaW50KShJKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX3NobGRpX2VwaTY0KFMsIFUsIEEsIEIsIEkpIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV81MTIoKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfc2hsZGlfZXBpNjQoKEEpLCAoQiksIChJKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpKF9fbTUxMmkpKFMpKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X3NobGRpX2VwaTY0KFUsIEEsIEIsIEkpIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV81MTIoKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfc2hsZGlfZXBpNjQoKEEpLCAoQiksIChJKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX3NldHplcm9fc2k1MTIoKSkpCgojZGVmaW5lIF9tbTUxMl9zaGxkaV9lcGkzMihBLCBCLCBJKSBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3Zwc2hsZGQ1MTIoKF9fdjE2c2kpKF9fbTUxMmkpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpKF9fbTUxMmkpKEIpLCAoaW50KShJKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX3NobGRpX2VwaTMyKFMsIFUsIEEsIEIsIEkpIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF81MTIoKF9fbW1hc2sxNikoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX21tNTEyX3NobGRpX2VwaTMyKChBKSwgKEIpLCAoSSkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKShfX201MTJpKShTKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9zaGxkaV9lcGkzMihVLCBBLCBCLCBJKSBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfNTEyKChfX21tYXNrMTYpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9zaGxkaV9lcGkzMigoQSksIChCKSwgKEkpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfc2V0emVyb19zaTUxMigpKSkKCiNkZWZpbmUgX21tNTEyX3NobGRpX2VwaTE2KEEsIEIsIEkpIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfdnBzaGxkdzUxMigoX192MzJoaSkoX19tNTEyaSkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSkoX19tNTEyaSkoQiksIChpbnQpKEkpKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfc2hsZGlfZXBpMTYoUywgVSwgQSwgQiwgSSkgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzUxMigoX19tbWFzazMyKShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfbW01MTJfc2hsZGlfZXBpMTYoKEEpLCAoQiksIChJKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpKF9fbTUxMmkpKFMpKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X3NobGRpX2VwaTE2KFUsIEEsIEIsIEkpIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0d181MTIoKF9fbW1hc2szMikoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX21tNTEyX3NobGRpX2VwaTE2KChBKSwgKEIpLCAoSSkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpKQoKI2RlZmluZSBfbW01MTJfc2hyZGlfZXBpNjQoQSwgQiwgSSkgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl92cHNocmRxNTEyKChfX3Y4ZGkpKF9fbTUxMmkpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSkoX19tNTEyaSkoQiksIChpbnQpKEkpKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfc2hyZGlfZXBpNjQoUywgVSwgQSwgQiwgSSkgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzUxMigoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9zaHJkaV9lcGk2NCgoQSksIChCKSwgKEkpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSkoX19tNTEyaSkoUykpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfc2hyZGlfZXBpNjQoVSwgQSwgQiwgSSkgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzUxMigoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9zaHJkaV9lcGk2NCgoQSksIChCKSwgKEkpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfc2V0emVyb19zaTUxMigpKSkKCiNkZWZpbmUgX21tNTEyX3NocmRpX2VwaTMyKEEsIEIsIEkpIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfdnBzaHJkZDUxMigoX192MTZzaSkoX19tNTEyaSkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSkoX19tNTEyaSkoQiksIChpbnQpKEkpKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfc2hyZGlfZXBpMzIoUywgVSwgQSwgQiwgSSkgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzUxMigoX19tbWFzazE2KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfc2hyZGlfZXBpMzIoKEEpLCAoQiksIChJKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpKF9fbTUxMmkpKFMpKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X3NocmRpX2VwaTMyKFUsIEEsIEIsIEkpIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF81MTIoKF9fbW1hc2sxNikoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX21tNTEyX3NocmRpX2VwaTMyKChBKSwgKEIpLCAoSSkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpKQoKI2RlZmluZSBfbW01MTJfc2hyZGlfZXBpMTYoQSwgQiwgSSkgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl92cHNocmR3NTEyKChfX3YzMmhpKShfX201MTJpKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKShfX201MTJpKShCKSwgKGludCkoSSkpKQoKI2RlZmluZSBfbW01MTJfbWFza19zaHJkaV9lcGkxNihTLCBVLCBBLCBCLCBJKSBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfNTEyKChfX21tYXNrMzIpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9tbTUxMl9zaHJkaV9lcGkxNigoQSksIChCKSwgKEkpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSkoX19tNTEyaSkoUykpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfc2hyZGlfZXBpMTYoVSwgQSwgQiwgSSkgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzUxMigoX19tbWFzazMyKShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfbW01MTJfc2hyZGlfZXBpMTYoKEEpLCAoQiksIChJKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX21tNTEyX3NldHplcm9fc2k1MTIoKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW01MTJfc2hsZHZfZXBpNjQoX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CLCBfX201MTJpIF9fQykKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl92cHNobGR2cTUxMigoX192OGRpKV9fQSwgKF9fdjhkaSlfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX19DKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tNTEyX21hc2tfc2hsZHZfZXBpNjQoX19tNTEyaSBfX0EsIF9fbW1hc2s4IF9fVSwgX19tNTEyaSBfX0IsIF9fbTUxMmkgX19DKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfNTEyKF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9zaGxkdl9lcGk2NChfX0EsIF9fQiwgX19DKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTUxMl9tYXNrel9zaGxkdl9lcGk2NChfX21tYXNrOCBfX1UsIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQiwgX19tNTEyaSBfX0MpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV81MTIoX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX3NobGR2X2VwaTY0KF9fQSwgX19CLCBfX0MpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTUxMl9zaGxkdl9lcGkzMihfX201MTJpIF9fQSwgX19tNTEyaSBfX0IsIF9fbTUxMmkgX19DKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3Zwc2hsZHZkNTEyKChfX3YxNnNpKV9fQSwgKF9fdjE2c2kpX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW01MTJfbWFza19zaGxkdl9lcGkzMihfX201MTJpIF9fQSwgX19tbWFzazE2IF9fVSwgX19tNTEyaSBfX0IsIF9fbTUxMmkgX19DKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfNTEyKF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9zaGxkdl9lcGkzMihfX0EsIF9fQiwgX19DKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTUxMl9tYXNrel9zaGxkdl9lcGkzMihfX21tYXNrMTYgX19VLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IsIF9fbTUxMmkgX19DKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfNTEyKF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9zaGxkdl9lcGkzMihfX0EsIF9fQiwgX19DKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW01MTJfc2hsZHZfZXBpMTYoX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CLCBfX201MTJpIF9fQykKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl92cHNobGR2dzUxMigoX192MzJoaSlfX0EsIChfX3YzMmhpKV9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX19DKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tNTEyX21hc2tfc2hsZHZfZXBpMTYoX19tNTEyaSBfX0EsIF9fbW1hc2szMiBfX1UsIF9fbTUxMmkgX19CLCBfX201MTJpIF9fQykKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzUxMihfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfbW01MTJfc2hsZHZfZXBpMTYoX19BLCBfX0IsIF9fQyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW01MTJfbWFza3pfc2hsZHZfZXBpMTYoX19tbWFzazMyIF9fVSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CLCBfX201MTJpIF9fQykKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzUxMihfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfbW01MTJfc2hsZHZfZXBpMTYoX19BLCBfX0IsIF9fQyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tNTEyX3NocmR2X2VwaTY0KF9fbTUxMmkgX19BLCBfX201MTJpIF9fQiwgX19tNTEyaSBfX0MpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfdnBzaHJkdnE1MTIoKF9fdjhkaSlfX0EsIChfX3Y4ZGkpX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTUxMl9tYXNrX3NocmR2X2VwaTY0KF9fbTUxMmkgX19BLCBfX21tYXNrOCBfX1UsIF9fbTUxMmkgX19CLCBfX201MTJpIF9fQykKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzUxMihfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfc2hyZHZfZXBpNjQoX19BLCBfX0IsIF9fQyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW01MTJfbWFza3pfc2hyZHZfZXBpNjQoX19tbWFzazggX19VLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IsIF9fbTUxMmkgX19DKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfNTEyKF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9zaHJkdl9lcGk2NChfX0EsIF9fQiwgX19DKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW01MTJfc2hyZHZfZXBpMzIoX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CLCBfX201MTJpIF9fQykKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl92cHNocmR2ZDUxMigoX192MTZzaSlfX0EsIChfX3YxNnNpKV9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX19DKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tNTEyX21hc2tfc2hyZHZfZXBpMzIoX19tNTEyaSBfX0EsIF9fbW1hc2sxNiBfX1UsIF9fbTUxMmkgX19CLCBfX201MTJpIF9fQykKewogIHJldHVybiAoX19tNTEyaSkgX19idWlsdGluX2lhMzJfc2VsZWN0ZF81MTIoX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX21tNTEyX3NocmR2X2VwaTMyKF9fQSwgX19CLCBfX0MpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tNTEyX21hc2t6X3NocmR2X2VwaTMyKF9fbW1hc2sxNiBfX1UsIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQiwgX19tNTEyaSBfX0MpCnsKICByZXR1cm4gKF9fbTUxMmkpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfNTEyKF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9zaHJkdl9lcGkzMihfX0EsIF9fQiwgX19DKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW01MTJfc2hyZHZfZXBpMTYoX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CLCBfX201MTJpIF9fQykKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl92cHNocmR2dzUxMigoX192MzJoaSlfX0EsIChfX3YzMmhpKV9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX19DKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tNTEyX21hc2tfc2hyZHZfZXBpMTYoX19tNTEyaSBfX0EsIF9fbW1hc2szMiBfX1UsIF9fbTUxMmkgX19CLCBfX201MTJpIF9fQykKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzUxMihfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfbW01MTJfc2hyZHZfZXBpMTYoX19BLCBfX0IsIF9fQyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW01MTJfbWFza3pfc2hyZHZfZXBpMTYoX19tbWFzazMyIF9fVSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CLCBfX201MTJpIF9fQykKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzUxMihfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfbW01MTJfc2hyZHZfZXBpMTYoX19BLCBfX0IsIF9fQyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKCiN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlMKCiNlbmRpZgoKAC8qPT09LS0tLS0tIGF2eDUxMnZsdnAyaW50ZXJzZWN0aW50cmluLmggLSBWTCBWUDJJTlRFUlNFQ1QgaW50cmluc2ljcyAtLS0tLS09PT0KICoKICoKICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQogKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAogKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CiAqCiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCiAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgogKgogKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgogKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgogKiBUSEUgU09GVFdBUkUuCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCiNpZm5kZWYgX19JTU1JTlRSSU5fSAojZXJyb3IgIk5ldmVyIHVzZSA8YXZ4NTEydmx2cDJpbnRlcnNlY3RpbnRyaW4uaD4gZGlyZWN0bHk7IGluY2x1ZGUgPGltbWludHJpbi5oPiBpbnN0ZWFkLiIKI2VuZGlmCgojaWZuZGVmIF9BVlg1MTJWTFZQMklOVEVSU0VDVF9ICiNkZWZpbmUgX0FWWDUxMlZMVlAySU5URVJTRUNUX0gKCiNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTMTI4IFwKICBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sICBfX3RhcmdldF9fKCJhdng1MTJ2bCxhdng1MTJ2cDJpbnRlcnNlY3QiKSwgXAogICAgICAgICAgICAgICAgIF9fbWluX3ZlY3Rvcl93aWR0aF9fKDEyOCkpKQoKI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYgXAogIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgIF9fdGFyZ2V0X18oImF2eDUxMnZsLGF2eDUxMnZwMmludGVyc2VjdCIpLCBcCiAgICAgICAgICAgICAgICAgX19taW5fdmVjdG9yX3dpZHRoX18oMjU2KSkpCi8vLyBTdG9yZSwgaW4gYW4gZXZlbi9vZGQgcGFpciBvZiBtYXNrIHJlZ2lzdGVycywgdGhlIGluZGljYXRvcnMgb2YgdGhlCi8vLyBsb2NhdGlvbnMgb2YgdmFsdWUgbWF0Y2hlcyBiZXR3ZWVuIGR3b3JkcyBpbiBvcGVyYW5kcyBfX2EgYW5kIF9fYi4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUDJJTlRFUlNFQ1REIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGkzMl0uCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggaTMyXQovLy8gXHBhcmFtIF9fbTAKLy8vICAgIEEgcG9pbnRlciBwb2ludCB0byA4LWJpdCBtYXNrCi8vLyBccGFyYW0gX19tMQovLy8gICAgQSBwb2ludGVyIHBvaW50IHRvIDgtYml0IG1hc2sKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2XzJpbnRlcnNlY3RfZXBpMzIoX19tMjU2aSBfX2EsIF9fbTI1NmkgX19iLCBfX21tYXNrOCAqX19tMCwgX19tbWFzazggKl9fbTEpIHsKICBfX2J1aWx0aW5faWEzMl92cDJpbnRlcnNlY3RfZF8yNTYoKF9fdjhzaSlfX2EsIChfX3Y4c2kpX19iLCBfX20wLCBfX20xKTsKfQoKLy8vIFN0b3JlLCBpbiBhbiBldmVuL29kZCBwYWlyIG9mIG1hc2sgcmVnaXN0ZXJzLCB0aGUgaW5kaWNhdG9ycyBvZiB0aGUKLy8vIGxvY2F0aW9ucyBvZiB2YWx1ZSBtYXRjaGVzIGJldHdlZW4gcXVhZHdvcmRzIGluIG9wZXJhbmRzIF9fYSBhbmQgX19iLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQMklOVEVSU0VDVFEgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggaTY0XS4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBpNjRdCi8vLyBccGFyYW0gX19tMAovLy8gICAgQSBwb2ludGVyIHBvaW50IHRvIDgtYml0IG1hc2sKLy8vIFxwYXJhbSBfX20xCi8vLyAgICBBIHBvaW50ZXIgcG9pbnQgdG8gOC1iaXQgbWFzawpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfMmludGVyc2VjdF9lcGk2NChfX20yNTZpIF9fYSwgX19tMjU2aSBfX2IsIF9fbW1hc2s4ICpfX20wLCBfX21tYXNrOCAqX19tMSkgewogIF9fYnVpbHRpbl9pYTMyX3ZwMmludGVyc2VjdF9xXzI1NigoX192NGRpKV9fYSwgKF9fdjRkaSlfX2IsIF9fbTAsIF9fbTEpOwp9CgovLy8gU3RvcmUsIGluIGFuIGV2ZW4vb2RkIHBhaXIgb2YgbWFzayByZWdpc3RlcnMsIHRoZSBpbmRpY2F0b3JzIG9mIHRoZQovLy8gbG9jYXRpb25zIG9mIHZhbHVlIG1hdGNoZXMgYmV0d2VlbiBkd29yZHMgaW4gb3BlcmFuZHMgX19hIGFuZCBfX2IuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlAySU5URVJTRUNURCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0KLy8vIFxwYXJhbSBfX20wCi8vLyAgICBBIHBvaW50ZXIgcG9pbnQgdG8gOC1iaXQgbWFzawovLy8gXHBhcmFtIF9fbTEKLy8vICAgIEEgcG9pbnRlciBwb2ludCB0byA4LWJpdCBtYXNrCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV8yaW50ZXJzZWN0X2VwaTMyKF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYiwgX19tbWFzazggKl9fbTAsIF9fbW1hc2s4ICpfX20xKSB7CiAgX19idWlsdGluX2lhMzJfdnAyaW50ZXJzZWN0X2RfMTI4KChfX3Y0c2kpX19hLCAoX192NHNpKV9fYiwgX19tMCwgX19tMSk7Cn0KCi8vLyBTdG9yZSwgaW4gYW4gZXZlbi9vZGQgcGFpciBvZiBtYXNrIHJlZ2lzdGVycywgdGhlIGluZGljYXRvcnMgb2YgdGhlCi8vLyBsb2NhdGlvbnMgb2YgdmFsdWUgbWF0Y2hlcyBiZXR3ZWVuIHF1YWR3b3JkcyBpbiBvcGVyYW5kcyBfX2EgYW5kIF9fYi4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUDJJTlRFUlNFQ1RRIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0uCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggaTY0XQovLy8gXHBhcmFtIF9fbTAKLy8vICAgIEEgcG9pbnRlciBwb2ludCB0byA4LWJpdCBtYXNrCi8vLyBccGFyYW0gX19tMQovLy8gICAgQSBwb2ludGVyIHBvaW50IHRvIDgtYml0IG1hc2sKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tXzJpbnRlcnNlY3RfZXBpNjQoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iLCBfX21tYXNrOCAqX19tMCwgX19tbWFzazggKl9fbTEpIHsKICBfX2J1aWx0aW5faWEzMl92cDJpbnRlcnNlY3RfcV8xMjgoKF9fdjJkaSlfX2EsIChfX3YyZGkpX19iLCBfX20wLCBfX20xKTsKfQoKI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUzEyOAojdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2CgojZW5kaWYKAGlhMzJpbnRyaW4uaABydG1pbnRyaW4uaAB2cGNsbXVscWRxaW50cmluLmgAZnV6emVyL0Z1enplZERhdGFQcm92aWRlci5oAG9wZW5tcF93cmFwcGVycy9jb21wbGV4X2NtYXRoLmgATnVtYmVyIHRvbyBiaWcgdG8gYmUgc3RvcmVkIGluIGRvdWJsZS4AZXh0ZXJuYWwva3l0aGUva3l0aGUvY3h4L2NvbW1vbi9qc29uX3Byb3RvLmNjAEludmFsaWQgcGF0aCBwb2xpY3kgcHJvdmlkZWQ6IABVbmFibGUgdG8gcmVzb2x2ZSAAIGZsYWc9JSN4AGludmFsaWQgZXNjYXBlIHNlcXVlbmNlAGJhZCByZXBldGl0aW9uIG9wZXJhdG9yAFsATWFsYXlhbGFtAE1lAE15YW5tYXIAT2doYW0AUmVqYW5nAFNjAFRhbWlsAFZhaQBhcmVuYSAhPSBudWxscHRyAGUgPT0gZm91bmQAdAB1bnNpZ25lZCBfX2ludDEyOAA+PgBceABTaGFyZWQoACBhbmQgZW5kX3BvcyAATWF4aW11bSBjYXBhY2l0eSBleGNlZWRlZAAjAExvY2sATXV0ZXggcXVldWUgY2hhbmdlZCBiZW5lYXRoIHVzAHRocmVhZCBzaG91bGQgaG9sZCB3cml0ZSBsb2NrIG9uIE11dGV4ICVwICVzAGV4dGVybmFsL2JvcmluZ3NzbC9zcmMvY3J5cHRvL2ZpcHNtb2R1bGUvYm4vcHJpbWUuYwBGRkRIIGZhaWxlZC4KAFVJIHJvdXRpbmVzAEhNQUMgcm91dGluZXMATWFwS2V5OjpHZXRTdHJpbmdWYWx1ZQBreXRoZS5wcm90by5jb21tb24uRGlhZ25vc3RpYy5kZXRhaWxzAGt5dGhlLnByb3RvLmNvbW1vbi5EaWFnbm9zdGljLmNvbnRleHRfdXJsAC1waWUAS1lUSEVfQU5BTFlTSVNfVEFSR0VUAG5vdF9NU01vZGUALyo9PT0tLS0tIF9fY2xhbmdfaGlwX2xpYmRldmljZV9kZWNsYXJlcy5oIC0gSElQIGRldmljZSBsaWJyYXJ5IGRlY2xzIC0tLS0tLS09PT0KICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKi8KCiNpZm5kZWYgX19DTEFOR19ISVBfTElCREVWSUNFX0RFQ0xBUkVTX0hfXwojZGVmaW5lIF9fQ0xBTkdfSElQX0xJQkRFVklDRV9ERUNMQVJFU19IX18KCiNpZmRlZiBfX2NwbHVzcGx1cwpleHRlcm4gIkMiIHsKI2VuZGlmCgovLyBCRUdJTiBGTE9BVApfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZmxvYXQgX19vY21sX2Fjb3NfZjMyKGZsb2F0KTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChwdXJlKSkgZmxvYXQgX19vY21sX2Fjb3NoX2YzMihmbG9hdCk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBmbG9hdCBfX29jbWxfYXNpbl9mMzIoZmxvYXQpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKHB1cmUpKSBmbG9hdCBfX29jbWxfYXNpbmhfZjMyKGZsb2F0KTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChjb25zdCkpIGZsb2F0IF9fb2NtbF9hdGFuMl9mMzIoZmxvYXQsIGZsb2F0KTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChjb25zdCkpIGZsb2F0IF9fb2NtbF9hdGFuX2YzMihmbG9hdCk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygocHVyZSkpIGZsb2F0IF9fb2NtbF9hdGFuaF9mMzIoZmxvYXQpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKHB1cmUpKSBmbG9hdCBfX29jbWxfY2JydF9mMzIoZmxvYXQpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZmxvYXQgX19vY21sX2NlaWxfZjMyKGZsb2F0KTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChjb25zdCkpIF9fZGV2aWNlX18gZmxvYXQgX19vY21sX2NvcHlzaWduX2YzMihmbG9hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCk7Cl9fZGV2aWNlX18gZmxvYXQgX19vY21sX2Nvc19mMzIoZmxvYXQpOwpfX2RldmljZV9fIGZsb2F0IF9fb2NtbF9uYXRpdmVfY29zX2YzMihmbG9hdCk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygocHVyZSkpIF9fZGV2aWNlX18gZmxvYXQgX19vY21sX2Nvc2hfZjMyKGZsb2F0KTsKX19kZXZpY2VfXyBmbG9hdCBfX29jbWxfY29zcGlfZjMyKGZsb2F0KTsKX19kZXZpY2VfXyBmbG9hdCBfX29jbWxfaTBfZjMyKGZsb2F0KTsKX19kZXZpY2VfXyBmbG9hdCBfX29jbWxfaTFfZjMyKGZsb2F0KTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChwdXJlKSkgZmxvYXQgX19vY21sX2VyZmNfZjMyKGZsb2F0KTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChwdXJlKSkgZmxvYXQgX19vY21sX2VyZmNpbnZfZjMyKGZsb2F0KTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChwdXJlKSkgZmxvYXQgX19vY21sX2VyZmN4X2YzMihmbG9hdCk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygocHVyZSkpIGZsb2F0IF9fb2NtbF9lcmZfZjMyKGZsb2F0KTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChwdXJlKSkgZmxvYXQgX19vY21sX2VyZmludl9mMzIoZmxvYXQpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKHB1cmUpKSBmbG9hdCBfX29jbWxfZXhwMTBfZjMyKGZsb2F0KTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChwdXJlKSkgZmxvYXQgX19vY21sX25hdGl2ZV9leHAxMF9mMzIoZmxvYXQpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKHB1cmUpKSBmbG9hdCBfX29jbWxfZXhwMl9mMzIoZmxvYXQpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKHB1cmUpKSBmbG9hdCBfX29jbWxfZXhwX2YzMihmbG9hdCk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygocHVyZSkpIGZsb2F0IF9fb2NtbF9uYXRpdmVfZXhwX2YzMihmbG9hdCk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygocHVyZSkpIGZsb2F0IF9fb2NtbF9leHBtMV9mMzIoZmxvYXQpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZmxvYXQgX19vY21sX2ZhYnNfZjMyKGZsb2F0KTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChjb25zdCkpIGZsb2F0IF9fb2NtbF9mZGltX2YzMihmbG9hdCwgZmxvYXQpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZmxvYXQgX19vY21sX2Zsb29yX2YzMihmbG9hdCk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBmbG9hdCBfX29jbWxfZm1hX2YzMihmbG9hdCwgZmxvYXQsIGZsb2F0KTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChjb25zdCkpIGZsb2F0IF9fb2NtbF9mbWF4X2YzMihmbG9hdCwgZmxvYXQpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZmxvYXQgX19vY21sX2ZtaW5fZjMyKGZsb2F0LCBmbG9hdCk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBfX2RldmljZV9fIGZsb2F0IF9fb2NtbF9mbW9kX2YzMihmbG9hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0KTsKX19kZXZpY2VfXyBmbG9hdCBfX29jbWxfZnJleHBfZjMyKGZsb2F0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19hdHRyaWJ1dGVfXygoYWRkcmVzc19zcGFjZSg1KSkpIGludCAqKTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChjb25zdCkpIGZsb2F0IF9fb2NtbF9oeXBvdF9mMzIoZmxvYXQsIGZsb2F0KTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChjb25zdCkpIGludCBfX29jbWxfaWxvZ2JfZjMyKGZsb2F0KTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChjb25zdCkpIGludCBfX29jbWxfaXNmaW5pdGVfZjMyKGZsb2F0KTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChjb25zdCkpIGludCBfX29jbWxfaXNpbmZfZjMyKGZsb2F0KTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChjb25zdCkpIGludCBfX29jbWxfaXNuYW5fZjMyKGZsb2F0KTsKX19kZXZpY2VfXyBmbG9hdCBfX29jbWxfajBfZjMyKGZsb2F0KTsKX19kZXZpY2VfXyBmbG9hdCBfX29jbWxfajFfZjMyKGZsb2F0KTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChjb25zdCkpIGZsb2F0IF9fb2NtbF9sZGV4cF9mMzIoZmxvYXQsIGludCk7Cl9fZGV2aWNlX18gZmxvYXQgX19vY21sX2xnYW1tYV9mMzIoZmxvYXQpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKHB1cmUpKSBmbG9hdCBfX29jbWxfbG9nMTBfZjMyKGZsb2F0KTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChwdXJlKSkgZmxvYXQgX19vY21sX25hdGl2ZV9sb2cxMF9mMzIoZmxvYXQpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKHB1cmUpKSBmbG9hdCBfX29jbWxfbG9nMXBfZjMyKGZsb2F0KTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChwdXJlKSkgZmxvYXQgX19vY21sX2xvZzJfZjMyKGZsb2F0KTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChwdXJlKSkgZmxvYXQgX19vY21sX25hdGl2ZV9sb2cyX2YzMihmbG9hdCk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBmbG9hdCBfX29jbWxfbG9nYl9mMzIoZmxvYXQpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKHB1cmUpKSBmbG9hdCBfX29jbWxfbG9nX2YzMihmbG9hdCk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygocHVyZSkpIGZsb2F0IF9fb2NtbF9uYXRpdmVfbG9nX2YzMihmbG9hdCk7Cl9fZGV2aWNlX18gZmxvYXQgX19vY21sX21vZGZfZjMyKGZsb2F0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fKChhZGRyZXNzX3NwYWNlKDUpKSkgZmxvYXQgKik7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBmbG9hdCBfX29jbWxfbmVhcmJ5aW50X2YzMihmbG9hdCk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBmbG9hdCBfX29jbWxfbmV4dGFmdGVyX2YzMihmbG9hdCwgZmxvYXQpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZmxvYXQgX19vY21sX2xlbjNfZjMyKGZsb2F0LCBmbG9hdCwgZmxvYXQpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZmxvYXQgX19vY21sX2xlbjRfZjMyKGZsb2F0LCBmbG9hdCwgZmxvYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKHB1cmUpKSBmbG9hdCBfX29jbWxfbmNkZl9mMzIoZmxvYXQpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKHB1cmUpKSBmbG9hdCBfX29jbWxfbmNkZmludl9mMzIoZmxvYXQpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKHB1cmUpKSBmbG9hdCBfX29jbWxfcG93X2YzMihmbG9hdCwgZmxvYXQpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKHB1cmUpKSBmbG9hdCBfX29jbWxfcG93bl9mMzIoZmxvYXQsIGludCk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygocHVyZSkpIGZsb2F0IF9fb2NtbF9yY2JydF9mMzIoZmxvYXQpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZmxvYXQgX19vY21sX3JlbWFpbmRlcl9mMzIoZmxvYXQsIGZsb2F0KTsKX19kZXZpY2VfXyBmbG9hdCBfX29jbWxfcmVtcXVvX2YzMihmbG9hdCwgZmxvYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19hdHRyaWJ1dGVfXygoYWRkcmVzc19zcGFjZSg1KSkpIGludCAqKTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChjb25zdCkpIGZsb2F0IF9fb2NtbF9yaHlwb3RfZjMyKGZsb2F0LCBmbG9hdCk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBmbG9hdCBfX29jbWxfcmludF9mMzIoZmxvYXQpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZmxvYXQgX19vY21sX3JsZW4zX2YzMihmbG9hdCwgZmxvYXQsIGZsb2F0KTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChjb25zdCkpIGZsb2F0IF9fb2NtbF9ybGVuNF9mMzIoZmxvYXQsIGZsb2F0LCBmbG9hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZmxvYXQgX19vY21sX3JvdW5kX2YzMihmbG9hdCk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygocHVyZSkpIGZsb2F0IF9fb2NtbF9yc3FydF9mMzIoZmxvYXQpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZmxvYXQgX19vY21sX3NjYWxiX2YzMihmbG9hdCwgZmxvYXQpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZmxvYXQgX19vY21sX3NjYWxibl9mMzIoZmxvYXQsIGludCk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBpbnQgX19vY21sX3NpZ25iaXRfZjMyKGZsb2F0KTsKX19kZXZpY2VfXyBmbG9hdCBfX29jbWxfc2luY29zX2YzMihmbG9hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fKChhZGRyZXNzX3NwYWNlKDUpKSkgZmxvYXQgKik7Cl9fZGV2aWNlX18gZmxvYXQgX19vY21sX3NpbmNvc3BpX2YzMihmbG9hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fYXR0cmlidXRlX18oKGFkZHJlc3Nfc3BhY2UoNSkpKSBmbG9hdCAqKTsKX19kZXZpY2VfXyBmbG9hdCBfX29jbWxfc2luX2YzMihmbG9hdCk7Cl9fZGV2aWNlX18gZmxvYXQgX19vY21sX25hdGl2ZV9zaW5fZjMyKGZsb2F0KTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChwdXJlKSkgZmxvYXQgX19vY21sX3NpbmhfZjMyKGZsb2F0KTsKX19kZXZpY2VfXyBmbG9hdCBfX29jbWxfc2lucGlfZjMyKGZsb2F0KTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChjb25zdCkpIGZsb2F0IF9fb2NtbF9zcXJ0X2YzMihmbG9hdCk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBmbG9hdCBfX29jbWxfbmF0aXZlX3NxcnRfZjMyKGZsb2F0KTsKX19kZXZpY2VfXyBmbG9hdCBfX29jbWxfdGFuX2YzMihmbG9hdCk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygocHVyZSkpIGZsb2F0IF9fb2NtbF90YW5oX2YzMihmbG9hdCk7Cl9fZGV2aWNlX18gZmxvYXQgX19vY21sX3RnYW1tYV9mMzIoZmxvYXQpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZmxvYXQgX19vY21sX3RydW5jX2YzMihmbG9hdCk7Cl9fZGV2aWNlX18gZmxvYXQgX19vY21sX3kwX2YzMihmbG9hdCk7Cl9fZGV2aWNlX18gZmxvYXQgX19vY21sX3kxX2YzMihmbG9hdCk7CgovLyBCRUdJTiBJTlRSSU5TSUNTCl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBmbG9hdCBfX29jbWxfYWRkX3J0ZV9mMzIoZmxvYXQsIGZsb2F0KTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChjb25zdCkpIGZsb2F0IF9fb2NtbF9hZGRfcnRuX2YzMihmbG9hdCwgZmxvYXQpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZmxvYXQgX19vY21sX2FkZF9ydHBfZjMyKGZsb2F0LCBmbG9hdCk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBmbG9hdCBfX29jbWxfYWRkX3J0el9mMzIoZmxvYXQsIGZsb2F0KTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChjb25zdCkpIGZsb2F0IF9fb2NtbF9zdWJfcnRlX2YzMihmbG9hdCwgZmxvYXQpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZmxvYXQgX19vY21sX3N1Yl9ydG5fZjMyKGZsb2F0LCBmbG9hdCk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBmbG9hdCBfX29jbWxfc3ViX3J0cF9mMzIoZmxvYXQsIGZsb2F0KTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChjb25zdCkpIGZsb2F0IF9fb2NtbF9zdWJfcnR6X2YzMihmbG9hdCwgZmxvYXQpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZmxvYXQgX19vY21sX211bF9ydGVfZjMyKGZsb2F0LCBmbG9hdCk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBmbG9hdCBfX29jbWxfbXVsX3J0bl9mMzIoZmxvYXQsIGZsb2F0KTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChjb25zdCkpIGZsb2F0IF9fb2NtbF9tdWxfcnRwX2YzMihmbG9hdCwgZmxvYXQpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZmxvYXQgX19vY21sX211bF9ydHpfZjMyKGZsb2F0LCBmbG9hdCk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBmbG9hdCBfX29jbWxfZGl2X3J0ZV9mMzIoZmxvYXQsIGZsb2F0KTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChjb25zdCkpIGZsb2F0IF9fb2NtbF9kaXZfcnRuX2YzMihmbG9hdCwgZmxvYXQpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZmxvYXQgX19vY21sX2Rpdl9ydHBfZjMyKGZsb2F0LCBmbG9hdCk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBmbG9hdCBfX29jbWxfZGl2X3J0el9mMzIoZmxvYXQsIGZsb2F0KTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChjb25zdCkpIGZsb2F0IF9fb2NtbF9zcXJ0X3J0ZV9mMzIoZmxvYXQpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZmxvYXQgX19vY21sX3NxcnRfcnRuX2YzMihmbG9hdCk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBmbG9hdCBfX29jbWxfc3FydF9ydHBfZjMyKGZsb2F0KTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChjb25zdCkpIGZsb2F0IF9fb2NtbF9zcXJ0X3J0el9mMzIoZmxvYXQpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZmxvYXQgX19vY21sX2ZtYV9ydGVfZjMyKGZsb2F0LCBmbG9hdCwgZmxvYXQpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZmxvYXQgX19vY21sX2ZtYV9ydG5fZjMyKGZsb2F0LCBmbG9hdCwgZmxvYXQpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZmxvYXQgX19vY21sX2ZtYV9ydHBfZjMyKGZsb2F0LCBmbG9hdCwgZmxvYXQpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZmxvYXQgX19vY21sX2ZtYV9ydHpfZjMyKGZsb2F0LCBmbG9hdCwgZmxvYXQpOwoKX19kZXZpY2VfXyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoY29uc3QpKSBmbG9hdApfX2xsdm1fYW1kZ2NuX2Nvc19mMzIoZmxvYXQgX194KSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbWRnY25fY29zZihfX3gpOwp9Cl9fZGV2aWNlX18gaW5saW5lIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZmxvYXQKX19sbHZtX2FtZGdjbl9yY3BfZjMyKGZsb2F0IF9feCkgewogIHJldHVybiBfX2J1aWx0aW5fYW1kZ2NuX3JjcGYoX194KTsKfQpfX2RldmljZV9fIGlubGluZSBfX2F0dHJpYnV0ZV9fKChjb25zdCkpIGZsb2F0Cl9fbGx2bV9hbWRnY25fcnNxX2YzMihmbG9hdCBfX3gpIHsKICByZXR1cm4gX19idWlsdGluX2FtZGdjbl9yc3FmKF9feCk7Cn0KX19kZXZpY2VfXyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoY29uc3QpKSBmbG9hdApfX2xsdm1fYW1kZ2NuX3Npbl9mMzIoZmxvYXQgX194KSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbWRnY25fc2luZihfX3gpOwp9Ci8vIEVORCBJTlRSSU5TSUNTCi8vIEVORCBGTE9BVAoKLy8gQkVHSU4gRE9VQkxFCl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBkb3VibGUgX19vY21sX2Fjb3NfZjY0KGRvdWJsZSk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygocHVyZSkpIGRvdWJsZSBfX29jbWxfYWNvc2hfZjY0KGRvdWJsZSk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBkb3VibGUgX19vY21sX2FzaW5fZjY0KGRvdWJsZSk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygocHVyZSkpIGRvdWJsZSBfX29jbWxfYXNpbmhfZjY0KGRvdWJsZSk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBkb3VibGUgX19vY21sX2F0YW4yX2Y2NChkb3VibGUsIGRvdWJsZSk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBkb3VibGUgX19vY21sX2F0YW5fZjY0KGRvdWJsZSk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygocHVyZSkpIGRvdWJsZSBfX29jbWxfYXRhbmhfZjY0KGRvdWJsZSk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygocHVyZSkpIGRvdWJsZSBfX29jbWxfY2JydF9mNjQoZG91YmxlKTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChjb25zdCkpIGRvdWJsZSBfX29jbWxfY2VpbF9mNjQoZG91YmxlKTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChjb25zdCkpIGRvdWJsZSBfX29jbWxfY29weXNpZ25fZjY0KGRvdWJsZSwgZG91YmxlKTsKX19kZXZpY2VfXyBkb3VibGUgX19vY21sX2Nvc19mNjQoZG91YmxlKTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChwdXJlKSkgZG91YmxlIF9fb2NtbF9jb3NoX2Y2NChkb3VibGUpOwpfX2RldmljZV9fIGRvdWJsZSBfX29jbWxfY29zcGlfZjY0KGRvdWJsZSk7Cl9fZGV2aWNlX18gZG91YmxlIF9fb2NtbF9pMF9mNjQoZG91YmxlKTsKX19kZXZpY2VfXyBkb3VibGUgX19vY21sX2kxX2Y2NChkb3VibGUpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKHB1cmUpKSBkb3VibGUgX19vY21sX2VyZmNfZjY0KGRvdWJsZSk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygocHVyZSkpIGRvdWJsZSBfX29jbWxfZXJmY2ludl9mNjQoZG91YmxlKTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChwdXJlKSkgZG91YmxlIF9fb2NtbF9lcmZjeF9mNjQoZG91YmxlKTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChwdXJlKSkgZG91YmxlIF9fb2NtbF9lcmZfZjY0KGRvdWJsZSk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygocHVyZSkpIGRvdWJsZSBfX29jbWxfZXJmaW52X2Y2NChkb3VibGUpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKHB1cmUpKSBkb3VibGUgX19vY21sX2V4cDEwX2Y2NChkb3VibGUpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKHB1cmUpKSBkb3VibGUgX19vY21sX2V4cDJfZjY0KGRvdWJsZSk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygocHVyZSkpIGRvdWJsZSBfX29jbWxfZXhwX2Y2NChkb3VibGUpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKHB1cmUpKSBkb3VibGUgX19vY21sX2V4cG0xX2Y2NChkb3VibGUpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZG91YmxlIF9fb2NtbF9mYWJzX2Y2NChkb3VibGUpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZG91YmxlIF9fb2NtbF9mZGltX2Y2NChkb3VibGUsIGRvdWJsZSk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBkb3VibGUgX19vY21sX2Zsb29yX2Y2NChkb3VibGUpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZG91YmxlIF9fb2NtbF9mbWFfZjY0KGRvdWJsZSwgZG91YmxlLCBkb3VibGUpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZG91YmxlIF9fb2NtbF9mbWF4X2Y2NChkb3VibGUsIGRvdWJsZSk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBkb3VibGUgX19vY21sX2ZtaW5fZjY0KGRvdWJsZSwgZG91YmxlKTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChjb25zdCkpIGRvdWJsZSBfX29jbWxfZm1vZF9mNjQoZG91YmxlLCBkb3VibGUpOwpfX2RldmljZV9fIGRvdWJsZSBfX29jbWxfZnJleHBfZjY0KGRvdWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fKChhZGRyZXNzX3NwYWNlKDUpKSkgaW50ICopOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZG91YmxlIF9fb2NtbF9oeXBvdF9mNjQoZG91YmxlLCBkb3VibGUpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgaW50IF9fb2NtbF9pbG9nYl9mNjQoZG91YmxlKTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChjb25zdCkpIGludCBfX29jbWxfaXNmaW5pdGVfZjY0KGRvdWJsZSk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBpbnQgX19vY21sX2lzaW5mX2Y2NChkb3VibGUpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgaW50IF9fb2NtbF9pc25hbl9mNjQoZG91YmxlKTsKX19kZXZpY2VfXyBkb3VibGUgX19vY21sX2owX2Y2NChkb3VibGUpOwpfX2RldmljZV9fIGRvdWJsZSBfX29jbWxfajFfZjY0KGRvdWJsZSk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBkb3VibGUgX19vY21sX2xkZXhwX2Y2NChkb3VibGUsIGludCk7Cl9fZGV2aWNlX18gZG91YmxlIF9fb2NtbF9sZ2FtbWFfZjY0KGRvdWJsZSk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygocHVyZSkpIGRvdWJsZSBfX29jbWxfbG9nMTBfZjY0KGRvdWJsZSk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygocHVyZSkpIGRvdWJsZSBfX29jbWxfbG9nMXBfZjY0KGRvdWJsZSk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygocHVyZSkpIGRvdWJsZSBfX29jbWxfbG9nMl9mNjQoZG91YmxlKTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChjb25zdCkpIGRvdWJsZSBfX29jbWxfbG9nYl9mNjQoZG91YmxlKTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChwdXJlKSkgZG91YmxlIF9fb2NtbF9sb2dfZjY0KGRvdWJsZSk7Cl9fZGV2aWNlX18gZG91YmxlIF9fb2NtbF9tb2RmX2Y2NChkb3VibGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fKChhZGRyZXNzX3NwYWNlKDUpKSkgZG91YmxlICopOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZG91YmxlIF9fb2NtbF9uZWFyYnlpbnRfZjY0KGRvdWJsZSk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBkb3VibGUgX19vY21sX25leHRhZnRlcl9mNjQoZG91YmxlLCBkb3VibGUpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZG91YmxlIF9fb2NtbF9sZW4zX2Y2NChkb3VibGUsIGRvdWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlKTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChjb25zdCkpIGRvdWJsZSBfX29jbWxfbGVuNF9mNjQoZG91YmxlLCBkb3VibGUsIGRvdWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlKTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChwdXJlKSkgZG91YmxlIF9fb2NtbF9uY2RmX2Y2NChkb3VibGUpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKHB1cmUpKSBkb3VibGUgX19vY21sX25jZGZpbnZfZjY0KGRvdWJsZSk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygocHVyZSkpIGRvdWJsZSBfX29jbWxfcG93X2Y2NChkb3VibGUsIGRvdWJsZSk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygocHVyZSkpIGRvdWJsZSBfX29jbWxfcG93bl9mNjQoZG91YmxlLCBpbnQpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKHB1cmUpKSBkb3VibGUgX19vY21sX3JjYnJ0X2Y2NChkb3VibGUpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZG91YmxlIF9fb2NtbF9yZW1haW5kZXJfZjY0KGRvdWJsZSwgZG91YmxlKTsKX19kZXZpY2VfXyBkb3VibGUgX19vY21sX3JlbXF1b19mNjQoZG91YmxlLCBkb3VibGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fYXR0cmlidXRlX18oKGFkZHJlc3Nfc3BhY2UoNSkpKSBpbnQgKik7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBkb3VibGUgX19vY21sX3JoeXBvdF9mNjQoZG91YmxlLCBkb3VibGUpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZG91YmxlIF9fb2NtbF9yaW50X2Y2NChkb3VibGUpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZG91YmxlIF9fb2NtbF9ybGVuM19mNjQoZG91YmxlLCBkb3VibGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZG91YmxlIF9fb2NtbF9ybGVuNF9mNjQoZG91YmxlLCBkb3VibGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUsIGRvdWJsZSk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBkb3VibGUgX19vY21sX3JvdW5kX2Y2NChkb3VibGUpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKHB1cmUpKSBkb3VibGUgX19vY21sX3JzcXJ0X2Y2NChkb3VibGUpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZG91YmxlIF9fb2NtbF9zY2FsYl9mNjQoZG91YmxlLCBkb3VibGUpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZG91YmxlIF9fb2NtbF9zY2FsYm5fZjY0KGRvdWJsZSwgaW50KTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChjb25zdCkpIGludCBfX29jbWxfc2lnbmJpdF9mNjQoZG91YmxlKTsKX19kZXZpY2VfXyBkb3VibGUgX19vY21sX3NpbmNvc19mNjQoZG91YmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fKChhZGRyZXNzX3NwYWNlKDUpKSkgZG91YmxlICopOwpfX2RldmljZV9fIGRvdWJsZQpfX29jbWxfc2luY29zcGlfZjY0KGRvdWJsZSwgX19hdHRyaWJ1dGVfXygoYWRkcmVzc19zcGFjZSg1KSkpIGRvdWJsZSAqKTsKX19kZXZpY2VfXyBkb3VibGUgX19vY21sX3Npbl9mNjQoZG91YmxlKTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChwdXJlKSkgZG91YmxlIF9fb2NtbF9zaW5oX2Y2NChkb3VibGUpOwpfX2RldmljZV9fIGRvdWJsZSBfX29jbWxfc2lucGlfZjY0KGRvdWJsZSk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBkb3VibGUgX19vY21sX3NxcnRfZjY0KGRvdWJsZSk7Cl9fZGV2aWNlX18gZG91YmxlIF9fb2NtbF90YW5fZjY0KGRvdWJsZSk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygocHVyZSkpIGRvdWJsZSBfX29jbWxfdGFuaF9mNjQoZG91YmxlKTsKX19kZXZpY2VfXyBkb3VibGUgX19vY21sX3RnYW1tYV9mNjQoZG91YmxlKTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChjb25zdCkpIGRvdWJsZSBfX29jbWxfdHJ1bmNfZjY0KGRvdWJsZSk7Cl9fZGV2aWNlX18gZG91YmxlIF9fb2NtbF95MF9mNjQoZG91YmxlKTsKX19kZXZpY2VfXyBkb3VibGUgX19vY21sX3kxX2Y2NChkb3VibGUpOwoKLy8gQkVHSU4gSU5UUklOU0lDUwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZG91YmxlIF9fb2NtbF9hZGRfcnRlX2Y2NChkb3VibGUsIGRvdWJsZSk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBkb3VibGUgX19vY21sX2FkZF9ydG5fZjY0KGRvdWJsZSwgZG91YmxlKTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChjb25zdCkpIGRvdWJsZSBfX29jbWxfYWRkX3J0cF9mNjQoZG91YmxlLCBkb3VibGUpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZG91YmxlIF9fb2NtbF9hZGRfcnR6X2Y2NChkb3VibGUsIGRvdWJsZSk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBkb3VibGUgX19vY21sX3N1Yl9ydGVfZjY0KGRvdWJsZSwgZG91YmxlKTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChjb25zdCkpIGRvdWJsZSBfX29jbWxfc3ViX3J0bl9mNjQoZG91YmxlLCBkb3VibGUpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZG91YmxlIF9fb2NtbF9zdWJfcnRwX2Y2NChkb3VibGUsIGRvdWJsZSk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBkb3VibGUgX19vY21sX3N1Yl9ydHpfZjY0KGRvdWJsZSwgZG91YmxlKTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChjb25zdCkpIGRvdWJsZSBfX29jbWxfbXVsX3J0ZV9mNjQoZG91YmxlLCBkb3VibGUpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZG91YmxlIF9fb2NtbF9tdWxfcnRuX2Y2NChkb3VibGUsIGRvdWJsZSk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBkb3VibGUgX19vY21sX211bF9ydHBfZjY0KGRvdWJsZSwgZG91YmxlKTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChjb25zdCkpIGRvdWJsZSBfX29jbWxfbXVsX3J0el9mNjQoZG91YmxlLCBkb3VibGUpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZG91YmxlIF9fb2NtbF9kaXZfcnRlX2Y2NChkb3VibGUsIGRvdWJsZSk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBkb3VibGUgX19vY21sX2Rpdl9ydG5fZjY0KGRvdWJsZSwgZG91YmxlKTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChjb25zdCkpIGRvdWJsZSBfX29jbWxfZGl2X3J0cF9mNjQoZG91YmxlLCBkb3VibGUpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZG91YmxlIF9fb2NtbF9kaXZfcnR6X2Y2NChkb3VibGUsIGRvdWJsZSk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBkb3VibGUgX19vY21sX3NxcnRfcnRlX2Y2NChkb3VibGUpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZG91YmxlIF9fb2NtbF9zcXJ0X3J0bl9mNjQoZG91YmxlKTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChjb25zdCkpIGRvdWJsZSBfX29jbWxfc3FydF9ydHBfZjY0KGRvdWJsZSk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBkb3VibGUgX19vY21sX3NxcnRfcnR6X2Y2NChkb3VibGUpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZG91YmxlIF9fb2NtbF9mbWFfcnRlX2Y2NChkb3VibGUsIGRvdWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlKTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChjb25zdCkpIGRvdWJsZSBfX29jbWxfZm1hX3J0bl9mNjQoZG91YmxlLCBkb3VibGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBkb3VibGUgX19vY21sX2ZtYV9ydHBfZjY0KGRvdWJsZSwgZG91YmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZG91YmxlIF9fb2NtbF9mbWFfcnR6X2Y2NChkb3VibGUsIGRvdWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlKTsKCl9fZGV2aWNlX18gaW5saW5lIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgZG91YmxlCl9fbGx2bV9hbWRnY25fcmNwX2Y2NChkb3VibGUgX194KSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbWRnY25fcmNwKF9feCk7Cn0KX19kZXZpY2VfXyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoY29uc3QpKSBkb3VibGUKX19sbHZtX2FtZGdjbl9yc3FfZjY0KGRvdWJsZSBfX3gpIHsKICByZXR1cm4gX19idWlsdGluX2FtZGdjbl9yc3EoX194KTsKfQoKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChjb25zdCkpIF9GbG9hdDE2IF9fb2NtbF9jZWlsX2YxNihfRmxvYXQxNik7Cl9fZGV2aWNlX18gX0Zsb2F0MTYgX19vY21sX2Nvc19mMTYoX0Zsb2F0MTYpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKHB1cmUpKSBfRmxvYXQxNiBfX29jbWxfZXhwX2YxNihfRmxvYXQxNik7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygocHVyZSkpIF9GbG9hdDE2IF9fb2NtbF9leHAxMF9mMTYoX0Zsb2F0MTYpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKHB1cmUpKSBfRmxvYXQxNiBfX29jbWxfZXhwMl9mMTYoX0Zsb2F0MTYpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgX0Zsb2F0MTYgX19vY21sX2Zsb29yX2YxNihfRmxvYXQxNik7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBfRmxvYXQxNiBfX29jbWxfZm1hX2YxNihfRmxvYXQxNiwgX0Zsb2F0MTYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfRmxvYXQxNik7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBfRmxvYXQxNiBfX29jbWxfZmFic19mMTYoX0Zsb2F0MTYpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgaW50IF9fb2NtbF9pc2luZl9mMTYoX0Zsb2F0MTYpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgaW50IF9fb2NtbF9pc25hbl9mMTYoX0Zsb2F0MTYpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKHB1cmUpKSBfRmxvYXQxNiBfX29jbWxfbG9nX2YxNihfRmxvYXQxNik7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygocHVyZSkpIF9GbG9hdDE2IF9fb2NtbF9sb2cxMF9mMTYoX0Zsb2F0MTYpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKHB1cmUpKSBfRmxvYXQxNiBfX29jbWxfbG9nMl9mMTYoX0Zsb2F0MTYpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgX0Zsb2F0MTYgX19sbHZtX2FtZGdjbl9yY3BfZjE2KF9GbG9hdDE2KTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChjb25zdCkpIF9GbG9hdDE2IF9fb2NtbF9yaW50X2YxNihfRmxvYXQxNik7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBfRmxvYXQxNiBfX29jbWxfcnNxcnRfZjE2KF9GbG9hdDE2KTsKX19kZXZpY2VfXyBfRmxvYXQxNiBfX29jbWxfc2luX2YxNihfRmxvYXQxNik7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBfRmxvYXQxNiBfX29jbWxfc3FydF9mMTYoX0Zsb2F0MTYpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgX0Zsb2F0MTYgX19vY21sX3RydW5jX2YxNihfRmxvYXQxNik7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygocHVyZSkpIF9GbG9hdDE2IF9fb2NtbF9wb3duX2YxNihfRmxvYXQxNiwgaW50KTsKCnR5cGVkZWYgX0Zsb2F0MTYgX18yZjE2IF9fYXR0cmlidXRlX18oKGV4dF92ZWN0b3JfdHlwZSgyKSkpOwp0eXBlZGVmIHNob3J0IF9fMmkxNiBfX2F0dHJpYnV0ZV9fKChleHRfdmVjdG9yX3R5cGUoMikpKTsKCl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBmbG9hdCBfX29ja2xfZmRvdDIoX18yZjE2IGEsIF9fMmYxNiBiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGMsIGJvb2wgcyk7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBfXzJmMTYgX19vY21sX2NlaWxfMmYxNihfXzJmMTYpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgX18yZjE2IF9fb2NtbF9mYWJzXzJmMTYoX18yZjE2KTsKX19kZXZpY2VfXyBfXzJmMTYgX19vY21sX2Nvc18yZjE2KF9fMmYxNik7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygocHVyZSkpIF9fMmYxNiBfX29jbWxfZXhwXzJmMTYoX18yZjE2KTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChwdXJlKSkgX18yZjE2IF9fb2NtbF9leHAxMF8yZjE2KF9fMmYxNik7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygocHVyZSkpIF9fMmYxNiBfX29jbWxfZXhwMl8yZjE2KF9fMmYxNik7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBfXzJmMTYgX19vY21sX2Zsb29yXzJmMTYoX18yZjE2KTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChjb25zdCkpCl9fMmYxNiBfX29jbWxfZm1hXzJmMTYoX18yZjE2LCBfXzJmMTYsIF9fMmYxNik7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBfXzJpMTYgX19vY21sX2lzaW5mXzJmMTYoX18yZjE2KTsKX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChjb25zdCkpIF9fMmkxNiBfX29jbWxfaXNuYW5fMmYxNihfXzJmMTYpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKHB1cmUpKSBfXzJmMTYgX19vY21sX2xvZ18yZjE2KF9fMmYxNik7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygocHVyZSkpIF9fMmYxNiBfX29jbWxfbG9nMTBfMmYxNihfXzJmMTYpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKHB1cmUpKSBfXzJmMTYgX19vY21sX2xvZzJfMmYxNihfXzJmMTYpOwpfX2RldmljZV9fIGlubGluZSBfXzJmMTYKX19sbHZtX2FtZGdjbl9yY3BfMmYxNihfXzJmMTYgX194KSAvLyBOb3QgY3VycmVudGx5IGV4cG9zZWQgYnkgUk9DREwuCnsKICByZXR1cm4gKF9fMmYxNikoX19sbHZtX2FtZGdjbl9yY3BfZjE2KF9feC54KSwgX19sbHZtX2FtZGdjbl9yY3BfZjE2KF9feC55KSk7Cn0KX19kZXZpY2VfXyBfX2F0dHJpYnV0ZV9fKChjb25zdCkpIF9fMmYxNiBfX29jbWxfcmludF8yZjE2KF9fMmYxNik7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBfXzJmMTYgX19vY21sX3JzcXJ0XzJmMTYoX18yZjE2KTsKX19kZXZpY2VfXyBfXzJmMTYgX19vY21sX3Npbl8yZjE2KF9fMmYxNik7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBfXzJmMTYgX19vY21sX3NxcnRfMmYxNihfXzJmMTYpOwpfX2RldmljZV9fIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgX18yZjE2IF9fb2NtbF90cnVuY18yZjE2KF9fMmYxNik7Cl9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKSBfXzJmMTYgX19vY21sX3Bvd25fMmYxNihfXzJmMTYsIF9fMmkxNik7CgojaWZkZWYgX19jcGx1c3BsdXMKfSAvLyBleHRlcm4gIkMiCiNlbmRpZgoKI2VuZGlmIC8vIF9fQ0xBTkdfSElQX0xJQkRFVklDRV9ERUNMQVJFU19IX18KAC8qPT09LS0tLSBfX2NsYW5nX2hpcF9ydW50aW1lX3dyYXBwZXIuaCAtIEhJUCBydW50aW1lIHN1cHBvcnQgLS0tLS0tLS0tLS0tLS0tPT09CiAqCiAqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCiAqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCgovKgogKiBXQVJOSU5HOiBUaGlzIGhlYWRlciBpcyBpbnRlbmRlZCB0byBiZSBkaXJlY3RseSAtaW5jbHVkZSdkIGJ5CiAqIHRoZSBjb21waWxlciBhbmQgaXMgbm90IHN1cHBvc2VkIHRvIGJlIGluY2x1ZGVkIGJ5IHVzZXJzLgogKgogKi8KCiNpZm5kZWYgX19DTEFOR19ISVBfUlVOVElNRV9XUkFQUEVSX0hfXwojZGVmaW5lIF9fQ0xBTkdfSElQX1JVTlRJTUVfV1JBUFBFUl9IX18KCiNpZiBfX0hJUF9fCgojZGVmaW5lIF9faG9zdF9fIF9fYXR0cmlidXRlX18oKGhvc3QpKQojZGVmaW5lIF9fZGV2aWNlX18gX19hdHRyaWJ1dGVfXygoZGV2aWNlKSkKI2RlZmluZSBfX2dsb2JhbF9fIF9fYXR0cmlidXRlX18oKGdsb2JhbCkpCiNkZWZpbmUgX19zaGFyZWRfXyBfX2F0dHJpYnV0ZV9fKChzaGFyZWQpKQojZGVmaW5lIF9fY29uc3RhbnRfXyBfX2F0dHJpYnV0ZV9fKChjb25zdGFudCkpCiNkZWZpbmUgX19tYW5hZ2VkX18gX19hdHRyaWJ1dGVfXygobWFuYWdlZCkpCgojaWYgIWRlZmluZWQoX19jcGx1c3BsdXMpIHx8IF9fY3BsdXNwbHVzIDwgMjAxMTAzTAogICNkZWZpbmUgbnVsbHB0ciBOVUxMOwojZW5kaWYKCiNpZmRlZiBfX2NwbHVzcGx1cwpleHRlcm4gIkMiIHsKICBfX2F0dHJpYnV0ZV9fKChfX3Zpc2liaWxpdHlfXygiZGVmYXVsdCIpKSkKICBfX2F0dHJpYnV0ZV9fKCh3ZWFrKSkKICBfX2F0dHJpYnV0ZV9fKChub3JldHVybikpCiAgX19kZXZpY2VfXyB2b2lkIF9fY3hhX3B1cmVfdmlydHVhbCh2b2lkKSB7CiAgICBfX2J1aWx0aW5fdHJhcCgpOwogIH0KICBfX2F0dHJpYnV0ZV9fKChfX3Zpc2liaWxpdHlfXygiZGVmYXVsdCIpKSkKICBfX2F0dHJpYnV0ZV9fKCh3ZWFrKSkKICBfX2F0dHJpYnV0ZV9fKChub3JldHVybikpCiAgX19kZXZpY2VfXyB2b2lkIF9fY3hhX2RlbGV0ZWRfdmlydHVhbCh2b2lkKSB7CiAgICBfX2J1aWx0aW5fdHJhcCgpOwogIH0KfQojZW5kaWYgLy9fX2NwbHVzcGx1cwoKI2lmICFkZWZpbmVkKF9fSElQQ0NfUlRDX18pCiNpbmNsdWRlIDxjbWF0aD4KI2luY2x1ZGUgPGNzdGRsaWI+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2Vsc2UKdHlwZWRlZiBfX1NJWkVfVFlQRV9fIHNpemVfdDsKLy8gRGVmaW5lIG1hY3JvcyB3aGljaCBhcmUgbmVlZGVkIHRvIGRlY2xhcmUgSElQIGRldmljZSBBUEkncyB3aXRob3V0IHN0YW5kYXJkCi8vIEMvQysrIGhlYWRlcnMuIFRoaXMgaXMgZm9yIHJlYWRhYmlsaXR5IHNvIHRoYXQgdGhlc2UgQVBJJ3MgY2FuIGJlIHdyaXR0ZW4KLy8gdGhlIHNhbWUgd2F5IGFzIG5vbi1oaXBSVEMgdXNlIGNhc2UuIFRoZXNlIG1hY3JvcyBuZWVkIHRvIGJlIHBvcHBlZCBzbyB0aGF0Ci8vIHRoZXkgZG8gbm90IHBvbGx1dGUgdXNlcnMnIG5hbWUgc3BhY2UuCiNwcmFnbWEgcHVzaF9tYWNybygiTlVMTCIpCiNwcmFnbWEgcHVzaF9tYWNybygidWludDMyX3QiKQojcHJhZ21hIHB1c2hfbWFjcm8oInVpbnQ2NF90IikKI3ByYWdtYSBwdXNoX21hY3JvKCJDSEFSX0JJVCIpCiNwcmFnbWEgcHVzaF9tYWNybygiSU5UX01BWCIpCiNkZWZpbmUgTlVMTCAodm9pZCAqKTAKI2RlZmluZSB1aW50MzJfdCBfX1VJTlQzMl9UWVBFX18KI2RlZmluZSB1aW50NjRfdCBfX1VJTlQ2NF9UWVBFX18KI2RlZmluZSBDSEFSX0JJVCBfX0NIQVJfQklUX18KI2RlZmluZSBJTlRfTUFYIF9fSU5UTUFYX01BWF9fCiNlbmRpZiAvLyBfX0hJUENDX1JUQ19fCgp0eXBlZGVmIF9fU0laRV9UWVBFX18gX19oaXBfc2l6ZV90OwoKI2lmZGVmIF9fY3BsdXNwbHVzCmV4dGVybiAiQyIgewojZW5kaWYgLy9fX2NwbHVzcGx1cwoKI2lmIF9fSElQX0VOQUJMRV9ERVZJQ0VfTUFMTE9DX18KX19kZXZpY2VfXyB2b2lkICpfX2hpcF9tYWxsb2MoX19oaXBfc2l6ZV90IF9fc2l6ZSk7Cl9fZGV2aWNlX18gdm9pZCAqX19oaXBfZnJlZSh2b2lkICpfX3B0cik7Cl9fYXR0cmlidXRlX18oKHdlYWspKSBpbmxpbmUgX19kZXZpY2VfXyB2b2lkICptYWxsb2MoX19oaXBfc2l6ZV90IF9fc2l6ZSkgewogIHJldHVybiBfX2hpcF9tYWxsb2MoX19zaXplKTsKfQpfX2F0dHJpYnV0ZV9fKCh3ZWFrKSkgaW5saW5lIF9fZGV2aWNlX18gdm9pZCAqZnJlZSh2b2lkICpfX3B0cikgewogIHJldHVybiBfX2hpcF9mcmVlKF9fcHRyKTsKfQojZWxzZQpfX2F0dHJpYnV0ZV9fKCh3ZWFrKSkgaW5saW5lIF9fZGV2aWNlX18gdm9pZCAqbWFsbG9jKF9faGlwX3NpemVfdCBfX3NpemUpIHsKICBfX2J1aWx0aW5fdHJhcCgpOwogIHJldHVybiAodm9pZCAqKTA7Cn0KX19hdHRyaWJ1dGVfXygod2VhaykpIGlubGluZSBfX2RldmljZV9fIHZvaWQgKmZyZWUodm9pZCAqX19wdHIpIHsKICBfX2J1aWx0aW5fdHJhcCgpOwogIHJldHVybiAodm9pZCAqKTA7Cn0KI2VuZGlmCgojaWZkZWYgX19jcGx1c3BsdXMKfSAvLyBleHRlcm4gIkMiCiNlbmRpZiAvL19fY3BsdXNwbHVzCgojaW5jbHVkZSA8X19jbGFuZ19oaXBfbGliZGV2aWNlX2RlY2xhcmVzLmg+CiNpbmNsdWRlIDxfX2NsYW5nX2hpcF9tYXRoLmg+CgojaWYgZGVmaW5lZChfX0hJUENDX1JUQ19fKQojaW5jbHVkZSA8X19jbGFuZ19oaXBfY21hdGguaD4KI2Vsc2UKI2luY2x1ZGUgPF9fY2xhbmdfY3VkYV9tYXRoX2ZvcndhcmRfZGVjbGFyZXMuaD4KI2luY2x1ZGUgPF9fY2xhbmdfaGlwX2NtYXRoLmg+CiNpbmNsdWRlIDxfX2NsYW5nX2N1ZGFfY29tcGxleF9idWlsdGlucy5oPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8Y29tcGxleD4KI2luY2x1ZGUgPG5ldz4KI2VuZGlmIC8vIF9fSElQQ0NfUlRDX18KCiNkZWZpbmUgX19DTEFOR19ISVBfUlVOVElNRV9XUkFQUEVSX0lOQ0xVREVEX18gMQojaWYgZGVmaW5lZChfX0hJUENDX1JUQ19fKQojcHJhZ21hIHBvcF9tYWNybygiTlVMTCIpCiNwcmFnbWEgcG9wX21hY3JvKCJ1aW50MzJfdCIpCiNwcmFnbWEgcG9wX21hY3JvKCJ1aW50NjRfdCIpCiNwcmFnbWEgcG9wX21hY3JvKCJDSEFSX0JJVCIpCiNwcmFnbWEgcG9wX21hY3JvKCJJTlRfTUFYIikKI2VuZGlmIC8vIF9fSElQQ0NfUlRDX18KI2VuZGlmIC8vIF9fSElQX18KI2VuZGlmIC8vIF9fQ0xBTkdfSElQX1JVTlRJTUVfV1JBUFBFUl9IX18KAC8qPT09LS0tLSBhcm1fZnAxNi5oIC0gQVJNIEZQMTYgaW50cmluc2ljcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICoKICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQogKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAogKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CiAqCiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCiAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgogKgogKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgogKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgogKiBUSEUgU09GVFdBUkUuCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCgojaWZuZGVmIF9fQVJNX0ZQMTZfSAojZGVmaW5lIF9fQVJNX0ZQMTZfSAoKI2luY2x1ZGUgPHN0ZGludC5oPgoKdHlwZWRlZiBfX2ZwMTYgZmxvYXQxNl90OwojZGVmaW5lIF9fYWkgc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCiNpZiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfRlAxNl9TQ0FMQVJfQVJJVEhNRVRJQykgJiYgZGVmaW5lZChfX2FhcmNoNjRfXykKI2RlZmluZSB2YWJkaF9mMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNl90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQxNl90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQxNl90KSBfX2J1aWx0aW5fbmVvbl92YWJkaF9mMTYoX19zMCwgX19zMSk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZhYnNoX2YxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZhYnNoX2YxNihfX3MwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdmFkZGhfZjE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZfdCkgX19idWlsdGluX25lb25fdmFkZGhfZjE2KF9fczAsIF9fczEpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2Y2FnZWhfZjE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZfdCBfX3MxID0gX19wMTsgXAogIHVpbnQxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZjYWdlaF9mMTYoX19zMCwgX19zMSk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZjYWd0aF9mMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNl90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQxNl90IF9fczEgPSBfX3AxOyBcCiAgdWludDE2X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MTZfdCkgX19idWlsdGluX25lb25fdmNhZ3RoX2YxNihfX3MwLCBfX3MxKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdmNhbGVoX2YxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2X3QgX19zMSA9IF9fcDE7IFwKICB1aW50MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQxNl90KSBfX2J1aWx0aW5fbmVvbl92Y2FsZWhfZjE2KF9fczAsIF9fczEpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2Y2FsdGhfZjE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZfdCBfX3MxID0gX19wMTsgXAogIHVpbnQxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZjYWx0aF9mMTYoX19zMCwgX19zMSk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZjZXFoX2YxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2X3QgX19zMSA9IF9fcDE7IFwKICB1aW50MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQxNl90KSBfX2J1aWx0aW5fbmVvbl92Y2VxaF9mMTYoX19zMCwgX19zMSk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZjZXF6aF9mMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNl90IF9fczAgPSBfX3AwOyBcCiAgdWludDE2X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MTZfdCkgX19idWlsdGluX25lb25fdmNlcXpoX2YxNihfX3MwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdmNnZWhfZjE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZfdCBfX3MxID0gX19wMTsgXAogIHVpbnQxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZjZ2VoX2YxNihfX3MwLCBfX3MxKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdmNnZXpoX2YxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQxNl90KSBfX2J1aWx0aW5fbmVvbl92Y2dlemhfZjE2KF9fczApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2Y2d0aF9mMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNl90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQxNl90IF9fczEgPSBfX3AxOyBcCiAgdWludDE2X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MTZfdCkgX19idWlsdGluX25lb25fdmNndGhfZjE2KF9fczAsIF9fczEpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2Y2d0emhfZjE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZfdCBfX3MwID0gX19wMDsgXAogIHVpbnQxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZjZ3R6aF9mMTYoX19zMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZjbGVoX2YxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2X3QgX19zMSA9IF9fcDE7IFwKICB1aW50MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQxNl90KSBfX2J1aWx0aW5fbmVvbl92Y2xlaF9mMTYoX19zMCwgX19zMSk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZjbGV6aF9mMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNl90IF9fczAgPSBfX3AwOyBcCiAgdWludDE2X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MTZfdCkgX19idWlsdGluX25lb25fdmNsZXpoX2YxNihfX3MwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdmNsdGhfZjE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZfdCBfX3MxID0gX19wMTsgXAogIHVpbnQxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbHRoX2YxNihfX3MwLCBfX3MxKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdmNsdHpoX2YxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQxNl90KSBfX2J1aWx0aW5fbmVvbl92Y2x0emhfZjE2KF9fczApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2Y3Z0aF9uX3MxNl9mMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNl90IF9fczAgPSBfX3AwOyBcCiAgaW50MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRoX25fczE2X2YxNihfX3MwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdmN2dGhfbl9zMzJfZjE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZfdCBfX3MwID0gX19wMDsgXAogIGludDMyX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQzMl90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0aF9uX3MzMl9mMTYoX19zMCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZjdnRoX25fczY0X2YxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2X3QgX19zMCA9IF9fcDA7IFwKICBpbnQ2NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50NjRfdCkgX19idWlsdGluX25lb25fdmN2dGhfbl9zNjRfZjE2KF9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2Y3Z0aF9uX3UxNl9mMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNl90IF9fczAgPSBfX3AwOyBcCiAgdWludDE2X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MTZfdCkgX19idWlsdGluX25lb25fdmN2dGhfbl91MTZfZjE2KF9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2Y3Z0aF9uX3UzMl9mMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNl90IF9fczAgPSBfX3AwOyBcCiAgdWludDMyX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MzJfdCkgX19idWlsdGluX25lb25fdmN2dGhfbl91MzJfZjE2KF9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2Y3Z0aF9uX3U2NF9mMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNl90IF9fczAgPSBfX3AwOyBcCiAgdWludDY0X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50NjRfdCkgX19idWlsdGluX25lb25fdmN2dGhfbl91NjRfZjE2KF9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2Y3Z0aF9zMTZfZjE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZfdCBfX3MwID0gX19wMDsgXAogIGludDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQxNl90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0aF9zMTZfZjE2KF9fczApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2Y3Z0aF9zMzJfZjE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZfdCBfX3MwID0gX19wMDsgXAogIGludDMyX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQzMl90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0aF9zMzJfZjE2KF9fczApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2Y3Z0aF9zNjRfZjE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZfdCBfX3MwID0gX19wMDsgXAogIGludDY0X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ2NF90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0aF9zNjRfZjE2KF9fczApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2Y3Z0aF91MTZfZjE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZfdCBfX3MwID0gX19wMDsgXAogIHVpbnQxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRoX3UxNl9mMTYoX19zMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZjdnRoX3UzMl9mMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNl90IF9fczAgPSBfX3AwOyBcCiAgdWludDMyX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MzJfdCkgX19idWlsdGluX25lb25fdmN2dGhfdTMyX2YxNihfX3MwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdmN2dGhfdTY0X2YxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2X3QgX19zMCA9IF9fcDA7IFwKICB1aW50NjRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ2NF90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0aF91NjRfZjE2KF9fczApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2Y3Z0YWhfczE2X2YxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2X3QgX19zMCA9IF9fcDA7IFwKICBpbnQxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MTZfdCkgX19idWlsdGluX25lb25fdmN2dGFoX3MxNl9mMTYoX19zMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZjdnRhaF9zMzJfZjE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZfdCBfX3MwID0gX19wMDsgXAogIGludDMyX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQzMl90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0YWhfczMyX2YxNihfX3MwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdmN2dGFoX3M2NF9mMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNl90IF9fczAgPSBfX3AwOyBcCiAgaW50NjRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRhaF9zNjRfZjE2KF9fczApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2Y3Z0YWhfdTE2X2YxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQxNl90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0YWhfdTE2X2YxNihfX3MwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdmN2dGFoX3UzMl9mMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNl90IF9fczAgPSBfX3AwOyBcCiAgdWludDMyX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MzJfdCkgX19idWlsdGluX25lb25fdmN2dGFoX3UzMl9mMTYoX19zMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZjdnRhaF91NjRfZjE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ2NF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRhaF91NjRfZjE2KF9fczApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2Y3Z0aF9mMTZfdTE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNl90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQxNl90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0aF9mMTZfdTE2KF9fczApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2Y3Z0aF9mMTZfczE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRoX2YxNl9zMTYoX19zMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZjdnRoX2YxNl91MzIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyX3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRoX2YxNl91MzIoX19zMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZjdnRoX2YxNl9zMzIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZfdCkgX19idWlsdGluX25lb25fdmN2dGhfZjE2X3MzMihfX3MwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdmN2dGhfZjE2X3U2NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjRfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZfdCkgX19idWlsdGluX25lb25fdmN2dGhfZjE2X3U2NChfX3MwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdmN2dGhfZjE2X3M2NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NF90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQxNl90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0aF9mMTZfczY0KF9fczApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2Y3Z0aF9uX2YxNl91MzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyX3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRoX25fZjE2X3UzMihfX3MwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdmN2dGhfbl9mMTZfczMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyX3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRoX25fZjE2X3MzMihfX3MwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdmN2dGhfbl9mMTZfdTY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NF90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQxNl90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0aF9uX2YxNl91NjQoX19zMCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZjdnRoX25fZjE2X3M2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NF90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQxNl90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0aF9uX2YxNl9zNjQoX19zMCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZjdnRoX25fZjE2X3UxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZfdCkgX19idWlsdGluX25lb25fdmN2dGhfbl9mMTZfdTE2KF9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2Y3Z0aF9uX2YxNl9zMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZfdCkgX19idWlsdGluX25lb25fdmN2dGhfbl9mMTZfczE2KF9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2Y3Z0bWhfczE2X2YxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2X3QgX19zMCA9IF9fcDA7IFwKICBpbnQxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MTZfdCkgX19idWlsdGluX25lb25fdmN2dG1oX3MxNl9mMTYoX19zMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZjdnRtaF9zMzJfZjE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZfdCBfX3MwID0gX19wMDsgXAogIGludDMyX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQzMl90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0bWhfczMyX2YxNihfX3MwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdmN2dG1oX3M2NF9mMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNl90IF9fczAgPSBfX3AwOyBcCiAgaW50NjRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRtaF9zNjRfZjE2KF9fczApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2Y3Z0bWhfdTE2X2YxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQxNl90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0bWhfdTE2X2YxNihfX3MwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdmN2dG1oX3UzMl9mMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNl90IF9fczAgPSBfX3AwOyBcCiAgdWludDMyX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MzJfdCkgX19idWlsdGluX25lb25fdmN2dG1oX3UzMl9mMTYoX19zMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZjdnRtaF91NjRfZjE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ2NF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRtaF91NjRfZjE2KF9fczApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2Y3Z0bmhfczE2X2YxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2X3QgX19zMCA9IF9fcDA7IFwKICBpbnQxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MTZfdCkgX19idWlsdGluX25lb25fdmN2dG5oX3MxNl9mMTYoX19zMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZjdnRuaF9zMzJfZjE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZfdCBfX3MwID0gX19wMDsgXAogIGludDMyX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQzMl90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0bmhfczMyX2YxNihfX3MwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdmN2dG5oX3M2NF9mMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNl90IF9fczAgPSBfX3AwOyBcCiAgaW50NjRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRuaF9zNjRfZjE2KF9fczApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2Y3Z0bmhfdTE2X2YxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQxNl90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0bmhfdTE2X2YxNihfX3MwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdmN2dG5oX3UzMl9mMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNl90IF9fczAgPSBfX3AwOyBcCiAgdWludDMyX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MzJfdCkgX19idWlsdGluX25lb25fdmN2dG5oX3UzMl9mMTYoX19zMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZjdnRuaF91NjRfZjE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ2NF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRuaF91NjRfZjE2KF9fczApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2Y3Z0cGhfczE2X2YxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2X3QgX19zMCA9IF9fcDA7IFwKICBpbnQxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MTZfdCkgX19idWlsdGluX25lb25fdmN2dHBoX3MxNl9mMTYoX19zMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZjdnRwaF9zMzJfZjE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZfdCBfX3MwID0gX19wMDsgXAogIGludDMyX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQzMl90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0cGhfczMyX2YxNihfX3MwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdmN2dHBoX3M2NF9mMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNl90IF9fczAgPSBfX3AwOyBcCiAgaW50NjRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRwaF9zNjRfZjE2KF9fczApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2Y3Z0cGhfdTE2X2YxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQxNl90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0cGhfdTE2X2YxNihfX3MwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdmN2dHBoX3UzMl9mMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNl90IF9fczAgPSBfX3AwOyBcCiAgdWludDMyX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MzJfdCkgX19idWlsdGluX25lb25fdmN2dHBoX3UzMl9mMTYoX19zMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZjdnRwaF91NjRfZjE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ2NF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRwaF91NjRfZjE2KF9fczApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2ZGl2aF9mMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNl90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQxNl90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQxNl90KSBfX2J1aWx0aW5fbmVvbl92ZGl2aF9mMTYoX19zMCwgX19zMSk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZmbWFoX2YxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2X3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDE2X3QgX19zMiA9IF9fcDI7IFwKICBmbG9hdDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZmbWFoX2YxNihfX3MwLCBfX3MxLCBfX3MyKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdmZtc2hfZjE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MTZfdCBfX3MyID0gX19wMjsgXAogIGZsb2F0MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZfdCkgX19idWlsdGluX25lb25fdmZtc2hfZjE2KF9fczAsIF9fczEsIF9fczIpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2bWF4aF9mMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNl90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQxNl90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQxNl90KSBfX2J1aWx0aW5fbmVvbl92bWF4aF9mMTYoX19zMCwgX19zMSk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZtYXhubWhfZjE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZfdCkgX19idWlsdGluX25lb25fdm1heG5taF9mMTYoX19zMCwgX19zMSk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZtaW5oX2YxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2X3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZtaW5oX2YxNihfX3MwLCBfX3MxKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdm1pbm5taF9mMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNl90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQxNl90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQxNl90KSBfX2J1aWx0aW5fbmVvbl92bWlubm1oX2YxNihfX3MwLCBfX3MxKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdm11bGhfZjE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZfdCkgX19idWlsdGluX25lb25fdm11bGhfZjE2KF9fczAsIF9fczEpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2bXVseGhfZjE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZfdCkgX19idWlsdGluX25lb25fdm11bHhoX2YxNihfX3MwLCBfX3MxKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdm5lZ2hfZjE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZfdCkgX19idWlsdGluX25lb25fdm5lZ2hfZjE2KF9fczApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2cmVjcGVoX2YxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZyZWNwZWhfZjE2KF9fczApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2cmVjcHNoX2YxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2X3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZyZWNwc2hfZjE2KF9fczAsIF9fczEpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2cmVjcHhoX2YxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZyZWNweGhfZjE2KF9fczApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2cm5kaF9mMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNl90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQxNl90KSBfX2J1aWx0aW5fbmVvbl92cm5kaF9mMTYoX19zMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZybmRhaF9mMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNl90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQxNl90KSBfX2J1aWx0aW5fbmVvbl92cm5kYWhfZjE2KF9fczApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2cm5kaWhfZjE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZfdCkgX19idWlsdGluX25lb25fdnJuZGloX2YxNihfX3MwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdnJuZG1oX2YxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZybmRtaF9mMTYoX19zMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZybmRuaF9mMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNl90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQxNl90KSBfX2J1aWx0aW5fbmVvbl92cm5kbmhfZjE2KF9fczApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2cm5kcGhfZjE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZfdCkgX19idWlsdGluX25lb25fdnJuZHBoX2YxNihfX3MwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdnJuZHhoX2YxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZybmR4aF9mMTYoX19zMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZyc3FydGVoX2YxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDE2X3QpIF9fYnVpbHRpbl9uZW9uX3Zyc3FydGVoX2YxNihfX3MwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdnJzcXJ0c2hfZjE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZfdCkgX19idWlsdGluX25lb25fdnJzcXJ0c2hfZjE2KF9fczAsIF9fczEpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2c3FydGhfZjE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZfdCkgX19idWlsdGluX25lb25fdnNxcnRoX2YxNihfX3MwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdnN1YmhfZjE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZfdCkgX19idWlsdGluX25lb25fdnN1YmhfZjE2KF9fczAsIF9fczEpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojdW5kZWYgX19haQoKI2VuZGlmIC8qIF9fQVJNX0ZQMTZfSCAqLwoALyo9PT0tLS0tLS0tLS0tLS0tIGF2eDUxMmlmbWF2bGludHJpbi5oIC0gSUZNQSBpbnRyaW5zaWNzIC0tLS0tLS0tLS0tLS0tLS0tLT09PQogKgogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwojaWZuZGVmIF9fSU1NSU5UUklOX0gKI2Vycm9yICJOZXZlciB1c2UgPGF2eDUxMmlmbWF2bGludHJpbi5oPiBkaXJlY3RseTsgaW5jbHVkZSA8aW1taW50cmluLmg+IGluc3RlYWQuIgojZW5kaWYKCiNpZm5kZWYgX19JRk1BVkxJTlRSSU5fSAojZGVmaW5lIF9fSUZNQVZMSU5UUklOX0gKCi8qIERlZmluZSB0aGUgZGVmYXVsdCBhdHRyaWJ1dGVzIGZvciB0aGUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZS4gKi8KI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJhdng1MTJpZm1hLGF2eDUxMnZsIiksIF9fbWluX3ZlY3Rvcl93aWR0aF9fKDEyOCkpKQojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUzI1NiBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oImF2eDUxMmlmbWEsYXZ4NTEydmwiKSwgX19taW5fdmVjdG9yX3dpZHRoX18oMjU2KSkpCgoKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYWRkNTJoaV9lcHU2NCAoX19tMTI4aSBfX1gsIF9fbTEyOGkgX19ZLCBfX20xMjhpIF9fWikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92cG1hZGQ1Mmh1cTEyOCgoX192MmRpKSBfX1gsIChfX3YyZGkpIF9fWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSkgX19aKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfbWFkZDUyaGlfZXB1NjQgKF9fbTEyOGkgX19XLCBfX21tYXNrOCBfX00sIF9fbTEyOGkgX19YLCBfX20xMjhpIF9fWSkKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzEyOChfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfbW1fbWFkZDUyaGlfZXB1NjQoX19XLCBfX1gsIF9fWSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfbWFkZDUyaGlfZXB1NjQgKF9fbW1hc2s4IF9fTSwgX19tMTI4aSBfX1gsIF9fbTEyOGkgX19ZLCBfX20xMjhpIF9fWikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzEyOChfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfbW1fbWFkZDUyaGlfZXB1NjQoX19YLCBfX1ksIF9fWiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hZGQ1MmhpX2VwdTY0IChfX20yNTZpIF9fWCwgX19tMjU2aSBfX1ksIF9fbTI1NmkgX19aKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3ZwbWFkZDUyaHVxMjU2KChfX3Y0ZGkpX19YLCAoX192NGRpKV9fWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfX1opOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19tYWRkNTJoaV9lcHU2NCAoX19tMjU2aSBfX1csIF9fbW1hc2s4IF9fTSwgX19tMjU2aSBfX1gsIF9fbTI1NmkgX19ZKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMjU2KF9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9tYWRkNTJoaV9lcHU2NChfX1csIF9fWCwgX19ZKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9tYWRkNTJoaV9lcHU2NCAoX19tbWFzazggX19NLCBfX20yNTZpIF9fWCwgX19tMjU2aSBfX1ksIF9fbTI1NmkgX19aKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMjU2KF9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9tYWRkNTJoaV9lcHU2NChfX1gsIF9fWSwgX19aKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFkZDUybG9fZXB1NjQgKF9fbTEyOGkgX19YLCBfX20xMjhpIF9fWSwgX19tMTI4aSBfX1opCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdnBtYWRkNTJsdXExMjgoKF9fdjJkaSlfX1gsIChfX3YyZGkpX19ZLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9fWik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX21hZGQ1MmxvX2VwdTY0IChfX20xMjhpIF9fVywgX19tbWFzazggX19NLCBfX20xMjhpIF9fWCwgX19tMTI4aSBfX1kpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8xMjgoX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX21tX21hZGQ1MmxvX2VwdTY0KF9fVywgX19YLCBfX1kpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X21hZGQ1MmxvX2VwdTY0IChfX21tYXNrOCBfX00sIF9fbTEyOGkgX19YLCBfX20xMjhpIF9fWSwgX19tMTI4aSBfX1opCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8xMjgoX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX21tX21hZGQ1MmxvX2VwdTY0KF9fWCwgX19ZLCBfX1opLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX21tX3NldHplcm9fc2kxMjgoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYWRkNTJsb19lcHU2NCAoX19tMjU2aSBfX1gsIF9fbTI1NmkgX19ZLCBfX20yNTZpIF9fWikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl92cG1hZGQ1Mmx1cTI1NigoX192NGRpKV9fWCwgKF9fdjRkaSlfX1ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX19aKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfbWFkZDUybG9fZXB1NjQgKF9fbTI1NmkgX19XLCBfX21tYXNrOCBfX00sIF9fbTI1NmkgX19YLCBfX20yNTZpIF9fWSkKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzI1NihfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfbWFkZDUybG9fZXB1NjQoX19XLCBfX1gsIF9fWSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfbWFkZDUybG9fZXB1NjQgKF9fbW1hc2s4IF9fTSwgX19tMjU2aSBfX1gsIF9fbTI1NmkgX19ZLCBfX20yNTZpIF9fWikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzI1NihfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfbWFkZDUybG9fZXB1NjQoX19YLCBfX1ksIF9fWiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKCiN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUzI1NgoKI2VuZGlmCgBhdng1MTJ2bGJpdGFsZ2ludHJpbi5oAGF2eDUxMnZubmlpbnRyaW4uaAAvKj09PS0tLS0gY2x3YmludHJpbi5oIC0gQ0xXQiBpbnRyaW5zaWMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqCiAqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCiAqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCgojaWZuZGVmIF9fSU1NSU5UUklOX0gKI2Vycm9yICJOZXZlciB1c2UgPGNsd2JpbnRyaW4uaD4gZGlyZWN0bHk7IGluY2x1ZGUgPGltbWludHJpbi5oPiBpbnN0ZWFkLiIKI2VuZGlmCgojaWZuZGVmIF9fQ0xXQklOVFJJTl9ICiNkZWZpbmUgX19DTFdCSU5UUklOX0gKCi8qIERlZmluZSB0aGUgZGVmYXVsdCBhdHRyaWJ1dGVzIGZvciB0aGUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZS4gKi8KI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCAgX190YXJnZXRfXygiY2x3YiIpKSkKCi8vLyBXcml0ZXMgYmFjayB0byBtZW1vcnkgdGhlIGNhY2hlIGxpbmUgKGlmIG1vZGlmaWVkKSB0aGF0IGNvbnRhaW5zIHRoZQovLy8gbGluZWFyIGFkZHJlc3Mgc3BlY2lmaWVkIGluIFxhIF9fcCBmcm9tIGFueSBsZXZlbCBvZiB0aGUgY2FjaGUgaGllcmFyY2h5IGluCi8vLyB0aGUgY2FjaGUgY29oZXJlbmNlIGRvbWFpbgovLy8KLy8vIFxoZWFkZXJmaWxlIDxpbW1pbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IENMV0IgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19wCi8vLyAgICBBIHBvaW50ZXIgdG8gdGhlIG1lbW9yeSBsb2NhdGlvbiB1c2VkIHRvIGlkZW50aWZ5IHRoZSBjYWNoZSBsaW5lIHRvIGJlCi8vLyAgICB3cml0dGVuIGJhY2suCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jbHdiKHZvaWQgY29uc3QgKl9fcCkgewogIF9fYnVpbHRpbl9pYTMyX2Nsd2IoX19wKTsKfQoKI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUwoKI2VuZGlmCgBmbG9hdC5oAGltbWludHJpbi5oAC8qPT09LS0tLS0tLS0tLS0tLSBpbnZwY2lkaW50cmluLmggLSBJTlZQQ0lEIGludHJpbnNpYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKi8KCiNpZm5kZWYgX19JTU1JTlRSSU5fSAojZXJyb3IgIk5ldmVyIHVzZSA8aW52cGNpZGludHJpbi5oPiBkaXJlY3RseTsgaW5jbHVkZSA8aW1taW50cmluLmg+IGluc3RlYWQuIgojZW5kaWYKCiNpZm5kZWYgX19JTlZQQ0lESU5UUklOX0gKI2RlZmluZSBfX0lOVlBDSURJTlRSSU5fSAoKc3RhdGljIF9faW5saW5lX18gdm9pZAogIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgIF9fdGFyZ2V0X18oImludnBjaWQiKSkpCl9pbnZwY2lkKHVuc2lnbmVkIGludCBfX3R5cGUsIHZvaWQgKl9fZGVzY3JpcHRvcikgewogIF9fYnVpbHRpbl9pYTMyX2ludnBjaWQoX190eXBlLCBfX2Rlc2NyaXB0b3IpOwp9CgojZW5kaWYgLyogX19JTlZQQ0lESU5UUklOX0ggKi8KAC8qPT09LS0tLS0tLS0tLS0tLS0tLS0ga2V5bG9ja2VyaW50cmluLmggLSBLTCBJbnRyaW5zaWNzIC0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICoKICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQogKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAogKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CiAqCiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCiAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgogKgogKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgogKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgogKiBUSEUgU09GVFdBUkUuCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCgojaWZuZGVmIF9fSU1NSU5UUklOX0gKI2Vycm9yICJOZXZlciB1c2UgPGtleWxvY2tlcmludHJpbi5oPiBkaXJlY3RseTsgaW5jbHVkZSA8aW1taW50cmluLmg+IGluc3RlYWQuIgojZW5kaWYKCiNpZm5kZWYgX0tFWUxPQ0tFUklOVFJJTl9ICiNkZWZpbmUgX0tFWUxPQ0tFUklOVFJJTl9ICgojaWYgIShkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fU0NFX18pKSB8fCBfX2hhc19mZWF0dXJlKG1vZHVsZXMpIHx8ICAgICAgXAogICAgZGVmaW5lZChfX0tMX18pCgovKiBEZWZpbmUgdGhlIGRlZmF1bHQgYXR0cmlidXRlcyBmb3IgdGhlIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUuICovCiNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTIFwKICBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oImtsIiksXAogICAgICAgICAgICAgICAgIF9fbWluX3ZlY3Rvcl93aWR0aF9fKDEyOCkpKQoKLy8vIExvYWQgaW50ZXJuYWwgd3JhcHBpbmcga2V5IGZyb20gX19pbnRrZXksIF9fZW5rZXlfbG8gYW5kIF9fZW5rZXlfaGkuIF9fY3RsCi8vLyB3aWxsIGFzc2lnbmVkIHRvIEVBWCwgd2hjaCBzcGVjaWZpZXMgdGhlIEtleVNvdXJjZSBhbmQgd2hldGhlciBiYWNraW5nIHVwCi8vLyB0aGUga2V5IGlzIHBlcm1pdHRlZC4gVGhlIDI1Ni1iaXQgZW5jcnlwdGlvbiBrZXkgaXMgbG9hZGVkIGZyb20gdGhlIHR3bwovLy8gZXhwbGljaXQgb3BlcmFuZHMgKF9fZW5rZXlfbG8gYW5kIF9fZW5rZXlfaGkpLiBUaGUgMTI4LWJpdCBpbnRlZ3JpdHkga2V5IGlzCi8vLyBsb2FkZWQgZnJvbSB0aGUgaW1wbGljaXQgb3BlcmFuZCBYTU0wIHdoaWNoIGFzc2lnbmVkIGJ5IF9faW50a2V5LgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IExPQURJV0tFWSA8L2M+IGluc3RydWN0aW9ucy4KLy8vCi8vLyBcb3BlcmF0aW9uCi8vLyBJRiBDUEwgPiAwIC8vIExPQURLV0tFWSBvbmx5IGFsbG93ZWQgYXQgcmluZyAwIChzdXBlcnZpc29yIG1vZGUpCi8vLyAgIEdQICgwKQovLy8gRkkKLy8vIElGIOKAnExPQURJV0tFWSBleGl0aW5n4oCdIFZNIGV4ZWN1dGlvbiBjb250cm9sIHNldAovLy8gICBWTWV4aXQKLy8vIEZJCi8vLyBJRiBfX2N0bFs0OjFdID4gMSAvLyBSZXNlcnZlZCBLZXlTb3VyY2UgZW5jb2RpbmcgdXNlZAovLy8gICBHUCAoMCkKLy8vIEZJCi8vLyBJRiBfX2N0bFszMTo1XSAhPSAwIC8vIFJlc2VydmVkIGJpdCBpbiBfX2N0bCBpcyBzZXQKLy8vICAgR1AgKDApCi8vLyBGSQovLy8gSUYgX19jdGxbMF0gQU5EIChDUFVJRC4xOUguRUNYWzBdID09IDApIC8vIE5vQmFja3VwIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwYXJ0Ci8vLyAgIEdQICgwKQovLy8gRkkKLy8vIElGIChfX2N0bFs0OjFdID09IDEpIEFORCAoQ1BVSUQuMTlILkVDWFsxXSA9PSAwKSAvLyBLZXlTb3VyY2Ugb2YgMSBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGFydAovLy8gICBHUCAoMCkKLy8vIEZJCi8vLyBJRiAoX19jdGxbNDoxXSA9PSAwKSAvLyBLZXlTb3VyY2Ugb2YgMC4KLy8vICAgSVdLZXkuRW5jcnlwdGlvbiBLZXlbMTI3OjBdIDo9IF9fZW5rZXlfaGlbMTI3OjBdOgovLy8gICBJV0tleS5FbmNyeXB0aW9uIEtleVsyNTU6MTI4XSA6PSBfX2Vua2V5X2xvWzEyNzowXQovLy8gICBJV0tleS5JbnRlZ3JpdHlLZXlbMTI3OjBdIDo9IF9faW50a2V5WzEyNzowXQovLy8gICBJV0tleS5Ob0JhY2t1cCA6PSBfX2N0bFswXQovLy8gICBJV0tleS5LZXlTb3VyY2UgOj0gX19jdGxbNDoxXQovLy8gICBaRiA6PSAwCi8vLyBFTFNFIC8vIEtleVNvdXJjZSBvZiAxLiBTZWUgUkRTRUVEIGRlZmluaXRpb24gZm9yIGRldGFpbHMgb2YgcmFuZG9tbmVzcwovLy8gICBJRiBIV19OUk5EX0dFTi5yZWFkeSA9PSAxIC8vIEZ1bGwtZW50cm9weSByYW5kb20gZGF0YSBmcm9tIFJEU0VFRCB3YXMgcmVjZWl2ZWQKLy8vICAgICBJV0tleS5FbmNyeXB0aW9uIEtleVsxMjc6MF0gOj0gX19lbmtleV9oaVsxMjc6MF0gWE9SIEhXX05STkRfR0VOLmRhdGFbMTI3OjBdCi8vLyAgICAgSVdLZXkuRW5jcnlwdGlvbiBLZXlbMjU1OjEyOF0gOj0gX19lbmtleV9sb1sxMjc6MF0gWE9SIEhXX05STkRfR0VOLmRhdGFbMjU1OjEyOF0KLy8vICAgICBJV0tleS5FbmNyeXB0aW9uIEtleVsyNTU6MF0gOj0gX19lbmtleV9oaVsxMjc6MF06X19lbmtleV9sb1sxMjc6MF0gWE9SIEhXX05STkRfR0VOLmRhdGFbMjU1OjBdCi8vLyAgICAgSVdLZXkuSW50ZWdyaXR5S2V5WzEyNzowXSA6PSBfX2ludGtleVsxMjc6MF0gWE9SIEhXX05STkRfR0VOLmRhdGFbMzgzOjI1Nl0KLy8vICAgICBJV0tleS5Ob0JhY2t1cCA6PSBfX2N0bFswXQovLy8gICAgIElXS2V5LktleVNvdXJjZSA6PSBfX2N0bFs0OjFdCi8vLyAgICAgWkYgOj0gMAovLy8gICBFTFNFIC8vIFJhbmRvbSBkYXRhIHdhcyBub3QgcmV0dXJuZWQgZnJvbSBSRFNFRUQuIElXS2V5IHdhcyBub3QgbG9hZGVkCi8vLyAgICAgWkYgOj0gMQovLy8gICBGSQovLy8gRkkKLy8vIGRzdCA6PSBaRgovLy8gT0YgOj0gMAovLy8gU0YgOj0gMAovLy8gQUYgOj0gMAovLy8gUEYgOj0gMAovLy8gQ0YgOj0gMAovLy8gXGVuZG9wZXJhdGlvbgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fbG9hZGl3a2V5ICh1bnNpZ25lZCBpbnQgX19jdGwsIF9fbTEyOGkgX19pbnRrZXksCiAgICAgICAgICAgICAgIF9fbTEyOGkgX19lbmtleV9sbywgX19tMTI4aSBfX2Vua2V5X2hpKSB7CiAgX19idWlsdGluX2lhMzJfbG9hZGl3a2V5IChfX2ludGtleSwgX19lbmtleV9sbywgX19lbmtleV9oaSwgX19jdGwpOwp9CgovLy8gV3JhcCBhIDEyOC1iaXQgQUVTIGtleSBmcm9tIF9fa2V5IGludG8gYSBrZXkgaGFuZGxlIGFuZCBvdXRwdXQgaW4KLy8vICgoX19tMTI4aSopX19oKSB0byAoKF9fbTEyOGkqKV9faCkgKyAyICBhbmQgYSAzMi1iaXQgdmFsdWUgYXMgcmV0dXJuLgovLy8gVGhlIGV4cGxpY2l0IHNvdXJjZSBvcGVyYW5kIF9faHR5cGUgc3BlY2lmaWVzIGhhbmRsZSByZXN0cmljdGlvbnMuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gRU5DT0RFS0VZMTI4IDwvYz4gaW5zdHJ1Y3Rpb25zLgovLy8KLy8vIFxvcGVyYXRpb24KLy8vIElucHV0S2V5WzEyNzowXSA6PSBfX2tleVsxMjc6MF0KLy8vIEtleU1ldGFkYXRhWzI6MF0gOj0gX19odHlwZVsyOjBdCi8vLyBLZXlNZXRhZGF0YVsyMzozXSA6PSAwIC8vIFJlc2VydmVkIGZvciBmdXR1cmUgdXNhZ2UKLy8vIEtleU1ldGFkYXRhWzI3OjI0XSA6PSAwIC8vIEtleVR5cGUgaXMgQUVTLTEyOCAodmFsdWUgb2YgMCkKLy8vIEtleU1ldGFkYXRhWzEyNzoyOF0gOj0gMCAvLyBSZXNlcnZlZCBmb3IgZnV0dXJlIHVzYWdlCi8vLyBIYW5kbGVbMzgzOjBdIDo9IFdyYXBLZXkxMjgoSW5wdXRLZXlbMTI3OjBdLCBLZXlNZXRhZGF0YVsxMjc6MF0sCi8vLyAgICAgICAgICAgICAgICAgIElXS2V5LkludGVncml0eSBLZXlbMTI3OjBdLCBJV0tleS5FbmNyeXB0aW9uIEtleVsyNTU6MF0pCi8vLyBkc3RbMF0gOj0gSVdLZXkuTm9CYWNrdXAKLy8vIGRzdFs0OjFdIDo9IElXS2V5LktleVNvdXJjZVszOjBdCi8vLyBkc3RbMzE6NV0gOj0gMAovLy8gTUVNW19faCsxMjc6X19oXSA6PSBIYW5kbGVbMTI3OjBdICAgLy8gQUFECi8vLyBNRU1bX19oKzI1NTpfX2grMTI4XSA6PSBIYW5kbGVbMjU1OjEyOF0gLy8gSW50ZWdyaXR5IFRhZwovLy8gTUVNW19faCszODM6X19oKzI1Nl0gOj0gSGFuZGxlWzM4MzoyNTZdIC8vIENpcGhlclRleHQKLy8vIE9GIDo9IDAKLy8vIFNGIDo9IDAKLy8vIFpGIDo9IDAKLy8vIEFGIDo9IDAKLy8vIFBGIDo9IDAKLy8vIENGIDo9IDAKLy8vIFxlbmRvcGVyYXRpb24Kc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgaW50IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fZW5jb2Rla2V5MTI4X3UzMih1bnNpZ25lZCBpbnQgX19odHlwZSwgX19tMTI4aSBfX2tleSwgdm9pZCAqX19oKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2VuY29kZWtleTEyOF91MzIoX19odHlwZSwgKF9fdjJkaSlfX2tleSwgX19oKTsKfQoKLy8vIFdyYXAgYSAyNTYtYml0IEFFUyBrZXkgZnJvbSBfX2tleV9oaTpfX2tleV9sbyBpbnRvIGEga2V5IGhhbmRsZSwgdGhlbgovLy8gb3V0cHV0IGhhbmRsZSBpbiAoKF9fbTEyOGkqKV9faCkgdG8gKChfX20xMjhpKilfX2gpICsgMyBhbmQKLy8vIGEgMzItYml0IHZhbHVlIGFzIHJldHVybi4KLy8vIFRoZSBleHBsaWNpdCBzb3VyY2Ugb3BlcmFuZCBfX2h0eXBlIHNwZWNpZmllcyBoYW5kbGUgcmVzdHJpY3Rpb25zLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IEVOQ09ERUtFWTI1NiA8L2M+IGluc3RydWN0aW9ucy4KLy8vCi8vLyBcb3BlcmF0aW9uCi8vLyBJbnB1dEtleVsxMjc6MF0gOj0gX19rZXlfbG9bMTI3OjBdCi8vLyBJbnB1dEtleVsyNTU6MTI4XSA6PSBfX2tleV9oaVsyNTU6MTI4XQovLy8gS2V5TWV0YWRhdGFbMjowXSA6PSBfX2h0eXBlWzI6MF0KLy8vIEtleU1ldGFkYXRhWzIzOjNdIDo9IDAgLy8gUmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2FnZQovLy8gS2V5TWV0YWRhdGFbMjc6MjRdIDo9IDEgLy8gS2V5VHlwZSBpcyBBRVMtMjU2ICh2YWx1ZSBvZiAxKQovLy8gS2V5TWV0YWRhdGFbMTI3OjI4XSA6PSAwIC8vIFJlc2VydmVkIGZvciBmdXR1cmUgdXNhZ2UKLy8vIEhhbmRsZVs1MTE6MF0gOj0gV3JhcEtleTI1NihJbnB1dEtleVsyNTU6MF0sIEtleU1ldGFkYXRhWzEyNzowXSwKLy8vICAgICAgICAgICAgICAgICAgSVdLZXkuSW50ZWdyaXR5IEtleVsxMjc6MF0sIElXS2V5LkVuY3J5cHRpb24gS2V5WzI1NTowXSkKLy8vIGRzdFswXSA6PSBJV0tleS5Ob0JhY2t1cAovLy8gZHN0WzQ6MV0gOj0gSVdLZXkuS2V5U291cmNlWzM6MF0KLy8vIGRzdFszMTo1XSA6PSAwCi8vLyBNRU1bX19oKzEyNzpfX2hdICAgOj0gSGFuZGxlWzEyNzowXSAvLyBBQUQKLy8vIE1FTVtfX2grMjU1Ol9faCsxMjhdIDo9IEhhbmRsZVsyNTU6MTI4XSAvLyBUYWcKLy8vIE1FTVtfX2grMzgzOl9faCsyNTZdIDo9IEhhbmRsZVszODM6MjU2XSAvLyBDaXBoZXJUZXh0WzEyNzowXQovLy8gTUVNW19faCs1MTE6X19oKzM4NF0gOj0gSGFuZGxlWzUxMTozODRdIC8vIENpcGhlclRleHRbMjU1OjEyOF0KLy8vIE9GIDo9IDAKLy8vIFNGIDo9IDAKLy8vIFpGIDo9IDAKLy8vIEFGIDo9IDAKLy8vIFBGIDo9IDAKLy8vIENGIDo9IDAKLy8vIFxlbmRvcGVyYXRpb24Kc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgaW50IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fZW5jb2Rla2V5MjU2X3UzMih1bnNpZ25lZCBpbnQgX19odHlwZSwgX19tMTI4aSBfX2tleV9sbywgX19tMTI4aSBfX2tleV9oaSwKICAgICAgICAgICAgICAgICAgICAgdm9pZCAqX19oKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2VuY29kZWtleTI1Nl91MzIoX19odHlwZSwgKF9fdjJkaSlfX2tleV9sbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9fa2V5X2hpLCBfX2gpOwp9CgovLy8gVGhlIEFFU0VOQzEyOEtMIHBlcmZvcm1zIDEwIHJvdW5kcyBvZiBBRVMgdG8gZW5jcnlwdCB0aGUgX19pZGF0YSB1c2luZwovLy8gdGhlIDEyOC1iaXQga2V5IGluIHRoZSBoYW5kbGUgZnJvbSB0aGUgX19oLiBJdCBzdG9yZXMgdGhlIHJlc3VsdCBpbiB0aGUKLy8vIF9fb2RhdGEuIEFuZCByZXR1cm4gdGhlIGFmZmVjdGVkIFpGIGZsYWcgc3RhdHVzLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IEFFU0VOQzEyOEtMIDwvYz4gaW5zdHJ1Y3Rpb25zLgovLy8KLy8vIFxvcGVyYXRpb24KLy8vIEhhbmRsZVszODM6MF0gOj0gTUVNW19faCszODM6X19oXSAvLyBMb2FkIGlzIG5vdCBndWFyYW50ZWVkIHRvIGJlIGF0b21pYy4KLy8vIElsbGVnYWxIYW5kbGUgOj0gKCBIYW5kbGVSZXNlcnZlZEJpdFNldCAoSGFuZGxlWzM4MzowXSkgfHwKLy8vICAgICAgICAgICAgICAgICAgICAoSGFuZGxlWzEyNzowXSBBTkQgKENQTCA+IDApKSB8fAovLy8gICAgICAgICAgICAgICAgICAgIEhhbmRsZVszODM6MjU2XSB8fAovLy8gICAgICAgICAgICAgICAgICAgIEhhbmRsZUtleVR5cGUgKEhhbmRsZVszODM6MF0pICE9IEhBTkRMRV9LRVlfVFlQRV9BRVMxMjggKQovLy8gSUYgKElsbGVnYWxIYW5kbGUpCi8vLyAgIFpGIDo9IDEKLy8vIEVMU0UKLy8vICAgKFVud3JhcHBlZEtleSwgQXV0aGVudGljKSA6PSBVbndyYXBLZXlBbmRBdXRoZW50aWNhdGUzODQgKEhhbmRsZVszODM6MF0sIElXS2V5KQovLy8gICBJRiAoQXV0aGVudGljID09IDApCi8vLyAgICAgWkYgOj0gMQovLy8gICBFTFNFCi8vLyAgICAgTUVNW19fb2RhdGErMTI3Ol9fb2RhdGFdIDo9IEFFUzEyOEVuY3J5cHQgKF9faWRhdGFbMTI3OjBdLCBVbndyYXBwZWRLZXkpCi8vLyAgICAgWkYgOj0gMAovLy8gICBGSQovLy8gRkkKLy8vIGRzdCA6PSBaRgovLy8gT0YgOj0gMAovLy8gU0YgOj0gMAovLy8gQUYgOj0gMAovLy8gUEYgOj0gMAovLy8gQ0YgOj0gMAovLy8gXGVuZG9wZXJhdGlvbgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBjaGFyIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fYWVzZW5jMTI4a2xfdTgoX19tMTI4aSogX19vZGF0YSwgX19tMTI4aSBfX2lkYXRhLCBjb25zdCB2b2lkICpfX2gpIHsKICByZXR1cm4gX19idWlsdGluX2lhMzJfYWVzZW5jMTI4a2xfdTgoKF9fdjJkaSAqKV9fb2RhdGEsIChfX3YyZGkpX19pZGF0YSwgX19oKTsKfQoKLy8vIFRoZSBBRVNFTkMyNTZLTCBwZXJmb3JtcyAxNCByb3VuZHMgb2YgQUVTIHRvIGVuY3J5cHQgdGhlIF9faWRhdGEgdXNpbmcKLy8vIHRoZSAyNTYtYml0IGtleSBpbiB0aGUgaGFuZGxlIGZyb20gdGhlIF9faC4gSXQgc3RvcmVzIHRoZSByZXN1bHQgaW4gdGhlCi8vLyBfX29kYXRhLiBBbmQgcmV0dXJuIHRoZSBhZmZlY3RlZCBaRiBmbGFnIHN0YXR1cy4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBBRVNFTkMyNTZLTCA8L2M+IGluc3RydWN0aW9ucy4KLy8vCi8vLyBcb3BlcmF0aW9uCi8vLyBIYW5kbGVbNTExOjBdIDo9IE1FTVtfX2grNTExOl9faF0gLy8gTG9hZCBpcyBub3QgZ3VhcmFudGVlZCB0byBiZSBhdG9taWMuCi8vLyBJbGxlZ2FsSGFuZGxlIDo9ICggSGFuZGxlUmVzZXJ2ZWRCaXRTZXQgKEhhbmRsZVs1MTE6MF0pIHx8Ci8vLyAgICAgICAgICAgICAgICAgICAgKEhhbmRsZVsxMjc6MF0gQU5EIChDUEwgPiAwKSkgfHwKLy8vICAgICAgICAgICAgICAgICAgICBIYW5kbGVbMjU1OjEyOF0gfHwKLy8vICAgICAgICAgICAgICAgICAgICBIYW5kbGVLZXlUeXBlIChIYW5kbGVbNTExOjBdKSAhPSBIQU5ETEVfS0VZX1RZUEVfQUVTMjU2ICkKLy8vIElGIChJbGxlZ2FsSGFuZGxlKQovLy8gICBaRiA6PSAxCi8vLyAgIE1FTVtfX29kYXRhKzEyNzpfX29kYXRhXSA6PSAwCi8vLyBFTFNFCi8vLyAgIChVbndyYXBwZWRLZXksIEF1dGhlbnRpYykgOj0gVW53cmFwS2V5QW5kQXV0aGVudGljYXRlNTEyIChIYW5kbGVbNTExOjBdLCBJV0tleSkKLy8vICAgSUYgKEF1dGhlbnRpYyA9PSAwKQovLy8gICAgIFpGIDo9IDEKLy8vICAgICBNRU1bX19vZGF0YSsxMjc6X19vZGF0YV0gOj0gMAovLy8gICBFTFNFCi8vLyAgICAgTUVNW19fb2RhdGErMTI3Ol9fb2RhdGFdIDo9IEFFUzI1NkVuY3J5cHQgKF9faWRhdGFbMTI3OjBdLCBVbndyYXBwZWRLZXkpCi8vLyAgICAgWkYgOj0gMAovLy8gICBGSQovLy8gRkkKLy8vIGRzdCA6PSBaRgovLy8gT0YgOj0gMAovLy8gU0YgOj0gMAovLy8gQUYgOj0gMAovLy8gUEYgOj0gMAovLy8gQ0YgOj0gMAovLy8gXGVuZG9wZXJhdGlvbgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBjaGFyIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fYWVzZW5jMjU2a2xfdTgoX19tMTI4aSogX19vZGF0YSwgX19tMTI4aSBfX2lkYXRhLCBjb25zdCB2b2lkICpfX2gpIHsKICByZXR1cm4gX19idWlsdGluX2lhMzJfYWVzZW5jMjU2a2xfdTgoKF9fdjJkaSAqKV9fb2RhdGEsIChfX3YyZGkpX19pZGF0YSwgX19oKTsKfQoKLy8vIFRoZSBBRVNERUMxMjhLTCBwZXJmb3JtcyAxMCByb3VuZHMgb2YgQUVTIHRvIGRlY3J5cHQgdGhlIF9faWRhdGEgdXNpbmcKLy8vIHRoZSAxMjgtYml0IGtleSBpbiB0aGUgaGFuZGxlIGZyb20gdGhlIF9faC4gSXQgc3RvcmVzIHRoZSByZXN1bHQgaW4gdGhlCi8vLyBfX29kYXRhLiBBbmQgcmV0dXJuIHRoZSBhZmZlY3RlZCBaRiBmbGFnIHN0YXR1cy4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBBRVNERUMxMjhLTCA8L2M+IGluc3RydWN0aW9ucy4KLy8vCi8vLyBcb3BlcmF0aW9uCi8vLyBIYW5kbGVbMzgzOjBdIDo9IE1FTVtfX2grMzgzOl9faF0gLy8gTG9hZCBpcyBub3QgZ3VhcmFudGVlZCB0byBiZSBhdG9taWMuCi8vLyBJbGxlZ2FsSGFuZGxlIDo9IChIYW5kbGVSZXNlcnZlZEJpdFNldCAoSGFuZGxlWzM4MzowXSkgfHwKLy8vICAgICAgICAgICAgICAgICAgKEhhbmRsZVsxMjc6MF0gQU5EIChDUEwgPiAwKSkgfHwKLy8vICAgICAgICAgICAgICAgICAgSGFuZGxlWzM4MzoyNTZdIHx8Ci8vLyAgICAgICAgICAgICAgICAgIEhhbmRsZUtleVR5cGUgKEhhbmRsZVszODM6MF0pICE9IEhBTkRMRV9LRVlfVFlQRV9BRVMxMjgpCi8vLyBJRiAoSWxsZWdhbEhhbmRsZSkKLy8vICAgWkYgOj0gMQovLy8gICBNRU1bX19vZGF0YSsxMjc6X19vZGF0YV0gOj0gMAovLy8gRUxTRQovLy8gICAoVW53cmFwcGVkS2V5LCBBdXRoZW50aWMpIDo9IFVud3JhcEtleUFuZEF1dGhlbnRpY2F0ZTM4NCAoSGFuZGxlWzM4MzowXSwgSVdLZXkpCi8vLyAgIElGIChBdXRoZW50aWMgPT0gMCkKLy8vICAgICBaRiA6PSAxCi8vLyAgICAgTUVNW19fb2RhdGErMTI3Ol9fb2RhdGFdIDo9IDAKLy8vICAgRUxTRQovLy8gICAgIE1FTVtfX29kYXRhKzEyNzpfX29kYXRhXSA6PSBBRVMxMjhEZWNyeXB0IChfX2lkYXRhWzEyNzowXSwgVW53cmFwcGVkS2V5KQovLy8gICAgIFpGIDo9IDAKLy8vICAgRkkKLy8vIEZJCi8vLyBkc3QgOj0gWkYKLy8vIE9GIDo9IDAKLy8vIFNGIDo9IDAKLy8vIEFGIDo9IDAKLy8vIFBGIDo9IDAKLy8vIENGIDo9IDAKLy8vIFxlbmRvcGVyYXRpb24Kc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgY2hhciBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2Flc2RlYzEyOGtsX3U4KF9fbTEyOGkqIF9fb2RhdGEsIF9fbTEyOGkgX19pZGF0YSwgY29uc3Qgdm9pZCAqX19oKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2Flc2RlYzEyOGtsX3U4KChfX3YyZGkgKilfX29kYXRhLCAoX192MmRpKV9faWRhdGEsIF9faCk7Cn0KCi8vLyBUaGUgQUVTREVDMjU2S0wgcGVyZm9ybXMgMTAgcm91bmRzIG9mIEFFUyB0byBkZWNyeXB0IHRoZSBfX2lkYXRhIHVzaW5nCi8vLyB0aGUgMjU2LWJpdCBrZXkgaW4gdGhlIGhhbmRsZSBmcm9tIHRoZSBfX2guIEl0IHN0b3JlcyB0aGUgcmVzdWx0IGluIHRoZQovLy8gX19vZGF0YS4gQW5kIHJldHVybiB0aGUgYWZmZWN0ZWQgWkYgZmxhZyBzdGF0dXMuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gQUVTREVDMjU2S0wgPC9jPiBpbnN0cnVjdGlvbnMuCi8vLwovLy8gXG9wZXJhdGlvbgovLy8gSGFuZGxlWzUxMTowXSA6PSBNRU1bX19oKzUxMTpfX2hdCi8vLyBJbGxlZ2FsSGFuZGxlIDo9IChIYW5kbGVSZXNlcnZlZEJpdFNldCAoSGFuZGxlWzUxMTowXSkgfHwKLy8vICAgICAgICAgICAgICAgICAgIChIYW5kbGVbMTI3OjBdIEFORCAoQ1BMID4gMCkpIHx8Ci8vLyAgICAgICAgICAgICAgICAgICBIYW5kbGVbMzgzOjI1Nl0gfHwKLy8vICAgICAgICAgICAgICAgICAgIEhhbmRsZUtleVR5cGUgKEhhbmRsZVs1MTE6MF0pICE9IEhBTkRMRV9LRVlfVFlQRV9BRVMyNTYpCi8vLyBJRiAoSWxsZWdhbEhhbmRsZSkKLy8vICAgWkYgOj0gMQovLy8gICBNRU1bX19vZGF0YSsxMjc6X19vZGF0YV0gOj0gMAovLy8gRUxTRQovLy8gICAoVW53cmFwcGVkS2V5LCBBdXRoZW50aWMpIDo9IFVud3JhcEtleUFuZEF1dGhlbnRpY2F0ZTUxMiAoSGFuZGxlWzUxMTowXSwgSVdLZXkpCi8vLyAgIElGIChBdXRoZW50aWMgPT0gMCkKLy8vICAgICBaRiA6PSAxCi8vLyAgICAgTUVNW19fb2RhdGErMTI3Ol9fb2RhdGFdIDo9IDAKLy8vICAgRUxTRQovLy8gICAgIE1FTVtfX29kYXRhKzEyNzpfX29kYXRhXSA6PSBBRVMyNTZEZWNyeXB0IChfX2lkYXRhWzEyNzowXSwgVW53cmFwcGVkS2V5KQovLy8gICAgIFpGIDo9IDAKLy8vICAgRkkKLy8vIEZJCi8vLyBkc3QgOj0gWkYKLy8vIE9GIDo9IDAKLy8vIFNGIDo9IDAKLy8vIEFGIDo9IDAKLy8vIFBGIDo9IDAKLy8vIENGIDo9IDAKLy8vIFxlbmRvcGVyYXRpb24Kc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgY2hhciBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2Flc2RlYzI1NmtsX3U4KF9fbTEyOGkqIF9fb2RhdGEsIF9fbTEyOGkgX19pZGF0YSwgY29uc3Qgdm9pZCAqX19oKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2Flc2RlYzI1NmtsX3U4KChfX3YyZGkgKilfX29kYXRhLCAoX192MmRpKV9faWRhdGEsIF9faCk7Cn0KCiN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlMKCiNlbmRpZiAvKiAhKGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19TQ0VfXykpIHx8IF9faGFzX2ZlYXR1cmUobW9kdWxlcykgXAogICAgICAgICAgfHwgZGVmaW5lZChfX0tMX18pICovCgojaWYgIShkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fU0NFX18pKSB8fCBfX2hhc19mZWF0dXJlKG1vZHVsZXMpIHx8ICAgICAgXAogICAgZGVmaW5lZChfX1dJREVLTF9fKQoKLyogRGVmaW5lIHRoZSBkZWZhdWx0IGF0dHJpYnV0ZXMgZm9yIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlLiAqLwojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUyBcCiAgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJrbCx3aWRla2wiKSxcCiAgICAgICAgICAgICAgICAgX19taW5fdmVjdG9yX3dpZHRoX18oMTI4KSkpCgovLy8gRW5jcnlwdCBfX2lkYXRhWzBdIHRvIF9faWRhdGFbN10gdXNpbmcgMTI4LWJpdCBBRVMga2V5IGluZGljYXRlZCBieSBoYW5kbGUKLy8vIGF0IF9faCBhbmQgc3RvcmUgZWFjaCByZXN1bHRhbnQgYmxvY2sgYmFjayBmcm9tIF9fb2RhdGEgdG8gX19vZGF0YSs3LiBBbmQKLy8vIHJldHVybiB0aGUgYWZmZWN0ZWQgWkYgZmxhZyBzdGF0dXMuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gQUVTRU5DV0lERTEyOEtMIDwvYz4gaW5zdHJ1Y3Rpb25zLgovLy8KLy8vIFxvcGVyYXRpb24KLy8vIEhhbmRsZSA6PSBNRU1bX19oKzM4MzpfX2hdCi8vLyBJbGxlZ2FsSGFuZGxlIDo9ICggSGFuZGxlUmVzZXJ2ZWRCaXRTZXQgKEhhbmRsZVszODM6MF0pIHx8Ci8vLyAgICAgICAgICAgICAgICAgICAgKEhhbmRsZVsxMjc6MF0gQU5EIChDUEwgPiAwKSkgfHwKLy8vICAgICAgICAgICAgICAgICAgICBIYW5kbGVbMjU1OjEyOF0gfHwKLy8vICAgICAgICAgICAgICAgICAgICBIYW5kbGVLZXlUeXBlIChIYW5kbGVbMzgzOjBdKSAhPSBIQU5ETEVfS0VZX1RZUEVfQUVTMTI4ICkKLy8vIElGIChJbGxlZ2FsSGFuZGxlKQovLy8gICBaRiA6PSAxCi8vLyAgIEZPUiBpIDo9IDAgdG8gNwovLy8gICAgIF9fb2RhdGFbaV0gOj0gMAovLy8gICBFTkRGT1IKLy8vIEVMU0UKLy8vICAgKFVud3JhcHBlZEtleSwgQXV0aGVudGljKSA6PSBVbndyYXBLZXlBbmRBdXRoZW50aWNhdGUzODQgKEhhbmRsZVszODM6MF0sIElXS2V5KQovLy8gICBJRiBBdXRoZW50aWMgPT0gMAovLy8gICAgIFpGIDo9IDEKLy8vICAgICBGT1IgaSA6PSAwIHRvIDcKLy8vICAgICAgIF9fb2RhdGFbaV0gOj0gMAovLy8gICAgIEVOREZPUgovLy8gICBFTFNFCi8vLyAgICAgRk9SIGkgOj0gMCB0byA3Ci8vLyAgICAgICBfX29kYXRhW2ldIDo9IEFFUzEyOEVuY3J5cHQgKF9faWRhdGFbaV0sIFVud3JhcHBlZEtleSkKLy8vICAgICBFTkRGT1IKLy8vICAgICBaRiA6PSAwCi8vLyAgIEZJCi8vLyBGSQovLy8gZHN0IDo9IFpGCi8vLyBPRiA6PSAwCi8vLyBTRiA6PSAwCi8vLyBBRiA6PSAwCi8vLyBQRiA6PSAwCi8vLyBDRiA6PSAwCi8vLyBcZW5kb3BlcmF0aW9uCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGNoYXIgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9hZXNlbmN3aWRlMTI4a2xfdTgoX19tMTI4aSBfX29kYXRhWzhdLCBjb25zdCBfX20xMjhpIF9faWRhdGFbOF0sIGNvbnN0IHZvaWQqIF9faCkgewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9hZXNlbmN3aWRlMTI4a2xfdTgoKF9fdjJkaSAqKV9fb2RhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgX192MmRpICopX19pZGF0YSwgX19oKTsKfQoKLy8vIEVuY3J5cHQgX19pZGF0YVswXSB0byBfX2lkYXRhWzddIHVzaW5nIDI1Ni1iaXQgQUVTIGtleSBpbmRpY2F0ZWQgYnkgaGFuZGxlCi8vLyBhdCBfX2ggYW5kIHN0b3JlIGVhY2ggcmVzdWx0YW50IGJsb2NrIGJhY2sgZnJvbSBfX29kYXRhIHRvIF9fb2RhdGErNy4gQW5kCi8vLyByZXR1cm4gdGhlIGFmZmVjdGVkIFpGIGZsYWcgc3RhdHVzLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IEFFU0VOQ1dJREUyNTZLTCA8L2M+IGluc3RydWN0aW9ucy4KLy8vCi8vLyBcb3BlcmF0aW9uCi8vLyBIYW5kbGVbNTExOjBdIDo9IE1FTVtfX2grNTExOl9faF0KLy8vIElsbGVnYWxIYW5kbGUgOj0gKCBIYW5kbGVSZXNlcnZlZEJpdFNldCAoSGFuZGxlWzUxMTowXSkgfHwKLy8vICAgICAgICAgICAgICAgICAgICAoSGFuZGxlWzEyNzowXSBBTkQgKENQTCA+IDApKSB8fAovLy8gICAgICAgICAgICAgICAgICAgIEhhbmRsZVsyNTU6MTI4XSB8fAovLy8gICAgICAgICAgICAgICAgICAgIEhhbmRsZUtleVR5cGUgKEhhbmRsZVs1MTE6MF0pICE9IEhBTkRMRV9LRVlfVFlQRV9BRVM1MTIgKQovLy8gSUYgKElsbGVnYWxIYW5kbGUpCi8vLyAgIFpGIDo9IDEKLy8vICAgRk9SIGkgOj0gMCB0byA3Ci8vLyAgICAgX19vZGF0YVtpXSA6PSAwCi8vLyAgIEVOREZPUgovLy8gRUxTRQovLy8gICAoVW53cmFwcGVkS2V5LCBBdXRoZW50aWMpIDo9IFVud3JhcEtleUFuZEF1dGhlbnRpY2F0ZTUxMiAoSGFuZGxlWzUxMTowXSwgSVdLZXkpCi8vLyAgIElGIEF1dGhlbnRpYyA9PSAwCi8vLyAgICAgWkYgOj0gMQovLy8gICAgIEZPUiBpIDo9IDAgdG8gNwovLy8gICAgICAgX19vZGF0YVtpXSA6PSAwCi8vLyAgICAgRU5ERk9SCi8vLyAgIEVMU0UKLy8vICAgICBGT1IgaSA6PSAwIHRvIDcKLy8vICAgICAgIF9fb2RhdGFbaV0gOj0gQUVTMjU2RW5jcnlwdCAoX19pZGF0YVtpXSwgVW53cmFwcGVkS2V5KQovLy8gICAgIEVOREZPUgovLy8gICAgIFpGIDo9IDAKLy8vICAgRkkKLy8vIEZJCi8vLyBkc3QgOj0gWkYKLy8vIE9GIDo9IDAKLy8vIFNGIDo9IDAKLy8vIEFGIDo9IDAKLy8vIFBGIDo9IDAKLy8vIENGIDo9IDAKLy8vIFxlbmRvcGVyYXRpb24Kc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgY2hhciBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2Flc2VuY3dpZGUyNTZrbF91OChfX20xMjhpIF9fb2RhdGFbOF0sIGNvbnN0IF9fbTEyOGkgX19pZGF0YVs4XSwgY29uc3Qgdm9pZCogX19oKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2Flc2VuY3dpZGUyNTZrbF91OCgoX192MmRpICopX19vZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBfX3YyZGkgKilfX2lkYXRhLCBfX2gpOwp9CgovLy8gRGVjcnlwdCBfX2lkYXRhWzBdIHRvIF9faWRhdGFbN10gdXNpbmcgMTI4LWJpdCBBRVMga2V5IGluZGljYXRlZCBieSBoYW5kbGUKLy8vIGF0IF9faCBhbmQgc3RvcmUgZWFjaCByZXN1bHRhbnQgYmxvY2sgYmFjayBmcm9tIF9fb2RhdGEgdG8gX19vZGF0YSs3LiBBbmQKLy8vIHJldHVybiB0aGUgYWZmZWN0ZWQgWkYgZmxhZyBzdGF0dXMuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gQUVTREVDV0lERTEyOEtMIDwvYz4gaW5zdHJ1Y3Rpb25zLgovLy8KLy8vIFxvcGVyYXRpb24KLy8vIEhhbmRsZVszODM6MF0gOj0gTUVNW19faCszODM6X19oXQovLy8gSWxsZWdhbEhhbmRsZSA6PSAoIEhhbmRsZVJlc2VydmVkQml0U2V0IChIYW5kbGVbMzgzOjBdKSB8fAovLy8gICAgICAgICAgICAgICAgICAgIChIYW5kbGVbMTI3OjBdIEFORCAoQ1BMID4gMCkpIHx8Ci8vLyAgICAgICAgICAgICAgICAgICAgSGFuZGxlWzI1NToxMjhdIHx8Ci8vLyAgICAgICAgICAgICAgICAgICAgSGFuZGxlS2V5VHlwZSAoSGFuZGxlKSAhPSBIQU5ETEVfS0VZX1RZUEVfQUVTMTI4ICkKLy8vIElGIChJbGxlZ2FsSGFuZGxlKQovLy8gICBaRiA6PSAxCi8vLyAgIEZPUiBpIDo9IDAgdG8gNwovLy8gICAgIF9fb2RhdGFbaV0gOj0gMAovLy8gICBFTkRGT1IKLy8vIEVMU0UKLy8vICAgKFVud3JhcHBlZEtleSwgQXV0aGVudGljKSA6PSBVbndyYXBLZXlBbmRBdXRoZW50aWNhdGUzODQgKEhhbmRsZVszODM6MF0sIElXS2V5KQovLy8gICBJRiBBdXRoZW50aWMgPT0gMAovLy8gICAgIFpGIDo9IDEKLy8vICAgICBGT1IgaSA6PSAwIHRvIDcKLy8vICAgICAgIF9fb2RhdGFbaV0gOj0gMAovLy8gICAgIEVOREZPUgovLy8gICBFTFNFCi8vLyAgICAgRk9SIGkgOj0gMCB0byA3Ci8vLyAgICAgICBfX29kYXRhW2ldIDo9IEFFUzEyOERlY3J5cHQgKF9faWRhdGFbaV0sIFVud3JhcHBlZEtleSkKLy8vICAgICBFTkRGT1IKLy8vICAgICBaRiA6PSAwCi8vLyAgIEZJCi8vLyBGSQovLy8gZHN0IDo9IFpGCi8vLyBPRiA6PSAwCi8vLyBTRiA6PSAwCi8vLyBBRiA6PSAwCi8vLyBQRiA6PSAwCi8vLyBDRiA6PSAwCi8vLyBcZW5kb3BlcmF0aW9uCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGNoYXIgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9hZXNkZWN3aWRlMTI4a2xfdTgoX19tMTI4aSBfX29kYXRhWzhdLCBjb25zdCBfX20xMjhpIF9faWRhdGFbOF0sIGNvbnN0IHZvaWQqIF9faCkgewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9hZXNkZWN3aWRlMTI4a2xfdTgoKF9fdjJkaSAqKV9fb2RhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgX192MmRpICopX19pZGF0YSwgX19oKTsKfQoKLy8vIERlY3J5cHQgX19pZGF0YVswXSB0byBfX2lkYXRhWzddIHVzaW5nIDI1Ni1iaXQgQUVTIGtleSBpbmRpY2F0ZWQgYnkgaGFuZGxlCi8vLyBhdCBfX2ggYW5kIHN0b3JlIGVhY2ggcmVzdWx0YW50IGJsb2NrIGJhY2sgZnJvbSBfX29kYXRhIHRvIF9fb2RhdGErNy4gQW5kCi8vLyByZXR1cm4gdGhlIGFmZmVjdGVkIFpGIGZsYWcgc3RhdHVzLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IEFFU0RFQ1dJREUyNTZLTCA8L2M+IGluc3RydWN0aW9ucy4KLy8vCi8vLyBcb3BlcmF0aW9uCi8vLyBIYW5kbGVbNTExOjBdIDo9IE1FTVtfX2grNTExOl9faF0KLy8vIElsbGVnYWxIYW5kbGUgPSAoIEhhbmRsZVJlc2VydmVkQml0U2V0IChIYW5kbGVbNTExOjBdKSB8fAovLy8gICAgICAgICAgICAgICAgICAgKEhhbmRsZVsxMjc6MF0gQU5EIChDUEwgPiAwKSkgfHwKLy8vICAgICAgICAgICAgICAgICAgIEhhbmRsZVsyNTU6MTI4XSB8fAovLy8gICAgICAgICAgICAgICAgICAgSGFuZGxlS2V5VHlwZSAoSGFuZGxlKSAhPSBIQU5ETEVfS0VZX1RZUEVfQUVTNTEyICkKLy8vIElmIChJbGxlZ2FsSGFuZGxlKQovLy8gICBaRiA6PSAxCi8vLyAgIEZPUiBpIDo9IDAgdG8gNwovLy8gICAgIF9fb2RhdGFbaV0gOj0gMAovLy8gICBFTkRGT1IKLy8vIEVMU0UKLy8vICAgKFVud3JhcHBlZEtleSwgQXV0aGVudGljKSA6PSBVbndyYXBLZXlBbmRBdXRoZW50aWNhdGU1MTIgKEhhbmRsZVs1MTE6MF0sIElXS2V5KQovLy8gICBJRiBBdXRoZW50aWMgPT0gMAovLy8gICAgIFpGIDo9IDEKLy8vICAgICBGT1IgaSA6PSAwIHRvIDcKLy8vICAgICAgIF9fb2RhdGFbaV0gOj0gMAovLy8gICAgIEVOREZPUgovLy8gICBFTFNFCi8vLyAgICAgRk9SIGkgOj0gMCB0byA3Ci8vLyAgICAgICBfX29kYXRhW2ldIDo9IEFFUzI1NkRlY3J5cHQgKF9faWRhdGFbaV0sIFVud3JhcHBlZEtleSkKLy8vICAgICBFTkRGT1IKLy8vICAgICBaRiA6PSAwCi8vLyAgIEZJCi8vLyBGSQovLy8gZHN0IDo9IFpGCi8vLyBPRiA6PSAwCi8vLyBTRiA6PSAwCi8vLyBBRiA6PSAwCi8vLyBQRiA6PSAwCi8vLyBDRiA6PSAwCi8vLyBcZW5kb3BlcmF0aW9uCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGNoYXIgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9hZXNkZWN3aWRlMjU2a2xfdTgoX19tMTI4aSBfX29kYXRhWzhdLCBjb25zdCBfX20xMjhpIF9faWRhdGFbOF0sIGNvbnN0IHZvaWQqIF9faCkgewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9hZXNkZWN3aWRlMjU2a2xfdTgoKF9fdjJkaSAqKV9fb2RhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgX192MmRpICopX19pZGF0YSwgX19oKTsKfQoKI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUwoKI2VuZGlmIC8qICEoZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX1NDRV9fKSkgfHwgX19oYXNfZmVhdHVyZShtb2R1bGVzKSBcCiAgICAgICAgICB8fCBkZWZpbmVkKF9fV0lERUtMX18pICovCgojZW5kaWYgLyogX0tFWUxPQ0tFUklOVFJJTl9IICovCgAvLz09PS0tLSBvcGVuY2wtYy5oIC0gT3BlbkNMIEMgbGFuZ3VhZ2UgYnVpbHRpbiBmdW5jdGlvbiBoZWFkZXIgLS0tLS0tLS0tLS09PT0vLwovLwovLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgovLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgovLwovLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwoKI2lmbmRlZiBfT1BFTkNMX0hfCiNkZWZpbmUgX09QRU5DTF9IXwoKI2luY2x1ZGUgIm9wZW5jbC1jLWJhc2UuaCIKCiNpZiBkZWZpbmVkKF9fT1BFTkNMX0NQUF9WRVJTSU9OX18pIHx8IChfX09QRU5DTF9DX1ZFUlNJT05fXyA+PSBDTF9WRVJTSU9OXzJfMCkKI2lmbmRlZiBjbF9raHJfZGVwdGhfaW1hZ2VzCiNkZWZpbmUgY2xfa2hyX2RlcHRoX2ltYWdlcwojZW5kaWYgLy9jbF9raHJfZGVwdGhfaW1hZ2VzCiNlbmRpZiAvL2RlZmluZWQoX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXykgfHwgKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fMl8wKQoKI2lmIF9fT1BFTkNMX0NfVkVSU0lPTl9fIDwgQ0xfVkVSU0lPTl8yXzAKI2lmZGVmIGNsX2tocl8zZF9pbWFnZV93cml0ZXMKI3ByYWdtYSBPUEVOQ0wgRVhURU5TSU9OIGNsX2tocl8zZF9pbWFnZV93cml0ZXMgOiBlbmFibGUKI2VuZGlmIC8vY2xfa2hyXzNkX2ltYWdlX3dyaXRlcwojZW5kaWYgLy9fX09QRU5DTF9DX1ZFUlNJT05fXyA8IENMX1ZFUlNJT05fMl8wCgojaWYgKGRlZmluZWQoX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXykgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIChfX09QRU5DTF9DX1ZFUlNJT05fXyA+PSBDTF9WRVJTSU9OXzFfMikpICYmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgKGRlZmluZWQoX19TUElSX18pIHx8IGRlZmluZWQoX19TUElSVl9fKSkKI3ByYWdtYSBPUEVOQ0wgRVhURU5TSU9OIGNsX2ludGVsX3BsYW5hcl95dXYgOiBiZWdpbgojcHJhZ21hIE9QRU5DTCBFWFRFTlNJT04gY2xfaW50ZWxfcGxhbmFyX3l1diA6IGVuZAojZW5kaWYgLy8gKGRlZmluZWQoX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXykgfHwKICAgICAgIC8vICAoX19PUEVOQ0xfQ19WRVJTSU9OX18gPj0gQ0xfVkVSU0lPTl8xXzIpKSAmJgogICAgICAgLy8gKGRlZmluZWQoX19TUElSX18pIHx8IGRlZmluZWQoX19TUElSVl9fKSkKCiNkZWZpbmUgX19vdmxkIF9fYXR0cmlidXRlX18oKG92ZXJsb2FkYWJsZSkpCiNkZWZpbmUgX19jb252IF9fYXR0cmlidXRlX18oKGNvbnZlcmdlbnQpKQoKLy8gT3B0aW1pemF0aW9ucwojZGVmaW5lIF9fcHVyZWZuIF9fYXR0cmlidXRlX18oKHB1cmUpKQojZGVmaW5lIF9fY25mbiBfX2F0dHJpYnV0ZV9fKChjb25zdCkpCgoKLy8gT3BlbkNMIHYxLjEvMS4yLzIuMCBzNi4yLjMgLSBFeHBsaWNpdCBjb252ZXJzaW9ucwoKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcl9ydGUoY2hhcik7CmNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXJfc2F0X3J0ZShjaGFyKTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcl9ydHooY2hhcik7CmNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXJfc2F0X3J0eihjaGFyKTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcl9ydHAoY2hhcik7CmNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXJfc2F0X3J0cChjaGFyKTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcl9ydG4oY2hhcik7CmNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXJfc2F0X3J0bihjaGFyKTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcihjaGFyKTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcl9zYXQoY2hhcik7CmNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXJfcnRlKHVjaGFyKTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcl9zYXRfcnRlKHVjaGFyKTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcl9ydHoodWNoYXIpOwpjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyX3NhdF9ydHoodWNoYXIpOwpjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyX3J0cCh1Y2hhcik7CmNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXJfc2F0X3J0cCh1Y2hhcik7CmNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXJfcnRuKHVjaGFyKTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcl9zYXRfcnRuKHVjaGFyKTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcih1Y2hhcik7CmNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXJfc2F0KHVjaGFyKTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcl9ydGUoc2hvcnQpOwpjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyX3NhdF9ydGUoc2hvcnQpOwpjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyX3J0eihzaG9ydCk7CmNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXJfc2F0X3J0eihzaG9ydCk7CmNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXJfcnRwKHNob3J0KTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcl9zYXRfcnRwKHNob3J0KTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcl9ydG4oc2hvcnQpOwpjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyX3NhdF9ydG4oc2hvcnQpOwpjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyKHNob3J0KTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcl9zYXQoc2hvcnQpOwpjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyX3J0ZSh1c2hvcnQpOwpjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyX3NhdF9ydGUodXNob3J0KTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcl9ydHoodXNob3J0KTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcl9zYXRfcnR6KHVzaG9ydCk7CmNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXJfcnRwKHVzaG9ydCk7CmNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXJfc2F0X3J0cCh1c2hvcnQpOwpjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyX3J0bih1c2hvcnQpOwpjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyX3NhdF9ydG4odXNob3J0KTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcih1c2hvcnQpOwpjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyX3NhdCh1c2hvcnQpOwpjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyX3J0ZShpbnQpOwpjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyX3NhdF9ydGUoaW50KTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcl9ydHooaW50KTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcl9zYXRfcnR6KGludCk7CmNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXJfcnRwKGludCk7CmNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXJfc2F0X3J0cChpbnQpOwpjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyX3J0bihpbnQpOwpjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyX3NhdF9ydG4oaW50KTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcihpbnQpOwpjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyX3NhdChpbnQpOwpjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyX3J0ZSh1aW50KTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcl9zYXRfcnRlKHVpbnQpOwpjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyX3J0eih1aW50KTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcl9zYXRfcnR6KHVpbnQpOwpjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyX3J0cCh1aW50KTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcl9zYXRfcnRwKHVpbnQpOwpjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyX3J0bih1aW50KTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcl9zYXRfcnRuKHVpbnQpOwpjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyKHVpbnQpOwpjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyX3NhdCh1aW50KTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcl9ydGUobG9uZyk7CmNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXJfc2F0X3J0ZShsb25nKTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcl9ydHoobG9uZyk7CmNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXJfc2F0X3J0eihsb25nKTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcl9ydHAobG9uZyk7CmNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXJfc2F0X3J0cChsb25nKTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcl9ydG4obG9uZyk7CmNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXJfc2F0X3J0bihsb25nKTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcihsb25nKTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcl9zYXQobG9uZyk7CmNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXJfcnRlKHVsb25nKTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcl9zYXRfcnRlKHVsb25nKTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcl9ydHoodWxvbmcpOwpjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyX3NhdF9ydHoodWxvbmcpOwpjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyX3J0cCh1bG9uZyk7CmNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXJfc2F0X3J0cCh1bG9uZyk7CmNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXJfcnRuKHVsb25nKTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcl9zYXRfcnRuKHVsb25nKTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcih1bG9uZyk7CmNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXJfc2F0KHVsb25nKTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcl9ydGUoZmxvYXQpOwpjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyX3NhdF9ydGUoZmxvYXQpOwpjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyX3J0eihmbG9hdCk7CmNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXJfc2F0X3J0eihmbG9hdCk7CmNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXJfcnRwKGZsb2F0KTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcl9zYXRfcnRwKGZsb2F0KTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcl9ydG4oZmxvYXQpOwpjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyX3NhdF9ydG4oZmxvYXQpOwpjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyKGZsb2F0KTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcl9zYXQoZmxvYXQpOwp1Y2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXJfcnRlKGNoYXIpOwp1Y2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXJfc2F0X3J0ZShjaGFyKTsKdWNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyX3J0eihjaGFyKTsKdWNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyX3NhdF9ydHooY2hhcik7CnVjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcl9ydHAoY2hhcik7CnVjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcl9zYXRfcnRwKGNoYXIpOwp1Y2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXJfcnRuKGNoYXIpOwp1Y2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXJfc2F0X3J0bihjaGFyKTsKdWNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyKGNoYXIpOwp1Y2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXJfc2F0KGNoYXIpOwp1Y2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXJfcnRlKHVjaGFyKTsKdWNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyX3NhdF9ydGUodWNoYXIpOwp1Y2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXJfcnR6KHVjaGFyKTsKdWNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyX3NhdF9ydHoodWNoYXIpOwp1Y2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXJfcnRwKHVjaGFyKTsKdWNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyX3NhdF9ydHAodWNoYXIpOwp1Y2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXJfcnRuKHVjaGFyKTsKdWNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyX3NhdF9ydG4odWNoYXIpOwp1Y2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIodWNoYXIpOwp1Y2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXJfc2F0KHVjaGFyKTsKdWNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyX3J0ZShzaG9ydCk7CnVjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcl9zYXRfcnRlKHNob3J0KTsKdWNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyX3J0eihzaG9ydCk7CnVjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcl9zYXRfcnR6KHNob3J0KTsKdWNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyX3J0cChzaG9ydCk7CnVjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcl9zYXRfcnRwKHNob3J0KTsKdWNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyX3J0bihzaG9ydCk7CnVjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcl9zYXRfcnRuKHNob3J0KTsKdWNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyKHNob3J0KTsKdWNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyX3NhdChzaG9ydCk7CnVjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcl9ydGUodXNob3J0KTsKdWNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyX3NhdF9ydGUodXNob3J0KTsKdWNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyX3J0eih1c2hvcnQpOwp1Y2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXJfc2F0X3J0eih1c2hvcnQpOwp1Y2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXJfcnRwKHVzaG9ydCk7CnVjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcl9zYXRfcnRwKHVzaG9ydCk7CnVjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcl9ydG4odXNob3J0KTsKdWNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyX3NhdF9ydG4odXNob3J0KTsKdWNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyKHVzaG9ydCk7CnVjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcl9zYXQodXNob3J0KTsKdWNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyX3J0ZShpbnQpOwp1Y2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXJfc2F0X3J0ZShpbnQpOwp1Y2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXJfcnR6KGludCk7CnVjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcl9zYXRfcnR6KGludCk7CnVjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcl9ydHAoaW50KTsKdWNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyX3NhdF9ydHAoaW50KTsKdWNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyX3J0bihpbnQpOwp1Y2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXJfc2F0X3J0bihpbnQpOwp1Y2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIoaW50KTsKdWNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyX3NhdChpbnQpOwp1Y2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXJfcnRlKHVpbnQpOwp1Y2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXJfc2F0X3J0ZSh1aW50KTsKdWNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyX3J0eih1aW50KTsKdWNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyX3NhdF9ydHoodWludCk7CnVjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcl9ydHAodWludCk7CnVjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcl9zYXRfcnRwKHVpbnQpOwp1Y2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXJfcnRuKHVpbnQpOwp1Y2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXJfc2F0X3J0bih1aW50KTsKdWNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyKHVpbnQpOwp1Y2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXJfc2F0KHVpbnQpOwp1Y2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXJfcnRlKGxvbmcpOwp1Y2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXJfc2F0X3J0ZShsb25nKTsKdWNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyX3J0eihsb25nKTsKdWNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyX3NhdF9ydHoobG9uZyk7CnVjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcl9ydHAobG9uZyk7CnVjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcl9zYXRfcnRwKGxvbmcpOwp1Y2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXJfcnRuKGxvbmcpOwp1Y2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXJfc2F0X3J0bihsb25nKTsKdWNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyKGxvbmcpOwp1Y2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXJfc2F0KGxvbmcpOwp1Y2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXJfcnRlKHVsb25nKTsKdWNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyX3NhdF9ydGUodWxvbmcpOwp1Y2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXJfcnR6KHVsb25nKTsKdWNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyX3NhdF9ydHoodWxvbmcpOwp1Y2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXJfcnRwKHVsb25nKTsKdWNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyX3NhdF9ydHAodWxvbmcpOwp1Y2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXJfcnRuKHVsb25nKTsKdWNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyX3NhdF9ydG4odWxvbmcpOwp1Y2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIodWxvbmcpOwp1Y2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXJfc2F0KHVsb25nKTsKdWNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyX3J0ZShmbG9hdCk7CnVjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcl9zYXRfcnRlKGZsb2F0KTsKdWNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyX3J0eihmbG9hdCk7CnVjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcl9zYXRfcnR6KGZsb2F0KTsKdWNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyX3J0cChmbG9hdCk7CnVjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcl9zYXRfcnRwKGZsb2F0KTsKdWNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyX3J0bihmbG9hdCk7CnVjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcl9zYXRfcnRuKGZsb2F0KTsKdWNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyKGZsb2F0KTsKdWNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyX3NhdChmbG9hdCk7CgpzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnRfcnRlKGNoYXIpOwpzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnRfc2F0X3J0ZShjaGFyKTsKc2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0X3J0eihjaGFyKTsKc2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0X3NhdF9ydHooY2hhcik7CnNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydF9ydHAoY2hhcik7CnNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydF9zYXRfcnRwKGNoYXIpOwpzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnRfcnRuKGNoYXIpOwpzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnRfc2F0X3J0bihjaGFyKTsKc2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0KGNoYXIpOwpzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnRfc2F0KGNoYXIpOwpzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnRfcnRlKHVjaGFyKTsKc2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0X3NhdF9ydGUodWNoYXIpOwpzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnRfcnR6KHVjaGFyKTsKc2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0X3NhdF9ydHoodWNoYXIpOwpzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnRfcnRwKHVjaGFyKTsKc2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0X3NhdF9ydHAodWNoYXIpOwpzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnRfcnRuKHVjaGFyKTsKc2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0X3NhdF9ydG4odWNoYXIpOwpzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQodWNoYXIpOwpzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnRfc2F0KHVjaGFyKTsKc2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0X3J0ZShzaG9ydCk7CnNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydF9zYXRfcnRlKHNob3J0KTsKc2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0X3J0eihzaG9ydCk7CnNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydF9zYXRfcnR6KHNob3J0KTsKc2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0X3J0cChzaG9ydCk7CnNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydF9zYXRfcnRwKHNob3J0KTsKc2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0X3J0bihzaG9ydCk7CnNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydF9zYXRfcnRuKHNob3J0KTsKc2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0KHNob3J0KTsKc2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0X3NhdChzaG9ydCk7CnNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydF9ydGUodXNob3J0KTsKc2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0X3NhdF9ydGUodXNob3J0KTsKc2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0X3J0eih1c2hvcnQpOwpzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnRfc2F0X3J0eih1c2hvcnQpOwpzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnRfcnRwKHVzaG9ydCk7CnNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydF9zYXRfcnRwKHVzaG9ydCk7CnNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydF9ydG4odXNob3J0KTsKc2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0X3NhdF9ydG4odXNob3J0KTsKc2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0KHVzaG9ydCk7CnNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydF9zYXQodXNob3J0KTsKc2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0X3J0ZShpbnQpOwpzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnRfc2F0X3J0ZShpbnQpOwpzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnRfcnR6KGludCk7CnNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydF9zYXRfcnR6KGludCk7CnNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydF9ydHAoaW50KTsKc2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0X3NhdF9ydHAoaW50KTsKc2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0X3J0bihpbnQpOwpzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnRfc2F0X3J0bihpbnQpOwpzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQoaW50KTsKc2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0X3NhdChpbnQpOwpzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnRfcnRlKHVpbnQpOwpzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnRfc2F0X3J0ZSh1aW50KTsKc2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0X3J0eih1aW50KTsKc2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0X3NhdF9ydHoodWludCk7CnNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydF9ydHAodWludCk7CnNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydF9zYXRfcnRwKHVpbnQpOwpzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnRfcnRuKHVpbnQpOwpzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnRfc2F0X3J0bih1aW50KTsKc2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0KHVpbnQpOwpzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnRfc2F0KHVpbnQpOwpzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnRfcnRlKGxvbmcpOwpzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnRfc2F0X3J0ZShsb25nKTsKc2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0X3J0eihsb25nKTsKc2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0X3NhdF9ydHoobG9uZyk7CnNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydF9ydHAobG9uZyk7CnNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydF9zYXRfcnRwKGxvbmcpOwpzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnRfcnRuKGxvbmcpOwpzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnRfc2F0X3J0bihsb25nKTsKc2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0KGxvbmcpOwpzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnRfc2F0KGxvbmcpOwpzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnRfcnRlKHVsb25nKTsKc2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0X3NhdF9ydGUodWxvbmcpOwpzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnRfcnR6KHVsb25nKTsKc2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0X3NhdF9ydHoodWxvbmcpOwpzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnRfcnRwKHVsb25nKTsKc2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0X3NhdF9ydHAodWxvbmcpOwpzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnRfcnRuKHVsb25nKTsKc2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0X3NhdF9ydG4odWxvbmcpOwpzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQodWxvbmcpOwpzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnRfc2F0KHVsb25nKTsKc2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0X3J0ZShmbG9hdCk7CnNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydF9zYXRfcnRlKGZsb2F0KTsKc2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0X3J0eihmbG9hdCk7CnNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydF9zYXRfcnR6KGZsb2F0KTsKc2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0X3J0cChmbG9hdCk7CnNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydF9zYXRfcnRwKGZsb2F0KTsKc2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0X3J0bihmbG9hdCk7CnNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydF9zYXRfcnRuKGZsb2F0KTsKc2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0KGZsb2F0KTsKc2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0X3NhdChmbG9hdCk7CnVzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0X3J0ZShjaGFyKTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnRfc2F0X3J0ZShjaGFyKTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnRfcnR6KGNoYXIpOwp1c2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydF9zYXRfcnR6KGNoYXIpOwp1c2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydF9ydHAoY2hhcik7CnVzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0X3NhdF9ydHAoY2hhcik7CnVzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0X3J0bihjaGFyKTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnRfc2F0X3J0bihjaGFyKTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQoY2hhcik7CnVzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0X3NhdChjaGFyKTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnRfcnRlKHVjaGFyKTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnRfc2F0X3J0ZSh1Y2hhcik7CnVzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0X3J0eih1Y2hhcik7CnVzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0X3NhdF9ydHoodWNoYXIpOwp1c2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydF9ydHAodWNoYXIpOwp1c2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydF9zYXRfcnRwKHVjaGFyKTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnRfcnRuKHVjaGFyKTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnRfc2F0X3J0bih1Y2hhcik7CnVzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0KHVjaGFyKTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnRfc2F0KHVjaGFyKTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnRfcnRlKHNob3J0KTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnRfc2F0X3J0ZShzaG9ydCk7CnVzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0X3J0eihzaG9ydCk7CnVzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0X3NhdF9ydHooc2hvcnQpOwp1c2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydF9ydHAoc2hvcnQpOwp1c2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydF9zYXRfcnRwKHNob3J0KTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnRfcnRuKHNob3J0KTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnRfc2F0X3J0bihzaG9ydCk7CnVzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0KHNob3J0KTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnRfc2F0KHNob3J0KTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnRfcnRlKHVzaG9ydCk7CnVzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0X3NhdF9ydGUodXNob3J0KTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnRfcnR6KHVzaG9ydCk7CnVzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0X3NhdF9ydHoodXNob3J0KTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnRfcnRwKHVzaG9ydCk7CnVzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0X3NhdF9ydHAodXNob3J0KTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnRfcnRuKHVzaG9ydCk7CnVzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0X3NhdF9ydG4odXNob3J0KTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQodXNob3J0KTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnRfc2F0KHVzaG9ydCk7CnVzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0X3J0ZShpbnQpOwp1c2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydF9zYXRfcnRlKGludCk7CnVzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0X3J0eihpbnQpOwp1c2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydF9zYXRfcnR6KGludCk7CnVzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0X3J0cChpbnQpOwp1c2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydF9zYXRfcnRwKGludCk7CnVzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0X3J0bihpbnQpOwp1c2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydF9zYXRfcnRuKGludCk7CnVzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0KGludCk7CnVzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0X3NhdChpbnQpOwp1c2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydF9ydGUodWludCk7CnVzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0X3NhdF9ydGUodWludCk7CnVzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0X3J0eih1aW50KTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnRfc2F0X3J0eih1aW50KTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnRfcnRwKHVpbnQpOwp1c2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydF9zYXRfcnRwKHVpbnQpOwp1c2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydF9ydG4odWludCk7CnVzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0X3NhdF9ydG4odWludCk7CnVzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0KHVpbnQpOwp1c2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydF9zYXQodWludCk7CnVzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0X3J0ZShsb25nKTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnRfc2F0X3J0ZShsb25nKTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnRfcnR6KGxvbmcpOwp1c2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydF9zYXRfcnR6KGxvbmcpOwp1c2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydF9ydHAobG9uZyk7CnVzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0X3NhdF9ydHAobG9uZyk7CnVzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0X3J0bihsb25nKTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnRfc2F0X3J0bihsb25nKTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQobG9uZyk7CnVzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0X3NhdChsb25nKTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnRfcnRlKHVsb25nKTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnRfc2F0X3J0ZSh1bG9uZyk7CnVzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0X3J0eih1bG9uZyk7CnVzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0X3NhdF9ydHoodWxvbmcpOwp1c2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydF9ydHAodWxvbmcpOwp1c2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydF9zYXRfcnRwKHVsb25nKTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnRfcnRuKHVsb25nKTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnRfc2F0X3J0bih1bG9uZyk7CnVzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0KHVsb25nKTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnRfc2F0KHVsb25nKTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnRfcnRlKGZsb2F0KTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnRfc2F0X3J0ZShmbG9hdCk7CnVzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0X3J0eihmbG9hdCk7CnVzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0X3NhdF9ydHooZmxvYXQpOwp1c2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydF9ydHAoZmxvYXQpOwp1c2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydF9zYXRfcnRwKGZsb2F0KTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnRfcnRuKGZsb2F0KTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnRfc2F0X3J0bihmbG9hdCk7CnVzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0KGZsb2F0KTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnRfc2F0KGZsb2F0KTsKaW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnRfcnRlKGNoYXIpOwppbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludF9zYXRfcnRlKGNoYXIpOwppbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludF9ydHooY2hhcik7CmludCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50X3NhdF9ydHooY2hhcik7CmludCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50X3J0cChjaGFyKTsKaW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnRfc2F0X3J0cChjaGFyKTsKaW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnRfcnRuKGNoYXIpOwppbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludF9zYXRfcnRuKGNoYXIpOwppbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludChjaGFyKTsKaW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnRfc2F0KGNoYXIpOwppbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludF9ydGUodWNoYXIpOwppbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludF9zYXRfcnRlKHVjaGFyKTsKaW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnRfcnR6KHVjaGFyKTsKaW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnRfc2F0X3J0eih1Y2hhcik7CmludCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50X3J0cCh1Y2hhcik7CmludCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50X3NhdF9ydHAodWNoYXIpOwppbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludF9ydG4odWNoYXIpOwppbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludF9zYXRfcnRuKHVjaGFyKTsKaW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQodWNoYXIpOwppbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludF9zYXQodWNoYXIpOwppbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludF9ydGUoc2hvcnQpOwppbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludF9zYXRfcnRlKHNob3J0KTsKaW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnRfcnR6KHNob3J0KTsKaW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnRfc2F0X3J0eihzaG9ydCk7CmludCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50X3J0cChzaG9ydCk7CmludCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50X3NhdF9ydHAoc2hvcnQpOwppbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludF9ydG4oc2hvcnQpOwppbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludF9zYXRfcnRuKHNob3J0KTsKaW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQoc2hvcnQpOwppbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludF9zYXQoc2hvcnQpOwppbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludF9ydGUodXNob3J0KTsKaW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnRfc2F0X3J0ZSh1c2hvcnQpOwppbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludF9ydHoodXNob3J0KTsKaW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnRfc2F0X3J0eih1c2hvcnQpOwppbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludF9ydHAodXNob3J0KTsKaW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnRfc2F0X3J0cCh1c2hvcnQpOwppbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludF9ydG4odXNob3J0KTsKaW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnRfc2F0X3J0bih1c2hvcnQpOwppbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludCh1c2hvcnQpOwppbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludF9zYXQodXNob3J0KTsKaW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnRfcnRlKGludCk7CmludCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50X3NhdF9ydGUoaW50KTsKaW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnRfcnR6KGludCk7CmludCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50X3NhdF9ydHooaW50KTsKaW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnRfcnRwKGludCk7CmludCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50X3NhdF9ydHAoaW50KTsKaW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnRfcnRuKGludCk7CmludCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50X3NhdF9ydG4oaW50KTsKaW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQoaW50KTsKaW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnRfc2F0KGludCk7CmludCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50X3J0ZSh1aW50KTsKaW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnRfc2F0X3J0ZSh1aW50KTsKaW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnRfcnR6KHVpbnQpOwppbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludF9zYXRfcnR6KHVpbnQpOwppbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludF9ydHAodWludCk7CmludCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50X3NhdF9ydHAodWludCk7CmludCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50X3J0bih1aW50KTsKaW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnRfc2F0X3J0bih1aW50KTsKaW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQodWludCk7CmludCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50X3NhdCh1aW50KTsKaW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnRfcnRlKGxvbmcpOwppbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludF9zYXRfcnRlKGxvbmcpOwppbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludF9ydHoobG9uZyk7CmludCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50X3NhdF9ydHoobG9uZyk7CmludCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50X3J0cChsb25nKTsKaW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnRfc2F0X3J0cChsb25nKTsKaW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnRfcnRuKGxvbmcpOwppbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludF9zYXRfcnRuKGxvbmcpOwppbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludChsb25nKTsKaW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnRfc2F0KGxvbmcpOwppbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludF9ydGUodWxvbmcpOwppbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludF9zYXRfcnRlKHVsb25nKTsKaW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnRfcnR6KHVsb25nKTsKaW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnRfc2F0X3J0eih1bG9uZyk7CmludCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50X3J0cCh1bG9uZyk7CmludCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50X3NhdF9ydHAodWxvbmcpOwppbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludF9ydG4odWxvbmcpOwppbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludF9zYXRfcnRuKHVsb25nKTsKaW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQodWxvbmcpOwppbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludF9zYXQodWxvbmcpOwppbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludF9ydGUoZmxvYXQpOwppbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludF9zYXRfcnRlKGZsb2F0KTsKaW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnRfcnR6KGZsb2F0KTsKaW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnRfc2F0X3J0eihmbG9hdCk7CmludCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50X3J0cChmbG9hdCk7CmludCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50X3NhdF9ydHAoZmxvYXQpOwppbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludF9ydG4oZmxvYXQpOwppbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludF9zYXRfcnRuKGZsb2F0KTsKaW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQoZmxvYXQpOwppbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludF9zYXQoZmxvYXQpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50X3J0ZShjaGFyKTsKdWludCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludF9zYXRfcnRlKGNoYXIpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50X3J0eihjaGFyKTsKdWludCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludF9zYXRfcnR6KGNoYXIpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50X3J0cChjaGFyKTsKdWludCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludF9zYXRfcnRwKGNoYXIpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50X3J0bihjaGFyKTsKdWludCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludF9zYXRfcnRuKGNoYXIpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50KGNoYXIpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50X3NhdChjaGFyKTsKdWludCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludF9ydGUodWNoYXIpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50X3NhdF9ydGUodWNoYXIpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50X3J0eih1Y2hhcik7CnVpbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnRfc2F0X3J0eih1Y2hhcik7CnVpbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnRfcnRwKHVjaGFyKTsKdWludCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludF9zYXRfcnRwKHVjaGFyKTsKdWludCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludF9ydG4odWNoYXIpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50X3NhdF9ydG4odWNoYXIpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50KHVjaGFyKTsKdWludCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludF9zYXQodWNoYXIpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50X3J0ZShzaG9ydCk7CnVpbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnRfc2F0X3J0ZShzaG9ydCk7CnVpbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnRfcnR6KHNob3J0KTsKdWludCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludF9zYXRfcnR6KHNob3J0KTsKdWludCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludF9ydHAoc2hvcnQpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50X3NhdF9ydHAoc2hvcnQpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50X3J0bihzaG9ydCk7CnVpbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnRfc2F0X3J0bihzaG9ydCk7CnVpbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQoc2hvcnQpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50X3NhdChzaG9ydCk7CnVpbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnRfcnRlKHVzaG9ydCk7CnVpbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnRfc2F0X3J0ZSh1c2hvcnQpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50X3J0eih1c2hvcnQpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50X3NhdF9ydHoodXNob3J0KTsKdWludCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludF9ydHAodXNob3J0KTsKdWludCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludF9zYXRfcnRwKHVzaG9ydCk7CnVpbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnRfcnRuKHVzaG9ydCk7CnVpbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnRfc2F0X3J0bih1c2hvcnQpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50KHVzaG9ydCk7CnVpbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnRfc2F0KHVzaG9ydCk7CnVpbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnRfcnRlKGludCk7CnVpbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnRfc2F0X3J0ZShpbnQpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50X3J0eihpbnQpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50X3NhdF9ydHooaW50KTsKdWludCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludF9ydHAoaW50KTsKdWludCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludF9zYXRfcnRwKGludCk7CnVpbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnRfcnRuKGludCk7CnVpbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnRfc2F0X3J0bihpbnQpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50KGludCk7CnVpbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnRfc2F0KGludCk7CnVpbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnRfcnRlKHVpbnQpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50X3NhdF9ydGUodWludCk7CnVpbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnRfcnR6KHVpbnQpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50X3NhdF9ydHoodWludCk7CnVpbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnRfcnRwKHVpbnQpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50X3NhdF9ydHAodWludCk7CnVpbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnRfcnRuKHVpbnQpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50X3NhdF9ydG4odWludCk7CnVpbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQodWludCk7CnVpbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnRfc2F0KHVpbnQpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50X3J0ZShsb25nKTsKdWludCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludF9zYXRfcnRlKGxvbmcpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50X3J0eihsb25nKTsKdWludCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludF9zYXRfcnR6KGxvbmcpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50X3J0cChsb25nKTsKdWludCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludF9zYXRfcnRwKGxvbmcpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50X3J0bihsb25nKTsKdWludCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludF9zYXRfcnRuKGxvbmcpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50KGxvbmcpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50X3NhdChsb25nKTsKdWludCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludF9ydGUodWxvbmcpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50X3NhdF9ydGUodWxvbmcpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50X3J0eih1bG9uZyk7CnVpbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnRfc2F0X3J0eih1bG9uZyk7CnVpbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnRfcnRwKHVsb25nKTsKdWludCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludF9zYXRfcnRwKHVsb25nKTsKdWludCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludF9ydG4odWxvbmcpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50X3NhdF9ydG4odWxvbmcpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50KHVsb25nKTsKdWludCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludF9zYXQodWxvbmcpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50X3J0ZShmbG9hdCk7CnVpbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnRfc2F0X3J0ZShmbG9hdCk7CnVpbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnRfcnR6KGZsb2F0KTsKdWludCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludF9zYXRfcnR6KGZsb2F0KTsKdWludCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludF9ydHAoZmxvYXQpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50X3NhdF9ydHAoZmxvYXQpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50X3J0bihmbG9hdCk7CnVpbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnRfc2F0X3J0bihmbG9hdCk7CnVpbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQoZmxvYXQpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50X3NhdChmbG9hdCk7CmxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmdfcnRlKGNoYXIpOwpsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nX3NhdF9ydGUoY2hhcik7CmxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmdfcnR6KGNoYXIpOwpsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nX3NhdF9ydHooY2hhcik7CmxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmdfcnRwKGNoYXIpOwpsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nX3NhdF9ydHAoY2hhcik7CmxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmdfcnRuKGNoYXIpOwpsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nX3NhdF9ydG4oY2hhcik7CmxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcoY2hhcik7CmxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmdfc2F0KGNoYXIpOwpsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nX3J0ZSh1Y2hhcik7CmxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmdfc2F0X3J0ZSh1Y2hhcik7CmxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmdfcnR6KHVjaGFyKTsKbG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZ19zYXRfcnR6KHVjaGFyKTsKbG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZ19ydHAodWNoYXIpOwpsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nX3NhdF9ydHAodWNoYXIpOwpsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nX3J0bih1Y2hhcik7CmxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmdfc2F0X3J0bih1Y2hhcik7CmxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcodWNoYXIpOwpsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nX3NhdCh1Y2hhcik7CmxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmdfcnRlKHNob3J0KTsKbG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZ19zYXRfcnRlKHNob3J0KTsKbG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZ19ydHooc2hvcnQpOwpsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nX3NhdF9ydHooc2hvcnQpOwpsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nX3J0cChzaG9ydCk7CmxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmdfc2F0X3J0cChzaG9ydCk7CmxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmdfcnRuKHNob3J0KTsKbG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZ19zYXRfcnRuKHNob3J0KTsKbG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZyhzaG9ydCk7CmxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmdfc2F0KHNob3J0KTsKbG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZ19ydGUodXNob3J0KTsKbG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZ19zYXRfcnRlKHVzaG9ydCk7CmxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmdfcnR6KHVzaG9ydCk7CmxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmdfc2F0X3J0eih1c2hvcnQpOwpsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nX3J0cCh1c2hvcnQpOwpsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nX3NhdF9ydHAodXNob3J0KTsKbG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZ19ydG4odXNob3J0KTsKbG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZ19zYXRfcnRuKHVzaG9ydCk7CmxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcodXNob3J0KTsKbG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZ19zYXQodXNob3J0KTsKbG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZ19ydGUoaW50KTsKbG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZ19zYXRfcnRlKGludCk7CmxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmdfcnR6KGludCk7CmxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmdfc2F0X3J0eihpbnQpOwpsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nX3J0cChpbnQpOwpsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nX3NhdF9ydHAoaW50KTsKbG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZ19ydG4oaW50KTsKbG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZ19zYXRfcnRuKGludCk7CmxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcoaW50KTsKbG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZ19zYXQoaW50KTsKbG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZ19ydGUodWludCk7CmxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmdfc2F0X3J0ZSh1aW50KTsKbG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZ19ydHoodWludCk7CmxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmdfc2F0X3J0eih1aW50KTsKbG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZ19ydHAodWludCk7CmxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmdfc2F0X3J0cCh1aW50KTsKbG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZ19ydG4odWludCk7CmxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmdfc2F0X3J0bih1aW50KTsKbG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZyh1aW50KTsKbG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZ19zYXQodWludCk7CmxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmdfcnRlKGxvbmcpOwpsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nX3NhdF9ydGUobG9uZyk7CmxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmdfcnR6KGxvbmcpOwpsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nX3NhdF9ydHoobG9uZyk7CmxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmdfcnRwKGxvbmcpOwpsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nX3NhdF9ydHAobG9uZyk7CmxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmdfcnRuKGxvbmcpOwpsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nX3NhdF9ydG4obG9uZyk7CmxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcobG9uZyk7CmxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmdfc2F0KGxvbmcpOwpsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nX3J0ZSh1bG9uZyk7CmxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmdfc2F0X3J0ZSh1bG9uZyk7CmxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmdfcnR6KHVsb25nKTsKbG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZ19zYXRfcnR6KHVsb25nKTsKbG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZ19ydHAodWxvbmcpOwpsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nX3NhdF9ydHAodWxvbmcpOwpsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nX3J0bih1bG9uZyk7CmxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmdfc2F0X3J0bih1bG9uZyk7CmxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcodWxvbmcpOwpsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nX3NhdCh1bG9uZyk7CmxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmdfcnRlKGZsb2F0KTsKbG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZ19zYXRfcnRlKGZsb2F0KTsKbG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZ19ydHooZmxvYXQpOwpsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nX3NhdF9ydHooZmxvYXQpOwpsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nX3J0cChmbG9hdCk7CmxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmdfc2F0X3J0cChmbG9hdCk7CmxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmdfcnRuKGZsb2F0KTsKbG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZ19zYXRfcnRuKGZsb2F0KTsKbG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZyhmbG9hdCk7CmxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmdfc2F0KGZsb2F0KTsKdWxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nX3J0ZShjaGFyKTsKdWxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nX3NhdF9ydGUoY2hhcik7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZ19ydHooY2hhcik7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZ19zYXRfcnR6KGNoYXIpOwp1bG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmdfcnRwKGNoYXIpOwp1bG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmdfc2F0X3J0cChjaGFyKTsKdWxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nX3J0bihjaGFyKTsKdWxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nX3NhdF9ydG4oY2hhcik7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZyhjaGFyKTsKdWxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nX3NhdChjaGFyKTsKdWxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nX3J0ZSh1Y2hhcik7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZ19zYXRfcnRlKHVjaGFyKTsKdWxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nX3J0eih1Y2hhcik7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZ19zYXRfcnR6KHVjaGFyKTsKdWxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nX3J0cCh1Y2hhcik7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZ19zYXRfcnRwKHVjaGFyKTsKdWxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nX3J0bih1Y2hhcik7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZ19zYXRfcnRuKHVjaGFyKTsKdWxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nKHVjaGFyKTsKdWxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nX3NhdCh1Y2hhcik7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZ19ydGUoc2hvcnQpOwp1bG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmdfc2F0X3J0ZShzaG9ydCk7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZ19ydHooc2hvcnQpOwp1bG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmdfc2F0X3J0eihzaG9ydCk7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZ19ydHAoc2hvcnQpOwp1bG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmdfc2F0X3J0cChzaG9ydCk7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZ19ydG4oc2hvcnQpOwp1bG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmdfc2F0X3J0bihzaG9ydCk7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZyhzaG9ydCk7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZ19zYXQoc2hvcnQpOwp1bG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmdfcnRlKHVzaG9ydCk7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZ19zYXRfcnRlKHVzaG9ydCk7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZ19ydHoodXNob3J0KTsKdWxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nX3NhdF9ydHoodXNob3J0KTsKdWxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nX3J0cCh1c2hvcnQpOwp1bG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmdfc2F0X3J0cCh1c2hvcnQpOwp1bG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmdfcnRuKHVzaG9ydCk7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZ19zYXRfcnRuKHVzaG9ydCk7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZyh1c2hvcnQpOwp1bG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmdfc2F0KHVzaG9ydCk7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZ19ydGUoaW50KTsKdWxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nX3NhdF9ydGUoaW50KTsKdWxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nX3J0eihpbnQpOwp1bG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmdfc2F0X3J0eihpbnQpOwp1bG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmdfcnRwKGludCk7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZ19zYXRfcnRwKGludCk7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZ19ydG4oaW50KTsKdWxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nX3NhdF9ydG4oaW50KTsKdWxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nKGludCk7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZ19zYXQoaW50KTsKdWxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nX3J0ZSh1aW50KTsKdWxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nX3NhdF9ydGUodWludCk7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZ19ydHoodWludCk7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZ19zYXRfcnR6KHVpbnQpOwp1bG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmdfcnRwKHVpbnQpOwp1bG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmdfc2F0X3J0cCh1aW50KTsKdWxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nX3J0bih1aW50KTsKdWxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nX3NhdF9ydG4odWludCk7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZyh1aW50KTsKdWxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nX3NhdCh1aW50KTsKdWxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nX3J0ZShsb25nKTsKdWxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nX3NhdF9ydGUobG9uZyk7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZ19ydHoobG9uZyk7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZ19zYXRfcnR6KGxvbmcpOwp1bG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmdfcnRwKGxvbmcpOwp1bG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmdfc2F0X3J0cChsb25nKTsKdWxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nX3J0bihsb25nKTsKdWxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nX3NhdF9ydG4obG9uZyk7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZyhsb25nKTsKdWxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nX3NhdChsb25nKTsKdWxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nX3J0ZSh1bG9uZyk7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZ19zYXRfcnRlKHVsb25nKTsKdWxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nX3J0eih1bG9uZyk7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZ19zYXRfcnR6KHVsb25nKTsKdWxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nX3J0cCh1bG9uZyk7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZ19zYXRfcnRwKHVsb25nKTsKdWxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nX3J0bih1bG9uZyk7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZ19zYXRfcnRuKHVsb25nKTsKdWxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nKHVsb25nKTsKdWxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nX3NhdCh1bG9uZyk7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZ19ydGUoZmxvYXQpOwp1bG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmdfc2F0X3J0ZShmbG9hdCk7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZ19ydHooZmxvYXQpOwp1bG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmdfc2F0X3J0eihmbG9hdCk7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZ19ydHAoZmxvYXQpOwp1bG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmdfc2F0X3J0cChmbG9hdCk7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZ19ydG4oZmxvYXQpOwp1bG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmdfc2F0X3J0bihmbG9hdCk7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZyhmbG9hdCk7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZ19zYXQoZmxvYXQpOwpmbG9hdCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXRfcnRlKGNoYXIpOwpmbG9hdCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXRfcnR6KGNoYXIpOwpmbG9hdCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXRfcnRwKGNoYXIpOwpmbG9hdCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXRfcnRuKGNoYXIpOwpmbG9hdCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQoY2hhcik7CmZsb2F0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdF9ydGUodWNoYXIpOwpmbG9hdCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXRfcnR6KHVjaGFyKTsKZmxvYXQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0X3J0cCh1Y2hhcik7CmZsb2F0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdF9ydG4odWNoYXIpOwpmbG9hdCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQodWNoYXIpOwpmbG9hdCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXRfcnRlKHNob3J0KTsKZmxvYXQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0X3J0eihzaG9ydCk7CmZsb2F0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdF9ydHAoc2hvcnQpOwpmbG9hdCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXRfcnRuKHNob3J0KTsKZmxvYXQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0KHNob3J0KTsKZmxvYXQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0X3J0ZSh1c2hvcnQpOwpmbG9hdCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXRfcnR6KHVzaG9ydCk7CmZsb2F0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdF9ydHAodXNob3J0KTsKZmxvYXQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0X3J0bih1c2hvcnQpOwpmbG9hdCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQodXNob3J0KTsKZmxvYXQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0X3J0ZShpbnQpOwpmbG9hdCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXRfcnR6KGludCk7CmZsb2F0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdF9ydHAoaW50KTsKZmxvYXQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0X3J0bihpbnQpOwpmbG9hdCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQoaW50KTsKZmxvYXQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0X3J0ZSh1aW50KTsKZmxvYXQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0X3J0eih1aW50KTsKZmxvYXQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0X3J0cCh1aW50KTsKZmxvYXQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0X3J0bih1aW50KTsKZmxvYXQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0KHVpbnQpOwpmbG9hdCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXRfcnRlKGxvbmcpOwpmbG9hdCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXRfcnR6KGxvbmcpOwpmbG9hdCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXRfcnRwKGxvbmcpOwpmbG9hdCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXRfcnRuKGxvbmcpOwpmbG9hdCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQobG9uZyk7CmZsb2F0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdF9ydGUodWxvbmcpOwpmbG9hdCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXRfcnR6KHVsb25nKTsKZmxvYXQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0X3J0cCh1bG9uZyk7CmZsb2F0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdF9ydG4odWxvbmcpOwpmbG9hdCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQodWxvbmcpOwpmbG9hdCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXRfcnRlKGZsb2F0KTsKZmxvYXQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0X3J0eihmbG9hdCk7CmZsb2F0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdF9ydHAoZmxvYXQpOwpmbG9hdCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXRfcnRuKGZsb2F0KTsKZmxvYXQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0KGZsb2F0KTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyX3J0ZShjaGFyMik7CmNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMl9zYXRfcnRlKGNoYXIyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyX3J0eihjaGFyMik7CmNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMl9zYXRfcnR6KGNoYXIyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyX3J0cChjaGFyMik7CmNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMl9zYXRfcnRwKGNoYXIyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyX3J0bihjaGFyMik7CmNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMl9zYXRfcnRuKGNoYXIyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyKGNoYXIyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyX3NhdChjaGFyMik7CmNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMl9ydGUodWNoYXIyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyX3NhdF9ydGUodWNoYXIyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyX3J0eih1Y2hhcjIpOwpjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjJfc2F0X3J0eih1Y2hhcjIpOwpjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjJfcnRwKHVjaGFyMik7CmNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMl9zYXRfcnRwKHVjaGFyMik7CmNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMl9ydG4odWNoYXIyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyX3NhdF9ydG4odWNoYXIyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyKHVjaGFyMik7CmNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMl9zYXQodWNoYXIyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyX3J0ZShzaG9ydDIpOwpjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjJfc2F0X3J0ZShzaG9ydDIpOwpjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjJfcnR6KHNob3J0Mik7CmNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMl9zYXRfcnR6KHNob3J0Mik7CmNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMl9ydHAoc2hvcnQyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyX3NhdF9ydHAoc2hvcnQyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyX3J0bihzaG9ydDIpOwpjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjJfc2F0X3J0bihzaG9ydDIpOwpjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjIoc2hvcnQyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyX3NhdChzaG9ydDIpOwpjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjJfcnRlKHVzaG9ydDIpOwpjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjJfc2F0X3J0ZSh1c2hvcnQyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyX3J0eih1c2hvcnQyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyX3NhdF9ydHoodXNob3J0Mik7CmNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMl9ydHAodXNob3J0Mik7CmNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMl9zYXRfcnRwKHVzaG9ydDIpOwpjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjJfcnRuKHVzaG9ydDIpOwpjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjJfc2F0X3J0bih1c2hvcnQyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyKHVzaG9ydDIpOwpjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjJfc2F0KHVzaG9ydDIpOwpjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjJfcnRlKGludDIpOwpjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjJfc2F0X3J0ZShpbnQyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyX3J0eihpbnQyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyX3NhdF9ydHooaW50Mik7CmNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMl9ydHAoaW50Mik7CmNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMl9zYXRfcnRwKGludDIpOwpjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjJfcnRuKGludDIpOwpjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjJfc2F0X3J0bihpbnQyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyKGludDIpOwpjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjJfc2F0KGludDIpOwpjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjJfcnRlKHVpbnQyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyX3NhdF9ydGUodWludDIpOwpjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjJfcnR6KHVpbnQyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyX3NhdF9ydHoodWludDIpOwpjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjJfcnRwKHVpbnQyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyX3NhdF9ydHAodWludDIpOwpjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjJfcnRuKHVpbnQyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyX3NhdF9ydG4odWludDIpOwpjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjIodWludDIpOwpjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjJfc2F0KHVpbnQyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyX3J0ZShsb25nMik7CmNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMl9zYXRfcnRlKGxvbmcyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyX3J0eihsb25nMik7CmNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMl9zYXRfcnR6KGxvbmcyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyX3J0cChsb25nMik7CmNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMl9zYXRfcnRwKGxvbmcyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyX3J0bihsb25nMik7CmNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMl9zYXRfcnRuKGxvbmcyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyKGxvbmcyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyX3NhdChsb25nMik7CmNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMl9ydGUodWxvbmcyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyX3NhdF9ydGUodWxvbmcyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyX3J0eih1bG9uZzIpOwpjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjJfc2F0X3J0eih1bG9uZzIpOwpjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjJfcnRwKHVsb25nMik7CmNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMl9zYXRfcnRwKHVsb25nMik7CmNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMl9ydG4odWxvbmcyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyX3NhdF9ydG4odWxvbmcyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyKHVsb25nMik7CmNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMl9zYXQodWxvbmcyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyX3J0ZShmbG9hdDIpOwpjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjJfc2F0X3J0ZShmbG9hdDIpOwpjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjJfcnR6KGZsb2F0Mik7CmNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMl9zYXRfcnR6KGZsb2F0Mik7CmNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMl9ydHAoZmxvYXQyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyX3NhdF9ydHAoZmxvYXQyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyX3J0bihmbG9hdDIpOwpjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjJfc2F0X3J0bihmbG9hdDIpOwpjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjIoZmxvYXQyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyX3NhdChmbG9hdDIpOwp1Y2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMl9ydGUoY2hhcjIpOwp1Y2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMl9zYXRfcnRlKGNoYXIyKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjJfcnR6KGNoYXIyKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjJfc2F0X3J0eihjaGFyMik7CnVjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIyX3J0cChjaGFyMik7CnVjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIyX3NhdF9ydHAoY2hhcjIpOwp1Y2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMl9ydG4oY2hhcjIpOwp1Y2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMl9zYXRfcnRuKGNoYXIyKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjIoY2hhcjIpOwp1Y2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMl9zYXQoY2hhcjIpOwp1Y2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMl9ydGUodWNoYXIyKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjJfc2F0X3J0ZSh1Y2hhcjIpOwp1Y2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMl9ydHoodWNoYXIyKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjJfc2F0X3J0eih1Y2hhcjIpOwp1Y2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMl9ydHAodWNoYXIyKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjJfc2F0X3J0cCh1Y2hhcjIpOwp1Y2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMl9ydG4odWNoYXIyKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjJfc2F0X3J0bih1Y2hhcjIpOwp1Y2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMih1Y2hhcjIpOwp1Y2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMl9zYXQodWNoYXIyKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjJfcnRlKHNob3J0Mik7CnVjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIyX3NhdF9ydGUoc2hvcnQyKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjJfcnR6KHNob3J0Mik7CnVjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIyX3NhdF9ydHooc2hvcnQyKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjJfcnRwKHNob3J0Mik7CnVjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIyX3NhdF9ydHAoc2hvcnQyKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjJfcnRuKHNob3J0Mik7CnVjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIyX3NhdF9ydG4oc2hvcnQyKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjIoc2hvcnQyKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjJfc2F0KHNob3J0Mik7CnVjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIyX3J0ZSh1c2hvcnQyKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjJfc2F0X3J0ZSh1c2hvcnQyKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjJfcnR6KHVzaG9ydDIpOwp1Y2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMl9zYXRfcnR6KHVzaG9ydDIpOwp1Y2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMl9ydHAodXNob3J0Mik7CnVjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIyX3NhdF9ydHAodXNob3J0Mik7CnVjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIyX3J0bih1c2hvcnQyKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjJfc2F0X3J0bih1c2hvcnQyKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjIodXNob3J0Mik7CnVjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIyX3NhdCh1c2hvcnQyKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjJfcnRlKGludDIpOwp1Y2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMl9zYXRfcnRlKGludDIpOwp1Y2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMl9ydHooaW50Mik7CnVjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIyX3NhdF9ydHooaW50Mik7CnVjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIyX3J0cChpbnQyKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjJfc2F0X3J0cChpbnQyKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjJfcnRuKGludDIpOwp1Y2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMl9zYXRfcnRuKGludDIpOwp1Y2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMihpbnQyKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjJfc2F0KGludDIpOwp1Y2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMl9ydGUodWludDIpOwp1Y2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMl9zYXRfcnRlKHVpbnQyKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjJfcnR6KHVpbnQyKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjJfc2F0X3J0eih1aW50Mik7CnVjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIyX3J0cCh1aW50Mik7CnVjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIyX3NhdF9ydHAodWludDIpOwp1Y2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMl9ydG4odWludDIpOwp1Y2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMl9zYXRfcnRuKHVpbnQyKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjIodWludDIpOwp1Y2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMl9zYXQodWludDIpOwp1Y2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMl9ydGUobG9uZzIpOwp1Y2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMl9zYXRfcnRlKGxvbmcyKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjJfcnR6KGxvbmcyKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjJfc2F0X3J0eihsb25nMik7CnVjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIyX3J0cChsb25nMik7CnVjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIyX3NhdF9ydHAobG9uZzIpOwp1Y2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMl9ydG4obG9uZzIpOwp1Y2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMl9zYXRfcnRuKGxvbmcyKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjIobG9uZzIpOwp1Y2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMl9zYXQobG9uZzIpOwp1Y2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMl9ydGUodWxvbmcyKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjJfc2F0X3J0ZSh1bG9uZzIpOwp1Y2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMl9ydHoodWxvbmcyKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjJfc2F0X3J0eih1bG9uZzIpOwp1Y2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMl9ydHAodWxvbmcyKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjJfc2F0X3J0cCh1bG9uZzIpOwp1Y2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMl9ydG4odWxvbmcyKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjJfc2F0X3J0bih1bG9uZzIpOwp1Y2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMih1bG9uZzIpOwp1Y2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMl9zYXQodWxvbmcyKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjJfcnRlKGZsb2F0Mik7CnVjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIyX3NhdF9ydGUoZmxvYXQyKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjJfcnR6KGZsb2F0Mik7CnVjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIyX3NhdF9ydHooZmxvYXQyKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjJfcnRwKGZsb2F0Mik7CnVjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIyX3NhdF9ydHAoZmxvYXQyKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjJfcnRuKGZsb2F0Mik7CnVjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIyX3NhdF9ydG4oZmxvYXQyKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjIoZmxvYXQyKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjJfc2F0KGZsb2F0Mik7CnNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQyX3J0ZShjaGFyMik7CnNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQyX3NhdF9ydGUoY2hhcjIpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0Ml9ydHooY2hhcjIpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0Ml9zYXRfcnR6KGNoYXIyKTsKc2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDJfcnRwKGNoYXIyKTsKc2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDJfc2F0X3J0cChjaGFyMik7CnNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQyX3J0bihjaGFyMik7CnNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQyX3NhdF9ydG4oY2hhcjIpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MihjaGFyMik7CnNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQyX3NhdChjaGFyMik7CnNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQyX3J0ZSh1Y2hhcjIpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0Ml9zYXRfcnRlKHVjaGFyMik7CnNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQyX3J0eih1Y2hhcjIpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0Ml9zYXRfcnR6KHVjaGFyMik7CnNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQyX3J0cCh1Y2hhcjIpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0Ml9zYXRfcnRwKHVjaGFyMik7CnNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQyX3J0bih1Y2hhcjIpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0Ml9zYXRfcnRuKHVjaGFyMik7CnNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQyKHVjaGFyMik7CnNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQyX3NhdCh1Y2hhcjIpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0Ml9ydGUoc2hvcnQyKTsKc2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDJfc2F0X3J0ZShzaG9ydDIpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0Ml9ydHooc2hvcnQyKTsKc2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDJfc2F0X3J0eihzaG9ydDIpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0Ml9ydHAoc2hvcnQyKTsKc2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDJfc2F0X3J0cChzaG9ydDIpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0Ml9ydG4oc2hvcnQyKTsKc2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDJfc2F0X3J0bihzaG9ydDIpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MihzaG9ydDIpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0Ml9zYXQoc2hvcnQyKTsKc2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDJfcnRlKHVzaG9ydDIpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0Ml9zYXRfcnRlKHVzaG9ydDIpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0Ml9ydHoodXNob3J0Mik7CnNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQyX3NhdF9ydHoodXNob3J0Mik7CnNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQyX3J0cCh1c2hvcnQyKTsKc2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDJfc2F0X3J0cCh1c2hvcnQyKTsKc2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDJfcnRuKHVzaG9ydDIpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0Ml9zYXRfcnRuKHVzaG9ydDIpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0Mih1c2hvcnQyKTsKc2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDJfc2F0KHVzaG9ydDIpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0Ml9ydGUoaW50Mik7CnNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQyX3NhdF9ydGUoaW50Mik7CnNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQyX3J0eihpbnQyKTsKc2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDJfc2F0X3J0eihpbnQyKTsKc2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDJfcnRwKGludDIpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0Ml9zYXRfcnRwKGludDIpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0Ml9ydG4oaW50Mik7CnNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQyX3NhdF9ydG4oaW50Mik7CnNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQyKGludDIpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0Ml9zYXQoaW50Mik7CnNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQyX3J0ZSh1aW50Mik7CnNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQyX3NhdF9ydGUodWludDIpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0Ml9ydHoodWludDIpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0Ml9zYXRfcnR6KHVpbnQyKTsKc2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDJfcnRwKHVpbnQyKTsKc2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDJfc2F0X3J0cCh1aW50Mik7CnNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQyX3J0bih1aW50Mik7CnNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQyX3NhdF9ydG4odWludDIpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0Mih1aW50Mik7CnNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQyX3NhdCh1aW50Mik7CnNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQyX3J0ZShsb25nMik7CnNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQyX3NhdF9ydGUobG9uZzIpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0Ml9ydHoobG9uZzIpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0Ml9zYXRfcnR6KGxvbmcyKTsKc2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDJfcnRwKGxvbmcyKTsKc2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDJfc2F0X3J0cChsb25nMik7CnNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQyX3J0bihsb25nMik7CnNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQyX3NhdF9ydG4obG9uZzIpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0Mihsb25nMik7CnNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQyX3NhdChsb25nMik7CnNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQyX3J0ZSh1bG9uZzIpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0Ml9zYXRfcnRlKHVsb25nMik7CnNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQyX3J0eih1bG9uZzIpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0Ml9zYXRfcnR6KHVsb25nMik7CnNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQyX3J0cCh1bG9uZzIpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0Ml9zYXRfcnRwKHVsb25nMik7CnNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQyX3J0bih1bG9uZzIpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0Ml9zYXRfcnRuKHVsb25nMik7CnNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQyKHVsb25nMik7CnNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQyX3NhdCh1bG9uZzIpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0Ml9ydGUoZmxvYXQyKTsKc2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDJfc2F0X3J0ZShmbG9hdDIpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0Ml9ydHooZmxvYXQyKTsKc2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDJfc2F0X3J0eihmbG9hdDIpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0Ml9ydHAoZmxvYXQyKTsKc2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDJfc2F0X3J0cChmbG9hdDIpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0Ml9ydG4oZmxvYXQyKTsKc2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDJfc2F0X3J0bihmbG9hdDIpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MihmbG9hdDIpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0Ml9zYXQoZmxvYXQyKTsKdXNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0Ml9ydGUoY2hhcjIpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQyX3NhdF9ydGUoY2hhcjIpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQyX3J0eihjaGFyMik7CnVzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDJfc2F0X3J0eihjaGFyMik7CnVzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDJfcnRwKGNoYXIyKTsKdXNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0Ml9zYXRfcnRwKGNoYXIyKTsKdXNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0Ml9ydG4oY2hhcjIpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQyX3NhdF9ydG4oY2hhcjIpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQyKGNoYXIyKTsKdXNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0Ml9zYXQoY2hhcjIpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQyX3J0ZSh1Y2hhcjIpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQyX3NhdF9ydGUodWNoYXIyKTsKdXNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0Ml9ydHoodWNoYXIyKTsKdXNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0Ml9zYXRfcnR6KHVjaGFyMik7CnVzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDJfcnRwKHVjaGFyMik7CnVzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDJfc2F0X3J0cCh1Y2hhcjIpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQyX3J0bih1Y2hhcjIpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQyX3NhdF9ydG4odWNoYXIyKTsKdXNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0Mih1Y2hhcjIpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQyX3NhdCh1Y2hhcjIpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQyX3J0ZShzaG9ydDIpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQyX3NhdF9ydGUoc2hvcnQyKTsKdXNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0Ml9ydHooc2hvcnQyKTsKdXNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0Ml9zYXRfcnR6KHNob3J0Mik7CnVzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDJfcnRwKHNob3J0Mik7CnVzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDJfc2F0X3J0cChzaG9ydDIpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQyX3J0bihzaG9ydDIpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQyX3NhdF9ydG4oc2hvcnQyKTsKdXNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0MihzaG9ydDIpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQyX3NhdChzaG9ydDIpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQyX3J0ZSh1c2hvcnQyKTsKdXNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0Ml9zYXRfcnRlKHVzaG9ydDIpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQyX3J0eih1c2hvcnQyKTsKdXNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0Ml9zYXRfcnR6KHVzaG9ydDIpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQyX3J0cCh1c2hvcnQyKTsKdXNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0Ml9zYXRfcnRwKHVzaG9ydDIpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQyX3J0bih1c2hvcnQyKTsKdXNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0Ml9zYXRfcnRuKHVzaG9ydDIpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQyKHVzaG9ydDIpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQyX3NhdCh1c2hvcnQyKTsKdXNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0Ml9ydGUoaW50Mik7CnVzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDJfc2F0X3J0ZShpbnQyKTsKdXNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0Ml9ydHooaW50Mik7CnVzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDJfc2F0X3J0eihpbnQyKTsKdXNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0Ml9ydHAoaW50Mik7CnVzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDJfc2F0X3J0cChpbnQyKTsKdXNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0Ml9ydG4oaW50Mik7CnVzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDJfc2F0X3J0bihpbnQyKTsKdXNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0MihpbnQyKTsKdXNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0Ml9zYXQoaW50Mik7CnVzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDJfcnRlKHVpbnQyKTsKdXNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0Ml9zYXRfcnRlKHVpbnQyKTsKdXNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0Ml9ydHoodWludDIpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQyX3NhdF9ydHoodWludDIpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQyX3J0cCh1aW50Mik7CnVzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDJfc2F0X3J0cCh1aW50Mik7CnVzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDJfcnRuKHVpbnQyKTsKdXNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0Ml9zYXRfcnRuKHVpbnQyKTsKdXNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0Mih1aW50Mik7CnVzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDJfc2F0KHVpbnQyKTsKdXNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0Ml9ydGUobG9uZzIpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQyX3NhdF9ydGUobG9uZzIpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQyX3J0eihsb25nMik7CnVzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDJfc2F0X3J0eihsb25nMik7CnVzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDJfcnRwKGxvbmcyKTsKdXNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0Ml9zYXRfcnRwKGxvbmcyKTsKdXNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0Ml9ydG4obG9uZzIpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQyX3NhdF9ydG4obG9uZzIpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQyKGxvbmcyKTsKdXNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0Ml9zYXQobG9uZzIpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQyX3J0ZSh1bG9uZzIpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQyX3NhdF9ydGUodWxvbmcyKTsKdXNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0Ml9ydHoodWxvbmcyKTsKdXNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0Ml9zYXRfcnR6KHVsb25nMik7CnVzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDJfcnRwKHVsb25nMik7CnVzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDJfc2F0X3J0cCh1bG9uZzIpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQyX3J0bih1bG9uZzIpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQyX3NhdF9ydG4odWxvbmcyKTsKdXNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0Mih1bG9uZzIpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQyX3NhdCh1bG9uZzIpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQyX3J0ZShmbG9hdDIpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQyX3NhdF9ydGUoZmxvYXQyKTsKdXNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0Ml9ydHooZmxvYXQyKTsKdXNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0Ml9zYXRfcnR6KGZsb2F0Mik7CnVzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDJfcnRwKGZsb2F0Mik7CnVzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDJfc2F0X3J0cChmbG9hdDIpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQyX3J0bihmbG9hdDIpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQyX3NhdF9ydG4oZmxvYXQyKTsKdXNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0MihmbG9hdDIpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQyX3NhdChmbG9hdDIpOwppbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQyX3J0ZShjaGFyMik7CmludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDJfc2F0X3J0ZShjaGFyMik7CmludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDJfcnR6KGNoYXIyKTsKaW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50Ml9zYXRfcnR6KGNoYXIyKTsKaW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50Ml9ydHAoY2hhcjIpOwppbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQyX3NhdF9ydHAoY2hhcjIpOwppbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQyX3J0bihjaGFyMik7CmludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDJfc2F0X3J0bihjaGFyMik7CmludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDIoY2hhcjIpOwppbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQyX3NhdChjaGFyMik7CmludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDJfcnRlKHVjaGFyMik7CmludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDJfc2F0X3J0ZSh1Y2hhcjIpOwppbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQyX3J0eih1Y2hhcjIpOwppbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQyX3NhdF9ydHoodWNoYXIyKTsKaW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50Ml9ydHAodWNoYXIyKTsKaW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50Ml9zYXRfcnRwKHVjaGFyMik7CmludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDJfcnRuKHVjaGFyMik7CmludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDJfc2F0X3J0bih1Y2hhcjIpOwppbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQyKHVjaGFyMik7CmludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDJfc2F0KHVjaGFyMik7CmludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDJfcnRlKHNob3J0Mik7CmludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDJfc2F0X3J0ZShzaG9ydDIpOwppbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQyX3J0eihzaG9ydDIpOwppbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQyX3NhdF9ydHooc2hvcnQyKTsKaW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50Ml9ydHAoc2hvcnQyKTsKaW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50Ml9zYXRfcnRwKHNob3J0Mik7CmludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDJfcnRuKHNob3J0Mik7CmludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDJfc2F0X3J0bihzaG9ydDIpOwppbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQyKHNob3J0Mik7CmludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDJfc2F0KHNob3J0Mik7CmludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDJfcnRlKHVzaG9ydDIpOwppbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQyX3NhdF9ydGUodXNob3J0Mik7CmludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDJfcnR6KHVzaG9ydDIpOwppbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQyX3NhdF9ydHoodXNob3J0Mik7CmludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDJfcnRwKHVzaG9ydDIpOwppbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQyX3NhdF9ydHAodXNob3J0Mik7CmludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDJfcnRuKHVzaG9ydDIpOwppbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQyX3NhdF9ydG4odXNob3J0Mik7CmludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDIodXNob3J0Mik7CmludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDJfc2F0KHVzaG9ydDIpOwppbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQyX3J0ZShpbnQyKTsKaW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50Ml9zYXRfcnRlKGludDIpOwppbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQyX3J0eihpbnQyKTsKaW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50Ml9zYXRfcnR6KGludDIpOwppbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQyX3J0cChpbnQyKTsKaW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50Ml9zYXRfcnRwKGludDIpOwppbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQyX3J0bihpbnQyKTsKaW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50Ml9zYXRfcnRuKGludDIpOwppbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQyKGludDIpOwppbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQyX3NhdChpbnQyKTsKaW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50Ml9ydGUodWludDIpOwppbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQyX3NhdF9ydGUodWludDIpOwppbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQyX3J0eih1aW50Mik7CmludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDJfc2F0X3J0eih1aW50Mik7CmludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDJfcnRwKHVpbnQyKTsKaW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50Ml9zYXRfcnRwKHVpbnQyKTsKaW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50Ml9ydG4odWludDIpOwppbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQyX3NhdF9ydG4odWludDIpOwppbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQyKHVpbnQyKTsKaW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50Ml9zYXQodWludDIpOwppbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQyX3J0ZShsb25nMik7CmludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDJfc2F0X3J0ZShsb25nMik7CmludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDJfcnR6KGxvbmcyKTsKaW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50Ml9zYXRfcnR6KGxvbmcyKTsKaW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50Ml9ydHAobG9uZzIpOwppbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQyX3NhdF9ydHAobG9uZzIpOwppbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQyX3J0bihsb25nMik7CmludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDJfc2F0X3J0bihsb25nMik7CmludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDIobG9uZzIpOwppbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQyX3NhdChsb25nMik7CmludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDJfcnRlKHVsb25nMik7CmludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDJfc2F0X3J0ZSh1bG9uZzIpOwppbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQyX3J0eih1bG9uZzIpOwppbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQyX3NhdF9ydHoodWxvbmcyKTsKaW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50Ml9ydHAodWxvbmcyKTsKaW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50Ml9zYXRfcnRwKHVsb25nMik7CmludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDJfcnRuKHVsb25nMik7CmludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDJfc2F0X3J0bih1bG9uZzIpOwppbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQyKHVsb25nMik7CmludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDJfc2F0KHVsb25nMik7CmludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDJfcnRlKGZsb2F0Mik7CmludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDJfc2F0X3J0ZShmbG9hdDIpOwppbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQyX3J0eihmbG9hdDIpOwppbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQyX3NhdF9ydHooZmxvYXQyKTsKaW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50Ml9ydHAoZmxvYXQyKTsKaW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50Ml9zYXRfcnRwKGZsb2F0Mik7CmludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDJfcnRuKGZsb2F0Mik7CmludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDJfc2F0X3J0bihmbG9hdDIpOwppbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQyKGZsb2F0Mik7CmludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDJfc2F0KGZsb2F0Mik7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50Ml9ydGUoY2hhcjIpOwp1aW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDJfc2F0X3J0ZShjaGFyMik7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50Ml9ydHooY2hhcjIpOwp1aW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDJfc2F0X3J0eihjaGFyMik7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50Ml9ydHAoY2hhcjIpOwp1aW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDJfc2F0X3J0cChjaGFyMik7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50Ml9ydG4oY2hhcjIpOwp1aW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDJfc2F0X3J0bihjaGFyMik7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50MihjaGFyMik7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50Ml9zYXQoY2hhcjIpOwp1aW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDJfcnRlKHVjaGFyMik7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50Ml9zYXRfcnRlKHVjaGFyMik7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50Ml9ydHoodWNoYXIyKTsKdWludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQyX3NhdF9ydHoodWNoYXIyKTsKdWludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQyX3J0cCh1Y2hhcjIpOwp1aW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDJfc2F0X3J0cCh1Y2hhcjIpOwp1aW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDJfcnRuKHVjaGFyMik7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50Ml9zYXRfcnRuKHVjaGFyMik7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50Mih1Y2hhcjIpOwp1aW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDJfc2F0KHVjaGFyMik7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50Ml9ydGUoc2hvcnQyKTsKdWludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQyX3NhdF9ydGUoc2hvcnQyKTsKdWludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQyX3J0eihzaG9ydDIpOwp1aW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDJfc2F0X3J0eihzaG9ydDIpOwp1aW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDJfcnRwKHNob3J0Mik7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50Ml9zYXRfcnRwKHNob3J0Mik7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50Ml9ydG4oc2hvcnQyKTsKdWludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQyX3NhdF9ydG4oc2hvcnQyKTsKdWludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQyKHNob3J0Mik7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50Ml9zYXQoc2hvcnQyKTsKdWludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQyX3J0ZSh1c2hvcnQyKTsKdWludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQyX3NhdF9ydGUodXNob3J0Mik7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50Ml9ydHoodXNob3J0Mik7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50Ml9zYXRfcnR6KHVzaG9ydDIpOwp1aW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDJfcnRwKHVzaG9ydDIpOwp1aW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDJfc2F0X3J0cCh1c2hvcnQyKTsKdWludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQyX3J0bih1c2hvcnQyKTsKdWludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQyX3NhdF9ydG4odXNob3J0Mik7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50Mih1c2hvcnQyKTsKdWludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQyX3NhdCh1c2hvcnQyKTsKdWludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQyX3J0ZShpbnQyKTsKdWludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQyX3NhdF9ydGUoaW50Mik7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50Ml9ydHooaW50Mik7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50Ml9zYXRfcnR6KGludDIpOwp1aW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDJfcnRwKGludDIpOwp1aW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDJfc2F0X3J0cChpbnQyKTsKdWludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQyX3J0bihpbnQyKTsKdWludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQyX3NhdF9ydG4oaW50Mik7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50MihpbnQyKTsKdWludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQyX3NhdChpbnQyKTsKdWludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQyX3J0ZSh1aW50Mik7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50Ml9zYXRfcnRlKHVpbnQyKTsKdWludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQyX3J0eih1aW50Mik7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50Ml9zYXRfcnR6KHVpbnQyKTsKdWludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQyX3J0cCh1aW50Mik7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50Ml9zYXRfcnRwKHVpbnQyKTsKdWludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQyX3J0bih1aW50Mik7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50Ml9zYXRfcnRuKHVpbnQyKTsKdWludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQyKHVpbnQyKTsKdWludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQyX3NhdCh1aW50Mik7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50Ml9ydGUobG9uZzIpOwp1aW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDJfc2F0X3J0ZShsb25nMik7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50Ml9ydHoobG9uZzIpOwp1aW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDJfc2F0X3J0eihsb25nMik7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50Ml9ydHAobG9uZzIpOwp1aW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDJfc2F0X3J0cChsb25nMik7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50Ml9ydG4obG9uZzIpOwp1aW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDJfc2F0X3J0bihsb25nMik7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50Mihsb25nMik7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50Ml9zYXQobG9uZzIpOwp1aW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDJfcnRlKHVsb25nMik7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50Ml9zYXRfcnRlKHVsb25nMik7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50Ml9ydHoodWxvbmcyKTsKdWludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQyX3NhdF9ydHoodWxvbmcyKTsKdWludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQyX3J0cCh1bG9uZzIpOwp1aW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDJfc2F0X3J0cCh1bG9uZzIpOwp1aW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDJfcnRuKHVsb25nMik7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50Ml9zYXRfcnRuKHVsb25nMik7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50Mih1bG9uZzIpOwp1aW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDJfc2F0KHVsb25nMik7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50Ml9ydGUoZmxvYXQyKTsKdWludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQyX3NhdF9ydGUoZmxvYXQyKTsKdWludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQyX3J0eihmbG9hdDIpOwp1aW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDJfc2F0X3J0eihmbG9hdDIpOwp1aW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDJfcnRwKGZsb2F0Mik7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50Ml9zYXRfcnRwKGZsb2F0Mik7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50Ml9ydG4oZmxvYXQyKTsKdWludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQyX3NhdF9ydG4oZmxvYXQyKTsKdWludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQyKGZsb2F0Mik7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50Ml9zYXQoZmxvYXQyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyX3J0ZShjaGFyMik7CmxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMl9zYXRfcnRlKGNoYXIyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyX3J0eihjaGFyMik7CmxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMl9zYXRfcnR6KGNoYXIyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyX3J0cChjaGFyMik7CmxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMl9zYXRfcnRwKGNoYXIyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyX3J0bihjaGFyMik7CmxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMl9zYXRfcnRuKGNoYXIyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyKGNoYXIyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyX3NhdChjaGFyMik7CmxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMl9ydGUodWNoYXIyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyX3NhdF9ydGUodWNoYXIyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyX3J0eih1Y2hhcjIpOwpsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzJfc2F0X3J0eih1Y2hhcjIpOwpsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzJfcnRwKHVjaGFyMik7CmxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMl9zYXRfcnRwKHVjaGFyMik7CmxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMl9ydG4odWNoYXIyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyX3NhdF9ydG4odWNoYXIyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyKHVjaGFyMik7CmxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMl9zYXQodWNoYXIyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyX3J0ZShzaG9ydDIpOwpsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzJfc2F0X3J0ZShzaG9ydDIpOwpsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzJfcnR6KHNob3J0Mik7CmxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMl9zYXRfcnR6KHNob3J0Mik7CmxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMl9ydHAoc2hvcnQyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyX3NhdF9ydHAoc2hvcnQyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyX3J0bihzaG9ydDIpOwpsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzJfc2F0X3J0bihzaG9ydDIpOwpsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzIoc2hvcnQyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyX3NhdChzaG9ydDIpOwpsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzJfcnRlKHVzaG9ydDIpOwpsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzJfc2F0X3J0ZSh1c2hvcnQyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyX3J0eih1c2hvcnQyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyX3NhdF9ydHoodXNob3J0Mik7CmxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMl9ydHAodXNob3J0Mik7CmxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMl9zYXRfcnRwKHVzaG9ydDIpOwpsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzJfcnRuKHVzaG9ydDIpOwpsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzJfc2F0X3J0bih1c2hvcnQyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyKHVzaG9ydDIpOwpsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzJfc2F0KHVzaG9ydDIpOwpsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzJfcnRlKGludDIpOwpsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzJfc2F0X3J0ZShpbnQyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyX3J0eihpbnQyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyX3NhdF9ydHooaW50Mik7CmxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMl9ydHAoaW50Mik7CmxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMl9zYXRfcnRwKGludDIpOwpsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzJfcnRuKGludDIpOwpsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzJfc2F0X3J0bihpbnQyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyKGludDIpOwpsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzJfc2F0KGludDIpOwpsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzJfcnRlKHVpbnQyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyX3NhdF9ydGUodWludDIpOwpsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzJfcnR6KHVpbnQyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyX3NhdF9ydHoodWludDIpOwpsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzJfcnRwKHVpbnQyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyX3NhdF9ydHAodWludDIpOwpsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzJfcnRuKHVpbnQyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyX3NhdF9ydG4odWludDIpOwpsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzIodWludDIpOwpsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzJfc2F0KHVpbnQyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyX3J0ZShsb25nMik7CmxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMl9zYXRfcnRlKGxvbmcyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyX3J0eihsb25nMik7CmxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMl9zYXRfcnR6KGxvbmcyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyX3J0cChsb25nMik7CmxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMl9zYXRfcnRwKGxvbmcyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyX3J0bihsb25nMik7CmxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMl9zYXRfcnRuKGxvbmcyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyKGxvbmcyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyX3NhdChsb25nMik7CmxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMl9ydGUodWxvbmcyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyX3NhdF9ydGUodWxvbmcyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyX3J0eih1bG9uZzIpOwpsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzJfc2F0X3J0eih1bG9uZzIpOwpsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzJfcnRwKHVsb25nMik7CmxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMl9zYXRfcnRwKHVsb25nMik7CmxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMl9ydG4odWxvbmcyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyX3NhdF9ydG4odWxvbmcyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyKHVsb25nMik7CmxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMl9zYXQodWxvbmcyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyX3J0ZShmbG9hdDIpOwpsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzJfc2F0X3J0ZShmbG9hdDIpOwpsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzJfcnR6KGZsb2F0Mik7CmxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMl9zYXRfcnR6KGZsb2F0Mik7CmxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMl9ydHAoZmxvYXQyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyX3NhdF9ydHAoZmxvYXQyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyX3J0bihmbG9hdDIpOwpsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzJfc2F0X3J0bihmbG9hdDIpOwpsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzIoZmxvYXQyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyX3NhdChmbG9hdDIpOwp1bG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMl9ydGUoY2hhcjIpOwp1bG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMl9zYXRfcnRlKGNoYXIyKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzJfcnR6KGNoYXIyKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzJfc2F0X3J0eihjaGFyMik7CnVsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcyX3J0cChjaGFyMik7CnVsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcyX3NhdF9ydHAoY2hhcjIpOwp1bG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMl9ydG4oY2hhcjIpOwp1bG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMl9zYXRfcnRuKGNoYXIyKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzIoY2hhcjIpOwp1bG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMl9zYXQoY2hhcjIpOwp1bG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMl9ydGUodWNoYXIyKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzJfc2F0X3J0ZSh1Y2hhcjIpOwp1bG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMl9ydHoodWNoYXIyKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzJfc2F0X3J0eih1Y2hhcjIpOwp1bG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMl9ydHAodWNoYXIyKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzJfc2F0X3J0cCh1Y2hhcjIpOwp1bG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMl9ydG4odWNoYXIyKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzJfc2F0X3J0bih1Y2hhcjIpOwp1bG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMih1Y2hhcjIpOwp1bG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMl9zYXQodWNoYXIyKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzJfcnRlKHNob3J0Mik7CnVsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcyX3NhdF9ydGUoc2hvcnQyKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzJfcnR6KHNob3J0Mik7CnVsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcyX3NhdF9ydHooc2hvcnQyKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzJfcnRwKHNob3J0Mik7CnVsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcyX3NhdF9ydHAoc2hvcnQyKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzJfcnRuKHNob3J0Mik7CnVsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcyX3NhdF9ydG4oc2hvcnQyKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzIoc2hvcnQyKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzJfc2F0KHNob3J0Mik7CnVsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcyX3J0ZSh1c2hvcnQyKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzJfc2F0X3J0ZSh1c2hvcnQyKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzJfcnR6KHVzaG9ydDIpOwp1bG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMl9zYXRfcnR6KHVzaG9ydDIpOwp1bG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMl9ydHAodXNob3J0Mik7CnVsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcyX3NhdF9ydHAodXNob3J0Mik7CnVsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcyX3J0bih1c2hvcnQyKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzJfc2F0X3J0bih1c2hvcnQyKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzIodXNob3J0Mik7CnVsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcyX3NhdCh1c2hvcnQyKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzJfcnRlKGludDIpOwp1bG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMl9zYXRfcnRlKGludDIpOwp1bG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMl9ydHooaW50Mik7CnVsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcyX3NhdF9ydHooaW50Mik7CnVsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcyX3J0cChpbnQyKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzJfc2F0X3J0cChpbnQyKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzJfcnRuKGludDIpOwp1bG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMl9zYXRfcnRuKGludDIpOwp1bG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMihpbnQyKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzJfc2F0KGludDIpOwp1bG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMl9ydGUodWludDIpOwp1bG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMl9zYXRfcnRlKHVpbnQyKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzJfcnR6KHVpbnQyKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzJfc2F0X3J0eih1aW50Mik7CnVsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcyX3J0cCh1aW50Mik7CnVsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcyX3NhdF9ydHAodWludDIpOwp1bG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMl9ydG4odWludDIpOwp1bG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMl9zYXRfcnRuKHVpbnQyKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzIodWludDIpOwp1bG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMl9zYXQodWludDIpOwp1bG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMl9ydGUobG9uZzIpOwp1bG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMl9zYXRfcnRlKGxvbmcyKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzJfcnR6KGxvbmcyKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzJfc2F0X3J0eihsb25nMik7CnVsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcyX3J0cChsb25nMik7CnVsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcyX3NhdF9ydHAobG9uZzIpOwp1bG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMl9ydG4obG9uZzIpOwp1bG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMl9zYXRfcnRuKGxvbmcyKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzIobG9uZzIpOwp1bG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMl9zYXQobG9uZzIpOwp1bG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMl9ydGUodWxvbmcyKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzJfc2F0X3J0ZSh1bG9uZzIpOwp1bG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMl9ydHoodWxvbmcyKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzJfc2F0X3J0eih1bG9uZzIpOwp1bG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMl9ydHAodWxvbmcyKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzJfc2F0X3J0cCh1bG9uZzIpOwp1bG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMl9ydG4odWxvbmcyKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzJfc2F0X3J0bih1bG9uZzIpOwp1bG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMih1bG9uZzIpOwp1bG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMl9zYXQodWxvbmcyKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzJfcnRlKGZsb2F0Mik7CnVsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcyX3NhdF9ydGUoZmxvYXQyKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzJfcnR6KGZsb2F0Mik7CnVsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcyX3NhdF9ydHooZmxvYXQyKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzJfcnRwKGZsb2F0Mik7CnVsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcyX3NhdF9ydHAoZmxvYXQyKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzJfcnRuKGZsb2F0Mik7CnVsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcyX3NhdF9ydG4oZmxvYXQyKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzIoZmxvYXQyKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzJfc2F0KGZsb2F0Mik7CmZsb2F0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQyX3J0ZShjaGFyMik7CmZsb2F0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQyX3J0eihjaGFyMik7CmZsb2F0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQyX3J0cChjaGFyMik7CmZsb2F0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQyX3J0bihjaGFyMik7CmZsb2F0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQyKGNoYXIyKTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDJfcnRlKHVjaGFyMik7CmZsb2F0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQyX3J0eih1Y2hhcjIpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0Ml9ydHAodWNoYXIyKTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDJfcnRuKHVjaGFyMik7CmZsb2F0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQyKHVjaGFyMik7CmZsb2F0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQyX3J0ZShzaG9ydDIpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0Ml9ydHooc2hvcnQyKTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDJfcnRwKHNob3J0Mik7CmZsb2F0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQyX3J0bihzaG9ydDIpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0MihzaG9ydDIpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0Ml9ydGUodXNob3J0Mik7CmZsb2F0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQyX3J0eih1c2hvcnQyKTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDJfcnRwKHVzaG9ydDIpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0Ml9ydG4odXNob3J0Mik7CmZsb2F0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQyKHVzaG9ydDIpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0Ml9ydGUoaW50Mik7CmZsb2F0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQyX3J0eihpbnQyKTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDJfcnRwKGludDIpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0Ml9ydG4oaW50Mik7CmZsb2F0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQyKGludDIpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0Ml9ydGUodWludDIpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0Ml9ydHoodWludDIpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0Ml9ydHAodWludDIpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0Ml9ydG4odWludDIpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0Mih1aW50Mik7CmZsb2F0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQyX3J0ZShsb25nMik7CmZsb2F0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQyX3J0eihsb25nMik7CmZsb2F0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQyX3J0cChsb25nMik7CmZsb2F0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQyX3J0bihsb25nMik7CmZsb2F0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQyKGxvbmcyKTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDJfcnRlKHVsb25nMik7CmZsb2F0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQyX3J0eih1bG9uZzIpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0Ml9ydHAodWxvbmcyKTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDJfcnRuKHVsb25nMik7CmZsb2F0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQyKHVsb25nMik7CmZsb2F0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQyX3J0ZShmbG9hdDIpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0Ml9ydHooZmxvYXQyKTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDJfcnRwKGZsb2F0Mik7CmZsb2F0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQyX3J0bihmbG9hdDIpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0MihmbG9hdDIpOwpjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjNfcnRlKGNoYXIzKTsKY2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIzX3NhdF9ydGUoY2hhcjMpOwpjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjNfcnR6KGNoYXIzKTsKY2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIzX3NhdF9ydHooY2hhcjMpOwpjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjNfcnRwKGNoYXIzKTsKY2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIzX3NhdF9ydHAoY2hhcjMpOwpjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjNfcnRuKGNoYXIzKTsKY2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIzX3NhdF9ydG4oY2hhcjMpOwpjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjMoY2hhcjMpOwpjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjNfc2F0KGNoYXIzKTsKY2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIzX3J0ZSh1Y2hhcjMpOwpjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjNfc2F0X3J0ZSh1Y2hhcjMpOwpjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjNfcnR6KHVjaGFyMyk7CmNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyM19zYXRfcnR6KHVjaGFyMyk7CmNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyM19ydHAodWNoYXIzKTsKY2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIzX3NhdF9ydHAodWNoYXIzKTsKY2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIzX3J0bih1Y2hhcjMpOwpjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjNfc2F0X3J0bih1Y2hhcjMpOwpjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjModWNoYXIzKTsKY2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIzX3NhdCh1Y2hhcjMpOwpjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjNfcnRlKHNob3J0Myk7CmNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyM19zYXRfcnRlKHNob3J0Myk7CmNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyM19ydHooc2hvcnQzKTsKY2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIzX3NhdF9ydHooc2hvcnQzKTsKY2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIzX3J0cChzaG9ydDMpOwpjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjNfc2F0X3J0cChzaG9ydDMpOwpjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjNfcnRuKHNob3J0Myk7CmNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyM19zYXRfcnRuKHNob3J0Myk7CmNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMyhzaG9ydDMpOwpjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjNfc2F0KHNob3J0Myk7CmNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyM19ydGUodXNob3J0Myk7CmNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyM19zYXRfcnRlKHVzaG9ydDMpOwpjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjNfcnR6KHVzaG9ydDMpOwpjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjNfc2F0X3J0eih1c2hvcnQzKTsKY2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIzX3J0cCh1c2hvcnQzKTsKY2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIzX3NhdF9ydHAodXNob3J0Myk7CmNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyM19ydG4odXNob3J0Myk7CmNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyM19zYXRfcnRuKHVzaG9ydDMpOwpjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjModXNob3J0Myk7CmNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyM19zYXQodXNob3J0Myk7CmNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyM19ydGUoaW50Myk7CmNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyM19zYXRfcnRlKGludDMpOwpjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjNfcnR6KGludDMpOwpjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjNfc2F0X3J0eihpbnQzKTsKY2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIzX3J0cChpbnQzKTsKY2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIzX3NhdF9ydHAoaW50Myk7CmNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyM19ydG4oaW50Myk7CmNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyM19zYXRfcnRuKGludDMpOwpjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjMoaW50Myk7CmNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyM19zYXQoaW50Myk7CmNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyM19ydGUodWludDMpOwpjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjNfc2F0X3J0ZSh1aW50Myk7CmNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyM19ydHoodWludDMpOwpjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjNfc2F0X3J0eih1aW50Myk7CmNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyM19ydHAodWludDMpOwpjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjNfc2F0X3J0cCh1aW50Myk7CmNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyM19ydG4odWludDMpOwpjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjNfc2F0X3J0bih1aW50Myk7CmNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMyh1aW50Myk7CmNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyM19zYXQodWludDMpOwpjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjNfcnRlKGxvbmczKTsKY2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIzX3NhdF9ydGUobG9uZzMpOwpjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjNfcnR6KGxvbmczKTsKY2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIzX3NhdF9ydHoobG9uZzMpOwpjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjNfcnRwKGxvbmczKTsKY2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIzX3NhdF9ydHAobG9uZzMpOwpjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjNfcnRuKGxvbmczKTsKY2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIzX3NhdF9ydG4obG9uZzMpOwpjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjMobG9uZzMpOwpjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjNfc2F0KGxvbmczKTsKY2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIzX3J0ZSh1bG9uZzMpOwpjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjNfc2F0X3J0ZSh1bG9uZzMpOwpjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjNfcnR6KHVsb25nMyk7CmNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyM19zYXRfcnR6KHVsb25nMyk7CmNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyM19ydHAodWxvbmczKTsKY2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIzX3NhdF9ydHAodWxvbmczKTsKY2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIzX3J0bih1bG9uZzMpOwpjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjNfc2F0X3J0bih1bG9uZzMpOwpjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjModWxvbmczKTsKY2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIzX3NhdCh1bG9uZzMpOwpjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjNfcnRlKGZsb2F0Myk7CmNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyM19zYXRfcnRlKGZsb2F0Myk7CmNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyM19ydHooZmxvYXQzKTsKY2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIzX3NhdF9ydHooZmxvYXQzKTsKY2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIzX3J0cChmbG9hdDMpOwpjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjNfc2F0X3J0cChmbG9hdDMpOwpjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjNfcnRuKGZsb2F0Myk7CmNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyM19zYXRfcnRuKGZsb2F0Myk7CmNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMyhmbG9hdDMpOwpjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjNfc2F0KGZsb2F0Myk7CnVjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIzX3J0ZShjaGFyMyk7CnVjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIzX3NhdF9ydGUoY2hhcjMpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyM19ydHooY2hhcjMpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyM19zYXRfcnR6KGNoYXIzKTsKdWNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjNfcnRwKGNoYXIzKTsKdWNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjNfc2F0X3J0cChjaGFyMyk7CnVjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIzX3J0bihjaGFyMyk7CnVjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIzX3NhdF9ydG4oY2hhcjMpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMyhjaGFyMyk7CnVjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIzX3NhdChjaGFyMyk7CnVjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIzX3J0ZSh1Y2hhcjMpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyM19zYXRfcnRlKHVjaGFyMyk7CnVjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIzX3J0eih1Y2hhcjMpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyM19zYXRfcnR6KHVjaGFyMyk7CnVjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIzX3J0cCh1Y2hhcjMpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyM19zYXRfcnRwKHVjaGFyMyk7CnVjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIzX3J0bih1Y2hhcjMpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyM19zYXRfcnRuKHVjaGFyMyk7CnVjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIzKHVjaGFyMyk7CnVjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIzX3NhdCh1Y2hhcjMpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyM19ydGUoc2hvcnQzKTsKdWNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjNfc2F0X3J0ZShzaG9ydDMpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyM19ydHooc2hvcnQzKTsKdWNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjNfc2F0X3J0eihzaG9ydDMpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyM19ydHAoc2hvcnQzKTsKdWNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjNfc2F0X3J0cChzaG9ydDMpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyM19ydG4oc2hvcnQzKTsKdWNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjNfc2F0X3J0bihzaG9ydDMpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMyhzaG9ydDMpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyM19zYXQoc2hvcnQzKTsKdWNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjNfcnRlKHVzaG9ydDMpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyM19zYXRfcnRlKHVzaG9ydDMpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyM19ydHoodXNob3J0Myk7CnVjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIzX3NhdF9ydHoodXNob3J0Myk7CnVjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIzX3J0cCh1c2hvcnQzKTsKdWNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjNfc2F0X3J0cCh1c2hvcnQzKTsKdWNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjNfcnRuKHVzaG9ydDMpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyM19zYXRfcnRuKHVzaG9ydDMpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMyh1c2hvcnQzKTsKdWNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjNfc2F0KHVzaG9ydDMpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyM19ydGUoaW50Myk7CnVjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIzX3NhdF9ydGUoaW50Myk7CnVjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIzX3J0eihpbnQzKTsKdWNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjNfc2F0X3J0eihpbnQzKTsKdWNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjNfcnRwKGludDMpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyM19zYXRfcnRwKGludDMpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyM19ydG4oaW50Myk7CnVjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIzX3NhdF9ydG4oaW50Myk7CnVjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIzKGludDMpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyM19zYXQoaW50Myk7CnVjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIzX3J0ZSh1aW50Myk7CnVjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIzX3NhdF9ydGUodWludDMpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyM19ydHoodWludDMpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyM19zYXRfcnR6KHVpbnQzKTsKdWNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjNfcnRwKHVpbnQzKTsKdWNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjNfc2F0X3J0cCh1aW50Myk7CnVjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIzX3J0bih1aW50Myk7CnVjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIzX3NhdF9ydG4odWludDMpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMyh1aW50Myk7CnVjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIzX3NhdCh1aW50Myk7CnVjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIzX3J0ZShsb25nMyk7CnVjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIzX3NhdF9ydGUobG9uZzMpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyM19ydHoobG9uZzMpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyM19zYXRfcnR6KGxvbmczKTsKdWNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjNfcnRwKGxvbmczKTsKdWNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjNfc2F0X3J0cChsb25nMyk7CnVjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIzX3J0bihsb25nMyk7CnVjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIzX3NhdF9ydG4obG9uZzMpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMyhsb25nMyk7CnVjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIzX3NhdChsb25nMyk7CnVjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIzX3J0ZSh1bG9uZzMpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyM19zYXRfcnRlKHVsb25nMyk7CnVjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIzX3J0eih1bG9uZzMpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyM19zYXRfcnR6KHVsb25nMyk7CnVjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIzX3J0cCh1bG9uZzMpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyM19zYXRfcnRwKHVsb25nMyk7CnVjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIzX3J0bih1bG9uZzMpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyM19zYXRfcnRuKHVsb25nMyk7CnVjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIzKHVsb25nMyk7CnVjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIzX3NhdCh1bG9uZzMpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyM19ydGUoZmxvYXQzKTsKdWNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjNfc2F0X3J0ZShmbG9hdDMpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyM19ydHooZmxvYXQzKTsKdWNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjNfc2F0X3J0eihmbG9hdDMpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyM19ydHAoZmxvYXQzKTsKdWNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjNfc2F0X3J0cChmbG9hdDMpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyM19ydG4oZmxvYXQzKTsKdWNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjNfc2F0X3J0bihmbG9hdDMpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMyhmbG9hdDMpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyM19zYXQoZmxvYXQzKTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDNfcnRlKGNoYXIzKTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDNfc2F0X3J0ZShjaGFyMyk7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzX3J0eihjaGFyMyk7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzX3NhdF9ydHooY2hhcjMpOwpzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0M19ydHAoY2hhcjMpOwpzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0M19zYXRfcnRwKGNoYXIzKTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDNfcnRuKGNoYXIzKTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDNfc2F0X3J0bihjaGFyMyk7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzKGNoYXIzKTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDNfc2F0KGNoYXIzKTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDNfcnRlKHVjaGFyMyk7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzX3NhdF9ydGUodWNoYXIzKTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDNfcnR6KHVjaGFyMyk7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzX3NhdF9ydHoodWNoYXIzKTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDNfcnRwKHVjaGFyMyk7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzX3NhdF9ydHAodWNoYXIzKTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDNfcnRuKHVjaGFyMyk7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzX3NhdF9ydG4odWNoYXIzKTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDModWNoYXIzKTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDNfc2F0KHVjaGFyMyk7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzX3J0ZShzaG9ydDMpOwpzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0M19zYXRfcnRlKHNob3J0Myk7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzX3J0eihzaG9ydDMpOwpzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0M19zYXRfcnR6KHNob3J0Myk7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzX3J0cChzaG9ydDMpOwpzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0M19zYXRfcnRwKHNob3J0Myk7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzX3J0bihzaG9ydDMpOwpzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0M19zYXRfcnRuKHNob3J0Myk7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzKHNob3J0Myk7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzX3NhdChzaG9ydDMpOwpzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0M19ydGUodXNob3J0Myk7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzX3NhdF9ydGUodXNob3J0Myk7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzX3J0eih1c2hvcnQzKTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDNfc2F0X3J0eih1c2hvcnQzKTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDNfcnRwKHVzaG9ydDMpOwpzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0M19zYXRfcnRwKHVzaG9ydDMpOwpzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0M19ydG4odXNob3J0Myk7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzX3NhdF9ydG4odXNob3J0Myk7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzKHVzaG9ydDMpOwpzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0M19zYXQodXNob3J0Myk7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzX3J0ZShpbnQzKTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDNfc2F0X3J0ZShpbnQzKTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDNfcnR6KGludDMpOwpzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0M19zYXRfcnR6KGludDMpOwpzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0M19ydHAoaW50Myk7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzX3NhdF9ydHAoaW50Myk7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzX3J0bihpbnQzKTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDNfc2F0X3J0bihpbnQzKTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDMoaW50Myk7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzX3NhdChpbnQzKTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDNfcnRlKHVpbnQzKTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDNfc2F0X3J0ZSh1aW50Myk7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzX3J0eih1aW50Myk7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzX3NhdF9ydHoodWludDMpOwpzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0M19ydHAodWludDMpOwpzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0M19zYXRfcnRwKHVpbnQzKTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDNfcnRuKHVpbnQzKTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDNfc2F0X3J0bih1aW50Myk7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzKHVpbnQzKTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDNfc2F0KHVpbnQzKTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDNfcnRlKGxvbmczKTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDNfc2F0X3J0ZShsb25nMyk7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzX3J0eihsb25nMyk7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzX3NhdF9ydHoobG9uZzMpOwpzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0M19ydHAobG9uZzMpOwpzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0M19zYXRfcnRwKGxvbmczKTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDNfcnRuKGxvbmczKTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDNfc2F0X3J0bihsb25nMyk7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzKGxvbmczKTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDNfc2F0KGxvbmczKTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDNfcnRlKHVsb25nMyk7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzX3NhdF9ydGUodWxvbmczKTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDNfcnR6KHVsb25nMyk7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzX3NhdF9ydHoodWxvbmczKTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDNfcnRwKHVsb25nMyk7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzX3NhdF9ydHAodWxvbmczKTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDNfcnRuKHVsb25nMyk7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzX3NhdF9ydG4odWxvbmczKTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDModWxvbmczKTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDNfc2F0KHVsb25nMyk7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzX3J0ZShmbG9hdDMpOwpzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0M19zYXRfcnRlKGZsb2F0Myk7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzX3J0eihmbG9hdDMpOwpzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0M19zYXRfcnR6KGZsb2F0Myk7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzX3J0cChmbG9hdDMpOwpzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0M19zYXRfcnRwKGZsb2F0Myk7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzX3J0bihmbG9hdDMpOwpzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0M19zYXRfcnRuKGZsb2F0Myk7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzKGZsb2F0Myk7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzX3NhdChmbG9hdDMpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQzX3J0ZShjaGFyMyk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDNfc2F0X3J0ZShjaGFyMyk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDNfcnR6KGNoYXIzKTsKdXNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0M19zYXRfcnR6KGNoYXIzKTsKdXNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0M19ydHAoY2hhcjMpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQzX3NhdF9ydHAoY2hhcjMpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQzX3J0bihjaGFyMyk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDNfc2F0X3J0bihjaGFyMyk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDMoY2hhcjMpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQzX3NhdChjaGFyMyk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDNfcnRlKHVjaGFyMyk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDNfc2F0X3J0ZSh1Y2hhcjMpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQzX3J0eih1Y2hhcjMpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQzX3NhdF9ydHoodWNoYXIzKTsKdXNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0M19ydHAodWNoYXIzKTsKdXNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0M19zYXRfcnRwKHVjaGFyMyk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDNfcnRuKHVjaGFyMyk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDNfc2F0X3J0bih1Y2hhcjMpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQzKHVjaGFyMyk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDNfc2F0KHVjaGFyMyk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDNfcnRlKHNob3J0Myk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDNfc2F0X3J0ZShzaG9ydDMpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQzX3J0eihzaG9ydDMpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQzX3NhdF9ydHooc2hvcnQzKTsKdXNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0M19ydHAoc2hvcnQzKTsKdXNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0M19zYXRfcnRwKHNob3J0Myk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDNfcnRuKHNob3J0Myk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDNfc2F0X3J0bihzaG9ydDMpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQzKHNob3J0Myk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDNfc2F0KHNob3J0Myk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDNfcnRlKHVzaG9ydDMpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQzX3NhdF9ydGUodXNob3J0Myk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDNfcnR6KHVzaG9ydDMpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQzX3NhdF9ydHoodXNob3J0Myk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDNfcnRwKHVzaG9ydDMpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQzX3NhdF9ydHAodXNob3J0Myk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDNfcnRuKHVzaG9ydDMpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQzX3NhdF9ydG4odXNob3J0Myk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDModXNob3J0Myk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDNfc2F0KHVzaG9ydDMpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQzX3J0ZShpbnQzKTsKdXNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0M19zYXRfcnRlKGludDMpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQzX3J0eihpbnQzKTsKdXNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0M19zYXRfcnR6KGludDMpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQzX3J0cChpbnQzKTsKdXNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0M19zYXRfcnRwKGludDMpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQzX3J0bihpbnQzKTsKdXNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0M19zYXRfcnRuKGludDMpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQzKGludDMpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQzX3NhdChpbnQzKTsKdXNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0M19ydGUodWludDMpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQzX3NhdF9ydGUodWludDMpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQzX3J0eih1aW50Myk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDNfc2F0X3J0eih1aW50Myk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDNfcnRwKHVpbnQzKTsKdXNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0M19zYXRfcnRwKHVpbnQzKTsKdXNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0M19ydG4odWludDMpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQzX3NhdF9ydG4odWludDMpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQzKHVpbnQzKTsKdXNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0M19zYXQodWludDMpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQzX3J0ZShsb25nMyk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDNfc2F0X3J0ZShsb25nMyk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDNfcnR6KGxvbmczKTsKdXNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0M19zYXRfcnR6KGxvbmczKTsKdXNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0M19ydHAobG9uZzMpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQzX3NhdF9ydHAobG9uZzMpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQzX3J0bihsb25nMyk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDNfc2F0X3J0bihsb25nMyk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDMobG9uZzMpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQzX3NhdChsb25nMyk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDNfcnRlKHVsb25nMyk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDNfc2F0X3J0ZSh1bG9uZzMpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQzX3J0eih1bG9uZzMpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQzX3NhdF9ydHoodWxvbmczKTsKdXNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0M19ydHAodWxvbmczKTsKdXNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0M19zYXRfcnRwKHVsb25nMyk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDNfcnRuKHVsb25nMyk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDNfc2F0X3J0bih1bG9uZzMpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQzKHVsb25nMyk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDNfc2F0KHVsb25nMyk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDNfcnRlKGZsb2F0Myk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDNfc2F0X3J0ZShmbG9hdDMpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQzX3J0eihmbG9hdDMpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQzX3NhdF9ydHooZmxvYXQzKTsKdXNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0M19ydHAoZmxvYXQzKTsKdXNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0M19zYXRfcnRwKGZsb2F0Myk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDNfcnRuKGZsb2F0Myk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDNfc2F0X3J0bihmbG9hdDMpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQzKGZsb2F0Myk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDNfc2F0KGZsb2F0Myk7CmludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDNfcnRlKGNoYXIzKTsKaW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50M19zYXRfcnRlKGNoYXIzKTsKaW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50M19ydHooY2hhcjMpOwppbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQzX3NhdF9ydHooY2hhcjMpOwppbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQzX3J0cChjaGFyMyk7CmludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDNfc2F0X3J0cChjaGFyMyk7CmludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDNfcnRuKGNoYXIzKTsKaW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50M19zYXRfcnRuKGNoYXIzKTsKaW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50MyhjaGFyMyk7CmludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDNfc2F0KGNoYXIzKTsKaW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50M19ydGUodWNoYXIzKTsKaW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50M19zYXRfcnRlKHVjaGFyMyk7CmludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDNfcnR6KHVjaGFyMyk7CmludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDNfc2F0X3J0eih1Y2hhcjMpOwppbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQzX3J0cCh1Y2hhcjMpOwppbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQzX3NhdF9ydHAodWNoYXIzKTsKaW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50M19ydG4odWNoYXIzKTsKaW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50M19zYXRfcnRuKHVjaGFyMyk7CmludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDModWNoYXIzKTsKaW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50M19zYXQodWNoYXIzKTsKaW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50M19ydGUoc2hvcnQzKTsKaW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50M19zYXRfcnRlKHNob3J0Myk7CmludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDNfcnR6KHNob3J0Myk7CmludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDNfc2F0X3J0eihzaG9ydDMpOwppbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQzX3J0cChzaG9ydDMpOwppbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQzX3NhdF9ydHAoc2hvcnQzKTsKaW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50M19ydG4oc2hvcnQzKTsKaW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50M19zYXRfcnRuKHNob3J0Myk7CmludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDMoc2hvcnQzKTsKaW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50M19zYXQoc2hvcnQzKTsKaW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50M19ydGUodXNob3J0Myk7CmludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDNfc2F0X3J0ZSh1c2hvcnQzKTsKaW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50M19ydHoodXNob3J0Myk7CmludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDNfc2F0X3J0eih1c2hvcnQzKTsKaW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50M19ydHAodXNob3J0Myk7CmludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDNfc2F0X3J0cCh1c2hvcnQzKTsKaW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50M19ydG4odXNob3J0Myk7CmludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDNfc2F0X3J0bih1c2hvcnQzKTsKaW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50Myh1c2hvcnQzKTsKaW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50M19zYXQodXNob3J0Myk7CmludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDNfcnRlKGludDMpOwppbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQzX3NhdF9ydGUoaW50Myk7CmludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDNfcnR6KGludDMpOwppbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQzX3NhdF9ydHooaW50Myk7CmludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDNfcnRwKGludDMpOwppbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQzX3NhdF9ydHAoaW50Myk7CmludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDNfcnRuKGludDMpOwppbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQzX3NhdF9ydG4oaW50Myk7CmludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDMoaW50Myk7CmludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDNfc2F0KGludDMpOwppbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQzX3J0ZSh1aW50Myk7CmludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDNfc2F0X3J0ZSh1aW50Myk7CmludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDNfcnR6KHVpbnQzKTsKaW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50M19zYXRfcnR6KHVpbnQzKTsKaW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50M19ydHAodWludDMpOwppbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQzX3NhdF9ydHAodWludDMpOwppbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQzX3J0bih1aW50Myk7CmludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDNfc2F0X3J0bih1aW50Myk7CmludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDModWludDMpOwppbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQzX3NhdCh1aW50Myk7CmludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDNfcnRlKGxvbmczKTsKaW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50M19zYXRfcnRlKGxvbmczKTsKaW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50M19ydHoobG9uZzMpOwppbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQzX3NhdF9ydHoobG9uZzMpOwppbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQzX3J0cChsb25nMyk7CmludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDNfc2F0X3J0cChsb25nMyk7CmludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDNfcnRuKGxvbmczKTsKaW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50M19zYXRfcnRuKGxvbmczKTsKaW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50Myhsb25nMyk7CmludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDNfc2F0KGxvbmczKTsKaW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50M19ydGUodWxvbmczKTsKaW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50M19zYXRfcnRlKHVsb25nMyk7CmludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDNfcnR6KHVsb25nMyk7CmludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDNfc2F0X3J0eih1bG9uZzMpOwppbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQzX3J0cCh1bG9uZzMpOwppbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQzX3NhdF9ydHAodWxvbmczKTsKaW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50M19ydG4odWxvbmczKTsKaW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50M19zYXRfcnRuKHVsb25nMyk7CmludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDModWxvbmczKTsKaW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50M19zYXQodWxvbmczKTsKaW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50M19ydGUoZmxvYXQzKTsKaW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50M19zYXRfcnRlKGZsb2F0Myk7CmludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDNfcnR6KGZsb2F0Myk7CmludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDNfc2F0X3J0eihmbG9hdDMpOwppbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQzX3J0cChmbG9hdDMpOwppbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQzX3NhdF9ydHAoZmxvYXQzKTsKaW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50M19ydG4oZmxvYXQzKTsKaW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50M19zYXRfcnRuKGZsb2F0Myk7CmludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDMoZmxvYXQzKTsKaW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50M19zYXQoZmxvYXQzKTsKdWludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQzX3J0ZShjaGFyMyk7CnVpbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50M19zYXRfcnRlKGNoYXIzKTsKdWludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQzX3J0eihjaGFyMyk7CnVpbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50M19zYXRfcnR6KGNoYXIzKTsKdWludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQzX3J0cChjaGFyMyk7CnVpbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50M19zYXRfcnRwKGNoYXIzKTsKdWludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQzX3J0bihjaGFyMyk7CnVpbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50M19zYXRfcnRuKGNoYXIzKTsKdWludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQzKGNoYXIzKTsKdWludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQzX3NhdChjaGFyMyk7CnVpbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50M19ydGUodWNoYXIzKTsKdWludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQzX3NhdF9ydGUodWNoYXIzKTsKdWludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQzX3J0eih1Y2hhcjMpOwp1aW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDNfc2F0X3J0eih1Y2hhcjMpOwp1aW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDNfcnRwKHVjaGFyMyk7CnVpbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50M19zYXRfcnRwKHVjaGFyMyk7CnVpbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50M19ydG4odWNoYXIzKTsKdWludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQzX3NhdF9ydG4odWNoYXIzKTsKdWludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQzKHVjaGFyMyk7CnVpbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50M19zYXQodWNoYXIzKTsKdWludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQzX3J0ZShzaG9ydDMpOwp1aW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDNfc2F0X3J0ZShzaG9ydDMpOwp1aW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDNfcnR6KHNob3J0Myk7CnVpbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50M19zYXRfcnR6KHNob3J0Myk7CnVpbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50M19ydHAoc2hvcnQzKTsKdWludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQzX3NhdF9ydHAoc2hvcnQzKTsKdWludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQzX3J0bihzaG9ydDMpOwp1aW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDNfc2F0X3J0bihzaG9ydDMpOwp1aW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDMoc2hvcnQzKTsKdWludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQzX3NhdChzaG9ydDMpOwp1aW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDNfcnRlKHVzaG9ydDMpOwp1aW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDNfc2F0X3J0ZSh1c2hvcnQzKTsKdWludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQzX3J0eih1c2hvcnQzKTsKdWludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQzX3NhdF9ydHoodXNob3J0Myk7CnVpbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50M19ydHAodXNob3J0Myk7CnVpbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50M19zYXRfcnRwKHVzaG9ydDMpOwp1aW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDNfcnRuKHVzaG9ydDMpOwp1aW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDNfc2F0X3J0bih1c2hvcnQzKTsKdWludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQzKHVzaG9ydDMpOwp1aW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDNfc2F0KHVzaG9ydDMpOwp1aW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDNfcnRlKGludDMpOwp1aW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDNfc2F0X3J0ZShpbnQzKTsKdWludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQzX3J0eihpbnQzKTsKdWludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQzX3NhdF9ydHooaW50Myk7CnVpbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50M19ydHAoaW50Myk7CnVpbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50M19zYXRfcnRwKGludDMpOwp1aW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDNfcnRuKGludDMpOwp1aW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDNfc2F0X3J0bihpbnQzKTsKdWludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQzKGludDMpOwp1aW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDNfc2F0KGludDMpOwp1aW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDNfcnRlKHVpbnQzKTsKdWludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQzX3NhdF9ydGUodWludDMpOwp1aW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDNfcnR6KHVpbnQzKTsKdWludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQzX3NhdF9ydHoodWludDMpOwp1aW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDNfcnRwKHVpbnQzKTsKdWludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQzX3NhdF9ydHAodWludDMpOwp1aW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDNfcnRuKHVpbnQzKTsKdWludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQzX3NhdF9ydG4odWludDMpOwp1aW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDModWludDMpOwp1aW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDNfc2F0KHVpbnQzKTsKdWludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQzX3J0ZShsb25nMyk7CnVpbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50M19zYXRfcnRlKGxvbmczKTsKdWludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQzX3J0eihsb25nMyk7CnVpbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50M19zYXRfcnR6KGxvbmczKTsKdWludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQzX3J0cChsb25nMyk7CnVpbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50M19zYXRfcnRwKGxvbmczKTsKdWludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQzX3J0bihsb25nMyk7CnVpbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50M19zYXRfcnRuKGxvbmczKTsKdWludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQzKGxvbmczKTsKdWludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQzX3NhdChsb25nMyk7CnVpbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50M19ydGUodWxvbmczKTsKdWludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQzX3NhdF9ydGUodWxvbmczKTsKdWludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQzX3J0eih1bG9uZzMpOwp1aW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDNfc2F0X3J0eih1bG9uZzMpOwp1aW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDNfcnRwKHVsb25nMyk7CnVpbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50M19zYXRfcnRwKHVsb25nMyk7CnVpbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50M19ydG4odWxvbmczKTsKdWludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQzX3NhdF9ydG4odWxvbmczKTsKdWludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQzKHVsb25nMyk7CnVpbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50M19zYXQodWxvbmczKTsKdWludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQzX3J0ZShmbG9hdDMpOwp1aW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDNfc2F0X3J0ZShmbG9hdDMpOwp1aW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDNfcnR6KGZsb2F0Myk7CnVpbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50M19zYXRfcnR6KGZsb2F0Myk7CnVpbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50M19ydHAoZmxvYXQzKTsKdWludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQzX3NhdF9ydHAoZmxvYXQzKTsKdWludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQzX3J0bihmbG9hdDMpOwp1aW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDNfc2F0X3J0bihmbG9hdDMpOwp1aW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDMoZmxvYXQzKTsKdWludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQzX3NhdChmbG9hdDMpOwpsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzNfcnRlKGNoYXIzKTsKbG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmczX3NhdF9ydGUoY2hhcjMpOwpsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzNfcnR6KGNoYXIzKTsKbG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmczX3NhdF9ydHooY2hhcjMpOwpsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzNfcnRwKGNoYXIzKTsKbG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmczX3NhdF9ydHAoY2hhcjMpOwpsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzNfcnRuKGNoYXIzKTsKbG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmczX3NhdF9ydG4oY2hhcjMpOwpsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzMoY2hhcjMpOwpsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzNfc2F0KGNoYXIzKTsKbG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmczX3J0ZSh1Y2hhcjMpOwpsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzNfc2F0X3J0ZSh1Y2hhcjMpOwpsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzNfcnR6KHVjaGFyMyk7CmxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nM19zYXRfcnR6KHVjaGFyMyk7CmxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nM19ydHAodWNoYXIzKTsKbG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmczX3NhdF9ydHAodWNoYXIzKTsKbG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmczX3J0bih1Y2hhcjMpOwpsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzNfc2F0X3J0bih1Y2hhcjMpOwpsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzModWNoYXIzKTsKbG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmczX3NhdCh1Y2hhcjMpOwpsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzNfcnRlKHNob3J0Myk7CmxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nM19zYXRfcnRlKHNob3J0Myk7CmxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nM19ydHooc2hvcnQzKTsKbG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmczX3NhdF9ydHooc2hvcnQzKTsKbG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmczX3J0cChzaG9ydDMpOwpsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzNfc2F0X3J0cChzaG9ydDMpOwpsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzNfcnRuKHNob3J0Myk7CmxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nM19zYXRfcnRuKHNob3J0Myk7CmxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMyhzaG9ydDMpOwpsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzNfc2F0KHNob3J0Myk7CmxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nM19ydGUodXNob3J0Myk7CmxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nM19zYXRfcnRlKHVzaG9ydDMpOwpsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzNfcnR6KHVzaG9ydDMpOwpsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzNfc2F0X3J0eih1c2hvcnQzKTsKbG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmczX3J0cCh1c2hvcnQzKTsKbG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmczX3NhdF9ydHAodXNob3J0Myk7CmxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nM19ydG4odXNob3J0Myk7CmxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nM19zYXRfcnRuKHVzaG9ydDMpOwpsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzModXNob3J0Myk7CmxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nM19zYXQodXNob3J0Myk7CmxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nM19ydGUoaW50Myk7CmxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nM19zYXRfcnRlKGludDMpOwpsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzNfcnR6KGludDMpOwpsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzNfc2F0X3J0eihpbnQzKTsKbG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmczX3J0cChpbnQzKTsKbG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmczX3NhdF9ydHAoaW50Myk7CmxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nM19ydG4oaW50Myk7CmxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nM19zYXRfcnRuKGludDMpOwpsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzMoaW50Myk7CmxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nM19zYXQoaW50Myk7CmxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nM19ydGUodWludDMpOwpsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzNfc2F0X3J0ZSh1aW50Myk7CmxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nM19ydHoodWludDMpOwpsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzNfc2F0X3J0eih1aW50Myk7CmxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nM19ydHAodWludDMpOwpsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzNfc2F0X3J0cCh1aW50Myk7CmxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nM19ydG4odWludDMpOwpsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzNfc2F0X3J0bih1aW50Myk7CmxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMyh1aW50Myk7CmxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nM19zYXQodWludDMpOwpsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzNfcnRlKGxvbmczKTsKbG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmczX3NhdF9ydGUobG9uZzMpOwpsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzNfcnR6KGxvbmczKTsKbG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmczX3NhdF9ydHoobG9uZzMpOwpsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzNfcnRwKGxvbmczKTsKbG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmczX3NhdF9ydHAobG9uZzMpOwpsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzNfcnRuKGxvbmczKTsKbG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmczX3NhdF9ydG4obG9uZzMpOwpsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzMobG9uZzMpOwpsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzNfc2F0KGxvbmczKTsKbG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmczX3J0ZSh1bG9uZzMpOwpsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzNfc2F0X3J0ZSh1bG9uZzMpOwpsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzNfcnR6KHVsb25nMyk7CmxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nM19zYXRfcnR6KHVsb25nMyk7CmxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nM19ydHAodWxvbmczKTsKbG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmczX3NhdF9ydHAodWxvbmczKTsKbG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmczX3J0bih1bG9uZzMpOwpsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzNfc2F0X3J0bih1bG9uZzMpOwpsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzModWxvbmczKTsKbG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmczX3NhdCh1bG9uZzMpOwpsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzNfcnRlKGZsb2F0Myk7CmxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nM19zYXRfcnRlKGZsb2F0Myk7CmxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nM19ydHooZmxvYXQzKTsKbG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmczX3NhdF9ydHooZmxvYXQzKTsKbG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmczX3J0cChmbG9hdDMpOwpsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzNfc2F0X3J0cChmbG9hdDMpOwpsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzNfcnRuKGZsb2F0Myk7CmxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nM19zYXRfcnRuKGZsb2F0Myk7CmxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMyhmbG9hdDMpOwpsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzNfc2F0KGZsb2F0Myk7CnVsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmczX3J0ZShjaGFyMyk7CnVsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmczX3NhdF9ydGUoY2hhcjMpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nM19ydHooY2hhcjMpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nM19zYXRfcnR6KGNoYXIzKTsKdWxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzNfcnRwKGNoYXIzKTsKdWxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzNfc2F0X3J0cChjaGFyMyk7CnVsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmczX3J0bihjaGFyMyk7CnVsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmczX3NhdF9ydG4oY2hhcjMpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMyhjaGFyMyk7CnVsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmczX3NhdChjaGFyMyk7CnVsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmczX3J0ZSh1Y2hhcjMpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nM19zYXRfcnRlKHVjaGFyMyk7CnVsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmczX3J0eih1Y2hhcjMpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nM19zYXRfcnR6KHVjaGFyMyk7CnVsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmczX3J0cCh1Y2hhcjMpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nM19zYXRfcnRwKHVjaGFyMyk7CnVsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmczX3J0bih1Y2hhcjMpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nM19zYXRfcnRuKHVjaGFyMyk7CnVsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmczKHVjaGFyMyk7CnVsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmczX3NhdCh1Y2hhcjMpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nM19ydGUoc2hvcnQzKTsKdWxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzNfc2F0X3J0ZShzaG9ydDMpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nM19ydHooc2hvcnQzKTsKdWxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzNfc2F0X3J0eihzaG9ydDMpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nM19ydHAoc2hvcnQzKTsKdWxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzNfc2F0X3J0cChzaG9ydDMpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nM19ydG4oc2hvcnQzKTsKdWxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzNfc2F0X3J0bihzaG9ydDMpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMyhzaG9ydDMpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nM19zYXQoc2hvcnQzKTsKdWxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzNfcnRlKHVzaG9ydDMpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nM19zYXRfcnRlKHVzaG9ydDMpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nM19ydHoodXNob3J0Myk7CnVsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmczX3NhdF9ydHoodXNob3J0Myk7CnVsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmczX3J0cCh1c2hvcnQzKTsKdWxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzNfc2F0X3J0cCh1c2hvcnQzKTsKdWxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzNfcnRuKHVzaG9ydDMpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nM19zYXRfcnRuKHVzaG9ydDMpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMyh1c2hvcnQzKTsKdWxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzNfc2F0KHVzaG9ydDMpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nM19ydGUoaW50Myk7CnVsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmczX3NhdF9ydGUoaW50Myk7CnVsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmczX3J0eihpbnQzKTsKdWxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzNfc2F0X3J0eihpbnQzKTsKdWxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzNfcnRwKGludDMpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nM19zYXRfcnRwKGludDMpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nM19ydG4oaW50Myk7CnVsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmczX3NhdF9ydG4oaW50Myk7CnVsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmczKGludDMpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nM19zYXQoaW50Myk7CnVsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmczX3J0ZSh1aW50Myk7CnVsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmczX3NhdF9ydGUodWludDMpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nM19ydHoodWludDMpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nM19zYXRfcnR6KHVpbnQzKTsKdWxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzNfcnRwKHVpbnQzKTsKdWxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzNfc2F0X3J0cCh1aW50Myk7CnVsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmczX3J0bih1aW50Myk7CnVsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmczX3NhdF9ydG4odWludDMpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMyh1aW50Myk7CnVsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmczX3NhdCh1aW50Myk7CnVsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmczX3J0ZShsb25nMyk7CnVsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmczX3NhdF9ydGUobG9uZzMpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nM19ydHoobG9uZzMpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nM19zYXRfcnR6KGxvbmczKTsKdWxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzNfcnRwKGxvbmczKTsKdWxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzNfc2F0X3J0cChsb25nMyk7CnVsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmczX3J0bihsb25nMyk7CnVsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmczX3NhdF9ydG4obG9uZzMpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMyhsb25nMyk7CnVsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmczX3NhdChsb25nMyk7CnVsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmczX3J0ZSh1bG9uZzMpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nM19zYXRfcnRlKHVsb25nMyk7CnVsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmczX3J0eih1bG9uZzMpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nM19zYXRfcnR6KHVsb25nMyk7CnVsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmczX3J0cCh1bG9uZzMpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nM19zYXRfcnRwKHVsb25nMyk7CnVsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmczX3J0bih1bG9uZzMpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nM19zYXRfcnRuKHVsb25nMyk7CnVsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmczKHVsb25nMyk7CnVsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmczX3NhdCh1bG9uZzMpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nM19ydGUoZmxvYXQzKTsKdWxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzNfc2F0X3J0ZShmbG9hdDMpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nM19ydHooZmxvYXQzKTsKdWxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzNfc2F0X3J0eihmbG9hdDMpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nM19ydHAoZmxvYXQzKTsKdWxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzNfc2F0X3J0cChmbG9hdDMpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nM19ydG4oZmxvYXQzKTsKdWxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzNfc2F0X3J0bihmbG9hdDMpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMyhmbG9hdDMpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nM19zYXQoZmxvYXQzKTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDNfcnRlKGNoYXIzKTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDNfcnR6KGNoYXIzKTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDNfcnRwKGNoYXIzKTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDNfcnRuKGNoYXIzKTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDMoY2hhcjMpOwpmbG9hdDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0M19ydGUodWNoYXIzKTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDNfcnR6KHVjaGFyMyk7CmZsb2F0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQzX3J0cCh1Y2hhcjMpOwpmbG9hdDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0M19ydG4odWNoYXIzKTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDModWNoYXIzKTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDNfcnRlKHNob3J0Myk7CmZsb2F0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQzX3J0eihzaG9ydDMpOwpmbG9hdDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0M19ydHAoc2hvcnQzKTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDNfcnRuKHNob3J0Myk7CmZsb2F0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQzKHNob3J0Myk7CmZsb2F0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQzX3J0ZSh1c2hvcnQzKTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDNfcnR6KHVzaG9ydDMpOwpmbG9hdDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0M19ydHAodXNob3J0Myk7CmZsb2F0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQzX3J0bih1c2hvcnQzKTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDModXNob3J0Myk7CmZsb2F0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQzX3J0ZShpbnQzKTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDNfcnR6KGludDMpOwpmbG9hdDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0M19ydHAoaW50Myk7CmZsb2F0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQzX3J0bihpbnQzKTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDMoaW50Myk7CmZsb2F0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQzX3J0ZSh1aW50Myk7CmZsb2F0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQzX3J0eih1aW50Myk7CmZsb2F0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQzX3J0cCh1aW50Myk7CmZsb2F0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQzX3J0bih1aW50Myk7CmZsb2F0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQzKHVpbnQzKTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDNfcnRlKGxvbmczKTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDNfcnR6KGxvbmczKTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDNfcnRwKGxvbmczKTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDNfcnRuKGxvbmczKTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDMobG9uZzMpOwpmbG9hdDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0M19ydGUodWxvbmczKTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDNfcnR6KHVsb25nMyk7CmZsb2F0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQzX3J0cCh1bG9uZzMpOwpmbG9hdDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0M19ydG4odWxvbmczKTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDModWxvbmczKTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDNfcnRlKGZsb2F0Myk7CmZsb2F0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQzX3J0eihmbG9hdDMpOwpmbG9hdDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0M19ydHAoZmxvYXQzKTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDNfcnRuKGZsb2F0Myk7CmZsb2F0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQzKGZsb2F0Myk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyNF9ydGUoY2hhcjQpOwpjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjRfc2F0X3J0ZShjaGFyNCk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyNF9ydHooY2hhcjQpOwpjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjRfc2F0X3J0eihjaGFyNCk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyNF9ydHAoY2hhcjQpOwpjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjRfc2F0X3J0cChjaGFyNCk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyNF9ydG4oY2hhcjQpOwpjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjRfc2F0X3J0bihjaGFyNCk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyNChjaGFyNCk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyNF9zYXQoY2hhcjQpOwpjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjRfcnRlKHVjaGFyNCk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyNF9zYXRfcnRlKHVjaGFyNCk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyNF9ydHoodWNoYXI0KTsKY2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI0X3NhdF9ydHoodWNoYXI0KTsKY2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI0X3J0cCh1Y2hhcjQpOwpjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjRfc2F0X3J0cCh1Y2hhcjQpOwpjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjRfcnRuKHVjaGFyNCk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyNF9zYXRfcnRuKHVjaGFyNCk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyNCh1Y2hhcjQpOwpjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjRfc2F0KHVjaGFyNCk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyNF9ydGUoc2hvcnQ0KTsKY2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI0X3NhdF9ydGUoc2hvcnQ0KTsKY2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI0X3J0eihzaG9ydDQpOwpjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjRfc2F0X3J0eihzaG9ydDQpOwpjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjRfcnRwKHNob3J0NCk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyNF9zYXRfcnRwKHNob3J0NCk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyNF9ydG4oc2hvcnQ0KTsKY2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI0X3NhdF9ydG4oc2hvcnQ0KTsKY2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI0KHNob3J0NCk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyNF9zYXQoc2hvcnQ0KTsKY2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI0X3J0ZSh1c2hvcnQ0KTsKY2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI0X3NhdF9ydGUodXNob3J0NCk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyNF9ydHoodXNob3J0NCk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyNF9zYXRfcnR6KHVzaG9ydDQpOwpjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjRfcnRwKHVzaG9ydDQpOwpjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjRfc2F0X3J0cCh1c2hvcnQ0KTsKY2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI0X3J0bih1c2hvcnQ0KTsKY2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI0X3NhdF9ydG4odXNob3J0NCk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyNCh1c2hvcnQ0KTsKY2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI0X3NhdCh1c2hvcnQ0KTsKY2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI0X3J0ZShpbnQ0KTsKY2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI0X3NhdF9ydGUoaW50NCk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyNF9ydHooaW50NCk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyNF9zYXRfcnR6KGludDQpOwpjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjRfcnRwKGludDQpOwpjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjRfc2F0X3J0cChpbnQ0KTsKY2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI0X3J0bihpbnQ0KTsKY2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI0X3NhdF9ydG4oaW50NCk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyNChpbnQ0KTsKY2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI0X3NhdChpbnQ0KTsKY2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI0X3J0ZSh1aW50NCk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyNF9zYXRfcnRlKHVpbnQ0KTsKY2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI0X3J0eih1aW50NCk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyNF9zYXRfcnR6KHVpbnQ0KTsKY2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI0X3J0cCh1aW50NCk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyNF9zYXRfcnRwKHVpbnQ0KTsKY2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI0X3J0bih1aW50NCk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyNF9zYXRfcnRuKHVpbnQ0KTsKY2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI0KHVpbnQ0KTsKY2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI0X3NhdCh1aW50NCk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyNF9ydGUobG9uZzQpOwpjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjRfc2F0X3J0ZShsb25nNCk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyNF9ydHoobG9uZzQpOwpjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjRfc2F0X3J0eihsb25nNCk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyNF9ydHAobG9uZzQpOwpjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjRfc2F0X3J0cChsb25nNCk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyNF9ydG4obG9uZzQpOwpjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjRfc2F0X3J0bihsb25nNCk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyNChsb25nNCk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyNF9zYXQobG9uZzQpOwpjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjRfcnRlKHVsb25nNCk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyNF9zYXRfcnRlKHVsb25nNCk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyNF9ydHoodWxvbmc0KTsKY2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI0X3NhdF9ydHoodWxvbmc0KTsKY2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI0X3J0cCh1bG9uZzQpOwpjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjRfc2F0X3J0cCh1bG9uZzQpOwpjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjRfcnRuKHVsb25nNCk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyNF9zYXRfcnRuKHVsb25nNCk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyNCh1bG9uZzQpOwpjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjRfc2F0KHVsb25nNCk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyNF9ydGUoZmxvYXQ0KTsKY2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI0X3NhdF9ydGUoZmxvYXQ0KTsKY2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI0X3J0eihmbG9hdDQpOwpjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjRfc2F0X3J0eihmbG9hdDQpOwpjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjRfcnRwKGZsb2F0NCk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyNF9zYXRfcnRwKGZsb2F0NCk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyNF9ydG4oZmxvYXQ0KTsKY2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI0X3NhdF9ydG4oZmxvYXQ0KTsKY2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI0KGZsb2F0NCk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyNF9zYXQoZmxvYXQ0KTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjRfcnRlKGNoYXI0KTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjRfc2F0X3J0ZShjaGFyNCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0X3J0eihjaGFyNCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0X3NhdF9ydHooY2hhcjQpOwp1Y2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyNF9ydHAoY2hhcjQpOwp1Y2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyNF9zYXRfcnRwKGNoYXI0KTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjRfcnRuKGNoYXI0KTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjRfc2F0X3J0bihjaGFyNCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0KGNoYXI0KTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjRfc2F0KGNoYXI0KTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjRfcnRlKHVjaGFyNCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0X3NhdF9ydGUodWNoYXI0KTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjRfcnR6KHVjaGFyNCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0X3NhdF9ydHoodWNoYXI0KTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjRfcnRwKHVjaGFyNCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0X3NhdF9ydHAodWNoYXI0KTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjRfcnRuKHVjaGFyNCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0X3NhdF9ydG4odWNoYXI0KTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjQodWNoYXI0KTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjRfc2F0KHVjaGFyNCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0X3J0ZShzaG9ydDQpOwp1Y2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyNF9zYXRfcnRlKHNob3J0NCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0X3J0eihzaG9ydDQpOwp1Y2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyNF9zYXRfcnR6KHNob3J0NCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0X3J0cChzaG9ydDQpOwp1Y2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyNF9zYXRfcnRwKHNob3J0NCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0X3J0bihzaG9ydDQpOwp1Y2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyNF9zYXRfcnRuKHNob3J0NCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0KHNob3J0NCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0X3NhdChzaG9ydDQpOwp1Y2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyNF9ydGUodXNob3J0NCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0X3NhdF9ydGUodXNob3J0NCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0X3J0eih1c2hvcnQ0KTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjRfc2F0X3J0eih1c2hvcnQ0KTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjRfcnRwKHVzaG9ydDQpOwp1Y2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyNF9zYXRfcnRwKHVzaG9ydDQpOwp1Y2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyNF9ydG4odXNob3J0NCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0X3NhdF9ydG4odXNob3J0NCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0KHVzaG9ydDQpOwp1Y2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyNF9zYXQodXNob3J0NCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0X3J0ZShpbnQ0KTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjRfc2F0X3J0ZShpbnQ0KTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjRfcnR6KGludDQpOwp1Y2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyNF9zYXRfcnR6KGludDQpOwp1Y2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyNF9ydHAoaW50NCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0X3NhdF9ydHAoaW50NCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0X3J0bihpbnQ0KTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjRfc2F0X3J0bihpbnQ0KTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjQoaW50NCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0X3NhdChpbnQ0KTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjRfcnRlKHVpbnQ0KTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjRfc2F0X3J0ZSh1aW50NCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0X3J0eih1aW50NCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0X3NhdF9ydHoodWludDQpOwp1Y2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyNF9ydHAodWludDQpOwp1Y2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyNF9zYXRfcnRwKHVpbnQ0KTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjRfcnRuKHVpbnQ0KTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjRfc2F0X3J0bih1aW50NCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0KHVpbnQ0KTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjRfc2F0KHVpbnQ0KTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjRfcnRlKGxvbmc0KTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjRfc2F0X3J0ZShsb25nNCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0X3J0eihsb25nNCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0X3NhdF9ydHoobG9uZzQpOwp1Y2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyNF9ydHAobG9uZzQpOwp1Y2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyNF9zYXRfcnRwKGxvbmc0KTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjRfcnRuKGxvbmc0KTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjRfc2F0X3J0bihsb25nNCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0KGxvbmc0KTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjRfc2F0KGxvbmc0KTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjRfcnRlKHVsb25nNCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0X3NhdF9ydGUodWxvbmc0KTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjRfcnR6KHVsb25nNCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0X3NhdF9ydHoodWxvbmc0KTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjRfcnRwKHVsb25nNCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0X3NhdF9ydHAodWxvbmc0KTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjRfcnRuKHVsb25nNCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0X3NhdF9ydG4odWxvbmc0KTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjQodWxvbmc0KTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjRfc2F0KHVsb25nNCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0X3J0ZShmbG9hdDQpOwp1Y2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyNF9zYXRfcnRlKGZsb2F0NCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0X3J0eihmbG9hdDQpOwp1Y2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyNF9zYXRfcnR6KGZsb2F0NCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0X3J0cChmbG9hdDQpOwp1Y2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyNF9zYXRfcnRwKGZsb2F0NCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0X3J0bihmbG9hdDQpOwp1Y2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyNF9zYXRfcnRuKGZsb2F0NCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0KGZsb2F0NCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0X3NhdChmbG9hdDQpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0NF9ydGUoY2hhcjQpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0NF9zYXRfcnRlKGNoYXI0KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDRfcnR6KGNoYXI0KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDRfc2F0X3J0eihjaGFyNCk7CnNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ0X3J0cChjaGFyNCk7CnNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ0X3NhdF9ydHAoY2hhcjQpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0NF9ydG4oY2hhcjQpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0NF9zYXRfcnRuKGNoYXI0KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDQoY2hhcjQpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0NF9zYXQoY2hhcjQpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0NF9ydGUodWNoYXI0KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDRfc2F0X3J0ZSh1Y2hhcjQpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0NF9ydHoodWNoYXI0KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDRfc2F0X3J0eih1Y2hhcjQpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0NF9ydHAodWNoYXI0KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDRfc2F0X3J0cCh1Y2hhcjQpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0NF9ydG4odWNoYXI0KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDRfc2F0X3J0bih1Y2hhcjQpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0NCh1Y2hhcjQpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0NF9zYXQodWNoYXI0KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDRfcnRlKHNob3J0NCk7CnNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ0X3NhdF9ydGUoc2hvcnQ0KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDRfcnR6KHNob3J0NCk7CnNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ0X3NhdF9ydHooc2hvcnQ0KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDRfcnRwKHNob3J0NCk7CnNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ0X3NhdF9ydHAoc2hvcnQ0KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDRfcnRuKHNob3J0NCk7CnNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ0X3NhdF9ydG4oc2hvcnQ0KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDQoc2hvcnQ0KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDRfc2F0KHNob3J0NCk7CnNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ0X3J0ZSh1c2hvcnQ0KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDRfc2F0X3J0ZSh1c2hvcnQ0KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDRfcnR6KHVzaG9ydDQpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0NF9zYXRfcnR6KHVzaG9ydDQpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0NF9ydHAodXNob3J0NCk7CnNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ0X3NhdF9ydHAodXNob3J0NCk7CnNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ0X3J0bih1c2hvcnQ0KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDRfc2F0X3J0bih1c2hvcnQ0KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDQodXNob3J0NCk7CnNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ0X3NhdCh1c2hvcnQ0KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDRfcnRlKGludDQpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0NF9zYXRfcnRlKGludDQpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0NF9ydHooaW50NCk7CnNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ0X3NhdF9ydHooaW50NCk7CnNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ0X3J0cChpbnQ0KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDRfc2F0X3J0cChpbnQ0KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDRfcnRuKGludDQpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0NF9zYXRfcnRuKGludDQpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0NChpbnQ0KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDRfc2F0KGludDQpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0NF9ydGUodWludDQpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0NF9zYXRfcnRlKHVpbnQ0KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDRfcnR6KHVpbnQ0KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDRfc2F0X3J0eih1aW50NCk7CnNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ0X3J0cCh1aW50NCk7CnNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ0X3NhdF9ydHAodWludDQpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0NF9ydG4odWludDQpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0NF9zYXRfcnRuKHVpbnQ0KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDQodWludDQpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0NF9zYXQodWludDQpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0NF9ydGUobG9uZzQpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0NF9zYXRfcnRlKGxvbmc0KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDRfcnR6KGxvbmc0KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDRfc2F0X3J0eihsb25nNCk7CnNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ0X3J0cChsb25nNCk7CnNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ0X3NhdF9ydHAobG9uZzQpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0NF9ydG4obG9uZzQpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0NF9zYXRfcnRuKGxvbmc0KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDQobG9uZzQpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0NF9zYXQobG9uZzQpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0NF9ydGUodWxvbmc0KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDRfc2F0X3J0ZSh1bG9uZzQpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0NF9ydHoodWxvbmc0KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDRfc2F0X3J0eih1bG9uZzQpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0NF9ydHAodWxvbmc0KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDRfc2F0X3J0cCh1bG9uZzQpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0NF9ydG4odWxvbmc0KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDRfc2F0X3J0bih1bG9uZzQpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0NCh1bG9uZzQpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0NF9zYXQodWxvbmc0KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDRfcnRlKGZsb2F0NCk7CnNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ0X3NhdF9ydGUoZmxvYXQ0KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDRfcnR6KGZsb2F0NCk7CnNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ0X3NhdF9ydHooZmxvYXQ0KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDRfcnRwKGZsb2F0NCk7CnNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ0X3NhdF9ydHAoZmxvYXQ0KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDRfcnRuKGZsb2F0NCk7CnNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ0X3NhdF9ydG4oZmxvYXQ0KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDQoZmxvYXQ0KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDRfc2F0KGZsb2F0NCk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDRfcnRlKGNoYXI0KTsKdXNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0NF9zYXRfcnRlKGNoYXI0KTsKdXNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0NF9ydHooY2hhcjQpOwp1c2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ0X3NhdF9ydHooY2hhcjQpOwp1c2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ0X3J0cChjaGFyNCk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDRfc2F0X3J0cChjaGFyNCk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDRfcnRuKGNoYXI0KTsKdXNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0NF9zYXRfcnRuKGNoYXI0KTsKdXNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0NChjaGFyNCk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDRfc2F0KGNoYXI0KTsKdXNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0NF9ydGUodWNoYXI0KTsKdXNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0NF9zYXRfcnRlKHVjaGFyNCk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDRfcnR6KHVjaGFyNCk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDRfc2F0X3J0eih1Y2hhcjQpOwp1c2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ0X3J0cCh1Y2hhcjQpOwp1c2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ0X3NhdF9ydHAodWNoYXI0KTsKdXNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0NF9ydG4odWNoYXI0KTsKdXNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0NF9zYXRfcnRuKHVjaGFyNCk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDQodWNoYXI0KTsKdXNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0NF9zYXQodWNoYXI0KTsKdXNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0NF9ydGUoc2hvcnQ0KTsKdXNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0NF9zYXRfcnRlKHNob3J0NCk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDRfcnR6KHNob3J0NCk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDRfc2F0X3J0eihzaG9ydDQpOwp1c2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ0X3J0cChzaG9ydDQpOwp1c2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ0X3NhdF9ydHAoc2hvcnQ0KTsKdXNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0NF9ydG4oc2hvcnQ0KTsKdXNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0NF9zYXRfcnRuKHNob3J0NCk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDQoc2hvcnQ0KTsKdXNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0NF9zYXQoc2hvcnQ0KTsKdXNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0NF9ydGUodXNob3J0NCk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDRfc2F0X3J0ZSh1c2hvcnQ0KTsKdXNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0NF9ydHoodXNob3J0NCk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDRfc2F0X3J0eih1c2hvcnQ0KTsKdXNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0NF9ydHAodXNob3J0NCk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDRfc2F0X3J0cCh1c2hvcnQ0KTsKdXNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0NF9ydG4odXNob3J0NCk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDRfc2F0X3J0bih1c2hvcnQ0KTsKdXNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0NCh1c2hvcnQ0KTsKdXNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0NF9zYXQodXNob3J0NCk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDRfcnRlKGludDQpOwp1c2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ0X3NhdF9ydGUoaW50NCk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDRfcnR6KGludDQpOwp1c2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ0X3NhdF9ydHooaW50NCk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDRfcnRwKGludDQpOwp1c2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ0X3NhdF9ydHAoaW50NCk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDRfcnRuKGludDQpOwp1c2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ0X3NhdF9ydG4oaW50NCk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDQoaW50NCk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDRfc2F0KGludDQpOwp1c2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ0X3J0ZSh1aW50NCk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDRfc2F0X3J0ZSh1aW50NCk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDRfcnR6KHVpbnQ0KTsKdXNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0NF9zYXRfcnR6KHVpbnQ0KTsKdXNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0NF9ydHAodWludDQpOwp1c2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ0X3NhdF9ydHAodWludDQpOwp1c2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ0X3J0bih1aW50NCk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDRfc2F0X3J0bih1aW50NCk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDQodWludDQpOwp1c2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ0X3NhdCh1aW50NCk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDRfcnRlKGxvbmc0KTsKdXNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0NF9zYXRfcnRlKGxvbmc0KTsKdXNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0NF9ydHoobG9uZzQpOwp1c2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ0X3NhdF9ydHoobG9uZzQpOwp1c2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ0X3J0cChsb25nNCk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDRfc2F0X3J0cChsb25nNCk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDRfcnRuKGxvbmc0KTsKdXNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0NF9zYXRfcnRuKGxvbmc0KTsKdXNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0NChsb25nNCk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDRfc2F0KGxvbmc0KTsKdXNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0NF9ydGUodWxvbmc0KTsKdXNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0NF9zYXRfcnRlKHVsb25nNCk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDRfcnR6KHVsb25nNCk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDRfc2F0X3J0eih1bG9uZzQpOwp1c2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ0X3J0cCh1bG9uZzQpOwp1c2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ0X3NhdF9ydHAodWxvbmc0KTsKdXNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0NF9ydG4odWxvbmc0KTsKdXNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0NF9zYXRfcnRuKHVsb25nNCk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDQodWxvbmc0KTsKdXNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0NF9zYXQodWxvbmc0KTsKdXNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0NF9ydGUoZmxvYXQ0KTsKdXNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0NF9zYXRfcnRlKGZsb2F0NCk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDRfcnR6KGZsb2F0NCk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDRfc2F0X3J0eihmbG9hdDQpOwp1c2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ0X3J0cChmbG9hdDQpOwp1c2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ0X3NhdF9ydHAoZmxvYXQ0KTsKdXNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0NF9ydG4oZmxvYXQ0KTsKdXNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0NF9zYXRfcnRuKGZsb2F0NCk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDQoZmxvYXQ0KTsKdXNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0NF9zYXQoZmxvYXQ0KTsKaW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50NF9ydGUoY2hhcjQpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ0X3NhdF9ydGUoY2hhcjQpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ0X3J0eihjaGFyNCk7CmludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDRfc2F0X3J0eihjaGFyNCk7CmludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDRfcnRwKGNoYXI0KTsKaW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50NF9zYXRfcnRwKGNoYXI0KTsKaW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50NF9ydG4oY2hhcjQpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ0X3NhdF9ydG4oY2hhcjQpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ0KGNoYXI0KTsKaW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50NF9zYXQoY2hhcjQpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ0X3J0ZSh1Y2hhcjQpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ0X3NhdF9ydGUodWNoYXI0KTsKaW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50NF9ydHoodWNoYXI0KTsKaW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50NF9zYXRfcnR6KHVjaGFyNCk7CmludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDRfcnRwKHVjaGFyNCk7CmludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDRfc2F0X3J0cCh1Y2hhcjQpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ0X3J0bih1Y2hhcjQpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ0X3NhdF9ydG4odWNoYXI0KTsKaW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50NCh1Y2hhcjQpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ0X3NhdCh1Y2hhcjQpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ0X3J0ZShzaG9ydDQpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ0X3NhdF9ydGUoc2hvcnQ0KTsKaW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50NF9ydHooc2hvcnQ0KTsKaW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50NF9zYXRfcnR6KHNob3J0NCk7CmludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDRfcnRwKHNob3J0NCk7CmludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDRfc2F0X3J0cChzaG9ydDQpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ0X3J0bihzaG9ydDQpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ0X3NhdF9ydG4oc2hvcnQ0KTsKaW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50NChzaG9ydDQpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ0X3NhdChzaG9ydDQpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ0X3J0ZSh1c2hvcnQ0KTsKaW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50NF9zYXRfcnRlKHVzaG9ydDQpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ0X3J0eih1c2hvcnQ0KTsKaW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50NF9zYXRfcnR6KHVzaG9ydDQpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ0X3J0cCh1c2hvcnQ0KTsKaW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50NF9zYXRfcnRwKHVzaG9ydDQpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ0X3J0bih1c2hvcnQ0KTsKaW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50NF9zYXRfcnRuKHVzaG9ydDQpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ0KHVzaG9ydDQpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ0X3NhdCh1c2hvcnQ0KTsKaW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50NF9ydGUoaW50NCk7CmludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDRfc2F0X3J0ZShpbnQ0KTsKaW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50NF9ydHooaW50NCk7CmludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDRfc2F0X3J0eihpbnQ0KTsKaW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50NF9ydHAoaW50NCk7CmludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDRfc2F0X3J0cChpbnQ0KTsKaW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50NF9ydG4oaW50NCk7CmludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDRfc2F0X3J0bihpbnQ0KTsKaW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50NChpbnQ0KTsKaW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50NF9zYXQoaW50NCk7CmludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDRfcnRlKHVpbnQ0KTsKaW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50NF9zYXRfcnRlKHVpbnQ0KTsKaW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50NF9ydHoodWludDQpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ0X3NhdF9ydHoodWludDQpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ0X3J0cCh1aW50NCk7CmludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDRfc2F0X3J0cCh1aW50NCk7CmludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDRfcnRuKHVpbnQ0KTsKaW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50NF9zYXRfcnRuKHVpbnQ0KTsKaW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50NCh1aW50NCk7CmludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDRfc2F0KHVpbnQ0KTsKaW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50NF9ydGUobG9uZzQpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ0X3NhdF9ydGUobG9uZzQpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ0X3J0eihsb25nNCk7CmludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDRfc2F0X3J0eihsb25nNCk7CmludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDRfcnRwKGxvbmc0KTsKaW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50NF9zYXRfcnRwKGxvbmc0KTsKaW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50NF9ydG4obG9uZzQpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ0X3NhdF9ydG4obG9uZzQpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ0KGxvbmc0KTsKaW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50NF9zYXQobG9uZzQpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ0X3J0ZSh1bG9uZzQpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ0X3NhdF9ydGUodWxvbmc0KTsKaW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50NF9ydHoodWxvbmc0KTsKaW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50NF9zYXRfcnR6KHVsb25nNCk7CmludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDRfcnRwKHVsb25nNCk7CmludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDRfc2F0X3J0cCh1bG9uZzQpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ0X3J0bih1bG9uZzQpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ0X3NhdF9ydG4odWxvbmc0KTsKaW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50NCh1bG9uZzQpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ0X3NhdCh1bG9uZzQpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ0X3J0ZShmbG9hdDQpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ0X3NhdF9ydGUoZmxvYXQ0KTsKaW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50NF9ydHooZmxvYXQ0KTsKaW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50NF9zYXRfcnR6KGZsb2F0NCk7CmludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDRfcnRwKGZsb2F0NCk7CmludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDRfc2F0X3J0cChmbG9hdDQpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ0X3J0bihmbG9hdDQpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ0X3NhdF9ydG4oZmxvYXQ0KTsKaW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50NChmbG9hdDQpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ0X3NhdChmbG9hdDQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDRfcnRlKGNoYXI0KTsKdWludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ0X3NhdF9ydGUoY2hhcjQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDRfcnR6KGNoYXI0KTsKdWludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ0X3NhdF9ydHooY2hhcjQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDRfcnRwKGNoYXI0KTsKdWludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ0X3NhdF9ydHAoY2hhcjQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDRfcnRuKGNoYXI0KTsKdWludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ0X3NhdF9ydG4oY2hhcjQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDQoY2hhcjQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDRfc2F0KGNoYXI0KTsKdWludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ0X3J0ZSh1Y2hhcjQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDRfc2F0X3J0ZSh1Y2hhcjQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDRfcnR6KHVjaGFyNCk7CnVpbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50NF9zYXRfcnR6KHVjaGFyNCk7CnVpbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50NF9ydHAodWNoYXI0KTsKdWludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ0X3NhdF9ydHAodWNoYXI0KTsKdWludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ0X3J0bih1Y2hhcjQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDRfc2F0X3J0bih1Y2hhcjQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDQodWNoYXI0KTsKdWludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ0X3NhdCh1Y2hhcjQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDRfcnRlKHNob3J0NCk7CnVpbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50NF9zYXRfcnRlKHNob3J0NCk7CnVpbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50NF9ydHooc2hvcnQ0KTsKdWludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ0X3NhdF9ydHooc2hvcnQ0KTsKdWludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ0X3J0cChzaG9ydDQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDRfc2F0X3J0cChzaG9ydDQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDRfcnRuKHNob3J0NCk7CnVpbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50NF9zYXRfcnRuKHNob3J0NCk7CnVpbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50NChzaG9ydDQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDRfc2F0KHNob3J0NCk7CnVpbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50NF9ydGUodXNob3J0NCk7CnVpbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50NF9zYXRfcnRlKHVzaG9ydDQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDRfcnR6KHVzaG9ydDQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDRfc2F0X3J0eih1c2hvcnQ0KTsKdWludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ0X3J0cCh1c2hvcnQ0KTsKdWludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ0X3NhdF9ydHAodXNob3J0NCk7CnVpbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50NF9ydG4odXNob3J0NCk7CnVpbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50NF9zYXRfcnRuKHVzaG9ydDQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDQodXNob3J0NCk7CnVpbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50NF9zYXQodXNob3J0NCk7CnVpbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50NF9ydGUoaW50NCk7CnVpbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50NF9zYXRfcnRlKGludDQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDRfcnR6KGludDQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDRfc2F0X3J0eihpbnQ0KTsKdWludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ0X3J0cChpbnQ0KTsKdWludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ0X3NhdF9ydHAoaW50NCk7CnVpbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50NF9ydG4oaW50NCk7CnVpbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50NF9zYXRfcnRuKGludDQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDQoaW50NCk7CnVpbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50NF9zYXQoaW50NCk7CnVpbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50NF9ydGUodWludDQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDRfc2F0X3J0ZSh1aW50NCk7CnVpbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50NF9ydHoodWludDQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDRfc2F0X3J0eih1aW50NCk7CnVpbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50NF9ydHAodWludDQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDRfc2F0X3J0cCh1aW50NCk7CnVpbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50NF9ydG4odWludDQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDRfc2F0X3J0bih1aW50NCk7CnVpbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50NCh1aW50NCk7CnVpbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50NF9zYXQodWludDQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDRfcnRlKGxvbmc0KTsKdWludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ0X3NhdF9ydGUobG9uZzQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDRfcnR6KGxvbmc0KTsKdWludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ0X3NhdF9ydHoobG9uZzQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDRfcnRwKGxvbmc0KTsKdWludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ0X3NhdF9ydHAobG9uZzQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDRfcnRuKGxvbmc0KTsKdWludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ0X3NhdF9ydG4obG9uZzQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDQobG9uZzQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDRfc2F0KGxvbmc0KTsKdWludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ0X3J0ZSh1bG9uZzQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDRfc2F0X3J0ZSh1bG9uZzQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDRfcnR6KHVsb25nNCk7CnVpbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50NF9zYXRfcnR6KHVsb25nNCk7CnVpbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50NF9ydHAodWxvbmc0KTsKdWludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ0X3NhdF9ydHAodWxvbmc0KTsKdWludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ0X3J0bih1bG9uZzQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDRfc2F0X3J0bih1bG9uZzQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDQodWxvbmc0KTsKdWludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ0X3NhdCh1bG9uZzQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDRfcnRlKGZsb2F0NCk7CnVpbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50NF9zYXRfcnRlKGZsb2F0NCk7CnVpbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50NF9ydHooZmxvYXQ0KTsKdWludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ0X3NhdF9ydHooZmxvYXQ0KTsKdWludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ0X3J0cChmbG9hdDQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDRfc2F0X3J0cChmbG9hdDQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDRfcnRuKGZsb2F0NCk7CnVpbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50NF9zYXRfcnRuKGZsb2F0NCk7CnVpbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50NChmbG9hdDQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDRfc2F0KGZsb2F0NCk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nNF9ydGUoY2hhcjQpOwpsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzRfc2F0X3J0ZShjaGFyNCk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nNF9ydHooY2hhcjQpOwpsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzRfc2F0X3J0eihjaGFyNCk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nNF9ydHAoY2hhcjQpOwpsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzRfc2F0X3J0cChjaGFyNCk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nNF9ydG4oY2hhcjQpOwpsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzRfc2F0X3J0bihjaGFyNCk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nNChjaGFyNCk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nNF9zYXQoY2hhcjQpOwpsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzRfcnRlKHVjaGFyNCk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nNF9zYXRfcnRlKHVjaGFyNCk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nNF9ydHoodWNoYXI0KTsKbG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc0X3NhdF9ydHoodWNoYXI0KTsKbG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc0X3J0cCh1Y2hhcjQpOwpsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzRfc2F0X3J0cCh1Y2hhcjQpOwpsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzRfcnRuKHVjaGFyNCk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nNF9zYXRfcnRuKHVjaGFyNCk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nNCh1Y2hhcjQpOwpsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzRfc2F0KHVjaGFyNCk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nNF9ydGUoc2hvcnQ0KTsKbG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc0X3NhdF9ydGUoc2hvcnQ0KTsKbG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc0X3J0eihzaG9ydDQpOwpsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzRfc2F0X3J0eihzaG9ydDQpOwpsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzRfcnRwKHNob3J0NCk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nNF9zYXRfcnRwKHNob3J0NCk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nNF9ydG4oc2hvcnQ0KTsKbG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc0X3NhdF9ydG4oc2hvcnQ0KTsKbG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc0KHNob3J0NCk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nNF9zYXQoc2hvcnQ0KTsKbG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc0X3J0ZSh1c2hvcnQ0KTsKbG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc0X3NhdF9ydGUodXNob3J0NCk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nNF9ydHoodXNob3J0NCk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nNF9zYXRfcnR6KHVzaG9ydDQpOwpsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzRfcnRwKHVzaG9ydDQpOwpsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzRfc2F0X3J0cCh1c2hvcnQ0KTsKbG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc0X3J0bih1c2hvcnQ0KTsKbG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc0X3NhdF9ydG4odXNob3J0NCk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nNCh1c2hvcnQ0KTsKbG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc0X3NhdCh1c2hvcnQ0KTsKbG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc0X3J0ZShpbnQ0KTsKbG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc0X3NhdF9ydGUoaW50NCk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nNF9ydHooaW50NCk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nNF9zYXRfcnR6KGludDQpOwpsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzRfcnRwKGludDQpOwpsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzRfc2F0X3J0cChpbnQ0KTsKbG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc0X3J0bihpbnQ0KTsKbG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc0X3NhdF9ydG4oaW50NCk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nNChpbnQ0KTsKbG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc0X3NhdChpbnQ0KTsKbG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc0X3J0ZSh1aW50NCk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nNF9zYXRfcnRlKHVpbnQ0KTsKbG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc0X3J0eih1aW50NCk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nNF9zYXRfcnR6KHVpbnQ0KTsKbG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc0X3J0cCh1aW50NCk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nNF9zYXRfcnRwKHVpbnQ0KTsKbG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc0X3J0bih1aW50NCk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nNF9zYXRfcnRuKHVpbnQ0KTsKbG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc0KHVpbnQ0KTsKbG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc0X3NhdCh1aW50NCk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nNF9ydGUobG9uZzQpOwpsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzRfc2F0X3J0ZShsb25nNCk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nNF9ydHoobG9uZzQpOwpsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzRfc2F0X3J0eihsb25nNCk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nNF9ydHAobG9uZzQpOwpsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzRfc2F0X3J0cChsb25nNCk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nNF9ydG4obG9uZzQpOwpsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzRfc2F0X3J0bihsb25nNCk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nNChsb25nNCk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nNF9zYXQobG9uZzQpOwpsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzRfcnRlKHVsb25nNCk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nNF9zYXRfcnRlKHVsb25nNCk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nNF9ydHoodWxvbmc0KTsKbG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc0X3NhdF9ydHoodWxvbmc0KTsKbG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc0X3J0cCh1bG9uZzQpOwpsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzRfc2F0X3J0cCh1bG9uZzQpOwpsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzRfcnRuKHVsb25nNCk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nNF9zYXRfcnRuKHVsb25nNCk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nNCh1bG9uZzQpOwpsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzRfc2F0KHVsb25nNCk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nNF9ydGUoZmxvYXQ0KTsKbG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc0X3NhdF9ydGUoZmxvYXQ0KTsKbG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc0X3J0eihmbG9hdDQpOwpsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzRfc2F0X3J0eihmbG9hdDQpOwpsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzRfcnRwKGZsb2F0NCk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nNF9zYXRfcnRwKGZsb2F0NCk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nNF9ydG4oZmxvYXQ0KTsKbG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc0X3NhdF9ydG4oZmxvYXQ0KTsKbG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc0KGZsb2F0NCk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nNF9zYXQoZmxvYXQ0KTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzRfcnRlKGNoYXI0KTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzRfc2F0X3J0ZShjaGFyNCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0X3J0eihjaGFyNCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0X3NhdF9ydHooY2hhcjQpOwp1bG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nNF9ydHAoY2hhcjQpOwp1bG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nNF9zYXRfcnRwKGNoYXI0KTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzRfcnRuKGNoYXI0KTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzRfc2F0X3J0bihjaGFyNCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0KGNoYXI0KTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzRfc2F0KGNoYXI0KTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzRfcnRlKHVjaGFyNCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0X3NhdF9ydGUodWNoYXI0KTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzRfcnR6KHVjaGFyNCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0X3NhdF9ydHoodWNoYXI0KTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzRfcnRwKHVjaGFyNCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0X3NhdF9ydHAodWNoYXI0KTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzRfcnRuKHVjaGFyNCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0X3NhdF9ydG4odWNoYXI0KTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzQodWNoYXI0KTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzRfc2F0KHVjaGFyNCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0X3J0ZShzaG9ydDQpOwp1bG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nNF9zYXRfcnRlKHNob3J0NCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0X3J0eihzaG9ydDQpOwp1bG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nNF9zYXRfcnR6KHNob3J0NCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0X3J0cChzaG9ydDQpOwp1bG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nNF9zYXRfcnRwKHNob3J0NCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0X3J0bihzaG9ydDQpOwp1bG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nNF9zYXRfcnRuKHNob3J0NCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0KHNob3J0NCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0X3NhdChzaG9ydDQpOwp1bG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nNF9ydGUodXNob3J0NCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0X3NhdF9ydGUodXNob3J0NCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0X3J0eih1c2hvcnQ0KTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzRfc2F0X3J0eih1c2hvcnQ0KTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzRfcnRwKHVzaG9ydDQpOwp1bG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nNF9zYXRfcnRwKHVzaG9ydDQpOwp1bG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nNF9ydG4odXNob3J0NCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0X3NhdF9ydG4odXNob3J0NCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0KHVzaG9ydDQpOwp1bG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nNF9zYXQodXNob3J0NCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0X3J0ZShpbnQ0KTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzRfc2F0X3J0ZShpbnQ0KTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzRfcnR6KGludDQpOwp1bG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nNF9zYXRfcnR6KGludDQpOwp1bG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nNF9ydHAoaW50NCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0X3NhdF9ydHAoaW50NCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0X3J0bihpbnQ0KTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzRfc2F0X3J0bihpbnQ0KTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzQoaW50NCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0X3NhdChpbnQ0KTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzRfcnRlKHVpbnQ0KTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzRfc2F0X3J0ZSh1aW50NCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0X3J0eih1aW50NCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0X3NhdF9ydHoodWludDQpOwp1bG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nNF9ydHAodWludDQpOwp1bG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nNF9zYXRfcnRwKHVpbnQ0KTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzRfcnRuKHVpbnQ0KTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzRfc2F0X3J0bih1aW50NCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0KHVpbnQ0KTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzRfc2F0KHVpbnQ0KTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzRfcnRlKGxvbmc0KTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzRfc2F0X3J0ZShsb25nNCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0X3J0eihsb25nNCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0X3NhdF9ydHoobG9uZzQpOwp1bG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nNF9ydHAobG9uZzQpOwp1bG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nNF9zYXRfcnRwKGxvbmc0KTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzRfcnRuKGxvbmc0KTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzRfc2F0X3J0bihsb25nNCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0KGxvbmc0KTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzRfc2F0KGxvbmc0KTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzRfcnRlKHVsb25nNCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0X3NhdF9ydGUodWxvbmc0KTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzRfcnR6KHVsb25nNCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0X3NhdF9ydHoodWxvbmc0KTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzRfcnRwKHVsb25nNCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0X3NhdF9ydHAodWxvbmc0KTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzRfcnRuKHVsb25nNCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0X3NhdF9ydG4odWxvbmc0KTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzQodWxvbmc0KTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzRfc2F0KHVsb25nNCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0X3J0ZShmbG9hdDQpOwp1bG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nNF9zYXRfcnRlKGZsb2F0NCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0X3J0eihmbG9hdDQpOwp1bG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nNF9zYXRfcnR6KGZsb2F0NCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0X3J0cChmbG9hdDQpOwp1bG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nNF9zYXRfcnRwKGZsb2F0NCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0X3J0bihmbG9hdDQpOwp1bG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nNF9zYXRfcnRuKGZsb2F0NCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0KGZsb2F0NCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0X3NhdChmbG9hdDQpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0NF9ydGUoY2hhcjQpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0NF9ydHooY2hhcjQpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0NF9ydHAoY2hhcjQpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0NF9ydG4oY2hhcjQpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0NChjaGFyNCk7CmZsb2F0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQ0X3J0ZSh1Y2hhcjQpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0NF9ydHoodWNoYXI0KTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDRfcnRwKHVjaGFyNCk7CmZsb2F0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQ0X3J0bih1Y2hhcjQpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0NCh1Y2hhcjQpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0NF9ydGUoc2hvcnQ0KTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDRfcnR6KHNob3J0NCk7CmZsb2F0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQ0X3J0cChzaG9ydDQpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0NF9ydG4oc2hvcnQ0KTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDQoc2hvcnQ0KTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDRfcnRlKHVzaG9ydDQpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0NF9ydHoodXNob3J0NCk7CmZsb2F0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQ0X3J0cCh1c2hvcnQ0KTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDRfcnRuKHVzaG9ydDQpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0NCh1c2hvcnQ0KTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDRfcnRlKGludDQpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0NF9ydHooaW50NCk7CmZsb2F0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQ0X3J0cChpbnQ0KTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDRfcnRuKGludDQpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0NChpbnQ0KTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDRfcnRlKHVpbnQ0KTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDRfcnR6KHVpbnQ0KTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDRfcnRwKHVpbnQ0KTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDRfcnRuKHVpbnQ0KTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDQodWludDQpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0NF9ydGUobG9uZzQpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0NF9ydHoobG9uZzQpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0NF9ydHAobG9uZzQpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0NF9ydG4obG9uZzQpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0NChsb25nNCk7CmZsb2F0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQ0X3J0ZSh1bG9uZzQpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0NF9ydHoodWxvbmc0KTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDRfcnRwKHVsb25nNCk7CmZsb2F0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQ0X3J0bih1bG9uZzQpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0NCh1bG9uZzQpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0NF9ydGUoZmxvYXQ0KTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDRfcnR6KGZsb2F0NCk7CmZsb2F0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQ0X3J0cChmbG9hdDQpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0NF9ydG4oZmxvYXQ0KTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDQoZmxvYXQ0KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4X3J0ZShjaGFyOCk7CmNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyOF9zYXRfcnRlKGNoYXI4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4X3J0eihjaGFyOCk7CmNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyOF9zYXRfcnR6KGNoYXI4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4X3J0cChjaGFyOCk7CmNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyOF9zYXRfcnRwKGNoYXI4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4X3J0bihjaGFyOCk7CmNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyOF9zYXRfcnRuKGNoYXI4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4KGNoYXI4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4X3NhdChjaGFyOCk7CmNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyOF9ydGUodWNoYXI4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4X3NhdF9ydGUodWNoYXI4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4X3J0eih1Y2hhcjgpOwpjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjhfc2F0X3J0eih1Y2hhcjgpOwpjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjhfcnRwKHVjaGFyOCk7CmNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyOF9zYXRfcnRwKHVjaGFyOCk7CmNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyOF9ydG4odWNoYXI4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4X3NhdF9ydG4odWNoYXI4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4KHVjaGFyOCk7CmNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyOF9zYXQodWNoYXI4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4X3J0ZShzaG9ydDgpOwpjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjhfc2F0X3J0ZShzaG9ydDgpOwpjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjhfcnR6KHNob3J0OCk7CmNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyOF9zYXRfcnR6KHNob3J0OCk7CmNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyOF9ydHAoc2hvcnQ4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4X3NhdF9ydHAoc2hvcnQ4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4X3J0bihzaG9ydDgpOwpjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjhfc2F0X3J0bihzaG9ydDgpOwpjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjgoc2hvcnQ4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4X3NhdChzaG9ydDgpOwpjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjhfcnRlKHVzaG9ydDgpOwpjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjhfc2F0X3J0ZSh1c2hvcnQ4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4X3J0eih1c2hvcnQ4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4X3NhdF9ydHoodXNob3J0OCk7CmNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyOF9ydHAodXNob3J0OCk7CmNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyOF9zYXRfcnRwKHVzaG9ydDgpOwpjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjhfcnRuKHVzaG9ydDgpOwpjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjhfc2F0X3J0bih1c2hvcnQ4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4KHVzaG9ydDgpOwpjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjhfc2F0KHVzaG9ydDgpOwpjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjhfcnRlKGludDgpOwpjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjhfc2F0X3J0ZShpbnQ4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4X3J0eihpbnQ4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4X3NhdF9ydHooaW50OCk7CmNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyOF9ydHAoaW50OCk7CmNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyOF9zYXRfcnRwKGludDgpOwpjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjhfcnRuKGludDgpOwpjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjhfc2F0X3J0bihpbnQ4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4KGludDgpOwpjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjhfc2F0KGludDgpOwpjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjhfcnRlKHVpbnQ4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4X3NhdF9ydGUodWludDgpOwpjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjhfcnR6KHVpbnQ4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4X3NhdF9ydHoodWludDgpOwpjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjhfcnRwKHVpbnQ4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4X3NhdF9ydHAodWludDgpOwpjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjhfcnRuKHVpbnQ4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4X3NhdF9ydG4odWludDgpOwpjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjgodWludDgpOwpjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjhfc2F0KHVpbnQ4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4X3J0ZShsb25nOCk7CmNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyOF9zYXRfcnRlKGxvbmc4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4X3J0eihsb25nOCk7CmNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyOF9zYXRfcnR6KGxvbmc4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4X3J0cChsb25nOCk7CmNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyOF9zYXRfcnRwKGxvbmc4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4X3J0bihsb25nOCk7CmNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyOF9zYXRfcnRuKGxvbmc4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4KGxvbmc4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4X3NhdChsb25nOCk7CmNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyOF9ydGUodWxvbmc4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4X3NhdF9ydGUodWxvbmc4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4X3J0eih1bG9uZzgpOwpjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjhfc2F0X3J0eih1bG9uZzgpOwpjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjhfcnRwKHVsb25nOCk7CmNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyOF9zYXRfcnRwKHVsb25nOCk7CmNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyOF9ydG4odWxvbmc4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4X3NhdF9ydG4odWxvbmc4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4KHVsb25nOCk7CmNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyOF9zYXQodWxvbmc4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4X3J0ZShmbG9hdDgpOwpjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjhfc2F0X3J0ZShmbG9hdDgpOwpjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjhfcnR6KGZsb2F0OCk7CmNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyOF9zYXRfcnR6KGZsb2F0OCk7CmNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyOF9ydHAoZmxvYXQ4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4X3NhdF9ydHAoZmxvYXQ4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4X3J0bihmbG9hdDgpOwpjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjhfc2F0X3J0bihmbG9hdDgpOwpjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjgoZmxvYXQ4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4X3NhdChmbG9hdDgpOwp1Y2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyOF9ydGUoY2hhcjgpOwp1Y2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyOF9zYXRfcnRlKGNoYXI4KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjhfcnR6KGNoYXI4KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjhfc2F0X3J0eihjaGFyOCk7CnVjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI4X3J0cChjaGFyOCk7CnVjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI4X3NhdF9ydHAoY2hhcjgpOwp1Y2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyOF9ydG4oY2hhcjgpOwp1Y2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyOF9zYXRfcnRuKGNoYXI4KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjgoY2hhcjgpOwp1Y2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyOF9zYXQoY2hhcjgpOwp1Y2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyOF9ydGUodWNoYXI4KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjhfc2F0X3J0ZSh1Y2hhcjgpOwp1Y2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyOF9ydHoodWNoYXI4KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjhfc2F0X3J0eih1Y2hhcjgpOwp1Y2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyOF9ydHAodWNoYXI4KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjhfc2F0X3J0cCh1Y2hhcjgpOwp1Y2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyOF9ydG4odWNoYXI4KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjhfc2F0X3J0bih1Y2hhcjgpOwp1Y2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyOCh1Y2hhcjgpOwp1Y2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyOF9zYXQodWNoYXI4KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjhfcnRlKHNob3J0OCk7CnVjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI4X3NhdF9ydGUoc2hvcnQ4KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjhfcnR6KHNob3J0OCk7CnVjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI4X3NhdF9ydHooc2hvcnQ4KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjhfcnRwKHNob3J0OCk7CnVjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI4X3NhdF9ydHAoc2hvcnQ4KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjhfcnRuKHNob3J0OCk7CnVjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI4X3NhdF9ydG4oc2hvcnQ4KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjgoc2hvcnQ4KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjhfc2F0KHNob3J0OCk7CnVjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI4X3J0ZSh1c2hvcnQ4KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjhfc2F0X3J0ZSh1c2hvcnQ4KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjhfcnR6KHVzaG9ydDgpOwp1Y2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyOF9zYXRfcnR6KHVzaG9ydDgpOwp1Y2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyOF9ydHAodXNob3J0OCk7CnVjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI4X3NhdF9ydHAodXNob3J0OCk7CnVjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI4X3J0bih1c2hvcnQ4KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjhfc2F0X3J0bih1c2hvcnQ4KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjgodXNob3J0OCk7CnVjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI4X3NhdCh1c2hvcnQ4KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjhfcnRlKGludDgpOwp1Y2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyOF9zYXRfcnRlKGludDgpOwp1Y2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyOF9ydHooaW50OCk7CnVjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI4X3NhdF9ydHooaW50OCk7CnVjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI4X3J0cChpbnQ4KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjhfc2F0X3J0cChpbnQ4KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjhfcnRuKGludDgpOwp1Y2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyOF9zYXRfcnRuKGludDgpOwp1Y2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyOChpbnQ4KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjhfc2F0KGludDgpOwp1Y2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyOF9ydGUodWludDgpOwp1Y2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyOF9zYXRfcnRlKHVpbnQ4KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjhfcnR6KHVpbnQ4KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjhfc2F0X3J0eih1aW50OCk7CnVjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI4X3J0cCh1aW50OCk7CnVjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI4X3NhdF9ydHAodWludDgpOwp1Y2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyOF9ydG4odWludDgpOwp1Y2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyOF9zYXRfcnRuKHVpbnQ4KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjgodWludDgpOwp1Y2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyOF9zYXQodWludDgpOwp1Y2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyOF9ydGUobG9uZzgpOwp1Y2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyOF9zYXRfcnRlKGxvbmc4KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjhfcnR6KGxvbmc4KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjhfc2F0X3J0eihsb25nOCk7CnVjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI4X3J0cChsb25nOCk7CnVjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI4X3NhdF9ydHAobG9uZzgpOwp1Y2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyOF9ydG4obG9uZzgpOwp1Y2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyOF9zYXRfcnRuKGxvbmc4KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjgobG9uZzgpOwp1Y2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyOF9zYXQobG9uZzgpOwp1Y2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyOF9ydGUodWxvbmc4KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjhfc2F0X3J0ZSh1bG9uZzgpOwp1Y2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyOF9ydHoodWxvbmc4KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjhfc2F0X3J0eih1bG9uZzgpOwp1Y2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyOF9ydHAodWxvbmc4KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjhfc2F0X3J0cCh1bG9uZzgpOwp1Y2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyOF9ydG4odWxvbmc4KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjhfc2F0X3J0bih1bG9uZzgpOwp1Y2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyOCh1bG9uZzgpOwp1Y2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyOF9zYXQodWxvbmc4KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjhfcnRlKGZsb2F0OCk7CnVjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI4X3NhdF9ydGUoZmxvYXQ4KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjhfcnR6KGZsb2F0OCk7CnVjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI4X3NhdF9ydHooZmxvYXQ4KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjhfcnRwKGZsb2F0OCk7CnVjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI4X3NhdF9ydHAoZmxvYXQ4KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjhfcnRuKGZsb2F0OCk7CnVjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI4X3NhdF9ydG4oZmxvYXQ4KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjgoZmxvYXQ4KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjhfc2F0KGZsb2F0OCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ4X3J0ZShjaGFyOCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ4X3NhdF9ydGUoY2hhcjgpOwpzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0OF9ydHooY2hhcjgpOwpzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0OF9zYXRfcnR6KGNoYXI4KTsKc2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDhfcnRwKGNoYXI4KTsKc2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDhfc2F0X3J0cChjaGFyOCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ4X3J0bihjaGFyOCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ4X3NhdF9ydG4oY2hhcjgpOwpzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0OChjaGFyOCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ4X3NhdChjaGFyOCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ4X3J0ZSh1Y2hhcjgpOwpzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0OF9zYXRfcnRlKHVjaGFyOCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ4X3J0eih1Y2hhcjgpOwpzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0OF9zYXRfcnR6KHVjaGFyOCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ4X3J0cCh1Y2hhcjgpOwpzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0OF9zYXRfcnRwKHVjaGFyOCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ4X3J0bih1Y2hhcjgpOwpzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0OF9zYXRfcnRuKHVjaGFyOCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ4KHVjaGFyOCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ4X3NhdCh1Y2hhcjgpOwpzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0OF9ydGUoc2hvcnQ4KTsKc2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDhfc2F0X3J0ZShzaG9ydDgpOwpzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0OF9ydHooc2hvcnQ4KTsKc2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDhfc2F0X3J0eihzaG9ydDgpOwpzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0OF9ydHAoc2hvcnQ4KTsKc2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDhfc2F0X3J0cChzaG9ydDgpOwpzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0OF9ydG4oc2hvcnQ4KTsKc2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDhfc2F0X3J0bihzaG9ydDgpOwpzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0OChzaG9ydDgpOwpzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0OF9zYXQoc2hvcnQ4KTsKc2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDhfcnRlKHVzaG9ydDgpOwpzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0OF9zYXRfcnRlKHVzaG9ydDgpOwpzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0OF9ydHoodXNob3J0OCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ4X3NhdF9ydHoodXNob3J0OCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ4X3J0cCh1c2hvcnQ4KTsKc2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDhfc2F0X3J0cCh1c2hvcnQ4KTsKc2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDhfcnRuKHVzaG9ydDgpOwpzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0OF9zYXRfcnRuKHVzaG9ydDgpOwpzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0OCh1c2hvcnQ4KTsKc2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDhfc2F0KHVzaG9ydDgpOwpzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0OF9ydGUoaW50OCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ4X3NhdF9ydGUoaW50OCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ4X3J0eihpbnQ4KTsKc2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDhfc2F0X3J0eihpbnQ4KTsKc2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDhfcnRwKGludDgpOwpzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0OF9zYXRfcnRwKGludDgpOwpzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0OF9ydG4oaW50OCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ4X3NhdF9ydG4oaW50OCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ4KGludDgpOwpzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0OF9zYXQoaW50OCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ4X3J0ZSh1aW50OCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ4X3NhdF9ydGUodWludDgpOwpzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0OF9ydHoodWludDgpOwpzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0OF9zYXRfcnR6KHVpbnQ4KTsKc2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDhfcnRwKHVpbnQ4KTsKc2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDhfc2F0X3J0cCh1aW50OCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ4X3J0bih1aW50OCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ4X3NhdF9ydG4odWludDgpOwpzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0OCh1aW50OCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ4X3NhdCh1aW50OCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ4X3J0ZShsb25nOCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ4X3NhdF9ydGUobG9uZzgpOwpzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0OF9ydHoobG9uZzgpOwpzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0OF9zYXRfcnR6KGxvbmc4KTsKc2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDhfcnRwKGxvbmc4KTsKc2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDhfc2F0X3J0cChsb25nOCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ4X3J0bihsb25nOCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ4X3NhdF9ydG4obG9uZzgpOwpzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0OChsb25nOCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ4X3NhdChsb25nOCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ4X3J0ZSh1bG9uZzgpOwpzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0OF9zYXRfcnRlKHVsb25nOCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ4X3J0eih1bG9uZzgpOwpzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0OF9zYXRfcnR6KHVsb25nOCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ4X3J0cCh1bG9uZzgpOwpzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0OF9zYXRfcnRwKHVsb25nOCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ4X3J0bih1bG9uZzgpOwpzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0OF9zYXRfcnRuKHVsb25nOCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ4KHVsb25nOCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ4X3NhdCh1bG9uZzgpOwpzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0OF9ydGUoZmxvYXQ4KTsKc2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDhfc2F0X3J0ZShmbG9hdDgpOwpzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0OF9ydHooZmxvYXQ4KTsKc2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDhfc2F0X3J0eihmbG9hdDgpOwpzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0OF9ydHAoZmxvYXQ4KTsKc2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDhfc2F0X3J0cChmbG9hdDgpOwpzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0OF9ydG4oZmxvYXQ4KTsKc2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDhfc2F0X3J0bihmbG9hdDgpOwpzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0OChmbG9hdDgpOwpzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0OF9zYXQoZmxvYXQ4KTsKdXNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0OF9ydGUoY2hhcjgpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ4X3NhdF9ydGUoY2hhcjgpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ4X3J0eihjaGFyOCk7CnVzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDhfc2F0X3J0eihjaGFyOCk7CnVzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDhfcnRwKGNoYXI4KTsKdXNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0OF9zYXRfcnRwKGNoYXI4KTsKdXNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0OF9ydG4oY2hhcjgpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ4X3NhdF9ydG4oY2hhcjgpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ4KGNoYXI4KTsKdXNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0OF9zYXQoY2hhcjgpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ4X3J0ZSh1Y2hhcjgpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ4X3NhdF9ydGUodWNoYXI4KTsKdXNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0OF9ydHoodWNoYXI4KTsKdXNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0OF9zYXRfcnR6KHVjaGFyOCk7CnVzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDhfcnRwKHVjaGFyOCk7CnVzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDhfc2F0X3J0cCh1Y2hhcjgpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ4X3J0bih1Y2hhcjgpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ4X3NhdF9ydG4odWNoYXI4KTsKdXNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0OCh1Y2hhcjgpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ4X3NhdCh1Y2hhcjgpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ4X3J0ZShzaG9ydDgpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ4X3NhdF9ydGUoc2hvcnQ4KTsKdXNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0OF9ydHooc2hvcnQ4KTsKdXNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0OF9zYXRfcnR6KHNob3J0OCk7CnVzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDhfcnRwKHNob3J0OCk7CnVzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDhfc2F0X3J0cChzaG9ydDgpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ4X3J0bihzaG9ydDgpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ4X3NhdF9ydG4oc2hvcnQ4KTsKdXNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0OChzaG9ydDgpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ4X3NhdChzaG9ydDgpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ4X3J0ZSh1c2hvcnQ4KTsKdXNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0OF9zYXRfcnRlKHVzaG9ydDgpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ4X3J0eih1c2hvcnQ4KTsKdXNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0OF9zYXRfcnR6KHVzaG9ydDgpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ4X3J0cCh1c2hvcnQ4KTsKdXNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0OF9zYXRfcnRwKHVzaG9ydDgpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ4X3J0bih1c2hvcnQ4KTsKdXNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0OF9zYXRfcnRuKHVzaG9ydDgpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ4KHVzaG9ydDgpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ4X3NhdCh1c2hvcnQ4KTsKdXNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0OF9ydGUoaW50OCk7CnVzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDhfc2F0X3J0ZShpbnQ4KTsKdXNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0OF9ydHooaW50OCk7CnVzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDhfc2F0X3J0eihpbnQ4KTsKdXNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0OF9ydHAoaW50OCk7CnVzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDhfc2F0X3J0cChpbnQ4KTsKdXNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0OF9ydG4oaW50OCk7CnVzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDhfc2F0X3J0bihpbnQ4KTsKdXNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0OChpbnQ4KTsKdXNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0OF9zYXQoaW50OCk7CnVzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDhfcnRlKHVpbnQ4KTsKdXNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0OF9zYXRfcnRlKHVpbnQ4KTsKdXNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0OF9ydHoodWludDgpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ4X3NhdF9ydHoodWludDgpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ4X3J0cCh1aW50OCk7CnVzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDhfc2F0X3J0cCh1aW50OCk7CnVzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDhfcnRuKHVpbnQ4KTsKdXNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0OF9zYXRfcnRuKHVpbnQ4KTsKdXNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0OCh1aW50OCk7CnVzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDhfc2F0KHVpbnQ4KTsKdXNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0OF9ydGUobG9uZzgpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ4X3NhdF9ydGUobG9uZzgpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ4X3J0eihsb25nOCk7CnVzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDhfc2F0X3J0eihsb25nOCk7CnVzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDhfcnRwKGxvbmc4KTsKdXNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0OF9zYXRfcnRwKGxvbmc4KTsKdXNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0OF9ydG4obG9uZzgpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ4X3NhdF9ydG4obG9uZzgpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ4KGxvbmc4KTsKdXNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0OF9zYXQobG9uZzgpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ4X3J0ZSh1bG9uZzgpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ4X3NhdF9ydGUodWxvbmc4KTsKdXNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0OF9ydHoodWxvbmc4KTsKdXNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0OF9zYXRfcnR6KHVsb25nOCk7CnVzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDhfcnRwKHVsb25nOCk7CnVzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDhfc2F0X3J0cCh1bG9uZzgpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ4X3J0bih1bG9uZzgpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ4X3NhdF9ydG4odWxvbmc4KTsKdXNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0OCh1bG9uZzgpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ4X3NhdCh1bG9uZzgpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ4X3J0ZShmbG9hdDgpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ4X3NhdF9ydGUoZmxvYXQ4KTsKdXNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0OF9ydHooZmxvYXQ4KTsKdXNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0OF9zYXRfcnR6KGZsb2F0OCk7CnVzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDhfcnRwKGZsb2F0OCk7CnVzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDhfc2F0X3J0cChmbG9hdDgpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ4X3J0bihmbG9hdDgpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ4X3NhdF9ydG4oZmxvYXQ4KTsKdXNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0OChmbG9hdDgpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ4X3NhdChmbG9hdDgpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ4X3J0ZShjaGFyOCk7CmludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDhfc2F0X3J0ZShjaGFyOCk7CmludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDhfcnR6KGNoYXI4KTsKaW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50OF9zYXRfcnR6KGNoYXI4KTsKaW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50OF9ydHAoY2hhcjgpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ4X3NhdF9ydHAoY2hhcjgpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ4X3J0bihjaGFyOCk7CmludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDhfc2F0X3J0bihjaGFyOCk7CmludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDgoY2hhcjgpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ4X3NhdChjaGFyOCk7CmludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDhfcnRlKHVjaGFyOCk7CmludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDhfc2F0X3J0ZSh1Y2hhcjgpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ4X3J0eih1Y2hhcjgpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ4X3NhdF9ydHoodWNoYXI4KTsKaW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50OF9ydHAodWNoYXI4KTsKaW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50OF9zYXRfcnRwKHVjaGFyOCk7CmludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDhfcnRuKHVjaGFyOCk7CmludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDhfc2F0X3J0bih1Y2hhcjgpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ4KHVjaGFyOCk7CmludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDhfc2F0KHVjaGFyOCk7CmludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDhfcnRlKHNob3J0OCk7CmludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDhfc2F0X3J0ZShzaG9ydDgpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ4X3J0eihzaG9ydDgpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ4X3NhdF9ydHooc2hvcnQ4KTsKaW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50OF9ydHAoc2hvcnQ4KTsKaW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50OF9zYXRfcnRwKHNob3J0OCk7CmludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDhfcnRuKHNob3J0OCk7CmludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDhfc2F0X3J0bihzaG9ydDgpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ4KHNob3J0OCk7CmludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDhfc2F0KHNob3J0OCk7CmludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDhfcnRlKHVzaG9ydDgpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ4X3NhdF9ydGUodXNob3J0OCk7CmludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDhfcnR6KHVzaG9ydDgpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ4X3NhdF9ydHoodXNob3J0OCk7CmludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDhfcnRwKHVzaG9ydDgpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ4X3NhdF9ydHAodXNob3J0OCk7CmludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDhfcnRuKHVzaG9ydDgpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ4X3NhdF9ydG4odXNob3J0OCk7CmludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDgodXNob3J0OCk7CmludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDhfc2F0KHVzaG9ydDgpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ4X3J0ZShpbnQ4KTsKaW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50OF9zYXRfcnRlKGludDgpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ4X3J0eihpbnQ4KTsKaW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50OF9zYXRfcnR6KGludDgpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ4X3J0cChpbnQ4KTsKaW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50OF9zYXRfcnRwKGludDgpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ4X3J0bihpbnQ4KTsKaW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50OF9zYXRfcnRuKGludDgpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ4KGludDgpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ4X3NhdChpbnQ4KTsKaW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50OF9ydGUodWludDgpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ4X3NhdF9ydGUodWludDgpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ4X3J0eih1aW50OCk7CmludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDhfc2F0X3J0eih1aW50OCk7CmludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDhfcnRwKHVpbnQ4KTsKaW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50OF9zYXRfcnRwKHVpbnQ4KTsKaW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50OF9ydG4odWludDgpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ4X3NhdF9ydG4odWludDgpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ4KHVpbnQ4KTsKaW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50OF9zYXQodWludDgpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ4X3J0ZShsb25nOCk7CmludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDhfc2F0X3J0ZShsb25nOCk7CmludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDhfcnR6KGxvbmc4KTsKaW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50OF9zYXRfcnR6KGxvbmc4KTsKaW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50OF9ydHAobG9uZzgpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ4X3NhdF9ydHAobG9uZzgpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ4X3J0bihsb25nOCk7CmludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDhfc2F0X3J0bihsb25nOCk7CmludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDgobG9uZzgpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ4X3NhdChsb25nOCk7CmludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDhfcnRlKHVsb25nOCk7CmludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDhfc2F0X3J0ZSh1bG9uZzgpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ4X3J0eih1bG9uZzgpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ4X3NhdF9ydHoodWxvbmc4KTsKaW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50OF9ydHAodWxvbmc4KTsKaW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50OF9zYXRfcnRwKHVsb25nOCk7CmludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDhfcnRuKHVsb25nOCk7CmludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDhfc2F0X3J0bih1bG9uZzgpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ4KHVsb25nOCk7CmludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDhfc2F0KHVsb25nOCk7CmludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDhfcnRlKGZsb2F0OCk7CmludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDhfc2F0X3J0ZShmbG9hdDgpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ4X3J0eihmbG9hdDgpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ4X3NhdF9ydHooZmxvYXQ4KTsKaW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50OF9ydHAoZmxvYXQ4KTsKaW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50OF9zYXRfcnRwKGZsb2F0OCk7CmludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDhfcnRuKGZsb2F0OCk7CmludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDhfc2F0X3J0bihmbG9hdDgpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ4KGZsb2F0OCk7CmludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDhfc2F0KGZsb2F0OCk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50OF9ydGUoY2hhcjgpOwp1aW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDhfc2F0X3J0ZShjaGFyOCk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50OF9ydHooY2hhcjgpOwp1aW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDhfc2F0X3J0eihjaGFyOCk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50OF9ydHAoY2hhcjgpOwp1aW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDhfc2F0X3J0cChjaGFyOCk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50OF9ydG4oY2hhcjgpOwp1aW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDhfc2F0X3J0bihjaGFyOCk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50OChjaGFyOCk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50OF9zYXQoY2hhcjgpOwp1aW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDhfcnRlKHVjaGFyOCk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50OF9zYXRfcnRlKHVjaGFyOCk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50OF9ydHoodWNoYXI4KTsKdWludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ4X3NhdF9ydHoodWNoYXI4KTsKdWludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ4X3J0cCh1Y2hhcjgpOwp1aW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDhfc2F0X3J0cCh1Y2hhcjgpOwp1aW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDhfcnRuKHVjaGFyOCk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50OF9zYXRfcnRuKHVjaGFyOCk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50OCh1Y2hhcjgpOwp1aW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDhfc2F0KHVjaGFyOCk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50OF9ydGUoc2hvcnQ4KTsKdWludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ4X3NhdF9ydGUoc2hvcnQ4KTsKdWludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ4X3J0eihzaG9ydDgpOwp1aW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDhfc2F0X3J0eihzaG9ydDgpOwp1aW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDhfcnRwKHNob3J0OCk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50OF9zYXRfcnRwKHNob3J0OCk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50OF9ydG4oc2hvcnQ4KTsKdWludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ4X3NhdF9ydG4oc2hvcnQ4KTsKdWludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ4KHNob3J0OCk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50OF9zYXQoc2hvcnQ4KTsKdWludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ4X3J0ZSh1c2hvcnQ4KTsKdWludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ4X3NhdF9ydGUodXNob3J0OCk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50OF9ydHoodXNob3J0OCk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50OF9zYXRfcnR6KHVzaG9ydDgpOwp1aW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDhfcnRwKHVzaG9ydDgpOwp1aW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDhfc2F0X3J0cCh1c2hvcnQ4KTsKdWludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ4X3J0bih1c2hvcnQ4KTsKdWludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ4X3NhdF9ydG4odXNob3J0OCk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50OCh1c2hvcnQ4KTsKdWludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ4X3NhdCh1c2hvcnQ4KTsKdWludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ4X3J0ZShpbnQ4KTsKdWludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ4X3NhdF9ydGUoaW50OCk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50OF9ydHooaW50OCk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50OF9zYXRfcnR6KGludDgpOwp1aW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDhfcnRwKGludDgpOwp1aW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDhfc2F0X3J0cChpbnQ4KTsKdWludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ4X3J0bihpbnQ4KTsKdWludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ4X3NhdF9ydG4oaW50OCk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50OChpbnQ4KTsKdWludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ4X3NhdChpbnQ4KTsKdWludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ4X3J0ZSh1aW50OCk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50OF9zYXRfcnRlKHVpbnQ4KTsKdWludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ4X3J0eih1aW50OCk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50OF9zYXRfcnR6KHVpbnQ4KTsKdWludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ4X3J0cCh1aW50OCk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50OF9zYXRfcnRwKHVpbnQ4KTsKdWludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ4X3J0bih1aW50OCk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50OF9zYXRfcnRuKHVpbnQ4KTsKdWludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ4KHVpbnQ4KTsKdWludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ4X3NhdCh1aW50OCk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50OF9ydGUobG9uZzgpOwp1aW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDhfc2F0X3J0ZShsb25nOCk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50OF9ydHoobG9uZzgpOwp1aW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDhfc2F0X3J0eihsb25nOCk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50OF9ydHAobG9uZzgpOwp1aW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDhfc2F0X3J0cChsb25nOCk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50OF9ydG4obG9uZzgpOwp1aW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDhfc2F0X3J0bihsb25nOCk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50OChsb25nOCk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50OF9zYXQobG9uZzgpOwp1aW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDhfcnRlKHVsb25nOCk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50OF9zYXRfcnRlKHVsb25nOCk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50OF9ydHoodWxvbmc4KTsKdWludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ4X3NhdF9ydHoodWxvbmc4KTsKdWludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ4X3J0cCh1bG9uZzgpOwp1aW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDhfc2F0X3J0cCh1bG9uZzgpOwp1aW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDhfcnRuKHVsb25nOCk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50OF9zYXRfcnRuKHVsb25nOCk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50OCh1bG9uZzgpOwp1aW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDhfc2F0KHVsb25nOCk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50OF9ydGUoZmxvYXQ4KTsKdWludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ4X3NhdF9ydGUoZmxvYXQ4KTsKdWludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ4X3J0eihmbG9hdDgpOwp1aW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDhfc2F0X3J0eihmbG9hdDgpOwp1aW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDhfcnRwKGZsb2F0OCk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50OF9zYXRfcnRwKGZsb2F0OCk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50OF9ydG4oZmxvYXQ4KTsKdWludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ4X3NhdF9ydG4oZmxvYXQ4KTsKdWludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ4KGZsb2F0OCk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50OF9zYXQoZmxvYXQ4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4X3J0ZShjaGFyOCk7Cmxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nOF9zYXRfcnRlKGNoYXI4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4X3J0eihjaGFyOCk7Cmxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nOF9zYXRfcnR6KGNoYXI4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4X3J0cChjaGFyOCk7Cmxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nOF9zYXRfcnRwKGNoYXI4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4X3J0bihjaGFyOCk7Cmxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nOF9zYXRfcnRuKGNoYXI4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4KGNoYXI4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4X3NhdChjaGFyOCk7Cmxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nOF9ydGUodWNoYXI4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4X3NhdF9ydGUodWNoYXI4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4X3J0eih1Y2hhcjgpOwpsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzhfc2F0X3J0eih1Y2hhcjgpOwpsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzhfcnRwKHVjaGFyOCk7Cmxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nOF9zYXRfcnRwKHVjaGFyOCk7Cmxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nOF9ydG4odWNoYXI4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4X3NhdF9ydG4odWNoYXI4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4KHVjaGFyOCk7Cmxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nOF9zYXQodWNoYXI4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4X3J0ZShzaG9ydDgpOwpsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzhfc2F0X3J0ZShzaG9ydDgpOwpsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzhfcnR6KHNob3J0OCk7Cmxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nOF9zYXRfcnR6KHNob3J0OCk7Cmxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nOF9ydHAoc2hvcnQ4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4X3NhdF9ydHAoc2hvcnQ4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4X3J0bihzaG9ydDgpOwpsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzhfc2F0X3J0bihzaG9ydDgpOwpsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzgoc2hvcnQ4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4X3NhdChzaG9ydDgpOwpsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzhfcnRlKHVzaG9ydDgpOwpsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzhfc2F0X3J0ZSh1c2hvcnQ4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4X3J0eih1c2hvcnQ4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4X3NhdF9ydHoodXNob3J0OCk7Cmxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nOF9ydHAodXNob3J0OCk7Cmxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nOF9zYXRfcnRwKHVzaG9ydDgpOwpsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzhfcnRuKHVzaG9ydDgpOwpsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzhfc2F0X3J0bih1c2hvcnQ4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4KHVzaG9ydDgpOwpsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzhfc2F0KHVzaG9ydDgpOwpsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzhfcnRlKGludDgpOwpsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzhfc2F0X3J0ZShpbnQ4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4X3J0eihpbnQ4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4X3NhdF9ydHooaW50OCk7Cmxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nOF9ydHAoaW50OCk7Cmxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nOF9zYXRfcnRwKGludDgpOwpsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzhfcnRuKGludDgpOwpsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzhfc2F0X3J0bihpbnQ4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4KGludDgpOwpsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzhfc2F0KGludDgpOwpsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzhfcnRlKHVpbnQ4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4X3NhdF9ydGUodWludDgpOwpsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzhfcnR6KHVpbnQ4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4X3NhdF9ydHoodWludDgpOwpsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzhfcnRwKHVpbnQ4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4X3NhdF9ydHAodWludDgpOwpsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzhfcnRuKHVpbnQ4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4X3NhdF9ydG4odWludDgpOwpsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzgodWludDgpOwpsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzhfc2F0KHVpbnQ4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4X3J0ZShsb25nOCk7Cmxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nOF9zYXRfcnRlKGxvbmc4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4X3J0eihsb25nOCk7Cmxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nOF9zYXRfcnR6KGxvbmc4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4X3J0cChsb25nOCk7Cmxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nOF9zYXRfcnRwKGxvbmc4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4X3J0bihsb25nOCk7Cmxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nOF9zYXRfcnRuKGxvbmc4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4KGxvbmc4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4X3NhdChsb25nOCk7Cmxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nOF9ydGUodWxvbmc4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4X3NhdF9ydGUodWxvbmc4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4X3J0eih1bG9uZzgpOwpsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzhfc2F0X3J0eih1bG9uZzgpOwpsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzhfcnRwKHVsb25nOCk7Cmxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nOF9zYXRfcnRwKHVsb25nOCk7Cmxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nOF9ydG4odWxvbmc4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4X3NhdF9ydG4odWxvbmc4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4KHVsb25nOCk7Cmxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nOF9zYXQodWxvbmc4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4X3J0ZShmbG9hdDgpOwpsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzhfc2F0X3J0ZShmbG9hdDgpOwpsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzhfcnR6KGZsb2F0OCk7Cmxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nOF9zYXRfcnR6KGZsb2F0OCk7Cmxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nOF9ydHAoZmxvYXQ4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4X3NhdF9ydHAoZmxvYXQ4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4X3J0bihmbG9hdDgpOwpsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzhfc2F0X3J0bihmbG9hdDgpOwpsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzgoZmxvYXQ4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4X3NhdChmbG9hdDgpOwp1bG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nOF9ydGUoY2hhcjgpOwp1bG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nOF9zYXRfcnRlKGNoYXI4KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzhfcnR6KGNoYXI4KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzhfc2F0X3J0eihjaGFyOCk7CnVsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc4X3J0cChjaGFyOCk7CnVsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc4X3NhdF9ydHAoY2hhcjgpOwp1bG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nOF9ydG4oY2hhcjgpOwp1bG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nOF9zYXRfcnRuKGNoYXI4KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzgoY2hhcjgpOwp1bG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nOF9zYXQoY2hhcjgpOwp1bG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nOF9ydGUodWNoYXI4KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzhfc2F0X3J0ZSh1Y2hhcjgpOwp1bG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nOF9ydHoodWNoYXI4KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzhfc2F0X3J0eih1Y2hhcjgpOwp1bG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nOF9ydHAodWNoYXI4KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzhfc2F0X3J0cCh1Y2hhcjgpOwp1bG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nOF9ydG4odWNoYXI4KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzhfc2F0X3J0bih1Y2hhcjgpOwp1bG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nOCh1Y2hhcjgpOwp1bG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nOF9zYXQodWNoYXI4KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzhfcnRlKHNob3J0OCk7CnVsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc4X3NhdF9ydGUoc2hvcnQ4KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzhfcnR6KHNob3J0OCk7CnVsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc4X3NhdF9ydHooc2hvcnQ4KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzhfcnRwKHNob3J0OCk7CnVsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc4X3NhdF9ydHAoc2hvcnQ4KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzhfcnRuKHNob3J0OCk7CnVsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc4X3NhdF9ydG4oc2hvcnQ4KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzgoc2hvcnQ4KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzhfc2F0KHNob3J0OCk7CnVsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc4X3J0ZSh1c2hvcnQ4KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzhfc2F0X3J0ZSh1c2hvcnQ4KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzhfcnR6KHVzaG9ydDgpOwp1bG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nOF9zYXRfcnR6KHVzaG9ydDgpOwp1bG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nOF9ydHAodXNob3J0OCk7CnVsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc4X3NhdF9ydHAodXNob3J0OCk7CnVsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc4X3J0bih1c2hvcnQ4KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzhfc2F0X3J0bih1c2hvcnQ4KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzgodXNob3J0OCk7CnVsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc4X3NhdCh1c2hvcnQ4KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzhfcnRlKGludDgpOwp1bG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nOF9zYXRfcnRlKGludDgpOwp1bG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nOF9ydHooaW50OCk7CnVsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc4X3NhdF9ydHooaW50OCk7CnVsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc4X3J0cChpbnQ4KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzhfc2F0X3J0cChpbnQ4KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzhfcnRuKGludDgpOwp1bG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nOF9zYXRfcnRuKGludDgpOwp1bG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nOChpbnQ4KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzhfc2F0KGludDgpOwp1bG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nOF9ydGUodWludDgpOwp1bG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nOF9zYXRfcnRlKHVpbnQ4KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzhfcnR6KHVpbnQ4KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzhfc2F0X3J0eih1aW50OCk7CnVsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc4X3J0cCh1aW50OCk7CnVsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc4X3NhdF9ydHAodWludDgpOwp1bG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nOF9ydG4odWludDgpOwp1bG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nOF9zYXRfcnRuKHVpbnQ4KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzgodWludDgpOwp1bG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nOF9zYXQodWludDgpOwp1bG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nOF9ydGUobG9uZzgpOwp1bG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nOF9zYXRfcnRlKGxvbmc4KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzhfcnR6KGxvbmc4KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzhfc2F0X3J0eihsb25nOCk7CnVsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc4X3J0cChsb25nOCk7CnVsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc4X3NhdF9ydHAobG9uZzgpOwp1bG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nOF9ydG4obG9uZzgpOwp1bG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nOF9zYXRfcnRuKGxvbmc4KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzgobG9uZzgpOwp1bG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nOF9zYXQobG9uZzgpOwp1bG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nOF9ydGUodWxvbmc4KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzhfc2F0X3J0ZSh1bG9uZzgpOwp1bG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nOF9ydHoodWxvbmc4KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzhfc2F0X3J0eih1bG9uZzgpOwp1bG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nOF9ydHAodWxvbmc4KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzhfc2F0X3J0cCh1bG9uZzgpOwp1bG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nOF9ydG4odWxvbmc4KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzhfc2F0X3J0bih1bG9uZzgpOwp1bG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nOCh1bG9uZzgpOwp1bG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nOF9zYXQodWxvbmc4KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzhfcnRlKGZsb2F0OCk7CnVsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc4X3NhdF9ydGUoZmxvYXQ4KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzhfcnR6KGZsb2F0OCk7CnVsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc4X3NhdF9ydHooZmxvYXQ4KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzhfcnRwKGZsb2F0OCk7CnVsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc4X3NhdF9ydHAoZmxvYXQ4KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzhfcnRuKGZsb2F0OCk7CnVsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc4X3NhdF9ydG4oZmxvYXQ4KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzgoZmxvYXQ4KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzhfc2F0KGZsb2F0OCk7CmZsb2F0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQ4X3J0ZShjaGFyOCk7CmZsb2F0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQ4X3J0eihjaGFyOCk7CmZsb2F0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQ4X3J0cChjaGFyOCk7CmZsb2F0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQ4X3J0bihjaGFyOCk7CmZsb2F0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQ4KGNoYXI4KTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDhfcnRlKHVjaGFyOCk7CmZsb2F0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQ4X3J0eih1Y2hhcjgpOwpmbG9hdDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0OF9ydHAodWNoYXI4KTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDhfcnRuKHVjaGFyOCk7CmZsb2F0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQ4KHVjaGFyOCk7CmZsb2F0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQ4X3J0ZShzaG9ydDgpOwpmbG9hdDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0OF9ydHooc2hvcnQ4KTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDhfcnRwKHNob3J0OCk7CmZsb2F0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQ4X3J0bihzaG9ydDgpOwpmbG9hdDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0OChzaG9ydDgpOwpmbG9hdDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0OF9ydGUodXNob3J0OCk7CmZsb2F0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQ4X3J0eih1c2hvcnQ4KTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDhfcnRwKHVzaG9ydDgpOwpmbG9hdDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0OF9ydG4odXNob3J0OCk7CmZsb2F0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQ4KHVzaG9ydDgpOwpmbG9hdDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0OF9ydGUoaW50OCk7CmZsb2F0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQ4X3J0eihpbnQ4KTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDhfcnRwKGludDgpOwpmbG9hdDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0OF9ydG4oaW50OCk7CmZsb2F0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQ4KGludDgpOwpmbG9hdDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0OF9ydGUodWludDgpOwpmbG9hdDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0OF9ydHoodWludDgpOwpmbG9hdDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0OF9ydHAodWludDgpOwpmbG9hdDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0OF9ydG4odWludDgpOwpmbG9hdDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0OCh1aW50OCk7CmZsb2F0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQ4X3J0ZShsb25nOCk7CmZsb2F0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQ4X3J0eihsb25nOCk7CmZsb2F0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQ4X3J0cChsb25nOCk7CmZsb2F0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQ4X3J0bihsb25nOCk7CmZsb2F0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQ4KGxvbmc4KTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDhfcnRlKHVsb25nOCk7CmZsb2F0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQ4X3J0eih1bG9uZzgpOwpmbG9hdDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0OF9ydHAodWxvbmc4KTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDhfcnRuKHVsb25nOCk7CmZsb2F0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQ4KHVsb25nOCk7CmZsb2F0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQ4X3J0ZShmbG9hdDgpOwpmbG9hdDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0OF9ydHooZmxvYXQ4KTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDhfcnRwKGZsb2F0OCk7CmZsb2F0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQ4X3J0bihmbG9hdDgpOwpmbG9hdDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0OChmbG9hdDgpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIxNl9ydGUoY2hhcjE2KTsKY2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMTZfc2F0X3J0ZShjaGFyMTYpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIxNl9ydHooY2hhcjE2KTsKY2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMTZfc2F0X3J0eihjaGFyMTYpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIxNl9ydHAoY2hhcjE2KTsKY2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMTZfc2F0X3J0cChjaGFyMTYpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIxNl9ydG4oY2hhcjE2KTsKY2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMTZfc2F0X3J0bihjaGFyMTYpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIxNihjaGFyMTYpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIxNl9zYXQoY2hhcjE2KTsKY2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMTZfcnRlKHVjaGFyMTYpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIxNl9zYXRfcnRlKHVjaGFyMTYpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIxNl9ydHoodWNoYXIxNik7CmNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjE2X3NhdF9ydHoodWNoYXIxNik7CmNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjE2X3J0cCh1Y2hhcjE2KTsKY2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMTZfc2F0X3J0cCh1Y2hhcjE2KTsKY2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMTZfcnRuKHVjaGFyMTYpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIxNl9zYXRfcnRuKHVjaGFyMTYpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIxNih1Y2hhcjE2KTsKY2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMTZfc2F0KHVjaGFyMTYpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIxNl9ydGUoc2hvcnQxNik7CmNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjE2X3NhdF9ydGUoc2hvcnQxNik7CmNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjE2X3J0eihzaG9ydDE2KTsKY2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMTZfc2F0X3J0eihzaG9ydDE2KTsKY2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMTZfcnRwKHNob3J0MTYpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIxNl9zYXRfcnRwKHNob3J0MTYpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIxNl9ydG4oc2hvcnQxNik7CmNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjE2X3NhdF9ydG4oc2hvcnQxNik7CmNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjE2KHNob3J0MTYpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIxNl9zYXQoc2hvcnQxNik7CmNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjE2X3J0ZSh1c2hvcnQxNik7CmNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjE2X3NhdF9ydGUodXNob3J0MTYpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIxNl9ydHoodXNob3J0MTYpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIxNl9zYXRfcnR6KHVzaG9ydDE2KTsKY2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMTZfcnRwKHVzaG9ydDE2KTsKY2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMTZfc2F0X3J0cCh1c2hvcnQxNik7CmNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjE2X3J0bih1c2hvcnQxNik7CmNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjE2X3NhdF9ydG4odXNob3J0MTYpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIxNih1c2hvcnQxNik7CmNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjE2X3NhdCh1c2hvcnQxNik7CmNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjE2X3J0ZShpbnQxNik7CmNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjE2X3NhdF9ydGUoaW50MTYpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIxNl9ydHooaW50MTYpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIxNl9zYXRfcnR6KGludDE2KTsKY2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMTZfcnRwKGludDE2KTsKY2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMTZfc2F0X3J0cChpbnQxNik7CmNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjE2X3J0bihpbnQxNik7CmNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjE2X3NhdF9ydG4oaW50MTYpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIxNihpbnQxNik7CmNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjE2X3NhdChpbnQxNik7CmNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjE2X3J0ZSh1aW50MTYpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIxNl9zYXRfcnRlKHVpbnQxNik7CmNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjE2X3J0eih1aW50MTYpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIxNl9zYXRfcnR6KHVpbnQxNik7CmNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjE2X3J0cCh1aW50MTYpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIxNl9zYXRfcnRwKHVpbnQxNik7CmNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjE2X3J0bih1aW50MTYpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIxNl9zYXRfcnRuKHVpbnQxNik7CmNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjE2KHVpbnQxNik7CmNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjE2X3NhdCh1aW50MTYpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIxNl9ydGUobG9uZzE2KTsKY2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMTZfc2F0X3J0ZShsb25nMTYpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIxNl9ydHoobG9uZzE2KTsKY2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMTZfc2F0X3J0eihsb25nMTYpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIxNl9ydHAobG9uZzE2KTsKY2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMTZfc2F0X3J0cChsb25nMTYpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIxNl9ydG4obG9uZzE2KTsKY2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMTZfc2F0X3J0bihsb25nMTYpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIxNihsb25nMTYpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIxNl9zYXQobG9uZzE2KTsKY2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMTZfcnRlKHVsb25nMTYpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIxNl9zYXRfcnRlKHVsb25nMTYpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIxNl9ydHoodWxvbmcxNik7CmNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjE2X3NhdF9ydHoodWxvbmcxNik7CmNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjE2X3J0cCh1bG9uZzE2KTsKY2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMTZfc2F0X3J0cCh1bG9uZzE2KTsKY2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMTZfcnRuKHVsb25nMTYpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIxNl9zYXRfcnRuKHVsb25nMTYpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIxNih1bG9uZzE2KTsKY2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMTZfc2F0KHVsb25nMTYpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIxNl9ydGUoZmxvYXQxNik7CmNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjE2X3NhdF9ydGUoZmxvYXQxNik7CmNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjE2X3J0eihmbG9hdDE2KTsKY2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMTZfc2F0X3J0eihmbG9hdDE2KTsKY2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMTZfcnRwKGZsb2F0MTYpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIxNl9zYXRfcnRwKGZsb2F0MTYpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIxNl9ydG4oZmxvYXQxNik7CmNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjE2X3NhdF9ydG4oZmxvYXQxNik7CmNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjE2KGZsb2F0MTYpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIxNl9zYXQoZmxvYXQxNik7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMTZfcnRlKGNoYXIxNik7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMTZfc2F0X3J0ZShjaGFyMTYpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjE2X3J0eihjaGFyMTYpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjE2X3NhdF9ydHooY2hhcjE2KTsKdWNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIxNl9ydHAoY2hhcjE2KTsKdWNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIxNl9zYXRfcnRwKGNoYXIxNik7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMTZfcnRuKGNoYXIxNik7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMTZfc2F0X3J0bihjaGFyMTYpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjE2KGNoYXIxNik7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMTZfc2F0KGNoYXIxNik7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMTZfcnRlKHVjaGFyMTYpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjE2X3NhdF9ydGUodWNoYXIxNik7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMTZfcnR6KHVjaGFyMTYpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjE2X3NhdF9ydHoodWNoYXIxNik7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMTZfcnRwKHVjaGFyMTYpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjE2X3NhdF9ydHAodWNoYXIxNik7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMTZfcnRuKHVjaGFyMTYpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjE2X3NhdF9ydG4odWNoYXIxNik7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMTYodWNoYXIxNik7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMTZfc2F0KHVjaGFyMTYpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjE2X3J0ZShzaG9ydDE2KTsKdWNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIxNl9zYXRfcnRlKHNob3J0MTYpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjE2X3J0eihzaG9ydDE2KTsKdWNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIxNl9zYXRfcnR6KHNob3J0MTYpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjE2X3J0cChzaG9ydDE2KTsKdWNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIxNl9zYXRfcnRwKHNob3J0MTYpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjE2X3J0bihzaG9ydDE2KTsKdWNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIxNl9zYXRfcnRuKHNob3J0MTYpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjE2KHNob3J0MTYpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjE2X3NhdChzaG9ydDE2KTsKdWNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIxNl9ydGUodXNob3J0MTYpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjE2X3NhdF9ydGUodXNob3J0MTYpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjE2X3J0eih1c2hvcnQxNik7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMTZfc2F0X3J0eih1c2hvcnQxNik7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMTZfcnRwKHVzaG9ydDE2KTsKdWNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIxNl9zYXRfcnRwKHVzaG9ydDE2KTsKdWNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIxNl9ydG4odXNob3J0MTYpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjE2X3NhdF9ydG4odXNob3J0MTYpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjE2KHVzaG9ydDE2KTsKdWNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIxNl9zYXQodXNob3J0MTYpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjE2X3J0ZShpbnQxNik7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMTZfc2F0X3J0ZShpbnQxNik7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMTZfcnR6KGludDE2KTsKdWNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIxNl9zYXRfcnR6KGludDE2KTsKdWNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIxNl9ydHAoaW50MTYpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjE2X3NhdF9ydHAoaW50MTYpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjE2X3J0bihpbnQxNik7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMTZfc2F0X3J0bihpbnQxNik7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMTYoaW50MTYpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjE2X3NhdChpbnQxNik7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMTZfcnRlKHVpbnQxNik7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMTZfc2F0X3J0ZSh1aW50MTYpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjE2X3J0eih1aW50MTYpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjE2X3NhdF9ydHoodWludDE2KTsKdWNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIxNl9ydHAodWludDE2KTsKdWNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIxNl9zYXRfcnRwKHVpbnQxNik7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMTZfcnRuKHVpbnQxNik7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMTZfc2F0X3J0bih1aW50MTYpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjE2KHVpbnQxNik7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMTZfc2F0KHVpbnQxNik7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMTZfcnRlKGxvbmcxNik7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMTZfc2F0X3J0ZShsb25nMTYpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjE2X3J0eihsb25nMTYpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjE2X3NhdF9ydHoobG9uZzE2KTsKdWNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIxNl9ydHAobG9uZzE2KTsKdWNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIxNl9zYXRfcnRwKGxvbmcxNik7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMTZfcnRuKGxvbmcxNik7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMTZfc2F0X3J0bihsb25nMTYpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjE2KGxvbmcxNik7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMTZfc2F0KGxvbmcxNik7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMTZfcnRlKHVsb25nMTYpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjE2X3NhdF9ydGUodWxvbmcxNik7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMTZfcnR6KHVsb25nMTYpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjE2X3NhdF9ydHoodWxvbmcxNik7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMTZfcnRwKHVsb25nMTYpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjE2X3NhdF9ydHAodWxvbmcxNik7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMTZfcnRuKHVsb25nMTYpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjE2X3NhdF9ydG4odWxvbmcxNik7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMTYodWxvbmcxNik7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMTZfc2F0KHVsb25nMTYpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjE2X3J0ZShmbG9hdDE2KTsKdWNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIxNl9zYXRfcnRlKGZsb2F0MTYpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjE2X3J0eihmbG9hdDE2KTsKdWNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIxNl9zYXRfcnR6KGZsb2F0MTYpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjE2X3J0cChmbG9hdDE2KTsKdWNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIxNl9zYXRfcnRwKGZsb2F0MTYpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjE2X3J0bihmbG9hdDE2KTsKdWNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIxNl9zYXRfcnRuKGZsb2F0MTYpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjE2KGZsb2F0MTYpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjE2X3NhdChmbG9hdDE2KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQxNl9ydGUoY2hhcjE2KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQxNl9zYXRfcnRlKGNoYXIxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTZfcnR6KGNoYXIxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTZfc2F0X3J0eihjaGFyMTYpOwpzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDE2X3J0cChjaGFyMTYpOwpzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDE2X3NhdF9ydHAoY2hhcjE2KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQxNl9ydG4oY2hhcjE2KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQxNl9zYXRfcnRuKGNoYXIxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTYoY2hhcjE2KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQxNl9zYXQoY2hhcjE2KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQxNl9ydGUodWNoYXIxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTZfc2F0X3J0ZSh1Y2hhcjE2KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQxNl9ydHoodWNoYXIxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTZfc2F0X3J0eih1Y2hhcjE2KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQxNl9ydHAodWNoYXIxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTZfc2F0X3J0cCh1Y2hhcjE2KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQxNl9ydG4odWNoYXIxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTZfc2F0X3J0bih1Y2hhcjE2KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQxNih1Y2hhcjE2KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQxNl9zYXQodWNoYXIxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTZfcnRlKHNob3J0MTYpOwpzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDE2X3NhdF9ydGUoc2hvcnQxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTZfcnR6KHNob3J0MTYpOwpzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDE2X3NhdF9ydHooc2hvcnQxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTZfcnRwKHNob3J0MTYpOwpzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDE2X3NhdF9ydHAoc2hvcnQxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTZfcnRuKHNob3J0MTYpOwpzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDE2X3NhdF9ydG4oc2hvcnQxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTYoc2hvcnQxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTZfc2F0KHNob3J0MTYpOwpzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDE2X3J0ZSh1c2hvcnQxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTZfc2F0X3J0ZSh1c2hvcnQxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTZfcnR6KHVzaG9ydDE2KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQxNl9zYXRfcnR6KHVzaG9ydDE2KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQxNl9ydHAodXNob3J0MTYpOwpzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDE2X3NhdF9ydHAodXNob3J0MTYpOwpzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDE2X3J0bih1c2hvcnQxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTZfc2F0X3J0bih1c2hvcnQxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTYodXNob3J0MTYpOwpzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDE2X3NhdCh1c2hvcnQxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTZfcnRlKGludDE2KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQxNl9zYXRfcnRlKGludDE2KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQxNl9ydHooaW50MTYpOwpzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDE2X3NhdF9ydHooaW50MTYpOwpzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDE2X3J0cChpbnQxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTZfc2F0X3J0cChpbnQxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTZfcnRuKGludDE2KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQxNl9zYXRfcnRuKGludDE2KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQxNihpbnQxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTZfc2F0KGludDE2KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQxNl9ydGUodWludDE2KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQxNl9zYXRfcnRlKHVpbnQxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTZfcnR6KHVpbnQxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTZfc2F0X3J0eih1aW50MTYpOwpzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDE2X3J0cCh1aW50MTYpOwpzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDE2X3NhdF9ydHAodWludDE2KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQxNl9ydG4odWludDE2KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQxNl9zYXRfcnRuKHVpbnQxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTYodWludDE2KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQxNl9zYXQodWludDE2KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQxNl9ydGUobG9uZzE2KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQxNl9zYXRfcnRlKGxvbmcxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTZfcnR6KGxvbmcxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTZfc2F0X3J0eihsb25nMTYpOwpzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDE2X3J0cChsb25nMTYpOwpzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDE2X3NhdF9ydHAobG9uZzE2KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQxNl9ydG4obG9uZzE2KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQxNl9zYXRfcnRuKGxvbmcxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTYobG9uZzE2KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQxNl9zYXQobG9uZzE2KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQxNl9ydGUodWxvbmcxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTZfc2F0X3J0ZSh1bG9uZzE2KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQxNl9ydHoodWxvbmcxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTZfc2F0X3J0eih1bG9uZzE2KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQxNl9ydHAodWxvbmcxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTZfc2F0X3J0cCh1bG9uZzE2KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQxNl9ydG4odWxvbmcxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTZfc2F0X3J0bih1bG9uZzE2KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQxNih1bG9uZzE2KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQxNl9zYXQodWxvbmcxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTZfcnRlKGZsb2F0MTYpOwpzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDE2X3NhdF9ydGUoZmxvYXQxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTZfcnR6KGZsb2F0MTYpOwpzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDE2X3NhdF9ydHooZmxvYXQxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTZfcnRwKGZsb2F0MTYpOwpzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDE2X3NhdF9ydHAoZmxvYXQxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTZfcnRuKGZsb2F0MTYpOwpzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDE2X3NhdF9ydG4oZmxvYXQxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTYoZmxvYXQxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTZfc2F0KGZsb2F0MTYpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0MTZfcnRlKGNoYXIxNik7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQxNl9zYXRfcnRlKGNoYXIxNik7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQxNl9ydHooY2hhcjE2KTsKdXNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDE2X3NhdF9ydHooY2hhcjE2KTsKdXNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDE2X3J0cChjaGFyMTYpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0MTZfc2F0X3J0cChjaGFyMTYpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0MTZfcnRuKGNoYXIxNik7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQxNl9zYXRfcnRuKGNoYXIxNik7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQxNihjaGFyMTYpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0MTZfc2F0KGNoYXIxNik7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQxNl9ydGUodWNoYXIxNik7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQxNl9zYXRfcnRlKHVjaGFyMTYpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0MTZfcnR6KHVjaGFyMTYpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0MTZfc2F0X3J0eih1Y2hhcjE2KTsKdXNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDE2X3J0cCh1Y2hhcjE2KTsKdXNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDE2X3NhdF9ydHAodWNoYXIxNik7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQxNl9ydG4odWNoYXIxNik7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQxNl9zYXRfcnRuKHVjaGFyMTYpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0MTYodWNoYXIxNik7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQxNl9zYXQodWNoYXIxNik7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQxNl9ydGUoc2hvcnQxNik7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQxNl9zYXRfcnRlKHNob3J0MTYpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0MTZfcnR6KHNob3J0MTYpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0MTZfc2F0X3J0eihzaG9ydDE2KTsKdXNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDE2X3J0cChzaG9ydDE2KTsKdXNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDE2X3NhdF9ydHAoc2hvcnQxNik7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQxNl9ydG4oc2hvcnQxNik7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQxNl9zYXRfcnRuKHNob3J0MTYpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0MTYoc2hvcnQxNik7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQxNl9zYXQoc2hvcnQxNik7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQxNl9ydGUodXNob3J0MTYpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0MTZfc2F0X3J0ZSh1c2hvcnQxNik7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQxNl9ydHoodXNob3J0MTYpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0MTZfc2F0X3J0eih1c2hvcnQxNik7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQxNl9ydHAodXNob3J0MTYpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0MTZfc2F0X3J0cCh1c2hvcnQxNik7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQxNl9ydG4odXNob3J0MTYpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0MTZfc2F0X3J0bih1c2hvcnQxNik7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQxNih1c2hvcnQxNik7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQxNl9zYXQodXNob3J0MTYpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0MTZfcnRlKGludDE2KTsKdXNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDE2X3NhdF9ydGUoaW50MTYpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0MTZfcnR6KGludDE2KTsKdXNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDE2X3NhdF9ydHooaW50MTYpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0MTZfcnRwKGludDE2KTsKdXNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDE2X3NhdF9ydHAoaW50MTYpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0MTZfcnRuKGludDE2KTsKdXNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDE2X3NhdF9ydG4oaW50MTYpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0MTYoaW50MTYpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0MTZfc2F0KGludDE2KTsKdXNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDE2X3J0ZSh1aW50MTYpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0MTZfc2F0X3J0ZSh1aW50MTYpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0MTZfcnR6KHVpbnQxNik7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQxNl9zYXRfcnR6KHVpbnQxNik7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQxNl9ydHAodWludDE2KTsKdXNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDE2X3NhdF9ydHAodWludDE2KTsKdXNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDE2X3J0bih1aW50MTYpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0MTZfc2F0X3J0bih1aW50MTYpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0MTYodWludDE2KTsKdXNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDE2X3NhdCh1aW50MTYpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0MTZfcnRlKGxvbmcxNik7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQxNl9zYXRfcnRlKGxvbmcxNik7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQxNl9ydHoobG9uZzE2KTsKdXNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDE2X3NhdF9ydHoobG9uZzE2KTsKdXNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDE2X3J0cChsb25nMTYpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0MTZfc2F0X3J0cChsb25nMTYpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0MTZfcnRuKGxvbmcxNik7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQxNl9zYXRfcnRuKGxvbmcxNik7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQxNihsb25nMTYpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0MTZfc2F0KGxvbmcxNik7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQxNl9ydGUodWxvbmcxNik7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQxNl9zYXRfcnRlKHVsb25nMTYpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0MTZfcnR6KHVsb25nMTYpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0MTZfc2F0X3J0eih1bG9uZzE2KTsKdXNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDE2X3J0cCh1bG9uZzE2KTsKdXNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDE2X3NhdF9ydHAodWxvbmcxNik7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQxNl9ydG4odWxvbmcxNik7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQxNl9zYXRfcnRuKHVsb25nMTYpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0MTYodWxvbmcxNik7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQxNl9zYXQodWxvbmcxNik7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQxNl9ydGUoZmxvYXQxNik7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQxNl9zYXRfcnRlKGZsb2F0MTYpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0MTZfcnR6KGZsb2F0MTYpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0MTZfc2F0X3J0eihmbG9hdDE2KTsKdXNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDE2X3J0cChmbG9hdDE2KTsKdXNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDE2X3NhdF9ydHAoZmxvYXQxNik7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQxNl9ydG4oZmxvYXQxNik7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQxNl9zYXRfcnRuKGZsb2F0MTYpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0MTYoZmxvYXQxNik7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQxNl9zYXQoZmxvYXQxNik7CmludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQxNl9ydGUoY2hhcjE2KTsKaW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDE2X3NhdF9ydGUoY2hhcjE2KTsKaW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDE2X3J0eihjaGFyMTYpOwppbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50MTZfc2F0X3J0eihjaGFyMTYpOwppbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50MTZfcnRwKGNoYXIxNik7CmludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQxNl9zYXRfcnRwKGNoYXIxNik7CmludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQxNl9ydG4oY2hhcjE2KTsKaW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDE2X3NhdF9ydG4oY2hhcjE2KTsKaW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDE2KGNoYXIxNik7CmludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQxNl9zYXQoY2hhcjE2KTsKaW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDE2X3J0ZSh1Y2hhcjE2KTsKaW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDE2X3NhdF9ydGUodWNoYXIxNik7CmludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQxNl9ydHoodWNoYXIxNik7CmludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQxNl9zYXRfcnR6KHVjaGFyMTYpOwppbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50MTZfcnRwKHVjaGFyMTYpOwppbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50MTZfc2F0X3J0cCh1Y2hhcjE2KTsKaW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDE2X3J0bih1Y2hhcjE2KTsKaW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDE2X3NhdF9ydG4odWNoYXIxNik7CmludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQxNih1Y2hhcjE2KTsKaW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDE2X3NhdCh1Y2hhcjE2KTsKaW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDE2X3J0ZShzaG9ydDE2KTsKaW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDE2X3NhdF9ydGUoc2hvcnQxNik7CmludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQxNl9ydHooc2hvcnQxNik7CmludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQxNl9zYXRfcnR6KHNob3J0MTYpOwppbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50MTZfcnRwKHNob3J0MTYpOwppbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50MTZfc2F0X3J0cChzaG9ydDE2KTsKaW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDE2X3J0bihzaG9ydDE2KTsKaW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDE2X3NhdF9ydG4oc2hvcnQxNik7CmludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQxNihzaG9ydDE2KTsKaW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDE2X3NhdChzaG9ydDE2KTsKaW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDE2X3J0ZSh1c2hvcnQxNik7CmludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQxNl9zYXRfcnRlKHVzaG9ydDE2KTsKaW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDE2X3J0eih1c2hvcnQxNik7CmludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQxNl9zYXRfcnR6KHVzaG9ydDE2KTsKaW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDE2X3J0cCh1c2hvcnQxNik7CmludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQxNl9zYXRfcnRwKHVzaG9ydDE2KTsKaW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDE2X3J0bih1c2hvcnQxNik7CmludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQxNl9zYXRfcnRuKHVzaG9ydDE2KTsKaW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDE2KHVzaG9ydDE2KTsKaW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDE2X3NhdCh1c2hvcnQxNik7CmludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQxNl9ydGUoaW50MTYpOwppbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50MTZfc2F0X3J0ZShpbnQxNik7CmludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQxNl9ydHooaW50MTYpOwppbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50MTZfc2F0X3J0eihpbnQxNik7CmludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQxNl9ydHAoaW50MTYpOwppbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50MTZfc2F0X3J0cChpbnQxNik7CmludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQxNl9ydG4oaW50MTYpOwppbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50MTZfc2F0X3J0bihpbnQxNik7CmludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQxNihpbnQxNik7CmludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQxNl9zYXQoaW50MTYpOwppbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50MTZfcnRlKHVpbnQxNik7CmludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQxNl9zYXRfcnRlKHVpbnQxNik7CmludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQxNl9ydHoodWludDE2KTsKaW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDE2X3NhdF9ydHoodWludDE2KTsKaW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDE2X3J0cCh1aW50MTYpOwppbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50MTZfc2F0X3J0cCh1aW50MTYpOwppbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50MTZfcnRuKHVpbnQxNik7CmludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQxNl9zYXRfcnRuKHVpbnQxNik7CmludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQxNih1aW50MTYpOwppbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50MTZfc2F0KHVpbnQxNik7CmludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQxNl9ydGUobG9uZzE2KTsKaW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDE2X3NhdF9ydGUobG9uZzE2KTsKaW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDE2X3J0eihsb25nMTYpOwppbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50MTZfc2F0X3J0eihsb25nMTYpOwppbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50MTZfcnRwKGxvbmcxNik7CmludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQxNl9zYXRfcnRwKGxvbmcxNik7CmludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQxNl9ydG4obG9uZzE2KTsKaW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDE2X3NhdF9ydG4obG9uZzE2KTsKaW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDE2KGxvbmcxNik7CmludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQxNl9zYXQobG9uZzE2KTsKaW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDE2X3J0ZSh1bG9uZzE2KTsKaW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDE2X3NhdF9ydGUodWxvbmcxNik7CmludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQxNl9ydHoodWxvbmcxNik7CmludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQxNl9zYXRfcnR6KHVsb25nMTYpOwppbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50MTZfcnRwKHVsb25nMTYpOwppbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50MTZfc2F0X3J0cCh1bG9uZzE2KTsKaW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDE2X3J0bih1bG9uZzE2KTsKaW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDE2X3NhdF9ydG4odWxvbmcxNik7CmludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQxNih1bG9uZzE2KTsKaW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDE2X3NhdCh1bG9uZzE2KTsKaW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDE2X3J0ZShmbG9hdDE2KTsKaW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDE2X3NhdF9ydGUoZmxvYXQxNik7CmludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQxNl9ydHooZmxvYXQxNik7CmludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQxNl9zYXRfcnR6KGZsb2F0MTYpOwppbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50MTZfcnRwKGZsb2F0MTYpOwppbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50MTZfc2F0X3J0cChmbG9hdDE2KTsKaW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDE2X3J0bihmbG9hdDE2KTsKaW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDE2X3NhdF9ydG4oZmxvYXQxNik7CmludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQxNihmbG9hdDE2KTsKaW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDE2X3NhdChmbG9hdDE2KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50MTZfcnRlKGNoYXIxNik7CnVpbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDE2X3NhdF9ydGUoY2hhcjE2KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50MTZfcnR6KGNoYXIxNik7CnVpbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDE2X3NhdF9ydHooY2hhcjE2KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50MTZfcnRwKGNoYXIxNik7CnVpbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDE2X3NhdF9ydHAoY2hhcjE2KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50MTZfcnRuKGNoYXIxNik7CnVpbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDE2X3NhdF9ydG4oY2hhcjE2KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50MTYoY2hhcjE2KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50MTZfc2F0KGNoYXIxNik7CnVpbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDE2X3J0ZSh1Y2hhcjE2KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50MTZfc2F0X3J0ZSh1Y2hhcjE2KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50MTZfcnR6KHVjaGFyMTYpOwp1aW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQxNl9zYXRfcnR6KHVjaGFyMTYpOwp1aW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQxNl9ydHAodWNoYXIxNik7CnVpbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDE2X3NhdF9ydHAodWNoYXIxNik7CnVpbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDE2X3J0bih1Y2hhcjE2KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50MTZfc2F0X3J0bih1Y2hhcjE2KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50MTYodWNoYXIxNik7CnVpbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDE2X3NhdCh1Y2hhcjE2KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50MTZfcnRlKHNob3J0MTYpOwp1aW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQxNl9zYXRfcnRlKHNob3J0MTYpOwp1aW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQxNl9ydHooc2hvcnQxNik7CnVpbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDE2X3NhdF9ydHooc2hvcnQxNik7CnVpbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDE2X3J0cChzaG9ydDE2KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50MTZfc2F0X3J0cChzaG9ydDE2KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50MTZfcnRuKHNob3J0MTYpOwp1aW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQxNl9zYXRfcnRuKHNob3J0MTYpOwp1aW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQxNihzaG9ydDE2KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50MTZfc2F0KHNob3J0MTYpOwp1aW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQxNl9ydGUodXNob3J0MTYpOwp1aW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQxNl9zYXRfcnRlKHVzaG9ydDE2KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50MTZfcnR6KHVzaG9ydDE2KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50MTZfc2F0X3J0eih1c2hvcnQxNik7CnVpbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDE2X3J0cCh1c2hvcnQxNik7CnVpbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDE2X3NhdF9ydHAodXNob3J0MTYpOwp1aW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQxNl9ydG4odXNob3J0MTYpOwp1aW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQxNl9zYXRfcnRuKHVzaG9ydDE2KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50MTYodXNob3J0MTYpOwp1aW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQxNl9zYXQodXNob3J0MTYpOwp1aW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQxNl9ydGUoaW50MTYpOwp1aW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQxNl9zYXRfcnRlKGludDE2KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50MTZfcnR6KGludDE2KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50MTZfc2F0X3J0eihpbnQxNik7CnVpbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDE2X3J0cChpbnQxNik7CnVpbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDE2X3NhdF9ydHAoaW50MTYpOwp1aW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQxNl9ydG4oaW50MTYpOwp1aW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQxNl9zYXRfcnRuKGludDE2KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50MTYoaW50MTYpOwp1aW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQxNl9zYXQoaW50MTYpOwp1aW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQxNl9ydGUodWludDE2KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50MTZfc2F0X3J0ZSh1aW50MTYpOwp1aW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQxNl9ydHoodWludDE2KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50MTZfc2F0X3J0eih1aW50MTYpOwp1aW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQxNl9ydHAodWludDE2KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50MTZfc2F0X3J0cCh1aW50MTYpOwp1aW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQxNl9ydG4odWludDE2KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50MTZfc2F0X3J0bih1aW50MTYpOwp1aW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQxNih1aW50MTYpOwp1aW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQxNl9zYXQodWludDE2KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50MTZfcnRlKGxvbmcxNik7CnVpbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDE2X3NhdF9ydGUobG9uZzE2KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50MTZfcnR6KGxvbmcxNik7CnVpbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDE2X3NhdF9ydHoobG9uZzE2KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50MTZfcnRwKGxvbmcxNik7CnVpbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDE2X3NhdF9ydHAobG9uZzE2KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50MTZfcnRuKGxvbmcxNik7CnVpbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDE2X3NhdF9ydG4obG9uZzE2KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50MTYobG9uZzE2KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50MTZfc2F0KGxvbmcxNik7CnVpbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDE2X3J0ZSh1bG9uZzE2KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50MTZfc2F0X3J0ZSh1bG9uZzE2KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50MTZfcnR6KHVsb25nMTYpOwp1aW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQxNl9zYXRfcnR6KHVsb25nMTYpOwp1aW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQxNl9ydHAodWxvbmcxNik7CnVpbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDE2X3NhdF9ydHAodWxvbmcxNik7CnVpbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDE2X3J0bih1bG9uZzE2KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50MTZfc2F0X3J0bih1bG9uZzE2KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50MTYodWxvbmcxNik7CnVpbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDE2X3NhdCh1bG9uZzE2KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50MTZfcnRlKGZsb2F0MTYpOwp1aW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQxNl9zYXRfcnRlKGZsb2F0MTYpOwp1aW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQxNl9ydHooZmxvYXQxNik7CnVpbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDE2X3NhdF9ydHooZmxvYXQxNik7CnVpbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDE2X3J0cChmbG9hdDE2KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50MTZfc2F0X3J0cChmbG9hdDE2KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50MTZfcnRuKGZsb2F0MTYpOwp1aW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQxNl9zYXRfcnRuKGZsb2F0MTYpOwp1aW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQxNihmbG9hdDE2KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50MTZfc2F0KGZsb2F0MTYpOwpsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcxNl9ydGUoY2hhcjE2KTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMTZfc2F0X3J0ZShjaGFyMTYpOwpsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcxNl9ydHooY2hhcjE2KTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMTZfc2F0X3J0eihjaGFyMTYpOwpsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcxNl9ydHAoY2hhcjE2KTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMTZfc2F0X3J0cChjaGFyMTYpOwpsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcxNl9ydG4oY2hhcjE2KTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMTZfc2F0X3J0bihjaGFyMTYpOwpsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcxNihjaGFyMTYpOwpsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcxNl9zYXQoY2hhcjE2KTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMTZfcnRlKHVjaGFyMTYpOwpsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcxNl9zYXRfcnRlKHVjaGFyMTYpOwpsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcxNl9ydHoodWNoYXIxNik7CmxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzE2X3NhdF9ydHoodWNoYXIxNik7CmxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzE2X3J0cCh1Y2hhcjE2KTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMTZfc2F0X3J0cCh1Y2hhcjE2KTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMTZfcnRuKHVjaGFyMTYpOwpsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcxNl9zYXRfcnRuKHVjaGFyMTYpOwpsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcxNih1Y2hhcjE2KTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMTZfc2F0KHVjaGFyMTYpOwpsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcxNl9ydGUoc2hvcnQxNik7CmxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzE2X3NhdF9ydGUoc2hvcnQxNik7CmxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzE2X3J0eihzaG9ydDE2KTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMTZfc2F0X3J0eihzaG9ydDE2KTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMTZfcnRwKHNob3J0MTYpOwpsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcxNl9zYXRfcnRwKHNob3J0MTYpOwpsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcxNl9ydG4oc2hvcnQxNik7CmxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzE2X3NhdF9ydG4oc2hvcnQxNik7CmxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzE2KHNob3J0MTYpOwpsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcxNl9zYXQoc2hvcnQxNik7CmxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzE2X3J0ZSh1c2hvcnQxNik7CmxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzE2X3NhdF9ydGUodXNob3J0MTYpOwpsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcxNl9ydHoodXNob3J0MTYpOwpsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcxNl9zYXRfcnR6KHVzaG9ydDE2KTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMTZfcnRwKHVzaG9ydDE2KTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMTZfc2F0X3J0cCh1c2hvcnQxNik7CmxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzE2X3J0bih1c2hvcnQxNik7CmxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzE2X3NhdF9ydG4odXNob3J0MTYpOwpsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcxNih1c2hvcnQxNik7CmxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzE2X3NhdCh1c2hvcnQxNik7CmxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzE2X3J0ZShpbnQxNik7CmxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzE2X3NhdF9ydGUoaW50MTYpOwpsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcxNl9ydHooaW50MTYpOwpsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcxNl9zYXRfcnR6KGludDE2KTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMTZfcnRwKGludDE2KTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMTZfc2F0X3J0cChpbnQxNik7CmxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzE2X3J0bihpbnQxNik7CmxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzE2X3NhdF9ydG4oaW50MTYpOwpsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcxNihpbnQxNik7CmxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzE2X3NhdChpbnQxNik7CmxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzE2X3J0ZSh1aW50MTYpOwpsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcxNl9zYXRfcnRlKHVpbnQxNik7CmxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzE2X3J0eih1aW50MTYpOwpsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcxNl9zYXRfcnR6KHVpbnQxNik7CmxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzE2X3J0cCh1aW50MTYpOwpsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcxNl9zYXRfcnRwKHVpbnQxNik7CmxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzE2X3J0bih1aW50MTYpOwpsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcxNl9zYXRfcnRuKHVpbnQxNik7CmxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzE2KHVpbnQxNik7CmxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzE2X3NhdCh1aW50MTYpOwpsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcxNl9ydGUobG9uZzE2KTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMTZfc2F0X3J0ZShsb25nMTYpOwpsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcxNl9ydHoobG9uZzE2KTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMTZfc2F0X3J0eihsb25nMTYpOwpsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcxNl9ydHAobG9uZzE2KTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMTZfc2F0X3J0cChsb25nMTYpOwpsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcxNl9ydG4obG9uZzE2KTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMTZfc2F0X3J0bihsb25nMTYpOwpsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcxNihsb25nMTYpOwpsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcxNl9zYXQobG9uZzE2KTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMTZfcnRlKHVsb25nMTYpOwpsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcxNl9zYXRfcnRlKHVsb25nMTYpOwpsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcxNl9ydHoodWxvbmcxNik7CmxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzE2X3NhdF9ydHoodWxvbmcxNik7CmxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzE2X3J0cCh1bG9uZzE2KTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMTZfc2F0X3J0cCh1bG9uZzE2KTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMTZfcnRuKHVsb25nMTYpOwpsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcxNl9zYXRfcnRuKHVsb25nMTYpOwpsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcxNih1bG9uZzE2KTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMTZfc2F0KHVsb25nMTYpOwpsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcxNl9ydGUoZmxvYXQxNik7CmxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzE2X3NhdF9ydGUoZmxvYXQxNik7CmxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzE2X3J0eihmbG9hdDE2KTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMTZfc2F0X3J0eihmbG9hdDE2KTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMTZfcnRwKGZsb2F0MTYpOwpsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcxNl9zYXRfcnRwKGZsb2F0MTYpOwpsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcxNl9ydG4oZmxvYXQxNik7CmxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzE2X3NhdF9ydG4oZmxvYXQxNik7CmxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzE2KGZsb2F0MTYpOwpsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcxNl9zYXQoZmxvYXQxNik7CnVsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMTZfcnRlKGNoYXIxNik7CnVsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMTZfc2F0X3J0ZShjaGFyMTYpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzE2X3J0eihjaGFyMTYpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzE2X3NhdF9ydHooY2hhcjE2KTsKdWxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcxNl9ydHAoY2hhcjE2KTsKdWxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcxNl9zYXRfcnRwKGNoYXIxNik7CnVsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMTZfcnRuKGNoYXIxNik7CnVsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMTZfc2F0X3J0bihjaGFyMTYpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzE2KGNoYXIxNik7CnVsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMTZfc2F0KGNoYXIxNik7CnVsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMTZfcnRlKHVjaGFyMTYpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzE2X3NhdF9ydGUodWNoYXIxNik7CnVsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMTZfcnR6KHVjaGFyMTYpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzE2X3NhdF9ydHoodWNoYXIxNik7CnVsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMTZfcnRwKHVjaGFyMTYpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzE2X3NhdF9ydHAodWNoYXIxNik7CnVsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMTZfcnRuKHVjaGFyMTYpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzE2X3NhdF9ydG4odWNoYXIxNik7CnVsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMTYodWNoYXIxNik7CnVsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMTZfc2F0KHVjaGFyMTYpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzE2X3J0ZShzaG9ydDE2KTsKdWxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcxNl9zYXRfcnRlKHNob3J0MTYpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzE2X3J0eihzaG9ydDE2KTsKdWxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcxNl9zYXRfcnR6KHNob3J0MTYpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzE2X3J0cChzaG9ydDE2KTsKdWxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcxNl9zYXRfcnRwKHNob3J0MTYpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzE2X3J0bihzaG9ydDE2KTsKdWxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcxNl9zYXRfcnRuKHNob3J0MTYpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzE2KHNob3J0MTYpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzE2X3NhdChzaG9ydDE2KTsKdWxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcxNl9ydGUodXNob3J0MTYpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzE2X3NhdF9ydGUodXNob3J0MTYpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzE2X3J0eih1c2hvcnQxNik7CnVsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMTZfc2F0X3J0eih1c2hvcnQxNik7CnVsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMTZfcnRwKHVzaG9ydDE2KTsKdWxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcxNl9zYXRfcnRwKHVzaG9ydDE2KTsKdWxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcxNl9ydG4odXNob3J0MTYpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzE2X3NhdF9ydG4odXNob3J0MTYpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzE2KHVzaG9ydDE2KTsKdWxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcxNl9zYXQodXNob3J0MTYpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzE2X3J0ZShpbnQxNik7CnVsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMTZfc2F0X3J0ZShpbnQxNik7CnVsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMTZfcnR6KGludDE2KTsKdWxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcxNl9zYXRfcnR6KGludDE2KTsKdWxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcxNl9ydHAoaW50MTYpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzE2X3NhdF9ydHAoaW50MTYpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzE2X3J0bihpbnQxNik7CnVsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMTZfc2F0X3J0bihpbnQxNik7CnVsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMTYoaW50MTYpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzE2X3NhdChpbnQxNik7CnVsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMTZfcnRlKHVpbnQxNik7CnVsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMTZfc2F0X3J0ZSh1aW50MTYpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzE2X3J0eih1aW50MTYpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzE2X3NhdF9ydHoodWludDE2KTsKdWxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcxNl9ydHAodWludDE2KTsKdWxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcxNl9zYXRfcnRwKHVpbnQxNik7CnVsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMTZfcnRuKHVpbnQxNik7CnVsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMTZfc2F0X3J0bih1aW50MTYpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzE2KHVpbnQxNik7CnVsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMTZfc2F0KHVpbnQxNik7CnVsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMTZfcnRlKGxvbmcxNik7CnVsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMTZfc2F0X3J0ZShsb25nMTYpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzE2X3J0eihsb25nMTYpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzE2X3NhdF9ydHoobG9uZzE2KTsKdWxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcxNl9ydHAobG9uZzE2KTsKdWxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcxNl9zYXRfcnRwKGxvbmcxNik7CnVsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMTZfcnRuKGxvbmcxNik7CnVsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMTZfc2F0X3J0bihsb25nMTYpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzE2KGxvbmcxNik7CnVsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMTZfc2F0KGxvbmcxNik7CnVsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMTZfcnRlKHVsb25nMTYpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzE2X3NhdF9ydGUodWxvbmcxNik7CnVsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMTZfcnR6KHVsb25nMTYpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzE2X3NhdF9ydHoodWxvbmcxNik7CnVsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMTZfcnRwKHVsb25nMTYpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzE2X3NhdF9ydHAodWxvbmcxNik7CnVsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMTZfcnRuKHVsb25nMTYpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzE2X3NhdF9ydG4odWxvbmcxNik7CnVsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMTYodWxvbmcxNik7CnVsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMTZfc2F0KHVsb25nMTYpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzE2X3J0ZShmbG9hdDE2KTsKdWxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcxNl9zYXRfcnRlKGZsb2F0MTYpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzE2X3J0eihmbG9hdDE2KTsKdWxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcxNl9zYXRfcnR6KGZsb2F0MTYpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzE2X3J0cChmbG9hdDE2KTsKdWxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcxNl9zYXRfcnRwKGZsb2F0MTYpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzE2X3J0bihmbG9hdDE2KTsKdWxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcxNl9zYXRfcnRuKGZsb2F0MTYpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzE2KGZsb2F0MTYpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzE2X3NhdChmbG9hdDE2KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQxNl9ydGUoY2hhcjE2KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQxNl9ydHooY2hhcjE2KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQxNl9ydHAoY2hhcjE2KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQxNl9ydG4oY2hhcjE2KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQxNihjaGFyMTYpOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDE2X3J0ZSh1Y2hhcjE2KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQxNl9ydHoodWNoYXIxNik7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0MTZfcnRwKHVjaGFyMTYpOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDE2X3J0bih1Y2hhcjE2KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQxNih1Y2hhcjE2KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQxNl9ydGUoc2hvcnQxNik7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0MTZfcnR6KHNob3J0MTYpOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDE2X3J0cChzaG9ydDE2KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQxNl9ydG4oc2hvcnQxNik7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0MTYoc2hvcnQxNik7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0MTZfcnRlKHVzaG9ydDE2KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQxNl9ydHoodXNob3J0MTYpOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDE2X3J0cCh1c2hvcnQxNik7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0MTZfcnRuKHVzaG9ydDE2KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQxNih1c2hvcnQxNik7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0MTZfcnRlKGludDE2KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQxNl9ydHooaW50MTYpOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDE2X3J0cChpbnQxNik7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0MTZfcnRuKGludDE2KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQxNihpbnQxNik7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0MTZfcnRlKHVpbnQxNik7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0MTZfcnR6KHVpbnQxNik7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0MTZfcnRwKHVpbnQxNik7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0MTZfcnRuKHVpbnQxNik7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0MTYodWludDE2KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQxNl9ydGUobG9uZzE2KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQxNl9ydHoobG9uZzE2KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQxNl9ydHAobG9uZzE2KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQxNl9ydG4obG9uZzE2KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQxNihsb25nMTYpOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDE2X3J0ZSh1bG9uZzE2KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQxNl9ydHoodWxvbmcxNik7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0MTZfcnRwKHVsb25nMTYpOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDE2X3J0bih1bG9uZzE2KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQxNih1bG9uZzE2KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQxNl9ydGUoZmxvYXQxNik7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0MTZfcnR6KGZsb2F0MTYpOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDE2X3J0cChmbG9hdDE2KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQxNl9ydG4oZmxvYXQxNik7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0MTYoZmxvYXQxNik7CgovLyBDb252ZXJzaW9ucyB3aXRoIGRvdWJsZSBkYXRhIHR5cGUgcGFyYW1ldGVycyBvciByZXR1cm4gdmFsdWUuCgojaWZkZWYgY2xfa2hyX2ZwNjQKI3ByYWdtYSBPUEVOQ0wgRVhURU5TSU9OIGNsX2tocl9mcDY0IDogZW5hYmxlCmNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIoZG91YmxlKTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcl9ydGUoZG91YmxlKTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcl9ydG4oZG91YmxlKTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcl9ydHAoZG91YmxlKTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcl9ydHooZG91YmxlKTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcl9zYXQoZG91YmxlKTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcl9zYXRfcnRlKGRvdWJsZSk7CmNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXJfc2F0X3J0bihkb3VibGUpOwpjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyX3NhdF9ydHAoZG91YmxlKTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcl9zYXRfcnR6KGRvdWJsZSk7CmNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMihkb3VibGUyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyX3J0ZShkb3VibGUyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyX3J0bihkb3VibGUyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyX3J0cChkb3VibGUyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyX3J0eihkb3VibGUyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyX3NhdChkb3VibGUyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyX3NhdF9ydGUoZG91YmxlMik7CmNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMl9zYXRfcnRuKGRvdWJsZTIpOwpjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjJfc2F0X3J0cChkb3VibGUyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyX3NhdF9ydHooZG91YmxlMik7CmNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMyhkb3VibGUzKTsKY2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIzX3J0ZShkb3VibGUzKTsKY2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIzX3J0bihkb3VibGUzKTsKY2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIzX3J0cChkb3VibGUzKTsKY2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIzX3J0eihkb3VibGUzKTsKY2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIzX3NhdChkb3VibGUzKTsKY2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIzX3NhdF9ydGUoZG91YmxlMyk7CmNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyM19zYXRfcnRuKGRvdWJsZTMpOwpjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjNfc2F0X3J0cChkb3VibGUzKTsKY2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIzX3NhdF9ydHooZG91YmxlMyk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyNChkb3VibGU0KTsKY2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI0X3J0ZShkb3VibGU0KTsKY2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI0X3J0bihkb3VibGU0KTsKY2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI0X3J0cChkb3VibGU0KTsKY2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI0X3J0eihkb3VibGU0KTsKY2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI0X3NhdChkb3VibGU0KTsKY2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI0X3NhdF9ydGUoZG91YmxlNCk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyNF9zYXRfcnRuKGRvdWJsZTQpOwpjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjRfc2F0X3J0cChkb3VibGU0KTsKY2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI0X3NhdF9ydHooZG91YmxlNCk7CmNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyOChkb3VibGU4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4X3J0ZShkb3VibGU4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4X3J0bihkb3VibGU4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4X3J0cChkb3VibGU4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4X3J0eihkb3VibGU4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4X3NhdChkb3VibGU4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4X3NhdF9ydGUoZG91YmxlOCk7CmNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyOF9zYXRfcnRuKGRvdWJsZTgpOwpjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjhfc2F0X3J0cChkb3VibGU4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4X3NhdF9ydHooZG91YmxlOCk7CmNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjE2KGRvdWJsZTE2KTsKY2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMTZfcnRlKGRvdWJsZTE2KTsKY2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMTZfcnRuKGRvdWJsZTE2KTsKY2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMTZfcnRwKGRvdWJsZTE2KTsKY2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMTZfcnR6KGRvdWJsZTE2KTsKY2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMTZfc2F0KGRvdWJsZTE2KTsKY2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMTZfc2F0X3J0ZShkb3VibGUxNik7CmNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjE2X3NhdF9ydG4oZG91YmxlMTYpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIxNl9zYXRfcnRwKGRvdWJsZTE2KTsKY2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMTZfc2F0X3J0eihkb3VibGUxNik7Cgp1Y2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIoZG91YmxlKTsKdWNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyX3J0ZShkb3VibGUpOwp1Y2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXJfcnRuKGRvdWJsZSk7CnVjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcl9ydHAoZG91YmxlKTsKdWNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyX3J0eihkb3VibGUpOwp1Y2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXJfc2F0KGRvdWJsZSk7CnVjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcl9zYXRfcnRlKGRvdWJsZSk7CnVjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcl9zYXRfcnRuKGRvdWJsZSk7CnVjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcl9zYXRfcnRwKGRvdWJsZSk7CnVjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcl9zYXRfcnR6KGRvdWJsZSk7CnVjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIyKGRvdWJsZTIpOwp1Y2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMl9ydGUoZG91YmxlMik7CnVjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIyX3J0bihkb3VibGUyKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjJfcnRwKGRvdWJsZTIpOwp1Y2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMl9ydHooZG91YmxlMik7CnVjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIyX3NhdChkb3VibGUyKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjJfc2F0X3J0ZShkb3VibGUyKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjJfc2F0X3J0bihkb3VibGUyKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjJfc2F0X3J0cChkb3VibGUyKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjJfc2F0X3J0eihkb3VibGUyKTsKdWNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjMoZG91YmxlMyk7CnVjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIzX3J0ZShkb3VibGUzKTsKdWNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjNfcnRuKGRvdWJsZTMpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyM19ydHAoZG91YmxlMyk7CnVjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIzX3J0eihkb3VibGUzKTsKdWNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjNfc2F0KGRvdWJsZTMpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyM19zYXRfcnRlKGRvdWJsZTMpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyM19zYXRfcnRuKGRvdWJsZTMpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyM19zYXRfcnRwKGRvdWJsZTMpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyM19zYXRfcnR6KGRvdWJsZTMpOwp1Y2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyNChkb3VibGU0KTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjRfcnRlKGRvdWJsZTQpOwp1Y2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyNF9ydG4oZG91YmxlNCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0X3J0cChkb3VibGU0KTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjRfcnR6KGRvdWJsZTQpOwp1Y2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyNF9zYXQoZG91YmxlNCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0X3NhdF9ydGUoZG91YmxlNCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0X3NhdF9ydG4oZG91YmxlNCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0X3NhdF9ydHAoZG91YmxlNCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0X3NhdF9ydHooZG91YmxlNCk7CnVjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI4KGRvdWJsZTgpOwp1Y2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyOF9ydGUoZG91YmxlOCk7CnVjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI4X3J0bihkb3VibGU4KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjhfcnRwKGRvdWJsZTgpOwp1Y2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyOF9ydHooZG91YmxlOCk7CnVjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI4X3NhdChkb3VibGU4KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjhfc2F0X3J0ZShkb3VibGU4KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjhfc2F0X3J0bihkb3VibGU4KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjhfc2F0X3J0cChkb3VibGU4KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjhfc2F0X3J0eihkb3VibGU4KTsKdWNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIxNihkb3VibGUxNik7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMTZfcnRlKGRvdWJsZTE2KTsKdWNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIxNl9ydG4oZG91YmxlMTYpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjE2X3J0cChkb3VibGUxNik7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMTZfcnR6KGRvdWJsZTE2KTsKdWNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIxNl9zYXQoZG91YmxlMTYpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjE2X3NhdF9ydGUoZG91YmxlMTYpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjE2X3NhdF9ydG4oZG91YmxlMTYpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjE2X3NhdF9ydHAoZG91YmxlMTYpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjE2X3NhdF9ydHooZG91YmxlMTYpOwoKc2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0KGRvdWJsZSk7CnNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydF9ydGUoZG91YmxlKTsKc2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0X3J0bihkb3VibGUpOwpzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnRfcnRwKGRvdWJsZSk7CnNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydF9ydHooZG91YmxlKTsKc2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0X3NhdChkb3VibGUpOwpzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnRfc2F0X3J0ZShkb3VibGUpOwpzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnRfc2F0X3J0bihkb3VibGUpOwpzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnRfc2F0X3J0cChkb3VibGUpOwpzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnRfc2F0X3J0eihkb3VibGUpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0Mihkb3VibGUyKTsKc2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDJfcnRlKGRvdWJsZTIpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0Ml9ydG4oZG91YmxlMik7CnNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQyX3J0cChkb3VibGUyKTsKc2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDJfcnR6KGRvdWJsZTIpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0Ml9zYXQoZG91YmxlMik7CnNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQyX3NhdF9ydGUoZG91YmxlMik7CnNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQyX3NhdF9ydG4oZG91YmxlMik7CnNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQyX3NhdF9ydHAoZG91YmxlMik7CnNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQyX3NhdF9ydHooZG91YmxlMik7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzKGRvdWJsZTMpOwpzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0M19ydGUoZG91YmxlMyk7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzX3J0bihkb3VibGUzKTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDNfcnRwKGRvdWJsZTMpOwpzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0M19ydHooZG91YmxlMyk7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzX3NhdChkb3VibGUzKTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDNfc2F0X3J0ZShkb3VibGUzKTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDNfc2F0X3J0bihkb3VibGUzKTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDNfc2F0X3J0cChkb3VibGUzKTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDNfc2F0X3J0eihkb3VibGUzKTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDQoZG91YmxlNCk7CnNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ0X3J0ZShkb3VibGU0KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDRfcnRuKGRvdWJsZTQpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0NF9ydHAoZG91YmxlNCk7CnNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ0X3J0eihkb3VibGU0KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDRfc2F0KGRvdWJsZTQpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0NF9zYXRfcnRlKGRvdWJsZTQpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0NF9zYXRfcnRuKGRvdWJsZTQpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0NF9zYXRfcnRwKGRvdWJsZTQpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0NF9zYXRfcnR6KGRvdWJsZTQpOwpzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0OChkb3VibGU4KTsKc2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDhfcnRlKGRvdWJsZTgpOwpzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0OF9ydG4oZG91YmxlOCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ4X3J0cChkb3VibGU4KTsKc2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDhfcnR6KGRvdWJsZTgpOwpzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0OF9zYXQoZG91YmxlOCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ4X3NhdF9ydGUoZG91YmxlOCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ4X3NhdF9ydG4oZG91YmxlOCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ4X3NhdF9ydHAoZG91YmxlOCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ4X3NhdF9ydHooZG91YmxlOCk7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTYoZG91YmxlMTYpOwpzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDE2X3J0ZShkb3VibGUxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTZfcnRuKGRvdWJsZTE2KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQxNl9ydHAoZG91YmxlMTYpOwpzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDE2X3J0eihkb3VibGUxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTZfc2F0KGRvdWJsZTE2KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQxNl9zYXRfcnRlKGRvdWJsZTE2KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQxNl9zYXRfcnRuKGRvdWJsZTE2KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQxNl9zYXRfcnRwKGRvdWJsZTE2KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQxNl9zYXRfcnR6KGRvdWJsZTE2KTsKCnVzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0KGRvdWJsZSk7CnVzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0X3J0ZShkb3VibGUpOwp1c2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydF9ydG4oZG91YmxlKTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnRfcnRwKGRvdWJsZSk7CnVzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0X3J0eihkb3VibGUpOwp1c2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydF9zYXQoZG91YmxlKTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnRfc2F0X3J0ZShkb3VibGUpOwp1c2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydF9zYXRfcnRuKGRvdWJsZSk7CnVzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0X3NhdF9ydHAoZG91YmxlKTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnRfc2F0X3J0eihkb3VibGUpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQyKGRvdWJsZTIpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQyX3J0ZShkb3VibGUyKTsKdXNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0Ml9ydG4oZG91YmxlMik7CnVzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDJfcnRwKGRvdWJsZTIpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQyX3J0eihkb3VibGUyKTsKdXNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0Ml9zYXQoZG91YmxlMik7CnVzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDJfc2F0X3J0ZShkb3VibGUyKTsKdXNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0Ml9zYXRfcnRuKGRvdWJsZTIpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQyX3NhdF9ydHAoZG91YmxlMik7CnVzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDJfc2F0X3J0eihkb3VibGUyKTsKdXNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0Myhkb3VibGUzKTsKdXNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0M19ydGUoZG91YmxlMyk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDNfcnRuKGRvdWJsZTMpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQzX3J0cChkb3VibGUzKTsKdXNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0M19ydHooZG91YmxlMyk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDNfc2F0KGRvdWJsZTMpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQzX3NhdF9ydGUoZG91YmxlMyk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDNfc2F0X3J0bihkb3VibGUzKTsKdXNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0M19zYXRfcnRwKGRvdWJsZTMpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQzX3NhdF9ydHooZG91YmxlMyk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDQoZG91YmxlNCk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDRfcnRlKGRvdWJsZTQpOwp1c2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ0X3J0bihkb3VibGU0KTsKdXNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0NF9ydHAoZG91YmxlNCk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDRfcnR6KGRvdWJsZTQpOwp1c2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ0X3NhdChkb3VibGU0KTsKdXNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0NF9zYXRfcnRlKGRvdWJsZTQpOwp1c2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ0X3NhdF9ydG4oZG91YmxlNCk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDRfc2F0X3J0cChkb3VibGU0KTsKdXNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0NF9zYXRfcnR6KGRvdWJsZTQpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ4KGRvdWJsZTgpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ4X3J0ZShkb3VibGU4KTsKdXNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0OF9ydG4oZG91YmxlOCk7CnVzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDhfcnRwKGRvdWJsZTgpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ4X3J0eihkb3VibGU4KTsKdXNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0OF9zYXQoZG91YmxlOCk7CnVzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDhfc2F0X3J0ZShkb3VibGU4KTsKdXNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0OF9zYXRfcnRuKGRvdWJsZTgpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ4X3NhdF9ydHAoZG91YmxlOCk7CnVzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDhfc2F0X3J0eihkb3VibGU4KTsKdXNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDE2KGRvdWJsZTE2KTsKdXNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDE2X3J0ZShkb3VibGUxNik7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQxNl9ydG4oZG91YmxlMTYpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0MTZfcnRwKGRvdWJsZTE2KTsKdXNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDE2X3J0eihkb3VibGUxNik7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQxNl9zYXQoZG91YmxlMTYpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0MTZfc2F0X3J0ZShkb3VibGUxNik7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQxNl9zYXRfcnRuKGRvdWJsZTE2KTsKdXNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDE2X3NhdF9ydHAoZG91YmxlMTYpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0MTZfc2F0X3J0eihkb3VibGUxNik7CgppbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludChkb3VibGUpOwppbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludF9ydGUoZG91YmxlKTsKaW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnRfcnRuKGRvdWJsZSk7CmludCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50X3J0cChkb3VibGUpOwppbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludF9ydHooZG91YmxlKTsKaW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnRfc2F0KGRvdWJsZSk7CmludCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50X3NhdF9ydGUoZG91YmxlKTsKaW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnRfc2F0X3J0bihkb3VibGUpOwppbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludF9zYXRfcnRwKGRvdWJsZSk7CmludCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50X3NhdF9ydHooZG91YmxlKTsKaW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50Mihkb3VibGUyKTsKaW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50Ml9ydGUoZG91YmxlMik7CmludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDJfcnRuKGRvdWJsZTIpOwppbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQyX3J0cChkb3VibGUyKTsKaW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50Ml9ydHooZG91YmxlMik7CmludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDJfc2F0KGRvdWJsZTIpOwppbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQyX3NhdF9ydGUoZG91YmxlMik7CmludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDJfc2F0X3J0bihkb3VibGUyKTsKaW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50Ml9zYXRfcnRwKGRvdWJsZTIpOwppbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQyX3NhdF9ydHooZG91YmxlMik7CmludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDMoZG91YmxlMyk7CmludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDNfcnRlKGRvdWJsZTMpOwppbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQzX3J0bihkb3VibGUzKTsKaW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50M19ydHAoZG91YmxlMyk7CmludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDNfcnR6KGRvdWJsZTMpOwppbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQzX3NhdChkb3VibGUzKTsKaW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50M19zYXRfcnRlKGRvdWJsZTMpOwppbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQzX3NhdF9ydG4oZG91YmxlMyk7CmludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDNfc2F0X3J0cChkb3VibGUzKTsKaW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50M19zYXRfcnR6KGRvdWJsZTMpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ0KGRvdWJsZTQpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ0X3J0ZShkb3VibGU0KTsKaW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50NF9ydG4oZG91YmxlNCk7CmludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDRfcnRwKGRvdWJsZTQpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ0X3J0eihkb3VibGU0KTsKaW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50NF9zYXQoZG91YmxlNCk7CmludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDRfc2F0X3J0ZShkb3VibGU0KTsKaW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50NF9zYXRfcnRuKGRvdWJsZTQpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ0X3NhdF9ydHAoZG91YmxlNCk7CmludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDRfc2F0X3J0eihkb3VibGU0KTsKaW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50OChkb3VibGU4KTsKaW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50OF9ydGUoZG91YmxlOCk7CmludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDhfcnRuKGRvdWJsZTgpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ4X3J0cChkb3VibGU4KTsKaW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50OF9ydHooZG91YmxlOCk7CmludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDhfc2F0KGRvdWJsZTgpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ4X3NhdF9ydGUoZG91YmxlOCk7CmludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDhfc2F0X3J0bihkb3VibGU4KTsKaW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50OF9zYXRfcnRwKGRvdWJsZTgpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ4X3NhdF9ydHooZG91YmxlOCk7CmludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQxNihkb3VibGUxNik7CmludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQxNl9ydGUoZG91YmxlMTYpOwppbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50MTZfcnRuKGRvdWJsZTE2KTsKaW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDE2X3J0cChkb3VibGUxNik7CmludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQxNl9ydHooZG91YmxlMTYpOwppbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50MTZfc2F0KGRvdWJsZTE2KTsKaW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDE2X3NhdF9ydGUoZG91YmxlMTYpOwppbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50MTZfc2F0X3J0bihkb3VibGUxNik7CmludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQxNl9zYXRfcnRwKGRvdWJsZTE2KTsKaW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDE2X3NhdF9ydHooZG91YmxlMTYpOwoKdWludCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludChkb3VibGUpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50X3J0ZShkb3VibGUpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50X3J0bihkb3VibGUpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50X3J0cChkb3VibGUpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50X3J0eihkb3VibGUpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50X3NhdChkb3VibGUpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50X3NhdF9ydGUoZG91YmxlKTsKdWludCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludF9zYXRfcnRuKGRvdWJsZSk7CnVpbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnRfc2F0X3J0cChkb3VibGUpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50X3NhdF9ydHooZG91YmxlKTsKdWludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQyKGRvdWJsZTIpOwp1aW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDJfcnRlKGRvdWJsZTIpOwp1aW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDJfcnRuKGRvdWJsZTIpOwp1aW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDJfcnRwKGRvdWJsZTIpOwp1aW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDJfcnR6KGRvdWJsZTIpOwp1aW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDJfc2F0KGRvdWJsZTIpOwp1aW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDJfc2F0X3J0ZShkb3VibGUyKTsKdWludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQyX3NhdF9ydG4oZG91YmxlMik7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50Ml9zYXRfcnRwKGRvdWJsZTIpOwp1aW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDJfc2F0X3J0eihkb3VibGUyKTsKdWludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQzKGRvdWJsZTMpOwp1aW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDNfcnRlKGRvdWJsZTMpOwp1aW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDNfcnRuKGRvdWJsZTMpOwp1aW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDNfcnRwKGRvdWJsZTMpOwp1aW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDNfcnR6KGRvdWJsZTMpOwp1aW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDNfc2F0KGRvdWJsZTMpOwp1aW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDNfc2F0X3J0ZShkb3VibGUzKTsKdWludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQzX3NhdF9ydG4oZG91YmxlMyk7CnVpbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50M19zYXRfcnRwKGRvdWJsZTMpOwp1aW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDNfc2F0X3J0eihkb3VibGUzKTsKdWludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ0KGRvdWJsZTQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDRfcnRlKGRvdWJsZTQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDRfcnRuKGRvdWJsZTQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDRfcnRwKGRvdWJsZTQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDRfcnR6KGRvdWJsZTQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDRfc2F0KGRvdWJsZTQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDRfc2F0X3J0ZShkb3VibGU0KTsKdWludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ0X3NhdF9ydG4oZG91YmxlNCk7CnVpbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50NF9zYXRfcnRwKGRvdWJsZTQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDRfc2F0X3J0eihkb3VibGU0KTsKdWludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ4KGRvdWJsZTgpOwp1aW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDhfcnRlKGRvdWJsZTgpOwp1aW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDhfcnRuKGRvdWJsZTgpOwp1aW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDhfcnRwKGRvdWJsZTgpOwp1aW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDhfcnR6KGRvdWJsZTgpOwp1aW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDhfc2F0KGRvdWJsZTgpOwp1aW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDhfc2F0X3J0ZShkb3VibGU4KTsKdWludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ4X3NhdF9ydG4oZG91YmxlOCk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50OF9zYXRfcnRwKGRvdWJsZTgpOwp1aW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDhfc2F0X3J0eihkb3VibGU4KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50MTYoZG91YmxlMTYpOwp1aW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQxNl9ydGUoZG91YmxlMTYpOwp1aW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQxNl9ydG4oZG91YmxlMTYpOwp1aW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQxNl9ydHAoZG91YmxlMTYpOwp1aW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQxNl9ydHooZG91YmxlMTYpOwp1aW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQxNl9zYXQoZG91YmxlMTYpOwp1aW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQxNl9zYXRfcnRlKGRvdWJsZTE2KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50MTZfc2F0X3J0bihkb3VibGUxNik7CnVpbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDE2X3NhdF9ydHAoZG91YmxlMTYpOwp1aW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQxNl9zYXRfcnR6KGRvdWJsZTE2KTsKCmxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcoZG91YmxlKTsKbG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZ19ydGUoZG91YmxlKTsKbG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZ19ydG4oZG91YmxlKTsKbG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZ19ydHAoZG91YmxlKTsKbG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZ19ydHooZG91YmxlKTsKbG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZ19zYXQoZG91YmxlKTsKbG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZ19zYXRfcnRlKGRvdWJsZSk7CmxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmdfc2F0X3J0bihkb3VibGUpOwpsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nX3NhdF9ydHAoZG91YmxlKTsKbG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZ19zYXRfcnR6KGRvdWJsZSk7CmxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMihkb3VibGUyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyX3J0ZShkb3VibGUyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyX3J0bihkb3VibGUyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyX3J0cChkb3VibGUyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyX3J0eihkb3VibGUyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyX3NhdChkb3VibGUyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyX3NhdF9ydGUoZG91YmxlMik7CmxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMl9zYXRfcnRuKGRvdWJsZTIpOwpsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzJfc2F0X3J0cChkb3VibGUyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyX3NhdF9ydHooZG91YmxlMik7CmxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMyhkb3VibGUzKTsKbG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmczX3J0ZShkb3VibGUzKTsKbG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmczX3J0bihkb3VibGUzKTsKbG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmczX3J0cChkb3VibGUzKTsKbG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmczX3J0eihkb3VibGUzKTsKbG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmczX3NhdChkb3VibGUzKTsKbG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmczX3NhdF9ydGUoZG91YmxlMyk7CmxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nM19zYXRfcnRuKGRvdWJsZTMpOwpsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzNfc2F0X3J0cChkb3VibGUzKTsKbG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmczX3NhdF9ydHooZG91YmxlMyk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nNChkb3VibGU0KTsKbG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc0X3J0ZShkb3VibGU0KTsKbG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc0X3J0bihkb3VibGU0KTsKbG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc0X3J0cChkb3VibGU0KTsKbG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc0X3J0eihkb3VibGU0KTsKbG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc0X3NhdChkb3VibGU0KTsKbG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc0X3NhdF9ydGUoZG91YmxlNCk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nNF9zYXRfcnRuKGRvdWJsZTQpOwpsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzRfc2F0X3J0cChkb3VibGU0KTsKbG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc0X3NhdF9ydHooZG91YmxlNCk7Cmxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nOChkb3VibGU4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4X3J0ZShkb3VibGU4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4X3J0bihkb3VibGU4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4X3J0cChkb3VibGU4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4X3J0eihkb3VibGU4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4X3NhdChkb3VibGU4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4X3NhdF9ydGUoZG91YmxlOCk7Cmxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nOF9zYXRfcnRuKGRvdWJsZTgpOwpsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzhfc2F0X3J0cChkb3VibGU4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4X3NhdF9ydHooZG91YmxlOCk7CmxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzE2KGRvdWJsZTE2KTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMTZfcnRlKGRvdWJsZTE2KTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMTZfcnRuKGRvdWJsZTE2KTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMTZfcnRwKGRvdWJsZTE2KTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMTZfcnR6KGRvdWJsZTE2KTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMTZfc2F0KGRvdWJsZTE2KTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMTZfc2F0X3J0ZShkb3VibGUxNik7CmxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzE2X3NhdF9ydG4oZG91YmxlMTYpOwpsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcxNl9zYXRfcnRwKGRvdWJsZTE2KTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMTZfc2F0X3J0eihkb3VibGUxNik7Cgp1bG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcoZG91YmxlKTsKdWxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nX3J0ZShkb3VibGUpOwp1bG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmdfcnRuKGRvdWJsZSk7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZ19ydHAoZG91YmxlKTsKdWxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nX3J0eihkb3VibGUpOwp1bG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmdfc2F0KGRvdWJsZSk7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZ19zYXRfcnRlKGRvdWJsZSk7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZ19zYXRfcnRuKGRvdWJsZSk7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZ19zYXRfcnRwKGRvdWJsZSk7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZ19zYXRfcnR6KGRvdWJsZSk7CnVsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcyKGRvdWJsZTIpOwp1bG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMl9ydGUoZG91YmxlMik7CnVsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcyX3J0bihkb3VibGUyKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzJfcnRwKGRvdWJsZTIpOwp1bG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMl9ydHooZG91YmxlMik7CnVsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcyX3NhdChkb3VibGUyKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzJfc2F0X3J0ZShkb3VibGUyKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzJfc2F0X3J0bihkb3VibGUyKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzJfc2F0X3J0cChkb3VibGUyKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzJfc2F0X3J0eihkb3VibGUyKTsKdWxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzMoZG91YmxlMyk7CnVsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmczX3J0ZShkb3VibGUzKTsKdWxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzNfcnRuKGRvdWJsZTMpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nM19ydHAoZG91YmxlMyk7CnVsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmczX3J0eihkb3VibGUzKTsKdWxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzNfc2F0KGRvdWJsZTMpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nM19zYXRfcnRlKGRvdWJsZTMpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nM19zYXRfcnRuKGRvdWJsZTMpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nM19zYXRfcnRwKGRvdWJsZTMpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nM19zYXRfcnR6KGRvdWJsZTMpOwp1bG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nNChkb3VibGU0KTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzRfcnRlKGRvdWJsZTQpOwp1bG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nNF9ydG4oZG91YmxlNCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0X3J0cChkb3VibGU0KTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzRfcnR6KGRvdWJsZTQpOwp1bG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nNF9zYXQoZG91YmxlNCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0X3NhdF9ydGUoZG91YmxlNCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0X3NhdF9ydG4oZG91YmxlNCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0X3NhdF9ydHAoZG91YmxlNCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0X3NhdF9ydHooZG91YmxlNCk7CnVsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc4KGRvdWJsZTgpOwp1bG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nOF9ydGUoZG91YmxlOCk7CnVsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc4X3J0bihkb3VibGU4KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzhfcnRwKGRvdWJsZTgpOwp1bG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nOF9ydHooZG91YmxlOCk7CnVsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc4X3NhdChkb3VibGU4KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzhfc2F0X3J0ZShkb3VibGU4KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzhfc2F0X3J0bihkb3VibGU4KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzhfc2F0X3J0cChkb3VibGU4KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzhfc2F0X3J0eihkb3VibGU4KTsKdWxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcxNihkb3VibGUxNik7CnVsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMTZfcnRlKGRvdWJsZTE2KTsKdWxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcxNl9ydG4oZG91YmxlMTYpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzE2X3J0cChkb3VibGUxNik7CnVsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMTZfcnR6KGRvdWJsZTE2KTsKdWxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcxNl9zYXQoZG91YmxlMTYpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzE2X3NhdF9ydGUoZG91YmxlMTYpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzE2X3NhdF9ydG4oZG91YmxlMTYpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzE2X3NhdF9ydHAoZG91YmxlMTYpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzE2X3NhdF9ydHooZG91YmxlMTYpOwoKZmxvYXQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0KGRvdWJsZSk7CmZsb2F0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdF9ydGUoZG91YmxlKTsKZmxvYXQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0X3J0bihkb3VibGUpOwpmbG9hdCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXRfcnRwKGRvdWJsZSk7CmZsb2F0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdF9ydHooZG91YmxlKTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDIoZG91YmxlMik7CmZsb2F0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQyX3J0ZShkb3VibGUyKTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDJfcnRuKGRvdWJsZTIpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0Ml9ydHAoZG91YmxlMik7CmZsb2F0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQyX3J0eihkb3VibGUyKTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDMoZG91YmxlMyk7CmZsb2F0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQzX3J0ZShkb3VibGUzKTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDNfcnRuKGRvdWJsZTMpOwpmbG9hdDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0M19ydHAoZG91YmxlMyk7CmZsb2F0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQzX3J0eihkb3VibGUzKTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDQoZG91YmxlNCk7CmZsb2F0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQ0X3J0ZShkb3VibGU0KTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDRfcnRuKGRvdWJsZTQpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0NF9ydHAoZG91YmxlNCk7CmZsb2F0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQ0X3J0eihkb3VibGU0KTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDgoZG91YmxlOCk7CmZsb2F0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQ4X3J0ZShkb3VibGU4KTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDhfcnRuKGRvdWJsZTgpOwpmbG9hdDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0OF9ydHAoZG91YmxlOCk7CmZsb2F0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQ4X3J0eihkb3VibGU4KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQxNihkb3VibGUxNik7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0MTZfcnRlKGRvdWJsZTE2KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQxNl9ydG4oZG91YmxlMTYpOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDE2X3J0cChkb3VibGUxNik7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0MTZfcnR6KGRvdWJsZTE2KTsKCmRvdWJsZSBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlKGNoYXIpOwpkb3VibGUgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZShkb3VibGUpOwpkb3VibGUgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZShmbG9hdCk7CmRvdWJsZSBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlKGludCk7CmRvdWJsZSBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlKGxvbmcpOwpkb3VibGUgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZShzaG9ydCk7CmRvdWJsZSBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlKHVjaGFyKTsKZG91YmxlIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUodWludCk7CmRvdWJsZSBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlKHVsb25nKTsKZG91YmxlIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUodXNob3J0KTsKZG91YmxlIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGVfcnRlKGNoYXIpOwpkb3VibGUgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZV9ydGUoZG91YmxlKTsKZG91YmxlIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGVfcnRlKGZsb2F0KTsKZG91YmxlIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGVfcnRlKGludCk7CmRvdWJsZSBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlX3J0ZShsb25nKTsKZG91YmxlIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGVfcnRlKHNob3J0KTsKZG91YmxlIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGVfcnRlKHVjaGFyKTsKZG91YmxlIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGVfcnRlKHVpbnQpOwpkb3VibGUgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZV9ydGUodWxvbmcpOwpkb3VibGUgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZV9ydGUodXNob3J0KTsKZG91YmxlIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGVfcnRuKGNoYXIpOwpkb3VibGUgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZV9ydG4oZG91YmxlKTsKZG91YmxlIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGVfcnRuKGZsb2F0KTsKZG91YmxlIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGVfcnRuKGludCk7CmRvdWJsZSBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlX3J0bihsb25nKTsKZG91YmxlIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGVfcnRuKHNob3J0KTsKZG91YmxlIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGVfcnRuKHVjaGFyKTsKZG91YmxlIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGVfcnRuKHVpbnQpOwpkb3VibGUgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZV9ydG4odWxvbmcpOwpkb3VibGUgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZV9ydG4odXNob3J0KTsKZG91YmxlIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGVfcnRwKGNoYXIpOwpkb3VibGUgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZV9ydHAoZG91YmxlKTsKZG91YmxlIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGVfcnRwKGZsb2F0KTsKZG91YmxlIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGVfcnRwKGludCk7CmRvdWJsZSBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlX3J0cChsb25nKTsKZG91YmxlIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGVfcnRwKHNob3J0KTsKZG91YmxlIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGVfcnRwKHVjaGFyKTsKZG91YmxlIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGVfcnRwKHVpbnQpOwpkb3VibGUgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZV9ydHAodWxvbmcpOwpkb3VibGUgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZV9ydHAodXNob3J0KTsKZG91YmxlIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGVfcnR6KGNoYXIpOwpkb3VibGUgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZV9ydHooZG91YmxlKTsKZG91YmxlIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGVfcnR6KGZsb2F0KTsKZG91YmxlIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGVfcnR6KGludCk7CmRvdWJsZSBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlX3J0eihsb25nKTsKZG91YmxlIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGVfcnR6KHNob3J0KTsKZG91YmxlIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGVfcnR6KHVjaGFyKTsKZG91YmxlIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGVfcnR6KHVpbnQpOwpkb3VibGUgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZV9ydHoodWxvbmcpOwpkb3VibGUgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZV9ydHoodXNob3J0KTsKZG91YmxlMiBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlMihjaGFyMik7CmRvdWJsZTIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTIoZG91YmxlMik7CmRvdWJsZTIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTIoZmxvYXQyKTsKZG91YmxlMiBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlMihpbnQyKTsKZG91YmxlMiBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlMihsb25nMik7CmRvdWJsZTIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTIoc2hvcnQyKTsKZG91YmxlMiBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlMih1Y2hhcjIpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUyKHVpbnQyKTsKZG91YmxlMiBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlMih1bG9uZzIpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUyKHVzaG9ydDIpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUyX3J0ZShjaGFyMik7CmRvdWJsZTIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTJfcnRlKGRvdWJsZTIpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUyX3J0ZShmbG9hdDIpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUyX3J0ZShpbnQyKTsKZG91YmxlMiBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlMl9ydGUobG9uZzIpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUyX3J0ZShzaG9ydDIpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUyX3J0ZSh1Y2hhcjIpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUyX3J0ZSh1aW50Mik7CmRvdWJsZTIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTJfcnRlKHVsb25nMik7CmRvdWJsZTIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTJfcnRlKHVzaG9ydDIpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUyX3J0bihjaGFyMik7CmRvdWJsZTIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTJfcnRuKGRvdWJsZTIpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUyX3J0bihmbG9hdDIpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUyX3J0bihpbnQyKTsKZG91YmxlMiBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlMl9ydG4obG9uZzIpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUyX3J0bihzaG9ydDIpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUyX3J0bih1Y2hhcjIpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUyX3J0bih1aW50Mik7CmRvdWJsZTIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTJfcnRuKHVsb25nMik7CmRvdWJsZTIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTJfcnRuKHVzaG9ydDIpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUyX3J0cChjaGFyMik7CmRvdWJsZTIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTJfcnRwKGRvdWJsZTIpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUyX3J0cChmbG9hdDIpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUyX3J0cChpbnQyKTsKZG91YmxlMiBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlMl9ydHAobG9uZzIpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUyX3J0cChzaG9ydDIpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUyX3J0cCh1Y2hhcjIpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUyX3J0cCh1aW50Mik7CmRvdWJsZTIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTJfcnRwKHVsb25nMik7CmRvdWJsZTIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTJfcnRwKHVzaG9ydDIpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUyX3J0eihjaGFyMik7CmRvdWJsZTIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTJfcnR6KGRvdWJsZTIpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUyX3J0eihmbG9hdDIpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUyX3J0eihpbnQyKTsKZG91YmxlMiBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlMl9ydHoobG9uZzIpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUyX3J0eihzaG9ydDIpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUyX3J0eih1Y2hhcjIpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUyX3J0eih1aW50Mik7CmRvdWJsZTIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTJfcnR6KHVsb25nMik7CmRvdWJsZTIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTJfcnR6KHVzaG9ydDIpOwpkb3VibGUzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUzKGNoYXIzKTsKZG91YmxlMyBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlMyhkb3VibGUzKTsKZG91YmxlMyBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlMyhmbG9hdDMpOwpkb3VibGUzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUzKGludDMpOwpkb3VibGUzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUzKGxvbmczKTsKZG91YmxlMyBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlMyhzaG9ydDMpOwpkb3VibGUzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUzKHVjaGFyMyk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTModWludDMpOwpkb3VibGUzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUzKHVsb25nMyk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTModXNob3J0Myk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTNfcnRlKGNoYXIzKTsKZG91YmxlMyBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlM19ydGUoZG91YmxlMyk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTNfcnRlKGZsb2F0Myk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTNfcnRlKGludDMpOwpkb3VibGUzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUzX3J0ZShsb25nMyk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTNfcnRlKHNob3J0Myk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTNfcnRlKHVjaGFyMyk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTNfcnRlKHVpbnQzKTsKZG91YmxlMyBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlM19ydGUodWxvbmczKTsKZG91YmxlMyBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlM19ydGUodXNob3J0Myk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTNfcnRuKGNoYXIzKTsKZG91YmxlMyBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlM19ydG4oZG91YmxlMyk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTNfcnRuKGZsb2F0Myk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTNfcnRuKGludDMpOwpkb3VibGUzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUzX3J0bihsb25nMyk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTNfcnRuKHNob3J0Myk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTNfcnRuKHVjaGFyMyk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTNfcnRuKHVpbnQzKTsKZG91YmxlMyBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlM19ydG4odWxvbmczKTsKZG91YmxlMyBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlM19ydG4odXNob3J0Myk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTNfcnRwKGNoYXIzKTsKZG91YmxlMyBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlM19ydHAoZG91YmxlMyk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTNfcnRwKGZsb2F0Myk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTNfcnRwKGludDMpOwpkb3VibGUzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUzX3J0cChsb25nMyk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTNfcnRwKHNob3J0Myk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTNfcnRwKHVjaGFyMyk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTNfcnRwKHVpbnQzKTsKZG91YmxlMyBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlM19ydHAodWxvbmczKTsKZG91YmxlMyBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlM19ydHAodXNob3J0Myk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTNfcnR6KGNoYXIzKTsKZG91YmxlMyBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlM19ydHooZG91YmxlMyk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTNfcnR6KGZsb2F0Myk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTNfcnR6KGludDMpOwpkb3VibGUzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUzX3J0eihsb25nMyk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTNfcnR6KHNob3J0Myk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTNfcnR6KHVjaGFyMyk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTNfcnR6KHVpbnQzKTsKZG91YmxlMyBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlM19ydHoodWxvbmczKTsKZG91YmxlMyBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlM19ydHoodXNob3J0Myk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTQoY2hhcjQpOwpkb3VibGU0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGU0KGRvdWJsZTQpOwpkb3VibGU0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGU0KGZsb2F0NCk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTQoaW50NCk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTQobG9uZzQpOwpkb3VibGU0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGU0KHNob3J0NCk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTQodWNoYXI0KTsKZG91YmxlNCBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlNCh1aW50NCk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTQodWxvbmc0KTsKZG91YmxlNCBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlNCh1c2hvcnQ0KTsKZG91YmxlNCBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlNF9ydGUoY2hhcjQpOwpkb3VibGU0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGU0X3J0ZShkb3VibGU0KTsKZG91YmxlNCBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlNF9ydGUoZmxvYXQ0KTsKZG91YmxlNCBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlNF9ydGUoaW50NCk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTRfcnRlKGxvbmc0KTsKZG91YmxlNCBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlNF9ydGUoc2hvcnQ0KTsKZG91YmxlNCBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlNF9ydGUodWNoYXI0KTsKZG91YmxlNCBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlNF9ydGUodWludDQpOwpkb3VibGU0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGU0X3J0ZSh1bG9uZzQpOwpkb3VibGU0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGU0X3J0ZSh1c2hvcnQ0KTsKZG91YmxlNCBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlNF9ydG4oY2hhcjQpOwpkb3VibGU0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGU0X3J0bihkb3VibGU0KTsKZG91YmxlNCBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlNF9ydG4oZmxvYXQ0KTsKZG91YmxlNCBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlNF9ydG4oaW50NCk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTRfcnRuKGxvbmc0KTsKZG91YmxlNCBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlNF9ydG4oc2hvcnQ0KTsKZG91YmxlNCBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlNF9ydG4odWNoYXI0KTsKZG91YmxlNCBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlNF9ydG4odWludDQpOwpkb3VibGU0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGU0X3J0bih1bG9uZzQpOwpkb3VibGU0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGU0X3J0bih1c2hvcnQ0KTsKZG91YmxlNCBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlNF9ydHAoY2hhcjQpOwpkb3VibGU0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGU0X3J0cChkb3VibGU0KTsKZG91YmxlNCBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlNF9ydHAoZmxvYXQ0KTsKZG91YmxlNCBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlNF9ydHAoaW50NCk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTRfcnRwKGxvbmc0KTsKZG91YmxlNCBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlNF9ydHAoc2hvcnQ0KTsKZG91YmxlNCBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlNF9ydHAodWNoYXI0KTsKZG91YmxlNCBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlNF9ydHAodWludDQpOwpkb3VibGU0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGU0X3J0cCh1bG9uZzQpOwpkb3VibGU0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGU0X3J0cCh1c2hvcnQ0KTsKZG91YmxlNCBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlNF9ydHooY2hhcjQpOwpkb3VibGU0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGU0X3J0eihkb3VibGU0KTsKZG91YmxlNCBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlNF9ydHooZmxvYXQ0KTsKZG91YmxlNCBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlNF9ydHooaW50NCk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTRfcnR6KGxvbmc0KTsKZG91YmxlNCBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlNF9ydHooc2hvcnQ0KTsKZG91YmxlNCBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlNF9ydHoodWNoYXI0KTsKZG91YmxlNCBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlNF9ydHoodWludDQpOwpkb3VibGU0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGU0X3J0eih1bG9uZzQpOwpkb3VibGU0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGU0X3J0eih1c2hvcnQ0KTsKZG91YmxlOCBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlOChjaGFyOCk7CmRvdWJsZTggX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTgoZG91YmxlOCk7CmRvdWJsZTggX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTgoZmxvYXQ4KTsKZG91YmxlOCBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlOChpbnQ4KTsKZG91YmxlOCBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlOChsb25nOCk7CmRvdWJsZTggX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTgoc2hvcnQ4KTsKZG91YmxlOCBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlOCh1Y2hhcjgpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGU4KHVpbnQ4KTsKZG91YmxlOCBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlOCh1bG9uZzgpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGU4KHVzaG9ydDgpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGU4X3J0ZShjaGFyOCk7CmRvdWJsZTggX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZThfcnRlKGRvdWJsZTgpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGU4X3J0ZShmbG9hdDgpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGU4X3J0ZShpbnQ4KTsKZG91YmxlOCBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlOF9ydGUobG9uZzgpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGU4X3J0ZShzaG9ydDgpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGU4X3J0ZSh1Y2hhcjgpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGU4X3J0ZSh1aW50OCk7CmRvdWJsZTggX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZThfcnRlKHVsb25nOCk7CmRvdWJsZTggX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZThfcnRlKHVzaG9ydDgpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGU4X3J0bihjaGFyOCk7CmRvdWJsZTggX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZThfcnRuKGRvdWJsZTgpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGU4X3J0bihmbG9hdDgpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGU4X3J0bihpbnQ4KTsKZG91YmxlOCBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlOF9ydG4obG9uZzgpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGU4X3J0bihzaG9ydDgpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGU4X3J0bih1Y2hhcjgpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGU4X3J0bih1aW50OCk7CmRvdWJsZTggX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZThfcnRuKHVsb25nOCk7CmRvdWJsZTggX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZThfcnRuKHVzaG9ydDgpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGU4X3J0cChjaGFyOCk7CmRvdWJsZTggX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZThfcnRwKGRvdWJsZTgpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGU4X3J0cChmbG9hdDgpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGU4X3J0cChpbnQ4KTsKZG91YmxlOCBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlOF9ydHAobG9uZzgpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGU4X3J0cChzaG9ydDgpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGU4X3J0cCh1Y2hhcjgpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGU4X3J0cCh1aW50OCk7CmRvdWJsZTggX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZThfcnRwKHVsb25nOCk7CmRvdWJsZTggX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZThfcnRwKHVzaG9ydDgpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGU4X3J0eihjaGFyOCk7CmRvdWJsZTggX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZThfcnR6KGRvdWJsZTgpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGU4X3J0eihmbG9hdDgpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGU4X3J0eihpbnQ4KTsKZG91YmxlOCBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlOF9ydHoobG9uZzgpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGU4X3J0eihzaG9ydDgpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGU4X3J0eih1Y2hhcjgpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGU4X3J0eih1aW50OCk7CmRvdWJsZTggX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZThfcnR6KHVsb25nOCk7CmRvdWJsZTggX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZThfcnR6KHVzaG9ydDgpOwpkb3VibGUxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlMTYoY2hhcjE2KTsKZG91YmxlMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTE2KGRvdWJsZTE2KTsKZG91YmxlMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTE2KGZsb2F0MTYpOwpkb3VibGUxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlMTYoaW50MTYpOwpkb3VibGUxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlMTYobG9uZzE2KTsKZG91YmxlMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTE2KHNob3J0MTYpOwpkb3VibGUxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlMTYodWNoYXIxNik7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUxNih1aW50MTYpOwpkb3VibGUxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlMTYodWxvbmcxNik7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUxNih1c2hvcnQxNik7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUxNl9ydGUoY2hhcjE2KTsKZG91YmxlMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTE2X3J0ZShkb3VibGUxNik7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUxNl9ydGUoZmxvYXQxNik7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUxNl9ydGUoaW50MTYpOwpkb3VibGUxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlMTZfcnRlKGxvbmcxNik7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUxNl9ydGUoc2hvcnQxNik7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUxNl9ydGUodWNoYXIxNik7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUxNl9ydGUodWludDE2KTsKZG91YmxlMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTE2X3J0ZSh1bG9uZzE2KTsKZG91YmxlMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTE2X3J0ZSh1c2hvcnQxNik7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUxNl9ydG4oY2hhcjE2KTsKZG91YmxlMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTE2X3J0bihkb3VibGUxNik7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUxNl9ydG4oZmxvYXQxNik7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUxNl9ydG4oaW50MTYpOwpkb3VibGUxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlMTZfcnRuKGxvbmcxNik7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUxNl9ydG4oc2hvcnQxNik7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUxNl9ydG4odWNoYXIxNik7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUxNl9ydG4odWludDE2KTsKZG91YmxlMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTE2X3J0bih1bG9uZzE2KTsKZG91YmxlMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTE2X3J0bih1c2hvcnQxNik7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUxNl9ydHAoY2hhcjE2KTsKZG91YmxlMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTE2X3J0cChkb3VibGUxNik7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUxNl9ydHAoZmxvYXQxNik7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUxNl9ydHAoaW50MTYpOwpkb3VibGUxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlMTZfcnRwKGxvbmcxNik7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUxNl9ydHAoc2hvcnQxNik7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUxNl9ydHAodWNoYXIxNik7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUxNl9ydHAodWludDE2KTsKZG91YmxlMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTE2X3J0cCh1bG9uZzE2KTsKZG91YmxlMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTE2X3J0cCh1c2hvcnQxNik7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUxNl9ydHooY2hhcjE2KTsKZG91YmxlMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTE2X3J0eihkb3VibGUxNik7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUxNl9ydHooZmxvYXQxNik7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUxNl9ydHooaW50MTYpOwpkb3VibGUxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlMTZfcnR6KGxvbmcxNik7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUxNl9ydHooc2hvcnQxNik7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUxNl9ydHoodWNoYXIxNik7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUxNl9ydHoodWludDE2KTsKZG91YmxlMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTE2X3J0eih1bG9uZzE2KTsKZG91YmxlMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTE2X3J0eih1c2hvcnQxNik7CiNlbmRpZiAvL2NsX2tocl9mcDY0CgojaWZkZWYgY2xfa2hyX2ZwMTYKI3ByYWdtYSBPUEVOQ0wgRVhURU5TSU9OIGNsX2tocl9mcDE2IDogZW5hYmxlCi8vIENvbnZlcnQgaGFsZiB0eXBlcyB0byBub24tZG91YmxlIHR5cGVzLgp1Y2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIoaGFsZik7CnVjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcl9ydGUoaGFsZik7CnVjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcl9ydHAoaGFsZik7CnVjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcl9ydG4oaGFsZik7CnVjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcl9ydHooaGFsZik7CnVjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcl9zYXQoaGFsZik7CnVjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcl9zYXRfcnRlKGhhbGYpOwp1Y2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXJfc2F0X3J0cChoYWxmKTsKdWNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyX3NhdF9ydG4oaGFsZik7CnVjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcl9zYXRfcnR6KGhhbGYpOwp1Y2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMihoYWxmMik7CnVjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIyX3J0ZShoYWxmMik7CnVjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIyX3J0cChoYWxmMik7CnVjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIyX3J0bihoYWxmMik7CnVjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIyX3J0eihoYWxmMik7CnVjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIyX3NhdChoYWxmMik7CnVjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIyX3NhdF9ydGUoaGFsZjIpOwp1Y2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMl9zYXRfcnRwKGhhbGYyKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjJfc2F0X3J0bihoYWxmMik7CnVjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIyX3NhdF9ydHooaGFsZjIpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMyhoYWxmMyk7CnVjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIzX3J0ZShoYWxmMyk7CnVjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIzX3J0cChoYWxmMyk7CnVjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIzX3J0bihoYWxmMyk7CnVjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIzX3J0eihoYWxmMyk7CnVjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIzX3NhdChoYWxmMyk7CnVjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIzX3NhdF9ydGUoaGFsZjMpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyM19zYXRfcnRwKGhhbGYzKTsKdWNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjNfc2F0X3J0bihoYWxmMyk7CnVjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIzX3NhdF9ydHooaGFsZjMpOwp1Y2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyNChoYWxmNCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0X3J0ZShoYWxmNCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0X3J0cChoYWxmNCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0X3J0bihoYWxmNCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0X3J0eihoYWxmNCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0X3NhdChoYWxmNCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0X3NhdF9ydGUoaGFsZjQpOwp1Y2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyNF9zYXRfcnRwKGhhbGY0KTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjRfc2F0X3J0bihoYWxmNCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI0X3NhdF9ydHooaGFsZjQpOwp1Y2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyOChoYWxmOCk7CnVjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI4X3J0ZShoYWxmOCk7CnVjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI4X3J0cChoYWxmOCk7CnVjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI4X3J0bihoYWxmOCk7CnVjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI4X3J0eihoYWxmOCk7CnVjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI4X3NhdChoYWxmOCk7CnVjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI4X3NhdF9ydGUoaGFsZjgpOwp1Y2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyOF9zYXRfcnRwKGhhbGY4KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjhfc2F0X3J0bihoYWxmOCk7CnVjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXI4X3NhdF9ydHooaGFsZjgpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjE2KGhhbGYxNik7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMTZfcnRlKGhhbGYxNik7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMTZfcnRwKGhhbGYxNik7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMTZfcnRuKGhhbGYxNik7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMTZfcnR6KGhhbGYxNik7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMTZfc2F0KGhhbGYxNik7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMTZfc2F0X3J0ZShoYWxmMTYpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91Y2hhcjE2X3NhdF9ydHAoaGFsZjE2KTsKdWNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWNoYXIxNl9zYXRfcnRuKGhhbGYxNik7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VjaGFyMTZfc2F0X3J0eihoYWxmMTYpOwp1c2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydChoYWxmKTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnRfcnRlKGhhbGYpOwp1c2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydF9ydHAoaGFsZik7CnVzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0X3J0bihoYWxmKTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnRfcnR6KGhhbGYpOwp1c2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydF9zYXQoaGFsZik7CnVzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0X3NhdF9ydGUoaGFsZik7CnVzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0X3NhdF9ydHAoaGFsZik7CnVzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0X3NhdF9ydG4oaGFsZik7CnVzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0X3NhdF9ydHooaGFsZik7CnVzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDIoaGFsZjIpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQyX3J0ZShoYWxmMik7CnVzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDJfcnRwKGhhbGYyKTsKdXNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0Ml9ydG4oaGFsZjIpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQyX3J0eihoYWxmMik7CnVzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDJfc2F0KGhhbGYyKTsKdXNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0Ml9zYXRfcnRlKGhhbGYyKTsKdXNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0Ml9zYXRfcnRwKGhhbGYyKTsKdXNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0Ml9zYXRfcnRuKGhhbGYyKTsKdXNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0Ml9zYXRfcnR6KGhhbGYyKTsKdXNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0MyhoYWxmMyk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDNfcnRlKGhhbGYzKTsKdXNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0M19ydHAoaGFsZjMpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQzX3J0bihoYWxmMyk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDNfcnR6KGhhbGYzKTsKdXNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0M19zYXQoaGFsZjMpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQzX3NhdF9ydGUoaGFsZjMpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQzX3NhdF9ydHAoaGFsZjMpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQzX3NhdF9ydG4oaGFsZjMpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQzX3NhdF9ydHooaGFsZjMpOwp1c2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ0KGhhbGY0KTsKdXNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0NF9ydGUoaGFsZjQpOwp1c2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ0X3J0cChoYWxmNCk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDRfcnRuKGhhbGY0KTsKdXNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0NF9ydHooaGFsZjQpOwp1c2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ0X3NhdChoYWxmNCk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDRfc2F0X3J0ZShoYWxmNCk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDRfc2F0X3J0cChoYWxmNCk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDRfc2F0X3J0bihoYWxmNCk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDRfc2F0X3J0eihoYWxmNCk7CnVzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDgoaGFsZjgpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ4X3J0ZShoYWxmOCk7CnVzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDhfcnRwKGhhbGY4KTsKdXNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0OF9ydG4oaGFsZjgpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQ4X3J0eihoYWxmOCk7CnVzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDhfc2F0KGhhbGY4KTsKdXNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0OF9zYXRfcnRlKGhhbGY4KTsKdXNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0OF9zYXRfcnRwKGhhbGY4KTsKdXNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0OF9zYXRfcnRuKGhhbGY4KTsKdXNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0OF9zYXRfcnR6KGhhbGY4KTsKdXNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDE2KGhhbGYxNik7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQxNl9ydGUoaGFsZjE2KTsKdXNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDE2X3J0cChoYWxmMTYpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0MTZfcnRuKGhhbGYxNik7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91c2hvcnQxNl9ydHooaGFsZjE2KTsKdXNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VzaG9ydDE2X3NhdChoYWxmMTYpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0MTZfc2F0X3J0ZShoYWxmMTYpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0MTZfc2F0X3J0cChoYWxmMTYpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0MTZfc2F0X3J0bihoYWxmMTYpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdXNob3J0MTZfc2F0X3J0eihoYWxmMTYpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50KGhhbGYpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50X3J0ZShoYWxmKTsKdWludCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludF9ydHAoaGFsZik7CnVpbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnRfcnRuKGhhbGYpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50X3J0eihoYWxmKTsKdWludCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludF9zYXQoaGFsZik7CnVpbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnRfc2F0X3J0ZShoYWxmKTsKdWludCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludF9zYXRfcnRwKGhhbGYpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50X3NhdF9ydG4oaGFsZik7CnVpbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnRfc2F0X3J0eihoYWxmKTsKdWludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQyKGhhbGYyKTsKdWludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQyX3J0ZShoYWxmMik7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50Ml9ydHAoaGFsZjIpOwp1aW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDJfcnRuKGhhbGYyKTsKdWludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQyX3J0eihoYWxmMik7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50Ml9zYXQoaGFsZjIpOwp1aW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDJfc2F0X3J0ZShoYWxmMik7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50Ml9zYXRfcnRwKGhhbGYyKTsKdWludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQyX3NhdF9ydG4oaGFsZjIpOwp1aW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDJfc2F0X3J0eihoYWxmMik7CnVpbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50MyhoYWxmMyk7CnVpbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50M19ydGUoaGFsZjMpOwp1aW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDNfcnRwKGhhbGYzKTsKdWludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQzX3J0bihoYWxmMyk7CnVpbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50M19ydHooaGFsZjMpOwp1aW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDNfc2F0KGhhbGYzKTsKdWludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQzX3NhdF9ydGUoaGFsZjMpOwp1aW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDNfc2F0X3J0cChoYWxmMyk7CnVpbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50M19zYXRfcnRuKGhhbGYzKTsKdWludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQzX3NhdF9ydHooaGFsZjMpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDQoaGFsZjQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDRfcnRlKGhhbGY0KTsKdWludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ0X3J0cChoYWxmNCk7CnVpbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50NF9ydG4oaGFsZjQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDRfcnR6KGhhbGY0KTsKdWludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ0X3NhdChoYWxmNCk7CnVpbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50NF9zYXRfcnRlKGhhbGY0KTsKdWludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ0X3NhdF9ydHAoaGFsZjQpOwp1aW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDRfc2F0X3J0bihoYWxmNCk7CnVpbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50NF9zYXRfcnR6KGhhbGY0KTsKdWludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ4KGhhbGY4KTsKdWludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ4X3J0ZShoYWxmOCk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50OF9ydHAoaGFsZjgpOwp1aW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDhfcnRuKGhhbGY4KTsKdWludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ4X3J0eihoYWxmOCk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50OF9zYXQoaGFsZjgpOwp1aW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDhfc2F0X3J0ZShoYWxmOCk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50OF9zYXRfcnRwKGhhbGY4KTsKdWludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQ4X3NhdF9ydG4oaGFsZjgpOwp1aW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDhfc2F0X3J0eihoYWxmOCk7CnVpbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDE2KGhhbGYxNik7CnVpbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDE2X3J0ZShoYWxmMTYpOwp1aW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQxNl9ydHAoaGFsZjE2KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50MTZfcnRuKGhhbGYxNik7CnVpbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDE2X3J0eihoYWxmMTYpOwp1aW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQxNl9zYXQoaGFsZjE2KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50MTZfc2F0X3J0ZShoYWxmMTYpOwp1aW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3VpbnQxNl9zYXRfcnRwKGhhbGYxNik7CnVpbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWludDE2X3NhdF9ydG4oaGFsZjE2KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91aW50MTZfc2F0X3J0eihoYWxmMTYpOwp1bG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcoaGFsZik7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZ19ydGUoaGFsZik7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZ19ydHAoaGFsZik7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZ19ydG4oaGFsZik7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZ19ydHooaGFsZik7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZ19zYXQoaGFsZik7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZ19zYXRfcnRlKGhhbGYpOwp1bG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmdfc2F0X3J0cChoYWxmKTsKdWxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nX3NhdF9ydG4oaGFsZik7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZ19zYXRfcnR6KGhhbGYpOwp1bG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMihoYWxmMik7CnVsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcyX3J0ZShoYWxmMik7CnVsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcyX3J0cChoYWxmMik7CnVsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcyX3J0bihoYWxmMik7CnVsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcyX3J0eihoYWxmMik7CnVsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcyX3NhdChoYWxmMik7CnVsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcyX3NhdF9ydGUoaGFsZjIpOwp1bG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMl9zYXRfcnRwKGhhbGYyKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzJfc2F0X3J0bihoYWxmMik7CnVsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcyX3NhdF9ydHooaGFsZjIpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMyhoYWxmMyk7CnVsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmczX3J0ZShoYWxmMyk7CnVsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmczX3J0cChoYWxmMyk7CnVsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmczX3J0bihoYWxmMyk7CnVsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmczX3J0eihoYWxmMyk7CnVsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmczX3NhdChoYWxmMyk7CnVsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmczX3NhdF9ydGUoaGFsZjMpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nM19zYXRfcnRwKGhhbGYzKTsKdWxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzNfc2F0X3J0bihoYWxmMyk7CnVsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmczX3NhdF9ydHooaGFsZjMpOwp1bG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nNChoYWxmNCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0X3J0ZShoYWxmNCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0X3J0cChoYWxmNCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0X3J0bihoYWxmNCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0X3J0eihoYWxmNCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0X3NhdChoYWxmNCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0X3NhdF9ydGUoaGFsZjQpOwp1bG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nNF9zYXRfcnRwKGhhbGY0KTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzRfc2F0X3J0bihoYWxmNCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc0X3NhdF9ydHooaGFsZjQpOwp1bG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nOChoYWxmOCk7CnVsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc4X3J0ZShoYWxmOCk7CnVsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc4X3J0cChoYWxmOCk7CnVsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc4X3J0bihoYWxmOCk7CnVsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc4X3J0eihoYWxmOCk7CnVsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc4X3NhdChoYWxmOCk7CnVsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc4X3NhdF9ydGUoaGFsZjgpOwp1bG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nOF9zYXRfcnRwKGhhbGY4KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzhfc2F0X3J0bihoYWxmOCk7CnVsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmc4X3NhdF9ydHooaGFsZjgpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzE2KGhhbGYxNik7CnVsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMTZfcnRlKGhhbGYxNik7CnVsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMTZfcnRwKGhhbGYxNik7CnVsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMTZfcnRuKGhhbGYxNik7CnVsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMTZfcnR6KGhhbGYxNik7CnVsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMTZfc2F0KGhhbGYxNik7CnVsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMTZfc2F0X3J0ZShoYWxmMTYpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF91bG9uZzE2X3NhdF9ydHAoaGFsZjE2KTsKdWxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfdWxvbmcxNl9zYXRfcnRuKGhhbGYxNik7CnVsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Vsb25nMTZfc2F0X3J0eihoYWxmMTYpOwpjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyKGhhbGYpOwpjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyX3J0ZShoYWxmKTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcl9ydHAoaGFsZik7CmNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXJfcnRuKGhhbGYpOwpjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyX3J0eihoYWxmKTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcl9zYXQoaGFsZik7CmNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXJfc2F0X3J0ZShoYWxmKTsKY2hhciBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcl9zYXRfcnRwKGhhbGYpOwpjaGFyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyX3NhdF9ydG4oaGFsZik7CmNoYXIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXJfc2F0X3J0eihoYWxmKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyKGhhbGYyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyX3J0ZShoYWxmMik7CmNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMl9ydHAoaGFsZjIpOwpjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjJfcnRuKGhhbGYyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyX3J0eihoYWxmMik7CmNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMl9zYXQoaGFsZjIpOwpjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjJfc2F0X3J0ZShoYWxmMik7CmNoYXIyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMl9zYXRfcnRwKGhhbGYyKTsKY2hhcjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIyX3NhdF9ydG4oaGFsZjIpOwpjaGFyMiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjJfc2F0X3J0eihoYWxmMik7CmNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMyhoYWxmMyk7CmNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyM19ydGUoaGFsZjMpOwpjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjNfcnRwKGhhbGYzKTsKY2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIzX3J0bihoYWxmMyk7CmNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyM19ydHooaGFsZjMpOwpjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjNfc2F0KGhhbGYzKTsKY2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIzX3NhdF9ydGUoaGFsZjMpOwpjaGFyMyBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjNfc2F0X3J0cChoYWxmMyk7CmNoYXIzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyM19zYXRfcnRuKGhhbGYzKTsKY2hhcjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIzX3NhdF9ydHooaGFsZjMpOwpjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjQoaGFsZjQpOwpjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjRfcnRlKGhhbGY0KTsKY2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI0X3J0cChoYWxmNCk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyNF9ydG4oaGFsZjQpOwpjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjRfcnR6KGhhbGY0KTsKY2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI0X3NhdChoYWxmNCk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyNF9zYXRfcnRlKGhhbGY0KTsKY2hhcjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI0X3NhdF9ydHAoaGFsZjQpOwpjaGFyNCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjRfc2F0X3J0bihoYWxmNCk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyNF9zYXRfcnR6KGhhbGY0KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4KGhhbGY4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4X3J0ZShoYWxmOCk7CmNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyOF9ydHAoaGFsZjgpOwpjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjhfcnRuKGhhbGY4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4X3J0eihoYWxmOCk7CmNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyOF9zYXQoaGFsZjgpOwpjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjhfc2F0X3J0ZShoYWxmOCk7CmNoYXI4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyOF9zYXRfcnRwKGhhbGY4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXI4X3NhdF9ydG4oaGFsZjgpOwpjaGFyOCBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjhfc2F0X3J0eihoYWxmOCk7CmNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjE2KGhhbGYxNik7CmNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjE2X3J0ZShoYWxmMTYpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIxNl9ydHAoaGFsZjE2KTsKY2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMTZfcnRuKGhhbGYxNik7CmNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjE2X3J0eihoYWxmMTYpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIxNl9zYXQoaGFsZjE2KTsKY2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMTZfc2F0X3J0ZShoYWxmMTYpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2NoYXIxNl9zYXRfcnRwKGhhbGYxNik7CmNoYXIxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfY2hhcjE2X3NhdF9ydG4oaGFsZjE2KTsKY2hhcjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9jaGFyMTZfc2F0X3J0eihoYWxmMTYpOwpzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQoaGFsZik7CnNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydF9ydGUoaGFsZik7CnNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydF9ydHAoaGFsZik7CnNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydF9ydG4oaGFsZik7CnNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydF9ydHooaGFsZik7CnNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydF9zYXQoaGFsZik7CnNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydF9zYXRfcnRlKGhhbGYpOwpzaG9ydCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnRfc2F0X3J0cChoYWxmKTsKc2hvcnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0X3NhdF9ydG4oaGFsZik7CnNob3J0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydF9zYXRfcnR6KGhhbGYpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MihoYWxmMik7CnNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQyX3J0ZShoYWxmMik7CnNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQyX3J0cChoYWxmMik7CnNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQyX3J0bihoYWxmMik7CnNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQyX3J0eihoYWxmMik7CnNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQyX3NhdChoYWxmMik7CnNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQyX3NhdF9ydGUoaGFsZjIpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0Ml9zYXRfcnRwKGhhbGYyKTsKc2hvcnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDJfc2F0X3J0bihoYWxmMik7CnNob3J0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQyX3NhdF9ydHooaGFsZjIpOwpzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MyhoYWxmMyk7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzX3J0ZShoYWxmMyk7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzX3J0cChoYWxmMyk7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzX3J0bihoYWxmMyk7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzX3J0eihoYWxmMyk7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzX3NhdChoYWxmMyk7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzX3NhdF9ydGUoaGFsZjMpOwpzaG9ydDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0M19zYXRfcnRwKGhhbGYzKTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDNfc2F0X3J0bihoYWxmMyk7CnNob3J0MyBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQzX3NhdF9ydHooaGFsZjMpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0NChoYWxmNCk7CnNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ0X3J0ZShoYWxmNCk7CnNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ0X3J0cChoYWxmNCk7CnNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ0X3J0bihoYWxmNCk7CnNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ0X3J0eihoYWxmNCk7CnNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ0X3NhdChoYWxmNCk7CnNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ0X3NhdF9ydGUoaGFsZjQpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0NF9zYXRfcnRwKGhhbGY0KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDRfc2F0X3J0bihoYWxmNCk7CnNob3J0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ0X3NhdF9ydHooaGFsZjQpOwpzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0OChoYWxmOCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ4X3J0ZShoYWxmOCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ4X3J0cChoYWxmOCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ4X3J0bihoYWxmOCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ4X3J0eihoYWxmOCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ4X3NhdChoYWxmOCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ4X3NhdF9ydGUoaGFsZjgpOwpzaG9ydDggX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0OF9zYXRfcnRwKGhhbGY4KTsKc2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDhfc2F0X3J0bihoYWxmOCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQ4X3NhdF9ydHooaGFsZjgpOwpzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDE2KGhhbGYxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTZfcnRlKGhhbGYxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTZfcnRwKGhhbGYxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTZfcnRuKGhhbGYxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTZfcnR6KGhhbGYxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTZfc2F0KGhhbGYxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTZfc2F0X3J0ZShoYWxmMTYpOwpzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9zaG9ydDE2X3NhdF9ydHAoaGFsZjE2KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfc2hvcnQxNl9zYXRfcnRuKGhhbGYxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X3Nob3J0MTZfc2F0X3J0eihoYWxmMTYpOwppbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludChoYWxmKTsKaW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnRfcnRlKGhhbGYpOwppbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludF9ydHAoaGFsZik7CmludCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50X3J0bihoYWxmKTsKaW50IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnRfcnR6KGhhbGYpOwppbnQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludF9zYXQoaGFsZik7CmludCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50X3NhdF9ydGUoaGFsZik7CmludCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50X3NhdF9ydHAoaGFsZik7CmludCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50X3NhdF9ydG4oaGFsZik7CmludCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50X3NhdF9ydHooaGFsZik7CmludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDIoaGFsZjIpOwppbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQyX3J0ZShoYWxmMik7CmludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDJfcnRwKGhhbGYyKTsKaW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50Ml9ydG4oaGFsZjIpOwppbnQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQyX3J0eihoYWxmMik7CmludDIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDJfc2F0KGhhbGYyKTsKaW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50Ml9zYXRfcnRlKGhhbGYyKTsKaW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50Ml9zYXRfcnRwKGhhbGYyKTsKaW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50Ml9zYXRfcnRuKGhhbGYyKTsKaW50MiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50Ml9zYXRfcnR6KGhhbGYyKTsKaW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50MyhoYWxmMyk7CmludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDNfcnRlKGhhbGYzKTsKaW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50M19ydHAoaGFsZjMpOwppbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQzX3J0bihoYWxmMyk7CmludDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDNfcnR6KGhhbGYzKTsKaW50MyBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50M19zYXQoaGFsZjMpOwppbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQzX3NhdF9ydGUoaGFsZjMpOwppbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQzX3NhdF9ydHAoaGFsZjMpOwppbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQzX3NhdF9ydG4oaGFsZjMpOwppbnQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQzX3NhdF9ydHooaGFsZjMpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ0KGhhbGY0KTsKaW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50NF9ydGUoaGFsZjQpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ0X3J0cChoYWxmNCk7CmludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDRfcnRuKGhhbGY0KTsKaW50NCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50NF9ydHooaGFsZjQpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ0X3NhdChoYWxmNCk7CmludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDRfc2F0X3J0ZShoYWxmNCk7CmludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDRfc2F0X3J0cChoYWxmNCk7CmludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDRfc2F0X3J0bihoYWxmNCk7CmludDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDRfc2F0X3J0eihoYWxmNCk7CmludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDgoaGFsZjgpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ4X3J0ZShoYWxmOCk7CmludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDhfcnRwKGhhbGY4KTsKaW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50OF9ydG4oaGFsZjgpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQ4X3J0eihoYWxmOCk7CmludDggX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDhfc2F0KGhhbGY4KTsKaW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50OF9zYXRfcnRlKGhhbGY4KTsKaW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50OF9zYXRfcnRwKGhhbGY4KTsKaW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50OF9zYXRfcnRuKGhhbGY4KTsKaW50OCBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50OF9zYXRfcnR6KGhhbGY4KTsKaW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDE2KGhhbGYxNik7CmludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQxNl9ydGUoaGFsZjE2KTsKaW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDE2X3J0cChoYWxmMTYpOwppbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50MTZfcnRuKGhhbGYxNik7CmludDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9pbnQxNl9ydHooaGFsZjE2KTsKaW50MTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2ludDE2X3NhdChoYWxmMTYpOwppbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50MTZfc2F0X3J0ZShoYWxmMTYpOwppbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50MTZfc2F0X3J0cChoYWxmMTYpOwppbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50MTZfc2F0X3J0bihoYWxmMTYpOwppbnQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaW50MTZfc2F0X3J0eihoYWxmMTYpOwpsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nKGhhbGYpOwpsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nX3J0ZShoYWxmKTsKbG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZ19ydHAoaGFsZik7CmxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmdfcnRuKGhhbGYpOwpsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nX3J0eihoYWxmKTsKbG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZ19zYXQoaGFsZik7CmxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmdfc2F0X3J0ZShoYWxmKTsKbG9uZyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZ19zYXRfcnRwKGhhbGYpOwpsb25nIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nX3NhdF9ydG4oaGFsZik7CmxvbmcgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmdfc2F0X3J0eihoYWxmKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyKGhhbGYyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyX3J0ZShoYWxmMik7CmxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMl9ydHAoaGFsZjIpOwpsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzJfcnRuKGhhbGYyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyX3J0eihoYWxmMik7CmxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMl9zYXQoaGFsZjIpOwpsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzJfc2F0X3J0ZShoYWxmMik7CmxvbmcyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMl9zYXRfcnRwKGhhbGYyKTsKbG9uZzIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcyX3NhdF9ydG4oaGFsZjIpOwpsb25nMiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzJfc2F0X3J0eihoYWxmMik7CmxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMyhoYWxmMyk7CmxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nM19ydGUoaGFsZjMpOwpsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzNfcnRwKGhhbGYzKTsKbG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmczX3J0bihoYWxmMyk7CmxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nM19ydHooaGFsZjMpOwpsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzNfc2F0KGhhbGYzKTsKbG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmczX3NhdF9ydGUoaGFsZjMpOwpsb25nMyBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzNfc2F0X3J0cChoYWxmMyk7CmxvbmczIF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nM19zYXRfcnRuKGhhbGYzKTsKbG9uZzMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmczX3NhdF9ydHooaGFsZjMpOwpsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzQoaGFsZjQpOwpsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzRfcnRlKGhhbGY0KTsKbG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc0X3J0cChoYWxmNCk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nNF9ydG4oaGFsZjQpOwpsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzRfcnR6KGhhbGY0KTsKbG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc0X3NhdChoYWxmNCk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nNF9zYXRfcnRlKGhhbGY0KTsKbG9uZzQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc0X3NhdF9ydHAoaGFsZjQpOwpsb25nNCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzRfc2F0X3J0bihoYWxmNCk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nNF9zYXRfcnR6KGhhbGY0KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4KGhhbGY4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4X3J0ZShoYWxmOCk7Cmxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nOF9ydHAoaGFsZjgpOwpsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzhfcnRuKGhhbGY4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4X3J0eihoYWxmOCk7Cmxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nOF9zYXQoaGFsZjgpOwpsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzhfc2F0X3J0ZShoYWxmOCk7Cmxvbmc4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nOF9zYXRfcnRwKGhhbGY4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmc4X3NhdF9ydG4oaGFsZjgpOwpsb25nOCBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzhfc2F0X3J0eihoYWxmOCk7CmxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzE2KGhhbGYxNik7CmxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzE2X3J0ZShoYWxmMTYpOwpsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcxNl9ydHAoaGFsZjE2KTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMTZfcnRuKGhhbGYxNik7CmxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzE2X3J0eihoYWxmMTYpOwpsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcxNl9zYXQoaGFsZjE2KTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMTZfc2F0X3J0ZShoYWxmMTYpOwpsb25nMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2xvbmcxNl9zYXRfcnRwKGhhbGYxNik7CmxvbmcxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfbG9uZzE2X3NhdF9ydG4oaGFsZjE2KTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9sb25nMTZfc2F0X3J0eihoYWxmMTYpOwpmbG9hdCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQoaGFsZik7CmZsb2F0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdF9ydGUoaGFsZik7CmZsb2F0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdF9ydHAoaGFsZik7CmZsb2F0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdF9ydG4oaGFsZik7CmZsb2F0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdF9ydHooaGFsZik7CmZsb2F0MiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQyKGhhbGYyKTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDJfcnRlKGhhbGYyKTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDJfcnRwKGhhbGYyKTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDJfcnRuKGhhbGYyKTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDJfcnR6KGhhbGYyKTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDMoaGFsZjMpOwpmbG9hdDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0M19ydGUoaGFsZjMpOwpmbG9hdDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0M19ydHAoaGFsZjMpOwpmbG9hdDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0M19ydG4oaGFsZjMpOwpmbG9hdDMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0M19ydHooaGFsZjMpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2Zsb2F0NChoYWxmNCk7CmZsb2F0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQ0X3J0ZShoYWxmNCk7CmZsb2F0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQ0X3J0cChoYWxmNCk7CmZsb2F0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQ0X3J0bihoYWxmNCk7CmZsb2F0NCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQ0X3J0eihoYWxmNCk7CmZsb2F0OCBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQ4KGhhbGY4KTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDhfcnRlKGhhbGY4KTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDhfcnRwKGhhbGY4KTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDhfcnRuKGhhbGY4KTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDhfcnR6KGhhbGY4KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfZmxvYXQxNihoYWxmMTYpOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDE2X3J0ZShoYWxmMTYpOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDE2X3J0cChoYWxmMTYpOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDE2X3J0bihoYWxmMTYpOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9mbG9hdDE2X3J0eihoYWxmMTYpOwoKLy8gQ29udmVydCBub24tZG91YmxlIHR5cGVzIHRvIGhhbGYgdHlwZXMuCmhhbGYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYodWNoYXIpOwpoYWxmIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmKHVzaG9ydCk7CmhhbGYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYodWludCk7CmhhbGYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYodWxvbmcpOwpoYWxmIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmKGNoYXIpOwpoYWxmIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmKHNob3J0KTsKaGFsZiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZihpbnQpOwpoYWxmIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmKGxvbmcpOwpoYWxmIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmKGZsb2F0KTsKaGFsZiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZihoYWxmKTsKaGFsZiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZl9ydGUodWNoYXIpOwpoYWxmIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmX3J0ZSh1c2hvcnQpOwpoYWxmIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmX3J0ZSh1aW50KTsKaGFsZiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZl9ydGUodWxvbmcpOwpoYWxmIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmX3J0ZShjaGFyKTsKaGFsZiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZl9ydGUoc2hvcnQpOwpoYWxmIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmX3J0ZShpbnQpOwpoYWxmIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmX3J0ZShsb25nKTsKaGFsZiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZl9ydGUoZmxvYXQpOwpoYWxmIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmX3J0ZShoYWxmKTsKaGFsZiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZl9ydHAodWNoYXIpOwpoYWxmIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmX3J0cCh1c2hvcnQpOwpoYWxmIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmX3J0cCh1aW50KTsKaGFsZiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZl9ydHAodWxvbmcpOwpoYWxmIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmX3J0cChjaGFyKTsKaGFsZiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZl9ydHAoc2hvcnQpOwpoYWxmIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmX3J0cChpbnQpOwpoYWxmIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmX3J0cChsb25nKTsKaGFsZiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZl9ydHAoZmxvYXQpOwpoYWxmIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmX3J0cChoYWxmKTsKaGFsZiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZl9ydG4odWNoYXIpOwpoYWxmIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmX3J0bih1c2hvcnQpOwpoYWxmIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmX3J0bih1aW50KTsKaGFsZiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZl9ydG4odWxvbmcpOwpoYWxmIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmX3J0bihjaGFyKTsKaGFsZiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZl9ydG4oc2hvcnQpOwpoYWxmIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmX3J0bihpbnQpOwpoYWxmIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmX3J0bihsb25nKTsKaGFsZiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZl9ydG4oZmxvYXQpOwpoYWxmIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmX3J0bihoYWxmKTsKaGFsZiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZl9ydHoodWNoYXIpOwpoYWxmIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmX3J0eih1c2hvcnQpOwpoYWxmIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmX3J0eih1aW50KTsKaGFsZiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZl9ydHoodWxvbmcpOwpoYWxmIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmX3J0eihjaGFyKTsKaGFsZiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZl9ydHooc2hvcnQpOwpoYWxmIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmX3J0eihpbnQpOwpoYWxmIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmX3J0eihsb25nKTsKaGFsZiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZl9ydHooZmxvYXQpOwpoYWxmIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmX3J0eihoYWxmKTsKaGFsZjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYyKGNoYXIyKTsKaGFsZjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYyKHVjaGFyMik7CmhhbGYyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmMihzaG9ydDIpOwpoYWxmMiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjIodXNob3J0Mik7CmhhbGYyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmMihpbnQyKTsKaGFsZjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYyKHVpbnQyKTsKaGFsZjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYyKGxvbmcyKTsKaGFsZjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYyKHVsb25nMik7CmhhbGYyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmMihmbG9hdDIpOwpoYWxmMiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjIoaGFsZjIpOwpoYWxmMiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjJfcnRlKGNoYXIyKTsKaGFsZjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYyX3J0ZSh1Y2hhcjIpOwpoYWxmMiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjJfcnRlKHNob3J0Mik7CmhhbGYyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmMl9ydGUodXNob3J0Mik7CmhhbGYyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmMl9ydGUoaW50Mik7CmhhbGYyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmMl9ydGUodWludDIpOwpoYWxmMiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjJfcnRlKGxvbmcyKTsKaGFsZjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYyX3J0ZSh1bG9uZzIpOwpoYWxmMiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjJfcnRlKGZsb2F0Mik7CmhhbGYyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmMl9ydGUoaGFsZjIpOwpoYWxmMiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjJfcnRwKGNoYXIyKTsKaGFsZjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYyX3J0cCh1Y2hhcjIpOwpoYWxmMiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjJfcnRwKHNob3J0Mik7CmhhbGYyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmMl9ydHAodXNob3J0Mik7CmhhbGYyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmMl9ydHAoaW50Mik7CmhhbGYyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmMl9ydHAodWludDIpOwpoYWxmMiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjJfcnRwKGxvbmcyKTsKaGFsZjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYyX3J0cCh1bG9uZzIpOwpoYWxmMiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjJfcnRwKGZsb2F0Mik7CmhhbGYyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmMl9ydHAoaGFsZjIpOwpoYWxmMiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjJfcnRuKGNoYXIyKTsKaGFsZjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYyX3J0bih1Y2hhcjIpOwpoYWxmMiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjJfcnRuKHNob3J0Mik7CmhhbGYyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmMl9ydG4odXNob3J0Mik7CmhhbGYyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmMl9ydG4oaW50Mik7CmhhbGYyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmMl9ydG4odWludDIpOwpoYWxmMiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjJfcnRuKGxvbmcyKTsKaGFsZjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYyX3J0bih1bG9uZzIpOwpoYWxmMiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjJfcnRuKGZsb2F0Mik7CmhhbGYyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmMl9ydG4oaGFsZjIpOwpoYWxmMiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjJfcnR6KGNoYXIyKTsKaGFsZjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYyX3J0eih1Y2hhcjIpOwpoYWxmMiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjJfcnR6KHNob3J0Mik7CmhhbGYyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmMl9ydHoodXNob3J0Mik7CmhhbGYyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmMl9ydHooaW50Mik7CmhhbGYyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmMl9ydHoodWludDIpOwpoYWxmMiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjJfcnR6KGxvbmcyKTsKaGFsZjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYyX3J0eih1bG9uZzIpOwpoYWxmMiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjJfcnR6KGZsb2F0Mik7CmhhbGYyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmMl9ydHooaGFsZjIpOwpoYWxmMyBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjMoY2hhcjMpOwpoYWxmMyBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjModWNoYXIzKTsKaGFsZjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYzKHNob3J0Myk7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmMyh1c2hvcnQzKTsKaGFsZjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYzKGludDMpOwpoYWxmMyBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjModWludDMpOwpoYWxmMyBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjMobG9uZzMpOwpoYWxmMyBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjModWxvbmczKTsKaGFsZjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYzKGZsb2F0Myk7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmMyhoYWxmMyk7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmM19ydGUoY2hhcjMpOwpoYWxmMyBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjNfcnRlKHVjaGFyMyk7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmM19ydGUoc2hvcnQzKTsKaGFsZjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYzX3J0ZSh1c2hvcnQzKTsKaGFsZjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYzX3J0ZShpbnQzKTsKaGFsZjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYzX3J0ZSh1aW50Myk7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmM19ydGUobG9uZzMpOwpoYWxmMyBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjNfcnRlKHVsb25nMyk7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmM19ydGUoZmxvYXQzKTsKaGFsZjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYzX3J0ZShoYWxmMyk7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmM19ydHAoY2hhcjMpOwpoYWxmMyBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjNfcnRwKHVjaGFyMyk7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmM19ydHAoc2hvcnQzKTsKaGFsZjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYzX3J0cCh1c2hvcnQzKTsKaGFsZjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYzX3J0cChpbnQzKTsKaGFsZjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYzX3J0cCh1aW50Myk7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmM19ydHAobG9uZzMpOwpoYWxmMyBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjNfcnRwKHVsb25nMyk7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmM19ydHAoZmxvYXQzKTsKaGFsZjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYzX3J0cChoYWxmMyk7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmM19ydG4oY2hhcjMpOwpoYWxmMyBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjNfcnRuKHVjaGFyMyk7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmM19ydG4oc2hvcnQzKTsKaGFsZjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYzX3J0bih1c2hvcnQzKTsKaGFsZjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYzX3J0bihpbnQzKTsKaGFsZjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYzX3J0bih1aW50Myk7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmM19ydG4obG9uZzMpOwpoYWxmMyBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjNfcnRuKHVsb25nMyk7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmM19ydG4oZmxvYXQzKTsKaGFsZjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYzX3J0bihoYWxmMyk7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmM19ydHooY2hhcjMpOwpoYWxmMyBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjNfcnR6KHVjaGFyMyk7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmM19ydHooc2hvcnQzKTsKaGFsZjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYzX3J0eih1c2hvcnQzKTsKaGFsZjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYzX3J0eihpbnQzKTsKaGFsZjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYzX3J0eih1aW50Myk7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmM19ydHoobG9uZzMpOwpoYWxmMyBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjNfcnR6KHVsb25nMyk7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmM19ydHooZmxvYXQzKTsKaGFsZjMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYzX3J0eihoYWxmMyk7CmhhbGY0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmNChjaGFyNCk7CmhhbGY0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmNCh1Y2hhcjQpOwpoYWxmNCBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjQoc2hvcnQ0KTsKaGFsZjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGY0KHVzaG9ydDQpOwpoYWxmNCBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjQoaW50NCk7CmhhbGY0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmNCh1aW50NCk7CmhhbGY0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmNChsb25nNCk7CmhhbGY0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmNCh1bG9uZzQpOwpoYWxmNCBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjQoZmxvYXQ0KTsKaGFsZjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGY0KGhhbGY0KTsKaGFsZjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGY0X3J0ZShjaGFyNCk7CmhhbGY0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmNF9ydGUodWNoYXI0KTsKaGFsZjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGY0X3J0ZShzaG9ydDQpOwpoYWxmNCBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjRfcnRlKHVzaG9ydDQpOwpoYWxmNCBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjRfcnRlKGludDQpOwpoYWxmNCBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjRfcnRlKHVpbnQ0KTsKaGFsZjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGY0X3J0ZShsb25nNCk7CmhhbGY0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmNF9ydGUodWxvbmc0KTsKaGFsZjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGY0X3J0ZShmbG9hdDQpOwpoYWxmNCBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjRfcnRlKGhhbGY0KTsKaGFsZjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGY0X3J0cChjaGFyNCk7CmhhbGY0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmNF9ydHAodWNoYXI0KTsKaGFsZjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGY0X3J0cChzaG9ydDQpOwpoYWxmNCBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjRfcnRwKHVzaG9ydDQpOwpoYWxmNCBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjRfcnRwKGludDQpOwpoYWxmNCBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjRfcnRwKHVpbnQ0KTsKaGFsZjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGY0X3J0cChsb25nNCk7CmhhbGY0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmNF9ydHAodWxvbmc0KTsKaGFsZjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGY0X3J0cChmbG9hdDQpOwpoYWxmNCBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjRfcnRwKGhhbGY0KTsKaGFsZjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGY0X3J0bihjaGFyNCk7CmhhbGY0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmNF9ydG4odWNoYXI0KTsKaGFsZjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGY0X3J0bihzaG9ydDQpOwpoYWxmNCBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjRfcnRuKHVzaG9ydDQpOwpoYWxmNCBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjRfcnRuKGludDQpOwpoYWxmNCBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjRfcnRuKHVpbnQ0KTsKaGFsZjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGY0X3J0bihsb25nNCk7CmhhbGY0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmNF9ydG4odWxvbmc0KTsKaGFsZjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGY0X3J0bihmbG9hdDQpOwpoYWxmNCBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjRfcnRuKGhhbGY0KTsKaGFsZjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGY0X3J0eihjaGFyNCk7CmhhbGY0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmNF9ydHoodWNoYXI0KTsKaGFsZjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGY0X3J0eihzaG9ydDQpOwpoYWxmNCBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjRfcnR6KHVzaG9ydDQpOwpoYWxmNCBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjRfcnR6KGludDQpOwpoYWxmNCBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjRfcnR6KHVpbnQ0KTsKaGFsZjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGY0X3J0eihsb25nNCk7CmhhbGY0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmNF9ydHoodWxvbmc0KTsKaGFsZjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGY0X3J0eihmbG9hdDQpOwpoYWxmNCBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjRfcnR6KGhhbGY0KTsKaGFsZjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGY4KGNoYXI4KTsKaGFsZjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGY4KHVjaGFyOCk7CmhhbGY4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmOChzaG9ydDgpOwpoYWxmOCBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjgodXNob3J0OCk7CmhhbGY4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmOChpbnQ4KTsKaGFsZjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGY4KHVpbnQ4KTsKaGFsZjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGY4KGxvbmc4KTsKaGFsZjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGY4KHVsb25nOCk7CmhhbGY4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmOChmbG9hdDgpOwpoYWxmOCBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjgoaGFsZjgpOwpoYWxmOCBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjhfcnRlKGNoYXI4KTsKaGFsZjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGY4X3J0ZSh1Y2hhcjgpOwpoYWxmOCBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjhfcnRlKHNob3J0OCk7CmhhbGY4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmOF9ydGUodXNob3J0OCk7CmhhbGY4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmOF9ydGUoaW50OCk7CmhhbGY4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmOF9ydGUodWludDgpOwpoYWxmOCBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjhfcnRlKGxvbmc4KTsKaGFsZjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGY4X3J0ZSh1bG9uZzgpOwpoYWxmOCBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjhfcnRlKGZsb2F0OCk7CmhhbGY4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmOF9ydGUoaGFsZjgpOwpoYWxmOCBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjhfcnRwKGNoYXI4KTsKaGFsZjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGY4X3J0cCh1Y2hhcjgpOwpoYWxmOCBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjhfcnRwKHNob3J0OCk7CmhhbGY4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmOF9ydHAodXNob3J0OCk7CmhhbGY4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmOF9ydHAoaW50OCk7CmhhbGY4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmOF9ydHAodWludDgpOwpoYWxmOCBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjhfcnRwKGxvbmc4KTsKaGFsZjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGY4X3J0cCh1bG9uZzgpOwpoYWxmOCBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjhfcnRwKGZsb2F0OCk7CmhhbGY4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmOF9ydHAoaGFsZjgpOwpoYWxmOCBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjhfcnRuKGNoYXI4KTsKaGFsZjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGY4X3J0bih1Y2hhcjgpOwpoYWxmOCBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjhfcnRuKHNob3J0OCk7CmhhbGY4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmOF9ydG4odXNob3J0OCk7CmhhbGY4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmOF9ydG4oaW50OCk7CmhhbGY4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmOF9ydG4odWludDgpOwpoYWxmOCBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjhfcnRuKGxvbmc4KTsKaGFsZjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGY4X3J0bih1bG9uZzgpOwpoYWxmOCBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjhfcnRuKGZsb2F0OCk7CmhhbGY4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmOF9ydG4oaGFsZjgpOwpoYWxmOCBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjhfcnR6KGNoYXI4KTsKaGFsZjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGY4X3J0eih1Y2hhcjgpOwpoYWxmOCBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjhfcnR6KHNob3J0OCk7CmhhbGY4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmOF9ydHoodXNob3J0OCk7CmhhbGY4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmOF9ydHooaW50OCk7CmhhbGY4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmOF9ydHoodWludDgpOwpoYWxmOCBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjhfcnR6KGxvbmc4KTsKaGFsZjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGY4X3J0eih1bG9uZzgpOwpoYWxmOCBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjhfcnR6KGZsb2F0OCk7CmhhbGY4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmOF9ydHooaGFsZjgpOwpoYWxmMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYxNihjaGFyMTYpOwpoYWxmMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYxNih1Y2hhcjE2KTsKaGFsZjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmMTYoc2hvcnQxNik7CmhhbGYxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjE2KHVzaG9ydDE2KTsKaGFsZjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmMTYoaW50MTYpOwpoYWxmMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYxNih1aW50MTYpOwpoYWxmMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYxNihsb25nMTYpOwpoYWxmMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYxNih1bG9uZzE2KTsKaGFsZjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmMTYoZmxvYXQxNik7CmhhbGYxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjE2KGhhbGYxNik7CmhhbGYxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjE2X3J0ZShjaGFyMTYpOwpoYWxmMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYxNl9ydGUodWNoYXIxNik7CmhhbGYxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjE2X3J0ZShzaG9ydDE2KTsKaGFsZjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmMTZfcnRlKHVzaG9ydDE2KTsKaGFsZjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmMTZfcnRlKGludDE2KTsKaGFsZjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmMTZfcnRlKHVpbnQxNik7CmhhbGYxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjE2X3J0ZShsb25nMTYpOwpoYWxmMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYxNl9ydGUodWxvbmcxNik7CmhhbGYxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjE2X3J0ZShmbG9hdDE2KTsKaGFsZjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmMTZfcnRlKGhhbGYxNik7CmhhbGYxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjE2X3J0cChjaGFyMTYpOwpoYWxmMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYxNl9ydHAodWNoYXIxNik7CmhhbGYxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjE2X3J0cChzaG9ydDE2KTsKaGFsZjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmMTZfcnRwKHVzaG9ydDE2KTsKaGFsZjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmMTZfcnRwKGludDE2KTsKaGFsZjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmMTZfcnRwKHVpbnQxNik7CmhhbGYxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjE2X3J0cChsb25nMTYpOwpoYWxmMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYxNl9ydHAodWxvbmcxNik7CmhhbGYxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjE2X3J0cChmbG9hdDE2KTsKaGFsZjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmMTZfcnRwKGhhbGYxNik7CmhhbGYxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjE2X3J0bihjaGFyMTYpOwpoYWxmMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYxNl9ydG4odWNoYXIxNik7CmhhbGYxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjE2X3J0bihzaG9ydDE2KTsKaGFsZjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmMTZfcnRuKHVzaG9ydDE2KTsKaGFsZjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmMTZfcnRuKGludDE2KTsKaGFsZjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmMTZfcnRuKHVpbnQxNik7CmhhbGYxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjE2X3J0bihsb25nMTYpOwpoYWxmMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYxNl9ydG4odWxvbmcxNik7CmhhbGYxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjE2X3J0bihmbG9hdDE2KTsKaGFsZjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmMTZfcnRuKGhhbGYxNik7CmhhbGYxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjE2X3J0eihjaGFyMTYpOwpoYWxmMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYxNl9ydHoodWNoYXIxNik7CmhhbGYxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjE2X3J0eihzaG9ydDE2KTsKaGFsZjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmMTZfcnR6KHVzaG9ydDE2KTsKaGFsZjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmMTZfcnR6KGludDE2KTsKaGFsZjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmMTZfcnR6KHVpbnQxNik7CmhhbGYxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjE2X3J0eihsb25nMTYpOwpoYWxmMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYxNl9ydHoodWxvbmcxNik7CmhhbGYxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjE2X3J0eihmbG9hdDE2KTsKaGFsZjE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmMTZfcnR6KGhhbGYxNik7CgovLyBDb252ZXJ0IGhhbGYgdHlwZXMgdG8gZG91YmxlIHR5cGVzLgojaWZkZWYgY2xfa2hyX2ZwNjQKZG91YmxlIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUoaGFsZik7CmRvdWJsZSBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlX3J0ZShoYWxmKTsKZG91YmxlIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGVfcnRwKGhhbGYpOwpkb3VibGUgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZV9ydG4oaGFsZik7CmRvdWJsZSBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlX3J0eihoYWxmKTsKZG91YmxlMiBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlMihoYWxmMik7CmRvdWJsZTIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTJfcnRlKGhhbGYyKTsKZG91YmxlMiBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlMl9ydHAoaGFsZjIpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUyX3J0bihoYWxmMik7CmRvdWJsZTIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTJfcnR6KGhhbGYyKTsKZG91YmxlMyBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlMyhoYWxmMyk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTNfcnRlKGhhbGYzKTsKZG91YmxlMyBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlM19ydHAoaGFsZjMpOwpkb3VibGUzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUzX3J0bihoYWxmMyk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTNfcnR6KGhhbGYzKTsKZG91YmxlNCBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlNChoYWxmNCk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTRfcnRlKGhhbGY0KTsKZG91YmxlNCBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlNF9ydHAoaGFsZjQpOwpkb3VibGU0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGU0X3J0bihoYWxmNCk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTRfcnR6KGhhbGY0KTsKZG91YmxlOCBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlOChoYWxmOCk7CmRvdWJsZTggX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZThfcnRlKGhhbGY4KTsKZG91YmxlOCBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlOF9ydHAoaGFsZjgpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGU4X3J0bihoYWxmOCk7CmRvdWJsZTggX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZThfcnR6KGhhbGY4KTsKZG91YmxlMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTE2KGhhbGYxNik7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUxNl9ydGUoaGFsZjE2KTsKZG91YmxlMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2RvdWJsZTE2X3J0cChoYWxmMTYpOwpkb3VibGUxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfZG91YmxlMTZfcnRuKGhhbGYxNik7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gY29udmVydF9kb3VibGUxNl9ydHooaGFsZjE2KTsKCi8vIENvbnZlcnQgZG91YmxlIHR5cGVzIHRvIGhhbGYgdHlwZXMuCmhhbGYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYoZG91YmxlKTsKaGFsZiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZl9ydGUoZG91YmxlKTsKaGFsZiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZl9ydHAoZG91YmxlKTsKaGFsZiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZl9ydG4oZG91YmxlKTsKaGFsZiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZl9ydHooZG91YmxlKTsKaGFsZjIgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYyKGRvdWJsZTIpOwpoYWxmMiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjJfcnRlKGRvdWJsZTIpOwpoYWxmMiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjJfcnRwKGRvdWJsZTIpOwpoYWxmMiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjJfcnRuKGRvdWJsZTIpOwpoYWxmMiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjJfcnR6KGRvdWJsZTIpOwpoYWxmMyBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjMoZG91YmxlMyk7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmM19ydGUoZG91YmxlMyk7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmM19ydHAoZG91YmxlMyk7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmM19ydG4oZG91YmxlMyk7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmM19ydHooZG91YmxlMyk7CmhhbGY0IF9fb3ZsZCBfX2NuZm4gY29udmVydF9oYWxmNChkb3VibGU0KTsKaGFsZjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGY0X3J0ZShkb3VibGU0KTsKaGFsZjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGY0X3J0cChkb3VibGU0KTsKaGFsZjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGY0X3J0bihkb3VibGU0KTsKaGFsZjQgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGY0X3J0eihkb3VibGU0KTsKaGFsZjggX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGY4KGRvdWJsZTgpOwpoYWxmOCBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjhfcnRlKGRvdWJsZTgpOwpoYWxmOCBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjhfcnRwKGRvdWJsZTgpOwpoYWxmOCBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjhfcnRuKGRvdWJsZTgpOwpoYWxmOCBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjhfcnR6KGRvdWJsZTgpOwpoYWxmMTYgX19vdmxkIF9fY25mbiBjb252ZXJ0X2hhbGYxNihkb3VibGUxNik7CmhhbGYxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjE2X3J0ZShkb3VibGUxNik7CmhhbGYxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjE2X3J0cChkb3VibGUxNik7CmhhbGYxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjE2X3J0bihkb3VibGUxNik7CmhhbGYxNiBfX292bGQgX19jbmZuIGNvbnZlcnRfaGFsZjE2X3J0eihkb3VibGUxNik7CiNlbmRpZiAvL2NsX2tocl9mcDY0CgojZW5kaWYgLy8gY2xfa2hyX2ZwMTYKCi8vIE9wZW5DTCB2MS4xIHM2LjExLjEsIHYxLjIgczYuMTIuMSwgdjIuMCBzNi4xMy4xIC0gV29yay1pdGVtIEZ1bmN0aW9ucwoKLyoqCiAqIFJldHVybnMgdGhlIG51bWJlciBvZiBkaW1lbnNpb25zIGluIHVzZS4gVGhpcyBpcyB0aGUKICogdmFsdWUgZ2l2ZW4gdG8gdGhlIHdvcmtfZGltIGFyZ3VtZW50IHNwZWNpZmllZCBpbgogKiBjbEVucXVldWVORFJhbmdlS2VybmVsLgogKiBGb3IgY2xFbnF1ZXVlVGFzaywgdGhpcyByZXR1cm5zIDEuCiAqLwp1aW50IF9fb3ZsZCBfX2NuZm4gZ2V0X3dvcmtfZGltKHZvaWQpOwoKLyoqCiAqIFJldHVybnMgdGhlIG51bWJlciBvZiBnbG9iYWwgd29yay1pdGVtcyBzcGVjaWZpZWQgZm9yCiAqIGRpbWVuc2lvbiBpZGVudGlmaWVkIGJ5IGRpbWluZHguIFRoaXMgdmFsdWUgaXMgZ2l2ZW4gYnkKICogdGhlIGdsb2JhbF93b3JrX3NpemUgYXJndW1lbnQgdG8KICogY2xFbnF1ZXVlTkRSYW5nZUtlcm5lbC4gVmFsaWQgdmFsdWVzIG9mIGRpbWluZHgKICogYXJlIDAgdG8gZ2V0X3dvcmtfZGltKCkgLSAxLiBGb3Igb3RoZXIgdmFsdWVzIG9mCiAqIGRpbWluZHgsIGdldF9nbG9iYWxfc2l6ZSgpIHJldHVybnMgMS4KICogRm9yIGNsRW5xdWV1ZVRhc2ssIHRoaXMgYWx3YXlzIHJldHVybnMgMS4KICovCnNpemVfdCBfX292bGQgX19jbmZuIGdldF9nbG9iYWxfc2l6ZSh1aW50IGRpbWluZHgpOwoKLyoqCiAqIFJldHVybnMgdGhlIHVuaXF1ZSBnbG9iYWwgd29yay1pdGVtIElEIHZhbHVlIGZvcgogKiBkaW1lbnNpb24gaWRlbnRpZmllZCBieSBkaW1pbmR4LiBUaGUgZ2xvYmFsIHdvcmstaXRlbQogKiBJRCBzcGVjaWZpZXMgdGhlIHdvcmstaXRlbSBJRCBiYXNlZCBvbiB0aGUgbnVtYmVyIG9mCiAqIGdsb2JhbCB3b3JrLWl0ZW1zIHNwZWNpZmllZCB0byBleGVjdXRlIHRoZSBrZXJuZWwuIFZhbGlkCiAqIHZhbHVlcyBvZiBkaW1pbmR4IGFyZSAwIHRvIGdldF93b3JrX2RpbSgpIC0gMS4gRm9yCiAqIG90aGVyIHZhbHVlcyBvZiBkaW1pbmR4LCBnZXRfZ2xvYmFsX2lkKCkgcmV0dXJucyAwLgogKiBGb3IgY2xFbnF1ZXVlVGFzaywgdGhpcyByZXR1cm5zIDAuCiAqLwpzaXplX3QgX19vdmxkIF9fY25mbiBnZXRfZ2xvYmFsX2lkKHVpbnQgZGltaW5keCk7CgovKioKICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGxvY2FsIHdvcmstaXRlbXMgc3BlY2lmaWVkIGluCiAqIGRpbWVuc2lvbiBpZGVudGlmaWVkIGJ5IGRpbWluZHguIFRoaXMgdmFsdWUgaXMgZ2l2ZW4gYnkKICogdGhlIGxvY2FsX3dvcmtfc2l6ZSBhcmd1bWVudCB0bwogKiBjbEVucXVldWVORFJhbmdlS2VybmVsIGlmIGxvY2FsX3dvcmtfc2l6ZSBpcyBub3QKICogTlVMTDsgb3RoZXJ3aXNlIHRoZSBPcGVuQ0wgaW1wbGVtZW50YXRpb24gY2hvb3NlcwogKiBhbiBhcHByb3ByaWF0ZSBsb2NhbF93b3JrX3NpemUgdmFsdWUgd2hpY2ggaXMgcmV0dXJuZWQKICogYnkgdGhpcyBmdW5jdGlvbi4gVmFsaWQgdmFsdWVzIG9mIGRpbWluZHggYXJlIDAgdG8KICogZ2V0X3dvcmtfZGltKCkgLSAxLiBGb3Igb3RoZXIgdmFsdWVzIG9mIGRpbWluZHgsCiAqIGdldF9sb2NhbF9zaXplKCkgcmV0dXJucyAxLgogKiBGb3IgY2xFbnF1ZXVlVGFzaywgdGhpcyBhbHdheXMgcmV0dXJucyAxLgogKi8Kc2l6ZV90IF9fb3ZsZCBfX2NuZm4gZ2V0X2xvY2FsX3NpemUodWludCBkaW1pbmR4KTsKCi8qKgogKiBSZXR1cm5zIHRoZSB1bmlxdWUgbG9jYWwgd29yay1pdGVtIElEIGkuZS4gYSB3b3JrLWl0ZW0KICogd2l0aGluIGEgc3BlY2lmaWMgd29yay1ncm91cCBmb3IgZGltZW5zaW9uIGlkZW50aWZpZWQgYnkKICogZGltaW5keC4gVmFsaWQgdmFsdWVzIG9mIGRpbWluZHggYXJlIDAgdG8KICogZ2V0X3dvcmtfZGltKCkgLSAxLiBGb3Igb3RoZXIgdmFsdWVzIG9mIGRpbWluZHgsCiAqIGdldF9sb2NhbF9pZCgpIHJldHVybnMgMC4KICogRm9yIGNsRW5xdWV1ZVRhc2ssIHRoaXMgcmV0dXJucyAwLgogKi8Kc2l6ZV90IF9fb3ZsZCBfX2NuZm4gZ2V0X2xvY2FsX2lkKHVpbnQgZGltaW5keCk7CgovKioKICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIHdvcmstZ3JvdXBzIHRoYXQgd2lsbCBleGVjdXRlIGEKICoga2VybmVsIGZvciBkaW1lbnNpb24gaWRlbnRpZmllZCBieSBkaW1pbmR4LgogKiBWYWxpZCB2YWx1ZXMgb2YgZGltaW5keCBhcmUgMCB0byBnZXRfd29ya19kaW0oKSAtIDEuCiAqIEZvciBvdGhlciB2YWx1ZXMgb2YgZGltaW5keCwgZ2V0X251bV9ncm91cHMoKSByZXR1cm5zIDEuCiAqIEZvciBjbEVucXVldWVUYXNrLCB0aGlzIGFsd2F5cyByZXR1cm5zIDEuCiAqLwpzaXplX3QgX19vdmxkIF9fY25mbiBnZXRfbnVtX2dyb3Vwcyh1aW50IGRpbWluZHgpOwoKLyoqCiAqIGdldF9ncm91cF9pZCByZXR1cm5zIHRoZSB3b3JrLWdyb3VwIElEIHdoaWNoIGlzIGEKICogbnVtYmVyIGZyb20gMCAuLiBnZXRfbnVtX2dyb3VwcyhkaW1pbmR4KSAtIDEuCiAqIFZhbGlkIHZhbHVlcyBvZiBkaW1pbmR4IGFyZSAwIHRvIGdldF93b3JrX2RpbSgpIC0gMS4KICogRm9yIG90aGVyIHZhbHVlcywgZ2V0X2dyb3VwX2lkKCkgcmV0dXJucyAwLgogKiBGb3IgY2xFbnF1ZXVlVGFzaywgdGhpcyByZXR1cm5zIDAuCiAqLwpzaXplX3QgX19vdmxkIF9fY25mbiBnZXRfZ3JvdXBfaWQodWludCBkaW1pbmR4KTsKCi8qKgogKiBnZXRfZ2xvYmFsX29mZnNldCByZXR1cm5zIHRoZSBvZmZzZXQgdmFsdWVzIHNwZWNpZmllZCBpbgogKiBnbG9iYWxfd29ya19vZmZzZXQgYXJndW1lbnQgdG8KICogY2xFbnF1ZXVlTkRSYW5nZUtlcm5lbC4KICogVmFsaWQgdmFsdWVzIG9mIGRpbWluZHggYXJlIDAgdG8gZ2V0X3dvcmtfZGltKCkgLSAxLgogKiBGb3Igb3RoZXIgdmFsdWVzLCBnZXRfZ2xvYmFsX29mZnNldCgpIHJldHVybnMgMC4KICogRm9yIGNsRW5xdWV1ZVRhc2ssIHRoaXMgcmV0dXJucyAwLgogKi8Kc2l6ZV90IF9fb3ZsZCBfX2NuZm4gZ2V0X2dsb2JhbF9vZmZzZXQodWludCBkaW1pbmR4KTsKCiNpZiBkZWZpbmVkKF9fT1BFTkNMX0NQUF9WRVJTSU9OX18pIHx8IChfX09QRU5DTF9DX1ZFUlNJT05fXyA+PSBDTF9WRVJTSU9OXzJfMCkKc2l6ZV90IF9fb3ZsZCBnZXRfZW5xdWV1ZWRfbG9jYWxfc2l6ZSh1aW50IGRpbWluZHgpOwpzaXplX3QgX19vdmxkIGdldF9nbG9iYWxfbGluZWFyX2lkKHZvaWQpOwpzaXplX3QgX19vdmxkIGdldF9sb2NhbF9saW5lYXJfaWQodm9pZCk7CiNlbmRpZiAvL2RlZmluZWQoX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXykgfHwgKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fMl8wKQoKLy8gT3BlbkNMIHYxLjEgczYuMTEuMiwgdjEuMiBzNi4xMi4yLCB2Mi4wIHM2LjEzLjIgLSBNYXRoIGZ1bmN0aW9ucwoKLyoqCiAqIEFyYyBjb3NpbmUgZnVuY3Rpb24uCiAqLwpmbG9hdCBfX292bGQgX19jbmZuIGFjb3MoZmxvYXQpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBhY29zKGZsb2F0Mik7CmZsb2F0MyBfX292bGQgX19jbmZuIGFjb3MoZmxvYXQzKTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gYWNvcyhmbG9hdDQpOwpmbG9hdDggX19vdmxkIF9fY25mbiBhY29zKGZsb2F0OCk7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBhY29zKGZsb2F0MTYpOwojaWZkZWYgY2xfa2hyX2ZwNjQKZG91YmxlIF9fb3ZsZCBfX2NuZm4gYWNvcyhkb3VibGUpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gYWNvcyhkb3VibGUyKTsKZG91YmxlMyBfX292bGQgX19jbmZuIGFjb3MoZG91YmxlMyk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiBhY29zKGRvdWJsZTQpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gYWNvcyhkb3VibGU4KTsKZG91YmxlMTYgX19vdmxkIF9fY25mbiBhY29zKGRvdWJsZTE2KTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKI2lmZGVmIGNsX2tocl9mcDE2CmhhbGYgX19vdmxkIF9fY25mbiBhY29zKGhhbGYpOwpoYWxmMiBfX292bGQgX19jbmZuIGFjb3MoaGFsZjIpOwpoYWxmMyBfX292bGQgX19jbmZuIGFjb3MoaGFsZjMpOwpoYWxmNCBfX292bGQgX19jbmZuIGFjb3MoaGFsZjQpOwpoYWxmOCBfX292bGQgX19jbmZuIGFjb3MoaGFsZjgpOwpoYWxmMTYgX19vdmxkIF9fY25mbiBhY29zKGhhbGYxNik7CiNlbmRpZiAvL2NsX2tocl9mcDE2CgovKioKICogSW52ZXJzZSBoeXBlcmJvbGljIGNvc2luZS4KICovCmZsb2F0IF9fb3ZsZCBfX2NuZm4gYWNvc2goZmxvYXQpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBhY29zaChmbG9hdDIpOwpmbG9hdDMgX19vdmxkIF9fY25mbiBhY29zaChmbG9hdDMpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBhY29zaChmbG9hdDQpOwpmbG9hdDggX19vdmxkIF9fY25mbiBhY29zaChmbG9hdDgpOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gYWNvc2goZmxvYXQxNik7CiNpZmRlZiBjbF9raHJfZnA2NApkb3VibGUgX19vdmxkIF9fY25mbiBhY29zaChkb3VibGUpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gYWNvc2goZG91YmxlMik7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBhY29zaChkb3VibGUzKTsKZG91YmxlNCBfX292bGQgX19jbmZuIGFjb3NoKGRvdWJsZTQpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gYWNvc2goZG91YmxlOCk7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gYWNvc2goZG91YmxlMTYpOwojZW5kaWYgLy9jbF9raHJfZnA2NAojaWZkZWYgY2xfa2hyX2ZwMTYKaGFsZiBfX292bGQgX19jbmZuIGFjb3NoKGhhbGYpOwpoYWxmMiBfX292bGQgX19jbmZuIGFjb3NoKGhhbGYyKTsKaGFsZjMgX19vdmxkIF9fY25mbiBhY29zaChoYWxmMyk7CmhhbGY0IF9fb3ZsZCBfX2NuZm4gYWNvc2goaGFsZjQpOwpoYWxmOCBfX292bGQgX19jbmZuIGFjb3NoKGhhbGY4KTsKaGFsZjE2IF9fb3ZsZCBfX2NuZm4gYWNvc2goaGFsZjE2KTsKI2VuZGlmIC8vY2xfa2hyX2ZwMTYKCi8qKgogKiBDb21wdXRlIGFjb3MgKHgpIC8gUEkuCiAqLwpmbG9hdCBfX292bGQgX19jbmZuIGFjb3NwaShmbG9hdCB4KTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gYWNvc3BpKGZsb2F0MiB4KTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gYWNvc3BpKGZsb2F0MyB4KTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gYWNvc3BpKGZsb2F0NCB4KTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gYWNvc3BpKGZsb2F0OCB4KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGFjb3NwaShmbG9hdDE2IHgpOwojaWZkZWYgY2xfa2hyX2ZwNjQKZG91YmxlIF9fb3ZsZCBfX2NuZm4gYWNvc3BpKGRvdWJsZSB4KTsKZG91YmxlMiBfX292bGQgX19jbmZuIGFjb3NwaShkb3VibGUyIHgpOwpkb3VibGUzIF9fb3ZsZCBfX2NuZm4gYWNvc3BpKGRvdWJsZTMgeCk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiBhY29zcGkoZG91YmxlNCB4KTsKZG91YmxlOCBfX292bGQgX19jbmZuIGFjb3NwaShkb3VibGU4IHgpOwpkb3VibGUxNiBfX292bGQgX19jbmZuIGFjb3NwaShkb3VibGUxNiB4KTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKI2lmZGVmIGNsX2tocl9mcDE2CmhhbGYgX19vdmxkIF9fY25mbiBhY29zcGkoaGFsZiB4KTsKaGFsZjIgX19vdmxkIF9fY25mbiBhY29zcGkoaGFsZjIgeCk7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gYWNvc3BpKGhhbGYzIHgpOwpoYWxmNCBfX292bGQgX19jbmZuIGFjb3NwaShoYWxmNCB4KTsKaGFsZjggX19vdmxkIF9fY25mbiBhY29zcGkoaGFsZjggeCk7CmhhbGYxNiBfX292bGQgX19jbmZuIGFjb3NwaShoYWxmMTYgeCk7CiNlbmRpZiAvL2NsX2tocl9mcDE2CgovKioKICogQXJjIHNpbmUgZnVuY3Rpb24uCiAqLwpmbG9hdCBfX292bGQgX19jbmZuIGFzaW4oZmxvYXQpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBhc2luKGZsb2F0Mik7CmZsb2F0MyBfX292bGQgX19jbmZuIGFzaW4oZmxvYXQzKTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gYXNpbihmbG9hdDQpOwpmbG9hdDggX19vdmxkIF9fY25mbiBhc2luKGZsb2F0OCk7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBhc2luKGZsb2F0MTYpOwojaWZkZWYgY2xfa2hyX2ZwNjQKZG91YmxlIF9fb3ZsZCBfX2NuZm4gYXNpbihkb3VibGUpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gYXNpbihkb3VibGUyKTsKZG91YmxlMyBfX292bGQgX19jbmZuIGFzaW4oZG91YmxlMyk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiBhc2luKGRvdWJsZTQpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gYXNpbihkb3VibGU4KTsKZG91YmxlMTYgX19vdmxkIF9fY25mbiBhc2luKGRvdWJsZTE2KTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKI2lmZGVmIGNsX2tocl9mcDE2CmhhbGYgX19vdmxkIF9fY25mbiBhc2luKGhhbGYpOwpoYWxmMiBfX292bGQgX19jbmZuIGFzaW4oaGFsZjIpOwpoYWxmMyBfX292bGQgX19jbmZuIGFzaW4oaGFsZjMpOwpoYWxmNCBfX292bGQgX19jbmZuIGFzaW4oaGFsZjQpOwpoYWxmOCBfX292bGQgX19jbmZuIGFzaW4oaGFsZjgpOwpoYWxmMTYgX19vdmxkIF9fY25mbiBhc2luKGhhbGYxNik7CiNlbmRpZiAvL2NsX2tocl9mcDE2CgovKioKICogSW52ZXJzZSBoeXBlcmJvbGljIHNpbmUuCiAqLwpmbG9hdCBfX292bGQgX19jbmZuIGFzaW5oKGZsb2F0KTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gYXNpbmgoZmxvYXQyKTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gYXNpbmgoZmxvYXQzKTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gYXNpbmgoZmxvYXQ0KTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gYXNpbmgoZmxvYXQ4KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGFzaW5oKGZsb2F0MTYpOwojaWZkZWYgY2xfa2hyX2ZwNjQKZG91YmxlIF9fb3ZsZCBfX2NuZm4gYXNpbmgoZG91YmxlKTsKZG91YmxlMiBfX292bGQgX19jbmZuIGFzaW5oKGRvdWJsZTIpOwpkb3VibGUzIF9fb3ZsZCBfX2NuZm4gYXNpbmgoZG91YmxlMyk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiBhc2luaChkb3VibGU0KTsKZG91YmxlOCBfX292bGQgX19jbmZuIGFzaW5oKGRvdWJsZTgpOwpkb3VibGUxNiBfX292bGQgX19jbmZuIGFzaW5oKGRvdWJsZTE2KTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKI2lmZGVmIGNsX2tocl9mcDE2CmhhbGYgX19vdmxkIF9fY25mbiBhc2luaChoYWxmKTsKaGFsZjIgX19vdmxkIF9fY25mbiBhc2luaChoYWxmMik7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gYXNpbmgoaGFsZjMpOwpoYWxmNCBfX292bGQgX19jbmZuIGFzaW5oKGhhbGY0KTsKaGFsZjggX19vdmxkIF9fY25mbiBhc2luaChoYWxmOCk7CmhhbGYxNiBfX292bGQgX19jbmZuIGFzaW5oKGhhbGYxNik7CiNlbmRpZiAvL2NsX2tocl9mcDE2CgovKioKICogQ29tcHV0ZSBhc2luICh4KSAvIFBJLgogKi8KZmxvYXQgX19vdmxkIF9fY25mbiBhc2lucGkoZmxvYXQgeCk7CmZsb2F0MiBfX292bGQgX19jbmZuIGFzaW5waShmbG9hdDIgeCk7CmZsb2F0MyBfX292bGQgX19jbmZuIGFzaW5waShmbG9hdDMgeCk7CmZsb2F0NCBfX292bGQgX19jbmZuIGFzaW5waShmbG9hdDQgeCk7CmZsb2F0OCBfX292bGQgX19jbmZuIGFzaW5waShmbG9hdDggeCk7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBhc2lucGkoZmxvYXQxNiB4KTsKI2lmZGVmIGNsX2tocl9mcDY0CmRvdWJsZSBfX292bGQgX19jbmZuIGFzaW5waShkb3VibGUgeCk7CmRvdWJsZTIgX19vdmxkIF9fY25mbiBhc2lucGkoZG91YmxlMiB4KTsKZG91YmxlMyBfX292bGQgX19jbmZuIGFzaW5waShkb3VibGUzIHgpOwpkb3VibGU0IF9fb3ZsZCBfX2NuZm4gYXNpbnBpKGRvdWJsZTQgeCk7CmRvdWJsZTggX19vdmxkIF9fY25mbiBhc2lucGkoZG91YmxlOCB4KTsKZG91YmxlMTYgX19vdmxkIF9fY25mbiBhc2lucGkoZG91YmxlMTYgeCk7CiNlbmRpZiAvL2NsX2tocl9mcDY0CiNpZmRlZiBjbF9raHJfZnAxNgpoYWxmIF9fb3ZsZCBfX2NuZm4gYXNpbnBpKGhhbGYgeCk7CmhhbGYyIF9fb3ZsZCBfX2NuZm4gYXNpbnBpKGhhbGYyIHgpOwpoYWxmMyBfX292bGQgX19jbmZuIGFzaW5waShoYWxmMyB4KTsKaGFsZjQgX19vdmxkIF9fY25mbiBhc2lucGkoaGFsZjQgeCk7CmhhbGY4IF9fb3ZsZCBfX2NuZm4gYXNpbnBpKGhhbGY4IHgpOwpoYWxmMTYgX19vdmxkIF9fY25mbiBhc2lucGkoaGFsZjE2IHgpOwojZW5kaWYgLy9jbF9raHJfZnAxNgoKLyoqCiAqIEFyYyB0YW5nZW50IGZ1bmN0aW9uLgogKi8KZmxvYXQgX19vdmxkIF9fY25mbiBhdGFuKGZsb2F0IHlfb3Zlcl94KTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gYXRhbihmbG9hdDIgeV9vdmVyX3gpOwpmbG9hdDMgX19vdmxkIF9fY25mbiBhdGFuKGZsb2F0MyB5X292ZXJfeCk7CmZsb2F0NCBfX292bGQgX19jbmZuIGF0YW4oZmxvYXQ0IHlfb3Zlcl94KTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gYXRhbihmbG9hdDggeV9vdmVyX3gpOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gYXRhbihmbG9hdDE2IHlfb3Zlcl94KTsKI2lmZGVmIGNsX2tocl9mcDY0CmRvdWJsZSBfX292bGQgX19jbmZuIGF0YW4oZG91YmxlIHlfb3Zlcl94KTsKZG91YmxlMiBfX292bGQgX19jbmZuIGF0YW4oZG91YmxlMiB5X292ZXJfeCk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBhdGFuKGRvdWJsZTMgeV9vdmVyX3gpOwpkb3VibGU0IF9fb3ZsZCBfX2NuZm4gYXRhbihkb3VibGU0IHlfb3Zlcl94KTsKZG91YmxlOCBfX292bGQgX19jbmZuIGF0YW4oZG91YmxlOCB5X292ZXJfeCk7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gYXRhbihkb3VibGUxNiB5X292ZXJfeCk7CiNlbmRpZiAvL2NsX2tocl9mcDY0CiNpZmRlZiBjbF9raHJfZnAxNgpoYWxmIF9fb3ZsZCBfX2NuZm4gYXRhbihoYWxmIHlfb3Zlcl94KTsKaGFsZjIgX19vdmxkIF9fY25mbiBhdGFuKGhhbGYyIHlfb3Zlcl94KTsKaGFsZjMgX19vdmxkIF9fY25mbiBhdGFuKGhhbGYzIHlfb3Zlcl94KTsKaGFsZjQgX19vdmxkIF9fY25mbiBhdGFuKGhhbGY0IHlfb3Zlcl94KTsKaGFsZjggX19vdmxkIF9fY25mbiBhdGFuKGhhbGY4IHlfb3Zlcl94KTsKaGFsZjE2IF9fb3ZsZCBfX2NuZm4gYXRhbihoYWxmMTYgeV9vdmVyX3gpOwojZW5kaWYgLy9jbF9raHJfZnAxNgoKLyoqCiAqIEFyYyB0YW5nZW50IG9mIHkgLyB4LgogKi8KZmxvYXQgX19vdmxkIF9fY25mbiBhdGFuMihmbG9hdCB5LCBmbG9hdCB4KTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gYXRhbjIoZmxvYXQyIHksIGZsb2F0MiB4KTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gYXRhbjIoZmxvYXQzIHksIGZsb2F0MyB4KTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gYXRhbjIoZmxvYXQ0IHksIGZsb2F0NCB4KTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gYXRhbjIoZmxvYXQ4IHksIGZsb2F0OCB4KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGF0YW4yKGZsb2F0MTYgeSwgZmxvYXQxNiB4KTsKI2lmZGVmIGNsX2tocl9mcDY0CmRvdWJsZSBfX292bGQgX19jbmZuIGF0YW4yKGRvdWJsZSB5LCBkb3VibGUgeCk7CmRvdWJsZTIgX19vdmxkIF9fY25mbiBhdGFuMihkb3VibGUyIHksIGRvdWJsZTIgeCk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBhdGFuMihkb3VibGUzIHksIGRvdWJsZTMgeCk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiBhdGFuMihkb3VibGU0IHksIGRvdWJsZTQgeCk7CmRvdWJsZTggX19vdmxkIF9fY25mbiBhdGFuMihkb3VibGU4IHksIGRvdWJsZTggeCk7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gYXRhbjIoZG91YmxlMTYgeSwgZG91YmxlMTYgeCk7CiNlbmRpZiAvL2NsX2tocl9mcDY0CiNpZmRlZiBjbF9raHJfZnAxNgpoYWxmIF9fb3ZsZCBfX2NuZm4gYXRhbjIoaGFsZiB5LCBoYWxmIHgpOwpoYWxmMiBfX292bGQgX19jbmZuIGF0YW4yKGhhbGYyIHksIGhhbGYyIHgpOwpoYWxmMyBfX292bGQgX19jbmZuIGF0YW4yKGhhbGYzIHksIGhhbGYzIHgpOwpoYWxmNCBfX292bGQgX19jbmZuIGF0YW4yKGhhbGY0IHksIGhhbGY0IHgpOwpoYWxmOCBfX292bGQgX19jbmZuIGF0YW4yKGhhbGY4IHksIGhhbGY4IHgpOwpoYWxmMTYgX19vdmxkIF9fY25mbiBhdGFuMihoYWxmMTYgeSwgaGFsZjE2IHgpOwojZW5kaWYgLy9jbF9raHJfZnAxNgoKLyoqCiAqIEh5cGVyYm9saWMgYXJjIHRhbmdlbnQuCiAqLwpmbG9hdCBfX292bGQgX19jbmZuIGF0YW5oKGZsb2F0KTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gYXRhbmgoZmxvYXQyKTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gYXRhbmgoZmxvYXQzKTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gYXRhbmgoZmxvYXQ0KTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gYXRhbmgoZmxvYXQ4KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGF0YW5oKGZsb2F0MTYpOwojaWZkZWYgY2xfa2hyX2ZwNjQKZG91YmxlIF9fb3ZsZCBfX2NuZm4gYXRhbmgoZG91YmxlKTsKZG91YmxlMiBfX292bGQgX19jbmZuIGF0YW5oKGRvdWJsZTIpOwpkb3VibGUzIF9fb3ZsZCBfX2NuZm4gYXRhbmgoZG91YmxlMyk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiBhdGFuaChkb3VibGU0KTsKZG91YmxlOCBfX292bGQgX19jbmZuIGF0YW5oKGRvdWJsZTgpOwpkb3VibGUxNiBfX292bGQgX19jbmZuIGF0YW5oKGRvdWJsZTE2KTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKI2lmZGVmIGNsX2tocl9mcDE2CmhhbGYgX19vdmxkIF9fY25mbiBhdGFuaChoYWxmKTsKaGFsZjIgX19vdmxkIF9fY25mbiBhdGFuaChoYWxmMik7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gYXRhbmgoaGFsZjMpOwpoYWxmNCBfX292bGQgX19jbmZuIGF0YW5oKGhhbGY0KTsKaGFsZjggX19vdmxkIF9fY25mbiBhdGFuaChoYWxmOCk7CmhhbGYxNiBfX292bGQgX19jbmZuIGF0YW5oKGhhbGYxNik7CiNlbmRpZiAvL2NsX2tocl9mcDE2CgovKioKICogQ29tcHV0ZSBhdGFuICh4KSAvIFBJLgogKi8KZmxvYXQgX19vdmxkIF9fY25mbiBhdGFucGkoZmxvYXQgeCk7CmZsb2F0MiBfX292bGQgX19jbmZuIGF0YW5waShmbG9hdDIgeCk7CmZsb2F0MyBfX292bGQgX19jbmZuIGF0YW5waShmbG9hdDMgeCk7CmZsb2F0NCBfX292bGQgX19jbmZuIGF0YW5waShmbG9hdDQgeCk7CmZsb2F0OCBfX292bGQgX19jbmZuIGF0YW5waShmbG9hdDggeCk7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBhdGFucGkoZmxvYXQxNiB4KTsKI2lmZGVmIGNsX2tocl9mcDY0CmRvdWJsZSBfX292bGQgX19jbmZuIGF0YW5waShkb3VibGUgeCk7CmRvdWJsZTIgX19vdmxkIF9fY25mbiBhdGFucGkoZG91YmxlMiB4KTsKZG91YmxlMyBfX292bGQgX19jbmZuIGF0YW5waShkb3VibGUzIHgpOwpkb3VibGU0IF9fb3ZsZCBfX2NuZm4gYXRhbnBpKGRvdWJsZTQgeCk7CmRvdWJsZTggX19vdmxkIF9fY25mbiBhdGFucGkoZG91YmxlOCB4KTsKZG91YmxlMTYgX19vdmxkIF9fY25mbiBhdGFucGkoZG91YmxlMTYgeCk7CiNlbmRpZiAvL2NsX2tocl9mcDY0CiNpZmRlZiBjbF9raHJfZnAxNgpoYWxmIF9fb3ZsZCBfX2NuZm4gYXRhbnBpKGhhbGYgeCk7CmhhbGYyIF9fb3ZsZCBfX2NuZm4gYXRhbnBpKGhhbGYyIHgpOwpoYWxmMyBfX292bGQgX19jbmZuIGF0YW5waShoYWxmMyB4KTsKaGFsZjQgX19vdmxkIF9fY25mbiBhdGFucGkoaGFsZjQgeCk7CmhhbGY4IF9fb3ZsZCBfX2NuZm4gYXRhbnBpKGhhbGY4IHgpOwpoYWxmMTYgX19vdmxkIF9fY25mbiBhdGFucGkoaGFsZjE2IHgpOwojZW5kaWYgLy9jbF9raHJfZnAxNgoKLyoqCiAqIENvbXB1dGUgYXRhbjIgKHksIHgpIC8gUEkuCiAqLwpmbG9hdCBfX292bGQgX19jbmZuIGF0YW4ycGkoZmxvYXQgeSwgZmxvYXQgeCk7CmZsb2F0MiBfX292bGQgX19jbmZuIGF0YW4ycGkoZmxvYXQyIHksIGZsb2F0MiB4KTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gYXRhbjJwaShmbG9hdDMgeSwgZmxvYXQzIHgpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBhdGFuMnBpKGZsb2F0NCB5LCBmbG9hdDQgeCk7CmZsb2F0OCBfX292bGQgX19jbmZuIGF0YW4ycGkoZmxvYXQ4IHksIGZsb2F0OCB4KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGF0YW4ycGkoZmxvYXQxNiB5LCBmbG9hdDE2IHgpOwojaWZkZWYgY2xfa2hyX2ZwNjQKZG91YmxlIF9fb3ZsZCBfX2NuZm4gYXRhbjJwaShkb3VibGUgeSwgZG91YmxlIHgpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gYXRhbjJwaShkb3VibGUyIHksIGRvdWJsZTIgeCk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBhdGFuMnBpKGRvdWJsZTMgeSwgZG91YmxlMyB4KTsKZG91YmxlNCBfX292bGQgX19jbmZuIGF0YW4ycGkoZG91YmxlNCB5LCBkb3VibGU0IHgpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gYXRhbjJwaShkb3VibGU4IHksIGRvdWJsZTggeCk7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gYXRhbjJwaShkb3VibGUxNiB5LCBkb3VibGUxNiB4KTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKI2lmZGVmIGNsX2tocl9mcDE2CmhhbGYgX19vdmxkIF9fY25mbiBhdGFuMnBpKGhhbGYgeSwgaGFsZiB4KTsKaGFsZjIgX19vdmxkIF9fY25mbiBhdGFuMnBpKGhhbGYyIHksIGhhbGYyIHgpOwpoYWxmMyBfX292bGQgX19jbmZuIGF0YW4ycGkoaGFsZjMgeSwgaGFsZjMgeCk7CmhhbGY0IF9fb3ZsZCBfX2NuZm4gYXRhbjJwaShoYWxmNCB5LCBoYWxmNCB4KTsKaGFsZjggX19vdmxkIF9fY25mbiBhdGFuMnBpKGhhbGY4IHksIGhhbGY4IHgpOwpoYWxmMTYgX19vdmxkIF9fY25mbiBhdGFuMnBpKGhhbGYxNiB5LCBoYWxmMTYgeCk7CiNlbmRpZiAvL2NsX2tocl9mcDE2CgovKioKICogQ29tcHV0ZSBjdWJlLXJvb3QuCiAqLwpmbG9hdCBfX292bGQgX19jbmZuIGNicnQoZmxvYXQpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBjYnJ0KGZsb2F0Mik7CmZsb2F0MyBfX292bGQgX19jbmZuIGNicnQoZmxvYXQzKTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gY2JydChmbG9hdDQpOwpmbG9hdDggX19vdmxkIF9fY25mbiBjYnJ0KGZsb2F0OCk7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBjYnJ0KGZsb2F0MTYpOwojaWZkZWYgY2xfa2hyX2ZwNjQKZG91YmxlIF9fb3ZsZCBfX2NuZm4gY2JydChkb3VibGUpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gY2JydChkb3VibGUyKTsKZG91YmxlMyBfX292bGQgX19jbmZuIGNicnQoZG91YmxlMyk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiBjYnJ0KGRvdWJsZTQpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gY2JydChkb3VibGU4KTsKZG91YmxlMTYgX19vdmxkIF9fY25mbiBjYnJ0KGRvdWJsZTE2KTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKI2lmZGVmIGNsX2tocl9mcDE2CmhhbGYgX19vdmxkIF9fY25mbiBjYnJ0KGhhbGYpOwpoYWxmMiBfX292bGQgX19jbmZuIGNicnQoaGFsZjIpOwpoYWxmMyBfX292bGQgX19jbmZuIGNicnQoaGFsZjMpOwpoYWxmNCBfX292bGQgX19jbmZuIGNicnQoaGFsZjQpOwpoYWxmOCBfX292bGQgX19jbmZuIGNicnQoaGFsZjgpOwpoYWxmMTYgX19vdmxkIF9fY25mbiBjYnJ0KGhhbGYxNik7CiNlbmRpZiAvL2NsX2tocl9mcDE2CgovKioKICogUm91bmQgdG8gaW50ZWdyYWwgdmFsdWUgdXNpbmcgdGhlIHJvdW5kIHRvIHBvc2l0aXZlCiAqIGluZmluaXR5IHJvdW5kaW5nIG1vZGUuCiAqLwpmbG9hdCBfX292bGQgX19jbmZuIGNlaWwoZmxvYXQpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBjZWlsKGZsb2F0Mik7CmZsb2F0MyBfX292bGQgX19jbmZuIGNlaWwoZmxvYXQzKTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gY2VpbChmbG9hdDQpOwpmbG9hdDggX19vdmxkIF9fY25mbiBjZWlsKGZsb2F0OCk7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBjZWlsKGZsb2F0MTYpOwojaWZkZWYgY2xfa2hyX2ZwNjQKZG91YmxlIF9fb3ZsZCBfX2NuZm4gY2VpbChkb3VibGUpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gY2VpbChkb3VibGUyKTsKZG91YmxlMyBfX292bGQgX19jbmZuIGNlaWwoZG91YmxlMyk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiBjZWlsKGRvdWJsZTQpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gY2VpbChkb3VibGU4KTsKZG91YmxlMTYgX19vdmxkIF9fY25mbiBjZWlsKGRvdWJsZTE2KTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKI2lmZGVmIGNsX2tocl9mcDE2CmhhbGYgX19vdmxkIF9fY25mbiBjZWlsKGhhbGYpOwpoYWxmMiBfX292bGQgX19jbmZuIGNlaWwoaGFsZjIpOwpoYWxmMyBfX292bGQgX19jbmZuIGNlaWwoaGFsZjMpOwpoYWxmNCBfX292bGQgX19jbmZuIGNlaWwoaGFsZjQpOwpoYWxmOCBfX292bGQgX19jbmZuIGNlaWwoaGFsZjgpOwpoYWxmMTYgX19vdmxkIF9fY25mbiBjZWlsKGhhbGYxNik7CiNlbmRpZiAvL2NsX2tocl9mcDE2CgovKioKICogUmV0dXJucyB4IHdpdGggaXRzIHNpZ24gY2hhbmdlZCB0byBtYXRjaCB0aGUgc2lnbiBvZiB5LgogKi8KZmxvYXQgX19vdmxkIF9fY25mbiBjb3B5c2lnbihmbG9hdCB4LCBmbG9hdCB5KTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gY29weXNpZ24oZmxvYXQyIHgsIGZsb2F0MiB5KTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gY29weXNpZ24oZmxvYXQzIHgsIGZsb2F0MyB5KTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gY29weXNpZ24oZmxvYXQ0IHgsIGZsb2F0NCB5KTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gY29weXNpZ24oZmxvYXQ4IHgsIGZsb2F0OCB5KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGNvcHlzaWduKGZsb2F0MTYgeCwgZmxvYXQxNiB5KTsKI2lmZGVmIGNsX2tocl9mcDY0CmRvdWJsZSBfX292bGQgX19jbmZuIGNvcHlzaWduKGRvdWJsZSB4LCBkb3VibGUgeSk7CmRvdWJsZTIgX19vdmxkIF9fY25mbiBjb3B5c2lnbihkb3VibGUyIHgsIGRvdWJsZTIgeSk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBjb3B5c2lnbihkb3VibGUzIHgsIGRvdWJsZTMgeSk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiBjb3B5c2lnbihkb3VibGU0IHgsIGRvdWJsZTQgeSk7CmRvdWJsZTggX19vdmxkIF9fY25mbiBjb3B5c2lnbihkb3VibGU4IHgsIGRvdWJsZTggeSk7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gY29weXNpZ24oZG91YmxlMTYgeCwgZG91YmxlMTYgeSk7CiNlbmRpZiAvL2NsX2tocl9mcDY0CiNpZmRlZiBjbF9raHJfZnAxNgpoYWxmIF9fb3ZsZCBfX2NuZm4gY29weXNpZ24oaGFsZiB4LCBoYWxmIHkpOwpoYWxmMiBfX292bGQgX19jbmZuIGNvcHlzaWduKGhhbGYyIHgsIGhhbGYyIHkpOwpoYWxmMyBfX292bGQgX19jbmZuIGNvcHlzaWduKGhhbGYzIHgsIGhhbGYzIHkpOwpoYWxmNCBfX292bGQgX19jbmZuIGNvcHlzaWduKGhhbGY0IHgsIGhhbGY0IHkpOwpoYWxmOCBfX292bGQgX19jbmZuIGNvcHlzaWduKGhhbGY4IHgsIGhhbGY4IHkpOwpoYWxmMTYgX19vdmxkIF9fY25mbiBjb3B5c2lnbihoYWxmMTYgeCwgaGFsZjE2IHkpOwojZW5kaWYgLy9jbF9raHJfZnAxNgoKLyoqCiAqIENvbXB1dGUgY29zaW5lLgogKi8KZmxvYXQgX19vdmxkIF9fY25mbiBjb3MoZmxvYXQpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBjb3MoZmxvYXQyKTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gY29zKGZsb2F0Myk7CmZsb2F0NCBfX292bGQgX19jbmZuIGNvcyhmbG9hdDQpOwpmbG9hdDggX19vdmxkIF9fY25mbiBjb3MoZmxvYXQ4KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGNvcyhmbG9hdDE2KTsKI2lmZGVmIGNsX2tocl9mcDY0CmRvdWJsZSBfX292bGQgX19jbmZuIGNvcyhkb3VibGUpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gY29zKGRvdWJsZTIpOwpkb3VibGUzIF9fb3ZsZCBfX2NuZm4gY29zKGRvdWJsZTMpOwpkb3VibGU0IF9fb3ZsZCBfX2NuZm4gY29zKGRvdWJsZTQpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gY29zKGRvdWJsZTgpOwpkb3VibGUxNiBfX292bGQgX19jbmZuIGNvcyhkb3VibGUxNik7CiNlbmRpZiAvL2NsX2tocl9mcDY0CiNpZmRlZiBjbF9raHJfZnAxNgpoYWxmIF9fb3ZsZCBfX2NuZm4gY29zKGhhbGYpOwpoYWxmMiBfX292bGQgX19jbmZuIGNvcyhoYWxmMik7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gY29zKGhhbGYzKTsKaGFsZjQgX19vdmxkIF9fY25mbiBjb3MoaGFsZjQpOwpoYWxmOCBfX292bGQgX19jbmZuIGNvcyhoYWxmOCk7CmhhbGYxNiBfX292bGQgX19jbmZuIGNvcyhoYWxmMTYpOwojZW5kaWYgLy9jbF9raHJfZnAxNgoKLyoqCiAqIENvbXB1dGUgaHlwZXJib2xpYyBjb3NpbmUuCiAqLwpmbG9hdCBfX292bGQgX19jbmZuIGNvc2goZmxvYXQpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBjb3NoKGZsb2F0Mik7CmZsb2F0MyBfX292bGQgX19jbmZuIGNvc2goZmxvYXQzKTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gY29zaChmbG9hdDQpOwpmbG9hdDggX19vdmxkIF9fY25mbiBjb3NoKGZsb2F0OCk7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBjb3NoKGZsb2F0MTYpOwojaWZkZWYgY2xfa2hyX2ZwNjQKZG91YmxlIF9fb3ZsZCBfX2NuZm4gY29zaChkb3VibGUpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gY29zaChkb3VibGUyKTsKZG91YmxlMyBfX292bGQgX19jbmZuIGNvc2goZG91YmxlMyk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiBjb3NoKGRvdWJsZTQpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gY29zaChkb3VibGU4KTsKZG91YmxlMTYgX19vdmxkIF9fY25mbiBjb3NoKGRvdWJsZTE2KTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKI2lmZGVmIGNsX2tocl9mcDE2CmhhbGYgX19vdmxkIF9fY25mbiBjb3NoKGhhbGYpOwpoYWxmMiBfX292bGQgX19jbmZuIGNvc2goaGFsZjIpOwpoYWxmMyBfX292bGQgX19jbmZuIGNvc2goaGFsZjMpOwpoYWxmNCBfX292bGQgX19jbmZuIGNvc2goaGFsZjQpOwpoYWxmOCBfX292bGQgX19jbmZuIGNvc2goaGFsZjgpOwpoYWxmMTYgX19vdmxkIF9fY25mbiBjb3NoKGhhbGYxNik7CiNlbmRpZiAvL2NsX2tocl9mcDE2CgovKioKICogQ29tcHV0ZSBjb3MgKFBJICogeCkuCiAqLwpmbG9hdCBfX292bGQgX19jbmZuIGNvc3BpKGZsb2F0IHgpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBjb3NwaShmbG9hdDIgeCk7CmZsb2F0MyBfX292bGQgX19jbmZuIGNvc3BpKGZsb2F0MyB4KTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gY29zcGkoZmxvYXQ0IHgpOwpmbG9hdDggX19vdmxkIF9fY25mbiBjb3NwaShmbG9hdDggeCk7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBjb3NwaShmbG9hdDE2IHgpOwojaWZkZWYgY2xfa2hyX2ZwNjQKZG91YmxlIF9fb3ZsZCBfX2NuZm4gY29zcGkoZG91YmxlIHgpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gY29zcGkoZG91YmxlMiB4KTsKZG91YmxlMyBfX292bGQgX19jbmZuIGNvc3BpKGRvdWJsZTMgeCk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiBjb3NwaShkb3VibGU0IHgpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gY29zcGkoZG91YmxlOCB4KTsKZG91YmxlMTYgX19vdmxkIF9fY25mbiBjb3NwaShkb3VibGUxNiB4KTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKI2lmZGVmIGNsX2tocl9mcDE2CmhhbGYgX19vdmxkIF9fY25mbiBjb3NwaShoYWxmIHgpOwpoYWxmMiBfX292bGQgX19jbmZuIGNvc3BpKGhhbGYyIHgpOwpoYWxmMyBfX292bGQgX19jbmZuIGNvc3BpKGhhbGYzIHgpOwpoYWxmNCBfX292bGQgX19jbmZuIGNvc3BpKGhhbGY0IHgpOwpoYWxmOCBfX292bGQgX19jbmZuIGNvc3BpKGhhbGY4IHgpOwpoYWxmMTYgX19vdmxkIF9fY25mbiBjb3NwaShoYWxmMTYgeCk7CiNlbmRpZiAvL2NsX2tocl9mcDE2CgovKioKICogQ29tcGxlbWVudGFyeSBlcnJvciBmdW5jdGlvbi4KICovCmZsb2F0IF9fb3ZsZCBfX2NuZm4gZXJmYyhmbG9hdCk7CmZsb2F0MiBfX292bGQgX19jbmZuIGVyZmMoZmxvYXQyKTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gZXJmYyhmbG9hdDMpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBlcmZjKGZsb2F0NCk7CmZsb2F0OCBfX292bGQgX19jbmZuIGVyZmMoZmxvYXQ4KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGVyZmMoZmxvYXQxNik7CiNpZmRlZiBjbF9raHJfZnA2NApkb3VibGUgX19vdmxkIF9fY25mbiBlcmZjKGRvdWJsZSk7CmRvdWJsZTIgX19vdmxkIF9fY25mbiBlcmZjKGRvdWJsZTIpOwpkb3VibGUzIF9fb3ZsZCBfX2NuZm4gZXJmYyhkb3VibGUzKTsKZG91YmxlNCBfX292bGQgX19jbmZuIGVyZmMoZG91YmxlNCk7CmRvdWJsZTggX19vdmxkIF9fY25mbiBlcmZjKGRvdWJsZTgpOwpkb3VibGUxNiBfX292bGQgX19jbmZuIGVyZmMoZG91YmxlMTYpOwojZW5kaWYgLy9jbF9raHJfZnA2NAojaWZkZWYgY2xfa2hyX2ZwMTYKaGFsZiBfX292bGQgX19jbmZuIGVyZmMoaGFsZik7CmhhbGYyIF9fb3ZsZCBfX2NuZm4gZXJmYyhoYWxmMik7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gZXJmYyhoYWxmMyk7CmhhbGY0IF9fb3ZsZCBfX2NuZm4gZXJmYyhoYWxmNCk7CmhhbGY4IF9fb3ZsZCBfX2NuZm4gZXJmYyhoYWxmOCk7CmhhbGYxNiBfX292bGQgX19jbmZuIGVyZmMoaGFsZjE2KTsKI2VuZGlmIC8vY2xfa2hyX2ZwMTYKCi8qKgogKiBFcnJvciBmdW5jdGlvbiBlbmNvdW50ZXJlZCBpbiBpbnRlZ3JhdGluZyB0aGUKICogbm9ybWFsIGRpc3RyaWJ1dGlvbi4KICovCmZsb2F0IF9fb3ZsZCBfX2NuZm4gZXJmKGZsb2F0KTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gZXJmKGZsb2F0Mik7CmZsb2F0MyBfX292bGQgX19jbmZuIGVyZihmbG9hdDMpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBlcmYoZmxvYXQ0KTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gZXJmKGZsb2F0OCk7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBlcmYoZmxvYXQxNik7CiNpZmRlZiBjbF9raHJfZnA2NApkb3VibGUgX19vdmxkIF9fY25mbiBlcmYoZG91YmxlKTsKZG91YmxlMiBfX292bGQgX19jbmZuIGVyZihkb3VibGUyKTsKZG91YmxlMyBfX292bGQgX19jbmZuIGVyZihkb3VibGUzKTsKZG91YmxlNCBfX292bGQgX19jbmZuIGVyZihkb3VibGU0KTsKZG91YmxlOCBfX292bGQgX19jbmZuIGVyZihkb3VibGU4KTsKZG91YmxlMTYgX19vdmxkIF9fY25mbiBlcmYoZG91YmxlMTYpOwojZW5kaWYgLy9jbF9raHJfZnA2NAojaWZkZWYgY2xfa2hyX2ZwMTYKaGFsZiBfX292bGQgX19jbmZuIGVyZihoYWxmKTsKaGFsZjIgX19vdmxkIF9fY25mbiBlcmYoaGFsZjIpOwpoYWxmMyBfX292bGQgX19jbmZuIGVyZihoYWxmMyk7CmhhbGY0IF9fb3ZsZCBfX2NuZm4gZXJmKGhhbGY0KTsKaGFsZjggX19vdmxkIF9fY25mbiBlcmYoaGFsZjgpOwpoYWxmMTYgX19vdmxkIF9fY25mbiBlcmYoaGFsZjE2KTsKI2VuZGlmIC8vY2xfa2hyX2ZwMTYKCi8qKgogKiBDb21wdXRlIHRoZSBiYXNlIGUgZXhwb25lbnRpYWwgZnVuY3Rpb24gb2YgeC4KICovCmZsb2F0IF9fb3ZsZCBfX2NuZm4gZXhwKGZsb2F0IHgpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBleHAoZmxvYXQyIHgpOwpmbG9hdDMgX19vdmxkIF9fY25mbiBleHAoZmxvYXQzIHgpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBleHAoZmxvYXQ0IHgpOwpmbG9hdDggX19vdmxkIF9fY25mbiBleHAoZmxvYXQ4IHgpOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gZXhwKGZsb2F0MTYgeCk7CiNpZmRlZiBjbF9raHJfZnA2NApkb3VibGUgX19vdmxkIF9fY25mbiBleHAoZG91YmxlIHgpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gZXhwKGRvdWJsZTIgeCk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBleHAoZG91YmxlMyB4KTsKZG91YmxlNCBfX292bGQgX19jbmZuIGV4cChkb3VibGU0IHgpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gZXhwKGRvdWJsZTggeCk7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gZXhwKGRvdWJsZTE2IHgpOwojZW5kaWYgLy9jbF9raHJfZnA2NAojaWZkZWYgY2xfa2hyX2ZwMTYKaGFsZiBfX292bGQgX19jbmZuIGV4cChoYWxmIHgpOwpoYWxmMiBfX292bGQgX19jbmZuIGV4cChoYWxmMiB4KTsKaGFsZjMgX19vdmxkIF9fY25mbiBleHAoaGFsZjMgeCk7CmhhbGY0IF9fb3ZsZCBfX2NuZm4gZXhwKGhhbGY0IHgpOwpoYWxmOCBfX292bGQgX19jbmZuIGV4cChoYWxmOCB4KTsKaGFsZjE2IF9fb3ZsZCBfX2NuZm4gZXhwKGhhbGYxNiB4KTsKI2VuZGlmIC8vY2xfa2hyX2ZwMTYKCi8qKgogKiBFeHBvbmVudGlhbCBiYXNlIDIgZnVuY3Rpb24uCiAqLwpmbG9hdCBfX292bGQgX19jbmZuIGV4cDIoZmxvYXQpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBleHAyKGZsb2F0Mik7CmZsb2F0MyBfX292bGQgX19jbmZuIGV4cDIoZmxvYXQzKTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gZXhwMihmbG9hdDQpOwpmbG9hdDggX19vdmxkIF9fY25mbiBleHAyKGZsb2F0OCk7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBleHAyKGZsb2F0MTYpOwojaWZkZWYgY2xfa2hyX2ZwNjQKZG91YmxlIF9fb3ZsZCBfX2NuZm4gZXhwMihkb3VibGUpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gZXhwMihkb3VibGUyKTsKZG91YmxlMyBfX292bGQgX19jbmZuIGV4cDIoZG91YmxlMyk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiBleHAyKGRvdWJsZTQpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gZXhwMihkb3VibGU4KTsKZG91YmxlMTYgX19vdmxkIF9fY25mbiBleHAyKGRvdWJsZTE2KTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKI2lmZGVmIGNsX2tocl9mcDE2CmhhbGYgX19vdmxkIF9fY25mbiBleHAyKGhhbGYpOwpoYWxmMiBfX292bGQgX19jbmZuIGV4cDIoaGFsZjIpOwpoYWxmMyBfX292bGQgX19jbmZuIGV4cDIoaGFsZjMpOwpoYWxmNCBfX292bGQgX19jbmZuIGV4cDIoaGFsZjQpOwpoYWxmOCBfX292bGQgX19jbmZuIGV4cDIoaGFsZjgpOwpoYWxmMTYgX19vdmxkIF9fY25mbiBleHAyKGhhbGYxNik7CiNlbmRpZiAvL2NsX2tocl9mcDE2CgovKioKICogRXhwb25lbnRpYWwgYmFzZSAxMCBmdW5jdGlvbi4KICovCmZsb2F0IF9fb3ZsZCBfX2NuZm4gZXhwMTAoZmxvYXQpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBleHAxMChmbG9hdDIpOwpmbG9hdDMgX19vdmxkIF9fY25mbiBleHAxMChmbG9hdDMpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBleHAxMChmbG9hdDQpOwpmbG9hdDggX19vdmxkIF9fY25mbiBleHAxMChmbG9hdDgpOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gZXhwMTAoZmxvYXQxNik7CiNpZmRlZiBjbF9raHJfZnA2NApkb3VibGUgX19vdmxkIF9fY25mbiBleHAxMChkb3VibGUpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gZXhwMTAoZG91YmxlMik7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBleHAxMChkb3VibGUzKTsKZG91YmxlNCBfX292bGQgX19jbmZuIGV4cDEwKGRvdWJsZTQpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gZXhwMTAoZG91YmxlOCk7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gZXhwMTAoZG91YmxlMTYpOwojZW5kaWYgLy9jbF9raHJfZnA2NAojaWZkZWYgY2xfa2hyX2ZwMTYKaGFsZiBfX292bGQgX19jbmZuIGV4cDEwKGhhbGYpOwpoYWxmMiBfX292bGQgX19jbmZuIGV4cDEwKGhhbGYyKTsKaGFsZjMgX19vdmxkIF9fY25mbiBleHAxMChoYWxmMyk7CmhhbGY0IF9fb3ZsZCBfX2NuZm4gZXhwMTAoaGFsZjQpOwpoYWxmOCBfX292bGQgX19jbmZuIGV4cDEwKGhhbGY4KTsKaGFsZjE2IF9fb3ZsZCBfX2NuZm4gZXhwMTAoaGFsZjE2KTsKI2VuZGlmIC8vY2xfa2hyX2ZwMTYKCi8qKgogKiBDb21wdXRlIGVeeC0gMS4wLgogKi8KZmxvYXQgX19vdmxkIF9fY25mbiBleHBtMShmbG9hdCB4KTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gZXhwbTEoZmxvYXQyIHgpOwpmbG9hdDMgX19vdmxkIF9fY25mbiBleHBtMShmbG9hdDMgeCk7CmZsb2F0NCBfX292bGQgX19jbmZuIGV4cG0xKGZsb2F0NCB4KTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gZXhwbTEoZmxvYXQ4IHgpOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gZXhwbTEoZmxvYXQxNiB4KTsKI2lmZGVmIGNsX2tocl9mcDY0CmRvdWJsZSBfX292bGQgX19jbmZuIGV4cG0xKGRvdWJsZSB4KTsKZG91YmxlMiBfX292bGQgX19jbmZuIGV4cG0xKGRvdWJsZTIgeCk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBleHBtMShkb3VibGUzIHgpOwpkb3VibGU0IF9fb3ZsZCBfX2NuZm4gZXhwbTEoZG91YmxlNCB4KTsKZG91YmxlOCBfX292bGQgX19jbmZuIGV4cG0xKGRvdWJsZTggeCk7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gZXhwbTEoZG91YmxlMTYgeCk7CiNlbmRpZiAvL2NsX2tocl9mcDY0CiNpZmRlZiBjbF9raHJfZnAxNgpoYWxmIF9fb3ZsZCBfX2NuZm4gZXhwbTEoaGFsZiB4KTsKaGFsZjIgX19vdmxkIF9fY25mbiBleHBtMShoYWxmMiB4KTsKaGFsZjMgX19vdmxkIF9fY25mbiBleHBtMShoYWxmMyB4KTsKaGFsZjQgX19vdmxkIF9fY25mbiBleHBtMShoYWxmNCB4KTsKaGFsZjggX19vdmxkIF9fY25mbiBleHBtMShoYWxmOCB4KTsKaGFsZjE2IF9fb3ZsZCBfX2NuZm4gZXhwbTEoaGFsZjE2IHgpOwojZW5kaWYgLy9jbF9raHJfZnAxNgoKLyoqCiAqIENvbXB1dGUgYWJzb2x1dGUgdmFsdWUgb2YgYSBmbG9hdGluZy1wb2ludCBudW1iZXIuCiAqLwpmbG9hdCBfX292bGQgX19jbmZuIGZhYnMoZmxvYXQpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBmYWJzKGZsb2F0Mik7CmZsb2F0MyBfX292bGQgX19jbmZuIGZhYnMoZmxvYXQzKTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gZmFicyhmbG9hdDQpOwpmbG9hdDggX19vdmxkIF9fY25mbiBmYWJzKGZsb2F0OCk7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBmYWJzKGZsb2F0MTYpOwojaWZkZWYgY2xfa2hyX2ZwNjQKZG91YmxlIF9fb3ZsZCBfX2NuZm4gZmFicyhkb3VibGUpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gZmFicyhkb3VibGUyKTsKZG91YmxlMyBfX292bGQgX19jbmZuIGZhYnMoZG91YmxlMyk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiBmYWJzKGRvdWJsZTQpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gZmFicyhkb3VibGU4KTsKZG91YmxlMTYgX19vdmxkIF9fY25mbiBmYWJzKGRvdWJsZTE2KTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKI2lmZGVmIGNsX2tocl9mcDE2CmhhbGYgX19vdmxkIF9fY25mbiBmYWJzKGhhbGYpOwpoYWxmMiBfX292bGQgX19jbmZuIGZhYnMoaGFsZjIpOwpoYWxmMyBfX292bGQgX19jbmZuIGZhYnMoaGFsZjMpOwpoYWxmNCBfX292bGQgX19jbmZuIGZhYnMoaGFsZjQpOwpoYWxmOCBfX292bGQgX19jbmZuIGZhYnMoaGFsZjgpOwpoYWxmMTYgX19vdmxkIF9fY25mbiBmYWJzKGhhbGYxNik7CiNlbmRpZiAvL2NsX2tocl9mcDE2CgovKioKICogeCAtIHkgaWYgeCA+IHksICswIGlmIHggaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHkuCiAqLwpmbG9hdCBfX292bGQgX19jbmZuIGZkaW0oZmxvYXQgeCwgZmxvYXQgeSk7CmZsb2F0MiBfX292bGQgX19jbmZuIGZkaW0oZmxvYXQyIHgsIGZsb2F0MiB5KTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gZmRpbShmbG9hdDMgeCwgZmxvYXQzIHkpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBmZGltKGZsb2F0NCB4LCBmbG9hdDQgeSk7CmZsb2F0OCBfX292bGQgX19jbmZuIGZkaW0oZmxvYXQ4IHgsIGZsb2F0OCB5KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGZkaW0oZmxvYXQxNiB4LCBmbG9hdDE2IHkpOwojaWZkZWYgY2xfa2hyX2ZwNjQKZG91YmxlIF9fb3ZsZCBfX2NuZm4gZmRpbShkb3VibGUgeCwgZG91YmxlIHkpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gZmRpbShkb3VibGUyIHgsIGRvdWJsZTIgeSk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBmZGltKGRvdWJsZTMgeCwgZG91YmxlMyB5KTsKZG91YmxlNCBfX292bGQgX19jbmZuIGZkaW0oZG91YmxlNCB4LCBkb3VibGU0IHkpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gZmRpbShkb3VibGU4IHgsIGRvdWJsZTggeSk7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gZmRpbShkb3VibGUxNiB4LCBkb3VibGUxNiB5KTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKI2lmZGVmIGNsX2tocl9mcDE2CmhhbGYgX19vdmxkIF9fY25mbiBmZGltKGhhbGYgeCwgaGFsZiB5KTsKaGFsZjIgX19vdmxkIF9fY25mbiBmZGltKGhhbGYyIHgsIGhhbGYyIHkpOwpoYWxmMyBfX292bGQgX19jbmZuIGZkaW0oaGFsZjMgeCwgaGFsZjMgeSk7CmhhbGY0IF9fb3ZsZCBfX2NuZm4gZmRpbShoYWxmNCB4LCBoYWxmNCB5KTsKaGFsZjggX19vdmxkIF9fY25mbiBmZGltKGhhbGY4IHgsIGhhbGY4IHkpOwpoYWxmMTYgX19vdmxkIF9fY25mbiBmZGltKGhhbGYxNiB4LCBoYWxmMTYgeSk7CiNlbmRpZiAvL2NsX2tocl9mcDE2CgovKioKICogUm91bmQgdG8gaW50ZWdyYWwgdmFsdWUgdXNpbmcgdGhlIHJvdW5kIHRvIC12ZQogKiBpbmZpbml0eSByb3VuZGluZyBtb2RlLgogKi8KZmxvYXQgX19vdmxkIF9fY25mbiBmbG9vcihmbG9hdCk7CmZsb2F0MiBfX292bGQgX19jbmZuIGZsb29yKGZsb2F0Mik7CmZsb2F0MyBfX292bGQgX19jbmZuIGZsb29yKGZsb2F0Myk7CmZsb2F0NCBfX292bGQgX19jbmZuIGZsb29yKGZsb2F0NCk7CmZsb2F0OCBfX292bGQgX19jbmZuIGZsb29yKGZsb2F0OCk7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBmbG9vcihmbG9hdDE2KTsKI2lmZGVmIGNsX2tocl9mcDY0CmRvdWJsZSBfX292bGQgX19jbmZuIGZsb29yKGRvdWJsZSk7CmRvdWJsZTIgX19vdmxkIF9fY25mbiBmbG9vcihkb3VibGUyKTsKZG91YmxlMyBfX292bGQgX19jbmZuIGZsb29yKGRvdWJsZTMpOwpkb3VibGU0IF9fb3ZsZCBfX2NuZm4gZmxvb3IoZG91YmxlNCk7CmRvdWJsZTggX19vdmxkIF9fY25mbiBmbG9vcihkb3VibGU4KTsKZG91YmxlMTYgX19vdmxkIF9fY25mbiBmbG9vcihkb3VibGUxNik7CiNlbmRpZiAvL2NsX2tocl9mcDY0CiNpZmRlZiBjbF9raHJfZnAxNgpoYWxmIF9fb3ZsZCBfX2NuZm4gZmxvb3IoaGFsZik7CmhhbGYyIF9fb3ZsZCBfX2NuZm4gZmxvb3IoaGFsZjIpOwpoYWxmMyBfX292bGQgX19jbmZuIGZsb29yKGhhbGYzKTsKaGFsZjQgX19vdmxkIF9fY25mbiBmbG9vcihoYWxmNCk7CmhhbGY4IF9fb3ZsZCBfX2NuZm4gZmxvb3IoaGFsZjgpOwpoYWxmMTYgX19vdmxkIF9fY25mbiBmbG9vcihoYWxmMTYpOwojZW5kaWYgLy9jbF9raHJfZnAxNgoKLyoqCiAqIFJldHVybnMgdGhlIGNvcnJlY3RseSByb3VuZGVkIGZsb2F0aW5nLXBvaW50CiAqIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzdW0gb2YgYyB3aXRoIHRoZSBpbmZpbml0ZWx5CiAqIHByZWNpc2UgcHJvZHVjdCBvZiBhIGFuZCBiLiBSb3VuZGluZyBvZgogKiBpbnRlcm1lZGlhdGUgcHJvZHVjdHMgc2hhbGwgbm90IG9jY3VyLiBFZGdlIGNhc2UKICogYmVoYXZpb3IgaXMgcGVyIHRoZSBJRUVFIDc1NC0yMDA4IHN0YW5kYXJkLgogKi8KZmxvYXQgX19vdmxkIF9fY25mbiBmbWEoZmxvYXQgYSwgZmxvYXQgYiwgZmxvYXQgYyk7CmZsb2F0MiBfX292bGQgX19jbmZuIGZtYShmbG9hdDIgYSwgZmxvYXQyIGIsIGZsb2F0MiBjKTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gZm1hKGZsb2F0MyBhLCBmbG9hdDMgYiwgZmxvYXQzIGMpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBmbWEoZmxvYXQ0IGEsIGZsb2F0NCBiLCBmbG9hdDQgYyk7CmZsb2F0OCBfX292bGQgX19jbmZuIGZtYShmbG9hdDggYSwgZmxvYXQ4IGIsIGZsb2F0OCBjKTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGZtYShmbG9hdDE2IGEsIGZsb2F0MTYgYiwgZmxvYXQxNiBjKTsKI2lmZGVmIGNsX2tocl9mcDY0CmRvdWJsZSBfX292bGQgX19jbmZuIGZtYShkb3VibGUgYSwgZG91YmxlIGIsIGRvdWJsZSBjKTsKZG91YmxlMiBfX292bGQgX19jbmZuIGZtYShkb3VibGUyIGEsIGRvdWJsZTIgYiwgZG91YmxlMiBjKTsKZG91YmxlMyBfX292bGQgX19jbmZuIGZtYShkb3VibGUzIGEsIGRvdWJsZTMgYiwgZG91YmxlMyBjKTsKZG91YmxlNCBfX292bGQgX19jbmZuIGZtYShkb3VibGU0IGEsIGRvdWJsZTQgYiwgZG91YmxlNCBjKTsKZG91YmxlOCBfX292bGQgX19jbmZuIGZtYShkb3VibGU4IGEsIGRvdWJsZTggYiwgZG91YmxlOCBjKTsKZG91YmxlMTYgX19vdmxkIF9fY25mbiBmbWEoZG91YmxlMTYgYSwgZG91YmxlMTYgYiwgZG91YmxlMTYgYyk7CiNlbmRpZiAvL2NsX2tocl9mcDY0CiNpZmRlZiBjbF9raHJfZnAxNgpoYWxmIF9fb3ZsZCBfX2NuZm4gZm1hKGhhbGYgYSwgaGFsZiBiLCBoYWxmIGMpOwpoYWxmMiBfX292bGQgX19jbmZuIGZtYShoYWxmMiBhLCBoYWxmMiBiLCBoYWxmMiBjKTsKaGFsZjMgX19vdmxkIF9fY25mbiBmbWEoaGFsZjMgYSwgaGFsZjMgYiwgaGFsZjMgYyk7CmhhbGY0IF9fb3ZsZCBfX2NuZm4gZm1hKGhhbGY0IGEsIGhhbGY0IGIsIGhhbGY0IGMpOwpoYWxmOCBfX292bGQgX19jbmZuIGZtYShoYWxmOCBhLCBoYWxmOCBiLCBoYWxmOCBjKTsKaGFsZjE2IF9fb3ZsZCBfX2NuZm4gZm1hKGhhbGYxNiBhLCBoYWxmMTYgYiwgaGFsZjE2IGMpOwojZW5kaWYgLy9jbF9raHJfZnAxNgoKLyoqCiAqIFJldHVybnMgeSBpZiB4IDwgeSwgb3RoZXJ3aXNlIGl0IHJldHVybnMgeC4gSWYgb25lCiAqIGFyZ3VtZW50IGlzIGEgTmFOLCBmbWF4KCkgcmV0dXJucyB0aGUgb3RoZXIKICogYXJndW1lbnQuIElmIGJvdGggYXJndW1lbnRzIGFyZSBOYU5zLCBmbWF4KCkKICogcmV0dXJucyBhIE5hTi4KICovCmZsb2F0IF9fb3ZsZCBfX2NuZm4gZm1heChmbG9hdCB4LCBmbG9hdCB5KTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gZm1heChmbG9hdDIgeCwgZmxvYXQyIHkpOwpmbG9hdDMgX19vdmxkIF9fY25mbiBmbWF4KGZsb2F0MyB4LCBmbG9hdDMgeSk7CmZsb2F0NCBfX292bGQgX19jbmZuIGZtYXgoZmxvYXQ0IHgsIGZsb2F0NCB5KTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gZm1heChmbG9hdDggeCwgZmxvYXQ4IHkpOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gZm1heChmbG9hdDE2IHgsIGZsb2F0MTYgeSk7CmZsb2F0MiBfX292bGQgX19jbmZuIGZtYXgoZmxvYXQyIHgsIGZsb2F0IHkpOwpmbG9hdDMgX19vdmxkIF9fY25mbiBmbWF4KGZsb2F0MyB4LCBmbG9hdCB5KTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gZm1heChmbG9hdDQgeCwgZmxvYXQgeSk7CmZsb2F0OCBfX292bGQgX19jbmZuIGZtYXgoZmxvYXQ4IHgsIGZsb2F0IHkpOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gZm1heChmbG9hdDE2IHgsIGZsb2F0IHkpOwojaWZkZWYgY2xfa2hyX2ZwNjQKZG91YmxlIF9fb3ZsZCBfX2NuZm4gZm1heChkb3VibGUgeCwgZG91YmxlIHkpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gZm1heChkb3VibGUyIHgsIGRvdWJsZTIgeSk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBmbWF4KGRvdWJsZTMgeCwgZG91YmxlMyB5KTsKZG91YmxlNCBfX292bGQgX19jbmZuIGZtYXgoZG91YmxlNCB4LCBkb3VibGU0IHkpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gZm1heChkb3VibGU4IHgsIGRvdWJsZTggeSk7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gZm1heChkb3VibGUxNiB4LCBkb3VibGUxNiB5KTsKZG91YmxlMiBfX292bGQgX19jbmZuIGZtYXgoZG91YmxlMiB4LCBkb3VibGUgeSk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBmbWF4KGRvdWJsZTMgeCwgZG91YmxlIHkpOwpkb3VibGU0IF9fb3ZsZCBfX2NuZm4gZm1heChkb3VibGU0IHgsIGRvdWJsZSB5KTsKZG91YmxlOCBfX292bGQgX19jbmZuIGZtYXgoZG91YmxlOCB4LCBkb3VibGUgeSk7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gZm1heChkb3VibGUxNiB4LCBkb3VibGUgeSk7CiNlbmRpZiAvL2NsX2tocl9mcDY0CiNpZmRlZiBjbF9raHJfZnAxNgpoYWxmIF9fb3ZsZCBfX2NuZm4gZm1heChoYWxmIHgsIGhhbGYgeSk7CmhhbGYyIF9fb3ZsZCBfX2NuZm4gZm1heChoYWxmMiB4LCBoYWxmMiB5KTsKaGFsZjMgX19vdmxkIF9fY25mbiBmbWF4KGhhbGYzIHgsIGhhbGYzIHkpOwpoYWxmNCBfX292bGQgX19jbmZuIGZtYXgoaGFsZjQgeCwgaGFsZjQgeSk7CmhhbGY4IF9fb3ZsZCBfX2NuZm4gZm1heChoYWxmOCB4LCBoYWxmOCB5KTsKaGFsZjE2IF9fb3ZsZCBfX2NuZm4gZm1heChoYWxmMTYgeCwgaGFsZjE2IHkpOwpoYWxmMiBfX292bGQgX19jbmZuIGZtYXgoaGFsZjIgeCwgaGFsZiB5KTsKaGFsZjMgX19vdmxkIF9fY25mbiBmbWF4KGhhbGYzIHgsIGhhbGYgeSk7CmhhbGY0IF9fb3ZsZCBfX2NuZm4gZm1heChoYWxmNCB4LCBoYWxmIHkpOwpoYWxmOCBfX292bGQgX19jbmZuIGZtYXgoaGFsZjggeCwgaGFsZiB5KTsKaGFsZjE2IF9fb3ZsZCBfX2NuZm4gZm1heChoYWxmMTYgeCwgaGFsZiB5KTsKI2VuZGlmIC8vY2xfa2hyX2ZwMTYKCi8qKgogKiBSZXR1cm5zIHkgaWYgeSA8IHgsIG90aGVyd2lzZSBpdCByZXR1cm5zIHguIElmIG9uZQogKiBhcmd1bWVudCBpcyBhIE5hTiwgZm1pbigpIHJldHVybnMgdGhlIG90aGVyCiAqIGFyZ3VtZW50LiBJZiBib3RoIGFyZ3VtZW50cyBhcmUgTmFOcywgZm1pbigpCiAqIHJldHVybnMgYSBOYU4uCiAqLwpmbG9hdCBfX292bGQgX19jbmZuIGZtaW4oZmxvYXQgeCwgZmxvYXQgeSk7CmZsb2F0MiBfX292bGQgX19jbmZuIGZtaW4oZmxvYXQyIHgsIGZsb2F0MiB5KTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gZm1pbihmbG9hdDMgeCwgZmxvYXQzIHkpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBmbWluKGZsb2F0NCB4LCBmbG9hdDQgeSk7CmZsb2F0OCBfX292bGQgX19jbmZuIGZtaW4oZmxvYXQ4IHgsIGZsb2F0OCB5KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGZtaW4oZmxvYXQxNiB4LCBmbG9hdDE2IHkpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBmbWluKGZsb2F0MiB4LCBmbG9hdCB5KTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gZm1pbihmbG9hdDMgeCwgZmxvYXQgeSk7CmZsb2F0NCBfX292bGQgX19jbmZuIGZtaW4oZmxvYXQ0IHgsIGZsb2F0IHkpOwpmbG9hdDggX19vdmxkIF9fY25mbiBmbWluKGZsb2F0OCB4LCBmbG9hdCB5KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGZtaW4oZmxvYXQxNiB4LCBmbG9hdCB5KTsKI2lmZGVmIGNsX2tocl9mcDY0CmRvdWJsZSBfX292bGQgX19jbmZuIGZtaW4oZG91YmxlIHgsIGRvdWJsZSB5KTsKZG91YmxlMiBfX292bGQgX19jbmZuIGZtaW4oZG91YmxlMiB4LCBkb3VibGUyIHkpOwpkb3VibGUzIF9fb3ZsZCBfX2NuZm4gZm1pbihkb3VibGUzIHgsIGRvdWJsZTMgeSk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiBmbWluKGRvdWJsZTQgeCwgZG91YmxlNCB5KTsKZG91YmxlOCBfX292bGQgX19jbmZuIGZtaW4oZG91YmxlOCB4LCBkb3VibGU4IHkpOwpkb3VibGUxNiBfX292bGQgX19jbmZuIGZtaW4oZG91YmxlMTYgeCwgZG91YmxlMTYgeSk7CmRvdWJsZTIgX19vdmxkIF9fY25mbiBmbWluKGRvdWJsZTIgeCwgZG91YmxlIHkpOwpkb3VibGUzIF9fb3ZsZCBfX2NuZm4gZm1pbihkb3VibGUzIHgsIGRvdWJsZSB5KTsKZG91YmxlNCBfX292bGQgX19jbmZuIGZtaW4oZG91YmxlNCB4LCBkb3VibGUgeSk7CmRvdWJsZTggX19vdmxkIF9fY25mbiBmbWluKGRvdWJsZTggeCwgZG91YmxlIHkpOwpkb3VibGUxNiBfX292bGQgX19jbmZuIGZtaW4oZG91YmxlMTYgeCwgZG91YmxlIHkpOwojZW5kaWYgLy9jbF9raHJfZnA2NAojaWZkZWYgY2xfa2hyX2ZwMTYKaGFsZiBfX292bGQgX19jbmZuIGZtaW4oaGFsZiB4LCBoYWxmIHkpOwpoYWxmMiBfX292bGQgX19jbmZuIGZtaW4oaGFsZjIgeCwgaGFsZjIgeSk7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gZm1pbihoYWxmMyB4LCBoYWxmMyB5KTsKaGFsZjQgX19vdmxkIF9fY25mbiBmbWluKGhhbGY0IHgsIGhhbGY0IHkpOwpoYWxmOCBfX292bGQgX19jbmZuIGZtaW4oaGFsZjggeCwgaGFsZjggeSk7CmhhbGYxNiBfX292bGQgX19jbmZuIGZtaW4oaGFsZjE2IHgsIGhhbGYxNiB5KTsKaGFsZjIgX19vdmxkIF9fY25mbiBmbWluKGhhbGYyIHgsIGhhbGYgeSk7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gZm1pbihoYWxmMyB4LCBoYWxmIHkpOwpoYWxmNCBfX292bGQgX19jbmZuIGZtaW4oaGFsZjQgeCwgaGFsZiB5KTsKaGFsZjggX19vdmxkIF9fY25mbiBmbWluKGhhbGY4IHgsIGhhbGYgeSk7CmhhbGYxNiBfX292bGQgX19jbmZuIGZtaW4oaGFsZjE2IHgsIGhhbGYgeSk7CiNlbmRpZiAvL2NsX2tocl9mcDE2CgovKioKICogTW9kdWx1cy4gUmV0dXJucyB4IC0geSAqIHRydW5jICh4L3kpLgogKi8KZmxvYXQgX19vdmxkIF9fY25mbiBmbW9kKGZsb2F0IHgsIGZsb2F0IHkpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBmbW9kKGZsb2F0MiB4LCBmbG9hdDIgeSk7CmZsb2F0MyBfX292bGQgX19jbmZuIGZtb2QoZmxvYXQzIHgsIGZsb2F0MyB5KTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gZm1vZChmbG9hdDQgeCwgZmxvYXQ0IHkpOwpmbG9hdDggX19vdmxkIF9fY25mbiBmbW9kKGZsb2F0OCB4LCBmbG9hdDggeSk7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBmbW9kKGZsb2F0MTYgeCwgZmxvYXQxNiB5KTsKI2lmZGVmIGNsX2tocl9mcDY0CmRvdWJsZSBfX292bGQgX19jbmZuIGZtb2QoZG91YmxlIHgsIGRvdWJsZSB5KTsKZG91YmxlMiBfX292bGQgX19jbmZuIGZtb2QoZG91YmxlMiB4LCBkb3VibGUyIHkpOwpkb3VibGUzIF9fb3ZsZCBfX2NuZm4gZm1vZChkb3VibGUzIHgsIGRvdWJsZTMgeSk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiBmbW9kKGRvdWJsZTQgeCwgZG91YmxlNCB5KTsKZG91YmxlOCBfX292bGQgX19jbmZuIGZtb2QoZG91YmxlOCB4LCBkb3VibGU4IHkpOwpkb3VibGUxNiBfX292bGQgX19jbmZuIGZtb2QoZG91YmxlMTYgeCwgZG91YmxlMTYgeSk7CiNlbmRpZiAvL2NsX2tocl9mcDY0CiNpZmRlZiBjbF9raHJfZnAxNgpoYWxmIF9fb3ZsZCBfX2NuZm4gZm1vZChoYWxmIHgsIGhhbGYgeSk7CmhhbGYyIF9fb3ZsZCBfX2NuZm4gZm1vZChoYWxmMiB4LCBoYWxmMiB5KTsKaGFsZjMgX19vdmxkIF9fY25mbiBmbW9kKGhhbGYzIHgsIGhhbGYzIHkpOwpoYWxmNCBfX292bGQgX19jbmZuIGZtb2QoaGFsZjQgeCwgaGFsZjQgeSk7CmhhbGY4IF9fb3ZsZCBfX2NuZm4gZm1vZChoYWxmOCB4LCBoYWxmOCB5KTsKaGFsZjE2IF9fb3ZsZCBfX2NuZm4gZm1vZChoYWxmMTYgeCwgaGFsZjE2IHkpOwojZW5kaWYgLy9jbF9raHJfZnAxNgoKLyoqCiAqIFJldHVybnMgZm1pbih4IC0gZmxvb3IgKHgpLCAweDEuZmZmZmZlcC0xZiApLgogKiBmbG9vcih4KSBpcyByZXR1cm5lZCBpbiBpcHRyLgogKi8KI2lmIGRlZmluZWQoX19vcGVuY2xfY19nZW5lcmljX2FkZHJlc3Nfc3BhY2UpCmZsb2F0IF9fb3ZsZCBmcmFjdChmbG9hdCB4LCBmbG9hdCAqaXB0cik7CmZsb2F0MiBfX292bGQgZnJhY3QoZmxvYXQyIHgsIGZsb2F0MiAqaXB0cik7CmZsb2F0MyBfX292bGQgZnJhY3QoZmxvYXQzIHgsIGZsb2F0MyAqaXB0cik7CmZsb2F0NCBfX292bGQgZnJhY3QoZmxvYXQ0IHgsIGZsb2F0NCAqaXB0cik7CmZsb2F0OCBfX292bGQgZnJhY3QoZmxvYXQ4IHgsIGZsb2F0OCAqaXB0cik7CmZsb2F0MTYgX19vdmxkIGZyYWN0KGZsb2F0MTYgeCwgZmxvYXQxNiAqaXB0cik7CiNpZmRlZiBjbF9raHJfZnA2NApkb3VibGUgX19vdmxkIGZyYWN0KGRvdWJsZSB4LCBkb3VibGUgKmlwdHIpOwpkb3VibGUyIF9fb3ZsZCBmcmFjdChkb3VibGUyIHgsIGRvdWJsZTIgKmlwdHIpOwpkb3VibGUzIF9fb3ZsZCBmcmFjdChkb3VibGUzIHgsIGRvdWJsZTMgKmlwdHIpOwpkb3VibGU0IF9fb3ZsZCBmcmFjdChkb3VibGU0IHgsIGRvdWJsZTQgKmlwdHIpOwpkb3VibGU4IF9fb3ZsZCBmcmFjdChkb3VibGU4IHgsIGRvdWJsZTggKmlwdHIpOwpkb3VibGUxNiBfX292bGQgZnJhY3QoZG91YmxlMTYgeCwgZG91YmxlMTYgKmlwdHIpOwojZW5kaWYgLy9jbF9raHJfZnA2NAojaWZkZWYgY2xfa2hyX2ZwMTYKaGFsZiBfX292bGQgZnJhY3QoaGFsZiB4LCBoYWxmICppcHRyKTsKaGFsZjIgX19vdmxkIGZyYWN0KGhhbGYyIHgsIGhhbGYyICppcHRyKTsKaGFsZjMgX19vdmxkIGZyYWN0KGhhbGYzIHgsIGhhbGYzICppcHRyKTsKaGFsZjQgX19vdmxkIGZyYWN0KGhhbGY0IHgsIGhhbGY0ICppcHRyKTsKaGFsZjggX19vdmxkIGZyYWN0KGhhbGY4IHgsIGhhbGY4ICppcHRyKTsKaGFsZjE2IF9fb3ZsZCBmcmFjdChoYWxmMTYgeCwgaGFsZjE2ICppcHRyKTsKI2VuZGlmIC8vY2xfa2hyX2ZwMTYKI2Vsc2UKZmxvYXQgX19vdmxkIGZyYWN0KGZsb2F0IHgsIF9fZ2xvYmFsIGZsb2F0ICppcHRyKTsKZmxvYXQyIF9fb3ZsZCBmcmFjdChmbG9hdDIgeCwgX19nbG9iYWwgZmxvYXQyICppcHRyKTsKZmxvYXQzIF9fb3ZsZCBmcmFjdChmbG9hdDMgeCwgX19nbG9iYWwgZmxvYXQzICppcHRyKTsKZmxvYXQ0IF9fb3ZsZCBmcmFjdChmbG9hdDQgeCwgX19nbG9iYWwgZmxvYXQ0ICppcHRyKTsKZmxvYXQ4IF9fb3ZsZCBmcmFjdChmbG9hdDggeCwgX19nbG9iYWwgZmxvYXQ4ICppcHRyKTsKZmxvYXQxNiBfX292bGQgZnJhY3QoZmxvYXQxNiB4LCBfX2dsb2JhbCBmbG9hdDE2ICppcHRyKTsKZmxvYXQgX19vdmxkIGZyYWN0KGZsb2F0IHgsIF9fbG9jYWwgZmxvYXQgKmlwdHIpOwpmbG9hdDIgX19vdmxkIGZyYWN0KGZsb2F0MiB4LCBfX2xvY2FsIGZsb2F0MiAqaXB0cik7CmZsb2F0MyBfX292bGQgZnJhY3QoZmxvYXQzIHgsIF9fbG9jYWwgZmxvYXQzICppcHRyKTsKZmxvYXQ0IF9fb3ZsZCBmcmFjdChmbG9hdDQgeCwgX19sb2NhbCBmbG9hdDQgKmlwdHIpOwpmbG9hdDggX19vdmxkIGZyYWN0KGZsb2F0OCB4LCBfX2xvY2FsIGZsb2F0OCAqaXB0cik7CmZsb2F0MTYgX19vdmxkIGZyYWN0KGZsb2F0MTYgeCwgX19sb2NhbCBmbG9hdDE2ICppcHRyKTsKZmxvYXQgX19vdmxkIGZyYWN0KGZsb2F0IHgsIF9fcHJpdmF0ZSBmbG9hdCAqaXB0cik7CmZsb2F0MiBfX292bGQgZnJhY3QoZmxvYXQyIHgsIF9fcHJpdmF0ZSBmbG9hdDIgKmlwdHIpOwpmbG9hdDMgX19vdmxkIGZyYWN0KGZsb2F0MyB4LCBfX3ByaXZhdGUgZmxvYXQzICppcHRyKTsKZmxvYXQ0IF9fb3ZsZCBmcmFjdChmbG9hdDQgeCwgX19wcml2YXRlIGZsb2F0NCAqaXB0cik7CmZsb2F0OCBfX292bGQgZnJhY3QoZmxvYXQ4IHgsIF9fcHJpdmF0ZSBmbG9hdDggKmlwdHIpOwpmbG9hdDE2IF9fb3ZsZCBmcmFjdChmbG9hdDE2IHgsIF9fcHJpdmF0ZSBmbG9hdDE2ICppcHRyKTsKI2lmZGVmIGNsX2tocl9mcDY0CmRvdWJsZSBfX292bGQgZnJhY3QoZG91YmxlIHgsIF9fZ2xvYmFsIGRvdWJsZSAqaXB0cik7CmRvdWJsZTIgX19vdmxkIGZyYWN0KGRvdWJsZTIgeCwgX19nbG9iYWwgZG91YmxlMiAqaXB0cik7CmRvdWJsZTMgX19vdmxkIGZyYWN0KGRvdWJsZTMgeCwgX19nbG9iYWwgZG91YmxlMyAqaXB0cik7CmRvdWJsZTQgX19vdmxkIGZyYWN0KGRvdWJsZTQgeCwgX19nbG9iYWwgZG91YmxlNCAqaXB0cik7CmRvdWJsZTggX19vdmxkIGZyYWN0KGRvdWJsZTggeCwgX19nbG9iYWwgZG91YmxlOCAqaXB0cik7CmRvdWJsZTE2IF9fb3ZsZCBmcmFjdChkb3VibGUxNiB4LCBfX2dsb2JhbCBkb3VibGUxNiAqaXB0cik7CmRvdWJsZSBfX292bGQgZnJhY3QoZG91YmxlIHgsIF9fbG9jYWwgZG91YmxlICppcHRyKTsKZG91YmxlMiBfX292bGQgZnJhY3QoZG91YmxlMiB4LCBfX2xvY2FsIGRvdWJsZTIgKmlwdHIpOwpkb3VibGUzIF9fb3ZsZCBmcmFjdChkb3VibGUzIHgsIF9fbG9jYWwgZG91YmxlMyAqaXB0cik7CmRvdWJsZTQgX19vdmxkIGZyYWN0KGRvdWJsZTQgeCwgX19sb2NhbCBkb3VibGU0ICppcHRyKTsKZG91YmxlOCBfX292bGQgZnJhY3QoZG91YmxlOCB4LCBfX2xvY2FsIGRvdWJsZTggKmlwdHIpOwpkb3VibGUxNiBfX292bGQgZnJhY3QoZG91YmxlMTYgeCwgX19sb2NhbCBkb3VibGUxNiAqaXB0cik7CmRvdWJsZSBfX292bGQgZnJhY3QoZG91YmxlIHgsIF9fcHJpdmF0ZSBkb3VibGUgKmlwdHIpOwpkb3VibGUyIF9fb3ZsZCBmcmFjdChkb3VibGUyIHgsIF9fcHJpdmF0ZSBkb3VibGUyICppcHRyKTsKZG91YmxlMyBfX292bGQgZnJhY3QoZG91YmxlMyB4LCBfX3ByaXZhdGUgZG91YmxlMyAqaXB0cik7CmRvdWJsZTQgX19vdmxkIGZyYWN0KGRvdWJsZTQgeCwgX19wcml2YXRlIGRvdWJsZTQgKmlwdHIpOwpkb3VibGU4IF9fb3ZsZCBmcmFjdChkb3VibGU4IHgsIF9fcHJpdmF0ZSBkb3VibGU4ICppcHRyKTsKZG91YmxlMTYgX19vdmxkIGZyYWN0KGRvdWJsZTE2IHgsIF9fcHJpdmF0ZSBkb3VibGUxNiAqaXB0cik7CiNlbmRpZiAvL2NsX2tocl9mcDY0CiNpZmRlZiBjbF9raHJfZnAxNgpoYWxmIF9fb3ZsZCBmcmFjdChoYWxmIHgsIF9fZ2xvYmFsIGhhbGYgKmlwdHIpOwpoYWxmMiBfX292bGQgZnJhY3QoaGFsZjIgeCwgX19nbG9iYWwgaGFsZjIgKmlwdHIpOwpoYWxmMyBfX292bGQgZnJhY3QoaGFsZjMgeCwgX19nbG9iYWwgaGFsZjMgKmlwdHIpOwpoYWxmNCBfX292bGQgZnJhY3QoaGFsZjQgeCwgX19nbG9iYWwgaGFsZjQgKmlwdHIpOwpoYWxmOCBfX292bGQgZnJhY3QoaGFsZjggeCwgX19nbG9iYWwgaGFsZjggKmlwdHIpOwpoYWxmMTYgX19vdmxkIGZyYWN0KGhhbGYxNiB4LCBfX2dsb2JhbCBoYWxmMTYgKmlwdHIpOwpoYWxmIF9fb3ZsZCBmcmFjdChoYWxmIHgsIF9fbG9jYWwgaGFsZiAqaXB0cik7CmhhbGYyIF9fb3ZsZCBmcmFjdChoYWxmMiB4LCBfX2xvY2FsIGhhbGYyICppcHRyKTsKaGFsZjMgX19vdmxkIGZyYWN0KGhhbGYzIHgsIF9fbG9jYWwgaGFsZjMgKmlwdHIpOwpoYWxmNCBfX292bGQgZnJhY3QoaGFsZjQgeCwgX19sb2NhbCBoYWxmNCAqaXB0cik7CmhhbGY4IF9fb3ZsZCBmcmFjdChoYWxmOCB4LCBfX2xvY2FsIGhhbGY4ICppcHRyKTsKaGFsZjE2IF9fb3ZsZCBmcmFjdChoYWxmMTYgeCwgX19sb2NhbCBoYWxmMTYgKmlwdHIpOwpoYWxmIF9fb3ZsZCBmcmFjdChoYWxmIHgsIF9fcHJpdmF0ZSBoYWxmICppcHRyKTsKaGFsZjIgX19vdmxkIGZyYWN0KGhhbGYyIHgsIF9fcHJpdmF0ZSBoYWxmMiAqaXB0cik7CmhhbGYzIF9fb3ZsZCBmcmFjdChoYWxmMyB4LCBfX3ByaXZhdGUgaGFsZjMgKmlwdHIpOwpoYWxmNCBfX292bGQgZnJhY3QoaGFsZjQgeCwgX19wcml2YXRlIGhhbGY0ICppcHRyKTsKaGFsZjggX19vdmxkIGZyYWN0KGhhbGY4IHgsIF9fcHJpdmF0ZSBoYWxmOCAqaXB0cik7CmhhbGYxNiBfX292bGQgZnJhY3QoaGFsZjE2IHgsIF9fcHJpdmF0ZSBoYWxmMTYgKmlwdHIpOwojZW5kaWYgLy9jbF9raHJfZnAxNgojZW5kaWYgLy9kZWZpbmVkKF9fb3BlbmNsX2NfZ2VuZXJpY19hZGRyZXNzX3NwYWNlKQoKLyoqCiAqIEV4dHJhY3QgbWFudGlzc2EgYW5kIGV4cG9uZW50IGZyb20geC4gRm9yIGVhY2gKICogY29tcG9uZW50IHRoZSBtYW50aXNzYSByZXR1cm5lZCBpcyBhIGZsb2F0IHdpdGgKICogbWFnbml0dWRlIGluIHRoZSBpbnRlcnZhbCBbMS8yLCAxKSBvciAwLiBFYWNoCiAqIGNvbXBvbmVudCBvZiB4IGVxdWFscyBtYW50aXNzYSByZXR1cm5lZCAqIDJeZXhwLgogKi8KI2lmIGRlZmluZWQoX19vcGVuY2xfY19nZW5lcmljX2FkZHJlc3Nfc3BhY2UpCmZsb2F0IF9fb3ZsZCBmcmV4cChmbG9hdCB4LCBpbnQgKmV4cCk7CmZsb2F0MiBfX292bGQgZnJleHAoZmxvYXQyIHgsIGludDIgKmV4cCk7CmZsb2F0MyBfX292bGQgZnJleHAoZmxvYXQzIHgsIGludDMgKmV4cCk7CmZsb2F0NCBfX292bGQgZnJleHAoZmxvYXQ0IHgsIGludDQgKmV4cCk7CmZsb2F0OCBfX292bGQgZnJleHAoZmxvYXQ4IHgsIGludDggKmV4cCk7CmZsb2F0MTYgX19vdmxkIGZyZXhwKGZsb2F0MTYgeCwgaW50MTYgKmV4cCk7CiNpZmRlZiBjbF9raHJfZnA2NApkb3VibGUgX19vdmxkIGZyZXhwKGRvdWJsZSB4LCBpbnQgKmV4cCk7CmRvdWJsZTIgX19vdmxkIGZyZXhwKGRvdWJsZTIgeCwgaW50MiAqZXhwKTsKZG91YmxlMyBfX292bGQgZnJleHAoZG91YmxlMyB4LCBpbnQzICpleHApOwpkb3VibGU0IF9fb3ZsZCBmcmV4cChkb3VibGU0IHgsIGludDQgKmV4cCk7CmRvdWJsZTggX19vdmxkIGZyZXhwKGRvdWJsZTggeCwgaW50OCAqZXhwKTsKZG91YmxlMTYgX19vdmxkIGZyZXhwKGRvdWJsZTE2IHgsIGludDE2ICpleHApOwojZW5kaWYgLy9jbF9raHJfZnA2NAojaWZkZWYgY2xfa2hyX2ZwMTYKaGFsZiBfX292bGQgZnJleHAoaGFsZiB4LCBpbnQgKmV4cCk7CmhhbGYyIF9fb3ZsZCBmcmV4cChoYWxmMiB4LCBpbnQyICpleHApOwpoYWxmMyBfX292bGQgZnJleHAoaGFsZjMgeCwgaW50MyAqZXhwKTsKaGFsZjQgX19vdmxkIGZyZXhwKGhhbGY0IHgsIGludDQgKmV4cCk7CmhhbGY4IF9fb3ZsZCBmcmV4cChoYWxmOCB4LCBpbnQ4ICpleHApOwpoYWxmMTYgX19vdmxkIGZyZXhwKGhhbGYxNiB4LCBpbnQxNiAqZXhwKTsKI2VuZGlmIC8vY2xfa2hyX2ZwMTYKI2Vsc2UKZmxvYXQgX19vdmxkIGZyZXhwKGZsb2F0IHgsIF9fZ2xvYmFsIGludCAqZXhwKTsKZmxvYXQyIF9fb3ZsZCBmcmV4cChmbG9hdDIgeCwgX19nbG9iYWwgaW50MiAqZXhwKTsKZmxvYXQzIF9fb3ZsZCBmcmV4cChmbG9hdDMgeCwgX19nbG9iYWwgaW50MyAqZXhwKTsKZmxvYXQ0IF9fb3ZsZCBmcmV4cChmbG9hdDQgeCwgX19nbG9iYWwgaW50NCAqZXhwKTsKZmxvYXQ4IF9fb3ZsZCBmcmV4cChmbG9hdDggeCwgX19nbG9iYWwgaW50OCAqZXhwKTsKZmxvYXQxNiBfX292bGQgZnJleHAoZmxvYXQxNiB4LCBfX2dsb2JhbCBpbnQxNiAqZXhwKTsKZmxvYXQgX19vdmxkIGZyZXhwKGZsb2F0IHgsIF9fbG9jYWwgaW50ICpleHApOwpmbG9hdDIgX19vdmxkIGZyZXhwKGZsb2F0MiB4LCBfX2xvY2FsIGludDIgKmV4cCk7CmZsb2F0MyBfX292bGQgZnJleHAoZmxvYXQzIHgsIF9fbG9jYWwgaW50MyAqZXhwKTsKZmxvYXQ0IF9fb3ZsZCBmcmV4cChmbG9hdDQgeCwgX19sb2NhbCBpbnQ0ICpleHApOwpmbG9hdDggX19vdmxkIGZyZXhwKGZsb2F0OCB4LCBfX2xvY2FsIGludDggKmV4cCk7CmZsb2F0MTYgX19vdmxkIGZyZXhwKGZsb2F0MTYgeCwgX19sb2NhbCBpbnQxNiAqZXhwKTsKZmxvYXQgX19vdmxkIGZyZXhwKGZsb2F0IHgsIF9fcHJpdmF0ZSBpbnQgKmV4cCk7CmZsb2F0MiBfX292bGQgZnJleHAoZmxvYXQyIHgsIF9fcHJpdmF0ZSBpbnQyICpleHApOwpmbG9hdDMgX19vdmxkIGZyZXhwKGZsb2F0MyB4LCBfX3ByaXZhdGUgaW50MyAqZXhwKTsKZmxvYXQ0IF9fb3ZsZCBmcmV4cChmbG9hdDQgeCwgX19wcml2YXRlIGludDQgKmV4cCk7CmZsb2F0OCBfX292bGQgZnJleHAoZmxvYXQ4IHgsIF9fcHJpdmF0ZSBpbnQ4ICpleHApOwpmbG9hdDE2IF9fb3ZsZCBmcmV4cChmbG9hdDE2IHgsIF9fcHJpdmF0ZSBpbnQxNiAqZXhwKTsKI2lmZGVmIGNsX2tocl9mcDY0CmRvdWJsZSBfX292bGQgZnJleHAoZG91YmxlIHgsIF9fZ2xvYmFsIGludCAqZXhwKTsKZG91YmxlMiBfX292bGQgZnJleHAoZG91YmxlMiB4LCBfX2dsb2JhbCBpbnQyICpleHApOwpkb3VibGUzIF9fb3ZsZCBmcmV4cChkb3VibGUzIHgsIF9fZ2xvYmFsIGludDMgKmV4cCk7CmRvdWJsZTQgX19vdmxkIGZyZXhwKGRvdWJsZTQgeCwgX19nbG9iYWwgaW50NCAqZXhwKTsKZG91YmxlOCBfX292bGQgZnJleHAoZG91YmxlOCB4LCBfX2dsb2JhbCBpbnQ4ICpleHApOwpkb3VibGUxNiBfX292bGQgZnJleHAoZG91YmxlMTYgeCwgX19nbG9iYWwgaW50MTYgKmV4cCk7CmRvdWJsZSBfX292bGQgZnJleHAoZG91YmxlIHgsIF9fbG9jYWwgaW50ICpleHApOwpkb3VibGUyIF9fb3ZsZCBmcmV4cChkb3VibGUyIHgsIF9fbG9jYWwgaW50MiAqZXhwKTsKZG91YmxlMyBfX292bGQgZnJleHAoZG91YmxlMyB4LCBfX2xvY2FsIGludDMgKmV4cCk7CmRvdWJsZTQgX19vdmxkIGZyZXhwKGRvdWJsZTQgeCwgX19sb2NhbCBpbnQ0ICpleHApOwpkb3VibGU4IF9fb3ZsZCBmcmV4cChkb3VibGU4IHgsIF9fbG9jYWwgaW50OCAqZXhwKTsKZG91YmxlMTYgX19vdmxkIGZyZXhwKGRvdWJsZTE2IHgsIF9fbG9jYWwgaW50MTYgKmV4cCk7CmRvdWJsZSBfX292bGQgZnJleHAoZG91YmxlIHgsIF9fcHJpdmF0ZSBpbnQgKmV4cCk7CmRvdWJsZTIgX19vdmxkIGZyZXhwKGRvdWJsZTIgeCwgX19wcml2YXRlIGludDIgKmV4cCk7CmRvdWJsZTMgX19vdmxkIGZyZXhwKGRvdWJsZTMgeCwgX19wcml2YXRlIGludDMgKmV4cCk7CmRvdWJsZTQgX19vdmxkIGZyZXhwKGRvdWJsZTQgeCwgX19wcml2YXRlIGludDQgKmV4cCk7CmRvdWJsZTggX19vdmxkIGZyZXhwKGRvdWJsZTggeCwgX19wcml2YXRlIGludDggKmV4cCk7CmRvdWJsZTE2IF9fb3ZsZCBmcmV4cChkb3VibGUxNiB4LCBfX3ByaXZhdGUgaW50MTYgKmV4cCk7CiNlbmRpZiAvL2NsX2tocl9mcDY0CiNpZmRlZiBjbF9raHJfZnAxNgpoYWxmIF9fb3ZsZCBmcmV4cChoYWxmIHgsIF9fZ2xvYmFsIGludCAqZXhwKTsKaGFsZjIgX19vdmxkIGZyZXhwKGhhbGYyIHgsIF9fZ2xvYmFsIGludDIgKmV4cCk7CmhhbGYzIF9fb3ZsZCBmcmV4cChoYWxmMyB4LCBfX2dsb2JhbCBpbnQzICpleHApOwpoYWxmNCBfX292bGQgZnJleHAoaGFsZjQgeCwgX19nbG9iYWwgaW50NCAqZXhwKTsKaGFsZjggX19vdmxkIGZyZXhwKGhhbGY4IHgsIF9fZ2xvYmFsIGludDggKmV4cCk7CmhhbGYxNiBfX292bGQgZnJleHAoaGFsZjE2IHgsIF9fZ2xvYmFsIGludDE2ICpleHApOwpoYWxmIF9fb3ZsZCBmcmV4cChoYWxmIHgsIF9fbG9jYWwgaW50ICpleHApOwpoYWxmMiBfX292bGQgZnJleHAoaGFsZjIgeCwgX19sb2NhbCBpbnQyICpleHApOwpoYWxmMyBfX292bGQgZnJleHAoaGFsZjMgeCwgX19sb2NhbCBpbnQzICpleHApOwpoYWxmNCBfX292bGQgZnJleHAoaGFsZjQgeCwgX19sb2NhbCBpbnQ0ICpleHApOwpoYWxmOCBfX292bGQgZnJleHAoaGFsZjggeCwgX19sb2NhbCBpbnQ4ICpleHApOwpoYWxmMTYgX19vdmxkIGZyZXhwKGhhbGYxNiB4LCBfX2xvY2FsIGludDE2ICpleHApOwpoYWxmIF9fb3ZsZCBmcmV4cChoYWxmIHgsIF9fcHJpdmF0ZSBpbnQgKmV4cCk7CmhhbGYyIF9fb3ZsZCBmcmV4cChoYWxmMiB4LCBfX3ByaXZhdGUgaW50MiAqZXhwKTsKaGFsZjMgX19vdmxkIGZyZXhwKGhhbGYzIHgsIF9fcHJpdmF0ZSBpbnQzICpleHApOwpoYWxmNCBfX292bGQgZnJleHAoaGFsZjQgeCwgX19wcml2YXRlIGludDQgKmV4cCk7CmhhbGY4IF9fb3ZsZCBmcmV4cChoYWxmOCB4LCBfX3ByaXZhdGUgaW50OCAqZXhwKTsKaGFsZjE2IF9fb3ZsZCBmcmV4cChoYWxmMTYgeCwgX19wcml2YXRlIGludDE2ICpleHApOwojZW5kaWYgLy9jbF9raHJfZnAxNgojZW5kaWYgLy9kZWZpbmVkKF9fb3BlbmNsX2NfZ2VuZXJpY19hZGRyZXNzX3NwYWNlKQoKLyoqCiAqIENvbXB1dGUgdGhlIHZhbHVlIG9mIHRoZSBzcXVhcmUgcm9vdCBvZiB4XjIgKyB5XjIKICogd2l0aG91dCB1bmR1ZSBvdmVyZmxvdyBvciB1bmRlcmZsb3cuCiAqLwpmbG9hdCBfX292bGQgX19jbmZuIGh5cG90KGZsb2F0IHgsIGZsb2F0IHkpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBoeXBvdChmbG9hdDIgeCwgZmxvYXQyIHkpOwpmbG9hdDMgX19vdmxkIF9fY25mbiBoeXBvdChmbG9hdDMgeCwgZmxvYXQzIHkpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBoeXBvdChmbG9hdDQgeCwgZmxvYXQ0IHkpOwpmbG9hdDggX19vdmxkIF9fY25mbiBoeXBvdChmbG9hdDggeCwgZmxvYXQ4IHkpOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gaHlwb3QoZmxvYXQxNiB4LCBmbG9hdDE2IHkpOwojaWZkZWYgY2xfa2hyX2ZwNjQKZG91YmxlIF9fb3ZsZCBfX2NuZm4gaHlwb3QoZG91YmxlIHgsIGRvdWJsZSB5KTsKZG91YmxlMiBfX292bGQgX19jbmZuIGh5cG90KGRvdWJsZTIgeCwgZG91YmxlMiB5KTsKZG91YmxlMyBfX292bGQgX19jbmZuIGh5cG90KGRvdWJsZTMgeCwgZG91YmxlMyB5KTsKZG91YmxlNCBfX292bGQgX19jbmZuIGh5cG90KGRvdWJsZTQgeCwgZG91YmxlNCB5KTsKZG91YmxlOCBfX292bGQgX19jbmZuIGh5cG90KGRvdWJsZTggeCwgZG91YmxlOCB5KTsKZG91YmxlMTYgX19vdmxkIF9fY25mbiBoeXBvdChkb3VibGUxNiB4LCBkb3VibGUxNiB5KTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKI2lmZGVmIGNsX2tocl9mcDE2CmhhbGYgX19vdmxkIF9fY25mbiBoeXBvdChoYWxmIHgsIGhhbGYgeSk7CmhhbGYyIF9fb3ZsZCBfX2NuZm4gaHlwb3QoaGFsZjIgeCwgaGFsZjIgeSk7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gaHlwb3QoaGFsZjMgeCwgaGFsZjMgeSk7CmhhbGY0IF9fb3ZsZCBfX2NuZm4gaHlwb3QoaGFsZjQgeCwgaGFsZjQgeSk7CmhhbGY4IF9fb3ZsZCBfX2NuZm4gaHlwb3QoaGFsZjggeCwgaGFsZjggeSk7CmhhbGYxNiBfX292bGQgX19jbmZuIGh5cG90KGhhbGYxNiB4LCBoYWxmMTYgeSk7CiNlbmRpZiAvL2NsX2tocl9mcDE2CgovKioKICogUmV0dXJuIHRoZSBleHBvbmVudCBhcyBhbiBpbnRlZ2VyIHZhbHVlLgogKi8KaW50IF9fb3ZsZCBfX2NuZm4gaWxvZ2IoZmxvYXQgeCk7CmludDIgX19vdmxkIF9fY25mbiBpbG9nYihmbG9hdDIgeCk7CmludDMgX19vdmxkIF9fY25mbiBpbG9nYihmbG9hdDMgeCk7CmludDQgX19vdmxkIF9fY25mbiBpbG9nYihmbG9hdDQgeCk7CmludDggX19vdmxkIF9fY25mbiBpbG9nYihmbG9hdDggeCk7CmludDE2IF9fb3ZsZCBfX2NuZm4gaWxvZ2IoZmxvYXQxNiB4KTsKI2lmZGVmIGNsX2tocl9mcDY0CmludCBfX292bGQgX19jbmZuIGlsb2diKGRvdWJsZSB4KTsKaW50MiBfX292bGQgX19jbmZuIGlsb2diKGRvdWJsZTIgeCk7CmludDMgX19vdmxkIF9fY25mbiBpbG9nYihkb3VibGUzIHgpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gaWxvZ2IoZG91YmxlNCB4KTsKaW50OCBfX292bGQgX19jbmZuIGlsb2diKGRvdWJsZTggeCk7CmludDE2IF9fb3ZsZCBfX2NuZm4gaWxvZ2IoZG91YmxlMTYgeCk7CiNlbmRpZiAvL2NsX2tocl9mcDY0CiNpZmRlZiBjbF9raHJfZnAxNgppbnQgX19vdmxkIF9fY25mbiBpbG9nYihoYWxmIHgpOwppbnQyIF9fb3ZsZCBfX2NuZm4gaWxvZ2IoaGFsZjIgeCk7CmludDMgX19vdmxkIF9fY25mbiBpbG9nYihoYWxmMyB4KTsKaW50NCBfX292bGQgX19jbmZuIGlsb2diKGhhbGY0IHgpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gaWxvZ2IoaGFsZjggeCk7CmludDE2IF9fb3ZsZCBfX2NuZm4gaWxvZ2IoaGFsZjE2IHgpOwojZW5kaWYgLy9jbF9raHJfZnAxNgoKLyoqCiAqIE11bHRpcGx5IHggYnkgMiB0byB0aGUgcG93ZXIgbi4KICovCmZsb2F0IF9fb3ZsZCBfX2NuZm4gbGRleHAoZmxvYXQgeCwgaW50IG4pOwpmbG9hdDIgX19vdmxkIF9fY25mbiBsZGV4cChmbG9hdDIgeCwgaW50MiBuKTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gbGRleHAoZmxvYXQzIHgsIGludDMgbik7CmZsb2F0NCBfX292bGQgX19jbmZuIGxkZXhwKGZsb2F0NCB4LCBpbnQ0IG4pOwpmbG9hdDggX19vdmxkIF9fY25mbiBsZGV4cChmbG9hdDggeCwgaW50OCBuKTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGxkZXhwKGZsb2F0MTYgeCwgaW50MTYgbik7CmZsb2F0MiBfX292bGQgX19jbmZuIGxkZXhwKGZsb2F0MiB4LCBpbnQgbik7CmZsb2F0MyBfX292bGQgX19jbmZuIGxkZXhwKGZsb2F0MyB4LCBpbnQgbik7CmZsb2F0NCBfX292bGQgX19jbmZuIGxkZXhwKGZsb2F0NCB4LCBpbnQgbik7CmZsb2F0OCBfX292bGQgX19jbmZuIGxkZXhwKGZsb2F0OCB4LCBpbnQgbik7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBsZGV4cChmbG9hdDE2IHgsIGludCBuKTsKI2lmZGVmIGNsX2tocl9mcDY0CmRvdWJsZSBfX292bGQgX19jbmZuIGxkZXhwKGRvdWJsZSB4LCBpbnQgbik7CmRvdWJsZTIgX19vdmxkIF9fY25mbiBsZGV4cChkb3VibGUyIHgsIGludDIgbik7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBsZGV4cChkb3VibGUzIHgsIGludDMgbik7CmRvdWJsZTQgX19vdmxkIF9fY25mbiBsZGV4cChkb3VibGU0IHgsIGludDQgbik7CmRvdWJsZTggX19vdmxkIF9fY25mbiBsZGV4cChkb3VibGU4IHgsIGludDggbik7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gbGRleHAoZG91YmxlMTYgeCwgaW50MTYgbik7CmRvdWJsZTIgX19vdmxkIF9fY25mbiBsZGV4cChkb3VibGUyIHgsIGludCBuKTsKZG91YmxlMyBfX292bGQgX19jbmZuIGxkZXhwKGRvdWJsZTMgeCwgaW50IG4pOwpkb3VibGU0IF9fb3ZsZCBfX2NuZm4gbGRleHAoZG91YmxlNCB4LCBpbnQgbik7CmRvdWJsZTggX19vdmxkIF9fY25mbiBsZGV4cChkb3VibGU4IHgsIGludCBuKTsKZG91YmxlMTYgX19vdmxkIF9fY25mbiBsZGV4cChkb3VibGUxNiB4LCBpbnQgbik7CiNlbmRpZiAvL2NsX2tocl9mcDY0CiNpZmRlZiBjbF9raHJfZnAxNgpoYWxmIF9fb3ZsZCBfX2NuZm4gbGRleHAoaGFsZiB4LCBpbnQgbik7CmhhbGYyIF9fb3ZsZCBfX2NuZm4gbGRleHAoaGFsZjIgeCwgaW50MiBuKTsKaGFsZjMgX19vdmxkIF9fY25mbiBsZGV4cChoYWxmMyB4LCBpbnQzIG4pOwpoYWxmNCBfX292bGQgX19jbmZuIGxkZXhwKGhhbGY0IHgsIGludDQgbik7CmhhbGY4IF9fb3ZsZCBfX2NuZm4gbGRleHAoaGFsZjggeCwgaW50OCBuKTsKaGFsZjE2IF9fb3ZsZCBfX2NuZm4gbGRleHAoaGFsZjE2IHgsIGludDE2IG4pOwpoYWxmMiBfX292bGQgX19jbmZuIGxkZXhwKGhhbGYyIHgsIGludCBuKTsKaGFsZjMgX19vdmxkIF9fY25mbiBsZGV4cChoYWxmMyB4LCBpbnQgbik7CmhhbGY0IF9fb3ZsZCBfX2NuZm4gbGRleHAoaGFsZjQgeCwgaW50IG4pOwpoYWxmOCBfX292bGQgX19jbmZuIGxkZXhwKGhhbGY4IHgsIGludCBuKTsKaGFsZjE2IF9fb3ZsZCBfX2NuZm4gbGRleHAoaGFsZjE2IHgsIGludCBuKTsKI2VuZGlmIC8vY2xfa2hyX2ZwMTYKCi8qKgogKiBMb2cgZ2FtbWEgZnVuY3Rpb24uIFJldHVybnMgdGhlIG5hdHVyYWwKICogbG9nYXJpdGhtIG9mIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgZ2FtbWEKICogZnVuY3Rpb24uIFRoZSBzaWduIG9mIHRoZSBnYW1tYSBmdW5jdGlvbiBpcwogKiByZXR1cm5lZCBpbiB0aGUgc2lnbnAgYXJndW1lbnQgb2YgbGdhbW1hX3IuCiAqLwpmbG9hdCBfX292bGQgX19jbmZuIGxnYW1tYShmbG9hdCB4KTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gbGdhbW1hKGZsb2F0MiB4KTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gbGdhbW1hKGZsb2F0MyB4KTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gbGdhbW1hKGZsb2F0NCB4KTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gbGdhbW1hKGZsb2F0OCB4KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGxnYW1tYShmbG9hdDE2IHgpOwojaWZkZWYgY2xfa2hyX2ZwNjQKZG91YmxlIF9fb3ZsZCBfX2NuZm4gbGdhbW1hKGRvdWJsZSB4KTsKZG91YmxlMiBfX292bGQgX19jbmZuIGxnYW1tYShkb3VibGUyIHgpOwpkb3VibGUzIF9fb3ZsZCBfX2NuZm4gbGdhbW1hKGRvdWJsZTMgeCk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiBsZ2FtbWEoZG91YmxlNCB4KTsKZG91YmxlOCBfX292bGQgX19jbmZuIGxnYW1tYShkb3VibGU4IHgpOwpkb3VibGUxNiBfX292bGQgX19jbmZuIGxnYW1tYShkb3VibGUxNiB4KTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKI2lmZGVmIGNsX2tocl9mcDE2CmhhbGYgX19vdmxkIF9fY25mbiBsZ2FtbWEoaGFsZiB4KTsKaGFsZjIgX19vdmxkIF9fY25mbiBsZ2FtbWEoaGFsZjIgeCk7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gbGdhbW1hKGhhbGYzIHgpOwpoYWxmNCBfX292bGQgX19jbmZuIGxnYW1tYShoYWxmNCB4KTsKaGFsZjggX19vdmxkIF9fY25mbiBsZ2FtbWEoaGFsZjggeCk7CmhhbGYxNiBfX292bGQgX19jbmZuIGxnYW1tYShoYWxmMTYgeCk7CiNlbmRpZiAvL2NsX2tocl9mcDE2CgojaWYgZGVmaW5lZChfX29wZW5jbF9jX2dlbmVyaWNfYWRkcmVzc19zcGFjZSkKZmxvYXQgX19vdmxkIGxnYW1tYV9yKGZsb2F0IHgsIGludCAqc2lnbnApOwpmbG9hdDIgX19vdmxkIGxnYW1tYV9yKGZsb2F0MiB4LCBpbnQyICpzaWducCk7CmZsb2F0MyBfX292bGQgbGdhbW1hX3IoZmxvYXQzIHgsIGludDMgKnNpZ25wKTsKZmxvYXQ0IF9fb3ZsZCBsZ2FtbWFfcihmbG9hdDQgeCwgaW50NCAqc2lnbnApOwpmbG9hdDggX19vdmxkIGxnYW1tYV9yKGZsb2F0OCB4LCBpbnQ4ICpzaWducCk7CmZsb2F0MTYgX19vdmxkIGxnYW1tYV9yKGZsb2F0MTYgeCwgaW50MTYgKnNpZ25wKTsKI2lmZGVmIGNsX2tocl9mcDY0CmRvdWJsZSBfX292bGQgbGdhbW1hX3IoZG91YmxlIHgsIGludCAqc2lnbnApOwpkb3VibGUyIF9fb3ZsZCBsZ2FtbWFfcihkb3VibGUyIHgsIGludDIgKnNpZ25wKTsKZG91YmxlMyBfX292bGQgbGdhbW1hX3IoZG91YmxlMyB4LCBpbnQzICpzaWducCk7CmRvdWJsZTQgX19vdmxkIGxnYW1tYV9yKGRvdWJsZTQgeCwgaW50NCAqc2lnbnApOwpkb3VibGU4IF9fb3ZsZCBsZ2FtbWFfcihkb3VibGU4IHgsIGludDggKnNpZ25wKTsKZG91YmxlMTYgX19vdmxkIGxnYW1tYV9yKGRvdWJsZTE2IHgsIGludDE2ICpzaWducCk7CiNlbmRpZiAvL2NsX2tocl9mcDY0CiNpZmRlZiBjbF9raHJfZnAxNgpoYWxmIF9fb3ZsZCBsZ2FtbWFfcihoYWxmIHgsIGludCAqc2lnbnApOwpoYWxmMiBfX292bGQgbGdhbW1hX3IoaGFsZjIgeCwgaW50MiAqc2lnbnApOwpoYWxmMyBfX292bGQgbGdhbW1hX3IoaGFsZjMgeCwgaW50MyAqc2lnbnApOwpoYWxmNCBfX292bGQgbGdhbW1hX3IoaGFsZjQgeCwgaW50NCAqc2lnbnApOwpoYWxmOCBfX292bGQgbGdhbW1hX3IoaGFsZjggeCwgaW50OCAqc2lnbnApOwpoYWxmMTYgX19vdmxkIGxnYW1tYV9yKGhhbGYxNiB4LCBpbnQxNiAqc2lnbnApOwojZW5kaWYgLy9jbF9raHJfZnAxNgojZWxzZQpmbG9hdCBfX292bGQgbGdhbW1hX3IoZmxvYXQgeCwgX19nbG9iYWwgaW50ICpzaWducCk7CmZsb2F0MiBfX292bGQgbGdhbW1hX3IoZmxvYXQyIHgsIF9fZ2xvYmFsIGludDIgKnNpZ25wKTsKZmxvYXQzIF9fb3ZsZCBsZ2FtbWFfcihmbG9hdDMgeCwgX19nbG9iYWwgaW50MyAqc2lnbnApOwpmbG9hdDQgX19vdmxkIGxnYW1tYV9yKGZsb2F0NCB4LCBfX2dsb2JhbCBpbnQ0ICpzaWducCk7CmZsb2F0OCBfX292bGQgbGdhbW1hX3IoZmxvYXQ4IHgsIF9fZ2xvYmFsIGludDggKnNpZ25wKTsKZmxvYXQxNiBfX292bGQgbGdhbW1hX3IoZmxvYXQxNiB4LCBfX2dsb2JhbCBpbnQxNiAqc2lnbnApOwpmbG9hdCBfX292bGQgbGdhbW1hX3IoZmxvYXQgeCwgX19sb2NhbCBpbnQgKnNpZ25wKTsKZmxvYXQyIF9fb3ZsZCBsZ2FtbWFfcihmbG9hdDIgeCwgX19sb2NhbCBpbnQyICpzaWducCk7CmZsb2F0MyBfX292bGQgbGdhbW1hX3IoZmxvYXQzIHgsIF9fbG9jYWwgaW50MyAqc2lnbnApOwpmbG9hdDQgX19vdmxkIGxnYW1tYV9yKGZsb2F0NCB4LCBfX2xvY2FsIGludDQgKnNpZ25wKTsKZmxvYXQ4IF9fb3ZsZCBsZ2FtbWFfcihmbG9hdDggeCwgX19sb2NhbCBpbnQ4ICpzaWducCk7CmZsb2F0MTYgX19vdmxkIGxnYW1tYV9yKGZsb2F0MTYgeCwgX19sb2NhbCBpbnQxNiAqc2lnbnApOwpmbG9hdCBfX292bGQgbGdhbW1hX3IoZmxvYXQgeCwgX19wcml2YXRlIGludCAqc2lnbnApOwpmbG9hdDIgX19vdmxkIGxnYW1tYV9yKGZsb2F0MiB4LCBfX3ByaXZhdGUgaW50MiAqc2lnbnApOwpmbG9hdDMgX19vdmxkIGxnYW1tYV9yKGZsb2F0MyB4LCBfX3ByaXZhdGUgaW50MyAqc2lnbnApOwpmbG9hdDQgX19vdmxkIGxnYW1tYV9yKGZsb2F0NCB4LCBfX3ByaXZhdGUgaW50NCAqc2lnbnApOwpmbG9hdDggX19vdmxkIGxnYW1tYV9yKGZsb2F0OCB4LCBfX3ByaXZhdGUgaW50OCAqc2lnbnApOwpmbG9hdDE2IF9fb3ZsZCBsZ2FtbWFfcihmbG9hdDE2IHgsIF9fcHJpdmF0ZSBpbnQxNiAqc2lnbnApOwojaWZkZWYgY2xfa2hyX2ZwNjQKZG91YmxlIF9fb3ZsZCBsZ2FtbWFfcihkb3VibGUgeCwgX19nbG9iYWwgaW50ICpzaWducCk7CmRvdWJsZTIgX19vdmxkIGxnYW1tYV9yKGRvdWJsZTIgeCwgX19nbG9iYWwgaW50MiAqc2lnbnApOwpkb3VibGUzIF9fb3ZsZCBsZ2FtbWFfcihkb3VibGUzIHgsIF9fZ2xvYmFsIGludDMgKnNpZ25wKTsKZG91YmxlNCBfX292bGQgbGdhbW1hX3IoZG91YmxlNCB4LCBfX2dsb2JhbCBpbnQ0ICpzaWducCk7CmRvdWJsZTggX19vdmxkIGxnYW1tYV9yKGRvdWJsZTggeCwgX19nbG9iYWwgaW50OCAqc2lnbnApOwpkb3VibGUxNiBfX292bGQgbGdhbW1hX3IoZG91YmxlMTYgeCwgX19nbG9iYWwgaW50MTYgKnNpZ25wKTsKZG91YmxlIF9fb3ZsZCBsZ2FtbWFfcihkb3VibGUgeCwgX19sb2NhbCBpbnQgKnNpZ25wKTsKZG91YmxlMiBfX292bGQgbGdhbW1hX3IoZG91YmxlMiB4LCBfX2xvY2FsIGludDIgKnNpZ25wKTsKZG91YmxlMyBfX292bGQgbGdhbW1hX3IoZG91YmxlMyB4LCBfX2xvY2FsIGludDMgKnNpZ25wKTsKZG91YmxlNCBfX292bGQgbGdhbW1hX3IoZG91YmxlNCB4LCBfX2xvY2FsIGludDQgKnNpZ25wKTsKZG91YmxlOCBfX292bGQgbGdhbW1hX3IoZG91YmxlOCB4LCBfX2xvY2FsIGludDggKnNpZ25wKTsKZG91YmxlMTYgX19vdmxkIGxnYW1tYV9yKGRvdWJsZTE2IHgsIF9fbG9jYWwgaW50MTYgKnNpZ25wKTsKZG91YmxlIF9fb3ZsZCBsZ2FtbWFfcihkb3VibGUgeCwgX19wcml2YXRlIGludCAqc2lnbnApOwpkb3VibGUyIF9fb3ZsZCBsZ2FtbWFfcihkb3VibGUyIHgsIF9fcHJpdmF0ZSBpbnQyICpzaWducCk7CmRvdWJsZTMgX19vdmxkIGxnYW1tYV9yKGRvdWJsZTMgeCwgX19wcml2YXRlIGludDMgKnNpZ25wKTsKZG91YmxlNCBfX292bGQgbGdhbW1hX3IoZG91YmxlNCB4LCBfX3ByaXZhdGUgaW50NCAqc2lnbnApOwpkb3VibGU4IF9fb3ZsZCBsZ2FtbWFfcihkb3VibGU4IHgsIF9fcHJpdmF0ZSBpbnQ4ICpzaWducCk7CmRvdWJsZTE2IF9fb3ZsZCBsZ2FtbWFfcihkb3VibGUxNiB4LCBfX3ByaXZhdGUgaW50MTYgKnNpZ25wKTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKI2lmZGVmIGNsX2tocl9mcDE2CmhhbGYgX19vdmxkIGxnYW1tYV9yKGhhbGYgeCwgX19nbG9iYWwgaW50ICpzaWducCk7CmhhbGYyIF9fb3ZsZCBsZ2FtbWFfcihoYWxmMiB4LCBfX2dsb2JhbCBpbnQyICpzaWducCk7CmhhbGYzIF9fb3ZsZCBsZ2FtbWFfcihoYWxmMyB4LCBfX2dsb2JhbCBpbnQzICpzaWducCk7CmhhbGY0IF9fb3ZsZCBsZ2FtbWFfcihoYWxmNCB4LCBfX2dsb2JhbCBpbnQ0ICpzaWducCk7CmhhbGY4IF9fb3ZsZCBsZ2FtbWFfcihoYWxmOCB4LCBfX2dsb2JhbCBpbnQ4ICpzaWducCk7CmhhbGYxNiBfX292bGQgbGdhbW1hX3IoaGFsZjE2IHgsIF9fZ2xvYmFsIGludDE2ICpzaWducCk7CmhhbGYgX19vdmxkIGxnYW1tYV9yKGhhbGYgeCwgX19sb2NhbCBpbnQgKnNpZ25wKTsKaGFsZjIgX19vdmxkIGxnYW1tYV9yKGhhbGYyIHgsIF9fbG9jYWwgaW50MiAqc2lnbnApOwpoYWxmMyBfX292bGQgbGdhbW1hX3IoaGFsZjMgeCwgX19sb2NhbCBpbnQzICpzaWducCk7CmhhbGY0IF9fb3ZsZCBsZ2FtbWFfcihoYWxmNCB4LCBfX2xvY2FsIGludDQgKnNpZ25wKTsKaGFsZjggX19vdmxkIGxnYW1tYV9yKGhhbGY4IHgsIF9fbG9jYWwgaW50OCAqc2lnbnApOwpoYWxmMTYgX19vdmxkIGxnYW1tYV9yKGhhbGYxNiB4LCBfX2xvY2FsIGludDE2ICpzaWducCk7CmhhbGYgX19vdmxkIGxnYW1tYV9yKGhhbGYgeCwgX19wcml2YXRlIGludCAqc2lnbnApOwpoYWxmMiBfX292bGQgbGdhbW1hX3IoaGFsZjIgeCwgX19wcml2YXRlIGludDIgKnNpZ25wKTsKaGFsZjMgX19vdmxkIGxnYW1tYV9yKGhhbGYzIHgsIF9fcHJpdmF0ZSBpbnQzICpzaWducCk7CmhhbGY0IF9fb3ZsZCBsZ2FtbWFfcihoYWxmNCB4LCBfX3ByaXZhdGUgaW50NCAqc2lnbnApOwpoYWxmOCBfX292bGQgbGdhbW1hX3IoaGFsZjggeCwgX19wcml2YXRlIGludDggKnNpZ25wKTsKaGFsZjE2IF9fb3ZsZCBsZ2FtbWFfcihoYWxmMTYgeCwgX19wcml2YXRlIGludDE2ICpzaWducCk7CiNlbmRpZiAvL2NsX2tocl9mcDE2CiNlbmRpZiAvL2RlZmluZWQoX19vcGVuY2xfY19nZW5lcmljX2FkZHJlc3Nfc3BhY2UpCgovKioKICogQ29tcHV0ZSBuYXR1cmFsIGxvZ2FyaXRobS4KICovCmZsb2F0IF9fb3ZsZCBfX2NuZm4gbG9nKGZsb2F0KTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gbG9nKGZsb2F0Mik7CmZsb2F0MyBfX292bGQgX19jbmZuIGxvZyhmbG9hdDMpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBsb2coZmxvYXQ0KTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gbG9nKGZsb2F0OCk7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBsb2coZmxvYXQxNik7CiNpZmRlZiBjbF9raHJfZnA2NApkb3VibGUgX19vdmxkIF9fY25mbiBsb2coZG91YmxlKTsKZG91YmxlMiBfX292bGQgX19jbmZuIGxvZyhkb3VibGUyKTsKZG91YmxlMyBfX292bGQgX19jbmZuIGxvZyhkb3VibGUzKTsKZG91YmxlNCBfX292bGQgX19jbmZuIGxvZyhkb3VibGU0KTsKZG91YmxlOCBfX292bGQgX19jbmZuIGxvZyhkb3VibGU4KTsKZG91YmxlMTYgX19vdmxkIF9fY25mbiBsb2coZG91YmxlMTYpOwojZW5kaWYgLy9jbF9raHJfZnA2NAojaWZkZWYgY2xfa2hyX2ZwMTYKaGFsZiBfX292bGQgX19jbmZuIGxvZyhoYWxmKTsKaGFsZjIgX19vdmxkIF9fY25mbiBsb2coaGFsZjIpOwpoYWxmMyBfX292bGQgX19jbmZuIGxvZyhoYWxmMyk7CmhhbGY0IF9fb3ZsZCBfX2NuZm4gbG9nKGhhbGY0KTsKaGFsZjggX19vdmxkIF9fY25mbiBsb2coaGFsZjgpOwpoYWxmMTYgX19vdmxkIF9fY25mbiBsb2coaGFsZjE2KTsKI2VuZGlmIC8vY2xfa2hyX2ZwMTYKCi8qKgogKiBDb21wdXRlIGEgYmFzZSAyIGxvZ2FyaXRobS4KICovCmZsb2F0IF9fb3ZsZCBfX2NuZm4gbG9nMihmbG9hdCk7CmZsb2F0MiBfX292bGQgX19jbmZuIGxvZzIoZmxvYXQyKTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gbG9nMihmbG9hdDMpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBsb2cyKGZsb2F0NCk7CmZsb2F0OCBfX292bGQgX19jbmZuIGxvZzIoZmxvYXQ4KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGxvZzIoZmxvYXQxNik7CiNpZmRlZiBjbF9raHJfZnA2NApkb3VibGUgX19vdmxkIF9fY25mbiBsb2cyKGRvdWJsZSk7CmRvdWJsZTIgX19vdmxkIF9fY25mbiBsb2cyKGRvdWJsZTIpOwpkb3VibGUzIF9fb3ZsZCBfX2NuZm4gbG9nMihkb3VibGUzKTsKZG91YmxlNCBfX292bGQgX19jbmZuIGxvZzIoZG91YmxlNCk7CmRvdWJsZTggX19vdmxkIF9fY25mbiBsb2cyKGRvdWJsZTgpOwpkb3VibGUxNiBfX292bGQgX19jbmZuIGxvZzIoZG91YmxlMTYpOwojZW5kaWYgLy9jbF9raHJfZnA2NAojaWZkZWYgY2xfa2hyX2ZwMTYKaGFsZiBfX292bGQgX19jbmZuIGxvZzIoaGFsZik7CmhhbGYyIF9fb3ZsZCBfX2NuZm4gbG9nMihoYWxmMik7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gbG9nMihoYWxmMyk7CmhhbGY0IF9fb3ZsZCBfX2NuZm4gbG9nMihoYWxmNCk7CmhhbGY4IF9fb3ZsZCBfX2NuZm4gbG9nMihoYWxmOCk7CmhhbGYxNiBfX292bGQgX19jbmZuIGxvZzIoaGFsZjE2KTsKI2VuZGlmIC8vY2xfa2hyX2ZwMTYKCi8qKgogKiBDb21wdXRlIGEgYmFzZSAxMCBsb2dhcml0aG0uCiAqLwpmbG9hdCBfX292bGQgX19jbmZuIGxvZzEwKGZsb2F0KTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gbG9nMTAoZmxvYXQyKTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gbG9nMTAoZmxvYXQzKTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gbG9nMTAoZmxvYXQ0KTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gbG9nMTAoZmxvYXQ4KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGxvZzEwKGZsb2F0MTYpOwojaWZkZWYgY2xfa2hyX2ZwNjQKZG91YmxlIF9fb3ZsZCBfX2NuZm4gbG9nMTAoZG91YmxlKTsKZG91YmxlMiBfX292bGQgX19jbmZuIGxvZzEwKGRvdWJsZTIpOwpkb3VibGUzIF9fb3ZsZCBfX2NuZm4gbG9nMTAoZG91YmxlMyk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiBsb2cxMChkb3VibGU0KTsKZG91YmxlOCBfX292bGQgX19jbmZuIGxvZzEwKGRvdWJsZTgpOwpkb3VibGUxNiBfX292bGQgX19jbmZuIGxvZzEwKGRvdWJsZTE2KTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKI2lmZGVmIGNsX2tocl9mcDE2CmhhbGYgX19vdmxkIF9fY25mbiBsb2cxMChoYWxmKTsKaGFsZjIgX19vdmxkIF9fY25mbiBsb2cxMChoYWxmMik7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gbG9nMTAoaGFsZjMpOwpoYWxmNCBfX292bGQgX19jbmZuIGxvZzEwKGhhbGY0KTsKaGFsZjggX19vdmxkIF9fY25mbiBsb2cxMChoYWxmOCk7CmhhbGYxNiBfX292bGQgX19jbmZuIGxvZzEwKGhhbGYxNik7CiNlbmRpZiAvL2NsX2tocl9mcDE2CgovKioKICogQ29tcHV0ZSBhIGJhc2UgZSBsb2dhcml0aG0gb2YgKDEuMCArIHgpLgogKi8KZmxvYXQgX19vdmxkIF9fY25mbiBsb2cxcChmbG9hdCB4KTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gbG9nMXAoZmxvYXQyIHgpOwpmbG9hdDMgX19vdmxkIF9fY25mbiBsb2cxcChmbG9hdDMgeCk7CmZsb2F0NCBfX292bGQgX19jbmZuIGxvZzFwKGZsb2F0NCB4KTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gbG9nMXAoZmxvYXQ4IHgpOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gbG9nMXAoZmxvYXQxNiB4KTsKI2lmZGVmIGNsX2tocl9mcDY0CmRvdWJsZSBfX292bGQgX19jbmZuIGxvZzFwKGRvdWJsZSB4KTsKZG91YmxlMiBfX292bGQgX19jbmZuIGxvZzFwKGRvdWJsZTIgeCk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBsb2cxcChkb3VibGUzIHgpOwpkb3VibGU0IF9fb3ZsZCBfX2NuZm4gbG9nMXAoZG91YmxlNCB4KTsKZG91YmxlOCBfX292bGQgX19jbmZuIGxvZzFwKGRvdWJsZTggeCk7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gbG9nMXAoZG91YmxlMTYgeCk7CiNlbmRpZiAvL2NsX2tocl9mcDY0CiNpZmRlZiBjbF9raHJfZnAxNgpoYWxmIF9fb3ZsZCBfX2NuZm4gbG9nMXAoaGFsZiB4KTsKaGFsZjIgX19vdmxkIF9fY25mbiBsb2cxcChoYWxmMiB4KTsKaGFsZjMgX19vdmxkIF9fY25mbiBsb2cxcChoYWxmMyB4KTsKaGFsZjQgX19vdmxkIF9fY25mbiBsb2cxcChoYWxmNCB4KTsKaGFsZjggX19vdmxkIF9fY25mbiBsb2cxcChoYWxmOCB4KTsKaGFsZjE2IF9fb3ZsZCBfX2NuZm4gbG9nMXAoaGFsZjE2IHgpOwojZW5kaWYgLy9jbF9raHJfZnAxNgoKLyoqCiAqIENvbXB1dGUgdGhlIGV4cG9uZW50IG9mIHgsIHdoaWNoIGlzIHRoZSBpbnRlZ3JhbAogKiBwYXJ0IG9mIGxvZ3IgfCB4IHwuCiAqLwpmbG9hdCBfX292bGQgX19jbmZuIGxvZ2IoZmxvYXQgeCk7CmZsb2F0MiBfX292bGQgX19jbmZuIGxvZ2IoZmxvYXQyIHgpOwpmbG9hdDMgX19vdmxkIF9fY25mbiBsb2diKGZsb2F0MyB4KTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gbG9nYihmbG9hdDQgeCk7CmZsb2F0OCBfX292bGQgX19jbmZuIGxvZ2IoZmxvYXQ4IHgpOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gbG9nYihmbG9hdDE2IHgpOwojaWZkZWYgY2xfa2hyX2ZwNjQKZG91YmxlIF9fb3ZsZCBfX2NuZm4gbG9nYihkb3VibGUgeCk7CmRvdWJsZTIgX19vdmxkIF9fY25mbiBsb2diKGRvdWJsZTIgeCk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBsb2diKGRvdWJsZTMgeCk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiBsb2diKGRvdWJsZTQgeCk7CmRvdWJsZTggX19vdmxkIF9fY25mbiBsb2diKGRvdWJsZTggeCk7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gbG9nYihkb3VibGUxNiB4KTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKI2lmZGVmIGNsX2tocl9mcDE2CmhhbGYgX19vdmxkIF9fY25mbiBsb2diKGhhbGYgeCk7CmhhbGYyIF9fb3ZsZCBfX2NuZm4gbG9nYihoYWxmMiB4KTsKaGFsZjMgX19vdmxkIF9fY25mbiBsb2diKGhhbGYzIHgpOwpoYWxmNCBfX292bGQgX19jbmZuIGxvZ2IoaGFsZjQgeCk7CmhhbGY4IF9fb3ZsZCBfX2NuZm4gbG9nYihoYWxmOCB4KTsKaGFsZjE2IF9fb3ZsZCBfX2NuZm4gbG9nYihoYWxmMTYgeCk7CiNlbmRpZiAvL2NsX2tocl9mcDE2CgovKioKICogbWFkIGFwcHJveGltYXRlcyBhICogYiArIGMuIFdoZXRoZXIgb3IgaG93IHRoZQogKiBwcm9kdWN0IG9mIGEgKiBiIGlzIHJvdW5kZWQgYW5kIGhvdyBzdXBlcm5vcm1hbCBvcgogKiBzdWJub3JtYWwgaW50ZXJtZWRpYXRlIHByb2R1Y3RzIGFyZSBoYW5kbGVkIGlzIG5vdAogKiBkZWZpbmVkLiBtYWQgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCB3aGVyZSBzcGVlZCBpcwogKiBwcmVmZXJyZWQgb3ZlciBhY2N1cmFjeS4KICovCmZsb2F0IF9fb3ZsZCBfX2NuZm4gbWFkKGZsb2F0IGEsIGZsb2F0IGIsIGZsb2F0IGMpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBtYWQoZmxvYXQyIGEsIGZsb2F0MiBiLCBmbG9hdDIgYyk7CmZsb2F0MyBfX292bGQgX19jbmZuIG1hZChmbG9hdDMgYSwgZmxvYXQzIGIsIGZsb2F0MyBjKTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gbWFkKGZsb2F0NCBhLCBmbG9hdDQgYiwgZmxvYXQ0IGMpOwpmbG9hdDggX19vdmxkIF9fY25mbiBtYWQoZmxvYXQ4IGEsIGZsb2F0OCBiLCBmbG9hdDggYyk7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBtYWQoZmxvYXQxNiBhLCBmbG9hdDE2IGIsIGZsb2F0MTYgYyk7CiNpZmRlZiBjbF9raHJfZnA2NApkb3VibGUgX19vdmxkIF9fY25mbiBtYWQoZG91YmxlIGEsIGRvdWJsZSBiLCBkb3VibGUgYyk7CmRvdWJsZTIgX19vdmxkIF9fY25mbiBtYWQoZG91YmxlMiBhLCBkb3VibGUyIGIsIGRvdWJsZTIgYyk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBtYWQoZG91YmxlMyBhLCBkb3VibGUzIGIsIGRvdWJsZTMgYyk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiBtYWQoZG91YmxlNCBhLCBkb3VibGU0IGIsIGRvdWJsZTQgYyk7CmRvdWJsZTggX19vdmxkIF9fY25mbiBtYWQoZG91YmxlOCBhLCBkb3VibGU4IGIsIGRvdWJsZTggYyk7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gbWFkKGRvdWJsZTE2IGEsIGRvdWJsZTE2IGIsIGRvdWJsZTE2IGMpOwojZW5kaWYgLy9jbF9raHJfZnA2NAojaWZkZWYgY2xfa2hyX2ZwMTYKaGFsZiBfX292bGQgX19jbmZuIG1hZChoYWxmIGEsIGhhbGYgYiwgaGFsZiBjKTsKaGFsZjIgX19vdmxkIF9fY25mbiBtYWQoaGFsZjIgYSwgaGFsZjIgYiwgaGFsZjIgYyk7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gbWFkKGhhbGYzIGEsIGhhbGYzIGIsIGhhbGYzIGMpOwpoYWxmNCBfX292bGQgX19jbmZuIG1hZChoYWxmNCBhLCBoYWxmNCBiLCBoYWxmNCBjKTsKaGFsZjggX19vdmxkIF9fY25mbiBtYWQoaGFsZjggYSwgaGFsZjggYiwgaGFsZjggYyk7CmhhbGYxNiBfX292bGQgX19jbmZuIG1hZChoYWxmMTYgYSwgaGFsZjE2IGIsIGhhbGYxNiBjKTsKI2VuZGlmIC8vY2xfa2hyX2ZwMTYKCi8qKgogKiBSZXR1cm5zIHggaWYgfCB4IHwgPiB8IHkgfCwgeSBpZiB8IHkgfCA+IHwgeCB8LCBvdGhlcndpc2UKICogZm1heCh4LCB5KS4KICovCmZsb2F0IF9fb3ZsZCBfX2NuZm4gbWF4bWFnKGZsb2F0IHgsIGZsb2F0IHkpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBtYXhtYWcoZmxvYXQyIHgsIGZsb2F0MiB5KTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gbWF4bWFnKGZsb2F0MyB4LCBmbG9hdDMgeSk7CmZsb2F0NCBfX292bGQgX19jbmZuIG1heG1hZyhmbG9hdDQgeCwgZmxvYXQ0IHkpOwpmbG9hdDggX19vdmxkIF9fY25mbiBtYXhtYWcoZmxvYXQ4IHgsIGZsb2F0OCB5KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIG1heG1hZyhmbG9hdDE2IHgsIGZsb2F0MTYgeSk7CiNpZmRlZiBjbF9raHJfZnA2NApkb3VibGUgX19vdmxkIF9fY25mbiBtYXhtYWcoZG91YmxlIHgsIGRvdWJsZSB5KTsKZG91YmxlMiBfX292bGQgX19jbmZuIG1heG1hZyhkb3VibGUyIHgsIGRvdWJsZTIgeSk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBtYXhtYWcoZG91YmxlMyB4LCBkb3VibGUzIHkpOwpkb3VibGU0IF9fb3ZsZCBfX2NuZm4gbWF4bWFnKGRvdWJsZTQgeCwgZG91YmxlNCB5KTsKZG91YmxlOCBfX292bGQgX19jbmZuIG1heG1hZyhkb3VibGU4IHgsIGRvdWJsZTggeSk7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gbWF4bWFnKGRvdWJsZTE2IHgsIGRvdWJsZTE2IHkpOwojZW5kaWYgLy9jbF9raHJfZnA2NAojaWZkZWYgY2xfa2hyX2ZwMTYKaGFsZiBfX292bGQgX19jbmZuIG1heG1hZyhoYWxmIHgsIGhhbGYgeSk7CmhhbGYyIF9fb3ZsZCBfX2NuZm4gbWF4bWFnKGhhbGYyIHgsIGhhbGYyIHkpOwpoYWxmMyBfX292bGQgX19jbmZuIG1heG1hZyhoYWxmMyB4LCBoYWxmMyB5KTsKaGFsZjQgX19vdmxkIF9fY25mbiBtYXhtYWcoaGFsZjQgeCwgaGFsZjQgeSk7CmhhbGY4IF9fb3ZsZCBfX2NuZm4gbWF4bWFnKGhhbGY4IHgsIGhhbGY4IHkpOwpoYWxmMTYgX19vdmxkIF9fY25mbiBtYXhtYWcoaGFsZjE2IHgsIGhhbGYxNiB5KTsKI2VuZGlmIC8vY2xfa2hyX2ZwMTYKCi8qKgogKiBSZXR1cm5zIHggaWYgfCB4IHwgPCB8IHkgfCwgeSBpZiB8IHkgfCA8IHwgeCB8LCBvdGhlcndpc2UKICogZm1pbih4LCB5KS4KICovCmZsb2F0IF9fb3ZsZCBfX2NuZm4gbWlubWFnKGZsb2F0IHgsIGZsb2F0IHkpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBtaW5tYWcoZmxvYXQyIHgsIGZsb2F0MiB5KTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gbWlubWFnKGZsb2F0MyB4LCBmbG9hdDMgeSk7CmZsb2F0NCBfX292bGQgX19jbmZuIG1pbm1hZyhmbG9hdDQgeCwgZmxvYXQ0IHkpOwpmbG9hdDggX19vdmxkIF9fY25mbiBtaW5tYWcoZmxvYXQ4IHgsIGZsb2F0OCB5KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIG1pbm1hZyhmbG9hdDE2IHgsIGZsb2F0MTYgeSk7CiNpZmRlZiBjbF9raHJfZnA2NApkb3VibGUgX19vdmxkIF9fY25mbiBtaW5tYWcoZG91YmxlIHgsIGRvdWJsZSB5KTsKZG91YmxlMiBfX292bGQgX19jbmZuIG1pbm1hZyhkb3VibGUyIHgsIGRvdWJsZTIgeSk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBtaW5tYWcoZG91YmxlMyB4LCBkb3VibGUzIHkpOwpkb3VibGU0IF9fb3ZsZCBfX2NuZm4gbWlubWFnKGRvdWJsZTQgeCwgZG91YmxlNCB5KTsKZG91YmxlOCBfX292bGQgX19jbmZuIG1pbm1hZyhkb3VibGU4IHgsIGRvdWJsZTggeSk7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gbWlubWFnKGRvdWJsZTE2IHgsIGRvdWJsZTE2IHkpOwojZW5kaWYgLy9jbF9raHJfZnA2NAojaWZkZWYgY2xfa2hyX2ZwMTYKaGFsZiBfX292bGQgX19jbmZuIG1pbm1hZyhoYWxmIHgsIGhhbGYgeSk7CmhhbGYyIF9fb3ZsZCBfX2NuZm4gbWlubWFnKGhhbGYyIHgsIGhhbGYyIHkpOwpoYWxmMyBfX292bGQgX19jbmZuIG1pbm1hZyhoYWxmMyB4LCBoYWxmMyB5KTsKaGFsZjQgX19vdmxkIF9fY25mbiBtaW5tYWcoaGFsZjQgeCwgaGFsZjQgeSk7CmhhbGY4IF9fb3ZsZCBfX2NuZm4gbWlubWFnKGhhbGY4IHgsIGhhbGY4IHkpOwpoYWxmMTYgX19vdmxkIF9fY25mbiBtaW5tYWcoaGFsZjE2IHgsIGhhbGYxNiB5KTsKI2VuZGlmIC8vY2xfa2hyX2ZwMTYKCi8qKgogKiBEZWNvbXBvc2UgYSBmbG9hdGluZy1wb2ludCBudW1iZXIuIFRoZSBtb2RmCiAqIGZ1bmN0aW9uIGJyZWFrcyB0aGUgYXJndW1lbnQgeCBpbnRvIGludGVncmFsIGFuZAogKiBmcmFjdGlvbmFsIHBhcnRzLCBlYWNoIG9mIHdoaWNoIGhhcyB0aGUgc2FtZSBzaWduIGFzCiAqIHRoZSBhcmd1bWVudC4gSXQgc3RvcmVzIHRoZSBpbnRlZ3JhbCBwYXJ0IGluIHRoZSBvYmplY3QKICogcG9pbnRlZCB0byBieSBpcHRyLgogKi8KI2lmIGRlZmluZWQoX19vcGVuY2xfY19nZW5lcmljX2FkZHJlc3Nfc3BhY2UpCmZsb2F0IF9fb3ZsZCBtb2RmKGZsb2F0IHgsIGZsb2F0ICppcHRyKTsKZmxvYXQyIF9fb3ZsZCBtb2RmKGZsb2F0MiB4LCBmbG9hdDIgKmlwdHIpOwpmbG9hdDMgX19vdmxkIG1vZGYoZmxvYXQzIHgsIGZsb2F0MyAqaXB0cik7CmZsb2F0NCBfX292bGQgbW9kZihmbG9hdDQgeCwgZmxvYXQ0ICppcHRyKTsKZmxvYXQ4IF9fb3ZsZCBtb2RmKGZsb2F0OCB4LCBmbG9hdDggKmlwdHIpOwpmbG9hdDE2IF9fb3ZsZCBtb2RmKGZsb2F0MTYgeCwgZmxvYXQxNiAqaXB0cik7CiNpZmRlZiBjbF9raHJfZnA2NApkb3VibGUgX19vdmxkIG1vZGYoZG91YmxlIHgsIGRvdWJsZSAqaXB0cik7CmRvdWJsZTIgX19vdmxkIG1vZGYoZG91YmxlMiB4LCBkb3VibGUyICppcHRyKTsKZG91YmxlMyBfX292bGQgbW9kZihkb3VibGUzIHgsIGRvdWJsZTMgKmlwdHIpOwpkb3VibGU0IF9fb3ZsZCBtb2RmKGRvdWJsZTQgeCwgZG91YmxlNCAqaXB0cik7CmRvdWJsZTggX19vdmxkIG1vZGYoZG91YmxlOCB4LCBkb3VibGU4ICppcHRyKTsKZG91YmxlMTYgX19vdmxkIG1vZGYoZG91YmxlMTYgeCwgZG91YmxlMTYgKmlwdHIpOwojZW5kaWYgLy9jbF9raHJfZnA2NAojaWZkZWYgY2xfa2hyX2ZwMTYKaGFsZiBfX292bGQgbW9kZihoYWxmIHgsIGhhbGYgKmlwdHIpOwpoYWxmMiBfX292bGQgbW9kZihoYWxmMiB4LCBoYWxmMiAqaXB0cik7CmhhbGYzIF9fb3ZsZCBtb2RmKGhhbGYzIHgsIGhhbGYzICppcHRyKTsKaGFsZjQgX19vdmxkIG1vZGYoaGFsZjQgeCwgaGFsZjQgKmlwdHIpOwpoYWxmOCBfX292bGQgbW9kZihoYWxmOCB4LCBoYWxmOCAqaXB0cik7CmhhbGYxNiBfX292bGQgbW9kZihoYWxmMTYgeCwgaGFsZjE2ICppcHRyKTsKI2VuZGlmIC8vY2xfa2hyX2ZwMTYKI2Vsc2UKZmxvYXQgX19vdmxkIG1vZGYoZmxvYXQgeCwgX19nbG9iYWwgZmxvYXQgKmlwdHIpOwpmbG9hdDIgX19vdmxkIG1vZGYoZmxvYXQyIHgsIF9fZ2xvYmFsIGZsb2F0MiAqaXB0cik7CmZsb2F0MyBfX292bGQgbW9kZihmbG9hdDMgeCwgX19nbG9iYWwgZmxvYXQzICppcHRyKTsKZmxvYXQ0IF9fb3ZsZCBtb2RmKGZsb2F0NCB4LCBfX2dsb2JhbCBmbG9hdDQgKmlwdHIpOwpmbG9hdDggX19vdmxkIG1vZGYoZmxvYXQ4IHgsIF9fZ2xvYmFsIGZsb2F0OCAqaXB0cik7CmZsb2F0MTYgX19vdmxkIG1vZGYoZmxvYXQxNiB4LCBfX2dsb2JhbCBmbG9hdDE2ICppcHRyKTsKZmxvYXQgX19vdmxkIG1vZGYoZmxvYXQgeCwgX19sb2NhbCBmbG9hdCAqaXB0cik7CmZsb2F0MiBfX292bGQgbW9kZihmbG9hdDIgeCwgX19sb2NhbCBmbG9hdDIgKmlwdHIpOwpmbG9hdDMgX19vdmxkIG1vZGYoZmxvYXQzIHgsIF9fbG9jYWwgZmxvYXQzICppcHRyKTsKZmxvYXQ0IF9fb3ZsZCBtb2RmKGZsb2F0NCB4LCBfX2xvY2FsIGZsb2F0NCAqaXB0cik7CmZsb2F0OCBfX292bGQgbW9kZihmbG9hdDggeCwgX19sb2NhbCBmbG9hdDggKmlwdHIpOwpmbG9hdDE2IF9fb3ZsZCBtb2RmKGZsb2F0MTYgeCwgX19sb2NhbCBmbG9hdDE2ICppcHRyKTsKZmxvYXQgX19vdmxkIG1vZGYoZmxvYXQgeCwgX19wcml2YXRlIGZsb2F0ICppcHRyKTsKZmxvYXQyIF9fb3ZsZCBtb2RmKGZsb2F0MiB4LCBfX3ByaXZhdGUgZmxvYXQyICppcHRyKTsKZmxvYXQzIF9fb3ZsZCBtb2RmKGZsb2F0MyB4LCBfX3ByaXZhdGUgZmxvYXQzICppcHRyKTsKZmxvYXQ0IF9fb3ZsZCBtb2RmKGZsb2F0NCB4LCBfX3ByaXZhdGUgZmxvYXQ0ICppcHRyKTsKZmxvYXQ4IF9fb3ZsZCBtb2RmKGZsb2F0OCB4LCBfX3ByaXZhdGUgZmxvYXQ4ICppcHRyKTsKZmxvYXQxNiBfX292bGQgbW9kZihmbG9hdDE2IHgsIF9fcHJpdmF0ZSBmbG9hdDE2ICppcHRyKTsKI2lmZGVmIGNsX2tocl9mcDY0CmRvdWJsZSBfX292bGQgbW9kZihkb3VibGUgeCwgX19nbG9iYWwgZG91YmxlICppcHRyKTsKZG91YmxlMiBfX292bGQgbW9kZihkb3VibGUyIHgsIF9fZ2xvYmFsIGRvdWJsZTIgKmlwdHIpOwpkb3VibGUzIF9fb3ZsZCBtb2RmKGRvdWJsZTMgeCwgX19nbG9iYWwgZG91YmxlMyAqaXB0cik7CmRvdWJsZTQgX19vdmxkIG1vZGYoZG91YmxlNCB4LCBfX2dsb2JhbCBkb3VibGU0ICppcHRyKTsKZG91YmxlOCBfX292bGQgbW9kZihkb3VibGU4IHgsIF9fZ2xvYmFsIGRvdWJsZTggKmlwdHIpOwpkb3VibGUxNiBfX292bGQgbW9kZihkb3VibGUxNiB4LCBfX2dsb2JhbCBkb3VibGUxNiAqaXB0cik7CmRvdWJsZSBfX292bGQgbW9kZihkb3VibGUgeCwgX19sb2NhbCBkb3VibGUgKmlwdHIpOwpkb3VibGUyIF9fb3ZsZCBtb2RmKGRvdWJsZTIgeCwgX19sb2NhbCBkb3VibGUyICppcHRyKTsKZG91YmxlMyBfX292bGQgbW9kZihkb3VibGUzIHgsIF9fbG9jYWwgZG91YmxlMyAqaXB0cik7CmRvdWJsZTQgX19vdmxkIG1vZGYoZG91YmxlNCB4LCBfX2xvY2FsIGRvdWJsZTQgKmlwdHIpOwpkb3VibGU4IF9fb3ZsZCBtb2RmKGRvdWJsZTggeCwgX19sb2NhbCBkb3VibGU4ICppcHRyKTsKZG91YmxlMTYgX19vdmxkIG1vZGYoZG91YmxlMTYgeCwgX19sb2NhbCBkb3VibGUxNiAqaXB0cik7CmRvdWJsZSBfX292bGQgbW9kZihkb3VibGUgeCwgX19wcml2YXRlIGRvdWJsZSAqaXB0cik7CmRvdWJsZTIgX19vdmxkIG1vZGYoZG91YmxlMiB4LCBfX3ByaXZhdGUgZG91YmxlMiAqaXB0cik7CmRvdWJsZTMgX19vdmxkIG1vZGYoZG91YmxlMyB4LCBfX3ByaXZhdGUgZG91YmxlMyAqaXB0cik7CmRvdWJsZTQgX19vdmxkIG1vZGYoZG91YmxlNCB4LCBfX3ByaXZhdGUgZG91YmxlNCAqaXB0cik7CmRvdWJsZTggX19vdmxkIG1vZGYoZG91YmxlOCB4LCBfX3ByaXZhdGUgZG91YmxlOCAqaXB0cik7CmRvdWJsZTE2IF9fb3ZsZCBtb2RmKGRvdWJsZTE2IHgsIF9fcHJpdmF0ZSBkb3VibGUxNiAqaXB0cik7CiNlbmRpZiAvL2NsX2tocl9mcDY0CiNpZmRlZiBjbF9raHJfZnAxNgpoYWxmIF9fb3ZsZCBtb2RmKGhhbGYgeCwgX19nbG9iYWwgaGFsZiAqaXB0cik7CmhhbGYyIF9fb3ZsZCBtb2RmKGhhbGYyIHgsIF9fZ2xvYmFsIGhhbGYyICppcHRyKTsKaGFsZjMgX19vdmxkIG1vZGYoaGFsZjMgeCwgX19nbG9iYWwgaGFsZjMgKmlwdHIpOwpoYWxmNCBfX292bGQgbW9kZihoYWxmNCB4LCBfX2dsb2JhbCBoYWxmNCAqaXB0cik7CmhhbGY4IF9fb3ZsZCBtb2RmKGhhbGY4IHgsIF9fZ2xvYmFsIGhhbGY4ICppcHRyKTsKaGFsZjE2IF9fb3ZsZCBtb2RmKGhhbGYxNiB4LCBfX2dsb2JhbCBoYWxmMTYgKmlwdHIpOwpoYWxmIF9fb3ZsZCBtb2RmKGhhbGYgeCwgX19sb2NhbCBoYWxmICppcHRyKTsKaGFsZjIgX19vdmxkIG1vZGYoaGFsZjIgeCwgX19sb2NhbCBoYWxmMiAqaXB0cik7CmhhbGYzIF9fb3ZsZCBtb2RmKGhhbGYzIHgsIF9fbG9jYWwgaGFsZjMgKmlwdHIpOwpoYWxmNCBfX292bGQgbW9kZihoYWxmNCB4LCBfX2xvY2FsIGhhbGY0ICppcHRyKTsKaGFsZjggX19vdmxkIG1vZGYoaGFsZjggeCwgX19sb2NhbCBoYWxmOCAqaXB0cik7CmhhbGYxNiBfX292bGQgbW9kZihoYWxmMTYgeCwgX19sb2NhbCBoYWxmMTYgKmlwdHIpOwpoYWxmIF9fb3ZsZCBtb2RmKGhhbGYgeCwgX19wcml2YXRlIGhhbGYgKmlwdHIpOwpoYWxmMiBfX292bGQgbW9kZihoYWxmMiB4LCBfX3ByaXZhdGUgaGFsZjIgKmlwdHIpOwpoYWxmMyBfX292bGQgbW9kZihoYWxmMyB4LCBfX3ByaXZhdGUgaGFsZjMgKmlwdHIpOwpoYWxmNCBfX292bGQgbW9kZihoYWxmNCB4LCBfX3ByaXZhdGUgaGFsZjQgKmlwdHIpOwpoYWxmOCBfX292bGQgbW9kZihoYWxmOCB4LCBfX3ByaXZhdGUgaGFsZjggKmlwdHIpOwpoYWxmMTYgX19vdmxkIG1vZGYoaGFsZjE2IHgsIF9fcHJpdmF0ZSBoYWxmMTYgKmlwdHIpOwojZW5kaWYgLy9jbF9raHJfZnAxNgojZW5kaWYgLy9kZWZpbmVkKF9fb3BlbmNsX2NfZ2VuZXJpY19hZGRyZXNzX3NwYWNlKQoKLyoqCiAqIFJldHVybnMgYSBxdWlldCBOYU4uIFRoZSBuYW5jb2RlIG1heSBiZSBwbGFjZWQKICogaW4gdGhlIHNpZ25pZmljYW5kIG9mIHRoZSByZXN1bHRpbmcgTmFOLgogKi8KZmxvYXQgX19vdmxkIF9fY25mbiBuYW4odWludCBuYW5jb2RlKTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gbmFuKHVpbnQyIG5hbmNvZGUpOwpmbG9hdDMgX19vdmxkIF9fY25mbiBuYW4odWludDMgbmFuY29kZSk7CmZsb2F0NCBfX292bGQgX19jbmZuIG5hbih1aW50NCBuYW5jb2RlKTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gbmFuKHVpbnQ4IG5hbmNvZGUpOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gbmFuKHVpbnQxNiBuYW5jb2RlKTsKI2lmZGVmIGNsX2tocl9mcDY0CmRvdWJsZSBfX292bGQgX19jbmZuIG5hbih1bG9uZyBuYW5jb2RlKTsKZG91YmxlMiBfX292bGQgX19jbmZuIG5hbih1bG9uZzIgbmFuY29kZSk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBuYW4odWxvbmczIG5hbmNvZGUpOwpkb3VibGU0IF9fb3ZsZCBfX2NuZm4gbmFuKHVsb25nNCBuYW5jb2RlKTsKZG91YmxlOCBfX292bGQgX19jbmZuIG5hbih1bG9uZzggbmFuY29kZSk7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gbmFuKHVsb25nMTYgbmFuY29kZSk7CiNlbmRpZiAvL2NsX2tocl9mcDY0CiNpZmRlZiBjbF9raHJfZnAxNgpoYWxmIF9fb3ZsZCBfX2NuZm4gbmFuKHVzaG9ydCBuYW5jb2RlKTsKaGFsZjIgX19vdmxkIF9fY25mbiBuYW4odXNob3J0MiBuYW5jb2RlKTsKaGFsZjMgX19vdmxkIF9fY25mbiBuYW4odXNob3J0MyBuYW5jb2RlKTsKaGFsZjQgX19vdmxkIF9fY25mbiBuYW4odXNob3J0NCBuYW5jb2RlKTsKaGFsZjggX19vdmxkIF9fY25mbiBuYW4odXNob3J0OCBuYW5jb2RlKTsKaGFsZjE2IF9fb3ZsZCBfX2NuZm4gbmFuKHVzaG9ydDE2IG5hbmNvZGUpOwojZW5kaWYgLy9jbF9raHJfZnAxNgoKLyoqCiAqIENvbXB1dGVzIHRoZSBuZXh0IHJlcHJlc2VudGFibGUgc2luZ2xlLXByZWNpc2lvbgogKiBmbG9hdGluZy1wb2ludCB2YWx1ZSBmb2xsb3dpbmcgeCBpbiB0aGUgZGlyZWN0aW9uIG9mCiAqIHkuIFRodXMsIGlmIHkgaXMgbGVzcyB0aGFuIHgsIG5leHRhZnRlcigpIHJldHVybnMgdGhlCiAqIGxhcmdlc3QgcmVwcmVzZW50YWJsZSBmbG9hdGluZy1wb2ludCBudW1iZXIgbGVzcwogKiB0aGFuIHguCiAqLwpmbG9hdCBfX292bGQgX19jbmZuIG5leHRhZnRlcihmbG9hdCB4LCBmbG9hdCB5KTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gbmV4dGFmdGVyKGZsb2F0MiB4LCBmbG9hdDIgeSk7CmZsb2F0MyBfX292bGQgX19jbmZuIG5leHRhZnRlcihmbG9hdDMgeCwgZmxvYXQzIHkpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBuZXh0YWZ0ZXIoZmxvYXQ0IHgsIGZsb2F0NCB5KTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gbmV4dGFmdGVyKGZsb2F0OCB4LCBmbG9hdDggeSk7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBuZXh0YWZ0ZXIoZmxvYXQxNiB4LCBmbG9hdDE2IHkpOwojaWZkZWYgY2xfa2hyX2ZwNjQKZG91YmxlIF9fb3ZsZCBfX2NuZm4gbmV4dGFmdGVyKGRvdWJsZSB4LCBkb3VibGUgeSk7CmRvdWJsZTIgX19vdmxkIF9fY25mbiBuZXh0YWZ0ZXIoZG91YmxlMiB4LCBkb3VibGUyIHkpOwpkb3VibGUzIF9fb3ZsZCBfX2NuZm4gbmV4dGFmdGVyKGRvdWJsZTMgeCwgZG91YmxlMyB5KTsKZG91YmxlNCBfX292bGQgX19jbmZuIG5leHRhZnRlcihkb3VibGU0IHgsIGRvdWJsZTQgeSk7CmRvdWJsZTggX19vdmxkIF9fY25mbiBuZXh0YWZ0ZXIoZG91YmxlOCB4LCBkb3VibGU4IHkpOwpkb3VibGUxNiBfX292bGQgX19jbmZuIG5leHRhZnRlcihkb3VibGUxNiB4LCBkb3VibGUxNiB5KTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKI2lmZGVmIGNsX2tocl9mcDE2CmhhbGYgX19vdmxkIF9fY25mbiBuZXh0YWZ0ZXIoaGFsZiB4LCBoYWxmIHkpOwpoYWxmMiBfX292bGQgX19jbmZuIG5leHRhZnRlcihoYWxmMiB4LCBoYWxmMiB5KTsKaGFsZjMgX19vdmxkIF9fY25mbiBuZXh0YWZ0ZXIoaGFsZjMgeCwgaGFsZjMgeSk7CmhhbGY0IF9fb3ZsZCBfX2NuZm4gbmV4dGFmdGVyKGhhbGY0IHgsIGhhbGY0IHkpOwpoYWxmOCBfX292bGQgX19jbmZuIG5leHRhZnRlcihoYWxmOCB4LCBoYWxmOCB5KTsKaGFsZjE2IF9fb3ZsZCBfX2NuZm4gbmV4dGFmdGVyKGhhbGYxNiB4LCBoYWxmMTYgeSk7CiNlbmRpZiAvL2NsX2tocl9mcDE2CgovKioKICogQ29tcHV0ZSB4IHRvIHRoZSBwb3dlciB5LgogKi8KZmxvYXQgX19vdmxkIF9fY25mbiBwb3coZmxvYXQgeCwgZmxvYXQgeSk7CmZsb2F0MiBfX292bGQgX19jbmZuIHBvdyhmbG9hdDIgeCwgZmxvYXQyIHkpOwpmbG9hdDMgX19vdmxkIF9fY25mbiBwb3coZmxvYXQzIHgsIGZsb2F0MyB5KTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gcG93KGZsb2F0NCB4LCBmbG9hdDQgeSk7CmZsb2F0OCBfX292bGQgX19jbmZuIHBvdyhmbG9hdDggeCwgZmxvYXQ4IHkpOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gcG93KGZsb2F0MTYgeCwgZmxvYXQxNiB5KTsKI2lmZGVmIGNsX2tocl9mcDY0CmRvdWJsZSBfX292bGQgX19jbmZuIHBvdyhkb3VibGUgeCwgZG91YmxlIHkpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gcG93KGRvdWJsZTIgeCwgZG91YmxlMiB5KTsKZG91YmxlMyBfX292bGQgX19jbmZuIHBvdyhkb3VibGUzIHgsIGRvdWJsZTMgeSk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiBwb3coZG91YmxlNCB4LCBkb3VibGU0IHkpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gcG93KGRvdWJsZTggeCwgZG91YmxlOCB5KTsKZG91YmxlMTYgX19vdmxkIF9fY25mbiBwb3coZG91YmxlMTYgeCwgZG91YmxlMTYgeSk7CiNlbmRpZiAvL2NsX2tocl9mcDY0CiNpZmRlZiBjbF9raHJfZnAxNgpoYWxmIF9fb3ZsZCBfX2NuZm4gcG93KGhhbGYgeCwgaGFsZiB5KTsKaGFsZjIgX19vdmxkIF9fY25mbiBwb3coaGFsZjIgeCwgaGFsZjIgeSk7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gcG93KGhhbGYzIHgsIGhhbGYzIHkpOwpoYWxmNCBfX292bGQgX19jbmZuIHBvdyhoYWxmNCB4LCBoYWxmNCB5KTsKaGFsZjggX19vdmxkIF9fY25mbiBwb3coaGFsZjggeCwgaGFsZjggeSk7CmhhbGYxNiBfX292bGQgX19jbmZuIHBvdyhoYWxmMTYgeCwgaGFsZjE2IHkpOwojZW5kaWYgLy9jbF9raHJfZnAxNgoKLyoqCiAqIENvbXB1dGUgeCB0byB0aGUgcG93ZXIgeSwgd2hlcmUgeSBpcyBhbiBpbnRlZ2VyLgogKi8KZmxvYXQgX19vdmxkIF9fY25mbiBwb3duKGZsb2F0IHgsIGludCB5KTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gcG93bihmbG9hdDIgeCwgaW50MiB5KTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gcG93bihmbG9hdDMgeCwgaW50MyB5KTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gcG93bihmbG9hdDQgeCwgaW50NCB5KTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gcG93bihmbG9hdDggeCwgaW50OCB5KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIHBvd24oZmxvYXQxNiB4LCBpbnQxNiB5KTsKI2lmZGVmIGNsX2tocl9mcDY0CmRvdWJsZSBfX292bGQgX19jbmZuIHBvd24oZG91YmxlIHgsIGludCB5KTsKZG91YmxlMiBfX292bGQgX19jbmZuIHBvd24oZG91YmxlMiB4LCBpbnQyIHkpOwpkb3VibGUzIF9fb3ZsZCBfX2NuZm4gcG93bihkb3VibGUzIHgsIGludDMgeSk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiBwb3duKGRvdWJsZTQgeCwgaW50NCB5KTsKZG91YmxlOCBfX292bGQgX19jbmZuIHBvd24oZG91YmxlOCB4LCBpbnQ4IHkpOwpkb3VibGUxNiBfX292bGQgX19jbmZuIHBvd24oZG91YmxlMTYgeCwgaW50MTYgeSk7CiNlbmRpZiAvL2NsX2tocl9mcDY0CiNpZmRlZiBjbF9raHJfZnAxNgpoYWxmIF9fb3ZsZCBfX2NuZm4gcG93bihoYWxmIHgsIGludCB5KTsKaGFsZjIgX19vdmxkIF9fY25mbiBwb3duKGhhbGYyIHgsIGludDIgeSk7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gcG93bihoYWxmMyB4LCBpbnQzIHkpOwpoYWxmNCBfX292bGQgX19jbmZuIHBvd24oaGFsZjQgeCwgaW50NCB5KTsKaGFsZjggX19vdmxkIF9fY25mbiBwb3duKGhhbGY4IHgsIGludDggeSk7CmhhbGYxNiBfX292bGQgX19jbmZuIHBvd24oaGFsZjE2IHgsIGludDE2IHkpOwojZW5kaWYgLy9jbF9raHJfZnAxNgoKLyoqCiAqIENvbXB1dGUgeCB0byB0aGUgcG93ZXIgeSwgd2hlcmUgeCBpcyA+PSAwLgogKi8KZmxvYXQgX19vdmxkIF9fY25mbiBwb3dyKGZsb2F0IHgsIGZsb2F0IHkpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBwb3dyKGZsb2F0MiB4LCBmbG9hdDIgeSk7CmZsb2F0MyBfX292bGQgX19jbmZuIHBvd3IoZmxvYXQzIHgsIGZsb2F0MyB5KTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gcG93cihmbG9hdDQgeCwgZmxvYXQ0IHkpOwpmbG9hdDggX19vdmxkIF9fY25mbiBwb3dyKGZsb2F0OCB4LCBmbG9hdDggeSk7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBwb3dyKGZsb2F0MTYgeCwgZmxvYXQxNiB5KTsKI2lmZGVmIGNsX2tocl9mcDY0CmRvdWJsZSBfX292bGQgX19jbmZuIHBvd3IoZG91YmxlIHgsIGRvdWJsZSB5KTsKZG91YmxlMiBfX292bGQgX19jbmZuIHBvd3IoZG91YmxlMiB4LCBkb3VibGUyIHkpOwpkb3VibGUzIF9fb3ZsZCBfX2NuZm4gcG93cihkb3VibGUzIHgsIGRvdWJsZTMgeSk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiBwb3dyKGRvdWJsZTQgeCwgZG91YmxlNCB5KTsKZG91YmxlOCBfX292bGQgX19jbmZuIHBvd3IoZG91YmxlOCB4LCBkb3VibGU4IHkpOwpkb3VibGUxNiBfX292bGQgX19jbmZuIHBvd3IoZG91YmxlMTYgeCwgZG91YmxlMTYgeSk7CiNlbmRpZiAvL2NsX2tocl9mcDY0CiNpZmRlZiBjbF9raHJfZnAxNgpoYWxmIF9fb3ZsZCBfX2NuZm4gcG93cihoYWxmIHgsIGhhbGYgeSk7CmhhbGYyIF9fb3ZsZCBfX2NuZm4gcG93cihoYWxmMiB4LCBoYWxmMiB5KTsKaGFsZjMgX19vdmxkIF9fY25mbiBwb3dyKGhhbGYzIHgsIGhhbGYzIHkpOwpoYWxmNCBfX292bGQgX19jbmZuIHBvd3IoaGFsZjQgeCwgaGFsZjQgeSk7CmhhbGY4IF9fb3ZsZCBfX2NuZm4gcG93cihoYWxmOCB4LCBoYWxmOCB5KTsKaGFsZjE2IF9fb3ZsZCBfX2NuZm4gcG93cihoYWxmMTYgeCwgaGFsZjE2IHkpOwojZW5kaWYgLy9jbF9raHJfZnAxNgoKLyoqCiAqIENvbXB1dGUgdGhlIHZhbHVlIHIgc3VjaCB0aGF0IHIgPSB4IC0gbip5LCB3aGVyZSBuCiAqIGlzIHRoZSBpbnRlZ2VyIG5lYXJlc3QgdGhlIGV4YWN0IHZhbHVlIG9mIHgveS4gSWYgdGhlcmUKICogYXJlIHR3byBpbnRlZ2VycyBjbG9zZXN0IHRvIHgveSwgbiBzaGFsbCBiZSB0aGUgZXZlbgogKiBvbmUuIElmIHIgaXMgemVybywgaXQgaXMgZ2l2ZW4gdGhlIHNhbWUgc2lnbiBhcyB4LgogKi8KZmxvYXQgX19vdmxkIF9fY25mbiByZW1haW5kZXIoZmxvYXQgeCwgZmxvYXQgeSk7CmZsb2F0MiBfX292bGQgX19jbmZuIHJlbWFpbmRlcihmbG9hdDIgeCwgZmxvYXQyIHkpOwpmbG9hdDMgX19vdmxkIF9fY25mbiByZW1haW5kZXIoZmxvYXQzIHgsIGZsb2F0MyB5KTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gcmVtYWluZGVyKGZsb2F0NCB4LCBmbG9hdDQgeSk7CmZsb2F0OCBfX292bGQgX19jbmZuIHJlbWFpbmRlcihmbG9hdDggeCwgZmxvYXQ4IHkpOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gcmVtYWluZGVyKGZsb2F0MTYgeCwgZmxvYXQxNiB5KTsKI2lmZGVmIGNsX2tocl9mcDY0CmRvdWJsZSBfX292bGQgX19jbmZuIHJlbWFpbmRlcihkb3VibGUgeCwgZG91YmxlIHkpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gcmVtYWluZGVyKGRvdWJsZTIgeCwgZG91YmxlMiB5KTsKZG91YmxlMyBfX292bGQgX19jbmZuIHJlbWFpbmRlcihkb3VibGUzIHgsIGRvdWJsZTMgeSk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiByZW1haW5kZXIoZG91YmxlNCB4LCBkb3VibGU0IHkpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gcmVtYWluZGVyKGRvdWJsZTggeCwgZG91YmxlOCB5KTsKZG91YmxlMTYgX19vdmxkIF9fY25mbiByZW1haW5kZXIoZG91YmxlMTYgeCwgZG91YmxlMTYgeSk7CiNlbmRpZiAvL2NsX2tocl9mcDY0CiNpZmRlZiBjbF9raHJfZnAxNgpoYWxmIF9fb3ZsZCBfX2NuZm4gcmVtYWluZGVyKGhhbGYgeCwgaGFsZiB5KTsKaGFsZjIgX19vdmxkIF9fY25mbiByZW1haW5kZXIoaGFsZjIgeCwgaGFsZjIgeSk7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gcmVtYWluZGVyKGhhbGYzIHgsIGhhbGYzIHkpOwpoYWxmNCBfX292bGQgX19jbmZuIHJlbWFpbmRlcihoYWxmNCB4LCBoYWxmNCB5KTsKaGFsZjggX19vdmxkIF9fY25mbiByZW1haW5kZXIoaGFsZjggeCwgaGFsZjggeSk7CmhhbGYxNiBfX292bGQgX19jbmZuIHJlbWFpbmRlcihoYWxmMTYgeCwgaGFsZjE2IHkpOwojZW5kaWYgLy9jbF9raHJfZnAxNgoKLyoqCiAqIFRoZSByZW1xdW8gZnVuY3Rpb24gY29tcHV0ZXMgdGhlIHZhbHVlIHIgc3VjaAogKiB0aGF0IHIgPSB4IC0gbip5LCB3aGVyZSBuIGlzIHRoZSBpbnRlZ2VyIG5lYXJlc3QgdGhlCiAqIGV4YWN0IHZhbHVlIG9mIHgveS4gSWYgdGhlcmUgYXJlIHR3byBpbnRlZ2VycyBjbG9zZXN0CiAqIHRvIHgveSwgbiBzaGFsbCBiZSB0aGUgZXZlbiBvbmUuIElmIHIgaXMgemVybywgaXQgaXMKICogZ2l2ZW4gdGhlIHNhbWUgc2lnbiBhcyB4LiBUaGlzIGlzIHRoZSBzYW1lIHZhbHVlCiAqIHRoYXQgaXMgcmV0dXJuZWQgYnkgdGhlIHJlbWFpbmRlciBmdW5jdGlvbi4KICogcmVtcXVvIGFsc28gY2FsY3VsYXRlcyB0aGUgbG93ZXIgc2V2ZW4gYml0cyBvZiB0aGUKICogaW50ZWdyYWwgcXVvdGllbnQgeC95LCBhbmQgZ2l2ZXMgdGhhdCB2YWx1ZSB0aGUgc2FtZQogKiBzaWduIGFzIHgveS4gSXQgc3RvcmVzIHRoaXMgc2lnbmVkIHZhbHVlIGluIHRoZSBvYmplY3QKICogcG9pbnRlZCB0byBieSBxdW8uCiAqLwojaWYgZGVmaW5lZChfX29wZW5jbF9jX2dlbmVyaWNfYWRkcmVzc19zcGFjZSkKZmxvYXQgX19vdmxkIHJlbXF1byhmbG9hdCB4LCBmbG9hdCB5LCBpbnQgKnF1byk7CmZsb2F0MiBfX292bGQgcmVtcXVvKGZsb2F0MiB4LCBmbG9hdDIgeSwgaW50MiAqcXVvKTsKZmxvYXQzIF9fb3ZsZCByZW1xdW8oZmxvYXQzIHgsIGZsb2F0MyB5LCBpbnQzICpxdW8pOwpmbG9hdDQgX19vdmxkIHJlbXF1byhmbG9hdDQgeCwgZmxvYXQ0IHksIGludDQgKnF1byk7CmZsb2F0OCBfX292bGQgcmVtcXVvKGZsb2F0OCB4LCBmbG9hdDggeSwgaW50OCAqcXVvKTsKZmxvYXQxNiBfX292bGQgcmVtcXVvKGZsb2F0MTYgeCwgZmxvYXQxNiB5LCBpbnQxNiAqcXVvKTsKI2lmZGVmIGNsX2tocl9mcDY0CmRvdWJsZSBfX292bGQgcmVtcXVvKGRvdWJsZSB4LCBkb3VibGUgeSwgaW50ICpxdW8pOwpkb3VibGUyIF9fb3ZsZCByZW1xdW8oZG91YmxlMiB4LCBkb3VibGUyIHksIGludDIgKnF1byk7CmRvdWJsZTMgX19vdmxkIHJlbXF1byhkb3VibGUzIHgsIGRvdWJsZTMgeSwgaW50MyAqcXVvKTsKZG91YmxlNCBfX292bGQgcmVtcXVvKGRvdWJsZTQgeCwgZG91YmxlNCB5LCBpbnQ0ICpxdW8pOwpkb3VibGU4IF9fb3ZsZCByZW1xdW8oZG91YmxlOCB4LCBkb3VibGU4IHksIGludDggKnF1byk7CmRvdWJsZTE2IF9fb3ZsZCByZW1xdW8oZG91YmxlMTYgeCwgZG91YmxlMTYgeSwgaW50MTYgKnF1byk7CiNlbmRpZiAvL2NsX2tocl9mcDY0CiNpZmRlZiBjbF9raHJfZnAxNgpoYWxmIF9fb3ZsZCByZW1xdW8oaGFsZiB4LCBoYWxmIHksIGludCAqcXVvKTsKaGFsZjIgX19vdmxkIHJlbXF1byhoYWxmMiB4LCBoYWxmMiB5LCBpbnQyICpxdW8pOwpoYWxmMyBfX292bGQgcmVtcXVvKGhhbGYzIHgsIGhhbGYzIHksIGludDMgKnF1byk7CmhhbGY0IF9fb3ZsZCByZW1xdW8oaGFsZjQgeCwgaGFsZjQgeSwgaW50NCAqcXVvKTsKaGFsZjggX19vdmxkIHJlbXF1byhoYWxmOCB4LCBoYWxmOCB5LCBpbnQ4ICpxdW8pOwpoYWxmMTYgX19vdmxkIHJlbXF1byhoYWxmMTYgeCwgaGFsZjE2IHksIGludDE2ICpxdW8pOwoKI2VuZGlmIC8vY2xfa2hyX2ZwMTYKI2Vsc2UKZmxvYXQgX19vdmxkIHJlbXF1byhmbG9hdCB4LCBmbG9hdCB5LCBfX2dsb2JhbCBpbnQgKnF1byk7CmZsb2F0MiBfX292bGQgcmVtcXVvKGZsb2F0MiB4LCBmbG9hdDIgeSwgX19nbG9iYWwgaW50MiAqcXVvKTsKZmxvYXQzIF9fb3ZsZCByZW1xdW8oZmxvYXQzIHgsIGZsb2F0MyB5LCBfX2dsb2JhbCBpbnQzICpxdW8pOwpmbG9hdDQgX19vdmxkIHJlbXF1byhmbG9hdDQgeCwgZmxvYXQ0IHksIF9fZ2xvYmFsIGludDQgKnF1byk7CmZsb2F0OCBfX292bGQgcmVtcXVvKGZsb2F0OCB4LCBmbG9hdDggeSwgX19nbG9iYWwgaW50OCAqcXVvKTsKZmxvYXQxNiBfX292bGQgcmVtcXVvKGZsb2F0MTYgeCwgZmxvYXQxNiB5LCBfX2dsb2JhbCBpbnQxNiAqcXVvKTsKZmxvYXQgX19vdmxkIHJlbXF1byhmbG9hdCB4LCBmbG9hdCB5LCBfX2xvY2FsIGludCAqcXVvKTsKZmxvYXQyIF9fb3ZsZCByZW1xdW8oZmxvYXQyIHgsIGZsb2F0MiB5LCBfX2xvY2FsIGludDIgKnF1byk7CmZsb2F0MyBfX292bGQgcmVtcXVvKGZsb2F0MyB4LCBmbG9hdDMgeSwgX19sb2NhbCBpbnQzICpxdW8pOwpmbG9hdDQgX19vdmxkIHJlbXF1byhmbG9hdDQgeCwgZmxvYXQ0IHksIF9fbG9jYWwgaW50NCAqcXVvKTsKZmxvYXQ4IF9fb3ZsZCByZW1xdW8oZmxvYXQ4IHgsIGZsb2F0OCB5LCBfX2xvY2FsIGludDggKnF1byk7CmZsb2F0MTYgX19vdmxkIHJlbXF1byhmbG9hdDE2IHgsIGZsb2F0MTYgeSwgX19sb2NhbCBpbnQxNiAqcXVvKTsKZmxvYXQgX19vdmxkIHJlbXF1byhmbG9hdCB4LCBmbG9hdCB5LCBfX3ByaXZhdGUgaW50ICpxdW8pOwpmbG9hdDIgX19vdmxkIHJlbXF1byhmbG9hdDIgeCwgZmxvYXQyIHksIF9fcHJpdmF0ZSBpbnQyICpxdW8pOwpmbG9hdDMgX19vdmxkIHJlbXF1byhmbG9hdDMgeCwgZmxvYXQzIHksIF9fcHJpdmF0ZSBpbnQzICpxdW8pOwpmbG9hdDQgX19vdmxkIHJlbXF1byhmbG9hdDQgeCwgZmxvYXQ0IHksIF9fcHJpdmF0ZSBpbnQ0ICpxdW8pOwpmbG9hdDggX19vdmxkIHJlbXF1byhmbG9hdDggeCwgZmxvYXQ4IHksIF9fcHJpdmF0ZSBpbnQ4ICpxdW8pOwpmbG9hdDE2IF9fb3ZsZCByZW1xdW8oZmxvYXQxNiB4LCBmbG9hdDE2IHksIF9fcHJpdmF0ZSBpbnQxNiAqcXVvKTsKI2lmZGVmIGNsX2tocl9mcDY0CmRvdWJsZSBfX292bGQgcmVtcXVvKGRvdWJsZSB4LCBkb3VibGUgeSwgX19nbG9iYWwgaW50ICpxdW8pOwpkb3VibGUyIF9fb3ZsZCByZW1xdW8oZG91YmxlMiB4LCBkb3VibGUyIHksIF9fZ2xvYmFsIGludDIgKnF1byk7CmRvdWJsZTMgX19vdmxkIHJlbXF1byhkb3VibGUzIHgsIGRvdWJsZTMgeSwgX19nbG9iYWwgaW50MyAqcXVvKTsKZG91YmxlNCBfX292bGQgcmVtcXVvKGRvdWJsZTQgeCwgZG91YmxlNCB5LCBfX2dsb2JhbCBpbnQ0ICpxdW8pOwpkb3VibGU4IF9fb3ZsZCByZW1xdW8oZG91YmxlOCB4LCBkb3VibGU4IHksIF9fZ2xvYmFsIGludDggKnF1byk7CmRvdWJsZTE2IF9fb3ZsZCByZW1xdW8oZG91YmxlMTYgeCwgZG91YmxlMTYgeSwgX19nbG9iYWwgaW50MTYgKnF1byk7CmRvdWJsZSBfX292bGQgcmVtcXVvKGRvdWJsZSB4LCBkb3VibGUgeSwgX19sb2NhbCBpbnQgKnF1byk7CmRvdWJsZTIgX19vdmxkIHJlbXF1byhkb3VibGUyIHgsIGRvdWJsZTIgeSwgX19sb2NhbCBpbnQyICpxdW8pOwpkb3VibGUzIF9fb3ZsZCByZW1xdW8oZG91YmxlMyB4LCBkb3VibGUzIHksIF9fbG9jYWwgaW50MyAqcXVvKTsKZG91YmxlNCBfX292bGQgcmVtcXVvKGRvdWJsZTQgeCwgZG91YmxlNCB5LCBfX2xvY2FsIGludDQgKnF1byk7CmRvdWJsZTggX19vdmxkIHJlbXF1byhkb3VibGU4IHgsIGRvdWJsZTggeSwgX19sb2NhbCBpbnQ4ICpxdW8pOwpkb3VibGUxNiBfX292bGQgcmVtcXVvKGRvdWJsZTE2IHgsIGRvdWJsZTE2IHksIF9fbG9jYWwgaW50MTYgKnF1byk7CmRvdWJsZSBfX292bGQgcmVtcXVvKGRvdWJsZSB4LCBkb3VibGUgeSwgX19wcml2YXRlIGludCAqcXVvKTsKZG91YmxlMiBfX292bGQgcmVtcXVvKGRvdWJsZTIgeCwgZG91YmxlMiB5LCBfX3ByaXZhdGUgaW50MiAqcXVvKTsKZG91YmxlMyBfX292bGQgcmVtcXVvKGRvdWJsZTMgeCwgZG91YmxlMyB5LCBfX3ByaXZhdGUgaW50MyAqcXVvKTsKZG91YmxlNCBfX292bGQgcmVtcXVvKGRvdWJsZTQgeCwgZG91YmxlNCB5LCBfX3ByaXZhdGUgaW50NCAqcXVvKTsKZG91YmxlOCBfX292bGQgcmVtcXVvKGRvdWJsZTggeCwgZG91YmxlOCB5LCBfX3ByaXZhdGUgaW50OCAqcXVvKTsKZG91YmxlMTYgX19vdmxkIHJlbXF1byhkb3VibGUxNiB4LCBkb3VibGUxNiB5LCBfX3ByaXZhdGUgaW50MTYgKnF1byk7CiNlbmRpZiAvL2NsX2tocl9mcDY0CiNpZmRlZiBjbF9raHJfZnAxNgpoYWxmIF9fb3ZsZCByZW1xdW8oaGFsZiB4LCBoYWxmIHksIF9fZ2xvYmFsIGludCAqcXVvKTsKaGFsZjIgX19vdmxkIHJlbXF1byhoYWxmMiB4LCBoYWxmMiB5LCBfX2dsb2JhbCBpbnQyICpxdW8pOwpoYWxmMyBfX292bGQgcmVtcXVvKGhhbGYzIHgsIGhhbGYzIHksIF9fZ2xvYmFsIGludDMgKnF1byk7CmhhbGY0IF9fb3ZsZCByZW1xdW8oaGFsZjQgeCwgaGFsZjQgeSwgX19nbG9iYWwgaW50NCAqcXVvKTsKaGFsZjggX19vdmxkIHJlbXF1byhoYWxmOCB4LCBoYWxmOCB5LCBfX2dsb2JhbCBpbnQ4ICpxdW8pOwpoYWxmMTYgX19vdmxkIHJlbXF1byhoYWxmMTYgeCwgaGFsZjE2IHksIF9fZ2xvYmFsIGludDE2ICpxdW8pOwpoYWxmIF9fb3ZsZCByZW1xdW8oaGFsZiB4LCBoYWxmIHksIF9fbG9jYWwgaW50ICpxdW8pOwpoYWxmMiBfX292bGQgcmVtcXVvKGhhbGYyIHgsIGhhbGYyIHksIF9fbG9jYWwgaW50MiAqcXVvKTsKaGFsZjMgX19vdmxkIHJlbXF1byhoYWxmMyB4LCBoYWxmMyB5LCBfX2xvY2FsIGludDMgKnF1byk7CmhhbGY0IF9fb3ZsZCByZW1xdW8oaGFsZjQgeCwgaGFsZjQgeSwgX19sb2NhbCBpbnQ0ICpxdW8pOwpoYWxmOCBfX292bGQgcmVtcXVvKGhhbGY4IHgsIGhhbGY4IHksIF9fbG9jYWwgaW50OCAqcXVvKTsKaGFsZjE2IF9fb3ZsZCByZW1xdW8oaGFsZjE2IHgsIGhhbGYxNiB5LCBfX2xvY2FsIGludDE2ICpxdW8pOwpoYWxmIF9fb3ZsZCByZW1xdW8oaGFsZiB4LCBoYWxmIHksIF9fcHJpdmF0ZSBpbnQgKnF1byk7CmhhbGYyIF9fb3ZsZCByZW1xdW8oaGFsZjIgeCwgaGFsZjIgeSwgX19wcml2YXRlIGludDIgKnF1byk7CmhhbGYzIF9fb3ZsZCByZW1xdW8oaGFsZjMgeCwgaGFsZjMgeSwgX19wcml2YXRlIGludDMgKnF1byk7CmhhbGY0IF9fb3ZsZCByZW1xdW8oaGFsZjQgeCwgaGFsZjQgeSwgX19wcml2YXRlIGludDQgKnF1byk7CmhhbGY4IF9fb3ZsZCByZW1xdW8oaGFsZjggeCwgaGFsZjggeSwgX19wcml2YXRlIGludDggKnF1byk7CmhhbGYxNiBfX292bGQgcmVtcXVvKGhhbGYxNiB4LCBoYWxmMTYgeSwgX19wcml2YXRlIGludDE2ICpxdW8pOwojZW5kaWYgLy9jbF9raHJfZnAxNgojZW5kaWYgLy9kZWZpbmVkKF9fb3BlbmNsX2NfZ2VuZXJpY19hZGRyZXNzX3NwYWNlKQovKioKICogUm91bmQgdG8gaW50ZWdyYWwgdmFsdWUgKHVzaW5nIHJvdW5kIHRvIG5lYXJlc3QKICogZXZlbiByb3VuZGluZyBtb2RlKSBpbiBmbG9hdGluZy1wb2ludCBmb3JtYXQuCiAqIFJlZmVyIHRvIHNlY3Rpb24gNy4xIGZvciBkZXNjcmlwdGlvbiBvZiByb3VuZGluZwogKiBtb2Rlcy4KICovCmZsb2F0IF9fb3ZsZCBfX2NuZm4gcmludChmbG9hdCk7CmZsb2F0MiBfX292bGQgX19jbmZuIHJpbnQoZmxvYXQyKTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gcmludChmbG9hdDMpOwpmbG9hdDQgX19vdmxkIF9fY25mbiByaW50KGZsb2F0NCk7CmZsb2F0OCBfX292bGQgX19jbmZuIHJpbnQoZmxvYXQ4KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIHJpbnQoZmxvYXQxNik7CiNpZmRlZiBjbF9raHJfZnA2NApkb3VibGUgX19vdmxkIF9fY25mbiByaW50KGRvdWJsZSk7CmRvdWJsZTIgX19vdmxkIF9fY25mbiByaW50KGRvdWJsZTIpOwpkb3VibGUzIF9fb3ZsZCBfX2NuZm4gcmludChkb3VibGUzKTsKZG91YmxlNCBfX292bGQgX19jbmZuIHJpbnQoZG91YmxlNCk7CmRvdWJsZTggX19vdmxkIF9fY25mbiByaW50KGRvdWJsZTgpOwpkb3VibGUxNiBfX292bGQgX19jbmZuIHJpbnQoZG91YmxlMTYpOwojZW5kaWYgLy9jbF9raHJfZnA2NAojaWZkZWYgY2xfa2hyX2ZwMTYKaGFsZiBfX292bGQgX19jbmZuIHJpbnQoaGFsZik7CmhhbGYyIF9fb3ZsZCBfX2NuZm4gcmludChoYWxmMik7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gcmludChoYWxmMyk7CmhhbGY0IF9fb3ZsZCBfX2NuZm4gcmludChoYWxmNCk7CmhhbGY4IF9fb3ZsZCBfX2NuZm4gcmludChoYWxmOCk7CmhhbGYxNiBfX292bGQgX19jbmZuIHJpbnQoaGFsZjE2KTsKI2VuZGlmIC8vY2xfa2hyX2ZwMTYKCi8qKgogKiBDb21wdXRlIHggdG8gdGhlIHBvd2VyIDEveS4KICovCmZsb2F0IF9fb3ZsZCBfX2NuZm4gcm9vdG4oZmxvYXQgeCwgaW50IHkpOwpmbG9hdDIgX19vdmxkIF9fY25mbiByb290bihmbG9hdDIgeCwgaW50MiB5KTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gcm9vdG4oZmxvYXQzIHgsIGludDMgeSk7CmZsb2F0NCBfX292bGQgX19jbmZuIHJvb3RuKGZsb2F0NCB4LCBpbnQ0IHkpOwpmbG9hdDggX19vdmxkIF9fY25mbiByb290bihmbG9hdDggeCwgaW50OCB5KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIHJvb3RuKGZsb2F0MTYgeCwgaW50MTYgeSk7CiNpZmRlZiBjbF9raHJfZnA2NApkb3VibGUgX19vdmxkIF9fY25mbiByb290bihkb3VibGUgeCwgaW50IHkpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gcm9vdG4oZG91YmxlMiB4LCBpbnQyIHkpOwpkb3VibGUzIF9fb3ZsZCBfX2NuZm4gcm9vdG4oZG91YmxlMyB4LCBpbnQzIHkpOwpkb3VibGU0IF9fb3ZsZCBfX2NuZm4gcm9vdG4oZG91YmxlNCB4LCBpbnQ0IHkpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gcm9vdG4oZG91YmxlOCB4LCBpbnQ4IHkpOwpkb3VibGUxNiBfX292bGQgX19jbmZuIHJvb3RuKGRvdWJsZTE2IHgsIGludDE2IHkpOwojZW5kaWYgLy9jbF9raHJfZnA2NAojaWZkZWYgY2xfa2hyX2ZwMTYKaGFsZiBfX292bGQgX19jbmZuIHJvb3RuKGhhbGYgeCwgaW50IHkpOwpoYWxmMiBfX292bGQgX19jbmZuIHJvb3RuKGhhbGYyIHgsIGludDIgeSk7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gcm9vdG4oaGFsZjMgeCwgaW50MyB5KTsKaGFsZjQgX19vdmxkIF9fY25mbiByb290bihoYWxmNCB4LCBpbnQ0IHkpOwpoYWxmOCBfX292bGQgX19jbmZuIHJvb3RuKGhhbGY4IHgsIGludDggeSk7CmhhbGYxNiBfX292bGQgX19jbmZuIHJvb3RuKGhhbGYxNiB4LCBpbnQxNiB5KTsKI2VuZGlmIC8vY2xfa2hyX2ZwMTYKCi8qKgogKiBSZXR1cm4gdGhlIGludGVncmFsIHZhbHVlIG5lYXJlc3QgdG8geCByb3VuZGluZwogKiBoYWxmd2F5IGNhc2VzIGF3YXkgZnJvbSB6ZXJvLCByZWdhcmRsZXNzIG9mIHRoZQogKiBjdXJyZW50IHJvdW5kaW5nIGRpcmVjdGlvbi4KICovCmZsb2F0IF9fb3ZsZCBfX2NuZm4gcm91bmQoZmxvYXQgeCk7CmZsb2F0MiBfX292bGQgX19jbmZuIHJvdW5kKGZsb2F0MiB4KTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gcm91bmQoZmxvYXQzIHgpOwpmbG9hdDQgX19vdmxkIF9fY25mbiByb3VuZChmbG9hdDQgeCk7CmZsb2F0OCBfX292bGQgX19jbmZuIHJvdW5kKGZsb2F0OCB4KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIHJvdW5kKGZsb2F0MTYgeCk7CiNpZmRlZiBjbF9raHJfZnA2NApkb3VibGUgX19vdmxkIF9fY25mbiByb3VuZChkb3VibGUgeCk7CmRvdWJsZTIgX19vdmxkIF9fY25mbiByb3VuZChkb3VibGUyIHgpOwpkb3VibGUzIF9fb3ZsZCBfX2NuZm4gcm91bmQoZG91YmxlMyB4KTsKZG91YmxlNCBfX292bGQgX19jbmZuIHJvdW5kKGRvdWJsZTQgeCk7CmRvdWJsZTggX19vdmxkIF9fY25mbiByb3VuZChkb3VibGU4IHgpOwpkb3VibGUxNiBfX292bGQgX19jbmZuIHJvdW5kKGRvdWJsZTE2IHgpOwojZW5kaWYgLy9jbF9raHJfZnA2NAojaWZkZWYgY2xfa2hyX2ZwMTYKaGFsZiBfX292bGQgX19jbmZuIHJvdW5kKGhhbGYgeCk7CmhhbGYyIF9fb3ZsZCBfX2NuZm4gcm91bmQoaGFsZjIgeCk7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gcm91bmQoaGFsZjMgeCk7CmhhbGY0IF9fb3ZsZCBfX2NuZm4gcm91bmQoaGFsZjQgeCk7CmhhbGY4IF9fb3ZsZCBfX2NuZm4gcm91bmQoaGFsZjggeCk7CmhhbGYxNiBfX292bGQgX19jbmZuIHJvdW5kKGhhbGYxNiB4KTsKI2VuZGlmIC8vY2xfa2hyX2ZwMTYKCi8qKgogKiBDb21wdXRlIGludmVyc2Ugc3F1YXJlIHJvb3QuCiAqLwpmbG9hdCBfX292bGQgX19jbmZuIHJzcXJ0KGZsb2F0KTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gcnNxcnQoZmxvYXQyKTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gcnNxcnQoZmxvYXQzKTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gcnNxcnQoZmxvYXQ0KTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gcnNxcnQoZmxvYXQ4KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIHJzcXJ0KGZsb2F0MTYpOwojaWZkZWYgY2xfa2hyX2ZwNjQKZG91YmxlIF9fb3ZsZCBfX2NuZm4gcnNxcnQoZG91YmxlKTsKZG91YmxlMiBfX292bGQgX19jbmZuIHJzcXJ0KGRvdWJsZTIpOwpkb3VibGUzIF9fb3ZsZCBfX2NuZm4gcnNxcnQoZG91YmxlMyk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiByc3FydChkb3VibGU0KTsKZG91YmxlOCBfX292bGQgX19jbmZuIHJzcXJ0KGRvdWJsZTgpOwpkb3VibGUxNiBfX292bGQgX19jbmZuIHJzcXJ0KGRvdWJsZTE2KTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKI2lmZGVmIGNsX2tocl9mcDE2CmhhbGYgX19vdmxkIF9fY25mbiByc3FydChoYWxmKTsKaGFsZjIgX19vdmxkIF9fY25mbiByc3FydChoYWxmMik7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gcnNxcnQoaGFsZjMpOwpoYWxmNCBfX292bGQgX19jbmZuIHJzcXJ0KGhhbGY0KTsKaGFsZjggX19vdmxkIF9fY25mbiByc3FydChoYWxmOCk7CmhhbGYxNiBfX292bGQgX19jbmZuIHJzcXJ0KGhhbGYxNik7CiNlbmRpZiAvL2NsX2tocl9mcDE2CgovKioKICogQ29tcHV0ZSBzaW5lLgogKi8KZmxvYXQgX19vdmxkIF9fY25mbiBzaW4oZmxvYXQpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBzaW4oZmxvYXQyKTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gc2luKGZsb2F0Myk7CmZsb2F0NCBfX292bGQgX19jbmZuIHNpbihmbG9hdDQpOwpmbG9hdDggX19vdmxkIF9fY25mbiBzaW4oZmxvYXQ4KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIHNpbihmbG9hdDE2KTsKI2lmZGVmIGNsX2tocl9mcDY0CmRvdWJsZSBfX292bGQgX19jbmZuIHNpbihkb3VibGUpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gc2luKGRvdWJsZTIpOwpkb3VibGUzIF9fb3ZsZCBfX2NuZm4gc2luKGRvdWJsZTMpOwpkb3VibGU0IF9fb3ZsZCBfX2NuZm4gc2luKGRvdWJsZTQpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gc2luKGRvdWJsZTgpOwpkb3VibGUxNiBfX292bGQgX19jbmZuIHNpbihkb3VibGUxNik7CiNlbmRpZiAvL2NsX2tocl9mcDY0CiNpZmRlZiBjbF9raHJfZnAxNgpoYWxmIF9fb3ZsZCBfX2NuZm4gc2luKGhhbGYpOwpoYWxmMiBfX292bGQgX19jbmZuIHNpbihoYWxmMik7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gc2luKGhhbGYzKTsKaGFsZjQgX19vdmxkIF9fY25mbiBzaW4oaGFsZjQpOwpoYWxmOCBfX292bGQgX19jbmZuIHNpbihoYWxmOCk7CmhhbGYxNiBfX292bGQgX19jbmZuIHNpbihoYWxmMTYpOwojZW5kaWYgLy9jbF9raHJfZnAxNgoKLyoqCiAqIENvbXB1dGUgc2luZSBhbmQgY29zaW5lIG9mIHguIFRoZSBjb21wdXRlZCBzaW5lCiAqIGlzIHRoZSByZXR1cm4gdmFsdWUgYW5kIGNvbXB1dGVkIGNvc2luZSBpcyByZXR1cm5lZAogKiBpbiBjb3N2YWwuCiAqLwojaWYgZGVmaW5lZChfX29wZW5jbF9jX2dlbmVyaWNfYWRkcmVzc19zcGFjZSkKZmxvYXQgX19vdmxkIHNpbmNvcyhmbG9hdCB4LCBmbG9hdCAqY29zdmFsKTsKZmxvYXQyIF9fb3ZsZCBzaW5jb3MoZmxvYXQyIHgsIGZsb2F0MiAqY29zdmFsKTsKZmxvYXQzIF9fb3ZsZCBzaW5jb3MoZmxvYXQzIHgsIGZsb2F0MyAqY29zdmFsKTsKZmxvYXQ0IF9fb3ZsZCBzaW5jb3MoZmxvYXQ0IHgsIGZsb2F0NCAqY29zdmFsKTsKZmxvYXQ4IF9fb3ZsZCBzaW5jb3MoZmxvYXQ4IHgsIGZsb2F0OCAqY29zdmFsKTsKZmxvYXQxNiBfX292bGQgc2luY29zKGZsb2F0MTYgeCwgZmxvYXQxNiAqY29zdmFsKTsKI2lmZGVmIGNsX2tocl9mcDY0CmRvdWJsZSBfX292bGQgc2luY29zKGRvdWJsZSB4LCBkb3VibGUgKmNvc3ZhbCk7CmRvdWJsZTIgX19vdmxkIHNpbmNvcyhkb3VibGUyIHgsIGRvdWJsZTIgKmNvc3ZhbCk7CmRvdWJsZTMgX19vdmxkIHNpbmNvcyhkb3VibGUzIHgsIGRvdWJsZTMgKmNvc3ZhbCk7CmRvdWJsZTQgX19vdmxkIHNpbmNvcyhkb3VibGU0IHgsIGRvdWJsZTQgKmNvc3ZhbCk7CmRvdWJsZTggX19vdmxkIHNpbmNvcyhkb3VibGU4IHgsIGRvdWJsZTggKmNvc3ZhbCk7CmRvdWJsZTE2IF9fb3ZsZCBzaW5jb3MoZG91YmxlMTYgeCwgZG91YmxlMTYgKmNvc3ZhbCk7CiNlbmRpZiAvL2NsX2tocl9mcDY0CiNpZmRlZiBjbF9raHJfZnAxNgpoYWxmIF9fb3ZsZCBzaW5jb3MoaGFsZiB4LCBoYWxmICpjb3N2YWwpOwpoYWxmMiBfX292bGQgc2luY29zKGhhbGYyIHgsIGhhbGYyICpjb3N2YWwpOwpoYWxmMyBfX292bGQgc2luY29zKGhhbGYzIHgsIGhhbGYzICpjb3N2YWwpOwpoYWxmNCBfX292bGQgc2luY29zKGhhbGY0IHgsIGhhbGY0ICpjb3N2YWwpOwpoYWxmOCBfX292bGQgc2luY29zKGhhbGY4IHgsIGhhbGY4ICpjb3N2YWwpOwpoYWxmMTYgX19vdmxkIHNpbmNvcyhoYWxmMTYgeCwgaGFsZjE2ICpjb3N2YWwpOwojZW5kaWYgLy9jbF9raHJfZnAxNgojZWxzZQpmbG9hdCBfX292bGQgc2luY29zKGZsb2F0IHgsIF9fZ2xvYmFsIGZsb2F0ICpjb3N2YWwpOwpmbG9hdDIgX19vdmxkIHNpbmNvcyhmbG9hdDIgeCwgX19nbG9iYWwgZmxvYXQyICpjb3N2YWwpOwpmbG9hdDMgX19vdmxkIHNpbmNvcyhmbG9hdDMgeCwgX19nbG9iYWwgZmxvYXQzICpjb3N2YWwpOwpmbG9hdDQgX19vdmxkIHNpbmNvcyhmbG9hdDQgeCwgX19nbG9iYWwgZmxvYXQ0ICpjb3N2YWwpOwpmbG9hdDggX19vdmxkIHNpbmNvcyhmbG9hdDggeCwgX19nbG9iYWwgZmxvYXQ4ICpjb3N2YWwpOwpmbG9hdDE2IF9fb3ZsZCBzaW5jb3MoZmxvYXQxNiB4LCBfX2dsb2JhbCBmbG9hdDE2ICpjb3N2YWwpOwpmbG9hdCBfX292bGQgc2luY29zKGZsb2F0IHgsIF9fbG9jYWwgZmxvYXQgKmNvc3ZhbCk7CmZsb2F0MiBfX292bGQgc2luY29zKGZsb2F0MiB4LCBfX2xvY2FsIGZsb2F0MiAqY29zdmFsKTsKZmxvYXQzIF9fb3ZsZCBzaW5jb3MoZmxvYXQzIHgsIF9fbG9jYWwgZmxvYXQzICpjb3N2YWwpOwpmbG9hdDQgX19vdmxkIHNpbmNvcyhmbG9hdDQgeCwgX19sb2NhbCBmbG9hdDQgKmNvc3ZhbCk7CmZsb2F0OCBfX292bGQgc2luY29zKGZsb2F0OCB4LCBfX2xvY2FsIGZsb2F0OCAqY29zdmFsKTsKZmxvYXQxNiBfX292bGQgc2luY29zKGZsb2F0MTYgeCwgX19sb2NhbCBmbG9hdDE2ICpjb3N2YWwpOwpmbG9hdCBfX292bGQgc2luY29zKGZsb2F0IHgsIF9fcHJpdmF0ZSBmbG9hdCAqY29zdmFsKTsKZmxvYXQyIF9fb3ZsZCBzaW5jb3MoZmxvYXQyIHgsIF9fcHJpdmF0ZSBmbG9hdDIgKmNvc3ZhbCk7CmZsb2F0MyBfX292bGQgc2luY29zKGZsb2F0MyB4LCBfX3ByaXZhdGUgZmxvYXQzICpjb3N2YWwpOwpmbG9hdDQgX19vdmxkIHNpbmNvcyhmbG9hdDQgeCwgX19wcml2YXRlIGZsb2F0NCAqY29zdmFsKTsKZmxvYXQ4IF9fb3ZsZCBzaW5jb3MoZmxvYXQ4IHgsIF9fcHJpdmF0ZSBmbG9hdDggKmNvc3ZhbCk7CmZsb2F0MTYgX19vdmxkIHNpbmNvcyhmbG9hdDE2IHgsIF9fcHJpdmF0ZSBmbG9hdDE2ICpjb3N2YWwpOwojaWZkZWYgY2xfa2hyX2ZwNjQKZG91YmxlIF9fb3ZsZCBzaW5jb3MoZG91YmxlIHgsIF9fZ2xvYmFsIGRvdWJsZSAqY29zdmFsKTsKZG91YmxlMiBfX292bGQgc2luY29zKGRvdWJsZTIgeCwgX19nbG9iYWwgZG91YmxlMiAqY29zdmFsKTsKZG91YmxlMyBfX292bGQgc2luY29zKGRvdWJsZTMgeCwgX19nbG9iYWwgZG91YmxlMyAqY29zdmFsKTsKZG91YmxlNCBfX292bGQgc2luY29zKGRvdWJsZTQgeCwgX19nbG9iYWwgZG91YmxlNCAqY29zdmFsKTsKZG91YmxlOCBfX292bGQgc2luY29zKGRvdWJsZTggeCwgX19nbG9iYWwgZG91YmxlOCAqY29zdmFsKTsKZG91YmxlMTYgX19vdmxkIHNpbmNvcyhkb3VibGUxNiB4LCBfX2dsb2JhbCBkb3VibGUxNiAqY29zdmFsKTsKZG91YmxlIF9fb3ZsZCBzaW5jb3MoZG91YmxlIHgsIF9fbG9jYWwgZG91YmxlICpjb3N2YWwpOwpkb3VibGUyIF9fb3ZsZCBzaW5jb3MoZG91YmxlMiB4LCBfX2xvY2FsIGRvdWJsZTIgKmNvc3ZhbCk7CmRvdWJsZTMgX19vdmxkIHNpbmNvcyhkb3VibGUzIHgsIF9fbG9jYWwgZG91YmxlMyAqY29zdmFsKTsKZG91YmxlNCBfX292bGQgc2luY29zKGRvdWJsZTQgeCwgX19sb2NhbCBkb3VibGU0ICpjb3N2YWwpOwpkb3VibGU4IF9fb3ZsZCBzaW5jb3MoZG91YmxlOCB4LCBfX2xvY2FsIGRvdWJsZTggKmNvc3ZhbCk7CmRvdWJsZTE2IF9fb3ZsZCBzaW5jb3MoZG91YmxlMTYgeCwgX19sb2NhbCBkb3VibGUxNiAqY29zdmFsKTsKZG91YmxlIF9fb3ZsZCBzaW5jb3MoZG91YmxlIHgsIF9fcHJpdmF0ZSBkb3VibGUgKmNvc3ZhbCk7CmRvdWJsZTIgX19vdmxkIHNpbmNvcyhkb3VibGUyIHgsIF9fcHJpdmF0ZSBkb3VibGUyICpjb3N2YWwpOwpkb3VibGUzIF9fb3ZsZCBzaW5jb3MoZG91YmxlMyB4LCBfX3ByaXZhdGUgZG91YmxlMyAqY29zdmFsKTsKZG91YmxlNCBfX292bGQgc2luY29zKGRvdWJsZTQgeCwgX19wcml2YXRlIGRvdWJsZTQgKmNvc3ZhbCk7CmRvdWJsZTggX19vdmxkIHNpbmNvcyhkb3VibGU4IHgsIF9fcHJpdmF0ZSBkb3VibGU4ICpjb3N2YWwpOwpkb3VibGUxNiBfX292bGQgc2luY29zKGRvdWJsZTE2IHgsIF9fcHJpdmF0ZSBkb3VibGUxNiAqY29zdmFsKTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKI2lmZGVmIGNsX2tocl9mcDE2CmhhbGYgX19vdmxkIHNpbmNvcyhoYWxmIHgsIF9fZ2xvYmFsIGhhbGYgKmNvc3ZhbCk7CmhhbGYyIF9fb3ZsZCBzaW5jb3MoaGFsZjIgeCwgX19nbG9iYWwgaGFsZjIgKmNvc3ZhbCk7CmhhbGYzIF9fb3ZsZCBzaW5jb3MoaGFsZjMgeCwgX19nbG9iYWwgaGFsZjMgKmNvc3ZhbCk7CmhhbGY0IF9fb3ZsZCBzaW5jb3MoaGFsZjQgeCwgX19nbG9iYWwgaGFsZjQgKmNvc3ZhbCk7CmhhbGY4IF9fb3ZsZCBzaW5jb3MoaGFsZjggeCwgX19nbG9iYWwgaGFsZjggKmNvc3ZhbCk7CmhhbGYxNiBfX292bGQgc2luY29zKGhhbGYxNiB4LCBfX2dsb2JhbCBoYWxmMTYgKmNvc3ZhbCk7CmhhbGYgX19vdmxkIHNpbmNvcyhoYWxmIHgsIF9fbG9jYWwgaGFsZiAqY29zdmFsKTsKaGFsZjIgX19vdmxkIHNpbmNvcyhoYWxmMiB4LCBfX2xvY2FsIGhhbGYyICpjb3N2YWwpOwpoYWxmMyBfX292bGQgc2luY29zKGhhbGYzIHgsIF9fbG9jYWwgaGFsZjMgKmNvc3ZhbCk7CmhhbGY0IF9fb3ZsZCBzaW5jb3MoaGFsZjQgeCwgX19sb2NhbCBoYWxmNCAqY29zdmFsKTsKaGFsZjggX19vdmxkIHNpbmNvcyhoYWxmOCB4LCBfX2xvY2FsIGhhbGY4ICpjb3N2YWwpOwpoYWxmMTYgX19vdmxkIHNpbmNvcyhoYWxmMTYgeCwgX19sb2NhbCBoYWxmMTYgKmNvc3ZhbCk7CmhhbGYgX19vdmxkIHNpbmNvcyhoYWxmIHgsIF9fcHJpdmF0ZSBoYWxmICpjb3N2YWwpOwpoYWxmMiBfX292bGQgc2luY29zKGhhbGYyIHgsIF9fcHJpdmF0ZSBoYWxmMiAqY29zdmFsKTsKaGFsZjMgX19vdmxkIHNpbmNvcyhoYWxmMyB4LCBfX3ByaXZhdGUgaGFsZjMgKmNvc3ZhbCk7CmhhbGY0IF9fb3ZsZCBzaW5jb3MoaGFsZjQgeCwgX19wcml2YXRlIGhhbGY0ICpjb3N2YWwpOwpoYWxmOCBfX292bGQgc2luY29zKGhhbGY4IHgsIF9fcHJpdmF0ZSBoYWxmOCAqY29zdmFsKTsKaGFsZjE2IF9fb3ZsZCBzaW5jb3MoaGFsZjE2IHgsIF9fcHJpdmF0ZSBoYWxmMTYgKmNvc3ZhbCk7CiNlbmRpZiAvL2NsX2tocl9mcDE2CiNlbmRpZiAvL2RlZmluZWQoX19vcGVuY2xfY19nZW5lcmljX2FkZHJlc3Nfc3BhY2UpCgovKioKICogQ29tcHV0ZSBoeXBlcmJvbGljIHNpbmUuCiAqLwpmbG9hdCBfX292bGQgX19jbmZuIHNpbmgoZmxvYXQpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBzaW5oKGZsb2F0Mik7CmZsb2F0MyBfX292bGQgX19jbmZuIHNpbmgoZmxvYXQzKTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gc2luaChmbG9hdDQpOwpmbG9hdDggX19vdmxkIF9fY25mbiBzaW5oKGZsb2F0OCk7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBzaW5oKGZsb2F0MTYpOwojaWZkZWYgY2xfa2hyX2ZwNjQKZG91YmxlIF9fb3ZsZCBfX2NuZm4gc2luaChkb3VibGUpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gc2luaChkb3VibGUyKTsKZG91YmxlMyBfX292bGQgX19jbmZuIHNpbmgoZG91YmxlMyk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiBzaW5oKGRvdWJsZTQpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gc2luaChkb3VibGU4KTsKZG91YmxlMTYgX19vdmxkIF9fY25mbiBzaW5oKGRvdWJsZTE2KTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKI2lmZGVmIGNsX2tocl9mcDE2CmhhbGYgX19vdmxkIF9fY25mbiBzaW5oKGhhbGYpOwpoYWxmMiBfX292bGQgX19jbmZuIHNpbmgoaGFsZjIpOwpoYWxmMyBfX292bGQgX19jbmZuIHNpbmgoaGFsZjMpOwpoYWxmNCBfX292bGQgX19jbmZuIHNpbmgoaGFsZjQpOwpoYWxmOCBfX292bGQgX19jbmZuIHNpbmgoaGFsZjgpOwpoYWxmMTYgX19vdmxkIF9fY25mbiBzaW5oKGhhbGYxNik7CiNlbmRpZiAvL2NsX2tocl9mcDE2CgovKioKICogQ29tcHV0ZSBzaW4gKFBJICogeCkuCiAqLwpmbG9hdCBfX292bGQgX19jbmZuIHNpbnBpKGZsb2F0IHgpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBzaW5waShmbG9hdDIgeCk7CmZsb2F0MyBfX292bGQgX19jbmZuIHNpbnBpKGZsb2F0MyB4KTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gc2lucGkoZmxvYXQ0IHgpOwpmbG9hdDggX19vdmxkIF9fY25mbiBzaW5waShmbG9hdDggeCk7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBzaW5waShmbG9hdDE2IHgpOwojaWZkZWYgY2xfa2hyX2ZwNjQKZG91YmxlIF9fb3ZsZCBfX2NuZm4gc2lucGkoZG91YmxlIHgpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gc2lucGkoZG91YmxlMiB4KTsKZG91YmxlMyBfX292bGQgX19jbmZuIHNpbnBpKGRvdWJsZTMgeCk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiBzaW5waShkb3VibGU0IHgpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gc2lucGkoZG91YmxlOCB4KTsKZG91YmxlMTYgX19vdmxkIF9fY25mbiBzaW5waShkb3VibGUxNiB4KTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKI2lmZGVmIGNsX2tocl9mcDE2CmhhbGYgX19vdmxkIF9fY25mbiBzaW5waShoYWxmIHgpOwpoYWxmMiBfX292bGQgX19jbmZuIHNpbnBpKGhhbGYyIHgpOwpoYWxmMyBfX292bGQgX19jbmZuIHNpbnBpKGhhbGYzIHgpOwpoYWxmNCBfX292bGQgX19jbmZuIHNpbnBpKGhhbGY0IHgpOwpoYWxmOCBfX292bGQgX19jbmZuIHNpbnBpKGhhbGY4IHgpOwpoYWxmMTYgX19vdmxkIF9fY25mbiBzaW5waShoYWxmMTYgeCk7CiNlbmRpZiAvL2NsX2tocl9mcDE2CgovKioKICogQ29tcHV0ZSBzcXVhcmUgcm9vdC4KICovCmZsb2F0IF9fb3ZsZCBfX2NuZm4gc3FydChmbG9hdCk7CmZsb2F0MiBfX292bGQgX19jbmZuIHNxcnQoZmxvYXQyKTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gc3FydChmbG9hdDMpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBzcXJ0KGZsb2F0NCk7CmZsb2F0OCBfX292bGQgX19jbmZuIHNxcnQoZmxvYXQ4KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIHNxcnQoZmxvYXQxNik7CiNpZmRlZiBjbF9raHJfZnA2NApkb3VibGUgX19vdmxkIF9fY25mbiBzcXJ0KGRvdWJsZSk7CmRvdWJsZTIgX19vdmxkIF9fY25mbiBzcXJ0KGRvdWJsZTIpOwpkb3VibGUzIF9fb3ZsZCBfX2NuZm4gc3FydChkb3VibGUzKTsKZG91YmxlNCBfX292bGQgX19jbmZuIHNxcnQoZG91YmxlNCk7CmRvdWJsZTggX19vdmxkIF9fY25mbiBzcXJ0KGRvdWJsZTgpOwpkb3VibGUxNiBfX292bGQgX19jbmZuIHNxcnQoZG91YmxlMTYpOwojZW5kaWYgLy9jbF9raHJfZnA2NAojaWZkZWYgY2xfa2hyX2ZwMTYKaGFsZiBfX292bGQgX19jbmZuIHNxcnQoaGFsZik7CmhhbGYyIF9fb3ZsZCBfX2NuZm4gc3FydChoYWxmMik7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gc3FydChoYWxmMyk7CmhhbGY0IF9fb3ZsZCBfX2NuZm4gc3FydChoYWxmNCk7CmhhbGY4IF9fb3ZsZCBfX2NuZm4gc3FydChoYWxmOCk7CmhhbGYxNiBfX292bGQgX19jbmZuIHNxcnQoaGFsZjE2KTsKI2VuZGlmIC8vY2xfa2hyX2ZwMTYKCi8qKgogKiBDb21wdXRlIHRhbmdlbnQuCiAqLwpmbG9hdCBfX292bGQgX19jbmZuIHRhbihmbG9hdCk7CmZsb2F0MiBfX292bGQgX19jbmZuIHRhbihmbG9hdDIpOwpmbG9hdDMgX19vdmxkIF9fY25mbiB0YW4oZmxvYXQzKTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gdGFuKGZsb2F0NCk7CmZsb2F0OCBfX292bGQgX19jbmZuIHRhbihmbG9hdDgpOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gdGFuKGZsb2F0MTYpOwojaWZkZWYgY2xfa2hyX2ZwNjQKZG91YmxlIF9fb3ZsZCBfX2NuZm4gdGFuKGRvdWJsZSk7CmRvdWJsZTIgX19vdmxkIF9fY25mbiB0YW4oZG91YmxlMik7CmRvdWJsZTMgX19vdmxkIF9fY25mbiB0YW4oZG91YmxlMyk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiB0YW4oZG91YmxlNCk7CmRvdWJsZTggX19vdmxkIF9fY25mbiB0YW4oZG91YmxlOCk7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gdGFuKGRvdWJsZTE2KTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKI2lmZGVmIGNsX2tocl9mcDE2CmhhbGYgX19vdmxkIF9fY25mbiB0YW4oaGFsZik7CmhhbGYyIF9fb3ZsZCBfX2NuZm4gdGFuKGhhbGYyKTsKaGFsZjMgX19vdmxkIF9fY25mbiB0YW4oaGFsZjMpOwpoYWxmNCBfX292bGQgX19jbmZuIHRhbihoYWxmNCk7CmhhbGY4IF9fb3ZsZCBfX2NuZm4gdGFuKGhhbGY4KTsKaGFsZjE2IF9fb3ZsZCBfX2NuZm4gdGFuKGhhbGYxNik7CiNlbmRpZiAvL2NsX2tocl9mcDE2CgovKioKICogQ29tcHV0ZSBoeXBlcmJvbGljIHRhbmdlbnQuCiAqLwpmbG9hdCBfX292bGQgX19jbmZuIHRhbmgoZmxvYXQpOwpmbG9hdDIgX19vdmxkIF9fY25mbiB0YW5oKGZsb2F0Mik7CmZsb2F0MyBfX292bGQgX19jbmZuIHRhbmgoZmxvYXQzKTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gdGFuaChmbG9hdDQpOwpmbG9hdDggX19vdmxkIF9fY25mbiB0YW5oKGZsb2F0OCk7CmZsb2F0MTYgX19vdmxkIF9fY25mbiB0YW5oKGZsb2F0MTYpOwojaWZkZWYgY2xfa2hyX2ZwNjQKZG91YmxlIF9fb3ZsZCBfX2NuZm4gdGFuaChkb3VibGUpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gdGFuaChkb3VibGUyKTsKZG91YmxlMyBfX292bGQgX19jbmZuIHRhbmgoZG91YmxlMyk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiB0YW5oKGRvdWJsZTQpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gdGFuaChkb3VibGU4KTsKZG91YmxlMTYgX19vdmxkIF9fY25mbiB0YW5oKGRvdWJsZTE2KTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKI2lmZGVmIGNsX2tocl9mcDE2CmhhbGYgX19vdmxkIF9fY25mbiB0YW5oKGhhbGYpOwpoYWxmMiBfX292bGQgX19jbmZuIHRhbmgoaGFsZjIpOwpoYWxmMyBfX292bGQgX19jbmZuIHRhbmgoaGFsZjMpOwpoYWxmNCBfX292bGQgX19jbmZuIHRhbmgoaGFsZjQpOwpoYWxmOCBfX292bGQgX19jbmZuIHRhbmgoaGFsZjgpOwpoYWxmMTYgX19vdmxkIF9fY25mbiB0YW5oKGhhbGYxNik7CiNlbmRpZiAvL2NsX2tocl9mcDE2CgovKioKICogQ29tcHV0ZSB0YW4gKFBJICogeCkuCiAqLwpmbG9hdCBfX292bGQgX19jbmZuIHRhbnBpKGZsb2F0IHgpOwpmbG9hdDIgX19vdmxkIF9fY25mbiB0YW5waShmbG9hdDIgeCk7CmZsb2F0MyBfX292bGQgX19jbmZuIHRhbnBpKGZsb2F0MyB4KTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gdGFucGkoZmxvYXQ0IHgpOwpmbG9hdDggX19vdmxkIF9fY25mbiB0YW5waShmbG9hdDggeCk7CmZsb2F0MTYgX19vdmxkIF9fY25mbiB0YW5waShmbG9hdDE2IHgpOwojaWZkZWYgY2xfa2hyX2ZwNjQKZG91YmxlIF9fb3ZsZCBfX2NuZm4gdGFucGkoZG91YmxlIHgpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gdGFucGkoZG91YmxlMiB4KTsKZG91YmxlMyBfX292bGQgX19jbmZuIHRhbnBpKGRvdWJsZTMgeCk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiB0YW5waShkb3VibGU0IHgpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gdGFucGkoZG91YmxlOCB4KTsKZG91YmxlMTYgX19vdmxkIF9fY25mbiB0YW5waShkb3VibGUxNiB4KTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKI2lmZGVmIGNsX2tocl9mcDE2CmhhbGYgX19vdmxkIF9fY25mbiB0YW5waShoYWxmIHgpOwpoYWxmMiBfX292bGQgX19jbmZuIHRhbnBpKGhhbGYyIHgpOwpoYWxmMyBfX292bGQgX19jbmZuIHRhbnBpKGhhbGYzIHgpOwpoYWxmNCBfX292bGQgX19jbmZuIHRhbnBpKGhhbGY0IHgpOwpoYWxmOCBfX292bGQgX19jbmZuIHRhbnBpKGhhbGY4IHgpOwpoYWxmMTYgX19vdmxkIF9fY25mbiB0YW5waShoYWxmMTYgeCk7CiNlbmRpZiAvL2NsX2tocl9mcDE2CgovKioKICogQ29tcHV0ZSB0aGUgZ2FtbWEgZnVuY3Rpb24uCiAqLwpmbG9hdCBfX292bGQgX19jbmZuIHRnYW1tYShmbG9hdCk7CmZsb2F0MiBfX292bGQgX19jbmZuIHRnYW1tYShmbG9hdDIpOwpmbG9hdDMgX19vdmxkIF9fY25mbiB0Z2FtbWEoZmxvYXQzKTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gdGdhbW1hKGZsb2F0NCk7CmZsb2F0OCBfX292bGQgX19jbmZuIHRnYW1tYShmbG9hdDgpOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gdGdhbW1hKGZsb2F0MTYpOwojaWZkZWYgY2xfa2hyX2ZwNjQKZG91YmxlIF9fb3ZsZCBfX2NuZm4gdGdhbW1hKGRvdWJsZSk7CmRvdWJsZTIgX19vdmxkIF9fY25mbiB0Z2FtbWEoZG91YmxlMik7CmRvdWJsZTMgX19vdmxkIF9fY25mbiB0Z2FtbWEoZG91YmxlMyk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiB0Z2FtbWEoZG91YmxlNCk7CmRvdWJsZTggX19vdmxkIF9fY25mbiB0Z2FtbWEoZG91YmxlOCk7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gdGdhbW1hKGRvdWJsZTE2KTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKI2lmZGVmIGNsX2tocl9mcDE2CmhhbGYgX19vdmxkIF9fY25mbiB0Z2FtbWEoaGFsZik7CmhhbGYyIF9fb3ZsZCBfX2NuZm4gdGdhbW1hKGhhbGYyKTsKaGFsZjMgX19vdmxkIF9fY25mbiB0Z2FtbWEoaGFsZjMpOwpoYWxmNCBfX292bGQgX19jbmZuIHRnYW1tYShoYWxmNCk7CmhhbGY4IF9fb3ZsZCBfX2NuZm4gdGdhbW1hKGhhbGY4KTsKaGFsZjE2IF9fb3ZsZCBfX2NuZm4gdGdhbW1hKGhhbGYxNik7CiNlbmRpZiAvL2NsX2tocl9mcDE2CgovKioKICogUm91bmQgdG8gaW50ZWdyYWwgdmFsdWUgdXNpbmcgdGhlIHJvdW5kIHRvIHplcm8KICogcm91bmRpbmcgbW9kZS4KICovCmZsb2F0IF9fb3ZsZCBfX2NuZm4gdHJ1bmMoZmxvYXQpOwpmbG9hdDIgX19vdmxkIF9fY25mbiB0cnVuYyhmbG9hdDIpOwpmbG9hdDMgX19vdmxkIF9fY25mbiB0cnVuYyhmbG9hdDMpOwpmbG9hdDQgX19vdmxkIF9fY25mbiB0cnVuYyhmbG9hdDQpOwpmbG9hdDggX19vdmxkIF9fY25mbiB0cnVuYyhmbG9hdDgpOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gdHJ1bmMoZmxvYXQxNik7CiNpZmRlZiBjbF9raHJfZnA2NApkb3VibGUgX19vdmxkIF9fY25mbiB0cnVuYyhkb3VibGUpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gdHJ1bmMoZG91YmxlMik7CmRvdWJsZTMgX19vdmxkIF9fY25mbiB0cnVuYyhkb3VibGUzKTsKZG91YmxlNCBfX292bGQgX19jbmZuIHRydW5jKGRvdWJsZTQpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gdHJ1bmMoZG91YmxlOCk7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gdHJ1bmMoZG91YmxlMTYpOwojZW5kaWYgLy9jbF9raHJfZnA2NAojaWZkZWYgY2xfa2hyX2ZwMTYKaGFsZiBfX292bGQgX19jbmZuIHRydW5jKGhhbGYpOwpoYWxmMiBfX292bGQgX19jbmZuIHRydW5jKGhhbGYyKTsKaGFsZjMgX19vdmxkIF9fY25mbiB0cnVuYyhoYWxmMyk7CmhhbGY0IF9fb3ZsZCBfX2NuZm4gdHJ1bmMoaGFsZjQpOwpoYWxmOCBfX292bGQgX19jbmZuIHRydW5jKGhhbGY4KTsKaGFsZjE2IF9fb3ZsZCBfX2NuZm4gdHJ1bmMoaGFsZjE2KTsKI2VuZGlmIC8vY2xfa2hyX2ZwMTYKCi8qKgogKiBDb21wdXRlIGNvc2luZS4geCBtdXN0IGJlIGluIHRoZSByYW5nZSAtMl4xNiAuLi4gKzJeMTYuCiAqLwpmbG9hdCBfX292bGQgX19jbmZuIGhhbGZfY29zKGZsb2F0IHgpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBoYWxmX2NvcyhmbG9hdDIgeCk7CmZsb2F0MyBfX292bGQgX19jbmZuIGhhbGZfY29zKGZsb2F0MyB4KTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gaGFsZl9jb3MoZmxvYXQ0IHgpOwpmbG9hdDggX19vdmxkIF9fY25mbiBoYWxmX2NvcyhmbG9hdDggeCk7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBoYWxmX2NvcyhmbG9hdDE2IHgpOwoKLyoqCiAqIENvbXB1dGUgeCAvIHkuCiAqLwpmbG9hdCBfX292bGQgX19jbmZuIGhhbGZfZGl2aWRlKGZsb2F0IHgsIGZsb2F0IHkpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBoYWxmX2RpdmlkZShmbG9hdDIgeCwgZmxvYXQyIHkpOwpmbG9hdDMgX19vdmxkIF9fY25mbiBoYWxmX2RpdmlkZShmbG9hdDMgeCwgZmxvYXQzIHkpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBoYWxmX2RpdmlkZShmbG9hdDQgeCwgZmxvYXQ0IHkpOwpmbG9hdDggX19vdmxkIF9fY25mbiBoYWxmX2RpdmlkZShmbG9hdDggeCwgZmxvYXQ4IHkpOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gaGFsZl9kaXZpZGUoZmxvYXQxNiB4LCBmbG9hdDE2IHkpOwoKLyoqCiAqIENvbXB1dGUgdGhlIGJhc2UtIGUgZXhwb25lbnRpYWwgb2YgeC4KICovCmZsb2F0IF9fb3ZsZCBfX2NuZm4gaGFsZl9leHAoZmxvYXQgeCk7CmZsb2F0MiBfX292bGQgX19jbmZuIGhhbGZfZXhwKGZsb2F0MiB4KTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gaGFsZl9leHAoZmxvYXQzIHgpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBoYWxmX2V4cChmbG9hdDQgeCk7CmZsb2F0OCBfX292bGQgX19jbmZuIGhhbGZfZXhwKGZsb2F0OCB4KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGhhbGZfZXhwKGZsb2F0MTYgeCk7CgovKioKICogQ29tcHV0ZSB0aGUgYmFzZS0gMiBleHBvbmVudGlhbCBvZiB4LgogKi8KZmxvYXQgX19vdmxkIF9fY25mbiBoYWxmX2V4cDIoZmxvYXQgeCk7CmZsb2F0MiBfX292bGQgX19jbmZuIGhhbGZfZXhwMihmbG9hdDIgeCk7CmZsb2F0MyBfX292bGQgX19jbmZuIGhhbGZfZXhwMihmbG9hdDMgeCk7CmZsb2F0NCBfX292bGQgX19jbmZuIGhhbGZfZXhwMihmbG9hdDQgeCk7CmZsb2F0OCBfX292bGQgX19jbmZuIGhhbGZfZXhwMihmbG9hdDggeCk7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBoYWxmX2V4cDIoZmxvYXQxNiB4KTsKCi8qKgogKiBDb21wdXRlIHRoZSBiYXNlLSAxMCBleHBvbmVudGlhbCBvZiB4LgogKi8KZmxvYXQgX19vdmxkIF9fY25mbiBoYWxmX2V4cDEwKGZsb2F0IHgpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBoYWxmX2V4cDEwKGZsb2F0MiB4KTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gaGFsZl9leHAxMChmbG9hdDMgeCk7CmZsb2F0NCBfX292bGQgX19jbmZuIGhhbGZfZXhwMTAoZmxvYXQ0IHgpOwpmbG9hdDggX19vdmxkIF9fY25mbiBoYWxmX2V4cDEwKGZsb2F0OCB4KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGhhbGZfZXhwMTAoZmxvYXQxNiB4KTsKCi8qKgogKiBDb21wdXRlIG5hdHVyYWwgbG9nYXJpdGhtLgogKi8KZmxvYXQgX19vdmxkIF9fY25mbiBoYWxmX2xvZyhmbG9hdCB4KTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gaGFsZl9sb2coZmxvYXQyIHgpOwpmbG9hdDMgX19vdmxkIF9fY25mbiBoYWxmX2xvZyhmbG9hdDMgeCk7CmZsb2F0NCBfX292bGQgX19jbmZuIGhhbGZfbG9nKGZsb2F0NCB4KTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gaGFsZl9sb2coZmxvYXQ4IHgpOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gaGFsZl9sb2coZmxvYXQxNiB4KTsKCi8qKgogKiBDb21wdXRlIGEgYmFzZSAyIGxvZ2FyaXRobS4KICovCmZsb2F0IF9fb3ZsZCBfX2NuZm4gaGFsZl9sb2cyKGZsb2F0IHgpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBoYWxmX2xvZzIoZmxvYXQyIHgpOwpmbG9hdDMgX19vdmxkIF9fY25mbiBoYWxmX2xvZzIoZmxvYXQzIHgpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBoYWxmX2xvZzIoZmxvYXQ0IHgpOwpmbG9hdDggX19vdmxkIF9fY25mbiBoYWxmX2xvZzIoZmxvYXQ4IHgpOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gaGFsZl9sb2cyKGZsb2F0MTYgeCk7CgovKioKICogQ29tcHV0ZSBhIGJhc2UgMTAgbG9nYXJpdGhtLgogKi8KZmxvYXQgX19vdmxkIF9fY25mbiBoYWxmX2xvZzEwKGZsb2F0IHgpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBoYWxmX2xvZzEwKGZsb2F0MiB4KTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gaGFsZl9sb2cxMChmbG9hdDMgeCk7CmZsb2F0NCBfX292bGQgX19jbmZuIGhhbGZfbG9nMTAoZmxvYXQ0IHgpOwpmbG9hdDggX19vdmxkIF9fY25mbiBoYWxmX2xvZzEwKGZsb2F0OCB4KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGhhbGZfbG9nMTAoZmxvYXQxNiB4KTsKCi8qKgogKiBDb21wdXRlIHggdG8gdGhlIHBvd2VyIHksIHdoZXJlIHggaXMgPj0gMC4KICovCmZsb2F0IF9fb3ZsZCBfX2NuZm4gaGFsZl9wb3dyKGZsb2F0IHgsIGZsb2F0IHkpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBoYWxmX3Bvd3IoZmxvYXQyIHgsIGZsb2F0MiB5KTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gaGFsZl9wb3dyKGZsb2F0MyB4LCBmbG9hdDMgeSk7CmZsb2F0NCBfX292bGQgX19jbmZuIGhhbGZfcG93cihmbG9hdDQgeCwgZmxvYXQ0IHkpOwpmbG9hdDggX19vdmxkIF9fY25mbiBoYWxmX3Bvd3IoZmxvYXQ4IHgsIGZsb2F0OCB5KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGhhbGZfcG93cihmbG9hdDE2IHgsIGZsb2F0MTYgeSk7CgovKioKICogQ29tcHV0ZSByZWNpcHJvY2FsLgogKi8KZmxvYXQgX19vdmxkIF9fY25mbiBoYWxmX3JlY2lwKGZsb2F0IHgpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBoYWxmX3JlY2lwKGZsb2F0MiB4KTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gaGFsZl9yZWNpcChmbG9hdDMgeCk7CmZsb2F0NCBfX292bGQgX19jbmZuIGhhbGZfcmVjaXAoZmxvYXQ0IHgpOwpmbG9hdDggX19vdmxkIF9fY25mbiBoYWxmX3JlY2lwKGZsb2F0OCB4KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGhhbGZfcmVjaXAoZmxvYXQxNiB4KTsKCi8qKgogKiBDb21wdXRlIGludmVyc2Ugc3F1YXJlIHJvb3QuCiAqLwpmbG9hdCBfX292bGQgX19jbmZuIGhhbGZfcnNxcnQoZmxvYXQgeCk7CmZsb2F0MiBfX292bGQgX19jbmZuIGhhbGZfcnNxcnQoZmxvYXQyIHgpOwpmbG9hdDMgX19vdmxkIF9fY25mbiBoYWxmX3JzcXJ0KGZsb2F0MyB4KTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gaGFsZl9yc3FydChmbG9hdDQgeCk7CmZsb2F0OCBfX292bGQgX19jbmZuIGhhbGZfcnNxcnQoZmxvYXQ4IHgpOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gaGFsZl9yc3FydChmbG9hdDE2IHgpOwoKLyoqCiAqIENvbXB1dGUgc2luZS4geCBtdXN0IGJlIGluIHRoZSByYW5nZSAtMl4xNiAuLi4gKzJeMTYuCiAqLwpmbG9hdCBfX292bGQgX19jbmZuIGhhbGZfc2luKGZsb2F0IHgpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBoYWxmX3NpbihmbG9hdDIgeCk7CmZsb2F0MyBfX292bGQgX19jbmZuIGhhbGZfc2luKGZsb2F0MyB4KTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gaGFsZl9zaW4oZmxvYXQ0IHgpOwpmbG9hdDggX19vdmxkIF9fY25mbiBoYWxmX3NpbihmbG9hdDggeCk7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBoYWxmX3NpbihmbG9hdDE2IHgpOwoKLyoqCiAqIENvbXB1dGUgc3F1YXJlIHJvb3QuCiAqLwpmbG9hdCBfX292bGQgX19jbmZuIGhhbGZfc3FydChmbG9hdCB4KTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gaGFsZl9zcXJ0KGZsb2F0MiB4KTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gaGFsZl9zcXJ0KGZsb2F0MyB4KTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gaGFsZl9zcXJ0KGZsb2F0NCB4KTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gaGFsZl9zcXJ0KGZsb2F0OCB4KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGhhbGZfc3FydChmbG9hdDE2IHgpOwoKLyoqCiAqIENvbXB1dGUgdGFuZ2VudC4geCBtdXN0IGJlIGluIHRoZSByYW5nZSAtMjE2IC4uLiArMjE2LgogKi8KZmxvYXQgX19vdmxkIF9fY25mbiBoYWxmX3RhbihmbG9hdCB4KTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gaGFsZl90YW4oZmxvYXQyIHgpOwpmbG9hdDMgX19vdmxkIF9fY25mbiBoYWxmX3RhbihmbG9hdDMgeCk7CmZsb2F0NCBfX292bGQgX19jbmZuIGhhbGZfdGFuKGZsb2F0NCB4KTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gaGFsZl90YW4oZmxvYXQ4IHgpOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gaGFsZl90YW4oZmxvYXQxNiB4KTsKCi8qKgogKiBDb21wdXRlIGNvc2luZSBvdmVyIGFuIGltcGxlbWVudGF0aW9uLWRlZmluZWQgcmFuZ2UuCiAqIFRoZSBtYXhpbXVtIGVycm9yIGlzIGltcGxlbWVudGF0aW9uLWRlZmluZWQuCiAqLwpmbG9hdCBfX292bGQgX19jbmZuIG5hdGl2ZV9jb3MoZmxvYXQgeCk7CmZsb2F0MiBfX292bGQgX19jbmZuIG5hdGl2ZV9jb3MoZmxvYXQyIHgpOwpmbG9hdDMgX19vdmxkIF9fY25mbiBuYXRpdmVfY29zKGZsb2F0MyB4KTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gbmF0aXZlX2NvcyhmbG9hdDQgeCk7CmZsb2F0OCBfX292bGQgX19jbmZuIG5hdGl2ZV9jb3MoZmxvYXQ4IHgpOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gbmF0aXZlX2NvcyhmbG9hdDE2IHgpOwoKLyoqCiAqIENvbXB1dGUgeCAvIHkgb3ZlciBhbiBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkIHJhbmdlLgogKiBUaGUgbWF4aW11bSBlcnJvciBpcyBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkLgogKi8KZmxvYXQgX19vdmxkIF9fY25mbiBuYXRpdmVfZGl2aWRlKGZsb2F0IHgsIGZsb2F0IHkpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBuYXRpdmVfZGl2aWRlKGZsb2F0MiB4LCBmbG9hdDIgeSk7CmZsb2F0MyBfX292bGQgX19jbmZuIG5hdGl2ZV9kaXZpZGUoZmxvYXQzIHgsIGZsb2F0MyB5KTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gbmF0aXZlX2RpdmlkZShmbG9hdDQgeCwgZmxvYXQ0IHkpOwpmbG9hdDggX19vdmxkIF9fY25mbiBuYXRpdmVfZGl2aWRlKGZsb2F0OCB4LCBmbG9hdDggeSk7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBuYXRpdmVfZGl2aWRlKGZsb2F0MTYgeCwgZmxvYXQxNiB5KTsKCi8qKgogKiBDb21wdXRlIHRoZSBiYXNlLSBlIGV4cG9uZW50aWFsIG9mIHggb3ZlciBhbgogKiBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkIHJhbmdlLiBUaGUgbWF4aW11bSBlcnJvciBpcwogKiBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkLgogKi8KZmxvYXQgX19vdmxkIF9fY25mbiBuYXRpdmVfZXhwKGZsb2F0IHgpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBuYXRpdmVfZXhwKGZsb2F0MiB4KTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gbmF0aXZlX2V4cChmbG9hdDMgeCk7CmZsb2F0NCBfX292bGQgX19jbmZuIG5hdGl2ZV9leHAoZmxvYXQ0IHgpOwpmbG9hdDggX19vdmxkIF9fY25mbiBuYXRpdmVfZXhwKGZsb2F0OCB4KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIG5hdGl2ZV9leHAoZmxvYXQxNiB4KTsKCi8qKgogKiBDb21wdXRlIHRoZSBiYXNlLSAyIGV4cG9uZW50aWFsIG9mIHggb3ZlciBhbgogKiBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkIHJhbmdlLiBUaGUgbWF4aW11bSBlcnJvciBpcwogKiBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkLgogKi8KZmxvYXQgX19vdmxkIF9fY25mbiBuYXRpdmVfZXhwMihmbG9hdCB4KTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gbmF0aXZlX2V4cDIoZmxvYXQyIHgpOwpmbG9hdDMgX19vdmxkIF9fY25mbiBuYXRpdmVfZXhwMihmbG9hdDMgeCk7CmZsb2F0NCBfX292bGQgX19jbmZuIG5hdGl2ZV9leHAyKGZsb2F0NCB4KTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gbmF0aXZlX2V4cDIoZmxvYXQ4IHgpOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gbmF0aXZlX2V4cDIoZmxvYXQxNiB4KTsKCi8qKgogKiBDb21wdXRlIHRoZSBiYXNlLSAxMCBleHBvbmVudGlhbCBvZiB4IG92ZXIgYW4KICogaW1wbGVtZW50YXRpb24tZGVmaW5lZCByYW5nZS4gVGhlIG1heGltdW0gZXJyb3IgaXMKICogaW1wbGVtZW50YXRpb24tZGVmaW5lZC4KICovCmZsb2F0IF9fb3ZsZCBfX2NuZm4gbmF0aXZlX2V4cDEwKGZsb2F0IHgpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBuYXRpdmVfZXhwMTAoZmxvYXQyIHgpOwpmbG9hdDMgX19vdmxkIF9fY25mbiBuYXRpdmVfZXhwMTAoZmxvYXQzIHgpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBuYXRpdmVfZXhwMTAoZmxvYXQ0IHgpOwpmbG9hdDggX19vdmxkIF9fY25mbiBuYXRpdmVfZXhwMTAoZmxvYXQ4IHgpOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gbmF0aXZlX2V4cDEwKGZsb2F0MTYgeCk7CgovKioKICogQ29tcHV0ZSBuYXR1cmFsIGxvZ2FyaXRobSBvdmVyIGFuIGltcGxlbWVudGF0aW9uZGVmaW5lZAogKiByYW5nZS4gVGhlIG1heGltdW0gZXJyb3IgaXMgaW1wbGVtZW50YXRpb24KICogZGVmaW5lZC4KICovCmZsb2F0IF9fb3ZsZCBfX2NuZm4gbmF0aXZlX2xvZyhmbG9hdCB4KTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gbmF0aXZlX2xvZyhmbG9hdDIgeCk7CmZsb2F0MyBfX292bGQgX19jbmZuIG5hdGl2ZV9sb2coZmxvYXQzIHgpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBuYXRpdmVfbG9nKGZsb2F0NCB4KTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gbmF0aXZlX2xvZyhmbG9hdDggeCk7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBuYXRpdmVfbG9nKGZsb2F0MTYgeCk7CgovKioKICogQ29tcHV0ZSBhIGJhc2UgMiBsb2dhcml0aG0gb3ZlciBhbiBpbXBsZW1lbnRhdGlvbmRlZmluZWQKICogcmFuZ2UuIFRoZSBtYXhpbXVtIGVycm9yIGlzIGltcGxlbWVudGF0aW9uZGVmaW5lZC4KICovCmZsb2F0IF9fb3ZsZCBfX2NuZm4gbmF0aXZlX2xvZzIoZmxvYXQgeCk7CmZsb2F0MiBfX292bGQgX19jbmZuIG5hdGl2ZV9sb2cyKGZsb2F0MiB4KTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gbmF0aXZlX2xvZzIoZmxvYXQzIHgpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBuYXRpdmVfbG9nMihmbG9hdDQgeCk7CmZsb2F0OCBfX292bGQgX19jbmZuIG5hdGl2ZV9sb2cyKGZsb2F0OCB4KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIG5hdGl2ZV9sb2cyKGZsb2F0MTYgeCk7CgovKioKICogQ29tcHV0ZSBhIGJhc2UgMTAgbG9nYXJpdGhtIG92ZXIgYW4gaW1wbGVtZW50YXRpb25kZWZpbmVkCiAqIHJhbmdlLiBUaGUgbWF4aW11bSBlcnJvciBpcyBpbXBsZW1lbnRhdGlvbmRlZmluZWQuCiAqLwpmbG9hdCBfX292bGQgX19jbmZuIG5hdGl2ZV9sb2cxMChmbG9hdCB4KTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gbmF0aXZlX2xvZzEwKGZsb2F0MiB4KTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gbmF0aXZlX2xvZzEwKGZsb2F0MyB4KTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gbmF0aXZlX2xvZzEwKGZsb2F0NCB4KTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gbmF0aXZlX2xvZzEwKGZsb2F0OCB4KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIG5hdGl2ZV9sb2cxMChmbG9hdDE2IHgpOwoKLyoqCiAqIENvbXB1dGUgeCB0byB0aGUgcG93ZXIgeSwgd2hlcmUgeCBpcyA+PSAwLiBUaGUgcmFuZ2Ugb2YKICogeCBhbmQgeSBhcmUgaW1wbGVtZW50YXRpb24tZGVmaW5lZC4gVGhlIG1heGltdW0gZXJyb3IKICogaXMgaW1wbGVtZW50YXRpb24tZGVmaW5lZC4KICovCmZsb2F0IF9fb3ZsZCBfX2NuZm4gbmF0aXZlX3Bvd3IoZmxvYXQgeCwgZmxvYXQgeSk7CmZsb2F0MiBfX292bGQgX19jbmZuIG5hdGl2ZV9wb3dyKGZsb2F0MiB4LCBmbG9hdDIgeSk7CmZsb2F0MyBfX292bGQgX19jbmZuIG5hdGl2ZV9wb3dyKGZsb2F0MyB4LCBmbG9hdDMgeSk7CmZsb2F0NCBfX292bGQgX19jbmZuIG5hdGl2ZV9wb3dyKGZsb2F0NCB4LCBmbG9hdDQgeSk7CmZsb2F0OCBfX292bGQgX19jbmZuIG5hdGl2ZV9wb3dyKGZsb2F0OCB4LCBmbG9hdDggeSk7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBuYXRpdmVfcG93cihmbG9hdDE2IHgsIGZsb2F0MTYgeSk7CgovKioKICogQ29tcHV0ZSByZWNpcHJvY2FsIG92ZXIgYW4gaW1wbGVtZW50YXRpb24tZGVmaW5lZAogKiByYW5nZS4gVGhlIG1heGltdW0gZXJyb3IgaXMgaW1wbGVtZW50YXRpb24tZGVmaW5lZC4KICovCmZsb2F0IF9fb3ZsZCBfX2NuZm4gbmF0aXZlX3JlY2lwKGZsb2F0IHgpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBuYXRpdmVfcmVjaXAoZmxvYXQyIHgpOwpmbG9hdDMgX19vdmxkIF9fY25mbiBuYXRpdmVfcmVjaXAoZmxvYXQzIHgpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBuYXRpdmVfcmVjaXAoZmxvYXQ0IHgpOwpmbG9hdDggX19vdmxkIF9fY25mbiBuYXRpdmVfcmVjaXAoZmxvYXQ4IHgpOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gbmF0aXZlX3JlY2lwKGZsb2F0MTYgeCk7CgovKioKICogQ29tcHV0ZSBpbnZlcnNlIHNxdWFyZSByb290IG92ZXIgYW4gaW1wbGVtZW50YXRpb25kZWZpbmVkCiAqIHJhbmdlLiBUaGUgbWF4aW11bSBlcnJvciBpcyBpbXBsZW1lbnRhdGlvbmRlZmluZWQuCiAqLwpmbG9hdCBfX292bGQgX19jbmZuIG5hdGl2ZV9yc3FydChmbG9hdCB4KTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gbmF0aXZlX3JzcXJ0KGZsb2F0MiB4KTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gbmF0aXZlX3JzcXJ0KGZsb2F0MyB4KTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gbmF0aXZlX3JzcXJ0KGZsb2F0NCB4KTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gbmF0aXZlX3JzcXJ0KGZsb2F0OCB4KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIG5hdGl2ZV9yc3FydChmbG9hdDE2IHgpOwoKLyoqCiAqIENvbXB1dGUgc2luZSBvdmVyIGFuIGltcGxlbWVudGF0aW9uLWRlZmluZWQgcmFuZ2UuCiAqIFRoZSBtYXhpbXVtIGVycm9yIGlzIGltcGxlbWVudGF0aW9uLWRlZmluZWQuCiAqLwpmbG9hdCBfX292bGQgX19jbmZuIG5hdGl2ZV9zaW4oZmxvYXQgeCk7CmZsb2F0MiBfX292bGQgX19jbmZuIG5hdGl2ZV9zaW4oZmxvYXQyIHgpOwpmbG9hdDMgX19vdmxkIF9fY25mbiBuYXRpdmVfc2luKGZsb2F0MyB4KTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gbmF0aXZlX3NpbihmbG9hdDQgeCk7CmZsb2F0OCBfX292bGQgX19jbmZuIG5hdGl2ZV9zaW4oZmxvYXQ4IHgpOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gbmF0aXZlX3NpbihmbG9hdDE2IHgpOwoKLyoqCiAqIENvbXB1dGUgc3F1YXJlIHJvb3Qgb3ZlciBhbiBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkCiAqIHJhbmdlLiBUaGUgbWF4aW11bSBlcnJvciBpcyBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkLgogKi8KZmxvYXQgX19vdmxkIF9fY25mbiBuYXRpdmVfc3FydChmbG9hdCB4KTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gbmF0aXZlX3NxcnQoZmxvYXQyIHgpOwpmbG9hdDMgX19vdmxkIF9fY25mbiBuYXRpdmVfc3FydChmbG9hdDMgeCk7CmZsb2F0NCBfX292bGQgX19jbmZuIG5hdGl2ZV9zcXJ0KGZsb2F0NCB4KTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gbmF0aXZlX3NxcnQoZmxvYXQ4IHgpOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gbmF0aXZlX3NxcnQoZmxvYXQxNiB4KTsKCi8qKgogKiBDb21wdXRlIHRhbmdlbnQgb3ZlciBhbiBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkIHJhbmdlLgogKiBUaGUgbWF4aW11bSBlcnJvciBpcyBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkLgogKi8KZmxvYXQgX19vdmxkIF9fY25mbiBuYXRpdmVfdGFuKGZsb2F0IHgpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBuYXRpdmVfdGFuKGZsb2F0MiB4KTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gbmF0aXZlX3RhbihmbG9hdDMgeCk7CmZsb2F0NCBfX292bGQgX19jbmZuIG5hdGl2ZV90YW4oZmxvYXQ0IHgpOwpmbG9hdDggX19vdmxkIF9fY25mbiBuYXRpdmVfdGFuKGZsb2F0OCB4KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIG5hdGl2ZV90YW4oZmxvYXQxNiB4KTsKCi8vIE9wZW5DTCB2MS4xIHM2LjExLjMsIHYxLjIgczYuMTIuMywgdjIuMCBzNi4xMy4zIC0gSW50ZWdlciBGdW5jdGlvbnMKCi8qKgogKiBSZXR1cm5zIHwgeCB8LgogKi8KdWNoYXIgX19vdmxkIF9fY25mbiBhYnMoY2hhciB4KTsKdWNoYXIgX19vdmxkIF9fY25mbiBhYnModWNoYXIgeCk7CnVjaGFyMiBfX292bGQgX19jbmZuIGFicyhjaGFyMiB4KTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gYWJzKHVjaGFyMiB4KTsKdWNoYXIzIF9fb3ZsZCBfX2NuZm4gYWJzKGNoYXIzIHgpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBhYnModWNoYXIzIHgpOwp1Y2hhcjQgX19vdmxkIF9fY25mbiBhYnMoY2hhcjQgeCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGFicyh1Y2hhcjQgeCk7CnVjaGFyOCBfX292bGQgX19jbmZuIGFicyhjaGFyOCB4KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gYWJzKHVjaGFyOCB4KTsKdWNoYXIxNiBfX292bGQgX19jbmZuIGFicyhjaGFyMTYgeCk7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBhYnModWNoYXIxNiB4KTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gYWJzKHNob3J0IHgpOwp1c2hvcnQgX19vdmxkIF9fY25mbiBhYnModXNob3J0IHgpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gYWJzKHNob3J0MiB4KTsKdXNob3J0MiBfX292bGQgX19jbmZuIGFicyh1c2hvcnQyIHgpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gYWJzKHNob3J0MyB4KTsKdXNob3J0MyBfX292bGQgX19jbmZuIGFicyh1c2hvcnQzIHgpOwp1c2hvcnQ0IF9fb3ZsZCBfX2NuZm4gYWJzKHNob3J0NCB4KTsKdXNob3J0NCBfX292bGQgX19jbmZuIGFicyh1c2hvcnQ0IHgpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gYWJzKHNob3J0OCB4KTsKdXNob3J0OCBfX292bGQgX19jbmZuIGFicyh1c2hvcnQ4IHgpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGFicyhzaG9ydDE2IHgpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGFicyh1c2hvcnQxNiB4KTsKdWludCBfX292bGQgX19jbmZuIGFicyhpbnQgeCk7CnVpbnQgX19vdmxkIF9fY25mbiBhYnModWludCB4KTsKdWludDIgX19vdmxkIF9fY25mbiBhYnMoaW50MiB4KTsKdWludDIgX19vdmxkIF9fY25mbiBhYnModWludDIgeCk7CnVpbnQzIF9fb3ZsZCBfX2NuZm4gYWJzKGludDMgeCk7CnVpbnQzIF9fb3ZsZCBfX2NuZm4gYWJzKHVpbnQzIHgpOwp1aW50NCBfX292bGQgX19jbmZuIGFicyhpbnQ0IHgpOwp1aW50NCBfX292bGQgX19jbmZuIGFicyh1aW50NCB4KTsKdWludDggX19vdmxkIF9fY25mbiBhYnMoaW50OCB4KTsKdWludDggX19vdmxkIF9fY25mbiBhYnModWludDggeCk7CnVpbnQxNiBfX292bGQgX19jbmZuIGFicyhpbnQxNiB4KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gYWJzKHVpbnQxNiB4KTsKdWxvbmcgX19vdmxkIF9fY25mbiBhYnMobG9uZyB4KTsKdWxvbmcgX19vdmxkIF9fY25mbiBhYnModWxvbmcgeCk7CnVsb25nMiBfX292bGQgX19jbmZuIGFicyhsb25nMiB4KTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gYWJzKHVsb25nMiB4KTsKdWxvbmczIF9fb3ZsZCBfX2NuZm4gYWJzKGxvbmczIHgpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBhYnModWxvbmczIHgpOwp1bG9uZzQgX19vdmxkIF9fY25mbiBhYnMobG9uZzQgeCk7CnVsb25nNCBfX292bGQgX19jbmZuIGFicyh1bG9uZzQgeCk7CnVsb25nOCBfX292bGQgX19jbmZuIGFicyhsb25nOCB4KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gYWJzKHVsb25nOCB4KTsKdWxvbmcxNiBfX292bGQgX19jbmZuIGFicyhsb25nMTYgeCk7CnVsb25nMTYgX19vdmxkIF9fY25mbiBhYnModWxvbmcxNiB4KTsKCi8qKgogKiBSZXR1cm5zIHwgeCAtIHkgfCB3aXRob3V0IG1vZHVsbyBvdmVyZmxvdy4KICovCnVjaGFyIF9fb3ZsZCBfX2NuZm4gYWJzX2RpZmYoY2hhciB4LCBjaGFyIHkpOwp1Y2hhciBfX292bGQgX19jbmZuIGFic19kaWZmKHVjaGFyIHgsIHVjaGFyIHkpOwp1Y2hhcjIgX19vdmxkIF9fY25mbiBhYnNfZGlmZihjaGFyMiB4LCBjaGFyMiB5KTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gYWJzX2RpZmYodWNoYXIyIHgsIHVjaGFyMiB5KTsKdWNoYXIzIF9fb3ZsZCBfX2NuZm4gYWJzX2RpZmYoY2hhcjMgeCwgY2hhcjMgeSk7CnVjaGFyMyBfX292bGQgX19jbmZuIGFic19kaWZmKHVjaGFyMyB4LCB1Y2hhcjMgeSk7CnVjaGFyNCBfX292bGQgX19jbmZuIGFic19kaWZmKGNoYXI0IHgsIGNoYXI0IHkpOwp1Y2hhcjQgX19vdmxkIF9fY25mbiBhYnNfZGlmZih1Y2hhcjQgeCwgdWNoYXI0IHkpOwp1Y2hhcjggX19vdmxkIF9fY25mbiBhYnNfZGlmZihjaGFyOCB4LCBjaGFyOCB5KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gYWJzX2RpZmYodWNoYXI4IHgsIHVjaGFyOCB5KTsKdWNoYXIxNiBfX292bGQgX19jbmZuIGFic19kaWZmKGNoYXIxNiB4LCBjaGFyMTYgeSk7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBhYnNfZGlmZih1Y2hhcjE2IHgsIHVjaGFyMTYgeSk7CnVzaG9ydCBfX292bGQgX19jbmZuIGFic19kaWZmKHNob3J0IHgsIHNob3J0IHkpOwp1c2hvcnQgX19vdmxkIF9fY25mbiBhYnNfZGlmZih1c2hvcnQgeCwgdXNob3J0IHkpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gYWJzX2RpZmYoc2hvcnQyIHgsIHNob3J0MiB5KTsKdXNob3J0MiBfX292bGQgX19jbmZuIGFic19kaWZmKHVzaG9ydDIgeCwgdXNob3J0MiB5KTsKdXNob3J0MyBfX292bGQgX19jbmZuIGFic19kaWZmKHNob3J0MyB4LCBzaG9ydDMgeSk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBhYnNfZGlmZih1c2hvcnQzIHgsIHVzaG9ydDMgeSk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBhYnNfZGlmZihzaG9ydDQgeCwgc2hvcnQ0IHkpOwp1c2hvcnQ0IF9fb3ZsZCBfX2NuZm4gYWJzX2RpZmYodXNob3J0NCB4LCB1c2hvcnQ0IHkpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gYWJzX2RpZmYoc2hvcnQ4IHgsIHNob3J0OCB5KTsKdXNob3J0OCBfX292bGQgX19jbmZuIGFic19kaWZmKHVzaG9ydDggeCwgdXNob3J0OCB5KTsKdXNob3J0MTYgX19vdmxkIF9fY25mbiBhYnNfZGlmZihzaG9ydDE2IHgsIHNob3J0MTYgeSk7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gYWJzX2RpZmYodXNob3J0MTYgeCwgdXNob3J0MTYgeSk7CnVpbnQgX19vdmxkIF9fY25mbiBhYnNfZGlmZihpbnQgeCwgaW50IHkpOwp1aW50IF9fb3ZsZCBfX2NuZm4gYWJzX2RpZmYodWludCB4LCB1aW50IHkpOwp1aW50MiBfX292bGQgX19jbmZuIGFic19kaWZmKGludDIgeCwgaW50MiB5KTsKdWludDIgX19vdmxkIF9fY25mbiBhYnNfZGlmZih1aW50MiB4LCB1aW50MiB5KTsKdWludDMgX19vdmxkIF9fY25mbiBhYnNfZGlmZihpbnQzIHgsIGludDMgeSk7CnVpbnQzIF9fb3ZsZCBfX2NuZm4gYWJzX2RpZmYodWludDMgeCwgdWludDMgeSk7CnVpbnQ0IF9fb3ZsZCBfX2NuZm4gYWJzX2RpZmYoaW50NCB4LCBpbnQ0IHkpOwp1aW50NCBfX292bGQgX19jbmZuIGFic19kaWZmKHVpbnQ0IHgsIHVpbnQ0IHkpOwp1aW50OCBfX292bGQgX19jbmZuIGFic19kaWZmKGludDggeCwgaW50OCB5KTsKdWludDggX19vdmxkIF9fY25mbiBhYnNfZGlmZih1aW50OCB4LCB1aW50OCB5KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gYWJzX2RpZmYoaW50MTYgeCwgaW50MTYgeSk7CnVpbnQxNiBfX292bGQgX19jbmZuIGFic19kaWZmKHVpbnQxNiB4LCB1aW50MTYgeSk7CnVsb25nIF9fb3ZsZCBfX2NuZm4gYWJzX2RpZmYobG9uZyB4LCBsb25nIHkpOwp1bG9uZyBfX292bGQgX19jbmZuIGFic19kaWZmKHVsb25nIHgsIHVsb25nIHkpOwp1bG9uZzIgX19vdmxkIF9fY25mbiBhYnNfZGlmZihsb25nMiB4LCBsb25nMiB5KTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gYWJzX2RpZmYodWxvbmcyIHgsIHVsb25nMiB5KTsKdWxvbmczIF9fb3ZsZCBfX2NuZm4gYWJzX2RpZmYobG9uZzMgeCwgbG9uZzMgeSk7CnVsb25nMyBfX292bGQgX19jbmZuIGFic19kaWZmKHVsb25nMyB4LCB1bG9uZzMgeSk7CnVsb25nNCBfX292bGQgX19jbmZuIGFic19kaWZmKGxvbmc0IHgsIGxvbmc0IHkpOwp1bG9uZzQgX19vdmxkIF9fY25mbiBhYnNfZGlmZih1bG9uZzQgeCwgdWxvbmc0IHkpOwp1bG9uZzggX19vdmxkIF9fY25mbiBhYnNfZGlmZihsb25nOCB4LCBsb25nOCB5KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gYWJzX2RpZmYodWxvbmc4IHgsIHVsb25nOCB5KTsKdWxvbmcxNiBfX292bGQgX19jbmZuIGFic19kaWZmKGxvbmcxNiB4LCBsb25nMTYgeSk7CnVsb25nMTYgX19vdmxkIF9fY25mbiBhYnNfZGlmZih1bG9uZzE2IHgsIHVsb25nMTYgeSk7CgovKioKICogUmV0dXJucyB4ICsgeSBhbmQgc2F0dXJhdGVzIHRoZSByZXN1bHQuCiAqLwpjaGFyIF9fb3ZsZCBfX2NuZm4gYWRkX3NhdChjaGFyIHgsIGNoYXIgeSk7CnVjaGFyIF9fb3ZsZCBfX2NuZm4gYWRkX3NhdCh1Y2hhciB4LCB1Y2hhciB5KTsKY2hhcjIgX19vdmxkIF9fY25mbiBhZGRfc2F0KGNoYXIyIHgsIGNoYXIyIHkpOwp1Y2hhcjIgX19vdmxkIF9fY25mbiBhZGRfc2F0KHVjaGFyMiB4LCB1Y2hhcjIgeSk7CmNoYXIzIF9fb3ZsZCBfX2NuZm4gYWRkX3NhdChjaGFyMyB4LCBjaGFyMyB5KTsKdWNoYXIzIF9fb3ZsZCBfX2NuZm4gYWRkX3NhdCh1Y2hhcjMgeCwgdWNoYXIzIHkpOwpjaGFyNCBfX292bGQgX19jbmZuIGFkZF9zYXQoY2hhcjQgeCwgY2hhcjQgeSk7CnVjaGFyNCBfX292bGQgX19jbmZuIGFkZF9zYXQodWNoYXI0IHgsIHVjaGFyNCB5KTsKY2hhcjggX19vdmxkIF9fY25mbiBhZGRfc2F0KGNoYXI4IHgsIGNoYXI4IHkpOwp1Y2hhcjggX19vdmxkIF9fY25mbiBhZGRfc2F0KHVjaGFyOCB4LCB1Y2hhcjggeSk7CmNoYXIxNiBfX292bGQgX19jbmZuIGFkZF9zYXQoY2hhcjE2IHgsIGNoYXIxNiB5KTsKdWNoYXIxNiBfX292bGQgX19jbmZuIGFkZF9zYXQodWNoYXIxNiB4LCB1Y2hhcjE2IHkpOwpzaG9ydCBfX292bGQgX19jbmZuIGFkZF9zYXQoc2hvcnQgeCwgc2hvcnQgeSk7CnVzaG9ydCBfX292bGQgX19jbmZuIGFkZF9zYXQodXNob3J0IHgsIHVzaG9ydCB5KTsKc2hvcnQyIF9fb3ZsZCBfX2NuZm4gYWRkX3NhdChzaG9ydDIgeCwgc2hvcnQyIHkpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gYWRkX3NhdCh1c2hvcnQyIHgsIHVzaG9ydDIgeSk7CnNob3J0MyBfX292bGQgX19jbmZuIGFkZF9zYXQoc2hvcnQzIHgsIHNob3J0MyB5KTsKdXNob3J0MyBfX292bGQgX19jbmZuIGFkZF9zYXQodXNob3J0MyB4LCB1c2hvcnQzIHkpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBhZGRfc2F0KHNob3J0NCB4LCBzaG9ydDQgeSk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBhZGRfc2F0KHVzaG9ydDQgeCwgdXNob3J0NCB5KTsKc2hvcnQ4IF9fb3ZsZCBfX2NuZm4gYWRkX3NhdChzaG9ydDggeCwgc2hvcnQ4IHkpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gYWRkX3NhdCh1c2hvcnQ4IHgsIHVzaG9ydDggeSk7CnNob3J0MTYgX19vdmxkIF9fY25mbiBhZGRfc2F0KHNob3J0MTYgeCwgc2hvcnQxNiB5KTsKdXNob3J0MTYgX19vdmxkIF9fY25mbiBhZGRfc2F0KHVzaG9ydDE2IHgsIHVzaG9ydDE2IHkpOwppbnQgX19vdmxkIF9fY25mbiBhZGRfc2F0KGludCB4LCBpbnQgeSk7CnVpbnQgX19vdmxkIF9fY25mbiBhZGRfc2F0KHVpbnQgeCwgdWludCB5KTsKaW50MiBfX292bGQgX19jbmZuIGFkZF9zYXQoaW50MiB4LCBpbnQyIHkpOwp1aW50MiBfX292bGQgX19jbmZuIGFkZF9zYXQodWludDIgeCwgdWludDIgeSk7CmludDMgX19vdmxkIF9fY25mbiBhZGRfc2F0KGludDMgeCwgaW50MyB5KTsKdWludDMgX19vdmxkIF9fY25mbiBhZGRfc2F0KHVpbnQzIHgsIHVpbnQzIHkpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gYWRkX3NhdChpbnQ0IHgsIGludDQgeSk7CnVpbnQ0IF9fb3ZsZCBfX2NuZm4gYWRkX3NhdCh1aW50NCB4LCB1aW50NCB5KTsKaW50OCBfX292bGQgX19jbmZuIGFkZF9zYXQoaW50OCB4LCBpbnQ4IHkpOwp1aW50OCBfX292bGQgX19jbmZuIGFkZF9zYXQodWludDggeCwgdWludDggeSk7CmludDE2IF9fb3ZsZCBfX2NuZm4gYWRkX3NhdChpbnQxNiB4LCBpbnQxNiB5KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gYWRkX3NhdCh1aW50MTYgeCwgdWludDE2IHkpOwpsb25nIF9fb3ZsZCBfX2NuZm4gYWRkX3NhdChsb25nIHgsIGxvbmcgeSk7CnVsb25nIF9fb3ZsZCBfX2NuZm4gYWRkX3NhdCh1bG9uZyB4LCB1bG9uZyB5KTsKbG9uZzIgX19vdmxkIF9fY25mbiBhZGRfc2F0KGxvbmcyIHgsIGxvbmcyIHkpOwp1bG9uZzIgX19vdmxkIF9fY25mbiBhZGRfc2F0KHVsb25nMiB4LCB1bG9uZzIgeSk7CmxvbmczIF9fb3ZsZCBfX2NuZm4gYWRkX3NhdChsb25nMyB4LCBsb25nMyB5KTsKdWxvbmczIF9fb3ZsZCBfX2NuZm4gYWRkX3NhdCh1bG9uZzMgeCwgdWxvbmczIHkpOwpsb25nNCBfX292bGQgX19jbmZuIGFkZF9zYXQobG9uZzQgeCwgbG9uZzQgeSk7CnVsb25nNCBfX292bGQgX19jbmZuIGFkZF9zYXQodWxvbmc0IHgsIHVsb25nNCB5KTsKbG9uZzggX19vdmxkIF9fY25mbiBhZGRfc2F0KGxvbmc4IHgsIGxvbmc4IHkpOwp1bG9uZzggX19vdmxkIF9fY25mbiBhZGRfc2F0KHVsb25nOCB4LCB1bG9uZzggeSk7CmxvbmcxNiBfX292bGQgX19jbmZuIGFkZF9zYXQobG9uZzE2IHgsIGxvbmcxNiB5KTsKdWxvbmcxNiBfX292bGQgX19jbmZuIGFkZF9zYXQodWxvbmcxNiB4LCB1bG9uZzE2IHkpOwoKLyoqCiAqIFJldHVybnMgKHggKyB5KSA+PiAxLiBUaGUgaW50ZXJtZWRpYXRlIHN1bSBkb2VzCiAqIG5vdCBtb2R1bG8gb3ZlcmZsb3cuCiAqLwpjaGFyIF9fb3ZsZCBfX2NuZm4gaGFkZChjaGFyIHgsIGNoYXIgeSk7CnVjaGFyIF9fb3ZsZCBfX2NuZm4gaGFkZCh1Y2hhciB4LCB1Y2hhciB5KTsKY2hhcjIgX19vdmxkIF9fY25mbiBoYWRkKGNoYXIyIHgsIGNoYXIyIHkpOwp1Y2hhcjIgX19vdmxkIF9fY25mbiBoYWRkKHVjaGFyMiB4LCB1Y2hhcjIgeSk7CmNoYXIzIF9fb3ZsZCBfX2NuZm4gaGFkZChjaGFyMyB4LCBjaGFyMyB5KTsKdWNoYXIzIF9fb3ZsZCBfX2NuZm4gaGFkZCh1Y2hhcjMgeCwgdWNoYXIzIHkpOwpjaGFyNCBfX292bGQgX19jbmZuIGhhZGQoY2hhcjQgeCwgY2hhcjQgeSk7CnVjaGFyNCBfX292bGQgX19jbmZuIGhhZGQodWNoYXI0IHgsIHVjaGFyNCB5KTsKY2hhcjggX19vdmxkIF9fY25mbiBoYWRkKGNoYXI4IHgsIGNoYXI4IHkpOwp1Y2hhcjggX19vdmxkIF9fY25mbiBoYWRkKHVjaGFyOCB4LCB1Y2hhcjggeSk7CmNoYXIxNiBfX292bGQgX19jbmZuIGhhZGQoY2hhcjE2IHgsIGNoYXIxNiB5KTsKdWNoYXIxNiBfX292bGQgX19jbmZuIGhhZGQodWNoYXIxNiB4LCB1Y2hhcjE2IHkpOwpzaG9ydCBfX292bGQgX19jbmZuIGhhZGQoc2hvcnQgeCwgc2hvcnQgeSk7CnVzaG9ydCBfX292bGQgX19jbmZuIGhhZGQodXNob3J0IHgsIHVzaG9ydCB5KTsKc2hvcnQyIF9fb3ZsZCBfX2NuZm4gaGFkZChzaG9ydDIgeCwgc2hvcnQyIHkpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gaGFkZCh1c2hvcnQyIHgsIHVzaG9ydDIgeSk7CnNob3J0MyBfX292bGQgX19jbmZuIGhhZGQoc2hvcnQzIHgsIHNob3J0MyB5KTsKdXNob3J0MyBfX292bGQgX19jbmZuIGhhZGQodXNob3J0MyB4LCB1c2hvcnQzIHkpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBoYWRkKHNob3J0NCB4LCBzaG9ydDQgeSk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBoYWRkKHVzaG9ydDQgeCwgdXNob3J0NCB5KTsKc2hvcnQ4IF9fb3ZsZCBfX2NuZm4gaGFkZChzaG9ydDggeCwgc2hvcnQ4IHkpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gaGFkZCh1c2hvcnQ4IHgsIHVzaG9ydDggeSk7CnNob3J0MTYgX19vdmxkIF9fY25mbiBoYWRkKHNob3J0MTYgeCwgc2hvcnQxNiB5KTsKdXNob3J0MTYgX19vdmxkIF9fY25mbiBoYWRkKHVzaG9ydDE2IHgsIHVzaG9ydDE2IHkpOwppbnQgX19vdmxkIF9fY25mbiBoYWRkKGludCB4LCBpbnQgeSk7CnVpbnQgX19vdmxkIF9fY25mbiBoYWRkKHVpbnQgeCwgdWludCB5KTsKaW50MiBfX292bGQgX19jbmZuIGhhZGQoaW50MiB4LCBpbnQyIHkpOwp1aW50MiBfX292bGQgX19jbmZuIGhhZGQodWludDIgeCwgdWludDIgeSk7CmludDMgX19vdmxkIF9fY25mbiBoYWRkKGludDMgeCwgaW50MyB5KTsKdWludDMgX19vdmxkIF9fY25mbiBoYWRkKHVpbnQzIHgsIHVpbnQzIHkpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gaGFkZChpbnQ0IHgsIGludDQgeSk7CnVpbnQ0IF9fb3ZsZCBfX2NuZm4gaGFkZCh1aW50NCB4LCB1aW50NCB5KTsKaW50OCBfX292bGQgX19jbmZuIGhhZGQoaW50OCB4LCBpbnQ4IHkpOwp1aW50OCBfX292bGQgX19jbmZuIGhhZGQodWludDggeCwgdWludDggeSk7CmludDE2IF9fb3ZsZCBfX2NuZm4gaGFkZChpbnQxNiB4LCBpbnQxNiB5KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gaGFkZCh1aW50MTYgeCwgdWludDE2IHkpOwpsb25nIF9fb3ZsZCBfX2NuZm4gaGFkZChsb25nIHgsIGxvbmcgeSk7CnVsb25nIF9fb3ZsZCBfX2NuZm4gaGFkZCh1bG9uZyB4LCB1bG9uZyB5KTsKbG9uZzIgX19vdmxkIF9fY25mbiBoYWRkKGxvbmcyIHgsIGxvbmcyIHkpOwp1bG9uZzIgX19vdmxkIF9fY25mbiBoYWRkKHVsb25nMiB4LCB1bG9uZzIgeSk7CmxvbmczIF9fb3ZsZCBfX2NuZm4gaGFkZChsb25nMyB4LCBsb25nMyB5KTsKdWxvbmczIF9fb3ZsZCBfX2NuZm4gaGFkZCh1bG9uZzMgeCwgdWxvbmczIHkpOwpsb25nNCBfX292bGQgX19jbmZuIGhhZGQobG9uZzQgeCwgbG9uZzQgeSk7CnVsb25nNCBfX292bGQgX19jbmZuIGhhZGQodWxvbmc0IHgsIHVsb25nNCB5KTsKbG9uZzggX19vdmxkIF9fY25mbiBoYWRkKGxvbmc4IHgsIGxvbmc4IHkpOwp1bG9uZzggX19vdmxkIF9fY25mbiBoYWRkKHVsb25nOCB4LCB1bG9uZzggeSk7CmxvbmcxNiBfX292bGQgX19jbmZuIGhhZGQobG9uZzE2IHgsIGxvbmcxNiB5KTsKdWxvbmcxNiBfX292bGQgX19jbmZuIGhhZGQodWxvbmcxNiB4LCB1bG9uZzE2IHkpOwoKLyoqCiAqIFJldHVybnMgKHggKyB5ICsgMSkgPj4gMS4gVGhlIGludGVybWVkaWF0ZSBzdW0KICogZG9lcyBub3QgbW9kdWxvIG92ZXJmbG93LgogKi8KY2hhciBfX292bGQgX19jbmZuIHJoYWRkKGNoYXIgeCwgY2hhciB5KTsKdWNoYXIgX19vdmxkIF9fY25mbiByaGFkZCh1Y2hhciB4LCB1Y2hhciB5KTsKY2hhcjIgX19vdmxkIF9fY25mbiByaGFkZChjaGFyMiB4LCBjaGFyMiB5KTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gcmhhZGQodWNoYXIyIHgsIHVjaGFyMiB5KTsKY2hhcjMgX19vdmxkIF9fY25mbiByaGFkZChjaGFyMyB4LCBjaGFyMyB5KTsKdWNoYXIzIF9fb3ZsZCBfX2NuZm4gcmhhZGQodWNoYXIzIHgsIHVjaGFyMyB5KTsKY2hhcjQgX19vdmxkIF9fY25mbiByaGFkZChjaGFyNCB4LCBjaGFyNCB5KTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gcmhhZGQodWNoYXI0IHgsIHVjaGFyNCB5KTsKY2hhcjggX19vdmxkIF9fY25mbiByaGFkZChjaGFyOCB4LCBjaGFyOCB5KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gcmhhZGQodWNoYXI4IHgsIHVjaGFyOCB5KTsKY2hhcjE2IF9fb3ZsZCBfX2NuZm4gcmhhZGQoY2hhcjE2IHgsIGNoYXIxNiB5KTsKdWNoYXIxNiBfX292bGQgX19jbmZuIHJoYWRkKHVjaGFyMTYgeCwgdWNoYXIxNiB5KTsKc2hvcnQgX19vdmxkIF9fY25mbiByaGFkZChzaG9ydCB4LCBzaG9ydCB5KTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gcmhhZGQodXNob3J0IHgsIHVzaG9ydCB5KTsKc2hvcnQyIF9fb3ZsZCBfX2NuZm4gcmhhZGQoc2hvcnQyIHgsIHNob3J0MiB5KTsKdXNob3J0MiBfX292bGQgX19jbmZuIHJoYWRkKHVzaG9ydDIgeCwgdXNob3J0MiB5KTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gcmhhZGQoc2hvcnQzIHgsIHNob3J0MyB5KTsKdXNob3J0MyBfX292bGQgX19jbmZuIHJoYWRkKHVzaG9ydDMgeCwgdXNob3J0MyB5KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gcmhhZGQoc2hvcnQ0IHgsIHNob3J0NCB5KTsKdXNob3J0NCBfX292bGQgX19jbmZuIHJoYWRkKHVzaG9ydDQgeCwgdXNob3J0NCB5KTsKc2hvcnQ4IF9fb3ZsZCBfX2NuZm4gcmhhZGQoc2hvcnQ4IHgsIHNob3J0OCB5KTsKdXNob3J0OCBfX292bGQgX19jbmZuIHJoYWRkKHVzaG9ydDggeCwgdXNob3J0OCB5KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIHJoYWRkKHNob3J0MTYgeCwgc2hvcnQxNiB5KTsKdXNob3J0MTYgX19vdmxkIF9fY25mbiByaGFkZCh1c2hvcnQxNiB4LCB1c2hvcnQxNiB5KTsKaW50IF9fb3ZsZCBfX2NuZm4gcmhhZGQoaW50IHgsIGludCB5KTsKdWludCBfX292bGQgX19jbmZuIHJoYWRkKHVpbnQgeCwgdWludCB5KTsKaW50MiBfX292bGQgX19jbmZuIHJoYWRkKGludDIgeCwgaW50MiB5KTsKdWludDIgX19vdmxkIF9fY25mbiByaGFkZCh1aW50MiB4LCB1aW50MiB5KTsKaW50MyBfX292bGQgX19jbmZuIHJoYWRkKGludDMgeCwgaW50MyB5KTsKdWludDMgX19vdmxkIF9fY25mbiByaGFkZCh1aW50MyB4LCB1aW50MyB5KTsKaW50NCBfX292bGQgX19jbmZuIHJoYWRkKGludDQgeCwgaW50NCB5KTsKdWludDQgX19vdmxkIF9fY25mbiByaGFkZCh1aW50NCB4LCB1aW50NCB5KTsKaW50OCBfX292bGQgX19jbmZuIHJoYWRkKGludDggeCwgaW50OCB5KTsKdWludDggX19vdmxkIF9fY25mbiByaGFkZCh1aW50OCB4LCB1aW50OCB5KTsKaW50MTYgX19vdmxkIF9fY25mbiByaGFkZChpbnQxNiB4LCBpbnQxNiB5KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gcmhhZGQodWludDE2IHgsIHVpbnQxNiB5KTsKbG9uZyBfX292bGQgX19jbmZuIHJoYWRkKGxvbmcgeCwgbG9uZyB5KTsKdWxvbmcgX19vdmxkIF9fY25mbiByaGFkZCh1bG9uZyB4LCB1bG9uZyB5KTsKbG9uZzIgX19vdmxkIF9fY25mbiByaGFkZChsb25nMiB4LCBsb25nMiB5KTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gcmhhZGQodWxvbmcyIHgsIHVsb25nMiB5KTsKbG9uZzMgX19vdmxkIF9fY25mbiByaGFkZChsb25nMyB4LCBsb25nMyB5KTsKdWxvbmczIF9fb3ZsZCBfX2NuZm4gcmhhZGQodWxvbmczIHgsIHVsb25nMyB5KTsKbG9uZzQgX19vdmxkIF9fY25mbiByaGFkZChsb25nNCB4LCBsb25nNCB5KTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gcmhhZGQodWxvbmc0IHgsIHVsb25nNCB5KTsKbG9uZzggX19vdmxkIF9fY25mbiByaGFkZChsb25nOCB4LCBsb25nOCB5KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gcmhhZGQodWxvbmc4IHgsIHVsb25nOCB5KTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gcmhhZGQobG9uZzE2IHgsIGxvbmcxNiB5KTsKdWxvbmcxNiBfX292bGQgX19jbmZuIHJoYWRkKHVsb25nMTYgeCwgdWxvbmcxNiB5KTsKCi8qKgogKiBSZXR1cm5zIG1pbihtYXgoeCwgbWludmFsKSwgbWF4dmFsKS4KICogUmVzdWx0cyBhcmUgdW5kZWZpbmVkIGlmIG1pbnZhbCA+IG1heHZhbC4KICovCmNoYXIgX19vdmxkIF9fY25mbiBjbGFtcChjaGFyIHgsIGNoYXIgbWludmFsLCBjaGFyIG1heHZhbCk7CnVjaGFyIF9fb3ZsZCBfX2NuZm4gY2xhbXAodWNoYXIgeCwgdWNoYXIgbWludmFsLCB1Y2hhciBtYXh2YWwpOwpjaGFyMiBfX292bGQgX19jbmZuIGNsYW1wKGNoYXIyIHgsIGNoYXIyIG1pbnZhbCwgY2hhcjIgbWF4dmFsKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gY2xhbXAodWNoYXIyIHgsIHVjaGFyMiBtaW52YWwsIHVjaGFyMiBtYXh2YWwpOwpjaGFyMyBfX292bGQgX19jbmZuIGNsYW1wKGNoYXIzIHgsIGNoYXIzIG1pbnZhbCwgY2hhcjMgbWF4dmFsKTsKdWNoYXIzIF9fb3ZsZCBfX2NuZm4gY2xhbXAodWNoYXIzIHgsIHVjaGFyMyBtaW52YWwsIHVjaGFyMyBtYXh2YWwpOwpjaGFyNCBfX292bGQgX19jbmZuIGNsYW1wKGNoYXI0IHgsIGNoYXI0IG1pbnZhbCwgY2hhcjQgbWF4dmFsKTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gY2xhbXAodWNoYXI0IHgsIHVjaGFyNCBtaW52YWwsIHVjaGFyNCBtYXh2YWwpOwpjaGFyOCBfX292bGQgX19jbmZuIGNsYW1wKGNoYXI4IHgsIGNoYXI4IG1pbnZhbCwgY2hhcjggbWF4dmFsKTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gY2xhbXAodWNoYXI4IHgsIHVjaGFyOCBtaW52YWwsIHVjaGFyOCBtYXh2YWwpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBjbGFtcChjaGFyMTYgeCwgY2hhcjE2IG1pbnZhbCwgY2hhcjE2IG1heHZhbCk7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBjbGFtcCh1Y2hhcjE2IHgsIHVjaGFyMTYgbWludmFsLCB1Y2hhcjE2IG1heHZhbCk7CnNob3J0IF9fb3ZsZCBfX2NuZm4gY2xhbXAoc2hvcnQgeCwgc2hvcnQgbWludmFsLCBzaG9ydCBtYXh2YWwpOwp1c2hvcnQgX19vdmxkIF9fY25mbiBjbGFtcCh1c2hvcnQgeCwgdXNob3J0IG1pbnZhbCwgdXNob3J0IG1heHZhbCk7CnNob3J0MiBfX292bGQgX19jbmZuIGNsYW1wKHNob3J0MiB4LCBzaG9ydDIgbWludmFsLCBzaG9ydDIgbWF4dmFsKTsKdXNob3J0MiBfX292bGQgX19jbmZuIGNsYW1wKHVzaG9ydDIgeCwgdXNob3J0MiBtaW52YWwsIHVzaG9ydDIgbWF4dmFsKTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gY2xhbXAoc2hvcnQzIHgsIHNob3J0MyBtaW52YWwsIHNob3J0MyBtYXh2YWwpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gY2xhbXAodXNob3J0MyB4LCB1c2hvcnQzIG1pbnZhbCwgdXNob3J0MyBtYXh2YWwpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBjbGFtcChzaG9ydDQgeCwgc2hvcnQ0IG1pbnZhbCwgc2hvcnQ0IG1heHZhbCk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBjbGFtcCh1c2hvcnQ0IHgsIHVzaG9ydDQgbWludmFsLCB1c2hvcnQ0IG1heHZhbCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNsYW1wKHNob3J0OCB4LCBzaG9ydDggbWludmFsLCBzaG9ydDggbWF4dmFsKTsKdXNob3J0OCBfX292bGQgX19jbmZuIGNsYW1wKHVzaG9ydDggeCwgdXNob3J0OCBtaW52YWwsIHVzaG9ydDggbWF4dmFsKTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGNsYW1wKHNob3J0MTYgeCwgc2hvcnQxNiBtaW52YWwsIHNob3J0MTYgbWF4dmFsKTsKdXNob3J0MTYgX19vdmxkIF9fY25mbiBjbGFtcCh1c2hvcnQxNiB4LCB1c2hvcnQxNiBtaW52YWwsIHVzaG9ydDE2IG1heHZhbCk7CmludCBfX292bGQgX19jbmZuIGNsYW1wKGludCB4LCBpbnQgbWludmFsLCBpbnQgbWF4dmFsKTsKdWludCBfX292bGQgX19jbmZuIGNsYW1wKHVpbnQgeCwgdWludCBtaW52YWwsIHVpbnQgbWF4dmFsKTsKaW50MiBfX292bGQgX19jbmZuIGNsYW1wKGludDIgeCwgaW50MiBtaW52YWwsIGludDIgbWF4dmFsKTsKdWludDIgX19vdmxkIF9fY25mbiBjbGFtcCh1aW50MiB4LCB1aW50MiBtaW52YWwsIHVpbnQyIG1heHZhbCk7CmludDMgX19vdmxkIF9fY25mbiBjbGFtcChpbnQzIHgsIGludDMgbWludmFsLCBpbnQzIG1heHZhbCk7CnVpbnQzIF9fb3ZsZCBfX2NuZm4gY2xhbXAodWludDMgeCwgdWludDMgbWludmFsLCB1aW50MyBtYXh2YWwpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gY2xhbXAoaW50NCB4LCBpbnQ0IG1pbnZhbCwgaW50NCBtYXh2YWwpOwp1aW50NCBfX292bGQgX19jbmZuIGNsYW1wKHVpbnQ0IHgsIHVpbnQ0IG1pbnZhbCwgdWludDQgbWF4dmFsKTsKaW50OCBfX292bGQgX19jbmZuIGNsYW1wKGludDggeCwgaW50OCBtaW52YWwsIGludDggbWF4dmFsKTsKdWludDggX19vdmxkIF9fY25mbiBjbGFtcCh1aW50OCB4LCB1aW50OCBtaW52YWwsIHVpbnQ4IG1heHZhbCk7CmludDE2IF9fb3ZsZCBfX2NuZm4gY2xhbXAoaW50MTYgeCwgaW50MTYgbWludmFsLCBpbnQxNiBtYXh2YWwpOwp1aW50MTYgX19vdmxkIF9fY25mbiBjbGFtcCh1aW50MTYgeCwgdWludDE2IG1pbnZhbCwgdWludDE2IG1heHZhbCk7CmxvbmcgX19vdmxkIF9fY25mbiBjbGFtcChsb25nIHgsIGxvbmcgbWludmFsLCBsb25nIG1heHZhbCk7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY2xhbXAodWxvbmcgeCwgdWxvbmcgbWludmFsLCB1bG9uZyBtYXh2YWwpOwpsb25nMiBfX292bGQgX19jbmZuIGNsYW1wKGxvbmcyIHgsIGxvbmcyIG1pbnZhbCwgbG9uZzIgbWF4dmFsKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gY2xhbXAodWxvbmcyIHgsIHVsb25nMiBtaW52YWwsIHVsb25nMiBtYXh2YWwpOwpsb25nMyBfX292bGQgX19jbmZuIGNsYW1wKGxvbmczIHgsIGxvbmczIG1pbnZhbCwgbG9uZzMgbWF4dmFsKTsKdWxvbmczIF9fb3ZsZCBfX2NuZm4gY2xhbXAodWxvbmczIHgsIHVsb25nMyBtaW52YWwsIHVsb25nMyBtYXh2YWwpOwpsb25nNCBfX292bGQgX19jbmZuIGNsYW1wKGxvbmc0IHgsIGxvbmc0IG1pbnZhbCwgbG9uZzQgbWF4dmFsKTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gY2xhbXAodWxvbmc0IHgsIHVsb25nNCBtaW52YWwsIHVsb25nNCBtYXh2YWwpOwpsb25nOCBfX292bGQgX19jbmZuIGNsYW1wKGxvbmc4IHgsIGxvbmc4IG1pbnZhbCwgbG9uZzggbWF4dmFsKTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gY2xhbXAodWxvbmc4IHgsIHVsb25nOCBtaW52YWwsIHVsb25nOCBtYXh2YWwpOwpsb25nMTYgX19vdmxkIF9fY25mbiBjbGFtcChsb25nMTYgeCwgbG9uZzE2IG1pbnZhbCwgbG9uZzE2IG1heHZhbCk7CnVsb25nMTYgX19vdmxkIF9fY25mbiBjbGFtcCh1bG9uZzE2IHgsIHVsb25nMTYgbWludmFsLCB1bG9uZzE2IG1heHZhbCk7CmNoYXIyIF9fb3ZsZCBfX2NuZm4gY2xhbXAoY2hhcjIgeCwgY2hhciBtaW52YWwsIGNoYXIgbWF4dmFsKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gY2xhbXAodWNoYXIyIHgsIHVjaGFyIG1pbnZhbCwgdWNoYXIgbWF4dmFsKTsKY2hhcjMgX19vdmxkIF9fY25mbiBjbGFtcChjaGFyMyB4LCBjaGFyIG1pbnZhbCwgY2hhciBtYXh2YWwpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBjbGFtcCh1Y2hhcjMgeCwgdWNoYXIgbWludmFsLCB1Y2hhciBtYXh2YWwpOwpjaGFyNCBfX292bGQgX19jbmZuIGNsYW1wKGNoYXI0IHgsIGNoYXIgbWludmFsLCBjaGFyIG1heHZhbCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGNsYW1wKHVjaGFyNCB4LCB1Y2hhciBtaW52YWwsIHVjaGFyIG1heHZhbCk7CmNoYXI4IF9fb3ZsZCBfX2NuZm4gY2xhbXAoY2hhcjggeCwgY2hhciBtaW52YWwsIGNoYXIgbWF4dmFsKTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gY2xhbXAodWNoYXI4IHgsIHVjaGFyIG1pbnZhbCwgdWNoYXIgbWF4dmFsKTsKY2hhcjE2IF9fb3ZsZCBfX2NuZm4gY2xhbXAoY2hhcjE2IHgsIGNoYXIgbWludmFsLCBjaGFyIG1heHZhbCk7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBjbGFtcCh1Y2hhcjE2IHgsIHVjaGFyIG1pbnZhbCwgdWNoYXIgbWF4dmFsKTsKc2hvcnQyIF9fb3ZsZCBfX2NuZm4gY2xhbXAoc2hvcnQyIHgsIHNob3J0IG1pbnZhbCwgc2hvcnQgbWF4dmFsKTsKdXNob3J0MiBfX292bGQgX19jbmZuIGNsYW1wKHVzaG9ydDIgeCwgdXNob3J0IG1pbnZhbCwgdXNob3J0IG1heHZhbCk7CnNob3J0MyBfX292bGQgX19jbmZuIGNsYW1wKHNob3J0MyB4LCBzaG9ydCBtaW52YWwsIHNob3J0IG1heHZhbCk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBjbGFtcCh1c2hvcnQzIHgsIHVzaG9ydCBtaW52YWwsIHVzaG9ydCBtYXh2YWwpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBjbGFtcChzaG9ydDQgeCwgc2hvcnQgbWludmFsLCBzaG9ydCBtYXh2YWwpOwp1c2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY2xhbXAodXNob3J0NCB4LCB1c2hvcnQgbWludmFsLCB1c2hvcnQgbWF4dmFsKTsKc2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY2xhbXAoc2hvcnQ4IHgsIHNob3J0IG1pbnZhbCwgc2hvcnQgbWF4dmFsKTsKdXNob3J0OCBfX292bGQgX19jbmZuIGNsYW1wKHVzaG9ydDggeCwgdXNob3J0IG1pbnZhbCwgdXNob3J0IG1heHZhbCk7CnNob3J0MTYgX19vdmxkIF9fY25mbiBjbGFtcChzaG9ydDE2IHgsIHNob3J0IG1pbnZhbCwgc2hvcnQgbWF4dmFsKTsKdXNob3J0MTYgX19vdmxkIF9fY25mbiBjbGFtcCh1c2hvcnQxNiB4LCB1c2hvcnQgbWludmFsLCB1c2hvcnQgbWF4dmFsKTsKaW50MiBfX292bGQgX19jbmZuIGNsYW1wKGludDIgeCwgaW50IG1pbnZhbCwgaW50IG1heHZhbCk7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gY2xhbXAodWludDIgeCwgdWludCBtaW52YWwsIHVpbnQgbWF4dmFsKTsKaW50MyBfX292bGQgX19jbmZuIGNsYW1wKGludDMgeCwgaW50IG1pbnZhbCwgaW50IG1heHZhbCk7CnVpbnQzIF9fb3ZsZCBfX2NuZm4gY2xhbXAodWludDMgeCwgdWludCBtaW52YWwsIHVpbnQgbWF4dmFsKTsKaW50NCBfX292bGQgX19jbmZuIGNsYW1wKGludDQgeCwgaW50IG1pbnZhbCwgaW50IG1heHZhbCk7CnVpbnQ0IF9fb3ZsZCBfX2NuZm4gY2xhbXAodWludDQgeCwgdWludCBtaW52YWwsIHVpbnQgbWF4dmFsKTsKaW50OCBfX292bGQgX19jbmZuIGNsYW1wKGludDggeCwgaW50IG1pbnZhbCwgaW50IG1heHZhbCk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gY2xhbXAodWludDggeCwgdWludCBtaW52YWwsIHVpbnQgbWF4dmFsKTsKaW50MTYgX19vdmxkIF9fY25mbiBjbGFtcChpbnQxNiB4LCBpbnQgbWludmFsLCBpbnQgbWF4dmFsKTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gY2xhbXAodWludDE2IHgsIHVpbnQgbWludmFsLCB1aW50IG1heHZhbCk7CmxvbmcyIF9fb3ZsZCBfX2NuZm4gY2xhbXAobG9uZzIgeCwgbG9uZyBtaW52YWwsIGxvbmcgbWF4dmFsKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gY2xhbXAodWxvbmcyIHgsIHVsb25nIG1pbnZhbCwgdWxvbmcgbWF4dmFsKTsKbG9uZzMgX19vdmxkIF9fY25mbiBjbGFtcChsb25nMyB4LCBsb25nIG1pbnZhbCwgbG9uZyBtYXh2YWwpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBjbGFtcCh1bG9uZzMgeCwgdWxvbmcgbWludmFsLCB1bG9uZyBtYXh2YWwpOwpsb25nNCBfX292bGQgX19jbmZuIGNsYW1wKGxvbmc0IHgsIGxvbmcgbWludmFsLCBsb25nIG1heHZhbCk7CnVsb25nNCBfX292bGQgX19jbmZuIGNsYW1wKHVsb25nNCB4LCB1bG9uZyBtaW52YWwsIHVsb25nIG1heHZhbCk7Cmxvbmc4IF9fb3ZsZCBfX2NuZm4gY2xhbXAobG9uZzggeCwgbG9uZyBtaW52YWwsIGxvbmcgbWF4dmFsKTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gY2xhbXAodWxvbmc4IHgsIHVsb25nIG1pbnZhbCwgdWxvbmcgbWF4dmFsKTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gY2xhbXAobG9uZzE2IHgsIGxvbmcgbWludmFsLCBsb25nIG1heHZhbCk7CnVsb25nMTYgX19vdmxkIF9fY25mbiBjbGFtcCh1bG9uZzE2IHgsIHVsb25nIG1pbnZhbCwgdWxvbmcgbWF4dmFsKTsKCi8qKgogKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgbGVhZGluZyAwLWJpdHMgaW4geCwgc3RhcnRpbmcKICogYXQgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0IHBvc2l0aW9uLgogKi8KY2hhciBfX292bGQgX19jbmZuIGNseihjaGFyIHgpOwp1Y2hhciBfX292bGQgX19jbmZuIGNseih1Y2hhciB4KTsKY2hhcjIgX19vdmxkIF9fY25mbiBjbHooY2hhcjIgeCk7CnVjaGFyMiBfX292bGQgX19jbmZuIGNseih1Y2hhcjIgeCk7CmNoYXIzIF9fb3ZsZCBfX2NuZm4gY2x6KGNoYXIzIHgpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBjbHoodWNoYXIzIHgpOwpjaGFyNCBfX292bGQgX19jbmZuIGNseihjaGFyNCB4KTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gY2x6KHVjaGFyNCB4KTsKY2hhcjggX19vdmxkIF9fY25mbiBjbHooY2hhcjggeCk7CnVjaGFyOCBfX292bGQgX19jbmZuIGNseih1Y2hhcjggeCk7CmNoYXIxNiBfX292bGQgX19jbmZuIGNseihjaGFyMTYgeCk7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBjbHoodWNoYXIxNiB4KTsKc2hvcnQgX19vdmxkIF9fY25mbiBjbHooc2hvcnQgeCk7CnVzaG9ydCBfX292bGQgX19jbmZuIGNseih1c2hvcnQgeCk7CnNob3J0MiBfX292bGQgX19jbmZuIGNseihzaG9ydDIgeCk7CnVzaG9ydDIgX19vdmxkIF9fY25mbiBjbHoodXNob3J0MiB4KTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gY2x6KHNob3J0MyB4KTsKdXNob3J0MyBfX292bGQgX19jbmZuIGNseih1c2hvcnQzIHgpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBjbHooc2hvcnQ0IHgpOwp1c2hvcnQ0IF9fb3ZsZCBfX2NuZm4gY2x6KHVzaG9ydDQgeCk7CnNob3J0OCBfX292bGQgX19jbmZuIGNseihzaG9ydDggeCk7CnVzaG9ydDggX19vdmxkIF9fY25mbiBjbHoodXNob3J0OCB4KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGNseihzaG9ydDE2IHgpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGNseih1c2hvcnQxNiB4KTsKaW50IF9fb3ZsZCBfX2NuZm4gY2x6KGludCB4KTsKdWludCBfX292bGQgX19jbmZuIGNseih1aW50IHgpOwppbnQyIF9fb3ZsZCBfX2NuZm4gY2x6KGludDIgeCk7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gY2x6KHVpbnQyIHgpOwppbnQzIF9fb3ZsZCBfX2NuZm4gY2x6KGludDMgeCk7CnVpbnQzIF9fb3ZsZCBfX2NuZm4gY2x6KHVpbnQzIHgpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gY2x6KGludDQgeCk7CnVpbnQ0IF9fb3ZsZCBfX2NuZm4gY2x6KHVpbnQ0IHgpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gY2x6KGludDggeCk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gY2x6KHVpbnQ4IHgpOwppbnQxNiBfX292bGQgX19jbmZuIGNseihpbnQxNiB4KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gY2x6KHVpbnQxNiB4KTsKbG9uZyBfX292bGQgX19jbmZuIGNseihsb25nIHgpOwp1bG9uZyBfX292bGQgX19jbmZuIGNseih1bG9uZyB4KTsKbG9uZzIgX19vdmxkIF9fY25mbiBjbHoobG9uZzIgeCk7CnVsb25nMiBfX292bGQgX19jbmZuIGNseih1bG9uZzIgeCk7CmxvbmczIF9fb3ZsZCBfX2NuZm4gY2x6KGxvbmczIHgpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBjbHoodWxvbmczIHgpOwpsb25nNCBfX292bGQgX19jbmZuIGNseihsb25nNCB4KTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gY2x6KHVsb25nNCB4KTsKbG9uZzggX19vdmxkIF9fY25mbiBjbHoobG9uZzggeCk7CnVsb25nOCBfX292bGQgX19jbmZuIGNseih1bG9uZzggeCk7CmxvbmcxNiBfX292bGQgX19jbmZuIGNseihsb25nMTYgeCk7CnVsb25nMTYgX19vdmxkIF9fY25mbiBjbHoodWxvbmcxNiB4KTsKCi8qKgogKiBSZXR1cm5zIHRoZSBjb3VudCBvZiB0cmFpbGluZyAwLWJpdHMgaW4geC4gSWYgeCBpcyAwLAogKiByZXR1cm5zIHRoZSBzaXplIGluIGJpdHMgb2YgdGhlIHR5cGUgb2YgeCBvcgogKiBjb21wb25lbnQgdHlwZSBvZiB4LCBpZiB4IGlzIGEgdmVjdG9yLgogKi8KI2lmIGRlZmluZWQoX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXykgfHwgKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fMl8wKQpjaGFyIF9fb3ZsZCBfX2NuZm4gY3R6KGNoYXIgeCk7CnVjaGFyIF9fb3ZsZCBfX2NuZm4gY3R6KHVjaGFyIHgpOwpjaGFyMiBfX292bGQgX19jbmZuIGN0eihjaGFyMiB4KTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gY3R6KHVjaGFyMiB4KTsKY2hhcjMgX19vdmxkIF9fY25mbiBjdHooY2hhcjMgeCk7CnVjaGFyMyBfX292bGQgX19jbmZuIGN0eih1Y2hhcjMgeCk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gY3R6KGNoYXI0IHgpOwp1Y2hhcjQgX19vdmxkIF9fY25mbiBjdHoodWNoYXI0IHgpOwpjaGFyOCBfX292bGQgX19jbmZuIGN0eihjaGFyOCB4KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gY3R6KHVjaGFyOCB4KTsKY2hhcjE2IF9fb3ZsZCBfX2NuZm4gY3R6KGNoYXIxNiB4KTsKdWNoYXIxNiBfX292bGQgX19jbmZuIGN0eih1Y2hhcjE2IHgpOwpzaG9ydCBfX292bGQgX19jbmZuIGN0eihzaG9ydCB4KTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gY3R6KHVzaG9ydCB4KTsKc2hvcnQyIF9fb3ZsZCBfX2NuZm4gY3R6KHNob3J0MiB4KTsKdXNob3J0MiBfX292bGQgX19jbmZuIGN0eih1c2hvcnQyIHgpOwpzaG9ydDMgX19vdmxkIF9fY25mbiBjdHooc2hvcnQzIHgpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gY3R6KHVzaG9ydDMgeCk7CnNob3J0NCBfX292bGQgX19jbmZuIGN0eihzaG9ydDQgeCk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBjdHoodXNob3J0NCB4KTsKc2hvcnQ4IF9fb3ZsZCBfX2NuZm4gY3R6KHNob3J0OCB4KTsKdXNob3J0OCBfX292bGQgX19jbmZuIGN0eih1c2hvcnQ4IHgpOwpzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY3R6KHNob3J0MTYgeCk7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gY3R6KHVzaG9ydDE2IHgpOwppbnQgX19vdmxkIF9fY25mbiBjdHooaW50IHgpOwp1aW50IF9fb3ZsZCBfX2NuZm4gY3R6KHVpbnQgeCk7CmludDIgX19vdmxkIF9fY25mbiBjdHooaW50MiB4KTsKdWludDIgX19vdmxkIF9fY25mbiBjdHoodWludDIgeCk7CmludDMgX19vdmxkIF9fY25mbiBjdHooaW50MyB4KTsKdWludDMgX19vdmxkIF9fY25mbiBjdHoodWludDMgeCk7CmludDQgX19vdmxkIF9fY25mbiBjdHooaW50NCB4KTsKdWludDQgX19vdmxkIF9fY25mbiBjdHoodWludDQgeCk7CmludDggX19vdmxkIF9fY25mbiBjdHooaW50OCB4KTsKdWludDggX19vdmxkIF9fY25mbiBjdHoodWludDggeCk7CmludDE2IF9fb3ZsZCBfX2NuZm4gY3R6KGludDE2IHgpOwp1aW50MTYgX19vdmxkIF9fY25mbiBjdHoodWludDE2IHgpOwpsb25nIF9fb3ZsZCBfX2NuZm4gY3R6KGxvbmcgeCk7CnVsb25nIF9fb3ZsZCBfX2NuZm4gY3R6KHVsb25nIHgpOwpsb25nMiBfX292bGQgX19jbmZuIGN0eihsb25nMiB4KTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gY3R6KHVsb25nMiB4KTsKbG9uZzMgX19vdmxkIF9fY25mbiBjdHoobG9uZzMgeCk7CnVsb25nMyBfX292bGQgX19jbmZuIGN0eih1bG9uZzMgeCk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gY3R6KGxvbmc0IHgpOwp1bG9uZzQgX19vdmxkIF9fY25mbiBjdHoodWxvbmc0IHgpOwpsb25nOCBfX292bGQgX19jbmZuIGN0eihsb25nOCB4KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gY3R6KHVsb25nOCB4KTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gY3R6KGxvbmcxNiB4KTsKdWxvbmcxNiBfX292bGQgX19jbmZuIGN0eih1bG9uZzE2IHgpOwojZW5kaWYgLy9kZWZpbmVkKF9fT1BFTkNMX0NQUF9WRVJTSU9OX18pIHx8IChfX09QRU5DTF9DX1ZFUlNJT05fXyA+PSBDTF9WRVJTSU9OXzJfMCkKCi8qKgogKiBSZXR1cm5zIG11bF9oaShhLCBiKSArIGMuCiAqLwpjaGFyIF9fb3ZsZCBfX2NuZm4gbWFkX2hpKGNoYXIgYSwgY2hhciBiLCBjaGFyIGMpOwp1Y2hhciBfX292bGQgX19jbmZuIG1hZF9oaSh1Y2hhciBhLCB1Y2hhciBiLCB1Y2hhciBjKTsKY2hhcjIgX19vdmxkIF9fY25mbiBtYWRfaGkoY2hhcjIgYSwgY2hhcjIgYiwgY2hhcjIgYyk7CnVjaGFyMiBfX292bGQgX19jbmZuIG1hZF9oaSh1Y2hhcjIgYSwgdWNoYXIyIGIsIHVjaGFyMiBjKTsKY2hhcjMgX19vdmxkIF9fY25mbiBtYWRfaGkoY2hhcjMgYSwgY2hhcjMgYiwgY2hhcjMgYyk7CnVjaGFyMyBfX292bGQgX19jbmZuIG1hZF9oaSh1Y2hhcjMgYSwgdWNoYXIzIGIsIHVjaGFyMyBjKTsKY2hhcjQgX19vdmxkIF9fY25mbiBtYWRfaGkoY2hhcjQgYSwgY2hhcjQgYiwgY2hhcjQgYyk7CnVjaGFyNCBfX292bGQgX19jbmZuIG1hZF9oaSh1Y2hhcjQgYSwgdWNoYXI0IGIsIHVjaGFyNCBjKTsKY2hhcjggX19vdmxkIF9fY25mbiBtYWRfaGkoY2hhcjggYSwgY2hhcjggYiwgY2hhcjggYyk7CnVjaGFyOCBfX292bGQgX19jbmZuIG1hZF9oaSh1Y2hhcjggYSwgdWNoYXI4IGIsIHVjaGFyOCBjKTsKY2hhcjE2IF9fb3ZsZCBfX2NuZm4gbWFkX2hpKGNoYXIxNiBhLCBjaGFyMTYgYiwgY2hhcjE2IGMpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gbWFkX2hpKHVjaGFyMTYgYSwgdWNoYXIxNiBiLCB1Y2hhcjE2IGMpOwpzaG9ydCBfX292bGQgX19jbmZuIG1hZF9oaShzaG9ydCBhLCBzaG9ydCBiLCBzaG9ydCBjKTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gbWFkX2hpKHVzaG9ydCBhLCB1c2hvcnQgYiwgdXNob3J0IGMpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBtYWRfaGkoc2hvcnQyIGEsIHNob3J0MiBiLCBzaG9ydDIgYyk7CnVzaG9ydDIgX19vdmxkIF9fY25mbiBtYWRfaGkodXNob3J0MiBhLCB1c2hvcnQyIGIsIHVzaG9ydDIgYyk7CnNob3J0MyBfX292bGQgX19jbmZuIG1hZF9oaShzaG9ydDMgYSwgc2hvcnQzIGIsIHNob3J0MyBjKTsKdXNob3J0MyBfX292bGQgX19jbmZuIG1hZF9oaSh1c2hvcnQzIGEsIHVzaG9ydDMgYiwgdXNob3J0MyBjKTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gbWFkX2hpKHNob3J0NCBhLCBzaG9ydDQgYiwgc2hvcnQ0IGMpOwp1c2hvcnQ0IF9fb3ZsZCBfX2NuZm4gbWFkX2hpKHVzaG9ydDQgYSwgdXNob3J0NCBiLCB1c2hvcnQ0IGMpOwpzaG9ydDggX19vdmxkIF9fY25mbiBtYWRfaGkoc2hvcnQ4IGEsIHNob3J0OCBiLCBzaG9ydDggYyk7CnVzaG9ydDggX19vdmxkIF9fY25mbiBtYWRfaGkodXNob3J0OCBhLCB1c2hvcnQ4IGIsIHVzaG9ydDggYyk7CnNob3J0MTYgX19vdmxkIF9fY25mbiBtYWRfaGkoc2hvcnQxNiBhLCBzaG9ydDE2IGIsIHNob3J0MTYgYyk7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gbWFkX2hpKHVzaG9ydDE2IGEsIHVzaG9ydDE2IGIsIHVzaG9ydDE2IGMpOwppbnQgX19vdmxkIF9fY25mbiBtYWRfaGkoaW50IGEsIGludCBiLCBpbnQgYyk7CnVpbnQgX19vdmxkIF9fY25mbiBtYWRfaGkodWludCBhLCB1aW50IGIsIHVpbnQgYyk7CmludDIgX19vdmxkIF9fY25mbiBtYWRfaGkoaW50MiBhLCBpbnQyIGIsIGludDIgYyk7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gbWFkX2hpKHVpbnQyIGEsIHVpbnQyIGIsIHVpbnQyIGMpOwppbnQzIF9fb3ZsZCBfX2NuZm4gbWFkX2hpKGludDMgYSwgaW50MyBiLCBpbnQzIGMpOwp1aW50MyBfX292bGQgX19jbmZuIG1hZF9oaSh1aW50MyBhLCB1aW50MyBiLCB1aW50MyBjKTsKaW50NCBfX292bGQgX19jbmZuIG1hZF9oaShpbnQ0IGEsIGludDQgYiwgaW50NCBjKTsKdWludDQgX19vdmxkIF9fY25mbiBtYWRfaGkodWludDQgYSwgdWludDQgYiwgdWludDQgYyk7CmludDggX19vdmxkIF9fY25mbiBtYWRfaGkoaW50OCBhLCBpbnQ4IGIsIGludDggYyk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gbWFkX2hpKHVpbnQ4IGEsIHVpbnQ4IGIsIHVpbnQ4IGMpOwppbnQxNiBfX292bGQgX19jbmZuIG1hZF9oaShpbnQxNiBhLCBpbnQxNiBiLCBpbnQxNiBjKTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gbWFkX2hpKHVpbnQxNiBhLCB1aW50MTYgYiwgdWludDE2IGMpOwpsb25nIF9fb3ZsZCBfX2NuZm4gbWFkX2hpKGxvbmcgYSwgbG9uZyBiLCBsb25nIGMpOwp1bG9uZyBfX292bGQgX19jbmZuIG1hZF9oaSh1bG9uZyBhLCB1bG9uZyBiLCB1bG9uZyBjKTsKbG9uZzIgX19vdmxkIF9fY25mbiBtYWRfaGkobG9uZzIgYSwgbG9uZzIgYiwgbG9uZzIgYyk7CnVsb25nMiBfX292bGQgX19jbmZuIG1hZF9oaSh1bG9uZzIgYSwgdWxvbmcyIGIsIHVsb25nMiBjKTsKbG9uZzMgX19vdmxkIF9fY25mbiBtYWRfaGkobG9uZzMgYSwgbG9uZzMgYiwgbG9uZzMgYyk7CnVsb25nMyBfX292bGQgX19jbmZuIG1hZF9oaSh1bG9uZzMgYSwgdWxvbmczIGIsIHVsb25nMyBjKTsKbG9uZzQgX19vdmxkIF9fY25mbiBtYWRfaGkobG9uZzQgYSwgbG9uZzQgYiwgbG9uZzQgYyk7CnVsb25nNCBfX292bGQgX19jbmZuIG1hZF9oaSh1bG9uZzQgYSwgdWxvbmc0IGIsIHVsb25nNCBjKTsKbG9uZzggX19vdmxkIF9fY25mbiBtYWRfaGkobG9uZzggYSwgbG9uZzggYiwgbG9uZzggYyk7CnVsb25nOCBfX292bGQgX19jbmZuIG1hZF9oaSh1bG9uZzggYSwgdWxvbmc4IGIsIHVsb25nOCBjKTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gbWFkX2hpKGxvbmcxNiBhLCBsb25nMTYgYiwgbG9uZzE2IGMpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gbWFkX2hpKHVsb25nMTYgYSwgdWxvbmcxNiBiLCB1bG9uZzE2IGMpOwoKLyoqCiAqIFJldHVybnMgYSAqIGIgKyBjIGFuZCBzYXR1cmF0ZXMgdGhlIHJlc3VsdC4KICovCmNoYXIgX19vdmxkIF9fY25mbiBtYWRfc2F0KGNoYXIgYSwgY2hhciBiLCBjaGFyIGMpOwp1Y2hhciBfX292bGQgX19jbmZuIG1hZF9zYXQodWNoYXIgYSwgdWNoYXIgYiwgdWNoYXIgYyk7CmNoYXIyIF9fb3ZsZCBfX2NuZm4gbWFkX3NhdChjaGFyMiBhLCBjaGFyMiBiLCBjaGFyMiBjKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gbWFkX3NhdCh1Y2hhcjIgYSwgdWNoYXIyIGIsIHVjaGFyMiBjKTsKY2hhcjMgX19vdmxkIF9fY25mbiBtYWRfc2F0KGNoYXIzIGEsIGNoYXIzIGIsIGNoYXIzIGMpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBtYWRfc2F0KHVjaGFyMyBhLCB1Y2hhcjMgYiwgdWNoYXIzIGMpOwpjaGFyNCBfX292bGQgX19jbmZuIG1hZF9zYXQoY2hhcjQgYSwgY2hhcjQgYiwgY2hhcjQgYyk7CnVjaGFyNCBfX292bGQgX19jbmZuIG1hZF9zYXQodWNoYXI0IGEsIHVjaGFyNCBiLCB1Y2hhcjQgYyk7CmNoYXI4IF9fb3ZsZCBfX2NuZm4gbWFkX3NhdChjaGFyOCBhLCBjaGFyOCBiLCBjaGFyOCBjKTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gbWFkX3NhdCh1Y2hhcjggYSwgdWNoYXI4IGIsIHVjaGFyOCBjKTsKY2hhcjE2IF9fb3ZsZCBfX2NuZm4gbWFkX3NhdChjaGFyMTYgYSwgY2hhcjE2IGIsIGNoYXIxNiBjKTsKdWNoYXIxNiBfX292bGQgX19jbmZuIG1hZF9zYXQodWNoYXIxNiBhLCB1Y2hhcjE2IGIsIHVjaGFyMTYgYyk7CnNob3J0IF9fb3ZsZCBfX2NuZm4gbWFkX3NhdChzaG9ydCBhLCBzaG9ydCBiLCBzaG9ydCBjKTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gbWFkX3NhdCh1c2hvcnQgYSwgdXNob3J0IGIsIHVzaG9ydCBjKTsKc2hvcnQyIF9fb3ZsZCBfX2NuZm4gbWFkX3NhdChzaG9ydDIgYSwgc2hvcnQyIGIsIHNob3J0MiBjKTsKdXNob3J0MiBfX292bGQgX19jbmZuIG1hZF9zYXQodXNob3J0MiBhLCB1c2hvcnQyIGIsIHVzaG9ydDIgYyk7CnNob3J0MyBfX292bGQgX19jbmZuIG1hZF9zYXQoc2hvcnQzIGEsIHNob3J0MyBiLCBzaG9ydDMgYyk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBtYWRfc2F0KHVzaG9ydDMgYSwgdXNob3J0MyBiLCB1c2hvcnQzIGMpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBtYWRfc2F0KHNob3J0NCBhLCBzaG9ydDQgYiwgc2hvcnQ0IGMpOwp1c2hvcnQ0IF9fb3ZsZCBfX2NuZm4gbWFkX3NhdCh1c2hvcnQ0IGEsIHVzaG9ydDQgYiwgdXNob3J0NCBjKTsKc2hvcnQ4IF9fb3ZsZCBfX2NuZm4gbWFkX3NhdChzaG9ydDggYSwgc2hvcnQ4IGIsIHNob3J0OCBjKTsKdXNob3J0OCBfX292bGQgX19jbmZuIG1hZF9zYXQodXNob3J0OCBhLCB1c2hvcnQ4IGIsIHVzaG9ydDggYyk7CnNob3J0MTYgX19vdmxkIF9fY25mbiBtYWRfc2F0KHNob3J0MTYgYSwgc2hvcnQxNiBiLCBzaG9ydDE2IGMpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIG1hZF9zYXQodXNob3J0MTYgYSwgdXNob3J0MTYgYiwgdXNob3J0MTYgYyk7CmludCBfX292bGQgX19jbmZuIG1hZF9zYXQoaW50IGEsIGludCBiLCBpbnQgYyk7CnVpbnQgX19vdmxkIF9fY25mbiBtYWRfc2F0KHVpbnQgYSwgdWludCBiLCB1aW50IGMpOwppbnQyIF9fb3ZsZCBfX2NuZm4gbWFkX3NhdChpbnQyIGEsIGludDIgYiwgaW50MiBjKTsKdWludDIgX19vdmxkIF9fY25mbiBtYWRfc2F0KHVpbnQyIGEsIHVpbnQyIGIsIHVpbnQyIGMpOwppbnQzIF9fb3ZsZCBfX2NuZm4gbWFkX3NhdChpbnQzIGEsIGludDMgYiwgaW50MyBjKTsKdWludDMgX19vdmxkIF9fY25mbiBtYWRfc2F0KHVpbnQzIGEsIHVpbnQzIGIsIHVpbnQzIGMpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gbWFkX3NhdChpbnQ0IGEsIGludDQgYiwgaW50NCBjKTsKdWludDQgX19vdmxkIF9fY25mbiBtYWRfc2F0KHVpbnQ0IGEsIHVpbnQ0IGIsIHVpbnQ0IGMpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gbWFkX3NhdChpbnQ4IGEsIGludDggYiwgaW50OCBjKTsKdWludDggX19vdmxkIF9fY25mbiBtYWRfc2F0KHVpbnQ4IGEsIHVpbnQ4IGIsIHVpbnQ4IGMpOwppbnQxNiBfX292bGQgX19jbmZuIG1hZF9zYXQoaW50MTYgYSwgaW50MTYgYiwgaW50MTYgYyk7CnVpbnQxNiBfX292bGQgX19jbmZuIG1hZF9zYXQodWludDE2IGEsIHVpbnQxNiBiLCB1aW50MTYgYyk7CmxvbmcgX19vdmxkIF9fY25mbiBtYWRfc2F0KGxvbmcgYSwgbG9uZyBiLCBsb25nIGMpOwp1bG9uZyBfX292bGQgX19jbmZuIG1hZF9zYXQodWxvbmcgYSwgdWxvbmcgYiwgdWxvbmcgYyk7CmxvbmcyIF9fb3ZsZCBfX2NuZm4gbWFkX3NhdChsb25nMiBhLCBsb25nMiBiLCBsb25nMiBjKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gbWFkX3NhdCh1bG9uZzIgYSwgdWxvbmcyIGIsIHVsb25nMiBjKTsKbG9uZzMgX19vdmxkIF9fY25mbiBtYWRfc2F0KGxvbmczIGEsIGxvbmczIGIsIGxvbmczIGMpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBtYWRfc2F0KHVsb25nMyBhLCB1bG9uZzMgYiwgdWxvbmczIGMpOwpsb25nNCBfX292bGQgX19jbmZuIG1hZF9zYXQobG9uZzQgYSwgbG9uZzQgYiwgbG9uZzQgYyk7CnVsb25nNCBfX292bGQgX19jbmZuIG1hZF9zYXQodWxvbmc0IGEsIHVsb25nNCBiLCB1bG9uZzQgYyk7Cmxvbmc4IF9fb3ZsZCBfX2NuZm4gbWFkX3NhdChsb25nOCBhLCBsb25nOCBiLCBsb25nOCBjKTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gbWFkX3NhdCh1bG9uZzggYSwgdWxvbmc4IGIsIHVsb25nOCBjKTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gbWFkX3NhdChsb25nMTYgYSwgbG9uZzE2IGIsIGxvbmcxNiBjKTsKdWxvbmcxNiBfX292bGQgX19jbmZuIG1hZF9zYXQodWxvbmcxNiBhLCB1bG9uZzE2IGIsIHVsb25nMTYgYyk7CgovKioKICogUmV0dXJucyB5IGlmIHggPCB5LCBvdGhlcndpc2UgaXQgcmV0dXJucyB4LgogKi8KY2hhciBfX292bGQgX19jbmZuIG1heChjaGFyIHgsIGNoYXIgeSk7CnVjaGFyIF9fb3ZsZCBfX2NuZm4gbWF4KHVjaGFyIHgsIHVjaGFyIHkpOwpjaGFyMiBfX292bGQgX19jbmZuIG1heChjaGFyMiB4LCBjaGFyMiB5KTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gbWF4KHVjaGFyMiB4LCB1Y2hhcjIgeSk7CmNoYXIzIF9fb3ZsZCBfX2NuZm4gbWF4KGNoYXIzIHgsIGNoYXIzIHkpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBtYXgodWNoYXIzIHgsIHVjaGFyMyB5KTsKY2hhcjQgX19vdmxkIF9fY25mbiBtYXgoY2hhcjQgeCwgY2hhcjQgeSk7CnVjaGFyNCBfX292bGQgX19jbmZuIG1heCh1Y2hhcjQgeCwgdWNoYXI0IHkpOwpjaGFyOCBfX292bGQgX19jbmZuIG1heChjaGFyOCB4LCBjaGFyOCB5KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gbWF4KHVjaGFyOCB4LCB1Y2hhcjggeSk7CmNoYXIxNiBfX292bGQgX19jbmZuIG1heChjaGFyMTYgeCwgY2hhcjE2IHkpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gbWF4KHVjaGFyMTYgeCwgdWNoYXIxNiB5KTsKc2hvcnQgX19vdmxkIF9fY25mbiBtYXgoc2hvcnQgeCwgc2hvcnQgeSk7CnVzaG9ydCBfX292bGQgX19jbmZuIG1heCh1c2hvcnQgeCwgdXNob3J0IHkpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBtYXgoc2hvcnQyIHgsIHNob3J0MiB5KTsKdXNob3J0MiBfX292bGQgX19jbmZuIG1heCh1c2hvcnQyIHgsIHVzaG9ydDIgeSk7CnNob3J0MyBfX292bGQgX19jbmZuIG1heChzaG9ydDMgeCwgc2hvcnQzIHkpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gbWF4KHVzaG9ydDMgeCwgdXNob3J0MyB5KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gbWF4KHNob3J0NCB4LCBzaG9ydDQgeSk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBtYXgodXNob3J0NCB4LCB1c2hvcnQ0IHkpOwpzaG9ydDggX19vdmxkIF9fY25mbiBtYXgoc2hvcnQ4IHgsIHNob3J0OCB5KTsKdXNob3J0OCBfX292bGQgX19jbmZuIG1heCh1c2hvcnQ4IHgsIHVzaG9ydDggeSk7CnNob3J0MTYgX19vdmxkIF9fY25mbiBtYXgoc2hvcnQxNiB4LCBzaG9ydDE2IHkpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIG1heCh1c2hvcnQxNiB4LCB1c2hvcnQxNiB5KTsKaW50IF9fb3ZsZCBfX2NuZm4gbWF4KGludCB4LCBpbnQgeSk7CnVpbnQgX19vdmxkIF9fY25mbiBtYXgodWludCB4LCB1aW50IHkpOwppbnQyIF9fb3ZsZCBfX2NuZm4gbWF4KGludDIgeCwgaW50MiB5KTsKdWludDIgX19vdmxkIF9fY25mbiBtYXgodWludDIgeCwgdWludDIgeSk7CmludDMgX19vdmxkIF9fY25mbiBtYXgoaW50MyB4LCBpbnQzIHkpOwp1aW50MyBfX292bGQgX19jbmZuIG1heCh1aW50MyB4LCB1aW50MyB5KTsKaW50NCBfX292bGQgX19jbmZuIG1heChpbnQ0IHgsIGludDQgeSk7CnVpbnQ0IF9fb3ZsZCBfX2NuZm4gbWF4KHVpbnQ0IHgsIHVpbnQ0IHkpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gbWF4KGludDggeCwgaW50OCB5KTsKdWludDggX19vdmxkIF9fY25mbiBtYXgodWludDggeCwgdWludDggeSk7CmludDE2IF9fb3ZsZCBfX2NuZm4gbWF4KGludDE2IHgsIGludDE2IHkpOwp1aW50MTYgX19vdmxkIF9fY25mbiBtYXgodWludDE2IHgsIHVpbnQxNiB5KTsKbG9uZyBfX292bGQgX19jbmZuIG1heChsb25nIHgsIGxvbmcgeSk7CnVsb25nIF9fb3ZsZCBfX2NuZm4gbWF4KHVsb25nIHgsIHVsb25nIHkpOwpsb25nMiBfX292bGQgX19jbmZuIG1heChsb25nMiB4LCBsb25nMiB5KTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gbWF4KHVsb25nMiB4LCB1bG9uZzIgeSk7CmxvbmczIF9fb3ZsZCBfX2NuZm4gbWF4KGxvbmczIHgsIGxvbmczIHkpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBtYXgodWxvbmczIHgsIHVsb25nMyB5KTsKbG9uZzQgX19vdmxkIF9fY25mbiBtYXgobG9uZzQgeCwgbG9uZzQgeSk7CnVsb25nNCBfX292bGQgX19jbmZuIG1heCh1bG9uZzQgeCwgdWxvbmc0IHkpOwpsb25nOCBfX292bGQgX19jbmZuIG1heChsb25nOCB4LCBsb25nOCB5KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gbWF4KHVsb25nOCB4LCB1bG9uZzggeSk7CmxvbmcxNiBfX292bGQgX19jbmZuIG1heChsb25nMTYgeCwgbG9uZzE2IHkpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gbWF4KHVsb25nMTYgeCwgdWxvbmcxNiB5KTsKY2hhcjIgX19vdmxkIF9fY25mbiBtYXgoY2hhcjIgeCwgY2hhciB5KTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gbWF4KHVjaGFyMiB4LCB1Y2hhciB5KTsKY2hhcjMgX19vdmxkIF9fY25mbiBtYXgoY2hhcjMgeCwgY2hhciB5KTsKdWNoYXIzIF9fb3ZsZCBfX2NuZm4gbWF4KHVjaGFyMyB4LCB1Y2hhciB5KTsKY2hhcjQgX19vdmxkIF9fY25mbiBtYXgoY2hhcjQgeCwgY2hhciB5KTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gbWF4KHVjaGFyNCB4LCB1Y2hhciB5KTsKY2hhcjggX19vdmxkIF9fY25mbiBtYXgoY2hhcjggeCwgY2hhciB5KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gbWF4KHVjaGFyOCB4LCB1Y2hhciB5KTsKY2hhcjE2IF9fb3ZsZCBfX2NuZm4gbWF4KGNoYXIxNiB4LCBjaGFyIHkpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gbWF4KHVjaGFyMTYgeCwgdWNoYXIgeSk7CnNob3J0MiBfX292bGQgX19jbmZuIG1heChzaG9ydDIgeCwgc2hvcnQgeSk7CnVzaG9ydDIgX19vdmxkIF9fY25mbiBtYXgodXNob3J0MiB4LCB1c2hvcnQgeSk7CnNob3J0MyBfX292bGQgX19jbmZuIG1heChzaG9ydDMgeCwgc2hvcnQgeSk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBtYXgodXNob3J0MyB4LCB1c2hvcnQgeSk7CnNob3J0NCBfX292bGQgX19jbmZuIG1heChzaG9ydDQgeCwgc2hvcnQgeSk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBtYXgodXNob3J0NCB4LCB1c2hvcnQgeSk7CnNob3J0OCBfX292bGQgX19jbmZuIG1heChzaG9ydDggeCwgc2hvcnQgeSk7CnVzaG9ydDggX19vdmxkIF9fY25mbiBtYXgodXNob3J0OCB4LCB1c2hvcnQgeSk7CnNob3J0MTYgX19vdmxkIF9fY25mbiBtYXgoc2hvcnQxNiB4LCBzaG9ydCB5KTsKdXNob3J0MTYgX19vdmxkIF9fY25mbiBtYXgodXNob3J0MTYgeCwgdXNob3J0IHkpOwppbnQyIF9fb3ZsZCBfX2NuZm4gbWF4KGludDIgeCwgaW50IHkpOwp1aW50MiBfX292bGQgX19jbmZuIG1heCh1aW50MiB4LCB1aW50IHkpOwppbnQzIF9fb3ZsZCBfX2NuZm4gbWF4KGludDMgeCwgaW50IHkpOwp1aW50MyBfX292bGQgX19jbmZuIG1heCh1aW50MyB4LCB1aW50IHkpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gbWF4KGludDQgeCwgaW50IHkpOwp1aW50NCBfX292bGQgX19jbmZuIG1heCh1aW50NCB4LCB1aW50IHkpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gbWF4KGludDggeCwgaW50IHkpOwp1aW50OCBfX292bGQgX19jbmZuIG1heCh1aW50OCB4LCB1aW50IHkpOwppbnQxNiBfX292bGQgX19jbmZuIG1heChpbnQxNiB4LCBpbnQgeSk7CnVpbnQxNiBfX292bGQgX19jbmZuIG1heCh1aW50MTYgeCwgdWludCB5KTsKbG9uZzIgX19vdmxkIF9fY25mbiBtYXgobG9uZzIgeCwgbG9uZyB5KTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gbWF4KHVsb25nMiB4LCB1bG9uZyB5KTsKbG9uZzMgX19vdmxkIF9fY25mbiBtYXgobG9uZzMgeCwgbG9uZyB5KTsKdWxvbmczIF9fb3ZsZCBfX2NuZm4gbWF4KHVsb25nMyB4LCB1bG9uZyB5KTsKbG9uZzQgX19vdmxkIF9fY25mbiBtYXgobG9uZzQgeCwgbG9uZyB5KTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gbWF4KHVsb25nNCB4LCB1bG9uZyB5KTsKbG9uZzggX19vdmxkIF9fY25mbiBtYXgobG9uZzggeCwgbG9uZyB5KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gbWF4KHVsb25nOCB4LCB1bG9uZyB5KTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gbWF4KGxvbmcxNiB4LCBsb25nIHkpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gbWF4KHVsb25nMTYgeCwgdWxvbmcgeSk7CgovKioKICogUmV0dXJucyB5IGlmIHkgPCB4LCBvdGhlcndpc2UgaXQgcmV0dXJucyB4LgogKi8KY2hhciBfX292bGQgX19jbmZuIG1pbihjaGFyIHgsIGNoYXIgeSk7CnVjaGFyIF9fb3ZsZCBfX2NuZm4gbWluKHVjaGFyIHgsIHVjaGFyIHkpOwpjaGFyMiBfX292bGQgX19jbmZuIG1pbihjaGFyMiB4LCBjaGFyMiB5KTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gbWluKHVjaGFyMiB4LCB1Y2hhcjIgeSk7CmNoYXIzIF9fb3ZsZCBfX2NuZm4gbWluKGNoYXIzIHgsIGNoYXIzIHkpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBtaW4odWNoYXIzIHgsIHVjaGFyMyB5KTsKY2hhcjQgX19vdmxkIF9fY25mbiBtaW4oY2hhcjQgeCwgY2hhcjQgeSk7CnVjaGFyNCBfX292bGQgX19jbmZuIG1pbih1Y2hhcjQgeCwgdWNoYXI0IHkpOwpjaGFyOCBfX292bGQgX19jbmZuIG1pbihjaGFyOCB4LCBjaGFyOCB5KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gbWluKHVjaGFyOCB4LCB1Y2hhcjggeSk7CmNoYXIxNiBfX292bGQgX19jbmZuIG1pbihjaGFyMTYgeCwgY2hhcjE2IHkpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gbWluKHVjaGFyMTYgeCwgdWNoYXIxNiB5KTsKc2hvcnQgX19vdmxkIF9fY25mbiBtaW4oc2hvcnQgeCwgc2hvcnQgeSk7CnVzaG9ydCBfX292bGQgX19jbmZuIG1pbih1c2hvcnQgeCwgdXNob3J0IHkpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBtaW4oc2hvcnQyIHgsIHNob3J0MiB5KTsKdXNob3J0MiBfX292bGQgX19jbmZuIG1pbih1c2hvcnQyIHgsIHVzaG9ydDIgeSk7CnNob3J0MyBfX292bGQgX19jbmZuIG1pbihzaG9ydDMgeCwgc2hvcnQzIHkpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gbWluKHVzaG9ydDMgeCwgdXNob3J0MyB5KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gbWluKHNob3J0NCB4LCBzaG9ydDQgeSk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBtaW4odXNob3J0NCB4LCB1c2hvcnQ0IHkpOwpzaG9ydDggX19vdmxkIF9fY25mbiBtaW4oc2hvcnQ4IHgsIHNob3J0OCB5KTsKdXNob3J0OCBfX292bGQgX19jbmZuIG1pbih1c2hvcnQ4IHgsIHVzaG9ydDggeSk7CnNob3J0MTYgX19vdmxkIF9fY25mbiBtaW4oc2hvcnQxNiB4LCBzaG9ydDE2IHkpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIG1pbih1c2hvcnQxNiB4LCB1c2hvcnQxNiB5KTsKaW50IF9fb3ZsZCBfX2NuZm4gbWluKGludCB4LCBpbnQgeSk7CnVpbnQgX19vdmxkIF9fY25mbiBtaW4odWludCB4LCB1aW50IHkpOwppbnQyIF9fb3ZsZCBfX2NuZm4gbWluKGludDIgeCwgaW50MiB5KTsKdWludDIgX19vdmxkIF9fY25mbiBtaW4odWludDIgeCwgdWludDIgeSk7CmludDMgX19vdmxkIF9fY25mbiBtaW4oaW50MyB4LCBpbnQzIHkpOwp1aW50MyBfX292bGQgX19jbmZuIG1pbih1aW50MyB4LCB1aW50MyB5KTsKaW50NCBfX292bGQgX19jbmZuIG1pbihpbnQ0IHgsIGludDQgeSk7CnVpbnQ0IF9fb3ZsZCBfX2NuZm4gbWluKHVpbnQ0IHgsIHVpbnQ0IHkpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gbWluKGludDggeCwgaW50OCB5KTsKdWludDggX19vdmxkIF9fY25mbiBtaW4odWludDggeCwgdWludDggeSk7CmludDE2IF9fb3ZsZCBfX2NuZm4gbWluKGludDE2IHgsIGludDE2IHkpOwp1aW50MTYgX19vdmxkIF9fY25mbiBtaW4odWludDE2IHgsIHVpbnQxNiB5KTsKbG9uZyBfX292bGQgX19jbmZuIG1pbihsb25nIHgsIGxvbmcgeSk7CnVsb25nIF9fb3ZsZCBfX2NuZm4gbWluKHVsb25nIHgsIHVsb25nIHkpOwpsb25nMiBfX292bGQgX19jbmZuIG1pbihsb25nMiB4LCBsb25nMiB5KTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gbWluKHVsb25nMiB4LCB1bG9uZzIgeSk7CmxvbmczIF9fb3ZsZCBfX2NuZm4gbWluKGxvbmczIHgsIGxvbmczIHkpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBtaW4odWxvbmczIHgsIHVsb25nMyB5KTsKbG9uZzQgX19vdmxkIF9fY25mbiBtaW4obG9uZzQgeCwgbG9uZzQgeSk7CnVsb25nNCBfX292bGQgX19jbmZuIG1pbih1bG9uZzQgeCwgdWxvbmc0IHkpOwpsb25nOCBfX292bGQgX19jbmZuIG1pbihsb25nOCB4LCBsb25nOCB5KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gbWluKHVsb25nOCB4LCB1bG9uZzggeSk7CmxvbmcxNiBfX292bGQgX19jbmZuIG1pbihsb25nMTYgeCwgbG9uZzE2IHkpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gbWluKHVsb25nMTYgeCwgdWxvbmcxNiB5KTsKY2hhcjIgX19vdmxkIF9fY25mbiBtaW4oY2hhcjIgeCwgY2hhciB5KTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gbWluKHVjaGFyMiB4LCB1Y2hhciB5KTsKY2hhcjMgX19vdmxkIF9fY25mbiBtaW4oY2hhcjMgeCwgY2hhciB5KTsKdWNoYXIzIF9fb3ZsZCBfX2NuZm4gbWluKHVjaGFyMyB4LCB1Y2hhciB5KTsKY2hhcjQgX19vdmxkIF9fY25mbiBtaW4oY2hhcjQgeCwgY2hhciB5KTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gbWluKHVjaGFyNCB4LCB1Y2hhciB5KTsKY2hhcjggX19vdmxkIF9fY25mbiBtaW4oY2hhcjggeCwgY2hhciB5KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gbWluKHVjaGFyOCB4LCB1Y2hhciB5KTsKY2hhcjE2IF9fb3ZsZCBfX2NuZm4gbWluKGNoYXIxNiB4LCBjaGFyIHkpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gbWluKHVjaGFyMTYgeCwgdWNoYXIgeSk7CnNob3J0MiBfX292bGQgX19jbmZuIG1pbihzaG9ydDIgeCwgc2hvcnQgeSk7CnVzaG9ydDIgX19vdmxkIF9fY25mbiBtaW4odXNob3J0MiB4LCB1c2hvcnQgeSk7CnNob3J0MyBfX292bGQgX19jbmZuIG1pbihzaG9ydDMgeCwgc2hvcnQgeSk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBtaW4odXNob3J0MyB4LCB1c2hvcnQgeSk7CnNob3J0NCBfX292bGQgX19jbmZuIG1pbihzaG9ydDQgeCwgc2hvcnQgeSk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBtaW4odXNob3J0NCB4LCB1c2hvcnQgeSk7CnNob3J0OCBfX292bGQgX19jbmZuIG1pbihzaG9ydDggeCwgc2hvcnQgeSk7CnVzaG9ydDggX19vdmxkIF9fY25mbiBtaW4odXNob3J0OCB4LCB1c2hvcnQgeSk7CnNob3J0MTYgX19vdmxkIF9fY25mbiBtaW4oc2hvcnQxNiB4LCBzaG9ydCB5KTsKdXNob3J0MTYgX19vdmxkIF9fY25mbiBtaW4odXNob3J0MTYgeCwgdXNob3J0IHkpOwppbnQyIF9fb3ZsZCBfX2NuZm4gbWluKGludDIgeCwgaW50IHkpOwp1aW50MiBfX292bGQgX19jbmZuIG1pbih1aW50MiB4LCB1aW50IHkpOwppbnQzIF9fb3ZsZCBfX2NuZm4gbWluKGludDMgeCwgaW50IHkpOwp1aW50MyBfX292bGQgX19jbmZuIG1pbih1aW50MyB4LCB1aW50IHkpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gbWluKGludDQgeCwgaW50IHkpOwp1aW50NCBfX292bGQgX19jbmZuIG1pbih1aW50NCB4LCB1aW50IHkpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gbWluKGludDggeCwgaW50IHkpOwp1aW50OCBfX292bGQgX19jbmZuIG1pbih1aW50OCB4LCB1aW50IHkpOwppbnQxNiBfX292bGQgX19jbmZuIG1pbihpbnQxNiB4LCBpbnQgeSk7CnVpbnQxNiBfX292bGQgX19jbmZuIG1pbih1aW50MTYgeCwgdWludCB5KTsKbG9uZzIgX19vdmxkIF9fY25mbiBtaW4obG9uZzIgeCwgbG9uZyB5KTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gbWluKHVsb25nMiB4LCB1bG9uZyB5KTsKbG9uZzMgX19vdmxkIF9fY25mbiBtaW4obG9uZzMgeCwgbG9uZyB5KTsKdWxvbmczIF9fb3ZsZCBfX2NuZm4gbWluKHVsb25nMyB4LCB1bG9uZyB5KTsKbG9uZzQgX19vdmxkIF9fY25mbiBtaW4obG9uZzQgeCwgbG9uZyB5KTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gbWluKHVsb25nNCB4LCB1bG9uZyB5KTsKbG9uZzggX19vdmxkIF9fY25mbiBtaW4obG9uZzggeCwgbG9uZyB5KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gbWluKHVsb25nOCB4LCB1bG9uZyB5KTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gbWluKGxvbmcxNiB4LCBsb25nIHkpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gbWluKHVsb25nMTYgeCwgdWxvbmcgeSk7CgovKioKICogQ29tcHV0ZXMgeCAqIHkgYW5kIHJldHVybnMgdGhlIGhpZ2ggaGFsZiBvZiB0aGUKICogcHJvZHVjdCBvZiB4IGFuZCB5LgogKi8KY2hhciBfX292bGQgX19jbmZuIG11bF9oaShjaGFyIHgsIGNoYXIgeSk7CnVjaGFyIF9fb3ZsZCBfX2NuZm4gbXVsX2hpKHVjaGFyIHgsIHVjaGFyIHkpOwpjaGFyMiBfX292bGQgX19jbmZuIG11bF9oaShjaGFyMiB4LCBjaGFyMiB5KTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gbXVsX2hpKHVjaGFyMiB4LCB1Y2hhcjIgeSk7CmNoYXIzIF9fb3ZsZCBfX2NuZm4gbXVsX2hpKGNoYXIzIHgsIGNoYXIzIHkpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBtdWxfaGkodWNoYXIzIHgsIHVjaGFyMyB5KTsKY2hhcjQgX19vdmxkIF9fY25mbiBtdWxfaGkoY2hhcjQgeCwgY2hhcjQgeSk7CnVjaGFyNCBfX292bGQgX19jbmZuIG11bF9oaSh1Y2hhcjQgeCwgdWNoYXI0IHkpOwpjaGFyOCBfX292bGQgX19jbmZuIG11bF9oaShjaGFyOCB4LCBjaGFyOCB5KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gbXVsX2hpKHVjaGFyOCB4LCB1Y2hhcjggeSk7CmNoYXIxNiBfX292bGQgX19jbmZuIG11bF9oaShjaGFyMTYgeCwgY2hhcjE2IHkpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gbXVsX2hpKHVjaGFyMTYgeCwgdWNoYXIxNiB5KTsKc2hvcnQgX19vdmxkIF9fY25mbiBtdWxfaGkoc2hvcnQgeCwgc2hvcnQgeSk7CnVzaG9ydCBfX292bGQgX19jbmZuIG11bF9oaSh1c2hvcnQgeCwgdXNob3J0IHkpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBtdWxfaGkoc2hvcnQyIHgsIHNob3J0MiB5KTsKdXNob3J0MiBfX292bGQgX19jbmZuIG11bF9oaSh1c2hvcnQyIHgsIHVzaG9ydDIgeSk7CnNob3J0MyBfX292bGQgX19jbmZuIG11bF9oaShzaG9ydDMgeCwgc2hvcnQzIHkpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gbXVsX2hpKHVzaG9ydDMgeCwgdXNob3J0MyB5KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gbXVsX2hpKHNob3J0NCB4LCBzaG9ydDQgeSk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBtdWxfaGkodXNob3J0NCB4LCB1c2hvcnQ0IHkpOwpzaG9ydDggX19vdmxkIF9fY25mbiBtdWxfaGkoc2hvcnQ4IHgsIHNob3J0OCB5KTsKdXNob3J0OCBfX292bGQgX19jbmZuIG11bF9oaSh1c2hvcnQ4IHgsIHVzaG9ydDggeSk7CnNob3J0MTYgX19vdmxkIF9fY25mbiBtdWxfaGkoc2hvcnQxNiB4LCBzaG9ydDE2IHkpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIG11bF9oaSh1c2hvcnQxNiB4LCB1c2hvcnQxNiB5KTsKaW50IF9fb3ZsZCBfX2NuZm4gbXVsX2hpKGludCB4LCBpbnQgeSk7CnVpbnQgX19vdmxkIF9fY25mbiBtdWxfaGkodWludCB4LCB1aW50IHkpOwppbnQyIF9fb3ZsZCBfX2NuZm4gbXVsX2hpKGludDIgeCwgaW50MiB5KTsKdWludDIgX19vdmxkIF9fY25mbiBtdWxfaGkodWludDIgeCwgdWludDIgeSk7CmludDMgX19vdmxkIF9fY25mbiBtdWxfaGkoaW50MyB4LCBpbnQzIHkpOwp1aW50MyBfX292bGQgX19jbmZuIG11bF9oaSh1aW50MyB4LCB1aW50MyB5KTsKaW50NCBfX292bGQgX19jbmZuIG11bF9oaShpbnQ0IHgsIGludDQgeSk7CnVpbnQ0IF9fb3ZsZCBfX2NuZm4gbXVsX2hpKHVpbnQ0IHgsIHVpbnQ0IHkpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gbXVsX2hpKGludDggeCwgaW50OCB5KTsKdWludDggX19vdmxkIF9fY25mbiBtdWxfaGkodWludDggeCwgdWludDggeSk7CmludDE2IF9fb3ZsZCBfX2NuZm4gbXVsX2hpKGludDE2IHgsIGludDE2IHkpOwp1aW50MTYgX19vdmxkIF9fY25mbiBtdWxfaGkodWludDE2IHgsIHVpbnQxNiB5KTsKbG9uZyBfX292bGQgX19jbmZuIG11bF9oaShsb25nIHgsIGxvbmcgeSk7CnVsb25nIF9fb3ZsZCBfX2NuZm4gbXVsX2hpKHVsb25nIHgsIHVsb25nIHkpOwpsb25nMiBfX292bGQgX19jbmZuIG11bF9oaShsb25nMiB4LCBsb25nMiB5KTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gbXVsX2hpKHVsb25nMiB4LCB1bG9uZzIgeSk7CmxvbmczIF9fb3ZsZCBfX2NuZm4gbXVsX2hpKGxvbmczIHgsIGxvbmczIHkpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBtdWxfaGkodWxvbmczIHgsIHVsb25nMyB5KTsKbG9uZzQgX19vdmxkIF9fY25mbiBtdWxfaGkobG9uZzQgeCwgbG9uZzQgeSk7CnVsb25nNCBfX292bGQgX19jbmZuIG11bF9oaSh1bG9uZzQgeCwgdWxvbmc0IHkpOwpsb25nOCBfX292bGQgX19jbmZuIG11bF9oaShsb25nOCB4LCBsb25nOCB5KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gbXVsX2hpKHVsb25nOCB4LCB1bG9uZzggeSk7CmxvbmcxNiBfX292bGQgX19jbmZuIG11bF9oaShsb25nMTYgeCwgbG9uZzE2IHkpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gbXVsX2hpKHVsb25nMTYgeCwgdWxvbmcxNiB5KTsKCi8qKgogKiBGb3IgZWFjaCBlbGVtZW50IGluIHYsIHRoZSBiaXRzIGFyZSBzaGlmdGVkIGxlZnQgYnkKICogdGhlIG51bWJlciBvZiBiaXRzIGdpdmVuIGJ5IHRoZSBjb3JyZXNwb25kaW5nCiAqIGVsZW1lbnQgaW4gaSAoc3ViamVjdCB0byB1c3VhbCBzaGlmdCBtb2R1bG8gcnVsZXMKICogZGVzY3JpYmVkIGluIHNlY3Rpb24gNi4zKS4gQml0cyBzaGlmdGVkIG9mZiB0aGUgbGVmdAogKiBzaWRlIG9mIHRoZSBlbGVtZW50IGFyZSBzaGlmdGVkIGJhY2sgaW4gZnJvbSB0aGUKICogcmlnaHQuCiAqLwpjaGFyIF9fb3ZsZCBfX2NuZm4gcm90YXRlKGNoYXIgdiwgY2hhciBpKTsKdWNoYXIgX19vdmxkIF9fY25mbiByb3RhdGUodWNoYXIgdiwgdWNoYXIgaSk7CmNoYXIyIF9fb3ZsZCBfX2NuZm4gcm90YXRlKGNoYXIyIHYsIGNoYXIyIGkpOwp1Y2hhcjIgX19vdmxkIF9fY25mbiByb3RhdGUodWNoYXIyIHYsIHVjaGFyMiBpKTsKY2hhcjMgX19vdmxkIF9fY25mbiByb3RhdGUoY2hhcjMgdiwgY2hhcjMgaSk7CnVjaGFyMyBfX292bGQgX19jbmZuIHJvdGF0ZSh1Y2hhcjMgdiwgdWNoYXIzIGkpOwpjaGFyNCBfX292bGQgX19jbmZuIHJvdGF0ZShjaGFyNCB2LCBjaGFyNCBpKTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gcm90YXRlKHVjaGFyNCB2LCB1Y2hhcjQgaSk7CmNoYXI4IF9fb3ZsZCBfX2NuZm4gcm90YXRlKGNoYXI4IHYsIGNoYXI4IGkpOwp1Y2hhcjggX19vdmxkIF9fY25mbiByb3RhdGUodWNoYXI4IHYsIHVjaGFyOCBpKTsKY2hhcjE2IF9fb3ZsZCBfX2NuZm4gcm90YXRlKGNoYXIxNiB2LCBjaGFyMTYgaSk7CnVjaGFyMTYgX19vdmxkIF9fY25mbiByb3RhdGUodWNoYXIxNiB2LCB1Y2hhcjE2IGkpOwpzaG9ydCBfX292bGQgX19jbmZuIHJvdGF0ZShzaG9ydCB2LCBzaG9ydCBpKTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gcm90YXRlKHVzaG9ydCB2LCB1c2hvcnQgaSk7CnNob3J0MiBfX292bGQgX19jbmZuIHJvdGF0ZShzaG9ydDIgdiwgc2hvcnQyIGkpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gcm90YXRlKHVzaG9ydDIgdiwgdXNob3J0MiBpKTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gcm90YXRlKHNob3J0MyB2LCBzaG9ydDMgaSk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiByb3RhdGUodXNob3J0MyB2LCB1c2hvcnQzIGkpOwpzaG9ydDQgX19vdmxkIF9fY25mbiByb3RhdGUoc2hvcnQ0IHYsIHNob3J0NCBpKTsKdXNob3J0NCBfX292bGQgX19jbmZuIHJvdGF0ZSh1c2hvcnQ0IHYsIHVzaG9ydDQgaSk7CnNob3J0OCBfX292bGQgX19jbmZuIHJvdGF0ZShzaG9ydDggdiwgc2hvcnQ4IGkpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gcm90YXRlKHVzaG9ydDggdiwgdXNob3J0OCBpKTsKc2hvcnQxNiBfX292bGQgX19jbmZuIHJvdGF0ZShzaG9ydDE2IHYsIHNob3J0MTYgaSk7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gcm90YXRlKHVzaG9ydDE2IHYsIHVzaG9ydDE2IGkpOwppbnQgX19vdmxkIF9fY25mbiByb3RhdGUoaW50IHYsIGludCBpKTsKdWludCBfX292bGQgX19jbmZuIHJvdGF0ZSh1aW50IHYsIHVpbnQgaSk7CmludDIgX19vdmxkIF9fY25mbiByb3RhdGUoaW50MiB2LCBpbnQyIGkpOwp1aW50MiBfX292bGQgX19jbmZuIHJvdGF0ZSh1aW50MiB2LCB1aW50MiBpKTsKaW50MyBfX292bGQgX19jbmZuIHJvdGF0ZShpbnQzIHYsIGludDMgaSk7CnVpbnQzIF9fb3ZsZCBfX2NuZm4gcm90YXRlKHVpbnQzIHYsIHVpbnQzIGkpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gcm90YXRlKGludDQgdiwgaW50NCBpKTsKdWludDQgX19vdmxkIF9fY25mbiByb3RhdGUodWludDQgdiwgdWludDQgaSk7CmludDggX19vdmxkIF9fY25mbiByb3RhdGUoaW50OCB2LCBpbnQ4IGkpOwp1aW50OCBfX292bGQgX19jbmZuIHJvdGF0ZSh1aW50OCB2LCB1aW50OCBpKTsKaW50MTYgX19vdmxkIF9fY25mbiByb3RhdGUoaW50MTYgdiwgaW50MTYgaSk7CnVpbnQxNiBfX292bGQgX19jbmZuIHJvdGF0ZSh1aW50MTYgdiwgdWludDE2IGkpOwpsb25nIF9fb3ZsZCBfX2NuZm4gcm90YXRlKGxvbmcgdiwgbG9uZyBpKTsKdWxvbmcgX19vdmxkIF9fY25mbiByb3RhdGUodWxvbmcgdiwgdWxvbmcgaSk7CmxvbmcyIF9fb3ZsZCBfX2NuZm4gcm90YXRlKGxvbmcyIHYsIGxvbmcyIGkpOwp1bG9uZzIgX19vdmxkIF9fY25mbiByb3RhdGUodWxvbmcyIHYsIHVsb25nMiBpKTsKbG9uZzMgX19vdmxkIF9fY25mbiByb3RhdGUobG9uZzMgdiwgbG9uZzMgaSk7CnVsb25nMyBfX292bGQgX19jbmZuIHJvdGF0ZSh1bG9uZzMgdiwgdWxvbmczIGkpOwpsb25nNCBfX292bGQgX19jbmZuIHJvdGF0ZShsb25nNCB2LCBsb25nNCBpKTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gcm90YXRlKHVsb25nNCB2LCB1bG9uZzQgaSk7Cmxvbmc4IF9fb3ZsZCBfX2NuZm4gcm90YXRlKGxvbmc4IHYsIGxvbmc4IGkpOwp1bG9uZzggX19vdmxkIF9fY25mbiByb3RhdGUodWxvbmc4IHYsIHVsb25nOCBpKTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gcm90YXRlKGxvbmcxNiB2LCBsb25nMTYgaSk7CnVsb25nMTYgX19vdmxkIF9fY25mbiByb3RhdGUodWxvbmcxNiB2LCB1bG9uZzE2IGkpOwoKLyoqCiAqIFJldHVybnMgeCAtIHkgYW5kIHNhdHVyYXRlcyB0aGUgcmVzdWx0LgogKi8KY2hhciBfX292bGQgX19jbmZuIHN1Yl9zYXQoY2hhciB4LCBjaGFyIHkpOwp1Y2hhciBfX292bGQgX19jbmZuIHN1Yl9zYXQodWNoYXIgeCwgdWNoYXIgeSk7CmNoYXIyIF9fb3ZsZCBfX2NuZm4gc3ViX3NhdChjaGFyMiB4LCBjaGFyMiB5KTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gc3ViX3NhdCh1Y2hhcjIgeCwgdWNoYXIyIHkpOwpjaGFyMyBfX292bGQgX19jbmZuIHN1Yl9zYXQoY2hhcjMgeCwgY2hhcjMgeSk7CnVjaGFyMyBfX292bGQgX19jbmZuIHN1Yl9zYXQodWNoYXIzIHgsIHVjaGFyMyB5KTsKY2hhcjQgX19vdmxkIF9fY25mbiBzdWJfc2F0KGNoYXI0IHgsIGNoYXI0IHkpOwp1Y2hhcjQgX19vdmxkIF9fY25mbiBzdWJfc2F0KHVjaGFyNCB4LCB1Y2hhcjQgeSk7CmNoYXI4IF9fb3ZsZCBfX2NuZm4gc3ViX3NhdChjaGFyOCB4LCBjaGFyOCB5KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gc3ViX3NhdCh1Y2hhcjggeCwgdWNoYXI4IHkpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBzdWJfc2F0KGNoYXIxNiB4LCBjaGFyMTYgeSk7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBzdWJfc2F0KHVjaGFyMTYgeCwgdWNoYXIxNiB5KTsKc2hvcnQgX19vdmxkIF9fY25mbiBzdWJfc2F0KHNob3J0IHgsIHNob3J0IHkpOwp1c2hvcnQgX19vdmxkIF9fY25mbiBzdWJfc2F0KHVzaG9ydCB4LCB1c2hvcnQgeSk7CnNob3J0MiBfX292bGQgX19jbmZuIHN1Yl9zYXQoc2hvcnQyIHgsIHNob3J0MiB5KTsKdXNob3J0MiBfX292bGQgX19jbmZuIHN1Yl9zYXQodXNob3J0MiB4LCB1c2hvcnQyIHkpOwpzaG9ydDMgX19vdmxkIF9fY25mbiBzdWJfc2F0KHNob3J0MyB4LCBzaG9ydDMgeSk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBzdWJfc2F0KHVzaG9ydDMgeCwgdXNob3J0MyB5KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gc3ViX3NhdChzaG9ydDQgeCwgc2hvcnQ0IHkpOwp1c2hvcnQ0IF9fb3ZsZCBfX2NuZm4gc3ViX3NhdCh1c2hvcnQ0IHgsIHVzaG9ydDQgeSk7CnNob3J0OCBfX292bGQgX19jbmZuIHN1Yl9zYXQoc2hvcnQ4IHgsIHNob3J0OCB5KTsKdXNob3J0OCBfX292bGQgX19jbmZuIHN1Yl9zYXQodXNob3J0OCB4LCB1c2hvcnQ4IHkpOwpzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gc3ViX3NhdChzaG9ydDE2IHgsIHNob3J0MTYgeSk7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gc3ViX3NhdCh1c2hvcnQxNiB4LCB1c2hvcnQxNiB5KTsKaW50IF9fb3ZsZCBfX2NuZm4gc3ViX3NhdChpbnQgeCwgaW50IHkpOwp1aW50IF9fb3ZsZCBfX2NuZm4gc3ViX3NhdCh1aW50IHgsIHVpbnQgeSk7CmludDIgX19vdmxkIF9fY25mbiBzdWJfc2F0KGludDIgeCwgaW50MiB5KTsKdWludDIgX19vdmxkIF9fY25mbiBzdWJfc2F0KHVpbnQyIHgsIHVpbnQyIHkpOwppbnQzIF9fb3ZsZCBfX2NuZm4gc3ViX3NhdChpbnQzIHgsIGludDMgeSk7CnVpbnQzIF9fb3ZsZCBfX2NuZm4gc3ViX3NhdCh1aW50MyB4LCB1aW50MyB5KTsKaW50NCBfX292bGQgX19jbmZuIHN1Yl9zYXQoaW50NCB4LCBpbnQ0IHkpOwp1aW50NCBfX292bGQgX19jbmZuIHN1Yl9zYXQodWludDQgeCwgdWludDQgeSk7CmludDggX19vdmxkIF9fY25mbiBzdWJfc2F0KGludDggeCwgaW50OCB5KTsKdWludDggX19vdmxkIF9fY25mbiBzdWJfc2F0KHVpbnQ4IHgsIHVpbnQ4IHkpOwppbnQxNiBfX292bGQgX19jbmZuIHN1Yl9zYXQoaW50MTYgeCwgaW50MTYgeSk7CnVpbnQxNiBfX292bGQgX19jbmZuIHN1Yl9zYXQodWludDE2IHgsIHVpbnQxNiB5KTsKbG9uZyBfX292bGQgX19jbmZuIHN1Yl9zYXQobG9uZyB4LCBsb25nIHkpOwp1bG9uZyBfX292bGQgX19jbmZuIHN1Yl9zYXQodWxvbmcgeCwgdWxvbmcgeSk7CmxvbmcyIF9fb3ZsZCBfX2NuZm4gc3ViX3NhdChsb25nMiB4LCBsb25nMiB5KTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gc3ViX3NhdCh1bG9uZzIgeCwgdWxvbmcyIHkpOwpsb25nMyBfX292bGQgX19jbmZuIHN1Yl9zYXQobG9uZzMgeCwgbG9uZzMgeSk7CnVsb25nMyBfX292bGQgX19jbmZuIHN1Yl9zYXQodWxvbmczIHgsIHVsb25nMyB5KTsKbG9uZzQgX19vdmxkIF9fY25mbiBzdWJfc2F0KGxvbmc0IHgsIGxvbmc0IHkpOwp1bG9uZzQgX19vdmxkIF9fY25mbiBzdWJfc2F0KHVsb25nNCB4LCB1bG9uZzQgeSk7Cmxvbmc4IF9fb3ZsZCBfX2NuZm4gc3ViX3NhdChsb25nOCB4LCBsb25nOCB5KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gc3ViX3NhdCh1bG9uZzggeCwgdWxvbmc4IHkpOwpsb25nMTYgX19vdmxkIF9fY25mbiBzdWJfc2F0KGxvbmcxNiB4LCBsb25nMTYgeSk7CnVsb25nMTYgX19vdmxkIF9fY25mbiBzdWJfc2F0KHVsb25nMTYgeCwgdWxvbmcxNiB5KTsKCi8qKgogKiByZXN1bHRbaV0gPSAoKHNob3J0KWhpW2ldIDw8IDgpIHwgbG9baV0KICogcmVzdWx0W2ldID0gKCh1c2hvcnQpaGlbaV0gPDwgOCkgfCBsb1tpXQogKi8Kc2hvcnQgX19vdmxkIF9fY25mbiB1cHNhbXBsZShjaGFyIGhpLCB1Y2hhciBsbyk7CnVzaG9ydCBfX292bGQgX19jbmZuIHVwc2FtcGxlKHVjaGFyIGhpLCB1Y2hhciBsbyk7CnNob3J0MiBfX292bGQgX19jbmZuIHVwc2FtcGxlKGNoYXIyIGhpLCB1Y2hhcjIgbG8pOwpzaG9ydDMgX19vdmxkIF9fY25mbiB1cHNhbXBsZShjaGFyMyBoaSwgdWNoYXIzIGxvKTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gdXBzYW1wbGUoY2hhcjQgaGksIHVjaGFyNCBsbyk7CnNob3J0OCBfX292bGQgX19jbmZuIHVwc2FtcGxlKGNoYXI4IGhpLCB1Y2hhcjggbG8pOwpzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gdXBzYW1wbGUoY2hhcjE2IGhpLCB1Y2hhcjE2IGxvKTsKdXNob3J0MiBfX292bGQgX19jbmZuIHVwc2FtcGxlKHVjaGFyMiBoaSwgdWNoYXIyIGxvKTsKdXNob3J0MyBfX292bGQgX19jbmZuIHVwc2FtcGxlKHVjaGFyMyBoaSwgdWNoYXIzIGxvKTsKdXNob3J0NCBfX292bGQgX19jbmZuIHVwc2FtcGxlKHVjaGFyNCBoaSwgdWNoYXI0IGxvKTsKdXNob3J0OCBfX292bGQgX19jbmZuIHVwc2FtcGxlKHVjaGFyOCBoaSwgdWNoYXI4IGxvKTsKdXNob3J0MTYgX19vdmxkIF9fY25mbiB1cHNhbXBsZSh1Y2hhcjE2IGhpLCB1Y2hhcjE2IGxvKTsKCi8qKgogKiByZXN1bHRbaV0gPSAoKGludCloaVtpXSA8PCAxNikgfCBsb1tpXQogKiByZXN1bHRbaV0gPSAoKHVpbnQpaGlbaV0gPDwgMTYpIHwgbG9baV0KICovCmludCBfX292bGQgX19jbmZuIHVwc2FtcGxlKHNob3J0IGhpLCB1c2hvcnQgbG8pOwp1aW50IF9fb3ZsZCBfX2NuZm4gdXBzYW1wbGUodXNob3J0IGhpLCB1c2hvcnQgbG8pOwppbnQyIF9fb3ZsZCBfX2NuZm4gdXBzYW1wbGUoc2hvcnQyIGhpLCB1c2hvcnQyIGxvKTsKaW50MyBfX292bGQgX19jbmZuIHVwc2FtcGxlKHNob3J0MyBoaSwgdXNob3J0MyBsbyk7CmludDQgX19vdmxkIF9fY25mbiB1cHNhbXBsZShzaG9ydDQgaGksIHVzaG9ydDQgbG8pOwppbnQ4IF9fb3ZsZCBfX2NuZm4gdXBzYW1wbGUoc2hvcnQ4IGhpLCB1c2hvcnQ4IGxvKTsKaW50MTYgX19vdmxkIF9fY25mbiB1cHNhbXBsZShzaG9ydDE2IGhpLCB1c2hvcnQxNiBsbyk7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gdXBzYW1wbGUodXNob3J0MiBoaSwgdXNob3J0MiBsbyk7CnVpbnQzIF9fb3ZsZCBfX2NuZm4gdXBzYW1wbGUodXNob3J0MyBoaSwgdXNob3J0MyBsbyk7CnVpbnQ0IF9fb3ZsZCBfX2NuZm4gdXBzYW1wbGUodXNob3J0NCBoaSwgdXNob3J0NCBsbyk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gdXBzYW1wbGUodXNob3J0OCBoaSwgdXNob3J0OCBsbyk7CnVpbnQxNiBfX292bGQgX19jbmZuIHVwc2FtcGxlKHVzaG9ydDE2IGhpLCB1c2hvcnQxNiBsbyk7Ci8qKgogKiByZXN1bHRbaV0gPSAoKGxvbmcpaGlbaV0gPDwgMzIpIHwgbG9baV0KICogcmVzdWx0W2ldID0gKCh1bG9uZyloaVtpXSA8PCAzMikgfCBsb1tpXQogKi8KbG9uZyBfX292bGQgX19jbmZuIHVwc2FtcGxlKGludCBoaSwgdWludCBsbyk7CnVsb25nIF9fb3ZsZCBfX2NuZm4gdXBzYW1wbGUodWludCBoaSwgdWludCBsbyk7CmxvbmcyIF9fb3ZsZCBfX2NuZm4gdXBzYW1wbGUoaW50MiBoaSwgdWludDIgbG8pOwpsb25nMyBfX292bGQgX19jbmZuIHVwc2FtcGxlKGludDMgaGksIHVpbnQzIGxvKTsKbG9uZzQgX19vdmxkIF9fY25mbiB1cHNhbXBsZShpbnQ0IGhpLCB1aW50NCBsbyk7Cmxvbmc4IF9fb3ZsZCBfX2NuZm4gdXBzYW1wbGUoaW50OCBoaSwgdWludDggbG8pOwpsb25nMTYgX19vdmxkIF9fY25mbiB1cHNhbXBsZShpbnQxNiBoaSwgdWludDE2IGxvKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gdXBzYW1wbGUodWludDIgaGksIHVpbnQyIGxvKTsKdWxvbmczIF9fb3ZsZCBfX2NuZm4gdXBzYW1wbGUodWludDMgaGksIHVpbnQzIGxvKTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gdXBzYW1wbGUodWludDQgaGksIHVpbnQ0IGxvKTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gdXBzYW1wbGUodWludDggaGksIHVpbnQ4IGxvKTsKdWxvbmcxNiBfX292bGQgX19jbmZuIHVwc2FtcGxlKHVpbnQxNiBoaSwgdWludDE2IGxvKTsKCi8qCiAqIHBvcGNvdW50KHgpOiByZXR1cm5zIHRoZSBudW1iZXIgb2Ygc2V0IGJpdCBpbiB4CiAqLwojaWYgZGVmaW5lZChfX09QRU5DTF9DUFBfVkVSU0lPTl9fKSB8fCAoX19PUEVOQ0xfQ19WRVJTSU9OX18gPj0gQ0xfVkVSU0lPTl8xXzIpCmNoYXIgX19vdmxkIF9fY25mbiBwb3Bjb3VudChjaGFyIHgpOwp1Y2hhciBfX292bGQgX19jbmZuIHBvcGNvdW50KHVjaGFyIHgpOwpjaGFyMiBfX292bGQgX19jbmZuIHBvcGNvdW50KGNoYXIyIHgpOwp1Y2hhcjIgX19vdmxkIF9fY25mbiBwb3Bjb3VudCh1Y2hhcjIgeCk7CmNoYXIzIF9fb3ZsZCBfX2NuZm4gcG9wY291bnQoY2hhcjMgeCk7CnVjaGFyMyBfX292bGQgX19jbmZuIHBvcGNvdW50KHVjaGFyMyB4KTsKY2hhcjQgX19vdmxkIF9fY25mbiBwb3Bjb3VudChjaGFyNCB4KTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gcG9wY291bnQodWNoYXI0IHgpOwpjaGFyOCBfX292bGQgX19jbmZuIHBvcGNvdW50KGNoYXI4IHgpOwp1Y2hhcjggX19vdmxkIF9fY25mbiBwb3Bjb3VudCh1Y2hhcjggeCk7CmNoYXIxNiBfX292bGQgX19jbmZuIHBvcGNvdW50KGNoYXIxNiB4KTsKdWNoYXIxNiBfX292bGQgX19jbmZuIHBvcGNvdW50KHVjaGFyMTYgeCk7CnNob3J0IF9fb3ZsZCBfX2NuZm4gcG9wY291bnQoc2hvcnQgeCk7CnVzaG9ydCBfX292bGQgX19jbmZuIHBvcGNvdW50KHVzaG9ydCB4KTsKc2hvcnQyIF9fb3ZsZCBfX2NuZm4gcG9wY291bnQoc2hvcnQyIHgpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gcG9wY291bnQodXNob3J0MiB4KTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gcG9wY291bnQoc2hvcnQzIHgpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gcG9wY291bnQodXNob3J0MyB4KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gcG9wY291bnQoc2hvcnQ0IHgpOwp1c2hvcnQ0IF9fb3ZsZCBfX2NuZm4gcG9wY291bnQodXNob3J0NCB4KTsKc2hvcnQ4IF9fb3ZsZCBfX2NuZm4gcG9wY291bnQoc2hvcnQ4IHgpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gcG9wY291bnQodXNob3J0OCB4KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIHBvcGNvdW50KHNob3J0MTYgeCk7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gcG9wY291bnQodXNob3J0MTYgeCk7CmludCBfX292bGQgX19jbmZuIHBvcGNvdW50KGludCB4KTsKdWludCBfX292bGQgX19jbmZuIHBvcGNvdW50KHVpbnQgeCk7CmludDIgX19vdmxkIF9fY25mbiBwb3Bjb3VudChpbnQyIHgpOwp1aW50MiBfX292bGQgX19jbmZuIHBvcGNvdW50KHVpbnQyIHgpOwppbnQzIF9fb3ZsZCBfX2NuZm4gcG9wY291bnQoaW50MyB4KTsKdWludDMgX19vdmxkIF9fY25mbiBwb3Bjb3VudCh1aW50MyB4KTsKaW50NCBfX292bGQgX19jbmZuIHBvcGNvdW50KGludDQgeCk7CnVpbnQ0IF9fb3ZsZCBfX2NuZm4gcG9wY291bnQodWludDQgeCk7CmludDggX19vdmxkIF9fY25mbiBwb3Bjb3VudChpbnQ4IHgpOwp1aW50OCBfX292bGQgX19jbmZuIHBvcGNvdW50KHVpbnQ4IHgpOwppbnQxNiBfX292bGQgX19jbmZuIHBvcGNvdW50KGludDE2IHgpOwp1aW50MTYgX19vdmxkIF9fY25mbiBwb3Bjb3VudCh1aW50MTYgeCk7CmxvbmcgX19vdmxkIF9fY25mbiBwb3Bjb3VudChsb25nIHgpOwp1bG9uZyBfX292bGQgX19jbmZuIHBvcGNvdW50KHVsb25nIHgpOwpsb25nMiBfX292bGQgX19jbmZuIHBvcGNvdW50KGxvbmcyIHgpOwp1bG9uZzIgX19vdmxkIF9fY25mbiBwb3Bjb3VudCh1bG9uZzIgeCk7CmxvbmczIF9fb3ZsZCBfX2NuZm4gcG9wY291bnQobG9uZzMgeCk7CnVsb25nMyBfX292bGQgX19jbmZuIHBvcGNvdW50KHVsb25nMyB4KTsKbG9uZzQgX19vdmxkIF9fY25mbiBwb3Bjb3VudChsb25nNCB4KTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gcG9wY291bnQodWxvbmc0IHgpOwpsb25nOCBfX292bGQgX19jbmZuIHBvcGNvdW50KGxvbmc4IHgpOwp1bG9uZzggX19vdmxkIF9fY25mbiBwb3Bjb3VudCh1bG9uZzggeCk7CmxvbmcxNiBfX292bGQgX19jbmZuIHBvcGNvdW50KGxvbmcxNiB4KTsKdWxvbmcxNiBfX292bGQgX19jbmZuIHBvcGNvdW50KHVsb25nMTYgeCk7CiNlbmRpZiAvLyBkZWZpbmVkKF9fT1BFTkNMX0NQUF9WRVJTSU9OX18pIHx8IChfX09QRU5DTF9DX1ZFUlNJT05fXyA+PSBDTF9WRVJTSU9OXzFfMikKCi8qKgogKiBNdWx0aXBseSB0d28gMjQtYml0IGludGVnZXIgdmFsdWVzIHggYW5kIHkgYW5kIGFkZAogKiB0aGUgMzItYml0IGludGVnZXIgcmVzdWx0IHRvIHRoZSAzMi1iaXQgaW50ZWdlciB6LgogKiBSZWZlciB0byBkZWZpbml0aW9uIG9mIG11bDI0IHRvIHNlZSBob3cgdGhlIDI0LWJpdAogKiBpbnRlZ2VyIG11bHRpcGxpY2F0aW9uIGlzIHBlcmZvcm1lZC4KICovCmludCBfX292bGQgX19jbmZuIG1hZDI0KGludCB4LCBpbnQgeSwgaW50IHopOwp1aW50IF9fb3ZsZCBfX2NuZm4gbWFkMjQodWludCB4LCB1aW50IHksIHVpbnQgeik7CmludDIgX19vdmxkIF9fY25mbiBtYWQyNChpbnQyIHgsIGludDIgeSwgaW50MiB6KTsKdWludDIgX19vdmxkIF9fY25mbiBtYWQyNCh1aW50MiB4LCB1aW50MiB5LCB1aW50MiB6KTsKaW50MyBfX292bGQgX19jbmZuIG1hZDI0KGludDMgeCwgaW50MyB5LCBpbnQzIHopOwp1aW50MyBfX292bGQgX19jbmZuIG1hZDI0KHVpbnQzIHgsIHVpbnQzIHksIHVpbnQzIHopOwppbnQ0IF9fb3ZsZCBfX2NuZm4gbWFkMjQoaW50NCB4LCBpbnQ0IHksIGludDQgeik7CnVpbnQ0IF9fb3ZsZCBfX2NuZm4gbWFkMjQodWludDQgeCwgdWludDQgeSwgdWludDQgeik7CmludDggX19vdmxkIF9fY25mbiBtYWQyNChpbnQ4IHgsIGludDggeSwgaW50OCB6KTsKdWludDggX19vdmxkIF9fY25mbiBtYWQyNCh1aW50OCB4LCB1aW50OCB5LCB1aW50OCB6KTsKaW50MTYgX19vdmxkIF9fY25mbiBtYWQyNChpbnQxNiB4LCBpbnQxNiB5LCBpbnQxNiB6KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gbWFkMjQodWludDE2IHgsIHVpbnQxNiB5LCB1aW50MTYgeik7CgovKioKICogTXVsdGlwbHkgdHdvIDI0LWJpdCBpbnRlZ2VyIHZhbHVlcyB4IGFuZCB5LiB4IGFuZCB5CiAqIGFyZSAzMi1iaXQgaW50ZWdlcnMgYnV0IG9ubHkgdGhlIGxvdyAyNC1iaXRzIGFyZSB1c2VkCiAqIHRvIHBlcmZvcm0gdGhlIG11bHRpcGxpY2F0aW9uLiBtdWwyNCBzaG91bGQgb25seQogKiBiZSB1c2VkIHdoZW4gdmFsdWVzIGluIHggYW5kIHkgYXJlIGluIHRoZSByYW5nZSBbLQogKiAyXjIzLCAyXjIzLTFdIGlmIHggYW5kIHkgYXJlIHNpZ25lZCBpbnRlZ2VycyBhbmQgaW4gdGhlCiAqIHJhbmdlIFswLCAyXjI0LTFdIGlmIHggYW5kIHkgYXJlIHVuc2lnbmVkIGludGVnZXJzLiBJZgogKiB4IGFuZCB5IGFyZSBub3QgaW4gdGhpcyByYW5nZSwgdGhlIG11bHRpcGxpY2F0aW9uCiAqIHJlc3VsdCBpcyBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkLgogKi8KaW50IF9fb3ZsZCBfX2NuZm4gbXVsMjQoaW50IHgsIGludCB5KTsKdWludCBfX292bGQgX19jbmZuIG11bDI0KHVpbnQgeCwgdWludCB5KTsKaW50MiBfX292bGQgX19jbmZuIG11bDI0KGludDIgeCwgaW50MiB5KTsKdWludDIgX19vdmxkIF9fY25mbiBtdWwyNCh1aW50MiB4LCB1aW50MiB5KTsKaW50MyBfX292bGQgX19jbmZuIG11bDI0KGludDMgeCwgaW50MyB5KTsKdWludDMgX19vdmxkIF9fY25mbiBtdWwyNCh1aW50MyB4LCB1aW50MyB5KTsKaW50NCBfX292bGQgX19jbmZuIG11bDI0KGludDQgeCwgaW50NCB5KTsKdWludDQgX19vdmxkIF9fY25mbiBtdWwyNCh1aW50NCB4LCB1aW50NCB5KTsKaW50OCBfX292bGQgX19jbmZuIG11bDI0KGludDggeCwgaW50OCB5KTsKdWludDggX19vdmxkIF9fY25mbiBtdWwyNCh1aW50OCB4LCB1aW50OCB5KTsKaW50MTYgX19vdmxkIF9fY25mbiBtdWwyNChpbnQxNiB4LCBpbnQxNiB5KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gbXVsMjQodWludDE2IHgsIHVpbnQxNiB5KTsKCi8vIE9wZW5DTCB2MS4xIHM2LjExLjQsIHYxLjIgczYuMTIuNCwgdjIuMCBzNi4xMy40IC0gQ29tbW9uIEZ1bmN0aW9ucwoKLyoqCiAqIFJldHVybnMgZm1pbihmbWF4KHgsIG1pbnZhbCksIG1heHZhbCkuCiAqIFJlc3VsdHMgYXJlIHVuZGVmaW5lZCBpZiBtaW52YWwgPiBtYXh2YWwuCiAqLwpmbG9hdCBfX292bGQgX19jbmZuIGNsYW1wKGZsb2F0IHgsIGZsb2F0IG1pbnZhbCwgZmxvYXQgbWF4dmFsKTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gY2xhbXAoZmxvYXQyIHgsIGZsb2F0MiBtaW52YWwsIGZsb2F0MiBtYXh2YWwpOwpmbG9hdDMgX19vdmxkIF9fY25mbiBjbGFtcChmbG9hdDMgeCwgZmxvYXQzIG1pbnZhbCwgZmxvYXQzIG1heHZhbCk7CmZsb2F0NCBfX292bGQgX19jbmZuIGNsYW1wKGZsb2F0NCB4LCBmbG9hdDQgbWludmFsLCBmbG9hdDQgbWF4dmFsKTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gY2xhbXAoZmxvYXQ4IHgsIGZsb2F0OCBtaW52YWwsIGZsb2F0OCBtYXh2YWwpOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gY2xhbXAoZmxvYXQxNiB4LCBmbG9hdDE2IG1pbnZhbCwgZmxvYXQxNiBtYXh2YWwpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBjbGFtcChmbG9hdDIgeCwgZmxvYXQgbWludmFsLCBmbG9hdCBtYXh2YWwpOwpmbG9hdDMgX19vdmxkIF9fY25mbiBjbGFtcChmbG9hdDMgeCwgZmxvYXQgbWludmFsLCBmbG9hdCBtYXh2YWwpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBjbGFtcChmbG9hdDQgeCwgZmxvYXQgbWludmFsLCBmbG9hdCBtYXh2YWwpOwpmbG9hdDggX19vdmxkIF9fY25mbiBjbGFtcChmbG9hdDggeCwgZmxvYXQgbWludmFsLCBmbG9hdCBtYXh2YWwpOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gY2xhbXAoZmxvYXQxNiB4LCBmbG9hdCBtaW52YWwsIGZsb2F0IG1heHZhbCk7CiNpZmRlZiBjbF9raHJfZnA2NApkb3VibGUgX19vdmxkIF9fY25mbiBjbGFtcChkb3VibGUgeCwgZG91YmxlIG1pbnZhbCwgZG91YmxlIG1heHZhbCk7CmRvdWJsZTIgX19vdmxkIF9fY25mbiBjbGFtcChkb3VibGUyIHgsIGRvdWJsZTIgbWludmFsLCBkb3VibGUyIG1heHZhbCk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBjbGFtcChkb3VibGUzIHgsIGRvdWJsZTMgbWludmFsLCBkb3VibGUzIG1heHZhbCk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiBjbGFtcChkb3VibGU0IHgsIGRvdWJsZTQgbWludmFsLCBkb3VibGU0IG1heHZhbCk7CmRvdWJsZTggX19vdmxkIF9fY25mbiBjbGFtcChkb3VibGU4IHgsIGRvdWJsZTggbWludmFsLCBkb3VibGU4IG1heHZhbCk7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gY2xhbXAoZG91YmxlMTYgeCwgZG91YmxlMTYgbWludmFsLCBkb3VibGUxNiBtYXh2YWwpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gY2xhbXAoZG91YmxlMiB4LCBkb3VibGUgbWludmFsLCBkb3VibGUgbWF4dmFsKTsKZG91YmxlMyBfX292bGQgX19jbmZuIGNsYW1wKGRvdWJsZTMgeCwgZG91YmxlIG1pbnZhbCwgZG91YmxlIG1heHZhbCk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiBjbGFtcChkb3VibGU0IHgsIGRvdWJsZSBtaW52YWwsIGRvdWJsZSBtYXh2YWwpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gY2xhbXAoZG91YmxlOCB4LCBkb3VibGUgbWludmFsLCBkb3VibGUgbWF4dmFsKTsKZG91YmxlMTYgX19vdmxkIF9fY25mbiBjbGFtcChkb3VibGUxNiB4LCBkb3VibGUgbWludmFsLCBkb3VibGUgbWF4dmFsKTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKI2lmZGVmIGNsX2tocl9mcDE2CmhhbGYgX19vdmxkIF9fY25mbiBjbGFtcChoYWxmIHgsIGhhbGYgbWludmFsLCBoYWxmIG1heHZhbCk7CmhhbGYyIF9fb3ZsZCBfX2NuZm4gY2xhbXAoaGFsZjIgeCwgaGFsZjIgbWludmFsLCBoYWxmMiBtYXh2YWwpOwpoYWxmMyBfX292bGQgX19jbmZuIGNsYW1wKGhhbGYzIHgsIGhhbGYzIG1pbnZhbCwgaGFsZjMgbWF4dmFsKTsKaGFsZjQgX19vdmxkIF9fY25mbiBjbGFtcChoYWxmNCB4LCBoYWxmNCBtaW52YWwsIGhhbGY0IG1heHZhbCk7CmhhbGY4IF9fb3ZsZCBfX2NuZm4gY2xhbXAoaGFsZjggeCwgaGFsZjggbWludmFsLCBoYWxmOCBtYXh2YWwpOwpoYWxmMTYgX19vdmxkIF9fY25mbiBjbGFtcChoYWxmMTYgeCwgaGFsZjE2IG1pbnZhbCwgaGFsZjE2IG1heHZhbCk7CmhhbGYyIF9fb3ZsZCBfX2NuZm4gY2xhbXAoaGFsZjIgeCwgaGFsZiBtaW52YWwsIGhhbGYgbWF4dmFsKTsKaGFsZjMgX19vdmxkIF9fY25mbiBjbGFtcChoYWxmMyB4LCBoYWxmIG1pbnZhbCwgaGFsZiBtYXh2YWwpOwpoYWxmNCBfX292bGQgX19jbmZuIGNsYW1wKGhhbGY0IHgsIGhhbGYgbWludmFsLCBoYWxmIG1heHZhbCk7CmhhbGY4IF9fb3ZsZCBfX2NuZm4gY2xhbXAoaGFsZjggeCwgaGFsZiBtaW52YWwsIGhhbGYgbWF4dmFsKTsKaGFsZjE2IF9fb3ZsZCBfX2NuZm4gY2xhbXAoaGFsZjE2IHgsIGhhbGYgbWludmFsLCBoYWxmIG1heHZhbCk7CiNlbmRpZiAvL2NsX2tocl9mcDE2CgovKioKICogQ29udmVydHMgcmFkaWFucyB0byBkZWdyZWVzLCBpLmUuICgxODAgLyBQSSkgKgogKiByYWRpYW5zLgogKi8KZmxvYXQgX19vdmxkIF9fY25mbiBkZWdyZWVzKGZsb2F0IHJhZGlhbnMpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBkZWdyZWVzKGZsb2F0MiByYWRpYW5zKTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gZGVncmVlcyhmbG9hdDMgcmFkaWFucyk7CmZsb2F0NCBfX292bGQgX19jbmZuIGRlZ3JlZXMoZmxvYXQ0IHJhZGlhbnMpOwpmbG9hdDggX19vdmxkIF9fY25mbiBkZWdyZWVzKGZsb2F0OCByYWRpYW5zKTsKZmxvYXQxNiBfX292bGQgX19jbmZuIGRlZ3JlZXMoZmxvYXQxNiByYWRpYW5zKTsKI2lmZGVmIGNsX2tocl9mcDY0CmRvdWJsZSBfX292bGQgX19jbmZuIGRlZ3JlZXMoZG91YmxlIHJhZGlhbnMpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gZGVncmVlcyhkb3VibGUyIHJhZGlhbnMpOwpkb3VibGUzIF9fb3ZsZCBfX2NuZm4gZGVncmVlcyhkb3VibGUzIHJhZGlhbnMpOwpkb3VibGU0IF9fb3ZsZCBfX2NuZm4gZGVncmVlcyhkb3VibGU0IHJhZGlhbnMpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gZGVncmVlcyhkb3VibGU4IHJhZGlhbnMpOwpkb3VibGUxNiBfX292bGQgX19jbmZuIGRlZ3JlZXMoZG91YmxlMTYgcmFkaWFucyk7CiNlbmRpZiAvL2NsX2tocl9mcDY0CiNpZmRlZiBjbF9raHJfZnAxNgpoYWxmIF9fb3ZsZCBfX2NuZm4gZGVncmVlcyhoYWxmIHJhZGlhbnMpOwpoYWxmMiBfX292bGQgX19jbmZuIGRlZ3JlZXMoaGFsZjIgcmFkaWFucyk7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gZGVncmVlcyhoYWxmMyByYWRpYW5zKTsKaGFsZjQgX19vdmxkIF9fY25mbiBkZWdyZWVzKGhhbGY0IHJhZGlhbnMpOwpoYWxmOCBfX292bGQgX19jbmZuIGRlZ3JlZXMoaGFsZjggcmFkaWFucyk7CmhhbGYxNiBfX292bGQgX19jbmZuIGRlZ3JlZXMoaGFsZjE2IHJhZGlhbnMpOwojZW5kaWYgLy9jbF9raHJfZnAxNgoKLyoqCiAqIFJldHVybnMgeSBpZiB4IDwgeSwgb3RoZXJ3aXNlIGl0IHJldHVybnMgeC4gSWYgeCBhbmQgeQogKiBhcmUgaW5maW5pdGUgb3IgTmFOLCB0aGUgcmV0dXJuIHZhbHVlcyBhcmUgdW5kZWZpbmVkLgogKi8KZmxvYXQgX19vdmxkIF9fY25mbiBtYXgoZmxvYXQgeCwgZmxvYXQgeSk7CmZsb2F0MiBfX292bGQgX19jbmZuIG1heChmbG9hdDIgeCwgZmxvYXQyIHkpOwpmbG9hdDMgX19vdmxkIF9fY25mbiBtYXgoZmxvYXQzIHgsIGZsb2F0MyB5KTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gbWF4KGZsb2F0NCB4LCBmbG9hdDQgeSk7CmZsb2F0OCBfX292bGQgX19jbmZuIG1heChmbG9hdDggeCwgZmxvYXQ4IHkpOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gbWF4KGZsb2F0MTYgeCwgZmxvYXQxNiB5KTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gbWF4KGZsb2F0MiB4LCBmbG9hdCB5KTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gbWF4KGZsb2F0MyB4LCBmbG9hdCB5KTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gbWF4KGZsb2F0NCB4LCBmbG9hdCB5KTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gbWF4KGZsb2F0OCB4LCBmbG9hdCB5KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIG1heChmbG9hdDE2IHgsIGZsb2F0IHkpOwojaWZkZWYgY2xfa2hyX2ZwNjQKZG91YmxlIF9fb3ZsZCBfX2NuZm4gbWF4KGRvdWJsZSB4LCBkb3VibGUgeSk7CmRvdWJsZTIgX19vdmxkIF9fY25mbiBtYXgoZG91YmxlMiB4LCBkb3VibGUyIHkpOwpkb3VibGUzIF9fb3ZsZCBfX2NuZm4gbWF4KGRvdWJsZTMgeCwgZG91YmxlMyB5KTsKZG91YmxlNCBfX292bGQgX19jbmZuIG1heChkb3VibGU0IHgsIGRvdWJsZTQgeSk7CmRvdWJsZTggX19vdmxkIF9fY25mbiBtYXgoZG91YmxlOCB4LCBkb3VibGU4IHkpOwpkb3VibGUxNiBfX292bGQgX19jbmZuIG1heChkb3VibGUxNiB4LCBkb3VibGUxNiB5KTsKZG91YmxlMiBfX292bGQgX19jbmZuIG1heChkb3VibGUyIHgsIGRvdWJsZSB5KTsKZG91YmxlMyBfX292bGQgX19jbmZuIG1heChkb3VibGUzIHgsIGRvdWJsZSB5KTsKZG91YmxlNCBfX292bGQgX19jbmZuIG1heChkb3VibGU0IHgsIGRvdWJsZSB5KTsKZG91YmxlOCBfX292bGQgX19jbmZuIG1heChkb3VibGU4IHgsIGRvdWJsZSB5KTsKZG91YmxlMTYgX19vdmxkIF9fY25mbiBtYXgoZG91YmxlMTYgeCwgZG91YmxlIHkpOwojZW5kaWYgLy9jbF9raHJfZnA2NAojaWZkZWYgY2xfa2hyX2ZwMTYKaGFsZiBfX292bGQgX19jbmZuIG1heChoYWxmIHgsIGhhbGYgeSk7CmhhbGYyIF9fb3ZsZCBfX2NuZm4gbWF4KGhhbGYyIHgsIGhhbGYyIHkpOwpoYWxmMyBfX292bGQgX19jbmZuIG1heChoYWxmMyB4LCBoYWxmMyB5KTsKaGFsZjQgX19vdmxkIF9fY25mbiBtYXgoaGFsZjQgeCwgaGFsZjQgeSk7CmhhbGY4IF9fb3ZsZCBfX2NuZm4gbWF4KGhhbGY4IHgsIGhhbGY4IHkpOwpoYWxmMTYgX19vdmxkIF9fY25mbiBtYXgoaGFsZjE2IHgsIGhhbGYxNiB5KTsKaGFsZjIgX19vdmxkIF9fY25mbiBtYXgoaGFsZjIgeCwgaGFsZiB5KTsKaGFsZjMgX19vdmxkIF9fY25mbiBtYXgoaGFsZjMgeCwgaGFsZiB5KTsKaGFsZjQgX19vdmxkIF9fY25mbiBtYXgoaGFsZjQgeCwgaGFsZiB5KTsKaGFsZjggX19vdmxkIF9fY25mbiBtYXgoaGFsZjggeCwgaGFsZiB5KTsKaGFsZjE2IF9fb3ZsZCBfX2NuZm4gbWF4KGhhbGYxNiB4LCBoYWxmIHkpOwojZW5kaWYgLy9jbF9raHJfZnAxNgoKLyoqCiAqIFJldHVybnMgeSBpZiB5IDwgeCwgb3RoZXJ3aXNlIGl0IHJldHVybnMgeC4gSWYgeCBhbmQgeQogKiBhcmUgaW5maW5pdGUgb3IgTmFOLCB0aGUgcmV0dXJuIHZhbHVlcyBhcmUgdW5kZWZpbmVkLgogKi8KZmxvYXQgX19vdmxkIF9fY25mbiBtaW4oZmxvYXQgeCwgZmxvYXQgeSk7CmZsb2F0MiBfX292bGQgX19jbmZuIG1pbihmbG9hdDIgeCwgZmxvYXQyIHkpOwpmbG9hdDMgX19vdmxkIF9fY25mbiBtaW4oZmxvYXQzIHgsIGZsb2F0MyB5KTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gbWluKGZsb2F0NCB4LCBmbG9hdDQgeSk7CmZsb2F0OCBfX292bGQgX19jbmZuIG1pbihmbG9hdDggeCwgZmxvYXQ4IHkpOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gbWluKGZsb2F0MTYgeCwgZmxvYXQxNiB5KTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gbWluKGZsb2F0MiB4LCBmbG9hdCB5KTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gbWluKGZsb2F0MyB4LCBmbG9hdCB5KTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gbWluKGZsb2F0NCB4LCBmbG9hdCB5KTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gbWluKGZsb2F0OCB4LCBmbG9hdCB5KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIG1pbihmbG9hdDE2IHgsIGZsb2F0IHkpOwojaWZkZWYgY2xfa2hyX2ZwNjQKZG91YmxlIF9fb3ZsZCBfX2NuZm4gbWluKGRvdWJsZSB4LCBkb3VibGUgeSk7CmRvdWJsZTIgX19vdmxkIF9fY25mbiBtaW4oZG91YmxlMiB4LCBkb3VibGUyIHkpOwpkb3VibGUzIF9fb3ZsZCBfX2NuZm4gbWluKGRvdWJsZTMgeCwgZG91YmxlMyB5KTsKZG91YmxlNCBfX292bGQgX19jbmZuIG1pbihkb3VibGU0IHgsIGRvdWJsZTQgeSk7CmRvdWJsZTggX19vdmxkIF9fY25mbiBtaW4oZG91YmxlOCB4LCBkb3VibGU4IHkpOwpkb3VibGUxNiBfX292bGQgX19jbmZuIG1pbihkb3VibGUxNiB4LCBkb3VibGUxNiB5KTsKZG91YmxlMiBfX292bGQgX19jbmZuIG1pbihkb3VibGUyIHgsIGRvdWJsZSB5KTsKZG91YmxlMyBfX292bGQgX19jbmZuIG1pbihkb3VibGUzIHgsIGRvdWJsZSB5KTsKZG91YmxlNCBfX292bGQgX19jbmZuIG1pbihkb3VibGU0IHgsIGRvdWJsZSB5KTsKZG91YmxlOCBfX292bGQgX19jbmZuIG1pbihkb3VibGU4IHgsIGRvdWJsZSB5KTsKZG91YmxlMTYgX19vdmxkIF9fY25mbiBtaW4oZG91YmxlMTYgeCwgZG91YmxlIHkpOwojZW5kaWYgLy9jbF9raHJfZnA2NAojaWZkZWYgY2xfa2hyX2ZwMTYKaGFsZiBfX292bGQgX19jbmZuIG1pbihoYWxmIHgsIGhhbGYgeSk7CmhhbGYyIF9fb3ZsZCBfX2NuZm4gbWluKGhhbGYyIHgsIGhhbGYyIHkpOwpoYWxmMyBfX292bGQgX19jbmZuIG1pbihoYWxmMyB4LCBoYWxmMyB5KTsKaGFsZjQgX19vdmxkIF9fY25mbiBtaW4oaGFsZjQgeCwgaGFsZjQgeSk7CmhhbGY4IF9fb3ZsZCBfX2NuZm4gbWluKGhhbGY4IHgsIGhhbGY4IHkpOwpoYWxmMTYgX19vdmxkIF9fY25mbiBtaW4oaGFsZjE2IHgsIGhhbGYxNiB5KTsKaGFsZjIgX19vdmxkIF9fY25mbiBtaW4oaGFsZjIgeCwgaGFsZiB5KTsKaGFsZjMgX19vdmxkIF9fY25mbiBtaW4oaGFsZjMgeCwgaGFsZiB5KTsKaGFsZjQgX19vdmxkIF9fY25mbiBtaW4oaGFsZjQgeCwgaGFsZiB5KTsKaGFsZjggX19vdmxkIF9fY25mbiBtaW4oaGFsZjggeCwgaGFsZiB5KTsKaGFsZjE2IF9fb3ZsZCBfX2NuZm4gbWluKGhhbGYxNiB4LCBoYWxmIHkpOwojZW5kaWYgLy9jbF9raHJfZnAxNgoKLyoqCiAqIFJldHVybnMgdGhlIGxpbmVhciBibGVuZCBvZiB4ICYgeSBpbXBsZW1lbnRlZCBhczoKICogeCArICh5IC0geCkgKiBhCiAqIGEgbXVzdCBiZSBhIHZhbHVlIGluIHRoZSByYW5nZSAwLjAgLi4uIDEuMC4gSWYgYSBpcyBub3QKICogaW4gdGhlIHJhbmdlIDAuMCAuLi4gMS4wLCB0aGUgcmV0dXJuIHZhbHVlcyBhcmUKICogdW5kZWZpbmVkLgogKi8KZmxvYXQgX19vdmxkIF9fY25mbiBtaXgoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgYSk7CmZsb2F0MiBfX292bGQgX19jbmZuIG1peChmbG9hdDIgeCwgZmxvYXQyIHksIGZsb2F0MiBhKTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gbWl4KGZsb2F0MyB4LCBmbG9hdDMgeSwgZmxvYXQzIGEpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBtaXgoZmxvYXQ0IHgsIGZsb2F0NCB5LCBmbG9hdDQgYSk7CmZsb2F0OCBfX292bGQgX19jbmZuIG1peChmbG9hdDggeCwgZmxvYXQ4IHksIGZsb2F0OCBhKTsKZmxvYXQxNiBfX292bGQgX19jbmZuIG1peChmbG9hdDE2IHgsIGZsb2F0MTYgeSwgZmxvYXQxNiBhKTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gbWl4KGZsb2F0MiB4LCBmbG9hdDIgeSwgZmxvYXQgYSk7CmZsb2F0MyBfX292bGQgX19jbmZuIG1peChmbG9hdDMgeCwgZmxvYXQzIHksIGZsb2F0IGEpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBtaXgoZmxvYXQ0IHgsIGZsb2F0NCB5LCBmbG9hdCBhKTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gbWl4KGZsb2F0OCB4LCBmbG9hdDggeSwgZmxvYXQgYSk7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBtaXgoZmxvYXQxNiB4LCBmbG9hdDE2IHksIGZsb2F0IGEpOwojaWZkZWYgY2xfa2hyX2ZwNjQKZG91YmxlIF9fb3ZsZCBfX2NuZm4gbWl4KGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIGEpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gbWl4KGRvdWJsZTIgeCwgZG91YmxlMiB5LCBkb3VibGUyIGEpOwpkb3VibGUzIF9fb3ZsZCBfX2NuZm4gbWl4KGRvdWJsZTMgeCwgZG91YmxlMyB5LCBkb3VibGUzIGEpOwpkb3VibGU0IF9fb3ZsZCBfX2NuZm4gbWl4KGRvdWJsZTQgeCwgZG91YmxlNCB5LCBkb3VibGU0IGEpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gbWl4KGRvdWJsZTggeCwgZG91YmxlOCB5LCBkb3VibGU4IGEpOwpkb3VibGUxNiBfX292bGQgX19jbmZuIG1peChkb3VibGUxNiB4LCBkb3VibGUxNiB5LCBkb3VibGUxNiBhKTsKZG91YmxlMiBfX292bGQgX19jbmZuIG1peChkb3VibGUyIHgsIGRvdWJsZTIgeSwgZG91YmxlIGEpOwpkb3VibGUzIF9fb3ZsZCBfX2NuZm4gbWl4KGRvdWJsZTMgeCwgZG91YmxlMyB5LCBkb3VibGUgYSk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiBtaXgoZG91YmxlNCB4LCBkb3VibGU0IHksIGRvdWJsZSBhKTsKZG91YmxlOCBfX292bGQgX19jbmZuIG1peChkb3VibGU4IHgsIGRvdWJsZTggeSwgZG91YmxlIGEpOwpkb3VibGUxNiBfX292bGQgX19jbmZuIG1peChkb3VibGUxNiB4LCBkb3VibGUxNiB5LCBkb3VibGUgYSk7CiNlbmRpZiAvL2NsX2tocl9mcDY0CiNpZmRlZiBjbF9raHJfZnAxNgpoYWxmIF9fb3ZsZCBfX2NuZm4gbWl4KGhhbGYgeCwgaGFsZiB5LCBoYWxmIGEpOwpoYWxmMiBfX292bGQgX19jbmZuIG1peChoYWxmMiB4LCBoYWxmMiB5LCBoYWxmMiBhKTsKaGFsZjMgX19vdmxkIF9fY25mbiBtaXgoaGFsZjMgeCwgaGFsZjMgeSwgaGFsZjMgYSk7CmhhbGY0IF9fb3ZsZCBfX2NuZm4gbWl4KGhhbGY0IHgsIGhhbGY0IHksIGhhbGY0IGEpOwpoYWxmOCBfX292bGQgX19jbmZuIG1peChoYWxmOCB4LCBoYWxmOCB5LCBoYWxmOCBhKTsKaGFsZjE2IF9fb3ZsZCBfX2NuZm4gbWl4KGhhbGYxNiB4LCBoYWxmMTYgeSwgaGFsZjE2IGEpOwpoYWxmMiBfX292bGQgX19jbmZuIG1peChoYWxmMiB4LCBoYWxmMiB5LCBoYWxmIGEpOwpoYWxmMyBfX292bGQgX19jbmZuIG1peChoYWxmMyB4LCBoYWxmMyB5LCBoYWxmIGEpOwpoYWxmNCBfX292bGQgX19jbmZuIG1peChoYWxmNCB4LCBoYWxmNCB5LCBoYWxmIGEpOwpoYWxmOCBfX292bGQgX19jbmZuIG1peChoYWxmOCB4LCBoYWxmOCB5LCBoYWxmIGEpOwpoYWxmMTYgX19vdmxkIF9fY25mbiBtaXgoaGFsZjE2IHgsIGhhbGYxNiB5LCBoYWxmIGEpOwojZW5kaWYgLy9jbF9raHJfZnAxNgoKLyoqCiAqIENvbnZlcnRzIGRlZ3JlZXMgdG8gcmFkaWFucywgaS5lLiAoUEkgLyAxODApICoKICogZGVncmVlcy4KICovCmZsb2F0IF9fb3ZsZCBfX2NuZm4gcmFkaWFucyhmbG9hdCBkZWdyZWVzKTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gcmFkaWFucyhmbG9hdDIgZGVncmVlcyk7CmZsb2F0MyBfX292bGQgX19jbmZuIHJhZGlhbnMoZmxvYXQzIGRlZ3JlZXMpOwpmbG9hdDQgX19vdmxkIF9fY25mbiByYWRpYW5zKGZsb2F0NCBkZWdyZWVzKTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gcmFkaWFucyhmbG9hdDggZGVncmVlcyk7CmZsb2F0MTYgX19vdmxkIF9fY25mbiByYWRpYW5zKGZsb2F0MTYgZGVncmVlcyk7CiNpZmRlZiBjbF9raHJfZnA2NApkb3VibGUgX19vdmxkIF9fY25mbiByYWRpYW5zKGRvdWJsZSBkZWdyZWVzKTsKZG91YmxlMiBfX292bGQgX19jbmZuIHJhZGlhbnMoZG91YmxlMiBkZWdyZWVzKTsKZG91YmxlMyBfX292bGQgX19jbmZuIHJhZGlhbnMoZG91YmxlMyBkZWdyZWVzKTsKZG91YmxlNCBfX292bGQgX19jbmZuIHJhZGlhbnMoZG91YmxlNCBkZWdyZWVzKTsKZG91YmxlOCBfX292bGQgX19jbmZuIHJhZGlhbnMoZG91YmxlOCBkZWdyZWVzKTsKZG91YmxlMTYgX19vdmxkIF9fY25mbiByYWRpYW5zKGRvdWJsZTE2IGRlZ3JlZXMpOwojZW5kaWYgLy9jbF9raHJfZnA2NAojaWZkZWYgY2xfa2hyX2ZwMTYKaGFsZiBfX292bGQgX19jbmZuIHJhZGlhbnMoaGFsZiBkZWdyZWVzKTsKaGFsZjIgX19vdmxkIF9fY25mbiByYWRpYW5zKGhhbGYyIGRlZ3JlZXMpOwpoYWxmMyBfX292bGQgX19jbmZuIHJhZGlhbnMoaGFsZjMgZGVncmVlcyk7CmhhbGY0IF9fb3ZsZCBfX2NuZm4gcmFkaWFucyhoYWxmNCBkZWdyZWVzKTsKaGFsZjggX19vdmxkIF9fY25mbiByYWRpYW5zKGhhbGY4IGRlZ3JlZXMpOwpoYWxmMTYgX19vdmxkIF9fY25mbiByYWRpYW5zKGhhbGYxNiBkZWdyZWVzKTsKI2VuZGlmIC8vY2xfa2hyX2ZwMTYKCi8qKgogKiBSZXR1cm5zIDAuMCBpZiB4IDwgZWRnZSwgb3RoZXJ3aXNlIGl0IHJldHVybnMgMS4wLgogKi8KZmxvYXQgX19vdmxkIF9fY25mbiBzdGVwKGZsb2F0IGVkZ2UsIGZsb2F0IHgpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBzdGVwKGZsb2F0MiBlZGdlLCBmbG9hdDIgeCk7CmZsb2F0MyBfX292bGQgX19jbmZuIHN0ZXAoZmxvYXQzIGVkZ2UsIGZsb2F0MyB4KTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gc3RlcChmbG9hdDQgZWRnZSwgZmxvYXQ0IHgpOwpmbG9hdDggX19vdmxkIF9fY25mbiBzdGVwKGZsb2F0OCBlZGdlLCBmbG9hdDggeCk7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBzdGVwKGZsb2F0MTYgZWRnZSwgZmxvYXQxNiB4KTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gc3RlcChmbG9hdCBlZGdlLCBmbG9hdDIgeCk7CmZsb2F0MyBfX292bGQgX19jbmZuIHN0ZXAoZmxvYXQgZWRnZSwgZmxvYXQzIHgpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBzdGVwKGZsb2F0IGVkZ2UsIGZsb2F0NCB4KTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gc3RlcChmbG9hdCBlZGdlLCBmbG9hdDggeCk7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBzdGVwKGZsb2F0IGVkZ2UsIGZsb2F0MTYgeCk7CiNpZmRlZiBjbF9raHJfZnA2NApkb3VibGUgX19vdmxkIF9fY25mbiBzdGVwKGRvdWJsZSBlZGdlLCBkb3VibGUgeCk7CmRvdWJsZTIgX19vdmxkIF9fY25mbiBzdGVwKGRvdWJsZTIgZWRnZSwgZG91YmxlMiB4KTsKZG91YmxlMyBfX292bGQgX19jbmZuIHN0ZXAoZG91YmxlMyBlZGdlLCBkb3VibGUzIHgpOwpkb3VibGU0IF9fb3ZsZCBfX2NuZm4gc3RlcChkb3VibGU0IGVkZ2UsIGRvdWJsZTQgeCk7CmRvdWJsZTggX19vdmxkIF9fY25mbiBzdGVwKGRvdWJsZTggZWRnZSwgZG91YmxlOCB4KTsKZG91YmxlMTYgX19vdmxkIF9fY25mbiBzdGVwKGRvdWJsZTE2IGVkZ2UsIGRvdWJsZTE2IHgpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gc3RlcChkb3VibGUgZWRnZSwgZG91YmxlMiB4KTsKZG91YmxlMyBfX292bGQgX19jbmZuIHN0ZXAoZG91YmxlIGVkZ2UsIGRvdWJsZTMgeCk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiBzdGVwKGRvdWJsZSBlZGdlLCBkb3VibGU0IHgpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gc3RlcChkb3VibGUgZWRnZSwgZG91YmxlOCB4KTsKZG91YmxlMTYgX19vdmxkIF9fY25mbiBzdGVwKGRvdWJsZSBlZGdlLCBkb3VibGUxNiB4KTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKI2lmZGVmIGNsX2tocl9mcDE2CmhhbGYgX19vdmxkIF9fY25mbiBzdGVwKGhhbGYgZWRnZSwgaGFsZiB4KTsKaGFsZjIgX19vdmxkIF9fY25mbiBzdGVwKGhhbGYyIGVkZ2UsIGhhbGYyIHgpOwpoYWxmMyBfX292bGQgX19jbmZuIHN0ZXAoaGFsZjMgZWRnZSwgaGFsZjMgeCk7CmhhbGY0IF9fb3ZsZCBfX2NuZm4gc3RlcChoYWxmNCBlZGdlLCBoYWxmNCB4KTsKaGFsZjggX19vdmxkIF9fY25mbiBzdGVwKGhhbGY4IGVkZ2UsIGhhbGY4IHgpOwpoYWxmMTYgX19vdmxkIF9fY25mbiBzdGVwKGhhbGYxNiBlZGdlLCBoYWxmMTYgeCk7CmhhbGYyIF9fb3ZsZCBfX2NuZm4gc3RlcChoYWxmIGVkZ2UsIGhhbGYyIHgpOwpoYWxmMyBfX292bGQgX19jbmZuIHN0ZXAoaGFsZiBlZGdlLCBoYWxmMyB4KTsKaGFsZjQgX19vdmxkIF9fY25mbiBzdGVwKGhhbGYgZWRnZSwgaGFsZjQgeCk7CmhhbGY4IF9fb3ZsZCBfX2NuZm4gc3RlcChoYWxmIGVkZ2UsIGhhbGY4IHgpOwpoYWxmMTYgX19vdmxkIF9fY25mbiBzdGVwKGhhbGYgZWRnZSwgaGFsZjE2IHgpOwojZW5kaWYgLy9jbF9raHJfZnAxNgoKLyoqCiAqIFJldHVybnMgMC4wIGlmIHggPD0gZWRnZTAgYW5kIDEuMCBpZiB4ID49IGVkZ2UxIGFuZAogKiBwZXJmb3JtcyBzbW9vdGggSGVybWl0ZSBpbnRlcnBvbGF0aW9uIGJldHdlZW4gMAogKiBhbmQgMXdoZW4gZWRnZTAgPCB4IDwgZWRnZTEuIFRoaXMgaXMgdXNlZnVsIGluCiAqIGNhc2VzIHdoZXJlIHlvdSB3b3VsZCB3YW50IGEgdGhyZXNob2xkIGZ1bmN0aW9uCiAqIHdpdGggYSBzbW9vdGggdHJhbnNpdGlvbi4KICogVGhpcyBpcyBlcXVpdmFsZW50IHRvOgogKiBnZW50eXBlIHQ7CiAqIHQgPSBjbGFtcCAoKHggLSBlZGdlMCkgLyAoZWRnZTEgLSBlZGdlMCksIDAsIDEpOwogKiByZXR1cm4gdCAqIHQgKiAoMyAtIDIgKiB0KTsKICogUmVzdWx0cyBhcmUgdW5kZWZpbmVkIGlmIGVkZ2UwID49IGVkZ2UxIG9yIGlmIHgsCiAqIGVkZ2UwIG9yIGVkZ2UxIGlzIGEgTmFOLgogKi8KZmxvYXQgX19vdmxkIF9fY25mbiBzbW9vdGhzdGVwKGZsb2F0IGVkZ2UwLCBmbG9hdCBlZGdlMSwgZmxvYXQgeCk7CmZsb2F0MiBfX292bGQgX19jbmZuIHNtb290aHN0ZXAoZmxvYXQyIGVkZ2UwLCBmbG9hdDIgZWRnZTEsIGZsb2F0MiB4KTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gc21vb3Roc3RlcChmbG9hdDMgZWRnZTAsIGZsb2F0MyBlZGdlMSwgZmxvYXQzIHgpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBzbW9vdGhzdGVwKGZsb2F0NCBlZGdlMCwgZmxvYXQ0IGVkZ2UxLCBmbG9hdDQgeCk7CmZsb2F0OCBfX292bGQgX19jbmZuIHNtb290aHN0ZXAoZmxvYXQ4IGVkZ2UwLCBmbG9hdDggZWRnZTEsIGZsb2F0OCB4KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIHNtb290aHN0ZXAoZmxvYXQxNiBlZGdlMCwgZmxvYXQxNiBlZGdlMSwgZmxvYXQxNiB4KTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gc21vb3Roc3RlcChmbG9hdCBlZGdlMCwgZmxvYXQgZWRnZTEsIGZsb2F0MiB4KTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gc21vb3Roc3RlcChmbG9hdCBlZGdlMCwgZmxvYXQgZWRnZTEsIGZsb2F0MyB4KTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gc21vb3Roc3RlcChmbG9hdCBlZGdlMCwgZmxvYXQgZWRnZTEsIGZsb2F0NCB4KTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gc21vb3Roc3RlcChmbG9hdCBlZGdlMCwgZmxvYXQgZWRnZTEsIGZsb2F0OCB4KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIHNtb290aHN0ZXAoZmxvYXQgZWRnZTAsIGZsb2F0IGVkZ2UxLCBmbG9hdDE2IHgpOwojaWZkZWYgY2xfa2hyX2ZwNjQKZG91YmxlIF9fb3ZsZCBfX2NuZm4gc21vb3Roc3RlcChkb3VibGUgZWRnZTAsIGRvdWJsZSBlZGdlMSwgZG91YmxlIHgpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gc21vb3Roc3RlcChkb3VibGUyIGVkZ2UwLCBkb3VibGUyIGVkZ2UxLCBkb3VibGUyIHgpOwpkb3VibGUzIF9fb3ZsZCBfX2NuZm4gc21vb3Roc3RlcChkb3VibGUzIGVkZ2UwLCBkb3VibGUzIGVkZ2UxLCBkb3VibGUzIHgpOwpkb3VibGU0IF9fb3ZsZCBfX2NuZm4gc21vb3Roc3RlcChkb3VibGU0IGVkZ2UwLCBkb3VibGU0IGVkZ2UxLCBkb3VibGU0IHgpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gc21vb3Roc3RlcChkb3VibGU4IGVkZ2UwLCBkb3VibGU4IGVkZ2UxLCBkb3VibGU4IHgpOwpkb3VibGUxNiBfX292bGQgX19jbmZuIHNtb290aHN0ZXAoZG91YmxlMTYgZWRnZTAsIGRvdWJsZTE2IGVkZ2UxLCBkb3VibGUxNiB4KTsKZG91YmxlMiBfX292bGQgX19jbmZuIHNtb290aHN0ZXAoZG91YmxlIGVkZ2UwLCBkb3VibGUgZWRnZTEsIGRvdWJsZTIgeCk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBzbW9vdGhzdGVwKGRvdWJsZSBlZGdlMCwgZG91YmxlIGVkZ2UxLCBkb3VibGUzIHgpOwpkb3VibGU0IF9fb3ZsZCBfX2NuZm4gc21vb3Roc3RlcChkb3VibGUgZWRnZTAsIGRvdWJsZSBlZGdlMSwgZG91YmxlNCB4KTsKZG91YmxlOCBfX292bGQgX19jbmZuIHNtb290aHN0ZXAoZG91YmxlIGVkZ2UwLCBkb3VibGUgZWRnZTEsIGRvdWJsZTggeCk7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gc21vb3Roc3RlcChkb3VibGUgZWRnZTAsIGRvdWJsZSBlZGdlMSwgZG91YmxlMTYgeCk7CiNlbmRpZiAvL2NsX2tocl9mcDY0CiNpZmRlZiBjbF9raHJfZnAxNgpoYWxmIF9fb3ZsZCBfX2NuZm4gc21vb3Roc3RlcChoYWxmIGVkZ2UwLCBoYWxmIGVkZ2UxLCBoYWxmIHgpOwpoYWxmMiBfX292bGQgX19jbmZuIHNtb290aHN0ZXAoaGFsZjIgZWRnZTAsIGhhbGYyIGVkZ2UxLCBoYWxmMiB4KTsKaGFsZjMgX19vdmxkIF9fY25mbiBzbW9vdGhzdGVwKGhhbGYzIGVkZ2UwLCBoYWxmMyBlZGdlMSwgaGFsZjMgeCk7CmhhbGY0IF9fb3ZsZCBfX2NuZm4gc21vb3Roc3RlcChoYWxmNCBlZGdlMCwgaGFsZjQgZWRnZTEsIGhhbGY0IHgpOwpoYWxmOCBfX292bGQgX19jbmZuIHNtb290aHN0ZXAoaGFsZjggZWRnZTAsIGhhbGY4IGVkZ2UxLCBoYWxmOCB4KTsKaGFsZjE2IF9fb3ZsZCBfX2NuZm4gc21vb3Roc3RlcChoYWxmMTYgZWRnZTAsIGhhbGYxNiBlZGdlMSwgaGFsZjE2IHgpOwpoYWxmMiBfX292bGQgX19jbmZuIHNtb290aHN0ZXAoaGFsZiBlZGdlMCwgaGFsZiBlZGdlMSwgaGFsZjIgeCk7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gc21vb3Roc3RlcChoYWxmIGVkZ2UwLCBoYWxmIGVkZ2UxLCBoYWxmMyB4KTsKaGFsZjQgX19vdmxkIF9fY25mbiBzbW9vdGhzdGVwKGhhbGYgZWRnZTAsIGhhbGYgZWRnZTEsIGhhbGY0IHgpOwpoYWxmOCBfX292bGQgX19jbmZuIHNtb290aHN0ZXAoaGFsZiBlZGdlMCwgaGFsZiBlZGdlMSwgaGFsZjggeCk7CmhhbGYxNiBfX292bGQgX19jbmZuIHNtb290aHN0ZXAoaGFsZiBlZGdlMCwgaGFsZiBlZGdlMSwgaGFsZjE2IHgpOwojZW5kaWYgLy9jbF9raHJfZnAxNgoKLyoqCiAqIFJldHVybnMgMS4wIGlmIHggPiAwLCAtMC4wIGlmIHggPSAtMC4wLCArMC4wIGlmIHggPQogKiArMC4wLCBvciAtMS4wIGlmIHggPCAwLiBSZXR1cm5zIDAuMCBpZiB4IGlzIGEgTmFOLgogKi8KZmxvYXQgX19vdmxkIF9fY25mbiBzaWduKGZsb2F0IHgpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBzaWduKGZsb2F0MiB4KTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gc2lnbihmbG9hdDMgeCk7CmZsb2F0NCBfX292bGQgX19jbmZuIHNpZ24oZmxvYXQ0IHgpOwpmbG9hdDggX19vdmxkIF9fY25mbiBzaWduKGZsb2F0OCB4KTsKZmxvYXQxNiBfX292bGQgX19jbmZuIHNpZ24oZmxvYXQxNiB4KTsKI2lmZGVmIGNsX2tocl9mcDY0CmRvdWJsZSBfX292bGQgX19jbmZuIHNpZ24oZG91YmxlIHgpOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gc2lnbihkb3VibGUyIHgpOwpkb3VibGUzIF9fb3ZsZCBfX2NuZm4gc2lnbihkb3VibGUzIHgpOwpkb3VibGU0IF9fb3ZsZCBfX2NuZm4gc2lnbihkb3VibGU0IHgpOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gc2lnbihkb3VibGU4IHgpOwpkb3VibGUxNiBfX292bGQgX19jbmZuIHNpZ24oZG91YmxlMTYgeCk7CiNlbmRpZiAvL2NsX2tocl9mcDY0CiNpZmRlZiBjbF9raHJfZnAxNgpoYWxmIF9fb3ZsZCBfX2NuZm4gc2lnbihoYWxmIHgpOwpoYWxmMiBfX292bGQgX19jbmZuIHNpZ24oaGFsZjIgeCk7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gc2lnbihoYWxmMyB4KTsKaGFsZjQgX19vdmxkIF9fY25mbiBzaWduKGhhbGY0IHgpOwpoYWxmOCBfX292bGQgX19jbmZuIHNpZ24oaGFsZjggeCk7CmhhbGYxNiBfX292bGQgX19jbmZuIHNpZ24oaGFsZjE2IHgpOwojZW5kaWYgLy9jbF9raHJfZnAxNgoKLy8gT3BlbkNMIHYxLjEgczYuMTEuNSwgdjEuMiBzNi4xMi41LCB2Mi4wIHM2LjEzLjUgLSBHZW9tZXRyaWMgRnVuY3Rpb25zCgovKioKICogUmV0dXJucyB0aGUgY3Jvc3MgcHJvZHVjdCBvZiBwMC54eXogYW5kIHAxLnh5ei4gVGhlCiAqIHcgY29tcG9uZW50IG9mIGZsb2F0NCByZXN1bHQgcmV0dXJuZWQgd2lsbCBiZSAwLjAuCiAqLwpmbG9hdDQgX19vdmxkIF9fY25mbiBjcm9zcyhmbG9hdDQgcDAsIGZsb2F0NCBwMSk7CmZsb2F0MyBfX292bGQgX19jbmZuIGNyb3NzKGZsb2F0MyBwMCwgZmxvYXQzIHAxKTsKI2lmZGVmIGNsX2tocl9mcDY0CmRvdWJsZTQgX19vdmxkIF9fY25mbiBjcm9zcyhkb3VibGU0IHAwLCBkb3VibGU0IHAxKTsKZG91YmxlMyBfX292bGQgX19jbmZuIGNyb3NzKGRvdWJsZTMgcDAsIGRvdWJsZTMgcDEpOwojZW5kaWYgLy9jbF9raHJfZnA2NAojaWZkZWYgY2xfa2hyX2ZwMTYKaGFsZjQgX19vdmxkIF9fY25mbiBjcm9zcyhoYWxmNCBwMCwgaGFsZjQgcDEpOwpoYWxmMyBfX292bGQgX19jbmZuIGNyb3NzKGhhbGYzIHAwLCBoYWxmMyBwMSk7CiNlbmRpZiAvL2NsX2tocl9mcDE2CgovKioKICogQ29tcHV0ZSBkb3QgcHJvZHVjdC4KICovCmZsb2F0IF9fb3ZsZCBfX2NuZm4gZG90KGZsb2F0IHAwLCBmbG9hdCBwMSk7CmZsb2F0IF9fb3ZsZCBfX2NuZm4gZG90KGZsb2F0MiBwMCwgZmxvYXQyIHAxKTsKZmxvYXQgX19vdmxkIF9fY25mbiBkb3QoZmxvYXQzIHAwLCBmbG9hdDMgcDEpOwpmbG9hdCBfX292bGQgX19jbmZuIGRvdChmbG9hdDQgcDAsIGZsb2F0NCBwMSk7CiNpZmRlZiBjbF9raHJfZnA2NApkb3VibGUgX19vdmxkIF9fY25mbiBkb3QoZG91YmxlIHAwLCBkb3VibGUgcDEpOwpkb3VibGUgX19vdmxkIF9fY25mbiBkb3QoZG91YmxlMiBwMCwgZG91YmxlMiBwMSk7CmRvdWJsZSBfX292bGQgX19jbmZuIGRvdChkb3VibGUzIHAwLCBkb3VibGUzIHAxKTsKZG91YmxlIF9fb3ZsZCBfX2NuZm4gZG90KGRvdWJsZTQgcDAsIGRvdWJsZTQgcDEpOwojZW5kaWYgLy9jbF9raHJfZnA2NAojaWZkZWYgY2xfa2hyX2ZwMTYKaGFsZiBfX292bGQgX19jbmZuIGRvdChoYWxmIHAwLCBoYWxmIHAxKTsKaGFsZiBfX292bGQgX19jbmZuIGRvdChoYWxmMiBwMCwgaGFsZjIgcDEpOwpoYWxmIF9fb3ZsZCBfX2NuZm4gZG90KGhhbGYzIHAwLCBoYWxmMyBwMSk7CmhhbGYgX19vdmxkIF9fY25mbiBkb3QoaGFsZjQgcDAsIGhhbGY0IHAxKTsKI2VuZGlmIC8vY2xfa2hyX2ZwMTYKCi8qKgogKiBSZXR1cm5zIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHAwIGFuZCBwMS4gVGhpcyBpcwogKiBjYWxjdWxhdGVkIGFzIGxlbmd0aChwMCAtIHAxKS4KICovCmZsb2F0IF9fb3ZsZCBfX2NuZm4gZGlzdGFuY2UoZmxvYXQgcDAsIGZsb2F0IHAxKTsKZmxvYXQgX19vdmxkIF9fY25mbiBkaXN0YW5jZShmbG9hdDIgcDAsIGZsb2F0MiBwMSk7CmZsb2F0IF9fb3ZsZCBfX2NuZm4gZGlzdGFuY2UoZmxvYXQzIHAwLCBmbG9hdDMgcDEpOwpmbG9hdCBfX292bGQgX19jbmZuIGRpc3RhbmNlKGZsb2F0NCBwMCwgZmxvYXQ0IHAxKTsKI2lmZGVmIGNsX2tocl9mcDY0CmRvdWJsZSBfX292bGQgX19jbmZuIGRpc3RhbmNlKGRvdWJsZSBwMCwgZG91YmxlIHAxKTsKZG91YmxlIF9fb3ZsZCBfX2NuZm4gZGlzdGFuY2UoZG91YmxlMiBwMCwgZG91YmxlMiBwMSk7CmRvdWJsZSBfX292bGQgX19jbmZuIGRpc3RhbmNlKGRvdWJsZTMgcDAsIGRvdWJsZTMgcDEpOwpkb3VibGUgX19vdmxkIF9fY25mbiBkaXN0YW5jZShkb3VibGU0IHAwLCBkb3VibGU0IHAxKTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKI2lmZGVmIGNsX2tocl9mcDE2CmhhbGYgX19vdmxkIF9fY25mbiBkaXN0YW5jZShoYWxmIHAwLCBoYWxmIHAxKTsKaGFsZiBfX292bGQgX19jbmZuIGRpc3RhbmNlKGhhbGYyIHAwLCBoYWxmMiBwMSk7CmhhbGYgX19vdmxkIF9fY25mbiBkaXN0YW5jZShoYWxmMyBwMCwgaGFsZjMgcDEpOwpoYWxmIF9fb3ZsZCBfX2NuZm4gZGlzdGFuY2UoaGFsZjQgcDAsIGhhbGY0IHAxKTsKI2VuZGlmIC8vY2xfa2hyX2ZwMTYKCi8qKgogKiBSZXR1cm4gdGhlIGxlbmd0aCBvZiB2ZWN0b3IgcCwgaS5lLiwKICogc3FydChwLngyICsgcC55IDIgKyAuLi4pCiAqLwpmbG9hdCBfX292bGQgX19jbmZuIGxlbmd0aChmbG9hdCBwKTsKZmxvYXQgX19vdmxkIF9fY25mbiBsZW5ndGgoZmxvYXQyIHApOwpmbG9hdCBfX292bGQgX19jbmZuIGxlbmd0aChmbG9hdDMgcCk7CmZsb2F0IF9fb3ZsZCBfX2NuZm4gbGVuZ3RoKGZsb2F0NCBwKTsKI2lmZGVmIGNsX2tocl9mcDY0CmRvdWJsZSBfX292bGQgX19jbmZuIGxlbmd0aChkb3VibGUgcCk7CmRvdWJsZSBfX292bGQgX19jbmZuIGxlbmd0aChkb3VibGUyIHApOwpkb3VibGUgX19vdmxkIF9fY25mbiBsZW5ndGgoZG91YmxlMyBwKTsKZG91YmxlIF9fb3ZsZCBfX2NuZm4gbGVuZ3RoKGRvdWJsZTQgcCk7CiNlbmRpZiAvL2NsX2tocl9mcDY0CiNpZmRlZiBjbF9raHJfZnAxNgpoYWxmIF9fb3ZsZCBfX2NuZm4gbGVuZ3RoKGhhbGYgcCk7CmhhbGYgX19vdmxkIF9fY25mbiBsZW5ndGgoaGFsZjIgcCk7CmhhbGYgX19vdmxkIF9fY25mbiBsZW5ndGgoaGFsZjMgcCk7CmhhbGYgX19vdmxkIF9fY25mbiBsZW5ndGgoaGFsZjQgcCk7CiNlbmRpZiAvL2NsX2tocl9mcDE2CgovKioKICogUmV0dXJucyBhIHZlY3RvciBpbiB0aGUgc2FtZSBkaXJlY3Rpb24gYXMgcCBidXQgd2l0aCBhCiAqIGxlbmd0aCBvZiAxLgogKi8KZmxvYXQgX19vdmxkIF9fY25mbiBub3JtYWxpemUoZmxvYXQgcCk7CmZsb2F0MiBfX292bGQgX19jbmZuIG5vcm1hbGl6ZShmbG9hdDIgcCk7CmZsb2F0MyBfX292bGQgX19jbmZuIG5vcm1hbGl6ZShmbG9hdDMgcCk7CmZsb2F0NCBfX292bGQgX19jbmZuIG5vcm1hbGl6ZShmbG9hdDQgcCk7CiNpZmRlZiBjbF9raHJfZnA2NApkb3VibGUgX19vdmxkIF9fY25mbiBub3JtYWxpemUoZG91YmxlIHApOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gbm9ybWFsaXplKGRvdWJsZTIgcCk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBub3JtYWxpemUoZG91YmxlMyBwKTsKZG91YmxlNCBfX292bGQgX19jbmZuIG5vcm1hbGl6ZShkb3VibGU0IHApOwojZW5kaWYgLy9jbF9raHJfZnA2NAojaWZkZWYgY2xfa2hyX2ZwMTYKaGFsZiBfX292bGQgX19jbmZuIG5vcm1hbGl6ZShoYWxmIHApOwpoYWxmMiBfX292bGQgX19jbmZuIG5vcm1hbGl6ZShoYWxmMiBwKTsKaGFsZjMgX19vdmxkIF9fY25mbiBub3JtYWxpemUoaGFsZjMgcCk7CmhhbGY0IF9fb3ZsZCBfX2NuZm4gbm9ybWFsaXplKGhhbGY0IHApOwojZW5kaWYgLy9jbF9raHJfZnAxNgoKLyoqCiAqIFJldHVybnMgZmFzdF9sZW5ndGgocDAgLSBwMSkuCiAqLwpmbG9hdCBfX292bGQgX19jbmZuIGZhc3RfZGlzdGFuY2UoZmxvYXQgcDAsIGZsb2F0IHAxKTsKZmxvYXQgX19vdmxkIF9fY25mbiBmYXN0X2Rpc3RhbmNlKGZsb2F0MiBwMCwgZmxvYXQyIHAxKTsKZmxvYXQgX19vdmxkIF9fY25mbiBmYXN0X2Rpc3RhbmNlKGZsb2F0MyBwMCwgZmxvYXQzIHAxKTsKZmxvYXQgX19vdmxkIF9fY25mbiBmYXN0X2Rpc3RhbmNlKGZsb2F0NCBwMCwgZmxvYXQ0IHAxKTsKI2lmZGVmIGNsX2tocl9mcDE2CmhhbGYgX19vdmxkIF9fY25mbiBmYXN0X2Rpc3RhbmNlKGhhbGYgcDAsIGhhbGYgcDEpOwpoYWxmIF9fb3ZsZCBfX2NuZm4gZmFzdF9kaXN0YW5jZShoYWxmMiBwMCwgaGFsZjIgcDEpOwpoYWxmIF9fb3ZsZCBfX2NuZm4gZmFzdF9kaXN0YW5jZShoYWxmMyBwMCwgaGFsZjMgcDEpOwpoYWxmIF9fb3ZsZCBfX2NuZm4gZmFzdF9kaXN0YW5jZShoYWxmNCBwMCwgaGFsZjQgcDEpOwojZW5kaWYgLy9jbF9raHJfZnAxNgoKLyoqCiAqIFJldHVybnMgdGhlIGxlbmd0aCBvZiB2ZWN0b3IgcCBjb21wdXRlZCBhczoKICogaGFsZl9zcXJ0KHAueDIgKyBwLnkyICsgLi4uKQogKi8KZmxvYXQgX19vdmxkIF9fY25mbiBmYXN0X2xlbmd0aChmbG9hdCBwKTsKZmxvYXQgX19vdmxkIF9fY25mbiBmYXN0X2xlbmd0aChmbG9hdDIgcCk7CmZsb2F0IF9fb3ZsZCBfX2NuZm4gZmFzdF9sZW5ndGgoZmxvYXQzIHApOwpmbG9hdCBfX292bGQgX19jbmZuIGZhc3RfbGVuZ3RoKGZsb2F0NCBwKTsKI2lmZGVmIGNsX2tocl9mcDE2CmhhbGYgX19vdmxkIF9fY25mbiBmYXN0X2xlbmd0aChoYWxmIHApOwpoYWxmIF9fb3ZsZCBfX2NuZm4gZmFzdF9sZW5ndGgoaGFsZjIgcCk7CmhhbGYgX19vdmxkIF9fY25mbiBmYXN0X2xlbmd0aChoYWxmMyBwKTsKaGFsZiBfX292bGQgX19jbmZuIGZhc3RfbGVuZ3RoKGhhbGY0IHApOwojZW5kaWYgLy9jbF9raHJfZnAxNgoKLyoqCiAqIFJldHVybnMgYSB2ZWN0b3IgaW4gdGhlIHNhbWUgZGlyZWN0aW9uIGFzIHAgYnV0IHdpdGggYQogKiBsZW5ndGggb2YgMS4gZmFzdF9ub3JtYWxpemUgaXMgY29tcHV0ZWQgYXM6CiAqIHAgKiBoYWxmX3JzcXJ0IChwLnheMiArIHAueV4yICsgLi4uICkKICogVGhlIHJlc3VsdCBzaGFsbCBiZSB3aXRoaW4gODE5MiB1bHBzIGVycm9yIGZyb20gdGhlCiAqIGluZmluaXRlbHkgcHJlY2lzZSByZXN1bHQgb2YKICogaWYgKGFsbChwID09IDAuMGYpKQogKiByZXN1bHQgPSBwOwogKiBlbHNlCiAqIHJlc3VsdCA9IHAgLyBzcXJ0IChwLnheMiArIHAueV4yICsgLi4uKTsKICogd2l0aCB0aGUgZm9sbG93aW5nIGV4Y2VwdGlvbnM6CiAqIDEpIElmIHRoZSBzdW0gb2Ygc3F1YXJlcyBpcyBncmVhdGVyIHRoYW4gRkxUX01BWAogKiB0aGVuIHRoZSB2YWx1ZSBvZiB0aGUgZmxvYXRpbmctcG9pbnQgdmFsdWVzIGluIHRoZQogKiByZXN1bHQgdmVjdG9yIGFyZSB1bmRlZmluZWQuCiAqIDIpIElmIHRoZSBzdW0gb2Ygc3F1YXJlcyBpcyBsZXNzIHRoYW4gRkxUX01JTiB0aGVuCiAqIHRoZSBpbXBsZW1lbnRhdGlvbiBtYXkgcmV0dXJuIGJhY2sgcC4KICogMykgSWYgdGhlIGRldmljZSBpcyBpbiAiZGVub3JtcyBhcmUgZmx1c2hlZCB0byB6ZXJvIgogKiBtb2RlLCBpbmRpdmlkdWFsIG9wZXJhbmQgZWxlbWVudHMgd2l0aCBtYWduaXR1ZGUKICogbGVzcyB0aGFuIHNxcnQoRkxUX01JTikgbWF5IGJlIGZsdXNoZWQgdG8gemVybwogKiBiZWZvcmUgcHJvY2VlZGluZyB3aXRoIHRoZSBjYWxjdWxhdGlvbi4KICovCmZsb2F0IF9fb3ZsZCBfX2NuZm4gZmFzdF9ub3JtYWxpemUoZmxvYXQgcCk7CmZsb2F0MiBfX292bGQgX19jbmZuIGZhc3Rfbm9ybWFsaXplKGZsb2F0MiBwKTsKZmxvYXQzIF9fb3ZsZCBfX2NuZm4gZmFzdF9ub3JtYWxpemUoZmxvYXQzIHApOwpmbG9hdDQgX19vdmxkIF9fY25mbiBmYXN0X25vcm1hbGl6ZShmbG9hdDQgcCk7CiNpZmRlZiBjbF9raHJfZnAxNgpoYWxmIF9fb3ZsZCBfX2NuZm4gZmFzdF9ub3JtYWxpemUoaGFsZiBwKTsKaGFsZjIgX19vdmxkIF9fY25mbiBmYXN0X25vcm1hbGl6ZShoYWxmMiBwKTsKaGFsZjMgX19vdmxkIF9fY25mbiBmYXN0X25vcm1hbGl6ZShoYWxmMyBwKTsKaGFsZjQgX19vdmxkIF9fY25mbiBmYXN0X25vcm1hbGl6ZShoYWxmNCBwKTsKI2VuZGlmIC8vY2xfa2hyX2ZwMTYKCi8vIE9wZW5DTCB2MS4xIHM2LjExLjYsIHYxLjIgczYuMTIuNiwgdjIuMCBzNi4xMy42IC0gUmVsYXRpb25hbCBGdW5jdGlvbnMKCi8qKgogKiBpbnRuIGlzZXF1YWwgKGZsb2F0biB4LCBmbG9hdG4geSkKICogUmV0dXJucyB0aGUgY29tcG9uZW50LXdpc2UgY29tcGFyZSBvZiB4ID09IHkuCiAqLwppbnQgX19vdmxkIF9fY25mbiBpc2VxdWFsKGZsb2F0IHgsIGZsb2F0IHkpOwppbnQyIF9fb3ZsZCBfX2NuZm4gaXNlcXVhbChmbG9hdDIgeCwgZmxvYXQyIHkpOwppbnQzIF9fb3ZsZCBfX2NuZm4gaXNlcXVhbChmbG9hdDMgeCwgZmxvYXQzIHkpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gaXNlcXVhbChmbG9hdDQgeCwgZmxvYXQ0IHkpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gaXNlcXVhbChmbG9hdDggeCwgZmxvYXQ4IHkpOwppbnQxNiBfX292bGQgX19jbmZuIGlzZXF1YWwoZmxvYXQxNiB4LCBmbG9hdDE2IHkpOwojaWZkZWYgY2xfa2hyX2ZwNjQKaW50IF9fb3ZsZCBfX2NuZm4gaXNlcXVhbChkb3VibGUgeCwgZG91YmxlIHkpOwpsb25nMiBfX292bGQgX19jbmZuIGlzZXF1YWwoZG91YmxlMiB4LCBkb3VibGUyIHkpOwpsb25nMyBfX292bGQgX19jbmZuIGlzZXF1YWwoZG91YmxlMyB4LCBkb3VibGUzIHkpOwpsb25nNCBfX292bGQgX19jbmZuIGlzZXF1YWwoZG91YmxlNCB4LCBkb3VibGU0IHkpOwpsb25nOCBfX292bGQgX19jbmZuIGlzZXF1YWwoZG91YmxlOCB4LCBkb3VibGU4IHkpOwpsb25nMTYgX19vdmxkIF9fY25mbiBpc2VxdWFsKGRvdWJsZTE2IHgsIGRvdWJsZTE2IHkpOwojZW5kaWYgLy9jbF9raHJfZnA2NAojaWZkZWYgY2xfa2hyX2ZwMTYKaW50IF9fb3ZsZCBfX2NuZm4gaXNlcXVhbChoYWxmIHgsIGhhbGYgeSk7CnNob3J0MiBfX292bGQgX19jbmZuIGlzZXF1YWwoaGFsZjIgeCwgaGFsZjIgeSk7CnNob3J0MyBfX292bGQgX19jbmZuIGlzZXF1YWwoaGFsZjMgeCwgaGFsZjMgeSk7CnNob3J0NCBfX292bGQgX19jbmZuIGlzZXF1YWwoaGFsZjQgeCwgaGFsZjQgeSk7CnNob3J0OCBfX292bGQgX19jbmZuIGlzZXF1YWwoaGFsZjggeCwgaGFsZjggeSk7CnNob3J0MTYgX19vdmxkIF9fY25mbiBpc2VxdWFsKGhhbGYxNiB4LCBoYWxmMTYgeSk7CiNlbmRpZiAvL2NsX2tocl9mcDE2CgovKioKICogUmV0dXJucyB0aGUgY29tcG9uZW50LXdpc2UgY29tcGFyZSBvZiB4ICE9IHkuCiAqLwppbnQgX19vdmxkIF9fY25mbiBpc25vdGVxdWFsKGZsb2F0IHgsIGZsb2F0IHkpOwppbnQyIF9fb3ZsZCBfX2NuZm4gaXNub3RlcXVhbChmbG9hdDIgeCwgZmxvYXQyIHkpOwppbnQzIF9fb3ZsZCBfX2NuZm4gaXNub3RlcXVhbChmbG9hdDMgeCwgZmxvYXQzIHkpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gaXNub3RlcXVhbChmbG9hdDQgeCwgZmxvYXQ0IHkpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gaXNub3RlcXVhbChmbG9hdDggeCwgZmxvYXQ4IHkpOwppbnQxNiBfX292bGQgX19jbmZuIGlzbm90ZXF1YWwoZmxvYXQxNiB4LCBmbG9hdDE2IHkpOwojaWZkZWYgY2xfa2hyX2ZwNjQKaW50IF9fb3ZsZCBfX2NuZm4gaXNub3RlcXVhbChkb3VibGUgeCwgZG91YmxlIHkpOwpsb25nMiBfX292bGQgX19jbmZuIGlzbm90ZXF1YWwoZG91YmxlMiB4LCBkb3VibGUyIHkpOwpsb25nMyBfX292bGQgX19jbmZuIGlzbm90ZXF1YWwoZG91YmxlMyB4LCBkb3VibGUzIHkpOwpsb25nNCBfX292bGQgX19jbmZuIGlzbm90ZXF1YWwoZG91YmxlNCB4LCBkb3VibGU0IHkpOwpsb25nOCBfX292bGQgX19jbmZuIGlzbm90ZXF1YWwoZG91YmxlOCB4LCBkb3VibGU4IHkpOwpsb25nMTYgX19vdmxkIF9fY25mbiBpc25vdGVxdWFsKGRvdWJsZTE2IHgsIGRvdWJsZTE2IHkpOwojZW5kaWYgLy9jbF9raHJfZnA2NAojaWZkZWYgY2xfa2hyX2ZwMTYKaW50IF9fb3ZsZCBfX2NuZm4gaXNub3RlcXVhbChoYWxmIHgsIGhhbGYgeSk7CnNob3J0MiBfX292bGQgX19jbmZuIGlzbm90ZXF1YWwoaGFsZjIgeCwgaGFsZjIgeSk7CnNob3J0MyBfX292bGQgX19jbmZuIGlzbm90ZXF1YWwoaGFsZjMgeCwgaGFsZjMgeSk7CnNob3J0NCBfX292bGQgX19jbmZuIGlzbm90ZXF1YWwoaGFsZjQgeCwgaGFsZjQgeSk7CnNob3J0OCBfX292bGQgX19jbmZuIGlzbm90ZXF1YWwoaGFsZjggeCwgaGFsZjggeSk7CnNob3J0MTYgX19vdmxkIF9fY25mbiBpc25vdGVxdWFsKGhhbGYxNiB4LCBoYWxmMTYgeSk7CiNlbmRpZiAvL2NsX2tocl9mcDE2CgovKioKICogUmV0dXJucyB0aGUgY29tcG9uZW50LXdpc2UgY29tcGFyZSBvZiB4ID4geS4KICovCmludCBfX292bGQgX19jbmZuIGlzZ3JlYXRlcihmbG9hdCB4LCBmbG9hdCB5KTsKaW50MiBfX292bGQgX19jbmZuIGlzZ3JlYXRlcihmbG9hdDIgeCwgZmxvYXQyIHkpOwppbnQzIF9fb3ZsZCBfX2NuZm4gaXNncmVhdGVyKGZsb2F0MyB4LCBmbG9hdDMgeSk7CmludDQgX19vdmxkIF9fY25mbiBpc2dyZWF0ZXIoZmxvYXQ0IHgsIGZsb2F0NCB5KTsKaW50OCBfX292bGQgX19jbmZuIGlzZ3JlYXRlcihmbG9hdDggeCwgZmxvYXQ4IHkpOwppbnQxNiBfX292bGQgX19jbmZuIGlzZ3JlYXRlcihmbG9hdDE2IHgsIGZsb2F0MTYgeSk7CiNpZmRlZiBjbF9raHJfZnA2NAppbnQgX19vdmxkIF9fY25mbiBpc2dyZWF0ZXIoZG91YmxlIHgsIGRvdWJsZSB5KTsKbG9uZzIgX19vdmxkIF9fY25mbiBpc2dyZWF0ZXIoZG91YmxlMiB4LCBkb3VibGUyIHkpOwpsb25nMyBfX292bGQgX19jbmZuIGlzZ3JlYXRlcihkb3VibGUzIHgsIGRvdWJsZTMgeSk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gaXNncmVhdGVyKGRvdWJsZTQgeCwgZG91YmxlNCB5KTsKbG9uZzggX19vdmxkIF9fY25mbiBpc2dyZWF0ZXIoZG91YmxlOCB4LCBkb3VibGU4IHkpOwpsb25nMTYgX19vdmxkIF9fY25mbiBpc2dyZWF0ZXIoZG91YmxlMTYgeCwgZG91YmxlMTYgeSk7CiNlbmRpZiAvL2NsX2tocl9mcDY0CiNpZmRlZiBjbF9raHJfZnAxNgppbnQgX19vdmxkIF9fY25mbiBpc2dyZWF0ZXIoaGFsZiB4LCBoYWxmIHkpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBpc2dyZWF0ZXIoaGFsZjIgeCwgaGFsZjIgeSk7CnNob3J0MyBfX292bGQgX19jbmZuIGlzZ3JlYXRlcihoYWxmMyB4LCBoYWxmMyB5KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gaXNncmVhdGVyKGhhbGY0IHgsIGhhbGY0IHkpOwpzaG9ydDggX19vdmxkIF9fY25mbiBpc2dyZWF0ZXIoaGFsZjggeCwgaGFsZjggeSk7CnNob3J0MTYgX19vdmxkIF9fY25mbiBpc2dyZWF0ZXIoaGFsZjE2IHgsIGhhbGYxNiB5KTsKI2VuZGlmIC8vY2xfa2hyX2ZwMTYKCi8qKgogKiBSZXR1cm5zIHRoZSBjb21wb25lbnQtd2lzZSBjb21wYXJlIG9mIHggPj0geS4KICovCmludCBfX292bGQgX19jbmZuIGlzZ3JlYXRlcmVxdWFsKGZsb2F0IHgsIGZsb2F0IHkpOwppbnQyIF9fb3ZsZCBfX2NuZm4gaXNncmVhdGVyZXF1YWwoZmxvYXQyIHgsIGZsb2F0MiB5KTsKaW50MyBfX292bGQgX19jbmZuIGlzZ3JlYXRlcmVxdWFsKGZsb2F0MyB4LCBmbG9hdDMgeSk7CmludDQgX19vdmxkIF9fY25mbiBpc2dyZWF0ZXJlcXVhbChmbG9hdDQgeCwgZmxvYXQ0IHkpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gaXNncmVhdGVyZXF1YWwoZmxvYXQ4IHgsIGZsb2F0OCB5KTsKaW50MTYgX19vdmxkIF9fY25mbiBpc2dyZWF0ZXJlcXVhbChmbG9hdDE2IHgsIGZsb2F0MTYgeSk7CiNpZmRlZiBjbF9raHJfZnA2NAppbnQgX19vdmxkIF9fY25mbiBpc2dyZWF0ZXJlcXVhbChkb3VibGUgeCwgZG91YmxlIHkpOwpsb25nMiBfX292bGQgX19jbmZuIGlzZ3JlYXRlcmVxdWFsKGRvdWJsZTIgeCwgZG91YmxlMiB5KTsKbG9uZzMgX19vdmxkIF9fY25mbiBpc2dyZWF0ZXJlcXVhbChkb3VibGUzIHgsIGRvdWJsZTMgeSk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gaXNncmVhdGVyZXF1YWwoZG91YmxlNCB4LCBkb3VibGU0IHkpOwpsb25nOCBfX292bGQgX19jbmZuIGlzZ3JlYXRlcmVxdWFsKGRvdWJsZTggeCwgZG91YmxlOCB5KTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gaXNncmVhdGVyZXF1YWwoZG91YmxlMTYgeCwgZG91YmxlMTYgeSk7CiNlbmRpZiAvL2NsX2tocl9mcDY0CiNpZmRlZiBjbF9raHJfZnAxNgppbnQgX19vdmxkIF9fY25mbiBpc2dyZWF0ZXJlcXVhbChoYWxmIHgsIGhhbGYgeSk7CnNob3J0MiBfX292bGQgX19jbmZuIGlzZ3JlYXRlcmVxdWFsKGhhbGYyIHgsIGhhbGYyIHkpOwpzaG9ydDMgX19vdmxkIF9fY25mbiBpc2dyZWF0ZXJlcXVhbChoYWxmMyB4LCBoYWxmMyB5KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gaXNncmVhdGVyZXF1YWwoaGFsZjQgeCwgaGFsZjQgeSk7CnNob3J0OCBfX292bGQgX19jbmZuIGlzZ3JlYXRlcmVxdWFsKGhhbGY4IHgsIGhhbGY4IHkpOwpzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gaXNncmVhdGVyZXF1YWwoaGFsZjE2IHgsIGhhbGYxNiB5KTsKI2VuZGlmIC8vY2xfa2hyX2ZwMTYKCi8qKgogKiBSZXR1cm5zIHRoZSBjb21wb25lbnQtd2lzZSBjb21wYXJlIG9mIHggPCB5LgogKi8KaW50IF9fb3ZsZCBfX2NuZm4gaXNsZXNzKGZsb2F0IHgsIGZsb2F0IHkpOwppbnQyIF9fb3ZsZCBfX2NuZm4gaXNsZXNzKGZsb2F0MiB4LCBmbG9hdDIgeSk7CmludDMgX19vdmxkIF9fY25mbiBpc2xlc3MoZmxvYXQzIHgsIGZsb2F0MyB5KTsKaW50NCBfX292bGQgX19jbmZuIGlzbGVzcyhmbG9hdDQgeCwgZmxvYXQ0IHkpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gaXNsZXNzKGZsb2F0OCB4LCBmbG9hdDggeSk7CmludDE2IF9fb3ZsZCBfX2NuZm4gaXNsZXNzKGZsb2F0MTYgeCwgZmxvYXQxNiB5KTsKI2lmZGVmIGNsX2tocl9mcDY0CmludCBfX292bGQgX19jbmZuIGlzbGVzcyhkb3VibGUgeCwgZG91YmxlIHkpOwpsb25nMiBfX292bGQgX19jbmZuIGlzbGVzcyhkb3VibGUyIHgsIGRvdWJsZTIgeSk7CmxvbmczIF9fb3ZsZCBfX2NuZm4gaXNsZXNzKGRvdWJsZTMgeCwgZG91YmxlMyB5KTsKbG9uZzQgX19vdmxkIF9fY25mbiBpc2xlc3MoZG91YmxlNCB4LCBkb3VibGU0IHkpOwpsb25nOCBfX292bGQgX19jbmZuIGlzbGVzcyhkb3VibGU4IHgsIGRvdWJsZTggeSk7CmxvbmcxNiBfX292bGQgX19jbmZuIGlzbGVzcyhkb3VibGUxNiB4LCBkb3VibGUxNiB5KTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKI2lmZGVmIGNsX2tocl9mcDE2CmludCBfX292bGQgX19jbmZuIGlzbGVzcyhoYWxmIHgsIGhhbGYgeSk7CnNob3J0MiBfX292bGQgX19jbmZuIGlzbGVzcyhoYWxmMiB4LCBoYWxmMiB5KTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gaXNsZXNzKGhhbGYzIHgsIGhhbGYzIHkpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBpc2xlc3MoaGFsZjQgeCwgaGFsZjQgeSk7CnNob3J0OCBfX292bGQgX19jbmZuIGlzbGVzcyhoYWxmOCB4LCBoYWxmOCB5KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGlzbGVzcyhoYWxmMTYgeCwgaGFsZjE2IHkpOwojZW5kaWYgLy9jbF9raHJfZnAxNgoKLyoqCiAqIFJldHVybnMgdGhlIGNvbXBvbmVudC13aXNlIGNvbXBhcmUgb2YgeCA8PSB5LgogKi8KaW50IF9fb3ZsZCBfX2NuZm4gaXNsZXNzZXF1YWwoZmxvYXQgeCwgZmxvYXQgeSk7CmludDIgX19vdmxkIF9fY25mbiBpc2xlc3NlcXVhbChmbG9hdDIgeCwgZmxvYXQyIHkpOwppbnQzIF9fb3ZsZCBfX2NuZm4gaXNsZXNzZXF1YWwoZmxvYXQzIHgsIGZsb2F0MyB5KTsKaW50NCBfX292bGQgX19jbmZuIGlzbGVzc2VxdWFsKGZsb2F0NCB4LCBmbG9hdDQgeSk7CmludDggX19vdmxkIF9fY25mbiBpc2xlc3NlcXVhbChmbG9hdDggeCwgZmxvYXQ4IHkpOwppbnQxNiBfX292bGQgX19jbmZuIGlzbGVzc2VxdWFsKGZsb2F0MTYgeCwgZmxvYXQxNiB5KTsKI2lmZGVmIGNsX2tocl9mcDY0CmludCBfX292bGQgX19jbmZuIGlzbGVzc2VxdWFsKGRvdWJsZSB4LCBkb3VibGUgeSk7CmxvbmcyIF9fb3ZsZCBfX2NuZm4gaXNsZXNzZXF1YWwoZG91YmxlMiB4LCBkb3VibGUyIHkpOwpsb25nMyBfX292bGQgX19jbmZuIGlzbGVzc2VxdWFsKGRvdWJsZTMgeCwgZG91YmxlMyB5KTsKbG9uZzQgX19vdmxkIF9fY25mbiBpc2xlc3NlcXVhbChkb3VibGU0IHgsIGRvdWJsZTQgeSk7Cmxvbmc4IF9fb3ZsZCBfX2NuZm4gaXNsZXNzZXF1YWwoZG91YmxlOCB4LCBkb3VibGU4IHkpOwpsb25nMTYgX19vdmxkIF9fY25mbiBpc2xlc3NlcXVhbChkb3VibGUxNiB4LCBkb3VibGUxNiB5KTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKI2lmZGVmIGNsX2tocl9mcDE2CmludCBfX292bGQgX19jbmZuIGlzbGVzc2VxdWFsKGhhbGYgeCwgaGFsZiB5KTsKc2hvcnQyIF9fb3ZsZCBfX2NuZm4gaXNsZXNzZXF1YWwoaGFsZjIgeCwgaGFsZjIgeSk7CnNob3J0MyBfX292bGQgX19jbmZuIGlzbGVzc2VxdWFsKGhhbGYzIHgsIGhhbGYzIHkpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBpc2xlc3NlcXVhbChoYWxmNCB4LCBoYWxmNCB5KTsKc2hvcnQ4IF9fb3ZsZCBfX2NuZm4gaXNsZXNzZXF1YWwoaGFsZjggeCwgaGFsZjggeSk7CnNob3J0MTYgX19vdmxkIF9fY25mbiBpc2xlc3NlcXVhbChoYWxmMTYgeCwgaGFsZjE2IHkpOwojZW5kaWYgLy9jbF9raHJfZnAxNgoKLyoqCiAqIFJldHVybnMgdGhlIGNvbXBvbmVudC13aXNlIGNvbXBhcmUgb2YKICogKHggPCB5KSB8fCAoeCA+IHkpIC4KICovCmludCBfX292bGQgX19jbmZuIGlzbGVzc2dyZWF0ZXIoZmxvYXQgeCwgZmxvYXQgeSk7CmludDIgX19vdmxkIF9fY25mbiBpc2xlc3NncmVhdGVyKGZsb2F0MiB4LCBmbG9hdDIgeSk7CmludDMgX19vdmxkIF9fY25mbiBpc2xlc3NncmVhdGVyKGZsb2F0MyB4LCBmbG9hdDMgeSk7CmludDQgX19vdmxkIF9fY25mbiBpc2xlc3NncmVhdGVyKGZsb2F0NCB4LCBmbG9hdDQgeSk7CmludDggX19vdmxkIF9fY25mbiBpc2xlc3NncmVhdGVyKGZsb2F0OCB4LCBmbG9hdDggeSk7CmludDE2IF9fb3ZsZCBfX2NuZm4gaXNsZXNzZ3JlYXRlcihmbG9hdDE2IHgsIGZsb2F0MTYgeSk7CiNpZmRlZiBjbF9raHJfZnA2NAppbnQgX19vdmxkIF9fY25mbiBpc2xlc3NncmVhdGVyKGRvdWJsZSB4LCBkb3VibGUgeSk7CmxvbmcyIF9fb3ZsZCBfX2NuZm4gaXNsZXNzZ3JlYXRlcihkb3VibGUyIHgsIGRvdWJsZTIgeSk7CmxvbmczIF9fb3ZsZCBfX2NuZm4gaXNsZXNzZ3JlYXRlcihkb3VibGUzIHgsIGRvdWJsZTMgeSk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gaXNsZXNzZ3JlYXRlcihkb3VibGU0IHgsIGRvdWJsZTQgeSk7Cmxvbmc4IF9fb3ZsZCBfX2NuZm4gaXNsZXNzZ3JlYXRlcihkb3VibGU4IHgsIGRvdWJsZTggeSk7CmxvbmcxNiBfX292bGQgX19jbmZuIGlzbGVzc2dyZWF0ZXIoZG91YmxlMTYgeCwgZG91YmxlMTYgeSk7CiNlbmRpZiAvL2NsX2tocl9mcDY0CiNpZmRlZiBjbF9raHJfZnAxNgppbnQgX19vdmxkIF9fY25mbiBpc2xlc3NncmVhdGVyKGhhbGYgeCwgaGFsZiB5KTsKc2hvcnQyIF9fb3ZsZCBfX2NuZm4gaXNsZXNzZ3JlYXRlcihoYWxmMiB4LCBoYWxmMiB5KTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gaXNsZXNzZ3JlYXRlcihoYWxmMyB4LCBoYWxmMyB5KTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gaXNsZXNzZ3JlYXRlcihoYWxmNCB4LCBoYWxmNCB5KTsKc2hvcnQ4IF9fb3ZsZCBfX2NuZm4gaXNsZXNzZ3JlYXRlcihoYWxmOCB4LCBoYWxmOCB5KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGlzbGVzc2dyZWF0ZXIoaGFsZjE2IHgsIGhhbGYxNiB5KTsKI2VuZGlmIC8vY2xfa2hyX2ZwMTYKCi8qKgogKiBUZXN0IGZvciBmaW5pdGUgdmFsdWUuCiAqLwppbnQgX19vdmxkIF9fY25mbiBpc2Zpbml0ZShmbG9hdCk7CmludDIgX19vdmxkIF9fY25mbiBpc2Zpbml0ZShmbG9hdDIpOwppbnQzIF9fb3ZsZCBfX2NuZm4gaXNmaW5pdGUoZmxvYXQzKTsKaW50NCBfX292bGQgX19jbmZuIGlzZmluaXRlKGZsb2F0NCk7CmludDggX19vdmxkIF9fY25mbiBpc2Zpbml0ZShmbG9hdDgpOwppbnQxNiBfX292bGQgX19jbmZuIGlzZmluaXRlKGZsb2F0MTYpOwojaWZkZWYgY2xfa2hyX2ZwNjQKaW50IF9fb3ZsZCBfX2NuZm4gaXNmaW5pdGUoZG91YmxlKTsKbG9uZzIgX19vdmxkIF9fY25mbiBpc2Zpbml0ZShkb3VibGUyKTsKbG9uZzMgX19vdmxkIF9fY25mbiBpc2Zpbml0ZShkb3VibGUzKTsKbG9uZzQgX19vdmxkIF9fY25mbiBpc2Zpbml0ZShkb3VibGU0KTsKbG9uZzggX19vdmxkIF9fY25mbiBpc2Zpbml0ZShkb3VibGU4KTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gaXNmaW5pdGUoZG91YmxlMTYpOwojZW5kaWYgLy9jbF9raHJfZnA2NAojaWZkZWYgY2xfa2hyX2ZwMTYKaW50IF9fb3ZsZCBfX2NuZm4gaXNmaW5pdGUoaGFsZik7CnNob3J0MiBfX292bGQgX19jbmZuIGlzZmluaXRlKGhhbGYyKTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gaXNmaW5pdGUoaGFsZjMpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBpc2Zpbml0ZShoYWxmNCk7CnNob3J0OCBfX292bGQgX19jbmZuIGlzZmluaXRlKGhhbGY4KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGlzZmluaXRlKGhhbGYxNik7CiNlbmRpZiAvL2NsX2tocl9mcDE2CgovKioKICogVGVzdCBmb3IgaW5maW5pdHkgdmFsdWUgKCt2ZSBvciAtdmUpIC4KICovCmludCBfX292bGQgX19jbmZuIGlzaW5mKGZsb2F0KTsKaW50MiBfX292bGQgX19jbmZuIGlzaW5mKGZsb2F0Mik7CmludDMgX19vdmxkIF9fY25mbiBpc2luZihmbG9hdDMpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gaXNpbmYoZmxvYXQ0KTsKaW50OCBfX292bGQgX19jbmZuIGlzaW5mKGZsb2F0OCk7CmludDE2IF9fb3ZsZCBfX2NuZm4gaXNpbmYoZmxvYXQxNik7CiNpZmRlZiBjbF9raHJfZnA2NAppbnQgX19vdmxkIF9fY25mbiBpc2luZihkb3VibGUpOwpsb25nMiBfX292bGQgX19jbmZuIGlzaW5mKGRvdWJsZTIpOwpsb25nMyBfX292bGQgX19jbmZuIGlzaW5mKGRvdWJsZTMpOwpsb25nNCBfX292bGQgX19jbmZuIGlzaW5mKGRvdWJsZTQpOwpsb25nOCBfX292bGQgX19jbmZuIGlzaW5mKGRvdWJsZTgpOwpsb25nMTYgX19vdmxkIF9fY25mbiBpc2luZihkb3VibGUxNik7CiNlbmRpZiAvL2NsX2tocl9mcDY0CiNpZmRlZiBjbF9raHJfZnAxNgppbnQgX19vdmxkIF9fY25mbiBpc2luZihoYWxmKTsKc2hvcnQyIF9fb3ZsZCBfX2NuZm4gaXNpbmYoaGFsZjIpOwpzaG9ydDMgX19vdmxkIF9fY25mbiBpc2luZihoYWxmMyk7CnNob3J0NCBfX292bGQgX19jbmZuIGlzaW5mKGhhbGY0KTsKc2hvcnQ4IF9fb3ZsZCBfX2NuZm4gaXNpbmYoaGFsZjgpOwpzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gaXNpbmYoaGFsZjE2KTsKI2VuZGlmIC8vY2xfa2hyX2ZwMTYKCi8qKgogKiBUZXN0IGZvciBhIE5hTi4KICovCmludCBfX292bGQgX19jbmZuIGlzbmFuKGZsb2F0KTsKaW50MiBfX292bGQgX19jbmZuIGlzbmFuKGZsb2F0Mik7CmludDMgX19vdmxkIF9fY25mbiBpc25hbihmbG9hdDMpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gaXNuYW4oZmxvYXQ0KTsKaW50OCBfX292bGQgX19jbmZuIGlzbmFuKGZsb2F0OCk7CmludDE2IF9fb3ZsZCBfX2NuZm4gaXNuYW4oZmxvYXQxNik7CiNpZmRlZiBjbF9raHJfZnA2NAppbnQgX19vdmxkIF9fY25mbiBpc25hbihkb3VibGUpOwpsb25nMiBfX292bGQgX19jbmZuIGlzbmFuKGRvdWJsZTIpOwpsb25nMyBfX292bGQgX19jbmZuIGlzbmFuKGRvdWJsZTMpOwpsb25nNCBfX292bGQgX19jbmZuIGlzbmFuKGRvdWJsZTQpOwpsb25nOCBfX292bGQgX19jbmZuIGlzbmFuKGRvdWJsZTgpOwpsb25nMTYgX19vdmxkIF9fY25mbiBpc25hbihkb3VibGUxNik7CiNlbmRpZiAvL2NsX2tocl9mcDY0CiNpZmRlZiBjbF9raHJfZnAxNgppbnQgX19vdmxkIF9fY25mbiBpc25hbihoYWxmKTsKc2hvcnQyIF9fb3ZsZCBfX2NuZm4gaXNuYW4oaGFsZjIpOwpzaG9ydDMgX19vdmxkIF9fY25mbiBpc25hbihoYWxmMyk7CnNob3J0NCBfX292bGQgX19jbmZuIGlzbmFuKGhhbGY0KTsKc2hvcnQ4IF9fb3ZsZCBfX2NuZm4gaXNuYW4oaGFsZjgpOwpzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gaXNuYW4oaGFsZjE2KTsKI2VuZGlmIC8vY2xfa2hyX2ZwMTYKCi8qKgogKiBUZXN0IGZvciBhIG5vcm1hbCB2YWx1ZS4KICovCmludCBfX292bGQgX19jbmZuIGlzbm9ybWFsKGZsb2F0KTsKaW50MiBfX292bGQgX19jbmZuIGlzbm9ybWFsKGZsb2F0Mik7CmludDMgX19vdmxkIF9fY25mbiBpc25vcm1hbChmbG9hdDMpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gaXNub3JtYWwoZmxvYXQ0KTsKaW50OCBfX292bGQgX19jbmZuIGlzbm9ybWFsKGZsb2F0OCk7CmludDE2IF9fb3ZsZCBfX2NuZm4gaXNub3JtYWwoZmxvYXQxNik7CiNpZmRlZiBjbF9raHJfZnA2NAppbnQgX19vdmxkIF9fY25mbiBpc25vcm1hbChkb3VibGUpOwpsb25nMiBfX292bGQgX19jbmZuIGlzbm9ybWFsKGRvdWJsZTIpOwpsb25nMyBfX292bGQgX19jbmZuIGlzbm9ybWFsKGRvdWJsZTMpOwpsb25nNCBfX292bGQgX19jbmZuIGlzbm9ybWFsKGRvdWJsZTQpOwpsb25nOCBfX292bGQgX19jbmZuIGlzbm9ybWFsKGRvdWJsZTgpOwpsb25nMTYgX19vdmxkIF9fY25mbiBpc25vcm1hbChkb3VibGUxNik7CiNlbmRpZiAvL2NsX2tocl9mcDY0CiNpZmRlZiBjbF9raHJfZnAxNgppbnQgX19vdmxkIF9fY25mbiBpc25vcm1hbChoYWxmKTsKc2hvcnQyIF9fb3ZsZCBfX2NuZm4gaXNub3JtYWwoaGFsZjIpOwpzaG9ydDMgX19vdmxkIF9fY25mbiBpc25vcm1hbChoYWxmMyk7CnNob3J0NCBfX292bGQgX19jbmZuIGlzbm9ybWFsKGhhbGY0KTsKc2hvcnQ4IF9fb3ZsZCBfX2NuZm4gaXNub3JtYWwoaGFsZjgpOwpzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gaXNub3JtYWwoaGFsZjE2KTsKI2VuZGlmIC8vY2xfa2hyX2ZwMTYKCi8qKgogKiBUZXN0IGlmIGFyZ3VtZW50cyBhcmUgb3JkZXJlZC4gaXNvcmRlcmVkKCkgdGFrZXMKICogYXJndW1lbnRzIHggYW5kIHksIGFuZCByZXR1cm5zIHRoZSByZXN1bHQKICogaXNlcXVhbCh4LCB4KSAmJiBpc2VxdWFsKHksIHkpLgogKi8KaW50IF9fb3ZsZCBfX2NuZm4gaXNvcmRlcmVkKGZsb2F0IHgsIGZsb2F0IHkpOwppbnQyIF9fb3ZsZCBfX2NuZm4gaXNvcmRlcmVkKGZsb2F0MiB4LCBmbG9hdDIgeSk7CmludDMgX19vdmxkIF9fY25mbiBpc29yZGVyZWQoZmxvYXQzIHgsIGZsb2F0MyB5KTsKaW50NCBfX292bGQgX19jbmZuIGlzb3JkZXJlZChmbG9hdDQgeCwgZmxvYXQ0IHkpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gaXNvcmRlcmVkKGZsb2F0OCB4LCBmbG9hdDggeSk7CmludDE2IF9fb3ZsZCBfX2NuZm4gaXNvcmRlcmVkKGZsb2F0MTYgeCwgZmxvYXQxNiB5KTsKI2lmZGVmIGNsX2tocl9mcDY0CmludCBfX292bGQgX19jbmZuIGlzb3JkZXJlZChkb3VibGUgeCwgZG91YmxlIHkpOwpsb25nMiBfX292bGQgX19jbmZuIGlzb3JkZXJlZChkb3VibGUyIHgsIGRvdWJsZTIgeSk7CmxvbmczIF9fb3ZsZCBfX2NuZm4gaXNvcmRlcmVkKGRvdWJsZTMgeCwgZG91YmxlMyB5KTsKbG9uZzQgX19vdmxkIF9fY25mbiBpc29yZGVyZWQoZG91YmxlNCB4LCBkb3VibGU0IHkpOwpsb25nOCBfX292bGQgX19jbmZuIGlzb3JkZXJlZChkb3VibGU4IHgsIGRvdWJsZTggeSk7CmxvbmcxNiBfX292bGQgX19jbmZuIGlzb3JkZXJlZChkb3VibGUxNiB4LCBkb3VibGUxNiB5KTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKI2lmZGVmIGNsX2tocl9mcDE2CmludCBfX292bGQgX19jbmZuIGlzb3JkZXJlZChoYWxmIHgsIGhhbGYgeSk7CnNob3J0MiBfX292bGQgX19jbmZuIGlzb3JkZXJlZChoYWxmMiB4LCBoYWxmMiB5KTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gaXNvcmRlcmVkKGhhbGYzIHgsIGhhbGYzIHkpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBpc29yZGVyZWQoaGFsZjQgeCwgaGFsZjQgeSk7CnNob3J0OCBfX292bGQgX19jbmZuIGlzb3JkZXJlZChoYWxmOCB4LCBoYWxmOCB5KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGlzb3JkZXJlZChoYWxmMTYgeCwgaGFsZjE2IHkpOwojZW5kaWYgLy9jbF9raHJfZnAxNgoKLyoqCiAqIFRlc3QgaWYgYXJndW1lbnRzIGFyZSB1bm9yZGVyZWQuIGlzdW5vcmRlcmVkKCkKICogdGFrZXMgYXJndW1lbnRzIHggYW5kIHksIHJldHVybmluZyBub24temVybyBpZiB4IG9yIHkKICogaXMgTmFOLCBhbmQgemVybyBvdGhlcndpc2UuCiAqLwppbnQgX19vdmxkIF9fY25mbiBpc3Vub3JkZXJlZChmbG9hdCB4LCBmbG9hdCB5KTsKaW50MiBfX292bGQgX19jbmZuIGlzdW5vcmRlcmVkKGZsb2F0MiB4LCBmbG9hdDIgeSk7CmludDMgX19vdmxkIF9fY25mbiBpc3Vub3JkZXJlZChmbG9hdDMgeCwgZmxvYXQzIHkpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gaXN1bm9yZGVyZWQoZmxvYXQ0IHgsIGZsb2F0NCB5KTsKaW50OCBfX292bGQgX19jbmZuIGlzdW5vcmRlcmVkKGZsb2F0OCB4LCBmbG9hdDggeSk7CmludDE2IF9fb3ZsZCBfX2NuZm4gaXN1bm9yZGVyZWQoZmxvYXQxNiB4LCBmbG9hdDE2IHkpOwojaWZkZWYgY2xfa2hyX2ZwNjQKaW50IF9fb3ZsZCBfX2NuZm4gaXN1bm9yZGVyZWQoZG91YmxlIHgsIGRvdWJsZSB5KTsKbG9uZzIgX19vdmxkIF9fY25mbiBpc3Vub3JkZXJlZChkb3VibGUyIHgsIGRvdWJsZTIgeSk7CmxvbmczIF9fb3ZsZCBfX2NuZm4gaXN1bm9yZGVyZWQoZG91YmxlMyB4LCBkb3VibGUzIHkpOwpsb25nNCBfX292bGQgX19jbmZuIGlzdW5vcmRlcmVkKGRvdWJsZTQgeCwgZG91YmxlNCB5KTsKbG9uZzggX19vdmxkIF9fY25mbiBpc3Vub3JkZXJlZChkb3VibGU4IHgsIGRvdWJsZTggeSk7CmxvbmcxNiBfX292bGQgX19jbmZuIGlzdW5vcmRlcmVkKGRvdWJsZTE2IHgsIGRvdWJsZTE2IHkpOwojZW5kaWYgLy9jbF9raHJfZnA2NAojaWZkZWYgY2xfa2hyX2ZwMTYKaW50IF9fb3ZsZCBfX2NuZm4gaXN1bm9yZGVyZWQoaGFsZiB4LCBoYWxmIHkpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBpc3Vub3JkZXJlZChoYWxmMiB4LCBoYWxmMiB5KTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gaXN1bm9yZGVyZWQoaGFsZjMgeCwgaGFsZjMgeSk7CnNob3J0NCBfX292bGQgX19jbmZuIGlzdW5vcmRlcmVkKGhhbGY0IHgsIGhhbGY0IHkpOwpzaG9ydDggX19vdmxkIF9fY25mbiBpc3Vub3JkZXJlZChoYWxmOCB4LCBoYWxmOCB5KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGlzdW5vcmRlcmVkKGhhbGYxNiB4LCBoYWxmMTYgeSk7CiNlbmRpZiAvL2NsX2tocl9mcDE2CgovKioKICogVGVzdCBmb3Igc2lnbiBiaXQuIFRoZSBzY2FsYXIgdmVyc2lvbiBvZiB0aGUgZnVuY3Rpb24KICogcmV0dXJucyBhIDEgaWYgdGhlIHNpZ24gYml0IGluIHRoZSBmbG9hdCBpcyBzZXQgZWxzZSByZXR1cm5zCiAqIDAuIFRoZSB2ZWN0b3IgdmVyc2lvbiBvZiB0aGUgZnVuY3Rpb24gcmV0dXJucyB0aGUKICogZm9sbG93aW5nIGZvciBlYWNoIGNvbXBvbmVudCBpbiBmbG9hdG46IGEgLTEgaWYgdGhlCiAqIHNpZ24gYml0IGluIHRoZSBmbG9hdCBpcyBzZXQgZWxzZSByZXR1cm5zIDAuCiAqLwppbnQgX19vdmxkIF9fY25mbiBzaWduYml0KGZsb2F0KTsKaW50MiBfX292bGQgX19jbmZuIHNpZ25iaXQoZmxvYXQyKTsKaW50MyBfX292bGQgX19jbmZuIHNpZ25iaXQoZmxvYXQzKTsKaW50NCBfX292bGQgX19jbmZuIHNpZ25iaXQoZmxvYXQ0KTsKaW50OCBfX292bGQgX19jbmZuIHNpZ25iaXQoZmxvYXQ4KTsKaW50MTYgX19vdmxkIF9fY25mbiBzaWduYml0KGZsb2F0MTYpOwojaWZkZWYgY2xfa2hyX2ZwNjQKaW50IF9fb3ZsZCBfX2NuZm4gc2lnbmJpdChkb3VibGUpOwpsb25nMiBfX292bGQgX19jbmZuIHNpZ25iaXQoZG91YmxlMik7CmxvbmczIF9fb3ZsZCBfX2NuZm4gc2lnbmJpdChkb3VibGUzKTsKbG9uZzQgX19vdmxkIF9fY25mbiBzaWduYml0KGRvdWJsZTQpOwpsb25nOCBfX292bGQgX19jbmZuIHNpZ25iaXQoZG91YmxlOCk7CmxvbmcxNiBfX292bGQgX19jbmZuIHNpZ25iaXQoZG91YmxlMTYpOwojZW5kaWYgLy9jbF9raHJfZnA2NAojaWZkZWYgY2xfa2hyX2ZwMTYKaW50IF9fb3ZsZCBfX2NuZm4gc2lnbmJpdChoYWxmKTsKc2hvcnQyIF9fb3ZsZCBfX2NuZm4gc2lnbmJpdChoYWxmMik7CnNob3J0MyBfX292bGQgX19jbmZuIHNpZ25iaXQoaGFsZjMpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBzaWduYml0KGhhbGY0KTsKc2hvcnQ4IF9fb3ZsZCBfX2NuZm4gc2lnbmJpdChoYWxmOCk7CnNob3J0MTYgX19vdmxkIF9fY25mbiBzaWduYml0KGhhbGYxNik7CiNlbmRpZiAvL2NsX2tocl9mcDE2CgovKioKICogUmV0dXJucyAxIGlmIHRoZSBtb3N0IHNpZ25pZmljYW50IGJpdCBpbiBhbnkgY29tcG9uZW50CiAqIG9mIHggaXMgc2V0OyBvdGhlcndpc2UgcmV0dXJucyAwLgogKi8KaW50IF9fb3ZsZCBfX2NuZm4gYW55KGNoYXIgeCk7CmludCBfX292bGQgX19jbmZuIGFueShjaGFyMiB4KTsKaW50IF9fb3ZsZCBfX2NuZm4gYW55KGNoYXIzIHgpOwppbnQgX19vdmxkIF9fY25mbiBhbnkoY2hhcjQgeCk7CmludCBfX292bGQgX19jbmZuIGFueShjaGFyOCB4KTsKaW50IF9fb3ZsZCBfX2NuZm4gYW55KGNoYXIxNiB4KTsKaW50IF9fb3ZsZCBfX2NuZm4gYW55KHNob3J0IHgpOwppbnQgX19vdmxkIF9fY25mbiBhbnkoc2hvcnQyIHgpOwppbnQgX19vdmxkIF9fY25mbiBhbnkoc2hvcnQzIHgpOwppbnQgX19vdmxkIF9fY25mbiBhbnkoc2hvcnQ0IHgpOwppbnQgX19vdmxkIF9fY25mbiBhbnkoc2hvcnQ4IHgpOwppbnQgX19vdmxkIF9fY25mbiBhbnkoc2hvcnQxNiB4KTsKaW50IF9fb3ZsZCBfX2NuZm4gYW55KGludCB4KTsKaW50IF9fb3ZsZCBfX2NuZm4gYW55KGludDIgeCk7CmludCBfX292bGQgX19jbmZuIGFueShpbnQzIHgpOwppbnQgX19vdmxkIF9fY25mbiBhbnkoaW50NCB4KTsKaW50IF9fb3ZsZCBfX2NuZm4gYW55KGludDggeCk7CmludCBfX292bGQgX19jbmZuIGFueShpbnQxNiB4KTsKaW50IF9fb3ZsZCBfX2NuZm4gYW55KGxvbmcgeCk7CmludCBfX292bGQgX19jbmZuIGFueShsb25nMiB4KTsKaW50IF9fb3ZsZCBfX2NuZm4gYW55KGxvbmczIHgpOwppbnQgX19vdmxkIF9fY25mbiBhbnkobG9uZzQgeCk7CmludCBfX292bGQgX19jbmZuIGFueShsb25nOCB4KTsKaW50IF9fb3ZsZCBfX2NuZm4gYW55KGxvbmcxNiB4KTsKCi8qKgogKiBSZXR1cm5zIDEgaWYgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0IGluIGFsbCBjb21wb25lbnRzCiAqIG9mIHggaXMgc2V0OyBvdGhlcndpc2UgcmV0dXJucyAwLgogKi8KaW50IF9fb3ZsZCBfX2NuZm4gYWxsKGNoYXIgeCk7CmludCBfX292bGQgX19jbmZuIGFsbChjaGFyMiB4KTsKaW50IF9fb3ZsZCBfX2NuZm4gYWxsKGNoYXIzIHgpOwppbnQgX19vdmxkIF9fY25mbiBhbGwoY2hhcjQgeCk7CmludCBfX292bGQgX19jbmZuIGFsbChjaGFyOCB4KTsKaW50IF9fb3ZsZCBfX2NuZm4gYWxsKGNoYXIxNiB4KTsKaW50IF9fb3ZsZCBfX2NuZm4gYWxsKHNob3J0IHgpOwppbnQgX19vdmxkIF9fY25mbiBhbGwoc2hvcnQyIHgpOwppbnQgX19vdmxkIF9fY25mbiBhbGwoc2hvcnQzIHgpOwppbnQgX19vdmxkIF9fY25mbiBhbGwoc2hvcnQ0IHgpOwppbnQgX19vdmxkIF9fY25mbiBhbGwoc2hvcnQ4IHgpOwppbnQgX19vdmxkIF9fY25mbiBhbGwoc2hvcnQxNiB4KTsKaW50IF9fb3ZsZCBfX2NuZm4gYWxsKGludCB4KTsKaW50IF9fb3ZsZCBfX2NuZm4gYWxsKGludDIgeCk7CmludCBfX292bGQgX19jbmZuIGFsbChpbnQzIHgpOwppbnQgX19vdmxkIF9fY25mbiBhbGwoaW50NCB4KTsKaW50IF9fb3ZsZCBfX2NuZm4gYWxsKGludDggeCk7CmludCBfX292bGQgX19jbmZuIGFsbChpbnQxNiB4KTsKaW50IF9fb3ZsZCBfX2NuZm4gYWxsKGxvbmcgeCk7CmludCBfX292bGQgX19jbmZuIGFsbChsb25nMiB4KTsKaW50IF9fb3ZsZCBfX2NuZm4gYWxsKGxvbmczIHgpOwppbnQgX19vdmxkIF9fY25mbiBhbGwobG9uZzQgeCk7CmludCBfX292bGQgX19jbmZuIGFsbChsb25nOCB4KTsKaW50IF9fb3ZsZCBfX2NuZm4gYWxsKGxvbmcxNiB4KTsKCi8qKgogKiBFYWNoIGJpdCBvZiB0aGUgcmVzdWx0IGlzIHRoZSBjb3JyZXNwb25kaW5nIGJpdCBvZiBhIGlmCiAqIHRoZSBjb3JyZXNwb25kaW5nIGJpdCBvZiBjIGlzIDAuIE90aGVyd2lzZSBpdCBpcyB0aGUKICogY29ycmVzcG9uZGluZyBiaXQgb2YgYi4KICovCmNoYXIgX19vdmxkIF9fY25mbiBiaXRzZWxlY3QoY2hhciBhLCBjaGFyIGIsIGNoYXIgYyk7CnVjaGFyIF9fb3ZsZCBfX2NuZm4gYml0c2VsZWN0KHVjaGFyIGEsIHVjaGFyIGIsIHVjaGFyIGMpOwpjaGFyMiBfX292bGQgX19jbmZuIGJpdHNlbGVjdChjaGFyMiBhLCBjaGFyMiBiLCBjaGFyMiBjKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gYml0c2VsZWN0KHVjaGFyMiBhLCB1Y2hhcjIgYiwgdWNoYXIyIGMpOwpjaGFyMyBfX292bGQgX19jbmZuIGJpdHNlbGVjdChjaGFyMyBhLCBjaGFyMyBiLCBjaGFyMyBjKTsKdWNoYXIzIF9fb3ZsZCBfX2NuZm4gYml0c2VsZWN0KHVjaGFyMyBhLCB1Y2hhcjMgYiwgdWNoYXIzIGMpOwpjaGFyNCBfX292bGQgX19jbmZuIGJpdHNlbGVjdChjaGFyNCBhLCBjaGFyNCBiLCBjaGFyNCBjKTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gYml0c2VsZWN0KHVjaGFyNCBhLCB1Y2hhcjQgYiwgdWNoYXI0IGMpOwpjaGFyOCBfX292bGQgX19jbmZuIGJpdHNlbGVjdChjaGFyOCBhLCBjaGFyOCBiLCBjaGFyOCBjKTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gYml0c2VsZWN0KHVjaGFyOCBhLCB1Y2hhcjggYiwgdWNoYXI4IGMpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBiaXRzZWxlY3QoY2hhcjE2IGEsIGNoYXIxNiBiLCBjaGFyMTYgYyk7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBiaXRzZWxlY3QodWNoYXIxNiBhLCB1Y2hhcjE2IGIsIHVjaGFyMTYgYyk7CnNob3J0IF9fb3ZsZCBfX2NuZm4gYml0c2VsZWN0KHNob3J0IGEsIHNob3J0IGIsIHNob3J0IGMpOwp1c2hvcnQgX19vdmxkIF9fY25mbiBiaXRzZWxlY3QodXNob3J0IGEsIHVzaG9ydCBiLCB1c2hvcnQgYyk7CnNob3J0MiBfX292bGQgX19jbmZuIGJpdHNlbGVjdChzaG9ydDIgYSwgc2hvcnQyIGIsIHNob3J0MiBjKTsKdXNob3J0MiBfX292bGQgX19jbmZuIGJpdHNlbGVjdCh1c2hvcnQyIGEsIHVzaG9ydDIgYiwgdXNob3J0MiBjKTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gYml0c2VsZWN0KHNob3J0MyBhLCBzaG9ydDMgYiwgc2hvcnQzIGMpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gYml0c2VsZWN0KHVzaG9ydDMgYSwgdXNob3J0MyBiLCB1c2hvcnQzIGMpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBiaXRzZWxlY3Qoc2hvcnQ0IGEsIHNob3J0NCBiLCBzaG9ydDQgYyk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBiaXRzZWxlY3QodXNob3J0NCBhLCB1c2hvcnQ0IGIsIHVzaG9ydDQgYyk7CnNob3J0OCBfX292bGQgX19jbmZuIGJpdHNlbGVjdChzaG9ydDggYSwgc2hvcnQ4IGIsIHNob3J0OCBjKTsKdXNob3J0OCBfX292bGQgX19jbmZuIGJpdHNlbGVjdCh1c2hvcnQ4IGEsIHVzaG9ydDggYiwgdXNob3J0OCBjKTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGJpdHNlbGVjdChzaG9ydDE2IGEsIHNob3J0MTYgYiwgc2hvcnQxNiBjKTsKdXNob3J0MTYgX19vdmxkIF9fY25mbiBiaXRzZWxlY3QodXNob3J0MTYgYSwgdXNob3J0MTYgYiwgdXNob3J0MTYgYyk7CmludCBfX292bGQgX19jbmZuIGJpdHNlbGVjdChpbnQgYSwgaW50IGIsIGludCBjKTsKdWludCBfX292bGQgX19jbmZuIGJpdHNlbGVjdCh1aW50IGEsIHVpbnQgYiwgdWludCBjKTsKaW50MiBfX292bGQgX19jbmZuIGJpdHNlbGVjdChpbnQyIGEsIGludDIgYiwgaW50MiBjKTsKdWludDIgX19vdmxkIF9fY25mbiBiaXRzZWxlY3QodWludDIgYSwgdWludDIgYiwgdWludDIgYyk7CmludDMgX19vdmxkIF9fY25mbiBiaXRzZWxlY3QoaW50MyBhLCBpbnQzIGIsIGludDMgYyk7CnVpbnQzIF9fb3ZsZCBfX2NuZm4gYml0c2VsZWN0KHVpbnQzIGEsIHVpbnQzIGIsIHVpbnQzIGMpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gYml0c2VsZWN0KGludDQgYSwgaW50NCBiLCBpbnQ0IGMpOwp1aW50NCBfX292bGQgX19jbmZuIGJpdHNlbGVjdCh1aW50NCBhLCB1aW50NCBiLCB1aW50NCBjKTsKaW50OCBfX292bGQgX19jbmZuIGJpdHNlbGVjdChpbnQ4IGEsIGludDggYiwgaW50OCBjKTsKdWludDggX19vdmxkIF9fY25mbiBiaXRzZWxlY3QodWludDggYSwgdWludDggYiwgdWludDggYyk7CmludDE2IF9fb3ZsZCBfX2NuZm4gYml0c2VsZWN0KGludDE2IGEsIGludDE2IGIsIGludDE2IGMpOwp1aW50MTYgX19vdmxkIF9fY25mbiBiaXRzZWxlY3QodWludDE2IGEsIHVpbnQxNiBiLCB1aW50MTYgYyk7CmxvbmcgX19vdmxkIF9fY25mbiBiaXRzZWxlY3QobG9uZyBhLCBsb25nIGIsIGxvbmcgYyk7CnVsb25nIF9fb3ZsZCBfX2NuZm4gYml0c2VsZWN0KHVsb25nIGEsIHVsb25nIGIsIHVsb25nIGMpOwpsb25nMiBfX292bGQgX19jbmZuIGJpdHNlbGVjdChsb25nMiBhLCBsb25nMiBiLCBsb25nMiBjKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gYml0c2VsZWN0KHVsb25nMiBhLCB1bG9uZzIgYiwgdWxvbmcyIGMpOwpsb25nMyBfX292bGQgX19jbmZuIGJpdHNlbGVjdChsb25nMyBhLCBsb25nMyBiLCBsb25nMyBjKTsKdWxvbmczIF9fb3ZsZCBfX2NuZm4gYml0c2VsZWN0KHVsb25nMyBhLCB1bG9uZzMgYiwgdWxvbmczIGMpOwpsb25nNCBfX292bGQgX19jbmZuIGJpdHNlbGVjdChsb25nNCBhLCBsb25nNCBiLCBsb25nNCBjKTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gYml0c2VsZWN0KHVsb25nNCBhLCB1bG9uZzQgYiwgdWxvbmc0IGMpOwpsb25nOCBfX292bGQgX19jbmZuIGJpdHNlbGVjdChsb25nOCBhLCBsb25nOCBiLCBsb25nOCBjKTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gYml0c2VsZWN0KHVsb25nOCBhLCB1bG9uZzggYiwgdWxvbmc4IGMpOwpsb25nMTYgX19vdmxkIF9fY25mbiBiaXRzZWxlY3QobG9uZzE2IGEsIGxvbmcxNiBiLCBsb25nMTYgYyk7CnVsb25nMTYgX19vdmxkIF9fY25mbiBiaXRzZWxlY3QodWxvbmcxNiBhLCB1bG9uZzE2IGIsIHVsb25nMTYgYyk7CmZsb2F0IF9fb3ZsZCBfX2NuZm4gYml0c2VsZWN0KGZsb2F0IGEsIGZsb2F0IGIsIGZsb2F0IGMpOwpmbG9hdDIgX19vdmxkIF9fY25mbiBiaXRzZWxlY3QoZmxvYXQyIGEsIGZsb2F0MiBiLCBmbG9hdDIgYyk7CmZsb2F0MyBfX292bGQgX19jbmZuIGJpdHNlbGVjdChmbG9hdDMgYSwgZmxvYXQzIGIsIGZsb2F0MyBjKTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gYml0c2VsZWN0KGZsb2F0NCBhLCBmbG9hdDQgYiwgZmxvYXQ0IGMpOwpmbG9hdDggX19vdmxkIF9fY25mbiBiaXRzZWxlY3QoZmxvYXQ4IGEsIGZsb2F0OCBiLCBmbG9hdDggYyk7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBiaXRzZWxlY3QoZmxvYXQxNiBhLCBmbG9hdDE2IGIsIGZsb2F0MTYgYyk7CiNpZmRlZiBjbF9raHJfZnA2NApkb3VibGUgX19vdmxkIF9fY25mbiBiaXRzZWxlY3QoZG91YmxlIGEsIGRvdWJsZSBiLCBkb3VibGUgYyk7CmRvdWJsZTIgX19vdmxkIF9fY25mbiBiaXRzZWxlY3QoZG91YmxlMiBhLCBkb3VibGUyIGIsIGRvdWJsZTIgYyk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBiaXRzZWxlY3QoZG91YmxlMyBhLCBkb3VibGUzIGIsIGRvdWJsZTMgYyk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiBiaXRzZWxlY3QoZG91YmxlNCBhLCBkb3VibGU0IGIsIGRvdWJsZTQgYyk7CmRvdWJsZTggX19vdmxkIF9fY25mbiBiaXRzZWxlY3QoZG91YmxlOCBhLCBkb3VibGU4IGIsIGRvdWJsZTggYyk7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gYml0c2VsZWN0KGRvdWJsZTE2IGEsIGRvdWJsZTE2IGIsIGRvdWJsZTE2IGMpOwojZW5kaWYgLy9jbF9raHJfZnA2NAojaWZkZWYgY2xfa2hyX2ZwMTYKaGFsZiBfX292bGQgX19jbmZuIGJpdHNlbGVjdChoYWxmIGEsIGhhbGYgYiwgaGFsZiBjKTsKaGFsZjIgX19vdmxkIF9fY25mbiBiaXRzZWxlY3QoaGFsZjIgYSwgaGFsZjIgYiwgaGFsZjIgYyk7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gYml0c2VsZWN0KGhhbGYzIGEsIGhhbGYzIGIsIGhhbGYzIGMpOwpoYWxmNCBfX292bGQgX19jbmZuIGJpdHNlbGVjdChoYWxmNCBhLCBoYWxmNCBiLCBoYWxmNCBjKTsKaGFsZjggX19vdmxkIF9fY25mbiBiaXRzZWxlY3QoaGFsZjggYSwgaGFsZjggYiwgaGFsZjggYyk7CmhhbGYxNiBfX292bGQgX19jbmZuIGJpdHNlbGVjdChoYWxmMTYgYSwgaGFsZjE2IGIsIGhhbGYxNiBjKTsKI2VuZGlmIC8vY2xfa2hyX2ZwMTYKCi8qKgogKiBGb3IgZWFjaCBjb21wb25lbnQgb2YgYSB2ZWN0b3IgdHlwZSwKICogcmVzdWx0W2ldID0gaWYgTVNCIG9mIGNbaV0gaXMgc2V0ID8gYltpXSA6IGFbaV0uCiAqIEZvciBhIHNjYWxhciB0eXBlLCByZXN1bHQgPSBjID8gYiA6IGEuCiAqIGIgYW5kIGEgbXVzdCBoYXZlIHRoZSBzYW1lIHR5cGUuCiAqIGMgbXVzdCBoYXZlIHRoZSBzYW1lIG51bWJlciBvZiBlbGVtZW50cyBhbmQgYml0cyBhcyBhLgogKi8KY2hhciBfX292bGQgX19jbmZuIHNlbGVjdChjaGFyIGEsIGNoYXIgYiwgY2hhciBjKTsKdWNoYXIgX19vdmxkIF9fY25mbiBzZWxlY3QodWNoYXIgYSwgdWNoYXIgYiwgY2hhciBjKTsKY2hhcjIgX19vdmxkIF9fY25mbiBzZWxlY3QoY2hhcjIgYSwgY2hhcjIgYiwgY2hhcjIgYyk7CnVjaGFyMiBfX292bGQgX19jbmZuIHNlbGVjdCh1Y2hhcjIgYSwgdWNoYXIyIGIsIGNoYXIyIGMpOwpjaGFyMyBfX292bGQgX19jbmZuIHNlbGVjdChjaGFyMyBhLCBjaGFyMyBiLCBjaGFyMyBjKTsKdWNoYXIzIF9fb3ZsZCBfX2NuZm4gc2VsZWN0KHVjaGFyMyBhLCB1Y2hhcjMgYiwgY2hhcjMgYyk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gc2VsZWN0KGNoYXI0IGEsIGNoYXI0IGIsIGNoYXI0IGMpOwp1Y2hhcjQgX19vdmxkIF9fY25mbiBzZWxlY3QodWNoYXI0IGEsIHVjaGFyNCBiLCBjaGFyNCBjKTsKY2hhcjggX19vdmxkIF9fY25mbiBzZWxlY3QoY2hhcjggYSwgY2hhcjggYiwgY2hhcjggYyk7CnVjaGFyOCBfX292bGQgX19jbmZuIHNlbGVjdCh1Y2hhcjggYSwgdWNoYXI4IGIsIGNoYXI4IGMpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBzZWxlY3QoY2hhcjE2IGEsIGNoYXIxNiBiLCBjaGFyMTYgYyk7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBzZWxlY3QodWNoYXIxNiBhLCB1Y2hhcjE2IGIsIGNoYXIxNiBjKTsKCnNob3J0IF9fb3ZsZCBfX2NuZm4gc2VsZWN0KHNob3J0IGEsIHNob3J0IGIsIHNob3J0IGMpOwp1c2hvcnQgX19vdmxkIF9fY25mbiBzZWxlY3QodXNob3J0IGEsIHVzaG9ydCBiLCBzaG9ydCBjKTsKc2hvcnQyIF9fb3ZsZCBfX2NuZm4gc2VsZWN0KHNob3J0MiBhLCBzaG9ydDIgYiwgc2hvcnQyIGMpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gc2VsZWN0KHVzaG9ydDIgYSwgdXNob3J0MiBiLCBzaG9ydDIgYyk7CnNob3J0MyBfX292bGQgX19jbmZuIHNlbGVjdChzaG9ydDMgYSwgc2hvcnQzIGIsIHNob3J0MyBjKTsKdXNob3J0MyBfX292bGQgX19jbmZuIHNlbGVjdCh1c2hvcnQzIGEsIHVzaG9ydDMgYiwgc2hvcnQzIGMpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBzZWxlY3Qoc2hvcnQ0IGEsIHNob3J0NCBiLCBzaG9ydDQgYyk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBzZWxlY3QodXNob3J0NCBhLCB1c2hvcnQ0IGIsIHNob3J0NCBjKTsKc2hvcnQ4IF9fb3ZsZCBfX2NuZm4gc2VsZWN0KHNob3J0OCBhLCBzaG9ydDggYiwgc2hvcnQ4IGMpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gc2VsZWN0KHVzaG9ydDggYSwgdXNob3J0OCBiLCBzaG9ydDggYyk7CnNob3J0MTYgX19vdmxkIF9fY25mbiBzZWxlY3Qoc2hvcnQxNiBhLCBzaG9ydDE2IGIsIHNob3J0MTYgYyk7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gc2VsZWN0KHVzaG9ydDE2IGEsIHVzaG9ydDE2IGIsIHNob3J0MTYgYyk7CgppbnQgX19vdmxkIF9fY25mbiBzZWxlY3QoaW50IGEsIGludCBiLCBpbnQgYyk7CnVpbnQgX19vdmxkIF9fY25mbiBzZWxlY3QodWludCBhLCB1aW50IGIsIGludCBjKTsKaW50MiBfX292bGQgX19jbmZuIHNlbGVjdChpbnQyIGEsIGludDIgYiwgaW50MiBjKTsKdWludDIgX19vdmxkIF9fY25mbiBzZWxlY3QodWludDIgYSwgdWludDIgYiwgaW50MiBjKTsKaW50MyBfX292bGQgX19jbmZuIHNlbGVjdChpbnQzIGEsIGludDMgYiwgaW50MyBjKTsKdWludDMgX19vdmxkIF9fY25mbiBzZWxlY3QodWludDMgYSwgdWludDMgYiwgaW50MyBjKTsKaW50NCBfX292bGQgX19jbmZuIHNlbGVjdChpbnQ0IGEsIGludDQgYiwgaW50NCBjKTsKdWludDQgX19vdmxkIF9fY25mbiBzZWxlY3QodWludDQgYSwgdWludDQgYiwgaW50NCBjKTsKaW50OCBfX292bGQgX19jbmZuIHNlbGVjdChpbnQ4IGEsIGludDggYiwgaW50OCBjKTsKdWludDggX19vdmxkIF9fY25mbiBzZWxlY3QodWludDggYSwgdWludDggYiwgaW50OCBjKTsKaW50MTYgX19vdmxkIF9fY25mbiBzZWxlY3QoaW50MTYgYSwgaW50MTYgYiwgaW50MTYgYyk7CnVpbnQxNiBfX292bGQgX19jbmZuIHNlbGVjdCh1aW50MTYgYSwgdWludDE2IGIsIGludDE2IGMpOwpmbG9hdCBfX292bGQgX19jbmZuIHNlbGVjdChmbG9hdCBhLCBmbG9hdCBiLCBpbnQgYyk7CmZsb2F0MiBfX292bGQgX19jbmZuIHNlbGVjdChmbG9hdDIgYSwgZmxvYXQyIGIsIGludDIgYyk7CmZsb2F0MyBfX292bGQgX19jbmZuIHNlbGVjdChmbG9hdDMgYSwgZmxvYXQzIGIsIGludDMgYyk7CmZsb2F0NCBfX292bGQgX19jbmZuIHNlbGVjdChmbG9hdDQgYSwgZmxvYXQ0IGIsIGludDQgYyk7CmZsb2F0OCBfX292bGQgX19jbmZuIHNlbGVjdChmbG9hdDggYSwgZmxvYXQ4IGIsIGludDggYyk7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBzZWxlY3QoZmxvYXQxNiBhLCBmbG9hdDE2IGIsIGludDE2IGMpOwoKbG9uZyBfX292bGQgX19jbmZuIHNlbGVjdChsb25nIGEsIGxvbmcgYiwgbG9uZyBjKTsKdWxvbmcgX19vdmxkIF9fY25mbiBzZWxlY3QodWxvbmcgYSwgdWxvbmcgYiwgbG9uZyBjKTsKbG9uZzIgX19vdmxkIF9fY25mbiBzZWxlY3QobG9uZzIgYSwgbG9uZzIgYiwgbG9uZzIgYyk7CnVsb25nMiBfX292bGQgX19jbmZuIHNlbGVjdCh1bG9uZzIgYSwgdWxvbmcyIGIsIGxvbmcyIGMpOwpsb25nMyBfX292bGQgX19jbmZuIHNlbGVjdChsb25nMyBhLCBsb25nMyBiLCBsb25nMyBjKTsKdWxvbmczIF9fb3ZsZCBfX2NuZm4gc2VsZWN0KHVsb25nMyBhLCB1bG9uZzMgYiwgbG9uZzMgYyk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gc2VsZWN0KGxvbmc0IGEsIGxvbmc0IGIsIGxvbmc0IGMpOwp1bG9uZzQgX19vdmxkIF9fY25mbiBzZWxlY3QodWxvbmc0IGEsIHVsb25nNCBiLCBsb25nNCBjKTsKbG9uZzggX19vdmxkIF9fY25mbiBzZWxlY3QobG9uZzggYSwgbG9uZzggYiwgbG9uZzggYyk7CnVsb25nOCBfX292bGQgX19jbmZuIHNlbGVjdCh1bG9uZzggYSwgdWxvbmc4IGIsIGxvbmc4IGMpOwpsb25nMTYgX19vdmxkIF9fY25mbiBzZWxlY3QobG9uZzE2IGEsIGxvbmcxNiBiLCBsb25nMTYgYyk7CnVsb25nMTYgX19vdmxkIF9fY25mbiBzZWxlY3QodWxvbmcxNiBhLCB1bG9uZzE2IGIsIGxvbmcxNiBjKTsKCmNoYXIgX19vdmxkIF9fY25mbiBzZWxlY3QoY2hhciBhLCBjaGFyIGIsIHVjaGFyIGMpOwp1Y2hhciBfX292bGQgX19jbmZuIHNlbGVjdCh1Y2hhciBhLCB1Y2hhciBiLCB1Y2hhciBjKTsKY2hhcjIgX19vdmxkIF9fY25mbiBzZWxlY3QoY2hhcjIgYSwgY2hhcjIgYiwgdWNoYXIyIGMpOwp1Y2hhcjIgX19vdmxkIF9fY25mbiBzZWxlY3QodWNoYXIyIGEsIHVjaGFyMiBiLCB1Y2hhcjIgYyk7CmNoYXIzIF9fb3ZsZCBfX2NuZm4gc2VsZWN0KGNoYXIzIGEsIGNoYXIzIGIsIHVjaGFyMyBjKTsKdWNoYXIzIF9fb3ZsZCBfX2NuZm4gc2VsZWN0KHVjaGFyMyBhLCB1Y2hhcjMgYiwgdWNoYXIzIGMpOwpjaGFyNCBfX292bGQgX19jbmZuIHNlbGVjdChjaGFyNCBhLCBjaGFyNCBiLCB1Y2hhcjQgYyk7CnVjaGFyNCBfX292bGQgX19jbmZuIHNlbGVjdCh1Y2hhcjQgYSwgdWNoYXI0IGIsIHVjaGFyNCBjKTsKY2hhcjggX19vdmxkIF9fY25mbiBzZWxlY3QoY2hhcjggYSwgY2hhcjggYiwgdWNoYXI4IGMpOwp1Y2hhcjggX19vdmxkIF9fY25mbiBzZWxlY3QodWNoYXI4IGEsIHVjaGFyOCBiLCB1Y2hhcjggYyk7CmNoYXIxNiBfX292bGQgX19jbmZuIHNlbGVjdChjaGFyMTYgYSwgY2hhcjE2IGIsIHVjaGFyMTYgYyk7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBzZWxlY3QodWNoYXIxNiBhLCB1Y2hhcjE2IGIsIHVjaGFyMTYgYyk7CgpzaG9ydCBfX292bGQgX19jbmZuIHNlbGVjdChzaG9ydCBhLCBzaG9ydCBiLCB1c2hvcnQgYyk7CnVzaG9ydCBfX292bGQgX19jbmZuIHNlbGVjdCh1c2hvcnQgYSwgdXNob3J0IGIsIHVzaG9ydCBjKTsKc2hvcnQyIF9fb3ZsZCBfX2NuZm4gc2VsZWN0KHNob3J0MiBhLCBzaG9ydDIgYiwgdXNob3J0MiBjKTsKdXNob3J0MiBfX292bGQgX19jbmZuIHNlbGVjdCh1c2hvcnQyIGEsIHVzaG9ydDIgYiwgdXNob3J0MiBjKTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gc2VsZWN0KHNob3J0MyBhLCBzaG9ydDMgYiwgdXNob3J0MyBjKTsKdXNob3J0MyBfX292bGQgX19jbmZuIHNlbGVjdCh1c2hvcnQzIGEsIHVzaG9ydDMgYiwgdXNob3J0MyBjKTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gc2VsZWN0KHNob3J0NCBhLCBzaG9ydDQgYiwgdXNob3J0NCBjKTsKdXNob3J0NCBfX292bGQgX19jbmZuIHNlbGVjdCh1c2hvcnQ0IGEsIHVzaG9ydDQgYiwgdXNob3J0NCBjKTsKc2hvcnQ4IF9fb3ZsZCBfX2NuZm4gc2VsZWN0KHNob3J0OCBhLCBzaG9ydDggYiwgdXNob3J0OCBjKTsKdXNob3J0OCBfX292bGQgX19jbmZuIHNlbGVjdCh1c2hvcnQ4IGEsIHVzaG9ydDggYiwgdXNob3J0OCBjKTsKc2hvcnQxNiBfX292bGQgX19jbmZuIHNlbGVjdChzaG9ydDE2IGEsIHNob3J0MTYgYiwgdXNob3J0MTYgYyk7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gc2VsZWN0KHVzaG9ydDE2IGEsIHVzaG9ydDE2IGIsIHVzaG9ydDE2IGMpOwoKaW50IF9fb3ZsZCBfX2NuZm4gc2VsZWN0KGludCBhLCBpbnQgYiwgdWludCBjKTsKdWludCBfX292bGQgX19jbmZuIHNlbGVjdCh1aW50IGEsIHVpbnQgYiwgdWludCBjKTsKaW50MiBfX292bGQgX19jbmZuIHNlbGVjdChpbnQyIGEsIGludDIgYiwgdWludDIgYyk7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gc2VsZWN0KHVpbnQyIGEsIHVpbnQyIGIsIHVpbnQyIGMpOwppbnQzIF9fb3ZsZCBfX2NuZm4gc2VsZWN0KGludDMgYSwgaW50MyBiLCB1aW50MyBjKTsKdWludDMgX19vdmxkIF9fY25mbiBzZWxlY3QodWludDMgYSwgdWludDMgYiwgdWludDMgYyk7CmludDQgX19vdmxkIF9fY25mbiBzZWxlY3QoaW50NCBhLCBpbnQ0IGIsIHVpbnQ0IGMpOwp1aW50NCBfX292bGQgX19jbmZuIHNlbGVjdCh1aW50NCBhLCB1aW50NCBiLCB1aW50NCBjKTsKaW50OCBfX292bGQgX19jbmZuIHNlbGVjdChpbnQ4IGEsIGludDggYiwgdWludDggYyk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gc2VsZWN0KHVpbnQ4IGEsIHVpbnQ4IGIsIHVpbnQ4IGMpOwppbnQxNiBfX292bGQgX19jbmZuIHNlbGVjdChpbnQxNiBhLCBpbnQxNiBiLCB1aW50MTYgYyk7CnVpbnQxNiBfX292bGQgX19jbmZuIHNlbGVjdCh1aW50MTYgYSwgdWludDE2IGIsIHVpbnQxNiBjKTsKZmxvYXQgX19vdmxkIF9fY25mbiBzZWxlY3QoZmxvYXQgYSwgZmxvYXQgYiwgdWludCBjKTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gc2VsZWN0KGZsb2F0MiBhLCBmbG9hdDIgYiwgdWludDIgYyk7CmZsb2F0MyBfX292bGQgX19jbmZuIHNlbGVjdChmbG9hdDMgYSwgZmxvYXQzIGIsIHVpbnQzIGMpOwpmbG9hdDQgX19vdmxkIF9fY25mbiBzZWxlY3QoZmxvYXQ0IGEsIGZsb2F0NCBiLCB1aW50NCBjKTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gc2VsZWN0KGZsb2F0OCBhLCBmbG9hdDggYiwgdWludDggYyk7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBzZWxlY3QoZmxvYXQxNiBhLCBmbG9hdDE2IGIsIHVpbnQxNiBjKTsKCmxvbmcgX19vdmxkIF9fY25mbiBzZWxlY3QobG9uZyBhLCBsb25nIGIsIHVsb25nIGMpOwp1bG9uZyBfX292bGQgX19jbmZuIHNlbGVjdCh1bG9uZyBhLCB1bG9uZyBiLCB1bG9uZyBjKTsKbG9uZzIgX19vdmxkIF9fY25mbiBzZWxlY3QobG9uZzIgYSwgbG9uZzIgYiwgdWxvbmcyIGMpOwp1bG9uZzIgX19vdmxkIF9fY25mbiBzZWxlY3QodWxvbmcyIGEsIHVsb25nMiBiLCB1bG9uZzIgYyk7CmxvbmczIF9fb3ZsZCBfX2NuZm4gc2VsZWN0KGxvbmczIGEsIGxvbmczIGIsIHVsb25nMyBjKTsKdWxvbmczIF9fb3ZsZCBfX2NuZm4gc2VsZWN0KHVsb25nMyBhLCB1bG9uZzMgYiwgdWxvbmczIGMpOwpsb25nNCBfX292bGQgX19jbmZuIHNlbGVjdChsb25nNCBhLCBsb25nNCBiLCB1bG9uZzQgYyk7CnVsb25nNCBfX292bGQgX19jbmZuIHNlbGVjdCh1bG9uZzQgYSwgdWxvbmc0IGIsIHVsb25nNCBjKTsKbG9uZzggX19vdmxkIF9fY25mbiBzZWxlY3QobG9uZzggYSwgbG9uZzggYiwgdWxvbmc4IGMpOwp1bG9uZzggX19vdmxkIF9fY25mbiBzZWxlY3QodWxvbmc4IGEsIHVsb25nOCBiLCB1bG9uZzggYyk7CmxvbmcxNiBfX292bGQgX19jbmZuIHNlbGVjdChsb25nMTYgYSwgbG9uZzE2IGIsIHVsb25nMTYgYyk7CnVsb25nMTYgX19vdmxkIF9fY25mbiBzZWxlY3QodWxvbmcxNiBhLCB1bG9uZzE2IGIsIHVsb25nMTYgYyk7CgojaWZkZWYgY2xfa2hyX2ZwNjQKZG91YmxlIF9fb3ZsZCBfX2NuZm4gc2VsZWN0KGRvdWJsZSBhLCBkb3VibGUgYiwgbG9uZyBjKTsKZG91YmxlMiBfX292bGQgX19jbmZuIHNlbGVjdChkb3VibGUyIGEsIGRvdWJsZTIgYiwgbG9uZzIgYyk7CmRvdWJsZTMgX19vdmxkIF9fY25mbiBzZWxlY3QoZG91YmxlMyBhLCBkb3VibGUzIGIsIGxvbmczIGMpOwpkb3VibGU0IF9fb3ZsZCBfX2NuZm4gc2VsZWN0KGRvdWJsZTQgYSwgZG91YmxlNCBiLCBsb25nNCBjKTsKZG91YmxlOCBfX292bGQgX19jbmZuIHNlbGVjdChkb3VibGU4IGEsIGRvdWJsZTggYiwgbG9uZzggYyk7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gc2VsZWN0KGRvdWJsZTE2IGEsIGRvdWJsZTE2IGIsIGxvbmcxNiBjKTsKZG91YmxlIF9fb3ZsZCBfX2NuZm4gc2VsZWN0KGRvdWJsZSBhLCBkb3VibGUgYiwgdWxvbmcgYyk7CmRvdWJsZTIgX19vdmxkIF9fY25mbiBzZWxlY3QoZG91YmxlMiBhLCBkb3VibGUyIGIsIHVsb25nMiBjKTsKZG91YmxlMyBfX292bGQgX19jbmZuIHNlbGVjdChkb3VibGUzIGEsIGRvdWJsZTMgYiwgdWxvbmczIGMpOwpkb3VibGU0IF9fb3ZsZCBfX2NuZm4gc2VsZWN0KGRvdWJsZTQgYSwgZG91YmxlNCBiLCB1bG9uZzQgYyk7CmRvdWJsZTggX19vdmxkIF9fY25mbiBzZWxlY3QoZG91YmxlOCBhLCBkb3VibGU4IGIsIHVsb25nOCBjKTsKZG91YmxlMTYgX19vdmxkIF9fY25mbiBzZWxlY3QoZG91YmxlMTYgYSwgZG91YmxlMTYgYiwgdWxvbmcxNiBjKTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKI2lmZGVmIGNsX2tocl9mcDE2CmhhbGYgX19vdmxkIF9fY25mbiBzZWxlY3QoaGFsZiBhLCBoYWxmIGIsIHNob3J0IGMpOwpoYWxmMiBfX292bGQgX19jbmZuIHNlbGVjdChoYWxmMiBhLCBoYWxmMiBiLCBzaG9ydDIgYyk7CmhhbGYzIF9fb3ZsZCBfX2NuZm4gc2VsZWN0KGhhbGYzIGEsIGhhbGYzIGIsIHNob3J0MyBjKTsKaGFsZjQgX19vdmxkIF9fY25mbiBzZWxlY3QoaGFsZjQgYSwgaGFsZjQgYiwgc2hvcnQ0IGMpOwpoYWxmOCBfX292bGQgX19jbmZuIHNlbGVjdChoYWxmOCBhLCBoYWxmOCBiLCBzaG9ydDggYyk7CmhhbGYxNiBfX292bGQgX19jbmZuIHNlbGVjdChoYWxmMTYgYSwgaGFsZjE2IGIsIHNob3J0MTYgYyk7CmhhbGYgX19vdmxkIF9fY25mbiBzZWxlY3QoaGFsZiBhLCBoYWxmIGIsIHVzaG9ydCBjKTsKaGFsZjIgX19vdmxkIF9fY25mbiBzZWxlY3QoaGFsZjIgYSwgaGFsZjIgYiwgdXNob3J0MiBjKTsKaGFsZjMgX19vdmxkIF9fY25mbiBzZWxlY3QoaGFsZjMgYSwgaGFsZjMgYiwgdXNob3J0MyBjKTsKaGFsZjQgX19vdmxkIF9fY25mbiBzZWxlY3QoaGFsZjQgYSwgaGFsZjQgYiwgdXNob3J0NCBjKTsKaGFsZjggX19vdmxkIF9fY25mbiBzZWxlY3QoaGFsZjggYSwgaGFsZjggYiwgdXNob3J0OCBjKTsKaGFsZjE2IF9fb3ZsZCBfX2NuZm4gc2VsZWN0KGhhbGYxNiBhLCBoYWxmMTYgYiwgdXNob3J0MTYgYyk7CiNlbmRpZiAvL2NsX2tocl9mcDE2CgovLyBPcGVuQ0wgdjEuMSBzNi4xMS43LCB2MS4yIHM2LjEyLjcsIHYyLjAgczYuMTMuNyAtIFZlY3RvciBEYXRhIExvYWQgYW5kIFN0b3JlIEZ1bmN0aW9ucwovLyBPcGVuQ0wgZXh0ZW5zaW9ucyB2MS4xIHM5LjYuNiwgdjEuMiBzOS41LjYsIHYyLjAgczkuNC42IC0gVmVjdG9yIERhdGEgTG9hZCBhbmQgU3RvcmUgRnVuY3Rpb25zIGZvciBIYWxmIFR5cGUKLyoqCiAqIFVzZSBnZW5lcmljIHR5cGUgZ2VudHlwZSB0byBpbmRpY2F0ZSB0aGUgYnVpbHQtaW4gZGF0YSB0eXBlcwogKiBjaGFyLCB1Y2hhciwgc2hvcnQsIHVzaG9ydCwgaW50LCB1aW50LCBsb25nLCB1bG9uZywgZmxvYXQsCiAqIGRvdWJsZSBvciBoYWxmLgogKgogKiB2bG9hZG4gcmV0dXJuIHNpemVvZiAoZ2VudHlwZW4pIGJ5dGVzIG9mIGRhdGEgcmVhZCBmcm9tIGFkZHJlc3MgKHAgKyAob2Zmc2V0ICogbikpLgogKgogKiB2c3RvcmVuIHdyaXRlIHNpemVvZiAoZ2VudHlwZW4pIGJ5dGVzIGdpdmVuIGJ5IGRhdGEgdG8gYWRkcmVzcyAocCArIChvZmZzZXQgKiBuKSkuCiAqCiAqIFRoZSBhZGRyZXNzIGNvbXB1dGVkIGFzIChwICsgKG9mZnNldCAqIG4pKSBtdXN0IGJlCiAqIDgtYml0IGFsaWduZWQgaWYgZ2VudHlwZSBpcyBjaGFyLCB1Y2hhcjsKICogMTYtYml0IGFsaWduZWQgaWYgZ2VudHlwZSBpcyBzaG9ydCwgdXNob3J0LCBoYWxmOwogKiAzMi1iaXQgYWxpZ25lZCBpZiBnZW50eXBlIGlzIGludCwgdWludCwgZmxvYXQ7CiAqIDY0LWJpdCBhbGlnbmVkIGlmIGdlbnR5cGUgaXMgbG9uZywgdWxvbmcsIGRvdWJsZS4KICovCgpjaGFyMiBfX292bGQgdmxvYWQyKHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fY29uc3RhbnQgY2hhciAqcCk7CnVjaGFyMiBfX292bGQgdmxvYWQyKHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fY29uc3RhbnQgdWNoYXIgKnApOwpzaG9ydDIgX19vdmxkIHZsb2FkMihzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2NvbnN0YW50IHNob3J0ICpwKTsKdXNob3J0MiBfX292bGQgdmxvYWQyKHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fY29uc3RhbnQgdXNob3J0ICpwKTsKaW50MiBfX292bGQgdmxvYWQyKHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fY29uc3RhbnQgaW50ICpwKTsKdWludDIgX19vdmxkIHZsb2FkMihzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2NvbnN0YW50IHVpbnQgKnApOwpsb25nMiBfX292bGQgdmxvYWQyKHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fY29uc3RhbnQgbG9uZyAqcCk7CnVsb25nMiBfX292bGQgdmxvYWQyKHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fY29uc3RhbnQgdWxvbmcgKnApOwpmbG9hdDIgX19vdmxkIHZsb2FkMihzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2NvbnN0YW50IGZsb2F0ICpwKTsKY2hhcjMgX19vdmxkIHZsb2FkMyhzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2NvbnN0YW50IGNoYXIgKnApOwp1Y2hhcjMgX19vdmxkIHZsb2FkMyhzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2NvbnN0YW50IHVjaGFyICpwKTsKc2hvcnQzIF9fb3ZsZCB2bG9hZDMoc2l6ZV90IG9mZnNldCwgY29uc3QgX19jb25zdGFudCBzaG9ydCAqcCk7CnVzaG9ydDMgX19vdmxkIHZsb2FkMyhzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2NvbnN0YW50IHVzaG9ydCAqcCk7CmludDMgX19vdmxkIHZsb2FkMyhzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2NvbnN0YW50IGludCAqcCk7CnVpbnQzIF9fb3ZsZCB2bG9hZDMoc2l6ZV90IG9mZnNldCwgY29uc3QgX19jb25zdGFudCB1aW50ICpwKTsKbG9uZzMgX19vdmxkIHZsb2FkMyhzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2NvbnN0YW50IGxvbmcgKnApOwp1bG9uZzMgX19vdmxkIHZsb2FkMyhzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2NvbnN0YW50IHVsb25nICpwKTsKZmxvYXQzIF9fb3ZsZCB2bG9hZDMoc2l6ZV90IG9mZnNldCwgY29uc3QgX19jb25zdGFudCBmbG9hdCAqcCk7CmNoYXI0IF9fb3ZsZCB2bG9hZDQoc2l6ZV90IG9mZnNldCwgY29uc3QgX19jb25zdGFudCBjaGFyICpwKTsKdWNoYXI0IF9fb3ZsZCB2bG9hZDQoc2l6ZV90IG9mZnNldCwgY29uc3QgX19jb25zdGFudCB1Y2hhciAqcCk7CnNob3J0NCBfX292bGQgdmxvYWQ0KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fY29uc3RhbnQgc2hvcnQgKnApOwp1c2hvcnQ0IF9fb3ZsZCB2bG9hZDQoc2l6ZV90IG9mZnNldCwgY29uc3QgX19jb25zdGFudCB1c2hvcnQgKnApOwppbnQ0IF9fb3ZsZCB2bG9hZDQoc2l6ZV90IG9mZnNldCwgY29uc3QgX19jb25zdGFudCBpbnQgKnApOwp1aW50NCBfX292bGQgdmxvYWQ0KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fY29uc3RhbnQgdWludCAqcCk7Cmxvbmc0IF9fb3ZsZCB2bG9hZDQoc2l6ZV90IG9mZnNldCwgY29uc3QgX19jb25zdGFudCBsb25nICpwKTsKdWxvbmc0IF9fb3ZsZCB2bG9hZDQoc2l6ZV90IG9mZnNldCwgY29uc3QgX19jb25zdGFudCB1bG9uZyAqcCk7CmZsb2F0NCBfX292bGQgdmxvYWQ0KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fY29uc3RhbnQgZmxvYXQgKnApOwpjaGFyOCBfX292bGQgdmxvYWQ4KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fY29uc3RhbnQgY2hhciAqcCk7CnVjaGFyOCBfX292bGQgdmxvYWQ4KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fY29uc3RhbnQgdWNoYXIgKnApOwpzaG9ydDggX19vdmxkIHZsb2FkOChzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2NvbnN0YW50IHNob3J0ICpwKTsKdXNob3J0OCBfX292bGQgdmxvYWQ4KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fY29uc3RhbnQgdXNob3J0ICpwKTsKaW50OCBfX292bGQgdmxvYWQ4KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fY29uc3RhbnQgaW50ICpwKTsKdWludDggX19vdmxkIHZsb2FkOChzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2NvbnN0YW50IHVpbnQgKnApOwpsb25nOCBfX292bGQgdmxvYWQ4KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fY29uc3RhbnQgbG9uZyAqcCk7CnVsb25nOCBfX292bGQgdmxvYWQ4KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fY29uc3RhbnQgdWxvbmcgKnApOwpmbG9hdDggX19vdmxkIHZsb2FkOChzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2NvbnN0YW50IGZsb2F0ICpwKTsKY2hhcjE2IF9fb3ZsZCB2bG9hZDE2KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fY29uc3RhbnQgY2hhciAqcCk7CnVjaGFyMTYgX19vdmxkIHZsb2FkMTYoc2l6ZV90IG9mZnNldCwgY29uc3QgX19jb25zdGFudCB1Y2hhciAqcCk7CnNob3J0MTYgX19vdmxkIHZsb2FkMTYoc2l6ZV90IG9mZnNldCwgY29uc3QgX19jb25zdGFudCBzaG9ydCAqcCk7CnVzaG9ydDE2IF9fb3ZsZCB2bG9hZDE2KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fY29uc3RhbnQgdXNob3J0ICpwKTsKaW50MTYgX19vdmxkIHZsb2FkMTYoc2l6ZV90IG9mZnNldCwgY29uc3QgX19jb25zdGFudCBpbnQgKnApOwp1aW50MTYgX19vdmxkIHZsb2FkMTYoc2l6ZV90IG9mZnNldCwgY29uc3QgX19jb25zdGFudCB1aW50ICpwKTsKbG9uZzE2IF9fb3ZsZCB2bG9hZDE2KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fY29uc3RhbnQgbG9uZyAqcCk7CnVsb25nMTYgX19vdmxkIHZsb2FkMTYoc2l6ZV90IG9mZnNldCwgY29uc3QgX19jb25zdGFudCB1bG9uZyAqcCk7CmZsb2F0MTYgX19vdmxkIHZsb2FkMTYoc2l6ZV90IG9mZnNldCwgY29uc3QgX19jb25zdGFudCBmbG9hdCAqcCk7CiNpZmRlZiBjbF9raHJfZnA2NApkb3VibGUyIF9fb3ZsZCB2bG9hZDIoc2l6ZV90IG9mZnNldCwgY29uc3QgX19jb25zdGFudCBkb3VibGUgKnApOwpkb3VibGUzIF9fb3ZsZCB2bG9hZDMoc2l6ZV90IG9mZnNldCwgY29uc3QgX19jb25zdGFudCBkb3VibGUgKnApOwpkb3VibGU0IF9fb3ZsZCB2bG9hZDQoc2l6ZV90IG9mZnNldCwgY29uc3QgX19jb25zdGFudCBkb3VibGUgKnApOwpkb3VibGU4IF9fb3ZsZCB2bG9hZDgoc2l6ZV90IG9mZnNldCwgY29uc3QgX19jb25zdGFudCBkb3VibGUgKnApOwpkb3VibGUxNiBfX292bGQgdmxvYWQxNihzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2NvbnN0YW50IGRvdWJsZSAqcCk7CiNlbmRpZiAvL2NsX2tocl9mcDY0CgojaWZkZWYgY2xfa2hyX2ZwMTYKaGFsZiBfX292bGQgdmxvYWQoc2l6ZV90IG9mZnNldCwgY29uc3QgX19jb25zdGFudCBoYWxmICpwKTsKaGFsZjIgX19vdmxkIHZsb2FkMihzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2NvbnN0YW50IGhhbGYgKnApOwpoYWxmMyBfX292bGQgdmxvYWQzKHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fY29uc3RhbnQgaGFsZiAqcCk7CmhhbGY0IF9fb3ZsZCB2bG9hZDQoc2l6ZV90IG9mZnNldCwgY29uc3QgX19jb25zdGFudCBoYWxmICpwKTsKaGFsZjggX19vdmxkIHZsb2FkOChzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2NvbnN0YW50IGhhbGYgKnApOwpoYWxmMTYgX19vdmxkIHZsb2FkMTYoc2l6ZV90IG9mZnNldCwgY29uc3QgX19jb25zdGFudCBoYWxmICpwKTsKI2VuZGlmIC8vY2xfa2hyX2ZwMTYKCiNpZiBkZWZpbmVkKF9fb3BlbmNsX2NfZ2VuZXJpY19hZGRyZXNzX3NwYWNlKQpjaGFyMiBfX292bGQgdmxvYWQyKHNpemVfdCBvZmZzZXQsIGNvbnN0IGNoYXIgKnApOwp1Y2hhcjIgX19vdmxkIHZsb2FkMihzaXplX3Qgb2Zmc2V0LCBjb25zdCB1Y2hhciAqcCk7CnNob3J0MiBfX292bGQgdmxvYWQyKHNpemVfdCBvZmZzZXQsIGNvbnN0IHNob3J0ICpwKTsKdXNob3J0MiBfX292bGQgdmxvYWQyKHNpemVfdCBvZmZzZXQsIGNvbnN0IHVzaG9ydCAqcCk7CmludDIgX19vdmxkIHZsb2FkMihzaXplX3Qgb2Zmc2V0LCBjb25zdCBpbnQgKnApOwp1aW50MiBfX292bGQgdmxvYWQyKHNpemVfdCBvZmZzZXQsIGNvbnN0IHVpbnQgKnApOwpsb25nMiBfX292bGQgdmxvYWQyKHNpemVfdCBvZmZzZXQsIGNvbnN0IGxvbmcgKnApOwp1bG9uZzIgX19vdmxkIHZsb2FkMihzaXplX3Qgb2Zmc2V0LCBjb25zdCB1bG9uZyAqcCk7CmZsb2F0MiBfX292bGQgdmxvYWQyKHNpemVfdCBvZmZzZXQsIGNvbnN0IGZsb2F0ICpwKTsKY2hhcjMgX19vdmxkIHZsb2FkMyhzaXplX3Qgb2Zmc2V0LCBjb25zdCBjaGFyICpwKTsKdWNoYXIzIF9fb3ZsZCB2bG9hZDMoc2l6ZV90IG9mZnNldCwgY29uc3QgdWNoYXIgKnApOwpzaG9ydDMgX19vdmxkIHZsb2FkMyhzaXplX3Qgb2Zmc2V0LCBjb25zdCBzaG9ydCAqcCk7CnVzaG9ydDMgX19vdmxkIHZsb2FkMyhzaXplX3Qgb2Zmc2V0LCBjb25zdCB1c2hvcnQgKnApOwppbnQzIF9fb3ZsZCB2bG9hZDMoc2l6ZV90IG9mZnNldCwgY29uc3QgaW50ICpwKTsKdWludDMgX19vdmxkIHZsb2FkMyhzaXplX3Qgb2Zmc2V0LCBjb25zdCB1aW50ICpwKTsKbG9uZzMgX19vdmxkIHZsb2FkMyhzaXplX3Qgb2Zmc2V0LCBjb25zdCBsb25nICpwKTsKdWxvbmczIF9fb3ZsZCB2bG9hZDMoc2l6ZV90IG9mZnNldCwgY29uc3QgdWxvbmcgKnApOwpmbG9hdDMgX19vdmxkIHZsb2FkMyhzaXplX3Qgb2Zmc2V0LCBjb25zdCBmbG9hdCAqcCk7CmNoYXI0IF9fb3ZsZCB2bG9hZDQoc2l6ZV90IG9mZnNldCwgY29uc3QgY2hhciAqcCk7CnVjaGFyNCBfX292bGQgdmxvYWQ0KHNpemVfdCBvZmZzZXQsIGNvbnN0IHVjaGFyICpwKTsKc2hvcnQ0IF9fb3ZsZCB2bG9hZDQoc2l6ZV90IG9mZnNldCwgY29uc3Qgc2hvcnQgKnApOwp1c2hvcnQ0IF9fb3ZsZCB2bG9hZDQoc2l6ZV90IG9mZnNldCwgY29uc3QgdXNob3J0ICpwKTsKaW50NCBfX292bGQgdmxvYWQ0KHNpemVfdCBvZmZzZXQsIGNvbnN0IGludCAqcCk7CnVpbnQ0IF9fb3ZsZCB2bG9hZDQoc2l6ZV90IG9mZnNldCwgY29uc3QgdWludCAqcCk7Cmxvbmc0IF9fb3ZsZCB2bG9hZDQoc2l6ZV90IG9mZnNldCwgY29uc3QgbG9uZyAqcCk7CnVsb25nNCBfX292bGQgdmxvYWQ0KHNpemVfdCBvZmZzZXQsIGNvbnN0IHVsb25nICpwKTsKZmxvYXQ0IF9fb3ZsZCB2bG9hZDQoc2l6ZV90IG9mZnNldCwgY29uc3QgZmxvYXQgKnApOwpjaGFyOCBfX292bGQgdmxvYWQ4KHNpemVfdCBvZmZzZXQsIGNvbnN0IGNoYXIgKnApOwp1Y2hhcjggX19vdmxkIHZsb2FkOChzaXplX3Qgb2Zmc2V0LCBjb25zdCB1Y2hhciAqcCk7CnNob3J0OCBfX292bGQgdmxvYWQ4KHNpemVfdCBvZmZzZXQsIGNvbnN0IHNob3J0ICpwKTsKdXNob3J0OCBfX292bGQgdmxvYWQ4KHNpemVfdCBvZmZzZXQsIGNvbnN0IHVzaG9ydCAqcCk7CmludDggX19vdmxkIHZsb2FkOChzaXplX3Qgb2Zmc2V0LCBjb25zdCBpbnQgKnApOwp1aW50OCBfX292bGQgdmxvYWQ4KHNpemVfdCBvZmZzZXQsIGNvbnN0IHVpbnQgKnApOwpsb25nOCBfX292bGQgdmxvYWQ4KHNpemVfdCBvZmZzZXQsIGNvbnN0IGxvbmcgKnApOwp1bG9uZzggX19vdmxkIHZsb2FkOChzaXplX3Qgb2Zmc2V0LCBjb25zdCB1bG9uZyAqcCk7CmZsb2F0OCBfX292bGQgdmxvYWQ4KHNpemVfdCBvZmZzZXQsIGNvbnN0IGZsb2F0ICpwKTsKY2hhcjE2IF9fb3ZsZCB2bG9hZDE2KHNpemVfdCBvZmZzZXQsIGNvbnN0IGNoYXIgKnApOwp1Y2hhcjE2IF9fb3ZsZCB2bG9hZDE2KHNpemVfdCBvZmZzZXQsIGNvbnN0IHVjaGFyICpwKTsKc2hvcnQxNiBfX292bGQgdmxvYWQxNihzaXplX3Qgb2Zmc2V0LCBjb25zdCBzaG9ydCAqcCk7CnVzaG9ydDE2IF9fb3ZsZCB2bG9hZDE2KHNpemVfdCBvZmZzZXQsIGNvbnN0IHVzaG9ydCAqcCk7CmludDE2IF9fb3ZsZCB2bG9hZDE2KHNpemVfdCBvZmZzZXQsIGNvbnN0IGludCAqcCk7CnVpbnQxNiBfX292bGQgdmxvYWQxNihzaXplX3Qgb2Zmc2V0LCBjb25zdCB1aW50ICpwKTsKbG9uZzE2IF9fb3ZsZCB2bG9hZDE2KHNpemVfdCBvZmZzZXQsIGNvbnN0IGxvbmcgKnApOwp1bG9uZzE2IF9fb3ZsZCB2bG9hZDE2KHNpemVfdCBvZmZzZXQsIGNvbnN0IHVsb25nICpwKTsKZmxvYXQxNiBfX292bGQgdmxvYWQxNihzaXplX3Qgb2Zmc2V0LCBjb25zdCBmbG9hdCAqcCk7CgojaWZkZWYgY2xfa2hyX2ZwNjQKZG91YmxlMiBfX292bGQgdmxvYWQyKHNpemVfdCBvZmZzZXQsIGNvbnN0IGRvdWJsZSAqcCk7CmRvdWJsZTMgX19vdmxkIHZsb2FkMyhzaXplX3Qgb2Zmc2V0LCBjb25zdCBkb3VibGUgKnApOwpkb3VibGU0IF9fb3ZsZCB2bG9hZDQoc2l6ZV90IG9mZnNldCwgY29uc3QgZG91YmxlICpwKTsKZG91YmxlOCBfX292bGQgdmxvYWQ4KHNpemVfdCBvZmZzZXQsIGNvbnN0IGRvdWJsZSAqcCk7CmRvdWJsZTE2IF9fb3ZsZCB2bG9hZDE2KHNpemVfdCBvZmZzZXQsIGNvbnN0IGRvdWJsZSAqcCk7CiNlbmRpZiAvL2NsX2tocl9mcDY0CgojaWZkZWYgY2xfa2hyX2ZwMTYKaGFsZiBfX292bGQgdmxvYWQoc2l6ZV90IG9mZnNldCwgY29uc3QgaGFsZiAqcCk7CmhhbGYyIF9fb3ZsZCB2bG9hZDIoc2l6ZV90IG9mZnNldCwgY29uc3QgaGFsZiAqcCk7CmhhbGYzIF9fb3ZsZCB2bG9hZDMoc2l6ZV90IG9mZnNldCwgY29uc3QgaGFsZiAqcCk7CmhhbGY0IF9fb3ZsZCB2bG9hZDQoc2l6ZV90IG9mZnNldCwgY29uc3QgaGFsZiAqcCk7CmhhbGY4IF9fb3ZsZCB2bG9hZDgoc2l6ZV90IG9mZnNldCwgY29uc3QgaGFsZiAqcCk7CmhhbGYxNiBfX292bGQgdmxvYWQxNihzaXplX3Qgb2Zmc2V0LCBjb25zdCBoYWxmICpwKTsKI2VuZGlmIC8vY2xfa2hyX2ZwMTYKI2Vsc2UKY2hhcjIgX19vdmxkIHZsb2FkMihzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2dsb2JhbCBjaGFyICpwKTsKdWNoYXIyIF9fb3ZsZCB2bG9hZDIoc2l6ZV90IG9mZnNldCwgY29uc3QgX19nbG9iYWwgdWNoYXIgKnApOwpzaG9ydDIgX19vdmxkIHZsb2FkMihzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2dsb2JhbCBzaG9ydCAqcCk7CnVzaG9ydDIgX19vdmxkIHZsb2FkMihzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2dsb2JhbCB1c2hvcnQgKnApOwppbnQyIF9fb3ZsZCB2bG9hZDIoc2l6ZV90IG9mZnNldCwgY29uc3QgX19nbG9iYWwgaW50ICpwKTsKdWludDIgX19vdmxkIHZsb2FkMihzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2dsb2JhbCB1aW50ICpwKTsKbG9uZzIgX19vdmxkIHZsb2FkMihzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2dsb2JhbCBsb25nICpwKTsKdWxvbmcyIF9fb3ZsZCB2bG9hZDIoc2l6ZV90IG9mZnNldCwgY29uc3QgX19nbG9iYWwgdWxvbmcgKnApOwpmbG9hdDIgX19vdmxkIHZsb2FkMihzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2dsb2JhbCBmbG9hdCAqcCk7CmNoYXIzIF9fb3ZsZCB2bG9hZDMoc2l6ZV90IG9mZnNldCwgY29uc3QgX19nbG9iYWwgY2hhciAqcCk7CnVjaGFyMyBfX292bGQgdmxvYWQzKHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fZ2xvYmFsIHVjaGFyICpwKTsKc2hvcnQzIF9fb3ZsZCB2bG9hZDMoc2l6ZV90IG9mZnNldCwgY29uc3QgX19nbG9iYWwgc2hvcnQgKnApOwp1c2hvcnQzIF9fb3ZsZCB2bG9hZDMoc2l6ZV90IG9mZnNldCwgY29uc3QgX19nbG9iYWwgdXNob3J0ICpwKTsKaW50MyBfX292bGQgdmxvYWQzKHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fZ2xvYmFsIGludCAqcCk7CnVpbnQzIF9fb3ZsZCB2bG9hZDMoc2l6ZV90IG9mZnNldCwgY29uc3QgX19nbG9iYWwgdWludCAqcCk7CmxvbmczIF9fb3ZsZCB2bG9hZDMoc2l6ZV90IG9mZnNldCwgY29uc3QgX19nbG9iYWwgbG9uZyAqcCk7CnVsb25nMyBfX292bGQgdmxvYWQzKHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fZ2xvYmFsIHVsb25nICpwKTsKZmxvYXQzIF9fb3ZsZCB2bG9hZDMoc2l6ZV90IG9mZnNldCwgY29uc3QgX19nbG9iYWwgZmxvYXQgKnApOwpjaGFyNCBfX292bGQgdmxvYWQ0KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fZ2xvYmFsIGNoYXIgKnApOwp1Y2hhcjQgX19vdmxkIHZsb2FkNChzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2dsb2JhbCB1Y2hhciAqcCk7CnNob3J0NCBfX292bGQgdmxvYWQ0KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fZ2xvYmFsIHNob3J0ICpwKTsKdXNob3J0NCBfX292bGQgdmxvYWQ0KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fZ2xvYmFsIHVzaG9ydCAqcCk7CmludDQgX19vdmxkIHZsb2FkNChzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2dsb2JhbCBpbnQgKnApOwp1aW50NCBfX292bGQgdmxvYWQ0KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fZ2xvYmFsIHVpbnQgKnApOwpsb25nNCBfX292bGQgdmxvYWQ0KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fZ2xvYmFsIGxvbmcgKnApOwp1bG9uZzQgX19vdmxkIHZsb2FkNChzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2dsb2JhbCB1bG9uZyAqcCk7CmZsb2F0NCBfX292bGQgdmxvYWQ0KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fZ2xvYmFsIGZsb2F0ICpwKTsKY2hhcjggX19vdmxkIHZsb2FkOChzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2dsb2JhbCBjaGFyICpwKTsKdWNoYXI4IF9fb3ZsZCB2bG9hZDgoc2l6ZV90IG9mZnNldCwgY29uc3QgX19nbG9iYWwgdWNoYXIgKnApOwpzaG9ydDggX19vdmxkIHZsb2FkOChzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2dsb2JhbCBzaG9ydCAqcCk7CnVzaG9ydDggX19vdmxkIHZsb2FkOChzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2dsb2JhbCB1c2hvcnQgKnApOwppbnQ4IF9fb3ZsZCB2bG9hZDgoc2l6ZV90IG9mZnNldCwgY29uc3QgX19nbG9iYWwgaW50ICpwKTsKdWludDggX19vdmxkIHZsb2FkOChzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2dsb2JhbCB1aW50ICpwKTsKbG9uZzggX19vdmxkIHZsb2FkOChzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2dsb2JhbCBsb25nICpwKTsKdWxvbmc4IF9fb3ZsZCB2bG9hZDgoc2l6ZV90IG9mZnNldCwgY29uc3QgX19nbG9iYWwgdWxvbmcgKnApOwpmbG9hdDggX19vdmxkIHZsb2FkOChzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2dsb2JhbCBmbG9hdCAqcCk7CmNoYXIxNiBfX292bGQgdmxvYWQxNihzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2dsb2JhbCBjaGFyICpwKTsKdWNoYXIxNiBfX292bGQgdmxvYWQxNihzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2dsb2JhbCB1Y2hhciAqcCk7CnNob3J0MTYgX19vdmxkIHZsb2FkMTYoc2l6ZV90IG9mZnNldCwgY29uc3QgX19nbG9iYWwgc2hvcnQgKnApOwp1c2hvcnQxNiBfX292bGQgdmxvYWQxNihzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2dsb2JhbCB1c2hvcnQgKnApOwppbnQxNiBfX292bGQgdmxvYWQxNihzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2dsb2JhbCBpbnQgKnApOwp1aW50MTYgX19vdmxkIHZsb2FkMTYoc2l6ZV90IG9mZnNldCwgY29uc3QgX19nbG9iYWwgdWludCAqcCk7CmxvbmcxNiBfX292bGQgdmxvYWQxNihzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2dsb2JhbCBsb25nICpwKTsKdWxvbmcxNiBfX292bGQgdmxvYWQxNihzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2dsb2JhbCB1bG9uZyAqcCk7CmZsb2F0MTYgX19vdmxkIHZsb2FkMTYoc2l6ZV90IG9mZnNldCwgY29uc3QgX19nbG9iYWwgZmxvYXQgKnApOwpjaGFyMiBfX292bGQgdmxvYWQyKHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fbG9jYWwgY2hhciAqcCk7CnVjaGFyMiBfX292bGQgdmxvYWQyKHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fbG9jYWwgdWNoYXIgKnApOwpzaG9ydDIgX19vdmxkIHZsb2FkMihzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2xvY2FsIHNob3J0ICpwKTsKdXNob3J0MiBfX292bGQgdmxvYWQyKHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fbG9jYWwgdXNob3J0ICpwKTsKaW50MiBfX292bGQgdmxvYWQyKHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fbG9jYWwgaW50ICpwKTsKdWludDIgX19vdmxkIHZsb2FkMihzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2xvY2FsIHVpbnQgKnApOwpsb25nMiBfX292bGQgdmxvYWQyKHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fbG9jYWwgbG9uZyAqcCk7CnVsb25nMiBfX292bGQgdmxvYWQyKHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fbG9jYWwgdWxvbmcgKnApOwpmbG9hdDIgX19vdmxkIHZsb2FkMihzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2xvY2FsIGZsb2F0ICpwKTsKY2hhcjMgX19vdmxkIHZsb2FkMyhzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2xvY2FsIGNoYXIgKnApOwp1Y2hhcjMgX19vdmxkIHZsb2FkMyhzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2xvY2FsIHVjaGFyICpwKTsKc2hvcnQzIF9fb3ZsZCB2bG9hZDMoc2l6ZV90IG9mZnNldCwgY29uc3QgX19sb2NhbCBzaG9ydCAqcCk7CnVzaG9ydDMgX19vdmxkIHZsb2FkMyhzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2xvY2FsIHVzaG9ydCAqcCk7CmludDMgX19vdmxkIHZsb2FkMyhzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2xvY2FsIGludCAqcCk7CnVpbnQzIF9fb3ZsZCB2bG9hZDMoc2l6ZV90IG9mZnNldCwgY29uc3QgX19sb2NhbCB1aW50ICpwKTsKbG9uZzMgX19vdmxkIHZsb2FkMyhzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2xvY2FsIGxvbmcgKnApOwp1bG9uZzMgX19vdmxkIHZsb2FkMyhzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2xvY2FsIHVsb25nICpwKTsKZmxvYXQzIF9fb3ZsZCB2bG9hZDMoc2l6ZV90IG9mZnNldCwgY29uc3QgX19sb2NhbCBmbG9hdCAqcCk7CmNoYXI0IF9fb3ZsZCB2bG9hZDQoc2l6ZV90IG9mZnNldCwgY29uc3QgX19sb2NhbCBjaGFyICpwKTsKdWNoYXI0IF9fb3ZsZCB2bG9hZDQoc2l6ZV90IG9mZnNldCwgY29uc3QgX19sb2NhbCB1Y2hhciAqcCk7CnNob3J0NCBfX292bGQgdmxvYWQ0KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fbG9jYWwgc2hvcnQgKnApOwp1c2hvcnQ0IF9fb3ZsZCB2bG9hZDQoc2l6ZV90IG9mZnNldCwgY29uc3QgX19sb2NhbCB1c2hvcnQgKnApOwppbnQ0IF9fb3ZsZCB2bG9hZDQoc2l6ZV90IG9mZnNldCwgY29uc3QgX19sb2NhbCBpbnQgKnApOwp1aW50NCBfX292bGQgdmxvYWQ0KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fbG9jYWwgdWludCAqcCk7Cmxvbmc0IF9fb3ZsZCB2bG9hZDQoc2l6ZV90IG9mZnNldCwgY29uc3QgX19sb2NhbCBsb25nICpwKTsKdWxvbmc0IF9fb3ZsZCB2bG9hZDQoc2l6ZV90IG9mZnNldCwgY29uc3QgX19sb2NhbCB1bG9uZyAqcCk7CmZsb2F0NCBfX292bGQgdmxvYWQ0KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fbG9jYWwgZmxvYXQgKnApOwpjaGFyOCBfX292bGQgdmxvYWQ4KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fbG9jYWwgY2hhciAqcCk7CnVjaGFyOCBfX292bGQgdmxvYWQ4KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fbG9jYWwgdWNoYXIgKnApOwpzaG9ydDggX19vdmxkIHZsb2FkOChzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2xvY2FsIHNob3J0ICpwKTsKdXNob3J0OCBfX292bGQgdmxvYWQ4KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fbG9jYWwgdXNob3J0ICpwKTsKaW50OCBfX292bGQgdmxvYWQ4KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fbG9jYWwgaW50ICpwKTsKdWludDggX19vdmxkIHZsb2FkOChzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2xvY2FsIHVpbnQgKnApOwpsb25nOCBfX292bGQgdmxvYWQ4KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fbG9jYWwgbG9uZyAqcCk7CnVsb25nOCBfX292bGQgdmxvYWQ4KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fbG9jYWwgdWxvbmcgKnApOwpmbG9hdDggX19vdmxkIHZsb2FkOChzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2xvY2FsIGZsb2F0ICpwKTsKY2hhcjE2IF9fb3ZsZCB2bG9hZDE2KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fbG9jYWwgY2hhciAqcCk7CnVjaGFyMTYgX19vdmxkIHZsb2FkMTYoc2l6ZV90IG9mZnNldCwgY29uc3QgX19sb2NhbCB1Y2hhciAqcCk7CnNob3J0MTYgX19vdmxkIHZsb2FkMTYoc2l6ZV90IG9mZnNldCwgY29uc3QgX19sb2NhbCBzaG9ydCAqcCk7CnVzaG9ydDE2IF9fb3ZsZCB2bG9hZDE2KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fbG9jYWwgdXNob3J0ICpwKTsKaW50MTYgX19vdmxkIHZsb2FkMTYoc2l6ZV90IG9mZnNldCwgY29uc3QgX19sb2NhbCBpbnQgKnApOwp1aW50MTYgX19vdmxkIHZsb2FkMTYoc2l6ZV90IG9mZnNldCwgY29uc3QgX19sb2NhbCB1aW50ICpwKTsKbG9uZzE2IF9fb3ZsZCB2bG9hZDE2KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fbG9jYWwgbG9uZyAqcCk7CnVsb25nMTYgX19vdmxkIHZsb2FkMTYoc2l6ZV90IG9mZnNldCwgY29uc3QgX19sb2NhbCB1bG9uZyAqcCk7CmZsb2F0MTYgX19vdmxkIHZsb2FkMTYoc2l6ZV90IG9mZnNldCwgY29uc3QgX19sb2NhbCBmbG9hdCAqcCk7CmNoYXIyIF9fb3ZsZCB2bG9hZDIoc2l6ZV90IG9mZnNldCwgY29uc3QgX19wcml2YXRlIGNoYXIgKnApOwp1Y2hhcjIgX19vdmxkIHZsb2FkMihzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX3ByaXZhdGUgdWNoYXIgKnApOwpzaG9ydDIgX19vdmxkIHZsb2FkMihzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX3ByaXZhdGUgc2hvcnQgKnApOwp1c2hvcnQyIF9fb3ZsZCB2bG9hZDIoc2l6ZV90IG9mZnNldCwgY29uc3QgX19wcml2YXRlIHVzaG9ydCAqcCk7CmludDIgX19vdmxkIHZsb2FkMihzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX3ByaXZhdGUgaW50ICpwKTsKdWludDIgX19vdmxkIHZsb2FkMihzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX3ByaXZhdGUgdWludCAqcCk7CmxvbmcyIF9fb3ZsZCB2bG9hZDIoc2l6ZV90IG9mZnNldCwgY29uc3QgX19wcml2YXRlIGxvbmcgKnApOwp1bG9uZzIgX19vdmxkIHZsb2FkMihzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX3ByaXZhdGUgdWxvbmcgKnApOwpmbG9hdDIgX19vdmxkIHZsb2FkMihzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX3ByaXZhdGUgZmxvYXQgKnApOwpjaGFyMyBfX292bGQgdmxvYWQzKHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fcHJpdmF0ZSBjaGFyICpwKTsKdWNoYXIzIF9fb3ZsZCB2bG9hZDMoc2l6ZV90IG9mZnNldCwgY29uc3QgX19wcml2YXRlIHVjaGFyICpwKTsKc2hvcnQzIF9fb3ZsZCB2bG9hZDMoc2l6ZV90IG9mZnNldCwgY29uc3QgX19wcml2YXRlIHNob3J0ICpwKTsKdXNob3J0MyBfX292bGQgdmxvYWQzKHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fcHJpdmF0ZSB1c2hvcnQgKnApOwppbnQzIF9fb3ZsZCB2bG9hZDMoc2l6ZV90IG9mZnNldCwgY29uc3QgX19wcml2YXRlIGludCAqcCk7CnVpbnQzIF9fb3ZsZCB2bG9hZDMoc2l6ZV90IG9mZnNldCwgY29uc3QgX19wcml2YXRlIHVpbnQgKnApOwpsb25nMyBfX292bGQgdmxvYWQzKHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fcHJpdmF0ZSBsb25nICpwKTsKdWxvbmczIF9fb3ZsZCB2bG9hZDMoc2l6ZV90IG9mZnNldCwgY29uc3QgX19wcml2YXRlIHVsb25nICpwKTsKZmxvYXQzIF9fb3ZsZCB2bG9hZDMoc2l6ZV90IG9mZnNldCwgY29uc3QgX19wcml2YXRlIGZsb2F0ICpwKTsKY2hhcjQgX19vdmxkIHZsb2FkNChzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX3ByaXZhdGUgY2hhciAqcCk7CnVjaGFyNCBfX292bGQgdmxvYWQ0KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fcHJpdmF0ZSB1Y2hhciAqcCk7CnNob3J0NCBfX292bGQgdmxvYWQ0KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fcHJpdmF0ZSBzaG9ydCAqcCk7CnVzaG9ydDQgX19vdmxkIHZsb2FkNChzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX3ByaXZhdGUgdXNob3J0ICpwKTsKaW50NCBfX292bGQgdmxvYWQ0KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fcHJpdmF0ZSBpbnQgKnApOwp1aW50NCBfX292bGQgdmxvYWQ0KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fcHJpdmF0ZSB1aW50ICpwKTsKbG9uZzQgX19vdmxkIHZsb2FkNChzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX3ByaXZhdGUgbG9uZyAqcCk7CnVsb25nNCBfX292bGQgdmxvYWQ0KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fcHJpdmF0ZSB1bG9uZyAqcCk7CmZsb2F0NCBfX292bGQgdmxvYWQ0KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fcHJpdmF0ZSBmbG9hdCAqcCk7CmNoYXI4IF9fb3ZsZCB2bG9hZDgoc2l6ZV90IG9mZnNldCwgY29uc3QgX19wcml2YXRlIGNoYXIgKnApOwp1Y2hhcjggX19vdmxkIHZsb2FkOChzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX3ByaXZhdGUgdWNoYXIgKnApOwpzaG9ydDggX19vdmxkIHZsb2FkOChzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX3ByaXZhdGUgc2hvcnQgKnApOwp1c2hvcnQ4IF9fb3ZsZCB2bG9hZDgoc2l6ZV90IG9mZnNldCwgY29uc3QgX19wcml2YXRlIHVzaG9ydCAqcCk7CmludDggX19vdmxkIHZsb2FkOChzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX3ByaXZhdGUgaW50ICpwKTsKdWludDggX19vdmxkIHZsb2FkOChzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX3ByaXZhdGUgdWludCAqcCk7Cmxvbmc4IF9fb3ZsZCB2bG9hZDgoc2l6ZV90IG9mZnNldCwgY29uc3QgX19wcml2YXRlIGxvbmcgKnApOwp1bG9uZzggX19vdmxkIHZsb2FkOChzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX3ByaXZhdGUgdWxvbmcgKnApOwpmbG9hdDggX19vdmxkIHZsb2FkOChzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX3ByaXZhdGUgZmxvYXQgKnApOwpjaGFyMTYgX19vdmxkIHZsb2FkMTYoc2l6ZV90IG9mZnNldCwgY29uc3QgX19wcml2YXRlIGNoYXIgKnApOwp1Y2hhcjE2IF9fb3ZsZCB2bG9hZDE2KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fcHJpdmF0ZSB1Y2hhciAqcCk7CnNob3J0MTYgX19vdmxkIHZsb2FkMTYoc2l6ZV90IG9mZnNldCwgY29uc3QgX19wcml2YXRlIHNob3J0ICpwKTsKdXNob3J0MTYgX19vdmxkIHZsb2FkMTYoc2l6ZV90IG9mZnNldCwgY29uc3QgX19wcml2YXRlIHVzaG9ydCAqcCk7CmludDE2IF9fb3ZsZCB2bG9hZDE2KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fcHJpdmF0ZSBpbnQgKnApOwp1aW50MTYgX19vdmxkIHZsb2FkMTYoc2l6ZV90IG9mZnNldCwgY29uc3QgX19wcml2YXRlIHVpbnQgKnApOwpsb25nMTYgX19vdmxkIHZsb2FkMTYoc2l6ZV90IG9mZnNldCwgY29uc3QgX19wcml2YXRlIGxvbmcgKnApOwp1bG9uZzE2IF9fb3ZsZCB2bG9hZDE2KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fcHJpdmF0ZSB1bG9uZyAqcCk7CmZsb2F0MTYgX19vdmxkIHZsb2FkMTYoc2l6ZV90IG9mZnNldCwgY29uc3QgX19wcml2YXRlIGZsb2F0ICpwKTsKCiNpZmRlZiBjbF9raHJfZnA2NApkb3VibGUyIF9fb3ZsZCB2bG9hZDIoc2l6ZV90IG9mZnNldCwgY29uc3QgX19nbG9iYWwgZG91YmxlICpwKTsKZG91YmxlMyBfX292bGQgdmxvYWQzKHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fZ2xvYmFsIGRvdWJsZSAqcCk7CmRvdWJsZTQgX19vdmxkIHZsb2FkNChzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2dsb2JhbCBkb3VibGUgKnApOwpkb3VibGU4IF9fb3ZsZCB2bG9hZDgoc2l6ZV90IG9mZnNldCwgY29uc3QgX19nbG9iYWwgZG91YmxlICpwKTsKZG91YmxlMTYgX19vdmxkIHZsb2FkMTYoc2l6ZV90IG9mZnNldCwgY29uc3QgX19nbG9iYWwgZG91YmxlICpwKTsKZG91YmxlMiBfX292bGQgdmxvYWQyKHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fbG9jYWwgZG91YmxlICpwKTsKZG91YmxlMyBfX292bGQgdmxvYWQzKHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fbG9jYWwgZG91YmxlICpwKTsKZG91YmxlNCBfX292bGQgdmxvYWQ0KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fbG9jYWwgZG91YmxlICpwKTsKZG91YmxlOCBfX292bGQgdmxvYWQ4KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fbG9jYWwgZG91YmxlICpwKTsKZG91YmxlMTYgX19vdmxkIHZsb2FkMTYoc2l6ZV90IG9mZnNldCwgY29uc3QgX19sb2NhbCBkb3VibGUgKnApOwpkb3VibGUyIF9fb3ZsZCB2bG9hZDIoc2l6ZV90IG9mZnNldCwgY29uc3QgX19wcml2YXRlIGRvdWJsZSAqcCk7CmRvdWJsZTMgX19vdmxkIHZsb2FkMyhzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX3ByaXZhdGUgZG91YmxlICpwKTsKZG91YmxlNCBfX292bGQgdmxvYWQ0KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fcHJpdmF0ZSBkb3VibGUgKnApOwpkb3VibGU4IF9fb3ZsZCB2bG9hZDgoc2l6ZV90IG9mZnNldCwgY29uc3QgX19wcml2YXRlIGRvdWJsZSAqcCk7CmRvdWJsZTE2IF9fb3ZsZCB2bG9hZDE2KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fcHJpdmF0ZSBkb3VibGUgKnApOwojZW5kaWYgLy9jbF9raHJfZnA2NAoKI2lmZGVmIGNsX2tocl9mcDE2CmhhbGYgX19vdmxkIHZsb2FkKHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fZ2xvYmFsIGhhbGYgKnApOwpoYWxmMiBfX292bGQgdmxvYWQyKHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fZ2xvYmFsIGhhbGYgKnApOwpoYWxmMyBfX292bGQgdmxvYWQzKHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fZ2xvYmFsIGhhbGYgKnApOwpoYWxmNCBfX292bGQgdmxvYWQ0KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fZ2xvYmFsIGhhbGYgKnApOwpoYWxmOCBfX292bGQgdmxvYWQ4KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fZ2xvYmFsIGhhbGYgKnApOwpoYWxmMTYgX19vdmxkIHZsb2FkMTYoc2l6ZV90IG9mZnNldCwgY29uc3QgX19nbG9iYWwgaGFsZiAqcCk7CmhhbGYgX19vdmxkIHZsb2FkKHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fbG9jYWwgaGFsZiAqcCk7CmhhbGYyIF9fb3ZsZCB2bG9hZDIoc2l6ZV90IG9mZnNldCwgY29uc3QgX19sb2NhbCBoYWxmICpwKTsKaGFsZjMgX19vdmxkIHZsb2FkMyhzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2xvY2FsIGhhbGYgKnApOwpoYWxmNCBfX292bGQgdmxvYWQ0KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fbG9jYWwgaGFsZiAqcCk7CmhhbGY4IF9fb3ZsZCB2bG9hZDgoc2l6ZV90IG9mZnNldCwgY29uc3QgX19sb2NhbCBoYWxmICpwKTsKaGFsZjE2IF9fb3ZsZCB2bG9hZDE2KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fbG9jYWwgaGFsZiAqcCk7CmhhbGYgX19vdmxkIHZsb2FkKHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fcHJpdmF0ZSBoYWxmICpwKTsKaGFsZjIgX19vdmxkIHZsb2FkMihzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX3ByaXZhdGUgaGFsZiAqcCk7CmhhbGYzIF9fb3ZsZCB2bG9hZDMoc2l6ZV90IG9mZnNldCwgY29uc3QgX19wcml2YXRlIGhhbGYgKnApOwpoYWxmNCBfX292bGQgdmxvYWQ0KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fcHJpdmF0ZSBoYWxmICpwKTsKaGFsZjggX19vdmxkIHZsb2FkOChzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX3ByaXZhdGUgaGFsZiAqcCk7CmhhbGYxNiBfX292bGQgdmxvYWQxNihzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX3ByaXZhdGUgaGFsZiAqcCk7CiNlbmRpZiAvL2NsX2tocl9mcDE2CiNlbmRpZiAvL2RlZmluZWQoX19vcGVuY2xfY19nZW5lcmljX2FkZHJlc3Nfc3BhY2UpCgojaWYgZGVmaW5lZChfX29wZW5jbF9jX2dlbmVyaWNfYWRkcmVzc19zcGFjZSkKdm9pZCBfX292bGQgdnN0b3JlMihjaGFyMiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBjaGFyICpwKTsKdm9pZCBfX292bGQgdnN0b3JlMih1Y2hhcjIgZGF0YSwgc2l6ZV90IG9mZnNldCwgdWNoYXIgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmUyKHNob3J0MiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBzaG9ydCAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTIodXNob3J0MiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCB1c2hvcnQgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmUyKGludDIgZGF0YSwgc2l6ZV90IG9mZnNldCwgaW50ICpwKTsKdm9pZCBfX292bGQgdnN0b3JlMih1aW50MiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCB1aW50ICpwKTsKdm9pZCBfX292bGQgdnN0b3JlMihsb25nMiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBsb25nICpwKTsKdm9pZCBfX292bGQgdnN0b3JlMih1bG9uZzIgZGF0YSwgc2l6ZV90IG9mZnNldCwgdWxvbmcgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmUyKGZsb2F0MiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBmbG9hdCAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTMoY2hhcjMgZGF0YSwgc2l6ZV90IG9mZnNldCwgY2hhciAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTModWNoYXIzIGRhdGEsIHNpemVfdCBvZmZzZXQsIHVjaGFyICpwKTsKdm9pZCBfX292bGQgdnN0b3JlMyhzaG9ydDMgZGF0YSwgc2l6ZV90IG9mZnNldCwgc2hvcnQgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmUzKHVzaG9ydDMgZGF0YSwgc2l6ZV90IG9mZnNldCwgdXNob3J0ICpwKTsKdm9pZCBfX292bGQgdnN0b3JlMyhpbnQzIGRhdGEsIHNpemVfdCBvZmZzZXQsIGludCAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTModWludDMgZGF0YSwgc2l6ZV90IG9mZnNldCwgdWludCAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTMobG9uZzMgZGF0YSwgc2l6ZV90IG9mZnNldCwgbG9uZyAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTModWxvbmczIGRhdGEsIHNpemVfdCBvZmZzZXQsIHVsb25nICpwKTsKdm9pZCBfX292bGQgdnN0b3JlMyhmbG9hdDMgZGF0YSwgc2l6ZV90IG9mZnNldCwgZmxvYXQgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmU0KGNoYXI0IGRhdGEsIHNpemVfdCBvZmZzZXQsIGNoYXIgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmU0KHVjaGFyNCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCB1Y2hhciAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTQoc2hvcnQ0IGRhdGEsIHNpemVfdCBvZmZzZXQsIHNob3J0ICpwKTsKdm9pZCBfX292bGQgdnN0b3JlNCh1c2hvcnQ0IGRhdGEsIHNpemVfdCBvZmZzZXQsIHVzaG9ydCAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTQoaW50NCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBpbnQgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmU0KHVpbnQ0IGRhdGEsIHNpemVfdCBvZmZzZXQsIHVpbnQgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmU0KGxvbmc0IGRhdGEsIHNpemVfdCBvZmZzZXQsIGxvbmcgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmU0KHVsb25nNCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCB1bG9uZyAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTQoZmxvYXQ0IGRhdGEsIHNpemVfdCBvZmZzZXQsIGZsb2F0ICpwKTsKdm9pZCBfX292bGQgdnN0b3JlOChjaGFyOCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBjaGFyICpwKTsKdm9pZCBfX292bGQgdnN0b3JlOCh1Y2hhcjggZGF0YSwgc2l6ZV90IG9mZnNldCwgdWNoYXIgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmU4KHNob3J0OCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBzaG9ydCAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTgodXNob3J0OCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCB1c2hvcnQgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmU4KGludDggZGF0YSwgc2l6ZV90IG9mZnNldCwgaW50ICpwKTsKdm9pZCBfX292bGQgdnN0b3JlOCh1aW50OCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCB1aW50ICpwKTsKdm9pZCBfX292bGQgdnN0b3JlOChsb25nOCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBsb25nICpwKTsKdm9pZCBfX292bGQgdnN0b3JlOCh1bG9uZzggZGF0YSwgc2l6ZV90IG9mZnNldCwgdWxvbmcgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmU4KGZsb2F0OCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBmbG9hdCAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTE2KGNoYXIxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBjaGFyICpwKTsKdm9pZCBfX292bGQgdnN0b3JlMTYodWNoYXIxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCB1Y2hhciAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTE2KHNob3J0MTYgZGF0YSwgc2l6ZV90IG9mZnNldCwgc2hvcnQgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmUxNih1c2hvcnQxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCB1c2hvcnQgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmUxNihpbnQxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBpbnQgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmUxNih1aW50MTYgZGF0YSwgc2l6ZV90IG9mZnNldCwgdWludCAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTE2KGxvbmcxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBsb25nICpwKTsKdm9pZCBfX292bGQgdnN0b3JlMTYodWxvbmcxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCB1bG9uZyAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTE2KGZsb2F0MTYgZGF0YSwgc2l6ZV90IG9mZnNldCwgZmxvYXQgKnApOwojaWZkZWYgY2xfa2hyX2ZwNjQKdm9pZCBfX292bGQgdnN0b3JlMihkb3VibGUyIGRhdGEsIHNpemVfdCBvZmZzZXQsIGRvdWJsZSAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTMoZG91YmxlMyBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBkb3VibGUgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmU0KGRvdWJsZTQgZGF0YSwgc2l6ZV90IG9mZnNldCwgZG91YmxlICpwKTsKdm9pZCBfX292bGQgdnN0b3JlOChkb3VibGU4IGRhdGEsIHNpemVfdCBvZmZzZXQsIGRvdWJsZSAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTE2KGRvdWJsZTE2IGRhdGEsIHNpemVfdCBvZmZzZXQsIGRvdWJsZSAqcCk7CiNlbmRpZiAvL2NsX2tocl9mcDY0CiNpZmRlZiBjbF9raHJfZnAxNgp2b2lkIF9fb3ZsZCB2c3RvcmUoaGFsZiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlMihoYWxmMiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlMyhoYWxmMyBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlNChoYWxmNCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlOChoYWxmOCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlMTYoaGFsZjE2IGRhdGEsIHNpemVfdCBvZmZzZXQsIGhhbGYgKnApOwojZW5kaWYgLy9jbF9raHJfZnAxNgojZWxzZQp2b2lkIF9fb3ZsZCB2c3RvcmUyKGNoYXIyIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGNoYXIgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmUyKHVjaGFyMiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCB1Y2hhciAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTIoc2hvcnQyIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIHNob3J0ICpwKTsKdm9pZCBfX292bGQgdnN0b3JlMih1c2hvcnQyIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIHVzaG9ydCAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTIoaW50MiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCBpbnQgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmUyKHVpbnQyIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIHVpbnQgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmUyKGxvbmcyIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGxvbmcgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmUyKHVsb25nMiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCB1bG9uZyAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTIoZmxvYXQyIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGZsb2F0ICpwKTsKdm9pZCBfX292bGQgdnN0b3JlMyhjaGFyMyBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCBjaGFyICpwKTsKdm9pZCBfX292bGQgdnN0b3JlMyh1Y2hhcjMgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19nbG9iYWwgdWNoYXIgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmUzKHNob3J0MyBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCBzaG9ydCAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTModXNob3J0MyBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCB1c2hvcnQgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmUzKGludDMgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19nbG9iYWwgaW50ICpwKTsKdm9pZCBfX292bGQgdnN0b3JlMyh1aW50MyBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCB1aW50ICpwKTsKdm9pZCBfX292bGQgdnN0b3JlMyhsb25nMyBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCBsb25nICpwKTsKdm9pZCBfX292bGQgdnN0b3JlMyh1bG9uZzMgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19nbG9iYWwgdWxvbmcgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmUzKGZsb2F0MyBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCBmbG9hdCAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTQoY2hhcjQgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19nbG9iYWwgY2hhciAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTQodWNoYXI0IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIHVjaGFyICpwKTsKdm9pZCBfX292bGQgdnN0b3JlNChzaG9ydDQgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19nbG9iYWwgc2hvcnQgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmU0KHVzaG9ydDQgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19nbG9iYWwgdXNob3J0ICpwKTsKdm9pZCBfX292bGQgdnN0b3JlNChpbnQ0IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGludCAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTQodWludDQgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19nbG9iYWwgdWludCAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTQobG9uZzQgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19nbG9iYWwgbG9uZyAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTQodWxvbmc0IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIHVsb25nICpwKTsKdm9pZCBfX292bGQgdnN0b3JlNChmbG9hdDQgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19nbG9iYWwgZmxvYXQgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmU4KGNoYXI4IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGNoYXIgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmU4KHVjaGFyOCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCB1Y2hhciAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTgoc2hvcnQ4IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIHNob3J0ICpwKTsKdm9pZCBfX292bGQgdnN0b3JlOCh1c2hvcnQ4IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIHVzaG9ydCAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTgoaW50OCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCBpbnQgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmU4KHVpbnQ4IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIHVpbnQgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmU4KGxvbmc4IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGxvbmcgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmU4KHVsb25nOCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCB1bG9uZyAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTgoZmxvYXQ4IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGZsb2F0ICpwKTsKdm9pZCBfX292bGQgdnN0b3JlMTYoY2hhcjE2IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGNoYXIgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmUxNih1Y2hhcjE2IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIHVjaGFyICpwKTsKdm9pZCBfX292bGQgdnN0b3JlMTYoc2hvcnQxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCBzaG9ydCAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTE2KHVzaG9ydDE2IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIHVzaG9ydCAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTE2KGludDE2IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGludCAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTE2KHVpbnQxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCB1aW50ICpwKTsKdm9pZCBfX292bGQgdnN0b3JlMTYobG9uZzE2IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGxvbmcgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmUxNih1bG9uZzE2IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIHVsb25nICpwKTsKdm9pZCBfX292bGQgdnN0b3JlMTYoZmxvYXQxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCBmbG9hdCAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTIoY2hhcjIgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBjaGFyICpwKTsKdm9pZCBfX292bGQgdnN0b3JlMih1Y2hhcjIgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCB1Y2hhciAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTIoc2hvcnQyIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgc2hvcnQgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmUyKHVzaG9ydDIgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCB1c2hvcnQgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmUyKGludDIgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBpbnQgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmUyKHVpbnQyIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgdWludCAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTIobG9uZzIgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBsb25nICpwKTsKdm9pZCBfX292bGQgdnN0b3JlMih1bG9uZzIgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCB1bG9uZyAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTIoZmxvYXQyIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgZmxvYXQgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmUzKGNoYXIzIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgY2hhciAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTModWNoYXIzIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgdWNoYXIgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmUzKHNob3J0MyBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIHNob3J0ICpwKTsKdm9pZCBfX292bGQgdnN0b3JlMyh1c2hvcnQzIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgdXNob3J0ICpwKTsKdm9pZCBfX292bGQgdnN0b3JlMyhpbnQzIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgaW50ICpwKTsKdm9pZCBfX292bGQgdnN0b3JlMyh1aW50MyBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIHVpbnQgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmUzKGxvbmczIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgbG9uZyAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTModWxvbmczIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgdWxvbmcgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmUzKGZsb2F0MyBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIGZsb2F0ICpwKTsKdm9pZCBfX292bGQgdnN0b3JlNChjaGFyNCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIGNoYXIgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmU0KHVjaGFyNCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIHVjaGFyICpwKTsKdm9pZCBfX292bGQgdnN0b3JlNChzaG9ydDQgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBzaG9ydCAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTQodXNob3J0NCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIHVzaG9ydCAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTQoaW50NCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIGludCAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTQodWludDQgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCB1aW50ICpwKTsKdm9pZCBfX292bGQgdnN0b3JlNChsb25nNCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIGxvbmcgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmU0KHVsb25nNCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIHVsb25nICpwKTsKdm9pZCBfX292bGQgdnN0b3JlNChmbG9hdDQgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBmbG9hdCAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTgoY2hhcjggZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBjaGFyICpwKTsKdm9pZCBfX292bGQgdnN0b3JlOCh1Y2hhcjggZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCB1Y2hhciAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTgoc2hvcnQ4IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgc2hvcnQgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmU4KHVzaG9ydDggZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCB1c2hvcnQgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmU4KGludDggZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBpbnQgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmU4KHVpbnQ4IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgdWludCAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTgobG9uZzggZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBsb25nICpwKTsKdm9pZCBfX292bGQgdnN0b3JlOCh1bG9uZzggZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCB1bG9uZyAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTgoZmxvYXQ4IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgZmxvYXQgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmUxNihjaGFyMTYgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBjaGFyICpwKTsKdm9pZCBfX292bGQgdnN0b3JlMTYodWNoYXIxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIHVjaGFyICpwKTsKdm9pZCBfX292bGQgdnN0b3JlMTYoc2hvcnQxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIHNob3J0ICpwKTsKdm9pZCBfX292bGQgdnN0b3JlMTYodXNob3J0MTYgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCB1c2hvcnQgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmUxNihpbnQxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIGludCAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTE2KHVpbnQxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIHVpbnQgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmUxNihsb25nMTYgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBsb25nICpwKTsKdm9pZCBfX292bGQgdnN0b3JlMTYodWxvbmcxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIHVsb25nICpwKTsKdm9pZCBfX292bGQgdnN0b3JlMTYoZmxvYXQxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIGZsb2F0ICpwKTsKdm9pZCBfX292bGQgdnN0b3JlMihjaGFyMiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgY2hhciAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTIodWNoYXIyIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSB1Y2hhciAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTIoc2hvcnQyIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBzaG9ydCAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTIodXNob3J0MiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgdXNob3J0ICpwKTsKdm9pZCBfX292bGQgdnN0b3JlMihpbnQyIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBpbnQgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmUyKHVpbnQyIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSB1aW50ICpwKTsKdm9pZCBfX292bGQgdnN0b3JlMihsb25nMiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgbG9uZyAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTIodWxvbmcyIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSB1bG9uZyAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTIoZmxvYXQyIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBmbG9hdCAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTMoY2hhcjMgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIGNoYXIgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmUzKHVjaGFyMyBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgdWNoYXIgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmUzKHNob3J0MyBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgc2hvcnQgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmUzKHVzaG9ydDMgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIHVzaG9ydCAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTMoaW50MyBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgaW50ICpwKTsKdm9pZCBfX292bGQgdnN0b3JlMyh1aW50MyBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgdWludCAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTMobG9uZzMgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIGxvbmcgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmUzKHVsb25nMyBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgdWxvbmcgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmUzKGZsb2F0MyBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgZmxvYXQgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmU0KGNoYXI0IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBjaGFyICpwKTsKdm9pZCBfX292bGQgdnN0b3JlNCh1Y2hhcjQgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIHVjaGFyICpwKTsKdm9pZCBfX292bGQgdnN0b3JlNChzaG9ydDQgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIHNob3J0ICpwKTsKdm9pZCBfX292bGQgdnN0b3JlNCh1c2hvcnQ0IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSB1c2hvcnQgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmU0KGludDQgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIGludCAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTQodWludDQgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIHVpbnQgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmU0KGxvbmc0IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBsb25nICpwKTsKdm9pZCBfX292bGQgdnN0b3JlNCh1bG9uZzQgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIHVsb25nICpwKTsKdm9pZCBfX292bGQgdnN0b3JlNChmbG9hdDQgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIGZsb2F0ICpwKTsKdm9pZCBfX292bGQgdnN0b3JlOChjaGFyOCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgY2hhciAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTgodWNoYXI4IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSB1Y2hhciAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTgoc2hvcnQ4IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBzaG9ydCAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTgodXNob3J0OCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgdXNob3J0ICpwKTsKdm9pZCBfX292bGQgdnN0b3JlOChpbnQ4IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBpbnQgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmU4KHVpbnQ4IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSB1aW50ICpwKTsKdm9pZCBfX292bGQgdnN0b3JlOChsb25nOCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgbG9uZyAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTgodWxvbmc4IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSB1bG9uZyAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTgoZmxvYXQ4IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBmbG9hdCAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTE2KGNoYXIxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgY2hhciAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTE2KHVjaGFyMTYgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIHVjaGFyICpwKTsKdm9pZCBfX292bGQgdnN0b3JlMTYoc2hvcnQxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgc2hvcnQgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmUxNih1c2hvcnQxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgdXNob3J0ICpwKTsKdm9pZCBfX292bGQgdnN0b3JlMTYoaW50MTYgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIGludCAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTE2KHVpbnQxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgdWludCAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTE2KGxvbmcxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgbG9uZyAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTE2KHVsb25nMTYgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIHVsb25nICpwKTsKdm9pZCBfX292bGQgdnN0b3JlMTYoZmxvYXQxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgZmxvYXQgKnApOwojaWZkZWYgY2xfa2hyX2ZwNjQKdm9pZCBfX292bGQgdnN0b3JlMihkb3VibGUyIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGRvdWJsZSAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTMoZG91YmxlMyBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCBkb3VibGUgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmU0KGRvdWJsZTQgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19nbG9iYWwgZG91YmxlICpwKTsKdm9pZCBfX292bGQgdnN0b3JlOChkb3VibGU4IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGRvdWJsZSAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTE2KGRvdWJsZTE2IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGRvdWJsZSAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTIoZG91YmxlMiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIGRvdWJsZSAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTMoZG91YmxlMyBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIGRvdWJsZSAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTQoZG91YmxlNCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIGRvdWJsZSAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTgoZG91YmxlOCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIGRvdWJsZSAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTE2KGRvdWJsZTE2IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgZG91YmxlICpwKTsKdm9pZCBfX292bGQgdnN0b3JlMihkb3VibGUyIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBkb3VibGUgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmUzKGRvdWJsZTMgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIGRvdWJsZSAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTQoZG91YmxlNCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgZG91YmxlICpwKTsKdm9pZCBfX292bGQgdnN0b3JlOChkb3VibGU4IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBkb3VibGUgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmUxNihkb3VibGUxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgZG91YmxlICpwKTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKI2lmZGVmIGNsX2tocl9mcDE2CnZvaWQgX19vdmxkIHZzdG9yZShoYWxmIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmUyKGhhbGYyIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmUzKGhhbGYzIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmU0KGhhbGY0IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmU4KGhhbGY4IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmUxNihoYWxmMTYgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19nbG9iYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZShoYWxmIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTIoaGFsZjIgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlMyhoYWxmMyBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmU0KGhhbGY0IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTgoaGFsZjggZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlMTYoaGFsZjE2IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZShoYWxmIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlMihoYWxmMiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTMoaGFsZjMgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmU0KGhhbGY0IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlOChoYWxmOCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZTE2KGhhbGYxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgaGFsZiAqcCk7CiNlbmRpZiAvL2NsX2tocl9mcDE2CiNlbmRpZiAvL2RlZmluZWQoX19vcGVuY2xfY19nZW5lcmljX2FkZHJlc3Nfc3BhY2UpCgovKioKICogUmVhZCBzaXplb2YgKGhhbGYpIGJ5dGVzIG9mIGRhdGEgZnJvbSBhZGRyZXNzCiAqIChwICsgb2Zmc2V0KS4gVGhlIGRhdGEgcmVhZCBpcyBpbnRlcnByZXRlZCBhcyBhCiAqIGhhbGYgdmFsdWUuIFRoZSBoYWxmIHZhbHVlIGlzIGNvbnZlcnRlZCB0byBhCiAqIGZsb2F0IHZhbHVlIGFuZCB0aGUgZmxvYXQgdmFsdWUgaXMgcmV0dXJuZWQuCiAqIFRoZSByZWFkIGFkZHJlc3MgY29tcHV0ZWQgYXMgKHAgKyBvZmZzZXQpCiAqIG11c3QgYmUgMTYtYml0IGFsaWduZWQuCiAqLwpmbG9hdCBfX292bGQgdmxvYWRfaGFsZihzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2NvbnN0YW50IGhhbGYgKnApOwojaWYgZGVmaW5lZChfX29wZW5jbF9jX2dlbmVyaWNfYWRkcmVzc19zcGFjZSkKZmxvYXQgX19vdmxkIHZsb2FkX2hhbGYoc2l6ZV90IG9mZnNldCwgY29uc3QgaGFsZiAqcCk7CiNlbHNlCmZsb2F0IF9fb3ZsZCB2bG9hZF9oYWxmKHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fZ2xvYmFsIGhhbGYgKnApOwpmbG9hdCBfX292bGQgdmxvYWRfaGFsZihzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2xvY2FsIGhhbGYgKnApOwpmbG9hdCBfX292bGQgdmxvYWRfaGFsZihzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX3ByaXZhdGUgaGFsZiAqcCk7CiNlbmRpZiAvL2RlZmluZWQoX19vcGVuY2xfY19nZW5lcmljX2FkZHJlc3Nfc3BhY2UpCgovKioKICogUmVhZCBzaXplb2YgKGhhbGZuKSBieXRlcyBvZiBkYXRhIGZyb20gYWRkcmVzcwogKiAocCArIChvZmZzZXQgKiBuKSkuIFRoZSBkYXRhIHJlYWQgaXMgaW50ZXJwcmV0ZWQKICogYXMgYSBoYWxmbiB2YWx1ZS4gVGhlIGhhbGZuIHZhbHVlIHJlYWQgaXMKICogY29udmVydGVkIHRvIGEgZmxvYXRuIHZhbHVlIGFuZCB0aGUgZmxvYXRuCiAqIHZhbHVlIGlzIHJldHVybmVkLiBUaGUgcmVhZCBhZGRyZXNzIGNvbXB1dGVkCiAqIGFzIChwICsgKG9mZnNldCAqIG4pKSBtdXN0IGJlIDE2LWJpdCBhbGlnbmVkLgogKi8KZmxvYXQyIF9fb3ZsZCB2bG9hZF9oYWxmMihzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2NvbnN0YW50IGhhbGYgKnApOwpmbG9hdDMgX19vdmxkIHZsb2FkX2hhbGYzKHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fY29uc3RhbnQgaGFsZiAqcCk7CmZsb2F0NCBfX292bGQgdmxvYWRfaGFsZjQoc2l6ZV90IG9mZnNldCwgY29uc3QgX19jb25zdGFudCBoYWxmICpwKTsKZmxvYXQ4IF9fb3ZsZCB2bG9hZF9oYWxmOChzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2NvbnN0YW50IGhhbGYgKnApOwpmbG9hdDE2IF9fb3ZsZCB2bG9hZF9oYWxmMTYoc2l6ZV90IG9mZnNldCwgY29uc3QgX19jb25zdGFudCBoYWxmICpwKTsKI2lmIGRlZmluZWQoX19vcGVuY2xfY19nZW5lcmljX2FkZHJlc3Nfc3BhY2UpCmZsb2F0MiBfX292bGQgdmxvYWRfaGFsZjIoc2l6ZV90IG9mZnNldCwgY29uc3QgaGFsZiAqcCk7CmZsb2F0MyBfX292bGQgdmxvYWRfaGFsZjMoc2l6ZV90IG9mZnNldCwgY29uc3QgaGFsZiAqcCk7CmZsb2F0NCBfX292bGQgdmxvYWRfaGFsZjQoc2l6ZV90IG9mZnNldCwgY29uc3QgaGFsZiAqcCk7CmZsb2F0OCBfX292bGQgdmxvYWRfaGFsZjgoc2l6ZV90IG9mZnNldCwgY29uc3QgaGFsZiAqcCk7CmZsb2F0MTYgX19vdmxkIHZsb2FkX2hhbGYxNihzaXplX3Qgb2Zmc2V0LCBjb25zdCBoYWxmICpwKTsKI2Vsc2UKZmxvYXQyIF9fb3ZsZCB2bG9hZF9oYWxmMihzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2dsb2JhbCBoYWxmICpwKTsKZmxvYXQzIF9fb3ZsZCB2bG9hZF9oYWxmMyhzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2dsb2JhbCBoYWxmICpwKTsKZmxvYXQ0IF9fb3ZsZCB2bG9hZF9oYWxmNChzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2dsb2JhbCBoYWxmICpwKTsKZmxvYXQ4IF9fb3ZsZCB2bG9hZF9oYWxmOChzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2dsb2JhbCBoYWxmICpwKTsKZmxvYXQxNiBfX292bGQgdmxvYWRfaGFsZjE2KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fZ2xvYmFsIGhhbGYgKnApOwpmbG9hdDIgX19vdmxkIHZsb2FkX2hhbGYyKHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fbG9jYWwgaGFsZiAqcCk7CmZsb2F0MyBfX292bGQgdmxvYWRfaGFsZjMoc2l6ZV90IG9mZnNldCwgY29uc3QgX19sb2NhbCBoYWxmICpwKTsKZmxvYXQ0IF9fb3ZsZCB2bG9hZF9oYWxmNChzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2xvY2FsIGhhbGYgKnApOwpmbG9hdDggX19vdmxkIHZsb2FkX2hhbGY4KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fbG9jYWwgaGFsZiAqcCk7CmZsb2F0MTYgX19vdmxkIHZsb2FkX2hhbGYxNihzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2xvY2FsIGhhbGYgKnApOwpmbG9hdDIgX19vdmxkIHZsb2FkX2hhbGYyKHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fcHJpdmF0ZSBoYWxmICpwKTsKZmxvYXQzIF9fb3ZsZCB2bG9hZF9oYWxmMyhzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX3ByaXZhdGUgaGFsZiAqcCk7CmZsb2F0NCBfX292bGQgdmxvYWRfaGFsZjQoc2l6ZV90IG9mZnNldCwgY29uc3QgX19wcml2YXRlIGhhbGYgKnApOwpmbG9hdDggX19vdmxkIHZsb2FkX2hhbGY4KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fcHJpdmF0ZSBoYWxmICpwKTsKZmxvYXQxNiBfX292bGQgdmxvYWRfaGFsZjE2KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fcHJpdmF0ZSBoYWxmICpwKTsKI2VuZGlmIC8vZGVmaW5lZChfX29wZW5jbF9jX2dlbmVyaWNfYWRkcmVzc19zcGFjZSkKCi8qKgogKiBUaGUgZmxvYXQgdmFsdWUgZ2l2ZW4gYnkgZGF0YSBpcyBmaXJzdAogKiBjb252ZXJ0ZWQgdG8gYSBoYWxmIHZhbHVlIHVzaW5nIHRoZSBhcHByb3ByaWF0ZQogKiByb3VuZGluZyBtb2RlLiBUaGUgaGFsZiB2YWx1ZSBpcyB0aGVuIHdyaXR0ZW4KICogdG8gYWRkcmVzcyBjb21wdXRlZCBhcyAocCArIG9mZnNldCkuIFRoZQogKiBhZGRyZXNzIGNvbXB1dGVkIGFzIChwICsgb2Zmc2V0KSBtdXN0IGJlIDE2LQogKiBiaXQgYWxpZ25lZC4KICogdnN0b3JlX2hhbGYgdXNlIHRoZSBjdXJyZW50IHJvdW5kaW5nIG1vZGUuCiAqIFRoZSBkZWZhdWx0IGN1cnJlbnQgcm91bmRpbmcgbW9kZSBpcyByb3VuZCB0bwogKiBuZWFyZXN0IGV2ZW4uCiAqLwojaWYgZGVmaW5lZChfX29wZW5jbF9jX2dlbmVyaWNfYWRkcmVzc19zcGFjZSkKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYoZmxvYXQgZGF0YSwgc2l6ZV90IG9mZnNldCwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmX3J0ZShmbG9hdCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGZfcnR6KGZsb2F0IGRhdGEsIHNpemVfdCBvZmZzZXQsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZl9ydHAoZmxvYXQgZGF0YSwgc2l6ZV90IG9mZnNldCwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmX3J0bihmbG9hdCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKI2lmZGVmIGNsX2tocl9mcDY0CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmKGRvdWJsZSBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGZfcnRlKGRvdWJsZSBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGZfcnR6KGRvdWJsZSBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGZfcnRwKGRvdWJsZSBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGZfcnRuKGRvdWJsZSBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKI2Vsc2UKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYoZmxvYXQgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19nbG9iYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmX3J0ZShmbG9hdCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGZfcnR6KGZsb2F0IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZl9ydHAoZmxvYXQgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19nbG9iYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmX3J0bihmbG9hdCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYoZmxvYXQgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGZfcnRlKGZsb2F0IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmX3J0eihmbG9hdCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZl9ydHAoZmxvYXQgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGZfcnRuKGZsb2F0IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmKGZsb2F0IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGZfcnRlKGZsb2F0IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGZfcnR6KGZsb2F0IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGZfcnRwKGZsb2F0IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGZfcnRuKGZsb2F0IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKI2lmZGVmIGNsX2tocl9mcDY0CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmKGRvdWJsZSBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGZfcnRlKGRvdWJsZSBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGZfcnR6KGRvdWJsZSBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGZfcnRwKGRvdWJsZSBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGZfcnRuKGRvdWJsZSBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYoZG91YmxlIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmX3J0ZShkb3VibGUgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGZfcnR6KGRvdWJsZSBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZl9ydHAoZG91YmxlIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmX3J0bihkb3VibGUgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYoZG91YmxlIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGZfcnRlKGRvdWJsZSBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmX3J0eihkb3VibGUgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZl9ydHAoZG91YmxlIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGZfcnRuKGRvdWJsZSBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgaGFsZiAqcCk7CiNlbmRpZiAvL2NsX2tocl9mcDY0CiNlbmRpZiAvL2RlZmluZWQoX19vcGVuY2xfY19nZW5lcmljX2FkZHJlc3Nfc3BhY2UpCgovKioKICogVGhlIGZsb2F0biB2YWx1ZSBnaXZlbiBieSBkYXRhIGlzIGNvbnZlcnRlZCB0bwogKiBhIGhhbGZuIHZhbHVlIHVzaW5nIHRoZSBhcHByb3ByaWF0ZSByb3VuZGluZwogKiBtb2RlLiBUaGUgaGFsZm4gdmFsdWUgaXMgdGhlbiB3cml0dGVuIHRvCiAqIGFkZHJlc3MgY29tcHV0ZWQgYXMgKHAgKyAob2Zmc2V0ICogbikpLiBUaGUKICogYWRkcmVzcyBjb21wdXRlZCBhcyAocCArIChvZmZzZXQgKiBuKSkgbXVzdCBiZQogKiAxNi1iaXQgYWxpZ25lZC4KICogdnN0b3JlX2hhbGZuIHVzZXMgdGhlIGN1cnJlbnQgcm91bmRpbmcgbW9kZS4KICogVGhlIGRlZmF1bHQgY3VycmVudCByb3VuZGluZyBtb2RlIGlzIHJvdW5kIHRvCiAqIG5lYXJlc3QgZXZlbi4KICovCiNpZiBkZWZpbmVkKF9fb3BlbmNsX2NfZ2VuZXJpY19hZGRyZXNzX3NwYWNlKQp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjIoZmxvYXQyIGRhdGEsIHNpemVfdCBvZmZzZXQsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjMoZmxvYXQzIGRhdGEsIHNpemVfdCBvZmZzZXQsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjQoZmxvYXQ0IGRhdGEsIHNpemVfdCBvZmZzZXQsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjgoZmxvYXQ4IGRhdGEsIHNpemVfdCBvZmZzZXQsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjE2KGZsb2F0MTYgZGF0YSwgc2l6ZV90IG9mZnNldCwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmMl9ydGUoZmxvYXQyIGRhdGEsIHNpemVfdCBvZmZzZXQsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjNfcnRlKGZsb2F0MyBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGY0X3J0ZShmbG9hdDQgZGF0YSwgc2l6ZV90IG9mZnNldCwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmOF9ydGUoZmxvYXQ4IGRhdGEsIHNpemVfdCBvZmZzZXQsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjE2X3J0ZShmbG9hdDE2IGRhdGEsIHNpemVfdCBvZmZzZXQsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjJfcnR6KGZsb2F0MiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYzX3J0eihmbG9hdDMgZGF0YSwgc2l6ZV90IG9mZnNldCwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmNF9ydHooZmxvYXQ0IGRhdGEsIHNpemVfdCBvZmZzZXQsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjhfcnR6KGZsb2F0OCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYxNl9ydHooZmxvYXQxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYyX3J0cChmbG9hdDIgZGF0YSwgc2l6ZV90IG9mZnNldCwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmM19ydHAoZmxvYXQzIGRhdGEsIHNpemVfdCBvZmZzZXQsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjRfcnRwKGZsb2F0NCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGY4X3J0cChmbG9hdDggZGF0YSwgc2l6ZV90IG9mZnNldCwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmMTZfcnRwKGZsb2F0MTYgZGF0YSwgc2l6ZV90IG9mZnNldCwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmMl9ydG4oZmxvYXQyIGRhdGEsIHNpemVfdCBvZmZzZXQsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjNfcnRuKGZsb2F0MyBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGY0X3J0bihmbG9hdDQgZGF0YSwgc2l6ZV90IG9mZnNldCwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmOF9ydG4oZmxvYXQ4IGRhdGEsIHNpemVfdCBvZmZzZXQsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjE2X3J0bihmbG9hdDE2IGRhdGEsIHNpemVfdCBvZmZzZXQsIGhhbGYgKnApOwojaWZkZWYgY2xfa2hyX2ZwNjQKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYyKGRvdWJsZTIgZGF0YSwgc2l6ZV90IG9mZnNldCwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmMyhkb3VibGUzIGRhdGEsIHNpemVfdCBvZmZzZXQsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjQoZG91YmxlNCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGY4KGRvdWJsZTggZGF0YSwgc2l6ZV90IG9mZnNldCwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmMTYoZG91YmxlMTYgZGF0YSwgc2l6ZV90IG9mZnNldCwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmMl9ydGUoZG91YmxlMiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYzX3J0ZShkb3VibGUzIGRhdGEsIHNpemVfdCBvZmZzZXQsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjRfcnRlKGRvdWJsZTQgZGF0YSwgc2l6ZV90IG9mZnNldCwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmOF9ydGUoZG91YmxlOCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYxNl9ydGUoZG91YmxlMTYgZGF0YSwgc2l6ZV90IG9mZnNldCwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmMl9ydHooZG91YmxlMiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYzX3J0eihkb3VibGUzIGRhdGEsIHNpemVfdCBvZmZzZXQsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjRfcnR6KGRvdWJsZTQgZGF0YSwgc2l6ZV90IG9mZnNldCwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmOF9ydHooZG91YmxlOCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYxNl9ydHooZG91YmxlMTYgZGF0YSwgc2l6ZV90IG9mZnNldCwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmMl9ydHAoZG91YmxlMiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYzX3J0cChkb3VibGUzIGRhdGEsIHNpemVfdCBvZmZzZXQsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjRfcnRwKGRvdWJsZTQgZGF0YSwgc2l6ZV90IG9mZnNldCwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmOF9ydHAoZG91YmxlOCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYxNl9ydHAoZG91YmxlMTYgZGF0YSwgc2l6ZV90IG9mZnNldCwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmMl9ydG4oZG91YmxlMiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYzX3J0bihkb3VibGUzIGRhdGEsIHNpemVfdCBvZmZzZXQsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjRfcnRuKGRvdWJsZTQgZGF0YSwgc2l6ZV90IG9mZnNldCwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmOF9ydG4oZG91YmxlOCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYxNl9ydG4oZG91YmxlMTYgZGF0YSwgc2l6ZV90IG9mZnNldCwgaGFsZiAqcCk7CiNlbmRpZiAvL2NsX2tocl9mcDY0CiNlbHNlCnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmMihmbG9hdDIgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19nbG9iYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmMyhmbG9hdDMgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19nbG9iYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmNChmbG9hdDQgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19nbG9iYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmOChmbG9hdDggZGF0YSwgc2l6ZV90IG9mZnNldCwgX19nbG9iYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmMTYoZmxvYXQxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYyX3J0ZShmbG9hdDIgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19nbG9iYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmM19ydGUoZmxvYXQzIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjRfcnRlKGZsb2F0NCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGY4X3J0ZShmbG9hdDggZGF0YSwgc2l6ZV90IG9mZnNldCwgX19nbG9iYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmMTZfcnRlKGZsb2F0MTYgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19nbG9iYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmMl9ydHooZmxvYXQyIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjNfcnR6KGZsb2F0MyBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGY0X3J0eihmbG9hdDQgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19nbG9iYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmOF9ydHooZmxvYXQ4IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjE2X3J0eihmbG9hdDE2IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjJfcnRwKGZsb2F0MiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYzX3J0cChmbG9hdDMgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19nbG9iYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmNF9ydHAoZmxvYXQ0IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjhfcnRwKGZsb2F0OCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYxNl9ydHAoZmxvYXQxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYyX3J0bihmbG9hdDIgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19nbG9iYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmM19ydG4oZmxvYXQzIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjRfcnRuKGZsb2F0NCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGY4X3J0bihmbG9hdDggZGF0YSwgc2l6ZV90IG9mZnNldCwgX19nbG9iYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmMTZfcnRuKGZsb2F0MTYgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19nbG9iYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmMihmbG9hdDIgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYzKGZsb2F0MyBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjQoZmxvYXQ0IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmOChmbG9hdDggZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYxNihmbG9hdDE2IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmMl9ydGUoZmxvYXQyIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmM19ydGUoZmxvYXQzIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmNF9ydGUoZmxvYXQ0IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmOF9ydGUoZmxvYXQ4IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmMTZfcnRlKGZsb2F0MTYgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYyX3J0eihmbG9hdDIgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYzX3J0eihmbG9hdDMgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGY0X3J0eihmbG9hdDQgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGY4X3J0eihmbG9hdDggZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYxNl9ydHooZmxvYXQxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjJfcnRwKGZsb2F0MiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjNfcnRwKGZsb2F0MyBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjRfcnRwKGZsb2F0NCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjhfcnRwKGZsb2F0OCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjE2X3J0cChmbG9hdDE2IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmMl9ydG4oZmxvYXQyIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmM19ydG4oZmxvYXQzIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmNF9ydG4oZmxvYXQ0IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmOF9ydG4oZmxvYXQ4IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmMTZfcnRuKGZsb2F0MTYgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYyKGZsb2F0MiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmMyhmbG9hdDMgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjQoZmxvYXQ0IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGY4KGZsb2F0OCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmMTYoZmxvYXQxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmMl9ydGUoZmxvYXQyIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYzX3J0ZShmbG9hdDMgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjRfcnRlKGZsb2F0NCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmOF9ydGUoZmxvYXQ4IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYxNl9ydGUoZmxvYXQxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmMl9ydHooZmxvYXQyIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYzX3J0eihmbG9hdDMgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjRfcnR6KGZsb2F0NCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmOF9ydHooZmxvYXQ4IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYxNl9ydHooZmxvYXQxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmMl9ydHAoZmxvYXQyIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYzX3J0cChmbG9hdDMgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjRfcnRwKGZsb2F0NCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmOF9ydHAoZmxvYXQ4IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYxNl9ydHAoZmxvYXQxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmMl9ydG4oZmxvYXQyIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYzX3J0bihmbG9hdDMgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjRfcnRuKGZsb2F0NCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmOF9ydG4oZmxvYXQ4IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYxNl9ydG4oZmxvYXQxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgaGFsZiAqcCk7CiNpZmRlZiBjbF9raHJfZnA2NAp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjIoZG91YmxlMiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYzKGRvdWJsZTMgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19nbG9iYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmNChkb3VibGU0IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjgoZG91YmxlOCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYxNihkb3VibGUxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYyX3J0ZShkb3VibGUyIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjNfcnRlKGRvdWJsZTMgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19nbG9iYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmNF9ydGUoZG91YmxlNCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGY4X3J0ZShkb3VibGU4IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjE2X3J0ZShkb3VibGUxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYyX3J0eihkb3VibGUyIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjNfcnR6KGRvdWJsZTMgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19nbG9iYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmNF9ydHooZG91YmxlNCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGY4X3J0eihkb3VibGU4IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjE2X3J0eihkb3VibGUxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYyX3J0cChkb3VibGUyIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjNfcnRwKGRvdWJsZTMgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19nbG9iYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmNF9ydHAoZG91YmxlNCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGY4X3J0cChkb3VibGU4IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjE2X3J0cChkb3VibGUxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYyX3J0bihkb3VibGUyIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjNfcnRuKGRvdWJsZTMgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19nbG9iYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmNF9ydG4oZG91YmxlNCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGY4X3J0bihkb3VibGU4IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjE2X3J0bihkb3VibGUxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYyKGRvdWJsZTIgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYzKGRvdWJsZTMgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGY0KGRvdWJsZTQgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGY4KGRvdWJsZTggZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYxNihkb3VibGUxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjJfcnRlKGRvdWJsZTIgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYzX3J0ZShkb3VibGUzIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmNF9ydGUoZG91YmxlNCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjhfcnRlKGRvdWJsZTggZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYxNl9ydGUoZG91YmxlMTYgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYyX3J0eihkb3VibGUyIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmM19ydHooZG91YmxlMyBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjRfcnR6KGRvdWJsZTQgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGY4X3J0eihkb3VibGU4IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmMTZfcnR6KGRvdWJsZTE2IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmMl9ydHAoZG91YmxlMiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjNfcnRwKGRvdWJsZTMgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGY0X3J0cChkb3VibGU0IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmOF9ydHAoZG91YmxlOCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjE2X3J0cChkb3VibGUxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjJfcnRuKGRvdWJsZTIgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYzX3J0bihkb3VibGUzIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmNF9ydG4oZG91YmxlNCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjhfcnRuKGRvdWJsZTggZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYxNl9ydG4oZG91YmxlMTYgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYyKGRvdWJsZTIgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjMoZG91YmxlMyBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmNChkb3VibGU0IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGY4KGRvdWJsZTggZGF0YSwgc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjE2KGRvdWJsZTE2IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYyX3J0ZShkb3VibGUyIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYzX3J0ZShkb3VibGUzIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGY0X3J0ZShkb3VibGU0IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGY4X3J0ZShkb3VibGU4IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYxNl9ydGUoZG91YmxlMTYgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjJfcnR6KGRvdWJsZTIgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjNfcnR6KGRvdWJsZTMgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjRfcnR6KGRvdWJsZTQgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjhfcnR6KGRvdWJsZTggZGF0YSwgc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVfaGFsZjE2X3J0eihkb3VibGUxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmMl9ydHAoZG91YmxlMiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmM19ydHAoZG91YmxlMyBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmNF9ydHAoZG91YmxlNCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmOF9ydHAoZG91YmxlOCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZV9oYWxmMTZfcnRwKGRvdWJsZTE2IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYyX3J0bihkb3VibGUyIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYzX3J0bihkb3VibGUzIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGY0X3J0bihkb3VibGU0IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGY4X3J0bihkb3VibGU4IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlX2hhbGYxNl9ydG4oZG91YmxlMTYgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIGhhbGYgKnApOwojZW5kaWYgLy9jbF9raHJfZnA2NAojZW5kaWYgLy9kZWZpbmVkKF9fb3BlbmNsX2NfZ2VuZXJpY19hZGRyZXNzX3NwYWNlKQoKLyoqCiAqIEZvciBuID0gMSwgMiwgNCwgOCBhbmQgMTYgcmVhZCBzaXplb2YgKGhhbGZuKQogKiBieXRlcyBvZiBkYXRhIGZyb20gYWRkcmVzcyAocCArIChvZmZzZXQgKiBuKSkuCiAqIFRoZSBkYXRhIHJlYWQgaXMgaW50ZXJwcmV0ZWQgYXMgYSBoYWxmbiB2YWx1ZS4KICogVGhlIGhhbGZuIHZhbHVlIHJlYWQgaXMgY29udmVydGVkIHRvIGEgZmxvYXRuCiAqIHZhbHVlIGFuZCB0aGUgZmxvYXRuIHZhbHVlIGlzIHJldHVybmVkLgogKiBUaGUgYWRkcmVzcyBjb21wdXRlZCBhcyAocCArIChvZmZzZXQgKiBuKSkKICogbXVzdCBiZSBhbGlnbmVkIHRvIHNpemVvZiAoaGFsZm4pIGJ5dGVzLgogKiBGb3IgbiA9IDMsIHZsb2FkYV9oYWxmMyByZWFkcyBhIGhhbGYzIGZyb20KICogYWRkcmVzcyAocCArIChvZmZzZXQgKiA0KSkgYW5kIHJldHVybnMgYSBmbG9hdDMuCiAqIFRoZSBhZGRyZXNzIGNvbXB1dGVkIGFzIChwICsgKG9mZnNldCAqIDQpKQogKiBtdXN0IGJlIGFsaWduZWQgdG8gc2l6ZW9mIChoYWxmKSAqIDQgYnl0ZXMuCiAqLwpmbG9hdDIgX19vdmxkIHZsb2FkYV9oYWxmMihzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2NvbnN0YW50IGhhbGYgKnApOwpmbG9hdDMgX19vdmxkIHZsb2FkYV9oYWxmMyhzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2NvbnN0YW50IGhhbGYgKnApOwpmbG9hdDQgX19vdmxkIHZsb2FkYV9oYWxmNChzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2NvbnN0YW50IGhhbGYgKnApOwpmbG9hdDggX19vdmxkIHZsb2FkYV9oYWxmOChzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2NvbnN0YW50IGhhbGYgKnApOwpmbG9hdDE2IF9fb3ZsZCB2bG9hZGFfaGFsZjE2KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fY29uc3RhbnQgaGFsZiAqcCk7CiNpZiBkZWZpbmVkKF9fb3BlbmNsX2NfZ2VuZXJpY19hZGRyZXNzX3NwYWNlKQpmbG9hdDIgX19vdmxkIHZsb2FkYV9oYWxmMihzaXplX3Qgb2Zmc2V0LCBjb25zdCBoYWxmICpwKTsKZmxvYXQzIF9fb3ZsZCB2bG9hZGFfaGFsZjMoc2l6ZV90IG9mZnNldCwgY29uc3QgaGFsZiAqcCk7CmZsb2F0NCBfX292bGQgdmxvYWRhX2hhbGY0KHNpemVfdCBvZmZzZXQsIGNvbnN0IGhhbGYgKnApOwpmbG9hdDggX19vdmxkIHZsb2FkYV9oYWxmOChzaXplX3Qgb2Zmc2V0LCBjb25zdCBoYWxmICpwKTsKZmxvYXQxNiBfX292bGQgdmxvYWRhX2hhbGYxNihzaXplX3Qgb2Zmc2V0LCBjb25zdCBoYWxmICpwKTsKI2Vsc2UKZmxvYXQyIF9fb3ZsZCB2bG9hZGFfaGFsZjIoc2l6ZV90IG9mZnNldCwgY29uc3QgX19nbG9iYWwgaGFsZiAqcCk7CmZsb2F0MyBfX292bGQgdmxvYWRhX2hhbGYzKHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fZ2xvYmFsIGhhbGYgKnApOwpmbG9hdDQgX19vdmxkIHZsb2FkYV9oYWxmNChzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX2dsb2JhbCBoYWxmICpwKTsKZmxvYXQ4IF9fb3ZsZCB2bG9hZGFfaGFsZjgoc2l6ZV90IG9mZnNldCwgY29uc3QgX19nbG9iYWwgaGFsZiAqcCk7CmZsb2F0MTYgX19vdmxkIHZsb2FkYV9oYWxmMTYoc2l6ZV90IG9mZnNldCwgY29uc3QgX19nbG9iYWwgaGFsZiAqcCk7CmZsb2F0MiBfX292bGQgdmxvYWRhX2hhbGYyKHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fbG9jYWwgaGFsZiAqcCk7CmZsb2F0MyBfX292bGQgdmxvYWRhX2hhbGYzKHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fbG9jYWwgaGFsZiAqcCk7CmZsb2F0NCBfX292bGQgdmxvYWRhX2hhbGY0KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fbG9jYWwgaGFsZiAqcCk7CmZsb2F0OCBfX292bGQgdmxvYWRhX2hhbGY4KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fbG9jYWwgaGFsZiAqcCk7CmZsb2F0MTYgX19vdmxkIHZsb2FkYV9oYWxmMTYoc2l6ZV90IG9mZnNldCwgY29uc3QgX19sb2NhbCBoYWxmICpwKTsKZmxvYXQyIF9fb3ZsZCB2bG9hZGFfaGFsZjIoc2l6ZV90IG9mZnNldCwgY29uc3QgX19wcml2YXRlIGhhbGYgKnApOwpmbG9hdDMgX19vdmxkIHZsb2FkYV9oYWxmMyhzaXplX3Qgb2Zmc2V0LCBjb25zdCBfX3ByaXZhdGUgaGFsZiAqcCk7CmZsb2F0NCBfX292bGQgdmxvYWRhX2hhbGY0KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fcHJpdmF0ZSBoYWxmICpwKTsKZmxvYXQ4IF9fb3ZsZCB2bG9hZGFfaGFsZjgoc2l6ZV90IG9mZnNldCwgY29uc3QgX19wcml2YXRlIGhhbGYgKnApOwpmbG9hdDE2IF9fb3ZsZCB2bG9hZGFfaGFsZjE2KHNpemVfdCBvZmZzZXQsIGNvbnN0IF9fcHJpdmF0ZSBoYWxmICpwKTsKI2VuZGlmIC8vZGVmaW5lZChfX29wZW5jbF9jX2dlbmVyaWNfYWRkcmVzc19zcGFjZSkKCi8qKgogKiBUaGUgZmxvYXRuIHZhbHVlIGdpdmVuIGJ5IGRhdGEgaXMgY29udmVydGVkIHRvCiAqIGEgaGFsZm4gdmFsdWUgdXNpbmcgdGhlIGFwcHJvcHJpYXRlIHJvdW5kaW5nCiAqIG1vZGUuCiAqIEZvciBuID0gMSwgMiwgNCwgOCBhbmQgMTYsIHRoZSBoYWxmbiB2YWx1ZSBpcwogKiB3cml0dGVuIHRvIHRoZSBhZGRyZXNzIGNvbXB1dGVkIGFzIChwICsgKG9mZnNldAogKiAqIG4pKS4gVGhlIGFkZHJlc3MgY29tcHV0ZWQgYXMgKHAgKyAob2Zmc2V0ICoKICogbikpIG11c3QgYmUgYWxpZ25lZCB0byBzaXplb2YgKGhhbGZuKSBieXRlcy4KICogRm9yIG4gPSAzLCB0aGUgaGFsZjMgdmFsdWUgaXMgd3JpdHRlbiB0byB0aGUKICogYWRkcmVzcyBjb21wdXRlZCBhcyAocCArIChvZmZzZXQgKiA0KSkuIFRoZQogKiBhZGRyZXNzIGNvbXB1dGVkIGFzIChwICsgKG9mZnNldCAqIDQpKSBtdXN0IGJlCiAqIGFsaWduZWQgdG8gc2l6ZW9mIChoYWxmKSAqIDQgYnl0ZXMuCiAqIHZzdG9yZWFfaGFsZm4gdXNlcyB0aGUgY3VycmVudCByb3VuZGluZwogKiBtb2RlLiBUaGUgZGVmYXVsdCBjdXJyZW50IHJvdW5kaW5nIG1vZGUgaXMKICogcm91bmQgdG8gbmVhcmVzdCBldmVuLgogKi8KI2lmIGRlZmluZWQoX19vcGVuY2xfY19nZW5lcmljX2FkZHJlc3Nfc3BhY2UpCnZvaWQgX19vdmxkIHZzdG9yZWFfaGFsZjIoZmxvYXQyIGRhdGEsIHNpemVfdCBvZmZzZXQsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGYzKGZsb2F0MyBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmNChmbG9hdDQgZGF0YSwgc2l6ZV90IG9mZnNldCwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZWFfaGFsZjgoZmxvYXQ4IGRhdGEsIHNpemVfdCBvZmZzZXQsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGYxNihmbG9hdDE2IGRhdGEsIHNpemVfdCBvZmZzZXQsIGhhbGYgKnApOwoKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmMl9ydGUoZmxvYXQyIGRhdGEsIHNpemVfdCBvZmZzZXQsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGYzX3J0ZShmbG9hdDMgZGF0YSwgc2l6ZV90IG9mZnNldCwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZWFfaGFsZjRfcnRlKGZsb2F0NCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmOF9ydGUoZmxvYXQ4IGRhdGEsIHNpemVfdCBvZmZzZXQsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGYxNl9ydGUoZmxvYXQxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKCnZvaWQgX19vdmxkIHZzdG9yZWFfaGFsZjJfcnR6KGZsb2F0MiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmM19ydHooZmxvYXQzIGRhdGEsIHNpemVfdCBvZmZzZXQsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGY0X3J0eihmbG9hdDQgZGF0YSwgc2l6ZV90IG9mZnNldCwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZWFfaGFsZjhfcnR6KGZsb2F0OCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmMTZfcnR6KGZsb2F0MTYgZGF0YSwgc2l6ZV90IG9mZnNldCwgaGFsZiAqcCk7Cgp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGYyX3J0cChmbG9hdDIgZGF0YSwgc2l6ZV90IG9mZnNldCwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZWFfaGFsZjNfcnRwKGZsb2F0MyBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmNF9ydHAoZmxvYXQ0IGRhdGEsIHNpemVfdCBvZmZzZXQsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGY4X3J0cChmbG9hdDggZGF0YSwgc2l6ZV90IG9mZnNldCwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZWFfaGFsZjE2X3J0cChmbG9hdDE2IGRhdGEsIHNpemVfdCBvZmZzZXQsIGhhbGYgKnApOwoKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmMl9ydG4oZmxvYXQyIGRhdGEsIHNpemVfdCBvZmZzZXQsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGYzX3J0bihmbG9hdDMgZGF0YSwgc2l6ZV90IG9mZnNldCwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZWFfaGFsZjRfcnRuKGZsb2F0NCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmOF9ydG4oZmxvYXQ4IGRhdGEsIHNpemVfdCBvZmZzZXQsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGYxNl9ydG4oZmxvYXQxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKCiNpZmRlZiBjbF9raHJfZnA2NAp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGYyKGRvdWJsZTIgZGF0YSwgc2l6ZV90IG9mZnNldCwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZWFfaGFsZjMoZG91YmxlMyBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmNChkb3VibGU0IGRhdGEsIHNpemVfdCBvZmZzZXQsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGY4KGRvdWJsZTggZGF0YSwgc2l6ZV90IG9mZnNldCwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZWFfaGFsZjE2KGRvdWJsZTE2IGRhdGEsIHNpemVfdCBvZmZzZXQsIGhhbGYgKnApOwoKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmMl9ydGUoZG91YmxlMiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmM19ydGUoZG91YmxlMyBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmNF9ydGUoZG91YmxlNCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmOF9ydGUoZG91YmxlOCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmMTZfcnRlKGRvdWJsZTE2IGRhdGEsIHNpemVfdCBvZmZzZXQsIGhhbGYgKnApOwoKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmMl9ydHooZG91YmxlMiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmM19ydHooZG91YmxlMyBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmNF9ydHooZG91YmxlNCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmOF9ydHooZG91YmxlOCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmMTZfcnR6KGRvdWJsZTE2IGRhdGEsIHNpemVfdCBvZmZzZXQsIGhhbGYgKnApOwoKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmMl9ydHAoZG91YmxlMiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmM19ydHAoZG91YmxlMyBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmNF9ydHAoZG91YmxlNCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmOF9ydHAoZG91YmxlOCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmMTZfcnRwKGRvdWJsZTE2IGRhdGEsIHNpemVfdCBvZmZzZXQsIGhhbGYgKnApOwoKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmMl9ydG4oZG91YmxlMiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmM19ydG4oZG91YmxlMyBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmNF9ydG4oZG91YmxlNCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmOF9ydG4oZG91YmxlOCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmMTZfcnRuKGRvdWJsZTE2IGRhdGEsIHNpemVfdCBvZmZzZXQsIGhhbGYgKnApOwojZW5kaWYgLy9jbF9raHJfZnA2NAoKI2Vsc2UKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmMihmbG9hdDIgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19nbG9iYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZWFfaGFsZjMoZmxvYXQzIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGY0KGZsb2F0NCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmOChmbG9hdDggZGF0YSwgc2l6ZV90IG9mZnNldCwgX19nbG9iYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZWFfaGFsZjE2KGZsb2F0MTYgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19nbG9iYWwgaGFsZiAqcCk7Cgp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGYyX3J0ZShmbG9hdDIgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19nbG9iYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZWFfaGFsZjNfcnRlKGZsb2F0MyBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmNF9ydGUoZmxvYXQ0IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGY4X3J0ZShmbG9hdDggZGF0YSwgc2l6ZV90IG9mZnNldCwgX19nbG9iYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZWFfaGFsZjE2X3J0ZShmbG9hdDE2IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGhhbGYgKnApOwoKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmMl9ydHooZmxvYXQyIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGYzX3J0eihmbG9hdDMgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19nbG9iYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZWFfaGFsZjRfcnR6KGZsb2F0NCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmOF9ydHooZmxvYXQ4IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGYxNl9ydHooZmxvYXQxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCBoYWxmICpwKTsKCnZvaWQgX19vdmxkIHZzdG9yZWFfaGFsZjJfcnRwKGZsb2F0MiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmM19ydHAoZmxvYXQzIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGY0X3J0cChmbG9hdDQgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19nbG9iYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZWFfaGFsZjhfcnRwKGZsb2F0OCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmMTZfcnRwKGZsb2F0MTYgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19nbG9iYWwgaGFsZiAqcCk7Cgp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGYyX3J0bihmbG9hdDIgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19nbG9iYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZWFfaGFsZjNfcnRuKGZsb2F0MyBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmNF9ydG4oZmxvYXQ0IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGY4X3J0bihmbG9hdDggZGF0YSwgc2l6ZV90IG9mZnNldCwgX19nbG9iYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZWFfaGFsZjE2X3J0bihmbG9hdDE2IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGhhbGYgKnApOwoKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmMihmbG9hdDIgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmMyhmbG9hdDMgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmNChmbG9hdDQgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmOChmbG9hdDggZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmMTYoZmxvYXQxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIGhhbGYgKnApOwoKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmMl9ydGUoZmxvYXQyIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZWFfaGFsZjNfcnRlKGZsb2F0MyBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGY0X3J0ZShmbG9hdDQgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmOF9ydGUoZmxvYXQ4IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZWFfaGFsZjE2X3J0ZShmbG9hdDE2IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgaGFsZiAqcCk7Cgp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGYyX3J0eihmbG9hdDIgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmM19ydHooZmxvYXQzIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZWFfaGFsZjRfcnR6KGZsb2F0NCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGY4X3J0eihmbG9hdDggZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmMTZfcnR6KGZsb2F0MTYgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBoYWxmICpwKTsKCnZvaWQgX19vdmxkIHZzdG9yZWFfaGFsZjJfcnRwKGZsb2F0MiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGYzX3J0cChmbG9hdDMgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmNF9ydHAoZmxvYXQ0IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZWFfaGFsZjhfcnRwKGZsb2F0OCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGYxNl9ydHAoZmxvYXQxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIGhhbGYgKnApOwoKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmMl9ydG4oZmxvYXQyIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZWFfaGFsZjNfcnRuKGZsb2F0MyBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGY0X3J0bihmbG9hdDQgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmOF9ydG4oZmxvYXQ4IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZWFfaGFsZjE2X3J0bihmbG9hdDE2IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgaGFsZiAqcCk7Cgp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGYyKGZsb2F0MiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZWFfaGFsZjMoZmxvYXQzIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmNChmbG9hdDQgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGY4KGZsb2F0OCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZWFfaGFsZjE2KGZsb2F0MTYgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIGhhbGYgKnApOwoKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmMl9ydGUoZmxvYXQyIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmM19ydGUoZmxvYXQzIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmNF9ydGUoZmxvYXQ0IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmOF9ydGUoZmxvYXQ4IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmMTZfcnRlKGZsb2F0MTYgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIGhhbGYgKnApOwoKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmMl9ydHooZmxvYXQyIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmM19ydHooZmxvYXQzIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmNF9ydHooZmxvYXQ0IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmOF9ydHooZmxvYXQ4IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmMTZfcnR6KGZsb2F0MTYgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIGhhbGYgKnApOwoKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmMl9ydHAoZmxvYXQyIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmM19ydHAoZmxvYXQzIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmNF9ydHAoZmxvYXQ0IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmOF9ydHAoZmxvYXQ4IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmMTZfcnRwKGZsb2F0MTYgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIGhhbGYgKnApOwoKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmMl9ydG4oZmxvYXQyIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmM19ydG4oZmxvYXQzIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmNF9ydG4oZmxvYXQ0IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmOF9ydG4oZmxvYXQ4IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmMTZfcnRuKGZsb2F0MTYgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIGhhbGYgKnApOwoKI2lmZGVmIGNsX2tocl9mcDY0CnZvaWQgX19vdmxkIHZzdG9yZWFfaGFsZjIoZG91YmxlMiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmMyhkb3VibGUzIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGY0KGRvdWJsZTQgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19nbG9iYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZWFfaGFsZjgoZG91YmxlOCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2dsb2JhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmMTYoZG91YmxlMTYgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19nbG9iYWwgaGFsZiAqcCk7Cgp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGYyX3J0ZShkb3VibGUyIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGYzX3J0ZShkb3VibGUzIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGY0X3J0ZShkb3VibGU0IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGY4X3J0ZShkb3VibGU4IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGYxNl9ydGUoZG91YmxlMTYgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19nbG9iYWwgaGFsZiAqcCk7Cgp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGYyX3J0eihkb3VibGUyIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGYzX3J0eihkb3VibGUzIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGY0X3J0eihkb3VibGU0IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGY4X3J0eihkb3VibGU4IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGYxNl9ydHooZG91YmxlMTYgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19nbG9iYWwgaGFsZiAqcCk7Cgp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGYyX3J0cChkb3VibGUyIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGYzX3J0cChkb3VibGUzIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGY0X3J0cChkb3VibGU0IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGY4X3J0cChkb3VibGU4IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGYxNl9ydHAoZG91YmxlMTYgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19nbG9iYWwgaGFsZiAqcCk7Cgp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGYyX3J0bihkb3VibGUyIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGYzX3J0bihkb3VibGUzIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGY0X3J0bihkb3VibGU0IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGY4X3J0bihkb3VibGU4IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fZ2xvYmFsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGYxNl9ydG4oZG91YmxlMTYgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19nbG9iYWwgaGFsZiAqcCk7Cgp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGYyKGRvdWJsZTIgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmMyhkb3VibGUzIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZWFfaGFsZjQoZG91YmxlNCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGY4KGRvdWJsZTggZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmMTYoZG91YmxlMTYgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBoYWxmICpwKTsKCnZvaWQgX19vdmxkIHZzdG9yZWFfaGFsZjJfcnRlKGRvdWJsZTIgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmM19ydGUoZG91YmxlMyBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGY0X3J0ZShkb3VibGU0IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZWFfaGFsZjhfcnRlKGRvdWJsZTggZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmMTZfcnRlKGRvdWJsZTE2IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgaGFsZiAqcCk7Cgp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGYyX3J0eihkb3VibGUyIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZWFfaGFsZjNfcnR6KGRvdWJsZTMgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmNF9ydHooZG91YmxlNCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGY4X3J0eihkb3VibGU4IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZWFfaGFsZjE2X3J0eihkb3VibGUxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIGhhbGYgKnApOwoKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmMl9ydHAoZG91YmxlMiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGYzX3J0cChkb3VibGUzIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZWFfaGFsZjRfcnRwKGRvdWJsZTQgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmOF9ydHAoZG91YmxlOCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGYxNl9ydHAoZG91YmxlMTYgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBoYWxmICpwKTsKCnZvaWQgX19vdmxkIHZzdG9yZWFfaGFsZjJfcnRuKGRvdWJsZTIgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmM19ydG4oZG91YmxlMyBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX2xvY2FsIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGY0X3J0bihkb3VibGU0IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZWFfaGFsZjhfcnRuKGRvdWJsZTggZGF0YSwgc2l6ZV90IG9mZnNldCwgX19sb2NhbCBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmMTZfcnRuKGRvdWJsZTE2IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fbG9jYWwgaGFsZiAqcCk7Cgp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGYyKGRvdWJsZTIgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGYzKGRvdWJsZTMgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGY0KGRvdWJsZTQgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGY4KGRvdWJsZTggZGF0YSwgc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGYxNihkb3VibGUxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgaGFsZiAqcCk7Cgp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGYyX3J0ZShkb3VibGUyIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmM19ydGUoZG91YmxlMyBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZWFfaGFsZjRfcnRlKGRvdWJsZTQgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGY4X3J0ZShkb3VibGU4IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmMTZfcnRlKGRvdWJsZTE2IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKCnZvaWQgX19vdmxkIHZzdG9yZWFfaGFsZjJfcnR6KGRvdWJsZTIgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGYzX3J0eihkb3VibGUzIGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmNF9ydHooZG91YmxlNCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZWFfaGFsZjhfcnR6KGRvdWJsZTggZGF0YSwgc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGYxNl9ydHooZG91YmxlMTYgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIGhhbGYgKnApOwoKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmMl9ydHAoZG91YmxlMiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZWFfaGFsZjNfcnRwKGRvdWJsZTMgZGF0YSwgc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGY0X3J0cChkb3VibGU0IGRhdGEsIHNpemVfdCBvZmZzZXQsIF9fcHJpdmF0ZSBoYWxmICpwKTsKdm9pZCBfX292bGQgdnN0b3JlYV9oYWxmOF9ydHAoZG91YmxlOCBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgaGFsZiAqcCk7CnZvaWQgX19vdmxkIHZzdG9yZWFfaGFsZjE2X3J0cChkb3VibGUxNiBkYXRhLCBzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgaGFsZiAqcCk7Cgp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGYyX3J0bihkb3VibGUyIGRhdGEsc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGYzX3J0bihkb3VibGUzIGRhdGEsc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGY0X3J0bihkb3VibGU0IGRhdGEsc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGY4X3J0bihkb3VibGU4IGRhdGEsc2l6ZV90IG9mZnNldCwgX19wcml2YXRlIGhhbGYgKnApOwp2b2lkIF9fb3ZsZCB2c3RvcmVhX2hhbGYxNl9ydG4oZG91YmxlMTYgZGF0YSxzaXplX3Qgb2Zmc2V0LCBfX3ByaXZhdGUgaGFsZiAqcCk7CiNlbmRpZiAvL2NsX2tocl9mcDY0CiNlbmRpZiAvL2RlZmluZWQoX19vcGVuY2xfY19nZW5lcmljX2FkZHJlc3Nfc3BhY2UpCgovLyBPcGVuQ0wgdjEuMSBzNi4xMS44LCB2MS4yIHM2LjEyLjgsIHYyLjAgczYuMTMuOCAtIFN5bmNocm9uaXphdGlvbiBGdW5jdGlvbnMKCi8qKgogKiBBbGwgd29yay1pdGVtcyBpbiBhIHdvcmstZ3JvdXAgZXhlY3V0aW5nIHRoZSBrZXJuZWwKICogb24gYSBwcm9jZXNzb3IgbXVzdCBleGVjdXRlIHRoaXMgZnVuY3Rpb24gYmVmb3JlIGFueQogKiBhcmUgYWxsb3dlZCB0byBjb250aW51ZSBleGVjdXRpb24gYmV5b25kIHRoZSBiYXJyaWVyLgogKiBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgZW5jb3VudGVyZWQgYnkgYWxsIHdvcmstaXRlbXMgaW4KICogYSB3b3JrLWdyb3VwIGV4ZWN1dGluZyB0aGUga2VybmVsLgogKiBJZiBiYXJyaWVyIGlzIGluc2lkZSBhIGNvbmRpdGlvbmFsIHN0YXRlbWVudCwgdGhlbiBhbGwKICogd29yay1pdGVtcyBtdXN0IGVudGVyIHRoZSBjb25kaXRpb25hbCBpZiBhbnkgd29yay1pdGVtCiAqIGVudGVycyB0aGUgY29uZGl0aW9uYWwgc3RhdGVtZW50IGFuZCBleGVjdXRlcyB0aGUKICogYmFycmllci4KICogSWYgYmFycmVyIGlzIGluc2lkZSBhIGxvb3AsIGFsbCB3b3JrLWl0ZW1zIG11c3QgZXhlY3V0ZQogKiB0aGUgYmFycmllciBmb3IgZWFjaCBpdGVyYXRpb24gb2YgdGhlIGxvb3AgYmVmb3JlIGFueSBhcmUKICogYWxsb3dlZCB0byBjb250aW51ZSBleGVjdXRpb24gYmV5b25kIHRoZSBiYXJyaWVyLgogKiBUaGUgYmFycmllciBmdW5jdGlvbiBhbHNvIHF1ZXVlcyBhIG1lbW9yeSBmZW5jZQogKiAocmVhZHMgYW5kIHdyaXRlcykgdG8gZW5zdXJlIGNvcnJlY3Qgb3JkZXJpbmcgb2YKICogbWVtb3J5IG9wZXJhdGlvbnMgdG8gbG9jYWwgb3IgZ2xvYmFsIG1lbW9yeS4KICogVGhlIGZsYWdzIGFyZ3VtZW50IHNwZWNpZmllcyB0aGUgbWVtb3J5IGFkZHJlc3Mgc3BhY2UKICogYW5kIGNhbiBiZSBzZXQgdG8gYSBjb21iaW5hdGlvbiBvZiB0aGUgZm9sbG93aW5nIGxpdGVyYWwKICogdmFsdWVzLgogKiBDTEtfTE9DQUxfTUVNX0ZFTkNFIC0gVGhlIGJhcnJpZXIgZnVuY3Rpb24KICogd2lsbCBlaXRoZXIgZmx1c2ggYW55IHZhcmlhYmxlcyBzdG9yZWQgaW4gbG9jYWwgbWVtb3J5CiAqIG9yIHF1ZXVlIGEgbWVtb3J5IGZlbmNlIHRvIGVuc3VyZSBjb3JyZWN0IG9yZGVyaW5nIG9mCiAqIG1lbW9yeSBvcGVyYXRpb25zIHRvIGxvY2FsIG1lbW9yeS4KICogQ0xLX0dMT0JBTF9NRU1fRkVOQ0UgLSBUaGUgYmFycmllciBmdW5jdGlvbgogKiB3aWxsIHF1ZXVlIGEgbWVtb3J5IGZlbmNlIHRvIGVuc3VyZSBjb3JyZWN0IG9yZGVyaW5nCiAqIG9mIG1lbW9yeSBvcGVyYXRpb25zIHRvIGdsb2JhbCBtZW1vcnkuIFRoaXMgY2FuIGJlCiAqIHVzZWZ1bCB3aGVuIHdvcmstaXRlbXMsIGZvciBleGFtcGxlLCB3cml0ZSB0byBidWZmZXIgb3IKICogaW1hZ2Ugb2JqZWN0cyBhbmQgdGhlbiB3YW50IHRvIHJlYWQgdGhlIHVwZGF0ZWQgZGF0YS4KICovCgp2b2lkIF9fb3ZsZCBfX2NvbnYgYmFycmllcihjbF9tZW1fZmVuY2VfZmxhZ3MgZmxhZ3MpOwoKI2lmIGRlZmluZWQoX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXykgfHwgKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fMl8wKQp2b2lkIF9fb3ZsZCBfX2NvbnYgd29ya19ncm91cF9iYXJyaWVyKGNsX21lbV9mZW5jZV9mbGFncyBmbGFncywgbWVtb3J5X3Njb3BlIHNjb3BlKTsKdm9pZCBfX292bGQgX19jb252IHdvcmtfZ3JvdXBfYmFycmllcihjbF9tZW1fZmVuY2VfZmxhZ3MgZmxhZ3MpOwojZW5kaWYgLy9kZWZpbmVkKF9fT1BFTkNMX0NQUF9WRVJTSU9OX18pIHx8IChfX09QRU5DTF9DX1ZFUlNJT05fXyA+PSBDTF9WRVJTSU9OXzJfMCkKCi8vIE9wZW5DTCB2MS4xIHM2LjExLjksIHYxLjIgczYuMTIuOSAtIEV4cGxpY2l0IE1lbW9yeSBGZW5jZSBGdW5jdGlvbnMKCi8qKgogKiBPcmRlcnMgbG9hZHMgYW5kIHN0b3JlcyBvZiBhIHdvcmstaXRlbQogKiBleGVjdXRpbmcgYSBrZXJuZWwuIFRoaXMgbWVhbnMgdGhhdCBsb2FkcwogKiBhbmQgc3RvcmVzIHByZWNlZGluZyB0aGUgbWVtX2ZlbmNlIHdpbGwKICogYmUgY29tbWl0dGVkIHRvIG1lbW9yeSBiZWZvcmUgYW55IGxvYWRzCiAqIGFuZCBzdG9yZXMgZm9sbG93aW5nIHRoZSBtZW1fZmVuY2UuCiAqIFRoZSBmbGFncyBhcmd1bWVudCBzcGVjaWZpZXMgdGhlIG1lbW9yeQogKiBhZGRyZXNzIHNwYWNlIGFuZCBjYW4gYmUgc2V0IHRvIGEKICogY29tYmluYXRpb24gb2YgdGhlIGZvbGxvd2luZyBsaXRlcmFsCiAqIHZhbHVlczoKICogQ0xLX0xPQ0FMX01FTV9GRU5DRQogKiBDTEtfR0xPQkFMX01FTV9GRU5DRS4KICovCnZvaWQgX19vdmxkIG1lbV9mZW5jZShjbF9tZW1fZmVuY2VfZmxhZ3MgZmxhZ3MpOwoKLyoqCiAqIFJlYWQgbWVtb3J5IGJhcnJpZXIgdGhhdCBvcmRlcnMgb25seQogKiBsb2Fkcy4KICogVGhlIGZsYWdzIGFyZ3VtZW50IHNwZWNpZmllcyB0aGUgbWVtb3J5CiAqIGFkZHJlc3Mgc3BhY2UgYW5kIGNhbiBiZSBzZXQgdG8gYQogKiBjb21iaW5hdGlvbiBvZiB0aGUgZm9sbG93aW5nIGxpdGVyYWwKICogdmFsdWVzOgogKiBDTEtfTE9DQUxfTUVNX0ZFTkNFCiAqIENMS19HTE9CQUxfTUVNX0ZFTkNFLgogKi8Kdm9pZCBfX292bGQgcmVhZF9tZW1fZmVuY2UoY2xfbWVtX2ZlbmNlX2ZsYWdzIGZsYWdzKTsKCi8qKgogKiBXcml0ZSBtZW1vcnkgYmFycmllciB0aGF0IG9yZGVycyBvbmx5CiAqIHN0b3Jlcy4KICogVGhlIGZsYWdzIGFyZ3VtZW50IHNwZWNpZmllcyB0aGUgbWVtb3J5CiAqIGFkZHJlc3Mgc3BhY2UgYW5kIGNhbiBiZSBzZXQgdG8gYQogKiBjb21iaW5hdGlvbiBvZiB0aGUgZm9sbG93aW5nIGxpdGVyYWwKICogdmFsdWVzOgogKiBDTEtfTE9DQUxfTUVNX0ZFTkNFCiAqIENMS19HTE9CQUxfTUVNX0ZFTkNFLgogKi8Kdm9pZCBfX292bGQgd3JpdGVfbWVtX2ZlbmNlKGNsX21lbV9mZW5jZV9mbGFncyBmbGFncyk7CgovLyBPcGVuQ0wgdjIuMCBzNi4xMy45IC0gQWRkcmVzcyBTcGFjZSBRdWFsaWZpZXIgRnVuY3Rpb25zCgojaWYgZGVmaW5lZChfX29wZW5jbF9jX2dlbmVyaWNfYWRkcmVzc19zcGFjZSkKY2xfbWVtX2ZlbmNlX2ZsYWdzIF9fb3ZsZCBnZXRfZmVuY2UoY29uc3Qgdm9pZCAqcHRyKTsKY2xfbWVtX2ZlbmNlX2ZsYWdzIF9fb3ZsZCBnZXRfZmVuY2Uodm9pZCAqcHRyKTsKCi8qKgogKiBCdWlsdGluIGZ1bmN0aW9ucyB0b19nbG9iYWwsIHRvX2xvY2FsLCBhbmQgdG9fcHJpdmF0ZSBuZWVkIHRvIGJlIGRlY2xhcmVkIGFzIENsYW5nIGJ1aWx0aW4gZnVuY3Rpb25zCiAqIGFuZCBjaGVja2VkIGluIFNlbWEgc2luY2UgdGhleSBzaG91bGQgYmUgZGVjbGFyZWQgYXMKICogICBhZGRyIGdlbnR5cGUqIHRvX2FkZHIgKGdlbnR5cGUqKTsKICogd2hlcmUgZ2VudHlwZSBpcyBidWlsdGluIHR5cGUgb3IgdXNlciBkZWZpbmVkIHR5cGUuCiAqLwoKI2VuZGlmIC8vZGVmaW5lZChfX29wZW5jbF9jX2dlbmVyaWNfYWRkcmVzc19zcGFjZSkKCi8vIE9wZW5DTCB2MS4xIHM2LjExLjEwLCB2MS4yIHM2LjEyLjEwLCB2Mi4wIHM2LjEzLjEwIC0gQXN5bmMgQ29waWVzIGZyb20gR2xvYmFsIHRvIExvY2FsIE1lbW9yeSwgTG9jYWwgdG8gR2xvYmFsIE1lbW9yeSwgYW5kIFByZWZldGNoCgovKioKICogZXZlbnRfdCBhc3luY193b3JrX2dyb3VwX2NvcHkgKAogKiBfX2dsb2JhbCBnZW50eXBlICpkc3QsCiAqIGNvbnN0IF9fbG9jYWwgZ2VudHlwZSAqc3JjLAogKiBzaXplX3QgbnVtX2VsZW1lbnRzLAogKiBldmVudF90IGV2ZW50KQogKiBQZXJmb3JtIGFuIGFzeW5jIGNvcHkgb2YgbnVtX2VsZW1lbnRzCiAqIGdlbnR5cGUgZWxlbWVudHMgZnJvbSBzcmMgdG8gZHN0LiBUaGUgYXN5bmMKICogY29weSBpcyBwZXJmb3JtZWQgYnkgYWxsIHdvcmstaXRlbXMgaW4gYSB3b3JrZ3JvdXAKICogYW5kIHRoaXMgYnVpbHQtaW4gZnVuY3Rpb24gbXVzdCB0aGVyZWZvcmUKICogYmUgZW5jb3VudGVyZWQgYnkgYWxsIHdvcmstaXRlbXMgaW4gYSB3b3JrZ3JvdXAKICogZXhlY3V0aW5nIHRoZSBrZXJuZWwgd2l0aCB0aGUgc2FtZQogKiBhcmd1bWVudCB2YWx1ZXM7IG90aGVyd2lzZSB0aGUgcmVzdWx0cyBhcmUKICogdW5kZWZpbmVkLgogKiBSZXR1cm5zIGFuIGV2ZW50IG9iamVjdCB0aGF0IGNhbiBiZSB1c2VkIGJ5CiAqIHdhaXRfZ3JvdXBfZXZlbnRzIHRvIHdhaXQgZm9yIHRoZSBhc3luYyBjb3B5CiAqIHRvIGZpbmlzaC4gVGhlIGV2ZW50IGFyZ3VtZW50IGNhbiBhbHNvIGJlIHVzZWQKICogdG8gYXNzb2NpYXRlIHRoZSBhc3luY193b3JrX2dyb3VwX2NvcHkgd2l0aAogKiBhIHByZXZpb3VzIGFzeW5jIGNvcHkgYWxsb3dpbmcgYW4gZXZlbnQgdG8gYmUKICogc2hhcmVkIGJ5IG11bHRpcGxlIGFzeW5jIGNvcGllczsgb3RoZXJ3aXNlIGV2ZW50CiAqIHNob3VsZCBiZSB6ZXJvLgogKiBJZiBldmVudCBhcmd1bWVudCBpcyBub24temVybywgdGhlIGV2ZW50IG9iamVjdAogKiBzdXBwbGllZCBpbiBldmVudCBhcmd1bWVudCB3aWxsIGJlIHJldHVybmVkLgogKiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHBlcmZvcm0gYW55IGltcGxpY2l0CiAqIHN5bmNocm9uaXphdGlvbiBvZiBzb3VyY2UgZGF0YSBzdWNoIGFzIHVzaW5nIGEKICogYmFycmllciBiZWZvcmUgcGVyZm9ybWluZyB0aGUgY29weS4KICovCmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfY29weShfX2xvY2FsIGNoYXIgKmRzdCwgY29uc3QgX19nbG9iYWwgY2hhciAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fbG9jYWwgdWNoYXIgKmRzdCwgY29uc3QgX19nbG9iYWwgdWNoYXIgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfY29weShfX2xvY2FsIHNob3J0ICpkc3QsIGNvbnN0IF9fZ2xvYmFsIHNob3J0ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX2NvcHkoX19sb2NhbCB1c2hvcnQgKmRzdCwgY29uc3QgX19nbG9iYWwgdXNob3J0ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX2NvcHkoX19sb2NhbCBpbnQgKmRzdCwgY29uc3QgX19nbG9iYWwgaW50ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX2NvcHkoX19sb2NhbCB1aW50ICpkc3QsIGNvbnN0IF9fZ2xvYmFsIHVpbnQgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfY29weShfX2xvY2FsIGxvbmcgKmRzdCwgY29uc3QgX19nbG9iYWwgbG9uZyAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fbG9jYWwgdWxvbmcgKmRzdCwgY29uc3QgX19nbG9iYWwgdWxvbmcgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfY29weShfX2xvY2FsIGZsb2F0ICpkc3QsIGNvbnN0IF9fZ2xvYmFsIGZsb2F0ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX2NvcHkoX19sb2NhbCBjaGFyMiAqZHN0LCBjb25zdCBfX2dsb2JhbCBjaGFyMiAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fbG9jYWwgdWNoYXIyICpkc3QsIGNvbnN0IF9fZ2xvYmFsIHVjaGFyMiAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fbG9jYWwgc2hvcnQyICpkc3QsIGNvbnN0IF9fZ2xvYmFsIHNob3J0MiAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fbG9jYWwgdXNob3J0MiAqZHN0LCBjb25zdCBfX2dsb2JhbCB1c2hvcnQyICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX2NvcHkoX19sb2NhbCBpbnQyICpkc3QsIGNvbnN0IF9fZ2xvYmFsIGludDIgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfY29weShfX2xvY2FsIHVpbnQyICpkc3QsIGNvbnN0IF9fZ2xvYmFsIHVpbnQyICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX2NvcHkoX19sb2NhbCBsb25nMiAqZHN0LCBjb25zdCBfX2dsb2JhbCBsb25nMiAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fbG9jYWwgdWxvbmcyICpkc3QsIGNvbnN0IF9fZ2xvYmFsIHVsb25nMiAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fbG9jYWwgZmxvYXQyICpkc3QsIGNvbnN0IF9fZ2xvYmFsIGZsb2F0MiAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fbG9jYWwgY2hhcjMgKmRzdCwgY29uc3QgX19nbG9iYWwgY2hhcjMgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfY29weShfX2xvY2FsIHVjaGFyMyAqZHN0LCBjb25zdCBfX2dsb2JhbCB1Y2hhcjMgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfY29weShfX2xvY2FsIHNob3J0MyAqZHN0LCBjb25zdCBfX2dsb2JhbCBzaG9ydDMgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfY29weShfX2xvY2FsIHVzaG9ydDMgKmRzdCwgY29uc3QgX19nbG9iYWwgdXNob3J0MyAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fbG9jYWwgaW50MyAqZHN0LCBjb25zdCBfX2dsb2JhbCBpbnQzICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX2NvcHkoX19sb2NhbCB1aW50MyAqZHN0LCBjb25zdCBfX2dsb2JhbCB1aW50MyAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fbG9jYWwgbG9uZzMgKmRzdCwgY29uc3QgX19nbG9iYWwgbG9uZzMgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfY29weShfX2xvY2FsIHVsb25nMyAqZHN0LCBjb25zdCBfX2dsb2JhbCB1bG9uZzMgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfY29weShfX2xvY2FsIGZsb2F0MyAqZHN0LCBjb25zdCBfX2dsb2JhbCBmbG9hdDMgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfY29weShfX2xvY2FsIGNoYXI0ICpkc3QsIGNvbnN0IF9fZ2xvYmFsIGNoYXI0ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX2NvcHkoX19sb2NhbCB1Y2hhcjQgKmRzdCwgY29uc3QgX19nbG9iYWwgdWNoYXI0ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX2NvcHkoX19sb2NhbCBzaG9ydDQgKmRzdCwgY29uc3QgX19nbG9iYWwgc2hvcnQ0ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX2NvcHkoX19sb2NhbCB1c2hvcnQ0ICpkc3QsIGNvbnN0IF9fZ2xvYmFsIHVzaG9ydDQgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfY29weShfX2xvY2FsIGludDQgKmRzdCwgY29uc3QgX19nbG9iYWwgaW50NCAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fbG9jYWwgdWludDQgKmRzdCwgY29uc3QgX19nbG9iYWwgdWludDQgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfY29weShfX2xvY2FsIGxvbmc0ICpkc3QsIGNvbnN0IF9fZ2xvYmFsIGxvbmc0ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX2NvcHkoX19sb2NhbCB1bG9uZzQgKmRzdCwgY29uc3QgX19nbG9iYWwgdWxvbmc0ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX2NvcHkoX19sb2NhbCBmbG9hdDQgKmRzdCwgY29uc3QgX19nbG9iYWwgZmxvYXQ0ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX2NvcHkoX19sb2NhbCBjaGFyOCAqZHN0LCBjb25zdCBfX2dsb2JhbCBjaGFyOCAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fbG9jYWwgdWNoYXI4ICpkc3QsIGNvbnN0IF9fZ2xvYmFsIHVjaGFyOCAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fbG9jYWwgc2hvcnQ4ICpkc3QsIGNvbnN0IF9fZ2xvYmFsIHNob3J0OCAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fbG9jYWwgdXNob3J0OCAqZHN0LCBjb25zdCBfX2dsb2JhbCB1c2hvcnQ4ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX2NvcHkoX19sb2NhbCBpbnQ4ICpkc3QsIGNvbnN0IF9fZ2xvYmFsIGludDggKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfY29weShfX2xvY2FsIHVpbnQ4ICpkc3QsIGNvbnN0IF9fZ2xvYmFsIHVpbnQ4ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX2NvcHkoX19sb2NhbCBsb25nOCAqZHN0LCBjb25zdCBfX2dsb2JhbCBsb25nOCAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fbG9jYWwgdWxvbmc4ICpkc3QsIGNvbnN0IF9fZ2xvYmFsIHVsb25nOCAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fbG9jYWwgZmxvYXQ4ICpkc3QsIGNvbnN0IF9fZ2xvYmFsIGZsb2F0OCAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fbG9jYWwgY2hhcjE2ICpkc3QsIGNvbnN0IF9fZ2xvYmFsIGNoYXIxNiAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fbG9jYWwgdWNoYXIxNiAqZHN0LCBjb25zdCBfX2dsb2JhbCB1Y2hhcjE2ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX2NvcHkoX19sb2NhbCBzaG9ydDE2ICpkc3QsIGNvbnN0IF9fZ2xvYmFsIHNob3J0MTYgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfY29weShfX2xvY2FsIHVzaG9ydDE2ICpkc3QsIGNvbnN0IF9fZ2xvYmFsIHVzaG9ydDE2ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX2NvcHkoX19sb2NhbCBpbnQxNiAqZHN0LCBjb25zdCBfX2dsb2JhbCBpbnQxNiAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fbG9jYWwgdWludDE2ICpkc3QsIGNvbnN0IF9fZ2xvYmFsIHVpbnQxNiAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fbG9jYWwgbG9uZzE2ICpkc3QsIGNvbnN0IF9fZ2xvYmFsIGxvbmcxNiAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fbG9jYWwgdWxvbmcxNiAqZHN0LCBjb25zdCBfX2dsb2JhbCB1bG9uZzE2ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX2NvcHkoX19sb2NhbCBmbG9hdDE2ICpkc3QsIGNvbnN0IF9fZ2xvYmFsIGZsb2F0MTYgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfY29weShfX2dsb2JhbCBjaGFyICpkc3QsIGNvbnN0IF9fbG9jYWwgY2hhciAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fZ2xvYmFsIHVjaGFyICpkc3QsIGNvbnN0IF9fbG9jYWwgdWNoYXIgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfY29weShfX2dsb2JhbCBzaG9ydCAqZHN0LCBjb25zdCBfX2xvY2FsIHNob3J0ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX2NvcHkoX19nbG9iYWwgdXNob3J0ICpkc3QsIGNvbnN0IF9fbG9jYWwgdXNob3J0ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX2NvcHkoX19nbG9iYWwgaW50ICpkc3QsIGNvbnN0IF9fbG9jYWwgaW50ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX2NvcHkoX19nbG9iYWwgdWludCAqZHN0LCBjb25zdCBfX2xvY2FsIHVpbnQgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfY29weShfX2dsb2JhbCBsb25nICpkc3QsIGNvbnN0IF9fbG9jYWwgbG9uZyAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fZ2xvYmFsIHVsb25nICpkc3QsIGNvbnN0IF9fbG9jYWwgdWxvbmcgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfY29weShfX2dsb2JhbCBmbG9hdCAqZHN0LCBjb25zdCBfX2xvY2FsIGZsb2F0ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX2NvcHkoX19nbG9iYWwgY2hhcjIgKmRzdCwgY29uc3QgX19sb2NhbCBjaGFyMiAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fZ2xvYmFsIHVjaGFyMiAqZHN0LCBjb25zdCBfX2xvY2FsIHVjaGFyMiAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fZ2xvYmFsIHNob3J0MiAqZHN0LCBjb25zdCBfX2xvY2FsIHNob3J0MiAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fZ2xvYmFsIHVzaG9ydDIgKmRzdCwgY29uc3QgX19sb2NhbCB1c2hvcnQyICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX2NvcHkoX19nbG9iYWwgaW50MiAqZHN0LCBjb25zdCBfX2xvY2FsIGludDIgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfY29weShfX2dsb2JhbCB1aW50MiAqZHN0LCBjb25zdCBfX2xvY2FsIHVpbnQyICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX2NvcHkoX19nbG9iYWwgbG9uZzIgKmRzdCwgY29uc3QgX19sb2NhbCBsb25nMiAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fZ2xvYmFsIHVsb25nMiAqZHN0LCBjb25zdCBfX2xvY2FsIHVsb25nMiAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fZ2xvYmFsIGZsb2F0MiAqZHN0LCBjb25zdCBfX2xvY2FsIGZsb2F0MiAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fZ2xvYmFsIGNoYXIzICpkc3QsIGNvbnN0IF9fbG9jYWwgY2hhcjMgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfY29weShfX2dsb2JhbCB1Y2hhcjMgKmRzdCwgY29uc3QgX19sb2NhbCB1Y2hhcjMgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfY29weShfX2dsb2JhbCBzaG9ydDMgKmRzdCwgY29uc3QgX19sb2NhbCBzaG9ydDMgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfY29weShfX2dsb2JhbCB1c2hvcnQzICpkc3QsIGNvbnN0IF9fbG9jYWwgdXNob3J0MyAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fZ2xvYmFsIGludDMgKmRzdCwgY29uc3QgX19sb2NhbCBpbnQzICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX2NvcHkoX19nbG9iYWwgdWludDMgKmRzdCwgY29uc3QgX19sb2NhbCB1aW50MyAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fZ2xvYmFsIGxvbmczICpkc3QsIGNvbnN0IF9fbG9jYWwgbG9uZzMgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfY29weShfX2dsb2JhbCB1bG9uZzMgKmRzdCwgY29uc3QgX19sb2NhbCB1bG9uZzMgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfY29weShfX2dsb2JhbCBmbG9hdDMgKmRzdCwgY29uc3QgX19sb2NhbCBmbG9hdDMgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfY29weShfX2dsb2JhbCBjaGFyNCAqZHN0LCBjb25zdCBfX2xvY2FsIGNoYXI0ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX2NvcHkoX19nbG9iYWwgdWNoYXI0ICpkc3QsIGNvbnN0IF9fbG9jYWwgdWNoYXI0ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX2NvcHkoX19nbG9iYWwgc2hvcnQ0ICpkc3QsIGNvbnN0IF9fbG9jYWwgc2hvcnQ0ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX2NvcHkoX19nbG9iYWwgdXNob3J0NCAqZHN0LCBjb25zdCBfX2xvY2FsIHVzaG9ydDQgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfY29weShfX2dsb2JhbCBpbnQ0ICpkc3QsIGNvbnN0IF9fbG9jYWwgaW50NCAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fZ2xvYmFsIHVpbnQ0ICpkc3QsIGNvbnN0IF9fbG9jYWwgdWludDQgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfY29weShfX2dsb2JhbCBsb25nNCAqZHN0LCBjb25zdCBfX2xvY2FsIGxvbmc0ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX2NvcHkoX19nbG9iYWwgdWxvbmc0ICpkc3QsIGNvbnN0IF9fbG9jYWwgdWxvbmc0ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX2NvcHkoX19nbG9iYWwgZmxvYXQ0ICpkc3QsIGNvbnN0IF9fbG9jYWwgZmxvYXQ0ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX2NvcHkoX19nbG9iYWwgY2hhcjggKmRzdCwgY29uc3QgX19sb2NhbCBjaGFyOCAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fZ2xvYmFsIHVjaGFyOCAqZHN0LCBjb25zdCBfX2xvY2FsIHVjaGFyOCAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fZ2xvYmFsIHNob3J0OCAqZHN0LCBjb25zdCBfX2xvY2FsIHNob3J0OCAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fZ2xvYmFsIHVzaG9ydDggKmRzdCwgY29uc3QgX19sb2NhbCB1c2hvcnQ4ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX2NvcHkoX19nbG9iYWwgaW50OCAqZHN0LCBjb25zdCBfX2xvY2FsIGludDggKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfY29weShfX2dsb2JhbCB1aW50OCAqZHN0LCBjb25zdCBfX2xvY2FsIHVpbnQ4ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX2NvcHkoX19nbG9iYWwgbG9uZzggKmRzdCwgY29uc3QgX19sb2NhbCBsb25nOCAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fZ2xvYmFsIHVsb25nOCAqZHN0LCBjb25zdCBfX2xvY2FsIHVsb25nOCAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fZ2xvYmFsIGZsb2F0OCAqZHN0LCBjb25zdCBfX2xvY2FsIGZsb2F0OCAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fZ2xvYmFsIGNoYXIxNiAqZHN0LCBjb25zdCBfX2xvY2FsIGNoYXIxNiAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fZ2xvYmFsIHVjaGFyMTYgKmRzdCwgY29uc3QgX19sb2NhbCB1Y2hhcjE2ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX2NvcHkoX19nbG9iYWwgc2hvcnQxNiAqZHN0LCBjb25zdCBfX2xvY2FsIHNob3J0MTYgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfY29weShfX2dsb2JhbCB1c2hvcnQxNiAqZHN0LCBjb25zdCBfX2xvY2FsIHVzaG9ydDE2ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX2NvcHkoX19nbG9iYWwgaW50MTYgKmRzdCwgY29uc3QgX19sb2NhbCBpbnQxNiAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fZ2xvYmFsIHVpbnQxNiAqZHN0LCBjb25zdCBfX2xvY2FsIHVpbnQxNiAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fZ2xvYmFsIGxvbmcxNiAqZHN0LCBjb25zdCBfX2xvY2FsIGxvbmcxNiAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fZ2xvYmFsIHVsb25nMTYgKmRzdCwgY29uc3QgX19sb2NhbCB1bG9uZzE2ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX2NvcHkoX19nbG9iYWwgZmxvYXQxNiAqZHN0LCBjb25zdCBfX2xvY2FsIGZsb2F0MTYgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgZXZlbnRfdCBldmVudCk7CiNpZmRlZiBjbF9raHJfZnA2NApldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX2NvcHkoX19sb2NhbCBkb3VibGUgKmRzdCwgY29uc3QgX19nbG9iYWwgZG91YmxlICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX2NvcHkoX19sb2NhbCBkb3VibGUyICpkc3QsIGNvbnN0IF9fZ2xvYmFsIGRvdWJsZTIgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfY29weShfX2xvY2FsIGRvdWJsZTMgKmRzdCwgY29uc3QgX19nbG9iYWwgZG91YmxlMyAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fbG9jYWwgZG91YmxlNCAqZHN0LCBjb25zdCBfX2dsb2JhbCBkb3VibGU0ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX2NvcHkoX19sb2NhbCBkb3VibGU4ICpkc3QsIGNvbnN0IF9fZ2xvYmFsIGRvdWJsZTggKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfY29weShfX2xvY2FsIGRvdWJsZTE2ICpkc3QsIGNvbnN0IF9fZ2xvYmFsIGRvdWJsZTE2ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX2NvcHkoX19nbG9iYWwgZG91YmxlICpkc3QsIGNvbnN0IF9fbG9jYWwgZG91YmxlICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX2NvcHkoX19nbG9iYWwgZG91YmxlMiAqZHN0LCBjb25zdCBfX2xvY2FsIGRvdWJsZTIgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfY29weShfX2dsb2JhbCBkb3VibGUzICpkc3QsIGNvbnN0IF9fbG9jYWwgZG91YmxlMyAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fZ2xvYmFsIGRvdWJsZTQgKmRzdCwgY29uc3QgX19sb2NhbCBkb3VibGU0ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX2NvcHkoX19nbG9iYWwgZG91YmxlOCAqZHN0LCBjb25zdCBfX2xvY2FsIGRvdWJsZTggKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfY29weShfX2dsb2JhbCBkb3VibGUxNiAqZHN0LCBjb25zdCBfX2xvY2FsIGRvdWJsZTE2ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIGV2ZW50X3QgZXZlbnQpOwojZW5kaWYgLy9jbF9raHJfZnA2NAojaWZkZWYgY2xfa2hyX2ZwMTYKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fbG9jYWwgaGFsZiAqZHN0LCBjb25zdCBfX2dsb2JhbCBoYWxmICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX2NvcHkoX19sb2NhbCBoYWxmMiAqZHN0LCBjb25zdCBfX2dsb2JhbCBoYWxmMiAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fbG9jYWwgaGFsZjMgKmRzdCwgY29uc3QgX19nbG9iYWwgaGFsZjMgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfY29weShfX2xvY2FsIGhhbGY0ICpkc3QsIGNvbnN0IF9fZ2xvYmFsIGhhbGY0ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX2NvcHkoX19sb2NhbCBoYWxmOCAqZHN0LCBjb25zdCBfX2dsb2JhbCBoYWxmOCAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fbG9jYWwgaGFsZjE2ICpkc3QsIGNvbnN0IF9fZ2xvYmFsIGhhbGYxNiAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fZ2xvYmFsIGhhbGYgKmRzdCwgY29uc3QgX19sb2NhbCBoYWxmICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX2NvcHkoX19nbG9iYWwgaGFsZjIgKmRzdCwgY29uc3QgX19sb2NhbCBoYWxmMiAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fZ2xvYmFsIGhhbGYzICpkc3QsIGNvbnN0IF9fbG9jYWwgaGFsZjMgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfY29weShfX2dsb2JhbCBoYWxmNCAqZHN0LCBjb25zdCBfX2xvY2FsIGhhbGY0ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX2NvcHkoX19nbG9iYWwgaGFsZjggKmRzdCwgY29uc3QgX19sb2NhbCBoYWxmOCAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9jb3B5KF9fZ2xvYmFsIGhhbGYxNiAqZHN0LCBjb25zdCBfX2xvY2FsIGhhbGYxNiAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBldmVudF90IGV2ZW50KTsKI2VuZGlmIC8vY2xfa2hyX2ZwMTYKCi8qKgogKiBQZXJmb3JtIGFuIGFzeW5jIGdhdGhlciBvZiBudW1fZWxlbWVudHMKICogZ2VudHlwZSBlbGVtZW50cyBmcm9tIHNyYyB0byBkc3QuIFRoZQogKiBzcmNfc3RyaWRlIGlzIHRoZSBzdHJpZGUgaW4gZWxlbWVudHMgZm9yIGVhY2gKICogZ2VudHlwZSBlbGVtZW50IHJlYWQgZnJvbSBzcmMuIFRoZSBkc3Rfc3RyaWRlCiAqIGlzIHRoZSBzdHJpZGUgaW4gZWxlbWVudHMgZm9yIGVhY2ggZ2VudHlwZQogKiBlbGVtZW50IHdyaXR0ZW4gdG8gZHN0LiBUaGUgYXN5bmMgZ2F0aGVyIGlzCiAqIHBlcmZvcm1lZCBieSBhbGwgd29yay1pdGVtcyBpbiBhIHdvcmstZ3JvdXAuCiAqIFRoaXMgYnVpbHQtaW4gZnVuY3Rpb24gbXVzdCB0aGVyZWZvcmUgYmUKICogZW5jb3VudGVyZWQgYnkgYWxsIHdvcmstaXRlbXMgaW4gYSB3b3JrLWdyb3VwCiAqIGV4ZWN1dGluZyB0aGUga2VybmVsIHdpdGggdGhlIHNhbWUgYXJndW1lbnQKICogdmFsdWVzOyBvdGhlcndpc2UgdGhlIHJlc3VsdHMgYXJlIHVuZGVmaW5lZC4KICogUmV0dXJucyBhbiBldmVudCBvYmplY3QgdGhhdCBjYW4gYmUgdXNlZCBieQogKiB3YWl0X2dyb3VwX2V2ZW50cyB0byB3YWl0IGZvciB0aGUgYXN5bmMgY29weQogKiB0byBmaW5pc2guIFRoZSBldmVudCBhcmd1bWVudCBjYW4gYWxzbyBiZSB1c2VkCiAqIHRvIGFzc29jaWF0ZSB0aGUKICogYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkgd2l0aCBhCiAqIHByZXZpb3VzIGFzeW5jIGNvcHkgYWxsb3dpbmcgYW4gZXZlbnQgdG8gYmUKICogc2hhcmVkIGJ5IG11bHRpcGxlIGFzeW5jIGNvcGllczsgb3RoZXJ3aXNlIGV2ZW50CiAqIHNob3VsZCBiZSB6ZXJvLgogKiBJZiBldmVudCBhcmd1bWVudCBpcyBub24temVybywgdGhlIGV2ZW50IG9iamVjdAogKiBzdXBwbGllZCBpbiBldmVudCBhcmd1bWVudCB3aWxsIGJlIHJldHVybmVkLgogKiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHBlcmZvcm0gYW55IGltcGxpY2l0CiAqIHN5bmNocm9uaXphdGlvbiBvZiBzb3VyY2UgZGF0YSBzdWNoIGFzIHVzaW5nIGEKICogYmFycmllciBiZWZvcmUgcGVyZm9ybWluZyB0aGUgY29weS4KICovCmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfc3RyaWRlZF9jb3B5KF9fbG9jYWwgY2hhciAqZHN0LCBjb25zdCBfX2dsb2JhbCBjaGFyICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBzcmNfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19sb2NhbCB1Y2hhciAqZHN0LCBjb25zdCBfX2dsb2JhbCB1Y2hhciAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBzaXplX3Qgc3JjX3N0cmlkZSwgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfc3RyaWRlZF9jb3B5KF9fbG9jYWwgc2hvcnQgKmRzdCwgY29uc3QgX19nbG9iYWwgc2hvcnQgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IHNyY19zdHJpZGUsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX3N0cmlkZWRfY29weShfX2xvY2FsIHVzaG9ydCAqZHN0LCBjb25zdCBfX2dsb2JhbCB1c2hvcnQgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IHNyY19zdHJpZGUsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX3N0cmlkZWRfY29weShfX2xvY2FsIGludCAqZHN0LCBjb25zdCBfX2dsb2JhbCBpbnQgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IHNyY19zdHJpZGUsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX3N0cmlkZWRfY29weShfX2xvY2FsIHVpbnQgKmRzdCwgY29uc3QgX19nbG9iYWwgdWludCAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBzaXplX3Qgc3JjX3N0cmlkZSwgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfc3RyaWRlZF9jb3B5KF9fbG9jYWwgbG9uZyAqZHN0LCBjb25zdCBfX2dsb2JhbCBsb25nICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBzcmNfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19sb2NhbCB1bG9uZyAqZHN0LCBjb25zdCBfX2dsb2JhbCB1bG9uZyAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBzaXplX3Qgc3JjX3N0cmlkZSwgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfc3RyaWRlZF9jb3B5KF9fbG9jYWwgZmxvYXQgKmRzdCwgY29uc3QgX19nbG9iYWwgZmxvYXQgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IHNyY19zdHJpZGUsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX3N0cmlkZWRfY29weShfX2xvY2FsIGNoYXIyICpkc3QsIGNvbnN0IF9fZ2xvYmFsIGNoYXIyICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBzcmNfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19sb2NhbCB1Y2hhcjIgKmRzdCwgY29uc3QgX19nbG9iYWwgdWNoYXIyICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBzcmNfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19sb2NhbCBzaG9ydDIgKmRzdCwgY29uc3QgX19nbG9iYWwgc2hvcnQyICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBzcmNfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19sb2NhbCB1c2hvcnQyICpkc3QsIGNvbnN0IF9fZ2xvYmFsIHVzaG9ydDIgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IHNyY19zdHJpZGUsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX3N0cmlkZWRfY29weShfX2xvY2FsIGludDIgKmRzdCwgY29uc3QgX19nbG9iYWwgaW50MiAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBzaXplX3Qgc3JjX3N0cmlkZSwgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfc3RyaWRlZF9jb3B5KF9fbG9jYWwgdWludDIgKmRzdCwgY29uc3QgX19nbG9iYWwgdWludDIgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IHNyY19zdHJpZGUsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX3N0cmlkZWRfY29weShfX2xvY2FsIGxvbmcyICpkc3QsIGNvbnN0IF9fZ2xvYmFsIGxvbmcyICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBzcmNfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19sb2NhbCB1bG9uZzIgKmRzdCwgY29uc3QgX19nbG9iYWwgdWxvbmcyICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBzcmNfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19sb2NhbCBmbG9hdDIgKmRzdCwgY29uc3QgX19nbG9iYWwgZmxvYXQyICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBzcmNfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19sb2NhbCBjaGFyMyAqZHN0LCBjb25zdCBfX2dsb2JhbCBjaGFyMyAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBzaXplX3Qgc3JjX3N0cmlkZSwgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfc3RyaWRlZF9jb3B5KF9fbG9jYWwgdWNoYXIzICpkc3QsIGNvbnN0IF9fZ2xvYmFsIHVjaGFyMyAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBzaXplX3Qgc3JjX3N0cmlkZSwgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfc3RyaWRlZF9jb3B5KF9fbG9jYWwgc2hvcnQzICpkc3QsIGNvbnN0IF9fZ2xvYmFsIHNob3J0MyAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBzaXplX3Qgc3JjX3N0cmlkZSwgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfc3RyaWRlZF9jb3B5KF9fbG9jYWwgdXNob3J0MyAqZHN0LCBjb25zdCBfX2dsb2JhbCB1c2hvcnQzICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBzcmNfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19sb2NhbCBpbnQzICpkc3QsIGNvbnN0IF9fZ2xvYmFsIGludDMgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IHNyY19zdHJpZGUsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX3N0cmlkZWRfY29weShfX2xvY2FsIHVpbnQzICpkc3QsIGNvbnN0IF9fZ2xvYmFsIHVpbnQzICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBzcmNfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19sb2NhbCBsb25nMyAqZHN0LCBjb25zdCBfX2dsb2JhbCBsb25nMyAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBzaXplX3Qgc3JjX3N0cmlkZSwgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfc3RyaWRlZF9jb3B5KF9fbG9jYWwgdWxvbmczICpkc3QsIGNvbnN0IF9fZ2xvYmFsIHVsb25nMyAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBzaXplX3Qgc3JjX3N0cmlkZSwgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfc3RyaWRlZF9jb3B5KF9fbG9jYWwgZmxvYXQzICpkc3QsIGNvbnN0IF9fZ2xvYmFsIGZsb2F0MyAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBzaXplX3Qgc3JjX3N0cmlkZSwgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfc3RyaWRlZF9jb3B5KF9fbG9jYWwgY2hhcjQgKmRzdCwgY29uc3QgX19nbG9iYWwgY2hhcjQgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IHNyY19zdHJpZGUsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX3N0cmlkZWRfY29weShfX2xvY2FsIHVjaGFyNCAqZHN0LCBjb25zdCBfX2dsb2JhbCB1Y2hhcjQgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IHNyY19zdHJpZGUsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX3N0cmlkZWRfY29weShfX2xvY2FsIHNob3J0NCAqZHN0LCBjb25zdCBfX2dsb2JhbCBzaG9ydDQgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IHNyY19zdHJpZGUsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX3N0cmlkZWRfY29weShfX2xvY2FsIHVzaG9ydDQgKmRzdCwgY29uc3QgX19nbG9iYWwgdXNob3J0NCAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBzaXplX3Qgc3JjX3N0cmlkZSwgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfc3RyaWRlZF9jb3B5KF9fbG9jYWwgaW50NCAqZHN0LCBjb25zdCBfX2dsb2JhbCBpbnQ0ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBzcmNfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19sb2NhbCB1aW50NCAqZHN0LCBjb25zdCBfX2dsb2JhbCB1aW50NCAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBzaXplX3Qgc3JjX3N0cmlkZSwgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfc3RyaWRlZF9jb3B5KF9fbG9jYWwgbG9uZzQgKmRzdCwgY29uc3QgX19nbG9iYWwgbG9uZzQgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IHNyY19zdHJpZGUsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX3N0cmlkZWRfY29weShfX2xvY2FsIHVsb25nNCAqZHN0LCBjb25zdCBfX2dsb2JhbCB1bG9uZzQgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IHNyY19zdHJpZGUsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX3N0cmlkZWRfY29weShfX2xvY2FsIGZsb2F0NCAqZHN0LCBjb25zdCBfX2dsb2JhbCBmbG9hdDQgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IHNyY19zdHJpZGUsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX3N0cmlkZWRfY29weShfX2xvY2FsIGNoYXI4ICpkc3QsIGNvbnN0IF9fZ2xvYmFsIGNoYXI4ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBzcmNfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19sb2NhbCB1Y2hhcjggKmRzdCwgY29uc3QgX19nbG9iYWwgdWNoYXI4ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBzcmNfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19sb2NhbCBzaG9ydDggKmRzdCwgY29uc3QgX19nbG9iYWwgc2hvcnQ4ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBzcmNfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19sb2NhbCB1c2hvcnQ4ICpkc3QsIGNvbnN0IF9fZ2xvYmFsIHVzaG9ydDggKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IHNyY19zdHJpZGUsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX3N0cmlkZWRfY29weShfX2xvY2FsIGludDggKmRzdCwgY29uc3QgX19nbG9iYWwgaW50OCAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBzaXplX3Qgc3JjX3N0cmlkZSwgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfc3RyaWRlZF9jb3B5KF9fbG9jYWwgdWludDggKmRzdCwgY29uc3QgX19nbG9iYWwgdWludDggKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IHNyY19zdHJpZGUsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX3N0cmlkZWRfY29weShfX2xvY2FsIGxvbmc4ICpkc3QsIGNvbnN0IF9fZ2xvYmFsIGxvbmc4ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBzcmNfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19sb2NhbCB1bG9uZzggKmRzdCwgY29uc3QgX19nbG9iYWwgdWxvbmc4ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBzcmNfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19sb2NhbCBmbG9hdDggKmRzdCwgY29uc3QgX19nbG9iYWwgZmxvYXQ4ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBzcmNfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19sb2NhbCBjaGFyMTYgKmRzdCwgY29uc3QgX19nbG9iYWwgY2hhcjE2ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBzcmNfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19sb2NhbCB1Y2hhcjE2ICpkc3QsIGNvbnN0IF9fZ2xvYmFsIHVjaGFyMTYgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IHNyY19zdHJpZGUsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX3N0cmlkZWRfY29weShfX2xvY2FsIHNob3J0MTYgKmRzdCwgY29uc3QgX19nbG9iYWwgc2hvcnQxNiAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBzaXplX3Qgc3JjX3N0cmlkZSwgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfc3RyaWRlZF9jb3B5KF9fbG9jYWwgdXNob3J0MTYgKmRzdCwgY29uc3QgX19nbG9iYWwgdXNob3J0MTYgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IHNyY19zdHJpZGUsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX3N0cmlkZWRfY29weShfX2xvY2FsIGludDE2ICpkc3QsIGNvbnN0IF9fZ2xvYmFsIGludDE2ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBzcmNfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19sb2NhbCB1aW50MTYgKmRzdCwgY29uc3QgX19nbG9iYWwgdWludDE2ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBzcmNfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19sb2NhbCBsb25nMTYgKmRzdCwgY29uc3QgX19nbG9iYWwgbG9uZzE2ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBzcmNfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19sb2NhbCB1bG9uZzE2ICpkc3QsIGNvbnN0IF9fZ2xvYmFsIHVsb25nMTYgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IHNyY19zdHJpZGUsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX3N0cmlkZWRfY29weShfX2xvY2FsIGZsb2F0MTYgKmRzdCwgY29uc3QgX19nbG9iYWwgZmxvYXQxNiAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBzaXplX3Qgc3JjX3N0cmlkZSwgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfc3RyaWRlZF9jb3B5KF9fZ2xvYmFsIGNoYXIgKmRzdCwgY29uc3QgX19sb2NhbCBjaGFyICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBkc3Rfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19nbG9iYWwgdWNoYXIgKmRzdCwgY29uc3QgX19sb2NhbCB1Y2hhciAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBzaXplX3QgZHN0X3N0cmlkZSwgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfc3RyaWRlZF9jb3B5KF9fZ2xvYmFsIHNob3J0ICpkc3QsIGNvbnN0IF9fbG9jYWwgc2hvcnQgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IGRzdF9zdHJpZGUsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX3N0cmlkZWRfY29weShfX2dsb2JhbCB1c2hvcnQgKmRzdCwgY29uc3QgX19sb2NhbCB1c2hvcnQgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IGRzdF9zdHJpZGUsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX3N0cmlkZWRfY29weShfX2dsb2JhbCBpbnQgKmRzdCwgY29uc3QgX19sb2NhbCBpbnQgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IGRzdF9zdHJpZGUsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX3N0cmlkZWRfY29weShfX2dsb2JhbCB1aW50ICpkc3QsIGNvbnN0IF9fbG9jYWwgdWludCAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBzaXplX3QgZHN0X3N0cmlkZSwgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfc3RyaWRlZF9jb3B5KF9fZ2xvYmFsIGxvbmcgKmRzdCwgY29uc3QgX19sb2NhbCBsb25nICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBkc3Rfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19nbG9iYWwgdWxvbmcgKmRzdCwgY29uc3QgX19sb2NhbCB1bG9uZyAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBzaXplX3QgZHN0X3N0cmlkZSwgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfc3RyaWRlZF9jb3B5KF9fZ2xvYmFsIGZsb2F0ICpkc3QsIGNvbnN0IF9fbG9jYWwgZmxvYXQgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IGRzdF9zdHJpZGUsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX3N0cmlkZWRfY29weShfX2dsb2JhbCBjaGFyMiAqZHN0LCBjb25zdCBfX2xvY2FsIGNoYXIyICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBkc3Rfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19nbG9iYWwgdWNoYXIyICpkc3QsIGNvbnN0IF9fbG9jYWwgdWNoYXIyICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBkc3Rfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19nbG9iYWwgc2hvcnQyICpkc3QsIGNvbnN0IF9fbG9jYWwgc2hvcnQyICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBkc3Rfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19nbG9iYWwgdXNob3J0MiAqZHN0LCBjb25zdCBfX2xvY2FsIHVzaG9ydDIgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IGRzdF9zdHJpZGUsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX3N0cmlkZWRfY29weShfX2dsb2JhbCBpbnQyICpkc3QsIGNvbnN0IF9fbG9jYWwgaW50MiAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBzaXplX3QgZHN0X3N0cmlkZSwgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfc3RyaWRlZF9jb3B5KF9fZ2xvYmFsIHVpbnQyICpkc3QsIGNvbnN0IF9fbG9jYWwgdWludDIgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IGRzdF9zdHJpZGUsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX3N0cmlkZWRfY29weShfX2dsb2JhbCBsb25nMiAqZHN0LCBjb25zdCBfX2xvY2FsIGxvbmcyICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBkc3Rfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19nbG9iYWwgdWxvbmcyICpkc3QsIGNvbnN0IF9fbG9jYWwgdWxvbmcyICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBkc3Rfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19nbG9iYWwgZmxvYXQyICpkc3QsIGNvbnN0IF9fbG9jYWwgZmxvYXQyICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBkc3Rfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19nbG9iYWwgY2hhcjMgKmRzdCwgY29uc3QgX19sb2NhbCBjaGFyMyAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBzaXplX3QgZHN0X3N0cmlkZSwgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfc3RyaWRlZF9jb3B5KF9fZ2xvYmFsIHVjaGFyMyAqZHN0LCBjb25zdCBfX2xvY2FsIHVjaGFyMyAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBzaXplX3QgZHN0X3N0cmlkZSwgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfc3RyaWRlZF9jb3B5KF9fZ2xvYmFsIHNob3J0MyAqZHN0LCBjb25zdCBfX2xvY2FsIHNob3J0MyAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBzaXplX3QgZHN0X3N0cmlkZSwgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfc3RyaWRlZF9jb3B5KF9fZ2xvYmFsIHVzaG9ydDMgKmRzdCwgY29uc3QgX19sb2NhbCB1c2hvcnQzICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBkc3Rfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19nbG9iYWwgaW50MyAqZHN0LCBjb25zdCBfX2xvY2FsIGludDMgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IGRzdF9zdHJpZGUsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX3N0cmlkZWRfY29weShfX2dsb2JhbCB1aW50MyAqZHN0LCBjb25zdCBfX2xvY2FsIHVpbnQzICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBkc3Rfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19nbG9iYWwgbG9uZzMgKmRzdCwgY29uc3QgX19sb2NhbCBsb25nMyAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBzaXplX3QgZHN0X3N0cmlkZSwgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfc3RyaWRlZF9jb3B5KF9fZ2xvYmFsIHVsb25nMyAqZHN0LCBjb25zdCBfX2xvY2FsIHVsb25nMyAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBzaXplX3QgZHN0X3N0cmlkZSwgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfc3RyaWRlZF9jb3B5KF9fZ2xvYmFsIGZsb2F0MyAqZHN0LCBjb25zdCBfX2xvY2FsIGZsb2F0MyAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBzaXplX3QgZHN0X3N0cmlkZSwgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfc3RyaWRlZF9jb3B5KF9fZ2xvYmFsIGNoYXI0ICpkc3QsIGNvbnN0IF9fbG9jYWwgY2hhcjQgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IGRzdF9zdHJpZGUsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX3N0cmlkZWRfY29weShfX2dsb2JhbCB1Y2hhcjQgKmRzdCwgY29uc3QgX19sb2NhbCB1Y2hhcjQgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IGRzdF9zdHJpZGUsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX3N0cmlkZWRfY29weShfX2dsb2JhbCBzaG9ydDQgKmRzdCwgY29uc3QgX19sb2NhbCBzaG9ydDQgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IGRzdF9zdHJpZGUsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX3N0cmlkZWRfY29weShfX2dsb2JhbCB1c2hvcnQ0ICpkc3QsIGNvbnN0IF9fbG9jYWwgdXNob3J0NCAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBzaXplX3QgZHN0X3N0cmlkZSwgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfc3RyaWRlZF9jb3B5KF9fZ2xvYmFsIGludDQgKmRzdCwgY29uc3QgX19sb2NhbCBpbnQ0ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBkc3Rfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19nbG9iYWwgdWludDQgKmRzdCwgY29uc3QgX19sb2NhbCB1aW50NCAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBzaXplX3QgZHN0X3N0cmlkZSwgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfc3RyaWRlZF9jb3B5KF9fZ2xvYmFsIGxvbmc0ICpkc3QsIGNvbnN0IF9fbG9jYWwgbG9uZzQgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IGRzdF9zdHJpZGUsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX3N0cmlkZWRfY29weShfX2dsb2JhbCB1bG9uZzQgKmRzdCwgY29uc3QgX19sb2NhbCB1bG9uZzQgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IGRzdF9zdHJpZGUsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX3N0cmlkZWRfY29weShfX2dsb2JhbCBmbG9hdDQgKmRzdCwgY29uc3QgX19sb2NhbCBmbG9hdDQgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IGRzdF9zdHJpZGUsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX3N0cmlkZWRfY29weShfX2dsb2JhbCBjaGFyOCAqZHN0LCBjb25zdCBfX2xvY2FsIGNoYXI4ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBkc3Rfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19nbG9iYWwgdWNoYXI4ICpkc3QsIGNvbnN0IF9fbG9jYWwgdWNoYXI4ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBkc3Rfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19nbG9iYWwgc2hvcnQ4ICpkc3QsIGNvbnN0IF9fbG9jYWwgc2hvcnQ4ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBkc3Rfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19nbG9iYWwgdXNob3J0OCAqZHN0LCBjb25zdCBfX2xvY2FsIHVzaG9ydDggKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IGRzdF9zdHJpZGUsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX3N0cmlkZWRfY29weShfX2dsb2JhbCBpbnQ4ICpkc3QsIGNvbnN0IF9fbG9jYWwgaW50OCAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBzaXplX3QgZHN0X3N0cmlkZSwgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfc3RyaWRlZF9jb3B5KF9fZ2xvYmFsIHVpbnQ4ICpkc3QsIGNvbnN0IF9fbG9jYWwgdWludDggKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IGRzdF9zdHJpZGUsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX3N0cmlkZWRfY29weShfX2dsb2JhbCBsb25nOCAqZHN0LCBjb25zdCBfX2xvY2FsIGxvbmc4ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBkc3Rfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19nbG9iYWwgdWxvbmc4ICpkc3QsIGNvbnN0IF9fbG9jYWwgdWxvbmc4ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBkc3Rfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19nbG9iYWwgZmxvYXQ4ICpkc3QsIGNvbnN0IF9fbG9jYWwgZmxvYXQ4ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBkc3Rfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19nbG9iYWwgY2hhcjE2ICpkc3QsIGNvbnN0IF9fbG9jYWwgY2hhcjE2ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBkc3Rfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19nbG9iYWwgdWNoYXIxNiAqZHN0LCBjb25zdCBfX2xvY2FsIHVjaGFyMTYgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IGRzdF9zdHJpZGUsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX3N0cmlkZWRfY29weShfX2dsb2JhbCBzaG9ydDE2ICpkc3QsIGNvbnN0IF9fbG9jYWwgc2hvcnQxNiAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBzaXplX3QgZHN0X3N0cmlkZSwgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfc3RyaWRlZF9jb3B5KF9fZ2xvYmFsIHVzaG9ydDE2ICpkc3QsIGNvbnN0IF9fbG9jYWwgdXNob3J0MTYgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IGRzdF9zdHJpZGUsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX3N0cmlkZWRfY29weShfX2dsb2JhbCBpbnQxNiAqZHN0LCBjb25zdCBfX2xvY2FsIGludDE2ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBkc3Rfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19nbG9iYWwgdWludDE2ICpkc3QsIGNvbnN0IF9fbG9jYWwgdWludDE2ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBkc3Rfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19nbG9iYWwgbG9uZzE2ICpkc3QsIGNvbnN0IF9fbG9jYWwgbG9uZzE2ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBkc3Rfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19nbG9iYWwgdWxvbmcxNiAqZHN0LCBjb25zdCBfX2xvY2FsIHVsb25nMTYgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IGRzdF9zdHJpZGUsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX3N0cmlkZWRfY29weShfX2dsb2JhbCBmbG9hdDE2ICpkc3QsIGNvbnN0IF9fbG9jYWwgZmxvYXQxNiAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBzaXplX3QgZHN0X3N0cmlkZSwgZXZlbnRfdCBldmVudCk7CiNpZmRlZiBjbF9raHJfZnA2NApldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX3N0cmlkZWRfY29weShfX2xvY2FsIGRvdWJsZSAqZHN0LCBjb25zdCBfX2dsb2JhbCBkb3VibGUgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IHNyY19zdHJpZGUsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX3N0cmlkZWRfY29weShfX2xvY2FsIGRvdWJsZTIgKmRzdCwgY29uc3QgX19nbG9iYWwgZG91YmxlMiAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBzaXplX3Qgc3JjX3N0cmlkZSwgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfc3RyaWRlZF9jb3B5KF9fbG9jYWwgZG91YmxlMyAqZHN0LCBjb25zdCBfX2dsb2JhbCBkb3VibGUzICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBzcmNfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19sb2NhbCBkb3VibGU0ICpkc3QsIGNvbnN0IF9fZ2xvYmFsIGRvdWJsZTQgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IHNyY19zdHJpZGUsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX3N0cmlkZWRfY29weShfX2xvY2FsIGRvdWJsZTggKmRzdCwgY29uc3QgX19nbG9iYWwgZG91YmxlOCAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBzaXplX3Qgc3JjX3N0cmlkZSwgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfc3RyaWRlZF9jb3B5KF9fbG9jYWwgZG91YmxlMTYgKmRzdCwgY29uc3QgX19nbG9iYWwgZG91YmxlMTYgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IHNyY19zdHJpZGUsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX3N0cmlkZWRfY29weShfX2dsb2JhbCBkb3VibGUgKmRzdCwgY29uc3QgX19sb2NhbCBkb3VibGUgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IGRzdF9zdHJpZGUsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX3N0cmlkZWRfY29weShfX2dsb2JhbCBkb3VibGUyICpkc3QsIGNvbnN0IF9fbG9jYWwgZG91YmxlMiAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBzaXplX3QgZHN0X3N0cmlkZSwgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfc3RyaWRlZF9jb3B5KF9fZ2xvYmFsIGRvdWJsZTMgKmRzdCwgY29uc3QgX19sb2NhbCBkb3VibGUzICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBkc3Rfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19nbG9iYWwgZG91YmxlNCAqZHN0LCBjb25zdCBfX2xvY2FsIGRvdWJsZTQgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IGRzdF9zdHJpZGUsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX3N0cmlkZWRfY29weShfX2dsb2JhbCBkb3VibGU4ICpkc3QsIGNvbnN0IF9fbG9jYWwgZG91YmxlOCAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBzaXplX3QgZHN0X3N0cmlkZSwgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfc3RyaWRlZF9jb3B5KF9fZ2xvYmFsIGRvdWJsZTE2ICpkc3QsIGNvbnN0IF9fbG9jYWwgZG91YmxlMTYgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IGRzdF9zdHJpZGUsIGV2ZW50X3QgZXZlbnQpOwojZW5kaWYgLy9jbF9raHJfZnA2NAojaWZkZWYgY2xfa2hyX2ZwMTYKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19sb2NhbCBoYWxmICpkc3QsIGNvbnN0IF9fZ2xvYmFsIGhhbGYgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IHNyY19zdHJpZGUsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX3N0cmlkZWRfY29weShfX2xvY2FsIGhhbGYyICpkc3QsIGNvbnN0IF9fZ2xvYmFsIGhhbGYyICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBzcmNfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19sb2NhbCBoYWxmMyAqZHN0LCBjb25zdCBfX2dsb2JhbCBoYWxmMyAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBzaXplX3Qgc3JjX3N0cmlkZSwgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfc3RyaWRlZF9jb3B5KF9fbG9jYWwgaGFsZjQgKmRzdCwgY29uc3QgX19nbG9iYWwgaGFsZjQgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IHNyY19zdHJpZGUsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX3N0cmlkZWRfY29weShfX2xvY2FsIGhhbGY4ICpkc3QsIGNvbnN0IF9fZ2xvYmFsIGhhbGY4ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBzcmNfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19sb2NhbCBoYWxmMTYgKmRzdCwgY29uc3QgX19nbG9iYWwgaGFsZjE2ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBzcmNfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19nbG9iYWwgaGFsZiAqZHN0LCBjb25zdCBfX2xvY2FsIGhhbGYgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IGRzdF9zdHJpZGUsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX3N0cmlkZWRfY29weShfX2dsb2JhbCBoYWxmMiAqZHN0LCBjb25zdCBfX2xvY2FsIGhhbGYyICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBkc3Rfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19nbG9iYWwgaGFsZjMgKmRzdCwgY29uc3QgX19sb2NhbCBoYWxmMyAqc3JjLCBzaXplX3QgbnVtX2VsZW1lbnRzLCBzaXplX3QgZHN0X3N0cmlkZSwgZXZlbnRfdCBldmVudCk7CmV2ZW50X3QgX19vdmxkIGFzeW5jX3dvcmtfZ3JvdXBfc3RyaWRlZF9jb3B5KF9fZ2xvYmFsIGhhbGY0ICpkc3QsIGNvbnN0IF9fbG9jYWwgaGFsZjQgKnNyYywgc2l6ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IGRzdF9zdHJpZGUsIGV2ZW50X3QgZXZlbnQpOwpldmVudF90IF9fb3ZsZCBhc3luY193b3JrX2dyb3VwX3N0cmlkZWRfY29weShfX2dsb2JhbCBoYWxmOCAqZHN0LCBjb25zdCBfX2xvY2FsIGhhbGY4ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBkc3Rfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKZXZlbnRfdCBfX292bGQgYXN5bmNfd29ya19ncm91cF9zdHJpZGVkX2NvcHkoX19nbG9iYWwgaGFsZjE2ICpkc3QsIGNvbnN0IF9fbG9jYWwgaGFsZjE2ICpzcmMsIHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBkc3Rfc3RyaWRlLCBldmVudF90IGV2ZW50KTsKI2VuZGlmIC8vY2xfa2hyX2ZwMTYKCi8qKgogKiBXYWl0IGZvciBldmVudHMgdGhhdCBpZGVudGlmeSB0aGUKICogYXN5bmNfd29ya19ncm91cF9jb3B5IG9wZXJhdGlvbnMgdG8KICogY29tcGxldGUuIFRoZSBldmVudCBvYmplY3RzIHNwZWNpZmllZCBpbgogKiBldmVudF9saXN0IHdpbGwgYmUgcmVsZWFzZWQgYWZ0ZXIgdGhlIHdhaXQgaXMKICogcGVyZm9ybWVkLgogKiBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgZW5jb3VudGVyZWQgYnkgYWxsIHdvcmtpdGVtcwogKiBpbiBhIHdvcmstZ3JvdXAgZXhlY3V0aW5nIHRoZSBrZXJuZWwgd2l0aAogKiB0aGUgc2FtZSBudW1fZXZlbnRzIGFuZCBldmVudCBvYmplY3RzIHNwZWNpZmllZAogKiBpbiBldmVudF9saXN0OyBvdGhlcndpc2UgdGhlIHJlc3VsdHMgYXJlIHVuZGVmaW5lZC4KICovCnZvaWQgX19vdmxkIHdhaXRfZ3JvdXBfZXZlbnRzKGludCBudW1fZXZlbnRzLCBldmVudF90ICpldmVudF9saXN0KTsKCi8qKgogKiBQcmVmZXRjaCBudW1fZWxlbWVudHMgKiBzaXplb2YoZ2VudHlwZSkKICogYnl0ZXMgaW50byB0aGUgZ2xvYmFsIGNhY2hlLiBUaGUgcHJlZmV0Y2gKICogaW5zdHJ1Y3Rpb24gaXMgYXBwbGllZCB0byBhIHdvcmstaXRlbSBpbiBhIHdvcmtncm91cAogKiBhbmQgZG9lcyBub3QgYWZmZWN0IHRoZSBmdW5jdGlvbmFsCiAqIGJlaGF2aW9yIG9mIHRoZSBrZXJuZWwuCiAqLwp2b2lkIF9fb3ZsZCBwcmVmZXRjaChjb25zdCBfX2dsb2JhbCBjaGFyICpwLCBzaXplX3QgbnVtX2VsZW1lbnRzKTsKdm9pZCBfX292bGQgcHJlZmV0Y2goY29uc3QgX19nbG9iYWwgdWNoYXIgKnAsIHNpemVfdCBudW1fZWxlbWVudHMpOwp2b2lkIF9fb3ZsZCBwcmVmZXRjaChjb25zdCBfX2dsb2JhbCBzaG9ydCAqcCwgc2l6ZV90IG51bV9lbGVtZW50cyk7CnZvaWQgX19vdmxkIHByZWZldGNoKGNvbnN0IF9fZ2xvYmFsIHVzaG9ydCAqcCwgc2l6ZV90IG51bV9lbGVtZW50cyk7CnZvaWQgX19vdmxkIHByZWZldGNoKGNvbnN0IF9fZ2xvYmFsIGludCAqcCwgc2l6ZV90IG51bV9lbGVtZW50cyk7CnZvaWQgX19vdmxkIHByZWZldGNoKGNvbnN0IF9fZ2xvYmFsIHVpbnQgKnAsIHNpemVfdCBudW1fZWxlbWVudHMpOwp2b2lkIF9fb3ZsZCBwcmVmZXRjaChjb25zdCBfX2dsb2JhbCBsb25nICpwLCBzaXplX3QgbnVtX2VsZW1lbnRzKTsKdm9pZCBfX292bGQgcHJlZmV0Y2goY29uc3QgX19nbG9iYWwgdWxvbmcgKnAsIHNpemVfdCBudW1fZWxlbWVudHMpOwp2b2lkIF9fb3ZsZCBwcmVmZXRjaChjb25zdCBfX2dsb2JhbCBmbG9hdCAqcCwgc2l6ZV90IG51bV9lbGVtZW50cyk7CnZvaWQgX19vdmxkIHByZWZldGNoKGNvbnN0IF9fZ2xvYmFsIGNoYXIyICpwLCBzaXplX3QgbnVtX2VsZW1lbnRzKTsKdm9pZCBfX292bGQgcHJlZmV0Y2goY29uc3QgX19nbG9iYWwgdWNoYXIyICpwLCBzaXplX3QgbnVtX2VsZW1lbnRzKTsKdm9pZCBfX292bGQgcHJlZmV0Y2goY29uc3QgX19nbG9iYWwgc2hvcnQyICpwLCBzaXplX3QgbnVtX2VsZW1lbnRzKTsKdm9pZCBfX292bGQgcHJlZmV0Y2goY29uc3QgX19nbG9iYWwgdXNob3J0MiAqcCwgc2l6ZV90IG51bV9lbGVtZW50cyk7CnZvaWQgX19vdmxkIHByZWZldGNoKGNvbnN0IF9fZ2xvYmFsIGludDIgKnAsIHNpemVfdCBudW1fZWxlbWVudHMpOwp2b2lkIF9fb3ZsZCBwcmVmZXRjaChjb25zdCBfX2dsb2JhbCB1aW50MiAqcCwgc2l6ZV90IG51bV9lbGVtZW50cyk7CnZvaWQgX19vdmxkIHByZWZldGNoKGNvbnN0IF9fZ2xvYmFsIGxvbmcyICpwLCBzaXplX3QgbnVtX2VsZW1lbnRzKTsKdm9pZCBfX292bGQgcHJlZmV0Y2goY29uc3QgX19nbG9iYWwgdWxvbmcyICpwLCBzaXplX3QgbnVtX2VsZW1lbnRzKTsKdm9pZCBfX292bGQgcHJlZmV0Y2goY29uc3QgX19nbG9iYWwgZmxvYXQyICpwLCBzaXplX3QgbnVtX2VsZW1lbnRzKTsKdm9pZCBfX292bGQgcHJlZmV0Y2goY29uc3QgX19nbG9iYWwgY2hhcjMgKnAsIHNpemVfdCBudW1fZWxlbWVudHMpOwp2b2lkIF9fb3ZsZCBwcmVmZXRjaChjb25zdCBfX2dsb2JhbCB1Y2hhcjMgKnAsIHNpemVfdCBudW1fZWxlbWVudHMpOwp2b2lkIF9fb3ZsZCBwcmVmZXRjaChjb25zdCBfX2dsb2JhbCBzaG9ydDMgKnAsIHNpemVfdCBudW1fZWxlbWVudHMpOwp2b2lkIF9fb3ZsZCBwcmVmZXRjaChjb25zdCBfX2dsb2JhbCB1c2hvcnQzICpwLCBzaXplX3QgbnVtX2VsZW1lbnRzKTsKdm9pZCBfX292bGQgcHJlZmV0Y2goY29uc3QgX19nbG9iYWwgaW50MyAqcCwgc2l6ZV90IG51bV9lbGVtZW50cyk7CnZvaWQgX19vdmxkIHByZWZldGNoKGNvbnN0IF9fZ2xvYmFsIHVpbnQzICpwLCBzaXplX3QgbnVtX2VsZW1lbnRzKTsKdm9pZCBfX292bGQgcHJlZmV0Y2goY29uc3QgX19nbG9iYWwgbG9uZzMgKnAsIHNpemVfdCBudW1fZWxlbWVudHMpOwp2b2lkIF9fb3ZsZCBwcmVmZXRjaChjb25zdCBfX2dsb2JhbCB1bG9uZzMgKnAsIHNpemVfdCBudW1fZWxlbWVudHMpOwp2b2lkIF9fb3ZsZCBwcmVmZXRjaChjb25zdCBfX2dsb2JhbCBmbG9hdDMgKnAsIHNpemVfdCBudW1fZWxlbWVudHMpOwp2b2lkIF9fb3ZsZCBwcmVmZXRjaChjb25zdCBfX2dsb2JhbCBjaGFyNCAqcCwgc2l6ZV90IG51bV9lbGVtZW50cyk7CnZvaWQgX19vdmxkIHByZWZldGNoKGNvbnN0IF9fZ2xvYmFsIHVjaGFyNCAqcCwgc2l6ZV90IG51bV9lbGVtZW50cyk7CnZvaWQgX19vdmxkIHByZWZldGNoKGNvbnN0IF9fZ2xvYmFsIHNob3J0NCAqcCwgc2l6ZV90IG51bV9lbGVtZW50cyk7CnZvaWQgX19vdmxkIHByZWZldGNoKGNvbnN0IF9fZ2xvYmFsIHVzaG9ydDQgKnAsIHNpemVfdCBudW1fZWxlbWVudHMpOwp2b2lkIF9fb3ZsZCBwcmVmZXRjaChjb25zdCBfX2dsb2JhbCBpbnQ0ICpwLCBzaXplX3QgbnVtX2VsZW1lbnRzKTsKdm9pZCBfX292bGQgcHJlZmV0Y2goY29uc3QgX19nbG9iYWwgdWludDQgKnAsIHNpemVfdCBudW1fZWxlbWVudHMpOwp2b2lkIF9fb3ZsZCBwcmVmZXRjaChjb25zdCBfX2dsb2JhbCBsb25nNCAqcCwgc2l6ZV90IG51bV9lbGVtZW50cyk7CnZvaWQgX19vdmxkIHByZWZldGNoKGNvbnN0IF9fZ2xvYmFsIHVsb25nNCAqcCwgc2l6ZV90IG51bV9lbGVtZW50cyk7CnZvaWQgX19vdmxkIHByZWZldGNoKGNvbnN0IF9fZ2xvYmFsIGZsb2F0NCAqcCwgc2l6ZV90IG51bV9lbGVtZW50cyk7CnZvaWQgX19vdmxkIHByZWZldGNoKGNvbnN0IF9fZ2xvYmFsIGNoYXI4ICpwLCBzaXplX3QgbnVtX2VsZW1lbnRzKTsKdm9pZCBfX292bGQgcHJlZmV0Y2goY29uc3QgX19nbG9iYWwgdWNoYXI4ICpwLCBzaXplX3QgbnVtX2VsZW1lbnRzKTsKdm9pZCBfX292bGQgcHJlZmV0Y2goY29uc3QgX19nbG9iYWwgc2hvcnQ4ICpwLCBzaXplX3QgbnVtX2VsZW1lbnRzKTsKdm9pZCBfX292bGQgcHJlZmV0Y2goY29uc3QgX19nbG9iYWwgdXNob3J0OCAqcCwgc2l6ZV90IG51bV9lbGVtZW50cyk7CnZvaWQgX19vdmxkIHByZWZldGNoKGNvbnN0IF9fZ2xvYmFsIGludDggKnAsIHNpemVfdCBudW1fZWxlbWVudHMpOwp2b2lkIF9fb3ZsZCBwcmVmZXRjaChjb25zdCBfX2dsb2JhbCB1aW50OCAqcCwgc2l6ZV90IG51bV9lbGVtZW50cyk7CnZvaWQgX19vdmxkIHByZWZldGNoKGNvbnN0IF9fZ2xvYmFsIGxvbmc4ICpwLCBzaXplX3QgbnVtX2VsZW1lbnRzKTsKdm9pZCBfX292bGQgcHJlZmV0Y2goY29uc3QgX19nbG9iYWwgdWxvbmc4ICpwLCBzaXplX3QgbnVtX2VsZW1lbnRzKTsKdm9pZCBfX292bGQgcHJlZmV0Y2goY29uc3QgX19nbG9iYWwgZmxvYXQ4ICpwLCBzaXplX3QgbnVtX2VsZW1lbnRzKTsKdm9pZCBfX292bGQgcHJlZmV0Y2goY29uc3QgX19nbG9iYWwgY2hhcjE2ICpwLCBzaXplX3QgbnVtX2VsZW1lbnRzKTsKdm9pZCBfX292bGQgcHJlZmV0Y2goY29uc3QgX19nbG9iYWwgdWNoYXIxNiAqcCwgc2l6ZV90IG51bV9lbGVtZW50cyk7CnZvaWQgX19vdmxkIHByZWZldGNoKGNvbnN0IF9fZ2xvYmFsIHNob3J0MTYgKnAsIHNpemVfdCBudW1fZWxlbWVudHMpOwp2b2lkIF9fb3ZsZCBwcmVmZXRjaChjb25zdCBfX2dsb2JhbCB1c2hvcnQxNiAqcCwgc2l6ZV90IG51bV9lbGVtZW50cyk7CnZvaWQgX19vdmxkIHByZWZldGNoKGNvbnN0IF9fZ2xvYmFsIGludDE2ICpwLCBzaXplX3QgbnVtX2VsZW1lbnRzKTsKdm9pZCBfX292bGQgcHJlZmV0Y2goY29uc3QgX19nbG9iYWwgdWludDE2ICpwLCBzaXplX3QgbnVtX2VsZW1lbnRzKTsKdm9pZCBfX292bGQgcHJlZmV0Y2goY29uc3QgX19nbG9iYWwgbG9uZzE2ICpwLCBzaXplX3QgbnVtX2VsZW1lbnRzKTsKdm9pZCBfX292bGQgcHJlZmV0Y2goY29uc3QgX19nbG9iYWwgdWxvbmcxNiAqcCwgc2l6ZV90IG51bV9lbGVtZW50cyk7CnZvaWQgX19vdmxkIHByZWZldGNoKGNvbnN0IF9fZ2xvYmFsIGZsb2F0MTYgKnAsIHNpemVfdCBudW1fZWxlbWVudHMpOwojaWZkZWYgY2xfa2hyX2ZwNjQKdm9pZCBfX292bGQgcHJlZmV0Y2goY29uc3QgX19nbG9iYWwgZG91YmxlICpwLCBzaXplX3QgbnVtX2VsZW1lbnRzKTsKdm9pZCBfX292bGQgcHJlZmV0Y2goY29uc3QgX19nbG9iYWwgZG91YmxlMiAqcCwgc2l6ZV90IG51bV9lbGVtZW50cyk7CnZvaWQgX19vdmxkIHByZWZldGNoKGNvbnN0IF9fZ2xvYmFsIGRvdWJsZTMgKnAsIHNpemVfdCBudW1fZWxlbWVudHMpOwp2b2lkIF9fb3ZsZCBwcmVmZXRjaChjb25zdCBfX2dsb2JhbCBkb3VibGU0ICpwLCBzaXplX3QgbnVtX2VsZW1lbnRzKTsKdm9pZCBfX292bGQgcHJlZmV0Y2goY29uc3QgX19nbG9iYWwgZG91YmxlOCAqcCwgc2l6ZV90IG51bV9lbGVtZW50cyk7CnZvaWQgX19vdmxkIHByZWZldGNoKGNvbnN0IF9fZ2xvYmFsIGRvdWJsZTE2ICpwLCBzaXplX3QgbnVtX2VsZW1lbnRzKTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKI2lmZGVmIGNsX2tocl9mcDE2CnZvaWQgX19vdmxkIHByZWZldGNoKGNvbnN0IF9fZ2xvYmFsIGhhbGYgKnAsIHNpemVfdCBudW1fZWxlbWVudHMpOwp2b2lkIF9fb3ZsZCBwcmVmZXRjaChjb25zdCBfX2dsb2JhbCBoYWxmMiAqcCwgc2l6ZV90IG51bV9lbGVtZW50cyk7CnZvaWQgX19vdmxkIHByZWZldGNoKGNvbnN0IF9fZ2xvYmFsIGhhbGYzICpwLCBzaXplX3QgbnVtX2VsZW1lbnRzKTsKdm9pZCBfX292bGQgcHJlZmV0Y2goY29uc3QgX19nbG9iYWwgaGFsZjQgKnAsIHNpemVfdCBudW1fZWxlbWVudHMpOwp2b2lkIF9fb3ZsZCBwcmVmZXRjaChjb25zdCBfX2dsb2JhbCBoYWxmOCAqcCwgc2l6ZV90IG51bV9lbGVtZW50cyk7CnZvaWQgX19vdmxkIHByZWZldGNoKGNvbnN0IF9fZ2xvYmFsIGhhbGYxNiAqcCwgc2l6ZV90IG51bV9lbGVtZW50cyk7CiNlbmRpZiAvLyBjbF9raHJfZnAxNgoKLy8gT3BlbkNMIHYxLjEgczYuMTEuMSwgdjEuMiBzNi4xMi4xMSAtIEF0b21pYyBGdW5jdGlvbnMKCiNpZiBkZWZpbmVkKGNsX2tocl9pbnQ2NF9iYXNlX2F0b21pY3MpICYmIGRlZmluZWQoY2xfa2hyX2ludDY0X2V4dGVuZGVkX2F0b21pY3MpCiNwcmFnbWEgT1BFTkNMIEVYVEVOU0lPTiBjbF9raHJfaW50NjRfYmFzZV9hdG9taWNzIDogZW5hYmxlCiNwcmFnbWEgT1BFTkNMIEVYVEVOU0lPTiBjbF9raHJfaW50NjRfZXh0ZW5kZWRfYXRvbWljcyA6IGVuYWJsZQojZW5kaWYKLyoqCiAqIFJlYWQgdGhlIDMyLWJpdCB2YWx1ZSAocmVmZXJyZWQgdG8gYXMgb2xkKQogKiBzdG9yZWQgYXQgbG9jYXRpb24gcG9pbnRlZCBieSBwLiBDb21wdXRlCiAqIChvbGQgKyB2YWwpIGFuZCBzdG9yZSByZXN1bHQgYXQgbG9jYXRpb24KICogcG9pbnRlZCBieSBwLiBUaGUgZnVuY3Rpb24gcmV0dXJucyBvbGQuCiAqLwppbnQgX19vdmxkIGF0b21pY19hZGQodm9sYXRpbGUgX19nbG9iYWwgaW50ICpwLCBpbnQgdmFsKTsKdW5zaWduZWQgaW50IF9fb3ZsZCBhdG9taWNfYWRkKHZvbGF0aWxlIF9fZ2xvYmFsIHVuc2lnbmVkIGludCAqcCwgdW5zaWduZWQgaW50IHZhbCk7CmludCBfX292bGQgYXRvbWljX2FkZCh2b2xhdGlsZSBfX2xvY2FsIGludCAqcCwgaW50IHZhbCk7CnVuc2lnbmVkIGludCBfX292bGQgYXRvbWljX2FkZCh2b2xhdGlsZSBfX2xvY2FsIHVuc2lnbmVkIGludCAqcCwgdW5zaWduZWQgaW50IHZhbCk7CiNpZmRlZiBfX09QRU5DTF9DUFBfVkVSU0lPTl9fCmludCBfX292bGQgYXRvbWljX2FkZCh2b2xhdGlsZSBpbnQgKnAsIGludCB2YWwpOwp1bnNpZ25lZCBpbnQgX19vdmxkIGF0b21pY19hZGQodm9sYXRpbGUgdW5zaWduZWQgaW50ICpwLCB1bnNpZ25lZCBpbnQgdmFsKTsKI2VuZGlmCgojaWYgZGVmaW5lZChjbF9raHJfZ2xvYmFsX2ludDMyX2Jhc2VfYXRvbWljcykKaW50IF9fb3ZsZCBhdG9tX2FkZCh2b2xhdGlsZSBfX2dsb2JhbCBpbnQgKnAsIGludCB2YWwpOwp1bnNpZ25lZCBpbnQgX19vdmxkIGF0b21fYWRkKHZvbGF0aWxlIF9fZ2xvYmFsIHVuc2lnbmVkIGludCAqcCwgdW5zaWduZWQgaW50IHZhbCk7CiNlbmRpZgojaWYgZGVmaW5lZChjbF9raHJfbG9jYWxfaW50MzJfYmFzZV9hdG9taWNzKQppbnQgX19vdmxkIGF0b21fYWRkKHZvbGF0aWxlIF9fbG9jYWwgaW50ICpwLCBpbnQgdmFsKTsKdW5zaWduZWQgaW50IF9fb3ZsZCBhdG9tX2FkZCh2b2xhdGlsZSBfX2xvY2FsIHVuc2lnbmVkIGludCAqcCwgdW5zaWduZWQgaW50IHZhbCk7CiNlbmRpZgoKI2lmIGRlZmluZWQoY2xfa2hyX2ludDY0X2Jhc2VfYXRvbWljcykKbG9uZyBfX292bGQgYXRvbV9hZGQodm9sYXRpbGUgX19nbG9iYWwgbG9uZyAqcCwgbG9uZyB2YWwpOwp1bnNpZ25lZCBsb25nIF9fb3ZsZCBhdG9tX2FkZCh2b2xhdGlsZSBfX2dsb2JhbCB1bnNpZ25lZCBsb25nICpwLCB1bnNpZ25lZCBsb25nIHZhbCk7CmxvbmcgX19vdmxkIGF0b21fYWRkKHZvbGF0aWxlIF9fbG9jYWwgbG9uZyAqcCwgbG9uZyB2YWwpOwp1bnNpZ25lZCBsb25nIF9fb3ZsZCBhdG9tX2FkZCh2b2xhdGlsZSBfX2xvY2FsIHVuc2lnbmVkIGxvbmcgKnAsIHVuc2lnbmVkIGxvbmcgdmFsKTsKI2VuZGlmCgovKioKICogUmVhZCB0aGUgMzItYml0IHZhbHVlIChyZWZlcnJlZCB0byBhcyBvbGQpIHN0b3JlZCBhdCBsb2NhdGlvbiBwb2ludGVkIGJ5IHAuCiAqIENvbXB1dGUgKG9sZCAtIHZhbCkgYW5kIHN0b3JlIHJlc3VsdCBhdCBsb2NhdGlvbiBwb2ludGVkIGJ5IHAuIFRoZSBmdW5jdGlvbgogKiByZXR1cm5zIG9sZC4KICovCmludCBfX292bGQgYXRvbWljX3N1Yih2b2xhdGlsZSBfX2dsb2JhbCBpbnQgKnAsIGludCB2YWwpOwp1bnNpZ25lZCBpbnQgX19vdmxkIGF0b21pY19zdWIodm9sYXRpbGUgX19nbG9iYWwgdW5zaWduZWQgaW50ICpwLCB1bnNpZ25lZCBpbnQgdmFsKTsKaW50IF9fb3ZsZCBhdG9taWNfc3ViKHZvbGF0aWxlIF9fbG9jYWwgaW50ICpwLCBpbnQgdmFsKTsKdW5zaWduZWQgaW50IF9fb3ZsZCBhdG9taWNfc3ViKHZvbGF0aWxlIF9fbG9jYWwgdW5zaWduZWQgaW50ICpwLCB1bnNpZ25lZCBpbnQgdmFsKTsKI2lmZGVmIF9fT1BFTkNMX0NQUF9WRVJTSU9OX18KaW50IF9fb3ZsZCBhdG9taWNfc3ViKHZvbGF0aWxlIGludCAqcCwgaW50IHZhbCk7CnVuc2lnbmVkIGludCBfX292bGQgYXRvbWljX3N1Yih2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKnAsIHVuc2lnbmVkIGludCB2YWwpOwojZW5kaWYKCiNpZiBkZWZpbmVkKGNsX2tocl9nbG9iYWxfaW50MzJfYmFzZV9hdG9taWNzKQppbnQgX19vdmxkIGF0b21fc3ViKHZvbGF0aWxlIF9fZ2xvYmFsIGludCAqcCwgaW50IHZhbCk7CnVuc2lnbmVkIGludCBfX292bGQgYXRvbV9zdWIodm9sYXRpbGUgX19nbG9iYWwgdW5zaWduZWQgaW50ICpwLCB1bnNpZ25lZCBpbnQgdmFsKTsKI2VuZGlmCiNpZiBkZWZpbmVkKGNsX2tocl9sb2NhbF9pbnQzMl9iYXNlX2F0b21pY3MpCmludCBfX292bGQgYXRvbV9zdWIodm9sYXRpbGUgX19sb2NhbCBpbnQgKnAsIGludCB2YWwpOwp1bnNpZ25lZCBpbnQgX19vdmxkIGF0b21fc3ViKHZvbGF0aWxlIF9fbG9jYWwgdW5zaWduZWQgaW50ICpwLCB1bnNpZ25lZCBpbnQgdmFsKTsKI2VuZGlmCgojaWYgZGVmaW5lZChjbF9raHJfaW50NjRfYmFzZV9hdG9taWNzKQpsb25nIF9fb3ZsZCBhdG9tX3N1Yih2b2xhdGlsZSBfX2dsb2JhbCBsb25nICpwLCBsb25nIHZhbCk7CnVuc2lnbmVkIGxvbmcgX19vdmxkIGF0b21fc3ViKHZvbGF0aWxlIF9fZ2xvYmFsIHVuc2lnbmVkIGxvbmcgKnAsIHVuc2lnbmVkIGxvbmcgdmFsKTsKbG9uZyBfX292bGQgYXRvbV9zdWIodm9sYXRpbGUgX19sb2NhbCBsb25nICpwLCBsb25nIHZhbCk7CnVuc2lnbmVkIGxvbmcgX19vdmxkIGF0b21fc3ViKHZvbGF0aWxlIF9fbG9jYWwgdW5zaWduZWQgbG9uZyAqcCwgdW5zaWduZWQgbG9uZyB2YWwpOwojZW5kaWYKCi8qKgogKiBTd2FwcyB0aGUgb2xkIHZhbHVlIHN0b3JlZCBhdCBsb2NhdGlvbiBwCiAqIHdpdGggbmV3IHZhbHVlIGdpdmVuIGJ5IHZhbC4gUmV0dXJucyBvbGQKICogdmFsdWUuCiAqLwppbnQgX19vdmxkIGF0b21pY194Y2hnKHZvbGF0aWxlIF9fZ2xvYmFsIGludCAqcCwgaW50IHZhbCk7CnVuc2lnbmVkIGludCBfX292bGQgYXRvbWljX3hjaGcodm9sYXRpbGUgX19nbG9iYWwgdW5zaWduZWQgaW50ICpwLCB1bnNpZ25lZCBpbnQgdmFsKTsKaW50IF9fb3ZsZCBhdG9taWNfeGNoZyh2b2xhdGlsZSBfX2xvY2FsIGludCAqcCwgaW50IHZhbCk7CnVuc2lnbmVkIGludCBfX292bGQgYXRvbWljX3hjaGcodm9sYXRpbGUgX19sb2NhbCB1bnNpZ25lZCBpbnQgKnAsIHVuc2lnbmVkIGludCB2YWwpOwpmbG9hdCBfX292bGQgYXRvbWljX3hjaGcodm9sYXRpbGUgX19nbG9iYWwgZmxvYXQgKnAsIGZsb2F0IHZhbCk7CmZsb2F0IF9fb3ZsZCBhdG9taWNfeGNoZyh2b2xhdGlsZSBfX2xvY2FsIGZsb2F0ICpwLCBmbG9hdCB2YWwpOwojaWZkZWYgX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXwppbnQgX19vdmxkIGF0b21pY194Y2hnKHZvbGF0aWxlIGludCAqcCwgaW50IHZhbCk7CnVuc2lnbmVkIGludCBfX292bGQgYXRvbWljX3hjaGcodm9sYXRpbGUgdW5zaWduZWQgaW50ICpwLCB1bnNpZ25lZCBpbnQgdmFsKTsKZmxvYXQgX19vdmxkIGF0b21pY194Y2hnKHZvbGF0aWxlIGZsb2F0ICpwLCBmbG9hdCB2YWwpOwojZW5kaWYKCiNpZiBkZWZpbmVkKGNsX2tocl9nbG9iYWxfaW50MzJfYmFzZV9hdG9taWNzKQppbnQgX19vdmxkIGF0b21feGNoZyh2b2xhdGlsZSBfX2dsb2JhbCBpbnQgKnAsIGludCB2YWwpOwp1bnNpZ25lZCBpbnQgX19vdmxkIGF0b21feGNoZyh2b2xhdGlsZSBfX2dsb2JhbCB1bnNpZ25lZCBpbnQgKnAsIHVuc2lnbmVkIGludCB2YWwpOwojZW5kaWYKI2lmIGRlZmluZWQoY2xfa2hyX2xvY2FsX2ludDMyX2Jhc2VfYXRvbWljcykKaW50IF9fb3ZsZCBhdG9tX3hjaGcodm9sYXRpbGUgX19sb2NhbCBpbnQgKnAsIGludCB2YWwpOwp1bnNpZ25lZCBpbnQgX19vdmxkIGF0b21feGNoZyh2b2xhdGlsZSBfX2xvY2FsIHVuc2lnbmVkIGludCAqcCwgdW5zaWduZWQgaW50IHZhbCk7CiNlbmRpZgoKI2lmIGRlZmluZWQoY2xfa2hyX2ludDY0X2Jhc2VfYXRvbWljcykKbG9uZyBfX292bGQgYXRvbV94Y2hnKHZvbGF0aWxlIF9fZ2xvYmFsIGxvbmcgKnAsIGxvbmcgdmFsKTsKbG9uZyBfX292bGQgYXRvbV94Y2hnKHZvbGF0aWxlIF9fbG9jYWwgbG9uZyAqcCwgbG9uZyB2YWwpOwp1bnNpZ25lZCBsb25nIF9fb3ZsZCBhdG9tX3hjaGcodm9sYXRpbGUgX19nbG9iYWwgdW5zaWduZWQgbG9uZyAqcCwgdW5zaWduZWQgbG9uZyB2YWwpOwp1bnNpZ25lZCBsb25nIF9fb3ZsZCBhdG9tX3hjaGcodm9sYXRpbGUgX19sb2NhbCB1bnNpZ25lZCBsb25nICpwLCB1bnNpZ25lZCBsb25nIHZhbCk7CiNlbmRpZgoKLyoqCiAqIFJlYWQgdGhlIDMyLWJpdCB2YWx1ZSAocmVmZXJyZWQgdG8gYXMgb2xkKQogKiBzdG9yZWQgYXQgbG9jYXRpb24gcG9pbnRlZCBieSBwLiBDb21wdXRlCiAqIChvbGQgKyAxKSBhbmQgc3RvcmUgcmVzdWx0IGF0IGxvY2F0aW9uCiAqIHBvaW50ZWQgYnkgcC4gVGhlIGZ1bmN0aW9uIHJldHVybnMgb2xkLgogKi8KaW50IF9fb3ZsZCBhdG9taWNfaW5jKHZvbGF0aWxlIF9fZ2xvYmFsIGludCAqcCk7CnVuc2lnbmVkIGludCBfX292bGQgYXRvbWljX2luYyh2b2xhdGlsZSBfX2dsb2JhbCB1bnNpZ25lZCBpbnQgKnApOwppbnQgX19vdmxkIGF0b21pY19pbmModm9sYXRpbGUgX19sb2NhbCBpbnQgKnApOwp1bnNpZ25lZCBpbnQgX19vdmxkIGF0b21pY19pbmModm9sYXRpbGUgX19sb2NhbCB1bnNpZ25lZCBpbnQgKnApOwojaWZkZWYgX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXwppbnQgX19vdmxkIGF0b21pY19pbmModm9sYXRpbGUgaW50ICpwKTsKdW5zaWduZWQgaW50IF9fb3ZsZCBhdG9taWNfaW5jKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqcCk7CiNlbmRpZgoKI2lmIGRlZmluZWQoY2xfa2hyX2dsb2JhbF9pbnQzMl9iYXNlX2F0b21pY3MpCmludCBfX292bGQgYXRvbV9pbmModm9sYXRpbGUgX19nbG9iYWwgaW50ICpwKTsKdW5zaWduZWQgaW50IF9fb3ZsZCBhdG9tX2luYyh2b2xhdGlsZSBfX2dsb2JhbCB1bnNpZ25lZCBpbnQgKnApOwojZW5kaWYKI2lmIGRlZmluZWQoY2xfa2hyX2xvY2FsX2ludDMyX2Jhc2VfYXRvbWljcykKaW50IF9fb3ZsZCBhdG9tX2luYyh2b2xhdGlsZSBfX2xvY2FsIGludCAqcCk7CnVuc2lnbmVkIGludCBfX292bGQgYXRvbV9pbmModm9sYXRpbGUgX19sb2NhbCB1bnNpZ25lZCBpbnQgKnApOwojZW5kaWYKCiNpZiBkZWZpbmVkKGNsX2tocl9pbnQ2NF9iYXNlX2F0b21pY3MpCmxvbmcgX19vdmxkIGF0b21faW5jKHZvbGF0aWxlIF9fZ2xvYmFsIGxvbmcgKnApOwp1bnNpZ25lZCBsb25nIF9fb3ZsZCBhdG9tX2luYyh2b2xhdGlsZSBfX2dsb2JhbCB1bnNpZ25lZCBsb25nICpwKTsKbG9uZyBfX292bGQgYXRvbV9pbmModm9sYXRpbGUgX19sb2NhbCBsb25nICpwKTsKdW5zaWduZWQgbG9uZyBfX292bGQgYXRvbV9pbmModm9sYXRpbGUgX19sb2NhbCB1bnNpZ25lZCBsb25nICpwKTsKI2VuZGlmCgovKioKICogUmVhZCB0aGUgMzItYml0IHZhbHVlIChyZWZlcnJlZCB0byBhcyBvbGQpCiAqIHN0b3JlZCBhdCBsb2NhdGlvbiBwb2ludGVkIGJ5IHAuIENvbXB1dGUKICogKG9sZCAtIDEpIGFuZCBzdG9yZSByZXN1bHQgYXQgbG9jYXRpb24KICogcG9pbnRlZCBieSBwLiBUaGUgZnVuY3Rpb24gcmV0dXJucyBvbGQuCiAqLwppbnQgX19vdmxkIGF0b21pY19kZWModm9sYXRpbGUgX19nbG9iYWwgaW50ICpwKTsKdW5zaWduZWQgaW50IF9fb3ZsZCBhdG9taWNfZGVjKHZvbGF0aWxlIF9fZ2xvYmFsIHVuc2lnbmVkIGludCAqcCk7CmludCBfX292bGQgYXRvbWljX2RlYyh2b2xhdGlsZSBfX2xvY2FsIGludCAqcCk7CnVuc2lnbmVkIGludCBfX292bGQgYXRvbWljX2RlYyh2b2xhdGlsZSBfX2xvY2FsIHVuc2lnbmVkIGludCAqcCk7CiNpZmRlZiBfX09QRU5DTF9DUFBfVkVSU0lPTl9fCmludCBfX292bGQgYXRvbWljX2RlYyh2b2xhdGlsZSBpbnQgKnApOwp1bnNpZ25lZCBpbnQgX19vdmxkIGF0b21pY19kZWModm9sYXRpbGUgdW5zaWduZWQgaW50ICpwKTsKI2VuZGlmCgojaWYgZGVmaW5lZChjbF9raHJfZ2xvYmFsX2ludDMyX2Jhc2VfYXRvbWljcykKaW50IF9fb3ZsZCBhdG9tX2RlYyh2b2xhdGlsZSBfX2dsb2JhbCBpbnQgKnApOwp1bnNpZ25lZCBpbnQgX19vdmxkIGF0b21fZGVjKHZvbGF0aWxlIF9fZ2xvYmFsIHVuc2lnbmVkIGludCAqcCk7CiNlbmRpZgojaWYgZGVmaW5lZChjbF9raHJfbG9jYWxfaW50MzJfYmFzZV9hdG9taWNzKQppbnQgX19vdmxkIGF0b21fZGVjKHZvbGF0aWxlIF9fbG9jYWwgaW50ICpwKTsKdW5zaWduZWQgaW50IF9fb3ZsZCBhdG9tX2RlYyh2b2xhdGlsZSBfX2xvY2FsIHVuc2lnbmVkIGludCAqcCk7CiNlbmRpZgoKI2lmIGRlZmluZWQoY2xfa2hyX2ludDY0X2Jhc2VfYXRvbWljcykKbG9uZyBfX292bGQgYXRvbV9kZWModm9sYXRpbGUgX19nbG9iYWwgbG9uZyAqcCk7CnVuc2lnbmVkIGxvbmcgX19vdmxkIGF0b21fZGVjKHZvbGF0aWxlIF9fZ2xvYmFsIHVuc2lnbmVkIGxvbmcgKnApOwpsb25nIF9fb3ZsZCBhdG9tX2RlYyh2b2xhdGlsZSBfX2xvY2FsIGxvbmcgKnApOwp1bnNpZ25lZCBsb25nIF9fb3ZsZCBhdG9tX2RlYyh2b2xhdGlsZSBfX2xvY2FsIHVuc2lnbmVkIGxvbmcgKnApOwojZW5kaWYKCi8qKgogKiBSZWFkIHRoZSAzMi1iaXQgdmFsdWUgKHJlZmVycmVkIHRvIGFzIG9sZCkKICogc3RvcmVkIGF0IGxvY2F0aW9uIHBvaW50ZWQgYnkgcC4gQ29tcHV0ZQogKiAob2xkID09IGNtcCkgPyB2YWwgOiBvbGQgYW5kIHN0b3JlIHJlc3VsdCBhdAogKiBsb2NhdGlvbiBwb2ludGVkIGJ5IHAuIFRoZSBmdW5jdGlvbgogKiByZXR1cm5zIG9sZC4KICovCmludCBfX292bGQgYXRvbWljX2NtcHhjaGcodm9sYXRpbGUgX19nbG9iYWwgaW50ICpwLCBpbnQgY21wLCBpbnQgdmFsKTsKdW5zaWduZWQgaW50IF9fb3ZsZCBhdG9taWNfY21weGNoZyh2b2xhdGlsZSBfX2dsb2JhbCB1bnNpZ25lZCBpbnQgKnAsIHVuc2lnbmVkIGludCBjbXAsIHVuc2lnbmVkIGludCB2YWwpOwppbnQgX19vdmxkIGF0b21pY19jbXB4Y2hnKHZvbGF0aWxlIF9fbG9jYWwgaW50ICpwLCBpbnQgY21wLCBpbnQgdmFsKTsKdW5zaWduZWQgaW50IF9fb3ZsZCBhdG9taWNfY21weGNoZyh2b2xhdGlsZSBfX2xvY2FsIHVuc2lnbmVkIGludCAqcCwgdW5zaWduZWQgaW50IGNtcCwgdW5zaWduZWQgaW50IHZhbCk7CiNpZmRlZiBfX09QRU5DTF9DUFBfVkVSU0lPTl9fCmludCBfX292bGQgYXRvbWljX2NtcHhjaGcodm9sYXRpbGUgaW50ICpwLCBpbnQgY21wLCBpbnQgdmFsKTsKdW5zaWduZWQgaW50IF9fb3ZsZCBhdG9taWNfY21weGNoZyh2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKnAsIHVuc2lnbmVkIGludCBjbXAsIHVuc2lnbmVkIGludCB2YWwpOwojZW5kaWYKCiNpZiBkZWZpbmVkKGNsX2tocl9nbG9iYWxfaW50MzJfYmFzZV9hdG9taWNzKQppbnQgX19vdmxkIGF0b21fY21weGNoZyh2b2xhdGlsZSBfX2dsb2JhbCBpbnQgKnAsIGludCBjbXAsIGludCB2YWwpOwp1bnNpZ25lZCBpbnQgX19vdmxkIGF0b21fY21weGNoZyh2b2xhdGlsZSBfX2dsb2JhbCB1bnNpZ25lZCBpbnQgKnAsIHVuc2lnbmVkIGludCBjbXAsIHVuc2lnbmVkIGludCB2YWwpOwojZW5kaWYKI2lmIGRlZmluZWQoY2xfa2hyX2xvY2FsX2ludDMyX2Jhc2VfYXRvbWljcykKaW50IF9fb3ZsZCBhdG9tX2NtcHhjaGcodm9sYXRpbGUgX19sb2NhbCBpbnQgKnAsIGludCBjbXAsIGludCB2YWwpOwp1bnNpZ25lZCBpbnQgX19vdmxkIGF0b21fY21weGNoZyh2b2xhdGlsZSBfX2xvY2FsIHVuc2lnbmVkIGludCAqcCwgdW5zaWduZWQgaW50IGNtcCwgdW5zaWduZWQgaW50IHZhbCk7CiNlbmRpZgoKI2lmIGRlZmluZWQoY2xfa2hyX2ludDY0X2Jhc2VfYXRvbWljcykKbG9uZyBfX292bGQgYXRvbV9jbXB4Y2hnKHZvbGF0aWxlIF9fZ2xvYmFsIGxvbmcgKnAsIGxvbmcgY21wLCBsb25nIHZhbCk7CnVuc2lnbmVkIGxvbmcgX19vdmxkIGF0b21fY21weGNoZyh2b2xhdGlsZSBfX2dsb2JhbCB1bnNpZ25lZCBsb25nICpwLCB1bnNpZ25lZCBsb25nIGNtcCwgdW5zaWduZWQgbG9uZyB2YWwpOwpsb25nIF9fb3ZsZCBhdG9tX2NtcHhjaGcodm9sYXRpbGUgX19sb2NhbCBsb25nICpwLCBsb25nIGNtcCwgbG9uZyB2YWwpOwp1bnNpZ25lZCBsb25nIF9fb3ZsZCBhdG9tX2NtcHhjaGcodm9sYXRpbGUgX19sb2NhbCB1bnNpZ25lZCBsb25nICpwLCB1bnNpZ25lZCBsb25nIGNtcCwgdW5zaWduZWQgbG9uZyB2YWwpOwojZW5kaWYKCi8qKgogKiBSZWFkIHRoZSAzMi1iaXQgdmFsdWUgKHJlZmVycmVkIHRvIGFzIG9sZCkKICogc3RvcmVkIGF0IGxvY2F0aW9uIHBvaW50ZWQgYnkgcC4gQ29tcHV0ZQogKiBtaW4ob2xkLCB2YWwpIGFuZCBzdG9yZSBtaW5pbXVtIHZhbHVlIGF0CiAqIGxvY2F0aW9uIHBvaW50ZWQgYnkgcC4gVGhlIGZ1bmN0aW9uCiAqIHJldHVybnMgb2xkLgogKi8KaW50IF9fb3ZsZCBhdG9taWNfbWluKHZvbGF0aWxlIF9fZ2xvYmFsIGludCAqcCwgaW50IHZhbCk7CnVuc2lnbmVkIGludCBfX292bGQgYXRvbWljX21pbih2b2xhdGlsZSBfX2dsb2JhbCB1bnNpZ25lZCBpbnQgKnAsIHVuc2lnbmVkIGludCB2YWwpOwppbnQgX19vdmxkIGF0b21pY19taW4odm9sYXRpbGUgX19sb2NhbCBpbnQgKnAsIGludCB2YWwpOwp1bnNpZ25lZCBpbnQgX19vdmxkIGF0b21pY19taW4odm9sYXRpbGUgX19sb2NhbCB1bnNpZ25lZCBpbnQgKnAsIHVuc2lnbmVkIGludCB2YWwpOwojaWZkZWYgX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXwppbnQgX19vdmxkIGF0b21pY19taW4odm9sYXRpbGUgaW50ICpwLCBpbnQgdmFsKTsKdW5zaWduZWQgaW50IF9fb3ZsZCBhdG9taWNfbWluKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqcCwgdW5zaWduZWQgaW50IHZhbCk7CiNlbmRpZgoKI2lmIGRlZmluZWQoY2xfa2hyX2dsb2JhbF9pbnQzMl9leHRlbmRlZF9hdG9taWNzKQppbnQgX19vdmxkIGF0b21fbWluKHZvbGF0aWxlIF9fZ2xvYmFsIGludCAqcCwgaW50IHZhbCk7CnVuc2lnbmVkIGludCBfX292bGQgYXRvbV9taW4odm9sYXRpbGUgX19nbG9iYWwgdW5zaWduZWQgaW50ICpwLCB1bnNpZ25lZCBpbnQgdmFsKTsKI2VuZGlmCiNpZiBkZWZpbmVkKGNsX2tocl9sb2NhbF9pbnQzMl9leHRlbmRlZF9hdG9taWNzKQppbnQgX19vdmxkIGF0b21fbWluKHZvbGF0aWxlIF9fbG9jYWwgaW50ICpwLCBpbnQgdmFsKTsKdW5zaWduZWQgaW50IF9fb3ZsZCBhdG9tX21pbih2b2xhdGlsZSBfX2xvY2FsIHVuc2lnbmVkIGludCAqcCwgdW5zaWduZWQgaW50IHZhbCk7CiNlbmRpZgoKI2lmIGRlZmluZWQoY2xfa2hyX2ludDY0X2V4dGVuZGVkX2F0b21pY3MpCmxvbmcgX19vdmxkIGF0b21fbWluKHZvbGF0aWxlIF9fZ2xvYmFsIGxvbmcgKnAsIGxvbmcgdmFsKTsKdW5zaWduZWQgbG9uZyBfX292bGQgYXRvbV9taW4odm9sYXRpbGUgX19nbG9iYWwgdW5zaWduZWQgbG9uZyAqcCwgdW5zaWduZWQgbG9uZyB2YWwpOwpsb25nIF9fb3ZsZCBhdG9tX21pbih2b2xhdGlsZSBfX2xvY2FsIGxvbmcgKnAsIGxvbmcgdmFsKTsKdW5zaWduZWQgbG9uZyBfX292bGQgYXRvbV9taW4odm9sYXRpbGUgX19sb2NhbCB1bnNpZ25lZCBsb25nICpwLCB1bnNpZ25lZCBsb25nIHZhbCk7CiNlbmRpZgoKLyoqCiAqIFJlYWQgdGhlIDMyLWJpdCB2YWx1ZSAocmVmZXJyZWQgdG8gYXMgb2xkKQogKiBzdG9yZWQgYXQgbG9jYXRpb24gcG9pbnRlZCBieSBwLiBDb21wdXRlCiAqIG1heChvbGQsIHZhbCkgYW5kIHN0b3JlIG1heGltdW0gdmFsdWUgYXQKICogbG9jYXRpb24gcG9pbnRlZCBieSBwLiBUaGUgZnVuY3Rpb24KICogcmV0dXJucyBvbGQuCiAqLwppbnQgX19vdmxkIGF0b21pY19tYXgodm9sYXRpbGUgX19nbG9iYWwgaW50ICpwLCBpbnQgdmFsKTsKdW5zaWduZWQgaW50IF9fb3ZsZCBhdG9taWNfbWF4KHZvbGF0aWxlIF9fZ2xvYmFsIHVuc2lnbmVkIGludCAqcCwgdW5zaWduZWQgaW50IHZhbCk7CmludCBfX292bGQgYXRvbWljX21heCh2b2xhdGlsZSBfX2xvY2FsIGludCAqcCwgaW50IHZhbCk7CnVuc2lnbmVkIGludCBfX292bGQgYXRvbWljX21heCh2b2xhdGlsZSBfX2xvY2FsIHVuc2lnbmVkIGludCAqcCwgdW5zaWduZWQgaW50IHZhbCk7CiNpZmRlZiBfX09QRU5DTF9DUFBfVkVSU0lPTl9fCmludCBfX292bGQgYXRvbWljX21heCh2b2xhdGlsZSBpbnQgKnAsIGludCB2YWwpOwp1bnNpZ25lZCBpbnQgX19vdmxkIGF0b21pY19tYXgodm9sYXRpbGUgdW5zaWduZWQgaW50ICpwLCB1bnNpZ25lZCBpbnQgdmFsKTsKI2VuZGlmCgojaWYgZGVmaW5lZChjbF9raHJfZ2xvYmFsX2ludDMyX2V4dGVuZGVkX2F0b21pY3MpCmludCBfX292bGQgYXRvbV9tYXgodm9sYXRpbGUgX19nbG9iYWwgaW50ICpwLCBpbnQgdmFsKTsKdW5zaWduZWQgaW50IF9fb3ZsZCBhdG9tX21heCh2b2xhdGlsZSBfX2dsb2JhbCB1bnNpZ25lZCBpbnQgKnAsIHVuc2lnbmVkIGludCB2YWwpOwojZW5kaWYKI2lmIGRlZmluZWQoY2xfa2hyX2xvY2FsX2ludDMyX2V4dGVuZGVkX2F0b21pY3MpCmludCBfX292bGQgYXRvbV9tYXgodm9sYXRpbGUgX19sb2NhbCBpbnQgKnAsIGludCB2YWwpOwp1bnNpZ25lZCBpbnQgX19vdmxkIGF0b21fbWF4KHZvbGF0aWxlIF9fbG9jYWwgdW5zaWduZWQgaW50ICpwLCB1bnNpZ25lZCBpbnQgdmFsKTsKI2VuZGlmCgojaWYgZGVmaW5lZChjbF9raHJfaW50NjRfZXh0ZW5kZWRfYXRvbWljcykKbG9uZyBfX292bGQgYXRvbV9tYXgodm9sYXRpbGUgX19nbG9iYWwgbG9uZyAqcCwgbG9uZyB2YWwpOwp1bnNpZ25lZCBsb25nIF9fb3ZsZCBhdG9tX21heCh2b2xhdGlsZSBfX2dsb2JhbCB1bnNpZ25lZCBsb25nICpwLCB1bnNpZ25lZCBsb25nIHZhbCk7CmxvbmcgX19vdmxkIGF0b21fbWF4KHZvbGF0aWxlIF9fbG9jYWwgbG9uZyAqcCwgbG9uZyB2YWwpOwp1bnNpZ25lZCBsb25nIF9fb3ZsZCBhdG9tX21heCh2b2xhdGlsZSBfX2xvY2FsIHVuc2lnbmVkIGxvbmcgKnAsIHVuc2lnbmVkIGxvbmcgdmFsKTsKI2VuZGlmCgovKioKICogUmVhZCB0aGUgMzItYml0IHZhbHVlIChyZWZlcnJlZCB0byBhcyBvbGQpCiAqIHN0b3JlZCBhdCBsb2NhdGlvbiBwb2ludGVkIGJ5IHAuIENvbXB1dGUKICogKG9sZCAmIHZhbCkgYW5kIHN0b3JlIHJlc3VsdCBhdCBsb2NhdGlvbgogKiBwb2ludGVkIGJ5IHAuIFRoZSBmdW5jdGlvbiByZXR1cm5zIG9sZC4KICovCmludCBfX292bGQgYXRvbWljX2FuZCh2b2xhdGlsZSBfX2dsb2JhbCBpbnQgKnAsIGludCB2YWwpOwp1bnNpZ25lZCBpbnQgX19vdmxkIGF0b21pY19hbmQodm9sYXRpbGUgX19nbG9iYWwgdW5zaWduZWQgaW50ICpwLCB1bnNpZ25lZCBpbnQgdmFsKTsKaW50IF9fb3ZsZCBhdG9taWNfYW5kKHZvbGF0aWxlIF9fbG9jYWwgaW50ICpwLCBpbnQgdmFsKTsKdW5zaWduZWQgaW50IF9fb3ZsZCBhdG9taWNfYW5kKHZvbGF0aWxlIF9fbG9jYWwgdW5zaWduZWQgaW50ICpwLCB1bnNpZ25lZCBpbnQgdmFsKTsKI2lmZGVmIF9fT1BFTkNMX0NQUF9WRVJTSU9OX18KaW50IF9fb3ZsZCBhdG9taWNfYW5kKHZvbGF0aWxlIGludCAqcCwgaW50IHZhbCk7CnVuc2lnbmVkIGludCBfX292bGQgYXRvbWljX2FuZCh2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKnAsIHVuc2lnbmVkIGludCB2YWwpOwojZW5kaWYKCiNpZiBkZWZpbmVkKGNsX2tocl9nbG9iYWxfaW50MzJfZXh0ZW5kZWRfYXRvbWljcykKaW50IF9fb3ZsZCBhdG9tX2FuZCh2b2xhdGlsZSBfX2dsb2JhbCBpbnQgKnAsIGludCB2YWwpOwp1bnNpZ25lZCBpbnQgX19vdmxkIGF0b21fYW5kKHZvbGF0aWxlIF9fZ2xvYmFsIHVuc2lnbmVkIGludCAqcCwgdW5zaWduZWQgaW50IHZhbCk7CiNlbmRpZgojaWYgZGVmaW5lZChjbF9raHJfbG9jYWxfaW50MzJfZXh0ZW5kZWRfYXRvbWljcykKaW50IF9fb3ZsZCBhdG9tX2FuZCh2b2xhdGlsZSBfX2xvY2FsIGludCAqcCwgaW50IHZhbCk7CnVuc2lnbmVkIGludCBfX292bGQgYXRvbV9hbmQodm9sYXRpbGUgX19sb2NhbCB1bnNpZ25lZCBpbnQgKnAsIHVuc2lnbmVkIGludCB2YWwpOwojZW5kaWYKCiNpZiBkZWZpbmVkKGNsX2tocl9pbnQ2NF9leHRlbmRlZF9hdG9taWNzKQpsb25nIF9fb3ZsZCBhdG9tX2FuZCh2b2xhdGlsZSBfX2dsb2JhbCBsb25nICpwLCBsb25nIHZhbCk7CnVuc2lnbmVkIGxvbmcgX19vdmxkIGF0b21fYW5kKHZvbGF0aWxlIF9fZ2xvYmFsIHVuc2lnbmVkIGxvbmcgKnAsIHVuc2lnbmVkIGxvbmcgdmFsKTsKbG9uZyBfX292bGQgYXRvbV9hbmQodm9sYXRpbGUgX19sb2NhbCBsb25nICpwLCBsb25nIHZhbCk7CnVuc2lnbmVkIGxvbmcgX19vdmxkIGF0b21fYW5kKHZvbGF0aWxlIF9fbG9jYWwgdW5zaWduZWQgbG9uZyAqcCwgdW5zaWduZWQgbG9uZyB2YWwpOwojZW5kaWYKCi8qKgogKiBSZWFkIHRoZSAzMi1iaXQgdmFsdWUgKHJlZmVycmVkIHRvIGFzIG9sZCkKICogc3RvcmVkIGF0IGxvY2F0aW9uIHBvaW50ZWQgYnkgcC4gQ29tcHV0ZQogKiAob2xkIHwgdmFsKSBhbmQgc3RvcmUgcmVzdWx0IGF0IGxvY2F0aW9uCiAqIHBvaW50ZWQgYnkgcC4gVGhlIGZ1bmN0aW9uIHJldHVybnMgb2xkLgogKi8KaW50IF9fb3ZsZCBhdG9taWNfb3Iodm9sYXRpbGUgX19nbG9iYWwgaW50ICpwLCBpbnQgdmFsKTsKdW5zaWduZWQgaW50IF9fb3ZsZCBhdG9taWNfb3Iodm9sYXRpbGUgX19nbG9iYWwgdW5zaWduZWQgaW50ICpwLCB1bnNpZ25lZCBpbnQgdmFsKTsKaW50IF9fb3ZsZCBhdG9taWNfb3Iodm9sYXRpbGUgX19sb2NhbCBpbnQgKnAsIGludCB2YWwpOwp1bnNpZ25lZCBpbnQgX19vdmxkIGF0b21pY19vcih2b2xhdGlsZSBfX2xvY2FsIHVuc2lnbmVkIGludCAqcCwgdW5zaWduZWQgaW50IHZhbCk7CiNpZmRlZiBfX09QRU5DTF9DUFBfVkVSU0lPTl9fCmludCBfX292bGQgYXRvbWljX29yKHZvbGF0aWxlIGludCAqcCwgaW50IHZhbCk7CnVuc2lnbmVkIGludCBfX292bGQgYXRvbWljX29yKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqcCwgdW5zaWduZWQgaW50IHZhbCk7CiNlbmRpZgoKI2lmIGRlZmluZWQoY2xfa2hyX2dsb2JhbF9pbnQzMl9leHRlbmRlZF9hdG9taWNzKQppbnQgX19vdmxkIGF0b21fb3Iodm9sYXRpbGUgX19nbG9iYWwgaW50ICpwLCBpbnQgdmFsKTsKdW5zaWduZWQgaW50IF9fb3ZsZCBhdG9tX29yKHZvbGF0aWxlIF9fZ2xvYmFsIHVuc2lnbmVkIGludCAqcCwgdW5zaWduZWQgaW50IHZhbCk7CiNlbmRpZgojaWYgZGVmaW5lZChjbF9raHJfbG9jYWxfaW50MzJfZXh0ZW5kZWRfYXRvbWljcykKaW50IF9fb3ZsZCBhdG9tX29yKHZvbGF0aWxlIF9fbG9jYWwgaW50ICpwLCBpbnQgdmFsKTsKdW5zaWduZWQgaW50IF9fb3ZsZCBhdG9tX29yKHZvbGF0aWxlIF9fbG9jYWwgdW5zaWduZWQgaW50ICpwLCB1bnNpZ25lZCBpbnQgdmFsKTsKI2VuZGlmCgojaWYgZGVmaW5lZChjbF9raHJfaW50NjRfZXh0ZW5kZWRfYXRvbWljcykKbG9uZyBfX292bGQgYXRvbV9vcih2b2xhdGlsZSBfX2dsb2JhbCBsb25nICpwLCBsb25nIHZhbCk7CnVuc2lnbmVkIGxvbmcgX19vdmxkIGF0b21fb3Iodm9sYXRpbGUgX19nbG9iYWwgdW5zaWduZWQgbG9uZyAqcCwgdW5zaWduZWQgbG9uZyB2YWwpOwpsb25nIF9fb3ZsZCBhdG9tX29yKHZvbGF0aWxlIF9fbG9jYWwgbG9uZyAqcCwgbG9uZyB2YWwpOwp1bnNpZ25lZCBsb25nIF9fb3ZsZCBhdG9tX29yKHZvbGF0aWxlIF9fbG9jYWwgdW5zaWduZWQgbG9uZyAqcCwgdW5zaWduZWQgbG9uZyB2YWwpOwojZW5kaWYKCi8qKgogKiBSZWFkIHRoZSAzMi1iaXQgdmFsdWUgKHJlZmVycmVkIHRvIGFzIG9sZCkKICogc3RvcmVkIGF0IGxvY2F0aW9uIHBvaW50ZWQgYnkgcC4gQ29tcHV0ZQogKiAob2xkIF4gdmFsKSBhbmQgc3RvcmUgcmVzdWx0IGF0IGxvY2F0aW9uCiAqIHBvaW50ZWQgYnkgcC4gVGhlIGZ1bmN0aW9uIHJldHVybnMgb2xkLgogKi8KaW50IF9fb3ZsZCBhdG9taWNfeG9yKHZvbGF0aWxlIF9fZ2xvYmFsIGludCAqcCwgaW50IHZhbCk7CnVuc2lnbmVkIGludCBfX292bGQgYXRvbWljX3hvcih2b2xhdGlsZSBfX2dsb2JhbCB1bnNpZ25lZCBpbnQgKnAsIHVuc2lnbmVkIGludCB2YWwpOwppbnQgX19vdmxkIGF0b21pY194b3Iodm9sYXRpbGUgX19sb2NhbCBpbnQgKnAsIGludCB2YWwpOwp1bnNpZ25lZCBpbnQgX19vdmxkIGF0b21pY194b3Iodm9sYXRpbGUgX19sb2NhbCB1bnNpZ25lZCBpbnQgKnAsIHVuc2lnbmVkIGludCB2YWwpOwojaWZkZWYgX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXwppbnQgX19vdmxkIGF0b21pY194b3Iodm9sYXRpbGUgaW50ICpwLCBpbnQgdmFsKTsKdW5zaWduZWQgaW50IF9fb3ZsZCBhdG9taWNfeG9yKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqcCwgdW5zaWduZWQgaW50IHZhbCk7CiNlbmRpZgoKI2lmIGRlZmluZWQoY2xfa2hyX2dsb2JhbF9pbnQzMl9leHRlbmRlZF9hdG9taWNzKQppbnQgX19vdmxkIGF0b21feG9yKHZvbGF0aWxlIF9fZ2xvYmFsIGludCAqcCwgaW50IHZhbCk7CnVuc2lnbmVkIGludCBfX292bGQgYXRvbV94b3Iodm9sYXRpbGUgX19nbG9iYWwgdW5zaWduZWQgaW50ICpwLCB1bnNpZ25lZCBpbnQgdmFsKTsKI2VuZGlmCiNpZiBkZWZpbmVkKGNsX2tocl9sb2NhbF9pbnQzMl9leHRlbmRlZF9hdG9taWNzKQppbnQgX19vdmxkIGF0b21feG9yKHZvbGF0aWxlIF9fbG9jYWwgaW50ICpwLCBpbnQgdmFsKTsKdW5zaWduZWQgaW50IF9fb3ZsZCBhdG9tX3hvcih2b2xhdGlsZSBfX2xvY2FsIHVuc2lnbmVkIGludCAqcCwgdW5zaWduZWQgaW50IHZhbCk7CiNlbmRpZgoKI2lmIGRlZmluZWQoY2xfa2hyX2ludDY0X2V4dGVuZGVkX2F0b21pY3MpCmxvbmcgX19vdmxkIGF0b21feG9yKHZvbGF0aWxlIF9fZ2xvYmFsIGxvbmcgKnAsIGxvbmcgdmFsKTsKdW5zaWduZWQgbG9uZyBfX292bGQgYXRvbV94b3Iodm9sYXRpbGUgX19nbG9iYWwgdW5zaWduZWQgbG9uZyAqcCwgdW5zaWduZWQgbG9uZyB2YWwpOwpsb25nIF9fb3ZsZCBhdG9tX3hvcih2b2xhdGlsZSBfX2xvY2FsIGxvbmcgKnAsIGxvbmcgdmFsKTsKdW5zaWduZWQgbG9uZyBfX292bGQgYXRvbV94b3Iodm9sYXRpbGUgX19sb2NhbCB1bnNpZ25lZCBsb25nICpwLCB1bnNpZ25lZCBsb25nIHZhbCk7CiNlbmRpZgoKI2lmIGRlZmluZWQoY2xfa2hyX2ludDY0X2Jhc2VfYXRvbWljcykgJiYgZGVmaW5lZChjbF9raHJfaW50NjRfZXh0ZW5kZWRfYXRvbWljcykKI3ByYWdtYSBPUEVOQ0wgRVhURU5TSU9OIGNsX2tocl9pbnQ2NF9iYXNlX2F0b21pY3MgOiBkaXNhYmxlCiNwcmFnbWEgT1BFTkNMIEVYVEVOU0lPTiBjbF9raHJfaW50NjRfZXh0ZW5kZWRfYXRvbWljcyA6IGRpc2FibGUKI2VuZGlmCgovLyBPcGVuQ0wgdjIuMCBzNi4xMy4xMSAtIEF0b21pY3MgRnVuY3Rpb25zCgojaWYgZGVmaW5lZChfX09QRU5DTF9DUFBfVkVSU0lPTl9fKSB8fCAoX19PUEVOQ0xfQ19WRVJTSU9OX18gPj0gQ0xfVkVSU0lPTl8yXzApCgovLyBkb3VibGUgYXRvbWljcyBzdXBwb3J0IHJlcXVpcmVzIGV4dGVuc2lvbnMgY2xfa2hyX2ludDY0X2Jhc2VfYXRvbWljcyBhbmQgY2xfa2hyX2ludDY0X2V4dGVuZGVkX2F0b21pY3MKI2lmIGRlZmluZWQoY2xfa2hyX2ludDY0X2Jhc2VfYXRvbWljcykgJiYgZGVmaW5lZChjbF9raHJfaW50NjRfZXh0ZW5kZWRfYXRvbWljcykKI3ByYWdtYSBPUEVOQ0wgRVhURU5TSU9OIGNsX2tocl9pbnQ2NF9iYXNlX2F0b21pY3MgOiBlbmFibGUKI3ByYWdtYSBPUEVOQ0wgRVhURU5TSU9OIGNsX2tocl9pbnQ2NF9leHRlbmRlZF9hdG9taWNzIDogZW5hYmxlCiNlbmRpZgoKLy8gYXRvbWljX2luaXQoKQojaWYgZGVmaW5lZChfX29wZW5jbF9jX2dlbmVyaWNfYWRkcmVzc19zcGFjZSkKdm9pZCBfX292bGQgYXRvbWljX2luaXQodm9sYXRpbGUgYXRvbWljX2ludCAqb2JqZWN0LCBpbnQgdmFsdWUpOwp2b2lkIF9fb3ZsZCBhdG9taWNfaW5pdCh2b2xhdGlsZSBhdG9taWNfdWludCAqb2JqZWN0LCB1aW50IHZhbHVlKTsKdm9pZCBfX292bGQgYXRvbWljX2luaXQodm9sYXRpbGUgYXRvbWljX2Zsb2F0ICpvYmplY3QsIGZsb2F0IHZhbHVlKTsKI2lmIGRlZmluZWQoY2xfa2hyX2ludDY0X2Jhc2VfYXRvbWljcykgJiYgZGVmaW5lZChjbF9raHJfaW50NjRfZXh0ZW5kZWRfYXRvbWljcykKdm9pZCBfX292bGQgYXRvbWljX2luaXQodm9sYXRpbGUgYXRvbWljX2xvbmcgKm9iamVjdCwgbG9uZyB2YWx1ZSk7CnZvaWQgX19vdmxkIGF0b21pY19pbml0KHZvbGF0aWxlIGF0b21pY191bG9uZyAqb2JqZWN0LCB1bG9uZyB2YWx1ZSk7CiNpZmRlZiBjbF9raHJfZnA2NAp2b2lkIF9fb3ZsZCBhdG9taWNfaW5pdCh2b2xhdGlsZSBhdG9taWNfZG91YmxlICpvYmplY3QsIGRvdWJsZSB2YWx1ZSk7CiNlbmRpZiAvL2NsX2tocl9mcDY0CiNlbmRpZgojZW5kaWYgLy9kZWZpbmVkKF9fb3BlbmNsX2NfZ2VuZXJpY19hZGRyZXNzX3NwYWNlKQojaWYgKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fM18wIHx8IF9fT1BFTkNMX0NQUF9WRVJTSU9OX18gPj0gMjAyMTAwKQp2b2lkIF9fb3ZsZCBhdG9taWNfaW5pdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfaW50ICpvYmplY3QsIGludCB2YWx1ZSk7CnZvaWQgX19vdmxkIGF0b21pY19pbml0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2ludCAqb2JqZWN0LCBpbnQgdmFsdWUpOwp2b2lkIF9fb3ZsZCBhdG9taWNfaW5pdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfdWludCAqb2JqZWN0LCB1aW50IHZhbHVlKTsKdm9pZCBfX292bGQgYXRvbWljX2luaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfdWludCAqb2JqZWN0LCB1aW50IHZhbHVlKTsKdm9pZCBfX292bGQgYXRvbWljX2luaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2Zsb2F0ICpvYmplY3QsIGZsb2F0IHZhbHVlKTsKdm9pZCBfX292bGQgYXRvbWljX2luaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfZmxvYXQgKm9iamVjdCwgZmxvYXQgdmFsdWUpOwojaWYgZGVmaW5lZChjbF9raHJfaW50NjRfYmFzZV9hdG9taWNzKSAmJiBkZWZpbmVkKGNsX2tocl9pbnQ2NF9leHRlbmRlZF9hdG9taWNzKQp2b2lkIF9fb3ZsZCBhdG9taWNfaW5pdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfbG9uZyAqb2JqZWN0LCBsb25nIHZhbHVlKTsKdm9pZCBfX292bGQgYXRvbWljX2luaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfbG9uZyAqb2JqZWN0LCBsb25nIHZhbHVlKTsKdm9pZCBfX292bGQgYXRvbWljX2luaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX3Vsb25nICpvYmplY3QsIHVsb25nIHZhbHVlKTsKdm9pZCBfX292bGQgYXRvbWljX2luaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfdWxvbmcgKm9iamVjdCwgdWxvbmcgdmFsdWUpOwojaWZkZWYgY2xfa2hyX2ZwNjQKdm9pZCBfX292bGQgYXRvbWljX2luaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2RvdWJsZSAqb2JqZWN0LCBkb3VibGUgdmFsdWUpOwp2b2lkIF9fb3ZsZCBhdG9taWNfaW5pdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19kb3VibGUgKm9iamVjdCwgZG91YmxlIHZhbHVlKTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKI2VuZGlmCiNlbmRpZiAvLyAoX19PUEVOQ0xfQ19WRVJTSU9OX18gPj0gQ0xfVkVSU0lPTl8zXzAgfHwgX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXyA+PSAyMDIxMDApCgovLyBhdG9taWNfd29ya19pdGVtX2ZlbmNlKCkKdm9pZCBfX292bGQgYXRvbWljX3dvcmtfaXRlbV9mZW5jZShjbF9tZW1fZmVuY2VfZmxhZ3MgZmxhZ3MsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKCi8vIGF0b21pY19mZXRjaCgpCi8vIE9wZW5DTCB2Mi4wIHM2LjEzLjExLjcuNToKLy8gYWRkL3N1YjogYXRvbWljIHR5cGUgYXJndW1lbnQgY2FuIGJlIHVpbnRwdHJfdC9pbnRwdHJfdCwgdmFsdWUgdHlwZSBhcmd1bWVudCBjYW4gYmUgcHRyZGlmZl90LgoKI2lmIGRlZmluZWQoX19vcGVuY2xfY19hdG9taWNfb3JkZXJfc2VxX2NzdCkgJiYgZGVmaW5lZChfX29wZW5jbF9jX2F0b21pY19zY29wZV9kZXZpY2UpCiNpZiBkZWZpbmVkKF9fb3BlbmNsX2NfZ2VuZXJpY19hZGRyZXNzX3NwYWNlKQppbnQgX19vdmxkIGF0b21pY19mZXRjaF9hZGQodm9sYXRpbGUgYXRvbWljX2ludCAqb2JqZWN0LCBpbnQgb3BlcmFuZCk7CnVpbnQgX19vdmxkIGF0b21pY19mZXRjaF9hZGQodm9sYXRpbGUgYXRvbWljX3VpbnQgKm9iamVjdCwgdWludCBvcGVyYW5kKTsKaW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfc3ViKHZvbGF0aWxlIGF0b21pY19pbnQgKm9iamVjdCwgaW50IG9wZXJhbmQpOwp1aW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfc3ViKHZvbGF0aWxlIGF0b21pY191aW50ICpvYmplY3QsIHVpbnQgb3BlcmFuZCk7CmludCBfX292bGQgYXRvbWljX2ZldGNoX29yKHZvbGF0aWxlIGF0b21pY19pbnQgKm9iamVjdCwgaW50IG9wZXJhbmQpOwp1aW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfb3Iodm9sYXRpbGUgYXRvbWljX3VpbnQgKm9iamVjdCwgdWludCBvcGVyYW5kKTsKaW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfeG9yKHZvbGF0aWxlIGF0b21pY19pbnQgKm9iamVjdCwgaW50IG9wZXJhbmQpOwp1aW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfeG9yKHZvbGF0aWxlIGF0b21pY191aW50ICpvYmplY3QsIHVpbnQgb3BlcmFuZCk7CmludCBfX292bGQgYXRvbWljX2ZldGNoX2FuZCh2b2xhdGlsZSBhdG9taWNfaW50ICpvYmplY3QsIGludCBvcGVyYW5kKTsKdWludCBfX292bGQgYXRvbWljX2ZldGNoX2FuZCh2b2xhdGlsZSBhdG9taWNfdWludCAqb2JqZWN0LCB1aW50IG9wZXJhbmQpOwppbnQgX19vdmxkIGF0b21pY19mZXRjaF9taW4odm9sYXRpbGUgYXRvbWljX2ludCAqb2JqZWN0LCBpbnQgb3BlcmFuZCk7CnVpbnQgX19vdmxkIGF0b21pY19mZXRjaF9taW4odm9sYXRpbGUgYXRvbWljX3VpbnQgKm9iamVjdCwgdWludCBvcGVyYW5kKTsKaW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWF4KHZvbGF0aWxlIGF0b21pY19pbnQgKm9iamVjdCwgaW50IG9wZXJhbmQpOwp1aW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWF4KHZvbGF0aWxlIGF0b21pY191aW50ICpvYmplY3QsIHVpbnQgb3BlcmFuZCk7CiNpZiBkZWZpbmVkKGNsX2tocl9pbnQ2NF9iYXNlX2F0b21pY3MpICYmIGRlZmluZWQoY2xfa2hyX2ludDY0X2V4dGVuZGVkX2F0b21pY3MpCmxvbmcgX19vdmxkIGF0b21pY19mZXRjaF9hZGQodm9sYXRpbGUgYXRvbWljX2xvbmcgKm9iamVjdCwgbG9uZyBvcGVyYW5kKTsKdWxvbmcgX19vdmxkIGF0b21pY19mZXRjaF9hZGQodm9sYXRpbGUgYXRvbWljX3Vsb25nICpvYmplY3QsIHVsb25nIG9wZXJhbmQpOwpsb25nIF9fb3ZsZCBhdG9taWNfZmV0Y2hfc3ViKHZvbGF0aWxlIGF0b21pY19sb25nICpvYmplY3QsIGxvbmcgb3BlcmFuZCk7CnVsb25nIF9fb3ZsZCBhdG9taWNfZmV0Y2hfc3ViKHZvbGF0aWxlIGF0b21pY191bG9uZyAqb2JqZWN0LCB1bG9uZyBvcGVyYW5kKTsKbG9uZyBfX292bGQgYXRvbWljX2ZldGNoX29yKHZvbGF0aWxlIGF0b21pY19sb25nICpvYmplY3QsIGxvbmcgb3BlcmFuZCk7CnVsb25nIF9fb3ZsZCBhdG9taWNfZmV0Y2hfb3Iodm9sYXRpbGUgYXRvbWljX3Vsb25nICpvYmplY3QsIHVsb25nIG9wZXJhbmQpOwpsb25nIF9fb3ZsZCBhdG9taWNfZmV0Y2hfeG9yKHZvbGF0aWxlIGF0b21pY19sb25nICpvYmplY3QsIGxvbmcgb3BlcmFuZCk7CnVsb25nIF9fb3ZsZCBhdG9taWNfZmV0Y2hfeG9yKHZvbGF0aWxlIGF0b21pY191bG9uZyAqb2JqZWN0LCB1bG9uZyBvcGVyYW5kKTsKbG9uZyBfX292bGQgYXRvbWljX2ZldGNoX2FuZCh2b2xhdGlsZSBhdG9taWNfbG9uZyAqb2JqZWN0LCBsb25nIG9wZXJhbmQpOwp1bG9uZyBfX292bGQgYXRvbWljX2ZldGNoX2FuZCh2b2xhdGlsZSBhdG9taWNfdWxvbmcgKm9iamVjdCwgdWxvbmcgb3BlcmFuZCk7CmxvbmcgX19vdmxkIGF0b21pY19mZXRjaF9taW4odm9sYXRpbGUgYXRvbWljX2xvbmcgKm9iamVjdCwgbG9uZyBvcGVyYW5kKTsKdWxvbmcgX19vdmxkIGF0b21pY19mZXRjaF9taW4odm9sYXRpbGUgYXRvbWljX3Vsb25nICpvYmplY3QsIHVsb25nIG9wZXJhbmQpOwpsb25nIF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWF4KHZvbGF0aWxlIGF0b21pY19sb25nICpvYmplY3QsIGxvbmcgb3BlcmFuZCk7CnVsb25nIF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWF4KHZvbGF0aWxlIGF0b21pY191bG9uZyAqb2JqZWN0LCB1bG9uZyBvcGVyYW5kKTsKdWludHB0cl90IF9fb3ZsZCBhdG9taWNfZmV0Y2hfYWRkKHZvbGF0aWxlIGF0b21pY191aW50cHRyX3QgKm9iamVjdCwgcHRyZGlmZl90IG9wZXJhbmQpOwp1aW50cHRyX3QgX19vdmxkIGF0b21pY19mZXRjaF9zdWIodm9sYXRpbGUgYXRvbWljX3VpbnRwdHJfdCAqb2JqZWN0LCBwdHJkaWZmX3Qgb3BlcmFuZCk7CiNlbmRpZiAvL2RlZmluZWQoY2xfa2hyX2ludDY0X2Jhc2VfYXRvbWljcykgJiYgZGVmaW5lZChjbF9raHJfaW50NjRfZXh0ZW5kZWRfYXRvbWljcykKI2VuZGlmIC8vZGVmaW5lZChfX29wZW5jbF9jX2dlbmVyaWNfYWRkcmVzc19zcGFjZSkKI2lmIChfX09QRU5DTF9DX1ZFUlNJT05fXyA+PSBDTF9WRVJTSU9OXzNfMCB8fCBfX09QRU5DTF9DUFBfVkVSU0lPTl9fID49IDIwMjEwMCkKaW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfYWRkKHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19pbnQgKm9iamVjdCwgaW50IG9wZXJhbmQpOwppbnQgX19vdmxkIGF0b21pY19mZXRjaF9hZGQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfaW50ICpvYmplY3QsIGludCBvcGVyYW5kKTsKdWludCBfX292bGQgYXRvbWljX2ZldGNoX2FkZCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfdWludCAqb2JqZWN0LCB1aW50IG9wZXJhbmQpOwp1aW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfYWRkKHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX3VpbnQgKm9iamVjdCwgdWludCBvcGVyYW5kKTsKaW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfc3ViKHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19pbnQgKm9iamVjdCwgaW50IG9wZXJhbmQpOwppbnQgX19vdmxkIGF0b21pY19mZXRjaF9zdWIodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfaW50ICpvYmplY3QsIGludCBvcGVyYW5kKTsKdWludCBfX292bGQgYXRvbWljX2ZldGNoX3N1Yih2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfdWludCAqb2JqZWN0LCB1aW50IG9wZXJhbmQpOwp1aW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfc3ViKHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX3VpbnQgKm9iamVjdCwgdWludCBvcGVyYW5kKTsKaW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfb3Iodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2ludCAqb2JqZWN0LCBpbnQgb3BlcmFuZCk7CmludCBfX292bGQgYXRvbWljX2ZldGNoX29yKHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2ludCAqb2JqZWN0LCBpbnQgb3BlcmFuZCk7CnVpbnQgX19vdmxkIGF0b21pY19mZXRjaF9vcih2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfdWludCAqb2JqZWN0LCB1aW50IG9wZXJhbmQpOwp1aW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfb3Iodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfdWludCAqb2JqZWN0LCB1aW50IG9wZXJhbmQpOwppbnQgX19vdmxkIGF0b21pY19mZXRjaF94b3Iodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2ludCAqb2JqZWN0LCBpbnQgb3BlcmFuZCk7CmludCBfX292bGQgYXRvbWljX2ZldGNoX3hvcih2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19pbnQgKm9iamVjdCwgaW50IG9wZXJhbmQpOwp1aW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfeG9yKHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY191aW50ICpvYmplY3QsIHVpbnQgb3BlcmFuZCk7CnVpbnQgX19vdmxkIGF0b21pY19mZXRjaF94b3Iodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfdWludCAqb2JqZWN0LCB1aW50IG9wZXJhbmQpOwppbnQgX19vdmxkIGF0b21pY19mZXRjaF9hbmQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2ludCAqb2JqZWN0LCBpbnQgb3BlcmFuZCk7CmludCBfX292bGQgYXRvbWljX2ZldGNoX2FuZCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19pbnQgKm9iamVjdCwgaW50IG9wZXJhbmQpOwp1aW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfYW5kKHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY191aW50ICpvYmplY3QsIHVpbnQgb3BlcmFuZCk7CnVpbnQgX19vdmxkIGF0b21pY19mZXRjaF9hbmQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfdWludCAqb2JqZWN0LCB1aW50IG9wZXJhbmQpOwppbnQgX19vdmxkIGF0b21pY19mZXRjaF9taW4odm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2ludCAqb2JqZWN0LCBpbnQgb3BlcmFuZCk7CmludCBfX292bGQgYXRvbWljX2ZldGNoX21pbih2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19pbnQgKm9iamVjdCwgaW50IG9wZXJhbmQpOwp1aW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWluKHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY191aW50ICpvYmplY3QsIHVpbnQgb3BlcmFuZCk7CnVpbnQgX19vdmxkIGF0b21pY19mZXRjaF9taW4odm9sYXRpbGUgX19sb2NhbCBhdG9taWNfdWludCAqb2JqZWN0LCB1aW50IG9wZXJhbmQpOwppbnQgX19vdmxkIGF0b21pY19mZXRjaF9tYXgodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2ludCAqb2JqZWN0LCBpbnQgb3BlcmFuZCk7CmludCBfX292bGQgYXRvbWljX2ZldGNoX21heCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19pbnQgKm9iamVjdCwgaW50IG9wZXJhbmQpOwp1aW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWF4KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY191aW50ICpvYmplY3QsIHVpbnQgb3BlcmFuZCk7CnVpbnQgX19vdmxkIGF0b21pY19mZXRjaF9tYXgodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfdWludCAqb2JqZWN0LCB1aW50IG9wZXJhbmQpOwojaWYgZGVmaW5lZChjbF9raHJfaW50NjRfYmFzZV9hdG9taWNzKSAmJiBkZWZpbmVkKGNsX2tocl9pbnQ2NF9leHRlbmRlZF9hdG9taWNzKQpsb25nIF9fb3ZsZCBhdG9taWNfZmV0Y2hfYWRkKHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19sb25nICpvYmplY3QsIGxvbmcgb3BlcmFuZCk7CmxvbmcgX19vdmxkIGF0b21pY19mZXRjaF9hZGQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfbG9uZyAqb2JqZWN0LCBsb25nIG9wZXJhbmQpOwp1bG9uZyBfX292bGQgYXRvbWljX2ZldGNoX2FkZCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfdWxvbmcgKm9iamVjdCwgdWxvbmcgb3BlcmFuZCk7CnVsb25nIF9fb3ZsZCBhdG9taWNfZmV0Y2hfYWRkKHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX3Vsb25nICpvYmplY3QsIHVsb25nIG9wZXJhbmQpOwp1aW50cHRyX3QgX19vdmxkIGF0b21pY19mZXRjaF9hZGQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX3VpbnRwdHJfdCAqb2JqZWN0LCBwdHJkaWZmX3Qgb3BlcmFuZCk7CnVpbnRwdHJfdCBfX292bGQgYXRvbWljX2ZldGNoX2FkZCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY191aW50cHRyX3QgKm9iamVjdCwgcHRyZGlmZl90IG9wZXJhbmQpOwpsb25nIF9fb3ZsZCBhdG9taWNfZmV0Y2hfc3ViKHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19sb25nICpvYmplY3QsIGxvbmcgb3BlcmFuZCk7CmxvbmcgX19vdmxkIGF0b21pY19mZXRjaF9zdWIodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfbG9uZyAqb2JqZWN0LCBsb25nIG9wZXJhbmQpOwp1bG9uZyBfX292bGQgYXRvbWljX2ZldGNoX3N1Yih2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfdWxvbmcgKm9iamVjdCwgdWxvbmcgb3BlcmFuZCk7CnVsb25nIF9fb3ZsZCBhdG9taWNfZmV0Y2hfc3ViKHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX3Vsb25nICpvYmplY3QsIHVsb25nIG9wZXJhbmQpOwp1aW50cHRyX3QgX19vdmxkIGF0b21pY19mZXRjaF9zdWIodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX3VpbnRwdHJfdCAqb2JqZWN0LCBwdHJkaWZmX3Qgb3BlcmFuZCk7CnVpbnRwdHJfdCBfX292bGQgYXRvbWljX2ZldGNoX3N1Yih2b2xhdGlsZSBfX2xvY2FsIGF0b21pY191aW50cHRyX3QgKm9iamVjdCwgcHRyZGlmZl90IG9wZXJhbmQpOwpsb25nIF9fb3ZsZCBhdG9taWNfZmV0Y2hfb3Iodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2xvbmcgKm9iamVjdCwgbG9uZyBvcGVyYW5kKTsKbG9uZyBfX292bGQgYXRvbWljX2ZldGNoX29yKHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2xvbmcgKm9iamVjdCwgbG9uZyBvcGVyYW5kKTsKdWxvbmcgX19vdmxkIGF0b21pY19mZXRjaF9vcih2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfdWxvbmcgKm9iamVjdCwgdWxvbmcgb3BlcmFuZCk7CnVsb25nIF9fb3ZsZCBhdG9taWNfZmV0Y2hfb3Iodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfdWxvbmcgKm9iamVjdCwgdWxvbmcgb3BlcmFuZCk7CnVpbnRwdHJfdCBfX292bGQgYXRvbWljX2ZldGNoX29yKHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY191aW50cHRyX3QgKm9iamVjdCwgaW50cHRyX3Qgb3BlcmFuZCk7CnVpbnRwdHJfdCBfX292bGQgYXRvbWljX2ZldGNoX29yKHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX3VpbnRwdHJfdCAqb2JqZWN0LCBpbnRwdHJfdCBvcGVyYW5kKTsKaW50cHRyX3QgX19vdmxkIGF0b21pY19mZXRjaF9vcih2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfaW50cHRyX3QgKm9iamVjdCwgdWludHB0cl90IG9wZXJhbmQpOwppbnRwdHJfdCBfX292bGQgYXRvbWljX2ZldGNoX29yKHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2ludHB0cl90ICpvYmplY3QsIHVpbnRwdHJfdCBvcGVyYW5kKTsKbG9uZyBfX292bGQgYXRvbWljX2ZldGNoX3hvcih2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfbG9uZyAqb2JqZWN0LCBsb25nIG9wZXJhbmQpOwpsb25nIF9fb3ZsZCBhdG9taWNfZmV0Y2hfeG9yKHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2xvbmcgKm9iamVjdCwgbG9uZyBvcGVyYW5kKTsKdWxvbmcgX19vdmxkIGF0b21pY19mZXRjaF94b3Iodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX3Vsb25nICpvYmplY3QsIHVsb25nIG9wZXJhbmQpOwp1bG9uZyBfX292bGQgYXRvbWljX2ZldGNoX3hvcih2b2xhdGlsZSBfX2xvY2FsIGF0b21pY191bG9uZyAqb2JqZWN0LCB1bG9uZyBvcGVyYW5kKTsKdWludHB0cl90IF9fb3ZsZCBhdG9taWNfZmV0Y2hfeG9yKHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY191aW50cHRyX3QgKm9iamVjdCwgaW50cHRyX3Qgb3BlcmFuZCk7CnVpbnRwdHJfdCBfX292bGQgYXRvbWljX2ZldGNoX3hvcih2b2xhdGlsZSBfX2xvY2FsIGF0b21pY191aW50cHRyX3QgKm9iamVjdCwgaW50cHRyX3Qgb3BlcmFuZCk7CmludHB0cl90IF9fb3ZsZCBhdG9taWNfZmV0Y2hfeG9yKHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19pbnRwdHJfdCAqb2JqZWN0LCB1aW50cHRyX3Qgb3BlcmFuZCk7CmludHB0cl90IF9fb3ZsZCBhdG9taWNfZmV0Y2hfeG9yKHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2ludHB0cl90ICpvYmplY3QsIHVpbnRwdHJfdCBvcGVyYW5kKTsKbG9uZyBfX292bGQgYXRvbWljX2ZldGNoX2FuZCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfbG9uZyAqb2JqZWN0LCBsb25nIG9wZXJhbmQpOwpsb25nIF9fb3ZsZCBhdG9taWNfZmV0Y2hfYW5kKHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2xvbmcgKm9iamVjdCwgbG9uZyBvcGVyYW5kKTsKdWxvbmcgX19vdmxkIGF0b21pY19mZXRjaF9hbmQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX3Vsb25nICpvYmplY3QsIHVsb25nIG9wZXJhbmQpOwp1bG9uZyBfX292bGQgYXRvbWljX2ZldGNoX2FuZCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY191bG9uZyAqb2JqZWN0LCB1bG9uZyBvcGVyYW5kKTsKdWludHB0cl90IF9fb3ZsZCBhdG9taWNfZmV0Y2hfYW5kKHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY191aW50cHRyX3QgKm9iamVjdCwgaW50cHRyX3Qgb3BlcmFuZCk7CnVpbnRwdHJfdCBfX292bGQgYXRvbWljX2ZldGNoX2FuZCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY191aW50cHRyX3QgKm9iamVjdCwgaW50cHRyX3Qgb3BlcmFuZCk7CmludHB0cl90IF9fb3ZsZCBhdG9taWNfZmV0Y2hfYW5kKHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19pbnRwdHJfdCAqb2JqZWN0LCB1aW50cHRyX3Qgb3BlcmFuZCk7CmludHB0cl90IF9fb3ZsZCBhdG9taWNfZmV0Y2hfYW5kKHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2ludHB0cl90ICpvYmplY3QsIHVpbnRwdHJfdCBvcGVyYW5kKTsKbG9uZyBfX292bGQgYXRvbWljX2ZldGNoX21pbih2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfbG9uZyAqb2JqZWN0LCBsb25nIG9wZXJhbmQpOwpsb25nIF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWluKHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2xvbmcgKm9iamVjdCwgbG9uZyBvcGVyYW5kKTsKdWxvbmcgX19vdmxkIGF0b21pY19mZXRjaF9taW4odm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX3Vsb25nICpvYmplY3QsIHVsb25nIG9wZXJhbmQpOwp1bG9uZyBfX292bGQgYXRvbWljX2ZldGNoX21pbih2b2xhdGlsZSBfX2xvY2FsIGF0b21pY191bG9uZyAqb2JqZWN0LCB1bG9uZyBvcGVyYW5kKTsKdWludHB0cl90IF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWluKHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY191aW50cHRyX3QgKm9iamVjdCwgaW50cHRyX3Qgb3BlcmFuZCk7CnVpbnRwdHJfdCBfX292bGQgYXRvbWljX2ZldGNoX21pbih2b2xhdGlsZSBfX2xvY2FsIGF0b21pY191aW50cHRyX3QgKm9iamVjdCwgaW50cHRyX3Qgb3BlcmFuZCk7CmludHB0cl90IF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWluKHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19pbnRwdHJfdCAqb2JqZWN0LCB1aW50cHRyX3Qgb3BlcmFuZCk7CmludHB0cl90IF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWluKHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2ludHB0cl90ICpvYmplY3QsIHVpbnRwdHJfdCBvcGVyYW5kKTsKbG9uZyBfX292bGQgYXRvbWljX2ZldGNoX21heCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfbG9uZyAqb2JqZWN0LCBsb25nIG9wZXJhbmQpOwpsb25nIF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWF4KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2xvbmcgKm9iamVjdCwgbG9uZyBvcGVyYW5kKTsKdWxvbmcgX19vdmxkIGF0b21pY19mZXRjaF9tYXgodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX3Vsb25nICpvYmplY3QsIHVsb25nIG9wZXJhbmQpOwp1bG9uZyBfX292bGQgYXRvbWljX2ZldGNoX21heCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY191bG9uZyAqb2JqZWN0LCB1bG9uZyBvcGVyYW5kKTsKdWludHB0cl90IF9fb3ZsZCBhdG9taWNfZmV0Y2hfYWRkKHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY191aW50cHRyX3QgKm9iamVjdCwgcHRyZGlmZl90IG9wZXJhbmQpOwp1aW50cHRyX3QgX19vdmxkIGF0b21pY19mZXRjaF9zdWIodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfdWludHB0cl90ICpvYmplY3QsIHB0cmRpZmZfdCBvcGVyYW5kKTsKI2VuZGlmIC8vZGVmaW5lZChjbF9raHJfaW50NjRfYmFzZV9hdG9taWNzKSAmJiBkZWZpbmVkKGNsX2tocl9pbnQ2NF9leHRlbmRlZF9hdG9taWNzKQojZW5kaWYgLy8gKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fM18wIHx8IF9fT1BFTkNMX0NQUF9WRVJTSU9OX18gPj0gMjAyMTAwKQojZW5kaWYKCiNpZiBkZWZpbmVkKF9fb3BlbmNsX2NfYXRvbWljX3Njb3BlX2RldmljZSkKI2lmIGRlZmluZWQoX19vcGVuY2xfY19nZW5lcmljX2FkZHJlc3Nfc3BhY2UpCmludCBfX292bGQgYXRvbWljX2ZldGNoX2FkZF9leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfaW50ICpvYmplY3QsIGludCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwp1aW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfYWRkX2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY191aW50ICpvYmplY3QsIHVpbnQgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKaW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfc3ViX2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY19pbnQgKm9iamVjdCwgaW50IG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlcik7CnVpbnQgX19vdmxkIGF0b21pY19mZXRjaF9zdWJfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX3VpbnQgKm9iamVjdCwgdWludCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwppbnQgX19vdmxkIGF0b21pY19mZXRjaF9vcl9leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfaW50ICpvYmplY3QsIGludCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwp1aW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfb3JfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX3VpbnQgKm9iamVjdCwgdWludCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwppbnQgX19vdmxkIGF0b21pY19mZXRjaF94b3JfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX2ludCAqb2JqZWN0LCBpbnQgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKdWludCBfX292bGQgYXRvbWljX2ZldGNoX3hvcl9leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfdWludCAqb2JqZWN0LCB1aW50IG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlcik7CmludCBfX292bGQgYXRvbWljX2ZldGNoX2FuZF9leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfaW50ICpvYmplY3QsIGludCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwp1aW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfYW5kX2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY191aW50ICpvYmplY3QsIHVpbnQgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKaW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWluX2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY19pbnQgKm9iamVjdCwgaW50IG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlcik7CnVpbnQgX19vdmxkIGF0b21pY19mZXRjaF9taW5fZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX3VpbnQgKm9iamVjdCwgdWludCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwppbnQgX19vdmxkIGF0b21pY19mZXRjaF9tYXhfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX2ludCAqb2JqZWN0LCBpbnQgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKdWludCBfX292bGQgYXRvbWljX2ZldGNoX21heF9leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfdWludCAqb2JqZWN0LCB1aW50IG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlcik7CiNpZiBkZWZpbmVkKGNsX2tocl9pbnQ2NF9iYXNlX2F0b21pY3MpICYmIGRlZmluZWQoY2xfa2hyX2ludDY0X2V4dGVuZGVkX2F0b21pY3MpCmxvbmcgX19vdmxkIGF0b21pY19mZXRjaF9hZGRfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX2xvbmcgKm9iamVjdCwgbG9uZyBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwp1bG9uZyBfX292bGQgYXRvbWljX2ZldGNoX2FkZF9leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfdWxvbmcgKm9iamVjdCwgdWxvbmcgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKbG9uZyBfX292bGQgYXRvbWljX2ZldGNoX3N1Yl9leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfbG9uZyAqb2JqZWN0LCBsb25nIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlcik7CnVsb25nIF9fb3ZsZCBhdG9taWNfZmV0Y2hfc3ViX2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY191bG9uZyAqb2JqZWN0LCB1bG9uZyBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwpsb25nIF9fb3ZsZCBhdG9taWNfZmV0Y2hfb3JfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX2xvbmcgKm9iamVjdCwgbG9uZyBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwp1bG9uZyBfX292bGQgYXRvbWljX2ZldGNoX29yX2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY191bG9uZyAqb2JqZWN0LCB1bG9uZyBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwpsb25nIF9fb3ZsZCBhdG9taWNfZmV0Y2hfeG9yX2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY19sb25nICpvYmplY3QsIGxvbmcgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKdWxvbmcgX19vdmxkIGF0b21pY19mZXRjaF94b3JfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX3Vsb25nICpvYmplY3QsIHVsb25nIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlcik7CmxvbmcgX19vdmxkIGF0b21pY19mZXRjaF9hbmRfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX2xvbmcgKm9iamVjdCwgbG9uZyBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwp1bG9uZyBfX292bGQgYXRvbWljX2ZldGNoX2FuZF9leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfdWxvbmcgKm9iamVjdCwgdWxvbmcgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKbG9uZyBfX292bGQgYXRvbWljX2ZldGNoX21pbl9leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfbG9uZyAqb2JqZWN0LCBsb25nIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlcik7CnVsb25nIF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWluX2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY191bG9uZyAqb2JqZWN0LCB1bG9uZyBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwpsb25nIF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWF4X2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY19sb25nICpvYmplY3QsIGxvbmcgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKdWxvbmcgX19vdmxkIGF0b21pY19mZXRjaF9tYXhfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX3Vsb25nICpvYmplY3QsIHVsb25nIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlcik7CnVpbnRwdHJfdCBfX292bGQgYXRvbWljX2ZldGNoX2FkZF9leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfdWludHB0cl90ICpvYmplY3QsIHB0cmRpZmZfdCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwp1aW50cHRyX3QgX19vdmxkIGF0b21pY19mZXRjaF9zdWJfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX3VpbnRwdHJfdCAqb2JqZWN0LCBwdHJkaWZmX3Qgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKI2VuZGlmIC8vZGVmaW5lZChjbF9raHJfaW50NjRfYmFzZV9hdG9taWNzKSAmJiBkZWZpbmVkKGNsX2tocl9pbnQ2NF9leHRlbmRlZF9hdG9taWNzKQojZW5kaWYgLy9kZWZpbmVkKF9fb3BlbmNsX2NfZ2VuZXJpY19hZGRyZXNzX3NwYWNlKQojaWYgKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fM18wIHx8IF9fT1BFTkNMX0NQUF9WRVJTSU9OX18gPj0gMjAyMTAwKQppbnQgX19vdmxkIGF0b21pY19mZXRjaF9hZGRfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2ludCAqb2JqZWN0LCBpbnQgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKaW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfYWRkX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2ludCAqb2JqZWN0LCBpbnQgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKdWludCBfX292bGQgYXRvbWljX2ZldGNoX2FkZF9leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfdWludCAqb2JqZWN0LCB1aW50IG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlcik7CnVpbnQgX19vdmxkIGF0b21pY19mZXRjaF9hZGRfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfdWludCAqb2JqZWN0LCB1aW50IG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlcik7CmludCBfX292bGQgYXRvbWljX2ZldGNoX3N1Yl9leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfaW50ICpvYmplY3QsIGludCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwppbnQgX19vdmxkIGF0b21pY19mZXRjaF9zdWJfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfaW50ICpvYmplY3QsIGludCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwp1aW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfc3ViX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY191aW50ICpvYmplY3QsIHVpbnQgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKdWludCBfX292bGQgYXRvbWljX2ZldGNoX3N1Yl9leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY191aW50ICpvYmplY3QsIHVpbnQgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKaW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfb3JfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2ludCAqb2JqZWN0LCBpbnQgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKaW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfb3JfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfaW50ICpvYmplY3QsIGludCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwp1aW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfb3JfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX3VpbnQgKm9iamVjdCwgdWludCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwp1aW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfb3JfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfdWludCAqb2JqZWN0LCB1aW50IG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlcik7CmludCBfX292bGQgYXRvbWljX2ZldGNoX3hvcl9leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfaW50ICpvYmplY3QsIGludCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwppbnQgX19vdmxkIGF0b21pY19mZXRjaF94b3JfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfaW50ICpvYmplY3QsIGludCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwp1aW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfeG9yX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY191aW50ICpvYmplY3QsIHVpbnQgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKdWludCBfX292bGQgYXRvbWljX2ZldGNoX3hvcl9leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY191aW50ICpvYmplY3QsIHVpbnQgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKaW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfYW5kX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19pbnQgKm9iamVjdCwgaW50IG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlcik7CmludCBfX292bGQgYXRvbWljX2ZldGNoX2FuZF9leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19pbnQgKm9iamVjdCwgaW50IG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlcik7CnVpbnQgX19vdmxkIGF0b21pY19mZXRjaF9hbmRfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX3VpbnQgKm9iamVjdCwgdWludCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwp1aW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfYW5kX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX3VpbnQgKm9iamVjdCwgdWludCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwppbnQgX19vdmxkIGF0b21pY19mZXRjaF9taW5fZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2ludCAqb2JqZWN0LCBpbnQgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKaW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWluX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2ludCAqb2JqZWN0LCBpbnQgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKdWludCBfX292bGQgYXRvbWljX2ZldGNoX21pbl9leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfdWludCAqb2JqZWN0LCB1aW50IG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlcik7CnVpbnQgX19vdmxkIGF0b21pY19mZXRjaF9taW5fZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfdWludCAqb2JqZWN0LCB1aW50IG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlcik7CmludCBfX292bGQgYXRvbWljX2ZldGNoX21heF9leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfaW50ICpvYmplY3QsIGludCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwppbnQgX19vdmxkIGF0b21pY19mZXRjaF9tYXhfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfaW50ICpvYmplY3QsIGludCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwp1aW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWF4X2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY191aW50ICpvYmplY3QsIHVpbnQgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKdWludCBfX292bGQgYXRvbWljX2ZldGNoX21heF9leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY191aW50ICpvYmplY3QsIHVpbnQgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKI2lmIGRlZmluZWQoY2xfa2hyX2ludDY0X2Jhc2VfYXRvbWljcykgJiYgZGVmaW5lZChjbF9raHJfaW50NjRfZXh0ZW5kZWRfYXRvbWljcykKbG9uZyBfX292bGQgYXRvbWljX2ZldGNoX2FkZF9leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfbG9uZyAqb2JqZWN0LCBsb25nIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlcik7CmxvbmcgX19vdmxkIGF0b21pY19mZXRjaF9hZGRfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfbG9uZyAqb2JqZWN0LCBsb25nIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlcik7CnVsb25nIF9fb3ZsZCBhdG9taWNfZmV0Y2hfYWRkX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY191bG9uZyAqb2JqZWN0LCB1bG9uZyBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwp1bG9uZyBfX292bGQgYXRvbWljX2ZldGNoX2FkZF9leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY191bG9uZyAqb2JqZWN0LCB1bG9uZyBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwp1aW50cHRyX3QgX19vdmxkIGF0b21pY19mZXRjaF9hZGRfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX3VpbnRwdHJfdCAqb2JqZWN0LCBwdHJkaWZmX3Qgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKdWludHB0cl90IF9fb3ZsZCBhdG9taWNfZmV0Y2hfYWRkX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX3VpbnRwdHJfdCAqb2JqZWN0LCBwdHJkaWZmX3Qgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKbG9uZyBfX292bGQgYXRvbWljX2ZldGNoX3N1Yl9leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfbG9uZyAqb2JqZWN0LCBsb25nIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlcik7CmxvbmcgX19vdmxkIGF0b21pY19mZXRjaF9zdWJfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfbG9uZyAqb2JqZWN0LCBsb25nIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlcik7CnVsb25nIF9fb3ZsZCBhdG9taWNfZmV0Y2hfc3ViX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY191bG9uZyAqb2JqZWN0LCB1bG9uZyBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwp1bG9uZyBfX292bGQgYXRvbWljX2ZldGNoX3N1Yl9leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY191bG9uZyAqb2JqZWN0LCB1bG9uZyBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwp1aW50cHRyX3QgX19vdmxkIGF0b21pY19mZXRjaF9zdWJfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX3VpbnRwdHJfdCAqb2JqZWN0LCBwdHJkaWZmX3Qgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKdWludHB0cl90IF9fb3ZsZCBhdG9taWNfZmV0Y2hfc3ViX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX3VpbnRwdHJfdCAqb2JqZWN0LCBwdHJkaWZmX3Qgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKbG9uZyBfX292bGQgYXRvbWljX2ZldGNoX29yX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19sb25nICpvYmplY3QsIGxvbmcgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKbG9uZyBfX292bGQgYXRvbWljX2ZldGNoX29yX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2xvbmcgKm9iamVjdCwgbG9uZyBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwp1bG9uZyBfX292bGQgYXRvbWljX2ZldGNoX29yX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY191bG9uZyAqb2JqZWN0LCB1bG9uZyBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwp1bG9uZyBfX292bGQgYXRvbWljX2ZldGNoX29yX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX3Vsb25nICpvYmplY3QsIHVsb25nIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlcik7CnVpbnRwdHJfdCBfX292bGQgYXRvbWljX2ZldGNoX29yX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY191aW50cHRyX3QgKm9iamVjdCwgaW50cHRyX3Qgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKdWludHB0cl90IF9fb3ZsZCBhdG9taWNfZmV0Y2hfb3JfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfdWludHB0cl90ICpvYmplY3QsIGludHB0cl90IG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlcik7CmludHB0cl90IF9fb3ZsZCBhdG9taWNfZmV0Y2hfb3JfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2ludHB0cl90ICpvYmplY3QsIHVpbnRwdHJfdCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwppbnRwdHJfdCBfX292bGQgYXRvbWljX2ZldGNoX29yX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2ludHB0cl90ICpvYmplY3QsIHVpbnRwdHJfdCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwpsb25nIF9fb3ZsZCBhdG9taWNfZmV0Y2hfeG9yX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19sb25nICpvYmplY3QsIGxvbmcgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKbG9uZyBfX292bGQgYXRvbWljX2ZldGNoX3hvcl9leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19sb25nICpvYmplY3QsIGxvbmcgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKdWxvbmcgX19vdmxkIGF0b21pY19mZXRjaF94b3JfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX3Vsb25nICpvYmplY3QsIHVsb25nIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlcik7CnVsb25nIF9fb3ZsZCBhdG9taWNfZmV0Y2hfeG9yX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX3Vsb25nICpvYmplY3QsIHVsb25nIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlcik7CnVpbnRwdHJfdCBfX292bGQgYXRvbWljX2ZldGNoX3hvcl9leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfdWludHB0cl90ICpvYmplY3QsIGludHB0cl90IG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlcik7CnVpbnRwdHJfdCBfX292bGQgYXRvbWljX2ZldGNoX3hvcl9leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY191aW50cHRyX3QgKm9iamVjdCwgaW50cHRyX3Qgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKaW50cHRyX3QgX19vdmxkIGF0b21pY19mZXRjaF94b3JfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2ludHB0cl90ICpvYmplY3QsIHVpbnRwdHJfdCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwppbnRwdHJfdCBfX292bGQgYXRvbWljX2ZldGNoX3hvcl9leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19pbnRwdHJfdCAqb2JqZWN0LCB1aW50cHRyX3Qgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKbG9uZyBfX292bGQgYXRvbWljX2ZldGNoX2FuZF9leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfbG9uZyAqb2JqZWN0LCBsb25nIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlcik7CmxvbmcgX19vdmxkIGF0b21pY19mZXRjaF9hbmRfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfbG9uZyAqb2JqZWN0LCBsb25nIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlcik7CnVsb25nIF9fb3ZsZCBhdG9taWNfZmV0Y2hfYW5kX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY191bG9uZyAqb2JqZWN0LCB1bG9uZyBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwp1bG9uZyBfX292bGQgYXRvbWljX2ZldGNoX2FuZF9leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY191bG9uZyAqb2JqZWN0LCB1bG9uZyBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwp1aW50cHRyX3QgX19vdmxkIGF0b21pY19mZXRjaF9hbmRfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX3VpbnRwdHJfdCAqb2JqZWN0LCBpbnRwdHJfdCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwp1aW50cHRyX3QgX19vdmxkIGF0b21pY19mZXRjaF9hbmRfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfdWludHB0cl90ICpvYmplY3QsIGludHB0cl90IG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlcik7CmludHB0cl90IF9fb3ZsZCBhdG9taWNfZmV0Y2hfYW5kX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19pbnRwdHJfdCAqb2JqZWN0LCB1aW50cHRyX3Qgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKaW50cHRyX3QgX19vdmxkIGF0b21pY19mZXRjaF9hbmRfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfaW50cHRyX3QgKm9iamVjdCwgdWludHB0cl90IG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlcik7CmxvbmcgX19vdmxkIGF0b21pY19mZXRjaF9taW5fZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2xvbmcgKm9iamVjdCwgbG9uZyBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwpsb25nIF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWluX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2xvbmcgKm9iamVjdCwgbG9uZyBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwp1bG9uZyBfX292bGQgYXRvbWljX2ZldGNoX21pbl9leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfdWxvbmcgKm9iamVjdCwgdWxvbmcgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKdWxvbmcgX19vdmxkIGF0b21pY19mZXRjaF9taW5fZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfdWxvbmcgKm9iamVjdCwgdWxvbmcgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKdWludHB0cl90IF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWluX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY191aW50cHRyX3QgKm9iamVjdCwgaW50cHRyX3Qgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKdWludHB0cl90IF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWluX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX3VpbnRwdHJfdCAqb2JqZWN0LCBpbnRwdHJfdCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwppbnRwdHJfdCBfX292bGQgYXRvbWljX2ZldGNoX21pbl9leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfaW50cHRyX3QgKm9iamVjdCwgdWludHB0cl90IG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlcik7CmludHB0cl90IF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWluX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2ludHB0cl90ICpvYmplY3QsIHVpbnRwdHJfdCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwpsb25nIF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWF4X2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19sb25nICpvYmplY3QsIGxvbmcgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKbG9uZyBfX292bGQgYXRvbWljX2ZldGNoX21heF9leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19sb25nICpvYmplY3QsIGxvbmcgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKdWxvbmcgX19vdmxkIGF0b21pY19mZXRjaF9tYXhfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX3Vsb25nICpvYmplY3QsIHVsb25nIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlcik7CnVsb25nIF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWF4X2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX3Vsb25nICpvYmplY3QsIHVsb25nIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlcik7CnVpbnRwdHJfdCBfX292bGQgYXRvbWljX2ZldGNoX2FkZF9leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfdWludHB0cl90ICpvYmplY3QsIHB0cmRpZmZfdCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwp1aW50cHRyX3QgX19vdmxkIGF0b21pY19mZXRjaF9zdWJfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfdWludHB0cl90ICpvYmplY3QsIHB0cmRpZmZfdCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwojZW5kaWYgLy9kZWZpbmVkKGNsX2tocl9pbnQ2NF9iYXNlX2F0b21pY3MpICYmIGRlZmluZWQoY2xfa2hyX2ludDY0X2V4dGVuZGVkX2F0b21pY3MpCiNlbmRpZiAvLyAoX19PUEVOQ0xfQ19WRVJTSU9OX18gPj0gQ0xfVkVSU0lPTl8zXzAgfHwgX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXyA+PSAyMDIxMDApCiNlbmRpZgoKI2lmIGRlZmluZWQoX19vcGVuY2xfY19nZW5lcmljX2FkZHJlc3Nfc3BhY2UpCmludCBfX292bGQgYXRvbWljX2ZldGNoX2FkZF9leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfaW50ICpvYmplY3QsIGludCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CnVpbnQgX19vdmxkIGF0b21pY19mZXRjaF9hZGRfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX3VpbnQgKm9iamVjdCwgdWludCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CmludCBfX292bGQgYXRvbWljX2ZldGNoX3N1Yl9leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfaW50ICpvYmplY3QsIGludCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CnVpbnQgX19vdmxkIGF0b21pY19mZXRjaF9zdWJfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX3VpbnQgKm9iamVjdCwgdWludCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CmludCBfX292bGQgYXRvbWljX2ZldGNoX29yX2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY19pbnQgKm9iamVjdCwgaW50IG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKdWludCBfX292bGQgYXRvbWljX2ZldGNoX29yX2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY191aW50ICpvYmplY3QsIHVpbnQgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwppbnQgX19vdmxkIGF0b21pY19mZXRjaF94b3JfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX2ludCAqb2JqZWN0LCBpbnQgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwp1aW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfeG9yX2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY191aW50ICpvYmplY3QsIHVpbnQgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwppbnQgX19vdmxkIGF0b21pY19mZXRjaF9hbmRfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX2ludCAqb2JqZWN0LCBpbnQgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwp1aW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfYW5kX2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY191aW50ICpvYmplY3QsIHVpbnQgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwppbnQgX19vdmxkIGF0b21pY19mZXRjaF9taW5fZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX2ludCAqb2JqZWN0LCBpbnQgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwp1aW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWluX2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY191aW50ICpvYmplY3QsIHVpbnQgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwppbnQgX19vdmxkIGF0b21pY19mZXRjaF9tYXhfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX2ludCAqb2JqZWN0LCBpbnQgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwp1aW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWF4X2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY191aW50ICpvYmplY3QsIHVpbnQgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwojaWYgZGVmaW5lZChjbF9raHJfaW50NjRfYmFzZV9hdG9taWNzKSAmJiBkZWZpbmVkKGNsX2tocl9pbnQ2NF9leHRlbmRlZF9hdG9taWNzKQpsb25nIF9fb3ZsZCBhdG9taWNfZmV0Y2hfYWRkX2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY19sb25nICpvYmplY3QsIGxvbmcgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwp1bG9uZyBfX292bGQgYXRvbWljX2ZldGNoX2FkZF9leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfdWxvbmcgKm9iamVjdCwgdWxvbmcgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwpsb25nIF9fb3ZsZCBhdG9taWNfZmV0Y2hfc3ViX2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY19sb25nICpvYmplY3QsIGxvbmcgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwp1bG9uZyBfX292bGQgYXRvbWljX2ZldGNoX3N1Yl9leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfdWxvbmcgKm9iamVjdCwgdWxvbmcgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwpsb25nIF9fb3ZsZCBhdG9taWNfZmV0Y2hfb3JfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX2xvbmcgKm9iamVjdCwgbG9uZyBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CnVsb25nIF9fb3ZsZCBhdG9taWNfZmV0Y2hfb3JfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX3Vsb25nICpvYmplY3QsIHVsb25nIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKbG9uZyBfX292bGQgYXRvbWljX2ZldGNoX3hvcl9leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfbG9uZyAqb2JqZWN0LCBsb25nIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKdWxvbmcgX19vdmxkIGF0b21pY19mZXRjaF94b3JfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX3Vsb25nICpvYmplY3QsIHVsb25nIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKbG9uZyBfX292bGQgYXRvbWljX2ZldGNoX2FuZF9leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfbG9uZyAqb2JqZWN0LCBsb25nIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKdWxvbmcgX19vdmxkIGF0b21pY19mZXRjaF9hbmRfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX3Vsb25nICpvYmplY3QsIHVsb25nIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKbG9uZyBfX292bGQgYXRvbWljX2ZldGNoX21pbl9leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfbG9uZyAqb2JqZWN0LCBsb25nIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKdWxvbmcgX19vdmxkIGF0b21pY19mZXRjaF9taW5fZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX3Vsb25nICpvYmplY3QsIHVsb25nIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKbG9uZyBfX292bGQgYXRvbWljX2ZldGNoX21heF9leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfbG9uZyAqb2JqZWN0LCBsb25nIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKdWxvbmcgX19vdmxkIGF0b21pY19mZXRjaF9tYXhfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX3Vsb25nICpvYmplY3QsIHVsb25nIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKdWludHB0cl90IF9fb3ZsZCBhdG9taWNfZmV0Y2hfYWRkX2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY191aW50cHRyX3QgKm9iamVjdCwgcHRyZGlmZl90IG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKdWludHB0cl90IF9fb3ZsZCBhdG9taWNfZmV0Y2hfc3ViX2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY191aW50cHRyX3QgKm9iamVjdCwgcHRyZGlmZl90IG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKI2VuZGlmCiNlbmRpZiAvL2RlZmluZWQoX19vcGVuY2xfY19nZW5lcmljX2FkZHJlc3Nfc3BhY2UpCiNpZiAoX19PUEVOQ0xfQ19WRVJTSU9OX18gPj0gQ0xfVkVSU0lPTl8zXzAgfHwgX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXyA+PSAyMDIxMDApCmludCBfX292bGQgYXRvbWljX2ZldGNoX2FkZF9leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfaW50ICpvYmplY3QsIGludCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CmludCBfX292bGQgYXRvbWljX2ZldGNoX2FkZF9leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19pbnQgKm9iamVjdCwgaW50IG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKdWludCBfX292bGQgYXRvbWljX2ZldGNoX2FkZF9leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfdWludCAqb2JqZWN0LCB1aW50IG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKdWludCBfX292bGQgYXRvbWljX2ZldGNoX2FkZF9leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY191aW50ICpvYmplY3QsIHVpbnQgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwppbnQgX19vdmxkIGF0b21pY19mZXRjaF9zdWJfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2ludCAqb2JqZWN0LCBpbnQgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwppbnQgX19vdmxkIGF0b21pY19mZXRjaF9zdWJfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfaW50ICpvYmplY3QsIGludCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CnVpbnQgX19vdmxkIGF0b21pY19mZXRjaF9zdWJfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX3VpbnQgKm9iamVjdCwgdWludCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CnVpbnQgX19vdmxkIGF0b21pY19mZXRjaF9zdWJfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfdWludCAqb2JqZWN0LCB1aW50IG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKaW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfb3JfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2ludCAqb2JqZWN0LCBpbnQgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwppbnQgX19vdmxkIGF0b21pY19mZXRjaF9vcl9leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19pbnQgKm9iamVjdCwgaW50IG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKdWludCBfX292bGQgYXRvbWljX2ZldGNoX29yX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY191aW50ICpvYmplY3QsIHVpbnQgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwp1aW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfb3JfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfdWludCAqb2JqZWN0LCB1aW50IG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKaW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfeG9yX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19pbnQgKm9iamVjdCwgaW50IG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKaW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfeG9yX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2ludCAqb2JqZWN0LCBpbnQgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwp1aW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfeG9yX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY191aW50ICpvYmplY3QsIHVpbnQgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwp1aW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfeG9yX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX3VpbnQgKm9iamVjdCwgdWludCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CmludCBfX292bGQgYXRvbWljX2ZldGNoX2FuZF9leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfaW50ICpvYmplY3QsIGludCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CmludCBfX292bGQgYXRvbWljX2ZldGNoX2FuZF9leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19pbnQgKm9iamVjdCwgaW50IG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKdWludCBfX292bGQgYXRvbWljX2ZldGNoX2FuZF9leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfdWludCAqb2JqZWN0LCB1aW50IG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKdWludCBfX292bGQgYXRvbWljX2ZldGNoX2FuZF9leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY191aW50ICpvYmplY3QsIHVpbnQgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwppbnQgX19vdmxkIGF0b21pY19mZXRjaF9taW5fZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2ludCAqb2JqZWN0LCBpbnQgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwppbnQgX19vdmxkIGF0b21pY19mZXRjaF9taW5fZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfaW50ICpvYmplY3QsIGludCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CnVpbnQgX19vdmxkIGF0b21pY19mZXRjaF9taW5fZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX3VpbnQgKm9iamVjdCwgdWludCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CnVpbnQgX19vdmxkIGF0b21pY19mZXRjaF9taW5fZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfdWludCAqb2JqZWN0LCB1aW50IG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKaW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWF4X2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19pbnQgKm9iamVjdCwgaW50IG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKaW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWF4X2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2ludCAqb2JqZWN0LCBpbnQgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwp1aW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWF4X2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY191aW50ICpvYmplY3QsIHVpbnQgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwp1aW50IF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWF4X2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX3VpbnQgKm9iamVjdCwgdWludCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CiNpZiBkZWZpbmVkKGNsX2tocl9pbnQ2NF9iYXNlX2F0b21pY3MpICYmIGRlZmluZWQoY2xfa2hyX2ludDY0X2V4dGVuZGVkX2F0b21pY3MpCmxvbmcgX19vdmxkIGF0b21pY19mZXRjaF9hZGRfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2xvbmcgKm9iamVjdCwgbG9uZyBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CmxvbmcgX19vdmxkIGF0b21pY19mZXRjaF9hZGRfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfbG9uZyAqb2JqZWN0LCBsb25nIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKdWludHB0cl90IF9fb3ZsZCBhdG9taWNfZmV0Y2hfYWRkX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY191aW50cHRyX3QgKm9iamVjdCwgcHRyZGlmZl90IG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKdWludHB0cl90IF9fb3ZsZCBhdG9taWNfZmV0Y2hfYWRkX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX3VpbnRwdHJfdCAqb2JqZWN0LCBwdHJkaWZmX3Qgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwp1bG9uZyBfX292bGQgYXRvbWljX2ZldGNoX2FkZF9leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfdWxvbmcgKm9iamVjdCwgdWxvbmcgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwp1bG9uZyBfX292bGQgYXRvbWljX2ZldGNoX2FkZF9leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY191bG9uZyAqb2JqZWN0LCB1bG9uZyBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CmxvbmcgX19vdmxkIGF0b21pY19mZXRjaF9zdWJfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2xvbmcgKm9iamVjdCwgbG9uZyBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CmxvbmcgX19vdmxkIGF0b21pY19mZXRjaF9zdWJfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfbG9uZyAqb2JqZWN0LCBsb25nIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKdWxvbmcgX19vdmxkIGF0b21pY19mZXRjaF9zdWJfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX3Vsb25nICpvYmplY3QsIHVsb25nIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKdWxvbmcgX19vdmxkIGF0b21pY19mZXRjaF9zdWJfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfdWxvbmcgKm9iamVjdCwgdWxvbmcgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwp1aW50cHRyX3QgX19vdmxkIGF0b21pY19mZXRjaF9zdWJfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX3VpbnRwdHJfdCAqb2JqZWN0LCBwdHJkaWZmX3Qgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwp1aW50cHRyX3QgX19vdmxkIGF0b21pY19mZXRjaF9zdWJfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfdWludHB0cl90ICpvYmplY3QsIHB0cmRpZmZfdCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CmxvbmcgX19vdmxkIGF0b21pY19mZXRjaF9vcl9leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfbG9uZyAqb2JqZWN0LCBsb25nIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKbG9uZyBfX292bGQgYXRvbWljX2ZldGNoX29yX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2xvbmcgKm9iamVjdCwgbG9uZyBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CnVsb25nIF9fb3ZsZCBhdG9taWNfZmV0Y2hfb3JfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX3Vsb25nICpvYmplY3QsIHVsb25nIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKdWxvbmcgX19vdmxkIGF0b21pY19mZXRjaF9vcl9leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY191bG9uZyAqb2JqZWN0LCB1bG9uZyBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CnVpbnRwdHJfdCBfX292bGQgYXRvbWljX2ZldGNoX29yX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY191aW50cHRyX3QgKm9iamVjdCwgaW50cHRyX3Qgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwp1aW50cHRyX3QgX19vdmxkIGF0b21pY19mZXRjaF9vcl9leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY191aW50cHRyX3QgKm9iamVjdCwgaW50cHRyX3Qgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwppbnRwdHJfdCBfX292bGQgYXRvbWljX2ZldGNoX29yX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19pbnRwdHJfdCAqb2JqZWN0LCB1aW50cHRyX3Qgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwppbnRwdHJfdCBfX292bGQgYXRvbWljX2ZldGNoX29yX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2ludHB0cl90ICpvYmplY3QsIHVpbnRwdHJfdCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CmxvbmcgX19vdmxkIGF0b21pY19mZXRjaF94b3JfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2xvbmcgKm9iamVjdCwgbG9uZyBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CmxvbmcgX19vdmxkIGF0b21pY19mZXRjaF94b3JfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfbG9uZyAqb2JqZWN0LCBsb25nIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKdWxvbmcgX19vdmxkIGF0b21pY19mZXRjaF94b3JfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX3Vsb25nICpvYmplY3QsIHVsb25nIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKdWxvbmcgX19vdmxkIGF0b21pY19mZXRjaF94b3JfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfdWxvbmcgKm9iamVjdCwgdWxvbmcgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwp1aW50cHRyX3QgX19vdmxkIGF0b21pY19mZXRjaF94b3JfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX3VpbnRwdHJfdCAqb2JqZWN0LCBpbnRwdHJfdCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CnVpbnRwdHJfdCBfX292bGQgYXRvbWljX2ZldGNoX3hvcl9leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY191aW50cHRyX3QgKm9iamVjdCwgaW50cHRyX3Qgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwppbnRwdHJfdCBfX292bGQgYXRvbWljX2ZldGNoX3hvcl9leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfaW50cHRyX3QgKm9iamVjdCwgdWludHB0cl90IG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKaW50cHRyX3QgX19vdmxkIGF0b21pY19mZXRjaF94b3JfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfaW50cHRyX3QgKm9iamVjdCwgdWludHB0cl90IG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKbG9uZyBfX292bGQgYXRvbWljX2ZldGNoX2FuZF9leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfbG9uZyAqb2JqZWN0LCBsb25nIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKbG9uZyBfX292bGQgYXRvbWljX2ZldGNoX2FuZF9leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19sb25nICpvYmplY3QsIGxvbmcgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwp1bG9uZyBfX292bGQgYXRvbWljX2ZldGNoX2FuZF9leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfdWxvbmcgKm9iamVjdCwgdWxvbmcgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwp1bG9uZyBfX292bGQgYXRvbWljX2ZldGNoX2FuZF9leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY191bG9uZyAqb2JqZWN0LCB1bG9uZyBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CnVpbnRwdHJfdCBfX292bGQgYXRvbWljX2ZldGNoX2FuZF9leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfdWludHB0cl90ICpvYmplY3QsIGludHB0cl90IG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKdWludHB0cl90IF9fb3ZsZCBhdG9taWNfZmV0Y2hfYW5kX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX3VpbnRwdHJfdCAqb2JqZWN0LCBpbnRwdHJfdCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CmludHB0cl90IF9fb3ZsZCBhdG9taWNfZmV0Y2hfYW5kX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19pbnRwdHJfdCAqb2JqZWN0LCB1aW50cHRyX3Qgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwppbnRwdHJfdCBfX292bGQgYXRvbWljX2ZldGNoX2FuZF9leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19pbnRwdHJfdCAqb2JqZWN0LCB1aW50cHRyX3Qgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwpsb25nIF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWluX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19sb25nICpvYmplY3QsIGxvbmcgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwpsb25nIF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWluX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2xvbmcgKm9iamVjdCwgbG9uZyBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CnVsb25nIF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWluX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY191bG9uZyAqb2JqZWN0LCB1bG9uZyBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CnVsb25nIF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWluX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX3Vsb25nICpvYmplY3QsIHVsb25nIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKdWludHB0cl90IF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWluX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY191aW50cHRyX3QgKm9iamVjdCwgaW50cHRyX3Qgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwp1aW50cHRyX3QgX19vdmxkIGF0b21pY19mZXRjaF9taW5fZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfdWludHB0cl90ICpvYmplY3QsIGludHB0cl90IG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKaW50cHRyX3QgX19vdmxkIGF0b21pY19mZXRjaF9taW5fZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2ludHB0cl90ICpvYmplY3QsIHVpbnRwdHJfdCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CmludHB0cl90IF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWluX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2ludHB0cl90ICpvYmplY3QsIHVpbnRwdHJfdCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CmxvbmcgX19vdmxkIGF0b21pY19mZXRjaF9tYXhfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2xvbmcgKm9iamVjdCwgbG9uZyBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CmxvbmcgX19vdmxkIGF0b21pY19mZXRjaF9tYXhfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfbG9uZyAqb2JqZWN0LCBsb25nIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKdWxvbmcgX19vdmxkIGF0b21pY19mZXRjaF9tYXhfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX3Vsb25nICpvYmplY3QsIHVsb25nIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKdWxvbmcgX19vdmxkIGF0b21pY19mZXRjaF9tYXhfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfdWxvbmcgKm9iamVjdCwgdWxvbmcgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwp1aW50cHRyX3QgX19vdmxkIGF0b21pY19mZXRjaF9hZGRfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX3VpbnRwdHJfdCAqb2JqZWN0LCBwdHJkaWZmX3Qgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwp1aW50cHRyX3QgX19vdmxkIGF0b21pY19mZXRjaF9zdWJfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfdWludHB0cl90ICpvYmplY3QsIHB0cmRpZmZfdCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CiNlbmRpZiAvL2RlZmluZWQoY2xfa2hyX2ludDY0X2Jhc2VfYXRvbWljcykgJiYgZGVmaW5lZChjbF9raHJfaW50NjRfZXh0ZW5kZWRfYXRvbWljcykKI2VuZGlmIC8vIChfX09QRU5DTF9DX1ZFUlNJT05fXyA+PSBDTF9WRVJTSU9OXzNfMCB8fCBfX09QRU5DTF9DUFBfVkVSU0lPTl9fID49IDIwMjEwMCkKCi8vIFRoZSBmdW5jdGlvbmFsaXR5IGFkZGVkIGJ5IGNsX2V4dF9mbG9hdF9hdG9taWNzIGV4dGVuc2lvbgojaWYgZGVmaW5lZChjbF9leHRfZmxvYXRfYXRvbWljcykKCiNpZiBkZWZpbmVkKF9fb3BlbmNsX2NfZXh0X2ZwMTZfZ2xvYmFsX2F0b21pY19sb2FkX3N0b3JlKQp2b2lkIF9fb3ZsZCBhdG9taWNfc3RvcmUodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2hhbGYgKm9iamVjdCwgaGFsZiBvcGVyYW5kKTsKdm9pZCBfX292bGQgYXRvbWljX3N0b3JlX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19oYWxmICpvYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYWxmIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlcik7CnZvaWQgX19vdmxkIGF0b21pY19zdG9yZV9leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfaGFsZiAqb2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFsZiBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnlfc2NvcGUgc2NvcGUpOwpoYWxmIF9fb3ZsZCBhdG9taWNfbG9hZCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfaGFsZiAqb2JqZWN0KTsKaGFsZiBfX292bGQgYXRvbWljX2xvYWRfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2hhbGYgKm9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5X29yZGVyIG9yZGVyKTsKaGFsZiBfX292bGQgYXRvbWljX2xvYWRfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2hhbGYgKm9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwpoYWxmIF9fb3ZsZCBhdG9taWNfZXhjaGFuZ2Uodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2hhbGYgKm9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbGYgb3BlcmFuZCk7CmhhbGYgX19vdmxkIGF0b21pY19leGNoYW5nZV9leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfaGFsZiAqb2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFsZiBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwpoYWxmIF9fb3ZsZCBhdG9taWNfZXhjaGFuZ2VfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2hhbGYgKm9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbGYgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5X3Njb3BlIHNjb3BlKTsKI2VuZGlmIC8vIGRlZmluZWQoX19vcGVuY2xfY19leHRfZnAxNl9nbG9iYWxfYXRvbWljX2xvYWRfc3RvcmUpCgojaWYgZGVmaW5lZChfX29wZW5jbF9jX2V4dF9mcDE2X2xvY2FsX2F0b21pY19sb2FkX3N0b3JlKQp2b2lkIF9fb3ZsZCBhdG9taWNfc3RvcmUodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfaGFsZiAqb2JqZWN0LCBoYWxmIG9wZXJhbmQpOwp2b2lkIF9fb3ZsZCBhdG9taWNfc3RvcmVfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfaGFsZiAqb2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFsZiBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwp2b2lkIF9fb3ZsZCBhdG9taWNfc3RvcmVfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfaGFsZiAqb2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFsZiBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnlfc2NvcGUgc2NvcGUpOwpoYWxmIF9fb3ZsZCBhdG9taWNfbG9hZCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19oYWxmICpvYmplY3QpOwpoYWxmIF9fb3ZsZCBhdG9taWNfbG9hZF9leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19oYWxmICpvYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeV9vcmRlciBvcmRlcik7CmhhbGYgX19vdmxkIGF0b21pY19sb2FkX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2hhbGYgKm9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwpoYWxmIF9fb3ZsZCBhdG9taWNfZXhjaGFuZ2Uodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfaGFsZiAqb2JqZWN0LCBoYWxmIG9wZXJhbmQpOwpoYWxmIF9fb3ZsZCBhdG9taWNfZXhjaGFuZ2VfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfaGFsZiAqb2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFsZiBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwpoYWxmIF9fb3ZsZCBhdG9taWNfZXhjaGFuZ2VfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfaGFsZiAqb2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFsZiBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnlfc2NvcGUgc2NvcGUpOwojZW5kaWYgLy8gZGVmaW5lZChfX29wZW5jbF9jX2V4dF9mcDE2X2xvY2FsX2F0b21pY19sb2FkX3N0b3JlKQoKI2lmIGRlZmluZWQoX19vcGVuY2xfY19leHRfZnAxNl9nbG9iYWxfYXRvbWljX2xvYWRfc3RvcmUpICYmICAgICAgICAgICAgICAgICAgIFwKICAgIGRlZmluZWQoX19vcGVuY2xfY19leHRfZnAxNl9sb2NhbF9hdG9taWNfbG9hZF9zdG9yZSkKdm9pZCBfX292bGQgYXRvbWljX3N0b3JlKHZvbGF0aWxlIGF0b21pY19oYWxmICpvYmplY3QsIGhhbGYgb3BlcmFuZCk7CnZvaWQgX19vdmxkIGF0b21pY19zdG9yZV9leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfaGFsZiAqb2JqZWN0LCBoYWxmIG9wZXJhbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnlfb3JkZXIgb3JkZXIpOwp2b2lkIF9fb3ZsZCBhdG9taWNfc3RvcmVfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX2hhbGYgKm9iamVjdCwgaGFsZiBvcGVyYW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwpoYWxmIF9fb3ZsZCBhdG9taWNfbG9hZCh2b2xhdGlsZSBhdG9taWNfaGFsZiAqb2JqZWN0KTsKaGFsZiBfX292bGQgYXRvbWljX2xvYWRfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX2hhbGYgKm9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5X29yZGVyIG9yZGVyKTsKaGFsZiBfX292bGQgYXRvbWljX2xvYWRfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX2hhbGYgKm9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwpoYWxmIF9fb3ZsZCBhdG9taWNfZXhjaGFuZ2Uodm9sYXRpbGUgYXRvbWljX2hhbGYgKm9iamVjdCwgaGFsZiBvcGVyYW5kKTsKaGFsZiBfX292bGQgYXRvbWljX2V4Y2hhbmdlX2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY19oYWxmICpvYmplY3QsIGhhbGYgb3BlcmFuZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeV9vcmRlciBvcmRlcik7CmhhbGYgX19vdmxkIGF0b21pY19leGNoYW5nZV9leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfaGFsZiAqb2JqZWN0LCBoYWxmIG9wZXJhbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CiNlbmRpZiAvLyBkZWZpbmVkKF9fb3BlbmNsX2NfZXh0X2ZwMTZfZ2xvYmFsX2F0b21pY19sb2FkX3N0b3JlKSAmJgogICAgICAgLy8gZGVmaW5lZChfX29wZW5jbF9jX2V4dF9mcDE2X2xvY2FsX2F0b21pY19sb2FkX3N0b3JlKQoKI2lmIGRlZmluZWQoX19vcGVuY2xfY19leHRfZnAxNl9nbG9iYWxfYXRvbWljX21pbl9tYXgpCmhhbGYgX19vdmxkIGF0b21pY19mZXRjaF9taW4odm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2hhbGYgKm9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYWxmIG9wZXJhbmQpOwpoYWxmIF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWF4KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19oYWxmICpvYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFsZiBvcGVyYW5kKTsKaGFsZiBfX292bGQgYXRvbWljX2ZldGNoX21pbl9leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfaGFsZiAqb2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbGYgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKaGFsZiBfX292bGQgYXRvbWljX2ZldGNoX21heF9leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfaGFsZiAqb2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbGYgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKaGFsZiBfX292bGQgYXRvbWljX2ZldGNoX21pbl9leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfaGFsZiAqb2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbGYgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeV9zY29wZSBzY29wZSk7CmhhbGYgX19vdmxkIGF0b21pY19mZXRjaF9tYXhfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2hhbGYgKm9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYWxmIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnlfc2NvcGUgc2NvcGUpOwojZW5kaWYgLy8gZGVmaW5lZChfX29wZW5jbF9jX2V4dF9mcDE2X2dsb2JhbF9hdG9taWNfbWluX21heCkKCiNpZiBkZWZpbmVkKF9fb3BlbmNsX2NfZXh0X2ZwMTZfbG9jYWxfYXRvbWljX21pbl9tYXgpCmhhbGYgX19vdmxkIGF0b21pY19mZXRjaF9taW4odm9sYXRpbGUgX19sb2NhbCBhdG9taWNfaGFsZiAqb2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbGYgb3BlcmFuZCk7CmhhbGYgX19vdmxkIGF0b21pY19mZXRjaF9tYXgodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfaGFsZiAqb2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbGYgb3BlcmFuZCk7CmhhbGYgX19vdmxkIGF0b21pY19mZXRjaF9taW5fZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfaGFsZiAqb2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbGYgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKaGFsZiBfX292bGQgYXRvbWljX2ZldGNoX21heF9leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19oYWxmICpvYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFsZiBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwpoYWxmIF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWluX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2hhbGYgKm9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYWxmIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnlfc2NvcGUgc2NvcGUpOwpoYWxmIF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWF4X2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2hhbGYgKm9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYWxmIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnlfc2NvcGUgc2NvcGUpOwojZW5kaWYgLy8gZGVmaW5lZChfX29wZW5jbF9jX2V4dF9mcDE2X2xvY2FsX2F0b21pY19taW5fbWF4KQoKI2lmIGRlZmluZWQoX19vcGVuY2xfY19leHRfZnAxNl9nbG9iYWxfYXRvbWljX21pbl9tYXgpICYmICAgICAgICAgICAgICAgICAgICAgIFwKICAgIGRlZmluZWQoX19vcGVuY2xfY19leHRfZnAxNl9sb2NhbF9hdG9taWNfbWluX21heCkKaGFsZiBfX292bGQgYXRvbWljX2ZldGNoX21pbih2b2xhdGlsZSBhdG9taWNfaGFsZiAqb2JqZWN0LCBoYWxmIG9wZXJhbmQpOwpoYWxmIF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWF4KHZvbGF0aWxlIGF0b21pY19oYWxmICpvYmplY3QsIGhhbGYgb3BlcmFuZCk7CmhhbGYgX19vdmxkIGF0b21pY19mZXRjaF9taW5fZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX2hhbGYgKm9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYWxmIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlcik7CmhhbGYgX19vdmxkIGF0b21pY19mZXRjaF9tYXhfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX2hhbGYgKm9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYWxmIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlcik7CmhhbGYgX19vdmxkIGF0b21pY19mZXRjaF9taW5fZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX2hhbGYgKm9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYWxmIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnlfc2NvcGUgc2NvcGUpOwpoYWxmIF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWF4X2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY19oYWxmICpvYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFsZiBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5X3Njb3BlIHNjb3BlKTsKI2VuZGlmIC8vIGRlZmluZWQoX19vcGVuY2xfY19leHRfZnAxNl9nbG9iYWxfYXRvbWljX21pbl9tYXgpICYmICAgICAgICAgICAgICAgIFwKICAgIGRlZmluZWQoX19vcGVuY2xfY19leHRfZnAxNl9sb2NhbF9hdG9taWNfbWluX21heCkKCiNpZiBkZWZpbmVkKF9fb3BlbmNsX2NfZXh0X2ZwMzJfZ2xvYmFsX2F0b21pY19taW5fbWF4KQpmbG9hdCBfX292bGQgYXRvbWljX2ZldGNoX21pbih2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfZmxvYXQgKm9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgb3BlcmFuZCk7CmZsb2F0IF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWF4KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19mbG9hdCAqb2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBvcGVyYW5kKTsKZmxvYXQgX19vdmxkIGF0b21pY19mZXRjaF9taW5fZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2Zsb2F0ICpvYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlcik7CmZsb2F0IF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWF4X2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19mbG9hdCAqb2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwpmbG9hdCBfX292bGQgYXRvbWljX2ZldGNoX21pbl9leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfZmxvYXQgKm9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnlfc2NvcGUgc2NvcGUpOwpmbG9hdCBfX292bGQgYXRvbWljX2ZldGNoX21heF9leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfZmxvYXQgKm9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnlfc2NvcGUgc2NvcGUpOwojZW5kaWYgLy8gZGVmaW5lZChfX29wZW5jbF9jX2V4dF9mcDMyX2dsb2JhbF9hdG9taWNfbWluX21heCkKCiNpZiBkZWZpbmVkKF9fb3BlbmNsX2NfZXh0X2ZwMzJfbG9jYWxfYXRvbWljX21pbl9tYXgpCmZsb2F0IF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWluKHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2Zsb2F0ICpvYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IG9wZXJhbmQpOwpmbG9hdCBfX292bGQgYXRvbWljX2ZldGNoX21heCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19mbG9hdCAqb2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBvcGVyYW5kKTsKZmxvYXQgX19vdmxkIGF0b21pY19mZXRjaF9taW5fZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfZmxvYXQgKm9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKZmxvYXQgX19vdmxkIGF0b21pY19mZXRjaF9tYXhfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfZmxvYXQgKm9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKZmxvYXQgX19vdmxkIGF0b21pY19mZXRjaF9taW5fZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfZmxvYXQgKm9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnlfc2NvcGUgc2NvcGUpOwpmbG9hdCBfX292bGQgYXRvbWljX2ZldGNoX21heF9leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19mbG9hdCAqb2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeV9zY29wZSBzY29wZSk7CiNlbmRpZiAvLyBkZWZpbmVkKF9fb3BlbmNsX2NfZXh0X2ZwMzJfbG9jYWxfYXRvbWljX21pbl9tYXgpCgojaWYgZGVmaW5lZChfX29wZW5jbF9jX2V4dF9mcDMyX2dsb2JhbF9hdG9taWNfbWluX21heCkgJiYgICAgICAgICAgICAgICAgICAgICAgXAogICAgZGVmaW5lZChfX29wZW5jbF9jX2V4dF9mcDMyX2xvY2FsX2F0b21pY19taW5fbWF4KQpmbG9hdCBfX292bGQgYXRvbWljX2ZldGNoX21pbih2b2xhdGlsZSBhdG9taWNfZmxvYXQgKm9iamVjdCwgZmxvYXQgb3BlcmFuZCk7CmZsb2F0IF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWF4KHZvbGF0aWxlIGF0b21pY19mbG9hdCAqb2JqZWN0LCBmbG9hdCBvcGVyYW5kKTsKZmxvYXQgX19vdmxkIGF0b21pY19mZXRjaF9taW5fZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX2Zsb2F0ICpvYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlcik7CmZsb2F0IF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWF4X2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY19mbG9hdCAqb2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwpmbG9hdCBfX292bGQgYXRvbWljX2ZldGNoX21pbl9leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfZmxvYXQgKm9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnlfc2NvcGUgc2NvcGUpOwpmbG9hdCBfX292bGQgYXRvbWljX2ZldGNoX21heF9leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfZmxvYXQgKm9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnlfc2NvcGUgc2NvcGUpOwojZW5kaWYgLy8gZGVmaW5lZChfX29wZW5jbF9jX2V4dF9mcDMyX2dsb2JhbF9hdG9taWNfbWluX21heCkgJiYgICAgICAgICAgICAgICAgXAogICAgZGVmaW5lZChfX29wZW5jbF9jX2V4dF9mcDMyX2xvY2FsX2F0b21pY19taW5fbWF4KQoKI2lmIGRlZmluZWQoX19vcGVuY2xfY19leHRfZnA2NF9nbG9iYWxfYXRvbWljX21pbl9tYXgpCmRvdWJsZSBfX292bGQgYXRvbWljX2ZldGNoX21pbih2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfZG91YmxlICpvYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgb3BlcmFuZCk7CmRvdWJsZSBfX292bGQgYXRvbWljX2ZldGNoX21heCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfZG91YmxlICpvYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgb3BlcmFuZCk7CmRvdWJsZSBfX292bGQgYXRvbWljX2ZldGNoX21pbl9leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfZG91YmxlICpvYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKZG91YmxlIF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWF4X2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19kb3VibGUgKm9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwpkb3VibGUgX19vdmxkIGF0b21pY19mZXRjaF9taW5fZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2RvdWJsZSAqb2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeV9zY29wZSBzY29wZSk7CmRvdWJsZSBfX292bGQgYXRvbWljX2ZldGNoX21heF9leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfZG91YmxlICpvYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5X3Njb3BlIHNjb3BlKTsKI2VuZGlmIC8vIGRlZmluZWQoX19vcGVuY2xfY19leHRfZnA2NF9nbG9iYWxfYXRvbWljX21pbl9tYXgpCgojaWYgZGVmaW5lZChfX29wZW5jbF9jX2V4dF9mcDY0X2xvY2FsX2F0b21pY19taW5fbWF4KQpkb3VibGUgX19vdmxkIGF0b21pY19mZXRjaF9taW4odm9sYXRpbGUgX19sb2NhbCBhdG9taWNfZG91YmxlICpvYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgb3BlcmFuZCk7CmRvdWJsZSBfX292bGQgYXRvbWljX2ZldGNoX21heCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19kb3VibGUgKm9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBvcGVyYW5kKTsKZG91YmxlIF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWluX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2RvdWJsZSAqb2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlcik7CmRvdWJsZSBfX292bGQgYXRvbWljX2ZldGNoX21heF9leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19kb3VibGUgKm9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwpkb3VibGUgX19vdmxkIGF0b21pY19mZXRjaF9taW5fZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfZG91YmxlICpvYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5X3Njb3BlIHNjb3BlKTsKZG91YmxlIF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWF4X2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2RvdWJsZSAqb2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeV9zY29wZSBzY29wZSk7CiNlbmRpZiAvLyBkZWZpbmVkKF9fb3BlbmNsX2NfZXh0X2ZwNjRfbG9jYWxfYXRvbWljX21pbl9tYXgpCgojaWYgZGVmaW5lZChfX29wZW5jbF9jX2V4dF9mcDY0X2dsb2JhbF9hdG9taWNfbWluX21heCkgJiYgICAgICAgICAgICAgICAgICAgICAgXAogICAgZGVmaW5lZChfX29wZW5jbF9jX2V4dF9mcDY0X2xvY2FsX2F0b21pY19taW5fbWF4KQpkb3VibGUgX19vdmxkIGF0b21pY19mZXRjaF9taW4odm9sYXRpbGUgYXRvbWljX2RvdWJsZSAqb2JqZWN0LCBkb3VibGUgb3BlcmFuZCk7CmRvdWJsZSBfX292bGQgYXRvbWljX2ZldGNoX21heCh2b2xhdGlsZSBhdG9taWNfZG91YmxlICpvYmplY3QsIGRvdWJsZSBvcGVyYW5kKTsKZG91YmxlIF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWluX2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY19kb3VibGUgKm9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwpkb3VibGUgX19vdmxkIGF0b21pY19mZXRjaF9tYXhfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX2RvdWJsZSAqb2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlcik7CmRvdWJsZSBfX292bGQgYXRvbWljX2ZldGNoX21pbl9leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfZG91YmxlICpvYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5X3Njb3BlIHNjb3BlKTsKZG91YmxlIF9fb3ZsZCBhdG9taWNfZmV0Y2hfbWF4X2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY19kb3VibGUgKm9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnlfc2NvcGUgc2NvcGUpOwojZW5kaWYgLy8gZGVmaW5lZChfX29wZW5jbF9jX2V4dF9mcDY0X2dsb2JhbF9hdG9taWNfbWluX21heCkgJiYgICAgICAgICAgICAgICAgXAogICAgZGVmaW5lZChfX29wZW5jbF9jX2V4dF9mcDY0X2xvY2FsX2F0b21pY19taW5fbWF4KQoKI2lmIGRlZmluZWQoX19vcGVuY2xfY19leHRfZnAxNl9nbG9iYWxfYXRvbWljX2FkZCkKaGFsZiBfX292bGQgYXRvbWljX2ZldGNoX2FkZCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfaGFsZiAqb2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbGYgb3BlcmFuZCk7CmhhbGYgX19vdmxkIGF0b21pY19mZXRjaF9zdWIodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2hhbGYgKm9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYWxmIG9wZXJhbmQpOwpoYWxmIF9fb3ZsZCBhdG9taWNfZmV0Y2hfYWRkX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19oYWxmICpvYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFsZiBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwpoYWxmIF9fb3ZsZCBhdG9taWNfZmV0Y2hfc3ViX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19oYWxmICpvYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFsZiBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwpoYWxmIF9fb3ZsZCBhdG9taWNfZmV0Y2hfYWRkX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19oYWxmICpvYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFsZiBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5X3Njb3BlIHNjb3BlKTsKaGFsZiBfX292bGQgYXRvbWljX2ZldGNoX3N1Yl9leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfaGFsZiAqb2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbGYgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeV9zY29wZSBzY29wZSk7CiNlbmRpZiAvLyBkZWZpbmVkKF9fb3BlbmNsX2NfZXh0X2ZwMTZfZ2xvYmFsX2F0b21pY19hZGQpCgojaWYgZGVmaW5lZChfX29wZW5jbF9jX2V4dF9mcDE2X2xvY2FsX2F0b21pY19hZGQpCmhhbGYgX19vdmxkIGF0b21pY19mZXRjaF9hZGQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfaGFsZiAqb2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbGYgb3BlcmFuZCk7CmhhbGYgX19vdmxkIGF0b21pY19mZXRjaF9zdWIodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfaGFsZiAqb2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbGYgb3BlcmFuZCk7CmhhbGYgX19vdmxkIGF0b21pY19mZXRjaF9hZGRfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfaGFsZiAqb2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbGYgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKaGFsZiBfX292bGQgYXRvbWljX2ZldGNoX3N1Yl9leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19oYWxmICpvYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFsZiBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwpoYWxmIF9fb3ZsZCBhdG9taWNfZmV0Y2hfYWRkX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2hhbGYgKm9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYWxmIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnlfc2NvcGUgc2NvcGUpOwpoYWxmIF9fb3ZsZCBhdG9taWNfZmV0Y2hfc3ViX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2hhbGYgKm9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYWxmIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnlfc2NvcGUgc2NvcGUpOwojZW5kaWYgLy8gZGVmaW5lZChfX29wZW5jbF9jX2V4dF9mcDE2X2xvY2FsX2F0b21pY19hZGQpCgojaWYgZGVmaW5lZChfX29wZW5jbF9jX2V4dF9mcDE2X2dsb2JhbF9hdG9taWNfYWRkKSAmJiAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgZGVmaW5lZChfX29wZW5jbF9jX2V4dF9mcDE2X2xvY2FsX2F0b21pY19hZGQpCmhhbGYgX19vdmxkIGF0b21pY19mZXRjaF9hZGQodm9sYXRpbGUgYXRvbWljX2hhbGYgKm9iamVjdCwgaGFsZiBvcGVyYW5kKTsKaGFsZiBfX292bGQgYXRvbWljX2ZldGNoX3N1Yih2b2xhdGlsZSBhdG9taWNfaGFsZiAqb2JqZWN0LCBoYWxmIG9wZXJhbmQpOwpoYWxmIF9fb3ZsZCBhdG9taWNfZmV0Y2hfYWRkX2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY19oYWxmICpvYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFsZiBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwpoYWxmIF9fb3ZsZCBhdG9taWNfZmV0Y2hfc3ViX2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY19oYWxmICpvYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFsZiBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwpoYWxmIF9fb3ZsZCBhdG9taWNfZmV0Y2hfYWRkX2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY19oYWxmICpvYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFsZiBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5X3Njb3BlIHNjb3BlKTsKaGFsZiBfX292bGQgYXRvbWljX2ZldGNoX3N1Yl9leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfaGFsZiAqb2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbGYgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeV9zY29wZSBzY29wZSk7CiNlbmRpZiAvLyBkZWZpbmVkKF9fb3BlbmNsX2NfZXh0X2ZwMTZfZ2xvYmFsX2F0b21pY19hZGQpICYmICAgICAgICAgICAgICAgICAgICBcCiAgICBkZWZpbmVkKF9fb3BlbmNsX2NfZXh0X2ZwMTZfbG9jYWxfYXRvbWljX2FkZCkKCiNpZiBkZWZpbmVkKF9fb3BlbmNsX2NfZXh0X2ZwMzJfZ2xvYmFsX2F0b21pY19hZGQpCmZsb2F0IF9fb3ZsZCBhdG9taWNfZmV0Y2hfYWRkKHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19mbG9hdCAqb2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBvcGVyYW5kKTsKZmxvYXQgX19vdmxkIGF0b21pY19mZXRjaF9zdWIodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2Zsb2F0ICpvYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IG9wZXJhbmQpOwpmbG9hdCBfX292bGQgYXRvbWljX2ZldGNoX2FkZF9leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfZmxvYXQgKm9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKZmxvYXQgX19vdmxkIGF0b21pY19mZXRjaF9zdWJfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2Zsb2F0ICpvYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlcik7CmZsb2F0IF9fb3ZsZCBhdG9taWNfZmV0Y2hfYWRkX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19mbG9hdCAqb2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeV9zY29wZSBzY29wZSk7CmZsb2F0IF9fb3ZsZCBhdG9taWNfZmV0Y2hfc3ViX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19mbG9hdCAqb2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeV9zY29wZSBzY29wZSk7CiNlbmRpZiAvLyBkZWZpbmVkKF9fb3BlbmNsX2NfZXh0X2ZwMzJfZ2xvYmFsX2F0b21pY19hZGQpCgojaWYgZGVmaW5lZChfX29wZW5jbF9jX2V4dF9mcDMyX2xvY2FsX2F0b21pY19hZGQpCmZsb2F0IF9fb3ZsZCBhdG9taWNfZmV0Y2hfYWRkKHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2Zsb2F0ICpvYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IG9wZXJhbmQpOwpmbG9hdCBfX292bGQgYXRvbWljX2ZldGNoX3N1Yih2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19mbG9hdCAqb2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBvcGVyYW5kKTsKZmxvYXQgX19vdmxkIGF0b21pY19mZXRjaF9hZGRfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfZmxvYXQgKm9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKZmxvYXQgX19vdmxkIGF0b21pY19mZXRjaF9zdWJfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfZmxvYXQgKm9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKZmxvYXQgX19vdmxkIGF0b21pY19mZXRjaF9hZGRfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfZmxvYXQgKm9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnlfc2NvcGUgc2NvcGUpOwpmbG9hdCBfX292bGQgYXRvbWljX2ZldGNoX3N1Yl9leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19mbG9hdCAqb2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeV9zY29wZSBzY29wZSk7CiNlbmRpZiAvLyBkZWZpbmVkKF9fb3BlbmNsX2NfZXh0X2ZwMzJfbG9jYWxfYXRvbWljX2FkZCkKCiNpZiBkZWZpbmVkKF9fb3BlbmNsX2NfZXh0X2ZwMzJfZ2xvYmFsX2F0b21pY19hZGQpICYmICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBkZWZpbmVkKF9fb3BlbmNsX2NfZXh0X2ZwMzJfbG9jYWxfYXRvbWljX2FkZCkKZmxvYXQgX19vdmxkIGF0b21pY19mZXRjaF9hZGQodm9sYXRpbGUgYXRvbWljX2Zsb2F0ICpvYmplY3QsIGZsb2F0IG9wZXJhbmQpOwpmbG9hdCBfX292bGQgYXRvbWljX2ZldGNoX3N1Yih2b2xhdGlsZSBhdG9taWNfZmxvYXQgKm9iamVjdCwgZmxvYXQgb3BlcmFuZCk7CmZsb2F0IF9fb3ZsZCBhdG9taWNfZmV0Y2hfYWRkX2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY19mbG9hdCAqb2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwpmbG9hdCBfX292bGQgYXRvbWljX2ZldGNoX3N1Yl9leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfZmxvYXQgKm9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKZmxvYXQgX19vdmxkIGF0b21pY19mZXRjaF9hZGRfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX2Zsb2F0ICpvYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5X3Njb3BlIHNjb3BlKTsKZmxvYXQgX19vdmxkIGF0b21pY19mZXRjaF9zdWJfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX2Zsb2F0ICpvYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5X3Njb3BlIHNjb3BlKTsKI2VuZGlmIC8vIGRlZmluZWQoX19vcGVuY2xfY19leHRfZnAzMl9nbG9iYWxfYXRvbWljX2FkZCkgJiYgICAgICAgICAgICAgICAgICAgIFwKICAgIGRlZmluZWQoX19vcGVuY2xfY19leHRfZnAzMl9sb2NhbF9hdG9taWNfYWRkKQoKI2lmIGRlZmluZWQoX19vcGVuY2xfY19leHRfZnA2NF9nbG9iYWxfYXRvbWljX2FkZCkKZG91YmxlIF9fb3ZsZCBhdG9taWNfZmV0Y2hfYWRkKHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19kb3VibGUgKm9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBvcGVyYW5kKTsKZG91YmxlIF9fb3ZsZCBhdG9taWNfZmV0Y2hfc3ViKHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19kb3VibGUgKm9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBvcGVyYW5kKTsKZG91YmxlIF9fb3ZsZCBhdG9taWNfZmV0Y2hfYWRkX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19kb3VibGUgKm9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwpkb3VibGUgX19vdmxkIGF0b21pY19mZXRjaF9zdWJfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2RvdWJsZSAqb2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlcik7CmRvdWJsZSBfX292bGQgYXRvbWljX2ZldGNoX2FkZF9leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfZG91YmxlICpvYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5X3Njb3BlIHNjb3BlKTsKZG91YmxlIF9fb3ZsZCBhdG9taWNfZmV0Y2hfc3ViX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19kb3VibGUgKm9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnlfc2NvcGUgc2NvcGUpOwojZW5kaWYgLy8gZGVmaW5lZChfX29wZW5jbF9jX2V4dF9mcDY0X2dsb2JhbF9hdG9taWNfYWRkKQoKI2lmIGRlZmluZWQoX19vcGVuY2xfY19leHRfZnA2NF9sb2NhbF9hdG9taWNfYWRkKQpkb3VibGUgX19vdmxkIGF0b21pY19mZXRjaF9hZGQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfZG91YmxlICpvYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgb3BlcmFuZCk7CmRvdWJsZSBfX292bGQgYXRvbWljX2ZldGNoX3N1Yih2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19kb3VibGUgKm9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBvcGVyYW5kKTsKZG91YmxlIF9fb3ZsZCBhdG9taWNfZmV0Y2hfYWRkX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2RvdWJsZSAqb2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlcik7CmRvdWJsZSBfX292bGQgYXRvbWljX2ZldGNoX3N1Yl9leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19kb3VibGUgKm9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwpkb3VibGUgX19vdmxkIGF0b21pY19mZXRjaF9hZGRfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfZG91YmxlICpvYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5X3Njb3BlIHNjb3BlKTsKZG91YmxlIF9fb3ZsZCBhdG9taWNfZmV0Y2hfc3ViX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2RvdWJsZSAqb2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeV9zY29wZSBzY29wZSk7CiNlbmRpZiAvLyBkZWZpbmVkKF9fb3BlbmNsX2NfZXh0X2ZwNjRfbG9jYWxfYXRvbWljX2FkZCkKCiNpZiBkZWZpbmVkKF9fb3BlbmNsX2NfZXh0X2ZwNjRfZ2xvYmFsX2F0b21pY19hZGQpICYmICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBkZWZpbmVkKF9fb3BlbmNsX2NfZXh0X2ZwNjRfbG9jYWxfYXRvbWljX2FkZCkKZG91YmxlIF9fb3ZsZCBhdG9taWNfZmV0Y2hfYWRkKHZvbGF0aWxlIGF0b21pY19kb3VibGUgKm9iamVjdCwgZG91YmxlIG9wZXJhbmQpOwpkb3VibGUgX19vdmxkIGF0b21pY19mZXRjaF9zdWIodm9sYXRpbGUgYXRvbWljX2RvdWJsZSAqb2JqZWN0LCBkb3VibGUgb3BlcmFuZCk7CmRvdWJsZSBfX292bGQgYXRvbWljX2ZldGNoX2FkZF9leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfZG91YmxlICpvYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKZG91YmxlIF9fb3ZsZCBhdG9taWNfZmV0Y2hfc3ViX2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY19kb3VibGUgKm9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBvcGVyYW5kLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwpkb3VibGUgX19vdmxkIGF0b21pY19mZXRjaF9hZGRfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX2RvdWJsZSAqb2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIG9wZXJhbmQsIG1lbW9yeV9vcmRlciBvcmRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeV9zY29wZSBzY29wZSk7CmRvdWJsZSBfX292bGQgYXRvbWljX2ZldGNoX3N1Yl9leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfZG91YmxlICpvYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgb3BlcmFuZCwgbWVtb3J5X29yZGVyIG9yZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5X3Njb3BlIHNjb3BlKTsKI2VuZGlmIC8vIGRlZmluZWQoX19vcGVuY2xfY19leHRfZnA2NF9nbG9iYWxfYXRvbWljX2FkZCkgJiYgICAgICAgICAgICAgICAgICAgIFwKICAgIGRlZmluZWQoX19vcGVuY2xfY19leHRfZnA2NF9sb2NhbF9hdG9taWNfYWRkKQoKI2VuZGlmIC8vIGNsX2V4dF9mbG9hdF9hdG9taWNzCgovLyBhdG9taWNfc3RvcmUoKQoKI2lmIGRlZmluZWQoX19vcGVuY2xfY19hdG9taWNfb3JkZXJfc2VxX2NzdCkgJiYgZGVmaW5lZChfX29wZW5jbF9jX2F0b21pY19zY29wZV9kZXZpY2UpCiNpZiBkZWZpbmVkKF9fb3BlbmNsX2NfZ2VuZXJpY19hZGRyZXNzX3NwYWNlKQp2b2lkIF9fb3ZsZCBhdG9taWNfc3RvcmUodm9sYXRpbGUgYXRvbWljX2ludCAqb2JqZWN0LCBpbnQgZGVzaXJlZCk7CnZvaWQgX19vdmxkIGF0b21pY19zdG9yZSh2b2xhdGlsZSBhdG9taWNfdWludCAqb2JqZWN0LCB1aW50IGRlc2lyZWQpOwp2b2lkIF9fb3ZsZCBhdG9taWNfc3RvcmUodm9sYXRpbGUgYXRvbWljX2Zsb2F0ICpvYmplY3QsIGZsb2F0IGRlc2lyZWQpOwoKI2lmIGRlZmluZWQoY2xfa2hyX2ludDY0X2Jhc2VfYXRvbWljcykgJiYgZGVmaW5lZChjbF9raHJfaW50NjRfZXh0ZW5kZWRfYXRvbWljcykKI2lmZGVmIGNsX2tocl9mcDY0CnZvaWQgX19vdmxkIGF0b21pY19zdG9yZSh2b2xhdGlsZSBhdG9taWNfZG91YmxlICpvYmplY3QsIGRvdWJsZSBkZXNpcmVkKTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKdm9pZCBfX292bGQgYXRvbWljX3N0b3JlKHZvbGF0aWxlIGF0b21pY19sb25nICpvYmplY3QsIGxvbmcgZGVzaXJlZCk7CnZvaWQgX19vdmxkIGF0b21pY19zdG9yZSh2b2xhdGlsZSBhdG9taWNfdWxvbmcgKm9iamVjdCwgdWxvbmcgZGVzaXJlZCk7CiNlbmRpZgojZW5kaWYgLy9kZWZpbmVkKF9fb3BlbmNsX2NfZ2VuZXJpY19hZGRyZXNzX3NwYWNlKQojaWYgKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fM18wIHx8IF9fT1BFTkNMX0NQUF9WRVJTSU9OX18gPj0gMjAyMTAwKQp2b2lkIF9fb3ZsZCBhdG9taWNfc3RvcmUodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2ludCAqb2JqZWN0LCBpbnQgZGVzaXJlZCk7CnZvaWQgX19vdmxkIGF0b21pY19zdG9yZSh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19pbnQgKm9iamVjdCwgaW50IGRlc2lyZWQpOwp2b2lkIF9fb3ZsZCBhdG9taWNfc3RvcmUodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX3VpbnQgKm9iamVjdCwgdWludCBkZXNpcmVkKTsKdm9pZCBfX292bGQgYXRvbWljX3N0b3JlKHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX3VpbnQgKm9iamVjdCwgdWludCBkZXNpcmVkKTsKdm9pZCBfX292bGQgYXRvbWljX3N0b3JlKHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19mbG9hdCAqb2JqZWN0LCBmbG9hdCBkZXNpcmVkKTsKdm9pZCBfX292bGQgYXRvbWljX3N0b3JlKHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2Zsb2F0ICpvYmplY3QsIGZsb2F0IGRlc2lyZWQpOwojaWYgZGVmaW5lZChjbF9raHJfaW50NjRfYmFzZV9hdG9taWNzKSAmJiBkZWZpbmVkKGNsX2tocl9pbnQ2NF9leHRlbmRlZF9hdG9taWNzKQojaWZkZWYgY2xfa2hyX2ZwNjQKdm9pZCBfX292bGQgYXRvbWljX3N0b3JlKHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19kb3VibGUgKm9iamVjdCwgZG91YmxlIGRlc2lyZWQpOwp2b2lkIF9fb3ZsZCBhdG9taWNfc3RvcmUodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfZG91YmxlICpvYmplY3QsIGRvdWJsZSBkZXNpcmVkKTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKdm9pZCBfX292bGQgYXRvbWljX3N0b3JlKHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19sb25nICpvYmplY3QsIGxvbmcgZGVzaXJlZCk7CnZvaWQgX19vdmxkIGF0b21pY19zdG9yZSh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19sb25nICpvYmplY3QsIGxvbmcgZGVzaXJlZCk7CnZvaWQgX19vdmxkIGF0b21pY19zdG9yZSh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfdWxvbmcgKm9iamVjdCwgdWxvbmcgZGVzaXJlZCk7CnZvaWQgX19vdmxkIGF0b21pY19zdG9yZSh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY191bG9uZyAqb2JqZWN0LCB1bG9uZyBkZXNpcmVkKTsKI2VuZGlmIC8vZGVmaW5lZChjbF9raHJfaW50NjRfYmFzZV9hdG9taWNzKSAmJiBkZWZpbmVkKGNsX2tocl9pbnQ2NF9leHRlbmRlZF9hdG9taWNzKQojZW5kaWYgLy8gKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fM18wIHx8IF9fT1BFTkNMX0NQUF9WRVJTSU9OX18gPj0gMjAyMTAwKQojZW5kaWYKCiNpZiBkZWZpbmVkKF9fb3BlbmNsX2NfYXRvbWljX3Njb3BlX2RldmljZSkKI2lmIGRlZmluZWQoX19vcGVuY2xfY19nZW5lcmljX2FkZHJlc3Nfc3BhY2UpCnZvaWQgX19vdmxkIGF0b21pY19zdG9yZV9leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfaW50ICpvYmplY3QsIGludCBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwp2b2lkIF9fb3ZsZCBhdG9taWNfc3RvcmVfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX3VpbnQgKm9iamVjdCwgdWludCBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwp2b2lkIF9fb3ZsZCBhdG9taWNfc3RvcmVfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX2Zsb2F0ICpvYmplY3QsIGZsb2F0IGRlc2lyZWQsIG1lbW9yeV9vcmRlciBvcmRlcik7CiNpZiBkZWZpbmVkKGNsX2tocl9pbnQ2NF9iYXNlX2F0b21pY3MpICYmIGRlZmluZWQoY2xfa2hyX2ludDY0X2V4dGVuZGVkX2F0b21pY3MpCiNpZmRlZiBjbF9raHJfZnA2NAp2b2lkIF9fb3ZsZCBhdG9taWNfc3RvcmVfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX2RvdWJsZSAqb2JqZWN0LCBkb3VibGUgZGVzaXJlZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKdm9pZCBfX292bGQgYXRvbWljX3N0b3JlX2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY19sb25nICpvYmplY3QsIGxvbmcgZGVzaXJlZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKdm9pZCBfX292bGQgYXRvbWljX3N0b3JlX2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY191bG9uZyAqb2JqZWN0LCB1bG9uZyBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwojZW5kaWYKI2VuZGlmIC8vZGVmaW5lZChfX29wZW5jbF9jX2dlbmVyaWNfYWRkcmVzc19zcGFjZSkKI2lmIChfX09QRU5DTF9DX1ZFUlNJT05fXyA+PSBDTF9WRVJTSU9OXzNfMCB8fCBfX09QRU5DTF9DUFBfVkVSU0lPTl9fID49IDIwMjEwMCkKdm9pZCBfX292bGQgYXRvbWljX3N0b3JlX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19pbnQgKm9iamVjdCwgaW50IGRlc2lyZWQsIG1lbW9yeV9vcmRlciBvcmRlcik7CnZvaWQgX19vdmxkIGF0b21pY19zdG9yZV9leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19pbnQgKm9iamVjdCwgaW50IGRlc2lyZWQsIG1lbW9yeV9vcmRlciBvcmRlcik7CnZvaWQgX19vdmxkIGF0b21pY19zdG9yZV9leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfdWludCAqb2JqZWN0LCB1aW50IGRlc2lyZWQsIG1lbW9yeV9vcmRlciBvcmRlcik7CnZvaWQgX19vdmxkIGF0b21pY19zdG9yZV9leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY191aW50ICpvYmplY3QsIHVpbnQgZGVzaXJlZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKdm9pZCBfX292bGQgYXRvbWljX3N0b3JlX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19mbG9hdCAqb2JqZWN0LCBmbG9hdCBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwp2b2lkIF9fb3ZsZCBhdG9taWNfc3RvcmVfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfZmxvYXQgKm9iamVjdCwgZmxvYXQgZGVzaXJlZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKI2lmIGRlZmluZWQoY2xfa2hyX2ludDY0X2Jhc2VfYXRvbWljcykgJiYgZGVmaW5lZChjbF9raHJfaW50NjRfZXh0ZW5kZWRfYXRvbWljcykKI2lmZGVmIGNsX2tocl9mcDY0CnZvaWQgX19vdmxkIGF0b21pY19zdG9yZV9leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfZG91YmxlICpvYmplY3QsIGRvdWJsZSBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwp2b2lkIF9fb3ZsZCBhdG9taWNfc3RvcmVfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfZG91YmxlICpvYmplY3QsIGRvdWJsZSBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwojZW5kaWYKdm9pZCBfX292bGQgYXRvbWljX3N0b3JlX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19sb25nICpvYmplY3QsIGxvbmcgZGVzaXJlZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKdm9pZCBfX292bGQgYXRvbWljX3N0b3JlX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2xvbmcgKm9iamVjdCwgbG9uZyBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwp2b2lkIF9fb3ZsZCBhdG9taWNfc3RvcmVfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX3Vsb25nICpvYmplY3QsIHVsb25nIGRlc2lyZWQsIG1lbW9yeV9vcmRlciBvcmRlcik7CnZvaWQgX19vdmxkIGF0b21pY19zdG9yZV9leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY191bG9uZyAqb2JqZWN0LCB1bG9uZyBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwojZW5kaWYgLy9kZWZpbmVkKGNsX2tocl9pbnQ2NF9iYXNlX2F0b21pY3MpICYmIGRlZmluZWQoY2xfa2hyX2ludDY0X2V4dGVuZGVkX2F0b21pY3MpCiNlbmRpZiAvLyAoX19PUEVOQ0xfQ19WRVJTSU9OX18gPj0gQ0xfVkVSU0lPTl8zXzAgfHwgX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXyA+PSAyMDIxMDApCiNlbmRpZgoKI2lmIGRlZmluZWQoX19vcGVuY2xfY19nZW5lcmljX2FkZHJlc3Nfc3BhY2UpCnZvaWQgX19vdmxkIGF0b21pY19zdG9yZV9leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfaW50ICpvYmplY3QsIGludCBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CnZvaWQgX19vdmxkIGF0b21pY19zdG9yZV9leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfdWludCAqb2JqZWN0LCB1aW50IGRlc2lyZWQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKdm9pZCBfX292bGQgYXRvbWljX3N0b3JlX2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY19mbG9hdCAqb2JqZWN0LCBmbG9hdCBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CiNpZiBkZWZpbmVkKGNsX2tocl9pbnQ2NF9iYXNlX2F0b21pY3MpICYmIGRlZmluZWQoY2xfa2hyX2ludDY0X2V4dGVuZGVkX2F0b21pY3MpCiNpZmRlZiBjbF9raHJfZnA2NAp2b2lkIF9fb3ZsZCBhdG9taWNfc3RvcmVfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX2RvdWJsZSAqb2JqZWN0LCBkb3VibGUgZGVzaXJlZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwojZW5kaWYgLy9jbF9raHJfZnA2NAp2b2lkIF9fb3ZsZCBhdG9taWNfc3RvcmVfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX2xvbmcgKm9iamVjdCwgbG9uZyBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CnZvaWQgX19vdmxkIGF0b21pY19zdG9yZV9leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfdWxvbmcgKm9iamVjdCwgdWxvbmcgZGVzaXJlZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwojZW5kaWYKI2VuZGlmIC8vZGVmaW5lZChfX29wZW5jbF9jX2dlbmVyaWNfYWRkcmVzc19zcGFjZSkKI2lmIChfX09QRU5DTF9DX1ZFUlNJT05fXyA+PSBDTF9WRVJTSU9OXzNfMCB8fCBfX09QRU5DTF9DUFBfVkVSU0lPTl9fID49IDIwMjEwMCkKdm9pZCBfX292bGQgYXRvbWljX3N0b3JlX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19pbnQgKm9iamVjdCwgaW50IGRlc2lyZWQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKdm9pZCBfX292bGQgYXRvbWljX3N0b3JlX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2ludCAqb2JqZWN0LCBpbnQgZGVzaXJlZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwp2b2lkIF9fb3ZsZCBhdG9taWNfc3RvcmVfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX3VpbnQgKm9iamVjdCwgdWludCBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CnZvaWQgX19vdmxkIGF0b21pY19zdG9yZV9leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY191aW50ICpvYmplY3QsIHVpbnQgZGVzaXJlZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwp2b2lkIF9fb3ZsZCBhdG9taWNfc3RvcmVfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2Zsb2F0ICpvYmplY3QsIGZsb2F0IGRlc2lyZWQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKdm9pZCBfX292bGQgYXRvbWljX3N0b3JlX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2Zsb2F0ICpvYmplY3QsIGZsb2F0IGRlc2lyZWQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKI2lmIGRlZmluZWQoY2xfa2hyX2ludDY0X2Jhc2VfYXRvbWljcykgJiYgZGVmaW5lZChjbF9raHJfaW50NjRfZXh0ZW5kZWRfYXRvbWljcykKI2lmZGVmIGNsX2tocl9mcDY0CnZvaWQgX19vdmxkIGF0b21pY19zdG9yZV9leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfZG91YmxlICpvYmplY3QsIGRvdWJsZSBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CnZvaWQgX19vdmxkIGF0b21pY19zdG9yZV9leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19kb3VibGUgKm9iamVjdCwgZG91YmxlIGRlc2lyZWQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKdm9pZCBfX292bGQgYXRvbWljX3N0b3JlX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19sb25nICpvYmplY3QsIGxvbmcgZGVzaXJlZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwp2b2lkIF9fb3ZsZCBhdG9taWNfc3RvcmVfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfbG9uZyAqb2JqZWN0LCBsb25nIGRlc2lyZWQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKdm9pZCBfX292bGQgYXRvbWljX3N0b3JlX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY191bG9uZyAqb2JqZWN0LCB1bG9uZyBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CnZvaWQgX19vdmxkIGF0b21pY19zdG9yZV9leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY191bG9uZyAqb2JqZWN0LCB1bG9uZyBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CiNlbmRpZiAvL2RlZmluZWQoY2xfa2hyX2ludDY0X2Jhc2VfYXRvbWljcykgJiYgZGVmaW5lZChjbF9raHJfaW50NjRfZXh0ZW5kZWRfYXRvbWljcykKI2VuZGlmIC8vIChfX09QRU5DTF9DX1ZFUlNJT05fXyA+PSBDTF9WRVJTSU9OXzNfMCB8fCBfX09QRU5DTF9DUFBfVkVSU0lPTl9fID49IDIwMjEwMCkKCi8vIGF0b21pY19sb2FkKCkKI2lmIGRlZmluZWQoX19vcGVuY2xfY19hdG9taWNfb3JkZXJfc2VxX2NzdCkgJiYgZGVmaW5lZChfX29wZW5jbF9jX2F0b21pY19zY29wZV9kZXZpY2UpCiNpZiBkZWZpbmVkKF9fb3BlbmNsX2NfZ2VuZXJpY19hZGRyZXNzX3NwYWNlKQppbnQgX19vdmxkIGF0b21pY19sb2FkKHZvbGF0aWxlIGF0b21pY19pbnQgKm9iamVjdCk7CnVpbnQgX19vdmxkIGF0b21pY19sb2FkKHZvbGF0aWxlIGF0b21pY191aW50ICpvYmplY3QpOwpmbG9hdCBfX292bGQgYXRvbWljX2xvYWQodm9sYXRpbGUgYXRvbWljX2Zsb2F0ICpvYmplY3QpOwojaWYgZGVmaW5lZChjbF9raHJfaW50NjRfYmFzZV9hdG9taWNzKSAmJiBkZWZpbmVkKGNsX2tocl9pbnQ2NF9leHRlbmRlZF9hdG9taWNzKQojaWZkZWYgY2xfa2hyX2ZwNjQKZG91YmxlIF9fb3ZsZCBhdG9taWNfbG9hZCh2b2xhdGlsZSBhdG9taWNfZG91YmxlICpvYmplY3QpOwojZW5kaWYgLy9jbF9raHJfZnA2NApsb25nIF9fb3ZsZCBhdG9taWNfbG9hZCh2b2xhdGlsZSBhdG9taWNfbG9uZyAqb2JqZWN0KTsKdWxvbmcgX19vdmxkIGF0b21pY19sb2FkKHZvbGF0aWxlIGF0b21pY191bG9uZyAqb2JqZWN0KTsKI2VuZGlmCiNlbmRpZiAvL2RlZmluZWQoX19vcGVuY2xfY19nZW5lcmljX2FkZHJlc3Nfc3BhY2UpCiNpZiAoX19PUEVOQ0xfQ19WRVJTSU9OX18gPj0gQ0xfVkVSU0lPTl8zXzAgfHwgX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXyA+PSAyMDIxMDApCmludCBfX292bGQgYXRvbWljX2xvYWQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2ludCAqb2JqZWN0KTsKaW50IF9fb3ZsZCBhdG9taWNfbG9hZCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19pbnQgKm9iamVjdCk7CnVpbnQgX19vdmxkIGF0b21pY19sb2FkKHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY191aW50ICpvYmplY3QpOwp1aW50IF9fb3ZsZCBhdG9taWNfbG9hZCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY191aW50ICpvYmplY3QpOwpmbG9hdCBfX292bGQgYXRvbWljX2xvYWQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2Zsb2F0ICpvYmplY3QpOwpmbG9hdCBfX292bGQgYXRvbWljX2xvYWQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfZmxvYXQgKm9iamVjdCk7CiNpZiBkZWZpbmVkKGNsX2tocl9pbnQ2NF9iYXNlX2F0b21pY3MpICYmIGRlZmluZWQoY2xfa2hyX2ludDY0X2V4dGVuZGVkX2F0b21pY3MpCiNpZmRlZiBjbF9raHJfZnA2NApkb3VibGUgX19vdmxkIGF0b21pY19sb2FkKHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19kb3VibGUgKm9iamVjdCk7CmRvdWJsZSBfX292bGQgYXRvbWljX2xvYWQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfZG91YmxlICpvYmplY3QpOwojZW5kaWYgLy9jbF9raHJfZnA2NApsb25nIF9fb3ZsZCBhdG9taWNfbG9hZCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfbG9uZyAqb2JqZWN0KTsKbG9uZyBfX292bGQgYXRvbWljX2xvYWQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfbG9uZyAqb2JqZWN0KTsKdWxvbmcgX19vdmxkIGF0b21pY19sb2FkKHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY191bG9uZyAqb2JqZWN0KTsKdWxvbmcgX19vdmxkIGF0b21pY19sb2FkKHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX3Vsb25nICpvYmplY3QpOwojZW5kaWYgLy9kZWZpbmVkKGNsX2tocl9pbnQ2NF9iYXNlX2F0b21pY3MpICYmIGRlZmluZWQoY2xfa2hyX2ludDY0X2V4dGVuZGVkX2F0b21pY3MpCiNlbmRpZiAvLyAoX19PUEVOQ0xfQ19WRVJTSU9OX18gPj0gQ0xfVkVSU0lPTl8zXzAgfHwgX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXyA+PSAyMDIxMDApCiNlbmRpZgoKI2lmIGRlZmluZWQoX19vcGVuY2xfY19hdG9taWNfc2NvcGVfZGV2aWNlKQojaWYgZGVmaW5lZChfX29wZW5jbF9jX2dlbmVyaWNfYWRkcmVzc19zcGFjZSkKaW50IF9fb3ZsZCBhdG9taWNfbG9hZF9leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfaW50ICpvYmplY3QsIG1lbW9yeV9vcmRlciBvcmRlcik7CnVpbnQgX19vdmxkIGF0b21pY19sb2FkX2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY191aW50ICpvYmplY3QsIG1lbW9yeV9vcmRlciBvcmRlcik7CmZsb2F0IF9fb3ZsZCBhdG9taWNfbG9hZF9leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfZmxvYXQgKm9iamVjdCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKI2lmIGRlZmluZWQoY2xfa2hyX2ludDY0X2Jhc2VfYXRvbWljcykgJiYgZGVmaW5lZChjbF9raHJfaW50NjRfZXh0ZW5kZWRfYXRvbWljcykKI2lmZGVmIGNsX2tocl9mcDY0CmRvdWJsZSBfX292bGQgYXRvbWljX2xvYWRfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX2RvdWJsZSAqb2JqZWN0LCBtZW1vcnlfb3JkZXIgb3JkZXIpOwojZW5kaWYgLy9jbF9raHJfZnA2NApsb25nIF9fb3ZsZCBhdG9taWNfbG9hZF9leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfbG9uZyAqb2JqZWN0LCBtZW1vcnlfb3JkZXIgb3JkZXIpOwp1bG9uZyBfX292bGQgYXRvbWljX2xvYWRfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX3Vsb25nICpvYmplY3QsIG1lbW9yeV9vcmRlciBvcmRlcik7CiNlbmRpZgojZW5kaWYgLy9kZWZpbmVkKF9fb3BlbmNsX2NfZ2VuZXJpY19hZGRyZXNzX3NwYWNlKQojaWYgKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fM18wIHx8IF9fT1BFTkNMX0NQUF9WRVJTSU9OX18gPj0gMjAyMTAwKQppbnQgX19vdmxkIGF0b21pY19sb2FkX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19pbnQgKm9iamVjdCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKaW50IF9fb3ZsZCBhdG9taWNfbG9hZF9leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19pbnQgKm9iamVjdCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKdWludCBfX292bGQgYXRvbWljX2xvYWRfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX3VpbnQgKm9iamVjdCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKdWludCBfX292bGQgYXRvbWljX2xvYWRfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfdWludCAqb2JqZWN0LCBtZW1vcnlfb3JkZXIgb3JkZXIpOwpmbG9hdCBfX292bGQgYXRvbWljX2xvYWRfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2Zsb2F0ICpvYmplY3QsIG1lbW9yeV9vcmRlciBvcmRlcik7CmZsb2F0IF9fb3ZsZCBhdG9taWNfbG9hZF9leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19mbG9hdCAqb2JqZWN0LCBtZW1vcnlfb3JkZXIgb3JkZXIpOwojaWYgZGVmaW5lZChjbF9raHJfaW50NjRfYmFzZV9hdG9taWNzKSAmJiBkZWZpbmVkKGNsX2tocl9pbnQ2NF9leHRlbmRlZF9hdG9taWNzKQojaWZkZWYgY2xfa2hyX2ZwNjQKZG91YmxlIF9fb3ZsZCBhdG9taWNfbG9hZF9leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfZG91YmxlICpvYmplY3QsIG1lbW9yeV9vcmRlciBvcmRlcik7CmRvdWJsZSBfX292bGQgYXRvbWljX2xvYWRfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfZG91YmxlICpvYmplY3QsIG1lbW9yeV9vcmRlciBvcmRlcik7CiNlbmRpZiAvL2NsX2tocl9mcDY0CmxvbmcgX19vdmxkIGF0b21pY19sb2FkX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19sb25nICpvYmplY3QsIG1lbW9yeV9vcmRlciBvcmRlcik7CmxvbmcgX19vdmxkIGF0b21pY19sb2FkX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2xvbmcgKm9iamVjdCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKdWxvbmcgX19vdmxkIGF0b21pY19sb2FkX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY191bG9uZyAqb2JqZWN0LCBtZW1vcnlfb3JkZXIgb3JkZXIpOwp1bG9uZyBfX292bGQgYXRvbWljX2xvYWRfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfdWxvbmcgKm9iamVjdCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKI2VuZGlmIC8vZGVmaW5lZChjbF9raHJfaW50NjRfYmFzZV9hdG9taWNzKSAmJiBkZWZpbmVkKGNsX2tocl9pbnQ2NF9leHRlbmRlZF9hdG9taWNzKQojZW5kaWYgLy8gKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fM18wIHx8IF9fT1BFTkNMX0NQUF9WRVJTSU9OX18gPj0gMjAyMTAwKQojZW5kaWYKCiNpZiBkZWZpbmVkKF9fb3BlbmNsX2NfZ2VuZXJpY19hZGRyZXNzX3NwYWNlKQppbnQgX19vdmxkIGF0b21pY19sb2FkX2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY19pbnQgKm9iamVjdCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwp1aW50IF9fb3ZsZCBhdG9taWNfbG9hZF9leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfdWludCAqb2JqZWN0LCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CmZsb2F0IF9fb3ZsZCBhdG9taWNfbG9hZF9leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfZmxvYXQgKm9iamVjdCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwojaWYgZGVmaW5lZChjbF9raHJfaW50NjRfYmFzZV9hdG9taWNzKSAmJiBkZWZpbmVkKGNsX2tocl9pbnQ2NF9leHRlbmRlZF9hdG9taWNzKQojaWZkZWYgY2xfa2hyX2ZwNjQKZG91YmxlIF9fb3ZsZCBhdG9taWNfbG9hZF9leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfZG91YmxlICpvYmplY3QsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKbG9uZyBfX292bGQgYXRvbWljX2xvYWRfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX2xvbmcgKm9iamVjdCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwp1bG9uZyBfX292bGQgYXRvbWljX2xvYWRfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX3Vsb25nICpvYmplY3QsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKI2VuZGlmCiNlbmRpZiAvL2RlZmluZWQoX19vcGVuY2xfY19nZW5lcmljX2FkZHJlc3Nfc3BhY2UpCiNpZiAoX19PUEVOQ0xfQ19WRVJTSU9OX18gPj0gQ0xfVkVSU0lPTl8zXzAgfHwgX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXyA+PSAyMDIxMDApCmludCBfX292bGQgYXRvbWljX2xvYWRfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2ludCAqb2JqZWN0LCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CmludCBfX292bGQgYXRvbWljX2xvYWRfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfaW50ICpvYmplY3QsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKdWludCBfX292bGQgYXRvbWljX2xvYWRfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX3VpbnQgKm9iamVjdCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwp1aW50IF9fb3ZsZCBhdG9taWNfbG9hZF9leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY191aW50ICpvYmplY3QsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKZmxvYXQgX19vdmxkIGF0b21pY19sb2FkX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19mbG9hdCAqb2JqZWN0LCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CmZsb2F0IF9fb3ZsZCBhdG9taWNfbG9hZF9leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19mbG9hdCAqb2JqZWN0LCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CiNpZiBkZWZpbmVkKGNsX2tocl9pbnQ2NF9iYXNlX2F0b21pY3MpICYmIGRlZmluZWQoY2xfa2hyX2ludDY0X2V4dGVuZGVkX2F0b21pY3MpCiNpZmRlZiBjbF9raHJfZnA2NApkb3VibGUgX19vdmxkIGF0b21pY19sb2FkX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19kb3VibGUgKm9iamVjdCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwpkb3VibGUgX19vdmxkIGF0b21pY19sb2FkX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2RvdWJsZSAqb2JqZWN0LCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CiNlbmRpZgpsb25nIF9fb3ZsZCBhdG9taWNfbG9hZF9leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfbG9uZyAqb2JqZWN0LCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CmxvbmcgX19vdmxkIGF0b21pY19sb2FkX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2xvbmcgKm9iamVjdCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwp1bG9uZyBfX292bGQgYXRvbWljX2xvYWRfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX3Vsb25nICpvYmplY3QsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKdWxvbmcgX19vdmxkIGF0b21pY19sb2FkX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX3Vsb25nICpvYmplY3QsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKI2VuZGlmIC8vZGVmaW5lZChjbF9raHJfaW50NjRfYmFzZV9hdG9taWNzKSAmJiBkZWZpbmVkKGNsX2tocl9pbnQ2NF9leHRlbmRlZF9hdG9taWNzKQojZW5kaWYgLy8gKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fM18wIHx8IF9fT1BFTkNMX0NQUF9WRVJTSU9OX18gPj0gMjAyMTAwKQoKLy8gYXRvbWljX2V4Y2hhbmdlKCkKCiNpZiBkZWZpbmVkKF9fb3BlbmNsX2NfYXRvbWljX29yZGVyX3NlcV9jc3QpICYmIGRlZmluZWQoX19vcGVuY2xfY19hdG9taWNfc2NvcGVfZGV2aWNlKQojaWYgZGVmaW5lZChfX29wZW5jbF9jX2dlbmVyaWNfYWRkcmVzc19zcGFjZSkKaW50IF9fb3ZsZCBhdG9taWNfZXhjaGFuZ2Uodm9sYXRpbGUgYXRvbWljX2ludCAqb2JqZWN0LCBpbnQgZGVzaXJlZCk7CnVpbnQgX19vdmxkIGF0b21pY19leGNoYW5nZSh2b2xhdGlsZSBhdG9taWNfdWludCAqb2JqZWN0LCB1aW50IGRlc2lyZWQpOwpmbG9hdCBfX292bGQgYXRvbWljX2V4Y2hhbmdlKHZvbGF0aWxlIGF0b21pY19mbG9hdCAqb2JqZWN0LCBmbG9hdCBkZXNpcmVkKTsKI2lmIGRlZmluZWQoY2xfa2hyX2ludDY0X2Jhc2VfYXRvbWljcykgJiYgZGVmaW5lZChjbF9raHJfaW50NjRfZXh0ZW5kZWRfYXRvbWljcykKI2lmZGVmIGNsX2tocl9mcDY0CmRvdWJsZSBfX292bGQgYXRvbWljX2V4Y2hhbmdlKHZvbGF0aWxlIGF0b21pY19kb3VibGUgKm9iamVjdCwgZG91YmxlIGRlc2lyZWQpOwojZW5kaWYgLy9jbF9raHJfZnA2NApsb25nIF9fb3ZsZCBhdG9taWNfZXhjaGFuZ2Uodm9sYXRpbGUgYXRvbWljX2xvbmcgKm9iamVjdCwgbG9uZyBkZXNpcmVkKTsKdWxvbmcgX19vdmxkIGF0b21pY19leGNoYW5nZSh2b2xhdGlsZSBhdG9taWNfdWxvbmcgKm9iamVjdCwgdWxvbmcgZGVzaXJlZCk7CiNlbmRpZgojZW5kaWYgLy9kZWZpbmVkKF9fb3BlbmNsX2NfZ2VuZXJpY19hZGRyZXNzX3NwYWNlKQojaWYgKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fM18wIHx8IF9fT1BFTkNMX0NQUF9WRVJTSU9OX18gPj0gMjAyMTAwKQppbnQgX19vdmxkIGF0b21pY19leGNoYW5nZSh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfaW50ICpvYmplY3QsIGludCBkZXNpcmVkKTsKaW50IF9fb3ZsZCBhdG9taWNfZXhjaGFuZ2Uodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfaW50ICpvYmplY3QsIGludCBkZXNpcmVkKTsKdWludCBfX292bGQgYXRvbWljX2V4Y2hhbmdlKHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY191aW50ICpvYmplY3QsIHVpbnQgZGVzaXJlZCk7CnVpbnQgX19vdmxkIGF0b21pY19leGNoYW5nZSh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY191aW50ICpvYmplY3QsIHVpbnQgZGVzaXJlZCk7CmZsb2F0IF9fb3ZsZCBhdG9taWNfZXhjaGFuZ2Uodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2Zsb2F0ICpvYmplY3QsIGZsb2F0IGRlc2lyZWQpOwpmbG9hdCBfX292bGQgYXRvbWljX2V4Y2hhbmdlKHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2Zsb2F0ICpvYmplY3QsIGZsb2F0IGRlc2lyZWQpOwojaWYgZGVmaW5lZChjbF9raHJfaW50NjRfYmFzZV9hdG9taWNzKSAmJiBkZWZpbmVkKGNsX2tocl9pbnQ2NF9leHRlbmRlZF9hdG9taWNzKQojaWZkZWYgY2xfa2hyX2ZwNjQKZG91YmxlIF9fb3ZsZCBhdG9taWNfZXhjaGFuZ2Uodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2RvdWJsZSAqb2JqZWN0LCBkb3VibGUgZGVzaXJlZCk7CmRvdWJsZSBfX292bGQgYXRvbWljX2V4Y2hhbmdlKHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2RvdWJsZSAqb2JqZWN0LCBkb3VibGUgZGVzaXJlZCk7CiNlbmRpZiAvL2NsX2tocl9mcDY0CmxvbmcgX19vdmxkIGF0b21pY19leGNoYW5nZSh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfbG9uZyAqb2JqZWN0LCBsb25nIGRlc2lyZWQpOwpsb25nIF9fb3ZsZCBhdG9taWNfZXhjaGFuZ2Uodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfbG9uZyAqb2JqZWN0LCBsb25nIGRlc2lyZWQpOwp1bG9uZyBfX292bGQgYXRvbWljX2V4Y2hhbmdlKHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY191bG9uZyAqb2JqZWN0LCB1bG9uZyBkZXNpcmVkKTsKdWxvbmcgX19vdmxkIGF0b21pY19leGNoYW5nZSh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY191bG9uZyAqb2JqZWN0LCB1bG9uZyBkZXNpcmVkKTsKI2VuZGlmIC8vZGVmaW5lZChjbF9raHJfaW50NjRfYmFzZV9hdG9taWNzKSAmJiBkZWZpbmVkKGNsX2tocl9pbnQ2NF9leHRlbmRlZF9hdG9taWNzKQojZW5kaWYgLy8gKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fM18wIHx8IF9fT1BFTkNMX0NQUF9WRVJTSU9OX18gPj0gMjAyMTAwKQojZW5kaWYKCiNpZiBkZWZpbmVkKF9fb3BlbmNsX2NfYXRvbWljX3Njb3BlX2RldmljZSkKI2lmIGRlZmluZWQoX19vcGVuY2xfY19nZW5lcmljX2FkZHJlc3Nfc3BhY2UpCmludCBfX292bGQgYXRvbWljX2V4Y2hhbmdlX2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY19pbnQgKm9iamVjdCwgaW50IGRlc2lyZWQsIG1lbW9yeV9vcmRlciBvcmRlcik7CnVpbnQgX19vdmxkIGF0b21pY19leGNoYW5nZV9leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfdWludCAqb2JqZWN0LCB1aW50IGRlc2lyZWQsIG1lbW9yeV9vcmRlciBvcmRlcik7CmZsb2F0IF9fb3ZsZCBhdG9taWNfZXhjaGFuZ2VfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX2Zsb2F0ICpvYmplY3QsIGZsb2F0IGRlc2lyZWQsIG1lbW9yeV9vcmRlciBvcmRlcik7CiNpZiBkZWZpbmVkKGNsX2tocl9pbnQ2NF9iYXNlX2F0b21pY3MpICYmIGRlZmluZWQoY2xfa2hyX2ludDY0X2V4dGVuZGVkX2F0b21pY3MpCiNpZmRlZiBjbF9raHJfZnA2NApkb3VibGUgX19vdmxkIGF0b21pY19leGNoYW5nZV9leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfZG91YmxlICpvYmplY3QsIGRvdWJsZSBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwojZW5kaWYgLy9jbF9raHJfZnA2NApsb25nIF9fb3ZsZCBhdG9taWNfZXhjaGFuZ2VfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX2xvbmcgKm9iamVjdCwgbG9uZyBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwp1bG9uZyBfX292bGQgYXRvbWljX2V4Y2hhbmdlX2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY191bG9uZyAqb2JqZWN0LCB1bG9uZyBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwojZW5kaWYKI2VuZGlmIC8vZGVmaW5lZChfX29wZW5jbF9jX2dlbmVyaWNfYWRkcmVzc19zcGFjZSkKI2lmIChfX09QRU5DTF9DX1ZFUlNJT05fXyA+PSBDTF9WRVJTSU9OXzNfMCB8fCBfX09QRU5DTF9DUFBfVkVSU0lPTl9fID49IDIwMjEwMCkKaW50IF9fb3ZsZCBhdG9taWNfZXhjaGFuZ2VfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2ludCAqb2JqZWN0LCBpbnQgZGVzaXJlZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKaW50IF9fb3ZsZCBhdG9taWNfZXhjaGFuZ2VfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfaW50ICpvYmplY3QsIGludCBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwp1aW50IF9fb3ZsZCBhdG9taWNfZXhjaGFuZ2VfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX3VpbnQgKm9iamVjdCwgdWludCBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwp1aW50IF9fb3ZsZCBhdG9taWNfZXhjaGFuZ2VfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfdWludCAqb2JqZWN0LCB1aW50IGRlc2lyZWQsIG1lbW9yeV9vcmRlciBvcmRlcik7CmZsb2F0IF9fb3ZsZCBhdG9taWNfZXhjaGFuZ2VfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2Zsb2F0ICpvYmplY3QsIGZsb2F0IGRlc2lyZWQsIG1lbW9yeV9vcmRlciBvcmRlcik7CmZsb2F0IF9fb3ZsZCBhdG9taWNfZXhjaGFuZ2VfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfZmxvYXQgKm9iamVjdCwgZmxvYXQgZGVzaXJlZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKI2lmIGRlZmluZWQoY2xfa2hyX2ludDY0X2Jhc2VfYXRvbWljcykgJiYgZGVmaW5lZChjbF9raHJfaW50NjRfZXh0ZW5kZWRfYXRvbWljcykKI2lmZGVmIGNsX2tocl9mcDY0CmRvdWJsZSBfX292bGQgYXRvbWljX2V4Y2hhbmdlX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19kb3VibGUgKm9iamVjdCwgZG91YmxlIGRlc2lyZWQsIG1lbW9yeV9vcmRlciBvcmRlcik7CmRvdWJsZSBfX292bGQgYXRvbWljX2V4Y2hhbmdlX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2RvdWJsZSAqb2JqZWN0LCBkb3VibGUgZGVzaXJlZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKbG9uZyBfX292bGQgYXRvbWljX2V4Y2hhbmdlX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19sb25nICpvYmplY3QsIGxvbmcgZGVzaXJlZCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKbG9uZyBfX292bGQgYXRvbWljX2V4Y2hhbmdlX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2xvbmcgKm9iamVjdCwgbG9uZyBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwp1bG9uZyBfX292bGQgYXRvbWljX2V4Y2hhbmdlX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY191bG9uZyAqb2JqZWN0LCB1bG9uZyBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgb3JkZXIpOwp1bG9uZyBfX292bGQgYXRvbWljX2V4Y2hhbmdlX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX3Vsb25nICpvYmplY3QsIHVsb25nIGRlc2lyZWQsIG1lbW9yeV9vcmRlciBvcmRlcik7CiNlbmRpZiAvL2RlZmluZWQoY2xfa2hyX2ludDY0X2Jhc2VfYXRvbWljcykgJiYgZGVmaW5lZChjbF9raHJfaW50NjRfZXh0ZW5kZWRfYXRvbWljcyl3aQojZW5kaWYgLy8gKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fM18wIHx8IF9fT1BFTkNMX0NQUF9WRVJTSU9OX18gPj0gMjAyMTAwKQojZW5kaWYKCiNpZiBkZWZpbmVkKF9fb3BlbmNsX2NfZ2VuZXJpY19hZGRyZXNzX3NwYWNlKQppbnQgX19vdmxkIGF0b21pY19leGNoYW5nZV9leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfaW50ICpvYmplY3QsIGludCBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CnVpbnQgX19vdmxkIGF0b21pY19leGNoYW5nZV9leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfdWludCAqb2JqZWN0LCB1aW50IGRlc2lyZWQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKZmxvYXQgX19vdmxkIGF0b21pY19leGNoYW5nZV9leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfZmxvYXQgKm9iamVjdCwgZmxvYXQgZGVzaXJlZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwojaWYgZGVmaW5lZChjbF9raHJfaW50NjRfYmFzZV9hdG9taWNzKSAmJiBkZWZpbmVkKGNsX2tocl9pbnQ2NF9leHRlbmRlZF9hdG9taWNzKQojaWZkZWYgY2xfa2hyX2ZwNjQKZG91YmxlIF9fb3ZsZCBhdG9taWNfZXhjaGFuZ2VfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX2RvdWJsZSAqb2JqZWN0LCBkb3VibGUgZGVzaXJlZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwojZW5kaWYgLy9jbF9raHJfZnA2NApsb25nIF9fb3ZsZCBhdG9taWNfZXhjaGFuZ2VfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX2xvbmcgKm9iamVjdCwgbG9uZyBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CnVsb25nIF9fb3ZsZCBhdG9taWNfZXhjaGFuZ2VfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX3Vsb25nICpvYmplY3QsIHVsb25nIGRlc2lyZWQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKI2VuZGlmCiNlbmRpZiAvL2RlZmluZWQoX19vcGVuY2xfY19nZW5lcmljX2FkZHJlc3Nfc3BhY2UpCiNpZiAoX19PUEVOQ0xfQ19WRVJTSU9OX18gPj0gQ0xfVkVSU0lPTl8zXzAgfHwgX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXyA+PSAyMDIxMDApCmludCBfX292bGQgYXRvbWljX2V4Y2hhbmdlX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19pbnQgKm9iamVjdCwgaW50IGRlc2lyZWQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKaW50IF9fb3ZsZCBhdG9taWNfZXhjaGFuZ2VfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfaW50ICpvYmplY3QsIGludCBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CnVpbnQgX19vdmxkIGF0b21pY19leGNoYW5nZV9leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfdWludCAqb2JqZWN0LCB1aW50IGRlc2lyZWQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKdWludCBfX292bGQgYXRvbWljX2V4Y2hhbmdlX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX3VpbnQgKm9iamVjdCwgdWludCBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CmZsb2F0IF9fb3ZsZCBhdG9taWNfZXhjaGFuZ2VfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2Zsb2F0ICpvYmplY3QsIGZsb2F0IGRlc2lyZWQsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKZmxvYXQgX19vdmxkIGF0b21pY19leGNoYW5nZV9leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19mbG9hdCAqb2JqZWN0LCBmbG9hdCBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CiNpZiBkZWZpbmVkKGNsX2tocl9pbnQ2NF9iYXNlX2F0b21pY3MpICYmIGRlZmluZWQoY2xfa2hyX2ludDY0X2V4dGVuZGVkX2F0b21pY3MpCiNpZmRlZiBjbF9raHJfZnA2NApkb3VibGUgX19vdmxkIGF0b21pY19leGNoYW5nZV9leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfZG91YmxlICpvYmplY3QsIGRvdWJsZSBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CmRvdWJsZSBfX292bGQgYXRvbWljX2V4Y2hhbmdlX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2RvdWJsZSAqb2JqZWN0LCBkb3VibGUgZGVzaXJlZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwojZW5kaWYgLy9jbF9raHJfZnA2NApsb25nIF9fb3ZsZCBhdG9taWNfZXhjaGFuZ2VfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2xvbmcgKm9iamVjdCwgbG9uZyBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CmxvbmcgX19vdmxkIGF0b21pY19leGNoYW5nZV9leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19sb25nICpvYmplY3QsIGxvbmcgZGVzaXJlZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwp1bG9uZyBfX292bGQgYXRvbWljX2V4Y2hhbmdlX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY191bG9uZyAqb2JqZWN0LCB1bG9uZyBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CnVsb25nIF9fb3ZsZCBhdG9taWNfZXhjaGFuZ2VfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfdWxvbmcgKm9iamVjdCwgdWxvbmcgZGVzaXJlZCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwojZW5kaWYgLy9kZWZpbmVkKGNsX2tocl9pbnQ2NF9iYXNlX2F0b21pY3MpICYmIGRlZmluZWQoY2xfa2hyX2ludDY0X2V4dGVuZGVkX2F0b21pY3MpCiNlbmRpZiAvLyAoX19PUEVOQ0xfQ19WRVJTSU9OX18gPj0gQ0xfVkVSU0lPTl8zXzAgfHwgX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXyA+PSAyMDIxMDApCgovLyBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmcoKSBhbmQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2VhaygpCiNpZiBkZWZpbmVkKF9fb3BlbmNsX2NfYXRvbWljX29yZGVyX3NlcV9jc3QpICYmIGRlZmluZWQoX19vcGVuY2xfY19hdG9taWNfc2NvcGVfZGV2aWNlKQojaWYgZGVmaW5lZChfX29wZW5jbF9jX2dlbmVyaWNfYWRkcmVzc19zcGFjZSkKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nKHZvbGF0aWxlIGF0b21pY19pbnQgKm9iamVjdCwgaW50ICpleHBlY3RlZCwgaW50IGRlc2lyZWQpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmcodm9sYXRpbGUgYXRvbWljX3VpbnQgKm9iamVjdCwgdWludCAqZXhwZWN0ZWQsIHVpbnQgZGVzaXJlZCk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWsodm9sYXRpbGUgYXRvbWljX2ludCAqb2JqZWN0LCBpbnQgKmV4cGVjdGVkLCBpbnQgZGVzaXJlZCk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWsodm9sYXRpbGUgYXRvbWljX3VpbnQgKm9iamVjdCwgdWludCAqZXhwZWN0ZWQsIHVpbnQgZGVzaXJlZCk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZyh2b2xhdGlsZSBhdG9taWNfZmxvYXQgKm9iamVjdCwgZmxvYXQgKmV4cGVjdGVkLCBmbG9hdCBkZXNpcmVkKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vhayh2b2xhdGlsZSBhdG9taWNfZmxvYXQgKm9iamVjdCwgZmxvYXQgKmV4cGVjdGVkLCBmbG9hdCBkZXNpcmVkKTsKI2lmIGRlZmluZWQoY2xfa2hyX2ludDY0X2Jhc2VfYXRvbWljcykgJiYgZGVmaW5lZChjbF9raHJfaW50NjRfZXh0ZW5kZWRfYXRvbWljcykKI2lmZGVmIGNsX2tocl9mcDY0CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZyh2b2xhdGlsZSBhdG9taWNfZG91YmxlICpvYmplY3QsIGRvdWJsZSAqZXhwZWN0ZWQsIGRvdWJsZSBkZXNpcmVkKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vhayh2b2xhdGlsZSBhdG9taWNfZG91YmxlICpvYmplY3QsIGRvdWJsZSAqZXhwZWN0ZWQsIGRvdWJsZSBkZXNpcmVkKTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nKHZvbGF0aWxlIGF0b21pY19sb25nICpvYmplY3QsIGxvbmcgKmV4cGVjdGVkLCBsb25nIGRlc2lyZWQpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrKHZvbGF0aWxlIGF0b21pY19sb25nICpvYmplY3QsIGxvbmcgKmV4cGVjdGVkLCBsb25nIGRlc2lyZWQpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmcodm9sYXRpbGUgYXRvbWljX3Vsb25nICpvYmplY3QsIHVsb25nICpleHBlY3RlZCwgdWxvbmcgZGVzaXJlZCk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWsodm9sYXRpbGUgYXRvbWljX3Vsb25nICpvYmplY3QsIHVsb25nICpleHBlY3RlZCwgdWxvbmcgZGVzaXJlZCk7CiNlbmRpZgojZW5kaWYgLy9kZWZpbmVkKF9fb3BlbmNsX2NfZ2VuZXJpY19hZGRyZXNzX3NwYWNlKQojaWYgKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fM18wIHx8IF9fT1BFTkNMX0NQUF9WRVJTSU9OX18gPj0gMjAyMTAwKQpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmcodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2ludCAqb2JqZWN0LCBfX2dsb2JhbCBpbnQgKmV4cGVjdGVkLCBpbnQgZGVzaXJlZCk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZyh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfaW50ICpvYmplY3QsIF9fbG9jYWwgaW50ICpleHBlY3RlZCwgaW50IGRlc2lyZWQpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmcodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2ludCAqb2JqZWN0LCBfX3ByaXZhdGUgaW50ICpleHBlY3RlZCwgaW50IGRlc2lyZWQpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmcodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfaW50ICpvYmplY3QsIF9fZ2xvYmFsIGludCAqZXhwZWN0ZWQsIGludCBkZXNpcmVkKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nKHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2ludCAqb2JqZWN0LCBfX2xvY2FsIGludCAqZXhwZWN0ZWQsIGludCBkZXNpcmVkKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nKHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2ludCAqb2JqZWN0LCBfX3ByaXZhdGUgaW50ICpleHBlY3RlZCwgaW50IGRlc2lyZWQpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmcodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX3VpbnQgKm9iamVjdCwgX19nbG9iYWwgdWludCAqZXhwZWN0ZWQsIHVpbnQgZGVzaXJlZCk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZyh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfdWludCAqb2JqZWN0LCBfX2xvY2FsIHVpbnQgKmV4cGVjdGVkLCB1aW50IGRlc2lyZWQpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmcodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX3VpbnQgKm9iamVjdCwgX19wcml2YXRlIHVpbnQgKmV4cGVjdGVkLCB1aW50IGRlc2lyZWQpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmcodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfdWludCAqb2JqZWN0LCBfX2dsb2JhbCB1aW50ICpleHBlY3RlZCwgdWludCBkZXNpcmVkKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nKHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX3VpbnQgKm9iamVjdCwgX19sb2NhbCB1aW50ICpleHBlY3RlZCwgdWludCBkZXNpcmVkKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nKHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX3VpbnQgKm9iamVjdCwgX19wcml2YXRlIHVpbnQgKmV4cGVjdGVkLCB1aW50IGRlc2lyZWQpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmcodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2Zsb2F0ICpvYmplY3QsIF9fZ2xvYmFsIGZsb2F0ICpleHBlY3RlZCwgZmxvYXQgZGVzaXJlZCk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZyh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfZmxvYXQgKm9iamVjdCwgX19sb2NhbCBmbG9hdCAqZXhwZWN0ZWQsIGZsb2F0IGRlc2lyZWQpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmcodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2Zsb2F0ICpvYmplY3QsIF9fcHJpdmF0ZSBmbG9hdCAqZXhwZWN0ZWQsIGZsb2F0IGRlc2lyZWQpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmcodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfZmxvYXQgKm9iamVjdCwgX19nbG9iYWwgZmxvYXQgKmV4cGVjdGVkLCBmbG9hdCBkZXNpcmVkKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nKHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2Zsb2F0ICpvYmplY3QsIF9fbG9jYWwgZmxvYXQgKmV4cGVjdGVkLCBmbG9hdCBkZXNpcmVkKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nKHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2Zsb2F0ICpvYmplY3QsIF9fcHJpdmF0ZSBmbG9hdCAqZXhwZWN0ZWQsIGZsb2F0IGRlc2lyZWQpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrKHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19pbnQgKm9iamVjdCwgX19nbG9iYWwgaW50ICpleHBlY3RlZCwgaW50IGRlc2lyZWQpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrKHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19pbnQgKm9iamVjdCwgX19sb2NhbCBpbnQgKmV4cGVjdGVkLCBpbnQgZGVzaXJlZCk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWsodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2ludCAqb2JqZWN0LCBfX3ByaXZhdGUgaW50ICpleHBlY3RlZCwgaW50IGRlc2lyZWQpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrKHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2ludCAqb2JqZWN0LCBfX2dsb2JhbCBpbnQgKmV4cGVjdGVkLCBpbnQgZGVzaXJlZCk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWsodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfaW50ICpvYmplY3QsIF9fbG9jYWwgaW50ICpleHBlY3RlZCwgaW50IGRlc2lyZWQpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrKHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2ludCAqb2JqZWN0LCBfX3ByaXZhdGUgaW50ICpleHBlY3RlZCwgaW50IGRlc2lyZWQpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrKHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY191aW50ICpvYmplY3QsIF9fZ2xvYmFsIHVpbnQgKmV4cGVjdGVkLCB1aW50IGRlc2lyZWQpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrKHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY191aW50ICpvYmplY3QsIF9fbG9jYWwgdWludCAqZXhwZWN0ZWQsIHVpbnQgZGVzaXJlZCk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWsodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX3VpbnQgKm9iamVjdCwgX19wcml2YXRlIHVpbnQgKmV4cGVjdGVkLCB1aW50IGRlc2lyZWQpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrKHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX3VpbnQgKm9iamVjdCwgX19nbG9iYWwgdWludCAqZXhwZWN0ZWQsIHVpbnQgZGVzaXJlZCk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWsodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfdWludCAqb2JqZWN0LCBfX2xvY2FsIHVpbnQgKmV4cGVjdGVkLCB1aW50IGRlc2lyZWQpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrKHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX3VpbnQgKm9iamVjdCwgX19wcml2YXRlIHVpbnQgKmV4cGVjdGVkLCB1aW50IGRlc2lyZWQpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrKHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19mbG9hdCAqb2JqZWN0LCBfX2dsb2JhbCBmbG9hdCAqZXhwZWN0ZWQsIGZsb2F0IGRlc2lyZWQpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrKHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19mbG9hdCAqb2JqZWN0LCBfX2xvY2FsIGZsb2F0ICpleHBlY3RlZCwgZmxvYXQgZGVzaXJlZCk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWsodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2Zsb2F0ICpvYmplY3QsIF9fcHJpdmF0ZSBmbG9hdCAqZXhwZWN0ZWQsIGZsb2F0IGRlc2lyZWQpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrKHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2Zsb2F0ICpvYmplY3QsIF9fZ2xvYmFsIGZsb2F0ICpleHBlY3RlZCwgZmxvYXQgZGVzaXJlZCk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWsodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfZmxvYXQgKm9iamVjdCwgX19sb2NhbCBmbG9hdCAqZXhwZWN0ZWQsIGZsb2F0IGRlc2lyZWQpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrKHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2Zsb2F0ICpvYmplY3QsIF9fcHJpdmF0ZSBmbG9hdCAqZXhwZWN0ZWQsIGZsb2F0IGRlc2lyZWQpOwojaWYgZGVmaW5lZChjbF9raHJfaW50NjRfYmFzZV9hdG9taWNzKSAmJiBkZWZpbmVkKGNsX2tocl9pbnQ2NF9leHRlbmRlZF9hdG9taWNzKQojaWZkZWYgY2xfa2hyX2ZwNjQKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nKHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19kb3VibGUgKm9iamVjdCwgX19nbG9iYWwgZG91YmxlICpleHBlY3RlZCwgZG91YmxlIGRlc2lyZWQpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmcodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2RvdWJsZSAqb2JqZWN0LCBfX2xvY2FsIGRvdWJsZSAqZXhwZWN0ZWQsIGRvdWJsZSBkZXNpcmVkKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nKHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19kb3VibGUgKm9iamVjdCwgX19wcml2YXRlIGRvdWJsZSAqZXhwZWN0ZWQsIGRvdWJsZSBkZXNpcmVkKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nKHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2RvdWJsZSAqb2JqZWN0LCBfX2dsb2JhbCBkb3VibGUgKmV4cGVjdGVkLCBkb3VibGUgZGVzaXJlZCk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZyh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19kb3VibGUgKm9iamVjdCwgX19sb2NhbCBkb3VibGUgKmV4cGVjdGVkLCBkb3VibGUgZGVzaXJlZCk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZyh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19kb3VibGUgKm9iamVjdCwgX19wcml2YXRlIGRvdWJsZSAqZXhwZWN0ZWQsIGRvdWJsZSBkZXNpcmVkKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vhayh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfZG91YmxlICpvYmplY3QsIF9fZ2xvYmFsIGRvdWJsZSAqZXhwZWN0ZWQsIGRvdWJsZSBkZXNpcmVkKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vhayh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfZG91YmxlICpvYmplY3QsIF9fbG9jYWwgZG91YmxlICpleHBlY3RlZCwgZG91YmxlIGRlc2lyZWQpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrKHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19kb3VibGUgKm9iamVjdCwgX19wcml2YXRlIGRvdWJsZSAqZXhwZWN0ZWQsIGRvdWJsZSBkZXNpcmVkKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vhayh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19kb3VibGUgKm9iamVjdCwgX19nbG9iYWwgZG91YmxlICpleHBlY3RlZCwgZG91YmxlIGRlc2lyZWQpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrKHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2RvdWJsZSAqb2JqZWN0LCBfX2xvY2FsIGRvdWJsZSAqZXhwZWN0ZWQsIGRvdWJsZSBkZXNpcmVkKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vhayh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19kb3VibGUgKm9iamVjdCwgX19wcml2YXRlIGRvdWJsZSAqZXhwZWN0ZWQsIGRvdWJsZSBkZXNpcmVkKTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nKHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19sb25nICpvYmplY3QsIF9fZ2xvYmFsIGxvbmcgKmV4cGVjdGVkLCBsb25nIGRlc2lyZWQpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmcodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2xvbmcgKm9iamVjdCwgX19sb2NhbCBsb25nICpleHBlY3RlZCwgbG9uZyBkZXNpcmVkKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nKHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19sb25nICpvYmplY3QsIF9fcHJpdmF0ZSBsb25nICpleHBlY3RlZCwgbG9uZyBkZXNpcmVkKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nKHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2xvbmcgKm9iamVjdCwgX19nbG9iYWwgbG9uZyAqZXhwZWN0ZWQsIGxvbmcgZGVzaXJlZCk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZyh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19sb25nICpvYmplY3QsIF9fbG9jYWwgbG9uZyAqZXhwZWN0ZWQsIGxvbmcgZGVzaXJlZCk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZyh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19sb25nICpvYmplY3QsIF9fcHJpdmF0ZSBsb25nICpleHBlY3RlZCwgbG9uZyBkZXNpcmVkKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nKHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY191bG9uZyAqb2JqZWN0LCBfX2dsb2JhbCB1bG9uZyAqZXhwZWN0ZWQsIHVsb25nIGRlc2lyZWQpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmcodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX3Vsb25nICpvYmplY3QsIF9fbG9jYWwgdWxvbmcgKmV4cGVjdGVkLCB1bG9uZyBkZXNpcmVkKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nKHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY191bG9uZyAqb2JqZWN0LCBfX3ByaXZhdGUgdWxvbmcgKmV4cGVjdGVkLCB1bG9uZyBkZXNpcmVkKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nKHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX3Vsb25nICpvYmplY3QsIF9fZ2xvYmFsIHVsb25nICpleHBlY3RlZCwgdWxvbmcgZGVzaXJlZCk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZyh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY191bG9uZyAqb2JqZWN0LCBfX2xvY2FsIHVsb25nICpleHBlY3RlZCwgdWxvbmcgZGVzaXJlZCk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZyh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY191bG9uZyAqb2JqZWN0LCBfX3ByaXZhdGUgdWxvbmcgKmV4cGVjdGVkLCB1bG9uZyBkZXNpcmVkKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vhayh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfbG9uZyAqb2JqZWN0LCBfX2dsb2JhbCBsb25nICpleHBlY3RlZCwgbG9uZyBkZXNpcmVkKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vhayh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfbG9uZyAqb2JqZWN0LCBfX2xvY2FsIGxvbmcgKmV4cGVjdGVkLCBsb25nIGRlc2lyZWQpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrKHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19sb25nICpvYmplY3QsIF9fcHJpdmF0ZSBsb25nICpleHBlY3RlZCwgbG9uZyBkZXNpcmVkKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vhayh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19sb25nICpvYmplY3QsIF9fZ2xvYmFsIGxvbmcgKmV4cGVjdGVkLCBsb25nIGRlc2lyZWQpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrKHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2xvbmcgKm9iamVjdCwgX19sb2NhbCBsb25nICpleHBlY3RlZCwgbG9uZyBkZXNpcmVkKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vhayh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19sb25nICpvYmplY3QsIF9fcHJpdmF0ZSBsb25nICpleHBlY3RlZCwgbG9uZyBkZXNpcmVkKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vhayh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfdWxvbmcgKm9iamVjdCwgX19nbG9iYWwgdWxvbmcgKmV4cGVjdGVkLCB1bG9uZyBkZXNpcmVkKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vhayh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfdWxvbmcgKm9iamVjdCwgX19sb2NhbCB1bG9uZyAqZXhwZWN0ZWQsIHVsb25nIGRlc2lyZWQpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrKHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY191bG9uZyAqb2JqZWN0LCBfX3ByaXZhdGUgdWxvbmcgKmV4cGVjdGVkLCB1bG9uZyBkZXNpcmVkKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vhayh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY191bG9uZyAqb2JqZWN0LCBfX2dsb2JhbCB1bG9uZyAqZXhwZWN0ZWQsIHVsb25nIGRlc2lyZWQpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrKHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX3Vsb25nICpvYmplY3QsIF9fbG9jYWwgdWxvbmcgKmV4cGVjdGVkLCB1bG9uZyBkZXNpcmVkKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vhayh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY191bG9uZyAqb2JqZWN0LCBfX3ByaXZhdGUgdWxvbmcgKmV4cGVjdGVkLCB1bG9uZyBkZXNpcmVkKTsKI2VuZGlmIC8vZGVmaW5lZChjbF9raHJfaW50NjRfYmFzZV9hdG9taWNzKSAmJiBkZWZpbmVkKGNsX2tocl9pbnQ2NF9leHRlbmRlZF9hdG9taWNzKQojZW5kaWYgLy8gKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fM18wIHx8IF9fT1BFTkNMX0NQUF9WRVJTSU9OX18gPj0gMjAyMTAwKQojZW5kaWYKCiNpZiBkZWZpbmVkKF9fb3BlbmNsX2NfZ2VuZXJpY19hZGRyZXNzX3NwYWNlKQpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmdfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX2ludCAqb2JqZWN0LCBpbnQgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nX2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY191aW50ICpvYmplY3QsIHVpbnQgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50IGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWtfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX2ludCAqb2JqZWN0LCBpbnQgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vha19leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfdWludCAqb2JqZWN0LCB1aW50ICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludCBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmdfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX2Zsb2F0ICpvYmplY3QsIGZsb2F0ICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vha19leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfZmxvYXQgKm9iamVjdCwgZmxvYXQgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUpOwojaWYgZGVmaW5lZChjbF9raHJfaW50NjRfYmFzZV9hdG9taWNzKSAmJiBkZWZpbmVkKGNsX2tocl9pbnQ2NF9leHRlbmRlZF9hdG9taWNzKQojaWZkZWYgY2xfa2hyX2ZwNjQKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nX2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY19kb3VibGUgKm9iamVjdCwgZG91YmxlICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWtfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX2RvdWJsZSAqb2JqZWN0LCBkb3VibGUgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlKTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nX2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY19sb25nICpvYmplY3QsIGxvbmcgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWtfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX2xvbmcgKm9iamVjdCwgbG9uZyAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nX2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY191bG9uZyAqb2JqZWN0LCB1bG9uZyAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVsb25nIGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWtfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX3Vsb25nICpvYmplY3QsIHVsb25nICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWxvbmcgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlKTsKI2VuZGlmCiNlbmRpZiAvL2RlZmluZWQoX19vcGVuY2xfY19nZW5lcmljX2FkZHJlc3Nfc3BhY2UpCiNpZiAoX19PUEVOQ0xfQ19WRVJTSU9OX18gPj0gQ0xfVkVSU0lPTl8zXzAgfHwgX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXyA+PSAyMDIxMDApCmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZ19leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfaW50ICpvYmplY3QsIF9fZ2xvYmFsIGludCAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmdfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2ludCAqb2JqZWN0LCBfX2xvY2FsIGludCAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmdfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2ludCAqb2JqZWN0LCBfX3ByaXZhdGUgaW50ICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZ19leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19pbnQgKm9iamVjdCwgX19nbG9iYWwgaW50ICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZ19leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19pbnQgKm9iamVjdCwgX19sb2NhbCBpbnQgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2ludCAqb2JqZWN0LCBfX3ByaXZhdGUgaW50ICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZ19leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfdWludCAqb2JqZWN0LCBfX2dsb2JhbCB1aW50ICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludCBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmdfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX3VpbnQgKm9iamVjdCwgX19sb2NhbCB1aW50ICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludCBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmdfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX3VpbnQgKm9iamVjdCwgX19wcml2YXRlIHVpbnQgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50IGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZ19leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY191aW50ICpvYmplY3QsIF9fZ2xvYmFsIHVpbnQgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50IGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZ19leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY191aW50ICpvYmplY3QsIF9fbG9jYWwgdWludCAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX3VpbnQgKm9iamVjdCwgX19wcml2YXRlIHVpbnQgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50IGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZ19leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfZmxvYXQgKm9iamVjdCwgX19nbG9iYWwgZmxvYXQgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmdfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2Zsb2F0ICpvYmplY3QsIF9fbG9jYWwgZmxvYXQgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmdfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2Zsb2F0ICpvYmplY3QsIF9fcHJpdmF0ZSBmbG9hdCAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZ19leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19mbG9hdCAqb2JqZWN0LCBfX2dsb2JhbCBmbG9hdCAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZ19leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19mbG9hdCAqb2JqZWN0LCBfX2xvY2FsIGZsb2F0ICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2Zsb2F0ICpvYmplY3QsIF9fcHJpdmF0ZSBmbG9hdCAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWtfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2ludCAqb2JqZWN0LCBfX2dsb2JhbCBpbnQgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vha19leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfaW50ICpvYmplY3QsIF9fbG9jYWwgaW50ICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWtfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2ludCAqb2JqZWN0LCBfX3ByaXZhdGUgaW50ICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWtfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfaW50ICpvYmplY3QsIF9fZ2xvYmFsIGludCAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2ludCAqb2JqZWN0LCBfX2xvY2FsIGludCAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2ludCAqb2JqZWN0LCBfX3ByaXZhdGUgaW50ICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWtfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX3VpbnQgKm9iamVjdCwgX19nbG9iYWwgdWludCAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vha19leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfdWludCAqb2JqZWN0LCBfX2xvY2FsIHVpbnQgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50IGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWtfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX3VpbnQgKm9iamVjdCwgX19wcml2YXRlIHVpbnQgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50IGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWtfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfdWludCAqb2JqZWN0LCBfX2dsb2JhbCB1aW50ICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludCBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX3VpbnQgKm9iamVjdCwgX19sb2NhbCB1aW50ICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludCBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX3VpbnQgKm9iamVjdCwgX19wcml2YXRlIHVpbnQgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50IGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWtfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2Zsb2F0ICpvYmplY3QsIF9fZ2xvYmFsIGZsb2F0ICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vha19leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfZmxvYXQgKm9iamVjdCwgX19sb2NhbCBmbG9hdCAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWtfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2Zsb2F0ICpvYmplY3QsIF9fcHJpdmF0ZSBmbG9hdCAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWtfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfZmxvYXQgKm9iamVjdCwgX19nbG9iYWwgZmxvYXQgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2Zsb2F0ICpvYmplY3QsIF9fbG9jYWwgZmxvYXQgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2Zsb2F0ICpvYmplY3QsIF9fcHJpdmF0ZSBmbG9hdCAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSk7CiNpZiBkZWZpbmVkKGNsX2tocl9pbnQ2NF9iYXNlX2F0b21pY3MpICYmIGRlZmluZWQoY2xfa2hyX2ludDY0X2V4dGVuZGVkX2F0b21pY3MpCiNpZmRlZiBjbF9raHJfZnA2NApib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmdfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2RvdWJsZSAqb2JqZWN0LCBfX2dsb2JhbCBkb3VibGUgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19kb3VibGUgKm9iamVjdCwgX19sb2NhbCBkb3VibGUgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19kb3VibGUgKm9iamVjdCwgX19wcml2YXRlIGRvdWJsZSAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmdfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfZG91YmxlICpvYmplY3QsIF9fZ2xvYmFsIGRvdWJsZSAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmdfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfZG91YmxlICpvYmplY3QsIF9fbG9jYWwgZG91YmxlICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZ19leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19kb3VibGUgKm9iamVjdCwgX19wcml2YXRlIGRvdWJsZSAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19kb3VibGUgKm9iamVjdCwgX19nbG9iYWwgZG91YmxlICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWtfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2RvdWJsZSAqb2JqZWN0LCBfX2xvY2FsIGRvdWJsZSAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19kb3VibGUgKm9iamVjdCwgX19wcml2YXRlIGRvdWJsZSAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2RvdWJsZSAqb2JqZWN0LCBfX2dsb2JhbCBkb3VibGUgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vha19leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19kb3VibGUgKm9iamVjdCwgX19sb2NhbCBkb3VibGUgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vha19leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19kb3VibGUgKm9iamVjdCwgX19wcml2YXRlIGRvdWJsZSAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUpOwojZW5kaWYgLy9jbF9raHJfZnA2NApib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmdfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2xvbmcgKm9iamVjdCwgX19nbG9iYWwgbG9uZyAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19sb25nICpvYmplY3QsIF9fbG9jYWwgbG9uZyAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19sb25nICpvYmplY3QsIF9fcHJpdmF0ZSBsb25nICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmdfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfbG9uZyAqb2JqZWN0LCBfX2dsb2JhbCBsb25nICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmdfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfbG9uZyAqb2JqZWN0LCBfX2xvY2FsIGxvbmcgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZ19leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19sb25nICpvYmplY3QsIF9fcHJpdmF0ZSBsb25nICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmdfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX3Vsb25nICpvYmplY3QsIF9fZ2xvYmFsIHVsb25nICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWxvbmcgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY191bG9uZyAqb2JqZWN0LCBfX2xvY2FsIHVsb25nICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWxvbmcgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY191bG9uZyAqb2JqZWN0LCBfX3ByaXZhdGUgdWxvbmcgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bG9uZyBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmdfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfdWxvbmcgKm9iamVjdCwgX19nbG9iYWwgdWxvbmcgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bG9uZyBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmdfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfdWxvbmcgKm9iamVjdCwgX19sb2NhbCB1bG9uZyAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVsb25nIGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZ19leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY191bG9uZyAqb2JqZWN0LCBfX3ByaXZhdGUgdWxvbmcgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bG9uZyBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19sb25nICpvYmplY3QsIF9fZ2xvYmFsIGxvbmcgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWtfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2xvbmcgKm9iamVjdCwgX19sb2NhbCBsb25nICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19sb25nICpvYmplY3QsIF9fcHJpdmF0ZSBsb25nICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2xvbmcgKm9iamVjdCwgX19nbG9iYWwgbG9uZyAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vha19leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19sb25nICpvYmplY3QsIF9fbG9jYWwgbG9uZyAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vha19leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19sb25nICpvYmplY3QsIF9fcHJpdmF0ZSBsb25nICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY191bG9uZyAqb2JqZWN0LCBfX2dsb2JhbCB1bG9uZyAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVsb25nIGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWtfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX3Vsb25nICpvYmplY3QsIF9fbG9jYWwgdWxvbmcgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bG9uZyBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY191bG9uZyAqb2JqZWN0LCBfX3ByaXZhdGUgdWxvbmcgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bG9uZyBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX3Vsb25nICpvYmplY3QsIF9fZ2xvYmFsIHVsb25nICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWxvbmcgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vha19leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY191bG9uZyAqb2JqZWN0LCBfX2xvY2FsIHVsb25nICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWxvbmcgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vha19leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY191bG9uZyAqb2JqZWN0LCBfX3ByaXZhdGUgdWxvbmcgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bG9uZyBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUpOwojZW5kaWYgLy9kZWZpbmVkKGNsX2tocl9pbnQ2NF9iYXNlX2F0b21pY3MpICYmIGRlZmluZWQoY2xfa2hyX2ludDY0X2V4dGVuZGVkX2F0b21pY3MpCiNlbmRpZiAvLyAoX19PUEVOQ0xfQ19WRVJTSU9OX18gPj0gQ0xfVkVSU0lPTl8zXzAgfHwgX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXyA+PSAyMDIxMDApCgojaWYgZGVmaW5lZChfX29wZW5jbF9jX2dlbmVyaWNfYWRkcmVzc19zcGFjZSkKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nX2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY19pbnQgKm9iamVjdCwgaW50ICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nX2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY191aW50ICpvYmplY3QsIHVpbnQgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50IGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vha19leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfaW50ICpvYmplY3QsIGludCAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUsIG1lbW9yeV9zY29wZSBzY29wZSk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWtfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX3VpbnQgKm9iamVjdCwgdWludCAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmdfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX2Zsb2F0ICpvYmplY3QsIGZsb2F0ICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrX2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY19mbG9hdCAqb2JqZWN0LCBmbG9hdCAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKI2lmIGRlZmluZWQoY2xfa2hyX2ludDY0X2Jhc2VfYXRvbWljcykgJiYgZGVmaW5lZChjbF9raHJfaW50NjRfZXh0ZW5kZWRfYXRvbWljcykKI2lmZGVmIGNsX2tocl9mcDY0CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZ19leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfZG91YmxlICpvYmplY3QsIGRvdWJsZSAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUsIG1lbW9yeV9zY29wZSBzY29wZSk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWtfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX2RvdWJsZSAqb2JqZWN0LCBkb3VibGUgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwojZW5kaWYgLy9jbF9raHJfZnA2NApib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmdfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX2xvbmcgKm9iamVjdCwgbG9uZyAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrX2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY19sb25nICpvYmplY3QsIGxvbmcgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nX2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY191bG9uZyAqb2JqZWN0LCB1bG9uZyAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVsb25nIGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vha19leHBsaWNpdCh2b2xhdGlsZSBhdG9taWNfdWxvbmcgKm9iamVjdCwgdWxvbmcgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bG9uZyBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUsIG1lbW9yeV9zY29wZSBzY29wZSk7CiNlbmRpZgojZW5kaWYgLy9kZWZpbmVkKF9fb3BlbmNsX2NfZ2VuZXJpY19hZGRyZXNzX3NwYWNlKQojaWYgKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fM18wIHx8IF9fT1BFTkNMX0NQUF9WRVJTSU9OX18gPj0gMjAyMTAwKQpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmdfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2ludCAqb2JqZWN0LCBfX2dsb2JhbCBpbnQgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmdfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2ludCAqb2JqZWN0LCBfX2xvY2FsIGludCAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUsIG1lbW9yeV9zY29wZSBzY29wZSk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZ19leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfaW50ICpvYmplY3QsIF9fcHJpdmF0ZSBpbnQgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmdfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfaW50ICpvYmplY3QsIF9fZ2xvYmFsIGludCAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUsIG1lbW9yeV9zY29wZSBzY29wZSk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZ19leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19pbnQgKm9iamVjdCwgX19sb2NhbCBpbnQgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmdfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfaW50ICpvYmplY3QsIF9fcHJpdmF0ZSBpbnQgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmdfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX3VpbnQgKm9iamVjdCwgX19nbG9iYWwgdWludCAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmdfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX3VpbnQgKm9iamVjdCwgX19sb2NhbCB1aW50ICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludCBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUsIG1lbW9yeV9zY29wZSBzY29wZSk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZ19leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfdWludCAqb2JqZWN0LCBfX3ByaXZhdGUgdWludCAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmdfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfdWludCAqb2JqZWN0LCBfX2dsb2JhbCB1aW50ICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludCBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUsIG1lbW9yeV9zY29wZSBzY29wZSk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZ19leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY191aW50ICpvYmplY3QsIF9fbG9jYWwgdWludCAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmdfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfdWludCAqb2JqZWN0LCBfX3ByaXZhdGUgdWludCAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmdfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2Zsb2F0ICpvYmplY3QsIF9fZ2xvYmFsIGZsb2F0ICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmdfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2Zsb2F0ICpvYmplY3QsIF9fbG9jYWwgZmxvYXQgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUsIG1lbW9yeV9zY29wZSBzY29wZSk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZ19leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfZmxvYXQgKm9iamVjdCwgX19wcml2YXRlIGZsb2F0ICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmdfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfZmxvYXQgKm9iamVjdCwgX19nbG9iYWwgZmxvYXQgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUsIG1lbW9yeV9zY29wZSBzY29wZSk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZ19leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19mbG9hdCAqb2JqZWN0LCBfX2xvY2FsIGZsb2F0ICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmdfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfZmxvYXQgKm9iamVjdCwgX19wcml2YXRlIGZsb2F0ICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19pbnQgKm9iamVjdCwgX19nbG9iYWwgaW50ICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vha19leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfaW50ICpvYmplY3QsIF9fbG9jYWwgaW50ICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vha19leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfaW50ICpvYmplY3QsIF9fcHJpdmF0ZSBpbnQgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2ludCAqb2JqZWN0LCBfX2dsb2JhbCBpbnQgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2ludCAqb2JqZWN0LCBfX2xvY2FsIGludCAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUsIG1lbW9yeV9zY29wZSBzY29wZSk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWtfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfaW50ICpvYmplY3QsIF9fcHJpdmF0ZSBpbnQgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY191aW50ICpvYmplY3QsIF9fZ2xvYmFsIHVpbnQgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50IGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vha19leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfdWludCAqb2JqZWN0LCBfX2xvY2FsIHVpbnQgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50IGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vha19leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfdWludCAqb2JqZWN0LCBfX3ByaXZhdGUgdWludCAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX3VpbnQgKm9iamVjdCwgX19nbG9iYWwgdWludCAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX3VpbnQgKm9iamVjdCwgX19sb2NhbCB1aW50ICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludCBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUsIG1lbW9yeV9zY29wZSBzY29wZSk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWtfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfdWludCAqb2JqZWN0LCBfX3ByaXZhdGUgdWludCAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19mbG9hdCAqb2JqZWN0LCBfX2dsb2JhbCBmbG9hdCAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vha19leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfZmxvYXQgKm9iamVjdCwgX19sb2NhbCBmbG9hdCAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vha19leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfZmxvYXQgKm9iamVjdCwgX19wcml2YXRlIGZsb2F0ICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2Zsb2F0ICpvYmplY3QsIF9fZ2xvYmFsIGZsb2F0ICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2Zsb2F0ICpvYmplY3QsIF9fbG9jYWwgZmxvYXQgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUsIG1lbW9yeV9zY29wZSBzY29wZSk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWtfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfZmxvYXQgKm9iamVjdCwgX19wcml2YXRlIGZsb2F0ICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwojaWYgZGVmaW5lZChjbF9raHJfaW50NjRfYmFzZV9hdG9taWNzKSAmJiBkZWZpbmVkKGNsX2tocl9pbnQ2NF9leHRlbmRlZF9hdG9taWNzKQojaWZkZWYgY2xfa2hyX2ZwNjQKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19kb3VibGUgKm9iamVjdCwgX19nbG9iYWwgZG91YmxlICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19kb3VibGUgKm9iamVjdCwgX19sb2NhbCBkb3VibGUgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmdfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2RvdWJsZSAqb2JqZWN0LCBfX3ByaXZhdGUgZG91YmxlICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2RvdWJsZSAqb2JqZWN0LCBfX2dsb2JhbCBkb3VibGUgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmdfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfZG91YmxlICpvYmplY3QsIF9fbG9jYWwgZG91YmxlICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2RvdWJsZSAqb2JqZWN0LCBfX3ByaXZhdGUgZG91YmxlICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vha19leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfZG91YmxlICpvYmplY3QsIF9fZ2xvYmFsIGRvdWJsZSAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUsIG1lbW9yeV9zY29wZSBzY29wZSk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWtfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2RvdWJsZSAqb2JqZWN0LCBfX2xvY2FsIGRvdWJsZSAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUsIG1lbW9yeV9zY29wZSBzY29wZSk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWtfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2RvdWJsZSAqb2JqZWN0LCBfX3ByaXZhdGUgZG91YmxlICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vha19leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19kb3VibGUgKm9iamVjdCwgX19nbG9iYWwgZG91YmxlICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vha19leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19kb3VibGUgKm9iamVjdCwgX19sb2NhbCBkb3VibGUgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2RvdWJsZSAqb2JqZWN0LCBfX3ByaXZhdGUgZG91YmxlICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19sb25nICpvYmplY3QsIF9fZ2xvYmFsIGxvbmcgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19sb25nICpvYmplY3QsIF9fbG9jYWwgbG9uZyAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmdfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2xvbmcgKm9iamVjdCwgX19wcml2YXRlIGxvbmcgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2xvbmcgKm9iamVjdCwgX19nbG9iYWwgbG9uZyAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmdfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfbG9uZyAqb2JqZWN0LCBfX2xvY2FsIGxvbmcgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2xvbmcgKm9iamVjdCwgX19wcml2YXRlIGxvbmcgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY191bG9uZyAqb2JqZWN0LCBfX2dsb2JhbCB1bG9uZyAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVsb25nIGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY191bG9uZyAqb2JqZWN0LCBfX2xvY2FsIHVsb25nICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWxvbmcgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmdfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX3Vsb25nICpvYmplY3QsIF9fcHJpdmF0ZSB1bG9uZyAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVsb25nIGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX3Vsb25nICpvYmplY3QsIF9fZ2xvYmFsIHVsb25nICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWxvbmcgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmdfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfdWxvbmcgKm9iamVjdCwgX19sb2NhbCB1bG9uZyAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVsb25nIGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX3Vsb25nICpvYmplY3QsIF9fcHJpdmF0ZSB1bG9uZyAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVsb25nIGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vha19leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfbG9uZyAqb2JqZWN0LCBfX2dsb2JhbCBsb25nICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUsIG1lbW9yeV9zY29wZSBzY29wZSk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWtfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2xvbmcgKm9iamVjdCwgX19sb2NhbCBsb25nICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUsIG1lbW9yeV9zY29wZSBzY29wZSk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWtfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2xvbmcgKm9iamVjdCwgX19wcml2YXRlIGxvbmcgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vha19leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19sb25nICpvYmplY3QsIF9fZ2xvYmFsIGxvbmcgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vha19leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19sb25nICpvYmplY3QsIF9fbG9jYWwgbG9uZyAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2xvbmcgKm9iamVjdCwgX19wcml2YXRlIGxvbmcgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vha19leHBsaWNpdCh2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfdWxvbmcgKm9iamVjdCwgX19nbG9iYWwgdWxvbmcgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bG9uZyBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUsIG1lbW9yeV9zY29wZSBzY29wZSk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWtfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX3Vsb25nICpvYmplY3QsIF9fbG9jYWwgdWxvbmcgKmV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bG9uZyBkZXNpcmVkLCBtZW1vcnlfb3JkZXIgc3VjY2VzcywgbWVtb3J5X29yZGVyIGZhaWx1cmUsIG1lbW9yeV9zY29wZSBzY29wZSk7CmJvb2wgX19vdmxkIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWtfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX3Vsb25nICpvYmplY3QsIF9fcHJpdmF0ZSB1bG9uZyAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVsb25nIGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vha19leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY191bG9uZyAqb2JqZWN0LCBfX2dsb2JhbCB1bG9uZyAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVsb25nIGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKYm9vbCBfX292bGQgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vha19leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY191bG9uZyAqb2JqZWN0LCBfX2xvY2FsIHVsb25nICpleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWxvbmcgZGVzaXJlZCwgbWVtb3J5X29yZGVyIHN1Y2Nlc3MsIG1lbW9yeV9vcmRlciBmYWlsdXJlLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwpib29sIF9fb3ZsZCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX3Vsb25nICpvYmplY3QsIF9fcHJpdmF0ZSB1bG9uZyAqZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVsb25nIGRlc2lyZWQsIG1lbW9yeV9vcmRlciBzdWNjZXNzLCBtZW1vcnlfb3JkZXIgZmFpbHVyZSwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKI2VuZGlmIC8vZGVmaW5lZChjbF9raHJfaW50NjRfYmFzZV9hdG9taWNzKSAmJiBkZWZpbmVkKGNsX2tocl9pbnQ2NF9leHRlbmRlZF9hdG9taWNzKQojZW5kaWYgLy8gKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fM18wIHx8IF9fT1BFTkNMX0NQUF9WRVJTSU9OX18gPj0gMjAyMTAwKQoKLy8gYXRvbWljX2ZsYWdfdGVzdF9hbmRfc2V0KCkgYW5kIGF0b21pY19mbGFnX2NsZWFyKCkKI2lmIGRlZmluZWQoX19vcGVuY2xfY19hdG9taWNfb3JkZXJfc2VxX2NzdCkgJiYgZGVmaW5lZChfX29wZW5jbF9jX2F0b21pY19zY29wZV9kZXZpY2UpCiNpZiBkZWZpbmVkKF9fb3BlbmNsX2NfZ2VuZXJpY19hZGRyZXNzX3NwYWNlKQpib29sIF9fb3ZsZCBhdG9taWNfZmxhZ190ZXN0X2FuZF9zZXQodm9sYXRpbGUgYXRvbWljX2ZsYWcgKm9iamVjdCk7CnZvaWQgX19vdmxkIGF0b21pY19mbGFnX2NsZWFyKHZvbGF0aWxlIGF0b21pY19mbGFnICpvYmplY3QpOwojZW5kaWYgLy9kZWZpbmVkKF9fb3BlbmNsX2NfZ2VuZXJpY19hZGRyZXNzX3NwYWNlKQojaWYgKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fM18wIHx8IF9fT1BFTkNMX0NQUF9WRVJTSU9OX18gPj0gMjAyMTAwKQpib29sIF9fb3ZsZCBhdG9taWNfZmxhZ190ZXN0X2FuZF9zZXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2ZsYWcgKm9iamVjdCk7CmJvb2wgX19vdmxkIGF0b21pY19mbGFnX3Rlc3RfYW5kX3NldCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19mbGFnICpvYmplY3QpOwp2b2lkIF9fb3ZsZCBhdG9taWNfZmxhZ19jbGVhcih2b2xhdGlsZSBfX2dsb2JhbCBhdG9taWNfZmxhZyAqb2JqZWN0KTsKdm9pZCBfX292bGQgYXRvbWljX2ZsYWdfY2xlYXIodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfZmxhZyAqb2JqZWN0KTsKI2VuZGlmIC8vIChfX09QRU5DTF9DX1ZFUlNJT05fXyA+PSBDTF9WRVJTSU9OXzNfMCB8fCBfX09QRU5DTF9DUFBfVkVSU0lPTl9fID49IDIwMjEwMCkKI2VuZGlmCgojaWYgZGVmaW5lZChfX29wZW5jbF9jX2F0b21pY19zY29wZV9kZXZpY2UpCiNpZiBkZWZpbmVkKF9fb3BlbmNsX2NfZ2VuZXJpY19hZGRyZXNzX3NwYWNlKQpib29sIF9fb3ZsZCBhdG9taWNfZmxhZ190ZXN0X2FuZF9zZXRfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX2ZsYWcgKm9iamVjdCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKdm9pZCBfX292bGQgYXRvbWljX2ZsYWdfY2xlYXJfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX2ZsYWcgKm9iamVjdCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKI2VuZGlmIC8vZGVmaW5lZChfX29wZW5jbF9jX2dlbmVyaWNfYWRkcmVzc19zcGFjZSkKI2lmIChfX09QRU5DTF9DX1ZFUlNJT05fXyA+PSBDTF9WRVJTSU9OXzNfMCB8fCBfX09QRU5DTF9DUFBfVkVSU0lPTl9fID49IDIwMjEwMCkKYm9vbCBfX292bGQgYXRvbWljX2ZsYWdfdGVzdF9hbmRfc2V0X2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19mbGFnICpvYmplY3QsIG1lbW9yeV9vcmRlciBvcmRlcik7CmJvb2wgX19vdmxkIGF0b21pY19mbGFnX3Rlc3RfYW5kX3NldF9leHBsaWNpdCh2b2xhdGlsZSBfX2xvY2FsIGF0b21pY19mbGFnICpvYmplY3QsIG1lbW9yeV9vcmRlciBvcmRlcik7CnZvaWQgX19vdmxkIGF0b21pY19mbGFnX2NsZWFyX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19mbGFnICpvYmplY3QsIG1lbW9yeV9vcmRlciBvcmRlcik7CnZvaWQgX19vdmxkIGF0b21pY19mbGFnX2NsZWFyX2V4cGxpY2l0KHZvbGF0aWxlIF9fbG9jYWwgYXRvbWljX2ZsYWcgKm9iamVjdCwgbWVtb3J5X29yZGVyIG9yZGVyKTsKI2VuZGlmIC8vIChfX09QRU5DTF9DX1ZFUlNJT05fXyA+PSBDTF9WRVJTSU9OXzNfMCB8fCBfX09QRU5DTF9DUFBfVkVSU0lPTl9fID49IDIwMjEwMCkKI2VuZGlmCgojaWYgZGVmaW5lZChfX29wZW5jbF9jX2dlbmVyaWNfYWRkcmVzc19zcGFjZSkKYm9vbCBfX292bGQgYXRvbWljX2ZsYWdfdGVzdF9hbmRfc2V0X2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY19mbGFnICpvYmplY3QsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKdm9pZCBfX292bGQgYXRvbWljX2ZsYWdfY2xlYXJfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX2ZsYWcgKm9iamVjdCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwojZW5kaWYgLy9kZWZpbmVkKF9fb3BlbmNsX2NfZ2VuZXJpY19hZGRyZXNzX3NwYWNlKQojaWYgKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fM18wIHx8IF9fT1BFTkNMX0NQUF9WRVJTSU9OX18gPj0gMjAyMTAwKQpib29sIF9fb3ZsZCBhdG9taWNfZmxhZ190ZXN0X2FuZF9zZXRfZXhwbGljaXQodm9sYXRpbGUgX19nbG9iYWwgYXRvbWljX2ZsYWcgKm9iamVjdCwgbWVtb3J5X29yZGVyIG9yZGVyLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwpib29sIF9fb3ZsZCBhdG9taWNfZmxhZ190ZXN0X2FuZF9zZXRfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfZmxhZyAqb2JqZWN0LCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CnZvaWQgX19vdmxkIGF0b21pY19mbGFnX2NsZWFyX2V4cGxpY2l0KHZvbGF0aWxlIF9fZ2xvYmFsIGF0b21pY19mbGFnICpvYmplY3QsIG1lbW9yeV9vcmRlciBvcmRlciwgbWVtb3J5X3Njb3BlIHNjb3BlKTsKdm9pZCBfX292bGQgYXRvbWljX2ZsYWdfY2xlYXJfZXhwbGljaXQodm9sYXRpbGUgX19sb2NhbCBhdG9taWNfZmxhZyAqb2JqZWN0LCBtZW1vcnlfb3JkZXIgb3JkZXIsIG1lbW9yeV9zY29wZSBzY29wZSk7CiNlbmRpZiAvLyAoX19PUEVOQ0xfQ19WRVJTSU9OX18gPj0gQ0xfVkVSU0lPTl8zXzAgfHwgX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXyA+PSAyMDIxMDApCiNlbmRpZiAvL2RlZmluZWQoX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXykgfHwgKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fMl8wKQoKLy8gT3BlbkNMIHYxLjEgczYuMTEuMTIsIHYxLjIgczYuMTIuMTIsIHYyLjAgczYuMTMuMTIgLSBNaXNjZWxsYW5lb3VzIFZlY3RvciBGdW5jdGlvbnMKCi8qKgogKiBUaGUgc2h1ZmZsZSBhbmQgc2h1ZmZsZTIgYnVpbHQtaW4gZnVuY3Rpb25zIGNvbnN0cnVjdAogKiBhIHBlcm11dGF0aW9uIG9mIGVsZW1lbnRzIGZyb20gb25lIG9yIHR3byBpbnB1dAogKiB2ZWN0b3JzIHJlc3BlY3RpdmVseSB0aGF0IGFyZSBvZiB0aGUgc2FtZSB0eXBlLAogKiByZXR1cm5pbmcgYSB2ZWN0b3Igd2l0aCB0aGUgc2FtZSBlbGVtZW50IHR5cGUgYXMgdGhlCiAqIGlucHV0IGFuZCBsZW5ndGggdGhhdCBpcyB0aGUgc2FtZSBhcyB0aGUgc2h1ZmZsZSBtYXNrLgogKiBUaGUgc2l6ZSBvZiBlYWNoIGVsZW1lbnQgaW4gdGhlIG1hc2sgbXVzdCBtYXRjaCB0aGUKICogc2l6ZSBvZiBlYWNoIGVsZW1lbnQgaW4gdGhlIHJlc3VsdC4gRm9yIHNodWZmbGUsIG9ubHkKICogdGhlIGlsb2diKDJtLTEpIGxlYXN0IHNpZ25pZmljYW50IGJpdHMgb2YgZWFjaCBtYXNrCiAqIGVsZW1lbnQgYXJlIGNvbnNpZGVyZWQuIEZvciBzaHVmZmxlMiwgb25seSB0aGUKICogaWxvZ2IoMm0tMSkrMSBsZWFzdCBzaWduaWZpY2FudCBiaXRzIG9mIGVhY2ggbWFzawogKiBlbGVtZW50IGFyZSBjb25zaWRlcmVkLiBPdGhlciBiaXRzIGluIHRoZSBtYXNrIHNoYWxsCiAqIGJlIGlnbm9yZWQuCiAqIFRoZSBlbGVtZW50cyBvZiB0aGUgaW5wdXQgdmVjdG9ycyBhcmUgbnVtYmVyZWQgZnJvbQogKiBsZWZ0IHRvIHJpZ2h0IGFjcm9zcyBvbmUgb3IgYm90aCBvZiB0aGUgdmVjdG9ycy4gRm9yIHRoaXMKICogcHVycG9zZSwgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiBhIHZlY3RvciBpcyBnaXZlbgogKiBieSB2ZWNfc3RlcChnZW50eXBlbSkuIFRoZSBzaHVmZmxlIG1hc2sgb3BlcmFuZAogKiBzcGVjaWZpZXMsIGZvciBlYWNoIGVsZW1lbnQgb2YgdGhlIHJlc3VsdCB2ZWN0b3IsIHdoaWNoCiAqIGVsZW1lbnQgb2YgdGhlIG9uZSBvciB0d28gaW5wdXQgdmVjdG9ycyB0aGUgcmVzdWx0CiAqIGVsZW1lbnQgZ2V0cy4KICogRXhhbXBsZXM6CiAqIHVpbnQ0IG1hc2sgPSAodWludDQpKDMsIDIsCiAqIDEsIDApOwogKiBmbG9hdDQgYTsKICogZmxvYXQ0IHIgPSBzaHVmZmxlKGEsIG1hc2spOwogKiAvLyByLnMwMTIzID0gYS53enl4CiAqIHVpbnQ4IG1hc2sgPSAodWludDgpKDAsIDEsIDIsIDMsCiAqIDQsIDUsIDYsIDcpOwogKiBmbG9hdDQgYSwgYjsKICogZmxvYXQ4IHIgPSBzaHVmZmxlMihhLCBiLCBtYXNrKTsKICogLy8gci5zMDEyMyA9IGEueHl6dwogKiAvLyByLnM0NTY3ID0gYi54eXp3CiAqIHVpbnQ0IG1hc2s7CiAqIGZsb2F0OCBhOwogKiBmbG9hdDQgYjsKICogYiA9IHNodWZmbGUoYSwgbWFzayk7CiAqIEV4YW1wbGVzIHRoYXQgYXJlIG5vdCB2YWxpZCBhcmU6CiAqIHVpbnQ4IG1hc2s7CiAqIHNob3J0MTYgYTsKICogc2hvcnQ4IGI7CiAqIGIgPSBzaHVmZmxlKGEsIG1hc2spOyA8LSBub3QgdmFsaWQKICovCmNoYXIyIF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZShjaGFyMiB4LCB1Y2hhcjIgbWFzayk7CmNoYXIyIF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZShjaGFyNCB4LCB1Y2hhcjIgbWFzayk7CmNoYXIyIF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZShjaGFyOCB4LCB1Y2hhcjIgbWFzayk7CmNoYXIyIF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZShjaGFyMTYgeCwgdWNoYXIyIG1hc2spOwoKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZSh1Y2hhcjIgeCwgdWNoYXIyIG1hc2spOwp1Y2hhcjIgX19vdmxkIF9fY25mbiBzaHVmZmxlKHVjaGFyNCB4LCB1Y2hhcjIgbWFzayk7CnVjaGFyMiBfX292bGQgX19jbmZuIHNodWZmbGUodWNoYXI4IHgsIHVjaGFyMiBtYXNrKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZSh1Y2hhcjE2IHgsIHVjaGFyMiBtYXNrKTsKCnNob3J0MiBfX292bGQgX19jbmZuIHNodWZmbGUoc2hvcnQyIHgsIHVzaG9ydDIgbWFzayk7CnNob3J0MiBfX292bGQgX19jbmZuIHNodWZmbGUoc2hvcnQ0IHgsIHVzaG9ydDIgbWFzayk7CnNob3J0MiBfX292bGQgX19jbmZuIHNodWZmbGUoc2hvcnQ4IHgsIHVzaG9ydDIgbWFzayk7CnNob3J0MiBfX292bGQgX19jbmZuIHNodWZmbGUoc2hvcnQxNiB4LCB1c2hvcnQyIG1hc2spOwoKdXNob3J0MiBfX292bGQgX19jbmZuIHNodWZmbGUodXNob3J0MiB4LCB1c2hvcnQyIG1hc2spOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZSh1c2hvcnQ0IHgsIHVzaG9ydDIgbWFzayk7CnVzaG9ydDIgX19vdmxkIF9fY25mbiBzaHVmZmxlKHVzaG9ydDggeCwgdXNob3J0MiBtYXNrKTsKdXNob3J0MiBfX292bGQgX19jbmZuIHNodWZmbGUodXNob3J0MTYgeCwgdXNob3J0MiBtYXNrKTsKCmludDIgX19vdmxkIF9fY25mbiBzaHVmZmxlKGludDIgeCwgdWludDIgbWFzayk7CmludDIgX19vdmxkIF9fY25mbiBzaHVmZmxlKGludDQgeCwgdWludDIgbWFzayk7CmludDIgX19vdmxkIF9fY25mbiBzaHVmZmxlKGludDggeCwgdWludDIgbWFzayk7CmludDIgX19vdmxkIF9fY25mbiBzaHVmZmxlKGludDE2IHgsIHVpbnQyIG1hc2spOwoKdWludDIgX19vdmxkIF9fY25mbiBzaHVmZmxlKHVpbnQyIHgsIHVpbnQyIG1hc2spOwp1aW50MiBfX292bGQgX19jbmZuIHNodWZmbGUodWludDQgeCwgdWludDIgbWFzayk7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZSh1aW50OCB4LCB1aW50MiBtYXNrKTsKdWludDIgX19vdmxkIF9fY25mbiBzaHVmZmxlKHVpbnQxNiB4LCB1aW50MiBtYXNrKTsKCmxvbmcyIF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZShsb25nMiB4LCB1bG9uZzIgbWFzayk7CmxvbmcyIF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZShsb25nNCB4LCB1bG9uZzIgbWFzayk7CmxvbmcyIF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZShsb25nOCB4LCB1bG9uZzIgbWFzayk7CmxvbmcyIF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZShsb25nMTYgeCwgdWxvbmcyIG1hc2spOwoKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZSh1bG9uZzIgeCwgdWxvbmcyIG1hc2spOwp1bG9uZzIgX19vdmxkIF9fY25mbiBzaHVmZmxlKHVsb25nNCB4LCB1bG9uZzIgbWFzayk7CnVsb25nMiBfX292bGQgX19jbmZuIHNodWZmbGUodWxvbmc4IHgsIHVsb25nMiBtYXNrKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZSh1bG9uZzE2IHgsIHVsb25nMiBtYXNrKTsKCmZsb2F0MiBfX292bGQgX19jbmZuIHNodWZmbGUoZmxvYXQyIHgsIHVpbnQyIG1hc2spOwpmbG9hdDIgX19vdmxkIF9fY25mbiBzaHVmZmxlKGZsb2F0NCB4LCB1aW50MiBtYXNrKTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZShmbG9hdDggeCwgdWludDIgbWFzayk7CmZsb2F0MiBfX292bGQgX19jbmZuIHNodWZmbGUoZmxvYXQxNiB4LCB1aW50MiBtYXNrKTsKCmNoYXI0IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZShjaGFyMiB4LCB1Y2hhcjQgbWFzayk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZShjaGFyNCB4LCB1Y2hhcjQgbWFzayk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZShjaGFyOCB4LCB1Y2hhcjQgbWFzayk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZShjaGFyMTYgeCwgdWNoYXI0IG1hc2spOwoKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZSh1Y2hhcjIgeCwgdWNoYXI0IG1hc2spOwp1Y2hhcjQgX19vdmxkIF9fY25mbiBzaHVmZmxlKHVjaGFyNCB4LCB1Y2hhcjQgbWFzayk7CnVjaGFyNCBfX292bGQgX19jbmZuIHNodWZmbGUodWNoYXI4IHgsIHVjaGFyNCBtYXNrKTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZSh1Y2hhcjE2IHgsIHVjaGFyNCBtYXNrKTsKCnNob3J0NCBfX292bGQgX19jbmZuIHNodWZmbGUoc2hvcnQyIHgsIHVzaG9ydDQgbWFzayk7CnNob3J0NCBfX292bGQgX19jbmZuIHNodWZmbGUoc2hvcnQ0IHgsIHVzaG9ydDQgbWFzayk7CnNob3J0NCBfX292bGQgX19jbmZuIHNodWZmbGUoc2hvcnQ4IHgsIHVzaG9ydDQgbWFzayk7CnNob3J0NCBfX292bGQgX19jbmZuIHNodWZmbGUoc2hvcnQxNiB4LCB1c2hvcnQ0IG1hc2spOwoKdXNob3J0NCBfX292bGQgX19jbmZuIHNodWZmbGUodXNob3J0MiB4LCB1c2hvcnQ0IG1hc2spOwp1c2hvcnQ0IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZSh1c2hvcnQ0IHgsIHVzaG9ydDQgbWFzayk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBzaHVmZmxlKHVzaG9ydDggeCwgdXNob3J0NCBtYXNrKTsKdXNob3J0NCBfX292bGQgX19jbmZuIHNodWZmbGUodXNob3J0MTYgeCwgdXNob3J0NCBtYXNrKTsKCmludDQgX19vdmxkIF9fY25mbiBzaHVmZmxlKGludDIgeCwgdWludDQgbWFzayk7CmludDQgX19vdmxkIF9fY25mbiBzaHVmZmxlKGludDQgeCwgdWludDQgbWFzayk7CmludDQgX19vdmxkIF9fY25mbiBzaHVmZmxlKGludDggeCwgdWludDQgbWFzayk7CmludDQgX19vdmxkIF9fY25mbiBzaHVmZmxlKGludDE2IHgsIHVpbnQ0IG1hc2spOwoKdWludDQgX19vdmxkIF9fY25mbiBzaHVmZmxlKHVpbnQyIHgsIHVpbnQ0IG1hc2spOwp1aW50NCBfX292bGQgX19jbmZuIHNodWZmbGUodWludDQgeCwgdWludDQgbWFzayk7CnVpbnQ0IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZSh1aW50OCB4LCB1aW50NCBtYXNrKTsKdWludDQgX19vdmxkIF9fY25mbiBzaHVmZmxlKHVpbnQxNiB4LCB1aW50NCBtYXNrKTsKCmxvbmc0IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZShsb25nMiB4LCB1bG9uZzQgbWFzayk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZShsb25nNCB4LCB1bG9uZzQgbWFzayk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZShsb25nOCB4LCB1bG9uZzQgbWFzayk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZShsb25nMTYgeCwgdWxvbmc0IG1hc2spOwoKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZSh1bG9uZzIgeCwgdWxvbmc0IG1hc2spOwp1bG9uZzQgX19vdmxkIF9fY25mbiBzaHVmZmxlKHVsb25nNCB4LCB1bG9uZzQgbWFzayk7CnVsb25nNCBfX292bGQgX19jbmZuIHNodWZmbGUodWxvbmc4IHgsIHVsb25nNCBtYXNrKTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZSh1bG9uZzE2IHgsIHVsb25nNCBtYXNrKTsKCmZsb2F0NCBfX292bGQgX19jbmZuIHNodWZmbGUoZmxvYXQyIHgsIHVpbnQ0IG1hc2spOwpmbG9hdDQgX19vdmxkIF9fY25mbiBzaHVmZmxlKGZsb2F0NCB4LCB1aW50NCBtYXNrKTsKZmxvYXQ0IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZShmbG9hdDggeCwgdWludDQgbWFzayk7CmZsb2F0NCBfX292bGQgX19jbmZuIHNodWZmbGUoZmxvYXQxNiB4LCB1aW50NCBtYXNrKTsKCmNoYXI4IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZShjaGFyMiB4LCB1Y2hhcjggbWFzayk7CmNoYXI4IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZShjaGFyNCB4LCB1Y2hhcjggbWFzayk7CmNoYXI4IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZShjaGFyOCB4LCB1Y2hhcjggbWFzayk7CmNoYXI4IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZShjaGFyMTYgeCwgdWNoYXI4IG1hc2spOwoKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZSh1Y2hhcjIgeCwgdWNoYXI4IG1hc2spOwp1Y2hhcjggX19vdmxkIF9fY25mbiBzaHVmZmxlKHVjaGFyNCB4LCB1Y2hhcjggbWFzayk7CnVjaGFyOCBfX292bGQgX19jbmZuIHNodWZmbGUodWNoYXI4IHgsIHVjaGFyOCBtYXNrKTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZSh1Y2hhcjE2IHgsIHVjaGFyOCBtYXNrKTsKCnNob3J0OCBfX292bGQgX19jbmZuIHNodWZmbGUoc2hvcnQyIHgsIHVzaG9ydDggbWFzayk7CnNob3J0OCBfX292bGQgX19jbmZuIHNodWZmbGUoc2hvcnQ0IHgsIHVzaG9ydDggbWFzayk7CnNob3J0OCBfX292bGQgX19jbmZuIHNodWZmbGUoc2hvcnQ4IHgsIHVzaG9ydDggbWFzayk7CnNob3J0OCBfX292bGQgX19jbmZuIHNodWZmbGUoc2hvcnQxNiB4LCB1c2hvcnQ4IG1hc2spOwoKdXNob3J0OCBfX292bGQgX19jbmZuIHNodWZmbGUodXNob3J0MiB4LCB1c2hvcnQ4IG1hc2spOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZSh1c2hvcnQ0IHgsIHVzaG9ydDggbWFzayk7CnVzaG9ydDggX19vdmxkIF9fY25mbiBzaHVmZmxlKHVzaG9ydDggeCwgdXNob3J0OCBtYXNrKTsKdXNob3J0OCBfX292bGQgX19jbmZuIHNodWZmbGUodXNob3J0MTYgeCwgdXNob3J0OCBtYXNrKTsKCmludDggX19vdmxkIF9fY25mbiBzaHVmZmxlKGludDIgeCwgdWludDggbWFzayk7CmludDggX19vdmxkIF9fY25mbiBzaHVmZmxlKGludDQgeCwgdWludDggbWFzayk7CmludDggX19vdmxkIF9fY25mbiBzaHVmZmxlKGludDggeCwgdWludDggbWFzayk7CmludDggX19vdmxkIF9fY25mbiBzaHVmZmxlKGludDE2IHgsIHVpbnQ4IG1hc2spOwoKdWludDggX19vdmxkIF9fY25mbiBzaHVmZmxlKHVpbnQyIHgsIHVpbnQ4IG1hc2spOwp1aW50OCBfX292bGQgX19jbmZuIHNodWZmbGUodWludDQgeCwgdWludDggbWFzayk7CnVpbnQ4IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZSh1aW50OCB4LCB1aW50OCBtYXNrKTsKdWludDggX19vdmxkIF9fY25mbiBzaHVmZmxlKHVpbnQxNiB4LCB1aW50OCBtYXNrKTsKCmxvbmc4IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZShsb25nMiB4LCB1bG9uZzggbWFzayk7Cmxvbmc4IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZShsb25nNCB4LCB1bG9uZzggbWFzayk7Cmxvbmc4IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZShsb25nOCB4LCB1bG9uZzggbWFzayk7Cmxvbmc4IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZShsb25nMTYgeCwgdWxvbmc4IG1hc2spOwoKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZSh1bG9uZzIgeCwgdWxvbmc4IG1hc2spOwp1bG9uZzggX19vdmxkIF9fY25mbiBzaHVmZmxlKHVsb25nNCB4LCB1bG9uZzggbWFzayk7CnVsb25nOCBfX292bGQgX19jbmZuIHNodWZmbGUodWxvbmc4IHgsIHVsb25nOCBtYXNrKTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZSh1bG9uZzE2IHgsIHVsb25nOCBtYXNrKTsKCmZsb2F0OCBfX292bGQgX19jbmZuIHNodWZmbGUoZmxvYXQyIHgsIHVpbnQ4IG1hc2spOwpmbG9hdDggX19vdmxkIF9fY25mbiBzaHVmZmxlKGZsb2F0NCB4LCB1aW50OCBtYXNrKTsKZmxvYXQ4IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZShmbG9hdDggeCwgdWludDggbWFzayk7CmZsb2F0OCBfX292bGQgX19jbmZuIHNodWZmbGUoZmxvYXQxNiB4LCB1aW50OCBtYXNrKTsKCmNoYXIxNiBfX292bGQgX19jbmZuIHNodWZmbGUoY2hhcjIgeCwgdWNoYXIxNiBtYXNrKTsKY2hhcjE2IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZShjaGFyNCB4LCB1Y2hhcjE2IG1hc2spOwpjaGFyMTYgX19vdmxkIF9fY25mbiBzaHVmZmxlKGNoYXI4IHgsIHVjaGFyMTYgbWFzayk7CmNoYXIxNiBfX292bGQgX19jbmZuIHNodWZmbGUoY2hhcjE2IHgsIHVjaGFyMTYgbWFzayk7Cgp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZSh1Y2hhcjIgeCwgdWNoYXIxNiBtYXNrKTsKdWNoYXIxNiBfX292bGQgX19jbmZuIHNodWZmbGUodWNoYXI0IHgsIHVjaGFyMTYgbWFzayk7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBzaHVmZmxlKHVjaGFyOCB4LCB1Y2hhcjE2IG1hc2spOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZSh1Y2hhcjE2IHgsIHVjaGFyMTYgbWFzayk7CgpzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZShzaG9ydDIgeCwgdXNob3J0MTYgbWFzayk7CnNob3J0MTYgX19vdmxkIF9fY25mbiBzaHVmZmxlKHNob3J0NCB4LCB1c2hvcnQxNiBtYXNrKTsKc2hvcnQxNiBfX292bGQgX19jbmZuIHNodWZmbGUoc2hvcnQ4IHgsIHVzaG9ydDE2IG1hc2spOwpzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZShzaG9ydDE2IHgsIHVzaG9ydDE2IG1hc2spOwoKdXNob3J0MTYgX19vdmxkIF9fY25mbiBzaHVmZmxlKHVzaG9ydDIgeCwgdXNob3J0MTYgbWFzayk7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZSh1c2hvcnQ0IHgsIHVzaG9ydDE2IG1hc2spOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIHNodWZmbGUodXNob3J0OCB4LCB1c2hvcnQxNiBtYXNrKTsKdXNob3J0MTYgX19vdmxkIF9fY25mbiBzaHVmZmxlKHVzaG9ydDE2IHgsIHVzaG9ydDE2IG1hc2spOwoKaW50MTYgX19vdmxkIF9fY25mbiBzaHVmZmxlKGludDIgeCwgdWludDE2IG1hc2spOwppbnQxNiBfX292bGQgX19jbmZuIHNodWZmbGUoaW50NCB4LCB1aW50MTYgbWFzayk7CmludDE2IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZShpbnQ4IHgsIHVpbnQxNiBtYXNrKTsKaW50MTYgX19vdmxkIF9fY25mbiBzaHVmZmxlKGludDE2IHgsIHVpbnQxNiBtYXNrKTsKCnVpbnQxNiBfX292bGQgX19jbmZuIHNodWZmbGUodWludDIgeCwgdWludDE2IG1hc2spOwp1aW50MTYgX19vdmxkIF9fY25mbiBzaHVmZmxlKHVpbnQ0IHgsIHVpbnQxNiBtYXNrKTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZSh1aW50OCB4LCB1aW50MTYgbWFzayk7CnVpbnQxNiBfX292bGQgX19jbmZuIHNodWZmbGUodWludDE2IHgsIHVpbnQxNiBtYXNrKTsKCmxvbmcxNiBfX292bGQgX19jbmZuIHNodWZmbGUobG9uZzIgeCwgdWxvbmcxNiBtYXNrKTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZShsb25nNCB4LCB1bG9uZzE2IG1hc2spOwpsb25nMTYgX19vdmxkIF9fY25mbiBzaHVmZmxlKGxvbmc4IHgsIHVsb25nMTYgbWFzayk7CmxvbmcxNiBfX292bGQgX19jbmZuIHNodWZmbGUobG9uZzE2IHgsIHVsb25nMTYgbWFzayk7Cgp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZSh1bG9uZzIgeCwgdWxvbmcxNiBtYXNrKTsKdWxvbmcxNiBfX292bGQgX19jbmZuIHNodWZmbGUodWxvbmc0IHgsIHVsb25nMTYgbWFzayk7CnVsb25nMTYgX19vdmxkIF9fY25mbiBzaHVmZmxlKHVsb25nOCB4LCB1bG9uZzE2IG1hc2spOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZSh1bG9uZzE2IHgsIHVsb25nMTYgbWFzayk7CgpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZShmbG9hdDIgeCwgdWludDE2IG1hc2spOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZShmbG9hdDQgeCwgdWludDE2IG1hc2spOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZShmbG9hdDggeCwgdWludDE2IG1hc2spOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZShmbG9hdDE2IHgsIHVpbnQxNiBtYXNrKTsKCiNpZmRlZiBjbF9raHJfZnA2NApkb3VibGUyIF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZShkb3VibGUyIHgsIHVsb25nMiBtYXNrKTsKZG91YmxlMiBfX292bGQgX19jbmZuIHNodWZmbGUoZG91YmxlNCB4LCB1bG9uZzIgbWFzayk7CmRvdWJsZTIgX19vdmxkIF9fY25mbiBzaHVmZmxlKGRvdWJsZTggeCwgdWxvbmcyIG1hc2spOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZShkb3VibGUxNiB4LCB1bG9uZzIgbWFzayk7Cgpkb3VibGU0IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZShkb3VibGUyIHgsIHVsb25nNCBtYXNrKTsKZG91YmxlNCBfX292bGQgX19jbmZuIHNodWZmbGUoZG91YmxlNCB4LCB1bG9uZzQgbWFzayk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiBzaHVmZmxlKGRvdWJsZTggeCwgdWxvbmc0IG1hc2spOwpkb3VibGU0IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZShkb3VibGUxNiB4LCB1bG9uZzQgbWFzayk7Cgpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZShkb3VibGUyIHgsIHVsb25nOCBtYXNrKTsKZG91YmxlOCBfX292bGQgX19jbmZuIHNodWZmbGUoZG91YmxlNCB4LCB1bG9uZzggbWFzayk7CmRvdWJsZTggX19vdmxkIF9fY25mbiBzaHVmZmxlKGRvdWJsZTggeCwgdWxvbmc4IG1hc2spOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZShkb3VibGUxNiB4LCB1bG9uZzggbWFzayk7Cgpkb3VibGUxNiBfX292bGQgX19jbmZuIHNodWZmbGUoZG91YmxlMiB4LCB1bG9uZzE2IG1hc2spOwpkb3VibGUxNiBfX292bGQgX19jbmZuIHNodWZmbGUoZG91YmxlNCB4LCB1bG9uZzE2IG1hc2spOwpkb3VibGUxNiBfX292bGQgX19jbmZuIHNodWZmbGUoZG91YmxlOCB4LCB1bG9uZzE2IG1hc2spOwpkb3VibGUxNiBfX292bGQgX19jbmZuIHNodWZmbGUoZG91YmxlMTYgeCwgdWxvbmcxNiBtYXNrKTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKCiNpZmRlZiBjbF9raHJfZnAxNgpoYWxmMiBfX292bGQgX19jbmZuIHNodWZmbGUoaGFsZjIgeCwgdXNob3J0MiBtYXNrKTsKaGFsZjIgX19vdmxkIF9fY25mbiBzaHVmZmxlKGhhbGY0IHgsIHVzaG9ydDIgbWFzayk7CmhhbGYyIF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZShoYWxmOCB4LCB1c2hvcnQyIG1hc2spOwpoYWxmMiBfX292bGQgX19jbmZuIHNodWZmbGUoaGFsZjE2IHgsIHVzaG9ydDIgbWFzayk7CgpoYWxmNCBfX292bGQgX19jbmZuIHNodWZmbGUoaGFsZjIgeCwgdXNob3J0NCBtYXNrKTsKaGFsZjQgX19vdmxkIF9fY25mbiBzaHVmZmxlKGhhbGY0IHgsIHVzaG9ydDQgbWFzayk7CmhhbGY0IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZShoYWxmOCB4LCB1c2hvcnQ0IG1hc2spOwpoYWxmNCBfX292bGQgX19jbmZuIHNodWZmbGUoaGFsZjE2IHgsIHVzaG9ydDQgbWFzayk7CgpoYWxmOCBfX292bGQgX19jbmZuIHNodWZmbGUoaGFsZjIgeCwgdXNob3J0OCBtYXNrKTsKaGFsZjggX19vdmxkIF9fY25mbiBzaHVmZmxlKGhhbGY0IHgsIHVzaG9ydDggbWFzayk7CmhhbGY4IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZShoYWxmOCB4LCB1c2hvcnQ4IG1hc2spOwpoYWxmOCBfX292bGQgX19jbmZuIHNodWZmbGUoaGFsZjE2IHgsIHVzaG9ydDggbWFzayk7CgpoYWxmMTYgX19vdmxkIF9fY25mbiBzaHVmZmxlKGhhbGYyIHgsIHVzaG9ydDE2IG1hc2spOwpoYWxmMTYgX19vdmxkIF9fY25mbiBzaHVmZmxlKGhhbGY0IHgsIHVzaG9ydDE2IG1hc2spOwpoYWxmMTYgX19vdmxkIF9fY25mbiBzaHVmZmxlKGhhbGY4IHgsIHVzaG9ydDE2IG1hc2spOwpoYWxmMTYgX19vdmxkIF9fY25mbiBzaHVmZmxlKGhhbGYxNiB4LCB1c2hvcnQxNiBtYXNrKTsKI2VuZGlmIC8vY2xfa2hyX2ZwMTYKCmNoYXIyIF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIoY2hhcjIgeCwgY2hhcjIgeSwgdWNoYXIyIG1hc2spOwpjaGFyMiBfX292bGQgX19jbmZuIHNodWZmbGUyKGNoYXI0IHgsIGNoYXI0IHksIHVjaGFyMiBtYXNrKTsKY2hhcjIgX19vdmxkIF9fY25mbiBzaHVmZmxlMihjaGFyOCB4LCBjaGFyOCB5LCB1Y2hhcjIgbWFzayk7CmNoYXIyIF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIoY2hhcjE2IHgsIGNoYXIxNiB5LCB1Y2hhcjIgbWFzayk7Cgp1Y2hhcjIgX19vdmxkIF9fY25mbiBzaHVmZmxlMih1Y2hhcjIgeCwgdWNoYXIyIHksIHVjaGFyMiBtYXNrKTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIodWNoYXI0IHgsIHVjaGFyNCB5LCB1Y2hhcjIgbWFzayk7CnVjaGFyMiBfX292bGQgX19jbmZuIHNodWZmbGUyKHVjaGFyOCB4LCB1Y2hhcjggeSwgdWNoYXIyIG1hc2spOwp1Y2hhcjIgX19vdmxkIF9fY25mbiBzaHVmZmxlMih1Y2hhcjE2IHgsIHVjaGFyMTYgeSwgdWNoYXIyIG1hc2spOwoKc2hvcnQyIF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIoc2hvcnQyIHgsIHNob3J0MiB5LCB1c2hvcnQyIG1hc2spOwpzaG9ydDIgX19vdmxkIF9fY25mbiBzaHVmZmxlMihzaG9ydDQgeCwgc2hvcnQ0IHksIHVzaG9ydDIgbWFzayk7CnNob3J0MiBfX292bGQgX19jbmZuIHNodWZmbGUyKHNob3J0OCB4LCBzaG9ydDggeSwgdXNob3J0MiBtYXNrKTsKc2hvcnQyIF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIoc2hvcnQxNiB4LCBzaG9ydDE2IHksIHVzaG9ydDIgbWFzayk7Cgp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIodXNob3J0MiB4LCB1c2hvcnQyIHksIHVzaG9ydDIgbWFzayk7CnVzaG9ydDIgX19vdmxkIF9fY25mbiBzaHVmZmxlMih1c2hvcnQ0IHgsIHVzaG9ydDQgeSwgdXNob3J0MiBtYXNrKTsKdXNob3J0MiBfX292bGQgX19jbmZuIHNodWZmbGUyKHVzaG9ydDggeCwgdXNob3J0OCB5LCB1c2hvcnQyIG1hc2spOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIodXNob3J0MTYgeCwgdXNob3J0MTYgeSwgdXNob3J0MiBtYXNrKTsKCmludDIgX19vdmxkIF9fY25mbiBzaHVmZmxlMihpbnQyIHgsIGludDIgeSwgdWludDIgbWFzayk7CmludDIgX19vdmxkIF9fY25mbiBzaHVmZmxlMihpbnQ0IHgsIGludDQgeSwgdWludDIgbWFzayk7CmludDIgX19vdmxkIF9fY25mbiBzaHVmZmxlMihpbnQ4IHgsIGludDggeSwgdWludDIgbWFzayk7CmludDIgX19vdmxkIF9fY25mbiBzaHVmZmxlMihpbnQxNiB4LCBpbnQxNiB5LCB1aW50MiBtYXNrKTsKCnVpbnQyIF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIodWludDIgeCwgdWludDIgeSwgdWludDIgbWFzayk7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIodWludDQgeCwgdWludDQgeSwgdWludDIgbWFzayk7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIodWludDggeCwgdWludDggeSwgdWludDIgbWFzayk7CnVpbnQyIF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIodWludDE2IHgsIHVpbnQxNiB5LCB1aW50MiBtYXNrKTsKCmxvbmcyIF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIobG9uZzIgeCwgbG9uZzIgeSwgdWxvbmcyIG1hc2spOwpsb25nMiBfX292bGQgX19jbmZuIHNodWZmbGUyKGxvbmc0IHgsIGxvbmc0IHksIHVsb25nMiBtYXNrKTsKbG9uZzIgX19vdmxkIF9fY25mbiBzaHVmZmxlMihsb25nOCB4LCBsb25nOCB5LCB1bG9uZzIgbWFzayk7CmxvbmcyIF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIobG9uZzE2IHgsIGxvbmcxNiB5LCB1bG9uZzIgbWFzayk7Cgp1bG9uZzIgX19vdmxkIF9fY25mbiBzaHVmZmxlMih1bG9uZzIgeCwgdWxvbmcyIHksIHVsb25nMiBtYXNrKTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIodWxvbmc0IHgsIHVsb25nNCB5LCB1bG9uZzIgbWFzayk7CnVsb25nMiBfX292bGQgX19jbmZuIHNodWZmbGUyKHVsb25nOCB4LCB1bG9uZzggeSwgdWxvbmcyIG1hc2spOwp1bG9uZzIgX19vdmxkIF9fY25mbiBzaHVmZmxlMih1bG9uZzE2IHgsIHVsb25nMTYgeSwgdWxvbmcyIG1hc2spOwoKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIoZmxvYXQyIHgsIGZsb2F0MiB5LCB1aW50MiBtYXNrKTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIoZmxvYXQ0IHgsIGZsb2F0NCB5LCB1aW50MiBtYXNrKTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIoZmxvYXQ4IHgsIGZsb2F0OCB5LCB1aW50MiBtYXNrKTsKZmxvYXQyIF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIoZmxvYXQxNiB4LCBmbG9hdDE2IHksIHVpbnQyIG1hc2spOwoKY2hhcjQgX19vdmxkIF9fY25mbiBzaHVmZmxlMihjaGFyMiB4LCBjaGFyMiB5LCB1Y2hhcjQgbWFzayk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIoY2hhcjQgeCwgY2hhcjQgeSwgdWNoYXI0IG1hc2spOwpjaGFyNCBfX292bGQgX19jbmZuIHNodWZmbGUyKGNoYXI4IHgsIGNoYXI4IHksIHVjaGFyNCBtYXNrKTsKY2hhcjQgX19vdmxkIF9fY25mbiBzaHVmZmxlMihjaGFyMTYgeCwgY2hhcjE2IHksIHVjaGFyNCBtYXNrKTsKCnVjaGFyNCBfX292bGQgX19jbmZuIHNodWZmbGUyKHVjaGFyMiB4LCB1Y2hhcjIgeSwgdWNoYXI0IG1hc2spOwp1Y2hhcjQgX19vdmxkIF9fY25mbiBzaHVmZmxlMih1Y2hhcjQgeCwgdWNoYXI0IHksIHVjaGFyNCBtYXNrKTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIodWNoYXI4IHgsIHVjaGFyOCB5LCB1Y2hhcjQgbWFzayk7CnVjaGFyNCBfX292bGQgX19jbmZuIHNodWZmbGUyKHVjaGFyMTYgeCwgdWNoYXIxNiB5LCB1Y2hhcjQgbWFzayk7CgpzaG9ydDQgX19vdmxkIF9fY25mbiBzaHVmZmxlMihzaG9ydDIgeCwgc2hvcnQyIHksIHVzaG9ydDQgbWFzayk7CnNob3J0NCBfX292bGQgX19jbmZuIHNodWZmbGUyKHNob3J0NCB4LCBzaG9ydDQgeSwgdXNob3J0NCBtYXNrKTsKc2hvcnQ0IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIoc2hvcnQ4IHgsIHNob3J0OCB5LCB1c2hvcnQ0IG1hc2spOwpzaG9ydDQgX19vdmxkIF9fY25mbiBzaHVmZmxlMihzaG9ydDE2IHgsIHNob3J0MTYgeSwgdXNob3J0NCBtYXNrKTsKCnVzaG9ydDQgX19vdmxkIF9fY25mbiBzaHVmZmxlMih1c2hvcnQyIHgsIHVzaG9ydDIgeSwgdXNob3J0NCBtYXNrKTsKdXNob3J0NCBfX292bGQgX19jbmZuIHNodWZmbGUyKHVzaG9ydDQgeCwgdXNob3J0NCB5LCB1c2hvcnQ0IG1hc2spOwp1c2hvcnQ0IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIodXNob3J0OCB4LCB1c2hvcnQ4IHksIHVzaG9ydDQgbWFzayk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBzaHVmZmxlMih1c2hvcnQxNiB4LCB1c2hvcnQxNiB5LCB1c2hvcnQ0IG1hc2spOwoKaW50NCBfX292bGQgX19jbmZuIHNodWZmbGUyKGludDIgeCwgaW50MiB5LCB1aW50NCBtYXNrKTsKaW50NCBfX292bGQgX19jbmZuIHNodWZmbGUyKGludDQgeCwgaW50NCB5LCB1aW50NCBtYXNrKTsKaW50NCBfX292bGQgX19jbmZuIHNodWZmbGUyKGludDggeCwgaW50OCB5LCB1aW50NCBtYXNrKTsKaW50NCBfX292bGQgX19jbmZuIHNodWZmbGUyKGludDE2IHgsIGludDE2IHksIHVpbnQ0IG1hc2spOwoKdWludDQgX19vdmxkIF9fY25mbiBzaHVmZmxlMih1aW50MiB4LCB1aW50MiB5LCB1aW50NCBtYXNrKTsKdWludDQgX19vdmxkIF9fY25mbiBzaHVmZmxlMih1aW50NCB4LCB1aW50NCB5LCB1aW50NCBtYXNrKTsKdWludDQgX19vdmxkIF9fY25mbiBzaHVmZmxlMih1aW50OCB4LCB1aW50OCB5LCB1aW50NCBtYXNrKTsKdWludDQgX19vdmxkIF9fY25mbiBzaHVmZmxlMih1aW50MTYgeCwgdWludDE2IHksIHVpbnQ0IG1hc2spOwoKbG9uZzQgX19vdmxkIF9fY25mbiBzaHVmZmxlMihsb25nMiB4LCBsb25nMiB5LCB1bG9uZzQgbWFzayk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIobG9uZzQgeCwgbG9uZzQgeSwgdWxvbmc0IG1hc2spOwpsb25nNCBfX292bGQgX19jbmZuIHNodWZmbGUyKGxvbmc4IHgsIGxvbmc4IHksIHVsb25nNCBtYXNrKTsKbG9uZzQgX19vdmxkIF9fY25mbiBzaHVmZmxlMihsb25nMTYgeCwgbG9uZzE2IHksIHVsb25nNCBtYXNrKTsKCnVsb25nNCBfX292bGQgX19jbmZuIHNodWZmbGUyKHVsb25nMiB4LCB1bG9uZzIgeSwgdWxvbmc0IG1hc2spOwp1bG9uZzQgX19vdmxkIF9fY25mbiBzaHVmZmxlMih1bG9uZzQgeCwgdWxvbmc0IHksIHVsb25nNCBtYXNrKTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIodWxvbmc4IHgsIHVsb25nOCB5LCB1bG9uZzQgbWFzayk7CnVsb25nNCBfX292bGQgX19jbmZuIHNodWZmbGUyKHVsb25nMTYgeCwgdWxvbmcxNiB5LCB1bG9uZzQgbWFzayk7CgpmbG9hdDQgX19vdmxkIF9fY25mbiBzaHVmZmxlMihmbG9hdDIgeCwgZmxvYXQyIHksIHVpbnQ0IG1hc2spOwpmbG9hdDQgX19vdmxkIF9fY25mbiBzaHVmZmxlMihmbG9hdDQgeCwgZmxvYXQ0IHksIHVpbnQ0IG1hc2spOwpmbG9hdDQgX19vdmxkIF9fY25mbiBzaHVmZmxlMihmbG9hdDggeCwgZmxvYXQ4IHksIHVpbnQ0IG1hc2spOwpmbG9hdDQgX19vdmxkIF9fY25mbiBzaHVmZmxlMihmbG9hdDE2IHgsIGZsb2F0MTYgeSwgdWludDQgbWFzayk7CgpjaGFyOCBfX292bGQgX19jbmZuIHNodWZmbGUyKGNoYXIyIHgsIGNoYXIyIHksIHVjaGFyOCBtYXNrKTsKY2hhcjggX19vdmxkIF9fY25mbiBzaHVmZmxlMihjaGFyNCB4LCBjaGFyNCB5LCB1Y2hhcjggbWFzayk7CmNoYXI4IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIoY2hhcjggeCwgY2hhcjggeSwgdWNoYXI4IG1hc2spOwpjaGFyOCBfX292bGQgX19jbmZuIHNodWZmbGUyKGNoYXIxNiB4LCBjaGFyMTYgeSwgdWNoYXI4IG1hc2spOwoKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIodWNoYXIyIHgsIHVjaGFyMiB5LCB1Y2hhcjggbWFzayk7CnVjaGFyOCBfX292bGQgX19jbmZuIHNodWZmbGUyKHVjaGFyNCB4LCB1Y2hhcjQgeSwgdWNoYXI4IG1hc2spOwp1Y2hhcjggX19vdmxkIF9fY25mbiBzaHVmZmxlMih1Y2hhcjggeCwgdWNoYXI4IHksIHVjaGFyOCBtYXNrKTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIodWNoYXIxNiB4LCB1Y2hhcjE2IHksIHVjaGFyOCBtYXNrKTsKCnNob3J0OCBfX292bGQgX19jbmZuIHNodWZmbGUyKHNob3J0MiB4LCBzaG9ydDIgeSwgdXNob3J0OCBtYXNrKTsKc2hvcnQ4IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIoc2hvcnQ0IHgsIHNob3J0NCB5LCB1c2hvcnQ4IG1hc2spOwpzaG9ydDggX19vdmxkIF9fY25mbiBzaHVmZmxlMihzaG9ydDggeCwgc2hvcnQ4IHksIHVzaG9ydDggbWFzayk7CnNob3J0OCBfX292bGQgX19jbmZuIHNodWZmbGUyKHNob3J0MTYgeCwgc2hvcnQxNiB5LCB1c2hvcnQ4IG1hc2spOwoKdXNob3J0OCBfX292bGQgX19jbmZuIHNodWZmbGUyKHVzaG9ydDIgeCwgdXNob3J0MiB5LCB1c2hvcnQ4IG1hc2spOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIodXNob3J0NCB4LCB1c2hvcnQ0IHksIHVzaG9ydDggbWFzayk7CnVzaG9ydDggX19vdmxkIF9fY25mbiBzaHVmZmxlMih1c2hvcnQ4IHgsIHVzaG9ydDggeSwgdXNob3J0OCBtYXNrKTsKdXNob3J0OCBfX292bGQgX19jbmZuIHNodWZmbGUyKHVzaG9ydDE2IHgsIHVzaG9ydDE2IHksIHVzaG9ydDggbWFzayk7CgppbnQ4IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIoaW50MiB4LCBpbnQyIHksIHVpbnQ4IG1hc2spOwppbnQ4IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIoaW50NCB4LCBpbnQ0IHksIHVpbnQ4IG1hc2spOwppbnQ4IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIoaW50OCB4LCBpbnQ4IHksIHVpbnQ4IG1hc2spOwppbnQ4IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIoaW50MTYgeCwgaW50MTYgeSwgdWludDggbWFzayk7Cgp1aW50OCBfX292bGQgX19jbmZuIHNodWZmbGUyKHVpbnQyIHgsIHVpbnQyIHksIHVpbnQ4IG1hc2spOwp1aW50OCBfX292bGQgX19jbmZuIHNodWZmbGUyKHVpbnQ0IHgsIHVpbnQ0IHksIHVpbnQ4IG1hc2spOwp1aW50OCBfX292bGQgX19jbmZuIHNodWZmbGUyKHVpbnQ4IHgsIHVpbnQ4IHksIHVpbnQ4IG1hc2spOwp1aW50OCBfX292bGQgX19jbmZuIHNodWZmbGUyKHVpbnQxNiB4LCB1aW50MTYgeSwgdWludDggbWFzayk7Cgpsb25nOCBfX292bGQgX19jbmZuIHNodWZmbGUyKGxvbmcyIHgsIGxvbmcyIHksIHVsb25nOCBtYXNrKTsKbG9uZzggX19vdmxkIF9fY25mbiBzaHVmZmxlMihsb25nNCB4LCBsb25nNCB5LCB1bG9uZzggbWFzayk7Cmxvbmc4IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIobG9uZzggeCwgbG9uZzggeSwgdWxvbmc4IG1hc2spOwpsb25nOCBfX292bGQgX19jbmZuIHNodWZmbGUyKGxvbmcxNiB4LCBsb25nMTYgeSwgdWxvbmc4IG1hc2spOwoKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIodWxvbmcyIHgsIHVsb25nMiB5LCB1bG9uZzggbWFzayk7CnVsb25nOCBfX292bGQgX19jbmZuIHNodWZmbGUyKHVsb25nNCB4LCB1bG9uZzQgeSwgdWxvbmc4IG1hc2spOwp1bG9uZzggX19vdmxkIF9fY25mbiBzaHVmZmxlMih1bG9uZzggeCwgdWxvbmc4IHksIHVsb25nOCBtYXNrKTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIodWxvbmcxNiB4LCB1bG9uZzE2IHksIHVsb25nOCBtYXNrKTsKCmZsb2F0OCBfX292bGQgX19jbmZuIHNodWZmbGUyKGZsb2F0MiB4LCBmbG9hdDIgeSwgdWludDggbWFzayk7CmZsb2F0OCBfX292bGQgX19jbmZuIHNodWZmbGUyKGZsb2F0NCB4LCBmbG9hdDQgeSwgdWludDggbWFzayk7CmZsb2F0OCBfX292bGQgX19jbmZuIHNodWZmbGUyKGZsb2F0OCB4LCBmbG9hdDggeSwgdWludDggbWFzayk7CmZsb2F0OCBfX292bGQgX19jbmZuIHNodWZmbGUyKGZsb2F0MTYgeCwgZmxvYXQxNiB5LCB1aW50OCBtYXNrKTsKCmNoYXIxNiBfX292bGQgX19jbmZuIHNodWZmbGUyKGNoYXIyIHgsIGNoYXIyIHksIHVjaGFyMTYgbWFzayk7CmNoYXIxNiBfX292bGQgX19jbmZuIHNodWZmbGUyKGNoYXI0IHgsIGNoYXI0IHksIHVjaGFyMTYgbWFzayk7CmNoYXIxNiBfX292bGQgX19jbmZuIHNodWZmbGUyKGNoYXI4IHgsIGNoYXI4IHksIHVjaGFyMTYgbWFzayk7CmNoYXIxNiBfX292bGQgX19jbmZuIHNodWZmbGUyKGNoYXIxNiB4LCBjaGFyMTYgeSwgdWNoYXIxNiBtYXNrKTsKCnVjaGFyMTYgX19vdmxkIF9fY25mbiBzaHVmZmxlMih1Y2hhcjIgeCwgdWNoYXIyIHksIHVjaGFyMTYgbWFzayk7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBzaHVmZmxlMih1Y2hhcjQgeCwgdWNoYXI0IHksIHVjaGFyMTYgbWFzayk7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBzaHVmZmxlMih1Y2hhcjggeCwgdWNoYXI4IHksIHVjaGFyMTYgbWFzayk7CnVjaGFyMTYgX19vdmxkIF9fY25mbiBzaHVmZmxlMih1Y2hhcjE2IHgsIHVjaGFyMTYgeSwgdWNoYXIxNiBtYXNrKTsKCnNob3J0MTYgX19vdmxkIF9fY25mbiBzaHVmZmxlMihzaG9ydDIgeCwgc2hvcnQyIHksIHVzaG9ydDE2IG1hc2spOwpzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIoc2hvcnQ0IHgsIHNob3J0NCB5LCB1c2hvcnQxNiBtYXNrKTsKc2hvcnQxNiBfX292bGQgX19jbmZuIHNodWZmbGUyKHNob3J0OCB4LCBzaG9ydDggeSwgdXNob3J0MTYgbWFzayk7CnNob3J0MTYgX19vdmxkIF9fY25mbiBzaHVmZmxlMihzaG9ydDE2IHgsIHNob3J0MTYgeSwgdXNob3J0MTYgbWFzayk7Cgp1c2hvcnQxNiBfX292bGQgX19jbmZuIHNodWZmbGUyKHVzaG9ydDIgeCwgdXNob3J0MiB5LCB1c2hvcnQxNiBtYXNrKTsKdXNob3J0MTYgX19vdmxkIF9fY25mbiBzaHVmZmxlMih1c2hvcnQ0IHgsIHVzaG9ydDQgeSwgdXNob3J0MTYgbWFzayk7CnVzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIodXNob3J0OCB4LCB1c2hvcnQ4IHksIHVzaG9ydDE2IG1hc2spOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIHNodWZmbGUyKHVzaG9ydDE2IHgsIHVzaG9ydDE2IHksIHVzaG9ydDE2IG1hc2spOwoKaW50MTYgX19vdmxkIF9fY25mbiBzaHVmZmxlMihpbnQyIHgsIGludDIgeSwgdWludDE2IG1hc2spOwppbnQxNiBfX292bGQgX19jbmZuIHNodWZmbGUyKGludDQgeCwgaW50NCB5LCB1aW50MTYgbWFzayk7CmludDE2IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIoaW50OCB4LCBpbnQ4IHksIHVpbnQxNiBtYXNrKTsKaW50MTYgX19vdmxkIF9fY25mbiBzaHVmZmxlMihpbnQxNiB4LCBpbnQxNiB5LCB1aW50MTYgbWFzayk7Cgp1aW50MTYgX19vdmxkIF9fY25mbiBzaHVmZmxlMih1aW50MiB4LCB1aW50MiB5LCB1aW50MTYgbWFzayk7CnVpbnQxNiBfX292bGQgX19jbmZuIHNodWZmbGUyKHVpbnQ0IHgsIHVpbnQ0IHksIHVpbnQxNiBtYXNrKTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIodWludDggeCwgdWludDggeSwgdWludDE2IG1hc2spOwp1aW50MTYgX19vdmxkIF9fY25mbiBzaHVmZmxlMih1aW50MTYgeCwgdWludDE2IHksIHVpbnQxNiBtYXNrKTsKCmxvbmcxNiBfX292bGQgX19jbmZuIHNodWZmbGUyKGxvbmcyIHgsIGxvbmcyIHksIHVsb25nMTYgbWFzayk7CmxvbmcxNiBfX292bGQgX19jbmZuIHNodWZmbGUyKGxvbmc0IHgsIGxvbmc0IHksIHVsb25nMTYgbWFzayk7CmxvbmcxNiBfX292bGQgX19jbmZuIHNodWZmbGUyKGxvbmc4IHgsIGxvbmc4IHksIHVsb25nMTYgbWFzayk7CmxvbmcxNiBfX292bGQgX19jbmZuIHNodWZmbGUyKGxvbmcxNiB4LCBsb25nMTYgeSwgdWxvbmcxNiBtYXNrKTsKCnVsb25nMTYgX19vdmxkIF9fY25mbiBzaHVmZmxlMih1bG9uZzIgeCwgdWxvbmcyIHksIHVsb25nMTYgbWFzayk7CnVsb25nMTYgX19vdmxkIF9fY25mbiBzaHVmZmxlMih1bG9uZzQgeCwgdWxvbmc0IHksIHVsb25nMTYgbWFzayk7CnVsb25nMTYgX19vdmxkIF9fY25mbiBzaHVmZmxlMih1bG9uZzggeCwgdWxvbmc4IHksIHVsb25nMTYgbWFzayk7CnVsb25nMTYgX19vdmxkIF9fY25mbiBzaHVmZmxlMih1bG9uZzE2IHgsIHVsb25nMTYgeSwgdWxvbmcxNiBtYXNrKTsKCmZsb2F0MTYgX19vdmxkIF9fY25mbiBzaHVmZmxlMihmbG9hdDIgeCwgZmxvYXQyIHksIHVpbnQxNiBtYXNrKTsKZmxvYXQxNiBfX292bGQgX19jbmZuIHNodWZmbGUyKGZsb2F0NCB4LCBmbG9hdDQgeSwgdWludDE2IG1hc2spOwpmbG9hdDE2IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIoZmxvYXQ4IHgsIGZsb2F0OCB5LCB1aW50MTYgbWFzayk7CmZsb2F0MTYgX19vdmxkIF9fY25mbiBzaHVmZmxlMihmbG9hdDE2IHgsIGZsb2F0MTYgeSwgdWludDE2IG1hc2spOwoKI2lmZGVmIGNsX2tocl9mcDY0CmRvdWJsZTIgX19vdmxkIF9fY25mbiBzaHVmZmxlMihkb3VibGUyIHgsIGRvdWJsZTIgeSwgdWxvbmcyIG1hc2spOwpkb3VibGUyIF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIoZG91YmxlNCB4LCBkb3VibGU0IHksIHVsb25nMiBtYXNrKTsKZG91YmxlMiBfX292bGQgX19jbmZuIHNodWZmbGUyKGRvdWJsZTggeCwgZG91YmxlOCB5LCB1bG9uZzIgbWFzayk7CmRvdWJsZTIgX19vdmxkIF9fY25mbiBzaHVmZmxlMihkb3VibGUxNiB4LCBkb3VibGUxNiB5LCB1bG9uZzIgbWFzayk7Cgpkb3VibGU0IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIoZG91YmxlMiB4LCBkb3VibGUyIHksIHVsb25nNCBtYXNrKTsKZG91YmxlNCBfX292bGQgX19jbmZuIHNodWZmbGUyKGRvdWJsZTQgeCwgZG91YmxlNCB5LCB1bG9uZzQgbWFzayk7CmRvdWJsZTQgX19vdmxkIF9fY25mbiBzaHVmZmxlMihkb3VibGU4IHgsIGRvdWJsZTggeSwgdWxvbmc0IG1hc2spOwpkb3VibGU0IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIoZG91YmxlMTYgeCwgZG91YmxlMTYgeSwgdWxvbmc0IG1hc2spOwoKZG91YmxlOCBfX292bGQgX19jbmZuIHNodWZmbGUyKGRvdWJsZTIgeCwgZG91YmxlMiB5LCB1bG9uZzggbWFzayk7CmRvdWJsZTggX19vdmxkIF9fY25mbiBzaHVmZmxlMihkb3VibGU0IHgsIGRvdWJsZTQgeSwgdWxvbmc4IG1hc2spOwpkb3VibGU4IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIoZG91YmxlOCB4LCBkb3VibGU4IHksIHVsb25nOCBtYXNrKTsKZG91YmxlOCBfX292bGQgX19jbmZuIHNodWZmbGUyKGRvdWJsZTE2IHgsIGRvdWJsZTE2IHksIHVsb25nOCBtYXNrKTsKCmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIoZG91YmxlMiB4LCBkb3VibGUyIHksIHVsb25nMTYgbWFzayk7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIoZG91YmxlNCB4LCBkb3VibGU0IHksIHVsb25nMTYgbWFzayk7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIoZG91YmxlOCB4LCBkb3VibGU4IHksIHVsb25nMTYgbWFzayk7CmRvdWJsZTE2IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIoZG91YmxlMTYgeCwgZG91YmxlMTYgeSwgdWxvbmcxNiBtYXNrKTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKCiNpZmRlZiBjbF9raHJfZnAxNgpoYWxmMiBfX292bGQgX19jbmZuIHNodWZmbGUyKGhhbGYyIHgsIGhhbGYyIHksIHVzaG9ydDIgbWFzayk7CmhhbGYyIF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIoaGFsZjQgeCwgaGFsZjQgeSwgdXNob3J0MiBtYXNrKTsKaGFsZjIgX19vdmxkIF9fY25mbiBzaHVmZmxlMihoYWxmOCB4LCBoYWxmOCB5LCB1c2hvcnQyIG1hc2spOwpoYWxmMiBfX292bGQgX19jbmZuIHNodWZmbGUyKGhhbGYxNiB4LCBoYWxmMTYgeSwgdXNob3J0MiBtYXNrKTsKCmhhbGY0IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIoaGFsZjIgeCwgaGFsZjIgeSwgdXNob3J0NCBtYXNrKTsKaGFsZjQgX19vdmxkIF9fY25mbiBzaHVmZmxlMihoYWxmNCB4LCBoYWxmNCB5LCB1c2hvcnQ0IG1hc2spOwpoYWxmNCBfX292bGQgX19jbmZuIHNodWZmbGUyKGhhbGY4IHgsIGhhbGY4IHksIHVzaG9ydDQgbWFzayk7CmhhbGY0IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIoaGFsZjE2IHgsIGhhbGYxNiB5LCB1c2hvcnQ0IG1hc2spOwoKaGFsZjggX19vdmxkIF9fY25mbiBzaHVmZmxlMihoYWxmMiB4LCBoYWxmMiB5LCB1c2hvcnQ4IG1hc2spOwpoYWxmOCBfX292bGQgX19jbmZuIHNodWZmbGUyKGhhbGY0IHgsIGhhbGY0IHksIHVzaG9ydDggbWFzayk7CmhhbGY4IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIoaGFsZjggeCwgaGFsZjggeSwgdXNob3J0OCBtYXNrKTsKaGFsZjggX19vdmxkIF9fY25mbiBzaHVmZmxlMihoYWxmMTYgeCwgaGFsZjE2IHksIHVzaG9ydDggbWFzayk7CgpoYWxmMTYgX19vdmxkIF9fY25mbiBzaHVmZmxlMihoYWxmMiB4LCBoYWxmMiB5LCB1c2hvcnQxNiBtYXNrKTsKaGFsZjE2IF9fb3ZsZCBfX2NuZm4gc2h1ZmZsZTIoaGFsZjQgeCwgaGFsZjQgeSwgdXNob3J0MTYgbWFzayk7CmhhbGYxNiBfX292bGQgX19jbmZuIHNodWZmbGUyKGhhbGY4IHgsIGhhbGY4IHksIHVzaG9ydDE2IG1hc2spOwpoYWxmMTYgX19vdmxkIF9fY25mbiBzaHVmZmxlMihoYWxmMTYgeCwgaGFsZjE2IHksIHVzaG9ydDE2IG1hc2spOwojZW5kaWYgLy9jbF9raHJfZnAxNgoKLy8gT3BlbkNMIHYxLjEgczYuMTEuMywgdjEuMiBzNi4xMi4xNCwgdjIuMCBzNi4xMy4xNCAtIEltYWdlIFJlYWQgYW5kIFdyaXRlIEZ1bmN0aW9ucwoKI2lmZGVmIGNsX2tocl9nbF9tc2FhX3NoYXJpbmcKI3ByYWdtYSBPUEVOQ0wgRVhURU5TSU9OIGNsX2tocl9nbF9tc2FhX3NoYXJpbmcgOiBlbmFibGUKI2VuZGlmIC8vY2xfa2hyX2dsX21zYWFfc2hhcmluZwoKLyoqCiAqIFVzZSB0aGUgY29vcmRpbmF0ZSAoY29vcmQueHkpIHRvIGRvIGFuIGVsZW1lbnQgbG9va3VwIGluCiAqIHRoZSAyRCBpbWFnZSBvYmplY3Qgc3BlY2lmaWVkIGJ5IGltYWdlLgogKgogKiBVc2UgdGhlIGNvb3JkaW5hdGUgKGNvb3JkLngsIGNvb3JkLnksIGNvb3JkLnopIHRvIGRvCiAqIGFuIGVsZW1lbnQgbG9va3VwIGluIHRoZSAzRCBpbWFnZSBvYmplY3Qgc3BlY2lmaWVkCiAqIGJ5IGltYWdlLiBjb29yZC53IGlzIGlnbm9yZWQuCiAqCiAqIFVzZSB0aGUgY29vcmRpbmF0ZSAoY29vcmQueikgdG8gaW5kZXggaW50byB0aGUKICogMkQgaW1hZ2UgYXJyYXkgb2JqZWN0IHNwZWNpZmllZCBieSBpbWFnZV9hcnJheQogKiBhbmQgKGNvb3JkLngsIGNvb3JkLnkpIHRvIGRvIGFuIGVsZW1lbnQgbG9va3VwIGluCiAqIHRoZSAyRCBpbWFnZSBvYmplY3Qgc3BlY2lmaWVkIGJ5IGltYWdlLgogKgogKiBVc2UgdGhlIGNvb3JkaW5hdGUgKHgpIHRvIGRvIGFuIGVsZW1lbnQgbG9va3VwIGluCiAqIHRoZSAxRCBpbWFnZSBvYmplY3Qgc3BlY2lmaWVkIGJ5IGltYWdlLgogKgogKiBVc2UgdGhlIGNvb3JkaW5hdGUgKGNvb3JkLnkpIHRvIGluZGV4IGludG8gdGhlCiAqIDFEIGltYWdlIGFycmF5IG9iamVjdCBzcGVjaWZpZWQgYnkgaW1hZ2VfYXJyYXkKICogYW5kIChjb29yZC54KSB0byBkbyBhbiBlbGVtZW50IGxvb2t1cCBpbgogKiB0aGUgMUQgaW1hZ2Ugb2JqZWN0IHNwZWNpZmllZCBieSBpbWFnZS4KICoKICogVXNlIHRoZSBjb29yZGluYXRlIChjb29kLnh5KSBhbmQgc2FtcGxlIHRvIGRvIGFuCiAqIGVsZW1lbnQgbG9va3VwIGluIHRoZSAyRCBtdWx0aS1zYW1wbGUgaW1hZ2Ugc3BlY2lmaWVkCiAqIGJ5IGltYWdlLgogKgogKiBVc2UgY29vcmQueHkgYW5kIHNhbXBsZSB0byBkbyBhbiBlbGVtZW50CiAqIGxvb2t1cCBpbiB0aGUgMkQgbXVsdGktc2FtcGxlIGltYWdlIGxheWVyCiAqIGlkZW50aWZpZWQgYnkgaW5kZXggY29vcmQueiBpbiB0aGUgMkQgbXVsdGktc2FtcGxlCiAqIGltYWdlIGFycmF5IHNwZWNpZmllZCBieSBpbWFnZS4KICoKICogRm9yIG1pcG1hcCBpbWFnZXMsIHVzZSB0aGUgbWlwLWxldmVsIHNwZWNpZmllZCBieQogKiB0aGUgTGV2ZWwtb2YtRGV0YWlsIChsb2QpIG9yIHVzZSBncmFkaWVudHMgZm9yIExPRAogKiBjb21wdXRhdGlvbi4KICoKICogcmVhZF9pbWFnZWYgcmV0dXJucyBmbG9hdGluZy1wb2ludCB2YWx1ZXMgaW4gdGhlCiAqIHJhbmdlIFswLjAgLi4uIDEuMF0gZm9yIGltYWdlIG9iamVjdHMgY3JlYXRlZCB3aXRoCiAqIGltYWdlX2NoYW5uZWxfZGF0YV90eXBlIHNldCB0byBvbmUgb2YgdGhlIHByZWRlZmluZWQKICogcGFja2VkIGZvcm1hdHMgb3IgQ0xfVU5PUk1fSU5UOCwgb3IKICogQ0xfVU5PUk1fSU5UMTYuCiAqCiAqIHJlYWRfaW1hZ2VmIHJldHVybnMgZmxvYXRpbmctcG9pbnQgdmFsdWVzIGluIHRoZQogKiByYW5nZSBbLTEuMCAuLi4gMS4wXSBmb3IgaW1hZ2Ugb2JqZWN0cyBjcmVhdGVkIHdpdGgKICogaW1hZ2VfY2hhbm5lbF9kYXRhX3R5cGUgc2V0IHRvIENMX1NOT1JNX0lOVDgsCiAqIG9yIENMX1NOT1JNX0lOVDE2LgogKgogKiByZWFkX2ltYWdlZiByZXR1cm5zIGZsb2F0aW5nLXBvaW50IHZhbHVlcyBmb3IgaW1hZ2UKICogb2JqZWN0cyBjcmVhdGVkIHdpdGggaW1hZ2VfY2hhbm5lbF9kYXRhX3R5cGUgc2V0IHRvCiAqIENMX0hBTEZfRkxPQVQgb3IgQ0xfRkxPQVQuCiAqCiAqIHJlYWRfaW1hZ2VpIGFuZCByZWFkX2ltYWdldWkgcmV0dXJuCiAqIHVubm9ybWFsaXplZCBzaWduZWQgaW50ZWdlciBhbmQgdW5zaWduZWQgaW50ZWdlcgogKiB2YWx1ZXMgcmVzcGVjdGl2ZWx5LiBFYWNoIGNoYW5uZWwgd2lsbCBiZSBzdG9yZWQgaW4gYQogKiAzMi1iaXQgaW50ZWdlci4KICoKICogcmVhZF9pbWFnZWkgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIGltYWdlIG9iamVjdHMKICogY3JlYXRlZCB3aXRoIGltYWdlX2NoYW5uZWxfZGF0YV90eXBlIHNldCB0byBvbmUgb2YKICogdGhlIGZvbGxvd2luZyB2YWx1ZXM6CiAqIENMX1NJR05FRF9JTlQ4LAogKiBDTF9TSUdORURfSU5UMTYgYW5kCiAqIENMX1NJR05FRF9JTlQzMi4KICogSWYgdGhlIGltYWdlX2NoYW5uZWxfZGF0YV90eXBlIGlzIG5vdCBvbmUgb2YgdGhlCiAqIGFib3ZlIHZhbHVlcywgdGhlIHZhbHVlcyByZXR1cm5lZCBieSByZWFkX2ltYWdlaQogKiBhcmUgdW5kZWZpbmVkLgogKgogKiByZWFkX2ltYWdldWkgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIGltYWdlIG9iamVjdHMKICogY3JlYXRlZCB3aXRoIGltYWdlX2NoYW5uZWxfZGF0YV90eXBlIHNldCB0byBvbmUgb2YKICogdGhlIGZvbGxvd2luZyB2YWx1ZXM6CiAqIENMX1VOU0lHTkVEX0lOVDgsCiAqIENMX1VOU0lHTkVEX0lOVDE2IGFuZAogKiBDTF9VTlNJR05FRF9JTlQzMi4KICogSWYgdGhlIGltYWdlX2NoYW5uZWxfZGF0YV90eXBlIGlzIG5vdCBvbmUgb2YgdGhlCiAqIGFib3ZlIHZhbHVlcywgdGhlIHZhbHVlcyByZXR1cm5lZCBieSByZWFkX2ltYWdldWkKICogYXJlIHVuZGVmaW5lZC4KICoKICogVGhlIHJlYWRfaW1hZ2V7aXx1aX0gY2FsbHMgc3VwcG9ydCBhIG5lYXJlc3QgZmlsdGVyCiAqIG9ubHkuIFRoZSBmaWx0ZXJfbW9kZSBzcGVjaWZpZWQgaW4gc2FtcGxlcgogKiBtdXN0IGJlIHNldCB0byBDTEtfRklMVEVSX05FQVJFU1Q7IG90aGVyd2lzZQogKiB0aGUgdmFsdWVzIHJldHVybmVkIGFyZSB1bmRlZmluZWQuCgogKiBUaGUgcmVhZF9pbWFnZXtmfGl8dWl9IGNhbGxzIHRoYXQgdGFrZQogKiBpbnRlZ2VyIGNvb3JkaW5hdGVzIG11c3QgdXNlIGEgc2FtcGxlciB3aXRoCiAqIG5vcm1hbGl6ZWQgY29vcmRpbmF0ZXMgc2V0IHRvCiAqIENMS19OT1JNQUxJWkVEX0NPT1JEU19GQUxTRSBhbmQKICogYWRkcmVzc2luZyBtb2RlIHNldCB0bwogKiBDTEtfQUREUkVTU19DTEFNUF9UT19FREdFLAogKiBDTEtfQUREUkVTU19DTEFNUCBvciBDTEtfQUREUkVTU19OT05FOwogKiBvdGhlcndpc2UgdGhlIHZhbHVlcyByZXR1cm5lZCBhcmUgdW5kZWZpbmVkLgogKgogKiBWYWx1ZXMgcmV0dXJuZWQgYnkgcmVhZF9pbWFnZWYgZm9yIGltYWdlIG9iamVjdHMKICogd2l0aCBpbWFnZV9jaGFubmVsX2RhdGFfdHlwZSB2YWx1ZXMgbm90IHNwZWNpZmllZAogKiBpbiB0aGUgZGVzY3JpcHRpb24gYWJvdmUgYXJlIHVuZGVmaW5lZC4KICovCgpmbG9hdDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2VmKHJlYWRfb25seSBpbWFnZTJkX3QgaW1hZ2UsIHNhbXBsZXJfdCBzYW1wbGVyLCBpbnQyIGNvb3JkKTsKZmxvYXQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlZihyZWFkX29ubHkgaW1hZ2UyZF90IGltYWdlLCBzYW1wbGVyX3Qgc2FtcGxlciwgZmxvYXQyIGNvb3JkKTsKCmludDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2VpKHJlYWRfb25seSBpbWFnZTJkX3QgaW1hZ2UsIHNhbXBsZXJfdCBzYW1wbGVyLCBpbnQyIGNvb3JkKTsKaW50NCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZWkocmVhZF9vbmx5IGltYWdlMmRfdCBpbWFnZSwgc2FtcGxlcl90IHNhbXBsZXIsIGZsb2F0MiBjb29yZCk7CnVpbnQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdldWkocmVhZF9vbmx5IGltYWdlMmRfdCBpbWFnZSwgc2FtcGxlcl90IHNhbXBsZXIsIGludDIgY29vcmQpOwp1aW50NCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZXVpKHJlYWRfb25seSBpbWFnZTJkX3QgaW1hZ2UsIHNhbXBsZXJfdCBzYW1wbGVyLCBmbG9hdDIgY29vcmQpOwoKZmxvYXQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlZihyZWFkX29ubHkgaW1hZ2UzZF90IGltYWdlLCBzYW1wbGVyX3Qgc2FtcGxlciwgaW50NCBjb29yZCk7CmZsb2F0NCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZWYocmVhZF9vbmx5IGltYWdlM2RfdCBpbWFnZSwgc2FtcGxlcl90IHNhbXBsZXIsIGZsb2F0NCBjb29yZCk7CgppbnQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlaShyZWFkX29ubHkgaW1hZ2UzZF90IGltYWdlLCBzYW1wbGVyX3Qgc2FtcGxlciwgaW50NCBjb29yZCk7CmludDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2VpKHJlYWRfb25seSBpbWFnZTNkX3QgaW1hZ2UsIHNhbXBsZXJfdCBzYW1wbGVyLCBmbG9hdDQgY29vcmQpOwp1aW50NCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZXVpKHJlYWRfb25seSBpbWFnZTNkX3QgaW1hZ2UsIHNhbXBsZXJfdCBzYW1wbGVyLCBpbnQ0IGNvb3JkKTsKdWludDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2V1aShyZWFkX29ubHkgaW1hZ2UzZF90IGltYWdlLCBzYW1wbGVyX3Qgc2FtcGxlciwgZmxvYXQ0IGNvb3JkKTsKCiNpZiBkZWZpbmVkKF9fT1BFTkNMX0NQUF9WRVJTSU9OX18pIHx8IChfX09QRU5DTF9DX1ZFUlNJT05fXyA+PSBDTF9WRVJTSU9OXzFfMikKZmxvYXQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlZihyZWFkX29ubHkgaW1hZ2UyZF9hcnJheV90IGltYWdlX2FycmF5LCBzYW1wbGVyX3Qgc2FtcGxlciwgaW50NCBjb29yZCk7CmZsb2F0NCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZWYocmVhZF9vbmx5IGltYWdlMmRfYXJyYXlfdCBpbWFnZV9hcnJheSwgc2FtcGxlcl90IHNhbXBsZXIsIGZsb2F0NCBjb29yZCk7CgppbnQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlaShyZWFkX29ubHkgaW1hZ2UyZF9hcnJheV90IGltYWdlX2FycmF5LCBzYW1wbGVyX3Qgc2FtcGxlciwgaW50NCBjb29yZCk7CmludDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2VpKHJlYWRfb25seSBpbWFnZTJkX2FycmF5X3QgaW1hZ2VfYXJyYXksIHNhbXBsZXJfdCBzYW1wbGVyLCBmbG9hdDQgY29vcmQpOwp1aW50NCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZXVpKHJlYWRfb25seSBpbWFnZTJkX2FycmF5X3QgaW1hZ2VfYXJyYXksIHNhbXBsZXJfdCBzYW1wbGVyLCBpbnQ0IGNvb3JkKTsKdWludDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2V1aShyZWFkX29ubHkgaW1hZ2UyZF9hcnJheV90IGltYWdlX2FycmF5LCBzYW1wbGVyX3Qgc2FtcGxlciwgZmxvYXQ0IGNvb3JkKTsKI2VuZGlmIC8vIGRlZmluZWQoX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXykgfHwgKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fMV8yKQoKZmxvYXQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlZihyZWFkX29ubHkgaW1hZ2UxZF90IGltYWdlLCBzYW1wbGVyX3Qgc2FtcGxlciwgaW50IGNvb3JkKTsKZmxvYXQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlZihyZWFkX29ubHkgaW1hZ2UxZF90IGltYWdlLCBzYW1wbGVyX3Qgc2FtcGxlciwgZmxvYXQgY29vcmQpOwoKaW50NCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZWkocmVhZF9vbmx5IGltYWdlMWRfdCBpbWFnZSwgc2FtcGxlcl90IHNhbXBsZXIsIGludCBjb29yZCk7CmludDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2VpKHJlYWRfb25seSBpbWFnZTFkX3QgaW1hZ2UsIHNhbXBsZXJfdCBzYW1wbGVyLCBmbG9hdCBjb29yZCk7CnVpbnQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdldWkocmVhZF9vbmx5IGltYWdlMWRfdCBpbWFnZSwgc2FtcGxlcl90IHNhbXBsZXIsIGludCBjb29yZCk7CnVpbnQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdldWkocmVhZF9vbmx5IGltYWdlMWRfdCBpbWFnZSwgc2FtcGxlcl90IHNhbXBsZXIsIGZsb2F0IGNvb3JkKTsKCiNpZiBkZWZpbmVkKF9fT1BFTkNMX0NQUF9WRVJTSU9OX18pIHx8IChfX09QRU5DTF9DX1ZFUlNJT05fXyA+PSBDTF9WRVJTSU9OXzFfMikKZmxvYXQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlZihyZWFkX29ubHkgaW1hZ2UxZF9hcnJheV90IGltYWdlX2FycmF5LCBzYW1wbGVyX3Qgc2FtcGxlciwgaW50MiBjb29yZCk7CmZsb2F0NCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZWYocmVhZF9vbmx5IGltYWdlMWRfYXJyYXlfdCBpbWFnZV9hcnJheSwgc2FtcGxlcl90IHNhbXBsZXIsIGZsb2F0MiBjb29yZCk7CgppbnQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlaShyZWFkX29ubHkgaW1hZ2UxZF9hcnJheV90IGltYWdlX2FycmF5LCBzYW1wbGVyX3Qgc2FtcGxlciwgaW50MiBjb29yZCk7CmludDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2VpKHJlYWRfb25seSBpbWFnZTFkX2FycmF5X3QgaW1hZ2VfYXJyYXksIHNhbXBsZXJfdCBzYW1wbGVyLCBmbG9hdDIgY29vcmQpOwp1aW50NCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZXVpKHJlYWRfb25seSBpbWFnZTFkX2FycmF5X3QgaW1hZ2VfYXJyYXksIHNhbXBsZXJfdCBzYW1wbGVyLCBpbnQyIGNvb3JkKTsKdWludDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2V1aShyZWFkX29ubHkgaW1hZ2UxZF9hcnJheV90IGltYWdlX2FycmF5LCBzYW1wbGVyX3Qgc2FtcGxlciwgZmxvYXQyIGNvb3JkKTsKI2VuZGlmIC8vIGRlZmluZWQoX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXykgfHwgKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fMV8yKQoKI2lmZGVmIGNsX2tocl9kZXB0aF9pbWFnZXMKZmxvYXQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2VmKHJlYWRfb25seSBpbWFnZTJkX2RlcHRoX3QgaW1hZ2UsIHNhbXBsZXJfdCBzYW1wbGVyLCBmbG9hdDIgY29vcmQpOwpmbG9hdCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZWYocmVhZF9vbmx5IGltYWdlMmRfZGVwdGhfdCBpbWFnZSwgc2FtcGxlcl90IHNhbXBsZXIsIGludDIgY29vcmQpOwoKZmxvYXQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2VmKHJlYWRfb25seSBpbWFnZTJkX2FycmF5X2RlcHRoX3QgaW1hZ2UsIHNhbXBsZXJfdCBzYW1wbGVyLCBmbG9hdDQgY29vcmQpOwpmbG9hdCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZWYocmVhZF9vbmx5IGltYWdlMmRfYXJyYXlfZGVwdGhfdCBpbWFnZSwgc2FtcGxlcl90IHNhbXBsZXIsIGludDQgY29vcmQpOwojZW5kaWYgLy9jbF9raHJfZGVwdGhfaW1hZ2VzCgojaWYgZGVmaW5lZChjbF9raHJfZ2xfbXNhYV9zaGFyaW5nKQpmbG9hdDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2VmKHJlYWRfb25seSBpbWFnZTJkX21zYWFfdCBpbWFnZSwgaW50MiBjb29yZCwgaW50IHNhbXBsZSk7CmludDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2VpKHJlYWRfb25seSBpbWFnZTJkX21zYWFfdCBpbWFnZSwgaW50MiBjb29yZCwgaW50IHNhbXBsZSk7CnVpbnQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdldWkocmVhZF9vbmx5IGltYWdlMmRfbXNhYV90IGltYWdlLCBpbnQyIGNvb3JkLCBpbnQgc2FtcGxlKTsKCmZsb2F0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlZihyZWFkX29ubHkgaW1hZ2UyZF9tc2FhX2RlcHRoX3QgaW1hZ2UsIGludDIgY29vcmQsIGludCBzYW1wbGUpOwoKZmxvYXQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlZihyZWFkX29ubHkgaW1hZ2UyZF9hcnJheV9tc2FhX3QgaW1hZ2UsIGludDQgY29vcmQsIGludCBzYW1wbGUpOwppbnQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlaShyZWFkX29ubHkgaW1hZ2UyZF9hcnJheV9tc2FhX3QgaW1hZ2UsIGludDQgY29vcmQsIGludCBzYW1wbGUpOwp1aW50NCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZXVpKHJlYWRfb25seSBpbWFnZTJkX2FycmF5X21zYWFfdCBpbWFnZSwgaW50NCBjb29yZCwgaW50IHNhbXBsZSk7CgpmbG9hdCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZWYocmVhZF9vbmx5IGltYWdlMmRfYXJyYXlfbXNhYV9kZXB0aF90IGltYWdlLCBpbnQ0IGNvb3JkLCBpbnQgc2FtcGxlKTsKI2VuZGlmIC8vY2xfa2hyX2dsX21zYWFfc2hhcmluZwoKLy8gT3BlbkNMIEV4dGVuc2lvbiB2Mi4wIHM5LjE4IC0gTWlwbWFwcwojaWYgZGVmaW5lZChfX09QRU5DTF9DUFBfVkVSU0lPTl9fKSB8fCAoX19PUEVOQ0xfQ19WRVJTSU9OX18gPj0gQ0xfVkVSU0lPTl8yXzApCiNpZmRlZiBjbF9raHJfbWlwbWFwX2ltYWdlCgpmbG9hdDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2VmKHJlYWRfb25seSBpbWFnZTFkX3QgaW1hZ2UsIHNhbXBsZXJfdCBzYW1wbGVyLCBmbG9hdCBjb29yZCwgZmxvYXQgbG9kKTsKaW50NCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZWkocmVhZF9vbmx5IGltYWdlMWRfdCBpbWFnZSwgc2FtcGxlcl90IHNhbXBsZXIsIGZsb2F0IGNvb3JkLCBmbG9hdCBsb2QpOwp1aW50NCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZXVpKHJlYWRfb25seSBpbWFnZTFkX3QgaW1hZ2UsIHNhbXBsZXJfdCBzYW1wbGVyLCBmbG9hdCBjb29yZCwgZmxvYXQgbG9kKTsKCmZsb2F0NCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZWYocmVhZF9vbmx5IGltYWdlMWRfYXJyYXlfdCBpbWFnZV9hcnJheSwgc2FtcGxlcl90IHNhbXBsZXIsIGZsb2F0MiBjb29yZCwgZmxvYXQgbG9kKTsKaW50NCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZWkocmVhZF9vbmx5IGltYWdlMWRfYXJyYXlfdCBpbWFnZV9hcnJheSwgc2FtcGxlcl90IHNhbXBsZXIsIGZsb2F0MiBjb29yZCwgZmxvYXQgbG9kKTsKdWludDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2V1aShyZWFkX29ubHkgaW1hZ2UxZF9hcnJheV90IGltYWdlX2FycmF5LCBzYW1wbGVyX3Qgc2FtcGxlciwgZmxvYXQyIGNvb3JkLCBmbG9hdCBsb2QpOwoKZmxvYXQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlZihyZWFkX29ubHkgaW1hZ2UyZF90IGltYWdlLCBzYW1wbGVyX3Qgc2FtcGxlciwgZmxvYXQyIGNvb3JkLCBmbG9hdCBsb2QpOwppbnQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlaShyZWFkX29ubHkgaW1hZ2UyZF90IGltYWdlLCBzYW1wbGVyX3Qgc2FtcGxlciwgZmxvYXQyIGNvb3JkLCBmbG9hdCBsb2QpOwp1aW50NCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZXVpKHJlYWRfb25seSBpbWFnZTJkX3QgaW1hZ2UsIHNhbXBsZXJfdCBzYW1wbGVyLCBmbG9hdDIgY29vcmQsIGZsb2F0IGxvZCk7CgpmbG9hdCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZWYocmVhZF9vbmx5IGltYWdlMmRfZGVwdGhfdCBpbWFnZSwgc2FtcGxlcl90IHNhbXBsZXIsIGZsb2F0MiBjb29yZCwgZmxvYXQgbG9kKTsKCmZsb2F0NCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZWYocmVhZF9vbmx5IGltYWdlMmRfYXJyYXlfdCBpbWFnZV9hcnJheSwgc2FtcGxlcl90IHNhbXBsZXIsIGZsb2F0NCBjb29yZCwgZmxvYXQgbG9kKTsKaW50NCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZWkocmVhZF9vbmx5IGltYWdlMmRfYXJyYXlfdCBpbWFnZV9hcnJheSwgc2FtcGxlcl90IHNhbXBsZXIsIGZsb2F0NCBjb29yZCwgZmxvYXQgbG9kKTsKdWludDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2V1aShyZWFkX29ubHkgaW1hZ2UyZF9hcnJheV90IGltYWdlX2FycmF5LCBzYW1wbGVyX3Qgc2FtcGxlciwgZmxvYXQ0IGNvb3JkLCBmbG9hdCBsb2QpOwoKZmxvYXQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2VmKHJlYWRfb25seSBpbWFnZTJkX2FycmF5X2RlcHRoX3QgaW1hZ2UsIHNhbXBsZXJfdCBzYW1wbGVyLCBmbG9hdDQgY29vcmQsIGZsb2F0IGxvZCk7CgpmbG9hdDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2VmKHJlYWRfb25seSBpbWFnZTNkX3QgaW1hZ2UsIHNhbXBsZXJfdCBzYW1wbGVyLCBmbG9hdDQgY29vcmQsIGZsb2F0IGxvZCk7CmludDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2VpKHJlYWRfb25seSBpbWFnZTNkX3QgaW1hZ2UsIHNhbXBsZXJfdCBzYW1wbGVyLCBmbG9hdDQgY29vcmQsIGZsb2F0IGxvZCk7CnVpbnQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdldWkocmVhZF9vbmx5IGltYWdlM2RfdCBpbWFnZSwgc2FtcGxlcl90IHNhbXBsZXIsIGZsb2F0NCBjb29yZCwgZmxvYXQgbG9kKTsKCmZsb2F0NCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZWYocmVhZF9vbmx5IGltYWdlMWRfdCBpbWFnZSwgc2FtcGxlcl90IHNhbXBsZXIsIGZsb2F0IGNvb3JkLCBmbG9hdCBncmFkaWVudFgsIGZsb2F0IGdyYWRpZW50WSk7CmludDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2VpKHJlYWRfb25seSBpbWFnZTFkX3QgaW1hZ2UsIHNhbXBsZXJfdCBzYW1wbGVyLCBmbG9hdCBjb29yZCwgZmxvYXQgZ3JhZGllbnRYLCBmbG9hdCBncmFkaWVudFkpOwp1aW50NCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZXVpKHJlYWRfb25seSBpbWFnZTFkX3QgaW1hZ2UsIHNhbXBsZXJfdCBzYW1wbGVyLCBmbG9hdCBjb29yZCwgZmxvYXQgZ3JhZGllbnRYLCBmbG9hdCBncmFkaWVudFkpOwoKZmxvYXQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlZihyZWFkX29ubHkgaW1hZ2UxZF9hcnJheV90IGltYWdlX2FycmF5LCBzYW1wbGVyX3Qgc2FtcGxlciwgZmxvYXQyIGNvb3JkLCBmbG9hdCBncmFkaWVudFgsIGZsb2F0IGdyYWRpZW50WSk7CmludDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2VpKHJlYWRfb25seSBpbWFnZTFkX2FycmF5X3QgaW1hZ2VfYXJyYXksIHNhbXBsZXJfdCBzYW1wbGVyLCBmbG9hdDIgY29vcmQsIGZsb2F0IGdyYWRpZW50WCwgZmxvYXQgZ3JhZGllbnRZKTsKdWludDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2V1aShyZWFkX29ubHkgaW1hZ2UxZF9hcnJheV90IGltYWdlX2FycmF5LCBzYW1wbGVyX3Qgc2FtcGxlciwgZmxvYXQyIGNvb3JkLCBmbG9hdCBncmFkaWVudFgsIGZsb2F0IGdyYWRpZW50WSk7CgpmbG9hdDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2VmKHJlYWRfb25seSBpbWFnZTJkX3QgaW1hZ2UsIHNhbXBsZXJfdCBzYW1wbGVyLCBmbG9hdDIgY29vcmQsIGZsb2F0MiBncmFkaWVudFgsIGZsb2F0MiBncmFkaWVudFkpOwppbnQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlaShyZWFkX29ubHkgaW1hZ2UyZF90IGltYWdlLCBzYW1wbGVyX3Qgc2FtcGxlciwgZmxvYXQyIGNvb3JkLCBmbG9hdDIgZ3JhZGllbnRYLCBmbG9hdDIgZ3JhZGllbnRZKTsKdWludDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2V1aShyZWFkX29ubHkgaW1hZ2UyZF90IGltYWdlLCBzYW1wbGVyX3Qgc2FtcGxlciwgZmxvYXQyIGNvb3JkLCBmbG9hdDIgZ3JhZGllbnRYLCBmbG9hdDIgZ3JhZGllbnRZKTsKCmZsb2F0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlZihyZWFkX29ubHkgaW1hZ2UyZF9kZXB0aF90IGltYWdlLCBzYW1wbGVyX3Qgc2FtcGxlciwgZmxvYXQyIGNvb3JkLCBmbG9hdDIgZ3JhZGllbnRYLCBmbG9hdDIgZ3JhZGllbnRZKTsKCmZsb2F0NCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZWYocmVhZF9vbmx5IGltYWdlMmRfYXJyYXlfdCBpbWFnZV9hcnJheSwgc2FtcGxlcl90IHNhbXBsZXIsIGZsb2F0NCBjb29yZCwgZmxvYXQyIGdyYWRpZW50WCwgZmxvYXQyIGdyYWRpZW50WSk7CmludDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2VpKHJlYWRfb25seSBpbWFnZTJkX2FycmF5X3QgaW1hZ2VfYXJyYXksIHNhbXBsZXJfdCBzYW1wbGVyLCBmbG9hdDQgY29vcmQsIGZsb2F0MiBncmFkaWVudFgsIGZsb2F0MiBncmFkaWVudFkpOwp1aW50NCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZXVpKHJlYWRfb25seSBpbWFnZTJkX2FycmF5X3QgaW1hZ2VfYXJyYXksIHNhbXBsZXJfdCBzYW1wbGVyLCBmbG9hdDQgY29vcmQsIGZsb2F0MiBncmFkaWVudFgsIGZsb2F0MiBncmFkaWVudFkpOwoKZmxvYXQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2VmKHJlYWRfb25seSBpbWFnZTJkX2FycmF5X2RlcHRoX3QgaW1hZ2UsIHNhbXBsZXJfdCBzYW1wbGVyLCBmbG9hdDQgY29vcmQsIGZsb2F0MiBncmFkaWVudFgsIGZsb2F0MiBncmFkaWVudFkpOwoKZmxvYXQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlZihyZWFkX29ubHkgaW1hZ2UzZF90IGltYWdlLCBzYW1wbGVyX3Qgc2FtcGxlciwgZmxvYXQ0IGNvb3JkLCBmbG9hdDQgZ3JhZGllbnRYLCBmbG9hdDQgZ3JhZGllbnRZKTsKaW50NCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZWkocmVhZF9vbmx5IGltYWdlM2RfdCBpbWFnZSwgc2FtcGxlcl90IHNhbXBsZXIsIGZsb2F0NCBjb29yZCwgZmxvYXQ0IGdyYWRpZW50WCwgZmxvYXQ0IGdyYWRpZW50WSk7CnVpbnQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdldWkocmVhZF9vbmx5IGltYWdlM2RfdCBpbWFnZSwgc2FtcGxlcl90IHNhbXBsZXIsIGZsb2F0NCBjb29yZCwgZmxvYXQ0IGdyYWRpZW50WCwgZmxvYXQ0IGdyYWRpZW50WSk7CgojZW5kaWYgLy9jbF9raHJfbWlwbWFwX2ltYWdlCiNlbmRpZiAvL2RlZmluZWQoX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXykgfHwgKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fMl8wKQoKI2lmIGRlZmluZWQoX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXykgfHwgKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fMV8yKQoKLyoqCiogU2FtcGxlci1sZXNzIEltYWdlIEFjY2VzcwoqLwoKZmxvYXQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlZihyZWFkX29ubHkgaW1hZ2UxZF90IGltYWdlLCBpbnQgY29vcmQpOwppbnQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlaShyZWFkX29ubHkgaW1hZ2UxZF90IGltYWdlLCBpbnQgY29vcmQpOwp1aW50NCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZXVpKHJlYWRfb25seSBpbWFnZTFkX3QgaW1hZ2UsIGludCBjb29yZCk7CgpmbG9hdDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2VmKHJlYWRfb25seSBpbWFnZTFkX2J1ZmZlcl90IGltYWdlLCBpbnQgY29vcmQpOwppbnQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlaShyZWFkX29ubHkgaW1hZ2UxZF9idWZmZXJfdCBpbWFnZSwgaW50IGNvb3JkKTsKdWludDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2V1aShyZWFkX29ubHkgaW1hZ2UxZF9idWZmZXJfdCBpbWFnZSwgaW50IGNvb3JkKTsKCmZsb2F0NCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZWYocmVhZF9vbmx5IGltYWdlMWRfYXJyYXlfdCBpbWFnZSwgaW50MiBjb29yZCk7CmludDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2VpKHJlYWRfb25seSBpbWFnZTFkX2FycmF5X3QgaW1hZ2UsIGludDIgY29vcmQpOwp1aW50NCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZXVpKHJlYWRfb25seSBpbWFnZTFkX2FycmF5X3QgaW1hZ2UsIGludDIgY29vcmQpOwoKZmxvYXQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlZihyZWFkX29ubHkgaW1hZ2UyZF90IGltYWdlLCBpbnQyIGNvb3JkKTsKaW50NCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZWkocmVhZF9vbmx5IGltYWdlMmRfdCBpbWFnZSwgaW50MiBjb29yZCk7CnVpbnQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdldWkocmVhZF9vbmx5IGltYWdlMmRfdCBpbWFnZSwgaW50MiBjb29yZCk7CgpmbG9hdDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2VmKHJlYWRfb25seSBpbWFnZTJkX2FycmF5X3QgaW1hZ2UsIGludDQgY29vcmQpOwppbnQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlaShyZWFkX29ubHkgaW1hZ2UyZF9hcnJheV90IGltYWdlLCBpbnQ0IGNvb3JkKTsKdWludDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2V1aShyZWFkX29ubHkgaW1hZ2UyZF9hcnJheV90IGltYWdlLCBpbnQ0IGNvb3JkKTsKCiNpZmRlZiBjbF9raHJfZGVwdGhfaW1hZ2VzCmZsb2F0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlZihyZWFkX29ubHkgaW1hZ2UyZF9kZXB0aF90IGltYWdlLCBpbnQyIGNvb3JkKTsKZmxvYXQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2VmKHJlYWRfb25seSBpbWFnZTJkX2FycmF5X2RlcHRoX3QgaW1hZ2UsIGludDQgY29vcmQpOwojZW5kaWYgLy9jbF9raHJfZGVwdGhfaW1hZ2VzCgpmbG9hdDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2VmKHJlYWRfb25seSBpbWFnZTNkX3QgaW1hZ2UsIGludDQgY29vcmQpOwppbnQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlaShyZWFkX29ubHkgaW1hZ2UzZF90IGltYWdlLCBpbnQ0IGNvb3JkKTsKdWludDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2V1aShyZWFkX29ubHkgaW1hZ2UzZF90IGltYWdlLCBpbnQ0IGNvb3JkKTsKCiNlbmRpZiAvLyBkZWZpbmVkKF9fT1BFTkNMX0NQUF9WRVJTSU9OX18pIHx8IChfX09QRU5DTF9DX1ZFUlNJT05fXyA+PSBDTF9WRVJTSU9OXzFfMikKCi8vIEltYWdlIHJlYWQgZnVuY3Rpb25zIHJldHVybmluZyBoYWxmNCB0eXBlCiNpZmRlZiBjbF9raHJfZnAxNgpoYWxmNCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZWgocmVhZF9vbmx5IGltYWdlMWRfdCBpbWFnZSwgc2FtcGxlcl90IHNhbXBsZXIsIGludCBjb29yZCk7CmhhbGY0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlaChyZWFkX29ubHkgaW1hZ2UxZF90IGltYWdlLCBzYW1wbGVyX3Qgc2FtcGxlciwgZmxvYXQgY29vcmQpOwpoYWxmNCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZWgocmVhZF9vbmx5IGltYWdlMmRfdCBpbWFnZSwgc2FtcGxlcl90IHNhbXBsZXIsIGludDIgY29vcmQpOwpoYWxmNCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZWgocmVhZF9vbmx5IGltYWdlMmRfdCBpbWFnZSwgc2FtcGxlcl90IHNhbXBsZXIsIGZsb2F0MiBjb29yZCk7CmhhbGY0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlaChyZWFkX29ubHkgaW1hZ2UzZF90IGltYWdlLCBzYW1wbGVyX3Qgc2FtcGxlciwgaW50NCBjb29yZCk7CmhhbGY0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlaChyZWFkX29ubHkgaW1hZ2UzZF90IGltYWdlLCBzYW1wbGVyX3Qgc2FtcGxlciwgZmxvYXQ0IGNvb3JkKTsKI2lmIGRlZmluZWQoX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXykgfHwgKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fMV8yKQpoYWxmNCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZWgocmVhZF9vbmx5IGltYWdlMWRfYXJyYXlfdCBpbWFnZSwgc2FtcGxlcl90IHNhbXBsZXIsIGludDIgY29vcmQpOwpoYWxmNCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZWgocmVhZF9vbmx5IGltYWdlMWRfYXJyYXlfdCBpbWFnZSwgc2FtcGxlcl90IHNhbXBsZXIsIGZsb2F0MiBjb29yZCk7CmhhbGY0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlaChyZWFkX29ubHkgaW1hZ2UyZF9hcnJheV90IGltYWdlLCBzYW1wbGVyX3Qgc2FtcGxlciwgaW50NCBjb29yZCk7CmhhbGY0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlaChyZWFkX29ubHkgaW1hZ2UyZF9hcnJheV90IGltYWdlLCBzYW1wbGVyX3Qgc2FtcGxlciwgZmxvYXQ0IGNvb3JkKTsKLyoqCiAqIFNhbXBsZXItbGVzcyBJbWFnZSBBY2Nlc3MKICovCmhhbGY0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlaChyZWFkX29ubHkgaW1hZ2UxZF90IGltYWdlLCBpbnQgY29vcmQpOwpoYWxmNCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZWgocmVhZF9vbmx5IGltYWdlMmRfdCBpbWFnZSwgaW50MiBjb29yZCk7CmhhbGY0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlaChyZWFkX29ubHkgaW1hZ2UzZF90IGltYWdlLCBpbnQ0IGNvb3JkKTsKaGFsZjQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2VoKHJlYWRfb25seSBpbWFnZTFkX2FycmF5X3QgaW1hZ2UsIGludDIgY29vcmQpOwpoYWxmNCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZWgocmVhZF9vbmx5IGltYWdlMmRfYXJyYXlfdCBpbWFnZSwgaW50NCBjb29yZCk7CmhhbGY0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlaChyZWFkX29ubHkgaW1hZ2UxZF9idWZmZXJfdCBpbWFnZSwgaW50IGNvb3JkKTsKI2VuZGlmIC8vIGRlZmluZWQoX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXykgfHwgKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fMV8yKQojZW5kaWYgLy9jbF9raHJfZnAxNgoKLy8gSW1hZ2UgcmVhZCBmdW5jdGlvbnMgZm9yIHJlYWRfd3JpdGUgaW1hZ2VzCiNpZiBkZWZpbmVkKF9fT1BFTkNMX0NQUF9WRVJTSU9OX18pIHx8IChfX09QRU5DTF9DX1ZFUlNJT05fXyA+PSBDTF9WRVJTSU9OXzJfMCkKZmxvYXQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlZihyZWFkX3dyaXRlIGltYWdlMWRfdCBpbWFnZSwgaW50IGNvb3JkKTsKaW50NCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZWkocmVhZF93cml0ZSBpbWFnZTFkX3QgaW1hZ2UsIGludCBjb29yZCk7CnVpbnQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdldWkocmVhZF93cml0ZSBpbWFnZTFkX3QgaW1hZ2UsIGludCBjb29yZCk7CgpmbG9hdDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2VmKHJlYWRfd3JpdGUgaW1hZ2UxZF9idWZmZXJfdCBpbWFnZSwgaW50IGNvb3JkKTsKaW50NCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZWkocmVhZF93cml0ZSBpbWFnZTFkX2J1ZmZlcl90IGltYWdlLCBpbnQgY29vcmQpOwp1aW50NCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZXVpKHJlYWRfd3JpdGUgaW1hZ2UxZF9idWZmZXJfdCBpbWFnZSwgaW50IGNvb3JkKTsKCmZsb2F0NCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZWYocmVhZF93cml0ZSBpbWFnZTFkX2FycmF5X3QgaW1hZ2UsIGludDIgY29vcmQpOwppbnQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlaShyZWFkX3dyaXRlIGltYWdlMWRfYXJyYXlfdCBpbWFnZSwgaW50MiBjb29yZCk7CnVpbnQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdldWkocmVhZF93cml0ZSBpbWFnZTFkX2FycmF5X3QgaW1hZ2UsIGludDIgY29vcmQpOwoKZmxvYXQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlZihyZWFkX3dyaXRlIGltYWdlMmRfdCBpbWFnZSwgaW50MiBjb29yZCk7CmludDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2VpKHJlYWRfd3JpdGUgaW1hZ2UyZF90IGltYWdlLCBpbnQyIGNvb3JkKTsKdWludDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2V1aShyZWFkX3dyaXRlIGltYWdlMmRfdCBpbWFnZSwgaW50MiBjb29yZCk7CgpmbG9hdDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2VmKHJlYWRfd3JpdGUgaW1hZ2UyZF9hcnJheV90IGltYWdlLCBpbnQ0IGNvb3JkKTsKaW50NCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZWkocmVhZF93cml0ZSBpbWFnZTJkX2FycmF5X3QgaW1hZ2UsIGludDQgY29vcmQpOwp1aW50NCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZXVpKHJlYWRfd3JpdGUgaW1hZ2UyZF9hcnJheV90IGltYWdlLCBpbnQ0IGNvb3JkKTsKCmZsb2F0NCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZWYocmVhZF93cml0ZSBpbWFnZTNkX3QgaW1hZ2UsIGludDQgY29vcmQpOwppbnQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlaShyZWFkX3dyaXRlIGltYWdlM2RfdCBpbWFnZSwgaW50NCBjb29yZCk7CnVpbnQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdldWkocmVhZF93cml0ZSBpbWFnZTNkX3QgaW1hZ2UsIGludDQgY29vcmQpOwoKI2lmZGVmIGNsX2tocl9kZXB0aF9pbWFnZXMKZmxvYXQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2VmKHJlYWRfd3JpdGUgaW1hZ2UyZF9kZXB0aF90IGltYWdlLCBpbnQyIGNvb3JkKTsKZmxvYXQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2VmKHJlYWRfd3JpdGUgaW1hZ2UyZF9hcnJheV9kZXB0aF90IGltYWdlLCBpbnQ0IGNvb3JkKTsKI2VuZGlmIC8vY2xfa2hyX2RlcHRoX2ltYWdlcwoKI2lmIGNsX2tocl9nbF9tc2FhX3NoYXJpbmcKZmxvYXQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlZihyZWFkX3dyaXRlIGltYWdlMmRfbXNhYV90IGltYWdlLCBpbnQyIGNvb3JkLCBpbnQgc2FtcGxlKTsKaW50NCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZWkocmVhZF93cml0ZSBpbWFnZTJkX21zYWFfdCBpbWFnZSwgaW50MiBjb29yZCwgaW50IHNhbXBsZSk7CnVpbnQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdldWkocmVhZF93cml0ZSBpbWFnZTJkX21zYWFfdCBpbWFnZSwgaW50MiBjb29yZCwgaW50IHNhbXBsZSk7CgpmbG9hdDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2VmKHJlYWRfd3JpdGUgaW1hZ2UyZF9hcnJheV9tc2FhX3QgaW1hZ2UsIGludDQgY29vcmQsIGludCBzYW1wbGUpOwppbnQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlaShyZWFkX3dyaXRlIGltYWdlMmRfYXJyYXlfbXNhYV90IGltYWdlLCBpbnQ0IGNvb3JkLCBpbnQgc2FtcGxlKTsKdWludDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2V1aShyZWFkX3dyaXRlIGltYWdlMmRfYXJyYXlfbXNhYV90IGltYWdlLCBpbnQ0IGNvb3JkLCBpbnQgc2FtcGxlKTsKCmZsb2F0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlZihyZWFkX3dyaXRlIGltYWdlMmRfbXNhYV9kZXB0aF90IGltYWdlLCBpbnQyIGNvb3JkLCBpbnQgc2FtcGxlKTsKZmxvYXQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2VmKHJlYWRfd3JpdGUgaW1hZ2UyZF9hcnJheV9tc2FhX2RlcHRoX3QgaW1hZ2UsIGludDQgY29vcmQsIGludCBzYW1wbGUpOwojZW5kaWYgLy9jbF9raHJfZ2xfbXNhYV9zaGFyaW5nCgojaWYgZGVmaW5lZChfX09QRU5DTF9DUFBfVkVSU0lPTl9fKSB8fCAoX19PUEVOQ0xfQ19WRVJTSU9OX18gPj0gQ0xfVkVSU0lPTl8yXzApCiNpZmRlZiBjbF9raHJfbWlwbWFwX2ltYWdlCmZsb2F0NCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZWYocmVhZF93cml0ZSBpbWFnZTFkX3QgaW1hZ2UsIHNhbXBsZXJfdCBzYW1wbGVyLCBmbG9hdCBjb29yZCwgZmxvYXQgbG9kKTsKaW50NCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZWkocmVhZF93cml0ZSBpbWFnZTFkX3QgaW1hZ2UsIHNhbXBsZXJfdCBzYW1wbGVyLCBmbG9hdCBjb29yZCwgZmxvYXQgbG9kKTsKdWludDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2V1aShyZWFkX3dyaXRlIGltYWdlMWRfdCBpbWFnZSwgc2FtcGxlcl90IHNhbXBsZXIsIGZsb2F0IGNvb3JkLCBmbG9hdCBsb2QpOwoKZmxvYXQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlZihyZWFkX3dyaXRlIGltYWdlMWRfYXJyYXlfdCBpbWFnZV9hcnJheSwgc2FtcGxlcl90IHNhbXBsZXIsIGZsb2F0MiBjb29yZCwgZmxvYXQgbG9kKTsKaW50NCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZWkocmVhZF93cml0ZSBpbWFnZTFkX2FycmF5X3QgaW1hZ2VfYXJyYXksIHNhbXBsZXJfdCBzYW1wbGVyLCBmbG9hdDIgY29vcmQsIGZsb2F0IGxvZCk7CnVpbnQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdldWkocmVhZF93cml0ZSBpbWFnZTFkX2FycmF5X3QgaW1hZ2VfYXJyYXksIHNhbXBsZXJfdCBzYW1wbGVyLCBmbG9hdDIgY29vcmQsIGZsb2F0IGxvZCk7CgpmbG9hdDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2VmKHJlYWRfd3JpdGUgaW1hZ2UyZF90IGltYWdlLCBzYW1wbGVyX3Qgc2FtcGxlciwgZmxvYXQyIGNvb3JkLCBmbG9hdCBsb2QpOwppbnQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlaShyZWFkX3dyaXRlIGltYWdlMmRfdCBpbWFnZSwgc2FtcGxlcl90IHNhbXBsZXIsIGZsb2F0MiBjb29yZCwgZmxvYXQgbG9kKTsKdWludDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2V1aShyZWFkX3dyaXRlIGltYWdlMmRfdCBpbWFnZSwgc2FtcGxlcl90IHNhbXBsZXIsIGZsb2F0MiBjb29yZCwgZmxvYXQgbG9kKTsKCmZsb2F0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlZihyZWFkX3dyaXRlIGltYWdlMmRfZGVwdGhfdCBpbWFnZSwgc2FtcGxlcl90IHNhbXBsZXIsIGZsb2F0MiBjb29yZCwgZmxvYXQgbG9kKTsKCmZsb2F0NCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZWYocmVhZF93cml0ZSBpbWFnZTJkX2FycmF5X3QgaW1hZ2VfYXJyYXksIHNhbXBsZXJfdCBzYW1wbGVyLCBmbG9hdDQgY29vcmQsIGZsb2F0IGxvZCk7CmludDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2VpKHJlYWRfd3JpdGUgaW1hZ2UyZF9hcnJheV90IGltYWdlX2FycmF5LCBzYW1wbGVyX3Qgc2FtcGxlciwgZmxvYXQ0IGNvb3JkLCBmbG9hdCBsb2QpOwp1aW50NCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZXVpKHJlYWRfd3JpdGUgaW1hZ2UyZF9hcnJheV90IGltYWdlX2FycmF5LCBzYW1wbGVyX3Qgc2FtcGxlciwgZmxvYXQ0IGNvb3JkLCBmbG9hdCBsb2QpOwoKZmxvYXQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2VmKHJlYWRfd3JpdGUgaW1hZ2UyZF9hcnJheV9kZXB0aF90IGltYWdlLCBzYW1wbGVyX3Qgc2FtcGxlciwgZmxvYXQ0IGNvb3JkLCBmbG9hdCBsb2QpOwoKZmxvYXQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlZihyZWFkX3dyaXRlIGltYWdlM2RfdCBpbWFnZSwgc2FtcGxlcl90IHNhbXBsZXIsIGZsb2F0NCBjb29yZCwgZmxvYXQgbG9kKTsKaW50NCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZWkocmVhZF93cml0ZSBpbWFnZTNkX3QgaW1hZ2UsIHNhbXBsZXJfdCBzYW1wbGVyLCBmbG9hdDQgY29vcmQsIGZsb2F0IGxvZCk7CnVpbnQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdldWkocmVhZF93cml0ZSBpbWFnZTNkX3QgaW1hZ2UsIHNhbXBsZXJfdCBzYW1wbGVyLCBmbG9hdDQgY29vcmQsIGZsb2F0IGxvZCk7CgpmbG9hdDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2VmKHJlYWRfd3JpdGUgaW1hZ2UxZF90IGltYWdlLCBzYW1wbGVyX3Qgc2FtcGxlciwgZmxvYXQgY29vcmQsIGZsb2F0IGdyYWRpZW50WCwgZmxvYXQgZ3JhZGllbnRZKTsKaW50NCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZWkocmVhZF93cml0ZSBpbWFnZTFkX3QgaW1hZ2UsIHNhbXBsZXJfdCBzYW1wbGVyLCBmbG9hdCBjb29yZCwgZmxvYXQgZ3JhZGllbnRYLCBmbG9hdCBncmFkaWVudFkpOwp1aW50NCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZXVpKHJlYWRfd3JpdGUgaW1hZ2UxZF90IGltYWdlLCBzYW1wbGVyX3Qgc2FtcGxlciwgZmxvYXQgY29vcmQsIGZsb2F0IGdyYWRpZW50WCwgZmxvYXQgZ3JhZGllbnRZKTsKCmZsb2F0NCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZWYocmVhZF93cml0ZSBpbWFnZTFkX2FycmF5X3QgaW1hZ2VfYXJyYXksIHNhbXBsZXJfdCBzYW1wbGVyLCBmbG9hdDIgY29vcmQsIGZsb2F0IGdyYWRpZW50WCwgZmxvYXQgZ3JhZGllbnRZKTsKaW50NCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZWkocmVhZF93cml0ZSBpbWFnZTFkX2FycmF5X3QgaW1hZ2VfYXJyYXksIHNhbXBsZXJfdCBzYW1wbGVyLCBmbG9hdDIgY29vcmQsIGZsb2F0IGdyYWRpZW50WCwgZmxvYXQgZ3JhZGllbnRZKTsKdWludDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2V1aShyZWFkX3dyaXRlIGltYWdlMWRfYXJyYXlfdCBpbWFnZV9hcnJheSwgc2FtcGxlcl90IHNhbXBsZXIsIGZsb2F0MiBjb29yZCwgZmxvYXQgZ3JhZGllbnRYLCBmbG9hdCBncmFkaWVudFkpOwoKZmxvYXQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlZihyZWFkX3dyaXRlIGltYWdlMmRfdCBpbWFnZSwgc2FtcGxlcl90IHNhbXBsZXIsIGZsb2F0MiBjb29yZCwgZmxvYXQyIGdyYWRpZW50WCwgZmxvYXQyIGdyYWRpZW50WSk7CmludDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2VpKHJlYWRfd3JpdGUgaW1hZ2UyZF90IGltYWdlLCBzYW1wbGVyX3Qgc2FtcGxlciwgZmxvYXQyIGNvb3JkLCBmbG9hdDIgZ3JhZGllbnRYLCBmbG9hdDIgZ3JhZGllbnRZKTsKdWludDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2V1aShyZWFkX3dyaXRlIGltYWdlMmRfdCBpbWFnZSwgc2FtcGxlcl90IHNhbXBsZXIsIGZsb2F0MiBjb29yZCwgZmxvYXQyIGdyYWRpZW50WCwgZmxvYXQyIGdyYWRpZW50WSk7CgpmbG9hdCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZWYocmVhZF93cml0ZSBpbWFnZTJkX2RlcHRoX3QgaW1hZ2UsIHNhbXBsZXJfdCBzYW1wbGVyLCBmbG9hdDIgY29vcmQsIGZsb2F0MiBncmFkaWVudFgsIGZsb2F0MiBncmFkaWVudFkpOwoKZmxvYXQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlZihyZWFkX3dyaXRlIGltYWdlMmRfYXJyYXlfdCBpbWFnZV9hcnJheSwgc2FtcGxlcl90IHNhbXBsZXIsIGZsb2F0NCBjb29yZCwgZmxvYXQyIGdyYWRpZW50WCwgZmxvYXQyIGdyYWRpZW50WSk7CmludDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2VpKHJlYWRfd3JpdGUgaW1hZ2UyZF9hcnJheV90IGltYWdlX2FycmF5LCBzYW1wbGVyX3Qgc2FtcGxlciwgZmxvYXQ0IGNvb3JkLCBmbG9hdDIgZ3JhZGllbnRYLCBmbG9hdDIgZ3JhZGllbnRZKTsKdWludDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2V1aShyZWFkX3dyaXRlIGltYWdlMmRfYXJyYXlfdCBpbWFnZV9hcnJheSwgc2FtcGxlcl90IHNhbXBsZXIsIGZsb2F0NCBjb29yZCwgZmxvYXQyIGdyYWRpZW50WCwgZmxvYXQyIGdyYWRpZW50WSk7CgpmbG9hdCBfX3B1cmVmbiBfX292bGQgcmVhZF9pbWFnZWYocmVhZF93cml0ZSBpbWFnZTJkX2FycmF5X2RlcHRoX3QgaW1hZ2UsIHNhbXBsZXJfdCBzYW1wbGVyLCBmbG9hdDQgY29vcmQsIGZsb2F0MiBncmFkaWVudFgsIGZsb2F0MiBncmFkaWVudFkpOwoKZmxvYXQ0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlZihyZWFkX3dyaXRlIGltYWdlM2RfdCBpbWFnZSwgc2FtcGxlcl90IHNhbXBsZXIsIGZsb2F0NCBjb29yZCwgZmxvYXQ0IGdyYWRpZW50WCwgZmxvYXQ0IGdyYWRpZW50WSk7CmludDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2VpKHJlYWRfd3JpdGUgaW1hZ2UzZF90IGltYWdlLCBzYW1wbGVyX3Qgc2FtcGxlciwgZmxvYXQ0IGNvb3JkLCBmbG9hdDQgZ3JhZGllbnRYLCBmbG9hdDQgZ3JhZGllbnRZKTsKdWludDQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2V1aShyZWFkX3dyaXRlIGltYWdlM2RfdCBpbWFnZSwgc2FtcGxlcl90IHNhbXBsZXIsIGZsb2F0NCBjb29yZCwgZmxvYXQ0IGdyYWRpZW50WCwgZmxvYXQ0IGdyYWRpZW50WSk7CgojZW5kaWYgLy9jbF9raHJfbWlwbWFwX2ltYWdlCiNlbmRpZiAvL2RlZmluZWQoX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXykgfHwgKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fMl8wKQoKLy8gSW1hZ2UgcmVhZCBmdW5jdGlvbnMgcmV0dXJuaW5nIGhhbGY0IHR5cGUKI2lmZGVmIGNsX2tocl9mcDE2CmhhbGY0IF9fcHVyZWZuIF9fb3ZsZCByZWFkX2ltYWdlaChyZWFkX3dyaXRlIGltYWdlMWRfdCBpbWFnZSwgaW50IGNvb3JkKTsKaGFsZjQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2VoKHJlYWRfd3JpdGUgaW1hZ2UyZF90IGltYWdlLCBpbnQyIGNvb3JkKTsKaGFsZjQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2VoKHJlYWRfd3JpdGUgaW1hZ2UzZF90IGltYWdlLCBpbnQ0IGNvb3JkKTsKaGFsZjQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2VoKHJlYWRfd3JpdGUgaW1hZ2UxZF9hcnJheV90IGltYWdlLCBpbnQyIGNvb3JkKTsKaGFsZjQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2VoKHJlYWRfd3JpdGUgaW1hZ2UyZF9hcnJheV90IGltYWdlLCBpbnQ0IGNvb3JkKTsKaGFsZjQgX19wdXJlZm4gX19vdmxkIHJlYWRfaW1hZ2VoKHJlYWRfd3JpdGUgaW1hZ2UxZF9idWZmZXJfdCBpbWFnZSwgaW50IGNvb3JkKTsKI2VuZGlmIC8vY2xfa2hyX2ZwMTYKI2VuZGlmIC8vZGVmaW5lZChfX09QRU5DTF9DUFBfVkVSU0lPTl9fKSB8fCAoX19PUEVOQ0xfQ19WRVJTSU9OX18gPj0gQ0xfVkVSU0lPTl8yXzApCgovKioKICogV3JpdGUgY29sb3IgdmFsdWUgdG8gbG9jYXRpb24gc3BlY2lmaWVkIGJ5IGNvb3JkaW5hdGUKICogKGNvb3JkLngsIGNvb3JkLnkpIGluIHRoZSAyRCBpbWFnZSBvYmplY3Qgc3BlY2lmaWVkIGJ5IGltYWdlLgogKiAoY29vcmQueCwgY29vcmQueSkgYXJlIGNvbnNpZGVyZWQgdG8gYmUgdW5ub3JtYWxpemVkIGNvb3JkaW5hdGVzCiAqIGFuZCBtdXN0IGJlIGluIHRoZSByYW5nZSAwIC4uLiBpbWFnZSB3aWR0aCAtIDEsIGFuZCAwCiAqIC4uLiBpbWFnZSBoZWlnaHQgLSAxLgoKICogV3JpdGUgY29sb3IgdmFsdWUgdG8gbG9jYXRpb24gc3BlY2lmaWVkIGJ5IGNvb3JkaW5hdGUKICogKGNvb3JkLngsIGNvb3JkLnkpIGluIHRoZSAyRCBpbWFnZSBvYmplY3Qgc3BlY2lmaWVkIGJ5IGluZGV4CiAqIChjb29yZC56KSBvZiB0aGUgMkQgaW1hZ2UgYXJyYXkgb2JqZWN0IGltYWdlX2FycmF5LgogKiAoY29vcmQueCwgY29vcmQueSkgYXJlIGNvbnNpZGVyZWQgdG8gYmUgdW5ub3JtYWxpemVkCiAqIGNvb3JkaW5hdGVzIGFuZCBtdXN0IGJlIGluIHRoZSByYW5nZSAwIC4uLiBpbWFnZSB3aWR0aAogKiAtIDEuCiAqCiAqIFdyaXRlIGNvbG9yIHZhbHVlIHRvIGxvY2F0aW9uIHNwZWNpZmllZCBieSBjb29yZGluYXRlCiAqIChjb29yZCkgaW4gdGhlIDFEIGltYWdlIChidWZmZXIpIG9iamVjdCBzcGVjaWZpZWQgYnkgaW1hZ2UuCiAqIGNvb3JkIGlzIGNvbnNpZGVyZWQgdG8gYmUgdW5ub3JtYWxpemVkIGNvb3JkaW5hdGVzCiAqIGFuZCBtdXN0IGJlIGluIHRoZSByYW5nZSAwIC4uLiBpbWFnZSB3aWR0aCAtIDEuCiAqCiAqIFdyaXRlIGNvbG9yIHZhbHVlIHRvIGxvY2F0aW9uIHNwZWNpZmllZCBieSBjb29yZGluYXRlCiAqIChjb29yZC54KSBpbiB0aGUgMUQgaW1hZ2Ugb2JqZWN0IHNwZWNpZmllZCBieSBpbmRleAogKiAoY29vcmQueSkgb2YgdGhlIDFEIGltYWdlIGFycmF5IG9iamVjdCBpbWFnZV9hcnJheS4KICogeCBpcyBjb25zaWRlcmVkIHRvIGJlIHVubm9ybWFsaXplZCBjb29yZGluYXRlcwogKiBhbmQgbXVzdCBiZSBpbiB0aGUgcmFuZ2UgMCAuLi4gaW1hZ2Ugd2lkdGggLSAxLgogKgogKiBXcml0ZSBjb2xvciB2YWx1ZSB0byBsb2NhdGlvbiBzcGVjaWZpZWQgYnkgY29vcmRpbmF0ZQogKiAoY29vcmQueCwgY29vcmQueSwgY29vcmQueikgaW4gdGhlIDNEIGltYWdlIG9iamVjdCBzcGVjaWZpZWQgYnkgaW1hZ2UuCiAqIGNvb3JkLnggJiBjb29yZC55IGFyZSBjb25zaWRlcmVkIHRvIGJlIHVubm9ybWFsaXplZCBjb29yZGluYXRlcwogKiBhbmQgbXVzdCBiZSBpbiB0aGUgcmFuZ2UgMCAuLi4gaW1hZ2Ugd2lkdGggLSAxLCBhbmQgMAogKiAuLi4gaW1hZ2UgaGVpZ2h0IC0gMS4KICoKICogRm9yIG1pcG1hcCBpbWFnZXMsIHVzZSBtaXAtbGV2ZWwgc3BlY2lmaWVkIGJ5IGxvZC4KICoKICogQXBwcm9wcmlhdGUgZGF0YSBmb3JtYXQgY29udmVyc2lvbiB0byB0aGUgc3BlY2lmaWVkCiAqIGltYWdlIGZvcm1hdCBpcyBkb25lIGJlZm9yZSB3cml0aW5nIHRoZSBjb2xvciB2YWx1ZS4KICoKICogd3JpdGVfaW1hZ2VmIGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBpbWFnZSBvYmplY3RzCiAqIGNyZWF0ZWQgd2l0aCBpbWFnZV9jaGFubmVsX2RhdGFfdHlwZSBzZXQgdG8gb25lIG9mCiAqIHRoZSBwcmUtZGVmaW5lZCBwYWNrZWQgZm9ybWF0cyBvciBzZXQgdG8KICogQ0xfU05PUk1fSU5UOCwgQ0xfVU5PUk1fSU5UOCwKICogQ0xfU05PUk1fSU5UMTYsIENMX1VOT1JNX0lOVDE2LAogKiBDTF9IQUxGX0ZMT0FUIG9yIENMX0ZMT0FULiBBcHByb3ByaWF0ZSBkYXRhCiAqIGZvcm1hdCBjb252ZXJzaW9uIHdpbGwgYmUgZG9uZSB0byBjb252ZXJ0IGNoYW5uZWwKICogZGF0YSBmcm9tIGEgZmxvYXRpbmctcG9pbnQgdmFsdWUgdG8gYWN0dWFsIGRhdGEgZm9ybWF0CiAqIGluIHdoaWNoIHRoZSBjaGFubmVscyBhcmUgc3RvcmVkLgogKgogKiB3cml0ZV9pbWFnZWkgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIGltYWdlIG9iamVjdHMKICogY3JlYXRlZCB3aXRoIGltYWdlX2NoYW5uZWxfZGF0YV90eXBlIHNldCB0byBvbmUgb2YKICogdGhlIGZvbGxvd2luZyB2YWx1ZXM6CiAqIENMX1NJR05FRF9JTlQ4LAogKiBDTF9TSUdORURfSU5UMTYgYW5kCiAqIENMX1NJR05FRF9JTlQzMi4KICoKICogd3JpdGVfaW1hZ2V1aSBjYW4gb25seSBiZSB1c2VkIHdpdGggaW1hZ2Ugb2JqZWN0cwogKiBjcmVhdGVkIHdpdGggaW1hZ2VfY2hhbm5lbF9kYXRhX3R5cGUgc2V0IHRvIG9uZSBvZgogKiB0aGUgZm9sbG93aW5nIHZhbHVlczoKICogQ0xfVU5TSUdORURfSU5UOCwKICogQ0xfVU5TSUdORURfSU5UMTYgYW5kCiAqIENMX1VOU0lHTkVEX0lOVDMyLgogKgogKiBUaGUgYmVoYXZpb3Igb2Ygd3JpdGVfaW1hZ2VmLCB3cml0ZV9pbWFnZWkgYW5kCiAqIHdyaXRlX2ltYWdldWkgZm9yIGltYWdlIG9iamVjdHMgY3JlYXRlZCB3aXRoCiAqIGltYWdlX2NoYW5uZWxfZGF0YV90eXBlIHZhbHVlcyBub3Qgc3BlY2lmaWVkIGluCiAqIHRoZSBkZXNjcmlwdGlvbiBhYm92ZSBvciB3aXRoICh4LCB5KSBjb29yZGluYXRlCiAqIHZhbHVlcyB0aGF0IGFyZSBub3QgaW4gdGhlIHJhbmdlICgwIC4uLiBpbWFnZSB3aWR0aCAtMSwKICogMCAuLi4gaW1hZ2UgaGVpZ2h0IC0gMSksIHJlc3BlY3RpdmVseSwgaXMgdW5kZWZpbmVkLgogKi8Kdm9pZCBfX292bGQgd3JpdGVfaW1hZ2VmKHdyaXRlX29ubHkgaW1hZ2UyZF90IGltYWdlLCBpbnQyIGNvb3JkLCBmbG9hdDQgY29sb3IpOwp2b2lkIF9fb3ZsZCB3cml0ZV9pbWFnZWkod3JpdGVfb25seSBpbWFnZTJkX3QgaW1hZ2UsIGludDIgY29vcmQsIGludDQgY29sb3IpOwp2b2lkIF9fb3ZsZCB3cml0ZV9pbWFnZXVpKHdyaXRlX29ubHkgaW1hZ2UyZF90IGltYWdlLCBpbnQyIGNvb3JkLCB1aW50NCBjb2xvcik7Cgp2b2lkIF9fb3ZsZCB3cml0ZV9pbWFnZWYod3JpdGVfb25seSBpbWFnZTJkX2FycmF5X3QgaW1hZ2VfYXJyYXksIGludDQgY29vcmQsIGZsb2F0NCBjb2xvcik7CnZvaWQgX19vdmxkIHdyaXRlX2ltYWdlaSh3cml0ZV9vbmx5IGltYWdlMmRfYXJyYXlfdCBpbWFnZV9hcnJheSwgaW50NCBjb29yZCwgaW50NCBjb2xvcik7CnZvaWQgX19vdmxkIHdyaXRlX2ltYWdldWkod3JpdGVfb25seSBpbWFnZTJkX2FycmF5X3QgaW1hZ2VfYXJyYXksIGludDQgY29vcmQsIHVpbnQ0IGNvbG9yKTsKCnZvaWQgX19vdmxkIHdyaXRlX2ltYWdlZih3cml0ZV9vbmx5IGltYWdlMWRfdCBpbWFnZSwgaW50IGNvb3JkLCBmbG9hdDQgY29sb3IpOwp2b2lkIF9fb3ZsZCB3cml0ZV9pbWFnZWkod3JpdGVfb25seSBpbWFnZTFkX3QgaW1hZ2UsIGludCBjb29yZCwgaW50NCBjb2xvcik7CnZvaWQgX19vdmxkIHdyaXRlX2ltYWdldWkod3JpdGVfb25seSBpbWFnZTFkX3QgaW1hZ2UsIGludCBjb29yZCwgdWludDQgY29sb3IpOwoKdm9pZCBfX292bGQgd3JpdGVfaW1hZ2VmKHdyaXRlX29ubHkgaW1hZ2UxZF9idWZmZXJfdCBpbWFnZSwgaW50IGNvb3JkLCBmbG9hdDQgY29sb3IpOwp2b2lkIF9fb3ZsZCB3cml0ZV9pbWFnZWkod3JpdGVfb25seSBpbWFnZTFkX2J1ZmZlcl90IGltYWdlLCBpbnQgY29vcmQsIGludDQgY29sb3IpOwp2b2lkIF9fb3ZsZCB3cml0ZV9pbWFnZXVpKHdyaXRlX29ubHkgaW1hZ2UxZF9idWZmZXJfdCBpbWFnZSwgaW50IGNvb3JkLCB1aW50NCBjb2xvcik7Cgp2b2lkIF9fb3ZsZCB3cml0ZV9pbWFnZWYod3JpdGVfb25seSBpbWFnZTFkX2FycmF5X3QgaW1hZ2VfYXJyYXksIGludDIgY29vcmQsIGZsb2F0NCBjb2xvcik7CnZvaWQgX19vdmxkIHdyaXRlX2ltYWdlaSh3cml0ZV9vbmx5IGltYWdlMWRfYXJyYXlfdCBpbWFnZV9hcnJheSwgaW50MiBjb29yZCwgaW50NCBjb2xvcik7CnZvaWQgX19vdmxkIHdyaXRlX2ltYWdldWkod3JpdGVfb25seSBpbWFnZTFkX2FycmF5X3QgaW1hZ2VfYXJyYXksIGludDIgY29vcmQsIHVpbnQ0IGNvbG9yKTsKCiNpZmRlZiBjbF9raHJfM2RfaW1hZ2Vfd3JpdGVzCnZvaWQgX19vdmxkIHdyaXRlX2ltYWdlZih3cml0ZV9vbmx5IGltYWdlM2RfdCBpbWFnZSwgaW50NCBjb29yZCwgZmxvYXQ0IGNvbG9yKTsKdm9pZCBfX292bGQgd3JpdGVfaW1hZ2VpKHdyaXRlX29ubHkgaW1hZ2UzZF90IGltYWdlLCBpbnQ0IGNvb3JkLCBpbnQ0IGNvbG9yKTsKdm9pZCBfX292bGQgd3JpdGVfaW1hZ2V1aSh3cml0ZV9vbmx5IGltYWdlM2RfdCBpbWFnZSwgaW50NCBjb29yZCwgdWludDQgY29sb3IpOwojZW5kaWYKCiNpZmRlZiBjbF9raHJfZGVwdGhfaW1hZ2VzCnZvaWQgX19vdmxkIHdyaXRlX2ltYWdlZih3cml0ZV9vbmx5IGltYWdlMmRfZGVwdGhfdCBpbWFnZSwgaW50MiBjb29yZCwgZmxvYXQgY29sb3IpOwp2b2lkIF9fb3ZsZCB3cml0ZV9pbWFnZWYod3JpdGVfb25seSBpbWFnZTJkX2FycmF5X2RlcHRoX3QgaW1hZ2UsIGludDQgY29vcmQsIGZsb2F0IGNvbG9yKTsKI2VuZGlmIC8vY2xfa2hyX2RlcHRoX2ltYWdlcwoKLy8gT3BlbkNMIEV4dGVuc2lvbiB2Mi4wIHM5LjE4IC0gTWlwbWFwcwojaWYgZGVmaW5lZChfX09QRU5DTF9DUFBfVkVSU0lPTl9fKSB8fCAoX19PUEVOQ0xfQ19WRVJTSU9OX18gPj0gQ0xfVkVSU0lPTl8yXzApCiNpZiBkZWZpbmVkKGNsX2tocl9taXBtYXBfaW1hZ2Vfd3JpdGVzKQp2b2lkIF9fb3ZsZCB3cml0ZV9pbWFnZWYod3JpdGVfb25seSBpbWFnZTFkX3QgaW1hZ2UsIGludCBjb29yZCwgaW50IGxvZCwgZmxvYXQ0IGNvbG9yKTsKdm9pZCBfX292bGQgd3JpdGVfaW1hZ2VpKHdyaXRlX29ubHkgaW1hZ2UxZF90IGltYWdlLCBpbnQgY29vcmQsIGludCBsb2QsIGludDQgY29sb3IpOwp2b2lkIF9fb3ZsZCB3cml0ZV9pbWFnZXVpKHdyaXRlX29ubHkgaW1hZ2UxZF90IGltYWdlLCBpbnQgY29vcmQsIGludCBsb2QsIHVpbnQ0IGNvbG9yKTsKCnZvaWQgX19vdmxkIHdyaXRlX2ltYWdlZih3cml0ZV9vbmx5IGltYWdlMWRfYXJyYXlfdCBpbWFnZV9hcnJheSwgaW50MiBjb29yZCwgaW50IGxvZCwgZmxvYXQ0IGNvbG9yKTsKdm9pZCBfX292bGQgd3JpdGVfaW1hZ2VpKHdyaXRlX29ubHkgaW1hZ2UxZF9hcnJheV90IGltYWdlX2FycmF5LCBpbnQyIGNvb3JkLCBpbnQgbG9kLCBpbnQ0IGNvbG9yKTsKdm9pZCBfX292bGQgd3JpdGVfaW1hZ2V1aSh3cml0ZV9vbmx5IGltYWdlMWRfYXJyYXlfdCBpbWFnZV9hcnJheSwgaW50MiBjb29yZCwgaW50IGxvZCwgdWludDQgY29sb3IpOwoKdm9pZCBfX292bGQgd3JpdGVfaW1hZ2VmKHdyaXRlX29ubHkgaW1hZ2UyZF90IGltYWdlLCBpbnQyIGNvb3JkLCBpbnQgbG9kLCBmbG9hdDQgY29sb3IpOwp2b2lkIF9fb3ZsZCB3cml0ZV9pbWFnZWkod3JpdGVfb25seSBpbWFnZTJkX3QgaW1hZ2UsIGludDIgY29vcmQsIGludCBsb2QsIGludDQgY29sb3IpOwp2b2lkIF9fb3ZsZCB3cml0ZV9pbWFnZXVpKHdyaXRlX29ubHkgaW1hZ2UyZF90IGltYWdlLCBpbnQyIGNvb3JkLCBpbnQgbG9kLCB1aW50NCBjb2xvcik7Cgp2b2lkIF9fb3ZsZCB3cml0ZV9pbWFnZWYod3JpdGVfb25seSBpbWFnZTJkX2FycmF5X3QgaW1hZ2VfYXJyYXksIGludDQgY29vcmQsIGludCBsb2QsIGZsb2F0NCBjb2xvcik7CnZvaWQgX19vdmxkIHdyaXRlX2ltYWdlaSh3cml0ZV9vbmx5IGltYWdlMmRfYXJyYXlfdCBpbWFnZV9hcnJheSwgaW50NCBjb29yZCwgaW50IGxvZCwgaW50NCBjb2xvcik7CnZvaWQgX19vdmxkIHdyaXRlX2ltYWdldWkod3JpdGVfb25seSBpbWFnZTJkX2FycmF5X3QgaW1hZ2VfYXJyYXksIGludDQgY29vcmQsIGludCBsb2QsIHVpbnQ0IGNvbG9yKTsKCnZvaWQgX19vdmxkIHdyaXRlX2ltYWdlZih3cml0ZV9vbmx5IGltYWdlMmRfZGVwdGhfdCBpbWFnZSwgaW50MiBjb29yZCwgaW50IGxvZCwgZmxvYXQgZGVwdGgpOwp2b2lkIF9fb3ZsZCB3cml0ZV9pbWFnZWYod3JpdGVfb25seSBpbWFnZTJkX2FycmF5X2RlcHRoX3QgaW1hZ2UsIGludDQgY29vcmQsIGludCBsb2QsIGZsb2F0IGRlcHRoKTsKCiNpZmRlZiBjbF9raHJfM2RfaW1hZ2Vfd3JpdGVzCnZvaWQgX19vdmxkIHdyaXRlX2ltYWdlZih3cml0ZV9vbmx5IGltYWdlM2RfdCBpbWFnZSwgaW50NCBjb29yZCwgaW50IGxvZCwgZmxvYXQ0IGNvbG9yKTsKdm9pZCBfX292bGQgd3JpdGVfaW1hZ2VpKHdyaXRlX29ubHkgaW1hZ2UzZF90IGltYWdlLCBpbnQ0IGNvb3JkLCBpbnQgbG9kLCBpbnQ0IGNvbG9yKTsKdm9pZCBfX292bGQgd3JpdGVfaW1hZ2V1aSh3cml0ZV9vbmx5IGltYWdlM2RfdCBpbWFnZSwgaW50NCBjb29yZCwgaW50IGxvZCwgdWludDQgY29sb3IpOwojZW5kaWYgLy9jbF9raHJfM2RfaW1hZ2Vfd3JpdGVzCgojZW5kaWYgLy9kZWZpbmVkKGNsX2tocl9taXBtYXBfaW1hZ2Vfd3JpdGVzKQojZW5kaWYgLy9kZWZpbmVkKF9fT1BFTkNMX0NQUF9WRVJTSU9OX18pIHx8IChfX09QRU5DTF9DX1ZFUlNJT05fXyA+PSBDTF9WRVJTSU9OXzJfMCkKCi8vIEltYWdlIHdyaXRlIGZ1bmN0aW9ucyBmb3IgaGFsZjQgdHlwZQojaWZkZWYgY2xfa2hyX2ZwMTYKdm9pZCBfX292bGQgd3JpdGVfaW1hZ2VoKHdyaXRlX29ubHkgaW1hZ2UxZF90IGltYWdlLCBpbnQgY29vcmQsIGhhbGY0IGNvbG9yKTsKdm9pZCBfX292bGQgd3JpdGVfaW1hZ2VoKHdyaXRlX29ubHkgaW1hZ2UyZF90IGltYWdlLCBpbnQyIGNvb3JkLCBoYWxmNCBjb2xvcik7CiNpZmRlZiBjbF9raHJfM2RfaW1hZ2Vfd3JpdGVzCnZvaWQgX19vdmxkIHdyaXRlX2ltYWdlaCh3cml0ZV9vbmx5IGltYWdlM2RfdCBpbWFnZSwgaW50NCBjb29yZCwgaGFsZjQgY29sb3IpOwojZW5kaWYKdm9pZCBfX292bGQgd3JpdGVfaW1hZ2VoKHdyaXRlX29ubHkgaW1hZ2UxZF9hcnJheV90IGltYWdlLCBpbnQyIGNvb3JkLCBoYWxmNCBjb2xvcik7CnZvaWQgX19vdmxkIHdyaXRlX2ltYWdlaCh3cml0ZV9vbmx5IGltYWdlMmRfYXJyYXlfdCBpbWFnZSwgaW50NCBjb29yZCwgaGFsZjQgY29sb3IpOwp2b2lkIF9fb3ZsZCB3cml0ZV9pbWFnZWgod3JpdGVfb25seSBpbWFnZTFkX2J1ZmZlcl90IGltYWdlLCBpbnQgY29vcmQsIGhhbGY0IGNvbG9yKTsKI2VuZGlmIC8vY2xfa2hyX2ZwMTYKCi8vIEltYWdlIHdyaXRlIGZ1bmN0aW9ucyBmb3IgcmVhZF93cml0ZSBpbWFnZXMKI2lmIGRlZmluZWQoX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXykgfHwgKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fMl8wKQp2b2lkIF9fb3ZsZCB3cml0ZV9pbWFnZWYocmVhZF93cml0ZSBpbWFnZTJkX3QgaW1hZ2UsIGludDIgY29vcmQsIGZsb2F0NCBjb2xvcik7CnZvaWQgX19vdmxkIHdyaXRlX2ltYWdlaShyZWFkX3dyaXRlIGltYWdlMmRfdCBpbWFnZSwgaW50MiBjb29yZCwgaW50NCBjb2xvcik7CnZvaWQgX19vdmxkIHdyaXRlX2ltYWdldWkocmVhZF93cml0ZSBpbWFnZTJkX3QgaW1hZ2UsIGludDIgY29vcmQsIHVpbnQ0IGNvbG9yKTsKCnZvaWQgX19vdmxkIHdyaXRlX2ltYWdlZihyZWFkX3dyaXRlIGltYWdlMmRfYXJyYXlfdCBpbWFnZV9hcnJheSwgaW50NCBjb29yZCwgZmxvYXQ0IGNvbG9yKTsKdm9pZCBfX292bGQgd3JpdGVfaW1hZ2VpKHJlYWRfd3JpdGUgaW1hZ2UyZF9hcnJheV90IGltYWdlX2FycmF5LCBpbnQ0IGNvb3JkLCBpbnQ0IGNvbG9yKTsKdm9pZCBfX292bGQgd3JpdGVfaW1hZ2V1aShyZWFkX3dyaXRlIGltYWdlMmRfYXJyYXlfdCBpbWFnZV9hcnJheSwgaW50NCBjb29yZCwgdWludDQgY29sb3IpOwoKdm9pZCBfX292bGQgd3JpdGVfaW1hZ2VmKHJlYWRfd3JpdGUgaW1hZ2UxZF90IGltYWdlLCBpbnQgY29vcmQsIGZsb2F0NCBjb2xvcik7CnZvaWQgX19vdmxkIHdyaXRlX2ltYWdlaShyZWFkX3dyaXRlIGltYWdlMWRfdCBpbWFnZSwgaW50IGNvb3JkLCBpbnQ0IGNvbG9yKTsKdm9pZCBfX292bGQgd3JpdGVfaW1hZ2V1aShyZWFkX3dyaXRlIGltYWdlMWRfdCBpbWFnZSwgaW50IGNvb3JkLCB1aW50NCBjb2xvcik7Cgp2b2lkIF9fb3ZsZCB3cml0ZV9pbWFnZWYocmVhZF93cml0ZSBpbWFnZTFkX2J1ZmZlcl90IGltYWdlLCBpbnQgY29vcmQsIGZsb2F0NCBjb2xvcik7CnZvaWQgX19vdmxkIHdyaXRlX2ltYWdlaShyZWFkX3dyaXRlIGltYWdlMWRfYnVmZmVyX3QgaW1hZ2UsIGludCBjb29yZCwgaW50NCBjb2xvcik7CnZvaWQgX19vdmxkIHdyaXRlX2ltYWdldWkocmVhZF93cml0ZSBpbWFnZTFkX2J1ZmZlcl90IGltYWdlLCBpbnQgY29vcmQsIHVpbnQ0IGNvbG9yKTsKCnZvaWQgX19vdmxkIHdyaXRlX2ltYWdlZihyZWFkX3dyaXRlIGltYWdlMWRfYXJyYXlfdCBpbWFnZV9hcnJheSwgaW50MiBjb29yZCwgZmxvYXQ0IGNvbG9yKTsKdm9pZCBfX292bGQgd3JpdGVfaW1hZ2VpKHJlYWRfd3JpdGUgaW1hZ2UxZF9hcnJheV90IGltYWdlX2FycmF5LCBpbnQyIGNvb3JkLCBpbnQ0IGNvbG9yKTsKdm9pZCBfX292bGQgd3JpdGVfaW1hZ2V1aShyZWFkX3dyaXRlIGltYWdlMWRfYXJyYXlfdCBpbWFnZV9hcnJheSwgaW50MiBjb29yZCwgdWludDQgY29sb3IpOwoKI2lmZGVmIGNsX2tocl8zZF9pbWFnZV93cml0ZXMKdm9pZCBfX292bGQgd3JpdGVfaW1hZ2VmKHJlYWRfd3JpdGUgaW1hZ2UzZF90IGltYWdlLCBpbnQ0IGNvb3JkLCBmbG9hdDQgY29sb3IpOwp2b2lkIF9fb3ZsZCB3cml0ZV9pbWFnZWkocmVhZF93cml0ZSBpbWFnZTNkX3QgaW1hZ2UsIGludDQgY29vcmQsIGludDQgY29sb3IpOwp2b2lkIF9fb3ZsZCB3cml0ZV9pbWFnZXVpKHJlYWRfd3JpdGUgaW1hZ2UzZF90IGltYWdlLCBpbnQ0IGNvb3JkLCB1aW50NCBjb2xvcik7CiNlbmRpZgoKI2lmZGVmIGNsX2tocl9kZXB0aF9pbWFnZXMKdm9pZCBfX292bGQgd3JpdGVfaW1hZ2VmKHJlYWRfd3JpdGUgaW1hZ2UyZF9kZXB0aF90IGltYWdlLCBpbnQyIGNvb3JkLCBmbG9hdCBjb2xvcik7CnZvaWQgX19vdmxkIHdyaXRlX2ltYWdlZihyZWFkX3dyaXRlIGltYWdlMmRfYXJyYXlfZGVwdGhfdCBpbWFnZSwgaW50NCBjb29yZCwgZmxvYXQgY29sb3IpOwojZW5kaWYgLy9jbF9raHJfZGVwdGhfaW1hZ2VzCgojaWYgZGVmaW5lZChfX09QRU5DTF9DUFBfVkVSU0lPTl9fKSB8fCAoX19PUEVOQ0xfQ19WRVJTSU9OX18gPj0gQ0xfVkVSU0lPTl8yXzApCiNpZiBkZWZpbmVkKGNsX2tocl9taXBtYXBfaW1hZ2Vfd3JpdGVzKQp2b2lkIF9fb3ZsZCB3cml0ZV9pbWFnZWYocmVhZF93cml0ZSBpbWFnZTFkX3QgaW1hZ2UsIGludCBjb29yZCwgaW50IGxvZCwgZmxvYXQ0IGNvbG9yKTsKdm9pZCBfX292bGQgd3JpdGVfaW1hZ2VpKHJlYWRfd3JpdGUgaW1hZ2UxZF90IGltYWdlLCBpbnQgY29vcmQsIGludCBsb2QsIGludDQgY29sb3IpOwp2b2lkIF9fb3ZsZCB3cml0ZV9pbWFnZXVpKHJlYWRfd3JpdGUgaW1hZ2UxZF90IGltYWdlLCBpbnQgY29vcmQsIGludCBsb2QsIHVpbnQ0IGNvbG9yKTsKCnZvaWQgX19vdmxkIHdyaXRlX2ltYWdlZihyZWFkX3dyaXRlIGltYWdlMWRfYXJyYXlfdCBpbWFnZV9hcnJheSwgaW50MiBjb29yZCwgaW50IGxvZCwgZmxvYXQ0IGNvbG9yKTsKdm9pZCBfX292bGQgd3JpdGVfaW1hZ2VpKHJlYWRfd3JpdGUgaW1hZ2UxZF9hcnJheV90IGltYWdlX2FycmF5LCBpbnQyIGNvb3JkLCBpbnQgbG9kLCBpbnQ0IGNvbG9yKTsKdm9pZCBfX292bGQgd3JpdGVfaW1hZ2V1aShyZWFkX3dyaXRlIGltYWdlMWRfYXJyYXlfdCBpbWFnZV9hcnJheSwgaW50MiBjb29yZCwgaW50IGxvZCwgdWludDQgY29sb3IpOwoKdm9pZCBfX292bGQgd3JpdGVfaW1hZ2VmKHJlYWRfd3JpdGUgaW1hZ2UyZF90IGltYWdlLCBpbnQyIGNvb3JkLCBpbnQgbG9kLCBmbG9hdDQgY29sb3IpOwp2b2lkIF9fb3ZsZCB3cml0ZV9pbWFnZWkocmVhZF93cml0ZSBpbWFnZTJkX3QgaW1hZ2UsIGludDIgY29vcmQsIGludCBsb2QsIGludDQgY29sb3IpOwp2b2lkIF9fb3ZsZCB3cml0ZV9pbWFnZXVpKHJlYWRfd3JpdGUgaW1hZ2UyZF90IGltYWdlLCBpbnQyIGNvb3JkLCBpbnQgbG9kLCB1aW50NCBjb2xvcik7Cgp2b2lkIF9fb3ZsZCB3cml0ZV9pbWFnZWYocmVhZF93cml0ZSBpbWFnZTJkX2FycmF5X3QgaW1hZ2VfYXJyYXksIGludDQgY29vcmQsIGludCBsb2QsIGZsb2F0NCBjb2xvcik7CnZvaWQgX19vdmxkIHdyaXRlX2ltYWdlaShyZWFkX3dyaXRlIGltYWdlMmRfYXJyYXlfdCBpbWFnZV9hcnJheSwgaW50NCBjb29yZCwgaW50IGxvZCwgaW50NCBjb2xvcik7CnZvaWQgX19vdmxkIHdyaXRlX2ltYWdldWkocmVhZF93cml0ZSBpbWFnZTJkX2FycmF5X3QgaW1hZ2VfYXJyYXksIGludDQgY29vcmQsIGludCBsb2QsIHVpbnQ0IGNvbG9yKTsKCnZvaWQgX19vdmxkIHdyaXRlX2ltYWdlZihyZWFkX3dyaXRlIGltYWdlMmRfZGVwdGhfdCBpbWFnZSwgaW50MiBjb29yZCwgaW50IGxvZCwgZmxvYXQgY29sb3IpOwp2b2lkIF9fb3ZsZCB3cml0ZV9pbWFnZWYocmVhZF93cml0ZSBpbWFnZTJkX2FycmF5X2RlcHRoX3QgaW1hZ2UsIGludDQgY29vcmQsIGludCBsb2QsIGZsb2F0IGNvbG9yKTsKCiNpZmRlZiBjbF9raHJfM2RfaW1hZ2Vfd3JpdGVzCnZvaWQgX19vdmxkIHdyaXRlX2ltYWdlZihyZWFkX3dyaXRlIGltYWdlM2RfdCBpbWFnZSwgaW50NCBjb29yZCwgaW50IGxvZCwgZmxvYXQ0IGNvbG9yKTsKdm9pZCBfX292bGQgd3JpdGVfaW1hZ2VpKHJlYWRfd3JpdGUgaW1hZ2UzZF90IGltYWdlLCBpbnQ0IGNvb3JkLCBpbnQgbG9kLCBpbnQ0IGNvbG9yKTsKdm9pZCBfX292bGQgd3JpdGVfaW1hZ2V1aShyZWFkX3dyaXRlIGltYWdlM2RfdCBpbWFnZSwgaW50NCBjb29yZCwgaW50IGxvZCwgdWludDQgY29sb3IpOwojZW5kaWYgLy9jbF9raHJfM2RfaW1hZ2Vfd3JpdGVzCgojZW5kaWYgLy9jbF9raHJfbWlwbWFwX2ltYWdlX3dyaXRlcwojZW5kaWYgLy9kZWZpbmVkKF9fT1BFTkNMX0NQUF9WRVJTSU9OX18pIHx8IChfX09QRU5DTF9DX1ZFUlNJT05fXyA+PSBDTF9WRVJTSU9OXzJfMCkKCi8vIEltYWdlIHdyaXRlIGZ1bmN0aW9ucyBmb3IgaGFsZjQgdHlwZQojaWZkZWYgY2xfa2hyX2ZwMTYKdm9pZCBfX292bGQgd3JpdGVfaW1hZ2VoKHJlYWRfd3JpdGUgaW1hZ2UxZF90IGltYWdlLCBpbnQgY29vcmQsIGhhbGY0IGNvbG9yKTsKdm9pZCBfX292bGQgd3JpdGVfaW1hZ2VoKHJlYWRfd3JpdGUgaW1hZ2UyZF90IGltYWdlLCBpbnQyIGNvb3JkLCBoYWxmNCBjb2xvcik7CiNpZmRlZiBjbF9raHJfM2RfaW1hZ2Vfd3JpdGVzCnZvaWQgX19vdmxkIHdyaXRlX2ltYWdlaChyZWFkX3dyaXRlIGltYWdlM2RfdCBpbWFnZSwgaW50NCBjb29yZCwgaGFsZjQgY29sb3IpOwojZW5kaWYKdm9pZCBfX292bGQgd3JpdGVfaW1hZ2VoKHJlYWRfd3JpdGUgaW1hZ2UxZF9hcnJheV90IGltYWdlLCBpbnQyIGNvb3JkLCBoYWxmNCBjb2xvcik7CnZvaWQgX19vdmxkIHdyaXRlX2ltYWdlaChyZWFkX3dyaXRlIGltYWdlMmRfYXJyYXlfdCBpbWFnZSwgaW50NCBjb29yZCwgaGFsZjQgY29sb3IpOwp2b2lkIF9fb3ZsZCB3cml0ZV9pbWFnZWgocmVhZF93cml0ZSBpbWFnZTFkX2J1ZmZlcl90IGltYWdlLCBpbnQgY29vcmQsIGhhbGY0IGNvbG9yKTsKI2VuZGlmIC8vY2xfa2hyX2ZwMTYKI2VuZGlmIC8vZGVmaW5lZChfX09QRU5DTF9DUFBfVkVSU0lPTl9fKSB8fCAoX19PUEVOQ0xfQ19WRVJTSU9OX18gPj0gQ0xfVkVSU0lPTl8yXzApCgovLyBOb3RlOiBJbiBPcGVuQ0wgdjEuMC8xLjEvMS4yLCBpbWFnZSBhcmd1bWVudCBvZiBpbWFnZSBxdWVyeSBidWlsdGluIGZ1bmN0aW9ucyBkb2VzIG5vdCBoYXZlCi8vIGFjY2VzcyBxdWFsaWZpZXIsIHdoaWNoIGJ5IGRlZmF1bHQgYXNzdW1lIHJlYWRfb25seSBhY2Nlc3MgcXVhbGlmaWVyLiBJbWFnZSBxdWVyeSBidWlsdGluCi8vIGZ1bmN0aW9ucyB3aXRoIHdyaXRlX29ubHkgaW1hZ2UgYXJndW1lbnQgc2hvdWxkIGFsc28gYmUgZGVjbGFyZWQuCgovKioKICogUmV0dXJuIHRoZSBpbWFnZSB3aWR0aCBpbiBwaXhlbHMuCiAqCiAgKi8KaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX3dpZHRoKHJlYWRfb25seSBpbWFnZTFkX3QgaW1hZ2UpOwppbnQgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2Vfd2lkdGgocmVhZF9vbmx5IGltYWdlMWRfYnVmZmVyX3QgaW1hZ2UpOwppbnQgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2Vfd2lkdGgocmVhZF9vbmx5IGltYWdlMmRfdCBpbWFnZSk7CiNpZmRlZiBjbF9raHJfM2RfaW1hZ2Vfd3JpdGVzCmludCBfX292bGQgX19jbmZuIGdldF9pbWFnZV93aWR0aChyZWFkX29ubHkgaW1hZ2UzZF90IGltYWdlKTsKI2VuZGlmCmludCBfX292bGQgX19jbmZuIGdldF9pbWFnZV93aWR0aChyZWFkX29ubHkgaW1hZ2UxZF9hcnJheV90IGltYWdlKTsKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX3dpZHRoKHJlYWRfb25seSBpbWFnZTJkX2FycmF5X3QgaW1hZ2UpOwojaWZkZWYgY2xfa2hyX2RlcHRoX2ltYWdlcwppbnQgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2Vfd2lkdGgocmVhZF9vbmx5IGltYWdlMmRfZGVwdGhfdCBpbWFnZSk7CmludCBfX292bGQgX19jbmZuIGdldF9pbWFnZV93aWR0aChyZWFkX29ubHkgaW1hZ2UyZF9hcnJheV9kZXB0aF90IGltYWdlKTsKI2VuZGlmIC8vY2xfa2hyX2RlcHRoX2ltYWdlcwojaWYgZGVmaW5lZChjbF9raHJfZ2xfbXNhYV9zaGFyaW5nKQppbnQgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2Vfd2lkdGgocmVhZF9vbmx5IGltYWdlMmRfbXNhYV90IGltYWdlKTsKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX3dpZHRoKHJlYWRfb25seSBpbWFnZTJkX21zYWFfZGVwdGhfdCBpbWFnZSk7CmludCBfX292bGQgX19jbmZuIGdldF9pbWFnZV93aWR0aChyZWFkX29ubHkgaW1hZ2UyZF9hcnJheV9tc2FhX3QgaW1hZ2UpOwppbnQgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2Vfd2lkdGgocmVhZF9vbmx5IGltYWdlMmRfYXJyYXlfbXNhYV9kZXB0aF90IGltYWdlKTsKI2VuZGlmIC8vY2xfa2hyX2dsX21zYWFfc2hhcmluZwoKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX3dpZHRoKHdyaXRlX29ubHkgaW1hZ2UxZF90IGltYWdlKTsKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX3dpZHRoKHdyaXRlX29ubHkgaW1hZ2UxZF9idWZmZXJfdCBpbWFnZSk7CmludCBfX292bGQgX19jbmZuIGdldF9pbWFnZV93aWR0aCh3cml0ZV9vbmx5IGltYWdlMmRfdCBpbWFnZSk7CiNpZmRlZiBjbF9raHJfM2RfaW1hZ2Vfd3JpdGVzCmludCBfX292bGQgX19jbmZuIGdldF9pbWFnZV93aWR0aCh3cml0ZV9vbmx5IGltYWdlM2RfdCBpbWFnZSk7CiNlbmRpZgppbnQgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2Vfd2lkdGgod3JpdGVfb25seSBpbWFnZTFkX2FycmF5X3QgaW1hZ2UpOwppbnQgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2Vfd2lkdGgod3JpdGVfb25seSBpbWFnZTJkX2FycmF5X3QgaW1hZ2UpOwojaWZkZWYgY2xfa2hyX2RlcHRoX2ltYWdlcwppbnQgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2Vfd2lkdGgod3JpdGVfb25seSBpbWFnZTJkX2RlcHRoX3QgaW1hZ2UpOwppbnQgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2Vfd2lkdGgod3JpdGVfb25seSBpbWFnZTJkX2FycmF5X2RlcHRoX3QgaW1hZ2UpOwojZW5kaWYgLy9jbF9raHJfZGVwdGhfaW1hZ2VzCiNpZiBkZWZpbmVkKGNsX2tocl9nbF9tc2FhX3NoYXJpbmcpCmludCBfX292bGQgX19jbmZuIGdldF9pbWFnZV93aWR0aCh3cml0ZV9vbmx5IGltYWdlMmRfbXNhYV90IGltYWdlKTsKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX3dpZHRoKHdyaXRlX29ubHkgaW1hZ2UyZF9tc2FhX2RlcHRoX3QgaW1hZ2UpOwppbnQgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2Vfd2lkdGgod3JpdGVfb25seSBpbWFnZTJkX2FycmF5X21zYWFfdCBpbWFnZSk7CmludCBfX292bGQgX19jbmZuIGdldF9pbWFnZV93aWR0aCh3cml0ZV9vbmx5IGltYWdlMmRfYXJyYXlfbXNhYV9kZXB0aF90IGltYWdlKTsKI2VuZGlmIC8vY2xfa2hyX2dsX21zYWFfc2hhcmluZwoKI2lmIGRlZmluZWQoX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXykgfHwgKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fMl8wKQppbnQgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2Vfd2lkdGgocmVhZF93cml0ZSBpbWFnZTFkX3QgaW1hZ2UpOwppbnQgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2Vfd2lkdGgocmVhZF93cml0ZSBpbWFnZTFkX2J1ZmZlcl90IGltYWdlKTsKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX3dpZHRoKHJlYWRfd3JpdGUgaW1hZ2UyZF90IGltYWdlKTsKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX3dpZHRoKHJlYWRfd3JpdGUgaW1hZ2UzZF90IGltYWdlKTsKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX3dpZHRoKHJlYWRfd3JpdGUgaW1hZ2UxZF9hcnJheV90IGltYWdlKTsKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX3dpZHRoKHJlYWRfd3JpdGUgaW1hZ2UyZF9hcnJheV90IGltYWdlKTsKI2lmZGVmIGNsX2tocl9kZXB0aF9pbWFnZXMKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX3dpZHRoKHJlYWRfd3JpdGUgaW1hZ2UyZF9kZXB0aF90IGltYWdlKTsKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX3dpZHRoKHJlYWRfd3JpdGUgaW1hZ2UyZF9hcnJheV9kZXB0aF90IGltYWdlKTsKI2VuZGlmIC8vY2xfa2hyX2RlcHRoX2ltYWdlcwojaWYgZGVmaW5lZChjbF9raHJfZ2xfbXNhYV9zaGFyaW5nKQppbnQgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2Vfd2lkdGgocmVhZF93cml0ZSBpbWFnZTJkX21zYWFfdCBpbWFnZSk7CmludCBfX292bGQgX19jbmZuIGdldF9pbWFnZV93aWR0aChyZWFkX3dyaXRlIGltYWdlMmRfbXNhYV9kZXB0aF90IGltYWdlKTsKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX3dpZHRoKHJlYWRfd3JpdGUgaW1hZ2UyZF9hcnJheV9tc2FhX3QgaW1hZ2UpOwppbnQgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2Vfd2lkdGgocmVhZF93cml0ZSBpbWFnZTJkX2FycmF5X21zYWFfZGVwdGhfdCBpbWFnZSk7CiNlbmRpZiAvL2NsX2tocl9nbF9tc2FhX3NoYXJpbmcKI2VuZGlmIC8vZGVmaW5lZChfX09QRU5DTF9DUFBfVkVSU0lPTl9fKSB8fCAoX19PUEVOQ0xfQ19WRVJTSU9OX18gPj0gQ0xfVkVSU0lPTl8yXzApCgovKioKICogUmV0dXJuIHRoZSBpbWFnZSBoZWlnaHQgaW4gcGl4ZWxzLgogKi8KaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2hlaWdodChyZWFkX29ubHkgaW1hZ2UyZF90IGltYWdlKTsKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2hlaWdodChyZWFkX29ubHkgaW1hZ2UzZF90IGltYWdlKTsKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2hlaWdodChyZWFkX29ubHkgaW1hZ2UyZF9hcnJheV90IGltYWdlKTsKI2lmZGVmIGNsX2tocl9kZXB0aF9pbWFnZXMKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2hlaWdodChyZWFkX29ubHkgaW1hZ2UyZF9kZXB0aF90IGltYWdlKTsKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2hlaWdodChyZWFkX29ubHkgaW1hZ2UyZF9hcnJheV9kZXB0aF90IGltYWdlKTsKI2VuZGlmIC8vY2xfa2hyX2RlcHRoX2ltYWdlcwojaWYgZGVmaW5lZChjbF9raHJfZ2xfbXNhYV9zaGFyaW5nKQppbnQgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2VfaGVpZ2h0KHJlYWRfb25seSBpbWFnZTJkX21zYWFfdCBpbWFnZSk7CmludCBfX292bGQgX19jbmZuIGdldF9pbWFnZV9oZWlnaHQocmVhZF9vbmx5IGltYWdlMmRfbXNhYV9kZXB0aF90IGltYWdlKTsKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2hlaWdodChyZWFkX29ubHkgaW1hZ2UyZF9hcnJheV9tc2FhX3QgaW1hZ2UpOwppbnQgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2VfaGVpZ2h0KHJlYWRfb25seSBpbWFnZTJkX2FycmF5X21zYWFfZGVwdGhfdCBpbWFnZSk7CiNlbmRpZiAvL2NsX2tocl9nbF9tc2FhX3NoYXJpbmcKCmludCBfX292bGQgX19jbmZuIGdldF9pbWFnZV9oZWlnaHQod3JpdGVfb25seSBpbWFnZTJkX3QgaW1hZ2UpOwojaWZkZWYgY2xfa2hyXzNkX2ltYWdlX3dyaXRlcwppbnQgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2VfaGVpZ2h0KHdyaXRlX29ubHkgaW1hZ2UzZF90IGltYWdlKTsKI2VuZGlmCmludCBfX292bGQgX19jbmZuIGdldF9pbWFnZV9oZWlnaHQod3JpdGVfb25seSBpbWFnZTJkX2FycmF5X3QgaW1hZ2UpOwojaWZkZWYgY2xfa2hyX2RlcHRoX2ltYWdlcwppbnQgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2VfaGVpZ2h0KHdyaXRlX29ubHkgaW1hZ2UyZF9kZXB0aF90IGltYWdlKTsKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2hlaWdodCh3cml0ZV9vbmx5IGltYWdlMmRfYXJyYXlfZGVwdGhfdCBpbWFnZSk7CiNlbmRpZiAvL2NsX2tocl9kZXB0aF9pbWFnZXMKI2lmIGRlZmluZWQoY2xfa2hyX2dsX21zYWFfc2hhcmluZykKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2hlaWdodCh3cml0ZV9vbmx5IGltYWdlMmRfbXNhYV90IGltYWdlKTsKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2hlaWdodCh3cml0ZV9vbmx5IGltYWdlMmRfbXNhYV9kZXB0aF90IGltYWdlKTsKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2hlaWdodCh3cml0ZV9vbmx5IGltYWdlMmRfYXJyYXlfbXNhYV90IGltYWdlKTsKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2hlaWdodCh3cml0ZV9vbmx5IGltYWdlMmRfYXJyYXlfbXNhYV9kZXB0aF90IGltYWdlKTsKI2VuZGlmIC8vY2xfa2hyX2dsX21zYWFfc2hhcmluZwoKI2lmIGRlZmluZWQoX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXykgfHwgKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fMl8wKQppbnQgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2VfaGVpZ2h0KHJlYWRfd3JpdGUgaW1hZ2UyZF90IGltYWdlKTsKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2hlaWdodChyZWFkX3dyaXRlIGltYWdlM2RfdCBpbWFnZSk7CmludCBfX292bGQgX19jbmZuIGdldF9pbWFnZV9oZWlnaHQocmVhZF93cml0ZSBpbWFnZTJkX2FycmF5X3QgaW1hZ2UpOwojaWZkZWYgY2xfa2hyX2RlcHRoX2ltYWdlcwppbnQgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2VfaGVpZ2h0KHJlYWRfd3JpdGUgaW1hZ2UyZF9kZXB0aF90IGltYWdlKTsKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2hlaWdodChyZWFkX3dyaXRlIGltYWdlMmRfYXJyYXlfZGVwdGhfdCBpbWFnZSk7CiNlbmRpZiAvL2NsX2tocl9kZXB0aF9pbWFnZXMKI2lmIGRlZmluZWQoY2xfa2hyX2dsX21zYWFfc2hhcmluZykKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2hlaWdodChyZWFkX3dyaXRlIGltYWdlMmRfbXNhYV90IGltYWdlKTsKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2hlaWdodChyZWFkX3dyaXRlIGltYWdlMmRfbXNhYV9kZXB0aF90IGltYWdlKTsKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2hlaWdodChyZWFkX3dyaXRlIGltYWdlMmRfYXJyYXlfbXNhYV90IGltYWdlKTsKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2hlaWdodChyZWFkX3dyaXRlIGltYWdlMmRfYXJyYXlfbXNhYV9kZXB0aF90IGltYWdlKTsKI2VuZGlmIC8vY2xfa2hyX2dsX21zYWFfc2hhcmluZwojZW5kaWYgLy9kZWZpbmVkKF9fT1BFTkNMX0NQUF9WRVJTSU9OX18pIHx8IChfX09QRU5DTF9DX1ZFUlNJT05fXyA+PSBDTF9WRVJTSU9OXzJfMCkKCi8qKgogKiBSZXR1cm4gdGhlIGltYWdlIGRlcHRoIGluIHBpeGVscy4KICovCmludCBfX292bGQgX19jbmZuIGdldF9pbWFnZV9kZXB0aChyZWFkX29ubHkgaW1hZ2UzZF90IGltYWdlKTsKCiNpZmRlZiBjbF9raHJfM2RfaW1hZ2Vfd3JpdGVzCmludCBfX292bGQgX19jbmZuIGdldF9pbWFnZV9kZXB0aCh3cml0ZV9vbmx5IGltYWdlM2RfdCBpbWFnZSk7CiNlbmRpZgoKI2lmIGRlZmluZWQoX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXykgfHwgKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fMl8wKQppbnQgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2VfZGVwdGgocmVhZF93cml0ZSBpbWFnZTNkX3QgaW1hZ2UpOwojZW5kaWYgLy9kZWZpbmVkKF9fT1BFTkNMX0NQUF9WRVJTSU9OX18pIHx8IChfX09QRU5DTF9DX1ZFUlNJT05fXyA+PSBDTF9WRVJTSU9OXzJfMCkKCi8vIE9wZW5DTCBFeHRlbnNpb24gdjIuMCBzOS4xOCAtIE1pcG1hcHMKI2lmIGRlZmluZWQoX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXykgfHwgKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fMl8wKQojaWZkZWYgY2xfa2hyX21pcG1hcF9pbWFnZQovKioKICogUmV0dXJuIHRoZSBpbWFnZSBtaXBsZXZlbHMuCiAqLwoKaW50IF9fb3ZsZCBnZXRfaW1hZ2VfbnVtX21pcF9sZXZlbHMocmVhZF9vbmx5IGltYWdlMWRfdCBpbWFnZSk7CmludCBfX292bGQgZ2V0X2ltYWdlX251bV9taXBfbGV2ZWxzKHJlYWRfb25seSBpbWFnZTJkX3QgaW1hZ2UpOwppbnQgX19vdmxkIGdldF9pbWFnZV9udW1fbWlwX2xldmVscyhyZWFkX29ubHkgaW1hZ2UzZF90IGltYWdlKTsKCmludCBfX292bGQgZ2V0X2ltYWdlX251bV9taXBfbGV2ZWxzKHdyaXRlX29ubHkgaW1hZ2UxZF90IGltYWdlKTsKaW50IF9fb3ZsZCBnZXRfaW1hZ2VfbnVtX21pcF9sZXZlbHMod3JpdGVfb25seSBpbWFnZTJkX3QgaW1hZ2UpOwojaWZkZWYgY2xfa2hyXzNkX2ltYWdlX3dyaXRlcwppbnQgX19vdmxkIGdldF9pbWFnZV9udW1fbWlwX2xldmVscyh3cml0ZV9vbmx5IGltYWdlM2RfdCBpbWFnZSk7CiNlbmRpZgoKaW50IF9fb3ZsZCBnZXRfaW1hZ2VfbnVtX21pcF9sZXZlbHMocmVhZF93cml0ZSBpbWFnZTFkX3QgaW1hZ2UpOwppbnQgX19vdmxkIGdldF9pbWFnZV9udW1fbWlwX2xldmVscyhyZWFkX3dyaXRlIGltYWdlMmRfdCBpbWFnZSk7CmludCBfX292bGQgZ2V0X2ltYWdlX251bV9taXBfbGV2ZWxzKHJlYWRfd3JpdGUgaW1hZ2UzZF90IGltYWdlKTsKCmludCBfX292bGQgZ2V0X2ltYWdlX251bV9taXBfbGV2ZWxzKHJlYWRfb25seSBpbWFnZTFkX2FycmF5X3QgaW1hZ2UpOwppbnQgX19vdmxkIGdldF9pbWFnZV9udW1fbWlwX2xldmVscyhyZWFkX29ubHkgaW1hZ2UyZF9hcnJheV90IGltYWdlKTsKaW50IF9fb3ZsZCBnZXRfaW1hZ2VfbnVtX21pcF9sZXZlbHMocmVhZF9vbmx5IGltYWdlMmRfYXJyYXlfZGVwdGhfdCBpbWFnZSk7CmludCBfX292bGQgZ2V0X2ltYWdlX251bV9taXBfbGV2ZWxzKHJlYWRfb25seSBpbWFnZTJkX2RlcHRoX3QgaW1hZ2UpOwoKaW50IF9fb3ZsZCBnZXRfaW1hZ2VfbnVtX21pcF9sZXZlbHMod3JpdGVfb25seSBpbWFnZTFkX2FycmF5X3QgaW1hZ2UpOwppbnQgX19vdmxkIGdldF9pbWFnZV9udW1fbWlwX2xldmVscyh3cml0ZV9vbmx5IGltYWdlMmRfYXJyYXlfdCBpbWFnZSk7CmludCBfX292bGQgZ2V0X2ltYWdlX251bV9taXBfbGV2ZWxzKHdyaXRlX29ubHkgaW1hZ2UyZF9hcnJheV9kZXB0aF90IGltYWdlKTsKaW50IF9fb3ZsZCBnZXRfaW1hZ2VfbnVtX21pcF9sZXZlbHMod3JpdGVfb25seSBpbWFnZTJkX2RlcHRoX3QgaW1hZ2UpOwoKaW50IF9fb3ZsZCBnZXRfaW1hZ2VfbnVtX21pcF9sZXZlbHMocmVhZF93cml0ZSBpbWFnZTFkX2FycmF5X3QgaW1hZ2UpOwppbnQgX19vdmxkIGdldF9pbWFnZV9udW1fbWlwX2xldmVscyhyZWFkX3dyaXRlIGltYWdlMmRfYXJyYXlfdCBpbWFnZSk7CmludCBfX292bGQgZ2V0X2ltYWdlX251bV9taXBfbGV2ZWxzKHJlYWRfd3JpdGUgaW1hZ2UyZF9hcnJheV9kZXB0aF90IGltYWdlKTsKaW50IF9fb3ZsZCBnZXRfaW1hZ2VfbnVtX21pcF9sZXZlbHMocmVhZF93cml0ZSBpbWFnZTJkX2RlcHRoX3QgaW1hZ2UpOwoKI2VuZGlmIC8vY2xfa2hyX21pcG1hcF9pbWFnZQojZW5kaWYgLy9kZWZpbmVkKF9fT1BFTkNMX0NQUF9WRVJTSU9OX18pIHx8IChfX09QRU5DTF9DX1ZFUlNJT05fXyA+PSBDTF9WRVJTSU9OXzJfMCkKCi8qKgogKiBSZXR1cm4gdGhlIGNoYW5uZWwgZGF0YSB0eXBlLiBWYWxpZCB2YWx1ZXMgYXJlOgogKiBDTEtfU05PUk1fSU5UOAogKiBDTEtfU05PUk1fSU5UMTYKICogQ0xLX1VOT1JNX0lOVDgKICogQ0xLX1VOT1JNX0lOVDE2CiAqIENMS19VTk9STV9TSE9SVF81NjUKICogQ0xLX1VOT1JNX1NIT1JUXzU1NQogKiBDTEtfVU5PUk1fU0hPUlRfMTAxMDEwCiAqIENMS19TSUdORURfSU5UOAogKiBDTEtfU0lHTkVEX0lOVDE2CiAqIENMS19TSUdORURfSU5UMzIKICogQ0xLX1VOU0lHTkVEX0lOVDgKICogQ0xLX1VOU0lHTkVEX0lOVDE2CiAqIENMS19VTlNJR05FRF9JTlQzMgogKiBDTEtfSEFMRl9GTE9BVAogKiBDTEtfRkxPQVQKICovCgppbnQgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2VfY2hhbm5lbF9kYXRhX3R5cGUocmVhZF9vbmx5IGltYWdlMWRfdCBpbWFnZSk7CmludCBfX292bGQgX19jbmZuIGdldF9pbWFnZV9jaGFubmVsX2RhdGFfdHlwZShyZWFkX29ubHkgaW1hZ2UxZF9idWZmZXJfdCBpbWFnZSk7CmludCBfX292bGQgX19jbmZuIGdldF9pbWFnZV9jaGFubmVsX2RhdGFfdHlwZShyZWFkX29ubHkgaW1hZ2UyZF90IGltYWdlKTsKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2NoYW5uZWxfZGF0YV90eXBlKHJlYWRfb25seSBpbWFnZTNkX3QgaW1hZ2UpOwppbnQgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2VfY2hhbm5lbF9kYXRhX3R5cGUocmVhZF9vbmx5IGltYWdlMWRfYXJyYXlfdCBpbWFnZSk7CmludCBfX292bGQgX19jbmZuIGdldF9pbWFnZV9jaGFubmVsX2RhdGFfdHlwZShyZWFkX29ubHkgaW1hZ2UyZF9hcnJheV90IGltYWdlKTsKI2lmZGVmIGNsX2tocl9kZXB0aF9pbWFnZXMKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2NoYW5uZWxfZGF0YV90eXBlKHJlYWRfb25seSBpbWFnZTJkX2RlcHRoX3QgaW1hZ2UpOwppbnQgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2VfY2hhbm5lbF9kYXRhX3R5cGUocmVhZF9vbmx5IGltYWdlMmRfYXJyYXlfZGVwdGhfdCBpbWFnZSk7CiNlbmRpZiAvL2NsX2tocl9kZXB0aF9pbWFnZXMKI2lmIGRlZmluZWQoY2xfa2hyX2dsX21zYWFfc2hhcmluZykKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2NoYW5uZWxfZGF0YV90eXBlKHJlYWRfb25seSBpbWFnZTJkX21zYWFfdCBpbWFnZSk7CmludCBfX292bGQgX19jbmZuIGdldF9pbWFnZV9jaGFubmVsX2RhdGFfdHlwZShyZWFkX29ubHkgaW1hZ2UyZF9tc2FhX2RlcHRoX3QgaW1hZ2UpOwppbnQgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2VfY2hhbm5lbF9kYXRhX3R5cGUocmVhZF9vbmx5IGltYWdlMmRfYXJyYXlfbXNhYV90IGltYWdlKTsKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2NoYW5uZWxfZGF0YV90eXBlKHJlYWRfb25seSBpbWFnZTJkX2FycmF5X21zYWFfZGVwdGhfdCBpbWFnZSk7CiNlbmRpZiAvL2NsX2tocl9nbF9tc2FhX3NoYXJpbmcKCmludCBfX292bGQgX19jbmZuIGdldF9pbWFnZV9jaGFubmVsX2RhdGFfdHlwZSh3cml0ZV9vbmx5IGltYWdlMWRfdCBpbWFnZSk7CmludCBfX292bGQgX19jbmZuIGdldF9pbWFnZV9jaGFubmVsX2RhdGFfdHlwZSh3cml0ZV9vbmx5IGltYWdlMWRfYnVmZmVyX3QgaW1hZ2UpOwppbnQgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2VfY2hhbm5lbF9kYXRhX3R5cGUod3JpdGVfb25seSBpbWFnZTJkX3QgaW1hZ2UpOwojaWZkZWYgY2xfa2hyXzNkX2ltYWdlX3dyaXRlcwppbnQgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2VfY2hhbm5lbF9kYXRhX3R5cGUod3JpdGVfb25seSBpbWFnZTNkX3QgaW1hZ2UpOwojZW5kaWYKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2NoYW5uZWxfZGF0YV90eXBlKHdyaXRlX29ubHkgaW1hZ2UxZF9hcnJheV90IGltYWdlKTsKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2NoYW5uZWxfZGF0YV90eXBlKHdyaXRlX29ubHkgaW1hZ2UyZF9hcnJheV90IGltYWdlKTsKI2lmZGVmIGNsX2tocl9kZXB0aF9pbWFnZXMKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2NoYW5uZWxfZGF0YV90eXBlKHdyaXRlX29ubHkgaW1hZ2UyZF9kZXB0aF90IGltYWdlKTsKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2NoYW5uZWxfZGF0YV90eXBlKHdyaXRlX29ubHkgaW1hZ2UyZF9hcnJheV9kZXB0aF90IGltYWdlKTsKI2VuZGlmIC8vY2xfa2hyX2RlcHRoX2ltYWdlcwojaWYgZGVmaW5lZChjbF9raHJfZ2xfbXNhYV9zaGFyaW5nKQppbnQgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2VfY2hhbm5lbF9kYXRhX3R5cGUod3JpdGVfb25seSBpbWFnZTJkX21zYWFfdCBpbWFnZSk7CmludCBfX292bGQgX19jbmZuIGdldF9pbWFnZV9jaGFubmVsX2RhdGFfdHlwZSh3cml0ZV9vbmx5IGltYWdlMmRfbXNhYV9kZXB0aF90IGltYWdlKTsKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2NoYW5uZWxfZGF0YV90eXBlKHdyaXRlX29ubHkgaW1hZ2UyZF9hcnJheV9tc2FhX3QgaW1hZ2UpOwppbnQgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2VfY2hhbm5lbF9kYXRhX3R5cGUod3JpdGVfb25seSBpbWFnZTJkX2FycmF5X21zYWFfZGVwdGhfdCBpbWFnZSk7CiNlbmRpZiAvL2NsX2tocl9nbF9tc2FhX3NoYXJpbmcKCiNpZiBkZWZpbmVkKF9fT1BFTkNMX0NQUF9WRVJTSU9OX18pIHx8IChfX09QRU5DTF9DX1ZFUlNJT05fXyA+PSBDTF9WRVJTSU9OXzJfMCkKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2NoYW5uZWxfZGF0YV90eXBlKHJlYWRfd3JpdGUgaW1hZ2UxZF90IGltYWdlKTsKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2NoYW5uZWxfZGF0YV90eXBlKHJlYWRfd3JpdGUgaW1hZ2UxZF9idWZmZXJfdCBpbWFnZSk7CmludCBfX292bGQgX19jbmZuIGdldF9pbWFnZV9jaGFubmVsX2RhdGFfdHlwZShyZWFkX3dyaXRlIGltYWdlMmRfdCBpbWFnZSk7CmludCBfX292bGQgX19jbmZuIGdldF9pbWFnZV9jaGFubmVsX2RhdGFfdHlwZShyZWFkX3dyaXRlIGltYWdlM2RfdCBpbWFnZSk7CmludCBfX292bGQgX19jbmZuIGdldF9pbWFnZV9jaGFubmVsX2RhdGFfdHlwZShyZWFkX3dyaXRlIGltYWdlMWRfYXJyYXlfdCBpbWFnZSk7CmludCBfX292bGQgX19jbmZuIGdldF9pbWFnZV9jaGFubmVsX2RhdGFfdHlwZShyZWFkX3dyaXRlIGltYWdlMmRfYXJyYXlfdCBpbWFnZSk7CiNpZmRlZiBjbF9raHJfZGVwdGhfaW1hZ2VzCmludCBfX292bGQgX19jbmZuIGdldF9pbWFnZV9jaGFubmVsX2RhdGFfdHlwZShyZWFkX3dyaXRlIGltYWdlMmRfZGVwdGhfdCBpbWFnZSk7CmludCBfX292bGQgX19jbmZuIGdldF9pbWFnZV9jaGFubmVsX2RhdGFfdHlwZShyZWFkX3dyaXRlIGltYWdlMmRfYXJyYXlfZGVwdGhfdCBpbWFnZSk7CiNlbmRpZiAvL2NsX2tocl9kZXB0aF9pbWFnZXMKI2lmIGRlZmluZWQoY2xfa2hyX2dsX21zYWFfc2hhcmluZykKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2NoYW5uZWxfZGF0YV90eXBlKHJlYWRfd3JpdGUgaW1hZ2UyZF9tc2FhX3QgaW1hZ2UpOwppbnQgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2VfY2hhbm5lbF9kYXRhX3R5cGUocmVhZF93cml0ZSBpbWFnZTJkX21zYWFfZGVwdGhfdCBpbWFnZSk7CmludCBfX292bGQgX19jbmZuIGdldF9pbWFnZV9jaGFubmVsX2RhdGFfdHlwZShyZWFkX3dyaXRlIGltYWdlMmRfYXJyYXlfbXNhYV90IGltYWdlKTsKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2NoYW5uZWxfZGF0YV90eXBlKHJlYWRfd3JpdGUgaW1hZ2UyZF9hcnJheV9tc2FhX2RlcHRoX3QgaW1hZ2UpOwojZW5kaWYgLy9jbF9raHJfZ2xfbXNhYV9zaGFyaW5nCiNlbmRpZiAvL2RlZmluZWQoX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXykgfHwgKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fMl8wKQoKLyoqCiAqIFJldHVybiB0aGUgaW1hZ2UgY2hhbm5lbCBvcmRlci4gVmFsaWQgdmFsdWVzIGFyZToKICogQ0xLX0EKICogQ0xLX1IKICogQ0xLX1J4CiAqIENMS19SRwogKiBDTEtfUkd4CiAqIENMS19SQQogKiBDTEtfUkdCCiAqIENMS19SR0J4CiAqIENMS19SR0JBCiAqIENMS19BUkdCCiAqIENMS19CR1JBCiAqIENMS19JTlRFTlNJVFkKICogQ0xLX0xVTUlOQU5DRQogKi8KCmludCBfX292bGQgX19jbmZuIGdldF9pbWFnZV9jaGFubmVsX29yZGVyKHJlYWRfb25seSBpbWFnZTFkX3QgaW1hZ2UpOwppbnQgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2VfY2hhbm5lbF9vcmRlcihyZWFkX29ubHkgaW1hZ2UxZF9idWZmZXJfdCBpbWFnZSk7CmludCBfX292bGQgX19jbmZuIGdldF9pbWFnZV9jaGFubmVsX29yZGVyKHJlYWRfb25seSBpbWFnZTJkX3QgaW1hZ2UpOwppbnQgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2VfY2hhbm5lbF9vcmRlcihyZWFkX29ubHkgaW1hZ2UzZF90IGltYWdlKTsKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2NoYW5uZWxfb3JkZXIocmVhZF9vbmx5IGltYWdlMWRfYXJyYXlfdCBpbWFnZSk7CmludCBfX292bGQgX19jbmZuIGdldF9pbWFnZV9jaGFubmVsX29yZGVyKHJlYWRfb25seSBpbWFnZTJkX2FycmF5X3QgaW1hZ2UpOwojaWZkZWYgY2xfa2hyX2RlcHRoX2ltYWdlcwppbnQgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2VfY2hhbm5lbF9vcmRlcihyZWFkX29ubHkgaW1hZ2UyZF9kZXB0aF90IGltYWdlKTsKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2NoYW5uZWxfb3JkZXIocmVhZF9vbmx5IGltYWdlMmRfYXJyYXlfZGVwdGhfdCBpbWFnZSk7CiNlbmRpZiAvL2NsX2tocl9kZXB0aF9pbWFnZXMKI2lmIGRlZmluZWQoY2xfa2hyX2dsX21zYWFfc2hhcmluZykKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2NoYW5uZWxfb3JkZXIocmVhZF9vbmx5IGltYWdlMmRfbXNhYV90IGltYWdlKTsKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2NoYW5uZWxfb3JkZXIocmVhZF9vbmx5IGltYWdlMmRfbXNhYV9kZXB0aF90IGltYWdlKTsKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2NoYW5uZWxfb3JkZXIocmVhZF9vbmx5IGltYWdlMmRfYXJyYXlfbXNhYV90IGltYWdlKTsKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2NoYW5uZWxfb3JkZXIocmVhZF9vbmx5IGltYWdlMmRfYXJyYXlfbXNhYV9kZXB0aF90IGltYWdlKTsKI2VuZGlmIC8vY2xfa2hyX2dsX21zYWFfc2hhcmluZwoKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2NoYW5uZWxfb3JkZXIod3JpdGVfb25seSBpbWFnZTFkX3QgaW1hZ2UpOwppbnQgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2VfY2hhbm5lbF9vcmRlcih3cml0ZV9vbmx5IGltYWdlMWRfYnVmZmVyX3QgaW1hZ2UpOwppbnQgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2VfY2hhbm5lbF9vcmRlcih3cml0ZV9vbmx5IGltYWdlMmRfdCBpbWFnZSk7CiNpZmRlZiBjbF9raHJfM2RfaW1hZ2Vfd3JpdGVzCmludCBfX292bGQgX19jbmZuIGdldF9pbWFnZV9jaGFubmVsX29yZGVyKHdyaXRlX29ubHkgaW1hZ2UzZF90IGltYWdlKTsKI2VuZGlmCmludCBfX292bGQgX19jbmZuIGdldF9pbWFnZV9jaGFubmVsX29yZGVyKHdyaXRlX29ubHkgaW1hZ2UxZF9hcnJheV90IGltYWdlKTsKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2NoYW5uZWxfb3JkZXIod3JpdGVfb25seSBpbWFnZTJkX2FycmF5X3QgaW1hZ2UpOwojaWZkZWYgY2xfa2hyX2RlcHRoX2ltYWdlcwppbnQgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2VfY2hhbm5lbF9vcmRlcih3cml0ZV9vbmx5IGltYWdlMmRfZGVwdGhfdCBpbWFnZSk7CmludCBfX292bGQgX19jbmZuIGdldF9pbWFnZV9jaGFubmVsX29yZGVyKHdyaXRlX29ubHkgaW1hZ2UyZF9hcnJheV9kZXB0aF90IGltYWdlKTsKI2VuZGlmIC8vY2xfa2hyX2RlcHRoX2ltYWdlcwojaWYgZGVmaW5lZChjbF9raHJfZ2xfbXNhYV9zaGFyaW5nKQppbnQgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2VfY2hhbm5lbF9vcmRlcih3cml0ZV9vbmx5IGltYWdlMmRfbXNhYV90IGltYWdlKTsKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2NoYW5uZWxfb3JkZXIod3JpdGVfb25seSBpbWFnZTJkX21zYWFfZGVwdGhfdCBpbWFnZSk7CmludCBfX292bGQgX19jbmZuIGdldF9pbWFnZV9jaGFubmVsX29yZGVyKHdyaXRlX29ubHkgaW1hZ2UyZF9hcnJheV9tc2FhX3QgaW1hZ2UpOwppbnQgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2VfY2hhbm5lbF9vcmRlcih3cml0ZV9vbmx5IGltYWdlMmRfYXJyYXlfbXNhYV9kZXB0aF90IGltYWdlKTsKI2VuZGlmIC8vY2xfa2hyX2dsX21zYWFfc2hhcmluZwoKI2lmIGRlZmluZWQoX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXykgfHwgKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fMl8wKQppbnQgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2VfY2hhbm5lbF9vcmRlcihyZWFkX3dyaXRlIGltYWdlMWRfdCBpbWFnZSk7CmludCBfX292bGQgX19jbmZuIGdldF9pbWFnZV9jaGFubmVsX29yZGVyKHJlYWRfd3JpdGUgaW1hZ2UxZF9idWZmZXJfdCBpbWFnZSk7CmludCBfX292bGQgX19jbmZuIGdldF9pbWFnZV9jaGFubmVsX29yZGVyKHJlYWRfd3JpdGUgaW1hZ2UyZF90IGltYWdlKTsKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2NoYW5uZWxfb3JkZXIocmVhZF93cml0ZSBpbWFnZTNkX3QgaW1hZ2UpOwppbnQgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2VfY2hhbm5lbF9vcmRlcihyZWFkX3dyaXRlIGltYWdlMWRfYXJyYXlfdCBpbWFnZSk7CmludCBfX292bGQgX19jbmZuIGdldF9pbWFnZV9jaGFubmVsX29yZGVyKHJlYWRfd3JpdGUgaW1hZ2UyZF9hcnJheV90IGltYWdlKTsKI2lmZGVmIGNsX2tocl9kZXB0aF9pbWFnZXMKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2NoYW5uZWxfb3JkZXIocmVhZF93cml0ZSBpbWFnZTJkX2RlcHRoX3QgaW1hZ2UpOwppbnQgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2VfY2hhbm5lbF9vcmRlcihyZWFkX3dyaXRlIGltYWdlMmRfYXJyYXlfZGVwdGhfdCBpbWFnZSk7CiNlbmRpZiAvL2NsX2tocl9kZXB0aF9pbWFnZXMKI2lmIGRlZmluZWQoY2xfa2hyX2dsX21zYWFfc2hhcmluZykKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2NoYW5uZWxfb3JkZXIocmVhZF93cml0ZSBpbWFnZTJkX21zYWFfdCBpbWFnZSk7CmludCBfX292bGQgX19jbmZuIGdldF9pbWFnZV9jaGFubmVsX29yZGVyKHJlYWRfd3JpdGUgaW1hZ2UyZF9tc2FhX2RlcHRoX3QgaW1hZ2UpOwppbnQgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2VfY2hhbm5lbF9vcmRlcihyZWFkX3dyaXRlIGltYWdlMmRfYXJyYXlfbXNhYV90IGltYWdlKTsKaW50IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2NoYW5uZWxfb3JkZXIocmVhZF93cml0ZSBpbWFnZTJkX2FycmF5X21zYWFfZGVwdGhfdCBpbWFnZSk7CiNlbmRpZiAvL2NsX2tocl9nbF9tc2FhX3NoYXJpbmcKI2VuZGlmIC8vZGVmaW5lZChfX09QRU5DTF9DUFBfVkVSU0lPTl9fKSB8fCAoX19PUEVOQ0xfQ19WRVJTSU9OX18gPj0gQ0xfVkVSU0lPTl8yXzApCgovKioKICogUmV0dXJuIHRoZSAyRCBpbWFnZSB3aWR0aCBhbmQgaGVpZ2h0IGFzIGFuIGludDIKICogdHlwZS4gVGhlIHdpZHRoIGlzIHJldHVybmVkIGluIHRoZSB4IGNvbXBvbmVudCwgYW5kCiAqIHRoZSBoZWlnaHQgaW4gdGhlIHkgY29tcG9uZW50LgogKi8KaW50MiBfX292bGQgX19jbmZuIGdldF9pbWFnZV9kaW0ocmVhZF9vbmx5IGltYWdlMmRfdCBpbWFnZSk7CmludDIgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2VfZGltKHJlYWRfb25seSBpbWFnZTJkX2FycmF5X3QgaW1hZ2UpOwojaWZkZWYgY2xfa2hyX2RlcHRoX2ltYWdlcwppbnQyIF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2RpbShyZWFkX29ubHkgaW1hZ2UyZF9hcnJheV9kZXB0aF90IGltYWdlKTsKaW50MiBfX292bGQgX19jbmZuIGdldF9pbWFnZV9kaW0ocmVhZF9vbmx5IGltYWdlMmRfZGVwdGhfdCBpbWFnZSk7CiNlbmRpZiAvL2NsX2tocl9kZXB0aF9pbWFnZXMKI2lmIGRlZmluZWQoY2xfa2hyX2dsX21zYWFfc2hhcmluZykKaW50MiBfX292bGQgX19jbmZuIGdldF9pbWFnZV9kaW0ocmVhZF9vbmx5IGltYWdlMmRfbXNhYV90IGltYWdlKTsKaW50MiBfX292bGQgX19jbmZuIGdldF9pbWFnZV9kaW0ocmVhZF9vbmx5IGltYWdlMmRfbXNhYV9kZXB0aF90IGltYWdlKTsKaW50MiBfX292bGQgX19jbmZuIGdldF9pbWFnZV9kaW0ocmVhZF9vbmx5IGltYWdlMmRfYXJyYXlfbXNhYV90IGltYWdlKTsKaW50MiBfX292bGQgX19jbmZuIGdldF9pbWFnZV9kaW0ocmVhZF9vbmx5IGltYWdlMmRfYXJyYXlfbXNhYV9kZXB0aF90IGltYWdlKTsKI2VuZGlmIC8vY2xfa2hyX2dsX21zYWFfc2hhcmluZwoKaW50MiBfX292bGQgX19jbmZuIGdldF9pbWFnZV9kaW0od3JpdGVfb25seSBpbWFnZTJkX3QgaW1hZ2UpOwppbnQyIF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2RpbSh3cml0ZV9vbmx5IGltYWdlMmRfYXJyYXlfdCBpbWFnZSk7CiNpZmRlZiBjbF9raHJfZGVwdGhfaW1hZ2VzCmludDIgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2VfZGltKHdyaXRlX29ubHkgaW1hZ2UyZF9hcnJheV9kZXB0aF90IGltYWdlKTsKaW50MiBfX292bGQgX19jbmZuIGdldF9pbWFnZV9kaW0od3JpdGVfb25seSBpbWFnZTJkX2RlcHRoX3QgaW1hZ2UpOwojZW5kaWYgLy9jbF9raHJfZGVwdGhfaW1hZ2VzCiNpZiBkZWZpbmVkKGNsX2tocl9nbF9tc2FhX3NoYXJpbmcpCmludDIgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2VfZGltKHdyaXRlX29ubHkgaW1hZ2UyZF9tc2FhX3QgaW1hZ2UpOwppbnQyIF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2RpbSh3cml0ZV9vbmx5IGltYWdlMmRfbXNhYV9kZXB0aF90IGltYWdlKTsKaW50MiBfX292bGQgX19jbmZuIGdldF9pbWFnZV9kaW0od3JpdGVfb25seSBpbWFnZTJkX2FycmF5X21zYWFfdCBpbWFnZSk7CmludDIgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2VfZGltKHdyaXRlX29ubHkgaW1hZ2UyZF9hcnJheV9tc2FhX2RlcHRoX3QgaW1hZ2UpOwojZW5kaWYgLy9jbF9raHJfZ2xfbXNhYV9zaGFyaW5nCgojaWYgZGVmaW5lZChfX09QRU5DTF9DUFBfVkVSU0lPTl9fKSB8fCAoX19PUEVOQ0xfQ19WRVJTSU9OX18gPj0gQ0xfVkVSU0lPTl8yXzApCmludDIgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2VfZGltKHJlYWRfd3JpdGUgaW1hZ2UyZF90IGltYWdlKTsKaW50MiBfX292bGQgX19jbmZuIGdldF9pbWFnZV9kaW0ocmVhZF93cml0ZSBpbWFnZTJkX2FycmF5X3QgaW1hZ2UpOwojaWZkZWYgY2xfa2hyX2RlcHRoX2ltYWdlcwppbnQyIF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2RpbShyZWFkX3dyaXRlIGltYWdlMmRfYXJyYXlfZGVwdGhfdCBpbWFnZSk7CmludDIgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2VfZGltKHJlYWRfd3JpdGUgaW1hZ2UyZF9kZXB0aF90IGltYWdlKTsKI2VuZGlmIC8vY2xfa2hyX2RlcHRoX2ltYWdlcwojaWYgZGVmaW5lZChjbF9raHJfZ2xfbXNhYV9zaGFyaW5nKQppbnQyIF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2RpbShyZWFkX3dyaXRlIGltYWdlMmRfbXNhYV90IGltYWdlKTsKaW50MiBfX292bGQgX19jbmZuIGdldF9pbWFnZV9kaW0ocmVhZF93cml0ZSBpbWFnZTJkX21zYWFfZGVwdGhfdCBpbWFnZSk7CmludDIgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2VfZGltKHJlYWRfd3JpdGUgaW1hZ2UyZF9hcnJheV9tc2FhX3QgaW1hZ2UpOwppbnQyIF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2RpbShyZWFkX3dyaXRlIGltYWdlMmRfYXJyYXlfbXNhYV9kZXB0aF90IGltYWdlKTsKI2VuZGlmIC8vY2xfa2hyX2dsX21zYWFfc2hhcmluZwojZW5kaWYgLy9kZWZpbmVkKF9fT1BFTkNMX0NQUF9WRVJTSU9OX18pIHx8IChfX09QRU5DTF9DX1ZFUlNJT05fXyA+PSBDTF9WRVJTSU9OXzJfMCkKCi8qKgogKiBSZXR1cm4gdGhlIDNEIGltYWdlIHdpZHRoLCBoZWlnaHQsIGFuZCBkZXB0aCBhcyBhbgogKiBpbnQ0IHR5cGUuIFRoZSB3aWR0aCBpcyByZXR1cm5lZCBpbiB0aGUgeAogKiBjb21wb25lbnQsIGhlaWdodCBpbiB0aGUgeSBjb21wb25lbnQsIGRlcHRoIGluIHRoZSB6CiAqIGNvbXBvbmVudCBhbmQgdGhlIHcgY29tcG9uZW50IGlzIDAuCiAqLwppbnQ0IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2RpbShyZWFkX29ubHkgaW1hZ2UzZF90IGltYWdlKTsKI2lmZGVmIGNsX2tocl8zZF9pbWFnZV93cml0ZXMKaW50NCBfX292bGQgX19jbmZuIGdldF9pbWFnZV9kaW0od3JpdGVfb25seSBpbWFnZTNkX3QgaW1hZ2UpOwojZW5kaWYKI2lmIGRlZmluZWQoX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXykgfHwgKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fMl8wKQppbnQ0IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2RpbShyZWFkX3dyaXRlIGltYWdlM2RfdCBpbWFnZSk7CiNlbmRpZiAvL2RlZmluZWQoX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXykgfHwgKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fMl8wKQoKLyoqCiAqIFJldHVybiB0aGUgaW1hZ2UgYXJyYXkgc2l6ZS4KICovCgpzaXplX3QgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2VfYXJyYXlfc2l6ZShyZWFkX29ubHkgaW1hZ2UxZF9hcnJheV90IGltYWdlX2FycmF5KTsKc2l6ZV90IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2FycmF5X3NpemUocmVhZF9vbmx5IGltYWdlMmRfYXJyYXlfdCBpbWFnZV9hcnJheSk7CiNpZmRlZiBjbF9raHJfZGVwdGhfaW1hZ2VzCnNpemVfdCBfX292bGQgX19jbmZuIGdldF9pbWFnZV9hcnJheV9zaXplKHJlYWRfb25seSBpbWFnZTJkX2FycmF5X2RlcHRoX3QgaW1hZ2VfYXJyYXkpOwojZW5kaWYgLy9jbF9raHJfZGVwdGhfaW1hZ2VzCiNpZiBkZWZpbmVkKGNsX2tocl9nbF9tc2FhX3NoYXJpbmcpCnNpemVfdCBfX292bGQgX19jbmZuIGdldF9pbWFnZV9hcnJheV9zaXplKHJlYWRfb25seSBpbWFnZTJkX2FycmF5X21zYWFfdCBpbWFnZV9hcnJheSk7CnNpemVfdCBfX292bGQgX19jbmZuIGdldF9pbWFnZV9hcnJheV9zaXplKHJlYWRfb25seSBpbWFnZTJkX2FycmF5X21zYWFfZGVwdGhfdCBpbWFnZV9hcnJheSk7CiNlbmRpZiAvL2NsX2tocl9nbF9tc2FhX3NoYXJpbmcKCnNpemVfdCBfX292bGQgX19jbmZuIGdldF9pbWFnZV9hcnJheV9zaXplKHdyaXRlX29ubHkgaW1hZ2UxZF9hcnJheV90IGltYWdlX2FycmF5KTsKc2l6ZV90IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2FycmF5X3NpemUod3JpdGVfb25seSBpbWFnZTJkX2FycmF5X3QgaW1hZ2VfYXJyYXkpOwojaWZkZWYgY2xfa2hyX2RlcHRoX2ltYWdlcwpzaXplX3QgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2VfYXJyYXlfc2l6ZSh3cml0ZV9vbmx5IGltYWdlMmRfYXJyYXlfZGVwdGhfdCBpbWFnZV9hcnJheSk7CiNlbmRpZiAvL2NsX2tocl9kZXB0aF9pbWFnZXMKI2lmIGRlZmluZWQoY2xfa2hyX2dsX21zYWFfc2hhcmluZykKc2l6ZV90IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2FycmF5X3NpemUod3JpdGVfb25seSBpbWFnZTJkX2FycmF5X21zYWFfdCBpbWFnZV9hcnJheSk7CnNpemVfdCBfX292bGQgX19jbmZuIGdldF9pbWFnZV9hcnJheV9zaXplKHdyaXRlX29ubHkgaW1hZ2UyZF9hcnJheV9tc2FhX2RlcHRoX3QgaW1hZ2VfYXJyYXkpOwojZW5kaWYgLy9jbF9raHJfZ2xfbXNhYV9zaGFyaW5nCgojaWYgZGVmaW5lZChfX09QRU5DTF9DUFBfVkVSU0lPTl9fKSB8fCAoX19PUEVOQ0xfQ19WRVJTSU9OX18gPj0gQ0xfVkVSU0lPTl8yXzApCnNpemVfdCBfX292bGQgX19jbmZuIGdldF9pbWFnZV9hcnJheV9zaXplKHJlYWRfd3JpdGUgaW1hZ2UxZF9hcnJheV90IGltYWdlX2FycmF5KTsKc2l6ZV90IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2FycmF5X3NpemUocmVhZF93cml0ZSBpbWFnZTJkX2FycmF5X3QgaW1hZ2VfYXJyYXkpOwojaWZkZWYgY2xfa2hyX2RlcHRoX2ltYWdlcwpzaXplX3QgX19vdmxkIF9fY25mbiBnZXRfaW1hZ2VfYXJyYXlfc2l6ZShyZWFkX3dyaXRlIGltYWdlMmRfYXJyYXlfZGVwdGhfdCBpbWFnZV9hcnJheSk7CiNlbmRpZiAvL2NsX2tocl9kZXB0aF9pbWFnZXMKI2lmIGRlZmluZWQoY2xfa2hyX2dsX21zYWFfc2hhcmluZykKc2l6ZV90IF9fb3ZsZCBfX2NuZm4gZ2V0X2ltYWdlX2FycmF5X3NpemUocmVhZF93cml0ZSBpbWFnZTJkX2FycmF5X21zYWFfdCBpbWFnZV9hcnJheSk7CnNpemVfdCBfX292bGQgX19jbmZuIGdldF9pbWFnZV9hcnJheV9zaXplKHJlYWRfd3JpdGUgaW1hZ2UyZF9hcnJheV9tc2FhX2RlcHRoX3QgaW1hZ2VfYXJyYXkpOwojZW5kaWYgLy9jbF9raHJfZ2xfbXNhYV9zaGFyaW5nCiNlbmRpZiAvL2RlZmluZWQoX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXykgfHwgKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fMl8wKQoKLyoqCiogUmV0dXJuIHRoZSBudW1iZXIgb2Ygc2FtcGxlcyBhc3NvY2lhdGVkIHdpdGggaW1hZ2UKKi8KI2lmIGRlZmluZWQoY2xfa2hyX2dsX21zYWFfc2hhcmluZykKaW50IF9fb3ZsZCBnZXRfaW1hZ2VfbnVtX3NhbXBsZXMocmVhZF9vbmx5IGltYWdlMmRfbXNhYV90IGltYWdlKTsKaW50IF9fb3ZsZCBnZXRfaW1hZ2VfbnVtX3NhbXBsZXMocmVhZF9vbmx5IGltYWdlMmRfbXNhYV9kZXB0aF90IGltYWdlKTsKaW50IF9fb3ZsZCBnZXRfaW1hZ2VfbnVtX3NhbXBsZXMocmVhZF9vbmx5IGltYWdlMmRfYXJyYXlfbXNhYV90IGltYWdlKTsKaW50IF9fb3ZsZCBnZXRfaW1hZ2VfbnVtX3NhbXBsZXMocmVhZF9vbmx5IGltYWdlMmRfYXJyYXlfbXNhYV9kZXB0aF90IGltYWdlKTsKCmludCBfX292bGQgZ2V0X2ltYWdlX251bV9zYW1wbGVzKHdyaXRlX29ubHkgaW1hZ2UyZF9tc2FhX3QgaW1hZ2UpOwppbnQgX19vdmxkIGdldF9pbWFnZV9udW1fc2FtcGxlcyh3cml0ZV9vbmx5IGltYWdlMmRfbXNhYV9kZXB0aF90IGltYWdlKTsKaW50IF9fb3ZsZCBnZXRfaW1hZ2VfbnVtX3NhbXBsZXMod3JpdGVfb25seSBpbWFnZTJkX2FycmF5X21zYWFfdCBpbWFnZSk7CmludCBfX292bGQgZ2V0X2ltYWdlX251bV9zYW1wbGVzKHdyaXRlX29ubHkgaW1hZ2UyZF9hcnJheV9tc2FhX2RlcHRoX3QgaW1hZ2UpOwoKI2lmIGRlZmluZWQoX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXykgfHwgKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fMl8wKQppbnQgX19vdmxkIGdldF9pbWFnZV9udW1fc2FtcGxlcyhyZWFkX3dyaXRlIGltYWdlMmRfbXNhYV90IGltYWdlKTsKaW50IF9fb3ZsZCBnZXRfaW1hZ2VfbnVtX3NhbXBsZXMocmVhZF93cml0ZSBpbWFnZTJkX21zYWFfZGVwdGhfdCBpbWFnZSk7CmludCBfX292bGQgZ2V0X2ltYWdlX251bV9zYW1wbGVzKHJlYWRfd3JpdGUgaW1hZ2UyZF9hcnJheV9tc2FhX3QgaW1hZ2UpOwppbnQgX19vdmxkIGdldF9pbWFnZV9udW1fc2FtcGxlcyhyZWFkX3dyaXRlIGltYWdlMmRfYXJyYXlfbXNhYV9kZXB0aF90IGltYWdlKTsKI2VuZGlmIC8vZGVmaW5lZChfX09QRU5DTF9DUFBfVkVSU0lPTl9fKSB8fCAoX19PUEVOQ0xfQ19WRVJTSU9OX18gPj0gQ0xfVkVSU0lPTl8yXzApCiNlbmRpZgoKLy8gT3BlbkNMIHYyLjAgczYuMTMuMTUgLSBXb3JrLWdyb3VwIEZ1bmN0aW9ucwoKI2lmIGRlZmluZWQoX19vcGVuY2xfY193b3JrX2dyb3VwX2NvbGxlY3RpdmVfZnVuY3Rpb25zKQppbnQgX19vdmxkIF9fY29udiB3b3JrX2dyb3VwX2FsbChpbnQgcHJlZGljYXRlKTsKaW50IF9fb3ZsZCBfX2NvbnYgd29ya19ncm91cF9hbnkoaW50IHByZWRpY2F0ZSk7CgojaWZkZWYgY2xfa2hyX2ZwMTYKaGFsZiBfX292bGQgX19jb252IHdvcmtfZ3JvdXBfYnJvYWRjYXN0KGhhbGYgYSwgc2l6ZV90IGxvY2FsX2lkKTsKaGFsZiBfX292bGQgX19jb252IHdvcmtfZ3JvdXBfYnJvYWRjYXN0KGhhbGYgYSwgc2l6ZV90IHgsIHNpemVfdCB5KTsKaGFsZiBfX292bGQgX19jb252IHdvcmtfZ3JvdXBfYnJvYWRjYXN0KGhhbGYgYSwgc2l6ZV90IHgsIHNpemVfdCB5LCBzaXplX3Qgeik7CiNlbmRpZgppbnQgX19vdmxkIF9fY29udiB3b3JrX2dyb3VwX2Jyb2FkY2FzdChpbnQgYSwgc2l6ZV90IGxvY2FsX2lkKTsKaW50IF9fb3ZsZCBfX2NvbnYgd29ya19ncm91cF9icm9hZGNhc3QoaW50IGEsIHNpemVfdCB4LCBzaXplX3QgeSk7CmludCBfX292bGQgX19jb252IHdvcmtfZ3JvdXBfYnJvYWRjYXN0KGludCBhLCBzaXplX3QgeCwgc2l6ZV90IHksIHNpemVfdCB6KTsKdWludCBfX292bGQgX19jb252IHdvcmtfZ3JvdXBfYnJvYWRjYXN0KHVpbnQgYSwgc2l6ZV90IGxvY2FsX2lkKTsKdWludCBfX292bGQgX19jb252IHdvcmtfZ3JvdXBfYnJvYWRjYXN0KHVpbnQgYSwgc2l6ZV90IHgsIHNpemVfdCB5KTsKdWludCBfX292bGQgX19jb252IHdvcmtfZ3JvdXBfYnJvYWRjYXN0KHVpbnQgYSwgc2l6ZV90IHgsIHNpemVfdCB5LCBzaXplX3Qgeik7CmxvbmcgX19vdmxkIF9fY29udiB3b3JrX2dyb3VwX2Jyb2FkY2FzdChsb25nIGEsIHNpemVfdCBsb2NhbF9pZCk7CmxvbmcgX19vdmxkIF9fY29udiB3b3JrX2dyb3VwX2Jyb2FkY2FzdChsb25nIGEsIHNpemVfdCB4LCBzaXplX3QgeSk7CmxvbmcgX19vdmxkIF9fY29udiB3b3JrX2dyb3VwX2Jyb2FkY2FzdChsb25nIGEsIHNpemVfdCB4LCBzaXplX3QgeSwgc2l6ZV90IHopOwp1bG9uZyBfX292bGQgX19jb252IHdvcmtfZ3JvdXBfYnJvYWRjYXN0KHVsb25nIGEsIHNpemVfdCBsb2NhbF9pZCk7CnVsb25nIF9fb3ZsZCBfX2NvbnYgd29ya19ncm91cF9icm9hZGNhc3QodWxvbmcgYSwgc2l6ZV90IHgsIHNpemVfdCB5KTsKdWxvbmcgX19vdmxkIF9fY29udiB3b3JrX2dyb3VwX2Jyb2FkY2FzdCh1bG9uZyBhLCBzaXplX3QgeCwgc2l6ZV90IHksIHNpemVfdCB6KTsKZmxvYXQgX19vdmxkIF9fY29udiB3b3JrX2dyb3VwX2Jyb2FkY2FzdChmbG9hdCBhLCBzaXplX3QgbG9jYWxfaWQpOwpmbG9hdCBfX292bGQgX19jb252IHdvcmtfZ3JvdXBfYnJvYWRjYXN0KGZsb2F0IGEsIHNpemVfdCB4LCBzaXplX3QgeSk7CmZsb2F0IF9fb3ZsZCBfX2NvbnYgd29ya19ncm91cF9icm9hZGNhc3QoZmxvYXQgYSwgc2l6ZV90IHgsIHNpemVfdCB5LCBzaXplX3Qgeik7CiNpZmRlZiBjbF9raHJfZnA2NApkb3VibGUgX19vdmxkIF9fY29udiB3b3JrX2dyb3VwX2Jyb2FkY2FzdChkb3VibGUgYSwgc2l6ZV90IGxvY2FsX2lkKTsKZG91YmxlIF9fb3ZsZCBfX2NvbnYgd29ya19ncm91cF9icm9hZGNhc3QoZG91YmxlIGEsIHNpemVfdCB4LCBzaXplX3QgeSk7CmRvdWJsZSBfX292bGQgX19jb252IHdvcmtfZ3JvdXBfYnJvYWRjYXN0KGRvdWJsZSBhLCBzaXplX3QgeCwgc2l6ZV90IHksIHNpemVfdCB6KTsKI2VuZGlmIC8vY2xfa2hyX2ZwNjQKCiNpZmRlZiBjbF9raHJfZnAxNgpoYWxmIF9fb3ZsZCBfX2NvbnYgd29ya19ncm91cF9yZWR1Y2VfYWRkKGhhbGYgeCk7CmhhbGYgX19vdmxkIF9fY29udiB3b3JrX2dyb3VwX3JlZHVjZV9taW4oaGFsZiB4KTsKaGFsZiBfX292bGQgX19jb252IHdvcmtfZ3JvdXBfcmVkdWNlX21heChoYWxmIHgpOwpoYWxmIF9fb3ZsZCBfX2NvbnYgd29ya19ncm91cF9zY2FuX2V4Y2x1c2l2ZV9hZGQoaGFsZiB4KTsKaGFsZiBfX292bGQgX19jb252IHdvcmtfZ3JvdXBfc2Nhbl9leGNsdXNpdmVfbWluKGhhbGYgeCk7CmhhbGYgX19vdmxkIF9fY29udiB3b3JrX2dyb3VwX3NjYW5fZXhjbHVzaXZlX21heChoYWxmIHgpOwpoYWxmIF9fb3ZsZCBfX2NvbnYgd29ya19ncm91cF9zY2FuX2luY2x1c2l2ZV9hZGQoaGFsZiB4KTsKaGFsZiBfX292bGQgX19jb252IHdvcmtfZ3JvdXBfc2Nhbl9pbmNsdXNpdmVfbWluKGhhbGYgeCk7CmhhbGYgX19vdmxkIF9fY29udiB3b3JrX2dyb3VwX3NjYW5faW5jbHVzaXZlX21heChoYWxmIHgpOwojZW5kaWYKaW50IF9fb3ZsZCBfX2NvbnYgd29ya19ncm91cF9yZWR1Y2VfYWRkKGludCB4KTsKaW50IF9fb3ZsZCBfX2NvbnYgd29ya19ncm91cF9yZWR1Y2VfbWluKGludCB4KTsKaW50IF9fb3ZsZCBfX2NvbnYgd29ya19ncm91cF9yZWR1Y2VfbWF4KGludCB4KTsKaW50IF9fb3ZsZCBfX2NvbnYgd29ya19ncm91cF9zY2FuX2V4Y2x1c2l2ZV9hZGQoaW50IHgpOwppbnQgX19vdmxkIF9fY29udiB3b3JrX2dyb3VwX3NjYW5fZXhjbHVzaXZlX21pbihpbnQgeCk7CmludCBfX292bGQgX19jb252IHdvcmtfZ3JvdXBfc2Nhbl9leGNsdXNpdmVfbWF4KGludCB4KTsKaW50IF9fb3ZsZCBfX2NvbnYgd29ya19ncm91cF9zY2FuX2luY2x1c2l2ZV9hZGQoaW50IHgpOwppbnQgX19vdmxkIF9fY29udiB3b3JrX2dyb3VwX3NjYW5faW5jbHVzaXZlX21pbihpbnQgeCk7CmludCBfX292bGQgX19jb252IHdvcmtfZ3JvdXBfc2Nhbl9pbmNsdXNpdmVfbWF4KGludCB4KTsKdWludCBfX292bGQgX19jb252IHdvcmtfZ3JvdXBfcmVkdWNlX2FkZCh1aW50IHgpOwp1aW50IF9fb3ZsZCBfX2NvbnYgd29ya19ncm91cF9yZWR1Y2VfbWluKHVpbnQgeCk7CnVpbnQgX19vdmxkIF9fY29udiB3b3JrX2dyb3VwX3JlZHVjZV9tYXgodWludCB4KTsKdWludCBfX292bGQgX19jb252IHdvcmtfZ3JvdXBfc2Nhbl9leGNsdXNpdmVfYWRkKHVpbnQgeCk7CnVpbnQgX19vdmxkIF9fY29udiB3b3JrX2dyb3VwX3NjYW5fZXhjbHVzaXZlX21pbih1aW50IHgpOwp1aW50IF9fb3ZsZCBfX2NvbnYgd29ya19ncm91cF9zY2FuX2V4Y2x1c2l2ZV9tYXgodWludCB4KTsKdWludCBfX292bGQgX19jb252IHdvcmtfZ3JvdXBfc2Nhbl9pbmNsdXNpdmVfYWRkKHVpbnQgeCk7CnVpbnQgX19vdmxkIF9fY29udiB3b3JrX2dyb3VwX3NjYW5faW5jbHVzaXZlX21pbih1aW50IHgpOwp1aW50IF9fb3ZsZCBfX2NvbnYgd29ya19ncm91cF9zY2FuX2luY2x1c2l2ZV9tYXgodWludCB4KTsKbG9uZyBfX292bGQgX19jb252IHdvcmtfZ3JvdXBfcmVkdWNlX2FkZChsb25nIHgpOwpsb25nIF9fb3ZsZCBfX2NvbnYgd29ya19ncm91cF9yZWR1Y2VfbWluKGxvbmcgeCk7CmxvbmcgX19vdmxkIF9fY29udiB3b3JrX2dyb3VwX3JlZHVjZV9tYXgobG9uZyB4KTsKbG9uZyBfX292bGQgX19jb252IHdvcmtfZ3JvdXBfc2Nhbl9leGNsdXNpdmVfYWRkKGxvbmcgeCk7CmxvbmcgX19vdmxkIF9fY29udiB3b3JrX2dyb3VwX3NjYW5fZXhjbHVzaXZlX21pbihsb25nIHgpOwpsb25nIF9fb3ZsZCBfX2NvbnYgd29ya19ncm91cF9zY2FuX2V4Y2x1c2l2ZV9tYXgobG9uZyB4KTsKbG9uZyBfX292bGQgX19jb252IHdvcmtfZ3JvdXBfc2Nhbl9pbmNsdXNpdmVfYWRkKGxvbmcgeCk7CmxvbmcgX19vdmxkIF9fY29udiB3b3JrX2dyb3VwX3NjYW5faW5jbHVzaXZlX21pbihsb25nIHgpOwpsb25nIF9fb3ZsZCBfX2NvbnYgd29ya19ncm91cF9zY2FuX2luY2x1c2l2ZV9tYXgobG9uZyB4KTsKdWxvbmcgX19vdmxkIF9fY29udiB3b3JrX2dyb3VwX3JlZHVjZV9hZGQodWxvbmcgeCk7CnVsb25nIF9fb3ZsZCBfX2NvbnYgd29ya19ncm91cF9yZWR1Y2VfbWluKHVsb25nIHgpOwp1bG9uZyBfX292bGQgX19jb252IHdvcmtfZ3JvdXBfcmVkdWNlX21heCh1bG9uZyB4KTsKdWxvbmcgX19vdmxkIF9fY29udiB3b3JrX2dyb3VwX3NjYW5fZXhjbHVzaXZlX2FkZCh1bG9uZyB4KTsKdWxvbmcgX19vdmxkIF9fY29udiB3b3JrX2dyb3VwX3NjYW5fZXhjbHVzaXZlX21pbih1bG9uZyB4KTsKdWxvbmcgX19vdmxkIF9fY29udiB3b3JrX2dyb3VwX3NjYW5fZXhjbHVzaXZlX21heCh1bG9uZyB4KTsKdWxvbmcgX19vdmxkIF9fY29udiB3b3JrX2dyb3VwX3NjYW5faW5jbHVzaXZlX2FkZCh1bG9uZyB4KTsKdWxvbmcgX19vdmxkIF9fY29udiB3b3JrX2dyb3VwX3NjYW5faW5jbHVzaXZlX21pbih1bG9uZyB4KTsKdWxvbmcgX19vdmxkIF9fY29udiB3b3JrX2dyb3VwX3NjYW5faW5jbHVzaXZlX21heCh1bG9uZyB4KTsKZmxvYXQgX19vdmxkIF9fY29udiB3b3JrX2dyb3VwX3JlZHVjZV9hZGQoZmxvYXQgeCk7CmZsb2F0IF9fb3ZsZCBfX2NvbnYgd29ya19ncm91cF9yZWR1Y2VfbWluKGZsb2F0IHgpOwpmbG9hdCBfX292bGQgX19jb252IHdvcmtfZ3JvdXBfcmVkdWNlX21heChmbG9hdCB4KTsKZmxvYXQgX19vdmxkIF9fY29udiB3b3JrX2dyb3VwX3NjYW5fZXhjbHVzaXZlX2FkZChmbG9hdCB4KTsKZmxvYXQgX19vdmxkIF9fY29udiB3b3JrX2dyb3VwX3NjYW5fZXhjbHVzaXZlX21pbihmbG9hdCB4KTsKZmxvYXQgX19vdmxkIF9fY29udiB3b3JrX2dyb3VwX3NjYW5fZXhjbHVzaXZlX21heChmbG9hdCB4KTsKZmxvYXQgX19vdmxkIF9fY29udiB3b3JrX2dyb3VwX3NjYW5faW5jbHVzaXZlX2FkZChmbG9hdCB4KTsKZmxvYXQgX19vdmxkIF9fY29udiB3b3JrX2dyb3VwX3NjYW5faW5jbHVzaXZlX21pbihmbG9hdCB4KTsKZmxvYXQgX19vdmxkIF9fY29udiB3b3JrX2dyb3VwX3NjYW5faW5jbHVzaXZlX21heChmbG9hdCB4KTsKI2lmZGVmIGNsX2tocl9mcDY0CmRvdWJsZSBfX292bGQgX19jb252IHdvcmtfZ3JvdXBfcmVkdWNlX2FkZChkb3VibGUgeCk7CmRvdWJsZSBfX292bGQgX19jb252IHdvcmtfZ3JvdXBfcmVkdWNlX21pbihkb3VibGUgeCk7CmRvdWJsZSBfX292bGQgX19jb252IHdvcmtfZ3JvdXBfcmVkdWNlX21heChkb3VibGUgeCk7CmRvdWJsZSBfX292bGQgX19jb252IHdvcmtfZ3JvdXBfc2Nhbl9leGNsdXNpdmVfYWRkKGRvdWJsZSB4KTsKZG91YmxlIF9fb3ZsZCBfX2NvbnYgd29ya19ncm91cF9zY2FuX2V4Y2x1c2l2ZV9taW4oZG91YmxlIHgpOwpkb3VibGUgX19vdmxkIF9fY29udiB3b3JrX2dyb3VwX3NjYW5fZXhjbHVzaXZlX21heChkb3VibGUgeCk7CmRvdWJsZSBfX292bGQgX19jb252IHdvcmtfZ3JvdXBfc2Nhbl9pbmNsdXNpdmVfYWRkKGRvdWJsZSB4KTsKZG91YmxlIF9fb3ZsZCBfX2NvbnYgd29ya19ncm91cF9zY2FuX2luY2x1c2l2ZV9taW4oZG91YmxlIHgpOwpkb3VibGUgX19vdmxkIF9fY29udiB3b3JrX2dyb3VwX3NjYW5faW5jbHVzaXZlX21heChkb3VibGUgeCk7CiNlbmRpZiAvL2NsX2tocl9mcDY0CgojZW5kaWYgLy9kZWZpbmVkKF9fb3BlbmNsX2Nfd29ya19ncm91cF9jb2xsZWN0aXZlX2Z1bmN0aW9ucykKCi8vIE9wZW5DTCB2Mi4wIHM2LjEzLjE2IC0gUGlwZSBGdW5jdGlvbnMKI2lmIGRlZmluZWQoX19vcGVuY2xfY19waXBlcykKYm9vbCBfX292bGQgaXNfdmFsaWRfcmVzZXJ2ZV9pZChyZXNlcnZlX2lkX3QgcmVzZXJ2ZV9pZCk7CiNlbmRpZiAvL2RlZmluZWQoX19vcGVuY2xfY19waXBlcykKCgovLyBPcGVuQ0wgdjIuMCBzNi4xMy4xNyAtIEVucXVldWUgS2VybmVscwojaWYgZGVmaW5lZChfX09QRU5DTF9DUFBfVkVSU0lPTl9fKSB8fCAoX19PUEVOQ0xfQ19WRVJTSU9OX18gPj0gQ0xfVkVSU0lPTl8yXzApCgpuZHJhbmdlX3QgX19vdmxkIG5kcmFuZ2VfMUQoc2l6ZV90KTsKbmRyYW5nZV90IF9fb3ZsZCBuZHJhbmdlXzFEKHNpemVfdCwgc2l6ZV90KTsKbmRyYW5nZV90IF9fb3ZsZCBuZHJhbmdlXzFEKHNpemVfdCwgc2l6ZV90LCBzaXplX3QpOwoKbmRyYW5nZV90IF9fb3ZsZCBuZHJhbmdlXzJEKGNvbnN0IHNpemVfdFsyXSk7Cm5kcmFuZ2VfdCBfX292bGQgbmRyYW5nZV8yRChjb25zdCBzaXplX3RbMl0sIGNvbnN0IHNpemVfdFsyXSk7Cm5kcmFuZ2VfdCBfX292bGQgbmRyYW5nZV8yRChjb25zdCBzaXplX3RbMl0sIGNvbnN0IHNpemVfdFsyXSwgY29uc3Qgc2l6ZV90WzJdKTsKCm5kcmFuZ2VfdCBfX292bGQgbmRyYW5nZV8zRChjb25zdCBzaXplX3RbM10pOwpuZHJhbmdlX3QgX19vdmxkIG5kcmFuZ2VfM0QoY29uc3Qgc2l6ZV90WzNdLCBjb25zdCBzaXplX3RbM10pOwpuZHJhbmdlX3QgX19vdmxkIG5kcmFuZ2VfM0QoY29uc3Qgc2l6ZV90WzNdLCBjb25zdCBzaXplX3RbM10sIGNvbnN0IHNpemVfdFszXSk7CgppbnQgX19vdmxkIGVucXVldWVfbWFya2VyKHF1ZXVlX3QsIHVpbnQsIGNvbnN0IGNsa19ldmVudF90KiwgY2xrX2V2ZW50X3QqKTsKCnZvaWQgX19vdmxkIHJldGFpbl9ldmVudChjbGtfZXZlbnRfdCk7Cgp2b2lkIF9fb3ZsZCByZWxlYXNlX2V2ZW50KGNsa19ldmVudF90KTsKCmNsa19ldmVudF90IF9fb3ZsZCBjcmVhdGVfdXNlcl9ldmVudCh2b2lkKTsKCnZvaWQgX19vdmxkIHNldF91c2VyX2V2ZW50X3N0YXR1cyhjbGtfZXZlbnRfdCBlLCBpbnQgc3RhdGUpOwoKYm9vbCBfX292bGQgaXNfdmFsaWRfZXZlbnQgKGNsa19ldmVudF90IGV2ZW50KTsKCnZvaWQgX19vdmxkIGNhcHR1cmVfZXZlbnRfcHJvZmlsaW5nX2luZm8oY2xrX2V2ZW50X3QsIGNsa19wcm9maWxpbmdfaW5mbywgX19nbG9iYWwgdm9pZCogdmFsdWUpOwoKcXVldWVfdCBfX292bGQgZ2V0X2RlZmF1bHRfcXVldWUodm9pZCk7CiNlbmRpZiAvL2RlZmluZWQoX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXykgfHwgKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fMl8wKQoKLy8gT3BlbkNMIEV4dGVuc2lvbiB2Mi4wIHM5LjE3IC0gU3ViLWdyb3VwcwoKI2lmIGRlZmluZWQoY2xfaW50ZWxfc3ViZ3JvdXBzKSB8fCBkZWZpbmVkKGNsX2tocl9zdWJncm91cHMpIHx8IGRlZmluZWQoX19vcGVuY2xfY19zdWJncm91cHMpCi8vIFNoYXJlZCBTdWIgR3JvdXAgRnVuY3Rpb25zCnVpbnQgICAgX19vdmxkIGdldF9zdWJfZ3JvdXBfc2l6ZSh2b2lkKTsKdWludCAgICBfX292bGQgZ2V0X21heF9zdWJfZ3JvdXBfc2l6ZSh2b2lkKTsKdWludCAgICBfX292bGQgZ2V0X251bV9zdWJfZ3JvdXBzKHZvaWQpOwojaWYgZGVmaW5lZChfX09QRU5DTF9DUFBfVkVSU0lPTl9fKSB8fCAoX19PUEVOQ0xfQ19WRVJTSU9OX18gPj0gQ0xfVkVSU0lPTl8yXzApCnVpbnQgICAgX19vdmxkIGdldF9lbnF1ZXVlZF9udW1fc3ViX2dyb3Vwcyh2b2lkKTsKI2VuZGlmIC8vZGVmaW5lZChfX09QRU5DTF9DUFBfVkVSU0lPTl9fKSB8fCAoX19PUEVOQ0xfQ19WRVJTSU9OX18gPj0gQ0xfVkVSU0lPTl8yXzApCnVpbnQgICAgX19vdmxkIGdldF9zdWJfZ3JvdXBfaWQodm9pZCk7CnVpbnQgICAgX19vdmxkIGdldF9zdWJfZ3JvdXBfbG9jYWxfaWQodm9pZCk7Cgp2b2lkICAgIF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX2JhcnJpZXIoY2xfbWVtX2ZlbmNlX2ZsYWdzIGZsYWdzKTsKI2lmIGRlZmluZWQoX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXykgfHwgKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fMl8wKQp2b2lkICAgIF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX2JhcnJpZXIoY2xfbWVtX2ZlbmNlX2ZsYWdzIGZsYWdzLCBtZW1vcnlfc2NvcGUgc2NvcGUpOwojZW5kaWYgLy9kZWZpbmVkKF9fT1BFTkNMX0NQUF9WRVJTSU9OX18pIHx8IChfX09QRU5DTF9DX1ZFUlNJT05fXyA+PSBDTF9WRVJTSU9OXzJfMCkKCmludCAgICAgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfYWxsKGludCBwcmVkaWNhdGUpOwppbnQgICAgIF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX2FueShpbnQgcHJlZGljYXRlKTsKCmludCAgICAgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfYnJvYWRjYXN0KGludCAgIHgsIHVpbnQgc3ViX2dyb3VwX2xvY2FsX2lkKTsKdWludCAgICBfX292bGQgX19jb252IHN1Yl9ncm91cF9icm9hZGNhc3QodWludCAgeCwgdWludCBzdWJfZ3JvdXBfbG9jYWxfaWQpOwpsb25nICAgIF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX2Jyb2FkY2FzdChsb25nICB4LCB1aW50IHN1Yl9ncm91cF9sb2NhbF9pZCk7CnVsb25nICAgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfYnJvYWRjYXN0KHVsb25nIHgsIHVpbnQgc3ViX2dyb3VwX2xvY2FsX2lkKTsKZmxvYXQgICBfX292bGQgX19jb252IHN1Yl9ncm91cF9icm9hZGNhc3QoZmxvYXQgeCwgdWludCBzdWJfZ3JvdXBfbG9jYWxfaWQpOwoKaW50ICAgICBfX292bGQgX19jb252IHN1Yl9ncm91cF9yZWR1Y2VfYWRkKGludCAgIHgpOwp1aW50ICAgIF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX3JlZHVjZV9hZGQodWludCAgeCk7CmxvbmcgICAgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfcmVkdWNlX2FkZChsb25nICB4KTsKdWxvbmcgICBfX292bGQgX19jb252IHN1Yl9ncm91cF9yZWR1Y2VfYWRkKHVsb25nIHgpOwpmbG9hdCAgIF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX3JlZHVjZV9hZGQoZmxvYXQgeCk7CmludCAgICAgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfcmVkdWNlX21pbihpbnQgICB4KTsKdWludCAgICBfX292bGQgX19jb252IHN1Yl9ncm91cF9yZWR1Y2VfbWluKHVpbnQgIHgpOwpsb25nICAgIF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX3JlZHVjZV9taW4obG9uZyAgeCk7CnVsb25nICAgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfcmVkdWNlX21pbih1bG9uZyB4KTsKZmxvYXQgICBfX292bGQgX19jb252IHN1Yl9ncm91cF9yZWR1Y2VfbWluKGZsb2F0IHgpOwppbnQgICAgIF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX3JlZHVjZV9tYXgoaW50ICAgeCk7CnVpbnQgICAgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfcmVkdWNlX21heCh1aW50ICB4KTsKbG9uZyAgICBfX292bGQgX19jb252IHN1Yl9ncm91cF9yZWR1Y2VfbWF4KGxvbmcgIHgpOwp1bG9uZyAgIF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX3JlZHVjZV9tYXgodWxvbmcgeCk7CmZsb2F0ICAgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfcmVkdWNlX21heChmbG9hdCB4KTsKCmludCAgICAgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfc2Nhbl9leGNsdXNpdmVfYWRkKGludCAgIHgpOwp1aW50ICAgIF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX3NjYW5fZXhjbHVzaXZlX2FkZCh1aW50ICB4KTsKbG9uZyAgICBfX292bGQgX19jb252IHN1Yl9ncm91cF9zY2FuX2V4Y2x1c2l2ZV9hZGQobG9uZyAgeCk7CnVsb25nICAgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfc2Nhbl9leGNsdXNpdmVfYWRkKHVsb25nIHgpOwpmbG9hdCAgIF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX3NjYW5fZXhjbHVzaXZlX2FkZChmbG9hdCB4KTsKaW50ICAgICBfX292bGQgX19jb252IHN1Yl9ncm91cF9zY2FuX2V4Y2x1c2l2ZV9taW4oaW50ICAgeCk7CnVpbnQgICAgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfc2Nhbl9leGNsdXNpdmVfbWluKHVpbnQgIHgpOwpsb25nICAgIF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX3NjYW5fZXhjbHVzaXZlX21pbihsb25nICB4KTsKdWxvbmcgICBfX292bGQgX19jb252IHN1Yl9ncm91cF9zY2FuX2V4Y2x1c2l2ZV9taW4odWxvbmcgeCk7CmZsb2F0ICAgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfc2Nhbl9leGNsdXNpdmVfbWluKGZsb2F0IHgpOwppbnQgICAgIF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX3NjYW5fZXhjbHVzaXZlX21heChpbnQgICB4KTsKdWludCAgICBfX292bGQgX19jb252IHN1Yl9ncm91cF9zY2FuX2V4Y2x1c2l2ZV9tYXgodWludCAgeCk7CmxvbmcgICAgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfc2Nhbl9leGNsdXNpdmVfbWF4KGxvbmcgIHgpOwp1bG9uZyAgIF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX3NjYW5fZXhjbHVzaXZlX21heCh1bG9uZyB4KTsKZmxvYXQgICBfX292bGQgX19jb252IHN1Yl9ncm91cF9zY2FuX2V4Y2x1c2l2ZV9tYXgoZmxvYXQgeCk7CgppbnQgICAgIF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX3NjYW5faW5jbHVzaXZlX2FkZChpbnQgICB4KTsKdWludCAgICBfX292bGQgX19jb252IHN1Yl9ncm91cF9zY2FuX2luY2x1c2l2ZV9hZGQodWludCAgeCk7CmxvbmcgICAgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfc2Nhbl9pbmNsdXNpdmVfYWRkKGxvbmcgIHgpOwp1bG9uZyAgIF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX3NjYW5faW5jbHVzaXZlX2FkZCh1bG9uZyB4KTsKZmxvYXQgICBfX292bGQgX19jb252IHN1Yl9ncm91cF9zY2FuX2luY2x1c2l2ZV9hZGQoZmxvYXQgeCk7CmludCAgICAgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfc2Nhbl9pbmNsdXNpdmVfbWluKGludCAgIHgpOwp1aW50ICAgIF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX3NjYW5faW5jbHVzaXZlX21pbih1aW50ICB4KTsKbG9uZyAgICBfX292bGQgX19jb252IHN1Yl9ncm91cF9zY2FuX2luY2x1c2l2ZV9taW4obG9uZyAgeCk7CnVsb25nICAgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfc2Nhbl9pbmNsdXNpdmVfbWluKHVsb25nIHgpOwpmbG9hdCAgIF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX3NjYW5faW5jbHVzaXZlX21pbihmbG9hdCB4KTsKaW50ICAgICBfX292bGQgX19jb252IHN1Yl9ncm91cF9zY2FuX2luY2x1c2l2ZV9tYXgoaW50ICAgeCk7CnVpbnQgICAgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfc2Nhbl9pbmNsdXNpdmVfbWF4KHVpbnQgIHgpOwpsb25nICAgIF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX3NjYW5faW5jbHVzaXZlX21heChsb25nICB4KTsKdWxvbmcgICBfX292bGQgX19jb252IHN1Yl9ncm91cF9zY2FuX2luY2x1c2l2ZV9tYXgodWxvbmcgeCk7CmZsb2F0ICAgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfc2Nhbl9pbmNsdXNpdmVfbWF4KGZsb2F0IHgpOwoKI2lmZGVmIGNsX2tocl9mcDE2CmhhbGYgICAgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfYnJvYWRjYXN0KGhhbGYgeCwgdWludCBzdWJfZ3JvdXBfbG9jYWxfaWQpOwpoYWxmICAgIF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX3JlZHVjZV9hZGQoaGFsZiB4KTsKaGFsZiAgICBfX292bGQgX19jb252IHN1Yl9ncm91cF9yZWR1Y2VfbWluKGhhbGYgeCk7CmhhbGYgICAgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfcmVkdWNlX21heChoYWxmIHgpOwpoYWxmICAgIF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX3NjYW5fZXhjbHVzaXZlX2FkZChoYWxmIHgpOwpoYWxmICAgIF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX3NjYW5fZXhjbHVzaXZlX21pbihoYWxmIHgpOwpoYWxmICAgIF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX3NjYW5fZXhjbHVzaXZlX21heChoYWxmIHgpOwpoYWxmICAgIF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX3NjYW5faW5jbHVzaXZlX2FkZChoYWxmIHgpOwpoYWxmICAgIF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX3NjYW5faW5jbHVzaXZlX21pbihoYWxmIHgpOwpoYWxmICAgIF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX3NjYW5faW5jbHVzaXZlX21heChoYWxmIHgpOwojZW5kaWYgLy9jbF9raHJfZnAxNgoKI2lmZGVmIGNsX2tocl9mcDY0CmRvdWJsZSAgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfYnJvYWRjYXN0KGRvdWJsZSB4LCB1aW50IHN1Yl9ncm91cF9sb2NhbF9pZCk7CmRvdWJsZSAgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfcmVkdWNlX2FkZChkb3VibGUgeCk7CmRvdWJsZSAgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfcmVkdWNlX21pbihkb3VibGUgeCk7CmRvdWJsZSAgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfcmVkdWNlX21heChkb3VibGUgeCk7CmRvdWJsZSAgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfc2Nhbl9leGNsdXNpdmVfYWRkKGRvdWJsZSB4KTsKZG91YmxlICBfX292bGQgX19jb252IHN1Yl9ncm91cF9zY2FuX2V4Y2x1c2l2ZV9taW4oZG91YmxlIHgpOwpkb3VibGUgIF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX3NjYW5fZXhjbHVzaXZlX21heChkb3VibGUgeCk7CmRvdWJsZSAgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfc2Nhbl9pbmNsdXNpdmVfYWRkKGRvdWJsZSB4KTsKZG91YmxlICBfX292bGQgX19jb252IHN1Yl9ncm91cF9zY2FuX2luY2x1c2l2ZV9taW4oZG91YmxlIHgpOwpkb3VibGUgIF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX3NjYW5faW5jbHVzaXZlX21heChkb3VibGUgeCk7CiNlbmRpZiAvL2NsX2tocl9mcDY0CgojZW5kaWYgLy9jbF9raHJfc3ViZ3JvdXBzIGNsX2ludGVsX3N1Ymdyb3VwcyBfX29wZW5jbF9jX3N1Ymdyb3VwcwoKI2lmIGRlZmluZWQoY2xfa2hyX3N1Ymdyb3VwX2V4dGVuZGVkX3R5cGVzKQpjaGFyIF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX2Jyb2FkY2FzdCggY2hhciB2YWx1ZSwgdWludCBpbmRleCApOwpjaGFyMiBfX292bGQgX19jb252IHN1Yl9ncm91cF9icm9hZGNhc3QoIGNoYXIyIHZhbHVlLCB1aW50IGluZGV4ICk7CmNoYXIzIF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX2Jyb2FkY2FzdCggY2hhcjMgdmFsdWUsIHVpbnQgaW5kZXggKTsKY2hhcjQgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfYnJvYWRjYXN0KCBjaGFyNCB2YWx1ZSwgdWludCBpbmRleCApOwpjaGFyOCBfX292bGQgX19jb252IHN1Yl9ncm91cF9icm9hZGNhc3QoIGNoYXI4IHZhbHVlLCB1aW50IGluZGV4ICk7CmNoYXIxNiBfX292bGQgX19jb252IHN1Yl9ncm91cF9icm9hZGNhc3QoIGNoYXIxNiB2YWx1ZSwgdWludCBpbmRleCApOwoKdWNoYXIgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfYnJvYWRjYXN0KCB1Y2hhciB2YWx1ZSwgdWludCBpbmRleCApOwp1Y2hhcjIgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfYnJvYWRjYXN0KCB1Y2hhcjIgdmFsdWUsIHVpbnQgaW5kZXggKTsKdWNoYXIzIF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX2Jyb2FkY2FzdCggdWNoYXIzIHZhbHVlLCB1aW50IGluZGV4ICk7CnVjaGFyNCBfX292bGQgX19jb252IHN1Yl9ncm91cF9icm9hZGNhc3QoIHVjaGFyNCB2YWx1ZSwgdWludCBpbmRleCApOwp1Y2hhcjggX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfYnJvYWRjYXN0KCB1Y2hhcjggdmFsdWUsIHVpbnQgaW5kZXggKTsKdWNoYXIxNiBfX292bGQgX19jb252IHN1Yl9ncm91cF9icm9hZGNhc3QoIHVjaGFyMTYgdmFsdWUsIHVpbnQgaW5kZXggKTsKCnNob3J0IF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX2Jyb2FkY2FzdCggc2hvcnQgdmFsdWUsIHVpbnQgaW5kZXggKTsKc2hvcnQyIF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX2Jyb2FkY2FzdCggc2hvcnQyIHZhbHVlLCB1aW50IGluZGV4ICk7CnNob3J0MyBfX292bGQgX19jb252IHN1Yl9ncm91cF9icm9hZGNhc3QoIHNob3J0MyB2YWx1ZSwgdWludCBpbmRleCApOwpzaG9ydDQgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfYnJvYWRjYXN0KCBzaG9ydDQgdmFsdWUsIHVpbnQgaW5kZXggKTsKc2hvcnQ4IF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX2Jyb2FkY2FzdCggc2hvcnQ4IHZhbHVlLCB1aW50IGluZGV4ICk7CnNob3J0MTYgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfYnJvYWRjYXN0KCBzaG9ydDE2IHZhbHVlLCB1aW50IGluZGV4ICk7Cgp1c2hvcnQgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfYnJvYWRjYXN0KCB1c2hvcnQgdmFsdWUsIHVpbnQgaW5kZXggKTsKdXNob3J0MiBfX292bGQgX19jb252IHN1Yl9ncm91cF9icm9hZGNhc3QoIHVzaG9ydDIgdmFsdWUsIHVpbnQgaW5kZXggKTsKdXNob3J0MyBfX292bGQgX19jb252IHN1Yl9ncm91cF9icm9hZGNhc3QoIHVzaG9ydDMgdmFsdWUsIHVpbnQgaW5kZXggKTsKdXNob3J0NCBfX292bGQgX19jb252IHN1Yl9ncm91cF9icm9hZGNhc3QoIHVzaG9ydDQgdmFsdWUsIHVpbnQgaW5kZXggKTsKdXNob3J0OCBfX292bGQgX19jb252IHN1Yl9ncm91cF9icm9hZGNhc3QoIHVzaG9ydDggdmFsdWUsIHVpbnQgaW5kZXggKTsKdXNob3J0MTYgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfYnJvYWRjYXN0KCB1c2hvcnQxNiB2YWx1ZSwgdWludCBpbmRleCApOwoKLy8gc2NhbGFyIGludCBicm9hZGNhc3QgaXMgcGFydCBvZiBjbF9raHJfc3ViZ3JvdXBzCmludDIgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfYnJvYWRjYXN0KCBpbnQyIHZhbHVlLCB1aW50IGluZGV4ICk7CmludDMgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfYnJvYWRjYXN0KCBpbnQzIHZhbHVlLCB1aW50IGluZGV4ICk7CmludDQgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfYnJvYWRjYXN0KCBpbnQ0IHZhbHVlLCB1aW50IGluZGV4ICk7CmludDggX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfYnJvYWRjYXN0KCBpbnQ4IHZhbHVlLCB1aW50IGluZGV4ICk7CmludDE2IF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX2Jyb2FkY2FzdCggaW50MTYgdmFsdWUsIHVpbnQgaW5kZXggKTsKCi8vIHNjYWxhciB1aW50IGJyb2FkY2FzdCBpcyBwYXJ0IG9mIGNsX2tocl9zdWJncm91cHMKdWludDIgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfYnJvYWRjYXN0KCB1aW50MiB2YWx1ZSwgdWludCBpbmRleCApOwp1aW50MyBfX292bGQgX19jb252IHN1Yl9ncm91cF9icm9hZGNhc3QoIHVpbnQzIHZhbHVlLCB1aW50IGluZGV4ICk7CnVpbnQ0IF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX2Jyb2FkY2FzdCggdWludDQgdmFsdWUsIHVpbnQgaW5kZXggKTsKdWludDggX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfYnJvYWRjYXN0KCB1aW50OCB2YWx1ZSwgdWludCBpbmRleCApOwp1aW50MTYgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfYnJvYWRjYXN0KCB1aW50MTYgdmFsdWUsIHVpbnQgaW5kZXggKTsKCi8vIHNjYWxhciBsb25nIGJyb2FkY2FzdCBpcyBwYXJ0IG9mIGNsX2tocl9zdWJncm91cHMKbG9uZzIgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfYnJvYWRjYXN0KCBsb25nMiB2YWx1ZSwgdWludCBpbmRleCApOwpsb25nMyBfX292bGQgX19jb252IHN1Yl9ncm91cF9icm9hZGNhc3QoIGxvbmczIHZhbHVlLCB1aW50IGluZGV4ICk7Cmxvbmc0IF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX2Jyb2FkY2FzdCggbG9uZzQgdmFsdWUsIHVpbnQgaW5kZXggKTsKbG9uZzggX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfYnJvYWRjYXN0KCBsb25nOCB2YWx1ZSwgdWludCBpbmRleCApOwpsb25nMTYgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfYnJvYWRjYXN0KCBsb25nMTYgdmFsdWUsIHVpbnQgaW5kZXggKTsKCi8vIHNjYWxhciB1bG9uZyBicm9hZGNhc3QgaXMgcGFydCBvZiBjbF9raHJfc3ViZ3JvdXBzCnVsb25nMiBfX292bGQgX19jb252IHN1Yl9ncm91cF9icm9hZGNhc3QoIHVsb25nMiB2YWx1ZSwgdWludCBpbmRleCApOwp1bG9uZzMgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfYnJvYWRjYXN0KCB1bG9uZzMgdmFsdWUsIHVpbnQgaW5kZXggKTsKdWxvbmc0IF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX2Jyb2FkY2FzdCggdWxvbmc0IHZhbHVlLCB1aW50IGluZGV4ICk7CnVsb25nOCBfX292bGQgX19jb252IHN1Yl9ncm91cF9icm9hZGNhc3QoIHVsb25nOCB2YWx1ZSwgdWludCBpbmRleCApOwp1bG9uZzE2IF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX2Jyb2FkY2FzdCggdWxvbmcxNiB2YWx1ZSwgdWludCBpbmRleCApOwoKLy8gc2NhbGFyIGZsb2F0IGJyb2FkY2FzdCBpcyBwYXJ0IG9mIGNsX2tocl9zdWJncm91cHMKZmxvYXQyIF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX2Jyb2FkY2FzdCggZmxvYXQyIHZhbHVlLCB1aW50IGluZGV4ICk7CmZsb2F0MyBfX292bGQgX19jb252IHN1Yl9ncm91cF9icm9hZGNhc3QoIGZsb2F0MyB2YWx1ZSwgdWludCBpbmRleCApOwpmbG9hdDQgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfYnJvYWRjYXN0KCBmbG9hdDQgdmFsdWUsIHVpbnQgaW5kZXggKTsKZmxvYXQ4IF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX2Jyb2FkY2FzdCggZmxvYXQ4IHZhbHVlLCB1aW50IGluZGV4ICk7CmZsb2F0MTYgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfYnJvYWRjYXN0KCBmbG9hdDE2IHZhbHVlLCB1aW50IGluZGV4ICk7CgpjaGFyIF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX3JlZHVjZV9hZGQoIGNoYXIgdmFsdWUgKTsKdWNoYXIgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfcmVkdWNlX2FkZCggdWNoYXIgdmFsdWUgKTsKc2hvcnQgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfcmVkdWNlX2FkZCggc2hvcnQgdmFsdWUgKTsKdXNob3J0IF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX3JlZHVjZV9hZGQoIHVzaG9ydCB2YWx1ZSApOwoKY2hhciBfX292bGQgX19jb252IHN1Yl9ncm91cF9yZWR1Y2VfbWluKCBjaGFyIHZhbHVlICk7CnVjaGFyIF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX3JlZHVjZV9taW4oIHVjaGFyIHZhbHVlICk7CnNob3J0IF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX3JlZHVjZV9taW4oIHNob3J0IHZhbHVlICk7CnVzaG9ydCBfX292bGQgX19jb252IHN1Yl9ncm91cF9yZWR1Y2VfbWluKCB1c2hvcnQgdmFsdWUgKTsKCmNoYXIgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfcmVkdWNlX21heCggY2hhciB2YWx1ZSApOwp1Y2hhciBfX292bGQgX19jb252IHN1Yl9ncm91cF9yZWR1Y2VfbWF4KCB1Y2hhciB2YWx1ZSApOwpzaG9ydCBfX292bGQgX19jb252IHN1Yl9ncm91cF9yZWR1Y2VfbWF4KCBzaG9ydCB2YWx1ZSApOwp1c2hvcnQgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfcmVkdWNlX21heCggdXNob3J0IHZhbHVlICk7CgpjaGFyIF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX3NjYW5faW5jbHVzaXZlX2FkZCggY2hhciB2YWx1ZSApOwp1Y2hhciBfX292bGQgX19jb252IHN1Yl9ncm91cF9zY2FuX2luY2x1c2l2ZV9hZGQoIHVjaGFyIHZhbHVlICk7CnNob3J0IF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX3NjYW5faW5jbHVzaXZlX2FkZCggc2hvcnQgdmFsdWUgKTsKdXNob3J0IF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX3NjYW5faW5jbHVzaXZlX2FkZCggdXNob3J0IHZhbHVlICk7CgpjaGFyIF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX3NjYW5faW5jbHVzaXZlX21pbiggY2hhciB2YWx1ZSApOwp1Y2hhciBfX292bGQgX19jb252IHN1Yl9ncm91cF9zY2FuX2luY2x1c2l2ZV9taW4oIHVjaGFyIHZhbHVlICk7CnNob3J0IF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX3NjYW5faW5jbHVzaXZlX21pbiggc2hvcnQgdmFsdWUgKTsKdXNob3J0IF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX3NjYW5faW5jbHVzaXZlX21pbiggdXNob3J0IHZhbHVlICk7CgpjaGFyIF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX3NjYW5faW5jbHVzaXZlX21heCggY2hhciB2YWx1ZSApOwp1Y2hhciBfX292bGQgX19jb252IHN1Yl9ncm91cF9zY2FuX2luY2x1c2l2ZV9tYXgoIHVjaGFyIHZhbHVlICk7CnNob3J0IF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX3NjYW5faW5jbHVzaXZlX21heCggc2hvcnQgdmFsdWUgKTsKdXNob3J0IF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX3NjYW5faW5jbHVzaXZlX21heCggdXNob3J0IHZhbHVlICk7CgpjaGFyIF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX3NjYW5fZXhjbHVzaXZlX2FkZCggY2hhciB2YWx1ZSApOwp1Y2hhciBfX292bGQgX19jb252IHN1Yl9ncm91cF9zY2FuX2V4Y2x1c2l2ZV9hZGQoIHVjaGFyIHZhbHVlICk7CnNob3J0IF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX3NjYW5fZXhjbHVzaXZlX2FkZCggc2hvcnQgdmFsdWUgKTsKdXNob3J0IF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX3NjYW5fZXhjbHVzaXZlX2FkZCggdXNob3J0IHZhbHVlICk7CgpjaGFyIF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX3NjYW5fZXhjbHVzaXZlX21pbiggY2hhciB2YWx1ZSApOwp1Y2hhciBfX292bGQgX19jb252IHN1Yl9ncm91cF9zY2FuX2V4Y2x1c2l2ZV9taW4oIHVjaGFyIHZhbHVlICk7CnNob3J0IF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX3NjYW5fZXhjbHVzaXZlX21pbiggc2hvcnQgdmFsdWUgKTsKdXNob3J0IF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX3NjYW5fZXhjbHVzaXZlX21pbiggdXNob3J0IHZhbHVlICk7CgpjaGFyIF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX3NjYW5fZXhjbHVzaXZlX21heCggY2hhciB2YWx1ZSApOwp1Y2hhciBfX292bGQgX19jb252IHN1Yl9ncm91cF9zY2FuX2V4Y2x1c2l2ZV9tYXgoIHVjaGFyIHZhbHVlICk7CnNob3J0IF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX3NjYW5fZXhjbHVzaXZlX21heCggc2hvcnQgdmFsdWUgKTsKdXNob3J0IF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX3NjYW5fZXhjbHVzaXZlX21heCggdXNob3J0IHZhbHVlICk7CgojaWYgZGVmaW5lZChjbF9raHJfZnAxNikKLy8gc2NhbGFyIGhhbGYgYnJvYWRjYXN0IGlzIHBhcnQgb2YgY2xfa2hyX3N1Ymdyb3VwcwpoYWxmMiBfX292bGQgX19jb252IHN1Yl9ncm91cF9icm9hZGNhc3QoIGhhbGYyIHZhbHVlLCB1aW50IGluZGV4ICk7CmhhbGYzIF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX2Jyb2FkY2FzdCggaGFsZjMgdmFsdWUsIHVpbnQgaW5kZXggKTsKaGFsZjQgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfYnJvYWRjYXN0KCBoYWxmNCB2YWx1ZSwgdWludCBpbmRleCApOwpoYWxmOCBfX292bGQgX19jb252IHN1Yl9ncm91cF9icm9hZGNhc3QoIGhhbGY4IHZhbHVlLCB1aW50IGluZGV4ICk7CmhhbGYxNiBfX292bGQgX19jb252IHN1Yl9ncm91cF9icm9hZGNhc3QoIGhhbGYxNiB2YWx1ZSwgdWludCBpbmRleCApOwojZW5kaWYgIC8vIGNsX2tocl9mcDE2CgojaWYgZGVmaW5lZChjbF9raHJfZnA2NCkKLy8gc2NhbGFyIGRvdWJsZSBicm9hZGNhc3QgaXMgcGFydCBvZiBjbF9raHJfc3ViZ3JvdXBzCmRvdWJsZTIgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfYnJvYWRjYXN0KCBkb3VibGUyIHZhbHVlLCB1aW50IGluZGV4ICk7CmRvdWJsZTMgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfYnJvYWRjYXN0KCBkb3VibGUzIHZhbHVlLCB1aW50IGluZGV4ICk7CmRvdWJsZTQgX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfYnJvYWRjYXN0KCBkb3VibGU0IHZhbHVlLCB1aW50IGluZGV4ICk7CmRvdWJsZTggX19vdmxkIF9fY29udiBzdWJfZ3JvdXBfYnJvYWRjYXN0KCBkb3VibGU4IHZhbHVlLCB1aW50IGluZGV4ICk7CmRvdWJsZTE2IF9fb3ZsZCBfX2NvbnYgc3ViX2dyb3VwX2Jyb2FkY2FzdCggZG91YmxlMTYgdmFsdWUsIHVpbnQgaW5kZXggKTsKI2VuZGlmICAvLyBjbF9raHJfZnA2NAoKI2VuZGlmICAvLyBjbF9raHJfc3ViZ3JvdXBfZXh0ZW5kZWRfdHlwZXMKCiNpZiBkZWZpbmVkKGNsX2tocl9zdWJncm91cF9ub25fdW5pZm9ybV92b3RlKQppbnQgICAgIF9fb3ZsZCBzdWJfZ3JvdXBfZWxlY3Qodm9pZCk7CmludCAgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9hbGwoIGludCBwcmVkaWNhdGUgKTsKaW50ICAgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX2FueSggaW50IHByZWRpY2F0ZSApOwoKaW50ICAgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX2FsbF9lcXVhbCggY2hhciB2YWx1ZSApOwppbnQgICAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fYWxsX2VxdWFsKCB1Y2hhciB2YWx1ZSApOwppbnQgICAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fYWxsX2VxdWFsKCBzaG9ydCB2YWx1ZSApOwppbnQgICAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fYWxsX2VxdWFsKCB1c2hvcnQgdmFsdWUgKTsKaW50ICAgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX2FsbF9lcXVhbCggaW50IHZhbHVlICk7CmludCAgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9hbGxfZXF1YWwoIHVpbnQgdmFsdWUgKTsKaW50ICAgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX2FsbF9lcXVhbCggbG9uZyB2YWx1ZSApOwppbnQgICAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fYWxsX2VxdWFsKCB1bG9uZyB2YWx1ZSApOwppbnQgICAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fYWxsX2VxdWFsKCBmbG9hdCB2YWx1ZSApOwoKI2lmIGRlZmluZWQoY2xfa2hyX2ZwMTYpCmludCAgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9hbGxfZXF1YWwoIGhhbGYgdmFsdWUgKTsKI2VuZGlmIC8vIGNsX2tocl9mcDE2CgojaWYgZGVmaW5lZChjbF9raHJfZnA2NCkKaW50ICAgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX2FsbF9lcXVhbCggZG91YmxlIHZhbHVlICk7CiNlbmRpZiAvLyBjbF9raHJfZnA2NAoKI2VuZGlmIC8vIGNsX2tocl9zdWJncm91cF9ub25fdW5pZm9ybV92b3RlCgojaWYgZGVmaW5lZChjbF9raHJfc3ViZ3JvdXBfYmFsbG90KQpjaGFyICAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fYnJvYWRjYXN0KCBjaGFyIHZhbHVlLCB1aW50IGluZGV4ICk7CmNoYXIyICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9icm9hZGNhc3QoIGNoYXIyIHZhbHVlLCB1aW50IGluZGV4ICk7CmNoYXIzICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9icm9hZGNhc3QoIGNoYXIzIHZhbHVlLCB1aW50IGluZGV4ICk7CmNoYXI0ICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9icm9hZGNhc3QoIGNoYXI0IHZhbHVlLCB1aW50IGluZGV4ICk7CmNoYXI4ICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9icm9hZGNhc3QoIGNoYXI4IHZhbHVlLCB1aW50IGluZGV4ICk7CmNoYXIxNiAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9icm9hZGNhc3QoIGNoYXIxNiB2YWx1ZSwgdWludCBpbmRleCApOwoKdWNoYXIgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX2Jyb2FkY2FzdCggdWNoYXIgdmFsdWUsIHVpbnQgaW5kZXggKTsKdWNoYXIyICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX2Jyb2FkY2FzdCggdWNoYXIyIHZhbHVlLCB1aW50IGluZGV4ICk7CnVjaGFyMyAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9icm9hZGNhc3QoIHVjaGFyMyB2YWx1ZSwgdWludCBpbmRleCApOwp1Y2hhcjQgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fYnJvYWRjYXN0KCB1Y2hhcjQgdmFsdWUsIHVpbnQgaW5kZXggKTsKdWNoYXI4ICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX2Jyb2FkY2FzdCggdWNoYXI4IHZhbHVlLCB1aW50IGluZGV4ICk7CnVjaGFyMTYgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9icm9hZGNhc3QoIHVjaGFyMTYgdmFsdWUsIHVpbnQgaW5kZXggKTsKCnNob3J0ICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9icm9hZGNhc3QoIHNob3J0IHZhbHVlLCB1aW50IGluZGV4ICk7CnNob3J0MiAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9icm9hZGNhc3QoIHNob3J0MiB2YWx1ZSwgdWludCBpbmRleCApOwpzaG9ydDMgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fYnJvYWRjYXN0KCBzaG9ydDMgdmFsdWUsIHVpbnQgaW5kZXggKTsKc2hvcnQ0ICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX2Jyb2FkY2FzdCggc2hvcnQ0IHZhbHVlLCB1aW50IGluZGV4ICk7CnNob3J0OCAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9icm9hZGNhc3QoIHNob3J0OCB2YWx1ZSwgdWludCBpbmRleCApOwpzaG9ydDE2IF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fYnJvYWRjYXN0KCBzaG9ydDE2IHZhbHVlLCB1aW50IGluZGV4ICk7Cgp1c2hvcnQgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fYnJvYWRjYXN0KCB1c2hvcnQgdmFsdWUsIHVpbnQgaW5kZXggKTsKdXNob3J0MiBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX2Jyb2FkY2FzdCggdXNob3J0MiB2YWx1ZSwgdWludCBpbmRleCApOwp1c2hvcnQzIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fYnJvYWRjYXN0KCB1c2hvcnQzIHZhbHVlLCB1aW50IGluZGV4ICk7CnVzaG9ydDQgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9icm9hZGNhc3QoIHVzaG9ydDQgdmFsdWUsIHVpbnQgaW5kZXggKTsKdXNob3J0OCBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX2Jyb2FkY2FzdCggdXNob3J0OCB2YWx1ZSwgdWludCBpbmRleCApOwp1c2hvcnQxNiBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX2Jyb2FkY2FzdCggdXNob3J0MTYgdmFsdWUsIHVpbnQgaW5kZXggKTsKCmludCAgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9icm9hZGNhc3QoIGludCB2YWx1ZSwgdWludCBpbmRleCApOwppbnQyICAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fYnJvYWRjYXN0KCBpbnQyIHZhbHVlLCB1aW50IGluZGV4ICk7CmludDMgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9icm9hZGNhc3QoIGludDMgdmFsdWUsIHVpbnQgaW5kZXggKTsKaW50NCAgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX2Jyb2FkY2FzdCggaW50NCB2YWx1ZSwgdWludCBpbmRleCApOwppbnQ4ICAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fYnJvYWRjYXN0KCBpbnQ4IHZhbHVlLCB1aW50IGluZGV4ICk7CmludDE2ICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9icm9hZGNhc3QoIGludDE2IHZhbHVlLCB1aW50IGluZGV4ICk7Cgp1aW50ICAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fYnJvYWRjYXN0KCB1aW50IHZhbHVlLCB1aW50IGluZGV4ICk7CnVpbnQyICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9icm9hZGNhc3QoIHVpbnQyIHZhbHVlLCB1aW50IGluZGV4ICk7CnVpbnQzICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9icm9hZGNhc3QoIHVpbnQzIHZhbHVlLCB1aW50IGluZGV4ICk7CnVpbnQ0ICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9icm9hZGNhc3QoIHVpbnQ0IHZhbHVlLCB1aW50IGluZGV4ICk7CnVpbnQ4ICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9icm9hZGNhc3QoIHVpbnQ4IHZhbHVlLCB1aW50IGluZGV4ICk7CnVpbnQxNiAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9icm9hZGNhc3QoIHVpbnQxNiB2YWx1ZSwgdWludCBpbmRleCApOwoKbG9uZyAgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX2Jyb2FkY2FzdCggbG9uZyB2YWx1ZSwgdWludCBpbmRleCApOwpsb25nMiAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fYnJvYWRjYXN0KCBsb25nMiB2YWx1ZSwgdWludCBpbmRleCApOwpsb25nMyAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fYnJvYWRjYXN0KCBsb25nMyB2YWx1ZSwgdWludCBpbmRleCApOwpsb25nNCAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fYnJvYWRjYXN0KCBsb25nNCB2YWx1ZSwgdWludCBpbmRleCApOwpsb25nOCAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fYnJvYWRjYXN0KCBsb25nOCB2YWx1ZSwgdWludCBpbmRleCApOwpsb25nMTYgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fYnJvYWRjYXN0KCBsb25nMTYgdmFsdWUsIHVpbnQgaW5kZXggKTsKCnVsb25nICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9icm9hZGNhc3QoIHVsb25nIHZhbHVlLCB1aW50IGluZGV4ICk7CnVsb25nMiAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9icm9hZGNhc3QoIHVsb25nMiB2YWx1ZSwgdWludCBpbmRleCApOwp1bG9uZzMgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fYnJvYWRjYXN0KCB1bG9uZzMgdmFsdWUsIHVpbnQgaW5kZXggKTsKdWxvbmc0ICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX2Jyb2FkY2FzdCggdWxvbmc0IHZhbHVlLCB1aW50IGluZGV4ICk7CnVsb25nOCAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9icm9hZGNhc3QoIHVsb25nOCB2YWx1ZSwgdWludCBpbmRleCApOwp1bG9uZzE2IF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fYnJvYWRjYXN0KCB1bG9uZzE2IHZhbHVlLCB1aW50IGluZGV4ICk7CgpmbG9hdCAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fYnJvYWRjYXN0KCBmbG9hdCB2YWx1ZSwgdWludCBpbmRleCApOwpmbG9hdDIgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fYnJvYWRjYXN0KCBmbG9hdDIgdmFsdWUsIHVpbnQgaW5kZXggKTsKZmxvYXQzICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX2Jyb2FkY2FzdCggZmxvYXQzIHZhbHVlLCB1aW50IGluZGV4ICk7CmZsb2F0NCAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9icm9hZGNhc3QoIGZsb2F0NCB2YWx1ZSwgdWludCBpbmRleCApOwpmbG9hdDggIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fYnJvYWRjYXN0KCBmbG9hdDggdmFsdWUsIHVpbnQgaW5kZXggKTsKZmxvYXQxNiBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX2Jyb2FkY2FzdCggZmxvYXQxNiB2YWx1ZSwgdWludCBpbmRleCApOwoKY2hhciAgICBfX292bGQgc3ViX2dyb3VwX2Jyb2FkY2FzdF9maXJzdCggY2hhciB2YWx1ZSApOwp1Y2hhciAgIF9fb3ZsZCBzdWJfZ3JvdXBfYnJvYWRjYXN0X2ZpcnN0KCB1Y2hhciB2YWx1ZSApOwpzaG9ydCAgIF9fb3ZsZCBzdWJfZ3JvdXBfYnJvYWRjYXN0X2ZpcnN0KCBzaG9ydCB2YWx1ZSApOwp1c2hvcnQgIF9fb3ZsZCBzdWJfZ3JvdXBfYnJvYWRjYXN0X2ZpcnN0KCB1c2hvcnQgdmFsdWUgKTsKaW50ICAgICBfX292bGQgc3ViX2dyb3VwX2Jyb2FkY2FzdF9maXJzdCggaW50IHZhbHVlICk7CnVpbnQgICAgX19vdmxkIHN1Yl9ncm91cF9icm9hZGNhc3RfZmlyc3QoIHVpbnQgdmFsdWUgKTsKbG9uZyAgICBfX292bGQgc3ViX2dyb3VwX2Jyb2FkY2FzdF9maXJzdCggbG9uZyB2YWx1ZSApOwp1bG9uZyAgIF9fb3ZsZCBzdWJfZ3JvdXBfYnJvYWRjYXN0X2ZpcnN0KCB1bG9uZyB2YWx1ZSApOwpmbG9hdCAgIF9fb3ZsZCBzdWJfZ3JvdXBfYnJvYWRjYXN0X2ZpcnN0KCBmbG9hdCB2YWx1ZSApOwoKdWludDQgICBfX292bGQgc3ViX2dyb3VwX2JhbGxvdCggaW50IHByZWRpY2F0ZSApOwppbnQgICAgIF9fb3ZsZCBfX2NuZm4gc3ViX2dyb3VwX2ludmVyc2VfYmFsbG90KCB1aW50NCB2YWx1ZSApOwppbnQgICAgIF9fb3ZsZCBfX2NuZm4gc3ViX2dyb3VwX2JhbGxvdF9iaXRfZXh0cmFjdCggdWludDQgdmFsdWUsIHVpbnQgaW5kZXggKTsKdWludCAgICBfX292bGQgX19jbmZuIHN1Yl9ncm91cF9iYWxsb3RfYml0X2NvdW50KCB1aW50NCB2YWx1ZSApOwoKdWludCAgICBfX292bGQgc3ViX2dyb3VwX2JhbGxvdF9pbmNsdXNpdmVfc2NhbiggdWludDQgdmFsdWUgKTsKdWludCAgICBfX292bGQgc3ViX2dyb3VwX2JhbGxvdF9leGNsdXNpdmVfc2NhbiggdWludDQgdmFsdWUgKTsKdWludCAgICBfX292bGQgc3ViX2dyb3VwX2JhbGxvdF9maW5kX2xzYiggdWludDQgdmFsdWUgKTsKdWludCAgICBfX292bGQgc3ViX2dyb3VwX2JhbGxvdF9maW5kX21zYiggdWludDQgdmFsdWUgKTsKCnVpbnQ0ICAgX19vdmxkIF9fY25mbiBnZXRfc3ViX2dyb3VwX2VxX21hc2sodm9pZCk7CnVpbnQ0ICAgX19vdmxkIF9fY25mbiBnZXRfc3ViX2dyb3VwX2dlX21hc2sodm9pZCk7CnVpbnQ0ICAgX19vdmxkIF9fY25mbiBnZXRfc3ViX2dyb3VwX2d0X21hc2sodm9pZCk7CnVpbnQ0ICAgX19vdmxkIF9fY25mbiBnZXRfc3ViX2dyb3VwX2xlX21hc2sodm9pZCk7CnVpbnQ0ICAgX19vdmxkIF9fY25mbiBnZXRfc3ViX2dyb3VwX2x0X21hc2sodm9pZCk7CgojaWYgZGVmaW5lZChjbF9raHJfZnAxNikKaGFsZiAgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX2Jyb2FkY2FzdCggaGFsZiB2YWx1ZSwgdWludCBpbmRleCApOwpoYWxmMiAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fYnJvYWRjYXN0KCBoYWxmMiB2YWx1ZSwgdWludCBpbmRleCApOwpoYWxmMyAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fYnJvYWRjYXN0KCBoYWxmMyB2YWx1ZSwgdWludCBpbmRleCApOwpoYWxmNCAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fYnJvYWRjYXN0KCBoYWxmNCB2YWx1ZSwgdWludCBpbmRleCApOwpoYWxmOCAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fYnJvYWRjYXN0KCBoYWxmOCB2YWx1ZSwgdWludCBpbmRleCApOwpoYWxmMTYgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fYnJvYWRjYXN0KCBoYWxmMTYgdmFsdWUsIHVpbnQgaW5kZXggKTsKCmhhbGYgICAgX19vdmxkIHN1Yl9ncm91cF9icm9hZGNhc3RfZmlyc3QoIGhhbGYgdmFsdWUgKTsKI2VuZGlmIC8vIGNsX2tocl9mcDE2CgojaWYgZGVmaW5lZChjbF9raHJfZnA2NCkKZG91YmxlICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9icm9hZGNhc3QoIGRvdWJsZSB2YWx1ZSwgdWludCBpbmRleCApOwpkb3VibGUyICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX2Jyb2FkY2FzdCggZG91YmxlMiB2YWx1ZSwgdWludCBpbmRleCApOwpkb3VibGUzICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX2Jyb2FkY2FzdCggZG91YmxlMyB2YWx1ZSwgdWludCBpbmRleCApOwpkb3VibGU0ICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX2Jyb2FkY2FzdCggZG91YmxlNCB2YWx1ZSwgdWludCBpbmRleCApOwpkb3VibGU4ICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX2Jyb2FkY2FzdCggZG91YmxlOCB2YWx1ZSwgdWludCBpbmRleCApOwpkb3VibGUxNiBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX2Jyb2FkY2FzdCggZG91YmxlMTYgdmFsdWUsIHVpbnQgaW5kZXggKTsKCmRvdWJsZSAgIF9fb3ZsZCBzdWJfZ3JvdXBfYnJvYWRjYXN0X2ZpcnN0KCBkb3VibGUgdmFsdWUgKTsKI2VuZGlmIC8vIGNsX2tocl9mcDY0CgojZW5kaWYgLy8gY2xfa2hyX3N1Ymdyb3VwX2JhbGxvdAoKI2lmIGRlZmluZWQoY2xfa2hyX3N1Ymdyb3VwX25vbl91bmlmb3JtX2FyaXRobWV0aWMpCmNoYXIgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9yZWR1Y2VfYWRkKCBjaGFyIHZhbHVlICk7CnVjaGFyICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9yZWR1Y2VfYWRkKCB1Y2hhciB2YWx1ZSApOwpzaG9ydCAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fcmVkdWNlX2FkZCggc2hvcnQgdmFsdWUgKTsKdXNob3J0ICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3JlZHVjZV9hZGQoIHVzaG9ydCB2YWx1ZSApOwppbnQgICAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fcmVkdWNlX2FkZCggaW50IHZhbHVlICk7CnVpbnQgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9yZWR1Y2VfYWRkKCB1aW50IHZhbHVlICk7CmxvbmcgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9yZWR1Y2VfYWRkKCBsb25nIHZhbHVlICk7CnVsb25nICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9yZWR1Y2VfYWRkKCB1bG9uZyB2YWx1ZSApOwpmbG9hdCAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fcmVkdWNlX2FkZCggZmxvYXQgdmFsdWUgKTsKCmNoYXIgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9yZWR1Y2VfbXVsKCBjaGFyIHZhbHVlICk7CnVjaGFyICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9yZWR1Y2VfbXVsKCB1Y2hhciB2YWx1ZSApOwpzaG9ydCAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fcmVkdWNlX211bCggc2hvcnQgdmFsdWUgKTsKdXNob3J0ICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3JlZHVjZV9tdWwoIHVzaG9ydCB2YWx1ZSApOwppbnQgICAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fcmVkdWNlX211bCggaW50IHZhbHVlICk7CnVpbnQgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9yZWR1Y2VfbXVsKCB1aW50IHZhbHVlICk7CmxvbmcgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9yZWR1Y2VfbXVsKCBsb25nIHZhbHVlICk7CnVsb25nICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9yZWR1Y2VfbXVsKCB1bG9uZyB2YWx1ZSApOwpmbG9hdCAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fcmVkdWNlX211bCggZmxvYXQgdmFsdWUgKTsKCmNoYXIgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9yZWR1Y2VfbWluKCBjaGFyIHZhbHVlICk7CnVjaGFyICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9yZWR1Y2VfbWluKCB1Y2hhciB2YWx1ZSApOwpzaG9ydCAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fcmVkdWNlX21pbiggc2hvcnQgdmFsdWUgKTsKdXNob3J0ICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3JlZHVjZV9taW4oIHVzaG9ydCB2YWx1ZSApOwppbnQgICAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fcmVkdWNlX21pbiggaW50IHZhbHVlICk7CnVpbnQgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9yZWR1Y2VfbWluKCB1aW50IHZhbHVlICk7CmxvbmcgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9yZWR1Y2VfbWluKCBsb25nIHZhbHVlICk7CnVsb25nICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9yZWR1Y2VfbWluKCB1bG9uZyB2YWx1ZSApOwpmbG9hdCAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fcmVkdWNlX21pbiggZmxvYXQgdmFsdWUgKTsKCmNoYXIgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9yZWR1Y2VfbWF4KCBjaGFyIHZhbHVlICk7CnVjaGFyICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9yZWR1Y2VfbWF4KCB1Y2hhciB2YWx1ZSApOwpzaG9ydCAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fcmVkdWNlX21heCggc2hvcnQgdmFsdWUgKTsKdXNob3J0ICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3JlZHVjZV9tYXgoIHVzaG9ydCB2YWx1ZSApOwppbnQgICAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fcmVkdWNlX21heCggaW50IHZhbHVlICk7CnVpbnQgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9yZWR1Y2VfbWF4KCB1aW50IHZhbHVlICk7CmxvbmcgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9yZWR1Y2VfbWF4KCBsb25nIHZhbHVlICk7CnVsb25nICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9yZWR1Y2VfbWF4KCB1bG9uZyB2YWx1ZSApOwpmbG9hdCAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fcmVkdWNlX21heCggZmxvYXQgdmFsdWUgKTsKCmNoYXIgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9zY2FuX2luY2x1c2l2ZV9hZGQoIGNoYXIgdmFsdWUgKTsKdWNoYXIgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5faW5jbHVzaXZlX2FkZCggdWNoYXIgdmFsdWUgKTsKc2hvcnQgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5faW5jbHVzaXZlX2FkZCggc2hvcnQgdmFsdWUgKTsKdXNob3J0ICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5faW5jbHVzaXZlX2FkZCggdXNob3J0IHZhbHVlICk7CmludCAgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9zY2FuX2luY2x1c2l2ZV9hZGQoIGludCB2YWx1ZSApOwp1aW50ICAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fc2Nhbl9pbmNsdXNpdmVfYWRkKCB1aW50IHZhbHVlICk7CmxvbmcgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9zY2FuX2luY2x1c2l2ZV9hZGQoIGxvbmcgdmFsdWUgKTsKdWxvbmcgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5faW5jbHVzaXZlX2FkZCggdWxvbmcgdmFsdWUgKTsKZmxvYXQgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5faW5jbHVzaXZlX2FkZCggZmxvYXQgdmFsdWUgKTsKCmNoYXIgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9zY2FuX2luY2x1c2l2ZV9tdWwoIGNoYXIgdmFsdWUgKTsKdWNoYXIgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5faW5jbHVzaXZlX211bCggdWNoYXIgdmFsdWUgKTsKc2hvcnQgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5faW5jbHVzaXZlX211bCggc2hvcnQgdmFsdWUgKTsKdXNob3J0ICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5faW5jbHVzaXZlX211bCggdXNob3J0IHZhbHVlICk7CmludCAgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9zY2FuX2luY2x1c2l2ZV9tdWwoIGludCB2YWx1ZSApOwp1aW50ICAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fc2Nhbl9pbmNsdXNpdmVfbXVsKCB1aW50IHZhbHVlICk7CmxvbmcgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9zY2FuX2luY2x1c2l2ZV9tdWwoIGxvbmcgdmFsdWUgKTsKdWxvbmcgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5faW5jbHVzaXZlX211bCggdWxvbmcgdmFsdWUgKTsKZmxvYXQgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5faW5jbHVzaXZlX211bCggZmxvYXQgdmFsdWUgKTsKCmNoYXIgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9zY2FuX2luY2x1c2l2ZV9taW4oIGNoYXIgdmFsdWUgKTsKdWNoYXIgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5faW5jbHVzaXZlX21pbiggdWNoYXIgdmFsdWUgKTsKc2hvcnQgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5faW5jbHVzaXZlX21pbiggc2hvcnQgdmFsdWUgKTsKdXNob3J0ICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5faW5jbHVzaXZlX21pbiggdXNob3J0IHZhbHVlICk7CmludCAgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9zY2FuX2luY2x1c2l2ZV9taW4oIGludCB2YWx1ZSApOwp1aW50ICAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fc2Nhbl9pbmNsdXNpdmVfbWluKCB1aW50IHZhbHVlICk7CmxvbmcgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9zY2FuX2luY2x1c2l2ZV9taW4oIGxvbmcgdmFsdWUgKTsKdWxvbmcgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5faW5jbHVzaXZlX21pbiggdWxvbmcgdmFsdWUgKTsKZmxvYXQgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5faW5jbHVzaXZlX21pbiggZmxvYXQgdmFsdWUgKTsKCmNoYXIgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9zY2FuX2luY2x1c2l2ZV9tYXgoIGNoYXIgdmFsdWUgKTsKdWNoYXIgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5faW5jbHVzaXZlX21heCggdWNoYXIgdmFsdWUgKTsKc2hvcnQgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5faW5jbHVzaXZlX21heCggc2hvcnQgdmFsdWUgKTsKdXNob3J0ICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5faW5jbHVzaXZlX21heCggdXNob3J0IHZhbHVlICk7CmludCAgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9zY2FuX2luY2x1c2l2ZV9tYXgoIGludCB2YWx1ZSApOwp1aW50ICAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fc2Nhbl9pbmNsdXNpdmVfbWF4KCB1aW50IHZhbHVlICk7CmxvbmcgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9zY2FuX2luY2x1c2l2ZV9tYXgoIGxvbmcgdmFsdWUgKTsKdWxvbmcgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5faW5jbHVzaXZlX21heCggdWxvbmcgdmFsdWUgKTsKZmxvYXQgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5faW5jbHVzaXZlX21heCggZmxvYXQgdmFsdWUgKTsKCmNoYXIgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9zY2FuX2V4Y2x1c2l2ZV9hZGQoIGNoYXIgdmFsdWUgKTsKdWNoYXIgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5fZXhjbHVzaXZlX2FkZCggdWNoYXIgdmFsdWUgKTsKc2hvcnQgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5fZXhjbHVzaXZlX2FkZCggc2hvcnQgdmFsdWUgKTsKdXNob3J0ICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5fZXhjbHVzaXZlX2FkZCggdXNob3J0IHZhbHVlICk7CmludCAgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9zY2FuX2V4Y2x1c2l2ZV9hZGQoIGludCB2YWx1ZSApOwp1aW50ICAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fc2Nhbl9leGNsdXNpdmVfYWRkKCB1aW50IHZhbHVlICk7CmxvbmcgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9zY2FuX2V4Y2x1c2l2ZV9hZGQoIGxvbmcgdmFsdWUgKTsKdWxvbmcgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5fZXhjbHVzaXZlX2FkZCggdWxvbmcgdmFsdWUgKTsKZmxvYXQgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5fZXhjbHVzaXZlX2FkZCggZmxvYXQgdmFsdWUgKTsKCmNoYXIgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9zY2FuX2V4Y2x1c2l2ZV9tdWwoIGNoYXIgdmFsdWUgKTsKdWNoYXIgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5fZXhjbHVzaXZlX211bCggdWNoYXIgdmFsdWUgKTsKc2hvcnQgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5fZXhjbHVzaXZlX211bCggc2hvcnQgdmFsdWUgKTsKdXNob3J0ICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5fZXhjbHVzaXZlX211bCggdXNob3J0IHZhbHVlICk7CmludCAgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9zY2FuX2V4Y2x1c2l2ZV9tdWwoIGludCB2YWx1ZSApOwp1aW50ICAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fc2Nhbl9leGNsdXNpdmVfbXVsKCB1aW50IHZhbHVlICk7CmxvbmcgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9zY2FuX2V4Y2x1c2l2ZV9tdWwoIGxvbmcgdmFsdWUgKTsKdWxvbmcgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5fZXhjbHVzaXZlX211bCggdWxvbmcgdmFsdWUgKTsKZmxvYXQgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5fZXhjbHVzaXZlX211bCggZmxvYXQgdmFsdWUgKTsKCmNoYXIgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9zY2FuX2V4Y2x1c2l2ZV9taW4oIGNoYXIgdmFsdWUgKTsKdWNoYXIgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5fZXhjbHVzaXZlX21pbiggdWNoYXIgdmFsdWUgKTsKc2hvcnQgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5fZXhjbHVzaXZlX21pbiggc2hvcnQgdmFsdWUgKTsKdXNob3J0ICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5fZXhjbHVzaXZlX21pbiggdXNob3J0IHZhbHVlICk7CmludCAgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9zY2FuX2V4Y2x1c2l2ZV9taW4oIGludCB2YWx1ZSApOwp1aW50ICAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fc2Nhbl9leGNsdXNpdmVfbWluKCB1aW50IHZhbHVlICk7CmxvbmcgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9zY2FuX2V4Y2x1c2l2ZV9taW4oIGxvbmcgdmFsdWUgKTsKdWxvbmcgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5fZXhjbHVzaXZlX21pbiggdWxvbmcgdmFsdWUgKTsKZmxvYXQgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5fZXhjbHVzaXZlX21pbiggZmxvYXQgdmFsdWUgKTsKCmNoYXIgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9zY2FuX2V4Y2x1c2l2ZV9tYXgoIGNoYXIgdmFsdWUgKTsKdWNoYXIgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5fZXhjbHVzaXZlX21heCggdWNoYXIgdmFsdWUgKTsKc2hvcnQgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5fZXhjbHVzaXZlX21heCggc2hvcnQgdmFsdWUgKTsKdXNob3J0ICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5fZXhjbHVzaXZlX21heCggdXNob3J0IHZhbHVlICk7CmludCAgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9zY2FuX2V4Y2x1c2l2ZV9tYXgoIGludCB2YWx1ZSApOwp1aW50ICAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fc2Nhbl9leGNsdXNpdmVfbWF4KCB1aW50IHZhbHVlICk7CmxvbmcgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9zY2FuX2V4Y2x1c2l2ZV9tYXgoIGxvbmcgdmFsdWUgKTsKdWxvbmcgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5fZXhjbHVzaXZlX21heCggdWxvbmcgdmFsdWUgKTsKZmxvYXQgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5fZXhjbHVzaXZlX21heCggZmxvYXQgdmFsdWUgKTsKCmNoYXIgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9yZWR1Y2VfYW5kKCBjaGFyIHZhbHVlICk7CnVjaGFyICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9yZWR1Y2VfYW5kKCB1Y2hhciB2YWx1ZSApOwpzaG9ydCAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fcmVkdWNlX2FuZCggc2hvcnQgdmFsdWUgKTsKdXNob3J0ICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3JlZHVjZV9hbmQoIHVzaG9ydCB2YWx1ZSApOwppbnQgICAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fcmVkdWNlX2FuZCggaW50IHZhbHVlICk7CnVpbnQgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9yZWR1Y2VfYW5kKCB1aW50IHZhbHVlICk7CmxvbmcgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9yZWR1Y2VfYW5kKCBsb25nIHZhbHVlICk7CnVsb25nICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9yZWR1Y2VfYW5kKCB1bG9uZyB2YWx1ZSApOwoKY2hhciAgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3JlZHVjZV9vciggY2hhciB2YWx1ZSApOwp1Y2hhciAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fcmVkdWNlX29yKCB1Y2hhciB2YWx1ZSApOwpzaG9ydCAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fcmVkdWNlX29yKCBzaG9ydCB2YWx1ZSApOwp1c2hvcnQgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fcmVkdWNlX29yKCB1c2hvcnQgdmFsdWUgKTsKaW50ICAgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3JlZHVjZV9vciggaW50IHZhbHVlICk7CnVpbnQgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9yZWR1Y2Vfb3IoIHVpbnQgdmFsdWUgKTsKbG9uZyAgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3JlZHVjZV9vciggbG9uZyB2YWx1ZSApOwp1bG9uZyAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fcmVkdWNlX29yKCB1bG9uZyB2YWx1ZSApOwoKY2hhciAgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3JlZHVjZV94b3IoIGNoYXIgdmFsdWUgKTsKdWNoYXIgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3JlZHVjZV94b3IoIHVjaGFyIHZhbHVlICk7CnNob3J0ICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9yZWR1Y2VfeG9yKCBzaG9ydCB2YWx1ZSApOwp1c2hvcnQgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fcmVkdWNlX3hvciggdXNob3J0IHZhbHVlICk7CmludCAgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9yZWR1Y2VfeG9yKCBpbnQgdmFsdWUgKTsKdWludCAgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3JlZHVjZV94b3IoIHVpbnQgdmFsdWUgKTsKbG9uZyAgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3JlZHVjZV94b3IoIGxvbmcgdmFsdWUgKTsKdWxvbmcgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3JlZHVjZV94b3IoIHVsb25nIHZhbHVlICk7CgpjaGFyICAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fc2Nhbl9pbmNsdXNpdmVfYW5kKCBjaGFyIHZhbHVlICk7CnVjaGFyICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9zY2FuX2luY2x1c2l2ZV9hbmQoIHVjaGFyIHZhbHVlICk7CnNob3J0ICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9zY2FuX2luY2x1c2l2ZV9hbmQoIHNob3J0IHZhbHVlICk7CnVzaG9ydCAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9zY2FuX2luY2x1c2l2ZV9hbmQoIHVzaG9ydCB2YWx1ZSApOwppbnQgICAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fc2Nhbl9pbmNsdXNpdmVfYW5kKCBpbnQgdmFsdWUgKTsKdWludCAgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5faW5jbHVzaXZlX2FuZCggdWludCB2YWx1ZSApOwpsb25nICAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fc2Nhbl9pbmNsdXNpdmVfYW5kKCBsb25nIHZhbHVlICk7CnVsb25nICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9zY2FuX2luY2x1c2l2ZV9hbmQoIHVsb25nIHZhbHVlICk7CgpjaGFyICAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fc2Nhbl9pbmNsdXNpdmVfb3IoIGNoYXIgdmFsdWUgKTsKdWNoYXIgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5faW5jbHVzaXZlX29yKCB1Y2hhciB2YWx1ZSApOwpzaG9ydCAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fc2Nhbl9pbmNsdXNpdmVfb3IoIHNob3J0IHZhbHVlICk7CnVzaG9ydCAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9zY2FuX2luY2x1c2l2ZV9vciggdXNob3J0IHZhbHVlICk7CmludCAgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9zY2FuX2luY2x1c2l2ZV9vciggaW50IHZhbHVlICk7CnVpbnQgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9zY2FuX2luY2x1c2l2ZV9vciggdWludCB2YWx1ZSApOwpsb25nICAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fc2Nhbl9pbmNsdXNpdmVfb3IoIGxvbmcgdmFsdWUgKTsKdWxvbmcgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5faW5jbHVzaXZlX29yKCB1bG9uZyB2YWx1ZSApOwoKY2hhciAgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5faW5jbHVzaXZlX3hvciggY2hhciB2YWx1ZSApOwp1Y2hhciAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fc2Nhbl9pbmNsdXNpdmVfeG9yKCB1Y2hhciB2YWx1ZSApOwpzaG9ydCAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fc2Nhbl9pbmNsdXNpdmVfeG9yKCBzaG9ydCB2YWx1ZSApOwp1c2hvcnQgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fc2Nhbl9pbmNsdXNpdmVfeG9yKCB1c2hvcnQgdmFsdWUgKTsKaW50ICAgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5faW5jbHVzaXZlX3hvciggaW50IHZhbHVlICk7CnVpbnQgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9zY2FuX2luY2x1c2l2ZV94b3IoIHVpbnQgdmFsdWUgKTsKbG9uZyAgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5faW5jbHVzaXZlX3hvciggbG9uZyB2YWx1ZSApOwp1bG9uZyAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fc2Nhbl9pbmNsdXNpdmVfeG9yKCB1bG9uZyB2YWx1ZSApOwoKY2hhciAgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5fZXhjbHVzaXZlX2FuZCggY2hhciB2YWx1ZSApOwp1Y2hhciAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fc2Nhbl9leGNsdXNpdmVfYW5kKCB1Y2hhciB2YWx1ZSApOwpzaG9ydCAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fc2Nhbl9leGNsdXNpdmVfYW5kKCBzaG9ydCB2YWx1ZSApOwp1c2hvcnQgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fc2Nhbl9leGNsdXNpdmVfYW5kKCB1c2hvcnQgdmFsdWUgKTsKaW50ICAgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5fZXhjbHVzaXZlX2FuZCggaW50IHZhbHVlICk7CnVpbnQgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9zY2FuX2V4Y2x1c2l2ZV9hbmQoIHVpbnQgdmFsdWUgKTsKbG9uZyAgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5fZXhjbHVzaXZlX2FuZCggbG9uZyB2YWx1ZSApOwp1bG9uZyAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fc2Nhbl9leGNsdXNpdmVfYW5kKCB1bG9uZyB2YWx1ZSApOwoKY2hhciAgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5fZXhjbHVzaXZlX29yKCBjaGFyIHZhbHVlICk7CnVjaGFyICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9zY2FuX2V4Y2x1c2l2ZV9vciggdWNoYXIgdmFsdWUgKTsKc2hvcnQgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5fZXhjbHVzaXZlX29yKCBzaG9ydCB2YWx1ZSApOwp1c2hvcnQgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fc2Nhbl9leGNsdXNpdmVfb3IoIHVzaG9ydCB2YWx1ZSApOwppbnQgICAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fc2Nhbl9leGNsdXNpdmVfb3IoIGludCB2YWx1ZSApOwp1aW50ICAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fc2Nhbl9leGNsdXNpdmVfb3IoIHVpbnQgdmFsdWUgKTsKbG9uZyAgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5fZXhjbHVzaXZlX29yKCBsb25nIHZhbHVlICk7CnVsb25nICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9zY2FuX2V4Y2x1c2l2ZV9vciggdWxvbmcgdmFsdWUgKTsKCmNoYXIgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9zY2FuX2V4Y2x1c2l2ZV94b3IoIGNoYXIgdmFsdWUgKTsKdWNoYXIgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5fZXhjbHVzaXZlX3hvciggdWNoYXIgdmFsdWUgKTsKc2hvcnQgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5fZXhjbHVzaXZlX3hvciggc2hvcnQgdmFsdWUgKTsKdXNob3J0ICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5fZXhjbHVzaXZlX3hvciggdXNob3J0IHZhbHVlICk7CmludCAgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9zY2FuX2V4Y2x1c2l2ZV94b3IoIGludCB2YWx1ZSApOwp1aW50ICAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fc2Nhbl9leGNsdXNpdmVfeG9yKCB1aW50IHZhbHVlICk7CmxvbmcgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9zY2FuX2V4Y2x1c2l2ZV94b3IoIGxvbmcgdmFsdWUgKTsKdWxvbmcgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5fZXhjbHVzaXZlX3hvciggdWxvbmcgdmFsdWUgKTsKCmludCAgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9yZWR1Y2VfbG9naWNhbF9hbmQoIGludCBwcmVkaWNhdGUgKTsKaW50ICAgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3JlZHVjZV9sb2dpY2FsX29yKCBpbnQgcHJlZGljYXRlICk7CmludCAgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9yZWR1Y2VfbG9naWNhbF94b3IoIGludCBwcmVkaWNhdGUgKTsKCmludCAgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9zY2FuX2luY2x1c2l2ZV9sb2dpY2FsX2FuZCggaW50IHByZWRpY2F0ZSApOwppbnQgICAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fc2Nhbl9pbmNsdXNpdmVfbG9naWNhbF9vciggaW50IHByZWRpY2F0ZSApOwppbnQgICAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fc2Nhbl9pbmNsdXNpdmVfbG9naWNhbF94b3IoIGludCBwcmVkaWNhdGUgKTsKCmludCAgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9zY2FuX2V4Y2x1c2l2ZV9sb2dpY2FsX2FuZCggaW50IHByZWRpY2F0ZSApOwppbnQgICAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fc2Nhbl9leGNsdXNpdmVfbG9naWNhbF9vciggaW50IHByZWRpY2F0ZSApOwppbnQgICAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fc2Nhbl9leGNsdXNpdmVfbG9naWNhbF94b3IoIGludCBwcmVkaWNhdGUgKTsKCiNpZiBkZWZpbmVkKGNsX2tocl9mcDE2KQpoYWxmICAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fcmVkdWNlX2FkZCggaGFsZiB2YWx1ZSApOwpoYWxmICAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fcmVkdWNlX211bCggaGFsZiB2YWx1ZSApOwpoYWxmICAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fcmVkdWNlX21pbiggaGFsZiB2YWx1ZSApOwpoYWxmICAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fcmVkdWNlX21heCggaGFsZiB2YWx1ZSApOwpoYWxmICAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fc2Nhbl9pbmNsdXNpdmVfYWRkKCBoYWxmIHZhbHVlICk7CmhhbGYgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9zY2FuX2luY2x1c2l2ZV9tdWwoIGhhbGYgdmFsdWUgKTsKaGFsZiAgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5faW5jbHVzaXZlX21pbiggaGFsZiB2YWx1ZSApOwpoYWxmICAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fc2Nhbl9pbmNsdXNpdmVfbWF4KCBoYWxmIHZhbHVlICk7CmhhbGYgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9zY2FuX2V4Y2x1c2l2ZV9hZGQoIGhhbGYgdmFsdWUgKTsKaGFsZiAgICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5fZXhjbHVzaXZlX211bCggaGFsZiB2YWx1ZSApOwpoYWxmICAgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fc2Nhbl9leGNsdXNpdmVfbWluKCBoYWxmIHZhbHVlICk7CmhhbGYgICAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9zY2FuX2V4Y2x1c2l2ZV9tYXgoIGhhbGYgdmFsdWUgKTsKI2VuZGlmIC8vIGNsX2tocl9mcDE2CgojaWYgZGVmaW5lZChjbF9raHJfZnA2NCkKZG91YmxlICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3JlZHVjZV9hZGQoIGRvdWJsZSB2YWx1ZSApOwpkb3VibGUgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fcmVkdWNlX211bCggZG91YmxlIHZhbHVlICk7CmRvdWJsZSAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9yZWR1Y2VfbWluKCBkb3VibGUgdmFsdWUgKTsKZG91YmxlICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3JlZHVjZV9tYXgoIGRvdWJsZSB2YWx1ZSApOwpkb3VibGUgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fc2Nhbl9pbmNsdXNpdmVfYWRkKCBkb3VibGUgdmFsdWUgKTsKZG91YmxlICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5faW5jbHVzaXZlX211bCggZG91YmxlIHZhbHVlICk7CmRvdWJsZSAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9zY2FuX2luY2x1c2l2ZV9taW4oIGRvdWJsZSB2YWx1ZSApOwpkb3VibGUgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fc2Nhbl9pbmNsdXNpdmVfbWF4KCBkb3VibGUgdmFsdWUgKTsKZG91YmxlICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5fZXhjbHVzaXZlX2FkZCggZG91YmxlIHZhbHVlICk7CmRvdWJsZSAgX19vdmxkIHN1Yl9ncm91cF9ub25fdW5pZm9ybV9zY2FuX2V4Y2x1c2l2ZV9tdWwoIGRvdWJsZSB2YWx1ZSApOwpkb3VibGUgIF9fb3ZsZCBzdWJfZ3JvdXBfbm9uX3VuaWZvcm1fc2Nhbl9leGNsdXNpdmVfbWluKCBkb3VibGUgdmFsdWUgKTsKZG91YmxlICBfX292bGQgc3ViX2dyb3VwX25vbl91bmlmb3JtX3NjYW5fZXhjbHVzaXZlX21heCggZG91YmxlIHZhbHVlICk7CiNlbmRpZiAvLyBjbF9raHJfZnA2NAoKI2VuZGlmIC8vIGNsX2tocl9zdWJncm91cF9ub25fdW5pZm9ybV9hcml0aG1ldGljCgojaWYgZGVmaW5lZChjbF9raHJfc3ViZ3JvdXBfc2h1ZmZsZSkKY2hhciAgICBfX292bGQgc3ViX2dyb3VwX3NodWZmbGUoIGNoYXIgdmFsdWUsIHVpbnQgaW5kZXggKTsKdWNoYXIgICBfX292bGQgc3ViX2dyb3VwX3NodWZmbGUoIHVjaGFyIHZhbHVlLCB1aW50IGluZGV4ICk7CnNob3J0ICAgX19vdmxkIHN1Yl9ncm91cF9zaHVmZmxlKCBzaG9ydCB2YWx1ZSwgdWludCBpbmRleCApOwp1c2hvcnQgIF9fb3ZsZCBzdWJfZ3JvdXBfc2h1ZmZsZSggdXNob3J0IHZhbHVlLCB1aW50IGluZGV4ICk7CmludCAgICAgX19vdmxkIHN1Yl9ncm91cF9zaHVmZmxlKCBpbnQgdmFsdWUsIHVpbnQgaW5kZXggKTsKdWludCAgICBfX292bGQgc3ViX2dyb3VwX3NodWZmbGUoIHVpbnQgdmFsdWUsIHVpbnQgaW5kZXggKTsKbG9uZyAgICBfX292bGQgc3ViX2dyb3VwX3NodWZmbGUoIGxvbmcgdmFsdWUsIHVpbnQgaW5kZXggKTsKdWxvbmcgICBfX292bGQgc3ViX2dyb3VwX3NodWZmbGUoIHVsb25nIHZhbHVlLCB1aW50IGluZGV4ICk7CmZsb2F0ICAgX19vdmxkIHN1Yl9ncm91cF9zaHVmZmxlKCBmbG9hdCB2YWx1ZSwgdWludCBpbmRleCApOwoKY2hhciAgICBfX292bGQgc3ViX2dyb3VwX3NodWZmbGVfeG9yKCBjaGFyIHZhbHVlLCB1aW50IG1hc2sgKTsKdWNoYXIgICBfX292bGQgc3ViX2dyb3VwX3NodWZmbGVfeG9yKCB1Y2hhciB2YWx1ZSwgdWludCBtYXNrICk7CnNob3J0ICAgX19vdmxkIHN1Yl9ncm91cF9zaHVmZmxlX3hvciggc2hvcnQgdmFsdWUsIHVpbnQgbWFzayApOwp1c2hvcnQgIF9fb3ZsZCBzdWJfZ3JvdXBfc2h1ZmZsZV94b3IoIHVzaG9ydCB2YWx1ZSwgdWludCBtYXNrICk7CmludCAgICAgX19vdmxkIHN1Yl9ncm91cF9zaHVmZmxlX3hvciggaW50IHZhbHVlLCB1aW50IG1hc2sgKTsKdWludCAgICBfX292bGQgc3ViX2dyb3VwX3NodWZmbGVfeG9yKCB1aW50IHZhbHVlLCB1aW50IG1hc2sgKTsKbG9uZyAgICBfX292bGQgc3ViX2dyb3VwX3NodWZmbGVfeG9yKCBsb25nIHZhbHVlLCB1aW50IG1hc2sgKTsKdWxvbmcgICBfX292bGQgc3ViX2dyb3VwX3NodWZmbGVfeG9yKCB1bG9uZyB2YWx1ZSwgdWludCBtYXNrICk7CmZsb2F0ICAgX19vdmxkIHN1Yl9ncm91cF9zaHVmZmxlX3hvciggZmxvYXQgdmFsdWUsIHVpbnQgbWFzayApOwoKI2lmIGRlZmluZWQoY2xfa2hyX2ZwMTYpCmhhbGYgICAgX19vdmxkIHN1Yl9ncm91cF9zaHVmZmxlKCBoYWxmIHZhbHVlLCB1aW50IGluZGV4ICk7CmhhbGYgICAgX19vdmxkIHN1Yl9ncm91cF9zaHVmZmxlX3hvciggaGFsZiB2YWx1ZSwgdWludCBtYXNrICk7CiNlbmRpZiAvLyBjbF9raHJfZnAxNgoKI2lmIGRlZmluZWQoY2xfa2hyX2ZwNjQpCmRvdWJsZSAgX19vdmxkIHN1Yl9ncm91cF9zaHVmZmxlKCBkb3VibGUgdmFsdWUsIHVpbnQgaW5kZXggKTsKZG91YmxlICBfX292bGQgc3ViX2dyb3VwX3NodWZmbGVfeG9yKCBkb3VibGUgdmFsdWUsIHVpbnQgbWFzayApOwojZW5kaWYgLy8gY2xfa2hyX2ZwNjQKCiNlbmRpZiAvLyBjbF9raHJfc3ViZ3JvdXBfc2h1ZmZsZQoKI2lmIGRlZmluZWQoY2xfa2hyX3N1Ymdyb3VwX3NodWZmbGVfcmVsYXRpdmUpCmNoYXIgICAgX19vdmxkIHN1Yl9ncm91cF9zaHVmZmxlX3VwKCBjaGFyIHZhbHVlLCB1aW50IGRlbHRhICk7CnVjaGFyICAgX19vdmxkIHN1Yl9ncm91cF9zaHVmZmxlX3VwKCB1Y2hhciB2YWx1ZSwgdWludCBkZWx0YSApOwpzaG9ydCAgIF9fb3ZsZCBzdWJfZ3JvdXBfc2h1ZmZsZV91cCggc2hvcnQgdmFsdWUsIHVpbnQgZGVsdGEgKTsKdXNob3J0ICBfX292bGQgc3ViX2dyb3VwX3NodWZmbGVfdXAoIHVzaG9ydCB2YWx1ZSwgdWludCBkZWx0YSApOwppbnQgICAgIF9fb3ZsZCBzdWJfZ3JvdXBfc2h1ZmZsZV91cCggaW50IHZhbHVlLCB1aW50IGRlbHRhICk7CnVpbnQgICAgX19vdmxkIHN1Yl9ncm91cF9zaHVmZmxlX3VwKCB1aW50IHZhbHVlLCB1aW50IGRlbHRhICk7CmxvbmcgICAgX19vdmxkIHN1Yl9ncm91cF9zaHVmZmxlX3VwKCBsb25nIHZhbHVlLCB1aW50IGRlbHRhICk7CnVsb25nICAgX19vdmxkIHN1Yl9ncm91cF9zaHVmZmxlX3VwKCB1bG9uZyB2YWx1ZSwgdWludCBkZWx0YSApOwpmbG9hdCAgIF9fb3ZsZCBzdWJfZ3JvdXBfc2h1ZmZsZV91cCggZmxvYXQgdmFsdWUsIHVpbnQgZGVsdGEgKTsKCmNoYXIgICAgX19vdmxkIHN1Yl9ncm91cF9zaHVmZmxlX2Rvd24oIGNoYXIgdmFsdWUsIHVpbnQgZGVsdGEgKTsKdWNoYXIgICBfX292bGQgc3ViX2dyb3VwX3NodWZmbGVfZG93biggdWNoYXIgdmFsdWUsIHVpbnQgZGVsdGEgKTsKc2hvcnQgICBfX292bGQgc3ViX2dyb3VwX3NodWZmbGVfZG93biggc2hvcnQgdmFsdWUsIHVpbnQgZGVsdGEgKTsKdXNob3J0ICBfX292bGQgc3ViX2dyb3VwX3NodWZmbGVfZG93biggdXNob3J0IHZhbHVlLCB1aW50IGRlbHRhICk7CmludCAgICAgX19vdmxkIHN1Yl9ncm91cF9zaHVmZmxlX2Rvd24oIGludCB2YWx1ZSwgdWludCBkZWx0YSApOwp1aW50ICAgIF9fb3ZsZCBzdWJfZ3JvdXBfc2h1ZmZsZV9kb3duKCB1aW50IHZhbHVlLCB1aW50IGRlbHRhICk7CmxvbmcgICAgX19vdmxkIHN1Yl9ncm91cF9zaHVmZmxlX2Rvd24oIGxvbmcgdmFsdWUsIHVpbnQgZGVsdGEgKTsKdWxvbmcgICBfX292bGQgc3ViX2dyb3VwX3NodWZmbGVfZG93biggdWxvbmcgdmFsdWUsIHVpbnQgZGVsdGEgKTsKZmxvYXQgICBfX292bGQgc3ViX2dyb3VwX3NodWZmbGVfZG93biggZmxvYXQgdmFsdWUsIHVpbnQgZGVsdGEgKTsKCiNpZiBkZWZpbmVkKGNsX2tocl9mcDE2KQpoYWxmICAgIF9fb3ZsZCBzdWJfZ3JvdXBfc2h1ZmZsZV91cCggaGFsZiB2YWx1ZSwgdWludCBkZWx0YSApOwpoYWxmICAgIF9fb3ZsZCBzdWJfZ3JvdXBfc2h1ZmZsZV9kb3duKCBoYWxmIHZhbHVlLCB1aW50IGRlbHRhICk7CiNlbmRpZiAvLyBjbF9raHJfZnAxNgoKI2lmIGRlZmluZWQoY2xfa2hyX2ZwNjQpCmRvdWJsZSAgX19vdmxkIHN1Yl9ncm91cF9zaHVmZmxlX3VwKCBkb3VibGUgdmFsdWUsIHVpbnQgZGVsdGEgKTsKZG91YmxlICBfX292bGQgc3ViX2dyb3VwX3NodWZmbGVfZG93biggZG91YmxlIHZhbHVlLCB1aW50IGRlbHRhICk7CiNlbmRpZiAvLyBjbF9raHJfZnA2NAoKI2VuZGlmIC8vIGNsX2tocl9zdWJncm91cF9zaHVmZmxlX3JlbGF0aXZlCgojaWYgZGVmaW5lZChjbF9raHJfc3ViZ3JvdXBfY2x1c3RlcmVkX3JlZHVjZSkKY2hhciAgICBfX292bGQgc3ViX2dyb3VwX2NsdXN0ZXJlZF9yZWR1Y2VfYWRkKCBjaGFyIHZhbHVlLCB1aW50IGNsdXN0ZXJzaXplICk7CnVjaGFyICAgX19vdmxkIHN1Yl9ncm91cF9jbHVzdGVyZWRfcmVkdWNlX2FkZCggdWNoYXIgdmFsdWUsIHVpbnQgY2x1c3RlcnNpemUgKTsKc2hvcnQgICBfX292bGQgc3ViX2dyb3VwX2NsdXN0ZXJlZF9yZWR1Y2VfYWRkKCBzaG9ydCB2YWx1ZSwgdWludCBjbHVzdGVyc2l6ZSApOwp1c2hvcnQgIF9fb3ZsZCBzdWJfZ3JvdXBfY2x1c3RlcmVkX3JlZHVjZV9hZGQoIHVzaG9ydCB2YWx1ZSwgdWludCBjbHVzdGVyc2l6ZSApOwppbnQgICAgIF9fb3ZsZCBzdWJfZ3JvdXBfY2x1c3RlcmVkX3JlZHVjZV9hZGQoIGludCB2YWx1ZSwgdWludCBjbHVzdGVyc2l6ZSApOwp1aW50ICAgIF9fb3ZsZCBzdWJfZ3JvdXBfY2x1c3RlcmVkX3JlZHVjZV9hZGQoIHVpbnQgdmFsdWUsIHVpbnQgY2x1c3RlcnNpemUgKTsKbG9uZyAgICBfX292bGQgc3ViX2dyb3VwX2NsdXN0ZXJlZF9yZWR1Y2VfYWRkKCBsb25nIHZhbHVlLCB1aW50IGNsdXN0ZXJzaXplICk7CnVsb25nICAgX19vdmxkIHN1Yl9ncm91cF9jbHVzdGVyZWRfcmVkdWNlX2FkZCggdWxvbmcgdmFsdWUsIHVpbnQgY2x1c3RlcnNpemUgKTsKZmxvYXQgICBfX292bGQgc3ViX2dyb3VwX2NsdXN0ZXJlZF9yZWR1Y2VfYWRkKCBmbG9hdCB2YWx1ZSwgdWludCBjbHVzdGVyc2l6ZSApOwoKY2hhciAgICBfX292bGQgc3ViX2dyb3VwX2NsdXN0ZXJlZF9yZWR1Y2VfbXVsKCBjaGFyIHZhbHVlLCB1aW50IGNsdXN0ZXJzaXplICk7CnVjaGFyICAgX19vdmxkIHN1Yl9ncm91cF9jbHVzdGVyZWRfcmVkdWNlX211bCggdWNoYXIgdmFsdWUsIHVpbnQgY2x1c3RlcnNpemUgKTsKc2hvcnQgICBfX292bGQgc3ViX2dyb3VwX2NsdXN0ZXJlZF9yZWR1Y2VfbXVsKCBzaG9ydCB2YWx1ZSwgdWludCBjbHVzdGVyc2l6ZSApOwp1c2hvcnQgIF9fb3ZsZCBzdWJfZ3JvdXBfY2x1c3RlcmVkX3JlZHVjZV9tdWwoIHVzaG9ydCB2YWx1ZSwgdWludCBjbHVzdGVyc2l6ZSApOwppbnQgICAgIF9fb3ZsZCBzdWJfZ3JvdXBfY2x1c3RlcmVkX3JlZHVjZV9tdWwoIGludCB2YWx1ZSwgdWludCBjbHVzdGVyc2l6ZSApOwp1aW50ICAgIF9fb3ZsZCBzdWJfZ3JvdXBfY2x1c3RlcmVkX3JlZHVjZV9tdWwoIHVpbnQgdmFsdWUsIHVpbnQgY2x1c3RlcnNpemUgKTsKbG9uZyAgICBfX292bGQgc3ViX2dyb3VwX2NsdXN0ZXJlZF9yZWR1Y2VfbXVsKCBsb25nIHZhbHVlLCB1aW50IGNsdXN0ZXJzaXplICk7CnVsb25nICAgX19vdmxkIHN1Yl9ncm91cF9jbHVzdGVyZWRfcmVkdWNlX211bCggdWxvbmcgdmFsdWUsIHVpbnQgY2x1c3RlcnNpemUgKTsKZmxvYXQgICBfX292bGQgc3ViX2dyb3VwX2NsdXN0ZXJlZF9yZWR1Y2VfbXVsKCBmbG9hdCB2YWx1ZSwgdWludCBjbHVzdGVyc2l6ZSApOwoKY2hhciAgICBfX292bGQgc3ViX2dyb3VwX2NsdXN0ZXJlZF9yZWR1Y2VfbWluKCBjaGFyIHZhbHVlLCB1aW50IGNsdXN0ZXJzaXplICk7CnVjaGFyICAgX19vdmxkIHN1Yl9ncm91cF9jbHVzdGVyZWRfcmVkdWNlX21pbiggdWNoYXIgdmFsdWUsIHVpbnQgY2x1c3RlcnNpemUgKTsKc2hvcnQgICBfX292bGQgc3ViX2dyb3VwX2NsdXN0ZXJlZF9yZWR1Y2VfbWluKCBzaG9ydCB2YWx1ZSwgdWludCBjbHVzdGVyc2l6ZSApOwp1c2hvcnQgIF9fb3ZsZCBzdWJfZ3JvdXBfY2x1c3RlcmVkX3JlZHVjZV9taW4oIHVzaG9ydCB2YWx1ZSwgdWludCBjbHVzdGVyc2l6ZSApOwppbnQgICAgIF9fb3ZsZCBzdWJfZ3JvdXBfY2x1c3RlcmVkX3JlZHVjZV9taW4oIGludCB2YWx1ZSwgdWludCBjbHVzdGVyc2l6ZSApOwp1aW50ICAgIF9fb3ZsZCBzdWJfZ3JvdXBfY2x1c3RlcmVkX3JlZHVjZV9taW4oIHVpbnQgdmFsdWUsIHVpbnQgY2x1c3RlcnNpemUgKTsKbG9uZyAgICBfX292bGQgc3ViX2dyb3VwX2NsdXN0ZXJlZF9yZWR1Y2VfbWluKCBsb25nIHZhbHVlLCB1aW50IGNsdXN0ZXJzaXplICk7CnVsb25nICAgX19vdmxkIHN1Yl9ncm91cF9jbHVzdGVyZWRfcmVkdWNlX21pbiggdWxvbmcgdmFsdWUsIHVpbnQgY2x1c3RlcnNpemUgKTsKZmxvYXQgICBfX292bGQgc3ViX2dyb3VwX2NsdXN0ZXJlZF9yZWR1Y2VfbWluKCBmbG9hdCB2YWx1ZSwgdWludCBjbHVzdGVyc2l6ZSApOwoKY2hhciAgICBfX292bGQgc3ViX2dyb3VwX2NsdXN0ZXJlZF9yZWR1Y2VfbWF4KCBjaGFyIHZhbHVlLCB1aW50IGNsdXN0ZXJzaXplICk7CnVjaGFyICAgX19vdmxkIHN1Yl9ncm91cF9jbHVzdGVyZWRfcmVkdWNlX21heCggdWNoYXIgdmFsdWUsIHVpbnQgY2x1c3RlcnNpemUgKTsKc2hvcnQgICBfX292bGQgc3ViX2dyb3VwX2NsdXN0ZXJlZF9yZWR1Y2VfbWF4KCBzaG9ydCB2YWx1ZSwgdWludCBjbHVzdGVyc2l6ZSApOwp1c2hvcnQgIF9fb3ZsZCBzdWJfZ3JvdXBfY2x1c3RlcmVkX3JlZHVjZV9tYXgoIHVzaG9ydCB2YWx1ZSwgdWludCBjbHVzdGVyc2l6ZSApOwppbnQgICAgIF9fb3ZsZCBzdWJfZ3JvdXBfY2x1c3RlcmVkX3JlZHVjZV9tYXgoIGludCB2YWx1ZSwgdWludCBjbHVzdGVyc2l6ZSApOwp1aW50ICAgIF9fb3ZsZCBzdWJfZ3JvdXBfY2x1c3RlcmVkX3JlZHVjZV9tYXgoIHVpbnQgdmFsdWUsIHVpbnQgY2x1c3RlcnNpemUgKTsKbG9uZyAgICBfX292bGQgc3ViX2dyb3VwX2NsdXN0ZXJlZF9yZWR1Y2VfbWF4KCBsb25nIHZhbHVlLCB1aW50IGNsdXN0ZXJzaXplICk7CnVsb25nICAgX19vdmxkIHN1Yl9ncm91cF9jbHVzdGVyZWRfcmVkdWNlX21heCggdWxvbmcgdmFsdWUsIHVpbnQgY2x1c3RlcnNpemUgKTsKZmxvYXQgICBfX292bGQgc3ViX2dyb3VwX2NsdXN0ZXJlZF9yZWR1Y2VfbWF4KCBmbG9hdCB2YWx1ZSwgdWludCBjbHVzdGVyc2l6ZSApOwoKY2hhciAgICBfX292bGQgc3ViX2dyb3VwX2NsdXN0ZXJlZF9yZWR1Y2VfYW5kKCBjaGFyIHZhbHVlLCB1aW50IGNsdXN0ZXJzaXplICk7CnVjaGFyICAgX19vdmxkIHN1Yl9ncm91cF9jbHVzdGVyZWRfcmVkdWNlX2FuZCggdWNoYXIgdmFsdWUsIHVpbnQgY2x1c3RlcnNpemUgKTsKc2hvcnQgICBfX292bGQgc3ViX2dyb3VwX2NsdXN0ZXJlZF9yZWR1Y2VfYW5kKCBzaG9ydCB2YWx1ZSwgdWludCBjbHVzdGVyc2l6ZSApOwp1c2hvcnQgIF9fb3ZsZCBzdWJfZ3JvdXBfY2x1c3RlcmVkX3JlZHVjZV9hbmQoIHVzaG9ydCB2YWx1ZSwgdWludCBjbHVzdGVyc2l6ZSApOwppbnQgICAgIF9fb3ZsZCBzdWJfZ3JvdXBfY2x1c3RlcmVkX3JlZHVjZV9hbmQoIGludCB2YWx1ZSwgdWludCBjbHVzdGVyc2l6ZSApOwp1aW50ICAgIF9fb3ZsZCBzdWJfZ3JvdXBfY2x1c3RlcmVkX3JlZHVjZV9hbmQoIHVpbnQgdmFsdWUsIHVpbnQgY2x1c3RlcnNpemUgKTsKbG9uZyAgICBfX292bGQgc3ViX2dyb3VwX2NsdXN0ZXJlZF9yZWR1Y2VfYW5kKCBsb25nIHZhbHVlLCB1aW50IGNsdXN0ZXJzaXplICk7CnVsb25nICAgX19vdmxkIHN1Yl9ncm91cF9jbHVzdGVyZWRfcmVkdWNlX2FuZCggdWxvbmcgdmFsdWUsIHVpbnQgY2x1c3RlcnNpemUgKTsKCmNoYXIgICAgX19vdmxkIHN1Yl9ncm91cF9jbHVzdGVyZWRfcmVkdWNlX29yKCBjaGFyIHZhbHVlLCB1aW50IGNsdXN0ZXJzaXplICk7CnVjaGFyICAgX19vdmxkIHN1Yl9ncm91cF9jbHVzdGVyZWRfcmVkdWNlX29yKCB1Y2hhciB2YWx1ZSwgdWludCBjbHVzdGVyc2l6ZSApOwpzaG9ydCAgIF9fb3ZsZCBzdWJfZ3JvdXBfY2x1c3RlcmVkX3JlZHVjZV9vciggc2hvcnQgdmFsdWUsIHVpbnQgY2x1c3RlcnNpemUgKTsKdXNob3J0ICBfX292bGQgc3ViX2dyb3VwX2NsdXN0ZXJlZF9yZWR1Y2Vfb3IoIHVzaG9ydCB2YWx1ZSwgdWludCBjbHVzdGVyc2l6ZSApOwppbnQgICAgIF9fb3ZsZCBzdWJfZ3JvdXBfY2x1c3RlcmVkX3JlZHVjZV9vciggaW50IHZhbHVlLCB1aW50IGNsdXN0ZXJzaXplICk7CnVpbnQgICAgX19vdmxkIHN1Yl9ncm91cF9jbHVzdGVyZWRfcmVkdWNlX29yKCB1aW50IHZhbHVlLCB1aW50IGNsdXN0ZXJzaXplICk7CmxvbmcgICAgX19vdmxkIHN1Yl9ncm91cF9jbHVzdGVyZWRfcmVkdWNlX29yKCBsb25nIHZhbHVlLCB1aW50IGNsdXN0ZXJzaXplICk7CnVsb25nICAgX19vdmxkIHN1Yl9ncm91cF9jbHVzdGVyZWRfcmVkdWNlX29yKCB1bG9uZyB2YWx1ZSwgdWludCBjbHVzdGVyc2l6ZSApOwoKY2hhciAgICBfX292bGQgc3ViX2dyb3VwX2NsdXN0ZXJlZF9yZWR1Y2VfeG9yKCBjaGFyIHZhbHVlLCB1aW50IGNsdXN0ZXJzaXplICk7CnVjaGFyICAgX19vdmxkIHN1Yl9ncm91cF9jbHVzdGVyZWRfcmVkdWNlX3hvciggdWNoYXIgdmFsdWUsIHVpbnQgY2x1c3RlcnNpemUgKTsKc2hvcnQgICBfX292bGQgc3ViX2dyb3VwX2NsdXN0ZXJlZF9yZWR1Y2VfeG9yKCBzaG9ydCB2YWx1ZSwgdWludCBjbHVzdGVyc2l6ZSApOwp1c2hvcnQgIF9fb3ZsZCBzdWJfZ3JvdXBfY2x1c3RlcmVkX3JlZHVjZV94b3IoIHVzaG9ydCB2YWx1ZSwgdWludCBjbHVzdGVyc2l6ZSApOwppbnQgICAgIF9fb3ZsZCBzdWJfZ3JvdXBfY2x1c3RlcmVkX3JlZHVjZV94b3IoIGludCB2YWx1ZSwgdWludCBjbHVzdGVyc2l6ZSApOwp1aW50ICAgIF9fb3ZsZCBzdWJfZ3JvdXBfY2x1c3RlcmVkX3JlZHVjZV94b3IoIHVpbnQgdmFsdWUsIHVpbnQgY2x1c3RlcnNpemUgKTsKbG9uZyAgICBfX292bGQgc3ViX2dyb3VwX2NsdXN0ZXJlZF9yZWR1Y2VfeG9yKCBsb25nIHZhbHVlLCB1aW50IGNsdXN0ZXJzaXplICk7CnVsb25nICAgX19vdmxkIHN1Yl9ncm91cF9jbHVzdGVyZWRfcmVkdWNlX3hvciggdWxvbmcgdmFsdWUsIHVpbnQgY2x1c3RlcnNpemUgKTsKCmludCAgICAgX19vdmxkIHN1Yl9ncm91cF9jbHVzdGVyZWRfcmVkdWNlX2xvZ2ljYWxfYW5kKCBpbnQgcHJlZGljYXRlLCB1aW50IGNsdXN0ZXJzaXplICk7CmludCAgICAgX19vdmxkIHN1Yl9ncm91cF9jbHVzdGVyZWRfcmVkdWNlX2xvZ2ljYWxfb3IoIGludCBwcmVkaWNhdGUsIHVpbnQgY2x1c3RlcnNpemUgKTsKaW50ICAgICBfX292bGQgc3ViX2dyb3VwX2NsdXN0ZXJlZF9yZWR1Y2VfbG9naWNhbF94b3IoIGludCBwcmVkaWNhdGUsIHVpbnQgY2x1c3RlcnNpemUgKTsKCiNpZiBkZWZpbmVkKGNsX2tocl9mcDE2KQpoYWxmICAgIF9fb3ZsZCBzdWJfZ3JvdXBfY2x1c3RlcmVkX3JlZHVjZV9hZGQoIGhhbGYgdmFsdWUsIHVpbnQgY2x1c3RlcnNpemUgKTsKaGFsZiAgICBfX292bGQgc3ViX2dyb3VwX2NsdXN0ZXJlZF9yZWR1Y2VfbXVsKCBoYWxmIHZhbHVlLCB1aW50IGNsdXN0ZXJzaXplICk7CmhhbGYgICAgX19vdmxkIHN1Yl9ncm91cF9jbHVzdGVyZWRfcmVkdWNlX21pbiggaGFsZiB2YWx1ZSwgdWludCBjbHVzdGVyc2l6ZSApOwpoYWxmICAgIF9fb3ZsZCBzdWJfZ3JvdXBfY2x1c3RlcmVkX3JlZHVjZV9tYXgoIGhhbGYgdmFsdWUsIHVpbnQgY2x1c3RlcnNpemUgKTsKI2VuZGlmIC8vIGNsX2tocl9mcDE2CgojaWYgZGVmaW5lZChjbF9raHJfZnA2NCkKZG91YmxlICBfX292bGQgc3ViX2dyb3VwX2NsdXN0ZXJlZF9yZWR1Y2VfYWRkKCBkb3VibGUgdmFsdWUsIHVpbnQgY2x1c3RlcnNpemUgKTsKZG91YmxlICBfX292bGQgc3ViX2dyb3VwX2NsdXN0ZXJlZF9yZWR1Y2VfbXVsKCBkb3VibGUgdmFsdWUsIHVpbnQgY2x1c3RlcnNpemUgKTsKZG91YmxlICBfX292bGQgc3ViX2dyb3VwX2NsdXN0ZXJlZF9yZWR1Y2VfbWluKCBkb3VibGUgdmFsdWUsIHVpbnQgY2x1c3RlcnNpemUgKTsKZG91YmxlICBfX292bGQgc3ViX2dyb3VwX2NsdXN0ZXJlZF9yZWR1Y2VfbWF4KCBkb3VibGUgdmFsdWUsIHVpbnQgY2x1c3RlcnNpemUgKTsKI2VuZGlmIC8vIGNsX2tocl9mcDY0CgojZW5kaWYgLy8gY2xfa2hyX3N1Ymdyb3VwX2NsdXN0ZXJlZF9yZWR1Y2UKCiNpZiBkZWZpbmVkKGNsX2tocl9leHRlbmRlZF9iaXRfb3BzKQpjaGFyIF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfaW5zZXJ0KGNoYXIsIGNoYXIsIHVpbnQsIHVpbnQpOwp1Y2hhciBfX292bGQgX19jbmZuIGJpdGZpZWxkX2luc2VydCh1Y2hhciwgdWNoYXIsIHVpbnQsIHVpbnQpOwpzaG9ydCBfX292bGQgX19jbmZuIGJpdGZpZWxkX2luc2VydChzaG9ydCwgc2hvcnQsIHVpbnQsIHVpbnQpOwp1c2hvcnQgX19vdmxkIF9fY25mbiBiaXRmaWVsZF9pbnNlcnQodXNob3J0LCB1c2hvcnQsIHVpbnQsIHVpbnQpOwppbnQgX19vdmxkIF9fY25mbiBiaXRmaWVsZF9pbnNlcnQoaW50LCBpbnQsIHVpbnQsIHVpbnQpOwp1aW50IF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfaW5zZXJ0KHVpbnQsIHVpbnQsIHVpbnQsIHVpbnQpOwpsb25nIF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfaW5zZXJ0KGxvbmcsIGxvbmcsIHVpbnQsIHVpbnQpOwp1bG9uZyBfX292bGQgX19jbmZuIGJpdGZpZWxkX2luc2VydCh1bG9uZywgdWxvbmcsIHVpbnQsIHVpbnQpOwpjaGFyMiBfX292bGQgX19jbmZuIGJpdGZpZWxkX2luc2VydChjaGFyMiwgY2hhcjIsIHVpbnQsIHVpbnQpOwp1Y2hhcjIgX19vdmxkIF9fY25mbiBiaXRmaWVsZF9pbnNlcnQodWNoYXIyLCB1Y2hhcjIsIHVpbnQsIHVpbnQpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBiaXRmaWVsZF9pbnNlcnQoc2hvcnQyLCBzaG9ydDIsIHVpbnQsIHVpbnQpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfaW5zZXJ0KHVzaG9ydDIsIHVzaG9ydDIsIHVpbnQsIHVpbnQpOwppbnQyIF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfaW5zZXJ0KGludDIsIGludDIsIHVpbnQsIHVpbnQpOwp1aW50MiBfX292bGQgX19jbmZuIGJpdGZpZWxkX2luc2VydCh1aW50MiwgdWludDIsIHVpbnQsIHVpbnQpOwpsb25nMiBfX292bGQgX19jbmZuIGJpdGZpZWxkX2luc2VydChsb25nMiwgbG9uZzIsIHVpbnQsIHVpbnQpOwp1bG9uZzIgX19vdmxkIF9fY25mbiBiaXRmaWVsZF9pbnNlcnQodWxvbmcyLCB1bG9uZzIsIHVpbnQsIHVpbnQpOwpjaGFyMyBfX292bGQgX19jbmZuIGJpdGZpZWxkX2luc2VydChjaGFyMywgY2hhcjMsIHVpbnQsIHVpbnQpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBiaXRmaWVsZF9pbnNlcnQodWNoYXIzLCB1Y2hhcjMsIHVpbnQsIHVpbnQpOwpzaG9ydDMgX19vdmxkIF9fY25mbiBiaXRmaWVsZF9pbnNlcnQoc2hvcnQzLCBzaG9ydDMsIHVpbnQsIHVpbnQpOwp1c2hvcnQzIF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfaW5zZXJ0KHVzaG9ydDMsIHVzaG9ydDMsIHVpbnQsIHVpbnQpOwppbnQzIF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfaW5zZXJ0KGludDMsIGludDMsIHVpbnQsIHVpbnQpOwp1aW50MyBfX292bGQgX19jbmZuIGJpdGZpZWxkX2luc2VydCh1aW50MywgdWludDMsIHVpbnQsIHVpbnQpOwpsb25nMyBfX292bGQgX19jbmZuIGJpdGZpZWxkX2luc2VydChsb25nMywgbG9uZzMsIHVpbnQsIHVpbnQpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBiaXRmaWVsZF9pbnNlcnQodWxvbmczLCB1bG9uZzMsIHVpbnQsIHVpbnQpOwpjaGFyNCBfX292bGQgX19jbmZuIGJpdGZpZWxkX2luc2VydChjaGFyNCwgY2hhcjQsIHVpbnQsIHVpbnQpOwp1Y2hhcjQgX19vdmxkIF9fY25mbiBiaXRmaWVsZF9pbnNlcnQodWNoYXI0LCB1Y2hhcjQsIHVpbnQsIHVpbnQpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBiaXRmaWVsZF9pbnNlcnQoc2hvcnQ0LCBzaG9ydDQsIHVpbnQsIHVpbnQpOwp1c2hvcnQ0IF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfaW5zZXJ0KHVzaG9ydDQsIHVzaG9ydDQsIHVpbnQsIHVpbnQpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfaW5zZXJ0KGludDQsIGludDQsIHVpbnQsIHVpbnQpOwp1aW50NCBfX292bGQgX19jbmZuIGJpdGZpZWxkX2luc2VydCh1aW50NCwgdWludDQsIHVpbnQsIHVpbnQpOwpsb25nNCBfX292bGQgX19jbmZuIGJpdGZpZWxkX2luc2VydChsb25nNCwgbG9uZzQsIHVpbnQsIHVpbnQpOwp1bG9uZzQgX19vdmxkIF9fY25mbiBiaXRmaWVsZF9pbnNlcnQodWxvbmc0LCB1bG9uZzQsIHVpbnQsIHVpbnQpOwpjaGFyOCBfX292bGQgX19jbmZuIGJpdGZpZWxkX2luc2VydChjaGFyOCwgY2hhcjgsIHVpbnQsIHVpbnQpOwp1Y2hhcjggX19vdmxkIF9fY25mbiBiaXRmaWVsZF9pbnNlcnQodWNoYXI4LCB1Y2hhcjgsIHVpbnQsIHVpbnQpOwpzaG9ydDggX19vdmxkIF9fY25mbiBiaXRmaWVsZF9pbnNlcnQoc2hvcnQ4LCBzaG9ydDgsIHVpbnQsIHVpbnQpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfaW5zZXJ0KHVzaG9ydDgsIHVzaG9ydDgsIHVpbnQsIHVpbnQpOwppbnQ4IF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfaW5zZXJ0KGludDgsIGludDgsIHVpbnQsIHVpbnQpOwp1aW50OCBfX292bGQgX19jbmZuIGJpdGZpZWxkX2luc2VydCh1aW50OCwgdWludDgsIHVpbnQsIHVpbnQpOwpsb25nOCBfX292bGQgX19jbmZuIGJpdGZpZWxkX2luc2VydChsb25nOCwgbG9uZzgsIHVpbnQsIHVpbnQpOwp1bG9uZzggX19vdmxkIF9fY25mbiBiaXRmaWVsZF9pbnNlcnQodWxvbmc4LCB1bG9uZzgsIHVpbnQsIHVpbnQpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBiaXRmaWVsZF9pbnNlcnQoY2hhcjE2LCBjaGFyMTYsIHVpbnQsIHVpbnQpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfaW5zZXJ0KHVjaGFyMTYsIHVjaGFyMTYsIHVpbnQsIHVpbnQpOwpzaG9ydDE2IF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfaW5zZXJ0KHNob3J0MTYsIHNob3J0MTYsIHVpbnQsIHVpbnQpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGJpdGZpZWxkX2luc2VydCh1c2hvcnQxNiwgdXNob3J0MTYsIHVpbnQsIHVpbnQpOwppbnQxNiBfX292bGQgX19jbmZuIGJpdGZpZWxkX2luc2VydChpbnQxNiwgaW50MTYsIHVpbnQsIHVpbnQpOwp1aW50MTYgX19vdmxkIF9fY25mbiBiaXRmaWVsZF9pbnNlcnQodWludDE2LCB1aW50MTYsIHVpbnQsIHVpbnQpOwpsb25nMTYgX19vdmxkIF9fY25mbiBiaXRmaWVsZF9pbnNlcnQobG9uZzE2LCBsb25nMTYsIHVpbnQsIHVpbnQpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfaW5zZXJ0KHVsb25nMTYsIHVsb25nMTYsIHVpbnQsIHVpbnQpOwoKY2hhciBfX292bGQgX19jbmZuIGJpdGZpZWxkX2V4dHJhY3Rfc2lnbmVkKGNoYXIsIHVpbnQsIHVpbnQpOwpzaG9ydCBfX292bGQgX19jbmZuIGJpdGZpZWxkX2V4dHJhY3Rfc2lnbmVkKHNob3J0LCB1aW50LCB1aW50KTsKaW50IF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfZXh0cmFjdF9zaWduZWQoaW50LCB1aW50LCB1aW50KTsKbG9uZyBfX292bGQgX19jbmZuIGJpdGZpZWxkX2V4dHJhY3Rfc2lnbmVkKGxvbmcsIHVpbnQsIHVpbnQpOwpjaGFyMiBfX292bGQgX19jbmZuIGJpdGZpZWxkX2V4dHJhY3Rfc2lnbmVkKGNoYXIyLCB1aW50LCB1aW50KTsKc2hvcnQyIF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfZXh0cmFjdF9zaWduZWQoc2hvcnQyLCB1aW50LCB1aW50KTsKaW50MiBfX292bGQgX19jbmZuIGJpdGZpZWxkX2V4dHJhY3Rfc2lnbmVkKGludDIsIHVpbnQsIHVpbnQpOwpsb25nMiBfX292bGQgX19jbmZuIGJpdGZpZWxkX2V4dHJhY3Rfc2lnbmVkKGxvbmcyLCB1aW50LCB1aW50KTsKY2hhcjMgX19vdmxkIF9fY25mbiBiaXRmaWVsZF9leHRyYWN0X3NpZ25lZChjaGFyMywgdWludCwgdWludCk7CnNob3J0MyBfX292bGQgX19jbmZuIGJpdGZpZWxkX2V4dHJhY3Rfc2lnbmVkKHNob3J0MywgdWludCwgdWludCk7CmludDMgX19vdmxkIF9fY25mbiBiaXRmaWVsZF9leHRyYWN0X3NpZ25lZChpbnQzLCB1aW50LCB1aW50KTsKbG9uZzMgX19vdmxkIF9fY25mbiBiaXRmaWVsZF9leHRyYWN0X3NpZ25lZChsb25nMywgdWludCwgdWludCk7CmNoYXI0IF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfZXh0cmFjdF9zaWduZWQoY2hhcjQsIHVpbnQsIHVpbnQpOwpzaG9ydDQgX19vdmxkIF9fY25mbiBiaXRmaWVsZF9leHRyYWN0X3NpZ25lZChzaG9ydDQsIHVpbnQsIHVpbnQpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfZXh0cmFjdF9zaWduZWQoaW50NCwgdWludCwgdWludCk7Cmxvbmc0IF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfZXh0cmFjdF9zaWduZWQobG9uZzQsIHVpbnQsIHVpbnQpOwpjaGFyOCBfX292bGQgX19jbmZuIGJpdGZpZWxkX2V4dHJhY3Rfc2lnbmVkKGNoYXI4LCB1aW50LCB1aW50KTsKc2hvcnQ4IF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfZXh0cmFjdF9zaWduZWQoc2hvcnQ4LCB1aW50LCB1aW50KTsKaW50OCBfX292bGQgX19jbmZuIGJpdGZpZWxkX2V4dHJhY3Rfc2lnbmVkKGludDgsIHVpbnQsIHVpbnQpOwpsb25nOCBfX292bGQgX19jbmZuIGJpdGZpZWxkX2V4dHJhY3Rfc2lnbmVkKGxvbmc4LCB1aW50LCB1aW50KTsKY2hhcjE2IF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfZXh0cmFjdF9zaWduZWQoY2hhcjE2LCB1aW50LCB1aW50KTsKc2hvcnQxNiBfX292bGQgX19jbmZuIGJpdGZpZWxkX2V4dHJhY3Rfc2lnbmVkKHNob3J0MTYsIHVpbnQsIHVpbnQpOwppbnQxNiBfX292bGQgX19jbmZuIGJpdGZpZWxkX2V4dHJhY3Rfc2lnbmVkKGludDE2LCB1aW50LCB1aW50KTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfZXh0cmFjdF9zaWduZWQobG9uZzE2LCB1aW50LCB1aW50KTsKCmNoYXIgX19vdmxkIF9fY25mbiBiaXRmaWVsZF9leHRyYWN0X3NpZ25lZCh1Y2hhciwgdWludCwgdWludCk7CnNob3J0IF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfZXh0cmFjdF9zaWduZWQodXNob3J0LCB1aW50LCB1aW50KTsKaW50IF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfZXh0cmFjdF9zaWduZWQodWludCwgdWludCwgdWludCk7CmxvbmcgX19vdmxkIF9fY25mbiBiaXRmaWVsZF9leHRyYWN0X3NpZ25lZCh1bG9uZywgdWludCwgdWludCk7CmNoYXIyIF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfZXh0cmFjdF9zaWduZWQodWNoYXIyLCB1aW50LCB1aW50KTsKc2hvcnQyIF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfZXh0cmFjdF9zaWduZWQodXNob3J0MiwgdWludCwgdWludCk7CmludDIgX19vdmxkIF9fY25mbiBiaXRmaWVsZF9leHRyYWN0X3NpZ25lZCh1aW50MiwgdWludCwgdWludCk7CmxvbmcyIF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfZXh0cmFjdF9zaWduZWQodWxvbmcyLCB1aW50LCB1aW50KTsKY2hhcjMgX19vdmxkIF9fY25mbiBiaXRmaWVsZF9leHRyYWN0X3NpZ25lZCh1Y2hhcjMsIHVpbnQsIHVpbnQpOwpzaG9ydDMgX19vdmxkIF9fY25mbiBiaXRmaWVsZF9leHRyYWN0X3NpZ25lZCh1c2hvcnQzLCB1aW50LCB1aW50KTsKaW50MyBfX292bGQgX19jbmZuIGJpdGZpZWxkX2V4dHJhY3Rfc2lnbmVkKHVpbnQzLCB1aW50LCB1aW50KTsKbG9uZzMgX19vdmxkIF9fY25mbiBiaXRmaWVsZF9leHRyYWN0X3NpZ25lZCh1bG9uZzMsIHVpbnQsIHVpbnQpOwpjaGFyNCBfX292bGQgX19jbmZuIGJpdGZpZWxkX2V4dHJhY3Rfc2lnbmVkKHVjaGFyNCwgdWludCwgdWludCk7CnNob3J0NCBfX292bGQgX19jbmZuIGJpdGZpZWxkX2V4dHJhY3Rfc2lnbmVkKHVzaG9ydDQsIHVpbnQsIHVpbnQpOwppbnQ0IF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfZXh0cmFjdF9zaWduZWQodWludDQsIHVpbnQsIHVpbnQpOwpsb25nNCBfX292bGQgX19jbmZuIGJpdGZpZWxkX2V4dHJhY3Rfc2lnbmVkKHVsb25nNCwgdWludCwgdWludCk7CmNoYXI4IF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfZXh0cmFjdF9zaWduZWQodWNoYXI4LCB1aW50LCB1aW50KTsKc2hvcnQ4IF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfZXh0cmFjdF9zaWduZWQodXNob3J0OCwgdWludCwgdWludCk7CmludDggX19vdmxkIF9fY25mbiBiaXRmaWVsZF9leHRyYWN0X3NpZ25lZCh1aW50OCwgdWludCwgdWludCk7Cmxvbmc4IF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfZXh0cmFjdF9zaWduZWQodWxvbmc4LCB1aW50LCB1aW50KTsKY2hhcjE2IF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfZXh0cmFjdF9zaWduZWQodWNoYXIxNiwgdWludCwgdWludCk7CnNob3J0MTYgX19vdmxkIF9fY25mbiBiaXRmaWVsZF9leHRyYWN0X3NpZ25lZCh1c2hvcnQxNiwgdWludCwgdWludCk7CmludDE2IF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfZXh0cmFjdF9zaWduZWQodWludDE2LCB1aW50LCB1aW50KTsKbG9uZzE2IF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfZXh0cmFjdF9zaWduZWQodWxvbmcxNiwgdWludCwgdWludCk7Cgp1Y2hhciBfX292bGQgX19jbmZuIGJpdGZpZWxkX2V4dHJhY3RfdW5zaWduZWQoY2hhciwgdWludCwgdWludCk7CnVzaG9ydCBfX292bGQgX19jbmZuIGJpdGZpZWxkX2V4dHJhY3RfdW5zaWduZWQoc2hvcnQsIHVpbnQsIHVpbnQpOwp1aW50IF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfZXh0cmFjdF91bnNpZ25lZChpbnQsIHVpbnQsIHVpbnQpOwp1bG9uZyBfX292bGQgX19jbmZuIGJpdGZpZWxkX2V4dHJhY3RfdW5zaWduZWQobG9uZywgdWludCwgdWludCk7CnVjaGFyMiBfX292bGQgX19jbmZuIGJpdGZpZWxkX2V4dHJhY3RfdW5zaWduZWQoY2hhcjIsIHVpbnQsIHVpbnQpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfZXh0cmFjdF91bnNpZ25lZChzaG9ydDIsIHVpbnQsIHVpbnQpOwp1aW50MiBfX292bGQgX19jbmZuIGJpdGZpZWxkX2V4dHJhY3RfdW5zaWduZWQoaW50MiwgdWludCwgdWludCk7CnVsb25nMiBfX292bGQgX19jbmZuIGJpdGZpZWxkX2V4dHJhY3RfdW5zaWduZWQobG9uZzIsIHVpbnQsIHVpbnQpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBiaXRmaWVsZF9leHRyYWN0X3Vuc2lnbmVkKGNoYXIzLCB1aW50LCB1aW50KTsKdXNob3J0MyBfX292bGQgX19jbmZuIGJpdGZpZWxkX2V4dHJhY3RfdW5zaWduZWQoc2hvcnQzLCB1aW50LCB1aW50KTsKdWludDMgX19vdmxkIF9fY25mbiBiaXRmaWVsZF9leHRyYWN0X3Vuc2lnbmVkKGludDMsIHVpbnQsIHVpbnQpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBiaXRmaWVsZF9leHRyYWN0X3Vuc2lnbmVkKGxvbmczLCB1aW50LCB1aW50KTsKdWNoYXI0IF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfZXh0cmFjdF91bnNpZ25lZChjaGFyNCwgdWludCwgdWludCk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBiaXRmaWVsZF9leHRyYWN0X3Vuc2lnbmVkKHNob3J0NCwgdWludCwgdWludCk7CnVpbnQ0IF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfZXh0cmFjdF91bnNpZ25lZChpbnQ0LCB1aW50LCB1aW50KTsKdWxvbmc0IF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfZXh0cmFjdF91bnNpZ25lZChsb25nNCwgdWludCwgdWludCk7CnVjaGFyOCBfX292bGQgX19jbmZuIGJpdGZpZWxkX2V4dHJhY3RfdW5zaWduZWQoY2hhcjgsIHVpbnQsIHVpbnQpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfZXh0cmFjdF91bnNpZ25lZChzaG9ydDgsIHVpbnQsIHVpbnQpOwp1aW50OCBfX292bGQgX19jbmZuIGJpdGZpZWxkX2V4dHJhY3RfdW5zaWduZWQoaW50OCwgdWludCwgdWludCk7CnVsb25nOCBfX292bGQgX19jbmZuIGJpdGZpZWxkX2V4dHJhY3RfdW5zaWduZWQobG9uZzgsIHVpbnQsIHVpbnQpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfZXh0cmFjdF91bnNpZ25lZChjaGFyMTYsIHVpbnQsIHVpbnQpOwp1c2hvcnQxNiBfX292bGQgX19jbmZuIGJpdGZpZWxkX2V4dHJhY3RfdW5zaWduZWQoc2hvcnQxNiwgdWludCwgdWludCk7CnVpbnQxNiBfX292bGQgX19jbmZuIGJpdGZpZWxkX2V4dHJhY3RfdW5zaWduZWQoaW50MTYsIHVpbnQsIHVpbnQpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfZXh0cmFjdF91bnNpZ25lZChsb25nMTYsIHVpbnQsIHVpbnQpOwoKdWNoYXIgX19vdmxkIF9fY25mbiBiaXRmaWVsZF9leHRyYWN0X3Vuc2lnbmVkKHVjaGFyLCB1aW50LCB1aW50KTsKdXNob3J0IF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfZXh0cmFjdF91bnNpZ25lZCh1c2hvcnQsIHVpbnQsIHVpbnQpOwp1aW50IF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfZXh0cmFjdF91bnNpZ25lZCh1aW50LCB1aW50LCB1aW50KTsKdWxvbmcgX19vdmxkIF9fY25mbiBiaXRmaWVsZF9leHRyYWN0X3Vuc2lnbmVkKHVsb25nLCB1aW50LCB1aW50KTsKdWNoYXIyIF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfZXh0cmFjdF91bnNpZ25lZCh1Y2hhcjIsIHVpbnQsIHVpbnQpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfZXh0cmFjdF91bnNpZ25lZCh1c2hvcnQyLCB1aW50LCB1aW50KTsKdWludDIgX19vdmxkIF9fY25mbiBiaXRmaWVsZF9leHRyYWN0X3Vuc2lnbmVkKHVpbnQyLCB1aW50LCB1aW50KTsKdWxvbmcyIF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfZXh0cmFjdF91bnNpZ25lZCh1bG9uZzIsIHVpbnQsIHVpbnQpOwp1Y2hhcjMgX19vdmxkIF9fY25mbiBiaXRmaWVsZF9leHRyYWN0X3Vuc2lnbmVkKHVjaGFyMywgdWludCwgdWludCk7CnVzaG9ydDMgX19vdmxkIF9fY25mbiBiaXRmaWVsZF9leHRyYWN0X3Vuc2lnbmVkKHVzaG9ydDMsIHVpbnQsIHVpbnQpOwp1aW50MyBfX292bGQgX19jbmZuIGJpdGZpZWxkX2V4dHJhY3RfdW5zaWduZWQodWludDMsIHVpbnQsIHVpbnQpOwp1bG9uZzMgX19vdmxkIF9fY25mbiBiaXRmaWVsZF9leHRyYWN0X3Vuc2lnbmVkKHVsb25nMywgdWludCwgdWludCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGJpdGZpZWxkX2V4dHJhY3RfdW5zaWduZWQodWNoYXI0LCB1aW50LCB1aW50KTsKdXNob3J0NCBfX292bGQgX19jbmZuIGJpdGZpZWxkX2V4dHJhY3RfdW5zaWduZWQodXNob3J0NCwgdWludCwgdWludCk7CnVpbnQ0IF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfZXh0cmFjdF91bnNpZ25lZCh1aW50NCwgdWludCwgdWludCk7CnVsb25nNCBfX292bGQgX19jbmZuIGJpdGZpZWxkX2V4dHJhY3RfdW5zaWduZWQodWxvbmc0LCB1aW50LCB1aW50KTsKdWNoYXI4IF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfZXh0cmFjdF91bnNpZ25lZCh1Y2hhcjgsIHVpbnQsIHVpbnQpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfZXh0cmFjdF91bnNpZ25lZCh1c2hvcnQ4LCB1aW50LCB1aW50KTsKdWludDggX19vdmxkIF9fY25mbiBiaXRmaWVsZF9leHRyYWN0X3Vuc2lnbmVkKHVpbnQ4LCB1aW50LCB1aW50KTsKdWxvbmc4IF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfZXh0cmFjdF91bnNpZ25lZCh1bG9uZzgsIHVpbnQsIHVpbnQpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfZXh0cmFjdF91bnNpZ25lZCh1Y2hhcjE2LCB1aW50LCB1aW50KTsKdXNob3J0MTYgX19vdmxkIF9fY25mbiBiaXRmaWVsZF9leHRyYWN0X3Vuc2lnbmVkKHVzaG9ydDE2LCB1aW50LCB1aW50KTsKdWludDE2IF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfZXh0cmFjdF91bnNpZ25lZCh1aW50MTYsIHVpbnQsIHVpbnQpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gYml0ZmllbGRfZXh0cmFjdF91bnNpZ25lZCh1bG9uZzE2LCB1aW50LCB1aW50KTsKCmNoYXIgX19vdmxkIF9fY25mbiBiaXRfcmV2ZXJzZShjaGFyKTsKdWNoYXIgX19vdmxkIF9fY25mbiBiaXRfcmV2ZXJzZSh1Y2hhcik7CnNob3J0IF9fb3ZsZCBfX2NuZm4gYml0X3JldmVyc2Uoc2hvcnQpOwp1c2hvcnQgX19vdmxkIF9fY25mbiBiaXRfcmV2ZXJzZSh1c2hvcnQpOwppbnQgX19vdmxkIF9fY25mbiBiaXRfcmV2ZXJzZShpbnQpOwp1aW50IF9fb3ZsZCBfX2NuZm4gYml0X3JldmVyc2UodWludCk7CmxvbmcgX19vdmxkIF9fY25mbiBiaXRfcmV2ZXJzZShsb25nKTsKdWxvbmcgX19vdmxkIF9fY25mbiBiaXRfcmV2ZXJzZSh1bG9uZyk7CmNoYXIyIF9fb3ZsZCBfX2NuZm4gYml0X3JldmVyc2UoY2hhcjIpOwp1Y2hhcjIgX19vdmxkIF9fY25mbiBiaXRfcmV2ZXJzZSh1Y2hhcjIpOwpzaG9ydDIgX19vdmxkIF9fY25mbiBiaXRfcmV2ZXJzZShzaG9ydDIpOwp1c2hvcnQyIF9fb3ZsZCBfX2NuZm4gYml0X3JldmVyc2UodXNob3J0Mik7CmludDIgX19vdmxkIF9fY25mbiBiaXRfcmV2ZXJzZShpbnQyKTsKdWludDIgX19vdmxkIF9fY25mbiBiaXRfcmV2ZXJzZSh1aW50Mik7CmxvbmcyIF9fb3ZsZCBfX2NuZm4gYml0X3JldmVyc2UobG9uZzIpOwp1bG9uZzIgX19vdmxkIF9fY25mbiBiaXRfcmV2ZXJzZSh1bG9uZzIpOwpjaGFyMyBfX292bGQgX19jbmZuIGJpdF9yZXZlcnNlKGNoYXIzKTsKdWNoYXIzIF9fb3ZsZCBfX2NuZm4gYml0X3JldmVyc2UodWNoYXIzKTsKc2hvcnQzIF9fb3ZsZCBfX2NuZm4gYml0X3JldmVyc2Uoc2hvcnQzKTsKdXNob3J0MyBfX292bGQgX19jbmZuIGJpdF9yZXZlcnNlKHVzaG9ydDMpOwppbnQzIF9fb3ZsZCBfX2NuZm4gYml0X3JldmVyc2UoaW50Myk7CnVpbnQzIF9fb3ZsZCBfX2NuZm4gYml0X3JldmVyc2UodWludDMpOwpsb25nMyBfX292bGQgX19jbmZuIGJpdF9yZXZlcnNlKGxvbmczKTsKdWxvbmczIF9fb3ZsZCBfX2NuZm4gYml0X3JldmVyc2UodWxvbmczKTsKY2hhcjQgX19vdmxkIF9fY25mbiBiaXRfcmV2ZXJzZShjaGFyNCk7CnVjaGFyNCBfX292bGQgX19jbmZuIGJpdF9yZXZlcnNlKHVjaGFyNCk7CnNob3J0NCBfX292bGQgX19jbmZuIGJpdF9yZXZlcnNlKHNob3J0NCk7CnVzaG9ydDQgX19vdmxkIF9fY25mbiBiaXRfcmV2ZXJzZSh1c2hvcnQ0KTsKaW50NCBfX292bGQgX19jbmZuIGJpdF9yZXZlcnNlKGludDQpOwp1aW50NCBfX292bGQgX19jbmZuIGJpdF9yZXZlcnNlKHVpbnQ0KTsKbG9uZzQgX19vdmxkIF9fY25mbiBiaXRfcmV2ZXJzZShsb25nNCk7CnVsb25nNCBfX292bGQgX19jbmZuIGJpdF9yZXZlcnNlKHVsb25nNCk7CmNoYXI4IF9fb3ZsZCBfX2NuZm4gYml0X3JldmVyc2UoY2hhcjgpOwp1Y2hhcjggX19vdmxkIF9fY25mbiBiaXRfcmV2ZXJzZSh1Y2hhcjgpOwpzaG9ydDggX19vdmxkIF9fY25mbiBiaXRfcmV2ZXJzZShzaG9ydDgpOwp1c2hvcnQ4IF9fb3ZsZCBfX2NuZm4gYml0X3JldmVyc2UodXNob3J0OCk7CmludDggX19vdmxkIF9fY25mbiBiaXRfcmV2ZXJzZShpbnQ4KTsKdWludDggX19vdmxkIF9fY25mbiBiaXRfcmV2ZXJzZSh1aW50OCk7Cmxvbmc4IF9fb3ZsZCBfX2NuZm4gYml0X3JldmVyc2UobG9uZzgpOwp1bG9uZzggX19vdmxkIF9fY25mbiBiaXRfcmV2ZXJzZSh1bG9uZzgpOwpjaGFyMTYgX19vdmxkIF9fY25mbiBiaXRfcmV2ZXJzZShjaGFyMTYpOwp1Y2hhcjE2IF9fb3ZsZCBfX2NuZm4gYml0X3JldmVyc2UodWNoYXIxNik7CnNob3J0MTYgX19vdmxkIF9fY25mbiBiaXRfcmV2ZXJzZShzaG9ydDE2KTsKdXNob3J0MTYgX19vdmxkIF9fY25mbiBiaXRfcmV2ZXJzZSh1c2hvcnQxNik7CmludDE2IF9fb3ZsZCBfX2NuZm4gYml0X3JldmVyc2UoaW50MTYpOwp1aW50MTYgX19vdmxkIF9fY25mbiBiaXRfcmV2ZXJzZSh1aW50MTYpOwpsb25nMTYgX19vdmxkIF9fY25mbiBiaXRfcmV2ZXJzZShsb25nMTYpOwp1bG9uZzE2IF9fb3ZsZCBfX2NuZm4gYml0X3JldmVyc2UodWxvbmcxNik7CiNlbmRpZiAvLyBjbF9raHJfZXh0ZW5kZWRfYml0X29wcwoKI2lmIGRlZmluZWQoX19vcGVuY2xfY19pbnRlZ2VyX2RvdF9wcm9kdWN0X2lucHV0XzR4OGJpdCkKdWludCBfX292bGQgX19jbmZuIGRvdCh1Y2hhcjQsIHVjaGFyNCk7CmludCBfX292bGQgX19jbmZuIGRvdChjaGFyNCwgY2hhcjQpOwppbnQgX19vdmxkIF9fY25mbiBkb3QodWNoYXI0LCBjaGFyNCk7CmludCBfX292bGQgX19jbmZuIGRvdChjaGFyNCwgdWNoYXI0KTsKCnVpbnQgX19vdmxkIF9fY25mbiBkb3RfYWNjX3NhdCh1Y2hhcjQsIHVjaGFyNCwgdWludCk7CmludCBfX292bGQgX19jbmZuIGRvdF9hY2Nfc2F0KGNoYXI0LCBjaGFyNCwgaW50KTsKaW50IF9fb3ZsZCBfX2NuZm4gZG90X2FjY19zYXQodWNoYXI0LCBjaGFyNCwgaW50KTsKaW50IF9fb3ZsZCBfX2NuZm4gZG90X2FjY19zYXQoY2hhcjQsIHVjaGFyNCwgaW50KTsKI2VuZGlmIC8vIF9fb3BlbmNsX2NfaW50ZWdlcl9kb3RfcHJvZHVjdF9pbnB1dF80eDhiaXQKCiNpZiBkZWZpbmVkKF9fb3BlbmNsX2NfaW50ZWdlcl9kb3RfcHJvZHVjdF9pbnB1dF80eDhiaXRfcGFja2VkKQp1aW50IF9fb3ZsZCBfX2NuZm4gZG90XzR4OHBhY2tlZF91dV91aW50KHVpbnQsIHVpbnQpOwppbnQgX19vdmxkIF9fY25mbiBkb3RfNHg4cGFja2VkX3NzX2ludCh1aW50LCB1aW50KTsKaW50IF9fb3ZsZCBfX2NuZm4gZG90XzR4OHBhY2tlZF91c19pbnQodWludCwgdWludCk7CmludCBfX292bGQgX19jbmZuIGRvdF80eDhwYWNrZWRfc3VfaW50KHVpbnQsIHVpbnQpOwoKdWludCBfX292bGQgX19jbmZuIGRvdF9hY2Nfc2F0XzR4OHBhY2tlZF91dV91aW50KHVpbnQsIHVpbnQsIHVpbnQpOwppbnQgX19vdmxkIF9fY25mbiBkb3RfYWNjX3NhdF80eDhwYWNrZWRfc3NfaW50KHVpbnQsIHVpbnQsIGludCk7CmludCBfX292bGQgX19jbmZuIGRvdF9hY2Nfc2F0XzR4OHBhY2tlZF91c19pbnQodWludCwgdWludCwgaW50KTsKaW50IF9fb3ZsZCBfX2NuZm4gZG90X2FjY19zYXRfNHg4cGFja2VkX3N1X2ludCh1aW50LCB1aW50LCBpbnQpOwojZW5kaWYgLy8gX19vcGVuY2xfY19pbnRlZ2VyX2RvdF9wcm9kdWN0X2lucHV0XzR4OGJpdF9wYWNrZWQKCiNpZiBkZWZpbmVkKGNsX2ludGVsX3N1Ymdyb3VwcykKLy8gSW50ZWwtU3BlY2lmaWMgU3ViIEdyb3VwIEZ1bmN0aW9ucwpmbG9hdCAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NodWZmbGUoIGZsb2F0ICB4LCB1aW50IGMgKTsKZmxvYXQyICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlKCBmbG9hdDIgeCwgdWludCBjICk7CmZsb2F0MyAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfc2h1ZmZsZSggZmxvYXQzIHgsIHVpbnQgYyApOwpmbG9hdDQgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NodWZmbGUoIGZsb2F0NCB4LCB1aW50IGMgKTsKZmxvYXQ4ICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlKCBmbG9hdDggeCwgdWludCBjICk7CmZsb2F0MTYgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfc2h1ZmZsZSggZmxvYXQxNiB4LCB1aW50IGMgKTsKCmludCAgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfc2h1ZmZsZSggaW50ICB4LCB1aW50IGMgKTsKaW50MiAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlKCBpbnQyIHgsIHVpbnQgYyApOwppbnQzICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NodWZmbGUoIGludDMgeCwgdWludCBjICk7CmludDQgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfc2h1ZmZsZSggaW50NCB4LCB1aW50IGMgKTsKaW50OCAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlKCBpbnQ4IHgsIHVpbnQgYyApOwppbnQxNiAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NodWZmbGUoIGludDE2IHgsIHVpbnQgYyApOwoKdWludCAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlKCB1aW50ICB4LCB1aW50IGMgKTsKdWludDIgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlKCB1aW50MiB4LCB1aW50IGMgKTsKdWludDMgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlKCB1aW50MyB4LCB1aW50IGMgKTsKdWludDQgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlKCB1aW50NCB4LCB1aW50IGMgKTsKdWludDggICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlKCB1aW50OCB4LCB1aW50IGMgKTsKdWludDE2ICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlKCB1aW50MTYgeCwgdWludCBjICk7Cgpsb25nICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NodWZmbGUoIGxvbmcgeCwgdWludCBjICk7CnVsb25nICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfc2h1ZmZsZSggdWxvbmcgeCwgdWludCBjICk7CgpmbG9hdCAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NodWZmbGVfZG93biggZmxvYXQgIGN1ciwgZmxvYXQgIG5leHQsIHVpbnQgYyApOwpmbG9hdDIgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NodWZmbGVfZG93biggZmxvYXQyIGN1ciwgZmxvYXQyIG5leHQsIHVpbnQgYyApOwpmbG9hdDMgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NodWZmbGVfZG93biggZmxvYXQzIGN1ciwgZmxvYXQzIG5leHQsIHVpbnQgYyApOwpmbG9hdDQgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NodWZmbGVfZG93biggZmxvYXQ0IGN1ciwgZmxvYXQ0IG5leHQsIHVpbnQgYyApOwpmbG9hdDggIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NodWZmbGVfZG93biggZmxvYXQ4IGN1ciwgZmxvYXQ4IG5leHQsIHVpbnQgYyApOwpmbG9hdDE2IF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NodWZmbGVfZG93biggZmxvYXQxNiBjdXIsIGZsb2F0MTYgbmV4dCwgdWludCBjICk7CgppbnQgICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NodWZmbGVfZG93biggaW50ICBjdXIsIGludCAgbmV4dCwgdWludCBjICk7CmludDIgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfc2h1ZmZsZV9kb3duKCBpbnQyIGN1ciwgaW50MiBuZXh0LCB1aW50IGMgKTsKaW50MyAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlX2Rvd24oIGludDMgY3VyLCBpbnQzIG5leHQsIHVpbnQgYyApOwppbnQ0ICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NodWZmbGVfZG93biggaW50NCBjdXIsIGludDQgbmV4dCwgdWludCBjICk7CmludDggICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfc2h1ZmZsZV9kb3duKCBpbnQ4IGN1ciwgaW50OCBuZXh0LCB1aW50IGMgKTsKaW50MTYgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlX2Rvd24oIGludDE2IGN1ciwgaW50MTYgbmV4dCwgdWludCBjICk7Cgp1aW50ICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NodWZmbGVfZG93biggdWludCAgY3VyLCB1aW50ICBuZXh0LCB1aW50IGMgKTsKdWludDIgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlX2Rvd24oIHVpbnQyIGN1ciwgdWludDIgbmV4dCwgdWludCBjICk7CnVpbnQzICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfc2h1ZmZsZV9kb3duKCB1aW50MyBjdXIsIHVpbnQzIG5leHQsIHVpbnQgYyApOwp1aW50NCAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NodWZmbGVfZG93biggdWludDQgY3VyLCB1aW50NCBuZXh0LCB1aW50IGMgKTsKdWludDggICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlX2Rvd24oIHVpbnQ4IGN1ciwgdWludDggbmV4dCwgdWludCBjICk7CnVpbnQxNiAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfc2h1ZmZsZV9kb3duKCB1aW50MTYgY3VyLCB1aW50MTYgbmV4dCwgdWludCBjICk7Cgpsb25nICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NodWZmbGVfZG93biggbG9uZyBwcmV2LCBsb25nIGN1ciwgdWludCBjICk7CnVsb25nICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfc2h1ZmZsZV9kb3duKCB1bG9uZyBwcmV2LCB1bG9uZyBjdXIsIHVpbnQgYyApOwoKZmxvYXQgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlX3VwKCBmbG9hdCAgcHJldiwgZmxvYXQgIGN1ciwgdWludCBjICk7CmZsb2F0MiAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfc2h1ZmZsZV91cCggZmxvYXQyIHByZXYsIGZsb2F0MiBjdXIsIHVpbnQgYyApOwpmbG9hdDMgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NodWZmbGVfdXAoIGZsb2F0MyBwcmV2LCBmbG9hdDMgY3VyLCB1aW50IGMgKTsKZmxvYXQ0ICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlX3VwKCBmbG9hdDQgcHJldiwgZmxvYXQ0IGN1ciwgdWludCBjICk7CmZsb2F0OCAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfc2h1ZmZsZV91cCggZmxvYXQ4IHByZXYsIGZsb2F0OCBjdXIsIHVpbnQgYyApOwpmbG9hdDE2IF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NodWZmbGVfdXAoIGZsb2F0MTYgcHJldiwgZmxvYXQxNiBjdXIsIHVpbnQgYyApOwoKaW50ICAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlX3VwKCBpbnQgIHByZXYsIGludCAgY3VyLCB1aW50IGMgKTsKaW50MiAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlX3VwKCBpbnQyIHByZXYsIGludDIgY3VyLCB1aW50IGMgKTsKaW50MyAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlX3VwKCBpbnQzIHByZXYsIGludDMgY3VyLCB1aW50IGMgKTsKaW50NCAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlX3VwKCBpbnQ0IHByZXYsIGludDQgY3VyLCB1aW50IGMgKTsKaW50OCAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlX3VwKCBpbnQ4IHByZXYsIGludDggY3VyLCB1aW50IGMgKTsKaW50MTYgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlX3VwKCBpbnQxNiBwcmV2LCBpbnQxNiBjdXIsIHVpbnQgYyApOwoKdWludCAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlX3VwKCB1aW50ICBwcmV2LCB1aW50ICBjdXIsIHVpbnQgYyApOwp1aW50MiAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NodWZmbGVfdXAoIHVpbnQyIHByZXYsIHVpbnQyIGN1ciwgdWludCBjICk7CnVpbnQzICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfc2h1ZmZsZV91cCggdWludDMgcHJldiwgdWludDMgY3VyLCB1aW50IGMgKTsKdWludDQgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlX3VwKCB1aW50NCBwcmV2LCB1aW50NCBjdXIsIHVpbnQgYyApOwp1aW50OCAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NodWZmbGVfdXAoIHVpbnQ4IHByZXYsIHVpbnQ4IGN1ciwgdWludCBjICk7CnVpbnQxNiAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfc2h1ZmZsZV91cCggdWludDE2IHByZXYsIHVpbnQxNiBjdXIsIHVpbnQgYyApOwoKbG9uZyAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlX3VwKCBsb25nIHByZXYsIGxvbmcgY3VyLCB1aW50IGMgKTsKdWxvbmcgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlX3VwKCB1bG9uZyBwcmV2LCB1bG9uZyBjdXIsIHVpbnQgYyApOwoKZmxvYXQgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlX3hvciggZmxvYXQgIHgsIHVpbnQgYyApOwpmbG9hdDIgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NodWZmbGVfeG9yKCBmbG9hdDIgeCwgdWludCBjICk7CmZsb2F0MyAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfc2h1ZmZsZV94b3IoIGZsb2F0MyB4LCB1aW50IGMgKTsKZmxvYXQ0ICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlX3hvciggZmxvYXQ0IHgsIHVpbnQgYyApOwpmbG9hdDggIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NodWZmbGVfeG9yKCBmbG9hdDggeCwgdWludCBjICk7CmZsb2F0MTYgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfc2h1ZmZsZV94b3IoIGZsb2F0MTYgeCwgdWludCBjICk7CgppbnQgICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NodWZmbGVfeG9yKCBpbnQgIHgsIHVpbnQgYyApOwppbnQyICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NodWZmbGVfeG9yKCBpbnQyIHgsIHVpbnQgYyApOwppbnQzICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NodWZmbGVfeG9yKCBpbnQzIHgsIHVpbnQgYyApOwppbnQ0ICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NodWZmbGVfeG9yKCBpbnQ0IHgsIHVpbnQgYyApOwppbnQ4ICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NodWZmbGVfeG9yKCBpbnQ4IHgsIHVpbnQgYyApOwppbnQxNiAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NodWZmbGVfeG9yKCBpbnQxNiB4LCB1aW50IGMgKTsKCnVpbnQgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfc2h1ZmZsZV94b3IoIHVpbnQgIHgsIHVpbnQgYyApOwp1aW50MiAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NodWZmbGVfeG9yKCB1aW50MiB4LCB1aW50IGMgKTsKdWludDMgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlX3hvciggdWludDMgeCwgdWludCBjICk7CnVpbnQ0ICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfc2h1ZmZsZV94b3IoIHVpbnQ0IHgsIHVpbnQgYyApOwp1aW50OCAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NodWZmbGVfeG9yKCB1aW50OCB4LCB1aW50IGMgKTsKdWludDE2ICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlX3hvciggdWludDE2IHgsIHVpbnQgYyApOwoKbG9uZyAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlX3hvciggbG9uZyB4LCB1aW50IGMgKTsKdWxvbmcgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlX3hvciggdWxvbmcgeCwgdWludCBjICk7Cgp1aW50ICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX2Jsb2NrX3JlYWQoIHJlYWRfb25seSBpbWFnZTJkX3QgaW1hZ2UsIGludDIgY29vcmQgKTsKdWludDIgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9ibG9ja19yZWFkMiggcmVhZF9vbmx5IGltYWdlMmRfdCBpbWFnZSwgaW50MiBjb29yZCApOwp1aW50NCAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX2Jsb2NrX3JlYWQ0KCByZWFkX29ubHkgaW1hZ2UyZF90IGltYWdlLCBpbnQyIGNvb3JkICk7CnVpbnQ4ICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfYmxvY2tfcmVhZDgoIHJlYWRfb25seSBpbWFnZTJkX3QgaW1hZ2UsIGludDIgY29vcmQgKTsKCiNpZiBkZWZpbmVkKF9fT1BFTkNMX0NQUF9WRVJTSU9OX18pIHx8IChfX09QRU5DTF9DX1ZFUlNJT05fXyA+PSBDTF9WRVJTSU9OXzJfMCkKdWludCAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9ibG9ja19yZWFkKHJlYWRfd3JpdGUgaW1hZ2UyZF90IGltYWdlLCBpbnQyIGNvb3JkKTsKdWludDIgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9ibG9ja19yZWFkMihyZWFkX3dyaXRlIGltYWdlMmRfdCBpbWFnZSwgaW50MiBjb29yZCk7CnVpbnQ0ICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfYmxvY2tfcmVhZDQocmVhZF93cml0ZSBpbWFnZTJkX3QgaW1hZ2UsIGludDIgY29vcmQpOwp1aW50OCAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX2Jsb2NrX3JlYWQ4KHJlYWRfd3JpdGUgaW1hZ2UyZF90IGltYWdlLCBpbnQyIGNvb3JkKTsKI2VuZGlmIC8vIGRlZmluZWQoX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXykgfHwgKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fMl8wKQoKdWludCAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9ibG9ja19yZWFkKCBjb25zdCBfX2dsb2JhbCB1aW50KiBwICk7CnVpbnQyICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfYmxvY2tfcmVhZDIoIGNvbnN0IF9fZ2xvYmFsIHVpbnQqIHAgKTsKdWludDQgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9ibG9ja19yZWFkNCggY29uc3QgX19nbG9iYWwgdWludCogcCApOwp1aW50OCAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX2Jsb2NrX3JlYWQ4KCBjb25zdCBfX2dsb2JhbCB1aW50KiBwICk7Cgp2b2lkICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX2Jsb2NrX3dyaXRlKHdyaXRlX29ubHkgaW1hZ2UyZF90IGltYWdlLCBpbnQyIGNvb3JkLCB1aW50IGRhdGEpOwp2b2lkICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX2Jsb2NrX3dyaXRlMih3cml0ZV9vbmx5IGltYWdlMmRfdCBpbWFnZSwgaW50MiBjb29yZCwgdWludDIgZGF0YSk7CnZvaWQgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfYmxvY2tfd3JpdGU0KHdyaXRlX29ubHkgaW1hZ2UyZF90IGltYWdlLCBpbnQyIGNvb3JkLCB1aW50NCBkYXRhKTsKdm9pZCAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9ibG9ja193cml0ZTgod3JpdGVfb25seSBpbWFnZTJkX3QgaW1hZ2UsIGludDIgY29vcmQsIHVpbnQ4IGRhdGEpOwoKI2lmIGRlZmluZWQoX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXykgfHwgKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fMl8wKQp2b2lkICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX2Jsb2NrX3dyaXRlKHJlYWRfd3JpdGUgaW1hZ2UyZF90IGltYWdlLCBpbnQyIGNvb3JkLCB1aW50IGRhdGEpOwp2b2lkICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX2Jsb2NrX3dyaXRlMihyZWFkX3dyaXRlIGltYWdlMmRfdCBpbWFnZSwgaW50MiBjb29yZCwgdWludDIgZGF0YSk7CnZvaWQgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfYmxvY2tfd3JpdGU0KHJlYWRfd3JpdGUgaW1hZ2UyZF90IGltYWdlLCBpbnQyIGNvb3JkLCB1aW50NCBkYXRhKTsKdm9pZCAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9ibG9ja193cml0ZTgocmVhZF93cml0ZSBpbWFnZTJkX3QgaW1hZ2UsIGludDIgY29vcmQsIHVpbnQ4IGRhdGEpOwojZW5kaWYgLy8gZGVmaW5lZChfX09QRU5DTF9DUFBfVkVSU0lPTl9fKSB8fCAoX19PUEVOQ0xfQ19WRVJTSU9OX18gPj0gQ0xfVkVSU0lPTl8yXzApCgp2b2lkICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX2Jsb2NrX3dyaXRlKCBfX2dsb2JhbCB1aW50KiBwLCB1aW50IGRhdGEgKTsKdm9pZCAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9ibG9ja193cml0ZTIoIF9fZ2xvYmFsIHVpbnQqIHAsIHVpbnQyIGRhdGEgKTsKdm9pZCAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9ibG9ja193cml0ZTQoIF9fZ2xvYmFsIHVpbnQqIHAsIHVpbnQ0IGRhdGEgKTsKdm9pZCAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9ibG9ja193cml0ZTgoIF9fZ2xvYmFsIHVpbnQqIHAsIHVpbnQ4IGRhdGEgKTsKCiNpZmRlZiBjbF9raHJfZnAxNgpoYWxmICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NodWZmbGUoIGhhbGYgeCwgdWludCBjICk7CmhhbGYgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfc2h1ZmZsZV9kb3duKCBoYWxmIHByZXYsIGhhbGYgY3VyLCB1aW50IGMgKTsKaGFsZiAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlX3VwKCBoYWxmIHByZXYsIGhhbGYgY3VyLCB1aW50IGMgKTsKaGFsZiAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlX3hvciggaGFsZiB4LCB1aW50IGMgKTsKI2VuZGlmCgojaWYgZGVmaW5lZChjbF9raHJfZnA2NCkKZG91YmxlICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlKCBkb3VibGUgeCwgdWludCBjICk7CmRvdWJsZSAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfc2h1ZmZsZV9kb3duKCBkb3VibGUgcHJldiwgZG91YmxlIGN1ciwgdWludCBjICk7CmRvdWJsZSAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfc2h1ZmZsZV91cCggZG91YmxlIHByZXYsIGRvdWJsZSBjdXIsIHVpbnQgYyApOwpkb3VibGUgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NodWZmbGVfeG9yKCBkb3VibGUgeCwgdWludCBjICk7CiNlbmRpZgoKI2VuZGlmIC8vY2xfaW50ZWxfc3ViZ3JvdXBzCgojaWYgZGVmaW5lZChjbF9pbnRlbF9zdWJncm91cHNfc2hvcnQpCnNob3J0ICAgICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX2Jyb2FkY2FzdCggc2hvcnQgIHgsIHVpbnQgc3ViX2dyb3VwX2xvY2FsX2lkICk7CnNob3J0MiAgICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX2Jyb2FkY2FzdCggc2hvcnQyIHgsIHVpbnQgc3ViX2dyb3VwX2xvY2FsX2lkICk7CnNob3J0MyAgICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX2Jyb2FkY2FzdCggc2hvcnQzIHgsIHVpbnQgc3ViX2dyb3VwX2xvY2FsX2lkICk7CnNob3J0NCAgICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX2Jyb2FkY2FzdCggc2hvcnQ0IHgsIHVpbnQgc3ViX2dyb3VwX2xvY2FsX2lkICk7CnNob3J0OCAgICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX2Jyb2FkY2FzdCggc2hvcnQ4IHgsIHVpbnQgc3ViX2dyb3VwX2xvY2FsX2lkICk7Cgp1c2hvcnQgICAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9icm9hZGNhc3QoIHVzaG9ydCAgeCwgdWludCBzdWJfZ3JvdXBfbG9jYWxfaWQgKTsKdXNob3J0MiAgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfYnJvYWRjYXN0KCB1c2hvcnQyIHgsIHVpbnQgc3ViX2dyb3VwX2xvY2FsX2lkICk7CnVzaG9ydDMgICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX2Jyb2FkY2FzdCggdXNob3J0MyB4LCB1aW50IHN1Yl9ncm91cF9sb2NhbF9pZCApOwp1c2hvcnQ0ICAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9icm9hZGNhc3QoIHVzaG9ydDQgeCwgdWludCBzdWJfZ3JvdXBfbG9jYWxfaWQgKTsKdXNob3J0OCAgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfYnJvYWRjYXN0KCB1c2hvcnQ4IHgsIHVpbnQgc3ViX2dyb3VwX2xvY2FsX2lkICk7CgpzaG9ydCAgICAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlKCBzaG9ydCAgIHgsIHVpbnQgYyApOwpzaG9ydDIgICAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlKCBzaG9ydDIgIHgsIHVpbnQgYyApOwpzaG9ydDMgICAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlKCBzaG9ydDMgIHgsIHVpbnQgYyApOwpzaG9ydDQgICAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlKCBzaG9ydDQgIHgsIHVpbnQgYyApOwpzaG9ydDggICAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlKCBzaG9ydDggIHgsIHVpbnQgYyApOwpzaG9ydDE2ICAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlKCBzaG9ydDE2IHgsIHVpbnQgYyk7Cgp1c2hvcnQgICAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlKCB1c2hvcnQgICB4LCB1aW50IGMgKTsKdXNob3J0MiAgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfc2h1ZmZsZSggdXNob3J0MiAgeCwgdWludCBjICk7CnVzaG9ydDMgICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NodWZmbGUoIHVzaG9ydDMgIHgsIHVpbnQgYyApOwp1c2hvcnQ0ICAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlKCB1c2hvcnQ0ICB4LCB1aW50IGMgKTsKdXNob3J0OCAgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfc2h1ZmZsZSggdXNob3J0OCAgeCwgdWludCBjICk7CnVzaG9ydDE2ICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NodWZmbGUoIHVzaG9ydDE2IHgsIHVpbnQgYyApOwoKc2hvcnQgICAgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfc2h1ZmZsZV9kb3duKCBzaG9ydCAgIGN1ciwgc2hvcnQgICBuZXh0LCB1aW50IGMgKTsKc2hvcnQyICAgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfc2h1ZmZsZV9kb3duKCBzaG9ydDIgIGN1ciwgc2hvcnQyICBuZXh0LCB1aW50IGMgKTsKc2hvcnQzICAgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfc2h1ZmZsZV9kb3duKCBzaG9ydDMgIGN1ciwgc2hvcnQzICBuZXh0LCB1aW50IGMgKTsKc2hvcnQ0ICAgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfc2h1ZmZsZV9kb3duKCBzaG9ydDQgIGN1ciwgc2hvcnQ0ICBuZXh0LCB1aW50IGMgKTsKc2hvcnQ4ICAgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfc2h1ZmZsZV9kb3duKCBzaG9ydDggIGN1ciwgc2hvcnQ4ICBuZXh0LCB1aW50IGMgKTsKc2hvcnQxNiAgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfc2h1ZmZsZV9kb3duKCBzaG9ydDE2IGN1ciwgc2hvcnQxNiBuZXh0LCB1aW50IGMgKTsKCnVzaG9ydCAgICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NodWZmbGVfZG93biggdXNob3J0ICAgY3VyLCB1c2hvcnQgICBuZXh0LCB1aW50IGMgKTsKdXNob3J0MiAgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfc2h1ZmZsZV9kb3duKCB1c2hvcnQyICBjdXIsIHVzaG9ydDIgIG5leHQsIHVpbnQgYyApOwp1c2hvcnQzICAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlX2Rvd24oIHVzaG9ydDMgIGN1ciwgdXNob3J0MyAgbmV4dCwgdWludCBjICk7CnVzaG9ydDQgICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NodWZmbGVfZG93biggdXNob3J0NCAgY3VyLCB1c2hvcnQ0ICBuZXh0LCB1aW50IGMgKTsKdXNob3J0OCAgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfc2h1ZmZsZV9kb3duKCB1c2hvcnQ4ICBjdXIsIHVzaG9ydDggIG5leHQsIHVpbnQgYyApOwp1c2hvcnQxNiAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlX2Rvd24oIHVzaG9ydDE2IGN1ciwgdXNob3J0MTYgbmV4dCwgdWludCBjICk7CgpzaG9ydCAgICAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlX3VwKCBzaG9ydCAgIGN1ciwgc2hvcnQgICBuZXh0LCB1aW50IGMgKTsKc2hvcnQyICAgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfc2h1ZmZsZV91cCggc2hvcnQyICBjdXIsIHNob3J0MiAgbmV4dCwgdWludCBjICk7CnNob3J0MyAgICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NodWZmbGVfdXAoIHNob3J0MyAgY3VyLCBzaG9ydDMgIG5leHQsIHVpbnQgYyApOwpzaG9ydDQgICAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlX3VwKCBzaG9ydDQgIGN1ciwgc2hvcnQ0ICBuZXh0LCB1aW50IGMgKTsKc2hvcnQ4ICAgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfc2h1ZmZsZV91cCggc2hvcnQ4ICBjdXIsIHNob3J0OCAgbmV4dCwgdWludCBjICk7CnNob3J0MTYgICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NodWZmbGVfdXAoIHNob3J0MTYgY3VyLCBzaG9ydDE2IG5leHQsIHVpbnQgYyApOwoKdXNob3J0ICAgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfc2h1ZmZsZV91cCggdXNob3J0ICAgY3VyLCB1c2hvcnQgICBuZXh0LCB1aW50IGMgKTsKdXNob3J0MiAgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfc2h1ZmZsZV91cCggdXNob3J0MiAgY3VyLCB1c2hvcnQyICBuZXh0LCB1aW50IGMgKTsKdXNob3J0MyAgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfc2h1ZmZsZV91cCggdXNob3J0MyAgY3VyLCB1c2hvcnQzICBuZXh0LCB1aW50IGMgKTsKdXNob3J0NCAgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfc2h1ZmZsZV91cCggdXNob3J0NCAgY3VyLCB1c2hvcnQ0ICBuZXh0LCB1aW50IGMgKTsKdXNob3J0OCAgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfc2h1ZmZsZV91cCggdXNob3J0OCAgY3VyLCB1c2hvcnQ4ICBuZXh0LCB1aW50IGMgKTsKdXNob3J0MTYgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfc2h1ZmZsZV91cCggdXNob3J0MTYgY3VyLCB1c2hvcnQxNiBuZXh0LCB1aW50IGMgKTsKCnNob3J0ICAgICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NodWZmbGVfeG9yKCBzaG9ydCAgIHgsIHVpbnQgYyApOwpzaG9ydDIgICAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlX3hvciggc2hvcnQyICB4LCB1aW50IGMgKTsKc2hvcnQzICAgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfc2h1ZmZsZV94b3IoIHNob3J0MyAgeCwgdWludCBjICk7CnNob3J0NCAgICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NodWZmbGVfeG9yKCBzaG9ydDQgIHgsIHVpbnQgYyApOwpzaG9ydDggICAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlX3hvciggc2hvcnQ4ICB4LCB1aW50IGMgKTsKc2hvcnQxNiAgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfc2h1ZmZsZV94b3IoIHNob3J0MTYgeCwgdWludCBjICk7Cgp1c2hvcnQgICAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlX3hvciggdXNob3J0ICAgeCwgdWludCBjICk7CnVzaG9ydDIgICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NodWZmbGVfeG9yKCB1c2hvcnQyICB4LCB1aW50IGMgKTsKdXNob3J0MyAgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfc2h1ZmZsZV94b3IoIHVzaG9ydDMgIHgsIHVpbnQgYyApOwp1c2hvcnQ0ICAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zaHVmZmxlX3hvciggdXNob3J0NCAgeCwgdWludCBjICk7CnVzaG9ydDggICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NodWZmbGVfeG9yKCB1c2hvcnQ4ICB4LCB1aW50IGMgKTsKdXNob3J0MTYgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfc2h1ZmZsZV94b3IoIHVzaG9ydDE2IHgsIHVpbnQgYyApOwoKc2hvcnQgICAgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfcmVkdWNlX2FkZCggc2hvcnQgICB4ICk7CnVzaG9ydCAgICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3JlZHVjZV9hZGQoIHVzaG9ydCAgeCApOwpzaG9ydCAgICAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9yZWR1Y2VfbWluKCBzaG9ydCAgIHggKTsKdXNob3J0ICAgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfcmVkdWNlX21pbiggdXNob3J0ICB4ICk7CnNob3J0ICAgICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3JlZHVjZV9tYXgoIHNob3J0ICAgeCApOwp1c2hvcnQgICAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9yZWR1Y2VfbWF4KCB1c2hvcnQgIHggKTsKCnNob3J0ICAgICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NjYW5fZXhjbHVzaXZlX2FkZCggc2hvcnQgICB4ICk7CnVzaG9ydCAgICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NjYW5fZXhjbHVzaXZlX2FkZCggdXNob3J0ICB4ICk7CnNob3J0ICAgICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NjYW5fZXhjbHVzaXZlX21pbiggc2hvcnQgICB4ICk7CnVzaG9ydCAgICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NjYW5fZXhjbHVzaXZlX21pbiggdXNob3J0ICB4ICk7CnNob3J0ICAgICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NjYW5fZXhjbHVzaXZlX21heCggc2hvcnQgICB4ICk7CnVzaG9ydCAgICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX3NjYW5fZXhjbHVzaXZlX21heCggdXNob3J0ICB4ICk7CgpzaG9ydCAgICAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zY2FuX2luY2x1c2l2ZV9hZGQoIHNob3J0ICAgeCApOwp1c2hvcnQgICAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zY2FuX2luY2x1c2l2ZV9hZGQoIHVzaG9ydCAgeCApOwpzaG9ydCAgICAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zY2FuX2luY2x1c2l2ZV9taW4oIHNob3J0ICAgeCApOwp1c2hvcnQgICAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zY2FuX2luY2x1c2l2ZV9taW4oIHVzaG9ydCAgeCApOwpzaG9ydCAgICAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zY2FuX2luY2x1c2l2ZV9tYXgoIHNob3J0ICAgeCApOwp1c2hvcnQgICAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9zY2FuX2luY2x1c2l2ZV9tYXgoIHVzaG9ydCAgeCApOwoKdWludCAgICAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9ibG9ja19yZWFkX3VpKCByZWFkX29ubHkgaW1hZ2UyZF90IGltYWdlLCBpbnQyIGJ5dGVfY29vcmQgKTsKdWludDIgICAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9ibG9ja19yZWFkX3VpMiggcmVhZF9vbmx5IGltYWdlMmRfdCBpbWFnZSwgaW50MiBieXRlX2Nvb3JkICk7CnVpbnQ0ICAgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfYmxvY2tfcmVhZF91aTQoIHJlYWRfb25seSBpbWFnZTJkX3QgaW1hZ2UsIGludDIgYnl0ZV9jb29yZCApOwp1aW50OCAgICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX2Jsb2NrX3JlYWRfdWk4KCByZWFkX29ubHkgaW1hZ2UyZF90IGltYWdlLCBpbnQyIGJ5dGVfY29vcmQgKTsKCiNpZiBkZWZpbmVkKF9fT1BFTkNMX0NQUF9WRVJTSU9OX18pIHx8IChfX09QRU5DTF9DX1ZFUlNJT05fXyA+PSBDTF9WRVJTSU9OXzJfMCkKdWludCAgICAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9ibG9ja19yZWFkX3VpKCByZWFkX3dyaXRlIGltYWdlMmRfdCBpbWFnZSwgaW50MiBieXRlX2Nvb3JkICk7CnVpbnQyICAgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfYmxvY2tfcmVhZF91aTIoIHJlYWRfd3JpdGUgaW1hZ2UyZF90IGltYWdlLCBpbnQyIGJ5dGVfY29vcmQgKTsKdWludDQgICAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9ibG9ja19yZWFkX3VpNCggcmVhZF93cml0ZSBpbWFnZTJkX3QgaW1hZ2UsIGludDIgYnl0ZV9jb29yZCApOwp1aW50OCAgICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX2Jsb2NrX3JlYWRfdWk4KCByZWFkX3dyaXRlIGltYWdlMmRfdCBpbWFnZSwgaW50MiBieXRlX2Nvb3JkICk7CiNlbmRpZiAvLyBkZWZpbmVkKF9fT1BFTkNMX0NQUF9WRVJTSU9OX18pIHx8IChfX09QRU5DTF9DX1ZFUlNJT05fXyA+PSBDTF9WRVJTSU9OXzJfMCkKCnVpbnQgICAgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfYmxvY2tfcmVhZF91aSggY29uc3QgX19nbG9iYWwgdWludCogcCApOwp1aW50MiAgICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX2Jsb2NrX3JlYWRfdWkyKCBjb25zdCBfX2dsb2JhbCB1aW50KiBwICk7CnVpbnQ0ICAgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfYmxvY2tfcmVhZF91aTQoIGNvbnN0IF9fZ2xvYmFsIHVpbnQqIHAgKTsKdWludDggICAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9ibG9ja19yZWFkX3VpOCggY29uc3QgX19nbG9iYWwgdWludCogcCApOwoKdm9pZCAgICAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9ibG9ja193cml0ZV91aSggcmVhZF9vbmx5IGltYWdlMmRfdCBpbWFnZSwgaW50MiBieXRlX2Nvb3JkLCB1aW50IGRhdGEgKTsKdm9pZCAgICAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9ibG9ja193cml0ZV91aTIoIHJlYWRfb25seSBpbWFnZTJkX3QgaW1hZ2UsIGludDIgYnl0ZV9jb29yZCwgdWludDIgZGF0YSApOwp2b2lkICAgICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX2Jsb2NrX3dyaXRlX3VpNCggcmVhZF9vbmx5IGltYWdlMmRfdCBpbWFnZSwgaW50MiBieXRlX2Nvb3JkLCB1aW50NCBkYXRhICk7CnZvaWQgICAgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfYmxvY2tfd3JpdGVfdWk4KCByZWFkX29ubHkgaW1hZ2UyZF90IGltYWdlLCBpbnQyIGJ5dGVfY29vcmQsIHVpbnQ4IGRhdGEgKTsKCiNpZiBkZWZpbmVkKF9fT1BFTkNMX0NQUF9WRVJTSU9OX18pIHx8IChfX09QRU5DTF9DX1ZFUlNJT05fXyA+PSBDTF9WRVJTSU9OXzJfMCkKdm9pZCAgICAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9ibG9ja193cml0ZV91aSggcmVhZF93cml0ZSBpbWFnZTJkX3QgaW1hZ2UsIGludDIgYnl0ZV9jb29yZCwgdWludCBkYXRhICk7CnZvaWQgICAgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfYmxvY2tfd3JpdGVfdWkyKCByZWFkX3dyaXRlIGltYWdlMmRfdCBpbWFnZSwgaW50MiBieXRlX2Nvb3JkLCB1aW50MiBkYXRhICk7CnZvaWQgICAgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfYmxvY2tfd3JpdGVfdWk0KCByZWFkX3dyaXRlIGltYWdlMmRfdCBpbWFnZSwgaW50MiBieXRlX2Nvb3JkLCB1aW50NCBkYXRhICk7CnZvaWQgICAgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfYmxvY2tfd3JpdGVfdWk4KCByZWFkX3dyaXRlIGltYWdlMmRfdCBpbWFnZSwgaW50MiBieXRlX2Nvb3JkLCB1aW50OCBkYXRhICk7CiNlbmRpZiAvLyBkZWZpbmVkKF9fT1BFTkNMX0NQUF9WRVJTSU9OX18pIHx8IChfX09QRU5DTF9DX1ZFUlNJT05fXyA+PSBDTF9WRVJTSU9OXzJfMCkKCnZvaWQgICAgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfYmxvY2tfd3JpdGVfdWkoIF9fZ2xvYmFsIHVpbnQqIHAsIHVpbnQgZGF0YSApOwp2b2lkICAgICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX2Jsb2NrX3dyaXRlX3VpMiggX19nbG9iYWwgdWludCogcCwgdWludDIgZGF0YSApOwp2b2lkICAgICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX2Jsb2NrX3dyaXRlX3VpNCggX19nbG9iYWwgdWludCogcCwgdWludDQgZGF0YSApOwp2b2lkICAgICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX2Jsb2NrX3dyaXRlX3VpOCggX19nbG9iYWwgdWludCogcCwgdWludDggZGF0YSApOwoKdXNob3J0ICAgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfYmxvY2tfcmVhZF91cyggcmVhZF9vbmx5IGltYWdlMmRfdCBpbWFnZSwgaW50MiBjb29yZCApOwp1c2hvcnQyICAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9ibG9ja19yZWFkX3VzMiggcmVhZF9vbmx5IGltYWdlMmRfdCBpbWFnZSwgaW50MiBjb29yZCApOwp1c2hvcnQ0ICAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9ibG9ja19yZWFkX3VzNCggcmVhZF9vbmx5IGltYWdlMmRfdCBpbWFnZSwgaW50MiBjb29yZCApOwp1c2hvcnQ4ICAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9ibG9ja19yZWFkX3VzOCggcmVhZF9vbmx5IGltYWdlMmRfdCBpbWFnZSwgaW50MiBjb29yZCApOwoKI2lmIGRlZmluZWQoX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXykgfHwgKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fMl8wKQp1c2hvcnQgICAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9ibG9ja19yZWFkX3VzKHJlYWRfd3JpdGUgaW1hZ2UyZF90IGltYWdlLCBpbnQyIGNvb3JkKTsKdXNob3J0MiAgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfYmxvY2tfcmVhZF91czIocmVhZF93cml0ZSBpbWFnZTJkX3QgaW1hZ2UsIGludDIgY29vcmQpOwp1c2hvcnQ0ICAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9ibG9ja19yZWFkX3VzNChyZWFkX3dyaXRlIGltYWdlMmRfdCBpbWFnZSwgaW50MiBjb29yZCk7CnVzaG9ydDggICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX2Jsb2NrX3JlYWRfdXM4KHJlYWRfd3JpdGUgaW1hZ2UyZF90IGltYWdlLCBpbnQyIGNvb3JkKTsKI2VuZGlmIC8vIGRlZmluZWQoX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXykgfHwgKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fMl8wKQoKdXNob3J0ICAgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfYmxvY2tfcmVhZF91cyggIGNvbnN0IF9fZ2xvYmFsIHVzaG9ydCogcCApOwp1c2hvcnQyICAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9ibG9ja19yZWFkX3VzMiggY29uc3QgX19nbG9iYWwgdXNob3J0KiBwICk7CnVzaG9ydDQgICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX2Jsb2NrX3JlYWRfdXM0KCBjb25zdCBfX2dsb2JhbCB1c2hvcnQqIHAgKTsKdXNob3J0OCAgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfYmxvY2tfcmVhZF91czgoIGNvbnN0IF9fZ2xvYmFsIHVzaG9ydCogcCApOwoKdm9pZCAgICAgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfYmxvY2tfd3JpdGVfdXMod3JpdGVfb25seSBpbWFnZTJkX3QgaW1hZ2UsIGludDIgY29vcmQsIHVzaG9ydCAgZGF0YSk7CnZvaWQgICAgICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX2Jsb2NrX3dyaXRlX3VzMih3cml0ZV9vbmx5IGltYWdlMmRfdCBpbWFnZSwgaW50MiBjb29yZCwgdXNob3J0MiBkYXRhKTsKdm9pZCAgICAgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfYmxvY2tfd3JpdGVfdXM0KHdyaXRlX29ubHkgaW1hZ2UyZF90IGltYWdlLCBpbnQyIGNvb3JkLCB1c2hvcnQ0IGRhdGEpOwp2b2lkICAgICAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9ibG9ja193cml0ZV91czgod3JpdGVfb25seSBpbWFnZTJkX3QgaW1hZ2UsIGludDIgY29vcmQsIHVzaG9ydDggZGF0YSk7CgojaWYgZGVmaW5lZChfX09QRU5DTF9DUFBfVkVSU0lPTl9fKSB8fCAoX19PUEVOQ0xfQ19WRVJTSU9OX18gPj0gQ0xfVkVSU0lPTl8yXzApCnZvaWQgICAgICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX2Jsb2NrX3dyaXRlX3VzKHJlYWRfd3JpdGUgaW1hZ2UyZF90IGltYWdlLCBpbnQyIGNvb3JkLCB1c2hvcnQgIGRhdGEpOwp2b2lkICAgICAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9ibG9ja193cml0ZV91czIocmVhZF93cml0ZSBpbWFnZTJkX3QgaW1hZ2UsIGludDIgY29vcmQsIHVzaG9ydDIgZGF0YSk7CnZvaWQgICAgICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX2Jsb2NrX3dyaXRlX3VzNChyZWFkX3dyaXRlIGltYWdlMmRfdCBpbWFnZSwgaW50MiBjb29yZCwgdXNob3J0NCBkYXRhKTsKdm9pZCAgICAgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfYmxvY2tfd3JpdGVfdXM4KHJlYWRfd3JpdGUgaW1hZ2UyZF90IGltYWdlLCBpbnQyIGNvb3JkLCB1c2hvcnQ4IGRhdGEpOwojZW5kaWYgLy8gZGVmaW5lZChfX09QRU5DTF9DUFBfVkVSU0lPTl9fKSB8fCAoX19PUEVOQ0xfQ19WRVJTSU9OX18gPj0gQ0xfVkVSU0lPTl8yXzApCgp2b2lkICAgICAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9ibG9ja193cml0ZV91cyggIF9fZ2xvYmFsIHVzaG9ydCogcCwgdXNob3J0ICBkYXRhICk7CnZvaWQgICAgICAgIF9fb3ZsZCBfX2NvbnYgaW50ZWxfc3ViX2dyb3VwX2Jsb2NrX3dyaXRlX3VzMiggX19nbG9iYWwgdXNob3J0KiBwLCB1c2hvcnQyIGRhdGEgKTsKdm9pZCAgICAgICAgX19vdmxkIF9fY29udiBpbnRlbF9zdWJfZ3JvdXBfYmxvY2tfd3JpdGVfdXM0KCBfX2dsb2JhbCB1c2hvcnQqIHAsIHVzaG9ydDQgZGF0YSApOwp2b2lkICAgICAgICBfX292bGQgX19jb252IGludGVsX3N1Yl9ncm91cF9ibG9ja193cml0ZV91czgoIF9fZ2xvYmFsIHVzaG9ydCogcCwgdXNob3J0OCBkYXRhICk7CiNlbmRpZiAvLyBjbF9pbnRlbF9zdWJncm91cHNfc2hvcnQKCiNpZmRlZiBjbF9pbnRlbF9kZXZpY2Vfc2lkZV9hdmNfbW90aW9uX2VzdGltYXRpb24KI3ByYWdtYSBPUEVOQ0wgRVhURU5TSU9OIGNsX2ludGVsX2RldmljZV9zaWRlX2F2Y19tb3Rpb25fZXN0aW1hdGlvbiA6IGJlZ2luCgovLyBNQ0UgYnVpbHQtaW4gZnVuY3Rpb25zCnVjaGFyIF9fb3ZsZAppbnRlbF9zdWJfZ3JvdXBfYXZjX21jZV9nZXRfZGVmYXVsdF9pbnRlcl9iYXNlX211bHRpX3JlZmVyZW5jZV9wZW5hbHR5KAogICAgdWNoYXIgc2xpY2VfdHlwZSwgdWNoYXIgcXApOwp1bG9uZyBfX292bGQgaW50ZWxfc3ViX2dyb3VwX2F2Y19tY2VfZ2V0X2RlZmF1bHRfaW50ZXJfc2hhcGVfcGVuYWx0eSgKICAgIHVjaGFyIHNsaWNlX3R5cGUsIHVjaGFyIHFwKTsKdWNoYXIgX19vdmxkIGludGVsX3N1Yl9ncm91cF9hdmNfbWNlX2dldF9kZWZhdWx0X2ludGVyX2RpcmVjdGlvbl9wZW5hbHR5KAogICAgdWNoYXIgc2xpY2VfdHlwZSwgdWNoYXIgcXApOwp1aW50IF9fb3ZsZCBpbnRlbF9zdWJfZ3JvdXBfYXZjX21jZV9nZXRfZGVmYXVsdF9pbnRyYV9sdW1hX3NoYXBlX3BlbmFsdHkoCiAgICB1Y2hhciBzbGljZV90eXBlLCB1Y2hhciBxcCk7CnVpbnQyIF9fb3ZsZAppbnRlbF9zdWJfZ3JvdXBfYXZjX21jZV9nZXRfZGVmYXVsdF9pbnRlcl9tb3Rpb25fdmVjdG9yX2Nvc3RfdGFibGUoCiAgICB1Y2hhciBzbGljZV90eXBlLCB1Y2hhciBxcCk7CnVjaGFyIF9fb3ZsZCBpbnRlbF9zdWJfZ3JvdXBfYXZjX21jZV9nZXRfZGVmYXVsdF9pbnRyYV9sdW1hX21vZGVfcGVuYWx0eSgKICAgIHVjaGFyIHNsaWNlX3R5cGUsIHVjaGFyIHFwKTsKCnVpbnQyIF9fb3ZsZCBpbnRlbF9zdWJfZ3JvdXBfYXZjX21jZV9nZXRfZGVmYXVsdF9oaWdoX3BlbmFsdHlfY29zdF90YWJsZSgpOwp1aW50MiBfX292bGQgaW50ZWxfc3ViX2dyb3VwX2F2Y19tY2VfZ2V0X2RlZmF1bHRfbWVkaXVtX3BlbmFsdHlfY29zdF90YWJsZSgpOwp1aW50MiBfX292bGQgaW50ZWxfc3ViX2dyb3VwX2F2Y19tY2VfZ2V0X2RlZmF1bHRfbG93X3BlbmFsdHlfY29zdF90YWJsZSgpOwp1aW50IF9fb3ZsZCBpbnRlbF9zdWJfZ3JvdXBfYXZjX21jZV9nZXRfZGVmYXVsdF9ub25fZGNfbHVtYV9pbnRyYV9wZW5hbHR5KCk7CnVjaGFyIF9fb3ZsZAppbnRlbF9zdWJfZ3JvdXBfYXZjX21jZV9nZXRfZGVmYXVsdF9pbnRyYV9jaHJvbWFfbW9kZV9iYXNlX3BlbmFsdHkoKTsKCmludGVsX3N1Yl9ncm91cF9hdmNfbWNlX3BheWxvYWRfdCBfX292bGQKaW50ZWxfc3ViX2dyb3VwX2F2Y19tY2Vfc2V0X2ludGVyX2Jhc2VfbXVsdGlfcmVmZXJlbmNlX3BlbmFsdHkoCiAgICB1Y2hhciByZWZlcmVuY2VfYmFzZV9wZW5hbHR5LCBpbnRlbF9zdWJfZ3JvdXBfYXZjX21jZV9wYXlsb2FkX3QgcGF5bG9hZCk7CmludGVsX3N1Yl9ncm91cF9hdmNfbWNlX3BheWxvYWRfdCBfX292bGQKaW50ZWxfc3ViX2dyb3VwX2F2Y19tY2Vfc2V0X2ludGVyX3NoYXBlX3BlbmFsdHkoCiAgICB1bG9uZyBwYWNrZWRfc2hhcGVfcGVuYWx0eSwgaW50ZWxfc3ViX2dyb3VwX2F2Y19tY2VfcGF5bG9hZF90IHBheWxvYWQpOwppbnRlbF9zdWJfZ3JvdXBfYXZjX21jZV9wYXlsb2FkX3QgX19vdmxkCmludGVsX3N1Yl9ncm91cF9hdmNfbWNlX3NldF9pbnRlcl9kaXJlY3Rpb25fcGVuYWx0eSgKICAgIHVjaGFyIGRpcmVjdGlvbl9jb3N0LCBpbnRlbF9zdWJfZ3JvdXBfYXZjX21jZV9wYXlsb2FkX3QgcGF5bG9hZCk7CmludGVsX3N1Yl9ncm91cF9hdmNfbWNlX3BheWxvYWRfdCBfX292bGQKaW50ZWxfc3ViX2dyb3VwX2F2Y19tY2Vfc2V0X21vdGlvbl92ZWN0b3JfY29zdF9mdW5jdGlvbigKICAgIHVsb25nIHBhY2tlZF9jb3N0X2NlbnRlcl9kZWx0YSwgdWludDIgcGFja2VkX2Nvc3RfdGFibGUsCiAgICB1Y2hhciBjb3N0X3ByZWNpc2lvbiwgaW50ZWxfc3ViX2dyb3VwX2F2Y19tY2VfcGF5bG9hZF90IHBheWxvYWQpOwppbnRlbF9zdWJfZ3JvdXBfYXZjX21jZV9wYXlsb2FkX3QgX19vdmxkCmludGVsX3N1Yl9ncm91cF9hdmNfbWNlX3NldF9hY19vbmx5X2hhYXIoCiAgICBpbnRlbF9zdWJfZ3JvdXBfYXZjX21jZV9wYXlsb2FkX3QgcGF5bG9hZCk7CmludGVsX3N1Yl9ncm91cF9hdmNfbWNlX3BheWxvYWRfdCBfX292bGQKaW50ZWxfc3ViX2dyb3VwX2F2Y19tY2Vfc2V0X3NvdXJjZV9pbnRlcmxhY2VkX2ZpZWxkX3BvbGFyaXR5KAogICAgdWNoYXIgc3JjX2ZpZWxkX3BvbGFyaXR5LCBpbnRlbF9zdWJfZ3JvdXBfYXZjX21jZV9wYXlsb2FkX3QgcGF5bG9hZCk7CmludGVsX3N1Yl9ncm91cF9hdmNfbWNlX3BheWxvYWRfdCBfX292bGQKaW50ZWxfc3ViX2dyb3VwX2F2Y19tY2Vfc2V0X3NpbmdsZV9yZWZlcmVuY2VfaW50ZXJsYWNlZF9maWVsZF9wb2xhcml0eSgKICAgIHVjaGFyIHJlZl9maWVsZF9wb2xhcml0eSwgaW50ZWxfc3ViX2dyb3VwX2F2Y19tY2VfcGF5bG9hZF90IHBheWxvYWQpOwppbnRlbF9zdWJfZ3JvdXBfYXZjX21jZV9wYXlsb2FkX3QgX19vdmxkCmludGVsX3N1Yl9ncm91cF9hdmNfbWNlX3NldF9kdWFsX3JlZmVyZW5jZV9pbnRlcmxhY2VkX2ZpZWxkX3BvbGFyaXRpZXMoCiAgICB1Y2hhciBmd2RfcmVmX2ZpZWxkX3BvbGFyaXR5LCB1Y2hhciBid2RfcmVmX2ZpZWxkX3BvbGFyaXR5LAogICAgaW50ZWxfc3ViX2dyb3VwX2F2Y19tY2VfcGF5bG9hZF90IHBheWxvYWQpOwoKdWxvbmcgX19vdmxkIGludGVsX3N1Yl9ncm91cF9hdmNfbWNlX2dldF9tb3Rpb25fdmVjdG9ycygKICAgIGludGVsX3N1Yl9ncm91cF9hdmNfbWNlX3Jlc3VsdF90IHJlc3VsdCk7CnVzaG9ydCBfX292bGQgaW50ZWxfc3ViX2dyb3VwX2F2Y19tY2VfZ2V0X2ludGVyX2Rpc3RvcnRpb25zKAogICAgaW50ZWxfc3ViX2dyb3VwX2F2Y19tY2VfcmVzdWx0X3QgcmVzdWx0KTsKdXNob3J0IF9fb3ZsZCBpbnRlbF9zdWJfZ3JvdXBfYXZjX21jZV9nZXRfYmVzdF9pbnRlcl9kaXN0b3J0aW9uKAogICAgaW50ZWxfc3ViX2dyb3VwX2F2Y19tY2VfcmVzdWx0X3QgcmVzdWx0KTsKdWNoYXIgX19vdmxkIGludGVsX3N1Yl9ncm91cF9hdmNfbWNlX2dldF9pbnRlcl9tYWpvcl9zaGFwZSgKICAgIGludGVsX3N1Yl9ncm91cF9hdmNfbWNlX3Jlc3VsdF90IHJlc3VsdCk7CnVjaGFyIF9fb3ZsZCBpbnRlbF9zdWJfZ3JvdXBfYXZjX21jZV9nZXRfaW50ZXJfbWlub3Jfc2hhcGVzKAogICAgaW50ZWxfc3ViX2dyb3VwX2F2Y19tY2VfcmVzdWx0X3QgcmVzdWx0KTsKdWNoYXIgX19vdmxkIGludGVsX3N1Yl9ncm91cF9hdmNfbWNlX2dldF9pbnRlcl9kaXJlY3Rpb25zKAogICAgaW50ZWxfc3ViX2dyb3VwX2F2Y19tY2VfcmVzdWx0X3QgcmVzdWx0KTsKdWNoYXIgX19vdmxkIGludGVsX3N1Yl9ncm91cF9hdmNfbWNlX2dldF9pbnRlcl9tb3Rpb25fdmVjdG9yX2NvdW50KAogICAgaW50ZWxfc3ViX2dyb3VwX2F2Y19tY2VfcmVzdWx0X3QgcmVzdWx0KTsKdWludCBfX292bGQgaW50ZWxfc3ViX2dyb3VwX2F2Y19tY2VfZ2V0X2ludGVyX3JlZmVyZW5jZV9pZHMoCiAgICBpbnRlbF9zdWJfZ3JvdXBfYXZjX21jZV9yZXN1bHRfdCByZXN1bHQpOwp1Y2hhciBfX292bGQKaW50ZWxfc3ViX2dyb3VwX2F2Y19tY2VfZ2V0X2ludGVyX3JlZmVyZW5jZV9pbnRlcmxhY2VkX2ZpZWxkX3BvbGFyaXRpZXMoCiAgICB1aW50IHBhY2tlZF9yZWZlcmVuY2VfaWRzLCB1aW50IHBhY2tlZF9yZWZlcmVuY2VfcGFyYW1ldGVyX2ZpZWxkX3BvbGFyaXRpZXMsCiAgICBpbnRlbF9zdWJfZ3JvdXBfYXZjX21jZV9yZXN1bHRfdCByZXN1bHQpOwoKLy8gSU1FIGJ1aWx0LWluIGZ1bmN0aW9ucwppbnRlbF9zdWJfZ3JvdXBfYXZjX2ltZV9wYXlsb2FkX3QgX19vdmxkCmludGVsX3N1Yl9ncm91cF9hdmNfaW1lX2luaXRpYWxpemUoCiAgICB1c2hvcnQyIHNyY19jb29yZCwgdWNoYXIgcGFydGl0aW9uX21hc2ssIHVjaGFyIHNhZF9hZGp1c3RtZW50KTsKaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfcGF5bG9hZF90IF9fb3ZsZAppbnRlbF9zdWJfZ3JvdXBfYXZjX2ltZV9zZXRfc2luZ2xlX3JlZmVyZW5jZSgKICAgIHNob3J0MiByZWZfb2Zmc2V0LCB1Y2hhciBzZWFyY2hfd2luZG93X2NvbmZpZywKICAgIGludGVsX3N1Yl9ncm91cF9hdmNfaW1lX3BheWxvYWRfdCBwYXlsb2FkKTsKaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfcGF5bG9hZF90IF9fb3ZsZAppbnRlbF9zdWJfZ3JvdXBfYXZjX2ltZV9zZXRfZHVhbF9yZWZlcmVuY2UoCiAgICBzaG9ydDIgZndkX3JlZl9vZmZzZXQsIHNob3J0MiBid2RfcmVmX29mZnNldCwgdWNoYXIgc2VhcmNoX3dpbmRvd19jb25maWcsCiAgICBpbnRlbF9zdWJfZ3JvdXBfYXZjX2ltZV9wYXlsb2FkX3QgcGF5bG9hZCk7CmludGVsX3N1Yl9ncm91cF9hdmNfaW1lX3BheWxvYWRfdCBfX292bGQKaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfc2V0X21heF9tb3Rpb25fdmVjdG9yX2NvdW50KAogICAgdWNoYXIgbWF4X21vdGlvbl92ZWN0b3JfY291bnQsIGludGVsX3N1Yl9ncm91cF9hdmNfaW1lX3BheWxvYWRfdCBwYXlsb2FkKTsKaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfcGF5bG9hZF90IF9fb3ZsZAppbnRlbF9zdWJfZ3JvdXBfYXZjX2ltZV9zZXRfdW5pZGlyZWN0aW9uYWxfbWl4X2Rpc2FibGUoCiAgICBpbnRlbF9zdWJfZ3JvdXBfYXZjX2ltZV9wYXlsb2FkX3QgcGF5bG9hZCk7CmludGVsX3N1Yl9ncm91cF9hdmNfaW1lX3BheWxvYWRfdCBfX292bGQKaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfc2V0X2Vhcmx5X3NlYXJjaF90ZXJtaW5hdGlvbl90aHJlc2hvbGQoCiAgICB1Y2hhciB0aHJlc2hvbGQsIGludGVsX3N1Yl9ncm91cF9hdmNfaW1lX3BheWxvYWRfdCBwYXlsb2FkKTsKaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfcGF5bG9hZF90IF9fb3ZsZAppbnRlbF9zdWJfZ3JvdXBfYXZjX2ltZV9zZXRfd2VpZ2h0ZWRfc2FkKAogICAgdWludCBwYWNrZWRfc2FkX3dlaWdodHMsIGludGVsX3N1Yl9ncm91cF9hdmNfaW1lX3BheWxvYWRfdCBwYXlsb2FkKTsKCl9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQoIklmIHlvdSB1c2UgdGhlIGxhdGVzdCBJbnRlbCBkcml2ZXIsIHBsZWFzZSB1c2UgIgogICAgICAgICAgICAgICAgICAgICAgICAgICJpbnRlbF9zdWJfZ3JvdXBfYXZjX2ltZV9yZWZfd2luZG93X3NpemUgaW5zdGVhZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgImludGVsX3N1Yl9ncm91cF9hdmNfaW1lX3JlZl93aW5kb3dfc2l6ZSIpKSkKdXNob3J0MiBfX292bGQKaW50ZWxfc3ViX2dyb3VwX2ltZV9yZWZfd2luZG93X3NpemUodWNoYXIgc2VhcmNoX3dpbmRvd19jb25maWcsIGNoYXIgZHVhbF9yZWYpOwp1c2hvcnQyIF9fb3ZsZCBpbnRlbF9zdWJfZ3JvdXBfYXZjX2ltZV9yZWZfd2luZG93X3NpemUoCiAgICB1Y2hhciBzZWFyY2hfd2luZG93X2NvbmZpZywgY2hhciBkdWFsX3JlZik7CnNob3J0MiBfX292bGQgaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfYWRqdXN0X3JlZl9vZmZzZXQoCiAgICBzaG9ydDIgcmVmX29mZnNldCwgdXNob3J0MiBzcmNfY29vcmQsIHVzaG9ydDIgcmVmX3dpbmRvd19zaXplLAogICAgdXNob3J0MiBpbWFnZV9zaXplKTsKCmludGVsX3N1Yl9ncm91cF9hdmNfaW1lX3Jlc3VsdF90IF9fb3ZsZAppbnRlbF9zdWJfZ3JvdXBfYXZjX2ltZV9ldmFsdWF0ZV93aXRoX3NpbmdsZV9yZWZlcmVuY2UoCiAgICByZWFkX29ubHkgaW1hZ2UyZF90IHNyY19pbWFnZSwgcmVhZF9vbmx5IGltYWdlMmRfdCByZWZfaW1hZ2UsCiAgICBzYW1wbGVyX3Qgdm1lX21lZGlhX3NhbXBsZXIsIGludGVsX3N1Yl9ncm91cF9hdmNfaW1lX3BheWxvYWRfdCBwYXlsb2FkKTsKaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfcmVzdWx0X3QgX19vdmxkCmludGVsX3N1Yl9ncm91cF9hdmNfaW1lX2V2YWx1YXRlX3dpdGhfZHVhbF9yZWZlcmVuY2UoCiAgICByZWFkX29ubHkgaW1hZ2UyZF90IHNyY19pbWFnZSwgcmVhZF9vbmx5IGltYWdlMmRfdCBmd2RfcmVmX2ltYWdlLAogICAgcmVhZF9vbmx5IGltYWdlMmRfdCBid2RfcmVmX2ltYWdlLCBzYW1wbGVyX3Qgdm1lX21lZGlhX3NhbXBsZXIsCiAgICBpbnRlbF9zdWJfZ3JvdXBfYXZjX2ltZV9wYXlsb2FkX3QgcGF5bG9hZCk7CmludGVsX3N1Yl9ncm91cF9hdmNfaW1lX3Jlc3VsdF9zaW5nbGVfcmVmZXJlbmNlX3N0cmVhbW91dF90IF9fb3ZsZAppbnRlbF9zdWJfZ3JvdXBfYXZjX2ltZV9ldmFsdWF0ZV93aXRoX3NpbmdsZV9yZWZlcmVuY2Vfc3RyZWFtb3V0KAogICAgcmVhZF9vbmx5IGltYWdlMmRfdCBzcmNfaW1hZ2UsIHJlYWRfb25seSBpbWFnZTJkX3QgcmVmX2ltYWdlLAogICAgc2FtcGxlcl90IHZtZV9tZWRpYV9zYW1wbGVyLCBpbnRlbF9zdWJfZ3JvdXBfYXZjX2ltZV9wYXlsb2FkX3QgcGF5bG9hZCk7CmludGVsX3N1Yl9ncm91cF9hdmNfaW1lX3Jlc3VsdF9kdWFsX3JlZmVyZW5jZV9zdHJlYW1vdXRfdCBfX292bGQKaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfZXZhbHVhdGVfd2l0aF9kdWFsX3JlZmVyZW5jZV9zdHJlYW1vdXQoCiAgICByZWFkX29ubHkgaW1hZ2UyZF90IHNyY19pbWFnZSwgcmVhZF9vbmx5IGltYWdlMmRfdCBmd2RfcmVmX2ltYWdlLAogICAgcmVhZF9vbmx5IGltYWdlMmRfdCBid2RfcmVmX2ltYWdlLCBzYW1wbGVyX3Qgdm1lX21lZGlhX3NhbXBsZXIsCiAgICBpbnRlbF9zdWJfZ3JvdXBfYXZjX2ltZV9wYXlsb2FkX3QgcGF5bG9hZCk7CmludGVsX3N1Yl9ncm91cF9hdmNfaW1lX3Jlc3VsdF90IF9fb3ZsZAppbnRlbF9zdWJfZ3JvdXBfYXZjX2ltZV9ldmFsdWF0ZV93aXRoX3NpbmdsZV9yZWZlcmVuY2Vfc3RyZWFtaW4oCiAgICByZWFkX29ubHkgaW1hZ2UyZF90IHNyY19pbWFnZSwgcmVhZF9vbmx5IGltYWdlMmRfdCByZWZfaW1hZ2UsCiAgICBzYW1wbGVyX3Qgdm1lX21lZGlhX3NhbXBsZXIsIGludGVsX3N1Yl9ncm91cF9hdmNfaW1lX3BheWxvYWRfdCBwYXlsb2FkLAogICAgaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfc2luZ2xlX3JlZmVyZW5jZV9zdHJlYW1pbl90IHN0cmVhbWluX2NvbXBvbmVudHMpOwppbnRlbF9zdWJfZ3JvdXBfYXZjX2ltZV9yZXN1bHRfdCBfX292bGQKaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfZXZhbHVhdGVfd2l0aF9kdWFsX3JlZmVyZW5jZV9zdHJlYW1pbigKICAgIHJlYWRfb25seSBpbWFnZTJkX3Qgc3JjX2ltYWdlLCByZWFkX29ubHkgaW1hZ2UyZF90IGZ3ZF9yZWZfaW1hZ2UsCiAgICByZWFkX29ubHkgaW1hZ2UyZF90IGJ3ZF9yZWZfaW1hZ2UsIHNhbXBsZXJfdCB2bWVfbWVkaWFfc2FtcGxlciwKICAgIGludGVsX3N1Yl9ncm91cF9hdmNfaW1lX3BheWxvYWRfdCBwYXlsb2FkLAogICAgaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfZHVhbF9yZWZlcmVuY2Vfc3RyZWFtaW5fdCBzdHJlYW1pbl9jb21wb25lbnRzKTsKaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfcmVzdWx0X3NpbmdsZV9yZWZlcmVuY2Vfc3RyZWFtb3V0X3QgX19vdmxkCmludGVsX3N1Yl9ncm91cF9hdmNfaW1lX2V2YWx1YXRlX3dpdGhfc2luZ2xlX3JlZmVyZW5jZV9zdHJlYW1pbm91dCgKICAgIHJlYWRfb25seSBpbWFnZTJkX3Qgc3JjX2ltYWdlLCByZWFkX29ubHkgaW1hZ2UyZF90IHJlZl9pbWFnZSwKICAgIHNhbXBsZXJfdCB2bWVfbWVkaWFfc2FtcGxlciwgaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfcGF5bG9hZF90IHBheWxvYWQsCiAgICBpbnRlbF9zdWJfZ3JvdXBfYXZjX2ltZV9zaW5nbGVfcmVmZXJlbmNlX3N0cmVhbWluX3Qgc3RyZWFtaW5fY29tcG9uZW50cyk7CmludGVsX3N1Yl9ncm91cF9hdmNfaW1lX3Jlc3VsdF9kdWFsX3JlZmVyZW5jZV9zdHJlYW1vdXRfdCBfX292bGQKaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfZXZhbHVhdGVfd2l0aF9kdWFsX3JlZmVyZW5jZV9zdHJlYW1pbm91dCgKICAgIHJlYWRfb25seSBpbWFnZTJkX3Qgc3JjX2ltYWdlLCByZWFkX29ubHkgaW1hZ2UyZF90IGZ3ZF9yZWZfaW1hZ2UsCiAgICByZWFkX29ubHkgaW1hZ2UyZF90IGJ3ZF9yZWZfaW1hZ2UsIHNhbXBsZXJfdCB2bWVfbWVkaWFfc2FtcGxlciwKICAgIGludGVsX3N1Yl9ncm91cF9hdmNfaW1lX3BheWxvYWRfdCBwYXlsb2FkLAogICAgaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfZHVhbF9yZWZlcmVuY2Vfc3RyZWFtaW5fdCBzdHJlYW1pbl9jb21wb25lbnRzKTsKCmludGVsX3N1Yl9ncm91cF9hdmNfaW1lX3NpbmdsZV9yZWZlcmVuY2Vfc3RyZWFtaW5fdCBfX292bGQKaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfZ2V0X3NpbmdsZV9yZWZlcmVuY2Vfc3RyZWFtaW4oCiAgICBpbnRlbF9zdWJfZ3JvdXBfYXZjX2ltZV9yZXN1bHRfc2luZ2xlX3JlZmVyZW5jZV9zdHJlYW1vdXRfdCByZXN1bHQpOwppbnRlbF9zdWJfZ3JvdXBfYXZjX2ltZV9kdWFsX3JlZmVyZW5jZV9zdHJlYW1pbl90IF9fb3ZsZAppbnRlbF9zdWJfZ3JvdXBfYXZjX2ltZV9nZXRfZHVhbF9yZWZlcmVuY2Vfc3RyZWFtaW4oCiAgICBpbnRlbF9zdWJfZ3JvdXBfYXZjX2ltZV9yZXN1bHRfZHVhbF9yZWZlcmVuY2Vfc3RyZWFtb3V0X3QgcmVzdWx0KTsKaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfcmVzdWx0X3QgX19vdmxkCmludGVsX3N1Yl9ncm91cF9hdmNfaW1lX3N0cmlwX3NpbmdsZV9yZWZlcmVuY2Vfc3RyZWFtb3V0KAogICAgaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfcmVzdWx0X3NpbmdsZV9yZWZlcmVuY2Vfc3RyZWFtb3V0X3QgcmVzdWx0KTsKaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfcmVzdWx0X3QgX19vdmxkCmludGVsX3N1Yl9ncm91cF9hdmNfaW1lX3N0cmlwX2R1YWxfcmVmZXJlbmNlX3N0cmVhbW91dCgKICAgIGludGVsX3N1Yl9ncm91cF9hdmNfaW1lX3Jlc3VsdF9kdWFsX3JlZmVyZW5jZV9zdHJlYW1vdXRfdCByZXN1bHQpOwoKdWludCBfX292bGQgaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfZ2V0X3N0cmVhbW91dF9tYWpvcl9zaGFwZV9tb3Rpb25fdmVjdG9ycygKICAgIGludGVsX3N1Yl9ncm91cF9hdmNfaW1lX3Jlc3VsdF9zaW5nbGVfcmVmZXJlbmNlX3N0cmVhbW91dF90IHJlc3VsdCwKICAgIHVjaGFyIG1ham9yX3NoYXBlKTsKdXNob3J0IF9fb3ZsZCBpbnRlbF9zdWJfZ3JvdXBfYXZjX2ltZV9nZXRfc3RyZWFtb3V0X21ham9yX3NoYXBlX2Rpc3RvcnRpb25zKAogICAgaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfcmVzdWx0X3NpbmdsZV9yZWZlcmVuY2Vfc3RyZWFtb3V0X3QgcmVzdWx0LAogICAgdWNoYXIgbWFqb3Jfc2hhcGUpOwp1Y2hhciBfX292bGQgaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfZ2V0X3N0cmVhbW91dF9tYWpvcl9zaGFwZV9yZWZlcmVuY2VfaWRzKAogICAgaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfcmVzdWx0X3NpbmdsZV9yZWZlcmVuY2Vfc3RyZWFtb3V0X3QgcmVzdWx0LAogICAgdWNoYXIgbWFqb3Jfc2hhcGUpOwp1aW50IF9fb3ZsZCBpbnRlbF9zdWJfZ3JvdXBfYXZjX2ltZV9nZXRfc3RyZWFtb3V0X21ham9yX3NoYXBlX21vdGlvbl92ZWN0b3JzKAogICAgaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfcmVzdWx0X2R1YWxfcmVmZXJlbmNlX3N0cmVhbW91dF90IHJlc3VsdCwKICAgIHVjaGFyIG1ham9yX3NoYXBlLCB1Y2hhciBkaXJlY3Rpb24pOwp1c2hvcnQgX19vdmxkIGludGVsX3N1Yl9ncm91cF9hdmNfaW1lX2dldF9zdHJlYW1vdXRfbWFqb3Jfc2hhcGVfZGlzdG9ydGlvbnMoCiAgICBpbnRlbF9zdWJfZ3JvdXBfYXZjX2ltZV9yZXN1bHRfZHVhbF9yZWZlcmVuY2Vfc3RyZWFtb3V0X3QgcmVzdWx0LAogICAgdWNoYXIgbWFqb3Jfc2hhcGUsIHVjaGFyIGRpcmVjdGlvbik7CnVjaGFyIF9fb3ZsZCBpbnRlbF9zdWJfZ3JvdXBfYXZjX2ltZV9nZXRfc3RyZWFtb3V0X21ham9yX3NoYXBlX3JlZmVyZW5jZV9pZHMoCiAgICBpbnRlbF9zdWJfZ3JvdXBfYXZjX2ltZV9yZXN1bHRfZHVhbF9yZWZlcmVuY2Vfc3RyZWFtb3V0X3QgcmVzdWx0LAogICAgdWNoYXIgbWFqb3Jfc2hhcGUsIHVjaGFyIGRpcmVjdGlvbik7Cgp1Y2hhciBfX292bGQgaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfZ2V0X2JvcmRlcl9yZWFjaGVkKAogICAgdWNoYXIgaW1hZ2Vfc2VsZWN0LCBpbnRlbF9zdWJfZ3JvdXBfYXZjX2ltZV9yZXN1bHRfdCByZXN1bHQpOwp1Y2hhciBfX292bGQgaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfZ2V0X3RydW5jYXRlZF9zZWFyY2hfaW5kaWNhdGlvbigKICAgIGludGVsX3N1Yl9ncm91cF9hdmNfaW1lX3Jlc3VsdF90IHJlc3VsdCk7CnVjaGFyIF9fb3ZsZAppbnRlbF9zdWJfZ3JvdXBfYXZjX2ltZV9nZXRfdW5pZGlyZWN0aW9uYWxfZWFybHlfc2VhcmNoX3Rlcm1pbmF0aW9uKAogICAgaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfcmVzdWx0X3QgcmVzdWx0KTsKdWludCBfX292bGQgaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfZ2V0X3dlaWdodGluZ19wYXR0ZXJuX21pbmltdW1fbW90aW9uX3ZlY3RvcigKICAgIGludGVsX3N1Yl9ncm91cF9hdmNfaW1lX3Jlc3VsdF90IHJlc3VsdCk7CnVzaG9ydCBfX292bGQgaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfZ2V0X3dlaWdodGluZ19wYXR0ZXJuX21pbmltdW1fZGlzdG9ydGlvbigKICAgIGludGVsX3N1Yl9ncm91cF9hdmNfaW1lX3Jlc3VsdF90IHJlc3VsdCk7CgovLyBSRUYgYnVpbHQtaW4gZnVuY3Rpb25zCmludGVsX3N1Yl9ncm91cF9hdmNfcmVmX3BheWxvYWRfdCBfX292bGQKaW50ZWxfc3ViX2dyb3VwX2F2Y19mbWVfaW5pdGlhbGl6ZSgKICAgIHVzaG9ydDIgc3JjX2Nvb3JkLCB1bG9uZyBtb3Rpb25fdmVjdG9ycywgdWNoYXIgbWFqb3Jfc2hhcGVzLAogICAgdWNoYXIgbWlub3Jfc2hhcGVzLCB1Y2hhciBkaXJlY3Rpb25zLCB1Y2hhciBwaXhlbF9yZXNvbHV0aW9uLAogICAgdWNoYXIgc2FkX2FkanVzdG1lbnQpOwppbnRlbF9zdWJfZ3JvdXBfYXZjX3JlZl9wYXlsb2FkX3QgX19vdmxkCmludGVsX3N1Yl9ncm91cF9hdmNfYm1lX2luaXRpYWxpemUoCiAgICB1c2hvcnQyIHNyY19jb29yZCwgdWxvbmcgbW90aW9uX3ZlY3RvcnMsIHVjaGFyIG1ham9yX3NoYXBlcywKICAgIHVjaGFyIG1pbm9yX3NoYXBlcywgdWNoYXIgZGlyZWN0aW9ucywgdWNoYXIgcGl4ZWxfcmVzb2x1dGlvbiwKICAgIHVjaGFyIGJpZGlyZWN0aW9uYWxfd2VpZ2h0LCB1Y2hhciBzYWRfYWRqdXN0bWVudCk7CgppbnRlbF9zdWJfZ3JvdXBfYXZjX3JlZl9wYXlsb2FkX3QgX19vdmxkCmludGVsX3N1Yl9ncm91cF9hdmNfcmVmX3NldF9iaWRpcmVjdGlvbmFsX21peF9kaXNhYmxlKAogICAgaW50ZWxfc3ViX2dyb3VwX2F2Y19yZWZfcGF5bG9hZF90IHBheWxvYWQpOwppbnRlbF9zdWJfZ3JvdXBfYXZjX3JlZl9wYXlsb2FkX3QgX19vdmxkCmludGVsX3N1Yl9ncm91cF9hdmNfcmVmX3NldF9iaWxpbmVhcl9maWx0ZXJfZW5hYmxlKAogICAgaW50ZWxfc3ViX2dyb3VwX2F2Y19yZWZfcGF5bG9hZF90IHBheWxvYWQpOwoKaW50ZWxfc3ViX2dyb3VwX2F2Y19yZWZfcmVzdWx0X3QgX19vdmxkCmludGVsX3N1Yl9ncm91cF9hdmNfcmVmX2V2YWx1YXRlX3dpdGhfc2luZ2xlX3JlZmVyZW5jZSgKICAgIHJlYWRfb25seSBpbWFnZTJkX3Qgc3JjX2ltYWdlLCByZWFkX29ubHkgaW1hZ2UyZF90IHJlZl9pbWFnZSwKICAgIHNhbXBsZXJfdCB2bWVfbWVkaWFfc2FtcGxlciwgaW50ZWxfc3ViX2dyb3VwX2F2Y19yZWZfcGF5bG9hZF90IHBheWxvYWQpOwppbnRlbF9zdWJfZ3JvdXBfYXZjX3JlZl9yZXN1bHRfdCBfX292bGQKaW50ZWxfc3ViX2dyb3VwX2F2Y19yZWZfZXZhbHVhdGVfd2l0aF9kdWFsX3JlZmVyZW5jZSgKICAgIHJlYWRfb25seSBpbWFnZTJkX3Qgc3JjX2ltYWdlLCByZWFkX29ubHkgaW1hZ2UyZF90IGZ3ZF9yZWZfaW1hZ2UsCiAgICByZWFkX29ubHkgaW1hZ2UyZF90IGJ3ZF9yZWZfaW1hZ2UsIHNhbXBsZXJfdCB2bWVfbWVkaWFfc2FtcGxlciwKICAgIGludGVsX3N1Yl9ncm91cF9hdmNfcmVmX3BheWxvYWRfdCBwYXlsb2FkKTsKaW50ZWxfc3ViX2dyb3VwX2F2Y19yZWZfcmVzdWx0X3QgX19vdmxkCmludGVsX3N1Yl9ncm91cF9hdmNfcmVmX2V2YWx1YXRlX3dpdGhfbXVsdGlfcmVmZXJlbmNlKAogICAgcmVhZF9vbmx5IGltYWdlMmRfdCBzcmNfaW1hZ2UsIHVpbnQgcGFja2VkX3JlZmVyZW5jZV9pZHMsCiAgICBzYW1wbGVyX3Qgdm1lX21lZGlhX3NhbXBsZXIsIGludGVsX3N1Yl9ncm91cF9hdmNfcmVmX3BheWxvYWRfdCBwYXlsb2FkKTsKaW50ZWxfc3ViX2dyb3VwX2F2Y19yZWZfcmVzdWx0X3QgX19vdmxkCmludGVsX3N1Yl9ncm91cF9hdmNfcmVmX2V2YWx1YXRlX3dpdGhfbXVsdGlfcmVmZXJlbmNlKAogICAgcmVhZF9vbmx5IGltYWdlMmRfdCBzcmNfaW1hZ2UsIHVpbnQgcGFja2VkX3JlZmVyZW5jZV9pZHMsCiAgICB1Y2hhciBwYWNrZWRfcmVmZXJlbmNlX2ZpZWxkX3BvbGFyaXRpZXMsIHNhbXBsZXJfdCB2bWVfbWVkaWFfc2FtcGxlciwKICAgIGludGVsX3N1Yl9ncm91cF9hdmNfcmVmX3BheWxvYWRfdCBwYXlsb2FkKTsKCi8vIFNJQyBidWlsdC1pbiBmdW5jdGlvbnMKaW50ZWxfc3ViX2dyb3VwX2F2Y19zaWNfcGF5bG9hZF90IF9fb3ZsZAppbnRlbF9zdWJfZ3JvdXBfYXZjX3NpY19pbml0aWFsaXplKAogICAgdXNob3J0MiBzcmNfY29vcmQpOwppbnRlbF9zdWJfZ3JvdXBfYXZjX3NpY19wYXlsb2FkX3QgX19vdmxkCmludGVsX3N1Yl9ncm91cF9hdmNfc2ljX2NvbmZpZ3VyZV9za2MoCiAgICB1aW50IHNraXBfYmxvY2tfcGFydGl0aW9uX3R5cGUsIHVpbnQgc2tpcF9tb3Rpb25fdmVjdG9yX21hc2ssCiAgICB1bG9uZyBtb3Rpb25fdmVjdG9ycywgdWNoYXIgYmlkaXJlY3Rpb25hbF93ZWlnaHQsIHVjaGFyIHNraXBfc2FkX2FkanVzdG1lbnQsCiAgICBpbnRlbF9zdWJfZ3JvdXBfYXZjX3NpY19wYXlsb2FkX3QgcGF5bG9hZCk7CmludGVsX3N1Yl9ncm91cF9hdmNfc2ljX3BheWxvYWRfdCBfX292bGQKaW50ZWxfc3ViX2dyb3VwX2F2Y19zaWNfY29uZmlndXJlX2lwZSgKICAgIHVjaGFyIGx1bWFfaW50cmFfcGFydGl0aW9uX21hc2ssIHVjaGFyIGludHJhX25laWdoYm91cl9hdmFpbGFiaWx0eSwKICAgIHVjaGFyIGxlZnRfZWRnZV9sdW1hX3BpeGVscywgdWNoYXIgdXBwZXJfbGVmdF9jb3JuZXJfbHVtYV9waXhlbCwKICAgIHVjaGFyIHVwcGVyX2VkZ2VfbHVtYV9waXhlbHMsIHVjaGFyIHVwcGVyX3JpZ2h0X2VkZ2VfbHVtYV9waXhlbHMsCiAgICB1Y2hhciBpbnRyYV9zYWRfYWRqdXN0bWVudCwgaW50ZWxfc3ViX2dyb3VwX2F2Y19zaWNfcGF5bG9hZF90IHBheWxvYWQpOwppbnRlbF9zdWJfZ3JvdXBfYXZjX3NpY19wYXlsb2FkX3QgX19vdmxkCmludGVsX3N1Yl9ncm91cF9hdmNfc2ljX2NvbmZpZ3VyZV9pcGUoCiAgICB1Y2hhciBsdW1hX2ludHJhX3BhcnRpdGlvbl9tYXNrLCB1Y2hhciBpbnRyYV9uZWlnaGJvdXJfYXZhaWxhYmlsdHksCiAgICB1Y2hhciBsZWZ0X2VkZ2VfbHVtYV9waXhlbHMsIHVjaGFyIHVwcGVyX2xlZnRfY29ybmVyX2x1bWFfcGl4ZWwsCiAgICB1Y2hhciB1cHBlcl9lZGdlX2x1bWFfcGl4ZWxzLCB1Y2hhciB1cHBlcl9yaWdodF9lZGdlX2x1bWFfcGl4ZWxzLAogICAgdXNob3J0IGxlZnRfZWRnZV9jaHJvbWFfcGl4ZWxzLCB1c2hvcnQgdXBwZXJfbGVmdF9jb3JuZXJfY2hyb21hX3BpeGVsLAogICAgdXNob3J0IHVwcGVyX2VkZ2VfY2hyb21hX3BpeGVscywgdWNoYXIgaW50cmFfc2FkX2FkanVzdG1lbnQsCiAgICBpbnRlbF9zdWJfZ3JvdXBfYXZjX3NpY19wYXlsb2FkX3QgcGF5bG9hZCk7CnVpbnQgX19vdmxkCmludGVsX3N1Yl9ncm91cF9hdmNfc2ljX2dldF9tb3Rpb25fdmVjdG9yX21hc2soCiAgICB1aW50IHNraXBfYmxvY2tfcGFydGl0aW9uX3R5cGUsIHVjaGFyIGRpcmVjdGlvbik7CgppbnRlbF9zdWJfZ3JvdXBfYXZjX3NpY19wYXlsb2FkX3QgX19vdmxkCmludGVsX3N1Yl9ncm91cF9hdmNfc2ljX3NldF9pbnRyYV9sdW1hX3NoYXBlX3BlbmFsdHkoCiAgICB1aW50IHBhY2tlZF9zaGFwZV9jb3N0LCBpbnRlbF9zdWJfZ3JvdXBfYXZjX3NpY19wYXlsb2FkX3QgcGF5bG9hZCk7CmludGVsX3N1Yl9ncm91cF9hdmNfc2ljX3BheWxvYWRfdCBfX292bGQKaW50ZWxfc3ViX2dyb3VwX2F2Y19zaWNfc2V0X2ludHJhX2x1bWFfbW9kZV9jb3N0X2Z1bmN0aW9uKAogICAgdWNoYXIgbHVtYV9tb2RlX3BlbmFsdHksIHVpbnQgbHVtYV9wYWNrZWRfbmVpZ2hib3JfbW9kZXMsCiAgICB1aW50IGx1bWFfcGFja2VkX25vbl9kY19wZW5hbHR5LCBpbnRlbF9zdWJfZ3JvdXBfYXZjX3NpY19wYXlsb2FkX3QgcGF5bG9hZCk7CmludGVsX3N1Yl9ncm91cF9hdmNfc2ljX3BheWxvYWRfdCBfX292bGQKaW50ZWxfc3ViX2dyb3VwX2F2Y19zaWNfc2V0X2ludHJhX2Nocm9tYV9tb2RlX2Nvc3RfZnVuY3Rpb24oCiAgICB1Y2hhciBjaHJvbWFfbW9kZV9wZW5hbHR5LCBpbnRlbF9zdWJfZ3JvdXBfYXZjX3NpY19wYXlsb2FkX3QgcGF5bG9hZCk7CgppbnRlbF9zdWJfZ3JvdXBfYXZjX3NpY19wYXlsb2FkX3QgX19vdmxkCmludGVsX3N1Yl9ncm91cF9hdmNfc2ljX3NldF9za2NfYmlsaW5lYXJfZmlsdGVyX2VuYWJsZSgKICAgIGludGVsX3N1Yl9ncm91cF9hdmNfc2ljX3BheWxvYWRfdCBwYXlsb2FkKTsKaW50ZWxfc3ViX2dyb3VwX2F2Y19zaWNfcGF5bG9hZF90IF9fb3ZsZAppbnRlbF9zdWJfZ3JvdXBfYXZjX3NpY19zZXRfc2tjX2ZvcndhcmRfdHJhbnNmb3JtX2VuYWJsZSgKICAgIHVsb25nIHBhY2tlZF9zYWRfY29lZmZpY2llbnRzLCBpbnRlbF9zdWJfZ3JvdXBfYXZjX3NpY19wYXlsb2FkX3QgcGF5bG9hZCk7CmludGVsX3N1Yl9ncm91cF9hdmNfc2ljX3BheWxvYWRfdCBfX292bGQKaW50ZWxfc3ViX2dyb3VwX2F2Y19zaWNfc2V0X2Jsb2NrX2Jhc2VkX3Jhd19za2lwX3NhZCgKICAgIHVjaGFyIGJsb2NrX2Jhc2VkX3NraXBfdHlwZSwKICAgIGludGVsX3N1Yl9ncm91cF9hdmNfc2ljX3BheWxvYWRfdCBwYXlsb2FkKTsKCmludGVsX3N1Yl9ncm91cF9hdmNfc2ljX3Jlc3VsdF90IF9fb3ZsZAppbnRlbF9zdWJfZ3JvdXBfYXZjX3NpY19ldmFsdWF0ZV9pcGUoCiAgICByZWFkX29ubHkgaW1hZ2UyZF90IHNyY19pbWFnZSwgc2FtcGxlcl90IHZtZV9tZWRpYV9zYW1wbGVyLAogICAgaW50ZWxfc3ViX2dyb3VwX2F2Y19zaWNfcGF5bG9hZF90IHBheWxvYWQpOwppbnRlbF9zdWJfZ3JvdXBfYXZjX3NpY19yZXN1bHRfdCBfX292bGQKaW50ZWxfc3ViX2dyb3VwX2F2Y19zaWNfZXZhbHVhdGVfd2l0aF9zaW5nbGVfcmVmZXJlbmNlKAogICAgcmVhZF9vbmx5IGltYWdlMmRfdCBzcmNfaW1hZ2UsIHJlYWRfb25seSBpbWFnZTJkX3QgcmVmX2ltYWdlLAogICAgc2FtcGxlcl90IHZtZV9tZWRpYV9zYW1wbGVyLCBpbnRlbF9zdWJfZ3JvdXBfYXZjX3NpY19wYXlsb2FkX3QgcGF5bG9hZCk7CmludGVsX3N1Yl9ncm91cF9hdmNfc2ljX3Jlc3VsdF90IF9fb3ZsZAppbnRlbF9zdWJfZ3JvdXBfYXZjX3NpY19ldmFsdWF0ZV93aXRoX2R1YWxfcmVmZXJlbmNlKAogICAgcmVhZF9vbmx5IGltYWdlMmRfdCBzcmNfaW1hZ2UsIHJlYWRfb25seSBpbWFnZTJkX3QgZndkX3JlZl9pbWFnZSwKICAgIHJlYWRfb25seSBpbWFnZTJkX3QgYndkX3JlZl9pbWFnZSwgc2FtcGxlcl90IHZtZV9tZWRpYV9zYW1wbGVyLAogICAgaW50ZWxfc3ViX2dyb3VwX2F2Y19zaWNfcGF5bG9hZF90IHBheWxvYWQpOwppbnRlbF9zdWJfZ3JvdXBfYXZjX3NpY19yZXN1bHRfdCBfX292bGQKaW50ZWxfc3ViX2dyb3VwX2F2Y19zaWNfZXZhbHVhdGVfd2l0aF9tdWx0aV9yZWZlcmVuY2UoCiAgICByZWFkX29ubHkgaW1hZ2UyZF90IHNyY19pbWFnZSwgdWludCBwYWNrZWRfcmVmZXJlbmNlX2lkcywKICAgIHNhbXBsZXJfdCB2bWVfbWVkaWFfc2FtcGxlciwgaW50ZWxfc3ViX2dyb3VwX2F2Y19zaWNfcGF5bG9hZF90IHBheWxvYWQpOwppbnRlbF9zdWJfZ3JvdXBfYXZjX3NpY19yZXN1bHRfdCBfX292bGQKaW50ZWxfc3ViX2dyb3VwX2F2Y19zaWNfZXZhbHVhdGVfd2l0aF9tdWx0aV9yZWZlcmVuY2UoCiAgICByZWFkX29ubHkgaW1hZ2UyZF90IHNyY19pbWFnZSwgdWludCBwYWNrZWRfcmVmZXJlbmNlX2lkcywKICAgIHVjaGFyIHBhY2tlZF9yZWZlcmVuY2VfZmllbGRfcG9sYXJpdGllcywgc2FtcGxlcl90IHZtZV9tZWRpYV9zYW1wbGVyLAogICAgaW50ZWxfc3ViX2dyb3VwX2F2Y19zaWNfcGF5bG9hZF90IHBheWxvYWQpOwoKdWNoYXIgX19vdmxkIGludGVsX3N1Yl9ncm91cF9hdmNfc2ljX2dldF9pcGVfbHVtYV9zaGFwZSgKICAgIGludGVsX3N1Yl9ncm91cF9hdmNfc2ljX3Jlc3VsdF90IHJlc3VsdCk7CnVzaG9ydCBfX292bGQgaW50ZWxfc3ViX2dyb3VwX2F2Y19zaWNfZ2V0X2Jlc3RfaXBlX2x1bWFfZGlzdG9ydGlvbigKICAgIGludGVsX3N1Yl9ncm91cF9hdmNfc2ljX3Jlc3VsdF90IHJlc3VsdCk7CnVzaG9ydCBfX292bGQgaW50ZWxfc3ViX2dyb3VwX2F2Y19zaWNfZ2V0X2Jlc3RfaXBlX2Nocm9tYV9kaXN0b3J0aW9uKAogICAgaW50ZWxfc3ViX2dyb3VwX2F2Y19zaWNfcmVzdWx0X3QgcmVzdWx0KTsKdWxvbmcgX19vdmxkIGludGVsX3N1Yl9ncm91cF9hdmNfc2ljX2dldF9wYWNrZWRfaXBlX2x1bWFfbW9kZXMoCiAgICBpbnRlbF9zdWJfZ3JvdXBfYXZjX3NpY19yZXN1bHRfdCByZXN1bHQpOwp1Y2hhciBfX292bGQgaW50ZWxfc3ViX2dyb3VwX2F2Y19zaWNfZ2V0X2lwZV9jaHJvbWFfbW9kZSgKICAgIGludGVsX3N1Yl9ncm91cF9hdmNfc2ljX3Jlc3VsdF90IHJlc3VsdCk7CnVpbnQgX19vdmxkIGludGVsX3N1Yl9ncm91cF9hdmNfc2ljX2dldF9wYWNrZWRfc2tjX2x1bWFfY291bnRfdGhyZXNob2xkKAogICAgaW50ZWxfc3ViX2dyb3VwX2F2Y19zaWNfcmVzdWx0X3QgcmVzdWx0KTsKdWxvbmcgX19vdmxkIGludGVsX3N1Yl9ncm91cF9hdmNfc2ljX2dldF9wYWNrZWRfc2tjX2x1bWFfc3VtX3RocmVzaG9sZCgKICAgIGludGVsX3N1Yl9ncm91cF9hdmNfc2ljX3Jlc3VsdF90IHJlc3VsdCk7CnVzaG9ydCBfX292bGQgaW50ZWxfc3ViX2dyb3VwX2F2Y19zaWNfZ2V0X2ludGVyX3Jhd19zYWRzKAogICAgaW50ZWxfc3ViX2dyb3VwX2F2Y19zaWNfcmVzdWx0X3QgcmVzdWx0KTsKCi8vIFdyYXBwZXJzCmludGVsX3N1Yl9ncm91cF9hdmNfaW1lX3BheWxvYWRfdCBfX292bGQKaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfc2V0X2ludGVyX2Jhc2VfbXVsdGlfcmVmZXJlbmNlX3BlbmFsdHkoCiAgICB1Y2hhciByZWZlcmVuY2VfYmFzZV9wZW5hbHR5LCBpbnRlbF9zdWJfZ3JvdXBfYXZjX2ltZV9wYXlsb2FkX3QgcGF5bG9hZCk7CmludGVsX3N1Yl9ncm91cF9hdmNfcmVmX3BheWxvYWRfdCBfX292bGQKaW50ZWxfc3ViX2dyb3VwX2F2Y19yZWZfc2V0X2ludGVyX2Jhc2VfbXVsdGlfcmVmZXJlbmNlX3BlbmFsdHkoCiAgICB1Y2hhciByZWZlcmVuY2VfYmFzZV9wZW5hbHR5LCBpbnRlbF9zdWJfZ3JvdXBfYXZjX3JlZl9wYXlsb2FkX3QgcGF5bG9hZCk7CmludGVsX3N1Yl9ncm91cF9hdmNfc2ljX3BheWxvYWRfdCBfX292bGQKaW50ZWxfc3ViX2dyb3VwX2F2Y19zaWNfc2V0X2ludGVyX2Jhc2VfbXVsdGlfcmVmZXJlbmNlX3BlbmFsdHkoCiAgICB1Y2hhciByZWZlcmVuY2VfYmFzZV9wZW5hbHR5LCBpbnRlbF9zdWJfZ3JvdXBfYXZjX3NpY19wYXlsb2FkX3QgcGF5bG9hZCk7CgppbnRlbF9zdWJfZ3JvdXBfYXZjX2ltZV9wYXlsb2FkX3QgX19vdmxkCmludGVsX3N1Yl9ncm91cF9hdmNfaW1lX3NldF9pbnRlcl9zaGFwZV9wZW5hbHR5KAogICAgdWxvbmcgcGFja2VkX3NoYXBlX2Nvc3QsIGludGVsX3N1Yl9ncm91cF9hdmNfaW1lX3BheWxvYWRfdCBwYXlsb2FkKTsKaW50ZWxfc3ViX2dyb3VwX2F2Y19yZWZfcGF5bG9hZF90IF9fb3ZsZAppbnRlbF9zdWJfZ3JvdXBfYXZjX3JlZl9zZXRfaW50ZXJfc2hhcGVfcGVuYWx0eSgKICAgIHVsb25nIHBhY2tlZF9zaGFwZV9jb3N0LCBpbnRlbF9zdWJfZ3JvdXBfYXZjX3JlZl9wYXlsb2FkX3QgcGF5bG9hZCk7CmludGVsX3N1Yl9ncm91cF9hdmNfc2ljX3BheWxvYWRfdCBfX292bGQKaW50ZWxfc3ViX2dyb3VwX2F2Y19zaWNfc2V0X2ludGVyX3NoYXBlX3BlbmFsdHkoCiAgICB1bG9uZyBwYWNrZWRfc2hhcGVfY29zdCwgaW50ZWxfc3ViX2dyb3VwX2F2Y19zaWNfcGF5bG9hZF90IHBheWxvYWQpOwoKaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfcGF5bG9hZF90IF9fb3ZsZAppbnRlbF9zdWJfZ3JvdXBfYXZjX2ltZV9zZXRfaW50ZXJfZGlyZWN0aW9uX3BlbmFsdHkoCiAgICB1Y2hhciBkaXJlY3Rpb25fY29zdCwgaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfcGF5bG9hZF90IHBheWxvYWQpOwppbnRlbF9zdWJfZ3JvdXBfYXZjX3JlZl9wYXlsb2FkX3QgX19vdmxkCmludGVsX3N1Yl9ncm91cF9hdmNfcmVmX3NldF9pbnRlcl9kaXJlY3Rpb25fcGVuYWx0eSgKICAgIHVjaGFyIGRpcmVjdGlvbl9jb3N0LCBpbnRlbF9zdWJfZ3JvdXBfYXZjX3JlZl9wYXlsb2FkX3QgcGF5bG9hZCk7CmludGVsX3N1Yl9ncm91cF9hdmNfc2ljX3BheWxvYWRfdCBfX292bGQKaW50ZWxfc3ViX2dyb3VwX2F2Y19zaWNfc2V0X2ludGVyX2RpcmVjdGlvbl9wZW5hbHR5KAogICAgdWNoYXIgZGlyZWN0aW9uX2Nvc3QsIGludGVsX3N1Yl9ncm91cF9hdmNfc2ljX3BheWxvYWRfdCBwYXlsb2FkKTsKCmludGVsX3N1Yl9ncm91cF9hdmNfaW1lX3BheWxvYWRfdCBfX292bGQKaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfc2V0X21vdGlvbl92ZWN0b3JfY29zdF9mdW5jdGlvbigKICAgIHVsb25nIHBhY2tlZF9jb3N0X2NlbnRlcl9kZWx0YSwgdWludDIgcGFja2VkX2Nvc3RfdGFibGUsCiAgICB1Y2hhciBjb3N0X3ByZWNpc2lvbiwgaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfcGF5bG9hZF90IHBheWxvYWQpOwppbnRlbF9zdWJfZ3JvdXBfYXZjX3JlZl9wYXlsb2FkX3QgX19vdmxkCmludGVsX3N1Yl9ncm91cF9hdmNfcmVmX3NldF9tb3Rpb25fdmVjdG9yX2Nvc3RfZnVuY3Rpb24oCiAgICB1bG9uZyBwYWNrZWRfY29zdF9jZW50ZXJfZGVsdGEsIHVpbnQyIHBhY2tlZF9jb3N0X3RhYmxlLAogICAgdWNoYXIgY29zdF9wcmVjaXNpb24sIGludGVsX3N1Yl9ncm91cF9hdmNfcmVmX3BheWxvYWRfdCBwYXlsb2FkKTsKaW50ZWxfc3ViX2dyb3VwX2F2Y19zaWNfcGF5bG9hZF90IF9fb3ZsZAppbnRlbF9zdWJfZ3JvdXBfYXZjX3NpY19zZXRfbW90aW9uX3ZlY3Rvcl9jb3N0X2Z1bmN0aW9uKAogICAgdWxvbmcgcGFja2VkX2Nvc3RfY2VudGVyX2RlbHRhLCB1aW50MiBwYWNrZWRfY29zdF90YWJsZSwKICAgIHVjaGFyIGNvc3RfcHJlY2lzaW9uLCBpbnRlbF9zdWJfZ3JvdXBfYXZjX3NpY19wYXlsb2FkX3QgcGF5bG9hZCk7CgppbnRlbF9zdWJfZ3JvdXBfYXZjX2ltZV9wYXlsb2FkX3QgX19vdmxkCmludGVsX3N1Yl9ncm91cF9hdmNfaW1lX3NldF9zb3VyY2VfaW50ZXJsYWNlZF9maWVsZF9wb2xhcml0eSgKICAgIHVjaGFyIHNyY19maWVsZF9wb2xhcml0eSwgaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfcGF5bG9hZF90IHBheWxvYWQpOwppbnRlbF9zdWJfZ3JvdXBfYXZjX3JlZl9wYXlsb2FkX3QgX19vdmxkCmludGVsX3N1Yl9ncm91cF9hdmNfcmVmX3NldF9zb3VyY2VfaW50ZXJsYWNlZF9maWVsZF9wb2xhcml0eSgKICAgIHVjaGFyIHNyY19maWVsZF9wb2xhcml0eSwgaW50ZWxfc3ViX2dyb3VwX2F2Y19yZWZfcGF5bG9hZF90IHBheWxvYWQpOwppbnRlbF9zdWJfZ3JvdXBfYXZjX3NpY19wYXlsb2FkX3QgX19vdmxkCmludGVsX3N1Yl9ncm91cF9hdmNfc2ljX3NldF9zb3VyY2VfaW50ZXJsYWNlZF9maWVsZF9wb2xhcml0eSgKICAgIHVjaGFyIHNyY19maWVsZF9wb2xhcml0eSwgaW50ZWxfc3ViX2dyb3VwX2F2Y19zaWNfcGF5bG9hZF90IHBheWxvYWQpOwoKaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfcGF5bG9hZF90IF9fb3ZsZAppbnRlbF9zdWJfZ3JvdXBfYXZjX2ltZV9zZXRfc2luZ2xlX3JlZmVyZW5jZV9pbnRlcmxhY2VkX2ZpZWxkX3BvbGFyaXR5KAogICAgdWNoYXIgcmVmX2ZpZWxkX3BvbGFyaXR5LCBpbnRlbF9zdWJfZ3JvdXBfYXZjX2ltZV9wYXlsb2FkX3QgcGF5bG9hZCk7CmludGVsX3N1Yl9ncm91cF9hdmNfcmVmX3BheWxvYWRfdCBfX292bGQKaW50ZWxfc3ViX2dyb3VwX2F2Y19yZWZfc2V0X3NpbmdsZV9yZWZlcmVuY2VfaW50ZXJsYWNlZF9maWVsZF9wb2xhcml0eSgKICAgIHVjaGFyIHJlZl9maWVsZF9wb2xhcml0eSwgaW50ZWxfc3ViX2dyb3VwX2F2Y19yZWZfcGF5bG9hZF90IHBheWxvYWQpOwppbnRlbF9zdWJfZ3JvdXBfYXZjX3NpY19wYXlsb2FkX3QgX19vdmxkCmludGVsX3N1Yl9ncm91cF9hdmNfc2ljX3NldF9zaW5nbGVfcmVmZXJlbmNlX2ludGVybGFjZWRfZmllbGRfcG9sYXJpdHkoCiAgICB1Y2hhciByZWZfZmllbGRfcG9sYXJpdHksIGludGVsX3N1Yl9ncm91cF9hdmNfc2ljX3BheWxvYWRfdCBwYXlsb2FkKTsKaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfcGF5bG9hZF90IF9fb3ZsZAppbnRlbF9zdWJfZ3JvdXBfYXZjX2ltZV9zZXRfZHVhbF9yZWZlcmVuY2VfaW50ZXJsYWNlZF9maWVsZF9wb2xhcml0aWVzKAogICAgdWNoYXIgZndkX3JlZl9maWVsZF9wb2xhcml0eSwgdWNoYXIgYndkX3JlZl9maWVsZF9wb2xhcml0eSwKICAgIGludGVsX3N1Yl9ncm91cF9hdmNfaW1lX3BheWxvYWRfdCBwYXlsb2FkKTsKaW50ZWxfc3ViX2dyb3VwX2F2Y19yZWZfcGF5bG9hZF90IF9fb3ZsZAppbnRlbF9zdWJfZ3JvdXBfYXZjX3JlZl9zZXRfZHVhbF9yZWZlcmVuY2VfaW50ZXJsYWNlZF9maWVsZF9wb2xhcml0aWVzKAogICAgdWNoYXIgZndkX3JlZl9maWVsZF9wb2xhcml0eSwgdWNoYXIgYndkX3JlZl9maWVsZF9wb2xhcml0eSwKICAgIGludGVsX3N1Yl9ncm91cF9hdmNfcmVmX3BheWxvYWRfdCBwYXlsb2FkKTsKaW50ZWxfc3ViX2dyb3VwX2F2Y19zaWNfcGF5bG9hZF90IF9fb3ZsZAppbnRlbF9zdWJfZ3JvdXBfYXZjX3NpY19zZXRfZHVhbF9yZWZlcmVuY2VfaW50ZXJsYWNlZF9maWVsZF9wb2xhcml0aWVzKAogICAgdWNoYXIgZndkX3JlZl9maWVsZF9wb2xhcml0eSwgdWNoYXIgYndkX3JlZl9maWVsZF9wb2xhcml0eSwKICAgIGludGVsX3N1Yl9ncm91cF9hdmNfc2ljX3BheWxvYWRfdCBwYXlsb2FkKTsKCmludGVsX3N1Yl9ncm91cF9hdmNfaW1lX3BheWxvYWRfdCBfX292bGQKaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfc2V0X2FjX29ubHlfaGFhcigKICAgIGludGVsX3N1Yl9ncm91cF9hdmNfaW1lX3BheWxvYWRfdCBwYXlsb2FkKTsKaW50ZWxfc3ViX2dyb3VwX2F2Y19yZWZfcGF5bG9hZF90IF9fb3ZsZAppbnRlbF9zdWJfZ3JvdXBfYXZjX3JlZl9zZXRfYWNfb25seV9oYWFyKAogICAgaW50ZWxfc3ViX2dyb3VwX2F2Y19yZWZfcGF5bG9hZF90IHBheWxvYWQpOwppbnRlbF9zdWJfZ3JvdXBfYXZjX3NpY19wYXlsb2FkX3QgX19vdmxkCmludGVsX3N1Yl9ncm91cF9hdmNfc2ljX3NldF9hY19vbmx5X2hhYXIoCiAgICBpbnRlbF9zdWJfZ3JvdXBfYXZjX3NpY19wYXlsb2FkX3QgcGF5bG9hZCk7Cgp1bG9uZyBfX292bGQgaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfZ2V0X21vdGlvbl92ZWN0b3JzKAogICAgaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfcmVzdWx0X3QgcmVzdWx0KTsKdWxvbmcgX19vdmxkIGludGVsX3N1Yl9ncm91cF9hdmNfcmVmX2dldF9tb3Rpb25fdmVjdG9ycygKICAgIGludGVsX3N1Yl9ncm91cF9hdmNfcmVmX3Jlc3VsdF90IHJlc3VsdCk7Cgp1c2hvcnQgX19vdmxkIGludGVsX3N1Yl9ncm91cF9hdmNfaW1lX2dldF9pbnRlcl9kaXN0b3J0aW9ucygKICAgIGludGVsX3N1Yl9ncm91cF9hdmNfaW1lX3Jlc3VsdF90IHJlc3VsdCk7CnVzaG9ydCBfX292bGQgaW50ZWxfc3ViX2dyb3VwX2F2Y19yZWZfZ2V0X2ludGVyX2Rpc3RvcnRpb25zKAogICAgaW50ZWxfc3ViX2dyb3VwX2F2Y19yZWZfcmVzdWx0X3QgcmVzdWx0KTsKdXNob3J0IF9fb3ZsZCBpbnRlbF9zdWJfZ3JvdXBfYXZjX3NpY19nZXRfaW50ZXJfZGlzdG9ydGlvbnMoCiAgICBpbnRlbF9zdWJfZ3JvdXBfYXZjX3NpY19yZXN1bHRfdCByZXN1bHQpOwoKdXNob3J0IF9fb3ZsZCBpbnRlbF9zdWJfZ3JvdXBfYXZjX2ltZV9nZXRfYmVzdF9pbnRlcl9kaXN0b3J0aW9uKAogICAgaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfcmVzdWx0X3QgcmVzdWx0KTsKdXNob3J0IF9fb3ZsZCBpbnRlbF9zdWJfZ3JvdXBfYXZjX3JlZl9nZXRfYmVzdF9pbnRlcl9kaXN0b3J0aW9uKAogICAgaW50ZWxfc3ViX2dyb3VwX2F2Y19yZWZfcmVzdWx0X3QgcmVzdWx0KTsKCnVjaGFyIF9fb3ZsZCBpbnRlbF9zdWJfZ3JvdXBfYXZjX2ltZV9nZXRfaW50ZXJfbWFqb3Jfc2hhcGUoCiAgICBpbnRlbF9zdWJfZ3JvdXBfYXZjX2ltZV9yZXN1bHRfdCByZXN1bHQpOwp1Y2hhciBfX292bGQgaW50ZWxfc3ViX2dyb3VwX2F2Y19yZWZfZ2V0X2ludGVyX21ham9yX3NoYXBlKAogICAgaW50ZWxfc3ViX2dyb3VwX2F2Y19yZWZfcmVzdWx0X3QgcmVzdWx0KTsKdWNoYXIgX19vdmxkIGludGVsX3N1Yl9ncm91cF9hdmNfaW1lX2dldF9pbnRlcl9taW5vcl9zaGFwZXMoCiAgICBpbnRlbF9zdWJfZ3JvdXBfYXZjX2ltZV9yZXN1bHRfdCByZXN1bHQpOwp1Y2hhciBfX292bGQgaW50ZWxfc3ViX2dyb3VwX2F2Y19yZWZfZ2V0X2ludGVyX21pbm9yX3NoYXBlcygKICAgIGludGVsX3N1Yl9ncm91cF9hdmNfcmVmX3Jlc3VsdF90IHJlc3VsdCk7Cgp1Y2hhciBfX292bGQgaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfZ2V0X2ludGVyX2RpcmVjdGlvbnMoCiAgICBpbnRlbF9zdWJfZ3JvdXBfYXZjX2ltZV9yZXN1bHRfdCByZXN1bHQpOwp1Y2hhciBfX292bGQgaW50ZWxfc3ViX2dyb3VwX2F2Y19yZWZfZ2V0X2ludGVyX2RpcmVjdGlvbnMoCiAgICBpbnRlbF9zdWJfZ3JvdXBfYXZjX3JlZl9yZXN1bHRfdCByZXN1bHQpOwoKdWNoYXIgX19vdmxkIGludGVsX3N1Yl9ncm91cF9hdmNfaW1lX2dldF9pbnRlcl9tb3Rpb25fdmVjdG9yX2NvdW50KAogICAgaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfcmVzdWx0X3QgcmVzdWx0KTsKdWNoYXIgX19vdmxkIGludGVsX3N1Yl9ncm91cF9hdmNfcmVmX2dldF9pbnRlcl9tb3Rpb25fdmVjdG9yX2NvdW50KAogICAgaW50ZWxfc3ViX2dyb3VwX2F2Y19yZWZfcmVzdWx0X3QgcmVzdWx0KTsKCnVpbnQgX19vdmxkIGludGVsX3N1Yl9ncm91cF9hdmNfaW1lX2dldF9pbnRlcl9yZWZlcmVuY2VfaWRzKAogICAgaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfcmVzdWx0X3QgcmVzdWx0KTsKdWludCBfX292bGQgaW50ZWxfc3ViX2dyb3VwX2F2Y19yZWZfZ2V0X2ludGVyX3JlZmVyZW5jZV9pZHMoCiAgICBpbnRlbF9zdWJfZ3JvdXBfYXZjX3JlZl9yZXN1bHRfdCByZXN1bHQpOwoKdWNoYXIgX19vdmxkCmludGVsX3N1Yl9ncm91cF9hdmNfaW1lX2dldF9pbnRlcl9yZWZlcmVuY2VfaW50ZXJsYWNlZF9maWVsZF9wb2xhcml0aWVzKAogICAgdWludCBwYWNrZWRfcmVmZXJlbmNlX2lkcywgdWludCBwYWNrZWRfcmVmZXJlbmNlX3BhcmFtZXRlcl9maWVsZF9wb2xhcml0aWVzLAogICAgaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfcmVzdWx0X3QgcmVzdWx0KTsKdWNoYXIgX19vdmxkCmludGVsX3N1Yl9ncm91cF9hdmNfcmVmX2dldF9pbnRlcl9yZWZlcmVuY2VfaW50ZXJsYWNlZF9maWVsZF9wb2xhcml0aWVzKAogICAgdWludCBwYWNrZWRfcmVmZXJlbmNlX2lkcywgdWludCBwYWNrZWRfcmVmZXJlbmNlX3BhcmFtZXRlcl9maWVsZF9wb2xhcml0aWVzLAogICAgaW50ZWxfc3ViX2dyb3VwX2F2Y19yZWZfcmVzdWx0X3QgcmVzdWx0KTsKCi8vIFR5cGUgY29udmVyc2lvbiBmdW5jdGlvbnMKaW50ZWxfc3ViX2dyb3VwX2F2Y19tY2VfcGF5bG9hZF90IF9fb3ZsZAppbnRlbF9zdWJfZ3JvdXBfYXZjX2ltZV9jb252ZXJ0X3RvX21jZV9wYXlsb2FkKAogICAgaW50ZWxfc3ViX2dyb3VwX2F2Y19pbWVfcGF5bG9hZF90IHBheWxvYWQpOwppbnRlbF9zdWJfZ3JvdXBfYXZjX2ltZV9wYXlsb2FkX3QgX19vdmxkCmludGVsX3N1Yl9ncm91cF9hdmNfbWNlX2NvbnZlcnRfdG9faW1lX3BheWxvYWQoCiAgICBpbnRlbF9zdWJfZ3JvdXBfYXZjX21jZV9wYXlsb2FkX3QgcGF5bG9hZCk7CmludGVsX3N1Yl9ncm91cF9hdmNfbWNlX3BheWxvYWRfdCBfX292bGQKaW50ZWxfc3ViX2dyb3VwX2F2Y19yZWZfY29udmVydF90b19tY2VfcGF5bG9hZCgKICAgIGludGVsX3N1Yl9ncm91cF9hdmNfcmVmX3BheWxvYWRfdCBwYXlsb2FkKTsKaW50ZWxfc3ViX2dyb3VwX2F2Y19yZWZfcGF5bG9hZF90IF9fb3ZsZAppbnRlbF9zdWJfZ3JvdXBfYXZjX21jZV9jb252ZXJ0X3RvX3JlZl9wYXlsb2FkKAogICAgaW50ZWxfc3ViX2dyb3VwX2F2Y19tY2VfcGF5bG9hZF90IHBheWxvYWQpOwppbnRlbF9zdWJfZ3JvdXBfYXZjX21jZV9wYXlsb2FkX3QgX19vdmxkCmludGVsX3N1Yl9ncm91cF9hdmNfc2ljX2NvbnZlcnRfdG9fbWNlX3BheWxvYWQoCiAgICBpbnRlbF9zdWJfZ3JvdXBfYXZjX3NpY19wYXlsb2FkX3QgcGF5bG9hZCk7CmludGVsX3N1Yl9ncm91cF9hdmNfc2ljX3BheWxvYWRfdCBfX292bGQKaW50ZWxfc3ViX2dyb3VwX2F2Y19tY2VfY29udmVydF90b19zaWNfcGF5bG9hZCgKICAgIGludGVsX3N1Yl9ncm91cF9hdmNfbWNlX3BheWxvYWRfdCBwYXlsb2FkKTsKCmludGVsX3N1Yl9ncm91cF9hdmNfbWNlX3Jlc3VsdF90IF9fb3ZsZAppbnRlbF9zdWJfZ3JvdXBfYXZjX2ltZV9jb252ZXJ0X3RvX21jZV9yZXN1bHQoCiAgICBpbnRlbF9zdWJfZ3JvdXBfYXZjX2ltZV9yZXN1bHRfdCByZXN1bHQpOwppbnRlbF9zdWJfZ3JvdXBfYXZjX2ltZV9yZXN1bHRfdCBfX292bGQKaW50ZWxfc3ViX2dyb3VwX2F2Y19tY2VfY29udmVydF90b19pbWVfcmVzdWx0KAogICAgaW50ZWxfc3ViX2dyb3VwX2F2Y19tY2VfcmVzdWx0X3QgcmVzdWx0KTsKaW50ZWxfc3ViX2dyb3VwX2F2Y19tY2VfcmVzdWx0X3QgX19vdmxkCmludGVsX3N1Yl9ncm91cF9hdmNfcmVmX2NvbnZlcnRfdG9fbWNlX3Jlc3VsdCgKICAgIGludGVsX3N1Yl9ncm91cF9hdmNfcmVmX3Jlc3VsdF90IHJlc3VsdCk7CmludGVsX3N1Yl9ncm91cF9hdmNfcmVmX3Jlc3VsdF90IF9fb3ZsZAppbnRlbF9zdWJfZ3JvdXBfYXZjX21jZV9jb252ZXJ0X3RvX3JlZl9yZXN1bHQoCiAgICBpbnRlbF9zdWJfZ3JvdXBfYXZjX21jZV9yZXN1bHRfdCByZXN1bHQpOwppbnRlbF9zdWJfZ3JvdXBfYXZjX21jZV9yZXN1bHRfdCBfX292bGQKaW50ZWxfc3ViX2dyb3VwX2F2Y19zaWNfY29udmVydF90b19tY2VfcmVzdWx0KAogICAgaW50ZWxfc3ViX2dyb3VwX2F2Y19zaWNfcmVzdWx0X3QgcmVzdWx0KTsKaW50ZWxfc3ViX2dyb3VwX2F2Y19zaWNfcmVzdWx0X3QgX19vdmxkCmludGVsX3N1Yl9ncm91cF9hdmNfbWNlX2NvbnZlcnRfdG9fc2ljX3Jlc3VsdCgKICAgIGludGVsX3N1Yl9ncm91cF9hdmNfbWNlX3Jlc3VsdF90IHJlc3VsdCk7CiNwcmFnbWEgT1BFTkNMIEVYVEVOU0lPTiBjbF9pbnRlbF9kZXZpY2Vfc2lkZV9hdmNfbW90aW9uX2VzdGltYXRpb24gOiBlbmQKI2VuZGlmIC8vIGNsX2ludGVsX2RldmljZV9zaWRlX2F2Y19tb3Rpb25fZXN0aW1hdGlvbgoKI2lmZGVmIGNsX2FtZF9tZWRpYV9vcHMKdWludCBfX292bGQgYW1kX2JpdGFsaWduKHVpbnQgYSwgdWludCBiLCB1aW50IGMpOwp1aW50MiBfX292bGQgYW1kX2JpdGFsaWduKHVpbnQyIGEsIHVpbnQyIGIsIHVpbnQyIGMpOwp1aW50MyBfX292bGQgYW1kX2JpdGFsaWduKHVpbnQzIGEsIHVpbnQzIGIsIHVpbnQzIGMpOwp1aW50NCBfX292bGQgYW1kX2JpdGFsaWduKHVpbnQ0IGEsIHVpbnQ0IGIsIHVpbnQ0IGMpOwp1aW50OCBfX292bGQgYW1kX2JpdGFsaWduKHVpbnQ4IGEsIHVpbnQ4IGIsIHVpbnQ4IGMpOwp1aW50MTYgX19vdmxkIGFtZF9iaXRhbGlnbih1aW50MTYgYSwgdWludDE2IGIsIHVpbnQxNiBjKTsKCnVpbnQgX19vdmxkIGFtZF9ieXRlYWxpZ24odWludCBhLCB1aW50IGIsIHVpbnQgYyk7CnVpbnQyIF9fb3ZsZCBhbWRfYnl0ZWFsaWduKHVpbnQyIGEsIHVpbnQyIGIsIHVpbnQyIGMpOwp1aW50MyBfX292bGQgYW1kX2J5dGVhbGlnbih1aW50MyBhLCB1aW50MyBiLCB1aW50MyBjKTsKdWludDQgX19vdmxkIGFtZF9ieXRlYWxpZ24odWludDQgYSwgdWludDQgYiwgdWludDQgYyk7CnVpbnQ4IF9fb3ZsZCBhbWRfYnl0ZWFsaWduKHVpbnQ4IGEsIHVpbnQ4IGIsIHVpbnQ4IGMpOwp1aW50MTYgX19vdmxkIGFtZF9ieXRlYWxpZ24odWludDE2IGEsIHVpbnQxNiBiLCB1aW50MTYgYyk7Cgp1aW50IF9fb3ZsZCBhbWRfbGVycCh1aW50IGEsIHVpbnQgYiwgdWludCBjKTsKdWludDIgX19vdmxkIGFtZF9sZXJwKHVpbnQyIGEsIHVpbnQyIGIsIHVpbnQyIGMpOwp1aW50MyBfX292bGQgYW1kX2xlcnAodWludDMgYSwgdWludDMgYiwgdWludDMgYyk7CnVpbnQ0IF9fb3ZsZCBhbWRfbGVycCh1aW50NCBhLCB1aW50NCBiLCB1aW50NCBjKTsKdWludDggX19vdmxkIGFtZF9sZXJwKHVpbnQ4IGEsIHVpbnQ4IGIsIHVpbnQ4IGMpOwp1aW50MTYgX19vdmxkIGFtZF9sZXJwKHVpbnQxNiBhLCB1aW50MTYgYiwgdWludDE2IGMpOwoKdWludCBfX292bGQgYW1kX3BhY2soZmxvYXQ0IHYpOwoKdWludCBfX292bGQgYW1kX3NhZDQodWludDQgeCwgdWludDQgeSwgdWludCB6KTsKCnVpbnQgX19vdmxkIGFtZF9zYWRoaSh1aW50IGEsIHVpbnQgYiwgdWludCBjKTsKdWludDIgX19vdmxkIGFtZF9zYWRoaSh1aW50MiBhLCB1aW50MiBiLCB1aW50MiBjKTsKdWludDMgX19vdmxkIGFtZF9zYWRoaSh1aW50MyBhLCB1aW50MyBiLCB1aW50MyBjKTsKdWludDQgX19vdmxkIGFtZF9zYWRoaSh1aW50NCBhLCB1aW50NCBiLCB1aW50NCBjKTsKdWludDggX19vdmxkIGFtZF9zYWRoaSh1aW50OCBhLCB1aW50OCBiLCB1aW50OCBjKTsKdWludDE2IF9fb3ZsZCBhbWRfc2FkaGkodWludDE2IGEsIHVpbnQxNiBiLCB1aW50MTYgYyk7Cgp1aW50IF9fb3ZsZCBhbWRfc2FkKHVpbnQgYSwgdWludCBiLCB1aW50IGMpOwp1aW50MiBfX292bGQgYW1kX3NhZCh1aW50MiBhLCB1aW50MiBiLCB1aW50MiBjKTsKdWludDMgX19vdmxkIGFtZF9zYWQodWludDMgYSwgdWludDMgYiwgdWludDMgYyk7CnVpbnQ0IF9fb3ZsZCBhbWRfc2FkKHVpbnQ0IGEsIHVpbnQ0IGIsIHVpbnQ0IGMpOwp1aW50OCBfX292bGQgYW1kX3NhZCh1aW50OCBhLCB1aW50OCBiLCB1aW50OCBjKTsKdWludDE2IF9fb3ZsZCBhbWRfc2FkKHVpbnQxNiBhLCB1aW50MTYgYiwgdWludDE2IGMpOwoKZmxvYXQgX19vdmxkIGFtZF91bnBhY2swKHVpbnQgYSk7CmZsb2F0MiBfX292bGQgYW1kX3VucGFjazAodWludDIgYSk7CmZsb2F0MyBfX292bGQgYW1kX3VucGFjazAodWludDMgYSk7CmZsb2F0NCBfX292bGQgYW1kX3VucGFjazAodWludDQgYSk7CmZsb2F0OCBfX292bGQgYW1kX3VucGFjazAodWludDggYSk7CmZsb2F0MTYgX19vdmxkIGFtZF91bnBhY2swKHVpbnQxNiBhKTsKCmZsb2F0IF9fb3ZsZCBhbWRfdW5wYWNrMSh1aW50IGEpOwpmbG9hdDIgX19vdmxkIGFtZF91bnBhY2sxKHVpbnQyIGEpOwpmbG9hdDMgX19vdmxkIGFtZF91bnBhY2sxKHVpbnQzIGEpOwpmbG9hdDQgX19vdmxkIGFtZF91bnBhY2sxKHVpbnQ0IGEpOwpmbG9hdDggX19vdmxkIGFtZF91bnBhY2sxKHVpbnQ4IGEpOwpmbG9hdDE2IF9fb3ZsZCBhbWRfdW5wYWNrMSh1aW50MTYgYSk7CgpmbG9hdCBfX292bGQgYW1kX3VucGFjazIodWludCBhKTsKZmxvYXQyIF9fb3ZsZCBhbWRfdW5wYWNrMih1aW50MiBhKTsKZmxvYXQzIF9fb3ZsZCBhbWRfdW5wYWNrMih1aW50MyBhKTsKZmxvYXQ0IF9fb3ZsZCBhbWRfdW5wYWNrMih1aW50NCBhKTsKZmxvYXQ4IF9fb3ZsZCBhbWRfdW5wYWNrMih1aW50OCBhKTsKZmxvYXQxNiBfX292bGQgYW1kX3VucGFjazIodWludDE2IGEpOwoKZmxvYXQgX19vdmxkIGFtZF91bnBhY2szKHVpbnQgYSk7CmZsb2F0MiBfX292bGQgYW1kX3VucGFjazModWludDIgYSk7CmZsb2F0MyBfX292bGQgYW1kX3VucGFjazModWludDMgYSk7CmZsb2F0NCBfX292bGQgYW1kX3VucGFjazModWludDQgYSk7CmZsb2F0OCBfX292bGQgYW1kX3VucGFjazModWludDggYSk7CmZsb2F0MTYgX19vdmxkIGFtZF91bnBhY2szKHVpbnQxNiBhKTsKI2VuZGlmIC8vIGNsX2FtZF9tZWRpYV9vcHMKCiNpZmRlZiBjbF9hbWRfbWVkaWFfb3BzMgppbnQgX19vdmxkIGFtZF9iZmUoaW50IHNyYzAsIHVpbnQgc3JjMSwgdWludCBzcmMyKTsKaW50MiBfX292bGQgYW1kX2JmZShpbnQyIHNyYzAsIHVpbnQyIHNyYzEsIHVpbnQyIHNyYzIpOwppbnQzIF9fb3ZsZCBhbWRfYmZlKGludDMgc3JjMCwgdWludDMgc3JjMSwgdWludDMgc3JjMik7CmludDQgX19vdmxkIGFtZF9iZmUoaW50NCBzcmMwLCB1aW50NCBzcmMxLCB1aW50NCBzcmMyKTsKaW50OCBfX292bGQgYW1kX2JmZShpbnQ4IHNyYzAsIHVpbnQ4IHNyYzEsIHVpbnQ4IHNyYzIpOwppbnQxNiBfX292bGQgYW1kX2JmZShpbnQxNiBzcmMwLCB1aW50MTYgc3JjMSwgdWludDE2IHNyYzIpOwoKdWludCBfX292bGQgYW1kX2JmZSh1aW50IHNyYzAsIHVpbnQgc3JjMSwgdWludCBzcmMyKTsKdWludDIgX19vdmxkIGFtZF9iZmUodWludDIgc3JjMCwgdWludDIgc3JjMSwgdWludDIgc3JjMik7CnVpbnQzIF9fb3ZsZCBhbWRfYmZlKHVpbnQzIHNyYzAsIHVpbnQzIHNyYzEsIHVpbnQzIHNyYzIpOwp1aW50NCBfX292bGQgYW1kX2JmZSh1aW50NCBzcmMwLCB1aW50NCBzcmMxLCB1aW50NCBzcmMyKTsKdWludDggX19vdmxkIGFtZF9iZmUodWludDggc3JjMCwgdWludDggc3JjMSwgdWludDggc3JjMik7CnVpbnQxNiBfX292bGQgYW1kX2JmZSh1aW50MTYgc3JjMCwgdWludDE2IHNyYzEsIHVpbnQxNiBzcmMyKTsKCnVpbnQgX19vdmxkIGFtZF9iZm0odWludCBzcmMwLCB1aW50IHNyYzEpOwp1aW50MiBfX292bGQgYW1kX2JmbSh1aW50MiBzcmMwLCB1aW50MiBzcmMxKTsKdWludDMgX19vdmxkIGFtZF9iZm0odWludDMgc3JjMCwgdWludDMgc3JjMSk7CnVpbnQ0IF9fb3ZsZCBhbWRfYmZtKHVpbnQ0IHNyYzAsIHVpbnQ0IHNyYzEpOwp1aW50OCBfX292bGQgYW1kX2JmbSh1aW50OCBzcmMwLCB1aW50OCBzcmMxKTsKdWludDE2IF9fb3ZsZCBhbWRfYmZtKHVpbnQxNiBzcmMwLCB1aW50MTYgc3JjMSk7CgpmbG9hdCBfX292bGQgYW1kX21heDMoZmxvYXQgc3JjMCwgZmxvYXQgc3JjMSwgZmxvYXQgc3JjMik7CmZsb2F0MiBfX292bGQgYW1kX21heDMoZmxvYXQyIHNyYzAsIGZsb2F0MiBzcmMxLCBmbG9hdDIgc3JjMik7CmZsb2F0MyBfX292bGQgYW1kX21heDMoZmxvYXQzIHNyYzAsIGZsb2F0MyBzcmMxLCBmbG9hdDMgc3JjMik7CmZsb2F0NCBfX292bGQgYW1kX21heDMoZmxvYXQ0IHNyYzAsIGZsb2F0NCBzcmMxLCBmbG9hdDQgc3JjMik7CmZsb2F0OCBfX292bGQgYW1kX21heDMoZmxvYXQ4IHNyYzAsIGZsb2F0OCBzcmMxLCBmbG9hdDggc3JjMik7CmZsb2F0MTYgX19vdmxkIGFtZF9tYXgzKGZsb2F0MTYgc3JjMCwgZmxvYXQxNiBzcmMxLCBmbG9hdDE2IHNyYzIpOwoKaW50IF9fb3ZsZCBhbWRfbWF4MyhpbnQgc3JjMCwgaW50IHNyYzEsIGludCBzcmMyKTsKaW50MiBfX292bGQgYW1kX21heDMoaW50MiBzcmMwLCBpbnQyIHNyYzEsIGludDIgc3JjMik7CmludDMgX19vdmxkIGFtZF9tYXgzKGludDMgc3JjMCwgaW50MyBzcmMxLCBpbnQzIHNyYzIpOwppbnQ0IF9fb3ZsZCBhbWRfbWF4MyhpbnQ0IHNyYzAsIGludDQgc3JjMSwgaW50NCBzcmMyKTsKaW50OCBfX292bGQgYW1kX21heDMoaW50OCBzcmMwLCBpbnQ4IHNyYzEsIGludDggc3JjMik7CmludDE2IF9fb3ZsZCBhbWRfbWF4MyhpbnQxNiBzcmMwLCBpbnQxNiBzcmMxLCBpbnQxNiBzcmMyKTsKCnVpbnQgX19vdmxkIGFtZF9tYXgzKHVpbnQgc3JjMCwgdWludCBzcmMxLCB1aW50IHNyYzIpOwp1aW50MiBfX292bGQgYW1kX21heDModWludDIgc3JjMCwgdWludDIgc3JjMSwgdWludDIgc3JjMik7CnVpbnQzIF9fb3ZsZCBhbWRfbWF4Myh1aW50MyBzcmMwLCB1aW50MyBzcmMxLCB1aW50MyBzcmMyKTsKdWludDQgX19vdmxkIGFtZF9tYXgzKHVpbnQ0IHNyYzAsIHVpbnQ0IHNyYzEsIHVpbnQ0IHNyYzIpOwp1aW50OCBfX292bGQgYW1kX21heDModWludDggc3JjMCwgdWludDggc3JjMSwgdWludDggc3JjMik7CnVpbnQxNiBfX292bGQgYW1kX21heDModWludDE2IHNyYzAsIHVpbnQxNiBzcmMxLCB1aW50MTYgc3JjMik7CgpmbG9hdCBfX292bGQgYW1kX21lZGlhbjMoZmxvYXQgc3JjMCwgZmxvYXQgc3JjMSwgZmxvYXQgc3JjMik7CmZsb2F0MiBfX292bGQgYW1kX21lZGlhbjMoZmxvYXQyIHNyYzAsIGZsb2F0MiBzcmMxLCBmbG9hdDIgc3JjMik7CmZsb2F0MyBfX292bGQgYW1kX21lZGlhbjMoZmxvYXQzIHNyYzAsIGZsb2F0MyBzcmMxLCBmbG9hdDMgc3JjMik7CmZsb2F0NCBfX292bGQgYW1kX21lZGlhbjMoZmxvYXQ0IHNyYzAsIGZsb2F0NCBzcmMxLCBmbG9hdDQgc3JjMik7CmZsb2F0OCBfX292bGQgYW1kX21lZGlhbjMoZmxvYXQ4IHNyYzAsIGZsb2F0OCBzcmMxLCBmbG9hdDggc3JjMik7CmZsb2F0MTYgX19vdmxkIGFtZF9tZWRpYW4zKGZsb2F0MTYgc3JjMCwgZmxvYXQxNiBzcmMxLCBmbG9hdDE2IHNyYzIpOwoKaW50IF9fb3ZsZCBhbWRfbWVkaWFuMyhpbnQgc3JjMCwgaW50IHNyYzEsIGludCBzcmMyKTsKaW50MiBfX292bGQgYW1kX21lZGlhbjMoaW50MiBzcmMwLCBpbnQyIHNyYzEsIGludDIgc3JjMik7CmludDMgX19vdmxkIGFtZF9tZWRpYW4zKGludDMgc3JjMCwgaW50MyBzcmMxLCBpbnQzIHNyYzIpOwppbnQ0IF9fb3ZsZCBhbWRfbWVkaWFuMyhpbnQ0IHNyYzAsIGludDQgc3JjMSwgaW50NCBzcmMyKTsKaW50OCBfX292bGQgYW1kX21lZGlhbjMoaW50OCBzcmMwLCBpbnQ4IHNyYzEsIGludDggc3JjMik7CmludDE2IF9fb3ZsZCBhbWRfbWVkaWFuMyhpbnQxNiBzcmMwLCBpbnQxNiBzcmMxLCBpbnQxNiBzcmMyKTsKCnVpbnQgX19vdmxkIGFtZF9tZWRpYW4zKHVpbnQgc3JjMCwgdWludCBzcmMxLCB1aW50IHNyYzIpOwp1aW50MiBfX292bGQgYW1kX21lZGlhbjModWludDIgc3JjMCwgdWludDIgc3JjMSwgdWludDIgc3JjMik7CnVpbnQzIF9fb3ZsZCBhbWRfbWVkaWFuMyh1aW50MyBzcmMwLCB1aW50MyBzcmMxLCB1aW50MyBzcmMyKTsKdWludDQgX19vdmxkIGFtZF9tZWRpYW4zKHVpbnQ0IHNyYzAsIHVpbnQ0IHNyYzEsIHVpbnQ0IHNyYzIpOwp1aW50OCBfX292bGQgYW1kX21lZGlhbjModWludDggc3JjMCwgdWludDggc3JjMSwgdWludDggc3JjMik7CnVpbnQxNiBfX292bGQgYW1kX21lZGlhbjModWludDE2IHNyYzAsIHVpbnQxNiBzcmMxLCB1aW50MTYgc3JjMik7CgpmbG9hdCBfX292bGQgYW1kX21pbjMoZmxvYXQgc3JjMCwgZmxvYXQgc3JjMSwgZmxvYXQgc3JjKTsKZmxvYXQyIF9fb3ZsZCBhbWRfbWluMyhmbG9hdDIgc3JjMCwgZmxvYXQyIHNyYzEsIGZsb2F0MiBzcmMpOwpmbG9hdDMgX19vdmxkIGFtZF9taW4zKGZsb2F0MyBzcmMwLCBmbG9hdDMgc3JjMSwgZmxvYXQzIHNyYyk7CmZsb2F0NCBfX292bGQgYW1kX21pbjMoZmxvYXQ0IHNyYzAsIGZsb2F0NCBzcmMxLCBmbG9hdDQgc3JjKTsKZmxvYXQ4IF9fb3ZsZCBhbWRfbWluMyhmbG9hdDggc3JjMCwgZmxvYXQ4IHNyYzEsIGZsb2F0OCBzcmMpOwpmbG9hdDE2IF9fb3ZsZCBhbWRfbWluMyhmbG9hdDE2IHNyYzAsIGZsb2F0MTYgc3JjMSwgZmxvYXQxNiBzcmMpOwoKaW50IF9fb3ZsZCBhbWRfbWluMyhpbnQgc3JjMCwgaW50IHNyYzEsIGludCBzcmMyKTsKaW50MiBfX292bGQgYW1kX21pbjMoaW50MiBzcmMwLCBpbnQyIHNyYzEsIGludDIgc3JjMik7CmludDMgX19vdmxkIGFtZF9taW4zKGludDMgc3JjMCwgaW50MyBzcmMxLCBpbnQzIHNyYzIpOwppbnQ0IF9fb3ZsZCBhbWRfbWluMyhpbnQ0IHNyYzAsIGludDQgc3JjMSwgaW50NCBzcmMyKTsKaW50OCBfX292bGQgYW1kX21pbjMoaW50OCBzcmMwLCBpbnQ4IHNyYzEsIGludDggc3JjMik7CmludDE2IF9fb3ZsZCBhbWRfbWluMyhpbnQxNiBzcmMwLCBpbnQxNiBzcmMxLCBpbnQxNiBzcmMyKTsKCnVpbnQgX19vdmxkIGFtZF9taW4zKHVpbnQgc3JjMCwgdWludCBzcmMxLCB1aW50IHNyYzIpOwp1aW50MiBfX292bGQgYW1kX21pbjModWludDIgc3JjMCwgdWludDIgc3JjMSwgdWludDIgc3JjMik7CnVpbnQzIF9fb3ZsZCBhbWRfbWluMyh1aW50MyBzcmMwLCB1aW50MyBzcmMxLCB1aW50MyBzcmMyKTsKdWludDQgX19vdmxkIGFtZF9taW4zKHVpbnQ0IHNyYzAsIHVpbnQ0IHNyYzEsIHVpbnQ0IHNyYzIpOwp1aW50OCBfX292bGQgYW1kX21pbjModWludDggc3JjMCwgdWludDggc3JjMSwgdWludDggc3JjMik7CnVpbnQxNiBfX292bGQgYW1kX21pbjModWludDE2IHNyYzAsIHVpbnQxNiBzcmMxLCB1aW50MTYgc3JjMik7Cgp1bG9uZyBfX292bGQgYW1kX21xc2FkKHVsb25nIHNyYzAsIHVpbnQgc3JjMSwgdWxvbmcgc3JjMik7CnVsb25nMiBfX292bGQgYW1kX21xc2FkKHVsb25nMiBzcmMwLCB1aW50MiBzcmMxLCB1bG9uZzIgc3JjMik7CnVsb25nMyBfX292bGQgYW1kX21xc2FkKHVsb25nMyBzcmMwLCB1aW50MyBzcmMxLCB1bG9uZzMgc3JjMik7CnVsb25nNCBfX292bGQgYW1kX21xc2FkKHVsb25nNCBzcmMwLCB1aW50NCBzcmMxLCB1bG9uZzQgc3JjMik7CnVsb25nOCBfX292bGQgYW1kX21xc2FkKHVsb25nOCBzcmMwLCB1aW50OCBzcmMxLCB1bG9uZzggc3JjMik7CnVsb25nMTYgX19vdmxkIGFtZF9tcXNhZCh1bG9uZzE2IHNyYzAsIHVpbnQxNiBzcmMxLCB1bG9uZzE2IHNyYzIpOwoKdWxvbmcgX19vdmxkIGFtZF9xc2FkKHVsb25nIHNyYzAsIHVpbnQgc3JjMSwgdWxvbmcgc3JjMik7CnVsb25nMiBfX292bGQgYW1kX3FzYWQodWxvbmcyIHNyYzAsIHVpbnQyIHNyYzEsIHVsb25nMiBzcmMyKTsKdWxvbmczIF9fb3ZsZCBhbWRfcXNhZCh1bG9uZzMgc3JjMCwgdWludDMgc3JjMSwgdWxvbmczIHNyYzIpOwp1bG9uZzQgX19vdmxkIGFtZF9xc2FkKHVsb25nNCBzcmMwLCB1aW50NCBzcmMxLCB1bG9uZzQgc3JjMik7CnVsb25nOCBfX292bGQgYW1kX3FzYWQodWxvbmc4IHNyYzAsIHVpbnQ4IHNyYzEsIHVsb25nOCBzcmMyKTsKdWxvbmcxNiBfX292bGQgYW1kX3FzYWQodWxvbmcxNiBzcmMwLCB1aW50MTYgc3JjMSwgdWxvbmcxNiBzcmMyKTsKCnVpbnQgX19vdmxkIGFtZF9tc2FkKHVpbnQgc3JjMCwgdWludCBzcmMxLCB1aW50IHNyYzIpOwp1aW50MiBfX292bGQgYW1kX21zYWQodWludDIgc3JjMCwgdWludDIgc3JjMSwgdWludDIgc3JjMik7CnVpbnQzIF9fb3ZsZCBhbWRfbXNhZCh1aW50MyBzcmMwLCB1aW50MyBzcmMxLCB1aW50MyBzcmMyKTsKdWludDQgX19vdmxkIGFtZF9tc2FkKHVpbnQ0IHNyYzAsIHVpbnQ0IHNyYzEsIHVpbnQ0IHNyYzIpOwp1aW50OCBfX292bGQgYW1kX21zYWQodWludDggc3JjMCwgdWludDggc3JjMSwgdWludDggc3JjMik7CnVpbnQxNiBfX292bGQgYW1kX21zYWQodWludDE2IHNyYzAsIHVpbnQxNiBzcmMxLCB1aW50MTYgc3JjMik7Cgp1aW50IF9fb3ZsZCBhbWRfc2FkZCh1aW50IHNyYzAsIHVpbnQgc3JjMSwgdWludCBzcmMyKTsKdWludDIgX19vdmxkIGFtZF9zYWRkKHVpbnQyIHNyYzAsIHVpbnQyIHNyYzEsIHVpbnQyIHNyYzIpOwp1aW50MyBfX292bGQgYW1kX3NhZGQodWludDMgc3JjMCwgdWludDMgc3JjMSwgdWludDMgc3JjMik7CnVpbnQ0IF9fb3ZsZCBhbWRfc2FkZCh1aW50NCBzcmMwLCB1aW50NCBzcmMxLCB1aW50NCBzcmMyKTsKdWludDggX19vdmxkIGFtZF9zYWRkKHVpbnQ4IHNyYzAsIHVpbnQ4IHNyYzEsIHVpbnQ4IHNyYzIpOwp1aW50MTYgX19vdmxkIGFtZF9zYWRkKHVpbnQxNiBzcmMwLCB1aW50MTYgc3JjMSwgdWludDE2IHNyYzIpOwoKdWludCBfX292bGQgYW1kX3NhZHcodWludCBzcmMwLCB1aW50IHNyYzEsIHVpbnQgc3JjMik7CnVpbnQyIF9fb3ZsZCBhbWRfc2Fkdyh1aW50MiBzcmMwLCB1aW50MiBzcmMxLCB1aW50MiBzcmMyKTsKdWludDMgX19vdmxkIGFtZF9zYWR3KHVpbnQzIHNyYzAsIHVpbnQzIHNyYzEsIHVpbnQzIHNyYzIpOwp1aW50NCBfX292bGQgYW1kX3NhZHcodWludDQgc3JjMCwgdWludDQgc3JjMSwgdWludDQgc3JjMik7CnVpbnQ4IF9fb3ZsZCBhbWRfc2Fkdyh1aW50OCBzcmMwLCB1aW50OCBzcmMxLCB1aW50OCBzcmMyKTsKdWludDE2IF9fb3ZsZCBhbWRfc2Fkdyh1aW50MTYgc3JjMCwgdWludDE2IHNyYzEsIHVpbnQxNiBzcmMyKTsKI2VuZGlmIC8vIGNsX2FtZF9tZWRpYV9vcHMyCgojaWYgZGVmaW5lZChjbF9hcm1faW50ZWdlcl9kb3RfcHJvZHVjdF9pbnQ4KQp1aW50IF9fb3ZsZCBhcm1fZG90KHVjaGFyNCBhLCB1Y2hhcjQgYik7CmludCBfX292bGQgYXJtX2RvdChjaGFyNCBhLCBjaGFyNCBiKTsKI2VuZGlmIC8vIGRlZmluZWQoY2xfYXJtX2ludGVnZXJfZG90X3Byb2R1Y3RfaW50OCkKCiNpZiBkZWZpbmVkKGNsX2FybV9pbnRlZ2VyX2RvdF9wcm9kdWN0X2FjY3VtdWxhdGVfaW50OCkKdWludCBfX292bGQgYXJtX2RvdF9hY2ModWNoYXI0IGEsIHVjaGFyNCBiLCB1aW50IGMpOwppbnQgX19vdmxkIGFybV9kb3RfYWNjKGNoYXI0IGEsIGNoYXI0IGIsIGludCBjKTsKI2VuZGlmIC8vIGRlZmluZWQoY2xfYXJtX2ludGVnZXJfZG90X3Byb2R1Y3RfYWNjdW11bGF0ZV9pbnQ4KQoKI2lmIGRlZmluZWQoY2xfYXJtX2ludGVnZXJfZG90X3Byb2R1Y3RfYWNjdW11bGF0ZV9pbnQxNikKdWludCBfX292bGQgYXJtX2RvdF9hY2ModXNob3J0MiBhLCB1c2hvcnQyIGIsIHVpbnQgYyk7CmludCBfX292bGQgYXJtX2RvdF9hY2Moc2hvcnQyIGEsIHNob3J0MiBiLCBpbnQgYyk7CiNlbmRpZiAvLyBkZWZpbmVkKGNsX2FybV9pbnRlZ2VyX2RvdF9wcm9kdWN0X2FjY3VtdWxhdGVfaW50MTYpCgojaWYgZGVmaW5lZChjbF9hcm1faW50ZWdlcl9kb3RfcHJvZHVjdF9hY2N1bXVsYXRlX3NhdHVyYXRlX2ludDgpCnVpbnQgX19vdmxkIGFybV9kb3RfYWNjX3NhdCh1Y2hhcjQgYSwgdWNoYXI0IGIsIHVpbnQgYyk7CmludCBfX292bGQgYXJtX2RvdF9hY2Nfc2F0KGNoYXI0IGEsIGNoYXI0IGIsIGludCBjKTsKI2VuZGlmIC8vIGRlZmluZWQoY2xfYXJtX2ludGVnZXJfZG90X3Byb2R1Y3RfYWNjdW11bGF0ZV9zYXR1cmF0ZV9pbnQ4KQoKLy8gRGlzYWJsZSBhbnkgZXh0ZW5zaW9ucyB3ZSBtYXkgaGF2ZSBlbmFibGVkIHByZXZpb3VzbHkuCiNwcmFnbWEgT1BFTkNMIEVYVEVOU0lPTiBhbGwgOiBkaXNhYmxlCgojdW5kZWYgX19jbmZuCiN1bmRlZiBfX292bGQKI2VuZGlmIC8vX09QRU5DTF9IXwoAcGNvbmZpZ2ludHJpbi5oAC8qPT09LS0tLS0tLS0tLS0tIHB0d3JpdGVpbnRyaW4uaCAtIFBUV1JJVEUgaW50cmluc2ljIC0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqCiAqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCiAqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCgojaWYgIWRlZmluZWQgX19YODZJTlRSSU5fSCAmJiAhZGVmaW5lZCBfX0lNTUlOVFJJTl9ICiNlcnJvciAiTmV2ZXIgdXNlIDxwdHdyaXRlaW50cmluLmg+IGRpcmVjdGx5OyBpbmNsdWRlIDx4ODZpbnRyaW4uaD4gaW5zdGVhZC4iCiNlbmRpZgoKI2lmbmRlZiBfX1BUV1JJVEVJTlRSSU5fSAojZGVmaW5lIF9fUFRXUklURUlOVFJJTl9ICgovKiBEZWZpbmUgdGhlIGRlZmF1bHQgYXR0cmlidXRlcyBmb3IgdGhlIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUuICovCiNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTIFwKICBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sICBfX3RhcmdldF9fKCJwdHdyaXRlIikpKQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMKX3B0d3JpdGUzMih1bnNpZ25lZCBpbnQgX192YWx1ZSkgewogIF9fYnVpbHRpbl9pYTMyX3B0d3JpdGUzMihfX3ZhbHVlKTsKfQoKI2lmZGVmIF9feDg2XzY0X18KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTCl9wdHdyaXRlNjQodW5zaWduZWQgbG9uZyBsb25nIF9fdmFsdWUpIHsKICBfX2J1aWx0aW5faWEzMl9wdHdyaXRlNjQoX192YWx1ZSk7Cn0KCiNlbmRpZiAvKiBfX3g4Nl82NF9fICovCgojdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTCgojZW5kaWYgLyogX19QVFdSSVRFSU5UUklOX0ggKi8KAC8qPT09LS0tLS0tLS0tLS0tLS0tIHNlcmlhbGl6ZWludHJpbi5oIC0gc2VyaWFsaXplIGludHJpbnNpY3MgLS0tLS0tLS0tLS0tLS09PT0KICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKi8KCiNpZm5kZWYgX19JTU1JTlRSSU5fSAojZXJyb3IgIk5ldmVyIHVzZSA8c2VyaWFsaXplaW50cmluLmg+IGRpcmVjdGx5OyBpbmNsdWRlIDxpbW1pbnRyaW4uaD4gaW5zdGVhZC4iCiNlbmRpZgoKI2lmbmRlZiBfX1NFUklBTElaRUlOVFJJTl9ICiNkZWZpbmUgX19TRVJJQUxJWkVJTlRSSU5fSAoKLy8vIFNlcmlhbGl6ZSBpbnN0cnVjdGlvbiBmZXRjaCBhbmQgZXhlY3V0aW9uLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFNFUklBTElaRSA8L2M+IGluc3RydWN0aW9uLgovLy8Kc3RhdGljIF9faW5saW5lX18gdm9pZApfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oInNlcmlhbGl6ZSIpKSkKX3NlcmlhbGl6ZSAodm9pZCkKewogIF9fYnVpbHRpbl9pYTMyX3NlcmlhbGl6ZSAoKTsKfQoKI2VuZGlmIC8qIF9fU0VSSUFMSVpFSU5UUklOX0ggKi8KAHdhaXRwa2dpbnRyaW4uaAB4c2F2ZWludHJpbi5oAC8vPT09LS0gc2FuaXRpemVyL3NjdWRvX2ludGVyZmFjZS5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCi8vCi8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCi8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgovLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCi8vCi8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCi8vCi8vLyBQdWJsaWMgU2N1ZG8gaW50ZXJmYWNlIGhlYWRlci4KLy8KLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KI2lmbmRlZiBTQU5JVElaRVJfU0NVRE9fSU5URVJGQUNFX0hfCiNkZWZpbmUgU0FOSVRJWkVSX1NDVURPX0lOVEVSRkFDRV9IXwoKI2luY2x1ZGUgPHNhbml0aXplci9jb21tb25faW50ZXJmYWNlX2RlZnMuaD4KCiNpZmRlZiBfX2NwbHVzcGx1cwpleHRlcm4gIkMiIHsKI2VuZGlmCiAgLy8gVGhpcyBmdW5jdGlvbiBtYXkgYmUgb3B0aW9uYWxseSBwcm92aWRlZCBieSBhIHVzZXIgYW5kIHNob3VsZCByZXR1cm4KICAvLyBhIHN0cmluZyBjb250YWluaW5nIFNjdWRvIHJ1bnRpbWUgb3B0aW9ucy4gU2VlIHNjdWRvX2ZsYWdzLmggZm9yIGRldGFpbHMuCiAgY29uc3QgY2hhciogX19zY3Vkb19kZWZhdWx0X29wdGlvbnModm9pZCk7CgogIC8vIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHRvIHNldCB0aGUgUlNTIGxpbWl0IGF0IHJ1bnRpbWUuIFRoaXMgY2FuIGJlIGVpdGhlcgogIC8vIHRoZSBoYXJkIGxpbWl0IChIYXJkTGltaXQ9MSkgb3IgdGhlIHNvZnQgbGltaXQgKEhhcmRMaW1pdD0wKS4gVGhlIGxpbWl0CiAgLy8gY2FuIGJlIHJlbW92ZWQgYnkgc2V0dGluZyBMaW1pdE1iIHRvIDAuIFRoaXMgZnVuY3Rpb24ncyBwYXJhbWV0ZXJzIHNob3VsZAogIC8vIGJlIGZ1bGx5IHRydXN0ZWQgdG8gYXZvaWQgc2VjdXJpdHkgbWlzaGFwcy4KICB2b2lkIF9fc2N1ZG9fc2V0X3Jzc19saW1pdChzaXplX3QgTGltaXRNYiwgaW50IEhhcmRMaW1pdCk7CgogIC8vIFRoaXMgZnVuY3Rpb24gb3V0cHV0cyB2YXJpb3VzIGFsbG9jYXRvciBzdGF0aXN0aWNzIGZvciBib3RoIHRoZSBQcmltYXJ5CiAgLy8gYW5kIFNlY29uZGFyeSBhbGxvY2F0b3JzLCBpbmNsdWRpbmcgbWVtb3J5IHVzYWdlLCBudW1iZXIgb2YgYWxsb2NhdGlvbnMKICAvLyBhbmQgZGVhbGxvY2F0aW9ucy4KICB2b2lkIF9fc2N1ZG9fcHJpbnRfc3RhdHModm9pZCk7CiNpZmRlZiBfX2NwbHVzcGx1cwp9ICAvLyBleHRlcm4gIkMiCiNlbmRpZgoKI2VuZGlmICAvLyBTQU5JVElaRVJfU0NVRE9fSU5URVJGQUNFX0hfCgBmY2xvc2UoaGFuZGxlKQAoLTEpAFNlYXJjaERGQSBpbmNvbnNpc3RlbmN5AFJld3JpdGUgc2NoZW1hIGVycm9yOiAnXCcgbm90IGFsbG93ZWQgYXQgZW5kLgAgaW4gQWRkVG9UaHJlYWRxAFVuZXhwZWN0ZWQgb3AgaW4gUmVnZXhwOjpFcXVhbDogAEJoYWlrc3VraQBFbGJhc2FuAE1vZGkAIG9uIGNwdSAlZAB1bm9yZGVyZWQgZnJlZWxpc3QAe2xhbWJkYSgpIwBmAHN0ZDo6bnVsbHB0cl90AHJNAGFhAFNkAEZBSUxFRF9QUkVDT05ESVRJT04AXHUgbXVzdCBiZSBmb2xsb3dlZCBieSA0IGhleCBkaWdpdHM6IFwAXCIAIi4uLgApIHsKAHllcwBsZW5ndGggPiAwAFVubG9jawBEUkJHIFJlc2VlZCBLQVQAYmlnbnVtIHJvdXRpbmVzAGt5dGhlLnByb3RvLkNvbXBpbGF0aW9uVW5pdC5lbnRyeV9jb250ZXh0AGt5dGhlLnByb3RvLkN4eENvbXBpbGF0aW9uVW5pdERldGFpbHMuU3lzdGVtSGVhZGVyUHJlZml4LnByZWZpeABreXRoZS5wcm90by5WTmFtZVJld3JpdGVSdWxlLnBhdHRlcm4AY3BwLW91dHB1dAAgAC0td2l0aF9leGVjdXRhYmxlAEtZVEhFX0NBTk9OSUNBTElaRV9WTkFNRV9QQVRIUwBtYXRoX2J1aWx0aW4ATVNNb2RlAC8qPT09LS0tLSBfX2NsYW5nX2N1ZGFfY21hdGguaCAtIERldmljZS1zaWRlIENVREEgY21hdGggc3VwcG9ydCAtLS0tLS0tLS0tLS09PT0KICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKi8KI2lmbmRlZiBfX0NMQU5HX0NVREFfQ01BVEhfSF9fCiNkZWZpbmUgX19DTEFOR19DVURBX0NNQVRIX0hfXwojaWZuZGVmIF9fQ1VEQV9fCiNlcnJvciAiVGhpcyBmaWxlIGlzIGZvciBDVURBIGNvbXBpbGF0aW9uIG9ubHkuIgojZW5kaWYKCiNpZm5kZWYgX19PUEVOTVBfTlZQVFhfXwojaW5jbHVkZSA8bGltaXRzPgojZW5kaWYKCi8vIENVREEgbGV0cyB1cyB1c2UgdmFyaW91cyBzdGQgbWF0aCBmdW5jdGlvbnMgb24gdGhlIGRldmljZSBzaWRlLiAgVGhpcyBmaWxlCi8vIHdvcmtzIGluIGNvbmNlcnQgd2l0aCBfX2NsYW5nX2N1ZGFfbWF0aF9mb3J3YXJkX2RlY2xhcmVzLmggdG8gbWFrZSB0aGlzIHdvcmsuCi8vCi8vIFNwZWNpZmljYWxseSwgdGhlIGZvcndhcmQtZGVjbGFyZXMgaGVhZGVyIGRlY2xhcmVzIF9fZGV2aWNlX18gb3ZlcmxvYWRzIGZvcgovLyB0aGVzZSBmdW5jdGlvbnMgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UsIHRoZW4gcHVsbHMgdGhlbSBpbnRvIG5hbWVzcGFjZSBzdGQKLy8gd2l0aCAndXNpbmcnIHN0YXRlbWVudHMuICBUaGVuIHRoaXMgZmlsZSBpbXBsZW1lbnRzIHRob3NlIGZ1bmN0aW9ucywgYWZ0ZXIKLy8gdGhlaXIgaW1wbGVtZW50YXRpb25zIGhhdmUgYmVlbiBwdWxsZWQgaW4uCi8vCi8vIEl0J3MgaW1wb3J0YW50IHRoYXQgd2UgZGVjbGFyZSB0aGUgZnVuY3Rpb25zIGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlIGFuZCBwdWxsCi8vIHRoZW0gaW50byBuYW1lc3BhY2Ugc3RkIHdpdGggdXNpbmcgc3RhdGVtZW50cywgYXMgb3Bwb3NlZCB0byBzaW1wbHkgZGVjbGFyaW5nCi8vIHRoZXNlIGZ1bmN0aW9ucyBpbiBuYW1lc3BhY2Ugc3RkLCBiZWNhdXNlIG91ciBkZXZpY2UgZnVuY3Rpb25zIG5lZWQgdG8KLy8gb3ZlcmxvYWQgdGhlIHN0YW5kYXJkIGxpYnJhcnkgZnVuY3Rpb25zLCB3aGljaCBtYXkgYmUgZGVjbGFyZWQgaW4gdGhlIGdsb2JhbAovLyBuYW1lc3BhY2Ugb3IgaW4gc3RkLCBkZXBlbmRpbmcgb24gdGhlIGRlZ3JlZSBvZiBjb25mb3JtYW5jZSBvZiB0aGUgc3RkbGliCi8vIGltcGxlbWVudGF0aW9uLiAgRGVjbGFyaW5nIGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlIGFuZCBwdWxsaW5nIGludG8gbmFtZXNwYWNlCi8vIHN0ZCBjb3ZlcnMgYWxsIG9mIHRoZSBrbm93biBrbm93bnMuCgojaWZkZWYgX19PUEVOTVBfTlZQVFhfXwojZGVmaW5lIF9fREVWSUNFX18gc3RhdGljIGNvbnN0ZXhwciBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lLCBub3Rocm93KSkKI2Vsc2UKI2RlZmluZSBfX0RFVklDRV9fIHN0YXRpYyBfX2RldmljZV9fIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpCiNlbmRpZgoKX19ERVZJQ0VfXyBsb25nIGxvbmcgYWJzKGxvbmcgbG9uZyBfX24pIHsgcmV0dXJuIDo6bGxhYnMoX19uKTsgfQpfX0RFVklDRV9fIGxvbmcgYWJzKGxvbmcgX19uKSB7IHJldHVybiA6OmxhYnMoX19uKTsgfQpfX0RFVklDRV9fIGZsb2F0IGFicyhmbG9hdCBfX3gpIHsgcmV0dXJuIDo6ZmFic2YoX194KTsgfQpfX0RFVklDRV9fIGRvdWJsZSBhYnMoZG91YmxlIF9feCkgeyByZXR1cm4gOjpmYWJzKF9feCk7IH0KX19ERVZJQ0VfXyBmbG9hdCBhY29zKGZsb2F0IF9feCkgeyByZXR1cm4gOjphY29zZihfX3gpOyB9Cl9fREVWSUNFX18gZmxvYXQgYXNpbihmbG9hdCBfX3gpIHsgcmV0dXJuIDo6YXNpbmYoX194KTsgfQpfX0RFVklDRV9fIGZsb2F0IGF0YW4oZmxvYXQgX194KSB7IHJldHVybiA6OmF0YW5mKF9feCk7IH0KX19ERVZJQ0VfXyBmbG9hdCBhdGFuMihmbG9hdCBfX3gsIGZsb2F0IF9feSkgeyByZXR1cm4gOjphdGFuMmYoX194LCBfX3kpOyB9Cl9fREVWSUNFX18gZmxvYXQgY2VpbChmbG9hdCBfX3gpIHsgcmV0dXJuIDo6Y2VpbGYoX194KTsgfQpfX0RFVklDRV9fIGZsb2F0IGNvcyhmbG9hdCBfX3gpIHsgcmV0dXJuIDo6Y29zZihfX3gpOyB9Cl9fREVWSUNFX18gZmxvYXQgY29zaChmbG9hdCBfX3gpIHsgcmV0dXJuIDo6Y29zaGYoX194KTsgfQpfX0RFVklDRV9fIGZsb2F0IGV4cChmbG9hdCBfX3gpIHsgcmV0dXJuIDo6ZXhwZihfX3gpOyB9Cl9fREVWSUNFX18gZmxvYXQgZmFicyhmbG9hdCBfX3gpIHsgcmV0dXJuIDo6ZmFic2YoX194KTsgfQpfX0RFVklDRV9fIGZsb2F0IGZsb29yKGZsb2F0IF9feCkgeyByZXR1cm4gOjpmbG9vcmYoX194KTsgfQpfX0RFVklDRV9fIGZsb2F0IGZtb2QoZmxvYXQgX194LCBmbG9hdCBfX3kpIHsgcmV0dXJuIDo6Zm1vZGYoX194LCBfX3kpOyB9Cl9fREVWSUNFX18gaW50IGZwY2xhc3NpZnkoZmxvYXQgX194KSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9mcGNsYXNzaWZ5KEZQX05BTiwgRlBfSU5GSU5JVEUsIEZQX05PUk1BTCwgRlBfU1VCTk9STUFMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGUF9aRVJPLCBfX3gpOwp9Cl9fREVWSUNFX18gaW50IGZwY2xhc3NpZnkoZG91YmxlIF9feCkgewogIHJldHVybiBfX2J1aWx0aW5fZnBjbGFzc2lmeShGUF9OQU4sIEZQX0lORklOSVRFLCBGUF9OT1JNQUwsIEZQX1NVQk5PUk1BTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlBfWkVSTywgX194KTsKfQpfX0RFVklDRV9fIGZsb2F0IGZyZXhwKGZsb2F0IF9fYXJnLCBpbnQgKl9fZXhwKSB7CiAgcmV0dXJuIDo6ZnJleHBmKF9fYXJnLCBfX2V4cCk7Cn0KCi8vIEZvciBpbnNjcnV0YWJsZSByZWFzb25zLCB0aGUgQ1VEQSBoZWFkZXJzIGRlZmluZSB0aGVzZSBmdW5jdGlvbnMgZm9yIHVzIG9uCi8vIFdpbmRvd3MuCiNpZiAhZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX09QRU5NUF9OVlBUWF9fKQoKLy8gRm9yIE9wZW5NUCB3ZSB3b3JrIGFyb3VuZCBzb21lIG9sZCBzeXN0ZW0gaGVhZGVycyB0aGF0IGhhdmUgbm9uLWNvbmZvcm1pbmcKLy8gYGlzaW5mKGZsb2F0KWAgYW5kIGBpc25hbihmbG9hdClgIGltcGxlbWVudGF0aW9ucyB0aGF0IHJldHVybiBhbiBgaW50YC4gV2UgZG8KLy8gdGhpcyBieSBwcm92aWRpbmcgdHdvIHZlcnNpb25zIG9mIHRoZXNlIGZ1bmN0aW9ucywgZGlmZmVyaW5nIG9ubHkgaW4gdGhlCi8vIHJldHVybiB0eXBlLiBUbyBhdm9pZCBjb25mbGljdGluZyBkZWZpbml0aW9ucyB3ZSBkaXNhYmxlIGltcGxpY2l0IGJhc2UKLy8gZnVuY3Rpb24gZ2VuZXJhdGlvbi4gVGhhdCBtZWFucyB3ZSB3aWxsIGVuZCB1cCB3aXRoIHR3byBzcGVjaWFsaXphdGlvbnMsIG9uZQovLyBwZXIgdHlwZSwgYnV0IG9ubHkgb25lIGhhcyBhIGJhc2UgZnVuY3Rpb24gZGVmaW5lZCBieSB0aGUgc3lzdGVtIGhlYWRlci4KI2lmIGRlZmluZWQoX19PUEVOTVBfTlZQVFhfXykKI3ByYWdtYSBvbXAgYmVnaW4gZGVjbGFyZSB2YXJpYW50IG1hdGNoKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIGltcGxlbWVudGF0aW9uID0ge2V4dGVuc2lvbihkaXNhYmxlX2ltcGxpY2l0X2Jhc2UpfSkKCi8vIEZJWE1FOiBXZSBsYWNrIGFuIGV4dGVuc2lvbiB0byBjdXN0b21pemUgdGhlIG1hbmdsaW5nIG9mIHRoZSB2YXJpYW50cywgZS5nLiwKLy8gICAgICAgIGFkZCBhIHN1ZmZpeC4gVGhpcyBtZWFucyB3ZSB3b3VsZCBjbGFzaCB3aXRoIHRoZSBuYW1lcyBvZiB0aGUgdmFyaWFudHMKLy8gICAgICAgIChub3RlIHRoYXQgd2UgZG8gbm90IGNyZWF0ZSBpbXBsaWNpdCBiYXNlIGZ1bmN0aW9ucyBoZXJlKS4gVG8gYXZvaWQKLy8gICAgICAgIHRoaXMgY2xhc2ggd2UgYWRkIGEgbmV3IHRyYWl0IHRvIHNvbWUgb2YgdGhlbSB0aGF0IGlzIGFsd2F5cyB0cnVlCi8vICAgICAgICAodGhpcyBpcyBMTFZNIGFmdGVyIGFsbCA7KSkuIEl0IHdpbGwgb25seSBpbmZsdWVuY2UgdGhlIG1hbmdsZWQgbmFtZQovLyAgICAgICAgb2YgdGhlIHZhcmlhbnRzIGluc2lkZSB0aGUgaW5uZXIgcmVnaW9uIGFuZCBhdm9pZCB0aGUgY2xhc2guCiNwcmFnbWEgb21wIGJlZ2luIGRlY2xhcmUgdmFyaWFudCBtYXRjaChpbXBsZW1lbnRhdGlvbiA9IHt2ZW5kb3IobGx2bSl9KQoKX19ERVZJQ0VfXyBpbnQgaXNpbmYoZmxvYXQgX194KSB7IHJldHVybiA6Ol9faXNpbmZmKF9feCk7IH0KX19ERVZJQ0VfXyBpbnQgaXNpbmYoZG91YmxlIF9feCkgeyByZXR1cm4gOjpfX2lzaW5mKF9feCk7IH0KX19ERVZJQ0VfXyBpbnQgaXNmaW5pdGUoZmxvYXQgX194KSB7IHJldHVybiA6Ol9fZmluaXRlZihfX3gpOyB9Cl9fREVWSUNFX18gaW50IGlzZmluaXRlKGRvdWJsZSBfX3gpIHsgcmV0dXJuIDo6X19pc2Zpbml0ZWQoX194KTsgfQpfX0RFVklDRV9fIGludCBpc25hbihmbG9hdCBfX3gpIHsgcmV0dXJuIDo6X19pc25hbmYoX194KTsgfQpfX0RFVklDRV9fIGludCBpc25hbihkb3VibGUgX194KSB7IHJldHVybiA6Ol9faXNuYW4oX194KTsgfQoKI3ByYWdtYSBvbXAgZW5kIGRlY2xhcmUgdmFyaWFudAoKI2VuZGlmCgpfX0RFVklDRV9fIGJvb2wgaXNpbmYoZmxvYXQgX194KSB7IHJldHVybiA6Ol9faXNpbmZmKF9feCk7IH0KX19ERVZJQ0VfXyBib29sIGlzaW5mKGRvdWJsZSBfX3gpIHsgcmV0dXJuIDo6X19pc2luZihfX3gpOyB9Cl9fREVWSUNFX18gYm9vbCBpc2Zpbml0ZShmbG9hdCBfX3gpIHsgcmV0dXJuIDo6X19maW5pdGVmKF9feCk7IH0KLy8gRm9yIGluc2NydXRhYmxlIHJlYXNvbnMsIF9fZmluaXRlKCksIHRoZSBkb3VibGUtcHJlY2lzaW9uIHZlcnNpb24gb2YKLy8gX19maW5pdGVmLCBkb2VzIG5vdCBleGlzdCB3aGVuIGNvbXBpbGluZyBmb3IgTWFjT1MuICBfX2lzZmluaXRlZCBpcyBhdmFpbGFibGUKLy8gZXZlcnl3aGVyZSBhbmQgaXMganVzdCBhcyBnb29kLgpfX0RFVklDRV9fIGJvb2wgaXNmaW5pdGUoZG91YmxlIF9feCkgeyByZXR1cm4gOjpfX2lzZmluaXRlZChfX3gpOyB9Cl9fREVWSUNFX18gYm9vbCBpc25hbihmbG9hdCBfX3gpIHsgcmV0dXJuIDo6X19pc25hbmYoX194KTsgfQpfX0RFVklDRV9fIGJvb2wgaXNuYW4oZG91YmxlIF9feCkgeyByZXR1cm4gOjpfX2lzbmFuKF9feCk7IH0KCiNpZiBkZWZpbmVkKF9fT1BFTk1QX05WUFRYX18pCiNwcmFnbWEgb21wIGVuZCBkZWNsYXJlIHZhcmlhbnQKI2VuZGlmCgojZW5kaWYKCl9fREVWSUNFX18gYm9vbCBpc2dyZWF0ZXIoZmxvYXQgX194LCBmbG9hdCBfX3kpIHsKICByZXR1cm4gX19idWlsdGluX2lzZ3JlYXRlcihfX3gsIF9feSk7Cn0KX19ERVZJQ0VfXyBib29sIGlzZ3JlYXRlcihkb3VibGUgX194LCBkb3VibGUgX195KSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9pc2dyZWF0ZXIoX194LCBfX3kpOwp9Cl9fREVWSUNFX18gYm9vbCBpc2dyZWF0ZXJlcXVhbChmbG9hdCBfX3gsIGZsb2F0IF9feSkgewogIHJldHVybiBfX2J1aWx0aW5faXNncmVhdGVyZXF1YWwoX194LCBfX3kpOwp9Cl9fREVWSUNFX18gYm9vbCBpc2dyZWF0ZXJlcXVhbChkb3VibGUgX194LCBkb3VibGUgX195KSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9pc2dyZWF0ZXJlcXVhbChfX3gsIF9feSk7Cn0KX19ERVZJQ0VfXyBib29sIGlzbGVzcyhmbG9hdCBfX3gsIGZsb2F0IF9feSkgewogIHJldHVybiBfX2J1aWx0aW5faXNsZXNzKF9feCwgX195KTsKfQpfX0RFVklDRV9fIGJvb2wgaXNsZXNzKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHsKICByZXR1cm4gX19idWlsdGluX2lzbGVzcyhfX3gsIF9feSk7Cn0KX19ERVZJQ0VfXyBib29sIGlzbGVzc2VxdWFsKGZsb2F0IF9feCwgZmxvYXQgX195KSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9pc2xlc3NlcXVhbChfX3gsIF9feSk7Cn0KX19ERVZJQ0VfXyBib29sIGlzbGVzc2VxdWFsKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHsKICByZXR1cm4gX19idWlsdGluX2lzbGVzc2VxdWFsKF9feCwgX195KTsKfQpfX0RFVklDRV9fIGJvb2wgaXNsZXNzZ3JlYXRlcihmbG9hdCBfX3gsIGZsb2F0IF9feSkgewogIHJldHVybiBfX2J1aWx0aW5faXNsZXNzZ3JlYXRlcihfX3gsIF9feSk7Cn0KX19ERVZJQ0VfXyBib29sIGlzbGVzc2dyZWF0ZXIoZG91YmxlIF9feCwgZG91YmxlIF9feSkgewogIHJldHVybiBfX2J1aWx0aW5faXNsZXNzZ3JlYXRlcihfX3gsIF9feSk7Cn0KX19ERVZJQ0VfXyBib29sIGlzbm9ybWFsKGZsb2F0IF9feCkgeyByZXR1cm4gX19idWlsdGluX2lzbm9ybWFsKF9feCk7IH0KX19ERVZJQ0VfXyBib29sIGlzbm9ybWFsKGRvdWJsZSBfX3gpIHsgcmV0dXJuIF9fYnVpbHRpbl9pc25vcm1hbChfX3gpOyB9Cl9fREVWSUNFX18gYm9vbCBpc3Vub3JkZXJlZChmbG9hdCBfX3gsIGZsb2F0IF9feSkgewogIHJldHVybiBfX2J1aWx0aW5faXN1bm9yZGVyZWQoX194LCBfX3kpOwp9Cl9fREVWSUNFX18gYm9vbCBpc3Vub3JkZXJlZChkb3VibGUgX194LCBkb3VibGUgX195KSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9pc3Vub3JkZXJlZChfX3gsIF9feSk7Cn0KX19ERVZJQ0VfXyBmbG9hdCBsZGV4cChmbG9hdCBfX2FyZywgaW50IF9fZXhwKSB7CiAgcmV0dXJuIDo6bGRleHBmKF9fYXJnLCBfX2V4cCk7Cn0KX19ERVZJQ0VfXyBmbG9hdCBsb2coZmxvYXQgX194KSB7IHJldHVybiA6OmxvZ2YoX194KTsgfQpfX0RFVklDRV9fIGZsb2F0IGxvZzEwKGZsb2F0IF9feCkgeyByZXR1cm4gOjpsb2cxMGYoX194KTsgfQpfX0RFVklDRV9fIGZsb2F0IG1vZGYoZmxvYXQgX194LCBmbG9hdCAqX19pcHRyKSB7IHJldHVybiA6Om1vZGZmKF9feCwgX19pcHRyKTsgfQpfX0RFVklDRV9fIGZsb2F0IHBvdyhmbG9hdCBfX2Jhc2UsIGZsb2F0IF9fZXhwKSB7CiAgcmV0dXJuIDo6cG93ZihfX2Jhc2UsIF9fZXhwKTsKfQpfX0RFVklDRV9fIGZsb2F0IHBvdyhmbG9hdCBfX2Jhc2UsIGludCBfX2lleHApIHsKICByZXR1cm4gOjpwb3dpZihfX2Jhc2UsIF9faWV4cCk7Cn0KX19ERVZJQ0VfXyBkb3VibGUgcG93KGRvdWJsZSBfX2Jhc2UsIGludCBfX2lleHApIHsKICByZXR1cm4gOjpwb3dpKF9fYmFzZSwgX19pZXhwKTsKfQpfX0RFVklDRV9fIGJvb2wgc2lnbmJpdChmbG9hdCBfX3gpIHsgcmV0dXJuIDo6X19zaWduYml0ZihfX3gpOyB9Cl9fREVWSUNFX18gYm9vbCBzaWduYml0KGRvdWJsZSBfX3gpIHsgcmV0dXJuIDo6X19zaWduYml0ZChfX3gpOyB9Cl9fREVWSUNFX18gZmxvYXQgc2luKGZsb2F0IF9feCkgeyByZXR1cm4gOjpzaW5mKF9feCk7IH0KX19ERVZJQ0VfXyBmbG9hdCBzaW5oKGZsb2F0IF9feCkgeyByZXR1cm4gOjpzaW5oZihfX3gpOyB9Cl9fREVWSUNFX18gZmxvYXQgc3FydChmbG9hdCBfX3gpIHsgcmV0dXJuIDo6c3FydGYoX194KTsgfQpfX0RFVklDRV9fIGZsb2F0IHRhbihmbG9hdCBfX3gpIHsgcmV0dXJuIDo6dGFuZihfX3gpOyB9Cl9fREVWSUNFX18gZmxvYXQgdGFuaChmbG9hdCBfX3gpIHsgcmV0dXJuIDo6dGFuaGYoX194KTsgfQoKLy8gVGhlcmUgd2FzIGEgcmVkZWZpbml0aW9uIGVycm9yIGZvciB0aGlzIHRoaXMgb3ZlcmxvYWQgaW4gQ1VEQSBtb2RlLgovLyBXZSByZXN0cmljdCBpdCB0byBPcGVuTVAgbW9kZSBmb3Igbm93LCB0aGF0IGlzIHdoZXJlIGl0IGlzIGFjdHVhbGx5IG5lZWRlZAovLyBhbnl3YXkuCiNpZmRlZiBfX09QRU5NUF9OVlBUWF9fCl9fREVWSUNFX18gZmxvYXQgcmVtcXVvKGZsb2F0IF9fbiwgZmxvYXQgX19kLCBpbnQgKl9fcSkgewogIHJldHVybiA6OnJlbXF1b2YoX19uLCBfX2QsIF9fcSk7Cn0KI2VuZGlmCgovLyBOb3RhYmx5IG1pc3NpbmcgYWJvdmUgaXMgbmV4dHRvd2FyZC4gIFdlIG9taXQgaXQgYmVjYXVzZQovLyBsaWJkZXZpY2UgZG9lc24ndCBwcm92aWRlIGFuIGltcGxlbWVudGF0aW9uLCBhbmQgd2UgZG9uJ3Qgd2FudCB0byBiZSBpbiB0aGUKLy8gYnVzaW5lc3Mgb2YgaW1wbGVtZW50aW5nIHRyaWNreSBsaWJtIGZ1bmN0aW9ucyBpbiB0aGlzIGhlYWRlci4KCiNpZm5kZWYgX19PUEVOTVBfTlZQVFhfXwoKLy8gTm93IHdlJ3ZlIGRlZmluZWQgZXZlcnl0aGluZyB3ZSBwcm9taXNlZCB3ZSdkIGRlZmluZSBpbgovLyBfX2NsYW5nX2N1ZGFfbWF0aF9mb3J3YXJkX2RlY2xhcmVzLmguICBXZSBuZWVkIHRvIGRvIHR3byBhZGRpdGlvbmFsIHRoaW5ncyB0bwovLyBmaXggdXAgb3VyIG1hdGggZnVuY3Rpb25zLgovLwovLyAxKSBEZWZpbmUgX19kZXZpY2VfXyBvdmVybG9hZHMgZm9yIGUuZy4gc2luKGludCkuICBUaGUgQ1VEQSBoZWFkZXJzIGRlZmluZQovLyAgICBvbmx5IHNpbihmbG9hdCkgYW5kIHNpbihkb3VibGUpLCB3aGljaCBtZWFucyB0aGF0IGUuZy4gc2luKDApIGlzCi8vICAgIGFtYmlndW91cy4KLy8KLy8gMikgUHVsbCB0aGUgX19kZXZpY2VfXyBvdmVybG9hZHMgb2YgImZvb2JhcmYiIG1hdGggZnVuY3Rpb25zIGludG8gbmFtZXNwYWNlCi8vICAgIHN0ZC4gIFRoZXNlIGFyZSBkZWZpbmVkIGluIHRoZSBDVURBIGhlYWRlcnMgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UsCi8vICAgIGluZGVwZW5kZW50IG9mIGV2ZXJ5dGhpbmcgZWxzZSB3ZSd2ZSBkb25lIGhlcmUuCgovLyBXZSBjYW4ndCB1c2Ugc3RkOjplbmFibGVfaWYsIGJlY2F1c2Ugd2Ugd2FudCB0byBiZSBwcmUtQysrMTEgY29tcGF0aWJsZS4gIEJ1dAovLyB3ZSBnbyBhaGVhZCBhbmQgdW5jb25kaXRpb25hbGx5IGRlZmluZSBmdW5jdGlvbnMgdGhhdCBhcmUgb25seSBhdmFpbGFibGUgd2hlbgovLyBjb21waWxpbmcgZm9yIEMrKzExIHRvIG1hdGNoIHRoZSBiZWhhdmlvciBvZiB0aGUgQ1VEQSBoZWFkZXJzLgp0ZW1wbGF0ZTxib29sIF9fQiwgY2xhc3MgX19UID0gdm9pZD4Kc3RydWN0IF9fY2xhbmdfY3VkYV9lbmFibGVfaWYge307Cgp0ZW1wbGF0ZSA8Y2xhc3MgX19UPiBzdHJ1Y3QgX19jbGFuZ19jdWRhX2VuYWJsZV9pZjx0cnVlLCBfX1Q+IHsKICB0eXBlZGVmIF9fVCB0eXBlOwp9OwoKLy8gRGVmaW5lcyBhbiBvdmVybG9hZCBvZiBfX2ZuIHRoYXQgYWNjZXB0cyBvbmUgaW50ZWdyYWwgYXJndW1lbnQsIGNhbGxzCi8vIF9fZm4oKGRvdWJsZSl4KSwgYW5kIHJldHVybnMgX19yZXR0eS4KI2RlZmluZSBfX0NVREFfQ0xBTkdfRk5fSU5URUdFUl9PVkVSTE9BRF8xKF9fcmV0dHksIF9fZm4pICAgICAgICAgICAgICAgICAgICAgIFwKICB0ZW1wbGF0ZSA8dHlwZW5hbWUgX19UPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX0RFVklDRV9fICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgdHlwZW5hbWUgX19jbGFuZ19jdWRhX2VuYWJsZV9pZjxzdGQ6Om51bWVyaWNfbGltaXRzPF9fVD46OmlzX2ludGVnZXIsICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3JldHR5Pjo6dHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgX19mbihfX1QgX194KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHJldHVybiA6Ol9fZm4oKGRvdWJsZSlfX3gpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9CgovLyBEZWZpbmVzIGFuIG92ZXJsb2FkIG9mIF9fZm4gdGhhdCBhY2NlcHRzIG9uZSB0d28gYXJpdGhtZXRpYyBhcmd1bWVudHMsIGNhbGxzCi8vIF9fZm4oKGRvdWJsZSl4LCAoZG91YmxlKXkpLCBhbmQgcmV0dXJucyBhIGRvdWJsZS4KLy8KLy8gTm90ZSB0aGlzIGlzIGRpZmZlcmVudCBmcm9tIE9WRVJMT0FEXzEsIHdoaWNoIGdlbmVyYXRlcyBhbiBvdmVybG9hZCB0aGF0Ci8vIGFjY2VwdHMgb25seSAqaW50ZWdyYWwqIGFyZ3VtZW50cy4KI2RlZmluZSBfX0NVREFfQ0xBTkdfRk5fSU5URUdFUl9PVkVSTE9BRF8yKF9fcmV0dHksIF9fZm4pICAgICAgICAgICAgICAgICAgICAgIFwKICB0ZW1wbGF0ZSA8dHlwZW5hbWUgX19UMSwgdHlwZW5hbWUgX19UMj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX0RFVklDRV9fIHR5cGVuYW1lIF9fY2xhbmdfY3VkYV9lbmFibGVfaWY8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxfX1QxPjo6aXNfc3BlY2lhbGl6ZWQgJiYgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8X19UMj46OmlzX3NwZWNpYWxpemVkLCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgX19yZXR0eT46OnR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2ZuKF9fVDEgX194LCBfX1QyIF9feSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHJldHVybiBfX2ZuKChkb3VibGUpX194LCAoZG91YmxlKV9feSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9CgpfX0NVREFfQ0xBTkdfRk5fSU5URUdFUl9PVkVSTE9BRF8xKGRvdWJsZSwgYWNvcykKX19DVURBX0NMQU5HX0ZOX0lOVEVHRVJfT1ZFUkxPQURfMShkb3VibGUsIGFjb3NoKQpfX0NVREFfQ0xBTkdfRk5fSU5URUdFUl9PVkVSTE9BRF8xKGRvdWJsZSwgYXNpbikKX19DVURBX0NMQU5HX0ZOX0lOVEVHRVJfT1ZFUkxPQURfMShkb3VibGUsIGFzaW5oKQpfX0NVREFfQ0xBTkdfRk5fSU5URUdFUl9PVkVSTE9BRF8xKGRvdWJsZSwgYXRhbikKX19DVURBX0NMQU5HX0ZOX0lOVEVHRVJfT1ZFUkxPQURfMihkb3VibGUsIGF0YW4yKTsKX19DVURBX0NMQU5HX0ZOX0lOVEVHRVJfT1ZFUkxPQURfMShkb3VibGUsIGF0YW5oKQpfX0NVREFfQ0xBTkdfRk5fSU5URUdFUl9PVkVSTE9BRF8xKGRvdWJsZSwgY2JydCkKX19DVURBX0NMQU5HX0ZOX0lOVEVHRVJfT1ZFUkxPQURfMShkb3VibGUsIGNlaWwpCl9fQ1VEQV9DTEFOR19GTl9JTlRFR0VSX09WRVJMT0FEXzIoZG91YmxlLCBjb3B5c2lnbik7Cl9fQ1VEQV9DTEFOR19GTl9JTlRFR0VSX09WRVJMT0FEXzEoZG91YmxlLCBjb3MpCl9fQ1VEQV9DTEFOR19GTl9JTlRFR0VSX09WRVJMT0FEXzEoZG91YmxlLCBjb3NoKQpfX0NVREFfQ0xBTkdfRk5fSU5URUdFUl9PVkVSTE9BRF8xKGRvdWJsZSwgZXJmKQpfX0NVREFfQ0xBTkdfRk5fSU5URUdFUl9PVkVSTE9BRF8xKGRvdWJsZSwgZXJmYykKX19DVURBX0NMQU5HX0ZOX0lOVEVHRVJfT1ZFUkxPQURfMShkb3VibGUsIGV4cCkKX19DVURBX0NMQU5HX0ZOX0lOVEVHRVJfT1ZFUkxPQURfMShkb3VibGUsIGV4cDIpCl9fQ1VEQV9DTEFOR19GTl9JTlRFR0VSX09WRVJMT0FEXzEoZG91YmxlLCBleHBtMSkKX19DVURBX0NMQU5HX0ZOX0lOVEVHRVJfT1ZFUkxPQURfMShkb3VibGUsIGZhYnMpCl9fQ1VEQV9DTEFOR19GTl9JTlRFR0VSX09WRVJMT0FEXzIoZG91YmxlLCBmZGltKTsKX19DVURBX0NMQU5HX0ZOX0lOVEVHRVJfT1ZFUkxPQURfMShkb3VibGUsIGZsb29yKQpfX0NVREFfQ0xBTkdfRk5fSU5URUdFUl9PVkVSTE9BRF8yKGRvdWJsZSwgZm1heCk7Cl9fQ1VEQV9DTEFOR19GTl9JTlRFR0VSX09WRVJMT0FEXzIoZG91YmxlLCBmbWluKTsKX19DVURBX0NMQU5HX0ZOX0lOVEVHRVJfT1ZFUkxPQURfMihkb3VibGUsIGZtb2QpOwpfX0NVREFfQ0xBTkdfRk5fSU5URUdFUl9PVkVSTE9BRF8xKGludCwgZnBjbGFzc2lmeSkKX19DVURBX0NMQU5HX0ZOX0lOVEVHRVJfT1ZFUkxPQURfMihkb3VibGUsIGh5cG90KTsKX19DVURBX0NMQU5HX0ZOX0lOVEVHRVJfT1ZFUkxPQURfMShpbnQsIGlsb2diKQpfX0NVREFfQ0xBTkdfRk5fSU5URUdFUl9PVkVSTE9BRF8xKGJvb2wsIGlzZmluaXRlKQpfX0NVREFfQ0xBTkdfRk5fSU5URUdFUl9PVkVSTE9BRF8yKGJvb2wsIGlzZ3JlYXRlcik7Cl9fQ1VEQV9DTEFOR19GTl9JTlRFR0VSX09WRVJMT0FEXzIoYm9vbCwgaXNncmVhdGVyZXF1YWwpOwpfX0NVREFfQ0xBTkdfRk5fSU5URUdFUl9PVkVSTE9BRF8xKGJvb2wsIGlzaW5mKTsKX19DVURBX0NMQU5HX0ZOX0lOVEVHRVJfT1ZFUkxPQURfMihib29sLCBpc2xlc3MpOwpfX0NVREFfQ0xBTkdfRk5fSU5URUdFUl9PVkVSTE9BRF8yKGJvb2wsIGlzbGVzc2VxdWFsKTsKX19DVURBX0NMQU5HX0ZOX0lOVEVHRVJfT1ZFUkxPQURfMihib29sLCBpc2xlc3NncmVhdGVyKTsKX19DVURBX0NMQU5HX0ZOX0lOVEVHRVJfT1ZFUkxPQURfMShib29sLCBpc25hbik7Cl9fQ1VEQV9DTEFOR19GTl9JTlRFR0VSX09WRVJMT0FEXzEoYm9vbCwgaXNub3JtYWwpCl9fQ1VEQV9DTEFOR19GTl9JTlRFR0VSX09WRVJMT0FEXzIoYm9vbCwgaXN1bm9yZGVyZWQpOwpfX0NVREFfQ0xBTkdfRk5fSU5URUdFUl9PVkVSTE9BRF8xKGRvdWJsZSwgbGdhbW1hKQpfX0NVREFfQ0xBTkdfRk5fSU5URUdFUl9PVkVSTE9BRF8xKGRvdWJsZSwgbG9nKQpfX0NVREFfQ0xBTkdfRk5fSU5URUdFUl9PVkVSTE9BRF8xKGRvdWJsZSwgbG9nMTApCl9fQ1VEQV9DTEFOR19GTl9JTlRFR0VSX09WRVJMT0FEXzEoZG91YmxlLCBsb2cxcCkKX19DVURBX0NMQU5HX0ZOX0lOVEVHRVJfT1ZFUkxPQURfMShkb3VibGUsIGxvZzIpCl9fQ1VEQV9DTEFOR19GTl9JTlRFR0VSX09WRVJMT0FEXzEoZG91YmxlLCBsb2diKQpfX0NVREFfQ0xBTkdfRk5fSU5URUdFUl9PVkVSTE9BRF8xKGxvbmcgbG9uZywgbGxyaW50KQpfX0NVREFfQ0xBTkdfRk5fSU5URUdFUl9PVkVSTE9BRF8xKGxvbmcgbG9uZywgbGxyb3VuZCkKX19DVURBX0NMQU5HX0ZOX0lOVEVHRVJfT1ZFUkxPQURfMShsb25nLCBscmludCkKX19DVURBX0NMQU5HX0ZOX0lOVEVHRVJfT1ZFUkxPQURfMShsb25nLCBscm91bmQpCl9fQ1VEQV9DTEFOR19GTl9JTlRFR0VSX09WRVJMT0FEXzEoZG91YmxlLCBuZWFyYnlpbnQpOwpfX0NVREFfQ0xBTkdfRk5fSU5URUdFUl9PVkVSTE9BRF8yKGRvdWJsZSwgbmV4dGFmdGVyKTsKX19DVURBX0NMQU5HX0ZOX0lOVEVHRVJfT1ZFUkxPQURfMihkb3VibGUsIHBvdyk7Cl9fQ1VEQV9DTEFOR19GTl9JTlRFR0VSX09WRVJMT0FEXzIoZG91YmxlLCByZW1haW5kZXIpOwpfX0NVREFfQ0xBTkdfRk5fSU5URUdFUl9PVkVSTE9BRF8xKGRvdWJsZSwgcmludCk7Cl9fQ1VEQV9DTEFOR19GTl9JTlRFR0VSX09WRVJMT0FEXzEoZG91YmxlLCByb3VuZCk7Cl9fQ1VEQV9DTEFOR19GTl9JTlRFR0VSX09WRVJMT0FEXzEoYm9vbCwgc2lnbmJpdCkKX19DVURBX0NMQU5HX0ZOX0lOVEVHRVJfT1ZFUkxPQURfMShkb3VibGUsIHNpbikKX19DVURBX0NMQU5HX0ZOX0lOVEVHRVJfT1ZFUkxPQURfMShkb3VibGUsIHNpbmgpCl9fQ1VEQV9DTEFOR19GTl9JTlRFR0VSX09WRVJMT0FEXzEoZG91YmxlLCBzcXJ0KQpfX0NVREFfQ0xBTkdfRk5fSU5URUdFUl9PVkVSTE9BRF8xKGRvdWJsZSwgdGFuKQpfX0NVREFfQ0xBTkdfRk5fSU5URUdFUl9PVkVSTE9BRF8xKGRvdWJsZSwgdGFuaCkKX19DVURBX0NMQU5HX0ZOX0lOVEVHRVJfT1ZFUkxPQURfMShkb3VibGUsIHRnYW1tYSkKX19DVURBX0NMQU5HX0ZOX0lOVEVHRVJfT1ZFUkxPQURfMShkb3VibGUsIHRydW5jKTsKCiN1bmRlZiBfX0NVREFfQ0xBTkdfRk5fSU5URUdFUl9PVkVSTE9BRF8xCiN1bmRlZiBfX0NVREFfQ0xBTkdfRk5fSU5URUdFUl9PVkVSTE9BRF8yCgovLyBPdmVybG9hZHMgZm9yIGZ1bmN0aW9ucyB0aGF0IGRvbid0IG1hdGNoIHRoZSBwYXR0ZXJucyBleHBlY3RlZCBieQovLyBfX0NVREFfQ0xBTkdfRk5fSU5URUdFUl9PVkVSTE9BRF97MSwyfS4KdGVtcGxhdGUgPHR5cGVuYW1lIF9fVDEsIHR5cGVuYW1lIF9fVDIsIHR5cGVuYW1lIF9fVDM+Cl9fREVWSUNFX18gdHlwZW5hbWUgX19jbGFuZ19jdWRhX2VuYWJsZV9pZjwKICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8X19UMT46OmlzX3NwZWNpYWxpemVkICYmCiAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxfX1QyPjo6aXNfc3BlY2lhbGl6ZWQgJiYKICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPF9fVDM+Ojppc19zcGVjaWFsaXplZCwKICAgIGRvdWJsZT46OnR5cGUKZm1hKF9fVDEgX194LCBfX1QyIF9feSwgX19UMyBfX3opIHsKICByZXR1cm4gc3RkOjpmbWEoKGRvdWJsZSlfX3gsIChkb3VibGUpX195LCAoZG91YmxlKV9feik7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBfX1Q+Cl9fREVWSUNFX18gdHlwZW5hbWUgX19jbGFuZ19jdWRhX2VuYWJsZV9pZjxzdGQ6Om51bWVyaWNfbGltaXRzPF9fVD46OmlzX2ludGVnZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGU+Ojp0eXBlCmZyZXhwKF9fVCBfX3gsIGludCAqX19leHApIHsKICByZXR1cm4gc3RkOjpmcmV4cCgoZG91YmxlKV9feCwgX19leHApOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgX19UPgpfX0RFVklDRV9fIHR5cGVuYW1lIF9fY2xhbmdfY3VkYV9lbmFibGVfaWY8c3RkOjpudW1lcmljX2xpbWl0czxfX1Q+Ojppc19pbnRlZ2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlPjo6dHlwZQpsZGV4cChfX1QgX194LCBpbnQgX19leHApIHsKICByZXR1cm4gc3RkOjpsZGV4cCgoZG91YmxlKV9feCwgX19leHApOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgX19UMSwgdHlwZW5hbWUgX19UMj4KX19ERVZJQ0VfXyB0eXBlbmFtZSBfX2NsYW5nX2N1ZGFfZW5hYmxlX2lmPAogICAgc3RkOjpudW1lcmljX2xpbWl0czxfX1QxPjo6aXNfc3BlY2lhbGl6ZWQgJiYKICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPF9fVDI+Ojppc19zcGVjaWFsaXplZCwKICAgIGRvdWJsZT46OnR5cGUKcmVtcXVvKF9fVDEgX194LCBfX1QyIF9feSwgaW50ICpfX3F1bykgewogIHJldHVybiBzdGQ6OnJlbXF1bygoZG91YmxlKV9feCwgKGRvdWJsZSlfX3ksIF9fcXVvKTsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIF9fVD4KX19ERVZJQ0VfXyB0eXBlbmFtZSBfX2NsYW5nX2N1ZGFfZW5hYmxlX2lmPHN0ZDo6bnVtZXJpY19saW1pdHM8X19UPjo6aXNfaW50ZWdlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZT46OnR5cGUKc2NhbGJsbihfX1QgX194LCBsb25nIF9fZXhwKSB7CiAgcmV0dXJuIHN0ZDo6c2NhbGJsbigoZG91YmxlKV9feCwgX19leHApOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgX19UPgpfX0RFVklDRV9fIHR5cGVuYW1lIF9fY2xhbmdfY3VkYV9lbmFibGVfaWY8c3RkOjpudW1lcmljX2xpbWl0czxfX1Q+Ojppc19pbnRlZ2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlPjo6dHlwZQpzY2FsYm4oX19UIF9feCwgaW50IF9fZXhwKSB7CiAgcmV0dXJuIHN0ZDo6c2NhbGJuKChkb3VibGUpX194LCBfX2V4cCk7Cn0KCi8vIFdlIG5lZWQgdG8gZGVmaW5lIHRoZXNlIG92ZXJsb2FkcyBpbiBleGFjdGx5IHRoZSBuYW1lc3BhY2Ugb3VyIHN0YW5kYXJkCi8vIGxpYnJhcnkgdXNlcyAoaW5jbHVkaW5nIHRoZSByaWdodCBpbmxpbmUgbmFtZXNwYWNlKSwgb3RoZXJ3aXNlIHRoZXkgd29uJ3QgYmUKLy8gcGlja2VkIHVwIGJ5IG90aGVyIGZ1bmN0aW9ucyBpbiB0aGUgc3RhbmRhcmQgbGlicmFyeSAoZS5nLiBmdW5jdGlvbnMgaW4KLy8gPGNvbXBsZXg+KS4gIFRodXMgdGhlIHVnbGluZXNzIGJlbG93LgojaWZkZWYgX0xJQkNQUF9CRUdJTl9OQU1FU1BBQ0VfU1RECl9MSUJDUFBfQkVHSU5fTkFNRVNQQUNFX1NURAojZWxzZQpuYW1lc3BhY2Ugc3RkIHsKI2lmZGVmIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCl9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiNlbmRpZgojZW5kaWYKCi8vIFB1bGwgdGhlIG5ldyBvdmVybG9hZHMgd2UgZGVmaW5lZCBhYm92ZSBpbnRvIG5hbWVzcGFjZSBzdGQuCnVzaW5nIDo6YWNvczsKdXNpbmcgOjphY29zaDsKdXNpbmcgOjphc2luOwp1c2luZyA6OmFzaW5oOwp1c2luZyA6OmF0YW47CnVzaW5nIDo6YXRhbjI7CnVzaW5nIDo6YXRhbmg7CnVzaW5nIDo6Y2JydDsKdXNpbmcgOjpjZWlsOwp1c2luZyA6OmNvcHlzaWduOwp1c2luZyA6OmNvczsKdXNpbmcgOjpjb3NoOwp1c2luZyA6OmVyZjsKdXNpbmcgOjplcmZjOwp1c2luZyA6OmV4cDsKdXNpbmcgOjpleHAyOwp1c2luZyA6OmV4cG0xOwp1c2luZyA6OmZhYnM7CnVzaW5nIDo6ZmRpbTsKdXNpbmcgOjpmbG9vcjsKdXNpbmcgOjpmbWE7CnVzaW5nIDo6Zm1heDsKdXNpbmcgOjpmbWluOwp1c2luZyA6OmZtb2Q7CnVzaW5nIDo6ZnBjbGFzc2lmeTsKdXNpbmcgOjpmcmV4cDsKdXNpbmcgOjpoeXBvdDsKdXNpbmcgOjppbG9nYjsKdXNpbmcgOjppc2Zpbml0ZTsKdXNpbmcgOjppc2dyZWF0ZXI7CnVzaW5nIDo6aXNncmVhdGVyZXF1YWw7CnVzaW5nIDo6aXNsZXNzOwp1c2luZyA6OmlzbGVzc2VxdWFsOwp1c2luZyA6OmlzbGVzc2dyZWF0ZXI7CnVzaW5nIDo6aXNub3JtYWw7CnVzaW5nIDo6aXN1bm9yZGVyZWQ7CnVzaW5nIDo6bGRleHA7CnVzaW5nIDo6bGdhbW1hOwp1c2luZyA6OmxscmludDsKdXNpbmcgOjpsbHJvdW5kOwp1c2luZyA6OmxvZzsKdXNpbmcgOjpsb2cxMDsKdXNpbmcgOjpsb2cxcDsKdXNpbmcgOjpsb2cyOwp1c2luZyA6OmxvZ2I7CnVzaW5nIDo6bHJpbnQ7CnVzaW5nIDo6bHJvdW5kOwp1c2luZyA6Om5lYXJieWludDsKdXNpbmcgOjpuZXh0YWZ0ZXI7CnVzaW5nIDo6cG93Owp1c2luZyA6OnJlbWFpbmRlcjsKdXNpbmcgOjpyZW1xdW87CnVzaW5nIDo6cmludDsKdXNpbmcgOjpyb3VuZDsKdXNpbmcgOjpzY2FsYmxuOwp1c2luZyA6OnNjYWxibjsKdXNpbmcgOjpzaWduYml0Owp1c2luZyA6OnNpbjsKdXNpbmcgOjpzaW5oOwp1c2luZyA6OnNxcnQ7CnVzaW5nIDo6dGFuOwp1c2luZyA6OnRhbmg7CnVzaW5nIDo6dGdhbW1hOwp1c2luZyA6OnRydW5jOwoKLy8gV2VsbCB0aGlzIGlzIGZ1bjogV2UgbmVlZCB0byBwdWxsIHRoZXNlIHN5bWJvbHMgaW4gZm9yIGxpYmMrKywgYnV0IHdlIGNhbid0Ci8vIHB1bGwgdGhlbSBpbiB3aXRoIGxpYnN0ZGMrKywgYmVjYXVzZSBpdHMgOjppc2luZiBhbmQgOjppc25hbiBhcmUgZGlmZmVyZW50Ci8vIHRoYW4gaXRzIHN0ZDo6aXNpbmYgYW5kIHN0ZDo6aXNuYW4uCiNpZm5kZWYgX19HTElCQ1hYX18KdXNpbmcgOjppc2luZjsKdXNpbmcgOjppc25hbjsKI2VuZGlmCgovLyBGaW5hbGx5LCBwdWxsIHRoZSAiZm9vYmFyZiIgZnVuY3Rpb25zIHRoYXQgQ1VEQSBkZWZpbmVzIGluIGl0cyBoZWFkZXJzIGludG8KLy8gbmFtZXNwYWNlIHN0ZC4KdXNpbmcgOjphY29zZjsKdXNpbmcgOjphY29zaGY7CnVzaW5nIDo6YXNpbmY7CnVzaW5nIDo6YXNpbmhmOwp1c2luZyA6OmF0YW4yZjsKdXNpbmcgOjphdGFuZjsKdXNpbmcgOjphdGFuaGY7CnVzaW5nIDo6Y2JydGY7CnVzaW5nIDo6Y2VpbGY7CnVzaW5nIDo6Y29weXNpZ25mOwp1c2luZyA6OmNvc2Y7CnVzaW5nIDo6Y29zaGY7CnVzaW5nIDo6ZXJmY2Y7CnVzaW5nIDo6ZXJmZjsKdXNpbmcgOjpleHAyZjsKdXNpbmcgOjpleHBmOwp1c2luZyA6OmV4cG0xZjsKdXNpbmcgOjpmYWJzZjsKdXNpbmcgOjpmZGltZjsKdXNpbmcgOjpmbG9vcmY7CnVzaW5nIDo6Zm1hZjsKdXNpbmcgOjpmbWF4ZjsKdXNpbmcgOjpmbWluZjsKdXNpbmcgOjpmbW9kZjsKdXNpbmcgOjpmcmV4cGY7CnVzaW5nIDo6aHlwb3RmOwp1c2luZyA6Omlsb2diZjsKdXNpbmcgOjpsZGV4cGY7CnVzaW5nIDo6bGdhbW1hZjsKdXNpbmcgOjpsbHJpbnRmOwp1c2luZyA6Omxscm91bmRmOwp1c2luZyA6OmxvZzEwZjsKdXNpbmcgOjpsb2cxcGY7CnVzaW5nIDo6bG9nMmY7CnVzaW5nIDo6bG9nYmY7CnVzaW5nIDo6bG9nZjsKdXNpbmcgOjpscmludGY7CnVzaW5nIDo6bHJvdW5kZjsKdXNpbmcgOjptb2RmZjsKdXNpbmcgOjpuZWFyYnlpbnRmOwp1c2luZyA6Om5leHRhZnRlcmY7CnVzaW5nIDo6cG93ZjsKdXNpbmcgOjpyZW1haW5kZXJmOwp1c2luZyA6OnJlbXF1b2Y7CnVzaW5nIDo6cmludGY7CnVzaW5nIDo6cm91bmRmOwp1c2luZyA6OnNjYWxibG5mOwp1c2luZyA6OnNjYWxibmY7CnVzaW5nIDo6c2luZjsKdXNpbmcgOjpzaW5oZjsKdXNpbmcgOjpzcXJ0ZjsKdXNpbmcgOjp0YW5mOwp1c2luZyA6OnRhbmhmOwp1c2luZyA6OnRnYW1tYWY7CnVzaW5nIDo6dHJ1bmNmOwoKI2lmZGVmIF9MSUJDUFBfRU5EX05BTUVTUEFDRV9TVEQKX0xJQkNQUF9FTkRfTkFNRVNQQUNFX1NURAojZWxzZQojaWZkZWYgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KX0dMSUJDWFhfRU5EX05BTUVTUEFDRV9WRVJTSU9OCiNlbmRpZgp9IC8vIG5hbWVzcGFjZSBzdGQKI2VuZGlmCgojZW5kaWYgLy8gX19PUEVOTVBfTlZQVFhfXwoKI3VuZGVmIF9fREVWSUNFX18KCiNlbmRpZgoAX193bW1pbnRyaW5fcGNsbXVsLmgAYWx0aXZlYy5oAC8qPT09LS0tLS0tLS0tLS0tIGF2eDUxMmJmMTZpbnRyaW4uaCAtIEFWWDUxMl9CRjE2IGludHJpbnNpY3MgLS0tLS0tLS0tLS0tLS09PT0KICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKi8KI2lmbmRlZiBfX0lNTUlOVFJJTl9ICiNlcnJvciAiTmV2ZXIgdXNlIDxhdng1MTJiZjE2aW50cmluLmg+IGRpcmVjdGx5OyBpbmNsdWRlIDxpbW1pbnRyaW4uaD4gaW5zdGVhZC4iCiNlbmRpZgoKI2lmbmRlZiBfX0FWWDUxMkJGMTZJTlRSSU5fSAojZGVmaW5lIF9fQVZYNTEyQkYxNklOVFJJTl9ICgp0eXBlZGVmIHNob3J0IF9fbTUxMmJoIF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXyg2NCksIF9fYWxpZ25lZF9fKDY0KSkpOwp0eXBlZGVmIHNob3J0IF9fbTI1NmJoIF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXygzMiksIF9fYWxpZ25lZF9fKDMyKSkpOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fYmZsb2F0MTY7CgojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUzUxMiBcCiAgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJhdng1MTJiZjE2IiksIFwKICAgICAgICAgICAgICAgICBfX21pbl92ZWN0b3Jfd2lkdGhfXyg1MTIpKSkKI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oImF2eDUxMmJmMTYiKSkpCgovLy8gQ29udmVydCBPbmUgQkYxNiBEYXRhIHRvIE9uZSBTaW5nbGUgRmxvYXQgRGF0YS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHNwZWNpZmljIGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX0EKLy8vICAgIEEgYmZsb2F0IGRhdGEuCi8vLyBccmV0dXJucyBBIGZsb2F0IGRhdGEgd2hvc2Ugc2lnbiBmaWVsZCBhbmQgZXhwb25lbnQgZmllbGQga2VlcCB1bmNoYW5nZWQsCi8vLyAgICBhbmQgZnJhY3Rpb24gZmllbGQgaXMgZXh0ZW5kZWQgdG8gMjMgYml0cy4Kc3RhdGljIF9faW5saW5lX18gZmxvYXQgX19ERUZBVUxUX0ZOX0FUVFJTIF9tbV9jdnRzYmhfc3MoX19iZmxvYXQxNiBfX0EpIHsKICByZXR1cm4gX19idWlsdGluX2lhMzJfY3Z0c2JmMTYyc3NfMzIoX19BKTsKfQoKLy8vIENvbnZlcnQgVHdvIFBhY2tlZCBTaW5nbGUgRGF0YSB0byBPbmUgUGFja2VkIEJGMTYgRGF0YS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ1ZUTkUyUFMyQkYxNiA8L2M+IGluc3RydWN0aW9ucy4KLy8vCi8vLyBccGFyYW0gX19BCi8vLyAgICBBIDUxMi1iaXQgdmVjdG9yIG9mIFsxNiB4IGZsb2F0XS4KLy8vIFxwYXJhbSBfX0IKLy8vICAgIEEgNTEyLWJpdCB2ZWN0b3Igb2YgWzE2IHggZmxvYXRdLgovLy8gXHJldHVybnMgQSA1MTItYml0IHZlY3RvciBvZiBbMzIgeCBiZmxvYXRdIHdob3NlIGxvd2VyIDI1NiBiaXRzIGNvbWUgZnJvbQovLy8gICAgY29udmVyc2lvbiBvZiBfX0IsIGFuZCBoaWdoZXIgMjU2IGJpdHMgY29tZSBmcm9tIGNvbnZlcnNpb24gb2YgX19BLgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJiaCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2N2dG5lMnBzX3BiaChfX201MTIgX19BLCBfX201MTIgX19CKSB7CiAgcmV0dXJuIChfX201MTJiaClfX2J1aWx0aW5faWEzMl9jdnRuZTJwczJiZjE2XzUxMigoX192MTZzZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpIF9fQik7Cn0KCi8vLyBDb252ZXJ0IFR3byBQYWNrZWQgU2luZ2xlIERhdGEgdG8gT25lIFBhY2tlZCBCRjE2IERhdGEuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNWVE5FMlBTMkJGMTYgPC9jPiBpbnN0cnVjdGlvbnMuCi8vLwovLy8gXHBhcmFtIF9fQQovLy8gICAgQSA1MTItYml0IHZlY3RvciBvZiBbMTYgeCBmbG9hdF0uCi8vLyBccGFyYW0gX19CCi8vLyAgICBBIDUxMi1iaXQgdmVjdG9yIG9mIFsxNiB4IGZsb2F0XS4KLy8vIFxwYXJhbSBfX1cKLy8vICAgIEEgNTEyLWJpdCB2ZWN0b3Igb2YgWzMyIHggYmZsb2F0XS4KLy8vIFxwYXJhbSBfX1UKLy8vICAgIEEgMzItYml0IG1hc2sgdmFsdWUgc3BlY2lmeWluZyB3aGF0IGlzIGNob3NlbiBmb3IgZWFjaCBlbGVtZW50LgovLy8gICAgQSAxIG1lYW5zIGNvbnZlcnNpb24gb2YgX19BIG9yIF9fQi4gQSAwIG1lYW5zIGVsZW1lbnQgZnJvbSBfX1cuCi8vLyBccmV0dXJucyBBIDUxMi1iaXQgdmVjdG9yIG9mIFszMiB4IGJmbG9hdF0gd2hvc2UgbG93ZXIgMjU2IGJpdHMgY29tZSBmcm9tCi8vLyAgICBjb252ZXJzaW9uIG9mIF9fQiwgYW5kIGhpZ2hlciAyNTYgYml0cyBjb21lIGZyb20gY29udmVyc2lvbiBvZiBfX0EuCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmJoIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19jdnRuZTJwc19wYmgoX19tNTEyYmggX19XLCBfX21tYXNrMzIgX19VLCBfX201MTIgX19BLCBfX201MTIgX19CKSB7CiAgcmV0dXJuIChfX201MTJiaClfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzUxMigoX19tbWFzazMyKV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9tbTUxMl9jdnRuZTJwc19wYmgoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX19XKTsKfQoKLy8vIENvbnZlcnQgVHdvIFBhY2tlZCBTaW5nbGUgRGF0YSB0byBPbmUgUGFja2VkIEJGMTYgRGF0YS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ1ZUTkUyUFMyQkYxNiA8L2M+IGluc3RydWN0aW9ucy4KLy8vCi8vLyBccGFyYW0gX19BCi8vLyAgICBBIDUxMi1iaXQgdmVjdG9yIG9mIFsxNiB4IGZsb2F0XS4KLy8vIFxwYXJhbSBfX0IKLy8vICAgIEEgNTEyLWJpdCB2ZWN0b3Igb2YgWzE2IHggZmxvYXRdLgovLy8gXHBhcmFtIF9fVQovLy8gICAgQSAzMi1iaXQgbWFzayB2YWx1ZSBzcGVjaWZ5aW5nIHdoYXQgaXMgY2hvc2VuIGZvciBlYWNoIGVsZW1lbnQuCi8vLyAgICBBIDEgbWVhbnMgY29udmVyc2lvbiBvZiBfX0Egb3IgX19CLiBBIDAgbWVhbnMgZWxlbWVudCBpcyB6ZXJvLgovLy8gXHJldHVybnMgQSA1MTItYml0IHZlY3RvciBvZiBbMzIgeCBiZmxvYXRdIHdob3NlIGxvd2VyIDI1NiBiaXRzIGNvbWUgZnJvbQovLy8gICAgY29udmVyc2lvbiBvZiBfX0IsIGFuZCBoaWdoZXIgMjU2IGJpdHMgY29tZSBmcm9tIGNvbnZlcnNpb24gb2YgX19BLgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJiaCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2N2dG5lMnBzX3BiaChfX21tYXNrMzIgX19VLCBfX201MTIgX19BLCBfX201MTIgX19CKSB7CiAgcmV0dXJuIChfX201MTJiaClfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzUxMigoX19tbWFzazMyKV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9tbTUxMl9jdnRuZTJwc19wYmgoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCi8vLyBDb252ZXJ0IFBhY2tlZCBTaW5nbGUgRGF0YSB0byBQYWNrZWQgQkYxNiBEYXRhLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDVlRORVBTMkJGMTYgPC9jPiBpbnN0cnVjdGlvbnMuCi8vLwovLy8gXHBhcmFtIF9fQQovLy8gICAgQSA1MTItYml0IHZlY3RvciBvZiBbMTYgeCBmbG9hdF0uCi8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFsxNiB4IGJmbG9hdF0gY29tZSBmcm9tIGNvbnZlcnNpb24gb2YgX19BLgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZiaCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2N2dG5lcHNfcGJoKF9fbTUxMiBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmJoKV9fYnVpbHRpbl9pYTMyX2N2dG5lcHMyYmYxNl81MTJfbWFzaygoX192MTZzZilfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfdW5kZWZpbmVkX3NpMjU2KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KS0xKTsKfQoKLy8vIENvbnZlcnQgUGFja2VkIFNpbmdsZSBEYXRhIHRvIFBhY2tlZCBCRjE2IERhdGEuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNWVE5FUFMyQkYxNiA8L2M+IGluc3RydWN0aW9ucy4KLy8vCi8vLyBccGFyYW0gX19BCi8vLyAgICBBIDUxMi1iaXQgdmVjdG9yIG9mIFsxNiB4IGZsb2F0XS4KLy8vIFxwYXJhbSBfX1cKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzE2IHggYmZsb2F0XS4KLy8vIFxwYXJhbSBfX1UKLy8vICAgIEEgMTYtYml0IG1hc2sgdmFsdWUgc3BlY2lmeWluZyB3aGF0IGlzIGNob3NlbiBmb3IgZWFjaCBlbGVtZW50LgovLy8gICAgQSAxIG1lYW5zIGNvbnZlcnNpb24gb2YgX19BLiBBIDAgbWVhbnMgZWxlbWVudCBmcm9tIF9fVy4KLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzE2IHggYmZsb2F0XSBjb21lIGZyb20gY29udmVyc2lvbiBvZiBfX0EuCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmJoIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19jdnRuZXBzX3BiaChfX20yNTZiaCBfX1csIF9fbW1hc2sxNiBfX1UsIF9fbTUxMiBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmJoKV9fYnVpbHRpbl9pYTMyX2N2dG5lcHMyYmYxNl81MTJfbWFzaygoX192MTZzZilfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX19XLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpX19VKTsKfQoKLy8vIENvbnZlcnQgUGFja2VkIFNpbmdsZSBEYXRhIHRvIFBhY2tlZCBCRjE2IERhdGEuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNWVE5FUFMyQkYxNiA8L2M+IGluc3RydWN0aW9ucy4KLy8vCi8vLyBccGFyYW0gX19BCi8vLyAgICBBIDUxMi1iaXQgdmVjdG9yIG9mIFsxNiB4IGZsb2F0XS4KLy8vIFxwYXJhbSBfX1UKLy8vICAgIEEgMTYtYml0IG1hc2sgdmFsdWUgc3BlY2lmeWluZyB3aGF0IGlzIGNob3NlbiBmb3IgZWFjaCBlbGVtZW50LgovLy8gICAgQSAxIG1lYW5zIGNvbnZlcnNpb24gb2YgX19BLiBBIDAgbWVhbnMgZWxlbWVudCBpcyB6ZXJvLgovLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbMTYgeCBiZmxvYXRdIGNvbWUgZnJvbSBjb252ZXJzaW9uIG9mIF9fQS4Kc3RhdGljIF9faW5saW5lX18gX19tMjU2YmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9jdnRuZXBzX3BiaChfX21tYXNrMTYgX19VLCBfX201MTIgX19BKSB7CiAgcmV0dXJuIChfX20yNTZiaClfX2J1aWx0aW5faWEzMl9jdnRuZXBzMmJmMTZfNTEyX21hc2soKF9fdjE2c2YpX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfc2V0emVyb19zaTI1NigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KV9fVSk7Cn0KCi8vLyBEb3QgUHJvZHVjdCBvZiBCRjE2IFBhaXJzIEFjY3VtdWxhdGVkIGludG8gUGFja2VkIFNpbmdsZSBQcmVjaXNpb24uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkRQQkYxNlBTIDwvYz4gaW5zdHJ1Y3Rpb25zLgovLy8KLy8vIFxwYXJhbSBfX0EKLy8vICAgIEEgNTEyLWJpdCB2ZWN0b3Igb2YgWzMyIHggYmZsb2F0XS4KLy8vIFxwYXJhbSBfX0IKLy8vICAgIEEgNTEyLWJpdCB2ZWN0b3Igb2YgWzMyIHggYmZsb2F0XS4KLy8vIFxwYXJhbSBfX0QKLy8vICAgIEEgNTEyLWJpdCB2ZWN0b3Igb2YgWzE2IHggZmxvYXRdLgovLy8gXHJldHVybnMgQSA1MTItYml0IHZlY3RvciBvZiBbMTYgeCBmbG9hdF0gY29tZXMgZnJvbSAgRG90IFByb2R1Y3Qgb2YKLy8vICBfX0EsIF9fQiBhbmQgX19ECnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2RwYmYxNl9wcyhfX201MTIgX19ELCBfX201MTJiaCBfX0EsIF9fbTUxMmJoIF9fQikgewogIHJldHVybiAoX19tNTEyKV9fYnVpbHRpbl9pYTMyX2RwYmYxNnBzXzUxMigoX192MTZzZikgX19ELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSkgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSkgX19CKTsKfQoKLy8vIERvdCBQcm9kdWN0IG9mIEJGMTYgUGFpcnMgQWNjdW11bGF0ZWQgaW50byBQYWNrZWQgU2luZ2xlIFByZWNpc2lvbi4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWRFBCRjE2UFMgPC9jPiBpbnN0cnVjdGlvbnMuCi8vLwovLy8gXHBhcmFtIF9fQQovLy8gICAgQSA1MTItYml0IHZlY3RvciBvZiBbMzIgeCBiZmxvYXRdLgovLy8gXHBhcmFtIF9fQgovLy8gICAgQSA1MTItYml0IHZlY3RvciBvZiBbMzIgeCBiZmxvYXRdLgovLy8gXHBhcmFtIF9fRAovLy8gICAgQSA1MTItYml0IHZlY3RvciBvZiBbMTYgeCBmbG9hdF0uCi8vLyBccGFyYW0gX19VCi8vLyAgICBBIDE2LWJpdCBtYXNrIHZhbHVlIHNwZWNpZnlpbmcgd2hhdCBpcyBjaG9zZW4gZm9yIGVhY2ggZWxlbWVudC4KLy8vICAgIEEgMSBtZWFucyBfX0EgYW5kIF9fQidzIGRvdCBwcm9kdWN0IGFjY3VtdWxhdGVkIHdpdGggX19ELiBBIDAgbWVhbnMgX19ELgovLy8gXHJldHVybnMgQSA1MTItYml0IHZlY3RvciBvZiBbMTYgeCBmbG9hdF0gY29tZXMgZnJvbSAgRG90IFByb2R1Y3Qgb2YKLy8vICBfX0EsIF9fQiBhbmQgX19ECnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfZHBiZjE2X3BzKF9fbTUxMiBfX0QsIF9fbW1hc2sxNiBfX1UsIF9fbTUxMmJoIF9fQSwgX19tNTEyYmggX19CKSB7CiAgcmV0dXJuIChfX201MTIpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfNTEyKChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfZHBiZjE2X3BzKF9fRCwgX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfX0QpOwp9CgovLy8gRG90IFByb2R1Y3Qgb2YgQkYxNiBQYWlycyBBY2N1bXVsYXRlZCBpbnRvIFBhY2tlZCBTaW5nbGUgUHJlY2lzaW9uLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZEUEJGMTZQUyA8L2M+IGluc3RydWN0aW9ucy4KLy8vCi8vLyBccGFyYW0gX19BCi8vLyAgICBBIDUxMi1iaXQgdmVjdG9yIG9mIFszMiB4IGJmbG9hdF0uCi8vLyBccGFyYW0gX19CCi8vLyAgICBBIDUxMi1iaXQgdmVjdG9yIG9mIFszMiB4IGJmbG9hdF0uCi8vLyBccGFyYW0gX19ECi8vLyAgICBBIDUxMi1iaXQgdmVjdG9yIG9mIFsxNiB4IGZsb2F0XS4KLy8vIFxwYXJhbSBfX1UKLy8vICAgIEEgMTYtYml0IG1hc2sgdmFsdWUgc3BlY2lmeWluZyB3aGF0IGlzIGNob3NlbiBmb3IgZWFjaCBlbGVtZW50LgovLy8gICAgQSAxIG1lYW5zIF9fQSBhbmQgX19CJ3MgZG90IHByb2R1Y3QgYWNjdW11bGF0ZWQgd2l0aCBfX0QuIEEgMCBtZWFucyAwLgovLy8gXHJldHVybnMgQSA1MTItYml0IHZlY3RvciBvZiBbMTYgeCBmbG9hdF0gY29tZXMgZnJvbSAgRG90IFByb2R1Y3Qgb2YKLy8vICBfX0EsIF9fQiBhbmQgX19ECnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2RwYmYxNl9wcyhfX21tYXNrMTYgX19VLCBfX201MTIgX19ELCBfX201MTJiaCBfX0EsIF9fbTUxMmJoIF9fQikgewogIHJldHVybiAoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzUxMigoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX21tNTEyX2RwYmYxNl9wcyhfX0QsIF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCi8vLyBDb252ZXJ0IFBhY2tlZCBCRjE2IERhdGEgdG8gUGFja2VkIGZsb2F0IERhdGEuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFxwYXJhbSBfX0EKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzE2IHggYmZsb2F0XS4KLy8vIFxyZXR1cm5zIEEgNTEyLWJpdCB2ZWN0b3Igb2YgWzE2IHggZmxvYXRdIGNvbWUgZnJvbSBjb252ZXJzaW9uIG9mIF9fQQpzdGF0aWMgX19pbmxpbmVfXyBfX201MTIgX19ERUZBVUxUX0ZOX0FUVFJTNTEyIF9tbTUxMl9jdnRwYmhfcHMoX19tMjU2YmggX19BKSB7CiAgcmV0dXJuIF9tbTUxMl9jYXN0c2k1MTJfcHMoKF9fbTUxMmkpX21tNTEyX3NsbGlfZXBpMzIoCiAgICAgIChfX201MTJpKV9tbTUxMl9jdnRlcGkxNl9lcGkzMigoX19tMjU2aSlfX0EpLCAxNikpOwp9CgovLy8gQ29udmVydCBQYWNrZWQgQkYxNiBEYXRhIHRvIFBhY2tlZCBmbG9hdCBEYXRhIHVzaW5nIHplcm9pbmcgbWFzay4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gXHBhcmFtIF9fVQovLy8gICAgQSAxNi1iaXQgbWFzay4gRWxlbWVudHMgYXJlIHplcm9lZCBvdXQgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBtYXNrCi8vLyAgICBiaXQgaXMgbm90IHNldC4KLy8vIFxwYXJhbSBfX0EKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzE2IHggYmZsb2F0XS4KLy8vIFxyZXR1cm5zIEEgNTEyLWJpdCB2ZWN0b3Igb2YgWzE2IHggZmxvYXRdIGNvbWUgZnJvbSBjb252ZXJzaW9uIG9mIF9fQQpzdGF0aWMgX19pbmxpbmVfXyBfX201MTIgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9jdnRwYmhfcHMoX19tbWFzazE2IF9fVSwgX19tMjU2YmggX19BKSB7CiAgcmV0dXJuIF9tbTUxMl9jYXN0c2k1MTJfcHMoKF9fbTUxMmkpX21tNTEyX3NsbGlfZXBpMzIoCiAgICAgIChfX201MTJpKV9tbTUxMl9tYXNrel9jdnRlcGkxNl9lcGkzMigoX19tbWFzazE2KV9fVSwgKF9fbTI1NmkpX19BKSwgMTYpKTsKfQoKLy8vIENvbnZlcnQgUGFja2VkIEJGMTYgRGF0YSB0byBQYWNrZWQgZmxvYXQgRGF0YSB1c2luZyBtZXJnaW5nIG1hc2suCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFxwYXJhbSBfX1MKLy8vICAgIEEgNTEyLWJpdCB2ZWN0b3Igb2YgWzE2IHggZmxvYXRdLiBFbGVtZW50cyBhcmUgY29waWVkIGZyb20gX19TIHdoZW4KLy8vICAgICB0aGUgY29ycmVzcG9uZGluZyBtYXNrIGJpdCBpcyBub3Qgc2V0LgovLy8gXHBhcmFtIF9fVQovLy8gICAgQSAxNi1iaXQgbWFzay4KLy8vIFxwYXJhbSBfX0EKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzE2IHggYmZsb2F0XS4KLy8vIFxyZXR1cm5zIEEgNTEyLWJpdCB2ZWN0b3Igb2YgWzE2IHggZmxvYXRdIGNvbWUgZnJvbSBjb252ZXJzaW9uIG9mIF9fQQpzdGF0aWMgX19pbmxpbmVfXyBfX201MTIgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2N2dHBiaF9wcyhfX201MTIgX19TLCBfX21tYXNrMTYgX19VLCBfX20yNTZiaCBfX0EpIHsKICByZXR1cm4gX21tNTEyX2Nhc3RzaTUxMl9wcygoX19tNTEyaSlfbW01MTJfbWFza19zbGxpX2VwaTMyKAogICAgICAoX19tNTEyaSlfX1MsIChfX21tYXNrMTYpX19VLAogICAgICAoX19tNTEyaSlfbW01MTJfY3Z0ZXBpMTZfZXBpMzIoKF9fbTI1NmkpX19BKSwgMTYpKTsKfQoKI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUwojdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCgojZW5kaWYKAC8qPT09LS0tLS0tLS0tLS0tLSBhdng1MTJid2ludHJpbi5oIC0gQVZYNTEyQlcgaW50cmluc2ljcyAtLS0tLS0tLS0tLS0tLS0tLS09PT0KICoKICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKi8KI2lmbmRlZiBfX0lNTUlOVFJJTl9ICiNlcnJvciAiTmV2ZXIgdXNlIDxhdng1MTJid2ludHJpbi5oPiBkaXJlY3RseTsgaW5jbHVkZSA8aW1taW50cmluLmg+IGluc3RlYWQuIgojZW5kaWYKCiNpZm5kZWYgX19BVlg1MTJCV0lOVFJJTl9ICiNkZWZpbmUgX19BVlg1MTJCV0lOVFJJTl9ICgp0eXBlZGVmIHVuc2lnbmVkIGludCBfX21tYXNrMzI7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIF9fbW1hc2s2NDsKCi8qIERlZmluZSB0aGUgZGVmYXVsdCBhdHRyaWJ1dGVzIGZvciB0aGUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZS4gKi8KI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJhdng1MTJidyIpLCBfX21pbl92ZWN0b3Jfd2lkdGhfXyg1MTIpKSkKI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJhdng1MTJidyIpKSkKCnN0YXRpYyBfX2lubGluZSBfX21tYXNrMzIgX19ERUZBVUxUX0ZOX0FUVFJTCl9rbm90X21hc2szMihfX21tYXNrMzIgX19NKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2tub3RzaShfX00pOwp9CgpzdGF0aWMgX19pbmxpbmUgX19tbWFzazY0IF9fREVGQVVMVF9GTl9BVFRSUwpfa25vdF9tYXNrNjQoX19tbWFzazY0IF9fTSkKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9rbm90ZGkoX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tbWFzazMyIF9fREVGQVVMVF9GTl9BVFRSUwpfa2FuZF9tYXNrMzIoX19tbWFzazMyIF9fQSwgX19tbWFzazMyIF9fQikKewogIHJldHVybiAoX19tbWFzazMyKV9fYnVpbHRpbl9pYTMyX2thbmRzaSgoX19tbWFzazMyKV9fQSwgKF9fbW1hc2szMilfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX21tYXNrNjQgX19ERUZBVUxUX0ZOX0FUVFJTCl9rYW5kX21hc2s2NChfX21tYXNrNjQgX19BLCBfX21tYXNrNjQgX19CKQp7CiAgcmV0dXJuIChfX21tYXNrNjQpX19idWlsdGluX2lhMzJfa2FuZGRpKChfX21tYXNrNjQpX19BLCAoX19tbWFzazY0KV9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbW1hc2szMiBfX0RFRkFVTFRfRk5fQVRUUlMKX2thbmRuX21hc2szMihfX21tYXNrMzIgX19BLCBfX21tYXNrMzIgX19CKQp7CiAgcmV0dXJuIChfX21tYXNrMzIpX19idWlsdGluX2lhMzJfa2FuZG5zaSgoX19tbWFzazMyKV9fQSwgKF9fbW1hc2szMilfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX21tYXNrNjQgX19ERUZBVUxUX0ZOX0FUVFJTCl9rYW5kbl9tYXNrNjQoX19tbWFzazY0IF9fQSwgX19tbWFzazY0IF9fQikKewogIHJldHVybiAoX19tbWFzazY0KV9fYnVpbHRpbl9pYTMyX2thbmRuZGkoKF9fbW1hc2s2NClfX0EsIChfX21tYXNrNjQpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tbWFzazMyIF9fREVGQVVMVF9GTl9BVFRSUwpfa29yX21hc2szMihfX21tYXNrMzIgX19BLCBfX21tYXNrMzIgX19CKQp7CiAgcmV0dXJuIChfX21tYXNrMzIpX19idWlsdGluX2lhMzJfa29yc2koKF9fbW1hc2szMilfX0EsIChfX21tYXNrMzIpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tbWFzazY0IF9fREVGQVVMVF9GTl9BVFRSUwpfa29yX21hc2s2NChfX21tYXNrNjQgX19BLCBfX21tYXNrNjQgX19CKQp7CiAgcmV0dXJuIChfX21tYXNrNjQpX19idWlsdGluX2lhMzJfa29yZGkoKF9fbW1hc2s2NClfX0EsIChfX21tYXNrNjQpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tbWFzazMyIF9fREVGQVVMVF9GTl9BVFRSUwpfa3hub3JfbWFzazMyKF9fbW1hc2szMiBfX0EsIF9fbW1hc2szMiBfX0IpCnsKICByZXR1cm4gKF9fbW1hc2szMilfX2J1aWx0aW5faWEzMl9reG5vcnNpKChfX21tYXNrMzIpX19BLCAoX19tbWFzazMyKV9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbW1hc2s2NCBfX0RFRkFVTFRfRk5fQVRUUlMKX2t4bm9yX21hc2s2NChfX21tYXNrNjQgX19BLCBfX21tYXNrNjQgX19CKQp7CiAgcmV0dXJuIChfX21tYXNrNjQpX19idWlsdGluX2lhMzJfa3hub3JkaSgoX19tbWFzazY0KV9fQSwgKF9fbW1hc2s2NClfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX21tYXNrMzIgX19ERUZBVUxUX0ZOX0FUVFJTCl9reG9yX21hc2szMihfX21tYXNrMzIgX19BLCBfX21tYXNrMzIgX19CKQp7CiAgcmV0dXJuIChfX21tYXNrMzIpX19idWlsdGluX2lhMzJfa3hvcnNpKChfX21tYXNrMzIpX19BLCAoX19tbWFzazMyKV9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbW1hc2s2NCBfX0RFRkFVTFRfRk5fQVRUUlMKX2t4b3JfbWFzazY0KF9fbW1hc2s2NCBfX0EsIF9fbW1hc2s2NCBfX0IpCnsKICByZXR1cm4gKF9fbW1hc2s2NClfX2J1aWx0aW5faWEzMl9reG9yZGkoKF9fbW1hc2s2NClfX0EsIChfX21tYXNrNjQpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgY2hhciBfX0RFRkFVTFRfRk5fQVRUUlMKX2tvcnRlc3RjX21hc2szMl91OChfX21tYXNrMzIgX19BLCBfX21tYXNrMzIgX19CKQp7CiAgcmV0dXJuICh1bnNpZ25lZCBjaGFyKV9fYnVpbHRpbl9pYTMyX2tvcnRlc3Rjc2koX19BLCBfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBjaGFyIF9fREVGQVVMVF9GTl9BVFRSUwpfa29ydGVzdHpfbWFzazMyX3U4KF9fbW1hc2szMiBfX0EsIF9fbW1hc2szMiBfX0IpCnsKICByZXR1cm4gKHVuc2lnbmVkIGNoYXIpX19idWlsdGluX2lhMzJfa29ydGVzdHpzaShfX0EsIF9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGNoYXIgX19ERUZBVUxUX0ZOX0FUVFJTCl9rb3J0ZXN0X21hc2szMl91OChfX21tYXNrMzIgX19BLCBfX21tYXNrMzIgX19CLCB1bnNpZ25lZCBjaGFyICpfX0MpIHsKICAqX19DID0gKHVuc2lnbmVkIGNoYXIpX19idWlsdGluX2lhMzJfa29ydGVzdGNzaShfX0EsIF9fQik7CiAgcmV0dXJuICh1bnNpZ25lZCBjaGFyKV9fYnVpbHRpbl9pYTMyX2tvcnRlc3R6c2koX19BLCBfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBjaGFyIF9fREVGQVVMVF9GTl9BVFRSUwpfa29ydGVzdGNfbWFzazY0X3U4KF9fbW1hc2s2NCBfX0EsIF9fbW1hc2s2NCBfX0IpCnsKICByZXR1cm4gKHVuc2lnbmVkIGNoYXIpX19idWlsdGluX2lhMzJfa29ydGVzdGNkaShfX0EsIF9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGNoYXIgX19ERUZBVUxUX0ZOX0FUVFJTCl9rb3J0ZXN0el9tYXNrNjRfdTgoX19tbWFzazY0IF9fQSwgX19tbWFzazY0IF9fQikKewogIHJldHVybiAodW5zaWduZWQgY2hhcilfX2J1aWx0aW5faWEzMl9rb3J0ZXN0emRpKF9fQSwgX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgY2hhciBfX0RFRkFVTFRfRk5fQVRUUlMKX2tvcnRlc3RfbWFzazY0X3U4KF9fbW1hc2s2NCBfX0EsIF9fbW1hc2s2NCBfX0IsIHVuc2lnbmVkIGNoYXIgKl9fQykgewogICpfX0MgPSAodW5zaWduZWQgY2hhcilfX2J1aWx0aW5faWEzMl9rb3J0ZXN0Y2RpKF9fQSwgX19CKTsKICByZXR1cm4gKHVuc2lnbmVkIGNoYXIpX19idWlsdGluX2lhMzJfa29ydGVzdHpkaShfX0EsIF9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGNoYXIgX19ERUZBVUxUX0ZOX0FUVFJTCl9rdGVzdGNfbWFzazMyX3U4KF9fbW1hc2szMiBfX0EsIF9fbW1hc2szMiBfX0IpCnsKICByZXR1cm4gKHVuc2lnbmVkIGNoYXIpX19idWlsdGluX2lhMzJfa3Rlc3Rjc2koX19BLCBfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBjaGFyIF9fREVGQVVMVF9GTl9BVFRSUwpfa3Rlc3R6X21hc2szMl91OChfX21tYXNrMzIgX19BLCBfX21tYXNrMzIgX19CKQp7CiAgcmV0dXJuICh1bnNpZ25lZCBjaGFyKV9fYnVpbHRpbl9pYTMyX2t0ZXN0enNpKF9fQSwgX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgY2hhciBfX0RFRkFVTFRfRk5fQVRUUlMKX2t0ZXN0X21hc2szMl91OChfX21tYXNrMzIgX19BLCBfX21tYXNrMzIgX19CLCB1bnNpZ25lZCBjaGFyICpfX0MpIHsKICAqX19DID0gKHVuc2lnbmVkIGNoYXIpX19idWlsdGluX2lhMzJfa3Rlc3Rjc2koX19BLCBfX0IpOwogIHJldHVybiAodW5zaWduZWQgY2hhcilfX2J1aWx0aW5faWEzMl9rdGVzdHpzaShfX0EsIF9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGNoYXIgX19ERUZBVUxUX0ZOX0FUVFJTCl9rdGVzdGNfbWFzazY0X3U4KF9fbW1hc2s2NCBfX0EsIF9fbW1hc2s2NCBfX0IpCnsKICByZXR1cm4gKHVuc2lnbmVkIGNoYXIpX19idWlsdGluX2lhMzJfa3Rlc3RjZGkoX19BLCBfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBjaGFyIF9fREVGQVVMVF9GTl9BVFRSUwpfa3Rlc3R6X21hc2s2NF91OChfX21tYXNrNjQgX19BLCBfX21tYXNrNjQgX19CKQp7CiAgcmV0dXJuICh1bnNpZ25lZCBjaGFyKV9fYnVpbHRpbl9pYTMyX2t0ZXN0emRpKF9fQSwgX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgY2hhciBfX0RFRkFVTFRfRk5fQVRUUlMKX2t0ZXN0X21hc2s2NF91OChfX21tYXNrNjQgX19BLCBfX21tYXNrNjQgX19CLCB1bnNpZ25lZCBjaGFyICpfX0MpIHsKICAqX19DID0gKHVuc2lnbmVkIGNoYXIpX19idWlsdGluX2lhMzJfa3Rlc3RjZGkoX19BLCBfX0IpOwogIHJldHVybiAodW5zaWduZWQgY2hhcilfX2J1aWx0aW5faWEzMl9rdGVzdHpkaShfX0EsIF9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbW1hc2szMiBfX0RFRkFVTFRfRk5fQVRUUlMKX2thZGRfbWFzazMyKF9fbW1hc2szMiBfX0EsIF9fbW1hc2szMiBfX0IpCnsKICByZXR1cm4gKF9fbW1hc2szMilfX2J1aWx0aW5faWEzMl9rYWRkc2koKF9fbW1hc2szMilfX0EsIChfX21tYXNrMzIpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tbWFzazY0IF9fREVGQVVMVF9GTl9BVFRSUwpfa2FkZF9tYXNrNjQoX19tbWFzazY0IF9fQSwgX19tbWFzazY0IF9fQikKewogIHJldHVybiAoX19tbWFzazY0KV9fYnVpbHRpbl9pYTMyX2thZGRkaSgoX19tbWFzazY0KV9fQSwgKF9fbW1hc2s2NClfX0IpOwp9CgojZGVmaW5lIF9rc2hpZnRsaV9tYXNrMzIoQSwgSSkgXAogICgoX19tbWFzazMyKV9fYnVpbHRpbl9pYTMyX2tzaGlmdGxpc2koKF9fbW1hc2szMikoQSksICh1bnNpZ25lZCBpbnQpKEkpKSkKCiNkZWZpbmUgX2tzaGlmdHJpX21hc2szMihBLCBJKSBcCiAgKChfX21tYXNrMzIpX19idWlsdGluX2lhMzJfa3NoaWZ0cmlzaSgoX19tbWFzazMyKShBKSwgKHVuc2lnbmVkIGludCkoSSkpKQoKI2RlZmluZSBfa3NoaWZ0bGlfbWFzazY0KEEsIEkpIFwKICAoKF9fbW1hc2s2NClfX2J1aWx0aW5faWEzMl9rc2hpZnRsaWRpKChfX21tYXNrNjQpKEEpLCAodW5zaWduZWQgaW50KShJKSkpCgojZGVmaW5lIF9rc2hpZnRyaV9tYXNrNjQoQSwgSSkgXAogICgoX19tbWFzazY0KV9fYnVpbHRpbl9pYTMyX2tzaGlmdHJpZGkoKF9fbW1hc2s2NCkoQSksICh1bnNpZ25lZCBpbnQpKEkpKSkKCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGludCBfX0RFRkFVTFRfRk5fQVRUUlMKX2N2dG1hc2szMl91MzIoX19tbWFzazMyIF9fQSkgewogIHJldHVybiAodW5zaWduZWQgaW50KV9fYnVpbHRpbl9pYTMyX2ttb3ZkKChfX21tYXNrMzIpX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgbG9uZyBsb25nIF9fREVGQVVMVF9GTl9BVFRSUwpfY3Z0bWFzazY0X3U2NChfX21tYXNrNjQgX19BKSB7CiAgcmV0dXJuICh1bnNpZ25lZCBsb25nIGxvbmcpX19idWlsdGluX2lhMzJfa21vdnEoKF9fbW1hc2s2NClfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX21tYXNrMzIgX19ERUZBVUxUX0ZOX0FUVFJTCl9jdnR1MzJfbWFzazMyKHVuc2lnbmVkIGludCBfX0EpIHsKICByZXR1cm4gKF9fbW1hc2szMilfX2J1aWx0aW5faWEzMl9rbW92ZCgoX19tbWFzazMyKV9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbW1hc2s2NCBfX0RFRkFVTFRfRk5fQVRUUlMKX2N2dHU2NF9tYXNrNjQodW5zaWduZWQgbG9uZyBsb25nIF9fQSkgewogIHJldHVybiAoX19tbWFzazY0KV9fYnVpbHRpbl9pYTMyX2ttb3ZxKChfX21tYXNrNjQpX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tbWFzazMyIF9fREVGQVVMVF9GTl9BVFRSUwpfbG9hZF9tYXNrMzIoX19tbWFzazMyICpfX0EpIHsKICByZXR1cm4gKF9fbW1hc2szMilfX2J1aWx0aW5faWEzMl9rbW92ZCgqKF9fbW1hc2szMiAqKV9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbW1hc2s2NCBfX0RFRkFVTFRfRk5fQVRUUlMKX2xvYWRfbWFzazY0KF9fbW1hc2s2NCAqX19BKSB7CiAgcmV0dXJuIChfX21tYXNrNjQpX19idWlsdGluX2lhMzJfa21vdnEoKihfX21tYXNrNjQgKilfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUwpfc3RvcmVfbWFzazMyKF9fbW1hc2szMiAqX19BLCBfX21tYXNrMzIgX19CKSB7CiAgKihfX21tYXNrMzIgKilfX0EgPSBfX2J1aWx0aW5faWEzMl9rbW92ZCgoX19tbWFzazMyKV9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTCl9zdG9yZV9tYXNrNjQoX19tbWFzazY0ICpfX0EsIF9fbW1hc2s2NCBfX0IpIHsKICAqKF9fbW1hc2s2NCAqKV9fQSA9IF9fYnVpbHRpbl9pYTMyX2ttb3ZxKChfX21tYXNrNjQpX19CKTsKfQoKLyogSW50ZWdlciBjb21wYXJlICovCgojZGVmaW5lIF9tbTUxMl9jbXBfZXBpOF9tYXNrKGEsIGIsIHApIFwKICAoKF9fbW1hc2s2NClfX2J1aWx0aW5faWEzMl9jbXBiNTEyX21hc2soKF9fdjY0cWkpKF9fbTUxMmkpKGEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y2NHFpKShfX201MTJpKShiKSwgKGludCkocCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s2NCktMSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX2NtcF9lcGk4X21hc2sobSwgYSwgYiwgcCkgXAogICgoX19tbWFzazY0KV9fYnVpbHRpbl9pYTMyX2NtcGI1MTJfbWFzaygoX192NjRxaSkoX19tNTEyaSkoYSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjY0cWkpKF9fbTUxMmkpKGIpLCAoaW50KShwKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazY0KShtKSkpCgojZGVmaW5lIF9tbTUxMl9jbXBfZXB1OF9tYXNrKGEsIGIsIHApIFwKICAoKF9fbW1hc2s2NClfX2J1aWx0aW5faWEzMl91Y21wYjUxMl9tYXNrKChfX3Y2NHFpKShfX201MTJpKShhKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjY0cWkpKF9fbTUxMmkpKGIpLCAoaW50KShwKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s2NCktMSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX2NtcF9lcHU4X21hc2sobSwgYSwgYiwgcCkgXAogICgoX19tbWFzazY0KV9fYnVpbHRpbl9pYTMyX3VjbXBiNTEyX21hc2soKF9fdjY0cWkpKF9fbTUxMmkpKGEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NjRxaSkoX19tNTEyaSkoYiksIChpbnQpKHApLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazY0KShtKSkpCgojZGVmaW5lIF9tbTUxMl9jbXBfZXBpMTZfbWFzayhhLCBiLCBwKSBcCiAgKChfX21tYXNrMzIpX19idWlsdGluX2lhMzJfY21wdzUxMl9tYXNrKChfX3YzMmhpKShfX201MTJpKShhKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSkoX19tNTEyaSkoYiksIChpbnQpKHApLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMzIpLTEpKQoKI2RlZmluZSBfbW01MTJfbWFza19jbXBfZXBpMTZfbWFzayhtLCBhLCBiLCBwKSBcCiAgKChfX21tYXNrMzIpX19idWlsdGluX2lhMzJfY21wdzUxMl9tYXNrKChfX3YzMmhpKShfX201MTJpKShhKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSkoX19tNTEyaSkoYiksIChpbnQpKHApLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMzIpKG0pKSkKCiNkZWZpbmUgX21tNTEyX2NtcF9lcHUxNl9tYXNrKGEsIGIsIHApIFwKICAoKF9fbW1hc2szMilfX2J1aWx0aW5faWEzMl91Y21wdzUxMl9tYXNrKChfX3YzMmhpKShfX201MTJpKShhKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpKF9fbTUxMmkpKGIpLCAoaW50KShwKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2szMiktMSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX2NtcF9lcHUxNl9tYXNrKG0sIGEsIGIsIHApIFwKICAoKF9fbW1hc2szMilfX2J1aWx0aW5faWEzMl91Y21wdzUxMl9tYXNrKChfX3YzMmhpKShfX201MTJpKShhKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpKF9fbTUxMmkpKGIpLCAoaW50KShwKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2szMikobSkpKQoKI2RlZmluZSBfbW01MTJfY21wZXFfZXBpOF9tYXNrKEEsIEIpIFwKICAgIF9tbTUxMl9jbXBfZXBpOF9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX0VRKQojZGVmaW5lIF9tbTUxMl9tYXNrX2NtcGVxX2VwaThfbWFzayhrLCBBLCBCKSBcCiAgICBfbW01MTJfbWFza19jbXBfZXBpOF9tYXNrKChrKSwgKEEpLCAoQiksIF9NTV9DTVBJTlRfRVEpCiNkZWZpbmUgX21tNTEyX2NtcGdlX2VwaThfbWFzayhBLCBCKSBcCiAgICBfbW01MTJfY21wX2VwaThfbWFzaygoQSksIChCKSwgX01NX0NNUElOVF9HRSkKI2RlZmluZSBfbW01MTJfbWFza19jbXBnZV9lcGk4X21hc2soaywgQSwgQikgXAogICAgX21tNTEyX21hc2tfY21wX2VwaThfbWFzaygoayksIChBKSwgKEIpLCBfTU1fQ01QSU5UX0dFKQojZGVmaW5lIF9tbTUxMl9jbXBndF9lcGk4X21hc2soQSwgQikgXAogICAgX21tNTEyX2NtcF9lcGk4X21hc2soKEEpLCAoQiksIF9NTV9DTVBJTlRfR1QpCiNkZWZpbmUgX21tNTEyX21hc2tfY21wZ3RfZXBpOF9tYXNrKGssIEEsIEIpIFwKICAgIF9tbTUxMl9tYXNrX2NtcF9lcGk4X21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9HVCkKI2RlZmluZSBfbW01MTJfY21wbGVfZXBpOF9tYXNrKEEsIEIpIFwKICAgIF9tbTUxMl9jbXBfZXBpOF9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX0xFKQojZGVmaW5lIF9tbTUxMl9tYXNrX2NtcGxlX2VwaThfbWFzayhrLCBBLCBCKSBcCiAgICBfbW01MTJfbWFza19jbXBfZXBpOF9tYXNrKChrKSwgKEEpLCAoQiksIF9NTV9DTVBJTlRfTEUpCiNkZWZpbmUgX21tNTEyX2NtcGx0X2VwaThfbWFzayhBLCBCKSBcCiAgICBfbW01MTJfY21wX2VwaThfbWFzaygoQSksIChCKSwgX01NX0NNUElOVF9MVCkKI2RlZmluZSBfbW01MTJfbWFza19jbXBsdF9lcGk4X21hc2soaywgQSwgQikgXAogICAgX21tNTEyX21hc2tfY21wX2VwaThfbWFzaygoayksIChBKSwgKEIpLCBfTU1fQ01QSU5UX0xUKQojZGVmaW5lIF9tbTUxMl9jbXBuZXFfZXBpOF9tYXNrKEEsIEIpIFwKICAgIF9tbTUxMl9jbXBfZXBpOF9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX05FKQojZGVmaW5lIF9tbTUxMl9tYXNrX2NtcG5lcV9lcGk4X21hc2soaywgQSwgQikgXAogICAgX21tNTEyX21hc2tfY21wX2VwaThfbWFzaygoayksIChBKSwgKEIpLCBfTU1fQ01QSU5UX05FKQoKI2RlZmluZSBfbW01MTJfY21wZXFfZXB1OF9tYXNrKEEsIEIpIFwKICAgIF9tbTUxMl9jbXBfZXB1OF9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX0VRKQojZGVmaW5lIF9tbTUxMl9tYXNrX2NtcGVxX2VwdThfbWFzayhrLCBBLCBCKSBcCiAgICBfbW01MTJfbWFza19jbXBfZXB1OF9tYXNrKChrKSwgKEEpLCAoQiksIF9NTV9DTVBJTlRfRVEpCiNkZWZpbmUgX21tNTEyX2NtcGdlX2VwdThfbWFzayhBLCBCKSBcCiAgICBfbW01MTJfY21wX2VwdThfbWFzaygoQSksIChCKSwgX01NX0NNUElOVF9HRSkKI2RlZmluZSBfbW01MTJfbWFza19jbXBnZV9lcHU4X21hc2soaywgQSwgQikgXAogICAgX21tNTEyX21hc2tfY21wX2VwdThfbWFzaygoayksIChBKSwgKEIpLCBfTU1fQ01QSU5UX0dFKQojZGVmaW5lIF9tbTUxMl9jbXBndF9lcHU4X21hc2soQSwgQikgXAogICAgX21tNTEyX2NtcF9lcHU4X21hc2soKEEpLCAoQiksIF9NTV9DTVBJTlRfR1QpCiNkZWZpbmUgX21tNTEyX21hc2tfY21wZ3RfZXB1OF9tYXNrKGssIEEsIEIpIFwKICAgIF9tbTUxMl9tYXNrX2NtcF9lcHU4X21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9HVCkKI2RlZmluZSBfbW01MTJfY21wbGVfZXB1OF9tYXNrKEEsIEIpIFwKICAgIF9tbTUxMl9jbXBfZXB1OF9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX0xFKQojZGVmaW5lIF9tbTUxMl9tYXNrX2NtcGxlX2VwdThfbWFzayhrLCBBLCBCKSBcCiAgICBfbW01MTJfbWFza19jbXBfZXB1OF9tYXNrKChrKSwgKEEpLCAoQiksIF9NTV9DTVBJTlRfTEUpCiNkZWZpbmUgX21tNTEyX2NtcGx0X2VwdThfbWFzayhBLCBCKSBcCiAgICBfbW01MTJfY21wX2VwdThfbWFzaygoQSksIChCKSwgX01NX0NNUElOVF9MVCkKI2RlZmluZSBfbW01MTJfbWFza19jbXBsdF9lcHU4X21hc2soaywgQSwgQikgXAogICAgX21tNTEyX21hc2tfY21wX2VwdThfbWFzaygoayksIChBKSwgKEIpLCBfTU1fQ01QSU5UX0xUKQojZGVmaW5lIF9tbTUxMl9jbXBuZXFfZXB1OF9tYXNrKEEsIEIpIFwKICAgIF9tbTUxMl9jbXBfZXB1OF9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX05FKQojZGVmaW5lIF9tbTUxMl9tYXNrX2NtcG5lcV9lcHU4X21hc2soaywgQSwgQikgXAogICAgX21tNTEyX21hc2tfY21wX2VwdThfbWFzaygoayksIChBKSwgKEIpLCBfTU1fQ01QSU5UX05FKQoKI2RlZmluZSBfbW01MTJfY21wZXFfZXBpMTZfbWFzayhBLCBCKSBcCiAgICBfbW01MTJfY21wX2VwaTE2X21hc2soKEEpLCAoQiksIF9NTV9DTVBJTlRfRVEpCiNkZWZpbmUgX21tNTEyX21hc2tfY21wZXFfZXBpMTZfbWFzayhrLCBBLCBCKSBcCiAgICBfbW01MTJfbWFza19jbXBfZXBpMTZfbWFzaygoayksIChBKSwgKEIpLCBfTU1fQ01QSU5UX0VRKQojZGVmaW5lIF9tbTUxMl9jbXBnZV9lcGkxNl9tYXNrKEEsIEIpIFwKICAgIF9tbTUxMl9jbXBfZXBpMTZfbWFzaygoQSksIChCKSwgX01NX0NNUElOVF9HRSkKI2RlZmluZSBfbW01MTJfbWFza19jbXBnZV9lcGkxNl9tYXNrKGssIEEsIEIpIFwKICAgIF9tbTUxMl9tYXNrX2NtcF9lcGkxNl9tYXNrKChrKSwgKEEpLCAoQiksIF9NTV9DTVBJTlRfR0UpCiNkZWZpbmUgX21tNTEyX2NtcGd0X2VwaTE2X21hc2soQSwgQikgXAogICAgX21tNTEyX2NtcF9lcGkxNl9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX0dUKQojZGVmaW5lIF9tbTUxMl9tYXNrX2NtcGd0X2VwaTE2X21hc2soaywgQSwgQikgXAogICAgX21tNTEyX21hc2tfY21wX2VwaTE2X21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9HVCkKI2RlZmluZSBfbW01MTJfY21wbGVfZXBpMTZfbWFzayhBLCBCKSBcCiAgICBfbW01MTJfY21wX2VwaTE2X21hc2soKEEpLCAoQiksIF9NTV9DTVBJTlRfTEUpCiNkZWZpbmUgX21tNTEyX21hc2tfY21wbGVfZXBpMTZfbWFzayhrLCBBLCBCKSBcCiAgICBfbW01MTJfbWFza19jbXBfZXBpMTZfbWFzaygoayksIChBKSwgKEIpLCBfTU1fQ01QSU5UX0xFKQojZGVmaW5lIF9tbTUxMl9jbXBsdF9lcGkxNl9tYXNrKEEsIEIpIFwKICAgIF9tbTUxMl9jbXBfZXBpMTZfbWFzaygoQSksIChCKSwgX01NX0NNUElOVF9MVCkKI2RlZmluZSBfbW01MTJfbWFza19jbXBsdF9lcGkxNl9tYXNrKGssIEEsIEIpIFwKICAgIF9tbTUxMl9tYXNrX2NtcF9lcGkxNl9tYXNrKChrKSwgKEEpLCAoQiksIF9NTV9DTVBJTlRfTFQpCiNkZWZpbmUgX21tNTEyX2NtcG5lcV9lcGkxNl9tYXNrKEEsIEIpIFwKICAgIF9tbTUxMl9jbXBfZXBpMTZfbWFzaygoQSksIChCKSwgX01NX0NNUElOVF9ORSkKI2RlZmluZSBfbW01MTJfbWFza19jbXBuZXFfZXBpMTZfbWFzayhrLCBBLCBCKSBcCiAgICBfbW01MTJfbWFza19jbXBfZXBpMTZfbWFzaygoayksIChBKSwgKEIpLCBfTU1fQ01QSU5UX05FKQoKI2RlZmluZSBfbW01MTJfY21wZXFfZXB1MTZfbWFzayhBLCBCKSBcCiAgICBfbW01MTJfY21wX2VwdTE2X21hc2soKEEpLCAoQiksIF9NTV9DTVBJTlRfRVEpCiNkZWZpbmUgX21tNTEyX21hc2tfY21wZXFfZXB1MTZfbWFzayhrLCBBLCBCKSBcCiAgICBfbW01MTJfbWFza19jbXBfZXB1MTZfbWFzaygoayksIChBKSwgKEIpLCBfTU1fQ01QSU5UX0VRKQojZGVmaW5lIF9tbTUxMl9jbXBnZV9lcHUxNl9tYXNrKEEsIEIpIFwKICAgIF9tbTUxMl9jbXBfZXB1MTZfbWFzaygoQSksIChCKSwgX01NX0NNUElOVF9HRSkKI2RlZmluZSBfbW01MTJfbWFza19jbXBnZV9lcHUxNl9tYXNrKGssIEEsIEIpIFwKICAgIF9tbTUxMl9tYXNrX2NtcF9lcHUxNl9tYXNrKChrKSwgKEEpLCAoQiksIF9NTV9DTVBJTlRfR0UpCiNkZWZpbmUgX21tNTEyX2NtcGd0X2VwdTE2X21hc2soQSwgQikgXAogICAgX21tNTEyX2NtcF9lcHUxNl9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX0dUKQojZGVmaW5lIF9tbTUxMl9tYXNrX2NtcGd0X2VwdTE2X21hc2soaywgQSwgQikgXAogICAgX21tNTEyX21hc2tfY21wX2VwdTE2X21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9HVCkKI2RlZmluZSBfbW01MTJfY21wbGVfZXB1MTZfbWFzayhBLCBCKSBcCiAgICBfbW01MTJfY21wX2VwdTE2X21hc2soKEEpLCAoQiksIF9NTV9DTVBJTlRfTEUpCiNkZWZpbmUgX21tNTEyX21hc2tfY21wbGVfZXB1MTZfbWFzayhrLCBBLCBCKSBcCiAgICBfbW01MTJfbWFza19jbXBfZXB1MTZfbWFzaygoayksIChBKSwgKEIpLCBfTU1fQ01QSU5UX0xFKQojZGVmaW5lIF9tbTUxMl9jbXBsdF9lcHUxNl9tYXNrKEEsIEIpIFwKICAgIF9tbTUxMl9jbXBfZXB1MTZfbWFzaygoQSksIChCKSwgX01NX0NNUElOVF9MVCkKI2RlZmluZSBfbW01MTJfbWFza19jbXBsdF9lcHUxNl9tYXNrKGssIEEsIEIpIFwKICAgIF9tbTUxMl9tYXNrX2NtcF9lcHUxNl9tYXNrKChrKSwgKEEpLCAoQiksIF9NTV9DTVBJTlRfTFQpCiNkZWZpbmUgX21tNTEyX2NtcG5lcV9lcHUxNl9tYXNrKEEsIEIpIFwKICAgIF9tbTUxMl9jbXBfZXB1MTZfbWFzaygoQSksIChCKSwgX01NX0NNUElOVF9ORSkKI2RlZmluZSBfbW01MTJfbWFza19jbXBuZXFfZXB1MTZfbWFzayhrLCBBLCBCKSBcCiAgICBfbW01MTJfbWFza19jbXBfZXB1MTZfbWFzaygoayksIChBKSwgKEIpLCBfTU1fQ01QSU5UX05FKQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2FkZF9lcGk4IChfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpIHsKICByZXR1cm4gKF9fbTUxMmkpICgoX192NjRxdSkgX19BICsgKF9fdjY0cXUpIF9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2FkZF9lcGk4KF9fbTUxMmkgX19XLCBfX21tYXNrNjQgX19VLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpIHsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl81MTIoKF9fbW1hc2s2NClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y2NHFpKV9tbTUxMl9hZGRfZXBpOChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y2NHFpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9hZGRfZXBpOChfX21tYXNrNjQgX19VLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpIHsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl81MTIoKF9fbW1hc2s2NClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y2NHFpKV9tbTUxMl9hZGRfZXBpOChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y2NHFpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfc3ViX2VwaTggKF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikgewogIHJldHVybiAoX19tNTEyaSkgKChfX3Y2NHF1KSBfX0EgLSAoX192NjRxdSkgX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfc3ViX2VwaTgoX19tNTEyaSBfX1csIF9fbW1hc2s2NCBfX1UsIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikgewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzUxMigoX19tbWFzazY0KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjY0cWkpX21tNTEyX3N1Yl9lcGk4KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjY0cWkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X3N1Yl9lcGk4KF9fbW1hc2s2NCBfX1UsIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikgewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzUxMigoX19tbWFzazY0KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjY0cWkpX21tNTEyX3N1Yl9lcGk4KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjY0cWkpX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9hZGRfZXBpMTYgKF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikgewogIHJldHVybiAoX19tNTEyaSkgKChfX3YzMmh1KSBfX0EgKyAoX192MzJodSkgX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfYWRkX2VwaTE2KF9fbTUxMmkgX19XLCBfX21tYXNrMzIgX19VLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpIHsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0d181MTIoKF9fbW1hc2szMilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9tbTUxMl9hZGRfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfYWRkX2VwaTE2KF9fbW1hc2szMiBfX1UsIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikgewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzUxMigoX19tbWFzazMyKV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX21tNTEyX2FkZF9lcGkxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfc3ViX2VwaTE2IChfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpIHsKICByZXR1cm4gKF9fbTUxMmkpICgoX192MzJodSkgX19BIC0gKF9fdjMyaHUpIF9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX3N1Yl9lcGkxNihfX201MTJpIF9fVywgX19tbWFzazMyIF9fVSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKSB7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfNTEyKChfX21tYXNrMzIpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfbW01MTJfc3ViX2VwaTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X3N1Yl9lcGkxNihfX21tYXNrMzIgX19VLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpIHsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0d181MTIoKF9fbW1hc2szMilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9tbTUxMl9zdWJfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX211bGxvX2VwaTE2IChfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpIHsKICByZXR1cm4gKF9fbTUxMmkpICgoX192MzJodSkgX19BICogKF9fdjMyaHUpIF9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX211bGxvX2VwaTE2KF9fbTUxMmkgX19XLCBfX21tYXNrMzIgX19VLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpIHsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0d181MTIoKF9fbW1hc2szMilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9tbTUxMl9tdWxsb19lcGkxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9tdWxsb19lcGkxNihfX21tYXNrMzIgX19VLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpIHsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0d181MTIoKF9fbW1hc2szMilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9tbTUxMl9tdWxsb19lcGkxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19ibGVuZF9lcGk4IChfX21tYXNrNjQgX19VLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX1cpCnsKICByZXR1cm4gKF9fbTUxMmkpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfNTEyICgoX19tbWFzazY0KSBfX1UsCiAgICAgICAgICAgICAgKF9fdjY0cWkpIF9fVywKICAgICAgICAgICAgICAoX192NjRxaSkgX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfYmxlbmRfZXBpMTYgKF9fbW1hc2szMiBfX1UsIF9fbTUxMmkgX19BLCBfX201MTJpIF9fVykKewogIHJldHVybiAoX19tNTEyaSkgX19idWlsdGluX2lhMzJfc2VsZWN0d181MTIgKChfX21tYXNrMzIpIF9fVSwKICAgICAgICAgICAgICAoX192MzJoaSkgX19XLAogICAgICAgICAgICAgIChfX3YzMmhpKSBfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfYWJzX2VwaTggKF9fbTUxMmkgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3BhYnNiNTEyKChfX3Y2NHFpKV9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2Fic19lcGk4IChfX201MTJpIF9fVywgX19tbWFzazY0IF9fVSwgX19tNTEyaSBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl81MTIoKF9fbW1hc2s2NClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y2NHFpKV9tbTUxMl9hYnNfZXBpOChfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NjRxaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfYWJzX2VwaTggKF9fbW1hc2s2NCBfX1UsIF9fbTUxMmkgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfNTEyKChfX21tYXNrNjQpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NjRxaSlfbW01MTJfYWJzX2VwaTgoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjY0cWkpX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9hYnNfZXBpMTYgKF9fbTUxMmkgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3BhYnN3NTEyKChfX3YzMmhpKV9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2Fic19lcGkxNiAoX19tNTEyaSBfX1csIF9fbW1hc2szMiBfX1UsIF9fbTUxMmkgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfNTEyKChfX21tYXNrMzIpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfbW01MTJfYWJzX2VwaTE2KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9hYnNfZXBpMTYgKF9fbW1hc2szMiBfX1UsIF9fbTUxMmkgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfNTEyKChfX21tYXNrMzIpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfbW01MTJfYWJzX2VwaTE2KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfcGFja3NfZXBpMzIoX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3BhY2tzc2R3NTEyKChfX3YxNnNpKV9fQSwgKF9fdjE2c2kpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X3BhY2tzX2VwaTMyKF9fbW1hc2szMiBfX00sIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzUxMigoX19tbWFzazMyKV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX21tNTEyX3BhY2tzX2VwaTMyKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX3BhY2tzX2VwaTMyKF9fbTUxMmkgX19XLCBfX21tYXNrMzIgX19NLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0d181MTIoKF9fbW1hc2szMilfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9tbTUxMl9wYWNrc19lcGkzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9wYWNrc19lcGkxNihfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfcGFja3Nzd2I1MTIoKF9fdjMyaGkpX19BLCAoX192MzJoaSkgX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfcGFja3NfZXBpMTYoX19tNTEyaSBfX1csIF9fbW1hc2s2NCBfX00sIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzUxMigoX19tbWFzazY0KV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y2NHFpKV9tbTUxMl9wYWNrc19lcGkxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NjRxaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfcGFja3NfZXBpMTYoX19tbWFzazY0IF9fTSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfNTEyKChfX21tYXNrNjQpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjY0cWkpX21tNTEyX3BhY2tzX2VwaTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y2NHFpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfcGFja3VzX2VwaTMyKF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9wYWNrdXNkdzUxMigoX192MTZzaSkgX19BLCAoX192MTZzaSkgX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X3BhY2t1c19lcGkzMihfX21tYXNrMzIgX19NLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0d181MTIoKF9fbW1hc2szMilfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9tbTUxMl9wYWNrdXNfZXBpMzIoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfcGFja3VzX2VwaTMyKF9fbTUxMmkgX19XLCBfX21tYXNrMzIgX19NLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0d181MTIoKF9fbW1hc2szMilfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9tbTUxMl9wYWNrdXNfZXBpMzIoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfcGFja3VzX2VwaTE2KF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9wYWNrdXN3YjUxMigoX192MzJoaSkgX19BLCAoX192MzJoaSkgX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfcGFja3VzX2VwaTE2KF9fbTUxMmkgX19XLCBfX21tYXNrNjQgX19NLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl81MTIoKF9fbW1hc2s2NClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NjRxaSlfbW01MTJfcGFja3VzX2VwaTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y2NHFpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9wYWNrdXNfZXBpMTYoX19tbWFzazY0IF9fTSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfNTEyKChfX21tYXNrNjQpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjY0cWkpX21tNTEyX3BhY2t1c19lcGkxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NjRxaSlfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2FkZHNfZXBpOCAoX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3BhZGRzYjUxMigoX192NjRxaSlfX0EsIChfX3Y2NHFpKV9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2FkZHNfZXBpOCAoX19tNTEyaSBfX1csIF9fbW1hc2s2NCBfX1UsIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzUxMigoX19tbWFzazY0KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y2NHFpKV9tbTUxMl9hZGRzX2VwaTgoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjY0cWkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2FkZHNfZXBpOCAoX19tbWFzazY0IF9fVSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfNTEyKChfX21tYXNrNjQpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjY0cWkpX21tNTEyX2FkZHNfZXBpOChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NjRxaSlfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2FkZHNfZXBpMTYgKF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9wYWRkc3c1MTIoKF9fdjMyaGkpX19BLCAoX192MzJoaSlfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19hZGRzX2VwaTE2IChfX201MTJpIF9fVywgX19tbWFzazMyIF9fVSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfNTEyKChfX21tYXNrMzIpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX21tNTEyX2FkZHNfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2FkZHNfZXBpMTYgKF9fbW1hc2szMiBfX1UsIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzUxMigoX19tbWFzazMyKV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9tbTUxMl9hZGRzX2VwaTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfYWRkc19lcHU4IChfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfcGFkZHVzYjUxMigoX192NjRxaSkgX19BLCAoX192NjRxaSkgX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfYWRkc19lcHU4IChfX201MTJpIF9fVywgX19tbWFzazY0IF9fVSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfNTEyKChfX21tYXNrNjQpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjY0cWkpX21tNTEyX2FkZHNfZXB1OChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NjRxaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfYWRkc19lcHU4IChfX21tYXNrNjQgX19VLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl81MTIoKF9fbW1hc2s2NClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NjRxaSlfbW01MTJfYWRkc19lcHU4KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y2NHFpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfYWRkc19lcHUxNiAoX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3BhZGR1c3c1MTIoKF9fdjMyaGkpIF9fQSwgKF9fdjMyaGkpIF9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2FkZHNfZXB1MTYgKF9fbTUxMmkgX19XLCBfX21tYXNrMzIgX19VLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0d181MTIoKF9fbW1hc2szMilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfbW01MTJfYWRkc19lcHUxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfYWRkc19lcHUxNiAoX19tbWFzazMyIF9fVSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfNTEyKChfX21tYXNrMzIpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX21tNTEyX2FkZHNfZXB1MTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9hdmdfZXB1OCAoX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3BhdmdiNTEyKChfX3Y2NHFpKV9fQSwgKF9fdjY0cWkpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfYXZnX2VwdTggKF9fbTUxMmkgX19XLCBfX21tYXNrNjQgX19VLCBfX201MTJpIF9fQSwKICAgICAgICAgIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfNTEyKChfX21tYXNrNjQpX19VLAogICAgICAgICAgICAgIChfX3Y2NHFpKV9tbTUxMl9hdmdfZXB1OChfX0EsIF9fQiksCiAgICAgICAgICAgICAgKF9fdjY0cWkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2F2Z19lcHU4IChfX21tYXNrNjQgX19VLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl81MTIoKF9fbW1hc2s2NClfX1UsCiAgICAgICAgICAgICAgKF9fdjY0cWkpX21tNTEyX2F2Z19lcHU4KF9fQSwgX19CKSwKICAgICAgICAgICAgICAoX192NjRxaSlfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2F2Z19lcHUxNiAoX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3Bhdmd3NTEyKChfX3YzMmhpKV9fQSwgKF9fdjMyaGkpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfYXZnX2VwdTE2IChfX201MTJpIF9fVywgX19tbWFzazMyIF9fVSwgX19tNTEyaSBfX0EsCiAgICAgICAgICAgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0d181MTIoKF9fbW1hc2szMilfX1UsCiAgICAgICAgICAgICAgKF9fdjMyaGkpX21tNTEyX2F2Z19lcHUxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgKF9fdjMyaGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2F2Z19lcHUxNiAoX19tbWFzazMyIF9fVSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfNTEyKChfX21tYXNrMzIpX19VLAogICAgICAgICAgICAgIChfX3YzMmhpKV9tbTUxMl9hdmdfZXB1MTYoX19BLCBfX0IpLAogICAgICAgICAgICAgIChfX3YzMmhpKSBfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21heF9lcGk4IChfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfcG1heHNiNTEyKChfX3Y2NHFpKSBfX0EsIChfX3Y2NHFpKSBfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfbWF4X2VwaTggKF9fbW1hc2s2NCBfX00sIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzUxMigoX19tbWFzazY0KV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjY0cWkpX21tNTEyX21heF9lcGk4KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjY0cWkpX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX21heF9lcGk4IChfX201MTJpIF9fVywgX19tbWFzazY0IF9fTSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfNTEyKChfX21tYXNrNjQpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NjRxaSlfbW01MTJfbWF4X2VwaTgoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NjRxaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWF4X2VwaTE2IChfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfcG1heHN3NTEyKChfX3YzMmhpKSBfX0EsIChfX3YzMmhpKSBfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfbWF4X2VwaTE2IChfX21tYXNrMzIgX19NLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0d181MTIoKF9fbW1hc2szMilfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX21tNTEyX21heF9lcGkxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX21heF9lcGkxNiAoX19tNTEyaSBfX1csIF9fbW1hc2szMiBfX00sIF9fbTUxMmkgX19BLAogICAgICAgICAgIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfNTEyKChfX21tYXNrMzIpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9tbTUxMl9tYXhfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXhfZXB1OCAoX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3BtYXh1YjUxMigoX192NjRxaSlfX0EsIChfX3Y2NHFpKV9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9tYXhfZXB1OCAoX19tbWFzazY0IF9fTSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfNTEyKChfX21tYXNrNjQpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NjRxaSlfbW01MTJfbWF4X2VwdTgoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NjRxaSlfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfbWF4X2VwdTggKF9fbTUxMmkgX19XLCBfX21tYXNrNjQgX19NLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl81MTIoKF9fbW1hc2s2NClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y2NHFpKV9tbTUxMl9tYXhfZXB1OChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y2NHFpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXhfZXB1MTYgKF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9wbWF4dXc1MTIoKF9fdjMyaGkpX19BLCAoX192MzJoaSlfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfbWF4X2VwdTE2IChfX21tYXNrMzIgX19NLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0d181MTIoKF9fbW1hc2szMilfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX21tNTEyX21heF9lcHUxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX21heF9lcHUxNiAoX19tNTEyaSBfX1csIF9fbW1hc2szMiBfX00sIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzUxMigoX19tbWFzazMyKV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfbW01MTJfbWF4X2VwdTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWluX2VwaTggKF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9wbWluc2I1MTIoKF9fdjY0cWkpIF9fQSwgKF9fdjY0cWkpIF9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9taW5fZXBpOCAoX19tbWFzazY0IF9fTSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfNTEyKChfX21tYXNrNjQpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NjRxaSlfbW01MTJfbWluX2VwaTgoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NjRxaSlfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfbWluX2VwaTggKF9fbTUxMmkgX19XLCBfX21tYXNrNjQgX19NLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl81MTIoKF9fbW1hc2s2NClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y2NHFpKV9tbTUxMl9taW5fZXBpOChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y2NHFpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9taW5fZXBpMTYgKF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9wbWluc3c1MTIoKF9fdjMyaGkpIF9fQSwgKF9fdjMyaGkpIF9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9taW5fZXBpMTYgKF9fbW1hc2szMiBfX00sIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzUxMigoX19tbWFzazMyKV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfbW01MTJfbWluX2VwaTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfbWluX2VwaTE2IChfX201MTJpIF9fVywgX19tbWFzazMyIF9fTSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfNTEyKChfX21tYXNrMzIpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9tbTUxMl9taW5fZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9taW5fZXB1OCAoX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3BtaW51YjUxMigoX192NjRxaSlfX0EsIChfX3Y2NHFpKV9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9taW5fZXB1OCAoX19tbWFzazY0IF9fTSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfNTEyKChfX21tYXNrNjQpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NjRxaSlfbW01MTJfbWluX2VwdTgoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NjRxaSlfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfbWluX2VwdTggKF9fbTUxMmkgX19XLCBfX21tYXNrNjQgX19NLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl81MTIoKF9fbW1hc2s2NClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y2NHFpKV9tbTUxMl9taW5fZXB1OChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y2NHFpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9taW5fZXB1MTYgKF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9wbWludXc1MTIoKF9fdjMyaGkpX19BLCAoX192MzJoaSlfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfbWluX2VwdTE2IChfX21tYXNrMzIgX19NLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0d181MTIoKF9fbW1hc2szMilfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX21tNTEyX21pbl9lcHUxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX21pbl9lcHUxNiAoX19tNTEyaSBfX1csIF9fbW1hc2szMiBfX00sIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzUxMigoX19tbWFzazMyKV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfbW01MTJfbWluX2VwdTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfc2h1ZmZsZV9lcGk4KF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9wc2h1ZmI1MTIoKF9fdjY0cWkpX19BLChfX3Y2NHFpKV9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX3NodWZmbGVfZXBpOChfX201MTJpIF9fVywgX19tbWFzazY0IF9fVSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfNTEyKChfX21tYXNrNjQpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y2NHFpKV9tbTUxMl9zaHVmZmxlX2VwaTgoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y2NHFpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9zaHVmZmxlX2VwaTgoX19tbWFzazY0IF9fVSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfNTEyKChfX21tYXNrNjQpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y2NHFpKV9tbTUxMl9zaHVmZmxlX2VwaTgoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y2NHFpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfc3Vic19lcGk4IChfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfcHN1YnNiNTEyKChfX3Y2NHFpKV9fQSwgKF9fdjY0cWkpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfc3Vic19lcGk4IChfX201MTJpIF9fVywgX19tbWFzazY0IF9fVSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfNTEyKChfX21tYXNrNjQpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjY0cWkpX21tNTEyX3N1YnNfZXBpOChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NjRxaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfc3Vic19lcGk4IChfX21tYXNrNjQgX19VLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl81MTIoKF9fbW1hc2s2NClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NjRxaSlfbW01MTJfc3Vic19lcGk4KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y2NHFpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfc3Vic19lcGkxNiAoX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3BzdWJzdzUxMigoX192MzJoaSlfX0EsIChfX3YzMmhpKV9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX3N1YnNfZXBpMTYgKF9fbTUxMmkgX19XLCBfX21tYXNrMzIgX19VLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0d181MTIoKF9fbW1hc2szMilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfbW01MTJfc3Vic19lcGkxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfc3Vic19lcGkxNiAoX19tbWFzazMyIF9fVSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfNTEyKChfX21tYXNrMzIpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX21tNTEyX3N1YnNfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9zdWJzX2VwdTggKF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9wc3VidXNiNTEyKChfX3Y2NHFpKSBfX0EsIChfX3Y2NHFpKSBfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19zdWJzX2VwdTggKF9fbTUxMmkgX19XLCBfX21tYXNrNjQgX19VLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl81MTIoKF9fbW1hc2s2NClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NjRxaSlfbW01MTJfc3Vic19lcHU4KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y2NHFpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9zdWJzX2VwdTggKF9fbW1hc2s2NCBfX1UsIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzUxMigoX19tbWFzazY0KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y2NHFpKV9tbTUxMl9zdWJzX2VwdTgoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjY0cWkpX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9zdWJzX2VwdTE2IChfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfcHN1YnVzdzUxMigoX192MzJoaSkgX19BLCAoX192MzJoaSkgX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfc3Vic19lcHUxNiAoX19tNTEyaSBfX1csIF9fbW1hc2szMiBfX1UsIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzUxMigoX19tbWFzazMyKV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9tbTUxMl9zdWJzX2VwdTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9zdWJzX2VwdTE2IChfX21tYXNrMzIgX19VLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0d181MTIoKF9fbW1hc2szMilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfbW01MTJfc3Vic19lcHUxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3Blcm11dGV4MnZhcl9lcGkxNihfX201MTJpIF9fQSwgX19tNTEyaSBfX0ksIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3ZwZXJtaTJ2YXJoaTUxMigoX192MzJoaSlfX0EsIChfX3YzMmhpKV9fSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX3Blcm11dGV4MnZhcl9lcGkxNihfX201MTJpIF9fQSwgX19tbWFzazMyIF9fVSwgX19tNTEyaSBfX0ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzUxMihfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9tbTUxMl9wZXJtdXRleDJ2YXJfZXBpMTYoX19BLCBfX0ksIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrMl9wZXJtdXRleDJ2YXJfZXBpMTYoX19tNTEyaSBfX0EsIF9fbTUxMmkgX19JLCBfX21tYXNrMzIgX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfNTEyKF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX21tNTEyX3Blcm11dGV4MnZhcl9lcGkxNihfX0EsIF9fSSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX19JKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X3Blcm11dGV4MnZhcl9lcGkxNihfX21tYXNrMzIgX19VLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0d181MTIoX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfbW01MTJfcGVybXV0ZXgydmFyX2VwaTE2KF9fQSwgX19JLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX211bGhyc19lcGkxNihfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfcG11bGhyc3c1MTIoKF9fdjMyaGkpX19BLCAoX192MzJoaSlfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19tdWxocnNfZXBpMTYoX19tNTEyaSBfX1csIF9fbW1hc2szMiBfX1UsIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzUxMigoX19tbWFzazMyKV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfbW01MTJfbXVsaHJzX2VwaTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfbXVsaHJzX2VwaTE2KF9fbW1hc2szMiBfX1UsIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzUxMigoX19tbWFzazMyKV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfbW01MTJfbXVsaHJzX2VwaTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX211bGhpX2VwaTE2KF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9wbXVsaHc1MTIoKF9fdjMyaGkpIF9fQSwgKF9fdjMyaGkpIF9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX211bGhpX2VwaTE2KF9fbTUxMmkgX19XLCBfX21tYXNrMzIgX19VLCBfX201MTJpIF9fQSwKICAgICAgIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfNTEyKChfX21tYXNrMzIpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfbW01MTJfbXVsaGlfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfbXVsaGlfZXBpMTYoX19tbWFzazMyIF9fVSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfNTEyKChfX21tYXNrMzIpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfbW01MTJfbXVsaGlfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX211bGhpX2VwdTE2KF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9wbXVsaHV3NTEyKChfX3YzMmhpKSBfX0EsIChfX3YzMmhpKSBfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19tdWxoaV9lcHUxNihfX201MTJpIF9fVywgX19tbWFzazMyIF9fVSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfNTEyKChfX21tYXNrMzIpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfbW01MTJfbXVsaGlfZXB1MTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfbXVsaGlfZXB1MTYgKF9fbW1hc2szMiBfX1UsIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzUxMigoX19tbWFzazMyKV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX21tNTEyX211bGhpX2VwdTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYWRkdWJzX2VwaTE2KF9fbTUxMmkgX19YLCBfX201MTJpIF9fWSkgewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9wbWFkZHVic3c1MTIoKF9fdjY0cWkpX19YLCAoX192NjRxaSlfX1kpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19tYWRkdWJzX2VwaTE2KF9fbTUxMmkgX19XLCBfX21tYXNrMzIgX19VLCBfX201MTJpIF9fWCwKICAgICAgICAgICAgICAgICAgICAgICAgICBfX201MTJpIF9fWSkgewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzUxMigoX19tbWFzazMyKSBfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfbW01MTJfbWFkZHVic19lcGkxNihfX1gsIF9fWSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfbWFkZHVic19lcGkxNihfX21tYXNrMzIgX19VLCBfX201MTJpIF9fWCwgX19tNTEyaSBfX1kpIHsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0d181MTIoKF9fbW1hc2szMikgX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX21tNTEyX21hZGR1YnNfZXBpMTYoX19YLCBfX1kpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYWRkX2VwaTE2KF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikgewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9wbWFkZHdkNTEyKChfX3YzMmhpKV9fQSwgKF9fdjMyaGkpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfbWFkZF9lcGkxNihfX201MTJpIF9fVywgX19tbWFzazE2IF9fVSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKSB7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfNTEyKChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX21tNTEyX21hZGRfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X21hZGRfZXBpMTYoX19tbWFzazE2IF9fVSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKSB7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfNTEyKChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX21tNTEyX21hZGRfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9jdnRzZXBpMTZfZXBpOCAoX19tNTEyaSBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX3Btb3Zzd2I1MTJfbWFzayAoKF9fdjMyaGkpIF9fQSwKICAgICAgICAgICAgICAgKF9fdjMycWkpX21tMjU2X3NldHplcm9fc2kyNTYoKSwKICAgICAgICAgICAgICAgKF9fbW1hc2szMikgLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19jdnRzZXBpMTZfZXBpOCAoX19tMjU2aSBfX08sIF9fbW1hc2szMiBfX00sIF9fbTUxMmkgX19BKSB7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl9wbW92c3diNTEyX21hc2sgKChfX3YzMmhpKSBfX0EsCiAgICAgICAgICAgICAgIChfX3YzMnFpKV9fTywKICAgICAgICAgICAgICAgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2N2dHNlcGkxNl9lcGk4IChfX21tYXNrMzIgX19NLCBfX201MTJpIF9fQSkgewogIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfcG1vdnN3YjUxMl9tYXNrICgoX192MzJoaSkgX19BLAogICAgICAgICAgICAgICAoX192MzJxaSkgX21tMjU2X3NldHplcm9fc2kyNTYoKSwKICAgICAgICAgICAgICAgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2N2dHVzZXBpMTZfZXBpOCAoX19tNTEyaSBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX3Btb3Z1c3diNTEyX21hc2sgKChfX3YzMmhpKSBfX0EsCiAgICAgICAgICAgICAgICAoX192MzJxaSkgX21tMjU2X3NldHplcm9fc2kyNTYoKSwKICAgICAgICAgICAgICAgIChfX21tYXNrMzIpIC0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfY3Z0dXNlcGkxNl9lcGk4IChfX20yNTZpIF9fTywgX19tbWFzazMyIF9fTSwgX19tNTEyaSBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX3Btb3Z1c3diNTEyX21hc2sgKChfX3YzMmhpKSBfX0EsCiAgICAgICAgICAgICAgICAoX192MzJxaSkgX19PLAogICAgICAgICAgICAgICAgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2N2dHVzZXBpMTZfZXBpOCAoX19tbWFzazMyIF9fTSwgX19tNTEyaSBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX3Btb3Z1c3diNTEyX21hc2sgKChfX3YzMmhpKSBfX0EsCiAgICAgICAgICAgICAgICAoX192MzJxaSkgX21tMjU2X3NldHplcm9fc2kyNTYoKSwKICAgICAgICAgICAgICAgIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9jdnRlcGkxNl9lcGk4IChfX201MTJpIF9fQSkgewogIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfcG1vdndiNTEyX21hc2sgKChfX3YzMmhpKSBfX0EsCiAgICAgICAgICAgICAgKF9fdjMycWkpIF9tbTI1Nl91bmRlZmluZWRfc2kyNTYoKSwKICAgICAgICAgICAgICAoX19tbWFzazMyKSAtMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2N2dGVwaTE2X2VwaTggKF9fbTI1NmkgX19PLCBfX21tYXNrMzIgX19NLCBfX201MTJpIF9fQSkgewogIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfcG1vdndiNTEyX21hc2sgKChfX3YzMmhpKSBfX0EsCiAgICAgICAgICAgICAgKF9fdjMycWkpIF9fTywKICAgICAgICAgICAgICBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfY3Z0ZXBpMTZfZXBpOCAoX19tbWFzazMyIF9fTSwgX19tNTEyaSBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX3Btb3Z3YjUxMl9tYXNrICgoX192MzJoaSkgX19BLAogICAgICAgICAgICAgIChfX3YzMnFpKSBfbW0yNTZfc2V0emVyb19zaTI1NigpLAogICAgICAgICAgICAgIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2N2dGVwaTE2X3N0b3JldV9lcGk4ICh2b2lkICogX19QLCBfX21tYXNrMzIgX19NLCBfX201MTJpIF9fQSkKewogIF9fYnVpbHRpbl9pYTMyX3Btb3Z3YjUxMm1lbV9tYXNrICgoX192MzJxaSAqKSBfX1AsIChfX3YzMmhpKSBfX0EsIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2N2dHNlcGkxNl9zdG9yZXVfZXBpOCAodm9pZCAqIF9fUCwgX19tbWFzazMyIF9fTSwgX19tNTEyaSBfX0EpCnsKICBfX2J1aWx0aW5faWEzMl9wbW92c3diNTEybWVtX21hc2sgKChfX3YzMnFpICopIF9fUCwgKF9fdjMyaGkpIF9fQSwgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfY3Z0dXNlcGkxNl9zdG9yZXVfZXBpOCAodm9pZCAqIF9fUCwgX19tbWFzazMyIF9fTSwgX19tNTEyaSBfX0EpCnsKICBfX2J1aWx0aW5faWEzMl9wbW92dXN3YjUxMm1lbV9tYXNrICgoX192MzJxaSAqKSBfX1AsIChfX3YzMmhpKSBfX0EsIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl91bnBhY2toaV9lcGk4KF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikgewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192NjRxaSlfX0EsIChfX3Y2NHFpKV9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOCwgIDY0KzgsICAgOSwgNjQrOSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAsIDY0KzEwLCAxMSwgNjQrMTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLCA2NCsxMiwgMTMsIDY0KzEzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNCwgNjQrMTQsIDE1LCA2NCsxNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjQsIDY0KzI0LCAyNSwgNjQrMjUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI2LCA2NCsyNiwgMjcsIDY0KzI3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyOCwgNjQrMjgsIDI5LCA2NCsyOSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzAsIDY0KzMwLCAzMSwgNjQrMzEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQwLCA2NCs0MCwgNDEsIDY0KzQxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MiwgNjQrNDIsIDQzLCA2NCs0MywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDQsIDY0KzQ0LCA0NSwgNjQrNDUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ2LCA2NCs0NiwgNDcsIDY0KzQ3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1NiwgNjQrNTYsIDU3LCA2NCs1NywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTgsIDY0KzU4LCA1OSwgNjQrNTksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYwLCA2NCs2MCwgNjEsIDY0KzYxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2MiwgNjQrNjIsIDYzLCA2NCs2Myk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX3VucGFja2hpX2VwaTgoX19tNTEyaSBfX1csIF9fbW1hc2s2NCBfX1UsIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikgewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzUxMigoX19tbWFzazY0KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y2NHFpKV9tbTUxMl91bnBhY2toaV9lcGk4KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y2NHFpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel91bnBhY2toaV9lcGk4KF9fbW1hc2s2NCBfX1UsIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikgewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzUxMigoX19tbWFzazY0KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y2NHFpKV9tbTUxMl91bnBhY2toaV9lcGk4KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y2NHFpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfdW5wYWNraGlfZXBpMTYoX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKSB7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3YzMmhpKV9fQSwgKF9fdjMyaGkpX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LCAgMzIrNCwgICA1LCAzMis1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LCAgMzIrNiwgICA3LCAzMis3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMiwgMzIrMTIsIDEzLCAzMisxMywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQsIDMyKzE0LCAxNSwgMzIrMTUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwLCAzMisyMCwgMjEsIDMyKzIxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMiwgMzIrMjIsIDIzLCAzMisyMywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjgsIDMyKzI4LCAyOSwgMzIrMjksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMwLCAzMiszMCwgMzEsIDMyKzMxKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfdW5wYWNraGlfZXBpMTYoX19tNTEyaSBfX1csIF9fbW1hc2szMiBfX1UsIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikgewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzUxMigoX19tbWFzazMyKV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX21tNTEyX3VucGFja2hpX2VwaTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X3VucGFja2hpX2VwaTE2KF9fbW1hc2szMiBfX1UsIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikgewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzUxMigoX19tbWFzazMyKV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX21tNTEyX3VucGFja2hpX2VwaTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl91bnBhY2tsb19lcGk4KF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikgewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192NjRxaSlfX0EsIChfX3Y2NHFpKV9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgIDY0KzAsICAgMSwgNjQrMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiwgIDY0KzIsICAgMywgNjQrMywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNCwgIDY0KzQsICAgNSwgNjQrNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNiwgIDY0KzYsICAgNywgNjQrNywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYsIDY0KzE2LCAxNywgNjQrMTcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE4LCA2NCsxOCwgMTksIDY0KzE5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMCwgNjQrMjAsIDIxLCA2NCsyMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjIsIDY0KzIyLCAyMywgNjQrMjMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMyLCA2NCszMiwgMzMsIDY0KzMzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNCwgNjQrMzQsIDM1LCA2NCszNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzYsIDY0KzM2LCAzNywgNjQrMzcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM4LCA2NCszOCwgMzksIDY0KzM5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0OCwgNjQrNDgsIDQ5LCA2NCs0OSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTAsIDY0KzUwLCA1MSwgNjQrNTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUyLCA2NCs1MiwgNTMsIDY0KzUzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1NCwgNjQrNTQsIDU1LCA2NCs1NSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX3VucGFja2xvX2VwaTgoX19tNTEyaSBfX1csIF9fbW1hc2s2NCBfX1UsIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikgewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzUxMigoX19tbWFzazY0KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y2NHFpKV9tbTUxMl91bnBhY2tsb19lcGk4KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y2NHFpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel91bnBhY2tsb19lcGk4KF9fbW1hc2s2NCBfX1UsIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikgewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzUxMigoX19tbWFzazY0KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y2NHFpKV9tbTUxMl91bnBhY2tsb19lcGk4KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y2NHFpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfdW5wYWNrbG9fZXBpMTYoX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKSB7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3YzMmhpKV9fQSwgKF9fdjMyaGkpX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAgMzIrMCwgICAxLCAzMisxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLCAgMzIrMiwgICAzLCAzMiszLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LCAgMzIrOCwgICA5LCAzMis5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMCwgMzIrMTAsIDExLCAzMisxMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYsIDMyKzE2LCAxNywgMzIrMTcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE4LCAzMisxOCwgMTksIDMyKzE5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNCwgMzIrMjQsIDI1LCAzMisyNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjYsIDMyKzI2LCAyNywgMzIrMjcpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza191bnBhY2tsb19lcGkxNihfX201MTJpIF9fVywgX19tbWFzazMyIF9fVSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKSB7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfNTEyKChfX21tYXNrMzIpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfbW01MTJfdW5wYWNrbG9fZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfdW5wYWNrbG9fZXBpMTYoX19tbWFzazMyIF9fVSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKSB7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfNTEyKChfX21tYXNrMzIpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfbW01MTJfdW5wYWNrbG9fZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2N2dGVwaThfZXBpMTYoX19tMjU2aSBfX0EpCnsKICAvKiBUaGlzIGZ1bmN0aW9uIGFsd2F5cyBwZXJmb3JtcyBhIHNpZ25lZCBleHRlbnNpb24sIGJ1dCBfX3YzMnFpIGlzIGEgY2hhcgogICAgIHdoaWNoIG1heSBiZSBzaWduZWQgb3IgdW5zaWduZWQsIHNvIHVzZSBfX3YzMnFzLiAqLwogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5fY29udmVydHZlY3RvcigoX192MzJxcylfX0EsIF9fdjMyaGkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19jdnRlcGk4X2VwaTE2KF9fbTUxMmkgX19XLCBfX21tYXNrMzIgX19VLCBfX20yNTZpIF9fQSkKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzUxMigoX19tbWFzazMyKV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX21tNTEyX2N2dGVwaThfZXBpMTYoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2N2dGVwaThfZXBpMTYoX19tbWFzazMyIF9fVSwgX19tMjU2aSBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0d181MTIoKF9fbW1hc2szMilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9tbTUxMl9jdnRlcGk4X2VwaTE2KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfY3Z0ZXB1OF9lcGkxNihfX20yNTZpIF9fQSkKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5fY29udmVydHZlY3RvcigoX192MzJxdSlfX0EsIF9fdjMyaGkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19jdnRlcHU4X2VwaTE2KF9fbTUxMmkgX19XLCBfX21tYXNrMzIgX19VLCBfX20yNTZpIF9fQSkKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzUxMigoX19tbWFzazMyKV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX21tNTEyX2N2dGVwdThfZXBpMTYoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2N2dGVwdThfZXBpMTYoX19tbWFzazMyIF9fVSwgX19tMjU2aSBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0d181MTIoKF9fbW1hc2szMilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9tbTUxMl9jdnRlcHU4X2VwaTE2KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgoKI2RlZmluZSBfbW01MTJfc2h1ZmZsZWhpX2VwaTE2KEEsIGltbSkgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9wc2h1Zmh3NTEyKChfX3YzMmhpKShfX201MTJpKShBKSwgKGludCkoaW1tKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX3NodWZmbGVoaV9lcGkxNihXLCBVLCBBLCBpbW0pIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0d181MTIoKF9fbW1hc2szMikoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX21tNTEyX3NodWZmbGVoaV9lcGkxNigoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1tKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpKF9fbTUxMmkpKFcpKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X3NodWZmbGVoaV9lcGkxNihVLCBBLCBpbW0pIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0d181MTIoKF9fbW1hc2szMikoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX21tNTEyX3NodWZmbGVoaV9lcGkxNigoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1tKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX21tNTEyX3NldHplcm9fc2k1MTIoKSkpCgojZGVmaW5lIF9tbTUxMl9zaHVmZmxlbG9fZXBpMTYoQSwgaW1tKSBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3BzaHVmbHc1MTIoKF9fdjMyaGkpKF9fbTUxMmkpKEEpLCAoaW50KShpbW0pKSkKCgojZGVmaW5lIF9tbTUxMl9tYXNrX3NodWZmbGVsb19lcGkxNihXLCBVLCBBLCBpbW0pIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0d181MTIoKF9fbW1hc2szMikoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX21tNTEyX3NodWZmbGVsb19lcGkxNigoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1tKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpKF9fbTUxMmkpKFcpKSkKCgojZGVmaW5lIF9tbTUxMl9tYXNrel9zaHVmZmxlbG9fZXBpMTYoVSwgQSwgaW1tKSBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfNTEyKChfX21tYXNrMzIpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9tbTUxMl9zaHVmZmxlbG9fZXBpMTYoKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGltbSkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpKQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3NsbHZfZXBpMTYoX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3BzbGx2MzJoaSgoX192MzJoaSkgX19BLCAoX192MzJoaSkgX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfc2xsdl9lcGkxNiAoX19tNTEyaSBfX1csIF9fbW1hc2szMiBfX1UsIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzUxMigoX19tbWFzazMyKV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9tbTUxMl9zbGx2X2VwaTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9zbGx2X2VwaTE2KF9fbW1hc2szMiBfX1UsIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzUxMigoX19tbWFzazMyKV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9tbTUxMl9zbGx2X2VwaTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfc2xsX2VwaTE2KF9fbTUxMmkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9wc2xsdzUxMigoX192MzJoaSkgX19BLCAoX192OGhpKSBfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19zbGxfZXBpMTYoX19tNTEyaSBfX1csIF9fbW1hc2szMiBfX1UsIF9fbTUxMmkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzUxMigoX19tbWFzazMyKV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX21tNTEyX3NsbF9lcGkxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9zbGxfZXBpMTYoX19tbWFzazMyIF9fVSwgX19tNTEyaSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfNTEyKChfX21tYXNrMzIpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfbW01MTJfc2xsX2VwaTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9zbGxpX2VwaTE2KF9fbTUxMmkgX19BLCB1bnNpZ25lZCBpbnQgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3BzbGx3aTUxMigoX192MzJoaSlfX0EsIF9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX3NsbGlfZXBpMTYoX19tNTEyaSBfX1csIF9fbW1hc2szMiBfX1UsIF9fbTUxMmkgX19BLAogICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0d181MTIoKF9fbW1hc2szMilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX21tNTEyX3NsbGlfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9zbGxpX2VwaTE2KF9fbW1hc2szMiBfX1UsIF9fbTUxMmkgX19BLCB1bnNpZ25lZCBpbnQgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfNTEyKChfX21tYXNrMzIpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9tbTUxMl9zbGxpX2VwaTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKI2RlZmluZSBfbW01MTJfYnNsbGlfZXBpMTI4KGEsIGltbSkgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9wc2xsZHFpNTEyX2J5dGVzaGlmdCgoX192OGRpKShfX201MTJpKShhKSwgKGludCkoaW1tKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfc3Jsdl9lcGkxNihfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfcHNybHYzMmhpKChfX3YzMmhpKV9fQSwgKF9fdjMyaGkpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfc3Jsdl9lcGkxNihfX201MTJpIF9fVywgX19tbWFzazMyIF9fVSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfNTEyKChfX21tYXNrMzIpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX21tNTEyX3NybHZfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X3NybHZfZXBpMTYoX19tbWFzazMyIF9fVSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfNTEyKChfX21tYXNrMzIpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX21tNTEyX3NybHZfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9zcmF2X2VwaTE2KF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9wc3JhdjMyaGkoKF9fdjMyaGkpX19BLCAoX192MzJoaSlfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19zcmF2X2VwaTE2KF9fbTUxMmkgX19XLCBfX21tYXNrMzIgX19VLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0d181MTIoKF9fbW1hc2szMilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfbW01MTJfc3Jhdl9lcGkxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfc3Jhdl9lcGkxNihfX21tYXNrMzIgX19VLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0d181MTIoKF9fbW1hc2szMilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfbW01MTJfc3Jhdl9lcGkxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3NyYV9lcGkxNihfX201MTJpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfcHNyYXc1MTIoKF9fdjMyaGkpIF9fQSwgKF9fdjhoaSkgX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfc3JhX2VwaTE2KF9fbTUxMmkgX19XLCBfX21tYXNrMzIgX19VLCBfX201MTJpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0d181MTIoKF9fbW1hc2szMilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9tbTUxMl9zcmFfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfc3JhX2VwaTE2KF9fbW1hc2szMiBfX1UsIF9fbTUxMmkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzUxMigoX19tbWFzazMyKV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX21tNTEyX3NyYV9lcGkxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfc3JhaV9lcGkxNihfX201MTJpIF9fQSwgdW5zaWduZWQgaW50IF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9wc3Jhd2k1MTIoKF9fdjMyaGkpX19BLCBfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19zcmFpX2VwaTE2KF9fbTUxMmkgX19XLCBfX21tYXNrMzIgX19VLCBfX201MTJpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfNTEyKChfX21tYXNrMzIpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9tbTUxMl9zcmFpX2VwaTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfc3JhaV9lcGkxNihfX21tYXNrMzIgX19VLCBfX201MTJpIF9fQSwgdW5zaWduZWQgaW50IF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzUxMigoX19tbWFzazMyKV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfbW01MTJfc3JhaV9lcGkxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9zcmxfZXBpMTYoX19tNTEyaSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3Bzcmx3NTEyKChfX3YzMmhpKSBfX0EsIChfX3Y4aGkpIF9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX3NybF9lcGkxNihfX201MTJpIF9fVywgX19tbWFzazMyIF9fVSwgX19tNTEyaSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfNTEyKChfX21tYXNrMzIpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfbW01MTJfc3JsX2VwaTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X3NybF9lcGkxNihfX21tYXNrMzIgX19VLCBfX201MTJpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0d181MTIoKF9fbW1hc2szMilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9tbTUxMl9zcmxfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3NybGlfZXBpMTYoX19tNTEyaSBfX0EsIHVuc2lnbmVkIGludCBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfcHNybHdpNTEyKChfX3YzMmhpKV9fQSwgX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfc3JsaV9lcGkxNihfX201MTJpIF9fVywgX19tbWFzazMyIF9fVSwgX19tNTEyaSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzUxMigoX19tbWFzazMyKV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfbW01MTJfc3JsaV9lcGkxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X3NybGlfZXBpMTYoX19tbWFzazMyIF9fVSwgX19tNTEyaSBfX0EsIGludCBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0d181MTIoKF9fbW1hc2szMilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX21tNTEyX3NybGlfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgojZGVmaW5lIF9tbTUxMl9ic3JsaV9lcGkxMjgoYSwgaW1tKSBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3BzcmxkcWk1MTJfYnl0ZXNoaWZ0KChfX3Y4ZGkpKF9fbTUxMmkpKGEpLCAoaW50KShpbW0pKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX21vdl9lcGkxNiAoX19tNTEyaSBfX1csIF9fbW1hc2szMiBfX1UsIF9fbTUxMmkgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKSBfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzUxMiAoKF9fbW1hc2szMikgX19VLAogICAgICAgICAgICAgICAgKF9fdjMyaGkpIF9fQSwKICAgICAgICAgICAgICAgIChfX3YzMmhpKSBfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfbW92X2VwaTE2IChfX21tYXNrMzIgX19VLCBfX201MTJpIF9fQSkKewogIHJldHVybiAoX19tNTEyaSkgX19idWlsdGluX2lhMzJfc2VsZWN0d181MTIgKChfX21tYXNrMzIpIF9fVSwKICAgICAgICAgICAgICAgIChfX3YzMmhpKSBfX0EsCiAgICAgICAgICAgICAgICAoX192MzJoaSkgX21tNTEyX3NldHplcm9fc2k1MTIgKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19tb3ZfZXBpOCAoX19tNTEyaSBfX1csIF9fbW1hc2s2NCBfX1UsIF9fbTUxMmkgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKSBfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzUxMiAoKF9fbW1hc2s2NCkgX19VLAogICAgICAgICAgICAgICAgKF9fdjY0cWkpIF9fQSwKICAgICAgICAgICAgICAgIChfX3Y2NHFpKSBfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfbW92X2VwaTggKF9fbW1hc2s2NCBfX1UsIF9fbTUxMmkgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKSBfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzUxMiAoKF9fbW1hc2s2NCkgX19VLAogICAgICAgICAgICAgICAgKF9fdjY0cWkpIF9fQSwKICAgICAgICAgICAgICAgIChfX3Y2NHFpKSBfbW01MTJfc2V0emVyb19zaTUxMiAoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX3NldDFfZXBpOCAoX19tNTEyaSBfX08sIF9fbW1hc2s2NCBfX00sIGNoYXIgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKSBfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzUxMihfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NjRxaSlfbW01MTJfc2V0MV9lcGk4KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NjRxaSkgX19PKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X3NldDFfZXBpOCAoX19tbWFzazY0IF9fTSwgY2hhciBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmkpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfNTEyKF9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y2NHFpKSBfbW01MTJfc2V0MV9lcGk4KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NjRxaSkgX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbW1hc2s2NCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tNTEyX2t1bnBhY2tkIChfX21tYXNrNjQgX19BLCBfX21tYXNrNjQgX19CKQp7CiAgcmV0dXJuIChfX21tYXNrNjQpIF9fYnVpbHRpbl9pYTMyX2t1bnBja2RpICgoX19tbWFzazY0KSBfX0EsCiAgICAgICAgICAgICAgICAoX19tbWFzazY0KSBfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX21tYXNrMzIgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTUxMl9rdW5wYWNrdyAoX19tbWFzazMyIF9fQSwgX19tbWFzazMyIF9fQikKewogIHJldHVybiAoX19tbWFzazMyKSBfX2J1aWx0aW5faWEzMl9rdW5wY2tzaSAoKF9fbW1hc2szMikgX19BLAogICAgICAgICAgICAgICAgKF9fbW1hc2szMikgX19CKTsKfQoKc3RhdGljIF9faW5saW5lIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9sb2FkdV9lcGkxNiAodm9pZCBjb25zdCAqX19QKQp7CiAgc3RydWN0IF9fbG9hZHVfZXBpMTYgewogICAgX19tNTEyaV91IF9fdjsKICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsKICByZXR1cm4gKChjb25zdCBzdHJ1Y3QgX19sb2FkdV9lcGkxNiopX19QKS0+X192Owp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19sb2FkdV9lcGkxNiAoX19tNTEyaSBfX1csIF9fbW1hc2szMiBfX1UsIHZvaWQgY29uc3QgKl9fUCkKewogIHJldHVybiAoX19tNTEyaSkgX19idWlsdGluX2lhMzJfbG9hZGRxdWhpNTEyX21hc2sgKChjb25zdCBfX3YzMmhpICopIF9fUCwKICAgICAgICAgICAgICAgICAoX192MzJoaSkgX19XLAogICAgICAgICAgICAgICAgIChfX21tYXNrMzIpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9sb2FkdV9lcGkxNiAoX19tbWFzazMyIF9fVSwgdm9pZCBjb25zdCAqX19QKQp7CiAgcmV0dXJuIChfX201MTJpKSBfX2J1aWx0aW5faWEzMl9sb2FkZHF1aGk1MTJfbWFzayAoKGNvbnN0IF9fdjMyaGkgKikgX19QLAogICAgICAgICAgICAgICAgIChfX3YzMmhpKQogICAgICAgICAgICAgICAgIF9tbTUxMl9zZXR6ZXJvX3NpNTEyICgpLAogICAgICAgICAgICAgICAgIChfX21tYXNrMzIpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZSBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbG9hZHVfZXBpOCAodm9pZCBjb25zdCAqX19QKQp7CiAgc3RydWN0IF9fbG9hZHVfZXBpOCB7CiAgICBfX201MTJpX3UgX192OwogIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOwogIHJldHVybiAoKGNvbnN0IHN0cnVjdCBfX2xvYWR1X2VwaTgqKV9fUCktPl9fdjsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfbG9hZHVfZXBpOCAoX19tNTEyaSBfX1csIF9fbW1hc2s2NCBfX1UsIHZvaWQgY29uc3QgKl9fUCkKewogIHJldHVybiAoX19tNTEyaSkgX19idWlsdGluX2lhMzJfbG9hZGRxdXFpNTEyX21hc2sgKChjb25zdCBfX3Y2NHFpICopIF9fUCwKICAgICAgICAgICAgICAgICAoX192NjRxaSkgX19XLAogICAgICAgICAgICAgICAgIChfX21tYXNrNjQpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9sb2FkdV9lcGk4IChfX21tYXNrNjQgX19VLCB2b2lkIGNvbnN0ICpfX1ApCnsKICByZXR1cm4gKF9fbTUxMmkpIF9fYnVpbHRpbl9pYTMyX2xvYWRkcXVxaTUxMl9tYXNrICgoY29uc3QgX192NjRxaSAqKSBfX1AsCiAgICAgICAgICAgICAgICAgKF9fdjY0cWkpCiAgICAgICAgICAgICAgICAgX21tNTEyX3NldHplcm9fc2k1MTIgKCksCiAgICAgICAgICAgICAgICAgKF9fbW1hc2s2NCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9zdG9yZXVfZXBpMTYgKHZvaWQgKl9fUCwgX19tNTEyaSBfX0EpCnsKICBzdHJ1Y3QgX19zdG9yZXVfZXBpMTYgewogICAgX19tNTEyaV91IF9fdjsKICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsKICAoKHN0cnVjdCBfX3N0b3JldV9lcGkxNiopX19QKS0+X192ID0gX19BOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19zdG9yZXVfZXBpMTYgKHZvaWQgKl9fUCwgX19tbWFzazMyIF9fVSwgX19tNTEyaSBfX0EpCnsKICBfX2J1aWx0aW5faWEzMl9zdG9yZWRxdWhpNTEyX21hc2sgKChfX3YzMmhpICopIF9fUCwKICAgICAgICAgICAgIChfX3YzMmhpKSBfX0EsCiAgICAgICAgICAgICAoX19tbWFzazMyKSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmUgdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3N0b3JldV9lcGk4ICh2b2lkICpfX1AsIF9fbTUxMmkgX19BKQp7CiAgc3RydWN0IF9fc3RvcmV1X2VwaTggewogICAgX19tNTEyaV91IF9fdjsKICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsKICAoKHN0cnVjdCBfX3N0b3JldV9lcGk4KilfX1ApLT5fX3YgPSBfX0E7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX3N0b3JldV9lcGk4ICh2b2lkICpfX1AsIF9fbW1hc2s2NCBfX1UsIF9fbTUxMmkgX19BKQp7CiAgX19idWlsdGluX2lhMzJfc3RvcmVkcXVxaTUxMl9tYXNrICgoX192NjRxaSAqKSBfX1AsCiAgICAgICAgICAgICAoX192NjRxaSkgX19BLAogICAgICAgICAgICAgKF9fbW1hc2s2NCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tbWFzazY0IF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfdGVzdF9lcGk4X21hc2sgKF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiBfbW01MTJfY21wbmVxX2VwaThfbWFzayAoX21tNTEyX2FuZF9lcGkzMiAoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbW1hc2s2NCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfdGVzdF9lcGk4X21hc2sgKF9fbW1hc2s2NCBfX1UsIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiBfbW01MTJfbWFza19jbXBuZXFfZXBpOF9tYXNrIChfX1UsIF9tbTUxMl9hbmRfZXBpMzIgKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbW1hc2szMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3Rlc3RfZXBpMTZfbWFzayAoX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIF9tbTUxMl9jbXBuZXFfZXBpMTZfbWFzayAoX21tNTEyX2FuZF9lcGkzMiAoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX21tYXNrMzIgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX3Rlc3RfZXBpMTZfbWFzayAoX19tbWFzazMyIF9fVSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIF9tbTUxMl9tYXNrX2NtcG5lcV9lcGkxNl9tYXNrIChfX1UsIF9tbTUxMl9hbmRfZXBpMzIgKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX21tYXNrNjQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl90ZXN0bl9lcGk4X21hc2sgKF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiBfbW01MTJfY21wZXFfZXBpOF9tYXNrIChfbW01MTJfYW5kX2VwaTMyIChfX0EsIF9fQiksIF9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX21tYXNrNjQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX3Rlc3RuX2VwaThfbWFzayAoX19tbWFzazY0IF9fVSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIF9tbTUxMl9tYXNrX2NtcGVxX2VwaThfbWFzayAoX19VLCBfbW01MTJfYW5kX2VwaTMyIChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbW1hc2szMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3Rlc3RuX2VwaTE2X21hc2sgKF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiBfbW01MTJfY21wZXFfZXBpMTZfbWFzayAoX21tNTEyX2FuZF9lcGkzMiAoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbW1hc2szMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfdGVzdG5fZXBpMTZfbWFzayAoX19tbWFzazMyIF9fVSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIF9tbTUxMl9tYXNrX2NtcGVxX2VwaTE2X21hc2sgKF9fVSwgX21tNTEyX2FuZF9lcGkzMiAoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tbWFzazY0IF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbW92ZXBpOF9tYXNrIChfX201MTJpIF9fQSkKewogIHJldHVybiAoX19tbWFzazY0KSBfX2J1aWx0aW5faWEzMl9jdnRiMm1hc2s1MTIgKChfX3Y2NHFpKSBfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX21tYXNrMzIgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tb3ZlcGkxNl9tYXNrIChfX201MTJpIF9fQSkKewogIHJldHVybiAoX19tbWFzazMyKSBfX2J1aWx0aW5faWEzMl9jdnR3Mm1hc2s1MTIgKChfX3YzMmhpKSBfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbW92bV9lcGk4IChfX21tYXNrNjQgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKSBfX2J1aWx0aW5faWEzMl9jdnRtYXNrMmI1MTIgKF9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tb3ZtX2VwaTE2IChfX21tYXNrMzIgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKSBfX2J1aWx0aW5faWEzMl9jdnRtYXNrMnc1MTIgKF9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9icm9hZGNhc3RiX2VwaTggKF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3YxNnFpKSBfX0EsIChfX3YxNnFpKSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19icm9hZGNhc3RiX2VwaTggKF9fbTUxMmkgX19PLCBfX21tYXNrNjQgX19NLCBfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzUxMihfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y2NHFpKSBfbW01MTJfYnJvYWRjYXN0Yl9lcGk4KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y2NHFpKSBfX08pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfYnJvYWRjYXN0Yl9lcGk4IChfX21tYXNrNjQgX19NLCBfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzUxMihfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y2NHFpKSBfbW01MTJfYnJvYWRjYXN0Yl9lcGk4KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y2NHFpKSBfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfc2V0MV9lcGkxNiAoX19tNTEyaSBfX08sIF9fbW1hc2szMiBfX00sIHNob3J0IF9fQSkKewogIHJldHVybiAoX19tNTEyaSkgX19idWlsdGluX2lhMzJfc2VsZWN0d181MTIoX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpIF9tbTUxMl9zZXQxX2VwaTE2KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSkgX19PKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X3NldDFfZXBpMTYgKF9fbW1hc2szMiBfX00sIHNob3J0IF9fQSkKewogIHJldHVybiAoX19tNTEyaSkgX19idWlsdGluX2lhMzJfc2VsZWN0d181MTIoX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpIF9tbTUxMl9zZXQxX2VwaTE2KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSkgX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9icm9hZGNhc3R3X2VwaTE2IChfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192OGhpKSBfX0EsIChfX3Y4aGkpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2Jyb2FkY2FzdHdfZXBpMTYgKF9fbTUxMmkgX19PLCBfX21tYXNrMzIgX19NLCBfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzUxMihfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKSBfbW01MTJfYnJvYWRjYXN0d19lcGkxNihfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSkgX19PKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2Jyb2FkY2FzdHdfZXBpMTYgKF9fbW1hc2szMiBfX00sIF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfNTEyKF9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpIF9tbTUxMl9icm9hZGNhc3R3X2VwaTE2KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKSBfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3Blcm11dGV4dmFyX2VwaTE2IChfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfcGVybXZhcmhpNTEyKChfX3YzMmhpKV9fQiwgKF9fdjMyaGkpX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X3Blcm11dGV4dmFyX2VwaTE2IChfX21tYXNrMzIgX19NLCBfX201MTJpIF9fQSwKICAgICAgICBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzUxMigoX19tbWFzazMyKV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX21tNTEyX3Blcm11dGV4dmFyX2VwaTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX3Blcm11dGV4dmFyX2VwaTE2IChfX201MTJpIF9fVywgX19tbWFzazMyIF9fTSwgX19tNTEyaSBfX0EsCiAgICAgICAgICAgICBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzUxMigoX19tbWFzazMyKV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX21tNTEyX3Blcm11dGV4dmFyX2VwaTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX19XKTsKfQoKI2RlZmluZSBfbW01MTJfYWxpZ25yX2VwaTgoQSwgQiwgTikgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9wYWxpZ25yNTEyKChfX3Y2NHFpKShfX201MTJpKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y2NHFpKShfX201MTJpKShCKSwgKGludCkoTikpKQoKI2RlZmluZSBfbW01MTJfbWFza19hbGlnbnJfZXBpOChXLCBVLCBBLCBCLCBOKSBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfNTEyKChfX21tYXNrNjQpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y2NHFpKV9tbTUxMl9hbGlnbnJfZXBpOCgoQSksIChCKSwgKGludCkoTikpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y2NHFpKShfX201MTJpKShXKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9hbGlnbnJfZXBpOChVLCBBLCBCLCBOKSBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfNTEyKChfX21tYXNrNjQpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y2NHFpKV9tbTUxMl9hbGlnbnJfZXBpOCgoQSksIChCKSwgKGludCkoTikpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y2NHFpKShfX201MTJpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpKQoKI2RlZmluZSBfbW01MTJfZGJzYWRfZXB1OChBLCBCLCBpbW0pIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfZGJwc2FkYnc1MTIoKF9fdjY0cWkpKF9fbTUxMmkpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y2NHFpKShfX201MTJpKShCKSwgKGludCkoaW1tKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX2Ric2FkX2VwdTgoVywgVSwgQSwgQiwgaW1tKSBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfNTEyKChfX21tYXNrMzIpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfbW01MTJfZGJzYWRfZXB1OCgoQSksIChCKSwgKGltbSkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSkoX19tNTEyaSkoVykpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfZGJzYWRfZXB1OChVLCBBLCBCLCBpbW0pIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0d181MTIoKF9fbW1hc2szMikoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9tbTUxMl9kYnNhZF9lcHU4KChBKSwgKEIpLCAoaW1tKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpKQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3NhZF9lcHU4IChfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKIHJldHVybiAoX19tNTEyaSkgX19idWlsdGluX2lhMzJfcHNhZGJ3NTEyICgoX192NjRxaSkgX19BLAogICAgICAgICAgICAgICAoX192NjRxaSkgX19CKTsKfQoKI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUzUxMgojdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTCgojZW5kaWYKAC8qPT09LS0tLS0tLS0tLS0tLSBhdng1MTJ2bm5paW50cmluLmggLSBWTk5JIGludHJpbnNpY3MgLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqCiAqCiAqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCiAqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCiNpZm5kZWYgX19JTU1JTlRSSU5fSAojZXJyb3IgIk5ldmVyIHVzZSA8YXZ4NTEydm5uaWludHJpbi5oPiBkaXJlY3RseTsgaW5jbHVkZSA8aW1taW50cmluLmg+IGluc3RlYWQuIgojZW5kaWYKCiNpZm5kZWYgX19BVlg1MTJWTk5JSU5UUklOX0gKI2RlZmluZSBfX0FWWDUxMlZOTklJTlRSSU5fSAoKLyogRGVmaW5lIHRoZSBkZWZhdWx0IGF0dHJpYnV0ZXMgZm9yIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlLiAqLwojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUyBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oImF2eDUxMnZubmkiKSwgX19taW5fdmVjdG9yX3dpZHRoX18oNTEyKSkpCgoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tNTEyX2RwYnVzZF9lcGkzMihfX201MTJpIF9fUywgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3ZwZHBidXNkNTEyKChfX3YxNnNpKV9fUywgKF9fdjE2c2kpX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW01MTJfbWFza19kcGJ1c2RfZXBpMzIoX19tNTEyaSBfX1MsIF9fbW1hc2sxNiBfX1UsIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzUxMihfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9kcGJ1c2RfZXBpMzIoX19TLCBfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9fUyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTUxMl9tYXNrel9kcGJ1c2RfZXBpMzIoX19tbWFzazE2IF9fVSwgX19tNTEyaSBfX1MsIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzUxMihfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9kcGJ1c2RfZXBpMzIoX19TLCBfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW01MTJfZHBidXNkc19lcGkzMihfX201MTJpIF9fUywgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3ZwZHBidXNkczUxMigoX192MTZzaSlfX1MsIChfX3YxNnNpKV9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTUxMl9tYXNrX2RwYnVzZHNfZXBpMzIoX19tNTEyaSBfX1MsIF9fbW1hc2sxNiBfX1UsIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzUxMihfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX21tNTEyX2RwYnVzZHNfZXBpMzIoX19TLCBfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX19TKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tNTEyX21hc2t6X2RwYnVzZHNfZXBpMzIoX19tbWFzazE2IF9fVSwgX19tNTEyaSBfX1MsIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzUxMihfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX21tNTEyX2RwYnVzZHNfZXBpMzIoX19TLCBfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTUxMl9kcHdzc2RfZXBpMzIoX19tNTEyaSBfX1MsIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl92cGRwd3NzZDUxMigoX192MTZzaSlfX1MsIChfX3YxNnNpKV9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tNTEyX21hc2tfZHB3c3NkX2VwaTMyKF9fbTUxMmkgX19TLCBfX21tYXNrMTYgX19VLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF81MTIoX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfZHB3c3NkX2VwaTMyKF9fUywgX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfX1MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW01MTJfbWFza3pfZHB3c3NkX2VwaTMyKF9fbW1hc2sxNiBfX1UsIF9fbTUxMmkgX19TLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF81MTIoX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfZHB3c3NkX2VwaTMyKF9fUywgX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tNTEyX2Rwd3NzZHNfZXBpMzIoX19tNTEyaSBfX1MsIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl92cGRwd3NzZHM1MTIoKF9fdjE2c2kpX19TLCAoX192MTZzaSlfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW01MTJfbWFza19kcHdzc2RzX2VwaTMyKF9fbTUxMmkgX19TLCBfX21tYXNrMTYgX19VLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF81MTIoX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9kcHdzc2RzX2VwaTMyKF9fUywgX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9fUyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTUxMl9tYXNrel9kcHdzc2RzX2VwaTMyKF9fbW1hc2sxNiBfX1UsIF9fbTUxMmkgX19TLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF81MTIoX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9kcHdzc2RzX2VwaTMyKF9fUywgX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgojdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTCgojZW5kaWYKAC8qPT09LS0tLSBydG1pbnRyaW4uaCAtIFJUTSBpbnRyaW5zaWNzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKi8KCiNpZm5kZWYgX19JTU1JTlRSSU5fSAojZXJyb3IgIk5ldmVyIHVzZSA8cnRtaW50cmluLmg+IGRpcmVjdGx5OyBpbmNsdWRlIDxpbW1pbnRyaW4uaD4gaW5zdGVhZC4iCiNlbmRpZgoKI2lmbmRlZiBfX1JUTUlOVFJJTl9ICiNkZWZpbmUgX19SVE1JTlRSSU5fSAoKI2RlZmluZSBfWEJFR0lOX1NUQVJURUQgICAofjB1KQojZGVmaW5lIF9YQUJPUlRfRVhQTElDSVQgICgxIDw8IDApCiNkZWZpbmUgX1hBQk9SVF9SRVRSWSAgICAgKDEgPDwgMSkKI2RlZmluZSBfWEFCT1JUX0NPTkZMSUNUICAoMSA8PCAyKQojZGVmaW5lIF9YQUJPUlRfQ0FQQUNJVFkgICgxIDw8IDMpCiNkZWZpbmUgX1hBQk9SVF9ERUJVRyAgICAgKDEgPDwgNCkKI2RlZmluZSBfWEFCT1JUX05FU1RFRCAgICAoMSA8PCA1KQojZGVmaW5lIF9YQUJPUlRfQ09ERSh4KSAgICgoKHgpID4+IDI0KSAmIDB4RkYpCgovKiBEZWZpbmUgdGhlIGRlZmF1bHQgYXR0cmlidXRlcyBmb3IgdGhlIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUuICovCiNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygicnRtIikpKQoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgaW50IF9fREVGQVVMVF9GTl9BVFRSUwpfeGJlZ2luKHZvaWQpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfeGJlZ2luKCk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTCl94ZW5kKHZvaWQpCnsKICBfX2J1aWx0aW5faWEzMl94ZW5kKCk7Cn0KCiNkZWZpbmUgX3hhYm9ydChpbW0pIF9fYnVpbHRpbl9pYTMyX3hhYm9ydCgoaW1tKSkKCiN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlMKCiNlbmRpZiAvKiBfX1JUTUlOVFJJTl9IICovCgAvKj09PS0tLS0gc3RkaW50LmggLSBTdGFuZGFyZCBoZWFkZXIgZm9yIHNpemVkIGludGVnZXIgdHlwZXMgLS0tLS0tLS0tLS0tLS09PT0qXAogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgpcKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0qLwoKI2lmbmRlZiBfX0NMQU5HX1NURElOVF9ICi8vIEFJWCBzeXN0ZW0gaGVhZGVycyBuZWVkIHN0ZGludC5oIHRvIGJlIHJlLWVudGVyYWJsZSB3aGlsZSBfU1REX1RZUEVTX1QKLy8gaXMgZGVmaW5lZCB1bnRpbCBhbiBpbmNsdXNpb24gb2YgaXQgd2l0aG91dCBfU1REX1RZUEVTX1Qgb2NjdXJzLCBpbiB3aGljaAovLyBjYXNlIHRoZSBoZWFkZXIgZ3VhcmQgbWFjcm8gaXMgZGVmaW5lZC4KI2lmICFkZWZpbmVkKF9BSVgpIHx8ICFkZWZpbmVkKF9TVERfVFlQRVNfVCkgfHwgIWRlZmluZWQoX19TVERDX0hPU1RFRF9fKQojZGVmaW5lIF9fQ0xBTkdfU1RESU5UX0gKI2VuZGlmCgovKiBJZiB3ZSdyZSBob3N0ZWQsIGZhbGwgYmFjayB0byB0aGUgc3lzdGVtJ3Mgc3RkaW50LmgsIHdoaWNoIG1pZ2h0IGhhdmUKICogYWRkaXRpb25hbCBkZWZpbml0aW9ucy4KICovCiNpZiBfX1NURENfSE9TVEVEX18gJiYgX19oYXNfaW5jbHVkZV9uZXh0KDxzdGRpbnQuaD4pCgovLyBDOTkgNy4xOC4zIExpbWl0cyBvZiBvdGhlciBpbnRlZ2VyIHR5cGVzCi8vCi8vICBGb290bm90ZSAyMTksIDIyMDogQysrIGltcGxlbWVudGF0aW9ucyBzaG91bGQgZGVmaW5lIHRoZXNlIG1hY3JvcyBvbmx5IHdoZW4KLy8gIF9fU1REQ19MSU1JVF9NQUNST1MgaXMgZGVmaW5lZCBiZWZvcmUgPHN0ZGludC5oPiBpcyBpbmNsdWRlZC4KLy8KLy8gIEZvb3Rub3RlIDIyMjogQysrIGltcGxlbWVudGF0aW9ucyBzaG91bGQgZGVmaW5lIHRoZXNlIG1hY3JvcyBvbmx5IHdoZW4KLy8gIF9fU1REQ19DT05TVEFOVF9NQUNST1MgaXMgZGVmaW5lZCBiZWZvcmUgPHN0ZGludC5oPiBpcyBpbmNsdWRlZC4KLy8KLy8gQysrMTEgW2NzdGRpbnQuc3luXXAyOgovLwovLyAgVGhlIG1hY3JvcyBkZWZpbmVkIGJ5IDxjc3RkaW50PiBhcmUgcHJvdmlkZWQgdW5jb25kaXRpb25hbGx5LiBJbiBwYXJ0aWN1bGFyLAovLyAgdGhlIHN5bWJvbHMgX19TVERDX0xJTUlUX01BQ1JPUyBhbmQgX19TVERDX0NPTlNUQU5UX01BQ1JPUyAobWVudGlvbmVkIGluCi8vICBmb290bm90ZXMgMjE5LCAyMjAsIGFuZCAyMjIgaW4gdGhlIEMgc3RhbmRhcmQpIHBsYXkgbm8gcm9sZSBpbiBDKysuCi8vCi8vIEMxMSByZW1vdmVkIHRoZSBwcm9ibGVtYXRpYyBmb290bm90ZXMuCi8vCi8vIFdvcmsgYXJvdW5kIHRoaXMgaW5jb25zaXN0ZW5jeSBieSBhbHdheXMgZGVmaW5pbmcgdGhvc2UgbWFjcm9zIGluIEMrKyBtb2RlLAovLyBzbyB0aGF0IGEgQyBsaWJyYXJ5IGltcGxlbWVudGF0aW9uIHdoaWNoIGZvbGxvd3MgdGhlIEM5OSBzdGFuZGFyZCBjYW4gYmUKLy8gdXNlZCBpbiBDKysuCiMgaWZkZWYgX19jcGx1c3BsdXMKIyAgaWYgIWRlZmluZWQoX19TVERDX0xJTUlUX01BQ1JPUykKIyAgIGRlZmluZSBfX1NURENfTElNSVRfTUFDUk9TCiMgICBkZWZpbmUgX19TVERDX0xJTUlUX01BQ1JPU19ERUZJTkVEX0JZX0NMQU5HCiMgIGVuZGlmCiMgIGlmICFkZWZpbmVkKF9fU1REQ19DT05TVEFOVF9NQUNST1MpCiMgICBkZWZpbmUgX19TVERDX0NPTlNUQU5UX01BQ1JPUwojICAgZGVmaW5lIF9fU1REQ19DT05TVEFOVF9NQUNST1NfREVGSU5FRF9CWV9DTEFORwojICBlbmRpZgojIGVuZGlmCgojIGluY2x1ZGVfbmV4dCA8c3RkaW50Lmg+CgojIGlmZGVmIF9fU1REQ19MSU1JVF9NQUNST1NfREVGSU5FRF9CWV9DTEFORwojICB1bmRlZiBfX1NURENfTElNSVRfTUFDUk9TCiMgIHVuZGVmIF9fU1REQ19MSU1JVF9NQUNST1NfREVGSU5FRF9CWV9DTEFORwojIGVuZGlmCiMgaWZkZWYgX19TVERDX0NPTlNUQU5UX01BQ1JPU19ERUZJTkVEX0JZX0NMQU5HCiMgIHVuZGVmIF9fU1REQ19DT05TVEFOVF9NQUNST1MKIyAgdW5kZWYgX19TVERDX0NPTlNUQU5UX01BQ1JPU19ERUZJTkVEX0JZX0NMQU5HCiMgZW5kaWYKCiNlbHNlCgovKiBDOTkgNy4xOC4xLjEgRXhhY3Qtd2lkdGggaW50ZWdlciB0eXBlcy4KICogQzk5IDcuMTguMS4yIE1pbmltdW0td2lkdGggaW50ZWdlciB0eXBlcy4KICogQzk5IDcuMTguMS4zIEZhc3Rlc3QgbWluaW11bS13aWR0aCBpbnRlZ2VyIHR5cGVzLgogKgogKiBUaGUgc3RhbmRhcmQgcmVxdWlyZXMgdGhhdCBleGFjdC13aWR0aCB0eXBlIGJlIGRlZmluZWQgZm9yIDgtLCAxNi0sIDMyLSwgYW5kCiAqIDY0LWJpdCB0eXBlcyBpZiB0aGV5IGFyZSBpbXBsZW1lbnRlZC4gT3RoZXIgZXhhY3Qgd2lkdGggdHlwZXMgYXJlIG9wdGlvbmFsLgogKiBUaGlzIGltcGxlbWVudGF0aW9uIGRlZmluZXMgYW4gZXhhY3Qtd2lkdGggdHlwZXMgZm9yIGV2ZXJ5IGludGVnZXIgd2lkdGgKICogdGhhdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgc3RhbmRhcmQgaW50ZWdlciB0eXBlcy4KICoKICogVGhlIHN0YW5kYXJkIGFsc28gcmVxdWlyZXMgbWluaW11bS13aWR0aCB0eXBlcyBiZSBkZWZpbmVkIGZvciA4LSwgMTYtLCAzMi0sCiAqIGFuZCA2NC1iaXQgd2lkdGhzIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGVyZSBhcmUgY29ycmVzcG9uZGluZyBleGFjdC13aWR0aAogKiB0eXBlcy4KICoKICogVG8gYWNjb21tb2RhdGUgdGFyZ2V0cyB0aGF0IGFyZSBtaXNzaW5nIHR5cGVzIHRoYXQgYXJlIGV4YWN0bHkgOCwgMTYsIDMyLCBvcgogKiA2NCBiaXRzIHdpZGUsIHRoaXMgaW1wbGVtZW50YXRpb24gdGFrZXMgYW4gYXBwcm9hY2ggb2YgY2FzY2FkaW5nCiAqIHJlZGVmaW5pdGlvbnMsIHJlZGVmaW5pbmcgX19pbnRfbGVhc3ROX3QgdG8gc3VjY2Vzc2l2ZWx5IHNtYWxsZXIgZXhhY3Qtd2lkdGgKICogdHlwZXMuIEl0IGlzIHRoZXJlZm9yZSBpbXBvcnRhbnQgdGhhdCB0aGUgdHlwZXMgYXJlIGRlZmluZWQgaW4gb3JkZXIgb2YKICogZGVzY2VuZGluZyB3aWR0aHMuCiAqCiAqIFdlIGN1cnJlbnRseSBhc3N1bWUgdGhhdCB0aGUgbWluaW11bS13aWR0aCB0eXBlcyBhbmQgdGhlIGZhc3Rlc3QKICogbWluaW11bS13aWR0aCB0eXBlcyBhcmUgdGhlIHNhbWUuIFRoaXMgaXMgYWxsb3dlZCBieSB0aGUgc3RhbmRhcmQsIGJ1dCBpcwogKiBzdWJvcHRpbWFsLgogKgogKiBJbiB2aW9sYXRpb24gb2YgdGhlIHN0YW5kYXJkLCBzb21lIHRhcmdldHMgZG8gbm90IGltcGxlbWVudCBhIHR5cGUgdGhhdCBpcwogKiB3aWRlIGVub3VnaCB0byByZXByZXNlbnQgYWxsIG9mIHRoZSByZXF1aXJlZCB3aWR0aHMgKDgtLCAxNi0sIDMyLSwgNjQtYml0KS4KICogVG8gYWNjb21tb2RhdGUgdGhlc2UgdGFyZ2V0cywgYSByZXF1aXJlZCBtaW5pbXVtLXdpZHRoIHR5cGUgaXMgb25seQogKiBkZWZpbmVkIGlmIHRoZXJlIGV4aXN0cyBhbiBleGFjdC13aWR0aCB0eXBlIG9mIGVxdWFsIG9yIGdyZWF0ZXIgd2lkdGguCiAqLwoKI2lmZGVmIF9fSU5UNjRfVFlQRV9fCiMgaWZuZGVmIF9faW50OF90X2RlZmluZWQgLyogZ2xpYmMgc3lzL3R5cGVzLmggYWxzbyBkZWZpbmVzIGludDY0X3QqLwp0eXBlZGVmIF9fSU5UNjRfVFlQRV9fIGludDY0X3Q7CiMgZW5kaWYgLyogX19pbnQ4X3RfZGVmaW5lZCAqLwp0eXBlZGVmIF9fVUlOVDY0X1RZUEVfXyB1aW50NjRfdDsKIyBkZWZpbmUgX19pbnRfbGVhc3Q2NF90IGludDY0X3QKIyBkZWZpbmUgX191aW50X2xlYXN0NjRfdCB1aW50NjRfdAojIGRlZmluZSBfX2ludF9sZWFzdDMyX3QgaW50NjRfdAojIGRlZmluZSBfX3VpbnRfbGVhc3QzMl90IHVpbnQ2NF90CiMgZGVmaW5lIF9faW50X2xlYXN0MTZfdCBpbnQ2NF90CiMgZGVmaW5lIF9fdWludF9sZWFzdDE2X3QgdWludDY0X3QKIyBkZWZpbmUgX19pbnRfbGVhc3Q4X3QgaW50NjRfdAojIGRlZmluZSBfX3VpbnRfbGVhc3Q4X3QgdWludDY0X3QKI2VuZGlmIC8qIF9fSU5UNjRfVFlQRV9fICovCgojaWZkZWYgX19pbnRfbGVhc3Q2NF90CnR5cGVkZWYgX19pbnRfbGVhc3Q2NF90IGludF9sZWFzdDY0X3Q7CnR5cGVkZWYgX191aW50X2xlYXN0NjRfdCB1aW50X2xlYXN0NjRfdDsKdHlwZWRlZiBfX2ludF9sZWFzdDY0X3QgaW50X2Zhc3Q2NF90Owp0eXBlZGVmIF9fdWludF9sZWFzdDY0X3QgdWludF9mYXN0NjRfdDsKI2VuZGlmIC8qIF9faW50X2xlYXN0NjRfdCAqLwoKI2lmZGVmIF9fSU5UNTZfVFlQRV9fCnR5cGVkZWYgX19JTlQ1Nl9UWVBFX18gaW50NTZfdDsKdHlwZWRlZiBfX1VJTlQ1Nl9UWVBFX18gdWludDU2X3Q7CnR5cGVkZWYgaW50NTZfdCBpbnRfbGVhc3Q1Nl90Owp0eXBlZGVmIHVpbnQ1Nl90IHVpbnRfbGVhc3Q1Nl90Owp0eXBlZGVmIGludDU2X3QgaW50X2Zhc3Q1Nl90Owp0eXBlZGVmIHVpbnQ1Nl90IHVpbnRfZmFzdDU2X3Q7CiMgZGVmaW5lIF9faW50X2xlYXN0MzJfdCBpbnQ1Nl90CiMgZGVmaW5lIF9fdWludF9sZWFzdDMyX3QgdWludDU2X3QKIyBkZWZpbmUgX19pbnRfbGVhc3QxNl90IGludDU2X3QKIyBkZWZpbmUgX191aW50X2xlYXN0MTZfdCB1aW50NTZfdAojIGRlZmluZSBfX2ludF9sZWFzdDhfdCBpbnQ1Nl90CiMgZGVmaW5lIF9fdWludF9sZWFzdDhfdCB1aW50NTZfdAojZW5kaWYgLyogX19JTlQ1Nl9UWVBFX18gKi8KCgojaWZkZWYgX19JTlQ0OF9UWVBFX18KdHlwZWRlZiBfX0lOVDQ4X1RZUEVfXyBpbnQ0OF90Owp0eXBlZGVmIF9fVUlOVDQ4X1RZUEVfXyB1aW50NDhfdDsKdHlwZWRlZiBpbnQ0OF90IGludF9sZWFzdDQ4X3Q7CnR5cGVkZWYgdWludDQ4X3QgdWludF9sZWFzdDQ4X3Q7CnR5cGVkZWYgaW50NDhfdCBpbnRfZmFzdDQ4X3Q7CnR5cGVkZWYgdWludDQ4X3QgdWludF9mYXN0NDhfdDsKIyBkZWZpbmUgX19pbnRfbGVhc3QzMl90IGludDQ4X3QKIyBkZWZpbmUgX191aW50X2xlYXN0MzJfdCB1aW50NDhfdAojIGRlZmluZSBfX2ludF9sZWFzdDE2X3QgaW50NDhfdAojIGRlZmluZSBfX3VpbnRfbGVhc3QxNl90IHVpbnQ0OF90CiMgZGVmaW5lIF9faW50X2xlYXN0OF90IGludDQ4X3QKIyBkZWZpbmUgX191aW50X2xlYXN0OF90IHVpbnQ0OF90CiNlbmRpZiAvKiBfX0lOVDQ4X1RZUEVfXyAqLwoKCiNpZmRlZiBfX0lOVDQwX1RZUEVfXwp0eXBlZGVmIF9fSU5UNDBfVFlQRV9fIGludDQwX3Q7CnR5cGVkZWYgX19VSU5UNDBfVFlQRV9fIHVpbnQ0MF90Owp0eXBlZGVmIGludDQwX3QgaW50X2xlYXN0NDBfdDsKdHlwZWRlZiB1aW50NDBfdCB1aW50X2xlYXN0NDBfdDsKdHlwZWRlZiBpbnQ0MF90IGludF9mYXN0NDBfdDsKdHlwZWRlZiB1aW50NDBfdCB1aW50X2Zhc3Q0MF90OwojIGRlZmluZSBfX2ludF9sZWFzdDMyX3QgaW50NDBfdAojIGRlZmluZSBfX3VpbnRfbGVhc3QzMl90IHVpbnQ0MF90CiMgZGVmaW5lIF9faW50X2xlYXN0MTZfdCBpbnQ0MF90CiMgZGVmaW5lIF9fdWludF9sZWFzdDE2X3QgdWludDQwX3QKIyBkZWZpbmUgX19pbnRfbGVhc3Q4X3QgaW50NDBfdAojIGRlZmluZSBfX3VpbnRfbGVhc3Q4X3QgdWludDQwX3QKI2VuZGlmIC8qIF9fSU5UNDBfVFlQRV9fICovCgoKI2lmZGVmIF9fSU5UMzJfVFlQRV9fCgojIGlmbmRlZiBfX2ludDhfdF9kZWZpbmVkIC8qIGdsaWJjIHN5cy90eXBlcy5oIGFsc28gZGVmaW5lcyBpbnQzMl90Ki8KdHlwZWRlZiBfX0lOVDMyX1RZUEVfXyBpbnQzMl90OwojIGVuZGlmIC8qIF9faW50OF90X2RlZmluZWQgKi8KCiMgaWZuZGVmIF9fdWludDMyX3RfZGVmaW5lZCAgLyogbW9yZSBnbGliYyBjb21wYXRpYmlsaXR5ICovCiMgZGVmaW5lIF9fdWludDMyX3RfZGVmaW5lZAp0eXBlZGVmIF9fVUlOVDMyX1RZUEVfXyB1aW50MzJfdDsKIyBlbmRpZiAvKiBfX3VpbnQzMl90X2RlZmluZWQgKi8KCiMgZGVmaW5lIF9faW50X2xlYXN0MzJfdCBpbnQzMl90CiMgZGVmaW5lIF9fdWludF9sZWFzdDMyX3QgdWludDMyX3QKIyBkZWZpbmUgX19pbnRfbGVhc3QxNl90IGludDMyX3QKIyBkZWZpbmUgX191aW50X2xlYXN0MTZfdCB1aW50MzJfdAojIGRlZmluZSBfX2ludF9sZWFzdDhfdCBpbnQzMl90CiMgZGVmaW5lIF9fdWludF9sZWFzdDhfdCB1aW50MzJfdAojZW5kaWYgLyogX19JTlQzMl9UWVBFX18gKi8KCiNpZmRlZiBfX2ludF9sZWFzdDMyX3QKdHlwZWRlZiBfX2ludF9sZWFzdDMyX3QgaW50X2xlYXN0MzJfdDsKdHlwZWRlZiBfX3VpbnRfbGVhc3QzMl90IHVpbnRfbGVhc3QzMl90Owp0eXBlZGVmIF9faW50X2xlYXN0MzJfdCBpbnRfZmFzdDMyX3Q7CnR5cGVkZWYgX191aW50X2xlYXN0MzJfdCB1aW50X2Zhc3QzMl90OwojZW5kaWYgLyogX19pbnRfbGVhc3QzMl90ICovCgojaWZkZWYgX19JTlQyNF9UWVBFX18KdHlwZWRlZiBfX0lOVDI0X1RZUEVfXyBpbnQyNF90Owp0eXBlZGVmIF9fVUlOVDI0X1RZUEVfXyB1aW50MjRfdDsKdHlwZWRlZiBpbnQyNF90IGludF9sZWFzdDI0X3Q7CnR5cGVkZWYgdWludDI0X3QgdWludF9sZWFzdDI0X3Q7CnR5cGVkZWYgaW50MjRfdCBpbnRfZmFzdDI0X3Q7CnR5cGVkZWYgdWludDI0X3QgdWludF9mYXN0MjRfdDsKIyBkZWZpbmUgX19pbnRfbGVhc3QxNl90IGludDI0X3QKIyBkZWZpbmUgX191aW50X2xlYXN0MTZfdCB1aW50MjRfdAojIGRlZmluZSBfX2ludF9sZWFzdDhfdCBpbnQyNF90CiMgZGVmaW5lIF9fdWludF9sZWFzdDhfdCB1aW50MjRfdAojZW5kaWYgLyogX19JTlQyNF9UWVBFX18gKi8KCiNpZmRlZiBfX0lOVDE2X1RZUEVfXwojaWZuZGVmIF9faW50OF90X2RlZmluZWQgLyogZ2xpYmMgc3lzL3R5cGVzLmggYWxzbyBkZWZpbmVzIGludDE2X3QqLwp0eXBlZGVmIF9fSU5UMTZfVFlQRV9fIGludDE2X3Q7CiNlbmRpZiAvKiBfX2ludDhfdF9kZWZpbmVkICovCnR5cGVkZWYgX19VSU5UMTZfVFlQRV9fIHVpbnQxNl90OwojIGRlZmluZSBfX2ludF9sZWFzdDE2X3QgaW50MTZfdAojIGRlZmluZSBfX3VpbnRfbGVhc3QxNl90IHVpbnQxNl90CiMgZGVmaW5lIF9faW50X2xlYXN0OF90IGludDE2X3QKIyBkZWZpbmUgX191aW50X2xlYXN0OF90IHVpbnQxNl90CiNlbmRpZiAvKiBfX0lOVDE2X1RZUEVfXyAqLwoKI2lmZGVmIF9faW50X2xlYXN0MTZfdAp0eXBlZGVmIF9faW50X2xlYXN0MTZfdCBpbnRfbGVhc3QxNl90Owp0eXBlZGVmIF9fdWludF9sZWFzdDE2X3QgdWludF9sZWFzdDE2X3Q7CnR5cGVkZWYgX19pbnRfbGVhc3QxNl90IGludF9mYXN0MTZfdDsKdHlwZWRlZiBfX3VpbnRfbGVhc3QxNl90IHVpbnRfZmFzdDE2X3Q7CiNlbmRpZiAvKiBfX2ludF9sZWFzdDE2X3QgKi8KCgojaWZkZWYgX19JTlQ4X1RZUEVfXwojaWZuZGVmIF9faW50OF90X2RlZmluZWQgIC8qIGdsaWJjIHN5cy90eXBlcy5oIGFsc28gZGVmaW5lcyBpbnQ4X3QqLwp0eXBlZGVmIF9fSU5UOF9UWVBFX18gaW50OF90OwojZW5kaWYgLyogX19pbnQ4X3RfZGVmaW5lZCAqLwp0eXBlZGVmIF9fVUlOVDhfVFlQRV9fIHVpbnQ4X3Q7CiMgZGVmaW5lIF9faW50X2xlYXN0OF90IGludDhfdAojIGRlZmluZSBfX3VpbnRfbGVhc3Q4X3QgdWludDhfdAojZW5kaWYgLyogX19JTlQ4X1RZUEVfXyAqLwoKI2lmZGVmIF9faW50X2xlYXN0OF90CnR5cGVkZWYgX19pbnRfbGVhc3Q4X3QgaW50X2xlYXN0OF90Owp0eXBlZGVmIF9fdWludF9sZWFzdDhfdCB1aW50X2xlYXN0OF90Owp0eXBlZGVmIF9faW50X2xlYXN0OF90IGludF9mYXN0OF90Owp0eXBlZGVmIF9fdWludF9sZWFzdDhfdCB1aW50X2Zhc3Q4X3Q7CiNlbmRpZiAvKiBfX2ludF9sZWFzdDhfdCAqLwoKLyogcHJldmVudCBnbGliYyBzeXMvdHlwZXMuaCBmcm9tIGRlZmluaW5nIGNvbmZsaWN0aW5nIHR5cGVzICovCiNpZm5kZWYgX19pbnQ4X3RfZGVmaW5lZAojIGRlZmluZSBfX2ludDhfdF9kZWZpbmVkCiNlbmRpZiAvKiBfX2ludDhfdF9kZWZpbmVkICovCgovKiBDOTkgNy4xOC4xLjQgSW50ZWdlciB0eXBlcyBjYXBhYmxlIG9mIGhvbGRpbmcgb2JqZWN0IHBvaW50ZXJzLgogKi8KI2RlZmluZSBfX3N0ZGludF9qb2luMyhhLGIsYykgYSAjIyBiICMjIGMKCiNpZm5kZWYgX0lOVFBUUl9UCiNpZm5kZWYgX19pbnRwdHJfdF9kZWZpbmVkCnR5cGVkZWYgX19JTlRQVFJfVFlQRV9fIGludHB0cl90OwojZGVmaW5lIF9faW50cHRyX3RfZGVmaW5lZAojZGVmaW5lIF9JTlRQVFJfVAojZW5kaWYKI2VuZGlmCgojaWZuZGVmIF9VSU5UUFRSX1QKdHlwZWRlZiBfX1VJTlRQVFJfVFlQRV9fIHVpbnRwdHJfdDsKI2RlZmluZSBfVUlOVFBUUl9UCiNlbmRpZgoKLyogQzk5IDcuMTguMS41IEdyZWF0ZXN0LXdpZHRoIGludGVnZXIgdHlwZXMuCiAqLwp0eXBlZGVmIF9fSU5UTUFYX1RZUEVfXyAgaW50bWF4X3Q7CnR5cGVkZWYgX19VSU5UTUFYX1RZUEVfXyB1aW50bWF4X3Q7CgovKiBDOTkgNy4xOC40IE1hY3JvcyBmb3IgbWluaW11bS13aWR0aCBpbnRlZ2VyIGNvbnN0YW50cy4KICoKICogVGhlIHN0YW5kYXJkIHJlcXVpcmVzIHRoYXQgaW50ZWdlciBjb25zdGFudCBtYWNyb3MgYmUgZGVmaW5lZCBmb3IgYWxsIHRoZQogKiBtaW5pbXVtLXdpZHRoIHR5cGVzIGRlZmluZWQgYWJvdmUuIEFzIDgtLCAxNi0sIDMyLSwgYW5kIDY0LWJpdCBtaW5pbXVtLXdpZHRoCiAqIHR5cGVzIGFyZSByZXF1aXJlZCwgdGhlIGNvcnJlc3BvbmRpbmcgaW50ZWdlciBjb25zdGFudCBtYWNyb3MgYXJlIGRlZmluZWQKICogaGVyZS4gVGhpcyBpbXBsZW1lbnRhdGlvbiBhbHNvIGRlZmluZXMgbWluaW11bS13aWR0aCB0eXBlcyBmb3IgZXZlcnkgb3RoZXIKICogaW50ZWdlciB3aWR0aCB0aGF0IHRoZSB0YXJnZXQgaW1wbGVtZW50cywgc28gY29ycmVzcG9uZGluZyBtYWNyb3MgYXJlCiAqIGRlZmluZWQgYmVsb3csIHRvby4KICoKICogVGhlc2UgbWFjcm9zIGFyZSBkZWZpbmVkIHVzaW5nIHRoZSBzYW1lIHN1Y2Nlc3NpdmUtc2hyaW5raW5nIGFwcHJvYWNoIGFzCiAqIHRoZSB0eXBlIGRlZmluaXRpb25zIGFib3ZlLiBJdCBpcyBsaWtld2lzZSBpbXBvcnRhbnQgdGhhdCBtYWNyb3MgYXJlIGRlZmluZWQKICogaW4gb3JkZXIgb2YgZGVjZW5kaW5nIHdpZHRoLgogKgogKiBOb3RlIHRoYXQgQysrIHNob3VsZCBub3QgY2hlY2sgX19TVERDX0NPTlNUQU5UX01BQ1JPUyBoZXJlLCBjb250cmFyeSB0byB0aGUKICogY2xhaW1zIG9mIHRoZSBDIHN0YW5kYXJkIChzZWUgQysrIDE4LjMuMXAyLCBbY3N0ZGludC5zeW5dKS4KICovCgojZGVmaW5lIF9faW50X2Nfam9pbihhLCBiKSBhICMjIGIKI2RlZmluZSBfX2ludF9jKHYsIHN1ZmZpeCkgX19pbnRfY19qb2luKHYsIHN1ZmZpeCkKI2RlZmluZSBfX3VpbnRfYyh2LCBzdWZmaXgpIF9faW50X2Nfam9pbih2IyNVLCBzdWZmaXgpCgoKI2lmZGVmIF9fSU5UNjRfVFlQRV9fCiMgaWZkZWYgX19JTlQ2NF9DX1NVRkZJWF9fCiMgIGRlZmluZSBfX2ludDY0X2Nfc3VmZml4IF9fSU5UNjRfQ19TVUZGSVhfXwojICBkZWZpbmUgX19pbnQzMl9jX3N1ZmZpeCBfX0lOVDY0X0NfU1VGRklYX18KIyAgZGVmaW5lIF9faW50MTZfY19zdWZmaXggX19JTlQ2NF9DX1NVRkZJWF9fCiMgIGRlZmluZSAgX19pbnQ4X2Nfc3VmZml4IF9fSU5UNjRfQ19TVUZGSVhfXwojIGVsc2UKIyAgdW5kZWYgX19pbnQ2NF9jX3N1ZmZpeAojICB1bmRlZiBfX2ludDMyX2Nfc3VmZml4CiMgIHVuZGVmIF9faW50MTZfY19zdWZmaXgKIyAgdW5kZWYgIF9faW50OF9jX3N1ZmZpeAojIGVuZGlmIC8qIF9fSU5UNjRfQ19TVUZGSVhfXyAqLwojZW5kaWYgLyogX19JTlQ2NF9UWVBFX18gKi8KCiNpZmRlZiBfX2ludF9sZWFzdDY0X3QKIyBpZmRlZiBfX2ludDY0X2Nfc3VmZml4CiMgIGRlZmluZSBJTlQ2NF9DKHYpIF9faW50X2ModiwgX19pbnQ2NF9jX3N1ZmZpeCkKIyAgZGVmaW5lIFVJTlQ2NF9DKHYpIF9fdWludF9jKHYsIF9faW50NjRfY19zdWZmaXgpCiMgZWxzZQojICBkZWZpbmUgSU5UNjRfQyh2KSB2CiMgIGRlZmluZSBVSU5UNjRfQyh2KSB2ICMjIFUKIyBlbmRpZiAvKiBfX2ludDY0X2Nfc3VmZml4ICovCiNlbmRpZiAvKiBfX2ludF9sZWFzdDY0X3QgKi8KCgojaWZkZWYgX19JTlQ1Nl9UWVBFX18KIyBpZmRlZiBfX0lOVDU2X0NfU1VGRklYX18KIyAgZGVmaW5lIElOVDU2X0ModikgX19pbnRfYyh2LCBfX0lOVDU2X0NfU1VGRklYX18pCiMgIGRlZmluZSBVSU5UNTZfQyh2KSBfX3VpbnRfYyh2LCBfX0lOVDU2X0NfU1VGRklYX18pCiMgIGRlZmluZSBfX2ludDMyX2Nfc3VmZml4IF9fSU5UNTZfQ19TVUZGSVhfXwojICBkZWZpbmUgX19pbnQxNl9jX3N1ZmZpeCBfX0lOVDU2X0NfU1VGRklYX18KIyAgZGVmaW5lIF9faW50OF9jX3N1ZmZpeCAgX19JTlQ1Nl9DX1NVRkZJWF9fCiMgZWxzZQojICBkZWZpbmUgSU5UNTZfQyh2KSB2CiMgIGRlZmluZSBVSU5UNTZfQyh2KSB2ICMjIFUKIyAgdW5kZWYgX19pbnQzMl9jX3N1ZmZpeAojICB1bmRlZiBfX2ludDE2X2Nfc3VmZml4CiMgIHVuZGVmICBfX2ludDhfY19zdWZmaXgKIyBlbmRpZiAvKiBfX0lOVDU2X0NfU1VGRklYX18gKi8KI2VuZGlmIC8qIF9fSU5UNTZfVFlQRV9fICovCgoKI2lmZGVmIF9fSU5UNDhfVFlQRV9fCiMgaWZkZWYgX19JTlQ0OF9DX1NVRkZJWF9fCiMgIGRlZmluZSBJTlQ0OF9DKHYpIF9faW50X2ModiwgX19JTlQ0OF9DX1NVRkZJWF9fKQojICBkZWZpbmUgVUlOVDQ4X0ModikgX191aW50X2ModiwgX19JTlQ0OF9DX1NVRkZJWF9fKQojICBkZWZpbmUgX19pbnQzMl9jX3N1ZmZpeCBfX0lOVDQ4X0NfU1VGRklYX18KIyAgZGVmaW5lIF9faW50MTZfY19zdWZmaXggX19JTlQ0OF9DX1NVRkZJWF9fCiMgIGRlZmluZSBfX2ludDhfY19zdWZmaXggIF9fSU5UNDhfQ19TVUZGSVhfXwojIGVsc2UKIyAgZGVmaW5lIElOVDQ4X0ModikgdgojICBkZWZpbmUgVUlOVDQ4X0ModikgdiAjIyBVCiMgIHVuZGVmIF9faW50MzJfY19zdWZmaXgKIyAgdW5kZWYgX19pbnQxNl9jX3N1ZmZpeAojICB1bmRlZiAgX19pbnQ4X2Nfc3VmZml4CiMgZW5kaWYgLyogX19JTlQ0OF9DX1NVRkZJWF9fICovCiNlbmRpZiAvKiBfX0lOVDQ4X1RZUEVfXyAqLwoKCiNpZmRlZiBfX0lOVDQwX1RZUEVfXwojIGlmZGVmIF9fSU5UNDBfQ19TVUZGSVhfXwojICBkZWZpbmUgSU5UNDBfQyh2KSBfX2ludF9jKHYsIF9fSU5UNDBfQ19TVUZGSVhfXykKIyAgZGVmaW5lIFVJTlQ0MF9DKHYpIF9fdWludF9jKHYsIF9fSU5UNDBfQ19TVUZGSVhfXykKIyAgZGVmaW5lIF9faW50MzJfY19zdWZmaXggX19JTlQ0MF9DX1NVRkZJWF9fCiMgIGRlZmluZSBfX2ludDE2X2Nfc3VmZml4IF9fSU5UNDBfQ19TVUZGSVhfXwojICBkZWZpbmUgX19pbnQ4X2Nfc3VmZml4ICBfX0lOVDQwX0NfU1VGRklYX18KIyBlbHNlCiMgIGRlZmluZSBJTlQ0MF9DKHYpIHYKIyAgZGVmaW5lIFVJTlQ0MF9DKHYpIHYgIyMgVQojICB1bmRlZiBfX2ludDMyX2Nfc3VmZml4CiMgIHVuZGVmIF9faW50MTZfY19zdWZmaXgKIyAgdW5kZWYgIF9faW50OF9jX3N1ZmZpeAojIGVuZGlmIC8qIF9fSU5UNDBfQ19TVUZGSVhfXyAqLwojZW5kaWYgLyogX19JTlQ0MF9UWVBFX18gKi8KCgojaWZkZWYgX19JTlQzMl9UWVBFX18KIyBpZmRlZiBfX0lOVDMyX0NfU1VGRklYX18KIyAgZGVmaW5lIF9faW50MzJfY19zdWZmaXggX19JTlQzMl9DX1NVRkZJWF9fCiMgIGRlZmluZSBfX2ludDE2X2Nfc3VmZml4IF9fSU5UMzJfQ19TVUZGSVhfXwojICBkZWZpbmUgX19pbnQ4X2Nfc3VmZml4ICBfX0lOVDMyX0NfU1VGRklYX18KI2Vsc2UKIyAgdW5kZWYgX19pbnQzMl9jX3N1ZmZpeAojICB1bmRlZiBfX2ludDE2X2Nfc3VmZml4CiMgIHVuZGVmICBfX2ludDhfY19zdWZmaXgKIyBlbmRpZiAvKiBfX0lOVDMyX0NfU1VGRklYX18gKi8KI2VuZGlmIC8qIF9fSU5UMzJfVFlQRV9fICovCgojaWZkZWYgX19pbnRfbGVhc3QzMl90CiMgaWZkZWYgX19pbnQzMl9jX3N1ZmZpeAojICBkZWZpbmUgSU5UMzJfQyh2KSBfX2ludF9jKHYsIF9faW50MzJfY19zdWZmaXgpCiMgIGRlZmluZSBVSU5UMzJfQyh2KSBfX3VpbnRfYyh2LCBfX2ludDMyX2Nfc3VmZml4KQojIGVsc2UKIyAgZGVmaW5lIElOVDMyX0ModikgdgojICBkZWZpbmUgVUlOVDMyX0ModikgdiAjIyBVCiMgZW5kaWYgLyogX19pbnQzMl9jX3N1ZmZpeCAqLwojZW5kaWYgLyogX19pbnRfbGVhc3QzMl90ICovCgoKI2lmZGVmIF9fSU5UMjRfVFlQRV9fCiMgaWZkZWYgX19JTlQyNF9DX1NVRkZJWF9fCiMgIGRlZmluZSBJTlQyNF9DKHYpIF9faW50X2ModiwgX19JTlQyNF9DX1NVRkZJWF9fKQojICBkZWZpbmUgVUlOVDI0X0ModikgX191aW50X2ModiwgX19JTlQyNF9DX1NVRkZJWF9fKQojICBkZWZpbmUgX19pbnQxNl9jX3N1ZmZpeCBfX0lOVDI0X0NfU1VGRklYX18KIyAgZGVmaW5lIF9faW50OF9jX3N1ZmZpeCAgX19JTlQyNF9DX1NVRkZJWF9fCiMgZWxzZQojICBkZWZpbmUgSU5UMjRfQyh2KSB2CiMgIGRlZmluZSBVSU5UMjRfQyh2KSB2ICMjIFUKIyAgdW5kZWYgX19pbnQxNl9jX3N1ZmZpeAojICB1bmRlZiAgX19pbnQ4X2Nfc3VmZml4CiMgZW5kaWYgLyogX19JTlQyNF9DX1NVRkZJWF9fICovCiNlbmRpZiAvKiBfX0lOVDI0X1RZUEVfXyAqLwoKCiNpZmRlZiBfX0lOVDE2X1RZUEVfXwojIGlmZGVmIF9fSU5UMTZfQ19TVUZGSVhfXwojICBkZWZpbmUgX19pbnQxNl9jX3N1ZmZpeCBfX0lOVDE2X0NfU1VGRklYX18KIyAgZGVmaW5lIF9faW50OF9jX3N1ZmZpeCAgX19JTlQxNl9DX1NVRkZJWF9fCiNlbHNlCiMgIHVuZGVmIF9faW50MTZfY19zdWZmaXgKIyAgdW5kZWYgIF9faW50OF9jX3N1ZmZpeAojIGVuZGlmIC8qIF9fSU5UMTZfQ19TVUZGSVhfXyAqLwojZW5kaWYgLyogX19JTlQxNl9UWVBFX18gKi8KCiNpZmRlZiBfX2ludF9sZWFzdDE2X3QKIyBpZmRlZiBfX2ludDE2X2Nfc3VmZml4CiMgIGRlZmluZSBJTlQxNl9DKHYpIF9faW50X2ModiwgX19pbnQxNl9jX3N1ZmZpeCkKIyAgZGVmaW5lIFVJTlQxNl9DKHYpIF9fdWludF9jKHYsIF9faW50MTZfY19zdWZmaXgpCiMgZWxzZQojICBkZWZpbmUgSU5UMTZfQyh2KSB2CiMgIGRlZmluZSBVSU5UMTZfQyh2KSB2ICMjIFUKIyBlbmRpZiAvKiBfX2ludDE2X2Nfc3VmZml4ICovCiNlbmRpZiAvKiBfX2ludF9sZWFzdDE2X3QgKi8KCgojaWZkZWYgX19JTlQ4X1RZUEVfXwojIGlmZGVmIF9fSU5UOF9DX1NVRkZJWF9fCiMgIGRlZmluZSBfX2ludDhfY19zdWZmaXggX19JTlQ4X0NfU1VGRklYX18KI2Vsc2UKIyAgdW5kZWYgIF9faW50OF9jX3N1ZmZpeAojIGVuZGlmIC8qIF9fSU5UOF9DX1NVRkZJWF9fICovCiNlbmRpZiAvKiBfX0lOVDhfVFlQRV9fICovCgojaWZkZWYgX19pbnRfbGVhc3Q4X3QKIyBpZmRlZiBfX2ludDhfY19zdWZmaXgKIyAgZGVmaW5lIElOVDhfQyh2KSBfX2ludF9jKHYsIF9faW50OF9jX3N1ZmZpeCkKIyAgZGVmaW5lIFVJTlQ4X0ModikgX191aW50X2ModiwgX19pbnQ4X2Nfc3VmZml4KQojIGVsc2UKIyAgZGVmaW5lIElOVDhfQyh2KSB2CiMgIGRlZmluZSBVSU5UOF9DKHYpIHYgIyMgVQojIGVuZGlmIC8qIF9faW50OF9jX3N1ZmZpeCAqLwojZW5kaWYgLyogX19pbnRfbGVhc3Q4X3QgKi8KCgovKiBDOTkgNy4xOC4yLjEgTGltaXRzIG9mIGV4YWN0LXdpZHRoIGludGVnZXIgdHlwZXMuCiAqIEM5OSA3LjE4LjIuMiBMaW1pdHMgb2YgbWluaW11bS13aWR0aCBpbnRlZ2VyIHR5cGVzLgogKiBDOTkgNy4xOC4yLjMgTGltaXRzIG9mIGZhc3Rlc3QgbWluaW11bS13aWR0aCBpbnRlZ2VyIHR5cGVzLgogKgogKiBUaGUgcHJlc2VuY2Ugb2YgbGltaXQgbWFjcm9zIGFyZSBjb21wbGV0ZWx5IG9wdGlvbmFsIGluIEM5OS4gIFRoaXMKICogaW1wbGVtZW50YXRpb24gZGVmaW5lcyBsaW1pdHMgZm9yIGFsbCBvZiB0aGUgdHlwZXMgKGV4YWN0LSBhbmQKICogbWluaW11bS13aWR0aCkgdGhhdCBpdCBkZWZpbmVzIGFib3ZlLCB1c2luZyB0aGUgbGltaXRzIG9mIHRoZSBtaW5pbXVtLXdpZHRoCiAqIHR5cGUgZm9yIGFueSB0eXBlcyB0aGF0IGRvIG5vdCBoYXZlIGV4YWN0LXdpZHRoIHJlcHJlc2VudGF0aW9ucy4KICoKICogQXMgaW4gdGhlIHR5cGUgZGVmaW5pdGlvbnMsIHRoaXMgc2VjdGlvbiB0YWtlcyBhbiBhcHByb2FjaCBvZgogKiBzdWNjZXNzaXZlLXNocmlua2luZyB0byBkZXRlcm1pbmUgd2hpY2ggbGltaXRzIHRvIHVzZSBmb3IgdGhlIHN0YW5kYXJkICg4LAogKiAxNiwgMzIsIDY0KSBiaXQgd2lkdGhzIHdoZW4gdGhleSBkb24ndCBoYXZlIGV4YWN0IHJlcHJlc2VudGF0aW9ucy4gSXQgaXMKICogdGhlcmVmb3JlIGltcG9ydGFudCB0aGF0IHRoZSBkZWZpbml0aW9ucyBiZSBrZXB0IGluIG9yZGVyIG9mIGRlY2VuZGluZwogKiB3aWR0aHMuCiAqCiAqIE5vdGUgdGhhdCBDKysgc2hvdWxkIG5vdCBjaGVjayBfX1NURENfTElNSVRfTUFDUk9TIGhlcmUsIGNvbnRyYXJ5IHRvIHRoZQogKiBjbGFpbXMgb2YgdGhlIEMgc3RhbmRhcmQgKHNlZSBDKysgMTguMy4xcDIsIFtjc3RkaW50LnN5bl0pLgogKi8KCiNpZmRlZiBfX0lOVDY0X1RZUEVfXwojIGRlZmluZSBJTlQ2NF9NQVggICAgICAgICAgIElOVDY0X0MoIDkyMjMzNzIwMzY4NTQ3NzU4MDcpCiMgZGVmaW5lIElOVDY0X01JTiAgICAgICAgICgtSU5UNjRfQyggOTIyMzM3MjAzNjg1NDc3NTgwNyktMSkKIyBkZWZpbmUgVUlOVDY0X01BWCAgICAgICAgIFVJTlQ2NF9DKDE4NDQ2NzQ0MDczNzA5NTUxNjE1KQojIGRlZmluZSBfX0lOVF9MRUFTVDY0X01JTiAgIElOVDY0X01JTgojIGRlZmluZSBfX0lOVF9MRUFTVDY0X01BWCAgIElOVDY0X01BWAojIGRlZmluZSBfX1VJTlRfTEVBU1Q2NF9NQVggVUlOVDY0X01BWAojIGRlZmluZSBfX0lOVF9MRUFTVDMyX01JTiAgIElOVDY0X01JTgojIGRlZmluZSBfX0lOVF9MRUFTVDMyX01BWCAgIElOVDY0X01BWAojIGRlZmluZSBfX1VJTlRfTEVBU1QzMl9NQVggVUlOVDY0X01BWAojIGRlZmluZSBfX0lOVF9MRUFTVDE2X01JTiAgIElOVDY0X01JTgojIGRlZmluZSBfX0lOVF9MRUFTVDE2X01BWCAgIElOVDY0X01BWAojIGRlZmluZSBfX1VJTlRfTEVBU1QxNl9NQVggVUlOVDY0X01BWAojIGRlZmluZSBfX0lOVF9MRUFTVDhfTUlOICAgIElOVDY0X01JTgojIGRlZmluZSBfX0lOVF9MRUFTVDhfTUFYICAgIElOVDY0X01BWAojIGRlZmluZSBfX1VJTlRfTEVBU1Q4X01BWCAgVUlOVDY0X01BWAojZW5kaWYgLyogX19JTlQ2NF9UWVBFX18gKi8KCiNpZmRlZiBfX0lOVF9MRUFTVDY0X01JTgojIGRlZmluZSBJTlRfTEVBU1Q2NF9NSU4gICBfX0lOVF9MRUFTVDY0X01JTgojIGRlZmluZSBJTlRfTEVBU1Q2NF9NQVggICBfX0lOVF9MRUFTVDY0X01BWAojIGRlZmluZSBVSU5UX0xFQVNUNjRfTUFYIF9fVUlOVF9MRUFTVDY0X01BWAojIGRlZmluZSBJTlRfRkFTVDY0X01JTiAgICBfX0lOVF9MRUFTVDY0X01JTgojIGRlZmluZSBJTlRfRkFTVDY0X01BWCAgICBfX0lOVF9MRUFTVDY0X01BWAojIGRlZmluZSBVSU5UX0ZBU1Q2NF9NQVggIF9fVUlOVF9MRUFTVDY0X01BWAojZW5kaWYgLyogX19JTlRfTEVBU1Q2NF9NSU4gKi8KCgojaWZkZWYgX19JTlQ1Nl9UWVBFX18KIyBkZWZpbmUgSU5UNTZfTUFYICAgICAgICAgICBJTlQ1Nl9DKDM2MDI4Nzk3MDE4OTYzOTY3KQojIGRlZmluZSBJTlQ1Nl9NSU4gICAgICAgICAoLUlOVDU2X0MoMzYwMjg3OTcwMTg5NjM5NjcpLTEpCiMgZGVmaW5lIFVJTlQ1Nl9NQVggICAgICAgICBVSU5UNTZfQyg3MjA1NzU5NDAzNzkyNzkzNSkKIyBkZWZpbmUgSU5UX0xFQVNUNTZfTUlOICAgICBJTlQ1Nl9NSU4KIyBkZWZpbmUgSU5UX0xFQVNUNTZfTUFYICAgICBJTlQ1Nl9NQVgKIyBkZWZpbmUgVUlOVF9MRUFTVDU2X01BWCAgIFVJTlQ1Nl9NQVgKIyBkZWZpbmUgSU5UX0ZBU1Q1Nl9NSU4gICAgICBJTlQ1Nl9NSU4KIyBkZWZpbmUgSU5UX0ZBU1Q1Nl9NQVggICAgICBJTlQ1Nl9NQVgKIyBkZWZpbmUgVUlOVF9GQVNUNTZfTUFYICAgIFVJTlQ1Nl9NQVgKIyBkZWZpbmUgX19JTlRfTEVBU1QzMl9NSU4gICBJTlQ1Nl9NSU4KIyBkZWZpbmUgX19JTlRfTEVBU1QzMl9NQVggICBJTlQ1Nl9NQVgKIyBkZWZpbmUgX19VSU5UX0xFQVNUMzJfTUFYIFVJTlQ1Nl9NQVgKIyBkZWZpbmUgX19JTlRfTEVBU1QxNl9NSU4gICBJTlQ1Nl9NSU4KIyBkZWZpbmUgX19JTlRfTEVBU1QxNl9NQVggICBJTlQ1Nl9NQVgKIyBkZWZpbmUgX19VSU5UX0xFQVNUMTZfTUFYIFVJTlQ1Nl9NQVgKIyBkZWZpbmUgX19JTlRfTEVBU1Q4X01JTiAgICBJTlQ1Nl9NSU4KIyBkZWZpbmUgX19JTlRfTEVBU1Q4X01BWCAgICBJTlQ1Nl9NQVgKIyBkZWZpbmUgX19VSU5UX0xFQVNUOF9NQVggIFVJTlQ1Nl9NQVgKI2VuZGlmIC8qIF9fSU5UNTZfVFlQRV9fICovCgoKI2lmZGVmIF9fSU5UNDhfVFlQRV9fCiMgZGVmaW5lIElOVDQ4X01BWCAgICAgICAgICAgSU5UNDhfQygxNDA3Mzc0ODgzNTUzMjcpCiMgZGVmaW5lIElOVDQ4X01JTiAgICAgICAgICgtSU5UNDhfQygxNDA3Mzc0ODgzNTUzMjcpLTEpCiMgZGVmaW5lIFVJTlQ0OF9NQVggICAgICAgICBVSU5UNDhfQygyODE0NzQ5NzY3MTA2NTUpCiMgZGVmaW5lIElOVF9MRUFTVDQ4X01JTiAgICAgSU5UNDhfTUlOCiMgZGVmaW5lIElOVF9MRUFTVDQ4X01BWCAgICAgSU5UNDhfTUFYCiMgZGVmaW5lIFVJTlRfTEVBU1Q0OF9NQVggICBVSU5UNDhfTUFYCiMgZGVmaW5lIElOVF9GQVNUNDhfTUlOICAgICAgSU5UNDhfTUlOCiMgZGVmaW5lIElOVF9GQVNUNDhfTUFYICAgICAgSU5UNDhfTUFYCiMgZGVmaW5lIFVJTlRfRkFTVDQ4X01BWCAgICBVSU5UNDhfTUFYCiMgZGVmaW5lIF9fSU5UX0xFQVNUMzJfTUlOICAgSU5UNDhfTUlOCiMgZGVmaW5lIF9fSU5UX0xFQVNUMzJfTUFYICAgSU5UNDhfTUFYCiMgZGVmaW5lIF9fVUlOVF9MRUFTVDMyX01BWCBVSU5UNDhfTUFYCiMgZGVmaW5lIF9fSU5UX0xFQVNUMTZfTUlOICAgSU5UNDhfTUlOCiMgZGVmaW5lIF9fSU5UX0xFQVNUMTZfTUFYICAgSU5UNDhfTUFYCiMgZGVmaW5lIF9fVUlOVF9MRUFTVDE2X01BWCBVSU5UNDhfTUFYCiMgZGVmaW5lIF9fSU5UX0xFQVNUOF9NSU4gICAgSU5UNDhfTUlOCiMgZGVmaW5lIF9fSU5UX0xFQVNUOF9NQVggICAgSU5UNDhfTUFYCiMgZGVmaW5lIF9fVUlOVF9MRUFTVDhfTUFYICBVSU5UNDhfTUFYCiNlbmRpZiAvKiBfX0lOVDQ4X1RZUEVfXyAqLwoKCiNpZmRlZiBfX0lOVDQwX1RZUEVfXwojIGRlZmluZSBJTlQ0MF9NQVggICAgICAgICAgIElOVDQwX0MoNTQ5NzU1ODEzODg3KQojIGRlZmluZSBJTlQ0MF9NSU4gICAgICAgICAoLUlOVDQwX0MoNTQ5NzU1ODEzODg3KS0xKQojIGRlZmluZSBVSU5UNDBfTUFYICAgICAgICAgVUlOVDQwX0MoMTA5OTUxMTYyNzc3NSkKIyBkZWZpbmUgSU5UX0xFQVNUNDBfTUlOICAgICBJTlQ0MF9NSU4KIyBkZWZpbmUgSU5UX0xFQVNUNDBfTUFYICAgICBJTlQ0MF9NQVgKIyBkZWZpbmUgVUlOVF9MRUFTVDQwX01BWCAgIFVJTlQ0MF9NQVgKIyBkZWZpbmUgSU5UX0ZBU1Q0MF9NSU4gICAgICBJTlQ0MF9NSU4KIyBkZWZpbmUgSU5UX0ZBU1Q0MF9NQVggICAgICBJTlQ0MF9NQVgKIyBkZWZpbmUgVUlOVF9GQVNUNDBfTUFYICAgIFVJTlQ0MF9NQVgKIyBkZWZpbmUgX19JTlRfTEVBU1QzMl9NSU4gICBJTlQ0MF9NSU4KIyBkZWZpbmUgX19JTlRfTEVBU1QzMl9NQVggICBJTlQ0MF9NQVgKIyBkZWZpbmUgX19VSU5UX0xFQVNUMzJfTUFYIFVJTlQ0MF9NQVgKIyBkZWZpbmUgX19JTlRfTEVBU1QxNl9NSU4gICBJTlQ0MF9NSU4KIyBkZWZpbmUgX19JTlRfTEVBU1QxNl9NQVggICBJTlQ0MF9NQVgKIyBkZWZpbmUgX19VSU5UX0xFQVNUMTZfTUFYIFVJTlQ0MF9NQVgKIyBkZWZpbmUgX19JTlRfTEVBU1Q4X01JTiAgICBJTlQ0MF9NSU4KIyBkZWZpbmUgX19JTlRfTEVBU1Q4X01BWCAgICBJTlQ0MF9NQVgKIyBkZWZpbmUgX19VSU5UX0xFQVNUOF9NQVggIFVJTlQ0MF9NQVgKI2VuZGlmIC8qIF9fSU5UNDBfVFlQRV9fICovCgoKI2lmZGVmIF9fSU5UMzJfVFlQRV9fCiMgZGVmaW5lIElOVDMyX01BWCAgICAgICAgICAgSU5UMzJfQygyMTQ3NDgzNjQ3KQojIGRlZmluZSBJTlQzMl9NSU4gICAgICAgICAoLUlOVDMyX0MoMjE0NzQ4MzY0NyktMSkKIyBkZWZpbmUgVUlOVDMyX01BWCAgICAgICAgIFVJTlQzMl9DKDQyOTQ5NjcyOTUpCiMgZGVmaW5lIF9fSU5UX0xFQVNUMzJfTUlOICAgSU5UMzJfTUlOCiMgZGVmaW5lIF9fSU5UX0xFQVNUMzJfTUFYICAgSU5UMzJfTUFYCiMgZGVmaW5lIF9fVUlOVF9MRUFTVDMyX01BWCBVSU5UMzJfTUFYCiMgZGVmaW5lIF9fSU5UX0xFQVNUMTZfTUlOICAgSU5UMzJfTUlOCiMgZGVmaW5lIF9fSU5UX0xFQVNUMTZfTUFYICAgSU5UMzJfTUFYCiMgZGVmaW5lIF9fVUlOVF9MRUFTVDE2X01BWCBVSU5UMzJfTUFYCiMgZGVmaW5lIF9fSU5UX0xFQVNUOF9NSU4gICAgSU5UMzJfTUlOCiMgZGVmaW5lIF9fSU5UX0xFQVNUOF9NQVggICAgSU5UMzJfTUFYCiMgZGVmaW5lIF9fVUlOVF9MRUFTVDhfTUFYICBVSU5UMzJfTUFYCiNlbmRpZiAvKiBfX0lOVDMyX1RZUEVfXyAqLwoKI2lmZGVmIF9fSU5UX0xFQVNUMzJfTUlOCiMgZGVmaW5lIElOVF9MRUFTVDMyX01JTiAgIF9fSU5UX0xFQVNUMzJfTUlOCiMgZGVmaW5lIElOVF9MRUFTVDMyX01BWCAgIF9fSU5UX0xFQVNUMzJfTUFYCiMgZGVmaW5lIFVJTlRfTEVBU1QzMl9NQVggX19VSU5UX0xFQVNUMzJfTUFYCiMgZGVmaW5lIElOVF9GQVNUMzJfTUlOICAgIF9fSU5UX0xFQVNUMzJfTUlOCiMgZGVmaW5lIElOVF9GQVNUMzJfTUFYICAgIF9fSU5UX0xFQVNUMzJfTUFYCiMgZGVmaW5lIFVJTlRfRkFTVDMyX01BWCAgX19VSU5UX0xFQVNUMzJfTUFYCiNlbmRpZiAvKiBfX0lOVF9MRUFTVDMyX01JTiAqLwoKCiNpZmRlZiBfX0lOVDI0X1RZUEVfXwojIGRlZmluZSBJTlQyNF9NQVggICAgICAgICAgIElOVDI0X0MoODM4ODYwNykKIyBkZWZpbmUgSU5UMjRfTUlOICAgICAgICAgKC1JTlQyNF9DKDgzODg2MDcpLTEpCiMgZGVmaW5lIFVJTlQyNF9NQVggICAgICAgICBVSU5UMjRfQygxNjc3NzIxNSkKIyBkZWZpbmUgSU5UX0xFQVNUMjRfTUlOICAgICBJTlQyNF9NSU4KIyBkZWZpbmUgSU5UX0xFQVNUMjRfTUFYICAgICBJTlQyNF9NQVgKIyBkZWZpbmUgVUlOVF9MRUFTVDI0X01BWCAgIFVJTlQyNF9NQVgKIyBkZWZpbmUgSU5UX0ZBU1QyNF9NSU4gICAgICBJTlQyNF9NSU4KIyBkZWZpbmUgSU5UX0ZBU1QyNF9NQVggICAgICBJTlQyNF9NQVgKIyBkZWZpbmUgVUlOVF9GQVNUMjRfTUFYICAgIFVJTlQyNF9NQVgKIyBkZWZpbmUgX19JTlRfTEVBU1QxNl9NSU4gICBJTlQyNF9NSU4KIyBkZWZpbmUgX19JTlRfTEVBU1QxNl9NQVggICBJTlQyNF9NQVgKIyBkZWZpbmUgX19VSU5UX0xFQVNUMTZfTUFYIFVJTlQyNF9NQVgKIyBkZWZpbmUgX19JTlRfTEVBU1Q4X01JTiAgICBJTlQyNF9NSU4KIyBkZWZpbmUgX19JTlRfTEVBU1Q4X01BWCAgICBJTlQyNF9NQVgKIyBkZWZpbmUgX19VSU5UX0xFQVNUOF9NQVggIFVJTlQyNF9NQVgKI2VuZGlmIC8qIF9fSU5UMjRfVFlQRV9fICovCgoKI2lmZGVmIF9fSU5UMTZfVFlQRV9fCiNkZWZpbmUgSU5UMTZfTUFYICAgICAgICAgICAgSU5UMTZfQygzMjc2NykKI2RlZmluZSBJTlQxNl9NSU4gICAgICAgICAgKC1JTlQxNl9DKDMyNzY3KS0xKQojZGVmaW5lIFVJTlQxNl9NQVggICAgICAgICAgVUlOVDE2X0MoNjU1MzUpCiMgZGVmaW5lIF9fSU5UX0xFQVNUMTZfTUlOICAgSU5UMTZfTUlOCiMgZGVmaW5lIF9fSU5UX0xFQVNUMTZfTUFYICAgSU5UMTZfTUFYCiMgZGVmaW5lIF9fVUlOVF9MRUFTVDE2X01BWCBVSU5UMTZfTUFYCiMgZGVmaW5lIF9fSU5UX0xFQVNUOF9NSU4gICAgSU5UMTZfTUlOCiMgZGVmaW5lIF9fSU5UX0xFQVNUOF9NQVggICAgSU5UMTZfTUFYCiMgZGVmaW5lIF9fVUlOVF9MRUFTVDhfTUFYICBVSU5UMTZfTUFYCiNlbmRpZiAvKiBfX0lOVDE2X1RZUEVfXyAqLwoKI2lmZGVmIF9fSU5UX0xFQVNUMTZfTUlOCiMgZGVmaW5lIElOVF9MRUFTVDE2X01JTiAgIF9fSU5UX0xFQVNUMTZfTUlOCiMgZGVmaW5lIElOVF9MRUFTVDE2X01BWCAgIF9fSU5UX0xFQVNUMTZfTUFYCiMgZGVmaW5lIFVJTlRfTEVBU1QxNl9NQVggX19VSU5UX0xFQVNUMTZfTUFYCiMgZGVmaW5lIElOVF9GQVNUMTZfTUlOICAgIF9fSU5UX0xFQVNUMTZfTUlOCiMgZGVmaW5lIElOVF9GQVNUMTZfTUFYICAgIF9fSU5UX0xFQVNUMTZfTUFYCiMgZGVmaW5lIFVJTlRfRkFTVDE2X01BWCAgX19VSU5UX0xFQVNUMTZfTUFYCiNlbmRpZiAvKiBfX0lOVF9MRUFTVDE2X01JTiAqLwoKCiNpZmRlZiBfX0lOVDhfVFlQRV9fCiMgZGVmaW5lIElOVDhfTUFYICAgICAgICAgICAgSU5UOF9DKDEyNykKIyBkZWZpbmUgSU5UOF9NSU4gICAgICAgICAgKC1JTlQ4X0MoMTI3KS0xKQojIGRlZmluZSBVSU5UOF9NQVggICAgICAgICAgVUlOVDhfQygyNTUpCiMgZGVmaW5lIF9fSU5UX0xFQVNUOF9NSU4gICAgSU5UOF9NSU4KIyBkZWZpbmUgX19JTlRfTEVBU1Q4X01BWCAgICBJTlQ4X01BWAojIGRlZmluZSBfX1VJTlRfTEVBU1Q4X01BWCAgVUlOVDhfTUFYCiNlbmRpZiAvKiBfX0lOVDhfVFlQRV9fICovCgojaWZkZWYgX19JTlRfTEVBU1Q4X01JTgojIGRlZmluZSBJTlRfTEVBU1Q4X01JTiAgIF9fSU5UX0xFQVNUOF9NSU4KIyBkZWZpbmUgSU5UX0xFQVNUOF9NQVggICBfX0lOVF9MRUFTVDhfTUFYCiMgZGVmaW5lIFVJTlRfTEVBU1Q4X01BWCBfX1VJTlRfTEVBU1Q4X01BWAojIGRlZmluZSBJTlRfRkFTVDhfTUlOICAgIF9fSU5UX0xFQVNUOF9NSU4KIyBkZWZpbmUgSU5UX0ZBU1Q4X01BWCAgICBfX0lOVF9MRUFTVDhfTUFYCiMgZGVmaW5lIFVJTlRfRkFTVDhfTUFYICBfX1VJTlRfTEVBU1Q4X01BWAojZW5kaWYgLyogX19JTlRfTEVBU1Q4X01JTiAqLwoKLyogU29tZSB1dGlsaXR5IG1hY3JvcyAqLwojZGVmaW5lICBfX0lOVE5fTUlOKG4pICBfX3N0ZGludF9qb2luMyggSU5ULCBuLCBfTUlOKQojZGVmaW5lICBfX0lOVE5fTUFYKG4pICBfX3N0ZGludF9qb2luMyggSU5ULCBuLCBfTUFYKQojZGVmaW5lIF9fVUlOVE5fTUFYKG4pICBfX3N0ZGludF9qb2luMyhVSU5ULCBuLCBfTUFYKQojZGVmaW5lICBfX0lOVE5fQyhuLCB2KSBfX3N0ZGludF9qb2luMyggSU5ULCBuLCBfQyh2KSkKI2RlZmluZSBfX1VJTlROX0MobiwgdikgX19zdGRpbnRfam9pbjMoVUlOVCwgbiwgX0ModikpCgovKiBDOTkgNy4xOC4yLjQgTGltaXRzIG9mIGludGVnZXIgdHlwZXMgY2FwYWJsZSBvZiBob2xkaW5nIG9iamVjdCBwb2ludGVycy4gKi8KLyogQzk5IDcuMTguMyBMaW1pdHMgb2Ygb3RoZXIgaW50ZWdlciB0eXBlcy4gKi8KCiNkZWZpbmUgIElOVFBUUl9NSU4gICgtX19JTlRQVFJfTUFYX18tMSkKI2RlZmluZSAgSU5UUFRSX01BWCAgICBfX0lOVFBUUl9NQVhfXwojZGVmaW5lIFVJTlRQVFJfTUFYICAgX19VSU5UUFRSX01BWF9fCiNkZWZpbmUgUFRSRElGRl9NSU4gKC1fX1BUUkRJRkZfTUFYX18tMSkKI2RlZmluZSBQVFJESUZGX01BWCAgIF9fUFRSRElGRl9NQVhfXwojZGVmaW5lICAgIFNJWkVfTUFYICAgICAgX19TSVpFX01BWF9fCgovKiBJU085ODk5OjIwMTEgNy4yMCAoQzExIEFubmV4IEspOiBEZWZpbmUgUlNJWkVfTUFYIGlmIF9fU1REQ19XQU5UX0xJQl9FWFQxX18KICogaXMgZW5hYmxlZC4gKi8KI2lmIGRlZmluZWQoX19TVERDX1dBTlRfTElCX0VYVDFfXykgJiYgX19TVERDX1dBTlRfTElCX0VYVDFfXyA+PSAxCiNkZWZpbmUgICBSU0laRV9NQVggICAgICAgICAgICAoU0laRV9NQVggPj4gMSkKI2VuZGlmCgovKiBDOTkgNy4xOC4yLjUgTGltaXRzIG9mIGdyZWF0ZXN0LXdpZHRoIGludGVnZXIgdHlwZXMuICovCiNkZWZpbmUgIElOVE1BWF9NSU4gKC1fX0lOVE1BWF9NQVhfXy0xKQojZGVmaW5lICBJTlRNQVhfTUFYICAgX19JTlRNQVhfTUFYX18KI2RlZmluZSBVSU5UTUFYX01BWCAgX19VSU5UTUFYX01BWF9fCgovKiBDOTkgNy4xOC4zIExpbWl0cyBvZiBvdGhlciBpbnRlZ2VyIHR5cGVzLiAqLwojZGVmaW5lIFNJR19BVE9NSUNfTUlOIF9fSU5UTl9NSU4oX19TSUdfQVRPTUlDX1dJRFRIX18pCiNkZWZpbmUgU0lHX0FUT01JQ19NQVggX19JTlROX01BWChfX1NJR19BVE9NSUNfV0lEVEhfXykKI2lmZGVmIF9fV0lOVF9VTlNJR05FRF9fCiMgZGVmaW5lIFdJTlRfTUlOICAgICAgIF9fVUlOVE5fQyhfX1dJTlRfV0lEVEhfXywgMCkKIyBkZWZpbmUgV0lOVF9NQVggICAgICAgX19VSU5UTl9NQVgoX19XSU5UX1dJRFRIX18pCiNlbHNlCiMgZGVmaW5lIFdJTlRfTUlOICAgICAgIF9fSU5UTl9NSU4oX19XSU5UX1dJRFRIX18pCiMgZGVmaW5lIFdJTlRfTUFYICAgICAgIF9fSU5UTl9NQVgoX19XSU5UX1dJRFRIX18pCiNlbmRpZgoKI2lmbmRlZiBXQ0hBUl9NQVgKIyBkZWZpbmUgV0NIQVJfTUFYIF9fV0NIQVJfTUFYX18KI2VuZGlmCiNpZm5kZWYgV0NIQVJfTUlOCiMgaWYgX19XQ0hBUl9NQVhfXyA9PSBfX0lOVE5fTUFYKF9fV0NIQVJfV0lEVEhfXykKIyAgZGVmaW5lIFdDSEFSX01JTiBfX0lOVE5fTUlOKF9fV0NIQVJfV0lEVEhfXykKIyBlbHNlCiMgIGRlZmluZSBXQ0hBUl9NSU4gX19VSU5UTl9DKF9fV0NIQVJfV0lEVEhfXywgMCkKIyBlbmRpZgojZW5kaWYKCi8qIDcuMTguNC4yIE1hY3JvcyBmb3IgZ3JlYXRlc3Qtd2lkdGggaW50ZWdlciBjb25zdGFudHMuICovCiNkZWZpbmUgIElOVE1BWF9DKHYpIF9faW50X2ModiwgIF9fSU5UTUFYX0NfU1VGRklYX18pCiNkZWZpbmUgVUlOVE1BWF9DKHYpIF9faW50X2ModiwgX19VSU5UTUFYX0NfU1VGRklYX18pCgojZW5kaWYgLyogX19TVERDX0hPU1RFRF9fICovCiNlbmRpZiAvKiBfX0NMQU5HX1NURElOVF9IICovCgB3YXNtX3NpbWQxMjguaAAvKj09PS0tIGNvbXBsZXggLS0tIE9wZW5NUCBjb21wbGV4IHdyYXBwZXIgZm9yIHRhcmdldCByZWdpb25zIC0tLS0tLS0tLSBjKysgLT09PQogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwoKI2lmbmRlZiBfX0NMQU5HX09QRU5NUF9DT01QTEVYX0hfXwojZGVmaW5lIF9fQ0xBTkdfT1BFTk1QX0NPTVBMRVhfSF9fCgojaWZuZGVmIF9PUEVOTVAKI2Vycm9yICJUaGlzIGZpbGUgaXMgZm9yIE9wZW5NUCBjb21waWxhdGlvbiBvbmx5LiIKI2VuZGlmCgovLyBXZSByZXF1aXJlIG1hdGggZnVuY3Rpb25zIGluIHRoZSBjb21wbGV4IGJ1aWx0aW5zIGJlbG93LgojaW5jbHVkZSA8bWF0aC5oPgoKI2lmZGVmIF9fTlZQVFhfXwojZGVmaW5lIF9fT1BFTk1QX05WUFRYX18KI2luY2x1ZGUgPF9fY2xhbmdfY3VkYV9jb21wbGV4X2J1aWx0aW5zLmg+CiN1bmRlZiBfX09QRU5NUF9OVlBUWF9fCiNlbmRpZgoKI2lmZGVmIF9fQU1ER0NOX18KI2RlZmluZSBfX09QRU5NUF9BTURHQ05fXwojaW5jbHVkZSA8X19jbGFuZ19jdWRhX2NvbXBsZXhfYnVpbHRpbnMuaD4KI3VuZGVmIF9fT1BFTk1QX0FNREdDTl9fCiNlbmRpZgoKI2VuZGlmCgovLyBHcmFiIHRoZSBob3N0IGhlYWRlciB0b28uCiNpbmNsdWRlX25leHQgPGNvbXBsZXguaD4KAHBwY193cmFwcGVycy9lbW1pbnRyaW4uaAAvKj09PS0tLS0gcG1taW50cmluLmggLSBJbXBsZW1lbnRhdGlvbiBvZiBTU0UzIGludHJpbnNpY3Mgb24gUG93ZXJQQyAtLS0tLS0tPT09CiAqCiAqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCiAqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCgovKiBJbXBsZW1lbnRlZCBmcm9tIHRoZSBzcGVjaWZpY2F0aW9uIGluY2x1ZGVkIGluIHRoZSBJbnRlbCBDKysgQ29tcGlsZXIKICAgVXNlciBHdWlkZSBhbmQgUmVmZXJlbmNlLCB2ZXJzaW9uIDkuMC4gICovCgojaWZuZGVmIE5PX1dBUk5fWDg2X0lOVFJJTlNJQ1MKLyogVGhpcyBoZWFkZXIgaXMgZGlzdHJpYnV0ZWQgdG8gc2ltcGxpZnkgcG9ydGluZyB4ODZfNjQgY29kZSB0aGF0CiAgIG1ha2VzIGV4cGxpY2l0IHVzZSBvZiBJbnRlbCBpbnRyaW5zaWNzIHRvIHBvd2VycGM2NGxlLgogICBJdCBpcyB0aGUgdXNlcidzIHJlc3BvbnNpYmlsaXR5IHRvIGRldGVybWluZSBpZiB0aGUgcmVzdWx0cyBhcmUKICAgYWNjZXB0YWJsZSBhbmQgbWFrZSBhZGRpdGlvbmFsIGNoYW5nZXMgYXMgbmVjZXNzYXJ5LgogICBOb3RlIHRoYXQgbXVjaCBjb2RlIHRoYXQgdXNlcyBJbnRlbCBpbnRyaW5zaWNzIGNhbiBiZSByZXdyaXR0ZW4gaW4KICAgc3RhbmRhcmQgQyBvciBHTlUgQyBleHRlbnNpb25zLCB3aGljaCBhcmUgbW9yZSBwb3J0YWJsZSBhbmQgYmV0dGVyCiAgIG9wdGltaXplZCBhY3Jvc3MgbXVsdGlwbGUgdGFyZ2V0cy4KCiAgIEluIHRoZSBzcGVjaWZpYyBjYXNlIG9mIFg4NiBTU0UzIGludHJpbnNpY3MsIHRoZSBQb3dlclBDIFZNWC9WU1ggSVNBCiAgIGlzIGEgZ29vZCBtYXRjaCBmb3IgbW9zdCBTSU1EIG9wZXJhdGlvbnMuICBIb3dldmVyIHRoZSBIb3Jpem9udGFsCiAgIGFkZC9zdWIgcmVxdWlyZXMgdGhlIGRhdGEgcGFpcnMgYmUgcGVybXV0ZWQgaW50byBhIHNlcGFyYXRlCiAgIHJlZ2lzdGVycyB3aXRoIHZlcnRpY2FsIGV2ZW4vb2RkIGFsaWdubWVudCBmb3IgdGhlIG9wZXJhdGlvbi4KICAgQW5kIHRoZSBhZGRzdWIgb3BlcmF0aW9uIHJlcXVpcmVzIHRoZSBzaWduIG9mIG9ubHkgdGhlIGV2ZW4gbnVtYmVyZWQKICAgZWxlbWVudHMgYmUgZmxpcHBlZCAoeG9yZWQgd2l0aCAtMC4wKS4KICAgRm9yIGxhcmdlciBibG9ja3Mgb2YgY29kZSB1c2luZyB0aGVzZSBpbnRyaW5zaWMgaW1wbGVtZW50YXRpb25zLAogICB0aGUgY29tcGlsZXIgYmUgc2hvdWxkIGJlIGFibGUgdG8gc2NoZWR1bGUgaW5zdHJ1Y3Rpb25zIHRvIGF2b2lkCiAgIGFkZGl0aW9uYWwgbGF0ZW5jeS4KCiAgIEluIHRoZSBzcGVjaWZpYyBjYXNlIG9mIHRoZSBtb25pdG9yIGFuZCBtd2FpdCBpbnN0cnVjdGlvbnMgdGhlcmUgYXJlCiAgIG5vIGRpcmVjdCBlcXVpdmFsZW50IGluIHRoZSBQb3dlcklTQSBhdCB0aGlzIHRpbWUuICBTbyB0aG9zZQogICBpbnRyaW5zaWNzIGFyZSBub3QgaW1wbGVtZW50ZWQuICAqLwojZXJyb3IgIlBsZWFzZSByZWFkIGNvbW1lbnQgYWJvdmUuICBVc2UgLUROT19XQVJOX1g4Nl9JTlRSSU5TSUNTIHRvIGRpc2FibGUgdGhpcyB3YXJuaW5nLiIKI2VuZGlmCgojaWZuZGVmIFBNTUlOVFJJTl9IXwojZGVmaW5lIFBNTUlOVFJJTl9IXwoKI2lmIGRlZmluZWQoX19wcGM2NF9fKSAmJiAoZGVmaW5lZChfX2xpbnV4X18pIHx8IGRlZmluZWQoX19GcmVlQlNEX18pKQoKLyogV2UgbmVlZCBkZWZpbml0aW9ucyBmcm9tIHRoZSBTU0UyIGFuZCBTU0UgaGVhZGVyIGZpbGVzKi8KI2luY2x1ZGUgPGVtbWludHJpbi5oPgoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2FkZHN1Yl9wcyAoX19tMTI4IF9fWCwgX19tMTI4IF9fWSkKewogIGNvbnN0IF9fdjRzZiBldmVuX24wID0gey0wLjAsIDAuMCwgLTAuMCwgMC4wfTsKICBfX3Y0c2YgZXZlbl9uZWdfWSA9IHZlY194b3IoX19ZLCBldmVuX24wKTsKICByZXR1cm4gKF9fbTEyOCkgdmVjX2FkZCAoX19YLCBldmVuX25lZ19ZKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9hZGRzdWJfcGQgKF9fbTEyOGQgX19YLCBfX20xMjhkIF9fWSkKewogIGNvbnN0IF9fdjJkZiBldmVuX24wID0gey0wLjAsIDAuMH07CiAgX192MmRmIGV2ZW5fbmVnX1kgPSB2ZWNfeG9yKF9fWSwgZXZlbl9uMCk7CiAgcmV0dXJuIChfX20xMjhkKSB2ZWNfYWRkIChfX1gsIGV2ZW5fbmVnX1kpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1faGFkZF9wcyAoX19tMTI4IF9fWCwgX19tMTI4IF9fWSkKewogIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgeGZvcm0yID0gewogICAgICAweDAwLCAweDAxLCAweDAyLCAweDAzLAogICAgICAweDA4LCAweDA5LCAweDBBLCAweDBCLAogICAgICAweDEwLCAweDExLCAweDEyLCAweDEzLAogICAgICAweDE4LCAweDE5LCAweDFBLCAweDFCCiAgICB9OwogIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgeGZvcm0xID0gewogICAgICAweDA0LCAweDA1LCAweDA2LCAweDA3LAogICAgICAweDBDLCAweDBELCAweDBFLCAweDBGLAogICAgICAweDE0LCAweDE1LCAweDE2LCAweDE3LAogICAgICAweDFDLCAweDFELCAweDFFLCAweDFGCiAgICB9OwogIHJldHVybiAoX19tMTI4KSB2ZWNfYWRkICh2ZWNfcGVybSAoKF9fdjRzZikgX19YLCAoX192NHNmKSBfX1ksIHhmb3JtMiksCgkJCSAgIHZlY19wZXJtICgoX192NHNmKSBfX1gsIChfX3Y0c2YpIF9fWSwgeGZvcm0xKSk7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9oc3ViX3BzIChfX20xMjggX19YLCBfX20xMjggX19ZKQp7CiAgX192ZWN0b3IgdW5zaWduZWQgY2hhciB4Zm9ybTIgPSB7CiAgICAgIDB4MDAsIDB4MDEsIDB4MDIsIDB4MDMsCiAgICAgIDB4MDgsIDB4MDksIDB4MEEsIDB4MEIsCiAgICAgIDB4MTAsIDB4MTEsIDB4MTIsIDB4MTMsCiAgICAgIDB4MTgsIDB4MTksIDB4MUEsIDB4MUIKICAgIH07CiAgX192ZWN0b3IgdW5zaWduZWQgY2hhciB4Zm9ybTEgPSB7CiAgICAgIDB4MDQsIDB4MDUsIDB4MDYsIDB4MDcsCiAgICAgIDB4MEMsIDB4MEQsIDB4MEUsIDB4MEYsCiAgICAgIDB4MTQsIDB4MTUsIDB4MTYsIDB4MTcsCiAgICAgIDB4MUMsIDB4MUQsIDB4MUUsIDB4MUYKICAgIH07CiAgcmV0dXJuIChfX20xMjgpIHZlY19zdWIgKHZlY19wZXJtICgoX192NHNmKSBfX1gsIChfX3Y0c2YpIF9fWSwgeGZvcm0yKSwKCQkJICAgdmVjX3Blcm0gKChfX3Y0c2YpIF9fWCwgKF9fdjRzZikgX19ZLCB4Zm9ybTEpKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9oYWRkX3BkIChfX20xMjhkIF9fWCwgX19tMTI4ZCBfX1kpCnsKICByZXR1cm4gKF9fbTEyOGQpIHZlY19hZGQgKHZlY19tZXJnZWggKChfX3YyZGYpIF9fWCwgKF9fdjJkZilfX1kpLAoJCQkJICB2ZWNfbWVyZ2VsICgoX192MmRmKSBfX1gsIChfX3YyZGYpX19ZKSk7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1faHN1Yl9wZCAoX19tMTI4ZCBfX1gsIF9fbTEyOGQgX19ZKQp7CiAgcmV0dXJuIChfX20xMjhkKSB2ZWNfc3ViICh2ZWNfbWVyZ2VoICgoX192MmRmKSBfX1gsIChfX3YyZGYpX19ZKSwKCQkJICAgIHZlY19tZXJnZWwgKChfX3YyZGYpIF9fWCwgKF9fdjJkZilfX1kpKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX21vdmVoZHVwX3BzIChfX20xMjggX19YKQp7CiAgcmV0dXJuIChfX20xMjgpdmVjX21lcmdlbyAoKF9fdjRzdSlfX1gsIChfX3Y0c3UpX19YKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX21vdmVsZHVwX3BzIChfX20xMjggX19YKQp7CiAgcmV0dXJuIChfX20xMjgpdmVjX21lcmdlZSAoKF9fdjRzdSlfX1gsIChfX3Y0c3UpX19YKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9sb2FkZHVwX3BkIChkb3VibGUgY29uc3QgKl9fUCkKewogIHJldHVybiAoX19tMTI4ZCkgdmVjX3NwbGF0cyAoKl9fUCk7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fbW92ZWR1cF9wZCAoX19tMTI4ZCBfX1gpCnsKICByZXR1cm4gX21tX3NodWZmbGVfcGQgKF9fWCwgX19YLCBfTU1fU0hVRkZMRTIgKDAsMCkpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2xkZHF1X3NpMTI4IChfX20xMjhpIGNvbnN0ICpfX1ApCnsKICByZXR1cm4gKF9fbTEyOGkpICh2ZWNfdnN4X2xkKDAsIChzaWduZWQgaW50IGNvbnN0ICopX19QKSk7Cn0KCi8qIFBPV0VSOCAvIFBPV0VSOSBoYXZlIG5vIGVxdWl2YWxlbnQgZm9yIF9tbV9tb25pdG9yIG5vciBfbW1fd2FpdC4gICovCgojZWxzZQojaW5jbHVkZV9uZXh0IDxwbW1pbnRyaW4uaD4KI2VuZGlmIC8qIGRlZmluZWQoX19wcGM2NF9fKSAmJiAoZGVmaW5lZChfX2xpbnV4X18pIHx8IGRlZmluZWQoX19GcmVlQlNEX18pKSAgIFwKICAgICAgICAqLwoKI2VuZGlmIC8qIFBNTUlOVFJJTl9IXyAqLwoAcHBjX3dyYXBwZXJzL3htbWludHJpbi5oAHNhbml0aXplci91YnNhbl9pbnRlcmZhY2UuaABNaXNzaW5nIGEgY29tbWEgb3IgJ30nIGFmdGVyIGFuIG9iamVjdCBtZW1iZXIuAC8vAFs6XmNudHJsOl0AaGVsbG8sIHdvcmxkAGZhaWwATlVMTCBzdGF0ZSBpbiBSdW5TdGF0ZU9uQnl0ZQBTaW1wbGlmeVdhbGtlcjo6U2hvcnRWaXNpdCBjYWxsZWQAQwBHcmFudGhhAExpc3UATmQATm8AT2xkX05vcnRoX0FyYWJpYW4AT2xkX1Blcm1pYwBQYWhhd2hfSG1vbmcAUGMAUGkAUG8AJXMAL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1MC90c2NfZnJlcV9raHoAaW5kZXggPCBlaGRyXy0+ZV9waG51bQBsaW5rX2Jhc2VfIDwgc3ltLT5zdF92YWx1ZQBhcmVuYS0+YWxsb2NhdGlvbl9jb3VudCA+IDAAZi0+aGVhZGVyLm1hZ2ljID09IE1hZ2ljKGtNYWdpY0FsbG9jYXRlZCwgJmYtPmhlYWRlcikAdgB1bnNpZ25lZCBjaGFyAGkAeQBxdQAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoAdHJlZS0+bGVuZ3RoACwgZW5kID0gAF0uZW5kX3BvcyAARW5xdWV1ZSB0byBsaXN0IGZhaWxlZABTaWduYWwgb24gAGV4dGVybmFsL2JvcmluZ3NzbC9zcmMvY3J5cHRvL2ZpcHNtb2R1bGUvYm4vc3FydC5jAFJTQSBTaWduIEtBVABjb21waWxlcjogbi9hAGt5dGhlLnByb3RvLkt6aXBJbmZvLkNvcnBvcmFFbnRyeS5rZXkAS1lUSEVfVk5BTUVTAGZyZWVzdGFuZGluZwBfX2NsYW5nX2N1ZGFfdGV4dHVyZV9pbnRyaW5zaWNzLmgAYXJtX212ZS5oAGF2eDUxMnZsZnAxNmludHJpbi5oAC8qPT09LS0tLSBjZXRpbnRyaW4uaCAtIENFVCBpbnRyaW5zaWMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKi8KCiNpZm5kZWYgX19JTU1JTlRSSU5fSAojZXJyb3IgIk5ldmVyIHVzZSA8Y2V0aW50cmluLmg+IGRpcmVjdGx5OyBpbmNsdWRlIDxpbW1pbnRyaW4uaD4gaW5zdGVhZC4iCiNlbmRpZgoKI2lmbmRlZiBfX0NFVElOVFJJTl9ICiNkZWZpbmUgX19DRVRJTlRSSU5fSAoKLyogRGVmaW5lIHRoZSBkZWZhdWx0IGF0dHJpYnV0ZXMgZm9yIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlLiAqLwojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygic2hzdGsiKSkpCgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUyBfaW5jc3NwZChpbnQgX19hKSB7CiAgX19idWlsdGluX2lhMzJfaW5jc3NwZChfX2EpOwp9CgojaWZkZWYgX194ODZfNjRfXwpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUyBfaW5jc3NwcSh1bnNpZ25lZCBsb25nIGxvbmcgX19hKSB7CiAgX19idWlsdGluX2lhMzJfaW5jc3NwcShfX2EpOwp9CiNlbmRpZiAvKiBfX3g4Nl82NF9fICovCgojaWZkZWYgX194ODZfNjRfXwpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUyBfaW5jX3NzcCh1bnNpZ25lZCBpbnQgX19hKSB7CiAgX19idWlsdGluX2lhMzJfaW5jc3NwcShfX2EpOwp9CiNlbHNlIC8qIF9feDg2XzY0X18gKi8Kc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMgX2luY19zc3AodW5zaWduZWQgaW50IF9fYSkgewogIF9fYnVpbHRpbl9pYTMyX2luY3NzcGQoKGludClfX2EpOwp9CiNlbmRpZiAvKiBfX3g4Nl82NF9fICovCgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTIF9yZHNzcGQodW5zaWduZWQgaW50IF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9yZHNzcGQoX19hKTsKfQoKI2lmZGVmIF9feDg2XzY0X18Kc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgbG9uZyBsb25nIF9fREVGQVVMVF9GTl9BVFRSUyBfcmRzc3BxKHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX2lhMzJfcmRzc3BxKF9fYSk7Cn0KI2VuZGlmIC8qIF9feDg2XzY0X18gKi8KCiNpZmRlZiBfX3g4Nl82NF9fCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0RFRkFVTFRfRk5fQVRUUlMgX2dldF9zc3Aodm9pZCkgewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9yZHNzcHEoMCk7Cn0KI2Vsc2UgLyogX194ODZfNjRfXyAqLwpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTIF9nZXRfc3NwKHZvaWQpIHsKICByZXR1cm4gX19idWlsdGluX2lhMzJfcmRzc3BkKDApOwp9CiNlbmRpZiAvKiBfX3g4Nl82NF9fICovCgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUyBfc2F2ZXByZXZzc3AoKSB7CiAgX19idWlsdGluX2lhMzJfc2F2ZXByZXZzc3AoKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMgX3JzdG9yc3NwKHZvaWQgKiBfX3ApIHsKICBfX2J1aWx0aW5faWEzMl9yc3RvcnNzcChfX3ApOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUyBfd3Jzc2QodW5zaWduZWQgaW50IF9fYSwgdm9pZCAqIF9fcCkgewogIF9fYnVpbHRpbl9pYTMyX3dyc3NkKF9fYSwgX19wKTsKfQoKI2lmZGVmIF9feDg2XzY0X18Kc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMgX3dyc3NxKHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZvaWQgKiBfX3ApIHsKICBfX2J1aWx0aW5faWEzMl93cnNzcShfX2EsIF9fcCk7Cn0KI2VuZGlmIC8qIF9feDg2XzY0X18gKi8KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTIF93cnVzc2QodW5zaWduZWQgaW50IF9fYSwgdm9pZCAqIF9fcCkgewogIF9fYnVpbHRpbl9pYTMyX3dydXNzZChfX2EsIF9fcCk7Cn0KCiNpZmRlZiBfX3g4Nl82NF9fCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTIF93cnVzc3EodW5zaWduZWQgbG9uZyBsb25nIF9fYSwgdm9pZCAqIF9fcCkgewogIF9fYnVpbHRpbl9pYTMyX3dydXNzcShfX2EsIF9fcCk7Cn0KI2VuZGlmIC8qIF9feDg2XzY0X18gKi8KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTIF9zZXRzc2JzeSgpIHsKICBfX2J1aWx0aW5faWEzMl9zZXRzc2JzeSgpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUyBfY2xyc3Nic3kodm9pZCAqIF9fcCkgewogIF9fYnVpbHRpbl9pYTMyX2NscnNzYnN5KF9fcCk7Cn0KCiN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlMKCiNlbmRpZiAvKiBfX0NFVElOVFJJTl9IICovCgBmbWFpbnRyaW4uaABoZXhhZ29uX3R5cGVzLmgALyo9PT0tLS0tIG1tX21hbGxvYy5oIC0gQWxsb2NhdGluZyBhbmQgRnJlZWluZyBBbGlnbmVkIE1lbW9yeSBCbG9ja3MgLS0tLS0tLT09PQogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwoKI2lmbmRlZiBfX01NX01BTExPQ19ICiNkZWZpbmUgX19NTV9NQUxMT0NfSAoKI2luY2x1ZGUgPHN0ZGxpYi5oPgoKI2lmZGVmIF9XSU4zMgojaW5jbHVkZSA8bWFsbG9jLmg+CiNlbHNlCiNpZm5kZWYgX19jcGx1c3BsdXMKZXh0ZXJuIGludCBwb3NpeF9tZW1hbGlnbih2b2lkICoqX19tZW1wdHIsIHNpemVfdCBfX2FsaWdubWVudCwgc2l6ZV90IF9fc2l6ZSk7CiNlbHNlCi8vIFNvbWUgc3lzdGVtcyAoZS5nLiB0aG9zZSB3aXRoIEdOVSBsaWJjKSBkZWNsYXJlIHBvc2l4X21lbWFsaWduIHdpdGggYW4KLy8gZXhjZXB0aW9uIHNwZWNpZmllci4gVmlhIGFuICJlZ3JlZ2lvdXMgd29ya2Fyb3VuZCIgaW4KLy8gU2VtYTo6Q2hlY2tFcXVpdmFsZW50RXhjZXB0aW9uU3BlYywgQ2xhbmcgYWNjZXB0cyB0aGUgZm9sbG93aW5nIGFzIGEgdmFsaWQKLy8gcmVkZWNsYXJhdGlvbiBvZiBnbGliYydzIGRlY2xhcmF0aW9uLgpleHRlcm4gIkMiIGludCBwb3NpeF9tZW1hbGlnbih2b2lkICoqX19tZW1wdHIsIHNpemVfdCBfX2FsaWdubWVudCwgc2l6ZV90IF9fc2l6ZSk7CiNlbmRpZgojZW5kaWYKCiNpZiAhKGRlZmluZWQoX1dJTjMyKSAmJiBkZWZpbmVkKF9tbV9tYWxsb2MpKQpzdGF0aWMgX19pbmxpbmVfXyB2b2lkICpfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbWFsbG9jX18pKQpfbW1fbWFsbG9jKHNpemVfdCBfX3NpemUsIHNpemVfdCBfX2FsaWduKQp7CiAgaWYgKF9fYWxpZ24gPT0gMSkgewogICAgcmV0dXJuIG1hbGxvYyhfX3NpemUpOwogIH0KCiAgaWYgKCEoX19hbGlnbiAmIChfX2FsaWduIC0gMSkpICYmIF9fYWxpZ24gPCBzaXplb2Yodm9pZCAqKSkKICAgIF9fYWxpZ24gPSBzaXplb2Yodm9pZCAqKTsKCiAgdm9pZCAqX19tYWxsb2NlZE1lbW9yeTsKI2lmIGRlZmluZWQoX19NSU5HVzMyX18pCiAgX19tYWxsb2NlZE1lbW9yeSA9IF9fbWluZ3dfYWxpZ25lZF9tYWxsb2MoX19zaXplLCBfX2FsaWduKTsKI2VsaWYgZGVmaW5lZChfV0lOMzIpCiAgX19tYWxsb2NlZE1lbW9yeSA9IF9hbGlnbmVkX21hbGxvYyhfX3NpemUsIF9fYWxpZ24pOwojZWxzZQogIGlmIChwb3NpeF9tZW1hbGlnbigmX19tYWxsb2NlZE1lbW9yeSwgX19hbGlnbiwgX19zaXplKSkKICAgIHJldHVybiAwOwojZW5kaWYKCiAgcmV0dXJuIF9fbWFsbG9jZWRNZW1vcnk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKX21tX2ZyZWUodm9pZCAqX19wKQp7CiNpZiBkZWZpbmVkKF9fTUlOR1czMl9fKQogIF9fbWluZ3dfYWxpZ25lZF9mcmVlKF9fcCk7CiNlbGlmIGRlZmluZWQoX1dJTjMyKQogIF9hbGlnbmVkX2ZyZWUoX19wKTsKI2Vsc2UKICBmcmVlKF9fcCk7CiNlbmRpZgp9CiNlbmRpZgoKI2VuZGlmIC8qIF9fTU1fTUFMTE9DX0ggKi8KAG1vdmRpcmludHJpbi5oAHVud2luZC5oAEFkZEZvbGRlZFJhbmdlIHJlY3Vyc2VzIHRvbyBtdWNoLgBBbnkAWzpedXBwZXI6XQBpbnZhbGlkIHBlcmwgb3BlcmF0b3IAQ2hha21hAExhbwBMYXRpbgBNYW5pY2hhZWFuAFRhZ2JhbndhAFRhaV9WaWV0AFlpAFoAQ2hlY2sgJXMgZmFpbGVkOiAlcwB0b28gZmV3IGxldmVscyBpbiBOZXh0KCkAb3BlcmF0b3IAbmV3AC09AC89AGdlAHN0ZAA9JwB0cmVlLT5lbmQoKSA8PSB0cmVlLT5jYXBhY2l0eSgpAFRyeUxvY2sgZmFpbGVkIABzLT53YWl0cCA9PSBudWxscHRyIHx8IHMtPndhaXRwID09IHdhaXRwIHx8IHMtPnN1cHByZXNzX2ZhdGFsX2Vycm9ycwBwdy0+c2tpcCA9PSBudWxscHRyAEVDRFNBIHZlcmlmaWNhdGlvbiBLQVQgZmFpbGVkLgoATklTVCBQLTIyNABreXRoZS9wcm90by9jb21tb24ucHJvdG8Aa3l0aGUucHJvdG8uY29tbW9uLlN5bWJvbEluZm8ucXVhbGlmaWVkX25hbWUAW14tXS4qXC4oY3xpKQBbXi1dLipcLihzfFN8c3gpAGMtaGVhZGVyAC0ALW8ALyo9PT0tLS0tIGFtbWludHJpbi5oIC0gU1NFNGEgaW50cmluc2ljcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwoKI2lmbmRlZiBfX0FNTUlOVFJJTl9ICiNkZWZpbmUgX19BTU1JTlRSSU5fSAoKI2lmICFkZWZpbmVkKF9faTM4Nl9fKSAmJiAhZGVmaW5lZChfX3g4Nl82NF9fKQojZXJyb3IgIlRoaXMgaGVhZGVyIGlzIG9ubHkgbWVhbnQgdG8gYmUgdXNlZCBvbiB4ODYgYW5kIHg2NCBhcmNoaXRlY3R1cmUiCiNlbmRpZgoKI2luY2x1ZGUgPHBtbWludHJpbi5oPgoKLyogRGVmaW5lIHRoZSBkZWZhdWx0IGF0dHJpYnV0ZXMgZm9yIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlLiAqLwojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUyBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oInNzZTRhIiksIF9fbWluX3ZlY3Rvcl93aWR0aF9fKDEyOCkpKQoKLy8vIEV4dHJhY3RzIHRoZSBzcGVjaWZpZWQgYml0cyBmcm9tIHRoZSBsb3dlciA2NCBiaXRzIG9mIHRoZSAxMjgtYml0Ci8vLyAgICBpbnRlZ2VyIHZlY3RvciBvcGVyYW5kIGF0IHRoZSBpbmRleCBcYSBpZHggYW5kIG9mIHRoZSBsZW5ndGggXGEgbGVuLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBcY29kZQovLy8gX19tMTI4aSBfbW1fZXh0cmFjdGlfc2k2NChfX20xMjhpIHgsIGNvbnN0IGludCBsZW4sIGNvbnN0IGludCBpZHgpOwovLy8gXGVuZGNvZGUKLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IEVYVFJRIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIHgKLy8vICAgIFRoZSB2YWx1ZSBmcm9tIHdoaWNoIGJpdHMgYXJlIGV4dHJhY3RlZC4KLy8vIFxwYXJhbSBsZW4KLy8vICAgIEJpdHMgWzU6MF0gc3BlY2lmeSB0aGUgbGVuZ3RoOyB0aGUgb3RoZXIgYml0cyBhcmUgaWdub3JlZC4gSWYgYml0cyBbNTowXQovLy8gICAgYXJlIHplcm8sIHRoZSBsZW5ndGggaXMgaW50ZXJwcmV0ZWQgYXMgNjQuCi8vLyBccGFyYW0gaWR4Ci8vLyAgICBCaXRzIFs1OjBdIHNwZWNpZnkgdGhlIGluZGV4IG9mIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQ7IHRoZSBvdGhlcgovLy8gICAgYml0cyBhcmUgaWdub3JlZC4gSWYgdGhlIHN1bSBvZiB0aGUgaW5kZXggYW5kIGxlbmd0aCBpcyBncmVhdGVyIHRoYW4gNjQsCi8vLyAgICB0aGUgcmVzdWx0IGlzIHVuZGVmaW5lZC4gSWYgdGhlIGxlbmd0aCBhbmQgaW5kZXggYXJlIGJvdGggemVybywgYml0cwovLy8gICAgWzYzOjBdIG9mIHBhcmFtZXRlciBcYSB4IGFyZSBleHRyYWN0ZWQuIElmIHRoZSBsZW5ndGggaXMgemVybyBidXQgdGhlCi8vLyAgICBpbmRleCBpcyBub24temVybywgdGhlIHJlc3VsdCBpcyB1bmRlZmluZWQuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igd2hvc2UgbG93ZXIgNjQgYml0cyBjb250YWluIHRoZSBiaXRzCi8vLyAgICBleHRyYWN0ZWQgZnJvbSB0aGUgc291cmNlIG9wZXJhbmQuCiNkZWZpbmUgX21tX2V4dHJhY3RpX3NpNjQoeCwgbGVuLCBpZHgpIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfZXh0cnFpKChfX3YyZGkpKF9fbTEyOGkpKHgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhcikobGVuKSwgKGNoYXIpKGlkeCkpKQoKLy8vIEV4dHJhY3RzIHRoZSBzcGVjaWZpZWQgYml0cyBmcm9tIHRoZSBsb3dlciA2NCBiaXRzIG9mIHRoZSAxMjgtYml0Ci8vLyAgICBpbnRlZ2VyIHZlY3RvciBvcGVyYW5kIGF0IHRoZSBpbmRleCBhbmQgb2YgdGhlIGxlbmd0aCBzcGVjaWZpZWQgYnkKLy8vICAgIFxhIF9feS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBFWFRSUSA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX3gKLy8vICAgIFRoZSB2YWx1ZSBmcm9tIHdoaWNoIGJpdHMgYXJlIGV4dHJhY3RlZC4KLy8vIFxwYXJhbSBfX3kKLy8vICAgIFNwZWNpZmllcyB0aGUgaW5kZXggb2YgdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdCBhdCBbMTM6OF0gYW5kIHRoZQovLy8gICAgbGVuZ3RoIGF0IFs1OjBdOyBhbGwgb3RoZXIgYml0cyBhcmUgaWdub3JlZC4gSWYgYml0cyBbNTowXSBhcmUgemVybywgdGhlCi8vLyAgICBsZW5ndGggaXMgaW50ZXJwcmV0ZWQgYXMgNjQuIElmIHRoZSBzdW0gb2YgdGhlIGluZGV4IGFuZCBsZW5ndGggaXMKLy8vICAgIGdyZWF0ZXIgdGhhbiA2NCwgdGhlIHJlc3VsdCBpcyB1bmRlZmluZWQuIElmIHRoZSBsZW5ndGggYW5kIGluZGV4IGFyZQovLy8gICAgYm90aCB6ZXJvLCBiaXRzIFs2MzowXSBvZiBwYXJhbWV0ZXIgXGEgX194IGFyZSBleHRyYWN0ZWQuIElmIHRoZSBsZW5ndGgKLy8vICAgIGlzIHplcm8gYnV0IHRoZSBpbmRleCBpcyBub24temVybywgdGhlIHJlc3VsdCBpcyB1bmRlZmluZWQuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIHdob3NlIGxvd2VyIDY0IGJpdHMgY29udGFpbiB0aGUgYml0cyBleHRyYWN0ZWQKLy8vICAgIGZyb20gdGhlIHNvdXJjZSBvcGVyYW5kLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fZXh0cmFjdF9zaTY0KF9fbTEyOGkgX194LCBfX20xMjhpIF9feSkKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9leHRycSgoX192MmRpKV9feCwgKF9fdjE2cWkpX195KTsKfQoKLy8vIEluc2VydHMgYml0cyBvZiBhIHNwZWNpZmllZCBsZW5ndGggZnJvbSB0aGUgc291cmNlIGludGVnZXIgdmVjdG9yCi8vLyAgICBcYSB5IGludG8gdGhlIGxvd2VyIDY0IGJpdHMgb2YgdGhlIGRlc3RpbmF0aW9uIGludGVnZXIgdmVjdG9yIFxhIHggYXQKLy8vICAgIHRoZSBpbmRleCBcYSBpZHggYW5kIG9mIHRoZSBsZW5ndGggXGEgbGVuLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBcY29kZQovLy8gX19tMTI4aSBfbW1faW5zZXJ0aV9zaTY0KF9fbTEyOGkgeCwgX19tMTI4aSB5LCBjb25zdCBpbnQgbGVuLAovLy8gY29uc3QgaW50IGlkeCk7Ci8vLyBcZW5kY29kZQovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gSU5TRVJUUSA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSB4Ci8vLyAgICBUaGUgZGVzdGluYXRpb24gb3BlcmFuZCB3aGVyZSBiaXRzIHdpbGwgYmUgaW5zZXJ0ZWQuIFRoZSBpbnNlcnRlZCBiaXRzCi8vLyAgICBhcmUgZGVmaW5lZCBieSB0aGUgbGVuZ3RoIFxhIGxlbiBhbmQgYnkgdGhlIGluZGV4IFxhIGlkeCBzcGVjaWZ5aW5nIHRoZQovLy8gICAgbGVhc3Qgc2lnbmlmaWNhbnQgYml0LgovLy8gXHBhcmFtIHkKLy8vICAgIFRoZSBzb3VyY2Ugb3BlcmFuZCBjb250YWluaW5nIHRoZSBiaXRzIHRvIGJlIGV4dHJhY3RlZC4gVGhlIGV4dHJhY3RlZAovLy8gICAgYml0cyBhcmUgdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdHMgb2Ygb3BlcmFuZCBcYSB5IG9mIGxlbmd0aCBcYSBsZW4uCi8vLyBccGFyYW0gbGVuCi8vLyAgICBCaXRzIFs1OjBdIHNwZWNpZnkgdGhlIGxlbmd0aDsgdGhlIG90aGVyIGJpdHMgYXJlIGlnbm9yZWQuIElmIGJpdHMgWzU6MF0KLy8vICAgIGFyZSB6ZXJvLCB0aGUgbGVuZ3RoIGlzIGludGVycHJldGVkIGFzIDY0LgovLy8gXHBhcmFtIGlkeAovLy8gICAgQml0cyBbNTowXSBzcGVjaWZ5IHRoZSBpbmRleCBvZiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0OyB0aGUgb3RoZXIKLy8vICAgIGJpdHMgYXJlIGlnbm9yZWQuIElmIHRoZSBzdW0gb2YgdGhlIGluZGV4IGFuZCBsZW5ndGggaXMgZ3JlYXRlciB0aGFuIDY0LAovLy8gICAgdGhlIHJlc3VsdCBpcyB1bmRlZmluZWQuIElmIHRoZSBsZW5ndGggYW5kIGluZGV4IGFyZSBib3RoIHplcm8sIGJpdHMKLy8vICAgIFs2MzowXSBvZiBwYXJhbWV0ZXIgXGEgeSBhcmUgaW5zZXJ0ZWQgaW50byBwYXJhbWV0ZXIgXGEgeC4gSWYgdGhlIGxlbmd0aAovLy8gICAgaXMgemVybyBidXQgdGhlIGluZGV4IGlzIG5vbi16ZXJvLCB0aGUgcmVzdWx0IGlzIHVuZGVmaW5lZC4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBvcmlnaW5hbCBsb3dlciA2NC1iaXRzIG9mCi8vLyAgICBkZXN0aW5hdGlvbiBvcGVyYW5kIFxhIHggd2l0aCB0aGUgc3BlY2lmaWVkIGJpdGZpZWxkcyByZXBsYWNlZCBieSB0aGUKLy8vICAgIGxvd2VyIGJpdHMgb2Ygc291cmNlIG9wZXJhbmQgXGEgeS4gVGhlIHVwcGVyIDY0IGJpdHMgb2YgdGhlIHJldHVybiB2YWx1ZQovLy8gICAgYXJlIHVuZGVmaW5lZC4KI2RlZmluZSBfbW1faW5zZXJ0aV9zaTY0KHgsIHksIGxlbiwgaWR4KSBcCiAgKChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX2luc2VydHFpKChfX3YyZGkpKF9fbTEyOGkpKHgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpKF9fbTEyOGkpKHkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyKShsZW4pLCAoY2hhcikoaWR4KSkpCgovLy8gSW5zZXJ0cyBiaXRzIG9mIGEgc3BlY2lmaWVkIGxlbmd0aCBmcm9tIHRoZSBzb3VyY2UgaW50ZWdlciB2ZWN0b3IKLy8vICAgIFxhIF9feSBpbnRvIHRoZSBsb3dlciA2NCBiaXRzIG9mIHRoZSBkZXN0aW5hdGlvbiBpbnRlZ2VyIHZlY3RvciBcYSBfX3gKLy8vICAgIGF0IHRoZSBpbmRleCBhbmQgb2YgdGhlIGxlbmd0aCBzcGVjaWZpZWQgYnkgXGEgX195LgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IElOU0VSVFEgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX194Ci8vLyAgICBUaGUgZGVzdGluYXRpb24gb3BlcmFuZCB3aGVyZSBiaXRzIHdpbGwgYmUgaW5zZXJ0ZWQuIFRoZSBpbnNlcnRlZCBiaXRzCi8vLyAgICBhcmUgZGVmaW5lZCBieSB0aGUgbGVuZ3RoIGFuZCBieSB0aGUgaW5kZXggb2YgdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdAovLy8gICAgc3BlY2lmaWVkIGJ5IG9wZXJhbmQgXGEgX195LgovLy8gXHBhcmFtIF9feQovLy8gICAgVGhlIHNvdXJjZSBvcGVyYW5kIGNvbnRhaW5pbmcgdGhlIGJpdHMgdG8gYmUgZXh0cmFjdGVkLiBUaGUgZXh0cmFjdGVkCi8vLyAgICBiaXRzIGFyZSB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0cyBvZiBvcGVyYW5kIFxhIF9feSB3aXRoIGxlbmd0aAovLy8gICAgc3BlY2lmaWVkIGJ5IGJpdHMgWzY5OjY0XS4gVGhlc2UgYXJlIGluc2VydGVkIGludG8gdGhlIGRlc3RpbmF0aW9uIGF0IHRoZQovLy8gICAgaW5kZXggc3BlY2lmaWVkIGJ5IGJpdHMgWzc3OjcyXTsgYWxsIG90aGVyIGJpdHMgYXJlIGlnbm9yZWQuIElmIGJpdHMKLy8vICAgIFs2OTo2NF0gYXJlIHplcm8sIHRoZSBsZW5ndGggaXMgaW50ZXJwcmV0ZWQgYXMgNjQuIElmIHRoZSBzdW0gb2YgdGhlCi8vLyAgICBpbmRleCBhbmQgbGVuZ3RoIGlzIGdyZWF0ZXIgdGhhbiA2NCwgdGhlIHJlc3VsdCBpcyB1bmRlZmluZWQuIElmIHRoZQovLy8gICAgbGVuZ3RoIGFuZCBpbmRleCBhcmUgYm90aCB6ZXJvLCBiaXRzIFs2MzowXSBvZiBwYXJhbWV0ZXIgXGEgX195IGFyZQovLy8gICAgaW5zZXJ0ZWQgaW50byBwYXJhbWV0ZXIgXGEgX194LiBJZiB0aGUgbGVuZ3RoIGlzIHplcm8gYnV0IHRoZSBpbmRleCBpcwovLy8gICAgbm9uLXplcm8sIHRoZSByZXN1bHQgaXMgdW5kZWZpbmVkLgovLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIG9yaWdpbmFsIGxvd2VyIDY0LWJpdHMgb2YKLy8vICAgIGRlc3RpbmF0aW9uIG9wZXJhbmQgXGEgX194IHdpdGggdGhlIHNwZWNpZmllZCBiaXRmaWVsZHMgcmVwbGFjZWQgYnkgdGhlCi8vLyAgICBsb3dlciBiaXRzIG9mIHNvdXJjZSBvcGVyYW5kIFxhIF9feS4gVGhlIHVwcGVyIDY0IGJpdHMgb2YgdGhlIHJldHVybgovLy8gICAgdmFsdWUgYXJlIHVuZGVmaW5lZC4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2luc2VydF9zaTY0KF9fbTEyOGkgX194LCBfX20xMjhpIF9feSkKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9pbnNlcnRxKChfX3YyZGkpX194LCAoX192MmRpKV9feSk7Cn0KCi8vLyBTdG9yZXMgYSA2NC1iaXQgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpbiBhIDY0LWJpdCBtZW1vcnkgbG9jYXRpb24uCi8vLyAgICBUbyBtaW5pbWl6ZSBjYWNoaW5nLCB0aGUgZGF0YSBpcyBmbGFnZ2VkIGFzIG5vbi10ZW1wb3JhbCAodW5saWtlbHkgdG8gYmUKLy8vICAgIHVzZWQgYWdhaW4gc29vbikuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gTU9WTlRTRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX3AKLy8vICAgIFRoZSA2NC1iaXQgbWVtb3J5IGxvY2F0aW9uIHVzZWQgdG8gc3RvcmUgdGhlIHJlZ2lzdGVyIHZhbHVlLgovLy8gXHBhcmFtIF9fYQovLy8gICAgVGhlIDY0LWJpdCBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVyIHZhbHVlIHRvIGJlIHN0b3JlZC4Kc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3N0cmVhbV9zZChkb3VibGUgKl9fcCwgX19tMTI4ZCBfX2EpCnsKICBfX2J1aWx0aW5faWEzMl9tb3ZudHNkKF9fcCwgKF9fdjJkZilfX2EpOwp9CgovLy8gU3RvcmVzIGEgMzItYml0IHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUgaW4gYSAzMi1iaXQKLy8vICAgIG1lbW9yeSBsb2NhdGlvbi4gVG8gbWluaW1pemUgY2FjaGluZywgdGhlIGRhdGEgaXMgZmxhZ2dlZCBhcwovLy8gICAgbm9uLXRlbXBvcmFsICh1bmxpa2VseSB0byBiZSB1c2VkIGFnYWluIHNvb24pLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IE1PVk5UU1MgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19wCi8vLyAgICBUaGUgMzItYml0IG1lbW9yeSBsb2NhdGlvbiB1c2VkIHRvIHN0b3JlIHRoZSByZWdpc3RlciB2YWx1ZS4KLy8vIFxwYXJhbSBfX2EKLy8vICAgIFRoZSAzMi1iaXQgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCByZWdpc3RlciB2YWx1ZSB0byBiZSBzdG9yZWQuCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zdHJlYW1fc3MoZmxvYXQgKl9fcCwgX19tMTI4IF9fYSkKewogIF9fYnVpbHRpbl9pYTMyX21vdm50c3MoX19wLCAoX192NHNmKV9fYSk7Cn0KCiN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlMKCiNlbmRpZiAvKiBfX0FNTUlOVFJJTl9IICovCgBhdng1MTJiZjE2aW50cmluLmgAYXZ4NTEyZmludHJpbi5oAC8qPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gY2x6ZXJvaW50cmluLmggLSBDTFpFUk8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwojaWYgIWRlZmluZWQgX19YODZJTlRSSU5fSCAmJiAhZGVmaW5lZCBfX0lNTUlOVFJJTl9ICiNlcnJvciAiTmV2ZXIgdXNlIDxjbHplcm9pbnRyaW4uaD4gZGlyZWN0bHk7IGluY2x1ZGUgPHg4NmludHJpbi5oPiBpbnN0ZWFkLiIKI2VuZGlmCgojaWZuZGVmIF9fQ0xaRVJPSU5UUklOX0gKI2RlZmluZSBfX0NMWkVST0lOVFJJTl9ICgovKiBEZWZpbmUgdGhlIGRlZmF1bHQgYXR0cmlidXRlcyBmb3IgdGhlIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUuICovCiNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTIFwKICBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sICBfX3RhcmdldF9fKCJjbHplcm8iKSkpCgovLy8gTG9hZHMgdGhlIGNhY2hlIGxpbmUgYWRkcmVzcyBhbmQgemVybydzIG91dCB0aGUgY2FjaGVsaW5lCi8vLwovLy8gXGhlYWRlcmZpbGUgPGNsemVyb2ludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gQ0xaRVJPIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fbGluZQovLy8gICAgQSBwb2ludGVyIHRvIGEgY2FjaGVsaW5lIHdoaWNoIG5lZWRzIHRvIGJlIHplcm9lZCBvdXQuCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jbHplcm8gKHZvaWQgKiBfX2xpbmUpCnsKICBfX2J1aWx0aW5faWEzMl9jbHplcm8gKCh2b2lkICopX19saW5lKTsKfQoKI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUwoKI2VuZGlmIC8qIF9fQ0xaRVJPSU5UUklOX0ggKi8KAGVtbWludHJpbi5oAC8qPT09LS0tLSB0bW1pbnRyaW4uaCAtIFNTU0UzIGludHJpbnNpY3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKi8KCiNpZm5kZWYgX19UTU1JTlRSSU5fSAojZGVmaW5lIF9fVE1NSU5UUklOX0gKCiNpZiAhZGVmaW5lZChfX2kzODZfXykgJiYgIWRlZmluZWQoX194ODZfNjRfXykKI2Vycm9yICJUaGlzIGhlYWRlciBpcyBvbmx5IG1lYW50IHRvIGJlIHVzZWQgb24geDg2IGFuZCB4NjQgYXJjaGl0ZWN0dXJlIgojZW5kaWYKCiNpbmNsdWRlIDxwbW1pbnRyaW4uaD4KCi8qIERlZmluZSB0aGUgZGVmYXVsdCBhdHRyaWJ1dGVzIGZvciB0aGUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZS4gKi8KI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJzc3NlMyIpLCBfX21pbl92ZWN0b3Jfd2lkdGhfXyg2NCkpKQojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSU19NTVggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJtbXgsc3NzZTMiKSwgX19taW5fdmVjdG9yX3dpZHRoX18oNjQpKSkKCi8vLyBDb21wdXRlcyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgZWFjaCBvZiB0aGUgcGFja2VkIDgtYml0IHNpZ25lZAovLy8gICAgaW50ZWdlcnMgaW4gdGhlIHNvdXJjZSBvcGVyYW5kIGFuZCBzdG9yZXMgdGhlIDgtYml0IHVuc2lnbmVkIGludGVnZXIKLy8vICAgIHJlc3VsdHMgaW4gdGhlIGRlc3RpbmF0aW9uLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgXGMgUEFCU0IgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSA2NC1iaXQgdmVjdG9yIG9mIFs4IHggaThdLgovLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgYWJzb2x1dGUgdmFsdWVzIG9mIHRoZQovLy8gICAgZWxlbWVudHMgaW4gdGhlIG9wZXJhbmQuCnN0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgKX21tX2Fic19waTgoX19tNjQgX19hKQp7CiAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BhYnNiKChfX3Y4cWkpX19hKTsKfQoKLy8vIENvbXB1dGVzIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiBlYWNoIG9mIHRoZSBwYWNrZWQgOC1iaXQgc2lnbmVkCi8vLyAgICBpbnRlZ2VycyBpbiB0aGUgc291cmNlIG9wZXJhbmQgYW5kIHN0b3JlcyB0aGUgOC1iaXQgdW5zaWduZWQgaW50ZWdlcgovLy8gICAgcmVzdWx0cyBpbiB0aGUgZGVzdGluYXRpb24uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSBcYyBWUEFCU0IgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0uCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgYWJzb2x1dGUgdmFsdWVzIG9mIHRoZQovLy8gICAgZWxlbWVudHMgaW4gdGhlIG9wZXJhbmQuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9hYnNfZXBpOChfX20xMjhpIF9fYSkKewogICAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BhYnNiMTI4KChfX3YxNnFpKV9fYSk7Cn0KCi8vLyBDb21wdXRlcyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgZWFjaCBvZiB0aGUgcGFja2VkIDE2LWJpdCBzaWduZWQKLy8vICAgIGludGVnZXJzIGluIHRoZSBzb3VyY2Ugb3BlcmFuZCBhbmQgc3RvcmVzIHRoZSAxNi1iaXQgdW5zaWduZWQgaW50ZWdlcgovLy8gICAgcmVzdWx0cyBpbiB0aGUgZGVzdGluYXRpb24uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSBcYyBQQUJTVyBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDY0LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMTZdLgovLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgYWJzb2x1dGUgdmFsdWVzIG9mIHRoZQovLy8gICAgZWxlbWVudHMgaW4gdGhlIG9wZXJhbmQuCnN0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgKX21tX2Fic19waTE2KF9fbTY0IF9fYSkKewogICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wYWJzdygoX192NGhpKV9fYSk7Cn0KCi8vLyBDb21wdXRlcyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgZWFjaCBvZiB0aGUgcGFja2VkIDE2LWJpdCBzaWduZWQKLy8vICAgIGludGVnZXJzIGluIHRoZSBzb3VyY2Ugb3BlcmFuZCBhbmQgc3RvcmVzIHRoZSAxNi1iaXQgdW5zaWduZWQgaW50ZWdlcgovLy8gICAgcmVzdWx0cyBpbiB0aGUgZGVzdGluYXRpb24uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSBcYyBWUEFCU1cgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGkxNl0uCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgYWJzb2x1dGUgdmFsdWVzIG9mIHRoZQovLy8gICAgZWxlbWVudHMgaW4gdGhlIG9wZXJhbmQuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9hYnNfZXBpMTYoX19tMTI4aSBfX2EpCnsKICAgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wYWJzdzEyOCgoX192OGhpKV9fYSk7Cn0KCi8vLyBDb21wdXRlcyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgZWFjaCBvZiB0aGUgcGFja2VkIDMyLWJpdCBzaWduZWQKLy8vICAgIGludGVnZXJzIGluIHRoZSBzb3VyY2Ugb3BlcmFuZCBhbmQgc3RvcmVzIHRoZSAzMi1iaXQgdW5zaWduZWQgaW50ZWdlcgovLy8gICAgcmVzdWx0cyBpbiB0aGUgZGVzdGluYXRpb24uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSBcYyBQQUJTRCBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDY0LWJpdCB2ZWN0b3Igb2YgWzIgeCBpMzJdLgovLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgYWJzb2x1dGUgdmFsdWVzIG9mIHRoZQovLy8gICAgZWxlbWVudHMgaW4gdGhlIG9wZXJhbmQuCnN0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgKX21tX2Fic19waTMyKF9fbTY0IF9fYSkKewogICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wYWJzZCgoX192MnNpKV9fYSk7Cn0KCi8vLyBDb21wdXRlcyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgZWFjaCBvZiB0aGUgcGFja2VkIDMyLWJpdCBzaWduZWQKLy8vICAgIGludGVnZXJzIGluIHRoZSBzb3VyY2Ugb3BlcmFuZCBhbmQgc3RvcmVzIHRoZSAzMi1iaXQgdW5zaWduZWQgaW50ZWdlcgovLy8gICAgcmVzdWx0cyBpbiB0aGUgZGVzdGluYXRpb24uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSBcYyBWUEFCU0QgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0uCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgYWJzb2x1dGUgdmFsdWVzIG9mIHRoZQovLy8gICAgZWxlbWVudHMgaW4gdGhlIG9wZXJhbmQuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9hYnNfZXBpMzIoX19tMTI4aSBfX2EpCnsKICAgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wYWJzZDEyOCgoX192NHNpKV9fYSk7Cn0KCi8vLyBDb25jYXRlbmF0ZXMgdGhlIHR3byAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9wZXJhbmRzLCBhbmQKLy8vICAgIHJpZ2h0LXNoaWZ0cyB0aGUgcmVzdWx0IGJ5IHRoZSBudW1iZXIgb2YgYnl0ZXMgc3BlY2lmaWVkIGluIHRoZSBpbW1lZGlhdGUKLy8vICAgIG9wZXJhbmQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFxjb2RlCi8vLyBfX20xMjhpIF9tbV9hbGlnbnJfZXBpOChfX20xMjhpIGEsIF9fbTEyOGkgYiwgY29uc3QgaW50IG4pOwovLy8gXGVuZGNvZGUKLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgXGMgUEFMSUdOUiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4KLy8vIFxwYXJhbSBiCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLgovLy8gXHBhcmFtIG4KLy8vICAgIEFuIGltbWVkaWF0ZSBvcGVyYW5kIHNwZWNpZnlpbmcgaG93IG1hbnkgYnl0ZXMgdG8gcmlnaHQtc2hpZnQgdGhlIHJlc3VsdC4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBjb25jYXRlbmF0ZWQgcmlnaHQtc2hpZnRlZAovLy8gICAgdmFsdWUuCiNkZWZpbmUgX21tX2FsaWducl9lcGk4KGEsIGIsIG4pIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcGFsaWducjEyOCgoX192MTZxaSkoX19tMTI4aSkoYSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZxaSkoX19tMTI4aSkoYiksIChuKSkpCgovLy8gQ29uY2F0ZW5hdGVzIHRoZSB0d28gNjQtYml0IGludGVnZXIgdmVjdG9yIG9wZXJhbmRzLCBhbmQgcmlnaHQtc2hpZnRzCi8vLyAgICB0aGUgcmVzdWx0IGJ5IHRoZSBudW1iZXIgb2YgYnl0ZXMgc3BlY2lmaWVkIGluIHRoZSBpbW1lZGlhdGUgb3BlcmFuZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gXGNvZGUKLy8vIF9fbTY0IF9tbV9hbGlnbnJfcGk4KF9fbTY0IGEsIF9fbTY0IGIsIGNvbnN0IGludCBuKTsKLy8vIFxlbmRjb2RlCi8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIFxjIFBBTElHTlIgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIGEKLy8vICAgIEEgNjQtYml0IHZlY3RvciBvZiBbOCB4IGk4XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLgovLy8gXHBhcmFtIGIKLy8vICAgIEEgNjQtYml0IHZlY3RvciBvZiBbOCB4IGk4XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLgovLy8gXHBhcmFtIG4KLy8vICAgIEFuIGltbWVkaWF0ZSBvcGVyYW5kIHNwZWNpZnlpbmcgaG93IG1hbnkgYnl0ZXMgdG8gcmlnaHQtc2hpZnQgdGhlIHJlc3VsdC4KLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbmNhdGVuYXRlZCByaWdodC1zaGlmdGVkCi8vLyAgICB2YWx1ZS4KI2RlZmluZSBfbW1fYWxpZ25yX3BpOChhLCBiLCBuKSBcCiAgKChfX202NClfX2J1aWx0aW5faWEzMl9wYWxpZ25yKChfX3Y4cWkpKF9fbTY0KShhKSwgKF9fdjhxaSkoX19tNjQpKGIpLCAobikpKQoKLy8vIEhvcml6b250YWxseSBhZGRzIHRoZSBhZGphY2VudCBwYWlycyBvZiB2YWx1ZXMgY29udGFpbmVkIGluIDIgcGFja2VkCi8vLyAgICAxMjgtYml0IHZlY3RvcnMgb2YgWzggeCBpMTZdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgXGMgVlBIQUREVyBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLiBUaGUKLy8vICAgIGhvcml6b250YWwgc3VtcyBvZiB0aGUgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIGxvd2VyIGJpdHMgb2YgdGhlCi8vLyAgICBkZXN0aW5hdGlvbi4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuIFRoZQovLy8gICAgaG9yaXpvbnRhbCBzdW1zIG9mIHRoZSB2YWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgdXBwZXIgYml0cyBvZiB0aGUKLy8vICAgIGRlc3RpbmF0aW9uLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGkxNl0gY29udGFpbmluZyB0aGUgaG9yaXpvbnRhbCBzdW1zIG9mCi8vLyAgICBib3RoIG9wZXJhbmRzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1faGFkZF9lcGkxNihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpCnsKICAgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9waGFkZHcxMjgoKF9fdjhoaSlfX2EsIChfX3Y4aGkpX19iKTsKfQoKLy8vIEhvcml6b250YWxseSBhZGRzIHRoZSBhZGphY2VudCBwYWlycyBvZiB2YWx1ZXMgY29udGFpbmVkIGluIDIgcGFja2VkCi8vLyAgICAxMjgtYml0IHZlY3RvcnMgb2YgWzQgeCBpMzJdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgXGMgVlBIQURERCBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLiBUaGUKLy8vICAgIGhvcml6b250YWwgc3VtcyBvZiB0aGUgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIGxvd2VyIGJpdHMgb2YgdGhlCi8vLyAgICBkZXN0aW5hdGlvbi4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuIFRoZQovLy8gICAgaG9yaXpvbnRhbCBzdW1zIG9mIHRoZSB2YWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgdXBwZXIgYml0cyBvZiB0aGUKLy8vICAgIGRlc3RpbmF0aW9uLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0gY29udGFpbmluZyB0aGUgaG9yaXpvbnRhbCBzdW1zIG9mCi8vLyAgICBib3RoIG9wZXJhbmRzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1faGFkZF9lcGkzMihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpCnsKICAgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9waGFkZGQxMjgoKF9fdjRzaSlfX2EsIChfX3Y0c2kpX19iKTsKfQoKLy8vIEhvcml6b250YWxseSBhZGRzIHRoZSBhZGphY2VudCBwYWlycyBvZiB2YWx1ZXMgY29udGFpbmVkIGluIDIgcGFja2VkCi8vLyAgICA2NC1iaXQgdmVjdG9ycyBvZiBbNCB4IGkxNl0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSBcYyBQSEFERFcgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSA2NC1iaXQgdmVjdG9yIG9mIFs0IHggaTE2XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLiBUaGUKLy8vICAgIGhvcml6b250YWwgc3VtcyBvZiB0aGUgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIGxvd2VyIGJpdHMgb2YgdGhlCi8vLyAgICBkZXN0aW5hdGlvbi4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgNjQtYml0IHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4gVGhlCi8vLyAgICBob3Jpem9udGFsIHN1bXMgb2YgdGhlIHZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSB1cHBlciBiaXRzIG9mIHRoZQovLy8gICAgZGVzdGluYXRpb24uCi8vLyBccmV0dXJucyBBIDY0LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcgdGhlIGhvcml6b250YWwgc3VtcyBvZiBib3RoCi8vLyAgICBvcGVyYW5kcy4Kc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTX01NWApfbW1faGFkZF9waTE2KF9fbTY0IF9fYSwgX19tNjQgX19iKQp7CiAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BoYWRkdygoX192NGhpKV9fYSwgKF9fdjRoaSlfX2IpOwp9CgovLy8gSG9yaXpvbnRhbGx5IGFkZHMgdGhlIGFkamFjZW50IHBhaXJzIG9mIHZhbHVlcyBjb250YWluZWQgaW4gMiBwYWNrZWQKLy8vICAgIDY0LWJpdCB2ZWN0b3JzIG9mIFsyIHggaTMyXS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIFxjIFBIQURERCBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDY0LWJpdCB2ZWN0b3Igb2YgWzIgeCBpMzJdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuIFRoZQovLy8gICAgaG9yaXpvbnRhbCBzdW1zIG9mIHRoZSB2YWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgbG93ZXIgYml0cyBvZiB0aGUKLy8vICAgIGRlc3RpbmF0aW9uLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSA2NC1iaXQgdmVjdG9yIG9mIFsyIHggaTMyXSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLiBUaGUKLy8vICAgIGhvcml6b250YWwgc3VtcyBvZiB0aGUgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIHVwcGVyIGJpdHMgb2YgdGhlCi8vLyAgICBkZXN0aW5hdGlvbi4KLy8vIFxyZXR1cm5zIEEgNjQtYml0IHZlY3RvciBvZiBbMiB4IGkzMl0gY29udGFpbmluZyB0aGUgaG9yaXpvbnRhbCBzdW1zIG9mIGJvdGgKLy8vICAgIG9wZXJhbmRzLgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YCl9tbV9oYWRkX3BpMzIoX19tNjQgX19hLCBfX202NCBfX2IpCnsKICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcGhhZGRkKChfX3Yyc2kpX19hLCAoX192MnNpKV9fYik7Cn0KCi8vLyBIb3Jpem9udGFsbHkgYWRkcyB0aGUgYWRqYWNlbnQgcGFpcnMgb2YgdmFsdWVzIGNvbnRhaW5lZCBpbiAyIHBhY2tlZAovLy8gICAgMTI4LWJpdCB2ZWN0b3JzIG9mIFs4IHggaTE2XS4gUG9zaXRpdmUgc3VtcyBncmVhdGVyIHRoYW4gMHg3RkZGIGFyZQovLy8gICAgc2F0dXJhdGVkIHRvIDB4N0ZGRi4gTmVnYXRpdmUgc3VtcyBsZXNzIHRoYW4gMHg4MDAwIGFyZSBzYXR1cmF0ZWQgdG8KLy8vICAgIDB4ODAwMC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIFxjIFZQSEFERFNXIGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuIFRoZQovLy8gICAgaG9yaXpvbnRhbCBzdW1zIG9mIHRoZSB2YWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgbG93ZXIgYml0cyBvZiB0aGUKLy8vICAgIGRlc3RpbmF0aW9uLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGkxNl0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4gVGhlCi8vLyAgICBob3Jpem9udGFsIHN1bXMgb2YgdGhlIHZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSB1cHBlciBiaXRzIG9mIHRoZQovLy8gICAgZGVzdGluYXRpb24uCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XSBjb250YWluaW5nIHRoZSBob3Jpem9udGFsIHNhdHVyYXRlZAovLy8gICAgc3VtcyBvZiBib3RoIG9wZXJhbmRzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1faGFkZHNfZXBpMTYoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQp7CiAgICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcGhhZGRzdzEyOCgoX192OGhpKV9fYSwgKF9fdjhoaSlfX2IpOwp9CgovLy8gSG9yaXpvbnRhbGx5IGFkZHMgdGhlIGFkamFjZW50IHBhaXJzIG9mIHZhbHVlcyBjb250YWluZWQgaW4gMiBwYWNrZWQKLy8vICAgIDY0LWJpdCB2ZWN0b3JzIG9mIFs0IHggaTE2XS4gUG9zaXRpdmUgc3VtcyBncmVhdGVyIHRoYW4gMHg3RkZGIGFyZQovLy8gICAgc2F0dXJhdGVkIHRvIDB4N0ZGRi4gTmVnYXRpdmUgc3VtcyBsZXNzIHRoYW4gMHg4MDAwIGFyZSBzYXR1cmF0ZWQgdG8KLy8vICAgIDB4ODAwMC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIFxjIFBIQUREU1cgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSA2NC1iaXQgdmVjdG9yIG9mIFs0IHggaTE2XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLiBUaGUKLy8vICAgIGhvcml6b250YWwgc3VtcyBvZiB0aGUgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIGxvd2VyIGJpdHMgb2YgdGhlCi8vLyAgICBkZXN0aW5hdGlvbi4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgNjQtYml0IHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4gVGhlCi8vLyAgICBob3Jpem9udGFsIHN1bXMgb2YgdGhlIHZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSB1cHBlciBiaXRzIG9mIHRoZQovLy8gICAgZGVzdGluYXRpb24uCi8vLyBccmV0dXJucyBBIDY0LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcgdGhlIGhvcml6b250YWwgc2F0dXJhdGVkCi8vLyAgICBzdW1zIG9mIGJvdGggb3BlcmFuZHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgKX21tX2hhZGRzX3BpMTYoX19tNjQgX19hLCBfX202NCBfX2IpCnsKICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcGhhZGRzdygoX192NGhpKV9fYSwgKF9fdjRoaSlfX2IpOwp9CgovLy8gSG9yaXpvbnRhbGx5IHN1YnRyYWN0cyB0aGUgYWRqYWNlbnQgcGFpcnMgb2YgdmFsdWVzIGNvbnRhaW5lZCBpbiAyCi8vLyAgICBwYWNrZWQgMTI4LWJpdCB2ZWN0b3JzIG9mIFs4IHggaTE2XS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIFxjIFZQSFNVQlcgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGkxNl0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4gVGhlCi8vLyAgICBob3Jpem9udGFsIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSBsb3dlciBiaXRzIG9mCi8vLyAgICB0aGUgZGVzdGluYXRpb24uCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLiBUaGUKLy8vICAgIGhvcml6b250YWwgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIHVwcGVyIGJpdHMgb2YKLy8vICAgIHRoZSBkZXN0aW5hdGlvbi4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZdIGNvbnRhaW5pbmcgdGhlIGhvcml6b250YWwgZGlmZmVyZW5jZXMKLy8vICAgIG9mIGJvdGggb3BlcmFuZHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9oc3ViX2VwaTE2KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikKewogICAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3Boc3VidzEyOCgoX192OGhpKV9fYSwgKF9fdjhoaSlfX2IpOwp9CgovLy8gSG9yaXpvbnRhbGx5IHN1YnRyYWN0cyB0aGUgYWRqYWNlbnQgcGFpcnMgb2YgdmFsdWVzIGNvbnRhaW5lZCBpbiAyCi8vLyAgICBwYWNrZWQgMTI4LWJpdCB2ZWN0b3JzIG9mIFs0IHggaTMyXS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIFxjIFZQSFNVQkQgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4gVGhlCi8vLyAgICBob3Jpem9udGFsIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSBsb3dlciBiaXRzIG9mCi8vLyAgICB0aGUgZGVzdGluYXRpb24uCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLiBUaGUKLy8vICAgIGhvcml6b250YWwgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIHVwcGVyIGJpdHMgb2YKLy8vICAgIHRoZSBkZXN0aW5hdGlvbi4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdIGNvbnRhaW5pbmcgdGhlIGhvcml6b250YWwgZGlmZmVyZW5jZXMKLy8vICAgIG9mIGJvdGggb3BlcmFuZHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9oc3ViX2VwaTMyKF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikKewogICAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3Boc3ViZDEyOCgoX192NHNpKV9fYSwgKF9fdjRzaSlfX2IpOwp9CgovLy8gSG9yaXpvbnRhbGx5IHN1YnRyYWN0cyB0aGUgYWRqYWNlbnQgcGFpcnMgb2YgdmFsdWVzIGNvbnRhaW5lZCBpbiAyCi8vLyAgICBwYWNrZWQgNjQtYml0IHZlY3RvcnMgb2YgWzQgeCBpMTZdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgXGMgUEhTVUJXIGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgNjQtYml0IHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4gVGhlCi8vLyAgICBob3Jpem9udGFsIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSBsb3dlciBiaXRzIG9mCi8vLyAgICB0aGUgZGVzdGluYXRpb24uCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDY0LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuIFRoZQovLy8gICAgaG9yaXpvbnRhbCBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSB2YWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgdXBwZXIgYml0cyBvZgovLy8gICAgdGhlIGRlc3RpbmF0aW9uLgovLy8gXHJldHVybnMgQSA2NC1iaXQgdmVjdG9yIG9mIFs0IHggaTE2XSBjb250YWluaW5nIHRoZSBob3Jpem9udGFsIGRpZmZlcmVuY2VzCi8vLyAgICBvZiBib3RoIG9wZXJhbmRzLgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YCl9tbV9oc3ViX3BpMTYoX19tNjQgX19hLCBfX202NCBfX2IpCnsKICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcGhzdWJ3KChfX3Y0aGkpX19hLCAoX192NGhpKV9fYik7Cn0KCi8vLyBIb3Jpem9udGFsbHkgc3VidHJhY3RzIHRoZSBhZGphY2VudCBwYWlycyBvZiB2YWx1ZXMgY29udGFpbmVkIGluIDIKLy8vICAgIHBhY2tlZCA2NC1iaXQgdmVjdG9ycyBvZiBbMiB4IGkzMl0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSBcYyBQSFNVQkQgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSA2NC1iaXQgdmVjdG9yIG9mIFsyIHggaTMyXSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLiBUaGUKLy8vICAgIGhvcml6b250YWwgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIGxvd2VyIGJpdHMgb2YKLy8vICAgIHRoZSBkZXN0aW5hdGlvbi4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgNjQtYml0IHZlY3RvciBvZiBbMiB4IGkzMl0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4gVGhlCi8vLyAgICBob3Jpem9udGFsIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSB1cHBlciBiaXRzIG9mCi8vLyAgICB0aGUgZGVzdGluYXRpb24uCi8vLyBccmV0dXJucyBBIDY0LWJpdCB2ZWN0b3Igb2YgWzIgeCBpMzJdIGNvbnRhaW5pbmcgdGhlIGhvcml6b250YWwgZGlmZmVyZW5jZXMKLy8vICAgIG9mIGJvdGggb3BlcmFuZHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgKX21tX2hzdWJfcGkzMihfX202NCBfX2EsIF9fbTY0IF9fYikKewogICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9waHN1YmQoKF9fdjJzaSlfX2EsIChfX3Yyc2kpX19iKTsKfQoKLy8vIEhvcml6b250YWxseSBzdWJ0cmFjdHMgdGhlIGFkamFjZW50IHBhaXJzIG9mIHZhbHVlcyBjb250YWluZWQgaW4gMgovLy8gICAgcGFja2VkIDEyOC1iaXQgdmVjdG9ycyBvZiBbOCB4IGkxNl0uIFBvc2l0aXZlIGRpZmZlcmVuY2VzIGdyZWF0ZXIgdGhhbgovLy8gICAgMHg3RkZGIGFyZSBzYXR1cmF0ZWQgdG8gMHg3RkZGLiBOZWdhdGl2ZSBkaWZmZXJlbmNlcyBsZXNzIHRoYW4gMHg4MDAwIGFyZQovLy8gICAgc2F0dXJhdGVkIHRvIDB4ODAwMC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIFxjIFZQSFNVQlNXIGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuIFRoZQovLy8gICAgaG9yaXpvbnRhbCBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSB2YWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgbG93ZXIgYml0cyBvZgovLy8gICAgdGhlIGRlc3RpbmF0aW9uLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGkxNl0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4gVGhlCi8vLyAgICBob3Jpem9udGFsIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSB1cHBlciBiaXRzIG9mCi8vLyAgICB0aGUgZGVzdGluYXRpb24uCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XSBjb250YWluaW5nIHRoZSBob3Jpem9udGFsIHNhdHVyYXRlZAovLy8gICAgZGlmZmVyZW5jZXMgb2YgYm90aCBvcGVyYW5kcy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2hzdWJzX2VwaTE2KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikKewogICAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3Boc3Vic3cxMjgoKF9fdjhoaSlfX2EsIChfX3Y4aGkpX19iKTsKfQoKLy8vIEhvcml6b250YWxseSBzdWJ0cmFjdHMgdGhlIGFkamFjZW50IHBhaXJzIG9mIHZhbHVlcyBjb250YWluZWQgaW4gMgovLy8gICAgcGFja2VkIDY0LWJpdCB2ZWN0b3JzIG9mIFs0IHggaTE2XS4gUG9zaXRpdmUgZGlmZmVyZW5jZXMgZ3JlYXRlciB0aGFuCi8vLyAgICAweDdGRkYgYXJlIHNhdHVyYXRlZCB0byAweDdGRkYuIE5lZ2F0aXZlIGRpZmZlcmVuY2VzIGxlc3MgdGhhbiAweDgwMDAgYXJlCi8vLyAgICBzYXR1cmF0ZWQgdG8gMHg4MDAwLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgXGMgUEhTVUJTVyBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDY0LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuIFRoZQovLy8gICAgaG9yaXpvbnRhbCBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSB2YWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgbG93ZXIgYml0cyBvZgovLy8gICAgdGhlIGRlc3RpbmF0aW9uLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSA2NC1iaXQgdmVjdG9yIG9mIFs0IHggaTE2XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLiBUaGUKLy8vICAgIGhvcml6b250YWwgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIHVwcGVyIGJpdHMgb2YKLy8vICAgIHRoZSBkZXN0aW5hdGlvbi4KLy8vIFxyZXR1cm5zIEEgNjQtYml0IHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyB0aGUgaG9yaXpvbnRhbCBzYXR1cmF0ZWQKLy8vICAgIGRpZmZlcmVuY2VzIG9mIGJvdGggb3BlcmFuZHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgKX21tX2hzdWJzX3BpMTYoX19tNjQgX19hLCBfX202NCBfX2IpCnsKICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcGhzdWJzdygoX192NGhpKV9fYSwgKF9fdjRoaSlfX2IpOwp9CgovLy8gTXVsdGlwbGllcyBjb3JyZXNwb25kaW5nIHBhaXJzIG9mIHBhY2tlZCA4LWJpdCB1bnNpZ25lZCBpbnRlZ2VyCi8vLyAgICB2YWx1ZXMgY29udGFpbmVkIGluIHRoZSBmaXJzdCBzb3VyY2Ugb3BlcmFuZCBhbmQgcGFja2VkIDgtYml0IHNpZ25lZAovLy8gICAgaW50ZWdlciB2YWx1ZXMgY29udGFpbmVkIGluIHRoZSBzZWNvbmQgc291cmNlIG9wZXJhbmQsIGFkZHMgcGFpcnMgb2YKLy8vICAgIGNvbnRpZ3VvdXMgcHJvZHVjdHMgd2l0aCBzaWduZWQgc2F0dXJhdGlvbiwgYW5kIHdyaXRlcyB0aGUgMTYtYml0IHN1bXMgdG8KLy8vICAgIHRoZSBjb3JyZXNwb25kaW5nIGJpdHMgaW4gdGhlIGRlc3RpbmF0aW9uLgovLy8KLy8vICAgIEZvciBleGFtcGxlLCBiaXRzIFs3OjBdIG9mIGJvdGggb3BlcmFuZHMgYXJlIG11bHRpcGxpZWQsIGJpdHMgWzE1OjhdIG9mCi8vLyAgICBib3RoIG9wZXJhbmRzIGFyZSBtdWx0aXBsaWVkLCBhbmQgdGhlIHN1bSBvZiBib3RoIHJlc3VsdHMgaXMgd3JpdHRlbiB0bwovLy8gICAgYml0cyBbMTU6MF0gb2YgdGhlIGRlc3RpbmF0aW9uLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgXGMgVlBNQUREVUJTVyBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgZmlyc3Qgc291cmNlIG9wZXJhbmQuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgc2Vjb25kIHNvdXJjZSBvcGVyYW5kLgovLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHN1bXMgb2YgcHJvZHVjdHMgb2YgYm90aAovLy8gICAgb3BlcmFuZHM6IFxuCi8vLyAgICBcYSBSMCA6PSAoXGEgX19hMCAqIFxhIF9fYjApICsgKFxhIF9fYTEgKiBcYSBfX2IxKSBcbgovLy8gICAgXGEgUjEgOj0gKFxhIF9fYTIgKiBcYSBfX2IyKSArIChcYSBfX2EzICogXGEgX19iMykgXG4KLy8vICAgIFxhIFIyIDo9IChcYSBfX2E0ICogXGEgX19iNCkgKyAoXGEgX19hNSAqIFxhIF9fYjUpIFxuCi8vLyAgICBcYSBSMyA6PSAoXGEgX19hNiAqIFxhIF9fYjYpICsgKFxhIF9fYTcgKiBcYSBfX2I3KSBcbgovLy8gICAgXGEgUjQgOj0gKFxhIF9fYTggKiBcYSBfX2I4KSArIChcYSBfX2E5ICogXGEgX19iOSkgXG4KLy8vICAgIFxhIFI1IDo9IChcYSBfX2ExMCAqIFxhIF9fYjEwKSArIChcYSBfX2ExMSAqIFxhIF9fYjExKSBcbgovLy8gICAgXGEgUjYgOj0gKFxhIF9fYTEyICogXGEgX19iMTIpICsgKFxhIF9fYTEzICogXGEgX19iMTMpIFxuCi8vLyAgICBcYSBSNyA6PSAoXGEgX19hMTQgKiBcYSBfX2IxNCkgKyAoXGEgX19hMTUgKiBcYSBfX2IxNSkKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX21hZGR1YnNfZXBpMTYoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQp7CiAgICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcG1hZGR1YnN3MTI4KChfX3YxNnFpKV9fYSwgKF9fdjE2cWkpX19iKTsKfQoKLy8vIE11bHRpcGxpZXMgY29ycmVzcG9uZGluZyBwYWlycyBvZiBwYWNrZWQgOC1iaXQgdW5zaWduZWQgaW50ZWdlcgovLy8gICAgdmFsdWVzIGNvbnRhaW5lZCBpbiB0aGUgZmlyc3Qgc291cmNlIG9wZXJhbmQgYW5kIHBhY2tlZCA4LWJpdCBzaWduZWQKLy8vICAgIGludGVnZXIgdmFsdWVzIGNvbnRhaW5lZCBpbiB0aGUgc2Vjb25kIHNvdXJjZSBvcGVyYW5kLCBhZGRzIHBhaXJzIG9mCi8vLyAgICBjb250aWd1b3VzIHByb2R1Y3RzIHdpdGggc2lnbmVkIHNhdHVyYXRpb24sIGFuZCB3cml0ZXMgdGhlIDE2LWJpdCBzdW1zIHRvCi8vLyAgICB0aGUgY29ycmVzcG9uZGluZyBiaXRzIGluIHRoZSBkZXN0aW5hdGlvbi4KLy8vCi8vLyAgICBGb3IgZXhhbXBsZSwgYml0cyBbNzowXSBvZiBib3RoIG9wZXJhbmRzIGFyZSBtdWx0aXBsaWVkLCBiaXRzIFsxNTo4XSBvZgovLy8gICAgYm90aCBvcGVyYW5kcyBhcmUgbXVsdGlwbGllZCwgYW5kIHRoZSBzdW0gb2YgYm90aCByZXN1bHRzIGlzIHdyaXR0ZW4gdG8KLy8vICAgIGJpdHMgWzE1OjBdIG9mIHRoZSBkZXN0aW5hdGlvbi4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIFxjIFBNQUREVUJTVyBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBmaXJzdCBzb3VyY2Ugb3BlcmFuZC4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNlY29uZCBzb3VyY2Ugb3BlcmFuZC4KLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHN1bXMgb2YgcHJvZHVjdHMgb2YgYm90aAovLy8gICAgb3BlcmFuZHM6IFxuCi8vLyAgICBcYSBSMCA6PSAoXGEgX19hMCAqIFxhIF9fYjApICsgKFxhIF9fYTEgKiBcYSBfX2IxKSBcbgovLy8gICAgXGEgUjEgOj0gKFxhIF9fYTIgKiBcYSBfX2IyKSArIChcYSBfX2EzICogXGEgX19iMykgXG4KLy8vICAgIFxhIFIyIDo9IChcYSBfX2E0ICogXGEgX19iNCkgKyAoXGEgX19hNSAqIFxhIF9fYjUpIFxuCi8vLyAgICBcYSBSMyA6PSAoXGEgX19hNiAqIFxhIF9fYjYpICsgKFxhIF9fYTcgKiBcYSBfX2I3KQpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YCl9tbV9tYWRkdWJzX3BpMTYoX19tNjQgX19hLCBfX202NCBfX2IpCnsKICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcG1hZGR1YnN3KChfX3Y4cWkpX19hLCAoX192OHFpKV9fYik7Cn0KCi8vLyBNdWx0aXBsaWVzIHBhY2tlZCAxNi1iaXQgc2lnbmVkIGludGVnZXIgdmFsdWVzLCB0cnVuY2F0ZXMgdGhlIDMyLWJpdAovLy8gICAgcHJvZHVjdHMgdG8gdGhlIDE4IG1vc3Qgc2lnbmlmaWNhbnQgYml0cyBieSByaWdodC1zaGlmdGluZywgcm91bmRzIHRoZQovLy8gICAgdHJ1bmNhdGVkIHZhbHVlIGJ5IGFkZGluZyAxLCBhbmQgd3JpdGVzIGJpdHMgWzE2OjFdIHRvIHRoZSBkZXN0aW5hdGlvbi4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIFxjIFZQTVVMSFJTVyBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGkxNl0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZdIGNvbnRhaW5pbmcgdGhlIHJvdW5kZWQgYW5kIHNjYWxlZAovLy8gICAgcHJvZHVjdHMgb2YgYm90aCBvcGVyYW5kcy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX211bGhyc19lcGkxNihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpCnsKICAgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wbXVsaHJzdzEyOCgoX192OGhpKV9fYSwgKF9fdjhoaSlfX2IpOwp9CgovLy8gTXVsdGlwbGllcyBwYWNrZWQgMTYtYml0IHNpZ25lZCBpbnRlZ2VyIHZhbHVlcywgdHJ1bmNhdGVzIHRoZSAzMi1iaXQKLy8vICAgIHByb2R1Y3RzIHRvIHRoZSAxOCBtb3N0IHNpZ25pZmljYW50IGJpdHMgYnkgcmlnaHQtc2hpZnRpbmcsIHJvdW5kcyB0aGUKLy8vICAgIHRydW5jYXRlZCB2YWx1ZSBieSBhZGRpbmcgMSwgYW5kIHdyaXRlcyBiaXRzIFsxNjoxXSB0byB0aGUgZGVzdGluYXRpb24uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSBcYyBQTVVMSFJTVyBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDY0LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDY0LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuCi8vLyBccmV0dXJucyBBIDY0LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcgdGhlIHJvdW5kZWQgYW5kIHNjYWxlZAovLy8gICAgcHJvZHVjdHMgb2YgYm90aCBvcGVyYW5kcy4Kc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTX01NWApfbW1fbXVsaHJzX3BpMTYoX19tNjQgX19hLCBfX202NCBfX2IpCnsKICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcG11bGhyc3coKF9fdjRoaSlfX2EsIChfX3Y0aGkpX19iKTsKfQoKLy8vIENvcGllcyB0aGUgOC1iaXQgaW50ZWdlcnMgZnJvbSBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgdG8gdGhlCi8vLyAgICBkZXN0aW5hdGlvbiBvciBjbGVhcnMgOC1iaXQgdmFsdWVzIGluIHRoZSBkZXN0aW5hdGlvbiwgYXMgc3BlY2lmaWVkIGJ5Ci8vLyAgICB0aGUgc2Vjb25kIHNvdXJjZSBvcGVyYW5kLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgXGMgVlBTSFVGQiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgdmFsdWVzIHRvIGJlIGNvcGllZC4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIGNvbnRyb2wgYnl0ZXMgY29ycmVzcG9uZGluZyB0bwovLy8gICAgcG9zaXRpb25zIGluIHRoZSBkZXN0aW5hdGlvbjoKLy8vICAgIEJpdCA3OiBcbgovLy8gICAgMTogQ2xlYXIgdGhlIGNvcnJlc3BvbmRpbmcgYnl0ZSBpbiB0aGUgZGVzdGluYXRpb24uIFxuCi8vLyAgICAwOiBDb3B5IHRoZSBzZWxlY3RlZCBzb3VyY2UgYnl0ZSB0byB0aGUgY29ycmVzcG9uZGluZyBieXRlIGluIHRoZQovLy8gICAgZGVzdGluYXRpb24uIFxuCi8vLyAgICBCaXRzIFs2OjRdIFJlc2VydmVkLiAgXG4KLy8vICAgIEJpdHMgWzM6MF0gc2VsZWN0IHRoZSBzb3VyY2UgYnl0ZSB0byBiZSBjb3BpZWQuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29waWVkIG9yIGNsZWFyZWQgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc2h1ZmZsZV9lcGk4KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikKewogICAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzaHVmYjEyOCgoX192MTZxaSlfX2EsIChfX3YxNnFpKV9fYik7Cn0KCi8vLyBDb3BpZXMgdGhlIDgtYml0IGludGVnZXJzIGZyb20gYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgdG8gdGhlCi8vLyAgICBkZXN0aW5hdGlvbiBvciBjbGVhcnMgOC1iaXQgdmFsdWVzIGluIHRoZSBkZXN0aW5hdGlvbiwgYXMgc3BlY2lmaWVkIGJ5Ci8vLyAgICB0aGUgc2Vjb25kIHNvdXJjZSBvcGVyYW5kLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgXGMgUFNIVUZCIGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHZhbHVlcyB0byBiZSBjb3BpZWQuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIGNvbnRyb2wgYnl0ZXMgY29ycmVzcG9uZGluZyB0bwovLy8gICAgcG9zaXRpb25zIGluIHRoZSBkZXN0aW5hdGlvbjoKLy8vICAgIEJpdCA3OiBcbgovLy8gICAgMTogQ2xlYXIgdGhlIGNvcnJlc3BvbmRpbmcgYnl0ZSBpbiB0aGUgZGVzdGluYXRpb24uIFxuCi8vLyAgICAwOiBDb3B5IHRoZSBzZWxlY3RlZCBzb3VyY2UgYnl0ZSB0byB0aGUgY29ycmVzcG9uZGluZyBieXRlIGluIHRoZQovLy8gICAgZGVzdGluYXRpb24uIFxuCi8vLyAgICBCaXRzIFszOjBdIHNlbGVjdCB0aGUgc291cmNlIGJ5dGUgdG8gYmUgY29waWVkLgovLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29waWVkIG9yIGNsZWFyZWQgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YCl9tbV9zaHVmZmxlX3BpOChfX202NCBfX2EsIF9fbTY0IF9fYikKewogICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wc2h1ZmIoKF9fdjhxaSlfX2EsIChfX3Y4cWkpX19iKTsKfQoKLy8vIEZvciBlYWNoIDgtYml0IGludGVnZXIgaW4gdGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kLCBwZXJmb3JtIG9uZSBvZgovLy8gICAgdGhlIGZvbGxvd2luZyBhY3Rpb25zIGFzIHNwZWNpZmllZCBieSB0aGUgc2Vjb25kIHNvdXJjZSBvcGVyYW5kLgovLy8KLy8vICAgIElmIHRoZSBieXRlIGluIHRoZSBzZWNvbmQgc291cmNlIGlzIG5lZ2F0aXZlLCBjYWxjdWxhdGUgdGhlIHR3bydzCi8vLyAgICBjb21wbGVtZW50IG9mIHRoZSBjb3JyZXNwb25kaW5nIGJ5dGUgaW4gdGhlIGZpcnN0IHNvdXJjZSwgYW5kIHdyaXRlIHRoYXQKLy8vICAgIHZhbHVlIHRvIHRoZSBkZXN0aW5hdGlvbi4gSWYgdGhlIGJ5dGUgaW4gdGhlIHNlY29uZCBzb3VyY2UgaXMgcG9zaXRpdmUsCi8vLyAgICBjb3B5IHRoZSBjb3JyZXNwb25kaW5nIGJ5dGUgZnJvbSB0aGUgZmlyc3Qgc291cmNlIHRvIHRoZSBkZXN0aW5hdGlvbi4gSWYKLy8vICAgIHRoZSBieXRlIGluIHRoZSBzZWNvbmQgc291cmNlIGlzIHplcm8sIGNsZWFyIHRoZSBjb3JyZXNwb25kaW5nIGJ5dGUgaW4KLy8vICAgIHRoZSBkZXN0aW5hdGlvbi4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIFxjIFZQU0lHTkIgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHZhbHVlcyB0byBiZSBjb3BpZWQuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBjb250cm9sIGJ5dGVzIGNvcnJlc3BvbmRpbmcgdG8KLy8vICAgIHBvc2l0aW9ucyBpbiB0aGUgZGVzdGluYXRpb24uCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgcmVzdWx0YW50IHZhbHVlcy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3NpZ25fZXBpOChfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpCnsKICAgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wc2lnbmIxMjgoKF9fdjE2cWkpX19hLCAoX192MTZxaSlfX2IpOwp9CgovLy8gRm9yIGVhY2ggMTYtYml0IGludGVnZXIgaW4gdGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kLCBwZXJmb3JtIG9uZSBvZgovLy8gICAgdGhlIGZvbGxvd2luZyBhY3Rpb25zIGFzIHNwZWNpZmllZCBieSB0aGUgc2Vjb25kIHNvdXJjZSBvcGVyYW5kLgovLy8KLy8vICAgIElmIHRoZSB3b3JkIGluIHRoZSBzZWNvbmQgc291cmNlIGlzIG5lZ2F0aXZlLCBjYWxjdWxhdGUgdGhlIHR3bydzCi8vLyAgICBjb21wbGVtZW50IG9mIHRoZSBjb3JyZXNwb25kaW5nIHdvcmQgaW4gdGhlIGZpcnN0IHNvdXJjZSwgYW5kIHdyaXRlIHRoYXQKLy8vICAgIHZhbHVlIHRvIHRoZSBkZXN0aW5hdGlvbi4gSWYgdGhlIHdvcmQgaW4gdGhlIHNlY29uZCBzb3VyY2UgaXMgcG9zaXRpdmUsCi8vLyAgICBjb3B5IHRoZSBjb3JyZXNwb25kaW5nIHdvcmQgZnJvbSB0aGUgZmlyc3Qgc291cmNlIHRvIHRoZSBkZXN0aW5hdGlvbi4gSWYKLy8vICAgIHRoZSB3b3JkIGluIHRoZSBzZWNvbmQgc291cmNlIGlzIHplcm8sIGNsZWFyIHRoZSBjb3JyZXNwb25kaW5nIHdvcmQgaW4KLy8vICAgIHRoZSBkZXN0aW5hdGlvbi4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIFxjIFZQU0lHTlcgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHZhbHVlcyB0byBiZSBjb3BpZWQuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBjb250cm9sIHdvcmRzIGNvcnJlc3BvbmRpbmcgdG8KLy8vICAgIHBvc2l0aW9ucyBpbiB0aGUgZGVzdGluYXRpb24uCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgcmVzdWx0YW50IHZhbHVlcy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3NpZ25fZXBpMTYoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQp7CiAgICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNpZ253MTI4KChfX3Y4aGkpX19hLCAoX192OGhpKV9fYik7Cn0KCi8vLyBGb3IgZWFjaCAzMi1iaXQgaW50ZWdlciBpbiB0aGUgZmlyc3Qgc291cmNlIG9wZXJhbmQsIHBlcmZvcm0gb25lIG9mCi8vLyAgICB0aGUgZm9sbG93aW5nIGFjdGlvbnMgYXMgc3BlY2lmaWVkIGJ5IHRoZSBzZWNvbmQgc291cmNlIG9wZXJhbmQuCi8vLwovLy8gICAgSWYgdGhlIGRvdWJsZXdvcmQgaW4gdGhlIHNlY29uZCBzb3VyY2UgaXMgbmVnYXRpdmUsIGNhbGN1bGF0ZSB0aGUgdHdvJ3MKLy8vICAgIGNvbXBsZW1lbnQgb2YgdGhlIGNvcnJlc3BvbmRpbmcgd29yZCBpbiB0aGUgZmlyc3Qgc291cmNlLCBhbmQgd3JpdGUgdGhhdAovLy8gICAgdmFsdWUgdG8gdGhlIGRlc3RpbmF0aW9uLiBJZiB0aGUgZG91Ymxld29yZCBpbiB0aGUgc2Vjb25kIHNvdXJjZSBpcwovLy8gICAgcG9zaXRpdmUsIGNvcHkgdGhlIGNvcnJlc3BvbmRpbmcgd29yZCBmcm9tIHRoZSBmaXJzdCBzb3VyY2UgdG8gdGhlCi8vLyAgICBkZXN0aW5hdGlvbi4gSWYgdGhlIGRvdWJsZXdvcmQgaW4gdGhlIHNlY29uZCBzb3VyY2UgaXMgemVybywgY2xlYXIgdGhlCi8vLyAgICBjb3JyZXNwb25kaW5nIHdvcmQgaW4gdGhlIGRlc3RpbmF0aW9uLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgXGMgVlBTSUdORCBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgdmFsdWVzIHRvIGJlIGNvcGllZC4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIGNvbnRyb2wgZG91Ymxld29yZHMgY29ycmVzcG9uZGluZyB0bwovLy8gICAgcG9zaXRpb25zIGluIHRoZSBkZXN0aW5hdGlvbi4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSByZXN1bHRhbnQgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc2lnbl9lcGkzMihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpCnsKICAgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wc2lnbmQxMjgoKF9fdjRzaSlfX2EsIChfX3Y0c2kpX19iKTsKfQoKLy8vIEZvciBlYWNoIDgtYml0IGludGVnZXIgaW4gdGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kLCBwZXJmb3JtIG9uZSBvZgovLy8gICAgdGhlIGZvbGxvd2luZyBhY3Rpb25zIGFzIHNwZWNpZmllZCBieSB0aGUgc2Vjb25kIHNvdXJjZSBvcGVyYW5kLgovLy8KLy8vICAgIElmIHRoZSBieXRlIGluIHRoZSBzZWNvbmQgc291cmNlIGlzIG5lZ2F0aXZlLCBjYWxjdWxhdGUgdGhlIHR3bydzCi8vLyAgICBjb21wbGVtZW50IG9mIHRoZSBjb3JyZXNwb25kaW5nIGJ5dGUgaW4gdGhlIGZpcnN0IHNvdXJjZSwgYW5kIHdyaXRlIHRoYXQKLy8vICAgIHZhbHVlIHRvIHRoZSBkZXN0aW5hdGlvbi4gSWYgdGhlIGJ5dGUgaW4gdGhlIHNlY29uZCBzb3VyY2UgaXMgcG9zaXRpdmUsCi8vLyAgICBjb3B5IHRoZSBjb3JyZXNwb25kaW5nIGJ5dGUgZnJvbSB0aGUgZmlyc3Qgc291cmNlIHRvIHRoZSBkZXN0aW5hdGlvbi4gSWYKLy8vICAgIHRoZSBieXRlIGluIHRoZSBzZWNvbmQgc291cmNlIGlzIHplcm8sIGNsZWFyIHRoZSBjb3JyZXNwb25kaW5nIGJ5dGUgaW4KLy8vICAgIHRoZSBkZXN0aW5hdGlvbi4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIFxjIFBTSUdOQiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSB2YWx1ZXMgdG8gYmUgY29waWVkLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBjb250cm9sIGJ5dGVzIGNvcnJlc3BvbmRpbmcgdG8KLy8vICAgIHBvc2l0aW9ucyBpbiB0aGUgZGVzdGluYXRpb24uCi8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSByZXN1bHRhbnQgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YCl9tbV9zaWduX3BpOChfX202NCBfX2EsIF9fbTY0IF9fYikKewogICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wc2lnbmIoKF9fdjhxaSlfX2EsIChfX3Y4cWkpX19iKTsKfQoKLy8vIEZvciBlYWNoIDE2LWJpdCBpbnRlZ2VyIGluIHRoZSBmaXJzdCBzb3VyY2Ugb3BlcmFuZCwgcGVyZm9ybSBvbmUgb2YKLy8vICAgIHRoZSBmb2xsb3dpbmcgYWN0aW9ucyBhcyBzcGVjaWZpZWQgYnkgdGhlIHNlY29uZCBzb3VyY2Ugb3BlcmFuZC4KLy8vCi8vLyAgICBJZiB0aGUgd29yZCBpbiB0aGUgc2Vjb25kIHNvdXJjZSBpcyBuZWdhdGl2ZSwgY2FsY3VsYXRlIHRoZSB0d28ncwovLy8gICAgY29tcGxlbWVudCBvZiB0aGUgY29ycmVzcG9uZGluZyB3b3JkIGluIHRoZSBmaXJzdCBzb3VyY2UsIGFuZCB3cml0ZSB0aGF0Ci8vLyAgICB2YWx1ZSB0byB0aGUgZGVzdGluYXRpb24uIElmIHRoZSB3b3JkIGluIHRoZSBzZWNvbmQgc291cmNlIGlzIHBvc2l0aXZlLAovLy8gICAgY29weSB0aGUgY29ycmVzcG9uZGluZyB3b3JkIGZyb20gdGhlIGZpcnN0IHNvdXJjZSB0byB0aGUgZGVzdGluYXRpb24uIElmCi8vLyAgICB0aGUgd29yZCBpbiB0aGUgc2Vjb25kIHNvdXJjZSBpcyB6ZXJvLCBjbGVhciB0aGUgY29ycmVzcG9uZGluZyB3b3JkIGluCi8vLyAgICB0aGUgZGVzdGluYXRpb24uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSBcYyBQU0lHTlcgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgdmFsdWVzIHRvIGJlIGNvcGllZC4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgY29udHJvbCB3b3JkcyBjb3JyZXNwb25kaW5nIHRvCi8vLyAgICBwb3NpdGlvbnMgaW4gdGhlIGRlc3RpbmF0aW9uLgovLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgcmVzdWx0YW50IHZhbHVlcy4Kc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTX01NWApfbW1fc2lnbl9waTE2KF9fbTY0IF9fYSwgX19tNjQgX19iKQp7CiAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BzaWdudygoX192NGhpKV9fYSwgKF9fdjRoaSlfX2IpOwp9CgovLy8gRm9yIGVhY2ggMzItYml0IGludGVnZXIgaW4gdGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kLCBwZXJmb3JtIG9uZSBvZgovLy8gICAgdGhlIGZvbGxvd2luZyBhY3Rpb25zIGFzIHNwZWNpZmllZCBieSB0aGUgc2Vjb25kIHNvdXJjZSBvcGVyYW5kLgovLy8KLy8vICAgIElmIHRoZSBkb3VibGV3b3JkIGluIHRoZSBzZWNvbmQgc291cmNlIGlzIG5lZ2F0aXZlLCBjYWxjdWxhdGUgdGhlIHR3bydzCi8vLyAgICBjb21wbGVtZW50IG9mIHRoZSBjb3JyZXNwb25kaW5nIGRvdWJsZXdvcmQgaW4gdGhlIGZpcnN0IHNvdXJjZSwgYW5kCi8vLyAgICB3cml0ZSB0aGF0IHZhbHVlIHRvIHRoZSBkZXN0aW5hdGlvbi4gSWYgdGhlIGRvdWJsZXdvcmQgaW4gdGhlIHNlY29uZAovLy8gICAgc291cmNlIGlzIHBvc2l0aXZlLCBjb3B5IHRoZSBjb3JyZXNwb25kaW5nIGRvdWJsZXdvcmQgZnJvbSB0aGUgZmlyc3QKLy8vICAgIHNvdXJjZSB0byB0aGUgZGVzdGluYXRpb24uIElmIHRoZSBkb3VibGV3b3JkIGluIHRoZSBzZWNvbmQgc291cmNlIGlzCi8vLyAgICB6ZXJvLCBjbGVhciB0aGUgY29ycmVzcG9uZGluZyBkb3VibGV3b3JkIGluIHRoZSBkZXN0aW5hdGlvbi4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIFxjIFBTSUdORCBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSB2YWx1ZXMgdG8gYmUgY29waWVkLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0d28gY29udHJvbCBkb3VibGV3b3JkcyBjb3JyZXNwb25kaW5nCi8vLyAgICB0byBwb3NpdGlvbnMgaW4gdGhlIGRlc3RpbmF0aW9uLgovLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgcmVzdWx0YW50IHZhbHVlcy4Kc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTX01NWApfbW1fc2lnbl9waTMyKF9fbTY0IF9fYSwgX19tNjQgX19iKQp7CiAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BzaWduZCgoX192MnNpKV9fYSwgKF9fdjJzaSlfX2IpOwp9CgojdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTCiN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YCgojZW5kaWYgLyogX19UTU1JTlRSSU5fSCAqLwoALyo9PT0tLS0tLS0tLS0tLS0tIHRzeGxkdHJraW50cmluLmggLSB0c3hsZHRyayBpbnRyaW5zaWNzIC0tLS0tLS0tLS0tLS0tLS0tLT09PQogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwoKI2lmbmRlZiBfX0lNTUlOVFJJTl9ICiNlcnJvciAiTmV2ZXIgdXNlIDx0c3hsZHRya2ludHJpbi5oPiBkaXJlY3RseTsgaW5jbHVkZSA8aW1taW50cmluLmg+IGluc3RlYWQuIgojZW5kaWYKCiNpZm5kZWYgX19UU1hMRFRSS0lOVFJJTl9ICiNkZWZpbmUgX19UU1hMRFRSS0lOVFJJTl9ICgovKiBEZWZpbmUgdGhlIGRlZmF1bHQgYXR0cmlidXRlcyBmb3IgdGhlIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUgKi8KI2RlZmluZSBfREVGQVVMVF9GTl9BVFRSUyBcCiAgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJ0c3hsZHRyayIpKSkKCi8vLyBNYXJrcyB0aGUgc3RhcnQgb2YgYW4gVFNYIChSVE0pIHN1c3BlbmQgbG9hZCBhZGRyZXNzIHRyYWNraW5nIHJlZ2lvbi4gSWYKLy8vICAgIHRoaXMgaW50cmluc2ljIGlzIHVzZWQgaW5zaWRlIGEgdHJhbnNhY3Rpb25hbCByZWdpb24sIHN1YnNlcXVlbnQgbG9hZHMKLy8vICAgIGFyZSBub3QgYWRkZWQgdG8gdGhlIHJlYWQgc2V0IG9mIHRoZSB0cmFuc2FjdGlvbi4gSWYgaXQncyB1c2VkIGluc2lkZSBhCi8vLyAgICBzdXNwZW5kIGxvYWQgYWRkcmVzcyB0cmFja2luZyByZWdpb24gaXQgd2lsbCBjYXVzZSB0cmFuc2FjdGlvbiBhYm9ydC4KLy8vICAgIElmIGl0J3MgdXNlZCBvdXRzaWRlIG9mIGEgdHJhbnNhY3Rpb25hbCByZWdpb24gaXQgYmVoYXZlcyBsaWtlIGEgTk9QLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgXGMgWFNVU0xEVFJLIGluc3RydWN0aW9uLgovLy8Kc3RhdGljIF9faW5saW5lX18gdm9pZCBfREVGQVVMVF9GTl9BVFRSUwpfeHN1c2xkdHJrICh2b2lkKQp7CiAgICBfX2J1aWx0aW5faWEzMl94c3VzbGR0cmsoKTsKfQoKLy8vIE1hcmtzIHRoZSBlbmQgb2YgYW4gVFNYIChSVE0pIHN1c3BlbmQgbG9hZCBhZGRyZXNzIHRyYWNraW5nIHJlZ2lvbi4gSWYgdGhpcwovLy8gICAgaW50cmluc2ljIGlzIHVzZWQgaW5zaWRlIGEgc3VzcGVuZCBsb2FkIGFkZHJlc3MgdHJhY2tpbmcgcmVnaW9uIGl0IHdpbGwKLy8vICAgIGVuZCB0aGUgc3VzcGVuZCByZWdpb24gYW5kIGFsbCBmb2xsb3dpbmcgbG9hZCBhZGRyZXNzZXMgd2lsbCBiZSBhZGRlZCB0bwovLy8gICAgdGhlIHRyYW5zYWN0aW9uIHJlYWQgc2V0LiBJZiBpdCdzIHVzZWQgaW5zaWRlIGFuIGFjdGl2ZSB0cmFuc2FjdGlvbiBidXQKLy8vICAgIG5vdCBpbiBhIHN1c3BlbmQgcmVnaW9uIGl0IHdpbGwgY2F1c2UgdHJhbnNhY3Rpb24gYWJvcnQuIElmIGl0J3MgdXNlZAovLy8gICAgb3V0c2lkZSBvZiBhIHRyYW5zYWN0aW9uYWwgcmVnaW9uIGl0IGJlaGF2ZXMgbGlrZSBhIE5PUC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIFxjIFhSRVNMRFRSSyBpbnN0cnVjdGlvbi4KLy8vCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX0RFRkFVTFRfRk5fQVRUUlMKX3hyZXNsZHRyayAodm9pZCkKewogICAgX19idWlsdGluX2lhMzJfeHJlc2xkdHJrKCk7Cn0KCiN1bmRlZiBfREVGQVVMVF9GTl9BVFRSUwoKI2VuZGlmIC8qIF9fVFNYTERUUktJTlRSSU5fSCAqLwoALyo9PT0tLS0tLS0tLS0tLS0tLSB3Ym5vaW52ZGludHJpbi5oIC0gd2Jub2ludmQgaW50cmluc2ljLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwoKI2lmICFkZWZpbmVkIF9fWDg2SU5UUklOX0ggJiYgIWRlZmluZWQgX19JTU1JTlRSSU5fSAojZXJyb3IgIk5ldmVyIHVzZSA8d2Jub2ludmRpbnRyaW4uaD4gZGlyZWN0bHk7IGluY2x1ZGUgPHg4NmludHJpbi5oPiBpbnN0ZWFkLiIKI2VuZGlmCgojaWZuZGVmIF9fV0JOT0lOVkRJTlRSSU5fSAojZGVmaW5lIF9fV0JOT0lOVkRJTlRSSU5fSAoKc3RhdGljIF9faW5saW5lX18gdm9pZAogIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgIF9fdGFyZ2V0X18oIndibm9pbnZkIikpKQpfd2Jub2ludmQgKHZvaWQpCnsKICBfX2J1aWx0aW5faWEzMl93Ym5vaW52ZCAoKTsKfQoKI2VuZGlmIC8qIF9fV0JOT0lOVkRJTlRSSU5fSCAqLwoALyo9PT0tIF9fY2xhbmdfb3Blbm1wX2RldmljZV9mdW5jdGlvbnMuaCAtIE9wZW5NUCBkZXZpY2UgZnVuY3Rpb24gZGVjbGFyZXMgLT09PQogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwoKI2lmbmRlZiBfX0NMQU5HX09QRU5NUF9ERVZJQ0VfRlVOQ1RJT05TX0hfXwojZGVmaW5lIF9fQ0xBTkdfT1BFTk1QX0RFVklDRV9GVU5DVElPTlNfSF9fCgojaWZuZGVmIF9PUEVOTVAKI2Vycm9yICJUaGlzIGZpbGUgaXMgZm9yIE9wZW5NUCBjb21waWxhdGlvbiBvbmx5LiIKI2VuZGlmCgojaWZkZWYgX19jcGx1c3BsdXMKZXh0ZXJuICJDIiB7CiNlbmRpZgoKI3ByYWdtYSBvbXAgYmVnaW4gZGVjbGFyZSB2YXJpYW50IG1hdGNoKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIGRldmljZSA9IHthcmNoKG52cHR4LCBudnB0eDY0KX0sIGltcGxlbWVudGF0aW9uID0ge2V4dGVuc2lvbihtYXRjaF9hbnkpfSkKCiNkZWZpbmUgX19DVURBX18KI2RlZmluZSBfX09QRU5NUF9OVlBUWF9fCgovLy8gSW5jbHVkZSBkZWNsYXJhdGlvbnMgZm9yIGxpYmRldmljZSBmdW5jdGlvbnMuCiNpbmNsdWRlIDxfX2NsYW5nX2N1ZGFfbGliZGV2aWNlX2RlY2xhcmVzLmg+CgovLy8gUHJvdmlkZSBkZWZpbml0aW9ucyBmb3IgdGhlc2UgZnVuY3Rpb25zLgojaW5jbHVkZSA8X19jbGFuZ19jdWRhX2RldmljZV9mdW5jdGlvbnMuaD4KCiN1bmRlZiBfX09QRU5NUF9OVlBUWF9fCiN1bmRlZiBfX0NVREFfXwoKI3ByYWdtYSBvbXAgZW5kIGRlY2xhcmUgdmFyaWFudAoKI2lmZGVmIF9fQU1ER0NOX18KI3ByYWdtYSBvbXAgYmVnaW4gZGVjbGFyZSB2YXJpYW50IG1hdGNoKGRldmljZSA9IHthcmNoKGFtZGdjbil9KQoKLy8gSW1wb3J0IHR5cGVzIHdoaWNoIHdpbGwgYmUgdXNlZCBieSBfX2NsYW5nX2hpcF9saWJkZXZpY2VfZGVjbGFyZXMuaAojaWZuZGVmIF9fY3BsdXNwbHVzCiNpbmNsdWRlIDxzdGRib29sLmg+CiNpbmNsdWRlIDxzdGRpbnQuaD4KI2VuZGlmCgojZGVmaW5lIF9fT1BFTk1QX0FNREdDTl9fCiNwcmFnbWEgcHVzaF9tYWNybygiX19kZXZpY2VfXyIpCiNkZWZpbmUgX19kZXZpY2VfXwoKLy8vIEluY2x1ZGUgZGVjbGFyYXRpb25zIGZvciBsaWJkZXZpY2UgZnVuY3Rpb25zLgojaW5jbHVkZSA8X19jbGFuZ19oaXBfbGliZGV2aWNlX2RlY2xhcmVzLmg+CgojcHJhZ21hIHBvcF9tYWNybygiX19kZXZpY2VfXyIpCiN1bmRlZiBfX09QRU5NUF9BTURHQ05fXwoKI3ByYWdtYSBvbXAgZW5kIGRlY2xhcmUgdmFyaWFudAojZW5kaWYKCiNpZmRlZiBfX2NwbHVzcGx1cwp9IC8vIGV4dGVybiAiQyIKI2VuZGlmCgovLyBFbnN1cmUgd2UgbWFrZSBgX1pkbFB2YCwgYWthLiBgb3BlcmF0b3IgZGVsZXRlKHZvaWQqKWAgYXZhaWxhYmxlIHdpdGhvdXQgdGhlCi8vIG5lZWQgdG8gYGluY2x1ZGUgPG5ldz5gIGluIEMrKyBtb2RlLgojaWZkZWYgX19jcGx1c3BsdXMKCi8vIFdlIHJlcXVpcmUgbWFsbG9jL2ZyZWUuCiNpbmNsdWRlIDxjc3RkbGliPgoKI3ByYWdtYSBwdXNoX21hY3JvKCJPUEVOTVBfTk9FWENFUFQiKQojaWYgX19jcGx1c3BsdXMgPj0gMjAxMTAzTAojZGVmaW5lIE9QRU5NUF9OT0VYQ0VQVCBub2V4Y2VwdAojZWxzZQojZGVmaW5lIE9QRU5NUF9OT0VYQ0VQVAojZW5kaWYKCi8vIERldmljZSBvdmVycmlkZXMgZm9yIG5vbi1wbGFjZW1lbnQgbmV3IGFuZCBkZWxldGUuCmlubGluZSB2b2lkICpvcGVyYXRvciBuZXcoX19TSVpFX1RZUEVfXyBzaXplKSB7CiAgaWYgKHNpemUgPT0gMCkKICAgIHNpemUgPSAxOwogIHJldHVybiA6Om1hbGxvYyhzaXplKTsKfQoKaW5saW5lIHZvaWQgKm9wZXJhdG9yIG5ld1tdKF9fU0laRV9UWVBFX18gc2l6ZSkgeyByZXR1cm4gOjpvcGVyYXRvciBuZXcoc2l6ZSk7IH0KCmlubGluZSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkICpwdHIpT1BFTk1QX05PRVhDRVBUIHsgOjpmcmVlKHB0cik7IH0KCmlubGluZSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQgKnB0cikgT1BFTk1QX05PRVhDRVBUIHsKICA6Om9wZXJhdG9yIGRlbGV0ZShwdHIpOwp9CgovLyBTaXplZCBkZWxldGUsIEMrKzE0IG9ubHkuCiNpZiBfX2NwbHVzcGx1cyA+PSAyMDE0MDJMCmlubGluZSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkICpwdHIsIF9fU0laRV9UWVBFX18gc2l6ZSlPUEVOTVBfTk9FWENFUFQgewogIDo6b3BlcmF0b3IgZGVsZXRlKHB0cik7Cn0KaW5saW5lIHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCAqcHRyLCBfX1NJWkVfVFlQRV9fIHNpemUpIE9QRU5NUF9OT0VYQ0VQVCB7CiAgOjpvcGVyYXRvciBkZWxldGUocHRyKTsKfQojZW5kaWYKCiNwcmFnbWEgcG9wX21hY3JvKCJPUEVOTVBfTk9FWENFUFQiKQojZW5kaWYKCiNlbmRpZgoALy89PT0tLSBzYW5pdGl6ZXIvYXNhbl9pbnRlcmZhY2UuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KLy8KLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KLy8KLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KLy8KLy8gVGhpcyBmaWxlIGlzIGEgcGFydCBvZiBIV0FkZHJlc3NTYW5pdGl6ZXIuCi8vCi8vIFB1YmxpYyBpbnRlcmZhY2UgaGVhZGVyLgovLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwojaWZuZGVmIFNBTklUSVpFUl9IV0FTQU5fSU5URVJGQUNFX0gKI2RlZmluZSBTQU5JVElaRVJfSFdBU0FOX0lOVEVSRkFDRV9ICgojaW5jbHVkZSA8c2FuaXRpemVyL2NvbW1vbl9pbnRlcmZhY2VfZGVmcy5oPgoKI2lmZGVmIF9fY3BsdXNwbHVzCmV4dGVybiAiQyIgewojZW5kaWYKICAvLyBMaWJjIGhvb2sgZm9yIHByb2dyYW0gc3RhcnR1cCBpbiBzdGF0aWNhbGx5IGxpbmtlZCBleGVjdXRhYmxlcy4KICAvLyBJbml0aWFsaXplcyBlbm91Z2ggb2YgdGhlIHJ1bnRpbWUgdG8gcnVuIGluc3RydW1lbnRlZCBjb2RlLiBUaGlzIGZ1bmN0aW9uCiAgLy8gc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGluIHN0YXRpY2FsbHkgbGlua2VkIGV4ZWN1dGFibGVzIGJlY2F1c2UgaXQgbW9kaWZpZXMKICAvLyB0aGUgR09ULCB3aGljaCB3b24ndCB3b3JrIGluIHJlZ3VsYXIgYmluYXJpZXMgYmVjYXVzZSBSRUxSTyB3aWxsIGFscmVhZHkKICAvLyBoYXZlIGJlZW4gYXBwbGllZCBieSB0aGUgdGltZSB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLiBUaGlzIGFsc28gbWVhbnMgdGhhdAogIC8vIHRoZSBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIGJlZm9yZSBsaWJjIGFwcGxpZXMgUkVMUk8uCiAgLy8gRG9lcyBub3QgY2FsbCBsaWJjIHVubGVzcyB0aGVyZSBpcyBhbiBlcnJvci4KICAvLyBDYW4gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzLgogIHZvaWQgX19od2FzYW5faW5pdF9zdGF0aWModm9pZCk7CgogIC8vIFRoaXMgZnVuY3Rpb24gbWF5IGJlIG9wdGlvbmFsbHkgcHJvdmlkZWQgYnkgdXNlciBhbmQgc2hvdWxkIHJldHVybgogIC8vIGEgc3RyaW5nIGNvbnRhaW5pbmcgSFdBU2FuIHJ1bnRpbWUgb3B0aW9ucy4gU2VlIGFzYW5fZmxhZ3MuaCBmb3IgZGV0YWlscy4KICBjb25zdCBjaGFyKiBfX2h3YXNhbl9kZWZhdWx0X29wdGlvbnModm9pZCk7CgogIHZvaWQgX19od2FzYW5fZW5hYmxlX2FsbG9jYXRvcl90YWdnaW5nKHZvaWQpOwogIHZvaWQgX19od2FzYW5fZGlzYWJsZV9hbGxvY2F0b3JfdGFnZ2luZyh2b2lkKTsKCiAgLy8gTWFyayByZWdpb24gb2YgbWVtb3J5IHdpdGggdGhlIGdpdmVuIHRhZy4gQm90aCBhZGRyZXNzIGFuZCBzaXplIG5lZWQgdG8gYmUKICAvLyAxNi1ieXRlIGFsaWduZWQuCiAgdm9pZCBfX2h3YXNhbl90YWdfbWVtb3J5KGNvbnN0IHZvbGF0aWxlIHZvaWQgKnAsIHVuc2lnbmVkIGNoYXIgdGFnLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSk7CgogIC8vLyBTZXQgcG9pbnRlciB0YWcuIFByZXZpb3VzIHRhZyBpcyBsb3N0LgogIHZvaWQgKl9faHdhc2FuX3RhZ19wb2ludGVyKGNvbnN0IHZvbGF0aWxlIHZvaWQgKnAsIHVuc2lnbmVkIGNoYXIgdGFnKTsKCiAgLy8gU2V0IG1lbW9yeSB0YWcgZnJvbSB0aGUgY3VycmVudCBTUCBhZGRyZXNzIHRvIHRoZSBnaXZlbiBhZGRyZXNzIHRvIHplcm8uCiAgLy8gVGhpcyBpcyBtZWFudCB0byBhbm5vdGF0ZSBsb25nam1wIGFuZCBvdGhlciBub24tbG9jYWwganVtcHMuCiAgLy8gVGhpcyBmdW5jdGlvbiBuZWVkcyB0byBrbm93IHRoZSAoYWxtb3N0KSBleGFjdCBkZXN0aW5hdGlvbiBmcmFtZSBhZGRyZXNzOwogIC8vIGNsZWFyaW5nIHNoYWRvdyBmb3IgdGhlIGVudGlyZSB0aHJlYWQgc3RhY2sgbGlrZSBfX2FzYW5faGFuZGxlX25vX3JldHVybgogIC8vIGRvZXMgd291bGQgY2F1c2UgZmFsc2UgcmVwb3J0cy4KICB2b2lkIF9faHdhc2FuX2hhbmRsZV9sb25nam1wKGNvbnN0IHZvaWQgKnNwX2RzdCk7CgogIC8vIFNldCBtZW1vcnkgdGFnIGZvciB0aGUgcGFydCBvZiB0aGUgY3VycmVudCB0aHJlYWQgc3RhY2sgYmVsb3cgc3BfZHN0IHRvCiAgLy8gemVyby4gQ2FsbCB0aGlzIGluIHZmb3JrKCkgYmVmb3JlIHJldHVybmluZyBpbiB0aGUgcGFyZW50IHByb2Nlc3MuCiAgdm9pZCBfX2h3YXNhbl9oYW5kbGVfdmZvcmsoY29uc3Qgdm9pZCAqc3BfZHN0KTsKCiAgLy8gTGliYyBob29rIGZvciB0aHJlYWQgY3JlYXRpb24uIFNob3VsZCBiZSBjYWxsZWQgaW4gdGhlIGNoaWxkIHRocmVhZCBiZWZvcmUKICAvLyBhbnkgaW5zdHJ1bWVudGVkIGNvZGUuCiAgdm9pZCBfX2h3YXNhbl90aHJlYWRfZW50ZXIoKTsKCiAgLy8gTGliYyBob29rIGZvciB0aHJlYWQgZGVzdHJ1Y3Rpb24uIE5vIGluc3RydW1lbnRlZCBjb2RlIHNob3VsZCBydW4gYWZ0ZXIKICAvLyB0aGlzIGNhbGwuCiAgdm9pZCBfX2h3YXNhbl90aHJlYWRfZXhpdCgpOwoKICAvLyBQcmludCBzaGFkb3cgYW5kIG9yaWdpbiBmb3IgdGhlIG1lbW9yeSByYW5nZSB0byBzdGRlcnIgaW4gYSBodW1hbi1yZWFkYWJsZQogIC8vIGZvcm1hdC4KICB2b2lkIF9faHdhc2FuX3ByaW50X3NoYWRvdyhjb25zdCB2b2xhdGlsZSB2b2lkICp4LCBzaXplX3Qgc2l6ZSk7CgogIC8vIFByaW50IG9uZS1saW5lIHJlcG9ydCBhYm91dCB0aGUgbWVtb3J5IHVzYWdlIG9mIHRoZSBjdXJyZW50IHByb2Nlc3MuCiAgdm9pZCBfX2h3YXNhbl9wcmludF9tZW1vcnlfdXNhZ2UoKTsKCiAgLyogUmV0dXJucyB0aGUgb2Zmc2V0IG9mIHRoZSBmaXJzdCBieXRlIGluIHRoZSBtZW1vcnkgcmFuZ2UgdGhhdCBjYW4gbm90IGJlCiAgICogYWNjZXNzZWQgdGhyb3VnaCB0aGUgcG9pbnRlciBpbiB4LCBvciAtMSBpZiB0aGUgd2hvbGUgcmFuZ2UgaXMgZ29vZC4gKi8KICBpbnRwdHJfdCBfX2h3YXNhbl90ZXN0X3NoYWRvdyhjb25zdCB2b2xhdGlsZSB2b2lkICp4LCBzaXplX3Qgc2l6ZSk7CgogIC8qIFNldHMgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBkdXJpbmcgSFdBU2FuIGVycm9yIHJlcG9ydGluZy4gKi8KICB2b2lkIF9faHdhc2FuX3NldF9lcnJvcl9yZXBvcnRfY2FsbGJhY2sodm9pZCAoKmNhbGxiYWNrKShjb25zdCBjaGFyICopKTsKCiAgaW50IF9fc2FuaXRpemVyX3Bvc2l4X21lbWFsaWduKHZvaWQgKiptZW1wdHIsIHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCBzaXplKTsKICB2b2lkICogX19zYW5pdGl6ZXJfbWVtYWxpZ24oc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90IHNpemUpOwogIHZvaWQgKiBfX3Nhbml0aXplcl9hbGlnbmVkX2FsbG9jKHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCBzaXplKTsKICB2b2lkICogX19zYW5pdGl6ZXJfX19saWJjX21lbWFsaWduKHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCBzaXplKTsKICB2b2lkICogX19zYW5pdGl6ZXJfdmFsbG9jKHNpemVfdCBzaXplKTsKICB2b2lkICogX19zYW5pdGl6ZXJfcHZhbGxvYyhzaXplX3Qgc2l6ZSk7CiAgdm9pZCBfX3Nhbml0aXplcl9mcmVlKHZvaWQgKnB0cik7CiAgdm9pZCBfX3Nhbml0aXplcl9jZnJlZSh2b2lkICpwdHIpOwogIHNpemVfdCBfX3Nhbml0aXplcl9tYWxsb2NfdXNhYmxlX3NpemUoY29uc3Qgdm9pZCAqcHRyKTsKICBzdHJ1Y3QgbWFsbGluZm8gX19zYW5pdGl6ZXJfbWFsbGluZm8oKTsKICBpbnQgX19zYW5pdGl6ZXJfbWFsbG9wdChpbnQgY21kLCBpbnQgdmFsdWUpOwogIHZvaWQgX19zYW5pdGl6ZXJfbWFsbG9jX3N0YXRzKHZvaWQpOwogIHZvaWQgKiBfX3Nhbml0aXplcl9jYWxsb2Moc2l6ZV90IG5tZW1iLCBzaXplX3Qgc2l6ZSk7CiAgdm9pZCAqIF9fc2FuaXRpemVyX3JlYWxsb2Modm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSk7CiAgdm9pZCAqIF9fc2FuaXRpemVyX3JlYWxsb2NhcnJheSh2b2lkICpwdHIsIHNpemVfdCBubWVtYiwgc2l6ZV90IHNpemUpOwogIHZvaWQgKiBfX3Nhbml0aXplcl9tYWxsb2Moc2l6ZV90IHNpemUpOwojaWZkZWYgX19jcGx1c3BsdXMKfSAgLy8gZXh0ZXJuICJDIgojZW5kaWYKCiNlbmRpZiAgLy8gU0FOSVRJWkVSX0hXQVNBTl9JTlRFUkZBQ0VfSAoAY29ycHVzAFJFMjogaW52YWxpZCBzdGFydHBvcywgZW5kcG9zIHBhaXIuIFsAUmVwZXRpdGlvbldhbGtlcjo6U2hvcnRWaXNpdCBjYWxsZWQAQ29uY2F0IG9mIABleHRlcm5hbC9yZWdleC1yZTIvcmUyL3dhbGtlci1pbmwuaABbOl5wdW5jdDpdAFslMDJ4LSUwMnhdIC0+ICVkCgBcJTAzbwBtaXNzaW5nIF0AQ2FuYWRpYW5fQWJvcmlnaW5hbABIaXJhZ2FuYQBMaW1idQBNaWFvAE4AUGhvZW5pY2lhbgBTaGF2aWFuAFRhaV9UaGFtAGxlZnRfAGJhZCBhcmVuYSBwb2ludGVyIGluIEFkZFRvRnJlZWxpc3QoKQBzLT5oZWFkZXIuYXJlbmEgPT0gYXJlbmEATG93TGV2ZWxBbGxvYyBhcml0aG1ldGljIG92ZXJmbG93AG5leHQtPmhlYWRlci5hcmVuYSA9PSBhcmVuYQBzAHVuc2lnbmVkIHNob3J0AGF1dG8AREFUQV9MT1NTACBleGNlZWRzIFVuaWNvZGUgbGltaXQgKDB4MTBGRkZGKQAsIHRhaWwgPSAAIGVudHJ5WwAgYW5kL29yIHRhaWwgAGZhbHNlAG9sZF9oID09IG51bGxwdHIgfHwgaC0+bWF5YmVfdW5sb2NraW5nAG5vdCB3YWl0aW5nIHdoZW4gc2hvdWxkIGJlAHVzAFRaAGxvY2FsdGltZQB6b25laW5mby90emlmMi8AZXh0ZXJuYWwvYm9yaW5nc3NsL3NyYy9jcnlwdG8vZmlwc21vZHVsZS9ibi9jdHguYwAzREVTIEVuY3J5cHRpb24gS0FUAFNIQS0xIEtBVABmYWlsZWQgdG8gb3BlbiAvZGV2L3VyYW5kb20ARGlnZXN0IGZ1bmN0aW9ucwBreXRoZS5wcm90by5WTmFtZS5jb3JwdXMATWlzc2luZyByZXF1aXJlZCBmaWxlICVzLgoALyo9PT0tLS0gX19jbGFuZ19jdWRhX2ludHJpbnNpY3MuaCAtIERldmljZS1zaWRlIENVREEgaW50cmluc2ljIHdyYXBwZXJzIC0tLT09PQogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwojaWZuZGVmIF9fQ0xBTkdfQ1VEQV9JTlRSSU5TSUNTX0hfXwojZGVmaW5lIF9fQ0xBTkdfQ1VEQV9JTlRSSU5TSUNTX0hfXwojaWZuZGVmIF9fQ1VEQV9fCiNlcnJvciAiVGhpcyBmaWxlIGlzIGZvciBDVURBIGNvbXBpbGF0aW9uIG9ubHkuIgojZW5kaWYKCi8vIHNtXzMwIGludHJpbnNpY3M6IF9fc2hmbF97dXAsZG93bix4b3J9LgoKI2RlZmluZSBfX1NNXzMwX0lOVFJJTlNJQ1NfSF9fCiNkZWZpbmUgX19TTV8zMF9JTlRSSU5TSUNTX0hQUF9fCgojaWYgIWRlZmluZWQoX19DVURBX0FSQ0hfXykgfHwgX19DVURBX0FSQ0hfXyA+PSAzMDAKCiNwcmFnbWEgcHVzaF9tYWNybygiX19NQUtFX1NIVUZGTEVTIikKI2RlZmluZSBfX01BS0VfU0hVRkZMRVMoX19Gbk5hbWUsIF9fSW50SW50cmluc2ljLCBfX0Zsb2F0SW50cmluc2ljLCBfX01hc2ssICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgX19UeXBlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBpbmxpbmUgX19kZXZpY2VfXyBpbnQgX19Gbk5hbWUoaW50IF9fdmFsLCBfX1R5cGUgX19vZmZzZXQsICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fd2lkdGggPSB3YXJwU2l6ZSkgeyAgICAgICAgICAgICAgICAgICAgIFwKICAgIHJldHVybiBfX0ludEludHJpbnNpYyhfX3ZhbCwgX19vZmZzZXQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAoKHdhcnBTaXplIC0gX193aWR0aCkgPDwgOCkgfCAoX19NYXNrKSk7ICAgICAgICAgICAgIFwKICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBpbmxpbmUgX19kZXZpY2VfXyBmbG9hdCBfX0ZuTmFtZShmbG9hdCBfX3ZhbCwgX19UeXBlIF9fb2Zmc2V0LCAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX193aWR0aCA9IHdhcnBTaXplKSB7ICAgICAgICAgICAgICAgICAgIFwKICAgIHJldHVybiBfX0Zsb2F0SW50cmluc2ljKF9fdmFsLCBfX29mZnNldCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICgod2FycFNpemUgLSBfX3dpZHRoKSA8PCA4KSB8IChfX01hc2spKTsgICAgICAgICAgIFwKICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBpbmxpbmUgX19kZXZpY2VfXyB1bnNpZ25lZCBpbnQgX19Gbk5hbWUodW5zaWduZWQgaW50IF9fdmFsLCBfX1R5cGUgX19vZmZzZXQsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fd2lkdGggPSB3YXJwU2l6ZSkgeyAgICAgICAgICAgIFwKICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICA6Ol9fRm5OYW1lKHN0YXRpY19jYXN0PGludD4oX192YWwpLCBfX29mZnNldCwgX193aWR0aCkpOyAgICAgICAgICAgICAgIFwKICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBpbmxpbmUgX19kZXZpY2VfXyBsb25nIGxvbmcgX19Gbk5hbWUobG9uZyBsb25nIF9fdmFsLCBfX1R5cGUgX19vZmZzZXQsICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fd2lkdGggPSB3YXJwU2l6ZSkgeyAgICAgICAgICAgICAgIFwKICAgIHN0cnVjdCBfX0JpdHMgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgaW50IF9fYSwgX19iOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9TdGF0aWNfYXNzZXJ0KHNpemVvZihfX3ZhbCkgPT0gc2l6ZW9mKF9fQml0cykpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9TdGF0aWNfYXNzZXJ0KHNpemVvZihfX0JpdHMpID09IDIgKiBzaXplb2YoaW50KSk7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9fQml0cyBfX3RtcDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIG1lbWNweSgmX190bXAsICZfX3ZhbCwgc2l6ZW9mKF9fdmFsKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfX3RtcC5fX2EgPSA6Ol9fRm5OYW1lKF9fdG1wLl9fYSwgX19vZmZzZXQsIF9fd2lkdGgpOyAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfX3RtcC5fX2IgPSA6Ol9fRm5OYW1lKF9fdG1wLl9fYiwgX19vZmZzZXQsIF9fd2lkdGgpOyAgICAgICAgICAgICAgICAgICAgICBcCiAgICBsb25nIGxvbmcgX19yZXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBtZW1jcHkoJl9fcmV0LCAmX190bXAsIHNpemVvZihfX3RtcCkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICByZXR1cm4gX19yZXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgaW5saW5lIF9fZGV2aWNlX18gbG9uZyBfX0ZuTmFtZShsb25nIF9fdmFsLCBfX1R5cGUgX19vZmZzZXQsICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX193aWR0aCA9IHdhcnBTaXplKSB7ICAgICAgICAgICAgICAgICAgICBcCiAgICBfU3RhdGljX2Fzc2VydChzaXplb2YobG9uZykgPT0gc2l6ZW9mKGxvbmcgbG9uZykgfHwgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICBzaXplb2YobG9uZykgPT0gc2l6ZW9mKGludCkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBpZiAoc2l6ZW9mKGxvbmcpID09IHNpemVvZihsb25nIGxvbmcpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxsb25nPiggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICA6Ol9fRm5OYW1lKHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oX192YWwpLCBfX29mZnNldCwgX193aWR0aCkpOyAgICAgICBcCiAgICB9IGVsc2UgaWYgKHNpemVvZihsb25nKSA9PSBzaXplb2YoaW50KSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxsb25nPiggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICA6Ol9fRm5OYW1lKHN0YXRpY19jYXN0PGludD4oX192YWwpLCBfX29mZnNldCwgX193aWR0aCkpOyAgICAgICAgICAgICBcCiAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgaW5saW5lIF9fZGV2aWNlX18gdW5zaWduZWQgbG9uZyBfX0ZuTmFtZSggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHVuc2lnbmVkIGxvbmcgX192YWwsIF9fVHlwZSBfX29mZnNldCwgaW50IF9fd2lkdGggPSB3YXJwU2l6ZSkgeyAgICAgICAgICBcCiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgOjpfX0ZuTmFtZShzdGF0aWNfY2FzdDxsb25nPihfX3ZhbCksIF9fb2Zmc2V0LCBfX3dpZHRoKSk7ICAgICAgICAgICAgICBcCiAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgaW5saW5lIF9fZGV2aWNlX18gdW5zaWduZWQgbG9uZyBsb25nIF9fRm5OYW1lKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3ZhbCwgX19UeXBlIF9fb2Zmc2V0LCBpbnQgX193aWR0aCA9IHdhcnBTaXplKSB7ICAgICBcCiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPig6Ol9fRm5OYW1lKCAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihfX3ZhbCksIF9fb2Zmc2V0LCBfX3dpZHRoKSk7ICAgICAgICAgICBcCiAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgaW5saW5lIF9fZGV2aWNlX18gZG91YmxlIF9fRm5OYW1lKGRvdWJsZSBfX3ZhbCwgX19UeXBlIF9fb2Zmc2V0LCAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX3dpZHRoID0gd2FycFNpemUpIHsgICAgICAgICAgICAgICAgICBcCiAgICBsb25nIGxvbmcgX190bXA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfU3RhdGljX2Fzc2VydChzaXplb2YoX190bXApID09IHNpemVvZihfX3ZhbCkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBtZW1jcHkoJl9fdG1wLCAmX192YWwsIHNpemVvZihfX3ZhbCkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfX3RtcCA9IDo6X19Gbk5hbWUoX190bXAsIF9fb2Zmc2V0LCBfX3dpZHRoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBkb3VibGUgX19yZXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBtZW1jcHkoJl9fcmV0LCAmX190bXAsIHNpemVvZihfX3JldCkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICByZXR1cm4gX19yZXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfQoKX19NQUtFX1NIVUZGTEVTKF9fc2hmbCwgX19udnZtX3NoZmxfaWR4X2kzMiwgX19udnZtX3NoZmxfaWR4X2YzMiwgMHgxZiwgaW50KTsKLy8gV2UgdXNlIDAgcmF0aGVyIHRoYW4gMzEgYXMgb3VyIG1hc2ssIGJlY2F1c2Ugc2hmbC51cCBhcHBsaWVzIHRvIGxhbmVzID49Ci8vIG1heExhbmUuCl9fTUFLRV9TSFVGRkxFUyhfX3NoZmxfdXAsIF9fbnZ2bV9zaGZsX3VwX2kzMiwgX19udnZtX3NoZmxfdXBfZjMyLCAwLAogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50KTsKX19NQUtFX1NIVUZGTEVTKF9fc2hmbF9kb3duLCBfX252dm1fc2hmbF9kb3duX2kzMiwgX19udnZtX3NoZmxfZG93bl9mMzIsIDB4MWYsCiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQpOwpfX01BS0VfU0hVRkZMRVMoX19zaGZsX3hvciwgX19udnZtX3NoZmxfYmZseV9pMzIsIF9fbnZ2bV9zaGZsX2JmbHlfZjMyLCAweDFmLAogICAgICAgICAgICAgICAgaW50KTsKI3ByYWdtYSBwb3BfbWFjcm8oIl9fTUFLRV9TSFVGRkxFUyIpCgojZW5kaWYgLy8gIWRlZmluZWQoX19DVURBX0FSQ0hfXykgfHwgX19DVURBX0FSQ0hfXyA+PSAzMDAKCiNpZiBDVURBX1ZFUlNJT04gPj0gOTAwMAojaWYgKCFkZWZpbmVkKF9fQ1VEQV9BUkNIX18pIHx8IF9fQ1VEQV9BUkNIX18gPj0gMzAwKQovLyBfX3NoZmxfc3luY18qIHZhcmlhbnRzIGF2YWlsYWJsZSBpbiBDVURBLTkKI3ByYWdtYSBwdXNoX21hY3JvKCJfX01BS0VfU1lOQ19TSFVGRkxFUyIpCiNkZWZpbmUgX19NQUtFX1NZTkNfU0hVRkZMRVMoX19Gbk5hbWUsIF9fSW50SW50cmluc2ljLCBfX0Zsb2F0SW50cmluc2ljLCAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19NYXNrLCBfX1R5cGUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgaW5saW5lIF9fZGV2aWNlX18gaW50IF9fRm5OYW1lKHVuc2lnbmVkIGludCBfX21hc2ssIGludCBfX3ZhbCwgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fVHlwZSBfX29mZnNldCwgaW50IF9fd2lkdGggPSB3YXJwU2l6ZSkgeyAgICBcCiAgICByZXR1cm4gX19JbnRJbnRyaW5zaWMoX19tYXNrLCBfX3ZhbCwgX19vZmZzZXQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgKCh3YXJwU2l6ZSAtIF9fd2lkdGgpIDw8IDgpIHwgKF9fTWFzaykpOyAgICAgICAgICAgICBcCiAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgaW5saW5lIF9fZGV2aWNlX18gZmxvYXQgX19Gbk5hbWUodW5zaWduZWQgaW50IF9fbWFzaywgZmxvYXQgX192YWwsICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19UeXBlIF9fb2Zmc2V0LCBpbnQgX193aWR0aCA9IHdhcnBTaXplKSB7ICBcCiAgICByZXR1cm4gX19GbG9hdEludHJpbnNpYyhfX21hc2ssIF9fdmFsLCBfX29mZnNldCwgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHdhcnBTaXplIC0gX193aWR0aCkgPDwgOCkgfCAoX19NYXNrKSk7ICAgICAgICAgICBcCiAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgaW5saW5lIF9fZGV2aWNlX18gdW5zaWduZWQgaW50IF9fRm5OYW1lKHVuc2lnbmVkIGludCBfX21hc2ssICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3ZhbCwgX19UeXBlIF9fb2Zmc2V0LCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX3dpZHRoID0gd2FycFNpemUpIHsgICAgICAgICAgICBcCiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PiggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgOjpfX0ZuTmFtZShfX21hc2ssIHN0YXRpY19jYXN0PGludD4oX192YWwpLCBfX29mZnNldCwgX193aWR0aCkpOyAgICAgICBcCiAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgaW5saW5lIF9fZGV2aWNlX18gbG9uZyBsb25nIF9fRm5OYW1lKHVuc2lnbmVkIGludCBfX21hc2ssIGxvbmcgbG9uZyBfX3ZhbCwgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fVHlwZSBfX29mZnNldCwgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX3dpZHRoID0gd2FycFNpemUpIHsgICAgICAgICAgICAgICBcCiAgICBzdHJ1Y3QgX19CaXRzIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGludCBfX2EsIF9fYjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfU3RhdGljX2Fzc2VydChzaXplb2YoX192YWwpID09IHNpemVvZihfX0JpdHMpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfU3RhdGljX2Fzc2VydChzaXplb2YoX19CaXRzKSA9PSAyICogc2l6ZW9mKGludCkpOyAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfX0JpdHMgX190bXA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBtZW1jcHkoJl9fdG1wLCAmX192YWwsIHNpemVvZihfX3ZhbCkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfX3RtcC5fX2EgPSA6Ol9fRm5OYW1lKF9fbWFzaywgX190bXAuX19hLCBfX29mZnNldCwgX193aWR0aCk7ICAgICAgICAgICAgICBcCiAgICBfX3RtcC5fX2IgPSA6Ol9fRm5OYW1lKF9fbWFzaywgX190bXAuX19iLCBfX29mZnNldCwgX193aWR0aCk7ICAgICAgICAgICAgICBcCiAgICBsb25nIGxvbmcgX19yZXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBtZW1jcHkoJl9fcmV0LCAmX190bXAsIHNpemVvZihfX3RtcCkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICByZXR1cm4gX19yZXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgaW5saW5lIF9fZGV2aWNlX18gdW5zaWduZWQgbG9uZyBsb25nIF9fRm5OYW1lKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHVuc2lnbmVkIGludCBfX21hc2ssIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3ZhbCwgX19UeXBlIF9fb2Zmc2V0LCAgICAgICAgICBcCiAgICAgIGludCBfX3dpZHRoID0gd2FycFNpemUpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPig6Ol9fRm5OYW1lKCAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgX19tYXNrLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KF9fdmFsKSwgX19vZmZzZXQsIF9fd2lkdGgpKTsgICBcCiAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgaW5saW5lIF9fZGV2aWNlX18gbG9uZyBfX0ZuTmFtZSh1bnNpZ25lZCBpbnQgX19tYXNrLCBsb25nIF9fdmFsLCAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX1R5cGUgX19vZmZzZXQsIGludCBfX3dpZHRoID0gd2FycFNpemUpIHsgICBcCiAgICBfU3RhdGljX2Fzc2VydChzaXplb2YobG9uZykgPT0gc2l6ZW9mKGxvbmcgbG9uZykgfHwgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICBzaXplb2YobG9uZykgPT0gc2l6ZW9mKGludCkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBpZiAoc2l6ZW9mKGxvbmcpID09IHNpemVvZihsb25nIGxvbmcpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxsb25nPig6Ol9fRm5OYW1lKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICBfX21hc2ssIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oX192YWwpLCBfX29mZnNldCwgX193aWR0aCkpOyAgICAgICAgICBcCiAgICB9IGVsc2UgaWYgKHNpemVvZihsb25nKSA9PSBzaXplb2YoaW50KSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxsb25nPiggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICA6Ol9fRm5OYW1lKF9fbWFzaywgc3RhdGljX2Nhc3Q8aW50PihfX3ZhbCksIF9fb2Zmc2V0LCBfX3dpZHRoKSk7ICAgICBcCiAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgaW5saW5lIF9fZGV2aWNlX18gdW5zaWduZWQgbG9uZyBfX0ZuTmFtZSggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHVuc2lnbmVkIGludCBfX21hc2ssIHVuc2lnbmVkIGxvbmcgX192YWwsIF9fVHlwZSBfX29mZnNldCwgICAgICAgICAgICAgICBcCiAgICAgIGludCBfX3dpZHRoID0gd2FycFNpemUpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgOjpfX0ZuTmFtZShfX21hc2ssIHN0YXRpY19jYXN0PGxvbmc+KF9fdmFsKSwgX19vZmZzZXQsIF9fd2lkdGgpKTsgICAgICBcCiAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgaW5saW5lIF9fZGV2aWNlX18gZG91YmxlIF9fRm5OYW1lKHVuc2lnbmVkIGludCBfX21hc2ssIGRvdWJsZSBfX3ZhbCwgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fVHlwZSBfX29mZnNldCwgaW50IF9fd2lkdGggPSB3YXJwU2l6ZSkgeyBcCiAgICBsb25nIGxvbmcgX190bXA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfU3RhdGljX2Fzc2VydChzaXplb2YoX190bXApID09IHNpemVvZihfX3ZhbCkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBtZW1jcHkoJl9fdG1wLCAmX192YWwsIHNpemVvZihfX3ZhbCkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfX3RtcCA9IDo6X19Gbk5hbWUoX19tYXNrLCBfX3RtcCwgX19vZmZzZXQsIF9fd2lkdGgpOyAgICAgICAgICAgICAgICAgICAgICBcCiAgICBkb3VibGUgX19yZXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBtZW1jcHkoJl9fcmV0LCAmX190bXAsIHNpemVvZihfX3JldCkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICByZXR1cm4gX19yZXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfQpfX01BS0VfU1lOQ19TSFVGRkxFUyhfX3NoZmxfc3luYywgX19udnZtX3NoZmxfc3luY19pZHhfaTMyLAogICAgICAgICAgICAgICAgICAgICBfX252dm1fc2hmbF9zeW5jX2lkeF9mMzIsIDB4MWYsIGludCk7Ci8vIFdlIHVzZSAwIHJhdGhlciB0aGFuIDMxIGFzIG91ciBtYXNrLCBiZWNhdXNlIHNoZmwudXAgYXBwbGllcyB0byBsYW5lcyA+PQovLyBtYXhMYW5lLgpfX01BS0VfU1lOQ19TSFVGRkxFUyhfX3NoZmxfdXBfc3luYywgX19udnZtX3NoZmxfc3luY191cF9pMzIsCiAgICAgICAgICAgICAgICAgICAgIF9fbnZ2bV9zaGZsX3N5bmNfdXBfZjMyLCAwLCB1bnNpZ25lZCBpbnQpOwpfX01BS0VfU1lOQ19TSFVGRkxFUyhfX3NoZmxfZG93bl9zeW5jLCBfX252dm1fc2hmbF9zeW5jX2Rvd25faTMyLAogICAgICAgICAgICAgICAgICAgICBfX252dm1fc2hmbF9zeW5jX2Rvd25fZjMyLCAweDFmLCB1bnNpZ25lZCBpbnQpOwpfX01BS0VfU1lOQ19TSFVGRkxFUyhfX3NoZmxfeG9yX3N5bmMsIF9fbnZ2bV9zaGZsX3N5bmNfYmZseV9pMzIsCiAgICAgICAgICAgICAgICAgICAgIF9fbnZ2bV9zaGZsX3N5bmNfYmZseV9mMzIsIDB4MWYsIGludCk7CiNwcmFnbWEgcG9wX21hY3JvKCJfX01BS0VfU1lOQ19TSFVGRkxFUyIpCgppbmxpbmUgX19kZXZpY2VfXyB2b2lkIF9fc3luY3dhcnAodW5zaWduZWQgaW50IG1hc2sgPSAweGZmZmZmZmZmKSB7CiAgcmV0dXJuIF9fbnZ2bV9iYXJfd2FycF9zeW5jKG1hc2spOwp9CgppbmxpbmUgX19kZXZpY2VfXyB2b2lkIF9fYmFycmllcl9zeW5jKHVuc2lnbmVkIGludCBpZCkgewogIF9fbnZ2bV9iYXJyaWVyX3N5bmMoaWQpOwp9CgppbmxpbmUgX19kZXZpY2VfXyB2b2lkIF9fYmFycmllcl9zeW5jX2NvdW50KHVuc2lnbmVkIGludCBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY291bnQpIHsKICBfX252dm1fYmFycmllcl9zeW5jX2NudChpZCwgY291bnQpOwp9CgppbmxpbmUgX19kZXZpY2VfXyBpbnQgX19hbGxfc3luYyh1bnNpZ25lZCBpbnQgbWFzaywgaW50IHByZWQpIHsKICByZXR1cm4gX19udnZtX3ZvdGVfYWxsX3N5bmMobWFzaywgcHJlZCk7Cn0KCmlubGluZSBfX2RldmljZV9fIGludCBfX2FueV9zeW5jKHVuc2lnbmVkIGludCBtYXNrLCBpbnQgcHJlZCkgewogIHJldHVybiBfX252dm1fdm90ZV9hbnlfc3luYyhtYXNrLCBwcmVkKTsKfQoKaW5saW5lIF9fZGV2aWNlX18gaW50IF9fdW5pX3N5bmModW5zaWduZWQgaW50IG1hc2ssIGludCBwcmVkKSB7CiAgcmV0dXJuIF9fbnZ2bV92b3RlX3VuaV9zeW5jKG1hc2ssIHByZWQpOwp9CgppbmxpbmUgX19kZXZpY2VfXyB1bnNpZ25lZCBpbnQgX19iYWxsb3Rfc3luYyh1bnNpZ25lZCBpbnQgbWFzaywgaW50IHByZWQpIHsKICByZXR1cm4gX19udnZtX3ZvdGVfYmFsbG90X3N5bmMobWFzaywgcHJlZCk7Cn0KCmlubGluZSBfX2RldmljZV9fIHVuc2lnbmVkIGludCBfX2FjdGl2ZW1hc2soKSB7CiNpZiBDVURBX1ZFUlNJT04gPCA5MDIwCiAgcmV0dXJuIF9fbnZ2bV92b3RlX2JhbGxvdCgxKTsKI2Vsc2UKICB1bnNpZ25lZCBpbnQgbWFzazsKICBhc20gdm9sYXRpbGUoImFjdGl2ZW1hc2suYjMyICUwOyIgOiAiPXIiKG1hc2spKTsKICByZXR1cm4gbWFzazsKI2VuZGlmCn0KCmlubGluZSBfX2RldmljZV9fIHVuc2lnbmVkIGludCBfX2Zucyh1bnNpZ25lZCBtYXNrLCB1bnNpZ25lZCBiYXNlLCBpbnQgb2Zmc2V0KSB7CiAgcmV0dXJuIF9fbnZ2bV9mbnMobWFzaywgYmFzZSwgb2Zmc2V0KTsKfQoKI2VuZGlmIC8vICFkZWZpbmVkKF9fQ1VEQV9BUkNIX18pIHx8IF9fQ1VEQV9BUkNIX18gPj0gMzAwCgovLyBEZWZpbmUgX19tYXRjaCogYnVpbHRpbnMgQ1VEQS05IGhlYWRlcnMgZXhwZWN0IHRvIHNlZS4KI2lmICFkZWZpbmVkKF9fQ1VEQV9BUkNIX18pIHx8IF9fQ1VEQV9BUkNIX18gPj0gNzAwCmlubGluZSBfX2RldmljZV9fIHVuc2lnbmVkIGludCBfX21hdGNoMzJfYW55X3N5bmModW5zaWduZWQgaW50IG1hc2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHZhbHVlKSB7CiAgcmV0dXJuIF9fbnZ2bV9tYXRjaF9hbnlfc3luY19pMzIobWFzaywgdmFsdWUpOwp9CgppbmxpbmUgX19kZXZpY2VfXyB1bnNpZ25lZCBsb25nIGxvbmcKX19tYXRjaDY0X2FueV9zeW5jKHVuc2lnbmVkIGludCBtYXNrLCB1bnNpZ25lZCBsb25nIGxvbmcgdmFsdWUpIHsKICByZXR1cm4gX19udnZtX21hdGNoX2FueV9zeW5jX2k2NChtYXNrLCB2YWx1ZSk7Cn0KCmlubGluZSBfX2RldmljZV9fIHVuc2lnbmVkIGludApfX21hdGNoMzJfYWxsX3N5bmModW5zaWduZWQgaW50IG1hc2ssIHVuc2lnbmVkIGludCB2YWx1ZSwgaW50ICpwcmVkKSB7CiAgcmV0dXJuIF9fbnZ2bV9tYXRjaF9hbGxfc3luY19pMzJwKG1hc2ssIHZhbHVlLCBwcmVkKTsKfQoKaW5saW5lIF9fZGV2aWNlX18gdW5zaWduZWQgbG9uZyBsb25nCl9fbWF0Y2g2NF9hbGxfc3luYyh1bnNpZ25lZCBpbnQgbWFzaywgdW5zaWduZWQgbG9uZyBsb25nIHZhbHVlLCBpbnQgKnByZWQpIHsKICByZXR1cm4gX19udnZtX21hdGNoX2FsbF9zeW5jX2k2NHAobWFzaywgdmFsdWUsIHByZWQpOwp9CiNpbmNsdWRlICJjcnQvc21fNzBfcnQuaHBwIgoKI2VuZGlmIC8vICFkZWZpbmVkKF9fQ1VEQV9BUkNIX18pIHx8IF9fQ1VEQV9BUkNIX18gPj0gNzAwCiNlbmRpZiAvLyBfX0NVREFfVkVSU0lPTiA+PSA5MDAwCgovLyBzbV8zMiBpbnRyaW5zaWNzOiBfX2xkZyBhbmQgX19mdW5uZWxzaGlmdF97bCxsYyxyLHJjfS4KCi8vIFByZXZlbnQgdGhlIHZhbmlsbGEgc21fMzIgaW50cmluc2ljcyBoZWFkZXIgZnJvbSBiZWluZyBpbmNsdWRlZC4KI2RlZmluZSBfX1NNXzMyX0lOVFJJTlNJQ1NfSF9fCiNkZWZpbmUgX19TTV8zMl9JTlRSSU5TSUNTX0hQUF9fCgojaWYgIWRlZmluZWQoX19DVURBX0FSQ0hfXykgfHwgX19DVURBX0FSQ0hfXyA+PSAzMjAKCmlubGluZSBfX2RldmljZV9fIGNoYXIgX19sZGcoY29uc3QgY2hhciAqcHRyKSB7IHJldHVybiBfX252dm1fbGRnX2MocHRyKTsgfQppbmxpbmUgX19kZXZpY2VfXyBzaG9ydCBfX2xkZyhjb25zdCBzaG9ydCAqcHRyKSB7IHJldHVybiBfX252dm1fbGRnX3MocHRyKTsgfQppbmxpbmUgX19kZXZpY2VfXyBpbnQgX19sZGcoY29uc3QgaW50ICpwdHIpIHsgcmV0dXJuIF9fbnZ2bV9sZGdfaShwdHIpOyB9CmlubGluZSBfX2RldmljZV9fIGxvbmcgX19sZGcoY29uc3QgbG9uZyAqcHRyKSB7IHJldHVybiBfX252dm1fbGRnX2wocHRyKTsgfQppbmxpbmUgX19kZXZpY2VfXyBsb25nIGxvbmcgX19sZGcoY29uc3QgbG9uZyBsb25nICpwdHIpIHsKICByZXR1cm4gX19udnZtX2xkZ19sbChwdHIpOwp9CmlubGluZSBfX2RldmljZV9fIHVuc2lnbmVkIGNoYXIgX19sZGcoY29uc3QgdW5zaWduZWQgY2hhciAqcHRyKSB7CiAgcmV0dXJuIF9fbnZ2bV9sZGdfdWMocHRyKTsKfQppbmxpbmUgX19kZXZpY2VfXyBzaWduZWQgY2hhciBfX2xkZyhjb25zdCBzaWduZWQgY2hhciAqcHRyKSB7CiAgcmV0dXJuIF9fbnZ2bV9sZGdfdWMoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilwdHIpOwp9CmlubGluZSBfX2RldmljZV9fIHVuc2lnbmVkIHNob3J0IF9fbGRnKGNvbnN0IHVuc2lnbmVkIHNob3J0ICpwdHIpIHsKICByZXR1cm4gX19udnZtX2xkZ191cyhwdHIpOwp9CmlubGluZSBfX2RldmljZV9fIHVuc2lnbmVkIGludCBfX2xkZyhjb25zdCB1bnNpZ25lZCBpbnQgKnB0cikgewogIHJldHVybiBfX252dm1fbGRnX3VpKHB0cik7Cn0KaW5saW5lIF9fZGV2aWNlX18gdW5zaWduZWQgbG9uZyBfX2xkZyhjb25zdCB1bnNpZ25lZCBsb25nICpwdHIpIHsKICByZXR1cm4gX19udnZtX2xkZ191bChwdHIpOwp9CmlubGluZSBfX2RldmljZV9fIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2xkZyhjb25zdCB1bnNpZ25lZCBsb25nIGxvbmcgKnB0cikgewogIHJldHVybiBfX252dm1fbGRnX3VsbChwdHIpOwp9CmlubGluZSBfX2RldmljZV9fIGZsb2F0IF9fbGRnKGNvbnN0IGZsb2F0ICpwdHIpIHsgcmV0dXJuIF9fbnZ2bV9sZGdfZihwdHIpOyB9CmlubGluZSBfX2RldmljZV9fIGRvdWJsZSBfX2xkZyhjb25zdCBkb3VibGUgKnB0cikgeyByZXR1cm4gX19udnZtX2xkZ19kKHB0cik7IH0KCmlubGluZSBfX2RldmljZV9fIGNoYXIyIF9fbGRnKGNvbnN0IGNoYXIyICpwdHIpIHsKICB0eXBlZGVmIGNoYXIgYzIgX19hdHRyaWJ1dGVfXygoZXh0X3ZlY3Rvcl90eXBlKDIpKSk7CiAgLy8gV2UgY2FuIGFzc3VtZSB0aGF0IHB0ciBpcyBhbGlnbmVkIGF0IGxlYXN0IHRvIGNoYXIyJ3MgYWxpZ25tZW50LCBidXQgdGhlCiAgLy8gbG9hZCB3aWxsIGFzc3VtZSB0aGF0IHB0ciBpcyBhbGlnbmVkIHRvIGNoYXIyJ3MgYWxpZ25tZW50LiAgVGhpcyBpcyBvbmx5CiAgLy8gc2FmZSBpZiBhbGlnbm9mKGMyKSA8PSBhbGlnbm9mKGNoYXIyKS4KICBjMiBydiA9IF9fbnZ2bV9sZGdfYzIocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjMiAqPihwdHIpKTsKICBjaGFyMiByZXQ7CiAgcmV0LnggPSBydlswXTsKICByZXQueSA9IHJ2WzFdOwogIHJldHVybiByZXQ7Cn0KaW5saW5lIF9fZGV2aWNlX18gY2hhcjQgX19sZGcoY29uc3QgY2hhcjQgKnB0cikgewogIHR5cGVkZWYgY2hhciBjNCBfX2F0dHJpYnV0ZV9fKChleHRfdmVjdG9yX3R5cGUoNCkpKTsKICBjNCBydiA9IF9fbnZ2bV9sZGdfYzQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjNCAqPihwdHIpKTsKICBjaGFyNCByZXQ7CiAgcmV0LnggPSBydlswXTsKICByZXQueSA9IHJ2WzFdOwogIHJldC56ID0gcnZbMl07CiAgcmV0LncgPSBydlszXTsKICByZXR1cm4gcmV0Owp9CmlubGluZSBfX2RldmljZV9fIHNob3J0MiBfX2xkZyhjb25zdCBzaG9ydDIgKnB0cikgewogIHR5cGVkZWYgc2hvcnQgczIgX19hdHRyaWJ1dGVfXygoZXh0X3ZlY3Rvcl90eXBlKDIpKSk7CiAgczIgcnYgPSBfX252dm1fbGRnX3MyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgczIgKj4ocHRyKSk7CiAgc2hvcnQyIHJldDsKICByZXQueCA9IHJ2WzBdOwogIHJldC55ID0gcnZbMV07CiAgcmV0dXJuIHJldDsKfQppbmxpbmUgX19kZXZpY2VfXyBzaG9ydDQgX19sZGcoY29uc3Qgc2hvcnQ0ICpwdHIpIHsKICB0eXBlZGVmIHNob3J0IHM0IF9fYXR0cmlidXRlX18oKGV4dF92ZWN0b3JfdHlwZSg0KSkpOwogIHM0IHJ2ID0gX19udnZtX2xkZ19zNChyZWludGVycHJldF9jYXN0PGNvbnN0IHM0ICo+KHB0cikpOwogIHNob3J0NCByZXQ7CiAgcmV0LnggPSBydlswXTsKICByZXQueSA9IHJ2WzFdOwogIHJldC56ID0gcnZbMl07CiAgcmV0LncgPSBydlszXTsKICByZXR1cm4gcmV0Owp9CmlubGluZSBfX2RldmljZV9fIGludDIgX19sZGcoY29uc3QgaW50MiAqcHRyKSB7CiAgdHlwZWRlZiBpbnQgaTIgX19hdHRyaWJ1dGVfXygoZXh0X3ZlY3Rvcl90eXBlKDIpKSk7CiAgaTIgcnYgPSBfX252dm1fbGRnX2kyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaTIgKj4ocHRyKSk7CiAgaW50MiByZXQ7CiAgcmV0LnggPSBydlswXTsKICByZXQueSA9IHJ2WzFdOwogIHJldHVybiByZXQ7Cn0KaW5saW5lIF9fZGV2aWNlX18gaW50NCBfX2xkZyhjb25zdCBpbnQ0ICpwdHIpIHsKICB0eXBlZGVmIGludCBpNCBfX2F0dHJpYnV0ZV9fKChleHRfdmVjdG9yX3R5cGUoNCkpKTsKICBpNCBydiA9IF9fbnZ2bV9sZGdfaTQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpNCAqPihwdHIpKTsKICBpbnQ0IHJldDsKICByZXQueCA9IHJ2WzBdOwogIHJldC55ID0gcnZbMV07CiAgcmV0LnogPSBydlsyXTsKICByZXQudyA9IHJ2WzNdOwogIHJldHVybiByZXQ7Cn0KaW5saW5lIF9fZGV2aWNlX18gbG9uZ2xvbmcyIF9fbGRnKGNvbnN0IGxvbmdsb25nMiAqcHRyKSB7CiAgdHlwZWRlZiBsb25nIGxvbmcgbGwyIF9fYXR0cmlidXRlX18oKGV4dF92ZWN0b3JfdHlwZSgyKSkpOwogIGxsMiBydiA9IF9fbnZ2bV9sZGdfbGwyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgbGwyICo+KHB0cikpOwogIGxvbmdsb25nMiByZXQ7CiAgcmV0LnggPSBydlswXTsKICByZXQueSA9IHJ2WzFdOwogIHJldHVybiByZXQ7Cn0KCmlubGluZSBfX2RldmljZV9fIHVjaGFyMiBfX2xkZyhjb25zdCB1Y2hhcjIgKnB0cikgewogIHR5cGVkZWYgdW5zaWduZWQgY2hhciB1YzIgX19hdHRyaWJ1dGVfXygoZXh0X3ZlY3Rvcl90eXBlKDIpKSk7CiAgdWMyIHJ2ID0gX19udnZtX2xkZ191YzIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1YzIgKj4ocHRyKSk7CiAgdWNoYXIyIHJldDsKICByZXQueCA9IHJ2WzBdOwogIHJldC55ID0gcnZbMV07CiAgcmV0dXJuIHJldDsKfQppbmxpbmUgX19kZXZpY2VfXyB1Y2hhcjQgX19sZGcoY29uc3QgdWNoYXI0ICpwdHIpIHsKICB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdWM0IF9fYXR0cmlidXRlX18oKGV4dF92ZWN0b3JfdHlwZSg0KSkpOwogIHVjNCBydiA9IF9fbnZ2bV9sZGdfdWM0KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWM0ICo+KHB0cikpOwogIHVjaGFyNCByZXQ7CiAgcmV0LnggPSBydlswXTsKICByZXQueSA9IHJ2WzFdOwogIHJldC56ID0gcnZbMl07CiAgcmV0LncgPSBydlszXTsKICByZXR1cm4gcmV0Owp9CmlubGluZSBfX2RldmljZV9fIHVzaG9ydDIgX19sZGcoY29uc3QgdXNob3J0MiAqcHRyKSB7CiAgdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1czIgX19hdHRyaWJ1dGVfXygoZXh0X3ZlY3Rvcl90eXBlKDIpKSk7CiAgdXMyIHJ2ID0gX19udnZtX2xkZ191czIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1czIgKj4ocHRyKSk7CiAgdXNob3J0MiByZXQ7CiAgcmV0LnggPSBydlswXTsKICByZXQueSA9IHJ2WzFdOwogIHJldHVybiByZXQ7Cn0KaW5saW5lIF9fZGV2aWNlX18gdXNob3J0NCBfX2xkZyhjb25zdCB1c2hvcnQ0ICpwdHIpIHsKICB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVzNCBfX2F0dHJpYnV0ZV9fKChleHRfdmVjdG9yX3R5cGUoNCkpKTsKICB1czQgcnYgPSBfX252dm1fbGRnX3VzNChyZWludGVycHJldF9jYXN0PGNvbnN0IHVzNCAqPihwdHIpKTsKICB1c2hvcnQ0IHJldDsKICByZXQueCA9IHJ2WzBdOwogIHJldC55ID0gcnZbMV07CiAgcmV0LnogPSBydlsyXTsKICByZXQudyA9IHJ2WzNdOwogIHJldHVybiByZXQ7Cn0KaW5saW5lIF9fZGV2aWNlX18gdWludDIgX19sZGcoY29uc3QgdWludDIgKnB0cikgewogIHR5cGVkZWYgdW5zaWduZWQgaW50IHVpMiBfX2F0dHJpYnV0ZV9fKChleHRfdmVjdG9yX3R5cGUoMikpKTsKICB1aTIgcnYgPSBfX252dm1fbGRnX3VpMihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpMiAqPihwdHIpKTsKICB1aW50MiByZXQ7CiAgcmV0LnggPSBydlswXTsKICByZXQueSA9IHJ2WzFdOwogIHJldHVybiByZXQ7Cn0KaW5saW5lIF9fZGV2aWNlX18gdWludDQgX19sZGcoY29uc3QgdWludDQgKnB0cikgewogIHR5cGVkZWYgdW5zaWduZWQgaW50IHVpNCBfX2F0dHJpYnV0ZV9fKChleHRfdmVjdG9yX3R5cGUoNCkpKTsKICB1aTQgcnYgPSBfX252dm1fbGRnX3VpNChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpNCAqPihwdHIpKTsKICB1aW50NCByZXQ7CiAgcmV0LnggPSBydlswXTsKICByZXQueSA9IHJ2WzFdOwogIHJldC56ID0gcnZbMl07CiAgcmV0LncgPSBydlszXTsKICByZXR1cm4gcmV0Owp9CmlubGluZSBfX2RldmljZV9fIHVsb25nbG9uZzIgX19sZGcoY29uc3QgdWxvbmdsb25nMiAqcHRyKSB7CiAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdWxsMiBfX2F0dHJpYnV0ZV9fKChleHRfdmVjdG9yX3R5cGUoMikpKTsKICB1bGwyIHJ2ID0gX19udnZtX2xkZ191bGwyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWxsMiAqPihwdHIpKTsKICB1bG9uZ2xvbmcyIHJldDsKICByZXQueCA9IHJ2WzBdOwogIHJldC55ID0gcnZbMV07CiAgcmV0dXJuIHJldDsKfQoKaW5saW5lIF9fZGV2aWNlX18gZmxvYXQyIF9fbGRnKGNvbnN0IGZsb2F0MiAqcHRyKSB7CiAgdHlwZWRlZiBmbG9hdCBmMiBfX2F0dHJpYnV0ZV9fKChleHRfdmVjdG9yX3R5cGUoMikpKTsKICBmMiBydiA9IF9fbnZ2bV9sZGdfZjIocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmMiAqPihwdHIpKTsKICBmbG9hdDIgcmV0OwogIHJldC54ID0gcnZbMF07CiAgcmV0LnkgPSBydlsxXTsKICByZXR1cm4gcmV0Owp9CmlubGluZSBfX2RldmljZV9fIGZsb2F0NCBfX2xkZyhjb25zdCBmbG9hdDQgKnB0cikgewogIHR5cGVkZWYgZmxvYXQgZjQgX19hdHRyaWJ1dGVfXygoZXh0X3ZlY3Rvcl90eXBlKDQpKSk7CiAgZjQgcnYgPSBfX252dm1fbGRnX2Y0KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZjQgKj4ocHRyKSk7CiAgZmxvYXQ0IHJldDsKICByZXQueCA9IHJ2WzBdOwogIHJldC55ID0gcnZbMV07CiAgcmV0LnogPSBydlsyXTsKICByZXQudyA9IHJ2WzNdOwogIHJldHVybiByZXQ7Cn0KaW5saW5lIF9fZGV2aWNlX18gZG91YmxlMiBfX2xkZyhjb25zdCBkb3VibGUyICpwdHIpIHsKICB0eXBlZGVmIGRvdWJsZSBkMiBfX2F0dHJpYnV0ZV9fKChleHRfdmVjdG9yX3R5cGUoMikpKTsKICBkMiBydiA9IF9fbnZ2bV9sZGdfZDIocmVpbnRlcnByZXRfY2FzdDxjb25zdCBkMiAqPihwdHIpKTsKICBkb3VibGUyIHJldDsKICByZXQueCA9IHJ2WzBdOwogIHJldC55ID0gcnZbMV07CiAgcmV0dXJuIHJldDsKfQoKLy8gVE9ETzogSW1wbGVtZW50IHRoZXNlIGFzIGludHJpbnNpY3MsIHNvIHRoZSBiYWNrZW5kIGNhbiB3b3JrIGl0cyBtYWdpYyBvbgovLyB0aGVzZS4gIEFsdGVybmF0aXZlbHksIHdlIGNvdWxkIGltcGxlbWVudCB0aGVzZSBhcyBwbGFpbiBDIGFuZCB0cnkgdG8gZ2V0Ci8vIGxsdm0gdG8gcmVjb2duaXplIHRoZSByZWxldmFudCBwYXR0ZXJucy4KaW5saW5lIF9fZGV2aWNlX18gdW5zaWduZWQgX19mdW5uZWxzaGlmdF9sKHVuc2lnbmVkIGxvdzMyLCB1bnNpZ25lZCBoaWdoMzIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaGlmdFdpZHRoKSB7CiAgdW5zaWduZWQgcmVzdWx0OwogIGFzbSgic2hmLmwud3JhcC5iMzIgJTAsICUxLCAlMiwgJTM7IgogICAgICA6ICI9ciIocmVzdWx0KQogICAgICA6ICJyIihsb3czMiksICJyIihoaWdoMzIpLCAiciIoc2hpZnRXaWR0aCkpOwogIHJldHVybiByZXN1bHQ7Cn0KaW5saW5lIF9fZGV2aWNlX18gdW5zaWduZWQgX19mdW5uZWxzaGlmdF9sYyh1bnNpZ25lZCBsb3czMiwgdW5zaWduZWQgaGlnaDMyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNoaWZ0V2lkdGgpIHsKICB1bnNpZ25lZCByZXN1bHQ7CiAgYXNtKCJzaGYubC5jbGFtcC5iMzIgJTAsICUxLCAlMiwgJTM7IgogICAgICA6ICI9ciIocmVzdWx0KQogICAgICA6ICJyIihsb3czMiksICJyIihoaWdoMzIpLCAiciIoc2hpZnRXaWR0aCkpOwogIHJldHVybiByZXN1bHQ7Cn0KaW5saW5lIF9fZGV2aWNlX18gdW5zaWduZWQgX19mdW5uZWxzaGlmdF9yKHVuc2lnbmVkIGxvdzMyLCB1bnNpZ25lZCBoaWdoMzIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaGlmdFdpZHRoKSB7CiAgdW5zaWduZWQgcmVzdWx0OwogIGFzbSgic2hmLnIud3JhcC5iMzIgJTAsICUxLCAlMiwgJTM7IgogICAgICA6ICI9ciIocmVzdWx0KQogICAgICA6ICJyIihsb3czMiksICJyIihoaWdoMzIpLCAiciIoc2hpZnRXaWR0aCkpOwogIHJldHVybiByZXN1bHQ7Cn0KaW5saW5lIF9fZGV2aWNlX18gdW5zaWduZWQgX19mdW5uZWxzaGlmdF9yYyh1bnNpZ25lZCBsb3czMiwgdW5zaWduZWQgaGlnaDMyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNoaWZ0V2lkdGgpIHsKICB1bnNpZ25lZCByZXQ7CiAgYXNtKCJzaGYuci5jbGFtcC5iMzIgJTAsICUxLCAlMiwgJTM7IgogICAgICA6ICI9ciIocmV0KQogICAgICA6ICJyIihsb3czMiksICJyIihoaWdoMzIpLCAiciIoc2hpZnRXaWR0aCkpOwogIHJldHVybiByZXQ7Cn0KCiNlbmRpZiAvLyAhZGVmaW5lZChfX0NVREFfQVJDSF9fKSB8fCBfX0NVREFfQVJDSF9fID49IDMyMAoKI2lmIENVREFfVkVSU0lPTiA+PSAxMTAwMApleHRlcm4gIkMiIHsKX19kZXZpY2VfXyBpbmxpbmUgc2l6ZV90IF9fbnZfY3Z0YV9nZW5lcmljX3RvX2dsb2JhbF9pbXBsKGNvbnN0IHZvaWQgKl9fcHRyKSB7CiAgcmV0dXJuIChzaXplX3QpKHZvaWQgX19hdHRyaWJ1dGVfXygoYWRkcmVzc19zcGFjZSgxKSkpICopX19wdHI7Cn0KX19kZXZpY2VfXyBpbmxpbmUgc2l6ZV90IF9fbnZfY3Z0YV9nZW5lcmljX3RvX3NoYXJlZF9pbXBsKGNvbnN0IHZvaWQgKl9fcHRyKSB7CiAgcmV0dXJuIChzaXplX3QpKHZvaWQgX19hdHRyaWJ1dGVfXygoYWRkcmVzc19zcGFjZSgzKSkpICopX19wdHI7Cn0KX19kZXZpY2VfXyBpbmxpbmUgc2l6ZV90IF9fbnZfY3Z0YV9nZW5lcmljX3RvX2NvbnN0YW50X2ltcGwoY29uc3Qgdm9pZCAqX19wdHIpIHsKICByZXR1cm4gKHNpemVfdCkodm9pZCBfX2F0dHJpYnV0ZV9fKChhZGRyZXNzX3NwYWNlKDQpKSkgKilfX3B0cjsKfQpfX2RldmljZV9fIGlubGluZSBzaXplX3QgX19udl9jdnRhX2dlbmVyaWNfdG9fbG9jYWxfaW1wbChjb25zdCB2b2lkICpfX3B0cikgewogIHJldHVybiAoc2l6ZV90KSh2b2lkIF9fYXR0cmlidXRlX18oKGFkZHJlc3Nfc3BhY2UoNSkpKSAqKV9fcHRyOwp9Cl9fZGV2aWNlX18gaW5saW5lIHZvaWQgKl9fbnZfY3Z0YV9nbG9iYWxfdG9fZ2VuZXJpY19pbXBsKHNpemVfdCBfX3B0cikgewogIHJldHVybiAodm9pZCAqKSh2b2lkIF9fYXR0cmlidXRlX18oKGFkZHJlc3Nfc3BhY2UoMSkpKSAqKV9fcHRyOwp9Cl9fZGV2aWNlX18gaW5saW5lIHZvaWQgKl9fbnZfY3Z0YV9zaGFyZWRfdG9fZ2VuZXJpY19pbXBsKHNpemVfdCBfX3B0cikgewogIHJldHVybiAodm9pZCAqKSh2b2lkIF9fYXR0cmlidXRlX18oKGFkZHJlc3Nfc3BhY2UoMykpKSAqKV9fcHRyOwp9Cl9fZGV2aWNlX18gaW5saW5lIHZvaWQgKl9fbnZfY3Z0YV9jb25zdGFudF90b19nZW5lcmljX2ltcGwoc2l6ZV90IF9fcHRyKSB7CiAgcmV0dXJuICh2b2lkICopKHZvaWQgX19hdHRyaWJ1dGVfXygoYWRkcmVzc19zcGFjZSg0KSkpICopX19wdHI7Cn0KX19kZXZpY2VfXyBpbmxpbmUgdm9pZCAqX19udl9jdnRhX2xvY2FsX3RvX2dlbmVyaWNfaW1wbChzaXplX3QgX19wdHIpIHsKICByZXR1cm4gKHZvaWQgKikodm9pZCBfX2F0dHJpYnV0ZV9fKChhZGRyZXNzX3NwYWNlKDUpKSkgKilfX3B0cjsKfQpfX2RldmljZV9fIGlubGluZSB1aW50MzJfdCBfX252dm1fZ2V0X3NtZW1fcG9pbnRlcih2b2lkICpfX3B0cikgewogIHJldHVybiBfX252X2N2dGFfZ2VuZXJpY190b19zaGFyZWRfaW1wbChfX3B0cik7Cn0KfSAvLyBleHRlcm4gIkMiCiNlbmRpZiAvLyBDVURBX1ZFUlNJT04gPj0gMTEwMDAKCiNlbmRpZiAvLyBkZWZpbmVkKF9fQ0xBTkdfQ1VEQV9JTlRSSU5TSUNTX0hfXykKAGF2eDJpbnRyaW4uaABhdng1MTJ2bGNkaW50cmluLmgAYXZ4NTEydmxkcWludHJpbi5oAC8qPT09LS0tLSBsaW1pdHMuaCAtIFN0YW5kYXJkIGhlYWRlciBmb3IgaW50ZWdlciBzaXplcyAtLS0tLS0tLS0tLS0tLS0tLS0tLT09PSpcCiAqCiAqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCiAqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAqClwqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PSovCgojaWZuZGVmIF9fQ0xBTkdfTElNSVRTX0gKI2RlZmluZSBfX0NMQU5HX0xJTUlUU19ICgovKiBUaGUgc3lzdGVtJ3MgbGltaXRzLmggbWF5LCBpbiB0dXJuLCB0cnkgdG8gI2luY2x1ZGVfbmV4dCBHQ0MncyBsaW1pdHMuaC4KICAgQXZlcnQgdGhpcyAjaW5jbHVkZV9uZXh0IG1hZG5lc3MuICovCiNpZiBkZWZpbmVkIF9fR05VQ19fICYmICFkZWZpbmVkIF9HQ0NfTElNSVRTX0hfCiNkZWZpbmUgX0dDQ19MSU1JVFNfSF8KI2VuZGlmCgovKiBTeXN0ZW0gaGVhZGVycyBpbmNsdWRlIGEgbnVtYmVyIG9mIGNvbnN0YW50cyBmcm9tIFBPU0lYIGluIDxsaW1pdHMuaD4uCiAgIEluY2x1ZGUgaXQgaWYgd2UncmUgaG9zdGVkLiAqLwojaWYgX19TVERDX0hPU1RFRF9fICYmIF9faGFzX2luY2x1ZGVfbmV4dCg8bGltaXRzLmg+KQojaW5jbHVkZV9uZXh0IDxsaW1pdHMuaD4KI2VuZGlmCgovKiBNYW55IHN5c3RlbSBoZWFkZXJzIHRyeSB0byAiaGVscCB1cyBvdXQiIGJ5IGRlZmluaW5nIHRoZXNlLiAgTm8gcmVhbGx5LCB3ZQogICBrbm93IGhvdyBiaWcgZWFjaCBkYXRhdHlwZSBpcy4gKi8KI3VuZGVmICBTQ0hBUl9NSU4KI3VuZGVmICBTQ0hBUl9NQVgKI3VuZGVmICBVQ0hBUl9NQVgKI3VuZGVmICBTSFJUX01JTgojdW5kZWYgIFNIUlRfTUFYCiN1bmRlZiAgVVNIUlRfTUFYCiN1bmRlZiAgSU5UX01JTgojdW5kZWYgIElOVF9NQVgKI3VuZGVmICBVSU5UX01BWAojdW5kZWYgIExPTkdfTUlOCiN1bmRlZiAgTE9OR19NQVgKI3VuZGVmICBVTE9OR19NQVgKCiN1bmRlZiAgQ0hBUl9CSVQKI3VuZGVmICBDSEFSX01JTgojdW5kZWYgIENIQVJfTUFYCgovKiBDOTAvOTkgNS4yLjQuMi4xICovCiNkZWZpbmUgU0NIQVJfTUFYIF9fU0NIQVJfTUFYX18KI2RlZmluZSBTSFJUX01BWCAgX19TSFJUX01BWF9fCiNkZWZpbmUgSU5UX01BWCAgIF9fSU5UX01BWF9fCiNkZWZpbmUgTE9OR19NQVggIF9fTE9OR19NQVhfXwoKI2RlZmluZSBTQ0hBUl9NSU4gKC1fX1NDSEFSX01BWF9fLTEpCiNkZWZpbmUgU0hSVF9NSU4gICgtX19TSFJUX01BWF9fIC0xKQojZGVmaW5lIElOVF9NSU4gICAoLV9fSU5UX01BWF9fICAtMSkKI2RlZmluZSBMT05HX01JTiAgKC1fX0xPTkdfTUFYX18gLTFMKQoKI2RlZmluZSBVQ0hBUl9NQVggKF9fU0NIQVJfTUFYX18qMiAgKzEpCiNkZWZpbmUgVVNIUlRfTUFYIChfX1NIUlRfTUFYX18gKjIgICsxKQojZGVmaW5lIFVJTlRfTUFYICAoX19JTlRfTUFYX18gICoyVSArMVUpCiNkZWZpbmUgVUxPTkdfTUFYIChfX0xPTkdfTUFYX18gKjJVTCsxVUwpCgojaWZuZGVmIE1CX0xFTl9NQVgKI2RlZmluZSBNQl9MRU5fTUFYIDEKI2VuZGlmCgojZGVmaW5lIENIQVJfQklUICBfX0NIQVJfQklUX18KCiNpZmRlZiBfX0NIQVJfVU5TSUdORURfXyAgLyogLWZ1bnNpZ25lZC1jaGFyICovCiNkZWZpbmUgQ0hBUl9NSU4gMAojZGVmaW5lIENIQVJfTUFYIFVDSEFSX01BWAojZWxzZQojZGVmaW5lIENIQVJfTUlOIFNDSEFSX01JTgojZGVmaW5lIENIQVJfTUFYIF9fU0NIQVJfTUFYX18KI2VuZGlmCgovKiBDOTkgNS4yLjQuMi4xOiBBZGRlZCBsb25nIGxvbmcuCiAgIEMrKzExIDE4LjMuMy4yOiBzYW1lIGNvbnRlbnRzIGFzIHRoZSBTdGFuZGFyZCBDIExpYnJhcnkgaGVhZGVyIDxsaW1pdHMuaD4uCiAqLwojaWYgX19TVERDX1ZFUlNJT05fXyA+PSAxOTk5MDFMIHx8IF9fY3BsdXNwbHVzID49IDIwMTEwM0wKCiN1bmRlZiAgTExPTkdfTUlOCiN1bmRlZiAgTExPTkdfTUFYCiN1bmRlZiAgVUxMT05HX01BWAoKI2RlZmluZSBMTE9OR19NQVggIF9fTE9OR19MT05HX01BWF9fCiNkZWZpbmUgTExPTkdfTUlOICAoLV9fTE9OR19MT05HX01BWF9fLTFMTCkKI2RlZmluZSBVTExPTkdfTUFYIChfX0xPTkdfTE9OR19NQVhfXyoyVUxMKzFVTEwpCiNlbmRpZgoKLyogTE9OR19MT05HX01JTi9MT05HX0xPTkdfTUFYL1VMT05HX0xPTkdfTUFYIGFyZSBhIEdOVSBleHRlbnNpb24uICBJdCdzIHRvbyBiYWQKICAgdGhhdCB3ZSBkb24ndCBoYXZlIHNvbWV0aGluZyBsaWtlICNwcmFnbWEgcG9pc29uIHRoYXQgY291bGQgYmUgdXNlZCB0bwogICBkZXByZWNhdGUgYSBtYWNybyAtIHRoZSBjb2RlIHNob3VsZCBqdXN0IHVzZSBMTE9OR19NQVggYW5kIGZyaWVuZHMuCiAqLwojaWYgZGVmaW5lZChfX0dOVV9MSUJSQVJZX18pID8gZGVmaW5lZChfX1VTRV9HTlUpIDogIWRlZmluZWQoX19TVFJJQ1RfQU5TSV9fKQoKI3VuZGVmICAgTE9OR19MT05HX01JTgojdW5kZWYgICBMT05HX0xPTkdfTUFYCiN1bmRlZiAgIFVMT05HX0xPTkdfTUFYCgojZGVmaW5lIExPTkdfTE9OR19NQVggIF9fTE9OR19MT05HX01BWF9fCiNkZWZpbmUgTE9OR19MT05HX01JTiAgKC1fX0xPTkdfTE9OR19NQVhfXy0xTEwpCiNkZWZpbmUgVUxPTkdfTE9OR19NQVggKF9fTE9OR19MT05HX01BWF9fKjJVTEwrMVVMTCkKI2VuZGlmCgojZW5kaWYgLyogX19DTEFOR19MSU1JVFNfSCAqLwoALyo9PT0tLS0tIG5tbWludHJpbi5oIC0gU1NFNCBpbnRyaW5zaWNzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwoKI2lmbmRlZiBfX05NTUlOVFJJTl9ICiNkZWZpbmUgX19OTU1JTlRSSU5fSAoKI2lmICFkZWZpbmVkKF9faTM4Nl9fKSAmJiAhZGVmaW5lZChfX3g4Nl82NF9fKQojZXJyb3IgIlRoaXMgaGVhZGVyIGlzIG9ubHkgbWVhbnQgdG8gYmUgdXNlZCBvbiB4ODYgYW5kIHg2NCBhcmNoaXRlY3R1cmUiCiNlbmRpZgoKLyogVG8gbWF0Y2ggZXhwZWN0YXRpb25zIG9mIGdjYyB3ZSBwdXQgdGhlIHNzZTQuMiBkZWZpbml0aW9ucyBpbnRvIHNtbWludHJpbi5oLAogICBqdXN0IGluY2x1ZGUgaXQgbm93IHRoZW4uICAqLwojaW5jbHVkZSA8c21taW50cmluLmg+CiNlbmRpZiAvKiBfX05NTUlOVFJJTl9IICovCgAvKj09PS0tLS0gcG1taW50cmluLmggLSBTU0UzIGludHJpbnNpY3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqCiAqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCiAqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCgojaWZuZGVmIF9fUE1NSU5UUklOX0gKI2RlZmluZSBfX1BNTUlOVFJJTl9ICgojaWYgIWRlZmluZWQoX19pMzg2X18pICYmICFkZWZpbmVkKF9feDg2XzY0X18pCiNlcnJvciAiVGhpcyBoZWFkZXIgaXMgb25seSBtZWFudCB0byBiZSB1c2VkIG9uIHg4NiBhbmQgeDY0IGFyY2hpdGVjdHVyZSIKI2VuZGlmCgojaW5jbHVkZSA8ZW1taW50cmluLmg+CgovKiBEZWZpbmUgdGhlIGRlZmF1bHQgYXR0cmlidXRlcyBmb3IgdGhlIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUuICovCiNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTIFwKICBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oInNzZTMiKSwgX19taW5fdmVjdG9yX3dpZHRoX18oMTI4KSkpCgovLy8gTG9hZHMgZGF0YSBmcm9tIGFuIHVuYWxpZ25lZCBtZW1vcnkgbG9jYXRpb24gdG8gZWxlbWVudHMgaW4gYSAxMjgtYml0Ci8vLyAgICB2ZWN0b3IuCi8vLwovLy8gICAgSWYgdGhlIGFkZHJlc3Mgb2YgdGhlIGRhdGEgaXMgbm90IDE2LWJ5dGUgYWxpZ25lZCwgdGhlIGluc3RydWN0aW9uIG1heQovLy8gICAgcmVhZCB0d28gYWRqYWNlbnQgYWxpZ25lZCBibG9ja3Mgb2YgbWVtb3J5IHRvIHJldHJpZXZlIHRoZSByZXF1ZXN0ZWQKLy8vICAgIGRhdGEuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkxERFFVIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fcAovLy8gICAgQSBwb2ludGVyIHRvIGEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIGludGVnZXIgdmFsdWVzLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBjb250YWluaW5nIHRoZSBtb3ZlZCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9sZGRxdV9zaTEyOChfX20xMjhpIGNvbnN0ICpfX3ApCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfbGRkcXUoKGNoYXIgY29uc3QgKilfX3ApOwp9CgovLy8gQWRkcyB0aGUgZXZlbi1pbmRleGVkIHZhbHVlcyBhbmQgc3VidHJhY3RzIHRoZSBvZGQtaW5kZXhlZCB2YWx1ZXMgb2YKLy8vICAgIHR3byAxMjgtYml0IHZlY3RvcnMgb2YgWzQgeCBmbG9hdF0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkFERFNVQlBTIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBsZWZ0IHNvdXJjZSBvcGVyYW5kLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSByaWdodCBzb3VyY2Ugb3BlcmFuZC4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgYWx0ZXJuYXRpbmcgc3VtcyBhbmQKLy8vICAgIGRpZmZlcmVuY2VzIG9mIGJvdGggb3BlcmFuZHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2FkZHN1Yl9wcyhfX20xMjggX19hLCBfX20xMjggX19iKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2FkZHN1YnBzKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYik7Cn0KCi8vLyBIb3Jpem9udGFsbHkgYWRkcyB0aGUgYWRqYWNlbnQgcGFpcnMgb2YgdmFsdWVzIGNvbnRhaW5lZCBpbiB0d28KLy8vICAgIDEyOC1iaXQgdmVjdG9ycyBvZiBbNCB4IGZsb2F0XS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWSEFERFBTIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLgovLy8gICAgVGhlIGhvcml6b250YWwgc3VtcyBvZiB0aGUgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIGxvd2VyIGJpdHMgb2YgdGhlCi8vLyAgICBkZXN0aW5hdGlvbi4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4KLy8vICAgIFRoZSBob3Jpem9udGFsIHN1bXMgb2YgdGhlIHZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSB1cHBlciBiaXRzIG9mIHRoZQovLy8gICAgZGVzdGluYXRpb24uCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGhvcml6b250YWwgc3VtcyBvZgovLy8gICAgYm90aCBvcGVyYW5kcy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1faGFkZF9wcyhfX20xMjggX19hLCBfX20xMjggX19iKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2hhZGRwcygoX192NHNmKV9fYSwgKF9fdjRzZilfX2IpOwp9CgovLy8gSG9yaXpvbnRhbGx5IHN1YnRyYWN0cyB0aGUgYWRqYWNlbnQgcGFpcnMgb2YgdmFsdWVzIGNvbnRhaW5lZCBpbiB0d28KLy8vICAgIDEyOC1iaXQgdmVjdG9ycyBvZiBbNCB4IGZsb2F0XS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWSFNVQlBTIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLgovLy8gICAgVGhlIGhvcml6b250YWwgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIGxvd2VyCi8vLyAgICBiaXRzIG9mIHRoZSBkZXN0aW5hdGlvbi4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4KLy8vICAgIFRoZSBob3Jpem9udGFsIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSB1cHBlcgovLy8gICAgYml0cyBvZiB0aGUgZGVzdGluYXRpb24uCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGhvcml6b250YWwKLy8vICAgIGRpZmZlcmVuY2VzIG9mIGJvdGggb3BlcmFuZHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2hzdWJfcHMoX19tMTI4IF9fYSwgX19tMTI4IF9fYikKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9oc3VicHMoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19iKTsKfQoKLy8vIE1vdmVzIGFuZCBkdXBsaWNhdGVzIG9kZC1pbmRleGVkIHZhbHVlcyBmcm9tIGEgMTI4LWJpdCB2ZWN0b3IKLy8vICAgIG9mIFs0IHggZmxvYXRdIHRvIGZsb2F0IHZhbHVlcyBzdG9yZWQgaW4gYSAxMjgtYml0IHZlY3RvciBvZgovLy8gICAgWzQgeCBmbG9hdF0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVlNIRFVQIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gXG4KLy8vICAgIEJpdHMgWzEyNzo5Nl0gb2YgdGhlIHNvdXJjZSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxMjc6OTZdIGFuZCBbOTU6NjRdIG9mCi8vLyAgICB0aGUgZGVzdGluYXRpb24uIFxuCi8vLyAgICBCaXRzIFs2MzozMl0gb2YgdGhlIHNvdXJjZSBhcmUgd3JpdHRlbiB0byBiaXRzIFs2MzozMl0gYW5kIFszMTowXSBvZiB0aGUKLy8vICAgIGRlc3RpbmF0aW9uLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBtb3ZlZCBhbmQgZHVwbGljYXRlZAovLy8gICAgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9tb3ZlaGR1cF9wcyhfX20xMjggX19hKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYSwgMSwgMSwgMywgMyk7Cn0KCi8vLyBEdXBsaWNhdGVzIGV2ZW4taW5kZXhlZCB2YWx1ZXMgZnJvbSBhIDEyOC1iaXQgdmVjdG9yIG9mCi8vLyAgICBbNCB4IGZsb2F0XSB0byBmbG9hdCB2YWx1ZXMgc3RvcmVkIGluIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVlNMRFVQIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBcbgovLy8gICAgQml0cyBbOTU6NjRdIG9mIHRoZSBzb3VyY2UgYXJlIHdyaXR0ZW4gdG8gYml0cyBbMTI3Ojk2XSBhbmQgWzk1OjY0XSBvZgovLy8gICAgdGhlIGRlc3RpbmF0aW9uLiBcbgovLy8gICAgQml0cyBbMzE6MF0gb2YgdGhlIHNvdXJjZSBhcmUgd3JpdHRlbiB0byBiaXRzIFs2MzozMl0gYW5kIFszMTowXSBvZiB0aGUKLy8vICAgIGRlc3RpbmF0aW9uLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBtb3ZlZCBhbmQgZHVwbGljYXRlZAovLy8gICAgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9tb3ZlbGR1cF9wcyhfX20xMjggX19hKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYSwgMCwgMCwgMiwgMik7Cn0KCi8vLyBBZGRzIHRoZSBldmVuLWluZGV4ZWQgdmFsdWVzIGFuZCBzdWJ0cmFjdHMgdGhlIG9kZC1pbmRleGVkIHZhbHVlcyBvZgovLy8gICAgdHdvIDEyOC1iaXQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkFERFNVQlBEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgbGVmdCBzb3VyY2Ugb3BlcmFuZC4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIHJpZ2h0IHNvdXJjZSBvcGVyYW5kLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgYWx0ZXJuYXRpbmcgc3VtcwovLy8gICAgYW5kIGRpZmZlcmVuY2VzIG9mIGJvdGggb3BlcmFuZHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9hZGRzdWJfcGQoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2FkZHN1YnBkKChfX3YyZGYpX19hLCAoX192MmRmKV9fYik7Cn0KCi8vLyBIb3Jpem9udGFsbHkgYWRkcyB0aGUgcGFpcnMgb2YgdmFsdWVzIGNvbnRhaW5lZCBpbiB0d28gMTI4LWJpdAovLy8gICAgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkhBRERQRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuCi8vLyAgICBUaGUgaG9yaXpvbnRhbCBzdW0gb2YgdGhlIHZhbHVlcyBpcyBzdG9yZWQgaW4gdGhlIGxvd2VyIGJpdHMgb2YgdGhlCi8vLyAgICBkZXN0aW5hdGlvbi4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuCi8vLyAgICBUaGUgaG9yaXpvbnRhbCBzdW0gb2YgdGhlIHZhbHVlcyBpcyBzdG9yZWQgaW4gdGhlIHVwcGVyIGJpdHMgb2YgdGhlCi8vLyAgICBkZXN0aW5hdGlvbi4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGhvcml6b250YWwgc3VtcyBvZgovLy8gICAgYm90aCBvcGVyYW5kcy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2hhZGRfcGQoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2hhZGRwZCgoX192MmRmKV9fYSwgKF9fdjJkZilfX2IpOwp9CgovLy8gSG9yaXpvbnRhbGx5IHN1YnRyYWN0cyB0aGUgcGFpcnMgb2YgdmFsdWVzIGNvbnRhaW5lZCBpbiB0d28gMTI4LWJpdAovLy8gICAgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkhTVUJQRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuCi8vLyAgICBUaGUgaG9yaXpvbnRhbCBkaWZmZXJlbmNlIG9mIHRoZSB2YWx1ZXMgaXMgc3RvcmVkIGluIHRoZSBsb3dlciBiaXRzIG9mCi8vLyAgICB0aGUgZGVzdGluYXRpb24uCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLgovLy8gICAgVGhlIGhvcml6b250YWwgZGlmZmVyZW5jZSBvZiB0aGUgdmFsdWVzIGlzIHN0b3JlZCBpbiB0aGUgdXBwZXIgYml0cyBvZgovLy8gICAgdGhlIGRlc3RpbmF0aW9uLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgaG9yaXpvbnRhbAovLy8gICAgZGlmZmVyZW5jZXMgb2YgYm90aCBvcGVyYW5kcy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2hzdWJfcGQoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2hzdWJwZCgoX192MmRmKV9fYSwgKF9fdjJkZilfX2IpOwp9CgovLy8gTW92ZXMgYW5kIGR1cGxpY2F0ZXMgb25lIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgdG8gZG91YmxlLXByZWNpc2lvbgovLy8gICAgdmFsdWVzIHN0b3JlZCBpbiBhIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gXGNvZGUKLy8vIF9fbTEyOGQgX21tX2xvYWRkdXBfcGQoZG91YmxlIGNvbnN0ICpkcCk7Ci8vLyBcZW5kY29kZQovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVkREVVAgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gZHAKLy8vICAgIEEgcG9pbnRlciB0byBhIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgdG8gYmUgbW92ZWQgYW5kIGR1cGxpY2F0ZWQuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBtb3ZlZCBhbmQKLy8vICAgIGR1cGxpY2F0ZWQgdmFsdWVzLgojZGVmaW5lICAgICAgICBfbW1fbG9hZGR1cF9wZChkcCkgICAgICAgIF9tbV9sb2FkMV9wZChkcCkKCi8vLyBNb3ZlcyBhbmQgZHVwbGljYXRlcyB0aGUgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpbiB0aGUgbG93ZXIgYml0cyBvZgovLy8gICAgYSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gdG8gZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgc3RvcmVkIGluIGEKLy8vICAgIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WRERVUCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBCaXRzIFs2MzowXSBhcmUgd3JpdHRlbiB0byBiaXRzCi8vLyAgICBbMTI3OjY0XSBhbmQgWzYzOjBdIG9mIHRoZSBkZXN0aW5hdGlvbi4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIG1vdmVkIGFuZAovLy8gICAgZHVwbGljYXRlZCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9tb3ZlZHVwX3BkKF9fbTEyOGQgX19hKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3YyZGYpX19hLCAoX192MmRmKV9fYSwgMCwgMCk7Cn0KCi8vLyBFc3RhYmxpc2hlcyBhIGxpbmVhciBhZGRyZXNzIG1lbW9yeSByYW5nZSB0byBiZSBtb25pdG9yZWQgYW5kIHB1dHMKLy8vICAgIHRoZSBwcm9jZXNzb3IgaW4gdGhlIG1vbml0b3IgZXZlbnQgcGVuZGluZyBzdGF0ZS4gRGF0YSBzdG9yZWQgaW4gdGhlCi8vLyAgICBtb25pdG9yZWQgYWRkcmVzcyByYW5nZSBjYXVzZXMgdGhlIHByb2Nlc3NvciB0byBleGl0IHRoZSBwZW5kaW5nIHN0YXRlLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IE1PTklUT1IgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19wCi8vLyAgICBUaGUgbWVtb3J5IHJhbmdlIHRvIGJlIG1vbml0b3JlZC4gVGhlIHNpemUgb2YgdGhlIHJhbmdlIGlzIGRldGVybWluZWQgYnkKLy8vICAgIENQVUlEIGZ1bmN0aW9uIDAwMDBfMDAwNWguCi8vLyBccGFyYW0gX19leHRlbnNpb25zCi8vLyAgICBPcHRpb25hbCBleHRlbnNpb25zIGZvciB0aGUgbW9uaXRvcmluZyBzdGF0ZS4KLy8vIFxwYXJhbSBfX2hpbnRzCi8vLyAgICBPcHRpb25hbCBoaW50cyBmb3IgdGhlIG1vbml0b3Jpbmcgc3RhdGUuCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9tb25pdG9yKHZvaWQgY29uc3QgKl9fcCwgdW5zaWduZWQgX19leHRlbnNpb25zLCB1bnNpZ25lZCBfX2hpbnRzKQp7CiAgX19idWlsdGluX2lhMzJfbW9uaXRvcihfX3AsIF9fZXh0ZW5zaW9ucywgX19oaW50cyk7Cn0KCi8vLyBVc2VkIHdpdGggdGhlIE1PTklUT1IgaW5zdHJ1Y3Rpb24gdG8gd2FpdCB3aGlsZSB0aGUgcHJvY2Vzc29yIGlzIGluCi8vLyAgICB0aGUgbW9uaXRvciBldmVudCBwZW5kaW5nIHN0YXRlLiBEYXRhIHN0b3JlZCBpbiB0aGUgbW9uaXRvcmVkIGFkZHJlc3MKLy8vICAgIHJhbmdlIGNhdXNlcyB0aGUgcHJvY2Vzc29yIHRvIGV4aXQgdGhlIHBlbmRpbmcgc3RhdGUuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gTVdBSVQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19leHRlbnNpb25zCi8vLyAgICBPcHRpb25hbCBleHRlbnNpb25zIGZvciB0aGUgbW9uaXRvcmluZyBzdGF0ZSwgd2hpY2ggbWF5IHZhcnkgYnkKLy8vICAgIHByb2Nlc3Nvci4KLy8vIFxwYXJhbSBfX2hpbnRzCi8vLyAgICBPcHRpb25hbCBoaW50cyBmb3IgdGhlIG1vbml0b3Jpbmcgc3RhdGUsIHdoaWNoIG1heSB2YXJ5IGJ5IHByb2Nlc3Nvci4Kc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX213YWl0KHVuc2lnbmVkIF9fZXh0ZW5zaW9ucywgdW5zaWduZWQgX19oaW50cykKewogIF9fYnVpbHRpbl9pYTMyX213YWl0KF9fZXh0ZW5zaW9ucywgX19oaW50cyk7Cn0KCiN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlMKCiNlbmRpZiAvKiBfX1BNTUlOVFJJTl9IICovCgBzbW1pbnRyaW4uaAAvKj09PS0tLS0tLS0tLS0tLSB2cGNsbXVscWRxaW50cmluLmggLSBWUENMTVVMUURRIGludHJpbnNpY3MgLS0tLS0tLS0tLS0tLS0tPT09CiAqCiAqCiAqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCiAqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCiNpZm5kZWYgX19JTU1JTlRSSU5fSAojZXJyb3IgIk5ldmVyIHVzZSA8dnBjbG11bHFkcWludHJpbi5oPiBkaXJlY3RseTsgaW5jbHVkZSA8aW1taW50cmluLmg+IGluc3RlYWQuIgojZW5kaWYKCiNpZm5kZWYgX19WUENMTVVMUURRSU5UUklOX0gKI2RlZmluZSBfX1ZQQ0xNVUxRRFFJTlRSSU5fSAoKI2RlZmluZSBfbW0yNTZfY2xtdWxlcGk2NF9lcGkxMjgoQSwgQiwgSSkgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9wY2xtdWxxZHEyNTYoKF9fdjRkaSkoX19tMjU2aSkoQSksICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKShfX20yNTZpKShCKSwgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyKShJKSkpCgojaWZkZWYgX19BVlg1MTJGSU5UUklOX0gKI2RlZmluZSBfbW01MTJfY2xtdWxlcGk2NF9lcGkxMjgoQSwgQiwgSSkgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9wY2xtdWxxZHE1MTIoKF9fdjhkaSkoX19tNTEyaSkoQSksICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKShfX201MTJpKShCKSwgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyKShJKSkpCiNlbmRpZiAvLyBfX0FWWDUxMkZJTlRSSU5fSAoKI2VuZGlmIC8qIF9fVlBDTE1VTFFEUUlOVFJJTl9IICovCgoAc2FuaXRpemVyL21zYW5faW50ZXJmYWNlLmgAZnJlYWQoJmNvbnRlbnRbMF0sIHNpemUsIDEsIGhhbmRsZSkARXhwZWN0ZWQgYW4gYXJyYXkgb2Ygb2JqZWN0cy4AY29udGVudABTZWFyY2hPbmVQYXNzIGluY29uc2lzdGVuY3kAWzphbG51bTpdAE1pc3NpbmcgY2FzZSBpbiBDb21waWxlcjogAEZhaWxlZCB0byBhbmFseXplIHN0YXJ0IHN0YXRlLgBHcm93U3RhY2soKSBmYWlsZWQ6IABcQwBBdmVzdGFuAERldmFuYWdhcmkATGVwY2hhAFBlAFNhbWFyaXRhbgBTb3JhX1NvbXBlbmcAU0lHVFJBUABTaWduYWwgJWQgcmFpc2VkIGF0IFBDPSVwIHdoaWxlIGFscmVhZHkgaW4gQWJzbEZhaWx1cmVTaWduYWxIYW5kbGVyKCkAKioqIFNpZ25hbCAlZCByZWNlaXZlZCBhdCB0aW1lPSVsZCVzICoqKgoAVW5hYmxlIHRvIHJlYWQgZnJvbSBmZCAlZCBhdCBvZmZzZXQgJXp1OiBuX3JlYWQgPSAlemQAYmFkIHBvaW50ZXIAb2Zmc2V0IDwgc3Ryc2l6ZV8AdmVyc2lvbl9kZWZpbml0aW9uLT52ZF9jbnQgPT0gMSB8fCB2ZXJzaW9uX2RlZmluaXRpb24tPnZkX2NudCA9PSAyAGJhZCBhcmVuYSBwb2ludGVyIGluIERlbGV0ZUFyZW5hKCkAbWFsZm9ybWVkIGZyZWVsaXN0AGludABEaQBjbABuZXdbXQBkZWxldGUAaXgAT1VUX09GX1JBTkdFAENoZWNrIG4gPD0gc2l6ZSgpIGZhaWxlZDogAEV4dG4sIGxlbiA9IABjYXBhY2l0eSA9PSAwAExvZ2ljIHByb2JsZW0/IHN6c3JjID0gJXp1AGNvbmRpdGlvbiB1bnRydWUgb24gcmV0dXJuIGZyb20gTG9ja1Nsb3cARW5xdWV1ZSBmYWlsZWQAZXh0ZXJuYWwvYm9yaW5nc3NsL3NyYy9jcnlwdG8vZmlwc21vZHVsZS9lY2RoL2VjZGguYwBleHRlcm5hbC9ib3Jpbmdzc2wvc3JjL2NyeXB0by9maXBzbW9kdWxlL2VjL3NpbXBsZS5jACUwMngAQm9yaW5nU1NMAE9QRU5TU0xfaW50ZXJuYWwAa3l0aGUucHJvdG8uRmlsZUluZm8ucGF0aABreXRoZS5wcm90by5jb21tb24uTWFya2VkU291cmNlLnBvc3RfdGV4dAAteABhc3NlbWJsZXIALWZzeW50YXgtb25seQBVc2VyIGVudHJ5ICgAUXVvdGVkAE9iakNTeXN0ZW0AQWZ0ZXIAX19jbGFuZ19jdWRhX2NtYXRoLmgALyo9PT0tLS0tIF9fY2xhbmdfY3VkYV9tYXRoLmggLSBEZXZpY2Utc2lkZSBDVURBIG1hdGggc3VwcG9ydCAtLS0tLS0tLS0tLS0tLT09PQogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwojaWZuZGVmIF9fQ0xBTkdfQ1VEQV9NQVRIX0hfXwojZGVmaW5lIF9fQ0xBTkdfQ1VEQV9NQVRIX0hfXwojaWZuZGVmIF9fQ1VEQV9fCiNlcnJvciAiVGhpcyBmaWxlIGlzIGZvciBDVURBIGNvbXBpbGF0aW9uIG9ubHkuIgojZW5kaWYKCiNpZm5kZWYgX19PUEVOTVBfTlZQVFhfXwojaWYgQ1VEQV9WRVJTSU9OIDwgOTAwMAojZXJyb3IgVGhpcyBmaWxlIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgd2l0aCBDVURBLTkrIG9ubHkuCiNlbmRpZgojZW5kaWYKCi8vIF9fREVWSUNFX18gaXMgYSBoZWxwZXIgbWFjcm8gd2l0aCBjb21tb24gc2V0IG9mIGF0dHJpYnV0ZXMgZm9yIHRoZSB3cmFwcGVycwovLyB3ZSBpbXBsZW1lbnQgaW4gdGhpcyBmaWxlLiBXZSBuZWVkIHN0YXRpYyBpbiBvcmRlciB0byBhdm9pZCBlbWl0dGluZyB1bnVzZWQKLy8gZnVuY3Rpb25zIGFuZCBfX2ZvcmNlaW5saW5lX18gaGVscHMgaW5saW5pbmcgdGhlc2Ugd3JhcHBlcnMgYXQgLU8xLgojcHJhZ21hIHB1c2hfbWFjcm8oIl9fREVWSUNFX18iKQojaWZkZWYgX19PUEVOTVBfTlZQVFhfXwojaWYgZGVmaW5lZChfX2NwbHVzcGx1cykKI2RlZmluZSBfX0RFVklDRV9fIHN0YXRpYyBjb25zdGV4cHIgX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSwgbm90aHJvdykpCiNlbHNlCiNkZWZpbmUgX19ERVZJQ0VfXyBzdGF0aWMgX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSwgbm90aHJvdykpCiNlbmRpZgojZWxzZQojZGVmaW5lIF9fREVWSUNFX18gc3RhdGljIF9fZGV2aWNlX18gX19mb3JjZWlubGluZV9fCiNlbmRpZgoKLy8gU3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBfX0RFVklDRV9fIGZvciBmdW5jdGlvbnMgd2l0aCB2b2lkIHJldHVybiB0eXBlLiBOZWVkZWQKLy8gYmVjYXVzZSB0aGUgT3Blbk1QIG92ZXJsYXkgcmVxdWlyZXMgY29uc3RleHByIGZ1bmN0aW9ucyBoZXJlIGJ1dCBwcmlvciB0bwovLyBjKysxNCB2b2lkIHJldHVybiBmdW5jdGlvbnMgY291bGQgbm90IGJlIGNvbnN0ZXhwci4KI3ByYWdtYSBwdXNoX21hY3JvKCJfX0RFVklDRV9WT0lEX18iKQojaWZkZWYgX19PUEVOTVBfTlZQVFhfXyAmJiBkZWZpbmVkKF9fY3BsdXNwbHVzKSAmJiBfX2NwbHVzcGx1cyA8IDIwMTQwMkwKI2RlZmluZSBfX0RFVklDRV9WT0lEX18gc3RhdGljIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUsIG5vdGhyb3cpKQojZWxzZQojZGVmaW5lIF9fREVWSUNFX1ZPSURfXyBfX0RFVklDRV9fCiNlbmRpZgoKLy8gbGliZGV2aWNlIHByb3ZpZGVzIGZhc3QgbG93IHByZWNpc2lvbiBhbmQgc2xvdyBmdWxsLXJlY2lzaW9uIGltcGxlbWVudGF0aW9ucwovLyBmb3Igc29tZSBmdW5jdGlvbnMuIFdoaWNoIG9uZSBnZXRzIHNlbGVjdGVkIGRlcGVuZHMgb24KLy8gX19DTEFOR19DVURBX0FQUFJPWF9UUkFOU0NFTkRFTlRBTFNfXyB3aGljaCBnZXRzIGRlZmluZWQgYnkgY2xhbmcgaWYKLy8gLWZmYXN0LW1hdGggb3IgLWZjdWRhLWFwcHJveC10cmFuc2NlbmRlbnRhbHMgYXJlIGluIGVmZmVjdC4KI3ByYWdtYSBwdXNoX21hY3JvKCJfX0ZBU1RfT1JfU0xPVyIpCiNpZiBkZWZpbmVkKF9fQ0xBTkdfQ1VEQV9BUFBST1hfVFJBTlNDRU5ERU5UQUxTX18pCiNkZWZpbmUgX19GQVNUX09SX1NMT1coZmFzdCwgc2xvdykgZmFzdAojZWxzZQojZGVmaW5lIF9fRkFTVF9PUl9TTE9XKGZhc3QsIHNsb3cpIHNsb3cKI2VuZGlmCgpfX0RFVklDRV9fIGludCBhYnMoaW50IF9fYSkgeyByZXR1cm4gX19udl9hYnMoX19hKTsgfQpfX0RFVklDRV9fIGRvdWJsZSBmYWJzKGRvdWJsZSBfX2EpIHsgcmV0dXJuIF9fbnZfZmFicyhfX2EpOyB9Cl9fREVWSUNFX18gZG91YmxlIGFjb3MoZG91YmxlIF9fYSkgeyByZXR1cm4gX19udl9hY29zKF9fYSk7IH0KX19ERVZJQ0VfXyBmbG9hdCBhY29zZihmbG9hdCBfX2EpIHsgcmV0dXJuIF9fbnZfYWNvc2YoX19hKTsgfQpfX0RFVklDRV9fIGRvdWJsZSBhY29zaChkb3VibGUgX19hKSB7IHJldHVybiBfX252X2Fjb3NoKF9fYSk7IH0KX19ERVZJQ0VfXyBmbG9hdCBhY29zaGYoZmxvYXQgX19hKSB7IHJldHVybiBfX252X2Fjb3NoZihfX2EpOyB9Cl9fREVWSUNFX18gZG91YmxlIGFzaW4oZG91YmxlIF9fYSkgeyByZXR1cm4gX19udl9hc2luKF9fYSk7IH0KX19ERVZJQ0VfXyBmbG9hdCBhc2luZihmbG9hdCBfX2EpIHsgcmV0dXJuIF9fbnZfYXNpbmYoX19hKTsgfQpfX0RFVklDRV9fIGRvdWJsZSBhc2luaChkb3VibGUgX19hKSB7IHJldHVybiBfX252X2FzaW5oKF9fYSk7IH0KX19ERVZJQ0VfXyBmbG9hdCBhc2luaGYoZmxvYXQgX19hKSB7IHJldHVybiBfX252X2FzaW5oZihfX2EpOyB9Cl9fREVWSUNFX18gZG91YmxlIGF0YW4oZG91YmxlIF9fYSkgeyByZXR1cm4gX19udl9hdGFuKF9fYSk7IH0KX19ERVZJQ0VfXyBkb3VibGUgYXRhbjIoZG91YmxlIF9fYSwgZG91YmxlIF9fYikgeyByZXR1cm4gX19udl9hdGFuMihfX2EsIF9fYik7IH0KX19ERVZJQ0VfXyBmbG9hdCBhdGFuMmYoZmxvYXQgX19hLCBmbG9hdCBfX2IpIHsgcmV0dXJuIF9fbnZfYXRhbjJmKF9fYSwgX19iKTsgfQpfX0RFVklDRV9fIGZsb2F0IGF0YW5mKGZsb2F0IF9fYSkgeyByZXR1cm4gX19udl9hdGFuZihfX2EpOyB9Cl9fREVWSUNFX18gZG91YmxlIGF0YW5oKGRvdWJsZSBfX2EpIHsgcmV0dXJuIF9fbnZfYXRhbmgoX19hKTsgfQpfX0RFVklDRV9fIGZsb2F0IGF0YW5oZihmbG9hdCBfX2EpIHsgcmV0dXJuIF9fbnZfYXRhbmhmKF9fYSk7IH0KX19ERVZJQ0VfXyBkb3VibGUgY2JydChkb3VibGUgX19hKSB7IHJldHVybiBfX252X2NicnQoX19hKTsgfQpfX0RFVklDRV9fIGZsb2F0IGNicnRmKGZsb2F0IF9fYSkgeyByZXR1cm4gX19udl9jYnJ0ZihfX2EpOyB9Cl9fREVWSUNFX18gZG91YmxlIGNlaWwoZG91YmxlIF9fYSkgeyByZXR1cm4gX19udl9jZWlsKF9fYSk7IH0KX19ERVZJQ0VfXyBmbG9hdCBjZWlsZihmbG9hdCBfX2EpIHsgcmV0dXJuIF9fbnZfY2VpbGYoX19hKTsgfQpfX0RFVklDRV9fIGRvdWJsZSBjb3B5c2lnbihkb3VibGUgX19hLCBkb3VibGUgX19iKSB7CiAgcmV0dXJuIF9fbnZfY29weXNpZ24oX19hLCBfX2IpOwp9Cl9fREVWSUNFX18gZmxvYXQgY29weXNpZ25mKGZsb2F0IF9fYSwgZmxvYXQgX19iKSB7CiAgcmV0dXJuIF9fbnZfY29weXNpZ25mKF9fYSwgX19iKTsKfQpfX0RFVklDRV9fIGRvdWJsZSBjb3MoZG91YmxlIF9fYSkgeyByZXR1cm4gX19udl9jb3MoX19hKTsgfQpfX0RFVklDRV9fIGZsb2F0IGNvc2YoZmxvYXQgX19hKSB7CiAgcmV0dXJuIF9fRkFTVF9PUl9TTE9XKF9fbnZfZmFzdF9jb3NmLCBfX252X2Nvc2YpKF9fYSk7Cn0KX19ERVZJQ0VfXyBkb3VibGUgY29zaChkb3VibGUgX19hKSB7IHJldHVybiBfX252X2Nvc2goX19hKTsgfQpfX0RFVklDRV9fIGZsb2F0IGNvc2hmKGZsb2F0IF9fYSkgeyByZXR1cm4gX19udl9jb3NoZihfX2EpOyB9Cl9fREVWSUNFX18gZG91YmxlIGNvc3BpKGRvdWJsZSBfX2EpIHsgcmV0dXJuIF9fbnZfY29zcGkoX19hKTsgfQpfX0RFVklDRV9fIGZsb2F0IGNvc3BpZihmbG9hdCBfX2EpIHsgcmV0dXJuIF9fbnZfY29zcGlmKF9fYSk7IH0KX19ERVZJQ0VfXyBkb3VibGUgY3lsX2Jlc3NlbF9pMChkb3VibGUgX19hKSB7IHJldHVybiBfX252X2N5bF9iZXNzZWxfaTAoX19hKTsgfQpfX0RFVklDRV9fIGZsb2F0IGN5bF9iZXNzZWxfaTBmKGZsb2F0IF9fYSkgeyByZXR1cm4gX19udl9jeWxfYmVzc2VsX2kwZihfX2EpOyB9Cl9fREVWSUNFX18gZG91YmxlIGN5bF9iZXNzZWxfaTEoZG91YmxlIF9fYSkgeyByZXR1cm4gX19udl9jeWxfYmVzc2VsX2kxKF9fYSk7IH0KX19ERVZJQ0VfXyBmbG9hdCBjeWxfYmVzc2VsX2kxZihmbG9hdCBfX2EpIHsgcmV0dXJuIF9fbnZfY3lsX2Jlc3NlbF9pMWYoX19hKTsgfQpfX0RFVklDRV9fIGRvdWJsZSBlcmYoZG91YmxlIF9fYSkgeyByZXR1cm4gX19udl9lcmYoX19hKTsgfQpfX0RFVklDRV9fIGRvdWJsZSBlcmZjKGRvdWJsZSBfX2EpIHsgcmV0dXJuIF9fbnZfZXJmYyhfX2EpOyB9Cl9fREVWSUNFX18gZmxvYXQgZXJmY2YoZmxvYXQgX19hKSB7IHJldHVybiBfX252X2VyZmNmKF9fYSk7IH0KX19ERVZJQ0VfXyBkb3VibGUgZXJmY2ludihkb3VibGUgX19hKSB7IHJldHVybiBfX252X2VyZmNpbnYoX19hKTsgfQpfX0RFVklDRV9fIGZsb2F0IGVyZmNpbnZmKGZsb2F0IF9fYSkgeyByZXR1cm4gX19udl9lcmZjaW52ZihfX2EpOyB9Cl9fREVWSUNFX18gZG91YmxlIGVyZmN4KGRvdWJsZSBfX2EpIHsgcmV0dXJuIF9fbnZfZXJmY3goX19hKTsgfQpfX0RFVklDRV9fIGZsb2F0IGVyZmN4ZihmbG9hdCBfX2EpIHsgcmV0dXJuIF9fbnZfZXJmY3hmKF9fYSk7IH0KX19ERVZJQ0VfXyBmbG9hdCBlcmZmKGZsb2F0IF9fYSkgeyByZXR1cm4gX19udl9lcmZmKF9fYSk7IH0KX19ERVZJQ0VfXyBkb3VibGUgZXJmaW52KGRvdWJsZSBfX2EpIHsgcmV0dXJuIF9fbnZfZXJmaW52KF9fYSk7IH0KX19ERVZJQ0VfXyBmbG9hdCBlcmZpbnZmKGZsb2F0IF9fYSkgeyByZXR1cm4gX19udl9lcmZpbnZmKF9fYSk7IH0KX19ERVZJQ0VfXyBkb3VibGUgZXhwKGRvdWJsZSBfX2EpIHsgcmV0dXJuIF9fbnZfZXhwKF9fYSk7IH0KX19ERVZJQ0VfXyBkb3VibGUgZXhwMTAoZG91YmxlIF9fYSkgeyByZXR1cm4gX19udl9leHAxMChfX2EpOyB9Cl9fREVWSUNFX18gZmxvYXQgZXhwMTBmKGZsb2F0IF9fYSkgeyByZXR1cm4gX19udl9leHAxMGYoX19hKTsgfQpfX0RFVklDRV9fIGRvdWJsZSBleHAyKGRvdWJsZSBfX2EpIHsgcmV0dXJuIF9fbnZfZXhwMihfX2EpOyB9Cl9fREVWSUNFX18gZmxvYXQgZXhwMmYoZmxvYXQgX19hKSB7IHJldHVybiBfX252X2V4cDJmKF9fYSk7IH0KX19ERVZJQ0VfXyBmbG9hdCBleHBmKGZsb2F0IF9fYSkgeyByZXR1cm4gX19udl9leHBmKF9fYSk7IH0KX19ERVZJQ0VfXyBkb3VibGUgZXhwbTEoZG91YmxlIF9fYSkgeyByZXR1cm4gX19udl9leHBtMShfX2EpOyB9Cl9fREVWSUNFX18gZmxvYXQgZXhwbTFmKGZsb2F0IF9fYSkgeyByZXR1cm4gX19udl9leHBtMWYoX19hKTsgfQpfX0RFVklDRV9fIGZsb2F0IGZhYnNmKGZsb2F0IF9fYSkgeyByZXR1cm4gX19udl9mYWJzZihfX2EpOyB9Cl9fREVWSUNFX18gZG91YmxlIGZkaW0oZG91YmxlIF9fYSwgZG91YmxlIF9fYikgeyByZXR1cm4gX19udl9mZGltKF9fYSwgX19iKTsgfQpfX0RFVklDRV9fIGZsb2F0IGZkaW1mKGZsb2F0IF9fYSwgZmxvYXQgX19iKSB7IHJldHVybiBfX252X2ZkaW1mKF9fYSwgX19iKTsgfQpfX0RFVklDRV9fIGRvdWJsZSBmZGl2aWRlKGRvdWJsZSBfX2EsIGRvdWJsZSBfX2IpIHsgcmV0dXJuIF9fYSAvIF9fYjsgfQpfX0RFVklDRV9fIGZsb2F0IGZkaXZpZGVmKGZsb2F0IF9fYSwgZmxvYXQgX19iKSB7CiNpZiBfX0ZBU1RfTUFUSF9fICYmICFfX0NVREFfUFJFQ19ESVYKICByZXR1cm4gX19udl9mYXN0X2ZkaXZpZGVmKF9fYSwgX19iKTsKI2Vsc2UKICByZXR1cm4gX19hIC8gX19iOwojZW5kaWYKfQpfX0RFVklDRV9fIGRvdWJsZSBmbG9vcihkb3VibGUgX19mKSB7IHJldHVybiBfX252X2Zsb29yKF9fZik7IH0KX19ERVZJQ0VfXyBmbG9hdCBmbG9vcmYoZmxvYXQgX19mKSB7IHJldHVybiBfX252X2Zsb29yZihfX2YpOyB9Cl9fREVWSUNFX18gZG91YmxlIGZtYShkb3VibGUgX19hLCBkb3VibGUgX19iLCBkb3VibGUgX19jKSB7CiAgcmV0dXJuIF9fbnZfZm1hKF9fYSwgX19iLCBfX2MpOwp9Cl9fREVWSUNFX18gZmxvYXQgZm1hZihmbG9hdCBfX2EsIGZsb2F0IF9fYiwgZmxvYXQgX19jKSB7CiAgcmV0dXJuIF9fbnZfZm1hZihfX2EsIF9fYiwgX19jKTsKfQpfX0RFVklDRV9fIGRvdWJsZSBmbWF4KGRvdWJsZSBfX2EsIGRvdWJsZSBfX2IpIHsgcmV0dXJuIF9fbnZfZm1heChfX2EsIF9fYik7IH0KX19ERVZJQ0VfXyBmbG9hdCBmbWF4ZihmbG9hdCBfX2EsIGZsb2F0IF9fYikgeyByZXR1cm4gX19udl9mbWF4ZihfX2EsIF9fYik7IH0KX19ERVZJQ0VfXyBkb3VibGUgZm1pbihkb3VibGUgX19hLCBkb3VibGUgX19iKSB7IHJldHVybiBfX252X2ZtaW4oX19hLCBfX2IpOyB9Cl9fREVWSUNFX18gZmxvYXQgZm1pbmYoZmxvYXQgX19hLCBmbG9hdCBfX2IpIHsgcmV0dXJuIF9fbnZfZm1pbmYoX19hLCBfX2IpOyB9Cl9fREVWSUNFX18gZG91YmxlIGZtb2QoZG91YmxlIF9fYSwgZG91YmxlIF9fYikgeyByZXR1cm4gX19udl9mbW9kKF9fYSwgX19iKTsgfQpfX0RFVklDRV9fIGZsb2F0IGZtb2RmKGZsb2F0IF9fYSwgZmxvYXQgX19iKSB7IHJldHVybiBfX252X2Ztb2RmKF9fYSwgX19iKTsgfQpfX0RFVklDRV9fIGRvdWJsZSBmcmV4cChkb3VibGUgX19hLCBpbnQgKl9fYikgeyByZXR1cm4gX19udl9mcmV4cChfX2EsIF9fYik7IH0KX19ERVZJQ0VfXyBmbG9hdCBmcmV4cGYoZmxvYXQgX19hLCBpbnQgKl9fYikgeyByZXR1cm4gX19udl9mcmV4cGYoX19hLCBfX2IpOyB9Cl9fREVWSUNFX18gZG91YmxlIGh5cG90KGRvdWJsZSBfX2EsIGRvdWJsZSBfX2IpIHsgcmV0dXJuIF9fbnZfaHlwb3QoX19hLCBfX2IpOyB9Cl9fREVWSUNFX18gZmxvYXQgaHlwb3RmKGZsb2F0IF9fYSwgZmxvYXQgX19iKSB7IHJldHVybiBfX252X2h5cG90ZihfX2EsIF9fYik7IH0KX19ERVZJQ0VfXyBpbnQgaWxvZ2IoZG91YmxlIF9fYSkgeyByZXR1cm4gX19udl9pbG9nYihfX2EpOyB9Cl9fREVWSUNFX18gaW50IGlsb2diZihmbG9hdCBfX2EpIHsgcmV0dXJuIF9fbnZfaWxvZ2JmKF9fYSk7IH0KX19ERVZJQ0VfXyBkb3VibGUgajAoZG91YmxlIF9fYSkgeyByZXR1cm4gX19udl9qMChfX2EpOyB9Cl9fREVWSUNFX18gZmxvYXQgajBmKGZsb2F0IF9fYSkgeyByZXR1cm4gX19udl9qMGYoX19hKTsgfQpfX0RFVklDRV9fIGRvdWJsZSBqMShkb3VibGUgX19hKSB7IHJldHVybiBfX252X2oxKF9fYSk7IH0KX19ERVZJQ0VfXyBmbG9hdCBqMWYoZmxvYXQgX19hKSB7IHJldHVybiBfX252X2oxZihfX2EpOyB9Cl9fREVWSUNFX18gZG91YmxlIGpuKGludCBfX24sIGRvdWJsZSBfX2EpIHsgcmV0dXJuIF9fbnZfam4oX19uLCBfX2EpOyB9Cl9fREVWSUNFX18gZmxvYXQgam5mKGludCBfX24sIGZsb2F0IF9fYSkgeyByZXR1cm4gX19udl9qbmYoX19uLCBfX2EpOyB9CiNpZiBkZWZpbmVkKF9fTFA2NF9fKSB8fCBkZWZpbmVkKF9XSU42NCkKX19ERVZJQ0VfXyBsb25nIGxhYnMobG9uZyBfX2EpIHsgcmV0dXJuIF9fbnZfbGxhYnMoX19hKTsgfTsKI2Vsc2UKX19ERVZJQ0VfXyBsb25nIGxhYnMobG9uZyBfX2EpIHsgcmV0dXJuIF9fbnZfYWJzKF9fYSk7IH07CiNlbmRpZgpfX0RFVklDRV9fIGRvdWJsZSBsZGV4cChkb3VibGUgX19hLCBpbnQgX19iKSB7IHJldHVybiBfX252X2xkZXhwKF9fYSwgX19iKTsgfQpfX0RFVklDRV9fIGZsb2F0IGxkZXhwZihmbG9hdCBfX2EsIGludCBfX2IpIHsgcmV0dXJuIF9fbnZfbGRleHBmKF9fYSwgX19iKTsgfQpfX0RFVklDRV9fIGRvdWJsZSBsZ2FtbWEoZG91YmxlIF9fYSkgeyByZXR1cm4gX19udl9sZ2FtbWEoX19hKTsgfQpfX0RFVklDRV9fIGZsb2F0IGxnYW1tYWYoZmxvYXQgX19hKSB7IHJldHVybiBfX252X2xnYW1tYWYoX19hKTsgfQpfX0RFVklDRV9fIGxvbmcgbG9uZyBsbGFicyhsb25nIGxvbmcgX19hKSB7IHJldHVybiBfX252X2xsYWJzKF9fYSk7IH0KX19ERVZJQ0VfXyBsb25nIGxvbmcgbGxtYXgobG9uZyBsb25nIF9fYSwgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX252X2xsbWF4KF9fYSwgX19iKTsKfQpfX0RFVklDRV9fIGxvbmcgbG9uZyBsbG1pbihsb25nIGxvbmcgX19hLCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fbnZfbGxtaW4oX19hLCBfX2IpOwp9Cl9fREVWSUNFX18gbG9uZyBsb25nIGxscmludChkb3VibGUgX19hKSB7IHJldHVybiBfX252X2xscmludChfX2EpOyB9Cl9fREVWSUNFX18gbG9uZyBsb25nIGxscmludGYoZmxvYXQgX19hKSB7IHJldHVybiBfX252X2xscmludGYoX19hKTsgfQpfX0RFVklDRV9fIGxvbmcgbG9uZyBsbHJvdW5kKGRvdWJsZSBfX2EpIHsgcmV0dXJuIF9fbnZfbGxyb3VuZChfX2EpOyB9Cl9fREVWSUNFX18gbG9uZyBsb25nIGxscm91bmRmKGZsb2F0IF9fYSkgeyByZXR1cm4gX19udl9sbHJvdW5kZihfX2EpOyB9Cl9fREVWSUNFX18gZG91YmxlIHJvdW5kKGRvdWJsZSBfX2EpIHsgcmV0dXJuIF9fbnZfcm91bmQoX19hKTsgfQpfX0RFVklDRV9fIGZsb2F0IHJvdW5kZihmbG9hdCBfX2EpIHsgcmV0dXJuIF9fbnZfcm91bmRmKF9fYSk7IH0KX19ERVZJQ0VfXyBkb3VibGUgbG9nKGRvdWJsZSBfX2EpIHsgcmV0dXJuIF9fbnZfbG9nKF9fYSk7IH0KX19ERVZJQ0VfXyBkb3VibGUgbG9nMTAoZG91YmxlIF9fYSkgeyByZXR1cm4gX19udl9sb2cxMChfX2EpOyB9Cl9fREVWSUNFX18gZmxvYXQgbG9nMTBmKGZsb2F0IF9fYSkgeyByZXR1cm4gX19udl9sb2cxMGYoX19hKTsgfQpfX0RFVklDRV9fIGRvdWJsZSBsb2cxcChkb3VibGUgX19hKSB7IHJldHVybiBfX252X2xvZzFwKF9fYSk7IH0KX19ERVZJQ0VfXyBmbG9hdCBsb2cxcGYoZmxvYXQgX19hKSB7IHJldHVybiBfX252X2xvZzFwZihfX2EpOyB9Cl9fREVWSUNFX18gZG91YmxlIGxvZzIoZG91YmxlIF9fYSkgeyByZXR1cm4gX19udl9sb2cyKF9fYSk7IH0KX19ERVZJQ0VfXyBmbG9hdCBsb2cyZihmbG9hdCBfX2EpIHsKICByZXR1cm4gX19GQVNUX09SX1NMT1coX19udl9mYXN0X2xvZzJmLCBfX252X2xvZzJmKShfX2EpOwp9Cl9fREVWSUNFX18gZG91YmxlIGxvZ2IoZG91YmxlIF9fYSkgeyByZXR1cm4gX19udl9sb2diKF9fYSk7IH0KX19ERVZJQ0VfXyBmbG9hdCBsb2diZihmbG9hdCBfX2EpIHsgcmV0dXJuIF9fbnZfbG9nYmYoX19hKTsgfQpfX0RFVklDRV9fIGZsb2F0IGxvZ2YoZmxvYXQgX19hKSB7CiAgcmV0dXJuIF9fRkFTVF9PUl9TTE9XKF9fbnZfZmFzdF9sb2dmLCBfX252X2xvZ2YpKF9fYSk7Cn0KI2lmIGRlZmluZWQoX19MUDY0X18pIHx8IGRlZmluZWQoX1dJTjY0KQpfX0RFVklDRV9fIGxvbmcgbHJpbnQoZG91YmxlIF9fYSkgeyByZXR1cm4gbGxyaW50KF9fYSk7IH0KX19ERVZJQ0VfXyBsb25nIGxyaW50ZihmbG9hdCBfX2EpIHsgcmV0dXJuIF9fZmxvYXQybGxfcm4oX19hKTsgfQpfX0RFVklDRV9fIGxvbmcgbHJvdW5kKGRvdWJsZSBfX2EpIHsgcmV0dXJuIGxscm91bmQoX19hKTsgfQpfX0RFVklDRV9fIGxvbmcgbHJvdW5kZihmbG9hdCBfX2EpIHsgcmV0dXJuIGxscm91bmRmKF9fYSk7IH0KI2Vsc2UKX19ERVZJQ0VfXyBsb25nIGxyaW50KGRvdWJsZSBfX2EpIHsgcmV0dXJuIChsb25nKXJpbnQoX19hKTsgfQpfX0RFVklDRV9fIGxvbmcgbHJpbnRmKGZsb2F0IF9fYSkgeyByZXR1cm4gX19mbG9hdDJpbnRfcm4oX19hKTsgfQpfX0RFVklDRV9fIGxvbmcgbHJvdW5kKGRvdWJsZSBfX2EpIHsgcmV0dXJuIHJvdW5kKF9fYSk7IH0KX19ERVZJQ0VfXyBsb25nIGxyb3VuZGYoZmxvYXQgX19hKSB7IHJldHVybiByb3VuZGYoX19hKTsgfQojZW5kaWYKX19ERVZJQ0VfXyBpbnQgbWF4KGludCBfX2EsIGludCBfX2IpIHsgcmV0dXJuIF9fbnZfbWF4KF9fYSwgX19iKTsgfQpfX0RFVklDRV9fIGludCBtaW4oaW50IF9fYSwgaW50IF9fYikgeyByZXR1cm4gX19udl9taW4oX19hLCBfX2IpOyB9Cl9fREVWSUNFX18gZG91YmxlIG1vZGYoZG91YmxlIF9fYSwgZG91YmxlICpfX2IpIHsgcmV0dXJuIF9fbnZfbW9kZihfX2EsIF9fYik7IH0KX19ERVZJQ0VfXyBmbG9hdCBtb2RmZihmbG9hdCBfX2EsIGZsb2F0ICpfX2IpIHsgcmV0dXJuIF9fbnZfbW9kZmYoX19hLCBfX2IpOyB9Cl9fREVWSUNFX18gZG91YmxlIG5lYXJieWludChkb3VibGUgX19hKSB7IHJldHVybiBfX2J1aWx0aW5fbmVhcmJ5aW50KF9fYSk7IH0KX19ERVZJQ0VfXyBmbG9hdCBuZWFyYnlpbnRmKGZsb2F0IF9fYSkgeyByZXR1cm4gX19idWlsdGluX25lYXJieWludGYoX19hKTsgfQpfX0RFVklDRV9fIGRvdWJsZSBuZXh0YWZ0ZXIoZG91YmxlIF9fYSwgZG91YmxlIF9fYikgewogIHJldHVybiBfX252X25leHRhZnRlcihfX2EsIF9fYik7Cn0KX19ERVZJQ0VfXyBmbG9hdCBuZXh0YWZ0ZXJmKGZsb2F0IF9fYSwgZmxvYXQgX19iKSB7CiAgcmV0dXJuIF9fbnZfbmV4dGFmdGVyZihfX2EsIF9fYik7Cn0KX19ERVZJQ0VfXyBkb3VibGUgbm9ybShpbnQgX19kaW0sIGNvbnN0IGRvdWJsZSAqX190KSB7CiAgcmV0dXJuIF9fbnZfbm9ybShfX2RpbSwgX190KTsKfQpfX0RFVklDRV9fIGRvdWJsZSBub3JtM2QoZG91YmxlIF9fYSwgZG91YmxlIF9fYiwgZG91YmxlIF9fYykgewogIHJldHVybiBfX252X25vcm0zZChfX2EsIF9fYiwgX19jKTsKfQpfX0RFVklDRV9fIGZsb2F0IG5vcm0zZGYoZmxvYXQgX19hLCBmbG9hdCBfX2IsIGZsb2F0IF9fYykgewogIHJldHVybiBfX252X25vcm0zZGYoX19hLCBfX2IsIF9fYyk7Cn0KX19ERVZJQ0VfXyBkb3VibGUgbm9ybTRkKGRvdWJsZSBfX2EsIGRvdWJsZSBfX2IsIGRvdWJsZSBfX2MsIGRvdWJsZSBfX2QpIHsKICByZXR1cm4gX19udl9ub3JtNGQoX19hLCBfX2IsIF9fYywgX19kKTsKfQpfX0RFVklDRV9fIGZsb2F0IG5vcm00ZGYoZmxvYXQgX19hLCBmbG9hdCBfX2IsIGZsb2F0IF9fYywgZmxvYXQgX19kKSB7CiAgcmV0dXJuIF9fbnZfbm9ybTRkZihfX2EsIF9fYiwgX19jLCBfX2QpOwp9Cl9fREVWSUNFX18gZG91YmxlIG5vcm1jZGYoZG91YmxlIF9fYSkgeyByZXR1cm4gX19udl9ub3JtY2RmKF9fYSk7IH0KX19ERVZJQ0VfXyBmbG9hdCBub3JtY2RmZihmbG9hdCBfX2EpIHsgcmV0dXJuIF9fbnZfbm9ybWNkZmYoX19hKTsgfQpfX0RFVklDRV9fIGRvdWJsZSBub3JtY2RmaW52KGRvdWJsZSBfX2EpIHsgcmV0dXJuIF9fbnZfbm9ybWNkZmludihfX2EpOyB9Cl9fREVWSUNFX18gZmxvYXQgbm9ybWNkZmludmYoZmxvYXQgX19hKSB7IHJldHVybiBfX252X25vcm1jZGZpbnZmKF9fYSk7IH0KX19ERVZJQ0VfXyBmbG9hdCBub3JtZihpbnQgX19kaW0sIGNvbnN0IGZsb2F0ICpfX3QpIHsKICByZXR1cm4gX19udl9ub3JtZihfX2RpbSwgX190KTsKfQpfX0RFVklDRV9fIGRvdWJsZSBwb3coZG91YmxlIF9fYSwgZG91YmxlIF9fYikgeyByZXR1cm4gX19udl9wb3coX19hLCBfX2IpOyB9Cl9fREVWSUNFX18gZmxvYXQgcG93ZihmbG9hdCBfX2EsIGZsb2F0IF9fYikgeyByZXR1cm4gX19udl9wb3dmKF9fYSwgX19iKTsgfQpfX0RFVklDRV9fIGRvdWJsZSBwb3dpKGRvdWJsZSBfX2EsIGludCBfX2IpIHsgcmV0dXJuIF9fbnZfcG93aShfX2EsIF9fYik7IH0KX19ERVZJQ0VfXyBmbG9hdCBwb3dpZihmbG9hdCBfX2EsIGludCBfX2IpIHsgcmV0dXJuIF9fbnZfcG93aWYoX19hLCBfX2IpOyB9Cl9fREVWSUNFX18gZG91YmxlIHJjYnJ0KGRvdWJsZSBfX2EpIHsgcmV0dXJuIF9fbnZfcmNicnQoX19hKTsgfQpfX0RFVklDRV9fIGZsb2F0IHJjYnJ0ZihmbG9hdCBfX2EpIHsgcmV0dXJuIF9fbnZfcmNicnRmKF9fYSk7IH0KX19ERVZJQ0VfXyBkb3VibGUgcmVtYWluZGVyKGRvdWJsZSBfX2EsIGRvdWJsZSBfX2IpIHsKICByZXR1cm4gX19udl9yZW1haW5kZXIoX19hLCBfX2IpOwp9Cl9fREVWSUNFX18gZmxvYXQgcmVtYWluZGVyZihmbG9hdCBfX2EsIGZsb2F0IF9fYikgewogIHJldHVybiBfX252X3JlbWFpbmRlcmYoX19hLCBfX2IpOwp9Cl9fREVWSUNFX18gZG91YmxlIHJlbXF1byhkb3VibGUgX19hLCBkb3VibGUgX19iLCBpbnQgKl9fYykgewogIHJldHVybiBfX252X3JlbXF1byhfX2EsIF9fYiwgX19jKTsKfQpfX0RFVklDRV9fIGZsb2F0IHJlbXF1b2YoZmxvYXQgX19hLCBmbG9hdCBfX2IsIGludCAqX19jKSB7CiAgcmV0dXJuIF9fbnZfcmVtcXVvZihfX2EsIF9fYiwgX19jKTsKfQpfX0RFVklDRV9fIGRvdWJsZSByaHlwb3QoZG91YmxlIF9fYSwgZG91YmxlIF9fYikgewogIHJldHVybiBfX252X3JoeXBvdChfX2EsIF9fYik7Cn0KX19ERVZJQ0VfXyBmbG9hdCByaHlwb3RmKGZsb2F0IF9fYSwgZmxvYXQgX19iKSB7CiAgcmV0dXJuIF9fbnZfcmh5cG90ZihfX2EsIF9fYik7Cn0KLy8gX19udl9yaW50KiBpbiBsaWJkZXZpY2UgaXMgYnVnZ3kgYW5kIHByb2R1Y2VzIGluY29ycmVjdCByZXN1bHRzLgpfX0RFVklDRV9fIGRvdWJsZSByaW50KGRvdWJsZSBfX2EpIHsgcmV0dXJuIF9fYnVpbHRpbl9yaW50KF9fYSk7IH0KX19ERVZJQ0VfXyBmbG9hdCByaW50ZihmbG9hdCBfX2EpIHsgcmV0dXJuIF9fYnVpbHRpbl9yaW50ZihfX2EpOyB9Cl9fREVWSUNFX18gZG91YmxlIHJub3JtKGludCBfX2EsIGNvbnN0IGRvdWJsZSAqX19iKSB7CiAgcmV0dXJuIF9fbnZfcm5vcm0oX19hLCBfX2IpOwp9Cl9fREVWSUNFX18gZG91YmxlIHJub3JtM2QoZG91YmxlIF9fYSwgZG91YmxlIF9fYiwgZG91YmxlIF9fYykgewogIHJldHVybiBfX252X3Jub3JtM2QoX19hLCBfX2IsIF9fYyk7Cn0KX19ERVZJQ0VfXyBmbG9hdCBybm9ybTNkZihmbG9hdCBfX2EsIGZsb2F0IF9fYiwgZmxvYXQgX19jKSB7CiAgcmV0dXJuIF9fbnZfcm5vcm0zZGYoX19hLCBfX2IsIF9fYyk7Cn0KX19ERVZJQ0VfXyBkb3VibGUgcm5vcm00ZChkb3VibGUgX19hLCBkb3VibGUgX19iLCBkb3VibGUgX19jLCBkb3VibGUgX19kKSB7CiAgcmV0dXJuIF9fbnZfcm5vcm00ZChfX2EsIF9fYiwgX19jLCBfX2QpOwp9Cl9fREVWSUNFX18gZmxvYXQgcm5vcm00ZGYoZmxvYXQgX19hLCBmbG9hdCBfX2IsIGZsb2F0IF9fYywgZmxvYXQgX19kKSB7CiAgcmV0dXJuIF9fbnZfcm5vcm00ZGYoX19hLCBfX2IsIF9fYywgX19kKTsKfQpfX0RFVklDRV9fIGZsb2F0IHJub3JtZihpbnQgX19kaW0sIGNvbnN0IGZsb2F0ICpfX3QpIHsKICByZXR1cm4gX19udl9ybm9ybWYoX19kaW0sIF9fdCk7Cn0KX19ERVZJQ0VfXyBkb3VibGUgcnNxcnQoZG91YmxlIF9fYSkgeyByZXR1cm4gX19udl9yc3FydChfX2EpOyB9Cl9fREVWSUNFX18gZmxvYXQgcnNxcnRmKGZsb2F0IF9fYSkgeyByZXR1cm4gX19udl9yc3FydGYoX19hKTsgfQpfX0RFVklDRV9fIGRvdWJsZSBzY2FsYm4oZG91YmxlIF9fYSwgaW50IF9fYikgeyByZXR1cm4gX19udl9zY2FsYm4oX19hLCBfX2IpOyB9Cl9fREVWSUNFX18gZmxvYXQgc2NhbGJuZihmbG9hdCBfX2EsIGludCBfX2IpIHsgcmV0dXJuIF9fbnZfc2NhbGJuZihfX2EsIF9fYik7IH0KX19ERVZJQ0VfXyBkb3VibGUgc2NhbGJsbihkb3VibGUgX19hLCBsb25nIF9fYikgewogIGlmIChfX2IgPiBJTlRfTUFYKQogICAgcmV0dXJuIF9fYSA+IDAgPyBIVUdFX1ZBTCA6IC1IVUdFX1ZBTDsKICBpZiAoX19iIDwgSU5UX01JTikKICAgIHJldHVybiBfX2EgPiAwID8gMC4wIDogLTAuMDsKICByZXR1cm4gc2NhbGJuKF9fYSwgKGludClfX2IpOwp9Cl9fREVWSUNFX18gZmxvYXQgc2NhbGJsbmYoZmxvYXQgX19hLCBsb25nIF9fYikgewogIGlmIChfX2IgPiBJTlRfTUFYKQogICAgcmV0dXJuIF9fYSA+IDAgPyBIVUdFX1ZBTEYgOiAtSFVHRV9WQUxGOwogIGlmIChfX2IgPCBJTlRfTUlOKQogICAgcmV0dXJuIF9fYSA+IDAgPyAwLmYgOiAtMC5mOwogIHJldHVybiBzY2FsYm5mKF9fYSwgKGludClfX2IpOwp9Cl9fREVWSUNFX18gZG91YmxlIHNpbihkb3VibGUgX19hKSB7IHJldHVybiBfX252X3NpbihfX2EpOyB9Cl9fREVWSUNFX1ZPSURfXyB2b2lkIHNpbmNvcyhkb3VibGUgX19hLCBkb3VibGUgKl9fcywgZG91YmxlICpfX2MpIHsKICByZXR1cm4gX19udl9zaW5jb3MoX19hLCBfX3MsIF9fYyk7Cn0KX19ERVZJQ0VfVk9JRF9fIHZvaWQgc2luY29zZihmbG9hdCBfX2EsIGZsb2F0ICpfX3MsIGZsb2F0ICpfX2MpIHsKICByZXR1cm4gX19GQVNUX09SX1NMT1coX19udl9mYXN0X3NpbmNvc2YsIF9fbnZfc2luY29zZikoX19hLCBfX3MsIF9fYyk7Cn0KX19ERVZJQ0VfVk9JRF9fIHZvaWQgc2luY29zcGkoZG91YmxlIF9fYSwgZG91YmxlICpfX3MsIGRvdWJsZSAqX19jKSB7CiAgcmV0dXJuIF9fbnZfc2luY29zcGkoX19hLCBfX3MsIF9fYyk7Cn0KX19ERVZJQ0VfVk9JRF9fIHZvaWQgc2luY29zcGlmKGZsb2F0IF9fYSwgZmxvYXQgKl9fcywgZmxvYXQgKl9fYykgewogIHJldHVybiBfX252X3NpbmNvc3BpZihfX2EsIF9fcywgX19jKTsKfQpfX0RFVklDRV9fIGZsb2F0IHNpbmYoZmxvYXQgX19hKSB7CiAgcmV0dXJuIF9fRkFTVF9PUl9TTE9XKF9fbnZfZmFzdF9zaW5mLCBfX252X3NpbmYpKF9fYSk7Cn0KX19ERVZJQ0VfXyBkb3VibGUgc2luaChkb3VibGUgX19hKSB7IHJldHVybiBfX252X3NpbmgoX19hKTsgfQpfX0RFVklDRV9fIGZsb2F0IHNpbmhmKGZsb2F0IF9fYSkgeyByZXR1cm4gX19udl9zaW5oZihfX2EpOyB9Cl9fREVWSUNFX18gZG91YmxlIHNpbnBpKGRvdWJsZSBfX2EpIHsgcmV0dXJuIF9fbnZfc2lucGkoX19hKTsgfQpfX0RFVklDRV9fIGZsb2F0IHNpbnBpZihmbG9hdCBfX2EpIHsgcmV0dXJuIF9fbnZfc2lucGlmKF9fYSk7IH0KX19ERVZJQ0VfXyBkb3VibGUgc3FydChkb3VibGUgX19hKSB7IHJldHVybiBfX252X3NxcnQoX19hKTsgfQpfX0RFVklDRV9fIGZsb2F0IHNxcnRmKGZsb2F0IF9fYSkgeyByZXR1cm4gX19udl9zcXJ0ZihfX2EpOyB9Cl9fREVWSUNFX18gZG91YmxlIHRhbihkb3VibGUgX19hKSB7IHJldHVybiBfX252X3RhbihfX2EpOyB9Cl9fREVWSUNFX18gZmxvYXQgdGFuZihmbG9hdCBfX2EpIHsgcmV0dXJuIF9fbnZfdGFuZihfX2EpOyB9Cl9fREVWSUNFX18gZG91YmxlIHRhbmgoZG91YmxlIF9fYSkgeyByZXR1cm4gX19udl90YW5oKF9fYSk7IH0KX19ERVZJQ0VfXyBmbG9hdCB0YW5oZihmbG9hdCBfX2EpIHsgcmV0dXJuIF9fbnZfdGFuaGYoX19hKTsgfQpfX0RFVklDRV9fIGRvdWJsZSB0Z2FtbWEoZG91YmxlIF9fYSkgeyByZXR1cm4gX19udl90Z2FtbWEoX19hKTsgfQpfX0RFVklDRV9fIGZsb2F0IHRnYW1tYWYoZmxvYXQgX19hKSB7IHJldHVybiBfX252X3RnYW1tYWYoX19hKTsgfQpfX0RFVklDRV9fIGRvdWJsZSB0cnVuYyhkb3VibGUgX19hKSB7IHJldHVybiBfX252X3RydW5jKF9fYSk7IH0KX19ERVZJQ0VfXyBmbG9hdCB0cnVuY2YoZmxvYXQgX19hKSB7IHJldHVybiBfX252X3RydW5jZihfX2EpOyB9Cl9fREVWSUNFX18gdW5zaWduZWQgbG9uZyBsb25nIHVsbG1heCh1bnNpZ25lZCBsb25nIGxvbmcgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX252X3VsbG1heChfX2EsIF9fYik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBsb25nIGxvbmcgdWxsbWluKHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fbnZfdWxsbWluKF9fYSwgX19iKTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCB1bWF4KHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19udl91bWF4KF9fYSwgX19iKTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCB1bWluKHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19udl91bWluKF9fYSwgX19iKTsKfQpfX0RFVklDRV9fIGRvdWJsZSB5MChkb3VibGUgX19hKSB7IHJldHVybiBfX252X3kwKF9fYSk7IH0KX19ERVZJQ0VfXyBmbG9hdCB5MGYoZmxvYXQgX19hKSB7IHJldHVybiBfX252X3kwZihfX2EpOyB9Cl9fREVWSUNFX18gZG91YmxlIHkxKGRvdWJsZSBfX2EpIHsgcmV0dXJuIF9fbnZfeTEoX19hKTsgfQpfX0RFVklDRV9fIGZsb2F0IHkxZihmbG9hdCBfX2EpIHsgcmV0dXJuIF9fbnZfeTFmKF9fYSk7IH0KX19ERVZJQ0VfXyBkb3VibGUgeW4oaW50IF9fYSwgZG91YmxlIF9fYikgeyByZXR1cm4gX19udl95bihfX2EsIF9fYik7IH0KX19ERVZJQ0VfXyBmbG9hdCB5bmYoaW50IF9fYSwgZmxvYXQgX19iKSB7IHJldHVybiBfX252X3luZihfX2EsIF9fYik7IH0KCiNwcmFnbWEgcG9wX21hY3JvKCJfX0RFVklDRV9fIikKI3ByYWdtYSBwb3BfbWFjcm8oIl9fREVWSUNFX1ZPSURfXyIpCiNwcmFnbWEgcG9wX21hY3JvKCJfX0ZBU1RfT1JfU0xPVyIpCgojZW5kaWYgLy8gX19DTEFOR19DVURBX0RFVklDRV9GVU5DVElPTlNfSF9fCgBhcm1fYmYxNi5oAGF2eDUxMmJpdGFsZ2ludHJpbi5oAGF2eDUxMmlmbWFpbnRyaW4uaABhdng1MTJ2Ym1pdmxpbnRyaW4uaAAvKj09PS0tLS0tLS0tLS0tLS0gYXZ4NTEydmx2bm5paW50cmluLmggLSBWTk5JIGludHJpbnNpY3MgLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqCiAqCiAqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCiAqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCiNpZm5kZWYgX19JTU1JTlRSSU5fSAojZXJyb3IgIk5ldmVyIHVzZSA8YXZ4NTEydmx2bm5paW50cmluLmg+IGRpcmVjdGx5OyBpbmNsdWRlIDxpbW1pbnRyaW4uaD4gaW5zdGVhZC4iCiNlbmRpZgoKI2lmbmRlZiBfX0FWWDUxMlZMVk5OSUlOVFJJTl9ICiNkZWZpbmUgX19BVlg1MTJWTFZOTklJTlRSSU5fSAoKLyogRGVmaW5lIHRoZSBkZWZhdWx0IGF0dHJpYnV0ZXMgZm9yIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlLiAqLwojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oImF2eDUxMnZsLGF2eDUxMnZubmkiKSwgX19taW5fdmVjdG9yX3dpZHRoX18oMTI4KSkpCiNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTMjU2IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygiYXZ4NTEydmwsYXZ4NTEydm5uaSIpLCBfX21pbl92ZWN0b3Jfd2lkdGhfXygyNTYpKSkKCi8vLyBNdWx0aXBseSBncm91cHMgb2YgNCBhZGphY2VudCBwYWlycyBvZiB1bnNpZ25lZCA4LWJpdCBpbnRlZ2VycyBpbiBcYSBBIHdpdGgKLy8vIGNvcnJlc3BvbmRpbmcgc2lnbmVkIDgtYml0IGludGVnZXJzIGluIFxhIEIsIHByb2R1Y2luZyA0IGludGVybWVkaWF0ZSBzaWduZWQKLy8vIDE2LWJpdCByZXN1bHRzLiBTdW0gdGhlc2UgNCByZXN1bHRzIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgMzItYml0IGludGVnZXIKLy8vIGluIFxhIFMsIGFuZCBzdG9yZSB0aGUgcGFja2VkIDMyLWJpdCByZXN1bHRzIGluIERTVC4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQRFBCVVNEIDwvYz4gaW5zdHJ1Y3Rpb25zLgovLy8KLy8vIFxvcGVyYXRpb24KLy8vICAgIEZPUiBqIDo9IDAgdG8gNwovLy8gICAgICB0bXAxLndvcmQgOj0gU2lnbmVkKFplcm9FeHRlbmQxNihBLmJ5dGVbNCpqXSkgKiBTaWduRXh0ZW5kMTYoQi5ieXRlWzQqal0pKQovLy8gICAgICB0bXAyLndvcmQgOj0gU2lnbmVkKFplcm9FeHRlbmQxNihBLmJ5dGVbNCpqKzFdKSAqIFNpZ25FeHRlbmQxNihCLmJ5dGVbNCpqKzFdKSkKLy8vICAgICAgdG1wMy53b3JkIDo9IFNpZ25lZChaZXJvRXh0ZW5kMTYoQS5ieXRlWzQqaisyXSkgKiBTaWduRXh0ZW5kMTYoQi5ieXRlWzQqaisyXSkpCi8vLyAgICAgIHRtcDQud29yZCA6PSBTaWduZWQoWmVyb0V4dGVuZDE2KEEuYnl0ZVs0KmorM10pICogU2lnbkV4dGVuZDE2KEIuYnl0ZVs0KmorM10pKQovLy8gICAgICBEU1QuZHdvcmRbal0gOj0gUy5kd29yZFtqXSArIHRtcDEgKyB0bXAyICsgdG1wMyArIHRtcDQKLy8vICAgIEVOREZPUgovLy8gICAgRFNUW01BWDoyNTZdIDo9IDAKLy8vIFxlbmRvcGVyYXRpb24KI2RlZmluZSBfbW0yNTZfZHBidXNkX2VwaTMyKFMsIEEsIEIpIFwKICAoKF9fbTI1NmkpX19idWlsdGluX2lhMzJfdnBkcGJ1c2QyNTYoKF9fdjhzaSkoUyksIChfX3Y4c2kpKEEpLCAoX192OHNpKShCKSkpCgovLy8gTXVsdGlwbHkgZ3JvdXBzIG9mIDQgYWRqYWNlbnQgcGFpcnMgb2YgdW5zaWduZWQgOC1iaXQgaW50ZWdlcnMgaW4gXGEgQSB3aXRoCi8vLyBjb3JyZXNwb25kaW5nIHNpZ25lZCA4LWJpdCBpbnRlZ2VycyBpbiBcYSBCLCBwcm9kdWNpbmcgNCBpbnRlcm1lZGlhdGUgc2lnbmVkCi8vLyAxNi1iaXQgcmVzdWx0cy4gU3VtIHRoZXNlIDQgcmVzdWx0cyB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIDMyLWJpdCBpbnRlZ2VyCi8vLyBpbiBcYSBTIHVzaW5nIHNpZ25lZCBzYXR1cmF0aW9uLCBhbmQgc3RvcmUgdGhlIHBhY2tlZCAzMi1iaXQgcmVzdWx0cyBpbiBEU1QuCi8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUERQQlVTRFMgPC9jPiBpbnN0cnVjdGlvbnMuCi8vLwovLy8gXG9wZXJhdGlvbgovLy8gICAgRk9SIGogOj0gMCB0byA3Ci8vLyAgICAgIHRtcDEud29yZCA6PSBTaWduZWQoWmVyb0V4dGVuZDE2KEEuYnl0ZVs0KmpdKSAqIFNpZ25FeHRlbmQxNihCLmJ5dGVbNCpqXSkpCi8vLyAgICAgIHRtcDIud29yZCA6PSBTaWduZWQoWmVyb0V4dGVuZDE2KEEuYnl0ZVs0KmorMV0pICogU2lnbkV4dGVuZDE2KEIuYnl0ZVs0KmorMV0pKQovLy8gICAgICB0bXAzLndvcmQgOj0gU2lnbmVkKFplcm9FeHRlbmQxNihBLmJ5dGVbNCpqKzJdKSAqIFNpZ25FeHRlbmQxNihCLmJ5dGVbNCpqKzJdKSkKLy8vICAgICAgdG1wNC53b3JkIDo9IFNpZ25lZChaZXJvRXh0ZW5kMTYoQS5ieXRlWzQqaiszXSkgKiBTaWduRXh0ZW5kMTYoQi5ieXRlWzQqaiszXSkpCi8vLyAgICAgIERTVC5kd29yZFtqXSA6PSBTYXR1cmF0ZTMyKFMuZHdvcmRbal0gKyB0bXAxICsgdG1wMiArIHRtcDMgKyB0bXA0KQovLy8gICAgRU5ERk9SCi8vLyAgICBEU1RbTUFYOjI1Nl0gOj0gMAovLy8gXGVuZG9wZXJhdGlvbgojZGVmaW5lIF9tbTI1Nl9kcGJ1c2RzX2VwaTMyKFMsIEEsIEIpIFwKICAoKF9fbTI1NmkpX19idWlsdGluX2lhMzJfdnBkcGJ1c2RzMjU2KChfX3Y4c2kpKFMpLCAoX192OHNpKShBKSwgKF9fdjhzaSkoQikpKQoKLy8vIE11bHRpcGx5IGdyb3VwcyBvZiAyIGFkamFjZW50IHBhaXJzIG9mIHNpZ25lZCAxNi1iaXQgaW50ZWdlcnMgaW4gXGEgQSB3aXRoCi8vLyBjb3JyZXNwb25kaW5nIDE2LWJpdCBpbnRlZ2VycyBpbiBcYSBCLCBwcm9kdWNpbmcgMiBpbnRlcm1lZGlhdGUgc2lnbmVkIDMyLWJpdAovLy8gcmVzdWx0cy4gU3VtIHRoZXNlIDIgcmVzdWx0cyB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIDMyLWJpdCBpbnRlZ2VyIGluIFxhIFMsCi8vLyAgYW5kIHN0b3JlIHRoZSBwYWNrZWQgMzItYml0IHJlc3VsdHMgaW4gRFNULgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBEUFdTU0QgPC9jPiBpbnN0cnVjdGlvbnMuCi8vLwovLy8gXG9wZXJhdGlvbgovLy8gICAgRk9SIGogOj0gMCB0byA3Ci8vLyAgICAgIHRtcDEuZHdvcmQgOj0gU2lnbkV4dGVuZDMyKEEud29yZFsyKmpdKSAqIFNpZ25FeHRlbmQzMihCLndvcmRbMipqXSkKLy8vICAgICAgdG1wMi5kd29yZCA6PSBTaWduRXh0ZW5kMzIoQS53b3JkWzIqaisxXSkgKiBTaWduRXh0ZW5kMzIoQi53b3JkWzIqaisxXSkKLy8vICAgICAgRFNULmR3b3JkW2pdIDo9IFMuZHdvcmRbal0gKyB0bXAxICsgdG1wMgovLy8gICAgRU5ERk9SCi8vLyAgICBEU1RbTUFYOjI1Nl0gOj0gMAovLy8gXGVuZG9wZXJhdGlvbgojZGVmaW5lIF9tbTI1Nl9kcHdzc2RfZXBpMzIoUywgQSwgQikgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl92cGRwd3NzZDI1NigoX192OHNpKShTKSwgKF9fdjhzaSkoQSksIChfX3Y4c2kpKEIpKSkKCi8vLyBNdWx0aXBseSBncm91cHMgb2YgMiBhZGphY2VudCBwYWlycyBvZiBzaWduZWQgMTYtYml0IGludGVnZXJzIGluIFxhIEEgd2l0aAovLy8gY29ycmVzcG9uZGluZyAxNi1iaXQgaW50ZWdlcnMgaW4gXGEgQiwgcHJvZHVjaW5nIDIgaW50ZXJtZWRpYXRlIHNpZ25lZCAzMi1iaXQKLy8vIHJlc3VsdHMuIFN1bSB0aGVzZSAyIHJlc3VsdHMgd2l0aCB0aGUgY29ycmVzcG9uZGluZyAzMi1iaXQgaW50ZWdlciBpbiBcYSBTCi8vLyB1c2luZyBzaWduZWQgc2F0dXJhdGlvbiwgYW5kIHN0b3JlIHRoZSBwYWNrZWQgMzItYml0IHJlc3VsdHMgaW4gRFNULgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBEUFdTU0RTIDwvYz4gaW5zdHJ1Y3Rpb25zLgovLy8KLy8vIFxvcGVyYXRpb24KLy8vICAgIEZPUiBqIDo9IDAgdG8gNwovLy8gICAgICB0bXAxLmR3b3JkIDo9IFNpZ25FeHRlbmQzMihBLndvcmRbMipqXSkgKiBTaWduRXh0ZW5kMzIoQi53b3JkWzIqal0pCi8vLyAgICAgIHRtcDIuZHdvcmQgOj0gU2lnbkV4dGVuZDMyKEEud29yZFsyKmorMV0pICogU2lnbkV4dGVuZDMyKEIud29yZFsyKmorMV0pCi8vLyAgICAgIERTVC5kd29yZFtqXSA6PSBTYXR1cmF0ZTMyKFMuZHdvcmRbal0gKyB0bXAxICsgdG1wMikKLy8vICAgIEVOREZPUgovLy8gICAgRFNUW01BWDoyNTZdIDo9IDAKLy8vIFxlbmRvcGVyYXRpb24KI2RlZmluZSBfbW0yNTZfZHB3c3Nkc19lcGkzMihTLCBBLCBCKSBcCiAgKChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3ZwZHB3c3NkczI1NigoX192OHNpKShTKSwgKF9fdjhzaSkoQSksIChfX3Y4c2kpKEIpKSkKCi8vLyBNdWx0aXBseSBncm91cHMgb2YgNCBhZGphY2VudCBwYWlycyBvZiB1bnNpZ25lZCA4LWJpdCBpbnRlZ2VycyBpbiBcYSBBIHdpdGgKLy8vIGNvcnJlc3BvbmRpbmcgc2lnbmVkIDgtYml0IGludGVnZXJzIGluIFxhIEIsIHByb2R1Y2luZyA0IGludGVybWVkaWF0ZSBzaWduZWQKLy8vIDE2LWJpdCByZXN1bHRzLiBTdW0gdGhlc2UgNCByZXN1bHRzIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgMzItYml0IGludGVnZXIKLy8vIGluIFxhIFMsIGFuZCBzdG9yZSB0aGUgcGFja2VkIDMyLWJpdCByZXN1bHRzIGluIERTVC4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQRFBCVVNEIDwvYz4gaW5zdHJ1Y3Rpb25zLgovLy8KLy8vIFxvcGVyYXRpb24KLy8vICAgIEZPUiBqIDo9IDAgdG8gMwovLy8gICAgICB0bXAxLndvcmQgOj0gU2lnbmVkKFplcm9FeHRlbmQxNihBLmJ5dGVbNCpqXSkgKiBTaWduRXh0ZW5kMTYoQi5ieXRlWzQqal0pKQovLy8gICAgICB0bXAyLndvcmQgOj0gU2lnbmVkKFplcm9FeHRlbmQxNihBLmJ5dGVbNCpqKzFdKSAqIFNpZ25FeHRlbmQxNihCLmJ5dGVbNCpqKzFdKSkKLy8vICAgICAgdG1wMy53b3JkIDo9IFNpZ25lZChaZXJvRXh0ZW5kMTYoQS5ieXRlWzQqaisyXSkgKiBTaWduRXh0ZW5kMTYoQi5ieXRlWzQqaisyXSkpCi8vLyAgICAgIHRtcDQud29yZCA6PSBTaWduZWQoWmVyb0V4dGVuZDE2KEEuYnl0ZVs0KmorM10pICogU2lnbkV4dGVuZDE2KEIuYnl0ZVs0KmorM10pKQovLy8gICAgICBEU1QuZHdvcmRbal0gOj0gUy5kd29yZFtqXSArIHRtcDEgKyB0bXAyICsgdG1wMyArIHRtcDQKLy8vICAgIEVOREZPUgovLy8gICAgRFNUW01BWDoxMjhdIDo9IDAKLy8vIFxlbmRvcGVyYXRpb24KI2RlZmluZSBfbW1fZHBidXNkX2VwaTMyKFMsIEEsIEIpIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdnBkcGJ1c2QxMjgoKF9fdjRzaSkoUyksIChfX3Y0c2kpKEEpLCAoX192NHNpKShCKSkpCgovLy8gTXVsdGlwbHkgZ3JvdXBzIG9mIDQgYWRqYWNlbnQgcGFpcnMgb2YgdW5zaWduZWQgOC1iaXQgaW50ZWdlcnMgaW4gXGEgQSB3aXRoCi8vLyBjb3JyZXNwb25kaW5nIHNpZ25lZCA4LWJpdCBpbnRlZ2VycyBpbiBcYSBCLCBwcm9kdWNpbmcgNCBpbnRlcm1lZGlhdGUgc2lnbmVkCi8vLyAxNi1iaXQgcmVzdWx0cy4gU3VtIHRoZXNlIDQgcmVzdWx0cyB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIDMyLWJpdCBpbnRlZ2VyCi8vLyBpbiBcYSBTIHVzaW5nIHNpZ25lZCBzYXR1cmF0aW9uLCBhbmQgc3RvcmUgdGhlIHBhY2tlZCAzMi1iaXQgcmVzdWx0cyBpbiBEU1QuCi8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUERQQlVTRFMgPC9jPiBpbnN0cnVjdGlvbnMuCi8vLwovLy8gXG9wZXJhdGlvbgovLy8gICAgRk9SIGogOj0gMCB0byAzCi8vLyAgICAgIHRtcDEud29yZCA6PSBTaWduZWQoWmVyb0V4dGVuZDE2KEEuYnl0ZVs0KmpdKSAqIFNpZ25FeHRlbmQxNihCLmJ5dGVbNCpqXSkpCi8vLyAgICAgIHRtcDIud29yZCA6PSBTaWduZWQoWmVyb0V4dGVuZDE2KEEuYnl0ZVs0KmorMV0pICogU2lnbkV4dGVuZDE2KEIuYnl0ZVs0KmorMV0pKQovLy8gICAgICB0bXAzLndvcmQgOj0gU2lnbmVkKFplcm9FeHRlbmQxNihBLmJ5dGVbNCpqKzJdKSAqIFNpZ25FeHRlbmQxNihCLmJ5dGVbNCpqKzJdKSkKLy8vICAgICAgdG1wNC53b3JkIDo9IFNpZ25lZChaZXJvRXh0ZW5kMTYoQS5ieXRlWzQqaiszXSkgKiBTaWduRXh0ZW5kMTYoQi5ieXRlWzQqaiszXSkpCi8vLyAgICAgIERTVC5kd29yZFtqXSA6PSBTYXR1cmF0ZTMyKFMuZHdvcmRbal0gKyB0bXAxICsgdG1wMiArIHRtcDMgKyB0bXA0KQovLy8gICAgRU5ERk9SCi8vLyAgICBEU1RbTUFYOjEyOF0gOj0gMAovLy8gXGVuZG9wZXJhdGlvbgojZGVmaW5lIF9tbV9kcGJ1c2RzX2VwaTMyKFMsIEEsIEIpIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdnBkcGJ1c2RzMTI4KChfX3Y0c2kpKFMpLCAoX192NHNpKShBKSwgKF9fdjRzaSkoQikpKQoKLy8vIE11bHRpcGx5IGdyb3VwcyBvZiAyIGFkamFjZW50IHBhaXJzIG9mIHNpZ25lZCAxNi1iaXQgaW50ZWdlcnMgaW4gXGEgQSB3aXRoCi8vLyBjb3JyZXNwb25kaW5nIDE2LWJpdCBpbnRlZ2VycyBpbiBcYSBCLCBwcm9kdWNpbmcgMiBpbnRlcm1lZGlhdGUgc2lnbmVkIDMyLWJpdAovLy8gcmVzdWx0cy4gU3VtIHRoZXNlIDIgcmVzdWx0cyB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIDMyLWJpdCBpbnRlZ2VyIGluIFxhIFMsCi8vLyBhbmQgc3RvcmUgdGhlIHBhY2tlZCAzMi1iaXQgcmVzdWx0cyBpbiBEU1QuCi8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUERQV1NTRCA8L2M+IGluc3RydWN0aW9ucy4KLy8vCi8vLyBcb3BlcmF0aW9uCi8vLyAgICBGT1IgaiA6PSAwIHRvIDMKLy8vICAgICAgdG1wMS5kd29yZCA6PSBTaWduRXh0ZW5kMzIoQS53b3JkWzIqal0pICogU2lnbkV4dGVuZDMyKEIud29yZFsyKmpdKQovLy8gICAgICB0bXAyLmR3b3JkIDo9IFNpZ25FeHRlbmQzMihBLndvcmRbMipqKzFdKSAqIFNpZ25FeHRlbmQzMihCLndvcmRbMipqKzFdKQovLy8gICAgICBEU1QuZHdvcmRbal0gOj0gUy5kd29yZFtqXSArIHRtcDEgKyB0bXAyCi8vLyAgICBFTkRGT1IKLy8vICAgIERTVFtNQVg6MTI4XSA6PSAwCi8vLyBcZW5kb3BlcmF0aW9uCiNkZWZpbmUgX21tX2Rwd3NzZF9lcGkzMihTLCBBLCBCKSBcCiAgKChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3ZwZHB3c3NkMTI4KChfX3Y0c2kpKFMpLCAoX192NHNpKShBKSwgKF9fdjRzaSkoQikpKQoKLy8vIE11bHRpcGx5IGdyb3VwcyBvZiAyIGFkamFjZW50IHBhaXJzIG9mIHNpZ25lZCAxNi1iaXQgaW50ZWdlcnMgaW4gXGEgQSB3aXRoCi8vLyBjb3JyZXNwb25kaW5nIDE2LWJpdCBpbnRlZ2VycyBpbiBcYSBCLCBwcm9kdWNpbmcgMiBpbnRlcm1lZGlhdGUgc2lnbmVkIDMyLWJpdAovLy8gcmVzdWx0cy4gU3VtIHRoZXNlIDIgcmVzdWx0cyB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIDMyLWJpdCBpbnRlZ2VyIGluIFxhIFMKLy8vIHVzaW5nIHNpZ25lZCBzYXR1cmF0aW9uLCBhbmQgc3RvcmUgdGhlIHBhY2tlZCAzMi1iaXQgcmVzdWx0cyBpbiBEU1QuCi8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUERQV1NTRFMgPC9jPiBpbnN0cnVjdGlvbnMuCi8vLwovLy8gXG9wZXJhdGlvbgovLy8gICAgRk9SIGogOj0gMCB0byAzCi8vLyAgICAgIHRtcDEuZHdvcmQgOj0gU2lnbkV4dGVuZDMyKEEud29yZFsyKmpdKSAqIFNpZ25FeHRlbmQzMihCLndvcmRbMipqXSkKLy8vICAgICAgdG1wMi5kd29yZCA6PSBTaWduRXh0ZW5kMzIoQS53b3JkWzIqaisxXSkgKiBTaWduRXh0ZW5kMzIoQi53b3JkWzIqaisxXSkKLy8vICAgICAgRFNULmR3b3JkW2pdIDo9IFNhdHVyYXRlMzIoUy5kd29yZFtqXSArIHRtcDEgKyB0bXAyKQovLy8gICAgRU5ERk9SCi8vLyAgICBEU1RbTUFYOjEyOF0gOj0gMAovLy8gXGVuZG9wZXJhdGlvbgojZGVmaW5lIF9tbV9kcHdzc2RzX2VwaTMyKFMsIEEsIEIpIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdnBkcHdzc2RzMTI4KChfX3Y0c2kpKFMpLCAoX192NHNpKShBKSwgKF9fdjRzaSkoQikpKQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfZHBidXNkX2VwaTMyKF9fbTI1NmkgX19TLCBfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzI1NihfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9kcGJ1c2RfZXBpMzIoX19TLCBfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9fUyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9kcGJ1c2RfZXBpMzIoX19tbWFzazggX19VLCBfX20yNTZpIF9fUywgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMjU2KF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X2RwYnVzZF9lcGkzMihfX1MsIF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X3NldHplcm9fc2kyNTYoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2RwYnVzZHNfZXBpMzIoX19tMjU2aSBfX1MsIF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMjU2KF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfZHBidXNkc19lcGkzMihfX1MsIF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfX1MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfZHBidXNkc19lcGkzMihfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19TLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8yNTYoX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfZHBidXNkc19lcGkzMihfX1MsIF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X3NldHplcm9fc2kyNTYoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2Rwd3NzZF9lcGkzMihfX20yNTZpIF9fUywgX19tbWFzazggX19VLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8yNTYoX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfZHB3c3NkX2VwaTMyKF9fUywgX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfX1MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfZHB3c3NkX2VwaTMyKF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX1MsIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzI1NihfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9kcHdzc2RfZXBpMzIoX19TLCBfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19kcHdzc2RzX2VwaTMyKF9fbTI1NmkgX19TLCBfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzI1NihfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X2Rwd3NzZHNfZXBpMzIoX19TLCBfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX19TKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2Rwd3NzZHNfZXBpMzIoX19tbWFzazggX19VLCBfX20yNTZpIF9fUywgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMjU2KF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfZHB3c3Nkc19lcGkzMihfX1MsIF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfZHBidXNkX2VwaTMyKF9fbTEyOGkgX19TLCBfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzEyOChfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9kcGJ1c2RfZXBpMzIoX19TLCBfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9fUyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9kcGJ1c2RfZXBpMzIoX19tbWFzazggX19VLCBfX20xMjhpIF9fUywgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMTI4KF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX2RwYnVzZF9lcGkzMihfX1MsIF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX3NldHplcm9fc2kxMjgoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2RwYnVzZHNfZXBpMzIoX19tMTI4aSBfX1MsIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMTI4KF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfbW1fZHBidXNkc19lcGkzMihfX1MsIF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfX1MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfZHBidXNkc19lcGkzMihfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19TLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8xMjgoX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9kcGJ1c2RzX2VwaTMyKF9fUywgX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19kcHdzc2RfZXBpMzIoX19tMTI4aSBfX1MsIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMTI4KF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX2Rwd3NzZF9lcGkzMihfX1MsIF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX19TKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2Rwd3NzZF9lcGkzMihfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19TLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8xMjgoX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfbW1fZHB3c3NkX2VwaTMyKF9fUywgX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfZHB3c3Nkc19lcGkzMihfX20xMjhpIF9fUywgX19tbWFzazggX19VLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8xMjgoX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9kcHdzc2RzX2VwaTMyKF9fUywgX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9fUyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9kcHdzc2RzX2VwaTMyKF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX1MsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzEyOChfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX2Rwd3NzZHNfZXBpMzIoX19TLCBfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX3NldHplcm9fc2kxMjgoKSk7Cn0KCiN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUzI1NgoKI2VuZGlmCgAvKj09PS0tLS0gaXNvNjQ2LmggLSBTdGFuZGFyZCBoZWFkZXIgZm9yIGFsdGVybmF0ZSBzcGVsbGluZ3Mgb2Ygb3BlcmF0b3JzLS0tPT09CiAqCiAqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCiAqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCgojaWZuZGVmIF9fSVNPNjQ2X0gKI2RlZmluZSBfX0lTTzY0Nl9ICgojaWZuZGVmIF9fY3BsdXNwbHVzCiNkZWZpbmUgYW5kICAgICYmCiNkZWZpbmUgYW5kX2VxICY9CiNkZWZpbmUgYml0YW5kICYKI2RlZmluZSBiaXRvciAgfAojZGVmaW5lIGNvbXBsICB+CiNkZWZpbmUgbm90ICAgICEKI2RlZmluZSBub3RfZXEgIT0KI2RlZmluZSBvciAgICAgfHwKI2RlZmluZSBvcl9lcSAgfD0KI2RlZmluZSB4b3IgICAgXgojZGVmaW5lIHhvcl9lcSBePQojZW5kaWYKCiNlbmRpZiAvKiBfX0lTTzY0Nl9IICovCgBvcGVuY2wtYy5oAC8qPT09LS0tLSBwcmZjaHdpbnRyaW4uaCAtIFBSRUZFVENIVyBpbnRyaW5zaWMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKi8KCiNpZiAhZGVmaW5lZChfX1g4NklOVFJJTl9IKSAmJiAhZGVmaW5lZChfTU0zRE5PV19IX0lOQ0xVREVEKQojZXJyb3IgIk5ldmVyIHVzZSA8cHJmY2h3aW50cmluLmg+IGRpcmVjdGx5OyBpbmNsdWRlIDx4ODZpbnRyaW4uaD4gb3IgPG1tM2Rub3cuaD4gaW5zdGVhZC4iCiNlbmRpZgoKI2lmbmRlZiBfX1BSRkNIV0lOVFJJTl9ICiNkZWZpbmUgX19QUkZDSFdJTlRSSU5fSAoKLy8vIExvYWRzIGEgbWVtb3J5IHNlcXVlbmNlIGNvbnRhaW5pbmcgdGhlIHNwZWNpZmllZCBtZW1vcnkgYWRkcmVzcyBpbnRvCi8vLyAgICBhbGwgZGF0YSBjYWNoZSBsZXZlbHMuIFRoZSBjYWNoZS1jb2hlcmVuY3kgc3RhdGUgaXMgc2V0IHRvIGV4Y2x1c2l2ZS4KLy8vICAgIERhdGEgY2FuIGJlIHJlYWQgZnJvbSBhbmQgd3JpdHRlbiB0byB0aGUgY2FjaGUgbGluZSB3aXRob3V0IGFkZGl0aW9uYWwKLy8vICAgIGRlbGF5LgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgXGMgUFJFRkVUQ0hUMCBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19QCi8vLyAgICBBIHBvaW50ZXIgc3BlY2lmeWluZyB0aGUgbWVtb3J5IGFkZHJlc3MgdG8gYmUgcHJlZmV0Y2hlZC4Kc3RhdGljIF9faW5saW5lX18gdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpfbV9wcmVmZXRjaCh2b2lkICpfX1ApCnsKICBfX2J1aWx0aW5fcHJlZmV0Y2ggKF9fUCwgMCwgMyAvKiBfTU1fSElOVF9UMCAqLyk7Cn0KCi8vLyBMb2FkcyBhIG1lbW9yeSBzZXF1ZW5jZSBjb250YWluaW5nIHRoZSBzcGVjaWZpZWQgbWVtb3J5IGFkZHJlc3MgaW50bwovLy8gICAgdGhlIEwxIGRhdGEgY2FjaGUgYW5kIHNldHMgdGhlIGNhY2hlLWNvaGVyZW5jeSB0byBtb2RpZmllZC4gVGhpcwovLy8gICAgcHJvdmlkZXMgYSBoaW50IHRvIHRoZSBwcm9jZXNzb3IgdGhhdCB0aGUgY2FjaGUgbGluZSB3aWxsIGJlIG1vZGlmaWVkLgovLy8gICAgSXQgaXMgaW50ZW5kZWQgZm9yIHVzZSB3aGVuIHRoZSBjYWNoZSBsaW5lIHdpbGwgYmUgd3JpdHRlbiB0byBzaG9ydGx5Ci8vLyAgICBhZnRlciB0aGUgcHJlZmV0Y2ggaXMgcGVyZm9ybWVkLgovLy8KLy8vICAgIE5vdGUgdGhhdCB0aGUgZWZmZWN0IG9mIHRoaXMgaW50cmluc2ljIGlzIGRlcGVuZGVudCBvbiB0aGUgcHJvY2Vzc29yCi8vLyAgICBpbXBsZW1lbnRhdGlvbi4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIFxjIFBSRUZFVENIVyBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19QCi8vLyAgICBBIHBvaW50ZXIgc3BlY2lmeWluZyB0aGUgbWVtb3J5IGFkZHJlc3MgdG8gYmUgcHJlZmV0Y2hlZC4Kc3RhdGljIF9faW5saW5lX18gdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpfbV9wcmVmZXRjaHcodm9sYXRpbGUgY29uc3Qgdm9pZCAqX19QKQp7CiNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCiNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2Nhc3QtcXVhbCIKICBfX2J1aWx0aW5fcHJlZmV0Y2ggKChjb25zdCB2b2lkKilfX1AsIDEsIDMgLyogX01NX0hJTlRfVDAgKi8pOwojcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCn0KCiNlbmRpZiAvKiBfX1BSRkNIV0lOVFJJTl9IICovCgBwdHdyaXRlaW50cmluLmgAc2hhaW50cmluLmgAdGJtaW50cmluLmgALyo9PT0tLS0tIHVud2luZC5oIC0gU3RhY2sgdW53aW5kaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKi8KCi8qIFNlZSAiRGF0YSBEZWZpbml0aW9ucyBmb3IgbGliZ2NjX3MiIGluIHRoZSBMaW51eCBTdGFuZGFyZCBCYXNlLiovCgojaWZuZGVmIF9fQ0xBTkdfVU5XSU5EX0gKI2RlZmluZSBfX0NMQU5HX1VOV0lORF9ICgojaWYgZGVmaW5lZChfX0FQUExFX18pICYmIF9faGFzX2luY2x1ZGVfbmV4dCg8dW53aW5kLmg+KQovKiBEYXJ3aW4gKGZyb20gMTEueCBvbikgcHJvdmlkZSBhbiB1bndpbmQuaC4gSWYgdGhhdCdzIGF2YWlsYWJsZSwKICogdXNlIGl0LiBsaWJ1bndpbmQgd3JhcHMgc29tZSBvZiBpdHMgZGVmaW5pdGlvbnMgaW4gI2lmZGVmIF9HTlVfU09VUkNFLAogKiBzbyBkZWZpbmUgdGhhdCBhcm91bmQgdGhlIGluY2x1ZGUuKi8KIyBpZm5kZWYgX0dOVV9TT1VSQ0UKIyAgZGVmaW5lIF9TSE9VTERfVU5ERUZJTkVfR05VX1NPVVJDRQojICBkZWZpbmUgX0dOVV9TT1VSQ0UKIyBlbmRpZgovLyBsaWJ1bndpbmQncyB1bndpbmQuaCByZWZsZWN0cyB0aGUgY3VycmVudCB2aXNpYmlsaXR5LiAgSG93ZXZlciwgTW96aWxsYQovLyBidWlsZHMgd2l0aCAtZnZpc2liaWxpdHk9aGlkZGVuIGFuZCByZWxpZXMgb24gZ2NjJ3MgdW53aW5kLmggdG8gcmVzZXQgdGhlCi8vIHZpc2liaWxpdHkgdG8gZGVmYXVsdCBhbmQgZXhwb3J0IGl0cyBjb250ZW50cy4gIGdjYyBhbHNvIGFsbG93cyB1c2VycyB0bwovLyBvdmVycmlkZSBpdHMgb3ZlcnJpZGUgYnkgI2RlZmluaW5nIEhJREVfRVhQT1JUUyAoYnV0IG5vdGUsIHRoaXMgb25seSBvYmV5cwovLyB0aGUgdXNlcidzIC1mdmlzaWJpbGl0eSBzZXR0aW5nOyBpdCBkb2Vzbid0IGhpZGUgYW55IGV4cG9ydHMgb24gaXRzIG93bikuICBXZQovLyBpbWl0YXRlIGdjYydzIGhlYWRlciBoZXJlOgojIGlmZGVmIEhJREVfRVhQT1JUUwojICBpbmNsdWRlX25leHQgPHVud2luZC5oPgojIGVsc2UKIyAgcHJhZ21hIEdDQyB2aXNpYmlsaXR5IHB1c2goZGVmYXVsdCkKIyAgaW5jbHVkZV9uZXh0IDx1bndpbmQuaD4KIyAgcHJhZ21hIEdDQyB2aXNpYmlsaXR5IHBvcAojIGVuZGlmCiMgaWZkZWYgX1NIT1VMRF9VTkRFRklORV9HTlVfU09VUkNFCiMgIHVuZGVmIF9HTlVfU09VUkNFCiMgIHVuZGVmIF9TSE9VTERfVU5ERUZJTkVfR05VX1NPVVJDRQojIGVuZGlmCiNlbHNlCgojaW5jbHVkZSA8c3RkaW50Lmg+CgojaWZkZWYgX19jcGx1c3BsdXMKZXh0ZXJuICJDIiB7CiNlbmRpZgoKLyogSXQgaXMgYSBiaXQgc3RyYW5nZSBmb3IgYSBoZWFkZXIgdG8gcGxheSB3aXRoIHRoZSB2aXNpYmlsaXR5IG9mIHRoZQogICBzeW1ib2xzIGl0IGRlY2xhcmVzLCBidXQgdGhpcyBtYXRjaGVzIGdjYydzIGJlaGF2aW9yIGFuZCBzb21lIHByb2dyYW1zCiAgIGRlcGVuZCBvbiBpdCAqLwojaWZuZGVmIEhJREVfRVhQT1JUUwojcHJhZ21hIEdDQyB2aXNpYmlsaXR5IHB1c2goZGVmYXVsdCkKI2VuZGlmCgp0eXBlZGVmIHVpbnRwdHJfdCBfVW53aW5kX1dvcmQgX19hdHRyaWJ1dGVfXygoX19tb2RlX18oX191bndpbmRfd29yZF9fKSkpOwp0eXBlZGVmIGludHB0cl90IF9VbndpbmRfU3dvcmQgX19hdHRyaWJ1dGVfXygoX19tb2RlX18oX191bndpbmRfd29yZF9fKSkpOwp0eXBlZGVmIHVpbnRwdHJfdCBfVW53aW5kX1B0cjsKdHlwZWRlZiB1aW50cHRyX3QgX1Vud2luZF9JbnRlcm5hbF9QdHI7CnR5cGVkZWYgdWludDY0X3QgX1Vud2luZF9FeGNlcHRpb25fQ2xhc3M7Cgp0eXBlZGVmIGludHB0cl90IF9zbGViMTI4X3Q7CnR5cGVkZWYgdWludHB0cl90IF91bGViMTI4X3Q7CgpzdHJ1Y3QgX1Vud2luZF9Db250ZXh0OwojaWYgZGVmaW5lZChfX2FybV9fKSAmJiAhKGRlZmluZWQoX19VU0lOR19TSkxKX0VYQ0VQVElPTlNfXykgfHwgZGVmaW5lZChfX0FSTV9EV0FSRl9FSF9fKSkKc3RydWN0IF9VbndpbmRfQ29udHJvbF9CbG9jazsKdHlwZWRlZiBzdHJ1Y3QgX1Vud2luZF9Db250cm9sX0Jsb2NrIF9VbndpbmRfRXhjZXB0aW9uOyAvKiBBbGlhcyAqLwojZWxzZQpzdHJ1Y3QgX1Vud2luZF9FeGNlcHRpb247CnR5cGVkZWYgc3RydWN0IF9VbndpbmRfRXhjZXB0aW9uIF9VbndpbmRfRXhjZXB0aW9uOwojZW5kaWYKdHlwZWRlZiBlbnVtIHsKICBfVVJDX05PX1JFQVNPTiA9IDAsCiNpZiBkZWZpbmVkKF9fYXJtX18pICYmICFkZWZpbmVkKF9fVVNJTkdfU0pMSl9FWENFUFRJT05TX18pICYmIFwKICAgICFkZWZpbmVkKF9fQVJNX0RXQVJGX0VIX18pCiAgX1VSQ19PSyA9IDAsIC8qIHVzZWQgYnkgQVJNIEVIQUJJICovCiNlbmRpZgogIF9VUkNfRk9SRUlHTl9FWENFUFRJT05fQ0FVR0hUID0gMSwKCiAgX1VSQ19GQVRBTF9QSEFTRTJfRVJST1IgPSAyLAogIF9VUkNfRkFUQUxfUEhBU0UxX0VSUk9SID0gMywKICBfVVJDX05PUk1BTF9TVE9QID0gNCwKCiAgX1VSQ19FTkRfT0ZfU1RBQ0sgPSA1LAogIF9VUkNfSEFORExFUl9GT1VORCA9IDYsCiAgX1VSQ19JTlNUQUxMX0NPTlRFWFQgPSA3LAogIF9VUkNfQ09OVElOVUVfVU5XSU5EID0gOCwKI2lmIGRlZmluZWQoX19hcm1fXykgJiYgIWRlZmluZWQoX19VU0lOR19TSkxKX0VYQ0VQVElPTlNfXykgJiYgXAogICAgIWRlZmluZWQoX19BUk1fRFdBUkZfRUhfXykKICBfVVJDX0ZBSUxVUkUgPSA5IC8qIHVzZWQgYnkgQVJNIEVIQUJJICovCiNlbmRpZgp9IF9VbndpbmRfUmVhc29uX0NvZGU7Cgp0eXBlZGVmIGVudW0gewogIF9VQV9TRUFSQ0hfUEhBU0UgPSAxLAogIF9VQV9DTEVBTlVQX1BIQVNFID0gMiwKCiAgX1VBX0hBTkRMRVJfRlJBTUUgPSA0LAogIF9VQV9GT1JDRV9VTldJTkQgPSA4LAogIF9VQV9FTkRfT0ZfU1RBQ0sgPSAxNiAvKiBnY2MgZXh0ZW5zaW9uIHRvIEMrKyBBQkkgKi8KfSBfVW53aW5kX0FjdGlvbjsKCnR5cGVkZWYgdm9pZCAoKl9VbndpbmRfRXhjZXB0aW9uX0NsZWFudXBfRm4pKF9VbndpbmRfUmVhc29uX0NvZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VbndpbmRfRXhjZXB0aW9uICopOwoKI2lmIGRlZmluZWQoX19hcm1fXykgJiYgIShkZWZpbmVkKF9fVVNJTkdfU0pMSl9FWENFUFRJT05TX18pIHx8IGRlZmluZWQoX19BUk1fRFdBUkZfRUhfXykpCnR5cGVkZWYgc3RydWN0IF9VbndpbmRfQ29udHJvbF9CbG9jayBfVW53aW5kX0NvbnRyb2xfQmxvY2s7CnR5cGVkZWYgdWludDMyX3QgX1Vud2luZF9FSFRfSGVhZGVyOwoKc3RydWN0IF9VbndpbmRfQ29udHJvbF9CbG9jayB7CiAgdWludDY0X3QgZXhjZXB0aW9uX2NsYXNzOwogIHZvaWQgKCpleGNlcHRpb25fY2xlYW51cCkoX1Vud2luZF9SZWFzb25fQ29kZSwgX1Vud2luZF9Db250cm9sX0Jsb2NrICopOwogIC8qIHVud2luZGVyIGNhY2hlIChwcml2YXRlIGZpZWxkcyBmb3IgdGhlIHVud2luZGVyJ3MgdXNlKSAqLwogIHN0cnVjdCB7CiAgICB1aW50MzJfdCByZXNlcnZlZDE7IC8qIGZvcmNlZCB1bndpbmQgc3RvcCBmdW5jdGlvbiwgMCBpZiBub3QgZm9yY2VkICovCiAgICB1aW50MzJfdCByZXNlcnZlZDI7IC8qIHBlcnNvbmFsaXR5IHJvdXRpbmUgKi8KICAgIHVpbnQzMl90IHJlc2VydmVkMzsgLyogY2FsbHNpdGUgKi8KICAgIHVpbnQzMl90IHJlc2VydmVkNDsgLyogZm9yY2VkIHVud2luZCBzdG9wIGFyZ3VtZW50ICovCiAgICB1aW50MzJfdCByZXNlcnZlZDU7CiAgfSB1bndpbmRlcl9jYWNoZTsKICAvKiBwcm9wYWdhdGlvbiBiYXJyaWVyIGNhY2hlICh2YWxpZCBhZnRlciBwaGFzZSAxKSAqLwogIHN0cnVjdCB7CiAgICB1aW50MzJfdCBzcDsKICAgIHVpbnQzMl90IGJpdHBhdHRlcm5bNV07CiAgfSBiYXJyaWVyX2NhY2hlOwogIC8qIGNsZWFudXAgY2FjaGUgKHByZXNlcnZlZCBvdmVyIGNsZWFudXApICovCiAgc3RydWN0IHsKICAgIHVpbnQzMl90IGJpdHBhdHRlcm5bNF07CiAgfSBjbGVhbnVwX2NhY2hlOwogIC8qIHBlcnNvbmFsaXR5IGNhY2hlIChmb3IgcGVyc29uYWxpdHkncyBiZW5lZml0KSAqLwogIHN0cnVjdCB7CiAgICB1aW50MzJfdCBmbnN0YXJ0OyAgICAgICAgIC8qIGZ1bmN0aW9uIHN0YXJ0IGFkZHJlc3MgKi8KICAgIF9VbndpbmRfRUhUX0hlYWRlciAqZWh0cDsgLyogcG9pbnRlciB0byBFSFQgZW50cnkgaGVhZGVyIHdvcmQgKi8KICAgIHVpbnQzMl90IGFkZGl0aW9uYWw7ICAgICAgLyogYWRkaXRpb25hbCBkYXRhICovCiAgICB1aW50MzJfdCByZXNlcnZlZDE7CiAgfSBwcl9jYWNoZTsKICBsb25nIGxvbmcgaW50IDogMDsgLyogZm9yY2UgYWxpZ25tZW50IG9mIG5leHQgaXRlbSB0byA4LWJ5dGUgYm91bmRhcnkgKi8KfSBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXyg4KSkpOwojZWxzZQpzdHJ1Y3QgX1Vud2luZF9FeGNlcHRpb24gewogIF9VbndpbmRfRXhjZXB0aW9uX0NsYXNzIGV4Y2VwdGlvbl9jbGFzczsKICBfVW53aW5kX0V4Y2VwdGlvbl9DbGVhbnVwX0ZuIGV4Y2VwdGlvbl9jbGVhbnVwOwojaWYgIWRlZmluZWQgKF9fVVNJTkdfU0pMSl9FWENFUFRJT05TX18pICYmIGRlZmluZWQgKF9fU0VIX18pCiAgX1Vud2luZF9Xb3JkIHByaXZhdGVfWzZdOwojZWxzZQogIF9VbndpbmRfV29yZCBwcml2YXRlXzE7CiAgX1Vud2luZF9Xb3JkIHByaXZhdGVfMjsKI2VuZGlmCiAgLyogVGhlIEl0YW5pdW0gQUJJIHJlcXVpcmVzIHRoYXQgX1Vud2luZF9FeGNlcHRpb24gb2JqZWN0cyBhcmUgImRvdWJsZS13b3JkCiAgICogYWxpZ25lZCIuICBHQ0MgaGFzIGludGVycHJldGVkIHRoaXMgdG8gbWVhbiAidXNlIHRoZSBtYXhpbXVtIHVzZWZ1bAogICAqIGFsaWdubWVudCBmb3IgdGhlIHRhcmdldCI7IHNvIGRvIHdlLiAqLwp9IF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKSk7CiNlbmRpZgoKdHlwZWRlZiBfVW53aW5kX1JlYXNvbl9Db2RlICgqX1Vud2luZF9TdG9wX0ZuKShpbnQsIF9VbndpbmRfQWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VbndpbmRfRXhjZXB0aW9uX0NsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VbndpbmRfRXhjZXB0aW9uICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9VbndpbmRfQ29udGV4dCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKik7Cgp0eXBlZGVmIF9VbndpbmRfUmVhc29uX0NvZGUgKCpfVW53aW5kX1BlcnNvbmFsaXR5X0ZuKShpbnQsIF9VbndpbmRfQWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVW53aW5kX0V4Y2VwdGlvbl9DbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1Vud2luZF9FeGNlcHRpb24gKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9VbndpbmRfQ29udGV4dCAqKTsKdHlwZWRlZiBfVW53aW5kX1BlcnNvbmFsaXR5X0ZuIF9fcGVyc29uYWxpdHlfcm91dGluZTsKCnR5cGVkZWYgX1Vud2luZF9SZWFzb25fQ29kZSAoKl9VbndpbmRfVHJhY2VfRm4pKHN0cnVjdCBfVW53aW5kX0NvbnRleHQgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqKTsKCiNpZiBkZWZpbmVkKF9fYXJtX18pICYmICEoZGVmaW5lZChfX1VTSU5HX1NKTEpfRVhDRVBUSU9OU19fKSB8fCBkZWZpbmVkKF9fQVJNX0RXQVJGX0VIX18pKQp0eXBlZGVmIGVudW0gewogIF9VVlJTQ19DT1JFID0gMCwgICAgICAgIC8qIGludGVnZXIgcmVnaXN0ZXIgKi8KICBfVVZSU0NfVkZQID0gMSwgICAgICAgICAvKiB2ZnAgKi8KICBfVVZSU0NfV01NWEQgPSAzLCAgICAgICAvKiBJbnRlbCBXTU1YIGRhdGEgcmVnaXN0ZXIgKi8KICBfVVZSU0NfV01NWEMgPSA0ICAgICAgICAvKiBJbnRlbCBXTU1YIGNvbnRyb2wgcmVnaXN0ZXIgKi8KfSBfVW53aW5kX1ZSU19SZWdDbGFzczsKCnR5cGVkZWYgZW51bSB7CiAgX1VWUlNEX1VJTlQzMiA9IDAsCiAgX1VWUlNEX1ZGUFggPSAxLAogIF9VVlJTRF9VSU5UNjQgPSAzLAogIF9VVlJTRF9GTE9BVCA9IDQsCiAgX1VWUlNEX0RPVUJMRSA9IDUKfSBfVW53aW5kX1ZSU19EYXRhUmVwcmVzZW50YXRpb247Cgp0eXBlZGVmIGVudW0gewogIF9VVlJTUl9PSyA9IDAsCiAgX1VWUlNSX05PVF9JTVBMRU1FTlRFRCA9IDEsCiAgX1VWUlNSX0ZBSUxFRCA9IDIKfSBfVW53aW5kX1ZSU19SZXN1bHQ7Cgp0eXBlZGVmIHVpbnQzMl90IF9VbndpbmRfU3RhdGU7CiNkZWZpbmUgX1VTX1ZJUlRVQUxfVU5XSU5EX0ZSQU1FICAoKF9VbndpbmRfU3RhdGUpMCkKI2RlZmluZSBfVVNfVU5XSU5EX0ZSQU1FX1NUQVJUSU5HICgoX1Vud2luZF9TdGF0ZSkxKQojZGVmaW5lIF9VU19VTldJTkRfRlJBTUVfUkVTVU1FICAgKChfVW53aW5kX1N0YXRlKTIpCiNkZWZpbmUgX1VTX0FDVElPTl9NQVNLICAgICAgICAgICAoKF9VbndpbmRfU3RhdGUpMykKI2RlZmluZSBfVVNfRk9SQ0VfVU5XSU5EICAgICAgICAgICgoX1Vud2luZF9TdGF0ZSk4KQoKX1Vud2luZF9WUlNfUmVzdWx0IF9VbndpbmRfVlJTX0dldChzdHJ1Y3QgX1Vud2luZF9Db250ZXh0ICpfX2NvbnRleHQsCiAgX1Vud2luZF9WUlNfUmVnQ2xhc3MgX19yZWdjbGFzcywKICB1aW50MzJfdCBfX3JlZ25vLAogIF9VbndpbmRfVlJTX0RhdGFSZXByZXNlbnRhdGlvbiBfX3JlcHJlc2VudGF0aW9uLAogIHZvaWQgKl9fdmFsdWVwKTsKCl9VbndpbmRfVlJTX1Jlc3VsdCBfVW53aW5kX1ZSU19TZXQoc3RydWN0IF9VbndpbmRfQ29udGV4dCAqX19jb250ZXh0LAogIF9VbndpbmRfVlJTX1JlZ0NsYXNzIF9fcmVnY2xhc3MsCiAgdWludDMyX3QgX19yZWdubywKICBfVW53aW5kX1ZSU19EYXRhUmVwcmVzZW50YXRpb24gX19yZXByZXNlbnRhdGlvbiwKICB2b2lkICpfX3ZhbHVlcCk7CgpzdGF0aWMgX19pbmxpbmVfXwpfVW53aW5kX1dvcmQgX1Vud2luZF9HZXRHUihzdHJ1Y3QgX1Vud2luZF9Db250ZXh0ICpfX2NvbnRleHQsIGludCBfX2luZGV4KSB7CiAgX1Vud2luZF9Xb3JkIF9fdmFsdWU7CiAgX1Vud2luZF9WUlNfR2V0KF9fY29udGV4dCwgX1VWUlNDX0NPUkUsIF9faW5kZXgsIF9VVlJTRF9VSU5UMzIsICZfX3ZhbHVlKTsKICByZXR1cm4gX192YWx1ZTsKfQoKc3RhdGljIF9faW5saW5lX18Kdm9pZCBfVW53aW5kX1NldEdSKHN0cnVjdCBfVW53aW5kX0NvbnRleHQgKl9fY29udGV4dCwgaW50IF9faW5kZXgsCiAgICAgICAgICAgICAgICAgICBfVW53aW5kX1dvcmQgX192YWx1ZSkgewogIF9VbndpbmRfVlJTX1NldChfX2NvbnRleHQsIF9VVlJTQ19DT1JFLCBfX2luZGV4LCBfVVZSU0RfVUlOVDMyLCAmX192YWx1ZSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fCl9VbndpbmRfV29yZCBfVW53aW5kX0dldElQKHN0cnVjdCBfVW53aW5kX0NvbnRleHQgKl9fY29udGV4dCkgewogIF9VbndpbmRfV29yZCBfX2lwID0gX1Vud2luZF9HZXRHUihfX2NvbnRleHQsIDE1KTsKICByZXR1cm4gX19pcCAmIH4oX1Vud2luZF9Xb3JkKSgweDEpOyAvKiBSZW1vdmUgdGh1bWIgbW9kZSBiaXQuICovCn0KCnN0YXRpYyBfX2lubGluZV9fCnZvaWQgX1Vud2luZF9TZXRJUChzdHJ1Y3QgX1Vud2luZF9Db250ZXh0ICpfX2NvbnRleHQsIF9VbndpbmRfV29yZCBfX3ZhbHVlKSB7CiAgX1Vud2luZF9Xb3JkIF9fdGh1bWJfbW9kZV9iaXQgPSBfVW53aW5kX0dldEdSKF9fY29udGV4dCwgMTUpICYgMHgxOwogIF9VbndpbmRfU2V0R1IoX19jb250ZXh0LCAxNSwgX192YWx1ZSB8IF9fdGh1bWJfbW9kZV9iaXQpOwp9CiNlbHNlCl9VbndpbmRfV29yZCBfVW53aW5kX0dldEdSKHN0cnVjdCBfVW53aW5kX0NvbnRleHQgKiwgaW50KTsKdm9pZCBfVW53aW5kX1NldEdSKHN0cnVjdCBfVW53aW5kX0NvbnRleHQgKiwgaW50LCBfVW53aW5kX1dvcmQpOwoKX1Vud2luZF9Xb3JkIF9VbndpbmRfR2V0SVAoc3RydWN0IF9VbndpbmRfQ29udGV4dCAqKTsKdm9pZCBfVW53aW5kX1NldElQKHN0cnVjdCBfVW53aW5kX0NvbnRleHQgKiwgX1Vud2luZF9Xb3JkKTsKI2VuZGlmCgoKX1Vud2luZF9Xb3JkIF9VbndpbmRfR2V0SVBJbmZvKHN0cnVjdCBfVW53aW5kX0NvbnRleHQgKiwgaW50ICopOwoKX1Vud2luZF9Xb3JkIF9VbndpbmRfR2V0Q0ZBKHN0cnVjdCBfVW53aW5kX0NvbnRleHQgKik7CgpfVW53aW5kX1dvcmQgX1Vud2luZF9HZXRCU1Aoc3RydWN0IF9VbndpbmRfQ29udGV4dCAqKTsKCnZvaWQgKl9VbndpbmRfR2V0TGFuZ3VhZ2VTcGVjaWZpY0RhdGEoc3RydWN0IF9VbndpbmRfQ29udGV4dCAqKTsKCl9VbndpbmRfUHRyIF9VbndpbmRfR2V0UmVnaW9uU3RhcnQoc3RydWN0IF9VbndpbmRfQ29udGV4dCAqKTsKCi8qIERXQVJGIEVIIGZ1bmN0aW9uczsgY3VycmVudGx5IG5vdCBhdmFpbGFibGUgb24gRGFyd2luL0FSTSAqLwojaWYgIWRlZmluZWQoX19BUFBMRV9fKSB8fCAhZGVmaW5lZChfX2FybV9fKQpfVW53aW5kX1JlYXNvbl9Db2RlIF9VbndpbmRfUmFpc2VFeGNlcHRpb24oX1Vud2luZF9FeGNlcHRpb24gKik7Cl9VbndpbmRfUmVhc29uX0NvZGUgX1Vud2luZF9Gb3JjZWRVbndpbmQoX1Vud2luZF9FeGNlcHRpb24gKiwgX1Vud2luZF9TdG9wX0ZuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKik7CnZvaWQgX1Vud2luZF9EZWxldGVFeGNlcHRpb24oX1Vud2luZF9FeGNlcHRpb24gKik7CnZvaWQgX1Vud2luZF9SZXN1bWUoX1Vud2luZF9FeGNlcHRpb24gKik7Cl9VbndpbmRfUmVhc29uX0NvZGUgX1Vud2luZF9SZXN1bWVfb3JfUmV0aHJvdyhfVW53aW5kX0V4Y2VwdGlvbiAqKTsKCiNlbmRpZgoKX1Vud2luZF9SZWFzb25fQ29kZSBfVW53aW5kX0JhY2t0cmFjZShfVW53aW5kX1RyYWNlX0ZuLCB2b2lkICopOwoKLyogc2V0am1wKDMpL2xvbmdqbXAoMykgc3R1ZmYgKi8KdHlwZWRlZiBzdHJ1Y3QgU2pMal9GdW5jdGlvbl9Db250ZXh0ICpfVW53aW5kX0Z1bmN0aW9uQ29udGV4dF90OwoKdm9pZCBfVW53aW5kX1NqTGpfUmVnaXN0ZXIoX1Vud2luZF9GdW5jdGlvbkNvbnRleHRfdCk7CnZvaWQgX1Vud2luZF9TakxqX1VucmVnaXN0ZXIoX1Vud2luZF9GdW5jdGlvbkNvbnRleHRfdCk7Cl9VbndpbmRfUmVhc29uX0NvZGUgX1Vud2luZF9TakxqX1JhaXNlRXhjZXB0aW9uKF9VbndpbmRfRXhjZXB0aW9uICopOwpfVW53aW5kX1JlYXNvbl9Db2RlIF9VbndpbmRfU2pMal9Gb3JjZWRVbndpbmQoX1Vud2luZF9FeGNlcHRpb24gKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VbndpbmRfU3RvcF9Gbiwgdm9pZCAqKTsKdm9pZCBfVW53aW5kX1NqTGpfUmVzdW1lKF9VbndpbmRfRXhjZXB0aW9uICopOwpfVW53aW5kX1JlYXNvbl9Db2RlIF9VbndpbmRfU2pMal9SZXN1bWVfb3JfUmV0aHJvdyhfVW53aW5kX0V4Y2VwdGlvbiAqKTsKCnZvaWQgKl9VbndpbmRfRmluZEVuY2xvc2luZ0Z1bmN0aW9uKHZvaWQgKik7CgojaWZkZWYgX19BUFBMRV9fCgpfVW53aW5kX1B0ciBfVW53aW5kX0dldERhdGFSZWxCYXNlKHN0cnVjdCBfVW53aW5kX0NvbnRleHQgKikKICAgIF9fYXR0cmlidXRlX18oKF9fdW5hdmFpbGFibGVfXykpOwpfVW53aW5kX1B0ciBfVW53aW5kX0dldFRleHRSZWxCYXNlKHN0cnVjdCBfVW53aW5kX0NvbnRleHQgKikKICAgIF9fYXR0cmlidXRlX18oKF9fdW5hdmFpbGFibGVfXykpOwoKLyogRGFyd2luLXNwZWNpZmljIGZ1bmN0aW9ucyAqLwp2b2lkIF9fcmVnaXN0ZXJfZnJhbWUoY29uc3Qgdm9pZCAqKTsKdm9pZCBfX2RlcmVnaXN0ZXJfZnJhbWUoY29uc3Qgdm9pZCAqKTsKCnN0cnVjdCBkd2FyZl9laF9iYXNlcyB7CiAgdWludHB0cl90IHRiYXNlOwogIHVpbnRwdHJfdCBkYmFzZTsKICB1aW50cHRyX3QgZnVuYzsKfTsKdm9pZCAqX1Vud2luZF9GaW5kX0ZERShjb25zdCB2b2lkICosIHN0cnVjdCBkd2FyZl9laF9iYXNlcyAqKTsKCnZvaWQgX19yZWdpc3Rlcl9mcmFtZV9pbmZvX2Jhc2VzKGNvbnN0IHZvaWQgKiwgdm9pZCAqLCB2b2lkICosIHZvaWQgKikKICBfX2F0dHJpYnV0ZV9fKChfX3VuYXZhaWxhYmxlX18pKTsKdm9pZCBfX3JlZ2lzdGVyX2ZyYW1lX2luZm8oY29uc3Qgdm9pZCAqLCB2b2lkICopIF9fYXR0cmlidXRlX18oKF9fdW5hdmFpbGFibGVfXykpOwp2b2lkIF9fcmVnaXN0ZXJfZnJhbWVfaW5mb190YWJsZV9iYXNlcyhjb25zdCB2b2lkICosIHZvaWQqLCB2b2lkICosIHZvaWQgKikKICBfX2F0dHJpYnV0ZV9fKChfX3VuYXZhaWxhYmxlX18pKTsKdm9pZCBfX3JlZ2lzdGVyX2ZyYW1lX2luZm9fdGFibGUoY29uc3Qgdm9pZCAqLCB2b2lkICopCiAgX19hdHRyaWJ1dGVfXygoX191bmF2YWlsYWJsZV9fKSk7CnZvaWQgX19yZWdpc3Rlcl9mcmFtZV90YWJsZShjb25zdCB2b2lkICopIF9fYXR0cmlidXRlX18oKF9fdW5hdmFpbGFibGVfXykpOwp2b2lkIF9fZGVyZWdpc3Rlcl9mcmFtZV9pbmZvKGNvbnN0IHZvaWQgKikgX19hdHRyaWJ1dGVfXygoX191bmF2YWlsYWJsZV9fKSk7CnZvaWQgX19kZXJlZ2lzdGVyX2ZyYW1lX2luZm9fYmFzZXMoY29uc3Qgdm9pZCAqKV9fYXR0cmlidXRlX18oKF9fdW5hdmFpbGFibGVfXykpOwoKI2Vsc2UKCl9VbndpbmRfUHRyIF9VbndpbmRfR2V0RGF0YVJlbEJhc2Uoc3RydWN0IF9VbndpbmRfQ29udGV4dCAqKTsKX1Vud2luZF9QdHIgX1Vud2luZF9HZXRUZXh0UmVsQmFzZShzdHJ1Y3QgX1Vud2luZF9Db250ZXh0ICopOwoKI2VuZGlmCgoKI2lmbmRlZiBISURFX0VYUE9SVFMKI3ByYWdtYSBHQ0MgdmlzaWJpbGl0eSBwb3AKI2VuZGlmCgojaWZkZWYgX19jcGx1c3BsdXMKfQojZW5kaWYKCiNlbmRpZgoKI2VuZGlmIC8qIF9fQ0xBTkdfVU5XSU5EX0ggKi8KAC8qPT09LS0tLSB4c2F2ZWludHJpbi5oIC0gWFNBVkUgaW50cmluc2ljIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKi8KCiNpZm5kZWYgX19JTU1JTlRSSU5fSAojZXJyb3IgIk5ldmVyIHVzZSA8eHNhdmVpbnRyaW4uaD4gZGlyZWN0bHk7IGluY2x1ZGUgPGltbWludHJpbi5oPiBpbnN0ZWFkLiIKI2VuZGlmCgojaWZuZGVmIF9fWFNBVkVJTlRSSU5fSAojZGVmaW5lIF9fWFNBVkVJTlRSSU5fSAoKI2lmZGVmIF9NU0NfVkVSCiNkZWZpbmUgX1hDUl9YRkVBVFVSRV9FTkFCTEVEX01BU0sgMAojZW5kaWYKCi8qIERlZmluZSB0aGUgZGVmYXVsdCBhdHRyaWJ1dGVzIGZvciB0aGUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZS4gKi8KI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCAgX190YXJnZXRfXygieHNhdmUiKSkpCgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUwpfeHNhdmUodm9pZCAqX19wLCB1bnNpZ25lZCBsb25nIGxvbmcgX19tKSB7CiAgX19idWlsdGluX2lhMzJfeHNhdmUoX19wLCBfX20pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUwpfeHJzdG9yKHZvaWQgKl9fcCwgdW5zaWduZWQgbG9uZyBsb25nIF9fbSkgewogIF9fYnVpbHRpbl9pYTMyX3hyc3RvcihfX3AsIF9fbSk7Cn0KCiNpZm5kZWYgX01TQ19WRVIKI2RlZmluZSBfeGdldGJ2KEEpIF9fYnVpbHRpbl9pYTMyX3hnZXRidigobG9uZyBsb25nKShBKSkKI2RlZmluZSBfeHNldGJ2KEEsIEIpIF9fYnVpbHRpbl9pYTMyX3hzZXRidigodW5zaWduZWQgaW50KShBKSwgKHVuc2lnbmVkIGxvbmcgbG9uZykoQikpCiNlbHNlCiNpZmRlZiBfX2NwbHVzcGx1cwpleHRlcm4gIkMiIHsKI2VuZGlmCnVuc2lnbmVkIF9faW50NjQgX19jZGVjbCBfeGdldGJ2KHVuc2lnbmVkIGludCk7CnZvaWQgX19jZGVjbCBfeHNldGJ2KHVuc2lnbmVkIGludCwgdW5zaWduZWQgX19pbnQ2NCk7CiNpZmRlZiBfX2NwbHVzcGx1cwp9CiNlbmRpZgojZW5kaWYgLyogX01TQ19WRVIgKi8KCiNpZmRlZiBfX3g4Nl82NF9fCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTCl94c2F2ZTY0KHZvaWQgKl9fcCwgdW5zaWduZWQgbG9uZyBsb25nIF9fbSkgewogIF9fYnVpbHRpbl9pYTMyX3hzYXZlNjQoX19wLCBfX20pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUwpfeHJzdG9yNjQodm9pZCAqX19wLCB1bnNpZ25lZCBsb25nIGxvbmcgX19tKSB7CiAgX19idWlsdGluX2lhMzJfeHJzdG9yNjQoX19wLCBfX20pOwp9CgojZW5kaWYKCiN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlMKCiNlbmRpZgoALy89PT0tIEZ1enplZERhdGFQcm92aWRlci5oIC0gVXRpbGl0eSBoZWFkZXIgZm9yIGZ1enogdGFyZ2V0cyAtLS0qLSBDKysgLSogPT09Ly8KLy8KLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KLy8KLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KLy8gQSBzaW5nbGUgaGVhZGVyIGxpYnJhcnkgcHJvdmlkaW5nIGFuIHV0aWxpdHkgY2xhc3MgdG8gYnJlYWsgdXAgYW4gYXJyYXkgb2YKLy8gYnl0ZXMuIFdoZW5ldmVyIHJ1biBvbiB0aGUgc2FtZSBpbnB1dCwgcHJvdmlkZXMgdGhlIHNhbWUgb3V0cHV0LCBhcyBsb25nIGFzCi8vIGl0cyBtZXRob2RzIGFyZSBjYWxsZWQgaW4gdGhlIHNhbWUgb3JkZXIsIHdpdGggdGhlIHNhbWUgYXJndW1lbnRzLgovLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwoKI2lmbmRlZiBMTFZNX0ZVWlpFUl9GVVpaRURfREFUQV9QUk9WSURFUl9IXwojZGVmaW5lIExMVk1fRlVaWkVSX0ZVWlpFRF9EQVRBX1BST1ZJREVSX0hfCgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8YXJyYXk+CiNpbmNsdWRlIDxjbGltaXRzPgojaW5jbHVkZSA8Y3N0ZGRlZj4KI2luY2x1ZGUgPGNzdGRpbnQ+CiNpbmNsdWRlIDxjc3RyaW5nPgojaW5jbHVkZSA8aW5pdGlhbGl6ZXJfbGlzdD4KI2luY2x1ZGUgPGxpbWl0cz4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgojaW5jbHVkZSA8dXRpbGl0eT4KI2luY2x1ZGUgPHZlY3Rvcj4KCi8vIEluIGFkZGl0aW9uIHRvIHRoZSBjb21tZW50cyBiZWxvdywgdGhlIEFQSSBpcyBhbHNvIGJyaWVmbHkgZG9jdW1lbnRlZCBhdAovLyBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2Z1enppbmcvYmxvYi9tYXN0ZXIvZG9jcy9zcGxpdC1pbnB1dHMubWQjZnV6emVkLWRhdGEtcHJvdmlkZXIKY2xhc3MgRnV6emVkRGF0YVByb3ZpZGVyIHsKIHB1YmxpYzoKICAvLyB8ZGF0YXwgaXMgYW4gYXJyYXkgb2YgbGVuZ3RoIHxzaXplfCB0aGF0IHRoZSBGdXp6ZWREYXRhUHJvdmlkZXIgd3JhcHMgdG8KICAvLyBwcm92aWRlIG1vcmUgZ3JhbnVsYXIgYWNjZXNzLiB8ZGF0YXwgbXVzdCBvdXRsaXZlIHRoZSBGdXp6ZWREYXRhUHJvdmlkZXIuCiAgRnV6emVkRGF0YVByb3ZpZGVyKGNvbnN0IHVpbnQ4X3QgKmRhdGEsIHNpemVfdCBzaXplKQogICAgICA6IGRhdGFfcHRyXyhkYXRhKSwgcmVtYWluaW5nX2J5dGVzXyhzaXplKSB7fQogIH5GdXp6ZWREYXRhUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CgogIC8vIFNlZSB0aGUgaW1wbGVtZW50YXRpb24gYmVsb3cgKGFmdGVyIHRoZSBjbGFzcyBkZWZpbml0aW9uKSBmb3IgbW9yZSB2ZXJib3NlCiAgLy8gY29tbWVudHMgZm9yIGVhY2ggb2YgdGhlIG1ldGhvZHMuCgogIC8vIE1ldGhvZHMgcmV0dXJuaW5nIHN0ZDo6dmVjdG9yIG9mIGJ5dGVzLiBUaGVzZSBhcmUgdGhlIG1vc3QgcG9wdWxhciBjaG9pY2UKICAvLyB3aGVuIHNwbGl0dGluZyBmdXp6aW5nIGlucHV0IGludG8gcGllY2VzLCBhcyBldmVyeSBwaWVjZSBpcyBwdXQgaW50byBhCiAgLy8gc2VwYXJhdGUgYnVmZmVyIChpLmUuIEFTYW4gd291bGQgY2F0Y2ggYW55IHVuZGVyLS9vdmVyZmxvdykgYW5kIHRoZSBtZW1vcnkKICAvLyB3aWxsIGJlIHJlbGVhc2VkIGF1dG9tYXRpY2FsbHkuCiAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0ZDo6dmVjdG9yPFQ+IENvbnN1bWVCeXRlcyhzaXplX3QgbnVtX2J5dGVzKTsKICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICBzdGQ6OnZlY3RvcjxUPiBDb25zdW1lQnl0ZXNXaXRoVGVybWluYXRvcihzaXplX3QgbnVtX2J5dGVzLCBUIHRlcm1pbmF0b3IgPSAwKTsKICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RkOjp2ZWN0b3I8VD4gQ29uc3VtZVJlbWFpbmluZ0J5dGVzKCk7CgogIC8vIE1ldGhvZHMgcmV0dXJuaW5nIHN0cmluZ3MuIFVzZSBvbmx5IHdoZW4geW91IG5lZWQgYSBzdGQ6OnN0cmluZyBvciBhIG51bGwKICAvLyB0ZXJtaW5hdGVkIEMtc3RyaW5nLiBPdGhlcndpc2UsIHByZWZlciB0aGUgbWV0aG9kcyByZXR1cm5pbmcgc3RkOjp2ZWN0b3IuCiAgc3RkOjpzdHJpbmcgQ29uc3VtZUJ5dGVzQXNTdHJpbmcoc2l6ZV90IG51bV9ieXRlcyk7CiAgc3RkOjpzdHJpbmcgQ29uc3VtZVJhbmRvbUxlbmd0aFN0cmluZyhzaXplX3QgbWF4X2xlbmd0aCk7CiAgc3RkOjpzdHJpbmcgQ29uc3VtZVJhbmRvbUxlbmd0aFN0cmluZygpOwogIHN0ZDo6c3RyaW5nIENvbnN1bWVSZW1haW5pbmdCeXRlc0FzU3RyaW5nKCk7CgogIC8vIE1ldGhvZHMgcmV0dXJuaW5nIGludGVnZXIgdmFsdWVzLgogIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBUIENvbnN1bWVJbnRlZ3JhbCgpOwogIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBUIENvbnN1bWVJbnRlZ3JhbEluUmFuZ2UoVCBtaW4sIFQgbWF4KTsKCiAgLy8gTWV0aG9kcyByZXR1cm5pbmcgZmxvYXRpbmcgcG9pbnQgdmFsdWVzLgogIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBUIENvbnN1bWVGbG9hdGluZ1BvaW50KCk7CiAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IFQgQ29uc3VtZUZsb2F0aW5nUG9pbnRJblJhbmdlKFQgbWluLCBUIG1heCk7CgogIC8vIDAgPD0gcmV0dXJuIHZhbHVlIDw9IDEuCiAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IFQgQ29uc3VtZVByb2JhYmlsaXR5KCk7CgogIGJvb2wgQ29uc3VtZUJvb2woKTsKCiAgLy8gUmV0dXJucyBhIHZhbHVlIGNob3NlbiBmcm9tIHRoZSBnaXZlbiBlbnVtLgogIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBUIENvbnN1bWVFbnVtKCk7CgogIC8vIFJldHVybnMgYSB2YWx1ZSBmcm9tIHRoZSBnaXZlbiBhcnJheS4KICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IHNpemU+IFQgUGlja1ZhbHVlSW5BcnJheShjb25zdCBUICgmYXJyYXkpW3NpemVdKTsKICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IHNpemU+CiAgVCBQaWNrVmFsdWVJbkFycmF5KGNvbnN0IHN0ZDo6YXJyYXk8VCwgc2l6ZT4gJmFycmF5KTsKICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gVCBQaWNrVmFsdWVJbkFycmF5KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxjb25zdCBUPiBsaXN0KTsKCiAgLy8gV3JpdGVzIGRhdGEgdG8gdGhlIGdpdmVuIGRlc3RpbmF0aW9uIGFuZCByZXR1cm5zIG51bWJlciBvZiBieXRlcyB3cml0dGVuLgogIHNpemVfdCBDb25zdW1lRGF0YSh2b2lkICpkZXN0aW5hdGlvbiwgc2l6ZV90IG51bV9ieXRlcyk7CgogIC8vIFJlcG9ydHMgdGhlIHJlbWFpbmluZyBieXRlcyBhdmFpbGFibGUgZm9yIGZ1enplZCBpbnB1dC4KICBzaXplX3QgcmVtYWluaW5nX2J5dGVzKCkgeyByZXR1cm4gcmVtYWluaW5nX2J5dGVzXzsgfQoKIHByaXZhdGU6CiAgRnV6emVkRGF0YVByb3ZpZGVyKGNvbnN0IEZ1enplZERhdGFQcm92aWRlciAmKSA9IGRlbGV0ZTsKICBGdXp6ZWREYXRhUHJvdmlkZXIgJm9wZXJhdG9yPShjb25zdCBGdXp6ZWREYXRhUHJvdmlkZXIgJikgPSBkZWxldGU7CgogIHZvaWQgQ29weUFuZEFkdmFuY2Uodm9pZCAqZGVzdGluYXRpb24sIHNpemVfdCBudW1fYnl0ZXMpOwoKICB2b2lkIEFkdmFuY2Uoc2l6ZV90IG51bV9ieXRlcyk7CgogIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogIHN0ZDo6dmVjdG9yPFQ+IENvbnN1bWVCeXRlcyhzaXplX3Qgc2l6ZSwgc2l6ZV90IG51bV9ieXRlcyk7CgogIHRlbXBsYXRlIDx0eXBlbmFtZSBUUywgdHlwZW5hbWUgVFU+IFRTIENvbnZlcnRVbnNpZ25lZFRvU2lnbmVkKFRVIHZhbHVlKTsKCiAgY29uc3QgdWludDhfdCAqZGF0YV9wdHJfOwogIHNpemVfdCByZW1haW5pbmdfYnl0ZXNfOwp9OwoKLy8gUmV0dXJucyBhIHN0ZDo6dmVjdG9yIGNvbnRhaW5pbmcgfG51bV9ieXRlc3wgb2YgaW5wdXQgZGF0YS4gSWYgZmV3ZXIgdGhhbgovLyB8bnVtX2J5dGVzfCBvZiBkYXRhIHJlbWFpbiwgcmV0dXJucyBhIHNob3J0ZXIgc3RkOjp2ZWN0b3IgY29udGFpbmluZyBhbGwKLy8gb2YgdGhlIGRhdGEgdGhhdCdzIGxlZnQuIENhbiBiZSB1c2VkIHdpdGggYW55IGJ5dGUgc2l6ZWQgdHlwZSwgc3VjaCBhcwovLyBjaGFyLCB1bnNpZ25lZCBjaGFyLCB1aW50OF90LCBldGMuCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgpzdGQ6OnZlY3RvcjxUPiBGdXp6ZWREYXRhUHJvdmlkZXI6OkNvbnN1bWVCeXRlcyhzaXplX3QgbnVtX2J5dGVzKSB7CiAgbnVtX2J5dGVzID0gc3RkOjptaW4obnVtX2J5dGVzLCByZW1haW5pbmdfYnl0ZXNfKTsKICByZXR1cm4gQ29uc3VtZUJ5dGVzPFQ+KG51bV9ieXRlcywgbnVtX2J5dGVzKTsKfQoKLy8gU2ltaWxhciB0byB8Q29uc3VtZUJ5dGVzfCwgYnV0IGFsc28gYXBwZW5kcyB0aGUgdGVybWluYXRvciB2YWx1ZSBhdCB0aGUgZW5kCi8vIG9mIHRoZSByZXN1bHRpbmcgdmVjdG9yLiBVc2VmdWwsIHdoZW4gYSBtdXRhYmxlIG51bGwtdGVybWluYXRlZCBDLXN0cmluZyBpcwovLyBuZWVkZWQsIGZvciBleGFtcGxlLiBCdXQgdGhhdCBpcyBhIHJhcmUgY2FzZS4gQmV0dGVyIGF2b2lkIGl0LCBpZiBwb3NzaWJsZSwKLy8gYW5kIHByZWZlciB1c2luZyB8Q29uc3VtZUJ5dGVzfCBvciB8Q29uc3VtZUJ5dGVzQXNTdHJpbmd8IG1ldGhvZHMuCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgpzdGQ6OnZlY3RvcjxUPiBGdXp6ZWREYXRhUHJvdmlkZXI6OkNvbnN1bWVCeXRlc1dpdGhUZXJtaW5hdG9yKHNpemVfdCBudW1fYnl0ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVCB0ZXJtaW5hdG9yKSB7CiAgbnVtX2J5dGVzID0gc3RkOjptaW4obnVtX2J5dGVzLCByZW1haW5pbmdfYnl0ZXNfKTsKICBzdGQ6OnZlY3RvcjxUPiByZXN1bHQgPSBDb25zdW1lQnl0ZXM8VD4obnVtX2J5dGVzICsgMSwgbnVtX2J5dGVzKTsKICByZXN1bHQuYmFjaygpID0gdGVybWluYXRvcjsKICByZXR1cm4gcmVzdWx0Owp9CgovLyBSZXR1cm5zIGEgc3RkOjp2ZWN0b3IgY29udGFpbmluZyBhbGwgcmVtYWluaW5nIGJ5dGVzIG9mIHRoZSBpbnB1dCBkYXRhLgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4Kc3RkOjp2ZWN0b3I8VD4gRnV6emVkRGF0YVByb3ZpZGVyOjpDb25zdW1lUmVtYWluaW5nQnl0ZXMoKSB7CiAgcmV0dXJuIENvbnN1bWVCeXRlczxUPihyZW1haW5pbmdfYnl0ZXNfKTsKfQoKLy8gUmV0dXJucyBhIHN0ZDo6c3RyaW5nIGNvbnRhaW5pbmcgfG51bV9ieXRlc3wgb2YgaW5wdXQgZGF0YS4gVXNpbmcgdGhpcyBhbmQKLy8gfC5jX3N0cigpfCBvbiB0aGUgcmVzdWx0aW5nIHN0cmluZyBpcyB0aGUgYmVzdCB3YXkgdG8gZ2V0IGFuIGltbXV0YWJsZQovLyBudWxsLXRlcm1pbmF0ZWQgQyBzdHJpbmcuIElmIGZld2VyIHRoYW4gfG51bV9ieXRlc3wgb2YgZGF0YSByZW1haW4sIHJldHVybnMKLy8gYSBzaG9ydGVyIHN0ZDo6c3RyaW5nIGNvbnRhaW5pbmcgYWxsIG9mIHRoZSBkYXRhIHRoYXQncyBsZWZ0LgppbmxpbmUgc3RkOjpzdHJpbmcgRnV6emVkRGF0YVByb3ZpZGVyOjpDb25zdW1lQnl0ZXNBc1N0cmluZyhzaXplX3QgbnVtX2J5dGVzKSB7CiAgc3RhdGljX2Fzc2VydChzaXplb2Yoc3RkOjpzdHJpbmc6OnZhbHVlX3R5cGUpID09IHNpemVvZih1aW50OF90KSwKICAgICAgICAgICAgICAgICJDb25zdW1lQnl0ZXNBc1N0cmluZyBjYW5ub3QgY29udmVydCB0aGUgZGF0YSB0byBhIHN0cmluZy4iKTsKCiAgbnVtX2J5dGVzID0gc3RkOjptaW4obnVtX2J5dGVzLCByZW1haW5pbmdfYnl0ZXNfKTsKICBzdGQ6OnN0cmluZyByZXN1bHQoCiAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc3RkOjpzdHJpbmc6OnZhbHVlX3R5cGUgKj4oZGF0YV9wdHJfKSwgbnVtX2J5dGVzKTsKICBBZHZhbmNlKG51bV9ieXRlcyk7CiAgcmV0dXJuIHJlc3VsdDsKfQoKLy8gUmV0dXJucyBhIHN0ZDo6c3RyaW5nIG9mIGxlbmd0aCBmcm9tIDAgdG8gfG1heF9sZW5ndGh8LiBXaGVuIGl0IHJ1bnMgb3V0IG9mCi8vIGlucHV0IGRhdGEsIHJldHVybnMgd2hhdCByZW1haW5zIG9mIHRoZSBpbnB1dC4gRGVzaWduZWQgdG8gYmUgbW9yZSBzdGFibGUKLy8gd2l0aCByZXNwZWN0IHRvIGEgZnV6emVyIGluc2VydGluZyBjaGFyYWN0ZXJzIHRoYW4ganVzdCBwaWNraW5nIGEgcmFuZG9tCi8vIGxlbmd0aCBhbmQgdGhlbiBjb25zdW1pbmcgdGhhdCBtYW55IGJ5dGVzIHdpdGggfENvbnN1bWVCeXRlc3wuCmlubGluZSBzdGQ6OnN0cmluZwpGdXp6ZWREYXRhUHJvdmlkZXI6OkNvbnN1bWVSYW5kb21MZW5ndGhTdHJpbmcoc2l6ZV90IG1heF9sZW5ndGgpIHsKICAvLyBSZWFkcyBieXRlcyBmcm9tIHRoZSBzdGFydCBvZiB8ZGF0YV9wdHJffC4gTWFwcyAiXFwiIHRvICJcIiwgYW5kIG1hcHMgIlwiCiAgLy8gZm9sbG93ZWQgYnkgYW55dGhpbmcgZWxzZSB0byB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuIEFzIGEgcmVzdWx0IG9mIHRoaXMKICAvLyBsb2dpYywgYSBmdXp6ZXIgY2FuIGluc2VydCBjaGFyYWN0ZXJzIGludG8gdGhlIHN0cmluZywgYW5kIHRoZSBzdHJpbmcKICAvLyB3aWxsIGJlIGxlbmd0aGVuZWQgdG8gaW5jbHVkZSB0aG9zZSBuZXcgY2hhcmFjdGVycywgcmVzdWx0aW5nIGluIGEgbW9yZQogIC8vIHN0YWJsZSBmdXp6ZXIgdGhhbiBwaWNraW5nIHRoZSBsZW5ndGggb2YgYSBzdHJpbmcgaW5kZXBlbmRlbnRseSBmcm9tCiAgLy8gcGlja2luZyBpdHMgY29udGVudHMuCiAgc3RkOjpzdHJpbmcgcmVzdWx0OwoKICAvLyBSZXNlcnZlIHRoZSBhbnRpY2lwYXRlZCBjYXBhdGljaXR5IHRvIHByZXZlbnQgc2V2ZXJhbCByZWFsbG9jYXRpb25zLgogIHJlc3VsdC5yZXNlcnZlKHN0ZDo6bWluKG1heF9sZW5ndGgsIHJlbWFpbmluZ19ieXRlc18pKTsKICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heF9sZW5ndGggJiYgcmVtYWluaW5nX2J5dGVzXyAhPSAwOyArK2kpIHsKICAgIGNoYXIgbmV4dCA9IENvbnZlcnRVbnNpZ25lZFRvU2lnbmVkPGNoYXI+KGRhdGFfcHRyX1swXSk7CiAgICBBZHZhbmNlKDEpOwogICAgaWYgKG5leHQgPT0gJ1xcJyAmJiByZW1haW5pbmdfYnl0ZXNfICE9IDApIHsKICAgICAgbmV4dCA9IENvbnZlcnRVbnNpZ25lZFRvU2lnbmVkPGNoYXI+KGRhdGFfcHRyX1swXSk7CiAgICAgIEFkdmFuY2UoMSk7CiAgICAgIGlmIChuZXh0ICE9ICdcXCcpCiAgICAgICAgYnJlYWs7CiAgICB9CiAgICByZXN1bHQgKz0gbmV4dDsKICB9CgogIHJlc3VsdC5zaHJpbmtfdG9fZml0KCk7CiAgcmV0dXJuIHJlc3VsdDsKfQoKLy8gUmV0dXJucyBhIHN0ZDo6c3RyaW5nIG9mIGxlbmd0aCBmcm9tIDAgdG8gfHJlbWFpbmluZ19ieXRlc198LgppbmxpbmUgc3RkOjpzdHJpbmcgRnV6emVkRGF0YVByb3ZpZGVyOjpDb25zdW1lUmFuZG9tTGVuZ3RoU3RyaW5nKCkgewogIHJldHVybiBDb25zdW1lUmFuZG9tTGVuZ3RoU3RyaW5nKHJlbWFpbmluZ19ieXRlc18pOwp9CgovLyBSZXR1cm5zIGEgc3RkOjpzdHJpbmcgY29udGFpbmluZyBhbGwgcmVtYWluaW5nIGJ5dGVzIG9mIHRoZSBpbnB1dCBkYXRhLgovLyBQcmVmZXIgdXNpbmcgfENvbnN1bWVSZW1haW5pbmdCeXRlc3wgdW5sZXNzIHlvdSBhY3R1YWxseSBuZWVkIGEgc3RkOjpzdHJpbmcKLy8gb2JqZWN0LgppbmxpbmUgc3RkOjpzdHJpbmcgRnV6emVkRGF0YVByb3ZpZGVyOjpDb25zdW1lUmVtYWluaW5nQnl0ZXNBc1N0cmluZygpIHsKICByZXR1cm4gQ29uc3VtZUJ5dGVzQXNTdHJpbmcocmVtYWluaW5nX2J5dGVzXyk7Cn0KCi8vIFJldHVybnMgYSBudW1iZXIgaW4gdGhlIHJhbmdlIFtUeXBlJ3MgbWluLCBUeXBlJ3MgbWF4XS4gVGhlIHZhbHVlIG1pZ2h0Ci8vIG5vdCBiZSB1bmlmb3JtbHkgZGlzdHJpYnV0ZWQgaW4gdGhlIGdpdmVuIHJhbmdlLiBJZiB0aGVyZSdzIG5vIGlucHV0IGRhdGEKLy8gbGVmdCwgYWx3YXlzIHJldHVybnMgfG1pbnwuCnRlbXBsYXRlIDx0eXBlbmFtZSBUPiBUIEZ1enplZERhdGFQcm92aWRlcjo6Q29uc3VtZUludGVncmFsKCkgewogIHJldHVybiBDb25zdW1lSW50ZWdyYWxJblJhbmdlKHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1pbigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1heCgpKTsKfQoKLy8gUmV0dXJucyBhIG51bWJlciBpbiB0aGUgcmFuZ2UgW21pbiwgbWF4XSBieSBjb25zdW1pbmcgYnl0ZXMgZnJvbSB0aGUKLy8gaW5wdXQgZGF0YS4gVGhlIHZhbHVlIG1pZ2h0IG5vdCBiZSB1bmlmb3JtbHkgZGlzdHJpYnV0ZWQgaW4gdGhlIGdpdmVuCi8vIHJhbmdlLiBJZiB0aGVyZSdzIG5vIGlucHV0IGRhdGEgbGVmdCwgYWx3YXlzIHJldHVybnMgfG1pbnwuIHxtaW58IG11c3QKLy8gYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHxtYXh8Lgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KVCBGdXp6ZWREYXRhUHJvdmlkZXI6OkNvbnN1bWVJbnRlZ3JhbEluUmFuZ2UoVCBtaW4sIFQgbWF4KSB7CiAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZSwgIkFuIGludGVncmFsIHR5cGUgaXMgcmVxdWlyZWQuIik7CiAgc3RhdGljX2Fzc2VydChzaXplb2YoVCkgPD0gc2l6ZW9mKHVpbnQ2NF90KSwgIlVuc3VwcG9ydGVkIGludGVncmFsIHR5cGUuIik7CgogIGlmIChtaW4gPiBtYXgpCiAgICBhYm9ydCgpOwoKICAvLyBVc2UgdGhlIGJpZ2dlc3QgdHlwZSBwb3NzaWJsZSB0byBob2xkIHRoZSByYW5nZSBhbmQgdGhlIHJlc3VsdC4KICB1aW50NjRfdCByYW5nZSA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihtYXgpIC0gbWluOwogIHVpbnQ2NF90IHJlc3VsdCA9IDA7CiAgc2l6ZV90IG9mZnNldCA9IDA7CgogIHdoaWxlIChvZmZzZXQgPCBzaXplb2YoVCkgKiBDSEFSX0JJVCAmJiAocmFuZ2UgPj4gb2Zmc2V0KSA+IDAgJiYKICAgICAgICAgcmVtYWluaW5nX2J5dGVzXyAhPSAwKSB7CiAgICAvLyBQdWxsIGJ5dGVzIG9mZiB0aGUgZW5kIG9mIHRoZSBzZWVkIGRhdGEuIEV4cGVyaW1lbnRhbGx5LCB0aGlzIHNlZW1zIHRvCiAgICAvLyBhbGxvdyB0aGUgZnV6emVyIHRvIG1vcmUgZWFzaWx5IGV4cGxvcmUgdGhlIGlucHV0IHNwYWNlLiBUaGlzIG1ha2VzCiAgICAvLyBzZW5zZSwgc2luY2UgaXQgd29ya3MgYnkgbW9kaWZ5aW5nIGlucHV0cyB0aGF0IGNhdXNlZCBuZXcgY29kZSB0byBydW4sCiAgICAvLyBhbmQgdGhpcyBkYXRhIGlzIG9mdGVuIHVzZWQgdG8gZW5jb2RlIGxlbmd0aCBvZiBkYXRhIHJlYWQgYnkKICAgIC8vIHxDb25zdW1lQnl0ZXN8LiBTZXBhcmF0aW5nIG91dCByZWFkIGxlbmd0aHMgbWFrZXMgaXQgZWFzaWVyIG1vZGlmeSB0aGUKICAgIC8vIGNvbnRlbnRzIG9mIHRoZSBkYXRhIHRoYXQgaXMgYWN0dWFsbHkgcmVhZC4KICAgIC0tcmVtYWluaW5nX2J5dGVzXzsKICAgIHJlc3VsdCA9IChyZXN1bHQgPDwgQ0hBUl9CSVQpIHwgZGF0YV9wdHJfW3JlbWFpbmluZ19ieXRlc19dOwogICAgb2Zmc2V0ICs9IENIQVJfQklUOwogIH0KCiAgLy8gQXZvaWQgZGl2aXNpb24gYnkgMCwgaW4gY2FzZSB8cmFuZ2UgKyAxfCByZXN1bHRzIGluIG92ZXJmbG93LgogIGlmIChyYW5nZSAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPGRlY2x0eXBlKHJhbmdlKT46Om1heCgpKQogICAgcmVzdWx0ID0gcmVzdWx0ICUgKHJhbmdlICsgMSk7CgogIHJldHVybiBzdGF0aWNfY2FzdDxUPihtaW4gKyByZXN1bHQpOwp9CgovLyBSZXR1cm5zIGEgZmxvYXRpbmcgcG9pbnQgdmFsdWUgaW4gdGhlIHJhbmdlIFtUeXBlJ3MgbG93ZXN0LCBUeXBlJ3MgbWF4XSBieQovLyBjb25zdW1pbmcgYnl0ZXMgZnJvbSB0aGUgaW5wdXQgZGF0YS4gSWYgdGhlcmUncyBubyBpbnB1dCBkYXRhIGxlZnQsIGFsd2F5cwovLyByZXR1cm5zIGFwcHJveGltYXRlbHkgMC4KdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IFQgRnV6emVkRGF0YVByb3ZpZGVyOjpDb25zdW1lRmxvYXRpbmdQb2ludCgpIHsKICByZXR1cm4gQ29uc3VtZUZsb2F0aW5nUG9pbnRJblJhbmdlPFQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Omxvd2VzdCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWF4KCkpOwp9CgovLyBSZXR1cm5zIGEgZmxvYXRpbmcgcG9pbnQgdmFsdWUgaW4gdGhlIGdpdmVuIHJhbmdlIGJ5IGNvbnN1bWluZyBieXRlcyBmcm9tCi8vIHRoZSBpbnB1dCBkYXRhLiBJZiB0aGVyZSdzIG5vIGlucHV0IGRhdGEgbGVmdCwgcmV0dXJucyB8bWlufC4gTm90ZSB0aGF0Ci8vIHxtaW58IG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHxtYXh8Lgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KVCBGdXp6ZWREYXRhUHJvdmlkZXI6OkNvbnN1bWVGbG9hdGluZ1BvaW50SW5SYW5nZShUIG1pbiwgVCBtYXgpIHsKICBpZiAobWluID4gbWF4KQogICAgYWJvcnQoKTsKCiAgVCByYW5nZSA9IC4wOwogIFQgcmVzdWx0ID0gbWluOwogIGNvbnN0ZXhwciBUIHplcm8oLjApOwogIGlmIChtYXggPiB6ZXJvICYmIG1pbiA8IHplcm8gJiYgbWF4ID4gbWluICsgc3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWF4KCkpIHsKICAgIC8vIFRoZSBkaWZmIHxtYXggLSBtaW58IHdvdWxkIG92ZXJmbG93IHRoZSBnaXZlbiBmbG9hdGluZyBwb2ludCB0eXBlLiBVc2UKICAgIC8vIHRoZSBoYWxmIG9mIHRoZSBkaWZmIGFzIHRoZSByYW5nZSBhbmQgY29uc3VtZSBhIGJvb2wgdG8gZGVjaWRlIHdoZXRoZXIKICAgIC8vIHRoZSByZXN1bHQgaXMgaW4gdGhlIGZpcnN0IG9mIHRoZSBzZWNvbmQgcGFydCBvZiB0aGUgZGlmZi4KICAgIHJhbmdlID0gKG1heCAvIDIuMCkgLSAobWluIC8gMi4wKTsKICAgIGlmIChDb25zdW1lQm9vbCgpKSB7CiAgICAgIHJlc3VsdCArPSByYW5nZTsKICAgIH0KICB9IGVsc2UgewogICAgcmFuZ2UgPSBtYXggLSBtaW47CiAgfQoKICByZXR1cm4gcmVzdWx0ICsgcmFuZ2UgKiBDb25zdW1lUHJvYmFiaWxpdHk8VD4oKTsKfQoKLy8gUmV0dXJucyBhIGZsb2F0aW5nIHBvaW50IG51bWJlciBpbiB0aGUgcmFuZ2UgWzAuMCwgMS4wXS4gSWYgdGhlcmUncyBubwovLyBpbnB1dCBkYXRhIGxlZnQsIGFsd2F5cyByZXR1cm5zIDAuCnRlbXBsYXRlIDx0eXBlbmFtZSBUPiBUIEZ1enplZERhdGFQcm92aWRlcjo6Q29uc3VtZVByb2JhYmlsaXR5KCkgewogIHN0YXRpY19hc3NlcnQoc3RkOjppc19mbG9hdGluZ19wb2ludDxUPjo6dmFsdWUsCiAgICAgICAgICAgICAgICAiQSBmbG9hdGluZyBwb2ludCB0eXBlIGlzIHJlcXVpcmVkLiIpOwoKICAvLyBVc2UgZGlmZmVyZW50IGludGVncmFsIHR5cGVzIGZvciBkaWZmZXJlbnQgZmxvYXRpbmcgcG9pbnQgdHlwZXMgaW4gb3JkZXIKICAvLyB0byBwcm92aWRlIGJldHRlciBkZW5zaXR5IG9mIHRoZSByZXN1bHRpbmcgdmFsdWVzLgogIHVzaW5nIEludGVncmFsVHlwZSA9CiAgICAgIHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8KHNpemVvZihUKSA8PSBzaXplb2YodWludDMyX3QpKSwgdWludDMyX3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3Q+Ojp0eXBlOwoKICBUIHJlc3VsdCA9IHN0YXRpY19jYXN0PFQ+KENvbnN1bWVJbnRlZ3JhbDxJbnRlZ3JhbFR5cGU+KCkpOwogIHJlc3VsdCAvPSBzdGF0aWNfY2FzdDxUPihzdGQ6Om51bWVyaWNfbGltaXRzPEludGVncmFsVHlwZT46Om1heCgpKTsKICByZXR1cm4gcmVzdWx0Owp9CgovLyBSZWFkcyBvbmUgYnl0ZSBhbmQgcmV0dXJucyBhIGJvb2wsIG9yIGZhbHNlIHdoZW4gbm8gZGF0YSByZW1haW5zLgppbmxpbmUgYm9vbCBGdXp6ZWREYXRhUHJvdmlkZXI6OkNvbnN1bWVCb29sKCkgewogIHJldHVybiAxICYgQ29uc3VtZUludGVncmFsPHVpbnQ4X3Q+KCk7Cn0KCi8vIFJldHVybnMgYW4gZW51bSB2YWx1ZS4gVGhlIGVudW0gbXVzdCBzdGFydCBhdCAwIGFuZCBiZSBjb250aWd1b3VzLiBJdCBtdXN0Ci8vIGFsc28gY29udGFpbiB8a01heFZhbHVlfCBhbGlhc2VkIHRvIGl0cyBsYXJnZXN0IChpbmNsdXNpdmUpIHZhbHVlLiBTdWNoIGFzOgovLyBlbnVtIGNsYXNzIEZvbyB7IFNvbWVWYWx1ZSwgT3RoZXJWYWx1ZSwga01heFZhbHVlID0gT3RoZXJWYWx1ZSB9Owp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gVCBGdXp6ZWREYXRhUHJvdmlkZXI6OkNvbnN1bWVFbnVtKCkgewogIHN0YXRpY19hc3NlcnQoc3RkOjppc19lbnVtPFQ+Ojp2YWx1ZSwgInxUfCBtdXN0IGJlIGFuIGVudW0gdHlwZS4iKTsKICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4oCiAgICAgIENvbnN1bWVJbnRlZ3JhbEluUmFuZ2U8dWludDMyX3Q+KDAsIHN0YXRpY19jYXN0PHVpbnQzMl90PihUOjprTWF4VmFsdWUpKSk7Cn0KCi8vIFJldHVybnMgYSBjb3B5IG9mIHRoZSB2YWx1ZSBzZWxlY3RlZCBmcm9tIHRoZSBnaXZlbiBmaXhlZC1zaXplIHxhcnJheXwuCnRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3Qgc2l6ZT4KVCBGdXp6ZWREYXRhUHJvdmlkZXI6OlBpY2tWYWx1ZUluQXJyYXkoY29uc3QgVCAoJmFycmF5KVtzaXplXSkgewogIHN0YXRpY19hc3NlcnQoc2l6ZSA+IDAsICJUaGUgYXJyYXkgbXVzdCBiZSBub24gZW1wdHkuIik7CiAgcmV0dXJuIGFycmF5W0NvbnN1bWVJbnRlZ3JhbEluUmFuZ2U8c2l6ZV90PigwLCBzaXplIC0gMSldOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IHNpemU+ClQgRnV6emVkRGF0YVByb3ZpZGVyOjpQaWNrVmFsdWVJbkFycmF5KGNvbnN0IHN0ZDo6YXJyYXk8VCwgc2l6ZT4gJmFycmF5KSB7CiAgc3RhdGljX2Fzc2VydChzaXplID4gMCwgIlRoZSBhcnJheSBtdXN0IGJlIG5vbiBlbXB0eS4iKTsKICByZXR1cm4gYXJyYXlbQ29uc3VtZUludGVncmFsSW5SYW5nZTxzaXplX3Q+KDAsIHNpemUgLSAxKV07Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgpUIEZ1enplZERhdGFQcm92aWRlcjo6UGlja1ZhbHVlSW5BcnJheShzdGQ6OmluaXRpYWxpemVyX2xpc3Q8Y29uc3QgVD4gbGlzdCkgewogIC8vIFRPRE8oRG9yMXMpOiBzd2l0Y2ggdG8gc3RhdGljX2Fzc2VydCBvbmNlIEMrKzE0IGlzIGFsbG93ZWQuCiAgaWYgKCFsaXN0LnNpemUoKSkKICAgIGFib3J0KCk7CgogIHJldHVybiAqKGxpc3QuYmVnaW4oKSArIENvbnN1bWVJbnRlZ3JhbEluUmFuZ2U8c2l6ZV90PigwLCBsaXN0LnNpemUoKSAtIDEpKTsKfQoKLy8gV3JpdGVzIHxudW1fYnl0ZXN8IG9mIGlucHV0IGRhdGEgdG8gdGhlIGdpdmVuIGRlc3RpbmF0aW9uIHBvaW50ZXIuIElmIHRoZXJlCi8vIGlzIG5vdCBlbm91Z2ggZGF0YSBsZWZ0LCB3cml0ZXMgYWxsIHJlbWFpbmluZyBieXRlcy4gUmV0dXJuIHZhbHVlIGlzIHRoZQovLyBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbi4KLy8gSW4gZ2VuZXJhbCwgaXQncyBiZXR0ZXIgdG8gYXZvaWQgdXNpbmcgdGhpcyBmdW5jdGlvbiwgYnV0IGl0IG1heSBiZSB1c2VmdWwKLy8gaW4gY2FzZXMgd2hlbiBpdCdzIG5lY2Vzc2FyeSB0byBmaWxsIGEgY2VydGFpbiBidWZmZXIgb3Igb2JqZWN0IHdpdGgKLy8gZnV6emluZyBkYXRhLgppbmxpbmUgc2l6ZV90IEZ1enplZERhdGFQcm92aWRlcjo6Q29uc3VtZURhdGEodm9pZCAqZGVzdGluYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtX2J5dGVzKSB7CiAgbnVtX2J5dGVzID0gc3RkOjptaW4obnVtX2J5dGVzLCByZW1haW5pbmdfYnl0ZXNfKTsKICBDb3B5QW5kQWR2YW5jZShkZXN0aW5hdGlvbiwgbnVtX2J5dGVzKTsKICByZXR1cm4gbnVtX2J5dGVzOwp9CgovLyBQcml2YXRlIG1ldGhvZHMuCmlubGluZSB2b2lkIEZ1enplZERhdGFQcm92aWRlcjo6Q29weUFuZEFkdmFuY2Uodm9pZCAqZGVzdGluYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG51bV9ieXRlcykgewogIHN0ZDo6bWVtY3B5KGRlc3RpbmF0aW9uLCBkYXRhX3B0cl8sIG51bV9ieXRlcyk7CiAgQWR2YW5jZShudW1fYnl0ZXMpOwp9CgppbmxpbmUgdm9pZCBGdXp6ZWREYXRhUHJvdmlkZXI6OkFkdmFuY2Uoc2l6ZV90IG51bV9ieXRlcykgewogIGlmIChudW1fYnl0ZXMgPiByZW1haW5pbmdfYnl0ZXNfKQogICAgYWJvcnQoKTsKCiAgZGF0YV9wdHJfICs9IG51bV9ieXRlczsKICByZW1haW5pbmdfYnl0ZXNfIC09IG51bV9ieXRlczsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CnN0ZDo6dmVjdG9yPFQ+IEZ1enplZERhdGFQcm92aWRlcjo6Q29uc3VtZUJ5dGVzKHNpemVfdCBzaXplLCBzaXplX3QgbnVtX2J5dGVzKSB7CiAgc3RhdGljX2Fzc2VydChzaXplb2YoVCkgPT0gc2l6ZW9mKHVpbnQ4X3QpLCAiSW5jb21wYXRpYmxlIGRhdGEgdHlwZS4iKTsKCiAgLy8gVGhlIHBvaW50IG9mIHVzaW5nIHRoZSBzaXplLWJhc2VkIGNvbnN0cnVjdG9yIGJlbG93IGlzIHRvIGluY3JlYXNlIHRoZQogIC8vIG9kZHMgb2YgaGF2aW5nIGEgdmVjdG9yIG9iamVjdCB3aXRoIGNhcGFjaXR5IGJlaW5nIGVxdWFsIHRvIHRoZSBsZW5ndGguCiAgLy8gVGhhdCBwYXJ0IGlzIGFsd2F5cyBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYywgYnV0IGF0IGxlYXN0IGJvdGggbGliYysrIGFuZAogIC8vIGxpYnN0ZGMrKyBhbGxvY2F0ZSB0aGUgcmVxdWVzdGVkIG51bWJlciBvZiBieXRlcyBpbiB0aGF0IGNvbnN0cnVjdG9yLAogIC8vIHdoaWNoIHNlZW1zIHRvIGJlIGEgbmF0dXJhbCBjaG9pY2UgZm9yIG90aGVyIGltcGxlbWVudGF0aW9ucyBhcyB3ZWxsLgogIC8vIFRvIGluY3JlYXNlIHRoZSBvZGRzIGV2ZW4gbW9yZSwgd2UgYWxzbyBjYWxsIHxzaHJpbmtfdG9fZml0fCBiZWxvdy4KICBzdGQ6OnZlY3RvcjxUPiByZXN1bHQoc2l6ZSk7CiAgaWYgKHNpemUgPT0gMCkgewogICAgaWYgKG51bV9ieXRlcyAhPSAwKQogICAgICBhYm9ydCgpOwogICAgcmV0dXJuIHJlc3VsdDsKICB9CgogIENvcHlBbmRBZHZhbmNlKHJlc3VsdC5kYXRhKCksIG51bV9ieXRlcyk7CgogIC8vIEV2ZW4gdGhvdWdoIHxzaHJpbmtfdG9fZml0fCBpcyBhbHNvIGltcGxlbWVudGF0aW9uIHNwZWNpZmljLCB3ZSBleHBlY3QgaXQKICAvLyB0byBwcm92aWRlIGFuIGFkZGl0aW9uYWwgYXNzdXJhbmNlIGluIGNhc2UgdmVjdG9yJ3MgY29uc3RydWN0b3IgYWxsb2NhdGVkCiAgLy8gYSBidWZmZXIgd2hpY2ggaXMgbGFyZ2VyIHRoYW4gdGhlIGFjdHVhbCBhbW91bnQgb2YgZGF0YSB3ZSBwdXQgaW5zaWRlIGl0LgogIHJlc3VsdC5zaHJpbmtfdG9fZml0KCk7CiAgcmV0dXJuIHJlc3VsdDsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFRTLCB0eXBlbmFtZSBUVT4KVFMgRnV6emVkRGF0YVByb3ZpZGVyOjpDb252ZXJ0VW5zaWduZWRUb1NpZ25lZChUVSB2YWx1ZSkgewogIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFRTKSA9PSBzaXplb2YoVFUpLCAiSW5jb21wYXRpYmxlIGRhdGEgdHlwZXMuIik7CiAgc3RhdGljX2Fzc2VydCghc3RkOjpudW1lcmljX2xpbWl0czxUVT46OmlzX3NpZ25lZCwKICAgICAgICAgICAgICAgICJTb3VyY2UgdHlwZSBtdXN0IGJlIHVuc2lnbmVkLiIpOwoKICAvLyBUT0RPKERvcjFzKTogY2hhbmdlIHRvIGBpZiBjb25zdGV4cHJgIG9uY2UgQysrMTcgYmVjb21lcyBtYWluc3RyZWFtLgogIGlmIChzdGQ6Om51bWVyaWNfbGltaXRzPFRTPjo6aXNfbW9kdWxvKQogICAgcmV0dXJuIHN0YXRpY19jYXN0PFRTPih2YWx1ZSk7CgogIC8vIEF2b2lkIHVzaW5nIGltcGxlbWVudGF0aW9uLWRlZmluZWQgdW5zaWduZWQgdG8gc2lnbmVkIGNvbnZlcnNpb25zLgogIC8vIFRvIGxlYXJuIG1vcmUsIHNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xMzE1MDQ0OS4KICBpZiAodmFsdWUgPD0gc3RkOjpudW1lcmljX2xpbWl0czxUUz46Om1heCgpKSB7CiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VFM+KHZhbHVlKTsKICB9IGVsc2UgewogICAgY29uc3RleHByIGF1dG8gVFNfbWluID0gc3RkOjpudW1lcmljX2xpbWl0czxUUz46Om1pbigpOwogICAgcmV0dXJuIFRTX21pbiArIHN0YXRpY19jYXN0PFRTPih2YWx1ZSAtIFRTX21pbik7CiAgfQp9CgojZW5kaWYgLy8gTExWTV9GVVpaRVJfRlVaWkVEX0RBVEFfUFJPVklERVJfSF8KAG9wZW5tcF93cmFwcGVycy9fX2NsYW5nX29wZW5tcF9kZXZpY2VfZnVuY3Rpb25zLmgALyo9PT0tLS0tIHhtbWludHJpbi5oIC0gSW1wbGVtZW50YXRpb24gb2YgU1NFIGludHJpbnNpY3Mgb24gUG93ZXJQQyAtLS0tLS0tLT09PQogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwoKLyogSW1wbGVtZW50ZWQgZnJvbSB0aGUgc3BlY2lmaWNhdGlvbiBpbmNsdWRlZCBpbiB0aGUgSW50ZWwgQysrIENvbXBpbGVyCiAgIFVzZXIgR3VpZGUgYW5kIFJlZmVyZW5jZSwgdmVyc2lvbiA5LjAuICAqLwoKI2lmbmRlZiBOT19XQVJOX1g4Nl9JTlRSSU5TSUNTCi8qIFRoaXMgaGVhZGVyIGZpbGUgaXMgdG8gaGVscCBwb3J0aW5nIGNvZGUgdXNpbmcgSW50ZWwgaW50cmluc2ljcwogICBleHBsaWNpdGx5IGZyb20geDg2XzY0IHRvIHBvd2VycGM2NC9wb3dlcnBjNjRsZS4KCiAgIFNpbmNlIFg4NiBTU0UgaW50cmluc2ljcyBtYWlubHkgaGFuZGxlcyBfX20xMjggdHlwZSwgUG93ZXJQQwogICBWTVgvVlNYIElTQSBpcyBhIGdvb2QgbWF0Y2ggZm9yIHZlY3RvciBmbG9hdCBTSU1EIG9wZXJhdGlvbnMuCiAgIEhvd2V2ZXIgc2NhbGFyIGZsb2F0IG9wZXJhdGlvbnMgaW4gdmVjdG9yIChYTU0pIHJlZ2lzdGVycyByZXF1aXJlCiAgIHRoZSBQT1dFUjggVlNYIElTQSAoMi4wNykgbGV2ZWwuIFRoZXJlIGFyZSBkaWZmZXJlbmNlcyBmb3IgZGF0YQogICBmb3JtYXQgYW5kIHBsYWNlbWVudCBvZiBmbG9hdCBzY2FsYXJzIGluIHRoZSB2ZWN0b3IgcmVnaXN0ZXIsIHdoaWNoCiAgIHJlcXVpcmUgZXh0cmEgc3RlcHMgdG8gbWF0Y2ggU1NFIHNjYWxhciBmbG9hdCBzZW1hbnRpY3Mgb24gUE9XRVIuCgogICBJdCBzaG91bGQgYmUgbm90ZWQgdGhhdCB0aGVyZSdzIG11Y2ggZGlmZmVyZW5jZSBiZXR3ZWVuIFg4Nl82NCdzCiAgIE1YU0NSIGFuZCBQb3dlcklTQSdzIEZQU0NSL1ZTQ1IgcmVnaXN0ZXJzLiBJdCdzIHJlY29tbWVuZGVkIHRvIHVzZQogICBwb3J0YWJsZSA8ZmVudi5oPiBpbnN0ZWFkIG9mIGFjY2VzcyBNWFNDUiBkaXJlY3RseS4KCiAgIE1vc3QgU1NFIHNjYWxhciBmbG9hdCBpbnRyaW5zaWMgb3BlcmF0aW9ucyBjYW4gYmUgcGVyZm9ybWVkIG1vcmUKICAgZWZmaWNpZW50bHkgYXMgQyBsYW5ndWFnZSBmbG9hdCBzY2FsYXIgb3BlcmF0aW9ucyBvciBvcHRpbWl6ZWQgdG8KICAgdXNlIHZlY3RvciBTSU1EIG9wZXJhdGlvbnMuIFdlIHJlY29tbWVuZCB0aGlzIGZvciBuZXcgYXBwbGljYXRpb25zLiAqLwojZXJyb3IgIlBsZWFzZSByZWFkIGNvbW1lbnQgYWJvdmUuIFVzZSAtRE5PX1dBUk5fWDg2X0lOVFJJTlNJQ1MgdG8gZGlzYWJsZSB0aGlzIGVycm9yLiIKI2VuZGlmCgojaWZuZGVmIF9YTU1JTlRSSU5fSF9JTkNMVURFRAojZGVmaW5lIF9YTU1JTlRSSU5fSF9JTkNMVURFRAoKI2lmIGRlZmluZWQoX19wcGM2NF9fKSAmJiAoZGVmaW5lZChfX2xpbnV4X18pIHx8IGRlZmluZWQoX19GcmVlQlNEX18pKQoKLyogRGVmaW5lIGZvdXIgdmFsdWUgcGVybXV0ZSBtYXNrICovCiNkZWZpbmUgX01NX1NIVUZGTEUodyx4LHkseikgKCgodykgPDwgNikgfCAoKHgpIDw8IDQpIHwgKCh5KSA8PCAyKSB8ICh6KSkKCiNpbmNsdWRlIDxhbHRpdmVjLmg+CgovKiBBdm9pZCBjb2xsaXNpb25zIGJldHdlZW4gYWx0aXZlYy5oIGFuZCBzdHJpY3QgYWRoZXJlbmNlIHRvIEMrKyBhbmQKICAgQzExIHN0YW5kYXJkcy4gIFRoaXMgc2hvdWxkIGV2ZW50dWFsbHkgYmUgZG9uZSBpbnNpZGUgYWx0aXZlYy5oIGl0c2VsZiwKICAgYnV0IG9ubHkgYWZ0ZXIgdGVzdGluZyBhIGZ1bGwgZGlzdHJvIGJ1aWxkLiAgKi8KI2lmIGRlZmluZWQoX19TVFJJQ1RfQU5TSV9fKSAmJiAoZGVmaW5lZChfX2NwbHVzcGx1cykgfHwgXAoJCQkJIChkZWZpbmVkKF9fU1REQ19WRVJTSU9OX18pICYmCVwKCQkJCSAgX19TVERDX1ZFUlNJT05fXyA+PSAyMDExMTJMKSkKI3VuZGVmIHZlY3RvcgojdW5kZWYgcGl4ZWwKI3VuZGVmIGJvb2wKI2VuZGlmCgovKiBXZSBuZWVkIHR5cGUgZGVmaW5pdGlvbnMgZnJvbSB0aGUgTU1YIGhlYWRlciBmaWxlLiAgKi8KI2luY2x1ZGUgPG1taW50cmluLmg+CgovKiBHZXQgX21tX21hbGxvYyAoKSBhbmQgX21tX2ZyZWUgKCkuICAqLwojaWYgX19TVERDX0hPU1RFRF9fCiNpbmNsdWRlIDxtbV9tYWxsb2MuaD4KI2VuZGlmCgovKiBUaGUgSW50ZWwgQVBJIGlzIGZsZXhpYmxlIGVub3VnaCB0aGF0IHdlIG11c3QgYWxsb3cgYWxpYXNpbmcgd2l0aCBvdGhlcgogICB2ZWN0b3IgdHlwZXMsIGFuZCB0aGVpciBzY2FsYXIgY29tcG9uZW50cy4gICovCnR5cGVkZWYgdmVjdG9yIGZsb2F0IF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX21heV9hbGlhc19fKSk7CgovKiBVbmFsaWduZWQgdmVyc2lvbiBvZiB0aGUgc2FtZSB0eXBlLiAgKi8KdHlwZWRlZiB2ZWN0b3IgZmxvYXQgX19tMTI4X3UgX19hdHRyaWJ1dGVfXygoX19tYXlfYWxpYXNfXywgX19hbGlnbmVkX18oMSkpKTsKCi8qIEludGVybmFsIGRhdGEgdHlwZXMgZm9yIGltcGxlbWVudGluZyB0aGUgaW50cmluc2ljcy4gICovCnR5cGVkZWYgdmVjdG9yIGZsb2F0IF9fdjRzZjsKCi8qIENyZWF0ZSBhbiB1bmRlZmluZWQgdmVjdG9yLiAgKi8KZXh0ZXJuIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX3VuZGVmaW5lZF9wcyAodm9pZCkKewogIF9fbTEyOCBfX1kgPSBfX1k7CiAgcmV0dXJuIF9fWTsKfQoKLyogQ3JlYXRlIGEgdmVjdG9yIG9mIHplcm9zLiAgKi8KZXh0ZXJuIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX3NldHplcm9fcHMgKHZvaWQpCnsKICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMTI4KXsgMC4wZiwgMC4wZiwgMC4wZiwgMC4wZiB9Owp9CgovKiBMb2FkIGZvdXIgU1BGUCB2YWx1ZXMgZnJvbSBQLiAgVGhlIGFkZHJlc3MgbXVzdCBiZSAxNi1ieXRlIGFsaWduZWQuICAqLwpleHRlcm4gX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fbG9hZF9wcyAoZmxvYXQgY29uc3QgKl9fUCkKewogIHJldHVybiAoKF9fbTEyOCl2ZWNfbGQoMCwgKF9fdjRzZiopX19QKSk7Cn0KCi8qIExvYWQgZm91ciBTUEZQIHZhbHVlcyBmcm9tIFAuICBUaGUgYWRkcmVzcyBuZWVkIG5vdCBiZSAxNi1ieXRlIGFsaWduZWQuICAqLwpleHRlcm4gX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fbG9hZHVfcHMgKGZsb2F0IGNvbnN0ICpfX1ApCnsKICByZXR1cm4gKHZlY192c3hfbGQoMCwgX19QKSk7Cn0KCi8qIExvYWQgZm91ciBTUEZQIHZhbHVlcyBpbiByZXZlcnNlIG9yZGVyLiAgVGhlIGFkZHJlc3MgbXVzdCBiZSBhbGlnbmVkLiAgKi8KZXh0ZXJuIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2xvYWRyX3BzIChmbG9hdCBjb25zdCAqX19QKQp7CiAgX192NHNmICAgX190bXA7CiAgX19tMTI4IHJlc3VsdDsKICBzdGF0aWMgY29uc3QgX192ZWN0b3IgdW5zaWduZWQgY2hhciBwZXJtdXRlX3ZlY3RvciA9CiAgICB7IDB4MUMsIDB4MUQsIDB4MUUsIDB4MUYsIDB4MTgsIDB4MTksIDB4MUEsIDB4MUIsIDB4MTQsIDB4MTUsIDB4MTYsCgkweDE3LCAweDEwLCAweDExLCAweDEyLCAweDEzIH07CgogIF9fdG1wID0gdmVjX2xkICgwLCAoX192NHNmICopIF9fUCk7CiAgcmVzdWx0ID0gKF9fbTEyOCkgdmVjX3Blcm0gKF9fdG1wLCBfX3RtcCwgcGVybXV0ZV92ZWN0b3IpOwogIHJldHVybiByZXN1bHQ7Cn0KCi8qIENyZWF0ZSBhIHZlY3RvciB3aXRoIGFsbCBmb3VyIGVsZW1lbnRzIGVxdWFsIHRvIEYuICAqLwpleHRlcm4gX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fc2V0MV9wcyAoZmxvYXQgX19GKQp7CiAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOCkoX192NHNmKXsgX19GLCBfX0YsIF9fRiwgX19GIH07Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9zZXRfcHMxIChmbG9hdCBfX0YpCnsKICByZXR1cm4gX21tX3NldDFfcHMgKF9fRik7Cn0KCi8qIENyZWF0ZSB0aGUgdmVjdG9yIFtaIFkgWCBXXS4gICovCmV4dGVybiBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9zZXRfcHMgKGNvbnN0IGZsb2F0IF9fWiwgY29uc3QgZmxvYXQgX19ZLCBjb25zdCBmbG9hdCBfX1gsIGNvbnN0IGZsb2F0IF9fVykKewogIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjgpKF9fdjRzZil7IF9fVywgX19YLCBfX1ksIF9fWiB9Owp9CgovKiBDcmVhdGUgdGhlIHZlY3RvciBbVyBYIFkgWl0uICAqLwpleHRlcm4gX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fc2V0cl9wcyAoZmxvYXQgX19aLCBmbG9hdCBfX1ksIGZsb2F0IF9fWCwgZmxvYXQgX19XKQp7CiAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOCkoX192NHNmKXsgX19aLCBfX1ksIF9fWCwgX19XIH07Cn0KCi8qIFN0b3JlIGZvdXIgU1BGUCB2YWx1ZXMuICBUaGUgYWRkcmVzcyBtdXN0IGJlIDE2LWJ5dGUgYWxpZ25lZC4gICovCmV4dGVybiBfX2lubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fc3RvcmVfcHMgKGZsb2F0ICpfX1AsIF9fbTEyOCBfX0EpCnsKICB2ZWNfc3QoKF9fdjRzZilfX0EsIDAsIChfX3Y0c2YqKV9fUCk7Cn0KCi8qIFN0b3JlIGZvdXIgU1BGUCB2YWx1ZXMuICBUaGUgYWRkcmVzcyBuZWVkIG5vdCBiZSAxNi1ieXRlIGFsaWduZWQuICAqLwpleHRlcm4gX19pbmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX3N0b3JldV9wcyAoZmxvYXQgKl9fUCwgX19tMTI4IF9fQSkKewogICooX19tMTI4X3UgKilfX1AgPSBfX0E7Cn0KCi8qIFN0b3JlIGZvdXIgU1BGUCB2YWx1ZXMgaW4gcmV2ZXJzZSBvcmRlci4gIFRoZSBhZGRyZXNzIG11c3QgYmUgYWxpZ25lZC4gICovCmV4dGVybiBfX2lubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fc3RvcmVyX3BzIChmbG9hdCAqX19QLCBfX20xMjggX19BKQp7CiAgX192NHNmICAgX190bXA7CiAgc3RhdGljIGNvbnN0IF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgcGVybXV0ZV92ZWN0b3IgPQogICAgeyAweDFDLCAweDFELCAweDFFLCAweDFGLCAweDE4LCAweDE5LCAweDFBLCAweDFCLCAweDE0LCAweDE1LCAweDE2LAoJMHgxNywgMHgxMCwgMHgxMSwgMHgxMiwgMHgxMyB9OwoKICBfX3RtcCA9IChfX20xMjgpIHZlY19wZXJtIChfX0EsIF9fQSwgcGVybXV0ZV92ZWN0b3IpOwoKICBfbW1fc3RvcmVfcHMgKF9fUCwgX190bXApOwp9CgovKiBTdG9yZSB0aGUgbG93ZXIgU1BGUCB2YWx1ZSBhY3Jvc3MgZm91ciB3b3Jkcy4gICovCmV4dGVybiBfX2lubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fc3RvcmUxX3BzIChmbG9hdCAqX19QLCBfX20xMjggX19BKQp7CiAgX192NHNmIF9fdmEgPSB2ZWNfc3BsYXQoKF9fdjRzZilfX0EsIDApOwogIF9tbV9zdG9yZV9wcyAoX19QLCBfX3ZhKTsKfQoKZXh0ZXJuIF9faW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9zdG9yZV9wczEgKGZsb2F0ICpfX1AsIF9fbTEyOCBfX0EpCnsKICBfbW1fc3RvcmUxX3BzIChfX1AsIF9fQSk7Cn0KCi8qIENyZWF0ZSBhIHZlY3RvciB3aXRoIGVsZW1lbnQgMCBhcyBGIGFuZCB0aGUgcmVzdCB6ZXJvLiAgKi8KZXh0ZXJuIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX3NldF9zcyAoZmxvYXQgX19GKQp7CiAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOCkoX192NHNmKXsgX19GLCAwLjBmLCAwLjBmLCAwLjBmIH07Cn0KCi8qIFNldHMgdGhlIGxvdyBTUEZQIHZhbHVlIG9mIEEgZnJvbSB0aGUgbG93IHZhbHVlIG9mIEIuICAqLwpleHRlcm4gX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fbW92ZV9zcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQikKewogIHN0YXRpYyBjb25zdCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgbWFzayA9IHsweGZmZmZmZmZmLCAwLCAwLCAwfTsKCiAgcmV0dXJuICh2ZWNfc2VsICgoX192NHNmKV9fQSwgKF9fdjRzZilfX0IsIG1hc2spKTsKfQoKLyogQ3JlYXRlIGEgdmVjdG9yIHdpdGggZWxlbWVudCAwIGFzICpQIGFuZCB0aGUgcmVzdCB6ZXJvLiAgKi8KZXh0ZXJuIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2xvYWRfc3MgKGZsb2F0IGNvbnN0ICpfX1ApCnsKICByZXR1cm4gX21tX3NldF9zcyAoKl9fUCk7Cn0KCi8qIFN0b3JlcyB0aGUgbG93ZXIgU1BGUCB2YWx1ZS4gICovCmV4dGVybiBfX2lubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fc3RvcmVfc3MgKGZsb2F0ICpfX1AsIF9fbTEyOCBfX0EpCnsKICAqX19QID0gKChfX3Y0c2YpX19BKVswXTsKfQoKLyogUGVyZm9ybSB0aGUgcmVzcGVjdGl2ZSBvcGVyYXRpb24gb24gdGhlIGxvd2VyIFNQRlAgKHNpbmdsZS1wcmVjaXNpb24KICAgZmxvYXRpbmctcG9pbnQpIHZhbHVlcyBvZiBBIGFuZCBCOyB0aGUgdXBwZXIgdGhyZWUgU1BGUCB2YWx1ZXMgYXJlCiAgIHBhc3NlZCB0aHJvdWdoIGZyb20gQS4gICovCgpleHRlcm4gX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fYWRkX3NzIChfX20xMjggX19BLCBfX20xMjggX19CKQp7CiNpZmRlZiBfQVJDSF9QV1I3CiAgX19tMTI4IGEsIGIsIGM7CiAgc3RhdGljIGNvbnN0IF9fdmVjdG9yIHVuc2lnbmVkIGludCBtYXNrID0gezB4ZmZmZmZmZmYsIDAsIDAsIDB9OwogIC8qIFBvd2VySVNBIFZTWCBkb2VzIG5vdCBhbGxvdyBwYXJ0aWFsIChmb3IganVzdCBsb3dlciBkb3VibGUpCiAgICAgcmVzdWx0cy4gU28gdG8gaW5zdXJlIHdlIGRvbid0IGdlbmVyYXRlIHNwdXJpb3VzIGV4Y2VwdGlvbnMKICAgICAoZnJvbSB0aGUgdXBwZXIgZG91YmxlIHZhbHVlcykgd2Ugc3BsYXQgdGhlIGxvd2VyIGRvdWJsZQogICAgIGJlZm9yZSB3ZSB0byB0aGUgb3BlcmF0aW9uLiAgKi8KICBhID0gdmVjX3NwbGF0IChfX0EsIDApOwogIGIgPSB2ZWNfc3BsYXQgKF9fQiwgMCk7CiAgYyA9IGEgKyBiOwogIC8qIFRoZW4gd2UgbWVyZ2UgdGhlIGxvd2VyIGZsb2F0IHJlc3VsdCB3aXRoIHRoZSBvcmlnaW5hbCB1cHBlcgogICAgIGZsb2F0IGVsZW1lbnRzIGZyb20gX19BLiAgKi8KICByZXR1cm4gKHZlY19zZWwgKF9fQSwgYywgbWFzaykpOwojZWxzZQogIF9fQVswXSA9IF9fQVswXSArIF9fQlswXTsKICByZXR1cm4gKF9fQSk7CiNlbmRpZgp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fc3ViX3NzIChfX20xMjggX19BLCBfX20xMjggX19CKQp7CiNpZmRlZiBfQVJDSF9QV1I3CiAgX19tMTI4IGEsIGIsIGM7CiAgc3RhdGljIGNvbnN0IF9fdmVjdG9yIHVuc2lnbmVkIGludCBtYXNrID0gezB4ZmZmZmZmZmYsIDAsIDAsIDB9OwogIC8qIFBvd2VySVNBIFZTWCBkb2VzIG5vdCBhbGxvdyBwYXJ0aWFsIChmb3IganVzdCBsb3dlciBkb3VibGUpCiAgICAgcmVzdWx0cy4gU28gdG8gaW5zdXJlIHdlIGRvbid0IGdlbmVyYXRlIHNwdXJpb3VzIGV4Y2VwdGlvbnMKICAgICAoZnJvbSB0aGUgdXBwZXIgZG91YmxlIHZhbHVlcykgd2Ugc3BsYXQgdGhlIGxvd2VyIGRvdWJsZQogICAgIGJlZm9yZSB3ZSB0byB0aGUgb3BlcmF0aW9uLiAgKi8KICBhID0gdmVjX3NwbGF0IChfX0EsIDApOwogIGIgPSB2ZWNfc3BsYXQgKF9fQiwgMCk7CiAgYyA9IGEgLSBiOwogIC8qIFRoZW4gd2UgbWVyZ2UgdGhlIGxvd2VyIGZsb2F0IHJlc3VsdCB3aXRoIHRoZSBvcmlnaW5hbCB1cHBlcgogICAgIGZsb2F0IGVsZW1lbnRzIGZyb20gX19BLiAgKi8KICByZXR1cm4gKHZlY19zZWwgKF9fQSwgYywgbWFzaykpOwojZWxzZQogIF9fQVswXSA9IF9fQVswXSAtIF9fQlswXTsKICByZXR1cm4gKF9fQSk7CiNlbmRpZgp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fbXVsX3NzIChfX20xMjggX19BLCBfX20xMjggX19CKQp7CiNpZmRlZiBfQVJDSF9QV1I3CiAgX19tMTI4IGEsIGIsIGM7CiAgc3RhdGljIGNvbnN0IF9fdmVjdG9yIHVuc2lnbmVkIGludCBtYXNrID0gezB4ZmZmZmZmZmYsIDAsIDAsIDB9OwogIC8qIFBvd2VySVNBIFZTWCBkb2VzIG5vdCBhbGxvdyBwYXJ0aWFsIChmb3IganVzdCBsb3dlciBkb3VibGUpCiAgICAgcmVzdWx0cy4gU28gdG8gaW5zdXJlIHdlIGRvbid0IGdlbmVyYXRlIHNwdXJpb3VzIGV4Y2VwdGlvbnMKICAgICAoZnJvbSB0aGUgdXBwZXIgZG91YmxlIHZhbHVlcykgd2Ugc3BsYXQgdGhlIGxvd2VyIGRvdWJsZQogICAgIGJlZm9yZSB3ZSB0byB0aGUgb3BlcmF0aW9uLiAgKi8KICBhID0gdmVjX3NwbGF0IChfX0EsIDApOwogIGIgPSB2ZWNfc3BsYXQgKF9fQiwgMCk7CiAgYyA9IGEgKiBiOwogIC8qIFRoZW4gd2UgbWVyZ2UgdGhlIGxvd2VyIGZsb2F0IHJlc3VsdCB3aXRoIHRoZSBvcmlnaW5hbCB1cHBlcgogICAgIGZsb2F0IGVsZW1lbnRzIGZyb20gX19BLiAgKi8KICByZXR1cm4gKHZlY19zZWwgKF9fQSwgYywgbWFzaykpOwojZWxzZQogIF9fQVswXSA9IF9fQVswXSAqIF9fQlswXTsKICByZXR1cm4gKF9fQSk7CiNlbmRpZgp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fZGl2X3NzIChfX20xMjggX19BLCBfX20xMjggX19CKQp7CiNpZmRlZiBfQVJDSF9QV1I3CiAgX19tMTI4IGEsIGIsIGM7CiAgc3RhdGljIGNvbnN0IF9fdmVjdG9yIHVuc2lnbmVkIGludCBtYXNrID0gezB4ZmZmZmZmZmYsIDAsIDAsIDB9OwogIC8qIFBvd2VySVNBIFZTWCBkb2VzIG5vdCBhbGxvdyBwYXJ0aWFsIChmb3IganVzdCBsb3dlciBkb3VibGUpCiAgICAgcmVzdWx0cy4gU28gdG8gaW5zdXJlIHdlIGRvbid0IGdlbmVyYXRlIHNwdXJpb3VzIGV4Y2VwdGlvbnMKICAgICAoZnJvbSB0aGUgdXBwZXIgZG91YmxlIHZhbHVlcykgd2Ugc3BsYXQgdGhlIGxvd2VyIGRvdWJsZQogICAgIGJlZm9yZSB3ZSB0byB0aGUgb3BlcmF0aW9uLiAgKi8KICBhID0gdmVjX3NwbGF0IChfX0EsIDApOwogIGIgPSB2ZWNfc3BsYXQgKF9fQiwgMCk7CiAgYyA9IGEgLyBiOwogIC8qIFRoZW4gd2UgbWVyZ2UgdGhlIGxvd2VyIGZsb2F0IHJlc3VsdCB3aXRoIHRoZSBvcmlnaW5hbCB1cHBlcgogICAgIGZsb2F0IGVsZW1lbnRzIGZyb20gX19BLiAgKi8KICByZXR1cm4gKHZlY19zZWwgKF9fQSwgYywgbWFzaykpOwojZWxzZQogIF9fQVswXSA9IF9fQVswXSAvIF9fQlswXTsKICByZXR1cm4gKF9fQSk7CiNlbmRpZgp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fc3FydF9zcyAoX19tMTI4IF9fQSkKewogIF9fbTEyOCBhLCBjOwogIHN0YXRpYyBjb25zdCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgbWFzayA9IHsweGZmZmZmZmZmLCAwLCAwLCAwfTsKICAvKiBQb3dlcklTQSBWU1ggZG9lcyBub3QgYWxsb3cgcGFydGlhbCAoZm9yIGp1c3QgbG93ZXIgZG91YmxlKQogICAqIHJlc3VsdHMuIFNvIHRvIGluc3VyZSB3ZSBkb24ndCBnZW5lcmF0ZSBzcHVyaW91cyBleGNlcHRpb25zCiAgICogKGZyb20gdGhlIHVwcGVyIGRvdWJsZSB2YWx1ZXMpIHdlIHNwbGF0IHRoZSBsb3dlciBkb3VibGUKICAgKiBiZWZvcmUgd2UgdG8gdGhlIG9wZXJhdGlvbi4gKi8KICBhID0gdmVjX3NwbGF0IChfX0EsIDApOwogIGMgPSB2ZWNfc3FydCAoYSk7CiAgLyogVGhlbiB3ZSBtZXJnZSB0aGUgbG93ZXIgZmxvYXQgcmVzdWx0IHdpdGggdGhlIG9yaWdpbmFsIHVwcGVyCiAgICogZmxvYXQgZWxlbWVudHMgZnJvbSBfX0EuICAqLwogIHJldHVybiAodmVjX3NlbCAoX19BLCBjLCBtYXNrKSk7Cn0KCi8qIFBlcmZvcm0gdGhlIHJlc3BlY3RpdmUgb3BlcmF0aW9uIG9uIHRoZSBmb3VyIFNQRlAgdmFsdWVzIGluIEEgYW5kIEIuICAqLwpleHRlcm4gX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fYWRkX3BzIChfX20xMjggX19BLCBfX20xMjggX19CKQp7CiAgcmV0dXJuIChfX20xMjgpICgoX192NHNmKV9fQSArIChfX3Y0c2YpX19CKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX3N1Yl9wcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQikKewogIHJldHVybiAoX19tMTI4KSAoKF9fdjRzZilfX0EgLSAoX192NHNmKV9fQik7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9tdWxfcHMgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCnsKICByZXR1cm4gKF9fbTEyOCkgKChfX3Y0c2YpX19BICogKF9fdjRzZilfX0IpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fZGl2X3BzIChfX20xMjggX19BLCBfX20xMjggX19CKQp7CiAgcmV0dXJuIChfX20xMjgpICgoX192NHNmKV9fQSAvIChfX3Y0c2YpX19CKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX3NxcnRfcHMgKF9fbTEyOCBfX0EpCnsKICByZXR1cm4gKHZlY19zcXJ0ICgoX192NHNmKV9fQSkpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fcmNwX3BzIChfX20xMjggX19BKQp7CiAgcmV0dXJuICh2ZWNfcmUgKChfX3Y0c2YpX19BKSk7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9yc3FydF9wcyAoX19tMTI4IF9fQSkKewogIHJldHVybiAodmVjX3JzcXJ0ZSAoX19BKSk7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9yY3Bfc3MgKF9fbTEyOCBfX0EpCnsKICBfX20xMjggYSwgYzsKICBzdGF0aWMgY29uc3QgX192ZWN0b3IgdW5zaWduZWQgaW50IG1hc2sgPSB7MHhmZmZmZmZmZiwgMCwgMCwgMH07CiAgLyogUG93ZXJJU0EgVlNYIGRvZXMgbm90IGFsbG93IHBhcnRpYWwgKGZvciBqdXN0IGxvd2VyIGRvdWJsZSkKICAgKiByZXN1bHRzLiBTbyB0byBpbnN1cmUgd2UgZG9uJ3QgZ2VuZXJhdGUgc3B1cmlvdXMgZXhjZXB0aW9ucwogICAqIChmcm9tIHRoZSB1cHBlciBkb3VibGUgdmFsdWVzKSB3ZSBzcGxhdCB0aGUgbG93ZXIgZG91YmxlCiAgICogYmVmb3JlIHdlIHRvIHRoZSBvcGVyYXRpb24uICovCiAgYSA9IHZlY19zcGxhdCAoX19BLCAwKTsKICBjID0gX21tX3JjcF9wcyAoYSk7CiAgLyogVGhlbiB3ZSBtZXJnZSB0aGUgbG93ZXIgZmxvYXQgcmVzdWx0IHdpdGggdGhlIG9yaWdpbmFsIHVwcGVyCiAgICogZmxvYXQgZWxlbWVudHMgZnJvbSBfX0EuICAqLwogIHJldHVybiAodmVjX3NlbCAoX19BLCBjLCBtYXNrKSk7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9yc3FydF9zcyAoX19tMTI4IF9fQSkKewogIF9fbTEyOCBhLCBjOwogIHN0YXRpYyBjb25zdCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgbWFzayA9IHsweGZmZmZmZmZmLCAwLCAwLCAwfTsKICAvKiBQb3dlcklTQSBWU1ggZG9lcyBub3QgYWxsb3cgcGFydGlhbCAoZm9yIGp1c3QgbG93ZXIgZG91YmxlKQogICAqIHJlc3VsdHMuIFNvIHRvIGluc3VyZSB3ZSBkb24ndCBnZW5lcmF0ZSBzcHVyaW91cyBleGNlcHRpb25zCiAgICogKGZyb20gdGhlIHVwcGVyIGRvdWJsZSB2YWx1ZXMpIHdlIHNwbGF0IHRoZSBsb3dlciBkb3VibGUKICAgKiBiZWZvcmUgd2UgdG8gdGhlIG9wZXJhdGlvbi4gKi8KICBhID0gdmVjX3NwbGF0IChfX0EsIDApOwogIGMgPSB2ZWNfcnNxcnRlIChhKTsKICAvKiBUaGVuIHdlIG1lcmdlIHRoZSBsb3dlciBmbG9hdCByZXN1bHQgd2l0aCB0aGUgb3JpZ2luYWwgdXBwZXIKICAgKiBmbG9hdCBlbGVtZW50cyBmcm9tIF9fQS4gICovCiAgcmV0dXJuICh2ZWNfc2VsIChfX0EsIGMsIG1hc2spKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX21pbl9zcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQikKewogIF9fdjRzZiBhLCBiLCBjOwogIHN0YXRpYyBjb25zdCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgbWFzayA9IHsweGZmZmZmZmZmLCAwLCAwLCAwfTsKICAvKiBQb3dlcklTQSBWU1ggZG9lcyBub3QgYWxsb3cgcGFydGlhbCAoZm9yIGp1c3QgbG93ZXIgZmxvYXQpCiAgICogcmVzdWx0cy4gU28gdG8gaW5zdXJlIHdlIGRvbid0IGdlbmVyYXRlIHNwdXJpb3VzIGV4Y2VwdGlvbnMKICAgKiAoZnJvbSB0aGUgdXBwZXIgZmxvYXQgdmFsdWVzKSB3ZSBzcGxhdCB0aGUgbG93ZXIgZmxvYXQKICAgKiBiZWZvcmUgd2UgdG8gdGhlIG9wZXJhdGlvbi4gKi8KICBhID0gdmVjX3NwbGF0ICgoX192NHNmKV9fQSwgMCk7CiAgYiA9IHZlY19zcGxhdCAoKF9fdjRzZilfX0IsIDApOwogIGMgPSB2ZWNfbWluIChhLCBiKTsKICAvKiBUaGVuIHdlIG1lcmdlIHRoZSBsb3dlciBmbG9hdCByZXN1bHQgd2l0aCB0aGUgb3JpZ2luYWwgdXBwZXIKICAgKiBmbG9hdCBlbGVtZW50cyBmcm9tIF9fQS4gICovCiAgcmV0dXJuICh2ZWNfc2VsICgoX192NHNmKV9fQSwgYywgbWFzaykpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fbWF4X3NzIChfX20xMjggX19BLCBfX20xMjggX19CKQp7CiAgX192NHNmIGEsIGIsIGM7CiAgc3RhdGljIGNvbnN0IF9fdmVjdG9yIHVuc2lnbmVkIGludCBtYXNrID0gezB4ZmZmZmZmZmYsIDAsIDAsIDB9OwogIC8qIFBvd2VySVNBIFZTWCBkb2VzIG5vdCBhbGxvdyBwYXJ0aWFsIChmb3IganVzdCBsb3dlciBmbG9hdCkKICAgKiByZXN1bHRzLiBTbyB0byBpbnN1cmUgd2UgZG9uJ3QgZ2VuZXJhdGUgc3B1cmlvdXMgZXhjZXB0aW9ucwogICAqIChmcm9tIHRoZSB1cHBlciBmbG9hdCB2YWx1ZXMpIHdlIHNwbGF0IHRoZSBsb3dlciBmbG9hdAogICAqIGJlZm9yZSB3ZSB0byB0aGUgb3BlcmF0aW9uLiAqLwogIGEgPSB2ZWNfc3BsYXQgKF9fQSwgMCk7CiAgYiA9IHZlY19zcGxhdCAoX19CLCAwKTsKICBjID0gdmVjX21heCAoYSwgYik7CiAgLyogVGhlbiB3ZSBtZXJnZSB0aGUgbG93ZXIgZmxvYXQgcmVzdWx0IHdpdGggdGhlIG9yaWdpbmFsIHVwcGVyCiAgICogZmxvYXQgZWxlbWVudHMgZnJvbSBfX0EuICAqLwogIHJldHVybiAodmVjX3NlbCAoKF9fdjRzZilfX0EsIGMsIG1hc2spKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX21pbl9wcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQikKewogIF9fdmVjdG9yIF9fYm9vbCBpbnQgbSA9IHZlY19jbXBndCAoKF9fdjRzZikgX19CLCAoX192NHNmKSBfX0EpOwogIHJldHVybiB2ZWNfc2VsIChfX0IsIF9fQSwgbSk7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9tYXhfcHMgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCnsKICBfX3ZlY3RvciBfX2Jvb2wgaW50IG0gPSB2ZWNfY21wZ3QgKChfX3Y0c2YpIF9fQSwgKF9fdjRzZikgX19CKTsKICByZXR1cm4gdmVjX3NlbCAoX19CLCBfX0EsIG0pOwp9CgovKiBQZXJmb3JtIGxvZ2ljYWwgYml0LXdpc2Ugb3BlcmF0aW9ucyBvbiAxMjgtYml0IHZhbHVlcy4gICovCmV4dGVybiBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9hbmRfcHMgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCnsKICByZXR1cm4gKChfX20xMjgpdmVjX2FuZCAoKF9fdjRzZilfX0EsIChfX3Y0c2YpX19CKSk7Ci8vICByZXR1cm4gX19idWlsdGluX2lhMzJfYW5kcHMgKF9fQSwgX19CKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2FuZG5vdF9wcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQikKewogIHJldHVybiAoKF9fbTEyOCl2ZWNfYW5kYyAoKF9fdjRzZilfX0IsIChfX3Y0c2YpX19BKSk7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9vcl9wcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQikKewogIHJldHVybiAoKF9fbTEyOCl2ZWNfb3IgKChfX3Y0c2YpX19BLCAoX192NHNmKV9fQikpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1feG9yX3BzIChfX20xMjggX19BLCBfX20xMjggX19CKQp7CiAgcmV0dXJuICgoX19tMTI4KXZlY194b3IgKChfX3Y0c2YpX19BLCAoX192NHNmKV9fQikpOwp9CgovKiBQZXJmb3JtIGEgY29tcGFyaXNvbiBvbiB0aGUgZm91ciBTUEZQIHZhbHVlcyBvZiBBIGFuZCBCLiAgRm9yIGVhY2gKICAgZWxlbWVudCwgaWYgdGhlIGNvbXBhcmlzb24gaXMgdHJ1ZSwgcGxhY2UgYSBtYXNrIG9mIGFsbCBvbmVzIGluIHRoZQogICByZXN1bHQsIG90aGVyd2lzZSBhIG1hc2sgb2YgemVyb3MuICAqLwpleHRlcm4gX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fY21wZXFfcHMgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCnsKICByZXR1cm4gKChfX20xMjgpdmVjX2NtcGVxICgoX192NHNmKV9fQSwoX192NHNmKSBfX0IpKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2NtcGx0X3BzIChfX20xMjggX19BLCBfX20xMjggX19CKQp7CiAgcmV0dXJuICgoX19tMTI4KXZlY19jbXBsdCAoKF9fdjRzZilfX0EsIChfX3Y0c2YpX19CKSk7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9jbXBsZV9wcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQikKewogIHJldHVybiAoKF9fbTEyOCl2ZWNfY21wbGUgKChfX3Y0c2YpX19BLCAoX192NHNmKV9fQikpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fY21wZ3RfcHMgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCnsKICByZXR1cm4gKChfX20xMjgpdmVjX2NtcGd0ICgoX192NHNmKV9fQSwgKF9fdjRzZilfX0IpKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2NtcGdlX3BzIChfX20xMjggX19BLCBfX20xMjggX19CKQp7CiAgcmV0dXJuICgoX19tMTI4KXZlY19jbXBnZSAoKF9fdjRzZilfX0EsIChfX3Y0c2YpX19CKSk7Cn0KCmV4dGVybiBfX2lubGluZSAgX19tMTI4ICBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2NtcG5lcV9wcyAoX19tMTI4ICBfX0EsIF9fbTEyOCAgX19CKQp7CiAgX192NHNmIHRlbXAgPSAoX192NHNmICkgdmVjX2NtcGVxICgoX192NHNmKSBfX0EsIChfX3Y0c2YpX19CKTsKICByZXR1cm4gKChfX20xMjgpdmVjX25vciAodGVtcCwgdGVtcCkpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fY21wbmx0X3BzIChfX20xMjggX19BLCBfX20xMjggX19CKQp7CiAgcmV0dXJuICgoX19tMTI4KXZlY19jbXBnZSAoKF9fdjRzZilfX0EsIChfX3Y0c2YpX19CKSk7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9jbXBubGVfcHMgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCnsKICByZXR1cm4gKChfX20xMjgpdmVjX2NtcGd0ICgoX192NHNmKV9fQSwgKF9fdjRzZilfX0IpKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2NtcG5ndF9wcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQikKewogIHJldHVybiAoKF9fbTEyOCl2ZWNfY21wbGUgKChfX3Y0c2YpX19BLCAoX192NHNmKV9fQikpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fY21wbmdlX3BzIChfX20xMjggX19BLCBfX20xMjggX19CKQp7CiAgcmV0dXJuICgoX19tMTI4KXZlY19jbXBsdCAoKF9fdjRzZilfX0EsIChfX3Y0c2YpX19CKSk7Cn0KCmV4dGVybiBfX2lubGluZSAgX19tMTI4ICBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2NtcG9yZF9wcyAoX19tMTI4ICBfX0EsIF9fbTEyOCAgX19CKQp7CiAgX192ZWN0b3IgdW5zaWduZWQgaW50IGEsIGI7CiAgX192ZWN0b3IgdW5zaWduZWQgaW50IGMsIGQ7CiAgc3RhdGljIGNvbnN0IF9fdmVjdG9yIHVuc2lnbmVkIGludCBmbG9hdF9leHBfbWFzayA9CiAgICB7IDB4N2Y4MDAwMDAsIDB4N2Y4MDAwMDAsIDB4N2Y4MDAwMDAsIDB4N2Y4MDAwMDAgfTsKCiAgYSA9IChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpIHZlY19hYnMgKChfX3Y0c2YpX19BKTsKICBiID0gKF9fdmVjdG9yIHVuc2lnbmVkIGludCkgdmVjX2FicyAoKF9fdjRzZilfX0IpOwogIGMgPSAoX192ZWN0b3IgdW5zaWduZWQgaW50KSB2ZWNfY21wZ3QgKGZsb2F0X2V4cF9tYXNrLCBhKTsKICBkID0gKF9fdmVjdG9yIHVuc2lnbmVkIGludCkgdmVjX2NtcGd0IChmbG9hdF9leHBfbWFzaywgYik7CiAgcmV0dXJuICgoX19tMTI4ICkgdmVjX2FuZCAoYywgZCkpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fY21wdW5vcmRfcHMgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCnsKICBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgYSwgYjsKICBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgYywgZDsKICBzdGF0aWMgY29uc3QgX192ZWN0b3IgdW5zaWduZWQgaW50IGZsb2F0X2V4cF9tYXNrID0KICAgIHsgMHg3ZjgwMDAwMCwgMHg3ZjgwMDAwMCwgMHg3ZjgwMDAwMCwgMHg3ZjgwMDAwMCB9OwoKICBhID0gKF9fdmVjdG9yIHVuc2lnbmVkIGludCkgdmVjX2FicyAoKF9fdjRzZilfX0EpOwogIGIgPSAoX192ZWN0b3IgdW5zaWduZWQgaW50KSB2ZWNfYWJzICgoX192NHNmKV9fQik7CiAgYyA9IChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpIHZlY19jbXBndCAoYSwgZmxvYXRfZXhwX21hc2spOwogIGQgPSAoX192ZWN0b3IgdW5zaWduZWQgaW50KSB2ZWNfY21wZ3QgKGIsIGZsb2F0X2V4cF9tYXNrKTsKICByZXR1cm4gKChfX20xMjggKSB2ZWNfb3IgKGMsIGQpKTsKfQoKLyogUGVyZm9ybSBhIGNvbXBhcmlzb24gb24gdGhlIGxvd2VyIFNQRlAgdmFsdWVzIG9mIEEgYW5kIEIuICBJZiB0aGUKICAgY29tcGFyaXNvbiBpcyB0cnVlLCBwbGFjZSBhIG1hc2sgb2YgYWxsIG9uZXMgaW4gdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIGEKICAgbWFzayBvZiB6ZXJvcy4gIFRoZSB1cHBlciB0aHJlZSBTUEZQIHZhbHVlcyBhcmUgcGFzc2VkIHRocm91Z2ggZnJvbSBBLiAgKi8KZXh0ZXJuIF9faW5saW5lICBfX20xMjggIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fY21wZXFfc3MgKF9fbTEyOCAgX19BLCBfX20xMjggIF9fQikKewogIHN0YXRpYyBjb25zdCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgbWFzayA9CiAgICB7IDB4ZmZmZmZmZmYsIDAsIDAsIDAgfTsKICBfX3Y0c2YgYSwgYiwgYzsKICAvKiBQb3dlcklTQSBWTVggZG9lcyBub3QgYWxsb3cgcGFydGlhbCAoZm9yIGp1c3QgZWxlbWVudCAwKQogICAqIHJlc3VsdHMuIFNvIHRvIGluc3VyZSB3ZSBkb24ndCBnZW5lcmF0ZSBzcHVyaW91cyBleGNlcHRpb25zCiAgICogKGZyb20gdGhlIHVwcGVyIGVsZW1lbnRzKSB3ZSBzcGxhdCB0aGUgbG93ZXIgZmxvYXQKICAgKiBiZWZvcmUgd2UgdG8gdGhlIG9wZXJhdGlvbi4gKi8KICBhID0gdmVjX3NwbGF0ICgoX192NHNmKSBfX0EsIDApOwogIGIgPSB2ZWNfc3BsYXQgKChfX3Y0c2YpIF9fQiwgMCk7CiAgYyA9IChfX3Y0c2YpIHZlY19jbXBlcShhLCBiKTsKICAvKiBUaGVuIHdlIG1lcmdlIHRoZSBsb3dlciBmbG9hdCByZXN1bHQgd2l0aCB0aGUgb3JpZ2luYWwgdXBwZXIKICAgKiBmbG9hdCBlbGVtZW50cyBmcm9tIF9fQS4gICovCiAgcmV0dXJuICgoX19tMTI4KXZlY19zZWwgKChfX3Y0c2YpX19BLCBjLCBtYXNrKSk7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9jbXBsdF9zcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQikKewogIHN0YXRpYyBjb25zdCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgbWFzayA9CiAgICB7IDB4ZmZmZmZmZmYsIDAsIDAsIDAgfTsKICBfX3Y0c2YgYSwgYiwgYzsKICAvKiBQb3dlcklTQSBWTVggZG9lcyBub3QgYWxsb3cgcGFydGlhbCAoZm9yIGp1c3QgZWxlbWVudCAwKQogICAqIHJlc3VsdHMuIFNvIHRvIGluc3VyZSB3ZSBkb24ndCBnZW5lcmF0ZSBzcHVyaW91cyBleGNlcHRpb25zCiAgICogKGZyb20gdGhlIHVwcGVyIGVsZW1lbnRzKSB3ZSBzcGxhdCB0aGUgbG93ZXIgZmxvYXQKICAgKiBiZWZvcmUgd2UgdG8gdGhlIG9wZXJhdGlvbi4gKi8KICBhID0gdmVjX3NwbGF0ICgoX192NHNmKSBfX0EsIDApOwogIGIgPSB2ZWNfc3BsYXQgKChfX3Y0c2YpIF9fQiwgMCk7CiAgYyA9IChfX3Y0c2YpIHZlY19jbXBsdChhLCBiKTsKICAvKiBUaGVuIHdlIG1lcmdlIHRoZSBsb3dlciBmbG9hdCByZXN1bHQgd2l0aCB0aGUgb3JpZ2luYWwgdXBwZXIKICAgKiBmbG9hdCBlbGVtZW50cyBmcm9tIF9fQS4gICovCiAgcmV0dXJuICgoX19tMTI4KXZlY19zZWwgKChfX3Y0c2YpX19BLCBjLCBtYXNrKSk7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9jbXBsZV9zcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQikKewogIHN0YXRpYyBjb25zdCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgbWFzayA9CiAgICB7IDB4ZmZmZmZmZmYsIDAsIDAsIDAgfTsKICBfX3Y0c2YgYSwgYiwgYzsKICAvKiBQb3dlcklTQSBWTVggZG9lcyBub3QgYWxsb3cgcGFydGlhbCAoZm9yIGp1c3QgZWxlbWVudCAwKQogICAqIHJlc3VsdHMuIFNvIHRvIGluc3VyZSB3ZSBkb24ndCBnZW5lcmF0ZSBzcHVyaW91cyBleGNlcHRpb25zCiAgICogKGZyb20gdGhlIHVwcGVyIGVsZW1lbnRzKSB3ZSBzcGxhdCB0aGUgbG93ZXIgZmxvYXQKICAgKiBiZWZvcmUgd2UgdG8gdGhlIG9wZXJhdGlvbi4gKi8KICBhID0gdmVjX3NwbGF0ICgoX192NHNmKSBfX0EsIDApOwogIGIgPSB2ZWNfc3BsYXQgKChfX3Y0c2YpIF9fQiwgMCk7CiAgYyA9IChfX3Y0c2YpIHZlY19jbXBsZShhLCBiKTsKICAvKiBUaGVuIHdlIG1lcmdlIHRoZSBsb3dlciBmbG9hdCByZXN1bHQgd2l0aCB0aGUgb3JpZ2luYWwgdXBwZXIKICAgKiBmbG9hdCBlbGVtZW50cyBmcm9tIF9fQS4gICovCiAgcmV0dXJuICgoX19tMTI4KXZlY19zZWwgKChfX3Y0c2YpX19BLCBjLCBtYXNrKSk7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9jbXBndF9zcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQikKewogIHN0YXRpYyBjb25zdCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgbWFzayA9CiAgICB7IDB4ZmZmZmZmZmYsIDAsIDAsIDAgfTsKICBfX3Y0c2YgYSwgYiwgYzsKICAvKiBQb3dlcklTQSBWTVggZG9lcyBub3QgYWxsb3cgcGFydGlhbCAoZm9yIGp1c3QgZWxlbWVudCAwKQogICAqIHJlc3VsdHMuIFNvIHRvIGluc3VyZSB3ZSBkb24ndCBnZW5lcmF0ZSBzcHVyaW91cyBleGNlcHRpb25zCiAgICogKGZyb20gdGhlIHVwcGVyIGVsZW1lbnRzKSB3ZSBzcGxhdCB0aGUgbG93ZXIgZmxvYXQKICAgKiBiZWZvcmUgd2UgdG8gdGhlIG9wZXJhdGlvbi4gKi8KICBhID0gdmVjX3NwbGF0ICgoX192NHNmKSBfX0EsIDApOwogIGIgPSB2ZWNfc3BsYXQgKChfX3Y0c2YpIF9fQiwgMCk7CiAgYyA9IChfX3Y0c2YpIHZlY19jbXBndChhLCBiKTsKICAvKiBUaGVuIHdlIG1lcmdlIHRoZSBsb3dlciBmbG9hdCByZXN1bHQgd2l0aCB0aGUgb3JpZ2luYWwgdXBwZXIKICAgKiBmbG9hdCBlbGVtZW50cyBmcm9tIF9fQS4gICovCiAgcmV0dXJuICgoX19tMTI4KXZlY19zZWwgKChfX3Y0c2YpX19BLCBjLCBtYXNrKSk7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9jbXBnZV9zcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQikKewogIHN0YXRpYyBjb25zdCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgbWFzayA9CiAgICB7IDB4ZmZmZmZmZmYsIDAsIDAsIDAgfTsKICBfX3Y0c2YgYSwgYiwgYzsKICAvKiBQb3dlcklTQSBWTVggZG9lcyBub3QgYWxsb3cgcGFydGlhbCAoZm9yIGp1c3QgZWxlbWVudCAwKQogICAqIHJlc3VsdHMuIFNvIHRvIGluc3VyZSB3ZSBkb24ndCBnZW5lcmF0ZSBzcHVyaW91cyBleGNlcHRpb25zCiAgICogKGZyb20gdGhlIHVwcGVyIGVsZW1lbnRzKSB3ZSBzcGxhdCB0aGUgbG93ZXIgZmxvYXQKICAgKiBiZWZvcmUgd2UgdG8gdGhlIG9wZXJhdGlvbi4gKi8KICBhID0gdmVjX3NwbGF0ICgoX192NHNmKSBfX0EsIDApOwogIGIgPSB2ZWNfc3BsYXQgKChfX3Y0c2YpIF9fQiwgMCk7CiAgYyA9IChfX3Y0c2YpIHZlY19jbXBnZShhLCBiKTsKICAvKiBUaGVuIHdlIG1lcmdlIHRoZSBsb3dlciBmbG9hdCByZXN1bHQgd2l0aCB0aGUgb3JpZ2luYWwgdXBwZXIKICAgKiBmbG9hdCBlbGVtZW50cyBmcm9tIF9fQS4gICovCiAgcmV0dXJuICgoX19tMTI4KXZlY19zZWwgKChfX3Y0c2YpX19BLCBjLCBtYXNrKSk7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9jbXBuZXFfc3MgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCnsKICBzdGF0aWMgY29uc3QgX192ZWN0b3IgdW5zaWduZWQgaW50IG1hc2sgPQogICAgeyAweGZmZmZmZmZmLCAwLCAwLCAwIH07CiAgX192NHNmIGEsIGIsIGM7CiAgLyogUG93ZXJJU0EgVk1YIGRvZXMgbm90IGFsbG93IHBhcnRpYWwgKGZvciBqdXN0IGVsZW1lbnQgMCkKICAgKiByZXN1bHRzLiBTbyB0byBpbnN1cmUgd2UgZG9uJ3QgZ2VuZXJhdGUgc3B1cmlvdXMgZXhjZXB0aW9ucwogICAqIChmcm9tIHRoZSB1cHBlciBlbGVtZW50cykgd2Ugc3BsYXQgdGhlIGxvd2VyIGZsb2F0CiAgICogYmVmb3JlIHdlIHRvIHRoZSBvcGVyYXRpb24uICovCiAgYSA9IHZlY19zcGxhdCAoKF9fdjRzZikgX19BLCAwKTsKICBiID0gdmVjX3NwbGF0ICgoX192NHNmKSBfX0IsIDApOwogIGMgPSAoX192NHNmKSB2ZWNfY21wZXEoYSwgYik7CiAgYyA9IHZlY19ub3IgKGMsIGMpOwogIC8qIFRoZW4gd2UgbWVyZ2UgdGhlIGxvd2VyIGZsb2F0IHJlc3VsdCB3aXRoIHRoZSBvcmlnaW5hbCB1cHBlcgogICAqIGZsb2F0IGVsZW1lbnRzIGZyb20gX19BLiAgKi8KICByZXR1cm4gKChfX20xMjgpdmVjX3NlbCAoKF9fdjRzZilfX0EsIGMsIG1hc2spKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2NtcG5sdF9zcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQikKewogIHN0YXRpYyBjb25zdCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgbWFzayA9CiAgICB7IDB4ZmZmZmZmZmYsIDAsIDAsIDAgfTsKICBfX3Y0c2YgYSwgYiwgYzsKICAvKiBQb3dlcklTQSBWTVggZG9lcyBub3QgYWxsb3cgcGFydGlhbCAoZm9yIGp1c3QgZWxlbWVudCAwKQogICAqIHJlc3VsdHMuIFNvIHRvIGluc3VyZSB3ZSBkb24ndCBnZW5lcmF0ZSBzcHVyaW91cyBleGNlcHRpb25zCiAgICogKGZyb20gdGhlIHVwcGVyIGVsZW1lbnRzKSB3ZSBzcGxhdCB0aGUgbG93ZXIgZmxvYXQKICAgKiBiZWZvcmUgd2UgdG8gdGhlIG9wZXJhdGlvbi4gKi8KICBhID0gdmVjX3NwbGF0ICgoX192NHNmKSBfX0EsIDApOwogIGIgPSB2ZWNfc3BsYXQgKChfX3Y0c2YpIF9fQiwgMCk7CiAgYyA9IChfX3Y0c2YpIHZlY19jbXBnZShhLCBiKTsKICAvKiBUaGVuIHdlIG1lcmdlIHRoZSBsb3dlciBmbG9hdCByZXN1bHQgd2l0aCB0aGUgb3JpZ2luYWwgdXBwZXIKICAgKiBmbG9hdCBlbGVtZW50cyBmcm9tIF9fQS4gICovCiAgcmV0dXJuICgoX19tMTI4KXZlY19zZWwgKChfX3Y0c2YpX19BLCBjLCBtYXNrKSk7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9jbXBubGVfc3MgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCnsKICBzdGF0aWMgY29uc3QgX192ZWN0b3IgdW5zaWduZWQgaW50IG1hc2sgPQogICAgeyAweGZmZmZmZmZmLCAwLCAwLCAwIH07CiAgX192NHNmIGEsIGIsIGM7CiAgLyogUG93ZXJJU0EgVk1YIGRvZXMgbm90IGFsbG93IHBhcnRpYWwgKGZvciBqdXN0IGVsZW1lbnQgMCkKICAgKiByZXN1bHRzLiBTbyB0byBpbnN1cmUgd2UgZG9uJ3QgZ2VuZXJhdGUgc3B1cmlvdXMgZXhjZXB0aW9ucwogICAqIChmcm9tIHRoZSB1cHBlciBlbGVtZW50cykgd2Ugc3BsYXQgdGhlIGxvd2VyIGZsb2F0CiAgICogYmVmb3JlIHdlIHRvIHRoZSBvcGVyYXRpb24uICovCiAgYSA9IHZlY19zcGxhdCAoKF9fdjRzZikgX19BLCAwKTsKICBiID0gdmVjX3NwbGF0ICgoX192NHNmKSBfX0IsIDApOwogIGMgPSAoX192NHNmKSB2ZWNfY21wZ3QoYSwgYik7CiAgLyogVGhlbiB3ZSBtZXJnZSB0aGUgbG93ZXIgZmxvYXQgcmVzdWx0IHdpdGggdGhlIG9yaWdpbmFsIHVwcGVyCiAgICogZmxvYXQgZWxlbWVudHMgZnJvbSBfX0EuICAqLwogIHJldHVybiAoKF9fbTEyOCl2ZWNfc2VsICgoX192NHNmKV9fQSwgYywgbWFzaykpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fY21wbmd0X3NzIChfX20xMjggX19BLCBfX20xMjggX19CKQp7CiAgc3RhdGljIGNvbnN0IF9fdmVjdG9yIHVuc2lnbmVkIGludCBtYXNrID0KICAgIHsgMHhmZmZmZmZmZiwgMCwgMCwgMCB9OwogIF9fdjRzZiBhLCBiLCBjOwogIC8qIFBvd2VySVNBIFZNWCBkb2VzIG5vdCBhbGxvdyBwYXJ0aWFsIChmb3IganVzdCBlbGVtZW50IDApCiAgICogcmVzdWx0cy4gU28gdG8gaW5zdXJlIHdlIGRvbid0IGdlbmVyYXRlIHNwdXJpb3VzIGV4Y2VwdGlvbnMKICAgKiAoZnJvbSB0aGUgdXBwZXIgZWxlbWVudHMpIHdlIHNwbGF0IHRoZSBsb3dlciBmbG9hdAogICAqIGJlZm9yZSB3ZSB0byB0aGUgb3BlcmF0aW9uLiAqLwogIGEgPSB2ZWNfc3BsYXQgKChfX3Y0c2YpIF9fQSwgMCk7CiAgYiA9IHZlY19zcGxhdCAoKF9fdjRzZikgX19CLCAwKTsKICBjID0gKF9fdjRzZikgdmVjX2NtcGxlKGEsIGIpOwogIC8qIFRoZW4gd2UgbWVyZ2UgdGhlIGxvd2VyIGZsb2F0IHJlc3VsdCB3aXRoIHRoZSBvcmlnaW5hbCB1cHBlcgogICAqIGZsb2F0IGVsZW1lbnRzIGZyb20gX19BLiAgKi8KICByZXR1cm4gKChfX20xMjgpdmVjX3NlbCAoKF9fdjRzZilfX0EsIGMsIG1hc2spKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2NtcG5nZV9zcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQikKewogIHN0YXRpYyBjb25zdCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgbWFzayA9CiAgICB7IDB4ZmZmZmZmZmYsIDAsIDAsIDAgfTsKICBfX3Y0c2YgYSwgYiwgYzsKICAvKiBQb3dlcklTQSBWTVggZG9lcyBub3QgYWxsb3cgcGFydGlhbCAoZm9yIGp1c3QgZWxlbWVudCAwKQogICAqIHJlc3VsdHMuIFNvIHRvIGluc3VyZSB3ZSBkb24ndCBnZW5lcmF0ZSBzcHVyaW91cyBleGNlcHRpb25zCiAgICogKGZyb20gdGhlIHVwcGVyIGVsZW1lbnRzKSB3ZSBzcGxhdCB0aGUgbG93ZXIgZmxvYXQKICAgKiBiZWZvcmUgd2UgZG8gdGhlIG9wZXJhdGlvbi4gKi8KICBhID0gdmVjX3NwbGF0ICgoX192NHNmKSBfX0EsIDApOwogIGIgPSB2ZWNfc3BsYXQgKChfX3Y0c2YpIF9fQiwgMCk7CiAgYyA9IChfX3Y0c2YpIHZlY19jbXBsdChhLCBiKTsKICAvKiBUaGVuIHdlIG1lcmdlIHRoZSBsb3dlciBmbG9hdCByZXN1bHQgd2l0aCB0aGUgb3JpZ2luYWwgdXBwZXIKICAgKiBmbG9hdCBlbGVtZW50cyBmcm9tIF9fQS4gICovCiAgcmV0dXJuICgoX19tMTI4KXZlY19zZWwgKChfX3Y0c2YpX19BLCBjLCBtYXNrKSk7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9jbXBvcmRfc3MgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCnsKICBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgYSwgYjsKICBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgYywgZDsKICBzdGF0aWMgY29uc3QgX192ZWN0b3IgdW5zaWduZWQgaW50IGZsb2F0X2V4cF9tYXNrID0KICAgIHsgMHg3ZjgwMDAwMCwgMHg3ZjgwMDAwMCwgMHg3ZjgwMDAwMCwgMHg3ZjgwMDAwMCB9OwogIHN0YXRpYyBjb25zdCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgbWFzayA9CiAgICB7IDB4ZmZmZmZmZmYsIDAsIDAsIDAgfTsKCiAgYSA9IChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpIHZlY19hYnMgKChfX3Y0c2YpX19BKTsKICBiID0gKF9fdmVjdG9yIHVuc2lnbmVkIGludCkgdmVjX2FicyAoKF9fdjRzZilfX0IpOwogIGMgPSAoX192ZWN0b3IgdW5zaWduZWQgaW50KSB2ZWNfY21wZ3QgKGZsb2F0X2V4cF9tYXNrLCBhKTsKICBkID0gKF9fdmVjdG9yIHVuc2lnbmVkIGludCkgdmVjX2NtcGd0IChmbG9hdF9leHBfbWFzaywgYik7CiAgYyA9IHZlY19hbmQgKGMsIGQpOwogIC8qIFRoZW4gd2UgbWVyZ2UgdGhlIGxvd2VyIGZsb2F0IHJlc3VsdCB3aXRoIHRoZSBvcmlnaW5hbCB1cHBlcgogICAqIGZsb2F0IGVsZW1lbnRzIGZyb20gX19BLiAgKi8KICByZXR1cm4gKChfX20xMjgpdmVjX3NlbCAoKF9fdjRzZilfX0EsIChfX3Y0c2YpYywgbWFzaykpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fY21wdW5vcmRfc3MgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCnsKICBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgYSwgYjsKICBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgYywgZDsKICBzdGF0aWMgY29uc3QgX192ZWN0b3IgdW5zaWduZWQgaW50IGZsb2F0X2V4cF9tYXNrID0KICAgIHsgMHg3ZjgwMDAwMCwgMHg3ZjgwMDAwMCwgMHg3ZjgwMDAwMCwgMHg3ZjgwMDAwMCB9OwogIHN0YXRpYyBjb25zdCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgbWFzayA9CiAgICB7IDB4ZmZmZmZmZmYsIDAsIDAsIDAgfTsKCiAgYSA9IChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpIHZlY19hYnMgKChfX3Y0c2YpX19BKTsKICBiID0gKF9fdmVjdG9yIHVuc2lnbmVkIGludCkgdmVjX2FicyAoKF9fdjRzZilfX0IpOwogIGMgPSAoX192ZWN0b3IgdW5zaWduZWQgaW50KSB2ZWNfY21wZ3QgKGEsIGZsb2F0X2V4cF9tYXNrKTsKICBkID0gKF9fdmVjdG9yIHVuc2lnbmVkIGludCkgdmVjX2NtcGd0IChiLCBmbG9hdF9leHBfbWFzayk7CiAgYyA9IHZlY19vciAoYywgZCk7CiAgLyogVGhlbiB3ZSBtZXJnZSB0aGUgbG93ZXIgZmxvYXQgcmVzdWx0IHdpdGggdGhlIG9yaWdpbmFsIHVwcGVyCiAgICogZmxvYXQgZWxlbWVudHMgZnJvbSBfX0EuICAqLwogIHJldHVybiAoKF9fbTEyOCl2ZWNfc2VsICgoX192NHNmKV9fQSwgKF9fdjRzZiljLCBtYXNrKSk7Cn0KCi8qIENvbXBhcmUgdGhlIGxvd2VyIFNQRlAgdmFsdWVzIG9mIEEgYW5kIEIgYW5kIHJldHVybiAxIGlmIHRydWUKICAgYW5kIDAgaWYgZmFsc2UuICAqLwpleHRlcm4gX19pbmxpbmUgaW50IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fY29taWVxX3NzIChfX20xMjggX19BLCBfX20xMjggX19CKQp7CiAgcmV0dXJuIChfX0FbMF0gPT0gX19CWzBdKTsKfQoKZXh0ZXJuIF9faW5saW5lIGludCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2NvbWlsdF9zcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQikKewogIHJldHVybiAoX19BWzBdIDwgX19CWzBdKTsKfQoKZXh0ZXJuIF9faW5saW5lIGludCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2NvbWlsZV9zcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQikKewogIHJldHVybiAoX19BWzBdIDw9IF9fQlswXSk7Cn0KCmV4dGVybiBfX2lubGluZSBpbnQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9jb21pZ3Rfc3MgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCnsKICByZXR1cm4gKF9fQVswXSA+IF9fQlswXSk7Cn0KCmV4dGVybiBfX2lubGluZSBpbnQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9jb21pZ2Vfc3MgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCnsKICByZXR1cm4gKF9fQVswXSA+PSBfX0JbMF0pOwp9CgpleHRlcm4gX19pbmxpbmUgaW50IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fY29taW5lcV9zcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQikKewogIHJldHVybiAoX19BWzBdICE9IF9fQlswXSk7Cn0KCi8qIEZJWE1FCiAqIFRoZSBfX21tX3Vjb21pPz9fc3MgaW1wbGVtZW50YXRpb25zIGJlbG93IGFyZSBleGFjdGx5IHRoZSBzYW1lIGFzCiAqIF9fbW1fY29taT8/X3NzIGJlY2F1c2UgR0NDIGZvciBQb3dlclBDIG9ubHkgZ2VuZXJhdGVzIHVub3JkZXJlZAogKiBjb21wYXJlcyAoc2NhbGFyIGFuZCB2ZWN0b3IpLgogKiBUZWNobmljYWxseSBfX21tX2NvbWllcV9zcyBldCBhbCBzaG91bGQgYmUgdXNpbmcgdGhlIG9yZGVyZWQKICogY29tcGFyZSBhbmQgc2lnbmFsIGZvciBRTmFOcy4KICogVGhlIF9fbW1fdWNvbWllcV9zZCBldCBhbGwgc2hvdWxkIGJlIE9LLCBhcyBpcy4KICovCmV4dGVybiBfX2lubGluZSBpbnQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV91Y29taWVxX3NzIChfX20xMjggX19BLCBfX20xMjggX19CKQp7CiAgcmV0dXJuIChfX0FbMF0gPT0gX19CWzBdKTsKfQoKZXh0ZXJuIF9faW5saW5lIGludCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX3Vjb21pbHRfc3MgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCnsKICByZXR1cm4gKF9fQVswXSA8IF9fQlswXSk7Cn0KCmV4dGVybiBfX2lubGluZSBpbnQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV91Y29taWxlX3NzIChfX20xMjggX19BLCBfX20xMjggX19CKQp7CiAgcmV0dXJuIChfX0FbMF0gPD0gX19CWzBdKTsKfQoKZXh0ZXJuIF9faW5saW5lIGludCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX3Vjb21pZ3Rfc3MgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCnsKICByZXR1cm4gKF9fQVswXSA+IF9fQlswXSk7Cn0KCmV4dGVybiBfX2lubGluZSBpbnQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV91Y29taWdlX3NzIChfX20xMjggX19BLCBfX20xMjggX19CKQp7CiAgcmV0dXJuIChfX0FbMF0gPj0gX19CWzBdKTsKfQoKZXh0ZXJuIF9faW5saW5lIGludCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX3Vjb21pbmVxX3NzIChfX20xMjggX19BLCBfX20xMjggX19CKQp7CiAgcmV0dXJuIChfX0FbMF0gIT0gX19CWzBdKTsKfQoKZXh0ZXJuIF9faW5saW5lIGZsb2F0IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fY3Z0c3NfZjMyIChfX20xMjggX19BKQp7CiAgcmV0dXJuICgoX192NHNmKV9fQSlbMF07Cn0KCi8qIENvbnZlcnQgdGhlIGxvd2VyIFNQRlAgdmFsdWUgdG8gYSAzMi1iaXQgaW50ZWdlciBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQKICAgcm91bmRpbmcgbW9kZS4gICovCmV4dGVybiBfX2lubGluZSBpbnQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9jdnRzc19zaTMyIChfX20xMjggX19BKQp7CiAgX19tNjQgcmVzID0gMDsKI2lmZGVmIF9BUkNIX1BXUjgKICBkb3VibGUgZHRtcDsKICBfX2FzbV9fKAojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICAgICAgInh4c2xkd2kgJXgwLCV4MCwleDAsMztcbiIKI2VuZGlmCiAgICAgICJ4c2N2c3BkcCAleDIsJXgwO1xuIgogICAgICAiZmN0aXcgICUyLCUyO1xuIgogICAgICAibWZ2c3JkICAlMSwleDI7XG4iCiAgICAgIDogIit3YSIgKF9fQSksCiAgICAgICAgIj1yIiAocmVzKSwKICAgICAgICAiPWYiIChkdG1wKQogICAgICA6ICk7CiNlbHNlCiAgcmVzID0gX19idWlsdGluX3JpbnQoX19BWzBdKTsKI2VuZGlmCiAgcmV0dXJuIChyZXMpOwp9CgpleHRlcm4gX19pbmxpbmUgaW50IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fY3Z0X3NzMnNpIChfX20xMjggX19BKQp7CiAgcmV0dXJuIF9tbV9jdnRzc19zaTMyIChfX0EpOwp9CgovKiBDb252ZXJ0IHRoZSBsb3dlciBTUEZQIHZhbHVlIHRvIGEgMzItYml0IGludGVnZXIgYWNjb3JkaW5nIHRvIHRoZQogICBjdXJyZW50IHJvdW5kaW5nIG1vZGUuICAqLwoKLyogSW50ZWwgaW50cmluc2ljLiAgKi8KZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2N2dHNzX3NpNjQgKF9fbTEyOCBfX0EpCnsKICBfX202NCByZXMgPSAwOwojaWZkZWYgX0FSQ0hfUFdSOAogIGRvdWJsZSBkdG1wOwogIF9fYXNtX18oCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogICAgICAieHhzbGR3aSAleDAsJXgwLCV4MCwzO1xuIgojZW5kaWYKICAgICAgInhzY3ZzcGRwICV4MiwleDA7XG4iCiAgICAgICJmY3RpZCAgJTIsJTI7XG4iCiAgICAgICJtZnZzcmQgICUxLCV4MjtcbiIKICAgICAgOiAiK3dhIiAoX19BKSwKICAgICAgICAiPXIiIChyZXMpLAogICAgICAgICI9ZiIgKGR0bXApCiAgICAgIDogKTsKI2Vsc2UKICByZXMgPSBfX2J1aWx0aW5fbGxyaW50KF9fQVswXSk7CiNlbmRpZgogIHJldHVybiAocmVzKTsKfQoKLyogTWljcm9zb2Z0IGludHJpbnNpYy4gICovCmV4dGVybiBfX2lubGluZSBsb25nIGxvbmcgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9jdnRzc19zaTY0eCAoX19tMTI4IF9fQSkKewogIHJldHVybiBfbW1fY3Z0c3Nfc2k2NCAoKF9fdjRzZikgX19BKTsKfQoKLyogQ29uc3RhbnRzIGZvciB1c2Ugd2l0aCBfbW1fcHJlZmV0Y2guICAqLwplbnVtIF9tbV9oaW50CnsKICAvKiBfTU1fSElOVF9FVCBpcyBfTU1fSElOVF9UIHdpdGggc2V0IDNyZCBiaXQuICAqLwogIF9NTV9ISU5UX0VUMCA9IDcsCiAgX01NX0hJTlRfRVQxID0gNiwKICBfTU1fSElOVF9UMCA9IDMsCiAgX01NX0hJTlRfVDEgPSAyLAogIF9NTV9ISU5UX1QyID0gMSwKICBfTU1fSElOVF9OVEEgPSAwCn07CgovKiBMb2FkcyBvbmUgY2FjaGUgbGluZSBmcm9tIGFkZHJlc3MgUCB0byBhIGxvY2F0aW9uICJjbG9zZXIiIHRvIHRoZQogICBwcm9jZXNzb3IuICBUaGUgc2VsZWN0b3IgSSBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgcHJlZmV0Y2ggb3BlcmF0aW9uLiAgKi8KZXh0ZXJuIF9faW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9wcmVmZXRjaCAoY29uc3Qgdm9pZCAqX19QLCBlbnVtIF9tbV9oaW50IF9fSSkKewogIC8qIEN1cnJlbnQgUG93ZXJQQyB3aWxsIGlnbm9yZXMgdGhlIGhpbnQgcGFyYW1ldGVycy4gICovCiAgX19idWlsdGluX3ByZWZldGNoIChfX1ApOwp9CgovKiBDb252ZXJ0IHRoZSB0d28gbG93ZXIgU1BGUCB2YWx1ZXMgdG8gMzItYml0IGludGVnZXJzIGFjY29yZGluZyB0byB0aGUKICAgY3VycmVudCByb3VuZGluZyBtb2RlLiAgUmV0dXJuIHRoZSBpbnRlZ2VycyBpbiBwYWNrZWQgZm9ybS4gICovCmV4dGVybiBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2N2dHBzX3BpMzIgKF9fbTEyOCBfX0EpCnsKICAvKiBTcGxhdCB0d28gbG93ZXIgU1BGUCB2YWx1ZXMgdG8gYm90aCBoYWx2ZXMuICAqLwogIF9fdjRzZiB0ZW1wLCByb3VuZGVkOwogIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyByZXN1bHQ7CgogIC8qIFNwbGF0IHR3byBsb3dlciBTUEZQIHZhbHVlcyB0byBib3RoIGhhbHZlcy4gICovCiAgdGVtcCA9IChfX3Y0c2YpIHZlY19zcGxhdCAoKF9fdmVjdG9yIGxvbmcgbG9uZylfX0EsIDApOwogIHJvdW5kZWQgPSB2ZWNfcmludCh0ZW1wKTsKICByZXN1bHQgPSAoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKSB2ZWNfY3RzIChyb3VuZGVkLCAwKTsKCiAgcmV0dXJuIChfX202NCkgKChfX3ZlY3RvciBsb25nIGxvbmcpIHJlc3VsdClbMF07Cn0KCmV4dGVybiBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2N2dF9wczJwaSAoX19tMTI4IF9fQSkKewogIHJldHVybiBfbW1fY3Z0cHNfcGkzMiAoX19BKTsKfQoKLyogVHJ1bmNhdGUgdGhlIGxvd2VyIFNQRlAgdmFsdWUgdG8gYSAzMi1iaXQgaW50ZWdlci4gICovCmV4dGVybiBfX2lubGluZSBpbnQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9jdnR0c3Nfc2kzMiAoX19tMTI4IF9fQSkKewogIC8qIEV4dHJhY3QgdGhlIGxvd2VyIGZsb2F0IGVsZW1lbnQuICAqLwogIGZsb2F0IHRlbXAgPSBfX0FbMF07CiAgLyogdHJ1bmNhdGUgdG8gMzItYml0IGludGVnZXIgYW5kIHJldHVybi4gICovCiAgcmV0dXJuIHRlbXA7Cn0KCmV4dGVybiBfX2lubGluZSBpbnQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9jdnR0X3NzMnNpIChfX20xMjggX19BKQp7CiAgcmV0dXJuIF9tbV9jdnR0c3Nfc2kzMiAoX19BKTsKfQoKLyogSW50ZWwgaW50cmluc2ljLiAgKi8KZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2N2dHRzc19zaTY0IChfX20xMjggX19BKQp7CiAgLyogRXh0cmFjdCB0aGUgbG93ZXIgZmxvYXQgZWxlbWVudC4gICovCiAgZmxvYXQgdGVtcCA9IF9fQVswXTsKICAvKiB0cnVuY2F0ZSB0byAzMi1iaXQgaW50ZWdlciBhbmQgcmV0dXJuLiAgKi8KICByZXR1cm4gdGVtcDsKfQoKLyogTWljcm9zb2Z0IGludHJpbnNpYy4gICovCmV4dGVybiBfX2lubGluZSBsb25nIGxvbmcgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9jdnR0c3Nfc2k2NHggKF9fbTEyOCBfX0EpCnsKICAvKiBFeHRyYWN0IHRoZSBsb3dlciBmbG9hdCBlbGVtZW50LiAgKi8KICBmbG9hdCB0ZW1wID0gX19BWzBdOwogIC8qIHRydW5jYXRlIHRvIDMyLWJpdCBpbnRlZ2VyIGFuZCByZXR1cm4uICAqLwogIHJldHVybiB0ZW1wOwp9CgovKiBUcnVuY2F0ZSB0aGUgdHdvIGxvd2VyIFNQRlAgdmFsdWVzIHRvIDMyLWJpdCBpbnRlZ2Vycy4gIFJldHVybiB0aGUKICAgaW50ZWdlcnMgaW4gcGFja2VkIGZvcm0uICAqLwpleHRlcm4gX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9jdnR0cHNfcGkzMiAoX19tMTI4IF9fQSkKewogIF9fdjRzZiB0ZW1wOwogIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyByZXN1bHQ7CgogIC8qIFNwbGF0IHR3byBsb3dlciBTUEZQIHZhbHVlcyB0byBib3RoIGhhbHZlcy4gICovCiAgdGVtcCA9IChfX3Y0c2YpIHZlY19zcGxhdCAoKF9fdmVjdG9yIGxvbmcgbG9uZylfX0EsIDApOwogIHJlc3VsdCA9IChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpIHZlY19jdHMgKHRlbXAsIDApOwoKICByZXR1cm4gKF9fbTY0KSAoKF9fdmVjdG9yIGxvbmcgbG9uZykgcmVzdWx0KVswXTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fY3Z0dF9wczJwaSAoX19tMTI4IF9fQSkKewogIHJldHVybiBfbW1fY3Z0dHBzX3BpMzIgKF9fQSk7Cn0KCi8qIENvbnZlcnQgQiB0byBhIFNQRlAgdmFsdWUgYW5kIGluc2VydCBpdCBhcyBlbGVtZW50IHplcm8gaW4gQS4gICovCmV4dGVybiBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9jdnRzaTMyX3NzIChfX20xMjggX19BLCBpbnQgX19CKQp7CiAgZmxvYXQgdGVtcCA9IF9fQjsKICBfX0FbMF0gPSB0ZW1wOwoKICByZXR1cm4gX19BOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fY3Z0X3NpMnNzIChfX20xMjggX19BLCBpbnQgX19CKQp7CiAgcmV0dXJuIF9tbV9jdnRzaTMyX3NzIChfX0EsIF9fQik7Cn0KCi8qIENvbnZlcnQgQiB0byBhIFNQRlAgdmFsdWUgYW5kIGluc2VydCBpdCBhcyBlbGVtZW50IHplcm8gaW4gQS4gICovCi8qIEludGVsIGludHJpbnNpYy4gICovCmV4dGVybiBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9jdnRzaTY0X3NzIChfX20xMjggX19BLCBsb25nIGxvbmcgX19CKQp7CiAgZmxvYXQgdGVtcCA9IF9fQjsKICBfX0FbMF0gPSB0ZW1wOwoKICByZXR1cm4gX19BOwp9CgovKiBNaWNyb3NvZnQgaW50cmluc2ljLiAgKi8KZXh0ZXJuIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2N2dHNpNjR4X3NzIChfX20xMjggX19BLCBsb25nIGxvbmcgX19CKQp7CiAgcmV0dXJuIF9tbV9jdnRzaTY0X3NzIChfX0EsIF9fQik7Cn0KCi8qIENvbnZlcnQgdGhlIHR3byAzMi1iaXQgdmFsdWVzIGluIEIgdG8gU1BGUCBmb3JtIGFuZCBpbnNlcnQgdGhlbQogICBhcyB0aGUgdHdvIGxvd2VyIGVsZW1lbnRzIGluIEEuICAqLwpleHRlcm4gX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fY3Z0cGkzMl9wcyAoX19tMTI4ICAgICAgICBfX0EsIF9fbTY0ICAgICAgICBfX0IpCnsKICBfX3ZlY3RvciBzaWduZWQgaW50IHZtMTsKICBfX3ZlY3RvciBmbG9hdCB2ZjE7CgogIHZtMSA9IChfX3ZlY3RvciBzaWduZWQgaW50KSAoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKSB7X19CLCBfX0J9OwogIHZmMSA9IChfX3ZlY3RvciBmbG9hdCkgdmVjX2N0ZiAodm0xLCAwKTsKCiAgcmV0dXJuICgoX19tMTI4KSAoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKQogICAgeyAoKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyl2ZjEpIFswXSwKCSgoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fQSkgWzFdfSk7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9jdnRfcGkycHMgKF9fbTEyOCBfX0EsIF9fbTY0IF9fQikKewogIHJldHVybiBfbW1fY3Z0cGkzMl9wcyAoX19BLCBfX0IpOwp9CgovKiBDb252ZXJ0IHRoZSBmb3VyIHNpZ25lZCAxNi1iaXQgdmFsdWVzIGluIEEgdG8gU1BGUCBmb3JtLiAgKi8KZXh0ZXJuIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2N2dHBpMTZfcHMgKF9fbTY0IF9fQSkKewogIF9fdmVjdG9yIHNpZ25lZCBzaG9ydCB2czg7CiAgX192ZWN0b3Igc2lnbmVkIGludCB2aTQ7CiAgX192ZWN0b3IgZmxvYXQgdmYxOwoKICB2czggPSAoX192ZWN0b3Igc2lnbmVkIHNob3J0KSAoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKSB7IF9fQSwgX19BIH07CiAgdmk0ID0gdmVjX3Z1cGtsc2ggKHZzOCk7CiAgdmYxID0gKF9fdmVjdG9yIGZsb2F0KSB2ZWNfY3RmICh2aTQsIDApOwoKICByZXR1cm4gKF9fbTEyOCkgdmYxOwp9CgovKiBDb252ZXJ0IHRoZSBmb3VyIHVuc2lnbmVkIDE2LWJpdCB2YWx1ZXMgaW4gQSB0byBTUEZQIGZvcm0uICAqLwpleHRlcm4gX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fY3Z0cHUxNl9wcyAoX19tNjQgX19BKQp7CiAgY29uc3QgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgemVybyA9CiAgICB7IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAgfTsKICBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCB2czg7CiAgX192ZWN0b3IgdW5zaWduZWQgaW50IHZpNDsKICBfX3ZlY3RvciBmbG9hdCB2ZjE7CgogIHZzOCA9IChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCkgKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZykgeyBfX0EsIF9fQSB9OwogIHZpNCA9IChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpIHZlY19tZXJnZWwKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodnM4LCB6ZXJvKTsKI2Vsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh6ZXJvLCB2czgpOwojZW5kaWYKICB2ZjEgPSAoX192ZWN0b3IgZmxvYXQpIHZlY19jdGYgKHZpNCwgMCk7CgogIHJldHVybiAoX19tMTI4KSB2ZjE7Cn0KCi8qIENvbnZlcnQgdGhlIGxvdyBmb3VyIHNpZ25lZCA4LWJpdCB2YWx1ZXMgaW4gQSB0byBTUEZQIGZvcm0uICAqLwpleHRlcm4gX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fY3Z0cGk4X3BzIChfX202NCBfX0EpCnsKICBfX3ZlY3RvciBzaWduZWQgY2hhciB2YzE2OwogIF9fdmVjdG9yIHNpZ25lZCBzaG9ydCB2czg7CiAgX192ZWN0b3Igc2lnbmVkIGludCB2aTQ7CiAgX192ZWN0b3IgZmxvYXQgdmYxOwoKICB2YzE2ID0gKF9fdmVjdG9yIHNpZ25lZCBjaGFyKSAoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKSB7IF9fQSwgX19BIH07CiAgdnM4ID0gdmVjX3Z1cGtoc2IgKHZjMTYpOwogIHZpNCA9IHZlY192dXBraHNoICh2czgpOwogIHZmMSA9IChfX3ZlY3RvciBmbG9hdCkgdmVjX2N0ZiAodmk0LCAwKTsKCiAgcmV0dXJuIChfX20xMjgpIHZmMTsKfQoKLyogQ29udmVydCB0aGUgbG93IGZvdXIgdW5zaWduZWQgOC1iaXQgdmFsdWVzIGluIEEgdG8gU1BGUCBmb3JtLiAgKi8KZXh0ZXJuIF9faW5saW5lICBfX20xMjggIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQoKX21tX2N2dHB1OF9wcyAoX19tNjQgIF9fQSkKewogIGNvbnN0IF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgemVybyA9CiAgICB7IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAgfTsKICBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIHZjMTY7CiAgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgdnM4OwogIF9fdmVjdG9yIHVuc2lnbmVkIGludCB2aTQ7CiAgX192ZWN0b3IgZmxvYXQgdmYxOwoKICB2YzE2ID0gKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpIChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpIHsgX19BLCBfX0EgfTsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgdnM4ID0gKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KSB2ZWNfbWVyZ2VsICh2YzE2LCB6ZXJvKTsKICB2aTQgPSAoX192ZWN0b3IgdW5zaWduZWQgaW50KSB2ZWNfbWVyZ2VoICh2czgsCgkJCQkJICAgIChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCkgemVybyk7CiNlbHNlCiAgdnM4ID0gKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KSB2ZWNfbWVyZ2VsICh6ZXJvLCB2YzE2KTsKICB2aTQgPSAoX192ZWN0b3IgdW5zaWduZWQgaW50KSB2ZWNfbWVyZ2VoICgoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpIHplcm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnM4KTsKI2VuZGlmCiAgdmYxID0gKF9fdmVjdG9yIGZsb2F0KSB2ZWNfY3RmICh2aTQsIDApOwoKICByZXR1cm4gKF9fbTEyOCkgdmYxOwp9CgovKiBDb252ZXJ0IHRoZSBmb3VyIHNpZ25lZCAzMi1iaXQgdmFsdWVzIGluIEEgYW5kIEIgdG8gU1BGUCBmb3JtLiAgKi8KZXh0ZXJuIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2N2dHBpMzJ4Ml9wcyAoX19tNjQgX19BLCBfX202NCBfX0IpCnsKICBfX3ZlY3RvciBzaWduZWQgaW50IHZpNDsKICBfX3ZlY3RvciBmbG9hdCB2ZjQ7CgogIHZpNCA9IChfX3ZlY3RvciBzaWduZWQgaW50KSAoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKSB7IF9fQSwgX19CIH07CiAgdmY0ID0gKF9fdmVjdG9yIGZsb2F0KSB2ZWNfY3RmICh2aTQsIDApOwogIHJldHVybiAoX19tMTI4KSB2ZjQ7Cn0KCi8qIENvbnZlcnQgdGhlIGZvdXIgU1BGUCB2YWx1ZXMgaW4gQSB0byBmb3VyIHNpZ25lZCAxNi1iaXQgaW50ZWdlcnMuICAqLwpleHRlcm4gX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9jdnRwc19waTE2IChfX20xMjggX19BKQp7CiAgX192NHNmIHJvdW5kZWQ7CiAgX192ZWN0b3Igc2lnbmVkIGludCB0ZW1wOwogIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyByZXN1bHQ7CgogIHJvdW5kZWQgPSB2ZWNfcmludChfX0EpOwogIHRlbXAgPSB2ZWNfY3RzIChyb3VuZGVkLCAwKTsKICByZXN1bHQgPSAoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKSB2ZWNfcGFjayAodGVtcCwgdGVtcCk7CgogIHJldHVybiAoX19tNjQpICgoX192ZWN0b3IgbG9uZyBsb25nKSByZXN1bHQpWzBdOwp9CgovKiBDb252ZXJ0IHRoZSBmb3VyIFNQRlAgdmFsdWVzIGluIEEgdG8gZm91ciBzaWduZWQgOC1iaXQgaW50ZWdlcnMuICAqLwpleHRlcm4gX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9jdnRwc19waTggKF9fbTEyOCBfX0EpCnsKICBfX3Y0c2Ygcm91bmRlZDsKICBfX3ZlY3RvciBzaWduZWQgaW50IHRtcF9pOwogIHN0YXRpYyBjb25zdCBfX3ZlY3RvciBzaWduZWQgaW50IHplcm8gPSB7MCwgMCwgMCwgMH07CiAgX192ZWN0b3Igc2lnbmVkIHNob3J0IHRtcF9zOwogIF9fdmVjdG9yIHNpZ25lZCBjaGFyIHJlc192OwoKICByb3VuZGVkID0gdmVjX3JpbnQoX19BKTsKICB0bXBfaSA9IHZlY19jdHMgKHJvdW5kZWQsIDApOwogIHRtcF9zID0gdmVjX3BhY2sgKHRtcF9pLCB6ZXJvKTsKICByZXNfdiA9IHZlY19wYWNrICh0bXBfcywgdG1wX3MpOwogIHJldHVybiAoX19tNjQpICgoX192ZWN0b3IgbG9uZyBsb25nKSByZXNfdilbMF07Cn0KCi8qIFNlbGVjdHMgZm91ciBzcGVjaWZpYyBTUEZQIHZhbHVlcyBmcm9tIEEgYW5kIEIgYmFzZWQgb24gTUFTSy4gICovCmV4dGVybiBfX2lubGluZSAgX19tMTI4ICBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKCl9tbV9zaHVmZmxlX3BzIChfX20xMjggIF9fQSwgX19tMTI4ICBfX0IsIGludCBjb25zdCBfX21hc2spCnsKICB1bnNpZ25lZCBsb25nIGVsZW1lbnRfc2VsZWN0b3JfMTAgPSBfX21hc2sgJiAweDAzOwogIHVuc2lnbmVkIGxvbmcgZWxlbWVudF9zZWxlY3Rvcl8zMiA9IChfX21hc2sgPj4gMikgJiAweDAzOwogIHVuc2lnbmVkIGxvbmcgZWxlbWVudF9zZWxlY3Rvcl81NCA9IChfX21hc2sgPj4gNCkgJiAweDAzOwogIHVuc2lnbmVkIGxvbmcgZWxlbWVudF9zZWxlY3Rvcl83NiA9IChfX21hc2sgPj4gNikgJiAweDAzOwogIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgcGVybXV0ZV9zZWxlY3RvcnNbNF0gPQogICAgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICAgICAgMHgwMzAyMDEwMCwgMHgwNzA2MDUwNCwgMHgwQjBBMDkwOCwgMHgwRjBFMEQwQwojZWxzZQogICAgICAweDAwMDEwMjAzLCAweDA0MDUwNjA3LCAweDA4MDkwQTBCLCAweDBDMEQwRTBGCiNlbmRpZgogICAgfTsKICBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgdDsKCiAgdFswXSA9IHBlcm11dGVfc2VsZWN0b3JzW2VsZW1lbnRfc2VsZWN0b3JfMTBdOwogIHRbMV0gPSBwZXJtdXRlX3NlbGVjdG9yc1tlbGVtZW50X3NlbGVjdG9yXzMyXTsKICB0WzJdID0gcGVybXV0ZV9zZWxlY3RvcnNbZWxlbWVudF9zZWxlY3Rvcl81NF0gKyAweDEwMTAxMDEwOwogIHRbM10gPSBwZXJtdXRlX3NlbGVjdG9yc1tlbGVtZW50X3NlbGVjdG9yXzc2XSArIDB4MTAxMDEwMTA7CiAgcmV0dXJuIHZlY19wZXJtICgoX192NHNmKSBfX0EsIChfX3Y0c2YpX19CLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcil0KTsKfQoKLyogU2VsZWN0cyBhbmQgaW50ZXJsZWF2ZXMgdGhlIHVwcGVyIHR3byBTUEZQIHZhbHVlcyBmcm9tIEEgYW5kIEIuICAqLwpleHRlcm4gX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fdW5wYWNraGlfcHMgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCnsKICByZXR1cm4gKF9fbTEyOCkgdmVjX3ZtcmdsdyAoKF9fdjRzZikgX19BLCAoX192NHNmKV9fQik7Cn0KCi8qIFNlbGVjdHMgYW5kIGludGVybGVhdmVzIHRoZSBsb3dlciB0d28gU1BGUCB2YWx1ZXMgZnJvbSBBIGFuZCBCLiAgKi8KZXh0ZXJuIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX3VucGFja2xvX3BzIChfX20xMjggX19BLCBfX20xMjggX19CKQp7CiAgcmV0dXJuIChfX20xMjgpIHZlY192bXJnaHcgKChfX3Y0c2YpIF9fQSwgKF9fdjRzZilfX0IpOwp9CgovKiBTZXRzIHRoZSB1cHBlciB0d28gU1BGUCB2YWx1ZXMgd2l0aCA2NC1iaXRzIG9mIGRhdGEgbG9hZGVkIGZyb20gUDsKICAgdGhlIGxvd2VyIHR3byB2YWx1ZXMgYXJlIHBhc3NlZCB0aHJvdWdoIGZyb20gQS4gICovCmV4dGVybiBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9sb2FkaF9waSAoX19tMTI4IF9fQSwgX19tNjQgY29uc3QgKl9fUCkKewogIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EgPSAoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fQTsKICBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19wID0gdmVjX3NwbGF0cygqX19QKTsKICBfX2EgWzFdID0gX19wIFsxXTsKCiAgcmV0dXJuIChfX20xMjgpX19hOwp9CgovKiBTdG9yZXMgdGhlIHVwcGVyIHR3byBTUEZQIHZhbHVlcyBvZiBBIGludG8gUC4gICovCmV4dGVybiBfX2lubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fc3RvcmVoX3BpIChfX202NCAqX19QLCBfX20xMjggX19BKQp7CiAgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSA9IChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpIF9fQTsKCiAgKl9fUCA9IF9fYVsxXTsKfQoKLyogTW92ZXMgdGhlIHVwcGVyIHR3byB2YWx1ZXMgb2YgQiBpbnRvIHRoZSBsb3dlciB0d28gdmFsdWVzIG9mIEEuICAqLwpleHRlcm4gX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fbW92ZWhsX3BzIChfX20xMjggX19BLCBfX20xMjggX19CKQp7CiAgcmV0dXJuIChfX20xMjgpIHZlY19tZXJnZWwgKChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19CLAoJCQkgICAgICAoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fQSk7Cn0KCi8qIE1vdmVzIHRoZSBsb3dlciB0d28gdmFsdWVzIG9mIEIgaW50byB0aGUgdXBwZXIgdHdvIHZhbHVlcyBvZiBBLiAgKi8KZXh0ZXJuIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX21vdmVsaF9wcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQikKewogIHJldHVybiAoX19tMTI4KSB2ZWNfbWVyZ2VoICgoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fQSwKCQkJICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX0IpOwp9CgovKiBTZXRzIHRoZSBsb3dlciB0d28gU1BGUCB2YWx1ZXMgd2l0aCA2NC1iaXRzIG9mIGRhdGEgbG9hZGVkIGZyb20gUDsKICAgdGhlIHVwcGVyIHR3byB2YWx1ZXMgYXJlIHBhc3NlZCB0aHJvdWdoIGZyb20gQS4gICovCmV4dGVybiBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9sb2FkbF9waSAoX19tMTI4IF9fQSwgX19tNjQgY29uc3QgKl9fUCkKewogIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EgPSAoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fQTsKICBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19wID0gdmVjX3NwbGF0cygqX19QKTsKICBfX2EgWzBdID0gX19wIFswXTsKCiAgcmV0dXJuIChfX20xMjgpX19hOwp9CgovKiBTdG9yZXMgdGhlIGxvd2VyIHR3byBTUEZQIHZhbHVlcyBvZiBBIGludG8gUC4gICovCmV4dGVybiBfX2lubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fc3RvcmVsX3BpIChfX202NCAqX19QLCBfX20xMjggX19BKQp7CiAgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSA9IChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpIF9fQTsKCiAgKl9fUCA9IF9fYVswXTsKfQoKI2lmZGVmIF9BUkNIX1BXUjgKLyogSW50cmluc2ljIGZ1bmN0aW9ucyB0aGF0IHJlcXVpcmUgUG93ZXJJU0EgMi4wNyBtaW5pbXVtLiAgKi8KCi8qIENyZWF0ZXMgYSA0LWJpdCBtYXNrIGZyb20gdGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0cyBvZiB0aGUgU1BGUCB2YWx1ZXMuICAqLwpleHRlcm4gX19pbmxpbmUgaW50IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fbW92ZW1hc2tfcHMgKF9fbTEyOCAgX19BKQp7CiAgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIHJlc3VsdDsKICBzdGF0aWMgY29uc3QgX192ZWN0b3IgdW5zaWduZWQgaW50IHBlcm1fbWFzayA9CiAgICB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwoJMHgwMDIwNDA2MCwgMHg4MDgwODA4MCwgMHg4MDgwODA4MCwgMHg4MDgwODA4MAojZWxzZQogICAgICAweDgwODA4MDgwLCAweDgwODA4MDgwLCAweDgwODA4MDgwLCAweDAwMjA0MDYwCiNlbmRpZgogICAgfTsKCiAgcmVzdWx0ID0gKChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpCgkgICAgdmVjX3ZicGVybXEgKChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKSBfX0EsCgkJCSAoX192ZWN0b3IgdW5zaWduZWQgY2hhcikgcGVybV9tYXNrKSk7CgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gcmVzdWx0WzFdOwojZWxzZQogIHJldHVybiByZXN1bHRbMF07CiNlbmRpZgp9CiNlbmRpZiAvKiBfQVJDSF9QV1I4ICovCgovKiBDcmVhdGUgYSB2ZWN0b3Igd2l0aCBhbGwgZm91ciBlbGVtZW50cyBlcXVhbCB0byAqUC4gICovCmV4dGVybiBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9sb2FkMV9wcyAoZmxvYXQgY29uc3QgKl9fUCkKewogIHJldHVybiBfbW1fc2V0MV9wcyAoKl9fUCk7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9sb2FkX3BzMSAoZmxvYXQgY29uc3QgKl9fUCkKewogIHJldHVybiBfbW1fbG9hZDFfcHMgKF9fUCk7Cn0KCi8qIEV4dHJhY3RzIG9uZSBvZiB0aGUgZm91ciB3b3JkcyBvZiBBLiAgVGhlIHNlbGVjdG9yIE4gbXVzdCBiZSBpbW1lZGlhdGUuICAqLwpleHRlcm4gX19pbmxpbmUgaW50IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fZXh0cmFjdF9waTE2IChfX202NCBjb25zdCBfX0EsIGludCBjb25zdCBfX04pCnsKICB1bnNpZ25lZCBpbnQgc2hpZnRyID0gX19OICYgMzsKI2lmZGVmIF9fQklHX0VORElBTl9fCiAgc2hpZnRyID0gMyAtIHNoaWZ0cjsKI2VuZGlmCgogIHJldHVybiAoKF9fQSA+PiAoc2hpZnRyICogMTYpKSAmIDB4ZmZmZik7Cn0KCmV4dGVybiBfX2lubGluZSBpbnQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tX3BleHRydyAoX19tNjQgY29uc3QgX19BLCBpbnQgY29uc3QgX19OKQp7CiAgcmV0dXJuIF9tbV9leHRyYWN0X3BpMTYgKF9fQSwgX19OKTsKfQoKLyogSW5zZXJ0cyB3b3JkIEQgaW50byBvbmUgb2YgZm91ciB3b3JkcyBvZiBBLiAgVGhlIHNlbGVjdG9yIE4gbXVzdCBiZQogICBpbW1lZGlhdGUuICAqLwpleHRlcm4gX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9pbnNlcnRfcGkxNiAoX19tNjQgY29uc3QgX19BLCBpbnQgY29uc3QgX19ELCBpbnQgY29uc3QgX19OKQp7CiAgY29uc3QgaW50IHNoaWZ0bCA9IChfX04gJiAzKSAqIDE2OwogIGNvbnN0IF9fbTY0IHNoaWZ0RCA9IChjb25zdCBfX202NCkgX19EIDw8IHNoaWZ0bDsKICBjb25zdCBfX202NCBtYXNrID0gMHhmZmZmVUwgPDwgc2hpZnRsOwogIF9fbTY0IHJlc3VsdCA9IChfX0EgJiAofm1hc2spKSB8IChzaGlmdEQgJiBtYXNrKTsKCiAgcmV0dXJuIChyZXN1bHQpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tX3BpbnNydyAoX19tNjQgY29uc3QgX19BLCBpbnQgY29uc3QgX19ELCBpbnQgY29uc3QgX19OKQp7CiAgcmV0dXJuIF9tbV9pbnNlcnRfcGkxNiAoX19BLCBfX0QsIF9fTik7Cn0KCi8qIENvbXB1dGUgdGhlIGVsZW1lbnQtd2lzZSBtYXhpbXVtIG9mIHNpZ25lZCAxNi1iaXQgdmFsdWVzLiAgKi8KZXh0ZXJuIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQoKX21tX21heF9waTE2IChfX202NCBfX0EsIF9fbTY0IF9fQikKewojaWYgX0FSQ0hfUFdSOAogIF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBhLCBiLCByOwogIF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBjOwoKICBhID0gKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCl2ZWNfc3BsYXRzIChfX0EpOwogIGIgPSAoX192ZWN0b3Igc2lnbmVkIHNob3J0KXZlY19zcGxhdHMgKF9fQik7CiAgYyA9IChfX3ZlY3RvciBfX2Jvb2wgc2hvcnQpdmVjX2NtcGd0IChhLCBiKTsKICByID0gdmVjX3NlbCAoYiwgYSwgYyk7CiAgcmV0dXJuIChfX202NCkgKChfX3ZlY3RvciBsb25nIGxvbmcpIHIpWzBdOwojZWxzZQogIF9fbTY0X3VuaW9uIG0xLCBtMiwgcmVzOwoKICBtMS5hc19tNjQgPSBfX0E7CiAgbTIuYXNfbTY0ID0gX19COwoKICByZXMuYXNfc2hvcnRbMF0gPQogICAgICAobTEuYXNfc2hvcnRbMF0gPiBtMi5hc19zaG9ydFswXSkgPyBtMS5hc19zaG9ydFswXSA6IG0yLmFzX3Nob3J0WzBdOwogIHJlcy5hc19zaG9ydFsxXSA9CiAgICAgIChtMS5hc19zaG9ydFsxXSA+IG0yLmFzX3Nob3J0WzFdKSA/IG0xLmFzX3Nob3J0WzFdIDogbTIuYXNfc2hvcnRbMV07CiAgcmVzLmFzX3Nob3J0WzJdID0KICAgICAgKG0xLmFzX3Nob3J0WzJdID4gbTIuYXNfc2hvcnRbMl0pID8gbTEuYXNfc2hvcnRbMl0gOiBtMi5hc19zaG9ydFsyXTsKICByZXMuYXNfc2hvcnRbM10gPQogICAgICAobTEuYXNfc2hvcnRbM10gPiBtMi5hc19zaG9ydFszXSkgPyBtMS5hc19zaG9ydFszXSA6IG0yLmFzX3Nob3J0WzNdOwoKICByZXR1cm4gKF9fbTY0KSByZXMuYXNfbTY0OwojZW5kaWYKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbV9wbWF4c3cgKF9fbTY0IF9fQSwgX19tNjQgX19CKQp7CiAgcmV0dXJuIF9tbV9tYXhfcGkxNiAoX19BLCBfX0IpOwp9CgovKiBDb21wdXRlIHRoZSBlbGVtZW50LXdpc2UgbWF4aW11bSBvZiB1bnNpZ25lZCA4LWJpdCB2YWx1ZXMuICAqLwpleHRlcm4gX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9tYXhfcHU4IChfX202NCBfX0EsIF9fbTY0IF9fQikKewojaWYgX0FSQ0hfUFdSOAogIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgYSwgYiwgcjsKICBfX3ZlY3RvciBfX2Jvb2wgY2hhciBjOwoKICBhID0gKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpdmVjX3NwbGF0cyAoX19BKTsKICBiID0gKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpdmVjX3NwbGF0cyAoX19CKTsKICBjID0gKF9fdmVjdG9yIF9fYm9vbCBjaGFyKXZlY19jbXBndCAoYSwgYik7CiAgciA9IHZlY19zZWwgKGIsIGEsIGMpOwogIHJldHVybiAoX19tNjQpICgoX192ZWN0b3IgbG9uZyBsb25nKSByKVswXTsKI2Vsc2UKICBfX202NF91bmlvbiBtMSwgbTIsIHJlczsKICBsb25nIGk7CgogIG0xLmFzX202NCA9IF9fQTsKICBtMi5hc19tNjQgPSBfX0I7CgoKICBmb3IgKGkgPSAwOyBpIDwgODsgaSsrKQogIHJlcy5hc19jaGFyW2ldID0KICAgICAgKCh1bnNpZ25lZCBjaGFyKSBtMS5hc19jaGFyW2ldID4gKHVuc2lnbmVkIGNoYXIpIG0yLmFzX2NoYXJbaV0pID8KCSAgbTEuYXNfY2hhcltpXSA6IG0yLmFzX2NoYXJbaV07CgogIHJldHVybiAoX19tNjQpIHJlcy5hc19tNjQ7CiNlbmRpZgp9CgpleHRlcm4gX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tX3BtYXh1YiAoX19tNjQgX19BLCBfX202NCBfX0IpCnsKICByZXR1cm4gX21tX21heF9wdTggKF9fQSwgX19CKTsKfQoKLyogQ29tcHV0ZSB0aGUgZWxlbWVudC13aXNlIG1pbmltdW0gb2Ygc2lnbmVkIDE2LWJpdCB2YWx1ZXMuICAqLwpleHRlcm4gX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9taW5fcGkxNiAoX19tNjQgX19BLCBfX202NCBfX0IpCnsKI2lmIF9BUkNIX1BXUjgKICBfX3ZlY3RvciBzaWduZWQgc2hvcnQgYSwgYiwgcjsKICBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgYzsKCiAgYSA9IChfX3ZlY3RvciBzaWduZWQgc2hvcnQpdmVjX3NwbGF0cyAoX19BKTsKICBiID0gKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCl2ZWNfc3BsYXRzIChfX0IpOwogIGMgPSAoX192ZWN0b3IgX19ib29sIHNob3J0KXZlY19jbXBsdCAoYSwgYik7CiAgciA9IHZlY19zZWwgKGIsIGEsIGMpOwogIHJldHVybiAoX19tNjQpICgoX192ZWN0b3IgbG9uZyBsb25nKSByKVswXTsKI2Vsc2UKICBfX202NF91bmlvbiBtMSwgbTIsIHJlczsKCiAgbTEuYXNfbTY0ID0gX19BOwogIG0yLmFzX202NCA9IF9fQjsKCiAgcmVzLmFzX3Nob3J0WzBdID0KICAgICAgKG0xLmFzX3Nob3J0WzBdIDwgbTIuYXNfc2hvcnRbMF0pID8gbTEuYXNfc2hvcnRbMF0gOiBtMi5hc19zaG9ydFswXTsKICByZXMuYXNfc2hvcnRbMV0gPQogICAgICAobTEuYXNfc2hvcnRbMV0gPCBtMi5hc19zaG9ydFsxXSkgPyBtMS5hc19zaG9ydFsxXSA6IG0yLmFzX3Nob3J0WzFdOwogIHJlcy5hc19zaG9ydFsyXSA9CiAgICAgIChtMS5hc19zaG9ydFsyXSA8IG0yLmFzX3Nob3J0WzJdKSA/IG0xLmFzX3Nob3J0WzJdIDogbTIuYXNfc2hvcnRbMl07CiAgcmVzLmFzX3Nob3J0WzNdID0KICAgICAgKG0xLmFzX3Nob3J0WzNdIDwgbTIuYXNfc2hvcnRbM10pID8gbTEuYXNfc2hvcnRbM10gOiBtMi5hc19zaG9ydFszXTsKCiAgcmV0dXJuIChfX202NCkgcmVzLmFzX202NDsKI2VuZGlmCn0KCmV4dGVybiBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21fcG1pbnN3IChfX202NCBfX0EsIF9fbTY0IF9fQikKewogIHJldHVybiBfbW1fbWluX3BpMTYgKF9fQSwgX19CKTsKfQoKLyogQ29tcHV0ZSB0aGUgZWxlbWVudC13aXNlIG1pbmltdW0gb2YgdW5zaWduZWQgOC1iaXQgdmFsdWVzLiAgKi8KZXh0ZXJuIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fbWluX3B1OCAoX19tNjQgX19BLCBfX202NCBfX0IpCnsKI2lmIF9BUkNIX1BXUjgKICBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIGEsIGIsIHI7CiAgX192ZWN0b3IgX19ib29sIGNoYXIgYzsKCiAgYSA9IChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKXZlY19zcGxhdHMgKF9fQSk7CiAgYiA9IChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKXZlY19zcGxhdHMgKF9fQik7CiAgYyA9IChfX3ZlY3RvciBfX2Jvb2wgY2hhcil2ZWNfY21wbHQgKGEsIGIpOwogIHIgPSB2ZWNfc2VsIChiLCBhLCBjKTsKICByZXR1cm4gKF9fbTY0KSAoKF9fdmVjdG9yIGxvbmcgbG9uZykgcilbMF07CiNlbHNlCiAgX19tNjRfdW5pb24gbTEsIG0yLCByZXM7CiAgbG9uZyBpOwoKICBtMS5hc19tNjQgPSBfX0E7CiAgbTIuYXNfbTY0ID0gX19COwoKCiAgZm9yIChpID0gMDsgaSA8IDg7IGkrKykKICByZXMuYXNfY2hhcltpXSA9CiAgICAgICgodW5zaWduZWQgY2hhcikgbTEuYXNfY2hhcltpXSA8ICh1bnNpZ25lZCBjaGFyKSBtMi5hc19jaGFyW2ldKSA/CgkgIG0xLmFzX2NoYXJbaV0gOiBtMi5hc19jaGFyW2ldOwoKICByZXR1cm4gKF9fbTY0KSByZXMuYXNfbTY0OwojZW5kaWYKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbV9wbWludWIgKF9fbTY0IF9fQSwgX19tNjQgX19CKQp7CiAgcmV0dXJuIF9tbV9taW5fcHU4IChfX0EsIF9fQik7Cn0KCi8qIENyZWF0ZSBhbiA4LWJpdCBtYXNrIG9mIHRoZSBzaWducyBvZiA4LWJpdCB2YWx1ZXMuICAqLwpleHRlcm4gX19pbmxpbmUgaW50IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fbW92ZW1hc2tfcGk4IChfX202NCBfX0EpCnsKICB1bnNpZ25lZCBsb25nIGxvbmcgcCA9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDA4MTAxODIwMjgzMDM4VUw7IC8vIHBlcm11dGUgY29udHJvbCBmb3Igc2lnbiBiaXRzCiNlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAweDM4MzAyODIwMTgxMDA4MDBVTDsgLy8gcGVybXV0ZSBjb250cm9sIGZvciBzaWduIGJpdHMKI2VuZGlmCiAgcmV0dXJuIF9fYnVpbHRpbl9icGVybWQgKHAsIF9fQSk7Cn0KCmV4dGVybiBfX2lubGluZSBpbnQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tX3Btb3Ztc2tiIChfX202NCBfX0EpCnsKICByZXR1cm4gX21tX21vdmVtYXNrX3BpOCAoX19BKTsKfQoKLyogTXVsdGlwbHkgZm91ciB1bnNpZ25lZCAxNi1iaXQgdmFsdWVzIGluIEEgYnkgZm91ciB1bnNpZ25lZCAxNi1iaXQgdmFsdWVzCiAgIGluIEIgYW5kIHByb2R1Y2UgdGhlIGhpZ2ggMTYgYml0cyBvZiB0aGUgMzItYml0IHJlc3VsdHMuICAqLwpleHRlcm4gX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9tdWxoaV9wdTE2IChfX202NCBfX0EsIF9fbTY0IF9fQikKewogIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IGEsIGI7CiAgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgYzsKICBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgdzAsIHcxOwogIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgeGZvcm0xID0gewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICAgICAgMHgwMiwgMHgwMywgMHgxMiwgMHgxMywgIDB4MDYsIDB4MDcsIDB4MTYsIDB4MTcsCiAgICAgIDB4MEEsIDB4MEIsIDB4MUEsIDB4MUIsICAweDBFLCAweDBGLCAweDFFLCAweDFGCiNlbHNlCiAgICAgIDB4MDAsIDB4MDEsIDB4MTAsIDB4MTEsICAweDA0LCAweDA1LCAweDE0LCAweDE1LAogICAgICAweDAwLCAweDAxLCAweDEwLCAweDExLCAgMHgwNCwgMHgwNSwgMHgxNCwgMHgxNQojZW5kaWYKICAgIH07CgogIGEgPSAoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpdmVjX3NwbGF0cyAoX19BKTsKICBiID0gKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KXZlY19zcGxhdHMgKF9fQik7CgogIHcwID0gdmVjX3ZtdWxldWggKGEsIGIpOwogIHcxID0gdmVjX3ZtdWxvdWggKGEsIGIpOwogIGMgPSAoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpdmVjX3Blcm0gKHcwLCB3MSwgeGZvcm0xKTsKCiAgcmV0dXJuIChfX202NCkgKChfX3ZlY3RvciBsb25nIGxvbmcpIGMpWzBdOwp9CgpleHRlcm4gX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tX3BtdWxodXcgKF9fbTY0IF9fQSwgX19tNjQgX19CKQp7CiAgcmV0dXJuIF9tbV9tdWxoaV9wdTE2IChfX0EsIF9fQik7Cn0KCi8qIFJldHVybiBhIGNvbWJpbmF0aW9uIG9mIHRoZSBmb3VyIDE2LWJpdCB2YWx1ZXMgaW4gQS4gIFRoZSBzZWxlY3RvcgogICBtdXN0IGJlIGFuIGltbWVkaWF0ZS4gICovCmV4dGVybiBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX3NodWZmbGVfcGkxNiAoX19tNjQgX19BLCBpbnQgY29uc3QgX19OKQp7CiAgdW5zaWduZWQgbG9uZyBlbGVtZW50X3NlbGVjdG9yXzEwID0gX19OICYgMHgwMzsKICB1bnNpZ25lZCBsb25nIGVsZW1lbnRfc2VsZWN0b3JfMzIgPSAoX19OID4+IDIpICYgMHgwMzsKICB1bnNpZ25lZCBsb25nIGVsZW1lbnRfc2VsZWN0b3JfNTQgPSAoX19OID4+IDQpICYgMHgwMzsKICB1bnNpZ25lZCBsb25nIGVsZW1lbnRfc2VsZWN0b3JfNzYgPSAoX19OID4+IDYpICYgMHgwMzsKICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgcGVybXV0ZV9zZWxlY3RvcnNbNF0gPQogICAgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KCSAgICAgIDB4MDkwOCwgMHgwQjBBLCAweDBEMEMsIDB4MEYwRQojZWxzZQoJICAgICAgMHgwNjA3LCAweDA0MDUsIDB4MDIwMywgMHgwMDAxCiNlbmRpZgogICAgfTsKICBfX202NF91bmlvbiB0OwogIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBhLCBwLCByOwoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgdC5hc19zaG9ydFswXSA9IHBlcm11dGVfc2VsZWN0b3JzW2VsZW1lbnRfc2VsZWN0b3JfMTBdOwogIHQuYXNfc2hvcnRbMV0gPSBwZXJtdXRlX3NlbGVjdG9yc1tlbGVtZW50X3NlbGVjdG9yXzMyXTsKICB0LmFzX3Nob3J0WzJdID0gcGVybXV0ZV9zZWxlY3RvcnNbZWxlbWVudF9zZWxlY3Rvcl81NF07CiAgdC5hc19zaG9ydFszXSA9IHBlcm11dGVfc2VsZWN0b3JzW2VsZW1lbnRfc2VsZWN0b3JfNzZdOwojZWxzZQogIHQuYXNfc2hvcnRbM10gPSBwZXJtdXRlX3NlbGVjdG9yc1tlbGVtZW50X3NlbGVjdG9yXzEwXTsKICB0LmFzX3Nob3J0WzJdID0gcGVybXV0ZV9zZWxlY3RvcnNbZWxlbWVudF9zZWxlY3Rvcl8zMl07CiAgdC5hc19zaG9ydFsxXSA9IHBlcm11dGVfc2VsZWN0b3JzW2VsZW1lbnRfc2VsZWN0b3JfNTRdOwogIHQuYXNfc2hvcnRbMF0gPSBwZXJtdXRlX3NlbGVjdG9yc1tlbGVtZW50X3NlbGVjdG9yXzc2XTsKI2VuZGlmCiAgcCA9IHZlY19zcGxhdHMgKHQuYXNfbTY0KTsKICBhID0gdmVjX3NwbGF0cyAoX19BKTsKICByID0gdmVjX3Blcm0gKGEsIGEsIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKXApOwogIHJldHVybiAoX19tNjQpICgoX192ZWN0b3IgbG9uZyBsb25nKSByKVswXTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbV9wc2h1ZncgKF9fbTY0IF9fQSwgaW50IGNvbnN0IF9fTikKewogIHJldHVybiBfbW1fc2h1ZmZsZV9waTE2IChfX0EsIF9fTik7Cn0KCi8qIENvbmRpdGlvbmFsbHkgc3RvcmUgYnl0ZSBlbGVtZW50cyBvZiBBIGludG8gUC4gIFRoZSBoaWdoIGJpdCBvZiBlYWNoCiAgIGJ5dGUgaW4gdGhlIHNlbGVjdG9yIE4gZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBjb3JyZXNwb25kaW5nIGJ5dGUgZnJvbQogICBBIGlzIHN0b3JlZC4gICovCmV4dGVybiBfX2lubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fbWFza21vdmVfc2k2NCAoX19tNjQgX19BLCBfX202NCBfX04sIGNoYXIgKl9fUCkKewogIF9fbTY0IGhpYml0ID0gMHg4MDgwODA4MDgwODA4MDgwVUw7CiAgX19tNjQgbWFzaywgdG1wOwogIF9fbTY0ICpwID0gKF9fbTY0KilfX1A7CgogIHRtcCA9ICpwOwogIG1hc2sgPSBfbW1fY21wZXFfcGk4ICgoX19OICYgaGliaXQpLCBoaWJpdCk7CiAgdG1wID0gKHRtcCAmICh+bWFzaykpIHwgKF9fQSAmIG1hc2spOwogICpwID0gdG1wOwp9CgpleHRlcm4gX19pbmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21fbWFza21vdnEgKF9fbTY0IF9fQSwgX19tNjQgX19OLCBjaGFyICpfX1ApCnsKICBfbW1fbWFza21vdmVfc2k2NCAoX19BLCBfX04sIF9fUCk7Cn0KCi8qIENvbXB1dGUgdGhlIHJvdW5kZWQgYXZlcmFnZXMgb2YgdGhlIHVuc2lnbmVkIDgtYml0IHZhbHVlcyBpbiBBIGFuZCBCLiAgKi8KZXh0ZXJuIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fYXZnX3B1OCAoX19tNjQgX19BLCBfX202NCBfX0IpCnsKICBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIGEsIGIsIGM7CgogIGEgPSAoX192ZWN0b3IgdW5zaWduZWQgY2hhcil2ZWNfc3BsYXRzIChfX0EpOwogIGIgPSAoX192ZWN0b3IgdW5zaWduZWQgY2hhcil2ZWNfc3BsYXRzIChfX0IpOwogIGMgPSB2ZWNfYXZnIChhLCBiKTsKICByZXR1cm4gKF9fbTY0KSAoKF9fdmVjdG9yIGxvbmcgbG9uZykgYylbMF07Cn0KCmV4dGVybiBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21fcGF2Z2IgKF9fbTY0IF9fQSwgX19tNjQgX19CKQp7CiAgcmV0dXJuIF9tbV9hdmdfcHU4IChfX0EsIF9fQik7Cn0KCi8qIENvbXB1dGUgdGhlIHJvdW5kZWQgYXZlcmFnZXMgb2YgdGhlIHVuc2lnbmVkIDE2LWJpdCB2YWx1ZXMgaW4gQSBhbmQgQi4gICovCmV4dGVybiBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2F2Z19wdTE2IChfX202NCBfX0EsIF9fbTY0IF9fQikKewogIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IGEsIGIsIGM7CgogIGEgPSAoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpdmVjX3NwbGF0cyAoX19BKTsKICBiID0gKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KXZlY19zcGxhdHMgKF9fQik7CiAgYyA9IHZlY19hdmcgKGEsIGIpOwogIHJldHVybiAoX19tNjQpICgoX192ZWN0b3IgbG9uZyBsb25nKSBjKVswXTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbV9wYXZndyAoX19tNjQgX19BLCBfX202NCBfX0IpCnsKICByZXR1cm4gX21tX2F2Z19wdTE2IChfX0EsIF9fQik7Cn0KCi8qIENvbXB1dGUgdGhlIHN1bSBvZiB0aGUgYWJzb2x1dGUgZGlmZmVyZW5jZXMgb2YgdGhlIHVuc2lnbmVkIDgtYml0CiAgIHZhbHVlcyBpbiBBIGFuZCBCLiAgUmV0dXJuIHRoZSB2YWx1ZSBpbiB0aGUgbG93ZXIgMTYtYml0IHdvcmQ7IHRoZQogICB1cHBlciB3b3JkcyBhcmUgY2xlYXJlZC4gICovCmV4dGVybiBfX2lubGluZSAgICBfX202NCAgICBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX3NhZF9wdTggKF9fbTY0ICBfX0EsIF9fbTY0ICBfX0IpCnsKICBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIGEsIGI7CiAgX192ZWN0b3IgdW5zaWduZWQgY2hhciB2bWluLCB2bWF4LCB2YWJzZGlmZjsKICBfX3ZlY3RvciBzaWduZWQgaW50IHZzdW07CiAgY29uc3QgX192ZWN0b3IgdW5zaWduZWQgaW50IHplcm8gPQogICAgeyAwLCAwLCAwLCAwIH07CiAgX19tNjRfdW5pb24gcmVzdWx0ID0gezB9OwoKICBhID0gKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpIChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpIHsgMFVMLCBfX0EgfTsKICBiID0gKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpIChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpIHsgMFVMLCBfX0IgfTsKICB2bWluID0gdmVjX21pbiAoYSwgYik7CiAgdm1heCA9IHZlY19tYXggKGEsIGIpOwogIHZhYnNkaWZmID0gdmVjX3N1YiAodm1heCwgdm1pbik7CiAgLyogU3VtIGZvdXIgZ3JvdXBzIG9mIGJ5dGVzIGludG8gaW50ZWdlcnMuICAqLwogIHZzdW0gPSAoX192ZWN0b3Igc2lnbmVkIGludCkgdmVjX3N1bTRzICh2YWJzZGlmZiwgemVybyk7CiAgLyogU3VtIGFjcm9zcyBmb3VyIGludGVnZXJzIHdpdGggaW50ZWdlciByZXN1bHQuICAqLwogIHZzdW0gPSB2ZWNfc3VtcyAodnN1bSwgKF9fdmVjdG9yIHNpZ25lZCBpbnQpIHplcm8pOwogIC8qIFRoZSBzdW0gaXMgaW4gdGhlIHJpZ2h0IG1vc3QgMzItYml0cyBvZiB0aGUgdmVjdG9yIHJlc3VsdC4KICAgICBUcmFuc2ZlciB0byBhIEdQUiBhbmQgdHJ1bmNhdGUgdG8gMTYgYml0cy4gICovCiAgcmVzdWx0LmFzX3Nob3J0WzBdID0gdnN1bVszXTsKICByZXR1cm4gcmVzdWx0LmFzX202NDsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbV9wc2FkYncgKF9fbTY0IF9fQSwgX19tNjQgX19CKQp7CiAgcmV0dXJuIF9tbV9zYWRfcHU4IChfX0EsIF9fQik7Cn0KCi8qIFN0b3JlcyB0aGUgZGF0YSBpbiBBIHRvIHRoZSBhZGRyZXNzIFAgd2l0aG91dCBwb2xsdXRpbmcgdGhlIGNhY2hlcy4gICovCmV4dGVybiBfX2lubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fc3RyZWFtX3BpIChfX202NCAqX19QLCBfX202NCBfX0EpCnsKICAvKiBVc2UgdGhlIGRhdGEgY2FjaGUgYmxvY2sgdG91Y2ggZm9yIHN0b3JlIHRyYW5zaWVudC4gICovCiAgX19hc21fXyAoCiAgICAiCWRjYnRzdHQJMCwlMCIKICAgIDoKICAgIDogImIiIChfX1ApCiAgICA6ICJtZW1vcnkiCiAgKTsKICAqX19QID0gX19BOwp9CgovKiBMaWtld2lzZS4gIFRoZSBhZGRyZXNzIG11c3QgYmUgMTYtYnl0ZSBhbGlnbmVkLiAgKi8KZXh0ZXJuIF9faW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9zdHJlYW1fcHMgKGZsb2F0ICpfX1AsIF9fbTEyOCBfX0EpCnsKICAvKiBVc2UgdGhlIGRhdGEgY2FjaGUgYmxvY2sgdG91Y2ggZm9yIHN0b3JlIHRyYW5zaWVudC4gICovCiAgX19hc21fXyAoCiAgICAiCWRjYnRzdHQJMCwlMCIKICAgIDoKICAgIDogImIiIChfX1ApCiAgICA6ICJtZW1vcnkiCiAgKTsKICBfbW1fc3RvcmVfcHMgKF9fUCwgX19BKTsKfQoKLyogR3VhcmFudGVlcyB0aGF0IGV2ZXJ5IHByZWNlZGluZyBzdG9yZSBpcyBnbG9iYWxseSB2aXNpYmxlIGJlZm9yZQogICBhbnkgc3Vic2VxdWVudCBzdG9yZS4gICovCmV4dGVybiBfX2lubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fc2ZlbmNlICh2b2lkKQp7CiAgLyogR2VuZXJhdGUgYSBsaWdodCB3ZWlnaHQgc3luYy4gICovCiAgX19hdG9taWNfdGhyZWFkX2ZlbmNlIChfX0FUT01JQ19SRUxFQVNFKTsKfQoKLyogVGhlIGV4ZWN1dGlvbiBvZiB0aGUgbmV4dCBpbnN0cnVjdGlvbiBpcyBkZWxheWVkIGJ5IGFuIGltcGxlbWVudGF0aW9uCiAgIHNwZWNpZmljIGFtb3VudCBvZiB0aW1lLiAgVGhlIGluc3RydWN0aW9uIGRvZXMgbm90IG1vZGlmeSB0aGUKICAgYXJjaGl0ZWN0dXJhbCBzdGF0ZS4gIFRoaXMgaXMgYWZ0ZXIgdGhlIHBvcF9vcHRpb25zIHByYWdtYSBiZWNhdXNlCiAgIGl0IGRvZXMgbm90IHJlcXVpcmUgU1NFIHN1cHBvcnQgaW4gdGhlIHByb2Nlc3Nvci0tdGhlIGVuY29kaW5nIGlzIGEKICAgbm9wIG9uIHByb2Nlc3NvcnMgdGhhdCBkbyBub3Qgc3VwcG9ydCBpdC4gICovCmV4dGVybiBfX2lubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fcGF1c2UgKHZvaWQpCnsKICAvKiBUaGVyZSBpcyBubyBleGFjdCBtYXRjaCB3aXRoIHRoaXMgY29uc3RydWN0LCBidXQgdGhlIGZvbGxvd2luZyBpcwogICAgIGNsb3NlIHRvIHRoZSBkZXNpcmVkIGVmZmVjdC4gICovCiNpZiBfQVJDSF9QV1I4CiAgLyogT24gcG93ZXI4IGFuZCBsYXRlciBwcm9jZXNzb3JzIHdlIGNhbiBkZXBlbmQgb24gUHJvZ3JhbSBQcmlvcml0eQogICAgIChQUkkpIGFuZCBhc3NvY2lhdGVkICJ2ZXJ5IGxvdyIgUFBJIHNldHRpbmcuICBTaW5jZSB3ZSBkb24ndCBrbm93CiAgICAgd2hhdCBQUEkgdGhpcyB0aHJlYWQgaXMgcnVubmluZyBhdCB3ZTogMSkgc2F2ZSB0aGUgY3VycmVudCBQUkkKICAgICBmcm9tIHRoZSBQUFIgU1BSIGludG8gYSBsb2NhbCBHUlAsIDIpIHNldCB0aGUgUFJJIHRvICJ2ZXJ5IGxvdyoKICAgICB2aWEgdGhlIHNwZWNpYWwgb3IgMzEsMzEsMzEgZW5jb2RpbmcuIDMpIGlzc3VlIGFuICJpc3luYyIgdG8KICAgICBpbnN1cmUgdGhlIFBSSSBjaGFuZ2UgdGFrZXMgZWZmZWN0IGJlZm9yZSB3ZSBleGVjdXRlIGFueSBtb3JlCiAgICAgaW5zdHJ1Y3Rpb25zLgogICAgIE5vdyB3ZSBjYW4gZXhlY3V0ZSBhIGx3c3luYyAocmVsZWFzZSBiYXJyaWVyKSB3aGlsZSB3ZSBleGVjdXRlCiAgICAgdGhpcyB0aHJlYWQgYXQgInZlcnkgbG93IiBQUkkuICBGaW5hbGx5IHdlIHJlc3RvcmUgdGhlIG9yaWdpbmFsCiAgICAgUFJJIGFuZCBjb250aW51ZSBleGVjdXRpb24uICAqLwogIHVuc2lnbmVkIGxvbmcgX19QUFI7CgogIF9fYXNtX18gdm9sYXRpbGUgKAogICAgIgltZnBwcgklMDsiCiAgICAiICAgb3IgMzEsMzEsMzE7IgogICAgIiAgIGlzeW5jOyIKICAgICIgICBsd3N5bmM7IgogICAgIiAgIGlzeW5jOyIKICAgICIgICBtdHBwcgklMDsiCiAgICA6ICI9ciIgKF9fUFBSKQogICAgOgogICAgOiAibWVtb3J5IgogICk7CiNlbHNlCiAgLyogRm9yIG9sZGVyIHByb2Nlc3NvciB3aGVyZSB3ZSBtYXkgbm90IGV2ZW4gaGF2ZSBQcm9ncmFtIFByaW9yaXR5CiAgICAgY29udHJvbHMgd2UgY2FuIG9ubHkgZGVwZW5kIG9uIEhlYXZ5IFdlaWdodCBTeW5jLiAgKi8KICBfX2F0b21pY190aHJlYWRfZmVuY2UgKF9fQVRPTUlDX1NFUV9DU1QpOwojZW5kaWYKfQoKLyogVHJhbnNwb3NlIHRoZSA0eDQgbWF0cml4IGNvbXBvc2VkIG9mIHJvd1swLTNdLiAgKi8KI2RlZmluZSBfTU1fVFJBTlNQT1NFNF9QUyhyb3cwLCByb3cxLCByb3cyLCByb3czKQkJCVwKZG8gewkJCQkJCQkJCVwKICBfX3Y0c2YgX19yMCA9IChyb3cwKSwgX19yMSA9IChyb3cxKSwgX19yMiA9IChyb3cyKSwgX19yMyA9IChyb3czKTsJXAogIF9fdjRzZiBfX3QwID0gdmVjX3ZtcmdodyAoX19yMCwgX19yMSk7CQkJXAogIF9fdjRzZiBfX3QxID0gdmVjX3ZtcmdodyAoX19yMiwgX19yMyk7CQkJXAogIF9fdjRzZiBfX3QyID0gdmVjX3ZtcmdsdyAoX19yMCwgX19yMSk7CQkJXAogIF9fdjRzZiBfX3QzID0gdmVjX3ZtcmdsdyAoX19yMiwgX19yMyk7CQkJXAogIChyb3cwKSA9IChfX3Y0c2YpdmVjX21lcmdlaCAoKF9fdmVjdG9yIGxvbmcgbG9uZylfX3QwLCAJXAoJCQkgICAgICAgKF9fdmVjdG9yIGxvbmcgbG9uZylfX3QxKTsJXAogIChyb3cxKSA9IChfX3Y0c2YpdmVjX21lcmdlbCAoKF9fdmVjdG9yIGxvbmcgbG9uZylfX3QwLAlcCgkJCSAgICAgICAoX192ZWN0b3IgbG9uZyBsb25nKV9fdDEpOwlcCiAgKHJvdzIpID0gKF9fdjRzZil2ZWNfbWVyZ2VoICgoX192ZWN0b3IgbG9uZyBsb25nKV9fdDIsCVwKCQkJICAgICAgIChfX3ZlY3RvciBsb25nIGxvbmcpX190Myk7CVwKICAocm93MykgPSAoX192NHNmKXZlY19tZXJnZWwgKChfX3ZlY3RvciBsb25nIGxvbmcpX190MiwJXAoJCQkgICAgICAgKF9fdmVjdG9yIGxvbmcgbG9uZylfX3QzKTsJXAp9IHdoaWxlICgwKQoKLyogRm9yIGJhY2t3YXJkIHNvdXJjZSBjb21wYXRpYmlsaXR5LiAgKi8KLy8jIGluY2x1ZGUgPGVtbWludHJpbi5oPgoKI2Vsc2UKI2luY2x1ZGVfbmV4dCA8eG1taW50cmluLmg+CiNlbmRpZiAvKiBkZWZpbmVkKF9fcHBjNjRfXykgJiYgKGRlZmluZWQoX19saW51eF9fKSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9fKSkgICBcCiAgICAgICAgKi8KCiNlbmRpZiAvKiBfWE1NSU5UUklOX0hfSU5DTFVERUQgKi8KAGZzZWVrKGhhbmRsZSwgMCwgMCkAXABKU09OIHRyYW5zY29kZXIgcHJvZHVjZWQgaW52YWxpZCBwcm90b2J1ZiBvdXRwdXQuAFVua25vd24gZW5jb2RpbmcgJwBERkEgb3V0IG9mIG1lbW9yeTogc2l6ZSAAWzpec3BhY2U6XQBleHRlcm5hbC9yZWdleC1yZTIvcmUyL3Rvc3RyaW5nLmNjACoAXEIAR2xhZ29saXRpYwBLaG1lcgBLaG9qa2kATG0ATWFyY2hlbgBPcml5YQBQcwBTbQBTb2dkaWFuAFRoYWkAICAgIABsc2VlayglZCwgJWp1LCBTRUVLX1NFVCkgZmFpbGVkOiBlcnJubz0lZAByZWFkIGZhaWxlZDogZXJybm89JWQAQ29ycnVwdCAvcHJvYy9zZWxmL21hcHM6ICVzAG9mZnNldCBvdXQgb2YgcmFuZ2UAZXh0ZXJuYWwvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvbG93X2xldmVsX2FsbG9jLmNjAHNpZ25lZCBjaGFyAGxvbmcgbG9uZwBkdgBwTABsZQAxMgBDQU5DRUxMRUQAVU5JTVBMRU1FTlRFRABDb3JkUmVwQnRyZWU6OkNoZWNrVmFsaWQoKSBGQUlMRUQ6ICVzACwgaGVhZCA9IABucwBleHRlcm5hbC9ib3Jpbmdzc2wvc3JjL2NyeXB0by9maXBzbW9kdWxlL2VjZHNhL2VjZHNhLmMAQUVTX3NldF9lbmNyeXB0X2tleSBmYWlsZWQuCgBBRVMtQ0JDIEVuY3J5cHRpb24gS0FUAFJTQSBLZXlHZW4gZmFpbGVkCgAlbHgAaW52YWxpZCBsaWJyYXJ5ICgwKQBDaXBoZXIgZnVuY3Rpb25zAGt5dGhlLnByb3RvLkZpbGVJbmZvLmRpZ2VzdABreXRoZS5wcm90by5jb21tb24uU3ltYm9sSW5mby5iYXNlX25hbWUAa3l0aGUucHJvdG8uV3JpdGVSZXF1ZXN0LlVwZGF0ZS5lZGdlX2tpbmQALVhjbGFuZ3wtdGFyZ2V0AENhbid0IHJlcHJvZHVjZSBpbmNsdWRlIGxvb2t1cCBzdGF0ZTogAFJlc291cmNlIGRpcmVjdG9yeSBpcyAALyo9PT0tLS0tLS0tLS0tLS0tIGF2eDUxMmlmbWFpbnRyaW4uaCAtIElGTUEgaW50cmluc2ljcyAtLS0tLS0tLS0tLS0tLS0tLS09PT0KICoKICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKi8KI2lmbmRlZiBfX0lNTUlOVFJJTl9ICiNlcnJvciAiTmV2ZXIgdXNlIDxhdng1MTJpZm1haW50cmluLmg+IGRpcmVjdGx5OyBpbmNsdWRlIDxpbW1pbnRyaW4uaD4gaW5zdGVhZC4iCiNlbmRpZgoKI2lmbmRlZiBfX0lGTUFJTlRSSU5fSAojZGVmaW5lIF9fSUZNQUlOVFJJTl9ICgovKiBEZWZpbmUgdGhlIGRlZmF1bHQgYXR0cmlidXRlcyBmb3IgdGhlIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUuICovCiNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygiYXZ4NTEyaWZtYSIpLCBfX21pbl92ZWN0b3Jfd2lkdGhfXyg1MTIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTUxMl9tYWRkNTJoaV9lcHU2NCAoX19tNTEyaSBfX1gsIF9fbTUxMmkgX19ZLCBfX201MTJpIF9fWikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl92cG1hZGQ1Mmh1cTUxMigoX192OGRpKSBfX1gsIChfX3Y4ZGkpIF9fWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSkgX19aKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tNTEyX21hc2tfbWFkZDUyaGlfZXB1NjQgKF9fbTUxMmkgX19XLCBfX21tYXNrOCBfX00sIF9fbTUxMmkgX19YLCBfX201MTJpIF9fWSkKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzUxMihfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfbWFkZDUyaGlfZXB1NjQoX19XLCBfX1gsIF9fWSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW01MTJfbWFza3pfbWFkZDUyaGlfZXB1NjQgKF9fbW1hc2s4IF9fTSwgX19tNTEyaSBfX1gsIF9fbTUxMmkgX19ZLCBfX201MTJpIF9fWikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzUxMihfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfbWFkZDUyaGlfZXB1NjQoX19YLCBfX1ksIF9fWiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tNTEyX21hZGQ1MmxvX2VwdTY0IChfX201MTJpIF9fWCwgX19tNTEyaSBfX1ksIF9fbTUxMmkgX19aKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3ZwbWFkZDUybHVxNTEyKChfX3Y4ZGkpIF9fWCwgKF9fdjhkaSkgX19ZLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKSBfX1opOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW01MTJfbWFza19tYWRkNTJsb19lcHU2NCAoX19tNTEyaSBfX1csIF9fbW1hc2s4IF9fTSwgX19tNTEyaSBfX1gsIF9fbTUxMmkgX19ZKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfNTEyKF9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9tYWRkNTJsb19lcHU2NChfX1csIF9fWCwgX19ZKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTUxMl9tYXNrel9tYWRkNTJsb19lcHU2NCAoX19tbWFzazggX19NLCBfX201MTJpIF9fWCwgX19tNTEyaSBfX1ksIF9fbTUxMmkgX19aKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfNTEyKF9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9tYWRkNTJsb19lcHU2NChfX1gsIF9fWSwgX19aKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgojdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTCgojZW5kaWYKAGVucWNtZGludHJpbi5oAC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCi8vCi8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCi8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgovLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCi8vCi8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCgojaWZuZGVmIF9IRVhBR09OX0NJUkNfQlJFVl9JTlRSSU5TSUNTX0hfCiNkZWZpbmUgX0hFWEFHT05fQ0lSQ19CUkVWX0lOVFJJTlNJQ1NfSF8gMQoKI2luY2x1ZGUgPGhleGFnb25fcHJvdG9zLmg+CiNpbmNsdWRlIDxzdGRpbnQuaD4KCi8qIENpcmN1bGFyIExvYWQgKi8KLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZXR1cm49aW5zdHJ1Y3Rpb24oKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IHZvaWQgUTZfY2lyY19sb2FkX3VwZGF0ZV9EKFdvcmQ2NCBkc3QsIFdvcmQ2NCAqcHRyLCBVV29yZDMyIGluY3IsIFVXb3JkMzIgYnVmc2l6ZSwgVVdvcmQzMiBLKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEluc3RydWN0aW9uVHlwZQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiNkZWZpbmUgUTZfY2lyY19sb2FkX3VwZGF0ZV9EKGRlc3QscHRyLGluY3IsYnVmc2l6ZSxLKSAgXAogICAgeyBwdHIgPSAoaW50NjRfdCAqKSBIRVhBR09OX2NpcmNfbGRkIChwdHIsICYoZGVzdCksICgoKChLKSsxKTw8MjQpfCgoYnVmc2l6ZSk8PDMpKSwgKChpbmNyKSo4KSk7IH0KCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmV0dXJuPWluc3RydWN0aW9uKCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiB2b2lkIFE2X2NpcmNfbG9hZF91cGRhdGVfVyhXb3JkMzIgZHN0LCBXb3JkMzIgKnB0ciwgVVdvcmQzMiBpbmNyLCBVV29yZDMyIGJ1ZnNpemUsIFVXb3JkMzIgSykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBJbnN0cnVjdGlvblR5cGUKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwojZGVmaW5lIFE2X2NpcmNfbG9hZF91cGRhdGVfVyhkZXN0LHB0cixpbmNyLGJ1ZnNpemUsSykgIFwKICAgIHsgcHRyID0gKGludCAqKSBIRVhBR09OX2NpcmNfbGR3IChwdHIsICYoZGVzdCksICgoKEspPDwyNCl8KChidWZzaXplKTw8MikpLCAoKGluY3IpKjQpKTsgfQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZXR1cm49aW5zdHJ1Y3Rpb24oKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IHZvaWQgUTZfY2lyY19sb2FkX3VwZGF0ZV9IKFdvcmQxNiBkc3QsIFdvcmQxNiAqcHRyLCBVV29yZDMyIGluY3IsIFVXb3JkMzIgYnVmc2l6ZSwgVVdvcmQzMiBLKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEluc3RydWN0aW9uVHlwZQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiNkZWZpbmUgUTZfY2lyY19sb2FkX3VwZGF0ZV9IKGRlc3QscHRyLGluY3IsYnVmc2l6ZSxLKSAgXAogICAgeyBwdHIgPSAoaW50MTZfdCAqKSBIRVhBR09OX2NpcmNfbGRoIChwdHIsICYoZGVzdCksICgoKChLKS0xKTw8MjQpfCgoYnVmc2l6ZSk8PDEpKSwgKChpbmNyKSoyKSk7IH0KCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmV0dXJuPWluc3RydWN0aW9uKCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiB2b2lkIFE2X2NpcmNfbG9hZF91cGRhdGVfVUgoIFVXb3JkMTYgZHN0LCAgVVdvcmQxNiAqcHRyLCBVV29yZDMyIGluY3IsIFVXb3JkMzIgYnVmc2l6ZSwgVVdvcmQzMiBLKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEluc3RydWN0aW9uVHlwZQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiNkZWZpbmUgUTZfY2lyY19sb2FkX3VwZGF0ZV9VSChkZXN0LHB0cixpbmNyLGJ1ZnNpemUsSykgXAogICAgeyBwdHIgPSAodWludDE2X3QgKikgSEVYQUdPTl9jaXJjX2xkdWggKHB0ciwgJihkZXN0KSwgKCgoKEspLTEpPDwyNCl8KChidWZzaXplKTw8MSkpLCAoKGluY3IpKjIpKTsgfQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZXR1cm49aW5zdHJ1Y3Rpb24oKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IHZvaWQgUTZfY2lyY19sb2FkX3VwZGF0ZV9CKFdvcmQ4IGRzdCwgV29yZDggKnB0ciwgVVdvcmQzMiBpbmNyLCBVV29yZDMyIGJ1ZnNpemUsIFVXb3JkMzIgSykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBJbnN0cnVjdGlvblR5cGUKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwojZGVmaW5lIFE2X2NpcmNfbG9hZF91cGRhdGVfQihkZXN0LHB0cixpbmNyLGJ1ZnNpemUsSykgIFwKICAgIHsgcHRyID0gKGludDhfdCAqKSBIRVhBR09OX2NpcmNfbGRiIChwdHIsICYoZGVzdCksICgoKChLKS0yKTw8MjQpfChidWZzaXplKSksIGluY3IpOyB9CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJldHVybj1pbnN0cnVjdGlvbigpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogdm9pZCAgUTZfY2lyY19sb2FkX3VwZGF0ZV9VQihVV29yZDggZHN0LCBVV29yZDggKnB0ciwgVVdvcmQzMiBpbmNyLCBVV29yZDMyIGJ1ZnNpemUsIFVXb3JkMzIgSykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBJbnN0cnVjdGlvblR5cGUKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwojZGVmaW5lIFE2X2NpcmNfbG9hZF91cGRhdGVfVUIoZGVzdCxwdHIsaW5jcixidWZzaXplLEspIFwKICAgIHsgcHRyID0gKHVpbnQ4X3QgKikgSEVYQUdPTl9jaXJjX2xkdWIgKHB0ciwgJihkZXN0KSwgKCgoKEspLTIpPDwyNCl8KGJ1ZnNpemUpKSwgaW5jcik7IH0KCi8qIENpcmN1bGFyIFN0b3JlICovCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmV0dXJuPWluc3RydWN0aW9uKCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiB2b2lkIFE2X2NpcmNfc3RvcmVfdXBkYXRlX0QoV29yZDY0ICpzcmMsIFdvcmQ2NCAqcHRyLCBVV29yZDMyIGluY3IsIFVXb3JkMzIgYnVmc2l6ZSwgVVdvcmQzMiBLKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEluc3RydWN0aW9uVHlwZQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiNkZWZpbmUgUTZfY2lyY19zdG9yZV91cGRhdGVfRChzcmMscHRyLGluY3IsYnVmc2l6ZSxLKSAgXAogICAgeyBwdHIgPSAoaW50NjRfdCAqKSBIRVhBR09OX2NpcmNfc3RkIChwdHIsIHNyYywgKCgoKEspKzEpPDwyNCl8KChidWZzaXplKTw8MykpLCAoKGluY3IpKjgpKTsgfQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZXR1cm49aW5zdHJ1Y3Rpb24oKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IHZvaWQgUTZfY2lyY19zdG9yZV91cGRhdGVfVyhXb3JkMzIgKnNyYywgV29yZDMyICpwdHIsIFVXb3JkMzIgaW5jciwgVVdvcmQzMiBidWZzaXplLCBVV29yZDMyIEspCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgSW5zdHJ1Y3Rpb25UeXBlCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KI2RlZmluZSBRNl9jaXJjX3N0b3JlX3VwZGF0ZV9XKHNyYyxwdHIsaW5jcixidWZzaXplLEspICBcCiAgICB7IHB0ciA9IChpbnQgKikgSEVYQUdPTl9jaXJjX3N0dyAocHRyLCBzcmMsICgoKEspPDwyNCl8KChidWZzaXplKTw8MikpLCAoKGluY3IpKjQpKTsgfQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZXR1cm49aW5zdHJ1Y3Rpb24oKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IHZvaWQgUTZfY2lyY19zdG9yZV91cGRhdGVfSEwoV29yZDE2ICpzcmMsIFdvcmQxNiAqcHRyLCBVV29yZDMyIGluY3IsIFVXb3JkMzIgYnVmc2l6ZSwgVVdvcmQzMiBLKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEluc3RydWN0aW9uVHlwZQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiNkZWZpbmUgUTZfY2lyY19zdG9yZV91cGRhdGVfSEwoc3JjLHB0cixpbmNyLGJ1ZnNpemUsSykgXAogICAgeyBwdHIgPSAoaW50MTZfdCAqKSBIRVhBR09OX2NpcmNfc3RoIChwdHIsIHNyYywgKCgoKEspLTEpPDwyNCl8KChidWZzaXplKTw8MSkpLCAoKGluY3IpKjIpKTsgfQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZXR1cm49aW5zdHJ1Y3Rpb24oKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IHZvaWQgUTZfY2lyY19zdG9yZV91cGRhdGVfSEgoV29yZDE2ICpzcmMsIFdvcmQxNiAqcHRyLCBVV29yZDMyIGluY3IsIFVXb3JkMzIgYnVmc2l6ZSwgVVdvcmQzMiBLKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEluc3RydWN0aW9uVHlwZQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiNkZWZpbmUgUTZfY2lyY19zdG9yZV91cGRhdGVfSEgoc3JjLHB0cixpbmNyLGJ1ZnNpemUsSykgXAogICAgeyBwdHIgPSAoaW50MTZfdCAqKSBIRVhBR09OX2NpcmNfc3RoaGkgKHB0ciwgc3JjLCAoKCgoSyktMSk8PDI0KXwoKGJ1ZnNpemUpPDwxKSksICgoaW5jcikqMikpOyB9CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJldHVybj1pbnN0cnVjdGlvbigpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogdm9pZCBRNl9jaXJjX3N0b3JlX3VwZGF0ZV9CKFdvcmQ4ICpzcmMsIFdvcmQ4ICpwdHIsIFVXb3JkMzIgSTQsIFVXb3JkMzIgYnVmc2l6ZSwgIFVXb3JkNjQgSykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBJbnN0cnVjdGlvblR5cGUKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwojZGVmaW5lIFE2X2NpcmNfc3RvcmVfdXBkYXRlX0Ioc3JjLHB0cixpbmNyLGJ1ZnNpemUsSykgIFwKICAgIHsgcHRyID0gKGludDhfdCAqKSBIRVhBR09OX2NpcmNfc3RiIChwdHIsIHNyYywgKCgoKEspLTIpPDwyNCl8KGJ1ZnNpemUpKSwgaW5jcik7IH0KCgovKiBCaXQgUmV2ZXJzZSBMb2FkICovCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmV0dXJuPWluc3RydWN0aW9uKCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiB2b2lkIFE2X2JpdHJldl9sb2FkX3VwZGF0ZV9EKFdvcmQ2NCBkc3QsIFdvcmQ2NCAqcHRyLCBVV29yZDMyIEl1NCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBJbnN0cnVjdGlvblR5cGUKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwojZGVmaW5lIFE2X2JpdHJldl9sb2FkX3VwZGF0ZV9EKGRlc3QscHRyLGxvZzJidWZzaXplKSBcCiAgICB7IHB0ciA9IChpbnQ2NF90ICopIEhFWEFHT05fYnJldl9sZGQgKHB0ciwgJihkZXN0KSwgKDE8PCgxNi0oKGxvZzJidWZzaXplKSArIDMpKSkpOyB9CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJldHVybj1pbnN0cnVjdGlvbigpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogdm9pZCBRNl9iaXRyZXZfbG9hZF91cGRhdGVfVyhXb3JkMzIgZHN0LCBXb3JkMzIgKnB0ciwgVVdvcmQzMiBJdTQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgSW5zdHJ1Y3Rpb25UeXBlCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KI2RlZmluZSBRNl9iaXRyZXZfbG9hZF91cGRhdGVfVyhkZXN0LHB0cixsb2cyYnVmc2l6ZSkgXAogICAgeyBwdHIgPSAoaW50ICopIEhFWEFHT05fYnJldl9sZHcgKHB0ciwgJihkZXN0KSwgKDE8PCgxNi0oKGxvZzJidWZzaXplKSArIDIpKSkpOyB9CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJldHVybj1pbnN0cnVjdGlvbigpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogdm9pZCBRNl9iaXRyZXZfbG9hZF91cGRhdGVfSChXb3JkMTYgZHN0LCBXb3JkMTYgKnB0ciwgVVdvcmQzMiBJdTQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgSW5zdHJ1Y3Rpb25UeXBlCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KI2RlZmluZSBRNl9iaXRyZXZfbG9hZF91cGRhdGVfSChkZXN0LHB0cixsb2cyYnVmc2l6ZSkgXAogICAgeyBwdHIgPSAoaW50MTZfdCAqKSBIRVhBR09OX2JyZXZfbGRoIChwdHIsICYoZGVzdCksICgxPDwoMTYtKChsb2cyYnVmc2l6ZSkgKyAxKSkpKTsgfQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZXR1cm49aW5zdHJ1Y3Rpb24oKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IHZvaWQgUTZfYml0cmV2X2xvYWRfdXBkYXRlX1VIKFVXb3JkMTYgZHN0LCAgVVdvcmQxNiAqcHRyLCBVV29yZDMyIEl1NCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBJbnN0cnVjdGlvblR5cGUKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwojZGVmaW5lIFE2X2JpdHJldl9sb2FkX3VwZGF0ZV9VSChkZXN0LHB0cixsb2cyYnVmc2l6ZSkgXAogICAgeyBwdHIgPSAodWludDE2X3QgKikgSEVYQUdPTl9icmV2X2xkdWggKHB0ciwgJihkZXN0KSwgKDE8PCgxNi0oKGxvZzJidWZzaXplKSArIDEpKSkpOyB9CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJldHVybj1pbnN0cnVjdGlvbigpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogdm9pZCBRNl9iaXRyZXZfbG9hZF91cGRhdGVfQihXb3JkOCBkc3QsIFdvcmQ4ICpwdHIsIFVXb3JkMzIgSXU0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEluc3RydWN0aW9uVHlwZQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiNkZWZpbmUgUTZfYml0cmV2X2xvYWRfdXBkYXRlX0IoZGVzdCxwdHIsbG9nMmJ1ZnNpemUpIFwKICAgIHsgcHRyID0gKGludDhfdCAqKSBIRVhBR09OX2JyZXZfbGRiIChwdHIsICYoZGVzdCksICgxPDwoMTYtKChsb2cyYnVmc2l6ZSkpKSkpOyB9CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJldHVybj1pbnN0cnVjdGlvbigpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogdm9pZCBRNl9iaXRyZXZfbG9hZF91cGRhdGVfVUIoVVdvcmQ4IGRzdCwgVVdvcmQ4ICpwdHIsIFVXb3JkMzIgSXU0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEluc3RydWN0aW9uVHlwZQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiNkZWZpbmUgUTZfYml0cmV2X2xvYWRfdXBkYXRlX1VCKGRlc3QscHRyLGxvZzJidWZzaXplKSBcCiAgICB7IHB0ciA9ICh1aW50OF90ICopIEhFWEFHT05fYnJldl9sZHViIChwdHIsICYoZGVzdCksICgxPDwoMTYtKChsb2cyYnVmc2l6ZSkpKSkpOyB9CgovKiBCaXQgUmV2ZXJzZSBTdG9yZSAqLwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZXR1cm49aW5zdHJ1Y3Rpb24oKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IHZvaWQgUTZfYml0cmV2X3N0b3JlX3VwZGF0ZV9EKFdvcmQ2NCAqc3JjLCBXb3JkNjQgKnB0ciwgVVdvcmQzMiBJdTQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgSW5zdHJ1Y3Rpb25UeXBlCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KI2RlZmluZSBRNl9iaXRyZXZfc3RvcmVfdXBkYXRlX0Qoc3JjLHB0cixsb2cyYnVmc2l6ZSkgICBcCiAgICB7IHB0ciA9IChpbnQ2NF90ICopIEhFWEFHT05fYnJldl9zdGQgKHB0ciwgc3JjLCAoMTw8KDE2LSgobG9nMmJ1ZnNpemUpICsgMykpKSk7IH0KCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmV0dXJuPWluc3RydWN0aW9uKCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiB2b2lkIFE2X2JpdHJldl9zdG9yZV91cGRhdGVfVyhXb3JkMzIgKnNyYywgV29yZDMyICpwdHIsIFVXb3JkMzIgSXU0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEluc3RydWN0aW9uVHlwZQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiNkZWZpbmUgUTZfYml0cmV2X3N0b3JlX3VwZGF0ZV9XKHNyYyxwdHIsbG9nMmJ1ZnNpemUpICAgXAogICAgeyBwdHIgPSAoaW50ICopIEhFWEFHT05fYnJldl9zdHcgKHB0ciwgc3JjLCAoMTw8KDE2LSgobG9nMmJ1ZnNpemUpICsgMikpKSk7IH0KCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmV0dXJuPWluc3RydWN0aW9uKCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiB2b2lkIFE2X2JpdHJldl9zdG9yZV91cGRhdGVfSEwoV29yZDE2ICpzcmMsIFdvcmQxNiAqcHRyLCBXb3JkMzIgSXU0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEluc3RydWN0aW9uVHlwZQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiNkZWZpbmUgUTZfYml0cmV2X3N0b3JlX3VwZGF0ZV9ITChzcmMscHRyLGxvZzJidWZzaXplKSAgIFwKICAgIHsgcHRyID0gKGludDE2X3QgKikgSEVYQUdPTl9icmV2X3N0aCAocHRyLCBzcmMsICgxPDwoMTYtKChsb2cyYnVmc2l6ZSkgKyAxKSkpKTsgfQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZXR1cm49aW5zdHJ1Y3Rpb24oKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IHZvaWQgUTZfYml0cmV2X3N0b3JlX3VwZGF0ZV9ISChXb3JkMTYgKnNyYywgV29yZDE2ICpwdHIsIFVXb3JkMzIgSXU0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEluc3RydWN0aW9uVHlwZQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiNkZWZpbmUgUTZfYml0cmV2X3N0b3JlX3VwZGF0ZV9ISChzcmMscHRyLGxvZzJidWZzaXplKSAgIFwKICAgIHsgcHRyID0gKGludDE2X3QgKikgSEVYQUdPTl9icmV2X3N0aGhpIChwdHIsIHNyYywgKDE8PCgxNi0oKGxvZzJidWZzaXplKSArIDEpKSkpOyB9CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJldHVybj1pbnN0cnVjdGlvbigpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogdm9pZCBRNl9iaXRyZXZfc3RvcmVfdXBkYXRlX0IoV29yZDggKnNyYywgV29yZDggKnB0ciwgVVdvcmQzMiBJdTQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgSW5zdHJ1Y3Rpb25UeXBlCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KI2RlZmluZSBRNl9iaXRyZXZfc3RvcmVfdXBkYXRlX0Ioc3JjLHB0cixsb2cyYnVmc2l6ZSkgICBcCiAgICB7IHB0ciA9IChpbnQ4X3QgKikgSEVYQUdPTl9icmV2X3N0YiAocHRyLCBzcmMsICgxPDwoMTYtKChsb2cyYnVmc2l6ZSkpKSkpOyB9CgoKI2RlZmluZSBIRVhBR09OX2NpcmNfbGRkICBfX2J1aWx0aW5fY2lyY19sZGQKI2RlZmluZSBIRVhBR09OX2NpcmNfbGR3ICBfX2J1aWx0aW5fY2lyY19sZHcKI2RlZmluZSBIRVhBR09OX2NpcmNfbGRoICBfX2J1aWx0aW5fY2lyY19sZGgKI2RlZmluZSBIRVhBR09OX2NpcmNfbGR1aCBfX2J1aWx0aW5fY2lyY19sZHVoCiNkZWZpbmUgSEVYQUdPTl9jaXJjX2xkYiAgX19idWlsdGluX2NpcmNfbGRiCiNkZWZpbmUgSEVYQUdPTl9jaXJjX2xkdWIgX19idWlsdGluX2NpcmNfbGR1YgoKCiNkZWZpbmUgSEVYQUdPTl9jaXJjX3N0ZCAgX19idWlsdGluX2NpcmNfc3RkCiNkZWZpbmUgSEVYQUdPTl9jaXJjX3N0dyAgX19idWlsdGluX2NpcmNfc3R3CiNkZWZpbmUgSEVYQUdPTl9jaXJjX3N0aCAgX19idWlsdGluX2NpcmNfc3RoCiNkZWZpbmUgSEVYQUdPTl9jaXJjX3N0aGhpIF9fYnVpbHRpbl9jaXJjX3N0aGhpCiNkZWZpbmUgSEVYQUdPTl9jaXJjX3N0YiAgX19idWlsdGluX2NpcmNfc3RiCgoKI2RlZmluZSBIRVhBR09OX2JyZXZfbGRkICBfX2J1aWx0aW5fYnJldl9sZGQKI2RlZmluZSBIRVhBR09OX2JyZXZfbGR3ICBfX2J1aWx0aW5fYnJldl9sZHcKI2RlZmluZSBIRVhBR09OX2JyZXZfbGRoICBfX2J1aWx0aW5fYnJldl9sZGgKI2RlZmluZSBIRVhBR09OX2JyZXZfbGR1aCBfX2J1aWx0aW5fYnJldl9sZHVoCiNkZWZpbmUgSEVYQUdPTl9icmV2X2xkYiAgX19idWlsdGluX2JyZXZfbGRiCiNkZWZpbmUgSEVYQUdPTl9icmV2X2xkdWIgX19idWlsdGluX2JyZXZfbGR1YgoKI2RlZmluZSBIRVhBR09OX2JyZXZfc3RkICBfX2J1aWx0aW5fYnJldl9zdGQKI2RlZmluZSBIRVhBR09OX2JyZXZfc3R3ICBfX2J1aWx0aW5fYnJldl9zdHcKI2RlZmluZSBIRVhBR09OX2JyZXZfc3RoICBfX2J1aWx0aW5fYnJldl9zdGgKI2RlZmluZSBIRVhBR09OX2JyZXZfc3RoaGkgX19idWlsdGluX2JyZXZfc3RoaGkKI2RlZmluZSBIRVhBR09OX2JyZXZfc3RiICBfX2J1aWx0aW5fYnJldl9zdGIKCiNpZmRlZiBfX0hWWF9fCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgaWYgKFF0KSB2bWVtKFJ0KyMwKSA9IFZzCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogdm9pZCBRNl92bWFza2Vkc3RvcmVxX1FBVihIVlhfVmVjdG9yUHJlZCBRdCwgSFZYX1ZlY3RvckFkZHJlc3MgQSwgSFZYX1ZlY3RvciBWcykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDT1BST0NfVk1FTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X3ZtYXNrZWRzdG9yZXFfUUFWIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92bWFza2Vkc3RvcmVxKQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBpZiAoIVF0KSB2bWVtKFJ0KyMwKSA9IFZzCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogdm9pZCBRNl92bWFza2Vkc3RvcmVucV9RQVYoSFZYX1ZlY3RvclByZWQgUXQsIEhWWF9WZWN0b3JBZGRyZXNzIEEsIEhWWF9WZWN0b3IgVnMpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ09QUk9DX1ZNRU0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMAogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl92bWFza2Vkc3RvcmVucV9RQVYgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtYXNrZWRzdG9yZW5xKQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBpZiAoUXQpIHZtZW0oUnQrIzApOm50ID0gVnMKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiB2b2lkIFE2X3ZtYXNrZWRzdG9yZW50cV9RQVYoSFZYX1ZlY3RvclByZWQgUXQsIEhWWF9WZWN0b3JBZGRyZXNzIEEsIEhWWF9WZWN0b3IgVnMpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ09QUk9DX1ZNRU0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMAogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl92bWFza2Vkc3RvcmVudHFfUUFWIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92bWFza2Vkc3RvcmVudHEpCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIGlmICghUXQpIHZtZW0oUnQrIzApOm50ID0gVnMKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiB2b2lkIFE2X3ZtYXNrZWRzdG9yZW50bnFfUUFWKEhWWF9WZWN0b3JQcmVkIFF0LCBIVlhfVmVjdG9yQWRkcmVzcyBBLCBIVlhfVmVjdG9yIFZzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENPUFJPQ19WTUVNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfdm1hc2tlZHN0b3JlbnRucV9RQVYgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtYXNrZWRzdG9yZW50bnEpCgojZW5kaWYKCgojZW5kaWYgIC8qICNpZm5kZWYgX0hFWEFHT05fQ0lSQ19CUkVWX0lOVFJJTlNJQ1NfSF8gKi8KCiNpZmRlZiBfX05PVF9ERUZJTkVEX18KLyoqKiBjb21tZW50IGJsb2NrIHRlbXBsYXRlICAqKiovCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmV0dXJuPWluc3RydWN0aW9uKCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBSZXR1cm5UeXBlIEludHJpbnNpYyhQYXJhbVR5cGUgUnMsIFBhcmFtVHlwZSBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBJbnN0cnVjdGlvblR5cGUKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwojZW5kaWYgLyoqKiAgX19OT1RfREVGSU5FRF9fICAqKiovCgAvKj09PS0tLS0gbHpjbnRpbnRyaW4uaCAtIExaQ05UIGludHJpbnNpY3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqCiAqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCiAqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCgojaWYgIWRlZmluZWQgX19YODZJTlRSSU5fSCAmJiAhZGVmaW5lZCBfX0lNTUlOVFJJTl9ICiNlcnJvciAiTmV2ZXIgdXNlIDxsemNudGludHJpbi5oPiBkaXJlY3RseTsgaW5jbHVkZSA8eDg2aW50cmluLmg+IGluc3RlYWQuIgojZW5kaWYKCiNpZm5kZWYgX19MWkNOVElOVFJJTl9ICiNkZWZpbmUgX19MWkNOVElOVFJJTl9ICgovKiBEZWZpbmUgdGhlIGRlZmF1bHQgYXR0cmlidXRlcyBmb3IgdGhlIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUuICovCiNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygibHpjbnQiKSkpCgojaWZuZGVmIF9NU0NfVkVSCi8vLyBDb3VudHMgdGhlIG51bWJlciBvZiBsZWFkaW5nIHplcm8gYml0cyBpbiB0aGUgb3BlcmFuZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIFxjIExaQ05UIGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX1gKLy8vICAgIEFuIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyIHdob3NlIGxlYWRpbmcgemVyb3MgYXJlIHRvIGJlIGNvdW50ZWQuCi8vLyBccmV0dXJucyBBbiB1bnNpZ25lZCAxNi1iaXQgaW50ZWdlciBjb250YWluaW5nIHRoZSBudW1iZXIgb2YgbGVhZGluZyB6ZXJvCi8vLyAgICBiaXRzIGluIHRoZSBvcGVyYW5kLgojZGVmaW5lIF9fbHpjbnQxNihYKSBfX2J1aWx0aW5faWEzMl9semNudF91MTYoKHVuc2lnbmVkIHNob3J0KShYKSkKI2VuZGlmIC8vIF9NU0NfVkVSCgovLy8gQ291bnRzIHRoZSBudW1iZXIgb2YgbGVhZGluZyB6ZXJvIGJpdHMgaW4gdGhlIG9wZXJhbmQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSBcYyBMWkNOVCBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19YCi8vLyAgICBBbiB1bnNpZ25lZCAzMi1iaXQgaW50ZWdlciB3aG9zZSBsZWFkaW5nIHplcm9zIGFyZSB0byBiZSBjb3VudGVkLgovLy8gXHJldHVybnMgQW4gdW5zaWduZWQgMzItYml0IGludGVnZXIgY29udGFpbmluZyB0aGUgbnVtYmVyIG9mIGxlYWRpbmcgemVybwovLy8gICAgYml0cyBpbiB0aGUgb3BlcmFuZC4KLy8vIFxzZWUgX2x6Y250X3UzMgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTCl9fbHpjbnQzMih1bnNpZ25lZCBpbnQgX19YKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2x6Y250X3UzMihfX1gpOwp9CgovLy8gQ291bnRzIHRoZSBudW1iZXIgb2YgbGVhZGluZyB6ZXJvIGJpdHMgaW4gdGhlIG9wZXJhbmQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSBcYyBMWkNOVCBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19YCi8vLyAgICBBbiB1bnNpZ25lZCAzMi1iaXQgaW50ZWdlciB3aG9zZSBsZWFkaW5nIHplcm9zIGFyZSB0byBiZSBjb3VudGVkLgovLy8gXHJldHVybnMgQW4gdW5zaWduZWQgMzItYml0IGludGVnZXIgY29udGFpbmluZyB0aGUgbnVtYmVyIG9mIGxlYWRpbmcgemVybwovLy8gICAgYml0cyBpbiB0aGUgb3BlcmFuZC4KLy8vIFxzZWUgX19semNudDMyCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGludCBfX0RFRkFVTFRfRk5fQVRUUlMKX2x6Y250X3UzMih1bnNpZ25lZCBpbnQgX19YKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2x6Y250X3UzMihfX1gpOwp9CgojaWZkZWYgX194ODZfNjRfXwojaWZuZGVmIF9NU0NfVkVSCi8vLyBDb3VudHMgdGhlIG51bWJlciBvZiBsZWFkaW5nIHplcm8gYml0cyBpbiB0aGUgb3BlcmFuZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIFxjIExaQ05UIGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX1gKLy8vICAgIEFuIHVuc2lnbmVkIDY0LWJpdCBpbnRlZ2VyIHdob3NlIGxlYWRpbmcgemVyb3MgYXJlIHRvIGJlIGNvdW50ZWQuCi8vLyBccmV0dXJucyBBbiB1bnNpZ25lZCA2NC1iaXQgaW50ZWdlciBjb250YWluaW5nIHRoZSBudW1iZXIgb2YgbGVhZGluZyB6ZXJvCi8vLyAgICBiaXRzIGluIHRoZSBvcGVyYW5kLgovLy8gXHNlZSBfbHpjbnRfdTY0CiNkZWZpbmUgX19semNudDY0KFgpIF9fYnVpbHRpbl9pYTMyX2x6Y250X3U2NCgodW5zaWduZWQgbG9uZyBsb25nKShYKSkKI2VuZGlmIC8vIF9NU0NfVkVSCgovLy8gQ291bnRzIHRoZSBudW1iZXIgb2YgbGVhZGluZyB6ZXJvIGJpdHMgaW4gdGhlIG9wZXJhbmQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSBcYyBMWkNOVCBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19YCi8vLyAgICBBbiB1bnNpZ25lZCA2NC1iaXQgaW50ZWdlciB3aG9zZSBsZWFkaW5nIHplcm9zIGFyZSB0byBiZSBjb3VudGVkLgovLy8gXHJldHVybnMgQW4gdW5zaWduZWQgNjQtYml0IGludGVnZXIgY29udGFpbmluZyB0aGUgbnVtYmVyIG9mIGxlYWRpbmcgemVybwovLy8gICAgYml0cyBpbiB0aGUgb3BlcmFuZC4KLy8vIFxzZWUgX19semNudDY0CnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0RFRkFVTFRfRk5fQVRUUlMKX2x6Y250X3U2NCh1bnNpZ25lZCBsb25nIGxvbmcgX19YKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2x6Y250X3U2NChfX1gpOwp9CiNlbmRpZgoKI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUwoKI2VuZGlmIC8qIF9fTFpDTlRJTlRSSU5fSCAqLwoALyoKICogaW5jbHVkZS9vbXAtdG9vbHMuaC52YXIKICovCgovLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwovLwovLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgovLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgovLwovLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwoKI2lmbmRlZiBfX09NUFRfXwojZGVmaW5lIF9fT01QVF9fCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogc3lzdGVtIGluY2x1ZGUgZmlsZXMKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKI2luY2x1ZGUgPHN0ZGludC5oPgojaW5jbHVkZSA8c3RkZGVmLmg+CgojaWZkZWYgREVQUkVDQVRJT05fV0FSTklOR1MgCiMgaWZkZWYgX19jcGx1c3BsdXMKIyBkZWZpbmUgREVQUkVDQVRFRF81MSBbW2RlcHJlY2F0ZWQoImFzIG9mIDUuMSIpXV0KIyBlbHNlCiMgZGVmaW5lIERFUFJFQ0FURURfNTEgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCgiYXMgb2YgNS4xIikpKQojZW5kaWYKI2Vsc2UKI2RlZmluZSBERVBSRUNBVEVEXzUxCiNlbmRpZgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIGl0ZXJhdGlvbiBtYWNyb3MKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKI2RlZmluZSBGT1JFQUNIX09NUFRfSU5RVUlSWV9GTihtYWNybykgICAgICBcCiAgICBtYWNybyAob21wdF9lbnVtZXJhdGVfc3RhdGVzKSAgICAgICAgICAgXAogICAgbWFjcm8gKG9tcHRfZW51bWVyYXRlX211dGV4X2ltcGxzKSAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBtYWNybyAob21wdF9zZXRfY2FsbGJhY2spICAgICAgICAgICAgICAgXAogICAgbWFjcm8gKG9tcHRfZ2V0X2NhbGxiYWNrKSAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBtYWNybyAob21wdF9nZXRfc3RhdGUpICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIG1hY3JvIChvbXB0X2dldF9wYXJhbGxlbF9pbmZvKSAgICAgICAgICBcCiAgICBtYWNybyAob21wdF9nZXRfdGFza19pbmZvKSAgICAgICAgICAgICAgXAogICAgbWFjcm8gKG9tcHRfZ2V0X3Rhc2tfbWVtb3J5KSAgICAgICAgICAgIFwKICAgIG1hY3JvIChvbXB0X2dldF90aHJlYWRfZGF0YSkgICAgICAgICAgICBcCiAgICBtYWNybyAob21wdF9nZXRfdW5pcXVlX2lkKSAgICAgICAgICAgICAgXAogICAgbWFjcm8gKG9tcHRfZmluYWxpemVfdG9vbCkgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBtYWNybyhvbXB0X2dldF9udW1fcHJvY3MpICAgICAgICAgICAgICAgXAogICAgbWFjcm8ob21wdF9nZXRfbnVtX3BsYWNlcykgICAgICAgICAgICAgIFwKICAgIG1hY3JvKG9tcHRfZ2V0X3BsYWNlX3Byb2NfaWRzKSAgICAgICAgICBcCiAgICBtYWNybyhvbXB0X2dldF9wbGFjZV9udW0pICAgICAgICAgICAgICAgXAogICAgbWFjcm8ob21wdF9nZXRfcGFydGl0aW9uX3BsYWNlX251bXMpICAgIFwKICAgIG1hY3JvKG9tcHRfZ2V0X3Byb2NfaWQpICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgbWFjcm8ob21wdF9nZXRfdGFyZ2V0X2luZm8pICAgICAgICAgICAgIFwKICAgIG1hY3JvKG9tcHRfZ2V0X251bV9kZXZpY2VzKQoKI2RlZmluZSBGT1JFQUNIX09NUFRfU1RBVEUobWFjcm8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgLyogZmlyc3QgYXZhaWxhYmxlIHN0YXRlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBtYWNybyAob21wdF9zdGF0ZV91bmRlZmluZWQsIDB4MTAyKSAgICAgIC8qIHVuZGVmaW5lZCB0aHJlYWQgc3RhdGUgKi8gICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIC8qIHdvcmsgc3RhdGVzICgwLi4xNSkgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgbWFjcm8gKG9tcHRfc3RhdGVfd29ya19zZXJpYWwsIDB4MDAwKSAgICAvKiB3b3JraW5nIG91dHNpZGUgcGFyYWxsZWwgKi8gICAgICAgICAgICAgICAgICAgICAgXAogICAgbWFjcm8gKG9tcHRfc3RhdGVfd29ya19wYXJhbGxlbCwgMHgwMDEpICAvKiB3b3JraW5nIHdpdGhpbiBwYXJhbGxlbCAqLyAgICAgICAgICAgICAgICAgICAgICAgXAogICAgbWFjcm8gKG9tcHRfc3RhdGVfd29ya19yZWR1Y3Rpb24sIDB4MDAyKSAvKiBwZXJmb3JtaW5nIGEgcmVkdWN0aW9uICovICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAvKiBiYXJyaWVyIHdhaXQgc3RhdGVzICgxNi4uMzEpICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIG1hY3JvIChvbXB0X3N0YXRlX3dhaXRfYmFycmllciwgMHgwMTApICAgLyogd2FpdGluZyBhdCBhIGJhcnJpZXIgKi8gICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIG1hY3JvIChvbXB0X3N0YXRlX3dhaXRfYmFycmllcl9pbXBsaWNpdF9wYXJhbGxlbCwgMHgwMTEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbXBsaWNpdCBiYXJyaWVyIGF0IHRoZSBlbmQgb2YgcGFyYWxsZWwgcmVnaW9uICovXAogICAgbWFjcm8gKG9tcHRfc3RhdGVfd2FpdF9iYXJyaWVyX2ltcGxpY2l0X3dvcmtzaGFyZSwgMHgwMTIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGltcGxpY2l0IGJhcnJpZXIgYXQgdGhlIGVuZCBvZiB3b3Jrc2hhcmluZyAqLyAgICBcCiAgICBtYWNybyAob21wdF9zdGF0ZV93YWl0X2JhcnJpZXJfaW1wbGljaXQsIDB4MDEzKSAgLyogaW1wbGljaXQgYmFycmllciAqLyAgICAgICAgICAgICAgICAgICAgICBcCiAgICBtYWNybyAob21wdF9zdGF0ZV93YWl0X2JhcnJpZXJfZXhwbGljaXQsIDB4MDE0KSAgLyogZXhwbGljaXQgYmFycmllciAqLyAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIC8qIHRhc2sgd2FpdCBzdGF0ZXMgKDMyLi42MykgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgbWFjcm8gKG9tcHRfc3RhdGVfd2FpdF90YXNrd2FpdCwgMHgwMjApICAvKiB3YWl0aW5nIGF0IGEgdGFza3dhaXQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgbWFjcm8gKG9tcHRfc3RhdGVfd2FpdF90YXNrZ3JvdXAsIDB4MDIxKSAvKiB3YWl0aW5nIGF0IGEgdGFza2dyb3VwICovICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAvKiBtdXRleCB3YWl0IHN0YXRlcyAoNjQuLjEyNykgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIG1hY3JvIChvbXB0X3N0YXRlX3dhaXRfbXV0ZXgsIDB4MDQwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIG1hY3JvIChvbXB0X3N0YXRlX3dhaXRfbG9jaywgMHgwNDEpICAgICAgLyogd2FpdGluZyBmb3IgbG9jayAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIG1hY3JvIChvbXB0X3N0YXRlX3dhaXRfY3JpdGljYWwsIDB4MDQyKSAgLyogd2FpdGluZyBmb3IgY3JpdGljYWwgKi8gICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIG1hY3JvIChvbXB0X3N0YXRlX3dhaXRfYXRvbWljLCAweDA0MykgICAgLyogd2FpdGluZyBmb3IgYXRvbWljICovICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIG1hY3JvIChvbXB0X3N0YXRlX3dhaXRfb3JkZXJlZCwgMHgwNDQpICAgLyogd2FpdGluZyBmb3Igb3JkZXJlZCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgLyogdGFyZ2V0IHdhaXQgc3RhdGVzICgxMjguLjI1NSkgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBtYWNybyAob21wdF9zdGF0ZV93YWl0X3RhcmdldCwgMHgwODApICAgICAgICAvKiB3YWl0aW5nIGZvciB0YXJnZXQgcmVnaW9uICovICAgICAgICAgICAgICAgICBcCiAgICBtYWNybyAob21wdF9zdGF0ZV93YWl0X3RhcmdldF9tYXAsIDB4MDgxKSAgICAvKiB3YWl0aW5nIGZvciB0YXJnZXQgZGF0YSBtYXBwaW5nIG9wZXJhdGlvbiAqLyBcCiAgICBtYWNybyAob21wdF9zdGF0ZV93YWl0X3RhcmdldF91cGRhdGUsIDB4MDgyKSAvKiB3YWl0aW5nIGZvciB0YXJnZXQgdXBkYXRlIG9wZXJhdGlvbiAqLyAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIC8qIG1pc2MgKDI1Ni4uNTExKSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgbWFjcm8gKG9tcHRfc3RhdGVfaWRsZSwgMHgxMDApICAgICAgICAgICAvKiB3YWl0aW5nIGZvciB3b3JrICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgbWFjcm8gKG9tcHRfc3RhdGVfb3ZlcmhlYWQsIDB4MTAxKSAgICAgICAvKiBvdmVyaGVhZCBleGNsdWRpbmcgd2FpdCBzdGF0ZXMgKi8gICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAvKiBpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYyBzdGF0ZXMgKDUxMi4uKSAqLwoKCiNkZWZpbmUgRk9SRUFDSF9LTVBfTVVURVhfSU1QTChtYWNybykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBtYWNybyAoa21wX211dGV4X2ltcGxfbm9uZSwgMCkgICAgICAgICAvKiB1bmtub3duIGltcGxlbWVudGF0aW9uICovICAgICAgICAgICAgICBcCiAgICBtYWNybyAoa21wX211dGV4X2ltcGxfc3BpbiwgMSkgICAgICAgICAvKiBiYXNlZCBvbiBzcGluICovICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBtYWNybyAoa21wX211dGV4X2ltcGxfcXVldWluZywgMikgICAgICAvKiBiYXNlZCBvbiBzb21lIGZhaXIgcG9saWN5ICovICAgICAgICAgICBcCiAgICBtYWNybyAoa21wX211dGV4X2ltcGxfc3BlY3VsYXRpdmUsIDMpICAvKiBiYXNlZCBvbiBIVy1zdXBwb3J0ZWQgc3BlY3VsYXRpb24gKi8KCiNkZWZpbmUgRk9SRUFDSF9PTVBUX0VWRU5UKG1hY3JvKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAvKi0tLSBNYW5kYXRvcnkgRXZlbnRzIC0tLSovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBtYWNybyAob21wdF9jYWxsYmFja190aHJlYWRfYmVnaW4sICAgICAgb21wdF9jYWxsYmFja190aHJlYWRfYmVnaW5fdCwgICAgICAgMSkgLyogdGhyZWFkIGJlZ2luICAgICAgICAgICAgICAgICAgICAqLyBcCiAgICBtYWNybyAob21wdF9jYWxsYmFja190aHJlYWRfZW5kLCAgICAgICAgb21wdF9jYWxsYmFja190aHJlYWRfZW5kX3QsICAgICAgICAgMikgLyogdGhyZWFkIGVuZCAgICAgICAgICAgICAgICAgICAgICAqLyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBtYWNybyAob21wdF9jYWxsYmFja19wYXJhbGxlbF9iZWdpbiwgICAgb21wdF9jYWxsYmFja19wYXJhbGxlbF9iZWdpbl90LCAgICAgMykgLyogcGFyYWxsZWwgYmVnaW4gICAgICAgICAgICAgICAgICAqLyBcCiAgICBtYWNybyAob21wdF9jYWxsYmFja19wYXJhbGxlbF9lbmQsICAgICAgb21wdF9jYWxsYmFja19wYXJhbGxlbF9lbmRfdCwgICAgICAgNCkgLyogcGFyYWxsZWwgZW5kICAgICAgICAgICAgICAgICAgICAqLyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBtYWNybyAob21wdF9jYWxsYmFja190YXNrX2NyZWF0ZSwgICAgICAgb21wdF9jYWxsYmFja190YXNrX2NyZWF0ZV90LCAgICAgICAgNSkgLyogdGFzayBiZWdpbiAgICAgICAgICAgICAgICAgICAgICAqLyBcCiAgICBtYWNybyAob21wdF9jYWxsYmFja190YXNrX3NjaGVkdWxlLCAgICAgb21wdF9jYWxsYmFja190YXNrX3NjaGVkdWxlX3QsICAgICAgNikgLyogdGFzayBzY2hlZHVsZSAgICAgICAgICAgICAgICAgICAqLyBcCiAgICBtYWNybyAob21wdF9jYWxsYmFja19pbXBsaWNpdF90YXNrLCAgICAgb21wdF9jYWxsYmFja19pbXBsaWNpdF90YXNrX3QsICAgICAgNykgLyogaW1wbGljaXQgdGFzayAgICAgICAgICAgICAgICAgICAqLyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBtYWNybyAob21wdF9jYWxsYmFja190YXJnZXQsICAgICAgICAgICAgb21wdF9jYWxsYmFja190YXJnZXRfdCwgICAgICAgICAgICAgOCkgLyogdGFyZ2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAqLyBcCiAgICBtYWNybyAob21wdF9jYWxsYmFja190YXJnZXRfZGF0YV9vcCwgICAgb21wdF9jYWxsYmFja190YXJnZXRfZGF0YV9vcF90LCAgICAgOSkgLyogdGFyZ2V0IGRhdGEgb3AgICAgICAgICAgICAgICAgICAqLyBcCiAgICBtYWNybyAob21wdF9jYWxsYmFja190YXJnZXRfc3VibWl0LCAgICAgb21wdF9jYWxsYmFja190YXJnZXRfc3VibWl0X3QsICAgICAxMCkgLyogdGFyZ2V0ICBzdWJtaXQgICAgICAgICAgICAgICAgICAqLyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBtYWNybyAob21wdF9jYWxsYmFja19jb250cm9sX3Rvb2wsICAgICAgb21wdF9jYWxsYmFja19jb250cm9sX3Rvb2xfdCwgICAgICAxMSkgLyogY29udHJvbCB0b29sICAgICAgICAgICAgICAgICAgICAqLyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBtYWNybyAob21wdF9jYWxsYmFja19kZXZpY2VfaW5pdGlhbGl6ZSwgb21wdF9jYWxsYmFja19kZXZpY2VfaW5pdGlhbGl6ZV90LCAxMikgLyogZGV2aWNlIGluaXRpYWxpemUgICAgICAgICAgICAgICAqLyBcCiAgICBtYWNybyAob21wdF9jYWxsYmFja19kZXZpY2VfZmluYWxpemUsICAgb21wdF9jYWxsYmFja19kZXZpY2VfZmluYWxpemVfdCwgICAxMykgLyogZGV2aWNlIGZpbmFsaXplICAgICAgICAgICAgICAgICAqLyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBtYWNybyAob21wdF9jYWxsYmFja19kZXZpY2VfbG9hZCwgICAgICAgb21wdF9jYWxsYmFja19kZXZpY2VfbG9hZF90LCAgICAgICAxNCkgLyogZGV2aWNlIGxvYWQgICAgICAgICAgICAgICAgICAgICAqLyBcCiAgICBtYWNybyAob21wdF9jYWxsYmFja19kZXZpY2VfdW5sb2FkLCAgICAgb21wdF9jYWxsYmFja19kZXZpY2VfdW5sb2FkX3QsICAgICAxNSkgLyogZGV2aWNlIHVubG9hZCAgICAgICAgICAgICAgICAgICAqLyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAvKiBPcHRpb25hbCBFdmVudHMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBtYWNybyAob21wdF9jYWxsYmFja19zeW5jX3JlZ2lvbl93YWl0LCAgb21wdF9jYWxsYmFja19zeW5jX3JlZ2lvbl90LCAgICAgICAxNikgLyogc3luYyByZWdpb24gd2FpdCBiZWdpbiBvciBlbmQgICAqLyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBtYWNybyAob21wdF9jYWxsYmFja19tdXRleF9yZWxlYXNlZCwgICAgb21wdF9jYWxsYmFja19tdXRleF90LCAgICAgICAgICAgICAxNykgLyogbXV0ZXggcmVsZWFzZWQgICAgICAgICAgICAgICAgICAqLyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBtYWNybyAob21wdF9jYWxsYmFja19kZXBlbmRlbmNlcywgICAgICAgb21wdF9jYWxsYmFja19kZXBlbmRlbmNlc190LCAgICAgICAxOCkgLyogcmVwb3J0IHRhc2sgZGVwZW5kZW5jZXMgICAgICAgICAqLyBcCiAgICBtYWNybyAob21wdF9jYWxsYmFja190YXNrX2RlcGVuZGVuY2UsICAgb21wdF9jYWxsYmFja190YXNrX2RlcGVuZGVuY2VfdCwgICAxOSkgLyogcmVwb3J0IHRhc2sgZGVwZW5kZW5jZSAgICAgICAgICAqLyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBtYWNybyAob21wdF9jYWxsYmFja193b3JrLCAgICAgICAgICAgICAgb21wdF9jYWxsYmFja193b3JrX3QsICAgICAgICAgICAgICAyMCkgLyogdGFzayBhdCB3b3JrIGJlZ2luIG9yIGVuZCAgICAgICAqLyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBtYWNybyAob21wdF9jYWxsYmFja19tYXNrZWQsICAgICAgICAgICAgb21wdF9jYWxsYmFja19tYXNrZWRfdCwgICAgICAgICAgICAyMSkgLyogdGFzayBhdCBtYXNrZWQgYmVnaW4gb3IgZW5kICAgICAqLyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBtYWNybyAob21wdF9jYWxsYmFja190YXJnZXRfbWFwLCAgICAgICAgb21wdF9jYWxsYmFja190YXJnZXRfbWFwX3QsICAgICAgICAyMikgLyogdGFyZ2V0IG1hcCAgICAgICAgICAgICAgICAgICAgICAqLyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBtYWNybyAob21wdF9jYWxsYmFja19zeW5jX3JlZ2lvbiwgICAgICAgb21wdF9jYWxsYmFja19zeW5jX3JlZ2lvbl90LCAgICAgICAyMykgLyogc3luYyByZWdpb24gYmVnaW4gb3IgZW5kICAgICAgICAqLyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBtYWNybyAob21wdF9jYWxsYmFja19sb2NrX2luaXQsICAgICAgICAgb21wdF9jYWxsYmFja19tdXRleF9hY3F1aXJlX3QsICAgICAyNCkgLyogbG9jayBpbml0ICAgICAgICAgICAgICAgICAgICAgICAqLyBcCiAgICBtYWNybyAob21wdF9jYWxsYmFja19sb2NrX2Rlc3Ryb3ksICAgICAgb21wdF9jYWxsYmFja19tdXRleF90LCAgICAgICAgICAgICAyNSkgLyogbG9jayBkZXN0cm95ICAgICAgICAgICAgICAgICAgICAqLyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBtYWNybyAob21wdF9jYWxsYmFja19tdXRleF9hY3F1aXJlLCAgICAgb21wdF9jYWxsYmFja19tdXRleF9hY3F1aXJlX3QsICAgICAyNikgLyogbXV0ZXggYWNxdWlyZSAgICAgICAgICAgICAgICAgICAqLyBcCiAgICBtYWNybyAob21wdF9jYWxsYmFja19tdXRleF9hY3F1aXJlZCwgICAgb21wdF9jYWxsYmFja19tdXRleF90LCAgICAgICAgICAgICAyNykgLyogbXV0ZXggYWNxdWlyZWQgICAgICAgICAgICAgICAgICAqLyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBtYWNybyAob21wdF9jYWxsYmFja19uZXN0X2xvY2ssICAgICAgICAgb21wdF9jYWxsYmFja19uZXN0X2xvY2tfdCwgICAgICAgICAyOCkgLyogbmVzdCBsb2NrICAgICAgICAgICAgICAgICAgICAgICAqLyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBtYWNybyAob21wdF9jYWxsYmFja19mbHVzaCwgICAgICAgICAgICAgb21wdF9jYWxsYmFja19mbHVzaF90LCAgICAgICAgICAgICAyOSkgLyogYWZ0ZXIgZXhlY3V0aW5nIGZsdXNoICAgICAgICAgICAqLyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBtYWNybyAob21wdF9jYWxsYmFja19jYW5jZWwsICAgICAgICAgICAgb21wdF9jYWxsYmFja19jYW5jZWxfdCwgICAgICAgICAgICAzMCkgLyogY2FuY2VsIGlubmVybW9zdCBiaW5kaW5nIHJlZ2lvbiAqLyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBtYWNybyAob21wdF9jYWxsYmFja19yZWR1Y3Rpb24sICAgICAgICAgb21wdF9jYWxsYmFja19zeW5jX3JlZ2lvbl90LCAgICAgICAzMSkgLyogcmVkdWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAqLyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBtYWNybyAob21wdF9jYWxsYmFja19kaXNwYXRjaCwgICAgICAgICAgb21wdF9jYWxsYmFja19kaXNwYXRjaF90LCAgICAgICAgICAzMikgLyogZGlzcGF0Y2ggb2Ygd29yayAgICAgICAgICAgICAgICAqLyBcCiAgICBtYWNybyAob21wdF9jYWxsYmFja190YXJnZXRfZW1pLCAgICAgICAgb21wdF9jYWxsYmFja190YXJnZXRfZW1pX3QsICAgICAgICAzMykgLyogdGFyZ2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAqLyBcCiAgICBtYWNybyAob21wdF9jYWxsYmFja190YXJnZXRfZGF0YV9vcF9lbWksb21wdF9jYWxsYmFja190YXJnZXRfZGF0YV9vcF9lbWlfdCwzNCkgLyogdGFyZ2V0IGRhdGEgb3AgICAgICAgICAgICAgICAgICAqLyBcCiAgICBtYWNybyAob21wdF9jYWxsYmFja190YXJnZXRfc3VibWl0X2VtaSwgb21wdF9jYWxsYmFja190YXJnZXRfc3VibWl0X2VtaV90LCAzNSkgLyogdGFyZ2V0IHN1Ym1pdCAgICAgICAgICAgICAgICAgICAqLyBcCiAgICBtYWNybyAob21wdF9jYWxsYmFja190YXJnZXRfbWFwX2VtaSwgICAgb21wdF9jYWxsYmFja190YXJnZXRfbWFwX2VtaV90LCAgICAzNikgLyogdGFyZ2V0IG1hcCAgICAgICAgICAgICAgICAgICAgICAqLyBcCiAgICBtYWNybyAob21wdF9jYWxsYmFja19lcnJvciwgICAgICAgICAgICAgb21wdF9jYWxsYmFja19lcnJvcl90LCAgICAgICAgICAgICAzNykgLyogZXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIGltcGxlbWVudGF0aW9uIHNwZWNpZmljIHR5cGVzCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCnR5cGVkZWYgZW51bSBrbXBfbXV0ZXhfaW1wbF90IHsKI2RlZmluZSBrbXBfbXV0ZXhfaW1wbF9tYWNybyhpbXBsLCBjb2RlKSBpbXBsID0gY29kZSwKICAgIEZPUkVBQ0hfS01QX01VVEVYX0lNUEwoa21wX211dGV4X2ltcGxfbWFjcm8pCiN1bmRlZiBrbXBfbXV0ZXhfaW1wbF9tYWNybwp9IGttcF9tdXRleF9pbXBsX3Q7CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogZGVmaW5pdGlvbnMgZ2VuZXJhdGVkIGZyb20gc3BlYwogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgp0eXBlZGVmIGVudW0gb21wdF9jYWxsYmFja3NfdCB7CiAgb21wdF9jYWxsYmFja190aHJlYWRfYmVnaW4gICAgICAgICAgICAgPSAxLAogIG9tcHRfY2FsbGJhY2tfdGhyZWFkX2VuZCAgICAgICAgICAgICAgID0gMiwKICBvbXB0X2NhbGxiYWNrX3BhcmFsbGVsX2JlZ2luICAgICAgICAgICA9IDMsCiAgb21wdF9jYWxsYmFja19wYXJhbGxlbF9lbmQgICAgICAgICAgICAgPSA0LAogIG9tcHRfY2FsbGJhY2tfdGFza19jcmVhdGUgICAgICAgICAgICAgID0gNSwKICBvbXB0X2NhbGxiYWNrX3Rhc2tfc2NoZWR1bGUgICAgICAgICAgICA9IDYsCiAgb21wdF9jYWxsYmFja19pbXBsaWNpdF90YXNrICAgICAgICAgICAgPSA3LAogIG9tcHRfY2FsbGJhY2tfdGFyZ2V0ICAgICAgICAgICAgICAgICAgID0gOCwKICBvbXB0X2NhbGxiYWNrX3RhcmdldF9kYXRhX29wICAgICAgICAgICA9IDksCiAgb21wdF9jYWxsYmFja190YXJnZXRfc3VibWl0ICAgICAgICAgICAgPSAxMCwKICBvbXB0X2NhbGxiYWNrX2NvbnRyb2xfdG9vbCAgICAgICAgICAgICA9IDExLAogIG9tcHRfY2FsbGJhY2tfZGV2aWNlX2luaXRpYWxpemUgICAgICAgID0gMTIsCiAgb21wdF9jYWxsYmFja19kZXZpY2VfZmluYWxpemUgICAgICAgICAgPSAxMywKICBvbXB0X2NhbGxiYWNrX2RldmljZV9sb2FkICAgICAgICAgICAgICA9IDE0LAogIG9tcHRfY2FsbGJhY2tfZGV2aWNlX3VubG9hZCAgICAgICAgICAgID0gMTUsCiAgb21wdF9jYWxsYmFja19zeW5jX3JlZ2lvbl93YWl0ICAgICAgICAgPSAxNiwKICBvbXB0X2NhbGxiYWNrX211dGV4X3JlbGVhc2VkICAgICAgICAgICA9IDE3LAogIG9tcHRfY2FsbGJhY2tfZGVwZW5kZW5jZXMgICAgICAgICAgICAgID0gMTgsCiAgb21wdF9jYWxsYmFja190YXNrX2RlcGVuZGVuY2UgICAgICAgICAgPSAxOSwKICBvbXB0X2NhbGxiYWNrX3dvcmsgICAgICAgICAgICAgICAgICAgICA9IDIwLAogIG9tcHRfY2FsbGJhY2tfbWFzdGVyICAgICBERVBSRUNBVEVEXzUxID0gMjEsCiAgb21wdF9jYWxsYmFja19tYXNrZWQgICAgICAgICAgICAgICAgICAgPSAyMSwKICBvbXB0X2NhbGxiYWNrX3RhcmdldF9tYXAgICAgICAgICAgICAgICA9IDIyLAogIG9tcHRfY2FsbGJhY2tfc3luY19yZWdpb24gICAgICAgICAgICAgID0gMjMsCiAgb21wdF9jYWxsYmFja19sb2NrX2luaXQgICAgICAgICAgICAgICAgPSAyNCwKICBvbXB0X2NhbGxiYWNrX2xvY2tfZGVzdHJveSAgICAgICAgICAgICA9IDI1LAogIG9tcHRfY2FsbGJhY2tfbXV0ZXhfYWNxdWlyZSAgICAgICAgICAgID0gMjYsCiAgb21wdF9jYWxsYmFja19tdXRleF9hY3F1aXJlZCAgICAgICAgICAgPSAyNywKICBvbXB0X2NhbGxiYWNrX25lc3RfbG9jayAgICAgICAgICAgICAgICA9IDI4LAogIG9tcHRfY2FsbGJhY2tfZmx1c2ggICAgICAgICAgICAgICAgICAgID0gMjksCiAgb21wdF9jYWxsYmFja19jYW5jZWwgICAgICAgICAgICAgICAgICAgPSAzMCwKICBvbXB0X2NhbGxiYWNrX3JlZHVjdGlvbiAgICAgICAgICAgICAgICA9IDMxLAogIG9tcHRfY2FsbGJhY2tfZGlzcGF0Y2ggICAgICAgICAgICAgICAgID0gMzIsCiAgb21wdF9jYWxsYmFja190YXJnZXRfZW1pICAgICAgICAgICAgICAgPSAzMywKICBvbXB0X2NhbGxiYWNrX3RhcmdldF9kYXRhX29wX2VtaSAgICAgICA9IDM0LAogIG9tcHRfY2FsbGJhY2tfdGFyZ2V0X3N1Ym1pdF9lbWkgICAgICAgID0gMzUsCiAgb21wdF9jYWxsYmFja190YXJnZXRfbWFwX2VtaSAgICAgICAgICAgPSAzNiwKICBvbXB0X2NhbGxiYWNrX2Vycm9yICAgICAgICAgICAgICAgICAgICA9IDM3Cn0gb21wdF9jYWxsYmFja3NfdDsKCnR5cGVkZWYgZW51bSBvbXB0X3JlY29yZF90IHsKICBvbXB0X3JlY29yZF9vbXB0ICAgICAgICAgICAgICAgPSAxLAogIG9tcHRfcmVjb3JkX25hdGl2ZSAgICAgICAgICAgICA9IDIsCiAgb21wdF9yZWNvcmRfaW52YWxpZCAgICAgICAgICAgID0gMwp9IG9tcHRfcmVjb3JkX3Q7Cgp0eXBlZGVmIGVudW0gb21wdF9yZWNvcmRfbmF0aXZlX3QgewogIG9tcHRfcmVjb3JkX25hdGl2ZV9pbmZvICA9IDEsCiAgb21wdF9yZWNvcmRfbmF0aXZlX2V2ZW50ID0gMgp9IG9tcHRfcmVjb3JkX25hdGl2ZV90OwoKdHlwZWRlZiBlbnVtIG9tcHRfc2V0X3Jlc3VsdF90IHsKICBvbXB0X3NldF9lcnJvciAgICAgICAgICAgID0gMCwKICBvbXB0X3NldF9uZXZlciAgICAgICAgICAgID0gMSwKICBvbXB0X3NldF9pbXBvc3NpYmxlICAgICAgID0gMiwKICBvbXB0X3NldF9zb21ldGltZXMgICAgICAgID0gMywKICBvbXB0X3NldF9zb21ldGltZXNfcGFpcmVkID0gNCwKICBvbXB0X3NldF9hbHdheXMgICAgICAgICAgID0gNQp9IG9tcHRfc2V0X3Jlc3VsdF90OwoKdHlwZWRlZiB1aW50NjRfdCBvbXB0X2lkX3Q7Cgp0eXBlZGVmIHVpbnQ2NF90IG9tcHRfZGV2aWNlX3RpbWVfdDsKCnR5cGVkZWYgdWludDY0X3Qgb21wdF9idWZmZXJfY3Vyc29yX3Q7Cgp0eXBlZGVmIGVudW0gb21wdF90aHJlYWRfdCB7CiAgb21wdF90aHJlYWRfaW5pdGlhbCAgICAgICAgICAgICAgICAgPSAxLAogIG9tcHRfdGhyZWFkX3dvcmtlciAgICAgICAgICAgICAgICAgID0gMiwKICBvbXB0X3RocmVhZF9vdGhlciAgICAgICAgICAgICAgICAgICA9IDMsCiAgb21wdF90aHJlYWRfdW5rbm93biAgICAgICAgICAgICAgICAgPSA0Cn0gb21wdF90aHJlYWRfdDsKCnR5cGVkZWYgZW51bSBvbXB0X3Njb3BlX2VuZHBvaW50X3QgewogIG9tcHRfc2NvcGVfYmVnaW4gICAgICAgICAgICAgICAgICAgID0gMSwKICBvbXB0X3Njb3BlX2VuZCAgICAgICAgICAgICAgICAgICAgICA9IDIsCiAgb21wdF9zY29wZV9iZWdpbmVuZCAgICAgICAgICAgICAgICAgPSAzCn0gb21wdF9zY29wZV9lbmRwb2ludF90OwoKdHlwZWRlZiBlbnVtIG9tcHRfZGlzcGF0Y2hfdCB7CiAgb21wdF9kaXNwYXRjaF9pdGVyYXRpb24gICAgICAgICAgICAgPSAxLAogIG9tcHRfZGlzcGF0Y2hfc2VjdGlvbiAgICAgICAgICAgICAgID0gMgp9IG9tcHRfZGlzcGF0Y2hfdDsKCnR5cGVkZWYgZW51bSBvbXB0X3N5bmNfcmVnaW9uX3QgewogIG9tcHRfc3luY19yZWdpb25fYmFycmllciAgICAgICAgICAgICAgICBERVBSRUNBVEVEXzUxID0gMSwKICBvbXB0X3N5bmNfcmVnaW9uX2JhcnJpZXJfaW1wbGljaXQgICAgICAgREVQUkVDQVRFRF81MSA9IDIsCiAgb21wdF9zeW5jX3JlZ2lvbl9iYXJyaWVyX2V4cGxpY2l0ICAgICAgID0gMywKICBvbXB0X3N5bmNfcmVnaW9uX2JhcnJpZXJfaW1wbGVtZW50YXRpb24gPSA0LAogIG9tcHRfc3luY19yZWdpb25fdGFza3dhaXQgICAgICAgICAgICAgICA9IDUsCiAgb21wdF9zeW5jX3JlZ2lvbl90YXNrZ3JvdXAgICAgICAgICAgICAgID0gNiwKICBvbXB0X3N5bmNfcmVnaW9uX3JlZHVjdGlvbiAgICAgICAgICAgICAgPSA3LAogIG9tcHRfc3luY19yZWdpb25fYmFycmllcl9pbXBsaWNpdF93b3Jrc2hhcmUgPSA4LAogIG9tcHRfc3luY19yZWdpb25fYmFycmllcl9pbXBsaWNpdF9wYXJhbGxlbCA9IDksCiAgb21wdF9zeW5jX3JlZ2lvbl9iYXJyaWVyX3RlYW1zID0gMTAKfSBvbXB0X3N5bmNfcmVnaW9uX3Q7Cgp0eXBlZGVmIGVudW0gb21wdF90YXJnZXRfZGF0YV9vcF90IHsKICBvbXB0X3RhcmdldF9kYXRhX2FsbG9jICAgICAgICAgICAgICAgICAgICAgID0gMSwKICBvbXB0X3RhcmdldF9kYXRhX3RyYW5zZmVyX3RvX2RldmljZSAgICAgICAgID0gMiwKICBvbXB0X3RhcmdldF9kYXRhX3RyYW5zZmVyX2Zyb21fZGV2aWNlICAgICAgID0gMywKICBvbXB0X3RhcmdldF9kYXRhX2RlbGV0ZSAgICAgICAgICAgICAgICAgICAgID0gNCwKICBvbXB0X3RhcmdldF9kYXRhX2Fzc29jaWF0ZSAgICAgICAgICAgICAgICAgID0gNSwKICBvbXB0X3RhcmdldF9kYXRhX2Rpc2Fzc29jaWF0ZSAgICAgICAgICAgICAgID0gNiwKICBvbXB0X3RhcmdldF9kYXRhX2FsbG9jX2FzeW5jICAgICAgICAgICAgICAgID0gMTcsCiAgb21wdF90YXJnZXRfZGF0YV90cmFuc2Zlcl90b19kZXZpY2VfYXN5bmMgICA9IDE4LAogIG9tcHRfdGFyZ2V0X2RhdGFfdHJhbnNmZXJfZnJvbV9kZXZpY2VfYXN5bmMgPSAxOSwKICBvbXB0X3RhcmdldF9kYXRhX2RlbGV0ZV9hc3luYyAgICAgICAgICAgICAgID0gMjAKfSBvbXB0X3RhcmdldF9kYXRhX29wX3Q7Cgp0eXBlZGVmIGVudW0gb21wdF93b3JrX3QgewogIG9tcHRfd29ya19sb29wICAgICAgICAgICAgICAgPSAxLAogIG9tcHRfd29ya19zZWN0aW9ucyAgICAgICAgICAgPSAyLAogIG9tcHRfd29ya19zaW5nbGVfZXhlY3V0b3IgICAgPSAzLAogIG9tcHRfd29ya19zaW5nbGVfb3RoZXIgICAgICAgPSA0LAogIG9tcHRfd29ya193b3Jrc2hhcmUgICAgICAgICAgPSA1LAogIG9tcHRfd29ya19kaXN0cmlidXRlICAgICAgICAgPSA2LAogIG9tcHRfd29ya190YXNrbG9vcCAgICAgICAgICAgPSA3LAogIG9tcHRfd29ya19zY29wZSAgICAgICAgICAgICAgPSA4Cn0gb21wdF93b3JrX3Q7Cgp0eXBlZGVmIGVudW0gb21wdF9tdXRleF90IHsKICBvbXB0X211dGV4X2xvY2sgICAgICAgICAgICAgICAgICAgICA9IDEsCiAgb21wdF9tdXRleF90ZXN0X2xvY2sgICAgICAgICAgICAgICAgPSAyLAogIG9tcHRfbXV0ZXhfbmVzdF9sb2NrICAgICAgICAgICAgICAgID0gMywKICBvbXB0X211dGV4X3Rlc3RfbmVzdF9sb2NrICAgICAgICAgICA9IDQsCiAgb21wdF9tdXRleF9jcml0aWNhbCAgICAgICAgICAgICAgICAgPSA1LAogIG9tcHRfbXV0ZXhfYXRvbWljICAgICAgICAgICAgICAgICAgID0gNiwKICBvbXB0X211dGV4X29yZGVyZWQgICAgICAgICAgICAgICAgICA9IDcKfSBvbXB0X211dGV4X3Q7Cgp0eXBlZGVmIGVudW0gb21wdF9uYXRpdmVfbW9uX2ZsYWdfdCB7CiAgb21wdF9uYXRpdmVfZGF0YV9tb3Rpb25fZXhwbGljaXQgICAgPSAweDAxLAogIG9tcHRfbmF0aXZlX2RhdGFfbW90aW9uX2ltcGxpY2l0ICAgID0gMHgwMiwKICBvbXB0X25hdGl2ZV9rZXJuZWxfaW52b2NhdGlvbiAgICAgICA9IDB4MDQsCiAgb21wdF9uYXRpdmVfa2VybmVsX2V4ZWN1dGlvbiAgICAgICAgPSAweDA4LAogIG9tcHRfbmF0aXZlX2RyaXZlciAgICAgICAgICAgICAgICAgID0gMHgxMCwKICBvbXB0X25hdGl2ZV9ydW50aW1lICAgICAgICAgICAgICAgICA9IDB4MjAsCiAgb21wdF9uYXRpdmVfb3ZlcmhlYWQgICAgICAgICAgICAgICAgPSAweDQwLAogIG9tcHRfbmF0aXZlX2lkbGVuZXNzICAgICAgICAgICAgICAgID0gMHg4MAp9IG9tcHRfbmF0aXZlX21vbl9mbGFnX3Q7Cgp0eXBlZGVmIGVudW0gb21wdF90YXNrX2ZsYWdfdCB7CiAgb21wdF90YXNrX2luaXRpYWwgICAgICAgICAgICAgICAgICAgPSAweDAwMDAwMDAxLAogIG9tcHRfdGFza19pbXBsaWNpdCAgICAgICAgICAgICAgICAgID0gMHgwMDAwMDAwMiwKICBvbXB0X3Rhc2tfZXhwbGljaXQgICAgICAgICAgICAgICAgICA9IDB4MDAwMDAwMDQsCiAgb21wdF90YXNrX3RhcmdldCAgICAgICAgICAgICAgICAgICAgPSAweDAwMDAwMDA4LAogIG9tcHRfdGFza190YXNrd2FpdCAgICAgICAgICAgICAgICAgID0gMHgwMDAwMDAxMCwKICBvbXB0X3Rhc2tfdW5kZWZlcnJlZCAgICAgICAgICAgICAgICA9IDB4MDgwMDAwMDAsCiAgb21wdF90YXNrX3VudGllZCAgICAgICAgICAgICAgICAgICAgPSAweDEwMDAwMDAwLAogIG9tcHRfdGFza19maW5hbCAgICAgICAgICAgICAgICAgICAgID0gMHgyMDAwMDAwMCwKICBvbXB0X3Rhc2tfbWVyZ2VhYmxlICAgICAgICAgICAgICAgICA9IDB4NDAwMDAwMDAsCiAgb21wdF90YXNrX21lcmdlZCAgICAgICAgICAgICAgICAgICAgPSAweDgwMDAwMDAwCn0gb21wdF90YXNrX2ZsYWdfdDsKCnR5cGVkZWYgZW51bSBvbXB0X3Rhc2tfc3RhdHVzX3QgewogIG9tcHRfdGFza19jb21wbGV0ZSAgICAgID0gMSwKICBvbXB0X3Rhc2tfeWllbGQgICAgICAgICA9IDIsCiAgb21wdF90YXNrX2NhbmNlbCAgICAgICAgPSAzLAogIG9tcHRfdGFza19kZXRhY2ggICAgICAgID0gNCwKICBvbXB0X3Rhc2tfZWFybHlfZnVsZmlsbCA9IDUsCiAgb21wdF90YXNrX2xhdGVfZnVsZmlsbCAgPSA2LAogIG9tcHRfdGFza19zd2l0Y2ggICAgICAgID0gNywKICBvbXB0X3Rhc2t3YWl0X2NvbXBsZXRlICA9IDgKfSBvbXB0X3Rhc2tfc3RhdHVzX3Q7Cgp0eXBlZGVmIGVudW0gb21wdF90YXJnZXRfdCB7CiAgb21wdF90YXJnZXQgICAgICAgICAgICAgICAgICAgICAgICAgPSAxLAogIG9tcHRfdGFyZ2V0X2VudGVyX2RhdGEgICAgICAgICAgICAgID0gMiwKICBvbXB0X3RhcmdldF9leGl0X2RhdGEgICAgICAgICAgICAgICA9IDMsCiAgb21wdF90YXJnZXRfdXBkYXRlICAgICAgICAgICAgICAgICAgPSA0LAogIG9tcHRfdGFyZ2V0X25vd2FpdCAgICAgICAgICAgICAgICAgID0gOSwKICBvbXB0X3RhcmdldF9lbnRlcl9kYXRhX25vd2FpdCAgICAgICA9IDEwLAogIG9tcHRfdGFyZ2V0X2V4aXRfZGF0YV9ub3dhaXQgICAgICAgID0gMTEsCiAgb21wdF90YXJnZXRfdXBkYXRlX25vd2FpdCAgICAgICAgICAgPSAxMgp9IG9tcHRfdGFyZ2V0X3Q7Cgp0eXBlZGVmIGVudW0gb21wdF9wYXJhbGxlbF9mbGFnX3QgewogIG9tcHRfcGFyYWxsZWxfaW52b2tlcl9wcm9ncmFtID0gMHgwMDAwMDAwMSwKICBvbXB0X3BhcmFsbGVsX2ludm9rZXJfcnVudGltZSA9IDB4MDAwMDAwMDIsCiAgb21wdF9wYXJhbGxlbF9sZWFndWUgICAgICAgICAgPSAweDQwMDAwMDAwLAogIG9tcHRfcGFyYWxsZWxfdGVhbSAgICAgICAgICAgID0gMHg4MDAwMDAwMAp9IG9tcHRfcGFyYWxsZWxfZmxhZ190OwoKdHlwZWRlZiBlbnVtIG9tcHRfdGFyZ2V0X21hcF9mbGFnX3QgewogIG9tcHRfdGFyZ2V0X21hcF9mbGFnX3RvICAgICAgICAgICAgID0gMHgwMSwKICBvbXB0X3RhcmdldF9tYXBfZmxhZ19mcm9tICAgICAgICAgICA9IDB4MDIsCiAgb21wdF90YXJnZXRfbWFwX2ZsYWdfYWxsb2MgICAgICAgICAgPSAweDA0LAogIG9tcHRfdGFyZ2V0X21hcF9mbGFnX3JlbGVhc2UgICAgICAgID0gMHgwOCwKICBvbXB0X3RhcmdldF9tYXBfZmxhZ19kZWxldGUgICAgICAgICA9IDB4MTAsCiAgb21wdF90YXJnZXRfbWFwX2ZsYWdfaW1wbGljaXQgICAgICAgPSAweDIwCn0gb21wdF90YXJnZXRfbWFwX2ZsYWdfdDsKCnR5cGVkZWYgZW51bSBvbXB0X2RlcGVuZGVuY2VfdHlwZV90IHsKICBvbXB0X2RlcGVuZGVuY2VfdHlwZV9pbiAgICAgICAgICAgICAgPSAxLAogIG9tcHRfZGVwZW5kZW5jZV90eXBlX291dCAgICAgICAgICAgICA9IDIsCiAgb21wdF9kZXBlbmRlbmNlX3R5cGVfaW5vdXQgICAgICAgICAgID0gMywKICBvbXB0X2RlcGVuZGVuY2VfdHlwZV9tdXRleGlub3V0c2V0ICAgPSA0LAogIG9tcHRfZGVwZW5kZW5jZV90eXBlX3NvdXJjZSAgICAgICAgICA9IDUsCiAgb21wdF9kZXBlbmRlbmNlX3R5cGVfc2luayAgICAgICAgICAgID0gNiwKICBvbXB0X2RlcGVuZGVuY2VfdHlwZV9pbm91dHNldCAgICAgICAgPSA3Cn0gb21wdF9kZXBlbmRlbmNlX3R5cGVfdDsKCnR5cGVkZWYgZW51bSBvbXB0X3NldmVyaXR5X3QgewogIG9tcHRfd2FybmluZyAgICAgICAgICAgICAgICAgICAgICAgICA9IDEsCiAgb21wdF9mYXRhbCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMgp9IG9tcHRfc2V2ZXJpdHlfdDsKCnR5cGVkZWYgZW51bSBvbXB0X2NhbmNlbF9mbGFnX3QgewogIG9tcHRfY2FuY2VsX3BhcmFsbGVsICAgICAgID0gMHgwMSwKICBvbXB0X2NhbmNlbF9zZWN0aW9ucyAgICAgICA9IDB4MDIsCiAgb21wdF9jYW5jZWxfbG9vcCAgICAgICAgICAgPSAweDA0LAogIG9tcHRfY2FuY2VsX3Rhc2tncm91cCAgICAgID0gMHgwOCwKICBvbXB0X2NhbmNlbF9hY3RpdmF0ZWQgICAgICA9IDB4MTAsCiAgb21wdF9jYW5jZWxfZGV0ZWN0ZWQgICAgICAgPSAweDIwLAogIG9tcHRfY2FuY2VsX2Rpc2NhcmRlZF90YXNrID0gMHg0MAp9IG9tcHRfY2FuY2VsX2ZsYWdfdDsKCnR5cGVkZWYgdWludDY0X3Qgb21wdF9od2lkX3Q7Cgp0eXBlZGVmIHVpbnQ2NF90IG9tcHRfd2FpdF9pZF90OwoKdHlwZWRlZiBlbnVtIG9tcHRfZnJhbWVfZmxhZ190IHsKICBvbXB0X2ZyYW1lX3J1bnRpbWUgICAgICAgID0gMHgwMCwKICBvbXB0X2ZyYW1lX2FwcGxpY2F0aW9uICAgID0gMHgwMSwKICBvbXB0X2ZyYW1lX2NmYSAgICAgICAgICAgID0gMHgxMCwKICBvbXB0X2ZyYW1lX2ZyYW1lcG9pbnRlciAgID0gMHgyMCwKICBvbXB0X2ZyYW1lX3N0YWNrYWRkcmVzcyAgID0gMHgzMAp9IG9tcHRfZnJhbWVfZmxhZ190OwoKdHlwZWRlZiBlbnVtIG9tcHRfc3RhdGVfdCB7CiAgb21wdF9zdGF0ZV93b3JrX3NlcmlhbCAgICAgICAgICAgICAgICAgICAgICA9IDB4MDAwLAogIG9tcHRfc3RhdGVfd29ya19wYXJhbGxlbCAgICAgICAgICAgICAgICAgICAgPSAweDAwMSwKICBvbXB0X3N0YXRlX3dvcmtfcmVkdWN0aW9uICAgICAgICAgICAgICAgICAgID0gMHgwMDIsCgogIG9tcHRfc3RhdGVfd2FpdF9iYXJyaWVyICAgICAgICAgICAgICAgICAgICAgREVQUkVDQVRFRF81MSA9IDB4MDEwLAogIG9tcHRfc3RhdGVfd2FpdF9iYXJyaWVyX2ltcGxpY2l0X3BhcmFsbGVsICAgPSAweDAxMSwKICBvbXB0X3N0YXRlX3dhaXRfYmFycmllcl9pbXBsaWNpdF93b3Jrc2hhcmUgID0gMHgwMTIsCiAgb21wdF9zdGF0ZV93YWl0X2JhcnJpZXJfaW1wbGljaXQgICAgICAgICAgICBERVBSRUNBVEVEXzUxID0gMHgwMTMsCiAgb21wdF9zdGF0ZV93YWl0X2JhcnJpZXJfZXhwbGljaXQgICAgICAgICAgICA9IDB4MDE0LAogIG9tcHRfc3RhdGVfd2FpdF9iYXJyaWVyX2ltcGxlbWVudGF0aW9uICAgICAgPSAweDAxNSwKICBvbXB0X3N0YXRlX3dhaXRfYmFycmllcl90ZWFtcyAgICAgICAgICAgICAgID0gMHgwMTYsCgogIG9tcHRfc3RhdGVfd2FpdF90YXNrd2FpdCAgICAgICAgICAgICAgICAgICAgPSAweDAyMCwKICBvbXB0X3N0YXRlX3dhaXRfdGFza2dyb3VwICAgICAgICAgICAgICAgICAgID0gMHgwMjEsCgogIG9tcHRfc3RhdGVfd2FpdF9tdXRleCAgICAgICAgICAgICAgICAgICAgICAgPSAweDA0MCwKICBvbXB0X3N0YXRlX3dhaXRfbG9jayAgICAgICAgICAgICAgICAgICAgICAgID0gMHgwNDEsCiAgb21wdF9zdGF0ZV93YWl0X2NyaXRpY2FsICAgICAgICAgICAgICAgICAgICA9IDB4MDQyLAogIG9tcHRfc3RhdGVfd2FpdF9hdG9taWMgICAgICAgICAgICAgICAgICAgICAgPSAweDA0MywKICBvbXB0X3N0YXRlX3dhaXRfb3JkZXJlZCAgICAgICAgICAgICAgICAgICAgID0gMHgwNDQsCgogIG9tcHRfc3RhdGVfd2FpdF90YXJnZXQgICAgICAgICAgICAgICAgICAgICAgPSAweDA4MCwKICBvbXB0X3N0YXRlX3dhaXRfdGFyZ2V0X21hcCAgICAgICAgICAgICAgICAgID0gMHgwODEsCiAgb21wdF9zdGF0ZV93YWl0X3RhcmdldF91cGRhdGUgICAgICAgICAgICAgICA9IDB4MDgyLAoKICBvbXB0X3N0YXRlX2lkbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHgxMDAsCiAgb21wdF9zdGF0ZV9vdmVyaGVhZCAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4MTAxLAogIG9tcHRfc3RhdGVfdW5kZWZpbmVkICAgICAgICAgICAgICAgICAgICAgICAgPSAweDEwMgp9IG9tcHRfc3RhdGVfdDsKCnR5cGVkZWYgdWludDY0X3QgKCpvbXB0X2dldF91bmlxdWVfaWRfdCkgKHZvaWQpOwoKdHlwZWRlZiB1aW50NjRfdCBvbXBkX3NpemVfdDsKCnR5cGVkZWYgdWludDY0X3Qgb21wZF93YWl0X2lkX3Q7Cgp0eXBlZGVmIHVpbnQ2NF90IG9tcGRfYWRkcl90Owp0eXBlZGVmIGludDY0X3QgIG9tcGRfd29yZF90Owp0eXBlZGVmIHVpbnQ2NF90IG9tcGRfc2VnX3Q7Cgp0eXBlZGVmIHVpbnQ2NF90IG9tcGRfZGV2aWNlX3Q7Cgp0eXBlZGVmIHVpbnQ2NF90IG9tcGRfdGhyZWFkX2lkX3Q7Cgp0eXBlZGVmIGVudW0gb21wZF9zY29wZV90IHsKICBvbXBkX3Njb3BlX2dsb2JhbCA9IDEsCiAgb21wZF9zY29wZV9hZGRyZXNzX3NwYWNlID0gMiwKICBvbXBkX3Njb3BlX3RocmVhZCA9IDMsCiAgb21wZF9zY29wZV9wYXJhbGxlbCA9IDQsCiAgb21wZF9zY29wZV9pbXBsaWNpdF90YXNrID0gNSwKICBvbXBkX3Njb3BlX3Rhc2sgPSA2Cn0gb21wZF9zY29wZV90OwoKdHlwZWRlZiB1aW50NjRfdCBvbXBkX2ljdl9pZF90OwoKdHlwZWRlZiBlbnVtIG9tcGRfcmNfdCB7CiAgb21wZF9yY19vayA9IDAsCiAgb21wZF9yY191bmF2YWlsYWJsZSA9IDEsCiAgb21wZF9yY19zdGFsZV9oYW5kbGUgPSAyLAogIG9tcGRfcmNfYmFkX2lucHV0ID0gMywKICBvbXBkX3JjX2Vycm9yID0gNCwKICBvbXBkX3JjX3Vuc3VwcG9ydGVkID0gNSwKICBvbXBkX3JjX25lZWRzX3N0YXRlX3RyYWNraW5nID0gNiwKICBvbXBkX3JjX2luY29tcGF0aWJsZSA9IDcsCiAgb21wZF9yY19kZXZpY2VfcmVhZF9lcnJvciA9IDgsCiAgb21wZF9yY19kZXZpY2Vfd3JpdGVfZXJyb3IgPSA5LAogIG9tcGRfcmNfbm9tZW0gPSAxMCwKICBvbXBkX3JjX2luY29tcGxldGUgPSAxMSwKICBvbXBkX3JjX2NhbGxiYWNrX2Vycm9yID0gMTIKfSBvbXBkX3JjX3Q7Cgp0eXBlZGVmIHZvaWQgKCpvbXB0X2ludGVyZmFjZV9mbl90KSAodm9pZCk7Cgp0eXBlZGVmIG9tcHRfaW50ZXJmYWNlX2ZuX3QgKCpvbXB0X2Z1bmN0aW9uX2xvb2t1cF90KSAoCiAgY29uc3QgY2hhciAqaW50ZXJmYWNlX2Z1bmN0aW9uX25hbWUKKTsKCnR5cGVkZWYgdW5pb24gb21wdF9kYXRhX3QgewogIHVpbnQ2NF90IHZhbHVlOwogIHZvaWQgKnB0cjsKfSBvbXB0X2RhdGFfdDsKCnR5cGVkZWYgc3RydWN0IG9tcHRfZnJhbWVfdCB7CiAgb21wdF9kYXRhX3QgZXhpdF9mcmFtZTsKICBvbXB0X2RhdGFfdCBlbnRlcl9mcmFtZTsKICBpbnQgZXhpdF9mcmFtZV9mbGFnczsKICBpbnQgZW50ZXJfZnJhbWVfZmxhZ3M7Cn0gb21wdF9mcmFtZV90OwoKdHlwZWRlZiB2b2lkICgqb21wdF9jYWxsYmFja190KSAodm9pZCk7Cgp0eXBlZGVmIHZvaWQgb21wdF9kZXZpY2VfdDsKCnR5cGVkZWYgdm9pZCBvbXB0X2J1ZmZlcl90OwoKdHlwZWRlZiB2b2lkICgqb21wdF9jYWxsYmFja19idWZmZXJfcmVxdWVzdF90KSAoCiAgaW50IGRldmljZV9udW0sCiAgb21wdF9idWZmZXJfdCAqKmJ1ZmZlciwKICBzaXplX3QgKmJ5dGVzCik7Cgp0eXBlZGVmIHZvaWQgKCpvbXB0X2NhbGxiYWNrX2J1ZmZlcl9jb21wbGV0ZV90KSAoCiAgaW50IGRldmljZV9udW0sCiAgb21wdF9idWZmZXJfdCAqYnVmZmVyLAogIHNpemVfdCBieXRlcywKICBvbXB0X2J1ZmZlcl9jdXJzb3JfdCBiZWdpbiwKICBpbnQgYnVmZmVyX293bmVkCik7Cgp0eXBlZGVmIHZvaWQgKCpvbXB0X2ZpbmFsaXplX3QpICgKICBvbXB0X2RhdGFfdCAqdG9vbF9kYXRhCik7Cgp0eXBlZGVmIGludCAoKm9tcHRfaW5pdGlhbGl6ZV90KSAoCiAgb21wdF9mdW5jdGlvbl9sb29rdXBfdCBsb29rdXAsCiAgaW50IGluaXRpYWxfZGV2aWNlX251bSwKICBvbXB0X2RhdGFfdCAqdG9vbF9kYXRhCik7Cgp0eXBlZGVmIHN0cnVjdCBvbXB0X3N0YXJ0X3Rvb2xfcmVzdWx0X3QgewogIG9tcHRfaW5pdGlhbGl6ZV90IGluaXRpYWxpemU7CiAgb21wdF9maW5hbGl6ZV90IGZpbmFsaXplOwogIG9tcHRfZGF0YV90IHRvb2xfZGF0YTsKfSBvbXB0X3N0YXJ0X3Rvb2xfcmVzdWx0X3Q7Cgp0eXBlZGVmIHN0cnVjdCBvbXB0X3JlY29yZF9hYnN0cmFjdF90IHsKICBvbXB0X3JlY29yZF9uYXRpdmVfdCByY2xhc3M7CiAgY29uc3QgY2hhciAqdHlwZTsKICBvbXB0X2RldmljZV90aW1lX3Qgc3RhcnRfdGltZTsKICBvbXB0X2RldmljZV90aW1lX3QgZW5kX3RpbWU7CiAgb21wdF9od2lkX3QgaHdpZDsKfSBvbXB0X3JlY29yZF9hYnN0cmFjdF90OwoKdHlwZWRlZiBzdHJ1Y3Qgb21wdF9kZXBlbmRlbmNlX3QgewogIG9tcHRfZGF0YV90IHZhcmlhYmxlOwogIG9tcHRfZGVwZW5kZW5jZV90eXBlX3QgZGVwZW5kZW5jZV90eXBlOwp9IG9tcHRfZGVwZW5kZW5jZV90OwoKdHlwZWRlZiBpbnQgKCpvbXB0X2VudW1lcmF0ZV9zdGF0ZXNfdCkgKAogIGludCBjdXJyZW50X3N0YXRlLAogIGludCAqbmV4dF9zdGF0ZSwKICBjb25zdCBjaGFyICoqbmV4dF9zdGF0ZV9uYW1lCik7Cgp0eXBlZGVmIGludCAoKm9tcHRfZW51bWVyYXRlX211dGV4X2ltcGxzX3QpICgKICBpbnQgY3VycmVudF9pbXBsLAogIGludCAqbmV4dF9pbXBsLAogIGNvbnN0IGNoYXIgKipuZXh0X2ltcGxfbmFtZQopOwoKdHlwZWRlZiBvbXB0X3NldF9yZXN1bHRfdCAoKm9tcHRfc2V0X2NhbGxiYWNrX3QpICgKICBvbXB0X2NhbGxiYWNrc190IGV2ZW50LAogIG9tcHRfY2FsbGJhY2tfdCBjYWxsYmFjawopOwoKdHlwZWRlZiBpbnQgKCpvbXB0X2dldF9jYWxsYmFja190KSAoCiAgb21wdF9jYWxsYmFja3NfdCBldmVudCwKICBvbXB0X2NhbGxiYWNrX3QgKmNhbGxiYWNrCik7Cgp0eXBlZGVmIG9tcHRfZGF0YV90ICooKm9tcHRfZ2V0X3RocmVhZF9kYXRhX3QpICh2b2lkKTsKCnR5cGVkZWYgaW50ICgqb21wdF9nZXRfbnVtX3Byb2NzX3QpICh2b2lkKTsKCnR5cGVkZWYgaW50ICgqb21wdF9nZXRfbnVtX3BsYWNlc190KSAodm9pZCk7Cgp0eXBlZGVmIGludCAoKm9tcHRfZ2V0X3BsYWNlX3Byb2NfaWRzX3QpICgKICBpbnQgcGxhY2VfbnVtLAogIGludCBpZHNfc2l6ZSwKICBpbnQgKmlkcwopOwoKdHlwZWRlZiBpbnQgKCpvbXB0X2dldF9wbGFjZV9udW1fdCkgKHZvaWQpOwoKdHlwZWRlZiBpbnQgKCpvbXB0X2dldF9wYXJ0aXRpb25fcGxhY2VfbnVtc190KSAoCiAgaW50IHBsYWNlX251bXNfc2l6ZSwKICBpbnQgKnBsYWNlX251bXMKKTsKCnR5cGVkZWYgaW50ICgqb21wdF9nZXRfcHJvY19pZF90KSAodm9pZCk7Cgp0eXBlZGVmIGludCAoKm9tcHRfZ2V0X3N0YXRlX3QpICgKICBvbXB0X3dhaXRfaWRfdCAqd2FpdF9pZAopOwoKdHlwZWRlZiBpbnQgKCpvbXB0X2dldF9wYXJhbGxlbF9pbmZvX3QpICgKICBpbnQgYW5jZXN0b3JfbGV2ZWwsCiAgb21wdF9kYXRhX3QgKipwYXJhbGxlbF9kYXRhLAogIGludCAqdGVhbV9zaXplCik7Cgp0eXBlZGVmIGludCAoKm9tcHRfZ2V0X3Rhc2tfaW5mb190KSAoCiAgaW50IGFuY2VzdG9yX2xldmVsLAogIGludCAqZmxhZ3MsCiAgb21wdF9kYXRhX3QgKip0YXNrX2RhdGEsCiAgb21wdF9mcmFtZV90ICoqdGFza19mcmFtZSwKICBvbXB0X2RhdGFfdCAqKnBhcmFsbGVsX2RhdGEsCiAgaW50ICp0aHJlYWRfbnVtCik7Cgp0eXBlZGVmIGludCAoKm9tcHRfZ2V0X3Rhc2tfbWVtb3J5X3QpKAogIHZvaWQgKiphZGRyLAogIHNpemVfdCAqc2l6ZSwKICBpbnQgYmxvY2sKKTsKCnR5cGVkZWYgaW50ICgqb21wdF9nZXRfdGFyZ2V0X2luZm9fdCkgKAogIHVpbnQ2NF90ICpkZXZpY2VfbnVtLAogIG9tcHRfaWRfdCAqdGFyZ2V0X2lkLAogIG9tcHRfaWRfdCAqaG9zdF9vcF9pZAopOwoKdHlwZWRlZiBpbnQgKCpvbXB0X2dldF9udW1fZGV2aWNlc190KSAodm9pZCk7Cgp0eXBlZGVmIHZvaWQgKCpvbXB0X2ZpbmFsaXplX3Rvb2xfdCkgKHZvaWQpOwoKdHlwZWRlZiBpbnQgKCpvbXB0X2dldF9kZXZpY2VfbnVtX3Byb2NzX3QpICgKICBvbXB0X2RldmljZV90ICpkZXZpY2UKKTsKCnR5cGVkZWYgb21wdF9kZXZpY2VfdGltZV90ICgqb21wdF9nZXRfZGV2aWNlX3RpbWVfdCkgKAogIG9tcHRfZGV2aWNlX3QgKmRldmljZQopOwoKdHlwZWRlZiBkb3VibGUgKCpvbXB0X3RyYW5zbGF0ZV90aW1lX3QpICgKICBvbXB0X2RldmljZV90ICpkZXZpY2UsCiAgb21wdF9kZXZpY2VfdGltZV90IHRpbWUKKTsKCnR5cGVkZWYgb21wdF9zZXRfcmVzdWx0X3QgKCpvbXB0X3NldF90cmFjZV9vbXB0X3QpICgKICBvbXB0X2RldmljZV90ICpkZXZpY2UsCiAgdW5zaWduZWQgaW50IGVuYWJsZSwKICB1bnNpZ25lZCBpbnQgZXR5cGUKKTsKCnR5cGVkZWYgb21wdF9zZXRfcmVzdWx0X3QgKCpvbXB0X3NldF90cmFjZV9uYXRpdmVfdCkgKAogIG9tcHRfZGV2aWNlX3QgKmRldmljZSwKICBpbnQgZW5hYmxlLAogIGludCBmbGFncwopOwoKdHlwZWRlZiBpbnQgKCpvbXB0X3N0YXJ0X3RyYWNlX3QpICgKICBvbXB0X2RldmljZV90ICpkZXZpY2UsCiAgb21wdF9jYWxsYmFja19idWZmZXJfcmVxdWVzdF90IHJlcXVlc3QsCiAgb21wdF9jYWxsYmFja19idWZmZXJfY29tcGxldGVfdCBjb21wbGV0ZQopOwoKdHlwZWRlZiBpbnQgKCpvbXB0X3BhdXNlX3RyYWNlX3QpICgKICBvbXB0X2RldmljZV90ICpkZXZpY2UsCiAgaW50IGJlZ2luX3BhdXNlCik7Cgp0eXBlZGVmIGludCAoKm9tcHRfZmx1c2hfdHJhY2VfdCkgKAogIG9tcHRfZGV2aWNlX3QgKmRldmljZQopOwoKdHlwZWRlZiBpbnQgKCpvbXB0X3N0b3BfdHJhY2VfdCkgKAogIG9tcHRfZGV2aWNlX3QgKmRldmljZQopOwoKdHlwZWRlZiBpbnQgKCpvbXB0X2FkdmFuY2VfYnVmZmVyX2N1cnNvcl90KSAoCiAgb21wdF9kZXZpY2VfdCAqZGV2aWNlLAogIG9tcHRfYnVmZmVyX3QgKmJ1ZmZlciwKICBzaXplX3Qgc2l6ZSwKICBvbXB0X2J1ZmZlcl9jdXJzb3JfdCBjdXJyZW50LAogIG9tcHRfYnVmZmVyX2N1cnNvcl90ICpuZXh0Cik7Cgp0eXBlZGVmIG9tcHRfcmVjb3JkX3QgKCpvbXB0X2dldF9yZWNvcmRfdHlwZV90KSAoCiAgb21wdF9idWZmZXJfdCAqYnVmZmVyLAogIG9tcHRfYnVmZmVyX2N1cnNvcl90IGN1cnJlbnQKKTsKCnR5cGVkZWYgdm9pZCAqKCpvbXB0X2dldF9yZWNvcmRfbmF0aXZlX3QpICgKICBvbXB0X2J1ZmZlcl90ICpidWZmZXIsCiAgb21wdF9idWZmZXJfY3Vyc29yX3QgY3VycmVudCwKICBvbXB0X2lkX3QgKmhvc3Rfb3BfaWQKKTsKCnR5cGVkZWYgb21wdF9yZWNvcmRfYWJzdHJhY3RfdCAqCigqb21wdF9nZXRfcmVjb3JkX2Fic3RyYWN0X3QpICgKICB2b2lkICpuYXRpdmVfcmVjb3JkCik7Cgp0eXBlZGVmIHZvaWQgKCpvbXB0X2NhbGxiYWNrX3RocmVhZF9iZWdpbl90KSAoCiAgb21wdF90aHJlYWRfdCB0aHJlYWRfdHlwZSwKICBvbXB0X2RhdGFfdCAqdGhyZWFkX2RhdGEKKTsKCnR5cGVkZWYgc3RydWN0IG9tcHRfcmVjb3JkX3RocmVhZF9iZWdpbl90IHsKICBvbXB0X3RocmVhZF90IHRocmVhZF90eXBlOwp9IG9tcHRfcmVjb3JkX3RocmVhZF9iZWdpbl90OwoKdHlwZWRlZiB2b2lkICgqb21wdF9jYWxsYmFja190aHJlYWRfZW5kX3QpICgKICBvbXB0X2RhdGFfdCAqdGhyZWFkX2RhdGEKKTsKCnR5cGVkZWYgdm9pZCAoKm9tcHRfY2FsbGJhY2tfcGFyYWxsZWxfYmVnaW5fdCkgKAogIG9tcHRfZGF0YV90ICplbmNvdW50ZXJpbmdfdGFza19kYXRhLAogIGNvbnN0IG9tcHRfZnJhbWVfdCAqZW5jb3VudGVyaW5nX3Rhc2tfZnJhbWUsCiAgb21wdF9kYXRhX3QgKnBhcmFsbGVsX2RhdGEsCiAgdW5zaWduZWQgaW50IHJlcXVlc3RlZF9wYXJhbGxlbGlzbSwKICBpbnQgZmxhZ3MsCiAgY29uc3Qgdm9pZCAqY29kZXB0cl9yYQopOwoKdHlwZWRlZiBzdHJ1Y3Qgb21wdF9yZWNvcmRfcGFyYWxsZWxfYmVnaW5fdCB7CiAgb21wdF9pZF90IGVuY291bnRlcmluZ190YXNrX2lkOwogIG9tcHRfaWRfdCBwYXJhbGxlbF9pZDsKICB1bnNpZ25lZCBpbnQgcmVxdWVzdGVkX3BhcmFsbGVsaXNtOwogIGludCBmbGFnczsKICBjb25zdCB2b2lkICpjb2RlcHRyX3JhOwp9IG9tcHRfcmVjb3JkX3BhcmFsbGVsX2JlZ2luX3Q7Cgp0eXBlZGVmIHZvaWQgKCpvbXB0X2NhbGxiYWNrX3BhcmFsbGVsX2VuZF90KSAoCiAgb21wdF9kYXRhX3QgKnBhcmFsbGVsX2RhdGEsCiAgb21wdF9kYXRhX3QgKmVuY291bnRlcmluZ190YXNrX2RhdGEsCiAgaW50IGZsYWdzLAogIGNvbnN0IHZvaWQgKmNvZGVwdHJfcmEKKTsKCnR5cGVkZWYgc3RydWN0IG9tcHRfcmVjb3JkX3BhcmFsbGVsX2VuZF90IHsKICBvbXB0X2lkX3QgcGFyYWxsZWxfaWQ7CiAgb21wdF9pZF90IGVuY291bnRlcmluZ190YXNrX2lkOwogIGludCBmbGFnczsKICBjb25zdCB2b2lkICpjb2RlcHRyX3JhOwp9IG9tcHRfcmVjb3JkX3BhcmFsbGVsX2VuZF90OwoKdHlwZWRlZiB2b2lkICgqb21wdF9jYWxsYmFja193b3JrX3QpICgKICBvbXB0X3dvcmtfdCB3c3R5cGUsCiAgb21wdF9zY29wZV9lbmRwb2ludF90IGVuZHBvaW50LAogIG9tcHRfZGF0YV90ICpwYXJhbGxlbF9kYXRhLAogIG9tcHRfZGF0YV90ICp0YXNrX2RhdGEsCiAgdWludDY0X3QgY291bnQsCiAgY29uc3Qgdm9pZCAqY29kZXB0cl9yYQopOwoKdHlwZWRlZiBzdHJ1Y3Qgb21wdF9yZWNvcmRfd29ya190IHsKICBvbXB0X3dvcmtfdCB3c3R5cGU7CiAgb21wdF9zY29wZV9lbmRwb2ludF90IGVuZHBvaW50OwogIG9tcHRfaWRfdCBwYXJhbGxlbF9pZDsKICBvbXB0X2lkX3QgdGFza19pZDsKICB1aW50NjRfdCBjb3VudDsKICBjb25zdCB2b2lkICpjb2RlcHRyX3JhOwp9IG9tcHRfcmVjb3JkX3dvcmtfdDsKCnR5cGVkZWYgdm9pZCAoKm9tcHRfY2FsbGJhY2tfZGlzcGF0Y2hfdCkgKAogIG9tcHRfZGF0YV90ICpwYXJhbGxlbF9kYXRhLAogIG9tcHRfZGF0YV90ICp0YXNrX2RhdGEsCiAgb21wdF9kaXNwYXRjaF90IGtpbmQsCiAgb21wdF9kYXRhX3QgaW5zdGFuY2UKKTsKCnR5cGVkZWYgc3RydWN0IG9tcHRfcmVjb3JkX2Rpc3BhdGNoX3QgewogIG9tcHRfaWRfdCBwYXJhbGxlbF9pZDsKICBvbXB0X2lkX3QgdGFza19pZDsKICBvbXB0X2Rpc3BhdGNoX3Qga2luZDsKICBvbXB0X2RhdGFfdCBpbnN0YW5jZTsKfSBvbXB0X3JlY29yZF9kaXNwYXRjaF90OwoKdHlwZWRlZiB2b2lkICgqb21wdF9jYWxsYmFja190YXNrX2NyZWF0ZV90KSAoCiAgb21wdF9kYXRhX3QgKmVuY291bnRlcmluZ190YXNrX2RhdGEsCiAgY29uc3Qgb21wdF9mcmFtZV90ICplbmNvdW50ZXJpbmdfdGFza19mcmFtZSwKICBvbXB0X2RhdGFfdCAqbmV3X3Rhc2tfZGF0YSwKICBpbnQgZmxhZ3MsCiAgaW50IGhhc19kZXBlbmRlbmNlcywKICBjb25zdCB2b2lkICpjb2RlcHRyX3JhCik7Cgp0eXBlZGVmIHN0cnVjdCBvbXB0X3JlY29yZF90YXNrX2NyZWF0ZV90IHsKICBvbXB0X2lkX3QgZW5jb3VudGVyaW5nX3Rhc2tfaWQ7CiAgb21wdF9pZF90IG5ld190YXNrX2lkOwogIGludCBmbGFnczsKICBpbnQgaGFzX2RlcGVuZGVuY2VzOwogIGNvbnN0IHZvaWQgKmNvZGVwdHJfcmE7Cn0gb21wdF9yZWNvcmRfdGFza19jcmVhdGVfdDsKCnR5cGVkZWYgdm9pZCAoKm9tcHRfY2FsbGJhY2tfZGVwZW5kZW5jZXNfdCkgKAogIG9tcHRfZGF0YV90ICp0YXNrX2RhdGEsCiAgY29uc3Qgb21wdF9kZXBlbmRlbmNlX3QgKmRlcHMsCiAgaW50IG5kZXBzCik7Cgp0eXBlZGVmIHN0cnVjdCBvbXB0X3JlY29yZF9kZXBlbmRlbmNlc190IHsKICBvbXB0X2lkX3QgdGFza19pZDsKICBvbXB0X2RlcGVuZGVuY2VfdCBkZXA7CiAgaW50IG5kZXBzOwp9IG9tcHRfcmVjb3JkX2RlcGVuZGVuY2VzX3Q7Cgp0eXBlZGVmIHZvaWQgKCpvbXB0X2NhbGxiYWNrX3Rhc2tfZGVwZW5kZW5jZV90KSAoCiAgb21wdF9kYXRhX3QgKnNyY190YXNrX2RhdGEsCiAgb21wdF9kYXRhX3QgKnNpbmtfdGFza19kYXRhCik7Cgp0eXBlZGVmIHN0cnVjdCBvbXB0X3JlY29yZF90YXNrX2RlcGVuZGVuY2VfdCB7CiAgb21wdF9pZF90IHNyY190YXNrX2lkOwogIG9tcHRfaWRfdCBzaW5rX3Rhc2tfaWQ7Cn0gb21wdF9yZWNvcmRfdGFza19kZXBlbmRlbmNlX3Q7Cgp0eXBlZGVmIHZvaWQgKCpvbXB0X2NhbGxiYWNrX3Rhc2tfc2NoZWR1bGVfdCkgKAogIG9tcHRfZGF0YV90ICpwcmlvcl90YXNrX2RhdGEsCiAgb21wdF90YXNrX3N0YXR1c190IHByaW9yX3Rhc2tfc3RhdHVzLAogIG9tcHRfZGF0YV90ICpuZXh0X3Rhc2tfZGF0YQopOwoKdHlwZWRlZiBzdHJ1Y3Qgb21wdF9yZWNvcmRfdGFza19zY2hlZHVsZV90IHsKICBvbXB0X2lkX3QgcHJpb3JfdGFza19pZDsKICBvbXB0X3Rhc2tfc3RhdHVzX3QgcHJpb3JfdGFza19zdGF0dXM7CiAgb21wdF9pZF90IG5leHRfdGFza19pZDsKfSBvbXB0X3JlY29yZF90YXNrX3NjaGVkdWxlX3Q7Cgp0eXBlZGVmIHZvaWQgKCpvbXB0X2NhbGxiYWNrX2ltcGxpY2l0X3Rhc2tfdCkgKAogIG9tcHRfc2NvcGVfZW5kcG9pbnRfdCBlbmRwb2ludCwKICBvbXB0X2RhdGFfdCAqcGFyYWxsZWxfZGF0YSwKICBvbXB0X2RhdGFfdCAqdGFza19kYXRhLAogIHVuc2lnbmVkIGludCBhY3R1YWxfcGFyYWxsZWxpc20sCiAgdW5zaWduZWQgaW50IGluZGV4LAogIGludCBmbGFncwopOwoKdHlwZWRlZiBzdHJ1Y3Qgb21wdF9yZWNvcmRfaW1wbGljaXRfdGFza190IHsKICBvbXB0X3Njb3BlX2VuZHBvaW50X3QgZW5kcG9pbnQ7CiAgb21wdF9pZF90IHBhcmFsbGVsX2lkOwogIG9tcHRfaWRfdCB0YXNrX2lkOwogIHVuc2lnbmVkIGludCBhY3R1YWxfcGFyYWxsZWxpc207CiAgdW5zaWduZWQgaW50IGluZGV4OwogIGludCBmbGFnczsKfSBvbXB0X3JlY29yZF9pbXBsaWNpdF90YXNrX3Q7Cgp0eXBlZGVmIHZvaWQgKCpvbXB0X2NhbGxiYWNrX21hc2tlZF90KSAoCiAgb21wdF9zY29wZV9lbmRwb2ludF90IGVuZHBvaW50LAogIG9tcHRfZGF0YV90ICpwYXJhbGxlbF9kYXRhLAogIG9tcHRfZGF0YV90ICp0YXNrX2RhdGEsCiAgY29uc3Qgdm9pZCAqY29kZXB0cl9yYQopOwoKdHlwZWRlZiBvbXB0X2NhbGxiYWNrX21hc2tlZF90IG9tcHRfY2FsbGJhY2tfbWFzdGVyX3QgREVQUkVDQVRFRF81MTsKCnR5cGVkZWYgc3RydWN0IG9tcHRfcmVjb3JkX21hc2tlZF90IHsKICBvbXB0X3Njb3BlX2VuZHBvaW50X3QgZW5kcG9pbnQ7CiAgb21wdF9pZF90IHBhcmFsbGVsX2lkOwogIG9tcHRfaWRfdCB0YXNrX2lkOwogIGNvbnN0IHZvaWQgKmNvZGVwdHJfcmE7Cn0gb21wdF9yZWNvcmRfbWFza2VkX3Q7Cgp0eXBlZGVmIHZvaWQgKCpvbXB0X2NhbGxiYWNrX3N5bmNfcmVnaW9uX3QpICgKICBvbXB0X3N5bmNfcmVnaW9uX3Qga2luZCwKICBvbXB0X3Njb3BlX2VuZHBvaW50X3QgZW5kcG9pbnQsCiAgb21wdF9kYXRhX3QgKnBhcmFsbGVsX2RhdGEsCiAgb21wdF9kYXRhX3QgKnRhc2tfZGF0YSwKICBjb25zdCB2b2lkICpjb2RlcHRyX3JhCik7Cgp0eXBlZGVmIHN0cnVjdCBvbXB0X3JlY29yZF9zeW5jX3JlZ2lvbl90IHsKICBvbXB0X3N5bmNfcmVnaW9uX3Qga2luZDsKICBvbXB0X3Njb3BlX2VuZHBvaW50X3QgZW5kcG9pbnQ7CiAgb21wdF9pZF90IHBhcmFsbGVsX2lkOwogIG9tcHRfaWRfdCB0YXNrX2lkOwogIGNvbnN0IHZvaWQgKmNvZGVwdHJfcmE7Cn0gb21wdF9yZWNvcmRfc3luY19yZWdpb25fdDsKCnR5cGVkZWYgdm9pZCAoKm9tcHRfY2FsbGJhY2tfbXV0ZXhfYWNxdWlyZV90KSAoCiAgb21wdF9tdXRleF90IGtpbmQsCiAgdW5zaWduZWQgaW50IGhpbnQsCiAgdW5zaWduZWQgaW50IGltcGwsCiAgb21wdF93YWl0X2lkX3Qgd2FpdF9pZCwKICBjb25zdCB2b2lkICpjb2RlcHRyX3JhCik7Cgp0eXBlZGVmIHN0cnVjdCBvbXB0X3JlY29yZF9tdXRleF9hY3F1aXJlX3QgewogIG9tcHRfbXV0ZXhfdCBraW5kOwogIHVuc2lnbmVkIGludCBoaW50OwogIHVuc2lnbmVkIGludCBpbXBsOwogIG9tcHRfd2FpdF9pZF90IHdhaXRfaWQ7CiAgY29uc3Qgdm9pZCAqY29kZXB0cl9yYTsKfSBvbXB0X3JlY29yZF9tdXRleF9hY3F1aXJlX3Q7Cgp0eXBlZGVmIHZvaWQgKCpvbXB0X2NhbGxiYWNrX211dGV4X3QpICgKICBvbXB0X211dGV4X3Qga2luZCwKICBvbXB0X3dhaXRfaWRfdCB3YWl0X2lkLAogIGNvbnN0IHZvaWQgKmNvZGVwdHJfcmEKKTsKCnR5cGVkZWYgc3RydWN0IG9tcHRfcmVjb3JkX211dGV4X3QgewogIG9tcHRfbXV0ZXhfdCBraW5kOwogIG9tcHRfd2FpdF9pZF90IHdhaXRfaWQ7CiAgY29uc3Qgdm9pZCAqY29kZXB0cl9yYTsKfSBvbXB0X3JlY29yZF9tdXRleF90OwoKdHlwZWRlZiB2b2lkICgqb21wdF9jYWxsYmFja19uZXN0X2xvY2tfdCkgKAogIG9tcHRfc2NvcGVfZW5kcG9pbnRfdCBlbmRwb2ludCwKICBvbXB0X3dhaXRfaWRfdCB3YWl0X2lkLAogIGNvbnN0IHZvaWQgKmNvZGVwdHJfcmEKKTsKCnR5cGVkZWYgc3RydWN0IG9tcHRfcmVjb3JkX25lc3RfbG9ja190IHsKICBvbXB0X3Njb3BlX2VuZHBvaW50X3QgZW5kcG9pbnQ7CiAgb21wdF93YWl0X2lkX3Qgd2FpdF9pZDsKICBjb25zdCB2b2lkICpjb2RlcHRyX3JhOwp9IG9tcHRfcmVjb3JkX25lc3RfbG9ja190OwoKdHlwZWRlZiB2b2lkICgqb21wdF9jYWxsYmFja19mbHVzaF90KSAoCiAgb21wdF9kYXRhX3QgKnRocmVhZF9kYXRhLAogIGNvbnN0IHZvaWQgKmNvZGVwdHJfcmEKKTsKCnR5cGVkZWYgc3RydWN0IG9tcHRfcmVjb3JkX2ZsdXNoX3QgewogIGNvbnN0IHZvaWQgKmNvZGVwdHJfcmE7Cn0gb21wdF9yZWNvcmRfZmx1c2hfdDsKCnR5cGVkZWYgdm9pZCAoKm9tcHRfY2FsbGJhY2tfY2FuY2VsX3QpICgKICBvbXB0X2RhdGFfdCAqdGFza19kYXRhLAogIGludCBmbGFncywKICBjb25zdCB2b2lkICpjb2RlcHRyX3JhCik7Cgp0eXBlZGVmIHN0cnVjdCBvbXB0X3JlY29yZF9jYW5jZWxfdCB7CiAgb21wdF9pZF90IHRhc2tfaWQ7CiAgaW50IGZsYWdzOwogIGNvbnN0IHZvaWQgKmNvZGVwdHJfcmE7Cn0gb21wdF9yZWNvcmRfY2FuY2VsX3Q7Cgp0eXBlZGVmIHZvaWQgKCpvbXB0X2NhbGxiYWNrX2RldmljZV9pbml0aWFsaXplX3QpICgKICBpbnQgZGV2aWNlX251bSwKICBjb25zdCBjaGFyICp0eXBlLAogIG9tcHRfZGV2aWNlX3QgKmRldmljZSwKICBvbXB0X2Z1bmN0aW9uX2xvb2t1cF90IGxvb2t1cCwKICBjb25zdCBjaGFyICpkb2N1bWVudGF0aW9uCik7Cgp0eXBlZGVmIHZvaWQgKCpvbXB0X2NhbGxiYWNrX2RldmljZV9maW5hbGl6ZV90KSAoCiAgaW50IGRldmljZV9udW0KKTsKCnR5cGVkZWYgdm9pZCAoKm9tcHRfY2FsbGJhY2tfZGV2aWNlX2xvYWRfdCkgKAogIGludCBkZXZpY2VfbnVtLAogIGNvbnN0IGNoYXIgKmZpbGVuYW1lLAogIGludDY0X3Qgb2Zmc2V0X2luX2ZpbGUsCiAgdm9pZCAqdm1hX2luX2ZpbGUsCiAgc2l6ZV90IGJ5dGVzLAogIHZvaWQgKmhvc3RfYWRkciwKICB2b2lkICpkZXZpY2VfYWRkciwKICB1aW50NjRfdCBtb2R1bGVfaWQKKTsKCnR5cGVkZWYgdm9pZCAoKm9tcHRfY2FsbGJhY2tfZGV2aWNlX3VubG9hZF90KSAoCiAgaW50IGRldmljZV9udW0sCiAgdWludDY0X3QgbW9kdWxlX2lkCik7Cgp0eXBlZGVmIHZvaWQgKCpvbXB0X2NhbGxiYWNrX3RhcmdldF9kYXRhX29wX2VtaV90KSAoCiAgb21wdF9zY29wZV9lbmRwb2ludF90IGVuZHBvaW50LAogIG9tcHRfZGF0YV90ICp0YXJnZXRfdGFza19kYXRhLAogIG9tcHRfZGF0YV90ICp0YXJnZXRfZGF0YSwKICBvbXB0X2lkX3QgKmhvc3Rfb3BfaWQsCiAgb21wdF90YXJnZXRfZGF0YV9vcF90IG9wdHlwZSwKICB2b2lkICpzcmNfYWRkciwKICBpbnQgc3JjX2RldmljZV9udW0sCiAgdm9pZCAqZGVzdF9hZGRyLAogIGludCBkZXN0X2RldmljZV9udW0sCiAgc2l6ZV90IGJ5dGVzLAogIGNvbnN0IHZvaWQgKmNvZGVwdHJfcmEKKTsKCnR5cGVkZWYgdm9pZCAoKm9tcHRfY2FsbGJhY2tfdGFyZ2V0X2RhdGFfb3BfdCkgKAogIG9tcHRfaWRfdCB0YXJnZXRfaWQsCiAgb21wdF9pZF90IGhvc3Rfb3BfaWQsCiAgb21wdF90YXJnZXRfZGF0YV9vcF90IG9wdHlwZSwKICB2b2lkICpzcmNfYWRkciwKICBpbnQgc3JjX2RldmljZV9udW0sCiAgdm9pZCAqZGVzdF9hZGRyLAogIGludCBkZXN0X2RldmljZV9udW0sCiAgc2l6ZV90IGJ5dGVzLAogIGNvbnN0IHZvaWQgKmNvZGVwdHJfcmEKKTsKCnR5cGVkZWYgc3RydWN0IG9tcHRfcmVjb3JkX3RhcmdldF9kYXRhX29wX3QgewogIG9tcHRfaWRfdCBob3N0X29wX2lkOwogIG9tcHRfdGFyZ2V0X2RhdGFfb3BfdCBvcHR5cGU7CiAgdm9pZCAqc3JjX2FkZHI7CiAgaW50IHNyY19kZXZpY2VfbnVtOwogIHZvaWQgKmRlc3RfYWRkcjsKICBpbnQgZGVzdF9kZXZpY2VfbnVtOwogIHNpemVfdCBieXRlczsKICBvbXB0X2RldmljZV90aW1lX3QgZW5kX3RpbWU7CiAgY29uc3Qgdm9pZCAqY29kZXB0cl9yYTsKfSBvbXB0X3JlY29yZF90YXJnZXRfZGF0YV9vcF90OwoKdHlwZWRlZiB2b2lkICgqb21wdF9jYWxsYmFja190YXJnZXRfZW1pX3QpICgKICBvbXB0X3RhcmdldF90IGtpbmQsCiAgb21wdF9zY29wZV9lbmRwb2ludF90IGVuZHBvaW50LAogIGludCBkZXZpY2VfbnVtLAogIG9tcHRfZGF0YV90ICp0YXNrX2RhdGEsCiAgb21wdF9kYXRhX3QgKnRhcmdldF90YXNrX2RhdGEsCiAgb21wdF9kYXRhX3QgKnRhcmdldF9kYXRhLAogIGNvbnN0IHZvaWQgKmNvZGVwdHJfcmEKKTsKCnR5cGVkZWYgdm9pZCAoKm9tcHRfY2FsbGJhY2tfdGFyZ2V0X3QpICgKICBvbXB0X3RhcmdldF90IGtpbmQsCiAgb21wdF9zY29wZV9lbmRwb2ludF90IGVuZHBvaW50LAogIGludCBkZXZpY2VfbnVtLAogIG9tcHRfZGF0YV90ICp0YXNrX2RhdGEsCiAgb21wdF9pZF90IHRhcmdldF9pZCwKICBjb25zdCB2b2lkICpjb2RlcHRyX3JhCik7Cgp0eXBlZGVmIHN0cnVjdCBvbXB0X3JlY29yZF90YXJnZXRfdCB7CiAgb21wdF90YXJnZXRfdCBraW5kOwogIG9tcHRfc2NvcGVfZW5kcG9pbnRfdCBlbmRwb2ludDsKICBpbnQgZGV2aWNlX251bTsKICBvbXB0X2lkX3QgdGFza19pZDsKICBvbXB0X2lkX3QgdGFyZ2V0X2lkOwogIGNvbnN0IHZvaWQgKmNvZGVwdHJfcmE7Cn0gb21wdF9yZWNvcmRfdGFyZ2V0X3Q7Cgp0eXBlZGVmIHZvaWQgKCpvbXB0X2NhbGxiYWNrX3RhcmdldF9tYXBfZW1pX3QpICgKICBvbXB0X2RhdGFfdCAqdGFyZ2V0X2RhdGEsCiAgdW5zaWduZWQgaW50IG5pdGVtcywKICB2b2lkICoqaG9zdF9hZGRyLAogIHZvaWQgKipkZXZpY2VfYWRkciwKICBzaXplX3QgKmJ5dGVzLAogIHVuc2lnbmVkIGludCAqbWFwcGluZ19mbGFncywKICBjb25zdCB2b2lkICpjb2RlcHRyX3JhCik7Cgp0eXBlZGVmIHZvaWQgKCpvbXB0X2NhbGxiYWNrX3RhcmdldF9tYXBfdCkgKAogIG9tcHRfaWRfdCB0YXJnZXRfaWQsCiAgdW5zaWduZWQgaW50IG5pdGVtcywKICB2b2lkICoqaG9zdF9hZGRyLAogIHZvaWQgKipkZXZpY2VfYWRkciwKICBzaXplX3QgKmJ5dGVzLAogIHVuc2lnbmVkIGludCAqbWFwcGluZ19mbGFncywKICBjb25zdCB2b2lkICpjb2RlcHRyX3JhCik7Cgp0eXBlZGVmIHN0cnVjdCBvbXB0X3JlY29yZF90YXJnZXRfbWFwX3QgewogIG9tcHRfaWRfdCB0YXJnZXRfaWQ7CiAgdW5zaWduZWQgaW50IG5pdGVtczsKICB2b2lkICoqaG9zdF9hZGRyOwogIHZvaWQgKipkZXZpY2VfYWRkcjsKICBzaXplX3QgKmJ5dGVzOwogIHVuc2lnbmVkIGludCAqbWFwcGluZ19mbGFnczsKICBjb25zdCB2b2lkICpjb2RlcHRyX3JhOwp9IG9tcHRfcmVjb3JkX3RhcmdldF9tYXBfdDsKCnR5cGVkZWYgdm9pZCAoKm9tcHRfY2FsbGJhY2tfdGFyZ2V0X3N1Ym1pdF9lbWlfdCkgKAogIG9tcHRfc2NvcGVfZW5kcG9pbnRfdCBlbmRwb2ludCwKICBvbXB0X2RhdGFfdCAqdGFyZ2V0X2RhdGEsCiAgb21wdF9pZF90ICpob3N0X29wX2lkLAogIHVuc2lnbmVkIGludCByZXF1ZXN0ZWRfbnVtX3RlYW1zCik7Cgp0eXBlZGVmIHZvaWQgKCpvbXB0X2NhbGxiYWNrX3RhcmdldF9zdWJtaXRfdCkgKAogIG9tcHRfaWRfdCB0YXJnZXRfaWQsCiAgb21wdF9pZF90IGhvc3Rfb3BfaWQsCiAgdW5zaWduZWQgaW50IHJlcXVlc3RlZF9udW1fdGVhbXMKKTsKCnR5cGVkZWYgc3RydWN0IG9tcHRfcmVjb3JkX3RhcmdldF9rZXJuZWxfdCB7CiAgb21wdF9pZF90IGhvc3Rfb3BfaWQ7CiAgdW5zaWduZWQgaW50IHJlcXVlc3RlZF9udW1fdGVhbXM7CiAgdW5zaWduZWQgaW50IGdyYW50ZWRfbnVtX3RlYW1zOwogIG9tcHRfZGV2aWNlX3RpbWVfdCBlbmRfdGltZTsKfSBvbXB0X3JlY29yZF90YXJnZXRfa2VybmVsX3Q7Cgp0eXBlZGVmIGludCAoKm9tcHRfY2FsbGJhY2tfY29udHJvbF90b29sX3QpICgKICB1aW50NjRfdCBjb21tYW5kLAogIHVpbnQ2NF90IG1vZGlmaWVyLAogIHZvaWQgKmFyZywKICBjb25zdCB2b2lkICpjb2RlcHRyX3JhCik7Cgp0eXBlZGVmIHN0cnVjdCBvbXB0X3JlY29yZF9jb250cm9sX3Rvb2xfdCB7CiAgdWludDY0X3QgY29tbWFuZDsKICB1aW50NjRfdCBtb2RpZmllcjsKICBjb25zdCB2b2lkICpjb2RlcHRyX3JhOwp9IG9tcHRfcmVjb3JkX2NvbnRyb2xfdG9vbF90OwoKdHlwZWRlZiB2b2lkICgqb21wdF9jYWxsYmFja19lcnJvcl90KSAoCiAgb21wdF9zZXZlcml0eV90IHNldmVyaXR5LAogIGNvbnN0IGNoYXIgKm1lc3NhZ2UsIHNpemVfdCBsZW5ndGgsCiAgY29uc3Qgdm9pZCAqY29kZXB0cl9yYQopOwoKdHlwZWRlZiBzdHJ1Y3Qgb21wdF9yZWNvcmRfZXJyb3JfdCB7CiAgb21wdF9zZXZlcml0eV90IHNldmVyaXR5OwogIGNvbnN0IGNoYXIgKm1lc3NhZ2U7CiAgc2l6ZV90IGxlbmd0aDsKICBjb25zdCB2b2lkICpjb2RlcHRyX3JhOwp9IG9tcHRfcmVjb3JkX2Vycm9yX3Q7Cgp0eXBlZGVmIHN0cnVjdCBvbXBkX2FkZHJlc3NfdCB7CiAgb21wZF9zZWdfdCBzZWdtZW50OwogIG9tcGRfYWRkcl90IGFkZHJlc3M7Cn0gb21wZF9hZGRyZXNzX3Q7Cgp0eXBlZGVmIHN0cnVjdCBvbXBkX2ZyYW1lX2luZm9fdCB7CiAgb21wZF9hZGRyZXNzX3QgZnJhbWVfYWRkcmVzczsKICBvbXBkX3dvcmRfdCBmcmFtZV9mbGFnOwp9IG9tcGRfZnJhbWVfaW5mb190OwoKdHlwZWRlZiBzdHJ1Y3QgX29tcGRfYXNwYWNlX2hhbmRsZSBvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3Q7CnR5cGVkZWYgc3RydWN0IF9vbXBkX3RocmVhZF9oYW5kbGUgb21wZF90aHJlYWRfaGFuZGxlX3Q7CnR5cGVkZWYgc3RydWN0IF9vbXBkX3BhcmFsbGVsX2hhbmRsZSBvbXBkX3BhcmFsbGVsX2hhbmRsZV90Owp0eXBlZGVmIHN0cnVjdCBfb21wZF90YXNrX2hhbmRsZSBvbXBkX3Rhc2tfaGFuZGxlX3Q7Cgp0eXBlZGVmIHN0cnVjdCBfb21wZF9hc3BhY2VfY29udCBvbXBkX2FkZHJlc3Nfc3BhY2VfY29udGV4dF90Owp0eXBlZGVmIHN0cnVjdCBfb21wZF90aHJlYWRfY29udCBvbXBkX3RocmVhZF9jb250ZXh0X3Q7Cgp0eXBlZGVmIHN0cnVjdCBvbXBkX2RldmljZV90eXBlX3NpemVzX3QgewogIHVpbnQ4X3Qgc2l6ZW9mX2NoYXI7CiAgdWludDhfdCBzaXplb2Zfc2hvcnQ7CiAgdWludDhfdCBzaXplb2ZfaW50OwogIHVpbnQ4X3Qgc2l6ZW9mX2xvbmc7CiAgdWludDhfdCBzaXplb2ZfbG9uZ19sb25nOwogIHVpbnQ4X3Qgc2l6ZW9mX3BvaW50ZXI7Cn0gb21wZF9kZXZpY2VfdHlwZV9zaXplc190OwoKdm9pZCBvbXBkX2RsbF9sb2NhdGlvbnNfdmFsaWQodm9pZCk7Cgp0eXBlZGVmIG9tcGRfcmNfdCAoKm9tcGRfY2FsbGJhY2tfbWVtb3J5X2FsbG9jX2ZuX3QpKG9tcGRfc2l6ZV90IG5ieXRlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICoqcHRyKTsKCnR5cGVkZWYgb21wZF9yY190ICgqb21wZF9jYWxsYmFja19tZW1vcnlfZnJlZV9mbl90KSh2b2lkICpwdHIpOwoKdHlwZWRlZiBvbXBkX3JjX3QgKCpvbXBkX2NhbGxiYWNrX2dldF90aHJlYWRfY29udGV4dF9mb3JfdGhyZWFkX2lkX2ZuX3QpKAogICAgb21wZF9hZGRyZXNzX3NwYWNlX2NvbnRleHRfdCAqYWRkcmVzc19zcGFjZV9jb250ZXh0LCBvbXBkX3RocmVhZF9pZF90IGtpbmQsCiAgICBvbXBkX3NpemVfdCBzaXplb2ZfdGhyZWFkX2lkLCBjb25zdCB2b2lkICp0aHJlYWRfaWQsCiAgICBvbXBkX3RocmVhZF9jb250ZXh0X3QgKip0aHJlYWRfY29udGV4dCk7Cgp0eXBlZGVmIG9tcGRfcmNfdCAoKm9tcGRfY2FsbGJhY2tfc2l6ZW9mX2ZuX3QpKAogICAgb21wZF9hZGRyZXNzX3NwYWNlX2NvbnRleHRfdCAqYWRkcmVzc19zcGFjZV9jb250ZXh0LAogICAgb21wZF9kZXZpY2VfdHlwZV9zaXplc190ICpzaXplcyk7Cgp0eXBlZGVmIG9tcGRfcmNfdCAoKm9tcGRfY2FsbGJhY2tfc3ltYm9sX2FkZHJfZm5fdCkoCiAgICBvbXBkX2FkZHJlc3Nfc3BhY2VfY29udGV4dF90ICphZGRyZXNzX3NwYWNlX2NvbnRleHQsCiAgICBvbXBkX3RocmVhZF9jb250ZXh0X3QgKnRocmVhZF9jb250ZXh0LCBjb25zdCBjaGFyICpzeW1ib2xfbmFtZSwKICAgIG9tcGRfYWRkcmVzc190ICpzeW1ib2xfYWRkciwgY29uc3QgY2hhciAqZmlsZV9uYW1lKTsKCnR5cGVkZWYgb21wZF9yY190ICgqb21wZF9jYWxsYmFja19tZW1vcnlfcmVhZF9mbl90KSgKICAgIG9tcGRfYWRkcmVzc19zcGFjZV9jb250ZXh0X3QgKmFkZHJlc3Nfc3BhY2VfY29udGV4dCwKICAgIG9tcGRfdGhyZWFkX2NvbnRleHRfdCAqdGhyZWFkX2NvbnRleHQsIGNvbnN0IG9tcGRfYWRkcmVzc190ICphZGRyLAogICAgb21wZF9zaXplX3QgbmJ5dGVzLCB2b2lkICpidWZmZXIpOwoKdHlwZWRlZiBvbXBkX3JjX3QgKCpvbXBkX2NhbGxiYWNrX21lbW9yeV93cml0ZV9mbl90KSgKICAgIG9tcGRfYWRkcmVzc19zcGFjZV9jb250ZXh0X3QgKmFkZHJlc3Nfc3BhY2VfY29udGV4dCwKICAgIG9tcGRfdGhyZWFkX2NvbnRleHRfdCAqdGhyZWFkX2NvbnRleHQsIGNvbnN0IG9tcGRfYWRkcmVzc190ICphZGRyLAogICAgb21wZF9zaXplX3QgbmJ5dGVzLCBjb25zdCB2b2lkICpidWZmZXIpOwoKdHlwZWRlZiBvbXBkX3JjX3QgKCpvbXBkX2NhbGxiYWNrX2RldmljZV9ob3N0X2ZuX3QpKAogICAgb21wZF9hZGRyZXNzX3NwYWNlX2NvbnRleHRfdCAqYWRkcmVzc19zcGFjZV9jb250ZXh0LCBjb25zdCB2b2lkICppbnB1dCwKICAgIG9tcGRfc2l6ZV90IHVuaXRfc2l6ZSwgb21wZF9zaXplX3QgY291bnQsIHZvaWQgKm91dHB1dCk7Cgp0eXBlZGVmIG9tcGRfcmNfdCAoKm9tcGRfY2FsbGJhY2tfcHJpbnRfc3RyaW5nX2ZuX3QpKGNvbnN0IGNoYXIgKnN0cmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2F0ZWdvcnkpOwoKdHlwZWRlZiBzdHJ1Y3Qgb21wZF9jYWxsYmFja3NfdCB7CiAgb21wZF9jYWxsYmFja19tZW1vcnlfYWxsb2NfZm5fdCBhbGxvY19tZW1vcnk7CiAgb21wZF9jYWxsYmFja19tZW1vcnlfZnJlZV9mbl90IGZyZWVfbWVtb3J5OwogIG9tcGRfY2FsbGJhY2tfcHJpbnRfc3RyaW5nX2ZuX3QgcHJpbnRfc3RyaW5nOwogIG9tcGRfY2FsbGJhY2tfc2l6ZW9mX2ZuX3Qgc2l6ZW9mX3R5cGU7CiAgb21wZF9jYWxsYmFja19zeW1ib2xfYWRkcl9mbl90IHN5bWJvbF9hZGRyX2xvb2t1cDsKICBvbXBkX2NhbGxiYWNrX21lbW9yeV9yZWFkX2ZuX3QgcmVhZF9tZW1vcnk7CiAgb21wZF9jYWxsYmFja19tZW1vcnlfd3JpdGVfZm5fdCB3cml0ZV9tZW1vcnk7CiAgb21wZF9jYWxsYmFja19tZW1vcnlfcmVhZF9mbl90IHJlYWRfc3RyaW5nOwogIG9tcGRfY2FsbGJhY2tfZGV2aWNlX2hvc3RfZm5fdCBkZXZpY2VfdG9faG9zdDsKICBvbXBkX2NhbGxiYWNrX2RldmljZV9ob3N0X2ZuX3QgaG9zdF90b19kZXZpY2U7CiAgb21wZF9jYWxsYmFja19nZXRfdGhyZWFkX2NvbnRleHRfZm9yX3RocmVhZF9pZF9mbl90CiAgICAgIGdldF90aHJlYWRfY29udGV4dF9mb3JfdGhyZWFkX2lkOwp9IG9tcGRfY2FsbGJhY2tzX3Q7Cgp2b2lkIG9tcGRfYnBfcGFyYWxsZWxfYmVnaW4odm9pZCk7Cgp2b2lkIG9tcGRfYnBfcGFyYWxsZWxfZW5kKHZvaWQpOwoKdm9pZCBvbXBkX2JwX3Rhc2tfYmVnaW4odm9pZCk7Cgp2b2lkIG9tcGRfYnBfdGFza19lbmQodm9pZCk7Cgp2b2lkIG9tcGRfYnBfdGhyZWFkX2JlZ2luKHZvaWQpOwoKdm9pZCBvbXBkX2JwX3RocmVhZF9lbmQodm9pZCk7Cgp2b2lkIG9tcGRfYnBfZGV2aWNlX2JlZ2luKHZvaWQpOwoKdm9pZCBvbXBkX2JwX2RldmljZV9lbmQodm9pZCk7CgpvbXBkX3JjX3Qgb21wZF9pbml0aWFsaXplKG9tcGRfd29yZF90IGFwaV92ZXJzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9tcGRfY2FsbGJhY2tzX3QgKmNhbGxiYWNrcyk7CgpvbXBkX3JjX3Qgb21wZF9nZXRfYXBpX3ZlcnNpb24ob21wZF93b3JkX3QgKnZlcnNpb24pOwoKb21wZF9yY190IG9tcGRfZ2V0X3ZlcnNpb25fc3RyaW5nKGNvbnN0IGNoYXIgKipzdHJpbmcpOwoKb21wZF9yY190IG9tcGRfZmluYWxpemUodm9pZCk7CgpvbXBkX3JjX3Qgb21wZF9wcm9jZXNzX2luaXRpYWxpemUob21wZF9hZGRyZXNzX3NwYWNlX2NvbnRleHRfdCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqKmhhbmRsZSk7CgpvbXBkX3JjX3Qgb21wZF9kZXZpY2VfaW5pdGlhbGl6ZShvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKnByb2Nlc3NfaGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbXBkX2FkZHJlc3Nfc3BhY2VfY29udGV4dF90ICpkZXZpY2VfY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb21wZF9kZXZpY2VfdCBraW5kLCBvbXBkX3NpemVfdCBzaXplb2ZfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKipkZXZpY2VfaGFuZGxlKTsKCm9tcGRfcmNfdCBvbXBkX3JlbF9hZGRyZXNzX3NwYWNlX2hhbmRsZShvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKmhhbmRsZSk7CgpvbXBkX3JjX3Qgb21wZF9nZXRfb21wX3ZlcnNpb24ob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICphZGRyZXNzX3NwYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb21wZF93b3JkX3QgKm9tcF92ZXJzaW9uKTsKCm9tcGRfcmNfdApvbXBkX2dldF9vbXBfdmVyc2lvbl9zdHJpbmcob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICphZGRyZXNzX3NwYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKnN0cmluZyk7CgpvbXBkX3JjX3Qgb21wZF9nZXRfdGhyZWFkX2luX3BhcmFsbGVsKG9tcGRfcGFyYWxsZWxfaGFuZGxlX3QgKnBhcmFsbGVsX2hhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGhyZWFkX251bSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbXBkX3RocmVhZF9oYW5kbGVfdCAqKnRocmVhZF9oYW5kbGUpOwoKb21wZF9yY190IG9tcGRfZ2V0X3RocmVhZF9oYW5kbGUob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICpoYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9tcGRfdGhyZWFkX2lkX3Qga2luZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb21wZF9zaXplX3Qgc2l6ZW9mX3RocmVhZF9pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqdGhyZWFkX2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbXBkX3RocmVhZF9oYW5kbGVfdCAqKnRocmVhZF9oYW5kbGUpOwoKb21wZF9yY190IG9tcGRfcmVsX3RocmVhZF9oYW5kbGUob21wZF90aHJlYWRfaGFuZGxlX3QgKnRocmVhZF9oYW5kbGUpOwoKb21wZF9yY190IG9tcGRfdGhyZWFkX2hhbmRsZV9jb21wYXJlKG9tcGRfdGhyZWFkX2hhbmRsZV90ICp0aHJlYWRfaGFuZGxlXzEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbXBkX3RocmVhZF9oYW5kbGVfdCAqdGhyZWFkX2hhbmRsZV8yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpjbXBfdmFsdWUpOwoKb21wZF9yY190IG9tcGRfZ2V0X3RocmVhZF9pZChvbXBkX3RocmVhZF9oYW5kbGVfdCAqdGhyZWFkX2hhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbXBkX3RocmVhZF9pZF90IGtpbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb21wZF9zaXplX3Qgc2l6ZW9mX3RocmVhZF9pZCwgdm9pZCAqdGhyZWFkX2lkKTsKCm9tcGRfcmNfdApvbXBkX2dldF9jdXJyX3BhcmFsbGVsX2hhbmRsZShvbXBkX3RocmVhZF9oYW5kbGVfdCAqdGhyZWFkX2hhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb21wZF9wYXJhbGxlbF9oYW5kbGVfdCAqKnBhcmFsbGVsX2hhbmRsZSk7CgpvbXBkX3JjX3Qgb21wZF9nZXRfZW5jbG9zaW5nX3BhcmFsbGVsX2hhbmRsZSgKICAgIG9tcGRfcGFyYWxsZWxfaGFuZGxlX3QgKnBhcmFsbGVsX2hhbmRsZSwKICAgIG9tcGRfcGFyYWxsZWxfaGFuZGxlX3QgKiplbmNsb3NpbmdfcGFyYWxsZWxfaGFuZGxlKTsKCm9tcGRfcmNfdApvbXBkX2dldF90YXNrX3BhcmFsbGVsX2hhbmRsZShvbXBkX3Rhc2tfaGFuZGxlX3QgKnRhc2tfaGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbXBkX3BhcmFsbGVsX2hhbmRsZV90ICoqdGFza19wYXJhbGxlbF9oYW5kbGUpOwoKb21wZF9yY190IG9tcGRfcmVsX3BhcmFsbGVsX2hhbmRsZShvbXBkX3BhcmFsbGVsX2hhbmRsZV90ICpwYXJhbGxlbF9oYW5kbGUpOwoKb21wZF9yY190Cm9tcGRfcGFyYWxsZWxfaGFuZGxlX2NvbXBhcmUob21wZF9wYXJhbGxlbF9oYW5kbGVfdCAqcGFyYWxsZWxfaGFuZGxlXzEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb21wZF9wYXJhbGxlbF9oYW5kbGVfdCAqcGFyYWxsZWxfaGFuZGxlXzIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpjbXBfdmFsdWUpOwoKb21wZF9yY190IG9tcGRfZ2V0X2N1cnJfdGFza19oYW5kbGUob21wZF90aHJlYWRfaGFuZGxlX3QgKnRocmVhZF9oYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9tcGRfdGFza19oYW5kbGVfdCAqKnRhc2tfaGFuZGxlKTsKCm9tcGRfcmNfdApvbXBkX2dldF9nZW5lcmF0aW5nX3Rhc2tfaGFuZGxlKG9tcGRfdGFza19oYW5kbGVfdCAqdGFza19oYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb21wZF90YXNrX2hhbmRsZV90ICoqZ2VuZXJhdGluZ190YXNrX2hhbmRsZSk7CgpvbXBkX3JjX3QKb21wZF9nZXRfc2NoZWR1bGluZ190YXNrX2hhbmRsZShvbXBkX3Rhc2tfaGFuZGxlX3QgKnRhc2tfaGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9tcGRfdGFza19oYW5kbGVfdCAqKnNjaGVkdWxpbmdfdGFza19oYW5kbGUpOwoKb21wZF9yY190IG9tcGRfZ2V0X3Rhc2tfaW5fcGFyYWxsZWwob21wZF9wYXJhbGxlbF9oYW5kbGVfdCAqcGFyYWxsZWxfaGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGhyZWFkX251bSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb21wZF90YXNrX2hhbmRsZV90ICoqdGFza19oYW5kbGUpOwoKb21wZF9yY190IG9tcGRfcmVsX3Rhc2tfaGFuZGxlKG9tcGRfdGFza19oYW5kbGVfdCAqdGFza19oYW5kbGUpOwoKb21wZF9yY190IG9tcGRfdGFza19oYW5kbGVfY29tcGFyZShvbXBkX3Rhc2tfaGFuZGxlX3QgKnRhc2tfaGFuZGxlXzEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb21wZF90YXNrX2hhbmRsZV90ICp0YXNrX2hhbmRsZV8yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqY21wX3ZhbHVlKTsKCm9tcGRfcmNfdCBvbXBkX2dldF90YXNrX2Z1bmN0aW9uKG9tcGRfdGFza19oYW5kbGVfdCAqdGFza19oYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9tcGRfYWRkcmVzc190ICplbnRyeV9wb2ludCk7CgpvbXBkX3JjX3Qgb21wZF9nZXRfdGFza19mcmFtZShvbXBkX3Rhc2tfaGFuZGxlX3QgKnRhc2tfaGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbXBkX2ZyYW1lX2luZm9fdCAqZXhpdF9mcmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb21wZF9mcmFtZV9pbmZvX3QgKmVudGVyX2ZyYW1lKTsKCm9tcGRfcmNfdApvbXBkX2VudW1lcmF0ZV9zdGF0ZXMob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICphZGRyZXNzX3NwYWNlX2hhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgIG9tcGRfd29yZF90IGN1cnJlbnRfc3RhdGUsIG9tcGRfd29yZF90ICpuZXh0X3N0YXRlLAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKm5leHRfc3RhdGVfbmFtZSwgb21wZF93b3JkX3QgKm1vcmVfZW51bXMpOwoKb21wZF9yY190IG9tcGRfZ2V0X3N0YXRlKG9tcGRfdGhyZWFkX2hhbmRsZV90ICp0aHJlYWRfaGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgb21wZF93b3JkX3QgKnN0YXRlLCBvbXBkX3dhaXRfaWRfdCAqd2FpdF9pZCk7CgpvbXBkX3JjX3QKb21wZF9nZXRfZGlzcGxheV9jb250cm9sX3ZhcnMob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICphZGRyZXNzX3NwYWNlX2hhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29uc3QgKipjb250cm9sX3ZhcnMpOwoKb21wZF9yY190IG9tcGRfcmVsX2Rpc3BsYXlfY29udHJvbF92YXJzKGNvbnN0IGNoYXIgKmNvbnN0ICoqY29udHJvbF92YXJzKTsKCm9tcGRfcmNfdCBvbXBkX2VudW1lcmF0ZV9pY3ZzKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqaGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbXBkX2ljdl9pZF90IGN1cnJlbnQsIG9tcGRfaWN2X2lkX3QgKm5leHRfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKipuZXh0X2ljdl9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbXBkX3Njb3BlX3QgKm5leHRfc2NvcGUsIGludCAqbW9yZSk7CgpvbXBkX3JjX3Qgb21wZF9nZXRfaWN2X2Zyb21fc2NvcGUodm9pZCAqaGFuZGxlLCBvbXBkX3Njb3BlX3Qgc2NvcGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbXBkX2ljdl9pZF90IGljdl9pZCwgb21wZF93b3JkX3QgKmljdl92YWx1ZSk7CgpvbXBkX3JjX3Qgb21wZF9nZXRfaWN2X3N0cmluZ19mcm9tX3Njb3BlKHZvaWQgKmhhbmRsZSwgb21wZF9zY29wZV90IHNjb3BlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9tcGRfaWN2X2lkX3QgaWN2X2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKippY3Zfc3RyaW5nKTsKCm9tcGRfcmNfdCBvbXBkX2dldF90b29sX2RhdGEodm9pZCAqaGFuZGxlLCBvbXBkX3Njb3BlX3Qgc2NvcGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb21wZF93b3JkX3QgKnZhbHVlLCBvbXBkX2FkZHJlc3NfdCAqcHRyKTsKCnR5cGVkZWYgc3RydWN0IG9tcHRfcmVjb3JkX29tcHRfdCB7CiAgb21wdF9jYWxsYmFja3NfdCB0eXBlOwogIG9tcHRfZGV2aWNlX3RpbWVfdCB0aW1lOwogIG9tcHRfaWRfdCB0aHJlYWRfaWQ7CiAgb21wdF9pZF90IHRhcmdldF9pZDsKICB1bmlvbiB7CiAgICBvbXB0X3JlY29yZF90aHJlYWRfYmVnaW5fdCB0aHJlYWRfYmVnaW47CiAgICBvbXB0X3JlY29yZF9wYXJhbGxlbF9iZWdpbl90IHBhcmFsbGVsX2JlZ2luOwogICAgb21wdF9yZWNvcmRfcGFyYWxsZWxfZW5kX3QgcGFyYWxsZWxfZW5kOwogICAgb21wdF9yZWNvcmRfd29ya190IHdvcms7CiAgICBvbXB0X3JlY29yZF9kaXNwYXRjaF90IGRpc3BhdGNoOwogICAgb21wdF9yZWNvcmRfdGFza19jcmVhdGVfdCB0YXNrX2NyZWF0ZTsKICAgIG9tcHRfcmVjb3JkX2RlcGVuZGVuY2VzX3QgZGVwZW5kZW5jZXM7CiAgICBvbXB0X3JlY29yZF90YXNrX2RlcGVuZGVuY2VfdCB0YXNrX2RlcGVuZGVuY2U7CiAgICBvbXB0X3JlY29yZF90YXNrX3NjaGVkdWxlX3QgdGFza19zY2hlZHVsZTsKICAgIG9tcHRfcmVjb3JkX2ltcGxpY2l0X3Rhc2tfdCBpbXBsaWNpdF90YXNrOwogICAgb21wdF9yZWNvcmRfbWFza2VkX3QgbWFza2VkOwogICAgb21wdF9yZWNvcmRfc3luY19yZWdpb25fdCBzeW5jX3JlZ2lvbjsKICAgIG9tcHRfcmVjb3JkX211dGV4X2FjcXVpcmVfdCBtdXRleF9hY3F1aXJlOwogICAgb21wdF9yZWNvcmRfbXV0ZXhfdCBtdXRleDsKICAgIG9tcHRfcmVjb3JkX25lc3RfbG9ja190IG5lc3RfbG9jazsKICAgIG9tcHRfcmVjb3JkX2ZsdXNoX3QgZmx1c2g7CiAgICBvbXB0X3JlY29yZF9jYW5jZWxfdCBjYW5jZWw7CiAgICBvbXB0X3JlY29yZF90YXJnZXRfdCB0YXJnZXQ7CiAgICBvbXB0X3JlY29yZF90YXJnZXRfZGF0YV9vcF90IHRhcmdldF9kYXRhX29wOwogICAgb21wdF9yZWNvcmRfdGFyZ2V0X21hcF90IHRhcmdldF9tYXA7CiAgICBvbXB0X3JlY29yZF90YXJnZXRfa2VybmVsX3QgdGFyZ2V0X2tlcm5lbDsKICAgIG9tcHRfcmVjb3JkX2NvbnRyb2xfdG9vbF90IGNvbnRyb2xfdG9vbDsKICB9IHJlY29yZDsKfSBvbXB0X3JlY29yZF9vbXB0X3Q7Cgp0eXBlZGVmIG9tcHRfcmVjb3JkX29tcHRfdCAqKCpvbXB0X2dldF9yZWNvcmRfb21wdF90KSAoCiAgb21wdF9idWZmZXJfdCAqYnVmZmVyLAogIG9tcHRfYnVmZmVyX2N1cnNvcl90IGN1cnJlbnQKKTsKCiNkZWZpbmUgb21wdF9pZF9ub25lIDAKI2RlZmluZSBvbXB0X2RhdGFfbm9uZSB7MH0KI2RlZmluZSBvbXB0X3RpbWVfbm9uZSAwCiNkZWZpbmUgb21wdF9od2lkX25vbmUgMAojZGVmaW5lIG9tcHRfYWRkcl9ub25lIH4wCiNkZWZpbmUgb21wdF9tdXRleF9pbXBsX25vbmUgMAojZGVmaW5lIG9tcHRfd2FpdF9pZF9ub25lIDAKCiNkZWZpbmUgb21wZF9zZWdtZW50X25vbmUgMAoKI2VuZGlmIC8qIF9fT01QVF9fICovCgAvKj09PS0tLS0gcGt1aW50cmluLmggLSBQS1UgaW50cmluc2ljcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqCiAqCiAqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCiAqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCiNpZm5kZWYgX19JTU1JTlRSSU5fSAojZXJyb3IgIk5ldmVyIHVzZSA8cGt1aW50cmluLmg+IGRpcmVjdGx5OyBpbmNsdWRlIDxpbW1pbnRyaW4uaD4gaW5zdGVhZC4iCiNlbmRpZgoKI2lmbmRlZiBfX1BLVUlOVFJJTl9ICiNkZWZpbmUgX19QS1VJTlRSSU5fSAoKLyogRGVmaW5lIHRoZSBkZWZhdWx0IGF0dHJpYnV0ZXMgZm9yIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlLiAqLwojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUyBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oInBrdSIpKSkKCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGludCBfX0RFRkFVTFRfRk5fQVRUUlMKX3JkcGtydV91MzIodm9pZCkKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9yZHBrcnUoKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMKX3dycGtydSh1bnNpZ25lZCBpbnQgX192YWwpCnsKICBfX2J1aWx0aW5faWEzMl93cnBrcnUoX192YWwpOwp9CgojdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTCgojZW5kaWYKAC8qPT09LS0tLSBzZ3hpbnRyaW4uaCAtIFg4NiBTR1ggaW50cmluc2ljcyBjb25maWd1cmF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKi8KCiNpZiAhZGVmaW5lZCBfX1g4NklOVFJJTl9IICYmICFkZWZpbmVkIF9fSU1NSU5UUklOX0gKI2Vycm9yICJOZXZlciB1c2UgPHNneGludHJpbi5oPiBkaXJlY3RseTsgaW5jbHVkZSA8eDg2aW50cmluLmg+IGluc3RlYWQuIgojZW5kaWYKCiNpZm5kZWYgX19TR1hJTlRSSU5fSAojZGVmaW5lIF9fU0dYSU5UUklOX0gKCiNpZiBfX2hhc19leHRlbnNpb24oZ251X2FzbSkKCi8qIERlZmluZSB0aGUgZGVmYXVsdCBhdHRyaWJ1dGVzIGZvciB0aGUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZS4gKi8KI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMgXAogIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgIF9fdGFyZ2V0X18oInNneCIpKSkKCnN0YXRpYyBfX2lubGluZSB1bnNpZ25lZCBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTCl9lbmNsdV91MzIodW5zaWduZWQgaW50IF9fbGVhZiwgX19TSVpFX1RZUEVfXyBfX2RbXSkKewogIHVuc2lnbmVkIGludCBfX3Jlc3VsdDsKICBfX2FzbV9fICgiZW5jbHUiCiAgICAgICAgICAgOiAiPWEiIChfX3Jlc3VsdCksICI9YiIgKF9fZFswXSksICI9YyIgKF9fZFsxXSksICI9ZCIgKF9fZFsyXSkKICAgICAgICAgICA6ICJhIiAoX19sZWFmKSwgImIiIChfX2RbMF0pLCAiYyIgKF9fZFsxXSksICJkIiAoX19kWzJdKQogICAgICAgICAgIDogImNjIik7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgpzdGF0aWMgX19pbmxpbmUgdW5zaWduZWQgaW50IF9fREVGQVVMVF9GTl9BVFRSUwpfZW5jbHNfdTMyKHVuc2lnbmVkIGludCBfX2xlYWYsIF9fU0laRV9UWVBFX18gX19kW10pCnsKICB1bnNpZ25lZCBpbnQgX19yZXN1bHQ7CiAgX19hc21fXyAoImVuY2xzIgogICAgICAgICAgIDogIj1hIiAoX19yZXN1bHQpLCAiPWIiIChfX2RbMF0pLCAiPWMiIChfX2RbMV0pLCAiPWQiIChfX2RbMl0pCiAgICAgICAgICAgOiAiYSIgKF9fbGVhZiksICJiIiAoX19kWzBdKSwgImMiIChfX2RbMV0pLCAiZCIgKF9fZFsyXSkKICAgICAgICAgICA6ICJjYyIpOwogIHJldHVybiBfX3Jlc3VsdDsKfQoKc3RhdGljIF9faW5saW5lIHVuc2lnbmVkIGludCBfX0RFRkFVTFRfRk5fQVRUUlMKX2VuY2x2X3UzMih1bnNpZ25lZCBpbnQgX19sZWFmLCBfX1NJWkVfVFlQRV9fIF9fZFtdKQp7CiAgdW5zaWduZWQgaW50IF9fcmVzdWx0OwogIF9fYXNtX18gKCJlbmNsdiIKICAgICAgICAgICA6ICI9YSIgKF9fcmVzdWx0KSwgIj1iIiAoX19kWzBdKSwgIj1jIiAoX19kWzFdKSwgIj1kIiAoX19kWzJdKQogICAgICAgICAgIDogImEiIChfX2xlYWYpLCAiYiIgKF9fZFswXSksICJjIiAoX19kWzFdKSwgImQiIChfX2RbMl0pCiAgICAgICAgICAgOiAiY2MiKTsKICByZXR1cm4gX19yZXN1bHQ7Cn0KCiN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlMKCiNlbmRpZiAvKiBfX2hhc19leHRlbnNpb24oZ251X2FzbSkgKi8KCiNlbmRpZgoAdG1taW50cmluLmgAd21taW50cmluLmgAcHBjX3dyYXBwZXJzL3NtbWludHJpbi5oACAoc2l6ZT0AVk5hbWUgcnVsZSBpcyBtaXNzaW5nIGl0cyB0ZW1wbGF0ZS4AVGhlIGRvY3VtZW50IHJvb3QgbXVzdCBub3QgYmUgZm9sbG93ZWQgYnkgb3RoZXIgdmFsdWVzLgBzaXplX3QgdG8gaW50IGNvbnZlcnNpb24AcHJlZmVyLXJlYWwAKHVua25vd24pAFs6YWxwaGE6XQAsAGV4dGVybmFsL3JlZ2V4LXJlMi9yZTIvYml0c3RhdGUuY2MATmFtZWRDYXB0dXJlc1dhbGtlcjo6U2hvcnRWaXNpdCBjYWxsZWQAQ2FwdHVyZU5hbWVzV2Fsa2VyOjpTaG9ydFZpc2l0IGNhbGxlZABbXlx4MDAtXHh7MTBmZmZmfV0ARXRoaW9waWMAR3VqYXJhdGkATWFzYXJhbV9Hb25kaQAlc0AgJSpwICAodW5rbm93bikgICVzCgBMb3dMZXZlbEFsbG9jOjpEZWxldGVBcmVuYTogbXVubWFwIGZhaWxlZDogJWQAX19mbG9hdDEyOABlbGxpcHNpcwBjaGFyMTZfdABzdABudwBkYQAqPQBVTktOT1dOACwgZGF0YSA9ICIAZXh0ZXJuYWwvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX3NwbGl0LmNjAHdhaXRwID09IG51bGxwdHIgfHwgd2FpdHAtPnRocmVhZC0+d2FpdHAgPT0gbnVsbHB0ciB8fCB3YWl0cC0+dGhyZWFkLT5zdXBwcmVzc19mYXRhbF9lcnJvcnMAdGhpcy0+bXVfICE9IG51bGxwdHIAVVRDAC9kYXRhL3R6ZGF0YS8AUC0zODQARUNEU0EgUwAvZGV2L3VyYW5kb20AQVNOLjEgZW5jb2Rpbmcgcm91dGluZXMAZWxsaXB0aWMgY3VydmUgcm91dGluZXMAQ09NUCByb3V0aW5lcwBvdXQvc29vbmcvLmludGVybWVkaWF0ZXMvZXh0ZXJuYWwva3l0aGUvY3h4X2V4dHJhY3Rvci9saW51eF9nbGliY194ODZfNjQvZ2VuL3Byb3RvL2t5dGhlL3Byb3RvL2FuYWx5c2lzLnBiLmNjAG91dC9zb29uZy8uaW50ZXJtZWRpYXRlcy9leHRlcm5hbC9reXRoZS9jeHhfZXh0cmFjdG9yL2xpbnV4X2dsaWJjX3g4Nl82NC9nZW4vcHJvdG8va3l0aGUvcHJvdG8vZmlsZWNvbnRleHQucGIuY2MAa3l0aGUucHJvdG8uV3JpdGVSZXF1ZXN0LlVwZGF0ZS5mYWN0X25hbWUAW14tXS4qXC4oZnxmb3J8ZnRufEZ8Rk9SfGZwcHxGUFB8RlROfGY5MHxmOTV8ZjAzfGYwOHxGOTB8Rjk1fEYwM3xGMDgpAENvdWxkbid0IHJlb3BlbiAAaW5jbHVkZQBJbXBvcnRlZCB3YXMgc2V0IHRvIABBbmdsZWQALyo9PT0tLSBfX2NsYW5nX2N1ZGFfY29tcGxleF9idWlsdGlucyAtIENVREEgaW1wbHMgb2YgcnVudGltZSBjb21wbGV4IGZucyAtLS09PT0KICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKi8KCiNpZm5kZWYgX19DTEFOR19DVURBX0NPTVBMRVhfQlVJTFRJTlMKI2RlZmluZSBfX0NMQU5HX0NVREFfQ09NUExFWF9CVUlMVElOUwoKLy8gVGhpcyBoZWFkZXIgZGVmaW5lcyBfX211bGRjMywgX19tdWxzYzMsIF9fZGl2ZGMzLCBhbmQgX19kaXZzYzMuICBUaGVzZSBhcmUKLy8gbGliZ2NjIGZ1bmN0aW9ucyB0aGF0IGNsYW5nIGFzc3VtZXMgYXJlIGF2YWlsYWJsZSB3aGVuIGNvbXBpbGluZyBjOTkgY29tcGxleAovLyBvcGVyYXRpb25zLiAgKFRoZXNlIGltcGxlbWVudGF0aW9ucyBjb21lIGZyb20gbGliYysrLCBhbmQgaGF2ZSBiZWVuIG1vZGlmaWVkCi8vIHRvIHdvcmsgd2l0aCBDVURBIGFuZCBPcGVuTVAgdGFyZ2V0IG9mZmxvYWRpbmcgW2luIEMgYW5kIEMrKyBtb2RlXS4pCgojcHJhZ21hIHB1c2hfbWFjcm8oIl9fREVWSUNFX18iKQojaWYgZGVmaW5lZChfX09QRU5NUF9OVlBUWF9fKSB8fCBkZWZpbmVkKF9fT1BFTk1QX0FNREdDTl9fKQojcHJhZ21hIG9tcCBkZWNsYXJlIHRhcmdldAojZGVmaW5lIF9fREVWSUNFX18gX19hdHRyaWJ1dGVfXygobm9pbmxpbmUsIG5vdGhyb3csIGNvbGQsIHdlYWspKQojZWxzZQojZGVmaW5lIF9fREVWSUNFX18gX19kZXZpY2VfXyBpbmxpbmUKI2VuZGlmCgovLyBUbyBtYWtlIHRoZSBhbGdvcml0aG1zIGF2YWlsYWJsZSBmb3IgQyBhbmQgQysrIGluIENVREEgYW5kIE9wZW5NUCB3ZSBzZWxlY3QKLy8gZGlmZmVyZW50IGJ1dCBlcXVpdmFsZW50IGZ1bmN0aW9uIHZlcnNpb25zLiBUT0RPOiBGb3IgT3Blbk1QIHdlIGN1cnJlbnRseQovLyBzZWxlY3QgdGhlIG5hdGl2ZSBidWlsdGlucyBhcyB0aGUgb3ZlcmxvYWQgc3VwcG9ydCBmb3IgdGVtcGxhdGVzIGlzIGxhY2tpbmcuCiNpZiAhZGVmaW5lZChfX09QRU5NUF9OVlBUWF9fKSAmJiAhZGVmaW5lZChfX09QRU5NUF9BTURHQ05fXykKI2RlZmluZSBfSVNOQU5kIHN0ZDo6aXNuYW4KI2RlZmluZSBfSVNOQU5mIHN0ZDo6aXNuYW4KI2RlZmluZSBfSVNJTkZkIHN0ZDo6aXNpbmYKI2RlZmluZSBfSVNJTkZmIHN0ZDo6aXNpbmYKI2RlZmluZSBfSVNGSU5JVEVkIHN0ZDo6aXNmaW5pdGUKI2RlZmluZSBfSVNGSU5JVEVmIHN0ZDo6aXNmaW5pdGUKI2RlZmluZSBfQ09QWVNJR05kIHN0ZDo6Y29weXNpZ24KI2RlZmluZSBfQ09QWVNJR05mIHN0ZDo6Y29weXNpZ24KI2RlZmluZSBfU0NBTEJOZCBzdGQ6OnNjYWxibgojZGVmaW5lIF9TQ0FMQk5mIHN0ZDo6c2NhbGJuCiNkZWZpbmUgX0FCU2Qgc3RkOjphYnMKI2RlZmluZSBfQUJTZiBzdGQ6OmFicwojZGVmaW5lIF9MT0dCZCBzdGQ6OmxvZ2IKI2RlZmluZSBfTE9HQmYgc3RkOjpsb2diCi8vIFJhdGhlciB0aGFuIHB1bGxpbmcgaW4gc3RkOjptYXggZnJvbSBhbGdvcml0aG0gZXZlcnl0aW1lLCB1c2UgYXZhaWxhYmxlIDo6bWF4LgojZGVmaW5lIF9mbWF4ZCBtYXgKI2RlZmluZSBfZm1heGYgbWF4CiNlbHNlCiNpZmRlZiBfX0FNREdDTl9fCiNkZWZpbmUgX0lTTkFOZCBfX29jbWxfaXNuYW5fZjY0CiNkZWZpbmUgX0lTTkFOZiBfX29jbWxfaXNuYW5fZjMyCiNkZWZpbmUgX0lTSU5GZCBfX29jbWxfaXNpbmZfZjY0CiNkZWZpbmUgX0lTSU5GZiBfX29jbWxfaXNpbmZfZjMyCiNkZWZpbmUgX0lTRklOSVRFZCBfX29jbWxfaXNmaW5pdGVfZjY0CiNkZWZpbmUgX0lTRklOSVRFZiBfX29jbWxfaXNmaW5pdGVfZjMyCiNkZWZpbmUgX0NPUFlTSUdOZCBfX29jbWxfY29weXNpZ25fZjY0CiNkZWZpbmUgX0NPUFlTSUdOZiBfX29jbWxfY29weXNpZ25fZjMyCiNkZWZpbmUgX1NDQUxCTmQgX19vY21sX3NjYWxibl9mNjQKI2RlZmluZSBfU0NBTEJOZiBfX29jbWxfc2NhbGJuX2YzMgojZGVmaW5lIF9BQlNkIF9fb2NtbF9mYWJzX2Y2NAojZGVmaW5lIF9BQlNmIF9fb2NtbF9mYWJzX2YzMgojZGVmaW5lIF9MT0dCZCBfX29jbWxfbG9nYl9mNjQKI2RlZmluZSBfTE9HQmYgX19vY21sX2xvZ2JfZjMyCiNkZWZpbmUgX2ZtYXhkIF9fb2NtbF9mbWF4X2Y2NAojZGVmaW5lIF9mbWF4ZiBfX29jbWxfZm1heF9mMzIKI2Vsc2UKI2RlZmluZSBfSVNOQU5kIF9fbnZfaXNuYW5kCiNkZWZpbmUgX0lTTkFOZiBfX252X2lzbmFuZgojZGVmaW5lIF9JU0lORmQgX19udl9pc2luZmQKI2RlZmluZSBfSVNJTkZmIF9fbnZfaXNpbmZmCiNkZWZpbmUgX0lTRklOSVRFZCBfX252X2lzZmluaXRlZAojZGVmaW5lIF9JU0ZJTklURWYgX19udl9maW5pdGVmCiNkZWZpbmUgX0NPUFlTSUdOZCBfX252X2NvcHlzaWduCiNkZWZpbmUgX0NPUFlTSUdOZiBfX252X2NvcHlzaWduZgojZGVmaW5lIF9TQ0FMQk5kIF9fbnZfc2NhbGJuCiNkZWZpbmUgX1NDQUxCTmYgX19udl9zY2FsYm5mCiNkZWZpbmUgX0FCU2QgX19udl9mYWJzCiNkZWZpbmUgX0FCU2YgX19udl9mYWJzZgojZGVmaW5lIF9MT0dCZCBfX252X2xvZ2IKI2RlZmluZSBfTE9HQmYgX19udl9sb2diZgojZGVmaW5lIF9mbWF4ZCBfX252X2ZtYXgKI2RlZmluZSBfZm1heGYgX19udl9mbWF4ZgojZW5kaWYKI2VuZGlmCgojaWYgZGVmaW5lZChfX2NwbHVzcGx1cykKZXh0ZXJuICJDIiB7CiNlbmRpZgoKX19ERVZJQ0VfXyBkb3VibGUgX0NvbXBsZXggX19tdWxkYzMoZG91YmxlIF9fYSwgZG91YmxlIF9fYiwgZG91YmxlIF9fYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIF9fZCkgewogIGRvdWJsZSBfX2FjID0gX19hICogX19jOwogIGRvdWJsZSBfX2JkID0gX19iICogX19kOwogIGRvdWJsZSBfX2FkID0gX19hICogX19kOwogIGRvdWJsZSBfX2JjID0gX19iICogX19jOwogIGRvdWJsZSBfQ29tcGxleCB6OwogIF9fcmVhbF9fKHopID0gX19hYyAtIF9fYmQ7CiAgX19pbWFnX18oeikgPSBfX2FkICsgX19iYzsKICBpZiAoX0lTTkFOZChfX3JlYWxfXyh6KSkgJiYgX0lTTkFOZChfX2ltYWdfXyh6KSkpIHsKICAgIGludCBfX3JlY2FsYyA9IDA7CiAgICBpZiAoX0lTSU5GZChfX2EpIHx8IF9JU0lORmQoX19iKSkgewogICAgICBfX2EgPSBfQ09QWVNJR05kKF9JU0lORmQoX19hKSA/IDEgOiAwLCBfX2EpOwogICAgICBfX2IgPSBfQ09QWVNJR05kKF9JU0lORmQoX19iKSA/IDEgOiAwLCBfX2IpOwogICAgICBpZiAoX0lTTkFOZChfX2MpKQogICAgICAgIF9fYyA9IF9DT1BZU0lHTmQoMCwgX19jKTsKICAgICAgaWYgKF9JU05BTmQoX19kKSkKICAgICAgICBfX2QgPSBfQ09QWVNJR05kKDAsIF9fZCk7CiAgICAgIF9fcmVjYWxjID0gMTsKICAgIH0KICAgIGlmIChfSVNJTkZkKF9fYykgfHwgX0lTSU5GZChfX2QpKSB7CiAgICAgIF9fYyA9IF9DT1BZU0lHTmQoX0lTSU5GZChfX2MpID8gMSA6IDAsIF9fYyk7CiAgICAgIF9fZCA9IF9DT1BZU0lHTmQoX0lTSU5GZChfX2QpID8gMSA6IDAsIF9fZCk7CiAgICAgIGlmIChfSVNOQU5kKF9fYSkpCiAgICAgICAgX19hID0gX0NPUFlTSUdOZCgwLCBfX2EpOwogICAgICBpZiAoX0lTTkFOZChfX2IpKQogICAgICAgIF9fYiA9IF9DT1BZU0lHTmQoMCwgX19iKTsKICAgICAgX19yZWNhbGMgPSAxOwogICAgfQogICAgaWYgKCFfX3JlY2FsYyAmJgogICAgICAgIChfSVNJTkZkKF9fYWMpIHx8IF9JU0lORmQoX19iZCkgfHwgX0lTSU5GZChfX2FkKSB8fCBfSVNJTkZkKF9fYmMpKSkgewogICAgICBpZiAoX0lTTkFOZChfX2EpKQogICAgICAgIF9fYSA9IF9DT1BZU0lHTmQoMCwgX19hKTsKICAgICAgaWYgKF9JU05BTmQoX19iKSkKICAgICAgICBfX2IgPSBfQ09QWVNJR05kKDAsIF9fYik7CiAgICAgIGlmIChfSVNOQU5kKF9fYykpCiAgICAgICAgX19jID0gX0NPUFlTSUdOZCgwLCBfX2MpOwogICAgICBpZiAoX0lTTkFOZChfX2QpKQogICAgICAgIF9fZCA9IF9DT1BZU0lHTmQoMCwgX19kKTsKICAgICAgX19yZWNhbGMgPSAxOwogICAgfQogICAgaWYgKF9fcmVjYWxjKSB7CiAgICAgIC8vIENhbid0IHVzZSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkgLS0gdGhhdCBkb2Vzbid0IGhhdmUKICAgICAgLy8gYSBkZXZpY2Ugb3ZlcmxvYWQgKGFuZCBpc24ndCBjb25zdGV4cHIgYmVmb3JlIEMrKzExLCBuYXR1cmFsbHkpLgogICAgICBfX3JlYWxfXyh6KSA9IF9fYnVpbHRpbl9odWdlX3ZhbCgpICogKF9fYSAqIF9fYyAtIF9fYiAqIF9fZCk7CiAgICAgIF9faW1hZ19fKHopID0gX19idWlsdGluX2h1Z2VfdmFsKCkgKiAoX19hICogX19kICsgX19iICogX19jKTsKICAgIH0KICB9CiAgcmV0dXJuIHo7Cn0KCl9fREVWSUNFX18gZmxvYXQgX0NvbXBsZXggX19tdWxzYzMoZmxvYXQgX19hLCBmbG9hdCBfX2IsIGZsb2F0IF9fYywgZmxvYXQgX19kKSB7CiAgZmxvYXQgX19hYyA9IF9fYSAqIF9fYzsKICBmbG9hdCBfX2JkID0gX19iICogX19kOwogIGZsb2F0IF9fYWQgPSBfX2EgKiBfX2Q7CiAgZmxvYXQgX19iYyA9IF9fYiAqIF9fYzsKICBmbG9hdCBfQ29tcGxleCB6OwogIF9fcmVhbF9fKHopID0gX19hYyAtIF9fYmQ7CiAgX19pbWFnX18oeikgPSBfX2FkICsgX19iYzsKICBpZiAoX0lTTkFOZihfX3JlYWxfXyh6KSkgJiYgX0lTTkFOZihfX2ltYWdfXyh6KSkpIHsKICAgIGludCBfX3JlY2FsYyA9IDA7CiAgICBpZiAoX0lTSU5GZihfX2EpIHx8IF9JU0lORmYoX19iKSkgewogICAgICBfX2EgPSBfQ09QWVNJR05mKF9JU0lORmYoX19hKSA/IDEgOiAwLCBfX2EpOwogICAgICBfX2IgPSBfQ09QWVNJR05mKF9JU0lORmYoX19iKSA/IDEgOiAwLCBfX2IpOwogICAgICBpZiAoX0lTTkFOZihfX2MpKQogICAgICAgIF9fYyA9IF9DT1BZU0lHTmYoMCwgX19jKTsKICAgICAgaWYgKF9JU05BTmYoX19kKSkKICAgICAgICBfX2QgPSBfQ09QWVNJR05mKDAsIF9fZCk7CiAgICAgIF9fcmVjYWxjID0gMTsKICAgIH0KICAgIGlmIChfSVNJTkZmKF9fYykgfHwgX0lTSU5GZihfX2QpKSB7CiAgICAgIF9fYyA9IF9DT1BZU0lHTmYoX0lTSU5GZihfX2MpID8gMSA6IDAsIF9fYyk7CiAgICAgIF9fZCA9IF9DT1BZU0lHTmYoX0lTSU5GZihfX2QpID8gMSA6IDAsIF9fZCk7CiAgICAgIGlmIChfSVNOQU5mKF9fYSkpCiAgICAgICAgX19hID0gX0NPUFlTSUdOZigwLCBfX2EpOwogICAgICBpZiAoX0lTTkFOZihfX2IpKQogICAgICAgIF9fYiA9IF9DT1BZU0lHTmYoMCwgX19iKTsKICAgICAgX19yZWNhbGMgPSAxOwogICAgfQogICAgaWYgKCFfX3JlY2FsYyAmJgogICAgICAgIChfSVNJTkZmKF9fYWMpIHx8IF9JU0lORmYoX19iZCkgfHwgX0lTSU5GZihfX2FkKSB8fCBfSVNJTkZmKF9fYmMpKSkgewogICAgICBpZiAoX0lTTkFOZihfX2EpKQogICAgICAgIF9fYSA9IF9DT1BZU0lHTmYoMCwgX19hKTsKICAgICAgaWYgKF9JU05BTmYoX19iKSkKICAgICAgICBfX2IgPSBfQ09QWVNJR05mKDAsIF9fYik7CiAgICAgIGlmIChfSVNOQU5mKF9fYykpCiAgICAgICAgX19jID0gX0NPUFlTSUdOZigwLCBfX2MpOwogICAgICBpZiAoX0lTTkFOZihfX2QpKQogICAgICAgIF9fZCA9IF9DT1BZU0lHTmYoMCwgX19kKTsKICAgICAgX19yZWNhbGMgPSAxOwogICAgfQogICAgaWYgKF9fcmVjYWxjKSB7CiAgICAgIF9fcmVhbF9fKHopID0gX19idWlsdGluX2h1Z2VfdmFsZigpICogKF9fYSAqIF9fYyAtIF9fYiAqIF9fZCk7CiAgICAgIF9faW1hZ19fKHopID0gX19idWlsdGluX2h1Z2VfdmFsZigpICogKF9fYSAqIF9fZCArIF9fYiAqIF9fYyk7CiAgICB9CiAgfQogIHJldHVybiB6Owp9CgpfX0RFVklDRV9fIGRvdWJsZSBfQ29tcGxleCBfX2RpdmRjMyhkb3VibGUgX19hLCBkb3VibGUgX19iLCBkb3VibGUgX19jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgX19kKSB7CiAgaW50IF9faWxvZ2J3ID0gMDsKICAvLyBDYW4ndCB1c2Ugc3RkOjptYXgsIGJlY2F1c2UgdGhhdCdzIGRlZmluZWQgaW4gPGFsZ29yaXRobT4sIGFuZCB3ZSBkb24ndAogIC8vIHdhbnQgdG8gcHVsbCB0aGF0IGluIGZvciBldmVyeSBjb21waWxlLiAgVGhlIENVREEgaGVhZGVycyBkZWZpbmUKICAvLyA6Om1heChmbG9hdCwgZmxvYXQpIGFuZCA6Om1heChkb3VibGUsIGRvdWJsZSksIHdoaWNoIGlzIHN1ZmZpY2llbnQgZm9yIHVzLgogIGRvdWJsZSBfX2xvZ2J3ID0gX0xPR0JkKF9mbWF4ZChfQUJTZChfX2MpLCBfQUJTZChfX2QpKSk7CiAgaWYgKF9JU0ZJTklURWQoX19sb2didykpIHsKICAgIF9faWxvZ2J3ID0gKGludClfX2xvZ2J3OwogICAgX19jID0gX1NDQUxCTmQoX19jLCAtX19pbG9nYncpOwogICAgX19kID0gX1NDQUxCTmQoX19kLCAtX19pbG9nYncpOwogIH0KICBkb3VibGUgX19kZW5vbSA9IF9fYyAqIF9fYyArIF9fZCAqIF9fZDsKICBkb3VibGUgX0NvbXBsZXggejsKICBfX3JlYWxfXyh6KSA9IF9TQ0FMQk5kKChfX2EgKiBfX2MgKyBfX2IgKiBfX2QpIC8gX19kZW5vbSwgLV9faWxvZ2J3KTsKICBfX2ltYWdfXyh6KSA9IF9TQ0FMQk5kKChfX2IgKiBfX2MgLSBfX2EgKiBfX2QpIC8gX19kZW5vbSwgLV9faWxvZ2J3KTsKICBpZiAoX0lTTkFOZChfX3JlYWxfXyh6KSkgJiYgX0lTTkFOZChfX2ltYWdfXyh6KSkpIHsKICAgIGlmICgoX19kZW5vbSA9PSAwLjApICYmICghX0lTTkFOZChfX2EpIHx8ICFfSVNOQU5kKF9fYikpKSB7CiAgICAgIF9fcmVhbF9fKHopID0gX0NPUFlTSUdOZChfX2J1aWx0aW5faHVnZV92YWwoKSwgX19jKSAqIF9fYTsKICAgICAgX19pbWFnX18oeikgPSBfQ09QWVNJR05kKF9fYnVpbHRpbl9odWdlX3ZhbCgpLCBfX2MpICogX19iOwogICAgfSBlbHNlIGlmICgoX0lTSU5GZChfX2EpIHx8IF9JU0lORmQoX19iKSkgJiYgX0lTRklOSVRFZChfX2MpICYmCiAgICAgICAgICAgICAgIF9JU0ZJTklURWQoX19kKSkgewogICAgICBfX2EgPSBfQ09QWVNJR05kKF9JU0lORmQoX19hKSA/IDEuMCA6IDAuMCwgX19hKTsKICAgICAgX19iID0gX0NPUFlTSUdOZChfSVNJTkZkKF9fYikgPyAxLjAgOiAwLjAsIF9fYik7CiAgICAgIF9fcmVhbF9fKHopID0gX19idWlsdGluX2h1Z2VfdmFsKCkgKiAoX19hICogX19jICsgX19iICogX19kKTsKICAgICAgX19pbWFnX18oeikgPSBfX2J1aWx0aW5faHVnZV92YWwoKSAqIChfX2IgKiBfX2MgLSBfX2EgKiBfX2QpOwogICAgfSBlbHNlIGlmIChfSVNJTkZkKF9fbG9nYncpICYmIF9fbG9nYncgPiAwLjAgJiYgX0lTRklOSVRFZChfX2EpICYmCiAgICAgICAgICAgICAgIF9JU0ZJTklURWQoX19iKSkgewogICAgICBfX2MgPSBfQ09QWVNJR05kKF9JU0lORmQoX19jKSA/IDEuMCA6IDAuMCwgX19jKTsKICAgICAgX19kID0gX0NPUFlTSUdOZChfSVNJTkZkKF9fZCkgPyAxLjAgOiAwLjAsIF9fZCk7CiAgICAgIF9fcmVhbF9fKHopID0gMC4wICogKF9fYSAqIF9fYyArIF9fYiAqIF9fZCk7CiAgICAgIF9faW1hZ19fKHopID0gMC4wICogKF9fYiAqIF9fYyAtIF9fYSAqIF9fZCk7CiAgICB9CiAgfQogIHJldHVybiB6Owp9CgpfX0RFVklDRV9fIGZsb2F0IF9Db21wbGV4IF9fZGl2c2MzKGZsb2F0IF9fYSwgZmxvYXQgX19iLCBmbG9hdCBfX2MsIGZsb2F0IF9fZCkgewogIGludCBfX2lsb2didyA9IDA7CiAgZmxvYXQgX19sb2didyA9IF9MT0dCZihfZm1heGYoX0FCU2YoX19jKSwgX0FCU2YoX19kKSkpOwogIGlmIChfSVNGSU5JVEVmKF9fbG9nYncpKSB7CiAgICBfX2lsb2didyA9IChpbnQpX19sb2didzsKICAgIF9fYyA9IF9TQ0FMQk5mKF9fYywgLV9faWxvZ2J3KTsKICAgIF9fZCA9IF9TQ0FMQk5mKF9fZCwgLV9faWxvZ2J3KTsKICB9CiAgZmxvYXQgX19kZW5vbSA9IF9fYyAqIF9fYyArIF9fZCAqIF9fZDsKICBmbG9hdCBfQ29tcGxleCB6OwogIF9fcmVhbF9fKHopID0gX1NDQUxCTmYoKF9fYSAqIF9fYyArIF9fYiAqIF9fZCkgLyBfX2Rlbm9tLCAtX19pbG9nYncpOwogIF9faW1hZ19fKHopID0gX1NDQUxCTmYoKF9fYiAqIF9fYyAtIF9fYSAqIF9fZCkgLyBfX2Rlbm9tLCAtX19pbG9nYncpOwogIGlmIChfSVNOQU5mKF9fcmVhbF9fKHopKSAmJiBfSVNOQU5mKF9faW1hZ19fKHopKSkgewogICAgaWYgKChfX2Rlbm9tID09IDApICYmICghX0lTTkFOZihfX2EpIHx8ICFfSVNOQU5mKF9fYikpKSB7CiAgICAgIF9fcmVhbF9fKHopID0gX0NPUFlTSUdOZihfX2J1aWx0aW5faHVnZV92YWxmKCksIF9fYykgKiBfX2E7CiAgICAgIF9faW1hZ19fKHopID0gX0NPUFlTSUdOZihfX2J1aWx0aW5faHVnZV92YWxmKCksIF9fYykgKiBfX2I7CiAgICB9IGVsc2UgaWYgKChfSVNJTkZmKF9fYSkgfHwgX0lTSU5GZihfX2IpKSAmJiBfSVNGSU5JVEVmKF9fYykgJiYKICAgICAgICAgICAgICAgX0lTRklOSVRFZihfX2QpKSB7CiAgICAgIF9fYSA9IF9DT1BZU0lHTmYoX0lTSU5GZihfX2EpID8gMSA6IDAsIF9fYSk7CiAgICAgIF9fYiA9IF9DT1BZU0lHTmYoX0lTSU5GZihfX2IpID8gMSA6IDAsIF9fYik7CiAgICAgIF9fcmVhbF9fKHopID0gX19idWlsdGluX2h1Z2VfdmFsZigpICogKF9fYSAqIF9fYyArIF9fYiAqIF9fZCk7CiAgICAgIF9faW1hZ19fKHopID0gX19idWlsdGluX2h1Z2VfdmFsZigpICogKF9fYiAqIF9fYyAtIF9fYSAqIF9fZCk7CiAgICB9IGVsc2UgaWYgKF9JU0lORmYoX19sb2didykgJiYgX19sb2didyA+IDAgJiYgX0lTRklOSVRFZihfX2EpICYmCiAgICAgICAgICAgICAgIF9JU0ZJTklURWYoX19iKSkgewogICAgICBfX2MgPSBfQ09QWVNJR05mKF9JU0lORmYoX19jKSA/IDEgOiAwLCBfX2MpOwogICAgICBfX2QgPSBfQ09QWVNJR05mKF9JU0lORmYoX19kKSA/IDEgOiAwLCBfX2QpOwogICAgICBfX3JlYWxfXyh6KSA9IDAgKiAoX19hICogX19jICsgX19iICogX19kKTsKICAgICAgX19pbWFnX18oeikgPSAwICogKF9fYiAqIF9fYyAtIF9fYSAqIF9fZCk7CiAgICB9CiAgfQogIHJldHVybiB6Owp9CgojaWYgZGVmaW5lZChfX2NwbHVzcGx1cykKfSAvLyBleHRlcm4gIkMiCiNlbmRpZgoKI3VuZGVmIF9JU05BTmQKI3VuZGVmIF9JU05BTmYKI3VuZGVmIF9JU0lORmQKI3VuZGVmIF9JU0lORmYKI3VuZGVmIF9DT1BZU0lHTmQKI3VuZGVmIF9DT1BZU0lHTmYKI3VuZGVmIF9JU0ZJTklURWQKI3VuZGVmIF9JU0ZJTklURWYKI3VuZGVmIF9TQ0FMQk5kCiN1bmRlZiBfU0NBTEJOZgojdW5kZWYgX0FCU2QKI3VuZGVmIF9BQlNmCiN1bmRlZiBfTE9HQmQKI3VuZGVmIF9MT0dCZgojdW5kZWYgX2ZtYXhkCiN1bmRlZiBfZm1heGYKCiNpZiBkZWZpbmVkKF9fT1BFTk1QX05WUFRYX18pIHx8IGRlZmluZWQoX19PUEVOTVBfQU1ER0NOX18pCiNwcmFnbWEgb21wIGVuZCBkZWNsYXJlIHRhcmdldAojZW5kaWYKCiNwcmFnbWEgcG9wX21hY3JvKCJfX0RFVklDRV9fIikKCiNlbmRpZiAvLyBfX0NMQU5HX0NVREFfQ09NUExFWF9CVUlMVElOUwoALyo9PT0tIF9fY2xhbmdfbWF0aF9mb3J3YXJkX2RlY2xhcmVzLmggLSBQcm90b3R5cGVzIG9mIF9fZGV2aWNlX18gbWF0aCBmbnMgLS09PT0KICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKi8KI2lmbmRlZiBfX0NMQU5HX19DVURBX01BVEhfRk9SV0FSRF9ERUNMQVJFU19IX18KI2RlZmluZSBfX0NMQU5HX19DVURBX01BVEhfRk9SV0FSRF9ERUNMQVJFU19IX18KI2lmICFkZWZpbmVkKF9fQ1VEQV9fKSAmJiAhX19ISVBfXwojZXJyb3IgIlRoaXMgZmlsZSBpcyBmb3IgQ1VEQS9ISVAgY29tcGlsYXRpb24gb25seS4iCiNlbmRpZgoKLy8gVGhpcyBmaWxlIGZvcndhcmQtZGVjbGFyZXMgb2Ygc29tZSBtYXRoIGZ1bmN0aW9ucyB3ZSAob3IgdGhlIENVREEgaGVhZGVycykKLy8gd2lsbCBkZWZpbmUgbGF0ZXIuICBXZSBuZWVkIHRvIGRvIHRoaXMsIGFuZCBkbyBpdCBiZWZvcmUgY21hdGggaXMgaW5jbHVkZWQsCi8vIGJlY2F1c2UgdGhlIHN0YW5kYXJkIGxpYnJhcnkgbWF5IGhhdmUgY29uc3RleHByIG1hdGggZnVuY3Rpb25zLiAgSW4gdGhlCi8vIGFic2VuY2Ugb2YgYSBwcmlvciBfX2RldmljZV9fIGRlY2wsIHRob3NlIGNvbnN0ZXhwciBmdW5jdGlvbnMgbWF5IGJlY29tZQovLyBpbXBsaWNpdGx5IGhvc3QrZGV2aWNlLiAgaG9zdCtkZXZpY2UgZnVuY3Rpb25zIGNhbid0IGJlIG92ZXJsb2FkZWQsIHNvIHRoYXQKLy8gd291bGQgcHJlY2x1ZGUgdGhlIHVzZSBvZiBvdXIgb3duIF9fZGV2aWNlX18gb3ZlcmxvYWRzIGZvciB0aGVzZSBmdW5jdGlvbnMuCgojcHJhZ21hIHB1c2hfbWFjcm8oIl9fREVWSUNFX18iKQojZGVmaW5lIF9fREVWSUNFX18gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIHN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKSBfX2F0dHJpYnV0ZV9fKChkZXZpY2UpKQoKX19ERVZJQ0VfXyBsb25nIGFicyhsb25nKTsKX19ERVZJQ0VfXyBsb25nIGxvbmcgYWJzKGxvbmcgbG9uZyk7Cl9fREVWSUNFX18gZG91YmxlIGFicyhkb3VibGUpOwpfX0RFVklDRV9fIGZsb2F0IGFicyhmbG9hdCk7Cl9fREVWSUNFX18gaW50IGFicyhpbnQpOwpfX0RFVklDRV9fIGRvdWJsZSBhY29zKGRvdWJsZSk7Cl9fREVWSUNFX18gZmxvYXQgYWNvcyhmbG9hdCk7Cl9fREVWSUNFX18gZG91YmxlIGFjb3NoKGRvdWJsZSk7Cl9fREVWSUNFX18gZmxvYXQgYWNvc2goZmxvYXQpOwpfX0RFVklDRV9fIGRvdWJsZSBhc2luKGRvdWJsZSk7Cl9fREVWSUNFX18gZmxvYXQgYXNpbihmbG9hdCk7Cl9fREVWSUNFX18gZG91YmxlIGFzaW5oKGRvdWJsZSk7Cl9fREVWSUNFX18gZmxvYXQgYXNpbmgoZmxvYXQpOwpfX0RFVklDRV9fIGRvdWJsZSBhdGFuMihkb3VibGUsIGRvdWJsZSk7Cl9fREVWSUNFX18gZmxvYXQgYXRhbjIoZmxvYXQsIGZsb2F0KTsKX19ERVZJQ0VfXyBkb3VibGUgYXRhbihkb3VibGUpOwpfX0RFVklDRV9fIGZsb2F0IGF0YW4oZmxvYXQpOwpfX0RFVklDRV9fIGRvdWJsZSBhdGFuaChkb3VibGUpOwpfX0RFVklDRV9fIGZsb2F0IGF0YW5oKGZsb2F0KTsKX19ERVZJQ0VfXyBkb3VibGUgY2JydChkb3VibGUpOwpfX0RFVklDRV9fIGZsb2F0IGNicnQoZmxvYXQpOwpfX0RFVklDRV9fIGRvdWJsZSBjZWlsKGRvdWJsZSk7Cl9fREVWSUNFX18gZmxvYXQgY2VpbChmbG9hdCk7Cl9fREVWSUNFX18gZG91YmxlIGNvcHlzaWduKGRvdWJsZSwgZG91YmxlKTsKX19ERVZJQ0VfXyBmbG9hdCBjb3B5c2lnbihmbG9hdCwgZmxvYXQpOwpfX0RFVklDRV9fIGRvdWJsZSBjb3MoZG91YmxlKTsKX19ERVZJQ0VfXyBmbG9hdCBjb3MoZmxvYXQpOwpfX0RFVklDRV9fIGRvdWJsZSBjb3NoKGRvdWJsZSk7Cl9fREVWSUNFX18gZmxvYXQgY29zaChmbG9hdCk7Cl9fREVWSUNFX18gZG91YmxlIGVyZmMoZG91YmxlKTsKX19ERVZJQ0VfXyBmbG9hdCBlcmZjKGZsb2F0KTsKX19ERVZJQ0VfXyBkb3VibGUgZXJmKGRvdWJsZSk7Cl9fREVWSUNFX18gZmxvYXQgZXJmKGZsb2F0KTsKX19ERVZJQ0VfXyBkb3VibGUgZXhwMihkb3VibGUpOwpfX0RFVklDRV9fIGZsb2F0IGV4cDIoZmxvYXQpOwpfX0RFVklDRV9fIGRvdWJsZSBleHAoZG91YmxlKTsKX19ERVZJQ0VfXyBmbG9hdCBleHAoZmxvYXQpOwpfX0RFVklDRV9fIGRvdWJsZSBleHBtMShkb3VibGUpOwpfX0RFVklDRV9fIGZsb2F0IGV4cG0xKGZsb2F0KTsKX19ERVZJQ0VfXyBkb3VibGUgZmFicyhkb3VibGUpOwpfX0RFVklDRV9fIGZsb2F0IGZhYnMoZmxvYXQpOwpfX0RFVklDRV9fIGRvdWJsZSBmZGltKGRvdWJsZSwgZG91YmxlKTsKX19ERVZJQ0VfXyBmbG9hdCBmZGltKGZsb2F0LCBmbG9hdCk7Cl9fREVWSUNFX18gZG91YmxlIGZsb29yKGRvdWJsZSk7Cl9fREVWSUNFX18gZmxvYXQgZmxvb3IoZmxvYXQpOwpfX0RFVklDRV9fIGRvdWJsZSBmbWEoZG91YmxlLCBkb3VibGUsIGRvdWJsZSk7Cl9fREVWSUNFX18gZmxvYXQgZm1hKGZsb2F0LCBmbG9hdCwgZmxvYXQpOwpfX0RFVklDRV9fIGRvdWJsZSBmbWF4KGRvdWJsZSwgZG91YmxlKTsKX19ERVZJQ0VfXyBmbG9hdCBmbWF4KGZsb2F0LCBmbG9hdCk7Cl9fREVWSUNFX18gZG91YmxlIGZtaW4oZG91YmxlLCBkb3VibGUpOwpfX0RFVklDRV9fIGZsb2F0IGZtaW4oZmxvYXQsIGZsb2F0KTsKX19ERVZJQ0VfXyBkb3VibGUgZm1vZChkb3VibGUsIGRvdWJsZSk7Cl9fREVWSUNFX18gZmxvYXQgZm1vZChmbG9hdCwgZmxvYXQpOwpfX0RFVklDRV9fIGludCBmcGNsYXNzaWZ5KGRvdWJsZSk7Cl9fREVWSUNFX18gaW50IGZwY2xhc3NpZnkoZmxvYXQpOwpfX0RFVklDRV9fIGRvdWJsZSBmcmV4cChkb3VibGUsIGludCAqKTsKX19ERVZJQ0VfXyBmbG9hdCBmcmV4cChmbG9hdCwgaW50ICopOwpfX0RFVklDRV9fIGRvdWJsZSBoeXBvdChkb3VibGUsIGRvdWJsZSk7Cl9fREVWSUNFX18gZmxvYXQgaHlwb3QoZmxvYXQsIGZsb2F0KTsKX19ERVZJQ0VfXyBpbnQgaWxvZ2IoZG91YmxlKTsKX19ERVZJQ0VfXyBpbnQgaWxvZ2IoZmxvYXQpOwojaWZkZWYgX01TQ19WRVIKX19ERVZJQ0VfXyBib29sIGlzZmluaXRlKGxvbmcgZG91YmxlKTsKI2VuZGlmCl9fREVWSUNFX18gYm9vbCBpc2Zpbml0ZShkb3VibGUpOwpfX0RFVklDRV9fIGJvb2wgaXNmaW5pdGUoZmxvYXQpOwpfX0RFVklDRV9fIGJvb2wgaXNncmVhdGVyKGRvdWJsZSwgZG91YmxlKTsKX19ERVZJQ0VfXyBib29sIGlzZ3JlYXRlcmVxdWFsKGRvdWJsZSwgZG91YmxlKTsKX19ERVZJQ0VfXyBib29sIGlzZ3JlYXRlcmVxdWFsKGZsb2F0LCBmbG9hdCk7Cl9fREVWSUNFX18gYm9vbCBpc2dyZWF0ZXIoZmxvYXQsIGZsb2F0KTsKI2lmZGVmIF9NU0NfVkVSCl9fREVWSUNFX18gYm9vbCBpc2luZihsb25nIGRvdWJsZSk7CiNlbmRpZgpfX0RFVklDRV9fIGJvb2wgaXNpbmYoZG91YmxlKTsKX19ERVZJQ0VfXyBib29sIGlzaW5mKGZsb2F0KTsKX19ERVZJQ0VfXyBib29sIGlzbGVzcyhkb3VibGUsIGRvdWJsZSk7Cl9fREVWSUNFX18gYm9vbCBpc2xlc3NlcXVhbChkb3VibGUsIGRvdWJsZSk7Cl9fREVWSUNFX18gYm9vbCBpc2xlc3NlcXVhbChmbG9hdCwgZmxvYXQpOwpfX0RFVklDRV9fIGJvb2wgaXNsZXNzKGZsb2F0LCBmbG9hdCk7Cl9fREVWSUNFX18gYm9vbCBpc2xlc3NncmVhdGVyKGRvdWJsZSwgZG91YmxlKTsKX19ERVZJQ0VfXyBib29sIGlzbGVzc2dyZWF0ZXIoZmxvYXQsIGZsb2F0KTsKI2lmZGVmIF9NU0NfVkVSCl9fREVWSUNFX18gYm9vbCBpc25hbihsb25nIGRvdWJsZSk7CiNlbmRpZgpfX0RFVklDRV9fIGJvb2wgaXNuYW4oZG91YmxlKTsKX19ERVZJQ0VfXyBib29sIGlzbmFuKGZsb2F0KTsKX19ERVZJQ0VfXyBib29sIGlzbm9ybWFsKGRvdWJsZSk7Cl9fREVWSUNFX18gYm9vbCBpc25vcm1hbChmbG9hdCk7Cl9fREVWSUNFX18gYm9vbCBpc3Vub3JkZXJlZChkb3VibGUsIGRvdWJsZSk7Cl9fREVWSUNFX18gYm9vbCBpc3Vub3JkZXJlZChmbG9hdCwgZmxvYXQpOwpfX0RFVklDRV9fIGxvbmcgbGFicyhsb25nKTsKX19ERVZJQ0VfXyBkb3VibGUgbGRleHAoZG91YmxlLCBpbnQpOwpfX0RFVklDRV9fIGZsb2F0IGxkZXhwKGZsb2F0LCBpbnQpOwpfX0RFVklDRV9fIGRvdWJsZSBsZ2FtbWEoZG91YmxlKTsKX19ERVZJQ0VfXyBmbG9hdCBsZ2FtbWEoZmxvYXQpOwpfX0RFVklDRV9fIGxvbmcgbG9uZyBsbGFicyhsb25nIGxvbmcpOwpfX0RFVklDRV9fIGxvbmcgbG9uZyBsbHJpbnQoZG91YmxlKTsKX19ERVZJQ0VfXyBsb25nIGxvbmcgbGxyaW50KGZsb2F0KTsKX19ERVZJQ0VfXyBkb3VibGUgbG9nMTAoZG91YmxlKTsKX19ERVZJQ0VfXyBmbG9hdCBsb2cxMChmbG9hdCk7Cl9fREVWSUNFX18gZG91YmxlIGxvZzFwKGRvdWJsZSk7Cl9fREVWSUNFX18gZmxvYXQgbG9nMXAoZmxvYXQpOwpfX0RFVklDRV9fIGRvdWJsZSBsb2cyKGRvdWJsZSk7Cl9fREVWSUNFX18gZmxvYXQgbG9nMihmbG9hdCk7Cl9fREVWSUNFX18gZG91YmxlIGxvZ2IoZG91YmxlKTsKX19ERVZJQ0VfXyBmbG9hdCBsb2diKGZsb2F0KTsKX19ERVZJQ0VfXyBkb3VibGUgbG9nKGRvdWJsZSk7Cl9fREVWSUNFX18gZmxvYXQgbG9nKGZsb2F0KTsKX19ERVZJQ0VfXyBsb25nIGxyaW50KGRvdWJsZSk7Cl9fREVWSUNFX18gbG9uZyBscmludChmbG9hdCk7Cl9fREVWSUNFX18gbG9uZyBscm91bmQoZG91YmxlKTsKX19ERVZJQ0VfXyBsb25nIGxyb3VuZChmbG9hdCk7Cl9fREVWSUNFX18gbG9uZyBsb25nIGxscm91bmQoZmxvYXQpOyAvLyBObyBsbHJvdW5kKGRvdWJsZSkuCl9fREVWSUNFX18gZG91YmxlIG1vZGYoZG91YmxlLCBkb3VibGUgKik7Cl9fREVWSUNFX18gZmxvYXQgbW9kZihmbG9hdCwgZmxvYXQgKik7Cl9fREVWSUNFX18gZG91YmxlIG5hbihjb25zdCBjaGFyICopOwpfX0RFVklDRV9fIGZsb2F0IG5hbmYoY29uc3QgY2hhciAqKTsKX19ERVZJQ0VfXyBkb3VibGUgbmVhcmJ5aW50KGRvdWJsZSk7Cl9fREVWSUNFX18gZmxvYXQgbmVhcmJ5aW50KGZsb2F0KTsKX19ERVZJQ0VfXyBkb3VibGUgbmV4dGFmdGVyKGRvdWJsZSwgZG91YmxlKTsKX19ERVZJQ0VfXyBmbG9hdCBuZXh0YWZ0ZXIoZmxvYXQsIGZsb2F0KTsKX19ERVZJQ0VfXyBkb3VibGUgcG93KGRvdWJsZSwgZG91YmxlKTsKX19ERVZJQ0VfXyBkb3VibGUgcG93KGRvdWJsZSwgaW50KTsKX19ERVZJQ0VfXyBmbG9hdCBwb3coZmxvYXQsIGZsb2F0KTsKX19ERVZJQ0VfXyBmbG9hdCBwb3coZmxvYXQsIGludCk7Cl9fREVWSUNFX18gZG91YmxlIHJlbWFpbmRlcihkb3VibGUsIGRvdWJsZSk7Cl9fREVWSUNFX18gZmxvYXQgcmVtYWluZGVyKGZsb2F0LCBmbG9hdCk7Cl9fREVWSUNFX18gZG91YmxlIHJlbXF1byhkb3VibGUsIGRvdWJsZSwgaW50ICopOwpfX0RFVklDRV9fIGZsb2F0IHJlbXF1byhmbG9hdCwgZmxvYXQsIGludCAqKTsKX19ERVZJQ0VfXyBkb3VibGUgcmludChkb3VibGUpOwpfX0RFVklDRV9fIGZsb2F0IHJpbnQoZmxvYXQpOwpfX0RFVklDRV9fIGRvdWJsZSByb3VuZChkb3VibGUpOwpfX0RFVklDRV9fIGZsb2F0IHJvdW5kKGZsb2F0KTsKX19ERVZJQ0VfXyBkb3VibGUgc2NhbGJsbihkb3VibGUsIGxvbmcpOwpfX0RFVklDRV9fIGZsb2F0IHNjYWxibG4oZmxvYXQsIGxvbmcpOwpfX0RFVklDRV9fIGRvdWJsZSBzY2FsYm4oZG91YmxlLCBpbnQpOwpfX0RFVklDRV9fIGZsb2F0IHNjYWxibihmbG9hdCwgaW50KTsKI2lmZGVmIF9NU0NfVkVSCl9fREVWSUNFX18gYm9vbCBzaWduYml0KGxvbmcgZG91YmxlKTsKI2VuZGlmCl9fREVWSUNFX18gYm9vbCBzaWduYml0KGRvdWJsZSk7Cl9fREVWSUNFX18gYm9vbCBzaWduYml0KGZsb2F0KTsKX19ERVZJQ0VfXyBkb3VibGUgc2luKGRvdWJsZSk7Cl9fREVWSUNFX18gZmxvYXQgc2luKGZsb2F0KTsKX19ERVZJQ0VfXyBkb3VibGUgc2luaChkb3VibGUpOwpfX0RFVklDRV9fIGZsb2F0IHNpbmgoZmxvYXQpOwpfX0RFVklDRV9fIGRvdWJsZSBzcXJ0KGRvdWJsZSk7Cl9fREVWSUNFX18gZmxvYXQgc3FydChmbG9hdCk7Cl9fREVWSUNFX18gZG91YmxlIHRhbihkb3VibGUpOwpfX0RFVklDRV9fIGZsb2F0IHRhbihmbG9hdCk7Cl9fREVWSUNFX18gZG91YmxlIHRhbmgoZG91YmxlKTsKX19ERVZJQ0VfXyBmbG9hdCB0YW5oKGZsb2F0KTsKX19ERVZJQ0VfXyBkb3VibGUgdGdhbW1hKGRvdWJsZSk7Cl9fREVWSUNFX18gZmxvYXQgdGdhbW1hKGZsb2F0KTsKX19ERVZJQ0VfXyBkb3VibGUgdHJ1bmMoZG91YmxlKTsKX19ERVZJQ0VfXyBmbG9hdCB0cnVuYyhmbG9hdCk7CgovLyBOb3RhYmx5IG1pc3NpbmcgYWJvdmUgaXMgbmV4dHRvd2FyZCwgd2hpY2ggd2UgZG9uJ3QgZGVmaW5lIG9uCi8vIHRoZSBkZXZpY2Ugc2lkZSBiZWNhdXNlIGxpYmRldmljZSBkb2Vzbid0IGdpdmUgdXMgYW4gaW1wbGVtZW50YXRpb24sIGFuZCB3ZQovLyBkb24ndCB3YW50IHRvIGJlIGluIHRoZSBidXNpbmVzcyBvZiB3cml0aW5nIG9uZSBvdXJzZWx2ZXMuCgovLyBXZSBuZWVkIHRvIGRlZmluZSB0aGVzZSBvdmVybG9hZHMgaW4gZXhhY3RseSB0aGUgbmFtZXNwYWNlIG91ciBzdGFuZGFyZAovLyBsaWJyYXJ5IHVzZXMgKGluY2x1ZGluZyB0aGUgcmlnaHQgaW5saW5lIG5hbWVzcGFjZSksIG90aGVyd2lzZSB0aGV5IHdvbid0IGJlCi8vIHBpY2tlZCB1cCBieSBvdGhlciBmdW5jdGlvbnMgaW4gdGhlIHN0YW5kYXJkIGxpYnJhcnkgKGUuZy4gZnVuY3Rpb25zIGluCi8vIDxjb21wbGV4PikuICBUaHVzIHRoZSB1Z2xpbmVzcyBiZWxvdy4KI2lmZGVmIF9MSUJDUFBfQkVHSU5fTkFNRVNQQUNFX1NURApfTElCQ1BQX0JFR0lOX05BTUVTUEFDRV9TVEQKI2Vsc2UKbmFtZXNwYWNlIHN0ZCB7CiNpZmRlZiBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgpfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgojZW5kaWYKI2VuZGlmCgp1c2luZyA6OmFiczsKdXNpbmcgOjphY29zOwp1c2luZyA6OmFjb3NoOwp1c2luZyA6OmFzaW47CnVzaW5nIDo6YXNpbmg7CnVzaW5nIDo6YXRhbjsKdXNpbmcgOjphdGFuMjsKdXNpbmcgOjphdGFuaDsKdXNpbmcgOjpjYnJ0Owp1c2luZyA6OmNlaWw7CnVzaW5nIDo6Y29weXNpZ247CnVzaW5nIDo6Y29zOwp1c2luZyA6OmNvc2g7CnVzaW5nIDo6ZXJmOwp1c2luZyA6OmVyZmM7CnVzaW5nIDo6ZXhwOwp1c2luZyA6OmV4cDI7CnVzaW5nIDo6ZXhwbTE7CnVzaW5nIDo6ZmFiczsKdXNpbmcgOjpmZGltOwp1c2luZyA6OmZsb29yOwp1c2luZyA6OmZtYTsKdXNpbmcgOjpmbWF4Owp1c2luZyA6OmZtaW47CnVzaW5nIDo6Zm1vZDsKdXNpbmcgOjpmcGNsYXNzaWZ5Owp1c2luZyA6OmZyZXhwOwp1c2luZyA6Omh5cG90Owp1c2luZyA6Omlsb2diOwp1c2luZyA6OmlzZmluaXRlOwp1c2luZyA6OmlzZ3JlYXRlcjsKdXNpbmcgOjppc2dyZWF0ZXJlcXVhbDsKdXNpbmcgOjppc2luZjsKdXNpbmcgOjppc2xlc3M7CnVzaW5nIDo6aXNsZXNzZXF1YWw7CnVzaW5nIDo6aXNsZXNzZ3JlYXRlcjsKdXNpbmcgOjppc25hbjsKdXNpbmcgOjppc25vcm1hbDsKdXNpbmcgOjppc3Vub3JkZXJlZDsKdXNpbmcgOjpsYWJzOwp1c2luZyA6OmxkZXhwOwp1c2luZyA6OmxnYW1tYTsKdXNpbmcgOjpsbGFiczsKdXNpbmcgOjpsbHJpbnQ7CnVzaW5nIDo6bG9nOwp1c2luZyA6OmxvZzEwOwp1c2luZyA6OmxvZzFwOwp1c2luZyA6OmxvZzI7CnVzaW5nIDo6bG9nYjsKdXNpbmcgOjpscmludDsKdXNpbmcgOjpscm91bmQ7CnVzaW5nIDo6bGxyb3VuZDsKdXNpbmcgOjptb2RmOwp1c2luZyA6Om5hbjsKdXNpbmcgOjpuYW5mOwp1c2luZyA6Om5lYXJieWludDsKdXNpbmcgOjpuZXh0YWZ0ZXI7CnVzaW5nIDo6cG93Owp1c2luZyA6OnJlbWFpbmRlcjsKdXNpbmcgOjpyZW1xdW87CnVzaW5nIDo6cmludDsKdXNpbmcgOjpyb3VuZDsKdXNpbmcgOjpzY2FsYmxuOwp1c2luZyA6OnNjYWxibjsKdXNpbmcgOjpzaWduYml0Owp1c2luZyA6OnNpbjsKdXNpbmcgOjpzaW5oOwp1c2luZyA6OnNxcnQ7CnVzaW5nIDo6dGFuOwp1c2luZyA6OnRhbmg7CnVzaW5nIDo6dGdhbW1hOwp1c2luZyA6OnRydW5jOwoKI2lmZGVmIF9MSUJDUFBfRU5EX05BTUVTUEFDRV9TVEQKX0xJQkNQUF9FTkRfTkFNRVNQQUNFX1NURAojZWxzZQojaWZkZWYgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KX0dMSUJDWFhfRU5EX05BTUVTUEFDRV9WRVJTSU9OCiNlbmRpZgp9IC8vIG5hbWVzcGFjZSBzdGQKI2VuZGlmCgojcHJhZ21hIHBvcF9tYWNybygiX19ERVZJQ0VfXyIpCgojZW5kaWYKAC8qPT09LS0tLSBhdng1MTJlcmludHJpbi5oIC0gQVZYNTEyRVIgaW50cmluc2ljcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKi8KI2lmbmRlZiBfX0lNTUlOVFJJTl9ICiNlcnJvciAiTmV2ZXIgdXNlIDxhdng1MTJlcmludHJpbi5oPiBkaXJlY3RseTsgaW5jbHVkZSA8aW1taW50cmluLmg+IGluc3RlYWQuIgojZW5kaWYKCiNpZm5kZWYgX19BVlg1MTJFUklOVFJJTl9ICiNkZWZpbmUgX19BVlg1MTJFUklOVFJJTl9ICgovKiBleHAyYTIzICovCiNkZWZpbmUgX21tNTEyX2V4cDJhMjNfcm91bmRfcGQoQSwgUikgXAogICgoX19tNTEyZClfX2J1aWx0aW5faWEzMl9leHAycGRfbWFzaygoX192OGRmKShfX201MTJkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl9zZXR6ZXJvX3BkKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX2V4cDJhMjNfcm91bmRfcGQoUywgTSwgQSwgUikgXAogICgoX19tNTEyZClfX2J1aWx0aW5faWEzMl9leHAycGRfbWFzaygoX192OGRmKShfX201MTJkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKShfX201MTJkKShTKSwgKF9fbW1hc2s4KShNKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9leHAyYTIzX3JvdW5kX3BkKE0sIEEsIFIpIFwKICAoKF9fbTUxMmQpX19idWlsdGluX2lhMzJfZXhwMnBkX21hc2soKF9fdjhkZikoX19tNTEyZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfbW01MTJfc2V0emVyb19wZCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoTSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX2V4cDJhMjNfcGQoQSkgXAogIF9tbTUxMl9leHAyYTIzX3JvdW5kX3BkKChBKSwgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKQoKI2RlZmluZSBfbW01MTJfbWFza19leHAyYTIzX3BkKFMsIE0sIEEpIFwKICBfbW01MTJfbWFza19leHAyYTIzX3JvdW5kX3BkKChTKSwgKE0pLCAoQSksIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTikKCiNkZWZpbmUgX21tNTEyX21hc2t6X2V4cDJhMjNfcGQoTSwgQSkgXAogIF9tbTUxMl9tYXNrel9leHAyYTIzX3JvdW5kX3BkKChNKSwgKEEpLCBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pCgojZGVmaW5lIF9tbTUxMl9leHAyYTIzX3JvdW5kX3BzKEEsIFIpIFwKICAoKF9fbTUxMilfX2J1aWx0aW5faWEzMl9leHAycHNfbWFzaygoX192MTZzZikoX19tNTEyKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl9zZXR6ZXJvX3BzKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KS0xLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX2V4cDJhMjNfcm91bmRfcHMoUywgTSwgQSwgUikgXAogICgoX19tNTEyKV9fYnVpbHRpbl9pYTMyX2V4cDJwc19tYXNrKChfX3YxNnNmKShfX201MTIpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpKF9fbTUxMikoUyksIChfX21tYXNrMTYpKE0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfZXhwMmEyM19yb3VuZF9wcyhNLCBBLCBSKSBcCiAgKChfX201MTIpX19idWlsdGluX2lhMzJfZXhwMnBzX21hc2soKF9fdjE2c2YpKF9fbTUxMikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfc2V0emVyb19wcygpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikoTSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX2V4cDJhMjNfcHMoQSkgXAogIF9tbTUxMl9leHAyYTIzX3JvdW5kX3BzKChBKSwgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKQoKI2RlZmluZSBfbW01MTJfbWFza19leHAyYTIzX3BzKFMsIE0sIEEpIFwKICBfbW01MTJfbWFza19leHAyYTIzX3JvdW5kX3BzKChTKSwgKE0pLCAoQSksIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTikKCiNkZWZpbmUgX21tNTEyX21hc2t6X2V4cDJhMjNfcHMoTSwgQSkgXAogIF9tbTUxMl9tYXNrel9leHAyYTIzX3JvdW5kX3BzKChNKSwgKEEpLCBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pCgovKiByc3FydDI4ICovCiNkZWZpbmUgX21tNTEyX3JzcXJ0Mjhfcm91bmRfcGQoQSwgUikgXAogICgoX19tNTEyZClfX2J1aWx0aW5faWEzMl9yc3FydDI4cGRfbWFzaygoX192OGRmKShfX201MTJkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl9zZXR6ZXJvX3BkKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX3JzcXJ0Mjhfcm91bmRfcGQoUywgTSwgQSwgUikgXAogICgoX19tNTEyZClfX2J1aWx0aW5faWEzMl9yc3FydDI4cGRfbWFzaygoX192OGRmKShfX201MTJkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKShfX201MTJkKShTKSwgKF9fbW1hc2s4KShNKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9yc3FydDI4X3JvdW5kX3BkKE0sIEEsIFIpIFwKICAoKF9fbTUxMmQpX19idWlsdGluX2lhMzJfcnNxcnQyOHBkX21hc2soKF9fdjhkZikoX19tNTEyZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfbW01MTJfc2V0emVyb19wZCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoTSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX3JzcXJ0MjhfcGQoQSkgXAogIF9tbTUxMl9yc3FydDI4X3JvdW5kX3BkKChBKSwgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKQoKI2RlZmluZSBfbW01MTJfbWFza19yc3FydDI4X3BkKFMsIE0sIEEpIFwKICBfbW01MTJfbWFza19yc3FydDI4X3JvdW5kX3BkKChTKSwgKE0pLCAoQSksIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTikKCiNkZWZpbmUgX21tNTEyX21hc2t6X3JzcXJ0MjhfcGQoTSwgQSkgXAogIF9tbTUxMl9tYXNrel9yc3FydDI4X3JvdW5kX3BkKChNKSwgKEEpLCBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pCgojZGVmaW5lIF9tbTUxMl9yc3FydDI4X3JvdW5kX3BzKEEsIFIpIFwKICAoKF9fbTUxMilfX2J1aWx0aW5faWEzMl9yc3FydDI4cHNfbWFzaygoX192MTZzZikoX19tNTEyKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl9zZXR6ZXJvX3BzKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KS0xLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX3JzcXJ0Mjhfcm91bmRfcHMoUywgTSwgQSwgUikgXAogICgoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3JzcXJ0Mjhwc19tYXNrKChfX3YxNnNmKShfX201MTIpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpKF9fbTUxMikoUyksIChfX21tYXNrMTYpKE0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfcnNxcnQyOF9yb3VuZF9wcyhNLCBBLCBSKSBcCiAgKChfX201MTIpX19idWlsdGluX2lhMzJfcnNxcnQyOHBzX21hc2soKF9fdjE2c2YpKF9fbTUxMikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfc2V0emVyb19wcygpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikoTSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX3JzcXJ0MjhfcHMoQSkgXAogIF9tbTUxMl9yc3FydDI4X3JvdW5kX3BzKChBKSwgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKQoKI2RlZmluZSBfbW01MTJfbWFza19yc3FydDI4X3BzKFMsIE0sIEEpIFwKICBfbW01MTJfbWFza19yc3FydDI4X3JvdW5kX3BzKChTKSwgKE0pLCBBLCBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pCgojZGVmaW5lIF9tbTUxMl9tYXNrel9yc3FydDI4X3BzKE0sIEEpIFwKICBfbW01MTJfbWFza3pfcnNxcnQyOF9yb3VuZF9wcygoTSksIChBKSwgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKQoKI2RlZmluZSBfbW1fcnNxcnQyOF9yb3VuZF9zcyhBLCBCLCBSKSBcCiAgKChfX20xMjgpX19idWlsdGluX2lhMzJfcnNxcnQyOHNzX3JvdW5kX21hc2soKF9fdjRzZikoX19tMTI4KShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9tbV9zZXR6ZXJvX3BzKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEsIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX21hc2tfcnNxcnQyOF9yb3VuZF9zcyhTLCBNLCBBLCBCLCBSKSBcCiAgKChfX20xMjgpX19idWlsdGluX2lhMzJfcnNxcnQyOHNzX3JvdW5kX21hc2soKF9fdjRzZikoX19tMTI4KShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKFMpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShNKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW1fbWFza3pfcnNxcnQyOF9yb3VuZF9zcyhNLCBBLCBCLCBSKSBcCiAgKChfX20xMjgpX19idWlsdGluX2lhMzJfcnNxcnQyOHNzX3JvdW5kX21hc2soKF9fdjRzZikoX19tMTI4KShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9tbV9zZXR6ZXJvX3BzKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKE0pLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbV9yc3FydDI4X3NzKEEsIEIpIFwKICBfbW1fcnNxcnQyOF9yb3VuZF9zcygoQSksIChCKSwgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKQoKI2RlZmluZSBfbW1fbWFza19yc3FydDI4X3NzKFMsIE0sIEEsIEIpIFwKICBfbW1fbWFza19yc3FydDI4X3JvdW5kX3NzKChTKSwgKE0pLCAoQSksIChCKSwgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKQoKI2RlZmluZSBfbW1fbWFza3pfcnNxcnQyOF9zcyhNLCBBLCBCKSBcCiAgX21tX21hc2t6X3JzcXJ0Mjhfcm91bmRfc3MoKE0pLCAoQSksIChCKSwgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKQoKI2RlZmluZSBfbW1fcnNxcnQyOF9yb3VuZF9zZChBLCBCLCBSKSBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3JzcXJ0MjhzZF9yb3VuZF9tYXNrKChfX3YyZGYpKF9fbTEyOGQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX3NldHplcm9fcGQoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEsIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX21hc2tfcnNxcnQyOF9yb3VuZF9zZChTLCBNLCBBLCBCLCBSKSBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3JzcXJ0MjhzZF9yb3VuZF9tYXNrKChfX3YyZGYpKF9fbTEyOGQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKFMpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoTSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX21hc2t6X3JzcXJ0Mjhfcm91bmRfc2QoTSwgQSwgQiwgUikgXAogICgoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9yc3FydDI4c2Rfcm91bmRfbWFzaygoX192MmRmKShfX20xMjhkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9tbV9zZXR6ZXJvX3BkKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShNKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW1fcnNxcnQyOF9zZChBLCBCKSBcCiAgX21tX3JzcXJ0Mjhfcm91bmRfc2QoKEEpLCAoQiksIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTikKCiNkZWZpbmUgX21tX21hc2tfcnNxcnQyOF9zZChTLCBNLCBBLCBCKSBcCiAgX21tX21hc2tfcnNxcnQyOF9yb3VuZF9zZCgoUyksIChNKSwgKEEpLCAoQiksIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTikKCiNkZWZpbmUgX21tX21hc2t6X3JzcXJ0Mjhfc2QoTSwgQSwgQikgXAogIF9tbV9tYXNrel9yc3FydDI4X3JvdW5kX3NkKChNKSwgKEEpLCAoQiksIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTikKCi8qIHJjcDI4ICovCiNkZWZpbmUgX21tNTEyX3JjcDI4X3JvdW5kX3BkKEEsIFIpIFwKICAoKF9fbTUxMmQpX19idWlsdGluX2lhMzJfcmNwMjhwZF9tYXNrKChfX3Y4ZGYpKF9fbTUxMmQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl9zZXR6ZXJvX3BkKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza19yY3AyOF9yb3VuZF9wZChTLCBNLCBBLCBSKSBcCiAgKChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3JjcDI4cGRfbWFzaygoX192OGRmKShfX201MTJkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikoX19tNTEyZCkoUyksIChfX21tYXNrOCkoTSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X3JjcDI4X3JvdW5kX3BkKE0sIEEsIFIpIFwKICAoKF9fbTUxMmQpX19idWlsdGluX2lhMzJfcmNwMjhwZF9tYXNrKChfX3Y4ZGYpKF9fbTUxMmQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl9zZXR6ZXJvX3BkKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoTSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX3JjcDI4X3BkKEEpIFwKICBfbW01MTJfcmNwMjhfcm91bmRfcGQoKEEpLCBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pCgojZGVmaW5lIF9tbTUxMl9tYXNrX3JjcDI4X3BkKFMsIE0sIEEpIFwKICBfbW01MTJfbWFza19yY3AyOF9yb3VuZF9wZCgoUyksIChNKSwgKEEpLCBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pCgojZGVmaW5lIF9tbTUxMl9tYXNrel9yY3AyOF9wZChNLCBBKSBcCiAgX21tNTEyX21hc2t6X3JjcDI4X3JvdW5kX3BkKChNKSwgKEEpLCBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pCgojZGVmaW5lIF9tbTUxMl9yY3AyOF9yb3VuZF9wcyhBLCBSKSBcCiAgKChfX201MTIpX19idWlsdGluX2lhMzJfcmNwMjhwc19tYXNrKChfX3YxNnNmKShfX201MTIpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl9zZXR6ZXJvX3BzKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNiktMSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza19yY3AyOF9yb3VuZF9wcyhTLCBNLCBBLCBSKSBcCiAgKChfX201MTIpX19idWlsdGluX2lhMzJfcmNwMjhwc19tYXNrKChfX3YxNnNmKShfX201MTIpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKShfX201MTIpKFMpLCAoX19tbWFzazE2KShNKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9yY3AyOF9yb3VuZF9wcyhNLCBBLCBSKSBcCiAgKChfX201MTIpX19idWlsdGluX2lhMzJfcmNwMjhwc19tYXNrKChfX3YxNnNmKShfX201MTIpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl9zZXR6ZXJvX3BzKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikoTSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX3JjcDI4X3BzKEEpIFwKICBfbW01MTJfcmNwMjhfcm91bmRfcHMoKEEpLCBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pCgojZGVmaW5lIF9tbTUxMl9tYXNrX3JjcDI4X3BzKFMsIE0sIEEpIFwKICBfbW01MTJfbWFza19yY3AyOF9yb3VuZF9wcygoUyksIChNKSwgKEEpLCBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pCgojZGVmaW5lIF9tbTUxMl9tYXNrel9yY3AyOF9wcyhNLCBBKSBcCiAgX21tNTEyX21hc2t6X3JjcDI4X3JvdW5kX3BzKChNKSwgKEEpLCBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pCgojZGVmaW5lIF9tbV9yY3AyOF9yb3VuZF9zcyhBLCBCLCBSKSBcCiAgKChfX20xMjgpX19idWlsdGluX2lhMzJfcmNwMjhzc19yb3VuZF9tYXNrKChfX3Y0c2YpKF9fbTEyOCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikoX19tMTI4KShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9tbV9zZXR6ZXJvX3BzKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbV9tYXNrX3JjcDI4X3JvdW5kX3NzKFMsIE0sIEEsIEIsIFIpIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl9yY3AyOHNzX3JvdW5kX21hc2soKF9fdjRzZikoX19tMTI4KShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoUyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShNKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW1fbWFza3pfcmNwMjhfcm91bmRfc3MoTSwgQSwgQiwgUikgXAogICgoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3JjcDI4c3Nfcm91bmRfbWFzaygoX192NHNmKShfX20xMjgpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfbW1fc2V0emVyb19wcygpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoTSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX3JjcDI4X3NzKEEsIEIpIFwKICBfbW1fcmNwMjhfcm91bmRfc3MoKEEpLCAoQiksIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTikKCiNkZWZpbmUgX21tX21hc2tfcmNwMjhfc3MoUywgTSwgQSwgQikgXAogIF9tbV9tYXNrX3JjcDI4X3JvdW5kX3NzKChTKSwgKE0pLCAoQSksIChCKSwgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKQoKI2RlZmluZSBfbW1fbWFza3pfcmNwMjhfc3MoTSwgQSwgQikgXAogIF9tbV9tYXNrel9yY3AyOF9yb3VuZF9zcygoTSksIChBKSwgKEIpLCBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pCgojZGVmaW5lIF9tbV9yY3AyOF9yb3VuZF9zZChBLCBCLCBSKSBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3JjcDI4c2Rfcm91bmRfbWFzaygoX192MmRmKShfX20xMjhkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikoX19tMTI4ZCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX3NldHplcm9fcGQoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbV9tYXNrX3JjcDI4X3JvdW5kX3NkKFMsIE0sIEEsIEIsIFIpIFwKICAoKF9fbTEyOGQpX19idWlsdGluX2lhMzJfcmNwMjhzZF9yb3VuZF9tYXNrKChfX3YyZGYpKF9fbTEyOGQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikoX19tMTI4ZCkoUyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoTSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX21hc2t6X3JjcDI4X3JvdW5kX3NkKE0sIEEsIEIsIFIpIFwKICAoKF9fbTEyOGQpX19idWlsdGluX2lhMzJfcmNwMjhzZF9yb3VuZF9tYXNrKChfX3YyZGYpKF9fbTEyOGQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfbW1fc2V0emVyb19wZCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKE0pLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbV9yY3AyOF9zZChBLCBCKSBcCiAgX21tX3JjcDI4X3JvdW5kX3NkKChBKSwgKEIpLCBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pCgojZGVmaW5lIF9tbV9tYXNrX3JjcDI4X3NkKFMsIE0sIEEsIEIpIFwKICBfbW1fbWFza19yY3AyOF9yb3VuZF9zZCgoUyksIChNKSwgKEEpLCAoQiksIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTikKCiNkZWZpbmUgX21tX21hc2t6X3JjcDI4X3NkKE0sIEEsIEIpIFwKICBfbW1fbWFza3pfcmNwMjhfcm91bmRfc2QoKE0pLCAoQSksIChCKSwgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKQoKI2VuZGlmIC8qIF9fQVZYNTEyRVJJTlRSSU5fSCAqLwoALyo9PT0tLS0tIGF2eDUxMmZpbnRyaW4uaCAtIEFWWDUxMkYgaW50cmluc2ljcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwojaWZuZGVmIF9fSU1NSU5UUklOX0gKI2Vycm9yICJOZXZlciB1c2UgPGF2eDUxMmZpbnRyaW4uaD4gZGlyZWN0bHk7IGluY2x1ZGUgPGltbWludHJpbi5oPiBpbnN0ZWFkLiIKI2VuZGlmCgojaWZuZGVmIF9fQVZYNTEyRklOVFJJTl9ICiNkZWZpbmUgX19BVlg1MTJGSU5UUklOX0gKCnR5cGVkZWYgY2hhciBfX3Y2NHFpIF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXyg2NCkpKTsKdHlwZWRlZiBzaG9ydCBfX3YzMmhpIF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXyg2NCkpKTsKdHlwZWRlZiBkb3VibGUgX192OGRmIF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXyg2NCkpKTsKdHlwZWRlZiBmbG9hdCBfX3YxNnNmIF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXyg2NCkpKTsKdHlwZWRlZiBsb25nIGxvbmcgX192OGRpIF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXyg2NCkpKTsKdHlwZWRlZiBpbnQgX192MTZzaSBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oNjQpKSk7CgovKiBVbnNpZ25lZCB0eXBlcyAqLwp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX192NjRxdSBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oNjQpKSk7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX192MzJodSBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oNjQpKSk7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIF9fdjhkdSBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oNjQpKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdjE2c3UgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDY0KSkpOwoKdHlwZWRlZiBmbG9hdCBfX201MTIgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDY0KSwgX19hbGlnbmVkX18oNjQpKSk7CnR5cGVkZWYgZG91YmxlIF9fbTUxMmQgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDY0KSwgX19hbGlnbmVkX18oNjQpKSk7CnR5cGVkZWYgbG9uZyBsb25nIF9fbTUxMmkgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDY0KSwgX19hbGlnbmVkX18oNjQpKSk7Cgp0eXBlZGVmIGZsb2F0IF9fbTUxMl91IF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXyg2NCksIF9fYWxpZ25lZF9fKDEpKSk7CnR5cGVkZWYgZG91YmxlIF9fbTUxMmRfdSBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oNjQpLCBfX2FsaWduZWRfXygxKSkpOwp0eXBlZGVmIGxvbmcgbG9uZyBfX201MTJpX3UgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDY0KSwgX19hbGlnbmVkX18oMSkpKTsKCnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX21tYXNrODsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX21tYXNrMTY7CgovKiBSb3VuZGluZyBtb2RlIG1hY3Jvcy4gICovCiNkZWZpbmUgX01NX0ZST1VORF9UT19ORUFSRVNUX0lOVCAgIDB4MDAKI2RlZmluZSBfTU1fRlJPVU5EX1RPX05FR19JTkYgICAgICAgMHgwMQojZGVmaW5lIF9NTV9GUk9VTkRfVE9fUE9TX0lORiAgICAgICAweDAyCiNkZWZpbmUgX01NX0ZST1VORF9UT19aRVJPICAgICAgICAgIDB4MDMKI2RlZmluZSBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04gICAgMHgwNAoKLyogQ29uc3RhbnRzIGZvciBpbnRlZ2VyIGNvbXBhcmlzb24gcHJlZGljYXRlcyAqLwp0eXBlZGVmIGVudW0gewogICAgX01NX0NNUElOVF9FUSwgICAgICAvKiBFcXVhbCAqLwogICAgX01NX0NNUElOVF9MVCwgICAgICAvKiBMZXNzIHRoYW4gKi8KICAgIF9NTV9DTVBJTlRfTEUsICAgICAgLyogTGVzcyB0aGFuIG9yIEVxdWFsICovCiAgICBfTU1fQ01QSU5UX1VOVVNFRCwKICAgIF9NTV9DTVBJTlRfTkUsICAgICAgLyogTm90IEVxdWFsICovCiAgICBfTU1fQ01QSU5UX05MVCwgICAgIC8qIE5vdCBMZXNzIHRoYW4gKi8KI2RlZmluZSBfTU1fQ01QSU5UX0dFICAgX01NX0NNUElOVF9OTFQgIC8qIEdyZWF0ZXIgdGhhbiBvciBFcXVhbCAqLwogICAgX01NX0NNUElOVF9OTEUgICAgICAvKiBOb3QgTGVzcyB0aGFuIG9yIEVxdWFsICovCiNkZWZpbmUgX01NX0NNUElOVF9HVCAgIF9NTV9DTVBJTlRfTkxFICAvKiBHcmVhdGVyIHRoYW4gKi8KfSBfTU1fQ01QSU5UX0VOVU07Cgp0eXBlZGVmIGVudW0KewogIF9NTV9QRVJNX0FBQUEgPSAweDAwLCBfTU1fUEVSTV9BQUFCID0gMHgwMSwgX01NX1BFUk1fQUFBQyA9IDB4MDIsCiAgX01NX1BFUk1fQUFBRCA9IDB4MDMsIF9NTV9QRVJNX0FBQkEgPSAweDA0LCBfTU1fUEVSTV9BQUJCID0gMHgwNSwKICBfTU1fUEVSTV9BQUJDID0gMHgwNiwgX01NX1BFUk1fQUFCRCA9IDB4MDcsIF9NTV9QRVJNX0FBQ0EgPSAweDA4LAogIF9NTV9QRVJNX0FBQ0IgPSAweDA5LCBfTU1fUEVSTV9BQUNDID0gMHgwQSwgX01NX1BFUk1fQUFDRCA9IDB4MEIsCiAgX01NX1BFUk1fQUFEQSA9IDB4MEMsIF9NTV9QRVJNX0FBREIgPSAweDBELCBfTU1fUEVSTV9BQURDID0gMHgwRSwKICBfTU1fUEVSTV9BQUREID0gMHgwRiwgX01NX1BFUk1fQUJBQSA9IDB4MTAsIF9NTV9QRVJNX0FCQUIgPSAweDExLAogIF9NTV9QRVJNX0FCQUMgPSAweDEyLCBfTU1fUEVSTV9BQkFEID0gMHgxMywgX01NX1BFUk1fQUJCQSA9IDB4MTQsCiAgX01NX1BFUk1fQUJCQiA9IDB4MTUsIF9NTV9QRVJNX0FCQkMgPSAweDE2LCBfTU1fUEVSTV9BQkJEID0gMHgxNywKICBfTU1fUEVSTV9BQkNBID0gMHgxOCwgX01NX1BFUk1fQUJDQiA9IDB4MTksIF9NTV9QRVJNX0FCQ0MgPSAweDFBLAogIF9NTV9QRVJNX0FCQ0QgPSAweDFCLCBfTU1fUEVSTV9BQkRBID0gMHgxQywgX01NX1BFUk1fQUJEQiA9IDB4MUQsCiAgX01NX1BFUk1fQUJEQyA9IDB4MUUsIF9NTV9QRVJNX0FCREQgPSAweDFGLCBfTU1fUEVSTV9BQ0FBID0gMHgyMCwKICBfTU1fUEVSTV9BQ0FCID0gMHgyMSwgX01NX1BFUk1fQUNBQyA9IDB4MjIsIF9NTV9QRVJNX0FDQUQgPSAweDIzLAogIF9NTV9QRVJNX0FDQkEgPSAweDI0LCBfTU1fUEVSTV9BQ0JCID0gMHgyNSwgX01NX1BFUk1fQUNCQyA9IDB4MjYsCiAgX01NX1BFUk1fQUNCRCA9IDB4MjcsIF9NTV9QRVJNX0FDQ0EgPSAweDI4LCBfTU1fUEVSTV9BQ0NCID0gMHgyOSwKICBfTU1fUEVSTV9BQ0NDID0gMHgyQSwgX01NX1BFUk1fQUNDRCA9IDB4MkIsIF9NTV9QRVJNX0FDREEgPSAweDJDLAogIF9NTV9QRVJNX0FDREIgPSAweDJELCBfTU1fUEVSTV9BQ0RDID0gMHgyRSwgX01NX1BFUk1fQUNERCA9IDB4MkYsCiAgX01NX1BFUk1fQURBQSA9IDB4MzAsIF9NTV9QRVJNX0FEQUIgPSAweDMxLCBfTU1fUEVSTV9BREFDID0gMHgzMiwKICBfTU1fUEVSTV9BREFEID0gMHgzMywgX01NX1BFUk1fQURCQSA9IDB4MzQsIF9NTV9QRVJNX0FEQkIgPSAweDM1LAogIF9NTV9QRVJNX0FEQkMgPSAweDM2LCBfTU1fUEVSTV9BREJEID0gMHgzNywgX01NX1BFUk1fQURDQSA9IDB4MzgsCiAgX01NX1BFUk1fQURDQiA9IDB4MzksIF9NTV9QRVJNX0FEQ0MgPSAweDNBLCBfTU1fUEVSTV9BRENEID0gMHgzQiwKICBfTU1fUEVSTV9BRERBID0gMHgzQywgX01NX1BFUk1fQUREQiA9IDB4M0QsIF9NTV9QRVJNX0FEREMgPSAweDNFLAogIF9NTV9QRVJNX0FEREQgPSAweDNGLCBfTU1fUEVSTV9CQUFBID0gMHg0MCwgX01NX1BFUk1fQkFBQiA9IDB4NDEsCiAgX01NX1BFUk1fQkFBQyA9IDB4NDIsIF9NTV9QRVJNX0JBQUQgPSAweDQzLCBfTU1fUEVSTV9CQUJBID0gMHg0NCwKICBfTU1fUEVSTV9CQUJCID0gMHg0NSwgX01NX1BFUk1fQkFCQyA9IDB4NDYsIF9NTV9QRVJNX0JBQkQgPSAweDQ3LAogIF9NTV9QRVJNX0JBQ0EgPSAweDQ4LCBfTU1fUEVSTV9CQUNCID0gMHg0OSwgX01NX1BFUk1fQkFDQyA9IDB4NEEsCiAgX01NX1BFUk1fQkFDRCA9IDB4NEIsIF9NTV9QRVJNX0JBREEgPSAweDRDLCBfTU1fUEVSTV9CQURCID0gMHg0RCwKICBfTU1fUEVSTV9CQURDID0gMHg0RSwgX01NX1BFUk1fQkFERCA9IDB4NEYsIF9NTV9QRVJNX0JCQUEgPSAweDUwLAogIF9NTV9QRVJNX0JCQUIgPSAweDUxLCBfTU1fUEVSTV9CQkFDID0gMHg1MiwgX01NX1BFUk1fQkJBRCA9IDB4NTMsCiAgX01NX1BFUk1fQkJCQSA9IDB4NTQsIF9NTV9QRVJNX0JCQkIgPSAweDU1LCBfTU1fUEVSTV9CQkJDID0gMHg1NiwKICBfTU1fUEVSTV9CQkJEID0gMHg1NywgX01NX1BFUk1fQkJDQSA9IDB4NTgsIF9NTV9QRVJNX0JCQ0IgPSAweDU5LAogIF9NTV9QRVJNX0JCQ0MgPSAweDVBLCBfTU1fUEVSTV9CQkNEID0gMHg1QiwgX01NX1BFUk1fQkJEQSA9IDB4NUMsCiAgX01NX1BFUk1fQkJEQiA9IDB4NUQsIF9NTV9QRVJNX0JCREMgPSAweDVFLCBfTU1fUEVSTV9CQkREID0gMHg1RiwKICBfTU1fUEVSTV9CQ0FBID0gMHg2MCwgX01NX1BFUk1fQkNBQiA9IDB4NjEsIF9NTV9QRVJNX0JDQUMgPSAweDYyLAogIF9NTV9QRVJNX0JDQUQgPSAweDYzLCBfTU1fUEVSTV9CQ0JBID0gMHg2NCwgX01NX1BFUk1fQkNCQiA9IDB4NjUsCiAgX01NX1BFUk1fQkNCQyA9IDB4NjYsIF9NTV9QRVJNX0JDQkQgPSAweDY3LCBfTU1fUEVSTV9CQ0NBID0gMHg2OCwKICBfTU1fUEVSTV9CQ0NCID0gMHg2OSwgX01NX1BFUk1fQkNDQyA9IDB4NkEsIF9NTV9QRVJNX0JDQ0QgPSAweDZCLAogIF9NTV9QRVJNX0JDREEgPSAweDZDLCBfTU1fUEVSTV9CQ0RCID0gMHg2RCwgX01NX1BFUk1fQkNEQyA9IDB4NkUsCiAgX01NX1BFUk1fQkNERCA9IDB4NkYsIF9NTV9QRVJNX0JEQUEgPSAweDcwLCBfTU1fUEVSTV9CREFCID0gMHg3MSwKICBfTU1fUEVSTV9CREFDID0gMHg3MiwgX01NX1BFUk1fQkRBRCA9IDB4NzMsIF9NTV9QRVJNX0JEQkEgPSAweDc0LAogIF9NTV9QRVJNX0JEQkIgPSAweDc1LCBfTU1fUEVSTV9CREJDID0gMHg3NiwgX01NX1BFUk1fQkRCRCA9IDB4NzcsCiAgX01NX1BFUk1fQkRDQSA9IDB4NzgsIF9NTV9QRVJNX0JEQ0IgPSAweDc5LCBfTU1fUEVSTV9CRENDID0gMHg3QSwKICBfTU1fUEVSTV9CRENEID0gMHg3QiwgX01NX1BFUk1fQkREQSA9IDB4N0MsIF9NTV9QRVJNX0JEREIgPSAweDdELAogIF9NTV9QRVJNX0JEREMgPSAweDdFLCBfTU1fUEVSTV9CREREID0gMHg3RiwgX01NX1BFUk1fQ0FBQSA9IDB4ODAsCiAgX01NX1BFUk1fQ0FBQiA9IDB4ODEsIF9NTV9QRVJNX0NBQUMgPSAweDgyLCBfTU1fUEVSTV9DQUFEID0gMHg4MywKICBfTU1fUEVSTV9DQUJBID0gMHg4NCwgX01NX1BFUk1fQ0FCQiA9IDB4ODUsIF9NTV9QRVJNX0NBQkMgPSAweDg2LAogIF9NTV9QRVJNX0NBQkQgPSAweDg3LCBfTU1fUEVSTV9DQUNBID0gMHg4OCwgX01NX1BFUk1fQ0FDQiA9IDB4ODksCiAgX01NX1BFUk1fQ0FDQyA9IDB4OEEsIF9NTV9QRVJNX0NBQ0QgPSAweDhCLCBfTU1fUEVSTV9DQURBID0gMHg4QywKICBfTU1fUEVSTV9DQURCID0gMHg4RCwgX01NX1BFUk1fQ0FEQyA9IDB4OEUsIF9NTV9QRVJNX0NBREQgPSAweDhGLAogIF9NTV9QRVJNX0NCQUEgPSAweDkwLCBfTU1fUEVSTV9DQkFCID0gMHg5MSwgX01NX1BFUk1fQ0JBQyA9IDB4OTIsCiAgX01NX1BFUk1fQ0JBRCA9IDB4OTMsIF9NTV9QRVJNX0NCQkEgPSAweDk0LCBfTU1fUEVSTV9DQkJCID0gMHg5NSwKICBfTU1fUEVSTV9DQkJDID0gMHg5NiwgX01NX1BFUk1fQ0JCRCA9IDB4OTcsIF9NTV9QRVJNX0NCQ0EgPSAweDk4LAogIF9NTV9QRVJNX0NCQ0IgPSAweDk5LCBfTU1fUEVSTV9DQkNDID0gMHg5QSwgX01NX1BFUk1fQ0JDRCA9IDB4OUIsCiAgX01NX1BFUk1fQ0JEQSA9IDB4OUMsIF9NTV9QRVJNX0NCREIgPSAweDlELCBfTU1fUEVSTV9DQkRDID0gMHg5RSwKICBfTU1fUEVSTV9DQkREID0gMHg5RiwgX01NX1BFUk1fQ0NBQSA9IDB4QTAsIF9NTV9QRVJNX0NDQUIgPSAweEExLAogIF9NTV9QRVJNX0NDQUMgPSAweEEyLCBfTU1fUEVSTV9DQ0FEID0gMHhBMywgX01NX1BFUk1fQ0NCQSA9IDB4QTQsCiAgX01NX1BFUk1fQ0NCQiA9IDB4QTUsIF9NTV9QRVJNX0NDQkMgPSAweEE2LCBfTU1fUEVSTV9DQ0JEID0gMHhBNywKICBfTU1fUEVSTV9DQ0NBID0gMHhBOCwgX01NX1BFUk1fQ0NDQiA9IDB4QTksIF9NTV9QRVJNX0NDQ0MgPSAweEFBLAogIF9NTV9QRVJNX0NDQ0QgPSAweEFCLCBfTU1fUEVSTV9DQ0RBID0gMHhBQywgX01NX1BFUk1fQ0NEQiA9IDB4QUQsCiAgX01NX1BFUk1fQ0NEQyA9IDB4QUUsIF9NTV9QRVJNX0NDREQgPSAweEFGLCBfTU1fUEVSTV9DREFBID0gMHhCMCwKICBfTU1fUEVSTV9DREFCID0gMHhCMSwgX01NX1BFUk1fQ0RBQyA9IDB4QjIsIF9NTV9QRVJNX0NEQUQgPSAweEIzLAogIF9NTV9QRVJNX0NEQkEgPSAweEI0LCBfTU1fUEVSTV9DREJCID0gMHhCNSwgX01NX1BFUk1fQ0RCQyA9IDB4QjYsCiAgX01NX1BFUk1fQ0RCRCA9IDB4QjcsIF9NTV9QRVJNX0NEQ0EgPSAweEI4LCBfTU1fUEVSTV9DRENCID0gMHhCOSwKICBfTU1fUEVSTV9DRENDID0gMHhCQSwgX01NX1BFUk1fQ0RDRCA9IDB4QkIsIF9NTV9QRVJNX0NEREEgPSAweEJDLAogIF9NTV9QRVJNX0NEREIgPSAweEJELCBfTU1fUEVSTV9DRERDID0gMHhCRSwgX01NX1BFUk1fQ0RERCA9IDB4QkYsCiAgX01NX1BFUk1fREFBQSA9IDB4QzAsIF9NTV9QRVJNX0RBQUIgPSAweEMxLCBfTU1fUEVSTV9EQUFDID0gMHhDMiwKICBfTU1fUEVSTV9EQUFEID0gMHhDMywgX01NX1BFUk1fREFCQSA9IDB4QzQsIF9NTV9QRVJNX0RBQkIgPSAweEM1LAogIF9NTV9QRVJNX0RBQkMgPSAweEM2LCBfTU1fUEVSTV9EQUJEID0gMHhDNywgX01NX1BFUk1fREFDQSA9IDB4QzgsCiAgX01NX1BFUk1fREFDQiA9IDB4QzksIF9NTV9QRVJNX0RBQ0MgPSAweENBLCBfTU1fUEVSTV9EQUNEID0gMHhDQiwKICBfTU1fUEVSTV9EQURBID0gMHhDQywgX01NX1BFUk1fREFEQiA9IDB4Q0QsIF9NTV9QRVJNX0RBREMgPSAweENFLAogIF9NTV9QRVJNX0RBREQgPSAweENGLCBfTU1fUEVSTV9EQkFBID0gMHhEMCwgX01NX1BFUk1fREJBQiA9IDB4RDEsCiAgX01NX1BFUk1fREJBQyA9IDB4RDIsIF9NTV9QRVJNX0RCQUQgPSAweEQzLCBfTU1fUEVSTV9EQkJBID0gMHhENCwKICBfTU1fUEVSTV9EQkJCID0gMHhENSwgX01NX1BFUk1fREJCQyA9IDB4RDYsIF9NTV9QRVJNX0RCQkQgPSAweEQ3LAogIF9NTV9QRVJNX0RCQ0EgPSAweEQ4LCBfTU1fUEVSTV9EQkNCID0gMHhEOSwgX01NX1BFUk1fREJDQyA9IDB4REEsCiAgX01NX1BFUk1fREJDRCA9IDB4REIsIF9NTV9QRVJNX0RCREEgPSAweERDLCBfTU1fUEVSTV9EQkRCID0gMHhERCwKICBfTU1fUEVSTV9EQkRDID0gMHhERSwgX01NX1BFUk1fREJERCA9IDB4REYsIF9NTV9QRVJNX0RDQUEgPSAweEUwLAogIF9NTV9QRVJNX0RDQUIgPSAweEUxLCBfTU1fUEVSTV9EQ0FDID0gMHhFMiwgX01NX1BFUk1fRENBRCA9IDB4RTMsCiAgX01NX1BFUk1fRENCQSA9IDB4RTQsIF9NTV9QRVJNX0RDQkIgPSAweEU1LCBfTU1fUEVSTV9EQ0JDID0gMHhFNiwKICBfTU1fUEVSTV9EQ0JEID0gMHhFNywgX01NX1BFUk1fRENDQSA9IDB4RTgsIF9NTV9QRVJNX0RDQ0IgPSAweEU5LAogIF9NTV9QRVJNX0RDQ0MgPSAweEVBLCBfTU1fUEVSTV9EQ0NEID0gMHhFQiwgX01NX1BFUk1fRENEQSA9IDB4RUMsCiAgX01NX1BFUk1fRENEQiA9IDB4RUQsIF9NTV9QRVJNX0RDREMgPSAweEVFLCBfTU1fUEVSTV9EQ0REID0gMHhFRiwKICBfTU1fUEVSTV9EREFBID0gMHhGMCwgX01NX1BFUk1fRERBQiA9IDB4RjEsIF9NTV9QRVJNX0REQUMgPSAweEYyLAogIF9NTV9QRVJNX0REQUQgPSAweEYzLCBfTU1fUEVSTV9EREJBID0gMHhGNCwgX01NX1BFUk1fRERCQiA9IDB4RjUsCiAgX01NX1BFUk1fRERCQyA9IDB4RjYsIF9NTV9QRVJNX0REQkQgPSAweEY3LCBfTU1fUEVSTV9ERENBID0gMHhGOCwKICBfTU1fUEVSTV9ERENCID0gMHhGOSwgX01NX1BFUk1fRERDQyA9IDB4RkEsIF9NTV9QRVJNX0REQ0QgPSAweEZCLAogIF9NTV9QRVJNX0REREEgPSAweEZDLCBfTU1fUEVSTV9ERERCID0gMHhGRCwgX01NX1BFUk1fREREQyA9IDB4RkUsCiAgX01NX1BFUk1fRERERCA9IDB4RkYKfSBfTU1fUEVSTV9FTlVNOwoKdHlwZWRlZiBlbnVtCnsKICBfTU1fTUFOVF9OT1JNXzFfMiwgICAgLyogaW50ZXJ2YWwgWzEsIDIpICAgICAgKi8KICBfTU1fTUFOVF9OT1JNX3A1XzIsICAgLyogaW50ZXJ2YWwgWzAuNSwgMikgICAgKi8KICBfTU1fTUFOVF9OT1JNX3A1XzEsICAgLyogaW50ZXJ2YWwgWzAuNSwgMSkgICAgKi8KICBfTU1fTUFOVF9OT1JNX3A3NV8xcDUgICAvKiBpbnRlcnZhbCBbMC43NSwgMS41KSAqLwp9IF9NTV9NQU5USVNTQV9OT1JNX0VOVU07Cgp0eXBlZGVmIGVudW0KewogIF9NTV9NQU5UX1NJR05fc3JjLCAgICAvKiBzaWduID0gc2lnbihTUkMpICAgICAqLwogIF9NTV9NQU5UX1NJR05femVybywgICAvKiBzaWduID0gMCAgICAgICAgICAgICAqLwogIF9NTV9NQU5UX1NJR05fbmFuICAgLyogREVTVCA9IE5hTiBpZiBzaWduKFNSQykgPSAxICovCn0gX01NX01BTlRJU1NBX1NJR05fRU5VTTsKCi8qIERlZmluZSB0aGUgZGVmYXVsdCBhdHRyaWJ1dGVzIGZvciB0aGUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZS4gKi8KI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJhdng1MTJmIiksIF9fbWluX3ZlY3Rvcl93aWR0aF9fKDUxMikpKQojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oImF2eDUxMmYiKSwgX19taW5fdmVjdG9yX3dpZHRoX18oMTI4KSkpCiNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygiYXZ4NTEyZiIpKSkKCi8qIENyZWF0ZSB2ZWN0b3JzIHdpdGggcmVwZWF0ZWQgZWxlbWVudHMgKi8KCnN0YXRpYyAgX19pbmxpbmUgX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3NldHplcm9fc2k1MTIodm9pZCkKewogIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX201MTJpKShfX3Y4ZGkpeyAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwIH07Cn0KCiNkZWZpbmUgX21tNTEyX3NldHplcm9fZXBpMzIgX21tNTEyX3NldHplcm9fc2k1MTIKCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl91bmRlZmluZWRfcGQodm9pZCkKewogIHJldHVybiAoX19tNTEyZClfX2J1aWx0aW5faWEzMl91bmRlZjUxMigpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTIgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl91bmRlZmluZWQodm9pZCkKewogIHJldHVybiAoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3VuZGVmNTEyKCk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3VuZGVmaW5lZF9wcyh2b2lkKQp7CiAgcmV0dXJuIChfX201MTIpX19idWlsdGluX2lhMzJfdW5kZWY1MTIoKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3VuZGVmaW5lZF9lcGkzMih2b2lkKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3VuZGVmNTEyKCk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9icm9hZGNhc3RkX2VwaTMyIChfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192NHNpKSBfX0EsIChfX3Y0c2kpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2Jyb2FkY2FzdGRfZXBpMzIgKF9fbTUxMmkgX19PLCBfX21tYXNrMTYgX19NLCBfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzUxMihfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKSBfbW01MTJfYnJvYWRjYXN0ZF9lcGkzMihfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSkgX19PKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2Jyb2FkY2FzdGRfZXBpMzIgKF9fbW1hc2sxNiBfX00sIF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfNTEyKF9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpIF9tbTUxMl9icm9hZGNhc3RkX2VwaTMyKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKSBfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2Jyb2FkY2FzdHFfZXBpNjQgKF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3YyZGkpIF9fQSwgKF9fdjJkaSkgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfYnJvYWRjYXN0cV9lcGk2NCAoX19tNTEyaSBfX08sIF9fbW1hc2s4IF9fTSwgX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV81MTIoX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKSBfbW01MTJfYnJvYWRjYXN0cV9lcGk2NChfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKSBfX08pOwoKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2Jyb2FkY2FzdHFfZXBpNjQgKF9fbW1hc2s4IF9fTSwgX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV81MTIoX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKSBfbW01MTJfYnJvYWRjYXN0cV9lcGk2NChfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKSBfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKCnN0YXRpYyBfX2lubGluZSBfX201MTIgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9zZXR6ZXJvX3BzKHZvaWQpCnsKICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tNTEyKXsgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wIH07Cn0KCiNkZWZpbmUgX21tNTEyX3NldHplcm8gX21tNTEyX3NldHplcm9fcHMKCnN0YXRpYyAgX19pbmxpbmUgX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3NldHplcm9fcGQodm9pZCkKewogIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX201MTJkKXsgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAgfTsKfQoKc3RhdGljIF9faW5saW5lIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3NldDFfcHMoZmxvYXQgX193KQp7CiAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTUxMil7IF9fdywgX193LCBfX3csIF9fdywgX193LCBfX3csIF9fdywgX193LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3csIF9fdywgX193LCBfX3csIF9fdywgX193LCBfX3csIF9fdyAgfTsKfQoKc3RhdGljIF9faW5saW5lIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9zZXQxX3BkKGRvdWJsZSBfX3cpCnsKICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tNTEyZCl7IF9fdywgX193LCBfX3csIF9fdywgX193LCBfX3csIF9fdywgX193IH07Cn0KCnN0YXRpYyBfX2lubGluZSBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfc2V0MV9lcGk4KGNoYXIgX193KQp7CiAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTUxMmkpKF9fdjY0cWkpewogICAgX193LCBfX3csIF9fdywgX193LCBfX3csIF9fdywgX193LCBfX3csCiAgICBfX3csIF9fdywgX193LCBfX3csIF9fdywgX193LCBfX3csIF9fdywKICAgIF9fdywgX193LCBfX3csIF9fdywgX193LCBfX3csIF9fdywgX193LAogICAgX193LCBfX3csIF9fdywgX193LCBfX3csIF9fdywgX193LCBfX3csCiAgICBfX3csIF9fdywgX193LCBfX3csIF9fdywgX193LCBfX3csIF9fdywKICAgIF9fdywgX193LCBfX3csIF9fdywgX193LCBfX3csIF9fdywgX193LAogICAgX193LCBfX3csIF9fdywgX193LCBfX3csIF9fdywgX193LCBfX3csCiAgICBfX3csIF9fdywgX193LCBfX3csIF9fdywgX193LCBfX3csIF9fdyAgfTsKfQoKc3RhdGljIF9faW5saW5lIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9zZXQxX2VwaTE2KHNob3J0IF9fdykKewogIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX201MTJpKShfX3YzMmhpKXsKICAgIF9fdywgX193LCBfX3csIF9fdywgX193LCBfX3csIF9fdywgX193LAogICAgX193LCBfX3csIF9fdywgX193LCBfX3csIF9fdywgX193LCBfX3csCiAgICBfX3csIF9fdywgX193LCBfX3csIF9fdywgX193LCBfX3csIF9fdywKICAgIF9fdywgX193LCBfX3csIF9fdywgX193LCBfX3csIF9fdywgX193IH07Cn0KCnN0YXRpYyBfX2lubGluZSBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfc2V0MV9lcGkzMihpbnQgX19zKQp7CiAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTUxMmkpKF9fdjE2c2kpewogICAgX19zLCBfX3MsIF9fcywgX19zLCBfX3MsIF9fcywgX19zLCBfX3MsCiAgICBfX3MsIF9fcywgX19zLCBfX3MsIF9fcywgX19zLCBfX3MsIF9fcyB9Owp9CgpzdGF0aWMgX19pbmxpbmUgX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X3NldDFfZXBpMzIoX19tbWFzazE2IF9fTSwgaW50IF9fQSkKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzUxMihfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9zZXQxX2VwaTMyKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmUgX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3NldDFfZXBpNjQobG9uZyBsb25nIF9fZCkKewogIHJldHVybiBfX2V4dGVuc2lvbl9fKF9fbTUxMmkpKF9fdjhkaSl7IF9fZCwgX19kLCBfX2QsIF9fZCwgX19kLCBfX2QsIF9fZCwgX19kIH07Cn0KCnN0YXRpYyBfX2lubGluZSBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfc2V0MV9lcGk2NChfX21tYXNrOCBfX00sIGxvbmcgbG9uZyBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV81MTIoX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9zZXQxX2VwaTY0KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2Jyb2FkY2FzdHNzX3BzKF9fbTEyOCBfX0EpCnsKICByZXR1cm4gKF9fbTUxMilfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192NHNmKSBfX0EsIChfX3Y0c2YpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKTsKfQoKc3RhdGljIF9faW5saW5lIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9zZXQ0X2VwaTMyIChpbnQgX19BLCBpbnQgX19CLCBpbnQgX19DLCBpbnQgX19EKQp7CiAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTUxMmkpKF9fdjE2c2kpCiAgIHsgX19ELCBfX0MsIF9fQiwgX19BLCBfX0QsIF9fQywgX19CLCBfX0EsCiAgICAgX19ELCBfX0MsIF9fQiwgX19BLCBfX0QsIF9fQywgX19CLCBfX0EgfTsKfQoKc3RhdGljIF9faW5saW5lIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9zZXQ0X2VwaTY0IChsb25nIGxvbmcgX19BLCBsb25nIGxvbmcgX19CLCBsb25nIGxvbmcgX19DLAogICAgICAgbG9uZyBsb25nIF9fRCkKewogIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX201MTJpKSAoX192OGRpKQogICB7IF9fRCwgX19DLCBfX0IsIF9fQSwgX19ELCBfX0MsIF9fQiwgX19BIH07Cn0KCnN0YXRpYyBfX2lubGluZSBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfc2V0NF9wZCAoZG91YmxlIF9fQSwgZG91YmxlIF9fQiwgZG91YmxlIF9fQywgZG91YmxlIF9fRCkKewogIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX201MTJkKQogICB7IF9fRCwgX19DLCBfX0IsIF9fQSwgX19ELCBfX0MsIF9fQiwgX19BIH07Cn0KCnN0YXRpYyBfX2lubGluZSBfX201MTIgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9zZXQ0X3BzIChmbG9hdCBfX0EsIGZsb2F0IF9fQiwgZmxvYXQgX19DLCBmbG9hdCBfX0QpCnsKICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tNTEyKQogICB7IF9fRCwgX19DLCBfX0IsIF9fQSwgX19ELCBfX0MsIF9fQiwgX19BLAogICAgIF9fRCwgX19DLCBfX0IsIF9fQSwgX19ELCBfX0MsIF9fQiwgX19BIH07Cn0KCiNkZWZpbmUgX21tNTEyX3NldHI0X2VwaTMyKGUwLGUxLGUyLGUzKSAgICAgICAgICAgICAgIFwKICBfbW01MTJfc2V0NF9lcGkzMigoZTMpLChlMiksKGUxKSwoZTApKQoKI2RlZmluZSBfbW01MTJfc2V0cjRfZXBpNjQoZTAsZTEsZTIsZTMpICAgICAgICAgICAgICAgXAogIF9tbTUxMl9zZXQ0X2VwaTY0KChlMyksKGUyKSwoZTEpLChlMCkpCgojZGVmaW5lIF9tbTUxMl9zZXRyNF9wZChlMCxlMSxlMixlMykgICAgICAgICAgICAgICAgXAogIF9tbTUxMl9zZXQ0X3BkKChlMyksKGUyKSwoZTEpLChlMCkpCgojZGVmaW5lIF9tbTUxMl9zZXRyNF9wcyhlMCxlMSxlMixlMykgICAgICAgICAgICAgICAgXAogIF9tbTUxMl9zZXQ0X3BzKChlMyksKGUyKSwoZTEpLChlMCkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfYnJvYWRjYXN0c2RfcGQoX19tMTI4ZCBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmQpX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjJkZikgX19BLCAoX192MmRmKSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApOwp9CgovKiBDYXN0IGJldHdlZW4gdmVjdG9yIHR5cGVzICovCgpzdGF0aWMgX19pbmxpbmUgX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2Nhc3RwZDI1Nl9wZDUxMihfX20yNTZkIF9fYSkKewogIHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX2EsIF9fYSwgMCwgMSwgMiwgMywgLTEsIC0xLCAtMSwgLTEpOwp9CgpzdGF0aWMgX19pbmxpbmUgX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfY2FzdHBzMjU2X3BzNTEyKF9fbTI1NiBfX2EpCnsKICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19hLCBfX2EsIDAsICAxLCAgMiwgIDMsICA0LCAgNSwgIDYsICA3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEpOwp9CgpzdGF0aWMgX19pbmxpbmUgX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2Nhc3RwZDUxMl9wZDEyOChfX201MTJkIF9fYSkKewogIHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX2EsIF9fYSwgMCwgMSk7Cn0KCnN0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfY2FzdHBkNTEyX3BkMjU2IChfX201MTJkIF9fQSkKewogIHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX0EsIF9fQSwgMCwgMSwgMiwgMyk7Cn0KCnN0YXRpYyBfX2lubGluZSBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9jYXN0cHM1MTJfcHMxMjgoX19tNTEyIF9fYSkKewogIHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX2EsIF9fYSwgMCwgMSwgMiwgMyk7Cn0KCnN0YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9jYXN0cHM1MTJfcHMyNTYgKF9fbTUxMiBfX0EpCnsKICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19BLCBfX0EsIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcpOwp9CgpzdGF0aWMgX19pbmxpbmUgX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfY2FzdHBkX3BzIChfX201MTJkIF9fQSkKewogIHJldHVybiAoX19tNTEyKSAoX19BKTsKfQoKc3RhdGljIF9faW5saW5lIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9jYXN0cGRfc2k1MTIgKF9fbTUxMmQgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKSAoX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2Nhc3RwZDEyOF9wZDUxMiAoX19tMTI4ZCBfX0EpCnsKICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoIF9fQSwgX19BLCAwLCAxLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xKTsKfQoKc3RhdGljIF9faW5saW5lIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9jYXN0cHNfcGQgKF9fbTUxMiBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmQpIChfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmUgX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2Nhc3Rwc19zaTUxMiAoX19tNTEyIF9fQSkKewogIHJldHVybiAoX19tNTEyaSkgKF9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2Nhc3RwczEyOF9wczUxMiAoX19tMTI4IF9fQSkKewogICAgcmV0dXJuICBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvciggX19BLCBfX0EsIDAsIDEsIDIsIDMsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfY2FzdHNpMTI4X3NpNTEyIChfX20xMjhpIF9fQSkKewogICByZXR1cm4gIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKCBfX0EsIF9fQSwgMCwgMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9jYXN0c2kyNTZfc2k1MTIgKF9fbTI1NmkgX19BKQp7CiAgIHJldHVybiAgX19idWlsdGluX3NodWZmbGV2ZWN0b3IoIF9fQSwgX19BLCAwLCAxLCAyLCAzLCAtMSwgLTEsIC0xLCAtMSk7Cn0KCnN0YXRpYyBfX2lubGluZSBfX201MTIgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9jYXN0c2k1MTJfcHMgKF9fbTUxMmkgX19BKQp7CiAgcmV0dXJuIChfX201MTIpIChfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmUgX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2Nhc3RzaTUxMl9wZCAoX19tNTEyaSBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmQpIChfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmUgX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2Nhc3RzaTUxMl9zaTEyOCAoX19tNTEyaSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19BLCBfX0EgLCAwLCAxKTsKfQoKc3RhdGljIF9faW5saW5lIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9jYXN0c2k1MTJfc2kyNTYgKF9fbTUxMmkgX19BKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fQSwgX19BICwgMCwgMSwgMiwgMyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbW1hc2sxNiBfX0RFRkFVTFRfRk5fQVRUUlMKX21tNTEyX2ludDJtYXNrKGludCBfX2EpCnsKICByZXR1cm4gKF9fbW1hc2sxNilfX2E7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tNTEyX21hc2syaW50KF9fbW1hc2sxNiBfX2EpCnsKICByZXR1cm4gKGludClfX2E7Cn0KCi8vLyBDb25zdHJ1Y3RzIGEgNTEyLWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzggeCBkb3VibGVdIGZyb20gYQovLy8gICAgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgMTI4IGJpdHMKLy8vICAgIGNvbnRhaW4gdGhlIHZhbHVlIG9mIHRoZSBzb3VyY2UgdmVjdG9yLiBUaGUgdXBwZXIgMzg0IGJpdHMgYXJlIHNldAovLy8gICAgdG8gemVyby4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgaGFzIG5vIGNvcnJlc3BvbmRpbmcgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uCi8vLyBccmV0dXJucyBBIDUxMi1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs4IHggZG91YmxlXS4gVGhlIGxvd2VyIDEyOCBiaXRzCi8vLyAgICBjb250YWluIHRoZSB2YWx1ZSBvZiB0aGUgcGFyYW1ldGVyLiBUaGUgdXBwZXIgMzg0IGJpdHMgYXJlIHNldCB0byB6ZXJvLgpzdGF0aWMgX19pbmxpbmUgX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3pleHRwZDEyOF9wZDUxMihfX20xMjhkIF9fYSkKewogIHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192MmRmKV9fYSwgKF9fdjJkZilfbW1fc2V0emVyb19wZCgpLCAwLCAxLCAyLCAzLCAyLCAzLCAyLCAzKTsKfQoKLy8vIENvbnN0cnVjdHMgYSA1MTItYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbOCB4IGRvdWJsZV0gZnJvbSBhCi8vLyAgICAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uIFRoZSBsb3dlciAyNTYgYml0cwovLy8gICAgY29udGFpbiB0aGUgdmFsdWUgb2YgdGhlIHNvdXJjZSB2ZWN0b3IuIFRoZSB1cHBlciAyNTYgYml0cyBhcmUgc2V0Ci8vLyAgICB0byB6ZXJvLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBoYXMgbm8gY29ycmVzcG9uZGluZyBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4KLy8vIFxyZXR1cm5zIEEgNTEyLWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzggeCBkb3VibGVdLiBUaGUgbG93ZXIgMjU2IGJpdHMKLy8vICAgIGNvbnRhaW4gdGhlIHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXIuIFRoZSB1cHBlciAyNTYgYml0cyBhcmUgc2V0IHRvIHplcm8uCnN0YXRpYyBfX2lubGluZSBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfemV4dHBkMjU2X3BkNTEyKF9fbTI1NmQgX19hKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y0ZGYpX19hLCAoX192NGRmKV9tbTI1Nl9zZXR6ZXJvX3BkKCksIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcpOwp9CgovLy8gQ29uc3RydWN0cyBhIDUxMi1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsxNiB4IGZsb2F0XSBmcm9tIGEKLy8vICAgIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIgMTI4IGJpdHMgY29udGFpbgovLy8gICAgdGhlIHZhbHVlIG9mIHRoZSBzb3VyY2UgdmVjdG9yLiBUaGUgdXBwZXIgMzg0IGJpdHMgYXJlIHNldCB0byB6ZXJvLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBoYXMgbm8gY29ycmVzcG9uZGluZyBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLgovLy8gXHJldHVybnMgQSA1MTItYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbMTYgeCBmbG9hdF0uIFRoZSBsb3dlciAxMjggYml0cwovLy8gICAgY29udGFpbiB0aGUgdmFsdWUgb2YgdGhlIHBhcmFtZXRlci4gVGhlIHVwcGVyIDM4NCBiaXRzIGFyZSBzZXQgdG8gemVyby4Kc3RhdGljIF9faW5saW5lIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3pleHRwczEyOF9wczUxMihfX20xMjggX19hKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y0c2YpX19hLCAoX192NHNmKV9tbV9zZXR6ZXJvX3BzKCksIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDQsIDUsIDYsIDcsIDQsIDUsIDYsIDcpOwp9CgovLy8gQ29uc3RydWN0cyBhIDUxMi1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsxNiB4IGZsb2F0XSBmcm9tIGEKLy8vICAgIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLiBUaGUgbG93ZXIgMjU2IGJpdHMgY29udGFpbgovLy8gICAgdGhlIHZhbHVlIG9mIHRoZSBzb3VyY2UgdmVjdG9yLiBUaGUgdXBwZXIgMjU2IGJpdHMgYXJlIHNldCB0byB6ZXJvLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBoYXMgbm8gY29ycmVzcG9uZGluZyBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLgovLy8gXHJldHVybnMgQSA1MTItYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbMTYgeCBmbG9hdF0uIFRoZSBsb3dlciAyNTYgYml0cwovLy8gICAgY29udGFpbiB0aGUgdmFsdWUgb2YgdGhlIHBhcmFtZXRlci4gVGhlIHVwcGVyIDI1NiBiaXRzIGFyZSBzZXQgdG8gemVyby4Kc3RhdGljIF9faW5saW5lIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3pleHRwczI1Nl9wczUxMihfX20yNTYgX19hKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y4c2YpX19hLCAoX192OHNmKV9tbTI1Nl9zZXR6ZXJvX3BzKCksIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUpOwp9CgovLy8gQ29uc3RydWN0cyBhIDUxMi1iaXQgaW50ZWdlciB2ZWN0b3IgZnJvbSBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuCi8vLyAgICBUaGUgbG93ZXIgMTI4IGJpdHMgY29udGFpbiB0aGUgdmFsdWUgb2YgdGhlIHNvdXJjZSB2ZWN0b3IuIFRoZSB1cHBlcgovLy8gICAgMzg0IGJpdHMgYXJlIHNldCB0byB6ZXJvLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBoYXMgbm8gY29ycmVzcG9uZGluZyBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuCi8vLyBccmV0dXJucyBBIDUxMi1iaXQgaW50ZWdlciB2ZWN0b3IuIFRoZSBsb3dlciAxMjggYml0cyBjb250YWluIHRoZSB2YWx1ZSBvZgovLy8gICAgdGhlIHBhcmFtZXRlci4gVGhlIHVwcGVyIDM4NCBiaXRzIGFyZSBzZXQgdG8gemVyby4Kc3RhdGljIF9faW5saW5lIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl96ZXh0c2kxMjhfc2k1MTIoX19tMTI4aSBfX2EpCnsKICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjJkaSlfX2EsIChfX3YyZGkpX21tX3NldHplcm9fc2kxMjgoKSwgMCwgMSwgMiwgMywgMiwgMywgMiwgMyk7Cn0KCi8vLyBDb25zdHJ1Y3RzIGEgNTEyLWJpdCBpbnRlZ2VyIHZlY3RvciBmcm9tIGEgMjU2LWJpdCBpbnRlZ2VyIHZlY3Rvci4KLy8vICAgIFRoZSBsb3dlciAyNTYgYml0cyBjb250YWluIHRoZSB2YWx1ZSBvZiB0aGUgc291cmNlIHZlY3Rvci4gVGhlIHVwcGVyCi8vLyAgICAyNTYgYml0cyBhcmUgc2V0IHRvIHplcm8uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGhhcyBubyBjb3JyZXNwb25kaW5nIGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMjU2LWJpdCBpbnRlZ2VyIHZlY3Rvci4KLy8vIFxyZXR1cm5zIEEgNTEyLWJpdCBpbnRlZ2VyIHZlY3Rvci4gVGhlIGxvd2VyIDI1NiBiaXRzIGNvbnRhaW4gdGhlIHZhbHVlIG9mCi8vLyAgICB0aGUgcGFyYW1ldGVyLiBUaGUgdXBwZXIgMjU2IGJpdHMgYXJlIHNldCB0byB6ZXJvLgpzdGF0aWMgX19pbmxpbmUgX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3pleHRzaTI1Nl9zaTUxMihfX20yNTZpIF9fYSkKewogIHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192NGRpKV9fYSwgKF9fdjRkaSlfbW0yNTZfc2V0emVyb19zaTI1NigpLCAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3KTsKfQoKLyogQml0d2lzZSBvcGVyYXRvcnMgKi8Kc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2FuZF9lcGkzMihfX201MTJpIF9fYSwgX19tNTEyaSBfX2IpCnsKICByZXR1cm4gKF9fbTUxMmkpKChfX3YxNnN1KV9fYSAmIChfX3YxNnN1KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2FuZF9lcGkzMihfX201MTJpIF9fc3JjLCBfX21tYXNrMTYgX19rLCBfX201MTJpIF9fYSwgX19tNTEyaSBfX2IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF81MTIoKF9fbW1hc2sxNilfX2ssCiAgICAgICAgICAgICAgICAoX192MTZzaSkgX21tNTEyX2FuZF9lcGkzMihfX2EsIF9fYiksCiAgICAgICAgICAgICAgICAoX192MTZzaSkgX19zcmMpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfYW5kX2VwaTMyKF9fbW1hc2sxNiBfX2ssIF9fbTUxMmkgX19hLCBfX201MTJpIF9fYikKewogIHJldHVybiAoX19tNTEyaSkgX21tNTEyX21hc2tfYW5kX2VwaTMyKF9tbTUxMl9zZXR6ZXJvX3NpNTEyICgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faywgX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfYW5kX2VwaTY0KF9fbTUxMmkgX19hLCBfX201MTJpIF9fYikKewogIHJldHVybiAoX19tNTEyaSkoKF9fdjhkdSlfX2EgJiAoX192OGR1KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2FuZF9lcGk2NChfX201MTJpIF9fc3JjLCBfX21tYXNrOCBfX2ssIF9fbTUxMmkgX19hLCBfX201MTJpIF9fYikKewogICAgcmV0dXJuIChfX201MTJpKSBfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzUxMiAoKF9fbW1hc2s4KSBfX2ssCiAgICAgICAgICAgICAgICAoX192OGRpKSBfbW01MTJfYW5kX2VwaTY0KF9fYSwgX19iKSwKICAgICAgICAgICAgICAgIChfX3Y4ZGkpIF9fc3JjKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2FuZF9lcGk2NChfX21tYXNrOCBfX2ssIF9fbTUxMmkgX19hLCBfX201MTJpIF9fYikKewogIHJldHVybiAoX19tNTEyaSkgX21tNTEyX21hc2tfYW5kX2VwaTY0KF9tbTUxMl9zZXR6ZXJvX3NpNTEyICgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faywgX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfYW5kbm90X3NpNTEyIChfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpKH4oX192OGR1KV9fQSAmIChfX3Y4ZHUpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2FuZG5vdF9lcGkzMiAoX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKSh+KF9fdjE2c3UpX19BICYgKF9fdjE2c3UpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfYW5kbm90X2VwaTMyKF9fbTUxMmkgX19XLCBfX21tYXNrMTYgX19VLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF81MTIoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX21tNTEyX2FuZG5vdF9lcGkzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2FuZG5vdF9lcGkzMihfX21tYXNrMTYgX19VLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX21tNTEyX21hc2tfYW5kbm90X2VwaTMyKF9tbTUxMl9zZXR6ZXJvX3NpNTEyKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX1UsIF9fQSwgX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2FuZG5vdF9lcGk2NChfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpKH4oX192OGR1KV9fQSAmIChfX3Y4ZHUpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfYW5kbm90X2VwaTY0KF9fbTUxMmkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzUxMigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9hbmRub3RfZXBpNjQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9hbmRub3RfZXBpNjQoX19tbWFzazggX19VLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX21tNTEyX21hc2tfYW5kbm90X2VwaTY0KF9tbTUxMl9zZXR6ZXJvX3NpNTEyKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX1UsIF9fQSwgX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX29yX2VwaTMyKF9fbTUxMmkgX19hLCBfX201MTJpIF9fYikKewogIHJldHVybiAoX19tNTEyaSkoKF9fdjE2c3UpX19hIHwgKF9fdjE2c3UpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfb3JfZXBpMzIoX19tNTEyaSBfX3NyYywgX19tbWFzazE2IF9faywgX19tNTEyaSBfX2EsIF9fbTUxMmkgX19iKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfNTEyKChfX21tYXNrMTYpX19rLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfb3JfZXBpMzIoX19hLCBfX2IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfX3NyYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9vcl9lcGkzMihfX21tYXNrMTYgX19rLCBfX201MTJpIF9fYSwgX19tNTEyaSBfX2IpCnsKICByZXR1cm4gKF9fbTUxMmkpX21tNTEyX21hc2tfb3JfZXBpMzIoX21tNTEyX3NldHplcm9fc2k1MTIoKSwgX19rLCBfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9vcl9lcGk2NChfX201MTJpIF9fYSwgX19tNTEyaSBfX2IpCnsKICByZXR1cm4gKF9fbTUxMmkpKChfX3Y4ZHUpX19hIHwgKF9fdjhkdSlfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19vcl9lcGk2NChfX201MTJpIF9fc3JjLCBfX21tYXNrOCBfX2ssIF9fbTUxMmkgX19hLCBfX201MTJpIF9fYikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzUxMigoX19tbWFzazgpX19rLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9vcl9lcGk2NChfX2EsIF9fYiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX19zcmMpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfb3JfZXBpNjQoX19tbWFzazggX19rLCBfX201MTJpIF9fYSwgX19tNTEyaSBfX2IpCnsKICByZXR1cm4gKF9fbTUxMmkpX21tNTEyX21hc2tfb3JfZXBpNjQoX21tNTEyX3NldHplcm9fc2k1MTIoKSwgX19rLCBfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl94b3JfZXBpMzIoX19tNTEyaSBfX2EsIF9fbTUxMmkgX19iKQp7CiAgcmV0dXJuIChfX201MTJpKSgoX192MTZzdSlfX2EgXiAoX192MTZzdSlfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza194b3JfZXBpMzIoX19tNTEyaSBfX3NyYywgX19tbWFzazE2IF9faywgX19tNTEyaSBfX2EsIF9fbTUxMmkgX19iKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfNTEyKChfX21tYXNrMTYpX19rLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl94b3JfZXBpMzIoX19hLCBfX2IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9fc3JjKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X3hvcl9lcGkzMihfX21tYXNrMTYgX19rLCBfX201MTJpIF9fYSwgX19tNTEyaSBfX2IpCnsKICByZXR1cm4gKF9fbTUxMmkpX21tNTEyX21hc2tfeG9yX2VwaTMyKF9tbTUxMl9zZXR6ZXJvX3NpNTEyKCksIF9faywgX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfeG9yX2VwaTY0KF9fbTUxMmkgX19hLCBfX201MTJpIF9fYikKewogIHJldHVybiAoX19tNTEyaSkoKF9fdjhkdSlfX2EgXiAoX192OGR1KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX3hvcl9lcGk2NChfX201MTJpIF9fc3JjLCBfX21tYXNrOCBfX2ssIF9fbTUxMmkgX19hLCBfX201MTJpIF9fYikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzUxMigoX19tbWFzazgpX19rLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl94b3JfZXBpNjQoX19hLCBfX2IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9fc3JjKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X3hvcl9lcGk2NChfX21tYXNrOCBfX2ssIF9fbTUxMmkgX19hLCBfX201MTJpIF9fYikKewogIHJldHVybiAoX19tNTEyaSlfbW01MTJfbWFza194b3JfZXBpNjQoX21tNTEyX3NldHplcm9fc2k1MTIoKSwgX19rLCBfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9hbmRfc2k1MTIoX19tNTEyaSBfX2EsIF9fbTUxMmkgX19iKQp7CiAgcmV0dXJuIChfX201MTJpKSgoX192OGR1KV9fYSAmIChfX3Y4ZHUpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX29yX3NpNTEyKF9fbTUxMmkgX19hLCBfX201MTJpIF9fYikKewogIHJldHVybiAoX19tNTEyaSkoKF9fdjhkdSlfX2EgfCAoX192OGR1KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl94b3Jfc2k1MTIoX19tNTEyaSBfX2EsIF9fbTUxMmkgX19iKQp7CiAgcmV0dXJuIChfX201MTJpKSgoX192OGR1KV9fYSBeIChfX3Y4ZHUpX19iKTsKfQoKLyogQXJpdGhtZXRpYyAqLwoKc3RhdGljIF9faW5saW5lIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9hZGRfcGQoX19tNTEyZCBfX2EsIF9fbTUxMmQgX19iKQp7CiAgcmV0dXJuIChfX201MTJkKSgoX192OGRmKV9fYSArIChfX3Y4ZGYpX19iKTsKfQoKc3RhdGljIF9faW5saW5lIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2FkZF9wcyhfX201MTIgX19hLCBfX201MTIgX19iKQp7CiAgcmV0dXJuIChfX201MTIpKChfX3YxNnNmKV9fYSArIChfX3YxNnNmKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZSBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbXVsX3BkKF9fbTUxMmQgX19hLCBfX201MTJkIF9fYikKewogIHJldHVybiAoX19tNTEyZCkoKF9fdjhkZilfX2EgKiAoX192OGRmKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZSBfX201MTIgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tdWxfcHMoX19tNTEyIF9fYSwgX19tNTEyIF9fYikKewogIHJldHVybiAoX19tNTEyKSgoX192MTZzZilfX2EgKiAoX192MTZzZilfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmUgX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3N1Yl9wZChfX201MTJkIF9fYSwgX19tNTEyZCBfX2IpCnsKICByZXR1cm4gKF9fbTUxMmQpKChfX3Y4ZGYpX19hIC0gKF9fdjhkZilfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmUgX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfc3ViX3BzKF9fbTUxMiBfX2EsIF9fbTUxMiBfX2IpCnsKICByZXR1cm4gKF9fbTUxMikoKF9fdjE2c2YpX19hIC0gKF9fdjE2c2YpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2FkZF9lcGk2NCAoX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKSAoKF9fdjhkdSkgX19BICsgKF9fdjhkdSkgX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfYWRkX2VwaTY0KF9fbTUxMmkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzUxMigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9hZGRfZXBpNjQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9hZGRfZXBpNjQoX19tbWFzazggX19VLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV81MTIoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfYWRkX2VwaTY0KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3N1Yl9lcGk2NCAoX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKSAoKF9fdjhkdSkgX19BIC0gKF9fdjhkdSkgX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfc3ViX2VwaTY0KF9fbTUxMmkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzUxMigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9zdWJfZXBpNjQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9zdWJfZXBpNjQoX19tbWFzazggX19VLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV81MTIoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfc3ViX2VwaTY0KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2FkZF9lcGkzMiAoX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKSAoKF9fdjE2c3UpIF9fQSArIChfX3YxNnN1KSBfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19hZGRfZXBpMzIoX19tNTEyaSBfX1csIF9fbW1hc2sxNiBfX1UsIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzUxMigoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX21tNTEyX2FkZF9lcGkzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9hZGRfZXBpMzIgKF9fbW1hc2sxNiBfX1UsIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzUxMigoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX21tNTEyX2FkZF9lcGkzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfc3ViX2VwaTMyIChfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpICgoX192MTZzdSkgX19BIC0gKF9fdjE2c3UpIF9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX3N1Yl9lcGkzMihfX201MTJpIF9fVywgX19tbWFzazE2IF9fVSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfNTEyKChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfc3ViX2VwaTMyKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X3N1Yl9lcGkzMihfX21tYXNrMTYgX19VLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF81MTIoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9zdWJfZXBpMzIoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKI2RlZmluZSBfbW01MTJfbWF4X3JvdW5kX3BkKEEsIEIsIFIpIFwKICAoKF9fbTUxMmQpX19idWlsdGluX2lhMzJfbWF4cGQ1MTIoKF9fdjhkZikoX19tNTEyZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikoX19tNTEyZCkoQiksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfbWF4X3JvdW5kX3BkKFcsIFUsIEEsIEIsIFIpIFwKICAoKF9fbTUxMmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfNTEyKChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl9tYXhfcm91bmRfcGQoKEEpLCAoQiksIChSKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKShXKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9tYXhfcm91bmRfcGQoVSwgQSwgQiwgUikgXAogICgoX19tNTEyZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF81MTIoKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX21heF9yb3VuZF9wZCgoQSksIChCKSwgKFIpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX3NldHplcm9fcGQoKSkpCgpzdGF0aWMgIF9faW5saW5lX18gX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21heF9wZChfX201MTJkIF9fQSwgX19tNTEyZCBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmQpIF9fYnVpbHRpbl9pYTMyX21heHBkNTEyKChfX3Y4ZGYpIF9fQSwgKF9fdjhkZikgX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfbWF4X3BkIChfX201MTJkIF9fVywgX19tbWFzazggX19VLCBfX201MTJkIF9fQSwgX19tNTEyZCBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfNTEyKF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX21heF9wZChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9tYXhfcGQgKF9fbW1hc2s4IF9fVSwgX19tNTEyZCBfX0EsIF9fbTUxMmQgX19CKQp7CiAgcmV0dXJuIChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzUxMihfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl9tYXhfcGQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfbW01MTJfc2V0emVyb19wZCgpKTsKfQoKI2RlZmluZSBfbW01MTJfbWF4X3JvdW5kX3BzKEEsIEIsIFIpIFwKICAoKF9fbTUxMilfX2J1aWx0aW5faWEzMl9tYXhwczUxMigoX192MTZzZikoX19tNTEyKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKShfX201MTIpKEIpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX21heF9yb3VuZF9wcyhXLCBVLCBBLCBCLCBSKSBcCiAgKChfX201MTIpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfNTEyKChfX21tYXNrMTYpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfbWF4X3JvdW5kX3BzKChBKSwgKEIpLCAoUikpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikoVykpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfbWF4X3JvdW5kX3BzKFUsIEEsIEIsIFIpIFwKICAoKF9fbTUxMilfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc181MTIoKF9fbW1hc2sxNikoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl9tYXhfcm91bmRfcHMoKEEpLCAoQiksIChSKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl9zZXR6ZXJvX3BzKCkpKQoKc3RhdGljICBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21heF9wcyhfX201MTIgX19BLCBfX201MTIgX19CKQp7CiAgcmV0dXJuIChfX201MTIpIF9fYnVpbHRpbl9pYTMyX21heHBzNTEyKChfX3YxNnNmKSBfX0EsIChfX3YxNnNmKSBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfbWF4X3BzIChfX201MTIgX19XLCBfX21tYXNrMTYgX19VLCBfX201MTIgX19BLCBfX201MTIgX19CKQp7CiAgcmV0dXJuIChfX201MTIpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfNTEyKF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX21tNTEyX21heF9wcyhfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X21heF9wcyAoX19tbWFzazE2IF9fVSwgX19tNTEyIF9fQSwgX19tNTEyIF9fQikKewogIHJldHVybiAoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzUxMihfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl9tYXhfcHMoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfc2V0emVyb19wcygpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19tYXhfc3MoX19tMTI4IF9fVywgX19tbWFzazggX19VLF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpIHsKICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfbWF4c3Nfcm91bmRfbWFzayAoKF9fdjRzZikgX19BLAogICAgICAgICAgICAgICAgKF9fdjRzZikgX19CLAogICAgICAgICAgICAgICAgKF9fdjRzZikgX19XLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9tYXhfc3MoX19tbWFzazggX19VLF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpIHsKICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfbWF4c3Nfcm91bmRfbWFzayAoKF9fdjRzZikgX19BLAogICAgICAgICAgICAgICAgKF9fdjRzZikgX19CLAogICAgICAgICAgICAgICAgKF9fdjRzZikgIF9tbV9zZXR6ZXJvX3BzICgpLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgojZGVmaW5lIF9tbV9tYXhfcm91bmRfc3MoQSwgQiwgUikgXAogICgoX19tMTI4KV9fYnVpbHRpbl9pYTMyX21heHNzX3JvdW5kX21hc2soKF9fdjRzZikoX19tMTI4KShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikoX19tMTI4KShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfbW1fc2V0emVyb19wcygpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEsIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX21hc2tfbWF4X3JvdW5kX3NzKFcsIFUsIEEsIEIsIFIpIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl9tYXhzc19yb3VuZF9tYXNrKChfX3Y0c2YpKF9fbTEyOCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoVyksIChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX21hc2t6X21heF9yb3VuZF9zcyhVLCBBLCBCLCBSKSBcCiAgKChfX20xMjgpX19idWlsdGluX2lhMzJfbWF4c3Nfcm91bmRfbWFzaygoX192NHNmKShfX20xMjgpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9tbV9zZXR6ZXJvX3BzKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX21heF9zZChfX20xMjhkIF9fVywgX19tbWFzazggX19VLF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikgewogIHJldHVybiAoX19tMTI4ZCkgX19idWlsdGluX2lhMzJfbWF4c2Rfcm91bmRfbWFzayAoKF9fdjJkZikgX19BLAogICAgICAgICAgICAgICAgKF9fdjJkZikgX19CLAogICAgICAgICAgICAgICAgKF9fdjJkZikgX19XLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfbWF4X3NkKF9fbW1hc2s4IF9fVSxfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpIHsKICByZXR1cm4gKF9fbTEyOGQpIF9fYnVpbHRpbl9pYTMyX21heHNkX3JvdW5kX21hc2sgKChfX3YyZGYpIF9fQSwKICAgICAgICAgICAgICAgIChfX3YyZGYpIF9fQiwKICAgICAgICAgICAgICAgIChfX3YyZGYpICBfbW1fc2V0emVyb19wZCAoKSwKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW1fbWF4X3JvdW5kX3NkKEEsIEIsIFIpIFwKICAoKF9fbTEyOGQpX19idWlsdGluX2lhMzJfbWF4c2Rfcm91bmRfbWFzaygoX192MmRmKShfX20xMjhkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfbW1fc2V0emVyb19wZCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbV9tYXNrX21heF9yb3VuZF9zZChXLCBVLCBBLCBCLCBSKSBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX21heHNkX3JvdW5kX21hc2soKF9fdjJkZikoX19tMTI4ZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKFcpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW1fbWFza3pfbWF4X3JvdW5kX3NkKFUsIEEsIEIsIFIpIFwKICAoKF9fbTEyOGQpX19idWlsdGluX2lhMzJfbWF4c2Rfcm91bmRfbWFzaygoX192MmRmKShfX20xMjhkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfbW1fc2V0emVyb19wZCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lIF9fbTUxMmkKX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXhfZXBpMzIoX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3BtYXhzZDUxMigoX192MTZzaSlfX0EsIChfX3YxNnNpKV9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX21heF9lcGkzMiAoX19tNTEyaSBfX1csIF9fbW1hc2sxNiBfX00sIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzUxMigoX19tbWFzazE2KV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfbWF4X2VwaTMyKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfbWF4X2VwaTMyIChfX21tYXNrMTYgX19NLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF81MTIoKF9fbW1hc2sxNilfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX21tNTEyX21heF9lcGkzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCnN0YXRpYyBfX2lubGluZSBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWF4X2VwdTMyKF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9wbWF4dWQ1MTIoKF9fdjE2c2kpX19BLCAoX192MTZzaSlfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19tYXhfZXB1MzIgKF9fbTUxMmkgX19XLCBfX21tYXNrMTYgX19NLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF81MTIoKF9fbW1hc2sxNilfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX21tNTEyX21heF9lcHUzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X21heF9lcHUzMiAoX19tbWFzazE2IF9fTSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfNTEyKChfX21tYXNrMTYpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9tYXhfZXB1MzIoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmUgX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21heF9lcGk2NChfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfcG1heHNxNTEyKChfX3Y4ZGkpX19BLCAoX192OGRpKV9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX21heF9lcGk2NCAoX19tNTEyaSBfX1csIF9fbW1hc2s4IF9fTSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfNTEyKChfX21tYXNrOClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX21heF9lcGk2NChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X21heF9lcGk2NCAoX19tbWFzazggX19NLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV81MTIoKF9fbW1hc2s4KV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfbWF4X2VwaTY0KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKc3RhdGljIF9faW5saW5lIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXhfZXB1NjQoX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3BtYXh1cTUxMigoX192OGRpKV9fQSwgKF9fdjhkaSlfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19tYXhfZXB1NjQgKF9fbTUxMmkgX19XLCBfX21tYXNrOCBfX00sIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzUxMigoX19tbWFzazgpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9tYXhfZXB1NjQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9tYXhfZXB1NjQgKF9fbW1hc2s4IF9fTSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfNTEyKChfX21tYXNrOClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX21heF9lcHU2NChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCiNkZWZpbmUgX21tNTEyX21pbl9yb3VuZF9wZChBLCBCLCBSKSBcCiAgKChfX201MTJkKV9fYnVpbHRpbl9pYTMyX21pbnBkNTEyKChfX3Y4ZGYpKF9fbTUxMmQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpKF9fbTUxMmQpKEIpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX21pbl9yb3VuZF9wZChXLCBVLCBBLCBCLCBSKSBcCiAgKChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzUxMigoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfbW01MTJfbWluX3JvdW5kX3BkKChBKSwgKEIpLCAoUikpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikoVykpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfbWluX3JvdW5kX3BkKFUsIEEsIEIsIFIpIFwKICAoKF9fbTUxMmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfNTEyKChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl9taW5fcm91bmRfcGQoKEEpLCAoQiksIChSKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl9zZXR6ZXJvX3BkKCkpKQoKc3RhdGljICBfX2lubGluZV9fIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9taW5fcGQoX19tNTEyZCBfX0EsIF9fbTUxMmQgX19CKQp7CiAgcmV0dXJuIChfX201MTJkKSBfX2J1aWx0aW5faWEzMl9taW5wZDUxMigoX192OGRmKSBfX0EsIChfX3Y4ZGYpIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX21pbl9wZCAoX19tNTEyZCBfX1csIF9fbW1hc2s4IF9fVSwgX19tNTEyZCBfX0EsIF9fbTUxMmQgX19CKQp7CiAgcmV0dXJuIChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzUxMihfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl9taW5fcGQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfbWluX3BkIChfX21tYXNrOCBfX1UsIF9fbTUxMmQgX19BLCBfX201MTJkIF9fQikKewogIHJldHVybiAoX19tNTEyZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF81MTIoX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfbW01MTJfbWluX3BkKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX3NldHplcm9fcGQoKSk7Cn0KCiNkZWZpbmUgX21tNTEyX21pbl9yb3VuZF9wcyhBLCBCLCBSKSBcCiAgKChfX201MTIpX19idWlsdGluX2lhMzJfbWlucHM1MTIoKF9fdjE2c2YpKF9fbTUxMikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikoX19tNTEyKShCKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza19taW5fcm91bmRfcHMoVywgVSwgQSwgQiwgUikgXAogICgoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzUxMigoX19tbWFzazE2KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX21tNTEyX21pbl9yb3VuZF9wcygoQSksIChCKSwgKFIpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpKFcpKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X21pbl9yb3VuZF9wcyhVLCBBLCBCLCBSKSBcCiAgKChfX201MTIpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfNTEyKChfX21tYXNrMTYpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfbWluX3JvdW5kX3BzKChBKSwgKEIpLCAoUikpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfc2V0emVyb19wcygpKSkKCnN0YXRpYyAgX19pbmxpbmVfXyBfX201MTIgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9taW5fcHMoX19tNTEyIF9fQSwgX19tNTEyIF9fQikKewogIHJldHVybiAoX19tNTEyKSBfX2J1aWx0aW5faWEzMl9taW5wczUxMigoX192MTZzZikgX19BLCAoX192MTZzZikgX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTIgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX21pbl9wcyAoX19tNTEyIF9fVywgX19tbWFzazE2IF9fVSwgX19tNTEyIF9fQSwgX19tNTEyIF9fQikKewogIHJldHVybiAoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzUxMihfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl9taW5fcHMoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTIgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9taW5fcHMgKF9fbW1hc2sxNiBfX1UsIF9fbTUxMiBfX0EsIF9fbTUxMiBfX0IpCnsKICByZXR1cm4gKF9fbTUxMilfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc181MTIoX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfbWluX3BzKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX21tNTEyX3NldHplcm9fcHMoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfbWluX3NzKF9fbTEyOCBfX1csIF9fbW1hc2s4IF9fVSxfX20xMjggX19BLCBfX20xMjggX19CKSB7CiAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX21pbnNzX3JvdW5kX21hc2sgKChfX3Y0c2YpIF9fQSwKICAgICAgICAgICAgICAgIChfX3Y0c2YpIF9fQiwKICAgICAgICAgICAgICAgIChfX3Y0c2YpIF9fVywKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfbWluX3NzKF9fbW1hc2s4IF9fVSxfX20xMjggX19BLCBfX20xMjggX19CKSB7CiAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX21pbnNzX3JvdW5kX21hc2sgKChfX3Y0c2YpIF9fQSwKICAgICAgICAgICAgICAgIChfX3Y0c2YpIF9fQiwKICAgICAgICAgICAgICAgIChfX3Y0c2YpICBfbW1fc2V0emVyb19wcyAoKSwKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW1fbWluX3JvdW5kX3NzKEEsIEIsIFIpIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl9taW5zc19yb3VuZF9tYXNrKChfX3Y0c2YpKF9fbTEyOCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX3NldHplcm9fcHMoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbV9tYXNrX21pbl9yb3VuZF9zcyhXLCBVLCBBLCBCLCBSKSBcCiAgKChfX20xMjgpX19idWlsdGluX2lhMzJfbWluc3Nfcm91bmRfbWFzaygoX192NHNmKShfX20xMjgpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKFcpLCAoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShSKSkpCgojZGVmaW5lIF9tbV9tYXNrel9taW5fcm91bmRfc3MoVSwgQSwgQiwgUikgXAogICgoX19tMTI4KV9fYnVpbHRpbl9pYTMyX21pbnNzX3JvdW5kX21hc2soKF9fdjRzZikoX19tMTI4KShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikoX19tMTI4KShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfbW1fc2V0emVyb19wcygpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpLCAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19taW5fc2QoX19tMTI4ZCBfX1csIF9fbW1hc2s4IF9fVSxfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpIHsKICByZXR1cm4gKF9fbTEyOGQpIF9fYnVpbHRpbl9pYTMyX21pbnNkX3JvdW5kX21hc2sgKChfX3YyZGYpIF9fQSwKICAgICAgICAgICAgICAgIChfX3YyZGYpIF9fQiwKICAgICAgICAgICAgICAgIChfX3YyZGYpIF9fVywKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X21pbl9zZChfX21tYXNrOCBfX1UsX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKSB7CiAgcmV0dXJuIChfX20xMjhkKSBfX2J1aWx0aW5faWEzMl9taW5zZF9yb3VuZF9tYXNrICgoX192MmRmKSBfX0EsCiAgICAgICAgICAgICAgICAoX192MmRmKSBfX0IsCiAgICAgICAgICAgICAgICAoX192MmRmKSAgX21tX3NldHplcm9fcGQgKCksCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCiNkZWZpbmUgX21tX21pbl9yb3VuZF9zZChBLCBCLCBSKSBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX21pbnNkX3JvdW5kX21hc2soKF9fdjJkZikoX19tMTI4ZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX3NldHplcm9fcGQoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSwgKGludCkoUikpKQoKI2RlZmluZSBfbW1fbWFza19taW5fcm91bmRfc2QoVywgVSwgQSwgQiwgUikgXAogICgoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9taW5zZF9yb3VuZF9tYXNrKChfX3YyZGYpKF9fbTEyOGQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikoX19tMTI4ZCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShXKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX21hc2t6X21pbl9yb3VuZF9zZChVLCBBLCBCLCBSKSBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX21pbnNkX3JvdW5kX21hc2soKF9fdjJkZikoX19tMTI4ZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX3NldHplcm9fcGQoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZSBfX201MTJpCl9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWluX2VwaTMyKF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9wbWluc2Q1MTIoKF9fdjE2c2kpX19BLCAoX192MTZzaSlfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19taW5fZXBpMzIgKF9fbTUxMmkgX19XLCBfX21tYXNrMTYgX19NLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF81MTIoKF9fbW1hc2sxNilfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX21tNTEyX21pbl9lcGkzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X21pbl9lcGkzMiAoX19tbWFzazE2IF9fTSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfNTEyKChfX21tYXNrMTYpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9taW5fZXBpMzIoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmUgX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21pbl9lcHUzMihfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfcG1pbnVkNTEyKChfX3YxNnNpKV9fQSwgKF9fdjE2c2kpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfbWluX2VwdTMyIChfX201MTJpIF9fVywgX19tbWFzazE2IF9fTSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfNTEyKChfX21tYXNrMTYpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9taW5fZXB1MzIoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9taW5fZXB1MzIgKF9fbW1hc2sxNiBfX00sIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzUxMigoX19tbWFzazE2KV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfbWluX2VwdTMyKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKc3RhdGljIF9faW5saW5lIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9taW5fZXBpNjQoX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3BtaW5zcTUxMigoX192OGRpKV9fQSwgKF9fdjhkaSlfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19taW5fZXBpNjQgKF9fbTUxMmkgX19XLCBfX21tYXNrOCBfX00sIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzUxMigoX19tbWFzazgpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9taW5fZXBpNjQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9taW5fZXBpNjQgKF9fbW1hc2s4IF9fTSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfNTEyKChfX21tYXNrOClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX21pbl9lcGk2NChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCnN0YXRpYyBfX2lubGluZSBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWluX2VwdTY0KF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9wbWludXE1MTIoKF9fdjhkaSlfX0EsIChfX3Y4ZGkpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfbWluX2VwdTY0IChfX201MTJpIF9fVywgX19tbWFzazggX19NLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV81MTIoKF9fbW1hc2s4KV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfbWluX2VwdTY0KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfbWluX2VwdTY0IChfX21tYXNrOCBfX00sIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzUxMigoX19tbWFzazgpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9taW5fZXB1NjQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmUgX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX211bF9lcGkzMihfX201MTJpIF9fWCwgX19tNTEyaSBfX1kpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfcG11bGRxNTEyKChfX3YxNnNpKV9fWCwgKF9fdjE2c2kpIF9fWSk7Cn0KCnN0YXRpYyBfX2lubGluZSBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19tdWxfZXBpMzIoX19tNTEyaSBfX1csIF9fbW1hc2s4IF9fTSwgX19tNTEyaSBfX1gsIF9fbTUxMmkgX19ZKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfNTEyKChfX21tYXNrOClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX211bF9lcGkzMihfX1gsIF9fWSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9tdWxfZXBpMzIoX19tbWFzazggX19NLCBfX201MTJpIF9fWCwgX19tNTEyaSBfX1kpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV81MTIoKF9fbW1hc2s4KV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfbXVsX2VwaTMyKF9fWCwgX19ZKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfc2V0emVyb19zaTUxMiAoKSk7Cn0KCnN0YXRpYyBfX2lubGluZSBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbXVsX2VwdTMyKF9fbTUxMmkgX19YLCBfX201MTJpIF9fWSkKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9wbXVsdWRxNTEyKChfX3YxNnNpKV9fWCwgKF9fdjE2c2kpX19ZKTsKfQoKc3RhdGljIF9faW5saW5lIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX211bF9lcHUzMihfX201MTJpIF9fVywgX19tbWFzazggX19NLCBfX201MTJpIF9fWCwgX19tNTEyaSBfX1kpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV81MTIoKF9fbW1hc2s4KV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfbXVsX2VwdTMyKF9fWCwgX19ZKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmUgX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X211bF9lcHUzMihfX21tYXNrOCBfX00sIF9fbTUxMmkgX19YLCBfX201MTJpIF9fWSkKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzUxMigoX19tbWFzazgpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9tdWxfZXB1MzIoX19YLCBfX1kpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyICgpKTsKfQoKc3RhdGljIF9faW5saW5lIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tdWxsb19lcGkzMiAoX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKSAoKF9fdjE2c3UpIF9fQSAqIChfX3YxNnN1KSBfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmUgX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X211bGxvX2VwaTMyKF9fbW1hc2sxNiBfX00sIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzUxMigoX19tbWFzazE2KV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX21tNTEyX211bGxvX2VwaTMyKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCnN0YXRpYyBfX2lubGluZSBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19tdWxsb19lcGkzMihfX201MTJpIF9fVywgX19tbWFzazE2IF9fTSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfNTEyKChfX21tYXNrMTYpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfbXVsbG9fZXBpMzIoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbXVsbG94X2VwaTY0IChfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpIHsKICByZXR1cm4gKF9fbTUxMmkpICgoX192OGR1KSBfX0EgKiAoX192OGR1KSBfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19tdWxsb3hfZXBpNjQoX19tNTEyaSBfX1csIF9fbW1hc2s4IF9fVSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKSB7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfNTEyKChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX211bGxveF9lcGk2NChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX19XKTsKfQoKI2RlZmluZSBfbW01MTJfc3FydF9yb3VuZF9wZChBLCBSKSBcCiAgKChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3NxcnRwZDUxMigoX192OGRmKShfX201MTJkKShBKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza19zcXJ0X3JvdW5kX3BkKFcsIFUsIEEsIFIpIFwKICAoKF9fbTUxMmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfNTEyKChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfbW01MTJfc3FydF9yb3VuZF9wZCgoQSksIChSKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikoX19tNTEyZCkoVykpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfc3FydF9yb3VuZF9wZChVLCBBLCBSKSBcCiAgKChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzUxMigoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX3NxcnRfcm91bmRfcGQoKEEpLCAoUikpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX3NldHplcm9fcGQoKSkpCgpzdGF0aWMgIF9faW5saW5lX18gX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3NxcnRfcGQoX19tNTEyZCBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmQpX19idWlsdGluX2lhMzJfc3FydHBkNTEyKChfX3Y4ZGYpX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfc3FydF9wZCAoX19tNTEyZCBfX1csIF9fbW1hc2s4IF9fVSwgX19tNTEyZCBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfNTEyKF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX3NxcnRfcGQoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X3NxcnRfcGQgKF9fbW1hc2s4IF9fVSwgX19tNTEyZCBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfNTEyKF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX3NxcnRfcGQoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX3NldHplcm9fcGQoKSk7Cn0KCiNkZWZpbmUgX21tNTEyX3NxcnRfcm91bmRfcHMoQSwgUikgXAogICgoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3NxcnRwczUxMigoX192MTZzZikoX19tNTEyKShBKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza19zcXJ0X3JvdW5kX3BzKFcsIFUsIEEsIFIpIFwKICAoKF9fbTUxMilfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc181MTIoKF9fbW1hc2sxNikoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfc3FydF9yb3VuZF9wcygoQSksIChSKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikoX19tNTEyKShXKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9zcXJ0X3JvdW5kX3BzKFUsIEEsIFIpIFwKICAoKF9fbTUxMilfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc181MTIoKF9fbW1hc2sxNikoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfc3FydF9yb3VuZF9wcygoQSksIChSKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfc2V0emVyb19wcygpKSkKCnN0YXRpYyAgX19pbmxpbmVfXyBfX201MTIgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9zcXJ0X3BzKF9fbTUxMiBfX0EpCnsKICByZXR1cm4gKF9fbTUxMilfX2J1aWx0aW5faWEzMl9zcXJ0cHM1MTIoKF9fdjE2c2YpX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgIF9faW5saW5lX18gX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19zcXJ0X3BzKF9fbTUxMiBfX1csIF9fbW1hc2sxNiBfX1UsIF9fbTUxMiBfX0EpCnsKICByZXR1cm4gKF9fbTUxMilfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc181MTIoX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfc3FydF9wcyhfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfX1cpOwp9CgpzdGF0aWMgIF9faW5saW5lX18gX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfc3FydF9wcyggX19tbWFzazE2IF9fVSwgX19tNTEyIF9fQSkKewogIHJldHVybiAoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzUxMihfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl9zcXJ0X3BzKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl9zZXR6ZXJvX3BzKCkpOwp9CgpzdGF0aWMgIF9faW5saW5lX18gX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3JzcXJ0MTRfcGQoX19tNTEyZCBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmQpIF9fYnVpbHRpbl9pYTMyX3JzcXJ0MTRwZDUxMl9tYXNrICgoX192OGRmKSBfX0EsCiAgICAgICAgICAgICAgICAgKF9fdjhkZikKICAgICAgICAgICAgICAgICBfbW01MTJfc2V0emVyb19wZCAoKSwKICAgICAgICAgICAgICAgICAoX19tbWFzazgpIC0xKTt9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19yc3FydDE0X3BkIChfX201MTJkIF9fVywgX19tbWFzazggX19VLCBfX201MTJkIF9fQSkKewogIHJldHVybiAoX19tNTEyZCkgX19idWlsdGluX2lhMzJfcnNxcnQxNHBkNTEyX21hc2sgKChfX3Y4ZGYpIF9fQSwKICAgICAgICAgICAgICAgICAgKF9fdjhkZikgX19XLAogICAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9yc3FydDE0X3BkIChfX21tYXNrOCBfX1UsIF9fbTUxMmQgX19BKQp7CiAgcmV0dXJuIChfX201MTJkKSBfX2J1aWx0aW5faWEzMl9yc3FydDE0cGQ1MTJfbWFzayAoKF9fdjhkZikgX19BLAogICAgICAgICAgICAgICAgICAoX192OGRmKQogICAgICAgICAgICAgICAgICBfbW01MTJfc2V0emVyb19wZCAoKSwKICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgIF9faW5saW5lX18gX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfcnNxcnQxNF9wcyhfX201MTIgX19BKQp7CiAgcmV0dXJuIChfX201MTIpIF9fYnVpbHRpbl9pYTMyX3JzcXJ0MTRwczUxMl9tYXNrICgoX192MTZzZikgX19BLAogICAgICAgICAgICAgICAgKF9fdjE2c2YpCiAgICAgICAgICAgICAgICBfbW01MTJfc2V0emVyb19wcyAoKSwKICAgICAgICAgICAgICAgIChfX21tYXNrMTYpIC0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19yc3FydDE0X3BzIChfX201MTIgX19XLCBfX21tYXNrMTYgX19VLCBfX201MTIgX19BKQp7CiAgcmV0dXJuIChfX201MTIpIF9fYnVpbHRpbl9pYTMyX3JzcXJ0MTRwczUxMl9tYXNrICgoX192MTZzZikgX19BLAogICAgICAgICAgICAgICAgIChfX3YxNnNmKSBfX1csCiAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfcnNxcnQxNF9wcyAoX19tbWFzazE2IF9fVSwgX19tNTEyIF9fQSkKewogIHJldHVybiAoX19tNTEyKSBfX2J1aWx0aW5faWEzMl9yc3FydDE0cHM1MTJfbWFzayAoKF9fdjE2c2YpIF9fQSwKICAgICAgICAgICAgICAgICAoX192MTZzZikKICAgICAgICAgICAgICAgICBfbW01MTJfc2V0emVyb19wcyAoKSwKICAgICAgICAgICAgICAgICAoX19tbWFzazE2KSBfX1UpOwp9CgpzdGF0aWMgIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fcnNxcnQxNF9zcyhfX20xMjggX19BLCBfX20xMjggX19CKQp7CiAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX3JzcXJ0MTRzc19tYXNrICgoX192NHNmKSBfX0EsCiAgICAgICAgICAgICAoX192NHNmKSBfX0IsCiAgICAgICAgICAgICAoX192NHNmKQogICAgICAgICAgICAgX21tX3NldHplcm9fcHMgKCksCiAgICAgICAgICAgICAoX19tbWFzazgpIC0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19yc3FydDE0X3NzIChfX20xMjggX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCnsKIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9yc3FydDE0c3NfbWFzayAoKF9fdjRzZikgX19BLAogICAgICAgICAgKF9fdjRzZikgX19CLAogICAgICAgICAgKF9fdjRzZikgX19XLAogICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9yc3FydDE0X3NzIChfX21tYXNrOCBfX1UsIF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCnsKIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9yc3FydDE0c3NfbWFzayAoKF9fdjRzZikgX19BLAogICAgICAgICAgKF9fdjRzZikgX19CLAogICAgICAgICAgKF9fdjRzZikgX21tX3NldHplcm9fcHMgKCksCiAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyAgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fcnNxcnQxNF9zZChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGQpIF9fYnVpbHRpbl9pYTMyX3JzcXJ0MTRzZF9tYXNrICgoX192MmRmKSBfX0EsCiAgICAgICAgICAgICAgKF9fdjJkZikgX19CLAogICAgICAgICAgICAgIChfX3YyZGYpCiAgICAgICAgICAgICAgX21tX3NldHplcm9fcGQgKCksCiAgICAgICAgICAgICAgKF9fbW1hc2s4KSAtMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3JzcXJ0MTRfc2QgKF9fbTEyOGQgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikKewogcmV0dXJuIChfX20xMjhkKSBfX2J1aWx0aW5faWEzMl9yc3FydDE0c2RfbWFzayAoIChfX3YyZGYpIF9fQSwKICAgICAgICAgIChfX3YyZGYpIF9fQiwKICAgICAgICAgIChfX3YyZGYpIF9fVywKICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X3JzcXJ0MTRfc2QgKF9fbW1hc2s4IF9fVSwgX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQp7CiByZXR1cm4gKF9fbTEyOGQpIF9fYnVpbHRpbl9pYTMyX3JzcXJ0MTRzZF9tYXNrICggKF9fdjJkZikgX19BLAogICAgICAgICAgKF9fdjJkZikgX19CLAogICAgICAgICAgKF9fdjJkZikgX21tX3NldHplcm9fcGQgKCksCiAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyAgX19pbmxpbmVfXyBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfcmNwMTRfcGQoX19tNTEyZCBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmQpIF9fYnVpbHRpbl9pYTMyX3JjcDE0cGQ1MTJfbWFzayAoKF9fdjhkZikgX19BLAogICAgICAgICAgICAgICAoX192OGRmKQogICAgICAgICAgICAgICBfbW01MTJfc2V0emVyb19wZCAoKSwKICAgICAgICAgICAgICAgKF9fbW1hc2s4KSAtMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX3JjcDE0X3BkIChfX201MTJkIF9fVywgX19tbWFzazggX19VLCBfX201MTJkIF9fQSkKewogIHJldHVybiAoX19tNTEyZCkgX19idWlsdGluX2lhMzJfcmNwMTRwZDUxMl9tYXNrICgoX192OGRmKSBfX0EsCiAgICAgICAgICAgICAgICAoX192OGRmKSBfX1csCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9yY3AxNF9wZCAoX19tbWFzazggX19VLCBfX201MTJkIF9fQSkKewogIHJldHVybiAoX19tNTEyZCkgX19idWlsdGluX2lhMzJfcmNwMTRwZDUxMl9tYXNrICgoX192OGRmKSBfX0EsCiAgICAgICAgICAgICAgICAoX192OGRmKQogICAgICAgICAgICAgICAgX21tNTEyX3NldHplcm9fcGQgKCksCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyAgX19pbmxpbmVfXyBfX201MTIgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9yY3AxNF9wcyhfX201MTIgX19BKQp7CiAgcmV0dXJuIChfX201MTIpIF9fYnVpbHRpbl9pYTMyX3JjcDE0cHM1MTJfbWFzayAoKF9fdjE2c2YpIF9fQSwKICAgICAgICAgICAgICAoX192MTZzZikKICAgICAgICAgICAgICBfbW01MTJfc2V0emVyb19wcyAoKSwKICAgICAgICAgICAgICAoX19tbWFzazE2KSAtMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfcmNwMTRfcHMgKF9fbTUxMiBfX1csIF9fbW1hc2sxNiBfX1UsIF9fbTUxMiBfX0EpCnsKICByZXR1cm4gKF9fbTUxMikgX19idWlsdGluX2lhMzJfcmNwMTRwczUxMl9tYXNrICgoX192MTZzZikgX19BLAogICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpIF9fVywKICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X3JjcDE0X3BzIChfX21tYXNrMTYgX19VLCBfX201MTIgX19BKQp7CiAgcmV0dXJuIChfX201MTIpIF9fYnVpbHRpbl9pYTMyX3JjcDE0cHM1MTJfbWFzayAoKF9fdjE2c2YpIF9fQSwKICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKQogICAgICAgICAgICAgICAgICAgX21tNTEyX3NldHplcm9fcHMgKCksCiAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KSBfX1UpOwp9CgpzdGF0aWMgIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fcmNwMTRfc3MoX19tMTI4IF9fQSwgX19tMTI4IF9fQikKewogIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9yY3AxNHNzX21hc2sgKChfX3Y0c2YpIF9fQSwKICAgICAgICAgICAgICAgICAoX192NHNmKSBfX0IsCiAgICAgICAgICAgICAgICAgKF9fdjRzZikKICAgICAgICAgICAgICAgICBfbW1fc2V0emVyb19wcyAoKSwKICAgICAgICAgICAgICAgICAoX19tbWFzazgpIC0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19yY3AxNF9zcyAoX19tMTI4IF9fVywgX19tbWFzazggX19VLCBfX20xMjggX19BLCBfX20xMjggX19CKQp7CiByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfcmNwMTRzc19tYXNrICgoX192NHNmKSBfX0EsCiAgICAgICAgICAoX192NHNmKSBfX0IsCiAgICAgICAgICAoX192NHNmKSBfX1csCiAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X3JjcDE0X3NzIChfX21tYXNrOCBfX1UsIF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCnsKIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9yY3AxNHNzX21hc2sgKChfX3Y0c2YpIF9fQSwKICAgICAgICAgIChfX3Y0c2YpIF9fQiwKICAgICAgICAgIChfX3Y0c2YpIF9tbV9zZXR6ZXJvX3BzICgpLAogICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX3JjcDE0X3NkKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikKewogIHJldHVybiAoX19tMTI4ZCkgX19idWlsdGluX2lhMzJfcmNwMTRzZF9tYXNrICgoX192MmRmKSBfX0EsCiAgICAgICAgICAgIChfX3YyZGYpIF9fQiwKICAgICAgICAgICAgKF9fdjJkZikKICAgICAgICAgICAgX21tX3NldHplcm9fcGQgKCksCiAgICAgICAgICAgIChfX21tYXNrOCkgLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19yY3AxNF9zZCAoX19tMTI4ZCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQp7CiByZXR1cm4gKF9fbTEyOGQpIF9fYnVpbHRpbl9pYTMyX3JjcDE0c2RfbWFzayAoIChfX3YyZGYpIF9fQSwKICAgICAgICAgIChfX3YyZGYpIF9fQiwKICAgICAgICAgIChfX3YyZGYpIF9fVywKICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X3JjcDE0X3NkIChfX21tYXNrOCBfX1UsIF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikKewogcmV0dXJuIChfX20xMjhkKSBfX2J1aWx0aW5faWEzMl9yY3AxNHNkX21hc2sgKCAoX192MmRmKSBfX0EsCiAgICAgICAgICAoX192MmRmKSBfX0IsCiAgICAgICAgICAoX192MmRmKSBfbW1fc2V0emVyb19wZCAoKSwKICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2Zsb29yX3BzKF9fbTUxMiBfX0EpCnsKICByZXR1cm4gKF9fbTUxMikgX19idWlsdGluX2lhMzJfcm5kc2NhbGVwc19tYXNrICgoX192MTZzZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfRkxPT1IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpIF9fQSwgLTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19mbG9vcl9wcyAoX19tNTEyIF9fVywgX19tbWFzazE2IF9fVSwgX19tNTEyIF9fQSkKewogIHJldHVybiAoX19tNTEyKSBfX2J1aWx0aW5faWEzMl9ybmRzY2FsZXBzX21hc2sgKChfX3YxNnNmKSBfX0EsCiAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0ZMT09SLAogICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpIF9fVywgX19VLAogICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9mbG9vcl9wZChfX201MTJkIF9fQSkKewogIHJldHVybiAoX19tNTEyZCkgX19idWlsdGluX2lhMzJfcm5kc2NhbGVwZF9tYXNrICgoX192OGRmKSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfRkxPT1IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpIF9fQSwgLTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2Zsb29yX3BkIChfX201MTJkIF9fVywgX19tbWFzazggX19VLCBfX201MTJkIF9fQSkKewogIHJldHVybiAoX19tNTEyZCkgX19idWlsdGluX2lhMzJfcm5kc2NhbGVwZF9tYXNrICgoX192OGRmKSBfX0EsCiAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0ZMT09SLAogICAgICAgICAgICAgICAgKF9fdjhkZikgX19XLCBfX1UsCiAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTIgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2NlaWxfcHMgKF9fbTUxMiBfX1csIF9fbW1hc2sxNiBfX1UsIF9fbTUxMiBfX0EpCnsKICByZXR1cm4gKF9fbTUxMikgX19idWlsdGluX2lhMzJfcm5kc2NhbGVwc19tYXNrICgoX192MTZzZikgX19BLAogICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DRUlMLAogICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpIF9fVywgX19VLAogICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2NlaWxfcHMoX19tNTEyIF9fQSkKewogIHJldHVybiAoX19tNTEyKSBfX2J1aWx0aW5faWEzMl9ybmRzY2FsZXBzX21hc2sgKChfX3YxNnNmKSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DRUlMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKSBfX0EsIC0xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZSBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfY2VpbF9wZChfX201MTJkIF9fQSkKewogIHJldHVybiAoX19tNTEyZCkgX19idWlsdGluX2lhMzJfcm5kc2NhbGVwZF9tYXNrICgoX192OGRmKSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ0VJTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikgX19BLCAtMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfY2VpbF9wZCAoX19tNTEyZCBfX1csIF9fbW1hc2s4IF9fVSwgX19tNTEyZCBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmQpIF9fYnVpbHRpbl9pYTMyX3JuZHNjYWxlcGRfbWFzayAoKF9fdjhkZikgX19BLAogICAgICAgICAgICAgICAgX01NX0ZST1VORF9DRUlMLAogICAgICAgICAgICAgICAgKF9fdjhkZikgX19XLCBfX1UsCiAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmUgX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2Fic19lcGk2NChfX201MTJpIF9fQSkKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9wYWJzcTUxMigoX192OGRpKV9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2Fic19lcGk2NCAoX19tNTEyaSBfX1csIF9fbW1hc2s4IF9fVSwgX19tNTEyaSBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV81MTIoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfYWJzX2VwaTY0KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2Fic19lcGk2NCAoX19tbWFzazggX19VLCBfX201MTJpIF9fQSkKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzUxMigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9hYnNfZXBpNjQoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKc3RhdGljIF9faW5saW5lIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9hYnNfZXBpMzIoX19tNTEyaSBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfcGFic2Q1MTIoKF9fdjE2c2kpIF9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2Fic19lcGkzMiAoX19tNTEyaSBfX1csIF9fbW1hc2sxNiBfX1UsIF9fbTUxMmkgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfNTEyKF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX21tNTEyX2Fic19lcGkzMihfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfYWJzX2VwaTMyIChfX21tYXNrMTYgX19VLCBfX201MTJpIF9fQSkKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzUxMihfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9hYnNfZXBpMzIoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfYWRkX3NzKF9fbTEyOCBfX1csIF9fbW1hc2s4IF9fVSxfX20xMjggX19BLCBfX20xMjggX19CKSB7CiAgX19BID0gX21tX2FkZF9zcyhfX0EsIF9fQik7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHNzXzEyOChfX1UsIF9fQSwgX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfYWRkX3NzKF9fbW1hc2s4IF9fVSxfX20xMjggX19BLCBfX20xMjggX19CKSB7CiAgX19BID0gX21tX2FkZF9zcyhfX0EsIF9fQik7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHNzXzEyOChfX1UsIF9fQSwgX21tX3NldHplcm9fcHMoKSk7Cn0KCiNkZWZpbmUgX21tX2FkZF9yb3VuZF9zcyhBLCBCLCBSKSBcCiAgKChfX20xMjgpX19idWlsdGluX2lhMzJfYWRkc3Nfcm91bmRfbWFzaygoX192NHNmKShfX20xMjgpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9tbV9zZXR6ZXJvX3BzKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSwgKGludCkoUikpKQoKI2RlZmluZSBfbW1fbWFza19hZGRfcm91bmRfc3MoVywgVSwgQSwgQiwgUikgXAogICgoX19tMTI4KV9fYnVpbHRpbl9pYTMyX2FkZHNzX3JvdW5kX21hc2soKF9fdjRzZikoX19tMTI4KShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikoX19tMTI4KShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikoX19tMTI4KShXKSwgKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoUikpKQoKI2RlZmluZSBfbW1fbWFza3pfYWRkX3JvdW5kX3NzKFUsIEEsIEIsIFIpIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl9hZGRzc19yb3VuZF9tYXNrKChfX3Y0c2YpKF9fbTEyOCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX3NldHplcm9fcHMoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfYWRkX3NkKF9fbTEyOGQgX19XLCBfX21tYXNrOCBfX1UsX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKSB7CiAgX19BID0gX21tX2FkZF9zZChfX0EsIF9fQik7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHNkXzEyOChfX1UsIF9fQSwgX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2FkZF9zZChfX21tYXNrOCBfX1UsX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKSB7CiAgX19BID0gX21tX2FkZF9zZChfX0EsIF9fQik7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHNkXzEyOChfX1UsIF9fQSwgX21tX3NldHplcm9fcGQoKSk7Cn0KI2RlZmluZSBfbW1fYWRkX3JvdW5kX3NkKEEsIEIsIFIpIFwKICAoKF9fbTEyOGQpX19idWlsdGluX2lhMzJfYWRkc2Rfcm91bmRfbWFzaygoX192MmRmKShfX20xMjhkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfbW1fc2V0emVyb19wZCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbV9tYXNrX2FkZF9yb3VuZF9zZChXLCBVLCBBLCBCLCBSKSBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2FkZHNkX3JvdW5kX21hc2soKF9fdjJkZikoX19tMTI4ZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKFcpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW1fbWFza3pfYWRkX3JvdW5kX3NkKFUsIEEsIEIsIFIpIFwKICAoKF9fbTEyOGQpX19idWlsdGluX2lhMzJfYWRkc2Rfcm91bmRfbWFzaygoX192MmRmKShfX20xMjhkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfbW1fc2V0emVyb19wZCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfYWRkX3BkKF9fbTUxMmQgX19XLCBfX21tYXNrOCBfX1UsIF9fbTUxMmQgX19BLCBfX201MTJkIF9fQikgewogIHJldHVybiAoX19tNTEyZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF81MTIoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX2FkZF9wZChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9hZGRfcGQoX19tbWFzazggX19VLCBfX201MTJkIF9fQSwgX19tNTEyZCBfX0IpIHsKICByZXR1cm4gKF9fbTUxMmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfNTEyKChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl9hZGRfcGQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfbW01MTJfc2V0emVyb19wZCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19hZGRfcHMoX19tNTEyIF9fVywgX19tbWFzazE2IF9fVSwgX19tNTEyIF9fQSwgX19tNTEyIF9fQikgewogIHJldHVybiAoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzUxMigoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX21tNTEyX2FkZF9wcyhfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2FkZF9wcyhfX21tYXNrMTYgX19VLCBfX201MTIgX19BLCBfX201MTIgX19CKSB7CiAgcmV0dXJuIChfX201MTIpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfNTEyKChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfYWRkX3BzKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX21tNTEyX3NldHplcm9fcHMoKSk7Cn0KCiNkZWZpbmUgX21tNTEyX2FkZF9yb3VuZF9wZChBLCBCLCBSKSBcCiAgKChfX201MTJkKV9fYnVpbHRpbl9pYTMyX2FkZHBkNTEyKChfX3Y4ZGYpKF9fbTUxMmQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpKF9fbTUxMmQpKEIpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX2FkZF9yb3VuZF9wZChXLCBVLCBBLCBCLCBSKSBcCiAgKChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzUxMigoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfbW01MTJfYWRkX3JvdW5kX3BkKChBKSwgKEIpLCAoUikpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikoX19tNTEyZCkoVykpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfYWRkX3JvdW5kX3BkKFUsIEEsIEIsIFIpIFwKICAoKF9fbTUxMmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfNTEyKChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl9hZGRfcm91bmRfcGQoKEEpLCAoQiksIChSKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl9zZXR6ZXJvX3BkKCkpKQoKI2RlZmluZSBfbW01MTJfYWRkX3JvdW5kX3BzKEEsIEIsIFIpIFwKICAoKF9fbTUxMilfX2J1aWx0aW5faWEzMl9hZGRwczUxMigoX192MTZzZikoX19tNTEyKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKShfX201MTIpKEIpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX2FkZF9yb3VuZF9wcyhXLCBVLCBBLCBCLCBSKSBcCiAgKChfX201MTIpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfNTEyKChfX21tYXNrMTYpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfYWRkX3JvdW5kX3BzKChBKSwgKEIpLCAoUikpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikoX19tNTEyKShXKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9hZGRfcm91bmRfcHMoVSwgQSwgQiwgUikgXAogICgoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzUxMigoX19tbWFzazE2KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX21tNTEyX2FkZF9yb3VuZF9wcygoQSksIChCKSwgKFIpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX21tNTEyX3NldHplcm9fcHMoKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3N1Yl9zcyhfX20xMjggX19XLCBfX21tYXNrOCBfX1UsX19tMTI4IF9fQSwgX19tMTI4IF9fQikgewogIF9fQSA9IF9tbV9zdWJfc3MoX19BLCBfX0IpOwogIHJldHVybiBfX2J1aWx0aW5faWEzMl9zZWxlY3Rzc18xMjgoX19VLCBfX0EsIF9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X3N1Yl9zcyhfX21tYXNrOCBfX1UsX19tMTI4IF9fQSwgX19tMTI4IF9fQikgewogIF9fQSA9IF9tbV9zdWJfc3MoX19BLCBfX0IpOwogIHJldHVybiBfX2J1aWx0aW5faWEzMl9zZWxlY3Rzc18xMjgoX19VLCBfX0EsIF9tbV9zZXR6ZXJvX3BzKCkpOwp9CiNkZWZpbmUgX21tX3N1Yl9yb3VuZF9zcyhBLCBCLCBSKSBcCiAgKChfX20xMjgpX19idWlsdGluX2lhMzJfc3Vic3Nfcm91bmRfbWFzaygoX192NHNmKShfX20xMjgpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9tbV9zZXR6ZXJvX3BzKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSwgKGludCkoUikpKQoKI2RlZmluZSBfbW1fbWFza19zdWJfcm91bmRfc3MoVywgVSwgQSwgQiwgUikgXAogICgoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3N1YnNzX3JvdW5kX21hc2soKF9fdjRzZikoX19tMTI4KShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikoX19tMTI4KShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikoX19tMTI4KShXKSwgKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoUikpKQoKI2RlZmluZSBfbW1fbWFza3pfc3ViX3JvdW5kX3NzKFUsIEEsIEIsIFIpIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl9zdWJzc19yb3VuZF9tYXNrKChfX3Y0c2YpKF9fbTEyOCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX3NldHplcm9fcHMoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfc3ViX3NkKF9fbTEyOGQgX19XLCBfX21tYXNrOCBfX1UsX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKSB7CiAgX19BID0gX21tX3N1Yl9zZChfX0EsIF9fQik7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHNkXzEyOChfX1UsIF9fQSwgX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X3N1Yl9zZChfX21tYXNrOCBfX1UsX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKSB7CiAgX19BID0gX21tX3N1Yl9zZChfX0EsIF9fQik7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHNkXzEyOChfX1UsIF9fQSwgX21tX3NldHplcm9fcGQoKSk7Cn0KCiNkZWZpbmUgX21tX3N1Yl9yb3VuZF9zZChBLCBCLCBSKSBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3N1YnNkX3JvdW5kX21hc2soKF9fdjJkZikoX19tMTI4ZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX3NldHplcm9fcGQoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSwgKGludCkoUikpKQoKI2RlZmluZSBfbW1fbWFza19zdWJfcm91bmRfc2QoVywgVSwgQSwgQiwgUikgXAogICgoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9zdWJzZF9yb3VuZF9tYXNrKChfX3YyZGYpKF9fbTEyOGQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikoX19tMTI4ZCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShXKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX21hc2t6X3N1Yl9yb3VuZF9zZChVLCBBLCBCLCBSKSBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3N1YnNkX3JvdW5kX21hc2soKF9fdjJkZikoX19tMTI4ZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX3NldHplcm9fcGQoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX3N1Yl9wZChfX201MTJkIF9fVywgX19tbWFzazggX19VLCBfX201MTJkIF9fQSwgX19tNTEyZCBfX0IpIHsKICByZXR1cm4gKF9fbTUxMmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfNTEyKChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl9zdWJfcGQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfc3ViX3BkKF9fbW1hc2s4IF9fVSwgX19tNTEyZCBfX0EsIF9fbTUxMmQgX19CKSB7CiAgcmV0dXJuIChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzUxMigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfbW01MTJfc3ViX3BkKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX3NldHplcm9fcGQoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfc3ViX3BzKF9fbTUxMiBfX1csIF9fbW1hc2sxNiBfX1UsIF9fbTUxMiBfX0EsIF9fbTUxMiBfX0IpIHsKICByZXR1cm4gKF9fbTUxMilfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc181MTIoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl9zdWJfcHMoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTIgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9zdWJfcHMoX19tbWFzazE2IF9fVSwgX19tNTEyIF9fQSwgX19tNTEyIF9fQikgewogIHJldHVybiAoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzUxMigoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX21tNTEyX3N1Yl9wcyhfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl9zZXR6ZXJvX3BzKCkpOwp9CgojZGVmaW5lIF9tbTUxMl9zdWJfcm91bmRfcGQoQSwgQiwgUikgXAogICgoX19tNTEyZClfX2J1aWx0aW5faWEzMl9zdWJwZDUxMigoX192OGRmKShfX201MTJkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKShfX201MTJkKShCKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza19zdWJfcm91bmRfcGQoVywgVSwgQSwgQiwgUikgXAogICgoX19tNTEyZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF81MTIoKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX3N1Yl9yb3VuZF9wZCgoQSksIChCKSwgKFIpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpKF9fbTUxMmQpKFcpKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X3N1Yl9yb3VuZF9wZChVLCBBLCBCLCBSKSBcCiAgKChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzUxMigoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfbW01MTJfc3ViX3JvdW5kX3BkKChBKSwgKEIpLCAoUikpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfbW01MTJfc2V0emVyb19wZCgpKSkKCiNkZWZpbmUgX21tNTEyX3N1Yl9yb3VuZF9wcyhBLCBCLCBSKSBcCiAgKChfX201MTIpX19idWlsdGluX2lhMzJfc3VicHM1MTIoKF9fdjE2c2YpKF9fbTUxMikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikoX19tNTEyKShCKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza19zdWJfcm91bmRfcHMoVywgVSwgQSwgQiwgUikgXAogICgoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzUxMigoX19tbWFzazE2KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX21tNTEyX3N1Yl9yb3VuZF9wcygoQSksIChCKSwgKFIpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpKF9fbTUxMikoVykpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfc3ViX3JvdW5kX3BzKFUsIEEsIEIsIFIpIFwKICAoKF9fbTUxMilfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc181MTIoKF9fbW1hc2sxNikoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl9zdWJfcm91bmRfcHMoKEEpLCAoQiksIChSKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl9zZXR6ZXJvX3BzKCkpKQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19tdWxfc3MoX19tMTI4IF9fVywgX19tbWFzazggX19VLF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpIHsKICBfX0EgPSBfbW1fbXVsX3NzKF9fQSwgX19CKTsKICByZXR1cm4gX19idWlsdGluX2lhMzJfc2VsZWN0c3NfMTI4KF9fVSwgX19BLCBfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9tdWxfc3MoX19tbWFzazggX19VLF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpIHsKICBfX0EgPSBfbW1fbXVsX3NzKF9fQSwgX19CKTsKICByZXR1cm4gX19idWlsdGluX2lhMzJfc2VsZWN0c3NfMTI4KF9fVSwgX19BLCBfbW1fc2V0emVyb19wcygpKTsKfQojZGVmaW5lIF9tbV9tdWxfcm91bmRfc3MoQSwgQiwgUikgXAogICgoX19tMTI4KV9fYnVpbHRpbl9pYTMyX211bHNzX3JvdW5kX21hc2soKF9fdjRzZikoX19tMTI4KShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikoX19tMTI4KShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfbW1fc2V0emVyb19wcygpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEsIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX21hc2tfbXVsX3JvdW5kX3NzKFcsIFUsIEEsIEIsIFIpIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl9tdWxzc19yb3VuZF9tYXNrKChfX3Y0c2YpKF9fbTEyOCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoVyksIChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX21hc2t6X211bF9yb3VuZF9zcyhVLCBBLCBCLCBSKSBcCiAgKChfX20xMjgpX19idWlsdGluX2lhMzJfbXVsc3Nfcm91bmRfbWFzaygoX192NHNmKShfX20xMjgpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9tbV9zZXR6ZXJvX3BzKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX211bF9zZChfX20xMjhkIF9fVywgX19tbWFzazggX19VLF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikgewogIF9fQSA9IF9tbV9tdWxfc2QoX19BLCBfX0IpOwogIHJldHVybiBfX2J1aWx0aW5faWEzMl9zZWxlY3RzZF8xMjgoX19VLCBfX0EsIF9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9tdWxfc2QoX19tbWFzazggX19VLF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikgewogIF9fQSA9IF9tbV9tdWxfc2QoX19BLCBfX0IpOwogIHJldHVybiBfX2J1aWx0aW5faWEzMl9zZWxlY3RzZF8xMjgoX19VLCBfX0EsIF9tbV9zZXR6ZXJvX3BkKCkpOwp9CgojZGVmaW5lIF9tbV9tdWxfcm91bmRfc2QoQSwgQiwgUikgXAogICgoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9tdWxzZF9yb3VuZF9tYXNrKChfX3YyZGYpKF9fbTEyOGQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikoX19tMTI4ZCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9tbV9zZXR6ZXJvX3BkKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEsIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX21hc2tfbXVsX3JvdW5kX3NkKFcsIFUsIEEsIEIsIFIpIFwKICAoKF9fbTEyOGQpX19idWlsdGluX2lhMzJfbXVsc2Rfcm91bmRfbWFzaygoX192MmRmKShfX20xMjhkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikoX19tMTI4ZCkoVyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbV9tYXNrel9tdWxfcm91bmRfc2QoVSwgQSwgQiwgUikgXAogICgoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9tdWxzZF9yb3VuZF9tYXNrKChfX3YyZGYpKF9fbTEyOGQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikoX19tMTI4ZCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9tbV9zZXR6ZXJvX3BkKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpLCAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19tdWxfcGQoX19tNTEyZCBfX1csIF9fbW1hc2s4IF9fVSwgX19tNTEyZCBfX0EsIF9fbTUxMmQgX19CKSB7CiAgcmV0dXJuIChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzUxMigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfbW01MTJfbXVsX3BkKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X211bF9wZChfX21tYXNrOCBfX1UsIF9fbTUxMmQgX19BLCBfX201MTJkIF9fQikgewogIHJldHVybiAoX19tNTEyZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF81MTIoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX211bF9wZChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl9zZXR6ZXJvX3BkKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTIgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX211bF9wcyhfX201MTIgX19XLCBfX21tYXNrMTYgX19VLCBfX201MTIgX19BLCBfX201MTIgX19CKSB7CiAgcmV0dXJuIChfX201MTIpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfNTEyKChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfbXVsX3BzKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfbXVsX3BzKF9fbW1hc2sxNiBfX1UsIF9fbTUxMiBfX0EsIF9fbTUxMiBfX0IpIHsKICByZXR1cm4gKF9fbTUxMilfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc181MTIoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl9tdWxfcHMoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfc2V0emVyb19wcygpKTsKfQoKI2RlZmluZSBfbW01MTJfbXVsX3JvdW5kX3BkKEEsIEIsIFIpIFwKICAoKF9fbTUxMmQpX19idWlsdGluX2lhMzJfbXVscGQ1MTIoKF9fdjhkZikoX19tNTEyZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikoX19tNTEyZCkoQiksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfbXVsX3JvdW5kX3BkKFcsIFUsIEEsIEIsIFIpIFwKICAoKF9fbTUxMmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfNTEyKChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl9tdWxfcm91bmRfcGQoKEEpLCAoQiksIChSKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKShfX201MTJkKShXKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9tdWxfcm91bmRfcGQoVSwgQSwgQiwgUikgXAogICgoX19tNTEyZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF81MTIoKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX211bF9yb3VuZF9wZCgoQSksIChCKSwgKFIpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX3NldHplcm9fcGQoKSkpCgojZGVmaW5lIF9tbTUxMl9tdWxfcm91bmRfcHMoQSwgQiwgUikgXAogICgoX19tNTEyKV9fYnVpbHRpbl9pYTMyX211bHBzNTEyKChfX3YxNnNmKShfX201MTIpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikoX19tNTEyKShCKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza19tdWxfcm91bmRfcHMoVywgVSwgQSwgQiwgUikgXAogICgoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzUxMigoX19tbWFzazE2KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX21tNTEyX211bF9yb3VuZF9wcygoQSksIChCKSwgKFIpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpKF9fbTUxMikoVykpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfbXVsX3JvdW5kX3BzKFUsIEEsIEIsIFIpIFwKICAoKF9fbTUxMilfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc181MTIoKF9fbW1hc2sxNikoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl9tdWxfcm91bmRfcHMoKEEpLCAoQiksIChSKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl9zZXR6ZXJvX3BzKCkpKQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19kaXZfc3MoX19tMTI4IF9fVywgX19tbWFzazggX19VLF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpIHsKICBfX0EgPSBfbW1fZGl2X3NzKF9fQSwgX19CKTsKICByZXR1cm4gX19idWlsdGluX2lhMzJfc2VsZWN0c3NfMTI4KF9fVSwgX19BLCBfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9kaXZfc3MoX19tbWFzazggX19VLF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpIHsKICBfX0EgPSBfbW1fZGl2X3NzKF9fQSwgX19CKTsKICByZXR1cm4gX19idWlsdGluX2lhMzJfc2VsZWN0c3NfMTI4KF9fVSwgX19BLCBfbW1fc2V0emVyb19wcygpKTsKfQoKI2RlZmluZSBfbW1fZGl2X3JvdW5kX3NzKEEsIEIsIFIpIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl9kaXZzc19yb3VuZF9tYXNrKChfX3Y0c2YpKF9fbTEyOCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX3NldHplcm9fcHMoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbV9tYXNrX2Rpdl9yb3VuZF9zcyhXLCBVLCBBLCBCLCBSKSBcCiAgKChfX20xMjgpX19idWlsdGluX2lhMzJfZGl2c3Nfcm91bmRfbWFzaygoX192NHNmKShfX20xMjgpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKFcpLCAoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShSKSkpCgojZGVmaW5lIF9tbV9tYXNrel9kaXZfcm91bmRfc3MoVSwgQSwgQiwgUikgXAogICgoX19tMTI4KV9fYnVpbHRpbl9pYTMyX2RpdnNzX3JvdW5kX21hc2soKF9fdjRzZikoX19tMTI4KShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikoX19tMTI4KShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfbW1fc2V0emVyb19wcygpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpLCAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19kaXZfc2QoX19tMTI4ZCBfX1csIF9fbW1hc2s4IF9fVSxfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpIHsKICBfX0EgPSBfbW1fZGl2X3NkKF9fQSwgX19CKTsKICByZXR1cm4gX19idWlsdGluX2lhMzJfc2VsZWN0c2RfMTI4KF9fVSwgX19BLCBfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfZGl2X3NkKF9fbW1hc2s4IF9fVSxfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpIHsKICBfX0EgPSBfbW1fZGl2X3NkKF9fQSwgX19CKTsKICByZXR1cm4gX19idWlsdGluX2lhMzJfc2VsZWN0c2RfMTI4KF9fVSwgX19BLCBfbW1fc2V0emVyb19wZCgpKTsKfQoKI2RlZmluZSBfbW1fZGl2X3JvdW5kX3NkKEEsIEIsIFIpIFwKICAoKF9fbTEyOGQpX19idWlsdGluX2lhMzJfZGl2c2Rfcm91bmRfbWFzaygoX192MmRmKShfX20xMjhkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfbW1fc2V0emVyb19wZCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbV9tYXNrX2Rpdl9yb3VuZF9zZChXLCBVLCBBLCBCLCBSKSBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2RpdnNkX3JvdW5kX21hc2soKF9fdjJkZikoX19tMTI4ZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKFcpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW1fbWFza3pfZGl2X3JvdW5kX3NkKFUsIEEsIEIsIFIpIFwKICAoKF9fbTEyOGQpX19idWlsdGluX2lhMzJfZGl2c2Rfcm91bmRfbWFzaygoX192MmRmKShfX20xMjhkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfbW1fc2V0emVyb19wZCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9kaXZfcGQoX19tNTEyZCBfX2EsIF9fbTUxMmQgX19iKQp7CiAgcmV0dXJuIChfX201MTJkKSgoX192OGRmKV9fYS8oX192OGRmKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2Rpdl9wZChfX201MTJkIF9fVywgX19tbWFzazggX19VLCBfX201MTJkIF9fQSwgX19tNTEyZCBfX0IpIHsKICByZXR1cm4gKF9fbTUxMmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfNTEyKChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl9kaXZfcGQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfZGl2X3BkKF9fbW1hc2s4IF9fVSwgX19tNTEyZCBfX0EsIF9fbTUxMmQgX19CKSB7CiAgcmV0dXJuIChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzUxMigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfbW01MTJfZGl2X3BkKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX3NldHplcm9fcGQoKSk7Cn0KCnN0YXRpYyBfX2lubGluZSBfX201MTIgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9kaXZfcHMoX19tNTEyIF9fYSwgX19tNTEyIF9fYikKewogIHJldHVybiAoX19tNTEyKSgoX192MTZzZilfX2EvKF9fdjE2c2YpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19kaXZfcHMoX19tNTEyIF9fVywgX19tbWFzazE2IF9fVSwgX19tNTEyIF9fQSwgX19tNTEyIF9fQikgewogIHJldHVybiAoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzUxMigoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX21tNTEyX2Rpdl9wcyhfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2Rpdl9wcyhfX21tYXNrMTYgX19VLCBfX201MTIgX19BLCBfX201MTIgX19CKSB7CiAgcmV0dXJuIChfX201MTIpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfNTEyKChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfZGl2X3BzKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX21tNTEyX3NldHplcm9fcHMoKSk7Cn0KCiNkZWZpbmUgX21tNTEyX2Rpdl9yb3VuZF9wZChBLCBCLCBSKSBcCiAgKChfX201MTJkKV9fYnVpbHRpbl9pYTMyX2RpdnBkNTEyKChfX3Y4ZGYpKF9fbTUxMmQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpKF9fbTUxMmQpKEIpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX2Rpdl9yb3VuZF9wZChXLCBVLCBBLCBCLCBSKSBcCiAgKChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzUxMigoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfbW01MTJfZGl2X3JvdW5kX3BkKChBKSwgKEIpLCAoUikpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikoX19tNTEyZCkoVykpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfZGl2X3JvdW5kX3BkKFUsIEEsIEIsIFIpIFwKICAoKF9fbTUxMmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfNTEyKChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl9kaXZfcm91bmRfcGQoKEEpLCAoQiksIChSKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl9zZXR6ZXJvX3BkKCkpKQoKI2RlZmluZSBfbW01MTJfZGl2X3JvdW5kX3BzKEEsIEIsIFIpIFwKICAoKF9fbTUxMilfX2J1aWx0aW5faWEzMl9kaXZwczUxMigoX192MTZzZikoX19tNTEyKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKShfX201MTIpKEIpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX2Rpdl9yb3VuZF9wcyhXLCBVLCBBLCBCLCBSKSBcCiAgKChfX201MTIpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfNTEyKChfX21tYXNrMTYpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfZGl2X3JvdW5kX3BzKChBKSwgKEIpLCAoUikpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikoX19tNTEyKShXKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9kaXZfcm91bmRfcHMoVSwgQSwgQiwgUikgXAogICgoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzUxMigoX19tbWFzazE2KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX21tNTEyX2Rpdl9yb3VuZF9wcygoQSksIChCKSwgKFIpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX21tNTEyX3NldHplcm9fcHMoKSkpCgojZGVmaW5lIF9tbTUxMl9yb3VuZHNjYWxlX3BzKEEsIEIpIFwKICAoKF9fbTUxMilfX2J1aWx0aW5faWEzMl9ybmRzY2FsZXBzX21hc2soKF9fdjE2c2YpKF9fbTUxMikoQSksIChpbnQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl91bmRlZmluZWRfcHMoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KS0xLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTikpCgojZGVmaW5lIF9tbTUxMl9tYXNrX3JvdW5kc2NhbGVfcHMoQSwgQiwgQywgaW1tKSBcCiAgKChfX201MTIpX19idWlsdGluX2lhMzJfcm5kc2NhbGVwc19tYXNrKChfX3YxNnNmKShfX201MTIpKEMpLCAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpKF9fbTUxMikoQSksIChfX21tYXNrMTYpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X3JvdW5kc2NhbGVfcHMoQSwgQiwgaW1tKSBcCiAgKChfX201MTIpX19idWlsdGluX2lhMzJfcm5kc2NhbGVwc19tYXNrKChfX3YxNnNmKShfX201MTIpKEIpLCAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl9zZXR6ZXJvX3BzKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfcm91bmRzY2FsZV9yb3VuZF9wcyhBLCBCLCBDLCBpbW0sIFIpIFwKICAoKF9fbTUxMilfX2J1aWx0aW5faWEzMl9ybmRzY2FsZXBzX21hc2soKF9fdjE2c2YpKF9fbTUxMikoQyksIChpbnQpKGltbSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikoX19tNTEyKShBKSwgKF9fbW1hc2sxNikoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9yb3VuZHNjYWxlX3JvdW5kX3BzKEEsIEIsIGltbSwgUikgXAogICgoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3JuZHNjYWxlcHNfbWFzaygoX192MTZzZikoX19tNTEyKShCKSwgKGludCkoaW1tKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfc2V0emVyb19wcygpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpKEEpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9yb3VuZHNjYWxlX3JvdW5kX3BzKEEsIGltbSwgUikgXAogICgoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3JuZHNjYWxlcHNfbWFzaygoX192MTZzZikoX19tNTEyKShBKSwgKGludCkoaW1tKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfdW5kZWZpbmVkX3BzKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNiktMSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfcm91bmRzY2FsZV9wZChBLCBCKSBcCiAgKChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3JuZHNjYWxlcGRfbWFzaygoX192OGRmKShfX201MTJkKShBKSwgKGludCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX3VuZGVmaW5lZF9wZCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTikpCgojZGVmaW5lIF9tbTUxMl9tYXNrX3JvdW5kc2NhbGVfcGQoQSwgQiwgQywgaW1tKSBcCiAgKChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3JuZHNjYWxlcGRfbWFzaygoX192OGRmKShfX201MTJkKShDKSwgKGludCkoaW1tKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKShfX201MTJkKShBKSwgKF9fbW1hc2s4KShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pKQoKI2RlZmluZSBfbW01MTJfbWFza3pfcm91bmRzY2FsZV9wZChBLCBCLCBpbW0pIFwKICAoKF9fbTUxMmQpX19idWlsdGluX2lhMzJfcm5kc2NhbGVwZF9tYXNrKChfX3Y4ZGYpKF9fbTUxMmQpKEIpLCAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl9zZXR6ZXJvX3BkKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTikpCgojZGVmaW5lIF9tbTUxMl9tYXNrX3JvdW5kc2NhbGVfcm91bmRfcGQoQSwgQiwgQywgaW1tLCBSKSBcCiAgKChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3JuZHNjYWxlcGRfbWFzaygoX192OGRmKShfX201MTJkKShDKSwgKGludCkoaW1tKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKShfX201MTJkKShBKSwgKF9fbW1hc2s4KShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9yb3VuZHNjYWxlX3JvdW5kX3BkKEEsIEIsIGltbSwgUikgXAogICgoX19tNTEyZClfX2J1aWx0aW5faWEzMl9ybmRzY2FsZXBkX21hc2soKF9fdjhkZikoX19tNTEyZCkoQiksIChpbnQpKGltbSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX3NldHplcm9fcGQoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShBKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfcm91bmRzY2FsZV9yb3VuZF9wZChBLCBpbW0sIFIpIFwKICAoKF9fbTUxMmQpX19idWlsdGluX2lhMzJfcm5kc2NhbGVwZF9tYXNrKChfX3Y4ZGYpKF9fbTUxMmQpKEEpLCAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl91bmRlZmluZWRfcGQoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9mbWFkZF9yb3VuZF9wZChBLCBCLCBDLCBSKSBcCiAgKChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBkNTEyX21hc2soKF9fdjhkZikoX19tNTEyZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKShfX201MTJkKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpKF9fbTUxMmQpKEMpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xLCAoaW50KShSKSkpCgoKI2RlZmluZSBfbW01MTJfbWFza19mbWFkZF9yb3VuZF9wZChBLCBVLCBCLCBDLCBSKSBcCiAgKChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBkNTEyX21hc2soKF9fdjhkZikoX19tNTEyZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKShfX201MTJkKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpKF9fbTUxMmQpKEMpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKCiNkZWZpbmUgX21tNTEyX21hc2szX2ZtYWRkX3JvdW5kX3BkKEEsIEIsIEMsIFUsIFIpIFwKICAoKF9fbTUxMmQpX19idWlsdGluX2lhMzJfdmZtYWRkcGQ1MTJfbWFzazMoKF9fdjhkZikoX19tNTEyZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikoX19tNTEyZCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikoX19tNTEyZCkoQyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKCiNkZWZpbmUgX21tNTEyX21hc2t6X2ZtYWRkX3JvdW5kX3BkKFUsIEEsIEIsIEMsIFIpIFwKICAoKF9fbTUxMmQpX19idWlsdGluX2lhMzJfdmZtYWRkcGQ1MTJfbWFza3ooKF9fdjhkZikoX19tNTEyZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikoX19tNTEyZCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikoX19tNTEyZCkoQyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKCiNkZWZpbmUgX21tNTEyX2Ztc3ViX3JvdW5kX3BkKEEsIEIsIEMsIFIpIFwKICAoKF9fbTUxMmQpX19idWlsdGluX2lhMzJfdmZtYWRkcGQ1MTJfbWFzaygoX192OGRmKShfX201MTJkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpKF9fbTUxMmQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3Y4ZGYpKF9fbTUxMmQpKEMpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xLCAoaW50KShSKSkpCgoKI2RlZmluZSBfbW01MTJfbWFza19mbXN1Yl9yb3VuZF9wZChBLCBVLCBCLCBDLCBSKSBcCiAgKChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBkNTEyX21hc2soKF9fdjhkZikoX19tNTEyZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKShfX201MTJkKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192OGRmKShfX201MTJkKShDKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCgojZGVmaW5lIF9tbTUxMl9tYXNrel9mbXN1Yl9yb3VuZF9wZChVLCBBLCBCLCBDLCBSKSBcCiAgKChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBkNTEyX21hc2t6KChfX3Y4ZGYpKF9fbTUxMmQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpKF9fbTUxMmQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192OGRmKShfX201MTJkKShDKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpLCAoaW50KShSKSkpCgoKI2RlZmluZSBfbW01MTJfZm5tYWRkX3JvdW5kX3BkKEEsIEIsIEMsIFIpIFwKICAoKF9fbTUxMmQpX19idWlsdGluX2lhMzJfdmZtYWRkcGQ1MTJfbWFzaygtKF9fdjhkZikoX19tNTEyZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKShfX201MTJkKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpKF9fbTUxMmQpKEMpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xLCAoaW50KShSKSkpCgoKI2RlZmluZSBfbW01MTJfbWFzazNfZm5tYWRkX3JvdW5kX3BkKEEsIEIsIEMsIFUsIFIpIFwKICAoKF9fbTUxMmQpX19idWlsdGluX2lhMzJfdmZtYWRkcGQ1MTJfbWFzazMoLShfX3Y4ZGYpKF9fbTUxMmQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpKF9fbTUxMmQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpKF9fbTUxMmQpKEMpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCgojZGVmaW5lIF9tbTUxMl9tYXNrel9mbm1hZGRfcm91bmRfcGQoVSwgQSwgQiwgQywgUikgXAogICgoX19tNTEyZClfX2J1aWx0aW5faWEzMl92Zm1hZGRwZDUxMl9tYXNreigtKF9fdjhkZikoX19tNTEyZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikoX19tNTEyZCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikoX19tNTEyZCkoQyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKCiNkZWZpbmUgX21tNTEyX2ZubXN1Yl9yb3VuZF9wZChBLCBCLCBDLCBSKSBcCiAgKChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBkNTEyX21hc2soLShfX3Y4ZGYpKF9fbTUxMmQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikoX19tNTEyZCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjhkZikoX19tNTEyZCkoQyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEsIChpbnQpKFIpKSkKCgojZGVmaW5lIF9tbTUxMl9tYXNrel9mbm1zdWJfcm91bmRfcGQoVSwgQSwgQiwgQywgUikgXAogICgoX19tNTEyZClfX2J1aWx0aW5faWEzMl92Zm1hZGRwZDUxMl9tYXNreigtKF9fdjhkZikoX19tNTEyZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikoX19tNTEyZCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3Y4ZGYpKF9fbTUxMmQpKEMpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfZm1hZGRfcGQoX19tNTEyZCBfX0EsIF9fbTUxMmQgX19CLCBfX201MTJkIF9fQykKewogIHJldHVybiAoX19tNTEyZCkgX19idWlsdGluX2lhMzJfdmZtYWRkcGQ1MTJfbWFzayAoKF9fdjhkZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikgX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikgX19DLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSAtMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2ZtYWRkX3BkKF9fbTUxMmQgX19BLCBfX21tYXNrOCBfX1UsIF9fbTUxMmQgX19CLCBfX201MTJkIF9fQykKewogIHJldHVybiAoX19tNTEyZCkgX19idWlsdGluX2lhMzJfdmZtYWRkcGQ1MTJfbWFzayAoKF9fdjhkZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikgX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikgX19DLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFzazNfZm1hZGRfcGQoX19tNTEyZCBfX0EsIF9fbTUxMmQgX19CLCBfX201MTJkIF9fQywgX19tbWFzazggX19VKQp7CiAgcmV0dXJuIChfX201MTJkKSBfX2J1aWx0aW5faWEzMl92Zm1hZGRwZDUxMl9tYXNrMyAoKF9fdjhkZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKSBfX0MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2ZtYWRkX3BkKF9fbW1hc2s4IF9fVSwgX19tNTEyZCBfX0EsIF9fbTUxMmQgX19CLCBfX201MTJkIF9fQykKewogIHJldHVybiAoX19tNTEyZCkgX19idWlsdGluX2lhMzJfdmZtYWRkcGQ1MTJfbWFza3ogKChfX3Y4ZGYpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKSBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikgX19DLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9mbXN1Yl9wZChfX201MTJkIF9fQSwgX19tNTEyZCBfX0IsIF9fbTUxMmQgX19DKQp7CiAgcmV0dXJuIChfX201MTJkKSBfX2J1aWx0aW5faWEzMl92Zm1hZGRwZDUxMl9tYXNrICgoX192OGRmKSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKSBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjhkZikgX19DLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSAtMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2Ztc3ViX3BkKF9fbTUxMmQgX19BLCBfX21tYXNrOCBfX1UsIF9fbTUxMmQgX19CLCBfX201MTJkIF9fQykKewogIHJldHVybiAoX19tNTEyZCkgX19idWlsdGluX2lhMzJfdmZtYWRkcGQ1MTJfbWFzayAoKF9fdjhkZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikgX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3Y4ZGYpIF9fQywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2Ztc3ViX3BkKF9fbW1hc2s4IF9fVSwgX19tNTEyZCBfX0EsIF9fbTUxMmQgX19CLCBfX201MTJkIF9fQykKewogIHJldHVybiAoX19tNTEyZCkgX19idWlsdGluX2lhMzJfdmZtYWRkcGQ1MTJfbWFza3ogKChfX3Y4ZGYpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKSBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3Y4ZGYpIF9fQywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfZm5tYWRkX3BkKF9fbTUxMmQgX19BLCBfX201MTJkIF9fQiwgX19tNTEyZCBfX0MpCnsKICByZXR1cm4gKF9fbTUxMmQpIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBkNTEyX21hc2sgKChfX3Y4ZGYpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192OGRmKSBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKSBfX0MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpIC0xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2szX2ZubWFkZF9wZChfX201MTJkIF9fQSwgX19tNTEyZCBfX0IsIF9fbTUxMmQgX19DLCBfX21tYXNrOCBfX1UpCnsKICByZXR1cm4gKF9fbTUxMmQpIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBkNTEyX21hc2szICgtKF9fdjhkZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKSBfX0MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2ZubWFkZF9wZChfX21tYXNrOCBfX1UsIF9fbTUxMmQgX19BLCBfX201MTJkIF9fQiwgX19tNTEyZCBfX0MpCnsKICByZXR1cm4gKF9fbTUxMmQpIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBkNTEyX21hc2t6ICgtKF9fdjhkZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKSBfX0MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2ZubXN1Yl9wZChfX201MTJkIF9fQSwgX19tNTEyZCBfX0IsIF9fbTUxMmQgX19DKQp7CiAgcmV0dXJuIChfX201MTJkKSBfX2J1aWx0aW5faWEzMl92Zm1hZGRwZDUxMl9tYXNrICgoX192OGRmKSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjhkZikgX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3Y4ZGYpIF9fQywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkgLTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfZm5tc3ViX3BkKF9fbW1hc2s4IF9fVSwgX19tNTEyZCBfX0EsIF9fbTUxMmQgX19CLCBfX201MTJkIF9fQykKewogIHJldHVybiAoX19tNTEyZCkgX19idWlsdGluX2lhMzJfdmZtYWRkcGQ1MTJfbWFza3ogKC0oX192OGRmKSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikgX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192OGRmKSBfX0MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW01MTJfZm1hZGRfcm91bmRfcHMoQSwgQiwgQywgUikgXAogICgoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBzNTEyX21hc2soKF9fdjE2c2YpKF9fbTUxMikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKShfX201MTIpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikoX19tNTEyKShDKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNiktMSwgKGludCkoUikpKQoKCiNkZWZpbmUgX21tNTEyX21hc2tfZm1hZGRfcm91bmRfcHMoQSwgVSwgQiwgQywgUikgXAogICgoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBzNTEyX21hc2soKF9fdjE2c2YpKF9fbTUxMikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKShfX201MTIpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikoX19tNTEyKShDKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikoVSksIChpbnQpKFIpKSkKCgojZGVmaW5lIF9tbTUxMl9tYXNrM19mbWFkZF9yb3VuZF9wcyhBLCBCLCBDLCBVLCBSKSBcCiAgKChfX201MTIpX19idWlsdGluX2lhMzJfdmZtYWRkcHM1MTJfbWFzazMoKF9fdjE2c2YpKF9fbTUxMikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikoX19tNTEyKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKShfX201MTIpKEMpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikoVSksIChpbnQpKFIpKSkKCgojZGVmaW5lIF9tbTUxMl9tYXNrel9mbWFkZF9yb3VuZF9wcyhVLCBBLCBCLCBDLCBSKSBcCiAgKChfX201MTIpX19idWlsdGluX2lhMzJfdmZtYWRkcHM1MTJfbWFza3ooKF9fdjE2c2YpKF9fbTUxMikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikoX19tNTEyKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKShfX201MTIpKEMpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikoVSksIChpbnQpKFIpKSkKCgojZGVmaW5lIF9tbTUxMl9mbXN1Yl9yb3VuZF9wcyhBLCBCLCBDLCBSKSBcCiAgKChfX201MTIpX19idWlsdGluX2lhMzJfdmZtYWRkcHM1MTJfbWFzaygoX192MTZzZikoX19tNTEyKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpKF9fbTUxMikoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192MTZzZikoX19tNTEyKShDKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNiktMSwgKGludCkoUikpKQoKCiNkZWZpbmUgX21tNTEyX21hc2tfZm1zdWJfcm91bmRfcHMoQSwgVSwgQiwgQywgUikgXAogICgoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBzNTEyX21hc2soKF9fdjE2c2YpKF9fbTUxMikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKShfX201MTIpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjE2c2YpKF9fbTUxMikoQyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpKFUpLCAoaW50KShSKSkpCgoKI2RlZmluZSBfbW01MTJfbWFza3pfZm1zdWJfcm91bmRfcHMoVSwgQSwgQiwgQywgUikgXAogICgoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBzNTEyX21hc2t6KChfX3YxNnNmKShfX201MTIpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpKF9fbTUxMikoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjE2c2YpKF9fbTUxMikoQyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KShVKSwgKGludCkoUikpKQoKCiNkZWZpbmUgX21tNTEyX2ZubWFkZF9yb3VuZF9wcyhBLCBCLCBDLCBSKSBcCiAgKChfX201MTIpX19idWlsdGluX2lhMzJfdmZtYWRkcHM1MTJfbWFzaygoX192MTZzZikoX19tNTEyKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3YxNnNmKShfX201MTIpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikoX19tNTEyKShDKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNiktMSwgKGludCkoUikpKQoKCiNkZWZpbmUgX21tNTEyX21hc2szX2ZubWFkZF9yb3VuZF9wcyhBLCBCLCBDLCBVLCBSKSBcCiAgKChfX201MTIpX19idWlsdGluX2lhMzJfdmZtYWRkcHM1MTJfbWFzazMoLShfX3YxNnNmKShfX201MTIpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpKF9fbTUxMikoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikoX19tNTEyKShDKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpKFUpLCAoaW50KShSKSkpCgoKI2RlZmluZSBfbW01MTJfbWFza3pfZm5tYWRkX3JvdW5kX3BzKFUsIEEsIEIsIEMsIFIpIFwKICAoKF9fbTUxMilfX2J1aWx0aW5faWEzMl92Zm1hZGRwczUxMl9tYXNreigtKF9fdjE2c2YpKF9fbTUxMikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikoX19tNTEyKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKShfX201MTIpKEMpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikoVSksIChpbnQpKFIpKSkKCgojZGVmaW5lIF9tbTUxMl9mbm1zdWJfcm91bmRfcHMoQSwgQiwgQywgUikgXAogICgoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBzNTEyX21hc2soKF9fdjE2c2YpKF9fbTUxMikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192MTZzZikoX19tNTEyKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3YxNnNmKShfX201MTIpKEMpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KS0xLCAoaW50KShSKSkpCgoKI2RlZmluZSBfbW01MTJfbWFza3pfZm5tc3ViX3JvdW5kX3BzKFUsIEEsIEIsIEMsIFIpIFwKICAoKF9fbTUxMilfX2J1aWx0aW5faWEzMl92Zm1hZGRwczUxMl9tYXNreigtKF9fdjE2c2YpKF9fbTUxMikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikoX19tNTEyKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192MTZzZikoX19tNTEyKShDKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpKFUpLCAoaW50KShSKSkpCgoKc3RhdGljIF9faW5saW5lX18gX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfZm1hZGRfcHMoX19tNTEyIF9fQSwgX19tNTEyIF9fQiwgX19tNTEyIF9fQykKewogIHJldHVybiAoX19tNTEyKSBfX2J1aWx0aW5faWEzMl92Zm1hZGRwczUxMl9tYXNrICgoX192MTZzZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikgX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikgX19DLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KSAtMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19mbWFkZF9wcyhfX201MTIgX19BLCBfX21tYXNrMTYgX19VLCBfX201MTIgX19CLCBfX201MTIgX19DKQp7CiAgcmV0dXJuIChfX201MTIpIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBzNTEyX21hc2sgKChfX3YxNnNmKSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKSBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKSBfX0MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpIF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFzazNfZm1hZGRfcHMoX19tNTEyIF9fQSwgX19tNTEyIF9fQiwgX19tNTEyIF9fQywgX19tbWFzazE2IF9fVSkKewogIHJldHVybiAoX19tNTEyKSBfX2J1aWx0aW5faWEzMl92Zm1hZGRwczUxMl9tYXNrMyAoKF9fdjE2c2YpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKSBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikgX19DLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikgX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfZm1hZGRfcHMoX19tbWFzazE2IF9fVSwgX19tNTEyIF9fQSwgX19tNTEyIF9fQiwgX19tNTEyIF9fQykKewogIHJldHVybiAoX19tNTEyKSBfX2J1aWx0aW5faWEzMl92Zm1hZGRwczUxMl9tYXNreiAoKF9fdjE2c2YpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKSBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikgX19DLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikgX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfZm1zdWJfcHMoX19tNTEyIF9fQSwgX19tNTEyIF9fQiwgX19tNTEyIF9fQykKewogIHJldHVybiAoX19tNTEyKSBfX2J1aWx0aW5faWEzMl92Zm1hZGRwczUxMl9tYXNrICgoX192MTZzZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikgX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjE2c2YpIF9fQywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikgLTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfZm1zdWJfcHMoX19tNTEyIF9fQSwgX19tbWFzazE2IF9fVSwgX19tNTEyIF9fQiwgX19tNTEyIF9fQykKewogIHJldHVybiAoX19tNTEyKSBfX2J1aWx0aW5faWEzMl92Zm1hZGRwczUxMl9tYXNrICgoX192MTZzZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikgX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjE2c2YpIF9fQywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikgX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTIgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9mbXN1Yl9wcyhfX21tYXNrMTYgX19VLCBfX201MTIgX19BLCBfX201MTIgX19CLCBfX201MTIgX19DKQp7CiAgcmV0dXJuIChfX201MTIpIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBzNTEyX21hc2t6ICgoX192MTZzZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192MTZzZikgX19DLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikgX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfZm5tYWRkX3BzKF9fbTUxMiBfX0EsIF9fbTUxMiBfX0IsIF9fbTUxMiBfX0MpCnsKICByZXR1cm4gKF9fbTUxMikgX19idWlsdGluX2lhMzJfdmZtYWRkcHM1MTJfbWFzayAoKF9fdjE2c2YpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3YxNnNmKSBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKSBfX0MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpIC0xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTIgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrM19mbm1hZGRfcHMoX19tNTEyIF9fQSwgX19tNTEyIF9fQiwgX19tNTEyIF9fQywgX19tbWFzazE2IF9fVSkKewogIHJldHVybiAoX19tNTEyKSBfX2J1aWx0aW5faWEzMl92Zm1hZGRwczUxMl9tYXNrMyAoLShfX3YxNnNmKSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikgX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpIF9fQywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpIF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2ZubWFkZF9wcyhfX21tYXNrMTYgX19VLCBfX201MTIgX19BLCBfX201MTIgX19CLCBfX201MTIgX19DKQp7CiAgcmV0dXJuIChfX201MTIpIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBzNTEyX21hc2t6ICgtKF9fdjE2c2YpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKSBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikgX19DLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikgX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfZm5tc3ViX3BzKF9fbTUxMiBfX0EsIF9fbTUxMiBfX0IsIF9fbTUxMiBfX0MpCnsKICByZXR1cm4gKF9fbTUxMikgX19idWlsdGluX2lhMzJfdmZtYWRkcHM1MTJfbWFzayAoKF9fdjE2c2YpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3YxNnNmKSBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192MTZzZikgX19DLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KSAtMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfZm5tc3ViX3BzKF9fbW1hc2sxNiBfX1UsIF9fbTUxMiBfX0EsIF9fbTUxMiBfX0IsIF9fbTUxMiBfX0MpCnsKICByZXR1cm4gKF9fbTUxMikgX19idWlsdGluX2lhMzJfdmZtYWRkcHM1MTJfbWFza3ogKC0oX192MTZzZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192MTZzZikgX19DLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikgX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW01MTJfZm1hZGRzdWJfcm91bmRfcGQoQSwgQiwgQywgUikgXAogICgoX19tNTEyZClfX2J1aWx0aW5faWEzMl92Zm1hZGRzdWJwZDUxMl9tYXNrKChfX3Y4ZGYpKF9fbTUxMmQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikoX19tNTEyZCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKShfX201MTJkKShDKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSwgKGludCkoUikpKQoKCiNkZWZpbmUgX21tNTEyX21hc2tfZm1hZGRzdWJfcm91bmRfcGQoQSwgVSwgQiwgQywgUikgXAogICgoX19tNTEyZClfX2J1aWx0aW5faWEzMl92Zm1hZGRzdWJwZDUxMl9tYXNrKChfX3Y4ZGYpKF9fbTUxMmQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikoX19tNTEyZCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKShfX201MTJkKShDKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCgojZGVmaW5lIF9tbTUxMl9tYXNrM19mbWFkZHN1Yl9yb3VuZF9wZChBLCBCLCBDLCBVLCBSKSBcCiAgKChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHN1YnBkNTEyX21hc2szKChfX3Y4ZGYpKF9fbTUxMmQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpKF9fbTUxMmQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpKF9fbTUxMmQpKEMpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCgojZGVmaW5lIF9tbTUxMl9tYXNrel9mbWFkZHN1Yl9yb3VuZF9wZChVLCBBLCBCLCBDLCBSKSBcCiAgKChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHN1YnBkNTEyX21hc2t6KChfX3Y4ZGYpKF9fbTUxMmQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpKF9fbTUxMmQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpKF9fbTUxMmQpKEMpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCgojZGVmaW5lIF9tbTUxMl9mbXN1YmFkZF9yb3VuZF9wZChBLCBCLCBDLCBSKSBcCiAgKChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHN1YnBkNTEyX21hc2soKF9fdjhkZikoX19tNTEyZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKShfX201MTJkKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192OGRmKShfX201MTJkKShDKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSwgKGludCkoUikpKQoKCiNkZWZpbmUgX21tNTEyX21hc2tfZm1zdWJhZGRfcm91bmRfcGQoQSwgVSwgQiwgQywgUikgXAogICgoX19tNTEyZClfX2J1aWx0aW5faWEzMl92Zm1hZGRzdWJwZDUxMl9tYXNrKChfX3Y4ZGYpKF9fbTUxMmQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikoX19tNTEyZCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjhkZikoX19tNTEyZCkoQyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpLCAoaW50KShSKSkpCgoKI2RlZmluZSBfbW01MTJfbWFza3pfZm1zdWJhZGRfcm91bmRfcGQoVSwgQSwgQiwgQywgUikgXAogICgoX19tNTEyZClfX2J1aWx0aW5faWEzMl92Zm1hZGRzdWJwZDUxMl9tYXNreigoX192OGRmKShfX201MTJkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKShfX201MTJkKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjhkZikoX19tNTEyZCkoQyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9mbWFkZHN1Yl9wZChfX201MTJkIF9fQSwgX19tNTEyZCBfX0IsIF9fbTUxMmQgX19DKQp7CiAgcmV0dXJuIChfX201MTJkKSBfX2J1aWx0aW5faWEzMl92Zm1hZGRzdWJwZDUxMl9tYXNrICgoX192OGRmKSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikgX19DLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpIC0xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19mbWFkZHN1Yl9wZChfX201MTJkIF9fQSwgX19tbWFzazggX19VLCBfX201MTJkIF9fQiwgX19tNTEyZCBfX0MpCnsKICByZXR1cm4gKF9fbTUxMmQpIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHN1YnBkNTEyX21hc2sgKChfX3Y4ZGYpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikgX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKSBfX0MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFzazNfZm1hZGRzdWJfcGQoX19tNTEyZCBfX0EsIF9fbTUxMmQgX19CLCBfX201MTJkIF9fQywgX19tbWFzazggX19VKQp7CiAgcmV0dXJuIChfX201MTJkKSBfX2J1aWx0aW5faWEzMl92Zm1hZGRzdWJwZDUxMl9tYXNrMyAoKF9fdjhkZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikgX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikgX19DLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfZm1hZGRzdWJfcGQoX19tbWFzazggX19VLCBfX201MTJkIF9fQSwgX19tNTEyZCBfX0IsIF9fbTUxMmQgX19DKQp7CiAgcmV0dXJuIChfX201MTJkKSBfX2J1aWx0aW5faWEzMl92Zm1hZGRzdWJwZDUxMl9tYXNreiAoKF9fdjhkZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikgX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikgX19DLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfZm1zdWJhZGRfcGQoX19tNTEyZCBfX0EsIF9fbTUxMmQgX19CLCBfX201MTJkIF9fQykKewogIHJldHVybiAoX19tNTEyZCkgX19idWlsdGluX2lhMzJfdmZtYWRkc3VicGQ1MTJfbWFzayAoKF9fdjhkZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikgX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3Y4ZGYpIF9fQywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkgLTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19mbXN1YmFkZF9wZChfX201MTJkIF9fQSwgX19tbWFzazggX19VLCBfX201MTJkIF9fQiwgX19tNTEyZCBfX0MpCnsKICByZXR1cm4gKF9fbTUxMmQpIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHN1YnBkNTEyX21hc2sgKChfX3Y4ZGYpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192OGRmKSBfX0MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9mbXN1YmFkZF9wZChfX21tYXNrOCBfX1UsIF9fbTUxMmQgX19BLCBfX201MTJkIF9fQiwgX19tNTEyZCBfX0MpCnsKICByZXR1cm4gKF9fbTUxMmQpIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHN1YnBkNTEyX21hc2t6ICgoX192OGRmKSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikgX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192OGRmKSBfX0MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW01MTJfZm1hZGRzdWJfcm91bmRfcHMoQSwgQiwgQywgUikgXAogICgoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHN1YnBzNTEyX21hc2soKF9fdjE2c2YpKF9fbTUxMikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKShfX201MTIpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikoX19tNTEyKShDKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNiktMSwgKGludCkoUikpKQoKCiNkZWZpbmUgX21tNTEyX21hc2tfZm1hZGRzdWJfcm91bmRfcHMoQSwgVSwgQiwgQywgUikgXAogICgoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHN1YnBzNTEyX21hc2soKF9fdjE2c2YpKF9fbTUxMikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKShfX201MTIpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikoX19tNTEyKShDKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikoVSksIChpbnQpKFIpKSkKCgojZGVmaW5lIF9tbTUxMl9tYXNrM19mbWFkZHN1Yl9yb3VuZF9wcyhBLCBCLCBDLCBVLCBSKSBcCiAgKChfX201MTIpX19idWlsdGluX2lhMzJfdmZtYWRkc3VicHM1MTJfbWFzazMoKF9fdjE2c2YpKF9fbTUxMikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikoX19tNTEyKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKShfX201MTIpKEMpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikoVSksIChpbnQpKFIpKSkKCgojZGVmaW5lIF9tbTUxMl9tYXNrel9mbWFkZHN1Yl9yb3VuZF9wcyhVLCBBLCBCLCBDLCBSKSBcCiAgKChfX201MTIpX19idWlsdGluX2lhMzJfdmZtYWRkc3VicHM1MTJfbWFza3ooKF9fdjE2c2YpKF9fbTUxMikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikoX19tNTEyKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKShfX201MTIpKEMpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikoVSksIChpbnQpKFIpKSkKCgojZGVmaW5lIF9tbTUxMl9mbXN1YmFkZF9yb3VuZF9wcyhBLCBCLCBDLCBSKSBcCiAgKChfX201MTIpX19idWlsdGluX2lhMzJfdmZtYWRkc3VicHM1MTJfbWFzaygoX192MTZzZikoX19tNTEyKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpKF9fbTUxMikoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192MTZzZikoX19tNTEyKShDKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNiktMSwgKGludCkoUikpKQoKCiNkZWZpbmUgX21tNTEyX21hc2tfZm1zdWJhZGRfcm91bmRfcHMoQSwgVSwgQiwgQywgUikgXAogICgoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHN1YnBzNTEyX21hc2soKF9fdjE2c2YpKF9fbTUxMikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKShfX201MTIpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjE2c2YpKF9fbTUxMikoQyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpKFUpLCAoaW50KShSKSkpCgoKI2RlZmluZSBfbW01MTJfbWFza3pfZm1zdWJhZGRfcm91bmRfcHMoVSwgQSwgQiwgQywgUikgXAogICgoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHN1YnBzNTEyX21hc2t6KChfX3YxNnNmKShfX201MTIpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpKF9fbTUxMikoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjE2c2YpKF9fbTUxMikoQyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KShVKSwgKGludCkoUikpKQoKCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2ZtYWRkc3ViX3BzKF9fbTUxMiBfX0EsIF9fbTUxMiBfX0IsIF9fbTUxMiBfX0MpCnsKICByZXR1cm4gKF9fbTUxMikgX19idWlsdGluX2lhMzJfdmZtYWRkc3VicHM1MTJfbWFzayAoKF9fdjE2c2YpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpIF9fQywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikgLTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfZm1hZGRzdWJfcHMoX19tNTEyIF9fQSwgX19tbWFzazE2IF9fVSwgX19tNTEyIF9fQiwgX19tNTEyIF9fQykKewogIHJldHVybiAoX19tNTEyKSBfX2J1aWx0aW5faWEzMl92Zm1hZGRzdWJwczUxMl9tYXNrICgoX192MTZzZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikgX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikgX19DLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2szX2ZtYWRkc3ViX3BzKF9fbTUxMiBfX0EsIF9fbTUxMiBfX0IsIF9fbTUxMiBfX0MsIF9fbW1hc2sxNiBfX1UpCnsKICByZXR1cm4gKF9fbTUxMikgX19idWlsdGluX2lhMzJfdmZtYWRkc3VicHM1MTJfbWFzazMgKChfX3YxNnNmKSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikgX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpIF9fQywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpIF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2ZtYWRkc3ViX3BzKF9fbW1hc2sxNiBfX1UsIF9fbTUxMiBfX0EsIF9fbTUxMiBfX0IsIF9fbTUxMiBfX0MpCnsKICByZXR1cm4gKF9fbTUxMikgX19idWlsdGluX2lhMzJfdmZtYWRkc3VicHM1MTJfbWFza3ogKChfX3YxNnNmKSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikgX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpIF9fQywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpIF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2Ztc3ViYWRkX3BzKF9fbTUxMiBfX0EsIF9fbTUxMiBfX0IsIF9fbTUxMiBfX0MpCnsKICByZXR1cm4gKF9fbTUxMikgX19idWlsdGluX2lhMzJfdmZtYWRkc3VicHM1MTJfbWFzayAoKF9fdjE2c2YpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3YxNnNmKSBfX0MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpIC0xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTIgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2Ztc3ViYWRkX3BzKF9fbTUxMiBfX0EsIF9fbW1hc2sxNiBfX1UsIF9fbTUxMiBfX0IsIF9fbTUxMiBfX0MpCnsKICByZXR1cm4gKF9fbTUxMikgX19idWlsdGluX2lhMzJfdmZtYWRkc3VicHM1MTJfbWFzayAoKF9fdjE2c2YpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3YxNnNmKSBfX0MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpIF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfZm1zdWJhZGRfcHMoX19tbWFzazE2IF9fVSwgX19tNTEyIF9fQSwgX19tNTEyIF9fQiwgX19tNTEyIF9fQykKewogIHJldHVybiAoX19tNTEyKSBfX2J1aWx0aW5faWEzMl92Zm1hZGRzdWJwczUxMl9tYXNreiAoKF9fdjE2c2YpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKSBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjE2c2YpIF9fQywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpIF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCiNkZWZpbmUgX21tNTEyX21hc2szX2Ztc3ViX3JvdW5kX3BkKEEsIEIsIEMsIFUsIFIpIFwKICAoKF9fbTUxMmQpX19idWlsdGluX2lhMzJfdmZtc3VicGQ1MTJfbWFzazMoKF9fdjhkZikoX19tNTEyZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikoX19tNTEyZCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikoX19tNTEyZCkoQyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrM19mbXN1Yl9wZChfX201MTJkIF9fQSwgX19tNTEyZCBfX0IsIF9fbTUxMmQgX19DLCBfX21tYXNrOCBfX1UpCnsKICByZXR1cm4gKF9fbTUxMmQpX19idWlsdGluX2lhMzJfdmZtc3VicGQ1MTJfbWFzazMgKChfX3Y4ZGYpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpIF9fQywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW01MTJfbWFzazNfZm1zdWJfcm91bmRfcHMoQSwgQiwgQywgVSwgUikgXAogICgoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3ZmbXN1YnBzNTEyX21hc2szKChfX3YxNnNmKShfX201MTIpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpKF9fbTUxMikoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikoX19tNTEyKShDKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpKFUpLCAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTIgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrM19mbXN1Yl9wcyhfX201MTIgX19BLCBfX201MTIgX19CLCBfX201MTIgX19DLCBfX21tYXNrMTYgX19VKQp7CiAgcmV0dXJuIChfX201MTIpX19idWlsdGluX2lhMzJfdmZtc3VicHM1MTJfbWFzazMgKChfX3YxNnNmKSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKSBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKSBfX0MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpIF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW01MTJfbWFzazNfZm1zdWJhZGRfcm91bmRfcGQoQSwgQiwgQywgVSwgUikgXAogICgoX19tNTEyZClfX2J1aWx0aW5faWEzMl92Zm1zdWJhZGRwZDUxMl9tYXNrMygoX192OGRmKShfX201MTJkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKShfX201MTJkKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKShfX201MTJkKShDKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpLCAoaW50KShSKSkpCgoKc3RhdGljIF9faW5saW5lX18gX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2szX2Ztc3ViYWRkX3BkKF9fbTUxMmQgX19BLCBfX201MTJkIF9fQiwgX19tNTEyZCBfX0MsIF9fbW1hc2s4IF9fVSkKewogIHJldHVybiAoX19tNTEyZClfX2J1aWx0aW5faWEzMl92Zm1zdWJhZGRwZDUxMl9tYXNrMyAoKF9fdjhkZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikgX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikgX19DLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgojZGVmaW5lIF9tbTUxMl9tYXNrM19mbXN1YmFkZF9yb3VuZF9wcyhBLCBCLCBDLCBVLCBSKSBcCiAgKChfX201MTIpX19idWlsdGluX2lhMzJfdmZtc3ViYWRkcHM1MTJfbWFzazMoKF9fdjE2c2YpKF9fbTUxMikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikoX19tNTEyKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKShfX201MTIpKEMpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikoVSksIChpbnQpKFIpKSkKCgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTIgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrM19mbXN1YmFkZF9wcyhfX201MTIgX19BLCBfX201MTIgX19CLCBfX201MTIgX19DLCBfX21tYXNrMTYgX19VKQp7CiAgcmV0dXJuIChfX201MTIpX19idWlsdGluX2lhMzJfdmZtc3ViYWRkcHM1MTJfbWFzazMgKChfX3YxNnNmKSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKSBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKSBfX0MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpIF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW01MTJfbWFza19mbm1hZGRfcm91bmRfcGQoQSwgVSwgQiwgQywgUikgXAogICgoX19tNTEyZClfX2J1aWx0aW5faWEzMl92Zm1hZGRwZDUxMl9tYXNrKChfX3Y4ZGYpKF9fbTUxMmQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3Y4ZGYpKF9fbTUxMmQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikoX19tNTEyZCkoQyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpLCAoaW50KShSKSkpCgoKc3RhdGljIF9faW5saW5lX18gX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfZm5tYWRkX3BkKF9fbTUxMmQgX19BLCBfX21tYXNrOCBfX1UsIF9fbTUxMmQgX19CLCBfX201MTJkIF9fQykKewogIHJldHVybiAoX19tNTEyZCkgX19idWlsdGluX2lhMzJfdmZtYWRkcGQ1MTJfbWFzayAoKF9fdjhkZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3Y4ZGYpIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpIF9fQywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW01MTJfbWFza19mbm1hZGRfcm91bmRfcHMoQSwgVSwgQiwgQywgUikgXAogICgoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBzNTEyX21hc2soKF9fdjE2c2YpKF9fbTUxMikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192MTZzZikoX19tNTEyKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpKF9fbTUxMikoQyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpKFUpLCAoaW50KShSKSkpCgoKc3RhdGljIF9faW5saW5lX18gX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19mbm1hZGRfcHMoX19tNTEyIF9fQSwgX19tbWFzazE2IF9fVSwgX19tNTEyIF9fQiwgX19tNTEyIF9fQykKewogIHJldHVybiAoX19tNTEyKSBfX2J1aWx0aW5faWEzMl92Zm1hZGRwczUxMl9tYXNrICgoX192MTZzZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjE2c2YpIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpIF9fQywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikgX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgojZGVmaW5lIF9tbTUxMl9tYXNrX2ZubXN1Yl9yb3VuZF9wZChBLCBVLCBCLCBDLCBSKSBcCiAgKChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBkNTEyX21hc2soKF9fdjhkZikoX19tNTEyZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjhkZikoX19tNTEyZCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjhkZikoX19tNTEyZCkoQyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpLCAoaW50KShSKSkpCgoKI2RlZmluZSBfbW01MTJfbWFzazNfZm5tc3ViX3JvdW5kX3BkKEEsIEIsIEMsIFUsIFIpIFwKICAoKF9fbTUxMmQpX19idWlsdGluX2lhMzJfdmZtc3VicGQ1MTJfbWFzazMoLShfX3Y4ZGYpKF9fbTUxMmQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpKF9fbTUxMmQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpKF9fbTUxMmQpKEMpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19mbm1zdWJfcGQoX19tNTEyZCBfX0EsIF9fbW1hc2s4IF9fVSwgX19tNTEyZCBfX0IsIF9fbTUxMmQgX19DKQp7CiAgcmV0dXJuIChfX201MTJkKSBfX2J1aWx0aW5faWEzMl92Zm1hZGRwZDUxMl9tYXNrICgoX192OGRmKSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjhkZikgX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3Y4ZGYpIF9fQywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2szX2ZubXN1Yl9wZChfX201MTJkIF9fQSwgX19tNTEyZCBfX0IsIF9fbTUxMmQgX19DLCBfX21tYXNrOCBfX1UpCnsKICByZXR1cm4gKF9fbTUxMmQpIF9fYnVpbHRpbl9pYTMyX3ZmbXN1YnBkNTEyX21hc2szICgtKF9fdjhkZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKSBfX0MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW01MTJfbWFza19mbm1zdWJfcm91bmRfcHMoQSwgVSwgQiwgQywgUikgXAogICgoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBzNTEyX21hc2soKF9fdjE2c2YpKF9fbTUxMikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192MTZzZikoX19tNTEyKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3YxNnNmKShfX201MTIpKEMpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KShVKSwgKGludCkoUikpKQoKCiNkZWZpbmUgX21tNTEyX21hc2szX2ZubXN1Yl9yb3VuZF9wcyhBLCBCLCBDLCBVLCBSKSBcCiAgKChfX201MTIpX19idWlsdGluX2lhMzJfdmZtc3VicHM1MTJfbWFzazMoLShfX3YxNnNmKShfX201MTIpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpKF9fbTUxMikoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikoX19tNTEyKShDKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpKFUpLCAoaW50KShSKSkpCgoKc3RhdGljIF9faW5saW5lX18gX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19mbm1zdWJfcHMoX19tNTEyIF9fQSwgX19tbWFzazE2IF9fVSwgX19tNTEyIF9fQiwgX19tNTEyIF9fQykKewogIHJldHVybiAoX19tNTEyKSBfX2J1aWx0aW5faWEzMl92Zm1hZGRwczUxMl9tYXNrICgoX192MTZzZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjE2c2YpIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3YxNnNmKSBfX0MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpIF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFzazNfZm5tc3ViX3BzKF9fbTUxMiBfX0EsIF9fbTUxMiBfX0IsIF9fbTUxMiBfX0MsIF9fbW1hc2sxNiBfX1UpCnsKICByZXR1cm4gKF9fbTUxMikgX19idWlsdGluX2lhMzJfdmZtc3VicHM1MTJfbWFzazMgKC0oX192MTZzZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKSBfX0MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgoKCi8qIFZlY3RvciBwZXJtdXRhdGlvbnMgKi8KCnN0YXRpYyBfX2lubGluZSBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfcGVybXV0ZXgydmFyX2VwaTMyKF9fbTUxMmkgX19BLCBfX201MTJpIF9fSSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfdnBlcm1pMnZhcmQ1MTIoKF9fdjE2c2kpX19BLCAoX192MTZzaSkgX19JLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSkgX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfcGVybXV0ZXgydmFyX2VwaTMyKF9fbTUxMmkgX19BLCBfX21tYXNrMTYgX19VLCBfX201MTJpIF9fSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfNTEyKF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX21tNTEyX3Blcm11dGV4MnZhcl9lcGkzMihfX0EsIF9fSSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2syX3Blcm11dGV4MnZhcl9lcGkzMihfX201MTJpIF9fQSwgX19tNTEyaSBfX0ksIF9fbW1hc2sxNiBfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF81MTIoX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfcGVybXV0ZXgydmFyX2VwaTMyKF9fQSwgX19JLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfX0kpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfcGVybXV0ZXgydmFyX2VwaTMyKF9fbW1hc2sxNiBfX1UsIF9fbTUxMmkgX19BLCBfX201MTJpIF9fSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzUxMihfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9wZXJtdXRleDJ2YXJfZXBpMzIoX19BLCBfX0ksIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmUgX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3Blcm11dGV4MnZhcl9lcGk2NChfX201MTJpIF9fQSwgX19tNTEyaSBfX0ksIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3ZwZXJtaTJ2YXJxNTEyKChfX3Y4ZGkpX19BLCAoX192OGRpKSBfX0ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpIF9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX3Blcm11dGV4MnZhcl9lcGk2NChfX201MTJpIF9fQSwgX19tbWFzazggX19VLCBfX201MTJpIF9fSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfNTEyKF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX3Blcm11dGV4MnZhcl9lcGk2NChfX0EsIF9fSSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2syX3Blcm11dGV4MnZhcl9lcGk2NChfX201MTJpIF9fQSwgX19tNTEyaSBfX0ksIF9fbW1hc2s4IF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzUxMihfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9wZXJtdXRleDJ2YXJfZXBpNjQoX19BLCBfX0ksIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9fSSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9wZXJtdXRleDJ2YXJfZXBpNjQoX19tbWFzazggX19VLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV81MTIoX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfcGVybXV0ZXgydmFyX2VwaTY0KF9fQSwgX19JLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKI2RlZmluZSBfbW01MTJfYWxpZ25yX2VwaTY0KEEsIEIsIEkpIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfYWxpZ25xNTEyKChfX3Y4ZGkpKF9fbTUxMmkpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKShfX201MTJpKShCKSwgKGludCkoSSkpKQoKI2RlZmluZSBfbW01MTJfbWFza19hbGlnbnJfZXBpNjQoVywgVSwgQSwgQiwgaW1tKSBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfNTEyKChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX2FsaWducl9lcGk2NCgoQSksIChCKSwgKGltbSkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKShfX201MTJpKShXKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9hbGlnbnJfZXBpNjQoVSwgQSwgQiwgaW1tKSBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfNTEyKChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX2FsaWducl9lcGk2NCgoQSksIChCKSwgKGltbSkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpKQoKI2RlZmluZSBfbW01MTJfYWxpZ25yX2VwaTMyKEEsIEIsIEkpIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfYWxpZ25kNTEyKChfX3YxNnNpKShfX201MTJpKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpKF9fbTUxMmkpKEIpLCAoaW50KShJKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX2FsaWducl9lcGkzMihXLCBVLCBBLCBCLCBpbW0pIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF81MTIoKF9fbW1hc2sxNikoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX21tNTEyX2FsaWducl9lcGkzMigoQSksIChCKSwgKGltbSkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKShfX201MTJpKShXKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9hbGlnbnJfZXBpMzIoVSwgQSwgQiwgaW1tKSBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfNTEyKChfX21tYXNrMTYpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9hbGlnbnJfZXBpMzIoKEEpLCAoQiksIChpbW0pKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfc2V0emVyb19zaTUxMigpKSkKLyogVmVjdG9yIEV4dHJhY3QgKi8KCiNkZWZpbmUgX21tNTEyX2V4dHJhY3RmNjR4NF9wZChBLCBJKSBcCiAgKChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX2V4dHJhY3RmNjR4NF9tYXNrKChfX3Y4ZGYpKF9fbTUxMmQpKEEpLCAoaW50KShJKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9tbTI1Nl91bmRlZmluZWRfcGQoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEpKQoKI2RlZmluZSBfbW01MTJfbWFza19leHRyYWN0ZjY0eDRfcGQoVywgVSwgQSwgaW1tKSBcCiAgKChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX2V4dHJhY3RmNjR4NF9tYXNrKChfX3Y4ZGYpKF9fbTUxMmQpKEEpLCAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpKF9fbTI1NmQpKFcpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSkpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfZXh0cmFjdGY2NHg0X3BkKFUsIEEsIGltbSkgXAogICgoX19tMjU2ZClfX2J1aWx0aW5faWEzMl9leHRyYWN0ZjY0eDRfbWFzaygoX192OGRmKShfX201MTJkKShBKSwgKGludCkoaW1tKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9tbTI1Nl9zZXR6ZXJvX3BkKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSkpCgojZGVmaW5lIF9tbTUxMl9leHRyYWN0ZjMyeDRfcHMoQSwgSSkgXAogICgoX19tMTI4KV9fYnVpbHRpbl9pYTMyX2V4dHJhY3RmMzJ4NF9tYXNrKChfX3YxNnNmKShfX201MTIpKEEpLCAoaW50KShJKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX3VuZGVmaW5lZF9wcygpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfZXh0cmFjdGYzMng0X3BzKFcsIFUsIEEsIGltbSkgXAogICgoX19tMTI4KV9fYnVpbHRpbl9pYTMyX2V4dHJhY3RmMzJ4NF9tYXNrKChfX3YxNnNmKShfX201MTIpKEEpLCAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikoX19tMTI4KShXKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSkpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfZXh0cmFjdGYzMng0X3BzKFUsIEEsIGltbSkgXAogICgoX19tMTI4KV9fYnVpbHRpbl9pYTMyX2V4dHJhY3RmMzJ4NF9tYXNrKChfX3YxNnNmKShfX201MTIpKEEpLCAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfbW1fc2V0emVyb19wcygpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSkpCgovKiBWZWN0b3IgQmxlbmQgKi8KCnN0YXRpYyBfX2lubGluZSBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19ibGVuZF9wZChfX21tYXNrOCBfX1UsIF9fbTUxMmQgX19BLCBfX201MTJkIF9fVykKewogIHJldHVybiAoX19tNTEyZCkgX19idWlsdGluX2lhMzJfc2VsZWN0cGRfNTEyICgoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICAoX192OGRmKSBfX1csCiAgICAgICAgICAgICAgICAgKF9fdjhkZikgX19BKTsKfQoKc3RhdGljIF9faW5saW5lIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfYmxlbmRfcHMoX19tbWFzazE2IF9fVSwgX19tNTEyIF9fQSwgX19tNTEyIF9fVykKewogIHJldHVybiAoX19tNTEyKSBfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc181MTIgKChfX21tYXNrMTYpIF9fVSwKICAgICAgICAgICAgICAgIChfX3YxNnNmKSBfX1csCiAgICAgICAgICAgICAgICAoX192MTZzZikgX19BKTsKfQoKc3RhdGljIF9faW5saW5lIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2JsZW5kX2VwaTY0KF9fbW1hc2s4IF9fVSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19XKQp7CiAgcmV0dXJuIChfX201MTJpKSBfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzUxMiAoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAoX192OGRpKSBfX1csCiAgICAgICAgICAgICAgICAoX192OGRpKSBfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmUgX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfYmxlbmRfZXBpMzIoX19tbWFzazE2IF9fVSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19XKQp7CiAgcmV0dXJuIChfX201MTJpKSBfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzUxMiAoKF9fbW1hc2sxNikgX19VLAogICAgICAgICAgICAgICAgKF9fdjE2c2kpIF9fVywKICAgICAgICAgICAgICAgIChfX3YxNnNpKSBfX0EpOwp9CgovKiBDb21wYXJlICovCgojZGVmaW5lIF9tbTUxMl9jbXBfcm91bmRfcHNfbWFzayhBLCBCLCBQLCBSKSBcCiAgKChfX21tYXNrMTYpX19idWlsdGluX2lhMzJfY21wcHM1MTJfbWFzaygoX192MTZzZikoX19tNTEyKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpKF9fbTUxMikoQiksIChpbnQpKFApLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KS0xLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX2NtcF9yb3VuZF9wc19tYXNrKFUsIEEsIEIsIFAsIFIpIFwKICAoKF9fbW1hc2sxNilfX2J1aWx0aW5faWEzMl9jbXBwczUxMl9tYXNrKChfX3YxNnNmKShfX201MTIpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikoX19tNTEyKShCKSwgKGludCkoUCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpKFUpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9jbXBfcHNfbWFzayhBLCBCLCBQKSBcCiAgX21tNTEyX2NtcF9yb3VuZF9wc19tYXNrKChBKSwgKEIpLCAoUCksIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTikKI2RlZmluZSBfbW01MTJfbWFza19jbXBfcHNfbWFzayhVLCBBLCBCLCBQKSBcCiAgX21tNTEyX21hc2tfY21wX3JvdW5kX3BzX21hc2soKFUpLCAoQSksIChCKSwgKFApLCBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pCgojZGVmaW5lIF9tbTUxMl9jbXBlcV9wc19tYXNrKEEsIEIpIFwKICAgIF9tbTUxMl9jbXBfcHNfbWFzaygoQSksIChCKSwgX0NNUF9FUV9PUSkKI2RlZmluZSBfbW01MTJfbWFza19jbXBlcV9wc19tYXNrKGssIEEsIEIpIFwKICAgIF9tbTUxMl9tYXNrX2NtcF9wc19tYXNrKChrKSwgKEEpLCAoQiksIF9DTVBfRVFfT1EpCgojZGVmaW5lIF9tbTUxMl9jbXBsdF9wc19tYXNrKEEsIEIpIFwKICAgIF9tbTUxMl9jbXBfcHNfbWFzaygoQSksIChCKSwgX0NNUF9MVF9PUykKI2RlZmluZSBfbW01MTJfbWFza19jbXBsdF9wc19tYXNrKGssIEEsIEIpIFwKICAgIF9tbTUxMl9tYXNrX2NtcF9wc19tYXNrKChrKSwgKEEpLCAoQiksIF9DTVBfTFRfT1MpCgojZGVmaW5lIF9tbTUxMl9jbXBsZV9wc19tYXNrKEEsIEIpIFwKICAgIF9tbTUxMl9jbXBfcHNfbWFzaygoQSksIChCKSwgX0NNUF9MRV9PUykKI2RlZmluZSBfbW01MTJfbWFza19jbXBsZV9wc19tYXNrKGssIEEsIEIpIFwKICAgIF9tbTUxMl9tYXNrX2NtcF9wc19tYXNrKChrKSwgKEEpLCAoQiksIF9DTVBfTEVfT1MpCgojZGVmaW5lIF9tbTUxMl9jbXB1bm9yZF9wc19tYXNrKEEsIEIpIFwKICAgIF9tbTUxMl9jbXBfcHNfbWFzaygoQSksIChCKSwgX0NNUF9VTk9SRF9RKQojZGVmaW5lIF9tbTUxMl9tYXNrX2NtcHVub3JkX3BzX21hc2soaywgQSwgQikgXAogICAgX21tNTEyX21hc2tfY21wX3BzX21hc2soKGspLCAoQSksIChCKSwgX0NNUF9VTk9SRF9RKQoKI2RlZmluZSBfbW01MTJfY21wbmVxX3BzX21hc2soQSwgQikgXAogICAgX21tNTEyX2NtcF9wc19tYXNrKChBKSwgKEIpLCBfQ01QX05FUV9VUSkKI2RlZmluZSBfbW01MTJfbWFza19jbXBuZXFfcHNfbWFzayhrLCBBLCBCKSBcCiAgICBfbW01MTJfbWFza19jbXBfcHNfbWFzaygoayksIChBKSwgKEIpLCBfQ01QX05FUV9VUSkKCiNkZWZpbmUgX21tNTEyX2NtcG5sdF9wc19tYXNrKEEsIEIpIFwKICAgIF9tbTUxMl9jbXBfcHNfbWFzaygoQSksIChCKSwgX0NNUF9OTFRfVVMpCiNkZWZpbmUgX21tNTEyX21hc2tfY21wbmx0X3BzX21hc2soaywgQSwgQikgXAogICAgX21tNTEyX21hc2tfY21wX3BzX21hc2soKGspLCAoQSksIChCKSwgX0NNUF9OTFRfVVMpCgojZGVmaW5lIF9tbTUxMl9jbXBubGVfcHNfbWFzayhBLCBCKSBcCiAgICBfbW01MTJfY21wX3BzX21hc2soKEEpLCAoQiksIF9DTVBfTkxFX1VTKQojZGVmaW5lIF9tbTUxMl9tYXNrX2NtcG5sZV9wc19tYXNrKGssIEEsIEIpIFwKICAgIF9tbTUxMl9tYXNrX2NtcF9wc19tYXNrKChrKSwgKEEpLCAoQiksIF9DTVBfTkxFX1VTKQoKI2RlZmluZSBfbW01MTJfY21wb3JkX3BzX21hc2soQSwgQikgXAogICAgX21tNTEyX2NtcF9wc19tYXNrKChBKSwgKEIpLCBfQ01QX09SRF9RKQojZGVmaW5lIF9tbTUxMl9tYXNrX2NtcG9yZF9wc19tYXNrKGssIEEsIEIpIFwKICAgIF9tbTUxMl9tYXNrX2NtcF9wc19tYXNrKChrKSwgKEEpLCAoQiksIF9DTVBfT1JEX1EpCgojZGVmaW5lIF9tbTUxMl9jbXBfcm91bmRfcGRfbWFzayhBLCBCLCBQLCBSKSBcCiAgKChfX21tYXNrOClfX2J1aWx0aW5faWEzMl9jbXBwZDUxMl9tYXNrKChfX3Y4ZGYpKF9fbTUxMmQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpKF9fbTUxMmQpKEIpLCAoaW50KShQKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEsIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfY21wX3JvdW5kX3BkX21hc2soVSwgQSwgQiwgUCwgUikgXAogICgoX19tbWFzazgpX19idWlsdGluX2lhMzJfY21wcGQ1MTJfbWFzaygoX192OGRmKShfX201MTJkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKShfX201MTJkKShCKSwgKGludCkoUCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfY21wX3BkX21hc2soQSwgQiwgUCkgXAogIF9tbTUxMl9jbXBfcm91bmRfcGRfbWFzaygoQSksIChCKSwgKFApLCBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pCiNkZWZpbmUgX21tNTEyX21hc2tfY21wX3BkX21hc2soVSwgQSwgQiwgUCkgXAogIF9tbTUxMl9tYXNrX2NtcF9yb3VuZF9wZF9tYXNrKChVKSwgKEEpLCAoQiksIChQKSwgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKQoKI2RlZmluZSBfbW01MTJfY21wZXFfcGRfbWFzayhBLCBCKSBcCiAgICBfbW01MTJfY21wX3BkX21hc2soKEEpLCAoQiksIF9DTVBfRVFfT1EpCiNkZWZpbmUgX21tNTEyX21hc2tfY21wZXFfcGRfbWFzayhrLCBBLCBCKSBcCiAgICBfbW01MTJfbWFza19jbXBfcGRfbWFzaygoayksIChBKSwgKEIpLCBfQ01QX0VRX09RKQoKI2RlZmluZSBfbW01MTJfY21wbHRfcGRfbWFzayhBLCBCKSBcCiAgICBfbW01MTJfY21wX3BkX21hc2soKEEpLCAoQiksIF9DTVBfTFRfT1MpCiNkZWZpbmUgX21tNTEyX21hc2tfY21wbHRfcGRfbWFzayhrLCBBLCBCKSBcCiAgICBfbW01MTJfbWFza19jbXBfcGRfbWFzaygoayksIChBKSwgKEIpLCBfQ01QX0xUX09TKQoKI2RlZmluZSBfbW01MTJfY21wbGVfcGRfbWFzayhBLCBCKSBcCiAgICBfbW01MTJfY21wX3BkX21hc2soKEEpLCAoQiksIF9DTVBfTEVfT1MpCiNkZWZpbmUgX21tNTEyX21hc2tfY21wbGVfcGRfbWFzayhrLCBBLCBCKSBcCiAgICBfbW01MTJfbWFza19jbXBfcGRfbWFzaygoayksIChBKSwgKEIpLCBfQ01QX0xFX09TKQoKI2RlZmluZSBfbW01MTJfY21wdW5vcmRfcGRfbWFzayhBLCBCKSBcCiAgICBfbW01MTJfY21wX3BkX21hc2soKEEpLCAoQiksIF9DTVBfVU5PUkRfUSkKI2RlZmluZSBfbW01MTJfbWFza19jbXB1bm9yZF9wZF9tYXNrKGssIEEsIEIpIFwKICAgIF9tbTUxMl9tYXNrX2NtcF9wZF9tYXNrKChrKSwgKEEpLCAoQiksIF9DTVBfVU5PUkRfUSkKCiNkZWZpbmUgX21tNTEyX2NtcG5lcV9wZF9tYXNrKEEsIEIpIFwKICAgIF9tbTUxMl9jbXBfcGRfbWFzaygoQSksIChCKSwgX0NNUF9ORVFfVVEpCiNkZWZpbmUgX21tNTEyX21hc2tfY21wbmVxX3BkX21hc2soaywgQSwgQikgXAogICAgX21tNTEyX21hc2tfY21wX3BkX21hc2soKGspLCAoQSksIChCKSwgX0NNUF9ORVFfVVEpCgojZGVmaW5lIF9tbTUxMl9jbXBubHRfcGRfbWFzayhBLCBCKSBcCiAgICBfbW01MTJfY21wX3BkX21hc2soKEEpLCAoQiksIF9DTVBfTkxUX1VTKQojZGVmaW5lIF9tbTUxMl9tYXNrX2NtcG5sdF9wZF9tYXNrKGssIEEsIEIpIFwKICAgIF9tbTUxMl9tYXNrX2NtcF9wZF9tYXNrKChrKSwgKEEpLCAoQiksIF9DTVBfTkxUX1VTKQoKI2RlZmluZSBfbW01MTJfY21wbmxlX3BkX21hc2soQSwgQikgXAogICAgX21tNTEyX2NtcF9wZF9tYXNrKChBKSwgKEIpLCBfQ01QX05MRV9VUykKI2RlZmluZSBfbW01MTJfbWFza19jbXBubGVfcGRfbWFzayhrLCBBLCBCKSBcCiAgICBfbW01MTJfbWFza19jbXBfcGRfbWFzaygoayksIChBKSwgKEIpLCBfQ01QX05MRV9VUykKCiNkZWZpbmUgX21tNTEyX2NtcG9yZF9wZF9tYXNrKEEsIEIpIFwKICAgIF9tbTUxMl9jbXBfcGRfbWFzaygoQSksIChCKSwgX0NNUF9PUkRfUSkKI2RlZmluZSBfbW01MTJfbWFza19jbXBvcmRfcGRfbWFzayhrLCBBLCBCKSBcCiAgICBfbW01MTJfbWFza19jbXBfcGRfbWFzaygoayksIChBKSwgKEIpLCBfQ01QX09SRF9RKQoKLyogQ29udmVyc2lvbiAqLwoKI2RlZmluZSBfbW01MTJfY3Z0dF9yb3VuZHBzX2VwdTMyKEEsIFIpIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfY3Z0dHBzMnVkcTUxMl9tYXNrKChfX3YxNnNmKShfX201MTIpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfdW5kZWZpbmVkX2VwaTMyKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpLTEsIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfY3Z0dF9yb3VuZHBzX2VwdTMyKFcsIFUsIEEsIFIpIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfY3Z0dHBzMnVkcTUxMl9tYXNrKChfX3YxNnNmKShfX201MTIpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSkoX19tNTEyaSkoVyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpKFUpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9jdnR0X3JvdW5kcHNfZXB1MzIoVSwgQSwgUikgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9jdnR0cHMydWRxNTEyX21hc2soKF9fdjE2c2YpKF9fbTUxMikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpKFUpLCAoaW50KShSKSkpCgoKc3RhdGljIF9faW5saW5lIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9jdnR0cHNfZXB1MzIoX19tNTEyIF9fQSkKewogIHJldHVybiAoX19tNTEyaSkgX19idWlsdGluX2lhMzJfY3Z0dHBzMnVkcTUxMl9tYXNrICgoX192MTZzZikgX19BLAogICAgICAgICAgICAgICAgICAoX192MTZzaSkKICAgICAgICAgICAgICAgICAgX21tNTEyX3NldHplcm9fc2k1MTIgKCksCiAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpIC0xLAogICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19jdnR0cHNfZXB1MzIgKF9fbTUxMmkgX19XLCBfX21tYXNrMTYgX19VLCBfX201MTIgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKSBfX2J1aWx0aW5faWEzMl9jdnR0cHMydWRxNTEyX21hc2sgKChfX3YxNnNmKSBfX0EsCiAgICAgICAgICAgICAgICAgICAoX192MTZzaSkgX19XLAogICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikgX19VLAogICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2N2dHRwc19lcHUzMiAoX19tbWFzazE2IF9fVSwgX19tNTEyIF9fQSkKewogIHJldHVybiAoX19tNTEyaSkgX19idWlsdGluX2lhMzJfY3Z0dHBzMnVkcTUxMl9tYXNrICgoX192MTZzZikgX19BLAogICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpIF9tbTUxMl9zZXR6ZXJvX3NpNTEyICgpLAogICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikgX19VLAogICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW01MTJfY3Z0X3JvdW5kZXBpMzJfcHMoQSwgUikgXAogICgoX19tNTEyKV9fYnVpbHRpbl9pYTMyX2N2dGRxMnBzNTEyX21hc2soKF9fdjE2c2kpKF9fbTUxMmkpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfc2V0emVyb19wcygpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KS0xLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX2N2dF9yb3VuZGVwaTMyX3BzKFcsIFUsIEEsIFIpIFwKICAoKF9fbTUxMilfX2J1aWx0aW5faWEzMl9jdnRkcTJwczUxMl9tYXNrKChfX3YxNnNpKShfX201MTJpKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpKF9fbTUxMikoVyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpKFUpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9jdnRfcm91bmRlcGkzMl9wcyhVLCBBLCBSKSBcCiAgKChfX201MTIpX19idWlsdGluX2lhMzJfY3Z0ZHEycHM1MTJfbWFzaygoX192MTZzaSkoX19tNTEyaSkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl9zZXR6ZXJvX3BzKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpKFUpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9jdnRfcm91bmRlcHUzMl9wcyhBLCBSKSBcCiAgKChfX201MTIpX19idWlsdGluX2lhMzJfY3Z0dWRxMnBzNTEyX21hc2soKF9fdjE2c2kpKF9fbTUxMmkpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX21tNTEyX3NldHplcm9fcHMoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpLTEsIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfY3Z0X3JvdW5kZXB1MzJfcHMoVywgVSwgQSwgUikgXAogICgoX19tNTEyKV9fYnVpbHRpbl9pYTMyX2N2dHVkcTJwczUxMl9tYXNrKChfX3YxNnNpKShfX201MTJpKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKShfX201MTIpKFcpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikoVSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X2N2dF9yb3VuZGVwdTMyX3BzKFUsIEEsIFIpIFwKICAoKF9fbTUxMilfX2J1aWx0aW5faWEzMl9jdnR1ZHEycHM1MTJfbWFzaygoX192MTZzaSkoX19tNTEyaSkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfc2V0emVyb19wcygpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikoVSksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2N2dGVwdTMyX3BzIChfX201MTJpIF9fQSkKewogIHJldHVybiAoX19tNTEyKV9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKChfX3YxNnN1KV9fQSwgX192MTZzZik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfY3Z0ZXB1MzJfcHMgKF9fbTUxMiBfX1csIF9fbW1hc2sxNiBfX1UsIF9fbTUxMmkgX19BKQp7CiAgcmV0dXJuIChfX201MTIpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfNTEyKChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfY3Z0ZXB1MzJfcHMoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfY3Z0ZXB1MzJfcHMgKF9fbW1hc2sxNiBfX1UsIF9fbTUxMmkgX19BKQp7CiAgcmV0dXJuIChfX201MTIpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfNTEyKChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfY3Z0ZXB1MzJfcHMoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX21tNTEyX3NldHplcm9fcHMoKSk7Cn0KCnN0YXRpYyBfX2lubGluZSBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfY3Z0ZXBpMzJfcGQoX19tMjU2aSBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmQpX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoKF9fdjhzaSlfX0EsIF9fdjhkZik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2N2dGVwaTMyX3BkIChfX201MTJkIF9fVywgX19tbWFzazggX19VLCBfX20yNTZpIF9fQSkKewogIHJldHVybiAoX19tNTEyZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF81MTIoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl9jdnRlcGkzMl9wZChfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfY3Z0ZXBpMzJfcGQgKF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfNTEyKChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfbW01MTJfY3Z0ZXBpMzJfcGQoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX3NldHplcm9fcGQoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9jdnRlcGkzMmxvX3BkKF9fbTUxMmkgX19BKQp7CiAgcmV0dXJuIChfX201MTJkKSBfbW01MTJfY3Z0ZXBpMzJfcGQoX21tNTEyX2Nhc3RzaTUxMl9zaTI1NihfX0EpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfY3Z0ZXBpMzJsb19wZChfX201MTJkIF9fVywgX19tbWFzazggX19VLF9fbTUxMmkgX19BKQp7CiAgcmV0dXJuIChfX201MTJkKSBfbW01MTJfbWFza19jdnRlcGkzMl9wZChfX1csIF9fVSwgX21tNTEyX2Nhc3RzaTUxMl9zaTI1NihfX0EpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfY3Z0ZXBpMzJfcHMgKF9fbTUxMmkgX19BKQp7CiAgcmV0dXJuIChfX201MTIpX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoKF9fdjE2c2kpX19BLCBfX3YxNnNmKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19jdnRlcGkzMl9wcyAoX19tNTEyIF9fVywgX19tbWFzazE2IF9fVSwgX19tNTEyaSBfX0EpCnsKICByZXR1cm4gKF9fbTUxMilfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc181MTIoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl9jdnRlcGkzMl9wcyhfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTIgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9jdnRlcGkzMl9wcyAoX19tbWFzazE2IF9fVSwgX19tNTEyaSBfX0EpCnsKICByZXR1cm4gKF9fbTUxMilfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc181MTIoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl9jdnRlcGkzMl9wcyhfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfc2V0emVyb19wcygpKTsKfQoKc3RhdGljIF9faW5saW5lIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9jdnRlcHUzMl9wZChfX20yNTZpIF9fQSkKewogIHJldHVybiAoX19tNTEyZClfX2J1aWx0aW5fY29udmVydHZlY3RvcigoX192OHN1KV9fQSwgX192OGRmKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfY3Z0ZXB1MzJfcGQgKF9fbTUxMmQgX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19BKQp7CiAgcmV0dXJuIChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzUxMigoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX2N2dGVwdTMyX3BkKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9jdnRlcHUzMl9wZCAoX19tbWFzazggX19VLCBfX20yNTZpIF9fQSkKewogIHJldHVybiAoX19tNTEyZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF81MTIoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl9jdnRlcHUzMl9wZChfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfbW01MTJfc2V0emVyb19wZCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2N2dGVwdTMybG9fcGQoX19tNTEyaSBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmQpIF9tbTUxMl9jdnRlcHUzMl9wZChfbW01MTJfY2FzdHNpNTEyX3NpMjU2KF9fQSkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19jdnRlcHUzMmxvX3BkKF9fbTUxMmQgX19XLCBfX21tYXNrOCBfX1UsX19tNTEyaSBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmQpIF9tbTUxMl9tYXNrX2N2dGVwdTMyX3BkKF9fVywgX19VLCBfbW01MTJfY2FzdHNpNTEyX3NpMjU2KF9fQSkpOwp9CgojZGVmaW5lIF9tbTUxMl9jdnRfcm91bmRwZF9wcyhBLCBSKSBcCiAgKChfX20yNTYpX19idWlsdGluX2lhMzJfY3Z0cGQycHM1MTJfbWFzaygoX192OGRmKShfX201MTJkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZilfbW0yNTZfc2V0emVyb19wcygpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEsIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfY3Z0X3JvdW5kcGRfcHMoVywgVSwgQSwgUikgXAogICgoX19tMjU2KV9fYnVpbHRpbl9pYTMyX2N2dHBkMnBzNTEyX21hc2soKF9fdjhkZikoX19tNTEyZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpKF9fbTI1NikoVyksIChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X2N2dF9yb3VuZHBkX3BzKFUsIEEsIFIpIFwKICAoKF9fbTI1NilfX2J1aWx0aW5faWEzMl9jdnRwZDJwczUxMl9tYXNrKChfX3Y4ZGYpKF9fbTUxMmQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKV9tbTI1Nl9zZXR6ZXJvX3BzKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2N2dHBkX3BzIChfX201MTJkIF9fQSkKewogIHJldHVybiAoX19tMjU2KSBfX2J1aWx0aW5faWEzMl9jdnRwZDJwczUxMl9tYXNrICgoX192OGRmKSBfX0EsCiAgICAgICAgICAgICAgICAoX192OHNmKSBfbW0yNTZfdW5kZWZpbmVkX3BzICgpLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSAtMSwKICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfY3Z0cGRfcHMgKF9fbTI1NiBfX1csIF9fbW1hc2s4IF9fVSwgX19tNTEyZCBfX0EpCnsKICByZXR1cm4gKF9fbTI1NikgX19idWlsdGluX2lhMzJfY3Z0cGQycHM1MTJfbWFzayAoKF9fdjhkZikgX19BLAogICAgICAgICAgICAgICAgKF9fdjhzZikgX19XLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9jdnRwZF9wcyAoX19tbWFzazggX19VLCBfX201MTJkIF9fQSkKewogIHJldHVybiAoX19tMjU2KSBfX2J1aWx0aW5faWEzMl9jdnRwZDJwczUxMl9tYXNrICgoX192OGRmKSBfX0EsCiAgICAgICAgICAgICAgICAoX192OHNmKSBfbW0yNTZfc2V0emVyb19wcyAoKSwKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfY3Z0cGRfcHNsbyAoX19tNTEyZCBfX0EpCnsKICByZXR1cm4gKF9fbTUxMikgX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjhzZikgX21tNTEyX2N2dHBkX3BzKF9fQSksCiAgICAgICAgICAgICAgICAoX192OHNmKSBfbW0yNTZfc2V0emVyb19wcyAoKSwKICAgICAgICAgICAgICAgIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTIgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2N2dHBkX3BzbG8gKF9fbTUxMiBfX1csIF9fbW1hc2s4IF9fVSxfX201MTJkIF9fQSkKewogIHJldHVybiAoX19tNTEyKSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvciAoCiAgICAgICAgICAgICAgICAoX192OHNmKSBfbW01MTJfbWFza19jdnRwZF9wcyAoX21tNTEyX2Nhc3RwczUxMl9wczI1NihfX1cpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fVSwgX19BKSwKICAgICAgICAgICAgICAgIChfX3Y4c2YpIF9tbTI1Nl9zZXR6ZXJvX3BzICgpLAogICAgICAgICAgICAgICAgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSk7Cn0KCiNkZWZpbmUgX21tNTEyX2N2dF9yb3VuZHBzX3BoKEEsIEkpIFwKICAoKF9fbTI1NmkpX19idWlsdGluX2lhMzJfdmN2dHBzMnBoNTEyX21hc2soKF9fdjE2c2YpKF9fbTUxMikoQSksIChpbnQpKEkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKV9tbTI1Nl91bmRlZmluZWRfc2kyNTYoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KS0xKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfY3Z0X3JvdW5kcHNfcGgoVSwgVywgQSwgSSkgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl92Y3Z0cHMycGg1MTJfbWFzaygoX192MTZzZikoX19tNTEyKShBKSwgKGludCkoSSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpKF9fbTI1NmkpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpKFcpKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X2N2dF9yb3VuZHBzX3BoKFcsIEEsIEkpIFwKICAoKF9fbTI1NmkpX19idWlsdGluX2lhMzJfdmN2dHBzMnBoNTEyX21hc2soKF9fdjE2c2YpKF9fbTUxMikoQSksIChpbnQpKEkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikoVykpKQoKI2RlZmluZSBfbW01MTJfY3Z0cHNfcGggICAgICAgX21tNTEyX2N2dF9yb3VuZHBzX3BoCiNkZWZpbmUgX21tNTEyX21hc2tfY3Z0cHNfcGggIF9tbTUxMl9tYXNrX2N2dF9yb3VuZHBzX3BoCiNkZWZpbmUgX21tNTEyX21hc2t6X2N2dHBzX3BoIF9tbTUxMl9tYXNrel9jdnRfcm91bmRwc19waAoKI2RlZmluZSBfbW01MTJfY3Z0X3JvdW5kcGhfcHMoQSwgUikgXAogICgoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3ZjdnRwaDJwczUxMl9tYXNrKChfX3YxNmhpKShfX20yNTZpKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl91bmRlZmluZWRfcHMoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpLTEsIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfY3Z0X3JvdW5kcGhfcHMoVywgVSwgQSwgUikgXAogICgoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3ZjdnRwaDJwczUxMl9tYXNrKChfX3YxNmhpKShfX20yNTZpKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKShfX201MTIpKFcpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikoVSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X2N2dF9yb3VuZHBoX3BzKFUsIEEsIFIpIFwKICAoKF9fbTUxMilfX2J1aWx0aW5faWEzMl92Y3Z0cGgycHM1MTJfbWFzaygoX192MTZoaSkoX19tMjU2aSkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfc2V0emVyb19wcygpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikoVSksIChpbnQpKFIpKSkKCgpzdGF0aWMgIF9faW5saW5lIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2N2dHBoX3BzKF9fbTI1NmkgX19BKQp7CiAgcmV0dXJuIChfX201MTIpIF9fYnVpbHRpbl9pYTMyX3ZjdnRwaDJwczUxMl9tYXNrICgoX192MTZoaSkgX19BLAogICAgICAgICAgICAgICAgKF9fdjE2c2YpCiAgICAgICAgICAgICAgICBfbW01MTJfc2V0emVyb19wcyAoKSwKICAgICAgICAgICAgICAgIChfX21tYXNrMTYpIC0xLAogICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19jdnRwaF9wcyAoX19tNTEyIF9fVywgX19tbWFzazE2IF9fVSwgX19tMjU2aSBfX0EpCnsKICByZXR1cm4gKF9fbTUxMikgX19idWlsdGluX2lhMzJfdmN2dHBoMnBzNTEyX21hc2sgKChfX3YxNmhpKSBfX0EsCiAgICAgICAgICAgICAgICAgKF9fdjE2c2YpIF9fVywKICAgICAgICAgICAgICAgICAoX19tbWFzazE2KSBfX1UsCiAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfY3Z0cGhfcHMgKF9fbW1hc2sxNiBfX1UsIF9fbTI1NmkgX19BKQp7CiAgcmV0dXJuIChfX201MTIpIF9fYnVpbHRpbl9pYTMyX3ZjdnRwaDJwczUxMl9tYXNrICgoX192MTZoaSkgX19BLAogICAgICAgICAgICAgICAgIChfX3YxNnNmKSBfbW01MTJfc2V0emVyb19wcyAoKSwKICAgICAgICAgICAgICAgICAoX19tbWFzazE2KSBfX1UsCiAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW01MTJfY3Z0dF9yb3VuZHBkX2VwaTMyKEEsIFIpIFwKICAoKF9fbTI1NmkpX19idWlsdGluX2lhMzJfY3Z0dHBkMmRxNTEyX21hc2soKF9fdjhkZikoX19tNTEyZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfc2V0emVyb19zaTI1NigpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza19jdnR0X3JvdW5kcGRfZXBpMzIoVywgVSwgQSwgUikgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9jdnR0cGQyZHE1MTJfbWFzaygoX192OGRmKShfX201MTJkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKShfX20yNTZpKShXKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9jdnR0X3JvdW5kcGRfZXBpMzIoVSwgQSwgUikgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9jdnR0cGQyZHE1MTJfbWFzaygoX192OGRmKShfX201MTJkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9jdnR0cGRfZXBpMzIoX19tNTEyZCBfX2EpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfY3Z0dHBkMmRxNTEyX21hc2soKF9fdjhkZikgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkgLTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19jdnR0cGRfZXBpMzIgKF9fbTI1NmkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTUxMmQgX19BKQp7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl9jdnR0cGQyZHE1MTJfbWFzayAoKF9fdjhkZikgX19BLAogICAgICAgICAgICAgICAgICAoX192OHNpKSBfX1csCiAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfY3Z0dHBkX2VwaTMyIChfX21tYXNrOCBfX1UsIF9fbTUxMmQgX19BKQp7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl9jdnR0cGQyZHE1MTJfbWFzayAoKF9fdjhkZikgX19BLAogICAgICAgICAgICAgICAgICAoX192OHNpKSBfbW0yNTZfc2V0emVyb19zaTI1NiAoKSwKICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCiNkZWZpbmUgX21tNTEyX2N2dHRfcm91bmRwc19lcGkzMihBLCBSKSBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX2N2dHRwczJkcTUxMl9tYXNrKChfX3YxNnNmKShfX201MTIpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNiktMSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza19jdnR0X3JvdW5kcHNfZXBpMzIoVywgVSwgQSwgUikgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9jdnR0cHMyZHE1MTJfbWFzaygoX192MTZzZikoX19tNTEyKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSkoX19tNTEyaSkoVyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikoVSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X2N2dHRfcm91bmRwc19lcGkzMihVLCBBLCBSKSBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX2N2dHRwczJkcTUxMl9tYXNrKChfX3YxNnNmKShfX201MTIpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikoVSksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZSBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfY3Z0dHBzX2VwaTMyKF9fbTUxMiBfX2EpCnsKICByZXR1cm4gKF9fbTUxMmkpCiAgICBfX2J1aWx0aW5faWEzMl9jdnR0cHMyZHE1MTJfbWFzaygoX192MTZzZikgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpIF9tbTUxMl9zZXR6ZXJvX3NpNTEyICgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikgLTEsIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2N2dHRwc19lcGkzMiAoX19tNTEyaSBfX1csIF9fbW1hc2sxNiBfX1UsIF9fbTUxMiBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmkpIF9fYnVpbHRpbl9pYTMyX2N2dHRwczJkcTUxMl9tYXNrICgoX192MTZzZikgX19BLAogICAgICAgICAgICAgICAgICAoX192MTZzaSkgX19XLAogICAgICAgICAgICAgICAgICAoX19tbWFzazE2KSBfX1UsCiAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9jdnR0cHNfZXBpMzIgKF9fbW1hc2sxNiBfX1UsIF9fbTUxMiBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmkpIF9fYnVpbHRpbl9pYTMyX2N2dHRwczJkcTUxMl9tYXNrICgoX192MTZzZikgX19BLAogICAgICAgICAgICAgICAgICAoX192MTZzaSkgX21tNTEyX3NldHplcm9fc2k1MTIgKCksCiAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpIF9fVSwKICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW01MTJfY3Z0X3JvdW5kcHNfZXBpMzIoQSwgUikgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9jdnRwczJkcTUxMl9tYXNrKChfX3YxNnNmKShfX201MTIpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX21tNTEyX3NldHplcm9fc2k1MTIoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpLTEsIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfY3Z0X3JvdW5kcHNfZXBpMzIoVywgVSwgQSwgUikgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9jdnRwczJkcTUxMl9tYXNrKChfX3YxNnNmKShfX201MTIpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpKF9fbTUxMmkpKFcpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikoVSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X2N2dF9yb3VuZHBzX2VwaTMyKFUsIEEsIFIpIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfY3Z0cHMyZHE1MTJfbWFzaygoX192MTZzZikoX19tNTEyKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KShVKSwgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2N2dHBzX2VwaTMyIChfX201MTIgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKSBfX2J1aWx0aW5faWEzMl9jdnRwczJkcTUxMl9tYXNrICgoX192MTZzZikgX19BLAogICAgICAgICAgICAgICAgIChfX3YxNnNpKSBfbW01MTJfdW5kZWZpbmVkX2VwaTMyICgpLAogICAgICAgICAgICAgICAgIChfX21tYXNrMTYpIC0xLAogICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2N2dHBzX2VwaTMyIChfX201MTJpIF9fVywgX19tbWFzazE2IF9fVSwgX19tNTEyIF9fQSkKewogIHJldHVybiAoX19tNTEyaSkgX19idWlsdGluX2lhMzJfY3Z0cHMyZHE1MTJfbWFzayAoKF9fdjE2c2YpIF9fQSwKICAgICAgICAgICAgICAgICAoX192MTZzaSkgX19XLAogICAgICAgICAgICAgICAgIChfX21tYXNrMTYpIF9fVSwKICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfY3Z0cHNfZXBpMzIgKF9fbW1hc2sxNiBfX1UsIF9fbTUxMiBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmkpIF9fYnVpbHRpbl9pYTMyX2N2dHBzMmRxNTEyX21hc2sgKChfX3YxNnNmKSBfX0EsCiAgICAgICAgICAgICAgICAgKF9fdjE2c2kpCiAgICAgICAgICAgICAgICAgX21tNTEyX3NldHplcm9fc2k1MTIgKCksCiAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikgX19VLAogICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCiNkZWZpbmUgX21tNTEyX2N2dF9yb3VuZHBkX2VwaTMyKEEsIFIpIFwKICAoKF9fbTI1NmkpX19idWlsdGluX2lhMzJfY3Z0cGQyZHE1MTJfbWFzaygoX192OGRmKShfX201MTJkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X3NldHplcm9fc2kyNTYoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza19jdnRfcm91bmRwZF9lcGkzMihXLCBVLCBBLCBSKSBcCiAgKChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX2N2dHBkMmRxNTEyX21hc2soKF9fdjhkZikoX19tNTEyZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKShfX20yNTZpKShXKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X2N2dF9yb3VuZHBkX2VwaTMyKFUsIEEsIFIpIFwKICAoKF9fbTI1NmkpX19idWlsdGluX2lhMzJfY3Z0cGQyZHE1MTJfbWFzaygoX192OGRmKShfX201MTJkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X3NldHplcm9fc2kyNTYoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9jdnRwZF9lcGkzMiAoX19tNTEyZCBfX0EpCnsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX2N2dHBkMmRxNTEyX21hc2sgKChfX3Y4ZGYpIF9fQSwKICAgICAgICAgICAgICAgICAoX192OHNpKQogICAgICAgICAgICAgICAgIF9tbTI1Nl91bmRlZmluZWRfc2kyNTYgKCksCiAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSAtMSwKICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19jdnRwZF9lcGkzMiAoX19tMjU2aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tNTEyZCBfX0EpCnsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX2N2dHBkMmRxNTEyX21hc2sgKChfX3Y4ZGYpIF9fQSwKICAgICAgICAgICAgICAgICAoX192OHNpKSBfX1csCiAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2N2dHBkX2VwaTMyIChfX21tYXNrOCBfX1UsIF9fbTUxMmQgX19BKQp7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl9jdnRwZDJkcTUxMl9tYXNrICgoX192OGRmKSBfX0EsCiAgICAgICAgICAgICAgICAgKF9fdjhzaSkKICAgICAgICAgICAgICAgICBfbW0yNTZfc2V0emVyb19zaTI1NiAoKSwKICAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgojZGVmaW5lIF9tbTUxMl9jdnRfcm91bmRwc19lcHUzMihBLCBSKSBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX2N2dHBzMnVkcTUxMl9tYXNrKChfX3YxNnNmKShfX201MTIpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNiktMSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza19jdnRfcm91bmRwc19lcHUzMihXLCBVLCBBLCBSKSBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX2N2dHBzMnVkcTUxMl9tYXNrKChfX3YxNnNmKShfX201MTIpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKShfX201MTJpKShXKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfY3Z0X3JvdW5kcHNfZXB1MzIoVSwgQSwgUikgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9jdnRwczJ1ZHE1MTJfbWFzaygoX192MTZzZikoX19tNTEyKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfc2V0emVyb19zaTUxMigpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpKFUpLCAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfY3Z0cHNfZXB1MzIgKCBfX201MTIgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKSBfX2J1aWx0aW5faWEzMl9jdnRwczJ1ZHE1MTJfbWFzayAoKF9fdjE2c2YpIF9fQSxcCiAgICAgICAgICAgICAgICAgIChfX3YxNnNpKVwKICAgICAgICAgICAgICAgICAgX21tNTEyX3VuZGVmaW5lZF9lcGkzMiAoKSwKICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikgLTEsXAogICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19jdnRwc19lcHUzMiAoX19tNTEyaSBfX1csIF9fbW1hc2sxNiBfX1UsIF9fbTUxMiBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmkpIF9fYnVpbHRpbl9pYTMyX2N2dHBzMnVkcTUxMl9tYXNrICgoX192MTZzZikgX19BLAogICAgICAgICAgICAgICAgICAoX192MTZzaSkgX19XLAogICAgICAgICAgICAgICAgICAoX19tbWFzazE2KSBfX1UsCiAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9jdnRwc19lcHUzMiAoIF9fbW1hc2sxNiBfX1UsIF9fbTUxMiBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmkpIF9fYnVpbHRpbl9pYTMyX2N2dHBzMnVkcTUxMl9tYXNrICgoX192MTZzZikgX19BLAogICAgICAgICAgICAgICAgICAoX192MTZzaSkKICAgICAgICAgICAgICAgICAgX21tNTEyX3NldHplcm9fc2k1MTIgKCksCiAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpIF9fVSAsCiAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCiNkZWZpbmUgX21tNTEyX2N2dF9yb3VuZHBkX2VwdTMyKEEsIFIpIFwKICAoKF9fbTI1NmkpX19idWlsdGluX2lhMzJfY3Z0cGQydWRxNTEyX21hc2soKF9fdjhkZikoX19tNTEyZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfc2V0emVyb19zaTI1NigpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza19jdnRfcm91bmRwZF9lcHUzMihXLCBVLCBBLCBSKSBcCiAgKChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX2N2dHBkMnVkcTUxMl9tYXNrKChfX3Y4ZGYpKF9fbTUxMmQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpKF9fbTI1NmkpKFcpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X2N2dF9yb3VuZHBkX2VwdTMyKFUsIEEsIFIpIFwKICAoKF9fbTI1NmkpX19idWlsdGluX2lhMzJfY3Z0cGQydWRxNTEyX21hc2soKF9fdjhkZikoX19tNTEyZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfc2V0emVyb19zaTI1NigpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9jdnRwZF9lcHUzMiAoX19tNTEyZCBfX0EpCnsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX2N2dHBkMnVkcTUxMl9tYXNrICgoX192OGRmKSBfX0EsCiAgICAgICAgICAgICAgICAgIChfX3Y4c2kpCiAgICAgICAgICAgICAgICAgIF9tbTI1Nl91bmRlZmluZWRfc2kyNTYgKCksCiAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkgLTEsCiAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2N2dHBkX2VwdTMyIChfX20yNTZpIF9fVywgX19tbWFzazggX19VLCBfX201MTJkIF9fQSkKewogIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfY3Z0cGQydWRxNTEyX21hc2sgKChfX3Y4ZGYpIF9fQSwKICAgICAgICAgICAgICAgICAgKF9fdjhzaSkgX19XLAogICAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2N2dHBkX2VwdTMyIChfX21tYXNrOCBfX1UsIF9fbTUxMmQgX19BKQp7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl9jdnRwZDJ1ZHE1MTJfbWFzayAoKF9fdjhkZikgX19BLAogICAgICAgICAgICAgICAgICAoX192OHNpKQogICAgICAgICAgICAgICAgICBfbW0yNTZfc2V0emVyb19zaTI1NiAoKSwKICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGRvdWJsZSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2N2dHNkX2Y2NChfX201MTJkIF9fYSkKewogIHJldHVybiBfX2FbMF07Cn0KCnN0YXRpYyBfX2lubGluZV9fIGZsb2F0IF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfY3Z0c3NfZjMyKF9fbTUxMiBfX2EpCnsKICByZXR1cm4gX19hWzBdOwp9CgovKiBVbnBhY2sgYW5kIEludGVybGVhdmUgKi8KCnN0YXRpYyBfX2lubGluZSBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfdW5wYWNraGlfcGQoX19tNTEyZCBfX2EsIF9fbTUxMmQgX19iKQp7CiAgcmV0dXJuIChfX201MTJkKV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y4ZGYpX19hLCAoX192OGRmKV9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgOSwgMSsyLCA5KzIsIDErNCwgOSs0LCAxKzYsIDkrNik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX3VucGFja2hpX3BkKF9fbTUxMmQgX19XLCBfX21tYXNrOCBfX1UsIF9fbTUxMmQgX19BLCBfX201MTJkIF9fQikKewogIHJldHVybiAoX19tNTEyZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF81MTIoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl91bnBhY2toaV9wZChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel91bnBhY2toaV9wZChfX21tYXNrOCBfX1UsIF9fbTUxMmQgX19BLCBfX201MTJkIF9fQikKewogIHJldHVybiAoX19tNTEyZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF81MTIoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl91bnBhY2toaV9wZChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl9zZXR6ZXJvX3BkKCkpOwp9CgpzdGF0aWMgX19pbmxpbmUgX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3VucGFja2xvX3BkKF9fbTUxMmQgX19hLCBfX201MTJkIF9fYikKewogIHJldHVybiAoX19tNTEyZClfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192OGRmKV9fYSwgKF9fdjhkZilfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDgsIDArMiwgOCsyLCAwKzQsIDgrNCwgMCs2LCA4KzYpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza191bnBhY2tsb19wZChfX201MTJkIF9fVywgX19tbWFzazggX19VLCBfX201MTJkIF9fQSwgX19tNTEyZCBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfNTEyKChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfbW01MTJfdW5wYWNrbG9fcGQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfdW5wYWNrbG9fcGQgKF9fbW1hc2s4IF9fVSwgX19tNTEyZCBfX0EsIF9fbTUxMmQgX19CKQp7CiAgcmV0dXJuIChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzUxMigoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX3VucGFja2xvX3BkKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX3NldHplcm9fcGQoKSk7Cn0KCnN0YXRpYyBfX2lubGluZSBfX201MTIgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl91bnBhY2toaV9wcyhfX201MTIgX19hLCBfX201MTIgX19iKQp7CiAgcmV0dXJuIChfX201MTIpX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjE2c2YpX19hLCAoX192MTZzZilfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiwgICAgMTgsICAgIDMsICAgIDE5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIrNCwgIDE4KzQsICAzKzQsICAxOSs0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIrOCwgIDE4KzgsICAzKzgsICAxOSs4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIrMTIsIDE4KzEyLCAzKzEyLCAxOSsxMik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfdW5wYWNraGlfcHMoX19tNTEyIF9fVywgX19tbWFzazE2IF9fVSwgX19tNTEyIF9fQSwgX19tNTEyIF9fQikKewogIHJldHVybiAoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzUxMigoX19tbWFzazE2KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl91bnBhY2toaV9wcyhfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X3VucGFja2hpX3BzIChfX21tYXNrMTYgX19VLCBfX201MTIgX19BLCBfX201MTIgX19CKQp7CiAgcmV0dXJuIChfX201MTIpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfNTEyKChfX21tYXNrMTYpIF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX21tNTEyX3VucGFja2hpX3BzKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX21tNTEyX3NldHplcm9fcHMoKSk7Cn0KCnN0YXRpYyBfX2lubGluZSBfX201MTIgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl91bnBhY2tsb19wcyhfX201MTIgX19hLCBfX201MTIgX19iKQp7CiAgcmV0dXJuIChfX201MTIpX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjE2c2YpX19hLCAoX192MTZzZilfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgICAgMTYsICAgIDEsICAgIDE3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDArNCwgIDE2KzQsICAxKzQsICAxNys0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDArOCwgIDE2KzgsICAxKzgsICAxNys4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDArMTIsIDE2KzEyLCAxKzEyLCAxNysxMik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfdW5wYWNrbG9fcHMoX19tNTEyIF9fVywgX19tbWFzazE2IF9fVSwgX19tNTEyIF9fQSwgX19tNTEyIF9fQikKewogIHJldHVybiAoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzUxMigoX19tbWFzazE2KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl91bnBhY2tsb19wcyhfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X3VucGFja2xvX3BzIChfX21tYXNrMTYgX19VLCBfX201MTIgX19BLCBfX201MTIgX19CKQp7CiAgcmV0dXJuIChfX201MTIpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfNTEyKChfX21tYXNrMTYpIF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX21tNTEyX3VucGFja2xvX3BzKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX21tNTEyX3NldHplcm9fcHMoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl91bnBhY2toaV9lcGkzMihfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjE2c2kpX19BLCAoX192MTZzaSlfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIsICAgIDE4LCAgICAzLCAgICAxOSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMis0LCAgMTgrNCwgIDMrNCwgIDE5KzQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIrOCwgIDE4KzgsICAzKzgsICAxOSs4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyKzEyLCAxOCsxMiwgMysxMiwgMTkrMTIpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza191bnBhY2toaV9lcGkzMihfX201MTJpIF9fVywgX19tbWFzazE2IF9fVSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfNTEyKChfX21tYXNrMTYpIF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX21tNTEyX3VucGFja2hpX2VwaTMyKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X3VucGFja2hpX2VwaTMyKF9fbW1hc2sxNiBfX1UsIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzUxMigoX19tbWFzazE2KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl91bnBhY2toaV9lcGkzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfdW5wYWNrbG9fZXBpMzIoX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3YxNnNpKV9fQSwgKF9fdjE2c2kpX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAgICAxNiwgICAgMSwgICAgMTcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDArNCwgIDE2KzQsICAxKzQsICAxNys0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKzgsICAxNis4LCAgMSs4LCAgMTcrOCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCsxMiwgMTYrMTIsIDErMTIsIDE3KzEyKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfdW5wYWNrbG9fZXBpMzIoX19tNTEyaSBfX1csIF9fbW1hc2sxNiBfX1UsIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzUxMigoX19tbWFzazE2KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl91bnBhY2tsb19lcGkzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel91bnBhY2tsb19lcGkzMihfX21tYXNrMTYgX19VLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF81MTIoKF9fbW1hc2sxNikgX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfdW5wYWNrbG9fZXBpMzIoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3VucGFja2hpX2VwaTY0KF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192OGRpKV9fQSwgKF9fdjhkaSlfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIDksIDErMiwgOSsyLCAxKzQsIDkrNCwgMSs2LCA5KzYpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza191bnBhY2toaV9lcGk2NChfX201MTJpIF9fVywgX19tbWFzazggX19VLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV81MTIoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl91bnBhY2toaV9lcGk2NChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel91bnBhY2toaV9lcGk2NChfX21tYXNrOCBfX1UsIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzUxMigoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX3VucGFja2hpX2VwaTY0KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl91bnBhY2tsb19lcGk2NCAoX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y4ZGkpX19BLCAoX192OGRpKV9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgOCwgMCsyLCA4KzIsIDArNCwgOCs0LCAwKzYsIDgrNik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX3VucGFja2xvX2VwaTY0IChfX201MTJpIF9fVywgX19tbWFzazggX19VLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV81MTIoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl91bnBhY2tsb19lcGk2NChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel91bnBhY2tsb19lcGk2NCAoX19tbWFzazggX19VLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV81MTIoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl91bnBhY2tsb19lcGk2NChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgoKLyogU0lNRCBsb2FkIG9wcyAqLwoKc3RhdGljIF9faW5saW5lIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9sb2FkdV9zaTUxMiAodm9pZCBjb25zdCAqX19QKQp7CiAgc3RydWN0IF9fbG9hZHVfc2k1MTIgewogICAgX19tNTEyaV91IF9fdjsKICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsKICByZXR1cm4gKChjb25zdCBzdHJ1Y3QgX19sb2FkdV9zaTUxMiopX19QKS0+X192Owp9CgpzdGF0aWMgX19pbmxpbmUgX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2xvYWR1X2VwaTMyICh2b2lkIGNvbnN0ICpfX1ApCnsKICBzdHJ1Y3QgX19sb2FkdV9lcGkzMiB7CiAgICBfX201MTJpX3UgX192OwogIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOwogIHJldHVybiAoKGNvbnN0IHN0cnVjdCBfX2xvYWR1X2VwaTMyKilfX1ApLT5fX3Y7Cn0KCnN0YXRpYyBfX2lubGluZSBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19sb2FkdV9lcGkzMiAoX19tNTEyaSBfX1csIF9fbW1hc2sxNiBfX1UsIHZvaWQgY29uc3QgKl9fUCkKewogIHJldHVybiAoX19tNTEyaSkgX19idWlsdGluX2lhMzJfbG9hZGRxdXNpNTEyX21hc2sgKChjb25zdCBpbnQgKikgX19QLAogICAgICAgICAgICAgICAgICAoX192MTZzaSkgX19XLAogICAgICAgICAgICAgICAgICAoX19tbWFzazE2KSBfX1UpOwp9CgoKc3RhdGljIF9faW5saW5lIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9sb2FkdV9lcGkzMihfX21tYXNrMTYgX19VLCB2b2lkIGNvbnN0ICpfX1ApCnsKICByZXR1cm4gKF9fbTUxMmkpIF9fYnVpbHRpbl9pYTMyX2xvYWRkcXVzaTUxMl9tYXNrICgoY29uc3QgaW50ICopX19QLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9tbTUxMl9zZXR6ZXJvX3NpNTEyICgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZSBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbG9hZHVfZXBpNjQgKHZvaWQgY29uc3QgKl9fUCkKewogIHN0cnVjdCBfX2xvYWR1X2VwaTY0IHsKICAgIF9fbTUxMmlfdSBfX3Y7CiAgfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19fKSk7CiAgcmV0dXJuICgoY29uc3Qgc3RydWN0IF9fbG9hZHVfZXBpNjQqKV9fUCktPl9fdjsKfQoKc3RhdGljIF9faW5saW5lIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2xvYWR1X2VwaTY0IChfX201MTJpIF9fVywgX19tbWFzazggX19VLCB2b2lkIGNvbnN0ICpfX1ApCnsKICByZXR1cm4gKF9fbTUxMmkpIF9fYnVpbHRpbl9pYTMyX2xvYWRkcXVkaTUxMl9tYXNrICgoY29uc3QgbG9uZyBsb25nICopIF9fUCwKICAgICAgICAgICAgICAgICAgKF9fdjhkaSkgX19XLAogICAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZSBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfbG9hZHVfZXBpNjQoX19tbWFzazggX19VLCB2b2lkIGNvbnN0ICpfX1ApCnsKICByZXR1cm4gKF9fbTUxMmkpIF9fYnVpbHRpbl9pYTMyX2xvYWRkcXVkaTUxMl9tYXNrICgoY29uc3QgbG9uZyBsb25nICopX19QLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX21tNTEyX3NldHplcm9fc2k1MTIgKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmUgX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19sb2FkdV9wcyAoX19tNTEyIF9fVywgX19tbWFzazE2IF9fVSwgdm9pZCBjb25zdCAqX19QKQp7CiAgcmV0dXJuIChfX201MTIpIF9fYnVpbHRpbl9pYTMyX2xvYWR1cHM1MTJfbWFzayAoKGNvbnN0IGZsb2F0ICopIF9fUCwKICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKSBfX1csCiAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmUgX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfbG9hZHVfcHMoX19tbWFzazE2IF9fVSwgdm9pZCBjb25zdCAqX19QKQp7CiAgcmV0dXJuIChfX201MTIpIF9fYnVpbHRpbl9pYTMyX2xvYWR1cHM1MTJfbWFzayAoKGNvbnN0IGZsb2F0ICopX19QLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9tbTUxMl9zZXR6ZXJvX3BzICgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZSBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19sb2FkdV9wZCAoX19tNTEyZCBfX1csIF9fbW1hc2s4IF9fVSwgdm9pZCBjb25zdCAqX19QKQp7CiAgcmV0dXJuIChfX201MTJkKSBfX2J1aWx0aW5faWEzMl9sb2FkdXBkNTEyX21hc2sgKChjb25zdCBkb3VibGUgKikgX19QLAogICAgICAgICAgICAgICAgKF9fdjhkZikgX19XLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmUgX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2xvYWR1X3BkKF9fbW1hc2s4IF9fVSwgdm9pZCBjb25zdCAqX19QKQp7CiAgcmV0dXJuIChfX201MTJkKSBfX2J1aWx0aW5faWEzMl9sb2FkdXBkNTEyX21hc2sgKChjb25zdCBkb3VibGUgKilfX1AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9tbTUxMl9zZXR6ZXJvX3BkICgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZSBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbG9hZHVfcGQodm9pZCBjb25zdCAqX19wKQp7CiAgc3RydWN0IF9fbG9hZHVfcGQgewogICAgX19tNTEyZF91IF9fdjsKICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsKICByZXR1cm4gKChjb25zdCBzdHJ1Y3QgX19sb2FkdV9wZCopX19wKS0+X192Owp9CgpzdGF0aWMgX19pbmxpbmUgX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbG9hZHVfcHModm9pZCBjb25zdCAqX19wKQp7CiAgc3RydWN0IF9fbG9hZHVfcHMgewogICAgX19tNTEyX3UgX192OwogIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOwogIHJldHVybiAoKGNvbnN0IHN0cnVjdCBfX2xvYWR1X3BzKilfX3ApLT5fX3Y7Cn0KCnN0YXRpYyBfX2lubGluZSBfX201MTIgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9sb2FkX3BzKHZvaWQgY29uc3QgKl9fcCkKewogIHJldHVybiAqKGNvbnN0IF9fbTUxMiopX19wOwp9CgpzdGF0aWMgX19pbmxpbmUgX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19sb2FkX3BzIChfX201MTIgX19XLCBfX21tYXNrMTYgX19VLCB2b2lkIGNvbnN0ICpfX1ApCnsKICByZXR1cm4gKF9fbTUxMikgX19idWlsdGluX2lhMzJfbG9hZGFwczUxMl9tYXNrICgoY29uc3QgX192MTZzZiAqKSBfX1AsCiAgICAgICAgICAgICAgICAgICAoX192MTZzZikgX19XLAogICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikgX19VKTsKfQoKc3RhdGljIF9faW5saW5lIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2xvYWRfcHMoX19tbWFzazE2IF9fVSwgdm9pZCBjb25zdCAqX19QKQp7CiAgcmV0dXJuIChfX201MTIpIF9fYnVpbHRpbl9pYTMyX2xvYWRhcHM1MTJfbWFzayAoKGNvbnN0IF9fdjE2c2YgKilfX1AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX21tNTEyX3NldHplcm9fcHMgKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikgX19VKTsKfQoKc3RhdGljIF9faW5saW5lIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9sb2FkX3BkKHZvaWQgY29uc3QgKl9fcCkKewogIHJldHVybiAqKGNvbnN0IF9fbTUxMmQqKV9fcDsKfQoKc3RhdGljIF9faW5saW5lIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2xvYWRfcGQgKF9fbTUxMmQgX19XLCBfX21tYXNrOCBfX1UsIHZvaWQgY29uc3QgKl9fUCkKewogIHJldHVybiAoX19tNTEyZCkgX19idWlsdGluX2lhMzJfbG9hZGFwZDUxMl9tYXNrICgoY29uc3QgX192OGRmICopIF9fUCwKICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKSBfX1csCiAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmUgX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2xvYWRfcGQoX19tbWFzazggX19VLCB2b2lkIGNvbnN0ICpfX1ApCnsKICByZXR1cm4gKF9fbTUxMmQpIF9fYnVpbHRpbl9pYTMyX2xvYWRhcGQ1MTJfbWFzayAoKGNvbnN0IF9fdjhkZiAqKV9fUCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX21tNTEyX3NldHplcm9fcGQgKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9sb2FkX3NpNTEyICh2b2lkIGNvbnN0ICpfX1ApCnsKICByZXR1cm4gKihjb25zdCBfX201MTJpICopIF9fUDsKfQoKc3RhdGljIF9faW5saW5lIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9sb2FkX2VwaTMyICh2b2lkIGNvbnN0ICpfX1ApCnsKICByZXR1cm4gKihjb25zdCBfX201MTJpICopIF9fUDsKfQoKc3RhdGljIF9faW5saW5lIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9sb2FkX2VwaTY0ICh2b2lkIGNvbnN0ICpfX1ApCnsKICByZXR1cm4gKihjb25zdCBfX201MTJpICopIF9fUDsKfQoKLyogU0lNRCBzdG9yZSBvcHMgKi8KCnN0YXRpYyBfX2lubGluZSB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfc3RvcmV1X2VwaTY0ICh2b2lkICpfX1AsIF9fbTUxMmkgX19BKQp7CiAgc3RydWN0IF9fc3RvcmV1X2VwaTY0IHsKICAgIF9fbTUxMmlfdSBfX3Y7CiAgfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19fKSk7CiAgKChzdHJ1Y3QgX19zdG9yZXVfZXBpNjQqKV9fUCktPl9fdiA9IF9fQTsKfQoKc3RhdGljIF9faW5saW5lIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX3N0b3JldV9lcGk2NCh2b2lkICpfX1AsIF9fbW1hc2s4IF9fVSwgX19tNTEyaSBfX0EpCnsKICBfX2J1aWx0aW5faWEzMl9zdG9yZWRxdWRpNTEyX21hc2sgKChsb25nIGxvbmcgKilfX1AsIChfX3Y4ZGkpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9zdG9yZXVfc2k1MTIgKHZvaWQgKl9fUCwgX19tNTEyaSBfX0EpCnsKICBzdHJ1Y3QgX19zdG9yZXVfc2k1MTIgewogICAgX19tNTEyaV91IF9fdjsKICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsKICAoKHN0cnVjdCBfX3N0b3JldV9zaTUxMiopX19QKS0+X192ID0gX19BOwp9CgpzdGF0aWMgX19pbmxpbmUgdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3N0b3JldV9lcGkzMiAodm9pZCAqX19QLCBfX201MTJpIF9fQSkKewogIHN0cnVjdCBfX3N0b3JldV9lcGkzMiB7CiAgICBfX201MTJpX3UgX192OwogIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOwogICgoc3RydWN0IF9fc3RvcmV1X2VwaTMyKilfX1ApLT5fX3YgPSBfX0E7Cn0KCnN0YXRpYyBfX2lubGluZSB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19zdG9yZXVfZXBpMzIodm9pZCAqX19QLCBfX21tYXNrMTYgX19VLCBfX201MTJpIF9fQSkKewogIF9fYnVpbHRpbl9pYTMyX3N0b3JlZHF1c2k1MTJfbWFzayAoKGludCAqKV9fUCwgKF9fdjE2c2kpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZSB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19zdG9yZXVfcGQodm9pZCAqX19QLCBfX21tYXNrOCBfX1UsIF9fbTUxMmQgX19BKQp7CiAgX19idWlsdGluX2lhMzJfc3RvcmV1cGQ1MTJfbWFzayAoKGRvdWJsZSAqKV9fUCwgKF9fdjhkZikgX19BLCAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZSB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfc3RvcmV1X3BkKHZvaWQgKl9fUCwgX19tNTEyZCBfX0EpCnsKICBzdHJ1Y3QgX19zdG9yZXVfcGQgewogICAgX19tNTEyZF91IF9fdjsKICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsKICAoKHN0cnVjdCBfX3N0b3JldV9wZCopX19QKS0+X192ID0gX19BOwp9CgpzdGF0aWMgX19pbmxpbmUgdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfc3RvcmV1X3BzKHZvaWQgKl9fUCwgX19tbWFzazE2IF9fVSwgX19tNTEyIF9fQSkKewogIF9fYnVpbHRpbl9pYTMyX3N0b3JldXBzNTEyX21hc2sgKChmbG9hdCAqKV9fUCwgKF9fdjE2c2YpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmUgdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3N0b3JldV9wcyh2b2lkICpfX1AsIF9fbTUxMiBfX0EpCnsKICBzdHJ1Y3QgX19zdG9yZXVfcHMgewogICAgX19tNTEyX3UgX192OwogIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOwogICgoc3RydWN0IF9fc3RvcmV1X3BzKilfX1ApLT5fX3YgPSBfX0E7Cn0KCnN0YXRpYyBfX2lubGluZSB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19zdG9yZV9wZCh2b2lkICpfX1AsIF9fbW1hc2s4IF9fVSwgX19tNTEyZCBfX0EpCnsKICBfX2J1aWx0aW5faWEzMl9zdG9yZWFwZDUxMl9tYXNrICgoX192OGRmICopX19QLCAoX192OGRmKSBfX0EsIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9zdG9yZV9wZCh2b2lkICpfX1AsIF9fbTUxMmQgX19BKQp7CiAgKihfX201MTJkKilfX1AgPSBfX0E7Cn0KCnN0YXRpYyBfX2lubGluZSB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19zdG9yZV9wcyh2b2lkICpfX1AsIF9fbW1hc2sxNiBfX1UsIF9fbTUxMiBfX0EpCnsKICBfX2J1aWx0aW5faWEzMl9zdG9yZWFwczUxMl9tYXNrICgoX192MTZzZiAqKV9fUCwgKF9fdjE2c2YpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmUgdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3N0b3JlX3BzKHZvaWQgKl9fUCwgX19tNTEyIF9fQSkKewogICooX19tNTEyKilfX1AgPSBfX0E7Cn0KCnN0YXRpYyBfX2lubGluZSB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfc3RvcmVfc2k1MTIgKHZvaWQgKl9fUCwgX19tNTEyaSBfX0EpCnsKICAqKF9fbTUxMmkgKikgX19QID0gX19BOwp9CgpzdGF0aWMgX19pbmxpbmUgdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3N0b3JlX2VwaTMyICh2b2lkICpfX1AsIF9fbTUxMmkgX19BKQp7CiAgKihfX201MTJpICopIF9fUCA9IF9fQTsKfQoKc3RhdGljIF9faW5saW5lIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9zdG9yZV9lcGk2NCAodm9pZCAqX19QLCBfX201MTJpIF9fQSkKewogICooX19tNTEyaSAqKSBfX1AgPSBfX0E7Cn0KCi8qIE1hc2sgb3BzICovCgpzdGF0aWMgX19pbmxpbmUgX19tbWFzazE2IF9fREVGQVVMVF9GTl9BVFRSUwpfbW01MTJfa25vdChfX21tYXNrMTYgX19NKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2tub3RoaShfX00pOwp9CgovKiBJbnRlZ2VyIGNvbXBhcmUgKi8KCiNkZWZpbmUgX21tNTEyX2NtcGVxX2VwaTMyX21hc2soQSwgQikgXAogICAgX21tNTEyX2NtcF9lcGkzMl9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX0VRKQojZGVmaW5lIF9tbTUxMl9tYXNrX2NtcGVxX2VwaTMyX21hc2soaywgQSwgQikgXAogICAgX21tNTEyX21hc2tfY21wX2VwaTMyX21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9FUSkKI2RlZmluZSBfbW01MTJfY21wZ2VfZXBpMzJfbWFzayhBLCBCKSBcCiAgICBfbW01MTJfY21wX2VwaTMyX21hc2soKEEpLCAoQiksIF9NTV9DTVBJTlRfR0UpCiNkZWZpbmUgX21tNTEyX21hc2tfY21wZ2VfZXBpMzJfbWFzayhrLCBBLCBCKSBcCiAgICBfbW01MTJfbWFza19jbXBfZXBpMzJfbWFzaygoayksIChBKSwgKEIpLCBfTU1fQ01QSU5UX0dFKQojZGVmaW5lIF9tbTUxMl9jbXBndF9lcGkzMl9tYXNrKEEsIEIpIFwKICAgIF9tbTUxMl9jbXBfZXBpMzJfbWFzaygoQSksIChCKSwgX01NX0NNUElOVF9HVCkKI2RlZmluZSBfbW01MTJfbWFza19jbXBndF9lcGkzMl9tYXNrKGssIEEsIEIpIFwKICAgIF9tbTUxMl9tYXNrX2NtcF9lcGkzMl9tYXNrKChrKSwgKEEpLCAoQiksIF9NTV9DTVBJTlRfR1QpCiNkZWZpbmUgX21tNTEyX2NtcGxlX2VwaTMyX21hc2soQSwgQikgXAogICAgX21tNTEyX2NtcF9lcGkzMl9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX0xFKQojZGVmaW5lIF9tbTUxMl9tYXNrX2NtcGxlX2VwaTMyX21hc2soaywgQSwgQikgXAogICAgX21tNTEyX21hc2tfY21wX2VwaTMyX21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9MRSkKI2RlZmluZSBfbW01MTJfY21wbHRfZXBpMzJfbWFzayhBLCBCKSBcCiAgICBfbW01MTJfY21wX2VwaTMyX21hc2soKEEpLCAoQiksIF9NTV9DTVBJTlRfTFQpCiNkZWZpbmUgX21tNTEyX21hc2tfY21wbHRfZXBpMzJfbWFzayhrLCBBLCBCKSBcCiAgICBfbW01MTJfbWFza19jbXBfZXBpMzJfbWFzaygoayksIChBKSwgKEIpLCBfTU1fQ01QSU5UX0xUKQojZGVmaW5lIF9tbTUxMl9jbXBuZXFfZXBpMzJfbWFzayhBLCBCKSBcCiAgICBfbW01MTJfY21wX2VwaTMyX21hc2soKEEpLCAoQiksIF9NTV9DTVBJTlRfTkUpCiNkZWZpbmUgX21tNTEyX21hc2tfY21wbmVxX2VwaTMyX21hc2soaywgQSwgQikgXAogICAgX21tNTEyX21hc2tfY21wX2VwaTMyX21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9ORSkKCiNkZWZpbmUgX21tNTEyX2NtcGVxX2VwdTMyX21hc2soQSwgQikgXAogICAgX21tNTEyX2NtcF9lcHUzMl9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX0VRKQojZGVmaW5lIF9tbTUxMl9tYXNrX2NtcGVxX2VwdTMyX21hc2soaywgQSwgQikgXAogICAgX21tNTEyX21hc2tfY21wX2VwdTMyX21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9FUSkKI2RlZmluZSBfbW01MTJfY21wZ2VfZXB1MzJfbWFzayhBLCBCKSBcCiAgICBfbW01MTJfY21wX2VwdTMyX21hc2soKEEpLCAoQiksIF9NTV9DTVBJTlRfR0UpCiNkZWZpbmUgX21tNTEyX21hc2tfY21wZ2VfZXB1MzJfbWFzayhrLCBBLCBCKSBcCiAgICBfbW01MTJfbWFza19jbXBfZXB1MzJfbWFzaygoayksIChBKSwgKEIpLCBfTU1fQ01QSU5UX0dFKQojZGVmaW5lIF9tbTUxMl9jbXBndF9lcHUzMl9tYXNrKEEsIEIpIFwKICAgIF9tbTUxMl9jbXBfZXB1MzJfbWFzaygoQSksIChCKSwgX01NX0NNUElOVF9HVCkKI2RlZmluZSBfbW01MTJfbWFza19jbXBndF9lcHUzMl9tYXNrKGssIEEsIEIpIFwKICAgIF9tbTUxMl9tYXNrX2NtcF9lcHUzMl9tYXNrKChrKSwgKEEpLCAoQiksIF9NTV9DTVBJTlRfR1QpCiNkZWZpbmUgX21tNTEyX2NtcGxlX2VwdTMyX21hc2soQSwgQikgXAogICAgX21tNTEyX2NtcF9lcHUzMl9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX0xFKQojZGVmaW5lIF9tbTUxMl9tYXNrX2NtcGxlX2VwdTMyX21hc2soaywgQSwgQikgXAogICAgX21tNTEyX21hc2tfY21wX2VwdTMyX21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9MRSkKI2RlZmluZSBfbW01MTJfY21wbHRfZXB1MzJfbWFzayhBLCBCKSBcCiAgICBfbW01MTJfY21wX2VwdTMyX21hc2soKEEpLCAoQiksIF9NTV9DTVBJTlRfTFQpCiNkZWZpbmUgX21tNTEyX21hc2tfY21wbHRfZXB1MzJfbWFzayhrLCBBLCBCKSBcCiAgICBfbW01MTJfbWFza19jbXBfZXB1MzJfbWFzaygoayksIChBKSwgKEIpLCBfTU1fQ01QSU5UX0xUKQojZGVmaW5lIF9tbTUxMl9jbXBuZXFfZXB1MzJfbWFzayhBLCBCKSBcCiAgICBfbW01MTJfY21wX2VwdTMyX21hc2soKEEpLCAoQiksIF9NTV9DTVBJTlRfTkUpCiNkZWZpbmUgX21tNTEyX21hc2tfY21wbmVxX2VwdTMyX21hc2soaywgQSwgQikgXAogICAgX21tNTEyX21hc2tfY21wX2VwdTMyX21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9ORSkKCiNkZWZpbmUgX21tNTEyX2NtcGVxX2VwaTY0X21hc2soQSwgQikgXAogICAgX21tNTEyX2NtcF9lcGk2NF9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX0VRKQojZGVmaW5lIF9tbTUxMl9tYXNrX2NtcGVxX2VwaTY0X21hc2soaywgQSwgQikgXAogICAgX21tNTEyX21hc2tfY21wX2VwaTY0X21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9FUSkKI2RlZmluZSBfbW01MTJfY21wZ2VfZXBpNjRfbWFzayhBLCBCKSBcCiAgICBfbW01MTJfY21wX2VwaTY0X21hc2soKEEpLCAoQiksIF9NTV9DTVBJTlRfR0UpCiNkZWZpbmUgX21tNTEyX21hc2tfY21wZ2VfZXBpNjRfbWFzayhrLCBBLCBCKSBcCiAgICBfbW01MTJfbWFza19jbXBfZXBpNjRfbWFzaygoayksIChBKSwgKEIpLCBfTU1fQ01QSU5UX0dFKQojZGVmaW5lIF9tbTUxMl9jbXBndF9lcGk2NF9tYXNrKEEsIEIpIFwKICAgIF9tbTUxMl9jbXBfZXBpNjRfbWFzaygoQSksIChCKSwgX01NX0NNUElOVF9HVCkKI2RlZmluZSBfbW01MTJfbWFza19jbXBndF9lcGk2NF9tYXNrKGssIEEsIEIpIFwKICAgIF9tbTUxMl9tYXNrX2NtcF9lcGk2NF9tYXNrKChrKSwgKEEpLCAoQiksIF9NTV9DTVBJTlRfR1QpCiNkZWZpbmUgX21tNTEyX2NtcGxlX2VwaTY0X21hc2soQSwgQikgXAogICAgX21tNTEyX2NtcF9lcGk2NF9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX0xFKQojZGVmaW5lIF9tbTUxMl9tYXNrX2NtcGxlX2VwaTY0X21hc2soaywgQSwgQikgXAogICAgX21tNTEyX21hc2tfY21wX2VwaTY0X21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9MRSkKI2RlZmluZSBfbW01MTJfY21wbHRfZXBpNjRfbWFzayhBLCBCKSBcCiAgICBfbW01MTJfY21wX2VwaTY0X21hc2soKEEpLCAoQiksIF9NTV9DTVBJTlRfTFQpCiNkZWZpbmUgX21tNTEyX21hc2tfY21wbHRfZXBpNjRfbWFzayhrLCBBLCBCKSBcCiAgICBfbW01MTJfbWFza19jbXBfZXBpNjRfbWFzaygoayksIChBKSwgKEIpLCBfTU1fQ01QSU5UX0xUKQojZGVmaW5lIF9tbTUxMl9jbXBuZXFfZXBpNjRfbWFzayhBLCBCKSBcCiAgICBfbW01MTJfY21wX2VwaTY0X21hc2soKEEpLCAoQiksIF9NTV9DTVBJTlRfTkUpCiNkZWZpbmUgX21tNTEyX21hc2tfY21wbmVxX2VwaTY0X21hc2soaywgQSwgQikgXAogICAgX21tNTEyX21hc2tfY21wX2VwaTY0X21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9ORSkKCiNkZWZpbmUgX21tNTEyX2NtcGVxX2VwdTY0X21hc2soQSwgQikgXAogICAgX21tNTEyX2NtcF9lcHU2NF9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX0VRKQojZGVmaW5lIF9tbTUxMl9tYXNrX2NtcGVxX2VwdTY0X21hc2soaywgQSwgQikgXAogICAgX21tNTEyX21hc2tfY21wX2VwdTY0X21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9FUSkKI2RlZmluZSBfbW01MTJfY21wZ2VfZXB1NjRfbWFzayhBLCBCKSBcCiAgICBfbW01MTJfY21wX2VwdTY0X21hc2soKEEpLCAoQiksIF9NTV9DTVBJTlRfR0UpCiNkZWZpbmUgX21tNTEyX21hc2tfY21wZ2VfZXB1NjRfbWFzayhrLCBBLCBCKSBcCiAgICBfbW01MTJfbWFza19jbXBfZXB1NjRfbWFzaygoayksIChBKSwgKEIpLCBfTU1fQ01QSU5UX0dFKQojZGVmaW5lIF9tbTUxMl9jbXBndF9lcHU2NF9tYXNrKEEsIEIpIFwKICAgIF9tbTUxMl9jbXBfZXB1NjRfbWFzaygoQSksIChCKSwgX01NX0NNUElOVF9HVCkKI2RlZmluZSBfbW01MTJfbWFza19jbXBndF9lcHU2NF9tYXNrKGssIEEsIEIpIFwKICAgIF9tbTUxMl9tYXNrX2NtcF9lcHU2NF9tYXNrKChrKSwgKEEpLCAoQiksIF9NTV9DTVBJTlRfR1QpCiNkZWZpbmUgX21tNTEyX2NtcGxlX2VwdTY0X21hc2soQSwgQikgXAogICAgX21tNTEyX2NtcF9lcHU2NF9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX0xFKQojZGVmaW5lIF9tbTUxMl9tYXNrX2NtcGxlX2VwdTY0X21hc2soaywgQSwgQikgXAogICAgX21tNTEyX21hc2tfY21wX2VwdTY0X21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9MRSkKI2RlZmluZSBfbW01MTJfY21wbHRfZXB1NjRfbWFzayhBLCBCKSBcCiAgICBfbW01MTJfY21wX2VwdTY0X21hc2soKEEpLCAoQiksIF9NTV9DTVBJTlRfTFQpCiNkZWZpbmUgX21tNTEyX21hc2tfY21wbHRfZXB1NjRfbWFzayhrLCBBLCBCKSBcCiAgICBfbW01MTJfbWFza19jbXBfZXB1NjRfbWFzaygoayksIChBKSwgKEIpLCBfTU1fQ01QSU5UX0xUKQojZGVmaW5lIF9tbTUxMl9jbXBuZXFfZXB1NjRfbWFzayhBLCBCKSBcCiAgICBfbW01MTJfY21wX2VwdTY0X21hc2soKEEpLCAoQiksIF9NTV9DTVBJTlRfTkUpCiNkZWZpbmUgX21tNTEyX21hc2tfY21wbmVxX2VwdTY0X21hc2soaywgQSwgQikgXAogICAgX21tNTEyX21hc2tfY21wX2VwdTY0X21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9ORSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9jdnRlcGk4X2VwaTMyKF9fbTEyOGkgX19BKQp7CiAgLyogVGhpcyBmdW5jdGlvbiBhbHdheXMgcGVyZm9ybXMgYSBzaWduZWQgZXh0ZW5zaW9uLCBidXQgX192MTZxaSBpcyBhIGNoYXIKICAgICB3aGljaCBtYXkgYmUgc2lnbmVkIG9yIHVuc2lnbmVkLCBzbyB1c2UgX192MTZxcy4gKi8KICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoKF9fdjE2cXMpX19BLCBfX3YxNnNpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfY3Z0ZXBpOF9lcGkzMihfX201MTJpIF9fVywgX19tbWFzazE2IF9fVSwgX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF81MTIoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9jdnRlcGk4X2VwaTMyKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9jdnRlcGk4X2VwaTMyKF9fbW1hc2sxNiBfX1UsIF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfNTEyKChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfY3Z0ZXBpOF9lcGkzMihfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2N2dGVwaThfZXBpNjQoX19tMTI4aSBfX0EpCnsKICAvKiBUaGlzIGZ1bmN0aW9uIGFsd2F5cyBwZXJmb3JtcyBhIHNpZ25lZCBleHRlbnNpb24sIGJ1dCBfX3YxNnFpIGlzIGEgY2hhcgogICAgIHdoaWNoIG1heSBiZSBzaWduZWQgb3IgdW5zaWduZWQsIHNvIHVzZSBfX3YxNnFzLiAqLwogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5fY29udmVydHZlY3RvcihfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192MTZxcylfX0EsIChfX3YxNnFzKV9fQSwgMCwgMSwgMiwgMywgNCwgNSwgNiwgNyksIF9fdjhkaSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2N2dGVwaThfZXBpNjQoX19tNTEyaSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV81MTIoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfY3Z0ZXBpOF9lcGk2NChfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9jdnRlcGk4X2VwaTY0KF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV81MTIoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfY3Z0ZXBpOF9lcGk2NChfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyICgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2N2dGVwaTMyX2VwaTY0KF9fbTI1NmkgX19YKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKChfX3Y4c2kpX19YLCBfX3Y4ZGkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19jdnRlcGkzMl9lcGk2NChfX201MTJpIF9fVywgX19tbWFzazggX19VLCBfX20yNTZpIF9fWCkKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzUxMigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9jdnRlcGkzMl9lcGk2NChfX1gpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9jdnRlcGkzMl9lcGk2NChfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19YKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfNTEyKChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX2N2dGVwaTMyX2VwaTY0KF9fWCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9jdnRlcGkxNl9lcGkzMihfX20yNTZpIF9fQSkKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5fY29udmVydHZlY3RvcigoX192MTZoaSlfX0EsIF9fdjE2c2kpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19jdnRlcGkxNl9lcGkzMihfX201MTJpIF9fVywgX19tbWFzazE2IF9fVSwgX19tMjU2aSBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF81MTIoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX21tNTEyX2N2dGVwaTE2X2VwaTMyKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2N2dGVwaTE2X2VwaTMyKF9fbW1hc2sxNiBfX1UsIF9fbTI1NmkgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfNTEyKChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9jdnRlcGkxNl9lcGkzMihfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyICgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2N2dGVwaTE2X2VwaTY0KF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKChfX3Y4aGkpX19BLCBfX3Y4ZGkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19jdnRlcGkxNl9lcGk2NChfX201MTJpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzUxMigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9jdnRlcGkxNl9lcGk2NChfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9jdnRlcGkxNl9lcGk2NChfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfNTEyKChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX2N2dGVwaTE2X2VwaTY0KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9jdnRlcHU4X2VwaTMyKF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKChfX3YxNnF1KV9fQSwgX192MTZzaSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2N2dGVwdThfZXBpMzIoX19tNTEyaSBfX1csIF9fbW1hc2sxNiBfX1UsIF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfNTEyKChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfY3Z0ZXB1OF9lcGkzMihfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfY3Z0ZXB1OF9lcGkzMihfX21tYXNrMTYgX19VLCBfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzUxMigoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX21tNTEyX2N2dGVwdThfZXBpMzIoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9jdnRlcHU4X2VwaTY0KF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3YxNnF1KV9fQSwgKF9fdjE2cXUpX19BLCAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3KSwgX192OGRpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfY3Z0ZXB1OF9lcGk2NChfX201MTJpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzUxMigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9jdnRlcHU4X2VwaTY0KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2N2dGVwdThfZXBpNjQoX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzUxMigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9jdnRlcHU4X2VwaTY0KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9jdnRlcHUzMl9lcGk2NChfX20yNTZpIF9fWCkKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5fY29udmVydHZlY3RvcigoX192OHN1KV9fWCwgX192OGRpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfY3Z0ZXB1MzJfZXBpNjQoX19tNTEyaSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX1gpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV81MTIoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfY3Z0ZXB1MzJfZXBpNjQoX19YKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfY3Z0ZXB1MzJfZXBpNjQoX19tbWFzazggX19VLCBfX20yNTZpIF9fWCkKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzUxMigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9jdnRlcHUzMl9lcGk2NChfX1gpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfY3Z0ZXB1MTZfZXBpMzIoX19tMjU2aSBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoKF9fdjE2aHUpX19BLCBfX3YxNnNpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfY3Z0ZXB1MTZfZXBpMzIoX19tNTEyaSBfX1csIF9fbW1hc2sxNiBfX1UsIF9fbTI1NmkgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfNTEyKChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9jdnRlcHUxNl9lcGkzMihfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9jdnRlcHUxNl9lcGkzMihfX21tYXNrMTYgX19VLCBfX20yNTZpIF9fQSkKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzUxMigoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfY3Z0ZXB1MTZfZXBpMzIoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2N2dGVwdTE2X2VwaTY0KF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKChfX3Y4aHUpX19BLCBfX3Y4ZGkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19jdnRlcHUxNl9lcGk2NChfX201MTJpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzUxMigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9jdnRlcHUxNl9lcGk2NChfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9jdnRlcHUxNl9lcGk2NChfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfNTEyKChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX2N2dGVwdTE2X2VwaTY0KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9yb3J2X2VwaTMyIChfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfcHJvcnZkNTEyKChfX3YxNnNpKV9fQSwgKF9fdjE2c2kpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfcm9ydl9lcGkzMiAoX19tNTEyaSBfX1csIF9fbW1hc2sxNiBfX1UsIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzUxMihfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfcm9ydl9lcGkzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfcm9ydl9lcGkzMiAoX19tbWFzazE2IF9fVSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfNTEyKF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9yb3J2X2VwaTMyKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfcm9ydl9lcGk2NCAoX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3Byb3J2cTUxMigoX192OGRpKV9fQSwgKF9fdjhkaSlfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19yb3J2X2VwaTY0IChfX201MTJpIF9fVywgX19tbWFzazggX19VLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV81MTIoX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX3JvcnZfZXBpNjQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X3JvcnZfZXBpNjQgKF9fbW1hc2s4IF9fVSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfNTEyKF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9yb3J2X2VwaTY0KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgoKCiNkZWZpbmUgX21tNTEyX2NtcF9lcGkzMl9tYXNrKGEsIGIsIHApIFwKICAoKF9fbW1hc2sxNilfX2J1aWx0aW5faWEzMl9jbXBkNTEyX21hc2soKF9fdjE2c2kpKF9fbTUxMmkpKGEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKShfX201MTJpKShiKSwgKGludCkocCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNiktMSkpCgojZGVmaW5lIF9tbTUxMl9jbXBfZXB1MzJfbWFzayhhLCBiLCBwKSBcCiAgKChfX21tYXNrMTYpX19idWlsdGluX2lhMzJfdWNtcGQ1MTJfbWFzaygoX192MTZzaSkoX19tNTEyaSkoYSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKShfX201MTJpKShiKSwgKGludCkocCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpLTEpKQoKI2RlZmluZSBfbW01MTJfY21wX2VwaTY0X21hc2soYSwgYiwgcCkgXAogICgoX19tbWFzazgpX19idWlsdGluX2lhMzJfY21wcTUxMl9tYXNrKChfX3Y4ZGkpKF9fbTUxMmkpKGEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSkoX19tNTEyaSkoYiksIChpbnQpKHApLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xKSkKCiNkZWZpbmUgX21tNTEyX2NtcF9lcHU2NF9tYXNrKGEsIGIsIHApIFwKICAoKF9fbW1hc2s4KV9fYnVpbHRpbl9pYTMyX3VjbXBxNTEyX21hc2soKF9fdjhkaSkoX19tNTEyaSkoYSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSkoX19tNTEyaSkoYiksIChpbnQpKHApLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX2NtcF9lcGkzMl9tYXNrKG0sIGEsIGIsIHApIFwKICAoKF9fbW1hc2sxNilfX2J1aWx0aW5faWEzMl9jbXBkNTEyX21hc2soKF9fdjE2c2kpKF9fbTUxMmkpKGEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKShfX201MTJpKShiKSwgKGludCkocCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikobSkpKQoKI2RlZmluZSBfbW01MTJfbWFza19jbXBfZXB1MzJfbWFzayhtLCBhLCBiLCBwKSBcCiAgKChfX21tYXNrMTYpX19idWlsdGluX2lhMzJfdWNtcGQ1MTJfbWFzaygoX192MTZzaSkoX19tNTEyaSkoYSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKShfX201MTJpKShiKSwgKGludCkocCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpKG0pKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfY21wX2VwaTY0X21hc2sobSwgYSwgYiwgcCkgXAogICgoX19tbWFzazgpX19idWlsdGluX2lhMzJfY21wcTUxMl9tYXNrKChfX3Y4ZGkpKF9fbTUxMmkpKGEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSkoX19tNTEyaSkoYiksIChpbnQpKHApLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShtKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX2NtcF9lcHU2NF9tYXNrKG0sIGEsIGIsIHApIFwKICAoKF9fbW1hc2s4KV9fYnVpbHRpbl9pYTMyX3VjbXBxNTEyX21hc2soKF9fdjhkaSkoX19tNTEyaSkoYSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSkoX19tNTEyaSkoYiksIChpbnQpKHApLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkobSkpKQoKI2RlZmluZSBfbW01MTJfcm9sX2VwaTMyKGEsIGIpIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfcHJvbGQ1MTIoKF9fdjE2c2kpKF9fbTUxMmkpKGEpLCAoaW50KShiKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX3JvbF9lcGkzMihXLCBVLCBhLCBiKSBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfNTEyKChfX21tYXNrMTYpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9yb2xfZXBpMzIoKGEpLCAoYikpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKShfX201MTJpKShXKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9yb2xfZXBpMzIoVSwgYSwgYikgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzUxMigoX19tbWFzazE2KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfcm9sX2VwaTMyKChhKSwgKGIpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfc2V0emVyb19zaTUxMigpKSkKCiNkZWZpbmUgX21tNTEyX3JvbF9lcGk2NChhLCBiKSBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3Byb2xxNTEyKChfX3Y4ZGkpKF9fbTUxMmkpKGEpLCAoaW50KShiKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX3JvbF9lcGk2NChXLCBVLCBhLCBiKSBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfNTEyKChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfcm9sX2VwaTY0KChhKSwgKGIpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKShfX201MTJpKShXKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9yb2xfZXBpNjQoVSwgYSwgYikgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzUxMigoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX3JvbF9lcGk2NCgoYSksIChiKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfc2V0emVyb19zaTUxMigpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9yb2x2X2VwaTMyIChfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfcHJvbHZkNTEyKChfX3YxNnNpKV9fQSwgKF9fdjE2c2kpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfcm9sdl9lcGkzMiAoX19tNTEyaSBfX1csIF9fbW1hc2sxNiBfX1UsIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzUxMihfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfcm9sdl9lcGkzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfcm9sdl9lcGkzMiAoX19tbWFzazE2IF9fVSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfNTEyKF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9yb2x2X2VwaTMyKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfcm9sdl9lcGk2NCAoX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3Byb2x2cTUxMigoX192OGRpKV9fQSwgKF9fdjhkaSlfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19yb2x2X2VwaTY0IChfX201MTJpIF9fVywgX19tbWFzazggX19VLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV81MTIoX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX3JvbHZfZXBpNjQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X3JvbHZfZXBpNjQgKF9fbW1hc2s4IF9fVSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfNTEyKF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9yb2x2X2VwaTY0KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgojZGVmaW5lIF9tbTUxMl9yb3JfZXBpMzIoQSwgQikgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9wcm9yZDUxMigoX192MTZzaSkoX19tNTEyaSkoQSksIChpbnQpKEIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfcm9yX2VwaTMyKFcsIFUsIEEsIEIpIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF81MTIoKF9fbW1hc2sxNikoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX21tNTEyX3Jvcl9lcGkzMigoQSksIChCKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpKF9fbTUxMmkpKFcpKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X3Jvcl9lcGkzMihVLCBBLCBCKSBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfNTEyKChfX21tYXNrMTYpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9yb3JfZXBpMzIoKEEpLCAoQikpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpKQoKI2RlZmluZSBfbW01MTJfcm9yX2VwaTY0KEEsIEIpIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfcHJvcnE1MTIoKF9fdjhkaSkoX19tNTEyaSkoQSksIChpbnQpKEIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfcm9yX2VwaTY0KFcsIFUsIEEsIEIpIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV81MTIoKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9yb3JfZXBpNjQoKEEpLCAoQikpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpKF9fbTUxMmkpKFcpKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X3Jvcl9lcGk2NChVLCBBLCBCKSBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfNTEyKChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfcm9yX2VwaTY0KChBKSwgKEIpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpKQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3NsbGlfZXBpMzIoX19tNTEyaSBfX0EsIHVuc2lnbmVkIGludCBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfcHNsbGRpNTEyKChfX3YxNnNpKV9fQSwgX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfc2xsaV9lcGkzMihfX201MTJpIF9fVywgX19tbWFzazE2IF9fVSwgX19tNTEyaSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzUxMigoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfc2xsaV9lcGkzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X3NsbGlfZXBpMzIoX19tbWFzazE2IF9fVSwgX19tNTEyaSBfX0EsIHVuc2lnbmVkIGludCBfX0IpIHsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF81MTIoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX21tNTEyX3NsbGlfZXBpMzIoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfc2xsaV9lcGk2NChfX201MTJpIF9fQSwgdW5zaWduZWQgaW50IF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9wc2xscWk1MTIoKF9fdjhkaSlfX0EsIF9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX3NsbGlfZXBpNjQoX19tNTEyaSBfX1csIF9fbW1hc2s4IF9fVSwgX19tNTEyaSBfX0EsIHVuc2lnbmVkIGludCBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV81MTIoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfc2xsaV9lcGk2NChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X3NsbGlfZXBpNjQoX19tbWFzazggX19VLCBfX201MTJpIF9fQSwgdW5zaWduZWQgaW50IF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzUxMigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9zbGxpX2VwaTY0KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3NybGlfZXBpMzIoX19tNTEyaSBfX0EsIHVuc2lnbmVkIGludCBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfcHNybGRpNTEyKChfX3YxNnNpKV9fQSwgX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfc3JsaV9lcGkzMihfX201MTJpIF9fVywgX19tbWFzazE2IF9fVSwgX19tNTEyaSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzUxMigoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfc3JsaV9lcGkzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X3NybGlfZXBpMzIoX19tbWFzazE2IF9fVSwgX19tNTEyaSBfX0EsIHVuc2lnbmVkIGludCBfX0IpIHsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF81MTIoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX21tNTEyX3NybGlfZXBpMzIoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfc3JsaV9lcGk2NChfX201MTJpIF9fQSwgdW5zaWduZWQgaW50IF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9wc3JscWk1MTIoKF9fdjhkaSlfX0EsIF9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX3NybGlfZXBpNjQoX19tNTEyaSBfX1csIF9fbW1hc2s4IF9fVSwgX19tNTEyaSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzUxMigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9zcmxpX2VwaTY0KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfc3JsaV9lcGk2NChfX21tYXNrOCBfX1UsIF9fbTUxMmkgX19BLAogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfNTEyKChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX3NybGlfZXBpNjQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19sb2FkX2VwaTMyIChfX201MTJpIF9fVywgX19tbWFzazE2IF9fVSwgdm9pZCBjb25zdCAqX19QKQp7CiAgcmV0dXJuIChfX201MTJpKSBfX2J1aWx0aW5faWEzMl9tb3ZkcWEzMmxvYWQ1MTJfbWFzayAoKGNvbnN0IF9fdjE2c2kgKikgX19QLAogICAgICAgICAgICAgIChfX3YxNnNpKSBfX1csCiAgICAgICAgICAgICAgKF9fbW1hc2sxNikgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2xvYWRfZXBpMzIgKF9fbW1hc2sxNiBfX1UsIHZvaWQgY29uc3QgKl9fUCkKewogIHJldHVybiAoX19tNTEyaSkgX19idWlsdGluX2lhMzJfbW92ZHFhMzJsb2FkNTEyX21hc2sgKChjb25zdCBfX3YxNnNpICopIF9fUCwKICAgICAgICAgICAgICAoX192MTZzaSkKICAgICAgICAgICAgICBfbW01MTJfc2V0emVyb19zaTUxMiAoKSwKICAgICAgICAgICAgICAoX19tbWFzazE2KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19zdG9yZV9lcGkzMiAodm9pZCAqX19QLCBfX21tYXNrMTYgX19VLCBfX201MTJpIF9fQSkKewogIF9fYnVpbHRpbl9pYTMyX21vdmRxYTMyc3RvcmU1MTJfbWFzayAoKF9fdjE2c2kgKikgX19QLCAoX192MTZzaSkgX19BLAogICAgICAgICAgKF9fbW1hc2sxNikgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfbW92X2VwaTMyIChfX201MTJpIF9fVywgX19tbWFzazE2IF9fVSwgX19tNTEyaSBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmkpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfNTEyICgoX19tbWFzazE2KSBfX1UsCiAgICAgICAgICAgICAgICAgKF9fdjE2c2kpIF9fQSwKICAgICAgICAgICAgICAgICAoX192MTZzaSkgX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X21vdl9lcGkzMiAoX19tbWFzazE2IF9fVSwgX19tNTEyaSBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmkpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfNTEyICgoX19tbWFzazE2KSBfX1UsCiAgICAgICAgICAgICAgICAgKF9fdjE2c2kpIF9fQSwKICAgICAgICAgICAgICAgICAoX192MTZzaSkgX21tNTEyX3NldHplcm9fc2k1MTIgKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19tb3ZfZXBpNjQgKF9fbTUxMmkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTUxMmkgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKSBfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzUxMiAoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgKF9fdjhkaSkgX19BLAogICAgICAgICAgICAgICAgIChfX3Y4ZGkpIF9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9tb3ZfZXBpNjQgKF9fbW1hc2s4IF9fVSwgX19tNTEyaSBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmkpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfNTEyICgoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICAoX192OGRpKSBfX0EsCiAgICAgICAgICAgICAgICAgKF9fdjhkaSkgX21tNTEyX3NldHplcm9fc2k1MTIgKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19sb2FkX2VwaTY0IChfX201MTJpIF9fVywgX19tbWFzazggX19VLCB2b2lkIGNvbnN0ICpfX1ApCnsKICByZXR1cm4gKF9fbTUxMmkpIF9fYnVpbHRpbl9pYTMyX21vdmRxYTY0bG9hZDUxMl9tYXNrICgoY29uc3QgX192OGRpICopIF9fUCwKICAgICAgICAgICAgICAoX192OGRpKSBfX1csCiAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfbG9hZF9lcGk2NCAoX19tbWFzazggX19VLCB2b2lkIGNvbnN0ICpfX1ApCnsKICByZXR1cm4gKF9fbTUxMmkpIF9fYnVpbHRpbl9pYTMyX21vdmRxYTY0bG9hZDUxMl9tYXNrICgoY29uc3QgX192OGRpICopIF9fUCwKICAgICAgICAgICAgICAoX192OGRpKQogICAgICAgICAgICAgIF9tbTUxMl9zZXR6ZXJvX3NpNTEyICgpLAogICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfc3RvcmVfZXBpNjQgKHZvaWQgKl9fUCwgX19tbWFzazggX19VLCBfX201MTJpIF9fQSkKewogIF9fYnVpbHRpbl9pYTMyX21vdmRxYTY0c3RvcmU1MTJfbWFzayAoKF9fdjhkaSAqKSBfX1AsIChfX3Y4ZGkpIF9fQSwKICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21vdmVkdXBfcGQgKF9fbTUxMmQgX19BKQp7CiAgcmV0dXJuIChfX201MTJkKV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y4ZGYpX19BLCAoX192OGRmKV9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMiwgMiwgNCwgNCwgNiwgNik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX21vdmVkdXBfcGQgKF9fbTUxMmQgX19XLCBfX21tYXNrOCBfX1UsIF9fbTUxMmQgX19BKQp7CiAgcmV0dXJuIChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzUxMigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfbW01MTJfbW92ZWR1cF9wZChfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfbW92ZWR1cF9wZCAoX19tbWFzazggX19VLCBfX201MTJkIF9fQSkKewogIHJldHVybiAoX19tNTEyZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF81MTIoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX21vdmVkdXBfcGQoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX3NldHplcm9fcGQoKSk7Cn0KCiNkZWZpbmUgX21tNTEyX2ZpeHVwaW1tX3JvdW5kX3BkKEEsIEIsIEMsIGltbSwgUikgXAogICgoX19tNTEyZClfX2J1aWx0aW5faWEzMl9maXh1cGltbXBkNTEyX21hc2soKF9fdjhkZikoX19tNTEyZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpKF9fbTUxMmQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKShfX201MTJpKShDKSwgKGludCkoaW1tKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX2ZpeHVwaW1tX3JvdW5kX3BkKEEsIFUsIEIsIEMsIGltbSwgUikgXAogICgoX19tNTEyZClfX2J1aWx0aW5faWEzMl9maXh1cGltbXBkNTEyX21hc2soKF9fdjhkZikoX19tNTEyZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpKF9fbTUxMmQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKShfX201MTJpKShDKSwgKGludCkoaW1tKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfZml4dXBpbW1fcGQoQSwgQiwgQywgaW1tKSBcCiAgKChfX201MTJkKV9fYnVpbHRpbl9pYTMyX2ZpeHVwaW1tcGQ1MTJfbWFzaygoX192OGRmKShfX201MTJkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikoX19tNTEyZCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpKF9fbTUxMmkpKEMpLCAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTikpCgojZGVmaW5lIF9tbTUxMl9tYXNrX2ZpeHVwaW1tX3BkKEEsIFUsIEIsIEMsIGltbSkgXAogICgoX19tNTEyZClfX2J1aWx0aW5faWEzMl9maXh1cGltbXBkNTEyX21hc2soKF9fdjhkZikoX19tNTEyZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpKF9fbTUxMmQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKShfX201MTJpKShDKSwgKGludCkoaW1tKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X2ZpeHVwaW1tX3JvdW5kX3BkKFUsIEEsIEIsIEMsIGltbSwgUikgXAogICgoX19tNTEyZClfX2J1aWx0aW5faWEzMl9maXh1cGltbXBkNTEyX21hc2t6KChfX3Y4ZGYpKF9fbTUxMmQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikoX19tNTEyZCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKShfX201MTJpKShDKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKGltbSksIChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9maXh1cGltbV9wZChVLCBBLCBCLCBDLCBpbW0pIFwKICAoKF9fbTUxMmQpX19idWlsdGluX2lhMzJfZml4dXBpbW1wZDUxMl9tYXNreigoX192OGRmKShfX201MTJkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpKF9fbTUxMmQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSkoX19tNTEyaSkoQyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShpbW0pLCAoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKSkKCiNkZWZpbmUgX21tNTEyX2ZpeHVwaW1tX3JvdW5kX3BzKEEsIEIsIEMsIGltbSwgUikgXAogICgoX19tNTEyKV9fYnVpbHRpbl9pYTMyX2ZpeHVwaW1tcHM1MTJfbWFzaygoX192MTZzZikoX19tNTEyKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikoX19tNTEyKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSkoX19tNTEyaSkoQyksIChpbnQpKGltbSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNiktMSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza19maXh1cGltbV9yb3VuZF9wcyhBLCBVLCBCLCBDLCBpbW0sIFIpIFwKICAoKF9fbTUxMilfX2J1aWx0aW5faWEzMl9maXh1cGltbXBzNTEyX21hc2soKF9fdjE2c2YpKF9fbTUxMikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpKF9fbTUxMikoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpKF9fbTUxMmkpKEMpLCAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpKFUpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9maXh1cGltbV9wcyhBLCBCLCBDLCBpbW0pIFwKICAoKF9fbTUxMilfX2J1aWx0aW5faWEzMl9maXh1cGltbXBzNTEyX21hc2soKF9fdjE2c2YpKF9fbTUxMikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpKF9fbTUxMikoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpKF9fbTUxMmkpKEMpLCAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpLTEsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfZml4dXBpbW1fcHMoQSwgVSwgQiwgQywgaW1tKSBcCiAgKChfX201MTIpX19idWlsdGluX2lhMzJfZml4dXBpbW1wczUxMl9tYXNrKChfX3YxNnNmKShfX201MTIpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKShfX201MTIpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKShfX201MTJpKShDKSwgKGludCkoaW1tKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pKQoKI2RlZmluZSBfbW01MTJfbWFza3pfZml4dXBpbW1fcm91bmRfcHMoVSwgQSwgQiwgQywgaW1tLCBSKSBcCiAgKChfX201MTIpX19idWlsdGluX2lhMzJfZml4dXBpbW1wczUxMl9tYXNreigoX192MTZzZikoX19tNTEyKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpKF9fbTUxMikoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKShfX201MTJpKShDKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoaW1tKSwgKF9fbW1hc2sxNikoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X2ZpeHVwaW1tX3BzKFUsIEEsIEIsIEMsIGltbSkgXAogICgoX19tNTEyKV9fYnVpbHRpbl9pYTMyX2ZpeHVwaW1tcHM1MTJfbWFza3ooKF9fdjE2c2YpKF9fbTUxMikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKShfX201MTIpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSkoX19tNTEyaSkoQyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKGltbSksIChfX21tYXNrMTYpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pKQoKI2RlZmluZSBfbW1fZml4dXBpbW1fcm91bmRfc2QoQSwgQiwgQywgaW1tLCBSKSBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2ZpeHVwaW1tc2RfbWFzaygoX192MmRmKShfX20xMjhkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikoX19tMTI4ZCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpKF9fbTEyOGkpKEMpLCAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEsIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX21hc2tfZml4dXBpbW1fcm91bmRfc2QoQSwgVSwgQiwgQywgaW1tLCBSKSBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2ZpeHVwaW1tc2RfbWFzaygoX192MmRmKShfX20xMjhkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikoX19tMTI4ZCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpKF9fbTEyOGkpKEMpLCAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbV9maXh1cGltbV9zZChBLCBCLCBDLCBpbW0pIFwKICAoKF9fbTEyOGQpX19idWlsdGluX2lhMzJfZml4dXBpbW1zZF9tYXNrKChfX3YyZGYpKF9fbTEyOGQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSkoX19tMTI4aSkoQyksIChpbnQpKGltbSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKSkKCiNkZWZpbmUgX21tX21hc2tfZml4dXBpbW1fc2QoQSwgVSwgQiwgQywgaW1tKSBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2ZpeHVwaW1tc2RfbWFzaygoX192MmRmKShfX20xMjhkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikoX19tMTI4ZCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpKF9fbTEyOGkpKEMpLCAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pKQoKI2RlZmluZSBfbW1fbWFza3pfZml4dXBpbW1fcm91bmRfc2QoVSwgQSwgQiwgQywgaW1tLCBSKSBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2ZpeHVwaW1tc2RfbWFza3ooKF9fdjJkZikoX19tMTI4ZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpKF9fbTEyOGkpKEMpLCAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW1fbWFza3pfZml4dXBpbW1fc2QoVSwgQSwgQiwgQywgaW1tKSBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2ZpeHVwaW1tc2RfbWFza3ooKF9fdjJkZikoX19tMTI4ZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpKF9fbTEyOGkpKEMpLCAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTikpCgojZGVmaW5lIF9tbV9maXh1cGltbV9yb3VuZF9zcyhBLCBCLCBDLCBpbW0sIFIpIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl9maXh1cGltbXNzX21hc2soKF9fdjRzZikoX19tMTI4KShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpKF9fbTEyOGkpKEMpLCAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSwgKGludCkoUikpKQoKI2RlZmluZSBfbW1fbWFza19maXh1cGltbV9yb3VuZF9zcyhBLCBVLCBCLCBDLCBpbW0sIFIpIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl9maXh1cGltbXNzX21hc2soKF9fdjRzZikoX19tMTI4KShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpKF9fbTEyOGkpKEMpLCAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX2ZpeHVwaW1tX3NzKEEsIEIsIEMsIGltbSkgXAogICgoX19tMTI4KV9fYnVpbHRpbl9pYTMyX2ZpeHVwaW1tc3NfbWFzaygoX192NHNmKShfX20xMjgpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSkoX19tMTI4aSkoQyksIChpbnQpKGltbSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTikpCgojZGVmaW5lIF9tbV9tYXNrX2ZpeHVwaW1tX3NzKEEsIFUsIEIsIEMsIGltbSkgXAogICgoX19tMTI4KV9fYnVpbHRpbl9pYTMyX2ZpeHVwaW1tc3NfbWFzaygoX192NHNmKShfX20xMjgpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSkoX19tMTI4aSkoQyksIChpbnQpKGltbSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pKQoKI2RlZmluZSBfbW1fbWFza3pfZml4dXBpbW1fcm91bmRfc3MoVSwgQSwgQiwgQywgaW1tLCBSKSBcCiAgKChfX20xMjgpX19idWlsdGluX2lhMzJfZml4dXBpbW1zc19tYXNreigoX192NHNmKShfX20xMjgpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKShfX20xMjhpKShDKSwgKGludCkoaW1tKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW1fbWFza3pfZml4dXBpbW1fc3MoVSwgQSwgQiwgQywgaW1tKSBcCiAgKChfX20xMjgpX19idWlsdGluX2lhMzJfZml4dXBpbW1zc19tYXNreigoX192NHNmKShfX20xMjgpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKShfX20xMjhpKShDKSwgKGludCkoaW1tKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKSkKCiNkZWZpbmUgX21tX2dldGV4cF9yb3VuZF9zZChBLCBCLCBSKSBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2dldGV4cHNkMTI4X3JvdW5kX21hc2soKF9fdjJkZikoX19tMTI4ZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX3NldHplcm9fcGQoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSwgKGludCkoUikpKQoKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9nZXRleHBfc2QgKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikKewogIHJldHVybiAoX19tMTI4ZCkgX19idWlsdGluX2lhMzJfZ2V0ZXhwc2QxMjhfcm91bmRfbWFzayAoKF9fdjJkZikgX19BLAogICAgICAgICAgICAgICAgIChfX3YyZGYpIF9fQiwgKF9fdjJkZikgX21tX3NldHplcm9fcGQoKSwgKF9fbW1hc2s4KSAtMSwgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfZ2V0ZXhwX3NkIChfX20xMjhkIF9fVywgX19tbWFzazggX19VLCBfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpCnsKIHJldHVybiAoX19tMTI4ZCkgX19idWlsdGluX2lhMzJfZ2V0ZXhwc2QxMjhfcm91bmRfbWFzayAoIChfX3YyZGYpIF9fQSwKICAgICAgICAgIChfX3YyZGYpIF9fQiwKICAgICAgICAgIChfX3YyZGYpIF9fVywKICAgICAgICAgIChfX21tYXNrOCkgX19VLAogICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW1fbWFza19nZXRleHBfcm91bmRfc2QoVywgVSwgQSwgQiwgUikgXAogICgoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9nZXRleHBzZDEyOF9yb3VuZF9tYXNrKChfX3YyZGYpKF9fbTEyOGQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikoX19tMTI4ZCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShXKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9nZXRleHBfc2QgKF9fbW1hc2s4IF9fVSwgX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQp7CiByZXR1cm4gKF9fbTEyOGQpIF9fYnVpbHRpbl9pYTMyX2dldGV4cHNkMTI4X3JvdW5kX21hc2sgKCAoX192MmRmKSBfX0EsCiAgICAgICAgICAoX192MmRmKSBfX0IsCiAgICAgICAgICAoX192MmRmKSBfbW1fc2V0emVyb19wZCAoKSwKICAgICAgICAgIChfX21tYXNrOCkgX19VLAogICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW1fbWFza3pfZ2V0ZXhwX3JvdW5kX3NkKFUsIEEsIEIsIFIpIFwKICAoKF9fbTEyOGQpX19idWlsdGluX2lhMzJfZ2V0ZXhwc2QxMjhfcm91bmRfbWFzaygoX192MmRmKShfX20xMjhkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfbW1fc2V0emVyb19wZCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW1fZ2V0ZXhwX3JvdW5kX3NzKEEsIEIsIFIpIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl9nZXRleHBzczEyOF9yb3VuZF9tYXNrKChfX3Y0c2YpKF9fbTEyOCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX3NldHplcm9fcHMoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xLCAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9nZXRleHBfc3MgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCnsKICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfZ2V0ZXhwc3MxMjhfcm91bmRfbWFzayAoKF9fdjRzZikgX19BLAogICAgICAgICAgICAgICAgKF9fdjRzZikgX19CLCAoX192NHNmKSAgX21tX3NldHplcm9fcHMoKSwgKF9fbW1hc2s4KSAtMSwgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19nZXRleHBfc3MgKF9fbTEyOCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4IF9fQSwgX19tMTI4IF9fQikKewogcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX2dldGV4cHNzMTI4X3JvdW5kX21hc2sgKChfX3Y0c2YpIF9fQSwKICAgICAgICAgIChfX3Y0c2YpIF9fQiwKICAgICAgICAgIChfX3Y0c2YpIF9fVywKICAgICAgICAgIChfX21tYXNrOCkgX19VLAogICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW1fbWFza19nZXRleHBfcm91bmRfc3MoVywgVSwgQSwgQiwgUikgXAogICgoX19tMTI4KV9fYnVpbHRpbl9pYTMyX2dldGV4cHNzMTI4X3JvdW5kX21hc2soKF9fdjRzZikoX19tMTI4KShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikoX19tMTI4KShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikoX19tMTI4KShXKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfZ2V0ZXhwX3NzIChfX21tYXNrOCBfX1UsIF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCnsKIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9nZXRleHBzczEyOF9yb3VuZF9tYXNrICgoX192NHNmKSBfX0EsCiAgICAgICAgICAoX192NHNmKSBfX0IsCiAgICAgICAgICAoX192NHNmKSBfbW1fc2V0emVyb19wcyAoKSwKICAgICAgICAgIChfX21tYXNrOCkgX19VLAogICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW1fbWFza3pfZ2V0ZXhwX3JvdW5kX3NzKFUsIEEsIEIsIFIpIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl9nZXRleHBzczEyOF9yb3VuZF9tYXNrKChfX3Y0c2YpKF9fbTEyOCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX3NldHplcm9fcHMoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW1fZ2V0bWFudF9yb3VuZF9zZChBLCBCLCBDLCBELCBSKSBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2dldG1hbnRzZF9yb3VuZF9tYXNrKChfX3YyZGYpKF9fbTEyOGQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKCgoRCk8PDIpIHwgKEMpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9tbV9zZXR6ZXJvX3BkKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbV9nZXRtYW50X3NkKEEsIEIsIEMsIEQpICBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2dldG1hbnRzZF9yb3VuZF9tYXNrKChfX3YyZGYpKF9fbTEyOGQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKCgoRCk8PDIpIHwgKEMpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9tbV9zZXR6ZXJvX3BkKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTikpCgojZGVmaW5lIF9tbV9tYXNrX2dldG1hbnRfc2QoVywgVSwgQSwgQiwgQywgRCkgXAogICgoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9nZXRtYW50c2Rfcm91bmRfbWFzaygoX192MmRmKShfX20xMjhkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KSgoKEQpPDwyKSB8IChDKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikoX19tMTI4ZCkoVyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pKQoKI2RlZmluZSBfbW1fbWFza19nZXRtYW50X3JvdW5kX3NkKFcsIFUsIEEsIEIsIEMsIEQsIFIpIFwKICAoKF9fbTEyOGQpX19idWlsdGluX2lhMzJfZ2V0bWFudHNkX3JvdW5kX21hc2soKF9fdjJkZikoX19tMTI4ZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikoX19tMTI4ZCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoKChEKTw8MikgfCAoQykpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKFcpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX21hc2t6X2dldG1hbnRfc2QoVSwgQSwgQiwgQywgRCkgXAogICgoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9nZXRtYW50c2Rfcm91bmRfbWFzaygoX192MmRmKShfX20xMjhkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KSgoKEQpPDwyKSB8IChDKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfbW1fc2V0emVyb19wZCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKSkKCiNkZWZpbmUgX21tX21hc2t6X2dldG1hbnRfcm91bmRfc2QoVSwgQSwgQiwgQywgRCwgUikgXAogICgoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9nZXRtYW50c2Rfcm91bmRfbWFzaygoX192MmRmKShfX20xMjhkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KSgoKEQpPDwyKSB8IChDKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfbW1fc2V0emVyb19wZCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX2dldG1hbnRfcm91bmRfc3MoQSwgQiwgQywgRCwgUikgXAogICgoX19tMTI4KV9fYnVpbHRpbl9pYTMyX2dldG1hbnRzc19yb3VuZF9tYXNrKChfX3Y0c2YpKF9fbTEyOCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoKChEKTw8MikgfCAoQykpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfbW1fc2V0emVyb19wcygpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbV9nZXRtYW50X3NzKEEsIEIsIEMsIEQpIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl9nZXRtYW50c3Nfcm91bmRfbWFzaygoX192NHNmKShfX20xMjgpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikoX19tMTI4KShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKCgoRCk8PDIpIHwgKEMpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX3NldHplcm9fcHMoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTikpCgojZGVmaW5lIF9tbV9tYXNrX2dldG1hbnRfc3MoVywgVSwgQSwgQiwgQywgRCkgXAogICgoX19tMTI4KV9fYnVpbHRpbl9pYTMyX2dldG1hbnRzc19yb3VuZF9tYXNrKChfX3Y0c2YpKF9fbTEyOCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoKChEKTw8MikgfCAoQykpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikoX19tMTI4KShXKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pKQoKI2RlZmluZSBfbW1fbWFza19nZXRtYW50X3JvdW5kX3NzKFcsIFUsIEEsIEIsIEMsIEQsIFIpIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl9nZXRtYW50c3Nfcm91bmRfbWFzaygoX192NHNmKShfX20xMjgpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikoX19tMTI4KShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKCgoRCk8PDIpIHwgKEMpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoVyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbV9tYXNrel9nZXRtYW50X3NzKFUsIEEsIEIsIEMsIEQpIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl9nZXRtYW50c3Nfcm91bmRfbWFzaygoX192NHNmKShfX20xMjgpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikoX19tMTI4KShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKCgoRCk8PDIpIHwgKEMpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX3NldHplcm9fcHMoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pKQoKI2RlZmluZSBfbW1fbWFza3pfZ2V0bWFudF9yb3VuZF9zcyhVLCBBLCBCLCBDLCBELCBSKSBcCiAgKChfX20xMjgpX19idWlsdGluX2lhMzJfZ2V0bWFudHNzX3JvdW5kX21hc2soKF9fdjRzZikoX19tMTI4KShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KSgoKEQpPDwyKSB8IChDKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9tbV9zZXR6ZXJvX3BzKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpLCAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX21tYXNrMTYgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTUxMl9rbW92IChfX21tYXNrMTYgX19BKQp7CiAgcmV0dXJuICBfX0E7Cn0KCiNkZWZpbmUgX21tX2NvbWlfcm91bmRfc2QoQSwgQiwgUCwgUikgXAogICgoaW50KV9fYnVpbHRpbl9pYTMyX3Zjb21pc2QoKF9fdjJkZikoX19tMTI4ZCkoQSksIChfX3YyZGYpKF9fbTEyOGQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShQKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW1fY29taV9yb3VuZF9zcyhBLCBCLCBQLCBSKSBcCiAgKChpbnQpX19idWlsdGluX2lhMzJfdmNvbWlzcygoX192NHNmKShfX20xMjgpKEEpLCAoX192NHNmKShfX20xMjgpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShQKSwgKGludCkoUikpKQoKI2lmZGVmIF9feDg2XzY0X18KI2RlZmluZSBfbW1fY3Z0X3JvdW5kc2Rfc2k2NChBLCBSKSBcCiAgKChsb25nIGxvbmcpX19idWlsdGluX2lhMzJfdmN2dHNkMnNpNjQoKF9fdjJkZikoX19tMTI4ZCkoQSksIChpbnQpKFIpKSkKI2VuZGlmCgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfc2xsX2VwaTMyKF9fbTUxMmkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9wc2xsZDUxMigoX192MTZzaSkgX19BLCAoX192NHNpKV9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX3NsbF9lcGkzMihfX201MTJpIF9fVywgX19tbWFzazE2IF9fVSwgX19tNTEyaSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfNTEyKChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfc2xsX2VwaTMyKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X3NsbF9lcGkzMihfX21tYXNrMTYgX19VLCBfX201MTJpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF81MTIoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9zbGxfZXBpMzIoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3NsbF9lcGk2NChfX201MTJpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfcHNsbHE1MTIoKF9fdjhkaSlfX0EsIChfX3YyZGkpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfc2xsX2VwaTY0KF9fbTUxMmkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTUxMmkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzUxMigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9zbGxfZXBpNjQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9zbGxfZXBpNjQoX19tbWFzazggX19VLCBfX201MTJpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV81MTIoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX3NsbF9lcGk2NChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfc2xsdl9lcGkzMihfX201MTJpIF9fWCwgX19tNTEyaSBfX1kpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfcHNsbHYxNnNpKChfX3YxNnNpKV9fWCwgKF9fdjE2c2kpX19ZKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfc2xsdl9lcGkzMihfX201MTJpIF9fVywgX19tbWFzazE2IF9fVSwgX19tNTEyaSBfX1gsIF9fbTUxMmkgX19ZKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfNTEyKChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX21tNTEyX3NsbHZfZXBpMzIoX19YLCBfX1kpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X3NsbHZfZXBpMzIoX19tbWFzazE2IF9fVSwgX19tNTEyaSBfX1gsIF9fbTUxMmkgX19ZKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfNTEyKChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX21tNTEyX3NsbHZfZXBpMzIoX19YLCBfX1kpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9zbGx2X2VwaTY0KF9fbTUxMmkgX19YLCBfX201MTJpIF9fWSkKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9wc2xsdjhkaSgoX192OGRpKV9fWCwgKF9fdjhkaSlfX1kpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19zbGx2X2VwaTY0KF9fbTUxMmkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTUxMmkgX19YLCBfX201MTJpIF9fWSkKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzUxMigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX3NsbHZfZXBpNjQoX19YLCBfX1kpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X3NsbHZfZXBpNjQoX19tbWFzazggX19VLCBfX201MTJpIF9fWCwgX19tNTEyaSBfX1kpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV81MTIoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9zbGx2X2VwaTY0KF9fWCwgX19ZKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfc3JhX2VwaTMyKF9fbTUxMmkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9wc3JhZDUxMigoX192MTZzaSkgX19BLCAoX192NHNpKV9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX3NyYV9lcGkzMihfX201MTJpIF9fVywgX19tbWFzazE2IF9fVSwgX19tNTEyaSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfNTEyKChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfc3JhX2VwaTMyKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X3NyYV9lcGkzMihfX21tYXNrMTYgX19VLCBfX201MTJpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF81MTIoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9zcmFfZXBpMzIoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3NyYV9lcGk2NChfX201MTJpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfcHNyYXE1MTIoKF9fdjhkaSlfX0EsIChfX3YyZGkpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfc3JhX2VwaTY0KF9fbTUxMmkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTUxMmkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzUxMigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfc3JhX2VwaTY0KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X3NyYV9lcGk2NChfX21tYXNrOCBfX1UsIF9fbTUxMmkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzUxMigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfc3JhX2VwaTY0KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9zcmF2X2VwaTMyKF9fbTUxMmkgX19YLCBfX201MTJpIF9fWSkKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9wc3JhdjE2c2koKF9fdjE2c2kpX19YLCAoX192MTZzaSlfX1kpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19zcmF2X2VwaTMyKF9fbTUxMmkgX19XLCBfX21tYXNrMTYgX19VLCBfX201MTJpIF9fWCwgX19tNTEyaSBfX1kpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF81MTIoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfc3Jhdl9lcGkzMihfX1gsIF9fWSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfc3Jhdl9lcGkzMihfX21tYXNrMTYgX19VLCBfX201MTJpIF9fWCwgX19tNTEyaSBfX1kpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF81MTIoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfc3Jhdl9lcGkzMihfX1gsIF9fWSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3NyYXZfZXBpNjQoX19tNTEyaSBfX1gsIF9fbTUxMmkgX19ZKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3BzcmF2OGRpKChfX3Y4ZGkpX19YLCAoX192OGRpKV9fWSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX3NyYXZfZXBpNjQoX19tNTEyaSBfX1csIF9fbW1hc2s4IF9fVSwgX19tNTEyaSBfX1gsIF9fbTUxMmkgX19ZKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfNTEyKChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfc3Jhdl9lcGk2NChfX1gsIF9fWSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfc3Jhdl9lcGk2NChfX21tYXNrOCBfX1UsIF9fbTUxMmkgX19YLCBfX201MTJpIF9fWSkKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzUxMigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX3NyYXZfZXBpNjQoX19YLCBfX1kpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9zcmxfZXBpMzIoX19tNTEyaSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3BzcmxkNTEyKChfX3YxNnNpKSBfX0EsIChfX3Y0c2kpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfc3JsX2VwaTMyKF9fbTUxMmkgX19XLCBfX21tYXNrMTYgX19VLCBfX201MTJpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF81MTIoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9zcmxfZXBpMzIoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfc3JsX2VwaTMyKF9fbW1hc2sxNiBfX1UsIF9fbTUxMmkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzUxMigoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX21tNTEyX3NybF9lcGkzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfc3JsX2VwaTY0KF9fbTUxMmkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9wc3JscTUxMigoX192OGRpKV9fQSwgKF9fdjJkaSlfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19zcmxfZXBpNjQoX19tNTEyaSBfX1csIF9fbW1hc2s4IF9fVSwgX19tNTEyaSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfNTEyKChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9zcmxfZXBpNjQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfc3JsX2VwaTY0KF9fbW1hc2s4IF9fVSwgX19tNTEyaSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfNTEyKChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9zcmxfZXBpNjQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3NybHZfZXBpMzIoX19tNTEyaSBfX1gsIF9fbTUxMmkgX19ZKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3Bzcmx2MTZzaSgoX192MTZzaSlfX1gsIChfX3YxNnNpKV9fWSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX3NybHZfZXBpMzIoX19tNTEyaSBfX1csIF9fbW1hc2sxNiBfX1UsIF9fbTUxMmkgX19YLCBfX201MTJpIF9fWSkKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzUxMigoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9zcmx2X2VwaTMyKF9fWCwgX19ZKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9zcmx2X2VwaTMyKF9fbW1hc2sxNiBfX1UsIF9fbTUxMmkgX19YLCBfX201MTJpIF9fWSkKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzUxMigoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9zcmx2X2VwaTMyKF9fWCwgX19ZKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfc3Jsdl9lcGk2NCAoX19tNTEyaSBfX1gsIF9fbTUxMmkgX19ZKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3Bzcmx2OGRpKChfX3Y4ZGkpX19YLCAoX192OGRpKV9fWSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX3NybHZfZXBpNjQoX19tNTEyaSBfX1csIF9fbW1hc2s4IF9fVSwgX19tNTEyaSBfX1gsIF9fbTUxMmkgX19ZKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfNTEyKChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfc3Jsdl9lcGk2NChfX1gsIF9fWSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfc3Jsdl9lcGk2NChfX21tYXNrOCBfX1UsIF9fbTUxMmkgX19YLCBfX201MTJpIF9fWSkKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzUxMigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX3NybHZfZXBpNjQoX19YLCBfX1kpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCiNkZWZpbmUgX21tNTEyX3Rlcm5hcnlsb2dpY19lcGkzMihBLCBCLCBDLCBpbW0pIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfcHRlcm5sb2dkNTEyX21hc2soKF9fdjE2c2kpKF9fbTUxMmkpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKShfX201MTJpKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSkoX19tNTEyaSkoQyksIChpbnQpKGltbSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNiktMSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX3Rlcm5hcnlsb2dpY19lcGkzMihBLCBVLCBCLCBDLCBpbW0pIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfcHRlcm5sb2dkNTEyX21hc2soKF9fdjE2c2kpKF9fbTUxMmkpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKShfX201MTJpKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSkoX19tNTEyaSkoQyksIChpbnQpKGltbSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikoVSkpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfdGVybmFyeWxvZ2ljX2VwaTMyKFUsIEEsIEIsIEMsIGltbSkgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9wdGVybmxvZ2Q1MTJfbWFza3ooKF9fdjE2c2kpKF9fbTUxMmkpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSkoX19tNTEyaSkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKShfX201MTJpKShDKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoaW1tKSwgKF9fbW1hc2sxNikoVSkpKQoKI2RlZmluZSBfbW01MTJfdGVybmFyeWxvZ2ljX2VwaTY0KEEsIEIsIEMsIGltbSkgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9wdGVybmxvZ3E1MTJfbWFzaygoX192OGRpKShfX201MTJpKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKShfX201MTJpKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKShfX201MTJpKShDKSwgKGludCkoaW1tKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEpKQoKI2RlZmluZSBfbW01MTJfbWFza190ZXJuYXJ5bG9naWNfZXBpNjQoQSwgVSwgQiwgQywgaW1tKSBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3B0ZXJubG9ncTUxMl9tYXNrKChfX3Y4ZGkpKF9fbTUxMmkpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpKF9fbTUxMmkpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpKF9fbTUxMmkpKEMpLCAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSkpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfdGVybmFyeWxvZ2ljX2VwaTY0KFUsIEEsIEIsIEMsIGltbSkgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9wdGVybmxvZ3E1MTJfbWFza3ooKF9fdjhkaSkoX19tNTEyaSkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpKF9fbTUxMmkpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKShfX201MTJpKShDKSwgKGludCkoaW1tKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSkpCgojaWZkZWYgX194ODZfNjRfXwojZGVmaW5lIF9tbV9jdnRfcm91bmRzZF9pNjQoQSwgUikgXAogICgobG9uZyBsb25nKV9fYnVpbHRpbl9pYTMyX3ZjdnRzZDJzaTY0KChfX3YyZGYpKF9fbTEyOGQpKEEpLCAoaW50KShSKSkpCiNlbmRpZgoKI2RlZmluZSBfbW1fY3Z0X3JvdW5kc2Rfc2kzMihBLCBSKSBcCiAgKChpbnQpX19idWlsdGluX2lhMzJfdmN2dHNkMnNpMzIoKF9fdjJkZikoX19tMTI4ZCkoQSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX2N2dF9yb3VuZHNkX2kzMihBLCBSKSBcCiAgKChpbnQpX19idWlsdGluX2lhMzJfdmN2dHNkMnNpMzIoKF9fdjJkZikoX19tMTI4ZCkoQSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX2N2dF9yb3VuZHNkX3UzMihBLCBSKSBcCiAgKCh1bnNpZ25lZCBpbnQpX19idWlsdGluX2lhMzJfdmN2dHNkMnVzaTMyKChfX3YyZGYpKF9fbTEyOGQpKEEpLCAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX2N2dHNkX3UzMiAoX19tMTI4ZCBfX0EpCnsKICByZXR1cm4gKHVuc2lnbmVkKSBfX2J1aWx0aW5faWEzMl92Y3Z0c2QydXNpMzIgKChfX3YyZGYpIF9fQSwKICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCiNpZmRlZiBfX3g4Nl82NF9fCiNkZWZpbmUgX21tX2N2dF9yb3VuZHNkX3U2NChBLCBSKSBcCiAgKCh1bnNpZ25lZCBsb25nIGxvbmcpX19idWlsdGluX2lhMzJfdmN2dHNkMnVzaTY0KChfX3YyZGYpKF9fbTEyOGQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX2N2dHNkX3U2NCAoX19tMTI4ZCBfX0EpCnsKICByZXR1cm4gKHVuc2lnbmVkIGxvbmcgbG9uZykgX19idWlsdGluX2lhMzJfdmN2dHNkMnVzaTY0ICgoX192MmRmKQogICAgICAgICAgICAgICAgIF9fQSwKICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CiNlbmRpZgoKI2RlZmluZSBfbW1fY3Z0X3JvdW5kc3Nfc2kzMihBLCBSKSBcCiAgKChpbnQpX19idWlsdGluX2lhMzJfdmN2dHNzMnNpMzIoKF9fdjRzZikoX19tMTI4KShBKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW1fY3Z0X3JvdW5kc3NfaTMyKEEsIFIpIFwKICAoKGludClfX2J1aWx0aW5faWEzMl92Y3Z0c3Myc2kzMigoX192NHNmKShfX20xMjgpKEEpLCAoaW50KShSKSkpCgojaWZkZWYgX194ODZfNjRfXwojZGVmaW5lIF9tbV9jdnRfcm91bmRzc19zaTY0KEEsIFIpIFwKICAoKGxvbmcgbG9uZylfX2J1aWx0aW5faWEzMl92Y3Z0c3Myc2k2NCgoX192NHNmKShfX20xMjgpKEEpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbV9jdnRfcm91bmRzc19pNjQoQSwgUikgXAogICgobG9uZyBsb25nKV9fYnVpbHRpbl9pYTMyX3ZjdnRzczJzaTY0KChfX3Y0c2YpKF9fbTEyOCkoQSksIChpbnQpKFIpKSkKI2VuZGlmCgojZGVmaW5lIF9tbV9jdnRfcm91bmRzc191MzIoQSwgUikgXAogICgodW5zaWduZWQgaW50KV9fYnVpbHRpbl9pYTMyX3ZjdnRzczJ1c2kzMigoX192NHNmKShfX20xMjgpKEEpLCAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX2N2dHNzX3UzMiAoX19tMTI4IF9fQSkKewogIHJldHVybiAodW5zaWduZWQpIF9fYnVpbHRpbl9pYTMyX3ZjdnRzczJ1c2kzMiAoKF9fdjRzZikgX19BLAogICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2lmZGVmIF9feDg2XzY0X18KI2RlZmluZSBfbW1fY3Z0X3JvdW5kc3NfdTY0KEEsIFIpIFwKICAoKHVuc2lnbmVkIGxvbmcgbG9uZylfX2J1aWx0aW5faWEzMl92Y3Z0c3MydXNpNjQoKF9fdjRzZikoX19tMTI4KShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nIGxvbmcgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9jdnRzc191NjQgKF9fbTEyOCBfX0EpCnsKICByZXR1cm4gKHVuc2lnbmVkIGxvbmcgbG9uZykgX19idWlsdGluX2lhMzJfdmN2dHNzMnVzaTY0ICgoX192NHNmKQogICAgICAgICAgICAgICAgIF9fQSwKICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CiNlbmRpZgoKI2RlZmluZSBfbW1fY3Z0dF9yb3VuZHNkX2kzMihBLCBSKSBcCiAgKChpbnQpX19idWlsdGluX2lhMzJfdmN2dHRzZDJzaTMyKChfX3YyZGYpKF9fbTEyOGQpKEEpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbV9jdnR0X3JvdW5kc2Rfc2kzMihBLCBSKSBcCiAgKChpbnQpX19idWlsdGluX2lhMzJfdmN2dHRzZDJzaTMyKChfX3YyZGYpKF9fbTEyOGQpKEEpLCAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9jdnR0c2RfaTMyIChfX20xMjhkIF9fQSkKewogIHJldHVybiAoaW50KSBfX2J1aWx0aW5faWEzMl92Y3Z0dHNkMnNpMzIgKChfX3YyZGYpIF9fQSwKICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgojaWZkZWYgX194ODZfNjRfXwojZGVmaW5lIF9tbV9jdnR0X3JvdW5kc2Rfc2k2NChBLCBSKSBcCiAgKChsb25nIGxvbmcpX19idWlsdGluX2lhMzJfdmN2dHRzZDJzaTY0KChfX3YyZGYpKF9fbTEyOGQpKEEpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbV9jdnR0X3JvdW5kc2RfaTY0KEEsIFIpIFwKICAoKGxvbmcgbG9uZylfX2J1aWx0aW5faWEzMl92Y3Z0dHNkMnNpNjQoKF9fdjJkZikoX19tMTI4ZCkoQSksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIGxvbmcgbG9uZyBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX2N2dHRzZF9pNjQgKF9fbTEyOGQgX19BKQp7CiAgcmV0dXJuIChsb25nIGxvbmcpIF9fYnVpbHRpbl9pYTMyX3ZjdnR0c2Qyc2k2NCAoKF9fdjJkZikgX19BLAogICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KI2VuZGlmCgojZGVmaW5lIF9tbV9jdnR0X3JvdW5kc2RfdTMyKEEsIFIpIFwKICAoKHVuc2lnbmVkIGludClfX2J1aWx0aW5faWEzMl92Y3Z0dHNkMnVzaTMyKChfX3YyZGYpKF9fbTEyOGQpKEEpLCAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX2N2dHRzZF91MzIgKF9fbTEyOGQgX19BKQp7CiAgcmV0dXJuICh1bnNpZ25lZCkgX19idWlsdGluX2lhMzJfdmN2dHRzZDJ1c2kzMiAoKF9fdjJkZikgX19BLAogICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCiNpZmRlZiBfX3g4Nl82NF9fCiNkZWZpbmUgX21tX2N2dHRfcm91bmRzZF91NjQoQSwgUikgXAogICgodW5zaWduZWQgbG9uZyBsb25nKV9fYnVpbHRpbl9pYTMyX3ZjdnR0c2QydXNpNjQoKF9fdjJkZikoX19tMTI4ZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX2N2dHRzZF91NjQgKF9fbTEyOGQgX19BKQp7CiAgcmV0dXJuICh1bnNpZ25lZCBsb25nIGxvbmcpIF9fYnVpbHRpbl9pYTMyX3ZjdnR0c2QydXNpNjQgKChfX3YyZGYpCiAgICAgICAgICAgICAgICAgIF9fQSwKICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQojZW5kaWYKCiNkZWZpbmUgX21tX2N2dHRfcm91bmRzc19pMzIoQSwgUikgXAogICgoaW50KV9fYnVpbHRpbl9pYTMyX3ZjdnR0c3Myc2kzMigoX192NHNmKShfX20xMjgpKEEpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbV9jdnR0X3JvdW5kc3Nfc2kzMihBLCBSKSBcCiAgKChpbnQpX19idWlsdGluX2lhMzJfdmN2dHRzczJzaTMyKChfX3Y0c2YpKF9fbTEyOCkoQSksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX2N2dHRzc19pMzIgKF9fbTEyOCBfX0EpCnsKICByZXR1cm4gKGludCkgX19idWlsdGluX2lhMzJfdmN2dHRzczJzaTMyICgoX192NHNmKSBfX0EsCiAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2lmZGVmIF9feDg2XzY0X18KI2RlZmluZSBfbW1fY3Z0dF9yb3VuZHNzX2k2NChBLCBSKSBcCiAgKChsb25nIGxvbmcpX19idWlsdGluX2lhMzJfdmN2dHRzczJzaTY0KChfX3Y0c2YpKF9fbTEyOCkoQSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX2N2dHRfcm91bmRzc19zaTY0KEEsIFIpIFwKICAoKGxvbmcgbG9uZylfX2J1aWx0aW5faWEzMl92Y3Z0dHNzMnNpNjQoKF9fdjRzZikoX19tMTI4KShBKSwgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lX18gbG9uZyBsb25nIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fY3Z0dHNzX2k2NCAoX19tMTI4IF9fQSkKewogIHJldHVybiAobG9uZyBsb25nKSBfX2J1aWx0aW5faWEzMl92Y3Z0dHNzMnNpNjQgKChfX3Y0c2YpIF9fQSwKICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CiNlbmRpZgoKI2RlZmluZSBfbW1fY3Z0dF9yb3VuZHNzX3UzMihBLCBSKSBcCiAgKCh1bnNpZ25lZCBpbnQpX19idWlsdGluX2lhMzJfdmN2dHRzczJ1c2kzMigoX192NHNmKShfX20xMjgpKEEpLCAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX2N2dHRzc191MzIgKF9fbTEyOCBfX0EpCnsKICByZXR1cm4gKHVuc2lnbmVkKSBfX2J1aWx0aW5faWEzMl92Y3Z0dHNzMnVzaTMyICgoX192NHNmKSBfX0EsCiAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2lmZGVmIF9feDg2XzY0X18KI2RlZmluZSBfbW1fY3Z0dF9yb3VuZHNzX3U2NChBLCBSKSBcCiAgKCh1bnNpZ25lZCBsb25nIGxvbmcpX19idWlsdGluX2lhMzJfdmN2dHRzczJ1c2k2NCgoX192NHNmKShfX20xMjgpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nIGxvbmcgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9jdnR0c3NfdTY0IChfX20xMjggX19BKQp7CiAgcmV0dXJuICh1bnNpZ25lZCBsb25nIGxvbmcpIF9fYnVpbHRpbl9pYTMyX3ZjdnR0c3MydXNpNjQgKChfX3Y0c2YpCiAgICAgICAgICAgICAgICAgIF9fQSwKICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQojZW5kaWYKCiNkZWZpbmUgX21tNTEyX3Blcm11dGVfcGQoWCwgQykgXAogICgoX19tNTEyZClfX2J1aWx0aW5faWEzMl92cGVybWlscGQ1MTIoKF9fdjhkZikoX19tNTEyZCkoWCksIChpbnQpKEMpKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfcGVybXV0ZV9wZChXLCBVLCBYLCBDKSBcCiAgKChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzUxMigoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl9wZXJtdXRlX3BkKChYKSwgKEMpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikoX19tNTEyZCkoVykpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfcGVybXV0ZV9wZChVLCBYLCBDKSBcCiAgKChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzUxMigoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl9wZXJtdXRlX3BkKChYKSwgKEMpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfbW01MTJfc2V0emVyb19wZCgpKSkKCiNkZWZpbmUgX21tNTEyX3Blcm11dGVfcHMoWCwgQykgXAogICgoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3ZwZXJtaWxwczUxMigoX192MTZzZikoX19tNTEyKShYKSwgKGludCkoQykpKQoKI2RlZmluZSBfbW01MTJfbWFza19wZXJtdXRlX3BzKFcsIFUsIFgsIEMpIFwKICAoKF9fbTUxMilfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc181MTIoKF9fbW1hc2sxNikoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX21tNTEyX3Blcm11dGVfcHMoKFgpLCAoQykpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKShfX201MTIpKFcpKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X3Blcm11dGVfcHMoVSwgWCwgQykgXAogICgoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzUxMigoX19tbWFzazE2KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfcGVybXV0ZV9wcygoWCksIChDKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX21tNTEyX3NldHplcm9fcHMoKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfcGVybXV0ZXZhcl9wZChfX201MTJkIF9fQSwgX19tNTEyaSBfX0MpCnsKICByZXR1cm4gKF9fbTUxMmQpX19idWlsdGluX2lhMzJfdnBlcm1pbHZhcnBkNTEyKChfX3Y4ZGYpX19BLCAoX192OGRpKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX3Blcm11dGV2YXJfcGQoX19tNTEyZCBfX1csIF9fbW1hc2s4IF9fVSwgX19tNTEyZCBfX0EsIF9fbTUxMmkgX19DKQp7CiAgcmV0dXJuIChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzUxMigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX3Blcm11dGV2YXJfcGQoX19BLCBfX0MpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X3Blcm11dGV2YXJfcGQoX19tbWFzazggX19VLCBfX201MTJkIF9fQSwgX19tNTEyaSBfX0MpCnsKICByZXR1cm4gKF9fbTUxMmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfNTEyKChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfbW01MTJfcGVybXV0ZXZhcl9wZChfX0EsIF9fQyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfbW01MTJfc2V0emVyb19wZCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfcGVybXV0ZXZhcl9wcyhfX201MTIgX19BLCBfX201MTJpIF9fQykKewogIHJldHVybiAoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3ZwZXJtaWx2YXJwczUxMigoX192MTZzZilfX0EsIChfX3YxNnNpKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfcGVybXV0ZXZhcl9wcyhfX201MTIgX19XLCBfX21tYXNrMTYgX19VLCBfX201MTIgX19BLCBfX201MTJpIF9fQykKewogIHJldHVybiAoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzUxMigoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl9wZXJtdXRldmFyX3BzKF9fQSwgX19DKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X3Blcm11dGV2YXJfcHMoX19tbWFzazE2IF9fVSwgX19tNTEyIF9fQSwgX19tNTEyaSBfX0MpCnsKICByZXR1cm4gKF9fbTUxMilfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc181MTIoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfcGVybXV0ZXZhcl9wcyhfX0EsIF9fQyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfc2V0emVyb19wcygpKTsKfQoKc3RhdGljIF9faW5saW5lIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9wZXJtdXRleDJ2YXJfcGQoX19tNTEyZCBfX0EsIF9fbTUxMmkgX19JLCBfX201MTJkIF9fQikKewogIHJldHVybiAoX19tNTEyZClfX2J1aWx0aW5faWEzMl92cGVybWkydmFycGQ1MTIoKF9fdjhkZilfX0EsIChfX3Y4ZGkpX19JLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19wZXJtdXRleDJ2YXJfcGQoX19tNTEyZCBfX0EsIF9fbW1hc2s4IF9fVSwgX19tNTEyaSBfX0ksIF9fbTUxMmQgX19CKQp7CiAgcmV0dXJuIChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzUxMihfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl9wZXJtdXRleDJ2YXJfcGQoX19BLCBfX0ksIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrMl9wZXJtdXRleDJ2YXJfcGQoX19tNTEyZCBfX0EsIF9fbTUxMmkgX19JLCBfX21tYXNrOCBfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tNTEyZCBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfNTEyKF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX3Blcm11dGV4MnZhcl9wZChfX0EsIF9fSSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpKF9fbTUxMmQpX19JKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X3Blcm11dGV4MnZhcl9wZChfX21tYXNrOCBfX1UsIF9fbTUxMmQgX19BLCBfX201MTJpIF9fSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX201MTJkIF9fQikKewogIHJldHVybiAoX19tNTEyZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF81MTIoX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfbW01MTJfcGVybXV0ZXgydmFyX3BkKF9fQSwgX19JLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfbW01MTJfc2V0emVyb19wZCgpKTsKfQoKc3RhdGljIF9faW5saW5lIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3Blcm11dGV4MnZhcl9wcyhfX201MTIgX19BLCBfX201MTJpIF9fSSwgX19tNTEyIF9fQikKewogIHJldHVybiAoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3ZwZXJtaTJ2YXJwczUxMigoX192MTZzZilfX0EsIChfX3YxNnNpKV9fSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpIF9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfcGVybXV0ZXgydmFyX3BzKF9fbTUxMiBfX0EsIF9fbW1hc2sxNiBfX1UsIF9fbTUxMmkgX19JLCBfX201MTIgX19CKQp7CiAgcmV0dXJuIChfX201MTIpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfNTEyKF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX21tNTEyX3Blcm11dGV4MnZhcl9wcyhfX0EsIF9fSSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFzazJfcGVybXV0ZXgydmFyX3BzKF9fbTUxMiBfX0EsIF9fbTUxMmkgX19JLCBfX21tYXNrMTYgX19VLCBfX201MTIgX19CKQp7CiAgcmV0dXJuIChfX201MTIpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfNTEyKF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX21tNTEyX3Blcm11dGV4MnZhcl9wcyhfX0EsIF9fSSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpKF9fbTUxMilfX0kpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTIgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9wZXJtdXRleDJ2YXJfcHMoX19tbWFzazE2IF9fVSwgX19tNTEyIF9fQSwgX19tNTEyaSBfX0ksIF9fbTUxMiBfX0IpCnsKICByZXR1cm4gKF9fbTUxMilfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc181MTIoX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfcGVybXV0ZXgydmFyX3BzKF9fQSwgX19JLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfc2V0emVyb19wcygpKTsKfQoKCiNkZWZpbmUgX21tNTEyX2N2dHRfcm91bmRwZF9lcHUzMihBLCBSKSBcCiAgKChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX2N2dHRwZDJ1ZHE1MTJfbWFzaygoX192OGRmKShfX201MTJkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfdW5kZWZpbmVkX3NpMjU2KCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza19jdnR0X3JvdW5kcGRfZXB1MzIoVywgVSwgQSwgUikgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9jdnR0cGQydWRxNTEyX21hc2soKF9fdjhkZikoX19tNTEyZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpKF9fbTI1NmkpKFcpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9jdnR0X3JvdW5kcGRfZXB1MzIoVSwgQSwgUikgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9jdnR0cGQydWRxNTEyX21hc2soKF9fdjhkZikoX19tNTEyZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X3NldHplcm9fc2kyNTYoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2N2dHRwZF9lcHUzMiAoX19tNTEyZCBfX0EpCnsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX2N2dHRwZDJ1ZHE1MTJfbWFzayAoKF9fdjhkZikgX19BLAogICAgICAgICAgICAgICAgICAoX192OHNpKQogICAgICAgICAgICAgICAgICBfbW0yNTZfdW5kZWZpbmVkX3NpMjU2ICgpLAogICAgICAgICAgICAgICAgICAoX19tbWFzazgpIC0xLAogICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19jdnR0cGRfZXB1MzIgKF9fbTI1NmkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTUxMmQgX19BKQp7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl9jdnR0cGQydWRxNTEyX21hc2sgKChfX3Y4ZGYpIF9fQSwKICAgICAgICAgICAgICAgICAgKF9fdjhzaSkgX19XLAogICAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2N2dHRwZF9lcHUzMiAoX19tbWFzazggX19VLCBfX201MTJkIF9fQSkKewogIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfY3Z0dHBkMnVkcTUxMl9tYXNrICgoX192OGRmKSBfX0EsCiAgICAgICAgICAgICAgICAgIChfX3Y4c2kpCiAgICAgICAgICAgICAgICAgIF9tbTI1Nl9zZXR6ZXJvX3NpMjU2ICgpLAogICAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW1fcm91bmRzY2FsZV9yb3VuZF9zZChBLCBCLCBpbW0sIFIpIFwKICAoKF9fbTEyOGQpX19idWlsdGluX2lhMzJfcm5kc2NhbGVzZF9yb3VuZF9tYXNrKChfX3YyZGYpKF9fbTEyOGQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfbW1fc2V0emVyb19wZCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEsIChpbnQpKGltbSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX3JvdW5kc2NhbGVfc2QoQSwgQiwgaW1tKSBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3JuZHNjYWxlc2Rfcm91bmRfbWFzaygoX192MmRmKShfX20xMjhkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikoX19tMTI4ZCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX3NldHplcm9fcGQoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xLCAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pKQoKI2RlZmluZSBfbW1fbWFza19yb3VuZHNjYWxlX3NkKFcsIFUsIEEsIEIsIGltbSkgXAogICgoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9ybmRzY2FsZXNkX3JvdW5kX21hc2soKF9fdjJkZikoX19tMTI4ZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShXKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoaW1tKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKSkKCiNkZWZpbmUgX21tX21hc2tfcm91bmRzY2FsZV9yb3VuZF9zZChXLCBVLCBBLCBCLCBJLCBSKSBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3JuZHNjYWxlc2Rfcm91bmRfbWFzaygoX192MmRmKShfX20xMjhkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikoX19tMTI4ZCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKFcpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpLCAoaW50KShJKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoUikpKQoKI2RlZmluZSBfbW1fbWFza3pfcm91bmRzY2FsZV9zZChVLCBBLCBCLCBJKSBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3JuZHNjYWxlc2Rfcm91bmRfbWFzaygoX192MmRmKShfX20xMjhkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikoX19tMTI4ZCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX3NldHplcm9fcGQoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoSSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTikpCgojZGVmaW5lIF9tbV9tYXNrel9yb3VuZHNjYWxlX3JvdW5kX3NkKFUsIEEsIEIsIEksIFIpIFwKICAoKF9fbTEyOGQpX19idWlsdGluX2lhMzJfcm5kc2NhbGVzZF9yb3VuZF9tYXNrKChfX3YyZGYpKF9fbTEyOGQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfbW1fc2V0emVyb19wZCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpLCAoaW50KShJKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoUikpKQoKI2RlZmluZSBfbW1fcm91bmRzY2FsZV9yb3VuZF9zcyhBLCBCLCBpbW0sIFIpIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl9ybmRzY2FsZXNzX3JvdW5kX21hc2soKF9fdjRzZikoX19tMTI4KShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX3NldHplcm9fcHMoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEsIChpbnQpKGltbSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoUikpKQoKI2RlZmluZSBfbW1fcm91bmRzY2FsZV9zcyhBLCBCLCBpbW0pIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl9ybmRzY2FsZXNzX3JvdW5kX21hc2soKF9fdjRzZikoX19tMTI4KShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX3NldHplcm9fcHMoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEsIChpbnQpKGltbSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKSkKCiNkZWZpbmUgX21tX21hc2tfcm91bmRzY2FsZV9zcyhXLCBVLCBBLCBCLCBJKSBcCiAgKChfX20xMjgpX19idWlsdGluX2lhMzJfcm5kc2NhbGVzc19yb3VuZF9tYXNrKChfX3Y0c2YpKF9fbTEyOCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikoX19tMTI4KShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKFcpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKEkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTikpCgojZGVmaW5lIF9tbV9tYXNrX3JvdW5kc2NhbGVfcm91bmRfc3MoVywgVSwgQSwgQiwgSSwgUikgXAogICgoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3JuZHNjYWxlc3Nfcm91bmRfbWFzaygoX192NHNmKShfX20xMjgpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikoX19tMTI4KShXKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpLCAoaW50KShJKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShSKSkpCgojZGVmaW5lIF9tbV9tYXNrel9yb3VuZHNjYWxlX3NzKFUsIEEsIEIsIEkpIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl9ybmRzY2FsZXNzX3JvdW5kX21hc2soKF9fdjRzZikoX19tMTI4KShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX3NldHplcm9fcHMoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpLCAoaW50KShJKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pKQoKI2RlZmluZSBfbW1fbWFza3pfcm91bmRzY2FsZV9yb3VuZF9zcyhVLCBBLCBCLCBJLCBSKSBcCiAgKChfX20xMjgpX19idWlsdGluX2lhMzJfcm5kc2NhbGVzc19yb3VuZF9tYXNrKChfX3Y0c2YpKF9fbTEyOCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikoX19tMTI4KShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9tbV9zZXR6ZXJvX3BzKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoSSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfc2NhbGVmX3JvdW5kX3BkKEEsIEIsIFIpIFwKICAoKF9fbTUxMmQpX19idWlsdGluX2lhMzJfc2NhbGVmcGQ1MTJfbWFzaygoX192OGRmKShfX201MTJkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpKF9fbTUxMmQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfbW01MTJfdW5kZWZpbmVkX3BkKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEsIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfc2NhbGVmX3JvdW5kX3BkKFcsIFUsIEEsIEIsIFIpIFwKICAoKF9fbTUxMmQpX19idWlsdGluX2lhMzJfc2NhbGVmcGQ1MTJfbWFzaygoX192OGRmKShfX201MTJkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpKF9fbTUxMmQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikoX19tNTEyZCkoVyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9zY2FsZWZfcm91bmRfcGQoVSwgQSwgQiwgUikgXAogICgoX19tNTEyZClfX2J1aWx0aW5faWEzMl9zY2FsZWZwZDUxMl9tYXNrKChfX3Y4ZGYpKF9fbTUxMmQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikoX19tNTEyZCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl9zZXR6ZXJvX3BkKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpLCAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfc2NhbGVmX3BkIChfX201MTJkIF9fQSwgX19tNTEyZCBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmQpIF9fYnVpbHRpbl9pYTMyX3NjYWxlZnBkNTEyX21hc2sgKChfX3Y4ZGYpIF9fQSwKICAgICAgICAgICAgICAgIChfX3Y4ZGYpIF9fQiwKICAgICAgICAgICAgICAgIChfX3Y4ZGYpCiAgICAgICAgICAgICAgICBfbW01MTJfdW5kZWZpbmVkX3BkICgpLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSAtMSwKICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX3NjYWxlZl9wZCAoX19tNTEyZCBfX1csIF9fbW1hc2s4IF9fVSwgX19tNTEyZCBfX0EsIF9fbTUxMmQgX19CKQp7CiAgcmV0dXJuIChfX201MTJkKSBfX2J1aWx0aW5faWEzMl9zY2FsZWZwZDUxMl9tYXNrICgoX192OGRmKSBfX0EsCiAgICAgICAgICAgICAgICAoX192OGRmKSBfX0IsCiAgICAgICAgICAgICAgICAoX192OGRmKSBfX1csCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9zY2FsZWZfcGQgKF9fbW1hc2s4IF9fVSwgX19tNTEyZCBfX0EsIF9fbTUxMmQgX19CKQp7CiAgcmV0dXJuIChfX201MTJkKSBfX2J1aWx0aW5faWEzMl9zY2FsZWZwZDUxMl9tYXNrICgoX192OGRmKSBfX0EsCiAgICAgICAgICAgICAgICAoX192OGRmKSBfX0IsCiAgICAgICAgICAgICAgICAoX192OGRmKQogICAgICAgICAgICAgICAgX21tNTEyX3NldHplcm9fcGQgKCksCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCiNkZWZpbmUgX21tNTEyX3NjYWxlZl9yb3VuZF9wcyhBLCBCLCBSKSBcCiAgKChfX201MTIpX19idWlsdGluX2lhMzJfc2NhbGVmcHM1MTJfbWFzaygoX192MTZzZikoX19tNTEyKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpKF9fbTUxMikoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl91bmRlZmluZWRfcHMoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNiktMSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza19zY2FsZWZfcm91bmRfcHMoVywgVSwgQSwgQiwgUikgXAogICgoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3NjYWxlZnBzNTEyX21hc2soKF9fdjE2c2YpKF9fbTUxMikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKShfX201MTIpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikoX19tNTEyKShXKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikoVSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X3NjYWxlZl9yb3VuZF9wcyhVLCBBLCBCLCBSKSBcCiAgKChfX201MTIpX19idWlsdGluX2lhMzJfc2NhbGVmcHM1MTJfbWFzaygoX192MTZzZikoX19tNTEyKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpKF9fbTUxMikoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl9zZXR6ZXJvX3BzKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpKFUpLCAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTIgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9zY2FsZWZfcHMgKF9fbTUxMiBfX0EsIF9fbTUxMiBfX0IpCnsKICByZXR1cm4gKF9fbTUxMikgX19idWlsdGluX2lhMzJfc2NhbGVmcHM1MTJfbWFzayAoKF9fdjE2c2YpIF9fQSwKICAgICAgICAgICAgICAgKF9fdjE2c2YpIF9fQiwKICAgICAgICAgICAgICAgKF9fdjE2c2YpCiAgICAgICAgICAgICAgIF9tbTUxMl91bmRlZmluZWRfcHMgKCksCiAgICAgICAgICAgICAgIChfX21tYXNrMTYpIC0xLAogICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTIgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX3NjYWxlZl9wcyAoX19tNTEyIF9fVywgX19tbWFzazE2IF9fVSwgX19tNTEyIF9fQSwgX19tNTEyIF9fQikKewogIHJldHVybiAoX19tNTEyKSBfX2J1aWx0aW5faWEzMl9zY2FsZWZwczUxMl9tYXNrICgoX192MTZzZikgX19BLAogICAgICAgICAgICAgICAoX192MTZzZikgX19CLAogICAgICAgICAgICAgICAoX192MTZzZikgX19XLAogICAgICAgICAgICAgICAoX19tbWFzazE2KSBfX1UsCiAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X3NjYWxlZl9wcyAoX19tbWFzazE2IF9fVSwgX19tNTEyIF9fQSwgX19tNTEyIF9fQikKewogIHJldHVybiAoX19tNTEyKSBfX2J1aWx0aW5faWEzMl9zY2FsZWZwczUxMl9tYXNrICgoX192MTZzZikgX19BLAogICAgICAgICAgICAgICAoX192MTZzZikgX19CLAogICAgICAgICAgICAgICAoX192MTZzZikKICAgICAgICAgICAgICAgX21tNTEyX3NldHplcm9fcHMgKCksCiAgICAgICAgICAgICAgIChfX21tYXNrMTYpIF9fVSwKICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW1fc2NhbGVmX3JvdW5kX3NkKEEsIEIsIFIpIFwKICAoKF9fbTEyOGQpX19idWlsdGluX2lhMzJfc2NhbGVmc2Rfcm91bmRfbWFzaygoX192MmRmKShfX20xMjhkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfbW1fc2V0emVyb19wZCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xLCAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fc2NhbGVmX3NkIChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGQpIF9fYnVpbHRpbl9pYTMyX3NjYWxlZnNkX3JvdW5kX21hc2sgKChfX3YyZGYpIF9fQSwKICAgICAgICAgICAgICAoX192MmRmKSggX19CKSwgKF9fdjJkZikgX21tX3NldHplcm9fcGQoKSwKICAgICAgICAgICAgICAoX19tbWFzazgpIC0xLAogICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3NjYWxlZl9zZCAoX19tMTI4ZCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQp7CiByZXR1cm4gKF9fbTEyOGQpIF9fYnVpbHRpbl9pYTMyX3NjYWxlZnNkX3JvdW5kX21hc2sgKCAoX192MmRmKSBfX0EsCiAgICAgICAgICAgICAgICAgKF9fdjJkZikgX19CLAogICAgICAgICAgICAgICAgKF9fdjJkZikgX19XLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgojZGVmaW5lIF9tbV9tYXNrX3NjYWxlZl9yb3VuZF9zZChXLCBVLCBBLCBCLCBSKSBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3NjYWxlZnNkX3JvdW5kX21hc2soKF9fdjJkZikoX19tMTI4ZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKFcpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X3NjYWxlZl9zZCAoX19tbWFzazggX19VLCBfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpCnsKIHJldHVybiAoX19tMTI4ZCkgX19idWlsdGluX2lhMzJfc2NhbGVmc2Rfcm91bmRfbWFzayAoIChfX3YyZGYpIF9fQSwKICAgICAgICAgICAgICAgICAoX192MmRmKSBfX0IsCiAgICAgICAgICAgICAgICAoX192MmRmKSBfbW1fc2V0emVyb19wZCAoKSwKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW1fbWFza3pfc2NhbGVmX3JvdW5kX3NkKFUsIEEsIEIsIFIpIFwKICAoKF9fbTEyOGQpX19idWlsdGluX2lhMzJfc2NhbGVmc2Rfcm91bmRfbWFzaygoX192MmRmKShfX20xMjhkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfbW1fc2V0emVyb19wZCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW1fc2NhbGVmX3JvdW5kX3NzKEEsIEIsIFIpIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl9zY2FsZWZzc19yb3VuZF9tYXNrKChfX3Y0c2YpKF9fbTEyOCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX3NldHplcm9fcHMoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xLCAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9zY2FsZWZfc3MgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCnsKICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfc2NhbGVmc3Nfcm91bmRfbWFzayAoKF9fdjRzZikgX19BLAogICAgICAgICAgICAgKF9fdjRzZikoIF9fQiksIChfX3Y0c2YpIF9tbV9zZXR6ZXJvX3BzKCksCiAgICAgICAgICAgICAoX19tbWFzazgpIC0xLAogICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19zY2FsZWZfc3MgKF9fbTEyOCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4IF9fQSwgX19tMTI4IF9fQikKewogcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX3NjYWxlZnNzX3JvdW5kX21hc2sgKCAoX192NHNmKSBfX0EsCiAgICAgICAgICAgICAgICAoX192NHNmKSBfX0IsCiAgICAgICAgICAgICAgICAoX192NHNmKSBfX1csCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCiNkZWZpbmUgX21tX21hc2tfc2NhbGVmX3JvdW5kX3NzKFcsIFUsIEEsIEIsIFIpIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl9zY2FsZWZzc19yb3VuZF9tYXNrKChfX3Y0c2YpKF9fbTEyOCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoVyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X3NjYWxlZl9zcyAoX19tbWFzazggX19VLCBfX20xMjggX19BLCBfX20xMjggX19CKQp7CiByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfc2NhbGVmc3Nfcm91bmRfbWFzayAoIChfX3Y0c2YpIF9fQSwKICAgICAgICAgICAgICAgICAoX192NHNmKSBfX0IsCiAgICAgICAgICAgICAgICAoX192NHNmKSBfbW1fc2V0emVyb19wcyAoKSwKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW1fbWFza3pfc2NhbGVmX3JvdW5kX3NzKFUsIEEsIEIsIFIpIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl9zY2FsZWZzc19yb3VuZF9tYXNrKChfX3Y0c2YpKF9fbTEyOCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX3NldHplcm9fcHMoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3NyYWlfZXBpMzIoX19tNTEyaSBfX0EsIHVuc2lnbmVkIGludCBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfcHNyYWRpNTEyKChfX3YxNnNpKV9fQSwgX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfc3JhaV9lcGkzMihfX201MTJpIF9fVywgX19tbWFzazE2IF9fVSwgX19tNTEyaSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzUxMigoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfc3JhaV9lcGkzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X3NyYWlfZXBpMzIoX19tbWFzazE2IF9fVSwgX19tNTEyaSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX0IpIHsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF81MTIoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX21tNTEyX3NyYWlfZXBpMzIoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfc3JhaV9lcGk2NChfX201MTJpIF9fQSwgdW5zaWduZWQgaW50IF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9wc3JhcWk1MTIoKF9fdjhkaSlfX0EsIF9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX3NyYWlfZXBpNjQoX19tNTEyaSBfX1csIF9fbW1hc2s4IF9fVSwgX19tNTEyaSBfX0EsIHVuc2lnbmVkIGludCBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV81MTIoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfc3JhaV9lcGk2NChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X3NyYWlfZXBpNjQoX19tbWFzazggX19VLCBfX201MTJpIF9fQSwgdW5zaWduZWQgaW50IF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzUxMigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9zcmFpX2VwaTY0KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKI2RlZmluZSBfbW01MTJfc2h1ZmZsZV9mMzJ4NChBLCBCLCBpbW0pIFwKICAoKF9fbTUxMilfX2J1aWx0aW5faWEzMl9zaHVmX2YzMng0KChfX3YxNnNmKShfX201MTIpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikoX19tNTEyKShCKSwgKGludCkoaW1tKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX3NodWZmbGVfZjMyeDQoVywgVSwgQSwgQiwgaW1tKSBcCiAgKChfX201MTIpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfNTEyKChfX21tYXNrMTYpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl9zaHVmZmxlX2YzMng0KChBKSwgKEIpLCAoaW1tKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpKF9fbTUxMikoVykpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfc2h1ZmZsZV9mMzJ4NChVLCBBLCBCLCBpbW0pIFwKICAoKF9fbTUxMilfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc181MTIoKF9fbW1hc2sxNikoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX21tNTEyX3NodWZmbGVfZjMyeDQoKEEpLCAoQiksIChpbW0pKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfc2V0emVyb19wcygpKSkKCiNkZWZpbmUgX21tNTEyX3NodWZmbGVfZjY0eDIoQSwgQiwgaW1tKSBcCiAgKChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3NodWZfZjY0eDIoKF9fdjhkZikoX19tNTEyZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKShfX201MTJkKShCKSwgKGludCkoaW1tKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX3NodWZmbGVfZjY0eDIoVywgVSwgQSwgQiwgaW1tKSBcCiAgKChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzUxMigoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl9zaHVmZmxlX2Y2NHgyKChBKSwgKEIpLCAoaW1tKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpKF9fbTUxMmQpKFcpKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X3NodWZmbGVfZjY0eDIoVSwgQSwgQiwgaW1tKSBcCiAgKChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzUxMigoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl9zaHVmZmxlX2Y2NHgyKChBKSwgKEIpLCAoaW1tKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX3NldHplcm9fcGQoKSkpCgojZGVmaW5lIF9tbTUxMl9zaHVmZmxlX2kzMng0KEEsIEIsIGltbSkgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zaHVmX2kzMng0KChfX3YxNnNpKShfX201MTJpKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKShfX201MTJpKShCKSwgKGludCkoaW1tKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX3NodWZmbGVfaTMyeDQoVywgVSwgQSwgQiwgaW1tKSBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfNTEyKChfX21tYXNrMTYpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9zaHVmZmxlX2kzMng0KChBKSwgKEIpLCAoaW1tKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpKF9fbTUxMmkpKFcpKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X3NodWZmbGVfaTMyeDQoVSwgQSwgQiwgaW1tKSBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfNTEyKChfX21tYXNrMTYpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9zaHVmZmxlX2kzMng0KChBKSwgKEIpLCAoaW1tKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX21tNTEyX3NldHplcm9fc2k1MTIoKSkpCgojZGVmaW5lIF9tbTUxMl9zaHVmZmxlX2k2NHgyKEEsIEIsIGltbSkgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zaHVmX2k2NHgyKChfX3Y4ZGkpKF9fbTUxMmkpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSkoX19tNTEyaSkoQiksIChpbnQpKGltbSkpKQoKI2RlZmluZSBfbW01MTJfbWFza19zaHVmZmxlX2k2NHgyKFcsIFUsIEEsIEIsIGltbSkgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzUxMigoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX3NodWZmbGVfaTY0eDIoKEEpLCAoQiksIChpbW0pKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKShfX201MTJpKShXKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9zaHVmZmxlX2k2NHgyKFUsIEEsIEIsIGltbSkgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzUxMigoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX3NodWZmbGVfaTY0eDIoKEEpLCAoQiksIChpbW0pKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpKQoKI2RlZmluZSBfbW01MTJfc2h1ZmZsZV9wZChBLCBCLCBNKSBcCiAgKChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3NodWZwZDUxMigoX192OGRmKShfX201MTJkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikoX19tNTEyZCkoQiksIChpbnQpKE0pKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfc2h1ZmZsZV9wZChXLCBVLCBBLCBCLCBNKSBcCiAgKChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzUxMigoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl9zaHVmZmxlX3BkKChBKSwgKEIpLCAoTSkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKShfX201MTJkKShXKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9zaHVmZmxlX3BkKFUsIEEsIEIsIE0pIFwKICAoKF9fbTUxMmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfNTEyKChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX3NodWZmbGVfcGQoKEEpLCAoQiksIChNKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX3NldHplcm9fcGQoKSkpCgojZGVmaW5lIF9tbTUxMl9zaHVmZmxlX3BzKEEsIEIsIE0pIFwKICAoKF9fbTUxMilfX2J1aWx0aW5faWEzMl9zaHVmcHM1MTIoKF9fdjE2c2YpKF9fbTUxMikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpKF9fbTUxMikoQiksIChpbnQpKE0pKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfc2h1ZmZsZV9wcyhXLCBVLCBBLCBCLCBNKSBcCiAgKChfX201MTIpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfNTEyKChfX21tYXNrMTYpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl9zaHVmZmxlX3BzKChBKSwgKEIpLCAoTSkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKShfX201MTIpKFcpKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X3NodWZmbGVfcHMoVSwgQSwgQiwgTSkgXAogICgoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzUxMigoX19tbWFzazE2KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfc2h1ZmZsZV9wcygoQSksIChCKSwgKE0pKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfc2V0emVyb19wcygpKSkKCiNkZWZpbmUgX21tX3NxcnRfcm91bmRfc2QoQSwgQiwgUikgXAogICgoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9zcXJ0c2Rfcm91bmRfbWFzaygoX192MmRmKShfX20xMjhkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9tbV9zZXR6ZXJvX3BkKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xLCAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19zcXJ0X3NkIChfX20xMjhkIF9fVywgX19tbWFzazggX19VLCBfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpCnsKIHJldHVybiAoX19tMTI4ZCkgX19idWlsdGluX2lhMzJfc3FydHNkX3JvdW5kX21hc2sgKCAoX192MmRmKSBfX0EsCiAgICAgICAgICAgICAgICAgKF9fdjJkZikgX19CLAogICAgICAgICAgICAgICAgKF9fdjJkZikgX19XLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgojZGVmaW5lIF9tbV9tYXNrX3NxcnRfcm91bmRfc2QoVywgVSwgQSwgQiwgUikgXAogICgoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9zcXJ0c2Rfcm91bmRfbWFzaygoX192MmRmKShfX20xMjhkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShXKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpLCAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfc3FydF9zZCAoX19tbWFzazggX19VLCBfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpCnsKIHJldHVybiAoX19tMTI4ZCkgX19idWlsdGluX2lhMzJfc3FydHNkX3JvdW5kX21hc2sgKCAoX192MmRmKSBfX0EsCiAgICAgICAgICAgICAgICAgKF9fdjJkZikgX19CLAogICAgICAgICAgICAgICAgKF9fdjJkZikgX21tX3NldHplcm9fcGQgKCksCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCiNkZWZpbmUgX21tX21hc2t6X3NxcnRfcm91bmRfc2QoVSwgQSwgQiwgUikgXAogICgoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9zcXJ0c2Rfcm91bmRfbWFzaygoX192MmRmKShfX20xMjhkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9tbV9zZXR6ZXJvX3BkKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW1fc3FydF9yb3VuZF9zcyhBLCBCLCBSKSBcCiAgKChfX20xMjgpX19idWlsdGluX2lhMzJfc3FydHNzX3JvdW5kX21hc2soKF9fdjRzZikoX19tMTI4KShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9tbV9zZXR6ZXJvX3BzKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEsIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfc3FydF9zcyAoX19tMTI4IF9fVywgX19tbWFzazggX19VLCBfX20xMjggX19BLCBfX20xMjggX19CKQp7CiByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfc3FydHNzX3JvdW5kX21hc2sgKCAoX192NHNmKSBfX0EsCiAgICAgICAgICAgICAgICAgKF9fdjRzZikgX19CLAogICAgICAgICAgICAgICAgKF9fdjRzZikgX19XLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgojZGVmaW5lIF9tbV9tYXNrX3NxcnRfcm91bmRfc3MoVywgVSwgQSwgQiwgUikgXAogICgoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3NxcnRzc19yb3VuZF9tYXNrKChfX3Y0c2YpKF9fbTEyOCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikoX19tMTI4KShXKSwgKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X3NxcnRfc3MgKF9fbW1hc2s4IF9fVSwgX19tMTI4IF9fQSwgX19tMTI4IF9fQikKewogcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX3NxcnRzc19yb3VuZF9tYXNrICggKF9fdjRzZikgX19BLAogICAgICAgICAgICAgICAgIChfX3Y0c2YpIF9fQiwKICAgICAgICAgICAgICAgIChfX3Y0c2YpIF9tbV9zZXR6ZXJvX3BzICgpLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgojZGVmaW5lIF9tbV9tYXNrel9zcXJ0X3JvdW5kX3NzKFUsIEEsIEIsIFIpIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl9zcXJ0c3Nfcm91bmRfbWFzaygoX192NHNmKShfX20xMjgpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikoX19tMTI4KShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX3NldHplcm9fcHMoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2Jyb2FkY2FzdF9mMzJ4NChfX20xMjggX19BKQp7CiAgcmV0dXJuIChfX201MTIpX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjRzZilfX0EsIChfX3Y0c2YpX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDEsIDIsIDMsIDAsIDEsIDIsIDMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMSwgMiwgMywgMCwgMSwgMiwgMyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfYnJvYWRjYXN0X2YzMng0KF9fbTUxMiBfX08sIF9fbW1hc2sxNiBfX00sIF9fbTEyOCBfX0EpCnsKICByZXR1cm4gKF9fbTUxMilfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc181MTIoKF9fbW1hc2sxNilfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfYnJvYWRjYXN0X2YzMng0KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfX08pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTIgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9icm9hZGNhc3RfZjMyeDQoX19tbWFzazE2IF9fTSwgX19tMTI4IF9fQSkKewogIHJldHVybiAoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzUxMigoX19tbWFzazE2KV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl9icm9hZGNhc3RfZjMyeDQoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl9zZXR6ZXJvX3BzKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfYnJvYWRjYXN0X2Y2NHg0KF9fbTI1NmQgX19BKQp7CiAgcmV0dXJuIChfX201MTJkKV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y0ZGYpX19BLCAoX192NGRmKV9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMSwgMiwgMywgMCwgMSwgMiwgMyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2Jyb2FkY2FzdF9mNjR4NChfX201MTJkIF9fTywgX19tbWFzazggX19NLCBfX20yNTZkIF9fQSkKewogIHJldHVybiAoX19tNTEyZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF81MTIoKF9fbW1hc2s4KV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl9icm9hZGNhc3RfZjY0eDQoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9fTyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9icm9hZGNhc3RfZjY0eDQoX19tbWFzazggX19NLCBfX20yNTZkIF9fQSkKewogIHJldHVybiAoX19tNTEyZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF81MTIoKF9fbW1hc2s4KV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl9icm9hZGNhc3RfZjY0eDQoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl9zZXR6ZXJvX3BkKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfYnJvYWRjYXN0X2kzMng0KF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y0c2kpX19BLCAoX192NHNpKV9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMSwgMiwgMywgMCwgMSwgMiwgMywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMSwgMiwgMywgMCwgMSwgMiwgMyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2Jyb2FkY2FzdF9pMzJ4NChfX201MTJpIF9fTywgX19tbWFzazE2IF9fTSwgX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF81MTIoKF9fbW1hc2sxNilfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfYnJvYWRjYXN0X2kzMng0KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfX08pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfYnJvYWRjYXN0X2kzMng0KF9fbW1hc2sxNiBfX00sIF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfNTEyKChfX21tYXNrMTYpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX21tNTEyX2Jyb2FkY2FzdF9pMzJ4NChfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9icm9hZGNhc3RfaTY0eDQoX19tMjU2aSBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjRkaSlfX0EsIChfX3Y0ZGkpX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAxLCAyLCAzLCAwLCAxLCAyLCAzKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfYnJvYWRjYXN0X2k2NHg0KF9fbTUxMmkgX19PLCBfX21tYXNrOCBfX00sIF9fbTI1NmkgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfNTEyKChfX21tYXNrOClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfYnJvYWRjYXN0X2k2NHg0KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfX08pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfYnJvYWRjYXN0X2k2NHg0KF9fbW1hc2s4IF9fTSwgX19tMjU2aSBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV81MTIoKF9fbW1hc2s4KV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9icm9hZGNhc3RfaTY0eDQoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19icm9hZGNhc3RzZF9wZCAoX19tNTEyZCBfX08sIF9fbW1hc2s4IF9fTSwgX19tMTI4ZCBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfNTEyKF9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpIF9tbTUxMl9icm9hZGNhc3RzZF9wZChfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikgX19PKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2Jyb2FkY2FzdHNkX3BkIChfX21tYXNrOCBfX00sIF9fbTEyOGQgX19BKQp7CiAgcmV0dXJuIChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzUxMihfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKSBfbW01MTJfYnJvYWRjYXN0c2RfcGQoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpIF9tbTUxMl9zZXR6ZXJvX3BkKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTIgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2Jyb2FkY2FzdHNzX3BzIChfX201MTIgX19PLCBfX21tYXNrMTYgX19NLCBfX20xMjggX19BKQp7CiAgcmV0dXJuIChfX201MTIpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfNTEyKF9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpIF9tbTUxMl9icm9hZGNhc3Rzc19wcyhfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikgX19PKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfYnJvYWRjYXN0c3NfcHMgKF9fbW1hc2sxNiBfX00sIF9fbTEyOCBfX0EpCnsKICByZXR1cm4gKF9fbTUxMilfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc181MTIoX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikgX21tNTEyX2Jyb2FkY2FzdHNzX3BzKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKSBfbW01MTJfc2V0emVyb19wcygpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2N2dHNlcGkzMl9lcGk4IChfX201MTJpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnNkYjUxMl9tYXNrICgoX192MTZzaSkgX19BLAogICAgICAgICAgICAgICAoX192MTZxaSkgX21tX3VuZGVmaW5lZF9zaTEyOCAoKSwKICAgICAgICAgICAgICAgKF9fbW1hc2sxNikgLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19jdnRzZXBpMzJfZXBpOCAoX19tMTI4aSBfX08sIF9fbW1hc2sxNiBfX00sIF9fbTUxMmkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92c2RiNTEyX21hc2sgKChfX3YxNnNpKSBfX0EsCiAgICAgICAgICAgICAgIChfX3YxNnFpKSBfX08sIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9jdnRzZXBpMzJfZXBpOCAoX19tbWFzazE2IF9fTSwgX19tNTEyaSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Btb3ZzZGI1MTJfbWFzayAoKF9fdjE2c2kpIF9fQSwKICAgICAgICAgICAgICAgKF9fdjE2cWkpIF9tbV9zZXR6ZXJvX3NpMTI4ICgpLAogICAgICAgICAgICAgICBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19jdnRzZXBpMzJfc3RvcmV1X2VwaTggKHZvaWQgKiBfX1AsIF9fbW1hc2sxNiBfX00sIF9fbTUxMmkgX19BKQp7CiAgX19idWlsdGluX2lhMzJfcG1vdnNkYjUxMm1lbV9tYXNrICgoX192MTZxaSAqKSBfX1AsIChfX3YxNnNpKSBfX0EsIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9jdnRzZXBpMzJfZXBpMTYgKF9fbTUxMmkgX19BKQp7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl9wbW92c2R3NTEyX21hc2sgKChfX3YxNnNpKSBfX0EsCiAgICAgICAgICAgICAgIChfX3YxNmhpKSBfbW0yNTZfdW5kZWZpbmVkX3NpMjU2ICgpLAogICAgICAgICAgICAgICAoX19tbWFzazE2KSAtMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2N2dHNlcGkzMl9lcGkxNiAoX19tMjU2aSBfX08sIF9fbW1hc2sxNiBfX00sIF9fbTUxMmkgX19BKQp7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl9wbW92c2R3NTEyX21hc2sgKChfX3YxNnNpKSBfX0EsCiAgICAgICAgICAgICAgIChfX3YxNmhpKSBfX08sIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9jdnRzZXBpMzJfZXBpMTYgKF9fbW1hc2sxNiBfX00sIF9fbTUxMmkgX19BKQp7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl9wbW92c2R3NTEyX21hc2sgKChfX3YxNnNpKSBfX0EsCiAgICAgICAgICAgICAgIChfX3YxNmhpKSBfbW0yNTZfc2V0emVyb19zaTI1NiAoKSwKICAgICAgICAgICAgICAgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfY3Z0c2VwaTMyX3N0b3JldV9lcGkxNiAodm9pZCAqX19QLCBfX21tYXNrMTYgX19NLCBfX201MTJpIF9fQSkKewogIF9fYnVpbHRpbl9pYTMyX3Btb3ZzZHc1MTJtZW1fbWFzayAoKF9fdjE2aGkqKSBfX1AsIChfX3YxNnNpKSBfX0EsIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9jdnRzZXBpNjRfZXBpOCAoX19tNTEyaSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Btb3ZzcWI1MTJfbWFzayAoKF9fdjhkaSkgX19BLAogICAgICAgICAgICAgICAoX192MTZxaSkgX21tX3VuZGVmaW5lZF9zaTEyOCAoKSwKICAgICAgICAgICAgICAgKF9fbW1hc2s4KSAtMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2N2dHNlcGk2NF9lcGk4IChfX20xMjhpIF9fTywgX19tbWFzazggX19NLCBfX201MTJpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnNxYjUxMl9tYXNrICgoX192OGRpKSBfX0EsCiAgICAgICAgICAgICAgIChfX3YxNnFpKSBfX08sIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9jdnRzZXBpNjRfZXBpOCAoX19tbWFzazggX19NLCBfX201MTJpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnNxYjUxMl9tYXNrICgoX192OGRpKSBfX0EsCiAgICAgICAgICAgICAgIChfX3YxNnFpKSBfbW1fc2V0emVyb19zaTEyOCAoKSwKICAgICAgICAgICAgICAgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfY3Z0c2VwaTY0X3N0b3JldV9lcGk4ICh2b2lkICogX19QLCBfX21tYXNrOCBfX00sIF9fbTUxMmkgX19BKQp7CiAgX19idWlsdGluX2lhMzJfcG1vdnNxYjUxMm1lbV9tYXNrICgoX192MTZxaSAqKSBfX1AsIChfX3Y4ZGkpIF9fQSwgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2N2dHNlcGk2NF9lcGkzMiAoX19tNTEyaSBfX0EpCnsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX3Btb3ZzcWQ1MTJfbWFzayAoKF9fdjhkaSkgX19BLAogICAgICAgICAgICAgICAoX192OHNpKSBfbW0yNTZfdW5kZWZpbmVkX3NpMjU2ICgpLAogICAgICAgICAgICAgICAoX19tbWFzazgpIC0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfY3Z0c2VwaTY0X2VwaTMyIChfX20yNTZpIF9fTywgX19tbWFzazggX19NLCBfX201MTJpIF9fQSkKewogIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfcG1vdnNxZDUxMl9tYXNrICgoX192OGRpKSBfX0EsCiAgICAgICAgICAgICAgIChfX3Y4c2kpIF9fTywgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2N2dHNlcGk2NF9lcGkzMiAoX19tbWFzazggX19NLCBfX201MTJpIF9fQSkKewogIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfcG1vdnNxZDUxMl9tYXNrICgoX192OGRpKSBfX0EsCiAgICAgICAgICAgICAgIChfX3Y4c2kpIF9tbTI1Nl9zZXR6ZXJvX3NpMjU2ICgpLAogICAgICAgICAgICAgICBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19jdnRzZXBpNjRfc3RvcmV1X2VwaTMyICh2b2lkICpfX1AsIF9fbW1hc2s4IF9fTSwgX19tNTEyaSBfX0EpCnsKICBfX2J1aWx0aW5faWEzMl9wbW92c3FkNTEybWVtX21hc2sgKChfX3Y4c2kgKikgX19QLCAoX192OGRpKSBfX0EsIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9jdnRzZXBpNjRfZXBpMTYgKF9fbTUxMmkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92c3F3NTEyX21hc2sgKChfX3Y4ZGkpIF9fQSwKICAgICAgICAgICAgICAgKF9fdjhoaSkgX21tX3VuZGVmaW5lZF9zaTEyOCAoKSwKICAgICAgICAgICAgICAgKF9fbW1hc2s4KSAtMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2N2dHNlcGk2NF9lcGkxNiAoX19tMTI4aSBfX08sIF9fbW1hc2s4IF9fTSwgX19tNTEyaSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Btb3ZzcXc1MTJfbWFzayAoKF9fdjhkaSkgX19BLAogICAgICAgICAgICAgICAoX192OGhpKSBfX08sIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9jdnRzZXBpNjRfZXBpMTYgKF9fbW1hc2s4IF9fTSwgX19tNTEyaSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Btb3ZzcXc1MTJfbWFzayAoKF9fdjhkaSkgX19BLAogICAgICAgICAgICAgICAoX192OGhpKSBfbW1fc2V0emVyb19zaTEyOCAoKSwKICAgICAgICAgICAgICAgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfY3Z0c2VwaTY0X3N0b3JldV9lcGkxNiAodm9pZCAqIF9fUCwgX19tbWFzazggX19NLCBfX201MTJpIF9fQSkKewogIF9fYnVpbHRpbl9pYTMyX3Btb3ZzcXc1MTJtZW1fbWFzayAoKF9fdjhoaSAqKSBfX1AsIChfX3Y4ZGkpIF9fQSwgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2N2dHVzZXBpMzJfZXBpOCAoX19tNTEyaSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Btb3Z1c2RiNTEyX21hc2sgKChfX3YxNnNpKSBfX0EsCiAgICAgICAgICAgICAgICAoX192MTZxaSkgX21tX3VuZGVmaW5lZF9zaTEyOCAoKSwKICAgICAgICAgICAgICAgIChfX21tYXNrMTYpIC0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfY3Z0dXNlcGkzMl9lcGk4IChfX20xMjhpIF9fTywgX19tbWFzazE2IF9fTSwgX19tNTEyaSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Btb3Z1c2RiNTEyX21hc2sgKChfX3YxNnNpKSBfX0EsCiAgICAgICAgICAgICAgICAoX192MTZxaSkgX19PLAogICAgICAgICAgICAgICAgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2N2dHVzZXBpMzJfZXBpOCAoX19tbWFzazE2IF9fTSwgX19tNTEyaSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Btb3Z1c2RiNTEyX21hc2sgKChfX3YxNnNpKSBfX0EsCiAgICAgICAgICAgICAgICAoX192MTZxaSkgX21tX3NldHplcm9fc2kxMjggKCksCiAgICAgICAgICAgICAgICBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19jdnR1c2VwaTMyX3N0b3JldV9lcGk4ICh2b2lkICogX19QLCBfX21tYXNrMTYgX19NLCBfX201MTJpIF9fQSkKewogIF9fYnVpbHRpbl9pYTMyX3Btb3Z1c2RiNTEybWVtX21hc2sgKChfX3YxNnFpICopIF9fUCwgKF9fdjE2c2kpIF9fQSwgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2N2dHVzZXBpMzJfZXBpMTYgKF9fbTUxMmkgX19BKQp7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl9wbW92dXNkdzUxMl9tYXNrICgoX192MTZzaSkgX19BLAogICAgICAgICAgICAgICAgKF9fdjE2aGkpIF9tbTI1Nl91bmRlZmluZWRfc2kyNTYgKCksCiAgICAgICAgICAgICAgICAoX19tbWFzazE2KSAtMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2N2dHVzZXBpMzJfZXBpMTYgKF9fbTI1NmkgX19PLCBfX21tYXNrMTYgX19NLCBfX201MTJpIF9fQSkKewogIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfcG1vdnVzZHc1MTJfbWFzayAoKF9fdjE2c2kpIF9fQSwKICAgICAgICAgICAgICAgIChfX3YxNmhpKSBfX08sCiAgICAgICAgICAgICAgICBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfY3Z0dXNlcGkzMl9lcGkxNiAoX19tbWFzazE2IF9fTSwgX19tNTEyaSBfX0EpCnsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX3Btb3Z1c2R3NTEyX21hc2sgKChfX3YxNnNpKSBfX0EsCiAgICAgICAgICAgICAgICAoX192MTZoaSkgX21tMjU2X3NldHplcm9fc2kyNTYgKCksCiAgICAgICAgICAgICAgICBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19jdnR1c2VwaTMyX3N0b3JldV9lcGkxNiAodm9pZCAqX19QLCBfX21tYXNrMTYgX19NLCBfX201MTJpIF9fQSkKewogIF9fYnVpbHRpbl9pYTMyX3Btb3Z1c2R3NTEybWVtX21hc2sgKChfX3YxNmhpKikgX19QLCAoX192MTZzaSkgX19BLCBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfY3Z0dXNlcGk2NF9lcGk4IChfX201MTJpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnVzcWI1MTJfbWFzayAoKF9fdjhkaSkgX19BLAogICAgICAgICAgICAgICAgKF9fdjE2cWkpIF9tbV91bmRlZmluZWRfc2kxMjggKCksCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIC0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfY3Z0dXNlcGk2NF9lcGk4IChfX20xMjhpIF9fTywgX19tbWFzazggX19NLCBfX201MTJpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnVzcWI1MTJfbWFzayAoKF9fdjhkaSkgX19BLAogICAgICAgICAgICAgICAgKF9fdjE2cWkpIF9fTywKICAgICAgICAgICAgICAgIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9jdnR1c2VwaTY0X2VwaTggKF9fbW1hc2s4IF9fTSwgX19tNTEyaSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Btb3Z1c3FiNTEyX21hc2sgKChfX3Y4ZGkpIF9fQSwKICAgICAgICAgICAgICAgIChfX3YxNnFpKSBfbW1fc2V0emVyb19zaTEyOCAoKSwKICAgICAgICAgICAgICAgIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2N2dHVzZXBpNjRfc3RvcmV1X2VwaTggKHZvaWQgKiBfX1AsIF9fbW1hc2s4IF9fTSwgX19tNTEyaSBfX0EpCnsKICBfX2J1aWx0aW5faWEzMl9wbW92dXNxYjUxMm1lbV9tYXNrICgoX192MTZxaSAqKSBfX1AsIChfX3Y4ZGkpIF9fQSwgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2N2dHVzZXBpNjRfZXBpMzIgKF9fbTUxMmkgX19BKQp7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl9wbW92dXNxZDUxMl9tYXNrICgoX192OGRpKSBfX0EsCiAgICAgICAgICAgICAgICAoX192OHNpKSBfbW0yNTZfdW5kZWZpbmVkX3NpMjU2ICgpLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSAtMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2N2dHVzZXBpNjRfZXBpMzIgKF9fbTI1NmkgX19PLCBfX21tYXNrOCBfX00sIF9fbTUxMmkgX19BKQp7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl9wbW92dXNxZDUxMl9tYXNrICgoX192OGRpKSBfX0EsCiAgICAgICAgICAgICAgICAoX192OHNpKSBfX08sIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9jdnR1c2VwaTY0X2VwaTMyIChfX21tYXNrOCBfX00sIF9fbTUxMmkgX19BKQp7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl9wbW92dXNxZDUxMl9tYXNrICgoX192OGRpKSBfX0EsCiAgICAgICAgICAgICAgICAoX192OHNpKSBfbW0yNTZfc2V0emVyb19zaTI1NiAoKSwKICAgICAgICAgICAgICAgIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2N2dHVzZXBpNjRfc3RvcmV1X2VwaTMyICh2b2lkKiBfX1AsIF9fbW1hc2s4IF9fTSwgX19tNTEyaSBfX0EpCnsKICBfX2J1aWx0aW5faWEzMl9wbW92dXNxZDUxMm1lbV9tYXNrICgoX192OHNpKikgX19QLCAoX192OGRpKSBfX0EsIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9jdnR1c2VwaTY0X2VwaTE2IChfX201MTJpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnVzcXc1MTJfbWFzayAoKF9fdjhkaSkgX19BLAogICAgICAgICAgICAgICAgKF9fdjhoaSkgX21tX3VuZGVmaW5lZF9zaTEyOCAoKSwKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19jdnR1c2VwaTY0X2VwaTE2IChfX20xMjhpIF9fTywgX19tbWFzazggX19NLCBfX201MTJpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnVzcXc1MTJfbWFzayAoKF9fdjhkaSkgX19BLAogICAgICAgICAgICAgICAgKF9fdjhoaSkgX19PLCBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfY3Z0dXNlcGk2NF9lcGkxNiAoX19tbWFzazggX19NLCBfX201MTJpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnVzcXc1MTJfbWFzayAoKF9fdjhkaSkgX19BLAogICAgICAgICAgICAgICAgKF9fdjhoaSkgX21tX3NldHplcm9fc2kxMjggKCksCiAgICAgICAgICAgICAgICBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19jdnR1c2VwaTY0X3N0b3JldV9lcGkxNiAodm9pZCAqX19QLCBfX21tYXNrOCBfX00sIF9fbTUxMmkgX19BKQp7CiAgX19idWlsdGluX2lhMzJfcG1vdnVzcXc1MTJtZW1fbWFzayAoKF9fdjhoaSopIF9fUCwgKF9fdjhkaSkgX19BLCBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfY3Z0ZXBpMzJfZXBpOCAoX19tNTEyaSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Btb3ZkYjUxMl9tYXNrICgoX192MTZzaSkgX19BLAogICAgICAgICAgICAgIChfX3YxNnFpKSBfbW1fdW5kZWZpbmVkX3NpMTI4ICgpLAogICAgICAgICAgICAgIChfX21tYXNrMTYpIC0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfY3Z0ZXBpMzJfZXBpOCAoX19tMTI4aSBfX08sIF9fbW1hc2sxNiBfX00sIF9fbTUxMmkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92ZGI1MTJfbWFzayAoKF9fdjE2c2kpIF9fQSwKICAgICAgICAgICAgICAoX192MTZxaSkgX19PLCBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfY3Z0ZXBpMzJfZXBpOCAoX19tbWFzazE2IF9fTSwgX19tNTEyaSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Btb3ZkYjUxMl9tYXNrICgoX192MTZzaSkgX19BLAogICAgICAgICAgICAgIChfX3YxNnFpKSBfbW1fc2V0emVyb19zaTEyOCAoKSwKICAgICAgICAgICAgICBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19jdnRlcGkzMl9zdG9yZXVfZXBpOCAodm9pZCAqIF9fUCwgX19tbWFzazE2IF9fTSwgX19tNTEyaSBfX0EpCnsKICBfX2J1aWx0aW5faWEzMl9wbW92ZGI1MTJtZW1fbWFzayAoKF9fdjE2cWkgKikgX19QLCAoX192MTZzaSkgX19BLCBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfY3Z0ZXBpMzJfZXBpMTYgKF9fbTUxMmkgX19BKQp7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl9wbW92ZHc1MTJfbWFzayAoKF9fdjE2c2kpIF9fQSwKICAgICAgICAgICAgICAoX192MTZoaSkgX21tMjU2X3VuZGVmaW5lZF9zaTI1NiAoKSwKICAgICAgICAgICAgICAoX19tbWFzazE2KSAtMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2N2dGVwaTMyX2VwaTE2IChfX20yNTZpIF9fTywgX19tbWFzazE2IF9fTSwgX19tNTEyaSBfX0EpCnsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX3Btb3ZkdzUxMl9tYXNrICgoX192MTZzaSkgX19BLAogICAgICAgICAgICAgIChfX3YxNmhpKSBfX08sIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9jdnRlcGkzMl9lcGkxNiAoX19tbWFzazE2IF9fTSwgX19tNTEyaSBfX0EpCnsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX3Btb3ZkdzUxMl9tYXNrICgoX192MTZzaSkgX19BLAogICAgICAgICAgICAgIChfX3YxNmhpKSBfbW0yNTZfc2V0emVyb19zaTI1NiAoKSwKICAgICAgICAgICAgICBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19jdnRlcGkzMl9zdG9yZXVfZXBpMTYgKHZvaWQgKiBfX1AsIF9fbW1hc2sxNiBfX00sIF9fbTUxMmkgX19BKQp7CiAgX19idWlsdGluX2lhMzJfcG1vdmR3NTEybWVtX21hc2sgKChfX3YxNmhpICopIF9fUCwgKF9fdjE2c2kpIF9fQSwgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2N2dGVwaTY0X2VwaTggKF9fbTUxMmkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92cWI1MTJfbWFzayAoKF9fdjhkaSkgX19BLAogICAgICAgICAgICAgIChfX3YxNnFpKSBfbW1fdW5kZWZpbmVkX3NpMTI4ICgpLAogICAgICAgICAgICAgIChfX21tYXNrOCkgLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19jdnRlcGk2NF9lcGk4IChfX20xMjhpIF9fTywgX19tbWFzazggX19NLCBfX201MTJpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnFiNTEyX21hc2sgKChfX3Y4ZGkpIF9fQSwKICAgICAgICAgICAgICAoX192MTZxaSkgX19PLCBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfY3Z0ZXBpNjRfZXBpOCAoX19tbWFzazggX19NLCBfX201MTJpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnFiNTEyX21hc2sgKChfX3Y4ZGkpIF9fQSwKICAgICAgICAgICAgICAoX192MTZxaSkgX21tX3NldHplcm9fc2kxMjggKCksCiAgICAgICAgICAgICAgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfY3Z0ZXBpNjRfc3RvcmV1X2VwaTggKHZvaWQgKiBfX1AsIF9fbW1hc2s4IF9fTSwgX19tNTEyaSBfX0EpCnsKICBfX2J1aWx0aW5faWEzMl9wbW92cWI1MTJtZW1fbWFzayAoKF9fdjE2cWkgKikgX19QLCAoX192OGRpKSBfX0EsIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9jdnRlcGk2NF9lcGkzMiAoX19tNTEyaSBfX0EpCnsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX3Btb3ZxZDUxMl9tYXNrICgoX192OGRpKSBfX0EsCiAgICAgICAgICAgICAgKF9fdjhzaSkgX21tMjU2X3VuZGVmaW5lZF9zaTI1NiAoKSwKICAgICAgICAgICAgICAoX19tbWFzazgpIC0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfY3Z0ZXBpNjRfZXBpMzIgKF9fbTI1NmkgX19PLCBfX21tYXNrOCBfX00sIF9fbTUxMmkgX19BKQp7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl9wbW92cWQ1MTJfbWFzayAoKF9fdjhkaSkgX19BLAogICAgICAgICAgICAgIChfX3Y4c2kpIF9fTywgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2N2dGVwaTY0X2VwaTMyIChfX21tYXNrOCBfX00sIF9fbTUxMmkgX19BKQp7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl9wbW92cWQ1MTJfbWFzayAoKF9fdjhkaSkgX19BLAogICAgICAgICAgICAgIChfX3Y4c2kpIF9tbTI1Nl9zZXR6ZXJvX3NpMjU2ICgpLAogICAgICAgICAgICAgIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2N2dGVwaTY0X3N0b3JldV9lcGkzMiAodm9pZCogX19QLCBfX21tYXNrOCBfX00sIF9fbTUxMmkgX19BKQp7CiAgX19idWlsdGluX2lhMzJfcG1vdnFkNTEybWVtX21hc2sgKChfX3Y4c2kgKikgX19QLCAoX192OGRpKSBfX0EsIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9jdnRlcGk2NF9lcGkxNiAoX19tNTEyaSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Btb3ZxdzUxMl9tYXNrICgoX192OGRpKSBfX0EsCiAgICAgICAgICAgICAgKF9fdjhoaSkgX21tX3VuZGVmaW5lZF9zaTEyOCAoKSwKICAgICAgICAgICAgICAoX19tbWFzazgpIC0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfY3Z0ZXBpNjRfZXBpMTYgKF9fbTEyOGkgX19PLCBfX21tYXNrOCBfX00sIF9fbTUxMmkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92cXc1MTJfbWFzayAoKF9fdjhkaSkgX19BLAogICAgICAgICAgICAgIChfX3Y4aGkpIF9fTywgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2N2dGVwaTY0X2VwaTE2IChfX21tYXNrOCBfX00sIF9fbTUxMmkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92cXc1MTJfbWFzayAoKF9fdjhkaSkgX19BLAogICAgICAgICAgICAgIChfX3Y4aGkpIF9tbV9zZXR6ZXJvX3NpMTI4ICgpLAogICAgICAgICAgICAgIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2N2dGVwaTY0X3N0b3JldV9lcGkxNiAodm9pZCAqX19QLCBfX21tYXNrOCBfX00sIF9fbTUxMmkgX19BKQp7CiAgX19idWlsdGluX2lhMzJfcG1vdnF3NTEybWVtX21hc2sgKChfX3Y4aGkgKikgX19QLCAoX192OGRpKSBfX0EsIF9fTSk7Cn0KCiNkZWZpbmUgX21tNTEyX2V4dHJhY3RpMzJ4NF9lcGkzMihBLCBpbW0pIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfZXh0cmFjdGkzMng0X21hc2soKF9fdjE2c2kpKF9fbTUxMmkpKEEpLCAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX3VuZGVmaW5lZF9zaTEyOCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX2V4dHJhY3RpMzJ4NF9lcGkzMihXLCBVLCBBLCBpbW0pIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfZXh0cmFjdGkzMng0X21hc2soKF9fdjE2c2kpKF9fbTUxMmkpKEEpLCAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpKF9fbTEyOGkpKFcpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSkpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfZXh0cmFjdGkzMng0X2VwaTMyKFUsIEEsIGltbSkgXAogICgoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9leHRyYWN0aTMyeDRfbWFzaygoX192MTZzaSkoX19tNTEyaSkoQSksIChpbnQpKGltbSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfbW1fc2V0emVyb19zaTEyOCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSkpKQoKI2RlZmluZSBfbW01MTJfZXh0cmFjdGk2NHg0X2VwaTY0KEEsIGltbSkgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9leHRyYWN0aTY0eDRfbWFzaygoX192OGRpKShfX201MTJpKShBKSwgKGludCkoaW1tKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl91bmRlZmluZWRfc2kyNTYoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEpKQoKI2RlZmluZSBfbW01MTJfbWFza19leHRyYWN0aTY0eDRfZXBpNjQoVywgVSwgQSwgaW1tKSBcCiAgKChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX2V4dHJhY3RpNjR4NF9tYXNrKChfX3Y4ZGkpKF9fbTUxMmkpKEEpLCAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpKF9fbTI1NmkpKFcpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSkpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfZXh0cmFjdGk2NHg0X2VwaTY0KFUsIEEsIGltbSkgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9leHRyYWN0aTY0eDRfbWFzaygoX192OGRpKShfX201MTJpKShBKSwgKGludCkoaW1tKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSkpCgojZGVmaW5lIF9tbTUxMl9pbnNlcnRmNjR4NChBLCBCLCBpbW0pIFwKICAoKF9fbTUxMmQpX19idWlsdGluX2lhMzJfaW5zZXJ0ZjY0eDQoKF9fdjhkZikoX19tNTEyZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZikoX19tMjU2ZCkoQiksIChpbnQpKGltbSkpKQoKI2RlZmluZSBfbW01MTJfbWFza19pbnNlcnRmNjR4NChXLCBVLCBBLCBCLCBpbW0pIFwKICAoKF9fbTUxMmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfNTEyKChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl9pbnNlcnRmNjR4NCgoQSksIChCKSwgKGltbSkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikoX19tNTEyZCkoVykpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfaW5zZXJ0ZjY0eDQoVSwgQSwgQiwgaW1tKSBcCiAgKChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzUxMigoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfbW01MTJfaW5zZXJ0ZjY0eDQoKEEpLCAoQiksIChpbW0pKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX3NldHplcm9fcGQoKSkpCgojZGVmaW5lIF9tbTUxMl9pbnNlcnRpNjR4NChBLCBCLCBpbW0pIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfaW5zZXJ0aTY0eDQoKF9fdjhkaSkoX19tNTEyaSkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSkoX19tMjU2aSkoQiksIChpbnQpKGltbSkpKQoKI2RlZmluZSBfbW01MTJfbWFza19pbnNlcnRpNjR4NChXLCBVLCBBLCBCLCBpbW0pIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV81MTIoKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX2luc2VydGk2NHg0KChBKSwgKEIpLCAoaW1tKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKShfX201MTJpKShXKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9pbnNlcnRpNjR4NChVLCBBLCBCLCBpbW0pIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV81MTIoKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX2luc2VydGk2NHg0KChBKSwgKEIpLCAoaW1tKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpKQoKI2RlZmluZSBfbW01MTJfaW5zZXJ0ZjMyeDQoQSwgQiwgaW1tKSBcCiAgKChfX201MTIpX19idWlsdGluX2lhMzJfaW5zZXJ0ZjMyeDQoKF9fdjE2c2YpKF9fbTUxMikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKEIpLCAoaW50KShpbW0pKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfaW5zZXJ0ZjMyeDQoVywgVSwgQSwgQiwgaW1tKSBcCiAgKChfX201MTIpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfNTEyKChfX21tYXNrMTYpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfaW5zZXJ0ZjMyeDQoKEEpLCAoQiksIChpbW0pKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpKF9fbTUxMikoVykpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfaW5zZXJ0ZjMyeDQoVSwgQSwgQiwgaW1tKSBcCiAgKChfX201MTIpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfNTEyKChfX21tYXNrMTYpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfaW5zZXJ0ZjMyeDQoKEEpLCAoQiksIChpbW0pKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX21tNTEyX3NldHplcm9fcHMoKSkpCgojZGVmaW5lIF9tbTUxMl9pbnNlcnRpMzJ4NChBLCBCLCBpbW0pIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfaW5zZXJ0aTMyeDQoKF9fdjE2c2kpKF9fbTUxMmkpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpKF9fbTEyOGkpKEIpLCAoaW50KShpbW0pKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfaW5zZXJ0aTMyeDQoVywgVSwgQSwgQiwgaW1tKSBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfNTEyKChfX21tYXNrMTYpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfaW5zZXJ0aTMyeDQoKEEpLCAoQiksIChpbW0pKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpKF9fbTUxMmkpKFcpKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X2luc2VydGkzMng0KFUsIEEsIEIsIGltbSkgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzUxMigoX19tbWFzazE2KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX21tNTEyX2luc2VydGkzMng0KChBKSwgKEIpLCAoaW1tKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpKQoKI2RlZmluZSBfbW01MTJfZ2V0bWFudF9yb3VuZF9wZChBLCBCLCBDLCBSKSBcCiAgKChfX201MTJkKV9fYnVpbHRpbl9pYTMyX2dldG1hbnRwZDUxMl9tYXNrKChfX3Y4ZGYpKF9fbTUxMmQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKCgoQyk8PDIpIHwgKEIpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl91bmRlZmluZWRfcGQoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEsIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfZ2V0bWFudF9yb3VuZF9wZChXLCBVLCBBLCBCLCBDLCBSKSBcCiAgKChfX201MTJkKV9fYnVpbHRpbl9pYTMyX2dldG1hbnRwZDUxMl9tYXNrKChfX3Y4ZGYpKF9fbTUxMmQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKCgoQyk8PDIpIHwgKEIpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKShfX201MTJkKShXKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9nZXRtYW50X3JvdW5kX3BkKFUsIEEsIEIsIEMsIFIpIFwKICAoKF9fbTUxMmQpX19idWlsdGluX2lhMzJfZ2V0bWFudHBkNTEyX21hc2soKF9fdjhkZikoX19tNTEyZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoKChDKTw8MikgfCAoQikpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX3NldHplcm9fcGQoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9nZXRtYW50X3BkKEEsIEIsIEMpIFwKICAoKF9fbTUxMmQpX19idWlsdGluX2lhMzJfZ2V0bWFudHBkNTEyX21hc2soKF9fdjhkZikoX19tNTEyZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoKChDKTw8MikgfCAoQikpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX3NldHplcm9fcGQoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfZ2V0bWFudF9wZChXLCBVLCBBLCBCLCBDKSBcCiAgKChfX201MTJkKV9fYnVpbHRpbl9pYTMyX2dldG1hbnRwZDUxMl9tYXNrKChfX3Y4ZGYpKF9fbTUxMmQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKCgoQyk8PDIpIHwgKEIpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKShfX201MTJkKShXKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTikpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9nZXRtYW50X3BkKFUsIEEsIEIsIEMpIFwKICAoKF9fbTUxMmQpX19idWlsdGluX2lhMzJfZ2V0bWFudHBkNTEyX21hc2soKF9fdjhkZikoX19tNTEyZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoKChDKTw8MikgfCAoQikpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX3NldHplcm9fcGQoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTikpCgojZGVmaW5lIF9tbTUxMl9nZXRtYW50X3JvdW5kX3BzKEEsIEIsIEMsIFIpIFwKICAoKF9fbTUxMilfX2J1aWx0aW5faWEzMl9nZXRtYW50cHM1MTJfbWFzaygoX192MTZzZikoX19tNTEyKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKCgoQyk8PDIpIHwgKEIpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl91bmRlZmluZWRfcHMoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpLTEsIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfZ2V0bWFudF9yb3VuZF9wcyhXLCBVLCBBLCBCLCBDLCBSKSBcCiAgKChfX201MTIpX19idWlsdGluX2lhMzJfZ2V0bWFudHBzNTEyX21hc2soKF9fdjE2c2YpKF9fbTUxMikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KSgoKEMpPDwyKSB8IChCKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikoX19tNTEyKShXKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpKFUpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9nZXRtYW50X3JvdW5kX3BzKFUsIEEsIEIsIEMsIFIpIFwKICAoKF9fbTUxMilfX2J1aWx0aW5faWEzMl9nZXRtYW50cHM1MTJfbWFzaygoX192MTZzZikoX19tNTEyKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKCgoQyk8PDIpIHwgKEIpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl9zZXR6ZXJvX3BzKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfZ2V0bWFudF9wcyhBLCBCLCBDKSBcCiAgKChfX201MTIpX19idWlsdGluX2lhMzJfZ2V0bWFudHBzNTEyX21hc2soKF9fdjE2c2YpKF9fbTUxMikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KSgoKEMpPDwyKXwoQikpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX21tNTEyX3VuZGVmaW5lZF9wcygpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNiktMSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTikpCgojZGVmaW5lIF9tbTUxMl9tYXNrX2dldG1hbnRfcHMoVywgVSwgQSwgQiwgQykgXAogICgoX19tNTEyKV9fYnVpbHRpbl9pYTMyX2dldG1hbnRwczUxMl9tYXNrKChfX3YxNnNmKShfX201MTIpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoKChDKTw8Mil8KEIpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKShfX201MTIpKFcpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pKQoKI2RlZmluZSBfbW01MTJfbWFza3pfZ2V0bWFudF9wcyhVLCBBLCBCLCBDKSBcCiAgKChfX201MTIpX19idWlsdGluX2lhMzJfZ2V0bWFudHBzNTEyX21hc2soKF9fdjE2c2YpKF9fbTUxMikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KSgoKEMpPDwyKXwoQikpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX21tNTEyX3NldHplcm9fcHMoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKSkKCiNkZWZpbmUgX21tNTEyX2dldGV4cF9yb3VuZF9wZChBLCBSKSBcCiAgKChfX201MTJkKV9fYnVpbHRpbl9pYTMyX2dldGV4cHBkNTEyX21hc2soKF9fdjhkZikoX19tNTEyZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl91bmRlZmluZWRfcGQoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza19nZXRleHBfcm91bmRfcGQoVywgVSwgQSwgUikgXAogICgoX19tNTEyZClfX2J1aWx0aW5faWEzMl9nZXRleHBwZDUxMl9tYXNrKChfX3Y4ZGYpKF9fbTUxMmQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikoX19tNTEyZCkoVyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9nZXRleHBfcm91bmRfcGQoVSwgQSwgUikgXAogICgoX19tNTEyZClfX2J1aWx0aW5faWEzMl9nZXRleHBwZDUxMl9tYXNrKChfX3Y4ZGYpKF9fbTUxMmQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfbW01MTJfc2V0emVyb19wZCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2dldGV4cF9wZCAoX19tNTEyZCBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmQpIF9fYnVpbHRpbl9pYTMyX2dldGV4cHBkNTEyX21hc2sgKChfX3Y4ZGYpIF9fQSwKICAgICAgICAgICAgICAgIChfX3Y4ZGYpIF9tbTUxMl91bmRlZmluZWRfcGQgKCksCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIC0xLAogICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfZ2V0ZXhwX3BkIChfX201MTJkIF9fVywgX19tbWFzazggX19VLCBfX201MTJkIF9fQSkKewogIHJldHVybiAoX19tNTEyZCkgX19idWlsdGluX2lhMzJfZ2V0ZXhwcGQ1MTJfbWFzayAoKF9fdjhkZikgX19BLAogICAgICAgICAgICAgICAgKF9fdjhkZikgX19XLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfZ2V0ZXhwX3BkIChfX21tYXNrOCBfX1UsIF9fbTUxMmQgX19BKQp7CiAgcmV0dXJuIChfX201MTJkKSBfX2J1aWx0aW5faWEzMl9nZXRleHBwZDUxMl9tYXNrICgoX192OGRmKSBfX0EsCiAgICAgICAgICAgICAgICAoX192OGRmKSBfbW01MTJfc2V0emVyb19wZCAoKSwKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW01MTJfZ2V0ZXhwX3JvdW5kX3BzKEEsIFIpIFwKICAoKF9fbTUxMilfX2J1aWx0aW5faWEzMl9nZXRleHBwczUxMl9tYXNrKChfX3YxNnNmKShfX201MTIpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfdW5kZWZpbmVkX3BzKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpLTEsIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfZ2V0ZXhwX3JvdW5kX3BzKFcsIFUsIEEsIFIpIFwKICAoKF9fbTUxMilfX2J1aWx0aW5faWEzMl9nZXRleHBwczUxMl9tYXNrKChfX3YxNnNmKShfX201MTIpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikoX19tNTEyKShXKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikoVSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X2dldGV4cF9yb3VuZF9wcyhVLCBBLCBSKSBcCiAgKChfX201MTIpX19idWlsdGluX2lhMzJfZ2V0ZXhwcHM1MTJfbWFzaygoX192MTZzZikoX19tNTEyKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX21tNTEyX3NldHplcm9fcHMoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikoVSksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2dldGV4cF9wcyAoX19tNTEyIF9fQSkKewogIHJldHVybiAoX19tNTEyKSBfX2J1aWx0aW5faWEzMl9nZXRleHBwczUxMl9tYXNrICgoX192MTZzZikgX19BLAogICAgICAgICAgICAgICAoX192MTZzZikgX21tNTEyX3VuZGVmaW5lZF9wcyAoKSwKICAgICAgICAgICAgICAgKF9fbW1hc2sxNikgLTEsCiAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfZ2V0ZXhwX3BzIChfX201MTIgX19XLCBfX21tYXNrMTYgX19VLCBfX201MTIgX19BKQp7CiAgcmV0dXJuIChfX201MTIpIF9fYnVpbHRpbl9pYTMyX2dldGV4cHBzNTEyX21hc2sgKChfX3YxNnNmKSBfX0EsCiAgICAgICAgICAgICAgIChfX3YxNnNmKSBfX1csCiAgICAgICAgICAgICAgIChfX21tYXNrMTYpIF9fVSwKICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfZ2V0ZXhwX3BzIChfX21tYXNrMTYgX19VLCBfX201MTIgX19BKQp7CiAgcmV0dXJuIChfX201MTIpIF9fYnVpbHRpbl9pYTMyX2dldGV4cHBzNTEyX21hc2sgKChfX3YxNnNmKSBfX0EsCiAgICAgICAgICAgICAgIChfX3YxNnNmKSBfbW01MTJfc2V0emVyb19wcyAoKSwKICAgICAgICAgICAgICAgKF9fbW1hc2sxNikgX19VLAogICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgojZGVmaW5lIF9tbTUxMl9pNjRnYXRoZXJfcHMoaW5kZXgsIGFkZHIsIHNjYWxlKSBcCiAgKChfX20yNTYpX19idWlsdGluX2lhMzJfZ2F0aGVyZGl2MTZzZigoX192OHNmKV9tbTI1Nl91bmRlZmluZWRfcHMoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgY29uc3QgKikoYWRkciksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpKF9fbTUxMmkpKGluZGV4KSwgKF9fbW1hc2s4KS0xLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShzY2FsZSkpKQoKI2RlZmluZSBfbW01MTJfbWFza19pNjRnYXRoZXJfcHModjFfb2xkLCBtYXNrLCBpbmRleCwgYWRkciwgc2NhbGUpIFwKICAoKF9fbTI1NilfX2J1aWx0aW5faWEzMl9nYXRoZXJkaXYxNnNmKChfX3Y4c2YpKF9fbTI1NikodjFfb2xkKSxcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCBjb25zdCAqKShhZGRyKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSkoX19tNTEyaSkoaW5kZXgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKG1hc2spLCAoaW50KShzY2FsZSkpKQoKI2RlZmluZSBfbW01MTJfaTY0Z2F0aGVyX2VwaTMyKGluZGV4LCBhZGRyLCBzY2FsZSkgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9nYXRoZXJkaXYxNnNpKChfX3Y4c2kpX21tMjU2X3VuZGVmaW5lZF9zaTI1NigpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgY29uc3QgKikoYWRkciksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKShfX201MTJpKShpbmRleCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEsIChpbnQpKHNjYWxlKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX2k2NGdhdGhlcl9lcGkzMih2MV9vbGQsIG1hc2ssIGluZGV4LCBhZGRyLCBzY2FsZSkgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9nYXRoZXJkaXYxNnNpKChfX3Y4c2kpKF9fbTI1NmkpKHYxX29sZCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCBjb25zdCAqKShhZGRyKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpKF9fbTUxMmkpKGluZGV4KSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkobWFzayksIChpbnQpKHNjYWxlKSkpCgojZGVmaW5lIF9tbTUxMl9pNjRnYXRoZXJfcGQoaW5kZXgsIGFkZHIsIHNjYWxlKSBcCiAgKChfX201MTJkKV9fYnVpbHRpbl9pYTMyX2dhdGhlcmRpdjhkZigoX192OGRmKV9tbTUxMl91bmRlZmluZWRfcGQoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgY29uc3QgKikoYWRkciksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpKF9fbTUxMmkpKGluZGV4KSwgKF9fbW1hc2s4KS0xLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShzY2FsZSkpKQoKI2RlZmluZSBfbW01MTJfbWFza19pNjRnYXRoZXJfcGQodjFfb2xkLCBtYXNrLCBpbmRleCwgYWRkciwgc2NhbGUpIFwKICAoKF9fbTUxMmQpX19idWlsdGluX2lhMzJfZ2F0aGVyZGl2OGRmKChfX3Y4ZGYpKF9fbTUxMmQpKHYxX29sZCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkIGNvbnN0ICopKGFkZHIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKShfX201MTJpKShpbmRleCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkobWFzayksIChpbnQpKHNjYWxlKSkpCgojZGVmaW5lIF9tbTUxMl9pNjRnYXRoZXJfZXBpNjQoaW5kZXgsIGFkZHIsIHNjYWxlKSBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX2dhdGhlcmRpdjhkaSgoX192OGRpKV9tbTUxMl91bmRlZmluZWRfZXBpMzIoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgY29uc3QgKikoYWRkciksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpKF9fbTUxMmkpKGluZGV4KSwgKF9fbW1hc2s4KS0xLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShzY2FsZSkpKQoKI2RlZmluZSBfbW01MTJfbWFza19pNjRnYXRoZXJfZXBpNjQodjFfb2xkLCBtYXNrLCBpbmRleCwgYWRkciwgc2NhbGUpIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfZ2F0aGVyZGl2OGRpKChfX3Y4ZGkpKF9fbTUxMmkpKHYxX29sZCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkIGNvbnN0ICopKGFkZHIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKShfX201MTJpKShpbmRleCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkobWFzayksIChpbnQpKHNjYWxlKSkpCgojZGVmaW5lIF9tbTUxMl9pMzJnYXRoZXJfcHMoaW5kZXgsIGFkZHIsIHNjYWxlKSBcCiAgKChfX201MTIpX19idWlsdGluX2lhMzJfZ2F0aGVyc2l2MTZzZigoX192MTZzZilfbW01MTJfdW5kZWZpbmVkX3BzKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkIGNvbnN0ICopKGFkZHIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSkoX19tNTEyKShpbmRleCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpLTEsIChpbnQpKHNjYWxlKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX2kzMmdhdGhlcl9wcyh2MV9vbGQsIG1hc2ssIGluZGV4LCBhZGRyLCBzY2FsZSkgXAogICgoX19tNTEyKV9fYnVpbHRpbl9pYTMyX2dhdGhlcnNpdjE2c2YoKF9fdjE2c2YpKF9fbTUxMikodjFfb2xkKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgY29uc3QgKikoYWRkciksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKShfX201MTIpKGluZGV4KSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikobWFzayksIChpbnQpKHNjYWxlKSkpCgojZGVmaW5lIF9tbTUxMl9pMzJnYXRoZXJfZXBpMzIoaW5kZXgsIGFkZHIsIHNjYWxlKSBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX2dhdGhlcnNpdjE2c2koKF9fdjE2c2kpX21tNTEyX3VuZGVmaW5lZF9lcGkzMigpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgY29uc3QgKikoYWRkciksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSkoX19tNTEyaSkoaW5kZXgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNiktMSwgKGludCkoc2NhbGUpKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfaTMyZ2F0aGVyX2VwaTMyKHYxX29sZCwgbWFzaywgaW5kZXgsIGFkZHIsIHNjYWxlKSBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX2dhdGhlcnNpdjE2c2koKF9fdjE2c2kpKF9fbTUxMmkpKHYxX29sZCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCBjb25zdCAqKShhZGRyKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKShfX201MTJpKShpbmRleCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KShtYXNrKSwgKGludCkoc2NhbGUpKSkKCiNkZWZpbmUgX21tNTEyX2kzMmdhdGhlcl9wZChpbmRleCwgYWRkciwgc2NhbGUpIFwKICAoKF9fbTUxMmQpX19idWlsdGluX2lhMzJfZ2F0aGVyc2l2OGRmKChfX3Y4ZGYpX21tNTEyX3VuZGVmaW5lZF9wZCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCBjb25zdCAqKShhZGRyKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSkoX19tMjU2aSkoaW5kZXgpLCAoX19tbWFzazgpLTEsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKHNjYWxlKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX2kzMmdhdGhlcl9wZCh2MV9vbGQsIG1hc2ssIGluZGV4LCBhZGRyLCBzY2FsZSkgXAogICgoX19tNTEyZClfX2J1aWx0aW5faWEzMl9nYXRoZXJzaXY4ZGYoKF9fdjhkZikoX19tNTEyZCkodjFfb2xkKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgY29uc3QgKikoYWRkciksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpKF9fbTI1NmkpKGluZGV4KSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShtYXNrKSwgKGludCkoc2NhbGUpKSkKCiNkZWZpbmUgX21tNTEyX2kzMmdhdGhlcl9lcGk2NChpbmRleCwgYWRkciwgc2NhbGUpIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfZ2F0aGVyc2l2OGRpKChfX3Y4ZGkpX21tNTEyX3VuZGVmaW5lZF9lcGkzMigpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCBjb25zdCAqKShhZGRyKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSkoX19tMjU2aSkoaW5kZXgpLCAoX19tbWFzazgpLTEsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKHNjYWxlKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX2kzMmdhdGhlcl9lcGk2NCh2MV9vbGQsIG1hc2ssIGluZGV4LCBhZGRyLCBzY2FsZSkgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9nYXRoZXJzaXY4ZGkoKF9fdjhkaSkoX19tNTEyaSkodjFfb2xkKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgY29uc3QgKikoYWRkciksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpKF9fbTI1NmkpKGluZGV4KSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShtYXNrKSwgKGludCkoc2NhbGUpKSkKCiNkZWZpbmUgX21tNTEyX2k2NHNjYXR0ZXJfcHMoYWRkciwgaW5kZXgsIHYxLCBzY2FsZSkgXAogIF9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJkaXYxNnNmKCh2b2lkICopKGFkZHIpLCAoX19tbWFzazgpLTEsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKShfX201MTJpKShpbmRleCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKShfX20yNTYpKHYxKSwgKGludCkoc2NhbGUpKQoKI2RlZmluZSBfbW01MTJfbWFza19pNjRzY2F0dGVyX3BzKGFkZHIsIG1hc2ssIGluZGV4LCB2MSwgc2NhbGUpIFwKICBfX2J1aWx0aW5faWEzMl9zY2F0dGVyZGl2MTZzZigodm9pZCAqKShhZGRyKSwgKF9fbW1hc2s4KShtYXNrKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpKF9fbTUxMmkpKGluZGV4KSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpKF9fbTI1NikodjEpLCAoaW50KShzY2FsZSkpCgojZGVmaW5lIF9tbTUxMl9pNjRzY2F0dGVyX2VwaTMyKGFkZHIsIGluZGV4LCB2MSwgc2NhbGUpIFwKICBfX2J1aWx0aW5faWEzMl9zY2F0dGVyZGl2MTZzaSgodm9pZCAqKShhZGRyKSwgKF9fbW1hc2s4KS0xLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSkoX19tNTEyaSkoaW5kZXgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSkoX19tMjU2aSkodjEpLCAoaW50KShzY2FsZSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX2k2NHNjYXR0ZXJfZXBpMzIoYWRkciwgbWFzaywgaW5kZXgsIHYxLCBzY2FsZSkgXAogIF9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJkaXYxNnNpKCh2b2lkICopKGFkZHIpLCAoX19tbWFzazgpKG1hc2spLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSkoX19tNTEyaSkoaW5kZXgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSkoX19tMjU2aSkodjEpLCAoaW50KShzY2FsZSkpCgojZGVmaW5lIF9tbTUxMl9pNjRzY2F0dGVyX3BkKGFkZHIsIGluZGV4LCB2MSwgc2NhbGUpIFwKICBfX2J1aWx0aW5faWEzMl9zY2F0dGVyZGl2OGRmKCh2b2lkICopKGFkZHIpLCAoX19tbWFzazgpLTEsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpKF9fbTUxMmkpKGluZGV4KSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikoX19tNTEyZCkodjEpLCAoaW50KShzY2FsZSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX2k2NHNjYXR0ZXJfcGQoYWRkciwgbWFzaywgaW5kZXgsIHYxLCBzY2FsZSkgXAogIF9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJkaXY4ZGYoKHZvaWQgKikoYWRkciksIChfX21tYXNrOCkobWFzayksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpKF9fbTUxMmkpKGluZGV4KSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikoX19tNTEyZCkodjEpLCAoaW50KShzY2FsZSkpCgojZGVmaW5lIF9tbTUxMl9pNjRzY2F0dGVyX2VwaTY0KGFkZHIsIGluZGV4LCB2MSwgc2NhbGUpIFwKICBfX2J1aWx0aW5faWEzMl9zY2F0dGVyZGl2OGRpKCh2b2lkICopKGFkZHIpLCAoX19tbWFzazgpLTEsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpKF9fbTUxMmkpKGluZGV4KSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSkoX19tNTEyaSkodjEpLCAoaW50KShzY2FsZSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX2k2NHNjYXR0ZXJfZXBpNjQoYWRkciwgbWFzaywgaW5kZXgsIHYxLCBzY2FsZSkgXAogIF9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJkaXY4ZGkoKHZvaWQgKikoYWRkciksIChfX21tYXNrOCkobWFzayksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpKF9fbTUxMmkpKGluZGV4KSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSkoX19tNTEyaSkodjEpLCAoaW50KShzY2FsZSkpCgojZGVmaW5lIF9tbTUxMl9pMzJzY2F0dGVyX3BzKGFkZHIsIGluZGV4LCB2MSwgc2NhbGUpIFwKICBfX2J1aWx0aW5faWEzMl9zY2F0dGVyc2l2MTZzZigodm9pZCAqKShhZGRyKSwgKF9fbW1hc2sxNiktMSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKShfX201MTJpKShpbmRleCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikoX19tNTEyKSh2MSksIChpbnQpKHNjYWxlKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfaTMyc2NhdHRlcl9wcyhhZGRyLCBtYXNrLCBpbmRleCwgdjEsIHNjYWxlKSBcCiAgX19idWlsdGluX2lhMzJfc2NhdHRlcnNpdjE2c2YoKHZvaWQgKikoYWRkciksIChfX21tYXNrMTYpKG1hc2spLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpKF9fbTUxMmkpKGluZGV4KSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKShfX201MTIpKHYxKSwgKGludCkoc2NhbGUpKQoKI2RlZmluZSBfbW01MTJfaTMyc2NhdHRlcl9lcGkzMihhZGRyLCBpbmRleCwgdjEsIHNjYWxlKSBcCiAgX19idWlsdGluX2lhMzJfc2NhdHRlcnNpdjE2c2koKHZvaWQgKikoYWRkciksIChfX21tYXNrMTYpLTEsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSkoX19tNTEyaSkoaW5kZXgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpKF9fbTUxMmkpKHYxKSwgKGludCkoc2NhbGUpKQoKI2RlZmluZSBfbW01MTJfbWFza19pMzJzY2F0dGVyX2VwaTMyKGFkZHIsIG1hc2ssIGluZGV4LCB2MSwgc2NhbGUpIFwKICBfX2J1aWx0aW5faWEzMl9zY2F0dGVyc2l2MTZzaSgodm9pZCAqKShhZGRyKSwgKF9fbW1hc2sxNikobWFzayksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSkoX19tNTEyaSkoaW5kZXgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpKF9fbTUxMmkpKHYxKSwgKGludCkoc2NhbGUpKQoKI2RlZmluZSBfbW01MTJfaTMyc2NhdHRlcl9wZChhZGRyLCBpbmRleCwgdjEsIHNjYWxlKSBcCiAgX19idWlsdGluX2lhMzJfc2NhdHRlcnNpdjhkZigodm9pZCAqKShhZGRyKSwgKF9fbW1hc2s4KS0xLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKShfX20yNTZpKShpbmRleCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpKF9fbTUxMmQpKHYxKSwgKGludCkoc2NhbGUpKQoKI2RlZmluZSBfbW01MTJfbWFza19pMzJzY2F0dGVyX3BkKGFkZHIsIG1hc2ssIGluZGV4LCB2MSwgc2NhbGUpIFwKICBfX2J1aWx0aW5faWEzMl9zY2F0dGVyc2l2OGRmKCh2b2lkICopKGFkZHIpLCAoX19tbWFzazgpKG1hc2spLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKShfX20yNTZpKShpbmRleCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpKF9fbTUxMmQpKHYxKSwgKGludCkoc2NhbGUpKQoKI2RlZmluZSBfbW01MTJfaTMyc2NhdHRlcl9lcGk2NChhZGRyLCBpbmRleCwgdjEsIHNjYWxlKSBcCiAgX19idWlsdGluX2lhMzJfc2NhdHRlcnNpdjhkaSgodm9pZCAqKShhZGRyKSwgKF9fbW1hc2s4KS0xLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKShfX20yNTZpKShpbmRleCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpKF9fbTUxMmkpKHYxKSwgKGludCkoc2NhbGUpKQoKI2RlZmluZSBfbW01MTJfbWFza19pMzJzY2F0dGVyX2VwaTY0KGFkZHIsIG1hc2ssIGluZGV4LCB2MSwgc2NhbGUpIFwKICBfX2J1aWx0aW5faWEzMl9zY2F0dGVyc2l2OGRpKCh2b2lkICopKGFkZHIpLCAoX19tbWFzazgpKG1hc2spLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKShfX20yNTZpKShpbmRleCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpKF9fbTUxMmkpKHYxKSwgKGludCkoc2NhbGUpKQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19mbWFkZF9zcyAoX19tMTI4IF9fVywgX19tbWFzazggX19VLCBfX20xMjggX19BLCBfX20xMjggX19CKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHNzM19tYXNrKChfX3Y0c2YpX19XLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCiNkZWZpbmUgX21tX2ZtYWRkX3JvdW5kX3NzKEEsIEIsIEMsIFIpIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl92Zm1hZGRzczNfbWFzaygoX192NHNmKShfX20xMjgpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikoX19tMTI4KShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoQyksIChfX21tYXNrOCktMSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX21hc2tfZm1hZGRfcm91bmRfc3MoVywgVSwgQSwgQiwgUikgXAogICgoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHNzM19tYXNrKChfX3Y0c2YpKF9fbTEyOCkoVyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikoX19tMTI4KShCKSwgKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2ZtYWRkX3NzIChfX21tYXNrOCBfX1UsIF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IsIF9fbTEyOCBfX0MpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfdmZtYWRkc3MzX21hc2t6KChfX3Y0c2YpX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9fQywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgojZGVmaW5lIF9tbV9tYXNrel9mbWFkZF9yb3VuZF9zcyhVLCBBLCBCLCBDLCBSKSBcCiAgKChfX20xMjgpX19idWlsdGluX2lhMzJfdmZtYWRkc3MzX21hc2t6KChfX3Y0c2YpKF9fbTEyOCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikoX19tMTI4KShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKEMpLCAoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2szX2ZtYWRkX3NzIChfX20xMjggX19XLCBfX20xMjggX19YLCBfX20xMjggX19ZLCBfX21tYXNrOCBfX1UpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfdmZtYWRkc3MzX21hc2szKChfX3Y0c2YpX19XLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfX1gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9fWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgojZGVmaW5lIF9tbV9tYXNrM19mbWFkZF9yb3VuZF9zcyhXLCBYLCBZLCBVLCBSKSBcCiAgKChfX20xMjgpX19idWlsdGluX2lhMzJfdmZtYWRkc3MzX21hc2szKChfX3Y0c2YpKF9fbTEyOCkoVyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikoX19tMTI4KShYKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKFkpLCAoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfZm1zdWJfc3MgKF9fbTEyOCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4IF9fQSwgX19tMTI4IF9fQikKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl92Zm1hZGRzczNfbWFzaygoX192NHNmKV9fVywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192NHNmKV9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW1fZm1zdWJfcm91bmRfc3MoQSwgQiwgQywgUikgXAogICgoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHNzM19tYXNrKChfX3Y0c2YpKF9fbTEyOCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3Y0c2YpKF9fbTEyOCkoQyksIChfX21tYXNrOCktMSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX21hc2tfZm1zdWJfcm91bmRfc3MoVywgVSwgQSwgQiwgUikgXAogICgoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHNzM19tYXNrKChfX3Y0c2YpKF9fbTEyOCkoVyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3Y0c2YpKF9fbTEyOCkoQiksIChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9mbXN1Yl9zcyAoX19tbWFzazggX19VLCBfX20xMjggX19BLCBfX20xMjggX19CLCBfX20xMjggX19DKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHNzM19tYXNreigoX192NHNmKV9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3Y0c2YpX19DLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCiNkZWZpbmUgX21tX21hc2t6X2Ztc3ViX3JvdW5kX3NzKFUsIEEsIEIsIEMsIFIpIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl92Zm1hZGRzczNfbWFza3ooKF9fdjRzZikoX19tMTI4KShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192NHNmKShfX20xMjgpKEMpLCAoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2szX2Ztc3ViX3NzIChfX20xMjggX19XLCBfX20xMjggX19YLCBfX20xMjggX19ZLCBfX21tYXNrOCBfX1UpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfdmZtc3Vic3MzX21hc2szKChfX3Y0c2YpX19XLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfX1gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9fWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgojZGVmaW5lIF9tbV9tYXNrM19mbXN1Yl9yb3VuZF9zcyhXLCBYLCBZLCBVLCBSKSBcCiAgKChfX20xMjgpX19idWlsdGluX2lhMzJfdmZtc3Vic3MzX21hc2szKChfX3Y0c2YpKF9fbTEyOCkoVyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikoX19tMTI4KShYKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKFkpLCAoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfZm5tYWRkX3NzIChfX20xMjggX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfdmZtYWRkc3MzX21hc2soKF9fdjRzZilfX1csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192NHNmKV9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCiNkZWZpbmUgX21tX2ZubWFkZF9yb3VuZF9zcyhBLCBCLCBDLCBSKSBcCiAgKChfX20xMjgpX19idWlsdGluX2lhMzJfdmZtYWRkc3MzX21hc2soKF9fdjRzZikoX19tMTI4KShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192NHNmKShfX20xMjgpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikoX19tMTI4KShDKSwgKF9fbW1hc2s4KS0xLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoUikpKQoKI2RlZmluZSBfbW1fbWFza19mbm1hZGRfcm91bmRfc3MoVywgVSwgQSwgQiwgUikgXAogICgoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHNzM19tYXNrKChfX3Y0c2YpKF9fbTEyOCkoVyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjRzZikoX19tMTI4KShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoQiksIChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9mbm1hZGRfc3MgKF9fbW1hc2s4IF9fVSwgX19tMTI4IF9fQSwgX19tMTI4IF9fQiwgX19tMTI4IF9fQykKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl92Zm1hZGRzczNfbWFza3ooKF9fdjRzZilfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjRzZilfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9fQywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgojZGVmaW5lIF9tbV9tYXNrel9mbm1hZGRfcm91bmRfc3MoVSwgQSwgQiwgQywgUikgXAogICgoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHNzM19tYXNreigoX192NHNmKShfX20xMjgpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192NHNmKShfX20xMjgpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoQyksIChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFzazNfZm5tYWRkX3NzIChfX20xMjggX19XLCBfX20xMjggX19YLCBfX20xMjggX19ZLCBfX21tYXNrOCBfX1UpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfdmZtYWRkc3MzX21hc2szKChfX3Y0c2YpX19XLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3Y0c2YpX19YLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfX1ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW1fbWFzazNfZm5tYWRkX3JvdW5kX3NzKFcsIFgsIFksIFUsIFIpIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl92Zm1hZGRzczNfbWFzazMoKF9fdjRzZikoX19tMTI4KShXKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjRzZikoX19tMTI4KShYKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKFkpLCAoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfZm5tc3ViX3NzIChfX20xMjggX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfdmZtYWRkc3MzX21hc2soKF9fdjRzZilfX1csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192NHNmKV9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3Y0c2YpX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgojZGVmaW5lIF9tbV9mbm1zdWJfcm91bmRfc3MoQSwgQiwgQywgUikgXAogICgoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHNzM19tYXNrKChfX3Y0c2YpKF9fbTEyOCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjRzZikoX19tMTI4KShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192NHNmKShfX20xMjgpKEMpLCAoX19tbWFzazgpLTEsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShSKSkpCgojZGVmaW5lIF9tbV9tYXNrX2ZubXN1Yl9yb3VuZF9zcyhXLCBVLCBBLCBCLCBSKSBcCiAgKChfX20xMjgpX19idWlsdGluX2lhMzJfdmZtYWRkc3MzX21hc2soKF9fdjRzZikoX19tMTI4KShXKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192NHNmKShfX20xMjgpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3Y0c2YpKF9fbTEyOCkoQiksIChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9mbm1zdWJfc3MgKF9fbW1hc2s4IF9fVSwgX19tMTI4IF9fQSwgX19tMTI4IF9fQiwgX19tMTI4IF9fQykKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl92Zm1hZGRzczNfbWFza3ooKF9fdjRzZilfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjRzZilfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjRzZilfX0MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW1fbWFza3pfZm5tc3ViX3JvdW5kX3NzKFUsIEEsIEIsIEMsIFIpIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl92Zm1hZGRzczNfbWFza3ooKF9fdjRzZikoX19tMTI4KShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjRzZikoX19tMTI4KShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjRzZikoX19tMTI4KShDKSwgKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrM19mbm1zdWJfc3MgKF9fbTEyOCBfX1csIF9fbTEyOCBfX1gsIF9fbTEyOCBfX1ksIF9fbW1hc2s4IF9fVSkKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl92Zm1zdWJzczNfbWFzazMoKF9fdjRzZilfX1csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjRzZilfX1gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9fWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgojZGVmaW5lIF9tbV9tYXNrM19mbm1zdWJfcm91bmRfc3MoVywgWCwgWSwgVSwgUikgXAogICgoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3ZmbXN1YnNzM19tYXNrMygoX192NHNmKShfX20xMjgpKFcpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192NHNmKShfX20xMjgpKFgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoWSksIChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfZm1hZGRfc2QgKF9fbTEyOGQgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl92Zm1hZGRzZDNfbWFzaygoX192MmRmKV9fVywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgojZGVmaW5lIF9tbV9mbWFkZF9yb3VuZF9zZChBLCBCLCBDLCBSKSBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHNkM19tYXNrKChfX3YyZGYpKF9fbTEyOGQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKEMpLCAoX19tbWFzazgpLTEsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoUikpKQoKI2RlZmluZSBfbW1fbWFza19mbWFkZF9yb3VuZF9zZChXLCBVLCBBLCBCLCBSKSBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHNkM19tYXNrKChfX3YyZGYpKF9fbTEyOGQpKFcpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKEIpLCAoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9mbWFkZF9zZCAoX19tbWFzazggX19VLCBfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IsIF9fbTEyOGQgX19DKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHNkM19tYXNreigoX192MmRmKV9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfX0MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW1fbWFza3pfZm1hZGRfcm91bmRfc2QoVSwgQSwgQiwgQywgUikgXAogICgoX19tMTI4ZClfX2J1aWx0aW5faWEzMl92Zm1hZGRzZDNfbWFza3ooKF9fdjJkZikoX19tMTI4ZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShDKSwgKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2szX2ZtYWRkX3NkIChfX20xMjhkIF9fVywgX19tMTI4ZCBfX1gsIF9fbTEyOGQgX19ZLCBfX21tYXNrOCBfX1UpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfdmZtYWRkc2QzX21hc2szKChfX3YyZGYpX19XLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfX1gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9fWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgojZGVmaW5lIF9tbV9tYXNrM19mbWFkZF9yb3VuZF9zZChXLCBYLCBZLCBVLCBSKSBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHNkM19tYXNrMygoX192MmRmKShfX20xMjhkKShXKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikoX19tMTI4ZCkoWCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKFkpLCAoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19mbXN1Yl9zZCAoX19tMTI4ZCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHNkM19tYXNrKChfX3YyZGYpX19XLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3YyZGYpX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgojZGVmaW5lIF9tbV9mbXN1Yl9yb3VuZF9zZChBLCBCLCBDLCBSKSBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHNkM19tYXNrKChfX3YyZGYpKF9fbTEyOGQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192MmRmKShfX20xMjhkKShDKSwgKF9fbW1hc2s4KS0xLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX21hc2tfZm1zdWJfcm91bmRfc2QoVywgVSwgQSwgQiwgUikgXAogICgoX19tMTI4ZClfX2J1aWx0aW5faWEzMl92Zm1hZGRzZDNfbWFzaygoX192MmRmKShfX20xMjhkKShXKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjJkZikoX19tMTI4ZCkoQiksIChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2Ztc3ViX3NkIChfX21tYXNrOCBfX1UsIF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQiwgX19tMTI4ZCBfX0MpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfdmZtYWRkc2QzX21hc2t6KChfX3YyZGYpX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjJkZilfX0MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW1fbWFza3pfZm1zdWJfcm91bmRfc2QoVSwgQSwgQiwgQywgUikgXAogICgoX19tMTI4ZClfX2J1aWx0aW5faWEzMl92Zm1hZGRzZDNfbWFza3ooKF9fdjJkZikoX19tMTI4ZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjJkZikoX19tMTI4ZCkoQyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrM19mbXN1Yl9zZCAoX19tMTI4ZCBfX1csIF9fbTEyOGQgX19YLCBfX20xMjhkIF9fWSwgX19tbWFzazggX19VKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3ZmbXN1YnNkM19tYXNrMygoX192MmRmKV9fVywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX19YLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfX1ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW1fbWFzazNfZm1zdWJfcm91bmRfc2QoVywgWCwgWSwgVSwgUikgXAogICgoX19tMTI4ZClfX2J1aWx0aW5faWEzMl92Zm1zdWJzZDNfbWFzazMoKF9fdjJkZikoX19tMTI4ZCkoVyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKFgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShZKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfZm5tYWRkX3NkIChfX20xMjhkIF9fVywgX19tbWFzazggX19VLCBfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfdmZtYWRkc2QzX21hc2soKF9fdjJkZilfX1csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192MmRmKV9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCiNkZWZpbmUgX21tX2ZubWFkZF9yb3VuZF9zZChBLCBCLCBDLCBSKSBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHNkM19tYXNrKChfX3YyZGYpKF9fbTEyOGQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192MmRmKShfX20xMjhkKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShDKSwgKF9fbW1hc2s4KS0xLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX21hc2tfZm5tYWRkX3JvdW5kX3NkKFcsIFUsIEEsIEIsIFIpIFwKICAoKF9fbTEyOGQpX19idWlsdGluX2lhMzJfdmZtYWRkc2QzX21hc2soKF9fdjJkZikoX19tMTI4ZCkoVyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3YyZGYpKF9fbTEyOGQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKEIpLCAoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9mbm1hZGRfc2QgKF9fbW1hc2s4IF9fVSwgX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CLCBfX20xMjhkIF9fQykKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl92Zm1hZGRzZDNfbWFza3ooKF9fdjJkZilfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjJkZilfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9fQywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgojZGVmaW5lIF9tbV9tYXNrel9mbm1hZGRfcm91bmRfc2QoVSwgQSwgQiwgQywgUikgXAogICgoX19tMTI4ZClfX2J1aWx0aW5faWEzMl92Zm1hZGRzZDNfbWFza3ooKF9fdjJkZikoX19tMTI4ZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192MmRmKShfX20xMjhkKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikoX19tMTI4ZCkoQyksIChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrM19mbm1hZGRfc2QgKF9fbTEyOGQgX19XLCBfX20xMjhkIF9fWCwgX19tMTI4ZCBfX1ksIF9fbW1hc2s4IF9fVSkKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl92Zm1hZGRzZDNfbWFzazMoKF9fdjJkZilfX1csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjJkZilfX1gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9fWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgojZGVmaW5lIF9tbV9tYXNrM19mbm1hZGRfcm91bmRfc2QoVywgWCwgWSwgVSwgUikgXAogICgoX19tMTI4ZClfX2J1aWx0aW5faWEzMl92Zm1hZGRzZDNfbWFzazMoKF9fdjJkZikoX19tMTI4ZCkoVyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192MmRmKShfX20xMjhkKShYKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikoX19tMTI4ZCkoWSksIChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2ZubXN1Yl9zZCAoX19tMTI4ZCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHNkM19tYXNrKChfX3YyZGYpX19XLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjJkZilfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192MmRmKV9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW1fZm5tc3ViX3JvdW5kX3NkKEEsIEIsIEMsIFIpIFwKICAoKF9fbTEyOGQpX19idWlsdGluX2lhMzJfdmZtYWRkc2QzX21hc2soKF9fdjJkZikoX19tMTI4ZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3YyZGYpKF9fbTEyOGQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192MmRmKShfX20xMjhkKShDKSwgKF9fbW1hc2s4KS0xLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX21hc2tfZm5tc3ViX3JvdW5kX3NkKFcsIFUsIEEsIEIsIFIpIFwKICAoKF9fbTEyOGQpX19idWlsdGluX2lhMzJfdmZtYWRkc2QzX21hc2soKF9fdjJkZikoX19tMTI4ZCkoVyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3YyZGYpKF9fbTEyOGQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192MmRmKShfX20xMjhkKShCKSwgKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfZm5tc3ViX3NkIChfX21tYXNrOCBfX1UsIF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQiwgX19tMTI4ZCBfX0MpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfdmZtYWRkc2QzX21hc2t6KChfX3YyZGYpX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3YyZGYpX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3YyZGYpX19DLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCiNkZWZpbmUgX21tX21hc2t6X2ZubXN1Yl9yb3VuZF9zZChVLCBBLCBCLCBDLCBSKSBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHNkM19tYXNreigoX192MmRmKShfX20xMjhkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3YyZGYpKF9fbTEyOGQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjJkZikoX19tMTI4ZCkoQyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrM19mbm1zdWJfc2QgKF9fbTEyOGQgX19XLCBfX20xMjhkIF9fWCwgX19tMTI4ZCBfX1ksIF9fbW1hc2s4IF9fVSkKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl92Zm1zdWJzZDNfbWFzazMoKF9fdjJkZilfX1csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjJkZilfX1gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9fWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgojZGVmaW5lIF9tbV9tYXNrM19mbm1zdWJfcm91bmRfc2QoVywgWCwgWSwgVSwgUikgXAogICgoX19tMTI4ZClfX2J1aWx0aW5faWEzMl92Zm1zdWJzZDNfbWFzazMoKF9fdjJkZikoX19tMTI4ZCkoVyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192MmRmKShfX20xMjhkKShYKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikoX19tMTI4ZCkoWSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX3Blcm11dGV4X3BkKFgsIEMpIFwKICAoKF9fbTUxMmQpX19idWlsdGluX2lhMzJfcGVybWRmNTEyKChfX3Y4ZGYpKF9fbTUxMmQpKFgpLCAoaW50KShDKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX3Blcm11dGV4X3BkKFcsIFUsIFgsIEMpIFwKICAoKF9fbTUxMmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfNTEyKChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX3Blcm11dGV4X3BkKChYKSwgKEMpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikoX19tNTEyZCkoVykpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfcGVybXV0ZXhfcGQoVSwgWCwgQykgXAogICgoX19tNTEyZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF81MTIoKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfbW01MTJfcGVybXV0ZXhfcGQoKFgpLCAoQykpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl9zZXR6ZXJvX3BkKCkpKQoKI2RlZmluZSBfbW01MTJfcGVybXV0ZXhfZXBpNjQoWCwgQykgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9wZXJtZGk1MTIoKF9fdjhkaSkoX19tNTEyaSkoWCksIChpbnQpKEMpKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfcGVybXV0ZXhfZXBpNjQoVywgVSwgWCwgQykgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzUxMigoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX3Blcm11dGV4X2VwaTY0KChYKSwgKEMpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKShfX201MTJpKShXKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9wZXJtdXRleF9lcGk2NChVLCBYLCBDKSBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfNTEyKChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfcGVybXV0ZXhfZXBpNjQoKFgpLCAoQykpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX3NldHplcm9fc2k1MTIoKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfcGVybXV0ZXh2YXJfcGQgKF9fbTUxMmkgX19YLCBfX201MTJkIF9fWSkKewogIHJldHVybiAoX19tNTEyZClfX2J1aWx0aW5faWEzMl9wZXJtdmFyZGY1MTIoKF9fdjhkZikgX19ZLCAoX192OGRpKSBfX1gpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19wZXJtdXRleHZhcl9wZCAoX19tNTEyZCBfX1csIF9fbW1hc2s4IF9fVSwgX19tNTEyaSBfX1gsIF9fbTUxMmQgX19ZKQp7CiAgcmV0dXJuIChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzUxMigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfbW01MTJfcGVybXV0ZXh2YXJfcGQoX19YLCBfX1kpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfcGVybXV0ZXh2YXJfcGQgKF9fbW1hc2s4IF9fVSwgX19tNTEyaSBfX1gsIF9fbTUxMmQgX19ZKQp7CiAgcmV0dXJuIChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzUxMigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfbW01MTJfcGVybXV0ZXh2YXJfcGQoX19YLCBfX1kpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfbW01MTJfc2V0emVyb19wZCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3Blcm11dGV4dmFyX2VwaTY0IChfX201MTJpIF9fWCwgX19tNTEyaSBfX1kpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfcGVybXZhcmRpNTEyKChfX3Y4ZGkpX19ZLCAoX192OGRpKV9fWCk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9wZXJtdXRleHZhcl9lcGk2NCAoX19tbWFzazggX19NLCBfX201MTJpIF9fWCwgX19tNTEyaSBfX1kpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV81MTIoKF9fbW1hc2s4KV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX3Blcm11dGV4dmFyX2VwaTY0KF9fWCwgX19ZKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX3Blcm11dGV4dmFyX2VwaTY0IChfX201MTJpIF9fVywgX19tbWFzazggX19NLCBfX201MTJpIF9fWCwKICAgICAgICAgICAgIF9fbTUxMmkgX19ZKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfNTEyKChfX21tYXNrOClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9wZXJtdXRleHZhcl9lcGk2NChfX1gsIF9fWSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3Blcm11dGV4dmFyX3BzIChfX201MTJpIF9fWCwgX19tNTEyIF9fWSkKewogIHJldHVybiAoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3Blcm12YXJzZjUxMigoX192MTZzZilfX1ksIChfX3YxNnNpKV9fWCk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfcGVybXV0ZXh2YXJfcHMgKF9fbTUxMiBfX1csIF9fbW1hc2sxNiBfX1UsIF9fbTUxMmkgX19YLCBfX201MTIgX19ZKQp7CiAgcmV0dXJuIChfX201MTIpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfNTEyKChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfcGVybXV0ZXh2YXJfcHMoX19YLCBfX1kpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTIgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9wZXJtdXRleHZhcl9wcyAoX19tbWFzazE2IF9fVSwgX19tNTEyaSBfX1gsIF9fbTUxMiBfX1kpCnsKICByZXR1cm4gKF9fbTUxMilfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc181MTIoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl9wZXJtdXRleHZhcl9wcyhfX1gsIF9fWSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl9zZXR6ZXJvX3BzKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfcGVybXV0ZXh2YXJfZXBpMzIgKF9fbTUxMmkgX19YLCBfX201MTJpIF9fWSkKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9wZXJtdmFyc2k1MTIoKF9fdjE2c2kpX19ZLCAoX192MTZzaSlfX1gpOwp9CgojZGVmaW5lIF9tbTUxMl9wZXJtdXRldmFyX2VwaTMyIF9tbTUxMl9wZXJtdXRleHZhcl9lcGkzMgoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X3Blcm11dGV4dmFyX2VwaTMyIChfX21tYXNrMTYgX19NLCBfX201MTJpIF9fWCwgX19tNTEyaSBfX1kpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF81MTIoKF9fbW1hc2sxNilfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9wZXJtdXRleHZhcl9lcGkzMihfX1gsIF9fWSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19wZXJtdXRleHZhcl9lcGkzMiAoX19tNTEyaSBfX1csIF9fbW1hc2sxNiBfX00sIF9fbTUxMmkgX19YLAogICAgICAgICAgICAgX19tNTEyaSBfX1kpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF81MTIoKF9fbW1hc2sxNilfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9wZXJtdXRleHZhcl9lcGkzMihfX1gsIF9fWSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9fVyk7Cn0KCiNkZWZpbmUgX21tNTEyX21hc2tfcGVybXV0ZXZhcl9lcGkzMiBfbW01MTJfbWFza19wZXJtdXRleHZhcl9lcGkzMgoKc3RhdGljIF9faW5saW5lX18gX19tbWFzazE2IF9fREVGQVVMVF9GTl9BVFRSUwpfbW01MTJfa2FuZCAoX19tbWFzazE2IF9fQSwgX19tbWFzazE2IF9fQikKewogIHJldHVybiAoX19tbWFzazE2KSBfX2J1aWx0aW5faWEzMl9rYW5kaGkgKChfX21tYXNrMTYpIF9fQSwgKF9fbW1hc2sxNikgX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tbWFzazE2IF9fREVGQVVMVF9GTl9BVFRSUwpfbW01MTJfa2FuZG4gKF9fbW1hc2sxNiBfX0EsIF9fbW1hc2sxNiBfX0IpCnsKICByZXR1cm4gKF9fbW1hc2sxNikgX19idWlsdGluX2lhMzJfa2FuZG5oaSAoKF9fbW1hc2sxNikgX19BLCAoX19tbWFzazE2KSBfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX21tYXNrMTYgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTUxMl9rb3IgKF9fbW1hc2sxNiBfX0EsIF9fbW1hc2sxNiBfX0IpCnsKICByZXR1cm4gKF9fbW1hc2sxNikgX19idWlsdGluX2lhMzJfa29yaGkgKChfX21tYXNrMTYpIF9fQSwgKF9fbW1hc2sxNikgX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRSUwpfbW01MTJfa29ydGVzdGMgKF9fbW1hc2sxNiBfX0EsIF9fbW1hc2sxNiBfX0IpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfa29ydGVzdGNoaSAoKF9fbW1hc2sxNikgX19BLCAoX19tbWFzazE2KSBfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTUxMl9rb3J0ZXN0eiAoX19tbWFzazE2IF9fQSwgX19tbWFzazE2IF9fQikKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9rb3J0ZXN0emhpICgoX19tbWFzazE2KSBfX0EsIChfX21tYXNrMTYpIF9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGNoYXIgX19ERUZBVUxUX0ZOX0FUVFJTCl9rb3J0ZXN0Y19tYXNrMTZfdTgoX19tbWFzazE2IF9fQSwgX19tbWFzazE2IF9fQikKewogIHJldHVybiAodW5zaWduZWQgY2hhcilfX2J1aWx0aW5faWEzMl9rb3J0ZXN0Y2hpKF9fQSwgX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgY2hhciBfX0RFRkFVTFRfRk5fQVRUUlMKX2tvcnRlc3R6X21hc2sxNl91OChfX21tYXNrMTYgX19BLCBfX21tYXNrMTYgX19CKQp7CiAgcmV0dXJuICh1bnNpZ25lZCBjaGFyKV9fYnVpbHRpbl9pYTMyX2tvcnRlc3R6aGkoX19BLCBfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBjaGFyIF9fREVGQVVMVF9GTl9BVFRSUwpfa29ydGVzdF9tYXNrMTZfdTgoX19tbWFzazE2IF9fQSwgX19tbWFzazE2IF9fQiwgdW5zaWduZWQgY2hhciAqX19DKSB7CiAgKl9fQyA9ICh1bnNpZ25lZCBjaGFyKV9fYnVpbHRpbl9pYTMyX2tvcnRlc3RjaGkoX19BLCBfX0IpOwogIHJldHVybiAodW5zaWduZWQgY2hhcilfX2J1aWx0aW5faWEzMl9rb3J0ZXN0emhpKF9fQSwgX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tbWFzazE2IF9fREVGQVVMVF9GTl9BVFRSUwpfbW01MTJfa3VucGFja2IgKF9fbW1hc2sxNiBfX0EsIF9fbW1hc2sxNiBfX0IpCnsKICByZXR1cm4gKF9fbW1hc2sxNikgX19idWlsdGluX2lhMzJfa3VucGNraGkgKChfX21tYXNrMTYpIF9fQSwgKF9fbW1hc2sxNikgX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tbWFzazE2IF9fREVGQVVMVF9GTl9BVFRSUwpfbW01MTJfa3hub3IgKF9fbW1hc2sxNiBfX0EsIF9fbW1hc2sxNiBfX0IpCnsKICByZXR1cm4gKF9fbW1hc2sxNikgX19idWlsdGluX2lhMzJfa3hub3JoaSAoKF9fbW1hc2sxNikgX19BLCAoX19tbWFzazE2KSBfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX21tYXNrMTYgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTUxMl9reG9yIChfX21tYXNrMTYgX19BLCBfX21tYXNrMTYgX19CKQp7CiAgcmV0dXJuIChfX21tYXNrMTYpIF9fYnVpbHRpbl9pYTMyX2t4b3JoaSAoKF9fbW1hc2sxNikgX19BLCAoX19tbWFzazE2KSBfX0IpOwp9CgojZGVmaW5lIF9rYW5kX21hc2sxNiBfbW01MTJfa2FuZAojZGVmaW5lIF9rYW5kbl9tYXNrMTYgX21tNTEyX2thbmRuCiNkZWZpbmUgX2tub3RfbWFzazE2IF9tbTUxMl9rbm90CiNkZWZpbmUgX2tvcl9tYXNrMTYgX21tNTEyX2tvcgojZGVmaW5lIF9reG5vcl9tYXNrMTYgX21tNTEyX2t4bm9yCiNkZWZpbmUgX2t4b3JfbWFzazE2IF9tbTUxMl9reG9yCgojZGVmaW5lIF9rc2hpZnRsaV9tYXNrMTYoQSwgSSkgXAogICgoX19tbWFzazE2KV9fYnVpbHRpbl9pYTMyX2tzaGlmdGxpaGkoKF9fbW1hc2sxNikoQSksICh1bnNpZ25lZCBpbnQpKEkpKSkKCiNkZWZpbmUgX2tzaGlmdHJpX21hc2sxNihBLCBJKSBcCiAgKChfX21tYXNrMTYpX19idWlsdGluX2lhMzJfa3NoaWZ0cmloaSgoX19tbWFzazE2KShBKSwgKHVuc2lnbmVkIGludCkoSSkpKQoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgaW50IF9fREVGQVVMVF9GTl9BVFRSUwpfY3Z0bWFzazE2X3UzMihfX21tYXNrMTYgX19BKSB7CiAgcmV0dXJuICh1bnNpZ25lZCBpbnQpX19idWlsdGluX2lhMzJfa21vdncoKF9fbW1hc2sxNilfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX21tYXNrMTYgX19ERUZBVUxUX0ZOX0FUVFJTCl9jdnR1MzJfbWFzazE2KHVuc2lnbmVkIGludCBfX0EpIHsKICByZXR1cm4gKF9fbW1hc2sxNilfX2J1aWx0aW5faWEzMl9rbW92dygoX19tbWFzazE2KV9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbW1hc2sxNiBfX0RFRkFVTFRfRk5fQVRUUlMKX2xvYWRfbWFzazE2KF9fbW1hc2sxNiAqX19BKSB7CiAgcmV0dXJuIChfX21tYXNrMTYpX19idWlsdGluX2lhMzJfa21vdncoKihfX21tYXNrMTYgKilfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUwpfc3RvcmVfbWFzazE2KF9fbW1hc2sxNiAqX19BLCBfX21tYXNrMTYgX19CKSB7CiAgKihfX21tYXNrMTYgKilfX0EgPSBfX2J1aWx0aW5faWEzMl9rbW92dygoX19tbWFzazE2KV9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9zdHJlYW1fc2k1MTIgKHZvaWQgKiBfX1AsIF9fbTUxMmkgX19BKQp7CiAgdHlwZWRlZiBfX3Y4ZGkgX192OGRpX2FsaWduZWQgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCg2NCkpKTsKICBfX2J1aWx0aW5fbm9udGVtcG9yYWxfc3RvcmUoKF9fdjhkaV9hbGlnbmVkKV9fQSwgKF9fdjhkaV9hbGlnbmVkKilfX1ApOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfc3RyZWFtX2xvYWRfc2k1MTIgKHZvaWQgY29uc3QgKl9fUCkKewogIHR5cGVkZWYgX192OGRpIF9fdjhkaV9hbGlnbmVkIF9fYXR0cmlidXRlX18oKGFsaWduZWQoNjQpKSk7CiAgcmV0dXJuIChfX201MTJpKSBfX2J1aWx0aW5fbm9udGVtcG9yYWxfbG9hZCgoY29uc3QgX192OGRpX2FsaWduZWQgKilfX1ApOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfc3RyZWFtX3BkICh2b2lkICpfX1AsIF9fbTUxMmQgX19BKQp7CiAgdHlwZWRlZiBfX3Y4ZGYgX192OGRmX2FsaWduZWQgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCg2NCkpKTsKICBfX2J1aWx0aW5fbm9udGVtcG9yYWxfc3RvcmUoKF9fdjhkZl9hbGlnbmVkKV9fQSwgKF9fdjhkZl9hbGlnbmVkKilfX1ApOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfc3RyZWFtX3BzICh2b2lkICpfX1AsIF9fbTUxMiBfX0EpCnsKICB0eXBlZGVmIF9fdjE2c2YgX192MTZzZl9hbGlnbmVkIF9fYXR0cmlidXRlX18oKGFsaWduZWQoNjQpKSk7CiAgX19idWlsdGluX25vbnRlbXBvcmFsX3N0b3JlKChfX3YxNnNmX2FsaWduZWQpX19BLCAoX192MTZzZl9hbGlnbmVkKilfX1ApOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19jb21wcmVzc19wZCAoX19tNTEyZCBfX1csIF9fbW1hc2s4IF9fVSwgX19tNTEyZCBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmQpIF9fYnVpbHRpbl9pYTMyX2NvbXByZXNzZGY1MTJfbWFzayAoKF9fdjhkZikgX19BLAogICAgICAgICAgICAgICAgICAoX192OGRmKSBfX1csCiAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2NvbXByZXNzX3BkIChfX21tYXNrOCBfX1UsIF9fbTUxMmQgX19BKQp7CiAgcmV0dXJuIChfX201MTJkKSBfX2J1aWx0aW5faWEzMl9jb21wcmVzc2RmNTEyX21hc2sgKChfX3Y4ZGYpIF9fQSwKICAgICAgICAgICAgICAgICAgKF9fdjhkZikKICAgICAgICAgICAgICAgICAgX21tNTEyX3NldHplcm9fcGQgKCksCiAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfY29tcHJlc3NfZXBpNjQgKF9fbTUxMmkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTUxMmkgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKSBfX2J1aWx0aW5faWEzMl9jb21wcmVzc2RpNTEyX21hc2sgKChfX3Y4ZGkpIF9fQSwKICAgICAgICAgICAgICAgICAgKF9fdjhkaSkgX19XLAogICAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9jb21wcmVzc19lcGk2NCAoX19tbWFzazggX19VLCBfX201MTJpIF9fQSkKewogIHJldHVybiAoX19tNTEyaSkgX19idWlsdGluX2lhMzJfY29tcHJlc3NkaTUxMl9tYXNrICgoX192OGRpKSBfX0EsCiAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpCiAgICAgICAgICAgICAgICAgIF9tbTUxMl9zZXR6ZXJvX3NpNTEyICgpLAogICAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfY29tcHJlc3NfcHMgKF9fbTUxMiBfX1csIF9fbW1hc2sxNiBfX1UsIF9fbTUxMiBfX0EpCnsKICByZXR1cm4gKF9fbTUxMikgX19idWlsdGluX2lhMzJfY29tcHJlc3NzZjUxMl9tYXNrICgoX192MTZzZikgX19BLAogICAgICAgICAgICAgICAgIChfX3YxNnNmKSBfX1csCiAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfY29tcHJlc3NfcHMgKF9fbW1hc2sxNiBfX1UsIF9fbTUxMiBfX0EpCnsKICByZXR1cm4gKF9fbTUxMikgX19idWlsdGluX2lhMzJfY29tcHJlc3NzZjUxMl9tYXNrICgoX192MTZzZikgX19BLAogICAgICAgICAgICAgICAgIChfX3YxNnNmKQogICAgICAgICAgICAgICAgIF9tbTUxMl9zZXR6ZXJvX3BzICgpLAogICAgICAgICAgICAgICAgIChfX21tYXNrMTYpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2NvbXByZXNzX2VwaTMyIChfX201MTJpIF9fVywgX19tbWFzazE2IF9fVSwgX19tNTEyaSBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmkpIF9fYnVpbHRpbl9pYTMyX2NvbXByZXNzc2k1MTJfbWFzayAoKF9fdjE2c2kpIF9fQSwKICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpIF9fVywKICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2NvbXByZXNzX2VwaTMyIChfX21tYXNrMTYgX19VLCBfX201MTJpIF9fQSkKewogIHJldHVybiAoX19tNTEyaSkgX19idWlsdGluX2lhMzJfY29tcHJlc3NzaTUxMl9tYXNrICgoX192MTZzaSkgX19BLAogICAgICAgICAgICAgICAgICAoX192MTZzaSkKICAgICAgICAgICAgICAgICAgX21tNTEyX3NldHplcm9fc2k1MTIgKCksCiAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpIF9fVSk7Cn0KCiNkZWZpbmUgX21tX2NtcF9yb3VuZF9zc19tYXNrKFgsIFksIFAsIFIpIFwKICAoKF9fbW1hc2s4KV9fYnVpbHRpbl9pYTMyX2NtcHNzX21hc2soKF9fdjRzZikoX19tMTI4KShYKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKFkpLCAoaW50KShQKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEsIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX21hc2tfY21wX3JvdW5kX3NzX21hc2soTSwgWCwgWSwgUCwgUikgXAogICgoX19tbWFzazgpX19idWlsdGluX2lhMzJfY21wc3NfbWFzaygoX192NHNmKShfX20xMjgpKFgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoWSksIChpbnQpKFApLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoTSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX2NtcF9zc19tYXNrKFgsIFksIFApIFwKICAoKF9fbW1hc2s4KV9fYnVpbHRpbl9pYTMyX2NtcHNzX21hc2soKF9fdjRzZikoX19tMTI4KShYKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKFkpLCAoaW50KShQKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKSkKCiNkZWZpbmUgX21tX21hc2tfY21wX3NzX21hc2soTSwgWCwgWSwgUCkgXAogICgoX19tbWFzazgpX19idWlsdGluX2lhMzJfY21wc3NfbWFzaygoX192NHNmKShfX20xMjgpKFgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoWSksIChpbnQpKFApLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoTSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKSkKCiNkZWZpbmUgX21tX2NtcF9yb3VuZF9zZF9tYXNrKFgsIFksIFAsIFIpIFwKICAoKF9fbW1hc2s4KV9fYnVpbHRpbl9pYTMyX2NtcHNkX21hc2soKF9fdjJkZikoX19tMTI4ZCkoWCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikoX19tMTI4ZCkoWSksIChpbnQpKFApLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSwgKGludCkoUikpKQoKI2RlZmluZSBfbW1fbWFza19jbXBfcm91bmRfc2RfbWFzayhNLCBYLCBZLCBQLCBSKSBcCiAgKChfX21tYXNrOClfX2J1aWx0aW5faWEzMl9jbXBzZF9tYXNrKChfX3YyZGYpKF9fbTEyOGQpKFgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKFkpLCAoaW50KShQKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKE0pLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbV9jbXBfc2RfbWFzayhYLCBZLCBQKSBcCiAgKChfX21tYXNrOClfX2J1aWx0aW5faWEzMl9jbXBzZF9tYXNrKChfX3YyZGYpKF9fbTEyOGQpKFgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKFkpLCAoaW50KShQKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKSkKCiNkZWZpbmUgX21tX21hc2tfY21wX3NkX21hc2soTSwgWCwgWSwgUCkgXAogICgoX19tbWFzazgpX19idWlsdGluX2lhMzJfY21wc2RfbWFzaygoX192MmRmKShfX20xMjhkKShYKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShZKSwgKGludCkoUCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShNKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pKQoKLyogQml0IFRlc3QgKi8KCnN0YXRpYyBfX2lubGluZSBfX21tYXNrMTYgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl90ZXN0X2VwaTMyX21hc2sgKF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiBfbW01MTJfY21wbmVxX2VwaTMyX21hc2sgKF9tbTUxMl9hbmRfZXBpMzIoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX21tYXNrMTYgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX3Rlc3RfZXBpMzJfbWFzayAoX19tbWFzazE2IF9fVSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIF9tbTUxMl9tYXNrX2NtcG5lcV9lcGkzMl9tYXNrIChfX1UsIF9tbTUxMl9hbmRfZXBpMzIgKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmUgX19tbWFzazggX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl90ZXN0X2VwaTY0X21hc2sgKF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiBfbW01MTJfY21wbmVxX2VwaTY0X21hc2sgKF9tbTUxMl9hbmRfZXBpMzIgKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tbWFzazggX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX3Rlc3RfZXBpNjRfbWFzayAoX19tbWFzazggX19VLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gX21tNTEyX21hc2tfY21wbmVxX2VwaTY0X21hc2sgKF9fVSwgX21tNTEyX2FuZF9lcGkzMiAoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbW1hc2sxNiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3Rlc3RuX2VwaTMyX21hc2sgKF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiBfbW01MTJfY21wZXFfZXBpMzJfbWFzayAoX21tNTEyX2FuZF9lcGkzMiAoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbW1hc2sxNiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfdGVzdG5fZXBpMzJfbWFzayAoX19tbWFzazE2IF9fVSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIF9tbTUxMl9tYXNrX2NtcGVxX2VwaTMyX21hc2sgKF9fVSwgX21tNTEyX2FuZF9lcGkzMiAoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tbWFzazggX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl90ZXN0bl9lcGk2NF9tYXNrIChfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gX21tNTEyX2NtcGVxX2VwaTY0X21hc2sgKF9tbTUxMl9hbmRfZXBpMzIgKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX21tYXNrOCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfdGVzdG5fZXBpNjRfbWFzayAoX19tbWFzazggX19VLCBfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gX21tNTEyX21hc2tfY21wZXFfZXBpNjRfbWFzayAoX19VLCBfbW01MTJfYW5kX2VwaTMyIChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTIgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tb3ZlaGR1cF9wcyAoX19tNTEyIF9fQSkKewogIHJldHVybiAoX19tNTEyKV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3YxNnNmKV9fQSwgKF9fdjE2c2YpX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgMSwgMSwgMywgMywgNSwgNSwgNywgNywgOSwgOSwgMTEsIDExLCAxMywgMTMsIDE1LCAxNSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfbW92ZWhkdXBfcHMgKF9fbTUxMiBfX1csIF9fbW1hc2sxNiBfX1UsIF9fbTUxMiBfX0EpCnsKICByZXR1cm4gKF9fbTUxMilfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc181MTIoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl9tb3ZlaGR1cF9wcyhfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTIgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9tb3ZlaGR1cF9wcyAoX19tbWFzazE2IF9fVSwgX19tNTEyIF9fQSkKewogIHJldHVybiAoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzUxMigoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX21tNTEyX21vdmVoZHVwX3BzKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl9zZXR6ZXJvX3BzKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTIgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tb3ZlbGR1cF9wcyAoX19tNTEyIF9fQSkKewogIHJldHVybiAoX19tNTEyKV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3YxNnNmKV9fQSwgKF9fdjE2c2YpX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMiwgMiwgNCwgNCwgNiwgNiwgOCwgOCwgMTAsIDEwLCAxMiwgMTIsIDE0LCAxNCk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfbW92ZWxkdXBfcHMgKF9fbTUxMiBfX1csIF9fbW1hc2sxNiBfX1UsIF9fbTUxMiBfX0EpCnsKICByZXR1cm4gKF9fbTUxMilfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc181MTIoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl9tb3ZlbGR1cF9wcyhfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTIgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9tb3ZlbGR1cF9wcyAoX19tbWFzazE2IF9fVSwgX19tNTEyIF9fQSkKewogIHJldHVybiAoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzUxMigoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX21tNTEyX21vdmVsZHVwX3BzKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl9zZXR6ZXJvX3BzKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX21vdmVfc3MgKF9fbTEyOCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4IF9fQSwgX19tMTI4IF9fQikKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9zZWxlY3Rzc18xMjgoX19VLCBfbW1fbW92ZV9zcyhfX0EsIF9fQiksIF9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X21vdmVfc3MgKF9fbW1hc2s4IF9fVSwgX19tMTI4IF9fQSwgX19tMTI4IF9fQikKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9zZWxlY3Rzc18xMjgoX19VLCBfbW1fbW92ZV9zcyhfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbW1fc2V0emVyb19wcygpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfbW92ZV9zZCAoX19tMTI4ZCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHNkXzEyOChfX1UsIF9tbV9tb3ZlX3NkKF9fQSwgX19CKSwgX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X21vdmVfc2QgKF9fbW1hc2s4IF9fVSwgX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHNkXzEyOChfX1UsIF9tbV9tb3ZlX3NkKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9tbV9zZXR6ZXJvX3BkKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19zdG9yZV9zcyAoZmxvYXQgKiBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4IF9fQSkKewogIF9fYnVpbHRpbl9pYTMyX3N0b3Jlc3MxMjhfbWFzayAoKF9fdjRzZiAqKV9fVywgX19BLCBfX1UgJiAxKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfc3RvcmVfc2QgKGRvdWJsZSAqIF9fVywgX19tbWFzazggX19VLCBfX20xMjhkIF9fQSkKewogIF9fYnVpbHRpbl9pYTMyX3N0b3Jlc2QxMjhfbWFzayAoKF9fdjJkZiAqKV9fVywgX19BLCBfX1UgJiAxKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19sb2FkX3NzIChfX20xMjggX19XLCBfX21tYXNrOCBfX1UsIGNvbnN0IGZsb2F0KiBfX0EpCnsKICBfX20xMjggc3JjID0gKF9fdjRzZikgX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjRzZikgX19XLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9tbV9zZXR6ZXJvX3BzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDQsIDQsIDQpOwoKICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfbG9hZHNzMTI4X21hc2sgKChjb25zdCBfX3Y0c2YgKikgX19BLCBzcmMsIF9fVSAmIDEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9sb2FkX3NzIChfX21tYXNrOCBfX1UsIGNvbnN0IGZsb2F0KiBfX0EpCnsKICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl9sb2Fkc3MxMjhfbWFzayAoKGNvbnN0IF9fdjRzZiAqKSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpIF9tbV9zZXR6ZXJvX3BzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fVSAmIDEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19sb2FkX3NkIChfX20xMjhkIF9fVywgX19tbWFzazggX19VLCBjb25zdCBkb3VibGUqIF9fQSkKewogIF9fbTEyOGQgc3JjID0gKF9fdjJkZikgX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjJkZikgX19XLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfbW1fc2V0emVyb19wZCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMik7CgogIHJldHVybiAoX19tMTI4ZCkgX19idWlsdGluX2lhMzJfbG9hZHNkMTI4X21hc2sgKChjb25zdCBfX3YyZGYgKikgX19BLCBzcmMsIF9fVSAmIDEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfbG9hZF9zZCAoX19tbWFzazggX19VLCBjb25zdCBkb3VibGUqIF9fQSkKewogIHJldHVybiAoX19tMTI4ZCkgX19idWlsdGluX2lhMzJfbG9hZHNkMTI4X21hc2sgKChjb25zdCBfX3YyZGYgKikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpIF9tbV9zZXR6ZXJvX3BkKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19VICYgMSk7Cn0KCiNkZWZpbmUgX21tNTEyX3NodWZmbGVfZXBpMzIoQSwgSSkgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9wc2h1ZmQ1MTIoKF9fdjE2c2kpKF9fbTUxMmkpKEEpLCAoaW50KShJKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX3NodWZmbGVfZXBpMzIoVywgVSwgQSwgSSkgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzUxMigoX19tbWFzazE2KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfc2h1ZmZsZV9lcGkzMigoQSksIChJKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpKF9fbTUxMmkpKFcpKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X3NodWZmbGVfZXBpMzIoVSwgQSwgSSkgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzUxMigoX19tbWFzazE2KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfc2h1ZmZsZV9lcGkzMigoQSksIChJKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX21tNTEyX3NldHplcm9fc2k1MTIoKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19leHBhbmRfcGQgKF9fbTUxMmQgX19XLCBfX21tYXNrOCBfX1UsIF9fbTUxMmQgX19BKQp7CiAgcmV0dXJuIChfX201MTJkKSBfX2J1aWx0aW5faWEzMl9leHBhbmRkZjUxMl9tYXNrICgoX192OGRmKSBfX0EsCiAgICAgICAgICAgICAgICAoX192OGRmKSBfX1csCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9leHBhbmRfcGQgKF9fbW1hc2s4IF9fVSwgX19tNTEyZCBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmQpIF9fYnVpbHRpbl9pYTMyX2V4cGFuZGRmNTEyX21hc2sgKChfX3Y4ZGYpIF9fQSwKICAgICAgICAgICAgICAgIChfX3Y4ZGYpIF9tbTUxMl9zZXR6ZXJvX3BkICgpLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19leHBhbmRfZXBpNjQgKF9fbTUxMmkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTUxMmkgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKSBfX2J1aWx0aW5faWEzMl9leHBhbmRkaTUxMl9tYXNrICgoX192OGRpKSBfX0EsCiAgICAgICAgICAgICAgICAoX192OGRpKSBfX1csCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9leHBhbmRfZXBpNjQgKCBfX21tYXNrOCBfX1UsIF9fbTUxMmkgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKSBfX2J1aWx0aW5faWEzMl9leHBhbmRkaTUxMl9tYXNrICgoX192OGRpKSBfX0EsCiAgICAgICAgICAgICAgICAoX192OGRpKSBfbW01MTJfc2V0emVyb19zaTUxMiAoKSwKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfZXhwYW5kbG9hZHVfcGQoX19tNTEyZCBfX1csIF9fbW1hc2s4IF9fVSwgdm9pZCBjb25zdCAqX19QKQp7CiAgcmV0dXJuIChfX201MTJkKSBfX2J1aWx0aW5faWEzMl9leHBhbmRsb2FkZGY1MTJfbWFzayAoKGNvbnN0IF9fdjhkZiAqKV9fUCwKICAgICAgICAgICAgICAoX192OGRmKSBfX1csCiAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfZXhwYW5kbG9hZHVfcGQoX19tbWFzazggX19VLCB2b2lkIGNvbnN0ICpfX1ApCnsKICByZXR1cm4gKF9fbTUxMmQpIF9fYnVpbHRpbl9pYTMyX2V4cGFuZGxvYWRkZjUxMl9tYXNrICgoY29uc3QgX192OGRmICopX19QLAogICAgICAgICAgICAgIChfX3Y4ZGYpIF9tbTUxMl9zZXR6ZXJvX3BkKCksCiAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19leHBhbmRsb2FkdV9lcGk2NChfX201MTJpIF9fVywgX19tbWFzazggX19VLCB2b2lkIGNvbnN0ICpfX1ApCnsKICByZXR1cm4gKF9fbTUxMmkpIF9fYnVpbHRpbl9pYTMyX2V4cGFuZGxvYWRkaTUxMl9tYXNrICgoY29uc3QgX192OGRpICopX19QLAogICAgICAgICAgICAgIChfX3Y4ZGkpIF9fVywKICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9leHBhbmRsb2FkdV9lcGk2NChfX21tYXNrOCBfX1UsIHZvaWQgY29uc3QgKl9fUCkKewogIHJldHVybiAoX19tNTEyaSkgX19idWlsdGluX2lhMzJfZXhwYW5kbG9hZGRpNTEyX21hc2sgKChjb25zdCBfX3Y4ZGkgKilfX1AsCiAgICAgICAgICAgICAgKF9fdjhkaSkgX21tNTEyX3NldHplcm9fc2k1MTIoKSwKICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfZXhwYW5kbG9hZHVfcHMoX19tNTEyIF9fVywgX19tbWFzazE2IF9fVSwgdm9pZCBjb25zdCAqX19QKQp7CiAgcmV0dXJuIChfX201MTIpIF9fYnVpbHRpbl9pYTMyX2V4cGFuZGxvYWRzZjUxMl9tYXNrICgoY29uc3QgX192MTZzZiAqKV9fUCwKICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKSBfX1csCiAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTIgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9leHBhbmRsb2FkdV9wcyhfX21tYXNrMTYgX19VLCB2b2lkIGNvbnN0ICpfX1ApCnsKICByZXR1cm4gKF9fbTUxMikgX19idWlsdGluX2lhMzJfZXhwYW5kbG9hZHNmNTEyX21hc2sgKChjb25zdCBfX3YxNnNmICopX19QLAogICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpIF9tbTUxMl9zZXR6ZXJvX3BzKCksCiAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19leHBhbmRsb2FkdV9lcGkzMihfX201MTJpIF9fVywgX19tbWFzazE2IF9fVSwgdm9pZCBjb25zdCAqX19QKQp7CiAgcmV0dXJuIChfX201MTJpKSBfX2J1aWx0aW5faWEzMl9leHBhbmRsb2Fkc2k1MTJfbWFzayAoKGNvbnN0IF9fdjE2c2kgKilfX1AsCiAgICAgICAgICAgICAgKF9fdjE2c2kpIF9fVywKICAgICAgICAgICAgICAoX19tbWFzazE2KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfZXhwYW5kbG9hZHVfZXBpMzIoX19tbWFzazE2IF9fVSwgdm9pZCBjb25zdCAqX19QKQp7CiAgcmV0dXJuIChfX201MTJpKSBfX2J1aWx0aW5faWEzMl9leHBhbmRsb2Fkc2k1MTJfbWFzayAoKGNvbnN0IF9fdjE2c2kgKilfX1AsCiAgICAgICAgICAgICAgKF9fdjE2c2kpIF9tbTUxMl9zZXR6ZXJvX3NpNTEyKCksCiAgICAgICAgICAgICAgKF9fbW1hc2sxNikgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19leHBhbmRfcHMgKF9fbTUxMiBfX1csIF9fbW1hc2sxNiBfX1UsIF9fbTUxMiBfX0EpCnsKICByZXR1cm4gKF9fbTUxMikgX19idWlsdGluX2lhMzJfZXhwYW5kc2Y1MTJfbWFzayAoKF9fdjE2c2YpIF9fQSwKICAgICAgICAgICAgICAgKF9fdjE2c2YpIF9fVywKICAgICAgICAgICAgICAgKF9fbW1hc2sxNikgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfZXhwYW5kX3BzIChfX21tYXNrMTYgX19VLCBfX201MTIgX19BKQp7CiAgcmV0dXJuIChfX201MTIpIF9fYnVpbHRpbl9pYTMyX2V4cGFuZHNmNTEyX21hc2sgKChfX3YxNnNmKSBfX0EsCiAgICAgICAgICAgICAgIChfX3YxNnNmKSBfbW01MTJfc2V0emVyb19wcygpLAogICAgICAgICAgICAgICAoX19tbWFzazE2KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19leHBhbmRfZXBpMzIgKF9fbTUxMmkgX19XLCBfX21tYXNrMTYgX19VLCBfX201MTJpIF9fQSkKewogIHJldHVybiAoX19tNTEyaSkgX19idWlsdGluX2lhMzJfZXhwYW5kc2k1MTJfbWFzayAoKF9fdjE2c2kpIF9fQSwKICAgICAgICAgICAgICAgIChfX3YxNnNpKSBfX1csCiAgICAgICAgICAgICAgICAoX19tbWFzazE2KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfZXhwYW5kX2VwaTMyIChfX21tYXNrMTYgX19VLCBfX201MTJpIF9fQSkKewogIHJldHVybiAoX19tNTEyaSkgX19idWlsdGluX2lhMzJfZXhwYW5kc2k1MTJfbWFzayAoKF9fdjE2c2kpIF9fQSwKICAgICAgICAgICAgICAgIChfX3YxNnNpKSBfbW01MTJfc2V0emVyb19zaTUxMigpLAogICAgICAgICAgICAgICAgKF9fbW1hc2sxNikgX19VKTsKfQoKI2RlZmluZSBfbW01MTJfY3Z0X3JvdW5kcHNfcGQoQSwgUikgXAogICgoX19tNTEyZClfX2J1aWx0aW5faWEzMl9jdnRwczJwZDUxMl9tYXNrKChfX3Y4c2YpKF9fbTI1NikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl91bmRlZmluZWRfcGQoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza19jdnRfcm91bmRwc19wZChXLCBVLCBBLCBSKSBcCiAgKChfX201MTJkKV9fYnVpbHRpbl9pYTMyX2N2dHBzMnBkNTEyX21hc2soKF9fdjhzZikoX19tMjU2KShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpKF9fbTUxMmQpKFcpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfY3Z0X3JvdW5kcHNfcGQoVSwgQSwgUikgXAogICgoX19tNTEyZClfX2J1aWx0aW5faWEzMl9jdnRwczJwZDUxMl9tYXNrKChfX3Y4c2YpKF9fbTI1NikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl9zZXR6ZXJvX3BkKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpLCAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfY3Z0cHNfcGQgKF9fbTI1NiBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmQpIF9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKChfX3Y4c2YpX19BLCBfX3Y4ZGYpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19jdnRwc19wZCAoX19tNTEyZCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2IF9fQSkKewogIHJldHVybiAoX19tNTEyZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF81MTIoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX2N2dHBzX3BkKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9jdnRwc19wZCAoX19tbWFzazggX19VLCBfX20yNTYgX19BKQp7CiAgcmV0dXJuIChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzUxMigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfbW01MTJfY3Z0cHNfcGQoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX3NldHplcm9fcGQoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9jdnRwc2xvX3BkIChfX201MTIgX19BKQp7CiAgcmV0dXJuIChfX201MTJkKSBfbW01MTJfY3Z0cHNfcGQoX21tNTEyX2Nhc3RwczUxMl9wczI1NihfX0EpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfY3Z0cHNsb19wZCAoX19tNTEyZCBfX1csIF9fbW1hc2s4IF9fVSwgX19tNTEyIF9fQSkKewogIHJldHVybiAoX19tNTEyZCkgX21tNTEyX21hc2tfY3Z0cHNfcGQoX19XLCBfX1UsIF9tbTUxMl9jYXN0cHM1MTJfcHMyNTYoX19BKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX21vdl9wZCAoX19tNTEyZCBfX1csIF9fbW1hc2s4IF9fVSwgX19tNTEyZCBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmQpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzUxMiAoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgKF9fdjhkZikgX19BLAogICAgICAgICAgICAgIChfX3Y4ZGYpIF9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9tb3ZfcGQgKF9fbW1hc2s4IF9fVSwgX19tNTEyZCBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmQpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzUxMiAoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgKF9fdjhkZikgX19BLAogICAgICAgICAgICAgIChfX3Y4ZGYpIF9tbTUxMl9zZXR6ZXJvX3BkICgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19tb3ZfcHMgKF9fbTUxMiBfX1csIF9fbW1hc2sxNiBfX1UsIF9fbTUxMiBfX0EpCnsKICByZXR1cm4gKF9fbTUxMikgX19idWlsdGluX2lhMzJfc2VsZWN0cHNfNTEyICgoX19tbWFzazE2KSBfX1UsCiAgICAgICAgICAgICAoX192MTZzZikgX19BLAogICAgICAgICAgICAgKF9fdjE2c2YpIF9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X21vdl9wcyAoX19tbWFzazE2IF9fVSwgX19tNTEyIF9fQSkKewogIHJldHVybiAoX19tNTEyKSBfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc181MTIgKChfX21tYXNrMTYpIF9fVSwKICAgICAgICAgICAgIChfX3YxNnNmKSBfX0EsCiAgICAgICAgICAgICAoX192MTZzZikgX21tNTEyX3NldHplcm9fcHMgKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19jb21wcmVzc3N0b3JldV9wZCAodm9pZCAqX19QLCBfX21tYXNrOCBfX1UsIF9fbTUxMmQgX19BKQp7CiAgX19idWlsdGluX2lhMzJfY29tcHJlc3NzdG9yZWRmNTEyX21hc2sgKChfX3Y4ZGYgKikgX19QLCAoX192OGRmKSBfX0EsCiAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfY29tcHJlc3NzdG9yZXVfZXBpNjQgKHZvaWQgKl9fUCwgX19tbWFzazggX19VLCBfX201MTJpIF9fQSkKewogIF9fYnVpbHRpbl9pYTMyX2NvbXByZXNzc3RvcmVkaTUxMl9tYXNrICgoX192OGRpICopIF9fUCwgKF9fdjhkaSkgX19BLAogICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2NvbXByZXNzc3RvcmV1X3BzICh2b2lkICpfX1AsIF9fbW1hc2sxNiBfX1UsIF9fbTUxMiBfX0EpCnsKICBfX2J1aWx0aW5faWEzMl9jb21wcmVzc3N0b3Jlc2Y1MTJfbWFzayAoKF9fdjE2c2YgKikgX19QLCAoX192MTZzZikgX19BLAogICAgICAgICAgICAoX19tbWFzazE2KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19jb21wcmVzc3N0b3JldV9lcGkzMiAodm9pZCAqX19QLCBfX21tYXNrMTYgX19VLCBfX201MTJpIF9fQSkKewogIF9fYnVpbHRpbl9pYTMyX2NvbXByZXNzc3RvcmVzaTUxMl9tYXNrICgoX192MTZzaSAqKSBfX1AsIChfX3YxNnNpKSBfX0EsCiAgICAgICAgICAgIChfX21tYXNrMTYpIF9fVSk7Cn0KCiNkZWZpbmUgX21tX2N2dF9yb3VuZHNkX3NzKEEsIEIsIFIpIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl9jdnRzZDJzc19yb3VuZF9tYXNrKChfX3Y0c2YpKF9fbTEyOCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9tbV91bmRlZmluZWRfcHMoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbV9tYXNrX2N2dF9yb3VuZHNkX3NzKFcsIFUsIEEsIEIsIFIpIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl9jdnRzZDJzc19yb3VuZF9tYXNrKChfX3Y0c2YpKF9fbTEyOCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKFcpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbV9tYXNrel9jdnRfcm91bmRzZF9zcyhVLCBBLCBCLCBSKSBcCiAgKChfX20xMjgpX19idWlsdGluX2lhMzJfY3Z0c2Qyc3Nfcm91bmRfbWFzaygoX192NHNmKShfX20xMjgpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfbW1fc2V0emVyb19wcygpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpLCAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2N2dHNkX3NzIChfX20xMjggX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOCBfX0EsIF9fbTEyOGQgX19CKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2N2dHNkMnNzX3JvdW5kX21hc2sgKChfX3Y0c2YpX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfX1csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOClfX1UsIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2N2dHNkX3NzIChfX21tYXNrOCBfX1UsIF9fbTEyOCBfX0EsIF9fbTEyOGQgX19CKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2N2dHNkMnNzX3JvdW5kX21hc2sgKChfX3Y0c2YpX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfbW1fc2V0emVyb19wcygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpX19VLCBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgojZGVmaW5lIF9tbV9jdnRzc19pMzIgX21tX2N2dHNzX3NpMzIKI2RlZmluZSBfbW1fY3Z0c2RfaTMyIF9tbV9jdnRzZF9zaTMyCiNkZWZpbmUgX21tX2N2dGkzMl9zZCBfbW1fY3Z0c2kzMl9zZAojZGVmaW5lIF9tbV9jdnRpMzJfc3MgX21tX2N2dHNpMzJfc3MKI2lmZGVmIF9feDg2XzY0X18KI2RlZmluZSBfbW1fY3Z0c3NfaTY0IF9tbV9jdnRzc19zaTY0CiNkZWZpbmUgX21tX2N2dHNkX2k2NCBfbW1fY3Z0c2Rfc2k2NAojZGVmaW5lIF9tbV9jdnRpNjRfc2QgX21tX2N2dHNpNjRfc2QKI2RlZmluZSBfbW1fY3Z0aTY0X3NzIF9tbV9jdnRzaTY0X3NzCiNlbmRpZgoKI2lmZGVmIF9feDg2XzY0X18KI2RlZmluZSBfbW1fY3Z0X3JvdW5kaTY0X3NkKEEsIEIsIFIpIFwKICAoKF9fbTEyOGQpX19idWlsdGluX2lhMzJfY3Z0c2kyc2Q2NCgoX192MmRmKShfX20xMjhkKShBKSwgKGxvbmcgbG9uZykoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShSKSkpCgojZGVmaW5lIF9tbV9jdnRfcm91bmRzaTY0X3NkKEEsIEIsIFIpIFwKICAoKF9fbTEyOGQpX19idWlsdGluX2lhMzJfY3Z0c2kyc2Q2NCgoX192MmRmKShfX20xMjhkKShBKSwgKGxvbmcgbG9uZykoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShSKSkpCiNlbmRpZgoKI2RlZmluZSBfbW1fY3Z0X3JvdW5kc2kzMl9zcyhBLCBCLCBSKSBcCiAgKChfX20xMjgpX19idWlsdGluX2lhMzJfY3Z0c2kyc3MzMigoX192NHNmKShfX20xMjgpKEEpLCAoaW50KShCKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW1fY3Z0X3JvdW5kaTMyX3NzKEEsIEIsIFIpIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl9jdnRzaTJzczMyKChfX3Y0c2YpKF9fbTEyOCkoQSksIChpbnQpKEIpLCAoaW50KShSKSkpCgojaWZkZWYgX194ODZfNjRfXwojZGVmaW5lIF9tbV9jdnRfcm91bmRzaTY0X3NzKEEsIEIsIFIpIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl9jdnRzaTJzczY0KChfX3Y0c2YpKF9fbTEyOCkoQSksIChsb25nIGxvbmcpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShSKSkpCgojZGVmaW5lIF9tbV9jdnRfcm91bmRpNjRfc3MoQSwgQiwgUikgXAogICgoX19tMTI4KV9fYnVpbHRpbl9pYTMyX2N2dHNpMnNzNjQoKF9fdjRzZikoX19tMTI4KShBKSwgKGxvbmcgbG9uZykoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKFIpKSkKI2VuZGlmCgojZGVmaW5lIF9tbV9jdnRfcm91bmRzc19zZChBLCBCLCBSKSBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2N2dHNzMnNkX3JvdW5kX21hc2soKF9fdjJkZikoX19tMTI4ZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfbW1fdW5kZWZpbmVkX3BkKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEsIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX21hc2tfY3Z0X3JvdW5kc3Nfc2QoVywgVSwgQSwgQiwgUikgXAogICgoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9jdnRzczJzZF9yb3VuZF9tYXNrKChfX3YyZGYpKF9fbTEyOGQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikoX19tMTI4KShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKFcpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW1fbWFza3pfY3Z0X3JvdW5kc3Nfc2QoVSwgQSwgQiwgUikgXAogICgoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9jdnRzczJzZF9yb3VuZF9tYXNrKChfX3YyZGYpKF9fbTEyOGQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikoX19tMTI4KShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX3NldHplcm9fcGQoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2N2dHNzX3NkIChfX20xMjhkIF9fVywgX19tbWFzazggX19VLCBfX20xMjhkIF9fQSwgX19tMTI4IF9fQikKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9jdnRzczJzZF9yb3VuZF9tYXNrKChfX3YyZGYpX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX19XLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOClfX1UsIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9jdnRzc19zZCAoX19tbWFzazggX19VLCBfX20xMjhkIF9fQSwgX19tMTI4IF9fQikKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9jdnRzczJzZF9yb3VuZF9tYXNrKChfX3YyZGYpX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX3NldHplcm9fcGQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpX19VLCBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fY3Z0dTMyX3NkIChfX20xMjhkIF9fQSwgdW5zaWduZWQgX19CKQp7CiAgX19BWzBdID0gX19COwogIHJldHVybiBfX0E7Cn0KCiNpZmRlZiBfX3g4Nl82NF9fCiNkZWZpbmUgX21tX2N2dF9yb3VuZHU2NF9zZChBLCBCLCBSKSBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2N2dHVzaTJzZDY0KChfX3YyZGYpKF9fbTEyOGQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpKEIpLCAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fY3Z0dTY0X3NkIChfX20xMjhkIF9fQSwgdW5zaWduZWQgbG9uZyBsb25nIF9fQikKewogIF9fQVswXSA9IF9fQjsKICByZXR1cm4gX19BOwp9CiNlbmRpZgoKI2RlZmluZSBfbW1fY3Z0X3JvdW5kdTMyX3NzKEEsIEIsIFIpIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl9jdnR1c2kyc3MzMigoX192NHNmKShfX20xMjgpKEEpLCAodW5zaWduZWQgaW50KShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX2N2dHUzMl9zcyAoX19tMTI4IF9fQSwgdW5zaWduZWQgX19CKQp7CiAgX19BWzBdID0gX19COwogIHJldHVybiBfX0E7Cn0KCiNpZmRlZiBfX3g4Nl82NF9fCiNkZWZpbmUgX21tX2N2dF9yb3VuZHU2NF9zcyhBLCBCLCBSKSBcCiAgKChfX20xMjgpX19idWlsdGluX2lhMzJfY3Z0dXNpMnNzNjQoKF9fdjRzZikoX19tMTI4KShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpKEIpLCAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9jdnR1NjRfc3MgKF9fbTEyOCBfX0EsIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0IpCnsKICBfX0FbMF0gPSBfX0I7CiAgcmV0dXJuIF9fQTsKfQojZW5kaWYKCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX3NldDFfZXBpMzIgKF9fbTUxMmkgX19PLCBfX21tYXNrMTYgX19NLCBpbnQgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKSBfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzUxMihfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSkgX21tNTEyX3NldDFfZXBpMzIoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKSBfX08pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19zZXQxX2VwaTY0IChfX201MTJpIF9fTywgX19tbWFzazggX19NLCBsb25nIGxvbmcgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKSBfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzUxMihfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKSBfbW01MTJfc2V0MV9lcGk2NChfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSkgX19PKTsKfQoKc3RhdGljICBfX2lubGluZSBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfc2V0X2VwaTggKGNoYXIgX19lNjMsIGNoYXIgX19lNjIsIGNoYXIgX19lNjEsIGNoYXIgX19lNjAsIGNoYXIgX19lNTksCiAgICBjaGFyIF9fZTU4LCBjaGFyIF9fZTU3LCBjaGFyIF9fZTU2LCBjaGFyIF9fZTU1LCBjaGFyIF9fZTU0LCBjaGFyIF9fZTUzLAogICAgY2hhciBfX2U1MiwgY2hhciBfX2U1MSwgY2hhciBfX2U1MCwgY2hhciBfX2U0OSwgY2hhciBfX2U0OCwgY2hhciBfX2U0NywKICAgIGNoYXIgX19lNDYsIGNoYXIgX19lNDUsIGNoYXIgX19lNDQsIGNoYXIgX19lNDMsIGNoYXIgX19lNDIsIGNoYXIgX19lNDEsCiAgICBjaGFyIF9fZTQwLCBjaGFyIF9fZTM5LCBjaGFyIF9fZTM4LCBjaGFyIF9fZTM3LCBjaGFyIF9fZTM2LCBjaGFyIF9fZTM1LAogICAgY2hhciBfX2UzNCwgY2hhciBfX2UzMywgY2hhciBfX2UzMiwgY2hhciBfX2UzMSwgY2hhciBfX2UzMCwgY2hhciBfX2UyOSwKICAgIGNoYXIgX19lMjgsIGNoYXIgX19lMjcsIGNoYXIgX19lMjYsIGNoYXIgX19lMjUsIGNoYXIgX19lMjQsIGNoYXIgX19lMjMsCiAgICBjaGFyIF9fZTIyLCBjaGFyIF9fZTIxLCBjaGFyIF9fZTIwLCBjaGFyIF9fZTE5LCBjaGFyIF9fZTE4LCBjaGFyIF9fZTE3LAogICAgY2hhciBfX2UxNiwgY2hhciBfX2UxNSwgY2hhciBfX2UxNCwgY2hhciBfX2UxMywgY2hhciBfX2UxMiwgY2hhciBfX2UxMSwKICAgIGNoYXIgX19lMTAsIGNoYXIgX19lOSwgY2hhciBfX2U4LCBjaGFyIF9fZTcsIGNoYXIgX19lNiwgY2hhciBfX2U1LAogICAgY2hhciBfX2U0LCBjaGFyIF9fZTMsIGNoYXIgX19lMiwgY2hhciBfX2UxLCBjaGFyIF9fZTApIHsKCiAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTUxMmkpKF9fdjY0cWkpCiAgICB7X19lMCwgX19lMSwgX19lMiwgX19lMywgX19lNCwgX19lNSwgX19lNiwgX19lNywKICAgICBfX2U4LCBfX2U5LCBfX2UxMCwgX19lMTEsIF9fZTEyLCBfX2UxMywgX19lMTQsIF9fZTE1LAogICAgIF9fZTE2LCBfX2UxNywgX19lMTgsIF9fZTE5LCBfX2UyMCwgX19lMjEsIF9fZTIyLCBfX2UyMywKICAgICBfX2UyNCwgX19lMjUsIF9fZTI2LCBfX2UyNywgX19lMjgsIF9fZTI5LCBfX2UzMCwgX19lMzEsCiAgICAgX19lMzIsIF9fZTMzLCBfX2UzNCwgX19lMzUsIF9fZTM2LCBfX2UzNywgX19lMzgsIF9fZTM5LAogICAgIF9fZTQwLCBfX2U0MSwgX19lNDIsIF9fZTQzLCBfX2U0NCwgX19lNDUsIF9fZTQ2LCBfX2U0NywKICAgICBfX2U0OCwgX19lNDksIF9fZTUwLCBfX2U1MSwgX19lNTIsIF9fZTUzLCBfX2U1NCwgX19lNTUsCiAgICAgX19lNTYsIF9fZTU3LCBfX2U1OCwgX19lNTksIF9fZTYwLCBfX2U2MSwgX19lNjIsIF9fZTYzfTsKfQoKc3RhdGljICBfX2lubGluZSBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfc2V0X2VwaTE2KHNob3J0IF9fZTMxLCBzaG9ydCBfX2UzMCwgc2hvcnQgX19lMjksIHNob3J0IF9fZTI4LAogICAgc2hvcnQgX19lMjcsIHNob3J0IF9fZTI2LCBzaG9ydCBfX2UyNSwgc2hvcnQgX19lMjQsIHNob3J0IF9fZTIzLAogICAgc2hvcnQgX19lMjIsIHNob3J0IF9fZTIxLCBzaG9ydCBfX2UyMCwgc2hvcnQgX19lMTksIHNob3J0IF9fZTE4LAogICAgc2hvcnQgX19lMTcsIHNob3J0IF9fZTE2LCBzaG9ydCBfX2UxNSwgc2hvcnQgX19lMTQsIHNob3J0IF9fZTEzLAogICAgc2hvcnQgX19lMTIsIHNob3J0IF9fZTExLCBzaG9ydCBfX2UxMCwgc2hvcnQgX19lOSwgc2hvcnQgX19lOCwKICAgIHNob3J0IF9fZTcsIHNob3J0IF9fZTYsIHNob3J0IF9fZTUsIHNob3J0IF9fZTQsIHNob3J0IF9fZTMsCiAgICBzaG9ydCBfX2UyLCBzaG9ydCBfX2UxLCBzaG9ydCBfX2UwKSB7CiAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTUxMmkpKF9fdjMyaGkpCiAgICB7X19lMCwgX19lMSwgX19lMiwgX19lMywgX19lNCwgX19lNSwgX19lNiwgX19lNywKICAgICBfX2U4LCBfX2U5LCBfX2UxMCwgX19lMTEsIF9fZTEyLCBfX2UxMywgX19lMTQsIF9fZTE1LAogICAgIF9fZTE2LCBfX2UxNywgX19lMTgsIF9fZTE5LCBfX2UyMCwgX19lMjEsIF9fZTIyLCBfX2UyMywKICAgICBfX2UyNCwgX19lMjUsIF9fZTI2LCBfX2UyNywgX19lMjgsIF9fZTI5LCBfX2UzMCwgX19lMzEgfTsKfQoKc3RhdGljIF9faW5saW5lIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9zZXRfZXBpMzIgKGludCBfX0EsIGludCBfX0IsIGludCBfX0MsIGludCBfX0QsCiAgICAgaW50IF9fRSwgaW50IF9fRiwgaW50IF9fRywgaW50IF9fSCwKICAgICBpbnQgX19JLCBpbnQgX19KLCBpbnQgX19LLCBpbnQgX19MLAogICAgIGludCBfX00sIGludCBfX04sIGludCBfX08sIGludCBfX1ApCnsKICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tNTEyaSkoX192MTZzaSkKICB7IF9fUCwgX19PLCBfX04sIF9fTSwgX19MLCBfX0ssIF9fSiwgX19JLAogICAgX19ILCBfX0csIF9fRiwgX19FLCBfX0QsIF9fQywgX19CLCBfX0EgfTsKfQoKI2RlZmluZSBfbW01MTJfc2V0cl9lcGkzMihlMCxlMSxlMixlMyxlNCxlNSxlNixlNywgICAgICAgICAgIFwKICAgICAgIGU4LGU5LGUxMCxlMTEsZTEyLGUxMyxlMTQsZTE1KSAgICAgICAgICBcCiAgX21tNTEyX3NldF9lcGkzMigoZTE1KSwoZTE0KSwoZTEzKSwoZTEyKSwoZTExKSwoZTEwKSwoZTkpLChlOCksKGU3KSwoZTYpLCBcCiAgICAgICAgICAgICAgICAgICAoZTUpLChlNCksKGUzKSwoZTIpLChlMSksKGUwKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9zZXRfZXBpNjQgKGxvbmcgbG9uZyBfX0EsIGxvbmcgbG9uZyBfX0IsIGxvbmcgbG9uZyBfX0MsCiAgICAgbG9uZyBsb25nIF9fRCwgbG9uZyBsb25nIF9fRSwgbG9uZyBsb25nIF9fRiwKICAgICBsb25nIGxvbmcgX19HLCBsb25nIGxvbmcgX19IKQp7CiAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTUxMmkpIChfX3Y4ZGkpCiAgeyBfX0gsIF9fRywgX19GLCBfX0UsIF9fRCwgX19DLCBfX0IsIF9fQSB9Owp9CgojZGVmaW5lIF9tbTUxMl9zZXRyX2VwaTY0KGUwLGUxLGUyLGUzLGU0LGU1LGU2LGU3KSAgICAgICAgICAgXAogIF9tbTUxMl9zZXRfZXBpNjQoKGU3KSwoZTYpLChlNSksKGU0KSwoZTMpLChlMiksKGUxKSwoZTApKQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3NldF9wZCAoZG91YmxlIF9fQSwgZG91YmxlIF9fQiwgZG91YmxlIF9fQywgZG91YmxlIF9fRCwKICAgICAgICBkb3VibGUgX19FLCBkb3VibGUgX19GLCBkb3VibGUgX19HLCBkb3VibGUgX19IKQp7CiAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTUxMmQpCiAgeyBfX0gsIF9fRywgX19GLCBfX0UsIF9fRCwgX19DLCBfX0IsIF9fQSB9Owp9CgojZGVmaW5lIF9tbTUxMl9zZXRyX3BkKGUwLGUxLGUyLGUzLGU0LGU1LGU2LGU3KSAgICAgICAgICAgICAgXAogIF9tbTUxMl9zZXRfcGQoKGU3KSwoZTYpLChlNSksKGU0KSwoZTMpLChlMiksKGUxKSwoZTApKQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfc2V0X3BzIChmbG9hdCBfX0EsIGZsb2F0IF9fQiwgZmxvYXQgX19DLCBmbG9hdCBfX0QsCiAgICAgICAgZmxvYXQgX19FLCBmbG9hdCBfX0YsIGZsb2F0IF9fRywgZmxvYXQgX19ILAogICAgICAgIGZsb2F0IF9fSSwgZmxvYXQgX19KLCBmbG9hdCBfX0ssIGZsb2F0IF9fTCwKICAgICAgICBmbG9hdCBfX00sIGZsb2F0IF9fTiwgZmxvYXQgX19PLCBmbG9hdCBfX1ApCnsKICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tNTEyKQogIHsgX19QLCBfX08sIF9fTiwgX19NLCBfX0wsIF9fSywgX19KLCBfX0ksCiAgICBfX0gsIF9fRywgX19GLCBfX0UsIF9fRCwgX19DLCBfX0IsIF9fQSB9Owp9CgojZGVmaW5lIF9tbTUxMl9zZXRyX3BzKGUwLGUxLGUyLGUzLGU0LGU1LGU2LGU3LGU4LGU5LGUxMCxlMTEsZTEyLGUxMyxlMTQsZTE1KSBcCiAgX21tNTEyX3NldF9wcygoZTE1KSwoZTE0KSwoZTEzKSwoZTEyKSwoZTExKSwoZTEwKSwoZTkpLChlOCksKGU3KSwoZTYpLChlNSksIFwKICAgICAgICAgICAgICAgIChlNCksKGUzKSwoZTIpLChlMSksKGUwKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2Fic19wcyhfX201MTIgX19BKQp7CiAgcmV0dXJuIChfX201MTIpX21tNTEyX2FuZF9lcGkzMihfbW01MTJfc2V0MV9lcGkzMigweDdGRkZGRkZGKSwoX19tNTEyaSlfX0EpIDsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19hYnNfcHMoX19tNTEyIF9fVywgX19tbWFzazE2IF9fSywgX19tNTEyIF9fQSkKewogIHJldHVybiAoX19tNTEyKV9tbTUxMl9tYXNrX2FuZF9lcGkzMigoX19tNTEyaSlfX1csIF9fSywgX21tNTEyX3NldDFfZXBpMzIoMHg3RkZGRkZGRiksKF9fbTUxMmkpX19BKSA7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9hYnNfcGQoX19tNTEyZCBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmQpX21tNTEyX2FuZF9lcGk2NChfbW01MTJfc2V0MV9lcGk2NCgweDdGRkZGRkZGRkZGRkZGRkYpLChfX3Y4ZGkpX19BKSA7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2Fic19wZChfX201MTJkIF9fVywgX19tbWFzazggX19LLCBfX201MTJkIF9fQSkKewogIHJldHVybiAoX19tNTEyZClfbW01MTJfbWFza19hbmRfZXBpNjQoKF9fdjhkaSlfX1csIF9fSywgX21tNTEyX3NldDFfZXBpNjQoMHg3RkZGRkZGRkZGRkZGRkZGKSwoX192OGRpKV9fQSk7Cn0KCi8qIFZlY3Rvci1yZWR1Y3Rpb24gYXJpdGhtZXRpYyBhY2NlcHRzIHZlY3RvcnMgYXMgaW5wdXRzIGFuZCBwcm9kdWNlcyBzY2FsYXJzIGFzCiAqIG91dHB1dHMuIFRoaXMgY2xhc3Mgb2YgdmVjdG9yIG9wZXJhdGlvbiBmb3JtcyB0aGUgYmFzaXMgb2YgbWFueSBzY2llbnRpZmljCiAqIGNvbXB1dGF0aW9ucy4gSW4gdmVjdG9yLXJlZHVjdGlvbiBhcml0aG1ldGljLCB0aGUgZXZhbHVhdGlvbiBvcmRlciBpcwogKiBpbmRlcGVuZGVudCBvZiB0aGUgb3JkZXIgb2YgdGhlIGlucHV0IGVsZW1lbnRzIG9mIFYuCgogKiBGb3IgZmxvYXRpbmctcG9pbnQgaW50cmluc2ljczoKICogMS4gV2hlbiB1c2luZyBmYWRkL2ZtdWwgaW50cmluc2ljcywgdGhlIG9yZGVyIG9mIG9wZXJhdGlvbnMgd2l0aGluIHRoZQogKiB2ZWN0b3IgaXMgdW5zcGVjaWZpZWQgKGFzc29jaWF0aXZlIG1hdGgpLgogKiAyLiBXaGVuIHVzaW5nIGZtaW4vZm1heCBpbnRyaW5zaWNzLCBOYU4gb3IgLTAuMCBlbGVtZW50cyB3aXRoaW4gdGhlIHZlY3RvcgogKiBwcm9kdWNlIHVuc3BlY2lmaWVkIHJlc3VsdHMuCgogKiBVc2VkIGJpc2VjdGlvbiBtZXRob2QuIEF0IGVhY2ggc3RlcCwgd2UgcGFydGl0aW9uIHRoZSB2ZWN0b3Igd2l0aCBwcmV2aW91cwogKiBzdGVwIGluIGhhbGYsIGFuZCB0aGUgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCBvbiBpdHMgdHdvIGhhbHZlcy4KICogVGhpcyB0YWtlcyBsb2cyKG4pIHN0ZXBzIHdoZXJlIG4gaXMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgdmVjdG9yLgogKi8KCnN0YXRpYyBfX2lubGluZV9fIGxvbmcgbG9uZyBfX0RFRkFVTFRfRk5fQVRUUlM1MTIgX21tNTEyX3JlZHVjZV9hZGRfZXBpNjQoX19tNTEyaSBfX1cpIHsKICByZXR1cm4gX19idWlsdGluX2lhMzJfcmVkdWNlX2FkZF9xNTEyKF9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGxvbmcgbG9uZyBfX0RFRkFVTFRfRk5fQVRUUlM1MTIgX21tNTEyX3JlZHVjZV9tdWxfZXBpNjQoX19tNTEyaSBfX1cpIHsKICByZXR1cm4gX19idWlsdGluX2lhMzJfcmVkdWNlX211bF9xNTEyKF9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGxvbmcgbG9uZyBfX0RFRkFVTFRfRk5fQVRUUlM1MTIgX21tNTEyX3JlZHVjZV9hbmRfZXBpNjQoX19tNTEyaSBfX1cpIHsKICByZXR1cm4gX19idWlsdGluX2lhMzJfcmVkdWNlX2FuZF9xNTEyKF9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGxvbmcgbG9uZyBfX0RFRkFVTFRfRk5fQVRUUlM1MTIgX21tNTEyX3JlZHVjZV9vcl9lcGk2NChfX201MTJpIF9fVykgewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9yZWR1Y2Vfb3JfcTUxMihfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBsb25nIGxvbmcgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX3JlZHVjZV9hZGRfZXBpNjQoX19tbWFzazggX19NLCBfX201MTJpIF9fVykgewogIF9fVyA9IF9tbTUxMl9tYXNrel9tb3ZfZXBpNjQoX19NLCBfX1cpOwogIHJldHVybiBfX2J1aWx0aW5faWEzMl9yZWR1Y2VfYWRkX3E1MTIoX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gbG9uZyBsb25nIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19yZWR1Y2VfbXVsX2VwaTY0KF9fbW1hc2s4IF9fTSwgX19tNTEyaSBfX1cpIHsKICBfX1cgPSBfbW01MTJfbWFza19tb3ZfZXBpNjQoX21tNTEyX3NldDFfZXBpNjQoMSksIF9fTSwgX19XKTsKICByZXR1cm4gX19idWlsdGluX2lhMzJfcmVkdWNlX211bF9xNTEyKF9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGxvbmcgbG9uZyBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfcmVkdWNlX2FuZF9lcGk2NChfX21tYXNrOCBfX00sIF9fbTUxMmkgX19XKSB7CiAgX19XID0gX21tNTEyX21hc2tfbW92X2VwaTY0KF9tbTUxMl9zZXQxX2VwaTY0KH4wVUxMKSwgX19NLCBfX1cpOwogIHJldHVybiBfX2J1aWx0aW5faWEzMl9yZWR1Y2VfYW5kX3E1MTIoX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gbG9uZyBsb25nIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19yZWR1Y2Vfb3JfZXBpNjQoX19tbWFzazggX19NLCBfX201MTJpIF9fVykgewogIF9fVyA9IF9tbTUxMl9tYXNrel9tb3ZfZXBpNjQoX19NLCBfX1cpOwogIHJldHVybiBfX2J1aWx0aW5faWEzMl9yZWR1Y2Vfb3JfcTUxMihfX1cpOwp9CgovLyAtMC4wIGlzIHVzZWQgdG8gaWdub3JlIHRoZSBzdGFydCB2YWx1ZSBzaW5jZSBpdCBpcyB0aGUgbmV1dHJhbCB2YWx1ZSBvZgovLyBmbG9hdGluZyBwb2ludCBhZGRpdGlvbi4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHBsZWFzZSByZWZlciB0bwovLyBodHRwczovL2xsdm0ub3JnL2RvY3MvTGFuZ1JlZi5odG1sI2xsdm0tdmVjdG9yLXJlZHVjZS1mYWRkLWludHJpbnNpYwpzdGF0aWMgX19pbmxpbmVfXyBkb3VibGUgX19ERUZBVUxUX0ZOX0FUVFJTNTEyIF9tbTUxMl9yZWR1Y2VfYWRkX3BkKF9fbTUxMmQgX19XKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3JlZHVjZV9mYWRkX3BkNTEyKC0wLjAsIF9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGRvdWJsZSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIgX21tNTEyX3JlZHVjZV9tdWxfcGQoX19tNTEyZCBfX1cpIHsKICByZXR1cm4gX19idWlsdGluX2lhMzJfcmVkdWNlX2ZtdWxfcGQ1MTIoMS4wLCBfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBkb3VibGUgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX3JlZHVjZV9hZGRfcGQoX19tbWFzazggX19NLCBfX201MTJkIF9fVykgewogIF9fVyA9IF9tbTUxMl9tYXNrel9tb3ZfcGQoX19NLCBfX1cpOwogIHJldHVybiBfX2J1aWx0aW5faWEzMl9yZWR1Y2VfZmFkZF9wZDUxMigtMC4wLCBfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBkb3VibGUgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX3JlZHVjZV9tdWxfcGQoX19tbWFzazggX19NLCBfX201MTJkIF9fVykgewogIF9fVyA9IF9tbTUxMl9tYXNrX21vdl9wZChfbW01MTJfc2V0MV9wZCgxLjApLCBfX00sIF9fVyk7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3JlZHVjZV9mbXVsX3BkNTEyKDEuMCwgX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfcmVkdWNlX2FkZF9lcGkzMihfX201MTJpIF9fVykgewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9yZWR1Y2VfYWRkX2Q1MTIoKF9fdjE2c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfcmVkdWNlX211bF9lcGkzMihfX201MTJpIF9fVykgewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9yZWR1Y2VfbXVsX2Q1MTIoKF9fdjE2c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfcmVkdWNlX2FuZF9lcGkzMihfX201MTJpIF9fVykgewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9yZWR1Y2VfYW5kX2Q1MTIoKF9fdjE2c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfcmVkdWNlX29yX2VwaTMyKF9fbTUxMmkgX19XKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3JlZHVjZV9vcl9kNTEyKChfX3YxNnNpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfcmVkdWNlX2FkZF9lcGkzMiggX19tbWFzazE2IF9fTSwgX19tNTEyaSBfX1cpIHsKICBfX1cgPSBfbW01MTJfbWFza3pfbW92X2VwaTMyKF9fTSwgX19XKTsKICByZXR1cm4gX19idWlsdGluX2lhMzJfcmVkdWNlX2FkZF9kNTEyKChfX3YxNnNpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfcmVkdWNlX211bF9lcGkzMiggX19tbWFzazE2IF9fTSwgX19tNTEyaSBfX1cpIHsKICBfX1cgPSBfbW01MTJfbWFza19tb3ZfZXBpMzIoX21tNTEyX3NldDFfZXBpMzIoMSksIF9fTSwgX19XKTsKICByZXR1cm4gX19idWlsdGluX2lhMzJfcmVkdWNlX211bF9kNTEyKChfX3YxNnNpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfcmVkdWNlX2FuZF9lcGkzMiggX19tbWFzazE2IF9fTSwgX19tNTEyaSBfX1cpIHsKICBfX1cgPSBfbW01MTJfbWFza19tb3ZfZXBpMzIoX21tNTEyX3NldDFfZXBpMzIofjBVKSwgX19NLCBfX1cpOwogIHJldHVybiBfX2J1aWx0aW5faWEzMl9yZWR1Y2VfYW5kX2Q1MTIoKF9fdjE2c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19yZWR1Y2Vfb3JfZXBpMzIoX19tbWFzazE2IF9fTSwgX19tNTEyaSBfX1cpIHsKICBfX1cgPSBfbW01MTJfbWFza3pfbW92X2VwaTMyKF9fTSwgX19XKTsKICByZXR1cm4gX19idWlsdGluX2lhMzJfcmVkdWNlX29yX2Q1MTIoKF9fdjE2c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gZmxvYXQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9yZWR1Y2VfYWRkX3BzKF9fbTUxMiBfX1cpIHsKICByZXR1cm4gX19idWlsdGluX2lhMzJfcmVkdWNlX2ZhZGRfcHM1MTIoLTAuMGYsIF9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGZsb2F0IF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfcmVkdWNlX211bF9wcyhfX201MTIgX19XKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3JlZHVjZV9mbXVsX3BzNTEyKDEuMGYsIF9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGZsb2F0IF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19yZWR1Y2VfYWRkX3BzKF9fbW1hc2sxNiBfX00sIF9fbTUxMiBfX1cpIHsKICBfX1cgPSBfbW01MTJfbWFza3pfbW92X3BzKF9fTSwgX19XKTsKICByZXR1cm4gX19idWlsdGluX2lhMzJfcmVkdWNlX2ZhZGRfcHM1MTIoLTAuMGYsIF9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGZsb2F0IF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19yZWR1Y2VfbXVsX3BzKF9fbW1hc2sxNiBfX00sIF9fbTUxMiBfX1cpIHsKICBfX1cgPSBfbW01MTJfbWFza19tb3ZfcHMoX21tNTEyX3NldDFfcHMoMS4wZiksIF9fTSwgX19XKTsKICByZXR1cm4gX19idWlsdGluX2lhMzJfcmVkdWNlX2ZtdWxfcHM1MTIoMS4wZiwgX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gbG9uZyBsb25nIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfcmVkdWNlX21heF9lcGk2NChfX201MTJpIF9fVikgewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9yZWR1Y2Vfc21heF9xNTEyKF9fVik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3JlZHVjZV9tYXhfZXB1NjQoX19tNTEyaSBfX1YpIHsKICByZXR1cm4gX19idWlsdGluX2lhMzJfcmVkdWNlX3VtYXhfcTUxMihfX1YpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBsb25nIGxvbmcgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9yZWR1Y2VfbWluX2VwaTY0KF9fbTUxMmkgX19WKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3JlZHVjZV9zbWluX3E1MTIoX19WKTsKfQoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgbG9uZyBsb25nIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfcmVkdWNlX21pbl9lcHU2NChfX201MTJpIF9fVikgewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9yZWR1Y2VfdW1pbl9xNTEyKF9fVik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGxvbmcgbG9uZyBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfcmVkdWNlX21heF9lcGk2NChfX21tYXNrOCBfX00sIF9fbTUxMmkgX19WKSB7CiAgX19WID0gX21tNTEyX21hc2tfbW92X2VwaTY0KF9tbTUxMl9zZXQxX2VwaTY0KC1fX0xPTkdfTE9OR19NQVhfXyAtIDFMTCksIF9fTSwgX19WKTsKICByZXR1cm4gX19idWlsdGluX2lhMzJfcmVkdWNlX3NtYXhfcTUxMihfX1YpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nIGxvbmcgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX3JlZHVjZV9tYXhfZXB1NjQoX19tbWFzazggX19NLCBfX201MTJpIF9fVikgewogIF9fViA9IF9tbTUxMl9tYXNrel9tb3ZfZXBpNjQoX19NLCBfX1YpOwogIHJldHVybiBfX2J1aWx0aW5faWEzMl9yZWR1Y2VfdW1heF9xNTEyKF9fVik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGxvbmcgbG9uZyBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfcmVkdWNlX21pbl9lcGk2NChfX21tYXNrOCBfX00sIF9fbTUxMmkgX19WKSB7CiAgX19WID0gX21tNTEyX21hc2tfbW92X2VwaTY0KF9tbTUxMl9zZXQxX2VwaTY0KF9fTE9OR19MT05HX01BWF9fKSwgX19NLCBfX1YpOwogIHJldHVybiBfX2J1aWx0aW5faWEzMl9yZWR1Y2Vfc21pbl9xNTEyKF9fVik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfcmVkdWNlX21pbl9lcHU2NChfX21tYXNrOCBfX00sIF9fbTUxMmkgX19WKSB7CiAgX19WID0gX21tNTEyX21hc2tfbW92X2VwaTY0KF9tbTUxMl9zZXQxX2VwaTY0KH4wVUxMKSwgX19NLCBfX1YpOwogIHJldHVybiBfX2J1aWx0aW5faWEzMl9yZWR1Y2VfdW1pbl9xNTEyKF9fVik7Cn0Kc3RhdGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfcmVkdWNlX21heF9lcGkzMihfX201MTJpIF9fVikgewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9yZWR1Y2Vfc21heF9kNTEyKChfX3YxNnNpKV9fVik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGludCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3JlZHVjZV9tYXhfZXB1MzIoX19tNTEyaSBfX1YpIHsKICByZXR1cm4gX19idWlsdGluX2lhMzJfcmVkdWNlX3VtYXhfZDUxMigoX192MTZzaSlfX1YpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9yZWR1Y2VfbWluX2VwaTMyKF9fbTUxMmkgX19WKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3JlZHVjZV9zbWluX2Q1MTIoKF9fdjE2c2kpX19WKTsKfQoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgaW50IF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfcmVkdWNlX21pbl9lcHUzMihfX201MTJpIF9fVikgewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9yZWR1Y2VfdW1pbl9kNTEyKChfX3YxNnNpKV9fVik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfcmVkdWNlX21heF9lcGkzMihfX21tYXNrMTYgX19NLCBfX201MTJpIF9fVikgewogIF9fViA9IF9tbTUxMl9tYXNrX21vdl9lcGkzMihfbW01MTJfc2V0MV9lcGkzMigtX19JTlRfTUFYX18gLSAxKSwgX19NLCBfX1YpOwogIHJldHVybiBfX2J1aWx0aW5faWEzMl9yZWR1Y2Vfc21heF9kNTEyKChfX3YxNnNpKV9fVik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGludCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfcmVkdWNlX21heF9lcHUzMihfX21tYXNrMTYgX19NLCBfX201MTJpIF9fVikgewogIF9fViA9IF9tbTUxMl9tYXNrel9tb3ZfZXBpMzIoX19NLCBfX1YpOwogIHJldHVybiBfX2J1aWx0aW5faWEzMl9yZWR1Y2VfdW1heF9kNTEyKChfX3YxNnNpKV9fVik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfcmVkdWNlX21pbl9lcGkzMihfX21tYXNrMTYgX19NLCBfX201MTJpIF9fVikgewogIF9fViA9IF9tbTUxMl9tYXNrX21vdl9lcGkzMihfbW01MTJfc2V0MV9lcGkzMihfX0lOVF9NQVhfXyksIF9fTSwgX19WKTsKICByZXR1cm4gX19idWlsdGluX2lhMzJfcmVkdWNlX3NtaW5fZDUxMigoX192MTZzaSlfX1YpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX3JlZHVjZV9taW5fZXB1MzIoX19tbWFzazE2IF9fTSwgX19tNTEyaSBfX1YpIHsKICBfX1YgPSBfbW01MTJfbWFza19tb3ZfZXBpMzIoX21tNTEyX3NldDFfZXBpMzIofjBVKSwgX19NLCBfX1YpOwogIHJldHVybiBfX2J1aWx0aW5faWEzMl9yZWR1Y2VfdW1pbl9kNTEyKChfX3YxNnNpKV9fVik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGRvdWJsZSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3JlZHVjZV9tYXhfcGQoX19tNTEyZCBfX1YpIHsKICByZXR1cm4gX19idWlsdGluX2lhMzJfcmVkdWNlX2ZtYXhfcGQ1MTIoX19WKTsKfQoKc3RhdGljIF9faW5saW5lX18gZG91YmxlIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfcmVkdWNlX21pbl9wZChfX201MTJkIF9fVikgewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9yZWR1Y2VfZm1pbl9wZDUxMihfX1YpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBkb3VibGUgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX3JlZHVjZV9tYXhfcGQoX19tbWFzazggX19NLCBfX201MTJkIF9fVikgewogIF9fViA9IF9tbTUxMl9tYXNrX21vdl9wZChfbW01MTJfc2V0MV9wZCgtX19idWlsdGluX2luZigpKSwgX19NLCBfX1YpOwogIHJldHVybiBfX2J1aWx0aW5faWEzMl9yZWR1Y2VfZm1heF9wZDUxMihfX1YpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBkb3VibGUgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX3JlZHVjZV9taW5fcGQoX19tbWFzazggX19NLCBfX201MTJkIF9fVikgewogIF9fViA9IF9tbTUxMl9tYXNrX21vdl9wZChfbW01MTJfc2V0MV9wZChfX2J1aWx0aW5faW5mKCkpLCBfX00sIF9fVik7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3JlZHVjZV9mbWluX3BkNTEyKF9fVik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGZsb2F0IF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfcmVkdWNlX21heF9wcyhfX201MTIgX19WKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3JlZHVjZV9mbWF4X3BzNTEyKF9fVik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGZsb2F0IF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfcmVkdWNlX21pbl9wcyhfX201MTIgX19WKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3JlZHVjZV9mbWluX3BzNTEyKF9fVik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGZsb2F0IF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19yZWR1Y2VfbWF4X3BzKF9fbW1hc2sxNiBfX00sIF9fbTUxMiBfX1YpIHsKICBfX1YgPSBfbW01MTJfbWFza19tb3ZfcHMoX21tNTEyX3NldDFfcHMoLV9fYnVpbHRpbl9pbmZmKCkpLCBfX00sIF9fVik7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3JlZHVjZV9mbWF4X3BzNTEyKF9fVik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGZsb2F0IF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19yZWR1Y2VfbWluX3BzKF9fbW1hc2sxNiBfX00sIF9fbTUxMiBfX1YpIHsKICBfX1YgPSBfbW01MTJfbWFza19tb3ZfcHMoX21tNTEyX3NldDFfcHMoX19idWlsdGluX2luZmYoKSksIF9fTSwgX19WKTsKICByZXR1cm4gX19idWlsdGluX2lhMzJfcmVkdWNlX2ZtaW5fcHM1MTIoX19WKTsKfQoKLy8vIE1vdmVzIHRoZSBsZWFzdCBzaWduaWZpY2FudCAzMiBiaXRzIG9mIGEgdmVjdG9yIG9mIFsxNiB4IGkzMl0gdG8gYQovLy8gICAgMzItYml0IHNpZ25lZCBpbnRlZ2VyIHZhbHVlLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZEIC8gTU9WRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX0EKLy8vICAgIEEgdmVjdG9yIG9mIFsxNiB4IGkzMl0uIFRoZSBsZWFzdCBzaWduaWZpY2FudCAzMiBiaXRzIGFyZSBtb3ZlZCB0byB0aGUKLy8vICAgIGRlc3RpbmF0aW9uLgovLy8gXHJldHVybnMgQSAzMi1iaXQgc2lnbmVkIGludGVnZXIgY29udGFpbmluZyB0aGUgbW92ZWQgdmFsdWUuCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2N2dHNpNTEyX3NpMzIoX19tNTEyaSBfX0EpIHsKICBfX3YxNnNpIF9fYiA9IChfX3YxNnNpKV9fQTsKICByZXR1cm4gX19iWzBdOwp9CgovLy8gTG9hZHMgOCBkb3VibGUtcHJlY2lzaW9uICg2NC1iaXQpIGZsb2F0aW5nLXBvaW50IGVsZW1lbnRzIHN0b3JlZCBhdCBtZW1vcnkKLy8vIGxvY2F0aW9ucyBzdGFydGluZyBhdCBsb2NhdGlvbiBcYSBiYXNlX2FkZHIgYXQgcGFja2VkIDMyLWJpdCBpbnRlZ2VyIGluZGljZXMKLy8vIHN0b3JlZCBpbiB0aGUgbG93ZXIgaGFsZiBvZiBcYSB2aW5kZXggc2NhbGVkIGJ5IFxhIHNjYWxlIHRoZW0gaW4gZHN0LgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkdBVEhFUkRQRCA8L2M+IGluc3RydWN0aW9ucy4KLy8vCi8vLyBcb3BlcmF0aW9uCi8vLyBGT1IgaiA6PSAwIHRvIDcKLy8vICAgaSA6PSBqKjY0Ci8vLyAgIG0gOj0gaiozMgovLy8gICBhZGRyIDo9IGJhc2VfYWRkciArIFNpZ25FeHRlbmQ2NCh2aW5kZXhbbSszMTptXSkgKiBaZXJvRXh0ZW5kNjQoc2NhbGUpICogOAovLy8gICBkc3RbaSs2MzppXSA6PSBNRU1bYWRkcis2MzphZGRyXQovLy8gRU5ERk9SCi8vLyBkc3RbTUFYOjUxMl0gOj0gMAovLy8gXGVuZG9wZXJhdGlvbgojZGVmaW5lIF9tbTUxMl9pMzJsb2dhdGhlcl9wZCh2aW5kZXgsIGJhc2VfYWRkciwgc2NhbGUpICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9tbTUxMl9pMzJnYXRoZXJfcGQoX21tNTEyX2Nhc3RzaTUxMl9zaTI1Nih2aW5kZXgpLCAoYmFzZV9hZGRyKSwgKHNjYWxlKSkKCi8vLyBMb2FkcyA4IGRvdWJsZS1wcmVjaXNpb24gKDY0LWJpdCkgZmxvYXRpbmctcG9pbnQgZWxlbWVudHMgZnJvbSBtZW1vcnkKLy8vIHN0YXJ0aW5nIGF0IGxvY2F0aW9uIFxhIGJhc2VfYWRkciBhdCBwYWNrZWQgMzItYml0IGludGVnZXIgaW5kaWNlcyBzdG9yZWQgaW4KLy8vIHRoZSBsb3dlciBoYWxmIG9mIFxhIHZpbmRleCBzY2FsZWQgYnkgXGEgc2NhbGUgaW50byBkc3QgdXNpbmcgd3JpdGVtYXNrCi8vLyBcYSBtYXNrIChlbGVtZW50cyBhcmUgY29waWVkIGZyb20gXGEgc3JjIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgbWFzayBiaXQgaXMKLy8vIG5vdCBzZXQpLgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkdBVEhFUkRQRCA8L2M+IGluc3RydWN0aW9ucy4KLy8vCi8vLyBcb3BlcmF0aW9uCi8vLyBGT1IgaiA6PSAwIHRvIDcKLy8vICAgaSA6PSBqKjY0Ci8vLyAgIG0gOj0gaiozMgovLy8gICBJRiBtYXNrW2pdCi8vLyAgICAgYWRkciA6PSBiYXNlX2FkZHIgKyBTaWduRXh0ZW5kNjQodmluZGV4W20rMzE6bV0pICogWmVyb0V4dGVuZDY0KHNjYWxlKSAqIDgKLy8vICAgICBkc3RbaSs2MzppXSA6PSBNRU1bYWRkcis2MzphZGRyXQovLy8gICBFTFNFCi8vLyAgICAgZHN0W2krNjM6aV0gOj0gc3JjW2krNjM6aV0KLy8vICAgRkkKLy8vIEVOREZPUgovLy8gZHN0W01BWDo1MTJdIDo9IDAKLy8vIFxlbmRvcGVyYXRpb24KI2RlZmluZSBfbW01MTJfbWFza19pMzJsb2dhdGhlcl9wZChzcmMsIG1hc2ssIHZpbmRleCwgYmFzZV9hZGRyLCBzY2FsZSkgICAgICAgIFwKICBfbW01MTJfbWFza19pMzJnYXRoZXJfcGQoKHNyYyksIChtYXNrKSwgX21tNTEyX2Nhc3RzaTUxMl9zaTI1Nih2aW5kZXgpLCAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJhc2VfYWRkciksIChzY2FsZSkpCgovLy8gTG9hZHMgOCA2NC1iaXQgaW50ZWdlciBlbGVtZW50cyBmcm9tIG1lbW9yeSBzdGFydGluZyBhdCBsb2NhdGlvbiBcYSBiYXNlX2FkZHIKLy8vIGF0IHBhY2tlZCAzMi1iaXQgaW50ZWdlciBpbmRpY2VzIHN0b3JlZCBpbiB0aGUgbG93ZXIgaGFsZiBvZiBcYSB2aW5kZXgKLy8vIHNjYWxlZCBieSBcYSBzY2FsZSBhbmQgc3RvcmVzIHRoZW0gaW4gZHN0LgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBHQVRIRVJEUSA8L2M+IGluc3RydWN0aW9ucy4KLy8vCi8vLyBcb3BlcmF0aW9uCi8vLyBGT1IgaiA6PSAwIHRvIDcKLy8vICAgaSA6PSBqKjY0Ci8vLyAgIG0gOj0gaiozMgovLy8gICBhZGRyIDo9IGJhc2VfYWRkciArIFNpZ25FeHRlbmQ2NCh2aW5kZXhbbSszMTptXSkgKiBaZXJvRXh0ZW5kNjQoc2NhbGUpICogOAovLy8gICBkc3RbaSs2MzppXSA6PSBNRU1bYWRkcis2MzphZGRyXQovLy8gRU5ERk9SCi8vLyBkc3RbTUFYOjUxMl0gOj0gMAovLy8gXGVuZG9wZXJhdGlvbgojZGVmaW5lIF9tbTUxMl9pMzJsb2dhdGhlcl9lcGk2NCh2aW5kZXgsIGJhc2VfYWRkciwgc2NhbGUpICAgICAgICAgICAgICAgICAgICAgXAogIF9tbTUxMl9pMzJnYXRoZXJfZXBpNjQoX21tNTEyX2Nhc3RzaTUxMl9zaTI1Nih2aW5kZXgpLCAoYmFzZV9hZGRyKSwgKHNjYWxlKSkKCi8vLyBMb2FkcyA4IDY0LWJpdCBpbnRlZ2VyIGVsZW1lbnRzIGZyb20gbWVtb3J5IHN0YXJ0aW5nIGF0IGxvY2F0aW9uIFxhIGJhc2VfYWRkcgovLy8gYXQgcGFja2VkIDMyLWJpdCBpbnRlZ2VyIGluZGljZXMgc3RvcmVkIGluIHRoZSBsb3dlciBoYWxmIG9mIFxhIHZpbmRleAovLy8gc2NhbGVkIGJ5IFxhIHNjYWxlIGFuZCBzdG9yZXMgdGhlbSBpbiBkc3QgdXNpbmcgd3JpdGVtYXNrIFxhIG1hc2sgKGVsZW1lbnRzCi8vLyBhcmUgY29waWVkIGZyb20gXGEgc3JjIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgbWFzayBiaXQgaXMgbm90IHNldCkuCi8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEdBVEhFUkRRIDwvYz4gaW5zdHJ1Y3Rpb25zLgovLy8KLy8vIFxvcGVyYXRpb24KLy8vIEZPUiBqIDo9IDAgdG8gNwovLy8gICBpIDo9IGoqNjQKLy8vICAgbSA6PSBqKjMyCi8vLyAgIElGIG1hc2tbal0KLy8vICAgICBhZGRyIDo9IGJhc2VfYWRkciArIFNpZ25FeHRlbmQ2NCh2aW5kZXhbbSszMTptXSkgKiBaZXJvRXh0ZW5kNjQoc2NhbGUpICogOAovLy8gICAgIGRzdFtpKzYzOmldIDo9IE1FTVthZGRyKzYzOmFkZHJdCi8vLyAgIEVMU0UKLy8vICAgICBkc3RbaSs2MzppXSA6PSBzcmNbaSs2MzppXQovLy8gICBGSQovLy8gRU5ERk9SCi8vLyBkc3RbTUFYOjUxMl0gOj0gMAovLy8gXGVuZG9wZXJhdGlvbgojZGVmaW5lIF9tbTUxMl9tYXNrX2kzMmxvZ2F0aGVyX2VwaTY0KHNyYywgbWFzaywgdmluZGV4LCBiYXNlX2FkZHIsIHNjYWxlKSAgICAgXAogIF9tbTUxMl9tYXNrX2kzMmdhdGhlcl9lcGk2NCgoc3JjKSwgKG1hc2spLCBfbW01MTJfY2FzdHNpNTEyX3NpMjU2KHZpbmRleCksICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmFzZV9hZGRyKSwgKHNjYWxlKSkKCi8vLyBTdG9yZXMgOCBwYWNrZWQgZG91YmxlLXByZWNpc2lvbiAoNjQtYml0KSBmbG9hdGluZy1wb2ludCBlbGVtZW50cyBpbiBcYSB2MQovLy8gYW5kIHRvIG1lbW9yeSBsb2NhdGlvbnMgc3RhcnRpbmcgYXQgbG9jYXRpb24gXGEgYmFzZV9hZGRyIGF0IHBhY2tlZCAzMi1iaXQKLy8vIGludGVnZXIgaW5kaWNlcyBzdG9yZWQgaW4gXGEgdmluZGV4IHNjYWxlZCBieSBcYSBzY2FsZS4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZTQ0FUVEVSRFBEIDwvYz4gaW5zdHJ1Y3Rpb25zLgovLy8KLy8vIFxvcGVyYXRpb24KLy8vIEZPUiBqIDo9IDAgdG8gNwovLy8gICBpIDo9IGoqNjQKLy8vICAgbSA6PSBqKjMyCi8vLyAgIGFkZHIgOj0gYmFzZV9hZGRyICsgU2lnbkV4dGVuZDY0KHZpbmRleFttKzMxOm1dKSAqIFplcm9FeHRlbmQ2NChzY2FsZSkgKiA4Ci8vLyAgIE1FTVthZGRyKzYzOmFkZHJdIDo9IHYxW2krNjM6aV0KLy8vIEVOREZPUgovLy8gXGVuZG9wZXJhdGlvbgojZGVmaW5lIF9tbTUxMl9pMzJsb3NjYXR0ZXJfcGQoYmFzZV9hZGRyLCB2aW5kZXgsIHYxLCBzY2FsZSkgICAgICAgICAgICAgICAgICAgXAogIF9tbTUxMl9pMzJzY2F0dGVyX3BkKChiYXNlX2FkZHIpLCBfbW01MTJfY2FzdHNpNTEyX3NpMjU2KHZpbmRleCksICh2MSksIChzY2FsZSkpCgovLy8gU3RvcmVzIDggcGFja2VkIGRvdWJsZS1wcmVjaXNpb24gKDY0LWJpdCkgZmxvYXRpbmctcG9pbnQgZWxlbWVudHMgaW4gXGEgdjEKLy8vIHRvIG1lbW9yeSBsb2NhdGlvbnMgc3RhcnRpbmcgYXQgbG9jYXRpb24gXGEgYmFzZV9hZGRyIGF0IHBhY2tlZCAzMi1iaXQKLy8vIGludGVnZXIgaW5kaWNlcyBzdG9yZWQgaW4gXGEgdmluZGV4IHNjYWxlZCBieSBcYSBzY2FsZS4gT25seSB0aG9zZSBlbGVtZW50cwovLy8gd2hvc2UgY29ycmVzcG9uZGluZyBtYXNrIGJpdCBpcyBzZXQgaW4gd3JpdGVtYXNrIFxhIG1hc2sgYXJlIHdyaXR0ZW4gdG8KLy8vIG1lbW9yeS4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZTQ0FUVEVSRFBEIDwvYz4gaW5zdHJ1Y3Rpb25zLgovLy8KLy8vIFxvcGVyYXRpb24KLy8vIEZPUiBqIDo9IDAgdG8gNwovLy8gICBpIDo9IGoqNjQKLy8vICAgbSA6PSBqKjMyCi8vLyAgIElGIG1hc2tbal0KLy8vICAgICBhZGRyIDo9IGJhc2VfYWRkciArIFNpZ25FeHRlbmQ2NCh2aW5kZXhbbSszMTptXSkgKiBaZXJvRXh0ZW5kNjQoc2NhbGUpICogOAovLy8gICAgIE1FTVthZGRyKzYzOmFkZHJdIDo9IGFbaSs2MzppXQovLy8gICBGSQovLy8gRU5ERk9SCi8vLyBcZW5kb3BlcmF0aW9uCiNkZWZpbmUgX21tNTEyX21hc2tfaTMybG9zY2F0dGVyX3BkKGJhc2VfYWRkciwgbWFzaywgdmluZGV4LCB2MSwgc2NhbGUpICAgICAgICBcCiAgX21tNTEyX21hc2tfaTMyc2NhdHRlcl9wZCgoYmFzZV9hZGRyKSwgKG1hc2spLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbW01MTJfY2FzdHNpNTEyX3NpMjU2KHZpbmRleCksICh2MSksIChzY2FsZSkpCgovLy8gU3RvcmVzIDggcGFja2VkIDY0LWJpdCBpbnRlZ2VyIGVsZW1lbnRzIGxvY2F0ZWQgaW4gXGEgdjEgYW5kIHN0b3JlcyB0aGVtIGluCi8vLyBtZW1vcnkgbG9jYXRpb25zIHN0YXJ0aW5nIGF0IGxvY2F0aW9uIFxhIGJhc2VfYWRkciBhdCBwYWNrZWQgMzItYml0IGludGVnZXIKLy8vIGluZGljZXMgc3RvcmVkIGluIFxhIHZpbmRleCBzY2FsZWQgYnkgXGEgc2NhbGUuCi8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFNDQVRURVJEUSA8L2M+IGluc3RydWN0aW9ucy4KLy8vCi8vLyBcb3BlcmF0aW9uCi8vLyBGT1IgaiA6PSAwIHRvIDcKLy8vICAgaSA6PSBqKjY0Ci8vLyAgIG0gOj0gaiozMgovLy8gICBhZGRyIDo9IGJhc2VfYWRkciArIFNpZ25FeHRlbmQ2NCh2aW5kZXhbbSszMTptXSkgKiBaZXJvRXh0ZW5kNjQoc2NhbGUpICogOAovLy8gICBNRU1bYWRkcis2MzphZGRyXSA6PSBhW2krNjM6aV0KLy8vIEVOREZPUgovLy8gXGVuZG9wZXJhdGlvbgojZGVmaW5lIF9tbTUxMl9pMzJsb3NjYXR0ZXJfZXBpNjQoYmFzZV9hZGRyLCB2aW5kZXgsIHYxLCBzY2FsZSkgICAgICAgICAgICAgICAgXAogIF9tbTUxMl9pMzJzY2F0dGVyX2VwaTY0KChiYXNlX2FkZHIpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgIF9tbTUxMl9jYXN0c2k1MTJfc2kyNTYodmluZGV4KSwgKHYxKSwgKHNjYWxlKSkKCi8vLyBTdG9yZXMgOCBwYWNrZWQgNjQtYml0IGludGVnZXIgZWxlbWVudHMgbG9jYXRlZCBpbiBhIGFuZCBzdG9yZXMgdGhlbSBpbgovLy8gbWVtb3J5IGxvY2F0aW9ucyBzdGFydGluZyBhdCBsb2NhdGlvbiBcYSBiYXNlX2FkZHIgYXQgcGFja2VkIDMyLWJpdCBpbnRlZ2VyCi8vLyBpbmRpY2VzIHN0b3JlZCBpbiBcYSB2aW5kZXggc2NhbGVkIGJ5IHNjYWxlIHVzaW5nIHdyaXRlbWFzayBcYSBtYXNrIChlbGVtZW50cwovLy8gd2hvc2UgY29ycmVzcG9uZGluZyBtYXNrIGJpdCBpcyBub3Qgc2V0IGFyZSBub3Qgd3JpdHRlbiB0byBtZW1vcnkpLgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBTQ0FUVEVSRFEgPC9jPiBpbnN0cnVjdGlvbnMuCi8vLwovLy8gXG9wZXJhdGlvbgovLy8gRk9SIGogOj0gMCB0byA3Ci8vLyAgIGkgOj0gaio2NAovLy8gICBtIDo9IGoqMzIKLy8vICAgSUYgbWFza1tqXQovLy8gICAgIGFkZHIgOj0gYmFzZV9hZGRyICsgU2lnbkV4dGVuZDY0KHZpbmRleFttKzMxOm1dKSAqIFplcm9FeHRlbmQ2NChzY2FsZSkgKiA4Ci8vLyAgICAgTUVNW2FkZHIrNjM6YWRkcl0gOj0gYVtpKzYzOmldCi8vLyAgIEZJCi8vLyBFTkRGT1IKLy8vIFxlbmRvcGVyYXRpb24KI2RlZmluZSBfbW01MTJfbWFza19pMzJsb3NjYXR0ZXJfZXBpNjQoYmFzZV9hZGRyLCBtYXNrLCB2aW5kZXgsIHYxLCBzY2FsZSkgICAgIFwKICBfbW01MTJfbWFza19pMzJzY2F0dGVyX2VwaTY0KChiYXNlX2FkZHIpLCAobWFzayksICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9tbTUxMl9jYXN0c2k1MTJfc2kyNTYodmluZGV4KSwgKHYxKSwgKHNjYWxlKSkKCiN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUzEyOAojdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTCgojZW5kaWYgLyogX19BVlg1MTJGSU5UUklOX0ggKi8KAGF2eDUxMnZibWkyaW50cmluLmgAYm1paW50cmluLmgAaGV4YWdvbl9wcm90b3MuaABvbXAtdG9vbHMuaAAvKj09PS0tLS0gcmRzZWVkaW50cmluLmggLSBSRFNFRUQgaW50cmluc2ljcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqCiAqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCiAqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCgojaWYgIWRlZmluZWQgX19YODZJTlRSSU5fSCAmJiAhZGVmaW5lZCBfX0lNTUlOVFJJTl9ICiNlcnJvciAiTmV2ZXIgdXNlIDxyZHNlZWRpbnRyaW4uaD4gZGlyZWN0bHk7IGluY2x1ZGUgPHg4NmludHJpbi5oPiBpbnN0ZWFkLiIKI2VuZGlmCgojaWZuZGVmIF9fUkRTRUVESU5UUklOX0gKI2RlZmluZSBfX1JEU0VFRElOVFJJTl9ICgovKiBEZWZpbmUgdGhlIGRlZmF1bHQgYXR0cmlidXRlcyBmb3IgdGhlIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUuICovCiNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygicmRzZWVkIikpKQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRSUwpfcmRzZWVkMTZfc3RlcCh1bnNpZ25lZCBzaG9ydCAqX19wKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Jkc2VlZDE2X3N0ZXAoX19wKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRSUwpfcmRzZWVkMzJfc3RlcCh1bnNpZ25lZCBpbnQgKl9fcCkKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9yZHNlZWQzMl9zdGVwKF9fcCk7Cn0KCiNpZmRlZiBfX3g4Nl82NF9fCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMKX3Jkc2VlZDY0X3N0ZXAodW5zaWduZWQgbG9uZyBsb25nICpfX3ApCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfcmRzZWVkNjRfc3RlcChfX3ApOwp9CiNlbmRpZgoKI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUwoKI2VuZGlmIC8qIF9fUkRTRUVESU5UUklOX0ggKi8KAC8qPT09LS0tLSBzMzkwaW50cmluLmggLSBTeXN0ZW1aIGludHJpbnNpY3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKi8KCiNpZm5kZWYgX19TMzkwSU5UUklOX0gKI2RlZmluZSBfX1MzOTBJTlRSSU5fSAoKI2lmbmRlZiBfX3MzOTBfXwojZXJyb3IgIjxzMzkwaW50cmluLmg+IGlzIGZvciBzMzkwIG9ubHkiCiNlbmRpZgoKI2lmZGVmIF9fSFRNX18KI2luY2x1ZGUgPGh0bWludHJpbi5oPgojZW5kaWYKCiNpZmRlZiBfX1ZFQ19fCiNpbmNsdWRlIDx2ZWNpbnRyaW4uaD4KI2VuZGlmCgojZW5kaWYgLyogX19TMzkwSU5UUklOX0gqLwoALyo9PT0tLS0tIHRnbWF0aC5oIC0gU3RhbmRhcmQgaGVhZGVyIGZvciB0eXBlIGdlbmVyaWMgbWF0aCAtLS0tLS0tLS0tLS0tLS0tPT09KlwKICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKXCo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ki8KCiNpZm5kZWYgX19DTEFOR19UR01BVEhfSAojZGVmaW5lIF9fQ0xBTkdfVEdNQVRIX0gKCi8qIEM5OSA3LjIyIFR5cGUtZ2VuZXJpYyBtYXRoIDx0Z21hdGguaD4uICovCiNpbmNsdWRlIDxtYXRoLmg+CgovKgogKiBBbGxvdyBhZGRpdGlvbmFsIGRlZmluaXRpb25zIGFuZCBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkIHZhbHVlcyBvbiBBcHBsZQogKiBwbGF0Zm9ybXMuIFRoaXMgaXMgZG9uZSBhZnRlciAjaW5jbHVkZSA8bWF0aC5oPiB0byBhdm9pZCBkZXBjeWNsZSBjb25mbGljdHMKICogYmV0d2VlbiBsaWJjeHggYW5kIGRhcndpbiBpbiBDKysgbW9kdWxlcyBidWlsZHMuCiAqLwojaWYgZGVmaW5lZChfX0FQUExFX18pICYmIF9fU1REQ19IT1NURURfXyAmJiBfX2hhc19pbmNsdWRlX25leHQoPHRnbWF0aC5oPikKIyAgaW5jbHVkZV9uZXh0IDx0Z21hdGguaD4KI2Vsc2UKCi8qIEMrKyBoYW5kbGVzIHR5cGUgZ2VuZXJpY2l0eSB3aXRoIG92ZXJsb2FkaW5nIGluIG1hdGguaC4gKi8KI2lmbmRlZiBfX2NwbHVzcGx1cwojaW5jbHVkZSA8Y29tcGxleC5oPgoKI2RlZmluZSBfVEdfQVRUUlNwIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18pKQojZGVmaW5lIF9UR19BVFRSUyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2Fsd2F5c19pbmxpbmVfXykpCgovLyBwcm9tb3Rpb24KCnR5cGVkZWYgdm9pZCBfQXJndW1lbnRfdHlwZV9pc19ub3RfYXJpdGhtZXRpYzsKc3RhdGljIF9Bcmd1bWVudF90eXBlX2lzX25vdF9hcml0aG1ldGljIF9fdGdfcHJvbW90ZSguLi4pCiAgX19hdHRyaWJ1dGVfXygoX191bmF2YWlsYWJsZV9fLF9fb3ZlcmxvYWRhYmxlX18pKTsKc3RhdGljIGRvdWJsZSAgICAgICAgICAgICAgIF9UR19BVFRSU3AgX190Z19wcm9tb3RlKGludCk7CnN0YXRpYyBkb3VibGUgICAgICAgICAgICAgICBfVEdfQVRUUlNwIF9fdGdfcHJvbW90ZSh1bnNpZ25lZCBpbnQpOwpzdGF0aWMgZG91YmxlICAgICAgICAgICAgICAgX1RHX0FUVFJTcCBfX3RnX3Byb21vdGUobG9uZyk7CnN0YXRpYyBkb3VibGUgICAgICAgICAgICAgICBfVEdfQVRUUlNwIF9fdGdfcHJvbW90ZSh1bnNpZ25lZCBsb25nKTsKc3RhdGljIGRvdWJsZSAgICAgICAgICAgICAgIF9UR19BVFRSU3AgX190Z19wcm9tb3RlKGxvbmcgbG9uZyk7CnN0YXRpYyBkb3VibGUgICAgICAgICAgICAgICBfVEdfQVRUUlNwIF9fdGdfcHJvbW90ZSh1bnNpZ25lZCBsb25nIGxvbmcpOwpzdGF0aWMgZmxvYXQgICAgICAgICAgICAgICAgX1RHX0FUVFJTcCBfX3RnX3Byb21vdGUoZmxvYXQpOwpzdGF0aWMgZG91YmxlICAgICAgICAgICAgICAgX1RHX0FUVFJTcCBfX3RnX3Byb21vdGUoZG91YmxlKTsKc3RhdGljIGxvbmcgZG91YmxlICAgICAgICAgIF9UR19BVFRSU3AgX190Z19wcm9tb3RlKGxvbmcgZG91YmxlKTsKc3RhdGljIGZsb2F0IF9Db21wbGV4ICAgICAgIF9UR19BVFRSU3AgX190Z19wcm9tb3RlKGZsb2F0IF9Db21wbGV4KTsKc3RhdGljIGRvdWJsZSBfQ29tcGxleCAgICAgIF9UR19BVFRSU3AgX190Z19wcm9tb3RlKGRvdWJsZSBfQ29tcGxleCk7CnN0YXRpYyBsb25nIGRvdWJsZSBfQ29tcGxleCBfVEdfQVRUUlNwIF9fdGdfcHJvbW90ZShsb25nIGRvdWJsZSBfQ29tcGxleCk7CgojZGVmaW5lIF9fdGdfcHJvbW90ZTEoX194KSAgICAgICAgICAgKF9fdHlwZW9mX18oX190Z19wcm9tb3RlKF9feCkpKQojZGVmaW5lIF9fdGdfcHJvbW90ZTIoX194LCBfX3kpICAgICAgKF9fdHlwZW9mX18oX190Z19wcm9tb3RlKF9feCkgKyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3RnX3Byb21vdGUoX195KSkpCiNkZWZpbmUgX190Z19wcm9tb3RlMyhfX3gsIF9feSwgX196KSAoX190eXBlb2ZfXyhfX3RnX3Byb21vdGUoX194KSArIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fdGdfcHJvbW90ZShfX3kpICsgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX190Z19wcm9tb3RlKF9feikpKQoKLy8gYWNvcwoKc3RhdGljIGZsb2F0CiAgICBfVEdfQVRUUlMKICAgIF9fdGdfYWNvcyhmbG9hdCBfX3gpIHtyZXR1cm4gYWNvc2YoX194KTt9CgpzdGF0aWMgZG91YmxlCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfYWNvcyhkb3VibGUgX194KSB7cmV0dXJuIGFjb3MoX194KTt9CgpzdGF0aWMgbG9uZyBkb3VibGUKICAgIF9UR19BVFRSUwogICAgX190Z19hY29zKGxvbmcgZG91YmxlIF9feCkge3JldHVybiBhY29zbChfX3gpO30KCnN0YXRpYyBmbG9hdCBfQ29tcGxleAogICAgX1RHX0FUVFJTCiAgICBfX3RnX2Fjb3MoZmxvYXQgX0NvbXBsZXggX194KSB7cmV0dXJuIGNhY29zZihfX3gpO30KCnN0YXRpYyBkb3VibGUgX0NvbXBsZXgKICAgIF9UR19BVFRSUwogICAgX190Z19hY29zKGRvdWJsZSBfQ29tcGxleCBfX3gpIHtyZXR1cm4gY2Fjb3MoX194KTt9CgpzdGF0aWMgbG9uZyBkb3VibGUgX0NvbXBsZXgKICAgIF9UR19BVFRSUwogICAgX190Z19hY29zKGxvbmcgZG91YmxlIF9Db21wbGV4IF9feCkge3JldHVybiBjYWNvc2woX194KTt9CgojdW5kZWYgYWNvcwojZGVmaW5lIGFjb3MoX194KSBfX3RnX2Fjb3MoX190Z19wcm9tb3RlMSgoX194KSkoX194KSkKCi8vIGFzaW4KCnN0YXRpYyBmbG9hdAogICAgX1RHX0FUVFJTCiAgICBfX3RnX2FzaW4oZmxvYXQgX194KSB7cmV0dXJuIGFzaW5mKF9feCk7fQoKc3RhdGljIGRvdWJsZQogICAgX1RHX0FUVFJTCiAgICBfX3RnX2FzaW4oZG91YmxlIF9feCkge3JldHVybiBhc2luKF9feCk7fQoKc3RhdGljIGxvbmcgZG91YmxlCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfYXNpbihsb25nIGRvdWJsZSBfX3gpIHtyZXR1cm4gYXNpbmwoX194KTt9CgpzdGF0aWMgZmxvYXQgX0NvbXBsZXgKICAgIF9UR19BVFRSUwogICAgX190Z19hc2luKGZsb2F0IF9Db21wbGV4IF9feCkge3JldHVybiBjYXNpbmYoX194KTt9CgpzdGF0aWMgZG91YmxlIF9Db21wbGV4CiAgICBfVEdfQVRUUlMKICAgIF9fdGdfYXNpbihkb3VibGUgX0NvbXBsZXggX194KSB7cmV0dXJuIGNhc2luKF9feCk7fQoKc3RhdGljIGxvbmcgZG91YmxlIF9Db21wbGV4CiAgICBfVEdfQVRUUlMKICAgIF9fdGdfYXNpbihsb25nIGRvdWJsZSBfQ29tcGxleCBfX3gpIHtyZXR1cm4gY2FzaW5sKF9feCk7fQoKI3VuZGVmIGFzaW4KI2RlZmluZSBhc2luKF9feCkgX190Z19hc2luKF9fdGdfcHJvbW90ZTEoKF9feCkpKF9feCkpCgovLyBhdGFuCgpzdGF0aWMgZmxvYXQKICAgIF9UR19BVFRSUwogICAgX190Z19hdGFuKGZsb2F0IF9feCkge3JldHVybiBhdGFuZihfX3gpO30KCnN0YXRpYyBkb3VibGUKICAgIF9UR19BVFRSUwogICAgX190Z19hdGFuKGRvdWJsZSBfX3gpIHtyZXR1cm4gYXRhbihfX3gpO30KCnN0YXRpYyBsb25nIGRvdWJsZQogICAgX1RHX0FUVFJTCiAgICBfX3RnX2F0YW4obG9uZyBkb3VibGUgX194KSB7cmV0dXJuIGF0YW5sKF9feCk7fQoKc3RhdGljIGZsb2F0IF9Db21wbGV4CiAgICBfVEdfQVRUUlMKICAgIF9fdGdfYXRhbihmbG9hdCBfQ29tcGxleCBfX3gpIHtyZXR1cm4gY2F0YW5mKF9feCk7fQoKc3RhdGljIGRvdWJsZSBfQ29tcGxleAogICAgX1RHX0FUVFJTCiAgICBfX3RnX2F0YW4oZG91YmxlIF9Db21wbGV4IF9feCkge3JldHVybiBjYXRhbihfX3gpO30KCnN0YXRpYyBsb25nIGRvdWJsZSBfQ29tcGxleAogICAgX1RHX0FUVFJTCiAgICBfX3RnX2F0YW4obG9uZyBkb3VibGUgX0NvbXBsZXggX194KSB7cmV0dXJuIGNhdGFubChfX3gpO30KCiN1bmRlZiBhdGFuCiNkZWZpbmUgYXRhbihfX3gpIF9fdGdfYXRhbihfX3RnX3Byb21vdGUxKChfX3gpKShfX3gpKQoKLy8gYWNvc2gKCnN0YXRpYyBmbG9hdAogICAgX1RHX0FUVFJTCiAgICBfX3RnX2Fjb3NoKGZsb2F0IF9feCkge3JldHVybiBhY29zaGYoX194KTt9CgpzdGF0aWMgZG91YmxlCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfYWNvc2goZG91YmxlIF9feCkge3JldHVybiBhY29zaChfX3gpO30KCnN0YXRpYyBsb25nIGRvdWJsZQogICAgX1RHX0FUVFJTCiAgICBfX3RnX2Fjb3NoKGxvbmcgZG91YmxlIF9feCkge3JldHVybiBhY29zaGwoX194KTt9CgpzdGF0aWMgZmxvYXQgX0NvbXBsZXgKICAgIF9UR19BVFRSUwogICAgX190Z19hY29zaChmbG9hdCBfQ29tcGxleCBfX3gpIHtyZXR1cm4gY2Fjb3NoZihfX3gpO30KCnN0YXRpYyBkb3VibGUgX0NvbXBsZXgKICAgIF9UR19BVFRSUwogICAgX190Z19hY29zaChkb3VibGUgX0NvbXBsZXggX194KSB7cmV0dXJuIGNhY29zaChfX3gpO30KCnN0YXRpYyBsb25nIGRvdWJsZSBfQ29tcGxleAogICAgX1RHX0FUVFJTCiAgICBfX3RnX2Fjb3NoKGxvbmcgZG91YmxlIF9Db21wbGV4IF9feCkge3JldHVybiBjYWNvc2hsKF9feCk7fQoKI3VuZGVmIGFjb3NoCiNkZWZpbmUgYWNvc2goX194KSBfX3RnX2Fjb3NoKF9fdGdfcHJvbW90ZTEoKF9feCkpKF9feCkpCgovLyBhc2luaAoKc3RhdGljIGZsb2F0CiAgICBfVEdfQVRUUlMKICAgIF9fdGdfYXNpbmgoZmxvYXQgX194KSB7cmV0dXJuIGFzaW5oZihfX3gpO30KCnN0YXRpYyBkb3VibGUKICAgIF9UR19BVFRSUwogICAgX190Z19hc2luaChkb3VibGUgX194KSB7cmV0dXJuIGFzaW5oKF9feCk7fQoKc3RhdGljIGxvbmcgZG91YmxlCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfYXNpbmgobG9uZyBkb3VibGUgX194KSB7cmV0dXJuIGFzaW5obChfX3gpO30KCnN0YXRpYyBmbG9hdCBfQ29tcGxleAogICAgX1RHX0FUVFJTCiAgICBfX3RnX2FzaW5oKGZsb2F0IF9Db21wbGV4IF9feCkge3JldHVybiBjYXNpbmhmKF9feCk7fQoKc3RhdGljIGRvdWJsZSBfQ29tcGxleAogICAgX1RHX0FUVFJTCiAgICBfX3RnX2FzaW5oKGRvdWJsZSBfQ29tcGxleCBfX3gpIHtyZXR1cm4gY2FzaW5oKF9feCk7fQoKc3RhdGljIGxvbmcgZG91YmxlIF9Db21wbGV4CiAgICBfVEdfQVRUUlMKICAgIF9fdGdfYXNpbmgobG9uZyBkb3VibGUgX0NvbXBsZXggX194KSB7cmV0dXJuIGNhc2luaGwoX194KTt9CgojdW5kZWYgYXNpbmgKI2RlZmluZSBhc2luaChfX3gpIF9fdGdfYXNpbmgoX190Z19wcm9tb3RlMSgoX194KSkoX194KSkKCi8vIGF0YW5oCgpzdGF0aWMgZmxvYXQKICAgIF9UR19BVFRSUwogICAgX190Z19hdGFuaChmbG9hdCBfX3gpIHtyZXR1cm4gYXRhbmhmKF9feCk7fQoKc3RhdGljIGRvdWJsZQogICAgX1RHX0FUVFJTCiAgICBfX3RnX2F0YW5oKGRvdWJsZSBfX3gpIHtyZXR1cm4gYXRhbmgoX194KTt9CgpzdGF0aWMgbG9uZyBkb3VibGUKICAgIF9UR19BVFRSUwogICAgX190Z19hdGFuaChsb25nIGRvdWJsZSBfX3gpIHtyZXR1cm4gYXRhbmhsKF9feCk7fQoKc3RhdGljIGZsb2F0IF9Db21wbGV4CiAgICBfVEdfQVRUUlMKICAgIF9fdGdfYXRhbmgoZmxvYXQgX0NvbXBsZXggX194KSB7cmV0dXJuIGNhdGFuaGYoX194KTt9CgpzdGF0aWMgZG91YmxlIF9Db21wbGV4CiAgICBfVEdfQVRUUlMKICAgIF9fdGdfYXRhbmgoZG91YmxlIF9Db21wbGV4IF9feCkge3JldHVybiBjYXRhbmgoX194KTt9CgpzdGF0aWMgbG9uZyBkb3VibGUgX0NvbXBsZXgKICAgIF9UR19BVFRSUwogICAgX190Z19hdGFuaChsb25nIGRvdWJsZSBfQ29tcGxleCBfX3gpIHtyZXR1cm4gY2F0YW5obChfX3gpO30KCiN1bmRlZiBhdGFuaAojZGVmaW5lIGF0YW5oKF9feCkgX190Z19hdGFuaChfX3RnX3Byb21vdGUxKChfX3gpKShfX3gpKQoKLy8gY29zCgpzdGF0aWMgZmxvYXQKICAgIF9UR19BVFRSUwogICAgX190Z19jb3MoZmxvYXQgX194KSB7cmV0dXJuIGNvc2YoX194KTt9CgpzdGF0aWMgZG91YmxlCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfY29zKGRvdWJsZSBfX3gpIHtyZXR1cm4gY29zKF9feCk7fQoKc3RhdGljIGxvbmcgZG91YmxlCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfY29zKGxvbmcgZG91YmxlIF9feCkge3JldHVybiBjb3NsKF9feCk7fQoKc3RhdGljIGZsb2F0IF9Db21wbGV4CiAgICBfVEdfQVRUUlMKICAgIF9fdGdfY29zKGZsb2F0IF9Db21wbGV4IF9feCkge3JldHVybiBjY29zZihfX3gpO30KCnN0YXRpYyBkb3VibGUgX0NvbXBsZXgKICAgIF9UR19BVFRSUwogICAgX190Z19jb3MoZG91YmxlIF9Db21wbGV4IF9feCkge3JldHVybiBjY29zKF9feCk7fQoKc3RhdGljIGxvbmcgZG91YmxlIF9Db21wbGV4CiAgICBfVEdfQVRUUlMKICAgIF9fdGdfY29zKGxvbmcgZG91YmxlIF9Db21wbGV4IF9feCkge3JldHVybiBjY29zbChfX3gpO30KCiN1bmRlZiBjb3MKI2RlZmluZSBjb3MoX194KSBfX3RnX2NvcyhfX3RnX3Byb21vdGUxKChfX3gpKShfX3gpKQoKLy8gc2luCgpzdGF0aWMgZmxvYXQKICAgIF9UR19BVFRSUwogICAgX190Z19zaW4oZmxvYXQgX194KSB7cmV0dXJuIHNpbmYoX194KTt9CgpzdGF0aWMgZG91YmxlCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfc2luKGRvdWJsZSBfX3gpIHtyZXR1cm4gc2luKF9feCk7fQoKc3RhdGljIGxvbmcgZG91YmxlCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfc2luKGxvbmcgZG91YmxlIF9feCkge3JldHVybiBzaW5sKF9feCk7fQoKc3RhdGljIGZsb2F0IF9Db21wbGV4CiAgICBfVEdfQVRUUlMKICAgIF9fdGdfc2luKGZsb2F0IF9Db21wbGV4IF9feCkge3JldHVybiBjc2luZihfX3gpO30KCnN0YXRpYyBkb3VibGUgX0NvbXBsZXgKICAgIF9UR19BVFRSUwogICAgX190Z19zaW4oZG91YmxlIF9Db21wbGV4IF9feCkge3JldHVybiBjc2luKF9feCk7fQoKc3RhdGljIGxvbmcgZG91YmxlIF9Db21wbGV4CiAgICBfVEdfQVRUUlMKICAgIF9fdGdfc2luKGxvbmcgZG91YmxlIF9Db21wbGV4IF9feCkge3JldHVybiBjc2lubChfX3gpO30KCiN1bmRlZiBzaW4KI2RlZmluZSBzaW4oX194KSBfX3RnX3NpbihfX3RnX3Byb21vdGUxKChfX3gpKShfX3gpKQoKLy8gdGFuCgpzdGF0aWMgZmxvYXQKICAgIF9UR19BVFRSUwogICAgX190Z190YW4oZmxvYXQgX194KSB7cmV0dXJuIHRhbmYoX194KTt9CgpzdGF0aWMgZG91YmxlCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfdGFuKGRvdWJsZSBfX3gpIHtyZXR1cm4gdGFuKF9feCk7fQoKc3RhdGljIGxvbmcgZG91YmxlCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfdGFuKGxvbmcgZG91YmxlIF9feCkge3JldHVybiB0YW5sKF9feCk7fQoKc3RhdGljIGZsb2F0IF9Db21wbGV4CiAgICBfVEdfQVRUUlMKICAgIF9fdGdfdGFuKGZsb2F0IF9Db21wbGV4IF9feCkge3JldHVybiBjdGFuZihfX3gpO30KCnN0YXRpYyBkb3VibGUgX0NvbXBsZXgKICAgIF9UR19BVFRSUwogICAgX190Z190YW4oZG91YmxlIF9Db21wbGV4IF9feCkge3JldHVybiBjdGFuKF9feCk7fQoKc3RhdGljIGxvbmcgZG91YmxlIF9Db21wbGV4CiAgICBfVEdfQVRUUlMKICAgIF9fdGdfdGFuKGxvbmcgZG91YmxlIF9Db21wbGV4IF9feCkge3JldHVybiBjdGFubChfX3gpO30KCiN1bmRlZiB0YW4KI2RlZmluZSB0YW4oX194KSBfX3RnX3RhbihfX3RnX3Byb21vdGUxKChfX3gpKShfX3gpKQoKLy8gY29zaAoKc3RhdGljIGZsb2F0CiAgICBfVEdfQVRUUlMKICAgIF9fdGdfY29zaChmbG9hdCBfX3gpIHtyZXR1cm4gY29zaGYoX194KTt9CgpzdGF0aWMgZG91YmxlCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfY29zaChkb3VibGUgX194KSB7cmV0dXJuIGNvc2goX194KTt9CgpzdGF0aWMgbG9uZyBkb3VibGUKICAgIF9UR19BVFRSUwogICAgX190Z19jb3NoKGxvbmcgZG91YmxlIF9feCkge3JldHVybiBjb3NobChfX3gpO30KCnN0YXRpYyBmbG9hdCBfQ29tcGxleAogICAgX1RHX0FUVFJTCiAgICBfX3RnX2Nvc2goZmxvYXQgX0NvbXBsZXggX194KSB7cmV0dXJuIGNjb3NoZihfX3gpO30KCnN0YXRpYyBkb3VibGUgX0NvbXBsZXgKICAgIF9UR19BVFRSUwogICAgX190Z19jb3NoKGRvdWJsZSBfQ29tcGxleCBfX3gpIHtyZXR1cm4gY2Nvc2goX194KTt9CgpzdGF0aWMgbG9uZyBkb3VibGUgX0NvbXBsZXgKICAgIF9UR19BVFRSUwogICAgX190Z19jb3NoKGxvbmcgZG91YmxlIF9Db21wbGV4IF9feCkge3JldHVybiBjY29zaGwoX194KTt9CgojdW5kZWYgY29zaAojZGVmaW5lIGNvc2goX194KSBfX3RnX2Nvc2goX190Z19wcm9tb3RlMSgoX194KSkoX194KSkKCi8vIHNpbmgKCnN0YXRpYyBmbG9hdAogICAgX1RHX0FUVFJTCiAgICBfX3RnX3NpbmgoZmxvYXQgX194KSB7cmV0dXJuIHNpbmhmKF9feCk7fQoKc3RhdGljIGRvdWJsZQogICAgX1RHX0FUVFJTCiAgICBfX3RnX3NpbmgoZG91YmxlIF9feCkge3JldHVybiBzaW5oKF9feCk7fQoKc3RhdGljIGxvbmcgZG91YmxlCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfc2luaChsb25nIGRvdWJsZSBfX3gpIHtyZXR1cm4gc2luaGwoX194KTt9CgpzdGF0aWMgZmxvYXQgX0NvbXBsZXgKICAgIF9UR19BVFRSUwogICAgX190Z19zaW5oKGZsb2F0IF9Db21wbGV4IF9feCkge3JldHVybiBjc2luaGYoX194KTt9CgpzdGF0aWMgZG91YmxlIF9Db21wbGV4CiAgICBfVEdfQVRUUlMKICAgIF9fdGdfc2luaChkb3VibGUgX0NvbXBsZXggX194KSB7cmV0dXJuIGNzaW5oKF9feCk7fQoKc3RhdGljIGxvbmcgZG91YmxlIF9Db21wbGV4CiAgICBfVEdfQVRUUlMKICAgIF9fdGdfc2luaChsb25nIGRvdWJsZSBfQ29tcGxleCBfX3gpIHtyZXR1cm4gY3NpbmhsKF9feCk7fQoKI3VuZGVmIHNpbmgKI2RlZmluZSBzaW5oKF9feCkgX190Z19zaW5oKF9fdGdfcHJvbW90ZTEoKF9feCkpKF9feCkpCgovLyB0YW5oCgpzdGF0aWMgZmxvYXQKICAgIF9UR19BVFRSUwogICAgX190Z190YW5oKGZsb2F0IF9feCkge3JldHVybiB0YW5oZihfX3gpO30KCnN0YXRpYyBkb3VibGUKICAgIF9UR19BVFRSUwogICAgX190Z190YW5oKGRvdWJsZSBfX3gpIHtyZXR1cm4gdGFuaChfX3gpO30KCnN0YXRpYyBsb25nIGRvdWJsZQogICAgX1RHX0FUVFJTCiAgICBfX3RnX3RhbmgobG9uZyBkb3VibGUgX194KSB7cmV0dXJuIHRhbmhsKF9feCk7fQoKc3RhdGljIGZsb2F0IF9Db21wbGV4CiAgICBfVEdfQVRUUlMKICAgIF9fdGdfdGFuaChmbG9hdCBfQ29tcGxleCBfX3gpIHtyZXR1cm4gY3RhbmhmKF9feCk7fQoKc3RhdGljIGRvdWJsZSBfQ29tcGxleAogICAgX1RHX0FUVFJTCiAgICBfX3RnX3RhbmgoZG91YmxlIF9Db21wbGV4IF9feCkge3JldHVybiBjdGFuaChfX3gpO30KCnN0YXRpYyBsb25nIGRvdWJsZSBfQ29tcGxleAogICAgX1RHX0FUVFJTCiAgICBfX3RnX3RhbmgobG9uZyBkb3VibGUgX0NvbXBsZXggX194KSB7cmV0dXJuIGN0YW5obChfX3gpO30KCiN1bmRlZiB0YW5oCiNkZWZpbmUgdGFuaChfX3gpIF9fdGdfdGFuaChfX3RnX3Byb21vdGUxKChfX3gpKShfX3gpKQoKLy8gZXhwCgpzdGF0aWMgZmxvYXQKICAgIF9UR19BVFRSUwogICAgX190Z19leHAoZmxvYXQgX194KSB7cmV0dXJuIGV4cGYoX194KTt9CgpzdGF0aWMgZG91YmxlCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfZXhwKGRvdWJsZSBfX3gpIHtyZXR1cm4gZXhwKF9feCk7fQoKc3RhdGljIGxvbmcgZG91YmxlCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfZXhwKGxvbmcgZG91YmxlIF9feCkge3JldHVybiBleHBsKF9feCk7fQoKc3RhdGljIGZsb2F0IF9Db21wbGV4CiAgICBfVEdfQVRUUlMKICAgIF9fdGdfZXhwKGZsb2F0IF9Db21wbGV4IF9feCkge3JldHVybiBjZXhwZihfX3gpO30KCnN0YXRpYyBkb3VibGUgX0NvbXBsZXgKICAgIF9UR19BVFRSUwogICAgX190Z19leHAoZG91YmxlIF9Db21wbGV4IF9feCkge3JldHVybiBjZXhwKF9feCk7fQoKc3RhdGljIGxvbmcgZG91YmxlIF9Db21wbGV4CiAgICBfVEdfQVRUUlMKICAgIF9fdGdfZXhwKGxvbmcgZG91YmxlIF9Db21wbGV4IF9feCkge3JldHVybiBjZXhwbChfX3gpO30KCiN1bmRlZiBleHAKI2RlZmluZSBleHAoX194KSBfX3RnX2V4cChfX3RnX3Byb21vdGUxKChfX3gpKShfX3gpKQoKLy8gbG9nCgpzdGF0aWMgZmxvYXQKICAgIF9UR19BVFRSUwogICAgX190Z19sb2coZmxvYXQgX194KSB7cmV0dXJuIGxvZ2YoX194KTt9CgpzdGF0aWMgZG91YmxlCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfbG9nKGRvdWJsZSBfX3gpIHtyZXR1cm4gbG9nKF9feCk7fQoKc3RhdGljIGxvbmcgZG91YmxlCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfbG9nKGxvbmcgZG91YmxlIF9feCkge3JldHVybiBsb2dsKF9feCk7fQoKc3RhdGljIGZsb2F0IF9Db21wbGV4CiAgICBfVEdfQVRUUlMKICAgIF9fdGdfbG9nKGZsb2F0IF9Db21wbGV4IF9feCkge3JldHVybiBjbG9nZihfX3gpO30KCnN0YXRpYyBkb3VibGUgX0NvbXBsZXgKICAgIF9UR19BVFRSUwogICAgX190Z19sb2coZG91YmxlIF9Db21wbGV4IF9feCkge3JldHVybiBjbG9nKF9feCk7fQoKc3RhdGljIGxvbmcgZG91YmxlIF9Db21wbGV4CiAgICBfVEdfQVRUUlMKICAgIF9fdGdfbG9nKGxvbmcgZG91YmxlIF9Db21wbGV4IF9feCkge3JldHVybiBjbG9nbChfX3gpO30KCiN1bmRlZiBsb2cKI2RlZmluZSBsb2coX194KSBfX3RnX2xvZyhfX3RnX3Byb21vdGUxKChfX3gpKShfX3gpKQoKLy8gcG93CgpzdGF0aWMgZmxvYXQKICAgIF9UR19BVFRSUwogICAgX190Z19wb3coZmxvYXQgX194LCBmbG9hdCBfX3kpIHtyZXR1cm4gcG93ZihfX3gsIF9feSk7fQoKc3RhdGljIGRvdWJsZQogICAgX1RHX0FUVFJTCiAgICBfX3RnX3Bvdyhkb3VibGUgX194LCBkb3VibGUgX195KSB7cmV0dXJuIHBvdyhfX3gsIF9feSk7fQoKc3RhdGljIGxvbmcgZG91YmxlCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfcG93KGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB7cmV0dXJuIHBvd2woX194LCBfX3kpO30KCnN0YXRpYyBmbG9hdCBfQ29tcGxleAogICAgX1RHX0FUVFJTCiAgICBfX3RnX3BvdyhmbG9hdCBfQ29tcGxleCBfX3gsIGZsb2F0IF9Db21wbGV4IF9feSkge3JldHVybiBjcG93ZihfX3gsIF9feSk7fQoKc3RhdGljIGRvdWJsZSBfQ29tcGxleAogICAgX1RHX0FUVFJTCiAgICBfX3RnX3Bvdyhkb3VibGUgX0NvbXBsZXggX194LCBkb3VibGUgX0NvbXBsZXggX195KSB7cmV0dXJuIGNwb3coX194LCBfX3kpO30KCnN0YXRpYyBsb25nIGRvdWJsZSBfQ29tcGxleAogICAgX1RHX0FUVFJTCiAgICBfX3RnX3Bvdyhsb25nIGRvdWJsZSBfQ29tcGxleCBfX3gsIGxvbmcgZG91YmxlIF9Db21wbGV4IF9feSkKICAgIHtyZXR1cm4gY3Bvd2woX194LCBfX3kpO30KCiN1bmRlZiBwb3cKI2RlZmluZSBwb3coX194LCBfX3kpIF9fdGdfcG93KF9fdGdfcHJvbW90ZTIoKF9feCksIChfX3kpKShfX3gpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3RnX3Byb21vdGUyKChfX3gpLCAoX195KSkoX195KSkKCi8vIHNxcnQKCnN0YXRpYyBmbG9hdAogICAgX1RHX0FUVFJTCiAgICBfX3RnX3NxcnQoZmxvYXQgX194KSB7cmV0dXJuIHNxcnRmKF9feCk7fQoKc3RhdGljIGRvdWJsZQogICAgX1RHX0FUVFJTCiAgICBfX3RnX3NxcnQoZG91YmxlIF9feCkge3JldHVybiBzcXJ0KF9feCk7fQoKc3RhdGljIGxvbmcgZG91YmxlCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfc3FydChsb25nIGRvdWJsZSBfX3gpIHtyZXR1cm4gc3FydGwoX194KTt9CgpzdGF0aWMgZmxvYXQgX0NvbXBsZXgKICAgIF9UR19BVFRSUwogICAgX190Z19zcXJ0KGZsb2F0IF9Db21wbGV4IF9feCkge3JldHVybiBjc3FydGYoX194KTt9CgpzdGF0aWMgZG91YmxlIF9Db21wbGV4CiAgICBfVEdfQVRUUlMKICAgIF9fdGdfc3FydChkb3VibGUgX0NvbXBsZXggX194KSB7cmV0dXJuIGNzcXJ0KF9feCk7fQoKc3RhdGljIGxvbmcgZG91YmxlIF9Db21wbGV4CiAgICBfVEdfQVRUUlMKICAgIF9fdGdfc3FydChsb25nIGRvdWJsZSBfQ29tcGxleCBfX3gpIHtyZXR1cm4gY3NxcnRsKF9feCk7fQoKI3VuZGVmIHNxcnQKI2RlZmluZSBzcXJ0KF9feCkgX190Z19zcXJ0KF9fdGdfcHJvbW90ZTEoKF9feCkpKF9feCkpCgovLyBmYWJzCgpzdGF0aWMgZmxvYXQKICAgIF9UR19BVFRSUwogICAgX190Z19mYWJzKGZsb2F0IF9feCkge3JldHVybiBmYWJzZihfX3gpO30KCnN0YXRpYyBkb3VibGUKICAgIF9UR19BVFRSUwogICAgX190Z19mYWJzKGRvdWJsZSBfX3gpIHtyZXR1cm4gZmFicyhfX3gpO30KCnN0YXRpYyBsb25nIGRvdWJsZQogICAgX1RHX0FUVFJTCiAgICBfX3RnX2ZhYnMobG9uZyBkb3VibGUgX194KSB7cmV0dXJuIGZhYnNsKF9feCk7fQoKc3RhdGljIGZsb2F0CiAgICBfVEdfQVRUUlMKICAgIF9fdGdfZmFicyhmbG9hdCBfQ29tcGxleCBfX3gpIHtyZXR1cm4gY2Fic2YoX194KTt9CgpzdGF0aWMgZG91YmxlCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfZmFicyhkb3VibGUgX0NvbXBsZXggX194KSB7cmV0dXJuIGNhYnMoX194KTt9CgpzdGF0aWMgbG9uZyBkb3VibGUKICAgIF9UR19BVFRSUwogICAgX190Z19mYWJzKGxvbmcgZG91YmxlIF9Db21wbGV4IF9feCkge3JldHVybiBjYWJzbChfX3gpO30KCiN1bmRlZiBmYWJzCiNkZWZpbmUgZmFicyhfX3gpIF9fdGdfZmFicyhfX3RnX3Byb21vdGUxKChfX3gpKShfX3gpKQoKLy8gYXRhbjIKCnN0YXRpYyBmbG9hdAogICAgX1RHX0FUVFJTCiAgICBfX3RnX2F0YW4yKGZsb2F0IF9feCwgZmxvYXQgX195KSB7cmV0dXJuIGF0YW4yZihfX3gsIF9feSk7fQoKc3RhdGljIGRvdWJsZQogICAgX1RHX0FUVFJTCiAgICBfX3RnX2F0YW4yKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHtyZXR1cm4gYXRhbjIoX194LCBfX3kpO30KCnN0YXRpYyBsb25nIGRvdWJsZQogICAgX1RHX0FUVFJTCiAgICBfX3RnX2F0YW4yKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB7cmV0dXJuIGF0YW4ybChfX3gsIF9feSk7fQoKI3VuZGVmIGF0YW4yCiNkZWZpbmUgYXRhbjIoX194LCBfX3kpIF9fdGdfYXRhbjIoX190Z19wcm9tb3RlMigoX194KSwgKF9feSkpKF9feCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3RnX3Byb21vdGUyKChfX3gpLCAoX195KSkoX195KSkKCi8vIGNicnQKCnN0YXRpYyBmbG9hdAogICAgX1RHX0FUVFJTCiAgICBfX3RnX2NicnQoZmxvYXQgX194KSB7cmV0dXJuIGNicnRmKF9feCk7fQoKc3RhdGljIGRvdWJsZQogICAgX1RHX0FUVFJTCiAgICBfX3RnX2NicnQoZG91YmxlIF9feCkge3JldHVybiBjYnJ0KF9feCk7fQoKc3RhdGljIGxvbmcgZG91YmxlCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfY2JydChsb25nIGRvdWJsZSBfX3gpIHtyZXR1cm4gY2JydGwoX194KTt9CgojdW5kZWYgY2JydAojZGVmaW5lIGNicnQoX194KSBfX3RnX2NicnQoX190Z19wcm9tb3RlMSgoX194KSkoX194KSkKCi8vIGNlaWwKCnN0YXRpYyBmbG9hdAogICAgX1RHX0FUVFJTCiAgICBfX3RnX2NlaWwoZmxvYXQgX194KSB7cmV0dXJuIGNlaWxmKF9feCk7fQoKc3RhdGljIGRvdWJsZQogICAgX1RHX0FUVFJTCiAgICBfX3RnX2NlaWwoZG91YmxlIF9feCkge3JldHVybiBjZWlsKF9feCk7fQoKc3RhdGljIGxvbmcgZG91YmxlCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfY2VpbChsb25nIGRvdWJsZSBfX3gpIHtyZXR1cm4gY2VpbGwoX194KTt9CgojdW5kZWYgY2VpbAojZGVmaW5lIGNlaWwoX194KSBfX3RnX2NlaWwoX190Z19wcm9tb3RlMSgoX194KSkoX194KSkKCi8vIGNvcHlzaWduCgpzdGF0aWMgZmxvYXQKICAgIF9UR19BVFRSUwogICAgX190Z19jb3B5c2lnbihmbG9hdCBfX3gsIGZsb2F0IF9feSkge3JldHVybiBjb3B5c2lnbmYoX194LCBfX3kpO30KCnN0YXRpYyBkb3VibGUKICAgIF9UR19BVFRSUwogICAgX190Z19jb3B5c2lnbihkb3VibGUgX194LCBkb3VibGUgX195KSB7cmV0dXJuIGNvcHlzaWduKF9feCwgX195KTt9CgpzdGF0aWMgbG9uZyBkb3VibGUKICAgIF9UR19BVFRSUwogICAgX190Z19jb3B5c2lnbihsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkge3JldHVybiBjb3B5c2lnbmwoX194LCBfX3kpO30KCiN1bmRlZiBjb3B5c2lnbgojZGVmaW5lIGNvcHlzaWduKF9feCwgX195KSBfX3RnX2NvcHlzaWduKF9fdGdfcHJvbW90ZTIoKF9feCksIChfX3kpKShfX3gpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX190Z19wcm9tb3RlMigoX194KSwgKF9feSkpKF9feSkpCgovLyBlcmYKCnN0YXRpYyBmbG9hdAogICAgX1RHX0FUVFJTCiAgICBfX3RnX2VyZihmbG9hdCBfX3gpIHtyZXR1cm4gZXJmZihfX3gpO30KCnN0YXRpYyBkb3VibGUKICAgIF9UR19BVFRSUwogICAgX190Z19lcmYoZG91YmxlIF9feCkge3JldHVybiBlcmYoX194KTt9CgpzdGF0aWMgbG9uZyBkb3VibGUKICAgIF9UR19BVFRSUwogICAgX190Z19lcmYobG9uZyBkb3VibGUgX194KSB7cmV0dXJuIGVyZmwoX194KTt9CgojdW5kZWYgZXJmCiNkZWZpbmUgZXJmKF9feCkgX190Z19lcmYoX190Z19wcm9tb3RlMSgoX194KSkoX194KSkKCi8vIGVyZmMKCnN0YXRpYyBmbG9hdAogICAgX1RHX0FUVFJTCiAgICBfX3RnX2VyZmMoZmxvYXQgX194KSB7cmV0dXJuIGVyZmNmKF9feCk7fQoKc3RhdGljIGRvdWJsZQogICAgX1RHX0FUVFJTCiAgICBfX3RnX2VyZmMoZG91YmxlIF9feCkge3JldHVybiBlcmZjKF9feCk7fQoKc3RhdGljIGxvbmcgZG91YmxlCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfZXJmYyhsb25nIGRvdWJsZSBfX3gpIHtyZXR1cm4gZXJmY2woX194KTt9CgojdW5kZWYgZXJmYwojZGVmaW5lIGVyZmMoX194KSBfX3RnX2VyZmMoX190Z19wcm9tb3RlMSgoX194KSkoX194KSkKCi8vIGV4cDIKCnN0YXRpYyBmbG9hdAogICAgX1RHX0FUVFJTCiAgICBfX3RnX2V4cDIoZmxvYXQgX194KSB7cmV0dXJuIGV4cDJmKF9feCk7fQoKc3RhdGljIGRvdWJsZQogICAgX1RHX0FUVFJTCiAgICBfX3RnX2V4cDIoZG91YmxlIF9feCkge3JldHVybiBleHAyKF9feCk7fQoKc3RhdGljIGxvbmcgZG91YmxlCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfZXhwMihsb25nIGRvdWJsZSBfX3gpIHtyZXR1cm4gZXhwMmwoX194KTt9CgojdW5kZWYgZXhwMgojZGVmaW5lIGV4cDIoX194KSBfX3RnX2V4cDIoX190Z19wcm9tb3RlMSgoX194KSkoX194KSkKCi8vIGV4cG0xCgpzdGF0aWMgZmxvYXQKICAgIF9UR19BVFRSUwogICAgX190Z19leHBtMShmbG9hdCBfX3gpIHtyZXR1cm4gZXhwbTFmKF9feCk7fQoKc3RhdGljIGRvdWJsZQogICAgX1RHX0FUVFJTCiAgICBfX3RnX2V4cG0xKGRvdWJsZSBfX3gpIHtyZXR1cm4gZXhwbTEoX194KTt9CgpzdGF0aWMgbG9uZyBkb3VibGUKICAgIF9UR19BVFRSUwogICAgX190Z19leHBtMShsb25nIGRvdWJsZSBfX3gpIHtyZXR1cm4gZXhwbTFsKF9feCk7fQoKI3VuZGVmIGV4cG0xCiNkZWZpbmUgZXhwbTEoX194KSBfX3RnX2V4cG0xKF9fdGdfcHJvbW90ZTEoKF9feCkpKF9feCkpCgovLyBmZGltCgpzdGF0aWMgZmxvYXQKICAgIF9UR19BVFRSUwogICAgX190Z19mZGltKGZsb2F0IF9feCwgZmxvYXQgX195KSB7cmV0dXJuIGZkaW1mKF9feCwgX195KTt9CgpzdGF0aWMgZG91YmxlCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfZmRpbShkb3VibGUgX194LCBkb3VibGUgX195KSB7cmV0dXJuIGZkaW0oX194LCBfX3kpO30KCnN0YXRpYyBsb25nIGRvdWJsZQogICAgX1RHX0FUVFJTCiAgICBfX3RnX2ZkaW0obG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHtyZXR1cm4gZmRpbWwoX194LCBfX3kpO30KCiN1bmRlZiBmZGltCiNkZWZpbmUgZmRpbShfX3gsIF9feSkgX190Z19mZGltKF9fdGdfcHJvbW90ZTIoKF9feCksIChfX3kpKShfX3gpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fdGdfcHJvbW90ZTIoKF9feCksIChfX3kpKShfX3kpKQoKLy8gZmxvb3IKCnN0YXRpYyBmbG9hdAogICAgX1RHX0FUVFJTCiAgICBfX3RnX2Zsb29yKGZsb2F0IF9feCkge3JldHVybiBmbG9vcmYoX194KTt9CgpzdGF0aWMgZG91YmxlCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfZmxvb3IoZG91YmxlIF9feCkge3JldHVybiBmbG9vcihfX3gpO30KCnN0YXRpYyBsb25nIGRvdWJsZQogICAgX1RHX0FUVFJTCiAgICBfX3RnX2Zsb29yKGxvbmcgZG91YmxlIF9feCkge3JldHVybiBmbG9vcmwoX194KTt9CgojdW5kZWYgZmxvb3IKI2RlZmluZSBmbG9vcihfX3gpIF9fdGdfZmxvb3IoX190Z19wcm9tb3RlMSgoX194KSkoX194KSkKCi8vIGZtYQoKc3RhdGljIGZsb2F0CiAgICBfVEdfQVRUUlMKICAgIF9fdGdfZm1hKGZsb2F0IF9feCwgZmxvYXQgX195LCBmbG9hdCBfX3opCiAgICB7cmV0dXJuIGZtYWYoX194LCBfX3ksIF9feik7fQoKc3RhdGljIGRvdWJsZQogICAgX1RHX0FUVFJTCiAgICBfX3RnX2ZtYShkb3VibGUgX194LCBkb3VibGUgX195LCBkb3VibGUgX196KQogICAge3JldHVybiBmbWEoX194LCBfX3ksIF9feik7fQoKc3RhdGljIGxvbmcgZG91YmxlCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfZm1hKGxvbmcgZG91YmxlIF9feCxsb25nIGRvdWJsZSBfX3ksIGxvbmcgZG91YmxlIF9feikKICAgIHtyZXR1cm4gZm1hbChfX3gsIF9feSwgX196KTt9CgojdW5kZWYgZm1hCiNkZWZpbmUgZm1hKF9feCwgX195LCBfX3opICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgX190Z19mbWEoX190Z19wcm9tb3RlMygoX194KSwgKF9feSksIChfX3opKShfX3gpLCBcCiAgICAgICAgICAgICAgICAgX190Z19wcm9tb3RlMygoX194KSwgKF9feSksIChfX3opKShfX3kpLCBcCiAgICAgICAgICAgICAgICAgX190Z19wcm9tb3RlMygoX194KSwgKF9feSksIChfX3opKShfX3opKQoKLy8gZm1heAoKc3RhdGljIGZsb2F0CiAgICBfVEdfQVRUUlMKICAgIF9fdGdfZm1heChmbG9hdCBfX3gsIGZsb2F0IF9feSkge3JldHVybiBmbWF4ZihfX3gsIF9feSk7fQoKc3RhdGljIGRvdWJsZQogICAgX1RHX0FUVFJTCiAgICBfX3RnX2ZtYXgoZG91YmxlIF9feCwgZG91YmxlIF9feSkge3JldHVybiBmbWF4KF9feCwgX195KTt9CgpzdGF0aWMgbG9uZyBkb3VibGUKICAgIF9UR19BVFRSUwogICAgX190Z19mbWF4KGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB7cmV0dXJuIGZtYXhsKF9feCwgX195KTt9CgojdW5kZWYgZm1heAojZGVmaW5lIGZtYXgoX194LCBfX3kpIF9fdGdfZm1heChfX3RnX3Byb21vdGUyKChfX3gpLCAoX195KSkoX194KSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3RnX3Byb21vdGUyKChfX3gpLCAoX195KSkoX195KSkKCi8vIGZtaW4KCnN0YXRpYyBmbG9hdAogICAgX1RHX0FUVFJTCiAgICBfX3RnX2ZtaW4oZmxvYXQgX194LCBmbG9hdCBfX3kpIHtyZXR1cm4gZm1pbmYoX194LCBfX3kpO30KCnN0YXRpYyBkb3VibGUKICAgIF9UR19BVFRSUwogICAgX190Z19mbWluKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHtyZXR1cm4gZm1pbihfX3gsIF9feSk7fQoKc3RhdGljIGxvbmcgZG91YmxlCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfZm1pbihsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkge3JldHVybiBmbWlubChfX3gsIF9feSk7fQoKI3VuZGVmIGZtaW4KI2RlZmluZSBmbWluKF9feCwgX195KSBfX3RnX2ZtaW4oX190Z19wcm9tb3RlMigoX194KSwgKF9feSkpKF9feCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX190Z19wcm9tb3RlMigoX194KSwgKF9feSkpKF9feSkpCgovLyBmbW9kCgpzdGF0aWMgZmxvYXQKICAgIF9UR19BVFRSUwogICAgX190Z19mbW9kKGZsb2F0IF9feCwgZmxvYXQgX195KSB7cmV0dXJuIGZtb2RmKF9feCwgX195KTt9CgpzdGF0aWMgZG91YmxlCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfZm1vZChkb3VibGUgX194LCBkb3VibGUgX195KSB7cmV0dXJuIGZtb2QoX194LCBfX3kpO30KCnN0YXRpYyBsb25nIGRvdWJsZQogICAgX1RHX0FUVFJTCiAgICBfX3RnX2Ztb2QobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHtyZXR1cm4gZm1vZGwoX194LCBfX3kpO30KCiN1bmRlZiBmbW9kCiNkZWZpbmUgZm1vZChfX3gsIF9feSkgX190Z19mbW9kKF9fdGdfcHJvbW90ZTIoKF9feCksIChfX3kpKShfX3gpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fdGdfcHJvbW90ZTIoKF9feCksIChfX3kpKShfX3kpKQoKLy8gZnJleHAKCnN0YXRpYyBmbG9hdAogICAgX1RHX0FUVFJTCiAgICBfX3RnX2ZyZXhwKGZsb2F0IF9feCwgaW50KiBfX3kpIHtyZXR1cm4gZnJleHBmKF9feCwgX195KTt9CgpzdGF0aWMgZG91YmxlCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfZnJleHAoZG91YmxlIF9feCwgaW50KiBfX3kpIHtyZXR1cm4gZnJleHAoX194LCBfX3kpO30KCnN0YXRpYyBsb25nIGRvdWJsZQogICAgX1RHX0FUVFJTCiAgICBfX3RnX2ZyZXhwKGxvbmcgZG91YmxlIF9feCwgaW50KiBfX3kpIHtyZXR1cm4gZnJleHBsKF9feCwgX195KTt9CgojdW5kZWYgZnJleHAKI2RlZmluZSBmcmV4cChfX3gsIF9feSkgX190Z19mcmV4cChfX3RnX3Byb21vdGUxKChfX3gpKShfX3gpLCBfX3kpCgovLyBoeXBvdAoKc3RhdGljIGZsb2F0CiAgICBfVEdfQVRUUlMKICAgIF9fdGdfaHlwb3QoZmxvYXQgX194LCBmbG9hdCBfX3kpIHtyZXR1cm4gaHlwb3RmKF9feCwgX195KTt9CgpzdGF0aWMgZG91YmxlCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfaHlwb3QoZG91YmxlIF9feCwgZG91YmxlIF9feSkge3JldHVybiBoeXBvdChfX3gsIF9feSk7fQoKc3RhdGljIGxvbmcgZG91YmxlCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfaHlwb3QobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHtyZXR1cm4gaHlwb3RsKF9feCwgX195KTt9CgojdW5kZWYgaHlwb3QKI2RlZmluZSBoeXBvdChfX3gsIF9feSkgX190Z19oeXBvdChfX3RnX3Byb21vdGUyKChfX3gpLCAoX195KSkoX194KSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fdGdfcHJvbW90ZTIoKF9feCksIChfX3kpKShfX3kpKQoKLy8gaWxvZ2IKCnN0YXRpYyBpbnQKICAgIF9UR19BVFRSUwogICAgX190Z19pbG9nYihmbG9hdCBfX3gpIHtyZXR1cm4gaWxvZ2JmKF9feCk7fQoKc3RhdGljIGludAogICAgX1RHX0FUVFJTCiAgICBfX3RnX2lsb2diKGRvdWJsZSBfX3gpIHtyZXR1cm4gaWxvZ2IoX194KTt9CgpzdGF0aWMgaW50CiAgICBfVEdfQVRUUlMKICAgIF9fdGdfaWxvZ2IobG9uZyBkb3VibGUgX194KSB7cmV0dXJuIGlsb2dibChfX3gpO30KCiN1bmRlZiBpbG9nYgojZGVmaW5lIGlsb2diKF9feCkgX190Z19pbG9nYihfX3RnX3Byb21vdGUxKChfX3gpKShfX3gpKQoKLy8gbGRleHAKCnN0YXRpYyBmbG9hdAogICAgX1RHX0FUVFJTCiAgICBfX3RnX2xkZXhwKGZsb2F0IF9feCwgaW50IF9feSkge3JldHVybiBsZGV4cGYoX194LCBfX3kpO30KCnN0YXRpYyBkb3VibGUKICAgIF9UR19BVFRSUwogICAgX190Z19sZGV4cChkb3VibGUgX194LCBpbnQgX195KSB7cmV0dXJuIGxkZXhwKF9feCwgX195KTt9CgpzdGF0aWMgbG9uZyBkb3VibGUKICAgIF9UR19BVFRSUwogICAgX190Z19sZGV4cChsb25nIGRvdWJsZSBfX3gsIGludCBfX3kpIHtyZXR1cm4gbGRleHBsKF9feCwgX195KTt9CgojdW5kZWYgbGRleHAKI2RlZmluZSBsZGV4cChfX3gsIF9feSkgX190Z19sZGV4cChfX3RnX3Byb21vdGUxKChfX3gpKShfX3gpLCBfX3kpCgovLyBsZ2FtbWEKCnN0YXRpYyBmbG9hdAogICAgX1RHX0FUVFJTCiAgICBfX3RnX2xnYW1tYShmbG9hdCBfX3gpIHtyZXR1cm4gbGdhbW1hZihfX3gpO30KCnN0YXRpYyBkb3VibGUKICAgIF9UR19BVFRSUwogICAgX190Z19sZ2FtbWEoZG91YmxlIF9feCkge3JldHVybiBsZ2FtbWEoX194KTt9CgpzdGF0aWMgbG9uZyBkb3VibGUKICAgIF9UR19BVFRSUwogICAgX190Z19sZ2FtbWEobG9uZyBkb3VibGUgX194KSB7cmV0dXJuIGxnYW1tYWwoX194KTt9CgojdW5kZWYgbGdhbW1hCiNkZWZpbmUgbGdhbW1hKF9feCkgX190Z19sZ2FtbWEoX190Z19wcm9tb3RlMSgoX194KSkoX194KSkKCi8vIGxscmludAoKc3RhdGljIGxvbmcgbG9uZwogICAgX1RHX0FUVFJTCiAgICBfX3RnX2xscmludChmbG9hdCBfX3gpIHtyZXR1cm4gbGxyaW50ZihfX3gpO30KCnN0YXRpYyBsb25nIGxvbmcKICAgIF9UR19BVFRSUwogICAgX190Z19sbHJpbnQoZG91YmxlIF9feCkge3JldHVybiBsbHJpbnQoX194KTt9CgpzdGF0aWMgbG9uZyBsb25nCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfbGxyaW50KGxvbmcgZG91YmxlIF9feCkge3JldHVybiBsbHJpbnRsKF9feCk7fQoKI3VuZGVmIGxscmludAojZGVmaW5lIGxscmludChfX3gpIF9fdGdfbGxyaW50KF9fdGdfcHJvbW90ZTEoKF9feCkpKF9feCkpCgovLyBsbHJvdW5kCgpzdGF0aWMgbG9uZyBsb25nCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfbGxyb3VuZChmbG9hdCBfX3gpIHtyZXR1cm4gbGxyb3VuZGYoX194KTt9CgpzdGF0aWMgbG9uZyBsb25nCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfbGxyb3VuZChkb3VibGUgX194KSB7cmV0dXJuIGxscm91bmQoX194KTt9CgpzdGF0aWMgbG9uZyBsb25nCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfbGxyb3VuZChsb25nIGRvdWJsZSBfX3gpIHtyZXR1cm4gbGxyb3VuZGwoX194KTt9CgojdW5kZWYgbGxyb3VuZAojZGVmaW5lIGxscm91bmQoX194KSBfX3RnX2xscm91bmQoX190Z19wcm9tb3RlMSgoX194KSkoX194KSkKCi8vIGxvZzEwCgpzdGF0aWMgZmxvYXQKICAgIF9UR19BVFRSUwogICAgX190Z19sb2cxMChmbG9hdCBfX3gpIHtyZXR1cm4gbG9nMTBmKF9feCk7fQoKc3RhdGljIGRvdWJsZQogICAgX1RHX0FUVFJTCiAgICBfX3RnX2xvZzEwKGRvdWJsZSBfX3gpIHtyZXR1cm4gbG9nMTAoX194KTt9CgpzdGF0aWMgbG9uZyBkb3VibGUKICAgIF9UR19BVFRSUwogICAgX190Z19sb2cxMChsb25nIGRvdWJsZSBfX3gpIHtyZXR1cm4gbG9nMTBsKF9feCk7fQoKI3VuZGVmIGxvZzEwCiNkZWZpbmUgbG9nMTAoX194KSBfX3RnX2xvZzEwKF9fdGdfcHJvbW90ZTEoKF9feCkpKF9feCkpCgovLyBsb2cxcAoKc3RhdGljIGZsb2F0CiAgICBfVEdfQVRUUlMKICAgIF9fdGdfbG9nMXAoZmxvYXQgX194KSB7cmV0dXJuIGxvZzFwZihfX3gpO30KCnN0YXRpYyBkb3VibGUKICAgIF9UR19BVFRSUwogICAgX190Z19sb2cxcChkb3VibGUgX194KSB7cmV0dXJuIGxvZzFwKF9feCk7fQoKc3RhdGljIGxvbmcgZG91YmxlCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfbG9nMXAobG9uZyBkb3VibGUgX194KSB7cmV0dXJuIGxvZzFwbChfX3gpO30KCiN1bmRlZiBsb2cxcAojZGVmaW5lIGxvZzFwKF9feCkgX190Z19sb2cxcChfX3RnX3Byb21vdGUxKChfX3gpKShfX3gpKQoKLy8gbG9nMgoKc3RhdGljIGZsb2F0CiAgICBfVEdfQVRUUlMKICAgIF9fdGdfbG9nMihmbG9hdCBfX3gpIHtyZXR1cm4gbG9nMmYoX194KTt9CgpzdGF0aWMgZG91YmxlCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfbG9nMihkb3VibGUgX194KSB7cmV0dXJuIGxvZzIoX194KTt9CgpzdGF0aWMgbG9uZyBkb3VibGUKICAgIF9UR19BVFRSUwogICAgX190Z19sb2cyKGxvbmcgZG91YmxlIF9feCkge3JldHVybiBsb2cybChfX3gpO30KCiN1bmRlZiBsb2cyCiNkZWZpbmUgbG9nMihfX3gpIF9fdGdfbG9nMihfX3RnX3Byb21vdGUxKChfX3gpKShfX3gpKQoKLy8gbG9nYgoKc3RhdGljIGZsb2F0CiAgICBfVEdfQVRUUlMKICAgIF9fdGdfbG9nYihmbG9hdCBfX3gpIHtyZXR1cm4gbG9nYmYoX194KTt9CgpzdGF0aWMgZG91YmxlCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfbG9nYihkb3VibGUgX194KSB7cmV0dXJuIGxvZ2IoX194KTt9CgpzdGF0aWMgbG9uZyBkb3VibGUKICAgIF9UR19BVFRSUwogICAgX190Z19sb2diKGxvbmcgZG91YmxlIF9feCkge3JldHVybiBsb2dibChfX3gpO30KCiN1bmRlZiBsb2diCiNkZWZpbmUgbG9nYihfX3gpIF9fdGdfbG9nYihfX3RnX3Byb21vdGUxKChfX3gpKShfX3gpKQoKLy8gbHJpbnQKCnN0YXRpYyBsb25nCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfbHJpbnQoZmxvYXQgX194KSB7cmV0dXJuIGxyaW50ZihfX3gpO30KCnN0YXRpYyBsb25nCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfbHJpbnQoZG91YmxlIF9feCkge3JldHVybiBscmludChfX3gpO30KCnN0YXRpYyBsb25nCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfbHJpbnQobG9uZyBkb3VibGUgX194KSB7cmV0dXJuIGxyaW50bChfX3gpO30KCiN1bmRlZiBscmludAojZGVmaW5lIGxyaW50KF9feCkgX190Z19scmludChfX3RnX3Byb21vdGUxKChfX3gpKShfX3gpKQoKLy8gbHJvdW5kCgpzdGF0aWMgbG9uZwogICAgX1RHX0FUVFJTCiAgICBfX3RnX2xyb3VuZChmbG9hdCBfX3gpIHtyZXR1cm4gbHJvdW5kZihfX3gpO30KCnN0YXRpYyBsb25nCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfbHJvdW5kKGRvdWJsZSBfX3gpIHtyZXR1cm4gbHJvdW5kKF9feCk7fQoKc3RhdGljIGxvbmcKICAgIF9UR19BVFRSUwogICAgX190Z19scm91bmQobG9uZyBkb3VibGUgX194KSB7cmV0dXJuIGxyb3VuZGwoX194KTt9CgojdW5kZWYgbHJvdW5kCiNkZWZpbmUgbHJvdW5kKF9feCkgX190Z19scm91bmQoX190Z19wcm9tb3RlMSgoX194KSkoX194KSkKCi8vIG5lYXJieWludAoKc3RhdGljIGZsb2F0CiAgICBfVEdfQVRUUlMKICAgIF9fdGdfbmVhcmJ5aW50KGZsb2F0IF9feCkge3JldHVybiBuZWFyYnlpbnRmKF9feCk7fQoKc3RhdGljIGRvdWJsZQogICAgX1RHX0FUVFJTCiAgICBfX3RnX25lYXJieWludChkb3VibGUgX194KSB7cmV0dXJuIG5lYXJieWludChfX3gpO30KCnN0YXRpYyBsb25nIGRvdWJsZQogICAgX1RHX0FUVFJTCiAgICBfX3RnX25lYXJieWludChsb25nIGRvdWJsZSBfX3gpIHtyZXR1cm4gbmVhcmJ5aW50bChfX3gpO30KCiN1bmRlZiBuZWFyYnlpbnQKI2RlZmluZSBuZWFyYnlpbnQoX194KSBfX3RnX25lYXJieWludChfX3RnX3Byb21vdGUxKChfX3gpKShfX3gpKQoKLy8gbmV4dGFmdGVyCgpzdGF0aWMgZmxvYXQKICAgIF9UR19BVFRSUwogICAgX190Z19uZXh0YWZ0ZXIoZmxvYXQgX194LCBmbG9hdCBfX3kpIHtyZXR1cm4gbmV4dGFmdGVyZihfX3gsIF9feSk7fQoKc3RhdGljIGRvdWJsZQogICAgX1RHX0FUVFJTCiAgICBfX3RnX25leHRhZnRlcihkb3VibGUgX194LCBkb3VibGUgX195KSB7cmV0dXJuIG5leHRhZnRlcihfX3gsIF9feSk7fQoKc3RhdGljIGxvbmcgZG91YmxlCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfbmV4dGFmdGVyKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB7cmV0dXJuIG5leHRhZnRlcmwoX194LCBfX3kpO30KCiN1bmRlZiBuZXh0YWZ0ZXIKI2RlZmluZSBuZXh0YWZ0ZXIoX194LCBfX3kpIF9fdGdfbmV4dGFmdGVyKF9fdGdfcHJvbW90ZTIoKF9feCksIChfX3kpKShfX3gpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3RnX3Byb21vdGUyKChfX3gpLCAoX195KSkoX195KSkKCi8vIG5leHR0b3dhcmQKCnN0YXRpYyBmbG9hdAogICAgX1RHX0FUVFJTCiAgICBfX3RnX25leHR0b3dhcmQoZmxvYXQgX194LCBsb25nIGRvdWJsZSBfX3kpIHtyZXR1cm4gbmV4dHRvd2FyZGYoX194LCBfX3kpO30KCnN0YXRpYyBkb3VibGUKICAgIF9UR19BVFRSUwogICAgX190Z19uZXh0dG93YXJkKGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkge3JldHVybiBuZXh0dG93YXJkKF9feCwgX195KTt9CgpzdGF0aWMgbG9uZyBkb3VibGUKICAgIF9UR19BVFRSUwogICAgX190Z19uZXh0dG93YXJkKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB7cmV0dXJuIG5leHR0b3dhcmRsKF9feCwgX195KTt9CgojdW5kZWYgbmV4dHRvd2FyZAojZGVmaW5lIG5leHR0b3dhcmQoX194LCBfX3kpIF9fdGdfbmV4dHRvd2FyZChfX3RnX3Byb21vdGUxKChfX3gpKShfX3gpLCAoX195KSkKCi8vIHJlbWFpbmRlcgoKc3RhdGljIGZsb2F0CiAgICBfVEdfQVRUUlMKICAgIF9fdGdfcmVtYWluZGVyKGZsb2F0IF9feCwgZmxvYXQgX195KSB7cmV0dXJuIHJlbWFpbmRlcmYoX194LCBfX3kpO30KCnN0YXRpYyBkb3VibGUKICAgIF9UR19BVFRSUwogICAgX190Z19yZW1haW5kZXIoZG91YmxlIF9feCwgZG91YmxlIF9feSkge3JldHVybiByZW1haW5kZXIoX194LCBfX3kpO30KCnN0YXRpYyBsb25nIGRvdWJsZQogICAgX1RHX0FUVFJTCiAgICBfX3RnX3JlbWFpbmRlcihsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkge3JldHVybiByZW1haW5kZXJsKF9feCwgX195KTt9CgojdW5kZWYgcmVtYWluZGVyCiNkZWZpbmUgcmVtYWluZGVyKF9feCwgX195KSBfX3RnX3JlbWFpbmRlcihfX3RnX3Byb21vdGUyKChfX3gpLCAoX195KSkoX194KSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX190Z19wcm9tb3RlMigoX194KSwgKF9feSkpKF9feSkpCgovLyByZW1xdW8KCnN0YXRpYyBmbG9hdAogICAgX1RHX0FUVFJTCiAgICBfX3RnX3JlbXF1byhmbG9hdCBfX3gsIGZsb2F0IF9feSwgaW50KiBfX3opCiAgICB7cmV0dXJuIHJlbXF1b2YoX194LCBfX3ksIF9feik7fQoKc3RhdGljIGRvdWJsZQogICAgX1RHX0FUVFJTCiAgICBfX3RnX3JlbXF1byhkb3VibGUgX194LCBkb3VibGUgX195LCBpbnQqIF9feikKICAgIHtyZXR1cm4gcmVtcXVvKF9feCwgX195LCBfX3opO30KCnN0YXRpYyBsb25nIGRvdWJsZQogICAgX1RHX0FUVFJTCiAgICBfX3RnX3JlbXF1byhsb25nIGRvdWJsZSBfX3gsbG9uZyBkb3VibGUgX195LCBpbnQqIF9feikKICAgIHtyZXR1cm4gcmVtcXVvbChfX3gsIF9feSwgX196KTt9CgojdW5kZWYgcmVtcXVvCiNkZWZpbmUgcmVtcXVvKF9feCwgX195LCBfX3opICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICBfX3RnX3JlbXF1byhfX3RnX3Byb21vdGUyKChfX3gpLCAoX195KSkoX194KSwgXAogICAgICAgICAgICAgICAgICAgIF9fdGdfcHJvbW90ZTIoKF9feCksIChfX3kpKShfX3kpLCBcCiAgICAgICAgICAgICAgICAgICAgKF9feikpCgovLyByaW50CgpzdGF0aWMgZmxvYXQKICAgIF9UR19BVFRSUwogICAgX190Z19yaW50KGZsb2F0IF9feCkge3JldHVybiByaW50ZihfX3gpO30KCnN0YXRpYyBkb3VibGUKICAgIF9UR19BVFRSUwogICAgX190Z19yaW50KGRvdWJsZSBfX3gpIHtyZXR1cm4gcmludChfX3gpO30KCnN0YXRpYyBsb25nIGRvdWJsZQogICAgX1RHX0FUVFJTCiAgICBfX3RnX3JpbnQobG9uZyBkb3VibGUgX194KSB7cmV0dXJuIHJpbnRsKF9feCk7fQoKI3VuZGVmIHJpbnQKI2RlZmluZSByaW50KF9feCkgX190Z19yaW50KF9fdGdfcHJvbW90ZTEoKF9feCkpKF9feCkpCgovLyByb3VuZAoKc3RhdGljIGZsb2F0CiAgICBfVEdfQVRUUlMKICAgIF9fdGdfcm91bmQoZmxvYXQgX194KSB7cmV0dXJuIHJvdW5kZihfX3gpO30KCnN0YXRpYyBkb3VibGUKICAgIF9UR19BVFRSUwogICAgX190Z19yb3VuZChkb3VibGUgX194KSB7cmV0dXJuIHJvdW5kKF9feCk7fQoKc3RhdGljIGxvbmcgZG91YmxlCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfcm91bmQobG9uZyBkb3VibGUgX194KSB7cmV0dXJuIHJvdW5kbChfX3gpO30KCiN1bmRlZiByb3VuZAojZGVmaW5lIHJvdW5kKF9feCkgX190Z19yb3VuZChfX3RnX3Byb21vdGUxKChfX3gpKShfX3gpKQoKLy8gc2NhbGJuCgpzdGF0aWMgZmxvYXQKICAgIF9UR19BVFRSUwogICAgX190Z19zY2FsYm4oZmxvYXQgX194LCBpbnQgX195KSB7cmV0dXJuIHNjYWxibmYoX194LCBfX3kpO30KCnN0YXRpYyBkb3VibGUKICAgIF9UR19BVFRSUwogICAgX190Z19zY2FsYm4oZG91YmxlIF9feCwgaW50IF9feSkge3JldHVybiBzY2FsYm4oX194LCBfX3kpO30KCnN0YXRpYyBsb25nIGRvdWJsZQogICAgX1RHX0FUVFJTCiAgICBfX3RnX3NjYWxibihsb25nIGRvdWJsZSBfX3gsIGludCBfX3kpIHtyZXR1cm4gc2NhbGJubChfX3gsIF9feSk7fQoKI3VuZGVmIHNjYWxibgojZGVmaW5lIHNjYWxibihfX3gsIF9feSkgX190Z19zY2FsYm4oX190Z19wcm9tb3RlMSgoX194KSkoX194KSwgX195KQoKLy8gc2NhbGJsbgoKc3RhdGljIGZsb2F0CiAgICBfVEdfQVRUUlMKICAgIF9fdGdfc2NhbGJsbihmbG9hdCBfX3gsIGxvbmcgX195KSB7cmV0dXJuIHNjYWxibG5mKF9feCwgX195KTt9CgpzdGF0aWMgZG91YmxlCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfc2NhbGJsbihkb3VibGUgX194LCBsb25nIF9feSkge3JldHVybiBzY2FsYmxuKF9feCwgX195KTt9CgpzdGF0aWMgbG9uZyBkb3VibGUKICAgIF9UR19BVFRSUwogICAgX190Z19zY2FsYmxuKGxvbmcgZG91YmxlIF9feCwgbG9uZyBfX3kpIHtyZXR1cm4gc2NhbGJsbmwoX194LCBfX3kpO30KCiN1bmRlZiBzY2FsYmxuCiNkZWZpbmUgc2NhbGJsbihfX3gsIF9feSkgX190Z19zY2FsYmxuKF9fdGdfcHJvbW90ZTEoKF9feCkpKF9feCksIF9feSkKCi8vIHRnYW1tYQoKc3RhdGljIGZsb2F0CiAgICBfVEdfQVRUUlMKICAgIF9fdGdfdGdhbW1hKGZsb2F0IF9feCkge3JldHVybiB0Z2FtbWFmKF9feCk7fQoKc3RhdGljIGRvdWJsZQogICAgX1RHX0FUVFJTCiAgICBfX3RnX3RnYW1tYShkb3VibGUgX194KSB7cmV0dXJuIHRnYW1tYShfX3gpO30KCnN0YXRpYyBsb25nIGRvdWJsZQogICAgX1RHX0FUVFJTCiAgICBfX3RnX3RnYW1tYShsb25nIGRvdWJsZSBfX3gpIHtyZXR1cm4gdGdhbW1hbChfX3gpO30KCiN1bmRlZiB0Z2FtbWEKI2RlZmluZSB0Z2FtbWEoX194KSBfX3RnX3RnYW1tYShfX3RnX3Byb21vdGUxKChfX3gpKShfX3gpKQoKLy8gdHJ1bmMKCnN0YXRpYyBmbG9hdAogICAgX1RHX0FUVFJTCiAgICBfX3RnX3RydW5jKGZsb2F0IF9feCkge3JldHVybiB0cnVuY2YoX194KTt9CgpzdGF0aWMgZG91YmxlCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfdHJ1bmMoZG91YmxlIF9feCkge3JldHVybiB0cnVuYyhfX3gpO30KCnN0YXRpYyBsb25nIGRvdWJsZQogICAgX1RHX0FUVFJTCiAgICBfX3RnX3RydW5jKGxvbmcgZG91YmxlIF9feCkge3JldHVybiB0cnVuY2woX194KTt9CgojdW5kZWYgdHJ1bmMKI2RlZmluZSB0cnVuYyhfX3gpIF9fdGdfdHJ1bmMoX190Z19wcm9tb3RlMSgoX194KSkoX194KSkKCi8vIGNhcmcKCnN0YXRpYyBmbG9hdAogICAgX1RHX0FUVFJTCiAgICBfX3RnX2NhcmcoZmxvYXQgX194KSB7cmV0dXJuIGF0YW4yZigwLkYsIF9feCk7fQoKc3RhdGljIGRvdWJsZQogICAgX1RHX0FUVFJTCiAgICBfX3RnX2NhcmcoZG91YmxlIF9feCkge3JldHVybiBhdGFuMigwLiwgX194KTt9CgpzdGF0aWMgbG9uZyBkb3VibGUKICAgIF9UR19BVFRSUwogICAgX190Z19jYXJnKGxvbmcgZG91YmxlIF9feCkge3JldHVybiBhdGFuMmwoMC5MLCBfX3gpO30KCnN0YXRpYyBmbG9hdAogICAgX1RHX0FUVFJTCiAgICBfX3RnX2NhcmcoZmxvYXQgX0NvbXBsZXggX194KSB7cmV0dXJuIGNhcmdmKF9feCk7fQoKc3RhdGljIGRvdWJsZQogICAgX1RHX0FUVFJTCiAgICBfX3RnX2NhcmcoZG91YmxlIF9Db21wbGV4IF9feCkge3JldHVybiBjYXJnKF9feCk7fQoKc3RhdGljIGxvbmcgZG91YmxlCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfY2FyZyhsb25nIGRvdWJsZSBfQ29tcGxleCBfX3gpIHtyZXR1cm4gY2FyZ2woX194KTt9CgojdW5kZWYgY2FyZwojZGVmaW5lIGNhcmcoX194KSBfX3RnX2NhcmcoX190Z19wcm9tb3RlMSgoX194KSkoX194KSkKCi8vIGNpbWFnCgpzdGF0aWMgZmxvYXQKICAgIF9UR19BVFRSUwogICAgX190Z19jaW1hZyhmbG9hdCBfX3gpIHtyZXR1cm4gMDt9CgpzdGF0aWMgZG91YmxlCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfY2ltYWcoZG91YmxlIF9feCkge3JldHVybiAwO30KCnN0YXRpYyBsb25nIGRvdWJsZQogICAgX1RHX0FUVFJTCiAgICBfX3RnX2NpbWFnKGxvbmcgZG91YmxlIF9feCkge3JldHVybiAwO30KCnN0YXRpYyBmbG9hdAogICAgX1RHX0FUVFJTCiAgICBfX3RnX2NpbWFnKGZsb2F0IF9Db21wbGV4IF9feCkge3JldHVybiBjaW1hZ2YoX194KTt9CgpzdGF0aWMgZG91YmxlCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfY2ltYWcoZG91YmxlIF9Db21wbGV4IF9feCkge3JldHVybiBjaW1hZyhfX3gpO30KCnN0YXRpYyBsb25nIGRvdWJsZQogICAgX1RHX0FUVFJTCiAgICBfX3RnX2NpbWFnKGxvbmcgZG91YmxlIF9Db21wbGV4IF9feCkge3JldHVybiBjaW1hZ2woX194KTt9CgojdW5kZWYgY2ltYWcKI2RlZmluZSBjaW1hZyhfX3gpIF9fdGdfY2ltYWcoX190Z19wcm9tb3RlMSgoX194KSkoX194KSkKCi8vIGNvbmoKCnN0YXRpYyBmbG9hdCBfQ29tcGxleAogICAgX1RHX0FUVFJTCiAgICBfX3RnX2NvbmooZmxvYXQgX194KSB7cmV0dXJuIF9feDt9CgpzdGF0aWMgZG91YmxlIF9Db21wbGV4CiAgICBfVEdfQVRUUlMKICAgIF9fdGdfY29uaihkb3VibGUgX194KSB7cmV0dXJuIF9feDt9CgpzdGF0aWMgbG9uZyBkb3VibGUgX0NvbXBsZXgKICAgIF9UR19BVFRSUwogICAgX190Z19jb25qKGxvbmcgZG91YmxlIF9feCkge3JldHVybiBfX3g7fQoKc3RhdGljIGZsb2F0IF9Db21wbGV4CiAgICBfVEdfQVRUUlMKICAgIF9fdGdfY29uaihmbG9hdCBfQ29tcGxleCBfX3gpIHtyZXR1cm4gY29uamYoX194KTt9CgpzdGF0aWMgZG91YmxlIF9Db21wbGV4CiAgICBfVEdfQVRUUlMKICAgIF9fdGdfY29uaihkb3VibGUgX0NvbXBsZXggX194KSB7cmV0dXJuIGNvbmooX194KTt9CgpzdGF0aWMgbG9uZyBkb3VibGUgX0NvbXBsZXgKICAgIF9UR19BVFRSUwogICAgX190Z19jb25qKGxvbmcgZG91YmxlIF9Db21wbGV4IF9feCkge3JldHVybiBjb25qbChfX3gpO30KCiN1bmRlZiBjb25qCiNkZWZpbmUgY29uaihfX3gpIF9fdGdfY29uaihfX3RnX3Byb21vdGUxKChfX3gpKShfX3gpKQoKLy8gY3Byb2oKCnN0YXRpYyBmbG9hdCBfQ29tcGxleAogICAgX1RHX0FUVFJTCiAgICBfX3RnX2Nwcm9qKGZsb2F0IF9feCkge3JldHVybiBjcHJvamYoX194KTt9CgpzdGF0aWMgZG91YmxlIF9Db21wbGV4CiAgICBfVEdfQVRUUlMKICAgIF9fdGdfY3Byb2ooZG91YmxlIF9feCkge3JldHVybiBjcHJvaihfX3gpO30KCnN0YXRpYyBsb25nIGRvdWJsZSBfQ29tcGxleAogICAgX1RHX0FUVFJTCiAgICBfX3RnX2Nwcm9qKGxvbmcgZG91YmxlIF9feCkge3JldHVybiBjcHJvamwoX194KTt9CgpzdGF0aWMgZmxvYXQgX0NvbXBsZXgKICAgIF9UR19BVFRSUwogICAgX190Z19jcHJvaihmbG9hdCBfQ29tcGxleCBfX3gpIHtyZXR1cm4gY3Byb2pmKF9feCk7fQoKc3RhdGljIGRvdWJsZSBfQ29tcGxleAogICAgX1RHX0FUVFJTCiAgICBfX3RnX2Nwcm9qKGRvdWJsZSBfQ29tcGxleCBfX3gpIHtyZXR1cm4gY3Byb2ooX194KTt9CgpzdGF0aWMgbG9uZyBkb3VibGUgX0NvbXBsZXgKICAgIF9UR19BVFRSUwogICAgX190Z19jcHJvaihsb25nIGRvdWJsZSBfQ29tcGxleCBfX3gpIHtyZXR1cm4gY3Byb2psKF9feCk7fQoKI3VuZGVmIGNwcm9qCiNkZWZpbmUgY3Byb2ooX194KSBfX3RnX2Nwcm9qKF9fdGdfcHJvbW90ZTEoKF9feCkpKF9feCkpCgovLyBjcmVhbAoKc3RhdGljIGZsb2F0CiAgICBfVEdfQVRUUlMKICAgIF9fdGdfY3JlYWwoZmxvYXQgX194KSB7cmV0dXJuIF9feDt9CgpzdGF0aWMgZG91YmxlCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfY3JlYWwoZG91YmxlIF9feCkge3JldHVybiBfX3g7fQoKc3RhdGljIGxvbmcgZG91YmxlCiAgICBfVEdfQVRUUlMKICAgIF9fdGdfY3JlYWwobG9uZyBkb3VibGUgX194KSB7cmV0dXJuIF9feDt9CgpzdGF0aWMgZmxvYXQKICAgIF9UR19BVFRSUwogICAgX190Z19jcmVhbChmbG9hdCBfQ29tcGxleCBfX3gpIHtyZXR1cm4gY3JlYWxmKF9feCk7fQoKc3RhdGljIGRvdWJsZQogICAgX1RHX0FUVFJTCiAgICBfX3RnX2NyZWFsKGRvdWJsZSBfQ29tcGxleCBfX3gpIHtyZXR1cm4gY3JlYWwoX194KTt9CgpzdGF0aWMgbG9uZyBkb3VibGUKICAgIF9UR19BVFRSUwogICAgX190Z19jcmVhbChsb25nIGRvdWJsZSBfQ29tcGxleCBfX3gpIHtyZXR1cm4gY3JlYWxsKF9feCk7fQoKI3VuZGVmIGNyZWFsCiNkZWZpbmUgY3JlYWwoX194KSBfX3RnX2NyZWFsKF9fdGdfcHJvbW90ZTEoKF9feCkpKF9feCkpCgojdW5kZWYgX1RHX0FUVFJTcAojdW5kZWYgX1RHX0FUVFJTCgojZW5kaWYgLyogX19jcGx1c3BsdXMgKi8KI2VuZGlmIC8qIF9faGFzX2luY2x1ZGVfbmV4dCAqLwojZW5kaWYgLyogX19DTEFOR19UR01BVEhfSCAqLwoAdmFkZWZzLmgALyo9PT0tLS0tIHZhcmFyZ3MuaCAtIFZhcmlhYmxlIGFyZ3VtZW50IGhhbmRsaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KKgoqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCiogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgoqCio9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQoqLwojaWZuZGVmIF9fVkFSQVJHU19ICiNkZWZpbmUgX19WQVJBUkdTX0gKICAjZXJyb3IgIlBsZWFzZSB1c2UgPHN0ZGFyZy5oPiBpbnN0ZWFkIG9mIDx2YXJhcmdzLmg+IgojZW5kaWYKAC8qPT09LS0tLSB3YXNtX3NpbWQxMjguaCAtIFdlYkFzc2VtYmx5IHBvcnRhYmxlIFNJTUQgaW50cmluc2ljcyAtLS0tLS0tLS0tLS09PT0KICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKi8KCiNpZm5kZWYgX19XQVNNX1NJTUQxMjhfSAojZGVmaW5lIF9fV0FTTV9TSU1EMTI4X0gKCiNpbmNsdWRlIDxzdGRib29sLmg+CiNpbmNsdWRlIDxzdGRpbnQuaD4KCi8vIFVzZXItZmFjaW5nIHR5cGUKdHlwZWRlZiBpbnQzMl90IHYxMjhfdCBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oMTYpLCBfX2FsaWduZWRfXygxNikpKTsKCi8vIEludGVybmFsIHR5cGVzIGRldGVybWluZWQgYnkgY2xhbmcgYnVpbHRpbiBkZWZpbml0aW9ucwp0eXBlZGVmIGludDMyX3QgX192MTI4X3UgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDE2KSwgX19hbGlnbmVkX18oMSkpKTsKdHlwZWRlZiBzaWduZWQgY2hhciBfX2k4eDE2CiAgICBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oMTYpLCBfX2FsaWduZWRfXygxNikpKTsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdTh4MTYKICAgIF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXygxNiksIF9fYWxpZ25lZF9fKDE2KSkpOwp0eXBlZGVmIHNob3J0IF9faTE2eDggX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDE2KSwgX19hbGlnbmVkX18oMTYpKSk7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX191MTZ4OAogICAgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDE2KSwgX19hbGlnbmVkX18oMTYpKSk7CnR5cGVkZWYgaW50IF9faTMyeDQgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDE2KSwgX19hbGlnbmVkX18oMTYpKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdTMyeDQKICAgIF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXygxNiksIF9fYWxpZ25lZF9fKDE2KSkpOwp0eXBlZGVmIGxvbmcgbG9uZyBfX2k2NHgyIF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXygxNiksIF9fYWxpZ25lZF9fKDE2KSkpOwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3U2NHgyCiAgICBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oMTYpLCBfX2FsaWduZWRfXygxNikpKTsKdHlwZWRlZiBmbG9hdCBfX2YzMng0IF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXygxNiksIF9fYWxpZ25lZF9fKDE2KSkpOwp0eXBlZGVmIGRvdWJsZSBfX2Y2NHgyIF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXygxNiksIF9fYWxpZ25lZF9fKDE2KSkpOwoKdHlwZWRlZiBzaWduZWQgY2hhciBfX2k4eDggX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDgpLCBfX2FsaWduZWRfXyg4KSkpOwp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191OHg4CiAgICBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oOCksIF9fYWxpZ25lZF9fKDgpKSk7CnR5cGVkZWYgc2hvcnQgX19pMTZ4NCBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oOCksIF9fYWxpZ25lZF9fKDgpKSk7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX191MTZ4NAogICAgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDgpLCBfX2FsaWduZWRfXyg4KSkpOwp0eXBlZGVmIGludCBfX2kzMngyIF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXyg4KSwgX19hbGlnbmVkX18oOCkpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191MzJ4MgogICAgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDgpLCBfX2FsaWduZWRfXyg4KSkpOwp0eXBlZGVmIGZsb2F0IF9fZjMyeDIgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDgpLCBfX2FsaWduZWRfXyg4KSkpOwoKI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oInNpbWQxMjgiKSwgICAgICAgIFwKICAgICAgICAgICAgICAgICBfX21pbl92ZWN0b3Jfd2lkdGhfXygxMjgpKSkKCiNkZWZpbmUgX19SRVFVSVJFX0NPTlNUQU5UKGMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19hdHRyaWJ1dGVfXygoX19kaWFnbm9zZV9pZl9fKCFfX2J1aWx0aW5fY29uc3RhbnRfcChjKSwgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNjICIgbXVzdCBiZSBjb25zdGFudCIsICJlcnJvciIpKSkKCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV92MTI4X2xvYWQoY29uc3Qgdm9pZCAqX19tZW0pIHsKICAvLyBVQi1mcmVlIHVuYWxpZ25lZCBhY2Nlc3MgY29waWVkIGZyb20geG1taW50cmluLmgKICBzdHJ1Y3QgX193YXNtX3YxMjhfbG9hZF9zdHJ1Y3QgewogICAgX192MTI4X3UgX192OwogIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOwogIHJldHVybiAoKGNvbnN0IHN0cnVjdCBfX3dhc21fdjEyOF9sb2FkX3N0cnVjdCAqKV9fbWVtKS0+X192Owp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTCndhc21fdjEyOF9sb2FkOF9zcGxhdChjb25zdCB2b2lkICpfX21lbSkgewogIHN0cnVjdCBfX3dhc21fdjEyOF9sb2FkOF9zcGxhdF9zdHJ1Y3QgewogICAgdWludDhfdCBfX3Y7CiAgfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19fKSk7CiAgdWludDhfdCBfX3YgPSAoKGNvbnN0IHN0cnVjdCBfX3dhc21fdjEyOF9sb2FkOF9zcGxhdF9zdHJ1Y3QgKilfX21lbSktPl9fdjsKICByZXR1cm4gKHYxMjhfdCkoX191OHgxNil7X192LCBfX3YsIF9fdiwgX192LCBfX3YsIF9fdiwgX192LCBfX3YsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fdiwgX192LCBfX3YsIF9fdiwgX192LCBfX3YsIF9fdiwgX192fTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUwp3YXNtX3YxMjhfbG9hZDE2X3NwbGF0KGNvbnN0IHZvaWQgKl9fbWVtKSB7CiAgc3RydWN0IF9fd2FzbV92MTI4X2xvYWQxNl9zcGxhdF9zdHJ1Y3QgewogICAgdWludDE2X3QgX192OwogIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOwogIHVpbnQxNl90IF9fdiA9ICgoY29uc3Qgc3RydWN0IF9fd2FzbV92MTI4X2xvYWQxNl9zcGxhdF9zdHJ1Y3QgKilfX21lbSktPl9fdjsKICByZXR1cm4gKHYxMjhfdCkoX191MTZ4OCl7X192LCBfX3YsIF9fdiwgX192LCBfX3YsIF9fdiwgX192LCBfX3Z9Owp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTCndhc21fdjEyOF9sb2FkMzJfc3BsYXQoY29uc3Qgdm9pZCAqX19tZW0pIHsKICBzdHJ1Y3QgX193YXNtX3YxMjhfbG9hZDMyX3NwbGF0X3N0cnVjdCB7CiAgICB1aW50MzJfdCBfX3Y7CiAgfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19fKSk7CiAgdWludDMyX3QgX192ID0gKChjb25zdCBzdHJ1Y3QgX193YXNtX3YxMjhfbG9hZDMyX3NwbGF0X3N0cnVjdCAqKV9fbWVtKS0+X192OwogIHJldHVybiAodjEyOF90KShfX3UzMng0KXtfX3YsIF9fdiwgX192LCBfX3Z9Owp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTCndhc21fdjEyOF9sb2FkNjRfc3BsYXQoY29uc3Qgdm9pZCAqX19tZW0pIHsKICBzdHJ1Y3QgX193YXNtX3YxMjhfbG9hZDY0X3NwbGF0X3N0cnVjdCB7CiAgICB1aW50NjRfdCBfX3Y7CiAgfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19fKSk7CiAgdWludDY0X3QgX192ID0gKChjb25zdCBzdHJ1Y3QgX193YXNtX3YxMjhfbG9hZDY0X3NwbGF0X3N0cnVjdCAqKV9fbWVtKS0+X192OwogIHJldHVybiAodjEyOF90KShfX3U2NHgyKXtfX3YsIF9fdn07Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMKd2FzbV9pMTZ4OF9sb2FkOHg4KGNvbnN0IHZvaWQgKl9fbWVtKSB7CiAgc3RydWN0IF9fd2FzbV9pMTZ4OF9sb2FkOHg4X3N0cnVjdCB7CiAgICBfX2k4eDggX192OwogIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOwogIF9faTh4OCBfX3YgPSAoKGNvbnN0IHN0cnVjdCBfX3dhc21faTE2eDhfbG9hZDh4OF9zdHJ1Y3QgKilfX21lbSktPl9fdjsKICByZXR1cm4gKHYxMjhfdCkgX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoX192LCBfX2kxNng4KTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUwp3YXNtX3UxNng4X2xvYWQ4eDgoY29uc3Qgdm9pZCAqX19tZW0pIHsKICBzdHJ1Y3QgX193YXNtX3UxNng4X2xvYWQ4eDhfc3RydWN0IHsKICAgIF9fdTh4OCBfX3Y7CiAgfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19fKSk7CiAgX191OHg4IF9fdiA9ICgoY29uc3Qgc3RydWN0IF9fd2FzbV91MTZ4OF9sb2FkOHg4X3N0cnVjdCAqKV9fbWVtKS0+X192OwogIHJldHVybiAodjEyOF90KSBfX2J1aWx0aW5fY29udmVydHZlY3RvcihfX3YsIF9fdTE2eDgpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTCndhc21faTMyeDRfbG9hZDE2eDQoY29uc3Qgdm9pZCAqX19tZW0pIHsKICBzdHJ1Y3QgX193YXNtX2kzMng0X2xvYWQxNng0X3N0cnVjdCB7CiAgICBfX2kxNng0IF9fdjsKICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsKICBfX2kxNng0IF9fdiA9ICgoY29uc3Qgc3RydWN0IF9fd2FzbV9pMzJ4NF9sb2FkMTZ4NF9zdHJ1Y3QgKilfX21lbSktPl9fdjsKICByZXR1cm4gKHYxMjhfdCkgX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoX192LCBfX2kzMng0KTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUwp3YXNtX3UzMng0X2xvYWQxNng0KGNvbnN0IHZvaWQgKl9fbWVtKSB7CiAgc3RydWN0IF9fd2FzbV91MzJ4NF9sb2FkMTZ4NF9zdHJ1Y3QgewogICAgX191MTZ4NCBfX3Y7CiAgfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19fKSk7CiAgX191MTZ4NCBfX3YgPSAoKGNvbnN0IHN0cnVjdCBfX3dhc21fdTMyeDRfbG9hZDE2eDRfc3RydWN0ICopX19tZW0pLT5fX3Y7CiAgcmV0dXJuICh2MTI4X3QpIF9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKF9fdiwgX191MzJ4NCk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMKd2FzbV9pNjR4Ml9sb2FkMzJ4Mihjb25zdCB2b2lkICpfX21lbSkgewogIHN0cnVjdCBfX3dhc21faTY0eDJfbG9hZDMyeDJfc3RydWN0IHsKICAgIF9faTMyeDIgX192OwogIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOwogIF9faTMyeDIgX192ID0gKChjb25zdCBzdHJ1Y3QgX193YXNtX2k2NHgyX2xvYWQzMngyX3N0cnVjdCAqKV9fbWVtKS0+X192OwogIHJldHVybiAodjEyOF90KSBfX2J1aWx0aW5fY29udmVydHZlY3RvcihfX3YsIF9faTY0eDIpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTCndhc21fdTY0eDJfbG9hZDMyeDIoY29uc3Qgdm9pZCAqX19tZW0pIHsKICBzdHJ1Y3QgX193YXNtX3U2NHgyX2xvYWQzMngyX3N0cnVjdCB7CiAgICBfX3UzMngyIF9fdjsKICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsKICBfX3UzMngyIF9fdiA9ICgoY29uc3Qgc3RydWN0IF9fd2FzbV91NjR4Ml9sb2FkMzJ4Ml9zdHJ1Y3QgKilfX21lbSktPl9fdjsKICByZXR1cm4gKHYxMjhfdCkgX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoX192LCBfX3U2NHgyKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUwp3YXNtX3YxMjhfbG9hZDMyX3plcm8oY29uc3Qgdm9pZCAqX19tZW0pIHsKICBzdHJ1Y3QgX193YXNtX3YxMjhfbG9hZDMyX3plcm9fc3RydWN0IHsKICAgIGludDMyX3QgX192OwogIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOwogIGludDMyX3QgX192ID0gKChjb25zdCBzdHJ1Y3QgX193YXNtX3YxMjhfbG9hZDMyX3plcm9fc3RydWN0ICopX19tZW0pLT5fX3Y7CiAgcmV0dXJuICh2MTI4X3QpKF9faTMyeDQpe19fdiwgMCwgMCwgMH07Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMKd2FzbV92MTI4X2xvYWQ2NF96ZXJvKGNvbnN0IHZvaWQgKl9fbWVtKSB7CiAgc3RydWN0IF9fd2FzbV92MTI4X2xvYWQ2NF96ZXJvX3N0cnVjdCB7CiAgICBpbnQ2NF90IF9fdjsKICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsKICBpbnQ2NF90IF9fdiA9ICgoY29uc3Qgc3RydWN0IF9fd2FzbV92MTI4X2xvYWQ2NF96ZXJvX3N0cnVjdCAqKV9fbWVtKS0+X192OwogIHJldHVybiAodjEyOF90KShfX2k2NHgyKXtfX3YsIDB9Owp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21fdjEyOF9sb2FkOF9sYW5lKAogICAgY29uc3Qgdm9pZCAqX19tZW0sIHYxMjhfdCBfX3ZlYywgaW50IF9faSkgX19SRVFVSVJFX0NPTlNUQU5UKF9faSkgewogIHN0cnVjdCBfX3dhc21fdjEyOF9sb2FkOF9sYW5lX3N0cnVjdCB7CiAgICBpbnQ4X3QgX192OwogIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOwogIGludDhfdCBfX3YgPSAoKGNvbnN0IHN0cnVjdCBfX3dhc21fdjEyOF9sb2FkOF9sYW5lX3N0cnVjdCAqKV9fbWVtKS0+X192OwogIF9faTh4MTYgX19yZXQgPSAoX19pOHgxNilfX3ZlYzsKICBfX3JldFtfX2ldID0gX192OwogIHJldHVybiAodjEyOF90KV9fcmV0Owp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21fdjEyOF9sb2FkMTZfbGFuZSgKICAgIGNvbnN0IHZvaWQgKl9fbWVtLCB2MTI4X3QgX192ZWMsIGludCBfX2kpIF9fUkVRVUlSRV9DT05TVEFOVChfX2kpIHsKICBzdHJ1Y3QgX193YXNtX3YxMjhfbG9hZDE2X2xhbmVfc3RydWN0IHsKICAgIGludDE2X3QgX192OwogIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOwogIGludDE2X3QgX192ID0gKChjb25zdCBzdHJ1Y3QgX193YXNtX3YxMjhfbG9hZDE2X2xhbmVfc3RydWN0ICopX19tZW0pLT5fX3Y7CiAgX19pMTZ4OCBfX3JldCA9IChfX2kxNng4KV9fdmVjOwogIF9fcmV0W19faV0gPSBfX3Y7CiAgcmV0dXJuICh2MTI4X3QpX19yZXQ7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV92MTI4X2xvYWQzMl9sYW5lKAogICAgY29uc3Qgdm9pZCAqX19tZW0sIHYxMjhfdCBfX3ZlYywgaW50IF9faSkgX19SRVFVSVJFX0NPTlNUQU5UKF9faSkgewogIHN0cnVjdCBfX3dhc21fdjEyOF9sb2FkMzJfbGFuZV9zdHJ1Y3QgewogICAgaW50MzJfdCBfX3Y7CiAgfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19fKSk7CiAgaW50MzJfdCBfX3YgPSAoKGNvbnN0IHN0cnVjdCBfX3dhc21fdjEyOF9sb2FkMzJfbGFuZV9zdHJ1Y3QgKilfX21lbSktPl9fdjsKICBfX2kzMng0IF9fcmV0ID0gKF9faTMyeDQpX192ZWM7CiAgX19yZXRbX19pXSA9IF9fdjsKICByZXR1cm4gKHYxMjhfdClfX3JldDsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX3YxMjhfbG9hZDY0X2xhbmUoCiAgICBjb25zdCB2b2lkICpfX21lbSwgdjEyOF90IF9fdmVjLCBpbnQgX19pKSBfX1JFUVVJUkVfQ09OU1RBTlQoX19pKSB7CiAgc3RydWN0IF9fd2FzbV92MTI4X2xvYWQ2NF9sYW5lX3N0cnVjdCB7CiAgICBpbnQ2NF90IF9fdjsKICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsKICBpbnQ2NF90IF9fdiA9ICgoY29uc3Qgc3RydWN0IF9fd2FzbV92MTI4X2xvYWQ2NF9sYW5lX3N0cnVjdCAqKV9fbWVtKS0+X192OwogIF9faTY0eDIgX19yZXQgPSAoX19pNjR4MilfX3ZlYzsKICBfX3JldFtfX2ldID0gX192OwogIHJldHVybiAodjEyOF90KV9fcmV0Owp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX3YxMjhfc3RvcmUodm9pZCAqX19tZW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MTI4X3QgX19hKSB7CiAgLy8gVUItZnJlZSB1bmFsaWduZWQgYWNjZXNzIGNvcGllZCBmcm9tIHhtbWludHJpbi5oCiAgc3RydWN0IF9fd2FzbV92MTI4X3N0b3JlX3N0cnVjdCB7CiAgICBfX3YxMjhfdSBfX3Y7CiAgfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19fKSk7CiAgKChzdHJ1Y3QgX193YXNtX3YxMjhfc3RvcmVfc3RydWN0ICopX19tZW0pLT5fX3YgPSBfX2E7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21fdjEyOF9zdG9yZThfbGFuZSh2b2lkICpfX21lbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYxMjhfdCBfX3ZlYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2kpCiAgICBfX1JFUVVJUkVfQ09OU1RBTlQoX19pKSB7CiAgc3RydWN0IF9fd2FzbV92MTI4X3N0b3JlOF9sYW5lX3N0cnVjdCB7CiAgICBpbnQ4X3QgX192OwogIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOwogICgoc3RydWN0IF9fd2FzbV92MTI4X3N0b3JlOF9sYW5lX3N0cnVjdCAqKV9fbWVtKS0+X192ID0gKChfX2k4eDE2KV9fdmVjKVtfX2ldOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX3YxMjhfc3RvcmUxNl9sYW5lKHZvaWQgKl9fbWVtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYxMjhfdCBfX3ZlYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19pKQogICAgX19SRVFVSVJFX0NPTlNUQU5UKF9faSkgewogIHN0cnVjdCBfX3dhc21fdjEyOF9zdG9yZTE2X2xhbmVfc3RydWN0IHsKICAgIGludDE2X3QgX192OwogIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOwogICgoc3RydWN0IF9fd2FzbV92MTI4X3N0b3JlMTZfbGFuZV9zdHJ1Y3QgKilfX21lbSktPl9fdiA9CiAgICAgICgoX19pMTZ4OClfX3ZlYylbX19pXTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV92MTI4X3N0b3JlMzJfbGFuZSh2b2lkICpfX21lbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MTI4X3QgX192ZWMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9faSkKICAgIF9fUkVRVUlSRV9DT05TVEFOVChfX2kpIHsKICBzdHJ1Y3QgX193YXNtX3YxMjhfc3RvcmUzMl9sYW5lX3N0cnVjdCB7CiAgICBpbnQzMl90IF9fdjsKICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsKICAoKHN0cnVjdCBfX3dhc21fdjEyOF9zdG9yZTMyX2xhbmVfc3RydWN0ICopX19tZW0pLT5fX3YgPQogICAgICAoKF9faTMyeDQpX192ZWMpW19faV07Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21fdjEyOF9zdG9yZTY0X2xhbmUodm9pZCAqX19tZW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEyOF90IF9fdmVjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2kpCiAgICBfX1JFUVVJUkVfQ09OU1RBTlQoX19pKSB7CiAgc3RydWN0IF9fd2FzbV92MTI4X3N0b3JlNjRfbGFuZV9zdHJ1Y3QgewogICAgaW50NjRfdCBfX3Y7CiAgfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19fKSk7CiAgKChzdHJ1Y3QgX193YXNtX3YxMjhfc3RvcmU2NF9sYW5lX3N0cnVjdCAqKV9fbWVtKS0+X192ID0KICAgICAgKChfX2k2NHgyKV9fdmVjKVtfX2ldOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTCndhc21faTh4MTZfbWFrZShpbnQ4X3QgX19jMCwgaW50OF90IF9fYzEsIGludDhfdCBfX2MyLCBpbnQ4X3QgX19jMywgaW50OF90IF9fYzQsCiAgICAgICAgICAgICAgICBpbnQ4X3QgX19jNSwgaW50OF90IF9fYzYsIGludDhfdCBfX2M3LCBpbnQ4X3QgX19jOCwgaW50OF90IF9fYzksCiAgICAgICAgICAgICAgICBpbnQ4X3QgX19jMTAsIGludDhfdCBfX2MxMSwgaW50OF90IF9fYzEyLCBpbnQ4X3QgX19jMTMsCiAgICAgICAgICAgICAgICBpbnQ4X3QgX19jMTQsIGludDhfdCBfX2MxNSkgewogIHJldHVybiAodjEyOF90KShfX2k4eDE2KXtfX2MwLCAgX19jMSwgIF9fYzIsICBfX2MzLCBfX2M0LCAgX19jNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jNiwgIF9fYzcsICBfX2M4LCAgX19jOSwgX19jMTAsIF9fYzExLAogICAgICAgICAgICAgICAgICAgICAgICAgICBfX2MxMiwgX19jMTMsIF9fYzE0LCBfX2MxNX07Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMKd2FzbV91OHgxNl9tYWtlKHVpbnQ4X3QgX19jMCwgdWludDhfdCBfX2MxLCB1aW50OF90IF9fYzIsIHVpbnQ4X3QgX19jMywKICAgICAgICAgICAgICAgIHVpbnQ4X3QgX19jNCwgdWludDhfdCBfX2M1LCB1aW50OF90IF9fYzYsIHVpbnQ4X3QgX19jNywKICAgICAgICAgICAgICAgIHVpbnQ4X3QgX19jOCwgdWludDhfdCBfX2M5LCB1aW50OF90IF9fYzEwLCB1aW50OF90IF9fYzExLAogICAgICAgICAgICAgICAgdWludDhfdCBfX2MxMiwgdWludDhfdCBfX2MxMywgdWludDhfdCBfX2MxNCwgdWludDhfdCBfX2MxNSkgewogIHJldHVybiAodjEyOF90KShfX3U4eDE2KXtfX2MwLCAgX19jMSwgIF9fYzIsICBfX2MzLCBfX2M0LCAgX19jNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jNiwgIF9fYzcsICBfX2M4LCAgX19jOSwgX19jMTAsIF9fYzExLAogICAgICAgICAgICAgICAgICAgICAgICAgICBfX2MxMiwgX19jMTMsIF9fYzE0LCBfX2MxNX07Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMKd2FzbV9pMTZ4OF9tYWtlKGludDE2X3QgX19jMCwgaW50MTZfdCBfX2MxLCBpbnQxNl90IF9fYzIsIGludDE2X3QgX19jMywKICAgICAgICAgICAgICAgIGludDE2X3QgX19jNCwgaW50MTZfdCBfX2M1LCBpbnQxNl90IF9fYzYsIGludDE2X3QgX19jNykgewogIHJldHVybiAodjEyOF90KShfX2kxNng4KXtfX2MwLCBfX2MxLCBfX2MyLCBfX2MzLCBfX2M0LCBfX2M1LCBfX2M2LCBfX2M3fTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUwp3YXNtX3UxNng4X21ha2UodWludDE2X3QgX19jMCwgdWludDE2X3QgX19jMSwgdWludDE2X3QgX19jMiwgdWludDE2X3QgX19jMywKICAgICAgICAgICAgICAgIHVpbnQxNl90IF9fYzQsIHVpbnQxNl90IF9fYzUsIHVpbnQxNl90IF9fYzYsIHVpbnQxNl90IF9fYzcpIHsKICByZXR1cm4gKHYxMjhfdCkoX191MTZ4OCl7X19jMCwgX19jMSwgX19jMiwgX19jMywgX19jNCwgX19jNSwgX19jNiwgX19jN307Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9pMzJ4NF9tYWtlKGludDMyX3QgX19jMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBfX2MxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IF9fYzIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgX19jMykgewogIHJldHVybiAodjEyOF90KShfX2kzMng0KXtfX2MwLCBfX2MxLCBfX2MyLCBfX2MzfTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX3UzMng0X21ha2UodWludDMyX3QgX19jMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgX19jMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgX19jMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgX19jMykgewogIHJldHVybiAodjEyOF90KShfX3UzMng0KXtfX2MwLCBfX2MxLCBfX2MyLCBfX2MzfTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX2k2NHgyX21ha2UoaW50NjRfdCBfX2MwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IF9fYzEpIHsKICByZXR1cm4gKHYxMjhfdCkoX19pNjR4Mil7X19jMCwgX19jMX07Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV91NjR4Ml9tYWtlKHVpbnQ2NF90IF9fYzAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IF9fYzEpIHsKICByZXR1cm4gKHYxMjhfdCkoX191NjR4Mil7X19jMCwgX19jMX07Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9mMzJ4NF9tYWtlKGZsb2F0IF9fYzAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IF9fYzEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IF9fYzIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IF9fYzMpIHsKICByZXR1cm4gKHYxMjhfdCkoX19mMzJ4NCl7X19jMCwgX19jMSwgX19jMiwgX19jM307Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9mNjR4Ml9tYWtlKGRvdWJsZSBfX2MwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgX19jMSkgewogIHJldHVybiAodjEyOF90KShfX2Y2NHgyKXtfX2MwLCBfX2MxfTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUwp3YXNtX2k4eDE2X2NvbnN0KGludDhfdCBfX2MwLCBpbnQ4X3QgX19jMSwgaW50OF90IF9fYzIsIGludDhfdCBfX2MzLAogICAgICAgICAgICAgICAgIGludDhfdCBfX2M0LCBpbnQ4X3QgX19jNSwgaW50OF90IF9fYzYsIGludDhfdCBfX2M3LAogICAgICAgICAgICAgICAgIGludDhfdCBfX2M4LCBpbnQ4X3QgX19jOSwgaW50OF90IF9fYzEwLCBpbnQ4X3QgX19jMTEsCiAgICAgICAgICAgICAgICAgaW50OF90IF9fYzEyLCBpbnQ4X3QgX19jMTMsIGludDhfdCBfX2MxNCwgaW50OF90IF9fYzE1KQogICAgX19SRVFVSVJFX0NPTlNUQU5UKF9fYzApIF9fUkVRVUlSRV9DT05TVEFOVChfX2MxKSBfX1JFUVVJUkVfQ09OU1RBTlQoX19jMikKICAgICAgICBfX1JFUVVJUkVfQ09OU1RBTlQoX19jMykgX19SRVFVSVJFX0NPTlNUQU5UKF9fYzQpCiAgICAgICAgICAgIF9fUkVRVUlSRV9DT05TVEFOVChfX2M1KSBfX1JFUVVJUkVfQ09OU1RBTlQoX19jNikKICAgICAgICAgICAgICAgIF9fUkVRVUlSRV9DT05TVEFOVChfX2M3KSBfX1JFUVVJUkVfQ09OU1RBTlQoX19jOCkKICAgICAgICAgICAgICAgICAgICBfX1JFUVVJUkVfQ09OU1RBTlQoX19jOSkgX19SRVFVSVJFX0NPTlNUQU5UKF9fYzEwKQogICAgICAgICAgICAgICAgICAgICAgICBfX1JFUVVJUkVfQ09OU1RBTlQoX19jMTEpIF9fUkVRVUlSRV9DT05TVEFOVChfX2MxMikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fUkVRVUlSRV9DT05TVEFOVChfX2MxMykgX19SRVFVSVJFX0NPTlNUQU5UKF9fYzE0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fUkVRVUlSRV9DT05TVEFOVChfX2MxNSkgewogIHJldHVybiAodjEyOF90KShfX2k4eDE2KXtfX2MwLCAgX19jMSwgIF9fYzIsICBfX2MzLCBfX2M0LCAgX19jNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jNiwgIF9fYzcsICBfX2M4LCAgX19jOSwgX19jMTAsIF9fYzExLAogICAgICAgICAgICAgICAgICAgICAgICAgICBfX2MxMiwgX19jMTMsIF9fYzE0LCBfX2MxNX07Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMKd2FzbV91OHgxNl9jb25zdCh1aW50OF90IF9fYzAsIHVpbnQ4X3QgX19jMSwgdWludDhfdCBfX2MyLCB1aW50OF90IF9fYzMsCiAgICAgICAgICAgICAgICAgdWludDhfdCBfX2M0LCB1aW50OF90IF9fYzUsIHVpbnQ4X3QgX19jNiwgdWludDhfdCBfX2M3LAogICAgICAgICAgICAgICAgIHVpbnQ4X3QgX19jOCwgdWludDhfdCBfX2M5LCB1aW50OF90IF9fYzEwLCB1aW50OF90IF9fYzExLAogICAgICAgICAgICAgICAgIHVpbnQ4X3QgX19jMTIsIHVpbnQ4X3QgX19jMTMsIHVpbnQ4X3QgX19jMTQsIHVpbnQ4X3QgX19jMTUpCiAgICBfX1JFUVVJUkVfQ09OU1RBTlQoX19jMCkgX19SRVFVSVJFX0NPTlNUQU5UKF9fYzEpIF9fUkVRVUlSRV9DT05TVEFOVChfX2MyKQogICAgICAgIF9fUkVRVUlSRV9DT05TVEFOVChfX2MzKSBfX1JFUVVJUkVfQ09OU1RBTlQoX19jNCkKICAgICAgICAgICAgX19SRVFVSVJFX0NPTlNUQU5UKF9fYzUpIF9fUkVRVUlSRV9DT05TVEFOVChfX2M2KQogICAgICAgICAgICAgICAgX19SRVFVSVJFX0NPTlNUQU5UKF9fYzcpIF9fUkVRVUlSRV9DT05TVEFOVChfX2M4KQogICAgICAgICAgICAgICAgICAgIF9fUkVRVUlSRV9DT05TVEFOVChfX2M5KSBfX1JFUVVJUkVfQ09OU1RBTlQoX19jMTApCiAgICAgICAgICAgICAgICAgICAgICAgIF9fUkVRVUlSRV9DT05TVEFOVChfX2MxMSkgX19SRVFVSVJFX0NPTlNUQU5UKF9fYzEyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgX19SRVFVSVJFX0NPTlNUQU5UKF9fYzEzKSBfX1JFUVVJUkVfQ09OU1RBTlQoX19jMTQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19SRVFVSVJFX0NPTlNUQU5UKF9fYzE1KSB7CiAgcmV0dXJuICh2MTI4X3QpKF9fdTh4MTYpe19fYzAsICBfX2MxLCAgX19jMiwgIF9fYzMsIF9fYzQsICBfX2M1LAogICAgICAgICAgICAgICAgICAgICAgICAgICBfX2M2LCAgX19jNywgIF9fYzgsICBfX2M5LCBfX2MxMCwgX19jMTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fYzEyLCBfX2MxMywgX19jMTQsIF9fYzE1fTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUwp3YXNtX2kxNng4X2NvbnN0KGludDE2X3QgX19jMCwgaW50MTZfdCBfX2MxLCBpbnQxNl90IF9fYzIsIGludDE2X3QgX19jMywKICAgICAgICAgICAgICAgICBpbnQxNl90IF9fYzQsIGludDE2X3QgX19jNSwgaW50MTZfdCBfX2M2LCBpbnQxNl90IF9fYzcpCiAgICBfX1JFUVVJUkVfQ09OU1RBTlQoX19jMCkgX19SRVFVSVJFX0NPTlNUQU5UKF9fYzEpIF9fUkVRVUlSRV9DT05TVEFOVChfX2MyKQogICAgICAgIF9fUkVRVUlSRV9DT05TVEFOVChfX2MzKSBfX1JFUVVJUkVfQ09OU1RBTlQoX19jNCkKICAgICAgICAgICAgX19SRVFVSVJFX0NPTlNUQU5UKF9fYzUpIF9fUkVRVUlSRV9DT05TVEFOVChfX2M2KQogICAgICAgICAgICAgICAgX19SRVFVSVJFX0NPTlNUQU5UKF9fYzcpIHsKICByZXR1cm4gKHYxMjhfdCkoX19pMTZ4OCl7X19jMCwgX19jMSwgX19jMiwgX19jMywgX19jNCwgX19jNSwgX19jNiwgX19jN307Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMKd2FzbV91MTZ4OF9jb25zdCh1aW50MTZfdCBfX2MwLCB1aW50MTZfdCBfX2MxLCB1aW50MTZfdCBfX2MyLCB1aW50MTZfdCBfX2MzLAogICAgICAgICAgICAgICAgIHVpbnQxNl90IF9fYzQsIHVpbnQxNl90IF9fYzUsIHVpbnQxNl90IF9fYzYsIHVpbnQxNl90IF9fYzcpCiAgICBfX1JFUVVJUkVfQ09OU1RBTlQoX19jMCkgX19SRVFVSVJFX0NPTlNUQU5UKF9fYzEpIF9fUkVRVUlSRV9DT05TVEFOVChfX2MyKQogICAgICAgIF9fUkVRVUlSRV9DT05TVEFOVChfX2MzKSBfX1JFUVVJUkVfQ09OU1RBTlQoX19jNCkKICAgICAgICAgICAgX19SRVFVSVJFX0NPTlNUQU5UKF9fYzUpIF9fUkVRVUlSRV9DT05TVEFOVChfX2M2KQogICAgICAgICAgICAgICAgX19SRVFVSVJFX0NPTlNUQU5UKF9fYzcpIHsKICByZXR1cm4gKHYxMjhfdCkoX191MTZ4OCl7X19jMCwgX19jMSwgX19jMiwgX19jMywgX19jNCwgX19jNSwgX19jNiwgX19jN307Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMKd2FzbV9pMzJ4NF9jb25zdChpbnQzMl90IF9fYzAsIGludDMyX3QgX19jMSwgaW50MzJfdCBfX2MyLCBpbnQzMl90IF9fYzMpCiAgICBfX1JFUVVJUkVfQ09OU1RBTlQoX19jMCkgX19SRVFVSVJFX0NPTlNUQU5UKF9fYzEpIF9fUkVRVUlSRV9DT05TVEFOVChfX2MyKQogICAgICAgIF9fUkVRVUlSRV9DT05TVEFOVChfX2MzKSB7CiAgcmV0dXJuICh2MTI4X3QpKF9faTMyeDQpe19fYzAsIF9fYzEsIF9fYzIsIF9fYzN9Owp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTCndhc21fdTMyeDRfY29uc3QodWludDMyX3QgX19jMCwgdWludDMyX3QgX19jMSwgdWludDMyX3QgX19jMiwgdWludDMyX3QgX19jMykKICAgIF9fUkVRVUlSRV9DT05TVEFOVChfX2MwKSBfX1JFUVVJUkVfQ09OU1RBTlQoX19jMSkgX19SRVFVSVJFX0NPTlNUQU5UKF9fYzIpCiAgICAgICAgX19SRVFVSVJFX0NPTlNUQU5UKF9fYzMpIHsKICByZXR1cm4gKHYxMjhfdCkoX191MzJ4NCl7X19jMCwgX19jMSwgX19jMiwgX19jM307Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9pNjR4Ml9jb25zdChpbnQ2NF90IF9fYzAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IF9fYzEpCiAgICBfX1JFUVVJUkVfQ09OU1RBTlQoX19jMCkgX19SRVFVSVJFX0NPTlNUQU5UKF9fYzEpIHsKICByZXR1cm4gKHYxMjhfdCkoX19pNjR4Mil7X19jMCwgX19jMX07Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV91NjR4Ml9jb25zdCh1aW50NjRfdCBfX2MwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgX19jMSkKICAgIF9fUkVRVUlSRV9DT05TVEFOVChfX2MwKSBfX1JFUVVJUkVfQ09OU1RBTlQoX19jMSkgewogIHJldHVybiAodjEyOF90KShfX3U2NHgyKXtfX2MwLCBfX2MxfTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUwp3YXNtX2YzMng0X2NvbnN0KGZsb2F0IF9fYzAsIGZsb2F0IF9fYzEsIGZsb2F0IF9fYzIsIGZsb2F0IF9fYzMpCiAgICBfX1JFUVVJUkVfQ09OU1RBTlQoX19jMCkgX19SRVFVSVJFX0NPTlNUQU5UKF9fYzEpIF9fUkVRVUlSRV9DT05TVEFOVChfX2MyKQogICAgICAgIF9fUkVRVUlSRV9DT05TVEFOVChfX2MzKSB7CiAgcmV0dXJuICh2MTI4X3QpKF9fZjMyeDQpe19fYzAsIF9fYzEsIF9fYzIsIF9fYzN9Owp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21fZjY0eDJfY29uc3QoZG91YmxlIF9fYzAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgX19jMSkKICAgIF9fUkVRVUlSRV9DT05TVEFOVChfX2MwKSBfX1JFUVVJUkVfQ09OU1RBTlQoX19jMSkgewogIHJldHVybiAodjEyOF90KShfX2Y2NHgyKXtfX2MwLCBfX2MxfTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX2k4eDE2X2NvbnN0X3NwbGF0KGludDhfdCBfX2MpCiAgICBfX1JFUVVJUkVfQ09OU1RBTlQoX19jKSB7CiAgcmV0dXJuICh2MTI4X3QpKF9faTh4MTYpe19fYywgX19jLCBfX2MsIF9fYywgX19jLCBfX2MsIF9fYywgX19jLAogICAgICAgICAgICAgICAgICAgICAgICAgICBfX2MsIF9fYywgX19jLCBfX2MsIF9fYywgX19jLCBfX2MsIF9fY307Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV91OHgxNl9jb25zdF9zcGxhdCh1aW50OF90IF9fYykKICAgIF9fUkVRVUlSRV9DT05TVEFOVChfX2MpIHsKICByZXR1cm4gKHYxMjhfdCkoX191OHgxNil7X19jLCBfX2MsIF9fYywgX19jLCBfX2MsIF9fYywgX19jLCBfX2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fYywgX19jLCBfX2MsIF9fYywgX19jLCBfX2MsIF9fYywgX19jfTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX2kxNng4X2NvbnN0X3NwbGF0KGludDE2X3QgX19jKQogICAgX19SRVFVSVJFX0NPTlNUQU5UKF9fYykgewogIHJldHVybiAodjEyOF90KShfX2kxNng4KXtfX2MsIF9fYywgX19jLCBfX2MsIF9fYywgX19jLCBfX2MsIF9fY307Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV91MTZ4OF9jb25zdF9zcGxhdCh1aW50MTZfdCBfX2MpCiAgICBfX1JFUVVJUkVfQ09OU1RBTlQoX19jKSB7CiAgcmV0dXJuICh2MTI4X3QpKF9fdTE2eDgpe19fYywgX19jLCBfX2MsIF9fYywgX19jLCBfX2MsIF9fYywgX19jfTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX2kzMng0X2NvbnN0X3NwbGF0KGludDMyX3QgX19jKQogICAgX19SRVFVSVJFX0NPTlNUQU5UKF9fYykgewogIHJldHVybiAodjEyOF90KShfX2kzMng0KXtfX2MsIF9fYywgX19jLCBfX2N9Owp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21fdTMyeDRfY29uc3Rfc3BsYXQodWludDMyX3QgX19jKQogICAgX19SRVFVSVJFX0NPTlNUQU5UKF9fYykgewogIHJldHVybiAodjEyOF90KShfX3UzMng0KXtfX2MsIF9fYywgX19jLCBfX2N9Owp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21faTY0eDJfY29uc3Rfc3BsYXQoaW50NjRfdCBfX2MpCiAgICBfX1JFUVVJUkVfQ09OU1RBTlQoX19jKSB7CiAgcmV0dXJuICh2MTI4X3QpKF9faTY0eDIpe19fYywgX19jfTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX3U2NHgyX2NvbnN0X3NwbGF0KHVpbnQ2NF90IF9fYykKICAgIF9fUkVRVUlSRV9DT05TVEFOVChfX2MpIHsKICByZXR1cm4gKHYxMjhfdCkoX191NjR4Mil7X19jLCBfX2N9Owp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21fZjMyeDRfY29uc3Rfc3BsYXQoZmxvYXQgX19jKQogICAgX19SRVFVSVJFX0NPTlNUQU5UKF9fYykgewogIHJldHVybiAodjEyOF90KShfX2YzMng0KXtfX2MsIF9fYywgX19jLCBfX2N9Owp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21fZjY0eDJfY29uc3Rfc3BsYXQoZG91YmxlIF9fYykKICAgIF9fUkVRVUlSRV9DT05TVEFOVChfX2MpIHsKICByZXR1cm4gKHYxMjhfdCkoX19mNjR4Mil7X19jLCBfX2N9Owp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21faTh4MTZfc3BsYXQoaW50OF90IF9fYSkgewogIHJldHVybiAodjEyOF90KShfX2k4eDE2KXtfX2EsIF9fYSwgX19hLCBfX2EsIF9fYSwgX19hLCBfX2EsIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgX19hLCBfX2EsIF9fYSwgX19hLCBfX2EsIF9fYSwgX19hLCBfX2F9Owp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21fdTh4MTZfc3BsYXQodWludDhfdCBfX2EpIHsKICByZXR1cm4gKHYxMjhfdCkoX191OHgxNil7X19hLCBfX2EsIF9fYSwgX19hLCBfX2EsIF9fYSwgX19hLCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fYSwgX19hLCBfX2EsIF9fYSwgX19hLCBfX2EsIF9fYSwgX19hfTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50OF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX2k4eDE2X2V4dHJhY3RfbGFuZSh2MTI4X3QgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2kpCiAgICBfX1JFUVVJUkVfQ09OU1RBTlQoX19pKSB7CiAgcmV0dXJuICgoX19pOHgxNilfX2EpW19faV07Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVpbnQ4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21fdTh4MTZfZXh0cmFjdF9sYW5lKHYxMjhfdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2kpCiAgICBfX1JFUVVJUkVfQ09OU1RBTlQoX19pKSB7CiAgcmV0dXJuICgoX191OHgxNilfX2EpW19faV07Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9pOHgxNl9yZXBsYWNlX2xhbmUodjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDhfdCBfX2IpCiAgICBfX1JFUVVJUkVfQ09OU1RBTlQoX19pKSB7CiAgX19pOHgxNiBfX3YgPSAoX19pOHgxNilfX2E7CiAgX192W19faV0gPSBfX2I7CiAgcmV0dXJuICh2MTI4X3QpX192Owp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21fdTh4MTZfcmVwbGFjZV9sYW5lKHYxMjhfdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9faSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IF9fYikKICAgIF9fUkVRVUlSRV9DT05TVEFOVChfX2kpIHsKICBfX3U4eDE2IF9fdiA9IChfX3U4eDE2KV9fYTsKICBfX3ZbX19pXSA9IF9fYjsKICByZXR1cm4gKHYxMjhfdClfX3Y7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9pMTZ4OF9zcGxhdChpbnQxNl90IF9fYSkgewogIHJldHVybiAodjEyOF90KShfX2kxNng4KXtfX2EsIF9fYSwgX19hLCBfX2EsIF9fYSwgX19hLCBfX2EsIF9fYX07Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV91MTZ4OF9zcGxhdCh1aW50MTZfdCBfX2EpIHsKICByZXR1cm4gKHYxMjhfdCkoX191MTZ4OCl7X19hLCBfX2EsIF9fYSwgX19hLCBfX2EsIF9fYSwgX19hLCBfX2F9Owp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQxNl90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX2kxNng4X2V4dHJhY3RfbGFuZSh2MTI4X3QgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19pKQogICAgX19SRVFVSVJFX0NPTlNUQU5UKF9faSkgewogIHJldHVybiAoKF9faTE2eDgpX19hKVtfX2ldOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB1aW50MTZfdCBfX0RFRkFVTFRfRk5fQVRUUlMKd2FzbV91MTZ4OF9leHRyYWN0X2xhbmUodjEyOF90IF9fYSwgaW50IF9faSkgX19SRVFVSVJFX0NPTlNUQU5UKF9faSkgewogIHJldHVybiAoKF9fdTE2eDgpX19hKVtfX2ldOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21faTE2eDhfcmVwbGFjZV9sYW5lKHYxMjhfdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9faSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQxNl90IF9fYikKICAgIF9fUkVRVUlSRV9DT05TVEFOVChfX2kpIHsKICBfX2kxNng4IF9fdiA9IChfX2kxNng4KV9fYTsKICBfX3ZbX19pXSA9IF9fYjsKICByZXR1cm4gKHYxMjhfdClfX3Y7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV91MTZ4OF9yZXBsYWNlX2xhbmUoCiAgICB2MTI4X3QgX19hLCBpbnQgX19pLCB1aW50MTZfdCBfX2IpIF9fUkVRVUlSRV9DT05TVEFOVChfX2kpIHsKICBfX3UxNng4IF9fdiA9IChfX3UxNng4KV9fYTsKICBfX3ZbX19pXSA9IF9fYjsKICByZXR1cm4gKHYxMjhfdClfX3Y7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9pMzJ4NF9zcGxhdChpbnQzMl90IF9fYSkgewogIHJldHVybiAodjEyOF90KShfX2kzMng0KXtfX2EsIF9fYSwgX19hLCBfX2F9Owp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21fdTMyeDRfc3BsYXQodWludDMyX3QgX19hKSB7CiAgcmV0dXJuICh2MTI4X3QpKF9fdTMyeDQpe19fYSwgX19hLCBfX2EsIF9fYX07Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludDMyX3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21faTMyeDRfZXh0cmFjdF9sYW5lKHYxMjhfdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2kpCiAgICBfX1JFUVVJUkVfQ09OU1RBTlQoX19pKSB7CiAgcmV0dXJuICgoX19pMzJ4NClfX2EpW19faV07Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVpbnQzMl90IF9fREVGQVVMVF9GTl9BVFRSUwp3YXNtX3UzMng0X2V4dHJhY3RfbGFuZSh2MTI4X3QgX19hLCBpbnQgX19pKSBfX1JFUVVJUkVfQ09OU1RBTlQoX19pKSB7CiAgcmV0dXJuICgoX191MzJ4NClfX2EpW19faV07Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9pMzJ4NF9yZXBsYWNlX2xhbmUodjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgX19iKQogICAgX19SRVFVSVJFX0NPTlNUQU5UKF9faSkgewogIF9faTMyeDQgX192ID0gKF9faTMyeDQpX19hOwogIF9fdltfX2ldID0gX19iOwogIHJldHVybiAodjEyOF90KV9fdjsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX3UzMng0X3JlcGxhY2VfbGFuZSgKICAgIHYxMjhfdCBfX2EsIGludCBfX2ksIHVpbnQzMl90IF9fYikgX19SRVFVSVJFX0NPTlNUQU5UKF9faSkgewogIF9fdTMyeDQgX192ID0gKF9fdTMyeDQpX19hOwogIF9fdltfX2ldID0gX19iOwogIHJldHVybiAodjEyOF90KV9fdjsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX2k2NHgyX3NwbGF0KGludDY0X3QgX19hKSB7CiAgcmV0dXJuICh2MTI4X3QpKF9faTY0eDIpe19fYSwgX19hfTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX3U2NHgyX3NwbGF0KHVpbnQ2NF90IF9fYSkgewogIHJldHVybiAodjEyOF90KShfX3U2NHgyKXtfX2EsIF9fYX07Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludDY0X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21faTY0eDJfZXh0cmFjdF9sYW5lKHYxMjhfdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2kpCiAgICBfX1JFUVVJUkVfQ09OU1RBTlQoX19pKSB7CiAgcmV0dXJuICgoX19pNjR4MilfX2EpW19faV07Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVpbnQ2NF90IF9fREVGQVVMVF9GTl9BVFRSUwp3YXNtX3U2NHgyX2V4dHJhY3RfbGFuZSh2MTI4X3QgX19hLCBpbnQgX19pKSBfX1JFUVVJUkVfQ09OU1RBTlQoX19pKSB7CiAgcmV0dXJuICgoX191NjR4MilfX2EpW19faV07Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9pNjR4Ml9yZXBsYWNlX2xhbmUodjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgX19iKQogICAgX19SRVFVSVJFX0NPTlNUQU5UKF9faSkgewogIF9faTY0eDIgX192ID0gKF9faTY0eDIpX19hOwogIF9fdltfX2ldID0gX19iOwogIHJldHVybiAodjEyOF90KV9fdjsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX3U2NHgyX3JlcGxhY2VfbGFuZSgKICAgIHYxMjhfdCBfX2EsIGludCBfX2ksIHVpbnQ2NF90IF9fYikgX19SRVFVSVJFX0NPTlNUQU5UKF9faSkgewogIF9fdTY0eDIgX192ID0gKF9fdTY0eDIpX19hOwogIF9fdltfX2ldID0gX19iOwogIHJldHVybiAodjEyOF90KV9fdjsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX2YzMng0X3NwbGF0KGZsb2F0IF9fYSkgewogIHJldHVybiAodjEyOF90KShfX2YzMng0KXtfX2EsIF9fYSwgX19hLCBfX2F9Owp9CgpzdGF0aWMgX19pbmxpbmVfXyBmbG9hdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9mMzJ4NF9leHRyYWN0X2xhbmUodjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2kpCiAgICBfX1JFUVVJUkVfQ09OU1RBTlQoX19pKSB7CiAgcmV0dXJuICgoX19mMzJ4NClfX2EpW19faV07Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9mMzJ4NF9yZXBsYWNlX2xhbmUodjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IF9fYikKICAgIF9fUkVRVUlSRV9DT05TVEFOVChfX2kpIHsKICBfX2YzMng0IF9fdiA9IChfX2YzMng0KV9fYTsKICBfX3ZbX19pXSA9IF9fYjsKICByZXR1cm4gKHYxMjhfdClfX3Y7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9mNjR4Ml9zcGxhdChkb3VibGUgX19hKSB7CiAgcmV0dXJuICh2MTI4X3QpKF9fZjY0eDIpe19fYSwgX19hfTsKfQoKc3RhdGljIF9faW5saW5lX18gZG91YmxlIF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX2Y2NHgyX2V4dHJhY3RfbGFuZSh2MTI4X3QgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2kpCiAgICBfX1JFUVVJUkVfQ09OU1RBTlQoX19pKSB7CiAgcmV0dXJuICgoX19mNjR4MilfX2EpW19faV07Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9mNjR4Ml9yZXBsYWNlX2xhbmUodjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBfX2IpCiAgICBfX1JFUVVJUkVfQ09OU1RBTlQoX19pKSB7CiAgX19mNjR4MiBfX3YgPSAoX19mNjR4MilfX2E7CiAgX192W19faV0gPSBfX2I7CiAgcmV0dXJuICh2MTI4X3QpX192Owp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21faTh4MTZfZXEodjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYxMjhfdCBfX2IpIHsKICByZXR1cm4gKHYxMjhfdCkoKF9faTh4MTYpX19hID09IChfX2k4eDE2KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9pOHgxNl9uZSh2MTI4X3QgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEyOF90IF9fYikgewogIHJldHVybiAodjEyOF90KSgoX19pOHgxNilfX2EgIT0gKF9faTh4MTYpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX2k4eDE2X2x0KHYxMjhfdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MTI4X3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpKChfX2k4eDE2KV9fYSA8IChfX2k4eDE2KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV91OHgxNl9sdCh2MTI4X3QgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEyOF90IF9fYikgewogIHJldHVybiAodjEyOF90KSgoX191OHgxNilfX2EgPCAoX191OHgxNilfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21faTh4MTZfZ3QodjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYxMjhfdCBfX2IpIHsKICByZXR1cm4gKHYxMjhfdCkoKF9faTh4MTYpX19hID4gKF9faTh4MTYpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX3U4eDE2X2d0KHYxMjhfdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MTI4X3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpKChfX3U4eDE2KV9fYSA+IChfX3U4eDE2KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9pOHgxNl9sZSh2MTI4X3QgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEyOF90IF9fYikgewogIHJldHVybiAodjEyOF90KSgoX19pOHgxNilfX2EgPD0gKF9faTh4MTYpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX3U4eDE2X2xlKHYxMjhfdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MTI4X3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpKChfX3U4eDE2KV9fYSA8PSAoX191OHgxNilfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21faTh4MTZfZ2UodjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYxMjhfdCBfX2IpIHsKICByZXR1cm4gKHYxMjhfdCkoKF9faTh4MTYpX19hID49IChfX2k4eDE2KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV91OHgxNl9nZSh2MTI4X3QgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEyOF90IF9fYikgewogIHJldHVybiAodjEyOF90KSgoX191OHgxNilfX2EgPj0gKF9fdTh4MTYpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX2kxNng4X2VxKHYxMjhfdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MTI4X3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpKChfX2kxNng4KV9fYSA9PSAoX19pMTZ4OClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21faTE2eDhfbmUodjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYxMjhfdCBfX2IpIHsKICByZXR1cm4gKHYxMjhfdCkoKF9fdTE2eDgpX19hICE9IChfX3UxNng4KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9pMTZ4OF9sdCh2MTI4X3QgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEyOF90IF9fYikgewogIHJldHVybiAodjEyOF90KSgoX19pMTZ4OClfX2EgPCAoX19pMTZ4OClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21fdTE2eDhfbHQodjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYxMjhfdCBfX2IpIHsKICByZXR1cm4gKHYxMjhfdCkoKF9fdTE2eDgpX19hIDwgKF9fdTE2eDgpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX2kxNng4X2d0KHYxMjhfdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MTI4X3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpKChfX2kxNng4KV9fYSA+IChfX2kxNng4KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV91MTZ4OF9ndCh2MTI4X3QgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEyOF90IF9fYikgewogIHJldHVybiAodjEyOF90KSgoX191MTZ4OClfX2EgPiAoX191MTZ4OClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21faTE2eDhfbGUodjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYxMjhfdCBfX2IpIHsKICByZXR1cm4gKHYxMjhfdCkoKF9faTE2eDgpX19hIDw9IChfX2kxNng4KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV91MTZ4OF9sZSh2MTI4X3QgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEyOF90IF9fYikgewogIHJldHVybiAodjEyOF90KSgoX191MTZ4OClfX2EgPD0gKF9fdTE2eDgpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX2kxNng4X2dlKHYxMjhfdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MTI4X3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpKChfX2kxNng4KV9fYSA+PSAoX19pMTZ4OClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21fdTE2eDhfZ2UodjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYxMjhfdCBfX2IpIHsKICByZXR1cm4gKHYxMjhfdCkoKF9fdTE2eDgpX19hID49IChfX3UxNng4KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9pMzJ4NF9lcSh2MTI4X3QgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEyOF90IF9fYikgewogIHJldHVybiAodjEyOF90KSgoX19pMzJ4NClfX2EgPT0gKF9faTMyeDQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX2kzMng0X25lKHYxMjhfdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MTI4X3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpKChfX2kzMng0KV9fYSAhPSAoX19pMzJ4NClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21faTMyeDRfbHQodjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYxMjhfdCBfX2IpIHsKICByZXR1cm4gKHYxMjhfdCkoKF9faTMyeDQpX19hIDwgKF9faTMyeDQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX3UzMng0X2x0KHYxMjhfdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MTI4X3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpKChfX3UzMng0KV9fYSA8IChfX3UzMng0KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9pMzJ4NF9ndCh2MTI4X3QgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEyOF90IF9fYikgewogIHJldHVybiAodjEyOF90KSgoX19pMzJ4NClfX2EgPiAoX19pMzJ4NClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21fdTMyeDRfZ3QodjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYxMjhfdCBfX2IpIHsKICByZXR1cm4gKHYxMjhfdCkoKF9fdTMyeDQpX19hID4gKF9fdTMyeDQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX2kzMng0X2xlKHYxMjhfdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MTI4X3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpKChfX2kzMng0KV9fYSA8PSAoX19pMzJ4NClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21fdTMyeDRfbGUodjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYxMjhfdCBfX2IpIHsKICByZXR1cm4gKHYxMjhfdCkoKF9fdTMyeDQpX19hIDw9IChfX3UzMng0KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9pMzJ4NF9nZSh2MTI4X3QgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEyOF90IF9fYikgewogIHJldHVybiAodjEyOF90KSgoX19pMzJ4NClfX2EgPj0gKF9faTMyeDQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX3UzMng0X2dlKHYxMjhfdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MTI4X3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpKChfX3UzMng0KV9fYSA+PSAoX191MzJ4NClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21faTY0eDJfZXEodjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYxMjhfdCBfX2IpIHsKICByZXR1cm4gKHYxMjhfdCkoKF9faTY0eDIpX19hID09IChfX2k2NHgyKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9pNjR4Ml9uZSh2MTI4X3QgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEyOF90IF9fYikgewogIHJldHVybiAodjEyOF90KSgoX19pNjR4MilfX2EgIT0gKF9faTY0eDIpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX2k2NHgyX2x0KHYxMjhfdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MTI4X3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpKChfX2k2NHgyKV9fYSA8IChfX2k2NHgyKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9pNjR4Ml9ndCh2MTI4X3QgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEyOF90IF9fYikgewogIHJldHVybiAodjEyOF90KSgoX19pNjR4MilfX2EgPiAoX19pNjR4MilfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21faTY0eDJfbGUodjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYxMjhfdCBfX2IpIHsKICByZXR1cm4gKHYxMjhfdCkoKF9faTY0eDIpX19hIDw9IChfX2k2NHgyKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9pNjR4Ml9nZSh2MTI4X3QgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEyOF90IF9fYikgewogIHJldHVybiAodjEyOF90KSgoX19pNjR4MilfX2EgPj0gKF9faTY0eDIpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX2YzMng0X2VxKHYxMjhfdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MTI4X3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpKChfX2YzMng0KV9fYSA9PSAoX19mMzJ4NClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21fZjMyeDRfbmUodjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYxMjhfdCBfX2IpIHsKICByZXR1cm4gKHYxMjhfdCkoKF9fZjMyeDQpX19hICE9IChfX2YzMng0KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9mMzJ4NF9sdCh2MTI4X3QgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEyOF90IF9fYikgewogIHJldHVybiAodjEyOF90KSgoX19mMzJ4NClfX2EgPCAoX19mMzJ4NClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21fZjMyeDRfZ3QodjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYxMjhfdCBfX2IpIHsKICByZXR1cm4gKHYxMjhfdCkoKF9fZjMyeDQpX19hID4gKF9fZjMyeDQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX2YzMng0X2xlKHYxMjhfdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MTI4X3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpKChfX2YzMng0KV9fYSA8PSAoX19mMzJ4NClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21fZjMyeDRfZ2UodjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYxMjhfdCBfX2IpIHsKICByZXR1cm4gKHYxMjhfdCkoKF9fZjMyeDQpX19hID49IChfX2YzMng0KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9mNjR4Ml9lcSh2MTI4X3QgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEyOF90IF9fYikgewogIHJldHVybiAodjEyOF90KSgoX19mNjR4MilfX2EgPT0gKF9fZjY0eDIpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX2Y2NHgyX25lKHYxMjhfdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MTI4X3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpKChfX2Y2NHgyKV9fYSAhPSAoX19mNjR4MilfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21fZjY0eDJfbHQodjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYxMjhfdCBfX2IpIHsKICByZXR1cm4gKHYxMjhfdCkoKF9fZjY0eDIpX19hIDwgKF9fZjY0eDIpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX2Y2NHgyX2d0KHYxMjhfdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MTI4X3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpKChfX2Y2NHgyKV9fYSA+IChfX2Y2NHgyKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9mNjR4Ml9sZSh2MTI4X3QgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEyOF90IF9fYikgewogIHJldHVybiAodjEyOF90KSgoX19mNjR4MilfX2EgPD0gKF9fZjY0eDIpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX2Y2NHgyX2dlKHYxMjhfdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MTI4X3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpKChfX2Y2NHgyKV9fYSA+PSAoX19mNjR4MilfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21fdjEyOF9ub3QodjEyOF90IF9fYSkgewogIHJldHVybiB+X19hOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21fdjEyOF9hbmQodjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYxMjhfdCBfX2IpIHsKICByZXR1cm4gX19hICYgX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21fdjEyOF9vcih2MTI4X3QgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MTI4X3QgX19iKSB7CiAgcmV0dXJuIF9fYSB8IF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX3YxMjhfeG9yKHYxMjhfdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MTI4X3QgX19iKSB7CiAgcmV0dXJuIF9fYSBeIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX3YxMjhfYW5kbm90KHYxMjhfdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MTI4X3QgX19iKSB7CiAgcmV0dXJuIF9fYSAmIH5fX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGJvb2wgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21fdjEyOF9hbnlfdHJ1ZSh2MTI4X3QgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl93YXNtX2FueV90cnVlX3YxMjgoKF9faTh4MTYpX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX3YxMjhfYml0c2VsZWN0KHYxMjhfdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MTI4X3QgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEyOF90IF9fbWFzaykgewogIHJldHVybiAodjEyOF90KV9fYnVpbHRpbl93YXNtX2JpdHNlbGVjdCgoX19pMzJ4NClfX2EsIChfX2kzMng0KV9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9faTMyeDQpX19tYXNrKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX2k4eDE2X2Ficyh2MTI4X3QgX19hKSB7CiAgcmV0dXJuICh2MTI4X3QpX19idWlsdGluX3dhc21fYWJzX2k4eDE2KChfX2k4eDE2KV9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9pOHgxNl9uZWcodjEyOF90IF9fYSkgewogIHJldHVybiAodjEyOF90KSgtKF9fdTh4MTYpX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gYm9vbCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9pOHgxNl9hbGxfdHJ1ZSh2MTI4X3QgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl93YXNtX2FsbF90cnVlX2k4eDE2KChfX2k4eDE2KV9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVpbnQzMl90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX2k4eDE2X2JpdG1hc2sodjEyOF90IF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fd2FzbV9iaXRtYXNrX2k4eDE2KChfX2k4eDE2KV9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9pOHgxNl9wb3BjbnQodjEyOF90IF9fYSkgewogIHJldHVybiAodjEyOF90KV9fYnVpbHRpbl93YXNtX3BvcGNudF9pOHgxNigoX19pOHgxNilfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21faTh4MTZfc2hsKHYxMjhfdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpKChfX2k4eDE2KV9fYSA8PCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21faTh4MTZfc2hyKHYxMjhfdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpKChfX2k4eDE2KV9fYSA+PiBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21fdTh4MTZfc2hyKHYxMjhfdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpKChfX3U4eDE2KV9fYSA+PiBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21faTh4MTZfYWRkKHYxMjhfdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEyOF90IF9fYikgewogIHJldHVybiAodjEyOF90KSgoX191OHgxNilfX2EgKyAoX191OHgxNilfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21faTh4MTZfYWRkX3NhdCh2MTI4X3QgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MTI4X3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpX19idWlsdGluX3dhc21fYWRkX3NhdF9zX2k4eDE2KChfX2k4eDE2KV9fYSwgKF9faTh4MTYpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX3U4eDE2X2FkZF9zYXQodjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEyOF90IF9fYikgewogIHJldHVybiAodjEyOF90KV9fYnVpbHRpbl93YXNtX2FkZF9zYXRfdV9pOHgxNigoX191OHgxNilfX2EsIChfX3U4eDE2KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9pOHgxNl9zdWIodjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MTI4X3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpKChfX3U4eDE2KV9fYSAtIChfX3U4eDE2KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9pOHgxNl9zdWJfc2F0KHYxMjhfdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYxMjhfdCBfX2IpIHsKICByZXR1cm4gKHYxMjhfdClfX2J1aWx0aW5fd2FzbV9zdWJfc2F0X3NfaTh4MTYoKF9faTh4MTYpX19hLCAoX19pOHgxNilfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21fdTh4MTZfc3ViX3NhdCh2MTI4X3QgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MTI4X3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpX19idWlsdGluX3dhc21fc3ViX3NhdF91X2k4eDE2KChfX3U4eDE2KV9fYSwgKF9fdTh4MTYpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX2k4eDE2X21pbih2MTI4X3QgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYxMjhfdCBfX2IpIHsKICByZXR1cm4gKHYxMjhfdClfX2J1aWx0aW5fd2FzbV9taW5fc19pOHgxNigoX19pOHgxNilfX2EsIChfX2k4eDE2KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV91OHgxNl9taW4odjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MTI4X3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpX19idWlsdGluX3dhc21fbWluX3VfaTh4MTYoKF9fdTh4MTYpX19hLCAoX191OHgxNilfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21faTh4MTZfbWF4KHYxMjhfdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEyOF90IF9fYikgewogIHJldHVybiAodjEyOF90KV9fYnVpbHRpbl93YXNtX21heF9zX2k4eDE2KChfX2k4eDE2KV9fYSwgKF9faTh4MTYpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX3U4eDE2X21heCh2MTI4X3QgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYxMjhfdCBfX2IpIHsKICByZXR1cm4gKHYxMjhfdClfX2J1aWx0aW5fd2FzbV9tYXhfdV9pOHgxNigoX191OHgxNilfX2EsIChfX3U4eDE2KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV91OHgxNl9hdmdyKHYxMjhfdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYxMjhfdCBfX2IpIHsKICByZXR1cm4gKHYxMjhfdClfX2J1aWx0aW5fd2FzbV9hdmdyX3VfaTh4MTYoKF9fdTh4MTYpX19hLCAoX191OHgxNilfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21faTE2eDhfYWJzKHYxMjhfdCBfX2EpIHsKICByZXR1cm4gKHYxMjhfdClfX2J1aWx0aW5fd2FzbV9hYnNfaTE2eDgoKF9faTE2eDgpX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX2kxNng4X25lZyh2MTI4X3QgX19hKSB7CiAgcmV0dXJuICh2MTI4X3QpKC0oX191MTZ4OClfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBib29sIF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX2kxNng4X2FsbF90cnVlKHYxMjhfdCBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX3dhc21fYWxsX3RydWVfaTE2eDgoKF9faTE2eDgpX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gdWludDMyX3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21faTE2eDhfYml0bWFzayh2MTI4X3QgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl93YXNtX2JpdG1hc2tfaTE2eDgoKF9faTE2eDgpX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX2kxNng4X3NobCh2MTI4X3QgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IF9fYikgewogIHJldHVybiAodjEyOF90KSgoX19pMTZ4OClfX2EgPDwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX2kxNng4X3Nocih2MTI4X3QgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IF9fYikgewogIHJldHVybiAodjEyOF90KSgoX19pMTZ4OClfX2EgPj4gX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX3UxNng4X3Nocih2MTI4X3QgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IF9fYikgewogIHJldHVybiAodjEyOF90KSgoX191MTZ4OClfX2EgPj4gX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX2kxNng4X2FkZCh2MTI4X3QgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYxMjhfdCBfX2IpIHsKICByZXR1cm4gKHYxMjhfdCkoKF9fdTE2eDgpX19hICsgKF9fdTE2eDgpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX2kxNng4X2FkZF9zYXQodjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEyOF90IF9fYikgewogIHJldHVybiAodjEyOF90KV9fYnVpbHRpbl93YXNtX2FkZF9zYXRfc19pMTZ4OCgoX19pMTZ4OClfX2EsIChfX2kxNng4KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV91MTZ4OF9hZGRfc2F0KHYxMjhfdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYxMjhfdCBfX2IpIHsKICByZXR1cm4gKHYxMjhfdClfX2J1aWx0aW5fd2FzbV9hZGRfc2F0X3VfaTE2eDgoKF9fdTE2eDgpX19hLCAoX191MTZ4OClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21faTE2eDhfc3ViKHYxMjhfdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEyOF90IF9fYikgewogIHJldHVybiAodjEyOF90KSgoX19pMTZ4OClfX2EgLSAoX19pMTZ4OClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21faTE2eDhfc3ViX3NhdCh2MTI4X3QgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MTI4X3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpX19idWlsdGluX3dhc21fc3ViX3NhdF9zX2kxNng4KChfX2kxNng4KV9fYSwgKF9faTE2eDgpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX3UxNng4X3N1Yl9zYXQodjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEyOF90IF9fYikgewogIHJldHVybiAodjEyOF90KV9fYnVpbHRpbl93YXNtX3N1Yl9zYXRfdV9pMTZ4OCgoX191MTZ4OClfX2EsIChfX3UxNng4KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9pMTZ4OF9tdWwodjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MTI4X3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpKChfX3UxNng4KV9fYSAqIChfX3UxNng4KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9pMTZ4OF9taW4odjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MTI4X3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpX19idWlsdGluX3dhc21fbWluX3NfaTE2eDgoKF9faTE2eDgpX19hLCAoX19pMTZ4OClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21fdTE2eDhfbWluKHYxMjhfdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEyOF90IF9fYikgewogIHJldHVybiAodjEyOF90KV9fYnVpbHRpbl93YXNtX21pbl91X2kxNng4KChfX3UxNng4KV9fYSwgKF9fdTE2eDgpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX2kxNng4X21heCh2MTI4X3QgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYxMjhfdCBfX2IpIHsKICByZXR1cm4gKHYxMjhfdClfX2J1aWx0aW5fd2FzbV9tYXhfc19pMTZ4OCgoX19pMTZ4OClfX2EsIChfX2kxNng4KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV91MTZ4OF9tYXgodjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MTI4X3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpX19idWlsdGluX3dhc21fbWF4X3VfaTE2eDgoKF9fdTE2eDgpX19hLCAoX191MTZ4OClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21fdTE2eDhfYXZncih2MTI4X3QgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MTI4X3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpX19idWlsdGluX3dhc21fYXZncl91X2kxNng4KChfX3UxNng4KV9fYSwgKF9fdTE2eDgpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX2kzMng0X2Ficyh2MTI4X3QgX19hKSB7CiAgcmV0dXJuICh2MTI4X3QpX19idWlsdGluX3dhc21fYWJzX2kzMng0KChfX2kzMng0KV9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9pMzJ4NF9uZWcodjEyOF90IF9fYSkgewogIHJldHVybiAodjEyOF90KSgtKF9fdTMyeDQpX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gYm9vbCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9pMzJ4NF9hbGxfdHJ1ZSh2MTI4X3QgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl93YXNtX2FsbF90cnVlX2kzMng0KChfX2kzMng0KV9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVpbnQzMl90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX2kzMng0X2JpdG1hc2sodjEyOF90IF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fd2FzbV9iaXRtYXNrX2kzMng0KChfX2kzMng0KV9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9pMzJ4NF9zaGwodjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBfX2IpIHsKICByZXR1cm4gKHYxMjhfdCkoKF9faTMyeDQpX19hIDw8IF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9pMzJ4NF9zaHIodjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBfX2IpIHsKICByZXR1cm4gKHYxMjhfdCkoKF9faTMyeDQpX19hID4+IF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV91MzJ4NF9zaHIodjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBfX2IpIHsKICByZXR1cm4gKHYxMjhfdCkoKF9fdTMyeDQpX19hID4+IF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9pMzJ4NF9hZGQodjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MTI4X3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpKChfX3UzMng0KV9fYSArIChfX3UzMng0KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9pMzJ4NF9zdWIodjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MTI4X3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpKChfX3UzMng0KV9fYSAtIChfX3UzMng0KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9pMzJ4NF9tdWwodjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MTI4X3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpKChfX3UzMng0KV9fYSAqIChfX3UzMng0KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9pMzJ4NF9taW4odjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MTI4X3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpX19idWlsdGluX3dhc21fbWluX3NfaTMyeDQoKF9faTMyeDQpX19hLCAoX19pMzJ4NClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21fdTMyeDRfbWluKHYxMjhfdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEyOF90IF9fYikgewogIHJldHVybiAodjEyOF90KV9fYnVpbHRpbl93YXNtX21pbl91X2kzMng0KChfX3UzMng0KV9fYSwgKF9fdTMyeDQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX2kzMng0X21heCh2MTI4X3QgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYxMjhfdCBfX2IpIHsKICByZXR1cm4gKHYxMjhfdClfX2J1aWx0aW5fd2FzbV9tYXhfc19pMzJ4NCgoX19pMzJ4NClfX2EsIChfX2kzMng0KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV91MzJ4NF9tYXgodjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MTI4X3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpX19idWlsdGluX3dhc21fbWF4X3VfaTMyeDQoKF9fdTMyeDQpX19hLCAoX191MzJ4NClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21faTMyeDRfZG90X2kxNng4KHYxMjhfdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEyOF90IF9fYikgewogIHJldHVybiAodjEyOF90KV9fYnVpbHRpbl93YXNtX2RvdF9zX2kzMng0X2kxNng4KChfX2kxNng4KV9fYSwgKF9faTE2eDgpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX2k2NHgyX2Ficyh2MTI4X3QgX19hKSB7CiAgcmV0dXJuICh2MTI4X3QpX19idWlsdGluX3dhc21fYWJzX2k2NHgyKChfX2k2NHgyKV9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9pNjR4Ml9uZWcodjEyOF90IF9fYSkgewogIHJldHVybiAodjEyOF90KSgtKF9fdTY0eDIpX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gYm9vbCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9pNjR4Ml9hbGxfdHJ1ZSh2MTI4X3QgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl93YXNtX2FsbF90cnVlX2k2NHgyKChfX2k2NHgyKV9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVpbnQzMl90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX2k2NHgyX2JpdG1hc2sodjEyOF90IF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fd2FzbV9iaXRtYXNrX2k2NHgyKChfX2k2NHgyKV9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9pNjR4Ml9zaGwodjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBfX2IpIHsKICByZXR1cm4gKHYxMjhfdCkoKF9faTY0eDIpX19hIDw8IChpbnQ2NF90KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9pNjR4Ml9zaHIodjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBfX2IpIHsKICByZXR1cm4gKHYxMjhfdCkoKF9faTY0eDIpX19hID4+IChpbnQ2NF90KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV91NjR4Ml9zaHIodjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBfX2IpIHsKICByZXR1cm4gKHYxMjhfdCkoKF9fdTY0eDIpX19hID4+IChpbnQ2NF90KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9pNjR4Ml9hZGQodjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MTI4X3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpKChfX3U2NHgyKV9fYSArIChfX3U2NHgyKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9pNjR4Ml9zdWIodjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MTI4X3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpKChfX3U2NHgyKV9fYSAtIChfX3U2NHgyKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9pNjR4Ml9tdWwodjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MTI4X3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpKChfX3U2NHgyKV9fYSAqIChfX3U2NHgyKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9mMzJ4NF9hYnModjEyOF90IF9fYSkgewogIHJldHVybiAodjEyOF90KV9fYnVpbHRpbl93YXNtX2Fic19mMzJ4NCgoX19mMzJ4NClfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21fZjMyeDRfbmVnKHYxMjhfdCBfX2EpIHsKICByZXR1cm4gKHYxMjhfdCkoLShfX2YzMng0KV9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9mMzJ4NF9zcXJ0KHYxMjhfdCBfX2EpIHsKICByZXR1cm4gKHYxMjhfdClfX2J1aWx0aW5fd2FzbV9zcXJ0X2YzMng0KChfX2YzMng0KV9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9mMzJ4NF9jZWlsKHYxMjhfdCBfX2EpIHsKICByZXR1cm4gKHYxMjhfdClfX2J1aWx0aW5fd2FzbV9jZWlsX2YzMng0KChfX2YzMng0KV9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9mMzJ4NF9mbG9vcih2MTI4X3QgX19hKSB7CiAgcmV0dXJuICh2MTI4X3QpX19idWlsdGluX3dhc21fZmxvb3JfZjMyeDQoKF9fZjMyeDQpX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX2YzMng0X3RydW5jKHYxMjhfdCBfX2EpIHsKICByZXR1cm4gKHYxMjhfdClfX2J1aWx0aW5fd2FzbV90cnVuY19mMzJ4NCgoX19mMzJ4NClfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21fZjMyeDRfbmVhcmVzdCh2MTI4X3QgX19hKSB7CiAgcmV0dXJuICh2MTI4X3QpX19idWlsdGluX3dhc21fbmVhcmVzdF9mMzJ4NCgoX19mMzJ4NClfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21fZjMyeDRfYWRkKHYxMjhfdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEyOF90IF9fYikgewogIHJldHVybiAodjEyOF90KSgoX19mMzJ4NClfX2EgKyAoX19mMzJ4NClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21fZjMyeDRfc3ViKHYxMjhfdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEyOF90IF9fYikgewogIHJldHVybiAodjEyOF90KSgoX19mMzJ4NClfX2EgLSAoX19mMzJ4NClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21fZjMyeDRfbXVsKHYxMjhfdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEyOF90IF9fYikgewogIHJldHVybiAodjEyOF90KSgoX19mMzJ4NClfX2EgKiAoX19mMzJ4NClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21fZjMyeDRfZGl2KHYxMjhfdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEyOF90IF9fYikgewogIHJldHVybiAodjEyOF90KSgoX19mMzJ4NClfX2EgLyAoX19mMzJ4NClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21fZjMyeDRfbWluKHYxMjhfdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEyOF90IF9fYikgewogIHJldHVybiAodjEyOF90KV9fYnVpbHRpbl93YXNtX21pbl9mMzJ4NCgoX19mMzJ4NClfX2EsIChfX2YzMng0KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9mMzJ4NF9tYXgodjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MTI4X3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpX19idWlsdGluX3dhc21fbWF4X2YzMng0KChfX2YzMng0KV9fYSwgKF9fZjMyeDQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX2YzMng0X3BtaW4odjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEyOF90IF9fYikgewogIHJldHVybiAodjEyOF90KV9fYnVpbHRpbl93YXNtX3BtaW5fZjMyeDQoKF9fZjMyeDQpX19hLCAoX19mMzJ4NClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21fZjMyeDRfcG1heCh2MTI4X3QgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MTI4X3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpX19idWlsdGluX3dhc21fcG1heF9mMzJ4NCgoX19mMzJ4NClfX2EsIChfX2YzMng0KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9mNjR4Ml9hYnModjEyOF90IF9fYSkgewogIHJldHVybiAodjEyOF90KV9fYnVpbHRpbl93YXNtX2Fic19mNjR4MigoX19mNjR4MilfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21fZjY0eDJfbmVnKHYxMjhfdCBfX2EpIHsKICByZXR1cm4gKHYxMjhfdCkoLShfX2Y2NHgyKV9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9mNjR4Ml9zcXJ0KHYxMjhfdCBfX2EpIHsKICByZXR1cm4gKHYxMjhfdClfX2J1aWx0aW5fd2FzbV9zcXJ0X2Y2NHgyKChfX2Y2NHgyKV9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9mNjR4Ml9jZWlsKHYxMjhfdCBfX2EpIHsKICByZXR1cm4gKHYxMjhfdClfX2J1aWx0aW5fd2FzbV9jZWlsX2Y2NHgyKChfX2Y2NHgyKV9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9mNjR4Ml9mbG9vcih2MTI4X3QgX19hKSB7CiAgcmV0dXJuICh2MTI4X3QpX19idWlsdGluX3dhc21fZmxvb3JfZjY0eDIoKF9fZjY0eDIpX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX2Y2NHgyX3RydW5jKHYxMjhfdCBfX2EpIHsKICByZXR1cm4gKHYxMjhfdClfX2J1aWx0aW5fd2FzbV90cnVuY19mNjR4MigoX19mNjR4MilfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21fZjY0eDJfbmVhcmVzdCh2MTI4X3QgX19hKSB7CiAgcmV0dXJuICh2MTI4X3QpX19idWlsdGluX3dhc21fbmVhcmVzdF9mNjR4MigoX19mNjR4MilfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21fZjY0eDJfYWRkKHYxMjhfdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEyOF90IF9fYikgewogIHJldHVybiAodjEyOF90KSgoX19mNjR4MilfX2EgKyAoX19mNjR4MilfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21fZjY0eDJfc3ViKHYxMjhfdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEyOF90IF9fYikgewogIHJldHVybiAodjEyOF90KSgoX19mNjR4MilfX2EgLSAoX19mNjR4MilfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21fZjY0eDJfbXVsKHYxMjhfdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEyOF90IF9fYikgewogIHJldHVybiAodjEyOF90KSgoX19mNjR4MilfX2EgKiAoX19mNjR4MilfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21fZjY0eDJfZGl2KHYxMjhfdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEyOF90IF9fYikgewogIHJldHVybiAodjEyOF90KSgoX19mNjR4MilfX2EgLyAoX19mNjR4MilfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21fZjY0eDJfbWluKHYxMjhfdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEyOF90IF9fYikgewogIHJldHVybiAodjEyOF90KV9fYnVpbHRpbl93YXNtX21pbl9mNjR4MigoX19mNjR4MilfX2EsIChfX2Y2NHgyKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMgd2FzbV9mNjR4Ml9tYXgodjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MTI4X3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpX19idWlsdGluX3dhc21fbWF4X2Y2NHgyKChfX2Y2NHgyKV9fYSwgKF9fZjY0eDIpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX2Y2NHgyX3BtaW4odjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEyOF90IF9fYikgewogIHJldHVybiAodjEyOF90KV9fYnVpbHRpbl93YXNtX3BtaW5fZjY0eDIoKF9fZjY0eDIpX19hLCAoX19mNjR4MilfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21fZjY0eDJfcG1heCh2MTI4X3QgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MTI4X3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpX19idWlsdGluX3dhc21fcG1heF9mNjR4MigoX19mNjR4MilfX2EsIChfX2Y2NHgyKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMKd2FzbV9pMzJ4NF90cnVuY19zYXRfZjMyeDQodjEyOF90IF9fYSkgewogIHJldHVybiAodjEyOF90KV9fYnVpbHRpbl93YXNtX3RydW5jX3NhdHVyYXRlX3NfaTMyeDRfZjMyeDQoKF9fZjMyeDQpX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUwp3YXNtX3UzMng0X3RydW5jX3NhdF9mMzJ4NCh2MTI4X3QgX19hKSB7CiAgcmV0dXJuICh2MTI4X3QpX19idWlsdGluX3dhc21fdHJ1bmNfc2F0dXJhdGVfdV9pMzJ4NF9mMzJ4NCgoX19mMzJ4NClfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTCndhc21fZjMyeDRfY29udmVydF9pMzJ4NCh2MTI4X3QgX19hKSB7CiAgcmV0dXJuICh2MTI4X3QpIF9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKChfX2kzMng0KV9fYSwgX19mMzJ4NCk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMKd2FzbV9mMzJ4NF9jb252ZXJ0X3UzMng0KHYxMjhfdCBfX2EpIHsKICByZXR1cm4gKHYxMjhfdCkgX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoKF9fdTMyeDQpX19hLCBfX2YzMng0KTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUwp3YXNtX2Y2NHgyX2NvbnZlcnRfbG93X2kzMng0KHYxMjhfdCBfX2EpIHsKICByZXR1cm4gKHYxMjhfdCkgX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoKF9faTMyeDIpe19fYVswXSwgX19hWzFdfSwgX19mNjR4Mik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMKd2FzbV9mNjR4Ml9jb252ZXJ0X2xvd191MzJ4NCh2MTI4X3QgX19hKSB7CiAgcmV0dXJuICh2MTI4X3QpIF9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKChfX3UzMngyKXtfX2FbMF0sIF9fYVsxXX0sIF9fZjY0eDIpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTCndhc21faTMyeDRfdHJ1bmNfc2F0X2Y2NHgyX3plcm8odjEyOF90IF9fYSkgewogIHJldHVybiAodjEyOF90KV9fYnVpbHRpbl93YXNtX3RydW5jX3NhdF96ZXJvX3NfZjY0eDJfaTMyeDQoKF9fZjY0eDIpX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUwp3YXNtX3UzMng0X3RydW5jX3NhdF9mNjR4Ml96ZXJvKHYxMjhfdCBfX2EpIHsKICByZXR1cm4gKHYxMjhfdClfX2J1aWx0aW5fd2FzbV90cnVuY19zYXRfemVyb191X2Y2NHgyX2kzMng0KChfX2Y2NHgyKV9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMKd2FzbV9mMzJ4NF9kZW1vdGVfZjY0eDJfemVybyh2MTI4X3QgX19hKSB7CiAgcmV0dXJuICh2MTI4X3QpIF9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKAogICAgICBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX19mNjR4MilfX2EsIChfX2Y2NHgyKXswLCAwfSwgMCwgMSwgMiwgMyksCiAgICAgIF9fZjMyeDQpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTCndhc21fZjY0eDJfcHJvbW90ZV9sb3dfZjMyeDQodjEyOF90IF9fYSkgewogIHJldHVybiAodjEyOF90KSBfX2J1aWx0aW5fY29udmVydHZlY3RvcigKICAgICAgKF9fZjMyeDIpeygoX19mMzJ4NClfX2EpWzBdLCAoKF9fZjMyeDQpX19hKVsxXX0sIF9fZjY0eDIpOwp9CgojZGVmaW5lIHdhc21faTh4MTZfc2h1ZmZsZShfX2EsIF9fYiwgX19jMCwgX19jMSwgX19jMiwgX19jMywgX19jNCwgX19jNSwgX19jNiwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICBfX2M3LCBfX2M4LCBfX2M5LCBfX2MxMCwgX19jMTEsIF9fYzEyLCBfX2MxMywgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICBfX2MxNCwgX19jMTUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgodjEyOF90KV9fYnVpbHRpbl93YXNtX3NodWZmbGVfaTh4MTYoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX19pOHgxNikoX19hKSwgKF9faTh4MTYpKF9fYiksIF9fYzAsIF9fYzEsIF9fYzIsIF9fYzMsIF9fYzQsIF9fYzUsICAgICAgXAogICAgICBfX2M2LCBfX2M3LCBfX2M4LCBfX2M5LCBfX2MxMCwgX19jMTEsIF9fYzEyLCBfX2MxMywgX19jMTQsIF9fYzE1KSkKCiNkZWZpbmUgd2FzbV9pMTZ4OF9zaHVmZmxlKF9fYSwgX19iLCBfX2MwLCBfX2MxLCBfX2MyLCBfX2MzLCBfX2M0LCBfX2M1LCBfX2M2LCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fYzcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKCh2MTI4X3QpX19idWlsdGluX3dhc21fc2h1ZmZsZV9pOHgxNiggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX2k4eDE2KShfX2EpLCAoX19pOHgxNikoX19iKSwgKF9fYzApKjIsIChfX2MwKSoyICsgMSwgKF9fYzEpKjIsICAgICAgICBcCiAgICAgIChfX2MxKSoyICsgMSwgKF9fYzIpKjIsIChfX2MyKSoyICsgMSwgKF9fYzMpKjIsIChfX2MzKSoyICsgMSwgKF9fYzQpKjIsICBcCiAgICAgIChfX2M0KSoyICsgMSwgKF9fYzUpKjIsIChfX2M1KSoyICsgMSwgKF9fYzYpKjIsIChfX2M2KSoyICsgMSwgKF9fYzcpKjIsICBcCiAgICAgIChfX2M3KSoyICsgMSkpCgojZGVmaW5lIHdhc21faTMyeDRfc2h1ZmZsZShfX2EsIF9fYiwgX19jMCwgX19jMSwgX19jMiwgX19jMykgICAgICAgICAgICAgICAgICAgXAogICgodjEyOF90KV9fYnVpbHRpbl93YXNtX3NodWZmbGVfaTh4MTYoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX19pOHgxNikoX19hKSwgKF9faTh4MTYpKF9fYiksIChfX2MwKSo0LCAoX19jMCkqNCArIDEsIChfX2MwKSo0ICsgMiwgICAgXAogICAgICAoX19jMCkqNCArIDMsIChfX2MxKSo0LCAoX19jMSkqNCArIDEsIChfX2MxKSo0ICsgMiwgKF9fYzEpKjQgKyAzLCAgICAgICAgXAogICAgICAoX19jMikqNCwgKF9fYzIpKjQgKyAxLCAoX19jMikqNCArIDIsIChfX2MyKSo0ICsgMywgKF9fYzMpKjQsICAgICAgICAgICAgXAogICAgICAoX19jMykqNCArIDEsIChfX2MzKSo0ICsgMiwgKF9fYzMpKjQgKyAzKSkKCiNkZWZpbmUgd2FzbV9pNjR4Ml9zaHVmZmxlKF9fYSwgX19iLCBfX2MwLCBfX2MxKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKCh2MTI4X3QpX19idWlsdGluX3dhc21fc2h1ZmZsZV9pOHgxNiggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX2k4eDE2KShfX2EpLCAoX19pOHgxNikoX19iKSwgKF9fYzApKjgsIChfX2MwKSo4ICsgMSwgKF9fYzApKjggKyAyLCAgICBcCiAgICAgIChfX2MwKSo4ICsgMywgKF9fYzApKjggKyA0LCAoX19jMCkqOCArIDUsIChfX2MwKSo4ICsgNiwgKF9fYzApKjggKyA3LCAgICBcCiAgICAgIChfX2MxKSo4LCAoX19jMSkqOCArIDEsIChfX2MxKSo4ICsgMiwgKF9fYzEpKjggKyAzLCAoX19jMSkqOCArIDQsICAgICAgICBcCiAgICAgIChfX2MxKSo4ICsgNSwgKF9fYzEpKjggKyA2LCAoX19jMSkqOCArIDcpKQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUyB3YXNtX2k4eDE2X3N3aXp6bGUodjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEyOF90IF9fYikgewogIHJldHVybiAodjEyOF90KV9fYnVpbHRpbl93YXNtX3N3aXp6bGVfaTh4MTYoKF9faTh4MTYpX19hLCAoX19pOHgxNilfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTCndhc21faTh4MTZfbmFycm93X2kxNng4KHYxMjhfdCBfX2EsIHYxMjhfdCBfX2IpIHsKICByZXR1cm4gKHYxMjhfdClfX2J1aWx0aW5fd2FzbV9uYXJyb3dfc19pOHgxNl9pMTZ4OCgoX19pMTZ4OClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9faTE2eDgpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUwp3YXNtX3U4eDE2X25hcnJvd19pMTZ4OCh2MTI4X3QgX19hLCB2MTI4X3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpX19idWlsdGluX3dhc21fbmFycm93X3VfaTh4MTZfaTE2eDgoKF9faTE2eDgpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX2kxNng4KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMKd2FzbV9pMTZ4OF9uYXJyb3dfaTMyeDQodjEyOF90IF9fYSwgdjEyOF90IF9fYikgewogIHJldHVybiAodjEyOF90KV9fYnVpbHRpbl93YXNtX25hcnJvd19zX2kxNng4X2kzMng0KChfX2kzMng0KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19pMzJ4NClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTCndhc21fdTE2eDhfbmFycm93X2kzMng0KHYxMjhfdCBfX2EsIHYxMjhfdCBfX2IpIHsKICByZXR1cm4gKHYxMjhfdClfX2J1aWx0aW5fd2FzbV9uYXJyb3dfdV9pMTZ4OF9pMzJ4NCgoX19pMzJ4NClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9faTMyeDQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUwp3YXNtX2kxNng4X2V4dGVuZF9sb3dfaTh4MTYodjEyOF90IF9fYSkgewogIHJldHVybiAodjEyOF90KSBfX2J1aWx0aW5fY29udmVydHZlY3RvcigKICAgICAgKF9faTh4OCl7KChfX2k4eDE2KV9fYSlbMF0sICgoX19pOHgxNilfX2EpWzFdLCAoKF9faTh4MTYpX19hKVsyXSwKICAgICAgICAgICAgICAgKChfX2k4eDE2KV9fYSlbM10sICgoX19pOHgxNilfX2EpWzRdLCAoKF9faTh4MTYpX19hKVs1XSwKICAgICAgICAgICAgICAgKChfX2k4eDE2KV9fYSlbNl0sICgoX19pOHgxNilfX2EpWzddfSwKICAgICAgX19pMTZ4OCk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMKd2FzbV9pMTZ4OF9leHRlbmRfaGlnaF9pOHgxNih2MTI4X3QgX19hKSB7CiAgcmV0dXJuICh2MTI4X3QpIF9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKAogICAgICAoX19pOHg4KXsoKF9faTh4MTYpX19hKVs4XSwgKChfX2k4eDE2KV9fYSlbOV0sICgoX19pOHgxNilfX2EpWzEwXSwKICAgICAgICAgICAgICAgKChfX2k4eDE2KV9fYSlbMTFdLCAoKF9faTh4MTYpX19hKVsxMl0sICgoX19pOHgxNilfX2EpWzEzXSwKICAgICAgICAgICAgICAgKChfX2k4eDE2KV9fYSlbMTRdLCAoKF9faTh4MTYpX19hKVsxNV19LAogICAgICBfX2kxNng4KTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUwp3YXNtX3UxNng4X2V4dGVuZF9sb3dfdTh4MTYodjEyOF90IF9fYSkgewogIHJldHVybiAodjEyOF90KSBfX2J1aWx0aW5fY29udmVydHZlY3RvcigKICAgICAgKF9fdTh4OCl7KChfX3U4eDE2KV9fYSlbMF0sICgoX191OHgxNilfX2EpWzFdLCAoKF9fdTh4MTYpX19hKVsyXSwKICAgICAgICAgICAgICAgKChfX3U4eDE2KV9fYSlbM10sICgoX191OHgxNilfX2EpWzRdLCAoKF9fdTh4MTYpX19hKVs1XSwKICAgICAgICAgICAgICAgKChfX3U4eDE2KV9fYSlbNl0sICgoX191OHgxNilfX2EpWzddfSwKICAgICAgX191MTZ4OCk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMKd2FzbV91MTZ4OF9leHRlbmRfaGlnaF91OHgxNih2MTI4X3QgX19hKSB7CiAgcmV0dXJuICh2MTI4X3QpIF9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKAogICAgICAoX191OHg4KXsoKF9fdTh4MTYpX19hKVs4XSwgKChfX3U4eDE2KV9fYSlbOV0sICgoX191OHgxNilfX2EpWzEwXSwKICAgICAgICAgICAgICAgKChfX3U4eDE2KV9fYSlbMTFdLCAoKF9fdTh4MTYpX19hKVsxMl0sICgoX191OHgxNilfX2EpWzEzXSwKICAgICAgICAgICAgICAgKChfX3U4eDE2KV9fYSlbMTRdLCAoKF9fdTh4MTYpX19hKVsxNV19LAogICAgICBfX3UxNng4KTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUwp3YXNtX2kzMng0X2V4dGVuZF9sb3dfaTE2eDgodjEyOF90IF9fYSkgewogIHJldHVybiAodjEyOF90KSBfX2J1aWx0aW5fY29udmVydHZlY3RvcigKICAgICAgKF9faTE2eDQpeygoX19pMTZ4OClfX2EpWzBdLCAoKF9faTE2eDgpX19hKVsxXSwgKChfX2kxNng4KV9fYSlbMl0sCiAgICAgICAgICAgICAgICAoKF9faTE2eDgpX19hKVszXX0sCiAgICAgIF9faTMyeDQpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTCndhc21faTMyeDRfZXh0ZW5kX2hpZ2hfaTE2eDgodjEyOF90IF9fYSkgewogIHJldHVybiAodjEyOF90KSBfX2J1aWx0aW5fY29udmVydHZlY3RvcigKICAgICAgKF9faTE2eDQpeygoX19pMTZ4OClfX2EpWzRdLCAoKF9faTE2eDgpX19hKVs1XSwgKChfX2kxNng4KV9fYSlbNl0sCiAgICAgICAgICAgICAgICAoKF9faTE2eDgpX19hKVs3XX0sCiAgICAgIF9faTMyeDQpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTCndhc21fdTMyeDRfZXh0ZW5kX2xvd191MTZ4OCh2MTI4X3QgX19hKSB7CiAgcmV0dXJuICh2MTI4X3QpIF9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKAogICAgICAoX191MTZ4NCl7KChfX3UxNng4KV9fYSlbMF0sICgoX191MTZ4OClfX2EpWzFdLCAoKF9fdTE2eDgpX19hKVsyXSwKICAgICAgICAgICAgICAgICgoX191MTZ4OClfX2EpWzNdfSwKICAgICAgX191MzJ4NCk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMKd2FzbV91MzJ4NF9leHRlbmRfaGlnaF91MTZ4OCh2MTI4X3QgX19hKSB7CiAgcmV0dXJuICh2MTI4X3QpIF9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKAogICAgICAoX191MTZ4NCl7KChfX3UxNng4KV9fYSlbNF0sICgoX191MTZ4OClfX2EpWzVdLCAoKF9fdTE2eDgpX19hKVs2XSwKICAgICAgICAgICAgICAgICgoX191MTZ4OClfX2EpWzddfSwKICAgICAgX191MzJ4NCk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFRkFVTFRfRk5fQVRUUlMKd2FzbV9pNjR4Ml9leHRlbmRfbG93X2kzMng0KHYxMjhfdCBfX2EpIHsKICByZXR1cm4gKHYxMjhfdCkgX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoCiAgICAgIChfX2kzMngyKXsoKF9faTMyeDQpX19hKVswXSwgKChfX2kzMng0KV9fYSlbMV19LCBfX2k2NHgyKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUwp3YXNtX2k2NHgyX2V4dGVuZF9oaWdoX2kzMng0KHYxMjhfdCBfX2EpIHsKICByZXR1cm4gKHYxMjhfdCkgX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoCiAgICAgIChfX2kzMngyKXsoKF9faTMyeDQpX19hKVsyXSwgKChfX2kzMng0KV9fYSlbM119LCBfX2k2NHgyKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVGQVVMVF9GTl9BVFRSUwp3YXNtX3U2NHgyX2V4dGVuZF9sb3dfdTMyeDQodjEyOF90IF9fYSkgewogIHJldHVybiAodjEyOF90KSBfX2J1aWx0aW5fY29udmVydHZlY3RvcigKICAgICAgKF9fdTMyeDIpeygoX191MzJ4NClfX2EpWzBdLCAoKF9fdTMyeDQpX19hKVsxXX0sIF9fdTY0eDIpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTCndhc21fdTY0eDJfZXh0ZW5kX2hpZ2hfdTMyeDQodjEyOF90IF9fYSkgewogIHJldHVybiAodjEyOF90KSBfX2J1aWx0aW5fY29udmVydHZlY3RvcigKICAgICAgKF9fdTMyeDIpeygoX191MzJ4NClfX2EpWzJdLCAoKF9fdTMyeDQpX19hKVszXX0sIF9fdTY0eDIpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTCndhc21faTE2eDhfZXh0YWRkX3BhaXJ3aXNlX2k4eDE2KHYxMjhfdCBfX2EpIHsKICByZXR1cm4gKHYxMjhfdClfX2J1aWx0aW5fd2FzbV9leHRhZGRfcGFpcndpc2VfaTh4MTZfc19pMTZ4OCgoX19pOHgxNilfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTCndhc21fdTE2eDhfZXh0YWRkX3BhaXJ3aXNlX3U4eDE2KHYxMjhfdCBfX2EpIHsKICByZXR1cm4gKHYxMjhfdClfX2J1aWx0aW5fd2FzbV9leHRhZGRfcGFpcndpc2VfaTh4MTZfdV9pMTZ4OCgoX191OHgxNilfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTCndhc21faTMyeDRfZXh0YWRkX3BhaXJ3aXNlX2kxNng4KHYxMjhfdCBfX2EpIHsKICByZXR1cm4gKHYxMjhfdClfX2J1aWx0aW5fd2FzbV9leHRhZGRfcGFpcndpc2VfaTE2eDhfc19pMzJ4NCgoX19pMTZ4OClfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTCndhc21fdTMyeDRfZXh0YWRkX3BhaXJ3aXNlX3UxNng4KHYxMjhfdCBfX2EpIHsKICByZXR1cm4gKHYxMjhfdClfX2J1aWx0aW5fd2FzbV9leHRhZGRfcGFpcndpc2VfaTE2eDhfdV9pMzJ4NCgoX191MTZ4OClfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTCndhc21faTE2eDhfZXh0bXVsX2xvd19pOHgxNih2MTI4X3QgX19hLCB2MTI4X3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpKChfX2kxNng4KXdhc21faTE2eDhfZXh0ZW5kX2xvd19pOHgxNihfX2EpICoKICAgICAgICAgICAgICAgICAgKF9faTE2eDgpd2FzbV9pMTZ4OF9leHRlbmRfbG93X2k4eDE2KF9fYikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTCndhc21faTE2eDhfZXh0bXVsX2hpZ2hfaTh4MTYodjEyOF90IF9fYSwgdjEyOF90IF9fYikgewogIHJldHVybiAodjEyOF90KSgoX19pMTZ4OCl3YXNtX2kxNng4X2V4dGVuZF9oaWdoX2k4eDE2KF9fYSkgKgogICAgICAgICAgICAgICAgICAoX19pMTZ4OCl3YXNtX2kxNng4X2V4dGVuZF9oaWdoX2k4eDE2KF9fYikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTCndhc21fdTE2eDhfZXh0bXVsX2xvd191OHgxNih2MTI4X3QgX19hLCB2MTI4X3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpKChfX3UxNng4KXdhc21fdTE2eDhfZXh0ZW5kX2xvd191OHgxNihfX2EpICoKICAgICAgICAgICAgICAgICAgKF9fdTE2eDgpd2FzbV91MTZ4OF9leHRlbmRfbG93X3U4eDE2KF9fYikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTCndhc21fdTE2eDhfZXh0bXVsX2hpZ2hfdTh4MTYodjEyOF90IF9fYSwgdjEyOF90IF9fYikgewogIHJldHVybiAodjEyOF90KSgoX191MTZ4OCl3YXNtX3UxNng4X2V4dGVuZF9oaWdoX3U4eDE2KF9fYSkgKgogICAgICAgICAgICAgICAgICAoX191MTZ4OCl3YXNtX3UxNng4X2V4dGVuZF9oaWdoX3U4eDE2KF9fYikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTCndhc21faTMyeDRfZXh0bXVsX2xvd19pMTZ4OCh2MTI4X3QgX19hLCB2MTI4X3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpKChfX2kzMng0KXdhc21faTMyeDRfZXh0ZW5kX2xvd19pMTZ4OChfX2EpICoKICAgICAgICAgICAgICAgICAgKF9faTMyeDQpd2FzbV9pMzJ4NF9leHRlbmRfbG93X2kxNng4KF9fYikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTCndhc21faTMyeDRfZXh0bXVsX2hpZ2hfaTE2eDgodjEyOF90IF9fYSwgdjEyOF90IF9fYikgewogIHJldHVybiAodjEyOF90KSgoX19pMzJ4NCl3YXNtX2kzMng0X2V4dGVuZF9oaWdoX2kxNng4KF9fYSkgKgogICAgICAgICAgICAgICAgICAoX19pMzJ4NCl3YXNtX2kzMng0X2V4dGVuZF9oaWdoX2kxNng4KF9fYikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTCndhc21fdTMyeDRfZXh0bXVsX2xvd191MTZ4OCh2MTI4X3QgX19hLCB2MTI4X3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpKChfX3UzMng0KXdhc21fdTMyeDRfZXh0ZW5kX2xvd191MTZ4OChfX2EpICoKICAgICAgICAgICAgICAgICAgKF9fdTMyeDQpd2FzbV91MzJ4NF9leHRlbmRfbG93X3UxNng4KF9fYikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTCndhc21fdTMyeDRfZXh0bXVsX2hpZ2hfdTE2eDgodjEyOF90IF9fYSwgdjEyOF90IF9fYikgewogIHJldHVybiAodjEyOF90KSgoX191MzJ4NCl3YXNtX3UzMng0X2V4dGVuZF9oaWdoX3UxNng4KF9fYSkgKgogICAgICAgICAgICAgICAgICAoX191MzJ4NCl3YXNtX3UzMng0X2V4dGVuZF9oaWdoX3UxNng4KF9fYikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTCndhc21faTY0eDJfZXh0bXVsX2xvd19pMzJ4NCh2MTI4X3QgX19hLCB2MTI4X3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpKChfX2k2NHgyKXdhc21faTY0eDJfZXh0ZW5kX2xvd19pMzJ4NChfX2EpICoKICAgICAgICAgICAgICAgICAgKF9faTY0eDIpd2FzbV9pNjR4Ml9leHRlbmRfbG93X2kzMng0KF9fYikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTCndhc21faTY0eDJfZXh0bXVsX2hpZ2hfaTMyeDQodjEyOF90IF9fYSwgdjEyOF90IF9fYikgewogIHJldHVybiAodjEyOF90KSgoX19pNjR4Mil3YXNtX2k2NHgyX2V4dGVuZF9oaWdoX2kzMng0KF9fYSkgKgogICAgICAgICAgICAgICAgICAoX19pNjR4Mil3YXNtX2k2NHgyX2V4dGVuZF9oaWdoX2kzMng0KF9fYikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTCndhc21fdTY0eDJfZXh0bXVsX2xvd191MzJ4NCh2MTI4X3QgX19hLCB2MTI4X3QgX19iKSB7CiAgcmV0dXJuICh2MTI4X3QpKChfX3U2NHgyKXdhc21fdTY0eDJfZXh0ZW5kX2xvd191MzJ4NChfX2EpICoKICAgICAgICAgICAgICAgICAgKF9fdTY0eDIpd2FzbV91NjR4Ml9leHRlbmRfbG93X3UzMng0KF9fYikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTCndhc21fdTY0eDJfZXh0bXVsX2hpZ2hfdTMyeDQodjEyOF90IF9fYSwgdjEyOF90IF9fYikgewogIHJldHVybiAodjEyOF90KSgoX191NjR4Mil3YXNtX3U2NHgyX2V4dGVuZF9oaWdoX3UzMng0KF9fYSkgKgogICAgICAgICAgICAgICAgICAoX191NjR4Mil3YXNtX3U2NHgyX2V4dGVuZF9oaWdoX3UzMng0KF9fYikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERUZBVUxUX0ZOX0FUVFJTIHdhc21faTE2eDhfcTE1bXVscl9zYXQodjEyOF90IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYxMjhfdCBfX2IpIHsKICByZXR1cm4gKHYxMjhfdClfX2J1aWx0aW5fd2FzbV9xMTVtdWxyX3NhdF9zX2kxNng4KChfX2kxNng4KV9fYSwgKF9faTE2eDgpX19iKTsKfQoKLy8gT2xkIGludHJpbnNpYyBuYW1lcyBzdXBwb3J0ZWQgdG8gZWFzZSB0cmFuc2l0aW9uaW5nIHRvIHRoZSBzdGFuZGFyZCBuYW1lcy4gRG8KLy8gbm90IHVzZSB0aGVzZTsgdGhleSB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5lYXIgZnV0dXJlLgoKI2RlZmluZSBfX0RFUFJFQ0FURURfRk5fQVRUUlMoX19yZXBsYWNlbWVudCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX0RFRkFVTFRfRk5fQVRUUlMgX19hdHRyaWJ1dGVfXyggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGRlcHJlY2F0ZWQoInVzZSAiIF9fcmVwbGFjZW1lbnQgIiBpbnN0ZWFkIiwgX19yZXBsYWNlbWVudCkpKQoKI2RlZmluZSBfX1dBU01fU1RSKFgpICNYCgojaWZkZWYgX19ERVBSRUNBVEVECiNkZWZpbmUgX19ERVBSRUNBVEVEX1dBU01fTUFDUk8oX19uYW1lLCBfX3JlcGxhY2VtZW50KSAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX1ByYWdtYShfX1dBU01fU1RSKEdDQyB3YXJuaW5nKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICInIiBfX25hbWUgIicgaXMgZGVwcmVjYXRlZDogdXNlICciIF9fcmVwbGFjZW1lbnQgIicgaW5zdGVhZCIpKSkKI2Vsc2UKI2RlZmluZSBfX0RFUFJFQ0FURURfV0FTTV9NQUNSTyhfX25hbWUsIF9fcmVwbGFjZW1lbnQpCiNlbmRpZgoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVQUkVDQVRFRF9GTl9BVFRSUygid2FzbV92MTI4X2xvYWQ4X3NwbGF0IikKd2FzbV92OHgxNl9sb2FkX3NwbGF0KGNvbnN0IHZvaWQgKl9fbWVtKSB7CiAgcmV0dXJuIHdhc21fdjEyOF9sb2FkOF9zcGxhdChfX21lbSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFUFJFQ0FURURfRk5fQVRUUlMoIndhc21fdjEyOF9sb2FkMTZfc3BsYXQiKQp3YXNtX3YxNng4X2xvYWRfc3BsYXQoY29uc3Qgdm9pZCAqX19tZW0pIHsKICByZXR1cm4gd2FzbV92MTI4X2xvYWQxNl9zcGxhdChfX21lbSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFUFJFQ0FURURfRk5fQVRUUlMoIndhc21fdjEyOF9sb2FkMzJfc3BsYXQiKQp3YXNtX3YzMng0X2xvYWRfc3BsYXQoY29uc3Qgdm9pZCAqX19tZW0pIHsKICByZXR1cm4gd2FzbV92MTI4X2xvYWQzMl9zcGxhdChfX21lbSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFUFJFQ0FURURfRk5fQVRUUlMoIndhc21fdjEyOF9sb2FkNjRfc3BsYXQiKQp3YXNtX3Y2NHgyX2xvYWRfc3BsYXQoY29uc3Qgdm9pZCAqX19tZW0pIHsKICByZXR1cm4gd2FzbV92MTI4X2xvYWQ2NF9zcGxhdChfX21lbSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFUFJFQ0FURURfRk5fQVRUUlMoIndhc21faTE2eDhfbG9hZDh4OCIpCndhc21faTE2eDhfbG9hZF84eDgoY29uc3Qgdm9pZCAqX19tZW0pIHsKICByZXR1cm4gd2FzbV9pMTZ4OF9sb2FkOHg4KF9fbWVtKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVQUkVDQVRFRF9GTl9BVFRSUygid2FzbV91MTZ4OF9sb2FkOHg4IikKd2FzbV91MTZ4OF9sb2FkXzh4OChjb25zdCB2b2lkICpfX21lbSkgewogIHJldHVybiB3YXNtX3UxNng4X2xvYWQ4eDgoX19tZW0pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERVBSRUNBVEVEX0ZOX0FUVFJTKCJ3YXNtX2kzMng0X2xvYWQxNng0IikKd2FzbV9pMzJ4NF9sb2FkXzE2eDQoY29uc3Qgdm9pZCAqX19tZW0pIHsKICByZXR1cm4gd2FzbV9pMzJ4NF9sb2FkMTZ4NChfX21lbSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFUFJFQ0FURURfRk5fQVRUUlMoIndhc21fdTMyeDRfbG9hZDE2eDQiKQp3YXNtX3UzMng0X2xvYWRfMTZ4NChjb25zdCB2b2lkICpfX21lbSkgewogIHJldHVybiB3YXNtX3UzMng0X2xvYWQxNng0KF9fbWVtKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVQUkVDQVRFRF9GTl9BVFRSUygid2FzbV9pNjR4Ml9sb2FkMzJ4MiIpCndhc21faTY0eDJfbG9hZF8zMngyKGNvbnN0IHZvaWQgKl9fbWVtKSB7CiAgcmV0dXJuIHdhc21faTY0eDJfbG9hZDMyeDIoX19tZW0pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERVBSRUNBVEVEX0ZOX0FUVFJTKCJ3YXNtX3U2NHgyX2xvYWQzMngyIikKd2FzbV91NjR4Ml9sb2FkXzMyeDIoY29uc3Qgdm9pZCAqX19tZW0pIHsKICByZXR1cm4gd2FzbV91NjR4Ml9sb2FkMzJ4MihfX21lbSk7Cn0KCiNkZWZpbmUgd2FzbV92OHgxNl9zaHVmZmxlKF9fYSwgX19iLCBfX2MwLCBfX2MxLCBfX2MyLCBfX2MzLCBfX2M0LCBfX2M1LCBfX2M2LCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fYzcsIF9fYzgsIF9fYzksIF9fYzEwLCBfX2MxMSwgX19jMTIsIF9fYzEzLCAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fYzE0LCBfX2MxNSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19ERVBSRUNBVEVEX1dBU01fTUFDUk8oIndhc21fdjh4MTZfc2h1ZmZsZSIsICJ3YXNtX2k4eDE2X3NodWZmbGUiKSAgICAgICAgICBcCiAgd2FzbV9pOHgxNl9zaHVmZmxlKF9fYSwgX19iLCBfX2MwLCBfX2MxLCBfX2MyLCBfX2MzLCBfX2M0LCBfX2M1LCBfX2M2LCBfX2M3LCBcCiAgICAgICAgICAgICAgICAgICAgIF9fYzgsIF9fYzksIF9fYzEwLCBfX2MxMSwgX19jMTIsIF9fYzEzLCBfX2MxNCwgX19jMTUpCgojZGVmaW5lIHdhc21fdjE2eDhfc2h1ZmZsZShfX2EsIF9fYiwgX19jMCwgX19jMSwgX19jMiwgX19jMywgX19jNCwgX19jNSwgX19jNiwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICBfX2M3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fREVQUkVDQVRFRF9XQVNNX01BQ1JPKCJ3YXNtX3YxNng4X3NodWZmbGUiLCAid2FzbV9pMTZ4OF9zaHVmZmxlIikgICAgICAgICAgXAogIHdhc21faTE2eDhfc2h1ZmZsZShfX2EsIF9fYiwgX19jMCwgX19jMSwgX19jMiwgX19jMywgX19jNCwgX19jNSwgX19jNiwgX19jNykKCiNkZWZpbmUgd2FzbV92MzJ4NF9zaHVmZmxlKF9fYSwgX19iLCBfX2MwLCBfX2MxLCBfX2MyLCBfX2MzKSAgICAgICAgICAgICAgICAgICBcCiAgX19ERVBSRUNBVEVEX1dBU01fTUFDUk8oIndhc21fdjMyeDRfc2h1ZmZsZSIsICJ3YXNtX2kzMng0X3NodWZmbGUiKSAgICAgICAgICBcCiAgd2FzbV9pMzJ4NF9zaHVmZmxlKF9fYSwgX19iLCBfX2MwLCBfX2MxLCBfX2MyLCBfX2MzKQoKI2RlZmluZSB3YXNtX3Y2NHgyX3NodWZmbGUoX19hLCBfX2IsIF9fYzAsIF9fYzEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX0RFUFJFQ0FURURfV0FTTV9NQUNSTygid2FzbV92NjR4Ml9zaHVmZmxlIiwgIndhc21faTY0eDJfc2h1ZmZsZSIpICAgICAgICAgIFwKICB3YXNtX2k2NHgyX3NodWZmbGUoX19hLCBfX2IsIF9fYzAsIF9fYzEpCgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERVBSRUNBVEVEX0ZOX0FUVFJTKCJ3YXNtX2k4eDE2X3N3aXp6bGUiKQp3YXNtX3Y4eDE2X3N3aXp6bGUodjEyOF90IF9fYSwgdjEyOF90IF9fYikgewogIHJldHVybiB3YXNtX2k4eDE2X3N3aXp6bGUoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBib29sIF9fREVQUkVDQVRFRF9GTl9BVFRSUygid2FzbV92MTI4X2FueV90cnVlIikKd2FzbV9pOHgxNl9hbnlfdHJ1ZSh2MTI4X3QgX19hKSB7CiAgcmV0dXJuIHdhc21fdjEyOF9hbnlfdHJ1ZShfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBib29sIF9fREVQUkVDQVRFRF9GTl9BVFRSUygid2FzbV92MTI4X2FueV90cnVlIikKd2FzbV9pMTZ4OF9hbnlfdHJ1ZSh2MTI4X3QgX19hKSB7CiAgcmV0dXJuIHdhc21fdjEyOF9hbnlfdHJ1ZShfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBib29sIF9fREVQUkVDQVRFRF9GTl9BVFRSUygid2FzbV92MTI4X2FueV90cnVlIikKd2FzbV9pMzJ4NF9hbnlfdHJ1ZSh2MTI4X3QgX19hKSB7CiAgcmV0dXJuIHdhc21fdjEyOF9hbnlfdHJ1ZShfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERVBSRUNBVEVEX0ZOX0FUVFJTKCJ3YXNtX2k4eDE2X2FkZF9zYXQiKQp3YXNtX2k4eDE2X2FkZF9zYXR1cmF0ZSh2MTI4X3QgX19hLCB2MTI4X3QgX19iKSB7CiAgcmV0dXJuIHdhc21faTh4MTZfYWRkX3NhdChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFUFJFQ0FURURfRk5fQVRUUlMoIndhc21fdTh4MTZfYWRkX3NhdCIpCndhc21fdTh4MTZfYWRkX3NhdHVyYXRlKHYxMjhfdCBfX2EsIHYxMjhfdCBfX2IpIHsKICByZXR1cm4gd2FzbV91OHgxNl9hZGRfc2F0KF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVQUkVDQVRFRF9GTl9BVFRSUygid2FzbV9pOHgxNl9zdWJfc2F0IikKd2FzbV9pOHgxNl9zdWJfc2F0dXJhdGUodjEyOF90IF9fYSwgdjEyOF90IF9fYikgewogIHJldHVybiB3YXNtX2k4eDE2X3N1Yl9zYXQoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERVBSRUNBVEVEX0ZOX0FUVFJTKCJ3YXNtX3U4eDE2X3N1Yl9zYXQiKQp3YXNtX3U4eDE2X3N1Yl9zYXR1cmF0ZSh2MTI4X3QgX19hLCB2MTI4X3QgX19iKSB7CiAgcmV0dXJuIHdhc21fdTh4MTZfc3ViX3NhdChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFUFJFQ0FURURfRk5fQVRUUlMoIndhc21faTE2eDhfYWRkX3NhdCIpCndhc21faTE2eDhfYWRkX3NhdHVyYXRlKHYxMjhfdCBfX2EsIHYxMjhfdCBfX2IpIHsKICByZXR1cm4gd2FzbV9pMTZ4OF9hZGRfc2F0KF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVQUkVDQVRFRF9GTl9BVFRSUygid2FzbV91MTZ4OF9hZGRfc2F0IikKd2FzbV91MTZ4OF9hZGRfc2F0dXJhdGUodjEyOF90IF9fYSwgdjEyOF90IF9fYikgewogIHJldHVybiB3YXNtX3UxNng4X2FkZF9zYXQoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2MTI4X3QgX19ERVBSRUNBVEVEX0ZOX0FUVFJTKCJ3YXNtX2kxNng4X3N1Yl9zYXQiKQp3YXNtX2kxNng4X3N1Yl9zYXR1cmF0ZSh2MTI4X3QgX19hLCB2MTI4X3QgX19iKSB7CiAgcmV0dXJuIHdhc21faTE2eDhfc3ViX3NhdChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHYxMjhfdCBfX0RFUFJFQ0FURURfRk5fQVRUUlMoIndhc21fdTE2eDhfc3ViX3NhdCIpCndhc21fdTE2eDhfc3ViX3NhdHVyYXRlKHYxMjhfdCBfX2EsIHYxMjhfdCBfX2IpIHsKICByZXR1cm4gd2FzbV91MTZ4OF9zdWJfc2F0KF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVQUkVDQVRFRF9GTl9BVFRSUygid2FzbV9pMTZ4OF9leHRlbmRfbG93X2k4eDE2IikKd2FzbV9pMTZ4OF93aWRlbl9sb3dfaTh4MTYodjEyOF90IF9fYSkgewogIHJldHVybiB3YXNtX2kxNng4X2V4dGVuZF9sb3dfaTh4MTYoX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVQUkVDQVRFRF9GTl9BVFRSUygid2FzbV9pMTZ4OF9leHRlbmRfaGlnaF9pOHgxNiIpCndhc21faTE2eDhfd2lkZW5faGlnaF9pOHgxNih2MTI4X3QgX19hKSB7CiAgcmV0dXJuIHdhc21faTE2eDhfZXh0ZW5kX2hpZ2hfaTh4MTYoX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVQUkVDQVRFRF9GTl9BVFRSUygid2FzbV91MTZ4OF9leHRlbmRfbG93X3U4eDE2IikKd2FzbV9pMTZ4OF93aWRlbl9sb3dfdTh4MTYodjEyOF90IF9fYSkgewogIHJldHVybiB3YXNtX3UxNng4X2V4dGVuZF9sb3dfdTh4MTYoX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVQUkVDQVRFRF9GTl9BVFRSUygid2FzbV91MTZ4OF9leHRlbmRfaGlnaF91OHgxNiIpCndhc21faTE2eDhfd2lkZW5faGlnaF91OHgxNih2MTI4X3QgX19hKSB7CiAgcmV0dXJuIHdhc21fdTE2eDhfZXh0ZW5kX2hpZ2hfdTh4MTYoX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVQUkVDQVRFRF9GTl9BVFRSUygid2FzbV9pMzJ4NF9leHRlbmRfbG93X2kxNng4IikKd2FzbV9pMzJ4NF93aWRlbl9sb3dfaTE2eDgodjEyOF90IF9fYSkgewogIHJldHVybiB3YXNtX2kzMng0X2V4dGVuZF9sb3dfaTE2eDgoX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVQUkVDQVRFRF9GTl9BVFRSUygid2FzbV9pMzJ4NF9leHRlbmRfaGlnaF9pMTZ4OCIpCndhc21faTMyeDRfd2lkZW5faGlnaF9pMTZ4OCh2MTI4X3QgX19hKSB7CiAgcmV0dXJuIHdhc21faTMyeDRfZXh0ZW5kX2hpZ2hfaTE2eDgoX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVQUkVDQVRFRF9GTl9BVFRSUygid2FzbV91MzJ4NF9leHRlbmRfbG93X3UxNng4IikKd2FzbV9pMzJ4NF93aWRlbl9sb3dfdTE2eDgodjEyOF90IF9fYSkgewogIHJldHVybiB3YXNtX3UzMng0X2V4dGVuZF9sb3dfdTE2eDgoX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVQUkVDQVRFRF9GTl9BVFRSUygid2FzbV91MzJ4NF9leHRlbmRfaGlnaF91MTZ4OCIpCndhc21faTMyeDRfd2lkZW5faGlnaF91MTZ4OCh2MTI4X3QgX19hKSB7CiAgcmV0dXJuIHdhc21fdTMyeDRfZXh0ZW5kX2hpZ2hfdTE2eDgoX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVQUkVDQVRFRF9GTl9BVFRSUygid2FzbV9pMzJ4NF90cnVuY19zYXRfZjMyeDQiKQp3YXNtX2kzMng0X3RydW5jX3NhdHVyYXRlX2YzMng0KHYxMjhfdCBfX2EpIHsKICByZXR1cm4gd2FzbV9pMzJ4NF90cnVuY19zYXRfZjMyeDQoX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gdjEyOF90IF9fREVQUkVDQVRFRF9GTl9BVFRSUygid2FzbV91MzJ4NF90cnVuY19zYXRfZjMyeDQiKQp3YXNtX3UzMng0X3RydW5jX3NhdHVyYXRlX2YzMng0KHYxMjhfdCBfX2EpIHsKICByZXR1cm4gd2FzbV91MzJ4NF90cnVuY19zYXRfZjMyeDQoX19hKTsKfQoKLy8gVW5kZWZpbmUgaGVscGVyIG1hY3JvcwojdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTCiN1bmRlZiBfX0RFUFJFQ0FURURfRk5fQVRUUlMKCiNlbmRpZiAvLyBfX1dBU01fU0lNRDEyOF9ICgAvKj09PS0tLS0geHNhdmVvcHRpbnRyaW4uaCAtIFhTQVZFT1BUIGludHJpbnNpYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqCiAqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCiAqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCgojaWZuZGVmIF9fSU1NSU5UUklOX0gKI2Vycm9yICJOZXZlciB1c2UgPHhzYXZlb3B0aW50cmluLmg+IGRpcmVjdGx5OyBpbmNsdWRlIDxpbW1pbnRyaW4uaD4gaW5zdGVhZC4iCiNlbmRpZgoKI2lmbmRlZiBfX1hTQVZFT1BUSU5UUklOX0gKI2RlZmluZSBfX1hTQVZFT1BUSU5UUklOX0gKCi8qIERlZmluZSB0aGUgZGVmYXVsdCBhdHRyaWJ1dGVzIGZvciB0aGUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZS4gKi8KI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCAgX190YXJnZXRfXygieHNhdmVvcHQiKSkpCgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUwpfeHNhdmVvcHQodm9pZCAqX19wLCB1bnNpZ25lZCBsb25nIGxvbmcgX19tKSB7CiAgX19idWlsdGluX2lhMzJfeHNhdmVvcHQoX19wLCBfX20pOwp9CgojaWZkZWYgX194ODZfNjRfXwpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUwpfeHNhdmVvcHQ2NCh2b2lkICpfX3AsIHVuc2lnbmVkIGxvbmcgbG9uZyBfX20pIHsKICBfX2J1aWx0aW5faWEzMl94c2F2ZW9wdDY0KF9fcCwgX19tKTsKfQojZW5kaWYKCiN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlMKCiNlbmRpZgoALyo9PT0tLS0tIHhzYXZlc2ludHJpbi5oIC0gWFNBVkVTIGludHJpbnNpYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwoKI2lmbmRlZiBfX0lNTUlOVFJJTl9ICiNlcnJvciAiTmV2ZXIgdXNlIDx4c2F2ZXNpbnRyaW4uaD4gZGlyZWN0bHk7IGluY2x1ZGUgPGltbWludHJpbi5oPiBpbnN0ZWFkLiIKI2VuZGlmCgojaWZuZGVmIF9fWFNBVkVTSU5UUklOX0gKI2RlZmluZSBfX1hTQVZFU0lOVFJJTl9ICgovKiBEZWZpbmUgdGhlIGRlZmF1bHQgYXR0cmlidXRlcyBmb3IgdGhlIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUuICovCiNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgIF9fdGFyZ2V0X18oInhzYXZlcyIpKSkKCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTCl94c2F2ZXModm9pZCAqX19wLCB1bnNpZ25lZCBsb25nIGxvbmcgX19tKSB7CiAgX19idWlsdGluX2lhMzJfeHNhdmVzKF9fcCwgX19tKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMKX3hyc3RvcnModm9pZCAqX19wLCB1bnNpZ25lZCBsb25nIGxvbmcgX19tKSB7CiAgX19idWlsdGluX2lhMzJfeHJzdG9ycyhfX3AsIF9fbSk7Cn0KCiNpZmRlZiBfX3g4Nl82NF9fCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTCl94cnN0b3JzNjQodm9pZCAqX19wLCB1bnNpZ25lZCBsb25nIGxvbmcgX19tKSB7CiAgX19idWlsdGluX2lhMzJfeHJzdG9yczY0KF9fcCwgX19tKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMKX3hzYXZlczY0KHZvaWQgKl9fcCwgdW5zaWduZWQgbG9uZyBsb25nIF9fbSkgewogIF9fYnVpbHRpbl9pYTMyX3hzYXZlczY0KF9fcCwgX19tKTsKfQojZW5kaWYKCiN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlMKCiNlbmRpZgoALy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIF9fY29tcGxleF9jbWF0aC5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KLy8KLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KLy8KLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KLy8KLy8gc3RkOjpjb21wbGV4IGhlYWRlciBjb3BpZWQgZnJvbSB0aGUgbGliY3h4IHNvdXJjZSBhbmQgc2ltcGxpZmllZCBmb3IgdXNlIGluCi8vIE9wZW5NUCB0YXJnZXQgb2ZmbG9hZCByZWdpb25zLgovLwovLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwoKI2lmbmRlZiBfT1BFTk1QCiNlcnJvciAiVGhpcyBmaWxlIGlzIGZvciBPcGVuTVAgY29tcGlsYXRpb24gb25seS4iCiNlbmRpZgoKI2lmbmRlZiBfX2NwbHVzcGx1cwojZXJyb3IgIlRoaXMgZmlsZSBpcyBmb3IgQysrIGNvbXBpbGF0aW9uIG9ubHkuIgojZW5kaWYKCiNpZm5kZWYgX0xJQkNQUF9DT01QTEVYCiNkZWZpbmUgX0xJQkNQUF9DT01QTEVYCgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KCiNkZWZpbmUgX19ERVZJQ0VfXyBzdGF0aWMgY29uc3RleHByIF9fYXR0cmlidXRlX18oKG5vdGhyb3cpKQoKbmFtZXNwYWNlIHN0ZCB7CgovLyBhYnMKCnRlbXBsYXRlIDxjbGFzcyBfVHA+IF9fREVWSUNFX18gX1RwIGFicyhjb25zdCBzdGQ6OmNvbXBsZXg8X1RwPiAmX19jKSB7CiAgcmV0dXJuIGh5cG90KF9fYy5yZWFsKCksIF9fYy5pbWFnKCkpOwp9CgovLyBhcmcKCnRlbXBsYXRlIDxjbGFzcyBfVHA+IF9fREVWSUNFX18gX1RwIGFyZyhjb25zdCBzdGQ6OmNvbXBsZXg8X1RwPiAmX19jKSB7CiAgcmV0dXJuIGF0YW4yKF9fYy5pbWFnKCksIF9fYy5yZWFsKCkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgp0eXBlbmFtZSBlbmFibGVfaWY8aXNfaW50ZWdyYWw8X1RwPjo6dmFsdWUgfHwgaXNfc2FtZTxfVHAsIGRvdWJsZT46OnZhbHVlLAogICAgICAgICAgICAgICAgICAgZG91YmxlPjo6dHlwZQphcmcoX1RwIF9fcmUpIHsKICByZXR1cm4gYXRhbjIoMC4sIF9fcmUpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgp0eXBlbmFtZSBlbmFibGVfaWY8aXNfc2FtZTxfVHAsIGZsb2F0Pjo6dmFsdWUsIGZsb2F0Pjo6dHlwZSBhcmcoX1RwIF9fcmUpIHsKICByZXR1cm4gYXRhbjJmKDAuRiwgX19yZSk7Cn0KCi8vIG5vcm0KCnRlbXBsYXRlIDxjbGFzcyBfVHA+IF9fREVWSUNFX18gX1RwIG5vcm0oY29uc3Qgc3RkOjpjb21wbGV4PF9UcD4gJl9fYykgewogIGlmIChzdGQ6OmlzaW5mKF9fYy5yZWFsKCkpKQogICAgcmV0dXJuIGFicyhfX2MucmVhbCgpKTsKICBpZiAoc3RkOjppc2luZihfX2MuaW1hZygpKSkKICAgIHJldHVybiBhYnMoX19jLmltYWcoKSk7CiAgcmV0dXJuIF9fYy5yZWFsKCkgKiBfX2MucmVhbCgpICsgX19jLmltYWcoKSAqIF9fYy5pbWFnKCk7Cn0KCi8vIGNvbmoKCnRlbXBsYXRlIDxjbGFzcyBfVHA+IHN0ZDo6Y29tcGxleDxfVHA+IGNvbmooY29uc3Qgc3RkOjpjb21wbGV4PF9UcD4gJl9fYykgewogIHJldHVybiBzdGQ6OmNvbXBsZXg8X1RwPihfX2MucmVhbCgpLCAtX19jLmltYWcoKSk7Cn0KCi8vIHByb2oKCnRlbXBsYXRlIDxjbGFzcyBfVHA+IHN0ZDo6Y29tcGxleDxfVHA+IHByb2ooY29uc3Qgc3RkOjpjb21wbGV4PF9UcD4gJl9fYykgewogIHN0ZDo6Y29tcGxleDxfVHA+IF9fciA9IF9fYzsKICBpZiAoc3RkOjppc2luZihfX2MucmVhbCgpKSB8fCBzdGQ6OmlzaW5mKF9fYy5pbWFnKCkpKQogICAgX19yID0gc3RkOjpjb21wbGV4PF9UcD4oSU5GSU5JVFksIGNvcHlzaWduKF9UcCgwKSwgX19jLmltYWcoKSkpOwogIHJldHVybiBfX3I7Cn0KCi8vIHBvbGFyCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpjb21wbGV4PF9UcD4gcG9sYXIoY29uc3QgX1RwICZfX3JobywgY29uc3QgX1RwICZfX3RoZXRhID0gX1RwKCkpIHsKICBpZiAoc3RkOjppc25hbihfX3JobykgfHwgc2lnbmJpdChfX3JobykpCiAgICByZXR1cm4gc3RkOjpjb21wbGV4PF9UcD4oX1RwKE5BTiksIF9UcChOQU4pKTsKICBpZiAoc3RkOjppc25hbihfX3RoZXRhKSkgewogICAgaWYgKHN0ZDo6aXNpbmYoX19yaG8pKQogICAgICByZXR1cm4gc3RkOjpjb21wbGV4PF9UcD4oX19yaG8sIF9fdGhldGEpOwogICAgcmV0dXJuIHN0ZDo6Y29tcGxleDxfVHA+KF9fdGhldGEsIF9fdGhldGEpOwogIH0KICBpZiAoc3RkOjppc2luZihfX3RoZXRhKSkgewogICAgaWYgKHN0ZDo6aXNpbmYoX19yaG8pKQogICAgICByZXR1cm4gc3RkOjpjb21wbGV4PF9UcD4oX19yaG8sIF9UcChOQU4pKTsKICAgIHJldHVybiBzdGQ6OmNvbXBsZXg8X1RwPihfVHAoTkFOKSwgX1RwKE5BTikpOwogIH0KICBfVHAgX194ID0gX19yaG8gKiBjb3MoX190aGV0YSk7CiAgaWYgKHN0ZDo6aXNuYW4oX194KSkKICAgIF9feCA9IDA7CiAgX1RwIF9feSA9IF9fcmhvICogc2luKF9fdGhldGEpOwogIGlmIChzdGQ6OmlzbmFuKF9feSkpCiAgICBfX3kgPSAwOwogIHJldHVybiBzdGQ6OmNvbXBsZXg8X1RwPihfX3gsIF9feSk7Cn0KCi8vIGxvZwoKdGVtcGxhdGUgPGNsYXNzIF9UcD4gc3RkOjpjb21wbGV4PF9UcD4gbG9nKGNvbnN0IHN0ZDo6Y29tcGxleDxfVHA+ICZfX3gpIHsKICByZXR1cm4gc3RkOjpjb21wbGV4PF9UcD4obG9nKGFicyhfX3gpKSwgYXJnKF9feCkpOwp9CgovLyBsb2cxMAoKdGVtcGxhdGUgPGNsYXNzIF9UcD4gc3RkOjpjb21wbGV4PF9UcD4gbG9nMTAoY29uc3Qgc3RkOjpjb21wbGV4PF9UcD4gJl9feCkgewogIHJldHVybiBsb2coX194KSAvIGxvZyhfVHAoMTApKTsKfQoKLy8gc3FydAoKdGVtcGxhdGUgPGNsYXNzIF9UcD4KX19ERVZJQ0VfXyBzdGQ6OmNvbXBsZXg8X1RwPiBzcXJ0KGNvbnN0IHN0ZDo6Y29tcGxleDxfVHA+ICZfX3gpIHsKICBpZiAoc3RkOjppc2luZihfX3guaW1hZygpKSkKICAgIHJldHVybiBzdGQ6OmNvbXBsZXg8X1RwPihfVHAoSU5GSU5JVFkpLCBfX3guaW1hZygpKTsKICBpZiAoc3RkOjppc2luZihfX3gucmVhbCgpKSkgewogICAgaWYgKF9feC5yZWFsKCkgPiBfVHAoMCkpCiAgICAgIHJldHVybiBzdGQ6OmNvbXBsZXg8X1RwPihfX3gucmVhbCgpLCBzdGQ6OmlzbmFuKF9feC5pbWFnKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBfX3guaW1hZygpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjb3B5c2lnbihfVHAoMCksIF9feC5pbWFnKCkpKTsKICAgIHJldHVybiBzdGQ6OmNvbXBsZXg8X1RwPihzdGQ6OmlzbmFuKF9feC5pbWFnKCkpID8gX194LmltYWcoKSA6IF9UcCgwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3B5c2lnbihfX3gucmVhbCgpLCBfX3guaW1hZygpKSk7CiAgfQogIHJldHVybiBwb2xhcihzcXJ0KGFicyhfX3gpKSwgYXJnKF9feCkgLyBfVHAoMikpOwp9CgovLyBleHAKCnRlbXBsYXRlIDxjbGFzcyBfVHA+Cl9fREVWSUNFX18gc3RkOjpjb21wbGV4PF9UcD4gZXhwKGNvbnN0IHN0ZDo6Y29tcGxleDxfVHA+ICZfX3gpIHsKICBfVHAgX19pID0gX194LmltYWcoKTsKICBpZiAoc3RkOjppc2luZihfX3gucmVhbCgpKSkgewogICAgaWYgKF9feC5yZWFsKCkgPCBfVHAoMCkpIHsKICAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKF9faSkpCiAgICAgICAgX19pID0gX1RwKDEpOwogICAgfSBlbHNlIGlmIChfX2kgPT0gMCB8fCAhc3RkOjppc2Zpbml0ZShfX2kpKSB7CiAgICAgIGlmIChzdGQ6OmlzaW5mKF9faSkpCiAgICAgICAgX19pID0gX1RwKE5BTik7CiAgICAgIHJldHVybiBzdGQ6OmNvbXBsZXg8X1RwPihfX3gucmVhbCgpLCBfX2kpOwogICAgfQogIH0gZWxzZSBpZiAoc3RkOjppc25hbihfX3gucmVhbCgpKSAmJiBfX3guaW1hZygpID09IDApCiAgICByZXR1cm4gX194OwogIF9UcCBfX2UgPSBleHAoX194LnJlYWwoKSk7CiAgcmV0dXJuIHN0ZDo6Y29tcGxleDxfVHA+KF9fZSAqIGNvcyhfX2kpLCBfX2UgKiBzaW4oX19pKSk7Cn0KCi8vIHBvdwoKdGVtcGxhdGUgPGNsYXNzIF9UcD4Kc3RkOjpjb21wbGV4PF9UcD4gcG93KGNvbnN0IHN0ZDo6Y29tcGxleDxfVHA+ICZfX3gsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OmNvbXBsZXg8X1RwPiAmX195KSB7CiAgcmV0dXJuIGV4cChfX3kgKiBsb2coX194KSk7Cn0KCi8vIF9fc3FyLCBjb21wdXRlcyBwb3coeCwgMikKCnRlbXBsYXRlIDxjbGFzcyBfVHA+IHN0ZDo6Y29tcGxleDxfVHA+IF9fc3FyKGNvbnN0IHN0ZDo6Y29tcGxleDxfVHA+ICZfX3gpIHsKICByZXR1cm4gc3RkOjpjb21wbGV4PF9UcD4oKF9feC5yZWFsKCkgLSBfX3guaW1hZygpKSAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX194LnJlYWwoKSArIF9feC5pbWFnKCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICBfVHAoMikgKiBfX3gucmVhbCgpICogX194LmltYWcoKSk7Cn0KCi8vIGFzaW5oCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpfX0RFVklDRV9fIHN0ZDo6Y29tcGxleDxfVHA+IGFzaW5oKGNvbnN0IHN0ZDo6Y29tcGxleDxfVHA+ICZfX3gpIHsKICBjb25zdCBfVHAgX19waShhdGFuMigrMC4sIC0wLikpOwogIGlmIChzdGQ6OmlzaW5mKF9feC5yZWFsKCkpKSB7CiAgICBpZiAoc3RkOjppc25hbihfX3guaW1hZygpKSkKICAgICAgcmV0dXJuIF9feDsKICAgIGlmIChzdGQ6OmlzaW5mKF9feC5pbWFnKCkpKQogICAgICByZXR1cm4gc3RkOjpjb21wbGV4PF9UcD4oX194LnJlYWwoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlzaWduKF9fcGkgKiBfVHAoMC4yNSksIF9feC5pbWFnKCkpKTsKICAgIHJldHVybiBzdGQ6OmNvbXBsZXg8X1RwPihfX3gucmVhbCgpLCBjb3B5c2lnbihfVHAoMCksIF9feC5pbWFnKCkpKTsKICB9CiAgaWYgKHN0ZDo6aXNuYW4oX194LnJlYWwoKSkpIHsKICAgIGlmIChzdGQ6OmlzaW5mKF9feC5pbWFnKCkpKQogICAgICByZXR1cm4gc3RkOjpjb21wbGV4PF9UcD4oX194LmltYWcoKSwgX194LnJlYWwoKSk7CiAgICBpZiAoX194LmltYWcoKSA9PSAwKQogICAgICByZXR1cm4gX194OwogICAgcmV0dXJuIHN0ZDo6Y29tcGxleDxfVHA+KF9feC5yZWFsKCksIF9feC5yZWFsKCkpOwogIH0KICBpZiAoc3RkOjppc2luZihfX3guaW1hZygpKSkKICAgIHJldHVybiBzdGQ6OmNvbXBsZXg8X1RwPihjb3B5c2lnbihfX3guaW1hZygpLCBfX3gucmVhbCgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3B5c2lnbihfX3BpIC8gX1RwKDIpLCBfX3guaW1hZygpKSk7CiAgc3RkOjpjb21wbGV4PF9UcD4gX196ID0gbG9nKF9feCArIHNxcnQoX19zcXIoX194KSArIF9UcCgxKSkpOwogIHJldHVybiBzdGQ6OmNvbXBsZXg8X1RwPihjb3B5c2lnbihfX3oucmVhbCgpLCBfX3gucmVhbCgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29weXNpZ24oX196LmltYWcoKSwgX194LmltYWcoKSkpOwp9CgovLyBhY29zaAoKdGVtcGxhdGUgPGNsYXNzIF9UcD4KX19ERVZJQ0VfXyBzdGQ6OmNvbXBsZXg8X1RwPiBhY29zaChjb25zdCBzdGQ6OmNvbXBsZXg8X1RwPiAmX194KSB7CiAgY29uc3QgX1RwIF9fcGkoYXRhbjIoKzAuLCAtMC4pKTsKICBpZiAoc3RkOjppc2luZihfX3gucmVhbCgpKSkgewogICAgaWYgKHN0ZDo6aXNuYW4oX194LmltYWcoKSkpCiAgICAgIHJldHVybiBzdGQ6OmNvbXBsZXg8X1RwPihhYnMoX194LnJlYWwoKSksIF9feC5pbWFnKCkpOwogICAgaWYgKHN0ZDo6aXNpbmYoX194LmltYWcoKSkpIHsKICAgICAgaWYgKF9feC5yZWFsKCkgPiAwKQogICAgICAgIHJldHVybiBzdGQ6OmNvbXBsZXg8X1RwPihfX3gucmVhbCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3B5c2lnbihfX3BpICogX1RwKDAuMjUpLCBfX3guaW1hZygpKSk7CiAgICAgIGVsc2UKICAgICAgICByZXR1cm4gc3RkOjpjb21wbGV4PF9UcD4oLV9feC5yZWFsKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlzaWduKF9fcGkgKiBfVHAoMC43NSksIF9feC5pbWFnKCkpKTsKICAgIH0KICAgIGlmIChfX3gucmVhbCgpIDwgMCkKICAgICAgcmV0dXJuIHN0ZDo6Y29tcGxleDxfVHA+KC1fX3gucmVhbCgpLCBjb3B5c2lnbihfX3BpLCBfX3guaW1hZygpKSk7CiAgICByZXR1cm4gc3RkOjpjb21wbGV4PF9UcD4oX194LnJlYWwoKSwgY29weXNpZ24oX1RwKDApLCBfX3guaW1hZygpKSk7CiAgfQogIGlmIChzdGQ6OmlzbmFuKF9feC5yZWFsKCkpKSB7CiAgICBpZiAoc3RkOjppc2luZihfX3guaW1hZygpKSkKICAgICAgcmV0dXJuIHN0ZDo6Y29tcGxleDxfVHA+KGFicyhfX3guaW1hZygpKSwgX194LnJlYWwoKSk7CiAgICByZXR1cm4gc3RkOjpjb21wbGV4PF9UcD4oX194LnJlYWwoKSwgX194LnJlYWwoKSk7CiAgfQogIGlmIChzdGQ6OmlzaW5mKF9feC5pbWFnKCkpKQogICAgcmV0dXJuIHN0ZDo6Y29tcGxleDxfVHA+KGFicyhfX3guaW1hZygpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3B5c2lnbihfX3BpIC8gX1RwKDIpLCBfX3guaW1hZygpKSk7CiAgc3RkOjpjb21wbGV4PF9UcD4gX196ID0gbG9nKF9feCArIHNxcnQoX19zcXIoX194KSAtIF9UcCgxKSkpOwogIHJldHVybiBzdGQ6OmNvbXBsZXg8X1RwPihjb3B5c2lnbihfX3oucmVhbCgpLCBfVHAoMCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb3B5c2lnbihfX3ouaW1hZygpLCBfX3guaW1hZygpKSk7Cn0KCi8vIGF0YW5oCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpfX0RFVklDRV9fIHN0ZDo6Y29tcGxleDxfVHA+IGF0YW5oKGNvbnN0IHN0ZDo6Y29tcGxleDxfVHA+ICZfX3gpIHsKICBjb25zdCBfVHAgX19waShhdGFuMigrMC4sIC0wLikpOwogIGlmIChzdGQ6OmlzaW5mKF9feC5pbWFnKCkpKSB7CiAgICByZXR1cm4gc3RkOjpjb21wbGV4PF9UcD4oY29weXNpZ24oX1RwKDApLCBfX3gucmVhbCgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3B5c2lnbihfX3BpIC8gX1RwKDIpLCBfX3guaW1hZygpKSk7CiAgfQogIGlmIChzdGQ6OmlzbmFuKF9feC5pbWFnKCkpKSB7CiAgICBpZiAoc3RkOjppc2luZihfX3gucmVhbCgpKSB8fCBfX3gucmVhbCgpID09IDApCiAgICAgIHJldHVybiBzdGQ6OmNvbXBsZXg8X1RwPihjb3B5c2lnbihfVHAoMCksIF9feC5yZWFsKCkpLCBfX3guaW1hZygpKTsKICAgIHJldHVybiBzdGQ6OmNvbXBsZXg8X1RwPihfX3guaW1hZygpLCBfX3guaW1hZygpKTsKICB9CiAgaWYgKHN0ZDo6aXNuYW4oX194LnJlYWwoKSkpIHsKICAgIHJldHVybiBzdGQ6OmNvbXBsZXg8X1RwPihfX3gucmVhbCgpLCBfX3gucmVhbCgpKTsKICB9CiAgaWYgKHN0ZDo6aXNpbmYoX194LnJlYWwoKSkpIHsKICAgIHJldHVybiBzdGQ6OmNvbXBsZXg8X1RwPihjb3B5c2lnbihfVHAoMCksIF9feC5yZWFsKCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlzaWduKF9fcGkgLyBfVHAoMiksIF9feC5pbWFnKCkpKTsKICB9CiAgaWYgKGFicyhfX3gucmVhbCgpKSA9PSBfVHAoMSkgJiYgX194LmltYWcoKSA9PSBfVHAoMCkpIHsKICAgIHJldHVybiBzdGQ6OmNvbXBsZXg8X1RwPihjb3B5c2lnbihfVHAoSU5GSU5JVFkpLCBfX3gucmVhbCgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3B5c2lnbihfVHAoMCksIF9feC5pbWFnKCkpKTsKICB9CiAgc3RkOjpjb21wbGV4PF9UcD4gX196ID0gbG9nKChfVHAoMSkgKyBfX3gpIC8gKF9UcCgxKSAtIF9feCkpIC8gX1RwKDIpOwogIHJldHVybiBzdGQ6OmNvbXBsZXg8X1RwPihjb3B5c2lnbihfX3oucmVhbCgpLCBfX3gucmVhbCgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29weXNpZ24oX196LmltYWcoKSwgX194LmltYWcoKSkpOwp9CgovLyBzaW5oCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpfX0RFVklDRV9fIHN0ZDo6Y29tcGxleDxfVHA+IHNpbmgoY29uc3Qgc3RkOjpjb21wbGV4PF9UcD4gJl9feCkgewogIGlmIChzdGQ6OmlzaW5mKF9feC5yZWFsKCkpICYmICFzdGQ6OmlzZmluaXRlKF9feC5pbWFnKCkpKQogICAgcmV0dXJuIHN0ZDo6Y29tcGxleDxfVHA+KF9feC5yZWFsKCksIF9UcChOQU4pKTsKICBpZiAoX194LnJlYWwoKSA9PSAwICYmICFzdGQ6OmlzZmluaXRlKF9feC5pbWFnKCkpKQogICAgcmV0dXJuIHN0ZDo6Y29tcGxleDxfVHA+KF9feC5yZWFsKCksIF9UcChOQU4pKTsKICBpZiAoX194LmltYWcoKSA9PSAwICYmICFzdGQ6OmlzZmluaXRlKF9feC5yZWFsKCkpKQogICAgcmV0dXJuIF9feDsKICByZXR1cm4gc3RkOjpjb21wbGV4PF9UcD4oc2luaChfX3gucmVhbCgpKSAqIGNvcyhfX3guaW1hZygpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29zaChfX3gucmVhbCgpKSAqIHNpbihfX3guaW1hZygpKSk7Cn0KCi8vIGNvc2gKCnRlbXBsYXRlIDxjbGFzcyBfVHA+Cl9fREVWSUNFX18gc3RkOjpjb21wbGV4PF9UcD4gY29zaChjb25zdCBzdGQ6OmNvbXBsZXg8X1RwPiAmX194KSB7CiAgaWYgKHN0ZDo6aXNpbmYoX194LnJlYWwoKSkgJiYgIXN0ZDo6aXNmaW5pdGUoX194LmltYWcoKSkpCiAgICByZXR1cm4gc3RkOjpjb21wbGV4PF9UcD4oYWJzKF9feC5yZWFsKCkpLCBfVHAoTkFOKSk7CiAgaWYgKF9feC5yZWFsKCkgPT0gMCAmJiAhc3RkOjppc2Zpbml0ZShfX3guaW1hZygpKSkKICAgIHJldHVybiBzdGQ6OmNvbXBsZXg8X1RwPihfVHAoTkFOKSwgX194LnJlYWwoKSk7CiAgaWYgKF9feC5yZWFsKCkgPT0gMCAmJiBfX3guaW1hZygpID09IDApCiAgICByZXR1cm4gc3RkOjpjb21wbGV4PF9UcD4oX1RwKDEpLCBfX3guaW1hZygpKTsKICBpZiAoX194LmltYWcoKSA9PSAwICYmICFzdGQ6OmlzZmluaXRlKF9feC5yZWFsKCkpKQogICAgcmV0dXJuIHN0ZDo6Y29tcGxleDxfVHA+KGFicyhfX3gucmVhbCgpKSwgX194LmltYWcoKSk7CiAgcmV0dXJuIHN0ZDo6Y29tcGxleDxfVHA+KGNvc2goX194LnJlYWwoKSkgKiBjb3MoX194LmltYWcoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmgoX194LnJlYWwoKSkgKiBzaW4oX194LmltYWcoKSkpOwp9CgovLyB0YW5oCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpfX0RFVklDRV9fIHN0ZDo6Y29tcGxleDxfVHA+IHRhbmgoY29uc3Qgc3RkOjpjb21wbGV4PF9UcD4gJl9feCkgewogIGlmIChzdGQ6OmlzaW5mKF9feC5yZWFsKCkpKSB7CiAgICBpZiAoIXN0ZDo6aXNmaW5pdGUoX194LmltYWcoKSkpCiAgICAgIHJldHVybiBzdGQ6OmNvbXBsZXg8X1RwPihfVHAoMSksIF9UcCgwKSk7CiAgICByZXR1cm4gc3RkOjpjb21wbGV4PF9UcD4oX1RwKDEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlzaWduKF9UcCgwKSwgc2luKF9UcCgyKSAqIF9feC5pbWFnKCkpKSk7CiAgfQogIGlmIChzdGQ6OmlzbmFuKF9feC5yZWFsKCkpICYmIF9feC5pbWFnKCkgPT0gMCkKICAgIHJldHVybiBfX3g7CiAgX1RwIF9fMnIoX1RwKDIpICogX194LnJlYWwoKSk7CiAgX1RwIF9fMmkoX1RwKDIpICogX194LmltYWcoKSk7CiAgX1RwIF9fZChjb3NoKF9fMnIpICsgY29zKF9fMmkpKTsKICBfVHAgX18ycnNoKHNpbmgoX18ycikpOwogIGlmIChzdGQ6OmlzaW5mKF9fMnJzaCkgJiYgc3RkOjppc2luZihfX2QpKQogICAgcmV0dXJuIHN0ZDo6Y29tcGxleDxfVHA+KF9fMnJzaCA+IF9UcCgwKSA/IF9UcCgxKSA6IF9UcCgtMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX18yaSA+IF9UcCgwKSA/IF9UcCgwKSA6IF9UcCgtMC4pKTsKICByZXR1cm4gc3RkOjpjb21wbGV4PF9UcD4oX18ycnNoIC8gX19kLCBzaW4oX18yaSkgLyBfX2QpOwp9CgovLyBhc2luCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpfX0RFVklDRV9fIHN0ZDo6Y29tcGxleDxfVHA+IGFzaW4oY29uc3Qgc3RkOjpjb21wbGV4PF9UcD4gJl9feCkgewogIHN0ZDo6Y29tcGxleDxfVHA+IF9feiA9IGFzaW5oKGNvbXBsZXg8X1RwPigtX194LmltYWcoKSwgX194LnJlYWwoKSkpOwogIHJldHVybiBzdGQ6OmNvbXBsZXg8X1RwPihfX3ouaW1hZygpLCAtX196LnJlYWwoKSk7Cn0KCi8vIGFjb3MKCnRlbXBsYXRlIDxjbGFzcyBfVHA+Cl9fREVWSUNFX18gc3RkOjpjb21wbGV4PF9UcD4gYWNvcyhjb25zdCBzdGQ6OmNvbXBsZXg8X1RwPiAmX194KSB7CiAgY29uc3QgX1RwIF9fcGkoYXRhbjIoKzAuLCAtMC4pKTsKICBpZiAoc3RkOjppc2luZihfX3gucmVhbCgpKSkgewogICAgaWYgKHN0ZDo6aXNuYW4oX194LmltYWcoKSkpCiAgICAgIHJldHVybiBzdGQ6OmNvbXBsZXg8X1RwPihfX3guaW1hZygpLCBfX3gucmVhbCgpKTsKICAgIGlmIChzdGQ6OmlzaW5mKF9feC5pbWFnKCkpKSB7CiAgICAgIGlmIChfX3gucmVhbCgpIDwgX1RwKDApKQogICAgICAgIHJldHVybiBzdGQ6OmNvbXBsZXg8X1RwPihfVHAoMC43NSkgKiBfX3BpLCAtX194LmltYWcoKSk7CiAgICAgIHJldHVybiBzdGQ6OmNvbXBsZXg8X1RwPihfVHAoMC4yNSkgKiBfX3BpLCAtX194LmltYWcoKSk7CiAgICB9CiAgICBpZiAoX194LnJlYWwoKSA8IF9UcCgwKSkKICAgICAgcmV0dXJuIHN0ZDo6Y29tcGxleDxfVHA+KF9fcGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYml0KF9feC5pbWFnKCkpID8gLV9feC5yZWFsKCkgOiBfX3gucmVhbCgpKTsKICAgIHJldHVybiBzdGQ6OmNvbXBsZXg8X1RwPihfVHAoMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmJpdChfX3guaW1hZygpKSA/IF9feC5yZWFsKCkgOiAtX194LnJlYWwoKSk7CiAgfQogIGlmIChzdGQ6OmlzbmFuKF9feC5yZWFsKCkpKSB7CiAgICBpZiAoc3RkOjppc2luZihfX3guaW1hZygpKSkKICAgICAgcmV0dXJuIHN0ZDo6Y29tcGxleDxfVHA+KF9feC5yZWFsKCksIC1fX3guaW1hZygpKTsKICAgIHJldHVybiBzdGQ6OmNvbXBsZXg8X1RwPihfX3gucmVhbCgpLCBfX3gucmVhbCgpKTsKICB9CiAgaWYgKHN0ZDo6aXNpbmYoX194LmltYWcoKSkpCiAgICByZXR1cm4gc3RkOjpjb21wbGV4PF9UcD4oX19waSAvIF9UcCgyKSwgLV9feC5pbWFnKCkpOwogIGlmIChfX3gucmVhbCgpID09IDAgJiYgKF9feC5pbWFnKCkgPT0gMCB8fCBpc25hbihfX3guaW1hZygpKSkpCiAgICByZXR1cm4gc3RkOjpjb21wbGV4PF9UcD4oX19waSAvIF9UcCgyKSwgLV9feC5pbWFnKCkpOwogIHN0ZDo6Y29tcGxleDxfVHA+IF9feiA9IGxvZyhfX3ggKyBzcXJ0KF9fc3FyKF9feCkgLSBfVHAoMSkpKTsKICBpZiAoc2lnbmJpdChfX3guaW1hZygpKSkKICAgIHJldHVybiBzdGQ6OmNvbXBsZXg8X1RwPihhYnMoX196LmltYWcoKSksIGFicyhfX3oucmVhbCgpKSk7CiAgcmV0dXJuIHN0ZDo6Y29tcGxleDxfVHA+KGFicyhfX3ouaW1hZygpKSwgLWFicyhfX3oucmVhbCgpKSk7Cn0KCi8vIGF0YW4KCnRlbXBsYXRlIDxjbGFzcyBfVHA+Cl9fREVWSUNFX18gc3RkOjpjb21wbGV4PF9UcD4gYXRhbihjb25zdCBzdGQ6OmNvbXBsZXg8X1RwPiAmX194KSB7CiAgc3RkOjpjb21wbGV4PF9UcD4gX196ID0gYXRhbmgoY29tcGxleDxfVHA+KC1fX3guaW1hZygpLCBfX3gucmVhbCgpKSk7CiAgcmV0dXJuIHN0ZDo6Y29tcGxleDxfVHA+KF9fei5pbWFnKCksIC1fX3oucmVhbCgpKTsKfQoKLy8gc2luCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpfX0RFVklDRV9fIHN0ZDo6Y29tcGxleDxfVHA+IHNpbihjb25zdCBzdGQ6OmNvbXBsZXg8X1RwPiAmX194KSB7CiAgc3RkOjpjb21wbGV4PF9UcD4gX196ID0gc2luaChjb21wbGV4PF9UcD4oLV9feC5pbWFnKCksIF9feC5yZWFsKCkpKTsKICByZXR1cm4gc3RkOjpjb21wbGV4PF9UcD4oX196LmltYWcoKSwgLV9fei5yZWFsKCkpOwp9CgovLyBjb3MKCnRlbXBsYXRlIDxjbGFzcyBfVHA+IHN0ZDo6Y29tcGxleDxfVHA+IGNvcyhjb25zdCBzdGQ6OmNvbXBsZXg8X1RwPiAmX194KSB7CiAgcmV0dXJuIGNvc2goY29tcGxleDxfVHA+KC1fX3guaW1hZygpLCBfX3gucmVhbCgpKSk7Cn0KCi8vIHRhbgoKdGVtcGxhdGUgPGNsYXNzIF9UcD4KX19ERVZJQ0VfXyBzdGQ6OmNvbXBsZXg8X1RwPiB0YW4oY29uc3Qgc3RkOjpjb21wbGV4PF9UcD4gJl9feCkgewogIHN0ZDo6Y29tcGxleDxfVHA+IF9feiA9IHRhbmgoY29tcGxleDxfVHA+KC1fX3guaW1hZygpLCBfX3gucmVhbCgpKSk7CiAgcmV0dXJuIHN0ZDo6Y29tcGxleDxfVHA+KF9fei5pbWFnKCksIC1fX3oucmVhbCgpKTsKfQoKfSAvLyBuYW1lc3BhY2Ugc3RkCgojZW5kaWYKAHNhbml0aXplci9jb3ZlcmFnZV9pbnRlcmZhY2UuaAByYgBUZXJtaW5hdGUgcGFyc2luZyBkdWUgdG8gSGFuZGxlciBlcnJvci4AYWxsAGxpc3QgY291bnQgAGV4dGVybmFsL3JlZ2V4LXJlMi9yZTIvZGZhLmNjAFJ1blN0YXRlT25CeXRlVW5sb2NrZWQgZmFpbGVkIGFmdGVyIFJlc2V0Q2FjaGUAVW5leHBlY3RlZCBvcGNvZGUgaW4gc2hvcnQgY2lyY3VpdDogAEJhZCByZWZlcmVuY2UgY291bnQgAGtSZWdleHBDYXB0dXJlIGNhcCgpID09IDAAPwBceHsleH0AQnVoaWQASW5oZXJpdGVkAEthaXRoaQBMdABNZWV0ZWlfTWF5ZWsAUABUYWlfTGUAVkRTTyBzeW1ib2wgdW5leHBlY3RlZGx5IGxvbmcAL3Byb2Mvc2VsZi9hdXh2AG1tYXAgZXJyb3I6ICVkAHVuc2lnbmVkIGxvbmcAZFYAJj0AbFMALT4qAElOVkFMSURfQVJHVU1FTlQAUkVTT1VSQ0VfRVhIQVVTVEVEACwgc3RhcnQgPSAAc2xvdyByZWxlYXNlAE11dGV4OjpGZXIgd2hpbGUgaW4gdGltZWQgd2FpdABGYWlsZWQgdG8gcmVhZCByZWFsLXRpbWUgY2xvY2suAC9wa2cvZGF0YS90emRhdGEvAGV4dGVybmFsL2JvcmluZ3NzbC9zcmMvY3J5cHRvL2ZpcHNtb2R1bGUvYm4vZ2NkLmMAZXh0ZXJuYWwvYm9yaW5nc3NsL3NyYy9jcnlwdG8vZmlwc21vZHVsZS9ibi9tb250Z29tZXJ5LmMAZXh0ZXJuYWwvYm9yaW5nc3NsL3NyYy9jcnlwdG8vZmlwc21vZHVsZS9jaXBoZXIvYWVhZC5jAGt5dGhlLnByb3RvLkNvbXBpbGF0aW9uVW5pdC5zb3VyY2VfZmlsZQBreXRoZS5wcm90by5Db21waWxhdGlvblVuaXQud29ya2luZ19kaXJlY3RvcnkAa3l0aGUucHJvdG8uY29tbW9uLkNvcnB1c1BhdGgucm9vdABreXRoZS5wcm90by5Db250ZXh0RGVwZW5kZW50VmVyc2lvbi5Sb3cuc291cmNlX2NvbnRleHQAW14tXS4qXC5nbwAlcyAocmVnZXggd2FzICVzKQoAIGlzIG5vdCBhIG5vcm1hbCBkaXJlY3RvcnkuAEtZVEhFX0VYQ0xVREVfRU1QVFlfRElSUwApIGR1ZSB0byBpdHMgaW5jbHVzaW9uIGluIAAvYnVpbGQAIGZvciB0cmFuc2NyaXB0IABhdng1MTJpZm1hdmxpbnRyaW4uaAAvKj09PS0tLS0tLS0tLS0tLS0gYXZ4NTEycGZpbnRyaW4uaCAtIFBGIGludHJpbnNpY3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqCiAqCiAqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCiAqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCiNpZm5kZWYgX19JTU1JTlRSSU5fSAojZXJyb3IgIk5ldmVyIHVzZSA8YXZ4NTEycGZpbnRyaW4uaD4gZGlyZWN0bHk7IGluY2x1ZGUgPGltbWludHJpbi5oPiBpbnN0ZWFkLiIKI2VuZGlmCgojaWZuZGVmIF9fQVZYNTEyUEZJTlRSSU5fSAojZGVmaW5lIF9fQVZYNTEyUEZJTlRSSU5fSAoKLyogRGVmaW5lIHRoZSBkZWZhdWx0IGF0dHJpYnV0ZXMgZm9yIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlLiAqLwojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUyBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oImF2eDUxMnBmIikpKQoKI2RlZmluZSBfbW01MTJfbWFza19wcmVmZXRjaF9pMzJnYXRoZXJfcGQoaW5kZXgsIG1hc2ssIGFkZHIsIHNjYWxlLCBoaW50KSBcCiAgX19idWlsdGluX2lhMzJfZ2F0aGVycGZkcGQoKF9fbW1hc2s4KShtYXNrKSwgKF9fdjhzaSkoX19tMjU2aSkoaW5kZXgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgY29uc3QgKikoYWRkciksIChpbnQpKHNjYWxlKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKGhpbnQpKQoKI2RlZmluZSBfbW01MTJfcHJlZmV0Y2hfaTMyZ2F0aGVyX3BkKGluZGV4LCBhZGRyLCBzY2FsZSwgaGludCkgXAogIF9fYnVpbHRpbl9pYTMyX2dhdGhlcnBmZHBkKChfX21tYXNrOCkgLTEsIChfX3Y4c2kpKF9fbTI1NmkpKGluZGV4KSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkIGNvbnN0ICopKGFkZHIpLCAoaW50KShzY2FsZSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShoaW50KSkKCiNkZWZpbmUgX21tNTEyX21hc2tfcHJlZmV0Y2hfaTMyZ2F0aGVyX3BzKGluZGV4LCBtYXNrLCBhZGRyLCBzY2FsZSwgaGludCkgXAogIF9fYnVpbHRpbl9pYTMyX2dhdGhlcnBmZHBzKChfX21tYXNrMTYpKG1hc2spLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpKF9fbTUxMmkpKGluZGV4KSwgKHZvaWQgY29uc3QgKikoYWRkciksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShzY2FsZSksIChpbnQpKGhpbnQpKQoKI2RlZmluZSBfbW01MTJfcHJlZmV0Y2hfaTMyZ2F0aGVyX3BzKGluZGV4LCBhZGRyLCBzY2FsZSwgaGludCkgXAogIF9fYnVpbHRpbl9pYTMyX2dhdGhlcnBmZHBzKChfX21tYXNrMTYpIC0xLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpKF9fbTUxMmkpKGluZGV4KSwgKHZvaWQgY29uc3QgKikoYWRkciksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShzY2FsZSksIChpbnQpKGhpbnQpKQoKI2RlZmluZSBfbW01MTJfbWFza19wcmVmZXRjaF9pNjRnYXRoZXJfcGQoaW5kZXgsIG1hc2ssIGFkZHIsIHNjYWxlLCBoaW50KSBcCiAgX19idWlsdGluX2lhMzJfZ2F0aGVycGZxcGQoKF9fbW1hc2s4KShtYXNrKSwgKF9fdjhkaSkoX19tNTEyaSkoaW5kZXgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgY29uc3QgKikoYWRkciksIChpbnQpKHNjYWxlKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKGhpbnQpKQoKI2RlZmluZSBfbW01MTJfcHJlZmV0Y2hfaTY0Z2F0aGVyX3BkKGluZGV4LCBhZGRyLCBzY2FsZSwgaGludCkgXAogIF9fYnVpbHRpbl9pYTMyX2dhdGhlcnBmcXBkKChfX21tYXNrOCkgLTEsIChfX3Y4ZGkpKF9fbTUxMmkpKGluZGV4KSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkIGNvbnN0ICopKGFkZHIpLCAoaW50KShzY2FsZSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShoaW50KSkKCiNkZWZpbmUgX21tNTEyX21hc2tfcHJlZmV0Y2hfaTY0Z2F0aGVyX3BzKGluZGV4LCBtYXNrLCBhZGRyLCBzY2FsZSwgaGludCkgXAogIF9fYnVpbHRpbl9pYTMyX2dhdGhlcnBmcXBzKChfX21tYXNrOCkobWFzayksIChfX3Y4ZGkpKF9fbTUxMmkpKGluZGV4KSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkIGNvbnN0ICopKGFkZHIpLCAoaW50KShzY2FsZSksIChpbnQpKGhpbnQpKQoKI2RlZmluZSBfbW01MTJfcHJlZmV0Y2hfaTY0Z2F0aGVyX3BzKGluZGV4LCBhZGRyLCBzY2FsZSwgaGludCkgXAogIF9fYnVpbHRpbl9pYTMyX2dhdGhlcnBmcXBzKChfX21tYXNrOCkgLTEsIChfX3Y4ZGkpKF9fbTUxMmkpKGluZGV4KSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkIGNvbnN0ICopKGFkZHIpLCAoaW50KShzY2FsZSksIChpbnQpKGhpbnQpKQoKI2RlZmluZSBfbW01MTJfcHJlZmV0Y2hfaTMyc2NhdHRlcl9wZChhZGRyLCBpbmRleCwgc2NhbGUsIGhpbnQpIFwKICBfX2J1aWx0aW5faWEzMl9zY2F0dGVycGZkcGQoKF9fbW1hc2s4KS0xLCAoX192OHNpKShfX20yNTZpKShpbmRleCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKikoYWRkciksIChpbnQpKHNjYWxlKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShoaW50KSkKCiNkZWZpbmUgX21tNTEyX21hc2tfcHJlZmV0Y2hfaTMyc2NhdHRlcl9wZChhZGRyLCBtYXNrLCBpbmRleCwgc2NhbGUsIGhpbnQpIFwKICBfX2J1aWx0aW5faWEzMl9zY2F0dGVycGZkcGQoKF9fbW1hc2s4KShtYXNrKSwgKF9fdjhzaSkoX19tMjU2aSkoaW5kZXgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopKGFkZHIpLCAoaW50KShzY2FsZSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoaGludCkpCgojZGVmaW5lIF9tbTUxMl9wcmVmZXRjaF9pMzJzY2F0dGVyX3BzKGFkZHIsIGluZGV4LCBzY2FsZSwgaGludCkgXAogIF9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJwZmRwcygoX19tbWFzazE2KS0xLCAoX192MTZzaSkoX19tNTEyaSkoaW5kZXgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopKGFkZHIpLCAoaW50KShzY2FsZSksIChpbnQpKGhpbnQpKQoKI2RlZmluZSBfbW01MTJfbWFza19wcmVmZXRjaF9pMzJzY2F0dGVyX3BzKGFkZHIsIG1hc2ssIGluZGV4LCBzY2FsZSwgaGludCkgXAogIF9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJwZmRwcygoX19tbWFzazE2KShtYXNrKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSkoX19tNTEyaSkoaW5kZXgpLCAodm9pZCAqKShhZGRyKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShzY2FsZSksIChpbnQpKGhpbnQpKQoKI2RlZmluZSBfbW01MTJfcHJlZmV0Y2hfaTY0c2NhdHRlcl9wZChhZGRyLCBpbmRleCwgc2NhbGUsIGhpbnQpIFwKICBfX2J1aWx0aW5faWEzMl9zY2F0dGVycGZxcGQoKF9fbW1hc2s4KS0xLCAoX192OGRpKShfX201MTJpKShpbmRleCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKikoYWRkciksIChpbnQpKHNjYWxlKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShoaW50KSkKCiNkZWZpbmUgX21tNTEyX21hc2tfcHJlZmV0Y2hfaTY0c2NhdHRlcl9wZChhZGRyLCBtYXNrLCBpbmRleCwgc2NhbGUsIGhpbnQpIFwKICBfX2J1aWx0aW5faWEzMl9zY2F0dGVycGZxcGQoKF9fbW1hc2s4KShtYXNrKSwgKF9fdjhkaSkoX19tNTEyaSkoaW5kZXgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopKGFkZHIpLCAoaW50KShzY2FsZSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoaGludCkpCgojZGVmaW5lIF9tbTUxMl9wcmVmZXRjaF9pNjRzY2F0dGVyX3BzKGFkZHIsIGluZGV4LCBzY2FsZSwgaGludCkgXAogIF9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJwZnFwcygoX19tbWFzazgpLTEsIChfX3Y4ZGkpKF9fbTUxMmkpKGluZGV4KSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKShhZGRyKSwgKGludCkoc2NhbGUpLCAoaW50KShoaW50KSkKCiNkZWZpbmUgX21tNTEyX21hc2tfcHJlZmV0Y2hfaTY0c2NhdHRlcl9wcyhhZGRyLCBtYXNrLCBpbmRleCwgc2NhbGUsIGhpbnQpIFwKICBfX2J1aWx0aW5faWEzMl9zY2F0dGVycGZxcHMoKF9fbW1hc2s4KShtYXNrKSwgKF9fdjhkaSkoX19tNTEyaSkoaW5kZXgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopKGFkZHIpLCAoaW50KShzY2FsZSksIChpbnQpKGhpbnQpKQoKI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUwoKI2VuZGlmCgAvKj09PS0tLS0tLS0tLS0tLS0gYXZ4NTEydmJtaWludHJpbi5oIC0gVkJNSSBpbnRyaW5zaWNzIC0tLS0tLS0tLS0tLS0tLS0tLT09PQogKgogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwojaWZuZGVmIF9fSU1NSU5UUklOX0gKI2Vycm9yICJOZXZlciB1c2UgPGF2eDUxMnZibWlpbnRyaW4uaD4gZGlyZWN0bHk7IGluY2x1ZGUgPGltbWludHJpbi5oPiBpbnN0ZWFkLiIKI2VuZGlmCgojaWZuZGVmIF9fVkJNSUlOVFJJTl9ICiNkZWZpbmUgX19WQk1JSU5UUklOX0gKCi8qIERlZmluZSB0aGUgZGVmYXVsdCBhdHRyaWJ1dGVzIGZvciB0aGUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZS4gKi8KI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJhdng1MTJ2Ym1pIiksIF9fbWluX3ZlY3Rvcl93aWR0aF9fKDUxMikpKQoKCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTUxMl9wZXJtdXRleDJ2YXJfZXBpOChfX201MTJpIF9fQSwgX19tNTEyaSBfX0ksIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3ZwZXJtaTJ2YXJxaTUxMigoX192NjRxaSlfX0EsIChfX3Y2NHFpKV9fSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y2NHFpKSBfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW01MTJfbWFza19wZXJtdXRleDJ2YXJfZXBpOChfX201MTJpIF9fQSwgX19tbWFzazY0IF9fVSwgX19tNTEyaSBfX0ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfNTEyKF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y2NHFpKV9tbTUxMl9wZXJtdXRleDJ2YXJfZXBpOChfX0EsIF9fSSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y2NHFpKV9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTUxMl9tYXNrMl9wZXJtdXRleDJ2YXJfZXBpOChfX201MTJpIF9fQSwgX19tNTEyaSBfX0ksIF9fbW1hc2s2NCBfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzUxMihfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NjRxaSlfbW01MTJfcGVybXV0ZXgydmFyX2VwaTgoX19BLCBfX0ksIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NjRxaSlfX0kpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW01MTJfbWFza3pfcGVybXV0ZXgydmFyX2VwaTgoX19tbWFzazY0IF9fVSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19JLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl81MTIoX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjY0cWkpX21tNTEyX3Blcm11dGV4MnZhcl9lcGk4KF9fQSwgX19JLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjY0cWkpX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTUxMl9wZXJtdXRleHZhcl9lcGk4IChfX201MTJpIF9fQSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfcGVybXZhcnFpNTEyKChfX3Y2NHFpKSBfX0IsIChfX3Y2NHFpKSBfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW01MTJfbWFza3pfcGVybXV0ZXh2YXJfZXBpOCAoX19tbWFzazY0IF9fTSwgX19tNTEyaSBfX0EsCiAgICAgICAgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl81MTIoKF9fbW1hc2s2NClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NjRxaSlfbW01MTJfcGVybXV0ZXh2YXJfZXBpOChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NjRxaSlfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tNTEyX21hc2tfcGVybXV0ZXh2YXJfZXBpOCAoX19tNTEyaSBfX1csIF9fbW1hc2s2NCBfX00sIF9fbTUxMmkgX19BLAogICAgICAgICAgICAgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl81MTIoKF9fbW1hc2s2NClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NjRxaSlfbW01MTJfcGVybXV0ZXh2YXJfZXBpOChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NjRxaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW01MTJfbXVsdGlzaGlmdF9lcGk2NF9lcGk4KF9fbTUxMmkgX19YLCBfX201MTJpIF9fWSkKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl92cG11bHRpc2hpZnRxYjUxMigoX192NjRxaSlfX1gsIChfX3Y2NHFpKSBfX1kpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW01MTJfbWFza19tdWx0aXNoaWZ0X2VwaTY0X2VwaTgoX19tNTEyaSBfX1csIF9fbW1hc2s2NCBfX00sIF9fbTUxMmkgX19YLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tNTEyaSBfX1kpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl81MTIoKF9fbW1hc2s2NClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjY0cWkpX21tNTEyX211bHRpc2hpZnRfZXBpNjRfZXBpOChfX1gsIF9fWSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjY0cWkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tNTEyX21hc2t6X211bHRpc2hpZnRfZXBpNjRfZXBpOChfX21tYXNrNjQgX19NLCBfX201MTJpIF9fWCwgX19tNTEyaSBfX1kpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl81MTIoKF9fbW1hc2s2NClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjY0cWkpX21tNTEyX211bHRpc2hpZnRfZXBpNjRfZXBpOChfX1gsIF9fWSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjY0cWkpX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCgojdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTCgojZW5kaWYKAC8qPT09LS0tLS0tLS0tLS0tLS0tIGF2eHZubmlpbnRyaW4uaCAtIFZOTkkgaW50cmluc2ljcyAtLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKgogKgogKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAogKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKICoKICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCiAqCiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAogKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgogKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAogKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCiAqIFRIRSBTT0ZUV0FSRS4KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKi8KI2lmbmRlZiBfX0lNTUlOVFJJTl9ICiNlcnJvciAiTmV2ZXIgdXNlIDxhdnh2bm5paW50cmluLmg+IGRpcmVjdGx5OyBpbmNsdWRlIDxpbW1pbnRyaW4uaD4gaW5zdGVhZC4iCiNlbmRpZgoKI2lmbmRlZiBfX0FWWFZOTklJTlRSSU5fSAojZGVmaW5lIF9fQVZYVk5OSUlOVFJJTl9ICgovKiBCZWxvdyBpbnRyaW5zaWNzIGRlZmluZWQgaW4gYXZ4NTEydmx2bm5paW50cmluLmggY2FuIGJlIHVzZWQgZm9yIEFWWFZOTkkgKi8KLy8vIFxmbiBfX20yNTZpIF9tbTI1Nl9kcGJ1c2RfZXBpMzIoX19tMjU2aSBfX1MsIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikKLy8vIFxmbiBfX20yNTZpIF9tbTI1Nl9kcGJ1c2RzX2VwaTMyKF9fbTI1NmkgX19TLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCi8vLyBcZm4gX19tMjU2aSBfbW0yNTZfZHB3c3NkX2VwaTMyKF9fbTI1NmkgX19TLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCi8vLyBcZm4gX19tMjU2aSBfbW0yNTZfZHB3c3Nkc19lcGkzMihfX20yNTZpIF9fUywgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQovLy8gXGZuIF9fbTEyOGkgX21tX2RwYnVzZF9lcGkzMihfX20xMjhpIF9fUywgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQovLy8gXGZuIF9fbTEyOGkgX21tX2RwYnVzZHNfZXBpMzIoX19tMTI4aSBfX1MsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKLy8vIFxmbiBfX20xMjhpIF9tbV9kcHdzc2RfZXBpMzIoX19tMTI4aSBfX1MsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKLy8vIFxmbiBfX20xMjhpIF9tbV9kcHdzc2RzX2VwaTMyKF9fbTEyOGkgX19TLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCgovKiBJbnRyaW5zaWNzIHdpdGggX2F2eF8gcHJlZml4IGFyZSBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG1zdmMuICovCi8qIERlZmluZSB0aGUgZGVmYXVsdCBhdHRyaWJ1dGVzIGZvciB0aGUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZS4gKi8KI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJhdnh2bm5pIiksIF9fbWluX3ZlY3Rvcl93aWR0aF9fKDI1NikpKQojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oImF2eHZubmkiKSwgX19taW5fdmVjdG9yX3dpZHRoX18oMTI4KSkpCgovLy8gTXVsdGlwbHkgZ3JvdXBzIG9mIDQgYWRqYWNlbnQgcGFpcnMgb2YgdW5zaWduZWQgOC1iaXQgaW50ZWdlcnMgaW4gXGEgX19BIHdpdGgKLy8vIGNvcnJlc3BvbmRpbmcgc2lnbmVkIDgtYml0IGludGVnZXJzIGluIFxhIF9fQiwgcHJvZHVjaW5nIDQgaW50ZXJtZWRpYXRlIHNpZ25lZAovLy8gMTYtYml0IHJlc3VsdHMuIFN1bSB0aGVzZSA0IHJlc3VsdHMgd2l0aCB0aGUgY29ycmVzcG9uZGluZyAzMi1iaXQgaW50ZWdlcgovLy8gaW4gXGEgX19TLCBhbmQgc3RvcmUgdGhlIHBhY2tlZCAzMi1iaXQgcmVzdWx0cyBpbiBEU1QuCi8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUERQQlVTRCA8L2M+IGluc3RydWN0aW9ucy4KLy8vCi8vLyBcb3BlcmF0aW9uCi8vLyAgICBGT1IgaiA6PSAwIHRvIDcKLy8vICAgICAgdG1wMS53b3JkIDo9IFNpZ25lZChaZXJvRXh0ZW5kMTYoX19BLmJ5dGVbNCpqXSkgKiBTaWduRXh0ZW5kMTYoX19CLmJ5dGVbNCpqXSkpCi8vLyAgICAgIHRtcDIud29yZCA6PSBTaWduZWQoWmVyb0V4dGVuZDE2KF9fQS5ieXRlWzQqaisxXSkgKiBTaWduRXh0ZW5kMTYoX19CLmJ5dGVbNCpqKzFdKSkKLy8vICAgICAgdG1wMy53b3JkIDo9IFNpZ25lZChaZXJvRXh0ZW5kMTYoX19BLmJ5dGVbNCpqKzJdKSAqIFNpZ25FeHRlbmQxNihfX0IuYnl0ZVs0KmorMl0pKQovLy8gICAgICB0bXA0LndvcmQgOj0gU2lnbmVkKFplcm9FeHRlbmQxNihfX0EuYnl0ZVs0KmorM10pICogU2lnbkV4dGVuZDE2KF9fQi5ieXRlWzQqaiszXSkpCi8vLyAgICAgIERTVC5kd29yZFtqXSA6PSBfX1MuZHdvcmRbal0gKyB0bXAxICsgdG1wMiArIHRtcDMgKyB0bXA0Ci8vLyAgICBFTkRGT1IKLy8vICAgIERTVFtNQVg6MjU2XSA6PSAwCi8vLyBcZW5kb3BlcmF0aW9uCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9kcGJ1c2RfYXZ4X2VwaTMyKF9fbTI1NmkgX19TLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfdnBkcGJ1c2QyNTYoKF9fdjhzaSlfX1MsIChfX3Y4c2kpX19BLCAoX192OHNpKV9fQik7Cn0KCi8vLyBNdWx0aXBseSBncm91cHMgb2YgNCBhZGphY2VudCBwYWlycyBvZiB1bnNpZ25lZCA4LWJpdCBpbnRlZ2VycyBpbiBcYSBfX0Egd2l0aAovLy8gY29ycmVzcG9uZGluZyBzaWduZWQgOC1iaXQgaW50ZWdlcnMgaW4gXGEgX19CLCBwcm9kdWNpbmcgNCBpbnRlcm1lZGlhdGUgc2lnbmVkCi8vLyAxNi1iaXQgcmVzdWx0cy4gU3VtIHRoZXNlIDQgcmVzdWx0cyB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIDMyLWJpdCBpbnRlZ2VyCi8vLyBpbiBcYSBfX1MgdXNpbmcgc2lnbmVkIHNhdHVyYXRpb24sIGFuZCBzdG9yZSB0aGUgcGFja2VkIDMyLWJpdCByZXN1bHRzIGluIERTVC4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQRFBCVVNEUyA8L2M+IGluc3RydWN0aW9ucy4KLy8vCi8vLyBcb3BlcmF0aW9uCi8vLyAgICBGT1IgaiA6PSAwIHRvIDcKLy8vICAgICAgdG1wMS53b3JkIDo9IFNpZ25lZChaZXJvRXh0ZW5kMTYoX19BLmJ5dGVbNCpqXSkgKiBTaWduRXh0ZW5kMTYoX19CLmJ5dGVbNCpqXSkpCi8vLyAgICAgIHRtcDIud29yZCA6PSBTaWduZWQoWmVyb0V4dGVuZDE2KF9fQS5ieXRlWzQqaisxXSkgKiBTaWduRXh0ZW5kMTYoX19CLmJ5dGVbNCpqKzFdKSkKLy8vICAgICAgdG1wMy53b3JkIDo9IFNpZ25lZChaZXJvRXh0ZW5kMTYoX19BLmJ5dGVbNCpqKzJdKSAqIFNpZ25FeHRlbmQxNihfX0IuYnl0ZVs0KmorMl0pKQovLy8gICAgICB0bXA0LndvcmQgOj0gU2lnbmVkKFplcm9FeHRlbmQxNihfX0EuYnl0ZVs0KmorM10pICogU2lnbkV4dGVuZDE2KF9fQi5ieXRlWzQqaiszXSkpCi8vLyAgICAgIERTVC5kd29yZFtqXSA6PSBTYXR1cmF0ZTMyKF9fUy5kd29yZFtqXSArIHRtcDEgKyB0bXAyICsgdG1wMyArIHRtcDQpCi8vLyAgICBFTkRGT1IKLy8vICAgIERTVFtNQVg6MjU2XSA6PSAwCi8vLyBcZW5kb3BlcmF0aW9uCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9kcGJ1c2RzX2F2eF9lcGkzMihfX20yNTZpIF9fUywgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3ZwZHBidXNkczI1NigoX192OHNpKV9fUywgKF9fdjhzaSlfX0EsIChfX3Y4c2kpX19CKTsKfQoKLy8vIE11bHRpcGx5IGdyb3VwcyBvZiAyIGFkamFjZW50IHBhaXJzIG9mIHNpZ25lZCAxNi1iaXQgaW50ZWdlcnMgaW4gXGEgX19BIHdpdGgKLy8vIGNvcnJlc3BvbmRpbmcgMTYtYml0IGludGVnZXJzIGluIFxhIF9fQiwgcHJvZHVjaW5nIDIgaW50ZXJtZWRpYXRlIHNpZ25lZCAzMi1iaXQKLy8vIHJlc3VsdHMuIFN1bSB0aGVzZSAyIHJlc3VsdHMgd2l0aCB0aGUgY29ycmVzcG9uZGluZyAzMi1iaXQgaW50ZWdlciBpbiBcYSBfX1MsCi8vLyAgYW5kIHN0b3JlIHRoZSBwYWNrZWQgMzItYml0IHJlc3VsdHMgaW4gRFNULgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBEUFdTU0QgPC9jPiBpbnN0cnVjdGlvbnMuCi8vLwovLy8gXG9wZXJhdGlvbgovLy8gICAgRk9SIGogOj0gMCB0byA3Ci8vLyAgICAgIHRtcDEuZHdvcmQgOj0gU2lnbkV4dGVuZDMyKF9fQS53b3JkWzIqal0pICogU2lnbkV4dGVuZDMyKF9fQi53b3JkWzIqal0pCi8vLyAgICAgIHRtcDIuZHdvcmQgOj0gU2lnbkV4dGVuZDMyKF9fQS53b3JkWzIqaisxXSkgKiBTaWduRXh0ZW5kMzIoX19CLndvcmRbMipqKzFdKQovLy8gICAgICBEU1QuZHdvcmRbal0gOj0gX19TLmR3b3JkW2pdICsgdG1wMSArIHRtcDIKLy8vICAgIEVOREZPUgovLy8gICAgRFNUW01BWDoyNTZdIDo9IDAKLy8vIFxlbmRvcGVyYXRpb24Kc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2Rwd3NzZF9hdnhfZXBpMzIoX19tMjU2aSBfX1MsIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl92cGRwd3NzZDI1NigoX192OHNpKV9fUywgKF9fdjhzaSlfX0EsIChfX3Y4c2kpX19CKTsKfQoKLy8vIE11bHRpcGx5IGdyb3VwcyBvZiAyIGFkamFjZW50IHBhaXJzIG9mIHNpZ25lZCAxNi1iaXQgaW50ZWdlcnMgaW4gXGEgX19BIHdpdGgKLy8vIGNvcnJlc3BvbmRpbmcgMTYtYml0IGludGVnZXJzIGluIFxhIF9fQiwgcHJvZHVjaW5nIDIgaW50ZXJtZWRpYXRlIHNpZ25lZCAzMi1iaXQKLy8vIHJlc3VsdHMuIFN1bSB0aGVzZSAyIHJlc3VsdHMgd2l0aCB0aGUgY29ycmVzcG9uZGluZyAzMi1iaXQgaW50ZWdlciBpbiBcYSBfX1MKLy8vIHVzaW5nIHNpZ25lZCBzYXR1cmF0aW9uLCBhbmQgc3RvcmUgdGhlIHBhY2tlZCAzMi1iaXQgcmVzdWx0cyBpbiBEU1QuCi8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUERQV1NTRFMgPC9jPiBpbnN0cnVjdGlvbnMuCi8vLwovLy8gXG9wZXJhdGlvbgovLy8gICAgRk9SIGogOj0gMCB0byA3Ci8vLyAgICAgIHRtcDEuZHdvcmQgOj0gU2lnbkV4dGVuZDMyKF9fQS53b3JkWzIqal0pICogU2lnbkV4dGVuZDMyKF9fQi53b3JkWzIqal0pCi8vLyAgICAgIHRtcDIuZHdvcmQgOj0gU2lnbkV4dGVuZDMyKF9fQS53b3JkWzIqaisxXSkgKiBTaWduRXh0ZW5kMzIoX19CLndvcmRbMipqKzFdKQovLy8gICAgICBEU1QuZHdvcmRbal0gOj0gU2F0dXJhdGUzMihfX1MuZHdvcmRbal0gKyB0bXAxICsgdG1wMikKLy8vICAgIEVOREZPUgovLy8gICAgRFNUW01BWDoyNTZdIDo9IDAKLy8vIFxlbmRvcGVyYXRpb24Kc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2Rwd3NzZHNfYXZ4X2VwaTMyKF9fbTI1NmkgX19TLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfdnBkcHdzc2RzMjU2KChfX3Y4c2kpX19TLCAoX192OHNpKV9fQSwgKF9fdjhzaSlfX0IpOwp9CgovLy8gTXVsdGlwbHkgZ3JvdXBzIG9mIDQgYWRqYWNlbnQgcGFpcnMgb2YgdW5zaWduZWQgOC1iaXQgaW50ZWdlcnMgaW4gXGEgX19BIHdpdGgKLy8vIGNvcnJlc3BvbmRpbmcgc2lnbmVkIDgtYml0IGludGVnZXJzIGluIFxhIF9fQiwgcHJvZHVjaW5nIDQgaW50ZXJtZWRpYXRlIHNpZ25lZAovLy8gMTYtYml0IHJlc3VsdHMuIFN1bSB0aGVzZSA0IHJlc3VsdHMgd2l0aCB0aGUgY29ycmVzcG9uZGluZyAzMi1iaXQgaW50ZWdlcgovLy8gaW4gXGEgX19TLCBhbmQgc3RvcmUgdGhlIHBhY2tlZCAzMi1iaXQgcmVzdWx0cyBpbiBEU1QuCi8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUERQQlVTRCA8L2M+IGluc3RydWN0aW9ucy4KLy8vCi8vLyBcb3BlcmF0aW9uCi8vLyAgICBGT1IgaiA6PSAwIHRvIDMKLy8vICAgICAgdG1wMS53b3JkIDo9IFNpZ25lZChaZXJvRXh0ZW5kMTYoX19BLmJ5dGVbNCpqXSkgKiBTaWduRXh0ZW5kMTYoX19CLmJ5dGVbNCpqXSkpCi8vLyAgICAgIHRtcDIud29yZCA6PSBTaWduZWQoWmVyb0V4dGVuZDE2KF9fQS5ieXRlWzQqaisxXSkgKiBTaWduRXh0ZW5kMTYoX19CLmJ5dGVbNCpqKzFdKSkKLy8vICAgICAgdG1wMy53b3JkIDo9IFNpZ25lZChaZXJvRXh0ZW5kMTYoX19BLmJ5dGVbNCpqKzJdKSAqIFNpZ25FeHRlbmQxNihfX0IuYnl0ZVs0KmorMl0pKQovLy8gICAgICB0bXA0LndvcmQgOj0gU2lnbmVkKFplcm9FeHRlbmQxNihfX0EuYnl0ZVs0KmorM10pICogU2lnbkV4dGVuZDE2KF9fQi5ieXRlWzQqaiszXSkpCi8vLyAgICAgIERTVC5kd29yZFtqXSA6PSBfX1MuZHdvcmRbal0gKyB0bXAxICsgdG1wMiArIHRtcDMgKyB0bXA0Ci8vLyAgICBFTkRGT1IKLy8vICAgIERTVFtNQVg6MTI4XSA6PSAwCi8vLyBcZW5kb3BlcmF0aW9uCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9kcGJ1c2RfYXZ4X2VwaTMyKF9fbTEyOGkgX19TLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdnBkcGJ1c2QxMjgoKF9fdjRzaSlfX1MsIChfX3Y0c2kpX19BLCAoX192NHNpKV9fQik7Cn0KCi8vLyBNdWx0aXBseSBncm91cHMgb2YgNCBhZGphY2VudCBwYWlycyBvZiB1bnNpZ25lZCA4LWJpdCBpbnRlZ2VycyBpbiBcYSBfX0Egd2l0aAovLy8gY29ycmVzcG9uZGluZyBzaWduZWQgOC1iaXQgaW50ZWdlcnMgaW4gXGEgX19CLCBwcm9kdWNpbmcgNCBpbnRlcm1lZGlhdGUgc2lnbmVkCi8vLyAxNi1iaXQgcmVzdWx0cy4gU3VtIHRoZXNlIDQgcmVzdWx0cyB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIDMyLWJpdCBpbnRlZ2VyCi8vLyBpbiBcYSBfX1MgdXNpbmcgc2lnbmVkIHNhdHVyYXRpb24sIGFuZCBzdG9yZSB0aGUgcGFja2VkIDMyLWJpdCByZXN1bHRzIGluIERTVC4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQRFBCVVNEUyA8L2M+IGluc3RydWN0aW9ucy4KLy8vCi8vLyBcb3BlcmF0aW9uCi8vLyAgICBGT1IgaiA6PSAwIHRvIDMKLy8vICAgICAgdG1wMS53b3JkIDo9IFNpZ25lZChaZXJvRXh0ZW5kMTYoX19BLmJ5dGVbNCpqXSkgKiBTaWduRXh0ZW5kMTYoX19CLmJ5dGVbNCpqXSkpCi8vLyAgICAgIHRtcDIud29yZCA6PSBTaWduZWQoWmVyb0V4dGVuZDE2KF9fQS5ieXRlWzQqaisxXSkgKiBTaWduRXh0ZW5kMTYoX19CLmJ5dGVbNCpqKzFdKSkKLy8vICAgICAgdG1wMy53b3JkIDo9IFNpZ25lZChaZXJvRXh0ZW5kMTYoX19BLmJ5dGVbNCpqKzJdKSAqIFNpZ25FeHRlbmQxNihfX0IuYnl0ZVs0KmorMl0pKQovLy8gICAgICB0bXA0LndvcmQgOj0gU2lnbmVkKFplcm9FeHRlbmQxNihfX0EuYnl0ZVs0KmorM10pICogU2lnbkV4dGVuZDE2KF9fQi5ieXRlWzQqaiszXSkpCi8vLyAgICAgIERTVC5kd29yZFtqXSA6PSBTYXR1cmF0ZTMyKF9fUy5kd29yZFtqXSArIHRtcDEgKyB0bXAyICsgdG1wMyArIHRtcDQpCi8vLyAgICBFTkRGT1IKLy8vICAgIERTVFtNQVg6MTI4XSA6PSAwCi8vLyBcZW5kb3BlcmF0aW9uCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9kcGJ1c2RzX2F2eF9lcGkzMihfX20xMjhpIF9fUywgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3ZwZHBidXNkczEyOCgoX192NHNpKV9fUywgKF9fdjRzaSlfX0EsIChfX3Y0c2kpX19CKTsKfQoKLy8vIE11bHRpcGx5IGdyb3VwcyBvZiAyIGFkamFjZW50IHBhaXJzIG9mIHNpZ25lZCAxNi1iaXQgaW50ZWdlcnMgaW4gXGEgX19BIHdpdGgKLy8vIGNvcnJlc3BvbmRpbmcgMTYtYml0IGludGVnZXJzIGluIFxhIF9fQiwgcHJvZHVjaW5nIDIgaW50ZXJtZWRpYXRlIHNpZ25lZCAzMi1iaXQKLy8vIHJlc3VsdHMuIFN1bSB0aGVzZSAyIHJlc3VsdHMgd2l0aCB0aGUgY29ycmVzcG9uZGluZyAzMi1iaXQgaW50ZWdlciBpbiBcYSBfX1MsCi8vLyBhbmQgc3RvcmUgdGhlIHBhY2tlZCAzMi1iaXQgcmVzdWx0cyBpbiBEU1QuCi8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUERQV1NTRCA8L2M+IGluc3RydWN0aW9ucy4KLy8vCi8vLyBcb3BlcmF0aW9uCi8vLyAgICBGT1IgaiA6PSAwIHRvIDMKLy8vICAgICAgdG1wMS5kd29yZCA6PSBTaWduRXh0ZW5kMzIoX19BLndvcmRbMipqXSkgKiBTaWduRXh0ZW5kMzIoX19CLndvcmRbMipqXSkKLy8vICAgICAgdG1wMi5kd29yZCA6PSBTaWduRXh0ZW5kMzIoX19BLndvcmRbMipqKzFdKSAqIFNpZ25FeHRlbmQzMihfX0Iud29yZFsyKmorMV0pCi8vLyAgICAgIERTVC5kd29yZFtqXSA6PSBfX1MuZHdvcmRbal0gKyB0bXAxICsgdG1wMgovLy8gICAgRU5ERk9SCi8vLyAgICBEU1RbTUFYOjEyOF0gOj0gMAovLy8gXGVuZG9wZXJhdGlvbgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fZHB3c3NkX2F2eF9lcGkzMihfX20xMjhpIF9fUywgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3ZwZHB3c3NkMTI4KChfX3Y0c2kpX19TLCAoX192NHNpKV9fQSwgKF9fdjRzaSlfX0IpOwp9CgovLy8gTXVsdGlwbHkgZ3JvdXBzIG9mIDIgYWRqYWNlbnQgcGFpcnMgb2Ygc2lnbmVkIDE2LWJpdCBpbnRlZ2VycyBpbiBcYSBfX0Egd2l0aAovLy8gY29ycmVzcG9uZGluZyAxNi1iaXQgaW50ZWdlcnMgaW4gXGEgX19CLCBwcm9kdWNpbmcgMiBpbnRlcm1lZGlhdGUgc2lnbmVkIDMyLWJpdAovLy8gcmVzdWx0cy4gU3VtIHRoZXNlIDIgcmVzdWx0cyB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIDMyLWJpdCBpbnRlZ2VyIGluIFxhIF9fUwovLy8gdXNpbmcgc2lnbmVkIHNhdHVyYXRpb24sIGFuZCBzdG9yZSB0aGUgcGFja2VkIDMyLWJpdCByZXN1bHRzIGluIERTVC4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQRFBXU1NEUyA8L2M+IGluc3RydWN0aW9ucy4KLy8vCi8vLyBcb3BlcmF0aW9uCi8vLyAgICBGT1IgaiA6PSAwIHRvIDMKLy8vICAgICAgdG1wMS5kd29yZCA6PSBTaWduRXh0ZW5kMzIoX19BLndvcmRbMipqXSkgKiBTaWduRXh0ZW5kMzIoX19CLndvcmRbMipqXSkKLy8vICAgICAgdG1wMi5kd29yZCA6PSBTaWduRXh0ZW5kMzIoX19BLndvcmRbMipqKzFdKSAqIFNpZ25FeHRlbmQzMihfX0Iud29yZFsyKmorMV0pCi8vLyAgICAgIERTVC5kd29yZFtqXSA6PSBTYXR1cmF0ZTMyKF9fUy5kd29yZFtqXSArIHRtcDEgKyB0bXAyKQovLy8gICAgRU5ERk9SCi8vLyAgICBEU1RbTUFYOjEyOF0gOj0gMAovLy8gXGVuZG9wZXJhdGlvbgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fZHB3c3Nkc19hdnhfZXBpMzIoX19tMTI4aSBfX1MsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92cGRwd3NzZHMxMjgoKF9fdjRzaSlfX1MsIChfX3Y0c2kpX19BLCAoX192NHNpKV9fQik7Cn0KCiN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUzI1NgoKI2VuZGlmIC8vIF9fQVZYVk5OSUlOVFJJTl9ICgAvKj09PS0tLS0gYm1paW50cmluLmggLSBCTUkgaW50cmluc2ljcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqCiAqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCiAqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCgojaWYgIWRlZmluZWQgX19YODZJTlRSSU5fSCAmJiAhZGVmaW5lZCBfX0lNTUlOVFJJTl9ICiNlcnJvciAiTmV2ZXIgdXNlIDxibWlpbnRyaW4uaD4gZGlyZWN0bHk7IGluY2x1ZGUgPHg4NmludHJpbi5oPiBpbnN0ZWFkLiIKI2VuZGlmCgojaWZuZGVmIF9fQk1JSU5UUklOX0gKI2RlZmluZSBfX0JNSUlOVFJJTl9ICgovKiBBbGxvdyB1c2luZyB0aGUgdHpjbnQgaW50cmluc2ljcyBldmVuIGZvciBub24tQk1JIHRhcmdldHMuIFNpbmNlIHRoZSBUWkNOVAogICBpbnN0cnVjdGlvbiBiZWhhdmVzIGFzIEJTRiBvbiBub24tQk1JIHRhcmdldHMsIHRoZXJlIGlzIGNvZGUgdGhhdCBleHBlY3RzCiAgIHRvIHVzZSBpdCBhcyBhIHBvdGVudGlhbGx5IGZhc3RlciB2ZXJzaW9uIG9mIEJTRi4gKi8KI2RlZmluZSBfX1JFTEFYRURfRk5fQVRUUlMgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCiNkZWZpbmUgX3R6Y250X3UxNihhKSAgICAgKF9fdHpjbnRfdTE2KChhKSkpCgovLy8gQ291bnRzIHRoZSBudW1iZXIgb2YgdHJhaWxpbmcgemVybyBiaXRzIGluIHRoZSBvcGVyYW5kLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFRaQ05UIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fWAovLy8gICAgQW4gdW5zaWduZWQgMTYtYml0IGludGVnZXIgd2hvc2UgdHJhaWxpbmcgemVyb3MgYXJlIHRvIGJlIGNvdW50ZWQuCi8vLyBccmV0dXJucyBBbiB1bnNpZ25lZCAxNi1iaXQgaW50ZWdlciBjb250YWluaW5nIHRoZSBudW1iZXIgb2YgdHJhaWxpbmcgemVybwovLy8gICAgYml0cyBpbiB0aGUgb3BlcmFuZC4Kc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgc2hvcnQgX19SRUxBWEVEX0ZOX0FUVFJTCl9fdHpjbnRfdTE2KHVuc2lnbmVkIHNob3J0IF9fWCkKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl90emNudF91MTYoX19YKTsKfQoKLy8vIENvdW50cyB0aGUgbnVtYmVyIG9mIHRyYWlsaW5nIHplcm8gYml0cyBpbiB0aGUgb3BlcmFuZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBUWkNOVCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX1gKLy8vICAgIEFuIHVuc2lnbmVkIDMyLWJpdCBpbnRlZ2VyIHdob3NlIHRyYWlsaW5nIHplcm9zIGFyZSB0byBiZSBjb3VudGVkLgovLy8gXHJldHVybnMgQW4gdW5zaWduZWQgMzItYml0IGludGVnZXIgY29udGFpbmluZyB0aGUgbnVtYmVyIG9mIHRyYWlsaW5nIHplcm8KLy8vICAgIGJpdHMgaW4gdGhlIG9wZXJhbmQuCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGludCBfX1JFTEFYRURfRk5fQVRUUlMKX190emNudF91MzIodW5zaWduZWQgaW50IF9fWCkKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl90emNudF91MzIoX19YKTsKfQoKLy8vIENvdW50cyB0aGUgbnVtYmVyIG9mIHRyYWlsaW5nIHplcm8gYml0cyBpbiB0aGUgb3BlcmFuZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBUWkNOVCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX1gKLy8vICAgIEFuIHVuc2lnbmVkIDMyLWJpdCBpbnRlZ2VyIHdob3NlIHRyYWlsaW5nIHplcm9zIGFyZSB0byBiZSBjb3VudGVkLgovLy8gXHJldHVybnMgQW4gMzItYml0IGludGVnZXIgY29udGFpbmluZyB0aGUgbnVtYmVyIG9mIHRyYWlsaW5nIHplcm8gYml0cyBpbgovLy8gICAgdGhlIG9wZXJhbmQuCnN0YXRpYyBfX2lubGluZV9fIGludCBfX1JFTEFYRURfRk5fQVRUUlMKX21tX3R6Y250XzMyKHVuc2lnbmVkIGludCBfX1gpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfdHpjbnRfdTMyKF9fWCk7Cn0KCiNkZWZpbmUgX3R6Y250X3UzMihhKSAgICAgKF9fdHpjbnRfdTMyKChhKSkpCgojaWZkZWYgX194ODZfNjRfXwoKLy8vIENvdW50cyB0aGUgbnVtYmVyIG9mIHRyYWlsaW5nIHplcm8gYml0cyBpbiB0aGUgb3BlcmFuZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBUWkNOVCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX1gKLy8vICAgIEFuIHVuc2lnbmVkIDY0LWJpdCBpbnRlZ2VyIHdob3NlIHRyYWlsaW5nIHplcm9zIGFyZSB0byBiZSBjb3VudGVkLgovLy8gXHJldHVybnMgQW4gdW5zaWduZWQgNjQtYml0IGludGVnZXIgY29udGFpbmluZyB0aGUgbnVtYmVyIG9mIHRyYWlsaW5nIHplcm8KLy8vICAgIGJpdHMgaW4gdGhlIG9wZXJhbmQuCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGxvbmcgbG9uZyBfX1JFTEFYRURfRk5fQVRUUlMKX190emNudF91NjQodW5zaWduZWQgbG9uZyBsb25nIF9fWCkKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl90emNudF91NjQoX19YKTsKfQoKLy8vIENvdW50cyB0aGUgbnVtYmVyIG9mIHRyYWlsaW5nIHplcm8gYml0cyBpbiB0aGUgb3BlcmFuZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBUWkNOVCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX1gKLy8vICAgIEFuIHVuc2lnbmVkIDY0LWJpdCBpbnRlZ2VyIHdob3NlIHRyYWlsaW5nIHplcm9zIGFyZSB0byBiZSBjb3VudGVkLgovLy8gXHJldHVybnMgQW4gNjQtYml0IGludGVnZXIgY29udGFpbmluZyB0aGUgbnVtYmVyIG9mIHRyYWlsaW5nIHplcm8gYml0cyBpbgovLy8gICAgdGhlIG9wZXJhbmQuCnN0YXRpYyBfX2lubGluZV9fIGxvbmcgbG9uZyBfX1JFTEFYRURfRk5fQVRUUlMKX21tX3R6Y250XzY0KHVuc2lnbmVkIGxvbmcgbG9uZyBfX1gpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfdHpjbnRfdTY0KF9fWCk7Cn0KCiNkZWZpbmUgX3R6Y250X3U2NChhKSAgICAgKF9fdHpjbnRfdTY0KChhKSkpCgojZW5kaWYgLyogX194ODZfNjRfXyAqLwoKI3VuZGVmIF9fUkVMQVhFRF9GTl9BVFRSUwoKI2lmICEoZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX1NDRV9fKSkgfHwgX19oYXNfZmVhdHVyZShtb2R1bGVzKSB8fCAgICAgIFwKICAgIGRlZmluZWQoX19CTUlfXykKCi8qIERlZmluZSB0aGUgZGVmYXVsdCBhdHRyaWJ1dGVzIGZvciB0aGUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZS4gKi8KI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJibWkiKSkpCgojZGVmaW5lIF9hbmRuX3UzMihhLCBiKSAgIChfX2FuZG5fdTMyKChhKSwgKGIpKSkKCi8qIF9iZXh0cl91MzIgIT0gX19iZXh0cl91MzIgKi8KI2RlZmluZSBfYmxzaV91MzIoYSkgICAgICAoX19ibHNpX3UzMigoYSkpKQoKI2RlZmluZSBfYmxzbXNrX3UzMihhKSAgICAoX19ibHNtc2tfdTMyKChhKSkpCgojZGVmaW5lIF9ibHNyX3UzMihhKSAgICAgIChfX2Jsc3JfdTMyKChhKSkpCgovLy8gUGVyZm9ybXMgYSBiaXR3aXNlIEFORCBvZiB0aGUgc2Vjb25kIG9wZXJhbmQgd2l0aCB0aGUgb25lJ3MKLy8vICAgIGNvbXBsZW1lbnQgb2YgdGhlIGZpcnN0IG9wZXJhbmQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gQU5ETiA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX1gKLy8vICAgIEFuIHVuc2lnbmVkIGludGVnZXIgY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLgovLy8gXHBhcmFtIF9fWQovLy8gICAgQW4gdW5zaWduZWQgaW50ZWdlciBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuCi8vLyBccmV0dXJucyBBbiB1bnNpZ25lZCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGJpdHdpc2UgQU5EIG9mIHRoZSBzZWNvbmQKLy8vICAgIG9wZXJhbmQgd2l0aCB0aGUgb25lJ3MgY29tcGxlbWVudCBvZiB0aGUgZmlyc3Qgb3BlcmFuZC4Kc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgaW50IF9fREVGQVVMVF9GTl9BVFRSUwpfX2FuZG5fdTMyKHVuc2lnbmVkIGludCBfX1gsIHVuc2lnbmVkIGludCBfX1kpCnsKICByZXR1cm4gfl9fWCAmIF9fWTsKfQoKLyogQU1ELXNwZWNpZmllZCwgZG91YmxlLWxlYWRpbmctdW5kZXJzY29yZSB2ZXJzaW9uIG9mIEJFWFRSICovCi8vLyBFeHRyYWN0cyB0aGUgc3BlY2lmaWVkIGJpdHMgZnJvbSB0aGUgZmlyc3Qgb3BlcmFuZCBhbmQgcmV0dXJucyB0aGVtCi8vLyAgICBpbiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0cyBvZiB0aGUgcmVzdWx0LgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IEJFWFRSIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fWAovLy8gICAgQW4gdW5zaWduZWQgaW50ZWdlciB3aG9zZSBiaXRzIGFyZSB0byBiZSBleHRyYWN0ZWQuCi8vLyBccGFyYW0gX19ZCi8vLyAgICBBbiB1bnNpZ25lZCBpbnRlZ2VyIHVzZWQgdG8gc3BlY2lmeSB3aGljaCBiaXRzIGFyZSBleHRyYWN0ZWQuIEJpdHMgWzc6MF0KLy8vICAgIHNwZWNpZnkgdGhlIGluZGV4IG9mIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQuIEJpdHMgWzE1OjhdIHNwZWNpZnkgdGhlCi8vLyAgICBudW1iZXIgb2YgYml0cyB0byBiZSBleHRyYWN0ZWQuCi8vLyBccmV0dXJucyBBbiB1bnNpZ25lZCBpbnRlZ2VyIHdob3NlIGxlYXN0IHNpZ25pZmljYW50IGJpdHMgY29udGFpbiB0aGUKLy8vICAgIGV4dHJhY3RlZCBiaXRzLgovLy8gXHNlZSBfYmV4dHJfdTMyCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGludCBfX0RFRkFVTFRfRk5fQVRUUlMKX19iZXh0cl91MzIodW5zaWduZWQgaW50IF9fWCwgdW5zaWduZWQgaW50IF9fWSkKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9iZXh0cl91MzIoX19YLCBfX1kpOwp9CgovKiBJbnRlbC1zcGVjaWZpZWQsIHNpbmdsZS1sZWFkaW5nLXVuZGVyc2NvcmUgdmVyc2lvbiBvZiBCRVhUUiAqLwovLy8gRXh0cmFjdHMgdGhlIHNwZWNpZmllZCBiaXRzIGZyb20gdGhlIGZpcnN0IG9wZXJhbmQgYW5kIHJldHVybnMgdGhlbQovLy8gICAgaW4gdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdHMgb2YgdGhlIHJlc3VsdC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBCRVhUUiA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX1gKLy8vICAgIEFuIHVuc2lnbmVkIGludGVnZXIgd2hvc2UgYml0cyBhcmUgdG8gYmUgZXh0cmFjdGVkLgovLy8gXHBhcmFtIF9fWQovLy8gICAgQW4gdW5zaWduZWQgaW50ZWdlciB1c2VkIHRvIHNwZWNpZnkgdGhlIGluZGV4IG9mIHRoZSBsZWFzdCBzaWduaWZpY2FudAovLy8gICAgYml0IGZvciB0aGUgYml0cyB0byBiZSBleHRyYWN0ZWQuIEJpdHMgWzc6MF0gc3BlY2lmeSB0aGUgaW5kZXguCi8vLyBccGFyYW0gX19aCi8vLyAgICBBbiB1bnNpZ25lZCBpbnRlZ2VyIHVzZWQgdG8gc3BlY2lmeSB0aGUgbnVtYmVyIG9mIGJpdHMgdG8gYmUgZXh0cmFjdGVkLgovLy8gICAgQml0cyBbNzowXSBzcGVjaWZ5IHRoZSBudW1iZXIgb2YgYml0cy4KLy8vIFxyZXR1cm5zIEFuIHVuc2lnbmVkIGludGVnZXIgd2hvc2UgbGVhc3Qgc2lnbmlmaWNhbnQgYml0cyBjb250YWluIHRoZQovLy8gICAgZXh0cmFjdGVkIGJpdHMuCi8vLyBcc2VlIF9fYmV4dHJfdTMyCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGludCBfX0RFRkFVTFRfRk5fQVRUUlMKX2JleHRyX3UzMih1bnNpZ25lZCBpbnQgX19YLCB1bnNpZ25lZCBpbnQgX19ZLCB1bnNpZ25lZCBpbnQgX19aKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2JleHRyX3UzMiAoX19YLCAoKF9fWSAmIDB4ZmYpIHwgKChfX1ogJiAweGZmKSA8PCA4KSkpOwp9CgovKiBJbnRlbC1zcGVjaWZpZWQsIHNpbmdsZS1sZWFkaW5nLXVuZGVyc2NvcmUgdmVyc2lvbiBvZiBCRVhUUjIgKi8KLy8vIEV4dHJhY3RzIHRoZSBzcGVjaWZpZWQgYml0cyBmcm9tIHRoZSBmaXJzdCBvcGVyYW5kIGFuZCByZXR1cm5zIHRoZW0KLy8vICAgIGluIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXRzIG9mIHRoZSByZXN1bHQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gQkVYVFIgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19YCi8vLyAgICBBbiB1bnNpZ25lZCBpbnRlZ2VyIHdob3NlIGJpdHMgYXJlIHRvIGJlIGV4dHJhY3RlZC4KLy8vIFxwYXJhbSBfX1kKLy8vICAgIEFuIHVuc2lnbmVkIGludGVnZXIgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIGJpdHMgYXJlIGV4dHJhY3RlZC4gQml0cyBbNzowXQovLy8gICAgc3BlY2lmeSB0aGUgaW5kZXggb2YgdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdC4gQml0cyBbMTU6OF0gc3BlY2lmeSB0aGUKLy8vICAgIG51bWJlciBvZiBiaXRzIHRvIGJlIGV4dHJhY3RlZC4KLy8vIFxyZXR1cm5zIEFuIHVuc2lnbmVkIGludGVnZXIgd2hvc2UgbGVhc3Qgc2lnbmlmaWNhbnQgYml0cyBjb250YWluIHRoZQovLy8gICAgZXh0cmFjdGVkIGJpdHMuCi8vLyBcc2VlIF9fYmV4dHJfdTMyCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGludCBfX0RFRkFVTFRfRk5fQVRUUlMKX2JleHRyMl91MzIodW5zaWduZWQgaW50IF9fWCwgdW5zaWduZWQgaW50IF9fWSkgewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9iZXh0cl91MzIoX19YLCBfX1kpOwp9CgovLy8gQ2xlYXJzIGFsbCBiaXRzIGluIHRoZSBzb3VyY2UgZXhjZXB0IGZvciB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0Ci8vLyAgICBjb250YWluaW5nIGEgdmFsdWUgb2YgMSBhbmQgcmV0dXJucyB0aGUgcmVzdWx0LgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IEJMU0kgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19YCi8vLyAgICBBbiB1bnNpZ25lZCBpbnRlZ2VyIHdob3NlIGJpdHMgYXJlIHRvIGJlIGNsZWFyZWQuCi8vLyBccmV0dXJucyBBbiB1bnNpZ25lZCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIHJlc3VsdCBvZiBjbGVhcmluZyB0aGUgYml0cyBmcm9tCi8vLyAgICB0aGUgc291cmNlIG9wZXJhbmQuCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGludCBfX0RFRkFVTFRfRk5fQVRUUlMKX19ibHNpX3UzMih1bnNpZ25lZCBpbnQgX19YKQp7CiAgcmV0dXJuIF9fWCAmIC1fX1g7Cn0KCi8vLyBDcmVhdGVzIGEgbWFzayB3aG9zZSBiaXRzIGFyZSBzZXQgdG8gMSwgdXNpbmcgYml0IDAgdXAgdG8gYW5kCi8vLyAgICBpbmNsdWRpbmcgdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdCB0aGF0IGlzIHNldCB0byAxIGluIHRoZSBzb3VyY2UKLy8vICAgIG9wZXJhbmQgYW5kIHJldHVybnMgdGhlIHJlc3VsdC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBCTFNNU0sgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19YCi8vLyAgICBBbiB1bnNpZ25lZCBpbnRlZ2VyIHVzZWQgdG8gY3JlYXRlIHRoZSBtYXNrLgovLy8gXHJldHVybnMgQW4gdW5zaWduZWQgaW50ZWdlciBjb250YWluaW5nIHRoZSBuZXdseSBjcmVhdGVkIG1hc2suCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGludCBfX0RFRkFVTFRfRk5fQVRUUlMKX19ibHNtc2tfdTMyKHVuc2lnbmVkIGludCBfX1gpCnsKICByZXR1cm4gX19YIF4gKF9fWCAtIDEpOwp9CgovLy8gQ2xlYXJzIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQgdGhhdCBpcyBzZXQgdG8gMSBpbiB0aGUgc291cmNlCi8vLyAgICBvcGVyYW5kIGFuZCByZXR1cm5zIHRoZSByZXN1bHQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gQkxTUiA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX1gKLy8vICAgIEFuIHVuc2lnbmVkIGludGVnZXIgY29udGFpbmluZyB0aGUgb3BlcmFuZCB0byBiZSBjbGVhcmVkLgovLy8gXHJldHVybnMgQW4gdW5zaWduZWQgaW50ZWdlciBjb250YWluaW5nIHRoZSByZXN1bHQgb2YgY2xlYXJpbmcgdGhlIHNvdXJjZQovLy8gICAgb3BlcmFuZC4Kc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgaW50IF9fREVGQVVMVF9GTl9BVFRSUwpfX2Jsc3JfdTMyKHVuc2lnbmVkIGludCBfX1gpCnsKICByZXR1cm4gX19YICYgKF9fWCAtIDEpOwp9CgojaWZkZWYgX194ODZfNjRfXwoKI2RlZmluZSBfYW5kbl91NjQoYSwgYikgICAoX19hbmRuX3U2NCgoYSksIChiKSkpCgovKiBfYmV4dHJfdTY0ICE9IF9fYmV4dHJfdTY0ICovCiNkZWZpbmUgX2Jsc2lfdTY0KGEpICAgICAgKF9fYmxzaV91NjQoKGEpKSkKCiNkZWZpbmUgX2Jsc21za191NjQoYSkgICAgKF9fYmxzbXNrX3U2NCgoYSkpKQoKI2RlZmluZSBfYmxzcl91NjQoYSkgICAgICAoX19ibHNyX3U2NCgoYSkpKQoKLy8vIFBlcmZvcm1zIGEgYml0d2lzZSBBTkQgb2YgdGhlIHNlY29uZCBvcGVyYW5kIHdpdGggdGhlIG9uZSdzCi8vLyAgICBjb21wbGVtZW50IG9mIHRoZSBmaXJzdCBvcGVyYW5kLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IEFORE4gPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19YCi8vLyAgICBBbiB1bnNpZ25lZCA2NC1iaXQgaW50ZWdlciBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuCi8vLyBccGFyYW0gX19ZCi8vLyAgICBBbiB1bnNpZ25lZCA2NC1iaXQgaW50ZWdlciBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuCi8vLyBccmV0dXJucyBBbiB1bnNpZ25lZCA2NC1iaXQgaW50ZWdlciBjb250YWluaW5nIHRoZSBiaXR3aXNlIEFORCBvZiB0aGUgc2Vjb25kCi8vLyAgICBvcGVyYW5kIHdpdGggdGhlIG9uZSdzIGNvbXBsZW1lbnQgb2YgdGhlIGZpcnN0IG9wZXJhbmQuCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0RFRkFVTFRfRk5fQVRUUlMKX19hbmRuX3U2NCAodW5zaWduZWQgbG9uZyBsb25nIF9fWCwgdW5zaWduZWQgbG9uZyBsb25nIF9fWSkKewogIHJldHVybiB+X19YICYgX19ZOwp9CgovKiBBTUQtc3BlY2lmaWVkLCBkb3VibGUtbGVhZGluZy11bmRlcnNjb3JlIHZlcnNpb24gb2YgQkVYVFIgKi8KLy8vIEV4dHJhY3RzIHRoZSBzcGVjaWZpZWQgYml0cyBmcm9tIHRoZSBmaXJzdCBvcGVyYW5kIGFuZCByZXR1cm5zIHRoZW0KLy8vICAgIGluIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXRzIG9mIHRoZSByZXN1bHQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gQkVYVFIgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19YCi8vLyAgICBBbiB1bnNpZ25lZCA2NC1iaXQgaW50ZWdlciB3aG9zZSBiaXRzIGFyZSB0byBiZSBleHRyYWN0ZWQuCi8vLyBccGFyYW0gX19ZCi8vLyAgICBBbiB1bnNpZ25lZCA2NC1iaXQgaW50ZWdlciB1c2VkIHRvIHNwZWNpZnkgd2hpY2ggYml0cyBhcmUgZXh0cmFjdGVkLiBCaXRzCi8vLyAgICBbNzowXSBzcGVjaWZ5IHRoZSBpbmRleCBvZiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0LiBCaXRzIFsxNTo4XSBzcGVjaWZ5Ci8vLyAgICB0aGUgbnVtYmVyIG9mIGJpdHMgdG8gYmUgZXh0cmFjdGVkLgovLy8gXHJldHVybnMgQW4gdW5zaWduZWQgNjQtYml0IGludGVnZXIgd2hvc2UgbGVhc3Qgc2lnbmlmaWNhbnQgYml0cyBjb250YWluIHRoZQovLy8gICAgZXh0cmFjdGVkIGJpdHMuCi8vLyBcc2VlIF9iZXh0cl91NjQKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgbG9uZyBsb25nIF9fREVGQVVMVF9GTl9BVFRSUwpfX2JleHRyX3U2NCh1bnNpZ25lZCBsb25nIGxvbmcgX19YLCB1bnNpZ25lZCBsb25nIGxvbmcgX19ZKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2JleHRyX3U2NChfX1gsIF9fWSk7Cn0KCi8qIEludGVsLXNwZWNpZmllZCwgc2luZ2xlLWxlYWRpbmctdW5kZXJzY29yZSB2ZXJzaW9uIG9mIEJFWFRSICovCi8vLyBFeHRyYWN0cyB0aGUgc3BlY2lmaWVkIGJpdHMgZnJvbSB0aGUgZmlyc3Qgb3BlcmFuZCBhbmQgcmV0dXJucyB0aGVtCi8vLyAgICAgaW4gdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdHMgb2YgdGhlIHJlc3VsdC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBCRVhUUiA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX1gKLy8vICAgIEFuIHVuc2lnbmVkIDY0LWJpdCBpbnRlZ2VyIHdob3NlIGJpdHMgYXJlIHRvIGJlIGV4dHJhY3RlZC4KLy8vIFxwYXJhbSBfX1kKLy8vICAgIEFuIHVuc2lnbmVkIGludGVnZXIgdXNlZCB0byBzcGVjaWZ5IHRoZSBpbmRleCBvZiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQKLy8vICAgIGJpdCBmb3IgdGhlIGJpdHMgdG8gYmUgZXh0cmFjdGVkLiBCaXRzIFs3OjBdIHNwZWNpZnkgdGhlIGluZGV4LgovLy8gXHBhcmFtIF9fWgovLy8gICAgQW4gdW5zaWduZWQgaW50ZWdlciB1c2VkIHRvIHNwZWNpZnkgdGhlIG51bWJlciBvZiBiaXRzIHRvIGJlIGV4dHJhY3RlZC4KLy8vICAgIEJpdHMgWzc6MF0gc3BlY2lmeSB0aGUgbnVtYmVyIG9mIGJpdHMuCi8vLyBccmV0dXJucyBBbiB1bnNpZ25lZCA2NC1iaXQgaW50ZWdlciB3aG9zZSBsZWFzdCBzaWduaWZpY2FudCBiaXRzIGNvbnRhaW4gdGhlCi8vLyAgICBleHRyYWN0ZWQgYml0cy4KLy8vIFxzZWUgX19iZXh0cl91NjQKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgbG9uZyBsb25nIF9fREVGQVVMVF9GTl9BVFRSUwpfYmV4dHJfdTY0KHVuc2lnbmVkIGxvbmcgbG9uZyBfX1gsIHVuc2lnbmVkIGludCBfX1ksIHVuc2lnbmVkIGludCBfX1opCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfYmV4dHJfdTY0IChfX1gsICgoX19ZICYgMHhmZikgfCAoKF9fWiAmIDB4ZmYpIDw8IDgpKSk7Cn0KCi8qIEludGVsLXNwZWNpZmllZCwgc2luZ2xlLWxlYWRpbmctdW5kZXJzY29yZSB2ZXJzaW9uIG9mIEJFWFRSMiAqLwovLy8gRXh0cmFjdHMgdGhlIHNwZWNpZmllZCBiaXRzIGZyb20gdGhlIGZpcnN0IG9wZXJhbmQgYW5kIHJldHVybnMgdGhlbQovLy8gICAgaW4gdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdHMgb2YgdGhlIHJlc3VsdC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBCRVhUUiA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX1gKLy8vICAgIEFuIHVuc2lnbmVkIDY0LWJpdCBpbnRlZ2VyIHdob3NlIGJpdHMgYXJlIHRvIGJlIGV4dHJhY3RlZC4KLy8vIFxwYXJhbSBfX1kKLy8vICAgIEFuIHVuc2lnbmVkIDY0LWJpdCBpbnRlZ2VyIHVzZWQgdG8gc3BlY2lmeSB3aGljaCBiaXRzIGFyZSBleHRyYWN0ZWQuIEJpdHMKLy8vICAgIFs3OjBdIHNwZWNpZnkgdGhlIGluZGV4IG9mIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQuIEJpdHMgWzE1OjhdIHNwZWNpZnkKLy8vICAgIHRoZSBudW1iZXIgb2YgYml0cyB0byBiZSBleHRyYWN0ZWQuCi8vLyBccmV0dXJucyBBbiB1bnNpZ25lZCA2NC1iaXQgaW50ZWdlciB3aG9zZSBsZWFzdCBzaWduaWZpY2FudCBiaXRzIGNvbnRhaW4gdGhlCi8vLyAgICBleHRyYWN0ZWQgYml0cy4KLy8vIFxzZWUgX19iZXh0cl91NjQKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgbG9uZyBsb25nIF9fREVGQVVMVF9GTl9BVFRSUwpfYmV4dHIyX3U2NCh1bnNpZ25lZCBsb25nIGxvbmcgX19YLCB1bnNpZ25lZCBsb25nIGxvbmcgX19ZKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2JleHRyX3U2NChfX1gsIF9fWSk7Cn0KCi8vLyBDbGVhcnMgYWxsIGJpdHMgaW4gdGhlIHNvdXJjZSBleGNlcHQgZm9yIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQKLy8vICAgIGNvbnRhaW5pbmcgYSB2YWx1ZSBvZiAxIGFuZCByZXR1cm5zIHRoZSByZXN1bHQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gQkxTSSA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX1gKLy8vICAgIEFuIHVuc2lnbmVkIDY0LWJpdCBpbnRlZ2VyIHdob3NlIGJpdHMgYXJlIHRvIGJlIGNsZWFyZWQuCi8vLyBccmV0dXJucyBBbiB1bnNpZ25lZCA2NC1iaXQgaW50ZWdlciBjb250YWluaW5nIHRoZSByZXN1bHQgb2YgY2xlYXJpbmcgdGhlCi8vLyAgICBiaXRzIGZyb20gdGhlIHNvdXJjZSBvcGVyYW5kLgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nIGxvbmcgX19ERUZBVUxUX0ZOX0FUVFJTCl9fYmxzaV91NjQodW5zaWduZWQgbG9uZyBsb25nIF9fWCkKewogIHJldHVybiBfX1ggJiAtX19YOwp9CgovLy8gQ3JlYXRlcyBhIG1hc2sgd2hvc2UgYml0cyBhcmUgc2V0IHRvIDEsIHVzaW5nIGJpdCAwIHVwIHRvIGFuZAovLy8gICAgaW5jbHVkaW5nIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQgdGhhdCBpcyBzZXQgdG8gMSBpbiB0aGUgc291cmNlCi8vLyAgICBvcGVyYW5kIGFuZCByZXR1cm5zIHRoZSByZXN1bHQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gQkxTTVNLIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fWAovLy8gICAgQW4gdW5zaWduZWQgNjQtYml0IGludGVnZXIgdXNlZCB0byBjcmVhdGUgdGhlIG1hc2suCi8vLyBccmV0dXJucyBBbiB1bnNpZ25lZCA2NC1iaXQgaW50ZWdlciBjb250YWluaW5nIHRoZSBuZXdseSBjcmVhdGVkIG1hc2suCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0RFRkFVTFRfRk5fQVRUUlMKX19ibHNtc2tfdTY0KHVuc2lnbmVkIGxvbmcgbG9uZyBfX1gpCnsKICByZXR1cm4gX19YIF4gKF9fWCAtIDEpOwp9CgovLy8gQ2xlYXJzIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQgdGhhdCBpcyBzZXQgdG8gMSBpbiB0aGUgc291cmNlCi8vLyAgICBvcGVyYW5kIGFuZCByZXR1cm5zIHRoZSByZXN1bHQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gQkxTUiA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX1gKLy8vICAgIEFuIHVuc2lnbmVkIDY0LWJpdCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIG9wZXJhbmQgdG8gYmUgY2xlYXJlZC4KLy8vIFxyZXR1cm5zIEFuIHVuc2lnbmVkIDY0LWJpdCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIHJlc3VsdCBvZiBjbGVhcmluZyB0aGUKLy8vICAgIHNvdXJjZSBvcGVyYW5kLgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nIGxvbmcgX19ERUZBVUxUX0ZOX0FUVFJTCl9fYmxzcl91NjQodW5zaWduZWQgbG9uZyBsb25nIF9fWCkKewogIHJldHVybiBfX1ggJiAoX19YIC0gMSk7Cn0KCiNlbmRpZiAvKiBfX3g4Nl82NF9fICovCgojdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTCgojZW5kaWYgLyogIShkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fU0NFX18pKSB8fCBfX2hhc19mZWF0dXJlKG1vZHVsZXMpICAgXAogICAgICAgICAgfHwgZGVmaW5lZChfX0JNSV9fKSAqLwoKI2VuZGlmIC8qIF9fQk1JSU5UUklOX0ggKi8KAC8qPT09LS0tLSBjcmMzMmludHJpbi5oIC0gU1NFNC4yIEFjY3VtdWxhdGUgQ1JDMzIgaW50cmluc2ljcyAtLS0tLS0tLS0tLS0tLS09PT0KICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKi8KCiNpZm5kZWYgX19DUkMzMklOVFJJTl9ICiNkZWZpbmUgX19DUkMzMklOVFJJTl9ICgojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygiY3JjMzIiKSkpCgovLy8gQWRkcyB0aGUgdW5zaWduZWQgaW50ZWdlciBvcGVyYW5kIHRvIHRoZSBDUkMtMzJDIGNoZWNrc3VtIG9mIHRoZQovLy8gICAgdW5zaWduZWQgY2hhciBvcGVyYW5kLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IENSQzMyQiA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX0MKLy8vICAgIEFuIHVuc2lnbmVkIGludGVnZXIgb3BlcmFuZCB0byBhZGQgdG8gdGhlIENSQy0zMkMgY2hlY2tzdW0gb2Ygb3BlcmFuZAovLy8gICAgXGEgIF9fRC4KLy8vIFxwYXJhbSBfX0QKLy8vICAgIEFuIHVuc2lnbmVkIDgtYml0IGludGVnZXIgb3BlcmFuZCB1c2VkIHRvIGNvbXB1dGUgdGhlIENSQy0zMkMgY2hlY2tzdW0uCi8vLyBccmV0dXJucyBUaGUgcmVzdWx0IG9mIGFkZGluZyBvcGVyYW5kIFxhIF9fQyB0byB0aGUgQ1JDLTMyQyBjaGVja3N1bSBvZgovLy8gICAgb3BlcmFuZCBcYSBfX0QuCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGludCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2NyYzMyX3U4KHVuc2lnbmVkIGludCBfX0MsIHVuc2lnbmVkIGNoYXIgX19EKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2NyYzMycWkoX19DLCBfX0QpOwp9CgovLy8gQWRkcyB0aGUgdW5zaWduZWQgaW50ZWdlciBvcGVyYW5kIHRvIHRoZSBDUkMtMzJDIGNoZWNrc3VtIG9mIHRoZQovLy8gICAgdW5zaWduZWQgc2hvcnQgb3BlcmFuZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBDUkMzMlcgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19DCi8vLyAgICBBbiB1bnNpZ25lZCBpbnRlZ2VyIG9wZXJhbmQgdG8gYWRkIHRvIHRoZSBDUkMtMzJDIGNoZWNrc3VtIG9mIG9wZXJhbmQKLy8vICAgIFxhIF9fRC4KLy8vIFxwYXJhbSBfX0QKLy8vICAgIEFuIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyIG9wZXJhbmQgdXNlZCB0byBjb21wdXRlIHRoZSBDUkMtMzJDIGNoZWNrc3VtLgovLy8gXHJldHVybnMgVGhlIHJlc3VsdCBvZiBhZGRpbmcgb3BlcmFuZCBcYSBfX0MgdG8gdGhlIENSQy0zMkMgY2hlY2tzdW0gb2YKLy8vICAgIG9wZXJhbmQgXGEgX19ELgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jcmMzMl91MTYodW5zaWduZWQgaW50IF9fQywgdW5zaWduZWQgc2hvcnQgX19EKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2NyYzMyaGkoX19DLCBfX0QpOwp9CgovLy8gQWRkcyB0aGUgZmlyc3QgdW5zaWduZWQgaW50ZWdlciBvcGVyYW5kIHRvIHRoZSBDUkMtMzJDIGNoZWNrc3VtIG9mCi8vLyAgICB0aGUgc2Vjb25kIHVuc2lnbmVkIGludGVnZXIgb3BlcmFuZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBDUkMzMkwgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19DCi8vLyAgICBBbiB1bnNpZ25lZCBpbnRlZ2VyIG9wZXJhbmQgdG8gYWRkIHRvIHRoZSBDUkMtMzJDIGNoZWNrc3VtIG9mIG9wZXJhbmQKLy8vICAgIFxhIF9fRC4KLy8vIFxwYXJhbSBfX0QKLy8vICAgIEFuIHVuc2lnbmVkIDMyLWJpdCBpbnRlZ2VyIG9wZXJhbmQgdXNlZCB0byBjb21wdXRlIHRoZSBDUkMtMzJDIGNoZWNrc3VtLgovLy8gXHJldHVybnMgVGhlIHJlc3VsdCBvZiBhZGRpbmcgb3BlcmFuZCBcYSBfX0MgdG8gdGhlIENSQy0zMkMgY2hlY2tzdW0gb2YKLy8vICAgIG9wZXJhbmQgXGEgX19ELgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jcmMzMl91MzIodW5zaWduZWQgaW50IF9fQywgdW5zaWduZWQgaW50IF9fRCkKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9jcmMzMnNpKF9fQywgX19EKTsKfQoKI2lmZGVmIF9feDg2XzY0X18KLy8vIEFkZHMgdGhlIHVuc2lnbmVkIGludGVnZXIgb3BlcmFuZCB0byB0aGUgQ1JDLTMyQyBjaGVja3N1bSBvZiB0aGUKLy8vICAgIHVuc2lnbmVkIDY0LWJpdCBpbnRlZ2VyIG9wZXJhbmQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gQ1JDMzJRIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fQwovLy8gICAgQW4gdW5zaWduZWQgaW50ZWdlciBvcGVyYW5kIHRvIGFkZCB0byB0aGUgQ1JDLTMyQyBjaGVja3N1bSBvZiBvcGVyYW5kCi8vLyAgICBcYSBfX0QuCi8vLyBccGFyYW0gX19ECi8vLyAgICBBbiB1bnNpZ25lZCA2NC1iaXQgaW50ZWdlciBvcGVyYW5kIHVzZWQgdG8gY29tcHV0ZSB0aGUgQ1JDLTMyQyBjaGVja3N1bS4KLy8vIFxyZXR1cm5zIFRoZSByZXN1bHQgb2YgYWRkaW5nIG9wZXJhbmQgXGEgX19DIHRvIHRoZSBDUkMtMzJDIGNoZWNrc3VtIG9mCi8vLyAgICBvcGVyYW5kIFxhIF9fRC4Kc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgbG9uZyBsb25nIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY3JjMzJfdTY0KHVuc2lnbmVkIGxvbmcgbG9uZyBfX0MsIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0QpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfY3JjMzJkaShfX0MsIF9fRCk7Cn0KI2VuZGlmIC8qIF9feDg2XzY0X18gKi8KCiN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlMKCiNlbmRpZiAvKiBfX0NSQzMySU5UUklOX0ggKi8KAHN0ZG5vcmV0dXJuLmgALyo9PT0tLS0tIHdtbWludHJpbi5oIC0gQUVTIGludHJpbnNpY3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqCiAqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCiAqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCgojaWZuZGVmIF9fV01NSU5UUklOX0gKI2RlZmluZSBfX1dNTUlOVFJJTl9ICgojaWYgIWRlZmluZWQoX19pMzg2X18pICYmICFkZWZpbmVkKF9feDg2XzY0X18pCiNlcnJvciAiVGhpcyBoZWFkZXIgaXMgb25seSBtZWFudCB0byBiZSB1c2VkIG9uIHg4NiBhbmQgeDY0IGFyY2hpdGVjdHVyZSIKI2VuZGlmCgojaW5jbHVkZSA8ZW1taW50cmluLmg+CgojaW5jbHVkZSA8X193bW1pbnRyaW5fYWVzLmg+CgojaW5jbHVkZSA8X193bW1pbnRyaW5fcGNsbXVsLmg+CgojZW5kaWYgLyogX19XTU1JTlRSSU5fSCAqLwoALyo9PT0tLS0tIG1taW50cmluLmggLSBJbXBsZW1lbnRhdGlvbiBvZiBNTVggaW50cmluc2ljcyBvbiBQb3dlclBDIC0tLS0tLS0tLT09PQogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwoKLyogSW1wbGVtZW50ZWQgZnJvbSB0aGUgc3BlY2lmaWNhdGlvbiBpbmNsdWRlZCBpbiB0aGUgSW50ZWwgQysrIENvbXBpbGVyCiAgIFVzZXIgR3VpZGUgYW5kIFJlZmVyZW5jZSwgdmVyc2lvbiA5LjAuICAqLwoKI2lmbmRlZiBOT19XQVJOX1g4Nl9JTlRSSU5TSUNTCi8qIFRoaXMgaGVhZGVyIGZpbGUgaXMgdG8gaGVscCBwb3J0aW5nIGNvZGUgdXNpbmcgSW50ZWwgaW50cmluc2ljcwogICBleHBsaWNpdGx5IGZyb20geDg2XzY0IHRvIHBvd2VycGM2NC9wb3dlcnBjNjRsZS4KCiAgIFNpbmNlIFBvd2VyUEMgdGFyZ2V0IGRvZXNuJ3Qgc3VwcG9ydCBuYXRpdmUgNjQtYml0IHZlY3RvciB0eXBlLCB3ZQogICB0eXBlZGVmIF9fbTY0IHRvIDY0LWJpdCB1bnNpZ25lZCBsb25nIGxvbmcgaW4gTU1YIGludHJpbnNpY3MsIHdoaWNoCiAgIHdvcmtzIHdlbGwgZm9yIF9zaTY0IGFuZCBzb21lIF9waTMyIG9wZXJhdGlvbnMuCgogICBGb3IgX3BpMTYgYW5kIF9waTggb3BlcmF0aW9ucywgaXQncyBiZXR0ZXIgdG8gdHJhbnNmZXIgX19tNjQgaW50bwogICAxMjgtYml0IFBvd2VyUEMgdmVjdG9yIGZpcnN0LiBQb3dlcjggaW50cm9kdWNlZCBkaXJlY3QgcmVnaXN0ZXIKICAgbW92ZSBpbnN0cnVjdGlvbnMgd2hpY2ggaGVscHMgZm9yIG1vcmUgZWZmaWNpZW50IGltcGxlbWVudGF0aW9uLgoKICAgSXQncyB1c2VyJ3MgcmVzcG9uc2liaWxpdHkgdG8gZGV0ZXJtaW5lIGlmIHRoZSByZXN1bHRzIG9mIHN1Y2ggcG9ydAogICBhcmUgYWNjZXB0YWJsZSBvciBmdXJ0aGVyIGNoYW5nZXMgYXJlIG5lZWRlZC4gUGxlYXNlIG5vdGUgdGhhdCBtdWNoCiAgIGNvZGUgdXNpbmcgSW50ZWwgaW50cmluc2ljcyBDQU4gQkUgUkVXUklUVEVOIGluIG1vcmUgcG9ydGFibGUgYW5kCiAgIGVmZmljaWVudCBzdGFuZGFyZCBDIG9yIEdOVSBDIGV4dGVuc2lvbnMgd2l0aCA2NC1iaXQgc2NhbGFyCiAgIG9wZXJhdGlvbnMsIG9yIDEyOC1iaXQgU1NFL0FsdGl2ZWMgb3BlcmF0aW9ucywgd2hpY2ggYXJlIG1vcmUKICAgcmVjb21tZW5kZWQuICovCiNlcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAiUGxlYXNlIHJlYWQgY29tbWVudCBhYm92ZS4gIFVzZSAtRE5PX1dBUk5fWDg2X0lOVFJJTlNJQ1MgdG8gZGlzYWJsZSB0aGlzIGVycm9yLiIKI2VuZGlmCgojaWZuZGVmIF9NTUlOVFJJTl9IX0lOQ0xVREVECiNkZWZpbmUgX01NSU5UUklOX0hfSU5DTFVERUQKCiNpZiBkZWZpbmVkKF9fcHBjNjRfXykgJiYgKGRlZmluZWQoX19saW51eF9fKSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9fKSkKCiNpbmNsdWRlIDxhbHRpdmVjLmg+Ci8qIFRoZSBJbnRlbCBBUEkgaXMgZmxleGlibGUgZW5vdWdoIHRoYXQgd2UgbXVzdCBhbGxvdyBhbGlhc2luZyB3aXRoIG90aGVyCiAgIHZlY3RvciB0eXBlcywgYW5kIHRoZWlyIHNjYWxhciBjb21wb25lbnRzLiAgKi8KdHlwZWRlZiBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXyg4KSkpIHVuc2lnbmVkIGxvbmcgbG9uZyBfX202NDsKCnR5cGVkZWYgX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oOCkpKSB1bmlvbiB7CiAgX19tNjQgYXNfbTY0OwogIGNoYXIgYXNfY2hhcls4XTsKICBzaWduZWQgY2hhciBhc19zaWduZWRfY2hhcls4XTsKICBzaG9ydCBhc19zaG9ydFs0XTsKICBpbnQgYXNfaW50WzJdOwogIGxvbmcgbG9uZyBhc19sb25nX2xvbmc7CiAgZmxvYXQgYXNfZmxvYXRbMl07CiAgZG91YmxlIGFzX2RvdWJsZTsKfSBfX202NF91bmlvbjsKCi8qIEVtcHR5IHRoZSBtdWx0aW1lZGlhIHN0YXRlLiAgKi8KZXh0ZXJuIF9faW5saW5lIHZvaWQKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21tX2VtcHR5KHZvaWQpIHsKICAvKiBub3RoaW5nIHRvIGRvIG9uIFBvd2VyUEMuICAqLwp9CgpleHRlcm4gX19pbmxpbmUgdm9pZAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbV9lbXB0eSh2b2lkKSB7CiAgLyogbm90aGluZyB0byBkbyBvbiBQb3dlclBDLiAgKi8KfQoKLyogQ29udmVydCBJIHRvIGEgX19tNjQgb2JqZWN0LiAgVGhlIGludGVnZXIgaXMgemVyby1leHRlbmRlZCB0byA2NC1iaXRzLiAgKi8KZXh0ZXJuIF9faW5saW5lIF9fbTY0CiAgICBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKICAgIF9tbV9jdnRzaTMyX3NpNjQoaW50IF9faSkgewogIHJldHVybiAoX19tNjQpKHVuc2lnbmVkIGludClfX2k7Cn0KCmV4dGVybiBfX2lubGluZSBfX202NAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbV9mcm9tX2ludChpbnQgX19pKSB7CiAgcmV0dXJuIF9tbV9jdnRzaTMyX3NpNjQoX19pKTsKfQoKLyogQ29udmVydCB0aGUgbG93ZXIgMzIgYml0cyBvZiB0aGUgX19tNjQgb2JqZWN0IGludG8gYW4gaW50ZWdlci4gICovCmV4dGVybiBfX2lubGluZSBpbnQKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21tX2N2dHNpNjRfc2kzMihfX202NCBfX2kpIHsKICByZXR1cm4gKChpbnQpX19pKTsKfQoKZXh0ZXJuIF9faW5saW5lIGludAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbV90b19pbnQoX19tNjQgX19pKSB7CiAgcmV0dXJuIF9tbV9jdnRzaTY0X3NpMzIoX19pKTsKfQoKLyogQ29udmVydCBJIHRvIGEgX19tNjQgb2JqZWN0LiAgKi8KCi8qIEludGVsIGludHJpbnNpYy4gICovCmV4dGVybiBfX2lubGluZSBfX202NAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbV9mcm9tX2ludDY0KGxvbmcgbG9uZyBfX2kpIHsKICByZXR1cm4gKF9fbTY0KV9faTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTY0CiAgICBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKICAgIF9tbV9jdnRzaTY0X202NChsb25nIGxvbmcgX19pKSB7CiAgcmV0dXJuIChfX202NClfX2k7Cn0KCi8qIE1pY3Jvc29mdCBpbnRyaW5zaWMuICAqLwpleHRlcm4gX19pbmxpbmUgX19tNjQKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21tX2N2dHNpNjR4X3NpNjQobG9uZyBsb25nIF9faSkgewogIHJldHVybiAoX19tNjQpX19pOwp9CgpleHRlcm4gX19pbmxpbmUgX19tNjQKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21tX3NldF9waTY0eChsb25nIGxvbmcgX19pKSB7CiAgcmV0dXJuIChfX202NClfX2k7Cn0KCi8qIENvbnZlcnQgdGhlIF9fbTY0IG9iamVjdCB0byBhIDY0Yml0IGludGVnZXIuICAqLwoKLyogSW50ZWwgaW50cmluc2ljLiAgKi8KZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZwogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbV90b19pbnQ2NChfX202NCBfX2kpIHsKICByZXR1cm4gKGxvbmcgbG9uZylfX2k7Cn0KCmV4dGVybiBfX2lubGluZSBsb25nIGxvbmcKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21tX2N2dG02NF9zaTY0KF9fbTY0IF9faSkgewogIHJldHVybiAobG9uZyBsb25nKV9faTsKfQoKLyogTWljcm9zb2Z0IGludHJpbnNpYy4gICovCmV4dGVybiBfX2lubGluZSBsb25nIGxvbmcKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21tX2N2dHNpNjRfc2k2NHgoX19tNjQgX19pKSB7CiAgcmV0dXJuIChsb25nIGxvbmcpX19pOwp9CgojaWZkZWYgX0FSQ0hfUFdSOAovKiBQYWNrIHRoZSBmb3VyIDE2LWJpdCB2YWx1ZXMgZnJvbSBNMSBpbnRvIHRoZSBsb3dlciBmb3VyIDgtYml0IHZhbHVlcyBvZgogICB0aGUgcmVzdWx0LCBhbmQgdGhlIGZvdXIgMTYtYml0IHZhbHVlcyBmcm9tIE0yIGludG8gdGhlIHVwcGVyIGZvdXIgOC1iaXQKICAgdmFsdWVzIG9mIHRoZSByZXN1bHQsIGFsbCB3aXRoIHNpZ25lZCBzYXR1cmF0aW9uLiAgKi8KZXh0ZXJuIF9faW5saW5lIF9fbTY0CiAgICBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKICAgIF9tbV9wYWNrc19waTE2KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpIHsKICBfX3ZlY3RvciBzaWduZWQgc2hvcnQgdm0xOwogIF9fdmVjdG9yIHNpZ25lZCBjaGFyIHZyZXN1bHQ7CgogIHZtMSA9IChfX3ZlY3RvciBzaWduZWQgc2hvcnQpKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZykKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgICAgIHtfX20xLCBfX20yfTsKI2Vsc2UKICAgICAge19fbTIsIF9fbTF9OwojZW5kaWYKICB2cmVzdWx0ID0gdmVjX3BhY2tzKHZtMSwgdm0xKTsKICByZXR1cm4gKF9fbTY0KSgoX192ZWN0b3IgbG9uZyBsb25nKXZyZXN1bHQpWzBdOwp9CgpleHRlcm4gX19pbmxpbmUgX19tNjQKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21fcGFja3Nzd2IoX19tNjQgX19tMSwgX19tNjQgX19tMikgewogIHJldHVybiBfbW1fcGFja3NfcGkxNihfX20xLCBfX20yKTsKfQoKLyogUGFjayB0aGUgdHdvIDMyLWJpdCB2YWx1ZXMgZnJvbSBNMSBpbiB0byB0aGUgbG93ZXIgdHdvIDE2LWJpdCB2YWx1ZXMgb2YKICAgdGhlIHJlc3VsdCwgYW5kIHRoZSB0d28gMzItYml0IHZhbHVlcyBmcm9tIE0yIGludG8gdGhlIHVwcGVyIHR3byAxNi1iaXQKICAgdmFsdWVzIG9mIHRoZSByZXN1bHQsIGFsbCB3aXRoIHNpZ25lZCBzYXR1cmF0aW9uLiAgKi8KZXh0ZXJuIF9faW5saW5lIF9fbTY0CiAgICBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKICAgIF9tbV9wYWNrc19waTMyKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpIHsKICBfX3ZlY3RvciBzaWduZWQgaW50IHZtMTsKICBfX3ZlY3RvciBzaWduZWQgc2hvcnQgdnJlc3VsdDsKCiAgdm0xID0gKF9fdmVjdG9yIHNpZ25lZCBpbnQpKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZykKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgICAgIHtfX20xLCBfX20yfTsKI2Vsc2UKICAgICAge19fbTIsIF9fbTF9OwojZW5kaWYKICB2cmVzdWx0ID0gdmVjX3BhY2tzKHZtMSwgdm0xKTsKICByZXR1cm4gKF9fbTY0KSgoX192ZWN0b3IgbG9uZyBsb25nKXZyZXN1bHQpWzBdOwp9CgpleHRlcm4gX19pbmxpbmUgX19tNjQKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21fcGFja3NzZHcoX19tNjQgX19tMSwgX19tNjQgX19tMikgewogIHJldHVybiBfbW1fcGFja3NfcGkzMihfX20xLCBfX20yKTsKfQoKLyogUGFjayB0aGUgZm91ciAxNi1iaXQgdmFsdWVzIGZyb20gTTEgaW50byB0aGUgbG93ZXIgZm91ciA4LWJpdCB2YWx1ZXMgb2YKICAgdGhlIHJlc3VsdCwgYW5kIHRoZSBmb3VyIDE2LWJpdCB2YWx1ZXMgZnJvbSBNMiBpbnRvIHRoZSB1cHBlciBmb3VyIDgtYml0CiAgIHZhbHVlcyBvZiB0aGUgcmVzdWx0LCBhbGwgd2l0aCB1bnNpZ25lZCBzYXR1cmF0aW9uLiAgKi8KZXh0ZXJuIF9faW5saW5lIF9fbTY0CiAgICBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKICAgIF9tbV9wYWNrc19wdTE2KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpIHsKICBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIHI7CiAgX192ZWN0b3Igc2lnbmVkIHNob3J0IHZtMSA9IChfX3ZlY3RvciBzaWduZWQgc2hvcnQpKF9fdmVjdG9yIGxvbmcgbG9uZykKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgICAgIHtfX20xLCBfX20yfTsKI2Vsc2UKICAgICAge19fbTIsIF9fbTF9OwojZW5kaWYKICBjb25zdCBfX3ZlY3RvciBzaWduZWQgc2hvcnQgX196ZXJvID0gezB9OwogIF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX3NlbGVjdCA9IHZlY19jbXBsdCh2bTEsIF9femVybyk7CiAgciA9IHZlY19wYWNrcygoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpdm0xLCAoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpdm0xKTsKICBfX3ZlY3RvciBfX2Jvb2wgY2hhciBwYWNrc2VsID0gdmVjX3BhY2soX19zZWxlY3QsIF9fc2VsZWN0KTsKICByID0gdmVjX3NlbChyLCAoY29uc3QgX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX3plcm8sIHBhY2tzZWwpOwogIHJldHVybiAoX19tNjQpKChfX3ZlY3RvciBsb25nIGxvbmcpcilbMF07Cn0KCmV4dGVybiBfX2lubGluZSBfX202NAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbV9wYWNrdXN3YihfX202NCBfX20xLCBfX202NCBfX20yKSB7CiAgcmV0dXJuIF9tbV9wYWNrc19wdTE2KF9fbTEsIF9fbTIpOwp9CiNlbmRpZiAvKiBlbmQgQVJDSF9QV1I4ICovCgovKiBJbnRlcmxlYXZlIHRoZSBmb3VyIDgtYml0IHZhbHVlcyBmcm9tIHRoZSBoaWdoIGhhbGYgb2YgTTEgd2l0aCB0aGUgZm91cgogICA4LWJpdCB2YWx1ZXMgZnJvbSB0aGUgaGlnaCBoYWxmIG9mIE0yLiAgKi8KZXh0ZXJuIF9faW5saW5lIF9fbTY0CiAgICBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKICAgIF9tbV91bnBhY2toaV9waTgoX19tNjQgX19tMSwgX19tNjQgX19tMikgewojaWYgX0FSQ0hfUFdSOAogIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgYSwgYiwgYzsKCiAgYSA9IChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKXZlY19zcGxhdHMoX19tMSk7CiAgYiA9IChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKXZlY19zcGxhdHMoX19tMik7CiAgYyA9IHZlY19tZXJnZWwoYSwgYik7CiAgcmV0dXJuIChfX202NCkoKF9fdmVjdG9yIGxvbmcgbG9uZyljKVsxXTsKI2Vsc2UKICBfX202NF91bmlvbiBtMSwgbTIsIHJlczsKCiAgbTEuYXNfbTY0ID0gX19tMTsKICBtMi5hc19tNjQgPSBfX20yOwoKICByZXMuYXNfY2hhclswXSA9IG0xLmFzX2NoYXJbNF07CiAgcmVzLmFzX2NoYXJbMV0gPSBtMi5hc19jaGFyWzRdOwogIHJlcy5hc19jaGFyWzJdID0gbTEuYXNfY2hhcls1XTsKICByZXMuYXNfY2hhclszXSA9IG0yLmFzX2NoYXJbNV07CiAgcmVzLmFzX2NoYXJbNF0gPSBtMS5hc19jaGFyWzZdOwogIHJlcy5hc19jaGFyWzVdID0gbTIuYXNfY2hhcls2XTsKICByZXMuYXNfY2hhcls2XSA9IG0xLmFzX2NoYXJbN107CiAgcmVzLmFzX2NoYXJbN10gPSBtMi5hc19jaGFyWzddOwoKICByZXR1cm4gKF9fbTY0KXJlcy5hc19tNjQ7CiNlbmRpZgp9CgpleHRlcm4gX19pbmxpbmUgX19tNjQKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21fcHVucGNraGJ3KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpIHsKICByZXR1cm4gX21tX3VucGFja2hpX3BpOChfX20xLCBfX20yKTsKfQoKLyogSW50ZXJsZWF2ZSB0aGUgdHdvIDE2LWJpdCB2YWx1ZXMgZnJvbSB0aGUgaGlnaCBoYWxmIG9mIE0xIHdpdGggdGhlIHR3bwogICAxNi1iaXQgdmFsdWVzIGZyb20gdGhlIGhpZ2ggaGFsZiBvZiBNMi4gICovCmV4dGVybiBfX2lubGluZSBfX202NAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbW1fdW5wYWNraGlfcGkxNihfX202NCBfX20xLCBfX202NCBfX20yKSB7CiAgX19tNjRfdW5pb24gbTEsIG0yLCByZXM7CgogIG0xLmFzX202NCA9IF9fbTE7CiAgbTIuYXNfbTY0ID0gX19tMjsKCiAgcmVzLmFzX3Nob3J0WzBdID0gbTEuYXNfc2hvcnRbMl07CiAgcmVzLmFzX3Nob3J0WzFdID0gbTIuYXNfc2hvcnRbMl07CiAgcmVzLmFzX3Nob3J0WzJdID0gbTEuYXNfc2hvcnRbM107CiAgcmVzLmFzX3Nob3J0WzNdID0gbTIuYXNfc2hvcnRbM107CgogIHJldHVybiAoX19tNjQpcmVzLmFzX202NDsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTY0CiAgICBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKICAgIF9tX3B1bnBja2h3ZChfX202NCBfX20xLCBfX202NCBfX20yKSB7CiAgcmV0dXJuIF9tbV91bnBhY2toaV9waTE2KF9fbTEsIF9fbTIpOwp9Ci8qIEludGVybGVhdmUgdGhlIDMyLWJpdCB2YWx1ZSBmcm9tIHRoZSBoaWdoIGhhbGYgb2YgTTEgd2l0aCB0aGUgMzItYml0CiAgIHZhbHVlIGZyb20gdGhlIGhpZ2ggaGFsZiBvZiBNMi4gICovCmV4dGVybiBfX2lubGluZSBfX202NAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbW1fdW5wYWNraGlfcGkzMihfX202NCBfX20xLCBfX202NCBfX20yKSB7CiAgX19tNjRfdW5pb24gbTEsIG0yLCByZXM7CgogIG0xLmFzX202NCA9IF9fbTE7CiAgbTIuYXNfbTY0ID0gX19tMjsKCiAgcmVzLmFzX2ludFswXSA9IG0xLmFzX2ludFsxXTsKICByZXMuYXNfaW50WzFdID0gbTIuYXNfaW50WzFdOwoKICByZXR1cm4gKF9fbTY0KXJlcy5hc19tNjQ7Cn0KCmV4dGVybiBfX2lubGluZSBfX202NAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbV9wdW5wY2toZHEoX19tNjQgX19tMSwgX19tNjQgX19tMikgewogIHJldHVybiBfbW1fdW5wYWNraGlfcGkzMihfX20xLCBfX20yKTsKfQovKiBJbnRlcmxlYXZlIHRoZSBmb3VyIDgtYml0IHZhbHVlcyBmcm9tIHRoZSBsb3cgaGFsZiBvZiBNMSB3aXRoIHRoZSBmb3VyCiAgIDgtYml0IHZhbHVlcyBmcm9tIHRoZSBsb3cgaGFsZiBvZiBNMi4gICovCmV4dGVybiBfX2lubGluZSBfX202NAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbW1fdW5wYWNrbG9fcGk4KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpIHsKI2lmIF9BUkNIX1BXUjgKICBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIGEsIGIsIGM7CgogIGEgPSAoX192ZWN0b3IgdW5zaWduZWQgY2hhcil2ZWNfc3BsYXRzKF9fbTEpOwogIGIgPSAoX192ZWN0b3IgdW5zaWduZWQgY2hhcil2ZWNfc3BsYXRzKF9fbTIpOwogIGMgPSB2ZWNfbWVyZ2VsKGEsIGIpOwogIHJldHVybiAoX19tNjQpKChfX3ZlY3RvciBsb25nIGxvbmcpYylbMF07CiNlbHNlCiAgX19tNjRfdW5pb24gbTEsIG0yLCByZXM7CgogIG0xLmFzX202NCA9IF9fbTE7CiAgbTIuYXNfbTY0ID0gX19tMjsKCiAgcmVzLmFzX2NoYXJbMF0gPSBtMS5hc19jaGFyWzBdOwogIHJlcy5hc19jaGFyWzFdID0gbTIuYXNfY2hhclswXTsKICByZXMuYXNfY2hhclsyXSA9IG0xLmFzX2NoYXJbMV07CiAgcmVzLmFzX2NoYXJbM10gPSBtMi5hc19jaGFyWzFdOwogIHJlcy5hc19jaGFyWzRdID0gbTEuYXNfY2hhclsyXTsKICByZXMuYXNfY2hhcls1XSA9IG0yLmFzX2NoYXJbMl07CiAgcmVzLmFzX2NoYXJbNl0gPSBtMS5hc19jaGFyWzNdOwogIHJlcy5hc19jaGFyWzddID0gbTIuYXNfY2hhclszXTsKCiAgcmV0dXJuIChfX202NClyZXMuYXNfbTY0OwojZW5kaWYKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTY0CiAgICBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKICAgIF9tX3B1bnBja2xidyhfX202NCBfX20xLCBfX202NCBfX20yKSB7CiAgcmV0dXJuIF9tbV91bnBhY2tsb19waTgoX19tMSwgX19tMik7Cn0KLyogSW50ZXJsZWF2ZSB0aGUgdHdvIDE2LWJpdCB2YWx1ZXMgZnJvbSB0aGUgbG93IGhhbGYgb2YgTTEgd2l0aCB0aGUgdHdvCiAgIDE2LWJpdCB2YWx1ZXMgZnJvbSB0aGUgbG93IGhhbGYgb2YgTTIuICAqLwpleHRlcm4gX19pbmxpbmUgX19tNjQKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21tX3VucGFja2xvX3BpMTYoX19tNjQgX19tMSwgX19tNjQgX19tMikgewogIF9fbTY0X3VuaW9uIG0xLCBtMiwgcmVzOwoKICBtMS5hc19tNjQgPSBfX20xOwogIG0yLmFzX202NCA9IF9fbTI7CgogIHJlcy5hc19zaG9ydFswXSA9IG0xLmFzX3Nob3J0WzBdOwogIHJlcy5hc19zaG9ydFsxXSA9IG0yLmFzX3Nob3J0WzBdOwogIHJlcy5hc19zaG9ydFsyXSA9IG0xLmFzX3Nob3J0WzFdOwogIHJlcy5hc19zaG9ydFszXSA9IG0yLmFzX3Nob3J0WzFdOwoKICByZXR1cm4gKF9fbTY0KXJlcy5hc19tNjQ7Cn0KCmV4dGVybiBfX2lubGluZSBfX202NAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbV9wdW5wY2tsd2QoX19tNjQgX19tMSwgX19tNjQgX19tMikgewogIHJldHVybiBfbW1fdW5wYWNrbG9fcGkxNihfX20xLCBfX20yKTsKfQoKLyogSW50ZXJsZWF2ZSB0aGUgMzItYml0IHZhbHVlIGZyb20gdGhlIGxvdyBoYWxmIG9mIE0xIHdpdGggdGhlIDMyLWJpdAogICB2YWx1ZSBmcm9tIHRoZSBsb3cgaGFsZiBvZiBNMi4gICovCmV4dGVybiBfX2lubGluZSBfX202NAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbW1fdW5wYWNrbG9fcGkzMihfX202NCBfX20xLCBfX202NCBfX20yKSB7CiAgX19tNjRfdW5pb24gbTEsIG0yLCByZXM7CgogIG0xLmFzX202NCA9IF9fbTE7CiAgbTIuYXNfbTY0ID0gX19tMjsKCiAgcmVzLmFzX2ludFswXSA9IG0xLmFzX2ludFswXTsKICByZXMuYXNfaW50WzFdID0gbTIuYXNfaW50WzBdOwoKICByZXR1cm4gKF9fbTY0KXJlcy5hc19tNjQ7Cn0KCmV4dGVybiBfX2lubGluZSBfX202NAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbV9wdW5wY2tsZHEoX19tNjQgX19tMSwgX19tNjQgX19tMikgewogIHJldHVybiBfbW1fdW5wYWNrbG9fcGkzMihfX20xLCBfX20yKTsKfQoKLyogQWRkIHRoZSA4LWJpdCB2YWx1ZXMgaW4gTTEgdG8gdGhlIDgtYml0IHZhbHVlcyBpbiBNMi4gICovCmV4dGVybiBfX2lubGluZSBfX202NAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbW1fYWRkX3BpOChfX202NCBfX20xLCBfX202NCBfX20yKSB7CiNpZiBfQVJDSF9QV1I4CiAgX192ZWN0b3Igc2lnbmVkIGNoYXIgYSwgYiwgYzsKCiAgYSA9IChfX3ZlY3RvciBzaWduZWQgY2hhcil2ZWNfc3BsYXRzKF9fbTEpOwogIGIgPSAoX192ZWN0b3Igc2lnbmVkIGNoYXIpdmVjX3NwbGF0cyhfX20yKTsKICBjID0gdmVjX2FkZChhLCBiKTsKICByZXR1cm4gKF9fbTY0KSgoX192ZWN0b3IgbG9uZyBsb25nKWMpWzBdOwojZWxzZQogIF9fbTY0X3VuaW9uIG0xLCBtMiwgcmVzOwoKICBtMS5hc19tNjQgPSBfX20xOwogIG0yLmFzX202NCA9IF9fbTI7CgogIHJlcy5hc19jaGFyWzBdID0gbTEuYXNfY2hhclswXSArIG0yLmFzX2NoYXJbMF07CiAgcmVzLmFzX2NoYXJbMV0gPSBtMS5hc19jaGFyWzFdICsgbTIuYXNfY2hhclsxXTsKICByZXMuYXNfY2hhclsyXSA9IG0xLmFzX2NoYXJbMl0gKyBtMi5hc19jaGFyWzJdOwogIHJlcy5hc19jaGFyWzNdID0gbTEuYXNfY2hhclszXSArIG0yLmFzX2NoYXJbM107CiAgcmVzLmFzX2NoYXJbNF0gPSBtMS5hc19jaGFyWzRdICsgbTIuYXNfY2hhcls0XTsKICByZXMuYXNfY2hhcls1XSA9IG0xLmFzX2NoYXJbNV0gKyBtMi5hc19jaGFyWzVdOwogIHJlcy5hc19jaGFyWzZdID0gbTEuYXNfY2hhcls2XSArIG0yLmFzX2NoYXJbNl07CiAgcmVzLmFzX2NoYXJbN10gPSBtMS5hc19jaGFyWzddICsgbTIuYXNfY2hhcls3XTsKCiAgcmV0dXJuIChfX202NClyZXMuYXNfbTY0OwojZW5kaWYKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTY0CiAgICBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKICAgIF9tX3BhZGRiKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpIHsKICByZXR1cm4gX21tX2FkZF9waTgoX19tMSwgX19tMik7Cn0KCi8qIEFkZCB0aGUgMTYtYml0IHZhbHVlcyBpbiBNMSB0byB0aGUgMTYtYml0IHZhbHVlcyBpbiBNMi4gICovCmV4dGVybiBfX2lubGluZSBfX202NAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbW1fYWRkX3BpMTYoX19tNjQgX19tMSwgX19tNjQgX19tMikgewojaWYgX0FSQ0hfUFdSOAogIF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBhLCBiLCBjOwoKICBhID0gKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCl2ZWNfc3BsYXRzKF9fbTEpOwogIGIgPSAoX192ZWN0b3Igc2lnbmVkIHNob3J0KXZlY19zcGxhdHMoX19tMik7CiAgYyA9IHZlY19hZGQoYSwgYik7CiAgcmV0dXJuIChfX202NCkoKF9fdmVjdG9yIGxvbmcgbG9uZyljKVswXTsKI2Vsc2UKICBfX202NF91bmlvbiBtMSwgbTIsIHJlczsKCiAgbTEuYXNfbTY0ID0gX19tMTsKICBtMi5hc19tNjQgPSBfX20yOwoKICByZXMuYXNfc2hvcnRbMF0gPSBtMS5hc19zaG9ydFswXSArIG0yLmFzX3Nob3J0WzBdOwogIHJlcy5hc19zaG9ydFsxXSA9IG0xLmFzX3Nob3J0WzFdICsgbTIuYXNfc2hvcnRbMV07CiAgcmVzLmFzX3Nob3J0WzJdID0gbTEuYXNfc2hvcnRbMl0gKyBtMi5hc19zaG9ydFsyXTsKICByZXMuYXNfc2hvcnRbM10gPSBtMS5hc19zaG9ydFszXSArIG0yLmFzX3Nob3J0WzNdOwoKICByZXR1cm4gKF9fbTY0KXJlcy5hc19tNjQ7CiNlbmRpZgp9CgpleHRlcm4gX19pbmxpbmUgX19tNjQKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21fcGFkZHcoX19tNjQgX19tMSwgX19tNjQgX19tMikgewogIHJldHVybiBfbW1fYWRkX3BpMTYoX19tMSwgX19tMik7Cn0KCi8qIEFkZCB0aGUgMzItYml0IHZhbHVlcyBpbiBNMSB0byB0aGUgMzItYml0IHZhbHVlcyBpbiBNMi4gICovCmV4dGVybiBfX2lubGluZSBfX202NAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbW1fYWRkX3BpMzIoX19tNjQgX19tMSwgX19tNjQgX19tMikgewojaWYgX0FSQ0hfUFdSOQogIF9fdmVjdG9yIHNpZ25lZCBpbnQgYSwgYiwgYzsKCiAgYSA9IChfX3ZlY3RvciBzaWduZWQgaW50KXZlY19zcGxhdHMoX19tMSk7CiAgYiA9IChfX3ZlY3RvciBzaWduZWQgaW50KXZlY19zcGxhdHMoX19tMik7CiAgYyA9IHZlY19hZGQoYSwgYik7CiAgcmV0dXJuIChfX202NCkoKF9fdmVjdG9yIGxvbmcgbG9uZyljKVswXTsKI2Vsc2UKICBfX202NF91bmlvbiBtMSwgbTIsIHJlczsKCiAgbTEuYXNfbTY0ID0gX19tMTsKICBtMi5hc19tNjQgPSBfX20yOwoKICByZXMuYXNfaW50WzBdID0gbTEuYXNfaW50WzBdICsgbTIuYXNfaW50WzBdOwogIHJlcy5hc19pbnRbMV0gPSBtMS5hc19pbnRbMV0gKyBtMi5hc19pbnRbMV07CgogIHJldHVybiAoX19tNjQpcmVzLmFzX202NDsKI2VuZGlmCn0KCmV4dGVybiBfX2lubGluZSBfX202NAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbV9wYWRkZChfX202NCBfX20xLCBfX202NCBfX20yKSB7CiAgcmV0dXJuIF9tbV9hZGRfcGkzMihfX20xLCBfX20yKTsKfQoKLyogU3VidHJhY3QgdGhlIDgtYml0IHZhbHVlcyBpbiBNMiBmcm9tIHRoZSA4LWJpdCB2YWx1ZXMgaW4gTTEuICAqLwpleHRlcm4gX19pbmxpbmUgX19tNjQKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21tX3N1Yl9waTgoX19tNjQgX19tMSwgX19tNjQgX19tMikgewojaWYgX0FSQ0hfUFdSOAogIF9fdmVjdG9yIHNpZ25lZCBjaGFyIGEsIGIsIGM7CgogIGEgPSAoX192ZWN0b3Igc2lnbmVkIGNoYXIpdmVjX3NwbGF0cyhfX20xKTsKICBiID0gKF9fdmVjdG9yIHNpZ25lZCBjaGFyKXZlY19zcGxhdHMoX19tMik7CiAgYyA9IHZlY19zdWIoYSwgYik7CiAgcmV0dXJuIChfX202NCkoKF9fdmVjdG9yIGxvbmcgbG9uZyljKVswXTsKI2Vsc2UKICBfX202NF91bmlvbiBtMSwgbTIsIHJlczsKCiAgbTEuYXNfbTY0ID0gX19tMTsKICBtMi5hc19tNjQgPSBfX20yOwoKICByZXMuYXNfY2hhclswXSA9IG0xLmFzX2NoYXJbMF0gLSBtMi5hc19jaGFyWzBdOwogIHJlcy5hc19jaGFyWzFdID0gbTEuYXNfY2hhclsxXSAtIG0yLmFzX2NoYXJbMV07CiAgcmVzLmFzX2NoYXJbMl0gPSBtMS5hc19jaGFyWzJdIC0gbTIuYXNfY2hhclsyXTsKICByZXMuYXNfY2hhclszXSA9IG0xLmFzX2NoYXJbM10gLSBtMi5hc19jaGFyWzNdOwogIHJlcy5hc19jaGFyWzRdID0gbTEuYXNfY2hhcls0XSAtIG0yLmFzX2NoYXJbNF07CiAgcmVzLmFzX2NoYXJbNV0gPSBtMS5hc19jaGFyWzVdIC0gbTIuYXNfY2hhcls1XTsKICByZXMuYXNfY2hhcls2XSA9IG0xLmFzX2NoYXJbNl0gLSBtMi5hc19jaGFyWzZdOwogIHJlcy5hc19jaGFyWzddID0gbTEuYXNfY2hhcls3XSAtIG0yLmFzX2NoYXJbN107CgogIHJldHVybiAoX19tNjQpcmVzLmFzX202NDsKI2VuZGlmCn0KCmV4dGVybiBfX2lubGluZSBfX202NAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbV9wc3ViYihfX202NCBfX20xLCBfX202NCBfX20yKSB7CiAgcmV0dXJuIF9tbV9zdWJfcGk4KF9fbTEsIF9fbTIpOwp9CgovKiBTdWJ0cmFjdCB0aGUgMTYtYml0IHZhbHVlcyBpbiBNMiBmcm9tIHRoZSAxNi1iaXQgdmFsdWVzIGluIE0xLiAgKi8KZXh0ZXJuIF9faW5saW5lIF9fbTY0CiAgICBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKICAgIF9tbV9zdWJfcGkxNihfX202NCBfX20xLCBfX202NCBfX20yKSB7CiNpZiBfQVJDSF9QV1I4CiAgX192ZWN0b3Igc2lnbmVkIHNob3J0IGEsIGIsIGM7CgogIGEgPSAoX192ZWN0b3Igc2lnbmVkIHNob3J0KXZlY19zcGxhdHMoX19tMSk7CiAgYiA9IChfX3ZlY3RvciBzaWduZWQgc2hvcnQpdmVjX3NwbGF0cyhfX20yKTsKICBjID0gdmVjX3N1YihhLCBiKTsKICByZXR1cm4gKF9fbTY0KSgoX192ZWN0b3IgbG9uZyBsb25nKWMpWzBdOwojZWxzZQogIF9fbTY0X3VuaW9uIG0xLCBtMiwgcmVzOwoKICBtMS5hc19tNjQgPSBfX20xOwogIG0yLmFzX202NCA9IF9fbTI7CgogIHJlcy5hc19zaG9ydFswXSA9IG0xLmFzX3Nob3J0WzBdIC0gbTIuYXNfc2hvcnRbMF07CiAgcmVzLmFzX3Nob3J0WzFdID0gbTEuYXNfc2hvcnRbMV0gLSBtMi5hc19zaG9ydFsxXTsKICByZXMuYXNfc2hvcnRbMl0gPSBtMS5hc19zaG9ydFsyXSAtIG0yLmFzX3Nob3J0WzJdOwogIHJlcy5hc19zaG9ydFszXSA9IG0xLmFzX3Nob3J0WzNdIC0gbTIuYXNfc2hvcnRbM107CgogIHJldHVybiAoX19tNjQpcmVzLmFzX202NDsKI2VuZGlmCn0KCmV4dGVybiBfX2lubGluZSBfX202NAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbV9wc3VidyhfX202NCBfX20xLCBfX202NCBfX20yKSB7CiAgcmV0dXJuIF9tbV9zdWJfcGkxNihfX20xLCBfX20yKTsKfQoKLyogU3VidHJhY3QgdGhlIDMyLWJpdCB2YWx1ZXMgaW4gTTIgZnJvbSB0aGUgMzItYml0IHZhbHVlcyBpbiBNMS4gICovCmV4dGVybiBfX2lubGluZSBfX202NAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbW1fc3ViX3BpMzIoX19tNjQgX19tMSwgX19tNjQgX19tMikgewojaWYgX0FSQ0hfUFdSOQogIF9fdmVjdG9yIHNpZ25lZCBpbnQgYSwgYiwgYzsKCiAgYSA9IChfX3ZlY3RvciBzaWduZWQgaW50KXZlY19zcGxhdHMoX19tMSk7CiAgYiA9IChfX3ZlY3RvciBzaWduZWQgaW50KXZlY19zcGxhdHMoX19tMik7CiAgYyA9IHZlY19zdWIoYSwgYik7CiAgcmV0dXJuIChfX202NCkoKF9fdmVjdG9yIGxvbmcgbG9uZyljKVswXTsKI2Vsc2UKICBfX202NF91bmlvbiBtMSwgbTIsIHJlczsKCiAgbTEuYXNfbTY0ID0gX19tMTsKICBtMi5hc19tNjQgPSBfX20yOwoKICByZXMuYXNfaW50WzBdID0gbTEuYXNfaW50WzBdIC0gbTIuYXNfaW50WzBdOwogIHJlcy5hc19pbnRbMV0gPSBtMS5hc19pbnRbMV0gLSBtMi5hc19pbnRbMV07CgogIHJldHVybiAoX19tNjQpcmVzLmFzX202NDsKI2VuZGlmCn0KCmV4dGVybiBfX2lubGluZSBfX202NAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbV9wc3ViZChfX202NCBfX20xLCBfX202NCBfX20yKSB7CiAgcmV0dXJuIF9tbV9zdWJfcGkzMihfX20xLCBfX20yKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTY0CiAgICBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKICAgIF9tbV9hZGRfc2k2NChfX202NCBfX20xLCBfX202NCBfX20yKSB7CiAgcmV0dXJuIChfX20xICsgX19tMik7Cn0KCmV4dGVybiBfX2lubGluZSBfX202NAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbW1fc3ViX3NpNjQoX19tNjQgX19tMSwgX19tNjQgX19tMikgewogIHJldHVybiAoX19tMSAtIF9fbTIpOwp9CgovKiBTaGlmdCB0aGUgNjQtYml0IHZhbHVlIGluIE0gbGVmdCBieSBDT1VOVC4gICovCmV4dGVybiBfX2lubGluZSBfX202NAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbW1fc2xsX3NpNjQoX19tNjQgX19tLCBfX202NCBfX2NvdW50KSB7CiAgcmV0dXJuIChfX20gPDwgX19jb3VudCk7Cn0KCmV4dGVybiBfX2lubGluZSBfX202NAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbV9wc2xscShfX202NCBfX20sIF9fbTY0IF9fY291bnQpIHsKICByZXR1cm4gX21tX3NsbF9zaTY0KF9fbSwgX19jb3VudCk7Cn0KCmV4dGVybiBfX2lubGluZSBfX202NAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbW1fc2xsaV9zaTY0KF9fbTY0IF9fbSwgY29uc3QgaW50IF9fY291bnQpIHsKICByZXR1cm4gKF9fbSA8PCBfX2NvdW50KTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTY0CiAgICBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKICAgIF9tX3BzbGxxaShfX202NCBfX20sIGNvbnN0IGludCBfX2NvdW50KSB7CiAgcmV0dXJuIF9tbV9zbGxpX3NpNjQoX19tLCBfX2NvdW50KTsKfQoKLyogU2hpZnQgdGhlIDY0LWJpdCB2YWx1ZSBpbiBNIGxlZnQgYnkgQ09VTlQ7IHNoaWZ0IGluIHplcm9zLiAgKi8KZXh0ZXJuIF9faW5saW5lIF9fbTY0CiAgICBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKICAgIF9tbV9zcmxfc2k2NChfX202NCBfX20sIF9fbTY0IF9fY291bnQpIHsKICByZXR1cm4gKF9fbSA+PiBfX2NvdW50KTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTY0CiAgICBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKICAgIF9tX3BzcmxxKF9fbTY0IF9fbSwgX19tNjQgX19jb3VudCkgewogIHJldHVybiBfbW1fc3JsX3NpNjQoX19tLCBfX2NvdW50KTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTY0CiAgICBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKICAgIF9tbV9zcmxpX3NpNjQoX19tNjQgX19tLCBjb25zdCBpbnQgX19jb3VudCkgewogIHJldHVybiAoX19tID4+IF9fY291bnQpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tNjQKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21fcHNybHFpKF9fbTY0IF9fbSwgY29uc3QgaW50IF9fY291bnQpIHsKICByZXR1cm4gX21tX3NybGlfc2k2NChfX20sIF9fY291bnQpOwp9CgovKiBCaXQtd2lzZSBBTkQgdGhlIDY0LWJpdCB2YWx1ZXMgaW4gTTEgYW5kIE0yLiAgKi8KZXh0ZXJuIF9faW5saW5lIF9fbTY0CiAgICBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKICAgIF9tbV9hbmRfc2k2NChfX202NCBfX20xLCBfX202NCBfX20yKSB7CiAgcmV0dXJuIChfX20xICYgX19tMik7Cn0KCmV4dGVybiBfX2lubGluZSBfX202NAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbV9wYW5kKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpIHsKICByZXR1cm4gX21tX2FuZF9zaTY0KF9fbTEsIF9fbTIpOwp9CgovKiBCaXQtd2lzZSBjb21wbGVtZW50IHRoZSA2NC1iaXQgdmFsdWUgaW4gTTEgYW5kIGJpdC13aXNlIEFORCBpdCB3aXRoIHRoZQogICA2NC1iaXQgdmFsdWUgaW4gTTIuICAqLwpleHRlcm4gX19pbmxpbmUgX19tNjQKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21tX2FuZG5vdF9zaTY0KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpIHsKICByZXR1cm4gKH5fX20xICYgX19tMik7Cn0KCmV4dGVybiBfX2lubGluZSBfX202NAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbV9wYW5kbihfX202NCBfX20xLCBfX202NCBfX20yKSB7CiAgcmV0dXJuIF9tbV9hbmRub3Rfc2k2NChfX20xLCBfX20yKTsKfQoKLyogQml0LXdpc2UgaW5jbHVzaXZlIE9SIHRoZSA2NC1iaXQgdmFsdWVzIGluIE0xIGFuZCBNMi4gICovCmV4dGVybiBfX2lubGluZSBfX202NAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbW1fb3Jfc2k2NChfX202NCBfX20xLCBfX202NCBfX20yKSB7CiAgcmV0dXJuIChfX20xIHwgX19tMik7Cn0KCmV4dGVybiBfX2lubGluZSBfX202NAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbV9wb3IoX19tNjQgX19tMSwgX19tNjQgX19tMikgewogIHJldHVybiBfbW1fb3Jfc2k2NChfX20xLCBfX20yKTsKfQoKLyogQml0LXdpc2UgZXhjbHVzaXZlIE9SIHRoZSA2NC1iaXQgdmFsdWVzIGluIE0xIGFuZCBNMi4gICovCmV4dGVybiBfX2lubGluZSBfX202NAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbW1feG9yX3NpNjQoX19tNjQgX19tMSwgX19tNjQgX19tMikgewogIHJldHVybiAoX19tMSBeIF9fbTIpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tNjQKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21fcHhvcihfX202NCBfX20xLCBfX202NCBfX20yKSB7CiAgcmV0dXJuIF9tbV94b3Jfc2k2NChfX20xLCBfX20yKTsKfQoKLyogQ3JlYXRlcyBhIDY0LWJpdCB6ZXJvLiAgKi8KZXh0ZXJuIF9faW5saW5lIF9fbTY0CiAgICBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKICAgIF9tbV9zZXR6ZXJvX3NpNjQodm9pZCkgewogIHJldHVybiAoX19tNjQpMDsKfQoKLyogQ29tcGFyZSBlaWdodCA4LWJpdCB2YWx1ZXMuICBUaGUgcmVzdWx0IG9mIHRoZSBjb21wYXJpc29uIGlzIDB4RkYgaWYgdGhlCiAgIHRlc3QgaXMgdHJ1ZSBhbmQgemVybyBpZiBmYWxzZS4gICovCmV4dGVybiBfX2lubGluZSBfX202NAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbW1fY21wZXFfcGk4KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpIHsKI2lmIGRlZmluZWQoX0FSQ0hfUFdSNikgJiYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQogIF9fbTY0IHJlczsKICBfX2FzbV9fKCJjbXBiICUwLCUxLCUyO1xuIiA6ICI9ciIocmVzKSA6ICJyIihfX20xKSwgInIiKF9fbTIpIDopOwogIHJldHVybiAocmVzKTsKI2Vsc2UKICBfX202NF91bmlvbiBtMSwgbTIsIHJlczsKCiAgbTEuYXNfbTY0ID0gX19tMTsKICBtMi5hc19tNjQgPSBfX20yOwoKICByZXMuYXNfY2hhclswXSA9IChtMS5hc19jaGFyWzBdID09IG0yLmFzX2NoYXJbMF0pID8gLTEgOiAwOwogIHJlcy5hc19jaGFyWzFdID0gKG0xLmFzX2NoYXJbMV0gPT0gbTIuYXNfY2hhclsxXSkgPyAtMSA6IDA7CiAgcmVzLmFzX2NoYXJbMl0gPSAobTEuYXNfY2hhclsyXSA9PSBtMi5hc19jaGFyWzJdKSA/IC0xIDogMDsKICByZXMuYXNfY2hhclszXSA9IChtMS5hc19jaGFyWzNdID09IG0yLmFzX2NoYXJbM10pID8gLTEgOiAwOwogIHJlcy5hc19jaGFyWzRdID0gKG0xLmFzX2NoYXJbNF0gPT0gbTIuYXNfY2hhcls0XSkgPyAtMSA6IDA7CiAgcmVzLmFzX2NoYXJbNV0gPSAobTEuYXNfY2hhcls1XSA9PSBtMi5hc19jaGFyWzVdKSA/IC0xIDogMDsKICByZXMuYXNfY2hhcls2XSA9IChtMS5hc19jaGFyWzZdID09IG0yLmFzX2NoYXJbNl0pID8gLTEgOiAwOwogIHJlcy5hc19jaGFyWzddID0gKG0xLmFzX2NoYXJbN10gPT0gbTIuYXNfY2hhcls3XSkgPyAtMSA6IDA7CgogIHJldHVybiAoX19tNjQpcmVzLmFzX202NDsKI2VuZGlmCn0KCmV4dGVybiBfX2lubGluZSBfX202NAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbV9wY21wZXFiKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpIHsKICByZXR1cm4gX21tX2NtcGVxX3BpOChfX20xLCBfX20yKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTY0CiAgICBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKICAgIF9tbV9jbXBndF9waTgoX19tNjQgX19tMSwgX19tNjQgX19tMikgewojaWYgX0FSQ0hfUFdSOAogIF9fdmVjdG9yIHNpZ25lZCBjaGFyIGEsIGIsIGM7CgogIGEgPSAoX192ZWN0b3Igc2lnbmVkIGNoYXIpdmVjX3NwbGF0cyhfX20xKTsKICBiID0gKF9fdmVjdG9yIHNpZ25lZCBjaGFyKXZlY19zcGxhdHMoX19tMik7CiAgYyA9IChfX3ZlY3RvciBzaWduZWQgY2hhcil2ZWNfY21wZ3QoYSwgYik7CiAgcmV0dXJuIChfX202NCkoKF9fdmVjdG9yIGxvbmcgbG9uZyljKVswXTsKI2Vsc2UKICBfX202NF91bmlvbiBtMSwgbTIsIHJlczsKCiAgbTEuYXNfbTY0ID0gX19tMTsKICBtMi5hc19tNjQgPSBfX20yOwoKICByZXMuYXNfY2hhclswXSA9IChtMS5hc19jaGFyWzBdID4gbTIuYXNfY2hhclswXSkgPyAtMSA6IDA7CiAgcmVzLmFzX2NoYXJbMV0gPSAobTEuYXNfY2hhclsxXSA+IG0yLmFzX2NoYXJbMV0pID8gLTEgOiAwOwogIHJlcy5hc19jaGFyWzJdID0gKG0xLmFzX2NoYXJbMl0gPiBtMi5hc19jaGFyWzJdKSA/IC0xIDogMDsKICByZXMuYXNfY2hhclszXSA9IChtMS5hc19jaGFyWzNdID4gbTIuYXNfY2hhclszXSkgPyAtMSA6IDA7CiAgcmVzLmFzX2NoYXJbNF0gPSAobTEuYXNfY2hhcls0XSA+IG0yLmFzX2NoYXJbNF0pID8gLTEgOiAwOwogIHJlcy5hc19jaGFyWzVdID0gKG0xLmFzX2NoYXJbNV0gPiBtMi5hc19jaGFyWzVdKSA/IC0xIDogMDsKICByZXMuYXNfY2hhcls2XSA9IChtMS5hc19jaGFyWzZdID4gbTIuYXNfY2hhcls2XSkgPyAtMSA6IDA7CiAgcmVzLmFzX2NoYXJbN10gPSAobTEuYXNfY2hhcls3XSA+IG0yLmFzX2NoYXJbN10pID8gLTEgOiAwOwoKICByZXR1cm4gKF9fbTY0KXJlcy5hc19tNjQ7CiNlbmRpZgp9CgpleHRlcm4gX19pbmxpbmUgX19tNjQKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21fcGNtcGd0YihfX202NCBfX20xLCBfX202NCBfX20yKSB7CiAgcmV0dXJuIF9tbV9jbXBndF9waTgoX19tMSwgX19tMik7Cn0KCi8qIENvbXBhcmUgZm91ciAxNi1iaXQgdmFsdWVzLiAgVGhlIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvbiBpcyAweEZGRkYgaWYKICAgdGhlIHRlc3QgaXMgdHJ1ZSBhbmQgemVybyBpZiBmYWxzZS4gICovCmV4dGVybiBfX2lubGluZSBfX202NAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbW1fY21wZXFfcGkxNihfX202NCBfX20xLCBfX202NCBfX20yKSB7CiNpZiBfQVJDSF9QV1I4CiAgX192ZWN0b3Igc2lnbmVkIHNob3J0IGEsIGIsIGM7CgogIGEgPSAoX192ZWN0b3Igc2lnbmVkIHNob3J0KXZlY19zcGxhdHMoX19tMSk7CiAgYiA9IChfX3ZlY3RvciBzaWduZWQgc2hvcnQpdmVjX3NwbGF0cyhfX20yKTsKICBjID0gKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCl2ZWNfY21wZXEoYSwgYik7CiAgcmV0dXJuIChfX202NCkoKF9fdmVjdG9yIGxvbmcgbG9uZyljKVswXTsKI2Vsc2UKICBfX202NF91bmlvbiBtMSwgbTIsIHJlczsKCiAgbTEuYXNfbTY0ID0gX19tMTsKICBtMi5hc19tNjQgPSBfX20yOwoKICByZXMuYXNfc2hvcnRbMF0gPSAobTEuYXNfc2hvcnRbMF0gPT0gbTIuYXNfc2hvcnRbMF0pID8gLTEgOiAwOwogIHJlcy5hc19zaG9ydFsxXSA9IChtMS5hc19zaG9ydFsxXSA9PSBtMi5hc19zaG9ydFsxXSkgPyAtMSA6IDA7CiAgcmVzLmFzX3Nob3J0WzJdID0gKG0xLmFzX3Nob3J0WzJdID09IG0yLmFzX3Nob3J0WzJdKSA/IC0xIDogMDsKICByZXMuYXNfc2hvcnRbM10gPSAobTEuYXNfc2hvcnRbM10gPT0gbTIuYXNfc2hvcnRbM10pID8gLTEgOiAwOwoKICByZXR1cm4gKF9fbTY0KXJlcy5hc19tNjQ7CiNlbmRpZgp9CgpleHRlcm4gX19pbmxpbmUgX19tNjQKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21fcGNtcGVxdyhfX202NCBfX20xLCBfX202NCBfX20yKSB7CiAgcmV0dXJuIF9tbV9jbXBlcV9waTE2KF9fbTEsIF9fbTIpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tNjQKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21tX2NtcGd0X3BpMTYoX19tNjQgX19tMSwgX19tNjQgX19tMikgewojaWYgX0FSQ0hfUFdSOAogIF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBhLCBiLCBjOwoKICBhID0gKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCl2ZWNfc3BsYXRzKF9fbTEpOwogIGIgPSAoX192ZWN0b3Igc2lnbmVkIHNob3J0KXZlY19zcGxhdHMoX19tMik7CiAgYyA9IChfX3ZlY3RvciBzaWduZWQgc2hvcnQpdmVjX2NtcGd0KGEsIGIpOwogIHJldHVybiAoX19tNjQpKChfX3ZlY3RvciBsb25nIGxvbmcpYylbMF07CiNlbHNlCiAgX19tNjRfdW5pb24gbTEsIG0yLCByZXM7CgogIG0xLmFzX202NCA9IF9fbTE7CiAgbTIuYXNfbTY0ID0gX19tMjsKCiAgcmVzLmFzX3Nob3J0WzBdID0gKG0xLmFzX3Nob3J0WzBdID4gbTIuYXNfc2hvcnRbMF0pID8gLTEgOiAwOwogIHJlcy5hc19zaG9ydFsxXSA9IChtMS5hc19zaG9ydFsxXSA+IG0yLmFzX3Nob3J0WzFdKSA/IC0xIDogMDsKICByZXMuYXNfc2hvcnRbMl0gPSAobTEuYXNfc2hvcnRbMl0gPiBtMi5hc19zaG9ydFsyXSkgPyAtMSA6IDA7CiAgcmVzLmFzX3Nob3J0WzNdID0gKG0xLmFzX3Nob3J0WzNdID4gbTIuYXNfc2hvcnRbM10pID8gLTEgOiAwOwoKICByZXR1cm4gKF9fbTY0KXJlcy5hc19tNjQ7CiNlbmRpZgp9CgpleHRlcm4gX19pbmxpbmUgX19tNjQKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21fcGNtcGd0dyhfX202NCBfX20xLCBfX202NCBfX20yKSB7CiAgcmV0dXJuIF9tbV9jbXBndF9waTE2KF9fbTEsIF9fbTIpOwp9CgovKiBDb21wYXJlIHR3byAzMi1iaXQgdmFsdWVzLiAgVGhlIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvbiBpcyAweEZGRkZGRkZGIGlmCiAgIHRoZSB0ZXN0IGlzIHRydWUgYW5kIHplcm8gaWYgZmFsc2UuICAqLwpleHRlcm4gX19pbmxpbmUgX19tNjQKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21tX2NtcGVxX3BpMzIoX19tNjQgX19tMSwgX19tNjQgX19tMikgewojaWYgX0FSQ0hfUFdSOQogIF9fdmVjdG9yIHNpZ25lZCBpbnQgYSwgYiwgYzsKCiAgYSA9IChfX3ZlY3RvciBzaWduZWQgaW50KXZlY19zcGxhdHMoX19tMSk7CiAgYiA9IChfX3ZlY3RvciBzaWduZWQgaW50KXZlY19zcGxhdHMoX19tMik7CiAgYyA9IChfX3ZlY3RvciBzaWduZWQgaW50KXZlY19jbXBlcShhLCBiKTsKICByZXR1cm4gKF9fbTY0KSgoX192ZWN0b3IgbG9uZyBsb25nKWMpWzBdOwojZWxzZQogIF9fbTY0X3VuaW9uIG0xLCBtMiwgcmVzOwoKICBtMS5hc19tNjQgPSBfX20xOwogIG0yLmFzX202NCA9IF9fbTI7CgogIHJlcy5hc19pbnRbMF0gPSAobTEuYXNfaW50WzBdID09IG0yLmFzX2ludFswXSkgPyAtMSA6IDA7CiAgcmVzLmFzX2ludFsxXSA9IChtMS5hc19pbnRbMV0gPT0gbTIuYXNfaW50WzFdKSA/IC0xIDogMDsKCiAgcmV0dXJuIChfX202NClyZXMuYXNfbTY0OwojZW5kaWYKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTY0CiAgICBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKICAgIF9tX3BjbXBlcWQoX19tNjQgX19tMSwgX19tNjQgX19tMikgewogIHJldHVybiBfbW1fY21wZXFfcGkzMihfX20xLCBfX20yKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTY0CiAgICBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKICAgIF9tbV9jbXBndF9waTMyKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpIHsKI2lmIF9BUkNIX1BXUjkKICBfX3ZlY3RvciBzaWduZWQgaW50IGEsIGIsIGM7CgogIGEgPSAoX192ZWN0b3Igc2lnbmVkIGludCl2ZWNfc3BsYXRzKF9fbTEpOwogIGIgPSAoX192ZWN0b3Igc2lnbmVkIGludCl2ZWNfc3BsYXRzKF9fbTIpOwogIGMgPSAoX192ZWN0b3Igc2lnbmVkIGludCl2ZWNfY21wZ3QoYSwgYik7CiAgcmV0dXJuIChfX202NCkoKF9fdmVjdG9yIGxvbmcgbG9uZyljKVswXTsKI2Vsc2UKICBfX202NF91bmlvbiBtMSwgbTIsIHJlczsKCiAgbTEuYXNfbTY0ID0gX19tMTsKICBtMi5hc19tNjQgPSBfX20yOwoKICByZXMuYXNfaW50WzBdID0gKG0xLmFzX2ludFswXSA+IG0yLmFzX2ludFswXSkgPyAtMSA6IDA7CiAgcmVzLmFzX2ludFsxXSA9IChtMS5hc19pbnRbMV0gPiBtMi5hc19pbnRbMV0pID8gLTEgOiAwOwoKICByZXR1cm4gKF9fbTY0KXJlcy5hc19tNjQ7CiNlbmRpZgp9CgpleHRlcm4gX19pbmxpbmUgX19tNjQKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21fcGNtcGd0ZChfX202NCBfX20xLCBfX202NCBfX20yKSB7CiAgcmV0dXJuIF9tbV9jbXBndF9waTMyKF9fbTEsIF9fbTIpOwp9CgojaWYgX0FSQ0hfUFdSOAovKiBBZGQgdGhlIDgtYml0IHZhbHVlcyBpbiBNMSB0byB0aGUgOC1iaXQgdmFsdWVzIGluIE0yIHVzaW5nIHNpZ25lZAogICBzYXR1cmF0ZWQgYXJpdGhtZXRpYy4gICovCmV4dGVybiBfX2lubGluZSBfX202NAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbW1fYWRkc19waTgoX19tNjQgX19tMSwgX19tNjQgX19tMikgewogIF9fdmVjdG9yIHNpZ25lZCBjaGFyIGEsIGIsIGM7CgogIGEgPSAoX192ZWN0b3Igc2lnbmVkIGNoYXIpdmVjX3NwbGF0cyhfX20xKTsKICBiID0gKF9fdmVjdG9yIHNpZ25lZCBjaGFyKXZlY19zcGxhdHMoX19tMik7CiAgYyA9IHZlY19hZGRzKGEsIGIpOwogIHJldHVybiAoX19tNjQpKChfX3ZlY3RvciBsb25nIGxvbmcpYylbMF07Cn0KCmV4dGVybiBfX2lubGluZSBfX202NAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbV9wYWRkc2IoX19tNjQgX19tMSwgX19tNjQgX19tMikgewogIHJldHVybiBfbW1fYWRkc19waTgoX19tMSwgX19tMik7Cn0KLyogQWRkIHRoZSAxNi1iaXQgdmFsdWVzIGluIE0xIHRvIHRoZSAxNi1iaXQgdmFsdWVzIGluIE0yIHVzaW5nIHNpZ25lZAogICBzYXR1cmF0ZWQgYXJpdGhtZXRpYy4gICovCmV4dGVybiBfX2lubGluZSBfX202NAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbW1fYWRkc19waTE2KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpIHsKICBfX3ZlY3RvciBzaWduZWQgc2hvcnQgYSwgYiwgYzsKCiAgYSA9IChfX3ZlY3RvciBzaWduZWQgc2hvcnQpdmVjX3NwbGF0cyhfX20xKTsKICBiID0gKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCl2ZWNfc3BsYXRzKF9fbTIpOwogIGMgPSB2ZWNfYWRkcyhhLCBiKTsKICByZXR1cm4gKF9fbTY0KSgoX192ZWN0b3IgbG9uZyBsb25nKWMpWzBdOwp9CgpleHRlcm4gX19pbmxpbmUgX19tNjQKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21fcGFkZHN3KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpIHsKICByZXR1cm4gX21tX2FkZHNfcGkxNihfX20xLCBfX20yKTsKfQovKiBBZGQgdGhlIDgtYml0IHZhbHVlcyBpbiBNMSB0byB0aGUgOC1iaXQgdmFsdWVzIGluIE0yIHVzaW5nIHVuc2lnbmVkCiAgIHNhdHVyYXRlZCBhcml0aG1ldGljLiAgKi8KZXh0ZXJuIF9faW5saW5lIF9fbTY0CiAgICBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKICAgIF9tbV9hZGRzX3B1OChfX202NCBfX20xLCBfX202NCBfX20yKSB7CiAgX192ZWN0b3IgdW5zaWduZWQgY2hhciBhLCBiLCBjOwoKICBhID0gKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpdmVjX3NwbGF0cyhfX20xKTsKICBiID0gKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpdmVjX3NwbGF0cyhfX20yKTsKICBjID0gdmVjX2FkZHMoYSwgYik7CiAgcmV0dXJuIChfX202NCkoKF9fdmVjdG9yIGxvbmcgbG9uZyljKVswXTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTY0CiAgICBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKICAgIF9tX3BhZGR1c2IoX19tNjQgX19tMSwgX19tNjQgX19tMikgewogIHJldHVybiBfbW1fYWRkc19wdTgoX19tMSwgX19tMik7Cn0KCi8qIEFkZCB0aGUgMTYtYml0IHZhbHVlcyBpbiBNMSB0byB0aGUgMTYtYml0IHZhbHVlcyBpbiBNMiB1c2luZyB1bnNpZ25lZAogICBzYXR1cmF0ZWQgYXJpdGhtZXRpYy4gICovCmV4dGVybiBfX2lubGluZSBfX202NAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbW1fYWRkc19wdTE2KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpIHsKICBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBhLCBiLCBjOwoKICBhID0gKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KXZlY19zcGxhdHMoX19tMSk7CiAgYiA9IChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCl2ZWNfc3BsYXRzKF9fbTIpOwogIGMgPSB2ZWNfYWRkcyhhLCBiKTsKICByZXR1cm4gKF9fbTY0KSgoX192ZWN0b3IgbG9uZyBsb25nKWMpWzBdOwp9CgpleHRlcm4gX19pbmxpbmUgX19tNjQKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21fcGFkZHVzdyhfX202NCBfX20xLCBfX202NCBfX20yKSB7CiAgcmV0dXJuIF9tbV9hZGRzX3B1MTYoX19tMSwgX19tMik7Cn0KCi8qIFN1YnRyYWN0IHRoZSA4LWJpdCB2YWx1ZXMgaW4gTTIgZnJvbSB0aGUgOC1iaXQgdmFsdWVzIGluIE0xIHVzaW5nIHNpZ25lZAogICBzYXR1cmF0aW5nIGFyaXRobWV0aWMuICAqLwpleHRlcm4gX19pbmxpbmUgX19tNjQKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21tX3N1YnNfcGk4KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpIHsKICBfX3ZlY3RvciBzaWduZWQgY2hhciBhLCBiLCBjOwoKICBhID0gKF9fdmVjdG9yIHNpZ25lZCBjaGFyKXZlY19zcGxhdHMoX19tMSk7CiAgYiA9IChfX3ZlY3RvciBzaWduZWQgY2hhcil2ZWNfc3BsYXRzKF9fbTIpOwogIGMgPSB2ZWNfc3VicyhhLCBiKTsKICByZXR1cm4gKF9fbTY0KSgoX192ZWN0b3IgbG9uZyBsb25nKWMpWzBdOwp9CgpleHRlcm4gX19pbmxpbmUgX19tNjQKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21fcHN1YnNiKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpIHsKICByZXR1cm4gX21tX3N1YnNfcGk4KF9fbTEsIF9fbTIpOwp9CgovKiBTdWJ0cmFjdCB0aGUgMTYtYml0IHZhbHVlcyBpbiBNMiBmcm9tIHRoZSAxNi1iaXQgdmFsdWVzIGluIE0xIHVzaW5nCiAgIHNpZ25lZCBzYXR1cmF0aW5nIGFyaXRobWV0aWMuICAqLwpleHRlcm4gX19pbmxpbmUgX19tNjQKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21tX3N1YnNfcGkxNihfX202NCBfX20xLCBfX202NCBfX20yKSB7CiAgX192ZWN0b3Igc2lnbmVkIHNob3J0IGEsIGIsIGM7CgogIGEgPSAoX192ZWN0b3Igc2lnbmVkIHNob3J0KXZlY19zcGxhdHMoX19tMSk7CiAgYiA9IChfX3ZlY3RvciBzaWduZWQgc2hvcnQpdmVjX3NwbGF0cyhfX20yKTsKICBjID0gdmVjX3N1YnMoYSwgYik7CiAgcmV0dXJuIChfX202NCkoKF9fdmVjdG9yIGxvbmcgbG9uZyljKVswXTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTY0CiAgICBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKICAgIF9tX3BzdWJzdyhfX202NCBfX20xLCBfX202NCBfX20yKSB7CiAgcmV0dXJuIF9tbV9zdWJzX3BpMTYoX19tMSwgX19tMik7Cn0KCi8qIFN1YnRyYWN0IHRoZSA4LWJpdCB2YWx1ZXMgaW4gTTIgZnJvbSB0aGUgOC1iaXQgdmFsdWVzIGluIE0xIHVzaW5nCiAgIHVuc2lnbmVkIHNhdHVyYXRpbmcgYXJpdGhtZXRpYy4gICovCmV4dGVybiBfX2lubGluZSBfX202NAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbW1fc3Vic19wdTgoX19tNjQgX19tMSwgX19tNjQgX19tMikgewogIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgYSwgYiwgYzsKCiAgYSA9IChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKXZlY19zcGxhdHMoX19tMSk7CiAgYiA9IChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKXZlY19zcGxhdHMoX19tMik7CiAgYyA9IHZlY19zdWJzKGEsIGIpOwogIHJldHVybiAoX19tNjQpKChfX3ZlY3RvciBsb25nIGxvbmcpYylbMF07Cn0KCmV4dGVybiBfX2lubGluZSBfX202NAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbV9wc3VidXNiKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpIHsKICByZXR1cm4gX21tX3N1YnNfcHU4KF9fbTEsIF9fbTIpOwp9CgovKiBTdWJ0cmFjdCB0aGUgMTYtYml0IHZhbHVlcyBpbiBNMiBmcm9tIHRoZSAxNi1iaXQgdmFsdWVzIGluIE0xIHVzaW5nCiAgIHVuc2lnbmVkIHNhdHVyYXRpbmcgYXJpdGhtZXRpYy4gICovCmV4dGVybiBfX2lubGluZSBfX202NAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbW1fc3Vic19wdTE2KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpIHsKICBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBhLCBiLCBjOwoKICBhID0gKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KXZlY19zcGxhdHMoX19tMSk7CiAgYiA9IChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCl2ZWNfc3BsYXRzKF9fbTIpOwogIGMgPSB2ZWNfc3VicyhhLCBiKTsKICByZXR1cm4gKF9fbTY0KSgoX192ZWN0b3IgbG9uZyBsb25nKWMpWzBdOwp9CgpleHRlcm4gX19pbmxpbmUgX19tNjQKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21fcHN1YnVzdyhfX202NCBfX20xLCBfX202NCBfX20yKSB7CiAgcmV0dXJuIF9tbV9zdWJzX3B1MTYoX19tMSwgX19tMik7Cn0KCi8qIE11bHRpcGx5IGZvdXIgMTYtYml0IHZhbHVlcyBpbiBNMSBieSBmb3VyIDE2LWJpdCB2YWx1ZXMgaW4gTTIgcHJvZHVjaW5nCiAgIGZvdXIgMzItYml0IGludGVybWVkaWF0ZSByZXN1bHRzLCB3aGljaCBhcmUgdGhlbiBzdW1tZWQgYnkgcGFpcnMgdG8KICAgcHJvZHVjZSB0d28gMzItYml0IHJlc3VsdHMuICAqLwpleHRlcm4gX19pbmxpbmUgX19tNjQKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21tX21hZGRfcGkxNihfX202NCBfX20xLCBfX202NCBfX20yKSB7CiAgX192ZWN0b3Igc2lnbmVkIHNob3J0IGEsIGI7CiAgX192ZWN0b3Igc2lnbmVkIGludCBjOwogIF9fdmVjdG9yIHNpZ25lZCBpbnQgemVybyA9IHswLCAwLCAwLCAwfTsKCiAgYSA9IChfX3ZlY3RvciBzaWduZWQgc2hvcnQpdmVjX3NwbGF0cyhfX20xKTsKICBiID0gKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCl2ZWNfc3BsYXRzKF9fbTIpOwogIGMgPSB2ZWNfdm1zdW1zaG0oYSwgYiwgemVybyk7CiAgcmV0dXJuIChfX202NCkoKF9fdmVjdG9yIGxvbmcgbG9uZyljKVswXTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTY0CiAgICBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKICAgIF9tX3BtYWRkd2QoX19tNjQgX19tMSwgX19tNjQgX19tMikgewogIHJldHVybiBfbW1fbWFkZF9waTE2KF9fbTEsIF9fbTIpOwp9Ci8qIE11bHRpcGx5IGZvdXIgc2lnbmVkIDE2LWJpdCB2YWx1ZXMgaW4gTTEgYnkgZm91ciBzaWduZWQgMTYtYml0IHZhbHVlcyBpbgogICBNMiBhbmQgcHJvZHVjZSB0aGUgaGlnaCAxNiBiaXRzIG9mIHRoZSAzMi1iaXQgcmVzdWx0cy4gICovCmV4dGVybiBfX2lubGluZSBfX202NAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbW1fbXVsaGlfcGkxNihfX202NCBfX20xLCBfX202NCBfX20yKSB7CiAgX192ZWN0b3Igc2lnbmVkIHNob3J0IGEsIGI7CiAgX192ZWN0b3Igc2lnbmVkIHNob3J0IGM7CiAgX192ZWN0b3Igc2lnbmVkIGludCB3MCwgdzE7CiAgX192ZWN0b3IgdW5zaWduZWQgY2hhciB4Zm9ybTEgPSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogICAgICAweDAyLCAweDAzLCAweDEyLCAweDEzLCAweDA2LCAweDA3LCAweDE2LCAweDE3LCAweDBBLAogICAgICAweDBCLCAweDFBLCAweDFCLCAweDBFLCAweDBGLCAweDFFLCAweDFGCiNlbHNlCiAgICAgIDB4MDAsIDB4MDEsIDB4MTAsIDB4MTEsIDB4MDQsIDB4MDUsIDB4MTQsIDB4MTUsIDB4MDAsCiAgICAgIDB4MDEsIDB4MTAsIDB4MTEsIDB4MDQsIDB4MDUsIDB4MTQsIDB4MTUKI2VuZGlmCiAgfTsKCiAgYSA9IChfX3ZlY3RvciBzaWduZWQgc2hvcnQpdmVjX3NwbGF0cyhfX20xKTsKICBiID0gKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCl2ZWNfc3BsYXRzKF9fbTIpOwoKICB3MCA9IHZlY192bXVsZXNoKGEsIGIpOwogIHcxID0gdmVjX3ZtdWxvc2goYSwgYik7CiAgYyA9IChfX3ZlY3RvciBzaWduZWQgc2hvcnQpdmVjX3Blcm0odzAsIHcxLCB4Zm9ybTEpOwoKICByZXR1cm4gKF9fbTY0KSgoX192ZWN0b3IgbG9uZyBsb25nKWMpWzBdOwp9CgpleHRlcm4gX19pbmxpbmUgX19tNjQKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21fcG11bGh3KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpIHsKICByZXR1cm4gX21tX211bGhpX3BpMTYoX19tMSwgX19tMik7Cn0KCi8qIE11bHRpcGx5IGZvdXIgMTYtYml0IHZhbHVlcyBpbiBNMSBieSBmb3VyIDE2LWJpdCB2YWx1ZXMgaW4gTTIgYW5kIHByb2R1Y2UKICAgdGhlIGxvdyAxNiBiaXRzIG9mIHRoZSByZXN1bHRzLiAgKi8KZXh0ZXJuIF9faW5saW5lIF9fbTY0CiAgICBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKICAgIF9tbV9tdWxsb19waTE2KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpIHsKICBfX3ZlY3RvciBzaWduZWQgc2hvcnQgYSwgYiwgYzsKCiAgYSA9IChfX3ZlY3RvciBzaWduZWQgc2hvcnQpdmVjX3NwbGF0cyhfX20xKTsKICBiID0gKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCl2ZWNfc3BsYXRzKF9fbTIpOwogIGMgPSBhICogYjsKICByZXR1cm4gKF9fbTY0KSgoX192ZWN0b3IgbG9uZyBsb25nKWMpWzBdOwp9CgpleHRlcm4gX19pbmxpbmUgX19tNjQKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21fcG11bGx3KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpIHsKICByZXR1cm4gX21tX211bGxvX3BpMTYoX19tMSwgX19tMik7Cn0KCi8qIFNoaWZ0IGZvdXIgMTYtYml0IHZhbHVlcyBpbiBNIGxlZnQgYnkgQ09VTlQuICAqLwpleHRlcm4gX19pbmxpbmUgX19tNjQKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21tX3NsbF9waTE2KF9fbTY0IF9fbSwgX19tNjQgX19jb3VudCkgewogIF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBtLCByOwogIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IGM7CgogIGlmIChfX2NvdW50IDw9IDE1KSB7CiAgICBtID0gKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCl2ZWNfc3BsYXRzKF9fbSk7CiAgICBjID0gKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KXZlY19zcGxhdHMoKHVuc2lnbmVkIHNob3J0KV9fY291bnQpOwogICAgciA9IHZlY19zbChtLCAoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpYyk7CiAgICByZXR1cm4gKF9fbTY0KSgoX192ZWN0b3IgbG9uZyBsb25nKXIpWzBdOwogIH0gZWxzZQogICAgcmV0dXJuICgwKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTY0CiAgICBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKICAgIF9tX3BzbGx3KF9fbTY0IF9fbSwgX19tNjQgX19jb3VudCkgewogIHJldHVybiBfbW1fc2xsX3BpMTYoX19tLCBfX2NvdW50KTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTY0CiAgICBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKICAgIF9tbV9zbGxpX3BpMTYoX19tNjQgX19tLCBpbnQgX19jb3VudCkgewogIC8qIFByb21vdGUgaW50IHRvIGxvbmcgdGhlbiBpbnZva2UgbW1fc2xsX3BpMTYuICAqLwogIHJldHVybiBfbW1fc2xsX3BpMTYoX19tLCBfX2NvdW50KTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTY0CiAgICBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKICAgIF9tX3BzbGx3aShfX202NCBfX20sIGludCBfX2NvdW50KSB7CiAgcmV0dXJuIF9tbV9zbGxpX3BpMTYoX19tLCBfX2NvdW50KTsKfQoKLyogU2hpZnQgdHdvIDMyLWJpdCB2YWx1ZXMgaW4gTSBsZWZ0IGJ5IENPVU5ULiAgKi8KZXh0ZXJuIF9faW5saW5lIF9fbTY0CiAgICBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKICAgIF9tbV9zbGxfcGkzMihfX202NCBfX20sIF9fbTY0IF9fY291bnQpIHsKICBfX202NF91bmlvbiBtLCByZXM7CgogIG0uYXNfbTY0ID0gX19tOwoKICByZXMuYXNfaW50WzBdID0gbS5hc19pbnRbMF0gPDwgX19jb3VudDsKICByZXMuYXNfaW50WzFdID0gbS5hc19pbnRbMV0gPDwgX19jb3VudDsKICByZXR1cm4gKHJlcy5hc19tNjQpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tNjQKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21fcHNsbGQoX19tNjQgX19tLCBfX202NCBfX2NvdW50KSB7CiAgcmV0dXJuIF9tbV9zbGxfcGkzMihfX20sIF9fY291bnQpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tNjQKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21tX3NsbGlfcGkzMihfX202NCBfX20sIGludCBfX2NvdW50KSB7CiAgLyogUHJvbW90ZSBpbnQgdG8gbG9uZyB0aGVuIGludm9rZSBtbV9zbGxfcGkzMi4gICovCiAgcmV0dXJuIF9tbV9zbGxfcGkzMihfX20sIF9fY291bnQpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tNjQKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21fcHNsbGRpKF9fbTY0IF9fbSwgaW50IF9fY291bnQpIHsKICByZXR1cm4gX21tX3NsbGlfcGkzMihfX20sIF9fY291bnQpOwp9CgovKiBTaGlmdCBmb3VyIDE2LWJpdCB2YWx1ZXMgaW4gTSByaWdodCBieSBDT1VOVDsgc2hpZnQgaW4gdGhlIHNpZ24gYml0LiAgKi8KZXh0ZXJuIF9faW5saW5lIF9fbTY0CiAgICBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKICAgIF9tbV9zcmFfcGkxNihfX202NCBfX20sIF9fbTY0IF9fY291bnQpIHsKICBfX3ZlY3RvciBzaWduZWQgc2hvcnQgbSwgcjsKICBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBjOwoKICBpZiAoX19jb3VudCA8PSAxNSkgewogICAgbSA9IChfX3ZlY3RvciBzaWduZWQgc2hvcnQpdmVjX3NwbGF0cyhfX20pOwogICAgYyA9IChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCl2ZWNfc3BsYXRzKCh1bnNpZ25lZCBzaG9ydClfX2NvdW50KTsKICAgIHIgPSB2ZWNfc3JhKG0sIChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCljKTsKICAgIHJldHVybiAoX19tNjQpKChfX3ZlY3RvciBsb25nIGxvbmcpcilbMF07CiAgfSBlbHNlCiAgICByZXR1cm4gKDApOwp9CgpleHRlcm4gX19pbmxpbmUgX19tNjQKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21fcHNyYXcoX19tNjQgX19tLCBfX202NCBfX2NvdW50KSB7CiAgcmV0dXJuIF9tbV9zcmFfcGkxNihfX20sIF9fY291bnQpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tNjQKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21tX3NyYWlfcGkxNihfX202NCBfX20sIGludCBfX2NvdW50KSB7CiAgLyogUHJvbW90ZSBpbnQgdG8gbG9uZyB0aGVuIGludm9rZSBtbV9zcmFfcGkzMi4gICovCiAgcmV0dXJuIF9tbV9zcmFfcGkxNihfX20sIF9fY291bnQpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tNjQKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21fcHNyYXdpKF9fbTY0IF9fbSwgaW50IF9fY291bnQpIHsKICByZXR1cm4gX21tX3NyYWlfcGkxNihfX20sIF9fY291bnQpOwp9CgovKiBTaGlmdCB0d28gMzItYml0IHZhbHVlcyBpbiBNIHJpZ2h0IGJ5IENPVU5UOyBzaGlmdCBpbiB0aGUgc2lnbiBiaXQuICAqLwpleHRlcm4gX19pbmxpbmUgX19tNjQKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21tX3NyYV9waTMyKF9fbTY0IF9fbSwgX19tNjQgX19jb3VudCkgewogIF9fbTY0X3VuaW9uIG0sIHJlczsKCiAgbS5hc19tNjQgPSBfX207CgogIHJlcy5hc19pbnRbMF0gPSBtLmFzX2ludFswXSA+PiBfX2NvdW50OwogIHJlcy5hc19pbnRbMV0gPSBtLmFzX2ludFsxXSA+PiBfX2NvdW50OwogIHJldHVybiAocmVzLmFzX202NCk7Cn0KCmV4dGVybiBfX2lubGluZSBfX202NAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbV9wc3JhZChfX202NCBfX20sIF9fbTY0IF9fY291bnQpIHsKICByZXR1cm4gX21tX3NyYV9waTMyKF9fbSwgX19jb3VudCk7Cn0KCmV4dGVybiBfX2lubGluZSBfX202NAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbW1fc3JhaV9waTMyKF9fbTY0IF9fbSwgaW50IF9fY291bnQpIHsKICAvKiBQcm9tb3RlIGludCB0byBsb25nIHRoZW4gaW52b2tlIG1tX3NyYV9waTMyLiAgKi8KICByZXR1cm4gX21tX3NyYV9waTMyKF9fbSwgX19jb3VudCk7Cn0KCmV4dGVybiBfX2lubGluZSBfX202NAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbV9wc3JhZGkoX19tNjQgX19tLCBpbnQgX19jb3VudCkgewogIHJldHVybiBfbW1fc3JhaV9waTMyKF9fbSwgX19jb3VudCk7Cn0KCi8qIFNoaWZ0IGZvdXIgMTYtYml0IHZhbHVlcyBpbiBNIHJpZ2h0IGJ5IENPVU5UOyBzaGlmdCBpbiB6ZXJvcy4gICovCmV4dGVybiBfX2lubGluZSBfX202NAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbW1fc3JsX3BpMTYoX19tNjQgX19tLCBfX202NCBfX2NvdW50KSB7CiAgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgbSwgcjsKICBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBjOwoKICBpZiAoX19jb3VudCA8PSAxNSkgewogICAgbSA9IChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCl2ZWNfc3BsYXRzKF9fbSk7CiAgICBjID0gKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KXZlY19zcGxhdHMoKHVuc2lnbmVkIHNob3J0KV9fY291bnQpOwogICAgciA9IHZlY19zcihtLCAoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpYyk7CiAgICByZXR1cm4gKF9fbTY0KSgoX192ZWN0b3IgbG9uZyBsb25nKXIpWzBdOwogIH0gZWxzZQogICAgcmV0dXJuICgwKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTY0CiAgICBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKICAgIF9tX3Bzcmx3KF9fbTY0IF9fbSwgX19tNjQgX19jb3VudCkgewogIHJldHVybiBfbW1fc3JsX3BpMTYoX19tLCBfX2NvdW50KTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTY0CiAgICBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKICAgIF9tbV9zcmxpX3BpMTYoX19tNjQgX19tLCBpbnQgX19jb3VudCkgewogIC8qIFByb21vdGUgaW50IHRvIGxvbmcgdGhlbiBpbnZva2UgbW1fc3JhX3BpMzIuICAqLwogIHJldHVybiBfbW1fc3JsX3BpMTYoX19tLCBfX2NvdW50KTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTY0CiAgICBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKICAgIF9tX3Bzcmx3aShfX202NCBfX20sIGludCBfX2NvdW50KSB7CiAgcmV0dXJuIF9tbV9zcmxpX3BpMTYoX19tLCBfX2NvdW50KTsKfQoKLyogU2hpZnQgdHdvIDMyLWJpdCB2YWx1ZXMgaW4gTSByaWdodCBieSBDT1VOVDsgc2hpZnQgaW4gemVyb3MuICAqLwpleHRlcm4gX19pbmxpbmUgX19tNjQKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21tX3NybF9waTMyKF9fbTY0IF9fbSwgX19tNjQgX19jb3VudCkgewogIF9fbTY0X3VuaW9uIG0sIHJlczsKCiAgbS5hc19tNjQgPSBfX207CgogIHJlcy5hc19pbnRbMF0gPSAodW5zaWduZWQgaW50KW0uYXNfaW50WzBdID4+IF9fY291bnQ7CiAgcmVzLmFzX2ludFsxXSA9ICh1bnNpZ25lZCBpbnQpbS5hc19pbnRbMV0gPj4gX19jb3VudDsKICByZXR1cm4gKHJlcy5hc19tNjQpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tNjQKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21fcHNybGQoX19tNjQgX19tLCBfX202NCBfX2NvdW50KSB7CiAgcmV0dXJuIF9tbV9zcmxfcGkzMihfX20sIF9fY291bnQpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tNjQKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21tX3NybGlfcGkzMihfX202NCBfX20sIGludCBfX2NvdW50KSB7CiAgLyogUHJvbW90ZSBpbnQgdG8gbG9uZyB0aGVuIGludm9rZSBtbV9zcmxfcGkzMi4gICovCiAgcmV0dXJuIF9tbV9zcmxfcGkzMihfX20sIF9fY291bnQpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tNjQKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21fcHNybGRpKF9fbTY0IF9fbSwgaW50IF9fY291bnQpIHsKICByZXR1cm4gX21tX3NybGlfcGkzMihfX20sIF9fY291bnQpOwp9CiNlbmRpZiAvKiBfQVJDSF9QV1I4ICovCgovKiBDcmVhdGVzIGEgdmVjdG9yIG9mIHR3byAzMi1iaXQgdmFsdWVzOyBJMCBpcyBsZWFzdCBzaWduaWZpY2FudC4gICovCmV4dGVybiBfX2lubGluZSBfX202NAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbW1fc2V0X3BpMzIoaW50IF9faTEsIGludCBfX2kwKSB7CiAgX19tNjRfdW5pb24gcmVzOwoKICByZXMuYXNfaW50WzBdID0gX19pMDsKICByZXMuYXNfaW50WzFdID0gX19pMTsKICByZXR1cm4gKHJlcy5hc19tNjQpOwp9CgovKiBDcmVhdGVzIGEgdmVjdG9yIG9mIGZvdXIgMTYtYml0IHZhbHVlczsgVzAgaXMgbGVhc3Qgc2lnbmlmaWNhbnQuICAqLwpleHRlcm4gX19pbmxpbmUgX19tNjQKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21tX3NldF9waTE2KHNob3J0IF9fdzMsIHNob3J0IF9fdzIsIHNob3J0IF9fdzEsIHNob3J0IF9fdzApIHsKICBfX202NF91bmlvbiByZXM7CgogIHJlcy5hc19zaG9ydFswXSA9IF9fdzA7CiAgcmVzLmFzX3Nob3J0WzFdID0gX193MTsKICByZXMuYXNfc2hvcnRbMl0gPSBfX3cyOwogIHJlcy5hc19zaG9ydFszXSA9IF9fdzM7CiAgcmV0dXJuIChyZXMuYXNfbTY0KTsKfQoKLyogQ3JlYXRlcyBhIHZlY3RvciBvZiBlaWdodCA4LWJpdCB2YWx1ZXM7IEIwIGlzIGxlYXN0IHNpZ25pZmljYW50LiAgKi8KZXh0ZXJuIF9faW5saW5lIF9fbTY0CiAgICBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKICAgIF9tbV9zZXRfcGk4KGNoYXIgX19iNywgY2hhciBfX2I2LCBjaGFyIF9fYjUsIGNoYXIgX19iNCwgY2hhciBfX2IzLAogICAgICAgICAgICAgICAgY2hhciBfX2IyLCBjaGFyIF9fYjEsIGNoYXIgX19iMCkgewogIF9fbTY0X3VuaW9uIHJlczsKCiAgcmVzLmFzX2NoYXJbMF0gPSBfX2IwOwogIHJlcy5hc19jaGFyWzFdID0gX19iMTsKICByZXMuYXNfY2hhclsyXSA9IF9fYjI7CiAgcmVzLmFzX2NoYXJbM10gPSBfX2IzOwogIHJlcy5hc19jaGFyWzRdID0gX19iNDsKICByZXMuYXNfY2hhcls1XSA9IF9fYjU7CiAgcmVzLmFzX2NoYXJbNl0gPSBfX2I2OwogIHJlcy5hc19jaGFyWzddID0gX19iNzsKICByZXR1cm4gKHJlcy5hc19tNjQpOwp9CgovKiBTaW1pbGFyLCBidXQgd2l0aCB0aGUgYXJndW1lbnRzIGluIHJldmVyc2Ugb3JkZXIuICAqLwpleHRlcm4gX19pbmxpbmUgX19tNjQKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21tX3NldHJfcGkzMihpbnQgX19pMCwgaW50IF9faTEpIHsKICBfX202NF91bmlvbiByZXM7CgogIHJlcy5hc19pbnRbMF0gPSBfX2kwOwogIHJlcy5hc19pbnRbMV0gPSBfX2kxOwogIHJldHVybiAocmVzLmFzX202NCk7Cn0KCmV4dGVybiBfX2lubGluZSBfX202NAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbW1fc2V0cl9waTE2KHNob3J0IF9fdzAsIHNob3J0IF9fdzEsIHNob3J0IF9fdzIsIHNob3J0IF9fdzMpIHsKICByZXR1cm4gX21tX3NldF9waTE2KF9fdzMsIF9fdzIsIF9fdzEsIF9fdzApOwp9CgpleHRlcm4gX19pbmxpbmUgX19tNjQKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21tX3NldHJfcGk4KGNoYXIgX19iMCwgY2hhciBfX2IxLCBjaGFyIF9fYjIsIGNoYXIgX19iMywgY2hhciBfX2I0LAogICAgICAgICAgICAgICAgIGNoYXIgX19iNSwgY2hhciBfX2I2LCBjaGFyIF9fYjcpIHsKICByZXR1cm4gX21tX3NldF9waTgoX19iNywgX19iNiwgX19iNSwgX19iNCwgX19iMywgX19iMiwgX19iMSwgX19iMCk7Cn0KCi8qIENyZWF0ZXMgYSB2ZWN0b3Igb2YgdHdvIDMyLWJpdCB2YWx1ZXMsIGJvdGggZWxlbWVudHMgY29udGFpbmluZyBJLiAgKi8KZXh0ZXJuIF9faW5saW5lIF9fbTY0CiAgICBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKICAgIF9tbV9zZXQxX3BpMzIoaW50IF9faSkgewogIF9fbTY0X3VuaW9uIHJlczsKCiAgcmVzLmFzX2ludFswXSA9IF9faTsKICByZXMuYXNfaW50WzFdID0gX19pOwogIHJldHVybiAocmVzLmFzX202NCk7Cn0KCi8qIENyZWF0ZXMgYSB2ZWN0b3Igb2YgZm91ciAxNi1iaXQgdmFsdWVzLCBhbGwgZWxlbWVudHMgY29udGFpbmluZyBXLiAgKi8KZXh0ZXJuIF9faW5saW5lIF9fbTY0CiAgICBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKICAgIF9tbV9zZXQxX3BpMTYoc2hvcnQgX193KSB7CiNpZiBfQVJDSF9QV1I5CiAgX192ZWN0b3Igc2lnbmVkIHNob3J0IHc7CgogIHcgPSAoX192ZWN0b3Igc2lnbmVkIHNob3J0KXZlY19zcGxhdHMoX193KTsKICByZXR1cm4gKF9fbTY0KSgoX192ZWN0b3IgbG9uZyBsb25nKXcpWzBdOwojZWxzZQogIF9fbTY0X3VuaW9uIHJlczsKCiAgcmVzLmFzX3Nob3J0WzBdID0gX193OwogIHJlcy5hc19zaG9ydFsxXSA9IF9fdzsKICByZXMuYXNfc2hvcnRbMl0gPSBfX3c7CiAgcmVzLmFzX3Nob3J0WzNdID0gX193OwogIHJldHVybiAocmVzLmFzX202NCk7CiNlbmRpZgp9CgovKiBDcmVhdGVzIGEgdmVjdG9yIG9mIGVpZ2h0IDgtYml0IHZhbHVlcywgYWxsIGVsZW1lbnRzIGNvbnRhaW5pbmcgQi4gICovCmV4dGVybiBfX2lubGluZSBfX202NAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbW1fc2V0MV9waTgoc2lnbmVkIGNoYXIgX19iKSB7CiNpZiBfQVJDSF9QV1I4CiAgX192ZWN0b3Igc2lnbmVkIGNoYXIgYjsKCiAgYiA9IChfX3ZlY3RvciBzaWduZWQgY2hhcil2ZWNfc3BsYXRzKF9fYik7CiAgcmV0dXJuIChfX202NCkoKF9fdmVjdG9yIGxvbmcgbG9uZyliKVswXTsKI2Vsc2UKICBfX202NF91bmlvbiByZXM7CgogIHJlcy5hc19jaGFyWzBdID0gX19iOwogIHJlcy5hc19jaGFyWzFdID0gX19iOwogIHJlcy5hc19jaGFyWzJdID0gX19iOwogIHJlcy5hc19jaGFyWzNdID0gX19iOwogIHJlcy5hc19jaGFyWzRdID0gX19iOwogIHJlcy5hc19jaGFyWzVdID0gX19iOwogIHJlcy5hc19jaGFyWzZdID0gX19iOwogIHJlcy5hc19jaGFyWzddID0gX19iOwogIHJldHVybiAocmVzLmFzX202NCk7CiNlbmRpZgp9CgojZWxzZQojaW5jbHVkZV9uZXh0IDxtbWludHJpbi5oPgojZW5kaWYgLyogZGVmaW5lZChfX3BwYzY0X18pICYmIChkZWZpbmVkKF9fbGludXhfXykgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykpICAgXAogICAgICAgICovCgojZW5kaWYgLyogX01NSU5UUklOX0hfSU5DTFVERUQgKi8KAHNhbml0aXplci9jb21tb25faW50ZXJmYWNlX2RlZnMuaAAsIDE9AEVycm9yIHBhcnNpbmcgJwAnAF0AcmVxdWVzdGVkIGdyb3VwIABccwBbOl5wcmludDpdAGFsdG1hdGNoIC0+ICVkIHwgJWQAUnVuU3RhdGVPbkJ5dGVVbmxvY2tlZCBmYWlsZWQgYWZ0ZXIgUmVzZXQAKCVkLD8pAG5qb2JfID0gAFNpbXBsaWZ5IGNhc2Ugbm90IGhhbmRsZWQ6IAB7JWR9AFxmAEVneXB0aWFuX0hpZXJvZ2x5cGhzAE5ld2EAKioqICVzIHJlY2VpdmVkIGF0IHRpbWU9JWxkJXMgKioqCgAlczogZmFpbGVkIHRvIHJlYWQgcHJvZ3JhbSBoZWFkZXIgJWQAaW5kZXggPCBHZXROdW1TeW1ib2xzKCkAKGFub255bW91cyBuYW1lc3BhY2UpAG1pAG9yAFJlcXVlc3RlZCBzdWZmaXggc2l6ZSAAZWRnZSAhPSBudWxscHRyACIAdGhyZWFkIHNob3VsZCBob2xkIGF0IGxlYXN0IGEgcmVhZCBsb2NrIG9uIE11dGV4ICVwICVzACAlcABXYWl0IG9uIABGdXRleCBvcGVyYXRpb24gZmFpbGVkIHdpdGggZXJyb3IgJWQKAFVUQzAAZXh0ZXJuYWwvYm9yaW5nc3NsL3NyYy9jcnlwdG8vZmlwc21vZHVsZS9ibi9ibi5jAGV4dGVybmFsL2JvcmluZ3NzbC9zcmMvY3J5cHRvL2ZpcHNtb2R1bGUvYm4vcmFuZG9tLmMAUC0yMjQATklTVCBQLTI1NgBOQQBreXRoZS9wcm90by9jeHgucHJvdG8ALVcobm8tKT8oZXJyb3I9KT9jb3ZlcmFnZS1taXNtYXRjaHwtVyhuby0pPyhlcnJvcj0pP2ZyYW1lLWxhcmdlci10aGFuLip8LVcobm8tKT8oZXJyb3I9KT9tYXliZS11bmluaXRpYWxpemVkfC1XKG5vLSk/KGVycm9yPSk/dGhyZWFkLXNhZmV0eXwtVyhuby0pPyhlcnJvcj0pP3RocmVhZC11bnN1cHBvcnRlZC1sb2NrLW5hbWV8LVcobm8tKT8oZXJyb3I9KT91bnVzZWQtYnV0LXNldC1wYXJhbWV0ZXJ8LVcobm8tKT8oZXJyb3I9KT91bnVzZWQtYnV0LXNldC12YXJpYWJsZXwtVyhuby0pPyhlcnJvcj0pP3VudXNlZC1sb2NhbC10eXBlZGVmc3wtZW5hYmxlLWxpYnN0ZGN4eC1kZWJ1Z3wtZihuby0pP2FsaWduLWZ1bmN0aW9ucy4qfC1mKG5vLSk/YXN5bmNocm9ub3VzLXVud2luZC10YWJsZXN8LWYobm8tKT9idWlsdGluLS4qfC1mKG5vLSk/Y2FsbGdyYXBoLXByb2ZpbGVzLXNlY3Rpb25zfC1mKG5vLSk/ZmxvYXQtc3RvcmV8LWYobm8tKT9jYW5vbmljYWwtc3lzdGVtLWhlYWRlcnN8LWYobm8tKT9lbGltaW5hdGUtdW51c2VkLWRlYnVnLXR5cGVzfC1mKG5vLSk/Z2NzZXwtZihuby0pP2lkZW50fC1mKG5vLSk/aW5saW5lLXNtYWxsLWZ1bmN0aW9uc3wtZihuby0pP2l2b3B0c3wtZihuby0pP25vbi1jYWxsLWV4Y2VwdGlvbnN8LWYobm8tKT9vcHRpbWl6ZS1sb2NhbGl0eXwtZihuby0pP3Blcm1pc3NpdmV8LWYobm8tKT9wbHVnaW4tYXJnLS4qfC1mKG5vLSk/cGx1Z2luPS4qfC1mKG5vLSk/cHJlZmV0Y2gtbG9vcC1hcnJheXN8LWYobm8tKT9wcm9maWxlLWNvcnJlY3Rpb258LWYobm8tKT9wcm9maWxlLWRpci4qfC1mKG5vLSk/cHJvZmlsZS1nZW5lcmF0ZS4qfC1mKG5vLSk/cHJvZmlsZS11c2UuKnwtZihuby0pP3Byb2ZpbGUtcmV1c2VkaXN0fC1mKG5vLSk/cHJvZmlsZS12YWx1ZXN8LWYobm8tKT9yZWNvcmQtY29tcGlsYXRpb24taW5mby1pbi1lbGZ8LWYobm8tKT9yZW9yZGVyLWZ1bmN0aW9ucz0uKnwtZihuby0pP3JvdW5kaW5nLW1hdGh8LWYobm8tKT9yaXBhfC1mKG5vLSk/cmlwYS1kaXNhbGxvdy1hc20tbW9kdWxlc3wtZihuby0pP3Nhbml0aXplLip8LWYobm8tKT9zZWV8LWYobm8tKT9zdHJpY3QtZW51bS1wcmVjaXNpb258LWYobm8tKT90cmFjZXJ8LWYobm8tKT90cmVlLS4qfC1mKG5vLSk/dW5yb2xsLWFsbC1sb29wc3wtZihuby0pP3dhcm4taW5jb21wbGV0ZS1wYXR0ZXJuc3wtZyg6bGluZXMsc291cmNlfGdkYil8LW0obm8tKT9hbGlnbi1kb3VibGV8LW0obm8tKT9mcG1hdGg9Lip8LW0obm8tKT9jbGR8LW0obm8tKT9yZWQtem9uZXwtLXBhcmFtPS4qfC1tY3B1PS4qfC1tYXBjcy1mcmFtZXwtcGFzcy1leGl0LWNvZGVzAC1NW0ZUUV0ALWFuYWx5emVyLWNvbmZpZwBeKAA6IG1hcHBlZCB0byAAbm90X2ZyZWVzdGFuZGluZwAwAF9fY2xhbmdfY3VkYV9jb21wbGV4X2J1aWx0aW5zLmgALyo9PT0tLS0tIGFybV9jZGUuaCAtIEFSTSBDREUgaW50cmluc2ljcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKgogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwoKI2lmbmRlZiBfX0FSTV9DREVfSAojZGVmaW5lIF9fQVJNX0NERV9ICgojaWYgIV9fQVJNX0ZFQVRVUkVfQ0RFCiNlcnJvciAiQ0RFIHN1cHBvcnQgbm90IGVuYWJsZWQiCiNlbmRpZgoKI2luY2x1ZGUgPHN0ZGludC5oPgoKI2lmZGVmIF9fY3BsdXNwbHVzCmV4dGVybiAiQyIgewojZW5kaWYKCnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfY3gxKSkpCnVpbnQzMl90IF9fYXJtX2N4MShpbnQsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV9jeDFhKSkpCnVpbnQzMl90IF9fYXJtX2N4MWEoaW50LCB1aW50MzJfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX2N4MWQpKSkKdWludDY0X3QgX19hcm1fY3gxZChpbnQsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV9jeDFkYSkpKQp1aW50NjRfdCBfX2FybV9jeDFkYShpbnQsIHVpbnQ2NF90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfY3gyKSkpCnVpbnQzMl90IF9fYXJtX2N4MihpbnQsIHVpbnQzMl90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfY3gyYSkpKQp1aW50MzJfdCBfX2FybV9jeDJhKGludCwgdWludDMyX3QsIHVpbnQzMl90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfY3gyZCkpKQp1aW50NjRfdCBfX2FybV9jeDJkKGludCwgdWludDMyX3QsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV9jeDJkYSkpKQp1aW50NjRfdCBfX2FybV9jeDJkYShpbnQsIHVpbnQ2NF90LCB1aW50MzJfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX2N4MykpKQp1aW50MzJfdCBfX2FybV9jeDMoaW50LCB1aW50MzJfdCwgdWludDMyX3QsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV9jeDNhKSkpCnVpbnQzMl90IF9fYXJtX2N4M2EoaW50LCB1aW50MzJfdCwgdWludDMyX3QsIHVpbnQzMl90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfY3gzZCkpKQp1aW50NjRfdCBfX2FybV9jeDNkKGludCwgdWludDMyX3QsIHVpbnQzMl90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfY3gzZGEpKSkKdWludDY0X3QgX19hcm1fY3gzZGEoaW50LCB1aW50NjRfdCwgdWludDMyX3QsIHVpbnQzMl90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4MV91MzIpKSkKdWludDMyX3QgX19hcm1fdmN4MV91MzIoaW50LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4MWFfdTMyKSkpCnVpbnQzMl90IF9fYXJtX3ZjeDFhX3UzMihpbnQsIHVpbnQzMl90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4MWRfdTY0KSkpCnVpbnQ2NF90IF9fYXJtX3ZjeDFkX3U2NChpbnQsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gxZGFfdTY0KSkpCnVpbnQ2NF90IF9fYXJtX3ZjeDFkYV91NjQoaW50LCB1aW50NjRfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDJfdTMyKSkpCnVpbnQzMl90IF9fYXJtX3ZjeDJfdTMyKGludCwgdWludDMyX3QsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gyYV91MzIpKSkKdWludDMyX3QgX19hcm1fdmN4MmFfdTMyKGludCwgdWludDMyX3QsIHVpbnQzMl90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4MmRfdTY0KSkpCnVpbnQ2NF90IF9fYXJtX3ZjeDJkX3U2NChpbnQsIHVpbnQ2NF90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4MmRhX3U2NCkpKQp1aW50NjRfdCBfX2FybV92Y3gyZGFfdTY0KGludCwgdWludDY0X3QsIHVpbnQ2NF90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4M191MzIpKSkKdWludDMyX3QgX19hcm1fdmN4M191MzIoaW50LCB1aW50MzJfdCwgdWludDMyX3QsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gzYV91MzIpKSkKdWludDMyX3QgX19hcm1fdmN4M2FfdTMyKGludCwgdWludDMyX3QsIHVpbnQzMl90LCB1aW50MzJfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDNkX3U2NCkpKQp1aW50NjRfdCBfX2FybV92Y3gzZF91NjQoaW50LCB1aW50NjRfdCwgdWludDY0X3QsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gzZGFfdTY0KSkpCnVpbnQ2NF90IF9fYXJtX3ZjeDNkYV91NjQoaW50LCB1aW50NjRfdCwgdWludDY0X3QsIHVpbnQ2NF90LCB1aW50MzJfdCk7CgojaWYgX19BUk1fRkVBVFVSRV9NVkUKCnR5cGVkZWYgdWludDE2X3QgbXZlX3ByZWQxNl90Owp0eXBlZGVmIF9fYXR0cmlidXRlX18oKF9fbmVvbl92ZWN0b3JfdHlwZV9fKDgpLCBfX2NsYW5nX2FybV9tdmVfc3RyaWN0X3BvbHltb3JwaGlzbSkpIGludDE2X3QgaW50MTZ4OF90Owp0eXBlZGVmIF9fYXR0cmlidXRlX18oKF9fbmVvbl92ZWN0b3JfdHlwZV9fKDQpLCBfX2NsYW5nX2FybV9tdmVfc3RyaWN0X3BvbHltb3JwaGlzbSkpIGludDMyX3QgaW50MzJ4NF90Owp0eXBlZGVmIF9fYXR0cmlidXRlX18oKF9fbmVvbl92ZWN0b3JfdHlwZV9fKDIpLCBfX2NsYW5nX2FybV9tdmVfc3RyaWN0X3BvbHltb3JwaGlzbSkpIGludDY0X3QgaW50NjR4Ml90Owp0eXBlZGVmIF9fYXR0cmlidXRlX18oKF9fbmVvbl92ZWN0b3JfdHlwZV9fKDE2KSwgX19jbGFuZ19hcm1fbXZlX3N0cmljdF9wb2x5bW9ycGhpc20pKSBpbnQ4X3QgaW50OHgxNl90Owp0eXBlZGVmIF9fYXR0cmlidXRlX18oKF9fbmVvbl92ZWN0b3JfdHlwZV9fKDgpLCBfX2NsYW5nX2FybV9tdmVfc3RyaWN0X3BvbHltb3JwaGlzbSkpIHVpbnQxNl90IHVpbnQxNng4X3Q7CnR5cGVkZWYgX19hdHRyaWJ1dGVfXygoX19uZW9uX3ZlY3Rvcl90eXBlX18oNCksIF9fY2xhbmdfYXJtX212ZV9zdHJpY3RfcG9seW1vcnBoaXNtKSkgdWludDMyX3QgdWludDMyeDRfdDsKdHlwZWRlZiBfX2F0dHJpYnV0ZV9fKChfX25lb25fdmVjdG9yX3R5cGVfXygyKSwgX19jbGFuZ19hcm1fbXZlX3N0cmljdF9wb2x5bW9ycGhpc20pKSB1aW50NjRfdCB1aW50NjR4Ml90Owp0eXBlZGVmIF9fYXR0cmlidXRlX18oKF9fbmVvbl92ZWN0b3JfdHlwZV9fKDE2KSwgX19jbGFuZ19hcm1fbXZlX3N0cmljdF9wb2x5bW9ycGhpc20pKSB1aW50OF90IHVpbnQ4eDE2X3Q7CgpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDFxX21fczE2KSkpCmludDE2eDhfdCBfX2FybV92Y3gxcV9tKGludCwgaW50MTZ4OF90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gxcV9tX3MzMikpKQppbnQzMng0X3QgX19hcm1fdmN4MXFfbShpbnQsIGludDMyeDRfdCwgdWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4MXFfbV9zNjQpKSkKaW50NjR4Ml90IF9fYXJtX3ZjeDFxX20oaW50LCBpbnQ2NHgyX3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDFxX21fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZjeDFxX20oaW50LCBpbnQ4eDE2X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDFxX21fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmN4MXFfbShpbnQsIHVpbnQxNng4X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDFxX21fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmN4MXFfbShpbnQsIHVpbnQzMng0X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDFxX21fdTY0KSkpCnVpbnQ2NHgyX3QgX19hcm1fdmN4MXFfbShpbnQsIHVpbnQ2NHgyX3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDFxX21fdTgpKSkKdWludDh4MTZfdCBfX2FybV92Y3gxcV9tKGludCwgdWludDh4MTZfdCwgdWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4MXFfdTgpKSkKdWludDh4MTZfdCBfX2FybV92Y3gxcV91OChpbnQsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gxcWFfbV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZjeDFxYV9tKGludCwgaW50MTZ4OF90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gxcWFfbV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZjeDFxYV9tKGludCwgaW50MzJ4NF90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gxcWFfbV9zNjQpKSkKaW50NjR4Ml90IF9fYXJtX3ZjeDFxYV9tKGludCwgaW50NjR4Ml90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gxcWFfbV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdmN4MXFhX20oaW50LCBpbnQ4eDE2X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDFxYV9tX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZjeDFxYV9tKGludCwgdWludDE2eDhfdCwgdWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4MXFhX21fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmN4MXFhX20oaW50LCB1aW50MzJ4NF90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gxcWFfbV91NjQpKSkKdWludDY0eDJfdCBfX2FybV92Y3gxcWFfbShpbnQsIHVpbnQ2NHgyX3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDFxYV9tX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmN4MXFhX20oaW50LCB1aW50OHgxNl90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gxcWFfczE2KSkpCmludDE2eDhfdCBfX2FybV92Y3gxcWEoaW50LCBpbnQxNng4X3QsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gxcWFfczMyKSkpCmludDMyeDRfdCBfX2FybV92Y3gxcWEoaW50LCBpbnQzMng0X3QsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gxcWFfczY0KSkpCmludDY0eDJfdCBfX2FybV92Y3gxcWEoaW50LCBpbnQ2NHgyX3QsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gxcWFfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZjeDFxYShpbnQsIGludDh4MTZfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDFxYV91MTYpKSkKdWludDE2eDhfdCBfX2FybV92Y3gxcWEoaW50LCB1aW50MTZ4OF90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4MXFhX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZjeDFxYShpbnQsIHVpbnQzMng0X3QsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gxcWFfdTY0KSkpCnVpbnQ2NHgyX3QgX19hcm1fdmN4MXFhKGludCwgdWludDY0eDJfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDFxYV91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZjeDFxYShpbnQsIHVpbnQ4eDE2X3QsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gycV9tX2ltcGxfczE2KSkpCmludDE2eDhfdCBfX2FybV92Y3gycV9tX2ltcGwoaW50LCBpbnQxNng4X3QsIHVpbnQ4eDE2X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDJxX21faW1wbF9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZjeDJxX21faW1wbChpbnQsIGludDMyeDRfdCwgdWludDh4MTZfdCwgdWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4MnFfbV9pbXBsX3M2NCkpKQppbnQ2NHgyX3QgX19hcm1fdmN4MnFfbV9pbXBsKGludCwgaW50NjR4Ml90LCB1aW50OHgxNl90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gycV9tX2ltcGxfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZjeDJxX21faW1wbChpbnQsIGludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4MnFfbV9pbXBsX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZjeDJxX21faW1wbChpbnQsIHVpbnQxNng4X3QsIHVpbnQ4eDE2X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDJxX21faW1wbF91MzIpKSkKdWludDMyeDRfdCBfX2FybV92Y3gycV9tX2ltcGwoaW50LCB1aW50MzJ4NF90LCB1aW50OHgxNl90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gycV9tX2ltcGxfdTY0KSkpCnVpbnQ2NHgyX3QgX19hcm1fdmN4MnFfbV9pbXBsKGludCwgdWludDY0eDJfdCwgdWludDh4MTZfdCwgdWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4MnFfbV9pbXBsX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmN4MnFfbV9pbXBsKGludCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4MnFfczE2KSkpCmludDE2eDhfdCBfX2FybV92Y3gycShpbnQsIGludDE2eDhfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDJxX3MzMikpKQppbnQzMng0X3QgX19hcm1fdmN4MnEoaW50LCBpbnQzMng0X3QsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gycV9zNjQpKSkKaW50NjR4Ml90IF9fYXJtX3ZjeDJxKGludCwgaW50NjR4Ml90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4MnFfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZjeDJxKGludCwgaW50OHgxNl90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4MnFfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmN4MnEoaW50LCB1aW50MTZ4OF90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4MnFfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmN4MnEoaW50LCB1aW50MzJ4NF90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4MnFfdTY0KSkpCnVpbnQ2NHgyX3QgX19hcm1fdmN4MnEoaW50LCB1aW50NjR4Ml90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4MnFfdTgpKSkKdWludDh4MTZfdCBfX2FybV92Y3gycShpbnQsIHVpbnQ4eDE2X3QsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gycV91OF9zMTYpKSkKdWludDh4MTZfdCBfX2FybV92Y3gycV91OChpbnQsIGludDE2eDhfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDJxX3U4X3MzMikpKQp1aW50OHgxNl90IF9fYXJtX3ZjeDJxX3U4KGludCwgaW50MzJ4NF90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4MnFfdThfczY0KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmN4MnFfdTgoaW50LCBpbnQ2NHgyX3QsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gycV91OF9zOCkpKQp1aW50OHgxNl90IF9fYXJtX3ZjeDJxX3U4KGludCwgaW50OHgxNl90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4MnFfdThfdTE2KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmN4MnFfdTgoaW50LCB1aW50MTZ4OF90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4MnFfdThfdTMyKSkpCnVpbnQ4eDE2X3QgX19hcm1fdmN4MnFfdTgoaW50LCB1aW50MzJ4NF90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4MnFfdThfdTY0KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmN4MnFfdTgoaW50LCB1aW50NjR4Ml90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4MnFfdThfdTgpKSkKdWludDh4MTZfdCBfX2FybV92Y3gycV91OChpbnQsIHVpbnQ4eDE2X3QsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gycWFfaW1wbF9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZjeDJxYV9pbXBsKGludCwgaW50MTZ4OF90LCB1aW50OHgxNl90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4MnFhX2ltcGxfczMyKSkpCmludDMyeDRfdCBfX2FybV92Y3gycWFfaW1wbChpbnQsIGludDMyeDRfdCwgdWludDh4MTZfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDJxYV9pbXBsX3M2NCkpKQppbnQ2NHgyX3QgX19hcm1fdmN4MnFhX2ltcGwoaW50LCBpbnQ2NHgyX3QsIHVpbnQ4eDE2X3QsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gycWFfaW1wbF9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdmN4MnFhX2ltcGwoaW50LCBpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gycWFfaW1wbF91MTYpKSkKdWludDE2eDhfdCBfX2FybV92Y3gycWFfaW1wbChpbnQsIHVpbnQxNng4X3QsIHVpbnQ4eDE2X3QsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gycWFfaW1wbF91MzIpKSkKdWludDMyeDRfdCBfX2FybV92Y3gycWFfaW1wbChpbnQsIHVpbnQzMng0X3QsIHVpbnQ4eDE2X3QsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gycWFfaW1wbF91NjQpKSkKdWludDY0eDJfdCBfX2FybV92Y3gycWFfaW1wbChpbnQsIHVpbnQ2NHgyX3QsIHVpbnQ4eDE2X3QsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gycWFfaW1wbF91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZjeDJxYV9pbXBsKGludCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDJxYV9tX2ltcGxfczE2KSkpCmludDE2eDhfdCBfX2FybV92Y3gycWFfbV9pbXBsKGludCwgaW50MTZ4OF90LCB1aW50OHgxNl90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gycWFfbV9pbXBsX3MzMikpKQppbnQzMng0X3QgX19hcm1fdmN4MnFhX21faW1wbChpbnQsIGludDMyeDRfdCwgdWludDh4MTZfdCwgdWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4MnFhX21faW1wbF9zNjQpKSkKaW50NjR4Ml90IF9fYXJtX3ZjeDJxYV9tX2ltcGwoaW50LCBpbnQ2NHgyX3QsIHVpbnQ4eDE2X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDJxYV9tX2ltcGxfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZjeDJxYV9tX2ltcGwoaW50LCBpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDJxYV9tX2ltcGxfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmN4MnFhX21faW1wbChpbnQsIHVpbnQxNng4X3QsIHVpbnQ4eDE2X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDJxYV9tX2ltcGxfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmN4MnFhX21faW1wbChpbnQsIHVpbnQzMng0X3QsIHVpbnQ4eDE2X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDJxYV9tX2ltcGxfdTY0KSkpCnVpbnQ2NHgyX3QgX19hcm1fdmN4MnFhX21faW1wbChpbnQsIHVpbnQ2NHgyX3QsIHVpbnQ4eDE2X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDJxYV9tX2ltcGxfdTgpKSkKdWludDh4MTZfdCBfX2FybV92Y3gycWFfbV9pbXBsKGludCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4M3FfaW1wbF9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZjeDNxX2ltcGwoaW50LCBpbnQxNng4X3QsIHVpbnQ4eDE2X3QsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gzcV9pbXBsX3MzMikpKQppbnQzMng0X3QgX19hcm1fdmN4M3FfaW1wbChpbnQsIGludDMyeDRfdCwgdWludDh4MTZfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDNxX2ltcGxfczY0KSkpCmludDY0eDJfdCBfX2FybV92Y3gzcV9pbXBsKGludCwgaW50NjR4Ml90LCB1aW50OHgxNl90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4M3FfaW1wbF9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdmN4M3FfaW1wbChpbnQsIGludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDNxX2ltcGxfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmN4M3FfaW1wbChpbnQsIHVpbnQxNng4X3QsIHVpbnQ4eDE2X3QsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gzcV9pbXBsX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZjeDNxX2ltcGwoaW50LCB1aW50MzJ4NF90LCB1aW50OHgxNl90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4M3FfaW1wbF91NjQpKSkKdWludDY0eDJfdCBfX2FybV92Y3gzcV9pbXBsKGludCwgdWludDY0eDJfdCwgdWludDh4MTZfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDNxX2ltcGxfdTgpKSkKdWludDh4MTZfdCBfX2FybV92Y3gzcV9pbXBsKGludCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDNxX21faW1wbF9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZjeDNxX21faW1wbChpbnQsIGludDE2eDhfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4M3FfbV9pbXBsX3MzMikpKQppbnQzMng0X3QgX19hcm1fdmN4M3FfbV9pbXBsKGludCwgaW50MzJ4NF90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gzcV9tX2ltcGxfczY0KSkpCmludDY0eDJfdCBfX2FybV92Y3gzcV9tX2ltcGwoaW50LCBpbnQ2NHgyX3QsIHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDNxX21faW1wbF9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdmN4M3FfbV9pbXBsKGludCwgaW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gzcV9tX2ltcGxfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmN4M3FfbV9pbXBsKGludCwgdWludDE2eDhfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4M3FfbV9pbXBsX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZjeDNxX21faW1wbChpbnQsIHVpbnQzMng0X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDNxX21faW1wbF91NjQpKSkKdWludDY0eDJfdCBfX2FybV92Y3gzcV9tX2ltcGwoaW50LCB1aW50NjR4Ml90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gzcV9tX2ltcGxfdTgpKSkKdWludDh4MTZfdCBfX2FybV92Y3gzcV9tX2ltcGwoaW50LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gzcV91OF9pbXBsX3MxNikpKQp1aW50OHgxNl90IF9fYXJtX3ZjeDNxX3U4X2ltcGwoaW50LCBpbnQxNng4X3QsIHVpbnQ4eDE2X3QsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gzcV91OF9pbXBsX3MzMikpKQp1aW50OHgxNl90IF9fYXJtX3ZjeDNxX3U4X2ltcGwoaW50LCBpbnQzMng0X3QsIHVpbnQ4eDE2X3QsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gzcV91OF9pbXBsX3M2NCkpKQp1aW50OHgxNl90IF9fYXJtX3ZjeDNxX3U4X2ltcGwoaW50LCBpbnQ2NHgyX3QsIHVpbnQ4eDE2X3QsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gzcV91OF9pbXBsX3M4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmN4M3FfdThfaW1wbChpbnQsIGludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDNxX3U4X2ltcGxfdTE2KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmN4M3FfdThfaW1wbChpbnQsIHVpbnQxNng4X3QsIHVpbnQ4eDE2X3QsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gzcV91OF9pbXBsX3UzMikpKQp1aW50OHgxNl90IF9fYXJtX3ZjeDNxX3U4X2ltcGwoaW50LCB1aW50MzJ4NF90LCB1aW50OHgxNl90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4M3FfdThfaW1wbF91NjQpKSkKdWludDh4MTZfdCBfX2FybV92Y3gzcV91OF9pbXBsKGludCwgdWludDY0eDJfdCwgdWludDh4MTZfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDNxX3U4X2ltcGxfdTgpKSkKdWludDh4MTZfdCBfX2FybV92Y3gzcV91OF9pbXBsKGludCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDNxYV9pbXBsX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmN4M3FhX2ltcGwoaW50LCBpbnQxNng4X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gzcWFfaW1wbF9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZjeDNxYV9pbXBsKGludCwgaW50MzJ4NF90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4M3FhX2ltcGxfczY0KSkpCmludDY0eDJfdCBfX2FybV92Y3gzcWFfaW1wbChpbnQsIGludDY0eDJfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDNxYV9pbXBsX3M4KSkpCmludDh4MTZfdCBfX2FybV92Y3gzcWFfaW1wbChpbnQsIGludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDNxYV9pbXBsX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZjeDNxYV9pbXBsKGludCwgdWludDE2eDhfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDNxYV9pbXBsX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZjeDNxYV9pbXBsKGludCwgdWludDMyeDRfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDNxYV9pbXBsX3U2NCkpKQp1aW50NjR4Ml90IF9fYXJtX3ZjeDNxYV9pbXBsKGludCwgdWludDY0eDJfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDNxYV9pbXBsX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmN4M3FhX2ltcGwoaW50LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4M3FhX21faW1wbF9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZjeDNxYV9tX2ltcGwoaW50LCBpbnQxNng4X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDNxYV9tX2ltcGxfczMyKSkpCmludDMyeDRfdCBfX2FybV92Y3gzcWFfbV9pbXBsKGludCwgaW50MzJ4NF90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gzcWFfbV9pbXBsX3M2NCkpKQppbnQ2NHgyX3QgX19hcm1fdmN4M3FhX21faW1wbChpbnQsIGludDY0eDJfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4M3FhX21faW1wbF9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdmN4M3FhX21faW1wbChpbnQsIGludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4M3FhX21faW1wbF91MTYpKSkKdWludDE2eDhfdCBfX2FybV92Y3gzcWFfbV9pbXBsKGludCwgdWludDE2eDhfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4M3FhX21faW1wbF91MzIpKSkKdWludDMyeDRfdCBfX2FybV92Y3gzcWFfbV9pbXBsKGludCwgdWludDMyeDRfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4M3FhX21faW1wbF91NjQpKSkKdWludDY0eDJfdCBfX2FybV92Y3gzcWFfbV9pbXBsKGludCwgdWludDY0eDJfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4M3FhX21faW1wbF91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZjeDNxYV9tX2ltcGwoaW50LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3MxNl91OCkpKQppbnQxNng4X3QgX19hcm1fdnJlaW50ZXJwcmV0cV9zMTZfdTgodWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zMzJfdTgpKSkKaW50MzJ4NF90IF9fYXJtX3ZyZWludGVycHJldHFfczMyX3U4KHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczY0X3U4KSkpCmludDY0eDJfdCBfX2FybV92cmVpbnRlcnByZXRxX3M2NF91OCh1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3M4X3U4KSkpCmludDh4MTZfdCBfX2FybV92cmVpbnRlcnByZXRxX3M4X3U4KHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdTE2X3U4KSkpCnVpbnQxNng4X3QgX19hcm1fdnJlaW50ZXJwcmV0cV91MTZfdTgodWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91MzJfdTgpKSkKdWludDMyeDRfdCBfX2FybV92cmVpbnRlcnByZXRxX3UzMl91OCh1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3U2NF91OCkpKQp1aW50NjR4Ml90IF9fYXJtX3ZyZWludGVycHJldHFfdTY0X3U4KHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdThfczE2KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnJlaW50ZXJwcmV0cV91OChpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdThfczMyKSkpCnVpbnQ4eDE2X3QgX19hcm1fdnJlaW50ZXJwcmV0cV91OChpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdThfczY0KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnJlaW50ZXJwcmV0cV91OChpbnQ2NHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdThfczgpKSkKdWludDh4MTZfdCBfX2FybV92cmVpbnRlcnByZXRxX3U4KGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91OF91MTYpKSkKdWludDh4MTZfdCBfX2FybV92cmVpbnRlcnByZXRxX3U4KHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdThfdTMyKSkpCnVpbnQ4eDE2X3QgX19hcm1fdnJlaW50ZXJwcmV0cV91OCh1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3U4X3U2NCkpKQp1aW50OHgxNl90IF9fYXJtX3ZyZWludGVycHJldHFfdTgodWludDY0eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdnJlaW50ZXJwcmV0cV91OF91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZyZWludGVycHJldHFfdTgodWludDh4MTZfdCk7CiNkZWZpbmUgX19hcm1fdmN4MnFfbShjcCwgaW5hY3RpdmUsIG4sIGltbSwgcHJlZCkgX19hcm1fdmN4MnFfbV9pbXBsKChjcCksIChpbmFjdGl2ZSksIF9fYXJtX3ZyZWludGVycHJldHFfdTgobiksIChpbW0pLCAocHJlZCkpCiNkZWZpbmUgX19hcm1fdmN4MnFhKGNwLCBhY2MsIG4sIGltbSkgX19hcm1fdmN4MnFhX2ltcGwoKGNwKSwgKGFjYyksIF9fYXJtX3ZyZWludGVycHJldHFfdTgobiksIChpbW0pKQojZGVmaW5lIF9fYXJtX3ZjeDJxYV9tKGNwLCBhY2MsIG4sIGltbSwgcHJlZCkgX19hcm1fdmN4MnFhX21faW1wbCgoY3ApLCAoYWNjKSwgX19hcm1fdnJlaW50ZXJwcmV0cV91OChuKSwgKGltbSksIChwcmVkKSkKI2RlZmluZSBfX2FybV92Y3gzcShjcCwgbiwgbSwgaW1tKSBfX2FybV92Y3gzcV9pbXBsKChjcCksIChuKSwgX19hcm1fdnJlaW50ZXJwcmV0cV91OChtKSwgKGltbSkpCiNkZWZpbmUgX19hcm1fdmN4M3FfbShjcCwgaW5hY3RpdmUsIG4sIG0sIGltbSwgcHJlZCkgX19hcm1fdmN4M3FfbV9pbXBsKChjcCksIChpbmFjdGl2ZSksIF9fYXJtX3ZyZWludGVycHJldHFfdTgobiksIF9fYXJtX3ZyZWludGVycHJldHFfdTgobSksIChpbW0pLCAocHJlZCkpCiNkZWZpbmUgX19hcm1fdmN4M3FfdTgoY3AsIG4sIG0sIGltbSkgX19hcm1fdmN4M3FfdThfaW1wbCgoY3ApLCAobiksIF9fYXJtX3ZyZWludGVycHJldHFfdTgobSksIChpbW0pKQojZGVmaW5lIF9fYXJtX3ZjeDNxYShjcCwgYWNjLCBuLCBtLCBpbW0pIF9fYXJtX3ZjeDNxYV9pbXBsKChjcCksIChhY2MpLCBfX2FybV92cmVpbnRlcnByZXRxX3U4KG4pLCBfX2FybV92cmVpbnRlcnByZXRxX3U4KG0pLCAoaW1tKSkKI2RlZmluZSBfX2FybV92Y3gzcWFfbShjcCwgYWNjLCBuLCBtLCBpbW0sIHByZWQpIF9fYXJtX3ZjeDNxYV9tX2ltcGwoKGNwKSwgKGFjYyksIF9fYXJtX3ZyZWludGVycHJldHFfdTgobiksIF9fYXJtX3ZyZWludGVycHJldHFfdTgobSksIChpbW0pLCAocHJlZCkpCgojZW5kaWYgLyogX19BUk1fRkVBVFVSRV9NVkUgKi8KCiNpZiBfX0FSTV9GRUFUVVJFX01WRSAmIDIKCnR5cGVkZWYgX19mcDE2IGZsb2F0MTZfdDsKdHlwZWRlZiBmbG9hdCBmbG9hdDMyX3Q7CnR5cGVkZWYgX19hdHRyaWJ1dGVfXygoX19uZW9uX3ZlY3Rvcl90eXBlX18oOCksIF9fY2xhbmdfYXJtX212ZV9zdHJpY3RfcG9seW1vcnBoaXNtKSkgZmxvYXQxNl90IGZsb2F0MTZ4OF90Owp0eXBlZGVmIF9fYXR0cmlidXRlX18oKF9fbmVvbl92ZWN0b3JfdHlwZV9fKDQpLCBfX2NsYW5nX2FybV9tdmVfc3RyaWN0X3BvbHltb3JwaGlzbSkpIGZsb2F0MzJfdCBmbG9hdDMyeDRfdDsKCnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4MXFfbV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmN4MXFfbShpbnQsIGZsb2F0MTZ4OF90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gxcV9tX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92Y3gxcV9tKGludCwgZmxvYXQzMng0X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDFxYV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmN4MXFhKGludCwgZmxvYXQxNng4X3QsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gxcWFfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZjeDFxYShpbnQsIGZsb2F0MzJ4NF90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4MXFhX21fZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZjeDFxYV9tKGludCwgZmxvYXQxNng4X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDFxYV9tX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92Y3gxcWFfbShpbnQsIGZsb2F0MzJ4NF90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gycV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmN4MnEoaW50LCBmbG9hdDE2eDhfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDJxX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92Y3gycShpbnQsIGZsb2F0MzJ4NF90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4MnFfbV9pbXBsX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92Y3gycV9tX2ltcGwoaW50LCBmbG9hdDE2eDhfdCwgdWludDh4MTZfdCwgdWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4MnFfbV9pbXBsX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92Y3gycV9tX2ltcGwoaW50LCBmbG9hdDMyeDRfdCwgdWludDh4MTZfdCwgdWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4MnFfdThfZjE2KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmN4MnFfdTgoaW50LCBmbG9hdDE2eDhfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDJxX3U4X2YzMikpKQp1aW50OHgxNl90IF9fYXJtX3ZjeDJxX3U4KGludCwgZmxvYXQzMng0X3QsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gycWFfaW1wbF9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmN4MnFhX2ltcGwoaW50LCBmbG9hdDE2eDhfdCwgdWludDh4MTZfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDJxYV9pbXBsX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92Y3gycWFfaW1wbChpbnQsIGZsb2F0MzJ4NF90LCB1aW50OHgxNl90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4MnFhX21faW1wbF9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmN4MnFhX21faW1wbChpbnQsIGZsb2F0MTZ4OF90LCB1aW50OHgxNl90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gycWFfbV9pbXBsX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92Y3gycWFfbV9pbXBsKGludCwgZmxvYXQzMng0X3QsIHVpbnQ4eDE2X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDNxX2ltcGxfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZjeDNxX2ltcGwoaW50LCBmbG9hdDE2eDhfdCwgdWludDh4MTZfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDNxX2ltcGxfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZjeDNxX2ltcGwoaW50LCBmbG9hdDMyeDRfdCwgdWludDh4MTZfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDNxX21faW1wbF9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmN4M3FfbV9pbXBsKGludCwgZmxvYXQxNng4X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDNxX21faW1wbF9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmN4M3FfbV9pbXBsKGludCwgZmxvYXQzMng0X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDNxX3U4X2ltcGxfZjE2KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmN4M3FfdThfaW1wbChpbnQsIGZsb2F0MTZ4OF90LCB1aW50OHgxNl90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4M3FfdThfaW1wbF9mMzIpKSkKdWludDh4MTZfdCBfX2FybV92Y3gzcV91OF9pbXBsKGludCwgZmxvYXQzMng0X3QsIHVpbnQ4eDE2X3QsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gzcWFfaW1wbF9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmN4M3FhX2ltcGwoaW50LCBmbG9hdDE2eDhfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fY2RlX3ZjeDNxYV9pbXBsX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92Y3gzcWFfaW1wbChpbnQsIGZsb2F0MzJ4NF90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9jZGVfdmN4M3FhX21faW1wbF9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmN4M3FhX21faW1wbChpbnQsIGZsb2F0MTZ4OF90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX2NkZV92Y3gzcWFfbV9pbXBsX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92Y3gzcWFfbV9pbXBsKGludCwgZmxvYXQzMng0X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfZjE2X3U4KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZyZWludGVycHJldHFfZjE2X3U4KHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfZjMyX3U4KSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZyZWludGVycHJldHFfZjMyX3U4KHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdThfZjE2KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnJlaW50ZXJwcmV0cV91OChmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91OF9mMzIpKSkKdWludDh4MTZfdCBfX2FybV92cmVpbnRlcnByZXRxX3U4KGZsb2F0MzJ4NF90KTsKCiNlbmRpZiAvKiBfX0FSTV9GRUFUVVJFX01WRSAmIDIgKi8KCiNpZmRlZiBfX2NwbHVzcGx1cwp9IC8qIGV4dGVybiAiQyIgKi8KI2VuZGlmCgojZW5kaWYgLyogX19BUk1fQ0RFX0ggKi8KAC8vPT09LS0tLSBhcm1fY21zZS5oIC0gQXJtIENNU0Ugc3VwcG9ydCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCi8vCi8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCi8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgovLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCi8vCi8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCgojaWZuZGVmIF9fQVJNX0NNU0VfSAojZGVmaW5lIF9fQVJNX0NNU0VfSAoKI2lmIChfX0FSTV9GRUFUVVJFX0NNU0UgJiAweDEpCiNpbmNsdWRlIDxzdGRkZWYuaD4KI2luY2x1ZGUgPHN0ZGludC5oPgoKI2RlZmluZSBfX0FSTV9DTVNFX1NFQ1VSRV9NT0RFIChfX0FSTV9GRUFUVVJFX0NNU0UgJiAweDIpCiNkZWZpbmUgQ01TRV9NUFVfUkVBRFdSSVRFIDEgLyogY2hlY2tzIGlmIHJlYWR3cml0ZV9vayBmaWVsZCBpcyBzZXQgKi8KI2RlZmluZSBDTVNFX0FVX05PTlNFQ1VSRSAgMiAvKiBjaGVja3MgaWYgcGVybWlzc2lvbnMgaGF2ZSBzZWN1cmUgZmllbGQgdW5zZXQgKi8KI2RlZmluZSBDTVNFX01QVV9VTlBSSVYgICAgNCAvKiBzZXRzIFQgZmxhZyBvbiBUVCBpbnNydHVjdGlvbiAqLwojZGVmaW5lIENNU0VfTVBVX1JFQUQgICAgICA4IC8qIGNoZWNrcyBpZiByZWFkX29rIGZpZWxkIGlzIHNldCAqLwojZGVmaW5lIENNU0VfTVBVX05PTlNFQ1VSRSAxNiAvKiBzZXRzIEEgZmxhZywgY2hlY2tzIGlmIHNlY3VyZSBmaWVsZCB1bnNldCAqLwojZGVmaW5lIENNU0VfTk9OU0VDVVJFIChDTVNFX0FVX05PTlNFQ1VSRSB8IENNU0VfTVBVX05PTlNFQ1VSRSkKCiNkZWZpbmUgY21zZV9jaGVja19wb2ludGVkX29iamVjdChwLCBmKSBcCiAgY21zZV9jaGVja19hZGRyZXNzX3JhbmdlKChwKSwgc2l6ZW9mKCoocCkpLCAoZikpCgojaWYgZGVmaW5lZChfX2NwbHVzcGx1cykKZXh0ZXJuICJDIiB7CiNlbmRpZgoKdHlwZWRlZiB1bmlvbiB7CiAgc3RydWN0IGNtc2VfYWRkcmVzc19pbmZvIHsKI2lmZGVmIF9fQVJNX0JJR19FTkRJQU4KICAgIC8qIF9fQVJNX0JJR19FTkRJQU4gKi8KI2lmIChfX0FSTV9DTVNFX1NFQ1VSRV9NT0RFKQogICAgdW5zaWduZWQgaWRhdV9yZWdpb24gOiA4OwogICAgdW5zaWduZWQgaWRhdV9yZWdpb25fdmFsaWQgOiAxOwogICAgdW5zaWduZWQgc2VjdXJlIDogMTsKICAgIHVuc2lnbmVkIG5vbnNlY3VyZV9yZWFkd3JpdGVfb2sgOiAxOwogICAgdW5zaWduZWQgbm9uc2VjdXJlX3JlYWRfb2sgOiAxOwojZWxzZQogICAgdW5zaWduZWQgOiAxMjsKI2VuZGlmCiAgICB1bnNpZ25lZCByZWFkd3JpdGVfb2sgOiAxOwogICAgdW5zaWduZWQgcmVhZF9vayA6IDE7CiNpZiAoX19BUk1fQ01TRV9TRUNVUkVfTU9ERSkKICAgIHVuc2lnbmVkIHNhdV9yZWdpb25fdmFsaWQgOiAxOwojZWxzZQogICAgdW5zaWduZWQgOiAxOwojZW5kaWYKICAgIHVuc2lnbmVkIG1wdV9yZWdpb25fdmFsaWQgOiAxOwojaWYgKF9fQVJNX0NNU0VfU0VDVVJFX01PREUpCiAgICB1bnNpZ25lZCBzYXVfcmVnaW9uIDogODsKI2Vsc2UKICAgIHVuc2lnbmVkIDogODsKI2VuZGlmCiAgICB1bnNpZ25lZCBtcHVfcmVnaW9uIDogODsKCiNlbHNlIC8qIF9fQVJNX0xJVFRMRV9FTkRJQU4gKi8KICAgIHVuc2lnbmVkIG1wdV9yZWdpb24gOiA4OwojaWYgKF9fQVJNX0NNU0VfU0VDVVJFX01PREUpCiAgICB1bnNpZ25lZCBzYXVfcmVnaW9uIDogODsKI2Vsc2UKICAgIHVuc2lnbmVkIDogODsKI2VuZGlmCiAgICB1bnNpZ25lZCBtcHVfcmVnaW9uX3ZhbGlkIDogMTsKI2lmIChfX0FSTV9DTVNFX1NFQ1VSRV9NT0RFKQogICAgdW5zaWduZWQgc2F1X3JlZ2lvbl92YWxpZCA6IDE7CiNlbHNlCiAgICB1bnNpZ25lZCA6IDE7CiNlbmRpZgogICAgdW5zaWduZWQgcmVhZF9vayA6IDE7CiAgICB1bnNpZ25lZCByZWFkd3JpdGVfb2sgOiAxOwojaWYgKF9fQVJNX0NNU0VfU0VDVVJFX01PREUpCiAgICB1bnNpZ25lZCBub25zZWN1cmVfcmVhZF9vayA6IDE7CiAgICB1bnNpZ25lZCBub25zZWN1cmVfcmVhZHdyaXRlX29rIDogMTsKICAgIHVuc2lnbmVkIHNlY3VyZSA6IDE7CiAgICB1bnNpZ25lZCBpZGF1X3JlZ2lvbl92YWxpZCA6IDE7CiAgICB1bnNpZ25lZCBpZGF1X3JlZ2lvbiA6IDg7CiNlbHNlCiAgICB1bnNpZ25lZCA6IDEyOwojZW5kaWYKI2VuZGlmIC8qX19BUk1fTElUVExFX0VORElBTiAqLwogIH0gZmxhZ3M7CiAgdW5zaWduZWQgdmFsdWU7Cn0gY21zZV9hZGRyZXNzX2luZm9fdDsKCnN0YXRpYyBjbXNlX2FkZHJlc3NfaW5mb190IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCmNtc2VfVFQodm9pZCAqX19wKSB7CiAgY21zZV9hZGRyZXNzX2luZm9fdCBfX3U7CiAgX191LnZhbHVlID0gX19idWlsdGluX2FybV9jbXNlX1RUKF9fcCk7CiAgcmV0dXJuIF9fdTsKfQpzdGF0aWMgY21zZV9hZGRyZXNzX2luZm9fdCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpjbXNlX1RUVCh2b2lkICpfX3ApIHsKICBjbXNlX2FkZHJlc3NfaW5mb190IF9fdTsKICBfX3UudmFsdWUgPSBfX2J1aWx0aW5fYXJtX2Ntc2VfVFRUKF9fcCk7CiAgcmV0dXJuIF9fdTsKfQoKI2lmIF9fQVJNX0NNU0VfU0VDVVJFX01PREUKc3RhdGljIGNtc2VfYWRkcmVzc19pbmZvX3QgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKY21zZV9UVEEodm9pZCAqX19wKSB7CiAgY21zZV9hZGRyZXNzX2luZm9fdCBfX3U7CiAgX191LnZhbHVlID0gX19idWlsdGluX2FybV9jbXNlX1RUQShfX3ApOwogIHJldHVybiBfX3U7Cn0Kc3RhdGljIGNtc2VfYWRkcmVzc19pbmZvX3QgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKY21zZV9UVEFUKHZvaWQgKl9fcCkgewogIGNtc2VfYWRkcmVzc19pbmZvX3QgX191OwogIF9fdS52YWx1ZSA9IF9fYnVpbHRpbl9hcm1fY21zZV9UVEFUKF9fcCk7CiAgcmV0dXJuIF9fdTsKfQojZW5kaWYKCiNkZWZpbmUgY21zZV9UVF9mcHRyKHApIGNtc2VfVFQoX19idWlsdGluX2JpdF9jYXN0KHZvaWQgKiwgKHApKSkKI2RlZmluZSBjbXNlX1RUVF9mcHRyKHApIGNtc2VfVFRUKF9fYnVpbHRpbl9iaXRfY2FzdCh2b2lkICosIChwKSkpCgojaWYgX19BUk1fQ01TRV9TRUNVUkVfTU9ERQojZGVmaW5lIGNtc2VfVFRBX2ZwdHIocCkgY21zZV9UVEEoX19idWlsdGluX2JpdF9jYXN0KHZvaWQgKiwgKHApKSkKI2RlZmluZSBjbXNlX1RUQVRfZnB0cihwKSBjbXNlX1RUQVQoX19idWlsdGluX2JpdF9jYXN0KHZvaWQgKiwgKHApKSkKI2VuZGlmCgpzdGF0aWMgdm9pZCAqX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQpjbXNlX2NoZWNrX2FkZHJlc3NfcmFuZ2Uodm9pZCAqX19wYiwgc2l6ZV90IF9fcywgaW50IF9fZmxhZ3MpIHsKICB1aW50cHRyX3QgX19iZWdpbiA9ICh1aW50cHRyX3QpX19wYjsKICB1aW50cHRyX3QgX19lbmQgPSBfX2JlZ2luICsgX19zIC0gMTsKCiAgaWYgKF9fZW5kIDwgX19iZWdpbikKICAgIHJldHVybiBOVUxMOyAvKiB3cmFwIGFyb3VuZCBjaGVjayAqLwoKICAvKiBDaGVjayB3aGV0aGVyIHRoZSByYW5nZSBjcm9zc2VzIGEgMzItYnl0ZXMgYWxpZ25lZCBhZGRyZXNzICovCiAgY29uc3QgaW50IF9fc2luZ2xlX2NoZWNrID0gKF9fYmVnaW4gXiBfX2VuZCkgPCAweDIwdTsKCiAgLyogZXhlY3V0ZSB0aGUgcmlnaHQgdmFyaWFudCBvZiB0aGUgVFQgaW5zdHJ1Y3Rpb25zICovCiAgdm9pZCAqX19wZSA9ICh2b2lkICopX19lbmQ7CiAgY21zZV9hZGRyZXNzX2luZm9fdCBfX3Blcm1iLCBfX3Blcm1lOwogIHN3aXRjaCAoX19mbGFncyAmIChDTVNFX01QVV9VTlBSSVYgfCBDTVNFX01QVV9OT05TRUNVUkUpKSB7CiAgY2FzZSAwOgogICAgX19wZXJtYiA9IGNtc2VfVFQoX19wYik7CiAgICBfX3Blcm1lID0gX19zaW5nbGVfY2hlY2sgPyBfX3Blcm1iIDogY21zZV9UVChfX3BlKTsKICAgIGJyZWFrOwogIGNhc2UgQ01TRV9NUFVfVU5QUklWOgogICAgX19wZXJtYiA9IGNtc2VfVFRUKF9fcGIpOwogICAgX19wZXJtZSA9IF9fc2luZ2xlX2NoZWNrID8gX19wZXJtYiA6IGNtc2VfVFRUKF9fcGUpOwogICAgYnJlYWs7CiNpZiBfX0FSTV9DTVNFX1NFQ1VSRV9NT0RFCiAgY2FzZSBDTVNFX01QVV9OT05TRUNVUkU6CiAgICBfX3Blcm1iID0gY21zZV9UVEEoX19wYik7CiAgICBfX3Blcm1lID0gX19zaW5nbGVfY2hlY2sgPyBfX3Blcm1iIDogY21zZV9UVEEoX19wZSk7CiAgICBicmVhazsKICBjYXNlIENNU0VfTVBVX1VOUFJJViB8IENNU0VfTVBVX05PTlNFQ1VSRToKICAgIF9fcGVybWIgPSBjbXNlX1RUQVQoX19wYik7CiAgICBfX3Blcm1lID0gX19zaW5nbGVfY2hlY2sgPyBfX3Blcm1iIDogY21zZV9UVEFUKF9fcGUpOwogICAgYnJlYWs7CiNlbmRpZgogIC8qIGlmIENNU0VfTk9OU0VDVVJFIGlzIHNwZWNpZmllZCB3L28gX19BUk1fQ01TRV9TRUNVUkVfTU9ERSAqLwogIGRlZmF1bHQ6CiAgICByZXR1cm4gTlVMTDsKICB9CgogIC8qIGNoZWNrIHRoYXQgdGhlIHJhbmdlIGRvZXMgbm90IGNyb3NzIE1QVSwgU0FVLCBvciBJREFVIHJlZ2lvbiBib3VuZGFyaWVzICovCiAgaWYgKF9fcGVybWIudmFsdWUgIT0gX19wZXJtZS52YWx1ZSkKICAgIHJldHVybiBOVUxMOwojaWYgIShfX0FSTV9DTVNFX1NFQ1VSRV9NT0RFKQogIC8qIENNU0VfQVVfTk9OU0VDVVJFIGlzIG9ubHkgc3VwcG9ydGVkIHdoZW4gX19BUk1fRkVBVFVSRV9DTVNFICYgMHgyICovCiAgaWYgKF9fZmxhZ3MgJiBDTVNFX0FVX05PTlNFQ1VSRSkKICAgIHJldHVybiBOVUxMOwojZW5kaWYKCiAgLyogY2hlY2sgdGhlIHBlcm1pc3Npb24gb24gdGhlIHJhbmdlICovCiAgc3dpdGNoIChfX2ZsYWdzICYgfihDTVNFX01QVV9VTlBSSVYgfCBDTVNFX01QVV9OT05TRUNVUkUpKSB7CiNpZiAoX19BUk1fQ01TRV9TRUNVUkVfTU9ERSkKICBjYXNlIENNU0VfTVBVX1JFQUQgfCBDTVNFX01QVV9SRUFEV1JJVEUgfCBDTVNFX0FVX05PTlNFQ1VSRToKICBjYXNlIENNU0VfTVBVX1JFQURXUklURSB8IENNU0VfQVVfTk9OU0VDVVJFOgogICAgcmV0dXJuIF9fcGVybWIuZmxhZ3Mubm9uc2VjdXJlX3JlYWR3cml0ZV9vayA/IF9fcGIgOiBOVUxMOwoKICBjYXNlIENNU0VfTVBVX1JFQUQgfCBDTVNFX0FVX05PTlNFQ1VSRToKICAgIHJldHVybiBfX3Blcm1iLmZsYWdzLm5vbnNlY3VyZV9yZWFkX29rID8gX19wYiA6IE5VTEw7CgogIGNhc2UgQ01TRV9BVV9OT05TRUNVUkU6CiAgICByZXR1cm4gX19wZXJtYi5mbGFncy5zZWN1cmUgPyBOVUxMIDogX19wYjsKI2VuZGlmCiAgY2FzZSBDTVNFX01QVV9SRUFEIHwgQ01TRV9NUFVfUkVBRFdSSVRFOgogIGNhc2UgQ01TRV9NUFVfUkVBRFdSSVRFOgogICAgcmV0dXJuIF9fcGVybWIuZmxhZ3MucmVhZHdyaXRlX29rID8gX19wYiA6IE5VTEw7CgogIGNhc2UgQ01TRV9NUFVfUkVBRDoKICAgIHJldHVybiBfX3Blcm1iLmZsYWdzLnJlYWRfb2sgPyBfX3BiIDogTlVMTDsKCiAgZGVmYXVsdDoKICAgIHJldHVybiBOVUxMOwogIH0KfQoKI2lmIF9fQVJNX0NNU0VfU0VDVVJFX01PREUKc3RhdGljIGludCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpjbXNlX25vbnNlY3VyZV9jYWxsZXIodm9pZCkgewogIHJldHVybiAhKCh1aW50cHRyX3QpX19idWlsdGluX3JldHVybl9hZGRyZXNzKDApICYgMSk7Cn0KCiNkZWZpbmUgY21zZV9uc2ZwdHJfY3JlYXRlKHApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19idWlsdGluX2JpdF9jYXN0KF9fdHlwZW9mX18ocCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgIChfX2J1aWx0aW5fYml0X2Nhc3QodWludHB0cl90LCBwKSAmIH4odWludHB0cl90KTEpKQoKI2RlZmluZSBjbXNlX2lzX25zZnB0cihwKSAoKF9fYnVpbHRpbl9iaXRfY2FzdCh1aW50cHRyX3QsIHApICYgMSkgPT0gMCkKCiNlbmRpZiAvKiBfX0FSTV9DTVNFX1NFQ1VSRV9NT0RFICovCgp2b2lkIF9fYXR0cmlidXRlX18oKF9fbm9yZXR1cm5fXykpIGNtc2VfYWJvcnQodm9pZCk7CiNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQp9CiNlbmRpZgoKI2VuZGlmIC8qIChfX0FSTV9GRUFUVVJFX0NNU0UgJiAweDEpICovCgojZW5kaWYgLyogX19BUk1fQ01TRV9IICovCgAvKj09PS0tLS0gYXJtX3N2ZS5oIC0gQVJNIFNWRSBpbnRyaW5zaWNzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqCiAqCiAqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCiAqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCgojaWZuZGVmIF9fQVJNX1NWRV9ICiNkZWZpbmUgX19BUk1fU1ZFX0gKCiNpZiAhZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NWRSkKI2Vycm9yICJTVkUgc3VwcG9ydCBub3QgZW5hYmxlZCIKI2Vsc2UKCiNpZiAhZGVmaW5lZChfX0xJVFRMRV9FTkRJQU5fXykKI2Vycm9yICJCaWcgZW5kaWFuIGlzIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkIGZvciBhcm1fc3ZlLmgiCiNlbmRpZgojaW5jbHVkZSA8c3RkaW50Lmg+CgojaWZkZWYgIF9fY3BsdXNwbHVzCmV4dGVybiAiQyIgewojZWxzZQojaW5jbHVkZSA8c3RkYm9vbC5oPgojZW5kaWYKCnR5cGVkZWYgX19mcDE2IGZsb2F0MTZfdDsKdHlwZWRlZiBmbG9hdCBmbG9hdDMyX3Q7CnR5cGVkZWYgZG91YmxlIGZsb2F0NjRfdDsKdHlwZWRlZiBfX1NWSW50OF90IHN2aW50OF90Owp0eXBlZGVmIF9fU1ZJbnQxNl90IHN2aW50MTZfdDsKdHlwZWRlZiBfX1NWSW50MzJfdCBzdmludDMyX3Q7CnR5cGVkZWYgX19TVkludDY0X3Qgc3ZpbnQ2NF90Owp0eXBlZGVmIF9fU1ZVaW50OF90IHN2dWludDhfdDsKdHlwZWRlZiBfX1NWVWludDE2X3Qgc3Z1aW50MTZfdDsKdHlwZWRlZiBfX1NWVWludDMyX3Qgc3Z1aW50MzJfdDsKdHlwZWRlZiBfX1NWVWludDY0X3Qgc3Z1aW50NjRfdDsKdHlwZWRlZiBfX1NWRmxvYXQxNl90IHN2ZmxvYXQxNl90OwoKI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9TVkVfQkYxNikgJiYgIWRlZmluZWQoX19BUk1fRkVBVFVSRV9CRjE2X1NDQUxBUl9BUklUSE1FVElDKQojZXJyb3IgIl9fQVJNX0ZFQVRVUkVfQkYxNl9TQ0FMQVJfQVJJVEhNRVRJQyBtdXN0IGJlIGRlZmluZWQgd2hlbiBfX0FSTV9GRUFUVVJFX1NWRV9CRjE2IGlzIGRlZmluZWQiCiNlbmRpZgoKI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9TVkVfQkYxNikKdHlwZWRlZiBfX1NWQkZsb2F0MTZfdCBzdmJmbG9hdDE2X3Q7CiNlbmRpZgoKI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9CRjE2X1NDQUxBUl9BUklUSE1FVElDKQojaW5jbHVkZSA8YXJtX2JmMTYuaD4KdHlwZWRlZiBfX2JmMTYgYmZsb2F0MTZfdDsKI2VuZGlmCgp0eXBlZGVmIF9fU1ZGbG9hdDMyX3Qgc3ZmbG9hdDMyX3Q7CnR5cGVkZWYgX19TVkZsb2F0NjRfdCBzdmZsb2F0NjRfdDsKdHlwZWRlZiBfX2NsYW5nX3N2aW50OHgyX3Qgc3ZpbnQ4eDJfdDsKdHlwZWRlZiBfX2NsYW5nX3N2aW50MTZ4Ml90IHN2aW50MTZ4Ml90Owp0eXBlZGVmIF9fY2xhbmdfc3ZpbnQzMngyX3Qgc3ZpbnQzMngyX3Q7CnR5cGVkZWYgX19jbGFuZ19zdmludDY0eDJfdCBzdmludDY0eDJfdDsKdHlwZWRlZiBfX2NsYW5nX3N2dWludDh4Ml90IHN2dWludDh4Ml90Owp0eXBlZGVmIF9fY2xhbmdfc3Z1aW50MTZ4Ml90IHN2dWludDE2eDJfdDsKdHlwZWRlZiBfX2NsYW5nX3N2dWludDMyeDJfdCBzdnVpbnQzMngyX3Q7CnR5cGVkZWYgX19jbGFuZ19zdnVpbnQ2NHgyX3Qgc3Z1aW50NjR4Ml90Owp0eXBlZGVmIF9fY2xhbmdfc3ZmbG9hdDE2eDJfdCBzdmZsb2F0MTZ4Ml90Owp0eXBlZGVmIF9fY2xhbmdfc3ZmbG9hdDMyeDJfdCBzdmZsb2F0MzJ4Ml90Owp0eXBlZGVmIF9fY2xhbmdfc3ZmbG9hdDY0eDJfdCBzdmZsb2F0NjR4Ml90Owp0eXBlZGVmIF9fY2xhbmdfc3ZpbnQ4eDNfdCBzdmludDh4M190Owp0eXBlZGVmIF9fY2xhbmdfc3ZpbnQxNngzX3Qgc3ZpbnQxNngzX3Q7CnR5cGVkZWYgX19jbGFuZ19zdmludDMyeDNfdCBzdmludDMyeDNfdDsKdHlwZWRlZiBfX2NsYW5nX3N2aW50NjR4M190IHN2aW50NjR4M190Owp0eXBlZGVmIF9fY2xhbmdfc3Z1aW50OHgzX3Qgc3Z1aW50OHgzX3Q7CnR5cGVkZWYgX19jbGFuZ19zdnVpbnQxNngzX3Qgc3Z1aW50MTZ4M190Owp0eXBlZGVmIF9fY2xhbmdfc3Z1aW50MzJ4M190IHN2dWludDMyeDNfdDsKdHlwZWRlZiBfX2NsYW5nX3N2dWludDY0eDNfdCBzdnVpbnQ2NHgzX3Q7CnR5cGVkZWYgX19jbGFuZ19zdmZsb2F0MTZ4M190IHN2ZmxvYXQxNngzX3Q7CnR5cGVkZWYgX19jbGFuZ19zdmZsb2F0MzJ4M190IHN2ZmxvYXQzMngzX3Q7CnR5cGVkZWYgX19jbGFuZ19zdmZsb2F0NjR4M190IHN2ZmxvYXQ2NHgzX3Q7CnR5cGVkZWYgX19jbGFuZ19zdmludDh4NF90IHN2aW50OHg0X3Q7CnR5cGVkZWYgX19jbGFuZ19zdmludDE2eDRfdCBzdmludDE2eDRfdDsKdHlwZWRlZiBfX2NsYW5nX3N2aW50MzJ4NF90IHN2aW50MzJ4NF90Owp0eXBlZGVmIF9fY2xhbmdfc3ZpbnQ2NHg0X3Qgc3ZpbnQ2NHg0X3Q7CnR5cGVkZWYgX19jbGFuZ19zdnVpbnQ4eDRfdCBzdnVpbnQ4eDRfdDsKdHlwZWRlZiBfX2NsYW5nX3N2dWludDE2eDRfdCBzdnVpbnQxNng0X3Q7CnR5cGVkZWYgX19jbGFuZ19zdnVpbnQzMng0X3Qgc3Z1aW50MzJ4NF90Owp0eXBlZGVmIF9fY2xhbmdfc3Z1aW50NjR4NF90IHN2dWludDY0eDRfdDsKdHlwZWRlZiBfX2NsYW5nX3N2ZmxvYXQxNng0X3Qgc3ZmbG9hdDE2eDRfdDsKdHlwZWRlZiBfX2NsYW5nX3N2ZmxvYXQzMng0X3Qgc3ZmbG9hdDMyeDRfdDsKdHlwZWRlZiBfX2NsYW5nX3N2ZmxvYXQ2NHg0X3Qgc3ZmbG9hdDY0eDRfdDsKdHlwZWRlZiBfX1NWQm9vbF90ICBzdmJvb2xfdDsKCiNpZmRlZiBfX0FSTV9GRUFUVVJFX1NWRV9CRjE2CnR5cGVkZWYgX19jbGFuZ19zdmJmbG9hdDE2eDJfdCBzdmJmbG9hdDE2eDJfdDsKdHlwZWRlZiBfX2NsYW5nX3N2YmZsb2F0MTZ4M190IHN2YmZsb2F0MTZ4M190Owp0eXBlZGVmIF9fY2xhbmdfc3ZiZmxvYXQxNng0X3Qgc3ZiZmxvYXQxNng0X3Q7CiNlbmRpZgplbnVtIHN2cGF0dGVybgp7CiAgU1ZfUE9XMiA9IDAsCiAgU1ZfVkwxID0gMSwKICBTVl9WTDIgPSAyLAogIFNWX1ZMMyA9IDMsCiAgU1ZfVkw0ID0gNCwKICBTVl9WTDUgPSA1LAogIFNWX1ZMNiA9IDYsCiAgU1ZfVkw3ID0gNywKICBTVl9WTDggPSA4LAogIFNWX1ZMMTYgPSA5LAogIFNWX1ZMMzIgPSAxMCwKICBTVl9WTDY0ID0gMTEsCiAgU1ZfVkwxMjggPSAxMiwKICBTVl9WTDI1NiA9IDEzLAogIFNWX01VTDQgPSAyOSwKICBTVl9NVUwzID0gMzAsCiAgU1ZfQUxMID0gMzEKfTsKCmVudW0gc3ZwcmZvcAp7CiAgU1ZfUExETDFLRUVQID0gMCwKICBTVl9QTERMMVNUUk0gPSAxLAogIFNWX1BMREwyS0VFUCA9IDIsCiAgU1ZfUExETDJTVFJNID0gMywKICBTVl9QTERMM0tFRVAgPSA0LAogIFNWX1BMREwzU1RSTSA9IDUsCiAgU1ZfUFNUTDFLRUVQID0gOCwKICBTVl9QU1RMMVNUUk0gPSA5LAogIFNWX1BTVEwyS0VFUCA9IDEwLAogIFNWX1BTVEwyU1RSTSA9IDExLAogIFNWX1BTVEwzS0VFUCA9IDEyLAogIFNWX1BTVEwzU1RSTSA9IDEzCn07CgovKiBGdW5jdGlvbiBhdHRyaWJ1dGVzICovCiNkZWZpbmUgX19haSBzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKI2RlZmluZSBfX2FpbyBzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fb3ZlcmxvYWRhYmxlX18pKQoKI2RlZmluZSBzdnJlaW50ZXJwcmV0X3M4X3M4KC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF9zOF9zOChfX1ZBX0FSR1NfXykKI2RlZmluZSBzdnJlaW50ZXJwcmV0X3M4X3MxNiguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfczhfczE2KF9fVkFfQVJHU19fKQojZGVmaW5lIHN2cmVpbnRlcnByZXRfczhfczMyKC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF9zOF9zMzIoX19WQV9BUkdTX18pCiNkZWZpbmUgc3ZyZWludGVycHJldF9zOF9zNjQoLi4uKSBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3M4X3M2NChfX1ZBX0FSR1NfXykKI2RlZmluZSBzdnJlaW50ZXJwcmV0X3M4X3U4KC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF9zOF91OChfX1ZBX0FSR1NfXykKI2RlZmluZSBzdnJlaW50ZXJwcmV0X3M4X3UxNiguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfczhfdTE2KF9fVkFfQVJHU19fKQojZGVmaW5lIHN2cmVpbnRlcnByZXRfczhfdTMyKC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF9zOF91MzIoX19WQV9BUkdTX18pCiNkZWZpbmUgc3ZyZWludGVycHJldF9zOF91NjQoLi4uKSBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3M4X3U2NChfX1ZBX0FSR1NfXykKI2RlZmluZSBzdnJlaW50ZXJwcmV0X3M4X2YxNiguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfczhfZjE2KF9fVkFfQVJHU19fKQojaWYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NWRV9CRjE2KQojZGVmaW5lIHN2cmVpbnRlcnByZXRfczhfYmYxNiguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfczhfYmYxNihfX1ZBX0FSR1NfXykKI2VuZGlmIC8qICNpZiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfU1ZFX0JGMTYpICovCiNkZWZpbmUgc3ZyZWludGVycHJldF9zOF9mMzIoLi4uKSBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3M4X2YzMihfX1ZBX0FSR1NfXykKI2RlZmluZSBzdnJlaW50ZXJwcmV0X3M4X2Y2NCguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfczhfZjY0KF9fVkFfQVJHU19fKQojZGVmaW5lIHN2cmVpbnRlcnByZXRfczE2X3M4KC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF9zMTZfczgoX19WQV9BUkdTX18pCiNkZWZpbmUgc3ZyZWludGVycHJldF9zMTZfczE2KC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF9zMTZfczE2KF9fVkFfQVJHU19fKQojZGVmaW5lIHN2cmVpbnRlcnByZXRfczE2X3MzMiguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfczE2X3MzMihfX1ZBX0FSR1NfXykKI2RlZmluZSBzdnJlaW50ZXJwcmV0X3MxNl9zNjQoLi4uKSBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3MxNl9zNjQoX19WQV9BUkdTX18pCiNkZWZpbmUgc3ZyZWludGVycHJldF9zMTZfdTgoLi4uKSBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3MxNl91OChfX1ZBX0FSR1NfXykKI2RlZmluZSBzdnJlaW50ZXJwcmV0X3MxNl91MTYoLi4uKSBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3MxNl91MTYoX19WQV9BUkdTX18pCiNkZWZpbmUgc3ZyZWludGVycHJldF9zMTZfdTMyKC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF9zMTZfdTMyKF9fVkFfQVJHU19fKQojZGVmaW5lIHN2cmVpbnRlcnByZXRfczE2X3U2NCguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfczE2X3U2NChfX1ZBX0FSR1NfXykKI2RlZmluZSBzdnJlaW50ZXJwcmV0X3MxNl9mMTYoLi4uKSBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3MxNl9mMTYoX19WQV9BUkdTX18pCiNpZiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfU1ZFX0JGMTYpCiNkZWZpbmUgc3ZyZWludGVycHJldF9zMTZfYmYxNiguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfczE2X2JmMTYoX19WQV9BUkdTX18pCiNlbmRpZiAvKiAjaWYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NWRV9CRjE2KSAqLwojZGVmaW5lIHN2cmVpbnRlcnByZXRfczE2X2YzMiguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfczE2X2YzMihfX1ZBX0FSR1NfXykKI2RlZmluZSBzdnJlaW50ZXJwcmV0X3MxNl9mNjQoLi4uKSBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3MxNl9mNjQoX19WQV9BUkdTX18pCiNkZWZpbmUgc3ZyZWludGVycHJldF9zMzJfczgoLi4uKSBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3MzMl9zOChfX1ZBX0FSR1NfXykKI2RlZmluZSBzdnJlaW50ZXJwcmV0X3MzMl9zMTYoLi4uKSBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3MzMl9zMTYoX19WQV9BUkdTX18pCiNkZWZpbmUgc3ZyZWludGVycHJldF9zMzJfczMyKC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF9zMzJfczMyKF9fVkFfQVJHU19fKQojZGVmaW5lIHN2cmVpbnRlcnByZXRfczMyX3M2NCguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfczMyX3M2NChfX1ZBX0FSR1NfXykKI2RlZmluZSBzdnJlaW50ZXJwcmV0X3MzMl91OCguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfczMyX3U4KF9fVkFfQVJHU19fKQojZGVmaW5lIHN2cmVpbnRlcnByZXRfczMyX3UxNiguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfczMyX3UxNihfX1ZBX0FSR1NfXykKI2RlZmluZSBzdnJlaW50ZXJwcmV0X3MzMl91MzIoLi4uKSBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3MzMl91MzIoX19WQV9BUkdTX18pCiNkZWZpbmUgc3ZyZWludGVycHJldF9zMzJfdTY0KC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF9zMzJfdTY0KF9fVkFfQVJHU19fKQojZGVmaW5lIHN2cmVpbnRlcnByZXRfczMyX2YxNiguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfczMyX2YxNihfX1ZBX0FSR1NfXykKI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9TVkVfQkYxNikKI2RlZmluZSBzdnJlaW50ZXJwcmV0X3MzMl9iZjE2KC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF9zMzJfYmYxNihfX1ZBX0FSR1NfXykKI2VuZGlmIC8qICNpZiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfU1ZFX0JGMTYpICovCiNkZWZpbmUgc3ZyZWludGVycHJldF9zMzJfZjMyKC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF9zMzJfZjMyKF9fVkFfQVJHU19fKQojZGVmaW5lIHN2cmVpbnRlcnByZXRfczMyX2Y2NCguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfczMyX2Y2NChfX1ZBX0FSR1NfXykKI2RlZmluZSBzdnJlaW50ZXJwcmV0X3M2NF9zOCguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfczY0X3M4KF9fVkFfQVJHU19fKQojZGVmaW5lIHN2cmVpbnRlcnByZXRfczY0X3MxNiguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfczY0X3MxNihfX1ZBX0FSR1NfXykKI2RlZmluZSBzdnJlaW50ZXJwcmV0X3M2NF9zMzIoLi4uKSBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3M2NF9zMzIoX19WQV9BUkdTX18pCiNkZWZpbmUgc3ZyZWludGVycHJldF9zNjRfczY0KC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF9zNjRfczY0KF9fVkFfQVJHU19fKQojZGVmaW5lIHN2cmVpbnRlcnByZXRfczY0X3U4KC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF9zNjRfdTgoX19WQV9BUkdTX18pCiNkZWZpbmUgc3ZyZWludGVycHJldF9zNjRfdTE2KC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF9zNjRfdTE2KF9fVkFfQVJHU19fKQojZGVmaW5lIHN2cmVpbnRlcnByZXRfczY0X3UzMiguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfczY0X3UzMihfX1ZBX0FSR1NfXykKI2RlZmluZSBzdnJlaW50ZXJwcmV0X3M2NF91NjQoLi4uKSBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3M2NF91NjQoX19WQV9BUkdTX18pCiNkZWZpbmUgc3ZyZWludGVycHJldF9zNjRfZjE2KC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF9zNjRfZjE2KF9fVkFfQVJHU19fKQojaWYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NWRV9CRjE2KQojZGVmaW5lIHN2cmVpbnRlcnByZXRfczY0X2JmMTYoLi4uKSBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3M2NF9iZjE2KF9fVkFfQVJHU19fKQojZW5kaWYgLyogI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9TVkVfQkYxNikgKi8KI2RlZmluZSBzdnJlaW50ZXJwcmV0X3M2NF9mMzIoLi4uKSBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3M2NF9mMzIoX19WQV9BUkdTX18pCiNkZWZpbmUgc3ZyZWludGVycHJldF9zNjRfZjY0KC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF9zNjRfZjY0KF9fVkFfQVJHU19fKQojZGVmaW5lIHN2cmVpbnRlcnByZXRfdThfczgoLi4uKSBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3U4X3M4KF9fVkFfQVJHU19fKQojZGVmaW5lIHN2cmVpbnRlcnByZXRfdThfczE2KC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF91OF9zMTYoX19WQV9BUkdTX18pCiNkZWZpbmUgc3ZyZWludGVycHJldF91OF9zMzIoLi4uKSBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3U4X3MzMihfX1ZBX0FSR1NfXykKI2RlZmluZSBzdnJlaW50ZXJwcmV0X3U4X3M2NCguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfdThfczY0KF9fVkFfQVJHU19fKQojZGVmaW5lIHN2cmVpbnRlcnByZXRfdThfdTgoLi4uKSBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3U4X3U4KF9fVkFfQVJHU19fKQojZGVmaW5lIHN2cmVpbnRlcnByZXRfdThfdTE2KC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF91OF91MTYoX19WQV9BUkdTX18pCiNkZWZpbmUgc3ZyZWludGVycHJldF91OF91MzIoLi4uKSBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3U4X3UzMihfX1ZBX0FSR1NfXykKI2RlZmluZSBzdnJlaW50ZXJwcmV0X3U4X3U2NCguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfdThfdTY0KF9fVkFfQVJHU19fKQojZGVmaW5lIHN2cmVpbnRlcnByZXRfdThfZjE2KC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF91OF9mMTYoX19WQV9BUkdTX18pCiNpZiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfU1ZFX0JGMTYpCiNkZWZpbmUgc3ZyZWludGVycHJldF91OF9iZjE2KC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF91OF9iZjE2KF9fVkFfQVJHU19fKQojZW5kaWYgLyogI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9TVkVfQkYxNikgKi8KI2RlZmluZSBzdnJlaW50ZXJwcmV0X3U4X2YzMiguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfdThfZjMyKF9fVkFfQVJHU19fKQojZGVmaW5lIHN2cmVpbnRlcnByZXRfdThfZjY0KC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF91OF9mNjQoX19WQV9BUkdTX18pCiNkZWZpbmUgc3ZyZWludGVycHJldF91MTZfczgoLi4uKSBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3UxNl9zOChfX1ZBX0FSR1NfXykKI2RlZmluZSBzdnJlaW50ZXJwcmV0X3UxNl9zMTYoLi4uKSBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3UxNl9zMTYoX19WQV9BUkdTX18pCiNkZWZpbmUgc3ZyZWludGVycHJldF91MTZfczMyKC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF91MTZfczMyKF9fVkFfQVJHU19fKQojZGVmaW5lIHN2cmVpbnRlcnByZXRfdTE2X3M2NCguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfdTE2X3M2NChfX1ZBX0FSR1NfXykKI2RlZmluZSBzdnJlaW50ZXJwcmV0X3UxNl91OCguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfdTE2X3U4KF9fVkFfQVJHU19fKQojZGVmaW5lIHN2cmVpbnRlcnByZXRfdTE2X3UxNiguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfdTE2X3UxNihfX1ZBX0FSR1NfXykKI2RlZmluZSBzdnJlaW50ZXJwcmV0X3UxNl91MzIoLi4uKSBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3UxNl91MzIoX19WQV9BUkdTX18pCiNkZWZpbmUgc3ZyZWludGVycHJldF91MTZfdTY0KC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF91MTZfdTY0KF9fVkFfQVJHU19fKQojZGVmaW5lIHN2cmVpbnRlcnByZXRfdTE2X2YxNiguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfdTE2X2YxNihfX1ZBX0FSR1NfXykKI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9TVkVfQkYxNikKI2RlZmluZSBzdnJlaW50ZXJwcmV0X3UxNl9iZjE2KC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF91MTZfYmYxNihfX1ZBX0FSR1NfXykKI2VuZGlmIC8qICNpZiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfU1ZFX0JGMTYpICovCiNkZWZpbmUgc3ZyZWludGVycHJldF91MTZfZjMyKC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF91MTZfZjMyKF9fVkFfQVJHU19fKQojZGVmaW5lIHN2cmVpbnRlcnByZXRfdTE2X2Y2NCguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfdTE2X2Y2NChfX1ZBX0FSR1NfXykKI2RlZmluZSBzdnJlaW50ZXJwcmV0X3UzMl9zOCguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfdTMyX3M4KF9fVkFfQVJHU19fKQojZGVmaW5lIHN2cmVpbnRlcnByZXRfdTMyX3MxNiguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfdTMyX3MxNihfX1ZBX0FSR1NfXykKI2RlZmluZSBzdnJlaW50ZXJwcmV0X3UzMl9zMzIoLi4uKSBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3UzMl9zMzIoX19WQV9BUkdTX18pCiNkZWZpbmUgc3ZyZWludGVycHJldF91MzJfczY0KC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF91MzJfczY0KF9fVkFfQVJHU19fKQojZGVmaW5lIHN2cmVpbnRlcnByZXRfdTMyX3U4KC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF91MzJfdTgoX19WQV9BUkdTX18pCiNkZWZpbmUgc3ZyZWludGVycHJldF91MzJfdTE2KC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF91MzJfdTE2KF9fVkFfQVJHU19fKQojZGVmaW5lIHN2cmVpbnRlcnByZXRfdTMyX3UzMiguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfdTMyX3UzMihfX1ZBX0FSR1NfXykKI2RlZmluZSBzdnJlaW50ZXJwcmV0X3UzMl91NjQoLi4uKSBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3UzMl91NjQoX19WQV9BUkdTX18pCiNkZWZpbmUgc3ZyZWludGVycHJldF91MzJfZjE2KC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF91MzJfZjE2KF9fVkFfQVJHU19fKQojaWYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NWRV9CRjE2KQojZGVmaW5lIHN2cmVpbnRlcnByZXRfdTMyX2JmMTYoLi4uKSBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3UzMl9iZjE2KF9fVkFfQVJHU19fKQojZW5kaWYgLyogI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9TVkVfQkYxNikgKi8KI2RlZmluZSBzdnJlaW50ZXJwcmV0X3UzMl9mMzIoLi4uKSBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3UzMl9mMzIoX19WQV9BUkdTX18pCiNkZWZpbmUgc3ZyZWludGVycHJldF91MzJfZjY0KC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF91MzJfZjY0KF9fVkFfQVJHU19fKQojZGVmaW5lIHN2cmVpbnRlcnByZXRfdTY0X3M4KC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF91NjRfczgoX19WQV9BUkdTX18pCiNkZWZpbmUgc3ZyZWludGVycHJldF91NjRfczE2KC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF91NjRfczE2KF9fVkFfQVJHU19fKQojZGVmaW5lIHN2cmVpbnRlcnByZXRfdTY0X3MzMiguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfdTY0X3MzMihfX1ZBX0FSR1NfXykKI2RlZmluZSBzdnJlaW50ZXJwcmV0X3U2NF9zNjQoLi4uKSBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3U2NF9zNjQoX19WQV9BUkdTX18pCiNkZWZpbmUgc3ZyZWludGVycHJldF91NjRfdTgoLi4uKSBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3U2NF91OChfX1ZBX0FSR1NfXykKI2RlZmluZSBzdnJlaW50ZXJwcmV0X3U2NF91MTYoLi4uKSBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3U2NF91MTYoX19WQV9BUkdTX18pCiNkZWZpbmUgc3ZyZWludGVycHJldF91NjRfdTMyKC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF91NjRfdTMyKF9fVkFfQVJHU19fKQojZGVmaW5lIHN2cmVpbnRlcnByZXRfdTY0X3U2NCguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfdTY0X3U2NChfX1ZBX0FSR1NfXykKI2RlZmluZSBzdnJlaW50ZXJwcmV0X3U2NF9mMTYoLi4uKSBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3U2NF9mMTYoX19WQV9BUkdTX18pCiNpZiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfU1ZFX0JGMTYpCiNkZWZpbmUgc3ZyZWludGVycHJldF91NjRfYmYxNiguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfdTY0X2JmMTYoX19WQV9BUkdTX18pCiNlbmRpZiAvKiAjaWYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NWRV9CRjE2KSAqLwojZGVmaW5lIHN2cmVpbnRlcnByZXRfdTY0X2YzMiguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfdTY0X2YzMihfX1ZBX0FSR1NfXykKI2RlZmluZSBzdnJlaW50ZXJwcmV0X3U2NF9mNjQoLi4uKSBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3U2NF9mNjQoX19WQV9BUkdTX18pCiNkZWZpbmUgc3ZyZWludGVycHJldF9mMTZfczgoLi4uKSBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X2YxNl9zOChfX1ZBX0FSR1NfXykKI2RlZmluZSBzdnJlaW50ZXJwcmV0X2YxNl9zMTYoLi4uKSBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X2YxNl9zMTYoX19WQV9BUkdTX18pCiNkZWZpbmUgc3ZyZWludGVycHJldF9mMTZfczMyKC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF9mMTZfczMyKF9fVkFfQVJHU19fKQojZGVmaW5lIHN2cmVpbnRlcnByZXRfZjE2X3M2NCguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfZjE2X3M2NChfX1ZBX0FSR1NfXykKI2RlZmluZSBzdnJlaW50ZXJwcmV0X2YxNl91OCguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfZjE2X3U4KF9fVkFfQVJHU19fKQojZGVmaW5lIHN2cmVpbnRlcnByZXRfZjE2X3UxNiguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfZjE2X3UxNihfX1ZBX0FSR1NfXykKI2RlZmluZSBzdnJlaW50ZXJwcmV0X2YxNl91MzIoLi4uKSBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X2YxNl91MzIoX19WQV9BUkdTX18pCiNkZWZpbmUgc3ZyZWludGVycHJldF9mMTZfdTY0KC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF9mMTZfdTY0KF9fVkFfQVJHU19fKQojZGVmaW5lIHN2cmVpbnRlcnByZXRfZjE2X2YxNiguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfZjE2X2YxNihfX1ZBX0FSR1NfXykKI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9TVkVfQkYxNikKI2RlZmluZSBzdnJlaW50ZXJwcmV0X2YxNl9iZjE2KC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF9mMTZfYmYxNihfX1ZBX0FSR1NfXykKI2VuZGlmIC8qICNpZiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfU1ZFX0JGMTYpICovCiNkZWZpbmUgc3ZyZWludGVycHJldF9mMTZfZjMyKC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF9mMTZfZjMyKF9fVkFfQVJHU19fKQojZGVmaW5lIHN2cmVpbnRlcnByZXRfZjE2X2Y2NCguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfZjE2X2Y2NChfX1ZBX0FSR1NfXykKI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9TVkVfQkYxNikKI2RlZmluZSBzdnJlaW50ZXJwcmV0X2JmMTZfczgoLi4uKSBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X2JmMTZfczgoX19WQV9BUkdTX18pCiNlbmRpZiAvKiAjaWYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NWRV9CRjE2KSAqLwojaWYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NWRV9CRjE2KQojZGVmaW5lIHN2cmVpbnRlcnByZXRfYmYxNl9zMTYoLi4uKSBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X2JmMTZfczE2KF9fVkFfQVJHU19fKQojZW5kaWYgLyogI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9TVkVfQkYxNikgKi8KI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9TVkVfQkYxNikKI2RlZmluZSBzdnJlaW50ZXJwcmV0X2JmMTZfczMyKC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF9iZjE2X3MzMihfX1ZBX0FSR1NfXykKI2VuZGlmIC8qICNpZiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfU1ZFX0JGMTYpICovCiNpZiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfU1ZFX0JGMTYpCiNkZWZpbmUgc3ZyZWludGVycHJldF9iZjE2X3M2NCguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfYmYxNl9zNjQoX19WQV9BUkdTX18pCiNlbmRpZiAvKiAjaWYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NWRV9CRjE2KSAqLwojaWYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NWRV9CRjE2KQojZGVmaW5lIHN2cmVpbnRlcnByZXRfYmYxNl91OCguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfYmYxNl91OChfX1ZBX0FSR1NfXykKI2VuZGlmIC8qICNpZiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfU1ZFX0JGMTYpICovCiNpZiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfU1ZFX0JGMTYpCiNkZWZpbmUgc3ZyZWludGVycHJldF9iZjE2X3UxNiguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfYmYxNl91MTYoX19WQV9BUkdTX18pCiNlbmRpZiAvKiAjaWYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NWRV9CRjE2KSAqLwojaWYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NWRV9CRjE2KQojZGVmaW5lIHN2cmVpbnRlcnByZXRfYmYxNl91MzIoLi4uKSBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X2JmMTZfdTMyKF9fVkFfQVJHU19fKQojZW5kaWYgLyogI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9TVkVfQkYxNikgKi8KI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9TVkVfQkYxNikKI2RlZmluZSBzdnJlaW50ZXJwcmV0X2JmMTZfdTY0KC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF9iZjE2X3U2NChfX1ZBX0FSR1NfXykKI2VuZGlmIC8qICNpZiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfU1ZFX0JGMTYpICovCiNpZiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfU1ZFX0JGMTYpCiNkZWZpbmUgc3ZyZWludGVycHJldF9iZjE2X2YxNiguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfYmYxNl9mMTYoX19WQV9BUkdTX18pCiNlbmRpZiAvKiAjaWYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NWRV9CRjE2KSAqLwojaWYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NWRV9CRjE2KQojZGVmaW5lIHN2cmVpbnRlcnByZXRfYmYxNl9iZjE2KC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF9iZjE2X2JmMTYoX19WQV9BUkdTX18pCiNlbmRpZiAvKiAjaWYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NWRV9CRjE2KSAqLwojaWYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NWRV9CRjE2KQojZGVmaW5lIHN2cmVpbnRlcnByZXRfYmYxNl9mMzIoLi4uKSBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X2JmMTZfZjMyKF9fVkFfQVJHU19fKQojZW5kaWYgLyogI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9TVkVfQkYxNikgKi8KI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9TVkVfQkYxNikKI2RlZmluZSBzdnJlaW50ZXJwcmV0X2JmMTZfZjY0KC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF9iZjE2X2Y2NChfX1ZBX0FSR1NfXykKI2VuZGlmIC8qICNpZiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfU1ZFX0JGMTYpICovCiNkZWZpbmUgc3ZyZWludGVycHJldF9mMzJfczgoLi4uKSBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X2YzMl9zOChfX1ZBX0FSR1NfXykKI2RlZmluZSBzdnJlaW50ZXJwcmV0X2YzMl9zMTYoLi4uKSBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X2YzMl9zMTYoX19WQV9BUkdTX18pCiNkZWZpbmUgc3ZyZWludGVycHJldF9mMzJfczMyKC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF9mMzJfczMyKF9fVkFfQVJHU19fKQojZGVmaW5lIHN2cmVpbnRlcnByZXRfZjMyX3M2NCguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfZjMyX3M2NChfX1ZBX0FSR1NfXykKI2RlZmluZSBzdnJlaW50ZXJwcmV0X2YzMl91OCguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfZjMyX3U4KF9fVkFfQVJHU19fKQojZGVmaW5lIHN2cmVpbnRlcnByZXRfZjMyX3UxNiguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfZjMyX3UxNihfX1ZBX0FSR1NfXykKI2RlZmluZSBzdnJlaW50ZXJwcmV0X2YzMl91MzIoLi4uKSBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X2YzMl91MzIoX19WQV9BUkdTX18pCiNkZWZpbmUgc3ZyZWludGVycHJldF9mMzJfdTY0KC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF9mMzJfdTY0KF9fVkFfQVJHU19fKQojZGVmaW5lIHN2cmVpbnRlcnByZXRfZjMyX2YxNiguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfZjMyX2YxNihfX1ZBX0FSR1NfXykKI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9TVkVfQkYxNikKI2RlZmluZSBzdnJlaW50ZXJwcmV0X2YzMl9iZjE2KC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF9mMzJfYmYxNihfX1ZBX0FSR1NfXykKI2VuZGlmIC8qICNpZiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfU1ZFX0JGMTYpICovCiNkZWZpbmUgc3ZyZWludGVycHJldF9mMzJfZjMyKC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF9mMzJfZjMyKF9fVkFfQVJHU19fKQojZGVmaW5lIHN2cmVpbnRlcnByZXRfZjMyX2Y2NCguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfZjMyX2Y2NChfX1ZBX0FSR1NfXykKI2RlZmluZSBzdnJlaW50ZXJwcmV0X2Y2NF9zOCguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfZjY0X3M4KF9fVkFfQVJHU19fKQojZGVmaW5lIHN2cmVpbnRlcnByZXRfZjY0X3MxNiguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfZjY0X3MxNihfX1ZBX0FSR1NfXykKI2RlZmluZSBzdnJlaW50ZXJwcmV0X2Y2NF9zMzIoLi4uKSBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X2Y2NF9zMzIoX19WQV9BUkdTX18pCiNkZWZpbmUgc3ZyZWludGVycHJldF9mNjRfczY0KC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF9mNjRfczY0KF9fVkFfQVJHU19fKQojZGVmaW5lIHN2cmVpbnRlcnByZXRfZjY0X3U4KC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF9mNjRfdTgoX19WQV9BUkdTX18pCiNkZWZpbmUgc3ZyZWludGVycHJldF9mNjRfdTE2KC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF9mNjRfdTE2KF9fVkFfQVJHU19fKQojZGVmaW5lIHN2cmVpbnRlcnByZXRfZjY0X3UzMiguLi4pIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfZjY0X3UzMihfX1ZBX0FSR1NfXykKI2RlZmluZSBzdnJlaW50ZXJwcmV0X2Y2NF91NjQoLi4uKSBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X2Y2NF91NjQoX19WQV9BUkdTX18pCiNkZWZpbmUgc3ZyZWludGVycHJldF9mNjRfZjE2KC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF9mNjRfZjE2KF9fVkFfQVJHU19fKQojaWYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NWRV9CRjE2KQojZGVmaW5lIHN2cmVpbnRlcnByZXRfZjY0X2JmMTYoLi4uKSBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X2Y2NF9iZjE2KF9fVkFfQVJHU19fKQojZW5kaWYgLyogI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9TVkVfQkYxNikgKi8KI2RlZmluZSBzdnJlaW50ZXJwcmV0X2Y2NF9mMzIoLi4uKSBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X2Y2NF9mMzIoX19WQV9BUkdTX18pCiNkZWZpbmUgc3ZyZWludGVycHJldF9mNjRfZjY0KC4uLikgX19idWlsdGluX3N2ZV9yZWludGVycHJldF9mNjRfZjY0KF9fVkFfQVJHU19fKQpfX2FpbyBzdmludDhfdCBzdnJlaW50ZXJwcmV0X3M4KHN2aW50OF90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfczhfczgob3ApOwp9CgpfX2FpbyBzdmludDhfdCBzdnJlaW50ZXJwcmV0X3M4KHN2aW50MTZfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3M4X3MxNihvcCk7Cn0KCl9fYWlvIHN2aW50OF90IHN2cmVpbnRlcnByZXRfczgoc3ZpbnQzMl90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfczhfczMyKG9wKTsKfQoKX19haW8gc3ZpbnQ4X3Qgc3ZyZWludGVycHJldF9zOChzdmludDY0X3Qgb3ApIHsKICByZXR1cm4gX19idWlsdGluX3N2ZV9yZWludGVycHJldF9zOF9zNjQob3ApOwp9CgpfX2FpbyBzdmludDhfdCBzdnJlaW50ZXJwcmV0X3M4KHN2dWludDhfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3M4X3U4KG9wKTsKfQoKX19haW8gc3ZpbnQ4X3Qgc3ZyZWludGVycHJldF9zOChzdnVpbnQxNl90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfczhfdTE2KG9wKTsKfQoKX19haW8gc3ZpbnQ4X3Qgc3ZyZWludGVycHJldF9zOChzdnVpbnQzMl90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfczhfdTMyKG9wKTsKfQoKX19haW8gc3ZpbnQ4X3Qgc3ZyZWludGVycHJldF9zOChzdnVpbnQ2NF90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfczhfdTY0KG9wKTsKfQoKX19haW8gc3ZpbnQ4X3Qgc3ZyZWludGVycHJldF9zOChzdmZsb2F0MTZfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3M4X2YxNihvcCk7Cn0KCiNpZiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfU1ZFX0JGMTYpCl9fYWlvIHN2aW50OF90IHN2cmVpbnRlcnByZXRfczgoc3ZiZmxvYXQxNl90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfczhfYmYxNihvcCk7Cn0KCiNlbmRpZiAvKiAjaWYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NWRV9CRjE2KSAqLwpfX2FpbyBzdmludDhfdCBzdnJlaW50ZXJwcmV0X3M4KHN2ZmxvYXQzMl90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfczhfZjMyKG9wKTsKfQoKX19haW8gc3ZpbnQ4X3Qgc3ZyZWludGVycHJldF9zOChzdmZsb2F0NjRfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3M4X2Y2NChvcCk7Cn0KCl9fYWlvIHN2aW50MTZfdCBzdnJlaW50ZXJwcmV0X3MxNihzdmludDhfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3MxNl9zOChvcCk7Cn0KCl9fYWlvIHN2aW50MTZfdCBzdnJlaW50ZXJwcmV0X3MxNihzdmludDE2X3Qgb3ApIHsKICByZXR1cm4gX19idWlsdGluX3N2ZV9yZWludGVycHJldF9zMTZfczE2KG9wKTsKfQoKX19haW8gc3ZpbnQxNl90IHN2cmVpbnRlcnByZXRfczE2KHN2aW50MzJfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3MxNl9zMzIob3ApOwp9CgpfX2FpbyBzdmludDE2X3Qgc3ZyZWludGVycHJldF9zMTYoc3ZpbnQ2NF90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfczE2X3M2NChvcCk7Cn0KCl9fYWlvIHN2aW50MTZfdCBzdnJlaW50ZXJwcmV0X3MxNihzdnVpbnQ4X3Qgb3ApIHsKICByZXR1cm4gX19idWlsdGluX3N2ZV9yZWludGVycHJldF9zMTZfdTgob3ApOwp9CgpfX2FpbyBzdmludDE2X3Qgc3ZyZWludGVycHJldF9zMTYoc3Z1aW50MTZfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3MxNl91MTYob3ApOwp9CgpfX2FpbyBzdmludDE2X3Qgc3ZyZWludGVycHJldF9zMTYoc3Z1aW50MzJfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3MxNl91MzIob3ApOwp9CgpfX2FpbyBzdmludDE2X3Qgc3ZyZWludGVycHJldF9zMTYoc3Z1aW50NjRfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3MxNl91NjQob3ApOwp9CgpfX2FpbyBzdmludDE2X3Qgc3ZyZWludGVycHJldF9zMTYoc3ZmbG9hdDE2X3Qgb3ApIHsKICByZXR1cm4gX19idWlsdGluX3N2ZV9yZWludGVycHJldF9zMTZfZjE2KG9wKTsKfQoKI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9TVkVfQkYxNikKX19haW8gc3ZpbnQxNl90IHN2cmVpbnRlcnByZXRfczE2KHN2YmZsb2F0MTZfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3MxNl9iZjE2KG9wKTsKfQoKI2VuZGlmIC8qICNpZiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfU1ZFX0JGMTYpICovCl9fYWlvIHN2aW50MTZfdCBzdnJlaW50ZXJwcmV0X3MxNihzdmZsb2F0MzJfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3MxNl9mMzIob3ApOwp9CgpfX2FpbyBzdmludDE2X3Qgc3ZyZWludGVycHJldF9zMTYoc3ZmbG9hdDY0X3Qgb3ApIHsKICByZXR1cm4gX19idWlsdGluX3N2ZV9yZWludGVycHJldF9zMTZfZjY0KG9wKTsKfQoKX19haW8gc3ZpbnQzMl90IHN2cmVpbnRlcnByZXRfczMyKHN2aW50OF90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfczMyX3M4KG9wKTsKfQoKX19haW8gc3ZpbnQzMl90IHN2cmVpbnRlcnByZXRfczMyKHN2aW50MTZfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3MzMl9zMTYob3ApOwp9CgpfX2FpbyBzdmludDMyX3Qgc3ZyZWludGVycHJldF9zMzIoc3ZpbnQzMl90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfczMyX3MzMihvcCk7Cn0KCl9fYWlvIHN2aW50MzJfdCBzdnJlaW50ZXJwcmV0X3MzMihzdmludDY0X3Qgb3ApIHsKICByZXR1cm4gX19idWlsdGluX3N2ZV9yZWludGVycHJldF9zMzJfczY0KG9wKTsKfQoKX19haW8gc3ZpbnQzMl90IHN2cmVpbnRlcnByZXRfczMyKHN2dWludDhfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3MzMl91OChvcCk7Cn0KCl9fYWlvIHN2aW50MzJfdCBzdnJlaW50ZXJwcmV0X3MzMihzdnVpbnQxNl90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfczMyX3UxNihvcCk7Cn0KCl9fYWlvIHN2aW50MzJfdCBzdnJlaW50ZXJwcmV0X3MzMihzdnVpbnQzMl90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfczMyX3UzMihvcCk7Cn0KCl9fYWlvIHN2aW50MzJfdCBzdnJlaW50ZXJwcmV0X3MzMihzdnVpbnQ2NF90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfczMyX3U2NChvcCk7Cn0KCl9fYWlvIHN2aW50MzJfdCBzdnJlaW50ZXJwcmV0X3MzMihzdmZsb2F0MTZfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3MzMl9mMTYob3ApOwp9CgojaWYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NWRV9CRjE2KQpfX2FpbyBzdmludDMyX3Qgc3ZyZWludGVycHJldF9zMzIoc3ZiZmxvYXQxNl90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfczMyX2JmMTYob3ApOwp9CgojZW5kaWYgLyogI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9TVkVfQkYxNikgKi8KX19haW8gc3ZpbnQzMl90IHN2cmVpbnRlcnByZXRfczMyKHN2ZmxvYXQzMl90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfczMyX2YzMihvcCk7Cn0KCl9fYWlvIHN2aW50MzJfdCBzdnJlaW50ZXJwcmV0X3MzMihzdmZsb2F0NjRfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3MzMl9mNjQob3ApOwp9CgpfX2FpbyBzdmludDY0X3Qgc3ZyZWludGVycHJldF9zNjQoc3ZpbnQ4X3Qgb3ApIHsKICByZXR1cm4gX19idWlsdGluX3N2ZV9yZWludGVycHJldF9zNjRfczgob3ApOwp9CgpfX2FpbyBzdmludDY0X3Qgc3ZyZWludGVycHJldF9zNjQoc3ZpbnQxNl90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfczY0X3MxNihvcCk7Cn0KCl9fYWlvIHN2aW50NjRfdCBzdnJlaW50ZXJwcmV0X3M2NChzdmludDMyX3Qgb3ApIHsKICByZXR1cm4gX19idWlsdGluX3N2ZV9yZWludGVycHJldF9zNjRfczMyKG9wKTsKfQoKX19haW8gc3ZpbnQ2NF90IHN2cmVpbnRlcnByZXRfczY0KHN2aW50NjRfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3M2NF9zNjQob3ApOwp9CgpfX2FpbyBzdmludDY0X3Qgc3ZyZWludGVycHJldF9zNjQoc3Z1aW50OF90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfczY0X3U4KG9wKTsKfQoKX19haW8gc3ZpbnQ2NF90IHN2cmVpbnRlcnByZXRfczY0KHN2dWludDE2X3Qgb3ApIHsKICByZXR1cm4gX19idWlsdGluX3N2ZV9yZWludGVycHJldF9zNjRfdTE2KG9wKTsKfQoKX19haW8gc3ZpbnQ2NF90IHN2cmVpbnRlcnByZXRfczY0KHN2dWludDMyX3Qgb3ApIHsKICByZXR1cm4gX19idWlsdGluX3N2ZV9yZWludGVycHJldF9zNjRfdTMyKG9wKTsKfQoKX19haW8gc3ZpbnQ2NF90IHN2cmVpbnRlcnByZXRfczY0KHN2dWludDY0X3Qgb3ApIHsKICByZXR1cm4gX19idWlsdGluX3N2ZV9yZWludGVycHJldF9zNjRfdTY0KG9wKTsKfQoKX19haW8gc3ZpbnQ2NF90IHN2cmVpbnRlcnByZXRfczY0KHN2ZmxvYXQxNl90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfczY0X2YxNihvcCk7Cn0KCiNpZiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfU1ZFX0JGMTYpCl9fYWlvIHN2aW50NjRfdCBzdnJlaW50ZXJwcmV0X3M2NChzdmJmbG9hdDE2X3Qgb3ApIHsKICByZXR1cm4gX19idWlsdGluX3N2ZV9yZWludGVycHJldF9zNjRfYmYxNihvcCk7Cn0KCiNlbmRpZiAvKiAjaWYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NWRV9CRjE2KSAqLwpfX2FpbyBzdmludDY0X3Qgc3ZyZWludGVycHJldF9zNjQoc3ZmbG9hdDMyX3Qgb3ApIHsKICByZXR1cm4gX19idWlsdGluX3N2ZV9yZWludGVycHJldF9zNjRfZjMyKG9wKTsKfQoKX19haW8gc3ZpbnQ2NF90IHN2cmVpbnRlcnByZXRfczY0KHN2ZmxvYXQ2NF90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfczY0X2Y2NChvcCk7Cn0KCl9fYWlvIHN2dWludDhfdCBzdnJlaW50ZXJwcmV0X3U4KHN2aW50OF90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfdThfczgob3ApOwp9CgpfX2FpbyBzdnVpbnQ4X3Qgc3ZyZWludGVycHJldF91OChzdmludDE2X3Qgb3ApIHsKICByZXR1cm4gX19idWlsdGluX3N2ZV9yZWludGVycHJldF91OF9zMTYob3ApOwp9CgpfX2FpbyBzdnVpbnQ4X3Qgc3ZyZWludGVycHJldF91OChzdmludDMyX3Qgb3ApIHsKICByZXR1cm4gX19idWlsdGluX3N2ZV9yZWludGVycHJldF91OF9zMzIob3ApOwp9CgpfX2FpbyBzdnVpbnQ4X3Qgc3ZyZWludGVycHJldF91OChzdmludDY0X3Qgb3ApIHsKICByZXR1cm4gX19idWlsdGluX3N2ZV9yZWludGVycHJldF91OF9zNjQob3ApOwp9CgpfX2FpbyBzdnVpbnQ4X3Qgc3ZyZWludGVycHJldF91OChzdnVpbnQ4X3Qgb3ApIHsKICByZXR1cm4gX19idWlsdGluX3N2ZV9yZWludGVycHJldF91OF91OChvcCk7Cn0KCl9fYWlvIHN2dWludDhfdCBzdnJlaW50ZXJwcmV0X3U4KHN2dWludDE2X3Qgb3ApIHsKICByZXR1cm4gX19idWlsdGluX3N2ZV9yZWludGVycHJldF91OF91MTYob3ApOwp9CgpfX2FpbyBzdnVpbnQ4X3Qgc3ZyZWludGVycHJldF91OChzdnVpbnQzMl90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfdThfdTMyKG9wKTsKfQoKX19haW8gc3Z1aW50OF90IHN2cmVpbnRlcnByZXRfdTgoc3Z1aW50NjRfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3U4X3U2NChvcCk7Cn0KCl9fYWlvIHN2dWludDhfdCBzdnJlaW50ZXJwcmV0X3U4KHN2ZmxvYXQxNl90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfdThfZjE2KG9wKTsKfQoKI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9TVkVfQkYxNikKX19haW8gc3Z1aW50OF90IHN2cmVpbnRlcnByZXRfdTgoc3ZiZmxvYXQxNl90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfdThfYmYxNihvcCk7Cn0KCiNlbmRpZiAvKiAjaWYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NWRV9CRjE2KSAqLwpfX2FpbyBzdnVpbnQ4X3Qgc3ZyZWludGVycHJldF91OChzdmZsb2F0MzJfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3U4X2YzMihvcCk7Cn0KCl9fYWlvIHN2dWludDhfdCBzdnJlaW50ZXJwcmV0X3U4KHN2ZmxvYXQ2NF90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfdThfZjY0KG9wKTsKfQoKX19haW8gc3Z1aW50MTZfdCBzdnJlaW50ZXJwcmV0X3UxNihzdmludDhfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3UxNl9zOChvcCk7Cn0KCl9fYWlvIHN2dWludDE2X3Qgc3ZyZWludGVycHJldF91MTYoc3ZpbnQxNl90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfdTE2X3MxNihvcCk7Cn0KCl9fYWlvIHN2dWludDE2X3Qgc3ZyZWludGVycHJldF91MTYoc3ZpbnQzMl90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfdTE2X3MzMihvcCk7Cn0KCl9fYWlvIHN2dWludDE2X3Qgc3ZyZWludGVycHJldF91MTYoc3ZpbnQ2NF90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfdTE2X3M2NChvcCk7Cn0KCl9fYWlvIHN2dWludDE2X3Qgc3ZyZWludGVycHJldF91MTYoc3Z1aW50OF90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfdTE2X3U4KG9wKTsKfQoKX19haW8gc3Z1aW50MTZfdCBzdnJlaW50ZXJwcmV0X3UxNihzdnVpbnQxNl90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfdTE2X3UxNihvcCk7Cn0KCl9fYWlvIHN2dWludDE2X3Qgc3ZyZWludGVycHJldF91MTYoc3Z1aW50MzJfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3UxNl91MzIob3ApOwp9CgpfX2FpbyBzdnVpbnQxNl90IHN2cmVpbnRlcnByZXRfdTE2KHN2dWludDY0X3Qgb3ApIHsKICByZXR1cm4gX19idWlsdGluX3N2ZV9yZWludGVycHJldF91MTZfdTY0KG9wKTsKfQoKX19haW8gc3Z1aW50MTZfdCBzdnJlaW50ZXJwcmV0X3UxNihzdmZsb2F0MTZfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3UxNl9mMTYob3ApOwp9CgojaWYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NWRV9CRjE2KQpfX2FpbyBzdnVpbnQxNl90IHN2cmVpbnRlcnByZXRfdTE2KHN2YmZsb2F0MTZfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3UxNl9iZjE2KG9wKTsKfQoKI2VuZGlmIC8qICNpZiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfU1ZFX0JGMTYpICovCl9fYWlvIHN2dWludDE2X3Qgc3ZyZWludGVycHJldF91MTYoc3ZmbG9hdDMyX3Qgb3ApIHsKICByZXR1cm4gX19idWlsdGluX3N2ZV9yZWludGVycHJldF91MTZfZjMyKG9wKTsKfQoKX19haW8gc3Z1aW50MTZfdCBzdnJlaW50ZXJwcmV0X3UxNihzdmZsb2F0NjRfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3UxNl9mNjQob3ApOwp9CgpfX2FpbyBzdnVpbnQzMl90IHN2cmVpbnRlcnByZXRfdTMyKHN2aW50OF90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfdTMyX3M4KG9wKTsKfQoKX19haW8gc3Z1aW50MzJfdCBzdnJlaW50ZXJwcmV0X3UzMihzdmludDE2X3Qgb3ApIHsKICByZXR1cm4gX19idWlsdGluX3N2ZV9yZWludGVycHJldF91MzJfczE2KG9wKTsKfQoKX19haW8gc3Z1aW50MzJfdCBzdnJlaW50ZXJwcmV0X3UzMihzdmludDMyX3Qgb3ApIHsKICByZXR1cm4gX19idWlsdGluX3N2ZV9yZWludGVycHJldF91MzJfczMyKG9wKTsKfQoKX19haW8gc3Z1aW50MzJfdCBzdnJlaW50ZXJwcmV0X3UzMihzdmludDY0X3Qgb3ApIHsKICByZXR1cm4gX19idWlsdGluX3N2ZV9yZWludGVycHJldF91MzJfczY0KG9wKTsKfQoKX19haW8gc3Z1aW50MzJfdCBzdnJlaW50ZXJwcmV0X3UzMihzdnVpbnQ4X3Qgb3ApIHsKICByZXR1cm4gX19idWlsdGluX3N2ZV9yZWludGVycHJldF91MzJfdTgob3ApOwp9CgpfX2FpbyBzdnVpbnQzMl90IHN2cmVpbnRlcnByZXRfdTMyKHN2dWludDE2X3Qgb3ApIHsKICByZXR1cm4gX19idWlsdGluX3N2ZV9yZWludGVycHJldF91MzJfdTE2KG9wKTsKfQoKX19haW8gc3Z1aW50MzJfdCBzdnJlaW50ZXJwcmV0X3UzMihzdnVpbnQzMl90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfdTMyX3UzMihvcCk7Cn0KCl9fYWlvIHN2dWludDMyX3Qgc3ZyZWludGVycHJldF91MzIoc3Z1aW50NjRfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3UzMl91NjQob3ApOwp9CgpfX2FpbyBzdnVpbnQzMl90IHN2cmVpbnRlcnByZXRfdTMyKHN2ZmxvYXQxNl90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfdTMyX2YxNihvcCk7Cn0KCiNpZiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfU1ZFX0JGMTYpCl9fYWlvIHN2dWludDMyX3Qgc3ZyZWludGVycHJldF91MzIoc3ZiZmxvYXQxNl90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfdTMyX2JmMTYob3ApOwp9CgojZW5kaWYgLyogI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9TVkVfQkYxNikgKi8KX19haW8gc3Z1aW50MzJfdCBzdnJlaW50ZXJwcmV0X3UzMihzdmZsb2F0MzJfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3UzMl9mMzIob3ApOwp9CgpfX2FpbyBzdnVpbnQzMl90IHN2cmVpbnRlcnByZXRfdTMyKHN2ZmxvYXQ2NF90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfdTMyX2Y2NChvcCk7Cn0KCl9fYWlvIHN2dWludDY0X3Qgc3ZyZWludGVycHJldF91NjQoc3ZpbnQ4X3Qgb3ApIHsKICByZXR1cm4gX19idWlsdGluX3N2ZV9yZWludGVycHJldF91NjRfczgob3ApOwp9CgpfX2FpbyBzdnVpbnQ2NF90IHN2cmVpbnRlcnByZXRfdTY0KHN2aW50MTZfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3U2NF9zMTYob3ApOwp9CgpfX2FpbyBzdnVpbnQ2NF90IHN2cmVpbnRlcnByZXRfdTY0KHN2aW50MzJfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3U2NF9zMzIob3ApOwp9CgpfX2FpbyBzdnVpbnQ2NF90IHN2cmVpbnRlcnByZXRfdTY0KHN2aW50NjRfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3U2NF9zNjQob3ApOwp9CgpfX2FpbyBzdnVpbnQ2NF90IHN2cmVpbnRlcnByZXRfdTY0KHN2dWludDhfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3U2NF91OChvcCk7Cn0KCl9fYWlvIHN2dWludDY0X3Qgc3ZyZWludGVycHJldF91NjQoc3Z1aW50MTZfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X3U2NF91MTYob3ApOwp9CgpfX2FpbyBzdnVpbnQ2NF90IHN2cmVpbnRlcnByZXRfdTY0KHN2dWludDMyX3Qgb3ApIHsKICByZXR1cm4gX19idWlsdGluX3N2ZV9yZWludGVycHJldF91NjRfdTMyKG9wKTsKfQoKX19haW8gc3Z1aW50NjRfdCBzdnJlaW50ZXJwcmV0X3U2NChzdnVpbnQ2NF90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfdTY0X3U2NChvcCk7Cn0KCl9fYWlvIHN2dWludDY0X3Qgc3ZyZWludGVycHJldF91NjQoc3ZmbG9hdDE2X3Qgb3ApIHsKICByZXR1cm4gX19idWlsdGluX3N2ZV9yZWludGVycHJldF91NjRfZjE2KG9wKTsKfQoKI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9TVkVfQkYxNikKX19haW8gc3Z1aW50NjRfdCBzdnJlaW50ZXJwcmV0X3U2NChzdmJmbG9hdDE2X3Qgb3ApIHsKICByZXR1cm4gX19idWlsdGluX3N2ZV9yZWludGVycHJldF91NjRfYmYxNihvcCk7Cn0KCiNlbmRpZiAvKiAjaWYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NWRV9CRjE2KSAqLwpfX2FpbyBzdnVpbnQ2NF90IHN2cmVpbnRlcnByZXRfdTY0KHN2ZmxvYXQzMl90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfdTY0X2YzMihvcCk7Cn0KCl9fYWlvIHN2dWludDY0X3Qgc3ZyZWludGVycHJldF91NjQoc3ZmbG9hdDY0X3Qgb3ApIHsKICByZXR1cm4gX19idWlsdGluX3N2ZV9yZWludGVycHJldF91NjRfZjY0KG9wKTsKfQoKX19haW8gc3ZmbG9hdDE2X3Qgc3ZyZWludGVycHJldF9mMTYoc3ZpbnQ4X3Qgb3ApIHsKICByZXR1cm4gX19idWlsdGluX3N2ZV9yZWludGVycHJldF9mMTZfczgob3ApOwp9CgpfX2FpbyBzdmZsb2F0MTZfdCBzdnJlaW50ZXJwcmV0X2YxNihzdmludDE2X3Qgb3ApIHsKICByZXR1cm4gX19idWlsdGluX3N2ZV9yZWludGVycHJldF9mMTZfczE2KG9wKTsKfQoKX19haW8gc3ZmbG9hdDE2X3Qgc3ZyZWludGVycHJldF9mMTYoc3ZpbnQzMl90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfZjE2X3MzMihvcCk7Cn0KCl9fYWlvIHN2ZmxvYXQxNl90IHN2cmVpbnRlcnByZXRfZjE2KHN2aW50NjRfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X2YxNl9zNjQob3ApOwp9CgpfX2FpbyBzdmZsb2F0MTZfdCBzdnJlaW50ZXJwcmV0X2YxNihzdnVpbnQ4X3Qgb3ApIHsKICByZXR1cm4gX19idWlsdGluX3N2ZV9yZWludGVycHJldF9mMTZfdTgob3ApOwp9CgpfX2FpbyBzdmZsb2F0MTZfdCBzdnJlaW50ZXJwcmV0X2YxNihzdnVpbnQxNl90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfZjE2X3UxNihvcCk7Cn0KCl9fYWlvIHN2ZmxvYXQxNl90IHN2cmVpbnRlcnByZXRfZjE2KHN2dWludDMyX3Qgb3ApIHsKICByZXR1cm4gX19idWlsdGluX3N2ZV9yZWludGVycHJldF9mMTZfdTMyKG9wKTsKfQoKX19haW8gc3ZmbG9hdDE2X3Qgc3ZyZWludGVycHJldF9mMTYoc3Z1aW50NjRfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X2YxNl91NjQob3ApOwp9CgpfX2FpbyBzdmZsb2F0MTZfdCBzdnJlaW50ZXJwcmV0X2YxNihzdmZsb2F0MTZfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X2YxNl9mMTYob3ApOwp9CgojaWYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NWRV9CRjE2KQpfX2FpbyBzdmZsb2F0MTZfdCBzdnJlaW50ZXJwcmV0X2YxNihzdmJmbG9hdDE2X3Qgb3ApIHsKICByZXR1cm4gX19idWlsdGluX3N2ZV9yZWludGVycHJldF9mMTZfYmYxNihvcCk7Cn0KCiNlbmRpZiAvKiAjaWYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NWRV9CRjE2KSAqLwpfX2FpbyBzdmZsb2F0MTZfdCBzdnJlaW50ZXJwcmV0X2YxNihzdmZsb2F0MzJfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X2YxNl9mMzIob3ApOwp9CgpfX2FpbyBzdmZsb2F0MTZfdCBzdnJlaW50ZXJwcmV0X2YxNihzdmZsb2F0NjRfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X2YxNl9mNjQob3ApOwp9CgojaWYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NWRV9CRjE2KQpfX2FpbyBzdmJmbG9hdDE2X3Qgc3ZyZWludGVycHJldF9iZjE2KHN2aW50OF90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfYmYxNl9zOChvcCk7Cn0KCiNlbmRpZiAvKiAjaWYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NWRV9CRjE2KSAqLwojaWYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NWRV9CRjE2KQpfX2FpbyBzdmJmbG9hdDE2X3Qgc3ZyZWludGVycHJldF9iZjE2KHN2aW50MTZfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X2JmMTZfczE2KG9wKTsKfQoKI2VuZGlmIC8qICNpZiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfU1ZFX0JGMTYpICovCiNpZiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfU1ZFX0JGMTYpCl9fYWlvIHN2YmZsb2F0MTZfdCBzdnJlaW50ZXJwcmV0X2JmMTYoc3ZpbnQzMl90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfYmYxNl9zMzIob3ApOwp9CgojZW5kaWYgLyogI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9TVkVfQkYxNikgKi8KI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9TVkVfQkYxNikKX19haW8gc3ZiZmxvYXQxNl90IHN2cmVpbnRlcnByZXRfYmYxNihzdmludDY0X3Qgb3ApIHsKICByZXR1cm4gX19idWlsdGluX3N2ZV9yZWludGVycHJldF9iZjE2X3M2NChvcCk7Cn0KCiNlbmRpZiAvKiAjaWYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NWRV9CRjE2KSAqLwojaWYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NWRV9CRjE2KQpfX2FpbyBzdmJmbG9hdDE2X3Qgc3ZyZWludGVycHJldF9iZjE2KHN2dWludDhfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X2JmMTZfdTgob3ApOwp9CgojZW5kaWYgLyogI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9TVkVfQkYxNikgKi8KI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9TVkVfQkYxNikKX19haW8gc3ZiZmxvYXQxNl90IHN2cmVpbnRlcnByZXRfYmYxNihzdnVpbnQxNl90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfYmYxNl91MTYob3ApOwp9CgojZW5kaWYgLyogI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9TVkVfQkYxNikgKi8KI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9TVkVfQkYxNikKX19haW8gc3ZiZmxvYXQxNl90IHN2cmVpbnRlcnByZXRfYmYxNihzdnVpbnQzMl90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfYmYxNl91MzIob3ApOwp9CgojZW5kaWYgLyogI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9TVkVfQkYxNikgKi8KI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9TVkVfQkYxNikKX19haW8gc3ZiZmxvYXQxNl90IHN2cmVpbnRlcnByZXRfYmYxNihzdnVpbnQ2NF90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfYmYxNl91NjQob3ApOwp9CgojZW5kaWYgLyogI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9TVkVfQkYxNikgKi8KI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9TVkVfQkYxNikKX19haW8gc3ZiZmxvYXQxNl90IHN2cmVpbnRlcnByZXRfYmYxNihzdmZsb2F0MTZfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X2JmMTZfZjE2KG9wKTsKfQoKI2VuZGlmIC8qICNpZiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfU1ZFX0JGMTYpICovCiNpZiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfU1ZFX0JGMTYpCl9fYWlvIHN2YmZsb2F0MTZfdCBzdnJlaW50ZXJwcmV0X2JmMTYoc3ZiZmxvYXQxNl90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfYmYxNl9iZjE2KG9wKTsKfQoKI2VuZGlmIC8qICNpZiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfU1ZFX0JGMTYpICovCiNpZiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfU1ZFX0JGMTYpCl9fYWlvIHN2YmZsb2F0MTZfdCBzdnJlaW50ZXJwcmV0X2JmMTYoc3ZmbG9hdDMyX3Qgb3ApIHsKICByZXR1cm4gX19idWlsdGluX3N2ZV9yZWludGVycHJldF9iZjE2X2YzMihvcCk7Cn0KCiNlbmRpZiAvKiAjaWYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NWRV9CRjE2KSAqLwojaWYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NWRV9CRjE2KQpfX2FpbyBzdmJmbG9hdDE2X3Qgc3ZyZWludGVycHJldF9iZjE2KHN2ZmxvYXQ2NF90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfYmYxNl9mNjQob3ApOwp9CgojZW5kaWYgLyogI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9TVkVfQkYxNikgKi8KX19haW8gc3ZmbG9hdDMyX3Qgc3ZyZWludGVycHJldF9mMzIoc3ZpbnQ4X3Qgb3ApIHsKICByZXR1cm4gX19idWlsdGluX3N2ZV9yZWludGVycHJldF9mMzJfczgob3ApOwp9CgpfX2FpbyBzdmZsb2F0MzJfdCBzdnJlaW50ZXJwcmV0X2YzMihzdmludDE2X3Qgb3ApIHsKICByZXR1cm4gX19idWlsdGluX3N2ZV9yZWludGVycHJldF9mMzJfczE2KG9wKTsKfQoKX19haW8gc3ZmbG9hdDMyX3Qgc3ZyZWludGVycHJldF9mMzIoc3ZpbnQzMl90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfZjMyX3MzMihvcCk7Cn0KCl9fYWlvIHN2ZmxvYXQzMl90IHN2cmVpbnRlcnByZXRfZjMyKHN2aW50NjRfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X2YzMl9zNjQob3ApOwp9CgpfX2FpbyBzdmZsb2F0MzJfdCBzdnJlaW50ZXJwcmV0X2YzMihzdnVpbnQ4X3Qgb3ApIHsKICByZXR1cm4gX19idWlsdGluX3N2ZV9yZWludGVycHJldF9mMzJfdTgob3ApOwp9CgpfX2FpbyBzdmZsb2F0MzJfdCBzdnJlaW50ZXJwcmV0X2YzMihzdnVpbnQxNl90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfZjMyX3UxNihvcCk7Cn0KCl9fYWlvIHN2ZmxvYXQzMl90IHN2cmVpbnRlcnByZXRfZjMyKHN2dWludDMyX3Qgb3ApIHsKICByZXR1cm4gX19idWlsdGluX3N2ZV9yZWludGVycHJldF9mMzJfdTMyKG9wKTsKfQoKX19haW8gc3ZmbG9hdDMyX3Qgc3ZyZWludGVycHJldF9mMzIoc3Z1aW50NjRfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X2YzMl91NjQob3ApOwp9CgpfX2FpbyBzdmZsb2F0MzJfdCBzdnJlaW50ZXJwcmV0X2YzMihzdmZsb2F0MTZfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X2YzMl9mMTYob3ApOwp9CgojaWYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NWRV9CRjE2KQpfX2FpbyBzdmZsb2F0MzJfdCBzdnJlaW50ZXJwcmV0X2YzMihzdmJmbG9hdDE2X3Qgb3ApIHsKICByZXR1cm4gX19idWlsdGluX3N2ZV9yZWludGVycHJldF9mMzJfYmYxNihvcCk7Cn0KCiNlbmRpZiAvKiAjaWYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NWRV9CRjE2KSAqLwpfX2FpbyBzdmZsb2F0MzJfdCBzdnJlaW50ZXJwcmV0X2YzMihzdmZsb2F0MzJfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X2YzMl9mMzIob3ApOwp9CgpfX2FpbyBzdmZsb2F0MzJfdCBzdnJlaW50ZXJwcmV0X2YzMihzdmZsb2F0NjRfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X2YzMl9mNjQob3ApOwp9CgpfX2FpbyBzdmZsb2F0NjRfdCBzdnJlaW50ZXJwcmV0X2Y2NChzdmludDhfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X2Y2NF9zOChvcCk7Cn0KCl9fYWlvIHN2ZmxvYXQ2NF90IHN2cmVpbnRlcnByZXRfZjY0KHN2aW50MTZfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X2Y2NF9zMTYob3ApOwp9CgpfX2FpbyBzdmZsb2F0NjRfdCBzdnJlaW50ZXJwcmV0X2Y2NChzdmludDMyX3Qgb3ApIHsKICByZXR1cm4gX19idWlsdGluX3N2ZV9yZWludGVycHJldF9mNjRfczMyKG9wKTsKfQoKX19haW8gc3ZmbG9hdDY0X3Qgc3ZyZWludGVycHJldF9mNjQoc3ZpbnQ2NF90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfZjY0X3M2NChvcCk7Cn0KCl9fYWlvIHN2ZmxvYXQ2NF90IHN2cmVpbnRlcnByZXRfZjY0KHN2dWludDhfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X2Y2NF91OChvcCk7Cn0KCl9fYWlvIHN2ZmxvYXQ2NF90IHN2cmVpbnRlcnByZXRfZjY0KHN2dWludDE2X3Qgb3ApIHsKICByZXR1cm4gX19idWlsdGluX3N2ZV9yZWludGVycHJldF9mNjRfdTE2KG9wKTsKfQoKX19haW8gc3ZmbG9hdDY0X3Qgc3ZyZWludGVycHJldF9mNjQoc3Z1aW50MzJfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X2Y2NF91MzIob3ApOwp9CgpfX2FpbyBzdmZsb2F0NjRfdCBzdnJlaW50ZXJwcmV0X2Y2NChzdnVpbnQ2NF90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfZjY0X3U2NChvcCk7Cn0KCl9fYWlvIHN2ZmxvYXQ2NF90IHN2cmVpbnRlcnByZXRfZjY0KHN2ZmxvYXQxNl90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfZjY0X2YxNihvcCk7Cn0KCiNpZiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfU1ZFX0JGMTYpCl9fYWlvIHN2ZmxvYXQ2NF90IHN2cmVpbnRlcnByZXRfZjY0KHN2YmZsb2F0MTZfdCBvcCkgewogIHJldHVybiBfX2J1aWx0aW5fc3ZlX3JlaW50ZXJwcmV0X2Y2NF9iZjE2KG9wKTsKfQoKI2VuZGlmIC8qICNpZiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfU1ZFX0JGMTYpICovCl9fYWlvIHN2ZmxvYXQ2NF90IHN2cmVpbnRlcnByZXRfZjY0KHN2ZmxvYXQzMl90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfZjY0X2YzMihvcCk7Cn0KCl9fYWlvIHN2ZmxvYXQ2NF90IHN2cmVpbnRlcnByZXRfZjY0KHN2ZmxvYXQ2NF90IG9wKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdmVfcmVpbnRlcnByZXRfZjY0X2Y2NChvcCk7Cn0KCl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkX25fZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZhYmRfbl9mNjRfbShzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIGZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkX25fZjMyX20pKSkKc3ZmbG9hdDMyX3Qgc3ZhYmRfbl9mMzJfbShzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkX25fZjE2X20pKSkKc3ZmbG9hdDE2X3Qgc3ZhYmRfbl9mMTZfbShzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIGZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkX25fZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZhYmRfbl9mNjRfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIGZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkX25fZjMyX3gpKSkKc3ZmbG9hdDMyX3Qgc3ZhYmRfbl9mMzJfeChzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkX25fZjE2X3gpKSkKc3ZmbG9hdDE2X3Qgc3ZhYmRfbl9mMTZfeChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIGZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkX25fZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZhYmRfbl9mNjRfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIGZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkX25fZjMyX3opKSkKc3ZmbG9hdDMyX3Qgc3ZhYmRfbl9mMzJfeihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkX25fZjE2X3opKSkKc3ZmbG9hdDE2X3Qgc3ZhYmRfbl9mMTZfeihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIGZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkX25fczhfbSkpKQpzdmludDhfdCBzdmFiZF9uX3M4X20oc3Zib29sX3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZF9uX3MzMl9tKSkpCnN2aW50MzJfdCBzdmFiZF9uX3MzMl9tKHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZF9uX3M2NF9tKSkpCnN2aW50NjRfdCBzdmFiZF9uX3M2NF9tKHN2Ym9vbF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZF9uX3MxNl9tKSkpCnN2aW50MTZfdCBzdmFiZF9uX3MxNl9tKHN2Ym9vbF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZF9uX3M4X3gpKSkKc3ZpbnQ4X3Qgc3ZhYmRfbl9zOF94KHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfbl9zMzJfeCkpKQpzdmludDMyX3Qgc3ZhYmRfbl9zMzJfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfbl9zNjRfeCkpKQpzdmludDY0X3Qgc3ZhYmRfbl9zNjRfeChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfbl9zMTZfeCkpKQpzdmludDE2X3Qgc3ZhYmRfbl9zMTZfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfbl9zOF96KSkpCnN2aW50OF90IHN2YWJkX25fczhfeihzdmJvb2xfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkX25fczMyX3opKSkKc3ZpbnQzMl90IHN2YWJkX25fczMyX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkX25fczY0X3opKSkKc3ZpbnQ2NF90IHN2YWJkX25fczY0X3ooc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkX25fczE2X3opKSkKc3ZpbnQxNl90IHN2YWJkX25fczE2X3ooc3Zib29sX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkX25fdThfbSkpKQpzdnVpbnQ4X3Qgc3ZhYmRfbl91OF9tKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZF9uX3UzMl9tKSkpCnN2dWludDMyX3Qgc3ZhYmRfbl91MzJfbShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZF9uX3U2NF9tKSkpCnN2dWludDY0X3Qgc3ZhYmRfbl91NjRfbShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZF9uX3UxNl9tKSkpCnN2dWludDE2X3Qgc3ZhYmRfbl91MTZfbShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZF9uX3U4X3gpKSkKc3Z1aW50OF90IHN2YWJkX25fdThfeChzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfbl91MzJfeCkpKQpzdnVpbnQzMl90IHN2YWJkX25fdTMyX3goc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfbl91NjRfeCkpKQpzdnVpbnQ2NF90IHN2YWJkX25fdTY0X3goc3Zib29sX3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfbl91MTZfeCkpKQpzdnVpbnQxNl90IHN2YWJkX25fdTE2X3goc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfbl91OF96KSkpCnN2dWludDhfdCBzdmFiZF9uX3U4X3ooc3Zib29sX3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkX25fdTMyX3opKSkKc3Z1aW50MzJfdCBzdmFiZF9uX3UzMl96KHN2Ym9vbF90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkX25fdTY0X3opKSkKc3Z1aW50NjRfdCBzdmFiZF9uX3U2NF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkX25fdTE2X3opKSkKc3Z1aW50MTZfdCBzdmFiZF9uX3UxNl96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkX2Y2NF9tKSkpCnN2ZmxvYXQ2NF90IHN2YWJkX2Y2NF9tKHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZF9mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdmFiZF9mMzJfbShzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfZjE2X20pKSkKc3ZmbG9hdDE2X3Qgc3ZhYmRfZjE2X20oc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkX2Y2NF94KSkpCnN2ZmxvYXQ2NF90IHN2YWJkX2Y2NF94KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZF9mMzJfeCkpKQpzdmZsb2F0MzJfdCBzdmFiZF9mMzJfeChzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfZjE2X3gpKSkKc3ZmbG9hdDE2X3Qgc3ZhYmRfZjE2X3goc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkX2Y2NF96KSkpCnN2ZmxvYXQ2NF90IHN2YWJkX2Y2NF96KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZF9mMzJfeikpKQpzdmZsb2F0MzJfdCBzdmFiZF9mMzJfeihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfZjE2X3opKSkKc3ZmbG9hdDE2X3Qgc3ZhYmRfZjE2X3ooc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkX3M4X20pKSkKc3ZpbnQ4X3Qgc3ZhYmRfczhfbShzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfczMyX20pKSkKc3ZpbnQzMl90IHN2YWJkX3MzMl9tKHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkX3M2NF9tKSkpCnN2aW50NjRfdCBzdmFiZF9zNjRfbShzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZF9zMTZfbSkpKQpzdmludDE2X3Qgc3ZhYmRfczE2X20oc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfczhfeCkpKQpzdmludDhfdCBzdmFiZF9zOF94KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZF9zMzJfeCkpKQpzdmludDMyX3Qgc3ZhYmRfczMyX3goc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfczY0X3gpKSkKc3ZpbnQ2NF90IHN2YWJkX3M2NF94KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkX3MxNl94KSkpCnN2aW50MTZfdCBzdmFiZF9zMTZfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZF9zOF96KSkpCnN2aW50OF90IHN2YWJkX3M4X3ooc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkX3MzMl96KSkpCnN2aW50MzJfdCBzdmFiZF9zMzJfeihzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZF9zNjRfeikpKQpzdmludDY0X3Qgc3ZhYmRfczY0X3ooc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfczE2X3opKSkKc3ZpbnQxNl90IHN2YWJkX3MxNl96KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkX3U4X20pKSkKc3Z1aW50OF90IHN2YWJkX3U4X20oc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfdTMyX20pKSkKc3Z1aW50MzJfdCBzdmFiZF91MzJfbShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkX3U2NF9tKSkpCnN2dWludDY0X3Qgc3ZhYmRfdTY0X20oc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZF91MTZfbSkpKQpzdnVpbnQxNl90IHN2YWJkX3UxNl9tKHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfdThfeCkpKQpzdnVpbnQ4X3Qgc3ZhYmRfdThfeChzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZF91MzJfeCkpKQpzdnVpbnQzMl90IHN2YWJkX3UzMl94KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfdTY0X3gpKSkKc3Z1aW50NjRfdCBzdmFiZF91NjRfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkX3UxNl94KSkpCnN2dWludDE2X3Qgc3ZhYmRfdTE2X3goc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZF91OF96KSkpCnN2dWludDhfdCBzdmFiZF91OF96KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkX3UzMl96KSkpCnN2dWludDMyX3Qgc3ZhYmRfdTMyX3ooc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZF91NjRfeikpKQpzdnVpbnQ2NF90IHN2YWJkX3U2NF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfdTE2X3opKSkKc3Z1aW50MTZfdCBzdmFiZF91MTZfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJzX2Y2NF9tKSkpCnN2ZmxvYXQ2NF90IHN2YWJzX2Y2NF9tKHN2ZmxvYXQ2NF90LCBzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFic19mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdmFic19mMzJfbShzdmZsb2F0MzJfdCwgc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYnNfZjE2X20pKSkKc3ZmbG9hdDE2X3Qgc3ZhYnNfZjE2X20oc3ZmbG9hdDE2X3QsIHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJzX2Y2NF94KSkpCnN2ZmxvYXQ2NF90IHN2YWJzX2Y2NF94KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJzX2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2YWJzX2YzMl94KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJzX2YxNl94KSkpCnN2ZmxvYXQxNl90IHN2YWJzX2YxNl94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJzX2Y2NF96KSkpCnN2ZmxvYXQ2NF90IHN2YWJzX2Y2NF96KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJzX2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2YWJzX2YzMl96KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJzX2YxNl96KSkpCnN2ZmxvYXQxNl90IHN2YWJzX2YxNl96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJzX3M4X20pKSkKc3ZpbnQ4X3Qgc3ZhYnNfczhfbShzdmludDhfdCwgc3Zib29sX3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYnNfczMyX20pKSkKc3ZpbnQzMl90IHN2YWJzX3MzMl9tKHN2aW50MzJfdCwgc3Zib29sX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJzX3M2NF9tKSkpCnN2aW50NjRfdCBzdmFic19zNjRfbShzdmludDY0X3QsIHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFic19zMTZfbSkpKQpzdmludDE2X3Qgc3ZhYnNfczE2X20oc3ZpbnQxNl90LCBzdmJvb2xfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYnNfczhfeCkpKQpzdmludDhfdCBzdmFic19zOF94KHN2Ym9vbF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJzX3MzMl94KSkpCnN2aW50MzJfdCBzdmFic19zMzJfeChzdmJvb2xfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYnNfczY0X3gpKSkKc3ZpbnQ2NF90IHN2YWJzX3M2NF94KHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFic19zMTZfeCkpKQpzdmludDE2X3Qgc3ZhYnNfczE2X3goc3Zib29sX3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJzX3M4X3opKSkKc3ZpbnQ4X3Qgc3ZhYnNfczhfeihzdmJvb2xfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFic19zMzJfeikpKQpzdmludDMyX3Qgc3ZhYnNfczMyX3ooc3Zib29sX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJzX3M2NF96KSkpCnN2aW50NjRfdCBzdmFic19zNjRfeihzdmJvb2xfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYnNfczE2X3opKSkKc3ZpbnQxNl90IHN2YWJzX3MxNl96KHN2Ym9vbF90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFjZ2Vfbl9mNjQpKSkKc3Zib29sX3Qgc3ZhY2dlX25fZjY0KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhY2dlX25fZjMyKSkpCnN2Ym9vbF90IHN2YWNnZV9uX2YzMihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWNnZV9uX2YxNikpKQpzdmJvb2xfdCBzdmFjZ2Vfbl9mMTYoc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFjZ2VfZjY0KSkpCnN2Ym9vbF90IHN2YWNnZV9mNjQoc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWNnZV9mMzIpKSkKc3Zib29sX3Qgc3ZhY2dlX2YzMihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhY2dlX2YxNikpKQpzdmJvb2xfdCBzdmFjZ2VfZjE2KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFjZ3Rfbl9mNjQpKSkKc3Zib29sX3Qgc3ZhY2d0X25fZjY0KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhY2d0X25fZjMyKSkpCnN2Ym9vbF90IHN2YWNndF9uX2YzMihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWNndF9uX2YxNikpKQpzdmJvb2xfdCBzdmFjZ3Rfbl9mMTYoc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFjZ3RfZjY0KSkpCnN2Ym9vbF90IHN2YWNndF9mNjQoc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWNndF9mMzIpKSkKc3Zib29sX3Qgc3ZhY2d0X2YzMihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhY2d0X2YxNikpKQpzdmJvb2xfdCBzdmFjZ3RfZjE2KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFjbGVfbl9mNjQpKSkKc3Zib29sX3Qgc3ZhY2xlX25fZjY0KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhY2xlX25fZjMyKSkpCnN2Ym9vbF90IHN2YWNsZV9uX2YzMihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWNsZV9uX2YxNikpKQpzdmJvb2xfdCBzdmFjbGVfbl9mMTYoc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFjbGVfZjY0KSkpCnN2Ym9vbF90IHN2YWNsZV9mNjQoc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWNsZV9mMzIpKSkKc3Zib29sX3Qgc3ZhY2xlX2YzMihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhY2xlX2YxNikpKQpzdmJvb2xfdCBzdmFjbGVfZjE2KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFjbHRfbl9mNjQpKSkKc3Zib29sX3Qgc3ZhY2x0X25fZjY0KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhY2x0X25fZjMyKSkpCnN2Ym9vbF90IHN2YWNsdF9uX2YzMihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWNsdF9uX2YxNikpKQpzdmJvb2xfdCBzdmFjbHRfbl9mMTYoc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFjbHRfZjY0KSkpCnN2Ym9vbF90IHN2YWNsdF9mNjQoc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWNsdF9mMzIpKSkKc3Zib29sX3Qgc3ZhY2x0X2YzMihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhY2x0X2YxNikpKQpzdmJvb2xfdCBzdmFjbHRfZjE2KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZF9uX2Y2NF9tKSkpCnN2ZmxvYXQ2NF90IHN2YWRkX25fZjY0X20oc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZF9uX2YzMl9tKSkpCnN2ZmxvYXQzMl90IHN2YWRkX25fZjMyX20oc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZF9uX2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2YWRkX25fZjE2X20oc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZF9uX2Y2NF94KSkpCnN2ZmxvYXQ2NF90IHN2YWRkX25fZjY0X3goc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZF9uX2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2YWRkX25fZjMyX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZF9uX2YxNl94KSkpCnN2ZmxvYXQxNl90IHN2YWRkX25fZjE2X3goc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZF9uX2Y2NF96KSkpCnN2ZmxvYXQ2NF90IHN2YWRkX25fZjY0X3ooc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZF9uX2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2YWRkX25fZjMyX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZF9uX2YxNl96KSkpCnN2ZmxvYXQxNl90IHN2YWRkX25fZjE2X3ooc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZF9uX3U4X20pKSkKc3Z1aW50OF90IHN2YWRkX25fdThfbShzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRfbl91MzJfbSkpKQpzdnVpbnQzMl90IHN2YWRkX25fdTMyX20oc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRfbl91NjRfbSkpKQpzdnVpbnQ2NF90IHN2YWRkX25fdTY0X20oc3Zib29sX3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRfbl91MTZfbSkpKQpzdnVpbnQxNl90IHN2YWRkX25fdTE2X20oc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRfbl9zOF9tKSkpCnN2aW50OF90IHN2YWRkX25fczhfbShzdmJvb2xfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX25fczMyX20pKSkKc3ZpbnQzMl90IHN2YWRkX25fczMyX20oc3Zib29sX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX25fczY0X20pKSkKc3ZpbnQ2NF90IHN2YWRkX25fczY0X20oc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX25fczE2X20pKSkKc3ZpbnQxNl90IHN2YWRkX25fczE2X20oc3Zib29sX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX25fdThfeCkpKQpzdnVpbnQ4X3Qgc3ZhZGRfbl91OF94KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZF9uX3UzMl94KSkpCnN2dWludDMyX3Qgc3ZhZGRfbl91MzJfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZF9uX3U2NF94KSkpCnN2dWludDY0X3Qgc3ZhZGRfbl91NjRfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZF9uX3UxNl94KSkpCnN2dWludDE2X3Qgc3ZhZGRfbl91MTZfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZF9uX3M4X3gpKSkKc3ZpbnQ4X3Qgc3ZhZGRfbl9zOF94KHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRfbl9zMzJfeCkpKQpzdmludDMyX3Qgc3ZhZGRfbl9zMzJfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRfbl9zNjRfeCkpKQpzdmludDY0X3Qgc3ZhZGRfbl9zNjRfeChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRfbl9zMTZfeCkpKQpzdmludDE2X3Qgc3ZhZGRfbl9zMTZfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRfbl91OF96KSkpCnN2dWludDhfdCBzdmFkZF9uX3U4X3ooc3Zib29sX3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX25fdTMyX3opKSkKc3Z1aW50MzJfdCBzdmFkZF9uX3UzMl96KHN2Ym9vbF90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX25fdTY0X3opKSkKc3Z1aW50NjRfdCBzdmFkZF9uX3U2NF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX25fdTE2X3opKSkKc3Z1aW50MTZfdCBzdmFkZF9uX3UxNl96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX25fczhfeikpKQpzdmludDhfdCBzdmFkZF9uX3M4X3ooc3Zib29sX3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZF9uX3MzMl96KSkpCnN2aW50MzJfdCBzdmFkZF9uX3MzMl96KHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZF9uX3M2NF96KSkpCnN2aW50NjRfdCBzdmFkZF9uX3M2NF96KHN2Ym9vbF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZF9uX3MxNl96KSkpCnN2aW50MTZfdCBzdmFkZF9uX3MxNl96KHN2Ym9vbF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZF9mNjRfbSkpKQpzdmZsb2F0NjRfdCBzdmFkZF9mNjRfbShzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRfZjMyX20pKSkKc3ZmbG9hdDMyX3Qgc3ZhZGRfZjMyX20oc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2YWRkX2YxNl9tKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZF9mNjRfeCkpKQpzdmZsb2F0NjRfdCBzdmFkZF9mNjRfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRfZjMyX3gpKSkKc3ZmbG9hdDMyX3Qgc3ZhZGRfZjMyX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX2YxNl94KSkpCnN2ZmxvYXQxNl90IHN2YWRkX2YxNl94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZF9mNjRfeikpKQpzdmZsb2F0NjRfdCBzdmFkZF9mNjRfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRfZjMyX3opKSkKc3ZmbG9hdDMyX3Qgc3ZhZGRfZjMyX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX2YxNl96KSkpCnN2ZmxvYXQxNl90IHN2YWRkX2YxNl96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZF91OF9tKSkpCnN2dWludDhfdCBzdmFkZF91OF9tKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX3UzMl9tKSkpCnN2dWludDMyX3Qgc3ZhZGRfdTMyX20oc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZF91NjRfbSkpKQpzdnVpbnQ2NF90IHN2YWRkX3U2NF9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRfdTE2X20pKSkKc3Z1aW50MTZfdCBzdmFkZF91MTZfbShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX3M4X20pKSkKc3ZpbnQ4X3Qgc3ZhZGRfczhfbShzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRfczMyX20pKSkKc3ZpbnQzMl90IHN2YWRkX3MzMl9tKHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX3M2NF9tKSkpCnN2aW50NjRfdCBzdmFkZF9zNjRfbShzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZF9zMTZfbSkpKQpzdmludDE2X3Qgc3ZhZGRfczE2X20oc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRfdThfeCkpKQpzdnVpbnQ4X3Qgc3ZhZGRfdThfeChzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZF91MzJfeCkpKQpzdnVpbnQzMl90IHN2YWRkX3UzMl94KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRfdTY0X3gpKSkKc3Z1aW50NjRfdCBzdmFkZF91NjRfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX3UxNl94KSkpCnN2dWludDE2X3Qgc3ZhZGRfdTE2X3goc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZF9zOF94KSkpCnN2aW50OF90IHN2YWRkX3M4X3goc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX3MzMl94KSkpCnN2aW50MzJfdCBzdmFkZF9zMzJfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZF9zNjRfeCkpKQpzdmludDY0X3Qgc3ZhZGRfczY0X3goc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRfczE2X3gpKSkKc3ZpbnQxNl90IHN2YWRkX3MxNl94KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX3U4X3opKSkKc3Z1aW50OF90IHN2YWRkX3U4X3ooc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRfdTMyX3opKSkKc3Z1aW50MzJfdCBzdmFkZF91MzJfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX3U2NF96KSkpCnN2dWludDY0X3Qgc3ZhZGRfdTY0X3ooc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZF91MTZfeikpKQpzdnVpbnQxNl90IHN2YWRkX3UxNl96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRfczhfeikpKQpzdmludDhfdCBzdmFkZF9zOF96KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZF9zMzJfeikpKQpzdmludDMyX3Qgc3ZhZGRfczMyX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRfczY0X3opKSkKc3ZpbnQ2NF90IHN2YWRkX3M2NF96KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX3MxNl96KSkpCnN2aW50MTZfdCBzdmFkZF9zMTZfeihzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZGFfZjY0KSkpCmZsb2F0NjRfdCBzdmFkZGFfZjY0KHN2Ym9vbF90LCBmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRhX2YzMikpKQpmbG9hdDMyX3Qgc3ZhZGRhX2YzMihzdmJvb2xfdCwgZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkYV9mMTYpKSkKZmxvYXQxNl90IHN2YWRkYV9mMTYoc3Zib29sX3QsIGZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZHZfczgpKSkKaW50NjRfdCBzdmFkZHZfczgoc3Zib29sX3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGR2X3MzMikpKQppbnQ2NF90IHN2YWRkdl9zMzIoc3Zib29sX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkdl9zNjQpKSkKaW50NjRfdCBzdmFkZHZfczY0KHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZHZfczE2KSkpCmludDY0X3Qgc3ZhZGR2X3MxNihzdmJvb2xfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGR2X3U4KSkpCnVpbnQ2NF90IHN2YWRkdl91OChzdmJvb2xfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGR2X3UzMikpKQp1aW50NjRfdCBzdmFkZHZfdTMyKHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGR2X3U2NCkpKQp1aW50NjRfdCBzdmFkZHZfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGR2X3UxNikpKQp1aW50NjRfdCBzdmFkZHZfdTE2KHN2Ym9vbF90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGR2X2Y2NCkpKQpmbG9hdDY0X3Qgc3ZhZGR2X2Y2NChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZHZfZjMyKSkpCmZsb2F0MzJfdCBzdmFkZHZfZjMyKHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkdl9mMTYpKSkKZmxvYXQxNl90IHN2YWRkdl9mMTYoc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZHJiX3UzMmJhc2VfdTMyb2Zmc2V0KSkpCnN2dWludDMyX3Qgc3ZhZHJiX3UzMmJhc2VfdTMyb2Zmc2V0KHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkcmJfdTY0YmFzZV91NjRvZmZzZXQpKSkKc3Z1aW50NjRfdCBzdmFkcmJfdTY0YmFzZV91NjRvZmZzZXQoc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRyYl91MzJiYXNlX3MzMm9mZnNldCkpKQpzdnVpbnQzMl90IHN2YWRyYl91MzJiYXNlX3MzMm9mZnNldChzdnVpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkcmJfdTY0YmFzZV9zNjRvZmZzZXQpKSkKc3Z1aW50NjRfdCBzdmFkcmJfdTY0YmFzZV9zNjRvZmZzZXQoc3Z1aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZHJkX3UzMmJhc2VfdTMyaW5kZXgpKSkKc3Z1aW50MzJfdCBzdmFkcmRfdTMyYmFzZV91MzJpbmRleChzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZHJkX3U2NGJhc2VfdTY0aW5kZXgpKSkKc3Z1aW50NjRfdCBzdmFkcmRfdTY0YmFzZV91NjRpbmRleChzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZHJkX3UzMmJhc2VfczMyaW5kZXgpKSkKc3Z1aW50MzJfdCBzdmFkcmRfdTMyYmFzZV9zMzJpbmRleChzdnVpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkcmRfdTY0YmFzZV9zNjRpbmRleCkpKQpzdnVpbnQ2NF90IHN2YWRyZF91NjRiYXNlX3M2NGluZGV4KHN2dWludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRyaF91MzJiYXNlX3UzMmluZGV4KSkpCnN2dWludDMyX3Qgc3ZhZHJoX3UzMmJhc2VfdTMyaW5kZXgoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRyaF91NjRiYXNlX3U2NGluZGV4KSkpCnN2dWludDY0X3Qgc3ZhZHJoX3U2NGJhc2VfdTY0aW5kZXgoc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRyaF91MzJiYXNlX3MzMmluZGV4KSkpCnN2dWludDMyX3Qgc3ZhZHJoX3UzMmJhc2VfczMyaW5kZXgoc3Z1aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZHJoX3U2NGJhc2VfczY0aW5kZXgpKSkKc3Z1aW50NjRfdCBzdmFkcmhfdTY0YmFzZV9zNjRpbmRleChzdnVpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkcndfdTMyYmFzZV91MzJpbmRleCkpKQpzdnVpbnQzMl90IHN2YWRyd191MzJiYXNlX3UzMmluZGV4KHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkcndfdTY0YmFzZV91NjRpbmRleCkpKQpzdnVpbnQ2NF90IHN2YWRyd191NjRiYXNlX3U2NGluZGV4KHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkcndfdTMyYmFzZV9zMzJpbmRleCkpKQpzdnVpbnQzMl90IHN2YWRyd191MzJiYXNlX3MzMmluZGV4KHN2dWludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRyd191NjRiYXNlX3M2NGluZGV4KSkpCnN2dWludDY0X3Qgc3ZhZHJ3X3U2NGJhc2VfczY0aW5kZXgoc3Z1aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhbmRfYl96KSkpCnN2Ym9vbF90IHN2YW5kX2JfeihzdmJvb2xfdCwgc3Zib29sX3QsIHN2Ym9vbF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhbmRfbl91OF9tKSkpCnN2dWludDhfdCBzdmFuZF9uX3U4X20oc3Zib29sX3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YW5kX25fdTMyX20pKSkKc3Z1aW50MzJfdCBzdmFuZF9uX3UzMl9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YW5kX25fdTY0X20pKSkKc3Z1aW50NjRfdCBzdmFuZF9uX3U2NF9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YW5kX25fdTE2X20pKSkKc3Z1aW50MTZfdCBzdmFuZF9uX3UxNl9tKHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YW5kX25fczhfbSkpKQpzdmludDhfdCBzdmFuZF9uX3M4X20oc3Zib29sX3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZF9uX3MzMl9tKSkpCnN2aW50MzJfdCBzdmFuZF9uX3MzMl9tKHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZF9uX3M2NF9tKSkpCnN2aW50NjRfdCBzdmFuZF9uX3M2NF9tKHN2Ym9vbF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZF9uX3MxNl9tKSkpCnN2aW50MTZfdCBzdmFuZF9uX3MxNl9tKHN2Ym9vbF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZF9uX3U4X3gpKSkKc3Z1aW50OF90IHN2YW5kX25fdThfeChzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhbmRfbl91MzJfeCkpKQpzdnVpbnQzMl90IHN2YW5kX25fdTMyX3goc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhbmRfbl91NjRfeCkpKQpzdnVpbnQ2NF90IHN2YW5kX25fdTY0X3goc3Zib29sX3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhbmRfbl91MTZfeCkpKQpzdnVpbnQxNl90IHN2YW5kX25fdTE2X3goc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhbmRfbl9zOF94KSkpCnN2aW50OF90IHN2YW5kX25fczhfeChzdmJvb2xfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YW5kX25fczMyX3gpKSkKc3ZpbnQzMl90IHN2YW5kX25fczMyX3goc3Zib29sX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YW5kX25fczY0X3gpKSkKc3ZpbnQ2NF90IHN2YW5kX25fczY0X3goc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YW5kX25fczE2X3gpKSkKc3ZpbnQxNl90IHN2YW5kX25fczE2X3goc3Zib29sX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YW5kX25fdThfeikpKQpzdnVpbnQ4X3Qgc3ZhbmRfbl91OF96KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZF9uX3UzMl96KSkpCnN2dWludDMyX3Qgc3ZhbmRfbl91MzJfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZF9uX3U2NF96KSkpCnN2dWludDY0X3Qgc3ZhbmRfbl91NjRfeihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZF9uX3UxNl96KSkpCnN2dWludDE2X3Qgc3ZhbmRfbl91MTZfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZF9uX3M4X3opKSkKc3ZpbnQ4X3Qgc3ZhbmRfbl9zOF96KHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhbmRfbl9zMzJfeikpKQpzdmludDMyX3Qgc3ZhbmRfbl9zMzJfeihzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhbmRfbl9zNjRfeikpKQpzdmludDY0X3Qgc3ZhbmRfbl9zNjRfeihzdmJvb2xfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhbmRfbl9zMTZfeikpKQpzdmludDE2X3Qgc3ZhbmRfbl9zMTZfeihzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhbmRfdThfbSkpKQpzdnVpbnQ4X3Qgc3ZhbmRfdThfbShzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZF91MzJfbSkpKQpzdnVpbnQzMl90IHN2YW5kX3UzMl9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhbmRfdTY0X20pKSkKc3Z1aW50NjRfdCBzdmFuZF91NjRfbShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YW5kX3UxNl9tKSkpCnN2dWludDE2X3Qgc3ZhbmRfdTE2X20oc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZF9zOF9tKSkpCnN2aW50OF90IHN2YW5kX3M4X20oc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YW5kX3MzMl9tKSkpCnN2aW50MzJfdCBzdmFuZF9zMzJfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZF9zNjRfbSkpKQpzdmludDY0X3Qgc3ZhbmRfczY0X20oc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhbmRfczE2X20pKSkKc3ZpbnQxNl90IHN2YW5kX3MxNl9tKHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YW5kX3U4X3gpKSkKc3Z1aW50OF90IHN2YW5kX3U4X3goc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhbmRfdTMyX3gpKSkKc3Z1aW50MzJfdCBzdmFuZF91MzJfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YW5kX3U2NF94KSkpCnN2dWludDY0X3Qgc3ZhbmRfdTY0X3goc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZF91MTZfeCkpKQpzdnVpbnQxNl90IHN2YW5kX3UxNl94KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhbmRfczhfeCkpKQpzdmludDhfdCBzdmFuZF9zOF94KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZF9zMzJfeCkpKQpzdmludDMyX3Qgc3ZhbmRfczMyX3goc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhbmRfczY0X3gpKSkKc3ZpbnQ2NF90IHN2YW5kX3M2NF94KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YW5kX3MxNl94KSkpCnN2aW50MTZfdCBzdmFuZF9zMTZfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZF91OF96KSkpCnN2dWludDhfdCBzdmFuZF91OF96KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YW5kX3UzMl96KSkpCnN2dWludDMyX3Qgc3ZhbmRfdTMyX3ooc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZF91NjRfeikpKQpzdnVpbnQ2NF90IHN2YW5kX3U2NF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhbmRfdTE2X3opKSkKc3Z1aW50MTZfdCBzdmFuZF91MTZfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YW5kX3M4X3opKSkKc3ZpbnQ4X3Qgc3ZhbmRfczhfeihzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhbmRfczMyX3opKSkKc3ZpbnQzMl90IHN2YW5kX3MzMl96KHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YW5kX3M2NF96KSkpCnN2aW50NjRfdCBzdmFuZF9zNjRfeihzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZF9zMTZfeikpKQpzdmludDE2X3Qgc3ZhbmRfczE2X3ooc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhbmR2X3U4KSkpCnVpbnQ4X3Qgc3ZhbmR2X3U4KHN2Ym9vbF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZHZfdTMyKSkpCnVpbnQzMl90IHN2YW5kdl91MzIoc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZHZfdTY0KSkpCnVpbnQ2NF90IHN2YW5kdl91NjQoc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZHZfdTE2KSkpCnVpbnQxNl90IHN2YW5kdl91MTYoc3Zib29sX3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZHZfczgpKSkKaW50OF90IHN2YW5kdl9zOChzdmJvb2xfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZHZfczMyKSkpCmludDMyX3Qgc3ZhbmR2X3MzMihzdmJvb2xfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhbmR2X3M2NCkpKQppbnQ2NF90IHN2YW5kdl9zNjQoc3Zib29sX3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YW5kdl9zMTYpKSkKaW50MTZfdCBzdmFuZHZfczE2KHN2Ym9vbF90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFzcl9uX3M4X20pKSkKc3ZpbnQ4X3Qgc3Zhc3Jfbl9zOF9tKHN2Ym9vbF90LCBzdmludDhfdCwgdWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YXNyX25fczMyX20pKSkKc3ZpbnQzMl90IHN2YXNyX25fczMyX20oc3Zib29sX3QsIHN2aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFzcl9uX3M2NF9tKSkpCnN2aW50NjRfdCBzdmFzcl9uX3M2NF9tKHN2Ym9vbF90LCBzdmludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3Jfbl9zMTZfbSkpKQpzdmludDE2X3Qgc3Zhc3Jfbl9zMTZfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YXNyX25fczhfeCkpKQpzdmludDhfdCBzdmFzcl9uX3M4X3goc3Zib29sX3QsIHN2aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3Jfbl9zMzJfeCkpKQpzdmludDMyX3Qgc3Zhc3Jfbl9zMzJfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YXNyX25fczY0X3gpKSkKc3ZpbnQ2NF90IHN2YXNyX25fczY0X3goc3Zib29sX3QsIHN2aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFzcl9uX3MxNl94KSkpCnN2aW50MTZfdCBzdmFzcl9uX3MxNl94KHN2Ym9vbF90LCBzdmludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3Jfbl9zOF96KSkpCnN2aW50OF90IHN2YXNyX25fczhfeihzdmJvb2xfdCwgc3ZpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFzcl9uX3MzMl96KSkpCnN2aW50MzJfdCBzdmFzcl9uX3MzMl96KHN2Ym9vbF90LCBzdmludDMyX3QsIHVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3Jfbl9zNjRfeikpKQpzdmludDY0X3Qgc3Zhc3Jfbl9zNjRfeihzdmJvb2xfdCwgc3ZpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YXNyX25fczE2X3opKSkKc3ZpbnQxNl90IHN2YXNyX25fczE2X3ooc3Zib29sX3QsIHN2aW50MTZfdCwgdWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFzcl9zOF9tKSkpCnN2aW50OF90IHN2YXNyX3M4X20oc3Zib29sX3QsIHN2aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFzcl9zMzJfbSkpKQpzdmludDMyX3Qgc3Zhc3JfczMyX20oc3Zib29sX3QsIHN2aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YXNyX3M2NF9tKSkpCnN2aW50NjRfdCBzdmFzcl9zNjRfbShzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3JfczE2X20pKSkKc3ZpbnQxNl90IHN2YXNyX3MxNl9tKHN2Ym9vbF90LCBzdmludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFzcl9zOF94KSkpCnN2aW50OF90IHN2YXNyX3M4X3goc3Zib29sX3QsIHN2aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFzcl9zMzJfeCkpKQpzdmludDMyX3Qgc3Zhc3JfczMyX3goc3Zib29sX3QsIHN2aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YXNyX3M2NF94KSkpCnN2aW50NjRfdCBzdmFzcl9zNjRfeChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3JfczE2X3gpKSkKc3ZpbnQxNl90IHN2YXNyX3MxNl94KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFzcl9zOF96KSkpCnN2aW50OF90IHN2YXNyX3M4X3ooc3Zib29sX3QsIHN2aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFzcl9zMzJfeikpKQpzdmludDMyX3Qgc3Zhc3JfczMyX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YXNyX3M2NF96KSkpCnN2aW50NjRfdCBzdmFzcl9zNjRfeihzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3JfczE2X3opKSkKc3ZpbnQxNl90IHN2YXNyX3MxNl96KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFzcl93aWRlX25fczhfbSkpKQpzdmludDhfdCBzdmFzcl93aWRlX25fczhfbShzdmJvb2xfdCwgc3ZpbnQ4X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3Jfd2lkZV9uX3MzMl9tKSkpCnN2aW50MzJfdCBzdmFzcl93aWRlX25fczMyX20oc3Zib29sX3QsIHN2aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFzcl93aWRlX25fczE2X20pKSkKc3ZpbnQxNl90IHN2YXNyX3dpZGVfbl9zMTZfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YXNyX3dpZGVfbl9zOF94KSkpCnN2aW50OF90IHN2YXNyX3dpZGVfbl9zOF94KHN2Ym9vbF90LCBzdmludDhfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFzcl93aWRlX25fczMyX3gpKSkKc3ZpbnQzMl90IHN2YXNyX3dpZGVfbl9zMzJfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YXNyX3dpZGVfbl9zMTZfeCkpKQpzdmludDE2X3Qgc3Zhc3Jfd2lkZV9uX3MxNl94KHN2Ym9vbF90LCBzdmludDE2X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3Jfd2lkZV9uX3M4X3opKSkKc3ZpbnQ4X3Qgc3Zhc3Jfd2lkZV9uX3M4X3ooc3Zib29sX3QsIHN2aW50OF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YXNyX3dpZGVfbl9zMzJfeikpKQpzdmludDMyX3Qgc3Zhc3Jfd2lkZV9uX3MzMl96KHN2Ym9vbF90LCBzdmludDMyX3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3Jfd2lkZV9uX3MxNl96KSkpCnN2aW50MTZfdCBzdmFzcl93aWRlX25fczE2X3ooc3Zib29sX3QsIHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFzcl93aWRlX3M4X20pKSkKc3ZpbnQ4X3Qgc3Zhc3Jfd2lkZV9zOF9tKHN2Ym9vbF90LCBzdmludDhfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YXNyX3dpZGVfczMyX20pKSkKc3ZpbnQzMl90IHN2YXNyX3dpZGVfczMyX20oc3Zib29sX3QsIHN2aW50MzJfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YXNyX3dpZGVfczE2X20pKSkKc3ZpbnQxNl90IHN2YXNyX3dpZGVfczE2X20oc3Zib29sX3QsIHN2aW50MTZfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YXNyX3dpZGVfczhfeCkpKQpzdmludDhfdCBzdmFzcl93aWRlX3M4X3goc3Zib29sX3QsIHN2aW50OF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3Jfd2lkZV9zMzJfeCkpKQpzdmludDMyX3Qgc3Zhc3Jfd2lkZV9zMzJfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3Jfd2lkZV9zMTZfeCkpKQpzdmludDE2X3Qgc3Zhc3Jfd2lkZV9zMTZfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3Jfd2lkZV9zOF96KSkpCnN2aW50OF90IHN2YXNyX3dpZGVfczhfeihzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFzcl93aWRlX3MzMl96KSkpCnN2aW50MzJfdCBzdmFzcl93aWRlX3MzMl96KHN2Ym9vbF90LCBzdmludDMyX3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFzcl93aWRlX3MxNl96KSkpCnN2aW50MTZfdCBzdmFzcl93aWRlX3MxNl96KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFzcmRfbl9zOF9tKSkpCnN2aW50OF90IHN2YXNyZF9uX3M4X20oc3Zib29sX3QsIHN2aW50OF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YXNyZF9uX3MzMl9tKSkpCnN2aW50MzJfdCBzdmFzcmRfbl9zMzJfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YXNyZF9uX3M2NF9tKSkpCnN2aW50NjRfdCBzdmFzcmRfbl9zNjRfbShzdmJvb2xfdCwgc3ZpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YXNyZF9uX3MxNl9tKSkpCnN2aW50MTZfdCBzdmFzcmRfbl9zMTZfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YXNyZF9uX3M4X3gpKSkKc3ZpbnQ4X3Qgc3Zhc3JkX25fczhfeChzdmJvb2xfdCwgc3ZpbnQ4X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3JkX25fczMyX3gpKSkKc3ZpbnQzMl90IHN2YXNyZF9uX3MzMl94KHN2Ym9vbF90LCBzdmludDMyX3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3JkX25fczY0X3gpKSkKc3ZpbnQ2NF90IHN2YXNyZF9uX3M2NF94KHN2Ym9vbF90LCBzdmludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3JkX25fczE2X3gpKSkKc3ZpbnQxNl90IHN2YXNyZF9uX3MxNl94KHN2Ym9vbF90LCBzdmludDE2X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3JkX25fczhfeikpKQpzdmludDhfdCBzdmFzcmRfbl9zOF96KHN2Ym9vbF90LCBzdmludDhfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFzcmRfbl9zMzJfeikpKQpzdmludDMyX3Qgc3Zhc3JkX25fczMyX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFzcmRfbl9zNjRfeikpKQpzdmludDY0X3Qgc3Zhc3JkX25fczY0X3ooc3Zib29sX3QsIHN2aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFzcmRfbl9zMTZfeikpKQpzdmludDE2X3Qgc3Zhc3JkX25fczE2X3ooc3Zib29sX3QsIHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJpY19iX3opKSkKc3Zib29sX3Qgc3ZiaWNfYl96KHN2Ym9vbF90LCBzdmJvb2xfdCwgc3Zib29sX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJpY19uX3U4X20pKSkKc3Z1aW50OF90IHN2YmljX25fdThfbShzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiaWNfbl91MzJfbSkpKQpzdnVpbnQzMl90IHN2YmljX25fdTMyX20oc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiaWNfbl91NjRfbSkpKQpzdnVpbnQ2NF90IHN2YmljX25fdTY0X20oc3Zib29sX3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiaWNfbl91MTZfbSkpKQpzdnVpbnQxNl90IHN2YmljX25fdTE2X20oc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiaWNfbl9zOF9tKSkpCnN2aW50OF90IHN2YmljX25fczhfbShzdmJvb2xfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmljX25fczMyX20pKSkKc3ZpbnQzMl90IHN2YmljX25fczMyX20oc3Zib29sX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmljX25fczY0X20pKSkKc3ZpbnQ2NF90IHN2YmljX25fczY0X20oc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmljX25fczE2X20pKSkKc3ZpbnQxNl90IHN2YmljX25fczE2X20oc3Zib29sX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmljX25fdThfeCkpKQpzdnVpbnQ4X3Qgc3ZiaWNfbl91OF94KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJpY19uX3UzMl94KSkpCnN2dWludDMyX3Qgc3ZiaWNfbl91MzJfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJpY19uX3U2NF94KSkpCnN2dWludDY0X3Qgc3ZiaWNfbl91NjRfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJpY19uX3UxNl94KSkpCnN2dWludDE2X3Qgc3ZiaWNfbl91MTZfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJpY19uX3M4X3gpKSkKc3ZpbnQ4X3Qgc3ZiaWNfbl9zOF94KHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiaWNfbl9zMzJfeCkpKQpzdmludDMyX3Qgc3ZiaWNfbl9zMzJfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiaWNfbl9zNjRfeCkpKQpzdmludDY0X3Qgc3ZiaWNfbl9zNjRfeChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiaWNfbl9zMTZfeCkpKQpzdmludDE2X3Qgc3ZiaWNfbl9zMTZfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiaWNfbl91OF96KSkpCnN2dWludDhfdCBzdmJpY19uX3U4X3ooc3Zib29sX3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmljX25fdTMyX3opKSkKc3Z1aW50MzJfdCBzdmJpY19uX3UzMl96KHN2Ym9vbF90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmljX25fdTY0X3opKSkKc3Z1aW50NjRfdCBzdmJpY19uX3U2NF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmljX25fdTE2X3opKSkKc3Z1aW50MTZfdCBzdmJpY19uX3UxNl96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmljX25fczhfeikpKQpzdmludDhfdCBzdmJpY19uX3M4X3ooc3Zib29sX3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJpY19uX3MzMl96KSkpCnN2aW50MzJfdCBzdmJpY19uX3MzMl96KHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJpY19uX3M2NF96KSkpCnN2aW50NjRfdCBzdmJpY19uX3M2NF96KHN2Ym9vbF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJpY19uX3MxNl96KSkpCnN2aW50MTZfdCBzdmJpY19uX3MxNl96KHN2Ym9vbF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJpY191OF9tKSkpCnN2dWludDhfdCBzdmJpY191OF9tKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmljX3UzMl9tKSkpCnN2dWludDMyX3Qgc3ZiaWNfdTMyX20oc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJpY191NjRfbSkpKQpzdnVpbnQ2NF90IHN2YmljX3U2NF9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiaWNfdTE2X20pKSkKc3Z1aW50MTZfdCBzdmJpY191MTZfbShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmljX3M4X20pKSkKc3ZpbnQ4X3Qgc3ZiaWNfczhfbShzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiaWNfczMyX20pKSkKc3ZpbnQzMl90IHN2YmljX3MzMl9tKHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmljX3M2NF9tKSkpCnN2aW50NjRfdCBzdmJpY19zNjRfbShzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJpY19zMTZfbSkpKQpzdmludDE2X3Qgc3ZiaWNfczE2X20oc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiaWNfdThfeCkpKQpzdnVpbnQ4X3Qgc3ZiaWNfdThfeChzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJpY191MzJfeCkpKQpzdnVpbnQzMl90IHN2YmljX3UzMl94KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiaWNfdTY0X3gpKSkKc3Z1aW50NjRfdCBzdmJpY191NjRfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmljX3UxNl94KSkpCnN2dWludDE2X3Qgc3ZiaWNfdTE2X3goc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJpY19zOF94KSkpCnN2aW50OF90IHN2YmljX3M4X3goc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmljX3MzMl94KSkpCnN2aW50MzJfdCBzdmJpY19zMzJfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJpY19zNjRfeCkpKQpzdmludDY0X3Qgc3ZiaWNfczY0X3goc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiaWNfczE2X3gpKSkKc3ZpbnQxNl90IHN2YmljX3MxNl94KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmljX3U4X3opKSkKc3Z1aW50OF90IHN2YmljX3U4X3ooc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiaWNfdTMyX3opKSkKc3Z1aW50MzJfdCBzdmJpY191MzJfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmljX3U2NF96KSkpCnN2dWludDY0X3Qgc3ZiaWNfdTY0X3ooc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJpY191MTZfeikpKQpzdnVpbnQxNl90IHN2YmljX3UxNl96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiaWNfczhfeikpKQpzdmludDhfdCBzdmJpY19zOF96KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJpY19zMzJfeikpKQpzdmludDMyX3Qgc3ZiaWNfczMyX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiaWNfczY0X3opKSkKc3ZpbnQ2NF90IHN2YmljX3M2NF96KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmljX3MxNl96KSkpCnN2aW50MTZfdCBzdmJpY19zMTZfeihzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJya2FfYl9tKSkpCnN2Ym9vbF90IHN2YnJrYV9iX20oc3Zib29sX3QsIHN2Ym9vbF90LCBzdmJvb2xfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YnJrYV9iX3opKSkKc3Zib29sX3Qgc3ZicmthX2JfeihzdmJvb2xfdCwgc3Zib29sX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJya2JfYl9tKSkpCnN2Ym9vbF90IHN2YnJrYl9iX20oc3Zib29sX3QsIHN2Ym9vbF90LCBzdmJvb2xfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YnJrYl9iX3opKSkKc3Zib29sX3Qgc3ZicmtiX2JfeihzdmJvb2xfdCwgc3Zib29sX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJya25fYl96KSkpCnN2Ym9vbF90IHN2YnJrbl9iX3ooc3Zib29sX3QsIHN2Ym9vbF90LCBzdmJvb2xfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YnJrcGFfYl96KSkpCnN2Ym9vbF90IHN2YnJrcGFfYl96KHN2Ym9vbF90LCBzdmJvb2xfdCwgc3Zib29sX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJya3BiX2JfeikpKQpzdmJvb2xfdCBzdmJya3BiX2JfeihzdmJvb2xfdCwgc3Zib29sX3QsIHN2Ym9vbF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjYWRkX2Y2NF9tKSkpCnN2ZmxvYXQ2NF90IHN2Y2FkZF9mNjRfbShzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2FkZF9mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdmNhZGRfZjMyX20oc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNhZGRfZjE2X20pKSkKc3ZmbG9hdDE2X3Qgc3ZjYWRkX2YxNl9tKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjYWRkX2Y2NF94KSkpCnN2ZmxvYXQ2NF90IHN2Y2FkZF9mNjRfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2FkZF9mMzJfeCkpKQpzdmZsb2F0MzJfdCBzdmNhZGRfZjMyX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNhZGRfZjE2X3gpKSkKc3ZmbG9hdDE2X3Qgc3ZjYWRkX2YxNl94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjYWRkX2Y2NF96KSkpCnN2ZmxvYXQ2NF90IHN2Y2FkZF9mNjRfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2FkZF9mMzJfeikpKQpzdmZsb2F0MzJfdCBzdmNhZGRfZjMyX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNhZGRfZjE2X3opKSkKc3ZmbG9hdDE2X3Qgc3ZjYWRkX2YxNl96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbGFzdGFfbl91OCkpKQp1aW50OF90IHN2Y2xhc3RhX25fdTgoc3Zib29sX3QsIHVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2xhc3RhX25fdTMyKSkpCnVpbnQzMl90IHN2Y2xhc3RhX25fdTMyKHN2Ym9vbF90LCB1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2xhc3RhX25fdTY0KSkpCnVpbnQ2NF90IHN2Y2xhc3RhX25fdTY0KHN2Ym9vbF90LCB1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2xhc3RhX25fdTE2KSkpCnVpbnQxNl90IHN2Y2xhc3RhX25fdTE2KHN2Ym9vbF90LCB1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2xhc3RhX25fczgpKSkKaW50OF90IHN2Y2xhc3RhX25fczgoc3Zib29sX3QsIGludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsYXN0YV9uX2Y2NCkpKQpmbG9hdDY0X3Qgc3ZjbGFzdGFfbl9mNjQoc3Zib29sX3QsIGZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsYXN0YV9uX2YzMikpKQpmbG9hdDMyX3Qgc3ZjbGFzdGFfbl9mMzIoc3Zib29sX3QsIGZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsYXN0YV9uX2YxNikpKQpmbG9hdDE2X3Qgc3ZjbGFzdGFfbl9mMTYoc3Zib29sX3QsIGZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsYXN0YV9uX3MzMikpKQppbnQzMl90IHN2Y2xhc3RhX25fczMyKHN2Ym9vbF90LCBpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsYXN0YV9uX3M2NCkpKQppbnQ2NF90IHN2Y2xhc3RhX25fczY0KHN2Ym9vbF90LCBpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsYXN0YV9uX3MxNikpKQppbnQxNl90IHN2Y2xhc3RhX25fczE2KHN2Ym9vbF90LCBpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsYXN0YV91OCkpKQpzdnVpbnQ4X3Qgc3ZjbGFzdGFfdTgoc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbGFzdGFfdTMyKSkpCnN2dWludDMyX3Qgc3ZjbGFzdGFfdTMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbGFzdGFfdTY0KSkpCnN2dWludDY0X3Qgc3ZjbGFzdGFfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbGFzdGFfdTE2KSkpCnN2dWludDE2X3Qgc3ZjbGFzdGFfdTE2KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbGFzdGFfczgpKSkKc3ZpbnQ4X3Qgc3ZjbGFzdGFfczgoc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2xhc3RhX2Y2NCkpKQpzdmZsb2F0NjRfdCBzdmNsYXN0YV9mNjQoc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2xhc3RhX2YzMikpKQpzdmZsb2F0MzJfdCBzdmNsYXN0YV9mMzIoc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2xhc3RhX2YxNikpKQpzdmZsb2F0MTZfdCBzdmNsYXN0YV9mMTYoc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2xhc3RhX3MzMikpKQpzdmludDMyX3Qgc3ZjbGFzdGFfczMyKHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2xhc3RhX3M2NCkpKQpzdmludDY0X3Qgc3ZjbGFzdGFfczY0KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2xhc3RhX3MxNikpKQpzdmludDE2X3Qgc3ZjbGFzdGFfczE2KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2xhc3RiX25fdTgpKSkKdWludDhfdCBzdmNsYXN0Yl9uX3U4KHN2Ym9vbF90LCB1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsYXN0Yl9uX3UzMikpKQp1aW50MzJfdCBzdmNsYXN0Yl9uX3UzMihzdmJvb2xfdCwgdWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsYXN0Yl9uX3U2NCkpKQp1aW50NjRfdCBzdmNsYXN0Yl9uX3U2NChzdmJvb2xfdCwgdWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsYXN0Yl9uX3UxNikpKQp1aW50MTZfdCBzdmNsYXN0Yl9uX3UxNihzdmJvb2xfdCwgdWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsYXN0Yl9uX3M4KSkpCmludDhfdCBzdmNsYXN0Yl9uX3M4KHN2Ym9vbF90LCBpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbGFzdGJfbl9mNjQpKSkKZmxvYXQ2NF90IHN2Y2xhc3RiX25fZjY0KHN2Ym9vbF90LCBmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbGFzdGJfbl9mMzIpKSkKZmxvYXQzMl90IHN2Y2xhc3RiX25fZjMyKHN2Ym9vbF90LCBmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbGFzdGJfbl9mMTYpKSkKZmxvYXQxNl90IHN2Y2xhc3RiX25fZjE2KHN2Ym9vbF90LCBmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbGFzdGJfbl9zMzIpKSkKaW50MzJfdCBzdmNsYXN0Yl9uX3MzMihzdmJvb2xfdCwgaW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbGFzdGJfbl9zNjQpKSkKaW50NjRfdCBzdmNsYXN0Yl9uX3M2NChzdmJvb2xfdCwgaW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbGFzdGJfbl9zMTYpKSkKaW50MTZfdCBzdmNsYXN0Yl9uX3MxNihzdmJvb2xfdCwgaW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbGFzdGJfdTgpKSkKc3Z1aW50OF90IHN2Y2xhc3RiX3U4KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2xhc3RiX3UzMikpKQpzdnVpbnQzMl90IHN2Y2xhc3RiX3UzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2xhc3RiX3U2NCkpKQpzdnVpbnQ2NF90IHN2Y2xhc3RiX3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2xhc3RiX3UxNikpKQpzdnVpbnQxNl90IHN2Y2xhc3RiX3UxNihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2xhc3RiX3M4KSkpCnN2aW50OF90IHN2Y2xhc3RiX3M4KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsYXN0Yl9mNjQpKSkKc3ZmbG9hdDY0X3Qgc3ZjbGFzdGJfZjY0KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsYXN0Yl9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3ZjbGFzdGJfZjMyKHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsYXN0Yl9mMTYpKSkKc3ZmbG9hdDE2X3Qgc3ZjbGFzdGJfZjE2KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsYXN0Yl9zMzIpKSkKc3ZpbnQzMl90IHN2Y2xhc3RiX3MzMihzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsYXN0Yl9zNjQpKSkKc3ZpbnQ2NF90IHN2Y2xhc3RiX3M2NChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsYXN0Yl9zMTYpKSkKc3ZpbnQxNl90IHN2Y2xhc3RiX3MxNihzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsc19zOF9tKSkpCnN2dWludDhfdCBzdmNsc19zOF9tKHN2dWludDhfdCwgc3Zib29sX3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbHNfczMyX20pKSkKc3Z1aW50MzJfdCBzdmNsc19zMzJfbShzdnVpbnQzMl90LCBzdmJvb2xfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbHNfczY0X20pKSkKc3Z1aW50NjRfdCBzdmNsc19zNjRfbShzdnVpbnQ2NF90LCBzdmJvb2xfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbHNfczE2X20pKSkKc3Z1aW50MTZfdCBzdmNsc19zMTZfbShzdnVpbnQxNl90LCBzdmJvb2xfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbHNfczhfeCkpKQpzdnVpbnQ4X3Qgc3ZjbHNfczhfeChzdmJvb2xfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsc19zMzJfeCkpKQpzdnVpbnQzMl90IHN2Y2xzX3MzMl94KHN2Ym9vbF90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsc19zNjRfeCkpKQpzdnVpbnQ2NF90IHN2Y2xzX3M2NF94KHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsc19zMTZfeCkpKQpzdnVpbnQxNl90IHN2Y2xzX3MxNl94KHN2Ym9vbF90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsc19zOF96KSkpCnN2dWludDhfdCBzdmNsc19zOF96KHN2Ym9vbF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2xzX3MzMl96KSkpCnN2dWludDMyX3Qgc3ZjbHNfczMyX3ooc3Zib29sX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2xzX3M2NF96KSkpCnN2dWludDY0X3Qgc3ZjbHNfczY0X3ooc3Zib29sX3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2xzX3MxNl96KSkpCnN2dWludDE2X3Qgc3ZjbHNfczE2X3ooc3Zib29sX3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2x6X3U4X20pKSkKc3Z1aW50OF90IHN2Y2x6X3U4X20oc3Z1aW50OF90LCBzdmJvb2xfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbHpfdTMyX20pKSkKc3Z1aW50MzJfdCBzdmNsel91MzJfbShzdnVpbnQzMl90LCBzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2x6X3U2NF9tKSkpCnN2dWludDY0X3Qgc3ZjbHpfdTY0X20oc3Z1aW50NjRfdCwgc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsel91MTZfbSkpKQpzdnVpbnQxNl90IHN2Y2x6X3UxNl9tKHN2dWludDE2X3QsIHN2Ym9vbF90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbHpfczhfbSkpKQpzdnVpbnQ4X3Qgc3ZjbHpfczhfbShzdnVpbnQ4X3QsIHN2Ym9vbF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2x6X3MzMl9tKSkpCnN2dWludDMyX3Qgc3ZjbHpfczMyX20oc3Z1aW50MzJfdCwgc3Zib29sX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2x6X3M2NF9tKSkpCnN2dWludDY0X3Qgc3ZjbHpfczY0X20oc3Z1aW50NjRfdCwgc3Zib29sX3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2x6X3MxNl9tKSkpCnN2dWludDE2X3Qgc3ZjbHpfczE2X20oc3Z1aW50MTZfdCwgc3Zib29sX3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2x6X3U4X3gpKSkKc3Z1aW50OF90IHN2Y2x6X3U4X3goc3Zib29sX3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2x6X3UzMl94KSkpCnN2dWludDMyX3Qgc3ZjbHpfdTMyX3goc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsel91NjRfeCkpKQpzdnVpbnQ2NF90IHN2Y2x6X3U2NF94KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbHpfdTE2X3gpKSkKc3Z1aW50MTZfdCBzdmNsel91MTZfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2x6X3M4X3gpKSkKc3Z1aW50OF90IHN2Y2x6X3M4X3goc3Zib29sX3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbHpfczMyX3gpKSkKc3Z1aW50MzJfdCBzdmNsel9zMzJfeChzdmJvb2xfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbHpfczY0X3gpKSkKc3Z1aW50NjRfdCBzdmNsel9zNjRfeChzdmJvb2xfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbHpfczE2X3gpKSkKc3Z1aW50MTZfdCBzdmNsel9zMTZfeChzdmJvb2xfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbHpfdThfeikpKQpzdnVpbnQ4X3Qgc3ZjbHpfdThfeihzdmJvb2xfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbHpfdTMyX3opKSkKc3Z1aW50MzJfdCBzdmNsel91MzJfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2x6X3U2NF96KSkpCnN2dWludDY0X3Qgc3ZjbHpfdTY0X3ooc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsel91MTZfeikpKQpzdnVpbnQxNl90IHN2Y2x6X3UxNl96KHN2Ym9vbF90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbHpfczhfeikpKQpzdnVpbnQ4X3Qgc3ZjbHpfczhfeihzdmJvb2xfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsel9zMzJfeikpKQpzdnVpbnQzMl90IHN2Y2x6X3MzMl96KHN2Ym9vbF90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsel9zNjRfeikpKQpzdnVpbnQ2NF90IHN2Y2x6X3M2NF96KHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsel9zMTZfeikpKQpzdnVpbnQxNl90IHN2Y2x6X3MxNl96KHN2Ym9vbF90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtbGFfZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZjbWxhX2Y2NF9tKHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21sYV9mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdmNtbGFfZjMyX20oc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbWxhX2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2Y21sYV9mMTZfbShzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtbGFfZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZjbWxhX2Y2NF94KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21sYV9mMzJfeCkpKQpzdmZsb2F0MzJfdCBzdmNtbGFfZjMyX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbWxhX2YxNl94KSkpCnN2ZmxvYXQxNl90IHN2Y21sYV9mMTZfeChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtbGFfZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZjbWxhX2Y2NF96KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21sYV9mMzJfeikpKQpzdmZsb2F0MzJfdCBzdmNtbGFfZjMyX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbWxhX2YxNl96KSkpCnN2ZmxvYXQxNl90IHN2Y21sYV9mMTZfeihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtbGFfbGFuZV9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3ZjbWxhX2xhbmVfZjMyKHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QsIHVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21sYV9sYW5lX2YxNikpKQpzdmZsb2F0MTZfdCBzdmNtbGFfbGFuZV9mMTYoc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCwgdWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBlcV9uX2Y2NCkpKQpzdmJvb2xfdCBzdmNtcGVxX25fZjY0KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBlcV9uX2YzMikpKQpzdmJvb2xfdCBzdmNtcGVxX25fZjMyKHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBlcV9uX2YxNikpKQpzdmJvb2xfdCBzdmNtcGVxX25fZjE2KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBlcV9uX3U4KSkpCnN2Ym9vbF90IHN2Y21wZXFfbl91OChzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBlcV9uX3UzMikpKQpzdmJvb2xfdCBzdmNtcGVxX25fdTMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZXFfbl91NjQpKSkKc3Zib29sX3Qgc3ZjbXBlcV9uX3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGVxX25fdTE2KSkpCnN2Ym9vbF90IHN2Y21wZXFfbl91MTYoc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBlcV9uX3M4KSkpCnN2Ym9vbF90IHN2Y21wZXFfbl9zOChzdmJvb2xfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZXFfbl9zMzIpKSkKc3Zib29sX3Qgc3ZjbXBlcV9uX3MzMihzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBlcV9uX3M2NCkpKQpzdmJvb2xfdCBzdmNtcGVxX25fczY0KHN2Ym9vbF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGVxX25fczE2KSkpCnN2Ym9vbF90IHN2Y21wZXFfbl9zMTYoc3Zib29sX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZXFfdTgpKSkKc3Zib29sX3Qgc3ZjbXBlcV91OChzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGVxX3UzMikpKQpzdmJvb2xfdCBzdmNtcGVxX3UzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZXFfdTY0KSkpCnN2Ym9vbF90IHN2Y21wZXFfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBlcV91MTYpKSkKc3Zib29sX3Qgc3ZjbXBlcV91MTYoc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGVxX3M4KSkpCnN2Ym9vbF90IHN2Y21wZXFfczgoc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZXFfczMyKSkpCnN2Ym9vbF90IHN2Y21wZXFfczMyKHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZXFfczY0KSkpCnN2Ym9vbF90IHN2Y21wZXFfczY0KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZXFfczE2KSkpCnN2Ym9vbF90IHN2Y21wZXFfczE2KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZXFfZjY0KSkpCnN2Ym9vbF90IHN2Y21wZXFfZjY0KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGVxX2YzMikpKQpzdmJvb2xfdCBzdmNtcGVxX2YzMihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBlcV9mMTYpKSkKc3Zib29sX3Qgc3ZjbXBlcV9mMTYoc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZXFfd2lkZV9uX3M4KSkpCnN2Ym9vbF90IHN2Y21wZXFfd2lkZV9uX3M4KHN2Ym9vbF90LCBzdmludDhfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZXFfd2lkZV9uX3MzMikpKQpzdmJvb2xfdCBzdmNtcGVxX3dpZGVfbl9zMzIoc3Zib29sX3QsIHN2aW50MzJfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZXFfd2lkZV9uX3MxNikpKQpzdmJvb2xfdCBzdmNtcGVxX3dpZGVfbl9zMTYoc3Zib29sX3QsIHN2aW50MTZfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZXFfd2lkZV9zOCkpKQpzdmJvb2xfdCBzdmNtcGVxX3dpZGVfczgoc3Zib29sX3QsIHN2aW50OF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGVxX3dpZGVfczMyKSkpCnN2Ym9vbF90IHN2Y21wZXFfd2lkZV9zMzIoc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBlcV93aWRlX3MxNikpKQpzdmJvb2xfdCBzdmNtcGVxX3dpZGVfczE2KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ2Vfbl9mNjQpKSkKc3Zib29sX3Qgc3ZjbXBnZV9uX2Y2NChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIGZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ2Vfbl9mMzIpKSkKc3Zib29sX3Qgc3ZjbXBnZV9uX2YzMihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ2Vfbl9mMTYpKSkKc3Zib29sX3Qgc3ZjbXBnZV9uX2YxNihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIGZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ2Vfbl9zOCkpKQpzdmJvb2xfdCBzdmNtcGdlX25fczgoc3Zib29sX3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGdlX25fczMyKSkpCnN2Ym9vbF90IHN2Y21wZ2Vfbl9zMzIoc3Zib29sX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ2Vfbl9zNjQpKSkKc3Zib29sX3Qgc3ZjbXBnZV9uX3M2NChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBnZV9uX3MxNikpKQpzdmJvb2xfdCBzdmNtcGdlX25fczE2KHN2Ym9vbF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGdlX25fdTgpKSkKc3Zib29sX3Qgc3ZjbXBnZV9uX3U4KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGdlX25fdTMyKSkpCnN2Ym9vbF90IHN2Y21wZ2Vfbl91MzIoc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBnZV9uX3U2NCkpKQpzdmJvb2xfdCBzdmNtcGdlX25fdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ2Vfbl91MTYpKSkKc3Zib29sX3Qgc3ZjbXBnZV9uX3UxNihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGdlX3M4KSkpCnN2Ym9vbF90IHN2Y21wZ2Vfczgoc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ2VfczMyKSkpCnN2Ym9vbF90IHN2Y21wZ2VfczMyKHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ2VfczY0KSkpCnN2Ym9vbF90IHN2Y21wZ2VfczY0KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ2VfczE2KSkpCnN2Ym9vbF90IHN2Y21wZ2VfczE2KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ2VfZjY0KSkpCnN2Ym9vbF90IHN2Y21wZ2VfZjY0KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGdlX2YzMikpKQpzdmJvb2xfdCBzdmNtcGdlX2YzMihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBnZV9mMTYpKSkKc3Zib29sX3Qgc3ZjbXBnZV9mMTYoc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ2VfdTgpKSkKc3Zib29sX3Qgc3ZjbXBnZV91OChzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGdlX3UzMikpKQpzdmJvb2xfdCBzdmNtcGdlX3UzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ2VfdTY0KSkpCnN2Ym9vbF90IHN2Y21wZ2VfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBnZV91MTYpKSkKc3Zib29sX3Qgc3ZjbXBnZV91MTYoc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGdlX3dpZGVfbl9zOCkpKQpzdmJvb2xfdCBzdmNtcGdlX3dpZGVfbl9zOChzdmJvb2xfdCwgc3ZpbnQ4X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGdlX3dpZGVfbl9zMzIpKSkKc3Zib29sX3Qgc3ZjbXBnZV93aWRlX25fczMyKHN2Ym9vbF90LCBzdmludDMyX3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGdlX3dpZGVfbl9zMTYpKSkKc3Zib29sX3Qgc3ZjbXBnZV93aWRlX25fczE2KHN2Ym9vbF90LCBzdmludDE2X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGdlX3dpZGVfbl91OCkpKQpzdmJvb2xfdCBzdmNtcGdlX3dpZGVfbl91OChzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ2Vfd2lkZV9uX3UzMikpKQpzdmJvb2xfdCBzdmNtcGdlX3dpZGVfbl91MzIoc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBnZV93aWRlX25fdTE2KSkpCnN2Ym9vbF90IHN2Y21wZ2Vfd2lkZV9uX3UxNihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGdlX3dpZGVfczgpKSkKc3Zib29sX3Qgc3ZjbXBnZV93aWRlX3M4KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBnZV93aWRlX3MzMikpKQpzdmJvb2xfdCBzdmNtcGdlX3dpZGVfczMyKHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ2Vfd2lkZV9zMTYpKSkKc3Zib29sX3Qgc3ZjbXBnZV93aWRlX3MxNihzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGdlX3dpZGVfdTgpKSkKc3Zib29sX3Qgc3ZjbXBnZV93aWRlX3U4KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGdlX3dpZGVfdTMyKSkpCnN2Ym9vbF90IHN2Y21wZ2Vfd2lkZV91MzIoc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGdlX3dpZGVfdTE2KSkpCnN2Ym9vbF90IHN2Y21wZ2Vfd2lkZV91MTYoc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGd0X25fZjY0KSkpCnN2Ym9vbF90IHN2Y21wZ3Rfbl9mNjQoc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGd0X25fZjMyKSkpCnN2Ym9vbF90IHN2Y21wZ3Rfbl9mMzIoc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGd0X25fZjE2KSkpCnN2Ym9vbF90IHN2Y21wZ3Rfbl9mMTYoc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGd0X25fczgpKSkKc3Zib29sX3Qgc3ZjbXBndF9uX3M4KHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBndF9uX3MzMikpKQpzdmJvb2xfdCBzdmNtcGd0X25fczMyKHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGd0X25fczY0KSkpCnN2Ym9vbF90IHN2Y21wZ3Rfbl9zNjQoc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ3Rfbl9zMTYpKSkKc3Zib29sX3Qgc3ZjbXBndF9uX3MxNihzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBndF9uX3U4KSkpCnN2Ym9vbF90IHN2Y21wZ3Rfbl91OChzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBndF9uX3UzMikpKQpzdmJvb2xfdCBzdmNtcGd0X25fdTMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ3Rfbl91NjQpKSkKc3Zib29sX3Qgc3ZjbXBndF9uX3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGd0X25fdTE2KSkpCnN2Ym9vbF90IHN2Y21wZ3Rfbl91MTYoc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBndF9zOCkpKQpzdmJvb2xfdCBzdmNtcGd0X3M4KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGd0X3MzMikpKQpzdmJvb2xfdCBzdmNtcGd0X3MzMihzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGd0X3M2NCkpKQpzdmJvb2xfdCBzdmNtcGd0X3M2NChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGd0X3MxNikpKQpzdmJvb2xfdCBzdmNtcGd0X3MxNihzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGd0X2Y2NCkpKQpzdmJvb2xfdCBzdmNtcGd0X2Y2NChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBndF9mMzIpKSkKc3Zib29sX3Qgc3ZjbXBndF9mMzIoc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ3RfZjE2KSkpCnN2Ym9vbF90IHN2Y21wZ3RfZjE2KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGd0X3U4KSkpCnN2Ym9vbF90IHN2Y21wZ3RfdTgoc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBndF91MzIpKSkKc3Zib29sX3Qgc3ZjbXBndF91MzIoc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGd0X3U2NCkpKQpzdmJvb2xfdCBzdmNtcGd0X3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ3RfdTE2KSkpCnN2Ym9vbF90IHN2Y21wZ3RfdTE2KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBndF93aWRlX25fczgpKSkKc3Zib29sX3Qgc3ZjbXBndF93aWRlX25fczgoc3Zib29sX3QsIHN2aW50OF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBndF93aWRlX25fczMyKSkpCnN2Ym9vbF90IHN2Y21wZ3Rfd2lkZV9uX3MzMihzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBndF93aWRlX25fczE2KSkpCnN2Ym9vbF90IHN2Y21wZ3Rfd2lkZV9uX3MxNihzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBndF93aWRlX25fdTgpKSkKc3Zib29sX3Qgc3ZjbXBndF93aWRlX25fdTgoc3Zib29sX3QsIHN2dWludDhfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGd0X3dpZGVfbl91MzIpKSkKc3Zib29sX3Qgc3ZjbXBndF93aWRlX25fdTMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ3Rfd2lkZV9uX3UxNikpKQpzdmJvb2xfdCBzdmNtcGd0X3dpZGVfbl91MTYoc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBndF93aWRlX3M4KSkpCnN2Ym9vbF90IHN2Y21wZ3Rfd2lkZV9zOChzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ3Rfd2lkZV9zMzIpKSkKc3Zib29sX3Qgc3ZjbXBndF93aWRlX3MzMihzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGd0X3dpZGVfczE2KSkpCnN2Ym9vbF90IHN2Y21wZ3Rfd2lkZV9zMTYoc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBndF93aWRlX3U4KSkpCnN2Ym9vbF90IHN2Y21wZ3Rfd2lkZV91OChzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBndF93aWRlX3UzMikpKQpzdmJvb2xfdCBzdmNtcGd0X3dpZGVfdTMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBndF93aWRlX3UxNikpKQpzdmJvb2xfdCBzdmNtcGd0X3dpZGVfdTE2KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsZV9uX2Y2NCkpKQpzdmJvb2xfdCBzdmNtcGxlX25fZjY0KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsZV9uX2YzMikpKQpzdmJvb2xfdCBzdmNtcGxlX25fZjMyKHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsZV9uX2YxNikpKQpzdmJvb2xfdCBzdmNtcGxlX25fZjE2KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsZV9uX3M4KSkpCnN2Ym9vbF90IHN2Y21wbGVfbl9zOChzdmJvb2xfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbGVfbl9zMzIpKSkKc3Zib29sX3Qgc3ZjbXBsZV9uX3MzMihzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsZV9uX3M2NCkpKQpzdmJvb2xfdCBzdmNtcGxlX25fczY0KHN2Ym9vbF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGxlX25fczE2KSkpCnN2Ym9vbF90IHN2Y21wbGVfbl9zMTYoc3Zib29sX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbGVfbl91OCkpKQpzdmJvb2xfdCBzdmNtcGxlX25fdTgoc3Zib29sX3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbGVfbl91MzIpKSkKc3Zib29sX3Qgc3ZjbXBsZV9uX3UzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGxlX25fdTY0KSkpCnN2Ym9vbF90IHN2Y21wbGVfbl91NjQoc3Zib29sX3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsZV9uX3UxNikpKQpzdmJvb2xfdCBzdmNtcGxlX25fdTE2KHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbGVfczgpKSkKc3Zib29sX3Qgc3ZjbXBsZV9zOChzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsZV9zMzIpKSkKc3Zib29sX3Qgc3ZjbXBsZV9zMzIoc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsZV9zNjQpKSkKc3Zib29sX3Qgc3ZjbXBsZV9zNjQoc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsZV9zMTYpKSkKc3Zib29sX3Qgc3ZjbXBsZV9zMTYoc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsZV9mNjQpKSkKc3Zib29sX3Qgc3ZjbXBsZV9mNjQoc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbGVfZjMyKSkpCnN2Ym9vbF90IHN2Y21wbGVfZjMyKHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGxlX2YxNikpKQpzdmJvb2xfdCBzdmNtcGxlX2YxNihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsZV91OCkpKQpzdmJvb2xfdCBzdmNtcGxlX3U4KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbGVfdTMyKSkpCnN2Ym9vbF90IHN2Y21wbGVfdTMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsZV91NjQpKSkKc3Zib29sX3Qgc3ZjbXBsZV91NjQoc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGxlX3UxNikpKQpzdmJvb2xfdCBzdmNtcGxlX3UxNihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbGVfd2lkZV9uX3M4KSkpCnN2Ym9vbF90IHN2Y21wbGVfd2lkZV9uX3M4KHN2Ym9vbF90LCBzdmludDhfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbGVfd2lkZV9uX3MzMikpKQpzdmJvb2xfdCBzdmNtcGxlX3dpZGVfbl9zMzIoc3Zib29sX3QsIHN2aW50MzJfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbGVfd2lkZV9uX3MxNikpKQpzdmJvb2xfdCBzdmNtcGxlX3dpZGVfbl9zMTYoc3Zib29sX3QsIHN2aW50MTZfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbGVfd2lkZV9uX3U4KSkpCnN2Ym9vbF90IHN2Y21wbGVfd2lkZV9uX3U4KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsZV93aWRlX25fdTMyKSkpCnN2Ym9vbF90IHN2Y21wbGVfd2lkZV9uX3UzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGxlX3dpZGVfbl91MTYpKSkKc3Zib29sX3Qgc3ZjbXBsZV93aWRlX25fdTE2KHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbGVfd2lkZV9zOCkpKQpzdmJvb2xfdCBzdmNtcGxlX3dpZGVfczgoc3Zib29sX3QsIHN2aW50OF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGxlX3dpZGVfczMyKSkpCnN2Ym9vbF90IHN2Y21wbGVfd2lkZV9zMzIoc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsZV93aWRlX3MxNikpKQpzdmJvb2xfdCBzdmNtcGxlX3dpZGVfczE2KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbGVfd2lkZV91OCkpKQpzdmJvb2xfdCBzdmNtcGxlX3dpZGVfdTgoc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbGVfd2lkZV91MzIpKSkKc3Zib29sX3Qgc3ZjbXBsZV93aWRlX3UzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbGVfd2lkZV91MTYpKSkKc3Zib29sX3Qgc3ZjbXBsZV93aWRlX3UxNihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbHRfbl91OCkpKQpzdmJvb2xfdCBzdmNtcGx0X25fdTgoc3Zib29sX3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbHRfbl91MzIpKSkKc3Zib29sX3Qgc3ZjbXBsdF9uX3UzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGx0X25fdTY0KSkpCnN2Ym9vbF90IHN2Y21wbHRfbl91NjQoc3Zib29sX3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsdF9uX3UxNikpKQpzdmJvb2xfdCBzdmNtcGx0X25fdTE2KHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbHRfbl9mNjQpKSkKc3Zib29sX3Qgc3ZjbXBsdF9uX2Y2NChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIGZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbHRfbl9mMzIpKSkKc3Zib29sX3Qgc3ZjbXBsdF9uX2YzMihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbHRfbl9mMTYpKSkKc3Zib29sX3Qgc3ZjbXBsdF9uX2YxNihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIGZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbHRfbl9zOCkpKQpzdmJvb2xfdCBzdmNtcGx0X25fczgoc3Zib29sX3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGx0X25fczMyKSkpCnN2Ym9vbF90IHN2Y21wbHRfbl9zMzIoc3Zib29sX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbHRfbl9zNjQpKSkKc3Zib29sX3Qgc3ZjbXBsdF9uX3M2NChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsdF9uX3MxNikpKQpzdmJvb2xfdCBzdmNtcGx0X25fczE2KHN2Ym9vbF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGx0X3U4KSkpCnN2Ym9vbF90IHN2Y21wbHRfdTgoc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsdF91MzIpKSkKc3Zib29sX3Qgc3ZjbXBsdF91MzIoc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGx0X3U2NCkpKQpzdmJvb2xfdCBzdmNtcGx0X3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbHRfdTE2KSkpCnN2Ym9vbF90IHN2Y21wbHRfdTE2KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsdF9zOCkpKQpzdmJvb2xfdCBzdmNtcGx0X3M4KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGx0X3MzMikpKQpzdmJvb2xfdCBzdmNtcGx0X3MzMihzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGx0X3M2NCkpKQpzdmJvb2xfdCBzdmNtcGx0X3M2NChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGx0X3MxNikpKQpzdmJvb2xfdCBzdmNtcGx0X3MxNihzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGx0X2Y2NCkpKQpzdmJvb2xfdCBzdmNtcGx0X2Y2NChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsdF9mMzIpKSkKc3Zib29sX3Qgc3ZjbXBsdF9mMzIoc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbHRfZjE2KSkpCnN2Ym9vbF90IHN2Y21wbHRfZjE2KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGx0X3dpZGVfbl91OCkpKQpzdmJvb2xfdCBzdmNtcGx0X3dpZGVfbl91OChzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbHRfd2lkZV9uX3UzMikpKQpzdmJvb2xfdCBzdmNtcGx0X3dpZGVfbl91MzIoc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsdF93aWRlX25fdTE2KSkpCnN2Ym9vbF90IHN2Y21wbHRfd2lkZV9uX3UxNihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGx0X3dpZGVfbl9zOCkpKQpzdmJvb2xfdCBzdmNtcGx0X3dpZGVfbl9zOChzdmJvb2xfdCwgc3ZpbnQ4X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGx0X3dpZGVfbl9zMzIpKSkKc3Zib29sX3Qgc3ZjbXBsdF93aWRlX25fczMyKHN2Ym9vbF90LCBzdmludDMyX3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGx0X3dpZGVfbl9zMTYpKSkKc3Zib29sX3Qgc3ZjbXBsdF93aWRlX25fczE2KHN2Ym9vbF90LCBzdmludDE2X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGx0X3dpZGVfdTgpKSkKc3Zib29sX3Qgc3ZjbXBsdF93aWRlX3U4KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGx0X3dpZGVfdTMyKSkpCnN2Ym9vbF90IHN2Y21wbHRfd2lkZV91MzIoc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGx0X3dpZGVfdTE2KSkpCnN2Ym9vbF90IHN2Y21wbHRfd2lkZV91MTYoc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGx0X3dpZGVfczgpKSkKc3Zib29sX3Qgc3ZjbXBsdF93aWRlX3M4KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsdF93aWRlX3MzMikpKQpzdmJvb2xfdCBzdmNtcGx0X3dpZGVfczMyKHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbHRfd2lkZV9zMTYpKSkKc3Zib29sX3Qgc3ZjbXBsdF93aWRlX3MxNihzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcG5lX25fZjY0KSkpCnN2Ym9vbF90IHN2Y21wbmVfbl9mNjQoc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcG5lX25fZjMyKSkpCnN2Ym9vbF90IHN2Y21wbmVfbl9mMzIoc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcG5lX25fZjE2KSkpCnN2Ym9vbF90IHN2Y21wbmVfbl9mMTYoc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcG5lX25fdTgpKSkKc3Zib29sX3Qgc3ZjbXBuZV9uX3U4KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcG5lX25fdTMyKSkpCnN2Ym9vbF90IHN2Y21wbmVfbl91MzIoc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBuZV9uX3U2NCkpKQpzdmJvb2xfdCBzdmNtcG5lX25fdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbmVfbl91MTYpKSkKc3Zib29sX3Qgc3ZjbXBuZV9uX3UxNihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcG5lX25fczgpKSkKc3Zib29sX3Qgc3ZjbXBuZV9uX3M4KHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBuZV9uX3MzMikpKQpzdmJvb2xfdCBzdmNtcG5lX25fczMyKHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcG5lX25fczY0KSkpCnN2Ym9vbF90IHN2Y21wbmVfbl9zNjQoc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbmVfbl9zMTYpKSkKc3Zib29sX3Qgc3ZjbXBuZV9uX3MxNihzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBuZV91OCkpKQpzdmJvb2xfdCBzdmNtcG5lX3U4KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbmVfdTMyKSkpCnN2Ym9vbF90IHN2Y21wbmVfdTMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBuZV91NjQpKSkKc3Zib29sX3Qgc3ZjbXBuZV91NjQoc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcG5lX3UxNikpKQpzdmJvb2xfdCBzdmNtcG5lX3UxNihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbmVfczgpKSkKc3Zib29sX3Qgc3ZjbXBuZV9zOChzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBuZV9zMzIpKSkKc3Zib29sX3Qgc3ZjbXBuZV9zMzIoc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBuZV9zNjQpKSkKc3Zib29sX3Qgc3ZjbXBuZV9zNjQoc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBuZV9zMTYpKSkKc3Zib29sX3Qgc3ZjbXBuZV9zMTYoc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBuZV9mNjQpKSkKc3Zib29sX3Qgc3ZjbXBuZV9mNjQoc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbmVfZjMyKSkpCnN2Ym9vbF90IHN2Y21wbmVfZjMyKHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcG5lX2YxNikpKQpzdmJvb2xfdCBzdmNtcG5lX2YxNihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBuZV93aWRlX25fczgpKSkKc3Zib29sX3Qgc3ZjbXBuZV93aWRlX25fczgoc3Zib29sX3QsIHN2aW50OF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBuZV93aWRlX25fczMyKSkpCnN2Ym9vbF90IHN2Y21wbmVfd2lkZV9uX3MzMihzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBuZV93aWRlX25fczE2KSkpCnN2Ym9vbF90IHN2Y21wbmVfd2lkZV9uX3MxNihzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBuZV93aWRlX3M4KSkpCnN2Ym9vbF90IHN2Y21wbmVfd2lkZV9zOChzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbmVfd2lkZV9zMzIpKSkKc3Zib29sX3Qgc3ZjbXBuZV93aWRlX3MzMihzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcG5lX3dpZGVfczE2KSkpCnN2Ym9vbF90IHN2Y21wbmVfd2lkZV9zMTYoc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXB1b19uX2Y2NCkpKQpzdmJvb2xfdCBzdmNtcHVvX25fZjY0KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXB1b19uX2YzMikpKQpzdmJvb2xfdCBzdmNtcHVvX25fZjMyKHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXB1b19uX2YxNikpKQpzdmJvb2xfdCBzdmNtcHVvX25fZjE2KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXB1b19mNjQpKSkKc3Zib29sX3Qgc3ZjbXB1b19mNjQoc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wdW9fZjMyKSkpCnN2Ym9vbF90IHN2Y21wdW9fZjMyKHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcHVvX2YxNikpKQpzdmJvb2xfdCBzdmNtcHVvX2YxNihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zjbm90X3U4X20pKSkKc3Z1aW50OF90IHN2Y25vdF91OF9tKHN2dWludDhfdCwgc3Zib29sX3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y25vdF91MzJfbSkpKQpzdnVpbnQzMl90IHN2Y25vdF91MzJfbShzdnVpbnQzMl90LCBzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y25vdF91NjRfbSkpKQpzdnVpbnQ2NF90IHN2Y25vdF91NjRfbShzdnVpbnQ2NF90LCBzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y25vdF91MTZfbSkpKQpzdnVpbnQxNl90IHN2Y25vdF91MTZfbShzdnVpbnQxNl90LCBzdmJvb2xfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y25vdF9zOF9tKSkpCnN2aW50OF90IHN2Y25vdF9zOF9tKHN2aW50OF90LCBzdmJvb2xfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNub3RfczMyX20pKSkKc3ZpbnQzMl90IHN2Y25vdF9zMzJfbShzdmludDMyX3QsIHN2Ym9vbF90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNub3RfczY0X20pKSkKc3ZpbnQ2NF90IHN2Y25vdF9zNjRfbShzdmludDY0X3QsIHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNub3RfczE2X20pKSkKc3ZpbnQxNl90IHN2Y25vdF9zMTZfbShzdmludDE2X3QsIHN2Ym9vbF90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNub3RfdThfeCkpKQpzdnVpbnQ4X3Qgc3Zjbm90X3U4X3goc3Zib29sX3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y25vdF91MzJfeCkpKQpzdnVpbnQzMl90IHN2Y25vdF91MzJfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y25vdF91NjRfeCkpKQpzdnVpbnQ2NF90IHN2Y25vdF91NjRfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y25vdF91MTZfeCkpKQpzdnVpbnQxNl90IHN2Y25vdF91MTZfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y25vdF9zOF94KSkpCnN2aW50OF90IHN2Y25vdF9zOF94KHN2Ym9vbF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y25vdF9zMzJfeCkpKQpzdmludDMyX3Qgc3Zjbm90X3MzMl94KHN2Ym9vbF90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNub3RfczY0X3gpKSkKc3ZpbnQ2NF90IHN2Y25vdF9zNjRfeChzdmJvb2xfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zjbm90X3MxNl94KSkpCnN2aW50MTZfdCBzdmNub3RfczE2X3goc3Zib29sX3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y25vdF91OF96KSkpCnN2dWludDhfdCBzdmNub3RfdThfeihzdmJvb2xfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zjbm90X3UzMl96KSkpCnN2dWludDMyX3Qgc3Zjbm90X3UzMl96KHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zjbm90X3U2NF96KSkpCnN2dWludDY0X3Qgc3Zjbm90X3U2NF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zjbm90X3UxNl96KSkpCnN2dWludDE2X3Qgc3Zjbm90X3UxNl96KHN2Ym9vbF90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zjbm90X3M4X3opKSkKc3ZpbnQ4X3Qgc3Zjbm90X3M4X3ooc3Zib29sX3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zjbm90X3MzMl96KSkpCnN2aW50MzJfdCBzdmNub3RfczMyX3ooc3Zib29sX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y25vdF9zNjRfeikpKQpzdmludDY0X3Qgc3Zjbm90X3M2NF96KHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNub3RfczE2X3opKSkKc3ZpbnQxNl90IHN2Y25vdF9zMTZfeihzdmJvb2xfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbnRfdThfbSkpKQpzdnVpbnQ4X3Qgc3ZjbnRfdThfbShzdnVpbnQ4X3QsIHN2Ym9vbF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNudF91MzJfbSkpKQpzdnVpbnQzMl90IHN2Y250X3UzMl9tKHN2dWludDMyX3QsIHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbnRfdTY0X20pKSkKc3Z1aW50NjRfdCBzdmNudF91NjRfbShzdnVpbnQ2NF90LCBzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y250X3UxNl9tKSkpCnN2dWludDE2X3Qgc3ZjbnRfdTE2X20oc3Z1aW50MTZfdCwgc3Zib29sX3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNudF9zOF9tKSkpCnN2dWludDhfdCBzdmNudF9zOF9tKHN2dWludDhfdCwgc3Zib29sX3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbnRfZjY0X20pKSkKc3Z1aW50NjRfdCBzdmNudF9mNjRfbShzdnVpbnQ2NF90LCBzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNudF9mMzJfbSkpKQpzdnVpbnQzMl90IHN2Y250X2YzMl9tKHN2dWludDMyX3QsIHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y250X2YxNl9tKSkpCnN2dWludDE2X3Qgc3ZjbnRfZjE2X20oc3Z1aW50MTZfdCwgc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbnRfczMyX20pKSkKc3Z1aW50MzJfdCBzdmNudF9zMzJfbShzdnVpbnQzMl90LCBzdmJvb2xfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbnRfczY0X20pKSkKc3Z1aW50NjRfdCBzdmNudF9zNjRfbShzdnVpbnQ2NF90LCBzdmJvb2xfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbnRfczE2X20pKSkKc3Z1aW50MTZfdCBzdmNudF9zMTZfbShzdnVpbnQxNl90LCBzdmJvb2xfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbnRfdThfeCkpKQpzdnVpbnQ4X3Qgc3ZjbnRfdThfeChzdmJvb2xfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbnRfdTMyX3gpKSkKc3Z1aW50MzJfdCBzdmNudF91MzJfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y250X3U2NF94KSkpCnN2dWludDY0X3Qgc3ZjbnRfdTY0X3goc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNudF91MTZfeCkpKQpzdnVpbnQxNl90IHN2Y250X3UxNl94KHN2Ym9vbF90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbnRfczhfeCkpKQpzdnVpbnQ4X3Qgc3ZjbnRfczhfeChzdmJvb2xfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNudF9mNjRfeCkpKQpzdnVpbnQ2NF90IHN2Y250X2Y2NF94KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y250X2YzMl94KSkpCnN2dWludDMyX3Qgc3ZjbnRfZjMyX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbnRfZjE2X3gpKSkKc3Z1aW50MTZfdCBzdmNudF9mMTZfeChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNudF9zMzJfeCkpKQpzdnVpbnQzMl90IHN2Y250X3MzMl94KHN2Ym9vbF90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNudF9zNjRfeCkpKQpzdnVpbnQ2NF90IHN2Y250X3M2NF94KHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNudF9zMTZfeCkpKQpzdnVpbnQxNl90IHN2Y250X3MxNl94KHN2Ym9vbF90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNudF91OF96KSkpCnN2dWludDhfdCBzdmNudF91OF96KHN2Ym9vbF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNudF91MzJfeikpKQpzdnVpbnQzMl90IHN2Y250X3UzMl96KHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbnRfdTY0X3opKSkKc3Z1aW50NjRfdCBzdmNudF91NjRfeihzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y250X3UxNl96KSkpCnN2dWludDE2X3Qgc3ZjbnRfdTE2X3ooc3Zib29sX3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNudF9zOF96KSkpCnN2dWludDhfdCBzdmNudF9zOF96KHN2Ym9vbF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y250X2Y2NF96KSkpCnN2dWludDY0X3Qgc3ZjbnRfZjY0X3ooc3Zib29sX3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbnRfZjMyX3opKSkKc3Z1aW50MzJfdCBzdmNudF9mMzJfeihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNudF9mMTZfeikpKQpzdnVpbnQxNl90IHN2Y250X2YxNl96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y250X3MzMl96KSkpCnN2dWludDMyX3Qgc3ZjbnRfczMyX3ooc3Zib29sX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y250X3M2NF96KSkpCnN2dWludDY0X3Qgc3ZjbnRfczY0X3ooc3Zib29sX3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y250X3MxNl96KSkpCnN2dWludDE2X3Qgc3ZjbnRfczE2X3ooc3Zib29sX3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y250YikpKQp1aW50NjRfdCBzdmNudGIoKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbnRiX3BhdCkpKQp1aW50NjRfdCBzdmNudGJfcGF0KGVudW0gc3ZwYXR0ZXJuKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbnRkKSkpCnVpbnQ2NF90IHN2Y250ZCgpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNudGRfcGF0KSkpCnVpbnQ2NF90IHN2Y250ZF9wYXQoZW51bSBzdnBhdHRlcm4pOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNudGgpKSkKdWludDY0X3Qgc3ZjbnRoKCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y250aF9wYXQpKSkKdWludDY0X3Qgc3ZjbnRoX3BhdChlbnVtIHN2cGF0dGVybik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y250cF9iOCkpKQp1aW50NjRfdCBzdmNudHBfYjgoc3Zib29sX3QsIHN2Ym9vbF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbnRwX2IzMikpKQp1aW50NjRfdCBzdmNudHBfYjMyKHN2Ym9vbF90LCBzdmJvb2xfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y250cF9iNjQpKSkKdWludDY0X3Qgc3ZjbnRwX2I2NChzdmJvb2xfdCwgc3Zib29sX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNudHBfYjE2KSkpCnVpbnQ2NF90IHN2Y250cF9iMTYoc3Zib29sX3QsIHN2Ym9vbF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbnR3KSkpCnVpbnQ2NF90IHN2Y250dygpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNudHdfcGF0KSkpCnVpbnQ2NF90IHN2Y250d19wYXQoZW51bSBzdnBhdHRlcm4pOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNvbXBhY3RfdTMyKSkpCnN2dWludDMyX3Qgc3Zjb21wYWN0X3UzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y29tcGFjdF91NjQpKSkKc3Z1aW50NjRfdCBzdmNvbXBhY3RfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zjb21wYWN0X2Y2NCkpKQpzdmZsb2F0NjRfdCBzdmNvbXBhY3RfZjY0KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y29tcGFjdF9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3Zjb21wYWN0X2YzMihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNvbXBhY3RfczMyKSkpCnN2aW50MzJfdCBzdmNvbXBhY3RfczMyKHN2Ym9vbF90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNvbXBhY3RfczY0KSkpCnN2aW50NjRfdCBzdmNvbXBhY3RfczY0KHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNyZWF0ZTJfdTgpKSkKc3Z1aW50OHgyX3Qgc3ZjcmVhdGUyX3U4KHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjcmVhdGUyX3UzMikpKQpzdnVpbnQzMngyX3Qgc3ZjcmVhdGUyX3UzMihzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjcmVhdGUyX3U2NCkpKQpzdnVpbnQ2NHgyX3Qgc3ZjcmVhdGUyX3U2NChzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjcmVhdGUyX3UxNikpKQpzdnVpbnQxNngyX3Qgc3ZjcmVhdGUyX3UxNihzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjcmVhdGUyX3M4KSkpCnN2aW50OHgyX3Qgc3ZjcmVhdGUyX3M4KHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3JlYXRlMl9mNjQpKSkKc3ZmbG9hdDY0eDJfdCBzdmNyZWF0ZTJfZjY0KHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3JlYXRlMl9mMzIpKSkKc3ZmbG9hdDMyeDJfdCBzdmNyZWF0ZTJfZjMyKHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3JlYXRlMl9mMTYpKSkKc3ZmbG9hdDE2eDJfdCBzdmNyZWF0ZTJfZjE2KHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3JlYXRlMl9zMzIpKSkKc3ZpbnQzMngyX3Qgc3ZjcmVhdGUyX3MzMihzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3JlYXRlMl9zNjQpKSkKc3ZpbnQ2NHgyX3Qgc3ZjcmVhdGUyX3M2NChzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3JlYXRlMl9zMTYpKSkKc3ZpbnQxNngyX3Qgc3ZjcmVhdGUyX3MxNihzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3JlYXRlM191OCkpKQpzdnVpbnQ4eDNfdCBzdmNyZWF0ZTNfdTgoc3Z1aW50OF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3JlYXRlM191MzIpKSkKc3Z1aW50MzJ4M190IHN2Y3JlYXRlM191MzIoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3JlYXRlM191NjQpKSkKc3Z1aW50NjR4M190IHN2Y3JlYXRlM191NjQoc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3JlYXRlM191MTYpKSkKc3Z1aW50MTZ4M190IHN2Y3JlYXRlM191MTYoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3JlYXRlM19zOCkpKQpzdmludDh4M190IHN2Y3JlYXRlM19zOChzdmludDhfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjcmVhdGUzX2Y2NCkpKQpzdmZsb2F0NjR4M190IHN2Y3JlYXRlM19mNjQoc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3JlYXRlM19mMzIpKSkKc3ZmbG9hdDMyeDNfdCBzdmNyZWF0ZTNfZjMyKHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNyZWF0ZTNfZjE2KSkpCnN2ZmxvYXQxNngzX3Qgc3ZjcmVhdGUzX2YxNihzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjcmVhdGUzX3MzMikpKQpzdmludDMyeDNfdCBzdmNyZWF0ZTNfczMyKHN2aW50MzJfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNyZWF0ZTNfczY0KSkpCnN2aW50NjR4M190IHN2Y3JlYXRlM19zNjQoc3ZpbnQ2NF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3JlYXRlM19zMTYpKSkKc3ZpbnQxNngzX3Qgc3ZjcmVhdGUzX3MxNihzdmludDE2X3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjcmVhdGU0X3U4KSkpCnN2dWludDh4NF90IHN2Y3JlYXRlNF91OChzdnVpbnQ4X3QsIHN2dWludDhfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNyZWF0ZTRfdTMyKSkpCnN2dWludDMyeDRfdCBzdmNyZWF0ZTRfdTMyKHN2dWludDMyX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNyZWF0ZTRfdTY0KSkpCnN2dWludDY0eDRfdCBzdmNyZWF0ZTRfdTY0KHN2dWludDY0X3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNyZWF0ZTRfdTE2KSkpCnN2dWludDE2eDRfdCBzdmNyZWF0ZTRfdTE2KHN2dWludDE2X3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNyZWF0ZTRfczgpKSkKc3ZpbnQ4eDRfdCBzdmNyZWF0ZTRfczgoc3ZpbnQ4X3QsIHN2aW50OF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNyZWF0ZTRfZjY0KSkpCnN2ZmxvYXQ2NHg0X3Qgc3ZjcmVhdGU0X2Y2NChzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3JlYXRlNF9mMzIpKSkKc3ZmbG9hdDMyeDRfdCBzdmNyZWF0ZTRfZjMyKHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjcmVhdGU0X2YxNikpKQpzdmZsb2F0MTZ4NF90IHN2Y3JlYXRlNF9mMTYoc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNyZWF0ZTRfczMyKSkpCnN2aW50MzJ4NF90IHN2Y3JlYXRlNF9zMzIoc3ZpbnQzMl90LCBzdmludDMyX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjcmVhdGU0X3M2NCkpKQpzdmludDY0eDRfdCBzdmNyZWF0ZTRfczY0KHN2aW50NjRfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3JlYXRlNF9zMTYpKSkKc3ZpbnQxNng0X3Qgc3ZjcmVhdGU0X3MxNihzdmludDE2X3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9mMTZfZjMyX20pKSkKc3ZmbG9hdDE2X3Qgc3ZjdnRfZjE2X2YzMl9tKHN2ZmxvYXQxNl90LCBzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9mMTZfZjMyX3gpKSkKc3ZmbG9hdDE2X3Qgc3ZjdnRfZjE2X2YzMl94KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X2YxNl9mMzJfeikpKQpzdmZsb2F0MTZfdCBzdmN2dF9mMTZfZjMyX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfZjE2X2Y2NF9tKSkpCnN2ZmxvYXQxNl90IHN2Y3Z0X2YxNl9mNjRfbShzdmZsb2F0MTZfdCwgc3Zib29sX3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfZjE2X2Y2NF94KSkpCnN2ZmxvYXQxNl90IHN2Y3Z0X2YxNl9mNjRfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9mMTZfZjY0X3opKSkKc3ZmbG9hdDE2X3Qgc3ZjdnRfZjE2X2Y2NF96KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X2YxNl9zMTZfbSkpKQpzdmZsb2F0MTZfdCBzdmN2dF9mMTZfczE2X20oc3ZmbG9hdDE2X3QsIHN2Ym9vbF90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9mMTZfczE2X3gpKSkKc3ZmbG9hdDE2X3Qgc3ZjdnRfZjE2X3MxNl94KHN2Ym9vbF90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9mMTZfczE2X3opKSkKc3ZmbG9hdDE2X3Qgc3ZjdnRfZjE2X3MxNl96KHN2Ym9vbF90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9mMTZfczMyX20pKSkKc3ZmbG9hdDE2X3Qgc3ZjdnRfZjE2X3MzMl9tKHN2ZmxvYXQxNl90LCBzdmJvb2xfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfZjE2X3MzMl94KSkpCnN2ZmxvYXQxNl90IHN2Y3Z0X2YxNl9zMzJfeChzdmJvb2xfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfZjE2X3MzMl96KSkpCnN2ZmxvYXQxNl90IHN2Y3Z0X2YxNl9zMzJfeihzdmJvb2xfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfZjE2X3M2NF9tKSkpCnN2ZmxvYXQxNl90IHN2Y3Z0X2YxNl9zNjRfbShzdmZsb2F0MTZfdCwgc3Zib29sX3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X2YxNl9zNjRfeCkpKQpzdmZsb2F0MTZfdCBzdmN2dF9mMTZfczY0X3goc3Zib29sX3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X2YxNl9zNjRfeikpKQpzdmZsb2F0MTZfdCBzdmN2dF9mMTZfczY0X3ooc3Zib29sX3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X2YxNl91MTZfbSkpKQpzdmZsb2F0MTZfdCBzdmN2dF9mMTZfdTE2X20oc3ZmbG9hdDE2X3QsIHN2Ym9vbF90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfZjE2X3UxNl94KSkpCnN2ZmxvYXQxNl90IHN2Y3Z0X2YxNl91MTZfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X2YxNl91MTZfeikpKQpzdmZsb2F0MTZfdCBzdmN2dF9mMTZfdTE2X3ooc3Zib29sX3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9mMTZfdTMyX20pKSkKc3ZmbG9hdDE2X3Qgc3ZjdnRfZjE2X3UzMl9tKHN2ZmxvYXQxNl90LCBzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X2YxNl91MzJfeCkpKQpzdmZsb2F0MTZfdCBzdmN2dF9mMTZfdTMyX3goc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9mMTZfdTMyX3opKSkKc3ZmbG9hdDE2X3Qgc3ZjdnRfZjE2X3UzMl96KHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfZjE2X3U2NF9tKSkpCnN2ZmxvYXQxNl90IHN2Y3Z0X2YxNl91NjRfbShzdmZsb2F0MTZfdCwgc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9mMTZfdTY0X3gpKSkKc3ZmbG9hdDE2X3Qgc3ZjdnRfZjE2X3U2NF94KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfZjE2X3U2NF96KSkpCnN2ZmxvYXQxNl90IHN2Y3Z0X2YxNl91NjRfeihzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X2YzMl9mMTZfbSkpKQpzdmZsb2F0MzJfdCBzdmN2dF9mMzJfZjE2X20oc3ZmbG9hdDMyX3QsIHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X2YzMl9mMTZfeCkpKQpzdmZsb2F0MzJfdCBzdmN2dF9mMzJfZjE2X3goc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfZjMyX2YxNl96KSkpCnN2ZmxvYXQzMl90IHN2Y3Z0X2YzMl9mMTZfeihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9mMzJfZjY0X20pKSkKc3ZmbG9hdDMyX3Qgc3ZjdnRfZjMyX2Y2NF9tKHN2ZmxvYXQzMl90LCBzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9mMzJfZjY0X3gpKSkKc3ZmbG9hdDMyX3Qgc3ZjdnRfZjMyX2Y2NF94KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X2YzMl9mNjRfeikpKQpzdmZsb2F0MzJfdCBzdmN2dF9mMzJfZjY0X3ooc3Zib29sX3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfZjMyX3MzMl9tKSkpCnN2ZmxvYXQzMl90IHN2Y3Z0X2YzMl9zMzJfbShzdmZsb2F0MzJfdCwgc3Zib29sX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X2YzMl9zMzJfeCkpKQpzdmZsb2F0MzJfdCBzdmN2dF9mMzJfczMyX3goc3Zib29sX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X2YzMl9zMzJfeikpKQpzdmZsb2F0MzJfdCBzdmN2dF9mMzJfczMyX3ooc3Zib29sX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X2YzMl9zNjRfbSkpKQpzdmZsb2F0MzJfdCBzdmN2dF9mMzJfczY0X20oc3ZmbG9hdDMyX3QsIHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9mMzJfczY0X3gpKSkKc3ZmbG9hdDMyX3Qgc3ZjdnRfZjMyX3M2NF94KHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9mMzJfczY0X3opKSkKc3ZmbG9hdDMyX3Qgc3ZjdnRfZjMyX3M2NF96KHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9mMzJfdTMyX20pKSkKc3ZmbG9hdDMyX3Qgc3ZjdnRfZjMyX3UzMl9tKHN2ZmxvYXQzMl90LCBzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X2YzMl91MzJfeCkpKQpzdmZsb2F0MzJfdCBzdmN2dF9mMzJfdTMyX3goc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9mMzJfdTMyX3opKSkKc3ZmbG9hdDMyX3Qgc3ZjdnRfZjMyX3UzMl96KHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfZjMyX3U2NF9tKSkpCnN2ZmxvYXQzMl90IHN2Y3Z0X2YzMl91NjRfbShzdmZsb2F0MzJfdCwgc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9mMzJfdTY0X3gpKSkKc3ZmbG9hdDMyX3Qgc3ZjdnRfZjMyX3U2NF94KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfZjMyX3U2NF96KSkpCnN2ZmxvYXQzMl90IHN2Y3Z0X2YzMl91NjRfeihzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X2Y2NF9mMTZfbSkpKQpzdmZsb2F0NjRfdCBzdmN2dF9mNjRfZjE2X20oc3ZmbG9hdDY0X3QsIHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X2Y2NF9mMTZfeCkpKQpzdmZsb2F0NjRfdCBzdmN2dF9mNjRfZjE2X3goc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfZjY0X2YxNl96KSkpCnN2ZmxvYXQ2NF90IHN2Y3Z0X2Y2NF9mMTZfeihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9mNjRfZjMyX20pKSkKc3ZmbG9hdDY0X3Qgc3ZjdnRfZjY0X2YzMl9tKHN2ZmxvYXQ2NF90LCBzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9mNjRfZjMyX3gpKSkKc3ZmbG9hdDY0X3Qgc3ZjdnRfZjY0X2YzMl94KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X2Y2NF9mMzJfeikpKQpzdmZsb2F0NjRfdCBzdmN2dF9mNjRfZjMyX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfZjY0X3MzMl9tKSkpCnN2ZmxvYXQ2NF90IHN2Y3Z0X2Y2NF9zMzJfbShzdmZsb2F0NjRfdCwgc3Zib29sX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X2Y2NF9zMzJfeCkpKQpzdmZsb2F0NjRfdCBzdmN2dF9mNjRfczMyX3goc3Zib29sX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X2Y2NF9zMzJfeikpKQpzdmZsb2F0NjRfdCBzdmN2dF9mNjRfczMyX3ooc3Zib29sX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X2Y2NF9zNjRfbSkpKQpzdmZsb2F0NjRfdCBzdmN2dF9mNjRfczY0X20oc3ZmbG9hdDY0X3QsIHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9mNjRfczY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZjdnRfZjY0X3M2NF94KHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9mNjRfczY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZjdnRfZjY0X3M2NF96KHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9mNjRfdTMyX20pKSkKc3ZmbG9hdDY0X3Qgc3ZjdnRfZjY0X3UzMl9tKHN2ZmxvYXQ2NF90LCBzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X2Y2NF91MzJfeCkpKQpzdmZsb2F0NjRfdCBzdmN2dF9mNjRfdTMyX3goc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9mNjRfdTMyX3opKSkKc3ZmbG9hdDY0X3Qgc3ZjdnRfZjY0X3UzMl96KHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfZjY0X3U2NF9tKSkpCnN2ZmxvYXQ2NF90IHN2Y3Z0X2Y2NF91NjRfbShzdmZsb2F0NjRfdCwgc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9mNjRfdTY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZjdnRfZjY0X3U2NF94KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfZjY0X3U2NF96KSkpCnN2ZmxvYXQ2NF90IHN2Y3Z0X2Y2NF91NjRfeihzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X3MxNl9mMTZfbSkpKQpzdmludDE2X3Qgc3ZjdnRfczE2X2YxNl9tKHN2aW50MTZfdCwgc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfczE2X2YxNl94KSkpCnN2aW50MTZfdCBzdmN2dF9zMTZfZjE2X3goc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfczE2X2YxNl96KSkpCnN2aW50MTZfdCBzdmN2dF9zMTZfZjE2X3ooc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfczMyX2YxNl9tKSkpCnN2aW50MzJfdCBzdmN2dF9zMzJfZjE2X20oc3ZpbnQzMl90LCBzdmJvb2xfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9zMzJfZjE2X3gpKSkKc3ZpbnQzMl90IHN2Y3Z0X3MzMl9mMTZfeChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9zMzJfZjE2X3opKSkKc3ZpbnQzMl90IHN2Y3Z0X3MzMl9mMTZfeihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9zMzJfZjMyX20pKSkKc3ZpbnQzMl90IHN2Y3Z0X3MzMl9mMzJfbShzdmludDMyX3QsIHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X3MzMl9mMzJfeCkpKQpzdmludDMyX3Qgc3ZjdnRfczMyX2YzMl94KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X3MzMl9mMzJfeikpKQpzdmludDMyX3Qgc3ZjdnRfczMyX2YzMl96KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X3MzMl9mNjRfbSkpKQpzdmludDMyX3Qgc3ZjdnRfczMyX2Y2NF9tKHN2aW50MzJfdCwgc3Zib29sX3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfczMyX2Y2NF94KSkpCnN2aW50MzJfdCBzdmN2dF9zMzJfZjY0X3goc3Zib29sX3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfczMyX2Y2NF96KSkpCnN2aW50MzJfdCBzdmN2dF9zMzJfZjY0X3ooc3Zib29sX3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfczY0X2YxNl9tKSkpCnN2aW50NjRfdCBzdmN2dF9zNjRfZjE2X20oc3ZpbnQ2NF90LCBzdmJvb2xfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9zNjRfZjE2X3gpKSkKc3ZpbnQ2NF90IHN2Y3Z0X3M2NF9mMTZfeChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9zNjRfZjE2X3opKSkKc3ZpbnQ2NF90IHN2Y3Z0X3M2NF9mMTZfeihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9zNjRfZjMyX20pKSkKc3ZpbnQ2NF90IHN2Y3Z0X3M2NF9mMzJfbShzdmludDY0X3QsIHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X3M2NF9mMzJfeCkpKQpzdmludDY0X3Qgc3ZjdnRfczY0X2YzMl94KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X3M2NF9mMzJfeikpKQpzdmludDY0X3Qgc3ZjdnRfczY0X2YzMl96KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X3M2NF9mNjRfbSkpKQpzdmludDY0X3Qgc3ZjdnRfczY0X2Y2NF9tKHN2aW50NjRfdCwgc3Zib29sX3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfczY0X2Y2NF94KSkpCnN2aW50NjRfdCBzdmN2dF9zNjRfZjY0X3goc3Zib29sX3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfczY0X2Y2NF96KSkpCnN2aW50NjRfdCBzdmN2dF9zNjRfZjY0X3ooc3Zib29sX3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfdTE2X2YxNl9tKSkpCnN2dWludDE2X3Qgc3ZjdnRfdTE2X2YxNl9tKHN2dWludDE2X3QsIHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X3UxNl9mMTZfeCkpKQpzdnVpbnQxNl90IHN2Y3Z0X3UxNl9mMTZfeChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF91MTZfZjE2X3opKSkKc3Z1aW50MTZfdCBzdmN2dF91MTZfZjE2X3ooc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfdTMyX2YxNl9tKSkpCnN2dWludDMyX3Qgc3ZjdnRfdTMyX2YxNl9tKHN2dWludDMyX3QsIHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X3UzMl9mMTZfeCkpKQpzdnVpbnQzMl90IHN2Y3Z0X3UzMl9mMTZfeChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF91MzJfZjE2X3opKSkKc3Z1aW50MzJfdCBzdmN2dF91MzJfZjE2X3ooc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfdTMyX2YzMl9tKSkpCnN2dWludDMyX3Qgc3ZjdnRfdTMyX2YzMl9tKHN2dWludDMyX3QsIHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X3UzMl9mMzJfeCkpKQpzdnVpbnQzMl90IHN2Y3Z0X3UzMl9mMzJfeChzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF91MzJfZjMyX3opKSkKc3Z1aW50MzJfdCBzdmN2dF91MzJfZjMyX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfdTMyX2Y2NF9tKSkpCnN2dWludDMyX3Qgc3ZjdnRfdTMyX2Y2NF9tKHN2dWludDMyX3QsIHN2Ym9vbF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X3UzMl9mNjRfeCkpKQpzdnVpbnQzMl90IHN2Y3Z0X3UzMl9mNjRfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF91MzJfZjY0X3opKSkKc3Z1aW50MzJfdCBzdmN2dF91MzJfZjY0X3ooc3Zib29sX3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfdTY0X2YxNl9tKSkpCnN2dWludDY0X3Qgc3ZjdnRfdTY0X2YxNl9tKHN2dWludDY0X3QsIHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X3U2NF9mMTZfeCkpKQpzdnVpbnQ2NF90IHN2Y3Z0X3U2NF9mMTZfeChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF91NjRfZjE2X3opKSkKc3Z1aW50NjRfdCBzdmN2dF91NjRfZjE2X3ooc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfdTY0X2YzMl9tKSkpCnN2dWludDY0X3Qgc3ZjdnRfdTY0X2YzMl9tKHN2dWludDY0X3QsIHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X3U2NF9mMzJfeCkpKQpzdnVpbnQ2NF90IHN2Y3Z0X3U2NF9mMzJfeChzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF91NjRfZjMyX3opKSkKc3Z1aW50NjRfdCBzdmN2dF91NjRfZjMyX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfdTY0X2Y2NF9tKSkpCnN2dWludDY0X3Qgc3ZjdnRfdTY0X2Y2NF9tKHN2dWludDY0X3QsIHN2Ym9vbF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X3U2NF9mNjRfeCkpKQpzdnVpbnQ2NF90IHN2Y3Z0X3U2NF9mNjRfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF91NjRfZjY0X3opKSkKc3Z1aW50NjRfdCBzdmN2dF91NjRfZjY0X3ooc3Zib29sX3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZfbl9mNjRfbSkpKQpzdmZsb2F0NjRfdCBzdmRpdl9uX2Y2NF9tKHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZfbl9mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdmRpdl9uX2YzMl9tKHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZfbl9mMTZfbSkpKQpzdmZsb2F0MTZfdCBzdmRpdl9uX2YxNl9tKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZfbl9mNjRfeCkpKQpzdmZsb2F0NjRfdCBzdmRpdl9uX2Y2NF94KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZfbl9mMzJfeCkpKQpzdmZsb2F0MzJfdCBzdmRpdl9uX2YzMl94KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZfbl9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdmRpdl9uX2YxNl94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZfbl9mNjRfeikpKQpzdmZsb2F0NjRfdCBzdmRpdl9uX2Y2NF96KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZfbl9mMzJfeikpKQpzdmZsb2F0MzJfdCBzdmRpdl9uX2YzMl96KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZfbl9mMTZfeikpKQpzdmZsb2F0MTZfdCBzdmRpdl9uX2YxNl96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZfbl9zMzJfbSkpKQpzdmludDMyX3Qgc3ZkaXZfbl9zMzJfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZfbl9zNjRfbSkpKQpzdmludDY0X3Qgc3ZkaXZfbl9zNjRfbShzdmJvb2xfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZfbl9zMzJfeCkpKQpzdmludDMyX3Qgc3ZkaXZfbl9zMzJfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZfbl9zNjRfeCkpKQpzdmludDY0X3Qgc3ZkaXZfbl9zNjRfeChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZfbl9zMzJfeikpKQpzdmludDMyX3Qgc3ZkaXZfbl9zMzJfeihzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZfbl9zNjRfeikpKQpzdmludDY0X3Qgc3ZkaXZfbl9zNjRfeihzdmJvb2xfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZfbl91MzJfbSkpKQpzdnVpbnQzMl90IHN2ZGl2X25fdTMyX20oc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZfbl91NjRfbSkpKQpzdnVpbnQ2NF90IHN2ZGl2X25fdTY0X20oc3Zib29sX3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZfbl91MzJfeCkpKQpzdnVpbnQzMl90IHN2ZGl2X25fdTMyX3goc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZfbl91NjRfeCkpKQpzdnVpbnQ2NF90IHN2ZGl2X25fdTY0X3goc3Zib29sX3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZfbl91MzJfeikpKQpzdnVpbnQzMl90IHN2ZGl2X25fdTMyX3ooc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZfbl91NjRfeikpKQpzdnVpbnQ2NF90IHN2ZGl2X25fdTY0X3ooc3Zib29sX3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZfZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZkaXZfZjY0X20oc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZGl2X2YzMl9tKSkpCnN2ZmxvYXQzMl90IHN2ZGl2X2YzMl9tKHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmRpdl9mMTZfbSkpKQpzdmZsb2F0MTZfdCBzdmRpdl9mMTZfbShzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZfZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZkaXZfZjY0X3goc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZGl2X2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2ZGl2X2YzMl94KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmRpdl9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdmRpdl9mMTZfeChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZfZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZkaXZfZjY0X3ooc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZGl2X2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2ZGl2X2YzMl96KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmRpdl9mMTZfeikpKQpzdmZsb2F0MTZfdCBzdmRpdl9mMTZfeihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZfczMyX20pKSkKc3ZpbnQzMl90IHN2ZGl2X3MzMl9tKHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZGl2X3M2NF9tKSkpCnN2aW50NjRfdCBzdmRpdl9zNjRfbShzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmRpdl9zMzJfeCkpKQpzdmludDMyX3Qgc3ZkaXZfczMyX3goc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZfczY0X3gpKSkKc3ZpbnQ2NF90IHN2ZGl2X3M2NF94KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZGl2X3MzMl96KSkpCnN2aW50MzJfdCBzdmRpdl9zMzJfeihzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmRpdl9zNjRfeikpKQpzdmludDY0X3Qgc3ZkaXZfczY0X3ooc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZfdTMyX20pKSkKc3Z1aW50MzJfdCBzdmRpdl91MzJfbShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZGl2X3U2NF9tKSkpCnN2dWludDY0X3Qgc3ZkaXZfdTY0X20oc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmRpdl91MzJfeCkpKQpzdnVpbnQzMl90IHN2ZGl2X3UzMl94KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZfdTY0X3gpKSkKc3Z1aW50NjRfdCBzdmRpdl91NjRfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZGl2X3UzMl96KSkpCnN2dWludDMyX3Qgc3ZkaXZfdTMyX3ooc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmRpdl91NjRfeikpKQpzdnVpbnQ2NF90IHN2ZGl2X3U2NF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX25fZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZkaXZyX25fZjY0X20oc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmRpdnJfbl9mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdmRpdnJfbl9mMzJfbShzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZGl2cl9uX2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2ZGl2cl9uX2YxNl9tKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX25fZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZkaXZyX25fZjY0X3goc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmRpdnJfbl9mMzJfeCkpKQpzdmZsb2F0MzJfdCBzdmRpdnJfbl9mMzJfeChzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZGl2cl9uX2YxNl94KSkpCnN2ZmxvYXQxNl90IHN2ZGl2cl9uX2YxNl94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX25fZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZkaXZyX25fZjY0X3ooc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmRpdnJfbl9mMzJfeikpKQpzdmZsb2F0MzJfdCBzdmRpdnJfbl9mMzJfeihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZGl2cl9uX2YxNl96KSkpCnN2ZmxvYXQxNl90IHN2ZGl2cl9uX2YxNl96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX25fczMyX20pKSkKc3ZpbnQzMl90IHN2ZGl2cl9uX3MzMl9tKHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmRpdnJfbl9zNjRfbSkpKQpzdmludDY0X3Qgc3ZkaXZyX25fczY0X20oc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZGl2cl9uX3MzMl94KSkpCnN2aW50MzJfdCBzdmRpdnJfbl9zMzJfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX25fczY0X3gpKSkKc3ZpbnQ2NF90IHN2ZGl2cl9uX3M2NF94KHN2Ym9vbF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmRpdnJfbl9zMzJfeikpKQpzdmludDMyX3Qgc3ZkaXZyX25fczMyX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZGl2cl9uX3M2NF96KSkpCnN2aW50NjRfdCBzdmRpdnJfbl9zNjRfeihzdmJvb2xfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX25fdTMyX20pKSkKc3Z1aW50MzJfdCBzdmRpdnJfbl91MzJfbShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmRpdnJfbl91NjRfbSkpKQpzdnVpbnQ2NF90IHN2ZGl2cl9uX3U2NF9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZGl2cl9uX3UzMl94KSkpCnN2dWludDMyX3Qgc3ZkaXZyX25fdTMyX3goc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX25fdTY0X3gpKSkKc3Z1aW50NjRfdCBzdmRpdnJfbl91NjRfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmRpdnJfbl91MzJfeikpKQpzdnVpbnQzMl90IHN2ZGl2cl9uX3UzMl96KHN2Ym9vbF90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZGl2cl9uX3U2NF96KSkpCnN2dWludDY0X3Qgc3ZkaXZyX25fdTY0X3ooc3Zib29sX3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX2Y2NF9tKSkpCnN2ZmxvYXQ2NF90IHN2ZGl2cl9mNjRfbShzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX2YzMl9tKSkpCnN2ZmxvYXQzMl90IHN2ZGl2cl9mMzJfbShzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2ZGl2cl9mMTZfbShzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX2Y2NF94KSkpCnN2ZmxvYXQ2NF90IHN2ZGl2cl9mNjRfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2ZGl2cl9mMzJfeChzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX2YxNl94KSkpCnN2ZmxvYXQxNl90IHN2ZGl2cl9mMTZfeChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX2Y2NF96KSkpCnN2ZmxvYXQ2NF90IHN2ZGl2cl9mNjRfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2ZGl2cl9mMzJfeihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX2YxNl96KSkpCnN2ZmxvYXQxNl90IHN2ZGl2cl9mMTZfeihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX3MzMl9tKSkpCnN2aW50MzJfdCBzdmRpdnJfczMyX20oc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX3M2NF9tKSkpCnN2aW50NjRfdCBzdmRpdnJfczY0X20oc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX3MzMl94KSkpCnN2aW50MzJfdCBzdmRpdnJfczMyX3goc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX3M2NF94KSkpCnN2aW50NjRfdCBzdmRpdnJfczY0X3goc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX3MzMl96KSkpCnN2aW50MzJfdCBzdmRpdnJfczMyX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX3M2NF96KSkpCnN2aW50NjRfdCBzdmRpdnJfczY0X3ooc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX3UzMl9tKSkpCnN2dWludDMyX3Qgc3ZkaXZyX3UzMl9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX3U2NF9tKSkpCnN2dWludDY0X3Qgc3ZkaXZyX3U2NF9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX3UzMl94KSkpCnN2dWludDMyX3Qgc3ZkaXZyX3UzMl94KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX3U2NF94KSkpCnN2dWludDY0X3Qgc3ZkaXZyX3U2NF94KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX3UzMl96KSkpCnN2dWludDMyX3Qgc3ZkaXZyX3UzMl96KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX3U2NF96KSkpCnN2dWludDY0X3Qgc3ZkaXZyX3U2NF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zkb3Rfbl9zMzIpKSkKc3ZpbnQzMl90IHN2ZG90X25fczMyKHN2aW50MzJfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZG90X25fczY0KSkpCnN2aW50NjRfdCBzdmRvdF9uX3M2NChzdmludDY0X3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZG90X25fdTMyKSkpCnN2dWludDMyX3Qgc3Zkb3Rfbl91MzIoc3Z1aW50MzJfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zkb3Rfbl91NjQpKSkKc3Z1aW50NjRfdCBzdmRvdF9uX3U2NChzdnVpbnQ2NF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZG90X3MzMikpKQpzdmludDMyX3Qgc3Zkb3RfczMyKHN2aW50MzJfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zkb3RfczY0KSkpCnN2aW50NjRfdCBzdmRvdF9zNjQoc3ZpbnQ2NF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZG90X3UzMikpKQpzdnVpbnQzMl90IHN2ZG90X3UzMihzdnVpbnQzMl90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZG90X3U2NCkpKQpzdnVpbnQ2NF90IHN2ZG90X3U2NChzdnVpbnQ2NF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zkb3RfbGFuZV9zMzIpKSkKc3ZpbnQzMl90IHN2ZG90X2xhbmVfczMyKHN2aW50MzJfdCwgc3ZpbnQ4X3QsIHN2aW50OF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZG90X2xhbmVfczY0KSkpCnN2aW50NjRfdCBzdmRvdF9sYW5lX3M2NChzdmludDY0X3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZG90X2xhbmVfdTMyKSkpCnN2dWludDMyX3Qgc3Zkb3RfbGFuZV91MzIoc3Z1aW50MzJfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zkb3RfbGFuZV91NjQpKSkKc3Z1aW50NjRfdCBzdmRvdF9sYW5lX3U2NChzdnVpbnQ2NF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwX25fdTgpKSkKc3Z1aW50OF90IHN2ZHVwX25fdTgodWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwX25fdTMyKSkpCnN2dWludDMyX3Qgc3ZkdXBfbl91MzIodWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9uX3U2NCkpKQpzdnVpbnQ2NF90IHN2ZHVwX25fdTY0KHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBfbl91MTYpKSkKc3Z1aW50MTZfdCBzdmR1cF9uX3UxNih1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwX25fczgpKSkKc3ZpbnQ4X3Qgc3ZkdXBfbl9zOChpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9uX2Y2NCkpKQpzdmZsb2F0NjRfdCBzdmR1cF9uX2Y2NChmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9uX2YzMikpKQpzdmZsb2F0MzJfdCBzdmR1cF9uX2YzMihmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9uX2YxNikpKQpzdmZsb2F0MTZfdCBzdmR1cF9uX2YxNihmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9uX3MzMikpKQpzdmludDMyX3Qgc3ZkdXBfbl9zMzIoaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwX25fczY0KSkpCnN2aW50NjRfdCBzdmR1cF9uX3M2NChpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBfbl9zMTYpKSkKc3ZpbnQxNl90IHN2ZHVwX25fczE2KGludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9uX3U4X20pKSkKc3Z1aW50OF90IHN2ZHVwX25fdThfbShzdnVpbnQ4X3QsIHN2Ym9vbF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBfbl91MzJfbSkpKQpzdnVpbnQzMl90IHN2ZHVwX25fdTMyX20oc3Z1aW50MzJfdCwgc3Zib29sX3QsIHVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBfbl91NjRfbSkpKQpzdnVpbnQ2NF90IHN2ZHVwX25fdTY0X20oc3Z1aW50NjRfdCwgc3Zib29sX3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBfbl91MTZfbSkpKQpzdnVpbnQxNl90IHN2ZHVwX25fdTE2X20oc3Z1aW50MTZfdCwgc3Zib29sX3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBfbl9zOF9tKSkpCnN2aW50OF90IHN2ZHVwX25fczhfbShzdmludDhfdCwgc3Zib29sX3QsIGludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwX25fZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZkdXBfbl9mNjRfbShzdmZsb2F0NjRfdCwgc3Zib29sX3QsIGZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwX25fZjMyX20pKSkKc3ZmbG9hdDMyX3Qgc3ZkdXBfbl9mMzJfbShzdmZsb2F0MzJfdCwgc3Zib29sX3QsIGZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwX25fZjE2X20pKSkKc3ZmbG9hdDE2X3Qgc3ZkdXBfbl9mMTZfbShzdmZsb2F0MTZfdCwgc3Zib29sX3QsIGZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwX25fczMyX20pKSkKc3ZpbnQzMl90IHN2ZHVwX25fczMyX20oc3ZpbnQzMl90LCBzdmJvb2xfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwX25fczY0X20pKSkKc3ZpbnQ2NF90IHN2ZHVwX25fczY0X20oc3ZpbnQ2NF90LCBzdmJvb2xfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwX25fczE2X20pKSkKc3ZpbnQxNl90IHN2ZHVwX25fczE2X20oc3ZpbnQxNl90LCBzdmJvb2xfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwX25fYjgpKSkKc3Zib29sX3Qgc3ZkdXBfbl9iOChib29sKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBfbl9iMzIpKSkKc3Zib29sX3Qgc3ZkdXBfbl9iMzIoYm9vbCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwX25fYjY0KSkpCnN2Ym9vbF90IHN2ZHVwX25fYjY0KGJvb2wpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9uX2IxNikpKQpzdmJvb2xfdCBzdmR1cF9uX2IxNihib29sKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBfbl91OF94KSkpCnN2dWludDhfdCBzdmR1cF9uX3U4X3goc3Zib29sX3QsIHVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9uX3UzMl94KSkpCnN2dWludDMyX3Qgc3ZkdXBfbl91MzJfeChzdmJvb2xfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9uX3U2NF94KSkpCnN2dWludDY0X3Qgc3ZkdXBfbl91NjRfeChzdmJvb2xfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9uX3UxNl94KSkpCnN2dWludDE2X3Qgc3ZkdXBfbl91MTZfeChzdmJvb2xfdCwgdWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9uX3M4X3gpKSkKc3ZpbnQ4X3Qgc3ZkdXBfbl9zOF94KHN2Ym9vbF90LCBpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9uX2Y2NF94KSkpCnN2ZmxvYXQ2NF90IHN2ZHVwX25fZjY0X3goc3Zib29sX3QsIGZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwX25fZjMyX3gpKSkKc3ZmbG9hdDMyX3Qgc3ZkdXBfbl9mMzJfeChzdmJvb2xfdCwgZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBfbl9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdmR1cF9uX2YxNl94KHN2Ym9vbF90LCBmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9uX3MzMl94KSkpCnN2aW50MzJfdCBzdmR1cF9uX3MzMl94KHN2Ym9vbF90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBfbl9zNjRfeCkpKQpzdmludDY0X3Qgc3ZkdXBfbl9zNjRfeChzdmJvb2xfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwX25fczE2X3gpKSkKc3ZpbnQxNl90IHN2ZHVwX25fczE2X3goc3Zib29sX3QsIGludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9uX3U4X3opKSkKc3Z1aW50OF90IHN2ZHVwX25fdThfeihzdmJvb2xfdCwgdWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwX25fdTMyX3opKSkKc3Z1aW50MzJfdCBzdmR1cF9uX3UzMl96KHN2Ym9vbF90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwX25fdTY0X3opKSkKc3Z1aW50NjRfdCBzdmR1cF9uX3U2NF96KHN2Ym9vbF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwX25fdTE2X3opKSkKc3Z1aW50MTZfdCBzdmR1cF9uX3UxNl96KHN2Ym9vbF90LCB1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwX25fczhfeikpKQpzdmludDhfdCBzdmR1cF9uX3M4X3ooc3Zib29sX3QsIGludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwX25fZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZkdXBfbl9mNjRfeihzdmJvb2xfdCwgZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBfbl9mMzJfeikpKQpzdmZsb2F0MzJfdCBzdmR1cF9uX2YzMl96KHN2Ym9vbF90LCBmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9uX2YxNl96KSkpCnN2ZmxvYXQxNl90IHN2ZHVwX25fZjE2X3ooc3Zib29sX3QsIGZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwX25fczMyX3opKSkKc3ZpbnQzMl90IHN2ZHVwX25fczMyX3ooc3Zib29sX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9uX3M2NF96KSkpCnN2aW50NjRfdCBzdmR1cF9uX3M2NF96KHN2Ym9vbF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBfbl9zMTZfeikpKQpzdmludDE2X3Qgc3ZkdXBfbl9zMTZfeihzdmJvb2xfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwX2xhbmVfdTgpKSkKc3Z1aW50OF90IHN2ZHVwX2xhbmVfdTgoc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBfbGFuZV91MzIpKSkKc3Z1aW50MzJfdCBzdmR1cF9sYW5lX3UzMihzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwX2xhbmVfdTY0KSkpCnN2dWludDY0X3Qgc3ZkdXBfbGFuZV91NjQoc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9sYW5lX3UxNikpKQpzdnVpbnQxNl90IHN2ZHVwX2xhbmVfdTE2KHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBfbGFuZV9zOCkpKQpzdmludDhfdCBzdmR1cF9sYW5lX3M4KHN2aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBfbGFuZV9mNjQpKSkKc3ZmbG9hdDY0X3Qgc3ZkdXBfbGFuZV9mNjQoc3ZmbG9hdDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBfbGFuZV9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3ZkdXBfbGFuZV9mMzIoc3ZmbG9hdDMyX3QsIHVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBfbGFuZV9mMTYpKSkKc3ZmbG9hdDE2X3Qgc3ZkdXBfbGFuZV9mMTYoc3ZmbG9hdDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBfbGFuZV9zMzIpKSkKc3ZpbnQzMl90IHN2ZHVwX2xhbmVfczMyKHN2aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9sYW5lX3M2NCkpKQpzdmludDY0X3Qgc3ZkdXBfbGFuZV9zNjQoc3ZpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwX2xhbmVfczE2KSkpCnN2aW50MTZfdCBzdmR1cF9sYW5lX3MxNihzdmludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBxX25fdTE2KSkpCnN2dWludDE2X3Qgc3ZkdXBxX25fdTE2KHVpbnQxNl90LCB1aW50MTZfdCwgdWludDE2X3QsIHVpbnQxNl90LCB1aW50MTZfdCwgdWludDE2X3QsIHVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwcV9uX2YxNikpKQpzdmZsb2F0MTZfdCBzdmR1cHFfbl9mMTYoZmxvYXQxNl90LCBmbG9hdDE2X3QsIGZsb2F0MTZfdCwgZmxvYXQxNl90LCBmbG9hdDE2X3QsIGZsb2F0MTZfdCwgZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cHFfbl9zMTYpKSkKc3ZpbnQxNl90IHN2ZHVwcV9uX3MxNihpbnQxNl90LCBpbnQxNl90LCBpbnQxNl90LCBpbnQxNl90LCBpbnQxNl90LCBpbnQxNl90LCBpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBxX25fdTMyKSkpCnN2dWludDMyX3Qgc3ZkdXBxX25fdTMyKHVpbnQzMl90LCB1aW50MzJfdCwgdWludDMyX3QsIHVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBxX25fZjMyKSkpCnN2ZmxvYXQzMl90IHN2ZHVwcV9uX2YzMihmbG9hdDMyX3QsIGZsb2F0MzJfdCwgZmxvYXQzMl90LCBmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cHFfbl9zMzIpKSkKc3ZpbnQzMl90IHN2ZHVwcV9uX3MzMihpbnQzMl90LCBpbnQzMl90LCBpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBxX25fdTY0KSkpCnN2dWludDY0X3Qgc3ZkdXBxX25fdTY0KHVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwcV9uX2Y2NCkpKQpzdmZsb2F0NjRfdCBzdmR1cHFfbl9mNjQoZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cHFfbl9zNjQpKSkKc3ZpbnQ2NF90IHN2ZHVwcV9uX3M2NChpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBxX25fdTgpKSkKc3Z1aW50OF90IHN2ZHVwcV9uX3U4KHVpbnQ4X3QsIHVpbnQ4X3QsIHVpbnQ4X3QsIHVpbnQ4X3QsIHVpbnQ4X3QsIHVpbnQ4X3QsIHVpbnQ4X3QsIHVpbnQ4X3QsIHVpbnQ4X3QsIHVpbnQ4X3QsIHVpbnQ4X3QsIHVpbnQ4X3QsIHVpbnQ4X3QsIHVpbnQ4X3QsIHVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cHFfbl9zOCkpKQpzdmludDhfdCBzdmR1cHFfbl9zOChpbnQ4X3QsIGludDhfdCwgaW50OF90LCBpbnQ4X3QsIGludDhfdCwgaW50OF90LCBpbnQ4X3QsIGludDhfdCwgaW50OF90LCBpbnQ4X3QsIGludDhfdCwgaW50OF90LCBpbnQ4X3QsIGludDhfdCwgaW50OF90LCBpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cHFfbl9iMTYpKSkKc3Zib29sX3Qgc3ZkdXBxX25fYjE2KGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cHFfbl9iMzIpKSkKc3Zib29sX3Qgc3ZkdXBxX25fYjMyKGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cHFfbl9iNjQpKSkKc3Zib29sX3Qgc3ZkdXBxX25fYjY0KGJvb2wsIGJvb2wpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cHFfbl9iOCkpKQpzdmJvb2xfdCBzdmR1cHFfbl9iOChib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBxX2xhbmVfdTgpKSkKc3Z1aW50OF90IHN2ZHVwcV9sYW5lX3U4KHN2dWludDhfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cHFfbGFuZV91MzIpKSkKc3Z1aW50MzJfdCBzdmR1cHFfbGFuZV91MzIoc3Z1aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cHFfbGFuZV91NjQpKSkKc3Z1aW50NjRfdCBzdmR1cHFfbGFuZV91NjQoc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cHFfbGFuZV91MTYpKSkKc3Z1aW50MTZfdCBzdmR1cHFfbGFuZV91MTYoc3Z1aW50MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cHFfbGFuZV9zOCkpKQpzdmludDhfdCBzdmR1cHFfbGFuZV9zOChzdmludDhfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cHFfbGFuZV9mNjQpKSkKc3ZmbG9hdDY0X3Qgc3ZkdXBxX2xhbmVfZjY0KHN2ZmxvYXQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwcV9sYW5lX2YzMikpKQpzdmZsb2F0MzJfdCBzdmR1cHFfbGFuZV9mMzIoc3ZmbG9hdDMyX3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBxX2xhbmVfZjE2KSkpCnN2ZmxvYXQxNl90IHN2ZHVwcV9sYW5lX2YxNihzdmZsb2F0MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cHFfbGFuZV9zMzIpKSkKc3ZpbnQzMl90IHN2ZHVwcV9sYW5lX3MzMihzdmludDMyX3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBxX2xhbmVfczY0KSkpCnN2aW50NjRfdCBzdmR1cHFfbGFuZV9zNjQoc3ZpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwcV9sYW5lX3MxNikpKQpzdmludDE2X3Qgc3ZkdXBxX2xhbmVfczE2KHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcl9iX3opKSkKc3Zib29sX3Qgc3Zlb3JfYl96KHN2Ym9vbF90LCBzdmJvb2xfdCwgc3Zib29sX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcl9uX3U4X20pKSkKc3Z1aW50OF90IHN2ZW9yX25fdThfbShzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3Jfbl91MzJfbSkpKQpzdnVpbnQzMl90IHN2ZW9yX25fdTMyX20oc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3Jfbl91NjRfbSkpKQpzdnVpbnQ2NF90IHN2ZW9yX25fdTY0X20oc3Zib29sX3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3Jfbl91MTZfbSkpKQpzdnVpbnQxNl90IHN2ZW9yX25fdTE2X20oc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3Jfbl9zOF9tKSkpCnN2aW50OF90IHN2ZW9yX25fczhfbShzdmJvb2xfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9yX25fczMyX20pKSkKc3ZpbnQzMl90IHN2ZW9yX25fczMyX20oc3Zib29sX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9yX25fczY0X20pKSkKc3ZpbnQ2NF90IHN2ZW9yX25fczY0X20oc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9yX25fczE2X20pKSkKc3ZpbnQxNl90IHN2ZW9yX25fczE2X20oc3Zib29sX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9yX25fdThfeCkpKQpzdnVpbnQ4X3Qgc3Zlb3Jfbl91OF94KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcl9uX3UzMl94KSkpCnN2dWludDMyX3Qgc3Zlb3Jfbl91MzJfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcl9uX3U2NF94KSkpCnN2dWludDY0X3Qgc3Zlb3Jfbl91NjRfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcl9uX3UxNl94KSkpCnN2dWludDE2X3Qgc3Zlb3Jfbl91MTZfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcl9uX3M4X3gpKSkKc3ZpbnQ4X3Qgc3Zlb3Jfbl9zOF94KHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3Jfbl9zMzJfeCkpKQpzdmludDMyX3Qgc3Zlb3Jfbl9zMzJfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3Jfbl9zNjRfeCkpKQpzdmludDY0X3Qgc3Zlb3Jfbl9zNjRfeChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3Jfbl9zMTZfeCkpKQpzdmludDE2X3Qgc3Zlb3Jfbl9zMTZfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3Jfbl91OF96KSkpCnN2dWludDhfdCBzdmVvcl9uX3U4X3ooc3Zib29sX3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9yX25fdTMyX3opKSkKc3Z1aW50MzJfdCBzdmVvcl9uX3UzMl96KHN2Ym9vbF90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9yX25fdTY0X3opKSkKc3Z1aW50NjRfdCBzdmVvcl9uX3U2NF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9yX25fdTE2X3opKSkKc3Z1aW50MTZfdCBzdmVvcl9uX3UxNl96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9yX25fczhfeikpKQpzdmludDhfdCBzdmVvcl9uX3M4X3ooc3Zib29sX3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcl9uX3MzMl96KSkpCnN2aW50MzJfdCBzdmVvcl9uX3MzMl96KHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcl9uX3M2NF96KSkpCnN2aW50NjRfdCBzdmVvcl9uX3M2NF96KHN2Ym9vbF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcl9uX3MxNl96KSkpCnN2aW50MTZfdCBzdmVvcl9uX3MxNl96KHN2Ym9vbF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcl91OF9tKSkpCnN2dWludDhfdCBzdmVvcl91OF9tKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9yX3UzMl9tKSkpCnN2dWludDMyX3Qgc3Zlb3JfdTMyX20oc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcl91NjRfbSkpKQpzdnVpbnQ2NF90IHN2ZW9yX3U2NF9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3JfdTE2X20pKSkKc3Z1aW50MTZfdCBzdmVvcl91MTZfbShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9yX3M4X20pKSkKc3ZpbnQ4X3Qgc3Zlb3JfczhfbShzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3JfczMyX20pKSkKc3ZpbnQzMl90IHN2ZW9yX3MzMl9tKHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9yX3M2NF9tKSkpCnN2aW50NjRfdCBzdmVvcl9zNjRfbShzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcl9zMTZfbSkpKQpzdmludDE2X3Qgc3Zlb3JfczE2X20oc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3JfdThfeCkpKQpzdnVpbnQ4X3Qgc3Zlb3JfdThfeChzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcl91MzJfeCkpKQpzdnVpbnQzMl90IHN2ZW9yX3UzMl94KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3JfdTY0X3gpKSkKc3Z1aW50NjRfdCBzdmVvcl91NjRfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9yX3UxNl94KSkpCnN2dWludDE2X3Qgc3Zlb3JfdTE2X3goc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcl9zOF94KSkpCnN2aW50OF90IHN2ZW9yX3M4X3goc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9yX3MzMl94KSkpCnN2aW50MzJfdCBzdmVvcl9zMzJfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcl9zNjRfeCkpKQpzdmludDY0X3Qgc3Zlb3JfczY0X3goc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3JfczE2X3gpKSkKc3ZpbnQxNl90IHN2ZW9yX3MxNl94KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9yX3U4X3opKSkKc3Z1aW50OF90IHN2ZW9yX3U4X3ooc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3JfdTMyX3opKSkKc3Z1aW50MzJfdCBzdmVvcl91MzJfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9yX3U2NF96KSkpCnN2dWludDY0X3Qgc3Zlb3JfdTY0X3ooc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcl91MTZfeikpKQpzdnVpbnQxNl90IHN2ZW9yX3UxNl96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3JfczhfeikpKQpzdmludDhfdCBzdmVvcl9zOF96KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcl9zMzJfeikpKQpzdmludDMyX3Qgc3Zlb3JfczMyX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3JfczY0X3opKSkKc3ZpbnQ2NF90IHN2ZW9yX3M2NF96KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9yX3MxNl96KSkpCnN2aW50MTZfdCBzdmVvcl9zMTZfeihzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcnZfdTgpKSkKdWludDhfdCBzdmVvcnZfdTgoc3Zib29sX3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9ydl91MzIpKSkKdWludDMyX3Qgc3Zlb3J2X3UzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9ydl91NjQpKSkKdWludDY0X3Qgc3Zlb3J2X3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9ydl91MTYpKSkKdWludDE2X3Qgc3Zlb3J2X3UxNihzdmJvb2xfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9ydl9zOCkpKQppbnQ4X3Qgc3Zlb3J2X3M4KHN2Ym9vbF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9ydl9zMzIpKSkKaW50MzJfdCBzdmVvcnZfczMyKHN2Ym9vbF90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcnZfczY0KSkpCmludDY0X3Qgc3Zlb3J2X3M2NChzdmJvb2xfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3J2X3MxNikpKQppbnQxNl90IHN2ZW9ydl9zMTYoc3Zib29sX3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZXhwYV9mNjQpKSkKc3ZmbG9hdDY0X3Qgc3ZleHBhX2Y2NChzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZleHBhX2YzMikpKQpzdmZsb2F0MzJfdCBzdmV4cGFfZjMyKHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmV4cGFfZjE2KSkpCnN2ZmxvYXQxNl90IHN2ZXhwYV9mMTYoc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZXh0X3U4KSkpCnN2dWludDhfdCBzdmV4dF91OChzdnVpbnQ4X3QsIHN2dWludDhfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmV4dF91MzIpKSkKc3Z1aW50MzJfdCBzdmV4dF91MzIoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmV4dF91NjQpKSkKc3Z1aW50NjRfdCBzdmV4dF91NjQoc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmV4dF91MTYpKSkKc3Z1aW50MTZfdCBzdmV4dF91MTYoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmV4dF9zOCkpKQpzdmludDhfdCBzdmV4dF9zOChzdmludDhfdCwgc3ZpbnQ4X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZleHRfZjY0KSkpCnN2ZmxvYXQ2NF90IHN2ZXh0X2Y2NChzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZleHRfZjMyKSkpCnN2ZmxvYXQzMl90IHN2ZXh0X2YzMihzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZleHRfZjE2KSkpCnN2ZmxvYXQxNl90IHN2ZXh0X2YxNihzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZleHRfczMyKSkpCnN2aW50MzJfdCBzdmV4dF9zMzIoc3ZpbnQzMl90LCBzdmludDMyX3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZleHRfczY0KSkpCnN2aW50NjRfdCBzdmV4dF9zNjQoc3ZpbnQ2NF90LCBzdmludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZleHRfczE2KSkpCnN2aW50MTZfdCBzdmV4dF9zMTYoc3ZpbnQxNl90LCBzdmludDE2X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZleHRiX3MzMl9tKSkpCnN2aW50MzJfdCBzdmV4dGJfczMyX20oc3ZpbnQzMl90LCBzdmJvb2xfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZleHRiX3M2NF9tKSkpCnN2aW50NjRfdCBzdmV4dGJfczY0X20oc3ZpbnQ2NF90LCBzdmJvb2xfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZleHRiX3MxNl9tKSkpCnN2aW50MTZfdCBzdmV4dGJfczE2X20oc3ZpbnQxNl90LCBzdmJvb2xfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZleHRiX3MzMl94KSkpCnN2aW50MzJfdCBzdmV4dGJfczMyX3goc3Zib29sX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZXh0Yl9zNjRfeCkpKQpzdmludDY0X3Qgc3ZleHRiX3M2NF94KHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmV4dGJfczE2X3gpKSkKc3ZpbnQxNl90IHN2ZXh0Yl9zMTZfeChzdmJvb2xfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZleHRiX3MzMl96KSkpCnN2aW50MzJfdCBzdmV4dGJfczMyX3ooc3Zib29sX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZXh0Yl9zNjRfeikpKQpzdmludDY0X3Qgc3ZleHRiX3M2NF96KHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmV4dGJfczE2X3opKSkKc3ZpbnQxNl90IHN2ZXh0Yl9zMTZfeihzdmJvb2xfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZleHRiX3UzMl9tKSkpCnN2dWludDMyX3Qgc3ZleHRiX3UzMl9tKHN2dWludDMyX3QsIHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZleHRiX3U2NF9tKSkpCnN2dWludDY0X3Qgc3ZleHRiX3U2NF9tKHN2dWludDY0X3QsIHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZleHRiX3UxNl9tKSkpCnN2dWludDE2X3Qgc3ZleHRiX3UxNl9tKHN2dWludDE2X3QsIHN2Ym9vbF90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZleHRiX3UzMl94KSkpCnN2dWludDMyX3Qgc3ZleHRiX3UzMl94KHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZleHRiX3U2NF94KSkpCnN2dWludDY0X3Qgc3ZleHRiX3U2NF94KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZleHRiX3UxNl94KSkpCnN2dWludDE2X3Qgc3ZleHRiX3UxNl94KHN2Ym9vbF90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZleHRiX3UzMl96KSkpCnN2dWludDMyX3Qgc3ZleHRiX3UzMl96KHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZleHRiX3U2NF96KSkpCnN2dWludDY0X3Qgc3ZleHRiX3U2NF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZleHRiX3UxNl96KSkpCnN2dWludDE2X3Qgc3ZleHRiX3UxNl96KHN2Ym9vbF90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZleHRoX3MzMl9tKSkpCnN2aW50MzJfdCBzdmV4dGhfczMyX20oc3ZpbnQzMl90LCBzdmJvb2xfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZleHRoX3M2NF9tKSkpCnN2aW50NjRfdCBzdmV4dGhfczY0X20oc3ZpbnQ2NF90LCBzdmJvb2xfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZleHRoX3MzMl94KSkpCnN2aW50MzJfdCBzdmV4dGhfczMyX3goc3Zib29sX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZXh0aF9zNjRfeCkpKQpzdmludDY0X3Qgc3ZleHRoX3M2NF94KHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmV4dGhfczMyX3opKSkKc3ZpbnQzMl90IHN2ZXh0aF9zMzJfeihzdmJvb2xfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZleHRoX3M2NF96KSkpCnN2aW50NjRfdCBzdmV4dGhfczY0X3ooc3Zib29sX3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZXh0aF91MzJfbSkpKQpzdnVpbnQzMl90IHN2ZXh0aF91MzJfbShzdnVpbnQzMl90LCBzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZXh0aF91NjRfbSkpKQpzdnVpbnQ2NF90IHN2ZXh0aF91NjRfbShzdnVpbnQ2NF90LCBzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZXh0aF91MzJfeCkpKQpzdnVpbnQzMl90IHN2ZXh0aF91MzJfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZXh0aF91NjRfeCkpKQpzdnVpbnQ2NF90IHN2ZXh0aF91NjRfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZXh0aF91MzJfeikpKQpzdnVpbnQzMl90IHN2ZXh0aF91MzJfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZXh0aF91NjRfeikpKQpzdnVpbnQ2NF90IHN2ZXh0aF91NjRfeihzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZXh0d19zNjRfbSkpKQpzdmludDY0X3Qgc3ZleHR3X3M2NF9tKHN2aW50NjRfdCwgc3Zib29sX3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZXh0d19zNjRfeCkpKQpzdmludDY0X3Qgc3ZleHR3X3M2NF94KHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmV4dHdfczY0X3opKSkKc3ZpbnQ2NF90IHN2ZXh0d19zNjRfeihzdmJvb2xfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZleHR3X3U2NF9tKSkpCnN2dWludDY0X3Qgc3ZleHR3X3U2NF9tKHN2dWludDY0X3QsIHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZleHR3X3U2NF94KSkpCnN2dWludDY0X3Qgc3ZleHR3X3U2NF94KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZleHR3X3U2NF96KSkpCnN2dWludDY0X3Qgc3ZleHR3X3U2NF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZnZXQyX3U4KSkpCnN2dWludDhfdCBzdmdldDJfdTgoc3Z1aW50OHgyX3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZnZXQyX3UzMikpKQpzdnVpbnQzMl90IHN2Z2V0Ml91MzIoc3Z1aW50MzJ4Ml90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Z2V0Ml91NjQpKSkKc3Z1aW50NjRfdCBzdmdldDJfdTY0KHN2dWludDY0eDJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmdldDJfdTE2KSkpCnN2dWludDE2X3Qgc3ZnZXQyX3UxNihzdnVpbnQxNngyX3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZnZXQyX3M4KSkpCnN2aW50OF90IHN2Z2V0Ml9zOChzdmludDh4Ml90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Z2V0Ml9mNjQpKSkKc3ZmbG9hdDY0X3Qgc3ZnZXQyX2Y2NChzdmZsb2F0NjR4Ml90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Z2V0Ml9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3ZnZXQyX2YzMihzdmZsb2F0MzJ4Ml90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Z2V0Ml9mMTYpKSkKc3ZmbG9hdDE2X3Qgc3ZnZXQyX2YxNihzdmZsb2F0MTZ4Ml90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Z2V0Ml9zMzIpKSkKc3ZpbnQzMl90IHN2Z2V0Ml9zMzIoc3ZpbnQzMngyX3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZnZXQyX3M2NCkpKQpzdmludDY0X3Qgc3ZnZXQyX3M2NChzdmludDY0eDJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmdldDJfczE2KSkpCnN2aW50MTZfdCBzdmdldDJfczE2KHN2aW50MTZ4Ml90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Z2V0M191OCkpKQpzdnVpbnQ4X3Qgc3ZnZXQzX3U4KHN2dWludDh4M190LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Z2V0M191MzIpKSkKc3Z1aW50MzJfdCBzdmdldDNfdTMyKHN2dWludDMyeDNfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmdldDNfdTY0KSkpCnN2dWludDY0X3Qgc3ZnZXQzX3U2NChzdnVpbnQ2NHgzX3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZnZXQzX3UxNikpKQpzdnVpbnQxNl90IHN2Z2V0M191MTYoc3Z1aW50MTZ4M190LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Z2V0M19zOCkpKQpzdmludDhfdCBzdmdldDNfczgoc3ZpbnQ4eDNfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmdldDNfZjY0KSkpCnN2ZmxvYXQ2NF90IHN2Z2V0M19mNjQoc3ZmbG9hdDY0eDNfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmdldDNfZjMyKSkpCnN2ZmxvYXQzMl90IHN2Z2V0M19mMzIoc3ZmbG9hdDMyeDNfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmdldDNfZjE2KSkpCnN2ZmxvYXQxNl90IHN2Z2V0M19mMTYoc3ZmbG9hdDE2eDNfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmdldDNfczMyKSkpCnN2aW50MzJfdCBzdmdldDNfczMyKHN2aW50MzJ4M190LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Z2V0M19zNjQpKSkKc3ZpbnQ2NF90IHN2Z2V0M19zNjQoc3ZpbnQ2NHgzX3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZnZXQzX3MxNikpKQpzdmludDE2X3Qgc3ZnZXQzX3MxNihzdmludDE2eDNfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmdldDRfdTgpKSkKc3Z1aW50OF90IHN2Z2V0NF91OChzdnVpbnQ4eDRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmdldDRfdTMyKSkpCnN2dWludDMyX3Qgc3ZnZXQ0X3UzMihzdnVpbnQzMng0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZnZXQ0X3U2NCkpKQpzdnVpbnQ2NF90IHN2Z2V0NF91NjQoc3Z1aW50NjR4NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Z2V0NF91MTYpKSkKc3Z1aW50MTZfdCBzdmdldDRfdTE2KHN2dWludDE2eDRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmdldDRfczgpKSkKc3ZpbnQ4X3Qgc3ZnZXQ0X3M4KHN2aW50OHg0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZnZXQ0X2Y2NCkpKQpzdmZsb2F0NjRfdCBzdmdldDRfZjY0KHN2ZmxvYXQ2NHg0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZnZXQ0X2YzMikpKQpzdmZsb2F0MzJfdCBzdmdldDRfZjMyKHN2ZmxvYXQzMng0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZnZXQ0X2YxNikpKQpzdmZsb2F0MTZfdCBzdmdldDRfZjE2KHN2ZmxvYXQxNng0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZnZXQ0X3MzMikpKQpzdmludDMyX3Qgc3ZnZXQ0X3MzMihzdmludDMyeDRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmdldDRfczY0KSkpCnN2aW50NjRfdCBzdmdldDRfczY0KHN2aW50NjR4NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Z2V0NF9zMTYpKSkKc3ZpbnQxNl90IHN2Z2V0NF9zMTYoc3ZpbnQxNng0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZpbmRleF91OCkpKQpzdnVpbnQ4X3Qgc3ZpbmRleF91OCh1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZpbmRleF91MzIpKSkKc3Z1aW50MzJfdCBzdmluZGV4X3UzMih1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmluZGV4X3U2NCkpKQpzdnVpbnQ2NF90IHN2aW5kZXhfdTY0KHVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aW5kZXhfdTE2KSkpCnN2dWludDE2X3Qgc3ZpbmRleF91MTYodWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZpbmRleF9zOCkpKQpzdmludDhfdCBzdmluZGV4X3M4KGludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZpbmRleF9zMzIpKSkKc3ZpbnQzMl90IHN2aW5kZXhfczMyKGludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmluZGV4X3M2NCkpKQpzdmludDY0X3Qgc3ZpbmRleF9zNjQoaW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aW5kZXhfczE2KSkpCnN2aW50MTZfdCBzdmluZGV4X3MxNihpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZpbnNyX25fdTgpKSkKc3Z1aW50OF90IHN2aW5zcl9uX3U4KHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aW5zcl9uX3UzMikpKQpzdnVpbnQzMl90IHN2aW5zcl9uX3UzMihzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aW5zcl9uX3U2NCkpKQpzdnVpbnQ2NF90IHN2aW5zcl9uX3U2NChzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aW5zcl9uX3UxNikpKQpzdnVpbnQxNl90IHN2aW5zcl9uX3UxNihzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aW5zcl9uX3M4KSkpCnN2aW50OF90IHN2aW5zcl9uX3M4KHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmluc3Jfbl9mNjQpKSkKc3ZmbG9hdDY0X3Qgc3ZpbnNyX25fZjY0KHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmluc3Jfbl9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3ZpbnNyX25fZjMyKHN2ZmxvYXQzMl90LCBmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmluc3Jfbl9mMTYpKSkKc3ZmbG9hdDE2X3Qgc3ZpbnNyX25fZjE2KHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmluc3Jfbl9zMzIpKSkKc3ZpbnQzMl90IHN2aW5zcl9uX3MzMihzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmluc3Jfbl9zNjQpKSkKc3ZpbnQ2NF90IHN2aW5zcl9uX3M2NChzdmludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmluc3Jfbl9zMTYpKSkKc3ZpbnQxNl90IHN2aW5zcl9uX3MxNihzdmludDE2X3QsIGludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxhc3RhX3U4KSkpCnVpbnQ4X3Qgc3ZsYXN0YV91OChzdmJvb2xfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsYXN0YV91MzIpKSkKdWludDMyX3Qgc3ZsYXN0YV91MzIoc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxhc3RhX3U2NCkpKQp1aW50NjRfdCBzdmxhc3RhX3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGFzdGFfdTE2KSkpCnVpbnQxNl90IHN2bGFzdGFfdTE2KHN2Ym9vbF90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsYXN0YV9zOCkpKQppbnQ4X3Qgc3ZsYXN0YV9zOChzdmJvb2xfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxhc3RhX2Y2NCkpKQpmbG9hdDY0X3Qgc3ZsYXN0YV9mNjQoc3Zib29sX3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsYXN0YV9mMzIpKSkKZmxvYXQzMl90IHN2bGFzdGFfZjMyKHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGFzdGFfZjE2KSkpCmZsb2F0MTZfdCBzdmxhc3RhX2YxNihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxhc3RhX3MzMikpKQppbnQzMl90IHN2bGFzdGFfczMyKHN2Ym9vbF90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxhc3RhX3M2NCkpKQppbnQ2NF90IHN2bGFzdGFfczY0KHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxhc3RhX3MxNikpKQppbnQxNl90IHN2bGFzdGFfczE2KHN2Ym9vbF90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxhc3RiX3U4KSkpCnVpbnQ4X3Qgc3ZsYXN0Yl91OChzdmJvb2xfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsYXN0Yl91MzIpKSkKdWludDMyX3Qgc3ZsYXN0Yl91MzIoc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxhc3RiX3U2NCkpKQp1aW50NjRfdCBzdmxhc3RiX3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGFzdGJfdTE2KSkpCnVpbnQxNl90IHN2bGFzdGJfdTE2KHN2Ym9vbF90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsYXN0Yl9zOCkpKQppbnQ4X3Qgc3ZsYXN0Yl9zOChzdmJvb2xfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxhc3RiX2Y2NCkpKQpmbG9hdDY0X3Qgc3ZsYXN0Yl9mNjQoc3Zib29sX3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsYXN0Yl9mMzIpKSkKZmxvYXQzMl90IHN2bGFzdGJfZjMyKHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGFzdGJfZjE2KSkpCmZsb2F0MTZfdCBzdmxhc3RiX2YxNihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxhc3RiX3MzMikpKQppbnQzMl90IHN2bGFzdGJfczMyKHN2Ym9vbF90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxhc3RiX3M2NCkpKQppbnQ2NF90IHN2bGFzdGJfczY0KHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxhc3RiX3MxNikpKQppbnQxNl90IHN2bGFzdGJfczE2KHN2Ym9vbF90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMV91OCkpKQpzdnVpbnQ4X3Qgc3ZsZDFfdTgoc3Zib29sX3QsIHVpbnQ4X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX3UzMikpKQpzdnVpbnQzMl90IHN2bGQxX3UzMihzdmJvb2xfdCwgdWludDMyX3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX3U2NCkpKQpzdnVpbnQ2NF90IHN2bGQxX3U2NChzdmJvb2xfdCwgdWludDY0X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX3UxNikpKQpzdnVpbnQxNl90IHN2bGQxX3UxNihzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX3M4KSkpCnN2aW50OF90IHN2bGQxX3M4KHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX2Y2NCkpKQpzdmZsb2F0NjRfdCBzdmxkMV9mNjQoc3Zib29sX3QsIGZsb2F0NjRfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFfZjMyKSkpCnN2ZmxvYXQzMl90IHN2bGQxX2YzMihzdmJvb2xfdCwgZmxvYXQzMl90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMV9mMTYpKSkKc3ZmbG9hdDE2X3Qgc3ZsZDFfZjE2KHN2Ym9vbF90LCBmbG9hdDE2X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX3MzMikpKQpzdmludDMyX3Qgc3ZsZDFfczMyKHN2Ym9vbF90LCBpbnQzMl90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMV9zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxX3M2NChzdmJvb2xfdCwgaW50NjRfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFfczE2KSkpCnN2aW50MTZfdCBzdmxkMV9zMTYoc3Zib29sX3QsIGludDE2X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX2dhdGhlcl91MzJiYXNlX2luZGV4X3UzMikpKQpzdnVpbnQzMl90IHN2bGQxX2dhdGhlcl91MzJiYXNlX2luZGV4X3UzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX2dhdGhlcl91NjRiYXNlX2luZGV4X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGQxX2dhdGhlcl91NjRiYXNlX2luZGV4X3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX2dhdGhlcl91NjRiYXNlX2luZGV4X2Y2NCkpKQpzdmZsb2F0NjRfdCBzdmxkMV9nYXRoZXJfdTY0YmFzZV9pbmRleF9mNjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMV9nYXRoZXJfdTMyYmFzZV9pbmRleF9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3ZsZDFfZ2F0aGVyX3UzMmJhc2VfaW5kZXhfZjMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFfZ2F0aGVyX3UzMmJhc2VfaW5kZXhfczMyKSkpCnN2aW50MzJfdCBzdmxkMV9nYXRoZXJfdTMyYmFzZV9pbmRleF9zMzIoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMV9nYXRoZXJfdTY0YmFzZV9pbmRleF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxX2dhdGhlcl91NjRiYXNlX2luZGV4X3M2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX2dhdGhlcl91MzJiYXNlX29mZnNldF91MzIpKSkKc3Z1aW50MzJfdCBzdmxkMV9nYXRoZXJfdTMyYmFzZV9vZmZzZXRfdTMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFfZ2F0aGVyX3U2NGJhc2Vfb2Zmc2V0X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGQxX2dhdGhlcl91NjRiYXNlX29mZnNldF91NjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMV9nYXRoZXJfdTY0YmFzZV9vZmZzZXRfZjY0KSkpCnN2ZmxvYXQ2NF90IHN2bGQxX2dhdGhlcl91NjRiYXNlX29mZnNldF9mNjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMV9nYXRoZXJfdTMyYmFzZV9vZmZzZXRfZjMyKSkpCnN2ZmxvYXQzMl90IHN2bGQxX2dhdGhlcl91MzJiYXNlX29mZnNldF9mMzIoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMV9nYXRoZXJfdTMyYmFzZV9vZmZzZXRfczMyKSkpCnN2aW50MzJfdCBzdmxkMV9nYXRoZXJfdTMyYmFzZV9vZmZzZXRfczMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFfZ2F0aGVyX3U2NGJhc2Vfb2Zmc2V0X3M2NCkpKQpzdmludDY0X3Qgc3ZsZDFfZ2F0aGVyX3U2NGJhc2Vfb2Zmc2V0X3M2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX2dhdGhlcl91MzJiYXNlX3UzMikpKQpzdnVpbnQzMl90IHN2bGQxX2dhdGhlcl91MzJiYXNlX3UzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX2dhdGhlcl91NjRiYXNlX3U2NCkpKQpzdnVpbnQ2NF90IHN2bGQxX2dhdGhlcl91NjRiYXNlX3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX2dhdGhlcl91NjRiYXNlX2Y2NCkpKQpzdmZsb2F0NjRfdCBzdmxkMV9nYXRoZXJfdTY0YmFzZV9mNjQoc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMV9nYXRoZXJfdTMyYmFzZV9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3ZsZDFfZ2F0aGVyX3UzMmJhc2VfZjMyKHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFfZ2F0aGVyX3UzMmJhc2VfczMyKSkpCnN2aW50MzJfdCBzdmxkMV9nYXRoZXJfdTMyYmFzZV9zMzIoc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMV9nYXRoZXJfdTY0YmFzZV9zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxX2dhdGhlcl91NjRiYXNlX3M2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX2dhdGhlcl9zMzJpbmRleF91MzIpKSkKc3Z1aW50MzJfdCBzdmxkMV9nYXRoZXJfczMyaW5kZXhfdTMyKHN2Ym9vbF90LCB1aW50MzJfdCBjb25zdCAqLCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMV9nYXRoZXJfczMyaW5kZXhfZjMyKSkpCnN2ZmxvYXQzMl90IHN2bGQxX2dhdGhlcl9zMzJpbmRleF9mMzIoc3Zib29sX3QsIGZsb2F0MzJfdCBjb25zdCAqLCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMV9nYXRoZXJfczMyaW5kZXhfczMyKSkpCnN2aW50MzJfdCBzdmxkMV9nYXRoZXJfczMyaW5kZXhfczMyKHN2Ym9vbF90LCBpbnQzMl90IGNvbnN0ICosIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX2dhdGhlcl91MzJpbmRleF91MzIpKSkKc3Z1aW50MzJfdCBzdmxkMV9nYXRoZXJfdTMyaW5kZXhfdTMyKHN2Ym9vbF90LCB1aW50MzJfdCBjb25zdCAqLCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFfZ2F0aGVyX3UzMmluZGV4X2YzMikpKQpzdmZsb2F0MzJfdCBzdmxkMV9nYXRoZXJfdTMyaW5kZXhfZjMyKHN2Ym9vbF90LCBmbG9hdDMyX3QgY29uc3QgKiwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX2dhdGhlcl91MzJpbmRleF9zMzIpKSkKc3ZpbnQzMl90IHN2bGQxX2dhdGhlcl91MzJpbmRleF9zMzIoc3Zib29sX3QsIGludDMyX3QgY29uc3QgKiwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX2dhdGhlcl9zNjRpbmRleF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkMV9nYXRoZXJfczY0aW5kZXhfdTY0KHN2Ym9vbF90LCB1aW50NjRfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMV9nYXRoZXJfczY0aW5kZXhfZjY0KSkpCnN2ZmxvYXQ2NF90IHN2bGQxX2dhdGhlcl9zNjRpbmRleF9mNjQoc3Zib29sX3QsIGZsb2F0NjRfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMV9nYXRoZXJfczY0aW5kZXhfczY0KSkpCnN2aW50NjRfdCBzdmxkMV9nYXRoZXJfczY0aW5kZXhfczY0KHN2Ym9vbF90LCBpbnQ2NF90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX2dhdGhlcl91NjRpbmRleF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkMV9nYXRoZXJfdTY0aW5kZXhfdTY0KHN2Ym9vbF90LCB1aW50NjRfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFfZ2F0aGVyX3U2NGluZGV4X2Y2NCkpKQpzdmZsb2F0NjRfdCBzdmxkMV9nYXRoZXJfdTY0aW5kZXhfZjY0KHN2Ym9vbF90LCBmbG9hdDY0X3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX2dhdGhlcl91NjRpbmRleF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxX2dhdGhlcl91NjRpbmRleF9zNjQoc3Zib29sX3QsIGludDY0X3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX2dhdGhlcl9zMzJvZmZzZXRfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZDFfZ2F0aGVyX3MzMm9mZnNldF91MzIoc3Zib29sX3QsIHVpbnQzMl90IGNvbnN0ICosIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX2dhdGhlcl9zMzJvZmZzZXRfZjMyKSkpCnN2ZmxvYXQzMl90IHN2bGQxX2dhdGhlcl9zMzJvZmZzZXRfZjMyKHN2Ym9vbF90LCBmbG9hdDMyX3QgY29uc3QgKiwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFfZ2F0aGVyX3MzMm9mZnNldF9zMzIpKSkKc3ZpbnQzMl90IHN2bGQxX2dhdGhlcl9zMzJvZmZzZXRfczMyKHN2Ym9vbF90LCBpbnQzMl90IGNvbnN0ICosIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX2dhdGhlcl91MzJvZmZzZXRfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZDFfZ2F0aGVyX3UzMm9mZnNldF91MzIoc3Zib29sX3QsIHVpbnQzMl90IGNvbnN0ICosIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMV9nYXRoZXJfdTMyb2Zmc2V0X2YzMikpKQpzdmZsb2F0MzJfdCBzdmxkMV9nYXRoZXJfdTMyb2Zmc2V0X2YzMihzdmJvb2xfdCwgZmxvYXQzMl90IGNvbnN0ICosIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMV9nYXRoZXJfdTMyb2Zmc2V0X3MzMikpKQpzdmludDMyX3Qgc3ZsZDFfZ2F0aGVyX3UzMm9mZnNldF9zMzIoc3Zib29sX3QsIGludDMyX3QgY29uc3QgKiwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX2dhdGhlcl9zNjRvZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZDFfZ2F0aGVyX3M2NG9mZnNldF91NjQoc3Zib29sX3QsIHVpbnQ2NF90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX2dhdGhlcl9zNjRvZmZzZXRfZjY0KSkpCnN2ZmxvYXQ2NF90IHN2bGQxX2dhdGhlcl9zNjRvZmZzZXRfZjY0KHN2Ym9vbF90LCBmbG9hdDY0X3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFfZ2F0aGVyX3M2NG9mZnNldF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxX2dhdGhlcl9zNjRvZmZzZXRfczY0KHN2Ym9vbF90LCBpbnQ2NF90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX2dhdGhlcl91NjRvZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZDFfZ2F0aGVyX3U2NG9mZnNldF91NjQoc3Zib29sX3QsIHVpbnQ2NF90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMV9nYXRoZXJfdTY0b2Zmc2V0X2Y2NCkpKQpzdmZsb2F0NjRfdCBzdmxkMV9nYXRoZXJfdTY0b2Zmc2V0X2Y2NChzdmJvb2xfdCwgZmxvYXQ2NF90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMV9nYXRoZXJfdTY0b2Zmc2V0X3M2NCkpKQpzdmludDY0X3Qgc3ZsZDFfZ2F0aGVyX3U2NG9mZnNldF9zNjQoc3Zib29sX3QsIGludDY0X3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX3ZudW1fdTgpKSkKc3Z1aW50OF90IHN2bGQxX3ZudW1fdTgoc3Zib29sX3QsIHVpbnQ4X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX3ZudW1fdTMyKSkpCnN2dWludDMyX3Qgc3ZsZDFfdm51bV91MzIoc3Zib29sX3QsIHVpbnQzMl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMV92bnVtX3U2NCkpKQpzdnVpbnQ2NF90IHN2bGQxX3ZudW1fdTY0KHN2Ym9vbF90LCB1aW50NjRfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFfdm51bV91MTYpKSkKc3Z1aW50MTZfdCBzdmxkMV92bnVtX3UxNihzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX3ZudW1fczgpKSkKc3ZpbnQ4X3Qgc3ZsZDFfdm51bV9zOChzdmJvb2xfdCwgaW50OF90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMV92bnVtX2Y2NCkpKQpzdmZsb2F0NjRfdCBzdmxkMV92bnVtX2Y2NChzdmJvb2xfdCwgZmxvYXQ2NF90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMV92bnVtX2YzMikpKQpzdmZsb2F0MzJfdCBzdmxkMV92bnVtX2YzMihzdmJvb2xfdCwgZmxvYXQzMl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMV92bnVtX2YxNikpKQpzdmZsb2F0MTZfdCBzdmxkMV92bnVtX2YxNihzdmJvb2xfdCwgZmxvYXQxNl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMV92bnVtX3MzMikpKQpzdmludDMyX3Qgc3ZsZDFfdm51bV9zMzIoc3Zib29sX3QsIGludDMyX3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX3ZudW1fczY0KSkpCnN2aW50NjRfdCBzdmxkMV92bnVtX3M2NChzdmJvb2xfdCwgaW50NjRfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFfdm51bV9zMTYpKSkKc3ZpbnQxNl90IHN2bGQxX3ZudW1fczE2KHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXJxX3U4KSkpCnN2dWludDhfdCBzdmxkMXJxX3U4KHN2Ym9vbF90LCB1aW50OF90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXJxX3UzMikpKQpzdnVpbnQzMl90IHN2bGQxcnFfdTMyKHN2Ym9vbF90LCB1aW50MzJfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFycV91NjQpKSkKc3Z1aW50NjRfdCBzdmxkMXJxX3U2NChzdmJvb2xfdCwgdWludDY0X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxcnFfdTE2KSkpCnN2dWludDE2X3Qgc3ZsZDFycV91MTYoc3Zib29sX3QsIHVpbnQxNl90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXJxX3M4KSkpCnN2aW50OF90IHN2bGQxcnFfczgoc3Zib29sX3QsIGludDhfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFycV9mNjQpKSkKc3ZmbG9hdDY0X3Qgc3ZsZDFycV9mNjQoc3Zib29sX3QsIGZsb2F0NjRfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFycV9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3ZsZDFycV9mMzIoc3Zib29sX3QsIGZsb2F0MzJfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFycV9mMTYpKSkKc3ZmbG9hdDE2X3Qgc3ZsZDFycV9mMTYoc3Zib29sX3QsIGZsb2F0MTZfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFycV9zMzIpKSkKc3ZpbnQzMl90IHN2bGQxcnFfczMyKHN2Ym9vbF90LCBpbnQzMl90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXJxX3M2NCkpKQpzdmludDY0X3Qgc3ZsZDFycV9zNjQoc3Zib29sX3QsIGludDY0X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxcnFfczE2KSkpCnN2aW50MTZfdCBzdmxkMXJxX3MxNihzdmJvb2xfdCwgaW50MTZfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzYl9nYXRoZXJfdTMyYmFzZV9vZmZzZXRfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZDFzYl9nYXRoZXJfdTMyYmFzZV9vZmZzZXRfdTMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzYl9nYXRoZXJfdTY0YmFzZV9vZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZDFzYl9nYXRoZXJfdTY0YmFzZV9vZmZzZXRfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzYl9nYXRoZXJfdTMyYmFzZV9vZmZzZXRfczMyKSkpCnN2aW50MzJfdCBzdmxkMXNiX2dhdGhlcl91MzJiYXNlX29mZnNldF9zMzIoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXNiX2dhdGhlcl91NjRiYXNlX29mZnNldF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxc2JfZ2F0aGVyX3U2NGJhc2Vfb2Zmc2V0X3M2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxc2JfZ2F0aGVyX3UzMmJhc2VfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZDFzYl9nYXRoZXJfdTMyYmFzZV91MzIoc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXNiX2dhdGhlcl91NjRiYXNlX3U2NCkpKQpzdnVpbnQ2NF90IHN2bGQxc2JfZ2F0aGVyX3U2NGJhc2VfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzYl9nYXRoZXJfdTMyYmFzZV9zMzIpKSkKc3ZpbnQzMl90IHN2bGQxc2JfZ2F0aGVyX3UzMmJhc2VfczMyKHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzYl9nYXRoZXJfdTY0YmFzZV9zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxc2JfZ2F0aGVyX3U2NGJhc2VfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzYl9nYXRoZXJfczMyb2Zmc2V0X3UzMikpKQpzdnVpbnQzMl90IHN2bGQxc2JfZ2F0aGVyX3MzMm9mZnNldF91MzIoc3Zib29sX3QsIGludDhfdCBjb25zdCAqLCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXNiX2dhdGhlcl9zMzJvZmZzZXRfczMyKSkpCnN2aW50MzJfdCBzdmxkMXNiX2dhdGhlcl9zMzJvZmZzZXRfczMyKHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKiwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzYl9nYXRoZXJfdTMyb2Zmc2V0X3UzMikpKQpzdnVpbnQzMl90IHN2bGQxc2JfZ2F0aGVyX3UzMm9mZnNldF91MzIoc3Zib29sX3QsIGludDhfdCBjb25zdCAqLCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzYl9nYXRoZXJfdTMyb2Zmc2V0X3MzMikpKQpzdmludDMyX3Qgc3ZsZDFzYl9nYXRoZXJfdTMyb2Zmc2V0X3MzMihzdmJvb2xfdCwgaW50OF90IGNvbnN0ICosIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXNiX2dhdGhlcl9zNjRvZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZDFzYl9nYXRoZXJfczY0b2Zmc2V0X3U2NChzdmJvb2xfdCwgaW50OF90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxc2JfZ2F0aGVyX3M2NG9mZnNldF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxc2JfZ2F0aGVyX3M2NG9mZnNldF9zNjQoc3Zib29sX3QsIGludDhfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXNiX2dhdGhlcl91NjRvZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZDFzYl9nYXRoZXJfdTY0b2Zmc2V0X3U2NChzdmJvb2xfdCwgaW50OF90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXNiX2dhdGhlcl91NjRvZmZzZXRfczY0KSkpCnN2aW50NjRfdCBzdmxkMXNiX2dhdGhlcl91NjRvZmZzZXRfczY0KHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxc2Jfdm51bV91MzIpKSkKc3Z1aW50MzJfdCBzdmxkMXNiX3ZudW1fdTMyKHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxc2Jfdm51bV91NjQpKSkKc3Z1aW50NjRfdCBzdmxkMXNiX3ZudW1fdTY0KHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxc2Jfdm51bV91MTYpKSkKc3Z1aW50MTZfdCBzdmxkMXNiX3ZudW1fdTE2KHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxc2Jfdm51bV9zMzIpKSkKc3ZpbnQzMl90IHN2bGQxc2Jfdm51bV9zMzIoc3Zib29sX3QsIGludDhfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzYl92bnVtX3M2NCkpKQpzdmludDY0X3Qgc3ZsZDFzYl92bnVtX3M2NChzdmJvb2xfdCwgaW50OF90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXNiX3ZudW1fczE2KSkpCnN2aW50MTZfdCBzdmxkMXNiX3ZudW1fczE2KHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxc2JfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZDFzYl91MzIoc3Zib29sX3QsIGludDhfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzYl91NjQpKSkKc3Z1aW50NjRfdCBzdmxkMXNiX3U2NChzdmJvb2xfdCwgaW50OF90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXNiX3UxNikpKQpzdnVpbnQxNl90IHN2bGQxc2JfdTE2KHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxc2JfczMyKSkpCnN2aW50MzJfdCBzdmxkMXNiX3MzMihzdmJvb2xfdCwgaW50OF90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXNiX3M2NCkpKQpzdmludDY0X3Qgc3ZsZDFzYl9zNjQoc3Zib29sX3QsIGludDhfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzYl9zMTYpKSkKc3ZpbnQxNl90IHN2bGQxc2JfczE2KHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxc2hfZ2F0aGVyX3UzMmJhc2VfaW5kZXhfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZDFzaF9nYXRoZXJfdTMyYmFzZV9pbmRleF91MzIoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXNoX2dhdGhlcl91NjRiYXNlX2luZGV4X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGQxc2hfZ2F0aGVyX3U2NGJhc2VfaW5kZXhfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzaF9nYXRoZXJfdTMyYmFzZV9pbmRleF9zMzIpKSkKc3ZpbnQzMl90IHN2bGQxc2hfZ2F0aGVyX3UzMmJhc2VfaW5kZXhfczMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzaF9nYXRoZXJfdTY0YmFzZV9pbmRleF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxc2hfZ2F0aGVyX3U2NGJhc2VfaW5kZXhfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzaF9nYXRoZXJfdTMyYmFzZV9vZmZzZXRfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZDFzaF9nYXRoZXJfdTMyYmFzZV9vZmZzZXRfdTMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzaF9nYXRoZXJfdTY0YmFzZV9vZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZDFzaF9nYXRoZXJfdTY0YmFzZV9vZmZzZXRfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzaF9nYXRoZXJfdTMyYmFzZV9vZmZzZXRfczMyKSkpCnN2aW50MzJfdCBzdmxkMXNoX2dhdGhlcl91MzJiYXNlX29mZnNldF9zMzIoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXNoX2dhdGhlcl91NjRiYXNlX29mZnNldF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxc2hfZ2F0aGVyX3U2NGJhc2Vfb2Zmc2V0X3M2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxc2hfZ2F0aGVyX3UzMmJhc2VfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZDFzaF9nYXRoZXJfdTMyYmFzZV91MzIoc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXNoX2dhdGhlcl91NjRiYXNlX3U2NCkpKQpzdnVpbnQ2NF90IHN2bGQxc2hfZ2F0aGVyX3U2NGJhc2VfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzaF9nYXRoZXJfdTMyYmFzZV9zMzIpKSkKc3ZpbnQzMl90IHN2bGQxc2hfZ2F0aGVyX3UzMmJhc2VfczMyKHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzaF9nYXRoZXJfdTY0YmFzZV9zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxc2hfZ2F0aGVyX3U2NGJhc2VfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzaF9nYXRoZXJfczMyaW5kZXhfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZDFzaF9nYXRoZXJfczMyaW5kZXhfdTMyKHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICosIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxc2hfZ2F0aGVyX3MzMmluZGV4X3MzMikpKQpzdmludDMyX3Qgc3ZsZDFzaF9nYXRoZXJfczMyaW5kZXhfczMyKHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICosIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxc2hfZ2F0aGVyX3UzMmluZGV4X3UzMikpKQpzdnVpbnQzMl90IHN2bGQxc2hfZ2F0aGVyX3UzMmluZGV4X3UzMihzdmJvb2xfdCwgaW50MTZfdCBjb25zdCAqLCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzaF9nYXRoZXJfdTMyaW5kZXhfczMyKSkpCnN2aW50MzJfdCBzdmxkMXNoX2dhdGhlcl91MzJpbmRleF9zMzIoc3Zib29sX3QsIGludDE2X3QgY29uc3QgKiwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxc2hfZ2F0aGVyX3M2NGluZGV4X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGQxc2hfZ2F0aGVyX3M2NGluZGV4X3U2NChzdmJvb2xfdCwgaW50MTZfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXNoX2dhdGhlcl9zNjRpbmRleF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxc2hfZ2F0aGVyX3M2NGluZGV4X3M2NChzdmJvb2xfdCwgaW50MTZfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXNoX2dhdGhlcl91NjRpbmRleF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkMXNoX2dhdGhlcl91NjRpbmRleF91NjQoc3Zib29sX3QsIGludDE2X3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxc2hfZ2F0aGVyX3U2NGluZGV4X3M2NCkpKQpzdmludDY0X3Qgc3ZsZDFzaF9nYXRoZXJfdTY0aW5kZXhfczY0KHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXNoX2dhdGhlcl9zMzJvZmZzZXRfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZDFzaF9nYXRoZXJfczMyb2Zmc2V0X3UzMihzdmJvb2xfdCwgaW50MTZfdCBjb25zdCAqLCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXNoX2dhdGhlcl9zMzJvZmZzZXRfczMyKSkpCnN2aW50MzJfdCBzdmxkMXNoX2dhdGhlcl9zMzJvZmZzZXRfczMyKHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICosIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxc2hfZ2F0aGVyX3UzMm9mZnNldF91MzIpKSkKc3Z1aW50MzJfdCBzdmxkMXNoX2dhdGhlcl91MzJvZmZzZXRfdTMyKHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICosIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXNoX2dhdGhlcl91MzJvZmZzZXRfczMyKSkpCnN2aW50MzJfdCBzdmxkMXNoX2dhdGhlcl91MzJvZmZzZXRfczMyKHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICosIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXNoX2dhdGhlcl9zNjRvZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZDFzaF9nYXRoZXJfczY0b2Zmc2V0X3U2NChzdmJvb2xfdCwgaW50MTZfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXNoX2dhdGhlcl9zNjRvZmZzZXRfczY0KSkpCnN2aW50NjRfdCBzdmxkMXNoX2dhdGhlcl9zNjRvZmZzZXRfczY0KHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxc2hfZ2F0aGVyX3U2NG9mZnNldF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkMXNoX2dhdGhlcl91NjRvZmZzZXRfdTY0KHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXNoX2dhdGhlcl91NjRvZmZzZXRfczY0KSkpCnN2aW50NjRfdCBzdmxkMXNoX2dhdGhlcl91NjRvZmZzZXRfczY0KHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXNoX3ZudW1fdTMyKSkpCnN2dWludDMyX3Qgc3ZsZDFzaF92bnVtX3UzMihzdmJvb2xfdCwgaW50MTZfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzaF92bnVtX3U2NCkpKQpzdnVpbnQ2NF90IHN2bGQxc2hfdm51bV91NjQoc3Zib29sX3QsIGludDE2X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxc2hfdm51bV9zMzIpKSkKc3ZpbnQzMl90IHN2bGQxc2hfdm51bV9zMzIoc3Zib29sX3QsIGludDE2X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxc2hfdm51bV9zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxc2hfdm51bV9zNjQoc3Zib29sX3QsIGludDE2X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxc2hfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZDFzaF91MzIoc3Zib29sX3QsIGludDE2X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxc2hfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZDFzaF91NjQoc3Zib29sX3QsIGludDE2X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxc2hfczMyKSkpCnN2aW50MzJfdCBzdmxkMXNoX3MzMihzdmJvb2xfdCwgaW50MTZfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzaF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxc2hfczY0KHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXN3X2dhdGhlcl91NjRiYXNlX2luZGV4X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGQxc3dfZ2F0aGVyX3U2NGJhc2VfaW5kZXhfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzd19nYXRoZXJfdTY0YmFzZV9pbmRleF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxc3dfZ2F0aGVyX3U2NGJhc2VfaW5kZXhfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzd19nYXRoZXJfdTY0YmFzZV9vZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZDFzd19nYXRoZXJfdTY0YmFzZV9vZmZzZXRfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzd19nYXRoZXJfdTY0YmFzZV9vZmZzZXRfczY0KSkpCnN2aW50NjRfdCBzdmxkMXN3X2dhdGhlcl91NjRiYXNlX29mZnNldF9zNjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXN3X2dhdGhlcl91NjRiYXNlX3U2NCkpKQpzdnVpbnQ2NF90IHN2bGQxc3dfZ2F0aGVyX3U2NGJhc2VfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzd19nYXRoZXJfdTY0YmFzZV9zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxc3dfZ2F0aGVyX3U2NGJhc2VfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzd19nYXRoZXJfczY0aW5kZXhfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZDFzd19nYXRoZXJfczY0aW5kZXhfdTY0KHN2Ym9vbF90LCBpbnQzMl90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxc3dfZ2F0aGVyX3M2NGluZGV4X3M2NCkpKQpzdmludDY0X3Qgc3ZsZDFzd19nYXRoZXJfczY0aW5kZXhfczY0KHN2Ym9vbF90LCBpbnQzMl90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxc3dfZ2F0aGVyX3U2NGluZGV4X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGQxc3dfZ2F0aGVyX3U2NGluZGV4X3U2NChzdmJvb2xfdCwgaW50MzJfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzd19nYXRoZXJfdTY0aW5kZXhfczY0KSkpCnN2aW50NjRfdCBzdmxkMXN3X2dhdGhlcl91NjRpbmRleF9zNjQoc3Zib29sX3QsIGludDMyX3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxc3dfZ2F0aGVyX3M2NG9mZnNldF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkMXN3X2dhdGhlcl9zNjRvZmZzZXRfdTY0KHN2Ym9vbF90LCBpbnQzMl90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxc3dfZ2F0aGVyX3M2NG9mZnNldF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxc3dfZ2F0aGVyX3M2NG9mZnNldF9zNjQoc3Zib29sX3QsIGludDMyX3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzd19nYXRoZXJfdTY0b2Zmc2V0X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGQxc3dfZ2F0aGVyX3U2NG9mZnNldF91NjQoc3Zib29sX3QsIGludDMyX3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxc3dfZ2F0aGVyX3U2NG9mZnNldF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxc3dfZ2F0aGVyX3U2NG9mZnNldF9zNjQoc3Zib29sX3QsIGludDMyX3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxc3dfdm51bV91NjQpKSkKc3Z1aW50NjRfdCBzdmxkMXN3X3ZudW1fdTY0KHN2Ym9vbF90LCBpbnQzMl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXN3X3ZudW1fczY0KSkpCnN2aW50NjRfdCBzdmxkMXN3X3ZudW1fczY0KHN2Ym9vbF90LCBpbnQzMl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXN3X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGQxc3dfdTY0KHN2Ym9vbF90LCBpbnQzMl90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXN3X3M2NCkpKQpzdmludDY0X3Qgc3ZsZDFzd19zNjQoc3Zib29sX3QsIGludDMyX3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdWJfZ2F0aGVyX3UzMmJhc2Vfb2Zmc2V0X3UzMikpKQpzdnVpbnQzMl90IHN2bGQxdWJfZ2F0aGVyX3UzMmJhc2Vfb2Zmc2V0X3UzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdWJfZ2F0aGVyX3U2NGJhc2Vfb2Zmc2V0X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGQxdWJfZ2F0aGVyX3U2NGJhc2Vfb2Zmc2V0X3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdWJfZ2F0aGVyX3UzMmJhc2Vfb2Zmc2V0X3MzMikpKQpzdmludDMyX3Qgc3ZsZDF1Yl9nYXRoZXJfdTMyYmFzZV9vZmZzZXRfczMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1Yl9nYXRoZXJfdTY0YmFzZV9vZmZzZXRfczY0KSkpCnN2aW50NjRfdCBzdmxkMXViX2dhdGhlcl91NjRiYXNlX29mZnNldF9zNjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXViX2dhdGhlcl91MzJiYXNlX3UzMikpKQpzdnVpbnQzMl90IHN2bGQxdWJfZ2F0aGVyX3UzMmJhc2VfdTMyKHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1Yl9nYXRoZXJfdTY0YmFzZV91NjQpKSkKc3Z1aW50NjRfdCBzdmxkMXViX2dhdGhlcl91NjRiYXNlX3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdWJfZ2F0aGVyX3UzMmJhc2VfczMyKSkpCnN2aW50MzJfdCBzdmxkMXViX2dhdGhlcl91MzJiYXNlX3MzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdWJfZ2F0aGVyX3U2NGJhc2VfczY0KSkpCnN2aW50NjRfdCBzdmxkMXViX2dhdGhlcl91NjRiYXNlX3M2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdWJfZ2F0aGVyX3MzMm9mZnNldF91MzIpKSkKc3Z1aW50MzJfdCBzdmxkMXViX2dhdGhlcl9zMzJvZmZzZXRfdTMyKHN2Ym9vbF90LCB1aW50OF90IGNvbnN0ICosIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdWJfZ2F0aGVyX3MzMm9mZnNldF9zMzIpKSkKc3ZpbnQzMl90IHN2bGQxdWJfZ2F0aGVyX3MzMm9mZnNldF9zMzIoc3Zib29sX3QsIHVpbnQ4X3QgY29uc3QgKiwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1Yl9nYXRoZXJfdTMyb2Zmc2V0X3UzMikpKQpzdnVpbnQzMl90IHN2bGQxdWJfZ2F0aGVyX3UzMm9mZnNldF91MzIoc3Zib29sX3QsIHVpbnQ4X3QgY29uc3QgKiwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdWJfZ2F0aGVyX3UzMm9mZnNldF9zMzIpKSkKc3ZpbnQzMl90IHN2bGQxdWJfZ2F0aGVyX3UzMm9mZnNldF9zMzIoc3Zib29sX3QsIHVpbnQ4X3QgY29uc3QgKiwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdWJfZ2F0aGVyX3M2NG9mZnNldF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkMXViX2dhdGhlcl9zNjRvZmZzZXRfdTY0KHN2Ym9vbF90LCB1aW50OF90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdWJfZ2F0aGVyX3M2NG9mZnNldF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxdWJfZ2F0aGVyX3M2NG9mZnNldF9zNjQoc3Zib29sX3QsIHVpbnQ4X3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1Yl9nYXRoZXJfdTY0b2Zmc2V0X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGQxdWJfZ2F0aGVyX3U2NG9mZnNldF91NjQoc3Zib29sX3QsIHVpbnQ4X3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdWJfZ2F0aGVyX3U2NG9mZnNldF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxdWJfZ2F0aGVyX3U2NG9mZnNldF9zNjQoc3Zib29sX3QsIHVpbnQ4X3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdWJfdm51bV91MzIpKSkKc3Z1aW50MzJfdCBzdmxkMXViX3ZudW1fdTMyKHN2Ym9vbF90LCB1aW50OF90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXViX3ZudW1fdTY0KSkpCnN2dWludDY0X3Qgc3ZsZDF1Yl92bnVtX3U2NChzdmJvb2xfdCwgdWludDhfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1Yl92bnVtX3UxNikpKQpzdnVpbnQxNl90IHN2bGQxdWJfdm51bV91MTYoc3Zib29sX3QsIHVpbnQ4X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdWJfdm51bV9zMzIpKSkKc3ZpbnQzMl90IHN2bGQxdWJfdm51bV9zMzIoc3Zib29sX3QsIHVpbnQ4X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdWJfdm51bV9zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxdWJfdm51bV9zNjQoc3Zib29sX3QsIHVpbnQ4X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdWJfdm51bV9zMTYpKSkKc3ZpbnQxNl90IHN2bGQxdWJfdm51bV9zMTYoc3Zib29sX3QsIHVpbnQ4X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdWJfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZDF1Yl91MzIoc3Zib29sX3QsIHVpbnQ4X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdWJfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZDF1Yl91NjQoc3Zib29sX3QsIHVpbnQ4X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdWJfdTE2KSkpCnN2dWludDE2X3Qgc3ZsZDF1Yl91MTYoc3Zib29sX3QsIHVpbnQ4X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdWJfczMyKSkpCnN2aW50MzJfdCBzdmxkMXViX3MzMihzdmJvb2xfdCwgdWludDhfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1Yl9zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxdWJfczY0KHN2Ym9vbF90LCB1aW50OF90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXViX3MxNikpKQpzdmludDE2X3Qgc3ZsZDF1Yl9zMTYoc3Zib29sX3QsIHVpbnQ4X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdWhfZ2F0aGVyX3UzMmJhc2VfaW5kZXhfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZDF1aF9nYXRoZXJfdTMyYmFzZV9pbmRleF91MzIoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXVoX2dhdGhlcl91NjRiYXNlX2luZGV4X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGQxdWhfZ2F0aGVyX3U2NGJhc2VfaW5kZXhfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1aF9nYXRoZXJfdTMyYmFzZV9pbmRleF9zMzIpKSkKc3ZpbnQzMl90IHN2bGQxdWhfZ2F0aGVyX3UzMmJhc2VfaW5kZXhfczMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1aF9nYXRoZXJfdTY0YmFzZV9pbmRleF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxdWhfZ2F0aGVyX3U2NGJhc2VfaW5kZXhfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1aF9nYXRoZXJfdTMyYmFzZV9vZmZzZXRfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZDF1aF9nYXRoZXJfdTMyYmFzZV9vZmZzZXRfdTMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1aF9nYXRoZXJfdTY0YmFzZV9vZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZDF1aF9nYXRoZXJfdTY0YmFzZV9vZmZzZXRfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1aF9nYXRoZXJfdTMyYmFzZV9vZmZzZXRfczMyKSkpCnN2aW50MzJfdCBzdmxkMXVoX2dhdGhlcl91MzJiYXNlX29mZnNldF9zMzIoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXVoX2dhdGhlcl91NjRiYXNlX29mZnNldF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxdWhfZ2F0aGVyX3U2NGJhc2Vfb2Zmc2V0X3M2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdWhfZ2F0aGVyX3UzMmJhc2VfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZDF1aF9nYXRoZXJfdTMyYmFzZV91MzIoc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXVoX2dhdGhlcl91NjRiYXNlX3U2NCkpKQpzdnVpbnQ2NF90IHN2bGQxdWhfZ2F0aGVyX3U2NGJhc2VfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1aF9nYXRoZXJfdTMyYmFzZV9zMzIpKSkKc3ZpbnQzMl90IHN2bGQxdWhfZ2F0aGVyX3UzMmJhc2VfczMyKHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1aF9nYXRoZXJfdTY0YmFzZV9zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxdWhfZ2F0aGVyX3U2NGJhc2VfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1aF9nYXRoZXJfczMyaW5kZXhfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZDF1aF9nYXRoZXJfczMyaW5kZXhfdTMyKHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqLCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXVoX2dhdGhlcl9zMzJpbmRleF9zMzIpKSkKc3ZpbnQzMl90IHN2bGQxdWhfZ2F0aGVyX3MzMmluZGV4X3MzMihzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKiwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1aF9nYXRoZXJfdTMyaW5kZXhfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZDF1aF9nYXRoZXJfdTMyaW5kZXhfdTMyKHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqLCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1aF9nYXRoZXJfdTMyaW5kZXhfczMyKSkpCnN2aW50MzJfdCBzdmxkMXVoX2dhdGhlcl91MzJpbmRleF9zMzIoc3Zib29sX3QsIHVpbnQxNl90IGNvbnN0ICosIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXVoX2dhdGhlcl9zNjRpbmRleF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkMXVoX2dhdGhlcl9zNjRpbmRleF91NjQoc3Zib29sX3QsIHVpbnQxNl90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdWhfZ2F0aGVyX3M2NGluZGV4X3M2NCkpKQpzdmludDY0X3Qgc3ZsZDF1aF9nYXRoZXJfczY0aW5kZXhfczY0KHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXVoX2dhdGhlcl91NjRpbmRleF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkMXVoX2dhdGhlcl91NjRpbmRleF91NjQoc3Zib29sX3QsIHVpbnQxNl90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXVoX2dhdGhlcl91NjRpbmRleF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxdWhfZ2F0aGVyX3U2NGluZGV4X3M2NChzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdWhfZ2F0aGVyX3MzMm9mZnNldF91MzIpKSkKc3Z1aW50MzJfdCBzdmxkMXVoX2dhdGhlcl9zMzJvZmZzZXRfdTMyKHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqLCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXVoX2dhdGhlcl9zMzJvZmZzZXRfczMyKSkpCnN2aW50MzJfdCBzdmxkMXVoX2dhdGhlcl9zMzJvZmZzZXRfczMyKHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqLCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXVoX2dhdGhlcl91MzJvZmZzZXRfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZDF1aF9nYXRoZXJfdTMyb2Zmc2V0X3UzMihzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKiwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdWhfZ2F0aGVyX3UzMm9mZnNldF9zMzIpKSkKc3ZpbnQzMl90IHN2bGQxdWhfZ2F0aGVyX3UzMm9mZnNldF9zMzIoc3Zib29sX3QsIHVpbnQxNl90IGNvbnN0ICosIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXVoX2dhdGhlcl9zNjRvZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZDF1aF9nYXRoZXJfczY0b2Zmc2V0X3U2NChzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1aF9nYXRoZXJfczY0b2Zmc2V0X3M2NCkpKQpzdmludDY0X3Qgc3ZsZDF1aF9nYXRoZXJfczY0b2Zmc2V0X3M2NChzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1aF9nYXRoZXJfdTY0b2Zmc2V0X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGQxdWhfZ2F0aGVyX3U2NG9mZnNldF91NjQoc3Zib29sX3QsIHVpbnQxNl90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXVoX2dhdGhlcl91NjRvZmZzZXRfczY0KSkpCnN2aW50NjRfdCBzdmxkMXVoX2dhdGhlcl91NjRvZmZzZXRfczY0KHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1aF92bnVtX3UzMikpKQpzdnVpbnQzMl90IHN2bGQxdWhfdm51bV91MzIoc3Zib29sX3QsIHVpbnQxNl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXVoX3ZudW1fdTY0KSkpCnN2dWludDY0X3Qgc3ZsZDF1aF92bnVtX3U2NChzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdWhfdm51bV9zMzIpKSkKc3ZpbnQzMl90IHN2bGQxdWhfdm51bV9zMzIoc3Zib29sX3QsIHVpbnQxNl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXVoX3ZudW1fczY0KSkpCnN2aW50NjRfdCBzdmxkMXVoX3ZudW1fczY0KHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1aF91MzIpKSkKc3Z1aW50MzJfdCBzdmxkMXVoX3UzMihzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdWhfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZDF1aF91NjQoc3Zib29sX3QsIHVpbnQxNl90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXVoX3MzMikpKQpzdmludDMyX3Qgc3ZsZDF1aF9zMzIoc3Zib29sX3QsIHVpbnQxNl90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXVoX3M2NCkpKQpzdmludDY0X3Qgc3ZsZDF1aF9zNjQoc3Zib29sX3QsIHVpbnQxNl90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXV3X2dhdGhlcl91NjRiYXNlX2luZGV4X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGQxdXdfZ2F0aGVyX3U2NGJhc2VfaW5kZXhfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1d19nYXRoZXJfdTY0YmFzZV9pbmRleF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxdXdfZ2F0aGVyX3U2NGJhc2VfaW5kZXhfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1d19nYXRoZXJfdTY0YmFzZV9vZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZDF1d19nYXRoZXJfdTY0YmFzZV9vZmZzZXRfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1d19nYXRoZXJfdTY0YmFzZV9vZmZzZXRfczY0KSkpCnN2aW50NjRfdCBzdmxkMXV3X2dhdGhlcl91NjRiYXNlX29mZnNldF9zNjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXV3X2dhdGhlcl91NjRiYXNlX3U2NCkpKQpzdnVpbnQ2NF90IHN2bGQxdXdfZ2F0aGVyX3U2NGJhc2VfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1d19nYXRoZXJfdTY0YmFzZV9zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxdXdfZ2F0aGVyX3U2NGJhc2VfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1d19nYXRoZXJfczY0aW5kZXhfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZDF1d19nYXRoZXJfczY0aW5kZXhfdTY0KHN2Ym9vbF90LCB1aW50MzJfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXV3X2dhdGhlcl9zNjRpbmRleF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxdXdfZ2F0aGVyX3M2NGluZGV4X3M2NChzdmJvb2xfdCwgdWludDMyX3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1d19nYXRoZXJfdTY0aW5kZXhfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZDF1d19nYXRoZXJfdTY0aW5kZXhfdTY0KHN2Ym9vbF90LCB1aW50MzJfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1d19nYXRoZXJfdTY0aW5kZXhfczY0KSkpCnN2aW50NjRfdCBzdmxkMXV3X2dhdGhlcl91NjRpbmRleF9zNjQoc3Zib29sX3QsIHVpbnQzMl90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXV3X2dhdGhlcl9zNjRvZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZDF1d19nYXRoZXJfczY0b2Zmc2V0X3U2NChzdmJvb2xfdCwgdWludDMyX3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1d19nYXRoZXJfczY0b2Zmc2V0X3M2NCkpKQpzdmludDY0X3Qgc3ZsZDF1d19nYXRoZXJfczY0b2Zmc2V0X3M2NChzdmJvb2xfdCwgdWludDMyX3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1d19nYXRoZXJfdTY0b2Zmc2V0X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGQxdXdfZ2F0aGVyX3U2NG9mZnNldF91NjQoc3Zib29sX3QsIHVpbnQzMl90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXV3X2dhdGhlcl91NjRvZmZzZXRfczY0KSkpCnN2aW50NjRfdCBzdmxkMXV3X2dhdGhlcl91NjRvZmZzZXRfczY0KHN2Ym9vbF90LCB1aW50MzJfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1d192bnVtX3U2NCkpKQpzdnVpbnQ2NF90IHN2bGQxdXdfdm51bV91NjQoc3Zib29sX3QsIHVpbnQzMl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXV3X3ZudW1fczY0KSkpCnN2aW50NjRfdCBzdmxkMXV3X3ZudW1fczY0KHN2Ym9vbF90LCB1aW50MzJfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1d191NjQpKSkKc3Z1aW50NjRfdCBzdmxkMXV3X3U2NChzdmJvb2xfdCwgdWludDMyX3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdXdfczY0KSkpCnN2aW50NjRfdCBzdmxkMXV3X3M2NChzdmJvb2xfdCwgdWludDMyX3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQyX3U4KSkpCnN2dWludDh4Ml90IHN2bGQyX3U4KHN2Ym9vbF90LCB1aW50OF90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMl91MzIpKSkKc3Z1aW50MzJ4Ml90IHN2bGQyX3UzMihzdmJvb2xfdCwgdWludDMyX3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQyX3U2NCkpKQpzdnVpbnQ2NHgyX3Qgc3ZsZDJfdTY0KHN2Ym9vbF90LCB1aW50NjRfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDJfdTE2KSkpCnN2dWludDE2eDJfdCBzdmxkMl91MTYoc3Zib29sX3QsIHVpbnQxNl90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMl9zOCkpKQpzdmludDh4Ml90IHN2bGQyX3M4KHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQyX2Y2NCkpKQpzdmZsb2F0NjR4Ml90IHN2bGQyX2Y2NChzdmJvb2xfdCwgZmxvYXQ2NF90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMl9mMzIpKSkKc3ZmbG9hdDMyeDJfdCBzdmxkMl9mMzIoc3Zib29sX3QsIGZsb2F0MzJfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDJfZjE2KSkpCnN2ZmxvYXQxNngyX3Qgc3ZsZDJfZjE2KHN2Ym9vbF90LCBmbG9hdDE2X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQyX3MzMikpKQpzdmludDMyeDJfdCBzdmxkMl9zMzIoc3Zib29sX3QsIGludDMyX3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQyX3M2NCkpKQpzdmludDY0eDJfdCBzdmxkMl9zNjQoc3Zib29sX3QsIGludDY0X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQyX3MxNikpKQpzdmludDE2eDJfdCBzdmxkMl9zMTYoc3Zib29sX3QsIGludDE2X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQyX3ZudW1fdTgpKSkKc3Z1aW50OHgyX3Qgc3ZsZDJfdm51bV91OChzdmJvb2xfdCwgdWludDhfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDJfdm51bV91MzIpKSkKc3Z1aW50MzJ4Ml90IHN2bGQyX3ZudW1fdTMyKHN2Ym9vbF90LCB1aW50MzJfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDJfdm51bV91NjQpKSkKc3Z1aW50NjR4Ml90IHN2bGQyX3ZudW1fdTY0KHN2Ym9vbF90LCB1aW50NjRfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDJfdm51bV91MTYpKSkKc3Z1aW50MTZ4Ml90IHN2bGQyX3ZudW1fdTE2KHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDJfdm51bV9zOCkpKQpzdmludDh4Ml90IHN2bGQyX3ZudW1fczgoc3Zib29sX3QsIGludDhfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDJfdm51bV9mNjQpKSkKc3ZmbG9hdDY0eDJfdCBzdmxkMl92bnVtX2Y2NChzdmJvb2xfdCwgZmxvYXQ2NF90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMl92bnVtX2YzMikpKQpzdmZsb2F0MzJ4Ml90IHN2bGQyX3ZudW1fZjMyKHN2Ym9vbF90LCBmbG9hdDMyX3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQyX3ZudW1fZjE2KSkpCnN2ZmxvYXQxNngyX3Qgc3ZsZDJfdm51bV9mMTYoc3Zib29sX3QsIGZsb2F0MTZfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDJfdm51bV9zMzIpKSkKc3ZpbnQzMngyX3Qgc3ZsZDJfdm51bV9zMzIoc3Zib29sX3QsIGludDMyX3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQyX3ZudW1fczY0KSkpCnN2aW50NjR4Ml90IHN2bGQyX3ZudW1fczY0KHN2Ym9vbF90LCBpbnQ2NF90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMl92bnVtX3MxNikpKQpzdmludDE2eDJfdCBzdmxkMl92bnVtX3MxNihzdmJvb2xfdCwgaW50MTZfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDNfdTgpKSkKc3Z1aW50OHgzX3Qgc3ZsZDNfdTgoc3Zib29sX3QsIHVpbnQ4X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQzX3UzMikpKQpzdnVpbnQzMngzX3Qgc3ZsZDNfdTMyKHN2Ym9vbF90LCB1aW50MzJfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDNfdTY0KSkpCnN2dWludDY0eDNfdCBzdmxkM191NjQoc3Zib29sX3QsIHVpbnQ2NF90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkM191MTYpKSkKc3Z1aW50MTZ4M190IHN2bGQzX3UxNihzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQzX3M4KSkpCnN2aW50OHgzX3Qgc3ZsZDNfczgoc3Zib29sX3QsIGludDhfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDNfZjY0KSkpCnN2ZmxvYXQ2NHgzX3Qgc3ZsZDNfZjY0KHN2Ym9vbF90LCBmbG9hdDY0X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQzX2YzMikpKQpzdmZsb2F0MzJ4M190IHN2bGQzX2YzMihzdmJvb2xfdCwgZmxvYXQzMl90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkM19mMTYpKSkKc3ZmbG9hdDE2eDNfdCBzdmxkM19mMTYoc3Zib29sX3QsIGZsb2F0MTZfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDNfczMyKSkpCnN2aW50MzJ4M190IHN2bGQzX3MzMihzdmJvb2xfdCwgaW50MzJfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDNfczY0KSkpCnN2aW50NjR4M190IHN2bGQzX3M2NChzdmJvb2xfdCwgaW50NjRfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDNfczE2KSkpCnN2aW50MTZ4M190IHN2bGQzX3MxNihzdmJvb2xfdCwgaW50MTZfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDNfdm51bV91OCkpKQpzdnVpbnQ4eDNfdCBzdmxkM192bnVtX3U4KHN2Ym9vbF90LCB1aW50OF90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkM192bnVtX3UzMikpKQpzdnVpbnQzMngzX3Qgc3ZsZDNfdm51bV91MzIoc3Zib29sX3QsIHVpbnQzMl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkM192bnVtX3U2NCkpKQpzdnVpbnQ2NHgzX3Qgc3ZsZDNfdm51bV91NjQoc3Zib29sX3QsIHVpbnQ2NF90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkM192bnVtX3UxNikpKQpzdnVpbnQxNngzX3Qgc3ZsZDNfdm51bV91MTYoc3Zib29sX3QsIHVpbnQxNl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkM192bnVtX3M4KSkpCnN2aW50OHgzX3Qgc3ZsZDNfdm51bV9zOChzdmJvb2xfdCwgaW50OF90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkM192bnVtX2Y2NCkpKQpzdmZsb2F0NjR4M190IHN2bGQzX3ZudW1fZjY0KHN2Ym9vbF90LCBmbG9hdDY0X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQzX3ZudW1fZjMyKSkpCnN2ZmxvYXQzMngzX3Qgc3ZsZDNfdm51bV9mMzIoc3Zib29sX3QsIGZsb2F0MzJfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDNfdm51bV9mMTYpKSkKc3ZmbG9hdDE2eDNfdCBzdmxkM192bnVtX2YxNihzdmJvb2xfdCwgZmxvYXQxNl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkM192bnVtX3MzMikpKQpzdmludDMyeDNfdCBzdmxkM192bnVtX3MzMihzdmJvb2xfdCwgaW50MzJfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDNfdm51bV9zNjQpKSkKc3ZpbnQ2NHgzX3Qgc3ZsZDNfdm51bV9zNjQoc3Zib29sX3QsIGludDY0X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQzX3ZudW1fczE2KSkpCnN2aW50MTZ4M190IHN2bGQzX3ZudW1fczE2KHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkNF91OCkpKQpzdnVpbnQ4eDRfdCBzdmxkNF91OChzdmJvb2xfdCwgdWludDhfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDRfdTMyKSkpCnN2dWludDMyeDRfdCBzdmxkNF91MzIoc3Zib29sX3QsIHVpbnQzMl90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkNF91NjQpKSkKc3Z1aW50NjR4NF90IHN2bGQ0X3U2NChzdmJvb2xfdCwgdWludDY0X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQ0X3UxNikpKQpzdnVpbnQxNng0X3Qgc3ZsZDRfdTE2KHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDRfczgpKSkKc3ZpbnQ4eDRfdCBzdmxkNF9zOChzdmJvb2xfdCwgaW50OF90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkNF9mNjQpKSkKc3ZmbG9hdDY0eDRfdCBzdmxkNF9mNjQoc3Zib29sX3QsIGZsb2F0NjRfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDRfZjMyKSkpCnN2ZmxvYXQzMng0X3Qgc3ZsZDRfZjMyKHN2Ym9vbF90LCBmbG9hdDMyX3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQ0X2YxNikpKQpzdmZsb2F0MTZ4NF90IHN2bGQ0X2YxNihzdmJvb2xfdCwgZmxvYXQxNl90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkNF9zMzIpKSkKc3ZpbnQzMng0X3Qgc3ZsZDRfczMyKHN2Ym9vbF90LCBpbnQzMl90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkNF9zNjQpKSkKc3ZpbnQ2NHg0X3Qgc3ZsZDRfczY0KHN2Ym9vbF90LCBpbnQ2NF90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkNF9zMTYpKSkKc3ZpbnQxNng0X3Qgc3ZsZDRfczE2KHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkNF92bnVtX3U4KSkpCnN2dWludDh4NF90IHN2bGQ0X3ZudW1fdTgoc3Zib29sX3QsIHVpbnQ4X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQ0X3ZudW1fdTMyKSkpCnN2dWludDMyeDRfdCBzdmxkNF92bnVtX3UzMihzdmJvb2xfdCwgdWludDMyX3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQ0X3ZudW1fdTY0KSkpCnN2dWludDY0eDRfdCBzdmxkNF92bnVtX3U2NChzdmJvb2xfdCwgdWludDY0X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQ0X3ZudW1fdTE2KSkpCnN2dWludDE2eDRfdCBzdmxkNF92bnVtX3UxNihzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQ0X3ZudW1fczgpKSkKc3ZpbnQ4eDRfdCBzdmxkNF92bnVtX3M4KHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQ0X3ZudW1fZjY0KSkpCnN2ZmxvYXQ2NHg0X3Qgc3ZsZDRfdm51bV9mNjQoc3Zib29sX3QsIGZsb2F0NjRfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDRfdm51bV9mMzIpKSkKc3ZmbG9hdDMyeDRfdCBzdmxkNF92bnVtX2YzMihzdmJvb2xfdCwgZmxvYXQzMl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkNF92bnVtX2YxNikpKQpzdmZsb2F0MTZ4NF90IHN2bGQ0X3ZudW1fZjE2KHN2Ym9vbF90LCBmbG9hdDE2X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQ0X3ZudW1fczMyKSkpCnN2aW50MzJ4NF90IHN2bGQ0X3ZudW1fczMyKHN2Ym9vbF90LCBpbnQzMl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkNF92bnVtX3M2NCkpKQpzdmludDY0eDRfdCBzdmxkNF92bnVtX3M2NChzdmJvb2xfdCwgaW50NjRfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDRfdm51bV9zMTYpKSkKc3ZpbnQxNng0X3Qgc3ZsZDRfdm51bV9zMTYoc3Zib29sX3QsIGludDE2X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFfdTgpKSkKc3Z1aW50OF90IHN2bGRmZjFfdTgoc3Zib29sX3QsIHVpbnQ4X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZGZmMV91MzIoc3Zib29sX3QsIHVpbnQzMl90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRmZjFfdTY0KHN2Ym9vbF90LCB1aW50NjRfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMV91MTYpKSkKc3Z1aW50MTZfdCBzdmxkZmYxX3UxNihzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFfczgpKSkKc3ZpbnQ4X3Qgc3ZsZGZmMV9zOChzdmJvb2xfdCwgaW50OF90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2Y2NCkpKQpzdmZsb2F0NjRfdCBzdmxkZmYxX2Y2NChzdmJvb2xfdCwgZmxvYXQ2NF90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2YzMikpKQpzdmZsb2F0MzJfdCBzdmxkZmYxX2YzMihzdmJvb2xfdCwgZmxvYXQzMl90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2YxNikpKQpzdmZsb2F0MTZfdCBzdmxkZmYxX2YxNihzdmJvb2xfdCwgZmxvYXQxNl90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX3MzMikpKQpzdmludDMyX3Qgc3ZsZGZmMV9zMzIoc3Zib29sX3QsIGludDMyX3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFfczY0KSkpCnN2aW50NjRfdCBzdmxkZmYxX3M2NChzdmJvb2xfdCwgaW50NjRfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMV9zMTYpKSkKc3ZpbnQxNl90IHN2bGRmZjFfczE2KHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2dhdGhlcl91MzJiYXNlX2luZGV4X3UzMikpKQpzdnVpbnQzMl90IHN2bGRmZjFfZ2F0aGVyX3UzMmJhc2VfaW5kZXhfdTMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMV9nYXRoZXJfdTY0YmFzZV9pbmRleF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkZmYxX2dhdGhlcl91NjRiYXNlX2luZGV4X3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFfZ2F0aGVyX3U2NGJhc2VfaW5kZXhfZjY0KSkpCnN2ZmxvYXQ2NF90IHN2bGRmZjFfZ2F0aGVyX3U2NGJhc2VfaW5kZXhfZjY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMV9nYXRoZXJfdTMyYmFzZV9pbmRleF9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3ZsZGZmMV9nYXRoZXJfdTMyYmFzZV9pbmRleF9mMzIoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2dhdGhlcl91MzJiYXNlX2luZGV4X3MzMikpKQpzdmludDMyX3Qgc3ZsZGZmMV9nYXRoZXJfdTMyYmFzZV9pbmRleF9zMzIoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2dhdGhlcl91NjRiYXNlX2luZGV4X3M2NCkpKQpzdmludDY0X3Qgc3ZsZGZmMV9nYXRoZXJfdTY0YmFzZV9pbmRleF9zNjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2dhdGhlcl91MzJiYXNlX29mZnNldF91MzIpKSkKc3Z1aW50MzJfdCBzdmxkZmYxX2dhdGhlcl91MzJiYXNlX29mZnNldF91MzIoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2dhdGhlcl91NjRiYXNlX29mZnNldF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkZmYxX2dhdGhlcl91NjRiYXNlX29mZnNldF91NjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2dhdGhlcl91NjRiYXNlX29mZnNldF9mNjQpKSkKc3ZmbG9hdDY0X3Qgc3ZsZGZmMV9nYXRoZXJfdTY0YmFzZV9vZmZzZXRfZjY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMV9nYXRoZXJfdTMyYmFzZV9vZmZzZXRfZjMyKSkpCnN2ZmxvYXQzMl90IHN2bGRmZjFfZ2F0aGVyX3UzMmJhc2Vfb2Zmc2V0X2YzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFfZ2F0aGVyX3UzMmJhc2Vfb2Zmc2V0X3MzMikpKQpzdmludDMyX3Qgc3ZsZGZmMV9nYXRoZXJfdTMyYmFzZV9vZmZzZXRfczMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMV9nYXRoZXJfdTY0YmFzZV9vZmZzZXRfczY0KSkpCnN2aW50NjRfdCBzdmxkZmYxX2dhdGhlcl91NjRiYXNlX29mZnNldF9zNjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2dhdGhlcl91MzJiYXNlX3UzMikpKQpzdnVpbnQzMl90IHN2bGRmZjFfZ2F0aGVyX3UzMmJhc2VfdTMyKHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMV9nYXRoZXJfdTY0YmFzZV91NjQpKSkKc3Z1aW50NjRfdCBzdmxkZmYxX2dhdGhlcl91NjRiYXNlX3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFfZ2F0aGVyX3U2NGJhc2VfZjY0KSkpCnN2ZmxvYXQ2NF90IHN2bGRmZjFfZ2F0aGVyX3U2NGJhc2VfZjY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMV9nYXRoZXJfdTMyYmFzZV9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3ZsZGZmMV9nYXRoZXJfdTMyYmFzZV9mMzIoc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2dhdGhlcl91MzJiYXNlX3MzMikpKQpzdmludDMyX3Qgc3ZsZGZmMV9nYXRoZXJfdTMyYmFzZV9zMzIoc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2dhdGhlcl91NjRiYXNlX3M2NCkpKQpzdmludDY0X3Qgc3ZsZGZmMV9nYXRoZXJfdTY0YmFzZV9zNjQoc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2dhdGhlcl9zMzJpbmRleF91MzIpKSkKc3Z1aW50MzJfdCBzdmxkZmYxX2dhdGhlcl9zMzJpbmRleF91MzIoc3Zib29sX3QsIHVpbnQzMl90IGNvbnN0ICosIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFfZ2F0aGVyX3MzMmluZGV4X2YzMikpKQpzdmZsb2F0MzJfdCBzdmxkZmYxX2dhdGhlcl9zMzJpbmRleF9mMzIoc3Zib29sX3QsIGZsb2F0MzJfdCBjb25zdCAqLCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2dhdGhlcl9zMzJpbmRleF9zMzIpKSkKc3ZpbnQzMl90IHN2bGRmZjFfZ2F0aGVyX3MzMmluZGV4X3MzMihzdmJvb2xfdCwgaW50MzJfdCBjb25zdCAqLCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2dhdGhlcl91MzJpbmRleF91MzIpKSkKc3Z1aW50MzJfdCBzdmxkZmYxX2dhdGhlcl91MzJpbmRleF91MzIoc3Zib29sX3QsIHVpbnQzMl90IGNvbnN0ICosIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2dhdGhlcl91MzJpbmRleF9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3ZsZGZmMV9nYXRoZXJfdTMyaW5kZXhfZjMyKHN2Ym9vbF90LCBmbG9hdDMyX3QgY29uc3QgKiwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFfZ2F0aGVyX3UzMmluZGV4X3MzMikpKQpzdmludDMyX3Qgc3ZsZGZmMV9nYXRoZXJfdTMyaW5kZXhfczMyKHN2Ym9vbF90LCBpbnQzMl90IGNvbnN0ICosIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2dhdGhlcl9zNjRpbmRleF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkZmYxX2dhdGhlcl9zNjRpbmRleF91NjQoc3Zib29sX3QsIHVpbnQ2NF90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFfZ2F0aGVyX3M2NGluZGV4X2Y2NCkpKQpzdmZsb2F0NjRfdCBzdmxkZmYxX2dhdGhlcl9zNjRpbmRleF9mNjQoc3Zib29sX3QsIGZsb2F0NjRfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2dhdGhlcl9zNjRpbmRleF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRmZjFfZ2F0aGVyX3M2NGluZGV4X3M2NChzdmJvb2xfdCwgaW50NjRfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2dhdGhlcl91NjRpbmRleF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkZmYxX2dhdGhlcl91NjRpbmRleF91NjQoc3Zib29sX3QsIHVpbnQ2NF90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2dhdGhlcl91NjRpbmRleF9mNjQpKSkKc3ZmbG9hdDY0X3Qgc3ZsZGZmMV9nYXRoZXJfdTY0aW5kZXhfZjY0KHN2Ym9vbF90LCBmbG9hdDY0X3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFfZ2F0aGVyX3U2NGluZGV4X3M2NCkpKQpzdmludDY0X3Qgc3ZsZGZmMV9nYXRoZXJfdTY0aW5kZXhfczY0KHN2Ym9vbF90LCBpbnQ2NF90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2dhdGhlcl9zMzJvZmZzZXRfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZGZmMV9nYXRoZXJfczMyb2Zmc2V0X3UzMihzdmJvb2xfdCwgdWludDMyX3QgY29uc3QgKiwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMV9nYXRoZXJfczMyb2Zmc2V0X2YzMikpKQpzdmZsb2F0MzJfdCBzdmxkZmYxX2dhdGhlcl9zMzJvZmZzZXRfZjMyKHN2Ym9vbF90LCBmbG9hdDMyX3QgY29uc3QgKiwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMV9nYXRoZXJfczMyb2Zmc2V0X3MzMikpKQpzdmludDMyX3Qgc3ZsZGZmMV9nYXRoZXJfczMyb2Zmc2V0X3MzMihzdmJvb2xfdCwgaW50MzJfdCBjb25zdCAqLCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2dhdGhlcl91MzJvZmZzZXRfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZGZmMV9nYXRoZXJfdTMyb2Zmc2V0X3UzMihzdmJvb2xfdCwgdWludDMyX3QgY29uc3QgKiwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFfZ2F0aGVyX3UzMm9mZnNldF9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3ZsZGZmMV9nYXRoZXJfdTMyb2Zmc2V0X2YzMihzdmJvb2xfdCwgZmxvYXQzMl90IGNvbnN0ICosIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2dhdGhlcl91MzJvZmZzZXRfczMyKSkpCnN2aW50MzJfdCBzdmxkZmYxX2dhdGhlcl91MzJvZmZzZXRfczMyKHN2Ym9vbF90LCBpbnQzMl90IGNvbnN0ICosIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2dhdGhlcl9zNjRvZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZGZmMV9nYXRoZXJfczY0b2Zmc2V0X3U2NChzdmJvb2xfdCwgdWludDY0X3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMV9nYXRoZXJfczY0b2Zmc2V0X2Y2NCkpKQpzdmZsb2F0NjRfdCBzdmxkZmYxX2dhdGhlcl9zNjRvZmZzZXRfZjY0KHN2Ym9vbF90LCBmbG9hdDY0X3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMV9nYXRoZXJfczY0b2Zmc2V0X3M2NCkpKQpzdmludDY0X3Qgc3ZsZGZmMV9nYXRoZXJfczY0b2Zmc2V0X3M2NChzdmJvb2xfdCwgaW50NjRfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2dhdGhlcl91NjRvZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZGZmMV9nYXRoZXJfdTY0b2Zmc2V0X3U2NChzdmJvb2xfdCwgdWludDY0X3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFfZ2F0aGVyX3U2NG9mZnNldF9mNjQpKSkKc3ZmbG9hdDY0X3Qgc3ZsZGZmMV9nYXRoZXJfdTY0b2Zmc2V0X2Y2NChzdmJvb2xfdCwgZmxvYXQ2NF90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2dhdGhlcl91NjRvZmZzZXRfczY0KSkpCnN2aW50NjRfdCBzdmxkZmYxX2dhdGhlcl91NjRvZmZzZXRfczY0KHN2Ym9vbF90LCBpbnQ2NF90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX3ZudW1fdTgpKSkKc3Z1aW50OF90IHN2bGRmZjFfdm51bV91OChzdmJvb2xfdCwgdWludDhfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMV92bnVtX3UzMikpKQpzdnVpbnQzMl90IHN2bGRmZjFfdm51bV91MzIoc3Zib29sX3QsIHVpbnQzMl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX3ZudW1fdTY0KSkpCnN2dWludDY0X3Qgc3ZsZGZmMV92bnVtX3U2NChzdmJvb2xfdCwgdWludDY0X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFfdm51bV91MTYpKSkKc3Z1aW50MTZfdCBzdmxkZmYxX3ZudW1fdTE2KHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMV92bnVtX3M4KSkpCnN2aW50OF90IHN2bGRmZjFfdm51bV9zOChzdmJvb2xfdCwgaW50OF90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX3ZudW1fZjY0KSkpCnN2ZmxvYXQ2NF90IHN2bGRmZjFfdm51bV9mNjQoc3Zib29sX3QsIGZsb2F0NjRfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMV92bnVtX2YzMikpKQpzdmZsb2F0MzJfdCBzdmxkZmYxX3ZudW1fZjMyKHN2Ym9vbF90LCBmbG9hdDMyX3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFfdm51bV9mMTYpKSkKc3ZmbG9hdDE2X3Qgc3ZsZGZmMV92bnVtX2YxNihzdmJvb2xfdCwgZmxvYXQxNl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX3ZudW1fczMyKSkpCnN2aW50MzJfdCBzdmxkZmYxX3ZudW1fczMyKHN2Ym9vbF90LCBpbnQzMl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX3ZudW1fczY0KSkpCnN2aW50NjRfdCBzdmxkZmYxX3ZudW1fczY0KHN2Ym9vbF90LCBpbnQ2NF90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX3ZudW1fczE2KSkpCnN2aW50MTZfdCBzdmxkZmYxX3ZudW1fczE2KHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc2JfZ2F0aGVyX3UzMmJhc2Vfb2Zmc2V0X3UzMikpKQpzdnVpbnQzMl90IHN2bGRmZjFzYl9nYXRoZXJfdTMyYmFzZV9vZmZzZXRfdTMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXNiX2dhdGhlcl91NjRiYXNlX29mZnNldF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkZmYxc2JfZ2F0aGVyX3U2NGJhc2Vfb2Zmc2V0X3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzYl9nYXRoZXJfdTMyYmFzZV9vZmZzZXRfczMyKSkpCnN2aW50MzJfdCBzdmxkZmYxc2JfZ2F0aGVyX3UzMmJhc2Vfb2Zmc2V0X3MzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzYl9nYXRoZXJfdTY0YmFzZV9vZmZzZXRfczY0KSkpCnN2aW50NjRfdCBzdmxkZmYxc2JfZ2F0aGVyX3U2NGJhc2Vfb2Zmc2V0X3M2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzYl9nYXRoZXJfdTMyYmFzZV91MzIpKSkKc3Z1aW50MzJfdCBzdmxkZmYxc2JfZ2F0aGVyX3UzMmJhc2VfdTMyKHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXNiX2dhdGhlcl91NjRiYXNlX3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRmZjFzYl9nYXRoZXJfdTY0YmFzZV91NjQoc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc2JfZ2F0aGVyX3UzMmJhc2VfczMyKSkpCnN2aW50MzJfdCBzdmxkZmYxc2JfZ2F0aGVyX3UzMmJhc2VfczMyKHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXNiX2dhdGhlcl91NjRiYXNlX3M2NCkpKQpzdmludDY0X3Qgc3ZsZGZmMXNiX2dhdGhlcl91NjRiYXNlX3M2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzYl9nYXRoZXJfczMyb2Zmc2V0X3UzMikpKQpzdnVpbnQzMl90IHN2bGRmZjFzYl9nYXRoZXJfczMyb2Zmc2V0X3UzMihzdmJvb2xfdCwgaW50OF90IGNvbnN0ICosIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzYl9nYXRoZXJfczMyb2Zmc2V0X3MzMikpKQpzdmludDMyX3Qgc3ZsZGZmMXNiX2dhdGhlcl9zMzJvZmZzZXRfczMyKHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKiwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXNiX2dhdGhlcl91MzJvZmZzZXRfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZGZmMXNiX2dhdGhlcl91MzJvZmZzZXRfdTMyKHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKiwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzYl9nYXRoZXJfdTMyb2Zmc2V0X3MzMikpKQpzdmludDMyX3Qgc3ZsZGZmMXNiX2dhdGhlcl91MzJvZmZzZXRfczMyKHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKiwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzYl9nYXRoZXJfczY0b2Zmc2V0X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRmZjFzYl9nYXRoZXJfczY0b2Zmc2V0X3U2NChzdmJvb2xfdCwgaW50OF90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzYl9nYXRoZXJfczY0b2Zmc2V0X3M2NCkpKQpzdmludDY0X3Qgc3ZsZGZmMXNiX2dhdGhlcl9zNjRvZmZzZXRfczY0KHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXNiX2dhdGhlcl91NjRvZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZGZmMXNiX2dhdGhlcl91NjRvZmZzZXRfdTY0KHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzYl9nYXRoZXJfdTY0b2Zmc2V0X3M2NCkpKQpzdmludDY0X3Qgc3ZsZGZmMXNiX2dhdGhlcl91NjRvZmZzZXRfczY0KHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzYl92bnVtX3UzMikpKQpzdnVpbnQzMl90IHN2bGRmZjFzYl92bnVtX3UzMihzdmJvb2xfdCwgaW50OF90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc2Jfdm51bV91NjQpKSkKc3Z1aW50NjRfdCBzdmxkZmYxc2Jfdm51bV91NjQoc3Zib29sX3QsIGludDhfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXNiX3ZudW1fdTE2KSkpCnN2dWludDE2X3Qgc3ZsZGZmMXNiX3ZudW1fdTE2KHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzYl92bnVtX3MzMikpKQpzdmludDMyX3Qgc3ZsZGZmMXNiX3ZudW1fczMyKHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzYl92bnVtX3M2NCkpKQpzdmludDY0X3Qgc3ZsZGZmMXNiX3ZudW1fczY0KHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzYl92bnVtX3MxNikpKQpzdmludDE2X3Qgc3ZsZGZmMXNiX3ZudW1fczE2KHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzYl91MzIpKSkKc3Z1aW50MzJfdCBzdmxkZmYxc2JfdTMyKHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzYl91NjQpKSkKc3Z1aW50NjRfdCBzdmxkZmYxc2JfdTY0KHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzYl91MTYpKSkKc3Z1aW50MTZfdCBzdmxkZmYxc2JfdTE2KHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzYl9zMzIpKSkKc3ZpbnQzMl90IHN2bGRmZjFzYl9zMzIoc3Zib29sX3QsIGludDhfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXNiX3M2NCkpKQpzdmludDY0X3Qgc3ZsZGZmMXNiX3M2NChzdmJvb2xfdCwgaW50OF90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc2JfczE2KSkpCnN2aW50MTZfdCBzdmxkZmYxc2JfczE2KHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzaF9nYXRoZXJfdTMyYmFzZV9pbmRleF91MzIpKSkKc3Z1aW50MzJfdCBzdmxkZmYxc2hfZ2F0aGVyX3UzMmJhc2VfaW5kZXhfdTMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXNoX2dhdGhlcl91NjRiYXNlX2luZGV4X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRmZjFzaF9nYXRoZXJfdTY0YmFzZV9pbmRleF91NjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc2hfZ2F0aGVyX3UzMmJhc2VfaW5kZXhfczMyKSkpCnN2aW50MzJfdCBzdmxkZmYxc2hfZ2F0aGVyX3UzMmJhc2VfaW5kZXhfczMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXNoX2dhdGhlcl91NjRiYXNlX2luZGV4X3M2NCkpKQpzdmludDY0X3Qgc3ZsZGZmMXNoX2dhdGhlcl91NjRiYXNlX2luZGV4X3M2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzaF9nYXRoZXJfdTMyYmFzZV9vZmZzZXRfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZGZmMXNoX2dhdGhlcl91MzJiYXNlX29mZnNldF91MzIoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc2hfZ2F0aGVyX3U2NGJhc2Vfb2Zmc2V0X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRmZjFzaF9nYXRoZXJfdTY0YmFzZV9vZmZzZXRfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXNoX2dhdGhlcl91MzJiYXNlX29mZnNldF9zMzIpKSkKc3ZpbnQzMl90IHN2bGRmZjFzaF9nYXRoZXJfdTMyYmFzZV9vZmZzZXRfczMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXNoX2dhdGhlcl91NjRiYXNlX29mZnNldF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRmZjFzaF9nYXRoZXJfdTY0YmFzZV9vZmZzZXRfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXNoX2dhdGhlcl91MzJiYXNlX3UzMikpKQpzdnVpbnQzMl90IHN2bGRmZjFzaF9nYXRoZXJfdTMyYmFzZV91MzIoc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc2hfZ2F0aGVyX3U2NGJhc2VfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZGZmMXNoX2dhdGhlcl91NjRiYXNlX3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzaF9nYXRoZXJfdTMyYmFzZV9zMzIpKSkKc3ZpbnQzMl90IHN2bGRmZjFzaF9nYXRoZXJfdTMyYmFzZV9zMzIoc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc2hfZ2F0aGVyX3U2NGJhc2VfczY0KSkpCnN2aW50NjRfdCBzdmxkZmYxc2hfZ2F0aGVyX3U2NGJhc2VfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXNoX2dhdGhlcl9zMzJpbmRleF91MzIpKSkKc3Z1aW50MzJfdCBzdmxkZmYxc2hfZ2F0aGVyX3MzMmluZGV4X3UzMihzdmJvb2xfdCwgaW50MTZfdCBjb25zdCAqLCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc2hfZ2F0aGVyX3MzMmluZGV4X3MzMikpKQpzdmludDMyX3Qgc3ZsZGZmMXNoX2dhdGhlcl9zMzJpbmRleF9zMzIoc3Zib29sX3QsIGludDE2X3QgY29uc3QgKiwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXNoX2dhdGhlcl91MzJpbmRleF91MzIpKSkKc3Z1aW50MzJfdCBzdmxkZmYxc2hfZ2F0aGVyX3UzMmluZGV4X3UzMihzdmJvb2xfdCwgaW50MTZfdCBjb25zdCAqLCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXNoX2dhdGhlcl91MzJpbmRleF9zMzIpKSkKc3ZpbnQzMl90IHN2bGRmZjFzaF9nYXRoZXJfdTMyaW5kZXhfczMyKHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICosIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc2hfZ2F0aGVyX3M2NGluZGV4X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRmZjFzaF9nYXRoZXJfczY0aW5kZXhfdTY0KHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzaF9nYXRoZXJfczY0aW5kZXhfczY0KSkpCnN2aW50NjRfdCBzdmxkZmYxc2hfZ2F0aGVyX3M2NGluZGV4X3M2NChzdmJvb2xfdCwgaW50MTZfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc2hfZ2F0aGVyX3U2NGluZGV4X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRmZjFzaF9nYXRoZXJfdTY0aW5kZXhfdTY0KHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc2hfZ2F0aGVyX3U2NGluZGV4X3M2NCkpKQpzdmludDY0X3Qgc3ZsZGZmMXNoX2dhdGhlcl91NjRpbmRleF9zNjQoc3Zib29sX3QsIGludDE2X3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzaF9nYXRoZXJfczMyb2Zmc2V0X3UzMikpKQpzdnVpbnQzMl90IHN2bGRmZjFzaF9nYXRoZXJfczMyb2Zmc2V0X3UzMihzdmJvb2xfdCwgaW50MTZfdCBjb25zdCAqLCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc2hfZ2F0aGVyX3MzMm9mZnNldF9zMzIpKSkKc3ZpbnQzMl90IHN2bGRmZjFzaF9nYXRoZXJfczMyb2Zmc2V0X3MzMihzdmJvb2xfdCwgaW50MTZfdCBjb25zdCAqLCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc2hfZ2F0aGVyX3UzMm9mZnNldF91MzIpKSkKc3Z1aW50MzJfdCBzdmxkZmYxc2hfZ2F0aGVyX3UzMm9mZnNldF91MzIoc3Zib29sX3QsIGludDE2X3QgY29uc3QgKiwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzaF9nYXRoZXJfdTMyb2Zmc2V0X3MzMikpKQpzdmludDMyX3Qgc3ZsZGZmMXNoX2dhdGhlcl91MzJvZmZzZXRfczMyKHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICosIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc2hfZ2F0aGVyX3M2NG9mZnNldF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkZmYxc2hfZ2F0aGVyX3M2NG9mZnNldF91NjQoc3Zib29sX3QsIGludDE2X3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXNoX2dhdGhlcl9zNjRvZmZzZXRfczY0KSkpCnN2aW50NjRfdCBzdmxkZmYxc2hfZ2F0aGVyX3M2NG9mZnNldF9zNjQoc3Zib29sX3QsIGludDE2X3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXNoX2dhdGhlcl91NjRvZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZGZmMXNoX2dhdGhlcl91NjRvZmZzZXRfdTY0KHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc2hfZ2F0aGVyX3U2NG9mZnNldF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRmZjFzaF9nYXRoZXJfdTY0b2Zmc2V0X3M2NChzdmJvb2xfdCwgaW50MTZfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXNoX3ZudW1fdTMyKSkpCnN2dWludDMyX3Qgc3ZsZGZmMXNoX3ZudW1fdTMyKHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc2hfdm51bV91NjQpKSkKc3Z1aW50NjRfdCBzdmxkZmYxc2hfdm51bV91NjQoc3Zib29sX3QsIGludDE2X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzaF92bnVtX3MzMikpKQpzdmludDMyX3Qgc3ZsZGZmMXNoX3ZudW1fczMyKHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc2hfdm51bV9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRmZjFzaF92bnVtX3M2NChzdmJvb2xfdCwgaW50MTZfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXNoX3UzMikpKQpzdnVpbnQzMl90IHN2bGRmZjFzaF91MzIoc3Zib29sX3QsIGludDE2X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzaF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkZmYxc2hfdTY0KHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc2hfczMyKSkpCnN2aW50MzJfdCBzdmxkZmYxc2hfczMyKHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc2hfczY0KSkpCnN2aW50NjRfdCBzdmxkZmYxc2hfczY0KHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc3dfZ2F0aGVyX3U2NGJhc2VfaW5kZXhfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZGZmMXN3X2dhdGhlcl91NjRiYXNlX2luZGV4X3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzd19nYXRoZXJfdTY0YmFzZV9pbmRleF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRmZjFzd19nYXRoZXJfdTY0YmFzZV9pbmRleF9zNjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc3dfZ2F0aGVyX3U2NGJhc2Vfb2Zmc2V0X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRmZjFzd19nYXRoZXJfdTY0YmFzZV9vZmZzZXRfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXN3X2dhdGhlcl91NjRiYXNlX29mZnNldF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRmZjFzd19nYXRoZXJfdTY0YmFzZV9vZmZzZXRfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXN3X2dhdGhlcl91NjRiYXNlX3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRmZjFzd19nYXRoZXJfdTY0YmFzZV91NjQoc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc3dfZ2F0aGVyX3U2NGJhc2VfczY0KSkpCnN2aW50NjRfdCBzdmxkZmYxc3dfZ2F0aGVyX3U2NGJhc2VfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXN3X2dhdGhlcl9zNjRpbmRleF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkZmYxc3dfZ2F0aGVyX3M2NGluZGV4X3U2NChzdmJvb2xfdCwgaW50MzJfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc3dfZ2F0aGVyX3M2NGluZGV4X3M2NCkpKQpzdmludDY0X3Qgc3ZsZGZmMXN3X2dhdGhlcl9zNjRpbmRleF9zNjQoc3Zib29sX3QsIGludDMyX3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXN3X2dhdGhlcl91NjRpbmRleF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkZmYxc3dfZ2F0aGVyX3U2NGluZGV4X3U2NChzdmJvb2xfdCwgaW50MzJfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXN3X2dhdGhlcl91NjRpbmRleF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRmZjFzd19nYXRoZXJfdTY0aW5kZXhfczY0KHN2Ym9vbF90LCBpbnQzMl90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc3dfZ2F0aGVyX3M2NG9mZnNldF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkZmYxc3dfZ2F0aGVyX3M2NG9mZnNldF91NjQoc3Zib29sX3QsIGludDMyX3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXN3X2dhdGhlcl9zNjRvZmZzZXRfczY0KSkpCnN2aW50NjRfdCBzdmxkZmYxc3dfZ2F0aGVyX3M2NG9mZnNldF9zNjQoc3Zib29sX3QsIGludDMyX3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXN3X2dhdGhlcl91NjRvZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZGZmMXN3X2dhdGhlcl91NjRvZmZzZXRfdTY0KHN2Ym9vbF90LCBpbnQzMl90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc3dfZ2F0aGVyX3U2NG9mZnNldF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRmZjFzd19nYXRoZXJfdTY0b2Zmc2V0X3M2NChzdmJvb2xfdCwgaW50MzJfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXN3X3ZudW1fdTY0KSkpCnN2dWludDY0X3Qgc3ZsZGZmMXN3X3ZudW1fdTY0KHN2Ym9vbF90LCBpbnQzMl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc3dfdm51bV9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRmZjFzd192bnVtX3M2NChzdmJvb2xfdCwgaW50MzJfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXN3X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRmZjFzd191NjQoc3Zib29sX3QsIGludDMyX3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzd19zNjQpKSkKc3ZpbnQ2NF90IHN2bGRmZjFzd19zNjQoc3Zib29sX3QsIGludDMyX3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1Yl9nYXRoZXJfdTMyYmFzZV9vZmZzZXRfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZGZmMXViX2dhdGhlcl91MzJiYXNlX29mZnNldF91MzIoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxdWJfZ2F0aGVyX3U2NGJhc2Vfb2Zmc2V0X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRmZjF1Yl9nYXRoZXJfdTY0YmFzZV9vZmZzZXRfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXViX2dhdGhlcl91MzJiYXNlX29mZnNldF9zMzIpKSkKc3ZpbnQzMl90IHN2bGRmZjF1Yl9nYXRoZXJfdTMyYmFzZV9vZmZzZXRfczMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXViX2dhdGhlcl91NjRiYXNlX29mZnNldF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRmZjF1Yl9nYXRoZXJfdTY0YmFzZV9vZmZzZXRfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXViX2dhdGhlcl91MzJiYXNlX3UzMikpKQpzdnVpbnQzMl90IHN2bGRmZjF1Yl9nYXRoZXJfdTMyYmFzZV91MzIoc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxdWJfZ2F0aGVyX3U2NGJhc2VfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZGZmMXViX2dhdGhlcl91NjRiYXNlX3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1Yl9nYXRoZXJfdTMyYmFzZV9zMzIpKSkKc3ZpbnQzMl90IHN2bGRmZjF1Yl9nYXRoZXJfdTMyYmFzZV9zMzIoc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxdWJfZ2F0aGVyX3U2NGJhc2VfczY0KSkpCnN2aW50NjRfdCBzdmxkZmYxdWJfZ2F0aGVyX3U2NGJhc2VfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXViX2dhdGhlcl9zMzJvZmZzZXRfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZGZmMXViX2dhdGhlcl9zMzJvZmZzZXRfdTMyKHN2Ym9vbF90LCB1aW50OF90IGNvbnN0ICosIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1Yl9nYXRoZXJfczMyb2Zmc2V0X3MzMikpKQpzdmludDMyX3Qgc3ZsZGZmMXViX2dhdGhlcl9zMzJvZmZzZXRfczMyKHN2Ym9vbF90LCB1aW50OF90IGNvbnN0ICosIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1Yl9nYXRoZXJfdTMyb2Zmc2V0X3UzMikpKQpzdnVpbnQzMl90IHN2bGRmZjF1Yl9nYXRoZXJfdTMyb2Zmc2V0X3UzMihzdmJvb2xfdCwgdWludDhfdCBjb25zdCAqLCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXViX2dhdGhlcl91MzJvZmZzZXRfczMyKSkpCnN2aW50MzJfdCBzdmxkZmYxdWJfZ2F0aGVyX3UzMm9mZnNldF9zMzIoc3Zib29sX3QsIHVpbnQ4X3QgY29uc3QgKiwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1Yl9nYXRoZXJfczY0b2Zmc2V0X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRmZjF1Yl9nYXRoZXJfczY0b2Zmc2V0X3U2NChzdmJvb2xfdCwgdWludDhfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxdWJfZ2F0aGVyX3M2NG9mZnNldF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRmZjF1Yl9nYXRoZXJfczY0b2Zmc2V0X3M2NChzdmJvb2xfdCwgdWludDhfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxdWJfZ2F0aGVyX3U2NG9mZnNldF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkZmYxdWJfZ2F0aGVyX3U2NG9mZnNldF91NjQoc3Zib29sX3QsIHVpbnQ4X3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1Yl9nYXRoZXJfdTY0b2Zmc2V0X3M2NCkpKQpzdmludDY0X3Qgc3ZsZGZmMXViX2dhdGhlcl91NjRvZmZzZXRfczY0KHN2Ym9vbF90LCB1aW50OF90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxdWJfdm51bV91MzIpKSkKc3Z1aW50MzJfdCBzdmxkZmYxdWJfdm51bV91MzIoc3Zib29sX3QsIHVpbnQ4X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1Yl92bnVtX3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRmZjF1Yl92bnVtX3U2NChzdmJvb2xfdCwgdWludDhfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXViX3ZudW1fdTE2KSkpCnN2dWludDE2X3Qgc3ZsZGZmMXViX3ZudW1fdTE2KHN2Ym9vbF90LCB1aW50OF90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxdWJfdm51bV9zMzIpKSkKc3ZpbnQzMl90IHN2bGRmZjF1Yl92bnVtX3MzMihzdmJvb2xfdCwgdWludDhfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXViX3ZudW1fczY0KSkpCnN2aW50NjRfdCBzdmxkZmYxdWJfdm51bV9zNjQoc3Zib29sX3QsIHVpbnQ4X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1Yl92bnVtX3MxNikpKQpzdmludDE2X3Qgc3ZsZGZmMXViX3ZudW1fczE2KHN2Ym9vbF90LCB1aW50OF90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxdWJfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZGZmMXViX3UzMihzdmJvb2xfdCwgdWludDhfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXViX3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRmZjF1Yl91NjQoc3Zib29sX3QsIHVpbnQ4X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1Yl91MTYpKSkKc3Z1aW50MTZfdCBzdmxkZmYxdWJfdTE2KHN2Ym9vbF90LCB1aW50OF90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxdWJfczMyKSkpCnN2aW50MzJfdCBzdmxkZmYxdWJfczMyKHN2Ym9vbF90LCB1aW50OF90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxdWJfczY0KSkpCnN2aW50NjRfdCBzdmxkZmYxdWJfczY0KHN2Ym9vbF90LCB1aW50OF90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxdWJfczE2KSkpCnN2aW50MTZfdCBzdmxkZmYxdWJfczE2KHN2Ym9vbF90LCB1aW50OF90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxdWhfZ2F0aGVyX3UzMmJhc2VfaW5kZXhfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZGZmMXVoX2dhdGhlcl91MzJiYXNlX2luZGV4X3UzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1aF9nYXRoZXJfdTY0YmFzZV9pbmRleF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkZmYxdWhfZ2F0aGVyX3U2NGJhc2VfaW5kZXhfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXVoX2dhdGhlcl91MzJiYXNlX2luZGV4X3MzMikpKQpzdmludDMyX3Qgc3ZsZGZmMXVoX2dhdGhlcl91MzJiYXNlX2luZGV4X3MzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1aF9nYXRoZXJfdTY0YmFzZV9pbmRleF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRmZjF1aF9nYXRoZXJfdTY0YmFzZV9pbmRleF9zNjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxdWhfZ2F0aGVyX3UzMmJhc2Vfb2Zmc2V0X3UzMikpKQpzdnVpbnQzMl90IHN2bGRmZjF1aF9nYXRoZXJfdTMyYmFzZV9vZmZzZXRfdTMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXVoX2dhdGhlcl91NjRiYXNlX29mZnNldF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkZmYxdWhfZ2F0aGVyX3U2NGJhc2Vfb2Zmc2V0X3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1aF9nYXRoZXJfdTMyYmFzZV9vZmZzZXRfczMyKSkpCnN2aW50MzJfdCBzdmxkZmYxdWhfZ2F0aGVyX3UzMmJhc2Vfb2Zmc2V0X3MzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1aF9nYXRoZXJfdTY0YmFzZV9vZmZzZXRfczY0KSkpCnN2aW50NjRfdCBzdmxkZmYxdWhfZ2F0aGVyX3U2NGJhc2Vfb2Zmc2V0X3M2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1aF9nYXRoZXJfdTMyYmFzZV91MzIpKSkKc3Z1aW50MzJfdCBzdmxkZmYxdWhfZ2F0aGVyX3UzMmJhc2VfdTMyKHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXVoX2dhdGhlcl91NjRiYXNlX3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRmZjF1aF9nYXRoZXJfdTY0YmFzZV91NjQoc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxdWhfZ2F0aGVyX3UzMmJhc2VfczMyKSkpCnN2aW50MzJfdCBzdmxkZmYxdWhfZ2F0aGVyX3UzMmJhc2VfczMyKHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXVoX2dhdGhlcl91NjRiYXNlX3M2NCkpKQpzdmludDY0X3Qgc3ZsZGZmMXVoX2dhdGhlcl91NjRiYXNlX3M2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1aF9nYXRoZXJfczMyaW5kZXhfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZGZmMXVoX2dhdGhlcl9zMzJpbmRleF91MzIoc3Zib29sX3QsIHVpbnQxNl90IGNvbnN0ICosIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1aF9nYXRoZXJfczMyaW5kZXhfczMyKSkpCnN2aW50MzJfdCBzdmxkZmYxdWhfZ2F0aGVyX3MzMmluZGV4X3MzMihzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKiwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXVoX2dhdGhlcl91MzJpbmRleF91MzIpKSkKc3Z1aW50MzJfdCBzdmxkZmYxdWhfZ2F0aGVyX3UzMmluZGV4X3UzMihzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKiwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1aF9nYXRoZXJfdTMyaW5kZXhfczMyKSkpCnN2aW50MzJfdCBzdmxkZmYxdWhfZ2F0aGVyX3UzMmluZGV4X3MzMihzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKiwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1aF9nYXRoZXJfczY0aW5kZXhfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZGZmMXVoX2dhdGhlcl9zNjRpbmRleF91NjQoc3Zib29sX3QsIHVpbnQxNl90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1aF9nYXRoZXJfczY0aW5kZXhfczY0KSkpCnN2aW50NjRfdCBzdmxkZmYxdWhfZ2F0aGVyX3M2NGluZGV4X3M2NChzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXVoX2dhdGhlcl91NjRpbmRleF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkZmYxdWhfZ2F0aGVyX3U2NGluZGV4X3U2NChzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1aF9nYXRoZXJfdTY0aW5kZXhfczY0KSkpCnN2aW50NjRfdCBzdmxkZmYxdWhfZ2F0aGVyX3U2NGluZGV4X3M2NChzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1aF9nYXRoZXJfczMyb2Zmc2V0X3UzMikpKQpzdnVpbnQzMl90IHN2bGRmZjF1aF9nYXRoZXJfczMyb2Zmc2V0X3UzMihzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKiwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXVoX2dhdGhlcl9zMzJvZmZzZXRfczMyKSkpCnN2aW50MzJfdCBzdmxkZmYxdWhfZ2F0aGVyX3MzMm9mZnNldF9zMzIoc3Zib29sX3QsIHVpbnQxNl90IGNvbnN0ICosIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1aF9nYXRoZXJfdTMyb2Zmc2V0X3UzMikpKQpzdnVpbnQzMl90IHN2bGRmZjF1aF9nYXRoZXJfdTMyb2Zmc2V0X3UzMihzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKiwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1aF9nYXRoZXJfdTMyb2Zmc2V0X3MzMikpKQpzdmludDMyX3Qgc3ZsZGZmMXVoX2dhdGhlcl91MzJvZmZzZXRfczMyKHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqLCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXVoX2dhdGhlcl9zNjRvZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZGZmMXVoX2dhdGhlcl9zNjRvZmZzZXRfdTY0KHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxdWhfZ2F0aGVyX3M2NG9mZnNldF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRmZjF1aF9nYXRoZXJfczY0b2Zmc2V0X3M2NChzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXVoX2dhdGhlcl91NjRvZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZGZmMXVoX2dhdGhlcl91NjRvZmZzZXRfdTY0KHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXVoX2dhdGhlcl91NjRvZmZzZXRfczY0KSkpCnN2aW50NjRfdCBzdmxkZmYxdWhfZ2F0aGVyX3U2NG9mZnNldF9zNjQoc3Zib29sX3QsIHVpbnQxNl90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxdWhfdm51bV91MzIpKSkKc3Z1aW50MzJfdCBzdmxkZmYxdWhfdm51bV91MzIoc3Zib29sX3QsIHVpbnQxNl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxdWhfdm51bV91NjQpKSkKc3Z1aW50NjRfdCBzdmxkZmYxdWhfdm51bV91NjQoc3Zib29sX3QsIHVpbnQxNl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxdWhfdm51bV9zMzIpKSkKc3ZpbnQzMl90IHN2bGRmZjF1aF92bnVtX3MzMihzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1aF92bnVtX3M2NCkpKQpzdmludDY0X3Qgc3ZsZGZmMXVoX3ZudW1fczY0KHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXVoX3UzMikpKQpzdnVpbnQzMl90IHN2bGRmZjF1aF91MzIoc3Zib29sX3QsIHVpbnQxNl90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxdWhfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZGZmMXVoX3U2NChzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1aF9zMzIpKSkKc3ZpbnQzMl90IHN2bGRmZjF1aF9zMzIoc3Zib29sX3QsIHVpbnQxNl90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxdWhfczY0KSkpCnN2aW50NjRfdCBzdmxkZmYxdWhfczY0KHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXV3X2dhdGhlcl91NjRiYXNlX2luZGV4X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRmZjF1d19nYXRoZXJfdTY0YmFzZV9pbmRleF91NjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxdXdfZ2F0aGVyX3U2NGJhc2VfaW5kZXhfczY0KSkpCnN2aW50NjRfdCBzdmxkZmYxdXdfZ2F0aGVyX3U2NGJhc2VfaW5kZXhfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXV3X2dhdGhlcl91NjRiYXNlX29mZnNldF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkZmYxdXdfZ2F0aGVyX3U2NGJhc2Vfb2Zmc2V0X3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1d19nYXRoZXJfdTY0YmFzZV9vZmZzZXRfczY0KSkpCnN2aW50NjRfdCBzdmxkZmYxdXdfZ2F0aGVyX3U2NGJhc2Vfb2Zmc2V0X3M2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1d19nYXRoZXJfdTY0YmFzZV91NjQpKSkKc3Z1aW50NjRfdCBzdmxkZmYxdXdfZ2F0aGVyX3U2NGJhc2VfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXV3X2dhdGhlcl91NjRiYXNlX3M2NCkpKQpzdmludDY0X3Qgc3ZsZGZmMXV3X2dhdGhlcl91NjRiYXNlX3M2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1d19nYXRoZXJfczY0aW5kZXhfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZGZmMXV3X2dhdGhlcl9zNjRpbmRleF91NjQoc3Zib29sX3QsIHVpbnQzMl90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1d19nYXRoZXJfczY0aW5kZXhfczY0KSkpCnN2aW50NjRfdCBzdmxkZmYxdXdfZ2F0aGVyX3M2NGluZGV4X3M2NChzdmJvb2xfdCwgdWludDMyX3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXV3X2dhdGhlcl91NjRpbmRleF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkZmYxdXdfZ2F0aGVyX3U2NGluZGV4X3U2NChzdmJvb2xfdCwgdWludDMyX3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1d19nYXRoZXJfdTY0aW5kZXhfczY0KSkpCnN2aW50NjRfdCBzdmxkZmYxdXdfZ2F0aGVyX3U2NGluZGV4X3M2NChzdmJvb2xfdCwgdWludDMyX3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1d19nYXRoZXJfczY0b2Zmc2V0X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRmZjF1d19nYXRoZXJfczY0b2Zmc2V0X3U2NChzdmJvb2xfdCwgdWludDMyX3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXV3X2dhdGhlcl9zNjRvZmZzZXRfczY0KSkpCnN2aW50NjRfdCBzdmxkZmYxdXdfZ2F0aGVyX3M2NG9mZnNldF9zNjQoc3Zib29sX3QsIHVpbnQzMl90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1d19nYXRoZXJfdTY0b2Zmc2V0X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRmZjF1d19nYXRoZXJfdTY0b2Zmc2V0X3U2NChzdmJvb2xfdCwgdWludDMyX3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1d19nYXRoZXJfdTY0b2Zmc2V0X3M2NCkpKQpzdmludDY0X3Qgc3ZsZGZmMXV3X2dhdGhlcl91NjRvZmZzZXRfczY0KHN2Ym9vbF90LCB1aW50MzJfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXV3X3ZudW1fdTY0KSkpCnN2dWludDY0X3Qgc3ZsZGZmMXV3X3ZudW1fdTY0KHN2Ym9vbF90LCB1aW50MzJfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXV3X3ZudW1fczY0KSkpCnN2aW50NjRfdCBzdmxkZmYxdXdfdm51bV9zNjQoc3Zib29sX3QsIHVpbnQzMl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxdXdfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZGZmMXV3X3U2NChzdmJvb2xfdCwgdWludDMyX3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1d19zNjQpKSkKc3ZpbnQ2NF90IHN2bGRmZjF1d19zNjQoc3Zib29sX3QsIHVpbnQzMl90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbmYxX3U4KSkpCnN2dWludDhfdCBzdmxkbmYxX3U4KHN2Ym9vbF90LCB1aW50OF90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbmYxX3UzMikpKQpzdnVpbnQzMl90IHN2bGRuZjFfdTMyKHN2Ym9vbF90LCB1aW50MzJfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG5mMV91NjQpKSkKc3Z1aW50NjRfdCBzdmxkbmYxX3U2NChzdmJvb2xfdCwgdWludDY0X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRuZjFfdTE2KSkpCnN2dWludDE2X3Qgc3ZsZG5mMV91MTYoc3Zib29sX3QsIHVpbnQxNl90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbmYxX3M4KSkpCnN2aW50OF90IHN2bGRuZjFfczgoc3Zib29sX3QsIGludDhfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG5mMV9mNjQpKSkKc3ZmbG9hdDY0X3Qgc3ZsZG5mMV9mNjQoc3Zib29sX3QsIGZsb2F0NjRfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG5mMV9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3ZsZG5mMV9mMzIoc3Zib29sX3QsIGZsb2F0MzJfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG5mMV9mMTYpKSkKc3ZmbG9hdDE2X3Qgc3ZsZG5mMV9mMTYoc3Zib29sX3QsIGZsb2F0MTZfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG5mMV9zMzIpKSkKc3ZpbnQzMl90IHN2bGRuZjFfczMyKHN2Ym9vbF90LCBpbnQzMl90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbmYxX3M2NCkpKQpzdmludDY0X3Qgc3ZsZG5mMV9zNjQoc3Zib29sX3QsIGludDY0X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRuZjFfczE2KSkpCnN2aW50MTZfdCBzdmxkbmYxX3MxNihzdmJvb2xfdCwgaW50MTZfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG5mMV92bnVtX3U4KSkpCnN2dWludDhfdCBzdmxkbmYxX3ZudW1fdTgoc3Zib29sX3QsIHVpbnQ4X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRuZjFfdm51bV91MzIpKSkKc3Z1aW50MzJfdCBzdmxkbmYxX3ZudW1fdTMyKHN2Ym9vbF90LCB1aW50MzJfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG5mMV92bnVtX3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRuZjFfdm51bV91NjQoc3Zib29sX3QsIHVpbnQ2NF90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbmYxX3ZudW1fdTE2KSkpCnN2dWludDE2X3Qgc3ZsZG5mMV92bnVtX3UxNihzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRuZjFfdm51bV9zOCkpKQpzdmludDhfdCBzdmxkbmYxX3ZudW1fczgoc3Zib29sX3QsIGludDhfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG5mMV92bnVtX2Y2NCkpKQpzdmZsb2F0NjRfdCBzdmxkbmYxX3ZudW1fZjY0KHN2Ym9vbF90LCBmbG9hdDY0X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRuZjFfdm51bV9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3ZsZG5mMV92bnVtX2YzMihzdmJvb2xfdCwgZmxvYXQzMl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbmYxX3ZudW1fZjE2KSkpCnN2ZmxvYXQxNl90IHN2bGRuZjFfdm51bV9mMTYoc3Zib29sX3QsIGZsb2F0MTZfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG5mMV92bnVtX3MzMikpKQpzdmludDMyX3Qgc3ZsZG5mMV92bnVtX3MzMihzdmJvb2xfdCwgaW50MzJfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG5mMV92bnVtX3M2NCkpKQpzdmludDY0X3Qgc3ZsZG5mMV92bnVtX3M2NChzdmJvb2xfdCwgaW50NjRfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG5mMV92bnVtX3MxNikpKQpzdmludDE2X3Qgc3ZsZG5mMV92bnVtX3MxNihzdmJvb2xfdCwgaW50MTZfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG5mMXNiX3ZudW1fdTMyKSkpCnN2dWludDMyX3Qgc3ZsZG5mMXNiX3ZudW1fdTMyKHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRuZjFzYl92bnVtX3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRuZjFzYl92bnVtX3U2NChzdmJvb2xfdCwgaW50OF90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbmYxc2Jfdm51bV91MTYpKSkKc3Z1aW50MTZfdCBzdmxkbmYxc2Jfdm51bV91MTYoc3Zib29sX3QsIGludDhfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG5mMXNiX3ZudW1fczMyKSkpCnN2aW50MzJfdCBzdmxkbmYxc2Jfdm51bV9zMzIoc3Zib29sX3QsIGludDhfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG5mMXNiX3ZudW1fczY0KSkpCnN2aW50NjRfdCBzdmxkbmYxc2Jfdm51bV9zNjQoc3Zib29sX3QsIGludDhfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG5mMXNiX3ZudW1fczE2KSkpCnN2aW50MTZfdCBzdmxkbmYxc2Jfdm51bV9zMTYoc3Zib29sX3QsIGludDhfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG5mMXNiX3UzMikpKQpzdnVpbnQzMl90IHN2bGRuZjFzYl91MzIoc3Zib29sX3QsIGludDhfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG5mMXNiX3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRuZjFzYl91NjQoc3Zib29sX3QsIGludDhfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG5mMXNiX3UxNikpKQpzdnVpbnQxNl90IHN2bGRuZjFzYl91MTYoc3Zib29sX3QsIGludDhfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG5mMXNiX3MzMikpKQpzdmludDMyX3Qgc3ZsZG5mMXNiX3MzMihzdmJvb2xfdCwgaW50OF90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbmYxc2JfczY0KSkpCnN2aW50NjRfdCBzdmxkbmYxc2JfczY0KHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRuZjFzYl9zMTYpKSkKc3ZpbnQxNl90IHN2bGRuZjFzYl9zMTYoc3Zib29sX3QsIGludDhfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG5mMXNoX3ZudW1fdTMyKSkpCnN2dWludDMyX3Qgc3ZsZG5mMXNoX3ZudW1fdTMyKHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbmYxc2hfdm51bV91NjQpKSkKc3Z1aW50NjRfdCBzdmxkbmYxc2hfdm51bV91NjQoc3Zib29sX3QsIGludDE2X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRuZjFzaF92bnVtX3MzMikpKQpzdmludDMyX3Qgc3ZsZG5mMXNoX3ZudW1fczMyKHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbmYxc2hfdm51bV9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRuZjFzaF92bnVtX3M2NChzdmJvb2xfdCwgaW50MTZfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG5mMXNoX3UzMikpKQpzdnVpbnQzMl90IHN2bGRuZjFzaF91MzIoc3Zib29sX3QsIGludDE2X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRuZjFzaF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkbmYxc2hfdTY0KHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbmYxc2hfczMyKSkpCnN2aW50MzJfdCBzdmxkbmYxc2hfczMyKHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbmYxc2hfczY0KSkpCnN2aW50NjRfdCBzdmxkbmYxc2hfczY0KHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbmYxc3dfdm51bV91NjQpKSkKc3Z1aW50NjRfdCBzdmxkbmYxc3dfdm51bV91NjQoc3Zib29sX3QsIGludDMyX3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRuZjFzd192bnVtX3M2NCkpKQpzdmludDY0X3Qgc3ZsZG5mMXN3X3ZudW1fczY0KHN2Ym9vbF90LCBpbnQzMl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbmYxc3dfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZG5mMXN3X3U2NChzdmJvb2xfdCwgaW50MzJfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG5mMXN3X3M2NCkpKQpzdmludDY0X3Qgc3ZsZG5mMXN3X3M2NChzdmJvb2xfdCwgaW50MzJfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG5mMXViX3ZudW1fdTMyKSkpCnN2dWludDMyX3Qgc3ZsZG5mMXViX3ZudW1fdTMyKHN2Ym9vbF90LCB1aW50OF90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbmYxdWJfdm51bV91NjQpKSkKc3Z1aW50NjRfdCBzdmxkbmYxdWJfdm51bV91NjQoc3Zib29sX3QsIHVpbnQ4X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRuZjF1Yl92bnVtX3UxNikpKQpzdnVpbnQxNl90IHN2bGRuZjF1Yl92bnVtX3UxNihzdmJvb2xfdCwgdWludDhfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG5mMXViX3ZudW1fczMyKSkpCnN2aW50MzJfdCBzdmxkbmYxdWJfdm51bV9zMzIoc3Zib29sX3QsIHVpbnQ4X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRuZjF1Yl92bnVtX3M2NCkpKQpzdmludDY0X3Qgc3ZsZG5mMXViX3ZudW1fczY0KHN2Ym9vbF90LCB1aW50OF90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbmYxdWJfdm51bV9zMTYpKSkKc3ZpbnQxNl90IHN2bGRuZjF1Yl92bnVtX3MxNihzdmJvb2xfdCwgdWludDhfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG5mMXViX3UzMikpKQpzdnVpbnQzMl90IHN2bGRuZjF1Yl91MzIoc3Zib29sX3QsIHVpbnQ4X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRuZjF1Yl91NjQpKSkKc3Z1aW50NjRfdCBzdmxkbmYxdWJfdTY0KHN2Ym9vbF90LCB1aW50OF90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbmYxdWJfdTE2KSkpCnN2dWludDE2X3Qgc3ZsZG5mMXViX3UxNihzdmJvb2xfdCwgdWludDhfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG5mMXViX3MzMikpKQpzdmludDMyX3Qgc3ZsZG5mMXViX3MzMihzdmJvb2xfdCwgdWludDhfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG5mMXViX3M2NCkpKQpzdmludDY0X3Qgc3ZsZG5mMXViX3M2NChzdmJvb2xfdCwgdWludDhfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG5mMXViX3MxNikpKQpzdmludDE2X3Qgc3ZsZG5mMXViX3MxNihzdmJvb2xfdCwgdWludDhfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG5mMXVoX3ZudW1fdTMyKSkpCnN2dWludDMyX3Qgc3ZsZG5mMXVoX3ZudW1fdTMyKHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG5mMXVoX3ZudW1fdTY0KSkpCnN2dWludDY0X3Qgc3ZsZG5mMXVoX3ZudW1fdTY0KHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG5mMXVoX3ZudW1fczMyKSkpCnN2aW50MzJfdCBzdmxkbmYxdWhfdm51bV9zMzIoc3Zib29sX3QsIHVpbnQxNl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbmYxdWhfdm51bV9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRuZjF1aF92bnVtX3M2NChzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRuZjF1aF91MzIpKSkKc3Z1aW50MzJfdCBzdmxkbmYxdWhfdTMyKHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG5mMXVoX3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRuZjF1aF91NjQoc3Zib29sX3QsIHVpbnQxNl90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbmYxdWhfczMyKSkpCnN2aW50MzJfdCBzdmxkbmYxdWhfczMyKHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG5mMXVoX3M2NCkpKQpzdmludDY0X3Qgc3ZsZG5mMXVoX3M2NChzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRuZjF1d192bnVtX3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRuZjF1d192bnVtX3U2NChzdmJvb2xfdCwgdWludDMyX3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRuZjF1d192bnVtX3M2NCkpKQpzdmludDY0X3Qgc3ZsZG5mMXV3X3ZudW1fczY0KHN2Ym9vbF90LCB1aW50MzJfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG5mMXV3X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRuZjF1d191NjQoc3Zib29sX3QsIHVpbnQzMl90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbmYxdXdfczY0KSkpCnN2aW50NjRfdCBzdmxkbmYxdXdfczY0KHN2Ym9vbF90LCB1aW50MzJfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MV91OCkpKQpzdnVpbnQ4X3Qgc3ZsZG50MV91OChzdmJvb2xfdCwgdWludDhfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MV91MzIpKSkKc3Z1aW50MzJfdCBzdmxkbnQxX3UzMihzdmJvb2xfdCwgdWludDMyX3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZG50MV91NjQoc3Zib29sX3QsIHVpbnQ2NF90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxX3UxNikpKQpzdnVpbnQxNl90IHN2bGRudDFfdTE2KHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MV9zOCkpKQpzdmludDhfdCBzdmxkbnQxX3M4KHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfZjY0KSkpCnN2ZmxvYXQ2NF90IHN2bGRudDFfZjY0KHN2Ym9vbF90LCBmbG9hdDY0X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfZjMyKSkpCnN2ZmxvYXQzMl90IHN2bGRudDFfZjMyKHN2Ym9vbF90LCBmbG9hdDMyX3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfZjE2KSkpCnN2ZmxvYXQxNl90IHN2bGRudDFfZjE2KHN2Ym9vbF90LCBmbG9hdDE2X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfczMyKSkpCnN2aW50MzJfdCBzdmxkbnQxX3MzMihzdmJvb2xfdCwgaW50MzJfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MV9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRudDFfczY0KHN2Ym9vbF90LCBpbnQ2NF90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxX3MxNikpKQpzdmludDE2X3Qgc3ZsZG50MV9zMTYoc3Zib29sX3QsIGludDE2X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfdm51bV91OCkpKQpzdnVpbnQ4X3Qgc3ZsZG50MV92bnVtX3U4KHN2Ym9vbF90LCB1aW50OF90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxX3ZudW1fdTMyKSkpCnN2dWludDMyX3Qgc3ZsZG50MV92bnVtX3UzMihzdmJvb2xfdCwgdWludDMyX3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfdm51bV91NjQpKSkKc3Z1aW50NjRfdCBzdmxkbnQxX3ZudW1fdTY0KHN2Ym9vbF90LCB1aW50NjRfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MV92bnVtX3UxNikpKQpzdnVpbnQxNl90IHN2bGRudDFfdm51bV91MTYoc3Zib29sX3QsIHVpbnQxNl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxX3ZudW1fczgpKSkKc3ZpbnQ4X3Qgc3ZsZG50MV92bnVtX3M4KHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfdm51bV9mNjQpKSkKc3ZmbG9hdDY0X3Qgc3ZsZG50MV92bnVtX2Y2NChzdmJvb2xfdCwgZmxvYXQ2NF90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxX3ZudW1fZjMyKSkpCnN2ZmxvYXQzMl90IHN2bGRudDFfdm51bV9mMzIoc3Zib29sX3QsIGZsb2F0MzJfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MV92bnVtX2YxNikpKQpzdmZsb2F0MTZfdCBzdmxkbnQxX3ZudW1fZjE2KHN2Ym9vbF90LCBmbG9hdDE2X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfdm51bV9zMzIpKSkKc3ZpbnQzMl90IHN2bGRudDFfdm51bV9zMzIoc3Zib29sX3QsIGludDMyX3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfdm51bV9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRudDFfdm51bV9zNjQoc3Zib29sX3QsIGludDY0X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfdm51bV9zMTYpKSkKc3ZpbnQxNl90IHN2bGRudDFfdm51bV9zMTYoc3Zib29sX3QsIGludDE2X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGVuX3U4KSkpCnVpbnQ2NF90IHN2bGVuX3U4KHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGVuX3UzMikpKQp1aW50NjRfdCBzdmxlbl91MzIoc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGVuX3U2NCkpKQp1aW50NjRfdCBzdmxlbl91NjQoc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGVuX3UxNikpKQp1aW50NjRfdCBzdmxlbl91MTYoc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGVuX3M4KSkpCnVpbnQ2NF90IHN2bGVuX3M4KHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZW5fZjY0KSkpCnVpbnQ2NF90IHN2bGVuX2Y2NChzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGVuX2YzMikpKQp1aW50NjRfdCBzdmxlbl9mMzIoc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxlbl9mMTYpKSkKdWludDY0X3Qgc3ZsZW5fZjE2KHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZW5fczMyKSkpCnVpbnQ2NF90IHN2bGVuX3MzMihzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxlbl9zNjQpKSkKdWludDY0X3Qgc3ZsZW5fczY0KHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGVuX3MxNikpKQp1aW50NjRfdCBzdmxlbl9zMTYoc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfbl91OF9tKSkpCnN2dWludDhfdCBzdmxzbF9uX3U4X20oc3Zib29sX3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX25fdTMyX20pKSkKc3Z1aW50MzJfdCBzdmxzbF9uX3UzMl9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX25fdTY0X20pKSkKc3Z1aW50NjRfdCBzdmxzbF9uX3U2NF9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX25fdTE2X20pKSkKc3Z1aW50MTZfdCBzdmxzbF9uX3UxNl9tKHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX25fczhfbSkpKQpzdmludDhfdCBzdmxzbF9uX3M4X20oc3Zib29sX3QsIHN2aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfbl9zMzJfbSkpKQpzdmludDMyX3Qgc3Zsc2xfbl9zMzJfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX25fczY0X20pKSkKc3ZpbnQ2NF90IHN2bHNsX25fczY0X20oc3Zib29sX3QsIHN2aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzbF9uX3MxNl9tKSkpCnN2aW50MTZfdCBzdmxzbF9uX3MxNl9tKHN2Ym9vbF90LCBzdmludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfbl91OF94KSkpCnN2dWludDhfdCBzdmxzbF9uX3U4X3goc3Zib29sX3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX25fdTMyX3gpKSkKc3Z1aW50MzJfdCBzdmxzbF9uX3UzMl94KHN2Ym9vbF90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX25fdTY0X3gpKSkKc3Z1aW50NjRfdCBzdmxzbF9uX3U2NF94KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX25fdTE2X3gpKSkKc3Z1aW50MTZfdCBzdmxzbF9uX3UxNl94KHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX25fczhfeCkpKQpzdmludDhfdCBzdmxzbF9uX3M4X3goc3Zib29sX3QsIHN2aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfbl9zMzJfeCkpKQpzdmludDMyX3Qgc3Zsc2xfbl9zMzJfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX25fczY0X3gpKSkKc3ZpbnQ2NF90IHN2bHNsX25fczY0X3goc3Zib29sX3QsIHN2aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzbF9uX3MxNl94KSkpCnN2aW50MTZfdCBzdmxzbF9uX3MxNl94KHN2Ym9vbF90LCBzdmludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfbl91OF96KSkpCnN2dWludDhfdCBzdmxzbF9uX3U4X3ooc3Zib29sX3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX25fdTMyX3opKSkKc3Z1aW50MzJfdCBzdmxzbF9uX3UzMl96KHN2Ym9vbF90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX25fdTY0X3opKSkKc3Z1aW50NjRfdCBzdmxzbF9uX3U2NF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX25fdTE2X3opKSkKc3Z1aW50MTZfdCBzdmxzbF9uX3UxNl96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX25fczhfeikpKQpzdmludDhfdCBzdmxzbF9uX3M4X3ooc3Zib29sX3QsIHN2aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfbl9zMzJfeikpKQpzdmludDMyX3Qgc3Zsc2xfbl9zMzJfeihzdmJvb2xfdCwgc3ZpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX25fczY0X3opKSkKc3ZpbnQ2NF90IHN2bHNsX25fczY0X3ooc3Zib29sX3QsIHN2aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzbF9uX3MxNl96KSkpCnN2aW50MTZfdCBzdmxzbF9uX3MxNl96KHN2Ym9vbF90LCBzdmludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfdThfbSkpKQpzdnVpbnQ4X3Qgc3Zsc2xfdThfbShzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzbF91MzJfbSkpKQpzdnVpbnQzMl90IHN2bHNsX3UzMl9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfdTY0X20pKSkKc3Z1aW50NjRfdCBzdmxzbF91NjRfbShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX3UxNl9tKSkpCnN2dWludDE2X3Qgc3Zsc2xfdTE2X20oc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzbF9zOF9tKSkpCnN2aW50OF90IHN2bHNsX3M4X20oc3Zib29sX3QsIHN2aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzbF9zMzJfbSkpKQpzdmludDMyX3Qgc3Zsc2xfczMyX20oc3Zib29sX3QsIHN2aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX3M2NF9tKSkpCnN2aW50NjRfdCBzdmxzbF9zNjRfbShzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfczE2X20pKSkKc3ZpbnQxNl90IHN2bHNsX3MxNl9tKHN2Ym9vbF90LCBzdmludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzbF91OF94KSkpCnN2dWludDhfdCBzdmxzbF91OF94KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX3UzMl94KSkpCnN2dWludDMyX3Qgc3Zsc2xfdTMyX3goc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzbF91NjRfeCkpKQpzdnVpbnQ2NF90IHN2bHNsX3U2NF94KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfdTE2X3gpKSkKc3Z1aW50MTZfdCBzdmxzbF91MTZfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX3M4X3gpKSkKc3ZpbnQ4X3Qgc3Zsc2xfczhfeChzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX3MzMl94KSkpCnN2aW50MzJfdCBzdmxzbF9zMzJfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfczY0X3gpKSkKc3ZpbnQ2NF90IHN2bHNsX3M2NF94KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzbF9zMTZfeCkpKQpzdmludDE2X3Qgc3Zsc2xfczE2X3goc3Zib29sX3QsIHN2aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX3U4X3opKSkKc3Z1aW50OF90IHN2bHNsX3U4X3ooc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfdTMyX3opKSkKc3Z1aW50MzJfdCBzdmxzbF91MzJfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX3U2NF96KSkpCnN2dWludDY0X3Qgc3Zsc2xfdTY0X3ooc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzbF91MTZfeikpKQpzdnVpbnQxNl90IHN2bHNsX3UxNl96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfczhfeikpKQpzdmludDhfdCBzdmxzbF9zOF96KHN2Ym9vbF90LCBzdmludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfczMyX3opKSkKc3ZpbnQzMl90IHN2bHNsX3MzMl96KHN2Ym9vbF90LCBzdmludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzbF9zNjRfeikpKQpzdmludDY0X3Qgc3Zsc2xfczY0X3ooc3Zib29sX3QsIHN2aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX3MxNl96KSkpCnN2aW50MTZfdCBzdmxzbF9zMTZfeihzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfd2lkZV9uX3U4X20pKSkKc3Z1aW50OF90IHN2bHNsX3dpZGVfbl91OF9tKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfd2lkZV9uX3UzMl9tKSkpCnN2dWludDMyX3Qgc3Zsc2xfd2lkZV9uX3UzMl9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX3dpZGVfbl91MTZfbSkpKQpzdnVpbnQxNl90IHN2bHNsX3dpZGVfbl91MTZfbShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzbF93aWRlX25fczhfbSkpKQpzdmludDhfdCBzdmxzbF93aWRlX25fczhfbShzdmJvb2xfdCwgc3ZpbnQ4X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfd2lkZV9uX3MzMl9tKSkpCnN2aW50MzJfdCBzdmxzbF93aWRlX25fczMyX20oc3Zib29sX3QsIHN2aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzbF93aWRlX25fczE2X20pKSkKc3ZpbnQxNl90IHN2bHNsX3dpZGVfbl9zMTZfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX3dpZGVfbl91OF94KSkpCnN2dWludDhfdCBzdmxzbF93aWRlX25fdThfeChzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX3dpZGVfbl91MzJfeCkpKQpzdnVpbnQzMl90IHN2bHNsX3dpZGVfbl91MzJfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzbF93aWRlX25fdTE2X3gpKSkKc3Z1aW50MTZfdCBzdmxzbF93aWRlX25fdTE2X3goc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfd2lkZV9uX3M4X3gpKSkKc3ZpbnQ4X3Qgc3Zsc2xfd2lkZV9uX3M4X3goc3Zib29sX3QsIHN2aW50OF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX3dpZGVfbl9zMzJfeCkpKQpzdmludDMyX3Qgc3Zsc2xfd2lkZV9uX3MzMl94KHN2Ym9vbF90LCBzdmludDMyX3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfd2lkZV9uX3MxNl94KSkpCnN2aW50MTZfdCBzdmxzbF93aWRlX25fczE2X3goc3Zib29sX3QsIHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzbF93aWRlX25fdThfeikpKQpzdnVpbnQ4X3Qgc3Zsc2xfd2lkZV9uX3U4X3ooc3Zib29sX3QsIHN2dWludDhfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzbF93aWRlX25fdTMyX3opKSkKc3Z1aW50MzJfdCBzdmxzbF93aWRlX25fdTMyX3ooc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfd2lkZV9uX3UxNl96KSkpCnN2dWludDE2X3Qgc3Zsc2xfd2lkZV9uX3UxNl96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX3dpZGVfbl9zOF96KSkpCnN2aW50OF90IHN2bHNsX3dpZGVfbl9zOF96KHN2Ym9vbF90LCBzdmludDhfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzbF93aWRlX25fczMyX3opKSkKc3ZpbnQzMl90IHN2bHNsX3dpZGVfbl9zMzJfeihzdmJvb2xfdCwgc3ZpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX3dpZGVfbl9zMTZfeikpKQpzdmludDE2X3Qgc3Zsc2xfd2lkZV9uX3MxNl96KHN2Ym9vbF90LCBzdmludDE2X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfd2lkZV91OF9tKSkpCnN2dWludDhfdCBzdmxzbF93aWRlX3U4X20oc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX3dpZGVfdTMyX20pKSkKc3Z1aW50MzJfdCBzdmxzbF93aWRlX3UzMl9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfd2lkZV91MTZfbSkpKQpzdnVpbnQxNl90IHN2bHNsX3dpZGVfdTE2X20oc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzbF93aWRlX3M4X20pKSkKc3ZpbnQ4X3Qgc3Zsc2xfd2lkZV9zOF9tKHN2Ym9vbF90LCBzdmludDhfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX3dpZGVfczMyX20pKSkKc3ZpbnQzMl90IHN2bHNsX3dpZGVfczMyX20oc3Zib29sX3QsIHN2aW50MzJfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX3dpZGVfczE2X20pKSkKc3ZpbnQxNl90IHN2bHNsX3dpZGVfczE2X20oc3Zib29sX3QsIHN2aW50MTZfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX3dpZGVfdThfeCkpKQpzdnVpbnQ4X3Qgc3Zsc2xfd2lkZV91OF94KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzbF93aWRlX3UzMl94KSkpCnN2dWludDMyX3Qgc3Zsc2xfd2lkZV91MzJfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX3dpZGVfdTE2X3gpKSkKc3Z1aW50MTZfdCBzdmxzbF93aWRlX3UxNl94KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfd2lkZV9zOF94KSkpCnN2aW50OF90IHN2bHNsX3dpZGVfczhfeChzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzbF93aWRlX3MzMl94KSkpCnN2aW50MzJfdCBzdmxzbF93aWRlX3MzMl94KHN2Ym9vbF90LCBzdmludDMyX3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzbF93aWRlX3MxNl94KSkpCnN2aW50MTZfdCBzdmxzbF93aWRlX3MxNl94KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzbF93aWRlX3U4X3opKSkKc3Z1aW50OF90IHN2bHNsX3dpZGVfdThfeihzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfd2lkZV91MzJfeikpKQpzdnVpbnQzMl90IHN2bHNsX3dpZGVfdTMyX3ooc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzbF93aWRlX3UxNl96KSkpCnN2dWludDE2X3Qgc3Zsc2xfd2lkZV91MTZfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX3dpZGVfczhfeikpKQpzdmludDhfdCBzdmxzbF93aWRlX3M4X3ooc3Zib29sX3QsIHN2aW50OF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfd2lkZV9zMzJfeikpKQpzdmludDMyX3Qgc3Zsc2xfd2lkZV9zMzJfeihzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfd2lkZV9zMTZfeikpKQpzdmludDE2X3Qgc3Zsc2xfd2lkZV9zMTZfeihzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc3Jfbl91OF9tKSkpCnN2dWludDhfdCBzdmxzcl9uX3U4X20oc3Zib29sX3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNyX25fdTMyX20pKSkKc3Z1aW50MzJfdCBzdmxzcl9uX3UzMl9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNyX25fdTY0X20pKSkKc3Z1aW50NjRfdCBzdmxzcl9uX3U2NF9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNyX25fdTE2X20pKSkKc3Z1aW50MTZfdCBzdmxzcl9uX3UxNl9tKHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNyX25fdThfeCkpKQpzdnVpbnQ4X3Qgc3Zsc3Jfbl91OF94KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzcl9uX3UzMl94KSkpCnN2dWludDMyX3Qgc3Zsc3Jfbl91MzJfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzcl9uX3U2NF94KSkpCnN2dWludDY0X3Qgc3Zsc3Jfbl91NjRfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzcl9uX3UxNl94KSkpCnN2dWludDE2X3Qgc3Zsc3Jfbl91MTZfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzcl9uX3U4X3opKSkKc3Z1aW50OF90IHN2bHNyX25fdThfeihzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc3Jfbl91MzJfeikpKQpzdnVpbnQzMl90IHN2bHNyX25fdTMyX3ooc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc3Jfbl91NjRfeikpKQpzdnVpbnQ2NF90IHN2bHNyX25fdTY0X3ooc3Zib29sX3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc3Jfbl91MTZfeikpKQpzdnVpbnQxNl90IHN2bHNyX25fdTE2X3ooc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc3JfdThfbSkpKQpzdnVpbnQ4X3Qgc3Zsc3JfdThfbShzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzcl91MzJfbSkpKQpzdnVpbnQzMl90IHN2bHNyX3UzMl9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc3JfdTY0X20pKSkKc3Z1aW50NjRfdCBzdmxzcl91NjRfbShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNyX3UxNl9tKSkpCnN2dWludDE2X3Qgc3Zsc3JfdTE2X20oc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzcl91OF94KSkpCnN2dWludDhfdCBzdmxzcl91OF94KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNyX3UzMl94KSkpCnN2dWludDMyX3Qgc3Zsc3JfdTMyX3goc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzcl91NjRfeCkpKQpzdnVpbnQ2NF90IHN2bHNyX3U2NF94KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc3JfdTE2X3gpKSkKc3Z1aW50MTZfdCBzdmxzcl91MTZfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNyX3U4X3opKSkKc3Z1aW50OF90IHN2bHNyX3U4X3ooc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc3JfdTMyX3opKSkKc3Z1aW50MzJfdCBzdmxzcl91MzJfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNyX3U2NF96KSkpCnN2dWludDY0X3Qgc3Zsc3JfdTY0X3ooc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzcl91MTZfeikpKQpzdnVpbnQxNl90IHN2bHNyX3UxNl96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc3Jfd2lkZV9uX3U4X20pKSkKc3Z1aW50OF90IHN2bHNyX3dpZGVfbl91OF9tKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc3Jfd2lkZV9uX3UzMl9tKSkpCnN2dWludDMyX3Qgc3Zsc3Jfd2lkZV9uX3UzMl9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNyX3dpZGVfbl91MTZfbSkpKQpzdnVpbnQxNl90IHN2bHNyX3dpZGVfbl91MTZfbShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzcl93aWRlX25fdThfeCkpKQpzdnVpbnQ4X3Qgc3Zsc3Jfd2lkZV9uX3U4X3goc3Zib29sX3QsIHN2dWludDhfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzcl93aWRlX25fdTMyX3gpKSkKc3Z1aW50MzJfdCBzdmxzcl93aWRlX25fdTMyX3goc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc3Jfd2lkZV9uX3UxNl94KSkpCnN2dWludDE2X3Qgc3Zsc3Jfd2lkZV9uX3UxNl94KHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNyX3dpZGVfbl91OF96KSkpCnN2dWludDhfdCBzdmxzcl93aWRlX25fdThfeihzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNyX3dpZGVfbl91MzJfeikpKQpzdnVpbnQzMl90IHN2bHNyX3dpZGVfbl91MzJfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzcl93aWRlX25fdTE2X3opKSkKc3Z1aW50MTZfdCBzdmxzcl93aWRlX25fdTE2X3ooc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc3Jfd2lkZV91OF9tKSkpCnN2dWludDhfdCBzdmxzcl93aWRlX3U4X20oc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNyX3dpZGVfdTMyX20pKSkKc3Z1aW50MzJfdCBzdmxzcl93aWRlX3UzMl9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc3Jfd2lkZV91MTZfbSkpKQpzdnVpbnQxNl90IHN2bHNyX3dpZGVfdTE2X20oc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzcl93aWRlX3U4X3gpKSkKc3Z1aW50OF90IHN2bHNyX3dpZGVfdThfeChzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc3Jfd2lkZV91MzJfeCkpKQpzdnVpbnQzMl90IHN2bHNyX3dpZGVfdTMyX3goc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzcl93aWRlX3UxNl94KSkpCnN2dWludDE2X3Qgc3Zsc3Jfd2lkZV91MTZfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNyX3dpZGVfdThfeikpKQpzdnVpbnQ4X3Qgc3Zsc3Jfd2lkZV91OF96KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzcl93aWRlX3UzMl96KSkpCnN2dWludDMyX3Qgc3Zsc3Jfd2lkZV91MzJfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNyX3dpZGVfdTE2X3opKSkKc3Z1aW50MTZfdCBzdmxzcl93aWRlX3UxNl96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfbl9mNjRfbSkpKQpzdmZsb2F0NjRfdCBzdm1hZF9uX2Y2NF9tKHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QsIGZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWFkX25fZjMyX20pKSkKc3ZmbG9hdDMyX3Qgc3ZtYWRfbl9mMzJfbShzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90LCBmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1hZF9uX2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2bWFkX25fZjE2X20oc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfbl9mNjRfeCkpKQpzdmZsb2F0NjRfdCBzdm1hZF9uX2Y2NF94KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QsIGZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWFkX25fZjMyX3gpKSkKc3ZmbG9hdDMyX3Qgc3ZtYWRfbl9mMzJfeChzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90LCBmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1hZF9uX2YxNl94KSkpCnN2ZmxvYXQxNl90IHN2bWFkX25fZjE2X3goc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfbl9mNjRfeikpKQpzdmZsb2F0NjRfdCBzdm1hZF9uX2Y2NF96KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QsIGZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWFkX25fZjMyX3opKSkKc3ZmbG9hdDMyX3Qgc3ZtYWRfbl9mMzJfeihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90LCBmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1hZF9uX2YxNl96KSkpCnN2ZmxvYXQxNl90IHN2bWFkX25fZjE2X3ooc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfbl91OF9tKSkpCnN2dWludDhfdCBzdm1hZF9uX3U4X20oc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfbl91MzJfbSkpKQpzdnVpbnQzMl90IHN2bWFkX25fdTMyX20oc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfbl91NjRfbSkpKQpzdnVpbnQ2NF90IHN2bWFkX25fdTY0X20oc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfbl91MTZfbSkpKQpzdnVpbnQxNl90IHN2bWFkX25fdTE2X20oc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfbl9zOF9tKSkpCnN2aW50OF90IHN2bWFkX25fczhfbShzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1hZF9uX3MzMl9tKSkpCnN2aW50MzJfdCBzdm1hZF9uX3MzMl9tKHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWFkX25fczY0X20pKSkKc3ZpbnQ2NF90IHN2bWFkX25fczY0X20oc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfbl9zMTZfbSkpKQpzdmludDE2X3Qgc3ZtYWRfbl9zMTZfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1hZF9uX3U4X3gpKSkKc3Z1aW50OF90IHN2bWFkX25fdThfeChzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1hZF9uX3UzMl94KSkpCnN2dWludDMyX3Qgc3ZtYWRfbl91MzJfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1hZF9uX3U2NF94KSkpCnN2dWludDY0X3Qgc3ZtYWRfbl91NjRfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1hZF9uX3UxNl94KSkpCnN2dWludDE2X3Qgc3ZtYWRfbl91MTZfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1hZF9uX3M4X3gpKSkKc3ZpbnQ4X3Qgc3ZtYWRfbl9zOF94KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWFkX25fczMyX3gpKSkKc3ZpbnQzMl90IHN2bWFkX25fczMyX3goc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfbl9zNjRfeCkpKQpzdmludDY0X3Qgc3ZtYWRfbl9zNjRfeChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1hZF9uX3MxNl94KSkpCnN2aW50MTZfdCBzdm1hZF9uX3MxNl94KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWFkX25fdThfeikpKQpzdnVpbnQ4X3Qgc3ZtYWRfbl91OF96KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWFkX25fdTMyX3opKSkKc3Z1aW50MzJfdCBzdm1hZF9uX3UzMl96KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWFkX25fdTY0X3opKSkKc3Z1aW50NjRfdCBzdm1hZF9uX3U2NF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWFkX25fdTE2X3opKSkKc3Z1aW50MTZfdCBzdm1hZF9uX3UxNl96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWFkX25fczhfeikpKQpzdmludDhfdCBzdm1hZF9uX3M4X3ooc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfbl9zMzJfeikpKQpzdmludDMyX3Qgc3ZtYWRfbl9zMzJfeihzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1hZF9uX3M2NF96KSkpCnN2aW50NjRfdCBzdm1hZF9uX3M2NF96KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWFkX25fczE2X3opKSkKc3ZpbnQxNl90IHN2bWFkX25fczE2X3ooc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZtYWRfZjY0X20oc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1hZF9mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdm1hZF9mMzJfbShzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWFkX2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2bWFkX2YxNl9tKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZtYWRfZjY0X3goc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1hZF9mMzJfeCkpKQpzdmZsb2F0MzJfdCBzdm1hZF9mMzJfeChzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWFkX2YxNl94KSkpCnN2ZmxvYXQxNl90IHN2bWFkX2YxNl94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZtYWRfZjY0X3ooc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1hZF9mMzJfeikpKQpzdmZsb2F0MzJfdCBzdm1hZF9mMzJfeihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWFkX2YxNl96KSkpCnN2ZmxvYXQxNl90IHN2bWFkX2YxNl96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfdThfbSkpKQpzdnVpbnQ4X3Qgc3ZtYWRfdThfbShzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWFkX3UzMl9tKSkpCnN2dWludDMyX3Qgc3ZtYWRfdTMyX20oc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1hZF91NjRfbSkpKQpzdnVpbnQ2NF90IHN2bWFkX3U2NF9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfdTE2X20pKSkKc3Z1aW50MTZfdCBzdm1hZF91MTZfbShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWFkX3M4X20pKSkKc3ZpbnQ4X3Qgc3ZtYWRfczhfbShzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWFkX3MzMl9tKSkpCnN2aW50MzJfdCBzdm1hZF9zMzJfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWFkX3M2NF9tKSkpCnN2aW50NjRfdCBzdm1hZF9zNjRfbShzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWFkX3MxNl9tKSkpCnN2aW50MTZfdCBzdm1hZF9zMTZfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWFkX3U4X3gpKSkKc3Z1aW50OF90IHN2bWFkX3U4X3goc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1hZF91MzJfeCkpKQpzdnVpbnQzMl90IHN2bWFkX3UzMl94KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfdTY0X3gpKSkKc3Z1aW50NjRfdCBzdm1hZF91NjRfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWFkX3UxNl94KSkpCnN2dWludDE2X3Qgc3ZtYWRfdTE2X3goc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1hZF9zOF94KSkpCnN2aW50OF90IHN2bWFkX3M4X3goc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1hZF9zMzJfeCkpKQpzdmludDMyX3Qgc3ZtYWRfczMyX3goc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1hZF9zNjRfeCkpKQpzdmludDY0X3Qgc3ZtYWRfczY0X3goc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1hZF9zMTZfeCkpKQpzdmludDE2X3Qgc3ZtYWRfczE2X3goc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1hZF91OF96KSkpCnN2dWludDhfdCBzdm1hZF91OF96KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfdTMyX3opKSkKc3Z1aW50MzJfdCBzdm1hZF91MzJfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWFkX3U2NF96KSkpCnN2dWludDY0X3Qgc3ZtYWRfdTY0X3ooc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1hZF91MTZfeikpKQpzdnVpbnQxNl90IHN2bWFkX3UxNl96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfczhfeikpKQpzdmludDhfdCBzdm1hZF9zOF96KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfczMyX3opKSkKc3ZpbnQzMl90IHN2bWFkX3MzMl96KHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfczY0X3opKSkKc3ZpbnQ2NF90IHN2bWFkX3M2NF96KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfczE2X3opKSkKc3ZpbnQxNl90IHN2bWFkX3MxNl96KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfbl9mNjRfbSkpKQpzdmZsb2F0NjRfdCBzdm1heF9uX2Y2NF9tKHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfbl9mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdm1heF9uX2YzMl9tKHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfbl9mMTZfbSkpKQpzdmZsb2F0MTZfdCBzdm1heF9uX2YxNl9tKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfbl9mNjRfeCkpKQpzdmZsb2F0NjRfdCBzdm1heF9uX2Y2NF94KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfbl9mMzJfeCkpKQpzdmZsb2F0MzJfdCBzdm1heF9uX2YzMl94KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfbl9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdm1heF9uX2YxNl94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfbl9mNjRfeikpKQpzdmZsb2F0NjRfdCBzdm1heF9uX2Y2NF96KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfbl9mMzJfeikpKQpzdmZsb2F0MzJfdCBzdm1heF9uX2YzMl96KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfbl9mMTZfeikpKQpzdmZsb2F0MTZfdCBzdm1heF9uX2YxNl96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfbl9zOF9tKSkpCnN2aW50OF90IHN2bWF4X25fczhfbShzdmJvb2xfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4X25fczMyX20pKSkKc3ZpbnQzMl90IHN2bWF4X25fczMyX20oc3Zib29sX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4X25fczY0X20pKSkKc3ZpbnQ2NF90IHN2bWF4X25fczY0X20oc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4X25fczE2X20pKSkKc3ZpbnQxNl90IHN2bWF4X25fczE2X20oc3Zib29sX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4X25fczhfeCkpKQpzdmludDhfdCBzdm1heF9uX3M4X3goc3Zib29sX3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heF9uX3MzMl94KSkpCnN2aW50MzJfdCBzdm1heF9uX3MzMl94KHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heF9uX3M2NF94KSkpCnN2aW50NjRfdCBzdm1heF9uX3M2NF94KHN2Ym9vbF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heF9uX3MxNl94KSkpCnN2aW50MTZfdCBzdm1heF9uX3MxNl94KHN2Ym9vbF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heF9uX3M4X3opKSkKc3ZpbnQ4X3Qgc3ZtYXhfbl9zOF96KHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfbl9zMzJfeikpKQpzdmludDMyX3Qgc3ZtYXhfbl9zMzJfeihzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfbl9zNjRfeikpKQpzdmludDY0X3Qgc3ZtYXhfbl9zNjRfeihzdmJvb2xfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfbl9zMTZfeikpKQpzdmludDE2X3Qgc3ZtYXhfbl9zMTZfeihzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfbl91OF9tKSkpCnN2dWludDhfdCBzdm1heF9uX3U4X20oc3Zib29sX3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4X25fdTMyX20pKSkKc3Z1aW50MzJfdCBzdm1heF9uX3UzMl9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4X25fdTY0X20pKSkKc3Z1aW50NjRfdCBzdm1heF9uX3U2NF9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4X25fdTE2X20pKSkKc3Z1aW50MTZfdCBzdm1heF9uX3UxNl9tKHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4X25fdThfeCkpKQpzdnVpbnQ4X3Qgc3ZtYXhfbl91OF94KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heF9uX3UzMl94KSkpCnN2dWludDMyX3Qgc3ZtYXhfbl91MzJfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heF9uX3U2NF94KSkpCnN2dWludDY0X3Qgc3ZtYXhfbl91NjRfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heF9uX3UxNl94KSkpCnN2dWludDE2X3Qgc3ZtYXhfbl91MTZfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heF9uX3U4X3opKSkKc3Z1aW50OF90IHN2bWF4X25fdThfeihzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfbl91MzJfeikpKQpzdnVpbnQzMl90IHN2bWF4X25fdTMyX3ooc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfbl91NjRfeikpKQpzdnVpbnQ2NF90IHN2bWF4X25fdTY0X3ooc3Zib29sX3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfbl91MTZfeikpKQpzdnVpbnQxNl90IHN2bWF4X25fdTE2X3ooc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZtYXhfZjY0X20oc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4X2YzMl9tKSkpCnN2ZmxvYXQzMl90IHN2bWF4X2YzMl9tKHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heF9mMTZfbSkpKQpzdmZsb2F0MTZfdCBzdm1heF9mMTZfbShzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZtYXhfZjY0X3goc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4X2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2bWF4X2YzMl94KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heF9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdm1heF9mMTZfeChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZtYXhfZjY0X3ooc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4X2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2bWF4X2YzMl96KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heF9mMTZfeikpKQpzdmZsb2F0MTZfdCBzdm1heF9mMTZfeihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfczhfbSkpKQpzdmludDhfdCBzdm1heF9zOF9tKHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heF9zMzJfbSkpKQpzdmludDMyX3Qgc3ZtYXhfczMyX20oc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfczY0X20pKSkKc3ZpbnQ2NF90IHN2bWF4X3M2NF9tKHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4X3MxNl9tKSkpCnN2aW50MTZfdCBzdm1heF9zMTZfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heF9zOF94KSkpCnN2aW50OF90IHN2bWF4X3M4X3goc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4X3MzMl94KSkpCnN2aW50MzJfdCBzdm1heF9zMzJfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heF9zNjRfeCkpKQpzdmludDY0X3Qgc3ZtYXhfczY0X3goc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfczE2X3gpKSkKc3ZpbnQxNl90IHN2bWF4X3MxNl94KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4X3M4X3opKSkKc3ZpbnQ4X3Qgc3ZtYXhfczhfeihzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfczMyX3opKSkKc3ZpbnQzMl90IHN2bWF4X3MzMl96KHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4X3M2NF96KSkpCnN2aW50NjRfdCBzdm1heF9zNjRfeihzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heF9zMTZfeikpKQpzdmludDE2X3Qgc3ZtYXhfczE2X3ooc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfdThfbSkpKQpzdnVpbnQ4X3Qgc3ZtYXhfdThfbShzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heF91MzJfbSkpKQpzdnVpbnQzMl90IHN2bWF4X3UzMl9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfdTY0X20pKSkKc3Z1aW50NjRfdCBzdm1heF91NjRfbShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4X3UxNl9tKSkpCnN2dWludDE2X3Qgc3ZtYXhfdTE2X20oc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heF91OF94KSkpCnN2dWludDhfdCBzdm1heF91OF94KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4X3UzMl94KSkpCnN2dWludDMyX3Qgc3ZtYXhfdTMyX3goc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heF91NjRfeCkpKQpzdnVpbnQ2NF90IHN2bWF4X3U2NF94KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfdTE2X3gpKSkKc3Z1aW50MTZfdCBzdm1heF91MTZfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4X3U4X3opKSkKc3Z1aW50OF90IHN2bWF4X3U4X3ooc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfdTMyX3opKSkKc3Z1aW50MzJfdCBzdm1heF91MzJfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4X3U2NF96KSkpCnN2dWludDY0X3Qgc3ZtYXhfdTY0X3ooc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heF91MTZfeikpKQpzdnVpbnQxNl90IHN2bWF4X3UxNl96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhubV9uX2Y2NF9tKSkpCnN2ZmxvYXQ2NF90IHN2bWF4bm1fbl9mNjRfbShzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIGZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4bm1fbl9mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdm1heG5tX25fZjMyX20oc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heG5tX25fZjE2X20pKSkKc3ZmbG9hdDE2X3Qgc3ZtYXhubV9uX2YxNl9tKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhubV9uX2Y2NF94KSkpCnN2ZmxvYXQ2NF90IHN2bWF4bm1fbl9mNjRfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIGZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4bm1fbl9mMzJfeCkpKQpzdmZsb2F0MzJfdCBzdm1heG5tX25fZjMyX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heG5tX25fZjE2X3gpKSkKc3ZmbG9hdDE2X3Qgc3ZtYXhubV9uX2YxNl94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhubV9uX2Y2NF96KSkpCnN2ZmxvYXQ2NF90IHN2bWF4bm1fbl9mNjRfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIGZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4bm1fbl9mMzJfeikpKQpzdmZsb2F0MzJfdCBzdm1heG5tX25fZjMyX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heG5tX25fZjE2X3opKSkKc3ZmbG9hdDE2X3Qgc3ZtYXhubV9uX2YxNl96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhubV9mNjRfbSkpKQpzdmZsb2F0NjRfdCBzdm1heG5tX2Y2NF9tKHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heG5tX2YzMl9tKSkpCnN2ZmxvYXQzMl90IHN2bWF4bm1fZjMyX20oc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4bm1fZjE2X20pKSkKc3ZmbG9hdDE2X3Qgc3ZtYXhubV9mMTZfbShzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhubV9mNjRfeCkpKQpzdmZsb2F0NjRfdCBzdm1heG5tX2Y2NF94KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heG5tX2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2bWF4bm1fZjMyX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4bm1fZjE2X3gpKSkKc3ZmbG9hdDE2X3Qgc3ZtYXhubV9mMTZfeChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhubV9mNjRfeikpKQpzdmZsb2F0NjRfdCBzdm1heG5tX2Y2NF96KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heG5tX2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2bWF4bm1fZjMyX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4bm1fZjE2X3opKSkKc3ZmbG9hdDE2X3Qgc3ZtYXhubV9mMTZfeihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhubXZfZjY0KSkpCmZsb2F0NjRfdCBzdm1heG5tdl9mNjQoc3Zib29sX3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhubXZfZjMyKSkpCmZsb2F0MzJfdCBzdm1heG5tdl9mMzIoc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhubXZfZjE2KSkpCmZsb2F0MTZfdCBzdm1heG5tdl9mMTYoc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXh2X2Y2NCkpKQpmbG9hdDY0X3Qgc3ZtYXh2X2Y2NChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heHZfZjMyKSkpCmZsb2F0MzJfdCBzdm1heHZfZjMyKHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4dl9mMTYpKSkKZmxvYXQxNl90IHN2bWF4dl9mMTYoc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXh2X3M4KSkpCmludDhfdCBzdm1heHZfczgoc3Zib29sX3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXh2X3MzMikpKQppbnQzMl90IHN2bWF4dl9zMzIoc3Zib29sX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4dl9zNjQpKSkKaW50NjRfdCBzdm1heHZfczY0KHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heHZfczE2KSkpCmludDE2X3Qgc3ZtYXh2X3MxNihzdmJvb2xfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXh2X3U4KSkpCnVpbnQ4X3Qgc3ZtYXh2X3U4KHN2Ym9vbF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heHZfdTMyKSkpCnVpbnQzMl90IHN2bWF4dl91MzIoc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heHZfdTY0KSkpCnVpbnQ2NF90IHN2bWF4dl91NjQoc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heHZfdTE2KSkpCnVpbnQxNl90IHN2bWF4dl91MTYoc3Zib29sX3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbl9uX2Y2NF9tKSkpCnN2ZmxvYXQ2NF90IHN2bWluX25fZjY0X20oc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbl9uX2YzMl9tKSkpCnN2ZmxvYXQzMl90IHN2bWluX25fZjMyX20oc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbl9uX2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2bWluX25fZjE2X20oc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbl9uX2Y2NF94KSkpCnN2ZmxvYXQ2NF90IHN2bWluX25fZjY0X3goc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbl9uX2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2bWluX25fZjMyX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbl9uX2YxNl94KSkpCnN2ZmxvYXQxNl90IHN2bWluX25fZjE2X3goc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbl9uX2Y2NF96KSkpCnN2ZmxvYXQ2NF90IHN2bWluX25fZjY0X3ooc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbl9uX2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2bWluX25fZjMyX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbl9uX2YxNl96KSkpCnN2ZmxvYXQxNl90IHN2bWluX25fZjE2X3ooc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbl9uX3M4X20pKSkKc3ZpbnQ4X3Qgc3ZtaW5fbl9zOF9tKHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5fbl9zMzJfbSkpKQpzdmludDMyX3Qgc3ZtaW5fbl9zMzJfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5fbl9zNjRfbSkpKQpzdmludDY0X3Qgc3ZtaW5fbl9zNjRfbShzdmJvb2xfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5fbl9zMTZfbSkpKQpzdmludDE2X3Qgc3ZtaW5fbl9zMTZfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5fbl9zOF94KSkpCnN2aW50OF90IHN2bWluX25fczhfeChzdmJvb2xfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX25fczMyX3gpKSkKc3ZpbnQzMl90IHN2bWluX25fczMyX3goc3Zib29sX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX25fczY0X3gpKSkKc3ZpbnQ2NF90IHN2bWluX25fczY0X3goc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX25fczE2X3gpKSkKc3ZpbnQxNl90IHN2bWluX25fczE2X3goc3Zib29sX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX25fczhfeikpKQpzdmludDhfdCBzdm1pbl9uX3M4X3ooc3Zib29sX3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbl9uX3MzMl96KSkpCnN2aW50MzJfdCBzdm1pbl9uX3MzMl96KHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbl9uX3M2NF96KSkpCnN2aW50NjRfdCBzdm1pbl9uX3M2NF96KHN2Ym9vbF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbl9uX3MxNl96KSkpCnN2aW50MTZfdCBzdm1pbl9uX3MxNl96KHN2Ym9vbF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbl9uX3U4X20pKSkKc3Z1aW50OF90IHN2bWluX25fdThfbShzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5fbl91MzJfbSkpKQpzdnVpbnQzMl90IHN2bWluX25fdTMyX20oc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5fbl91NjRfbSkpKQpzdnVpbnQ2NF90IHN2bWluX25fdTY0X20oc3Zib29sX3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5fbl91MTZfbSkpKQpzdnVpbnQxNl90IHN2bWluX25fdTE2X20oc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5fbl91OF94KSkpCnN2dWludDhfdCBzdm1pbl9uX3U4X3goc3Zib29sX3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX25fdTMyX3gpKSkKc3Z1aW50MzJfdCBzdm1pbl9uX3UzMl94KHN2Ym9vbF90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX25fdTY0X3gpKSkKc3Z1aW50NjRfdCBzdm1pbl9uX3U2NF94KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX25fdTE2X3gpKSkKc3Z1aW50MTZfdCBzdm1pbl9uX3UxNl94KHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX25fdThfeikpKQpzdnVpbnQ4X3Qgc3ZtaW5fbl91OF96KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbl9uX3UzMl96KSkpCnN2dWludDMyX3Qgc3ZtaW5fbl91MzJfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbl9uX3U2NF96KSkpCnN2dWludDY0X3Qgc3ZtaW5fbl91NjRfeihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbl9uX3UxNl96KSkpCnN2dWludDE2X3Qgc3ZtaW5fbl91MTZfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbl9mNjRfbSkpKQpzdmZsb2F0NjRfdCBzdm1pbl9mNjRfbShzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5fZjMyX20pKSkKc3ZmbG9hdDMyX3Qgc3ZtaW5fZjMyX20oc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2bWluX2YxNl9tKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbl9mNjRfeCkpKQpzdmZsb2F0NjRfdCBzdm1pbl9mNjRfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5fZjMyX3gpKSkKc3ZmbG9hdDMyX3Qgc3ZtaW5fZjMyX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX2YxNl94KSkpCnN2ZmxvYXQxNl90IHN2bWluX2YxNl94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbl9mNjRfeikpKQpzdmZsb2F0NjRfdCBzdm1pbl9mNjRfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5fZjMyX3opKSkKc3ZmbG9hdDMyX3Qgc3ZtaW5fZjMyX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX2YxNl96KSkpCnN2ZmxvYXQxNl90IHN2bWluX2YxNl96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbl9zOF9tKSkpCnN2aW50OF90IHN2bWluX3M4X20oc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX3MzMl9tKSkpCnN2aW50MzJfdCBzdm1pbl9zMzJfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbl9zNjRfbSkpKQpzdmludDY0X3Qgc3ZtaW5fczY0X20oc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5fczE2X20pKSkKc3ZpbnQxNl90IHN2bWluX3MxNl9tKHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX3M4X3gpKSkKc3ZpbnQ4X3Qgc3ZtaW5fczhfeChzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5fczMyX3gpKSkKc3ZpbnQzMl90IHN2bWluX3MzMl94KHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX3M2NF94KSkpCnN2aW50NjRfdCBzdm1pbl9zNjRfeChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbl9zMTZfeCkpKQpzdmludDE2X3Qgc3ZtaW5fczE2X3goc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5fczhfeikpKQpzdmludDhfdCBzdm1pbl9zOF96KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbl9zMzJfeikpKQpzdmludDMyX3Qgc3ZtaW5fczMyX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5fczY0X3opKSkKc3ZpbnQ2NF90IHN2bWluX3M2NF96KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX3MxNl96KSkpCnN2aW50MTZfdCBzdm1pbl9zMTZfeihzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbl91OF9tKSkpCnN2dWludDhfdCBzdm1pbl91OF9tKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX3UzMl9tKSkpCnN2dWludDMyX3Qgc3ZtaW5fdTMyX20oc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbl91NjRfbSkpKQpzdnVpbnQ2NF90IHN2bWluX3U2NF9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5fdTE2X20pKSkKc3Z1aW50MTZfdCBzdm1pbl91MTZfbShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX3U4X3gpKSkKc3Z1aW50OF90IHN2bWluX3U4X3goc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5fdTMyX3gpKSkKc3Z1aW50MzJfdCBzdm1pbl91MzJfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX3U2NF94KSkpCnN2dWludDY0X3Qgc3ZtaW5fdTY0X3goc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbl91MTZfeCkpKQpzdnVpbnQxNl90IHN2bWluX3UxNl94KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5fdThfeikpKQpzdnVpbnQ4X3Qgc3ZtaW5fdThfeihzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbl91MzJfeikpKQpzdnVpbnQzMl90IHN2bWluX3UzMl96KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5fdTY0X3opKSkKc3Z1aW50NjRfdCBzdm1pbl91NjRfeihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX3UxNl96KSkpCnN2dWludDE2X3Qgc3ZtaW5fdTE2X3ooc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbm5tX25fZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZtaW5ubV9uX2Y2NF9tKHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5ubV9uX2YzMl9tKSkpCnN2ZmxvYXQzMl90IHN2bWlubm1fbl9mMzJfbShzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWlubm1fbl9mMTZfbSkpKQpzdmZsb2F0MTZfdCBzdm1pbm5tX25fZjE2X20oc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbm5tX25fZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZtaW5ubV9uX2Y2NF94KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5ubV9uX2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2bWlubm1fbl9mMzJfeChzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWlubm1fbl9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdm1pbm5tX25fZjE2X3goc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbm5tX25fZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZtaW5ubV9uX2Y2NF96KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5ubV9uX2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2bWlubm1fbl9mMzJfeihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWlubm1fbl9mMTZfeikpKQpzdmZsb2F0MTZfdCBzdm1pbm5tX25fZjE2X3ooc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbm5tX2Y2NF9tKSkpCnN2ZmxvYXQ2NF90IHN2bWlubm1fZjY0X20oc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWlubm1fZjMyX20pKSkKc3ZmbG9hdDMyX3Qgc3ZtaW5ubV9mMzJfbShzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5ubV9mMTZfbSkpKQpzdmZsb2F0MTZfdCBzdm1pbm5tX2YxNl9tKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbm5tX2Y2NF94KSkpCnN2ZmxvYXQ2NF90IHN2bWlubm1fZjY0X3goc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWlubm1fZjMyX3gpKSkKc3ZmbG9hdDMyX3Qgc3ZtaW5ubV9mMzJfeChzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5ubV9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdm1pbm5tX2YxNl94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbm5tX2Y2NF96KSkpCnN2ZmxvYXQ2NF90IHN2bWlubm1fZjY0X3ooc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWlubm1fZjMyX3opKSkKc3ZmbG9hdDMyX3Qgc3ZtaW5ubV9mMzJfeihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5ubV9mMTZfeikpKQpzdmZsb2F0MTZfdCBzdm1pbm5tX2YxNl96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbm5tdl9mNjQpKSkKZmxvYXQ2NF90IHN2bWlubm12X2Y2NChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbm5tdl9mMzIpKSkKZmxvYXQzMl90IHN2bWlubm12X2YzMihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbm5tdl9mMTYpKSkKZmxvYXQxNl90IHN2bWlubm12X2YxNihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbnZfZjY0KSkpCmZsb2F0NjRfdCBzdm1pbnZfZjY0KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWludl9mMzIpKSkKZmxvYXQzMl90IHN2bWludl9mMzIoc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW52X2YxNikpKQpmbG9hdDE2X3Qgc3ZtaW52X2YxNihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbnZfczgpKSkKaW50OF90IHN2bWludl9zOChzdmJvb2xfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbnZfczMyKSkpCmludDMyX3Qgc3ZtaW52X3MzMihzdmJvb2xfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW52X3M2NCkpKQppbnQ2NF90IHN2bWludl9zNjQoc3Zib29sX3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWludl9zMTYpKSkKaW50MTZfdCBzdm1pbnZfczE2KHN2Ym9vbF90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbnZfdTgpKSkKdWludDhfdCBzdm1pbnZfdTgoc3Zib29sX3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWludl91MzIpKSkKdWludDMyX3Qgc3ZtaW52X3UzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWludl91NjQpKSkKdWludDY0X3Qgc3ZtaW52X3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWludl91MTYpKSkKdWludDE2X3Qgc3ZtaW52X3UxNihzdmJvb2xfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhX25fZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZtbGFfbl9mNjRfbShzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9uX2YzMl9tKSkpCnN2ZmxvYXQzMl90IHN2bWxhX25fZjMyX20oc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFfbl9mMTZfbSkpKQpzdmZsb2F0MTZfdCBzdm1sYV9uX2YxNl9tKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIGZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhX25fZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZtbGFfbl9mNjRfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9uX2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2bWxhX25fZjMyX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFfbl9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdm1sYV9uX2YxNl94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIGZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhX25fZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZtbGFfbl9mNjRfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9uX2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2bWxhX25fZjMyX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFfbl9mMTZfeikpKQpzdmZsb2F0MTZfdCBzdm1sYV9uX2YxNl96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIGZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhX25fdThfbSkpKQpzdnVpbnQ4X3Qgc3ZtbGFfbl91OF9tKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhX25fdTMyX20pKSkKc3Z1aW50MzJfdCBzdm1sYV9uX3UzMl9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhX25fdTY0X20pKSkKc3Z1aW50NjRfdCBzdm1sYV9uX3U2NF9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhX25fdTE2X20pKSkKc3Z1aW50MTZfdCBzdm1sYV9uX3UxNl9tKHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhX25fczhfbSkpKQpzdmludDhfdCBzdm1sYV9uX3M4X20oc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFfbl9zMzJfbSkpKQpzdmludDMyX3Qgc3ZtbGFfbl9zMzJfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9uX3M2NF9tKSkpCnN2aW50NjRfdCBzdm1sYV9uX3M2NF9tKHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhX25fczE2X20pKSkKc3ZpbnQxNl90IHN2bWxhX25fczE2X20oc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFfbl91OF94KSkpCnN2dWludDhfdCBzdm1sYV9uX3U4X3goc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFfbl91MzJfeCkpKQpzdnVpbnQzMl90IHN2bWxhX25fdTMyX3goc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFfbl91NjRfeCkpKQpzdnVpbnQ2NF90IHN2bWxhX25fdTY0X3goc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFfbl91MTZfeCkpKQpzdnVpbnQxNl90IHN2bWxhX25fdTE2X3goc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFfbl9zOF94KSkpCnN2aW50OF90IHN2bWxhX25fczhfeChzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9uX3MzMl94KSkpCnN2aW50MzJfdCBzdm1sYV9uX3MzMl94KHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhX25fczY0X3gpKSkKc3ZpbnQ2NF90IHN2bWxhX25fczY0X3goc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFfbl9zMTZfeCkpKQpzdmludDE2X3Qgc3ZtbGFfbl9zMTZfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9uX3U4X3opKSkKc3Z1aW50OF90IHN2bWxhX25fdThfeihzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9uX3UzMl96KSkpCnN2dWludDMyX3Qgc3ZtbGFfbl91MzJfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9uX3U2NF96KSkpCnN2dWludDY0X3Qgc3ZtbGFfbl91NjRfeihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9uX3UxNl96KSkpCnN2dWludDE2X3Qgc3ZtbGFfbl91MTZfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9uX3M4X3opKSkKc3ZpbnQ4X3Qgc3ZtbGFfbl9zOF96KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhX25fczMyX3opKSkKc3ZpbnQzMl90IHN2bWxhX25fczMyX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFfbl9zNjRfeikpKQpzdmludDY0X3Qgc3ZtbGFfbl9zNjRfeihzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9uX3MxNl96KSkpCnN2aW50MTZfdCBzdm1sYV9uX3MxNl96KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhX2Y2NF9tKSkpCnN2ZmxvYXQ2NF90IHN2bWxhX2Y2NF9tKHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFfZjMyX20pKSkKc3ZmbG9hdDMyX3Qgc3ZtbGFfZjMyX20oc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9mMTZfbSkpKQpzdmZsb2F0MTZfdCBzdm1sYV9mMTZfbShzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhX2Y2NF94KSkpCnN2ZmxvYXQ2NF90IHN2bWxhX2Y2NF94KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFfZjMyX3gpKSkKc3ZmbG9hdDMyX3Qgc3ZtbGFfZjMyX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdm1sYV9mMTZfeChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhX2Y2NF96KSkpCnN2ZmxvYXQ2NF90IHN2bWxhX2Y2NF96KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFfZjMyX3opKSkKc3ZmbG9hdDMyX3Qgc3ZtbGFfZjMyX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9mMTZfeikpKQpzdmZsb2F0MTZfdCBzdm1sYV9mMTZfeihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhX3U4X20pKSkKc3Z1aW50OF90IHN2bWxhX3U4X20oc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV91MzJfbSkpKQpzdnVpbnQzMl90IHN2bWxhX3UzMl9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFfdTY0X20pKSkKc3Z1aW50NjRfdCBzdm1sYV91NjRfbShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhX3UxNl9tKSkpCnN2dWludDE2X3Qgc3ZtbGFfdTE2X20oc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9zOF9tKSkpCnN2aW50OF90IHN2bWxhX3M4X20oc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9zMzJfbSkpKQpzdmludDMyX3Qgc3ZtbGFfczMyX20oc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9zNjRfbSkpKQpzdmludDY0X3Qgc3ZtbGFfczY0X20oc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9zMTZfbSkpKQpzdmludDE2X3Qgc3ZtbGFfczE2X20oc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV91OF94KSkpCnN2dWludDhfdCBzdm1sYV91OF94KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFfdTMyX3gpKSkKc3Z1aW50MzJfdCBzdm1sYV91MzJfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhX3U2NF94KSkpCnN2dWludDY0X3Qgc3ZtbGFfdTY0X3goc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV91MTZfeCkpKQpzdnVpbnQxNl90IHN2bWxhX3UxNl94KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFfczhfeCkpKQpzdmludDhfdCBzdm1sYV9zOF94KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFfczMyX3gpKSkKc3ZpbnQzMl90IHN2bWxhX3MzMl94KHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFfczY0X3gpKSkKc3ZpbnQ2NF90IHN2bWxhX3M2NF94KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFfczE2X3gpKSkKc3ZpbnQxNl90IHN2bWxhX3MxNl94KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFfdThfeikpKQpzdnVpbnQ4X3Qgc3ZtbGFfdThfeihzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhX3UzMl96KSkpCnN2dWludDMyX3Qgc3ZtbGFfdTMyX3ooc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV91NjRfeikpKQpzdnVpbnQ2NF90IHN2bWxhX3U2NF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFfdTE2X3opKSkKc3Z1aW50MTZfdCBzdm1sYV91MTZfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhX3M4X3opKSkKc3ZpbnQ4X3Qgc3ZtbGFfczhfeihzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhX3MzMl96KSkpCnN2aW50MzJfdCBzdm1sYV9zMzJfeihzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhX3M2NF96KSkpCnN2aW50NjRfdCBzdm1sYV9zNjRfeihzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhX3MxNl96KSkpCnN2aW50MTZfdCBzdm1sYV9zMTZfeihzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhX2xhbmVfZjY0KSkpCnN2ZmxvYXQ2NF90IHN2bWxhX2xhbmVfZjY0KHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFfbGFuZV9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3ZtbGFfbGFuZV9mMzIoc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9sYW5lX2YxNikpKQpzdmZsb2F0MTZfdCBzdm1sYV9sYW5lX2YxNihzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzX25fZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZtbHNfbl9mNjRfbShzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19uX2YzMl9tKSkpCnN2ZmxvYXQzMl90IHN2bWxzX25fZjMyX20oc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNfbl9mMTZfbSkpKQpzdmZsb2F0MTZfdCBzdm1sc19uX2YxNl9tKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIGZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzX25fZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZtbHNfbl9mNjRfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19uX2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2bWxzX25fZjMyX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNfbl9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdm1sc19uX2YxNl94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIGZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzX25fZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZtbHNfbl9mNjRfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19uX2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2bWxzX25fZjMyX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNfbl9mMTZfeikpKQpzdmZsb2F0MTZfdCBzdm1sc19uX2YxNl96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIGZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzX25fdThfbSkpKQpzdnVpbnQ4X3Qgc3ZtbHNfbl91OF9tKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzX25fdTMyX20pKSkKc3Z1aW50MzJfdCBzdm1sc19uX3UzMl9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzX25fdTY0X20pKSkKc3Z1aW50NjRfdCBzdm1sc19uX3U2NF9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzX25fdTE2X20pKSkKc3Z1aW50MTZfdCBzdm1sc19uX3UxNl9tKHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzX25fczhfbSkpKQpzdmludDhfdCBzdm1sc19uX3M4X20oc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNfbl9zMzJfbSkpKQpzdmludDMyX3Qgc3ZtbHNfbl9zMzJfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19uX3M2NF9tKSkpCnN2aW50NjRfdCBzdm1sc19uX3M2NF9tKHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzX25fczE2X20pKSkKc3ZpbnQxNl90IHN2bWxzX25fczE2X20oc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNfbl91OF94KSkpCnN2dWludDhfdCBzdm1sc19uX3U4X3goc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNfbl91MzJfeCkpKQpzdnVpbnQzMl90IHN2bWxzX25fdTMyX3goc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNfbl91NjRfeCkpKQpzdnVpbnQ2NF90IHN2bWxzX25fdTY0X3goc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNfbl91MTZfeCkpKQpzdnVpbnQxNl90IHN2bWxzX25fdTE2X3goc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNfbl9zOF94KSkpCnN2aW50OF90IHN2bWxzX25fczhfeChzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19uX3MzMl94KSkpCnN2aW50MzJfdCBzdm1sc19uX3MzMl94KHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzX25fczY0X3gpKSkKc3ZpbnQ2NF90IHN2bWxzX25fczY0X3goc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNfbl9zMTZfeCkpKQpzdmludDE2X3Qgc3ZtbHNfbl9zMTZfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19uX3U4X3opKSkKc3Z1aW50OF90IHN2bWxzX25fdThfeihzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19uX3UzMl96KSkpCnN2dWludDMyX3Qgc3ZtbHNfbl91MzJfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19uX3U2NF96KSkpCnN2dWludDY0X3Qgc3ZtbHNfbl91NjRfeihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19uX3UxNl96KSkpCnN2dWludDE2X3Qgc3ZtbHNfbl91MTZfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19uX3M4X3opKSkKc3ZpbnQ4X3Qgc3ZtbHNfbl9zOF96KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzX25fczMyX3opKSkKc3ZpbnQzMl90IHN2bWxzX25fczMyX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNfbl9zNjRfeikpKQpzdmludDY0X3Qgc3ZtbHNfbl9zNjRfeihzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19uX3MxNl96KSkpCnN2aW50MTZfdCBzdm1sc19uX3MxNl96KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzX2Y2NF9tKSkpCnN2ZmxvYXQ2NF90IHN2bWxzX2Y2NF9tKHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNfZjMyX20pKSkKc3ZmbG9hdDMyX3Qgc3ZtbHNfZjMyX20oc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19mMTZfbSkpKQpzdmZsb2F0MTZfdCBzdm1sc19mMTZfbShzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzX2Y2NF94KSkpCnN2ZmxvYXQ2NF90IHN2bWxzX2Y2NF94KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNfZjMyX3gpKSkKc3ZmbG9hdDMyX3Qgc3ZtbHNfZjMyX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdm1sc19mMTZfeChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzX2Y2NF96KSkpCnN2ZmxvYXQ2NF90IHN2bWxzX2Y2NF96KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNfZjMyX3opKSkKc3ZmbG9hdDMyX3Qgc3ZtbHNfZjMyX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19mMTZfeikpKQpzdmZsb2F0MTZfdCBzdm1sc19mMTZfeihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzX3U4X20pKSkKc3Z1aW50OF90IHN2bWxzX3U4X20oc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc191MzJfbSkpKQpzdnVpbnQzMl90IHN2bWxzX3UzMl9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNfdTY0X20pKSkKc3Z1aW50NjRfdCBzdm1sc191NjRfbShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzX3UxNl9tKSkpCnN2dWludDE2X3Qgc3ZtbHNfdTE2X20oc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19zOF9tKSkpCnN2aW50OF90IHN2bWxzX3M4X20oc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19zMzJfbSkpKQpzdmludDMyX3Qgc3ZtbHNfczMyX20oc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19zNjRfbSkpKQpzdmludDY0X3Qgc3ZtbHNfczY0X20oc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19zMTZfbSkpKQpzdmludDE2X3Qgc3ZtbHNfczE2X20oc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc191OF94KSkpCnN2dWludDhfdCBzdm1sc191OF94KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNfdTMyX3gpKSkKc3Z1aW50MzJfdCBzdm1sc191MzJfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzX3U2NF94KSkpCnN2dWludDY0X3Qgc3ZtbHNfdTY0X3goc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc191MTZfeCkpKQpzdnVpbnQxNl90IHN2bWxzX3UxNl94KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNfczhfeCkpKQpzdmludDhfdCBzdm1sc19zOF94KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNfczMyX3gpKSkKc3ZpbnQzMl90IHN2bWxzX3MzMl94KHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNfczY0X3gpKSkKc3ZpbnQ2NF90IHN2bWxzX3M2NF94KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNfczE2X3gpKSkKc3ZpbnQxNl90IHN2bWxzX3MxNl94KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNfdThfeikpKQpzdnVpbnQ4X3Qgc3ZtbHNfdThfeihzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzX3UzMl96KSkpCnN2dWludDMyX3Qgc3ZtbHNfdTMyX3ooc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc191NjRfeikpKQpzdnVpbnQ2NF90IHN2bWxzX3U2NF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNfdTE2X3opKSkKc3Z1aW50MTZfdCBzdm1sc191MTZfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzX3M4X3opKSkKc3ZpbnQ4X3Qgc3ZtbHNfczhfeihzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzX3MzMl96KSkpCnN2aW50MzJfdCBzdm1sc19zMzJfeihzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzX3M2NF96KSkpCnN2aW50NjRfdCBzdm1sc19zNjRfeihzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzX3MxNl96KSkpCnN2aW50MTZfdCBzdm1sc19zMTZfeihzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzX2xhbmVfZjY0KSkpCnN2ZmxvYXQ2NF90IHN2bWxzX2xhbmVfZjY0KHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNfbGFuZV9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3ZtbHNfbGFuZV9mMzIoc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19sYW5lX2YxNikpKQpzdmZsb2F0MTZfdCBzdm1sc19sYW5lX2YxNihzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bW92X2JfeikpKQpzdmJvb2xfdCBzdm1vdl9iX3ooc3Zib29sX3QsIHN2Ym9vbF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2Jfbl9mNjRfbSkpKQpzdmZsb2F0NjRfdCBzdm1zYl9uX2Y2NF9tKHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QsIGZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXNiX25fZjMyX20pKSkKc3ZmbG9hdDMyX3Qgc3Ztc2Jfbl9mMzJfbShzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90LCBmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1zYl9uX2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2bXNiX25fZjE2X20oc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2Jfbl9mNjRfeCkpKQpzdmZsb2F0NjRfdCBzdm1zYl9uX2Y2NF94KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QsIGZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXNiX25fZjMyX3gpKSkKc3ZmbG9hdDMyX3Qgc3Ztc2Jfbl9mMzJfeChzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90LCBmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1zYl9uX2YxNl94KSkpCnN2ZmxvYXQxNl90IHN2bXNiX25fZjE2X3goc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2Jfbl9mNjRfeikpKQpzdmZsb2F0NjRfdCBzdm1zYl9uX2Y2NF96KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QsIGZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXNiX25fZjMyX3opKSkKc3ZmbG9hdDMyX3Qgc3Ztc2Jfbl9mMzJfeihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90LCBmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1zYl9uX2YxNl96KSkpCnN2ZmxvYXQxNl90IHN2bXNiX25fZjE2X3ooc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2Jfbl91OF9tKSkpCnN2dWludDhfdCBzdm1zYl9uX3U4X20oc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2Jfbl91MzJfbSkpKQpzdnVpbnQzMl90IHN2bXNiX25fdTMyX20oc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2Jfbl91NjRfbSkpKQpzdnVpbnQ2NF90IHN2bXNiX25fdTY0X20oc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2Jfbl91MTZfbSkpKQpzdnVpbnQxNl90IHN2bXNiX25fdTE2X20oc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2Jfbl9zOF9tKSkpCnN2aW50OF90IHN2bXNiX25fczhfbShzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1zYl9uX3MzMl9tKSkpCnN2aW50MzJfdCBzdm1zYl9uX3MzMl9tKHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXNiX25fczY0X20pKSkKc3ZpbnQ2NF90IHN2bXNiX25fczY0X20oc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2Jfbl9zMTZfbSkpKQpzdmludDE2X3Qgc3Ztc2Jfbl9zMTZfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1zYl9uX3U4X3gpKSkKc3Z1aW50OF90IHN2bXNiX25fdThfeChzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1zYl9uX3UzMl94KSkpCnN2dWludDMyX3Qgc3Ztc2Jfbl91MzJfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1zYl9uX3U2NF94KSkpCnN2dWludDY0X3Qgc3Ztc2Jfbl91NjRfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1zYl9uX3UxNl94KSkpCnN2dWludDE2X3Qgc3Ztc2Jfbl91MTZfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1zYl9uX3M4X3gpKSkKc3ZpbnQ4X3Qgc3Ztc2Jfbl9zOF94KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXNiX25fczMyX3gpKSkKc3ZpbnQzMl90IHN2bXNiX25fczMyX3goc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2Jfbl9zNjRfeCkpKQpzdmludDY0X3Qgc3Ztc2Jfbl9zNjRfeChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1zYl9uX3MxNl94KSkpCnN2aW50MTZfdCBzdm1zYl9uX3MxNl94KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXNiX25fdThfeikpKQpzdnVpbnQ4X3Qgc3Ztc2Jfbl91OF96KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXNiX25fdTMyX3opKSkKc3Z1aW50MzJfdCBzdm1zYl9uX3UzMl96KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXNiX25fdTY0X3opKSkKc3Z1aW50NjRfdCBzdm1zYl9uX3U2NF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXNiX25fdTE2X3opKSkKc3Z1aW50MTZfdCBzdm1zYl9uX3UxNl96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXNiX25fczhfeikpKQpzdmludDhfdCBzdm1zYl9uX3M4X3ooc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2Jfbl9zMzJfeikpKQpzdmludDMyX3Qgc3Ztc2Jfbl9zMzJfeihzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1zYl9uX3M2NF96KSkpCnN2aW50NjRfdCBzdm1zYl9uX3M2NF96KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXNiX25fczE2X3opKSkKc3ZpbnQxNl90IHN2bXNiX25fczE2X3ooc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2JfZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3Ztc2JfZjY0X20oc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1zYl9mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdm1zYl9mMzJfbShzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXNiX2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2bXNiX2YxNl9tKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2JfZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3Ztc2JfZjY0X3goc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1zYl9mMzJfeCkpKQpzdmZsb2F0MzJfdCBzdm1zYl9mMzJfeChzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXNiX2YxNl94KSkpCnN2ZmxvYXQxNl90IHN2bXNiX2YxNl94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2JfZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3Ztc2JfZjY0X3ooc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1zYl9mMzJfeikpKQpzdmZsb2F0MzJfdCBzdm1zYl9mMzJfeihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXNiX2YxNl96KSkpCnN2ZmxvYXQxNl90IHN2bXNiX2YxNl96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2JfdThfbSkpKQpzdnVpbnQ4X3Qgc3Ztc2JfdThfbShzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXNiX3UzMl9tKSkpCnN2dWludDMyX3Qgc3Ztc2JfdTMyX20oc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1zYl91NjRfbSkpKQpzdnVpbnQ2NF90IHN2bXNiX3U2NF9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2JfdTE2X20pKSkKc3Z1aW50MTZfdCBzdm1zYl91MTZfbShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXNiX3M4X20pKSkKc3ZpbnQ4X3Qgc3Ztc2JfczhfbShzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXNiX3MzMl9tKSkpCnN2aW50MzJfdCBzdm1zYl9zMzJfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXNiX3M2NF9tKSkpCnN2aW50NjRfdCBzdm1zYl9zNjRfbShzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXNiX3MxNl9tKSkpCnN2aW50MTZfdCBzdm1zYl9zMTZfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXNiX3U4X3gpKSkKc3Z1aW50OF90IHN2bXNiX3U4X3goc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1zYl91MzJfeCkpKQpzdnVpbnQzMl90IHN2bXNiX3UzMl94KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2JfdTY0X3gpKSkKc3Z1aW50NjRfdCBzdm1zYl91NjRfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXNiX3UxNl94KSkpCnN2dWludDE2X3Qgc3Ztc2JfdTE2X3goc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1zYl9zOF94KSkpCnN2aW50OF90IHN2bXNiX3M4X3goc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1zYl9zMzJfeCkpKQpzdmludDMyX3Qgc3Ztc2JfczMyX3goc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1zYl9zNjRfeCkpKQpzdmludDY0X3Qgc3Ztc2JfczY0X3goc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1zYl9zMTZfeCkpKQpzdmludDE2X3Qgc3Ztc2JfczE2X3goc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1zYl91OF96KSkpCnN2dWludDhfdCBzdm1zYl91OF96KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2JfdTMyX3opKSkKc3Z1aW50MzJfdCBzdm1zYl91MzJfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXNiX3U2NF96KSkpCnN2dWludDY0X3Qgc3Ztc2JfdTY0X3ooc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1zYl91MTZfeikpKQpzdnVpbnQxNl90IHN2bXNiX3UxNl96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2JfczhfeikpKQpzdmludDhfdCBzdm1zYl9zOF96KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2JfczMyX3opKSkKc3ZpbnQzMl90IHN2bXNiX3MzMl96KHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2JfczY0X3opKSkKc3ZpbnQ2NF90IHN2bXNiX3M2NF96KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2JfczE2X3opKSkKc3ZpbnQxNl90IHN2bXNiX3MxNl96KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfbl9mNjRfbSkpKQpzdmZsb2F0NjRfdCBzdm11bF9uX2Y2NF9tKHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfbl9mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdm11bF9uX2YzMl9tKHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfbl9mMTZfbSkpKQpzdmZsb2F0MTZfdCBzdm11bF9uX2YxNl9tKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfbl9mNjRfeCkpKQpzdmZsb2F0NjRfdCBzdm11bF9uX2Y2NF94KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfbl9mMzJfeCkpKQpzdmZsb2F0MzJfdCBzdm11bF9uX2YzMl94KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfbl9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdm11bF9uX2YxNl94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfbl9mNjRfeikpKQpzdmZsb2F0NjRfdCBzdm11bF9uX2Y2NF96KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfbl9mMzJfeikpKQpzdmZsb2F0MzJfdCBzdm11bF9uX2YzMl96KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfbl9mMTZfeikpKQpzdmZsb2F0MTZfdCBzdm11bF9uX2YxNl96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfbl91OF9tKSkpCnN2dWludDhfdCBzdm11bF9uX3U4X20oc3Zib29sX3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsX25fdTMyX20pKSkKc3Z1aW50MzJfdCBzdm11bF9uX3UzMl9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsX25fdTY0X20pKSkKc3Z1aW50NjRfdCBzdm11bF9uX3U2NF9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsX25fdTE2X20pKSkKc3Z1aW50MTZfdCBzdm11bF9uX3UxNl9tKHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsX25fczhfbSkpKQpzdmludDhfdCBzdm11bF9uX3M4X20oc3Zib29sX3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bF9uX3MzMl9tKSkpCnN2aW50MzJfdCBzdm11bF9uX3MzMl9tKHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bF9uX3M2NF9tKSkpCnN2aW50NjRfdCBzdm11bF9uX3M2NF9tKHN2Ym9vbF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bF9uX3MxNl9tKSkpCnN2aW50MTZfdCBzdm11bF9uX3MxNl9tKHN2Ym9vbF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bF9uX3U4X3gpKSkKc3Z1aW50OF90IHN2bXVsX25fdThfeChzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfbl91MzJfeCkpKQpzdnVpbnQzMl90IHN2bXVsX25fdTMyX3goc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfbl91NjRfeCkpKQpzdnVpbnQ2NF90IHN2bXVsX25fdTY0X3goc3Zib29sX3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfbl91MTZfeCkpKQpzdnVpbnQxNl90IHN2bXVsX25fdTE2X3goc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfbl9zOF94KSkpCnN2aW50OF90IHN2bXVsX25fczhfeChzdmJvb2xfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsX25fczMyX3gpKSkKc3ZpbnQzMl90IHN2bXVsX25fczMyX3goc3Zib29sX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsX25fczY0X3gpKSkKc3ZpbnQ2NF90IHN2bXVsX25fczY0X3goc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsX25fczE2X3gpKSkKc3ZpbnQxNl90IHN2bXVsX25fczE2X3goc3Zib29sX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsX25fdThfeikpKQpzdnVpbnQ4X3Qgc3ZtdWxfbl91OF96KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bF9uX3UzMl96KSkpCnN2dWludDMyX3Qgc3ZtdWxfbl91MzJfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bF9uX3U2NF96KSkpCnN2dWludDY0X3Qgc3ZtdWxfbl91NjRfeihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bF9uX3UxNl96KSkpCnN2dWludDE2X3Qgc3ZtdWxfbl91MTZfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bF9uX3M4X3opKSkKc3ZpbnQ4X3Qgc3ZtdWxfbl9zOF96KHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfbl9zMzJfeikpKQpzdmludDMyX3Qgc3ZtdWxfbl9zMzJfeihzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfbl9zNjRfeikpKQpzdmludDY0X3Qgc3ZtdWxfbl9zNjRfeihzdmJvb2xfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfbl9zMTZfeikpKQpzdmludDE2X3Qgc3ZtdWxfbl9zMTZfeihzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZtdWxfZjY0X20oc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsX2YzMl9tKSkpCnN2ZmxvYXQzMl90IHN2bXVsX2YzMl9tKHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bF9mMTZfbSkpKQpzdmZsb2F0MTZfdCBzdm11bF9mMTZfbShzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZtdWxfZjY0X3goc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsX2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2bXVsX2YzMl94KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bF9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdm11bF9mMTZfeChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZtdWxfZjY0X3ooc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsX2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2bXVsX2YzMl96KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bF9mMTZfeikpKQpzdmZsb2F0MTZfdCBzdm11bF9mMTZfeihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfdThfbSkpKQpzdnVpbnQ4X3Qgc3ZtdWxfdThfbShzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bF91MzJfbSkpKQpzdnVpbnQzMl90IHN2bXVsX3UzMl9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfdTY0X20pKSkKc3Z1aW50NjRfdCBzdm11bF91NjRfbShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsX3UxNl9tKSkpCnN2dWludDE2X3Qgc3ZtdWxfdTE2X20oc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bF9zOF9tKSkpCnN2aW50OF90IHN2bXVsX3M4X20oc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsX3MzMl9tKSkpCnN2aW50MzJfdCBzdm11bF9zMzJfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bF9zNjRfbSkpKQpzdmludDY0X3Qgc3ZtdWxfczY0X20oc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfczE2X20pKSkKc3ZpbnQxNl90IHN2bXVsX3MxNl9tKHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsX3U4X3gpKSkKc3Z1aW50OF90IHN2bXVsX3U4X3goc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfdTMyX3gpKSkKc3Z1aW50MzJfdCBzdm11bF91MzJfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsX3U2NF94KSkpCnN2dWludDY0X3Qgc3ZtdWxfdTY0X3goc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bF91MTZfeCkpKQpzdnVpbnQxNl90IHN2bXVsX3UxNl94KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfczhfeCkpKQpzdmludDhfdCBzdm11bF9zOF94KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bF9zMzJfeCkpKQpzdmludDMyX3Qgc3ZtdWxfczMyX3goc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfczY0X3gpKSkKc3ZpbnQ2NF90IHN2bXVsX3M2NF94KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsX3MxNl94KSkpCnN2aW50MTZfdCBzdm11bF9zMTZfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bF91OF96KSkpCnN2dWludDhfdCBzdm11bF91OF96KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsX3UzMl96KSkpCnN2dWludDMyX3Qgc3ZtdWxfdTMyX3ooc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bF91NjRfeikpKQpzdnVpbnQ2NF90IHN2bXVsX3U2NF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfdTE2X3opKSkKc3Z1aW50MTZfdCBzdm11bF91MTZfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsX3M4X3opKSkKc3ZpbnQ4X3Qgc3ZtdWxfczhfeihzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfczMyX3opKSkKc3ZpbnQzMl90IHN2bXVsX3MzMl96KHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsX3M2NF96KSkpCnN2aW50NjRfdCBzdm11bF9zNjRfeihzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bF9zMTZfeikpKQpzdmludDE2X3Qgc3ZtdWxfczE2X3ooc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfbGFuZV9mNjQpKSkKc3ZmbG9hdDY0X3Qgc3ZtdWxfbGFuZV9mNjQoc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsX2xhbmVfZjMyKSkpCnN2ZmxvYXQzMl90IHN2bXVsX2xhbmVfZjMyKHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bF9sYW5lX2YxNikpKQpzdmZsb2F0MTZfdCBzdm11bF9sYW5lX2YxNihzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxoX25fczhfbSkpKQpzdmludDhfdCBzdm11bGhfbl9zOF9tKHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxoX25fczMyX20pKSkKc3ZpbnQzMl90IHN2bXVsaF9uX3MzMl9tKHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGhfbl9zNjRfbSkpKQpzdmludDY0X3Qgc3ZtdWxoX25fczY0X20oc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsaF9uX3MxNl9tKSkpCnN2aW50MTZfdCBzdm11bGhfbl9zMTZfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxoX25fczhfeCkpKQpzdmludDhfdCBzdm11bGhfbl9zOF94KHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxoX25fczMyX3gpKSkKc3ZpbnQzMl90IHN2bXVsaF9uX3MzMl94KHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGhfbl9zNjRfeCkpKQpzdmludDY0X3Qgc3ZtdWxoX25fczY0X3goc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsaF9uX3MxNl94KSkpCnN2aW50MTZfdCBzdm11bGhfbl9zMTZfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxoX25fczhfeikpKQpzdmludDhfdCBzdm11bGhfbl9zOF96KHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxoX25fczMyX3opKSkKc3ZpbnQzMl90IHN2bXVsaF9uX3MzMl96KHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGhfbl9zNjRfeikpKQpzdmludDY0X3Qgc3ZtdWxoX25fczY0X3ooc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsaF9uX3MxNl96KSkpCnN2aW50MTZfdCBzdm11bGhfbl9zMTZfeihzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxoX25fdThfbSkpKQpzdnVpbnQ4X3Qgc3ZtdWxoX25fdThfbShzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxoX25fdTMyX20pKSkKc3Z1aW50MzJfdCBzdm11bGhfbl91MzJfbShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGhfbl91NjRfbSkpKQpzdnVpbnQ2NF90IHN2bXVsaF9uX3U2NF9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsaF9uX3UxNl9tKSkpCnN2dWludDE2X3Qgc3ZtdWxoX25fdTE2X20oc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxoX25fdThfeCkpKQpzdnVpbnQ4X3Qgc3ZtdWxoX25fdThfeChzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxoX25fdTMyX3gpKSkKc3Z1aW50MzJfdCBzdm11bGhfbl91MzJfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGhfbl91NjRfeCkpKQpzdnVpbnQ2NF90IHN2bXVsaF9uX3U2NF94KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsaF9uX3UxNl94KSkpCnN2dWludDE2X3Qgc3ZtdWxoX25fdTE2X3goc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxoX25fdThfeikpKQpzdnVpbnQ4X3Qgc3ZtdWxoX25fdThfeihzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxoX25fdTMyX3opKSkKc3Z1aW50MzJfdCBzdm11bGhfbl91MzJfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGhfbl91NjRfeikpKQpzdnVpbnQ2NF90IHN2bXVsaF9uX3U2NF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsaF9uX3UxNl96KSkpCnN2dWludDE2X3Qgc3ZtdWxoX25fdTE2X3ooc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxoX3M4X20pKSkKc3ZpbnQ4X3Qgc3ZtdWxoX3M4X20oc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsaF9zMzJfbSkpKQpzdmludDMyX3Qgc3ZtdWxoX3MzMl9tKHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsaF9zNjRfbSkpKQpzdmludDY0X3Qgc3ZtdWxoX3M2NF9tKHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsaF9zMTZfbSkpKQpzdmludDE2X3Qgc3ZtdWxoX3MxNl9tKHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsaF9zOF94KSkpCnN2aW50OF90IHN2bXVsaF9zOF94KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGhfczMyX3gpKSkKc3ZpbnQzMl90IHN2bXVsaF9zMzJfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGhfczY0X3gpKSkKc3ZpbnQ2NF90IHN2bXVsaF9zNjRfeChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGhfczE2X3gpKSkKc3ZpbnQxNl90IHN2bXVsaF9zMTZfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGhfczhfeikpKQpzdmludDhfdCBzdm11bGhfczhfeihzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxoX3MzMl96KSkpCnN2aW50MzJfdCBzdm11bGhfczMyX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxoX3M2NF96KSkpCnN2aW50NjRfdCBzdm11bGhfczY0X3ooc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxoX3MxNl96KSkpCnN2aW50MTZfdCBzdm11bGhfczE2X3ooc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxoX3U4X20pKSkKc3Z1aW50OF90IHN2bXVsaF91OF9tKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsaF91MzJfbSkpKQpzdnVpbnQzMl90IHN2bXVsaF91MzJfbShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsaF91NjRfbSkpKQpzdnVpbnQ2NF90IHN2bXVsaF91NjRfbShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsaF91MTZfbSkpKQpzdnVpbnQxNl90IHN2bXVsaF91MTZfbShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsaF91OF94KSkpCnN2dWludDhfdCBzdm11bGhfdThfeChzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGhfdTMyX3gpKSkKc3Z1aW50MzJfdCBzdm11bGhfdTMyX3goc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGhfdTY0X3gpKSkKc3Z1aW50NjRfdCBzdm11bGhfdTY0X3goc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGhfdTE2X3gpKSkKc3Z1aW50MTZfdCBzdm11bGhfdTE2X3goc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGhfdThfeikpKQpzdnVpbnQ4X3Qgc3ZtdWxoX3U4X3ooc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxoX3UzMl96KSkpCnN2dWludDMyX3Qgc3ZtdWxoX3UzMl96KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxoX3U2NF96KSkpCnN2dWludDY0X3Qgc3ZtdWxoX3U2NF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxoX3UxNl96KSkpCnN2dWludDE2X3Qgc3ZtdWxoX3UxNl96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWx4X25fZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZtdWx4X25fZjY0X20oc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bHhfbl9mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdm11bHhfbl9mMzJfbShzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVseF9uX2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2bXVseF9uX2YxNl9tKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWx4X25fZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZtdWx4X25fZjY0X3goc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bHhfbl9mMzJfeCkpKQpzdmZsb2F0MzJfdCBzdm11bHhfbl9mMzJfeChzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVseF9uX2YxNl94KSkpCnN2ZmxvYXQxNl90IHN2bXVseF9uX2YxNl94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWx4X25fZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZtdWx4X25fZjY0X3ooc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bHhfbl9mMzJfeikpKQpzdmZsb2F0MzJfdCBzdm11bHhfbl9mMzJfeihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVseF9uX2YxNl96KSkpCnN2ZmxvYXQxNl90IHN2bXVseF9uX2YxNl96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWx4X2Y2NF9tKSkpCnN2ZmxvYXQ2NF90IHN2bXVseF9mNjRfbShzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWx4X2YzMl9tKSkpCnN2ZmxvYXQzMl90IHN2bXVseF9mMzJfbShzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWx4X2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2bXVseF9mMTZfbShzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWx4X2Y2NF94KSkpCnN2ZmxvYXQ2NF90IHN2bXVseF9mNjRfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWx4X2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2bXVseF9mMzJfeChzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWx4X2YxNl94KSkpCnN2ZmxvYXQxNl90IHN2bXVseF9mMTZfeChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWx4X2Y2NF96KSkpCnN2ZmxvYXQ2NF90IHN2bXVseF9mNjRfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWx4X2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2bXVseF9mMzJfeihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWx4X2YxNl96KSkpCnN2ZmxvYXQxNl90IHN2bXVseF9mMTZfeihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZuYW5kX2JfeikpKQpzdmJvb2xfdCBzdm5hbmRfYl96KHN2Ym9vbF90LCBzdmJvb2xfdCwgc3Zib29sX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5lZ19mNjRfbSkpKQpzdmZsb2F0NjRfdCBzdm5lZ19mNjRfbShzdmZsb2F0NjRfdCwgc3Zib29sX3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZuZWdfZjMyX20pKSkKc3ZmbG9hdDMyX3Qgc3ZuZWdfZjMyX20oc3ZmbG9hdDMyX3QsIHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bmVnX2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2bmVnX2YxNl9tKHN2ZmxvYXQxNl90LCBzdmJvb2xfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5lZ19mNjRfeCkpKQpzdmZsb2F0NjRfdCBzdm5lZ19mNjRfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5lZ19mMzJfeCkpKQpzdmZsb2F0MzJfdCBzdm5lZ19mMzJfeChzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5lZ19mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdm5lZ19mMTZfeChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5lZ19mNjRfeikpKQpzdmZsb2F0NjRfdCBzdm5lZ19mNjRfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5lZ19mMzJfeikpKQpzdmZsb2F0MzJfdCBzdm5lZ19mMzJfeihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5lZ19mMTZfeikpKQpzdmZsb2F0MTZfdCBzdm5lZ19mMTZfeihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5lZ19zOF9tKSkpCnN2aW50OF90IHN2bmVnX3M4X20oc3ZpbnQ4X3QsIHN2Ym9vbF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bmVnX3MzMl9tKSkpCnN2aW50MzJfdCBzdm5lZ19zMzJfbShzdmludDMyX3QsIHN2Ym9vbF90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5lZ19zNjRfbSkpKQpzdmludDY0X3Qgc3ZuZWdfczY0X20oc3ZpbnQ2NF90LCBzdmJvb2xfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZuZWdfczE2X20pKSkKc3ZpbnQxNl90IHN2bmVnX3MxNl9tKHN2aW50MTZfdCwgc3Zib29sX3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bmVnX3M4X3gpKSkKc3ZpbnQ4X3Qgc3ZuZWdfczhfeChzdmJvb2xfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5lZ19zMzJfeCkpKQpzdmludDMyX3Qgc3ZuZWdfczMyX3goc3Zib29sX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bmVnX3M2NF94KSkpCnN2aW50NjRfdCBzdm5lZ19zNjRfeChzdmJvb2xfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZuZWdfczE2X3gpKSkKc3ZpbnQxNl90IHN2bmVnX3MxNl94KHN2Ym9vbF90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5lZ19zOF96KSkpCnN2aW50OF90IHN2bmVnX3M4X3ooc3Zib29sX3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZuZWdfczMyX3opKSkKc3ZpbnQzMl90IHN2bmVnX3MzMl96KHN2Ym9vbF90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5lZ19zNjRfeikpKQpzdmludDY0X3Qgc3ZuZWdfczY0X3ooc3Zib29sX3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bmVnX3MxNl96KSkpCnN2aW50MTZfdCBzdm5lZ19zMTZfeihzdmJvb2xfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWFkX25fZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZubWFkX25fZjY0X20oc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWFkX25fZjMyX20pKSkKc3ZmbG9hdDMyX3Qgc3ZubWFkX25fZjMyX20oc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWFkX25fZjE2X20pKSkKc3ZmbG9hdDE2X3Qgc3ZubWFkX25fZjE2X20oc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWFkX25fZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZubWFkX25fZjY0X3goc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWFkX25fZjMyX3gpKSkKc3ZmbG9hdDMyX3Qgc3ZubWFkX25fZjMyX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWFkX25fZjE2X3gpKSkKc3ZmbG9hdDE2X3Qgc3ZubWFkX25fZjE2X3goc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWFkX25fZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZubWFkX25fZjY0X3ooc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWFkX25fZjMyX3opKSkKc3ZmbG9hdDMyX3Qgc3ZubWFkX25fZjMyX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWFkX25fZjE2X3opKSkKc3ZmbG9hdDE2X3Qgc3ZubWFkX25fZjE2X3ooc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWFkX2Y2NF9tKSkpCnN2ZmxvYXQ2NF90IHN2bm1hZF9mNjRfbShzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm1hZF9mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdm5tYWRfZjMyX20oc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5tYWRfZjE2X20pKSkKc3ZmbG9hdDE2X3Qgc3ZubWFkX2YxNl9tKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWFkX2Y2NF94KSkpCnN2ZmxvYXQ2NF90IHN2bm1hZF9mNjRfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm1hZF9mMzJfeCkpKQpzdmZsb2F0MzJfdCBzdm5tYWRfZjMyX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5tYWRfZjE2X3gpKSkKc3ZmbG9hdDE2X3Qgc3ZubWFkX2YxNl94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWFkX2Y2NF96KSkpCnN2ZmxvYXQ2NF90IHN2bm1hZF9mNjRfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm1hZF9mMzJfeikpKQpzdmZsb2F0MzJfdCBzdm5tYWRfZjMyX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5tYWRfZjE2X3opKSkKc3ZmbG9hdDE2X3Qgc3ZubWFkX2YxNl96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWxhX25fZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZubWxhX25fZjY0X20oc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWxhX25fZjMyX20pKSkKc3ZmbG9hdDMyX3Qgc3ZubWxhX25fZjMyX20oc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWxhX25fZjE2X20pKSkKc3ZmbG9hdDE2X3Qgc3ZubWxhX25fZjE2X20oc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWxhX25fZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZubWxhX25fZjY0X3goc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWxhX25fZjMyX3gpKSkKc3ZmbG9hdDMyX3Qgc3ZubWxhX25fZjMyX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWxhX25fZjE2X3gpKSkKc3ZmbG9hdDE2X3Qgc3ZubWxhX25fZjE2X3goc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWxhX25fZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZubWxhX25fZjY0X3ooc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWxhX25fZjMyX3opKSkKc3ZmbG9hdDMyX3Qgc3ZubWxhX25fZjMyX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWxhX25fZjE2X3opKSkKc3ZmbG9hdDE2X3Qgc3ZubWxhX25fZjE2X3ooc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWxhX2Y2NF9tKSkpCnN2ZmxvYXQ2NF90IHN2bm1sYV9mNjRfbShzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm1sYV9mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdm5tbGFfZjMyX20oc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5tbGFfZjE2X20pKSkKc3ZmbG9hdDE2X3Qgc3ZubWxhX2YxNl9tKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWxhX2Y2NF94KSkpCnN2ZmxvYXQ2NF90IHN2bm1sYV9mNjRfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm1sYV9mMzJfeCkpKQpzdmZsb2F0MzJfdCBzdm5tbGFfZjMyX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5tbGFfZjE2X3gpKSkKc3ZmbG9hdDE2X3Qgc3ZubWxhX2YxNl94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWxhX2Y2NF96KSkpCnN2ZmxvYXQ2NF90IHN2bm1sYV9mNjRfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm1sYV9mMzJfeikpKQpzdmZsb2F0MzJfdCBzdm5tbGFfZjMyX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5tbGFfZjE2X3opKSkKc3ZmbG9hdDE2X3Qgc3ZubWxhX2YxNl96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWxzX25fZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZubWxzX25fZjY0X20oc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWxzX25fZjMyX20pKSkKc3ZmbG9hdDMyX3Qgc3ZubWxzX25fZjMyX20oc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWxzX25fZjE2X20pKSkKc3ZmbG9hdDE2X3Qgc3ZubWxzX25fZjE2X20oc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWxzX25fZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZubWxzX25fZjY0X3goc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWxzX25fZjMyX3gpKSkKc3ZmbG9hdDMyX3Qgc3ZubWxzX25fZjMyX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWxzX25fZjE2X3gpKSkKc3ZmbG9hdDE2X3Qgc3ZubWxzX25fZjE2X3goc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWxzX25fZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZubWxzX25fZjY0X3ooc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWxzX25fZjMyX3opKSkKc3ZmbG9hdDMyX3Qgc3ZubWxzX25fZjMyX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWxzX25fZjE2X3opKSkKc3ZmbG9hdDE2X3Qgc3ZubWxzX25fZjE2X3ooc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWxzX2Y2NF9tKSkpCnN2ZmxvYXQ2NF90IHN2bm1sc19mNjRfbShzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm1sc19mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdm5tbHNfZjMyX20oc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5tbHNfZjE2X20pKSkKc3ZmbG9hdDE2X3Qgc3ZubWxzX2YxNl9tKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWxzX2Y2NF94KSkpCnN2ZmxvYXQ2NF90IHN2bm1sc19mNjRfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm1sc19mMzJfeCkpKQpzdmZsb2F0MzJfdCBzdm5tbHNfZjMyX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5tbHNfZjE2X3gpKSkKc3ZmbG9hdDE2X3Qgc3ZubWxzX2YxNl94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWxzX2Y2NF96KSkpCnN2ZmxvYXQ2NF90IHN2bm1sc19mNjRfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm1sc19mMzJfeikpKQpzdmZsb2F0MzJfdCBzdm5tbHNfZjMyX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5tbHNfZjE2X3opKSkKc3ZmbG9hdDE2X3Qgc3ZubWxzX2YxNl96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubXNiX25fZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZubXNiX25fZjY0X20oc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubXNiX25fZjMyX20pKSkKc3ZmbG9hdDMyX3Qgc3ZubXNiX25fZjMyX20oc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubXNiX25fZjE2X20pKSkKc3ZmbG9hdDE2X3Qgc3ZubXNiX25fZjE2X20oc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubXNiX25fZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZubXNiX25fZjY0X3goc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubXNiX25fZjMyX3gpKSkKc3ZmbG9hdDMyX3Qgc3ZubXNiX25fZjMyX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubXNiX25fZjE2X3gpKSkKc3ZmbG9hdDE2X3Qgc3ZubXNiX25fZjE2X3goc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubXNiX25fZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZubXNiX25fZjY0X3ooc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubXNiX25fZjMyX3opKSkKc3ZmbG9hdDMyX3Qgc3ZubXNiX25fZjMyX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubXNiX25fZjE2X3opKSkKc3ZmbG9hdDE2X3Qgc3ZubXNiX25fZjE2X3ooc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubXNiX2Y2NF9tKSkpCnN2ZmxvYXQ2NF90IHN2bm1zYl9mNjRfbShzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm1zYl9mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdm5tc2JfZjMyX20oc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5tc2JfZjE2X20pKSkKc3ZmbG9hdDE2X3Qgc3ZubXNiX2YxNl9tKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubXNiX2Y2NF94KSkpCnN2ZmxvYXQ2NF90IHN2bm1zYl9mNjRfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm1zYl9mMzJfeCkpKQpzdmZsb2F0MzJfdCBzdm5tc2JfZjMyX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5tc2JfZjE2X3gpKSkKc3ZmbG9hdDE2X3Qgc3ZubXNiX2YxNl94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubXNiX2Y2NF96KSkpCnN2ZmxvYXQ2NF90IHN2bm1zYl9mNjRfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm1zYl9mMzJfeikpKQpzdmZsb2F0MzJfdCBzdm5tc2JfZjMyX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5tc2JfZjE2X3opKSkKc3ZmbG9hdDE2X3Qgc3ZubXNiX2YxNl96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zub3JfYl96KSkpCnN2Ym9vbF90IHN2bm9yX2JfeihzdmJvb2xfdCwgc3Zib29sX3QsIHN2Ym9vbF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zub3RfYl96KSkpCnN2Ym9vbF90IHN2bm90X2JfeihzdmJvb2xfdCwgc3Zib29sX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5vdF91OF9tKSkpCnN2dWludDhfdCBzdm5vdF91OF9tKHN2dWludDhfdCwgc3Zib29sX3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm90X3UzMl9tKSkpCnN2dWludDMyX3Qgc3Zub3RfdTMyX20oc3Z1aW50MzJfdCwgc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5vdF91NjRfbSkpKQpzdnVpbnQ2NF90IHN2bm90X3U2NF9tKHN2dWludDY0X3QsIHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zub3RfdTE2X20pKSkKc3Z1aW50MTZfdCBzdm5vdF91MTZfbShzdnVpbnQxNl90LCBzdmJvb2xfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm90X3M4X20pKSkKc3ZpbnQ4X3Qgc3Zub3RfczhfbShzdmludDhfdCwgc3Zib29sX3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zub3RfczMyX20pKSkKc3ZpbnQzMl90IHN2bm90X3MzMl9tKHN2aW50MzJfdCwgc3Zib29sX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm90X3M2NF9tKSkpCnN2aW50NjRfdCBzdm5vdF9zNjRfbShzdmludDY0X3QsIHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5vdF9zMTZfbSkpKQpzdmludDE2X3Qgc3Zub3RfczE2X20oc3ZpbnQxNl90LCBzdmJvb2xfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zub3RfdThfeCkpKQpzdnVpbnQ4X3Qgc3Zub3RfdThfeChzdmJvb2xfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zub3RfdTMyX3gpKSkKc3Z1aW50MzJfdCBzdm5vdF91MzJfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm90X3U2NF94KSkpCnN2dWludDY0X3Qgc3Zub3RfdTY0X3goc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5vdF91MTZfeCkpKQpzdnVpbnQxNl90IHN2bm90X3UxNl94KHN2Ym9vbF90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zub3RfczhfeCkpKQpzdmludDhfdCBzdm5vdF9zOF94KHN2Ym9vbF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm90X3MzMl94KSkpCnN2aW50MzJfdCBzdm5vdF9zMzJfeChzdmJvb2xfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zub3RfczY0X3gpKSkKc3ZpbnQ2NF90IHN2bm90X3M2NF94KHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5vdF9zMTZfeCkpKQpzdmludDE2X3Qgc3Zub3RfczE2X3goc3Zib29sX3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm90X3U4X3opKSkKc3Z1aW50OF90IHN2bm90X3U4X3ooc3Zib29sX3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm90X3UzMl96KSkpCnN2dWludDMyX3Qgc3Zub3RfdTMyX3ooc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5vdF91NjRfeikpKQpzdnVpbnQ2NF90IHN2bm90X3U2NF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zub3RfdTE2X3opKSkKc3Z1aW50MTZfdCBzdm5vdF91MTZfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm90X3M4X3opKSkKc3ZpbnQ4X3Qgc3Zub3RfczhfeihzdmJvb2xfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5vdF9zMzJfeikpKQpzdmludDMyX3Qgc3Zub3RfczMyX3ooc3Zib29sX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm90X3M2NF96KSkpCnN2aW50NjRfdCBzdm5vdF9zNjRfeihzdmJvb2xfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zub3RfczE2X3opKSkKc3ZpbnQxNl90IHN2bm90X3MxNl96KHN2Ym9vbF90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm9ybl9iX3opKSkKc3Zib29sX3Qgc3Zvcm5fYl96KHN2Ym9vbF90LCBzdmJvb2xfdCwgc3Zib29sX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm9ycl9iX3opKSkKc3Zib29sX3Qgc3ZvcnJfYl96KHN2Ym9vbF90LCBzdmJvb2xfdCwgc3Zib29sX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm9ycl9uX3U4X20pKSkKc3Z1aW50OF90IHN2b3JyX25fdThfbShzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZvcnJfbl91MzJfbSkpKQpzdnVpbnQzMl90IHN2b3JyX25fdTMyX20oc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZvcnJfbl91NjRfbSkpKQpzdnVpbnQ2NF90IHN2b3JyX25fdTY0X20oc3Zib29sX3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZvcnJfbl91MTZfbSkpKQpzdnVpbnQxNl90IHN2b3JyX25fdTE2X20oc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZvcnJfbl9zOF9tKSkpCnN2aW50OF90IHN2b3JyX25fczhfbShzdmJvb2xfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2b3JyX25fczMyX20pKSkKc3ZpbnQzMl90IHN2b3JyX25fczMyX20oc3Zib29sX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2b3JyX25fczY0X20pKSkKc3ZpbnQ2NF90IHN2b3JyX25fczY0X20oc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2b3JyX25fczE2X20pKSkKc3ZpbnQxNl90IHN2b3JyX25fczE2X20oc3Zib29sX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2b3JyX25fdThfeCkpKQpzdnVpbnQ4X3Qgc3ZvcnJfbl91OF94KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm9ycl9uX3UzMl94KSkpCnN2dWludDMyX3Qgc3ZvcnJfbl91MzJfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm9ycl9uX3U2NF94KSkpCnN2dWludDY0X3Qgc3ZvcnJfbl91NjRfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm9ycl9uX3UxNl94KSkpCnN2dWludDE2X3Qgc3ZvcnJfbl91MTZfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm9ycl9uX3M4X3gpKSkKc3ZpbnQ4X3Qgc3ZvcnJfbl9zOF94KHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZvcnJfbl9zMzJfeCkpKQpzdmludDMyX3Qgc3ZvcnJfbl9zMzJfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZvcnJfbl9zNjRfeCkpKQpzdmludDY0X3Qgc3ZvcnJfbl9zNjRfeChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZvcnJfbl9zMTZfeCkpKQpzdmludDE2X3Qgc3ZvcnJfbl9zMTZfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZvcnJfbl91OF96KSkpCnN2dWludDhfdCBzdm9ycl9uX3U4X3ooc3Zib29sX3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2b3JyX25fdTMyX3opKSkKc3Z1aW50MzJfdCBzdm9ycl9uX3UzMl96KHN2Ym9vbF90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2b3JyX25fdTY0X3opKSkKc3Z1aW50NjRfdCBzdm9ycl9uX3U2NF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2b3JyX25fdTE2X3opKSkKc3Z1aW50MTZfdCBzdm9ycl9uX3UxNl96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2b3JyX25fczhfeikpKQpzdmludDhfdCBzdm9ycl9uX3M4X3ooc3Zib29sX3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm9ycl9uX3MzMl96KSkpCnN2aW50MzJfdCBzdm9ycl9uX3MzMl96KHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm9ycl9uX3M2NF96KSkpCnN2aW50NjRfdCBzdm9ycl9uX3M2NF96KHN2Ym9vbF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm9ycl9uX3MxNl96KSkpCnN2aW50MTZfdCBzdm9ycl9uX3MxNl96KHN2Ym9vbF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm9ycl91OF9tKSkpCnN2dWludDhfdCBzdm9ycl91OF9tKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2b3JyX3UzMl9tKSkpCnN2dWludDMyX3Qgc3ZvcnJfdTMyX20oc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm9ycl91NjRfbSkpKQpzdnVpbnQ2NF90IHN2b3JyX3U2NF9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZvcnJfdTE2X20pKSkKc3Z1aW50MTZfdCBzdm9ycl91MTZfbShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2b3JyX3M4X20pKSkKc3ZpbnQ4X3Qgc3ZvcnJfczhfbShzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZvcnJfczMyX20pKSkKc3ZpbnQzMl90IHN2b3JyX3MzMl9tKHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2b3JyX3M2NF9tKSkpCnN2aW50NjRfdCBzdm9ycl9zNjRfbShzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm9ycl9zMTZfbSkpKQpzdmludDE2X3Qgc3ZvcnJfczE2X20oc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZvcnJfdThfeCkpKQpzdnVpbnQ4X3Qgc3ZvcnJfdThfeChzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm9ycl91MzJfeCkpKQpzdnVpbnQzMl90IHN2b3JyX3UzMl94KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZvcnJfdTY0X3gpKSkKc3Z1aW50NjRfdCBzdm9ycl91NjRfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2b3JyX3UxNl94KSkpCnN2dWludDE2X3Qgc3ZvcnJfdTE2X3goc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm9ycl9zOF94KSkpCnN2aW50OF90IHN2b3JyX3M4X3goc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2b3JyX3MzMl94KSkpCnN2aW50MzJfdCBzdm9ycl9zMzJfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm9ycl9zNjRfeCkpKQpzdmludDY0X3Qgc3ZvcnJfczY0X3goc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZvcnJfczE2X3gpKSkKc3ZpbnQxNl90IHN2b3JyX3MxNl94KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2b3JyX3U4X3opKSkKc3Z1aW50OF90IHN2b3JyX3U4X3ooc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZvcnJfdTMyX3opKSkKc3Z1aW50MzJfdCBzdm9ycl91MzJfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2b3JyX3U2NF96KSkpCnN2dWludDY0X3Qgc3ZvcnJfdTY0X3ooc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm9ycl91MTZfeikpKQpzdnVpbnQxNl90IHN2b3JyX3UxNl96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZvcnJfczhfeikpKQpzdmludDhfdCBzdm9ycl9zOF96KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm9ycl9zMzJfeikpKQpzdmludDMyX3Qgc3ZvcnJfczMyX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZvcnJfczY0X3opKSkKc3ZpbnQ2NF90IHN2b3JyX3M2NF96KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2b3JyX3MxNl96KSkpCnN2aW50MTZfdCBzdm9ycl9zMTZfeihzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm9ydl91OCkpKQp1aW50OF90IHN2b3J2X3U4KHN2Ym9vbF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm9ydl91MzIpKSkKdWludDMyX3Qgc3ZvcnZfdTMyKHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZvcnZfdTY0KSkpCnVpbnQ2NF90IHN2b3J2X3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2b3J2X3UxNikpKQp1aW50MTZfdCBzdm9ydl91MTYoc3Zib29sX3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm9ydl9zOCkpKQppbnQ4X3Qgc3ZvcnZfczgoc3Zib29sX3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZvcnZfczMyKSkpCmludDMyX3Qgc3ZvcnZfczMyKHN2Ym9vbF90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm9ydl9zNjQpKSkKaW50NjRfdCBzdm9ydl9zNjQoc3Zib29sX3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2b3J2X3MxNikpKQppbnQxNl90IHN2b3J2X3MxNihzdmJvb2xfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwZmFsc2VfYikpKQpzdmJvb2xfdCBzdnBmYWxzZV9iKCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cGZpcnN0X2IpKSkKc3Zib29sX3Qgc3ZwZmlyc3RfYihzdmJvb2xfdCwgc3Zib29sX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnBuZXh0X2I4KSkpCnN2Ym9vbF90IHN2cG5leHRfYjgoc3Zib29sX3QsIHN2Ym9vbF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwbmV4dF9iMzIpKSkKc3Zib29sX3Qgc3ZwbmV4dF9iMzIoc3Zib29sX3QsIHN2Ym9vbF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwbmV4dF9iNjQpKSkKc3Zib29sX3Qgc3ZwbmV4dF9iNjQoc3Zib29sX3QsIHN2Ym9vbF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwbmV4dF9iMTYpKSkKc3Zib29sX3Qgc3ZwbmV4dF9iMTYoc3Zib29sX3QsIHN2Ym9vbF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwcmZiKSkpCnZvaWQgc3ZwcmZiKHN2Ym9vbF90LCB2b2lkIGNvbnN0ICosIGVudW0gc3ZwcmZvcCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cHJmYl9nYXRoZXJfdTMyYmFzZSkpKQp2b2lkIHN2cHJmYl9nYXRoZXJfdTMyYmFzZShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgZW51bSBzdnByZm9wKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwcmZiX2dhdGhlcl91NjRiYXNlKSkpCnZvaWQgc3ZwcmZiX2dhdGhlcl91NjRiYXNlKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBlbnVtIHN2cHJmb3ApOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnByZmJfZ2F0aGVyX3UzMmJhc2Vfb2Zmc2V0KSkpCnZvaWQgc3ZwcmZiX2dhdGhlcl91MzJiYXNlX29mZnNldChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50NjRfdCwgZW51bSBzdnByZm9wKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwcmZiX2dhdGhlcl91NjRiYXNlX29mZnNldCkpKQp2b2lkIHN2cHJmYl9nYXRoZXJfdTY0YmFzZV9vZmZzZXQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QsIGVudW0gc3ZwcmZvcCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cHJmYl9nYXRoZXJfczMyb2Zmc2V0KSkpCnZvaWQgc3ZwcmZiX2dhdGhlcl9zMzJvZmZzZXQoc3Zib29sX3QsIHZvaWQgY29uc3QgKiwgc3ZpbnQzMl90LCBlbnVtIHN2cHJmb3ApOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnByZmJfZ2F0aGVyX3UzMm9mZnNldCkpKQp2b2lkIHN2cHJmYl9nYXRoZXJfdTMyb2Zmc2V0KHN2Ym9vbF90LCB2b2lkIGNvbnN0ICosIHN2dWludDMyX3QsIGVudW0gc3ZwcmZvcCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cHJmYl9nYXRoZXJfczY0b2Zmc2V0KSkpCnZvaWQgc3ZwcmZiX2dhdGhlcl9zNjRvZmZzZXQoc3Zib29sX3QsIHZvaWQgY29uc3QgKiwgc3ZpbnQ2NF90LCBlbnVtIHN2cHJmb3ApOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnByZmJfZ2F0aGVyX3U2NG9mZnNldCkpKQp2b2lkIHN2cHJmYl9nYXRoZXJfdTY0b2Zmc2V0KHN2Ym9vbF90LCB2b2lkIGNvbnN0ICosIHN2dWludDY0X3QsIGVudW0gc3ZwcmZvcCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cHJmYl92bnVtKSkpCnZvaWQgc3ZwcmZiX3ZudW0oc3Zib29sX3QsIHZvaWQgY29uc3QgKiwgaW50NjRfdCwgZW51bSBzdnByZm9wKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwcmZkKSkpCnZvaWQgc3ZwcmZkKHN2Ym9vbF90LCB2b2lkIGNvbnN0ICosIGVudW0gc3ZwcmZvcCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cHJmZF9nYXRoZXJfdTMyYmFzZSkpKQp2b2lkIHN2cHJmZF9nYXRoZXJfdTMyYmFzZShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgZW51bSBzdnByZm9wKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwcmZkX2dhdGhlcl91NjRiYXNlKSkpCnZvaWQgc3ZwcmZkX2dhdGhlcl91NjRiYXNlKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBlbnVtIHN2cHJmb3ApOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnByZmRfZ2F0aGVyX3UzMmJhc2VfaW5kZXgpKSkKdm9pZCBzdnByZmRfZ2F0aGVyX3UzMmJhc2VfaW5kZXgoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QsIGVudW0gc3ZwcmZvcCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cHJmZF9nYXRoZXJfdTY0YmFzZV9pbmRleCkpKQp2b2lkIHN2cHJmZF9nYXRoZXJfdTY0YmFzZV9pbmRleChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCwgZW51bSBzdnByZm9wKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwcmZkX2dhdGhlcl9zMzJpbmRleCkpKQp2b2lkIHN2cHJmZF9nYXRoZXJfczMyaW5kZXgoc3Zib29sX3QsIHZvaWQgY29uc3QgKiwgc3ZpbnQzMl90LCBlbnVtIHN2cHJmb3ApOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnByZmRfZ2F0aGVyX3UzMmluZGV4KSkpCnZvaWQgc3ZwcmZkX2dhdGhlcl91MzJpbmRleChzdmJvb2xfdCwgdm9pZCBjb25zdCAqLCBzdnVpbnQzMl90LCBlbnVtIHN2cHJmb3ApOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnByZmRfZ2F0aGVyX3M2NGluZGV4KSkpCnZvaWQgc3ZwcmZkX2dhdGhlcl9zNjRpbmRleChzdmJvb2xfdCwgdm9pZCBjb25zdCAqLCBzdmludDY0X3QsIGVudW0gc3ZwcmZvcCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cHJmZF9nYXRoZXJfdTY0aW5kZXgpKSkKdm9pZCBzdnByZmRfZ2F0aGVyX3U2NGluZGV4KHN2Ym9vbF90LCB2b2lkIGNvbnN0ICosIHN2dWludDY0X3QsIGVudW0gc3ZwcmZvcCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cHJmZF92bnVtKSkpCnZvaWQgc3ZwcmZkX3ZudW0oc3Zib29sX3QsIHZvaWQgY29uc3QgKiwgaW50NjRfdCwgZW51bSBzdnByZm9wKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwcmZoKSkpCnZvaWQgc3ZwcmZoKHN2Ym9vbF90LCB2b2lkIGNvbnN0ICosIGVudW0gc3ZwcmZvcCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cHJmaF9nYXRoZXJfdTMyYmFzZSkpKQp2b2lkIHN2cHJmaF9nYXRoZXJfdTMyYmFzZShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgZW51bSBzdnByZm9wKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwcmZoX2dhdGhlcl91NjRiYXNlKSkpCnZvaWQgc3ZwcmZoX2dhdGhlcl91NjRiYXNlKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBlbnVtIHN2cHJmb3ApOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnByZmhfZ2F0aGVyX3UzMmJhc2VfaW5kZXgpKSkKdm9pZCBzdnByZmhfZ2F0aGVyX3UzMmJhc2VfaW5kZXgoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QsIGVudW0gc3ZwcmZvcCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cHJmaF9nYXRoZXJfdTY0YmFzZV9pbmRleCkpKQp2b2lkIHN2cHJmaF9nYXRoZXJfdTY0YmFzZV9pbmRleChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCwgZW51bSBzdnByZm9wKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwcmZoX2dhdGhlcl9zMzJpbmRleCkpKQp2b2lkIHN2cHJmaF9nYXRoZXJfczMyaW5kZXgoc3Zib29sX3QsIHZvaWQgY29uc3QgKiwgc3ZpbnQzMl90LCBlbnVtIHN2cHJmb3ApOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnByZmhfZ2F0aGVyX3UzMmluZGV4KSkpCnZvaWQgc3ZwcmZoX2dhdGhlcl91MzJpbmRleChzdmJvb2xfdCwgdm9pZCBjb25zdCAqLCBzdnVpbnQzMl90LCBlbnVtIHN2cHJmb3ApOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnByZmhfZ2F0aGVyX3M2NGluZGV4KSkpCnZvaWQgc3ZwcmZoX2dhdGhlcl9zNjRpbmRleChzdmJvb2xfdCwgdm9pZCBjb25zdCAqLCBzdmludDY0X3QsIGVudW0gc3ZwcmZvcCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cHJmaF9nYXRoZXJfdTY0aW5kZXgpKSkKdm9pZCBzdnByZmhfZ2F0aGVyX3U2NGluZGV4KHN2Ym9vbF90LCB2b2lkIGNvbnN0ICosIHN2dWludDY0X3QsIGVudW0gc3ZwcmZvcCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cHJmaF92bnVtKSkpCnZvaWQgc3ZwcmZoX3ZudW0oc3Zib29sX3QsIHZvaWQgY29uc3QgKiwgaW50NjRfdCwgZW51bSBzdnByZm9wKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwcmZ3KSkpCnZvaWQgc3ZwcmZ3KHN2Ym9vbF90LCB2b2lkIGNvbnN0ICosIGVudW0gc3ZwcmZvcCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cHJmd19nYXRoZXJfdTMyYmFzZSkpKQp2b2lkIHN2cHJmd19nYXRoZXJfdTMyYmFzZShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgZW51bSBzdnByZm9wKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwcmZ3X2dhdGhlcl91NjRiYXNlKSkpCnZvaWQgc3ZwcmZ3X2dhdGhlcl91NjRiYXNlKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBlbnVtIHN2cHJmb3ApOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnByZndfZ2F0aGVyX3UzMmJhc2VfaW5kZXgpKSkKdm9pZCBzdnByZndfZ2F0aGVyX3UzMmJhc2VfaW5kZXgoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QsIGVudW0gc3ZwcmZvcCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cHJmd19nYXRoZXJfdTY0YmFzZV9pbmRleCkpKQp2b2lkIHN2cHJmd19nYXRoZXJfdTY0YmFzZV9pbmRleChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCwgZW51bSBzdnByZm9wKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwcmZ3X2dhdGhlcl9zMzJpbmRleCkpKQp2b2lkIHN2cHJmd19nYXRoZXJfczMyaW5kZXgoc3Zib29sX3QsIHZvaWQgY29uc3QgKiwgc3ZpbnQzMl90LCBlbnVtIHN2cHJmb3ApOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnByZndfZ2F0aGVyX3UzMmluZGV4KSkpCnZvaWQgc3ZwcmZ3X2dhdGhlcl91MzJpbmRleChzdmJvb2xfdCwgdm9pZCBjb25zdCAqLCBzdnVpbnQzMl90LCBlbnVtIHN2cHJmb3ApOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnByZndfZ2F0aGVyX3M2NGluZGV4KSkpCnZvaWQgc3ZwcmZ3X2dhdGhlcl9zNjRpbmRleChzdmJvb2xfdCwgdm9pZCBjb25zdCAqLCBzdmludDY0X3QsIGVudW0gc3ZwcmZvcCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cHJmd19nYXRoZXJfdTY0aW5kZXgpKSkKdm9pZCBzdnByZndfZ2F0aGVyX3U2NGluZGV4KHN2Ym9vbF90LCB2b2lkIGNvbnN0ICosIHN2dWludDY0X3QsIGVudW0gc3ZwcmZvcCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cHJmd192bnVtKSkpCnZvaWQgc3ZwcmZ3X3ZudW0oc3Zib29sX3QsIHZvaWQgY29uc3QgKiwgaW50NjRfdCwgZW51bSBzdnByZm9wKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwdGVzdF9hbnkpKSkKYm9vbCBzdnB0ZXN0X2FueShzdmJvb2xfdCwgc3Zib29sX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnB0ZXN0X2ZpcnN0KSkpCmJvb2wgc3ZwdGVzdF9maXJzdChzdmJvb2xfdCwgc3Zib29sX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnB0ZXN0X2xhc3QpKSkKYm9vbCBzdnB0ZXN0X2xhc3Qoc3Zib29sX3QsIHN2Ym9vbF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwdHJ1ZV9wYXRfYjgpKSkKc3Zib29sX3Qgc3ZwdHJ1ZV9wYXRfYjgoZW51bSBzdnBhdHRlcm4pOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnB0cnVlX3BhdF9iMzIpKSkKc3Zib29sX3Qgc3ZwdHJ1ZV9wYXRfYjMyKGVudW0gc3ZwYXR0ZXJuKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwdHJ1ZV9wYXRfYjY0KSkpCnN2Ym9vbF90IHN2cHRydWVfcGF0X2I2NChlbnVtIHN2cGF0dGVybik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cHRydWVfcGF0X2IxNikpKQpzdmJvb2xfdCBzdnB0cnVlX3BhdF9iMTYoZW51bSBzdnBhdHRlcm4pOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnB0cnVlX2I4KSkpCnN2Ym9vbF90IHN2cHRydWVfYjgoKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwdHJ1ZV9iMzIpKSkKc3Zib29sX3Qgc3ZwdHJ1ZV9iMzIoKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwdHJ1ZV9iNjQpKSkKc3Zib29sX3Qgc3ZwdHJ1ZV9iNjQoKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwdHJ1ZV9iMTYpKSkKc3Zib29sX3Qgc3ZwdHJ1ZV9iMTYoKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWRkX25fczgpKSkKc3ZpbnQ4X3Qgc3ZxYWRkX25fczgoc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFkZF9uX3MzMikpKQpzdmludDMyX3Qgc3ZxYWRkX25fczMyKHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFkZF9uX3M2NCkpKQpzdmludDY0X3Qgc3ZxYWRkX25fczY0KHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFkZF9uX3MxNikpKQpzdmludDE2X3Qgc3ZxYWRkX25fczE2KHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFkZF9uX3U4KSkpCnN2dWludDhfdCBzdnFhZGRfbl91OChzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhZGRfbl91MzIpKSkKc3Z1aW50MzJfdCBzdnFhZGRfbl91MzIoc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhZGRfbl91NjQpKSkKc3Z1aW50NjRfdCBzdnFhZGRfbl91NjQoc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhZGRfbl91MTYpKSkKc3Z1aW50MTZfdCBzdnFhZGRfbl91MTYoc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhZGRfczgpKSkKc3ZpbnQ4X3Qgc3ZxYWRkX3M4KHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFkZF9zMzIpKSkKc3ZpbnQzMl90IHN2cWFkZF9zMzIoc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhZGRfczY0KSkpCnN2aW50NjRfdCBzdnFhZGRfczY0KHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWRkX3MxNikpKQpzdmludDE2X3Qgc3ZxYWRkX3MxNihzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFkZF91OCkpKQpzdnVpbnQ4X3Qgc3ZxYWRkX3U4KHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWRkX3UzMikpKQpzdnVpbnQzMl90IHN2cWFkZF91MzIoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFkZF91NjQpKSkKc3Z1aW50NjRfdCBzdnFhZGRfdTY0KHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhZGRfdTE2KSkpCnN2dWludDE2X3Qgc3ZxYWRkX3UxNihzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZGVjYl9uX3MzMikpKQppbnQzMl90IHN2cWRlY2Jfbl9zMzIoaW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWNiX25fczY0KSkpCmludDY0X3Qgc3ZxZGVjYl9uX3M2NChpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRlY2Jfbl91MzIpKSkKdWludDMyX3Qgc3ZxZGVjYl9uX3UzMih1aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWNiX25fdTY0KSkpCnVpbnQ2NF90IHN2cWRlY2Jfbl91NjQodWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZGVjYl9wYXRfbl9zMzIpKSkKaW50MzJfdCBzdnFkZWNiX3BhdF9uX3MzMihpbnQzMl90LCBlbnVtIHN2cGF0dGVybiwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWNiX3BhdF9uX3M2NCkpKQppbnQ2NF90IHN2cWRlY2JfcGF0X25fczY0KGludDY0X3QsIGVudW0gc3ZwYXR0ZXJuLCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRlY2JfcGF0X25fdTMyKSkpCnVpbnQzMl90IHN2cWRlY2JfcGF0X25fdTMyKHVpbnQzMl90LCBlbnVtIHN2cGF0dGVybiwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWNiX3BhdF9uX3U2NCkpKQp1aW50NjRfdCBzdnFkZWNiX3BhdF9uX3U2NCh1aW50NjRfdCwgZW51bSBzdnBhdHRlcm4sIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZGVjZF9uX3MzMikpKQppbnQzMl90IHN2cWRlY2Rfbl9zMzIoaW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWNkX25fczY0KSkpCmludDY0X3Qgc3ZxZGVjZF9uX3M2NChpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRlY2Rfbl91MzIpKSkKdWludDMyX3Qgc3ZxZGVjZF9uX3UzMih1aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWNkX25fdTY0KSkpCnVpbnQ2NF90IHN2cWRlY2Rfbl91NjQodWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZGVjZF9zNjQpKSkKc3ZpbnQ2NF90IHN2cWRlY2RfczY0KHN2aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWNkX3U2NCkpKQpzdnVpbnQ2NF90IHN2cWRlY2RfdTY0KHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZGVjZF9wYXRfbl9zMzIpKSkKaW50MzJfdCBzdnFkZWNkX3BhdF9uX3MzMihpbnQzMl90LCBlbnVtIHN2cGF0dGVybiwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWNkX3BhdF9uX3M2NCkpKQppbnQ2NF90IHN2cWRlY2RfcGF0X25fczY0KGludDY0X3QsIGVudW0gc3ZwYXR0ZXJuLCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRlY2RfcGF0X25fdTMyKSkpCnVpbnQzMl90IHN2cWRlY2RfcGF0X25fdTMyKHVpbnQzMl90LCBlbnVtIHN2cGF0dGVybiwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWNkX3BhdF9uX3U2NCkpKQp1aW50NjRfdCBzdnFkZWNkX3BhdF9uX3U2NCh1aW50NjRfdCwgZW51bSBzdnBhdHRlcm4sIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZGVjZF9wYXRfczY0KSkpCnN2aW50NjRfdCBzdnFkZWNkX3BhdF9zNjQoc3ZpbnQ2NF90LCBlbnVtIHN2cGF0dGVybiwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWNkX3BhdF91NjQpKSkKc3Z1aW50NjRfdCBzdnFkZWNkX3BhdF91NjQoc3Z1aW50NjRfdCwgZW51bSBzdnBhdHRlcm4sIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZGVjaF9uX3MzMikpKQppbnQzMl90IHN2cWRlY2hfbl9zMzIoaW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWNoX25fczY0KSkpCmludDY0X3Qgc3ZxZGVjaF9uX3M2NChpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRlY2hfbl91MzIpKSkKdWludDMyX3Qgc3ZxZGVjaF9uX3UzMih1aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWNoX25fdTY0KSkpCnVpbnQ2NF90IHN2cWRlY2hfbl91NjQodWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZGVjaF9zMTYpKSkKc3ZpbnQxNl90IHN2cWRlY2hfczE2KHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWNoX3UxNikpKQpzdnVpbnQxNl90IHN2cWRlY2hfdTE2KHN2dWludDE2X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZGVjaF9wYXRfbl9zMzIpKSkKaW50MzJfdCBzdnFkZWNoX3BhdF9uX3MzMihpbnQzMl90LCBlbnVtIHN2cGF0dGVybiwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWNoX3BhdF9uX3M2NCkpKQppbnQ2NF90IHN2cWRlY2hfcGF0X25fczY0KGludDY0X3QsIGVudW0gc3ZwYXR0ZXJuLCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRlY2hfcGF0X25fdTMyKSkpCnVpbnQzMl90IHN2cWRlY2hfcGF0X25fdTMyKHVpbnQzMl90LCBlbnVtIHN2cGF0dGVybiwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWNoX3BhdF9uX3U2NCkpKQp1aW50NjRfdCBzdnFkZWNoX3BhdF9uX3U2NCh1aW50NjRfdCwgZW51bSBzdnBhdHRlcm4sIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZGVjaF9wYXRfczE2KSkpCnN2aW50MTZfdCBzdnFkZWNoX3BhdF9zMTYoc3ZpbnQxNl90LCBlbnVtIHN2cGF0dGVybiwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWNoX3BhdF91MTYpKSkKc3Z1aW50MTZfdCBzdnFkZWNoX3BhdF91MTYoc3Z1aW50MTZfdCwgZW51bSBzdnBhdHRlcm4sIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZGVjcF9uX3MzMl9iOCkpKQppbnQzMl90IHN2cWRlY3Bfbl9zMzJfYjgoaW50MzJfdCwgc3Zib29sX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWNwX25fczMyX2IzMikpKQppbnQzMl90IHN2cWRlY3Bfbl9zMzJfYjMyKGludDMyX3QsIHN2Ym9vbF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZGVjcF9uX3MzMl9iNjQpKSkKaW50MzJfdCBzdnFkZWNwX25fczMyX2I2NChpbnQzMl90LCBzdmJvb2xfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRlY3Bfbl9zMzJfYjE2KSkpCmludDMyX3Qgc3ZxZGVjcF9uX3MzMl9iMTYoaW50MzJfdCwgc3Zib29sX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWNwX25fczY0X2I4KSkpCmludDY0X3Qgc3ZxZGVjcF9uX3M2NF9iOChpbnQ2NF90LCBzdmJvb2xfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRlY3Bfbl9zNjRfYjMyKSkpCmludDY0X3Qgc3ZxZGVjcF9uX3M2NF9iMzIoaW50NjRfdCwgc3Zib29sX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWNwX25fczY0X2I2NCkpKQppbnQ2NF90IHN2cWRlY3Bfbl9zNjRfYjY0KGludDY0X3QsIHN2Ym9vbF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZGVjcF9uX3M2NF9iMTYpKSkKaW50NjRfdCBzdnFkZWNwX25fczY0X2IxNihpbnQ2NF90LCBzdmJvb2xfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRlY3Bfbl91MzJfYjgpKSkKdWludDMyX3Qgc3ZxZGVjcF9uX3UzMl9iOCh1aW50MzJfdCwgc3Zib29sX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWNwX25fdTMyX2IzMikpKQp1aW50MzJfdCBzdnFkZWNwX25fdTMyX2IzMih1aW50MzJfdCwgc3Zib29sX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWNwX25fdTMyX2I2NCkpKQp1aW50MzJfdCBzdnFkZWNwX25fdTMyX2I2NCh1aW50MzJfdCwgc3Zib29sX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWNwX25fdTMyX2IxNikpKQp1aW50MzJfdCBzdnFkZWNwX25fdTMyX2IxNih1aW50MzJfdCwgc3Zib29sX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWNwX25fdTY0X2I4KSkpCnVpbnQ2NF90IHN2cWRlY3Bfbl91NjRfYjgodWludDY0X3QsIHN2Ym9vbF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZGVjcF9uX3U2NF9iMzIpKSkKdWludDY0X3Qgc3ZxZGVjcF9uX3U2NF9iMzIodWludDY0X3QsIHN2Ym9vbF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZGVjcF9uX3U2NF9iNjQpKSkKdWludDY0X3Qgc3ZxZGVjcF9uX3U2NF9iNjQodWludDY0X3QsIHN2Ym9vbF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZGVjcF9uX3U2NF9iMTYpKSkKdWludDY0X3Qgc3ZxZGVjcF9uX3U2NF9iMTYodWludDY0X3QsIHN2Ym9vbF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZGVjcF9zMzIpKSkKc3ZpbnQzMl90IHN2cWRlY3BfczMyKHN2aW50MzJfdCwgc3Zib29sX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWNwX3M2NCkpKQpzdmludDY0X3Qgc3ZxZGVjcF9zNjQoc3ZpbnQ2NF90LCBzdmJvb2xfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRlY3BfczE2KSkpCnN2aW50MTZfdCBzdnFkZWNwX3MxNihzdmludDE2X3QsIHN2Ym9vbF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZGVjcF91MzIpKSkKc3Z1aW50MzJfdCBzdnFkZWNwX3UzMihzdnVpbnQzMl90LCBzdmJvb2xfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRlY3BfdTY0KSkpCnN2dWludDY0X3Qgc3ZxZGVjcF91NjQoc3Z1aW50NjRfdCwgc3Zib29sX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWNwX3UxNikpKQpzdnVpbnQxNl90IHN2cWRlY3BfdTE2KHN2dWludDE2X3QsIHN2Ym9vbF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZGVjd19uX3MzMikpKQppbnQzMl90IHN2cWRlY3dfbl9zMzIoaW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWN3X25fczY0KSkpCmludDY0X3Qgc3ZxZGVjd19uX3M2NChpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRlY3dfbl91MzIpKSkKdWludDMyX3Qgc3ZxZGVjd19uX3UzMih1aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWN3X25fdTY0KSkpCnVpbnQ2NF90IHN2cWRlY3dfbl91NjQodWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZGVjd19zMzIpKSkKc3ZpbnQzMl90IHN2cWRlY3dfczMyKHN2aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWN3X3UzMikpKQpzdnVpbnQzMl90IHN2cWRlY3dfdTMyKHN2dWludDMyX3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZGVjd19wYXRfbl9zMzIpKSkKaW50MzJfdCBzdnFkZWN3X3BhdF9uX3MzMihpbnQzMl90LCBlbnVtIHN2cGF0dGVybiwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWN3X3BhdF9uX3M2NCkpKQppbnQ2NF90IHN2cWRlY3dfcGF0X25fczY0KGludDY0X3QsIGVudW0gc3ZwYXR0ZXJuLCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRlY3dfcGF0X25fdTMyKSkpCnVpbnQzMl90IHN2cWRlY3dfcGF0X25fdTMyKHVpbnQzMl90LCBlbnVtIHN2cGF0dGVybiwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWN3X3BhdF9uX3U2NCkpKQp1aW50NjRfdCBzdnFkZWN3X3BhdF9uX3U2NCh1aW50NjRfdCwgZW51bSBzdnBhdHRlcm4sIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZGVjd19wYXRfczMyKSkpCnN2aW50MzJfdCBzdnFkZWN3X3BhdF9zMzIoc3ZpbnQzMl90LCBlbnVtIHN2cGF0dGVybiwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWN3X3BhdF91MzIpKSkKc3Z1aW50MzJfdCBzdnFkZWN3X3BhdF91MzIoc3Z1aW50MzJfdCwgZW51bSBzdnBhdHRlcm4sIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxaW5jYl9uX3MzMikpKQppbnQzMl90IHN2cWluY2Jfbl9zMzIoaW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmNiX25fczY0KSkpCmludDY0X3Qgc3ZxaW5jYl9uX3M2NChpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWluY2Jfbl91MzIpKSkKdWludDMyX3Qgc3ZxaW5jYl9uX3UzMih1aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmNiX25fdTY0KSkpCnVpbnQ2NF90IHN2cWluY2Jfbl91NjQodWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxaW5jYl9wYXRfbl9zMzIpKSkKaW50MzJfdCBzdnFpbmNiX3BhdF9uX3MzMihpbnQzMl90LCBlbnVtIHN2cGF0dGVybiwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmNiX3BhdF9uX3M2NCkpKQppbnQ2NF90IHN2cWluY2JfcGF0X25fczY0KGludDY0X3QsIGVudW0gc3ZwYXR0ZXJuLCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWluY2JfcGF0X25fdTMyKSkpCnVpbnQzMl90IHN2cWluY2JfcGF0X25fdTMyKHVpbnQzMl90LCBlbnVtIHN2cGF0dGVybiwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmNiX3BhdF9uX3U2NCkpKQp1aW50NjRfdCBzdnFpbmNiX3BhdF9uX3U2NCh1aW50NjRfdCwgZW51bSBzdnBhdHRlcm4sIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxaW5jZF9uX3MzMikpKQppbnQzMl90IHN2cWluY2Rfbl9zMzIoaW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmNkX25fczY0KSkpCmludDY0X3Qgc3ZxaW5jZF9uX3M2NChpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWluY2Rfbl91MzIpKSkKdWludDMyX3Qgc3ZxaW5jZF9uX3UzMih1aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmNkX25fdTY0KSkpCnVpbnQ2NF90IHN2cWluY2Rfbl91NjQodWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxaW5jZF9zNjQpKSkKc3ZpbnQ2NF90IHN2cWluY2RfczY0KHN2aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmNkX3U2NCkpKQpzdnVpbnQ2NF90IHN2cWluY2RfdTY0KHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxaW5jZF9wYXRfbl9zMzIpKSkKaW50MzJfdCBzdnFpbmNkX3BhdF9uX3MzMihpbnQzMl90LCBlbnVtIHN2cGF0dGVybiwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmNkX3BhdF9uX3M2NCkpKQppbnQ2NF90IHN2cWluY2RfcGF0X25fczY0KGludDY0X3QsIGVudW0gc3ZwYXR0ZXJuLCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWluY2RfcGF0X25fdTMyKSkpCnVpbnQzMl90IHN2cWluY2RfcGF0X25fdTMyKHVpbnQzMl90LCBlbnVtIHN2cGF0dGVybiwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmNkX3BhdF9uX3U2NCkpKQp1aW50NjRfdCBzdnFpbmNkX3BhdF9uX3U2NCh1aW50NjRfdCwgZW51bSBzdnBhdHRlcm4sIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxaW5jZF9wYXRfczY0KSkpCnN2aW50NjRfdCBzdnFpbmNkX3BhdF9zNjQoc3ZpbnQ2NF90LCBlbnVtIHN2cGF0dGVybiwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmNkX3BhdF91NjQpKSkKc3Z1aW50NjRfdCBzdnFpbmNkX3BhdF91NjQoc3Z1aW50NjRfdCwgZW51bSBzdnBhdHRlcm4sIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxaW5jaF9uX3MzMikpKQppbnQzMl90IHN2cWluY2hfbl9zMzIoaW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmNoX25fczY0KSkpCmludDY0X3Qgc3ZxaW5jaF9uX3M2NChpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWluY2hfbl91MzIpKSkKdWludDMyX3Qgc3ZxaW5jaF9uX3UzMih1aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmNoX25fdTY0KSkpCnVpbnQ2NF90IHN2cWluY2hfbl91NjQodWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxaW5jaF9zMTYpKSkKc3ZpbnQxNl90IHN2cWluY2hfczE2KHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmNoX3UxNikpKQpzdnVpbnQxNl90IHN2cWluY2hfdTE2KHN2dWludDE2X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxaW5jaF9wYXRfbl9zMzIpKSkKaW50MzJfdCBzdnFpbmNoX3BhdF9uX3MzMihpbnQzMl90LCBlbnVtIHN2cGF0dGVybiwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmNoX3BhdF9uX3M2NCkpKQppbnQ2NF90IHN2cWluY2hfcGF0X25fczY0KGludDY0X3QsIGVudW0gc3ZwYXR0ZXJuLCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWluY2hfcGF0X25fdTMyKSkpCnVpbnQzMl90IHN2cWluY2hfcGF0X25fdTMyKHVpbnQzMl90LCBlbnVtIHN2cGF0dGVybiwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmNoX3BhdF9uX3U2NCkpKQp1aW50NjRfdCBzdnFpbmNoX3BhdF9uX3U2NCh1aW50NjRfdCwgZW51bSBzdnBhdHRlcm4sIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxaW5jaF9wYXRfczE2KSkpCnN2aW50MTZfdCBzdnFpbmNoX3BhdF9zMTYoc3ZpbnQxNl90LCBlbnVtIHN2cGF0dGVybiwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmNoX3BhdF91MTYpKSkKc3Z1aW50MTZfdCBzdnFpbmNoX3BhdF91MTYoc3Z1aW50MTZfdCwgZW51bSBzdnBhdHRlcm4sIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxaW5jcF9uX3MzMl9iOCkpKQppbnQzMl90IHN2cWluY3Bfbl9zMzJfYjgoaW50MzJfdCwgc3Zib29sX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmNwX25fczMyX2IzMikpKQppbnQzMl90IHN2cWluY3Bfbl9zMzJfYjMyKGludDMyX3QsIHN2Ym9vbF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxaW5jcF9uX3MzMl9iNjQpKSkKaW50MzJfdCBzdnFpbmNwX25fczMyX2I2NChpbnQzMl90LCBzdmJvb2xfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWluY3Bfbl9zMzJfYjE2KSkpCmludDMyX3Qgc3ZxaW5jcF9uX3MzMl9iMTYoaW50MzJfdCwgc3Zib29sX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmNwX25fczY0X2I4KSkpCmludDY0X3Qgc3ZxaW5jcF9uX3M2NF9iOChpbnQ2NF90LCBzdmJvb2xfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWluY3Bfbl9zNjRfYjMyKSkpCmludDY0X3Qgc3ZxaW5jcF9uX3M2NF9iMzIoaW50NjRfdCwgc3Zib29sX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmNwX25fczY0X2I2NCkpKQppbnQ2NF90IHN2cWluY3Bfbl9zNjRfYjY0KGludDY0X3QsIHN2Ym9vbF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxaW5jcF9uX3M2NF9iMTYpKSkKaW50NjRfdCBzdnFpbmNwX25fczY0X2IxNihpbnQ2NF90LCBzdmJvb2xfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWluY3Bfbl91MzJfYjgpKSkKdWludDMyX3Qgc3ZxaW5jcF9uX3UzMl9iOCh1aW50MzJfdCwgc3Zib29sX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmNwX25fdTMyX2IzMikpKQp1aW50MzJfdCBzdnFpbmNwX25fdTMyX2IzMih1aW50MzJfdCwgc3Zib29sX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmNwX25fdTMyX2I2NCkpKQp1aW50MzJfdCBzdnFpbmNwX25fdTMyX2I2NCh1aW50MzJfdCwgc3Zib29sX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmNwX25fdTMyX2IxNikpKQp1aW50MzJfdCBzdnFpbmNwX25fdTMyX2IxNih1aW50MzJfdCwgc3Zib29sX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmNwX25fdTY0X2I4KSkpCnVpbnQ2NF90IHN2cWluY3Bfbl91NjRfYjgodWludDY0X3QsIHN2Ym9vbF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxaW5jcF9uX3U2NF9iMzIpKSkKdWludDY0X3Qgc3ZxaW5jcF9uX3U2NF9iMzIodWludDY0X3QsIHN2Ym9vbF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxaW5jcF9uX3U2NF9iNjQpKSkKdWludDY0X3Qgc3ZxaW5jcF9uX3U2NF9iNjQodWludDY0X3QsIHN2Ym9vbF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxaW5jcF9uX3U2NF9iMTYpKSkKdWludDY0X3Qgc3ZxaW5jcF9uX3U2NF9iMTYodWludDY0X3QsIHN2Ym9vbF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxaW5jcF9zMzIpKSkKc3ZpbnQzMl90IHN2cWluY3BfczMyKHN2aW50MzJfdCwgc3Zib29sX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmNwX3M2NCkpKQpzdmludDY0X3Qgc3ZxaW5jcF9zNjQoc3ZpbnQ2NF90LCBzdmJvb2xfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWluY3BfczE2KSkpCnN2aW50MTZfdCBzdnFpbmNwX3MxNihzdmludDE2X3QsIHN2Ym9vbF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxaW5jcF91MzIpKSkKc3Z1aW50MzJfdCBzdnFpbmNwX3UzMihzdnVpbnQzMl90LCBzdmJvb2xfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWluY3BfdTY0KSkpCnN2dWludDY0X3Qgc3ZxaW5jcF91NjQoc3Z1aW50NjRfdCwgc3Zib29sX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmNwX3UxNikpKQpzdnVpbnQxNl90IHN2cWluY3BfdTE2KHN2dWludDE2X3QsIHN2Ym9vbF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxaW5jd19uX3MzMikpKQppbnQzMl90IHN2cWluY3dfbl9zMzIoaW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmN3X25fczY0KSkpCmludDY0X3Qgc3ZxaW5jd19uX3M2NChpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWluY3dfbl91MzIpKSkKdWludDMyX3Qgc3ZxaW5jd19uX3UzMih1aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmN3X25fdTY0KSkpCnVpbnQ2NF90IHN2cWluY3dfbl91NjQodWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxaW5jd19zMzIpKSkKc3ZpbnQzMl90IHN2cWluY3dfczMyKHN2aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmN3X3UzMikpKQpzdnVpbnQzMl90IHN2cWluY3dfdTMyKHN2dWludDMyX3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxaW5jd19wYXRfbl9zMzIpKSkKaW50MzJfdCBzdnFpbmN3X3BhdF9uX3MzMihpbnQzMl90LCBlbnVtIHN2cGF0dGVybiwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmN3X3BhdF9uX3M2NCkpKQppbnQ2NF90IHN2cWluY3dfcGF0X25fczY0KGludDY0X3QsIGVudW0gc3ZwYXR0ZXJuLCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWluY3dfcGF0X25fdTMyKSkpCnVpbnQzMl90IHN2cWluY3dfcGF0X25fdTMyKHVpbnQzMl90LCBlbnVtIHN2cGF0dGVybiwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmN3X3BhdF9uX3U2NCkpKQp1aW50NjRfdCBzdnFpbmN3X3BhdF9uX3U2NCh1aW50NjRfdCwgZW51bSBzdnBhdHRlcm4sIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxaW5jd19wYXRfczMyKSkpCnN2aW50MzJfdCBzdnFpbmN3X3BhdF9zMzIoc3ZpbnQzMl90LCBlbnVtIHN2cGF0dGVybiwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmN3X3BhdF91MzIpKSkKc3Z1aW50MzJfdCBzdnFpbmN3X3BhdF91MzIoc3Z1aW50MzJfdCwgZW51bSBzdnBhdHRlcm4sIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3ViX25fczgpKSkKc3ZpbnQ4X3Qgc3Zxc3ViX25fczgoc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1Yl9uX3MzMikpKQpzdmludDMyX3Qgc3Zxc3ViX25fczMyKHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1Yl9uX3M2NCkpKQpzdmludDY0X3Qgc3Zxc3ViX25fczY0KHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1Yl9uX3MxNikpKQpzdmludDE2X3Qgc3Zxc3ViX25fczE2KHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1Yl9uX3U4KSkpCnN2dWludDhfdCBzdnFzdWJfbl91OChzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJfbl91MzIpKSkKc3Z1aW50MzJfdCBzdnFzdWJfbl91MzIoc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJfbl91NjQpKSkKc3Z1aW50NjRfdCBzdnFzdWJfbl91NjQoc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJfbl91MTYpKSkKc3Z1aW50MTZfdCBzdnFzdWJfbl91MTYoc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJfczgpKSkKc3ZpbnQ4X3Qgc3Zxc3ViX3M4KHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1Yl9zMzIpKSkKc3ZpbnQzMl90IHN2cXN1Yl9zMzIoc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJfczY0KSkpCnN2aW50NjRfdCBzdnFzdWJfczY0KHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3ViX3MxNikpKQpzdmludDE2X3Qgc3Zxc3ViX3MxNihzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1Yl91OCkpKQpzdnVpbnQ4X3Qgc3Zxc3ViX3U4KHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3ViX3UzMikpKQpzdnVpbnQzMl90IHN2cXN1Yl91MzIoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1Yl91NjQpKSkKc3Z1aW50NjRfdCBzdnFzdWJfdTY0KHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJfdTE2KSkpCnN2dWludDE2X3Qgc3Zxc3ViX3UxNihzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyYml0X3U4X20pKSkKc3Z1aW50OF90IHN2cmJpdF91OF9tKHN2dWludDhfdCwgc3Zib29sX3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmJpdF91MzJfbSkpKQpzdnVpbnQzMl90IHN2cmJpdF91MzJfbShzdnVpbnQzMl90LCBzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmJpdF91NjRfbSkpKQpzdnVpbnQ2NF90IHN2cmJpdF91NjRfbShzdnVpbnQ2NF90LCBzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmJpdF91MTZfbSkpKQpzdnVpbnQxNl90IHN2cmJpdF91MTZfbShzdnVpbnQxNl90LCBzdmJvb2xfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmJpdF9zOF9tKSkpCnN2aW50OF90IHN2cmJpdF9zOF9tKHN2aW50OF90LCBzdmJvb2xfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJiaXRfczMyX20pKSkKc3ZpbnQzMl90IHN2cmJpdF9zMzJfbShzdmludDMyX3QsIHN2Ym9vbF90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJiaXRfczY0X20pKSkKc3ZpbnQ2NF90IHN2cmJpdF9zNjRfbShzdmludDY0X3QsIHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJiaXRfczE2X20pKSkKc3ZpbnQxNl90IHN2cmJpdF9zMTZfbShzdmludDE2X3QsIHN2Ym9vbF90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJiaXRfdThfeCkpKQpzdnVpbnQ4X3Qgc3ZyYml0X3U4X3goc3Zib29sX3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmJpdF91MzJfeCkpKQpzdnVpbnQzMl90IHN2cmJpdF91MzJfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmJpdF91NjRfeCkpKQpzdnVpbnQ2NF90IHN2cmJpdF91NjRfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmJpdF91MTZfeCkpKQpzdnVpbnQxNl90IHN2cmJpdF91MTZfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmJpdF9zOF94KSkpCnN2aW50OF90IHN2cmJpdF9zOF94KHN2Ym9vbF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmJpdF9zMzJfeCkpKQpzdmludDMyX3Qgc3ZyYml0X3MzMl94KHN2Ym9vbF90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJiaXRfczY0X3gpKSkKc3ZpbnQ2NF90IHN2cmJpdF9zNjRfeChzdmJvb2xfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyYml0X3MxNl94KSkpCnN2aW50MTZfdCBzdnJiaXRfczE2X3goc3Zib29sX3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmJpdF91OF96KSkpCnN2dWludDhfdCBzdnJiaXRfdThfeihzdmJvb2xfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyYml0X3UzMl96KSkpCnN2dWludDMyX3Qgc3ZyYml0X3UzMl96KHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyYml0X3U2NF96KSkpCnN2dWludDY0X3Qgc3ZyYml0X3U2NF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyYml0X3UxNl96KSkpCnN2dWludDE2X3Qgc3ZyYml0X3UxNl96KHN2Ym9vbF90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyYml0X3M4X3opKSkKc3ZpbnQ4X3Qgc3ZyYml0X3M4X3ooc3Zib29sX3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyYml0X3MzMl96KSkpCnN2aW50MzJfdCBzdnJiaXRfczMyX3ooc3Zib29sX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmJpdF9zNjRfeikpKQpzdmludDY0X3Qgc3ZyYml0X3M2NF96KHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJiaXRfczE2X3opKSkKc3ZpbnQxNl90IHN2cmJpdF9zMTZfeihzdmJvb2xfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyZGZmcikpKQpzdmJvb2xfdCBzdnJkZmZyKCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmRmZnJfeikpKQpzdmJvb2xfdCBzdnJkZmZyX3ooc3Zib29sX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJlY3BlX2Y2NCkpKQpzdmZsb2F0NjRfdCBzdnJlY3BlX2Y2NChzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmVjcGVfZjMyKSkpCnN2ZmxvYXQzMl90IHN2cmVjcGVfZjMyKHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyZWNwZV9mMTYpKSkKc3ZmbG9hdDE2X3Qgc3ZyZWNwZV9mMTYoc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJlY3BzX2Y2NCkpKQpzdmZsb2F0NjRfdCBzdnJlY3BzX2Y2NChzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJlY3BzX2YzMikpKQpzdmZsb2F0MzJfdCBzdnJlY3BzX2YzMihzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJlY3BzX2YxNikpKQpzdmZsb2F0MTZfdCBzdnJlY3BzX2YxNihzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJlY3B4X2Y2NF9tKSkpCnN2ZmxvYXQ2NF90IHN2cmVjcHhfZjY0X20oc3ZmbG9hdDY0X3QsIHN2Ym9vbF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmVjcHhfZjMyX20pKSkKc3ZmbG9hdDMyX3Qgc3ZyZWNweF9mMzJfbShzdmZsb2F0MzJfdCwgc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyZWNweF9mMTZfbSkpKQpzdmZsb2F0MTZfdCBzdnJlY3B4X2YxNl9tKHN2ZmxvYXQxNl90LCBzdmJvb2xfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJlY3B4X2Y2NF94KSkpCnN2ZmxvYXQ2NF90IHN2cmVjcHhfZjY0X3goc3Zib29sX3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyZWNweF9mMzJfeCkpKQpzdmZsb2F0MzJfdCBzdnJlY3B4X2YzMl94KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmVjcHhfZjE2X3gpKSkKc3ZmbG9hdDE2X3Qgc3ZyZWNweF9mMTZfeChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJlY3B4X2Y2NF96KSkpCnN2ZmxvYXQ2NF90IHN2cmVjcHhfZjY0X3ooc3Zib29sX3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyZWNweF9mMzJfeikpKQpzdmZsb2F0MzJfdCBzdnJlY3B4X2YzMl96KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmVjcHhfZjE2X3opKSkKc3ZmbG9hdDE2X3Qgc3ZyZWNweF9mMTZfeihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJldl91OCkpKQpzdnVpbnQ4X3Qgc3ZyZXZfdTgoc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyZXZfdTMyKSkpCnN2dWludDMyX3Qgc3ZyZXZfdTMyKHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJldl91NjQpKSkKc3Z1aW50NjRfdCBzdnJldl91NjQoc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2X3UxNikpKQpzdnVpbnQxNl90IHN2cmV2X3UxNihzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyZXZfczgpKSkKc3ZpbnQ4X3Qgc3ZyZXZfczgoc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJldl9mNjQpKSkKc3ZmbG9hdDY0X3Qgc3ZyZXZfZjY0KHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyZXZfZjMyKSkpCnN2ZmxvYXQzMl90IHN2cmV2X2YzMihzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2X2YxNikpKQpzdmZsb2F0MTZfdCBzdnJldl9mMTYoc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJldl9zMzIpKSkKc3ZpbnQzMl90IHN2cmV2X3MzMihzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJldl9zNjQpKSkKc3ZpbnQ2NF90IHN2cmV2X3M2NChzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJldl9zMTYpKSkKc3ZpbnQxNl90IHN2cmV2X3MxNihzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJldl9iOCkpKQpzdmJvb2xfdCBzdnJldl9iOChzdmJvb2xfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2X2IzMikpKQpzdmJvb2xfdCBzdnJldl9iMzIoc3Zib29sX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJldl9iNjQpKSkKc3Zib29sX3Qgc3ZyZXZfYjY0KHN2Ym9vbF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyZXZfYjE2KSkpCnN2Ym9vbF90IHN2cmV2X2IxNihzdmJvb2xfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2Yl91MzJfbSkpKQpzdnVpbnQzMl90IHN2cmV2Yl91MzJfbShzdnVpbnQzMl90LCBzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2Yl91NjRfbSkpKQpzdnVpbnQ2NF90IHN2cmV2Yl91NjRfbShzdnVpbnQ2NF90LCBzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2Yl91MTZfbSkpKQpzdnVpbnQxNl90IHN2cmV2Yl91MTZfbShzdnVpbnQxNl90LCBzdmJvb2xfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2Yl9zMzJfbSkpKQpzdmludDMyX3Qgc3ZyZXZiX3MzMl9tKHN2aW50MzJfdCwgc3Zib29sX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2Yl9zNjRfbSkpKQpzdmludDY0X3Qgc3ZyZXZiX3M2NF9tKHN2aW50NjRfdCwgc3Zib29sX3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2Yl9zMTZfbSkpKQpzdmludDE2X3Qgc3ZyZXZiX3MxNl9tKHN2aW50MTZfdCwgc3Zib29sX3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2Yl91MzJfeCkpKQpzdnVpbnQzMl90IHN2cmV2Yl91MzJfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2Yl91NjRfeCkpKQpzdnVpbnQ2NF90IHN2cmV2Yl91NjRfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2Yl91MTZfeCkpKQpzdnVpbnQxNl90IHN2cmV2Yl91MTZfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2Yl9zMzJfeCkpKQpzdmludDMyX3Qgc3ZyZXZiX3MzMl94KHN2Ym9vbF90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJldmJfczY0X3gpKSkKc3ZpbnQ2NF90IHN2cmV2Yl9zNjRfeChzdmJvb2xfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyZXZiX3MxNl94KSkpCnN2aW50MTZfdCBzdnJldmJfczE2X3goc3Zib29sX3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2Yl91MzJfeikpKQpzdnVpbnQzMl90IHN2cmV2Yl91MzJfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2Yl91NjRfeikpKQpzdnVpbnQ2NF90IHN2cmV2Yl91NjRfeihzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2Yl91MTZfeikpKQpzdnVpbnQxNl90IHN2cmV2Yl91MTZfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2Yl9zMzJfeikpKQpzdmludDMyX3Qgc3ZyZXZiX3MzMl96KHN2Ym9vbF90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJldmJfczY0X3opKSkKc3ZpbnQ2NF90IHN2cmV2Yl9zNjRfeihzdmJvb2xfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyZXZiX3MxNl96KSkpCnN2aW50MTZfdCBzdnJldmJfczE2X3ooc3Zib29sX3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2aF91MzJfbSkpKQpzdnVpbnQzMl90IHN2cmV2aF91MzJfbShzdnVpbnQzMl90LCBzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2aF91NjRfbSkpKQpzdnVpbnQ2NF90IHN2cmV2aF91NjRfbShzdnVpbnQ2NF90LCBzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2aF9zMzJfbSkpKQpzdmludDMyX3Qgc3ZyZXZoX3MzMl9tKHN2aW50MzJfdCwgc3Zib29sX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2aF9zNjRfbSkpKQpzdmludDY0X3Qgc3ZyZXZoX3M2NF9tKHN2aW50NjRfdCwgc3Zib29sX3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2aF91MzJfeCkpKQpzdnVpbnQzMl90IHN2cmV2aF91MzJfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2aF91NjRfeCkpKQpzdnVpbnQ2NF90IHN2cmV2aF91NjRfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2aF9zMzJfeCkpKQpzdmludDMyX3Qgc3ZyZXZoX3MzMl94KHN2Ym9vbF90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJldmhfczY0X3gpKSkKc3ZpbnQ2NF90IHN2cmV2aF9zNjRfeChzdmJvb2xfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyZXZoX3UzMl96KSkpCnN2dWludDMyX3Qgc3ZyZXZoX3UzMl96KHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyZXZoX3U2NF96KSkpCnN2dWludDY0X3Qgc3ZyZXZoX3U2NF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyZXZoX3MzMl96KSkpCnN2aW50MzJfdCBzdnJldmhfczMyX3ooc3Zib29sX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2aF9zNjRfeikpKQpzdmludDY0X3Qgc3ZyZXZoX3M2NF96KHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJldndfdTY0X20pKSkKc3Z1aW50NjRfdCBzdnJldndfdTY0X20oc3Z1aW50NjRfdCwgc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJldndfczY0X20pKSkKc3ZpbnQ2NF90IHN2cmV2d19zNjRfbShzdmludDY0X3QsIHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJldndfdTY0X3gpKSkKc3Z1aW50NjRfdCBzdnJldndfdTY0X3goc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJldndfczY0X3gpKSkKc3ZpbnQ2NF90IHN2cmV2d19zNjRfeChzdmJvb2xfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyZXZ3X3U2NF96KSkpCnN2dWludDY0X3Qgc3ZyZXZ3X3U2NF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyZXZ3X3M2NF96KSkpCnN2aW50NjRfdCBzdnJldndfczY0X3ooc3Zib29sX3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmludGFfZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZyaW50YV9mNjRfbShzdmZsb2F0NjRfdCwgc3Zib29sX3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaW50YV9mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdnJpbnRhX2YzMl9tKHN2ZmxvYXQzMl90LCBzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJpbnRhX2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2cmludGFfZjE2X20oc3ZmbG9hdDE2X3QsIHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmludGFfZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZyaW50YV9mNjRfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJpbnRhX2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2cmludGFfZjMyX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaW50YV9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdnJpbnRhX2YxNl94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmludGFfZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZyaW50YV9mNjRfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJpbnRhX2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2cmludGFfZjMyX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaW50YV9mMTZfeikpKQpzdmZsb2F0MTZfdCBzdnJpbnRhX2YxNl96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmludGlfZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZyaW50aV9mNjRfbShzdmZsb2F0NjRfdCwgc3Zib29sX3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaW50aV9mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdnJpbnRpX2YzMl9tKHN2ZmxvYXQzMl90LCBzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJpbnRpX2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2cmludGlfZjE2X20oc3ZmbG9hdDE2X3QsIHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmludGlfZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZyaW50aV9mNjRfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJpbnRpX2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2cmludGlfZjMyX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaW50aV9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdnJpbnRpX2YxNl94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmludGlfZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZyaW50aV9mNjRfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJpbnRpX2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2cmludGlfZjMyX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaW50aV9mMTZfeikpKQpzdmZsb2F0MTZfdCBzdnJpbnRpX2YxNl96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmludG1fZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZyaW50bV9mNjRfbShzdmZsb2F0NjRfdCwgc3Zib29sX3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaW50bV9mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdnJpbnRtX2YzMl9tKHN2ZmxvYXQzMl90LCBzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJpbnRtX2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2cmludG1fZjE2X20oc3ZmbG9hdDE2X3QsIHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmludG1fZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZyaW50bV9mNjRfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJpbnRtX2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2cmludG1fZjMyX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaW50bV9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdnJpbnRtX2YxNl94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmludG1fZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZyaW50bV9mNjRfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJpbnRtX2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2cmludG1fZjMyX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaW50bV9mMTZfeikpKQpzdmZsb2F0MTZfdCBzdnJpbnRtX2YxNl96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmludG5fZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZyaW50bl9mNjRfbShzdmZsb2F0NjRfdCwgc3Zib29sX3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaW50bl9mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdnJpbnRuX2YzMl9tKHN2ZmxvYXQzMl90LCBzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJpbnRuX2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2cmludG5fZjE2X20oc3ZmbG9hdDE2X3QsIHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmludG5fZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZyaW50bl9mNjRfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJpbnRuX2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2cmludG5fZjMyX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaW50bl9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdnJpbnRuX2YxNl94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmludG5fZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZyaW50bl9mNjRfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJpbnRuX2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2cmludG5fZjMyX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaW50bl9mMTZfeikpKQpzdmZsb2F0MTZfdCBzdnJpbnRuX2YxNl96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmludHBfZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZyaW50cF9mNjRfbShzdmZsb2F0NjRfdCwgc3Zib29sX3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaW50cF9mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdnJpbnRwX2YzMl9tKHN2ZmxvYXQzMl90LCBzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJpbnRwX2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2cmludHBfZjE2X20oc3ZmbG9hdDE2X3QsIHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmludHBfZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZyaW50cF9mNjRfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJpbnRwX2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2cmludHBfZjMyX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaW50cF9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdnJpbnRwX2YxNl94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmludHBfZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZyaW50cF9mNjRfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJpbnRwX2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2cmludHBfZjMyX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaW50cF9mMTZfeikpKQpzdmZsb2F0MTZfdCBzdnJpbnRwX2YxNl96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmludHhfZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZyaW50eF9mNjRfbShzdmZsb2F0NjRfdCwgc3Zib29sX3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaW50eF9mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdnJpbnR4X2YzMl9tKHN2ZmxvYXQzMl90LCBzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJpbnR4X2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2cmludHhfZjE2X20oc3ZmbG9hdDE2X3QsIHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmludHhfZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZyaW50eF9mNjRfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJpbnR4X2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2cmludHhfZjMyX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaW50eF9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdnJpbnR4X2YxNl94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmludHhfZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZyaW50eF9mNjRfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJpbnR4X2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2cmludHhfZjMyX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaW50eF9mMTZfeikpKQpzdmZsb2F0MTZfdCBzdnJpbnR4X2YxNl96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmludHpfZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZyaW50el9mNjRfbShzdmZsb2F0NjRfdCwgc3Zib29sX3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaW50el9mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdnJpbnR6X2YzMl9tKHN2ZmxvYXQzMl90LCBzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJpbnR6X2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2cmludHpfZjE2X20oc3ZmbG9hdDE2X3QsIHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmludHpfZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZyaW50el9mNjRfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJpbnR6X2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2cmludHpfZjMyX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaW50el9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdnJpbnR6X2YxNl94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmludHpfZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZyaW50el9mNjRfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJpbnR6X2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2cmludHpfZjMyX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaW50el9mMTZfeikpKQpzdmZsb2F0MTZfdCBzdnJpbnR6X2YxNl96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNxcnRlX2Y2NCkpKQpzdmZsb2F0NjRfdCBzdnJzcXJ0ZV9mNjQoc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzcXJ0ZV9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3Zyc3FydGVfZjMyKHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc3FydGVfZjE2KSkpCnN2ZmxvYXQxNl90IHN2cnNxcnRlX2YxNihzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNxcnRzX2Y2NCkpKQpzdmZsb2F0NjRfdCBzdnJzcXJ0c19mNjQoc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc3FydHNfZjMyKSkpCnN2ZmxvYXQzMl90IHN2cnNxcnRzX2YzMihzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzcXJ0c19mMTYpKSkKc3ZmbG9hdDE2X3Qgc3Zyc3FydHNfZjE2KHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2NhbGVfbl9mNjRfbSkpKQpzdmZsb2F0NjRfdCBzdnNjYWxlX25fZjY0X20oc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzY2FsZV9uX2YzMl9tKSkpCnN2ZmxvYXQzMl90IHN2c2NhbGVfbl9mMzJfbShzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNjYWxlX25fZjE2X20pKSkKc3ZmbG9hdDE2X3Qgc3ZzY2FsZV9uX2YxNl9tKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2NhbGVfbl9mNjRfeCkpKQpzdmZsb2F0NjRfdCBzdnNjYWxlX25fZjY0X3goc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzY2FsZV9uX2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2c2NhbGVfbl9mMzJfeChzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNjYWxlX25fZjE2X3gpKSkKc3ZmbG9hdDE2X3Qgc3ZzY2FsZV9uX2YxNl94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2NhbGVfbl9mNjRfeikpKQpzdmZsb2F0NjRfdCBzdnNjYWxlX25fZjY0X3ooc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzY2FsZV9uX2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2c2NhbGVfbl9mMzJfeihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNjYWxlX25fZjE2X3opKSkKc3ZmbG9hdDE2X3Qgc3ZzY2FsZV9uX2YxNl96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2NhbGVfZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZzY2FsZV9mNjRfbShzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2NhbGVfZjMyX20pKSkKc3ZmbG9hdDMyX3Qgc3ZzY2FsZV9mMzJfbShzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2NhbGVfZjE2X20pKSkKc3ZmbG9hdDE2X3Qgc3ZzY2FsZV9mMTZfbShzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2NhbGVfZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZzY2FsZV9mNjRfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2NhbGVfZjMyX3gpKSkKc3ZmbG9hdDMyX3Qgc3ZzY2FsZV9mMzJfeChzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2NhbGVfZjE2X3gpKSkKc3ZmbG9hdDE2X3Qgc3ZzY2FsZV9mMTZfeChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2NhbGVfZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZzY2FsZV9mNjRfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2NhbGVfZjMyX3opKSkKc3ZmbG9hdDMyX3Qgc3ZzY2FsZV9mMzJfeihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2NhbGVfZjE2X3opKSkKc3ZmbG9hdDE2X3Qgc3ZzY2FsZV9mMTZfeihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2VsX2IpKSkKc3Zib29sX3Qgc3ZzZWxfYihzdmJvb2xfdCwgc3Zib29sX3QsIHN2Ym9vbF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzZWxfdTgpKSkKc3Z1aW50OF90IHN2c2VsX3U4KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2VsX3UzMikpKQpzdnVpbnQzMl90IHN2c2VsX3UzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2VsX3U2NCkpKQpzdnVpbnQ2NF90IHN2c2VsX3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2VsX3UxNikpKQpzdnVpbnQxNl90IHN2c2VsX3UxNihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2VsX3M4KSkpCnN2aW50OF90IHN2c2VsX3M4KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNlbF9mNjQpKSkKc3ZmbG9hdDY0X3Qgc3ZzZWxfZjY0KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNlbF9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3ZzZWxfZjMyKHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNlbF9mMTYpKSkKc3ZmbG9hdDE2X3Qgc3ZzZWxfZjE2KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNlbF9zMzIpKSkKc3ZpbnQzMl90IHN2c2VsX3MzMihzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNlbF9zNjQpKSkKc3ZpbnQ2NF90IHN2c2VsX3M2NChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNlbF9zMTYpKSkKc3ZpbnQxNl90IHN2c2VsX3MxNihzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNldDJfdTgpKSkKc3Z1aW50OHgyX3Qgc3ZzZXQyX3U4KHN2dWludDh4Ml90LCB1aW50NjRfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzZXQyX3UzMikpKQpzdnVpbnQzMngyX3Qgc3ZzZXQyX3UzMihzdnVpbnQzMngyX3QsIHVpbnQ2NF90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzZXQyX3U2NCkpKQpzdnVpbnQ2NHgyX3Qgc3ZzZXQyX3U2NChzdnVpbnQ2NHgyX3QsIHVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzZXQyX3UxNikpKQpzdnVpbnQxNngyX3Qgc3ZzZXQyX3UxNihzdnVpbnQxNngyX3QsIHVpbnQ2NF90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzZXQyX3M4KSkpCnN2aW50OHgyX3Qgc3ZzZXQyX3M4KHN2aW50OHgyX3QsIHVpbnQ2NF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2V0Ml9mNjQpKSkKc3ZmbG9hdDY0eDJfdCBzdnNldDJfZjY0KHN2ZmxvYXQ2NHgyX3QsIHVpbnQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2V0Ml9mMzIpKSkKc3ZmbG9hdDMyeDJfdCBzdnNldDJfZjMyKHN2ZmxvYXQzMngyX3QsIHVpbnQ2NF90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2V0Ml9mMTYpKSkKc3ZmbG9hdDE2eDJfdCBzdnNldDJfZjE2KHN2ZmxvYXQxNngyX3QsIHVpbnQ2NF90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2V0Ml9zMzIpKSkKc3ZpbnQzMngyX3Qgc3ZzZXQyX3MzMihzdmludDMyeDJfdCwgdWludDY0X3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2V0Ml9zNjQpKSkKc3ZpbnQ2NHgyX3Qgc3ZzZXQyX3M2NChzdmludDY0eDJfdCwgdWludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2V0Ml9zMTYpKSkKc3ZpbnQxNngyX3Qgc3ZzZXQyX3MxNihzdmludDE2eDJfdCwgdWludDY0X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2V0M191OCkpKQpzdnVpbnQ4eDNfdCBzdnNldDNfdTgoc3Z1aW50OHgzX3QsIHVpbnQ2NF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNldDNfdTMyKSkpCnN2dWludDMyeDNfdCBzdnNldDNfdTMyKHN2dWludDMyeDNfdCwgdWludDY0X3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNldDNfdTY0KSkpCnN2dWludDY0eDNfdCBzdnNldDNfdTY0KHN2dWludDY0eDNfdCwgdWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNldDNfdTE2KSkpCnN2dWludDE2eDNfdCBzdnNldDNfdTE2KHN2dWludDE2eDNfdCwgdWludDY0X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNldDNfczgpKSkKc3ZpbnQ4eDNfdCBzdnNldDNfczgoc3ZpbnQ4eDNfdCwgdWludDY0X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzZXQzX2Y2NCkpKQpzdmZsb2F0NjR4M190IHN2c2V0M19mNjQoc3ZmbG9hdDY0eDNfdCwgdWludDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzZXQzX2YzMikpKQpzdmZsb2F0MzJ4M190IHN2c2V0M19mMzIoc3ZmbG9hdDMyeDNfdCwgdWludDY0X3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzZXQzX2YxNikpKQpzdmZsb2F0MTZ4M190IHN2c2V0M19mMTYoc3ZmbG9hdDE2eDNfdCwgdWludDY0X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzZXQzX3MzMikpKQpzdmludDMyeDNfdCBzdnNldDNfczMyKHN2aW50MzJ4M190LCB1aW50NjRfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzZXQzX3M2NCkpKQpzdmludDY0eDNfdCBzdnNldDNfczY0KHN2aW50NjR4M190LCB1aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzZXQzX3MxNikpKQpzdmludDE2eDNfdCBzdnNldDNfczE2KHN2aW50MTZ4M190LCB1aW50NjRfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzZXQ0X3U4KSkpCnN2dWludDh4NF90IHN2c2V0NF91OChzdnVpbnQ4eDRfdCwgdWludDY0X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2V0NF91MzIpKSkKc3Z1aW50MzJ4NF90IHN2c2V0NF91MzIoc3Z1aW50MzJ4NF90LCB1aW50NjRfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2V0NF91NjQpKSkKc3Z1aW50NjR4NF90IHN2c2V0NF91NjQoc3Z1aW50NjR4NF90LCB1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2V0NF91MTYpKSkKc3Z1aW50MTZ4NF90IHN2c2V0NF91MTYoc3Z1aW50MTZ4NF90LCB1aW50NjRfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2V0NF9zOCkpKQpzdmludDh4NF90IHN2c2V0NF9zOChzdmludDh4NF90LCB1aW50NjRfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNldDRfZjY0KSkpCnN2ZmxvYXQ2NHg0X3Qgc3ZzZXQ0X2Y2NChzdmZsb2F0NjR4NF90LCB1aW50NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNldDRfZjMyKSkpCnN2ZmxvYXQzMng0X3Qgc3ZzZXQ0X2YzMihzdmZsb2F0MzJ4NF90LCB1aW50NjRfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNldDRfZjE2KSkpCnN2ZmxvYXQxNng0X3Qgc3ZzZXQ0X2YxNihzdmZsb2F0MTZ4NF90LCB1aW50NjRfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNldDRfczMyKSkpCnN2aW50MzJ4NF90IHN2c2V0NF9zMzIoc3ZpbnQzMng0X3QsIHVpbnQ2NF90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNldDRfczY0KSkpCnN2aW50NjR4NF90IHN2c2V0NF9zNjQoc3ZpbnQ2NHg0X3QsIHVpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNldDRfczE2KSkpCnN2aW50MTZ4NF90IHN2c2V0NF9zMTYoc3ZpbnQxNng0X3QsIHVpbnQ2NF90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNldGZmcikpKQp2b2lkIHN2c2V0ZmZyKCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3BsaWNlX3U4KSkpCnN2dWludDhfdCBzdnNwbGljZV91OChzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNwbGljZV91MzIpKSkKc3Z1aW50MzJfdCBzdnNwbGljZV91MzIoc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNwbGljZV91NjQpKSkKc3Z1aW50NjRfdCBzdnNwbGljZV91NjQoc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNwbGljZV91MTYpKSkKc3Z1aW50MTZfdCBzdnNwbGljZV91MTYoc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNwbGljZV9zOCkpKQpzdmludDhfdCBzdnNwbGljZV9zOChzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzcGxpY2VfZjY0KSkpCnN2ZmxvYXQ2NF90IHN2c3BsaWNlX2Y2NChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzcGxpY2VfZjMyKSkpCnN2ZmxvYXQzMl90IHN2c3BsaWNlX2YzMihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzcGxpY2VfZjE2KSkpCnN2ZmxvYXQxNl90IHN2c3BsaWNlX2YxNihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzcGxpY2VfczMyKSkpCnN2aW50MzJfdCBzdnNwbGljZV9zMzIoc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzcGxpY2VfczY0KSkpCnN2aW50NjRfdCBzdnNwbGljZV9zNjQoc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzcGxpY2VfczE2KSkpCnN2aW50MTZfdCBzdnNwbGljZV9zMTYoc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzcXJ0X2Y2NF9tKSkpCnN2ZmxvYXQ2NF90IHN2c3FydF9mNjRfbShzdmZsb2F0NjRfdCwgc3Zib29sX3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzcXJ0X2YzMl9tKSkpCnN2ZmxvYXQzMl90IHN2c3FydF9mMzJfbShzdmZsb2F0MzJfdCwgc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzcXJ0X2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2c3FydF9mMTZfbShzdmZsb2F0MTZfdCwgc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzcXJ0X2Y2NF94KSkpCnN2ZmxvYXQ2NF90IHN2c3FydF9mNjRfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNxcnRfZjMyX3gpKSkKc3ZmbG9hdDMyX3Qgc3ZzcXJ0X2YzMl94KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3FydF9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdnNxcnRfZjE2X3goc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzcXJ0X2Y2NF96KSkpCnN2ZmxvYXQ2NF90IHN2c3FydF9mNjRfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNxcnRfZjMyX3opKSkKc3ZmbG9hdDMyX3Qgc3ZzcXJ0X2YzMl96KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3FydF9mMTZfeikpKQpzdmZsb2F0MTZfdCBzdnNxcnRfZjE2X3ooc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFfdTgpKSkKdm9pZCBzdnN0MV91OChzdmJvb2xfdCwgdWludDhfdCAqLCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV91MzIpKSkKdm9pZCBzdnN0MV91MzIoc3Zib29sX3QsIHVpbnQzMl90ICosIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV91NjQpKSkKdm9pZCBzdnN0MV91NjQoc3Zib29sX3QsIHVpbnQ2NF90ICosIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV91MTYpKSkKdm9pZCBzdnN0MV91MTYoc3Zib29sX3QsIHVpbnQxNl90ICosIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV9zOCkpKQp2b2lkIHN2c3QxX3M4KHN2Ym9vbF90LCBpbnQ4X3QgKiwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV9mNjQpKSkKdm9pZCBzdnN0MV9mNjQoc3Zib29sX3QsIGZsb2F0NjRfdCAqLCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxX2YzMikpKQp2b2lkIHN2c3QxX2YzMihzdmJvb2xfdCwgZmxvYXQzMl90ICosIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFfZjE2KSkpCnZvaWQgc3ZzdDFfZjE2KHN2Ym9vbF90LCBmbG9hdDE2X3QgKiwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV9zMzIpKSkKdm9pZCBzdnN0MV9zMzIoc3Zib29sX3QsIGludDMyX3QgKiwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFfczY0KSkpCnZvaWQgc3ZzdDFfczY0KHN2Ym9vbF90LCBpbnQ2NF90ICosIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxX3MxNikpKQp2b2lkIHN2c3QxX3MxNihzdmJvb2xfdCwgaW50MTZfdCAqLCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV9zY2F0dGVyX3UzMmJhc2VfaW5kZXhfdTMyKSkpCnZvaWQgc3ZzdDFfc2NhdHRlcl91MzJiYXNlX2luZGV4X3UzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50NjRfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxX3NjYXR0ZXJfdTY0YmFzZV9pbmRleF91NjQpKSkKdm9pZCBzdnN0MV9zY2F0dGVyX3U2NGJhc2VfaW5kZXhfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFfc2NhdHRlcl91NjRiYXNlX2luZGV4X2Y2NCkpKQp2b2lkIHN2c3QxX3NjYXR0ZXJfdTY0YmFzZV9pbmRleF9mNjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFfc2NhdHRlcl91MzJiYXNlX2luZGV4X2YzMikpKQp2b2lkIHN2c3QxX3NjYXR0ZXJfdTMyYmFzZV9pbmRleF9mMzIoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFfc2NhdHRlcl91MzJiYXNlX2luZGV4X3MzMikpKQp2b2lkIHN2c3QxX3NjYXR0ZXJfdTMyYmFzZV9pbmRleF9zMzIoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxX3NjYXR0ZXJfdTY0YmFzZV9pbmRleF9zNjQpKSkKdm9pZCBzdnN0MV9zY2F0dGVyX3U2NGJhc2VfaW5kZXhfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV9zY2F0dGVyX3UzMmJhc2Vfb2Zmc2V0X3UzMikpKQp2b2lkIHN2c3QxX3NjYXR0ZXJfdTMyYmFzZV9vZmZzZXRfdTMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFfc2NhdHRlcl91NjRiYXNlX29mZnNldF91NjQpKSkKdm9pZCBzdnN0MV9zY2F0dGVyX3U2NGJhc2Vfb2Zmc2V0X3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxX3NjYXR0ZXJfdTY0YmFzZV9vZmZzZXRfZjY0KSkpCnZvaWQgc3ZzdDFfc2NhdHRlcl91NjRiYXNlX29mZnNldF9mNjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFfc2NhdHRlcl91MzJiYXNlX29mZnNldF9mMzIpKSkKdm9pZCBzdnN0MV9zY2F0dGVyX3UzMmJhc2Vfb2Zmc2V0X2YzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50NjRfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV9zY2F0dGVyX3UzMmJhc2Vfb2Zmc2V0X3MzMikpKQp2b2lkIHN2c3QxX3NjYXR0ZXJfdTMyYmFzZV9vZmZzZXRfczMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV9zY2F0dGVyX3U2NGJhc2Vfb2Zmc2V0X3M2NCkpKQp2b2lkIHN2c3QxX3NjYXR0ZXJfdTY0YmFzZV9vZmZzZXRfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV9zY2F0dGVyX3UzMmJhc2VfdTMyKSkpCnZvaWQgc3ZzdDFfc2NhdHRlcl91MzJiYXNlX3UzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxX3NjYXR0ZXJfdTY0YmFzZV91NjQpKSkKdm9pZCBzdnN0MV9zY2F0dGVyX3U2NGJhc2VfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFfc2NhdHRlcl91NjRiYXNlX2Y2NCkpKQp2b2lkIHN2c3QxX3NjYXR0ZXJfdTY0YmFzZV9mNjQoc3Zib29sX3QsIHN2dWludDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFfc2NhdHRlcl91MzJiYXNlX2YzMikpKQp2b2lkIHN2c3QxX3NjYXR0ZXJfdTMyYmFzZV9mMzIoc3Zib29sX3QsIHN2dWludDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFfc2NhdHRlcl91MzJiYXNlX3MzMikpKQp2b2lkIHN2c3QxX3NjYXR0ZXJfdTMyYmFzZV9zMzIoc3Zib29sX3QsIHN2dWludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxX3NjYXR0ZXJfdTY0YmFzZV9zNjQpKSkKdm9pZCBzdnN0MV9zY2F0dGVyX3U2NGJhc2VfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV9zY2F0dGVyX3MzMmluZGV4X3UzMikpKQp2b2lkIHN2c3QxX3NjYXR0ZXJfczMyaW5kZXhfdTMyKHN2Ym9vbF90LCB1aW50MzJfdCAqLCBzdmludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV9zY2F0dGVyX3MzMmluZGV4X2YzMikpKQp2b2lkIHN2c3QxX3NjYXR0ZXJfczMyaW5kZXhfZjMyKHN2Ym9vbF90LCBmbG9hdDMyX3QgKiwgc3ZpbnQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxX3NjYXR0ZXJfczMyaW5kZXhfczMyKSkpCnZvaWQgc3ZzdDFfc2NhdHRlcl9zMzJpbmRleF9zMzIoc3Zib29sX3QsIGludDMyX3QgKiwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV9zY2F0dGVyX3UzMmluZGV4X3UzMikpKQp2b2lkIHN2c3QxX3NjYXR0ZXJfdTMyaW5kZXhfdTMyKHN2Ym9vbF90LCB1aW50MzJfdCAqLCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFfc2NhdHRlcl91MzJpbmRleF9mMzIpKSkKdm9pZCBzdnN0MV9zY2F0dGVyX3UzMmluZGV4X2YzMihzdmJvb2xfdCwgZmxvYXQzMl90ICosIHN2dWludDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFfc2NhdHRlcl91MzJpbmRleF9zMzIpKSkKdm9pZCBzdnN0MV9zY2F0dGVyX3UzMmluZGV4X3MzMihzdmJvb2xfdCwgaW50MzJfdCAqLCBzdnVpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV9zY2F0dGVyX3M2NGluZGV4X3U2NCkpKQp2b2lkIHN2c3QxX3NjYXR0ZXJfczY0aW5kZXhfdTY0KHN2Ym9vbF90LCB1aW50NjRfdCAqLCBzdmludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV9zY2F0dGVyX3M2NGluZGV4X2Y2NCkpKQp2b2lkIHN2c3QxX3NjYXR0ZXJfczY0aW5kZXhfZjY0KHN2Ym9vbF90LCBmbG9hdDY0X3QgKiwgc3ZpbnQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxX3NjYXR0ZXJfczY0aW5kZXhfczY0KSkpCnZvaWQgc3ZzdDFfc2NhdHRlcl9zNjRpbmRleF9zNjQoc3Zib29sX3QsIGludDY0X3QgKiwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV9zY2F0dGVyX3U2NGluZGV4X3U2NCkpKQp2b2lkIHN2c3QxX3NjYXR0ZXJfdTY0aW5kZXhfdTY0KHN2Ym9vbF90LCB1aW50NjRfdCAqLCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFfc2NhdHRlcl91NjRpbmRleF9mNjQpKSkKdm9pZCBzdnN0MV9zY2F0dGVyX3U2NGluZGV4X2Y2NChzdmJvb2xfdCwgZmxvYXQ2NF90ICosIHN2dWludDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFfc2NhdHRlcl91NjRpbmRleF9zNjQpKSkKdm9pZCBzdnN0MV9zY2F0dGVyX3U2NGluZGV4X3M2NChzdmJvb2xfdCwgaW50NjRfdCAqLCBzdnVpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV9zY2F0dGVyX3MzMm9mZnNldF91MzIpKSkKdm9pZCBzdnN0MV9zY2F0dGVyX3MzMm9mZnNldF91MzIoc3Zib29sX3QsIHVpbnQzMl90ICosIHN2aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxX3NjYXR0ZXJfczMyb2Zmc2V0X2YzMikpKQp2b2lkIHN2c3QxX3NjYXR0ZXJfczMyb2Zmc2V0X2YzMihzdmJvb2xfdCwgZmxvYXQzMl90ICosIHN2aW50MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV9zY2F0dGVyX3MzMm9mZnNldF9zMzIpKSkKdm9pZCBzdnN0MV9zY2F0dGVyX3MzMm9mZnNldF9zMzIoc3Zib29sX3QsIGludDMyX3QgKiwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV9zY2F0dGVyX3UzMm9mZnNldF91MzIpKSkKdm9pZCBzdnN0MV9zY2F0dGVyX3UzMm9mZnNldF91MzIoc3Zib29sX3QsIHVpbnQzMl90ICosIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV9zY2F0dGVyX3UzMm9mZnNldF9mMzIpKSkKdm9pZCBzdnN0MV9zY2F0dGVyX3UzMm9mZnNldF9mMzIoc3Zib29sX3QsIGZsb2F0MzJfdCAqLCBzdnVpbnQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxX3NjYXR0ZXJfdTMyb2Zmc2V0X3MzMikpKQp2b2lkIHN2c3QxX3NjYXR0ZXJfdTMyb2Zmc2V0X3MzMihzdmJvb2xfdCwgaW50MzJfdCAqLCBzdnVpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV9zY2F0dGVyX3M2NG9mZnNldF91NjQpKSkKdm9pZCBzdnN0MV9zY2F0dGVyX3M2NG9mZnNldF91NjQoc3Zib29sX3QsIHVpbnQ2NF90ICosIHN2aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxX3NjYXR0ZXJfczY0b2Zmc2V0X2Y2NCkpKQp2b2lkIHN2c3QxX3NjYXR0ZXJfczY0b2Zmc2V0X2Y2NChzdmJvb2xfdCwgZmxvYXQ2NF90ICosIHN2aW50NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV9zY2F0dGVyX3M2NG9mZnNldF9zNjQpKSkKdm9pZCBzdnN0MV9zY2F0dGVyX3M2NG9mZnNldF9zNjQoc3Zib29sX3QsIGludDY0X3QgKiwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV9zY2F0dGVyX3U2NG9mZnNldF91NjQpKSkKdm9pZCBzdnN0MV9zY2F0dGVyX3U2NG9mZnNldF91NjQoc3Zib29sX3QsIHVpbnQ2NF90ICosIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV9zY2F0dGVyX3U2NG9mZnNldF9mNjQpKSkKdm9pZCBzdnN0MV9zY2F0dGVyX3U2NG9mZnNldF9mNjQoc3Zib29sX3QsIGZsb2F0NjRfdCAqLCBzdnVpbnQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxX3NjYXR0ZXJfdTY0b2Zmc2V0X3M2NCkpKQp2b2lkIHN2c3QxX3NjYXR0ZXJfdTY0b2Zmc2V0X3M2NChzdmJvb2xfdCwgaW50NjRfdCAqLCBzdnVpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV92bnVtX3U4KSkpCnZvaWQgc3ZzdDFfdm51bV91OChzdmJvb2xfdCwgdWludDhfdCAqLCBpbnQ2NF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV92bnVtX3UzMikpKQp2b2lkIHN2c3QxX3ZudW1fdTMyKHN2Ym9vbF90LCB1aW50MzJfdCAqLCBpbnQ2NF90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFfdm51bV91NjQpKSkKdm9pZCBzdnN0MV92bnVtX3U2NChzdmJvb2xfdCwgdWludDY0X3QgKiwgaW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxX3ZudW1fdTE2KSkpCnZvaWQgc3ZzdDFfdm51bV91MTYoc3Zib29sX3QsIHVpbnQxNl90ICosIGludDY0X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV92bnVtX3M4KSkpCnZvaWQgc3ZzdDFfdm51bV9zOChzdmJvb2xfdCwgaW50OF90ICosIGludDY0X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFfdm51bV9mNjQpKSkKdm9pZCBzdnN0MV92bnVtX2Y2NChzdmJvb2xfdCwgZmxvYXQ2NF90ICosIGludDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFfdm51bV9mMzIpKSkKdm9pZCBzdnN0MV92bnVtX2YzMihzdmJvb2xfdCwgZmxvYXQzMl90ICosIGludDY0X3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFfdm51bV9mMTYpKSkKdm9pZCBzdnN0MV92bnVtX2YxNihzdmJvb2xfdCwgZmxvYXQxNl90ICosIGludDY0X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFfdm51bV9zMzIpKSkKdm9pZCBzdnN0MV92bnVtX3MzMihzdmJvb2xfdCwgaW50MzJfdCAqLCBpbnQ2NF90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV92bnVtX3M2NCkpKQp2b2lkIHN2c3QxX3ZudW1fczY0KHN2Ym9vbF90LCBpbnQ2NF90ICosIGludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxX3ZudW1fczE2KSkpCnZvaWQgc3ZzdDFfdm51bV9zMTYoc3Zib29sX3QsIGludDE2X3QgKiwgaW50NjRfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFiX3MzMikpKQp2b2lkIHN2c3QxYl9zMzIoc3Zib29sX3QsIGludDhfdCAqLCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWJfczY0KSkpCnZvaWQgc3ZzdDFiX3M2NChzdmJvb2xfdCwgaW50OF90ICosIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxYl9zMTYpKSkKdm9pZCBzdnN0MWJfczE2KHN2Ym9vbF90LCBpbnQ4X3QgKiwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFiX3UzMikpKQp2b2lkIHN2c3QxYl91MzIoc3Zib29sX3QsIHVpbnQ4X3QgKiwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxYl91NjQpKSkKdm9pZCBzdnN0MWJfdTY0KHN2Ym9vbF90LCB1aW50OF90ICosIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWJfdTE2KSkpCnZvaWQgc3ZzdDFiX3UxNihzdmJvb2xfdCwgdWludDhfdCAqLCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFiX3NjYXR0ZXJfdTMyYmFzZV9vZmZzZXRfdTMyKSkpCnZvaWQgc3ZzdDFiX3NjYXR0ZXJfdTMyYmFzZV9vZmZzZXRfdTMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFiX3NjYXR0ZXJfdTY0YmFzZV9vZmZzZXRfdTY0KSkpCnZvaWQgc3ZzdDFiX3NjYXR0ZXJfdTY0YmFzZV9vZmZzZXRfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFiX3NjYXR0ZXJfdTMyYmFzZV9vZmZzZXRfczMyKSkpCnZvaWQgc3ZzdDFiX3NjYXR0ZXJfdTMyYmFzZV9vZmZzZXRfczMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWJfc2NhdHRlcl91NjRiYXNlX29mZnNldF9zNjQpKSkKdm9pZCBzdnN0MWJfc2NhdHRlcl91NjRiYXNlX29mZnNldF9zNjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxYl9zY2F0dGVyX3UzMmJhc2VfdTMyKSkpCnZvaWQgc3ZzdDFiX3NjYXR0ZXJfdTMyYmFzZV91MzIoc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWJfc2NhdHRlcl91NjRiYXNlX3U2NCkpKQp2b2lkIHN2c3QxYl9zY2F0dGVyX3U2NGJhc2VfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFiX3NjYXR0ZXJfdTMyYmFzZV9zMzIpKSkKdm9pZCBzdnN0MWJfc2NhdHRlcl91MzJiYXNlX3MzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFiX3NjYXR0ZXJfdTY0YmFzZV9zNjQpKSkKdm9pZCBzdnN0MWJfc2NhdHRlcl91NjRiYXNlX3M2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFiX3NjYXR0ZXJfczMyb2Zmc2V0X3MzMikpKQp2b2lkIHN2c3QxYl9zY2F0dGVyX3MzMm9mZnNldF9zMzIoc3Zib29sX3QsIGludDhfdCAqLCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxYl9zY2F0dGVyX3MzMm9mZnNldF91MzIpKSkKdm9pZCBzdnN0MWJfc2NhdHRlcl9zMzJvZmZzZXRfdTMyKHN2Ym9vbF90LCB1aW50OF90ICosIHN2aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxYl9zY2F0dGVyX3UzMm9mZnNldF9zMzIpKSkKdm9pZCBzdnN0MWJfc2NhdHRlcl91MzJvZmZzZXRfczMyKHN2Ym9vbF90LCBpbnQ4X3QgKiwgc3Z1aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFiX3NjYXR0ZXJfdTMyb2Zmc2V0X3UzMikpKQp2b2lkIHN2c3QxYl9zY2F0dGVyX3UzMm9mZnNldF91MzIoc3Zib29sX3QsIHVpbnQ4X3QgKiwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxYl9zY2F0dGVyX3M2NG9mZnNldF9zNjQpKSkKdm9pZCBzdnN0MWJfc2NhdHRlcl9zNjRvZmZzZXRfczY0KHN2Ym9vbF90LCBpbnQ4X3QgKiwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWJfc2NhdHRlcl9zNjRvZmZzZXRfdTY0KSkpCnZvaWQgc3ZzdDFiX3NjYXR0ZXJfczY0b2Zmc2V0X3U2NChzdmJvb2xfdCwgdWludDhfdCAqLCBzdmludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWJfc2NhdHRlcl91NjRvZmZzZXRfczY0KSkpCnZvaWQgc3ZzdDFiX3NjYXR0ZXJfdTY0b2Zmc2V0X3M2NChzdmJvb2xfdCwgaW50OF90ICosIHN2dWludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxYl9zY2F0dGVyX3U2NG9mZnNldF91NjQpKSkKdm9pZCBzdnN0MWJfc2NhdHRlcl91NjRvZmZzZXRfdTY0KHN2Ym9vbF90LCB1aW50OF90ICosIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWJfdm51bV9zMzIpKSkKdm9pZCBzdnN0MWJfdm51bV9zMzIoc3Zib29sX3QsIGludDhfdCAqLCBpbnQ2NF90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWJfdm51bV9zNjQpKSkKdm9pZCBzdnN0MWJfdm51bV9zNjQoc3Zib29sX3QsIGludDhfdCAqLCBpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWJfdm51bV9zMTYpKSkKdm9pZCBzdnN0MWJfdm51bV9zMTYoc3Zib29sX3QsIGludDhfdCAqLCBpbnQ2NF90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWJfdm51bV91MzIpKSkKdm9pZCBzdnN0MWJfdm51bV91MzIoc3Zib29sX3QsIHVpbnQ4X3QgKiwgaW50NjRfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxYl92bnVtX3U2NCkpKQp2b2lkIHN2c3QxYl92bnVtX3U2NChzdmJvb2xfdCwgdWludDhfdCAqLCBpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFiX3ZudW1fdTE2KSkpCnZvaWQgc3ZzdDFiX3ZudW1fdTE2KHN2Ym9vbF90LCB1aW50OF90ICosIGludDY0X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWhfczMyKSkpCnZvaWQgc3ZzdDFoX3MzMihzdmJvb2xfdCwgaW50MTZfdCAqLCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWhfczY0KSkpCnZvaWQgc3ZzdDFoX3M2NChzdmJvb2xfdCwgaW50MTZfdCAqLCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWhfdTMyKSkpCnZvaWQgc3ZzdDFoX3UzMihzdmJvb2xfdCwgdWludDE2X3QgKiwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxaF91NjQpKSkKdm9pZCBzdnN0MWhfdTY0KHN2Ym9vbF90LCB1aW50MTZfdCAqLCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFoX3NjYXR0ZXJfdTMyYmFzZV9pbmRleF91MzIpKSkKdm9pZCBzdnN0MWhfc2NhdHRlcl91MzJiYXNlX2luZGV4X3UzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50NjRfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxaF9zY2F0dGVyX3U2NGJhc2VfaW5kZXhfdTY0KSkpCnZvaWQgc3ZzdDFoX3NjYXR0ZXJfdTY0YmFzZV9pbmRleF91NjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWhfc2NhdHRlcl91MzJiYXNlX2luZGV4X3MzMikpKQp2b2lkIHN2c3QxaF9zY2F0dGVyX3UzMmJhc2VfaW5kZXhfczMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWhfc2NhdHRlcl91NjRiYXNlX2luZGV4X3M2NCkpKQp2b2lkIHN2c3QxaF9zY2F0dGVyX3U2NGJhc2VfaW5kZXhfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWhfc2NhdHRlcl91MzJiYXNlX29mZnNldF91MzIpKSkKdm9pZCBzdnN0MWhfc2NhdHRlcl91MzJiYXNlX29mZnNldF91MzIoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWhfc2NhdHRlcl91NjRiYXNlX29mZnNldF91NjQpKSkKdm9pZCBzdnN0MWhfc2NhdHRlcl91NjRiYXNlX29mZnNldF91NjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWhfc2NhdHRlcl91MzJiYXNlX29mZnNldF9zMzIpKSkKdm9pZCBzdnN0MWhfc2NhdHRlcl91MzJiYXNlX29mZnNldF9zMzIoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxaF9zY2F0dGVyX3U2NGJhc2Vfb2Zmc2V0X3M2NCkpKQp2b2lkIHN2c3QxaF9zY2F0dGVyX3U2NGJhc2Vfb2Zmc2V0X3M2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFoX3NjYXR0ZXJfdTMyYmFzZV91MzIpKSkKdm9pZCBzdnN0MWhfc2NhdHRlcl91MzJiYXNlX3UzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxaF9zY2F0dGVyX3U2NGJhc2VfdTY0KSkpCnZvaWQgc3ZzdDFoX3NjYXR0ZXJfdTY0YmFzZV91NjQoc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWhfc2NhdHRlcl91MzJiYXNlX3MzMikpKQp2b2lkIHN2c3QxaF9zY2F0dGVyX3UzMmJhc2VfczMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWhfc2NhdHRlcl91NjRiYXNlX3M2NCkpKQp2b2lkIHN2c3QxaF9zY2F0dGVyX3U2NGJhc2VfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWhfc2NhdHRlcl9zMzJpbmRleF9zMzIpKSkKdm9pZCBzdnN0MWhfc2NhdHRlcl9zMzJpbmRleF9zMzIoc3Zib29sX3QsIGludDE2X3QgKiwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWhfc2NhdHRlcl9zMzJpbmRleF91MzIpKSkKdm9pZCBzdnN0MWhfc2NhdHRlcl9zMzJpbmRleF91MzIoc3Zib29sX3QsIHVpbnQxNl90ICosIHN2aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxaF9zY2F0dGVyX3UzMmluZGV4X3MzMikpKQp2b2lkIHN2c3QxaF9zY2F0dGVyX3UzMmluZGV4X3MzMihzdmJvb2xfdCwgaW50MTZfdCAqLCBzdnVpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWhfc2NhdHRlcl91MzJpbmRleF91MzIpKSkKdm9pZCBzdnN0MWhfc2NhdHRlcl91MzJpbmRleF91MzIoc3Zib29sX3QsIHVpbnQxNl90ICosIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWhfc2NhdHRlcl9zNjRpbmRleF9zNjQpKSkKdm9pZCBzdnN0MWhfc2NhdHRlcl9zNjRpbmRleF9zNjQoc3Zib29sX3QsIGludDE2X3QgKiwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWhfc2NhdHRlcl9zNjRpbmRleF91NjQpKSkKdm9pZCBzdnN0MWhfc2NhdHRlcl9zNjRpbmRleF91NjQoc3Zib29sX3QsIHVpbnQxNl90ICosIHN2aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxaF9zY2F0dGVyX3U2NGluZGV4X3M2NCkpKQp2b2lkIHN2c3QxaF9zY2F0dGVyX3U2NGluZGV4X3M2NChzdmJvb2xfdCwgaW50MTZfdCAqLCBzdnVpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWhfc2NhdHRlcl91NjRpbmRleF91NjQpKSkKdm9pZCBzdnN0MWhfc2NhdHRlcl91NjRpbmRleF91NjQoc3Zib29sX3QsIHVpbnQxNl90ICosIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWhfc2NhdHRlcl9zMzJvZmZzZXRfczMyKSkpCnZvaWQgc3ZzdDFoX3NjYXR0ZXJfczMyb2Zmc2V0X3MzMihzdmJvb2xfdCwgaW50MTZfdCAqLCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxaF9zY2F0dGVyX3MzMm9mZnNldF91MzIpKSkKdm9pZCBzdnN0MWhfc2NhdHRlcl9zMzJvZmZzZXRfdTMyKHN2Ym9vbF90LCB1aW50MTZfdCAqLCBzdmludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWhfc2NhdHRlcl91MzJvZmZzZXRfczMyKSkpCnZvaWQgc3ZzdDFoX3NjYXR0ZXJfdTMyb2Zmc2V0X3MzMihzdmJvb2xfdCwgaW50MTZfdCAqLCBzdnVpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWhfc2NhdHRlcl91MzJvZmZzZXRfdTMyKSkpCnZvaWQgc3ZzdDFoX3NjYXR0ZXJfdTMyb2Zmc2V0X3UzMihzdmJvb2xfdCwgdWludDE2X3QgKiwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxaF9zY2F0dGVyX3M2NG9mZnNldF9zNjQpKSkKdm9pZCBzdnN0MWhfc2NhdHRlcl9zNjRvZmZzZXRfczY0KHN2Ym9vbF90LCBpbnQxNl90ICosIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFoX3NjYXR0ZXJfczY0b2Zmc2V0X3U2NCkpKQp2b2lkIHN2c3QxaF9zY2F0dGVyX3M2NG9mZnNldF91NjQoc3Zib29sX3QsIHVpbnQxNl90ICosIHN2aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxaF9zY2F0dGVyX3U2NG9mZnNldF9zNjQpKSkKdm9pZCBzdnN0MWhfc2NhdHRlcl91NjRvZmZzZXRfczY0KHN2Ym9vbF90LCBpbnQxNl90ICosIHN2dWludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxaF9zY2F0dGVyX3U2NG9mZnNldF91NjQpKSkKdm9pZCBzdnN0MWhfc2NhdHRlcl91NjRvZmZzZXRfdTY0KHN2Ym9vbF90LCB1aW50MTZfdCAqLCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFoX3ZudW1fczMyKSkpCnZvaWQgc3ZzdDFoX3ZudW1fczMyKHN2Ym9vbF90LCBpbnQxNl90ICosIGludDY0X3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxaF92bnVtX3M2NCkpKQp2b2lkIHN2c3QxaF92bnVtX3M2NChzdmJvb2xfdCwgaW50MTZfdCAqLCBpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWhfdm51bV91MzIpKSkKdm9pZCBzdnN0MWhfdm51bV91MzIoc3Zib29sX3QsIHVpbnQxNl90ICosIGludDY0X3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWhfdm51bV91NjQpKSkKdm9pZCBzdnN0MWhfdm51bV91NjQoc3Zib29sX3QsIHVpbnQxNl90ICosIGludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MXdfczY0KSkpCnZvaWQgc3ZzdDF3X3M2NChzdmJvb2xfdCwgaW50MzJfdCAqLCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MXdfdTY0KSkpCnZvaWQgc3ZzdDF3X3U2NChzdmJvb2xfdCwgdWludDMyX3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Qxd19zY2F0dGVyX3U2NGJhc2VfaW5kZXhfdTY0KSkpCnZvaWQgc3ZzdDF3X3NjYXR0ZXJfdTY0YmFzZV9pbmRleF91NjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MXdfc2NhdHRlcl91NjRiYXNlX2luZGV4X3M2NCkpKQp2b2lkIHN2c3Qxd19zY2F0dGVyX3U2NGJhc2VfaW5kZXhfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MXdfc2NhdHRlcl91NjRiYXNlX29mZnNldF91NjQpKSkKdm9pZCBzdnN0MXdfc2NhdHRlcl91NjRiYXNlX29mZnNldF91NjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MXdfc2NhdHRlcl91NjRiYXNlX29mZnNldF9zNjQpKSkKdm9pZCBzdnN0MXdfc2NhdHRlcl91NjRiYXNlX29mZnNldF9zNjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Qxd19zY2F0dGVyX3U2NGJhc2VfdTY0KSkpCnZvaWQgc3ZzdDF3X3NjYXR0ZXJfdTY0YmFzZV91NjQoc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MXdfc2NhdHRlcl91NjRiYXNlX3M2NCkpKQp2b2lkIHN2c3Qxd19zY2F0dGVyX3U2NGJhc2VfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MXdfc2NhdHRlcl9zNjRpbmRleF9zNjQpKSkKdm9pZCBzdnN0MXdfc2NhdHRlcl9zNjRpbmRleF9zNjQoc3Zib29sX3QsIGludDMyX3QgKiwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MXdfc2NhdHRlcl9zNjRpbmRleF91NjQpKSkKdm9pZCBzdnN0MXdfc2NhdHRlcl9zNjRpbmRleF91NjQoc3Zib29sX3QsIHVpbnQzMl90ICosIHN2aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Qxd19zY2F0dGVyX3U2NGluZGV4X3M2NCkpKQp2b2lkIHN2c3Qxd19zY2F0dGVyX3U2NGluZGV4X3M2NChzdmJvb2xfdCwgaW50MzJfdCAqLCBzdnVpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MXdfc2NhdHRlcl91NjRpbmRleF91NjQpKSkKdm9pZCBzdnN0MXdfc2NhdHRlcl91NjRpbmRleF91NjQoc3Zib29sX3QsIHVpbnQzMl90ICosIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MXdfc2NhdHRlcl9zNjRvZmZzZXRfczY0KSkpCnZvaWQgc3ZzdDF3X3NjYXR0ZXJfczY0b2Zmc2V0X3M2NChzdmJvb2xfdCwgaW50MzJfdCAqLCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Qxd19zY2F0dGVyX3M2NG9mZnNldF91NjQpKSkKdm9pZCBzdnN0MXdfc2NhdHRlcl9zNjRvZmZzZXRfdTY0KHN2Ym9vbF90LCB1aW50MzJfdCAqLCBzdmludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MXdfc2NhdHRlcl91NjRvZmZzZXRfczY0KSkpCnZvaWQgc3ZzdDF3X3NjYXR0ZXJfdTY0b2Zmc2V0X3M2NChzdmJvb2xfdCwgaW50MzJfdCAqLCBzdnVpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MXdfc2NhdHRlcl91NjRvZmZzZXRfdTY0KSkpCnZvaWQgc3ZzdDF3X3NjYXR0ZXJfdTY0b2Zmc2V0X3U2NChzdmJvb2xfdCwgdWludDMyX3QgKiwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Qxd192bnVtX3M2NCkpKQp2b2lkIHN2c3Qxd192bnVtX3M2NChzdmJvb2xfdCwgaW50MzJfdCAqLCBpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MXdfdm51bV91NjQpKSkKdm9pZCBzdnN0MXdfdm51bV91NjQoc3Zib29sX3QsIHVpbnQzMl90ICosIGludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0Ml91OCkpKQp2b2lkIHN2c3QyX3U4KHN2Ym9vbF90LCB1aW50OF90ICosIHN2dWludDh4Ml90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDJfdTMyKSkpCnZvaWQgc3ZzdDJfdTMyKHN2Ym9vbF90LCB1aW50MzJfdCAqLCBzdnVpbnQzMngyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0Ml91NjQpKSkKdm9pZCBzdnN0Ml91NjQoc3Zib29sX3QsIHVpbnQ2NF90ICosIHN2dWludDY0eDJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QyX3UxNikpKQp2b2lkIHN2c3QyX3UxNihzdmJvb2xfdCwgdWludDE2X3QgKiwgc3Z1aW50MTZ4Ml90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDJfczgpKSkKdm9pZCBzdnN0Ml9zOChzdmJvb2xfdCwgaW50OF90ICosIHN2aW50OHgyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0Ml9mNjQpKSkKdm9pZCBzdnN0Ml9mNjQoc3Zib29sX3QsIGZsb2F0NjRfdCAqLCBzdmZsb2F0NjR4Ml90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDJfZjMyKSkpCnZvaWQgc3ZzdDJfZjMyKHN2Ym9vbF90LCBmbG9hdDMyX3QgKiwgc3ZmbG9hdDMyeDJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QyX2YxNikpKQp2b2lkIHN2c3QyX2YxNihzdmJvb2xfdCwgZmxvYXQxNl90ICosIHN2ZmxvYXQxNngyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0Ml9zMzIpKSkKdm9pZCBzdnN0Ml9zMzIoc3Zib29sX3QsIGludDMyX3QgKiwgc3ZpbnQzMngyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0Ml9zNjQpKSkKdm9pZCBzdnN0Ml9zNjQoc3Zib29sX3QsIGludDY0X3QgKiwgc3ZpbnQ2NHgyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0Ml9zMTYpKSkKdm9pZCBzdnN0Ml9zMTYoc3Zib29sX3QsIGludDE2X3QgKiwgc3ZpbnQxNngyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0Ml92bnVtX3U4KSkpCnZvaWQgc3ZzdDJfdm51bV91OChzdmJvb2xfdCwgdWludDhfdCAqLCBpbnQ2NF90LCBzdnVpbnQ4eDJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QyX3ZudW1fdTMyKSkpCnZvaWQgc3ZzdDJfdm51bV91MzIoc3Zib29sX3QsIHVpbnQzMl90ICosIGludDY0X3QsIHN2dWludDMyeDJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QyX3ZudW1fdTY0KSkpCnZvaWQgc3ZzdDJfdm51bV91NjQoc3Zib29sX3QsIHVpbnQ2NF90ICosIGludDY0X3QsIHN2dWludDY0eDJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QyX3ZudW1fdTE2KSkpCnZvaWQgc3ZzdDJfdm51bV91MTYoc3Zib29sX3QsIHVpbnQxNl90ICosIGludDY0X3QsIHN2dWludDE2eDJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QyX3ZudW1fczgpKSkKdm9pZCBzdnN0Ml92bnVtX3M4KHN2Ym9vbF90LCBpbnQ4X3QgKiwgaW50NjRfdCwgc3ZpbnQ4eDJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QyX3ZudW1fZjY0KSkpCnZvaWQgc3ZzdDJfdm51bV9mNjQoc3Zib29sX3QsIGZsb2F0NjRfdCAqLCBpbnQ2NF90LCBzdmZsb2F0NjR4Ml90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDJfdm51bV9mMzIpKSkKdm9pZCBzdnN0Ml92bnVtX2YzMihzdmJvb2xfdCwgZmxvYXQzMl90ICosIGludDY0X3QsIHN2ZmxvYXQzMngyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0Ml92bnVtX2YxNikpKQp2b2lkIHN2c3QyX3ZudW1fZjE2KHN2Ym9vbF90LCBmbG9hdDE2X3QgKiwgaW50NjRfdCwgc3ZmbG9hdDE2eDJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QyX3ZudW1fczMyKSkpCnZvaWQgc3ZzdDJfdm51bV9zMzIoc3Zib29sX3QsIGludDMyX3QgKiwgaW50NjRfdCwgc3ZpbnQzMngyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0Ml92bnVtX3M2NCkpKQp2b2lkIHN2c3QyX3ZudW1fczY0KHN2Ym9vbF90LCBpbnQ2NF90ICosIGludDY0X3QsIHN2aW50NjR4Ml90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDJfdm51bV9zMTYpKSkKdm9pZCBzdnN0Ml92bnVtX3MxNihzdmJvb2xfdCwgaW50MTZfdCAqLCBpbnQ2NF90LCBzdmludDE2eDJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QzX3U4KSkpCnZvaWQgc3ZzdDNfdTgoc3Zib29sX3QsIHVpbnQ4X3QgKiwgc3Z1aW50OHgzX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0M191MzIpKSkKdm9pZCBzdnN0M191MzIoc3Zib29sX3QsIHVpbnQzMl90ICosIHN2dWludDMyeDNfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QzX3U2NCkpKQp2b2lkIHN2c3QzX3U2NChzdmJvb2xfdCwgdWludDY0X3QgKiwgc3Z1aW50NjR4M190KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDNfdTE2KSkpCnZvaWQgc3ZzdDNfdTE2KHN2Ym9vbF90LCB1aW50MTZfdCAqLCBzdnVpbnQxNngzX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0M19zOCkpKQp2b2lkIHN2c3QzX3M4KHN2Ym9vbF90LCBpbnQ4X3QgKiwgc3ZpbnQ4eDNfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QzX2Y2NCkpKQp2b2lkIHN2c3QzX2Y2NChzdmJvb2xfdCwgZmxvYXQ2NF90ICosIHN2ZmxvYXQ2NHgzX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0M19mMzIpKSkKdm9pZCBzdnN0M19mMzIoc3Zib29sX3QsIGZsb2F0MzJfdCAqLCBzdmZsb2F0MzJ4M190KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDNfZjE2KSkpCnZvaWQgc3ZzdDNfZjE2KHN2Ym9vbF90LCBmbG9hdDE2X3QgKiwgc3ZmbG9hdDE2eDNfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QzX3MzMikpKQp2b2lkIHN2c3QzX3MzMihzdmJvb2xfdCwgaW50MzJfdCAqLCBzdmludDMyeDNfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QzX3M2NCkpKQp2b2lkIHN2c3QzX3M2NChzdmJvb2xfdCwgaW50NjRfdCAqLCBzdmludDY0eDNfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QzX3MxNikpKQp2b2lkIHN2c3QzX3MxNihzdmJvb2xfdCwgaW50MTZfdCAqLCBzdmludDE2eDNfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QzX3ZudW1fdTgpKSkKdm9pZCBzdnN0M192bnVtX3U4KHN2Ym9vbF90LCB1aW50OF90ICosIGludDY0X3QsIHN2dWludDh4M190KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDNfdm51bV91MzIpKSkKdm9pZCBzdnN0M192bnVtX3UzMihzdmJvb2xfdCwgdWludDMyX3QgKiwgaW50NjRfdCwgc3Z1aW50MzJ4M190KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDNfdm51bV91NjQpKSkKdm9pZCBzdnN0M192bnVtX3U2NChzdmJvb2xfdCwgdWludDY0X3QgKiwgaW50NjRfdCwgc3Z1aW50NjR4M190KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDNfdm51bV91MTYpKSkKdm9pZCBzdnN0M192bnVtX3UxNihzdmJvb2xfdCwgdWludDE2X3QgKiwgaW50NjRfdCwgc3Z1aW50MTZ4M190KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDNfdm51bV9zOCkpKQp2b2lkIHN2c3QzX3ZudW1fczgoc3Zib29sX3QsIGludDhfdCAqLCBpbnQ2NF90LCBzdmludDh4M190KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDNfdm51bV9mNjQpKSkKdm9pZCBzdnN0M192bnVtX2Y2NChzdmJvb2xfdCwgZmxvYXQ2NF90ICosIGludDY0X3QsIHN2ZmxvYXQ2NHgzX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0M192bnVtX2YzMikpKQp2b2lkIHN2c3QzX3ZudW1fZjMyKHN2Ym9vbF90LCBmbG9hdDMyX3QgKiwgaW50NjRfdCwgc3ZmbG9hdDMyeDNfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QzX3ZudW1fZjE2KSkpCnZvaWQgc3ZzdDNfdm51bV9mMTYoc3Zib29sX3QsIGZsb2F0MTZfdCAqLCBpbnQ2NF90LCBzdmZsb2F0MTZ4M190KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDNfdm51bV9zMzIpKSkKdm9pZCBzdnN0M192bnVtX3MzMihzdmJvb2xfdCwgaW50MzJfdCAqLCBpbnQ2NF90LCBzdmludDMyeDNfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QzX3ZudW1fczY0KSkpCnZvaWQgc3ZzdDNfdm51bV9zNjQoc3Zib29sX3QsIGludDY0X3QgKiwgaW50NjRfdCwgc3ZpbnQ2NHgzX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0M192bnVtX3MxNikpKQp2b2lkIHN2c3QzX3ZudW1fczE2KHN2Ym9vbF90LCBpbnQxNl90ICosIGludDY0X3QsIHN2aW50MTZ4M190KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDRfdTgpKSkKdm9pZCBzdnN0NF91OChzdmJvb2xfdCwgdWludDhfdCAqLCBzdnVpbnQ4eDRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Q0X3UzMikpKQp2b2lkIHN2c3Q0X3UzMihzdmJvb2xfdCwgdWludDMyX3QgKiwgc3Z1aW50MzJ4NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDRfdTY0KSkpCnZvaWQgc3ZzdDRfdTY0KHN2Ym9vbF90LCB1aW50NjRfdCAqLCBzdnVpbnQ2NHg0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0NF91MTYpKSkKdm9pZCBzdnN0NF91MTYoc3Zib29sX3QsIHVpbnQxNl90ICosIHN2dWludDE2eDRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Q0X3M4KSkpCnZvaWQgc3ZzdDRfczgoc3Zib29sX3QsIGludDhfdCAqLCBzdmludDh4NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDRfZjY0KSkpCnZvaWQgc3ZzdDRfZjY0KHN2Ym9vbF90LCBmbG9hdDY0X3QgKiwgc3ZmbG9hdDY0eDRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Q0X2YzMikpKQp2b2lkIHN2c3Q0X2YzMihzdmJvb2xfdCwgZmxvYXQzMl90ICosIHN2ZmxvYXQzMng0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0NF9mMTYpKSkKdm9pZCBzdnN0NF9mMTYoc3Zib29sX3QsIGZsb2F0MTZfdCAqLCBzdmZsb2F0MTZ4NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDRfczMyKSkpCnZvaWQgc3ZzdDRfczMyKHN2Ym9vbF90LCBpbnQzMl90ICosIHN2aW50MzJ4NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDRfczY0KSkpCnZvaWQgc3ZzdDRfczY0KHN2Ym9vbF90LCBpbnQ2NF90ICosIHN2aW50NjR4NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDRfczE2KSkpCnZvaWQgc3ZzdDRfczE2KHN2Ym9vbF90LCBpbnQxNl90ICosIHN2aW50MTZ4NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDRfdm51bV91OCkpKQp2b2lkIHN2c3Q0X3ZudW1fdTgoc3Zib29sX3QsIHVpbnQ4X3QgKiwgaW50NjRfdCwgc3Z1aW50OHg0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0NF92bnVtX3UzMikpKQp2b2lkIHN2c3Q0X3ZudW1fdTMyKHN2Ym9vbF90LCB1aW50MzJfdCAqLCBpbnQ2NF90LCBzdnVpbnQzMng0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0NF92bnVtX3U2NCkpKQp2b2lkIHN2c3Q0X3ZudW1fdTY0KHN2Ym9vbF90LCB1aW50NjRfdCAqLCBpbnQ2NF90LCBzdnVpbnQ2NHg0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0NF92bnVtX3UxNikpKQp2b2lkIHN2c3Q0X3ZudW1fdTE2KHN2Ym9vbF90LCB1aW50MTZfdCAqLCBpbnQ2NF90LCBzdnVpbnQxNng0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0NF92bnVtX3M4KSkpCnZvaWQgc3ZzdDRfdm51bV9zOChzdmJvb2xfdCwgaW50OF90ICosIGludDY0X3QsIHN2aW50OHg0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0NF92bnVtX2Y2NCkpKQp2b2lkIHN2c3Q0X3ZudW1fZjY0KHN2Ym9vbF90LCBmbG9hdDY0X3QgKiwgaW50NjRfdCwgc3ZmbG9hdDY0eDRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Q0X3ZudW1fZjMyKSkpCnZvaWQgc3ZzdDRfdm51bV9mMzIoc3Zib29sX3QsIGZsb2F0MzJfdCAqLCBpbnQ2NF90LCBzdmZsb2F0MzJ4NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDRfdm51bV9mMTYpKSkKdm9pZCBzdnN0NF92bnVtX2YxNihzdmJvb2xfdCwgZmxvYXQxNl90ICosIGludDY0X3QsIHN2ZmxvYXQxNng0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0NF92bnVtX3MzMikpKQp2b2lkIHN2c3Q0X3ZudW1fczMyKHN2Ym9vbF90LCBpbnQzMl90ICosIGludDY0X3QsIHN2aW50MzJ4NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDRfdm51bV9zNjQpKSkKdm9pZCBzdnN0NF92bnVtX3M2NChzdmJvb2xfdCwgaW50NjRfdCAqLCBpbnQ2NF90LCBzdmludDY0eDRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Q0X3ZudW1fczE2KSkpCnZvaWQgc3ZzdDRfdm51bV9zMTYoc3Zib29sX3QsIGludDE2X3QgKiwgaW50NjRfdCwgc3ZpbnQxNng0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxX3U4KSkpCnZvaWQgc3ZzdG50MV91OChzdmJvb2xfdCwgdWludDhfdCAqLCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxX3UzMikpKQp2b2lkIHN2c3RudDFfdTMyKHN2Ym9vbF90LCB1aW50MzJfdCAqLCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MV91NjQpKSkKdm9pZCBzdnN0bnQxX3U2NChzdmJvb2xfdCwgdWludDY0X3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFfdTE2KSkpCnZvaWQgc3ZzdG50MV91MTYoc3Zib29sX3QsIHVpbnQxNl90ICosIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxX3M4KSkpCnZvaWQgc3ZzdG50MV9zOChzdmJvb2xfdCwgaW50OF90ICosIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MV9mNjQpKSkKdm9pZCBzdnN0bnQxX2Y2NChzdmJvb2xfdCwgZmxvYXQ2NF90ICosIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MV9mMzIpKSkKdm9pZCBzdnN0bnQxX2YzMihzdmJvb2xfdCwgZmxvYXQzMl90ICosIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MV9mMTYpKSkKdm9pZCBzdnN0bnQxX2YxNihzdmJvb2xfdCwgZmxvYXQxNl90ICosIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MV9zMzIpKSkKdm9pZCBzdnN0bnQxX3MzMihzdmJvb2xfdCwgaW50MzJfdCAqLCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxX3M2NCkpKQp2b2lkIHN2c3RudDFfczY0KHN2Ym9vbF90LCBpbnQ2NF90ICosIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFfczE2KSkpCnZvaWQgc3ZzdG50MV9zMTYoc3Zib29sX3QsIGludDE2X3QgKiwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MV92bnVtX3U4KSkpCnZvaWQgc3ZzdG50MV92bnVtX3U4KHN2Ym9vbF90LCB1aW50OF90ICosIGludDY0X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFfdm51bV91MzIpKSkKdm9pZCBzdnN0bnQxX3ZudW1fdTMyKHN2Ym9vbF90LCB1aW50MzJfdCAqLCBpbnQ2NF90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MV92bnVtX3U2NCkpKQp2b2lkIHN2c3RudDFfdm51bV91NjQoc3Zib29sX3QsIHVpbnQ2NF90ICosIGludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxX3ZudW1fdTE2KSkpCnZvaWQgc3ZzdG50MV92bnVtX3UxNihzdmJvb2xfdCwgdWludDE2X3QgKiwgaW50NjRfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFfdm51bV9zOCkpKQp2b2lkIHN2c3RudDFfdm51bV9zOChzdmJvb2xfdCwgaW50OF90ICosIGludDY0X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MV92bnVtX2Y2NCkpKQp2b2lkIHN2c3RudDFfdm51bV9mNjQoc3Zib29sX3QsIGZsb2F0NjRfdCAqLCBpbnQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFfdm51bV9mMzIpKSkKdm9pZCBzdnN0bnQxX3ZudW1fZjMyKHN2Ym9vbF90LCBmbG9hdDMyX3QgKiwgaW50NjRfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxX3ZudW1fZjE2KSkpCnZvaWQgc3ZzdG50MV92bnVtX2YxNihzdmJvb2xfdCwgZmxvYXQxNl90ICosIGludDY0X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MV92bnVtX3MzMikpKQp2b2lkIHN2c3RudDFfdm51bV9zMzIoc3Zib29sX3QsIGludDMyX3QgKiwgaW50NjRfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MV92bnVtX3M2NCkpKQp2b2lkIHN2c3RudDFfdm51bV9zNjQoc3Zib29sX3QsIGludDY0X3QgKiwgaW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MV92bnVtX3MxNikpKQp2b2lkIHN2c3RudDFfdm51bV9zMTYoc3Zib29sX3QsIGludDE2X3QgKiwgaW50NjRfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJfbl9mNjRfbSkpKQpzdmZsb2F0NjRfdCBzdnN1Yl9uX2Y2NF9tKHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJfbl9mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdnN1Yl9uX2YzMl9tKHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJfbl9mMTZfbSkpKQpzdmZsb2F0MTZfdCBzdnN1Yl9uX2YxNl9tKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJfbl9mNjRfeCkpKQpzdmZsb2F0NjRfdCBzdnN1Yl9uX2Y2NF94KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJfbl9mMzJfeCkpKQpzdmZsb2F0MzJfdCBzdnN1Yl9uX2YzMl94KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJfbl9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdnN1Yl9uX2YxNl94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJfbl9mNjRfeikpKQpzdmZsb2F0NjRfdCBzdnN1Yl9uX2Y2NF96KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJfbl9mMzJfeikpKQpzdmZsb2F0MzJfdCBzdnN1Yl9uX2YzMl96KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJfbl9mMTZfeikpKQpzdmZsb2F0MTZfdCBzdnN1Yl9uX2YxNl96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJfbl91OF9tKSkpCnN2dWludDhfdCBzdnN1Yl9uX3U4X20oc3Zib29sX3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViX25fdTMyX20pKSkKc3Z1aW50MzJfdCBzdnN1Yl9uX3UzMl9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViX25fdTY0X20pKSkKc3Z1aW50NjRfdCBzdnN1Yl9uX3U2NF9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViX25fdTE2X20pKSkKc3Z1aW50MTZfdCBzdnN1Yl9uX3UxNl9tKHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViX25fczhfbSkpKQpzdmludDhfdCBzdnN1Yl9uX3M4X20oc3Zib29sX3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl9uX3MzMl9tKSkpCnN2aW50MzJfdCBzdnN1Yl9uX3MzMl9tKHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl9uX3M2NF9tKSkpCnN2aW50NjRfdCBzdnN1Yl9uX3M2NF9tKHN2Ym9vbF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl9uX3MxNl9tKSkpCnN2aW50MTZfdCBzdnN1Yl9uX3MxNl9tKHN2Ym9vbF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl9uX3U4X3gpKSkKc3Z1aW50OF90IHN2c3ViX25fdThfeChzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJfbl91MzJfeCkpKQpzdnVpbnQzMl90IHN2c3ViX25fdTMyX3goc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJfbl91NjRfeCkpKQpzdnVpbnQ2NF90IHN2c3ViX25fdTY0X3goc3Zib29sX3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJfbl91MTZfeCkpKQpzdnVpbnQxNl90IHN2c3ViX25fdTE2X3goc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJfbl9zOF94KSkpCnN2aW50OF90IHN2c3ViX25fczhfeChzdmJvb2xfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViX25fczMyX3gpKSkKc3ZpbnQzMl90IHN2c3ViX25fczMyX3goc3Zib29sX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViX25fczY0X3gpKSkKc3ZpbnQ2NF90IHN2c3ViX25fczY0X3goc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViX25fczE2X3gpKSkKc3ZpbnQxNl90IHN2c3ViX25fczE2X3goc3Zib29sX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViX25fdThfeikpKQpzdnVpbnQ4X3Qgc3ZzdWJfbl91OF96KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl9uX3UzMl96KSkpCnN2dWludDMyX3Qgc3ZzdWJfbl91MzJfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl9uX3U2NF96KSkpCnN2dWludDY0X3Qgc3ZzdWJfbl91NjRfeihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl9uX3UxNl96KSkpCnN2dWludDE2X3Qgc3ZzdWJfbl91MTZfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl9uX3M4X3opKSkKc3ZpbnQ4X3Qgc3ZzdWJfbl9zOF96KHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJfbl9zMzJfeikpKQpzdmludDMyX3Qgc3ZzdWJfbl9zMzJfeihzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJfbl9zNjRfeikpKQpzdmludDY0X3Qgc3ZzdWJfbl9zNjRfeihzdmJvb2xfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJfbl9zMTZfeikpKQpzdmludDE2X3Qgc3ZzdWJfbl9zMTZfeihzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJfZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZzdWJfZjY0X20oc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViX2YzMl9tKSkpCnN2ZmxvYXQzMl90IHN2c3ViX2YzMl9tKHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl9mMTZfbSkpKQpzdmZsb2F0MTZfdCBzdnN1Yl9mMTZfbShzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJfZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZzdWJfZjY0X3goc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViX2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2c3ViX2YzMl94KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdnN1Yl9mMTZfeChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJfZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZzdWJfZjY0X3ooc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViX2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2c3ViX2YzMl96KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl9mMTZfeikpKQpzdmZsb2F0MTZfdCBzdnN1Yl9mMTZfeihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJfdThfbSkpKQpzdnVpbnQ4X3Qgc3ZzdWJfdThfbShzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl91MzJfbSkpKQpzdnVpbnQzMl90IHN2c3ViX3UzMl9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJfdTY0X20pKSkKc3Z1aW50NjRfdCBzdnN1Yl91NjRfbShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViX3UxNl9tKSkpCnN2dWludDE2X3Qgc3ZzdWJfdTE2X20oc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl9zOF9tKSkpCnN2aW50OF90IHN2c3ViX3M4X20oc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViX3MzMl9tKSkpCnN2aW50MzJfdCBzdnN1Yl9zMzJfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl9zNjRfbSkpKQpzdmludDY0X3Qgc3ZzdWJfczY0X20oc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJfczE2X20pKSkKc3ZpbnQxNl90IHN2c3ViX3MxNl9tKHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViX3U4X3gpKSkKc3Z1aW50OF90IHN2c3ViX3U4X3goc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJfdTMyX3gpKSkKc3Z1aW50MzJfdCBzdnN1Yl91MzJfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViX3U2NF94KSkpCnN2dWludDY0X3Qgc3ZzdWJfdTY0X3goc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl91MTZfeCkpKQpzdnVpbnQxNl90IHN2c3ViX3UxNl94KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJfczhfeCkpKQpzdmludDhfdCBzdnN1Yl9zOF94KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl9zMzJfeCkpKQpzdmludDMyX3Qgc3ZzdWJfczMyX3goc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJfczY0X3gpKSkKc3ZpbnQ2NF90IHN2c3ViX3M2NF94KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViX3MxNl94KSkpCnN2aW50MTZfdCBzdnN1Yl9zMTZfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl91OF96KSkpCnN2dWludDhfdCBzdnN1Yl91OF96KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViX3UzMl96KSkpCnN2dWludDMyX3Qgc3ZzdWJfdTMyX3ooc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl91NjRfeikpKQpzdnVpbnQ2NF90IHN2c3ViX3U2NF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJfdTE2X3opKSkKc3Z1aW50MTZfdCBzdnN1Yl91MTZfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViX3M4X3opKSkKc3ZpbnQ4X3Qgc3ZzdWJfczhfeihzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJfczMyX3opKSkKc3ZpbnQzMl90IHN2c3ViX3MzMl96KHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViX3M2NF96KSkpCnN2aW50NjRfdCBzdnN1Yl9zNjRfeihzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl9zMTZfeikpKQpzdmludDE2X3Qgc3ZzdWJfczE2X3ooc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX25fZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZzdWJyX25fZjY0X20oc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfbl9mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdnN1YnJfbl9mMzJfbShzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vicl9uX2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2c3Vicl9uX2YxNl9tKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX25fZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZzdWJyX25fZjY0X3goc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfbl9mMzJfeCkpKQpzdmZsb2F0MzJfdCBzdnN1YnJfbl9mMzJfeChzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vicl9uX2YxNl94KSkpCnN2ZmxvYXQxNl90IHN2c3Vicl9uX2YxNl94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX25fZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZzdWJyX25fZjY0X3ooc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfbl9mMzJfeikpKQpzdmZsb2F0MzJfdCBzdnN1YnJfbl9mMzJfeihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vicl9uX2YxNl96KSkpCnN2ZmxvYXQxNl90IHN2c3Vicl9uX2YxNl96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX25fdThfbSkpKQpzdnVpbnQ4X3Qgc3ZzdWJyX25fdThfbShzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX25fdTMyX20pKSkKc3Z1aW50MzJfdCBzdnN1YnJfbl91MzJfbShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfbl91NjRfbSkpKQpzdnVpbnQ2NF90IHN2c3Vicl9uX3U2NF9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vicl9uX3UxNl9tKSkpCnN2dWludDE2X3Qgc3ZzdWJyX25fdTE2X20oc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX25fczhfbSkpKQpzdmludDhfdCBzdnN1YnJfbl9zOF9tKHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX25fczMyX20pKSkKc3ZpbnQzMl90IHN2c3Vicl9uX3MzMl9tKHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfbl9zNjRfbSkpKQpzdmludDY0X3Qgc3ZzdWJyX25fczY0X20oc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vicl9uX3MxNl9tKSkpCnN2aW50MTZfdCBzdnN1YnJfbl9zMTZfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX25fdThfeCkpKQpzdnVpbnQ4X3Qgc3ZzdWJyX25fdThfeChzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX25fdTMyX3gpKSkKc3Z1aW50MzJfdCBzdnN1YnJfbl91MzJfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfbl91NjRfeCkpKQpzdnVpbnQ2NF90IHN2c3Vicl9uX3U2NF94KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vicl9uX3UxNl94KSkpCnN2dWludDE2X3Qgc3ZzdWJyX25fdTE2X3goc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX25fczhfeCkpKQpzdmludDhfdCBzdnN1YnJfbl9zOF94KHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX25fczMyX3gpKSkKc3ZpbnQzMl90IHN2c3Vicl9uX3MzMl94KHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfbl9zNjRfeCkpKQpzdmludDY0X3Qgc3ZzdWJyX25fczY0X3goc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vicl9uX3MxNl94KSkpCnN2aW50MTZfdCBzdnN1YnJfbl9zMTZfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX25fdThfeikpKQpzdnVpbnQ4X3Qgc3ZzdWJyX25fdThfeihzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX25fdTMyX3opKSkKc3Z1aW50MzJfdCBzdnN1YnJfbl91MzJfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfbl91NjRfeikpKQpzdnVpbnQ2NF90IHN2c3Vicl9uX3U2NF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vicl9uX3UxNl96KSkpCnN2dWludDE2X3Qgc3ZzdWJyX25fdTE2X3ooc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX25fczhfeikpKQpzdmludDhfdCBzdnN1YnJfbl9zOF96KHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX25fczMyX3opKSkKc3ZpbnQzMl90IHN2c3Vicl9uX3MzMl96KHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfbl9zNjRfeikpKQpzdmludDY0X3Qgc3ZzdWJyX25fczY0X3ooc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vicl9uX3MxNl96KSkpCnN2aW50MTZfdCBzdnN1YnJfbl9zMTZfeihzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX2Y2NF9tKSkpCnN2ZmxvYXQ2NF90IHN2c3Vicl9mNjRfbShzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX2YzMl9tKSkpCnN2ZmxvYXQzMl90IHN2c3Vicl9mMzJfbShzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2c3Vicl9mMTZfbShzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX2Y2NF94KSkpCnN2ZmxvYXQ2NF90IHN2c3Vicl9mNjRfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2c3Vicl9mMzJfeChzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX2YxNl94KSkpCnN2ZmxvYXQxNl90IHN2c3Vicl9mMTZfeChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX2Y2NF96KSkpCnN2ZmxvYXQ2NF90IHN2c3Vicl9mNjRfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2c3Vicl9mMzJfeihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX2YxNl96KSkpCnN2ZmxvYXQxNl90IHN2c3Vicl9mMTZfeihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX3U4X20pKSkKc3Z1aW50OF90IHN2c3Vicl91OF9tKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vicl91MzJfbSkpKQpzdnVpbnQzMl90IHN2c3Vicl91MzJfbShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vicl91NjRfbSkpKQpzdnVpbnQ2NF90IHN2c3Vicl91NjRfbShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vicl91MTZfbSkpKQpzdnVpbnQxNl90IHN2c3Vicl91MTZfbShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vicl9zOF9tKSkpCnN2aW50OF90IHN2c3Vicl9zOF9tKHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfczMyX20pKSkKc3ZpbnQzMl90IHN2c3Vicl9zMzJfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfczY0X20pKSkKc3ZpbnQ2NF90IHN2c3Vicl9zNjRfbShzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfczE2X20pKSkKc3ZpbnQxNl90IHN2c3Vicl9zMTZfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfdThfeCkpKQpzdnVpbnQ4X3Qgc3ZzdWJyX3U4X3goc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX3UzMl94KSkpCnN2dWludDMyX3Qgc3ZzdWJyX3UzMl94KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX3U2NF94KSkpCnN2dWludDY0X3Qgc3ZzdWJyX3U2NF94KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX3UxNl94KSkpCnN2dWludDE2X3Qgc3ZzdWJyX3UxNl94KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX3M4X3gpKSkKc3ZpbnQ4X3Qgc3ZzdWJyX3M4X3goc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vicl9zMzJfeCkpKQpzdmludDMyX3Qgc3ZzdWJyX3MzMl94KHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vicl9zNjRfeCkpKQpzdmludDY0X3Qgc3ZzdWJyX3M2NF94KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vicl9zMTZfeCkpKQpzdmludDE2X3Qgc3ZzdWJyX3MxNl94KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vicl91OF96KSkpCnN2dWludDhfdCBzdnN1YnJfdThfeihzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfdTMyX3opKSkKc3Z1aW50MzJfdCBzdnN1YnJfdTMyX3ooc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfdTY0X3opKSkKc3Z1aW50NjRfdCBzdnN1YnJfdTY0X3ooc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfdTE2X3opKSkKc3Z1aW50MTZfdCBzdnN1YnJfdTE2X3ooc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfczhfeikpKQpzdmludDhfdCBzdnN1YnJfczhfeihzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX3MzMl96KSkpCnN2aW50MzJfdCBzdnN1YnJfczMyX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX3M2NF96KSkpCnN2aW50NjRfdCBzdnN1YnJfczY0X3ooc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX3MxNl96KSkpCnN2aW50MTZfdCBzdnN1YnJfczE2X3ooc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0YmxfdTgpKSkKc3Z1aW50OF90IHN2dGJsX3U4KHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0YmxfdTMyKSkpCnN2dWludDMyX3Qgc3Z0YmxfdTMyKHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRibF91NjQpKSkKc3Z1aW50NjRfdCBzdnRibF91NjQoc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dGJsX3UxNikpKQpzdnVpbnQxNl90IHN2dGJsX3UxNihzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0YmxfczgpKSkKc3ZpbnQ4X3Qgc3Z0Ymxfczgoc3ZpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dGJsX2Y2NCkpKQpzdmZsb2F0NjRfdCBzdnRibF9mNjQoc3ZmbG9hdDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRibF9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3Z0YmxfZjMyKHN2ZmxvYXQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0YmxfZjE2KSkpCnN2ZmxvYXQxNl90IHN2dGJsX2YxNihzdmZsb2F0MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dGJsX3MzMikpKQpzdmludDMyX3Qgc3Z0YmxfczMyKHN2aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dGJsX3M2NCkpKQpzdmludDY0X3Qgc3Z0YmxfczY0KHN2aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dGJsX3MxNikpKQpzdmludDE2X3Qgc3Z0YmxfczE2KHN2aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dG1hZF9mNjQpKSkKc3ZmbG9hdDY0X3Qgc3Z0bWFkX2Y2NChzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0bWFkX2YzMikpKQpzdmZsb2F0MzJfdCBzdnRtYWRfZjMyKHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRtYWRfZjE2KSkpCnN2ZmxvYXQxNl90IHN2dG1hZF9mMTYoc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dHJuMV91OCkpKQpzdnVpbnQ4X3Qgc3Z0cm4xX3U4KHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0cm4xX3UzMikpKQpzdnVpbnQzMl90IHN2dHJuMV91MzIoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dHJuMV91NjQpKSkKc3Z1aW50NjRfdCBzdnRybjFfdTY0KHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRybjFfdTE2KSkpCnN2dWludDE2X3Qgc3Z0cm4xX3UxNihzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0cm4xX3M4KSkpCnN2aW50OF90IHN2dHJuMV9zOChzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRybjFfZjY0KSkpCnN2ZmxvYXQ2NF90IHN2dHJuMV9mNjQoc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0cm4xX2YzMikpKQpzdmZsb2F0MzJfdCBzdnRybjFfZjMyKHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dHJuMV9mMTYpKSkKc3ZmbG9hdDE2X3Qgc3Z0cm4xX2YxNihzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRybjFfczMyKSkpCnN2aW50MzJfdCBzdnRybjFfczMyKHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0cm4xX3M2NCkpKQpzdmludDY0X3Qgc3Z0cm4xX3M2NChzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dHJuMV9zMTYpKSkKc3ZpbnQxNl90IHN2dHJuMV9zMTYoc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRybjFfYjgpKSkKc3Zib29sX3Qgc3Z0cm4xX2I4KHN2Ym9vbF90LCBzdmJvb2xfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dHJuMV9iMzIpKSkKc3Zib29sX3Qgc3Z0cm4xX2IzMihzdmJvb2xfdCwgc3Zib29sX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRybjFfYjY0KSkpCnN2Ym9vbF90IHN2dHJuMV9iNjQoc3Zib29sX3QsIHN2Ym9vbF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0cm4xX2IxNikpKQpzdmJvb2xfdCBzdnRybjFfYjE2KHN2Ym9vbF90LCBzdmJvb2xfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dHJuMl91OCkpKQpzdnVpbnQ4X3Qgc3Z0cm4yX3U4KHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0cm4yX3UzMikpKQpzdnVpbnQzMl90IHN2dHJuMl91MzIoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dHJuMl91NjQpKSkKc3Z1aW50NjRfdCBzdnRybjJfdTY0KHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRybjJfdTE2KSkpCnN2dWludDE2X3Qgc3Z0cm4yX3UxNihzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0cm4yX3M4KSkpCnN2aW50OF90IHN2dHJuMl9zOChzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRybjJfZjY0KSkpCnN2ZmxvYXQ2NF90IHN2dHJuMl9mNjQoc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0cm4yX2YzMikpKQpzdmZsb2F0MzJfdCBzdnRybjJfZjMyKHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dHJuMl9mMTYpKSkKc3ZmbG9hdDE2X3Qgc3Z0cm4yX2YxNihzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRybjJfczMyKSkpCnN2aW50MzJfdCBzdnRybjJfczMyKHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0cm4yX3M2NCkpKQpzdmludDY0X3Qgc3Z0cm4yX3M2NChzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dHJuMl9zMTYpKSkKc3ZpbnQxNl90IHN2dHJuMl9zMTYoc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRybjJfYjgpKSkKc3Zib29sX3Qgc3Z0cm4yX2I4KHN2Ym9vbF90LCBzdmJvb2xfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dHJuMl9iMzIpKSkKc3Zib29sX3Qgc3Z0cm4yX2IzMihzdmJvb2xfdCwgc3Zib29sX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRybjJfYjY0KSkpCnN2Ym9vbF90IHN2dHJuMl9iNjQoc3Zib29sX3QsIHN2Ym9vbF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0cm4yX2IxNikpKQpzdmJvb2xfdCBzdnRybjJfYjE2KHN2Ym9vbF90LCBzdmJvb2xfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dHNtdWxfZjY0KSkpCnN2ZmxvYXQ2NF90IHN2dHNtdWxfZjY0KHN2ZmxvYXQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0c211bF9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3Z0c211bF9mMzIoc3ZmbG9hdDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRzbXVsX2YxNikpKQpzdmZsb2F0MTZfdCBzdnRzbXVsX2YxNihzdmZsb2F0MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dHNzZWxfZjY0KSkpCnN2ZmxvYXQ2NF90IHN2dHNzZWxfZjY0KHN2ZmxvYXQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0c3NlbF9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3Z0c3NlbF9mMzIoc3ZmbG9hdDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRzc2VsX2YxNikpKQpzdmZsb2F0MTZfdCBzdnRzc2VsX2YxNihzdmZsb2F0MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dW5kZWYyX3U4KSkpCnN2dWludDh4Ml90IHN2dW5kZWYyX3U4KCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dW5kZWYyX3UzMikpKQpzdnVpbnQzMngyX3Qgc3Z1bmRlZjJfdTMyKCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dW5kZWYyX3U2NCkpKQpzdnVpbnQ2NHgyX3Qgc3Z1bmRlZjJfdTY0KCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dW5kZWYyX3UxNikpKQpzdnVpbnQxNngyX3Qgc3Z1bmRlZjJfdTE2KCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dW5kZWYyX3M4KSkpCnN2aW50OHgyX3Qgc3Z1bmRlZjJfczgoKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1bmRlZjJfZjY0KSkpCnN2ZmxvYXQ2NHgyX3Qgc3Z1bmRlZjJfZjY0KCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dW5kZWYyX2YzMikpKQpzdmZsb2F0MzJ4Ml90IHN2dW5kZWYyX2YzMigpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnVuZGVmMl9mMTYpKSkKc3ZmbG9hdDE2eDJfdCBzdnVuZGVmMl9mMTYoKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1bmRlZjJfczMyKSkpCnN2aW50MzJ4Ml90IHN2dW5kZWYyX3MzMigpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnVuZGVmMl9zNjQpKSkKc3ZpbnQ2NHgyX3Qgc3Z1bmRlZjJfczY0KCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dW5kZWYyX3MxNikpKQpzdmludDE2eDJfdCBzdnVuZGVmMl9zMTYoKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1bmRlZjNfdTgpKSkKc3Z1aW50OHgzX3Qgc3Z1bmRlZjNfdTgoKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1bmRlZjNfdTMyKSkpCnN2dWludDMyeDNfdCBzdnVuZGVmM191MzIoKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1bmRlZjNfdTY0KSkpCnN2dWludDY0eDNfdCBzdnVuZGVmM191NjQoKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1bmRlZjNfdTE2KSkpCnN2dWludDE2eDNfdCBzdnVuZGVmM191MTYoKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1bmRlZjNfczgpKSkKc3ZpbnQ4eDNfdCBzdnVuZGVmM19zOCgpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnVuZGVmM19mNjQpKSkKc3ZmbG9hdDY0eDNfdCBzdnVuZGVmM19mNjQoKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1bmRlZjNfZjMyKSkpCnN2ZmxvYXQzMngzX3Qgc3Z1bmRlZjNfZjMyKCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dW5kZWYzX2YxNikpKQpzdmZsb2F0MTZ4M190IHN2dW5kZWYzX2YxNigpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnVuZGVmM19zMzIpKSkKc3ZpbnQzMngzX3Qgc3Z1bmRlZjNfczMyKCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dW5kZWYzX3M2NCkpKQpzdmludDY0eDNfdCBzdnVuZGVmM19zNjQoKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1bmRlZjNfczE2KSkpCnN2aW50MTZ4M190IHN2dW5kZWYzX3MxNigpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnVuZGVmNF91OCkpKQpzdnVpbnQ4eDRfdCBzdnVuZGVmNF91OCgpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnVuZGVmNF91MzIpKSkKc3Z1aW50MzJ4NF90IHN2dW5kZWY0X3UzMigpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnVuZGVmNF91NjQpKSkKc3Z1aW50NjR4NF90IHN2dW5kZWY0X3U2NCgpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnVuZGVmNF91MTYpKSkKc3Z1aW50MTZ4NF90IHN2dW5kZWY0X3UxNigpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnVuZGVmNF9zOCkpKQpzdmludDh4NF90IHN2dW5kZWY0X3M4KCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dW5kZWY0X2Y2NCkpKQpzdmZsb2F0NjR4NF90IHN2dW5kZWY0X2Y2NCgpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnVuZGVmNF9mMzIpKSkKc3ZmbG9hdDMyeDRfdCBzdnVuZGVmNF9mMzIoKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1bmRlZjRfZjE2KSkpCnN2ZmxvYXQxNng0X3Qgc3Z1bmRlZjRfZjE2KCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dW5kZWY0X3MzMikpKQpzdmludDMyeDRfdCBzdnVuZGVmNF9zMzIoKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1bmRlZjRfczY0KSkpCnN2aW50NjR4NF90IHN2dW5kZWY0X3M2NCgpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnVuZGVmNF9zMTYpKSkKc3ZpbnQxNng0X3Qgc3Z1bmRlZjRfczE2KCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dW5kZWZfdTgpKSkKc3Z1aW50OF90IHN2dW5kZWZfdTgoKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1bmRlZl91MzIpKSkKc3Z1aW50MzJfdCBzdnVuZGVmX3UzMigpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnVuZGVmX3U2NCkpKQpzdnVpbnQ2NF90IHN2dW5kZWZfdTY0KCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dW5kZWZfdTE2KSkpCnN2dWludDE2X3Qgc3Z1bmRlZl91MTYoKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1bmRlZl9zOCkpKQpzdmludDhfdCBzdnVuZGVmX3M4KCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dW5kZWZfZjY0KSkpCnN2ZmxvYXQ2NF90IHN2dW5kZWZfZjY0KCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dW5kZWZfZjMyKSkpCnN2ZmxvYXQzMl90IHN2dW5kZWZfZjMyKCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dW5kZWZfZjE2KSkpCnN2ZmxvYXQxNl90IHN2dW5kZWZfZjE2KCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dW5kZWZfczMyKSkpCnN2aW50MzJfdCBzdnVuZGVmX3MzMigpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnVuZGVmX3M2NCkpKQpzdmludDY0X3Qgc3Z1bmRlZl9zNjQoKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1bmRlZl9zMTYpKSkKc3ZpbnQxNl90IHN2dW5kZWZfczE2KCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dW5wa2hpX2IpKSkKc3Zib29sX3Qgc3Z1bnBraGlfYihzdmJvb2xfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dW5wa2hpX3MzMikpKQpzdmludDMyX3Qgc3Z1bnBraGlfczMyKHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dW5wa2hpX3M2NCkpKQpzdmludDY0X3Qgc3Z1bnBraGlfczY0KHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dW5wa2hpX3MxNikpKQpzdmludDE2X3Qgc3Z1bnBraGlfczE2KHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1bnBraGlfdTMyKSkpCnN2dWludDMyX3Qgc3Z1bnBraGlfdTMyKHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnVucGtoaV91NjQpKSkKc3Z1aW50NjRfdCBzdnVucGtoaV91NjQoc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dW5wa2hpX3UxNikpKQpzdnVpbnQxNl90IHN2dW5wa2hpX3UxNihzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnVucGtsb19iKSkpCnN2Ym9vbF90IHN2dW5wa2xvX2Ioc3Zib29sX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnVucGtsb19zMzIpKSkKc3ZpbnQzMl90IHN2dW5wa2xvX3MzMihzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnVucGtsb19zNjQpKSkKc3ZpbnQ2NF90IHN2dW5wa2xvX3M2NChzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnVucGtsb19zMTYpKSkKc3ZpbnQxNl90IHN2dW5wa2xvX3MxNihzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dW5wa2xvX3UzMikpKQpzdnVpbnQzMl90IHN2dW5wa2xvX3UzMihzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1bnBrbG9fdTY0KSkpCnN2dWludDY0X3Qgc3Z1bnBrbG9fdTY0KHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnVucGtsb191MTYpKSkKc3Z1aW50MTZfdCBzdnVucGtsb191MTYoc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1enAxX3U4KSkpCnN2dWludDhfdCBzdnV6cDFfdTgoc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnV6cDFfdTMyKSkpCnN2dWludDMyX3Qgc3Z1enAxX3UzMihzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1enAxX3U2NCkpKQpzdnVpbnQ2NF90IHN2dXpwMV91NjQoc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXpwMV91MTYpKSkKc3Z1aW50MTZfdCBzdnV6cDFfdTE2KHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnV6cDFfczgpKSkKc3ZpbnQ4X3Qgc3Z1enAxX3M4KHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXpwMV9mNjQpKSkKc3ZmbG9hdDY0X3Qgc3Z1enAxX2Y2NChzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnV6cDFfZjMyKSkpCnN2ZmxvYXQzMl90IHN2dXpwMV9mMzIoc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1enAxX2YxNikpKQpzdmZsb2F0MTZfdCBzdnV6cDFfZjE2KHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXpwMV9zMzIpKSkKc3ZpbnQzMl90IHN2dXpwMV9zMzIoc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnV6cDFfczY0KSkpCnN2aW50NjRfdCBzdnV6cDFfczY0KHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1enAxX3MxNikpKQpzdmludDE2X3Qgc3Z1enAxX3MxNihzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXpwMV9iOCkpKQpzdmJvb2xfdCBzdnV6cDFfYjgoc3Zib29sX3QsIHN2Ym9vbF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1enAxX2IzMikpKQpzdmJvb2xfdCBzdnV6cDFfYjMyKHN2Ym9vbF90LCBzdmJvb2xfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXpwMV9iNjQpKSkKc3Zib29sX3Qgc3Z1enAxX2I2NChzdmJvb2xfdCwgc3Zib29sX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnV6cDFfYjE2KSkpCnN2Ym9vbF90IHN2dXpwMV9iMTYoc3Zib29sX3QsIHN2Ym9vbF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1enAyX3U4KSkpCnN2dWludDhfdCBzdnV6cDJfdTgoc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnV6cDJfdTMyKSkpCnN2dWludDMyX3Qgc3Z1enAyX3UzMihzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1enAyX3U2NCkpKQpzdnVpbnQ2NF90IHN2dXpwMl91NjQoc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXpwMl91MTYpKSkKc3Z1aW50MTZfdCBzdnV6cDJfdTE2KHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnV6cDJfczgpKSkKc3ZpbnQ4X3Qgc3Z1enAyX3M4KHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXpwMl9mNjQpKSkKc3ZmbG9hdDY0X3Qgc3Z1enAyX2Y2NChzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnV6cDJfZjMyKSkpCnN2ZmxvYXQzMl90IHN2dXpwMl9mMzIoc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1enAyX2YxNikpKQpzdmZsb2F0MTZfdCBzdnV6cDJfZjE2KHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXpwMl9zMzIpKSkKc3ZpbnQzMl90IHN2dXpwMl9zMzIoc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnV6cDJfczY0KSkpCnN2aW50NjRfdCBzdnV6cDJfczY0KHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1enAyX3MxNikpKQpzdmludDE2X3Qgc3Z1enAyX3MxNihzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXpwMl9iOCkpKQpzdmJvb2xfdCBzdnV6cDJfYjgoc3Zib29sX3QsIHN2Ym9vbF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1enAyX2IzMikpKQpzdmJvb2xfdCBzdnV6cDJfYjMyKHN2Ym9vbF90LCBzdmJvb2xfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXpwMl9iNjQpKSkKc3Zib29sX3Qgc3Z1enAyX2I2NChzdmJvb2xfdCwgc3Zib29sX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnV6cDJfYjE2KSkpCnN2Ym9vbF90IHN2dXpwMl9iMTYoc3Zib29sX3QsIHN2Ym9vbF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z3aGlsZWxlX2I4X3MzMikpKQpzdmJvb2xfdCBzdndoaWxlbGVfYjhfczMyKGludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlbGVfYjMyX3MzMikpKQpzdmJvb2xfdCBzdndoaWxlbGVfYjMyX3MzMihpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z3aGlsZWxlX2I2NF9zMzIpKSkKc3Zib29sX3Qgc3Z3aGlsZWxlX2I2NF9zMzIoaW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVsZV9iMTZfczMyKSkpCnN2Ym9vbF90IHN2d2hpbGVsZV9iMTZfczMyKGludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlbGVfYjhfczY0KSkpCnN2Ym9vbF90IHN2d2hpbGVsZV9iOF9zNjQoaW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVsZV9iMzJfczY0KSkpCnN2Ym9vbF90IHN2d2hpbGVsZV9iMzJfczY0KGludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlbGVfYjY0X3M2NCkpKQpzdmJvb2xfdCBzdndoaWxlbGVfYjY0X3M2NChpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z3aGlsZWxlX2IxNl9zNjQpKSkKc3Zib29sX3Qgc3Z3aGlsZWxlX2IxNl9zNjQoaW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVsZV9iOF91MzIpKSkKc3Zib29sX3Qgc3Z3aGlsZWxlX2I4X3UzMih1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlbGVfYjMyX3UzMikpKQpzdmJvb2xfdCBzdndoaWxlbGVfYjMyX3UzMih1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlbGVfYjY0X3UzMikpKQpzdmJvb2xfdCBzdndoaWxlbGVfYjY0X3UzMih1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlbGVfYjE2X3UzMikpKQpzdmJvb2xfdCBzdndoaWxlbGVfYjE2X3UzMih1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlbGVfYjhfdTY0KSkpCnN2Ym9vbF90IHN2d2hpbGVsZV9iOF91NjQodWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z3aGlsZWxlX2IzMl91NjQpKSkKc3Zib29sX3Qgc3Z3aGlsZWxlX2IzMl91NjQodWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z3aGlsZWxlX2I2NF91NjQpKSkKc3Zib29sX3Qgc3Z3aGlsZWxlX2I2NF91NjQodWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z3aGlsZWxlX2IxNl91NjQpKSkKc3Zib29sX3Qgc3Z3aGlsZWxlX2IxNl91NjQodWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z3aGlsZWx0X2I4X3UzMikpKQpzdmJvb2xfdCBzdndoaWxlbHRfYjhfdTMyKHVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVsdF9iMzJfdTMyKSkpCnN2Ym9vbF90IHN2d2hpbGVsdF9iMzJfdTMyKHVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVsdF9iNjRfdTMyKSkpCnN2Ym9vbF90IHN2d2hpbGVsdF9iNjRfdTMyKHVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVsdF9iMTZfdTMyKSkpCnN2Ym9vbF90IHN2d2hpbGVsdF9iMTZfdTMyKHVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVsdF9iOF91NjQpKSkKc3Zib29sX3Qgc3Z3aGlsZWx0X2I4X3U2NCh1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlbHRfYjMyX3U2NCkpKQpzdmJvb2xfdCBzdndoaWxlbHRfYjMyX3U2NCh1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlbHRfYjY0X3U2NCkpKQpzdmJvb2xfdCBzdndoaWxlbHRfYjY0X3U2NCh1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlbHRfYjE2X3U2NCkpKQpzdmJvb2xfdCBzdndoaWxlbHRfYjE2X3U2NCh1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlbHRfYjhfczMyKSkpCnN2Ym9vbF90IHN2d2hpbGVsdF9iOF9zMzIoaW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVsdF9iMzJfczMyKSkpCnN2Ym9vbF90IHN2d2hpbGVsdF9iMzJfczMyKGludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlbHRfYjY0X3MzMikpKQpzdmJvb2xfdCBzdndoaWxlbHRfYjY0X3MzMihpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z3aGlsZWx0X2IxNl9zMzIpKSkKc3Zib29sX3Qgc3Z3aGlsZWx0X2IxNl9zMzIoaW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVsdF9iOF9zNjQpKSkKc3Zib29sX3Qgc3Z3aGlsZWx0X2I4X3M2NChpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z3aGlsZWx0X2IzMl9zNjQpKSkKc3Zib29sX3Qgc3Z3aGlsZWx0X2IzMl9zNjQoaW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVsdF9iNjRfczY0KSkpCnN2Ym9vbF90IHN2d2hpbGVsdF9iNjRfczY0KGludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlbHRfYjE2X3M2NCkpKQpzdmJvb2xfdCBzdndoaWxlbHRfYjE2X3M2NChpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z3cmZmcikpKQp2b2lkIHN2d3JmZnIoc3Zib29sX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnppcDFfdTgpKSkKc3Z1aW50OF90IHN2emlwMV91OChzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2emlwMV91MzIpKSkKc3Z1aW50MzJfdCBzdnppcDFfdTMyKHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnppcDFfdTY0KSkpCnN2dWludDY0X3Qgc3Z6aXAxX3U2NChzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z6aXAxX3UxNikpKQpzdnVpbnQxNl90IHN2emlwMV91MTYoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2emlwMV9zOCkpKQpzdmludDhfdCBzdnppcDFfczgoc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z6aXAxX2Y2NCkpKQpzdmZsb2F0NjRfdCBzdnppcDFfZjY0KHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2emlwMV9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3Z6aXAxX2YzMihzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnppcDFfZjE2KSkpCnN2ZmxvYXQxNl90IHN2emlwMV9mMTYoc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z6aXAxX3MzMikpKQpzdmludDMyX3Qgc3Z6aXAxX3MzMihzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2emlwMV9zNjQpKSkKc3ZpbnQ2NF90IHN2emlwMV9zNjQoc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnppcDFfczE2KSkpCnN2aW50MTZfdCBzdnppcDFfczE2KHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z6aXAxX2I4KSkpCnN2Ym9vbF90IHN2emlwMV9iOChzdmJvb2xfdCwgc3Zib29sX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnppcDFfYjMyKSkpCnN2Ym9vbF90IHN2emlwMV9iMzIoc3Zib29sX3QsIHN2Ym9vbF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z6aXAxX2I2NCkpKQpzdmJvb2xfdCBzdnppcDFfYjY0KHN2Ym9vbF90LCBzdmJvb2xfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2emlwMV9iMTYpKSkKc3Zib29sX3Qgc3Z6aXAxX2IxNihzdmJvb2xfdCwgc3Zib29sX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnppcDJfdTgpKSkKc3Z1aW50OF90IHN2emlwMl91OChzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2emlwMl91MzIpKSkKc3Z1aW50MzJfdCBzdnppcDJfdTMyKHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnppcDJfdTY0KSkpCnN2dWludDY0X3Qgc3Z6aXAyX3U2NChzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z6aXAyX3UxNikpKQpzdnVpbnQxNl90IHN2emlwMl91MTYoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2emlwMl9zOCkpKQpzdmludDhfdCBzdnppcDJfczgoc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z6aXAyX2Y2NCkpKQpzdmZsb2F0NjRfdCBzdnppcDJfZjY0KHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2emlwMl9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3Z6aXAyX2YzMihzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnppcDJfZjE2KSkpCnN2ZmxvYXQxNl90IHN2emlwMl9mMTYoc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z6aXAyX3MzMikpKQpzdmludDMyX3Qgc3Z6aXAyX3MzMihzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2emlwMl9zNjQpKSkKc3ZpbnQ2NF90IHN2emlwMl9zNjQoc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnppcDJfczE2KSkpCnN2aW50MTZfdCBzdnppcDJfczE2KHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z6aXAyX2I4KSkpCnN2Ym9vbF90IHN2emlwMl9iOChzdmJvb2xfdCwgc3Zib29sX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnppcDJfYjMyKSkpCnN2Ym9vbF90IHN2emlwMl9iMzIoc3Zib29sX3QsIHN2Ym9vbF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z6aXAyX2I2NCkpKQpzdmJvb2xfdCBzdnppcDJfYjY0KHN2Ym9vbF90LCBzdmJvb2xfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2emlwMl9iMTYpKSkKc3Zib29sX3Qgc3Z6aXAyX2IxNihzdmJvb2xfdCwgc3Zib29sX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfbl9mNjRfbSkpKQpzdmZsb2F0NjRfdCBzdmFiZF9tKHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkX25fZjMyX20pKSkKc3ZmbG9hdDMyX3Qgc3ZhYmRfbShzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZF9uX2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2YWJkX20oc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfbl9mNjRfeCkpKQpzdmZsb2F0NjRfdCBzdmFiZF94KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkX25fZjMyX3gpKSkKc3ZmbG9hdDMyX3Qgc3ZhYmRfeChzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZF9uX2YxNl94KSkpCnN2ZmxvYXQxNl90IHN2YWJkX3goc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfbl9mNjRfeikpKQpzdmZsb2F0NjRfdCBzdmFiZF96KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkX25fZjMyX3opKSkKc3ZmbG9hdDMyX3Qgc3ZhYmRfeihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZF9uX2YxNl96KSkpCnN2ZmxvYXQxNl90IHN2YWJkX3ooc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfbl9zOF9tKSkpCnN2aW50OF90IHN2YWJkX20oc3Zib29sX3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfbl9zMzJfbSkpKQpzdmludDMyX3Qgc3ZhYmRfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkX25fczY0X20pKSkKc3ZpbnQ2NF90IHN2YWJkX20oc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZF9uX3MxNl9tKSkpCnN2aW50MTZfdCBzdmFiZF9tKHN2Ym9vbF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfbl9zOF94KSkpCnN2aW50OF90IHN2YWJkX3goc3Zib29sX3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfbl9zMzJfeCkpKQpzdmludDMyX3Qgc3ZhYmRfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkX25fczY0X3gpKSkKc3ZpbnQ2NF90IHN2YWJkX3goc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZF9uX3MxNl94KSkpCnN2aW50MTZfdCBzdmFiZF94KHN2Ym9vbF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfbl9zOF96KSkpCnN2aW50OF90IHN2YWJkX3ooc3Zib29sX3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfbl9zMzJfeikpKQpzdmludDMyX3Qgc3ZhYmRfeihzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkX25fczY0X3opKSkKc3ZpbnQ2NF90IHN2YWJkX3ooc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZF9uX3MxNl96KSkpCnN2aW50MTZfdCBzdmFiZF96KHN2Ym9vbF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfbl91OF9tKSkpCnN2dWludDhfdCBzdmFiZF9tKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfbl91MzJfbSkpKQpzdnVpbnQzMl90IHN2YWJkX20oc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkX25fdTY0X20pKSkKc3Z1aW50NjRfdCBzdmFiZF9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZF9uX3UxNl9tKSkpCnN2dWludDE2X3Qgc3ZhYmRfbShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfbl91OF94KSkpCnN2dWludDhfdCBzdmFiZF94KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfbl91MzJfeCkpKQpzdnVpbnQzMl90IHN2YWJkX3goc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkX25fdTY0X3gpKSkKc3Z1aW50NjRfdCBzdmFiZF94KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZF9uX3UxNl94KSkpCnN2dWludDE2X3Qgc3ZhYmRfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfbl91OF96KSkpCnN2dWludDhfdCBzdmFiZF96KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfbl91MzJfeikpKQpzdnVpbnQzMl90IHN2YWJkX3ooc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkX25fdTY0X3opKSkKc3Z1aW50NjRfdCBzdmFiZF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZF9uX3UxNl96KSkpCnN2dWludDE2X3Qgc3ZhYmRfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZhYmRfbShzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkX2YzMl9tKSkpCnN2ZmxvYXQzMl90IHN2YWJkX20oc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZF9mMTZfbSkpKQpzdmZsb2F0MTZfdCBzdmFiZF9tKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZhYmRfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkX2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2YWJkX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZF9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdmFiZF94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZhYmRfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkX2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2YWJkX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZF9mMTZfeikpKQpzdmZsb2F0MTZfdCBzdmFiZF96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfczhfbSkpKQpzdmludDhfdCBzdmFiZF9tKHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfczMyX20pKSkKc3ZpbnQzMl90IHN2YWJkX20oc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkX3M2NF9tKSkpCnN2aW50NjRfdCBzdmFiZF9tKHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZF9zMTZfbSkpKQpzdmludDE2X3Qgc3ZhYmRfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfczhfeCkpKQpzdmludDhfdCBzdmFiZF94KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfczMyX3gpKSkKc3ZpbnQzMl90IHN2YWJkX3goc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkX3M2NF94KSkpCnN2aW50NjRfdCBzdmFiZF94KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZF9zMTZfeCkpKQpzdmludDE2X3Qgc3ZhYmRfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfczhfeikpKQpzdmludDhfdCBzdmFiZF96KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfczMyX3opKSkKc3ZpbnQzMl90IHN2YWJkX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkX3M2NF96KSkpCnN2aW50NjRfdCBzdmFiZF96KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZF9zMTZfeikpKQpzdmludDE2X3Qgc3ZhYmRfeihzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfdThfbSkpKQpzdnVpbnQ4X3Qgc3ZhYmRfbShzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfdTMyX20pKSkKc3Z1aW50MzJfdCBzdmFiZF9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkX3U2NF9tKSkpCnN2dWludDY0X3Qgc3ZhYmRfbShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZF91MTZfbSkpKQpzdnVpbnQxNl90IHN2YWJkX20oc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfdThfeCkpKQpzdnVpbnQ4X3Qgc3ZhYmRfeChzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfdTMyX3gpKSkKc3Z1aW50MzJfdCBzdmFiZF94KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkX3U2NF94KSkpCnN2dWludDY0X3Qgc3ZhYmRfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZF91MTZfeCkpKQpzdnVpbnQxNl90IHN2YWJkX3goc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfdThfeikpKQpzdnVpbnQ4X3Qgc3ZhYmRfeihzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRfdTMyX3opKSkKc3Z1aW50MzJfdCBzdmFiZF96KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkX3U2NF96KSkpCnN2dWludDY0X3Qgc3ZhYmRfeihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZF91MTZfeikpKQpzdnVpbnQxNl90IHN2YWJkX3ooc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYnNfZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZhYnNfbShzdmZsb2F0NjRfdCwgc3Zib29sX3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJzX2YzMl9tKSkpCnN2ZmxvYXQzMl90IHN2YWJzX20oc3ZmbG9hdDMyX3QsIHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFic19mMTZfbSkpKQpzdmZsb2F0MTZfdCBzdmFic19tKHN2ZmxvYXQxNl90LCBzdmJvb2xfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYnNfZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZhYnNfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYnNfZjMyX3gpKSkKc3ZmbG9hdDMyX3Qgc3ZhYnNfeChzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYnNfZjE2X3gpKSkKc3ZmbG9hdDE2X3Qgc3ZhYnNfeChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYnNfZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZhYnNfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYnNfZjMyX3opKSkKc3ZmbG9hdDMyX3Qgc3ZhYnNfeihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYnNfZjE2X3opKSkKc3ZmbG9hdDE2X3Qgc3ZhYnNfeihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYnNfczhfbSkpKQpzdmludDhfdCBzdmFic19tKHN2aW50OF90LCBzdmJvb2xfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYnNfczMyX20pKSkKc3ZpbnQzMl90IHN2YWJzX20oc3ZpbnQzMl90LCBzdmJvb2xfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJzX3M2NF9tKSkpCnN2aW50NjRfdCBzdmFic19tKHN2aW50NjRfdCwgc3Zib29sX3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFic19zMTZfbSkpKQpzdmludDE2X3Qgc3ZhYnNfbShzdmludDE2X3QsIHN2Ym9vbF90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYnNfczhfeCkpKQpzdmludDhfdCBzdmFic194KHN2Ym9vbF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFic19zMzJfeCkpKQpzdmludDMyX3Qgc3ZhYnNfeChzdmJvb2xfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJzX3M2NF94KSkpCnN2aW50NjRfdCBzdmFic194KHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYnNfczE2X3gpKSkKc3ZpbnQxNl90IHN2YWJzX3goc3Zib29sX3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFic19zOF96KSkpCnN2aW50OF90IHN2YWJzX3ooc3Zib29sX3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJzX3MzMl96KSkpCnN2aW50MzJfdCBzdmFic196KHN2Ym9vbF90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYnNfczY0X3opKSkKc3ZpbnQ2NF90IHN2YWJzX3ooc3Zib29sX3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFic19zMTZfeikpKQpzdmludDE2X3Qgc3ZhYnNfeihzdmJvb2xfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWNnZV9uX2Y2NCkpKQpzdmJvb2xfdCBzdmFjZ2Uoc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhY2dlX25fZjMyKSkpCnN2Ym9vbF90IHN2YWNnZShzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFjZ2Vfbl9mMTYpKSkKc3Zib29sX3Qgc3ZhY2dlKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWNnZV9mNjQpKSkKc3Zib29sX3Qgc3ZhY2dlKHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhY2dlX2YzMikpKQpzdmJvb2xfdCBzdmFjZ2Uoc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFjZ2VfZjE2KSkpCnN2Ym9vbF90IHN2YWNnZShzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWNndF9uX2Y2NCkpKQpzdmJvb2xfdCBzdmFjZ3Qoc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhY2d0X25fZjMyKSkpCnN2Ym9vbF90IHN2YWNndChzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFjZ3Rfbl9mMTYpKSkKc3Zib29sX3Qgc3ZhY2d0KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWNndF9mNjQpKSkKc3Zib29sX3Qgc3ZhY2d0KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhY2d0X2YzMikpKQpzdmJvb2xfdCBzdmFjZ3Qoc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFjZ3RfZjE2KSkpCnN2Ym9vbF90IHN2YWNndChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWNsZV9uX2Y2NCkpKQpzdmJvb2xfdCBzdmFjbGUoc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhY2xlX25fZjMyKSkpCnN2Ym9vbF90IHN2YWNsZShzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFjbGVfbl9mMTYpKSkKc3Zib29sX3Qgc3ZhY2xlKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWNsZV9mNjQpKSkKc3Zib29sX3Qgc3ZhY2xlKHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhY2xlX2YzMikpKQpzdmJvb2xfdCBzdmFjbGUoc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFjbGVfZjE2KSkpCnN2Ym9vbF90IHN2YWNsZShzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWNsdF9uX2Y2NCkpKQpzdmJvb2xfdCBzdmFjbHQoc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhY2x0X25fZjMyKSkpCnN2Ym9vbF90IHN2YWNsdChzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFjbHRfbl9mMTYpKSkKc3Zib29sX3Qgc3ZhY2x0KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWNsdF9mNjQpKSkKc3Zib29sX3Qgc3ZhY2x0KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhY2x0X2YzMikpKQpzdmJvb2xfdCBzdmFjbHQoc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFjbHRfZjE2KSkpCnN2Ym9vbF90IHN2YWNsdChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX25fZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZhZGRfbShzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIGZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZF9uX2YzMl9tKSkpCnN2ZmxvYXQzMl90IHN2YWRkX20oc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRfbl9mMTZfbSkpKQpzdmZsb2F0MTZfdCBzdmFkZF9tKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX25fZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZhZGRfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIGZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZF9uX2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2YWRkX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRfbl9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdmFkZF94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX25fZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZhZGRfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIGZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZF9uX2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2YWRkX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRfbl9mMTZfeikpKQpzdmZsb2F0MTZfdCBzdmFkZF96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX25fdThfbSkpKQpzdnVpbnQ4X3Qgc3ZhZGRfbShzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX25fdTMyX20pKSkKc3Z1aW50MzJfdCBzdmFkZF9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZF9uX3U2NF9tKSkpCnN2dWludDY0X3Qgc3ZhZGRfbShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRfbl91MTZfbSkpKQpzdnVpbnQxNl90IHN2YWRkX20oc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX25fczhfbSkpKQpzdmludDhfdCBzdmFkZF9tKHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX25fczMyX20pKSkKc3ZpbnQzMl90IHN2YWRkX20oc3Zib29sX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZF9uX3M2NF9tKSkpCnN2aW50NjRfdCBzdmFkZF9tKHN2Ym9vbF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRfbl9zMTZfbSkpKQpzdmludDE2X3Qgc3ZhZGRfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX25fdThfeCkpKQpzdnVpbnQ4X3Qgc3ZhZGRfeChzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX25fdTMyX3gpKSkKc3Z1aW50MzJfdCBzdmFkZF94KHN2Ym9vbF90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZF9uX3U2NF94KSkpCnN2dWludDY0X3Qgc3ZhZGRfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRfbl91MTZfeCkpKQpzdnVpbnQxNl90IHN2YWRkX3goc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX25fczhfeCkpKQpzdmludDhfdCBzdmFkZF94KHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX25fczMyX3gpKSkKc3ZpbnQzMl90IHN2YWRkX3goc3Zib29sX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZF9uX3M2NF94KSkpCnN2aW50NjRfdCBzdmFkZF94KHN2Ym9vbF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRfbl9zMTZfeCkpKQpzdmludDE2X3Qgc3ZhZGRfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX25fdThfeikpKQpzdnVpbnQ4X3Qgc3ZhZGRfeihzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX25fdTMyX3opKSkKc3Z1aW50MzJfdCBzdmFkZF96KHN2Ym9vbF90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZF9uX3U2NF96KSkpCnN2dWludDY0X3Qgc3ZhZGRfeihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRfbl91MTZfeikpKQpzdnVpbnQxNl90IHN2YWRkX3ooc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX25fczhfeikpKQpzdmludDhfdCBzdmFkZF96KHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX25fczMyX3opKSkKc3ZpbnQzMl90IHN2YWRkX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZF9uX3M2NF96KSkpCnN2aW50NjRfdCBzdmFkZF96KHN2Ym9vbF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRfbl9zMTZfeikpKQpzdmludDE2X3Qgc3ZhZGRfeihzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX2Y2NF9tKSkpCnN2ZmxvYXQ2NF90IHN2YWRkX20oc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZF9mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdmFkZF9tKHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRfZjE2X20pKSkKc3ZmbG9hdDE2X3Qgc3ZhZGRfbShzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX2Y2NF94KSkpCnN2ZmxvYXQ2NF90IHN2YWRkX3goc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZF9mMzJfeCkpKQpzdmZsb2F0MzJfdCBzdmFkZF94KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRfZjE2X3gpKSkKc3ZmbG9hdDE2X3Qgc3ZhZGRfeChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX2Y2NF96KSkpCnN2ZmxvYXQ2NF90IHN2YWRkX3ooc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZF9mMzJfeikpKQpzdmZsb2F0MzJfdCBzdmFkZF96KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRfZjE2X3opKSkKc3ZmbG9hdDE2X3Qgc3ZhZGRfeihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX3U4X20pKSkKc3Z1aW50OF90IHN2YWRkX20oc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX3UzMl9tKSkpCnN2dWludDMyX3Qgc3ZhZGRfbShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZF91NjRfbSkpKQpzdnVpbnQ2NF90IHN2YWRkX20oc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRfdTE2X20pKSkKc3Z1aW50MTZfdCBzdmFkZF9tKHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX3M4X20pKSkKc3ZpbnQ4X3Qgc3ZhZGRfbShzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX3MzMl9tKSkpCnN2aW50MzJfdCBzdmFkZF9tKHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZF9zNjRfbSkpKQpzdmludDY0X3Qgc3ZhZGRfbShzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRfczE2X20pKSkKc3ZpbnQxNl90IHN2YWRkX20oc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX3U4X3gpKSkKc3Z1aW50OF90IHN2YWRkX3goc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX3UzMl94KSkpCnN2dWludDMyX3Qgc3ZhZGRfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZF91NjRfeCkpKQpzdnVpbnQ2NF90IHN2YWRkX3goc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRfdTE2X3gpKSkKc3Z1aW50MTZfdCBzdmFkZF94KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX3M4X3gpKSkKc3ZpbnQ4X3Qgc3ZhZGRfeChzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX3MzMl94KSkpCnN2aW50MzJfdCBzdmFkZF94KHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZF9zNjRfeCkpKQpzdmludDY0X3Qgc3ZhZGRfeChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRfczE2X3gpKSkKc3ZpbnQxNl90IHN2YWRkX3goc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX3U4X3opKSkKc3Z1aW50OF90IHN2YWRkX3ooc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX3UzMl96KSkpCnN2dWludDMyX3Qgc3ZhZGRfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZF91NjRfeikpKQpzdnVpbnQ2NF90IHN2YWRkX3ooc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRfdTE2X3opKSkKc3Z1aW50MTZfdCBzdmFkZF96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX3M4X3opKSkKc3ZpbnQ4X3Qgc3ZhZGRfeihzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkX3MzMl96KSkpCnN2aW50MzJfdCBzdmFkZF96KHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZF9zNjRfeikpKQpzdmludDY0X3Qgc3ZhZGRfeihzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRfczE2X3opKSkKc3ZpbnQxNl90IHN2YWRkX3ooc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkYV9mNjQpKSkKZmxvYXQ2NF90IHN2YWRkYShzdmJvb2xfdCwgZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZGFfZjMyKSkpCmZsb2F0MzJfdCBzdmFkZGEoc3Zib29sX3QsIGZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRhX2YxNikpKQpmbG9hdDE2X3Qgc3ZhZGRhKHN2Ym9vbF90LCBmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkdl9zOCkpKQppbnQ2NF90IHN2YWRkdihzdmJvb2xfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGR2X3MzMikpKQppbnQ2NF90IHN2YWRkdihzdmJvb2xfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkdl9zNjQpKSkKaW50NjRfdCBzdmFkZHYoc3Zib29sX3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZHZfczE2KSkpCmludDY0X3Qgc3ZhZGR2KHN2Ym9vbF90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGR2X3U4KSkpCnVpbnQ2NF90IHN2YWRkdihzdmJvb2xfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkdl91MzIpKSkKdWludDY0X3Qgc3ZhZGR2KHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkdl91NjQpKSkKdWludDY0X3Qgc3ZhZGR2KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkdl91MTYpKSkKdWludDY0X3Qgc3ZhZGR2KHN2Ym9vbF90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkdl9mNjQpKSkKZmxvYXQ2NF90IHN2YWRkdihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGR2X2YzMikpKQpmbG9hdDMyX3Qgc3ZhZGR2KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZHZfZjE2KSkpCmZsb2F0MTZfdCBzdmFkZHYoc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRyYl91MzJiYXNlX3UzMm9mZnNldCkpKQpzdnVpbnQzMl90IHN2YWRyYl9vZmZzZXQoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkcmJfdTY0YmFzZV91NjRvZmZzZXQpKSkKc3Z1aW50NjRfdCBzdmFkcmJfb2Zmc2V0KHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZHJiX3UzMmJhc2VfczMyb2Zmc2V0KSkpCnN2dWludDMyX3Qgc3ZhZHJiX29mZnNldChzdnVpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZHJiX3U2NGJhc2VfczY0b2Zmc2V0KSkpCnN2dWludDY0X3Qgc3ZhZHJiX29mZnNldChzdnVpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZHJkX3UzMmJhc2VfdTMyaW5kZXgpKSkKc3Z1aW50MzJfdCBzdmFkcmRfaW5kZXgoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkcmRfdTY0YmFzZV91NjRpbmRleCkpKQpzdnVpbnQ2NF90IHN2YWRyZF9pbmRleChzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRyZF91MzJiYXNlX3MzMmluZGV4KSkpCnN2dWludDMyX3Qgc3ZhZHJkX2luZGV4KHN2dWludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkcmRfdTY0YmFzZV9zNjRpbmRleCkpKQpzdnVpbnQ2NF90IHN2YWRyZF9pbmRleChzdnVpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZHJoX3UzMmJhc2VfdTMyaW5kZXgpKSkKc3Z1aW50MzJfdCBzdmFkcmhfaW5kZXgoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkcmhfdTY0YmFzZV91NjRpbmRleCkpKQpzdnVpbnQ2NF90IHN2YWRyaF9pbmRleChzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRyaF91MzJiYXNlX3MzMmluZGV4KSkpCnN2dWludDMyX3Qgc3ZhZHJoX2luZGV4KHN2dWludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkcmhfdTY0YmFzZV9zNjRpbmRleCkpKQpzdnVpbnQ2NF90IHN2YWRyaF9pbmRleChzdnVpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZHJ3X3UzMmJhc2VfdTMyaW5kZXgpKSkKc3Z1aW50MzJfdCBzdmFkcndfaW5kZXgoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkcndfdTY0YmFzZV91NjRpbmRleCkpKQpzdnVpbnQ2NF90IHN2YWRyd19pbmRleChzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRyd191MzJiYXNlX3MzMmluZGV4KSkpCnN2dWludDMyX3Qgc3ZhZHJ3X2luZGV4KHN2dWludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkcndfdTY0YmFzZV9zNjRpbmRleCkpKQpzdnVpbnQ2NF90IHN2YWRyd19pbmRleChzdnVpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhbmRfYl96KSkpCnN2Ym9vbF90IHN2YW5kX3ooc3Zib29sX3QsIHN2Ym9vbF90LCBzdmJvb2xfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZF9uX3U4X20pKSkKc3Z1aW50OF90IHN2YW5kX20oc3Zib29sX3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZF9uX3UzMl9tKSkpCnN2dWludDMyX3Qgc3ZhbmRfbShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhbmRfbl91NjRfbSkpKQpzdnVpbnQ2NF90IHN2YW5kX20oc3Zib29sX3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YW5kX25fdTE2X20pKSkKc3Z1aW50MTZfdCBzdmFuZF9tKHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZF9uX3M4X20pKSkKc3ZpbnQ4X3Qgc3ZhbmRfbShzdmJvb2xfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZF9uX3MzMl9tKSkpCnN2aW50MzJfdCBzdmFuZF9tKHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhbmRfbl9zNjRfbSkpKQpzdmludDY0X3Qgc3ZhbmRfbShzdmJvb2xfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YW5kX25fczE2X20pKSkKc3ZpbnQxNl90IHN2YW5kX20oc3Zib29sX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZF9uX3U4X3gpKSkKc3Z1aW50OF90IHN2YW5kX3goc3Zib29sX3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZF9uX3UzMl94KSkpCnN2dWludDMyX3Qgc3ZhbmRfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhbmRfbl91NjRfeCkpKQpzdnVpbnQ2NF90IHN2YW5kX3goc3Zib29sX3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YW5kX25fdTE2X3gpKSkKc3Z1aW50MTZfdCBzdmFuZF94KHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZF9uX3M4X3gpKSkKc3ZpbnQ4X3Qgc3ZhbmRfeChzdmJvb2xfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZF9uX3MzMl94KSkpCnN2aW50MzJfdCBzdmFuZF94KHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhbmRfbl9zNjRfeCkpKQpzdmludDY0X3Qgc3ZhbmRfeChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YW5kX25fczE2X3gpKSkKc3ZpbnQxNl90IHN2YW5kX3goc3Zib29sX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZF9uX3U4X3opKSkKc3Z1aW50OF90IHN2YW5kX3ooc3Zib29sX3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZF9uX3UzMl96KSkpCnN2dWludDMyX3Qgc3ZhbmRfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhbmRfbl91NjRfeikpKQpzdnVpbnQ2NF90IHN2YW5kX3ooc3Zib29sX3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YW5kX25fdTE2X3opKSkKc3Z1aW50MTZfdCBzdmFuZF96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZF9uX3M4X3opKSkKc3ZpbnQ4X3Qgc3ZhbmRfeihzdmJvb2xfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZF9uX3MzMl96KSkpCnN2aW50MzJfdCBzdmFuZF96KHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhbmRfbl9zNjRfeikpKQpzdmludDY0X3Qgc3ZhbmRfeihzdmJvb2xfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YW5kX25fczE2X3opKSkKc3ZpbnQxNl90IHN2YW5kX3ooc3Zib29sX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZF91OF9tKSkpCnN2dWludDhfdCBzdmFuZF9tKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZF91MzJfbSkpKQpzdnVpbnQzMl90IHN2YW5kX20oc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhbmRfdTY0X20pKSkKc3Z1aW50NjRfdCBzdmFuZF9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YW5kX3UxNl9tKSkpCnN2dWludDE2X3Qgc3ZhbmRfbShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZF9zOF9tKSkpCnN2aW50OF90IHN2YW5kX20oc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZF9zMzJfbSkpKQpzdmludDMyX3Qgc3ZhbmRfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhbmRfczY0X20pKSkKc3ZpbnQ2NF90IHN2YW5kX20oc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YW5kX3MxNl9tKSkpCnN2aW50MTZfdCBzdmFuZF9tKHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZF91OF94KSkpCnN2dWludDhfdCBzdmFuZF94KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZF91MzJfeCkpKQpzdnVpbnQzMl90IHN2YW5kX3goc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhbmRfdTY0X3gpKSkKc3Z1aW50NjRfdCBzdmFuZF94KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YW5kX3UxNl94KSkpCnN2dWludDE2X3Qgc3ZhbmRfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZF9zOF94KSkpCnN2aW50OF90IHN2YW5kX3goc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZF9zMzJfeCkpKQpzdmludDMyX3Qgc3ZhbmRfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhbmRfczY0X3gpKSkKc3ZpbnQ2NF90IHN2YW5kX3goc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YW5kX3MxNl94KSkpCnN2aW50MTZfdCBzdmFuZF94KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZF91OF96KSkpCnN2dWludDhfdCBzdmFuZF96KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZF91MzJfeikpKQpzdnVpbnQzMl90IHN2YW5kX3ooc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhbmRfdTY0X3opKSkKc3Z1aW50NjRfdCBzdmFuZF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YW5kX3UxNl96KSkpCnN2dWludDE2X3Qgc3ZhbmRfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZF9zOF96KSkpCnN2aW50OF90IHN2YW5kX3ooc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZF9zMzJfeikpKQpzdmludDMyX3Qgc3ZhbmRfeihzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhbmRfczY0X3opKSkKc3ZpbnQ2NF90IHN2YW5kX3ooc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YW5kX3MxNl96KSkpCnN2aW50MTZfdCBzdmFuZF96KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZHZfdTgpKSkKdWludDhfdCBzdmFuZHYoc3Zib29sX3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZHZfdTMyKSkpCnVpbnQzMl90IHN2YW5kdihzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZHZfdTY0KSkpCnVpbnQ2NF90IHN2YW5kdihzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZHZfdTE2KSkpCnVpbnQxNl90IHN2YW5kdihzdmJvb2xfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZHZfczgpKSkKaW50OF90IHN2YW5kdihzdmJvb2xfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhbmR2X3MzMikpKQppbnQzMl90IHN2YW5kdihzdmJvb2xfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YW5kdl9zNjQpKSkKaW50NjRfdCBzdmFuZHYoc3Zib29sX3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFuZHZfczE2KSkpCmludDE2X3Qgc3ZhbmR2KHN2Ym9vbF90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3Jfbl9zOF9tKSkpCnN2aW50OF90IHN2YXNyX20oc3Zib29sX3QsIHN2aW50OF90LCB1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YXNyX25fczMyX20pKSkKc3ZpbnQzMl90IHN2YXNyX20oc3Zib29sX3QsIHN2aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3Jfbl9zNjRfbSkpKQpzdmludDY0X3Qgc3Zhc3JfbShzdmJvb2xfdCwgc3ZpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFzcl9uX3MxNl9tKSkpCnN2aW50MTZfdCBzdmFzcl9tKHN2Ym9vbF90LCBzdmludDE2X3QsIHVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YXNyX25fczhfeCkpKQpzdmludDhfdCBzdmFzcl94KHN2Ym9vbF90LCBzdmludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFzcl9uX3MzMl94KSkpCnN2aW50MzJfdCBzdmFzcl94KHN2Ym9vbF90LCBzdmludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YXNyX25fczY0X3gpKSkKc3ZpbnQ2NF90IHN2YXNyX3goc3Zib29sX3QsIHN2aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3Jfbl9zMTZfeCkpKQpzdmludDE2X3Qgc3Zhc3JfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFzcl9uX3M4X3opKSkKc3ZpbnQ4X3Qgc3Zhc3JfeihzdmJvb2xfdCwgc3ZpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3Jfbl9zMzJfeikpKQpzdmludDMyX3Qgc3Zhc3JfeihzdmJvb2xfdCwgc3ZpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFzcl9uX3M2NF96KSkpCnN2aW50NjRfdCBzdmFzcl96KHN2Ym9vbF90LCBzdmludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YXNyX25fczE2X3opKSkKc3ZpbnQxNl90IHN2YXNyX3ooc3Zib29sX3QsIHN2aW50MTZfdCwgdWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3JfczhfbSkpKQpzdmludDhfdCBzdmFzcl9tKHN2Ym9vbF90LCBzdmludDhfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YXNyX3MzMl9tKSkpCnN2aW50MzJfdCBzdmFzcl9tKHN2Ym9vbF90LCBzdmludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3JfczY0X20pKSkKc3ZpbnQ2NF90IHN2YXNyX20oc3Zib29sX3QsIHN2aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFzcl9zMTZfbSkpKQpzdmludDE2X3Qgc3Zhc3JfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YXNyX3M4X3gpKSkKc3ZpbnQ4X3Qgc3Zhc3JfeChzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFzcl9zMzJfeCkpKQpzdmludDMyX3Qgc3Zhc3JfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YXNyX3M2NF94KSkpCnN2aW50NjRfdCBzdmFzcl94KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3JfczE2X3gpKSkKc3ZpbnQxNl90IHN2YXNyX3goc3Zib29sX3QsIHN2aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFzcl9zOF96KSkpCnN2aW50OF90IHN2YXNyX3ooc3Zib29sX3QsIHN2aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3JfczMyX3opKSkKc3ZpbnQzMl90IHN2YXNyX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFzcl9zNjRfeikpKQpzdmludDY0X3Qgc3Zhc3JfeihzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YXNyX3MxNl96KSkpCnN2aW50MTZfdCBzdmFzcl96KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3Jfd2lkZV9uX3M4X20pKSkKc3ZpbnQ4X3Qgc3Zhc3Jfd2lkZV9tKHN2Ym9vbF90LCBzdmludDhfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3Jfd2lkZV9uX3MzMl9tKSkpCnN2aW50MzJfdCBzdmFzcl93aWRlX20oc3Zib29sX3QsIHN2aW50MzJfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3Jfd2lkZV9uX3MxNl9tKSkpCnN2aW50MTZfdCBzdmFzcl93aWRlX20oc3Zib29sX3QsIHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3Jfd2lkZV9uX3M4X3gpKSkKc3ZpbnQ4X3Qgc3Zhc3Jfd2lkZV94KHN2Ym9vbF90LCBzdmludDhfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3Jfd2lkZV9uX3MzMl94KSkpCnN2aW50MzJfdCBzdmFzcl93aWRlX3goc3Zib29sX3QsIHN2aW50MzJfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3Jfd2lkZV9uX3MxNl94KSkpCnN2aW50MTZfdCBzdmFzcl93aWRlX3goc3Zib29sX3QsIHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3Jfd2lkZV9uX3M4X3opKSkKc3ZpbnQ4X3Qgc3Zhc3Jfd2lkZV96KHN2Ym9vbF90LCBzdmludDhfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3Jfd2lkZV9uX3MzMl96KSkpCnN2aW50MzJfdCBzdmFzcl93aWRlX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3Jfd2lkZV9uX3MxNl96KSkpCnN2aW50MTZfdCBzdmFzcl93aWRlX3ooc3Zib29sX3QsIHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3Jfd2lkZV9zOF9tKSkpCnN2aW50OF90IHN2YXNyX3dpZGVfbShzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3Jfd2lkZV9zMzJfbSkpKQpzdmludDMyX3Qgc3Zhc3Jfd2lkZV9tKHN2Ym9vbF90LCBzdmludDMyX3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3Jfd2lkZV9zMTZfbSkpKQpzdmludDE2X3Qgc3Zhc3Jfd2lkZV9tKHN2Ym9vbF90LCBzdmludDE2X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3Jfd2lkZV9zOF94KSkpCnN2aW50OF90IHN2YXNyX3dpZGVfeChzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3Jfd2lkZV9zMzJfeCkpKQpzdmludDMyX3Qgc3Zhc3Jfd2lkZV94KHN2Ym9vbF90LCBzdmludDMyX3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3Jfd2lkZV9zMTZfeCkpKQpzdmludDE2X3Qgc3Zhc3Jfd2lkZV94KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3Jfd2lkZV9zOF96KSkpCnN2aW50OF90IHN2YXNyX3dpZGVfeihzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3Jfd2lkZV9zMzJfeikpKQpzdmludDMyX3Qgc3Zhc3Jfd2lkZV96KHN2Ym9vbF90LCBzdmludDMyX3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3Jfd2lkZV9zMTZfeikpKQpzdmludDE2X3Qgc3Zhc3Jfd2lkZV96KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3JkX25fczhfbSkpKQpzdmludDhfdCBzdmFzcmRfbShzdmJvb2xfdCwgc3ZpbnQ4X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YXNyZF9uX3MzMl9tKSkpCnN2aW50MzJfdCBzdmFzcmRfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFzcmRfbl9zNjRfbSkpKQpzdmludDY0X3Qgc3Zhc3JkX20oc3Zib29sX3QsIHN2aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3JkX25fczE2X20pKSkKc3ZpbnQxNl90IHN2YXNyZF9tKHN2Ym9vbF90LCBzdmludDE2X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YXNyZF9uX3M4X3gpKSkKc3ZpbnQ4X3Qgc3Zhc3JkX3goc3Zib29sX3QsIHN2aW50OF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFzcmRfbl9zMzJfeCkpKQpzdmludDMyX3Qgc3Zhc3JkX3goc3Zib29sX3QsIHN2aW50MzJfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3JkX25fczY0X3gpKSkKc3ZpbnQ2NF90IHN2YXNyZF94KHN2Ym9vbF90LCBzdmludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YXNyZF9uX3MxNl94KSkpCnN2aW50MTZfdCBzdmFzcmRfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFzcmRfbl9zOF96KSkpCnN2aW50OF90IHN2YXNyZF96KHN2Ym9vbF90LCBzdmludDhfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zhc3JkX25fczMyX3opKSkKc3ZpbnQzMl90IHN2YXNyZF96KHN2Ym9vbF90LCBzdmludDMyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YXNyZF9uX3M2NF96KSkpCnN2aW50NjRfdCBzdmFzcmRfeihzdmJvb2xfdCwgc3ZpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFzcmRfbl9zMTZfeikpKQpzdmludDE2X3Qgc3Zhc3JkX3ooc3Zib29sX3QsIHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiaWNfYl96KSkpCnN2Ym9vbF90IHN2YmljX3ooc3Zib29sX3QsIHN2Ym9vbF90LCBzdmJvb2xfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJpY19uX3U4X20pKSkKc3Z1aW50OF90IHN2YmljX20oc3Zib29sX3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJpY19uX3UzMl9tKSkpCnN2dWludDMyX3Qgc3ZiaWNfbShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiaWNfbl91NjRfbSkpKQpzdnVpbnQ2NF90IHN2YmljX20oc3Zib29sX3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmljX25fdTE2X20pKSkKc3Z1aW50MTZfdCBzdmJpY19tKHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJpY19uX3M4X20pKSkKc3ZpbnQ4X3Qgc3ZiaWNfbShzdmJvb2xfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJpY19uX3MzMl9tKSkpCnN2aW50MzJfdCBzdmJpY19tKHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiaWNfbl9zNjRfbSkpKQpzdmludDY0X3Qgc3ZiaWNfbShzdmJvb2xfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmljX25fczE2X20pKSkKc3ZpbnQxNl90IHN2YmljX20oc3Zib29sX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJpY19uX3U4X3gpKSkKc3Z1aW50OF90IHN2YmljX3goc3Zib29sX3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJpY19uX3UzMl94KSkpCnN2dWludDMyX3Qgc3ZiaWNfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiaWNfbl91NjRfeCkpKQpzdnVpbnQ2NF90IHN2YmljX3goc3Zib29sX3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmljX25fdTE2X3gpKSkKc3Z1aW50MTZfdCBzdmJpY194KHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJpY19uX3M4X3gpKSkKc3ZpbnQ4X3Qgc3ZiaWNfeChzdmJvb2xfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJpY19uX3MzMl94KSkpCnN2aW50MzJfdCBzdmJpY194KHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiaWNfbl9zNjRfeCkpKQpzdmludDY0X3Qgc3ZiaWNfeChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmljX25fczE2X3gpKSkKc3ZpbnQxNl90IHN2YmljX3goc3Zib29sX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJpY19uX3U4X3opKSkKc3Z1aW50OF90IHN2YmljX3ooc3Zib29sX3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJpY19uX3UzMl96KSkpCnN2dWludDMyX3Qgc3ZiaWNfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiaWNfbl91NjRfeikpKQpzdnVpbnQ2NF90IHN2YmljX3ooc3Zib29sX3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmljX25fdTE2X3opKSkKc3Z1aW50MTZfdCBzdmJpY196KHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJpY19uX3M4X3opKSkKc3ZpbnQ4X3Qgc3ZiaWNfeihzdmJvb2xfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJpY19uX3MzMl96KSkpCnN2aW50MzJfdCBzdmJpY196KHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiaWNfbl9zNjRfeikpKQpzdmludDY0X3Qgc3ZiaWNfeihzdmJvb2xfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmljX25fczE2X3opKSkKc3ZpbnQxNl90IHN2YmljX3ooc3Zib29sX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJpY191OF9tKSkpCnN2dWludDhfdCBzdmJpY19tKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJpY191MzJfbSkpKQpzdnVpbnQzMl90IHN2YmljX20oc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiaWNfdTY0X20pKSkKc3Z1aW50NjRfdCBzdmJpY19tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmljX3UxNl9tKSkpCnN2dWludDE2X3Qgc3ZiaWNfbShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJpY19zOF9tKSkpCnN2aW50OF90IHN2YmljX20oc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJpY19zMzJfbSkpKQpzdmludDMyX3Qgc3ZiaWNfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiaWNfczY0X20pKSkKc3ZpbnQ2NF90IHN2YmljX20oc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmljX3MxNl9tKSkpCnN2aW50MTZfdCBzdmJpY19tKHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJpY191OF94KSkpCnN2dWludDhfdCBzdmJpY194KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJpY191MzJfeCkpKQpzdnVpbnQzMl90IHN2YmljX3goc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiaWNfdTY0X3gpKSkKc3Z1aW50NjRfdCBzdmJpY194KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmljX3UxNl94KSkpCnN2dWludDE2X3Qgc3ZiaWNfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJpY19zOF94KSkpCnN2aW50OF90IHN2YmljX3goc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJpY19zMzJfeCkpKQpzdmludDMyX3Qgc3ZiaWNfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiaWNfczY0X3gpKSkKc3ZpbnQ2NF90IHN2YmljX3goc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmljX3MxNl94KSkpCnN2aW50MTZfdCBzdmJpY194KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJpY191OF96KSkpCnN2dWludDhfdCBzdmJpY196KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJpY191MzJfeikpKQpzdnVpbnQzMl90IHN2YmljX3ooc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiaWNfdTY0X3opKSkKc3Z1aW50NjRfdCBzdmJpY196KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmljX3UxNl96KSkpCnN2dWludDE2X3Qgc3ZiaWNfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJpY19zOF96KSkpCnN2aW50OF90IHN2YmljX3ooc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJpY19zMzJfeikpKQpzdmludDMyX3Qgc3ZiaWNfeihzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiaWNfczY0X3opKSkKc3ZpbnQ2NF90IHN2YmljX3ooc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmljX3MxNl96KSkpCnN2aW50MTZfdCBzdmJpY196KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJya2FfYl9tKSkpCnN2Ym9vbF90IHN2YnJrYV9tKHN2Ym9vbF90LCBzdmJvb2xfdCwgc3Zib29sX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZicmthX2JfeikpKQpzdmJvb2xfdCBzdmJya2FfeihzdmJvb2xfdCwgc3Zib29sX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZicmtiX2JfbSkpKQpzdmJvb2xfdCBzdmJya2JfbShzdmJvb2xfdCwgc3Zib29sX3QsIHN2Ym9vbF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YnJrYl9iX3opKSkKc3Zib29sX3Qgc3ZicmtiX3ooc3Zib29sX3QsIHN2Ym9vbF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YnJrbl9iX3opKSkKc3Zib29sX3Qgc3ZicmtuX3ooc3Zib29sX3QsIHN2Ym9vbF90LCBzdmJvb2xfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJya3BhX2JfeikpKQpzdmJvb2xfdCBzdmJya3BhX3ooc3Zib29sX3QsIHN2Ym9vbF90LCBzdmJvb2xfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJya3BiX2JfeikpKQpzdmJvb2xfdCBzdmJya3BiX3ooc3Zib29sX3QsIHN2Ym9vbF90LCBzdmJvb2xfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNhZGRfZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZjYWRkX20oc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjYWRkX2YzMl9tKSkpCnN2ZmxvYXQzMl90IHN2Y2FkZF9tKHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2FkZF9mMTZfbSkpKQpzdmZsb2F0MTZfdCBzdmNhZGRfbShzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNhZGRfZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZjYWRkX3goc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjYWRkX2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2Y2FkZF94KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2FkZF9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdmNhZGRfeChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNhZGRfZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZjYWRkX3ooc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjYWRkX2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2Y2FkZF96KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2FkZF9mMTZfeikpKQpzdmZsb2F0MTZfdCBzdmNhZGRfeihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsYXN0YV9uX3U4KSkpCnVpbnQ4X3Qgc3ZjbGFzdGEoc3Zib29sX3QsIHVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsYXN0YV9uX3UzMikpKQp1aW50MzJfdCBzdmNsYXN0YShzdmJvb2xfdCwgdWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbGFzdGFfbl91NjQpKSkKdWludDY0X3Qgc3ZjbGFzdGEoc3Zib29sX3QsIHVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2xhc3RhX25fdTE2KSkpCnVpbnQxNl90IHN2Y2xhc3RhKHN2Ym9vbF90LCB1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsYXN0YV9uX3M4KSkpCmludDhfdCBzdmNsYXN0YShzdmJvb2xfdCwgaW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsYXN0YV9uX2Y2NCkpKQpmbG9hdDY0X3Qgc3ZjbGFzdGEoc3Zib29sX3QsIGZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbGFzdGFfbl9mMzIpKSkKZmxvYXQzMl90IHN2Y2xhc3RhKHN2Ym9vbF90LCBmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2xhc3RhX25fZjE2KSkpCmZsb2F0MTZfdCBzdmNsYXN0YShzdmJvb2xfdCwgZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsYXN0YV9uX3MzMikpKQppbnQzMl90IHN2Y2xhc3RhKHN2Ym9vbF90LCBpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbGFzdGFfbl9zNjQpKSkKaW50NjRfdCBzdmNsYXN0YShzdmJvb2xfdCwgaW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2xhc3RhX25fczE2KSkpCmludDE2X3Qgc3ZjbGFzdGEoc3Zib29sX3QsIGludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsYXN0YV91OCkpKQpzdnVpbnQ4X3Qgc3ZjbGFzdGEoc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2xhc3RhX3UzMikpKQpzdnVpbnQzMl90IHN2Y2xhc3RhKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2xhc3RhX3U2NCkpKQpzdnVpbnQ2NF90IHN2Y2xhc3RhKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2xhc3RhX3UxNikpKQpzdnVpbnQxNl90IHN2Y2xhc3RhKHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2xhc3RhX3M4KSkpCnN2aW50OF90IHN2Y2xhc3RhKHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbGFzdGFfZjY0KSkpCnN2ZmxvYXQ2NF90IHN2Y2xhc3RhKHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbGFzdGFfZjMyKSkpCnN2ZmxvYXQzMl90IHN2Y2xhc3RhKHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbGFzdGFfZjE2KSkpCnN2ZmxvYXQxNl90IHN2Y2xhc3RhKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbGFzdGFfczMyKSkpCnN2aW50MzJfdCBzdmNsYXN0YShzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbGFzdGFfczY0KSkpCnN2aW50NjRfdCBzdmNsYXN0YShzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbGFzdGFfczE2KSkpCnN2aW50MTZfdCBzdmNsYXN0YShzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbGFzdGJfbl91OCkpKQp1aW50OF90IHN2Y2xhc3RiKHN2Ym9vbF90LCB1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbGFzdGJfbl91MzIpKSkKdWludDMyX3Qgc3ZjbGFzdGIoc3Zib29sX3QsIHVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2xhc3RiX25fdTY0KSkpCnVpbnQ2NF90IHN2Y2xhc3RiKHN2Ym9vbF90LCB1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsYXN0Yl9uX3UxNikpKQp1aW50MTZfdCBzdmNsYXN0YihzdmJvb2xfdCwgdWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbGFzdGJfbl9zOCkpKQppbnQ4X3Qgc3ZjbGFzdGIoc3Zib29sX3QsIGludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbGFzdGJfbl9mNjQpKSkKZmxvYXQ2NF90IHN2Y2xhc3RiKHN2Ym9vbF90LCBmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2xhc3RiX25fZjMyKSkpCmZsb2F0MzJfdCBzdmNsYXN0YihzdmJvb2xfdCwgZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsYXN0Yl9uX2YxNikpKQpmbG9hdDE2X3Qgc3ZjbGFzdGIoc3Zib29sX3QsIGZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbGFzdGJfbl9zMzIpKSkKaW50MzJfdCBzdmNsYXN0YihzdmJvb2xfdCwgaW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2xhc3RiX25fczY0KSkpCmludDY0X3Qgc3ZjbGFzdGIoc3Zib29sX3QsIGludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsYXN0Yl9uX3MxNikpKQppbnQxNl90IHN2Y2xhc3RiKHN2Ym9vbF90LCBpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbGFzdGJfdTgpKSkKc3Z1aW50OF90IHN2Y2xhc3RiKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsYXN0Yl91MzIpKSkKc3Z1aW50MzJfdCBzdmNsYXN0YihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsYXN0Yl91NjQpKSkKc3Z1aW50NjRfdCBzdmNsYXN0YihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsYXN0Yl91MTYpKSkKc3Z1aW50MTZfdCBzdmNsYXN0YihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsYXN0Yl9zOCkpKQpzdmludDhfdCBzdmNsYXN0YihzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2xhc3RiX2Y2NCkpKQpzdmZsb2F0NjRfdCBzdmNsYXN0YihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2xhc3RiX2YzMikpKQpzdmZsb2F0MzJfdCBzdmNsYXN0YihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2xhc3RiX2YxNikpKQpzdmZsb2F0MTZfdCBzdmNsYXN0YihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2xhc3RiX3MzMikpKQpzdmludDMyX3Qgc3ZjbGFzdGIoc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2xhc3RiX3M2NCkpKQpzdmludDY0X3Qgc3ZjbGFzdGIoc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2xhc3RiX3MxNikpKQpzdmludDE2X3Qgc3ZjbGFzdGIoc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2xzX3M4X20pKSkKc3Z1aW50OF90IHN2Y2xzX20oc3Z1aW50OF90LCBzdmJvb2xfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbHNfczMyX20pKSkKc3Z1aW50MzJfdCBzdmNsc19tKHN2dWludDMyX3QsIHN2Ym9vbF90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbHNfczY0X20pKSkKc3Z1aW50NjRfdCBzdmNsc19tKHN2dWludDY0X3QsIHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbHNfczE2X20pKSkKc3Z1aW50MTZfdCBzdmNsc19tKHN2dWludDE2X3QsIHN2Ym9vbF90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbHNfczhfeCkpKQpzdnVpbnQ4X3Qgc3ZjbHNfeChzdmJvb2xfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbHNfczMyX3gpKSkKc3Z1aW50MzJfdCBzdmNsc194KHN2Ym9vbF90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbHNfczY0X3gpKSkKc3Z1aW50NjRfdCBzdmNsc194KHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbHNfczE2X3gpKSkKc3Z1aW50MTZfdCBzdmNsc194KHN2Ym9vbF90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbHNfczhfeikpKQpzdnVpbnQ4X3Qgc3ZjbHNfeihzdmJvb2xfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbHNfczMyX3opKSkKc3Z1aW50MzJfdCBzdmNsc196KHN2Ym9vbF90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbHNfczY0X3opKSkKc3Z1aW50NjRfdCBzdmNsc196KHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbHNfczE2X3opKSkKc3Z1aW50MTZfdCBzdmNsc196KHN2Ym9vbF90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbHpfdThfbSkpKQpzdnVpbnQ4X3Qgc3ZjbHpfbShzdnVpbnQ4X3QsIHN2Ym9vbF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbHpfdTMyX20pKSkKc3Z1aW50MzJfdCBzdmNsel9tKHN2dWludDMyX3QsIHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2x6X3U2NF9tKSkpCnN2dWludDY0X3Qgc3ZjbHpfbShzdnVpbnQ2NF90LCBzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsel91MTZfbSkpKQpzdnVpbnQxNl90IHN2Y2x6X20oc3Z1aW50MTZfdCwgc3Zib29sX3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbHpfczhfbSkpKQpzdnVpbnQ4X3Qgc3ZjbHpfbShzdnVpbnQ4X3QsIHN2Ym9vbF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsel9zMzJfbSkpKQpzdnVpbnQzMl90IHN2Y2x6X20oc3Z1aW50MzJfdCwgc3Zib29sX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsel9zNjRfbSkpKQpzdnVpbnQ2NF90IHN2Y2x6X20oc3Z1aW50NjRfdCwgc3Zib29sX3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsel9zMTZfbSkpKQpzdnVpbnQxNl90IHN2Y2x6X20oc3Z1aW50MTZfdCwgc3Zib29sX3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsel91OF94KSkpCnN2dWludDhfdCBzdmNsel94KHN2Ym9vbF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbHpfdTMyX3gpKSkKc3Z1aW50MzJfdCBzdmNsel94KHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2x6X3U2NF94KSkpCnN2dWludDY0X3Qgc3ZjbHpfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsel91MTZfeCkpKQpzdnVpbnQxNl90IHN2Y2x6X3goc3Zib29sX3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbHpfczhfeCkpKQpzdnVpbnQ4X3Qgc3ZjbHpfeChzdmJvb2xfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbHpfczMyX3gpKSkKc3Z1aW50MzJfdCBzdmNsel94KHN2Ym9vbF90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbHpfczY0X3gpKSkKc3Z1aW50NjRfdCBzdmNsel94KHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbHpfczE2X3gpKSkKc3Z1aW50MTZfdCBzdmNsel94KHN2Ym9vbF90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbHpfdThfeikpKQpzdnVpbnQ4X3Qgc3ZjbHpfeihzdmJvb2xfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2x6X3UzMl96KSkpCnN2dWludDMyX3Qgc3ZjbHpfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsel91NjRfeikpKQpzdnVpbnQ2NF90IHN2Y2x6X3ooc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbHpfdTE2X3opKSkKc3Z1aW50MTZfdCBzdmNsel96KHN2Ym9vbF90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2x6X3M4X3opKSkKc3Z1aW50OF90IHN2Y2x6X3ooc3Zib29sX3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2x6X3MzMl96KSkpCnN2dWludDMyX3Qgc3ZjbHpfeihzdmJvb2xfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2x6X3M2NF96KSkpCnN2dWludDY0X3Qgc3ZjbHpfeihzdmJvb2xfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2x6X3MxNl96KSkpCnN2dWludDE2X3Qgc3ZjbHpfeihzdmJvb2xfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21sYV9mNjRfbSkpKQpzdmZsb2F0NjRfdCBzdmNtbGFfbShzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbWxhX2YzMl9tKSkpCnN2ZmxvYXQzMl90IHN2Y21sYV9tKHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtbGFfZjE2X20pKSkKc3ZmbG9hdDE2X3Qgc3ZjbWxhX20oc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21sYV9mNjRfeCkpKQpzdmZsb2F0NjRfdCBzdmNtbGFfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbWxhX2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2Y21sYV94KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtbGFfZjE2X3gpKSkKc3ZmbG9hdDE2X3Qgc3ZjbWxhX3goc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21sYV9mNjRfeikpKQpzdmZsb2F0NjRfdCBzdmNtbGFfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbWxhX2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2Y21sYV96KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtbGFfZjE2X3opKSkKc3ZmbG9hdDE2X3Qgc3ZjbWxhX3ooc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21sYV9sYW5lX2YzMikpKQpzdmZsb2F0MzJfdCBzdmNtbGFfbGFuZShzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90LCB1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbWxhX2xhbmVfZjE2KSkpCnN2ZmxvYXQxNl90IHN2Y21sYV9sYW5lKHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIHVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGVxX25fZjY0KSkpCnN2Ym9vbF90IHN2Y21wZXEoc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBlcV9uX2YzMikpKQpzdmJvb2xfdCBzdmNtcGVxKHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZXFfbl9mMTYpKSkKc3Zib29sX3Qgc3ZjbXBlcShzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIGZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGVxX25fdTgpKSkKc3Zib29sX3Qgc3ZjbXBlcShzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZXFfbl91MzIpKSkKc3Zib29sX3Qgc3ZjbXBlcShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBlcV9uX3U2NCkpKQpzdmJvb2xfdCBzdmNtcGVxKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGVxX25fdTE2KSkpCnN2Ym9vbF90IHN2Y21wZXEoc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZXFfbl9zOCkpKQpzdmJvb2xfdCBzdmNtcGVxKHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZXFfbl9zMzIpKSkKc3Zib29sX3Qgc3ZjbXBlcShzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZXFfbl9zNjQpKSkKc3Zib29sX3Qgc3ZjbXBlcShzdmJvb2xfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZXFfbl9zMTYpKSkKc3Zib29sX3Qgc3ZjbXBlcShzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZXFfdTgpKSkKc3Zib29sX3Qgc3ZjbXBlcShzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBlcV91MzIpKSkKc3Zib29sX3Qgc3ZjbXBlcShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGVxX3U2NCkpKQpzdmJvb2xfdCBzdmNtcGVxKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZXFfdTE2KSkpCnN2Ym9vbF90IHN2Y21wZXEoc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBlcV9zOCkpKQpzdmJvb2xfdCBzdmNtcGVxKHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBlcV9zMzIpKSkKc3Zib29sX3Qgc3ZjbXBlcShzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBlcV9zNjQpKSkKc3Zib29sX3Qgc3ZjbXBlcShzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBlcV9zMTYpKSkKc3Zib29sX3Qgc3ZjbXBlcShzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBlcV9mNjQpKSkKc3Zib29sX3Qgc3ZjbXBlcShzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZXFfZjMyKSkpCnN2Ym9vbF90IHN2Y21wZXEoc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGVxX2YxNikpKQpzdmJvb2xfdCBzdmNtcGVxKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBlcV93aWRlX25fczgpKSkKc3Zib29sX3Qgc3ZjbXBlcV93aWRlKHN2Ym9vbF90LCBzdmludDhfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGVxX3dpZGVfbl9zMzIpKSkKc3Zib29sX3Qgc3ZjbXBlcV93aWRlKHN2Ym9vbF90LCBzdmludDMyX3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBlcV93aWRlX25fczE2KSkpCnN2Ym9vbF90IHN2Y21wZXFfd2lkZShzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZXFfd2lkZV9zOCkpKQpzdmJvb2xfdCBzdmNtcGVxX3dpZGUoc3Zib29sX3QsIHN2aW50OF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBlcV93aWRlX3MzMikpKQpzdmJvb2xfdCBzdmNtcGVxX3dpZGUoc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZXFfd2lkZV9zMTYpKSkKc3Zib29sX3Qgc3ZjbXBlcV93aWRlKHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGdlX25fZjY0KSkpCnN2Ym9vbF90IHN2Y21wZ2Uoc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBnZV9uX2YzMikpKQpzdmJvb2xfdCBzdmNtcGdlKHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ2Vfbl9mMTYpKSkKc3Zib29sX3Qgc3ZjbXBnZShzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIGZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGdlX25fczgpKSkKc3Zib29sX3Qgc3ZjbXBnZShzdmJvb2xfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGdlX25fczMyKSkpCnN2Ym9vbF90IHN2Y21wZ2Uoc3Zib29sX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGdlX25fczY0KSkpCnN2Ym9vbF90IHN2Y21wZ2Uoc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGdlX25fczE2KSkpCnN2Ym9vbF90IHN2Y21wZ2Uoc3Zib29sX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGdlX25fdTgpKSkKc3Zib29sX3Qgc3ZjbXBnZShzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ2Vfbl91MzIpKSkKc3Zib29sX3Qgc3ZjbXBnZShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBnZV9uX3U2NCkpKQpzdmJvb2xfdCBzdmNtcGdlKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGdlX25fdTE2KSkpCnN2Ym9vbF90IHN2Y21wZ2Uoc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ2VfczgpKSkKc3Zib29sX3Qgc3ZjbXBnZShzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ2VfczMyKSkpCnN2Ym9vbF90IHN2Y21wZ2Uoc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ2VfczY0KSkpCnN2Ym9vbF90IHN2Y21wZ2Uoc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ2VfczE2KSkpCnN2Ym9vbF90IHN2Y21wZ2Uoc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ2VfZjY0KSkpCnN2Ym9vbF90IHN2Y21wZ2Uoc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGdlX2YzMikpKQpzdmJvb2xfdCBzdmNtcGdlKHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBnZV9mMTYpKSkKc3Zib29sX3Qgc3ZjbXBnZShzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ2VfdTgpKSkKc3Zib29sX3Qgc3ZjbXBnZShzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBnZV91MzIpKSkKc3Zib29sX3Qgc3ZjbXBnZShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGdlX3U2NCkpKQpzdmJvb2xfdCBzdmNtcGdlKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ2VfdTE2KSkpCnN2Ym9vbF90IHN2Y21wZ2Uoc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBnZV93aWRlX25fczgpKSkKc3Zib29sX3Qgc3ZjbXBnZV93aWRlKHN2Ym9vbF90LCBzdmludDhfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGdlX3dpZGVfbl9zMzIpKSkKc3Zib29sX3Qgc3ZjbXBnZV93aWRlKHN2Ym9vbF90LCBzdmludDMyX3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBnZV93aWRlX25fczE2KSkpCnN2Ym9vbF90IHN2Y21wZ2Vfd2lkZShzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ2Vfd2lkZV9uX3U4KSkpCnN2Ym9vbF90IHN2Y21wZ2Vfd2lkZShzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGdlX3dpZGVfbl91MzIpKSkKc3Zib29sX3Qgc3ZjbXBnZV93aWRlKHN2Ym9vbF90LCBzdnVpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGdlX3dpZGVfbl91MTYpKSkKc3Zib29sX3Qgc3ZjbXBnZV93aWRlKHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGdlX3dpZGVfczgpKSkKc3Zib29sX3Qgc3ZjbXBnZV93aWRlKHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ2Vfd2lkZV9zMzIpKSkKc3Zib29sX3Qgc3ZjbXBnZV93aWRlKHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGdlX3dpZGVfczE2KSkpCnN2Ym9vbF90IHN2Y21wZ2Vfd2lkZShzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBnZV93aWRlX3U4KSkpCnN2Ym9vbF90IHN2Y21wZ2Vfd2lkZShzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ2Vfd2lkZV91MzIpKSkKc3Zib29sX3Qgc3ZjbXBnZV93aWRlKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ2Vfd2lkZV91MTYpKSkKc3Zib29sX3Qgc3ZjbXBnZV93aWRlKHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ3Rfbl9mNjQpKSkKc3Zib29sX3Qgc3ZjbXBndChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIGZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGd0X25fZjMyKSkpCnN2Ym9vbF90IHN2Y21wZ3Qoc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBndF9uX2YxNikpKQpzdmJvb2xfdCBzdmNtcGd0KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ3Rfbl9zOCkpKQpzdmJvb2xfdCBzdmNtcGd0KHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ3Rfbl9zMzIpKSkKc3Zib29sX3Qgc3ZjbXBndChzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ3Rfbl9zNjQpKSkKc3Zib29sX3Qgc3ZjbXBndChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ3Rfbl9zMTYpKSkKc3Zib29sX3Qgc3ZjbXBndChzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ3Rfbl91OCkpKQpzdmJvb2xfdCBzdmNtcGd0KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBndF9uX3UzMikpKQpzdmJvb2xfdCBzdmNtcGd0KHN2Ym9vbF90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGd0X25fdTY0KSkpCnN2Ym9vbF90IHN2Y21wZ3Qoc3Zib29sX3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ3Rfbl91MTYpKSkKc3Zib29sX3Qgc3ZjbXBndChzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBndF9zOCkpKQpzdmJvb2xfdCBzdmNtcGd0KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBndF9zMzIpKSkKc3Zib29sX3Qgc3ZjbXBndChzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBndF9zNjQpKSkKc3Zib29sX3Qgc3ZjbXBndChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBndF9zMTYpKSkKc3Zib29sX3Qgc3ZjbXBndChzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBndF9mNjQpKSkKc3Zib29sX3Qgc3ZjbXBndChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ3RfZjMyKSkpCnN2Ym9vbF90IHN2Y21wZ3Qoc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGd0X2YxNikpKQpzdmJvb2xfdCBzdmNtcGd0KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBndF91OCkpKQpzdmJvb2xfdCBzdmNtcGd0KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGd0X3UzMikpKQpzdmJvb2xfdCBzdmNtcGd0KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ3RfdTY0KSkpCnN2Ym9vbF90IHN2Y21wZ3Qoc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBndF91MTYpKSkKc3Zib29sX3Qgc3ZjbXBndChzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGd0X3dpZGVfbl9zOCkpKQpzdmJvb2xfdCBzdmNtcGd0X3dpZGUoc3Zib29sX3QsIHN2aW50OF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ3Rfd2lkZV9uX3MzMikpKQpzdmJvb2xfdCBzdmNtcGd0X3dpZGUoc3Zib29sX3QsIHN2aW50MzJfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGd0X3dpZGVfbl9zMTYpKSkKc3Zib29sX3Qgc3ZjbXBndF93aWRlKHN2Ym9vbF90LCBzdmludDE2X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBndF93aWRlX25fdTgpKSkKc3Zib29sX3Qgc3ZjbXBndF93aWRlKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ3Rfd2lkZV9uX3UzMikpKQpzdmJvb2xfdCBzdmNtcGd0X3dpZGUoc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ3Rfd2lkZV9uX3UxNikpKQpzdmJvb2xfdCBzdmNtcGd0X3dpZGUoc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ3Rfd2lkZV9zOCkpKQpzdmJvb2xfdCBzdmNtcGd0X3dpZGUoc3Zib29sX3QsIHN2aW50OF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBndF93aWRlX3MzMikpKQpzdmJvb2xfdCBzdmNtcGd0X3dpZGUoc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wZ3Rfd2lkZV9zMTYpKSkKc3Zib29sX3Qgc3ZjbXBndF93aWRlKHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGd0X3dpZGVfdTgpKSkKc3Zib29sX3Qgc3ZjbXBndF93aWRlKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBndF93aWRlX3UzMikpKQpzdmJvb2xfdCBzdmNtcGd0X3dpZGUoc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBndF93aWRlX3UxNikpKQpzdmJvb2xfdCBzdmNtcGd0X3dpZGUoc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsZV9uX2Y2NCkpKQpzdmJvb2xfdCBzdmNtcGxlKHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbGVfbl9mMzIpKSkKc3Zib29sX3Qgc3ZjbXBsZShzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGxlX25fZjE2KSkpCnN2Ym9vbF90IHN2Y21wbGUoc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsZV9uX3M4KSkpCnN2Ym9vbF90IHN2Y21wbGUoc3Zib29sX3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsZV9uX3MzMikpKQpzdmJvb2xfdCBzdmNtcGxlKHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsZV9uX3M2NCkpKQpzdmJvb2xfdCBzdmNtcGxlKHN2Ym9vbF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsZV9uX3MxNikpKQpzdmJvb2xfdCBzdmNtcGxlKHN2Ym9vbF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsZV9uX3U4KSkpCnN2Ym9vbF90IHN2Y21wbGUoc3Zib29sX3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGxlX25fdTMyKSkpCnN2Ym9vbF90IHN2Y21wbGUoc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbGVfbl91NjQpKSkKc3Zib29sX3Qgc3ZjbXBsZShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsZV9uX3UxNikpKQpzdmJvb2xfdCBzdmNtcGxlKHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGxlX3M4KSkpCnN2Ym9vbF90IHN2Y21wbGUoc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGxlX3MzMikpKQpzdmJvb2xfdCBzdmNtcGxlKHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGxlX3M2NCkpKQpzdmJvb2xfdCBzdmNtcGxlKHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGxlX3MxNikpKQpzdmJvb2xfdCBzdmNtcGxlKHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGxlX2Y2NCkpKQpzdmJvb2xfdCBzdmNtcGxlKHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsZV9mMzIpKSkKc3Zib29sX3Qgc3ZjbXBsZShzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbGVfZjE2KSkpCnN2Ym9vbF90IHN2Y21wbGUoc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGxlX3U4KSkpCnN2Ym9vbF90IHN2Y21wbGUoc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbGVfdTMyKSkpCnN2Ym9vbF90IHN2Y21wbGUoc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsZV91NjQpKSkKc3Zib29sX3Qgc3ZjbXBsZShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGxlX3UxNikpKQpzdmJvb2xfdCBzdmNtcGxlKHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbGVfd2lkZV9uX3M4KSkpCnN2Ym9vbF90IHN2Y21wbGVfd2lkZShzdmJvb2xfdCwgc3ZpbnQ4X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsZV93aWRlX25fczMyKSkpCnN2Ym9vbF90IHN2Y21wbGVfd2lkZShzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbGVfd2lkZV9uX3MxNikpKQpzdmJvb2xfdCBzdmNtcGxlX3dpZGUoc3Zib29sX3QsIHN2aW50MTZfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGxlX3dpZGVfbl91OCkpKQpzdmJvb2xfdCBzdmNtcGxlX3dpZGUoc3Zib29sX3QsIHN2dWludDhfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsZV93aWRlX25fdTMyKSkpCnN2Ym9vbF90IHN2Y21wbGVfd2lkZShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsZV93aWRlX25fdTE2KSkpCnN2Ym9vbF90IHN2Y21wbGVfd2lkZShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsZV93aWRlX3M4KSkpCnN2Ym9vbF90IHN2Y21wbGVfd2lkZShzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGxlX3dpZGVfczMyKSkpCnN2Ym9vbF90IHN2Y21wbGVfd2lkZShzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsZV93aWRlX3MxNikpKQpzdmJvb2xfdCBzdmNtcGxlX3dpZGUoc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbGVfd2lkZV91OCkpKQpzdmJvb2xfdCBzdmNtcGxlX3dpZGUoc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGxlX3dpZGVfdTMyKSkpCnN2Ym9vbF90IHN2Y21wbGVfd2lkZShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGxlX3dpZGVfdTE2KSkpCnN2Ym9vbF90IHN2Y21wbGVfd2lkZShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGx0X25fdTgpKSkKc3Zib29sX3Qgc3ZjbXBsdChzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbHRfbl91MzIpKSkKc3Zib29sX3Qgc3ZjbXBsdChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsdF9uX3U2NCkpKQpzdmJvb2xfdCBzdmNtcGx0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGx0X25fdTE2KSkpCnN2Ym9vbF90IHN2Y21wbHQoc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbHRfbl9mNjQpKSkKc3Zib29sX3Qgc3ZjbXBsdChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIGZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGx0X25fZjMyKSkpCnN2Ym9vbF90IHN2Y21wbHQoc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsdF9uX2YxNikpKQpzdmJvb2xfdCBzdmNtcGx0KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbHRfbl9zOCkpKQpzdmJvb2xfdCBzdmNtcGx0KHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbHRfbl9zMzIpKSkKc3Zib29sX3Qgc3ZjbXBsdChzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbHRfbl9zNjQpKSkKc3Zib29sX3Qgc3ZjbXBsdChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbHRfbl9zMTYpKSkKc3Zib29sX3Qgc3ZjbXBsdChzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbHRfdTgpKSkKc3Zib29sX3Qgc3ZjbXBsdChzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsdF91MzIpKSkKc3Zib29sX3Qgc3ZjbXBsdChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGx0X3U2NCkpKQpzdmJvb2xfdCBzdmNtcGx0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbHRfdTE2KSkpCnN2Ym9vbF90IHN2Y21wbHQoc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsdF9zOCkpKQpzdmJvb2xfdCBzdmNtcGx0KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsdF9zMzIpKSkKc3Zib29sX3Qgc3ZjbXBsdChzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsdF9zNjQpKSkKc3Zib29sX3Qgc3ZjbXBsdChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsdF9zMTYpKSkKc3Zib29sX3Qgc3ZjbXBsdChzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsdF9mNjQpKSkKc3Zib29sX3Qgc3ZjbXBsdChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbHRfZjMyKSkpCnN2Ym9vbF90IHN2Y21wbHQoc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGx0X2YxNikpKQpzdmJvb2xfdCBzdmNtcGx0KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsdF93aWRlX25fdTgpKSkKc3Zib29sX3Qgc3ZjbXBsdF93aWRlKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbHRfd2lkZV9uX3UzMikpKQpzdmJvb2xfdCBzdmNtcGx0X3dpZGUoc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbHRfd2lkZV9uX3UxNikpKQpzdmJvb2xfdCBzdmNtcGx0X3dpZGUoc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbHRfd2lkZV9uX3M4KSkpCnN2Ym9vbF90IHN2Y21wbHRfd2lkZShzdmJvb2xfdCwgc3ZpbnQ4X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsdF93aWRlX25fczMyKSkpCnN2Ym9vbF90IHN2Y21wbHRfd2lkZShzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbHRfd2lkZV9uX3MxNikpKQpzdmJvb2xfdCBzdmNtcGx0X3dpZGUoc3Zib29sX3QsIHN2aW50MTZfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGx0X3dpZGVfdTgpKSkKc3Zib29sX3Qgc3ZjbXBsdF93aWRlKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsdF93aWRlX3UzMikpKQpzdmJvb2xfdCBzdmNtcGx0X3dpZGUoc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsdF93aWRlX3UxNikpKQpzdmJvb2xfdCBzdmNtcGx0X3dpZGUoc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsdF93aWRlX3M4KSkpCnN2Ym9vbF90IHN2Y21wbHRfd2lkZShzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcGx0X3dpZGVfczMyKSkpCnN2Ym9vbF90IHN2Y21wbHRfd2lkZShzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBsdF93aWRlX3MxNikpKQpzdmJvb2xfdCBzdmNtcGx0X3dpZGUoc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbmVfbl9mNjQpKSkKc3Zib29sX3Qgc3ZjbXBuZShzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIGZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcG5lX25fZjMyKSkpCnN2Ym9vbF90IHN2Y21wbmUoc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBuZV9uX2YxNikpKQpzdmJvb2xfdCBzdmNtcG5lKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbmVfbl91OCkpKQpzdmJvb2xfdCBzdmNtcG5lKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBuZV9uX3UzMikpKQpzdmJvb2xfdCBzdmNtcG5lKHN2Ym9vbF90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcG5lX25fdTY0KSkpCnN2Ym9vbF90IHN2Y21wbmUoc3Zib29sX3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbmVfbl91MTYpKSkKc3Zib29sX3Qgc3ZjbXBuZShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBuZV9uX3M4KSkpCnN2Ym9vbF90IHN2Y21wbmUoc3Zib29sX3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBuZV9uX3MzMikpKQpzdmJvb2xfdCBzdmNtcG5lKHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBuZV9uX3M2NCkpKQpzdmJvb2xfdCBzdmNtcG5lKHN2Ym9vbF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBuZV9uX3MxNikpKQpzdmJvb2xfdCBzdmNtcG5lKHN2Ym9vbF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBuZV91OCkpKQpzdmJvb2xfdCBzdmNtcG5lKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcG5lX3UzMikpKQpzdmJvb2xfdCBzdmNtcG5lKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbmVfdTY0KSkpCnN2Ym9vbF90IHN2Y21wbmUoc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBuZV91MTYpKSkKc3Zib29sX3Qgc3ZjbXBuZShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcG5lX3M4KSkpCnN2Ym9vbF90IHN2Y21wbmUoc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcG5lX3MzMikpKQpzdmJvb2xfdCBzdmNtcG5lKHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcG5lX3M2NCkpKQpzdmJvb2xfdCBzdmNtcG5lKHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcG5lX3MxNikpKQpzdmJvb2xfdCBzdmNtcG5lKHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcG5lX2Y2NCkpKQpzdmJvb2xfdCBzdmNtcG5lKHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBuZV9mMzIpKSkKc3Zib29sX3Qgc3ZjbXBuZShzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbmVfZjE2KSkpCnN2Ym9vbF90IHN2Y21wbmUoc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcG5lX3dpZGVfbl9zOCkpKQpzdmJvb2xfdCBzdmNtcG5lX3dpZGUoc3Zib29sX3QsIHN2aW50OF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wbmVfd2lkZV9uX3MzMikpKQpzdmJvb2xfdCBzdmNtcG5lX3dpZGUoc3Zib29sX3QsIHN2aW50MzJfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcG5lX3dpZGVfbl9zMTYpKSkKc3Zib29sX3Qgc3ZjbXBuZV93aWRlKHN2Ym9vbF90LCBzdmludDE2X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBuZV93aWRlX3M4KSkpCnN2Ym9vbF90IHN2Y21wbmVfd2lkZShzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcG5lX3dpZGVfczMyKSkpCnN2Ym9vbF90IHN2Y21wbmVfd2lkZShzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXBuZV93aWRlX3MxNikpKQpzdmJvb2xfdCBzdmNtcG5lX3dpZGUoc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wdW9fbl9mNjQpKSkKc3Zib29sX3Qgc3ZjbXB1byhzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIGZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcHVvX25fZjMyKSkpCnN2Ym9vbF90IHN2Y21wdW8oc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXB1b19uX2YxNikpKQpzdmJvb2xfdCBzdmNtcHVvKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21wdW9fZjY0KSkpCnN2Ym9vbF90IHN2Y21wdW8oc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtcHVvX2YzMikpKQpzdmJvb2xfdCBzdmNtcHVvKHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbXB1b19mMTYpKSkKc3Zib29sX3Qgc3ZjbXB1byhzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y25vdF91OF9tKSkpCnN2dWludDhfdCBzdmNub3RfbShzdnVpbnQ4X3QsIHN2Ym9vbF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zjbm90X3UzMl9tKSkpCnN2dWludDMyX3Qgc3Zjbm90X20oc3Z1aW50MzJfdCwgc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zjbm90X3U2NF9tKSkpCnN2dWludDY0X3Qgc3Zjbm90X20oc3Z1aW50NjRfdCwgc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zjbm90X3UxNl9tKSkpCnN2dWludDE2X3Qgc3Zjbm90X20oc3Z1aW50MTZfdCwgc3Zib29sX3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zjbm90X3M4X20pKSkKc3ZpbnQ4X3Qgc3Zjbm90X20oc3ZpbnQ4X3QsIHN2Ym9vbF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNub3RfczMyX20pKSkKc3ZpbnQzMl90IHN2Y25vdF9tKHN2aW50MzJfdCwgc3Zib29sX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNub3RfczY0X20pKSkKc3ZpbnQ2NF90IHN2Y25vdF9tKHN2aW50NjRfdCwgc3Zib29sX3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNub3RfczE2X20pKSkKc3ZpbnQxNl90IHN2Y25vdF9tKHN2aW50MTZfdCwgc3Zib29sX3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNub3RfdThfeCkpKQpzdnVpbnQ4X3Qgc3Zjbm90X3goc3Zib29sX3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNub3RfdTMyX3gpKSkKc3Z1aW50MzJfdCBzdmNub3RfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNub3RfdTY0X3gpKSkKc3Z1aW50NjRfdCBzdmNub3RfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNub3RfdTE2X3gpKSkKc3Z1aW50MTZfdCBzdmNub3RfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNub3RfczhfeCkpKQpzdmludDhfdCBzdmNub3RfeChzdmJvb2xfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zjbm90X3MzMl94KSkpCnN2aW50MzJfdCBzdmNub3RfeChzdmJvb2xfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y25vdF9zNjRfeCkpKQpzdmludDY0X3Qgc3Zjbm90X3goc3Zib29sX3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNub3RfczE2X3gpKSkKc3ZpbnQxNl90IHN2Y25vdF94KHN2Ym9vbF90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zjbm90X3U4X3opKSkKc3Z1aW50OF90IHN2Y25vdF96KHN2Ym9vbF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zjbm90X3UzMl96KSkpCnN2dWludDMyX3Qgc3Zjbm90X3ooc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zjbm90X3U2NF96KSkpCnN2dWludDY0X3Qgc3Zjbm90X3ooc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zjbm90X3UxNl96KSkpCnN2dWludDE2X3Qgc3Zjbm90X3ooc3Zib29sX3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zjbm90X3M4X3opKSkKc3ZpbnQ4X3Qgc3Zjbm90X3ooc3Zib29sX3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y25vdF9zMzJfeikpKQpzdmludDMyX3Qgc3Zjbm90X3ooc3Zib29sX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNub3RfczY0X3opKSkKc3ZpbnQ2NF90IHN2Y25vdF96KHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zjbm90X3MxNl96KSkpCnN2aW50MTZfdCBzdmNub3RfeihzdmJvb2xfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y250X3U4X20pKSkKc3Z1aW50OF90IHN2Y250X20oc3Z1aW50OF90LCBzdmJvb2xfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y250X3UzMl9tKSkpCnN2dWludDMyX3Qgc3ZjbnRfbShzdnVpbnQzMl90LCBzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNudF91NjRfbSkpKQpzdnVpbnQ2NF90IHN2Y250X20oc3Z1aW50NjRfdCwgc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbnRfdTE2X20pKSkKc3Z1aW50MTZfdCBzdmNudF9tKHN2dWludDE2X3QsIHN2Ym9vbF90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y250X3M4X20pKSkKc3Z1aW50OF90IHN2Y250X20oc3Z1aW50OF90LCBzdmJvb2xfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbnRfZjY0X20pKSkKc3Z1aW50NjRfdCBzdmNudF9tKHN2dWludDY0X3QsIHN2Ym9vbF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNudF9mMzJfbSkpKQpzdnVpbnQzMl90IHN2Y250X20oc3Z1aW50MzJfdCwgc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y250X2YxNl9tKSkpCnN2dWludDE2X3Qgc3ZjbnRfbShzdnVpbnQxNl90LCBzdmJvb2xfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbnRfczMyX20pKSkKc3Z1aW50MzJfdCBzdmNudF9tKHN2dWludDMyX3QsIHN2Ym9vbF90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbnRfczY0X20pKSkKc3Z1aW50NjRfdCBzdmNudF9tKHN2dWludDY0X3QsIHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbnRfczE2X20pKSkKc3Z1aW50MTZfdCBzdmNudF9tKHN2dWludDE2X3QsIHN2Ym9vbF90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbnRfdThfeCkpKQpzdnVpbnQ4X3Qgc3ZjbnRfeChzdmJvb2xfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y250X3UzMl94KSkpCnN2dWludDMyX3Qgc3ZjbnRfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNudF91NjRfeCkpKQpzdnVpbnQ2NF90IHN2Y250X3goc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbnRfdTE2X3gpKSkKc3Z1aW50MTZfdCBzdmNudF94KHN2Ym9vbF90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y250X3M4X3gpKSkKc3Z1aW50OF90IHN2Y250X3goc3Zib29sX3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y250X2Y2NF94KSkpCnN2dWludDY0X3Qgc3ZjbnRfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbnRfZjMyX3gpKSkKc3Z1aW50MzJfdCBzdmNudF94KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNudF9mMTZfeCkpKQpzdnVpbnQxNl90IHN2Y250X3goc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y250X3MzMl94KSkpCnN2dWludDMyX3Qgc3ZjbnRfeChzdmJvb2xfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y250X3M2NF94KSkpCnN2dWludDY0X3Qgc3ZjbnRfeChzdmJvb2xfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y250X3MxNl94KSkpCnN2dWludDE2X3Qgc3ZjbnRfeChzdmJvb2xfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y250X3U4X3opKSkKc3Z1aW50OF90IHN2Y250X3ooc3Zib29sX3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNudF91MzJfeikpKQpzdnVpbnQzMl90IHN2Y250X3ooc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbnRfdTY0X3opKSkKc3Z1aW50NjRfdCBzdmNudF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y250X3UxNl96KSkpCnN2dWludDE2X3Qgc3ZjbnRfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNudF9zOF96KSkpCnN2dWludDhfdCBzdmNudF96KHN2Ym9vbF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNudF9mNjRfeikpKQpzdnVpbnQ2NF90IHN2Y250X3ooc3Zib29sX3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y250X2YzMl96KSkpCnN2dWludDMyX3Qgc3ZjbnRfeihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbnRfZjE2X3opKSkKc3Z1aW50MTZfdCBzdmNudF96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNudF9zMzJfeikpKQpzdnVpbnQzMl90IHN2Y250X3ooc3Zib29sX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNudF9zNjRfeikpKQpzdnVpbnQ2NF90IHN2Y250X3ooc3Zib29sX3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNudF9zMTZfeikpKQpzdnVpbnQxNl90IHN2Y250X3ooc3Zib29sX3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNvbXBhY3RfdTMyKSkpCnN2dWludDMyX3Qgc3Zjb21wYWN0KHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y29tcGFjdF91NjQpKSkKc3Z1aW50NjRfdCBzdmNvbXBhY3Qoc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zjb21wYWN0X2Y2NCkpKQpzdmZsb2F0NjRfdCBzdmNvbXBhY3Qoc3Zib29sX3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y29tcGFjdF9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3Zjb21wYWN0KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNvbXBhY3RfczMyKSkpCnN2aW50MzJfdCBzdmNvbXBhY3Qoc3Zib29sX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNvbXBhY3RfczY0KSkpCnN2aW50NjRfdCBzdmNvbXBhY3Qoc3Zib29sX3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNyZWF0ZTJfdTgpKSkKc3Z1aW50OHgyX3Qgc3ZjcmVhdGUyKHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3JlYXRlMl91MzIpKSkKc3Z1aW50MzJ4Ml90IHN2Y3JlYXRlMihzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3JlYXRlMl91NjQpKSkKc3Z1aW50NjR4Ml90IHN2Y3JlYXRlMihzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3JlYXRlMl91MTYpKSkKc3Z1aW50MTZ4Ml90IHN2Y3JlYXRlMihzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3JlYXRlMl9zOCkpKQpzdmludDh4Ml90IHN2Y3JlYXRlMihzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjcmVhdGUyX2Y2NCkpKQpzdmZsb2F0NjR4Ml90IHN2Y3JlYXRlMihzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjcmVhdGUyX2YzMikpKQpzdmZsb2F0MzJ4Ml90IHN2Y3JlYXRlMihzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjcmVhdGUyX2YxNikpKQpzdmZsb2F0MTZ4Ml90IHN2Y3JlYXRlMihzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjcmVhdGUyX3MzMikpKQpzdmludDMyeDJfdCBzdmNyZWF0ZTIoc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjcmVhdGUyX3M2NCkpKQpzdmludDY0eDJfdCBzdmNyZWF0ZTIoc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjcmVhdGUyX3MxNikpKQpzdmludDE2eDJfdCBzdmNyZWF0ZTIoc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjcmVhdGUzX3U4KSkpCnN2dWludDh4M190IHN2Y3JlYXRlMyhzdnVpbnQ4X3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3JlYXRlM191MzIpKSkKc3Z1aW50MzJ4M190IHN2Y3JlYXRlMyhzdnVpbnQzMl90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3JlYXRlM191NjQpKSkKc3Z1aW50NjR4M190IHN2Y3JlYXRlMyhzdnVpbnQ2NF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3JlYXRlM191MTYpKSkKc3Z1aW50MTZ4M190IHN2Y3JlYXRlMyhzdnVpbnQxNl90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3JlYXRlM19zOCkpKQpzdmludDh4M190IHN2Y3JlYXRlMyhzdmludDhfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3JlYXRlM19mNjQpKSkKc3ZmbG9hdDY0eDNfdCBzdmNyZWF0ZTMoc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNyZWF0ZTNfZjMyKSkpCnN2ZmxvYXQzMngzX3Qgc3ZjcmVhdGUzKHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjcmVhdGUzX2YxNikpKQpzdmZsb2F0MTZ4M190IHN2Y3JlYXRlMyhzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3JlYXRlM19zMzIpKSkKc3ZpbnQzMngzX3Qgc3ZjcmVhdGUzKHN2aW50MzJfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjcmVhdGUzX3M2NCkpKQpzdmludDY0eDNfdCBzdmNyZWF0ZTMoc3ZpbnQ2NF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNyZWF0ZTNfczE2KSkpCnN2aW50MTZ4M190IHN2Y3JlYXRlMyhzdmludDE2X3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3JlYXRlNF91OCkpKQpzdnVpbnQ4eDRfdCBzdmNyZWF0ZTQoc3Z1aW50OF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3JlYXRlNF91MzIpKSkKc3Z1aW50MzJ4NF90IHN2Y3JlYXRlNChzdnVpbnQzMl90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3JlYXRlNF91NjQpKSkKc3Z1aW50NjR4NF90IHN2Y3JlYXRlNChzdnVpbnQ2NF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3JlYXRlNF91MTYpKSkKc3Z1aW50MTZ4NF90IHN2Y3JlYXRlNChzdnVpbnQxNl90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3JlYXRlNF9zOCkpKQpzdmludDh4NF90IHN2Y3JlYXRlNChzdmludDhfdCwgc3ZpbnQ4X3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNyZWF0ZTRfZjY0KSkpCnN2ZmxvYXQ2NHg0X3Qgc3ZjcmVhdGU0KHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3JlYXRlNF9mMzIpKSkKc3ZmbG9hdDMyeDRfdCBzdmNyZWF0ZTQoc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjcmVhdGU0X2YxNikpKQpzdmZsb2F0MTZ4NF90IHN2Y3JlYXRlNChzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNyZWF0ZTRfczMyKSkpCnN2aW50MzJ4NF90IHN2Y3JlYXRlNChzdmludDMyX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjcmVhdGU0X3M2NCkpKQpzdmludDY0eDRfdCBzdmNyZWF0ZTQoc3ZpbnQ2NF90LCBzdmludDY0X3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3JlYXRlNF9zMTYpKSkKc3ZpbnQxNng0X3Qgc3ZjcmVhdGU0KHN2aW50MTZfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9mMTZfZjMyX20pKSkKc3ZmbG9hdDE2X3Qgc3ZjdnRfZjE2X20oc3ZmbG9hdDE2X3QsIHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9mMTZfZjMyX3gpKSkKc3ZmbG9hdDE2X3Qgc3ZjdnRfZjE2X3goc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X2YxNl9mMzJfeikpKQpzdmZsb2F0MTZfdCBzdmN2dF9mMTZfeihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfZjE2X2Y2NF9tKSkpCnN2ZmxvYXQxNl90IHN2Y3Z0X2YxNl9tKHN2ZmxvYXQxNl90LCBzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfZjE2X2Y2NF94KSkpCnN2ZmxvYXQxNl90IHN2Y3Z0X2YxNl94KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9mMTZfZjY0X3opKSkKc3ZmbG9hdDE2X3Qgc3ZjdnRfZjE2X3ooc3Zib29sX3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X2YxNl9zMTZfbSkpKQpzdmZsb2F0MTZfdCBzdmN2dF9mMTZfbShzdmZsb2F0MTZfdCwgc3Zib29sX3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9mMTZfczE2X3gpKSkKc3ZmbG9hdDE2X3Qgc3ZjdnRfZjE2X3goc3Zib29sX3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9mMTZfczE2X3opKSkKc3ZmbG9hdDE2X3Qgc3ZjdnRfZjE2X3ooc3Zib29sX3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9mMTZfczMyX20pKSkKc3ZmbG9hdDE2X3Qgc3ZjdnRfZjE2X20oc3ZmbG9hdDE2X3QsIHN2Ym9vbF90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfZjE2X3MzMl94KSkpCnN2ZmxvYXQxNl90IHN2Y3Z0X2YxNl94KHN2Ym9vbF90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfZjE2X3MzMl96KSkpCnN2ZmxvYXQxNl90IHN2Y3Z0X2YxNl96KHN2Ym9vbF90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfZjE2X3M2NF9tKSkpCnN2ZmxvYXQxNl90IHN2Y3Z0X2YxNl9tKHN2ZmxvYXQxNl90LCBzdmJvb2xfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X2YxNl9zNjRfeCkpKQpzdmZsb2F0MTZfdCBzdmN2dF9mMTZfeChzdmJvb2xfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X2YxNl9zNjRfeikpKQpzdmZsb2F0MTZfdCBzdmN2dF9mMTZfeihzdmJvb2xfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X2YxNl91MTZfbSkpKQpzdmZsb2F0MTZfdCBzdmN2dF9mMTZfbShzdmZsb2F0MTZfdCwgc3Zib29sX3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfZjE2X3UxNl94KSkpCnN2ZmxvYXQxNl90IHN2Y3Z0X2YxNl94KHN2Ym9vbF90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X2YxNl91MTZfeikpKQpzdmZsb2F0MTZfdCBzdmN2dF9mMTZfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9mMTZfdTMyX20pKSkKc3ZmbG9hdDE2X3Qgc3ZjdnRfZjE2X20oc3ZmbG9hdDE2X3QsIHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X2YxNl91MzJfeCkpKQpzdmZsb2F0MTZfdCBzdmN2dF9mMTZfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9mMTZfdTMyX3opKSkKc3ZmbG9hdDE2X3Qgc3ZjdnRfZjE2X3ooc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfZjE2X3U2NF9tKSkpCnN2ZmxvYXQxNl90IHN2Y3Z0X2YxNl9tKHN2ZmxvYXQxNl90LCBzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9mMTZfdTY0X3gpKSkKc3ZmbG9hdDE2X3Qgc3ZjdnRfZjE2X3goc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfZjE2X3U2NF96KSkpCnN2ZmxvYXQxNl90IHN2Y3Z0X2YxNl96KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X2YzMl9mMTZfbSkpKQpzdmZsb2F0MzJfdCBzdmN2dF9mMzJfbShzdmZsb2F0MzJfdCwgc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X2YzMl9mMTZfeCkpKQpzdmZsb2F0MzJfdCBzdmN2dF9mMzJfeChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfZjMyX2YxNl96KSkpCnN2ZmxvYXQzMl90IHN2Y3Z0X2YzMl96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9mMzJfZjY0X20pKSkKc3ZmbG9hdDMyX3Qgc3ZjdnRfZjMyX20oc3ZmbG9hdDMyX3QsIHN2Ym9vbF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9mMzJfZjY0X3gpKSkKc3ZmbG9hdDMyX3Qgc3ZjdnRfZjMyX3goc3Zib29sX3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X2YzMl9mNjRfeikpKQpzdmZsb2F0MzJfdCBzdmN2dF9mMzJfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfZjMyX3MzMl9tKSkpCnN2ZmxvYXQzMl90IHN2Y3Z0X2YzMl9tKHN2ZmxvYXQzMl90LCBzdmJvb2xfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X2YzMl9zMzJfeCkpKQpzdmZsb2F0MzJfdCBzdmN2dF9mMzJfeChzdmJvb2xfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X2YzMl9zMzJfeikpKQpzdmZsb2F0MzJfdCBzdmN2dF9mMzJfeihzdmJvb2xfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X2YzMl9zNjRfbSkpKQpzdmZsb2F0MzJfdCBzdmN2dF9mMzJfbShzdmZsb2F0MzJfdCwgc3Zib29sX3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9mMzJfczY0X3gpKSkKc3ZmbG9hdDMyX3Qgc3ZjdnRfZjMyX3goc3Zib29sX3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9mMzJfczY0X3opKSkKc3ZmbG9hdDMyX3Qgc3ZjdnRfZjMyX3ooc3Zib29sX3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9mMzJfdTMyX20pKSkKc3ZmbG9hdDMyX3Qgc3ZjdnRfZjMyX20oc3ZmbG9hdDMyX3QsIHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X2YzMl91MzJfeCkpKQpzdmZsb2F0MzJfdCBzdmN2dF9mMzJfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9mMzJfdTMyX3opKSkKc3ZmbG9hdDMyX3Qgc3ZjdnRfZjMyX3ooc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfZjMyX3U2NF9tKSkpCnN2ZmxvYXQzMl90IHN2Y3Z0X2YzMl9tKHN2ZmxvYXQzMl90LCBzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9mMzJfdTY0X3gpKSkKc3ZmbG9hdDMyX3Qgc3ZjdnRfZjMyX3goc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfZjMyX3U2NF96KSkpCnN2ZmxvYXQzMl90IHN2Y3Z0X2YzMl96KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X2Y2NF9mMTZfbSkpKQpzdmZsb2F0NjRfdCBzdmN2dF9mNjRfbShzdmZsb2F0NjRfdCwgc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X2Y2NF9mMTZfeCkpKQpzdmZsb2F0NjRfdCBzdmN2dF9mNjRfeChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfZjY0X2YxNl96KSkpCnN2ZmxvYXQ2NF90IHN2Y3Z0X2Y2NF96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9mNjRfZjMyX20pKSkKc3ZmbG9hdDY0X3Qgc3ZjdnRfZjY0X20oc3ZmbG9hdDY0X3QsIHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9mNjRfZjMyX3gpKSkKc3ZmbG9hdDY0X3Qgc3ZjdnRfZjY0X3goc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X2Y2NF9mMzJfeikpKQpzdmZsb2F0NjRfdCBzdmN2dF9mNjRfeihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfZjY0X3MzMl9tKSkpCnN2ZmxvYXQ2NF90IHN2Y3Z0X2Y2NF9tKHN2ZmxvYXQ2NF90LCBzdmJvb2xfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X2Y2NF9zMzJfeCkpKQpzdmZsb2F0NjRfdCBzdmN2dF9mNjRfeChzdmJvb2xfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X2Y2NF9zMzJfeikpKQpzdmZsb2F0NjRfdCBzdmN2dF9mNjRfeihzdmJvb2xfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X2Y2NF9zNjRfbSkpKQpzdmZsb2F0NjRfdCBzdmN2dF9mNjRfbShzdmZsb2F0NjRfdCwgc3Zib29sX3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9mNjRfczY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZjdnRfZjY0X3goc3Zib29sX3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9mNjRfczY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZjdnRfZjY0X3ooc3Zib29sX3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9mNjRfdTMyX20pKSkKc3ZmbG9hdDY0X3Qgc3ZjdnRfZjY0X20oc3ZmbG9hdDY0X3QsIHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X2Y2NF91MzJfeCkpKQpzdmZsb2F0NjRfdCBzdmN2dF9mNjRfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9mNjRfdTMyX3opKSkKc3ZmbG9hdDY0X3Qgc3ZjdnRfZjY0X3ooc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfZjY0X3U2NF9tKSkpCnN2ZmxvYXQ2NF90IHN2Y3Z0X2Y2NF9tKHN2ZmxvYXQ2NF90LCBzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9mNjRfdTY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZjdnRfZjY0X3goc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfZjY0X3U2NF96KSkpCnN2ZmxvYXQ2NF90IHN2Y3Z0X2Y2NF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X3MxNl9mMTZfbSkpKQpzdmludDE2X3Qgc3ZjdnRfczE2X20oc3ZpbnQxNl90LCBzdmJvb2xfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfczE2X2YxNl94KSkpCnN2aW50MTZfdCBzdmN2dF9zMTZfeChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfczE2X2YxNl96KSkpCnN2aW50MTZfdCBzdmN2dF9zMTZfeihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfczMyX2YxNl9tKSkpCnN2aW50MzJfdCBzdmN2dF9zMzJfbShzdmludDMyX3QsIHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9zMzJfZjE2X3gpKSkKc3ZpbnQzMl90IHN2Y3Z0X3MzMl94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9zMzJfZjE2X3opKSkKc3ZpbnQzMl90IHN2Y3Z0X3MzMl96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9zMzJfZjMyX20pKSkKc3ZpbnQzMl90IHN2Y3Z0X3MzMl9tKHN2aW50MzJfdCwgc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X3MzMl9mMzJfeCkpKQpzdmludDMyX3Qgc3ZjdnRfczMyX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X3MzMl9mMzJfeikpKQpzdmludDMyX3Qgc3ZjdnRfczMyX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X3MzMl9mNjRfbSkpKQpzdmludDMyX3Qgc3ZjdnRfczMyX20oc3ZpbnQzMl90LCBzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfczMyX2Y2NF94KSkpCnN2aW50MzJfdCBzdmN2dF9zMzJfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfczMyX2Y2NF96KSkpCnN2aW50MzJfdCBzdmN2dF9zMzJfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfczY0X2YxNl9tKSkpCnN2aW50NjRfdCBzdmN2dF9zNjRfbShzdmludDY0X3QsIHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9zNjRfZjE2X3gpKSkKc3ZpbnQ2NF90IHN2Y3Z0X3M2NF94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9zNjRfZjE2X3opKSkKc3ZpbnQ2NF90IHN2Y3Z0X3M2NF96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9zNjRfZjMyX20pKSkKc3ZpbnQ2NF90IHN2Y3Z0X3M2NF9tKHN2aW50NjRfdCwgc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X3M2NF9mMzJfeCkpKQpzdmludDY0X3Qgc3ZjdnRfczY0X3goc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X3M2NF9mMzJfeikpKQpzdmludDY0X3Qgc3ZjdnRfczY0X3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X3M2NF9mNjRfbSkpKQpzdmludDY0X3Qgc3ZjdnRfczY0X20oc3ZpbnQ2NF90LCBzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfczY0X2Y2NF94KSkpCnN2aW50NjRfdCBzdmN2dF9zNjRfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfczY0X2Y2NF96KSkpCnN2aW50NjRfdCBzdmN2dF9zNjRfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfdTE2X2YxNl9tKSkpCnN2dWludDE2X3Qgc3ZjdnRfdTE2X20oc3Z1aW50MTZfdCwgc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X3UxNl9mMTZfeCkpKQpzdnVpbnQxNl90IHN2Y3Z0X3UxNl94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF91MTZfZjE2X3opKSkKc3Z1aW50MTZfdCBzdmN2dF91MTZfeihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfdTMyX2YxNl9tKSkpCnN2dWludDMyX3Qgc3ZjdnRfdTMyX20oc3Z1aW50MzJfdCwgc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X3UzMl9mMTZfeCkpKQpzdnVpbnQzMl90IHN2Y3Z0X3UzMl94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF91MzJfZjE2X3opKSkKc3Z1aW50MzJfdCBzdmN2dF91MzJfeihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfdTMyX2YzMl9tKSkpCnN2dWludDMyX3Qgc3ZjdnRfdTMyX20oc3Z1aW50MzJfdCwgc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X3UzMl9mMzJfeCkpKQpzdnVpbnQzMl90IHN2Y3Z0X3UzMl94KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF91MzJfZjMyX3opKSkKc3Z1aW50MzJfdCBzdmN2dF91MzJfeihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfdTMyX2Y2NF9tKSkpCnN2dWludDMyX3Qgc3ZjdnRfdTMyX20oc3Z1aW50MzJfdCwgc3Zib29sX3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X3UzMl9mNjRfeCkpKQpzdnVpbnQzMl90IHN2Y3Z0X3UzMl94KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF91MzJfZjY0X3opKSkKc3Z1aW50MzJfdCBzdmN2dF91MzJfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfdTY0X2YxNl9tKSkpCnN2dWludDY0X3Qgc3ZjdnRfdTY0X20oc3Z1aW50NjRfdCwgc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X3U2NF9mMTZfeCkpKQpzdnVpbnQ2NF90IHN2Y3Z0X3U2NF94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF91NjRfZjE2X3opKSkKc3Z1aW50NjRfdCBzdmN2dF91NjRfeihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfdTY0X2YzMl9tKSkpCnN2dWludDY0X3Qgc3ZjdnRfdTY0X20oc3Z1aW50NjRfdCwgc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X3U2NF9mMzJfeCkpKQpzdnVpbnQ2NF90IHN2Y3Z0X3U2NF94KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF91NjRfZjMyX3opKSkKc3Z1aW50NjRfdCBzdmN2dF91NjRfeihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfdTY0X2Y2NF9tKSkpCnN2dWludDY0X3Qgc3ZjdnRfdTY0X20oc3Z1aW50NjRfdCwgc3Zib29sX3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X3U2NF9mNjRfeCkpKQpzdnVpbnQ2NF90IHN2Y3Z0X3U2NF94KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF91NjRfZjY0X3opKSkKc3Z1aW50NjRfdCBzdmN2dF91NjRfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZfbl9mNjRfbSkpKQpzdmZsb2F0NjRfdCBzdmRpdl9tKHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZGl2X25fZjMyX20pKSkKc3ZmbG9hdDMyX3Qgc3ZkaXZfbShzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmRpdl9uX2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2ZGl2X20oc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZfbl9mNjRfeCkpKQpzdmZsb2F0NjRfdCBzdmRpdl94KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZGl2X25fZjMyX3gpKSkKc3ZmbG9hdDMyX3Qgc3ZkaXZfeChzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmRpdl9uX2YxNl94KSkpCnN2ZmxvYXQxNl90IHN2ZGl2X3goc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZfbl9mNjRfeikpKQpzdmZsb2F0NjRfdCBzdmRpdl96KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZGl2X25fZjMyX3opKSkKc3ZmbG9hdDMyX3Qgc3ZkaXZfeihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmRpdl9uX2YxNl96KSkpCnN2ZmxvYXQxNl90IHN2ZGl2X3ooc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZfbl9zMzJfbSkpKQpzdmludDMyX3Qgc3ZkaXZfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZGl2X25fczY0X20pKSkKc3ZpbnQ2NF90IHN2ZGl2X20oc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmRpdl9uX3MzMl94KSkpCnN2aW50MzJfdCBzdmRpdl94KHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZfbl9zNjRfeCkpKQpzdmludDY0X3Qgc3ZkaXZfeChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZGl2X25fczMyX3opKSkKc3ZpbnQzMl90IHN2ZGl2X3ooc3Zib29sX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmRpdl9uX3M2NF96KSkpCnN2aW50NjRfdCBzdmRpdl96KHN2Ym9vbF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZfbl91MzJfbSkpKQpzdnVpbnQzMl90IHN2ZGl2X20oc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZGl2X25fdTY0X20pKSkKc3Z1aW50NjRfdCBzdmRpdl9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmRpdl9uX3UzMl94KSkpCnN2dWludDMyX3Qgc3ZkaXZfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZfbl91NjRfeCkpKQpzdnVpbnQ2NF90IHN2ZGl2X3goc3Zib29sX3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZGl2X25fdTMyX3opKSkKc3Z1aW50MzJfdCBzdmRpdl96KHN2Ym9vbF90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmRpdl9uX3U2NF96KSkpCnN2dWludDY0X3Qgc3ZkaXZfeihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZfZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZkaXZfbShzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZGl2X2YzMl9tKSkpCnN2ZmxvYXQzMl90IHN2ZGl2X20oc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmRpdl9mMTZfbSkpKQpzdmZsb2F0MTZfdCBzdmRpdl9tKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZfZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZkaXZfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZGl2X2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2ZGl2X3goc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmRpdl9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdmRpdl94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZfZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZkaXZfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZGl2X2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2ZGl2X3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmRpdl9mMTZfeikpKQpzdmZsb2F0MTZfdCBzdmRpdl96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZfczMyX20pKSkKc3ZpbnQzMl90IHN2ZGl2X20oc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZGl2X3M2NF9tKSkpCnN2aW50NjRfdCBzdmRpdl9tKHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmRpdl9zMzJfeCkpKQpzdmludDMyX3Qgc3ZkaXZfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZfczY0X3gpKSkKc3ZpbnQ2NF90IHN2ZGl2X3goc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZGl2X3MzMl96KSkpCnN2aW50MzJfdCBzdmRpdl96KHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmRpdl9zNjRfeikpKQpzdmludDY0X3Qgc3ZkaXZfeihzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZfdTMyX20pKSkKc3Z1aW50MzJfdCBzdmRpdl9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZGl2X3U2NF9tKSkpCnN2dWludDY0X3Qgc3ZkaXZfbShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmRpdl91MzJfeCkpKQpzdnVpbnQzMl90IHN2ZGl2X3goc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZfdTY0X3gpKSkKc3Z1aW50NjRfdCBzdmRpdl94KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZGl2X3UzMl96KSkpCnN2dWludDMyX3Qgc3ZkaXZfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmRpdl91NjRfeikpKQpzdnVpbnQ2NF90IHN2ZGl2X3ooc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX25fZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZkaXZyX20oc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX25fZjMyX20pKSkKc3ZmbG9hdDMyX3Qgc3ZkaXZyX20oc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX25fZjE2X20pKSkKc3ZmbG9hdDE2X3Qgc3ZkaXZyX20oc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX25fZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZkaXZyX3goc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX25fZjMyX3gpKSkKc3ZmbG9hdDMyX3Qgc3ZkaXZyX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX25fZjE2X3gpKSkKc3ZmbG9hdDE2X3Qgc3ZkaXZyX3goc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX25fZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZkaXZyX3ooc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX25fZjMyX3opKSkKc3ZmbG9hdDMyX3Qgc3ZkaXZyX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX25fZjE2X3opKSkKc3ZmbG9hdDE2X3Qgc3ZkaXZyX3ooc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX25fczMyX20pKSkKc3ZpbnQzMl90IHN2ZGl2cl9tKHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX25fczY0X20pKSkKc3ZpbnQ2NF90IHN2ZGl2cl9tKHN2Ym9vbF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX25fczMyX3gpKSkKc3ZpbnQzMl90IHN2ZGl2cl94KHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX25fczY0X3gpKSkKc3ZpbnQ2NF90IHN2ZGl2cl94KHN2Ym9vbF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX25fczMyX3opKSkKc3ZpbnQzMl90IHN2ZGl2cl96KHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX25fczY0X3opKSkKc3ZpbnQ2NF90IHN2ZGl2cl96KHN2Ym9vbF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX25fdTMyX20pKSkKc3Z1aW50MzJfdCBzdmRpdnJfbShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX25fdTY0X20pKSkKc3Z1aW50NjRfdCBzdmRpdnJfbShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX25fdTMyX3gpKSkKc3Z1aW50MzJfdCBzdmRpdnJfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX25fdTY0X3gpKSkKc3Z1aW50NjRfdCBzdmRpdnJfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX25fdTMyX3opKSkKc3Z1aW50MzJfdCBzdmRpdnJfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX25fdTY0X3opKSkKc3Z1aW50NjRfdCBzdmRpdnJfeihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX2Y2NF9tKSkpCnN2ZmxvYXQ2NF90IHN2ZGl2cl9tKHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX2YzMl9tKSkpCnN2ZmxvYXQzMl90IHN2ZGl2cl9tKHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2ZGl2cl9tKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX2Y2NF94KSkpCnN2ZmxvYXQ2NF90IHN2ZGl2cl94KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2ZGl2cl94KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX2YxNl94KSkpCnN2ZmxvYXQxNl90IHN2ZGl2cl94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX2Y2NF96KSkpCnN2ZmxvYXQ2NF90IHN2ZGl2cl96KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2ZGl2cl96KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX2YxNl96KSkpCnN2ZmxvYXQxNl90IHN2ZGl2cl96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX3MzMl9tKSkpCnN2aW50MzJfdCBzdmRpdnJfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX3M2NF9tKSkpCnN2aW50NjRfdCBzdmRpdnJfbShzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX3MzMl94KSkpCnN2aW50MzJfdCBzdmRpdnJfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX3M2NF94KSkpCnN2aW50NjRfdCBzdmRpdnJfeChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX3MzMl96KSkpCnN2aW50MzJfdCBzdmRpdnJfeihzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX3M2NF96KSkpCnN2aW50NjRfdCBzdmRpdnJfeihzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX3UzMl9tKSkpCnN2dWludDMyX3Qgc3ZkaXZyX20oc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX3U2NF9tKSkpCnN2dWludDY0X3Qgc3ZkaXZyX20oc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX3UzMl94KSkpCnN2dWludDMyX3Qgc3ZkaXZyX3goc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX3U2NF94KSkpCnN2dWludDY0X3Qgc3ZkaXZyX3goc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX3UzMl96KSkpCnN2dWludDMyX3Qgc3ZkaXZyX3ooc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkaXZyX3U2NF96KSkpCnN2dWludDY0X3Qgc3ZkaXZyX3ooc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zkb3Rfbl9zMzIpKSkKc3ZpbnQzMl90IHN2ZG90KHN2aW50MzJfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmRvdF9uX3M2NCkpKQpzdmludDY0X3Qgc3Zkb3Qoc3ZpbnQ2NF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zkb3Rfbl91MzIpKSkKc3Z1aW50MzJfdCBzdmRvdChzdnVpbnQzMl90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zkb3Rfbl91NjQpKSkKc3Z1aW50NjRfdCBzdmRvdChzdnVpbnQ2NF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmRvdF9zMzIpKSkKc3ZpbnQzMl90IHN2ZG90KHN2aW50MzJfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZG90X3M2NCkpKQpzdmludDY0X3Qgc3Zkb3Qoc3ZpbnQ2NF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmRvdF91MzIpKSkKc3Z1aW50MzJfdCBzdmRvdChzdnVpbnQzMl90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmRvdF91NjQpKSkKc3Z1aW50NjRfdCBzdmRvdChzdnVpbnQ2NF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZG90X2xhbmVfczMyKSkpCnN2aW50MzJfdCBzdmRvdF9sYW5lKHN2aW50MzJfdCwgc3ZpbnQ4X3QsIHN2aW50OF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmRvdF9sYW5lX3M2NCkpKQpzdmludDY0X3Qgc3Zkb3RfbGFuZShzdmludDY0X3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmRvdF9sYW5lX3UzMikpKQpzdnVpbnQzMl90IHN2ZG90X2xhbmUoc3Z1aW50MzJfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZG90X2xhbmVfdTY0KSkpCnN2dWludDY0X3Qgc3Zkb3RfbGFuZShzdnVpbnQ2NF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9uX3U4KSkpCnN2dWludDhfdCBzdmR1cF91OCh1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwX25fdTMyKSkpCnN2dWludDMyX3Qgc3ZkdXBfdTMyKHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwX25fdTY0KSkpCnN2dWludDY0X3Qgc3ZkdXBfdTY0KHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwX25fdTE2KSkpCnN2dWludDE2X3Qgc3ZkdXBfdTE2KHVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwX25fczgpKSkKc3ZpbnQ4X3Qgc3ZkdXBfczgoaW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwX25fZjY0KSkpCnN2ZmxvYXQ2NF90IHN2ZHVwX2Y2NChmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBfbl9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3ZkdXBfZjMyKGZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9uX2YxNikpKQpzdmZsb2F0MTZfdCBzdmR1cF9mMTYoZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwX25fczMyKSkpCnN2aW50MzJfdCBzdmR1cF9zMzIoaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9uX3M2NCkpKQpzdmludDY0X3Qgc3ZkdXBfczY0KGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBfbl9zMTYpKSkKc3ZpbnQxNl90IHN2ZHVwX3MxNihpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwX25fdThfbSkpKQpzdnVpbnQ4X3Qgc3ZkdXBfdThfbShzdnVpbnQ4X3QsIHN2Ym9vbF90LCB1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwX25fdTMyX20pKSkKc3Z1aW50MzJfdCBzdmR1cF91MzJfbShzdnVpbnQzMl90LCBzdmJvb2xfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBfbl91NjRfbSkpKQpzdnVpbnQ2NF90IHN2ZHVwX3U2NF9tKHN2dWludDY0X3QsIHN2Ym9vbF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9uX3UxNl9tKSkpCnN2dWludDE2X3Qgc3ZkdXBfdTE2X20oc3Z1aW50MTZfdCwgc3Zib29sX3QsIHVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwX25fczhfbSkpKQpzdmludDhfdCBzdmR1cF9zOF9tKHN2aW50OF90LCBzdmJvb2xfdCwgaW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwX25fZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZkdXBfZjY0X20oc3ZmbG9hdDY0X3QsIHN2Ym9vbF90LCBmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBfbl9mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdmR1cF9mMzJfbShzdmZsb2F0MzJfdCwgc3Zib29sX3QsIGZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9uX2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2ZHVwX2YxNl9tKHN2ZmxvYXQxNl90LCBzdmJvb2xfdCwgZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwX25fczMyX20pKSkKc3ZpbnQzMl90IHN2ZHVwX3MzMl9tKHN2aW50MzJfdCwgc3Zib29sX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBfbl9zNjRfbSkpKQpzdmludDY0X3Qgc3ZkdXBfczY0X20oc3ZpbnQ2NF90LCBzdmJvb2xfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9uX3MxNl9tKSkpCnN2aW50MTZfdCBzdmR1cF9zMTZfbShzdmludDE2X3QsIHN2Ym9vbF90LCBpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwX25fYjgpKSkKc3Zib29sX3Qgc3ZkdXBfYjgoYm9vbCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9uX2IzMikpKQpzdmJvb2xfdCBzdmR1cF9iMzIoYm9vbCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9uX2I2NCkpKQpzdmJvb2xfdCBzdmR1cF9iNjQoYm9vbCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9uX2IxNikpKQpzdmJvb2xfdCBzdmR1cF9iMTYoYm9vbCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9uX3U4X3gpKSkKc3Z1aW50OF90IHN2ZHVwX3U4X3goc3Zib29sX3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBfbl91MzJfeCkpKQpzdnVpbnQzMl90IHN2ZHVwX3UzMl94KHN2Ym9vbF90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9uX3U2NF94KSkpCnN2dWludDY0X3Qgc3ZkdXBfdTY0X3goc3Zib29sX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwX25fdTE2X3gpKSkKc3Z1aW50MTZfdCBzdmR1cF91MTZfeChzdmJvb2xfdCwgdWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBfbl9zOF94KSkpCnN2aW50OF90IHN2ZHVwX3M4X3goc3Zib29sX3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9uX2Y2NF94KSkpCnN2ZmxvYXQ2NF90IHN2ZHVwX2Y2NF94KHN2Ym9vbF90LCBmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBfbl9mMzJfeCkpKQpzdmZsb2F0MzJfdCBzdmR1cF9mMzJfeChzdmJvb2xfdCwgZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwX25fZjE2X3gpKSkKc3ZmbG9hdDE2X3Qgc3ZkdXBfZjE2X3goc3Zib29sX3QsIGZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9uX3MzMl94KSkpCnN2aW50MzJfdCBzdmR1cF9zMzJfeChzdmJvb2xfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9uX3M2NF94KSkpCnN2aW50NjRfdCBzdmR1cF9zNjRfeChzdmJvb2xfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9uX3MxNl94KSkpCnN2aW50MTZfdCBzdmR1cF9zMTZfeChzdmJvb2xfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9uX3U4X3opKSkKc3Z1aW50OF90IHN2ZHVwX3U4X3ooc3Zib29sX3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBfbl91MzJfeikpKQpzdnVpbnQzMl90IHN2ZHVwX3UzMl96KHN2Ym9vbF90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9uX3U2NF96KSkpCnN2dWludDY0X3Qgc3ZkdXBfdTY0X3ooc3Zib29sX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwX25fdTE2X3opKSkKc3Z1aW50MTZfdCBzdmR1cF91MTZfeihzdmJvb2xfdCwgdWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBfbl9zOF96KSkpCnN2aW50OF90IHN2ZHVwX3M4X3ooc3Zib29sX3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9uX2Y2NF96KSkpCnN2ZmxvYXQ2NF90IHN2ZHVwX2Y2NF96KHN2Ym9vbF90LCBmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBfbl9mMzJfeikpKQpzdmZsb2F0MzJfdCBzdmR1cF9mMzJfeihzdmJvb2xfdCwgZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwX25fZjE2X3opKSkKc3ZmbG9hdDE2X3Qgc3ZkdXBfZjE2X3ooc3Zib29sX3QsIGZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9uX3MzMl96KSkpCnN2aW50MzJfdCBzdmR1cF9zMzJfeihzdmJvb2xfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9uX3M2NF96KSkpCnN2aW50NjRfdCBzdmR1cF9zNjRfeihzdmJvb2xfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9uX3MxNl96KSkpCnN2aW50MTZfdCBzdmR1cF9zMTZfeihzdmJvb2xfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9sYW5lX3U4KSkpCnN2dWludDhfdCBzdmR1cF9sYW5lKHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9sYW5lX3UzMikpKQpzdnVpbnQzMl90IHN2ZHVwX2xhbmUoc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBfbGFuZV91NjQpKSkKc3Z1aW50NjRfdCBzdmR1cF9sYW5lKHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwX2xhbmVfdTE2KSkpCnN2dWludDE2X3Qgc3ZkdXBfbGFuZShzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9sYW5lX3M4KSkpCnN2aW50OF90IHN2ZHVwX2xhbmUoc3ZpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBfbGFuZV9mNjQpKSkKc3ZmbG9hdDY0X3Qgc3ZkdXBfbGFuZShzdmZsb2F0NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBfbGFuZV9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3ZkdXBfbGFuZShzdmZsb2F0MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBfbGFuZV9mMTYpKSkKc3ZmbG9hdDE2X3Qgc3ZkdXBfbGFuZShzdmZsb2F0MTZfdCwgdWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBfbGFuZV9zMzIpKSkKc3ZpbnQzMl90IHN2ZHVwX2xhbmUoc3ZpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9sYW5lX3M2NCkpKQpzdmludDY0X3Qgc3ZkdXBfbGFuZShzdmludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwX2xhbmVfczE2KSkpCnN2aW50MTZfdCBzdmR1cF9sYW5lKHN2aW50MTZfdCwgdWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBxX25fdTE2KSkpCnN2dWludDE2X3Qgc3ZkdXBxX3UxNih1aW50MTZfdCwgdWludDE2X3QsIHVpbnQxNl90LCB1aW50MTZfdCwgdWludDE2X3QsIHVpbnQxNl90LCB1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBxX25fZjE2KSkpCnN2ZmxvYXQxNl90IHN2ZHVwcV9mMTYoZmxvYXQxNl90LCBmbG9hdDE2X3QsIGZsb2F0MTZfdCwgZmxvYXQxNl90LCBmbG9hdDE2X3QsIGZsb2F0MTZfdCwgZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBxX25fczE2KSkpCnN2aW50MTZfdCBzdmR1cHFfczE2KGludDE2X3QsIGludDE2X3QsIGludDE2X3QsIGludDE2X3QsIGludDE2X3QsIGludDE2X3QsIGludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBxX25fdTMyKSkpCnN2dWludDMyX3Qgc3ZkdXBxX3UzMih1aW50MzJfdCwgdWludDMyX3QsIHVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cHFfbl9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3ZkdXBxX2YzMihmbG9hdDMyX3QsIGZsb2F0MzJfdCwgZmxvYXQzMl90LCBmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBxX25fczMyKSkpCnN2aW50MzJfdCBzdmR1cHFfczMyKGludDMyX3QsIGludDMyX3QsIGludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBxX25fdTY0KSkpCnN2dWludDY0X3Qgc3ZkdXBxX3U2NCh1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBxX25fZjY0KSkpCnN2ZmxvYXQ2NF90IHN2ZHVwcV9mNjQoZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBxX25fczY0KSkpCnN2aW50NjRfdCBzdmR1cHFfczY0KGludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBxX25fdTgpKSkKc3Z1aW50OF90IHN2ZHVwcV91OCh1aW50OF90LCB1aW50OF90LCB1aW50OF90LCB1aW50OF90LCB1aW50OF90LCB1aW50OF90LCB1aW50OF90LCB1aW50OF90LCB1aW50OF90LCB1aW50OF90LCB1aW50OF90LCB1aW50OF90LCB1aW50OF90LCB1aW50OF90LCB1aW50OF90LCB1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwcV9uX3M4KSkpCnN2aW50OF90IHN2ZHVwcV9zOChpbnQ4X3QsIGludDhfdCwgaW50OF90LCBpbnQ4X3QsIGludDhfdCwgaW50OF90LCBpbnQ4X3QsIGludDhfdCwgaW50OF90LCBpbnQ4X3QsIGludDhfdCwgaW50OF90LCBpbnQ4X3QsIGludDhfdCwgaW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBxX25fYjE2KSkpCnN2Ym9vbF90IHN2ZHVwcV9iMTYoYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cHFfbl9iMzIpKSkKc3Zib29sX3Qgc3ZkdXBxX2IzMihib29sLCBib29sLCBib29sLCBib29sKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwcV9uX2I2NCkpKQpzdmJvb2xfdCBzdmR1cHFfYjY0KGJvb2wsIGJvb2wpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBxX25fYjgpKSkKc3Zib29sX3Qgc3ZkdXBxX2I4KGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBxX2xhbmVfdTgpKSkKc3Z1aW50OF90IHN2ZHVwcV9sYW5lKHN2dWludDhfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBxX2xhbmVfdTMyKSkpCnN2dWludDMyX3Qgc3ZkdXBxX2xhbmUoc3Z1aW50MzJfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBxX2xhbmVfdTY0KSkpCnN2dWludDY0X3Qgc3ZkdXBxX2xhbmUoc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBxX2xhbmVfdTE2KSkpCnN2dWludDE2X3Qgc3ZkdXBxX2xhbmUoc3Z1aW50MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBxX2xhbmVfczgpKSkKc3ZpbnQ4X3Qgc3ZkdXBxX2xhbmUoc3ZpbnQ4X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwcV9sYW5lX2Y2NCkpKQpzdmZsb2F0NjRfdCBzdmR1cHFfbGFuZShzdmZsb2F0NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBxX2xhbmVfZjMyKSkpCnN2ZmxvYXQzMl90IHN2ZHVwcV9sYW5lKHN2ZmxvYXQzMl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cHFfbGFuZV9mMTYpKSkKc3ZmbG9hdDE2X3Qgc3ZkdXBxX2xhbmUoc3ZmbG9hdDE2X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwcV9sYW5lX3MzMikpKQpzdmludDMyX3Qgc3ZkdXBxX2xhbmUoc3ZpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cHFfbGFuZV9zNjQpKSkKc3ZpbnQ2NF90IHN2ZHVwcV9sYW5lKHN2aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBxX2xhbmVfczE2KSkpCnN2aW50MTZfdCBzdmR1cHFfbGFuZShzdmludDE2X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9yX2JfeikpKQpzdmJvb2xfdCBzdmVvcl96KHN2Ym9vbF90LCBzdmJvb2xfdCwgc3Zib29sX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3Jfbl91OF9tKSkpCnN2dWludDhfdCBzdmVvcl9tKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3Jfbl91MzJfbSkpKQpzdnVpbnQzMl90IHN2ZW9yX20oc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9yX25fdTY0X20pKSkKc3Z1aW50NjRfdCBzdmVvcl9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcl9uX3UxNl9tKSkpCnN2dWludDE2X3Qgc3Zlb3JfbShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3Jfbl9zOF9tKSkpCnN2aW50OF90IHN2ZW9yX20oc3Zib29sX3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3Jfbl9zMzJfbSkpKQpzdmludDMyX3Qgc3Zlb3JfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9yX25fczY0X20pKSkKc3ZpbnQ2NF90IHN2ZW9yX20oc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcl9uX3MxNl9tKSkpCnN2aW50MTZfdCBzdmVvcl9tKHN2Ym9vbF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3Jfbl91OF94KSkpCnN2dWludDhfdCBzdmVvcl94KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3Jfbl91MzJfeCkpKQpzdnVpbnQzMl90IHN2ZW9yX3goc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9yX25fdTY0X3gpKSkKc3Z1aW50NjRfdCBzdmVvcl94KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcl9uX3UxNl94KSkpCnN2dWludDE2X3Qgc3Zlb3JfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3Jfbl9zOF94KSkpCnN2aW50OF90IHN2ZW9yX3goc3Zib29sX3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3Jfbl9zMzJfeCkpKQpzdmludDMyX3Qgc3Zlb3JfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9yX25fczY0X3gpKSkKc3ZpbnQ2NF90IHN2ZW9yX3goc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcl9uX3MxNl94KSkpCnN2aW50MTZfdCBzdmVvcl94KHN2Ym9vbF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3Jfbl91OF96KSkpCnN2dWludDhfdCBzdmVvcl96KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3Jfbl91MzJfeikpKQpzdnVpbnQzMl90IHN2ZW9yX3ooc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9yX25fdTY0X3opKSkKc3Z1aW50NjRfdCBzdmVvcl96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcl9uX3UxNl96KSkpCnN2dWludDE2X3Qgc3Zlb3JfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3Jfbl9zOF96KSkpCnN2aW50OF90IHN2ZW9yX3ooc3Zib29sX3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3Jfbl9zMzJfeikpKQpzdmludDMyX3Qgc3Zlb3JfeihzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9yX25fczY0X3opKSkKc3ZpbnQ2NF90IHN2ZW9yX3ooc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcl9uX3MxNl96KSkpCnN2aW50MTZfdCBzdmVvcl96KHN2Ym9vbF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3JfdThfbSkpKQpzdnVpbnQ4X3Qgc3Zlb3JfbShzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3JfdTMyX20pKSkKc3Z1aW50MzJfdCBzdmVvcl9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9yX3U2NF9tKSkpCnN2dWludDY0X3Qgc3Zlb3JfbShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcl91MTZfbSkpKQpzdnVpbnQxNl90IHN2ZW9yX20oc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3JfczhfbSkpKQpzdmludDhfdCBzdmVvcl9tKHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3JfczMyX20pKSkKc3ZpbnQzMl90IHN2ZW9yX20oc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9yX3M2NF9tKSkpCnN2aW50NjRfdCBzdmVvcl9tKHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcl9zMTZfbSkpKQpzdmludDE2X3Qgc3Zlb3JfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3JfdThfeCkpKQpzdnVpbnQ4X3Qgc3Zlb3JfeChzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3JfdTMyX3gpKSkKc3Z1aW50MzJfdCBzdmVvcl94KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9yX3U2NF94KSkpCnN2dWludDY0X3Qgc3Zlb3JfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcl91MTZfeCkpKQpzdnVpbnQxNl90IHN2ZW9yX3goc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3JfczhfeCkpKQpzdmludDhfdCBzdmVvcl94KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3JfczMyX3gpKSkKc3ZpbnQzMl90IHN2ZW9yX3goc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9yX3M2NF94KSkpCnN2aW50NjRfdCBzdmVvcl94KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcl9zMTZfeCkpKQpzdmludDE2X3Qgc3Zlb3JfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3JfdThfeikpKQpzdnVpbnQ4X3Qgc3Zlb3JfeihzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3JfdTMyX3opKSkKc3Z1aW50MzJfdCBzdmVvcl96KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9yX3U2NF96KSkpCnN2dWludDY0X3Qgc3Zlb3JfeihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcl91MTZfeikpKQpzdnVpbnQxNl90IHN2ZW9yX3ooc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3JfczhfeikpKQpzdmludDhfdCBzdmVvcl96KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3JfczMyX3opKSkKc3ZpbnQzMl90IHN2ZW9yX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9yX3M2NF96KSkpCnN2aW50NjRfdCBzdmVvcl96KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcl9zMTZfeikpKQpzdmludDE2X3Qgc3Zlb3JfeihzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3J2X3U4KSkpCnVpbnQ4X3Qgc3Zlb3J2KHN2Ym9vbF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3J2X3UzMikpKQp1aW50MzJfdCBzdmVvcnYoc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3J2X3U2NCkpKQp1aW50NjRfdCBzdmVvcnYoc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3J2X3UxNikpKQp1aW50MTZfdCBzdmVvcnYoc3Zib29sX3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3J2X3M4KSkpCmludDhfdCBzdmVvcnYoc3Zib29sX3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9ydl9zMzIpKSkKaW50MzJfdCBzdmVvcnYoc3Zib29sX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcnZfczY0KSkpCmludDY0X3Qgc3Zlb3J2KHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3J2X3MxNikpKQppbnQxNl90IHN2ZW9ydihzdmJvb2xfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZXhwYV9mNjQpKSkKc3ZmbG9hdDY0X3Qgc3ZleHBhKHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZleHBhX2YzMikpKQpzdmZsb2F0MzJfdCBzdmV4cGEoc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmV4cGFfZjE2KSkpCnN2ZmxvYXQxNl90IHN2ZXhwYShzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZXh0X3U4KSkpCnN2dWludDhfdCBzdmV4dChzdnVpbnQ4X3QsIHN2dWludDhfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZleHRfdTMyKSkpCnN2dWludDMyX3Qgc3ZleHQoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZleHRfdTY0KSkpCnN2dWludDY0X3Qgc3ZleHQoc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZleHRfdTE2KSkpCnN2dWludDE2X3Qgc3ZleHQoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZleHRfczgpKSkKc3ZpbnQ4X3Qgc3ZleHQoc3ZpbnQ4X3QsIHN2aW50OF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmV4dF9mNjQpKSkKc3ZmbG9hdDY0X3Qgc3ZleHQoc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmV4dF9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3ZleHQoc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmV4dF9mMTYpKSkKc3ZmbG9hdDE2X3Qgc3ZleHQoc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmV4dF9zMzIpKSkKc3ZpbnQzMl90IHN2ZXh0KHN2aW50MzJfdCwgc3ZpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmV4dF9zNjQpKSkKc3ZpbnQ2NF90IHN2ZXh0KHN2aW50NjRfdCwgc3ZpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmV4dF9zMTYpKSkKc3ZpbnQxNl90IHN2ZXh0KHN2aW50MTZfdCwgc3ZpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmV4dGJfczMyX20pKSkKc3ZpbnQzMl90IHN2ZXh0Yl9tKHN2aW50MzJfdCwgc3Zib29sX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmV4dGJfczY0X20pKSkKc3ZpbnQ2NF90IHN2ZXh0Yl9tKHN2aW50NjRfdCwgc3Zib29sX3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmV4dGJfczE2X20pKSkKc3ZpbnQxNl90IHN2ZXh0Yl9tKHN2aW50MTZfdCwgc3Zib29sX3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmV4dGJfczMyX3gpKSkKc3ZpbnQzMl90IHN2ZXh0Yl94KHN2Ym9vbF90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZleHRiX3M2NF94KSkpCnN2aW50NjRfdCBzdmV4dGJfeChzdmJvb2xfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZXh0Yl9zMTZfeCkpKQpzdmludDE2X3Qgc3ZleHRiX3goc3Zib29sX3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmV4dGJfczMyX3opKSkKc3ZpbnQzMl90IHN2ZXh0Yl96KHN2Ym9vbF90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZleHRiX3M2NF96KSkpCnN2aW50NjRfdCBzdmV4dGJfeihzdmJvb2xfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZXh0Yl9zMTZfeikpKQpzdmludDE2X3Qgc3ZleHRiX3ooc3Zib29sX3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmV4dGJfdTMyX20pKSkKc3Z1aW50MzJfdCBzdmV4dGJfbShzdnVpbnQzMl90LCBzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmV4dGJfdTY0X20pKSkKc3Z1aW50NjRfdCBzdmV4dGJfbShzdnVpbnQ2NF90LCBzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmV4dGJfdTE2X20pKSkKc3Z1aW50MTZfdCBzdmV4dGJfbShzdnVpbnQxNl90LCBzdmJvb2xfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmV4dGJfdTMyX3gpKSkKc3Z1aW50MzJfdCBzdmV4dGJfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmV4dGJfdTY0X3gpKSkKc3Z1aW50NjRfdCBzdmV4dGJfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmV4dGJfdTE2X3gpKSkKc3Z1aW50MTZfdCBzdmV4dGJfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmV4dGJfdTMyX3opKSkKc3Z1aW50MzJfdCBzdmV4dGJfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmV4dGJfdTY0X3opKSkKc3Z1aW50NjRfdCBzdmV4dGJfeihzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmV4dGJfdTE2X3opKSkKc3Z1aW50MTZfdCBzdmV4dGJfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmV4dGhfczMyX20pKSkKc3ZpbnQzMl90IHN2ZXh0aF9tKHN2aW50MzJfdCwgc3Zib29sX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmV4dGhfczY0X20pKSkKc3ZpbnQ2NF90IHN2ZXh0aF9tKHN2aW50NjRfdCwgc3Zib29sX3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmV4dGhfczMyX3gpKSkKc3ZpbnQzMl90IHN2ZXh0aF94KHN2Ym9vbF90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZleHRoX3M2NF94KSkpCnN2aW50NjRfdCBzdmV4dGhfeChzdmJvb2xfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZXh0aF9zMzJfeikpKQpzdmludDMyX3Qgc3ZleHRoX3ooc3Zib29sX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmV4dGhfczY0X3opKSkKc3ZpbnQ2NF90IHN2ZXh0aF96KHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZleHRoX3UzMl9tKSkpCnN2dWludDMyX3Qgc3ZleHRoX20oc3Z1aW50MzJfdCwgc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZleHRoX3U2NF9tKSkpCnN2dWludDY0X3Qgc3ZleHRoX20oc3Z1aW50NjRfdCwgc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZleHRoX3UzMl94KSkpCnN2dWludDMyX3Qgc3ZleHRoX3goc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZleHRoX3U2NF94KSkpCnN2dWludDY0X3Qgc3ZleHRoX3goc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZleHRoX3UzMl96KSkpCnN2dWludDMyX3Qgc3ZleHRoX3ooc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZleHRoX3U2NF96KSkpCnN2dWludDY0X3Qgc3ZleHRoX3ooc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZleHR3X3M2NF9tKSkpCnN2aW50NjRfdCBzdmV4dHdfbShzdmludDY0X3QsIHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZleHR3X3M2NF94KSkpCnN2aW50NjRfdCBzdmV4dHdfeChzdmJvb2xfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZXh0d19zNjRfeikpKQpzdmludDY0X3Qgc3ZleHR3X3ooc3Zib29sX3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmV4dHdfdTY0X20pKSkKc3Z1aW50NjRfdCBzdmV4dHdfbShzdnVpbnQ2NF90LCBzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmV4dHdfdTY0X3gpKSkKc3Z1aW50NjRfdCBzdmV4dHdfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmV4dHdfdTY0X3opKSkKc3Z1aW50NjRfdCBzdmV4dHdfeihzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmdldDJfdTgpKSkKc3Z1aW50OF90IHN2Z2V0MihzdnVpbnQ4eDJfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZnZXQyX3UzMikpKQpzdnVpbnQzMl90IHN2Z2V0MihzdnVpbnQzMngyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Z2V0Ml91NjQpKSkKc3Z1aW50NjRfdCBzdmdldDIoc3Z1aW50NjR4Ml90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmdldDJfdTE2KSkpCnN2dWludDE2X3Qgc3ZnZXQyKHN2dWludDE2eDJfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZnZXQyX3M4KSkpCnN2aW50OF90IHN2Z2V0MihzdmludDh4Ml90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmdldDJfZjY0KSkpCnN2ZmxvYXQ2NF90IHN2Z2V0MihzdmZsb2F0NjR4Ml90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmdldDJfZjMyKSkpCnN2ZmxvYXQzMl90IHN2Z2V0MihzdmZsb2F0MzJ4Ml90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmdldDJfZjE2KSkpCnN2ZmxvYXQxNl90IHN2Z2V0MihzdmZsb2F0MTZ4Ml90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmdldDJfczMyKSkpCnN2aW50MzJfdCBzdmdldDIoc3ZpbnQzMngyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Z2V0Ml9zNjQpKSkKc3ZpbnQ2NF90IHN2Z2V0MihzdmludDY0eDJfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZnZXQyX3MxNikpKQpzdmludDE2X3Qgc3ZnZXQyKHN2aW50MTZ4Ml90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmdldDNfdTgpKSkKc3Z1aW50OF90IHN2Z2V0MyhzdnVpbnQ4eDNfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZnZXQzX3UzMikpKQpzdnVpbnQzMl90IHN2Z2V0MyhzdnVpbnQzMngzX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Z2V0M191NjQpKSkKc3Z1aW50NjRfdCBzdmdldDMoc3Z1aW50NjR4M190LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmdldDNfdTE2KSkpCnN2dWludDE2X3Qgc3ZnZXQzKHN2dWludDE2eDNfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZnZXQzX3M4KSkpCnN2aW50OF90IHN2Z2V0MyhzdmludDh4M190LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmdldDNfZjY0KSkpCnN2ZmxvYXQ2NF90IHN2Z2V0MyhzdmZsb2F0NjR4M190LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmdldDNfZjMyKSkpCnN2ZmxvYXQzMl90IHN2Z2V0MyhzdmZsb2F0MzJ4M190LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmdldDNfZjE2KSkpCnN2ZmxvYXQxNl90IHN2Z2V0MyhzdmZsb2F0MTZ4M190LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmdldDNfczMyKSkpCnN2aW50MzJfdCBzdmdldDMoc3ZpbnQzMngzX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Z2V0M19zNjQpKSkKc3ZpbnQ2NF90IHN2Z2V0MyhzdmludDY0eDNfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZnZXQzX3MxNikpKQpzdmludDE2X3Qgc3ZnZXQzKHN2aW50MTZ4M190LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmdldDRfdTgpKSkKc3Z1aW50OF90IHN2Z2V0NChzdnVpbnQ4eDRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZnZXQ0X3UzMikpKQpzdnVpbnQzMl90IHN2Z2V0NChzdnVpbnQzMng0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Z2V0NF91NjQpKSkKc3Z1aW50NjRfdCBzdmdldDQoc3Z1aW50NjR4NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmdldDRfdTE2KSkpCnN2dWludDE2X3Qgc3ZnZXQ0KHN2dWludDE2eDRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZnZXQ0X3M4KSkpCnN2aW50OF90IHN2Z2V0NChzdmludDh4NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmdldDRfZjY0KSkpCnN2ZmxvYXQ2NF90IHN2Z2V0NChzdmZsb2F0NjR4NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmdldDRfZjMyKSkpCnN2ZmxvYXQzMl90IHN2Z2V0NChzdmZsb2F0MzJ4NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmdldDRfZjE2KSkpCnN2ZmxvYXQxNl90IHN2Z2V0NChzdmZsb2F0MTZ4NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmdldDRfczMyKSkpCnN2aW50MzJfdCBzdmdldDQoc3ZpbnQzMng0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Z2V0NF9zNjQpKSkKc3ZpbnQ2NF90IHN2Z2V0NChzdmludDY0eDRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZnZXQ0X3MxNikpKQpzdmludDE2X3Qgc3ZnZXQ0KHN2aW50MTZ4NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmluc3Jfbl91OCkpKQpzdnVpbnQ4X3Qgc3ZpbnNyKHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmluc3Jfbl91MzIpKSkKc3Z1aW50MzJfdCBzdmluc3Ioc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZpbnNyX25fdTY0KSkpCnN2dWludDY0X3Qgc3ZpbnNyKHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aW5zcl9uX3UxNikpKQpzdnVpbnQxNl90IHN2aW5zcihzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmluc3Jfbl9zOCkpKQpzdmludDhfdCBzdmluc3Ioc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmluc3Jfbl9mNjQpKSkKc3ZmbG9hdDY0X3Qgc3ZpbnNyKHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZpbnNyX25fZjMyKSkpCnN2ZmxvYXQzMl90IHN2aW5zcihzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aW5zcl9uX2YxNikpKQpzdmZsb2F0MTZfdCBzdmluc3Ioc3ZmbG9hdDE2X3QsIGZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmluc3Jfbl9zMzIpKSkKc3ZpbnQzMl90IHN2aW5zcihzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZpbnNyX25fczY0KSkpCnN2aW50NjRfdCBzdmluc3Ioc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aW5zcl9uX3MxNikpKQpzdmludDE2X3Qgc3ZpbnNyKHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxhc3RhX3U4KSkpCnVpbnQ4X3Qgc3ZsYXN0YShzdmJvb2xfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGFzdGFfdTMyKSkpCnVpbnQzMl90IHN2bGFzdGEoc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsYXN0YV91NjQpKSkKdWludDY0X3Qgc3ZsYXN0YShzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxhc3RhX3UxNikpKQp1aW50MTZfdCBzdmxhc3RhKHN2Ym9vbF90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGFzdGFfczgpKSkKaW50OF90IHN2bGFzdGEoc3Zib29sX3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGFzdGFfZjY0KSkpCmZsb2F0NjRfdCBzdmxhc3RhKHN2Ym9vbF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxhc3RhX2YzMikpKQpmbG9hdDMyX3Qgc3ZsYXN0YShzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsYXN0YV9mMTYpKSkKZmxvYXQxNl90IHN2bGFzdGEoc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGFzdGFfczMyKSkpCmludDMyX3Qgc3ZsYXN0YShzdmJvb2xfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGFzdGFfczY0KSkpCmludDY0X3Qgc3ZsYXN0YShzdmJvb2xfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGFzdGFfczE2KSkpCmludDE2X3Qgc3ZsYXN0YShzdmJvb2xfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGFzdGJfdTgpKSkKdWludDhfdCBzdmxhc3RiKHN2Ym9vbF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsYXN0Yl91MzIpKSkKdWludDMyX3Qgc3ZsYXN0YihzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxhc3RiX3U2NCkpKQp1aW50NjRfdCBzdmxhc3RiKHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGFzdGJfdTE2KSkpCnVpbnQxNl90IHN2bGFzdGIoc3Zib29sX3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsYXN0Yl9zOCkpKQppbnQ4X3Qgc3ZsYXN0YihzdmJvb2xfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsYXN0Yl9mNjQpKSkKZmxvYXQ2NF90IHN2bGFzdGIoc3Zib29sX3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGFzdGJfZjMyKSkpCmZsb2F0MzJfdCBzdmxhc3RiKHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxhc3RiX2YxNikpKQpmbG9hdDE2X3Qgc3ZsYXN0YihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsYXN0Yl9zMzIpKSkKaW50MzJfdCBzdmxhc3RiKHN2Ym9vbF90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsYXN0Yl9zNjQpKSkKaW50NjRfdCBzdmxhc3RiKHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsYXN0Yl9zMTYpKSkKaW50MTZfdCBzdmxhc3RiKHN2Ym9vbF90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFfdTgpKSkKc3Z1aW50OF90IHN2bGQxKHN2Ym9vbF90LCB1aW50OF90IGNvbnN0ICopOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZDEoc3Zib29sX3QsIHVpbnQzMl90IGNvbnN0ICopOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZDEoc3Zib29sX3QsIHVpbnQ2NF90IGNvbnN0ICopOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFfdTE2KSkpCnN2dWludDE2X3Qgc3ZsZDEoc3Zib29sX3QsIHVpbnQxNl90IGNvbnN0ICopOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFfczgpKSkKc3ZpbnQ4X3Qgc3ZsZDEoc3Zib29sX3QsIGludDhfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX2Y2NCkpKQpzdmZsb2F0NjRfdCBzdmxkMShzdmJvb2xfdCwgZmxvYXQ2NF90IGNvbnN0ICopOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFfZjMyKSkpCnN2ZmxvYXQzMl90IHN2bGQxKHN2Ym9vbF90LCBmbG9hdDMyX3QgY29uc3QgKik7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMV9mMTYpKSkKc3ZmbG9hdDE2X3Qgc3ZsZDEoc3Zib29sX3QsIGZsb2F0MTZfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX3MzMikpKQpzdmludDMyX3Qgc3ZsZDEoc3Zib29sX3QsIGludDMyX3QgY29uc3QgKik7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMV9zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxKHN2Ym9vbF90LCBpbnQ2NF90IGNvbnN0ICopOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFfczE2KSkpCnN2aW50MTZfdCBzdmxkMShzdmJvb2xfdCwgaW50MTZfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX2dhdGhlcl91MzJiYXNlX2luZGV4X3UzMikpKQpzdnVpbnQzMl90IHN2bGQxX2dhdGhlcl9pbmRleF91MzIoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFfZ2F0aGVyX3U2NGJhc2VfaW5kZXhfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZDFfZ2F0aGVyX2luZGV4X3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMV9nYXRoZXJfdTY0YmFzZV9pbmRleF9mNjQpKSkKc3ZmbG9hdDY0X3Qgc3ZsZDFfZ2F0aGVyX2luZGV4X2Y2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMV9nYXRoZXJfdTMyYmFzZV9pbmRleF9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3ZsZDFfZ2F0aGVyX2luZGV4X2YzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMV9nYXRoZXJfdTMyYmFzZV9pbmRleF9zMzIpKSkKc3ZpbnQzMl90IHN2bGQxX2dhdGhlcl9pbmRleF9zMzIoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFfZ2F0aGVyX3U2NGJhc2VfaW5kZXhfczY0KSkpCnN2aW50NjRfdCBzdmxkMV9nYXRoZXJfaW5kZXhfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX2dhdGhlcl91MzJiYXNlX29mZnNldF91MzIpKSkKc3Z1aW50MzJfdCBzdmxkMV9nYXRoZXJfb2Zmc2V0X3UzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMV9nYXRoZXJfdTY0YmFzZV9vZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZDFfZ2F0aGVyX29mZnNldF91NjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFfZ2F0aGVyX3U2NGJhc2Vfb2Zmc2V0X2Y2NCkpKQpzdmZsb2F0NjRfdCBzdmxkMV9nYXRoZXJfb2Zmc2V0X2Y2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMV9nYXRoZXJfdTMyYmFzZV9vZmZzZXRfZjMyKSkpCnN2ZmxvYXQzMl90IHN2bGQxX2dhdGhlcl9vZmZzZXRfZjMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX2dhdGhlcl91MzJiYXNlX29mZnNldF9zMzIpKSkKc3ZpbnQzMl90IHN2bGQxX2dhdGhlcl9vZmZzZXRfczMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX2dhdGhlcl91NjRiYXNlX29mZnNldF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxX2dhdGhlcl9vZmZzZXRfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX2dhdGhlcl91MzJiYXNlX3UzMikpKQpzdnVpbnQzMl90IHN2bGQxX2dhdGhlcl91MzIoc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFfZ2F0aGVyX3U2NGJhc2VfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZDFfZ2F0aGVyX3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMV9nYXRoZXJfdTY0YmFzZV9mNjQpKSkKc3ZmbG9hdDY0X3Qgc3ZsZDFfZ2F0aGVyX2Y2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMV9nYXRoZXJfdTMyYmFzZV9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3ZsZDFfZ2F0aGVyX2YzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMV9nYXRoZXJfdTMyYmFzZV9zMzIpKSkKc3ZpbnQzMl90IHN2bGQxX2dhdGhlcl9zMzIoc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFfZ2F0aGVyX3U2NGJhc2VfczY0KSkpCnN2aW50NjRfdCBzdmxkMV9nYXRoZXJfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX2dhdGhlcl9zMzJpbmRleF91MzIpKSkKc3Z1aW50MzJfdCBzdmxkMV9nYXRoZXJfaW5kZXgoc3Zib29sX3QsIHVpbnQzMl90IGNvbnN0ICosIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMV9nYXRoZXJfczMyaW5kZXhfZjMyKSkpCnN2ZmxvYXQzMl90IHN2bGQxX2dhdGhlcl9pbmRleChzdmJvb2xfdCwgZmxvYXQzMl90IGNvbnN0ICosIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMV9nYXRoZXJfczMyaW5kZXhfczMyKSkpCnN2aW50MzJfdCBzdmxkMV9nYXRoZXJfaW5kZXgoc3Zib29sX3QsIGludDMyX3QgY29uc3QgKiwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX2dhdGhlcl91MzJpbmRleF91MzIpKSkKc3Z1aW50MzJfdCBzdmxkMV9nYXRoZXJfaW5kZXgoc3Zib29sX3QsIHVpbnQzMl90IGNvbnN0ICosIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFfZ2F0aGVyX3UzMmluZGV4X2YzMikpKQpzdmZsb2F0MzJfdCBzdmxkMV9nYXRoZXJfaW5kZXgoc3Zib29sX3QsIGZsb2F0MzJfdCBjb25zdCAqLCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX2dhdGhlcl91MzJpbmRleF9zMzIpKSkKc3ZpbnQzMl90IHN2bGQxX2dhdGhlcl9pbmRleChzdmJvb2xfdCwgaW50MzJfdCBjb25zdCAqLCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX2dhdGhlcl9zNjRpbmRleF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkMV9nYXRoZXJfaW5kZXgoc3Zib29sX3QsIHVpbnQ2NF90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMV9nYXRoZXJfczY0aW5kZXhfZjY0KSkpCnN2ZmxvYXQ2NF90IHN2bGQxX2dhdGhlcl9pbmRleChzdmJvb2xfdCwgZmxvYXQ2NF90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMV9nYXRoZXJfczY0aW5kZXhfczY0KSkpCnN2aW50NjRfdCBzdmxkMV9nYXRoZXJfaW5kZXgoc3Zib29sX3QsIGludDY0X3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX2dhdGhlcl91NjRpbmRleF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkMV9nYXRoZXJfaW5kZXgoc3Zib29sX3QsIHVpbnQ2NF90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFfZ2F0aGVyX3U2NGluZGV4X2Y2NCkpKQpzdmZsb2F0NjRfdCBzdmxkMV9nYXRoZXJfaW5kZXgoc3Zib29sX3QsIGZsb2F0NjRfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX2dhdGhlcl91NjRpbmRleF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxX2dhdGhlcl9pbmRleChzdmJvb2xfdCwgaW50NjRfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX2dhdGhlcl9zMzJvZmZzZXRfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZDFfZ2F0aGVyX29mZnNldChzdmJvb2xfdCwgdWludDMyX3QgY29uc3QgKiwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX2dhdGhlcl9zMzJvZmZzZXRfZjMyKSkpCnN2ZmxvYXQzMl90IHN2bGQxX2dhdGhlcl9vZmZzZXQoc3Zib29sX3QsIGZsb2F0MzJfdCBjb25zdCAqLCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFfZ2F0aGVyX3MzMm9mZnNldF9zMzIpKSkKc3ZpbnQzMl90IHN2bGQxX2dhdGhlcl9vZmZzZXQoc3Zib29sX3QsIGludDMyX3QgY29uc3QgKiwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX2dhdGhlcl91MzJvZmZzZXRfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZDFfZ2F0aGVyX29mZnNldChzdmJvb2xfdCwgdWludDMyX3QgY29uc3QgKiwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMV9nYXRoZXJfdTMyb2Zmc2V0X2YzMikpKQpzdmZsb2F0MzJfdCBzdmxkMV9nYXRoZXJfb2Zmc2V0KHN2Ym9vbF90LCBmbG9hdDMyX3QgY29uc3QgKiwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMV9nYXRoZXJfdTMyb2Zmc2V0X3MzMikpKQpzdmludDMyX3Qgc3ZsZDFfZ2F0aGVyX29mZnNldChzdmJvb2xfdCwgaW50MzJfdCBjb25zdCAqLCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX2dhdGhlcl9zNjRvZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZDFfZ2F0aGVyX29mZnNldChzdmJvb2xfdCwgdWludDY0X3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX2dhdGhlcl9zNjRvZmZzZXRfZjY0KSkpCnN2ZmxvYXQ2NF90IHN2bGQxX2dhdGhlcl9vZmZzZXQoc3Zib29sX3QsIGZsb2F0NjRfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFfZ2F0aGVyX3M2NG9mZnNldF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxX2dhdGhlcl9vZmZzZXQoc3Zib29sX3QsIGludDY0X3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX2dhdGhlcl91NjRvZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZDFfZ2F0aGVyX29mZnNldChzdmJvb2xfdCwgdWludDY0X3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMV9nYXRoZXJfdTY0b2Zmc2V0X2Y2NCkpKQpzdmZsb2F0NjRfdCBzdmxkMV9nYXRoZXJfb2Zmc2V0KHN2Ym9vbF90LCBmbG9hdDY0X3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMV9nYXRoZXJfdTY0b2Zmc2V0X3M2NCkpKQpzdmludDY0X3Qgc3ZsZDFfZ2F0aGVyX29mZnNldChzdmJvb2xfdCwgaW50NjRfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX3ZudW1fdTgpKSkKc3Z1aW50OF90IHN2bGQxX3ZudW0oc3Zib29sX3QsIHVpbnQ4X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMV92bnVtX3UzMikpKQpzdnVpbnQzMl90IHN2bGQxX3ZudW0oc3Zib29sX3QsIHVpbnQzMl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFfdm51bV91NjQpKSkKc3Z1aW50NjRfdCBzdmxkMV92bnVtKHN2Ym9vbF90LCB1aW50NjRfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX3ZudW1fdTE2KSkpCnN2dWludDE2X3Qgc3ZsZDFfdm51bShzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMV92bnVtX3M4KSkpCnN2aW50OF90IHN2bGQxX3ZudW0oc3Zib29sX3QsIGludDhfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX3ZudW1fZjY0KSkpCnN2ZmxvYXQ2NF90IHN2bGQxX3ZudW0oc3Zib29sX3QsIGZsb2F0NjRfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX3ZudW1fZjMyKSkpCnN2ZmxvYXQzMl90IHN2bGQxX3ZudW0oc3Zib29sX3QsIGZsb2F0MzJfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX3ZudW1fZjE2KSkpCnN2ZmxvYXQxNl90IHN2bGQxX3ZudW0oc3Zib29sX3QsIGZsb2F0MTZfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX3ZudW1fczMyKSkpCnN2aW50MzJfdCBzdmxkMV92bnVtKHN2Ym9vbF90LCBpbnQzMl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFfdm51bV9zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxX3ZudW0oc3Zib29sX3QsIGludDY0X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMV92bnVtX3MxNikpKQpzdmludDE2X3Qgc3ZsZDFfdm51bShzdmJvb2xfdCwgaW50MTZfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxcnFfdTgpKSkKc3Z1aW50OF90IHN2bGQxcnEoc3Zib29sX3QsIHVpbnQ4X3QgY29uc3QgKik7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXJxX3UzMikpKQpzdnVpbnQzMl90IHN2bGQxcnEoc3Zib29sX3QsIHVpbnQzMl90IGNvbnN0ICopOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFycV91NjQpKSkKc3Z1aW50NjRfdCBzdmxkMXJxKHN2Ym9vbF90LCB1aW50NjRfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxcnFfdTE2KSkpCnN2dWludDE2X3Qgc3ZsZDFycShzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKik7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXJxX3M4KSkpCnN2aW50OF90IHN2bGQxcnEoc3Zib29sX3QsIGludDhfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxcnFfZjY0KSkpCnN2ZmxvYXQ2NF90IHN2bGQxcnEoc3Zib29sX3QsIGZsb2F0NjRfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxcnFfZjMyKSkpCnN2ZmxvYXQzMl90IHN2bGQxcnEoc3Zib29sX3QsIGZsb2F0MzJfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxcnFfZjE2KSkpCnN2ZmxvYXQxNl90IHN2bGQxcnEoc3Zib29sX3QsIGZsb2F0MTZfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxcnFfczMyKSkpCnN2aW50MzJfdCBzdmxkMXJxKHN2Ym9vbF90LCBpbnQzMl90IGNvbnN0ICopOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFycV9zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxcnEoc3Zib29sX3QsIGludDY0X3QgY29uc3QgKik7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXJxX3MxNikpKQpzdmludDE2X3Qgc3ZsZDFycShzdmJvb2xfdCwgaW50MTZfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxc2JfZ2F0aGVyX3UzMmJhc2Vfb2Zmc2V0X3UzMikpKQpzdnVpbnQzMl90IHN2bGQxc2JfZ2F0aGVyX29mZnNldF91MzIoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzYl9nYXRoZXJfdTY0YmFzZV9vZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZDFzYl9nYXRoZXJfb2Zmc2V0X3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXNiX2dhdGhlcl91MzJiYXNlX29mZnNldF9zMzIpKSkKc3ZpbnQzMl90IHN2bGQxc2JfZ2F0aGVyX29mZnNldF9zMzIoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzYl9nYXRoZXJfdTY0YmFzZV9vZmZzZXRfczY0KSkpCnN2aW50NjRfdCBzdmxkMXNiX2dhdGhlcl9vZmZzZXRfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxc2JfZ2F0aGVyX3UzMmJhc2VfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZDFzYl9nYXRoZXJfdTMyKHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxc2JfZ2F0aGVyX3U2NGJhc2VfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZDFzYl9nYXRoZXJfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxc2JfZ2F0aGVyX3UzMmJhc2VfczMyKSkpCnN2aW50MzJfdCBzdmxkMXNiX2dhdGhlcl9zMzIoc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzYl9nYXRoZXJfdTY0YmFzZV9zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxc2JfZ2F0aGVyX3M2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXNiX2dhdGhlcl9zMzJvZmZzZXRfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZDFzYl9nYXRoZXJfb2Zmc2V0X3UzMihzdmJvb2xfdCwgaW50OF90IGNvbnN0ICosIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXNiX2dhdGhlcl9zMzJvZmZzZXRfczMyKSkpCnN2aW50MzJfdCBzdmxkMXNiX2dhdGhlcl9vZmZzZXRfczMyKHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKiwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxc2JfZ2F0aGVyX3UzMm9mZnNldF91MzIpKSkKc3Z1aW50MzJfdCBzdmxkMXNiX2dhdGhlcl9vZmZzZXRfdTMyKHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKiwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXNiX2dhdGhlcl91MzJvZmZzZXRfczMyKSkpCnN2aW50MzJfdCBzdmxkMXNiX2dhdGhlcl9vZmZzZXRfczMyKHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKiwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXNiX2dhdGhlcl9zNjRvZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZDFzYl9nYXRoZXJfb2Zmc2V0X3U2NChzdmJvb2xfdCwgaW50OF90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXNiX2dhdGhlcl9zNjRvZmZzZXRfczY0KSkpCnN2aW50NjRfdCBzdmxkMXNiX2dhdGhlcl9vZmZzZXRfczY0KHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxc2JfZ2F0aGVyX3U2NG9mZnNldF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkMXNiX2dhdGhlcl9vZmZzZXRfdTY0KHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXNiX2dhdGhlcl91NjRvZmZzZXRfczY0KSkpCnN2aW50NjRfdCBzdmxkMXNiX2dhdGhlcl9vZmZzZXRfczY0KHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXNoX2dhdGhlcl91MzJiYXNlX2luZGV4X3UzMikpKQpzdnVpbnQzMl90IHN2bGQxc2hfZ2F0aGVyX2luZGV4X3UzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXNoX2dhdGhlcl91NjRiYXNlX2luZGV4X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGQxc2hfZ2F0aGVyX2luZGV4X3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXNoX2dhdGhlcl91MzJiYXNlX2luZGV4X3MzMikpKQpzdmludDMyX3Qgc3ZsZDFzaF9nYXRoZXJfaW5kZXhfczMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxc2hfZ2F0aGVyX3U2NGJhc2VfaW5kZXhfczY0KSkpCnN2aW50NjRfdCBzdmxkMXNoX2dhdGhlcl9pbmRleF9zNjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzaF9nYXRoZXJfdTMyYmFzZV9vZmZzZXRfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZDFzaF9nYXRoZXJfb2Zmc2V0X3UzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXNoX2dhdGhlcl91NjRiYXNlX29mZnNldF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkMXNoX2dhdGhlcl9vZmZzZXRfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxc2hfZ2F0aGVyX3UzMmJhc2Vfb2Zmc2V0X3MzMikpKQpzdmludDMyX3Qgc3ZsZDFzaF9nYXRoZXJfb2Zmc2V0X3MzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXNoX2dhdGhlcl91NjRiYXNlX29mZnNldF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxc2hfZ2F0aGVyX29mZnNldF9zNjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzaF9nYXRoZXJfdTMyYmFzZV91MzIpKSkKc3Z1aW50MzJfdCBzdmxkMXNoX2dhdGhlcl91MzIoc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzaF9nYXRoZXJfdTY0YmFzZV91NjQpKSkKc3Z1aW50NjRfdCBzdmxkMXNoX2dhdGhlcl91NjQoc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzaF9nYXRoZXJfdTMyYmFzZV9zMzIpKSkKc3ZpbnQzMl90IHN2bGQxc2hfZ2F0aGVyX3MzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXNoX2dhdGhlcl91NjRiYXNlX3M2NCkpKQpzdmludDY0X3Qgc3ZsZDFzaF9nYXRoZXJfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxc2hfZ2F0aGVyX3MzMmluZGV4X3UzMikpKQpzdnVpbnQzMl90IHN2bGQxc2hfZ2F0aGVyX2luZGV4X3UzMihzdmJvb2xfdCwgaW50MTZfdCBjb25zdCAqLCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzaF9nYXRoZXJfczMyaW5kZXhfczMyKSkpCnN2aW50MzJfdCBzdmxkMXNoX2dhdGhlcl9pbmRleF9zMzIoc3Zib29sX3QsIGludDE2X3QgY29uc3QgKiwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxc2hfZ2F0aGVyX3UzMmluZGV4X3UzMikpKQpzdnVpbnQzMl90IHN2bGQxc2hfZ2F0aGVyX2luZGV4X3UzMihzdmJvb2xfdCwgaW50MTZfdCBjb25zdCAqLCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxc2hfZ2F0aGVyX3UzMmluZGV4X3MzMikpKQpzdmludDMyX3Qgc3ZsZDFzaF9nYXRoZXJfaW5kZXhfczMyKHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICosIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzaF9nYXRoZXJfczY0aW5kZXhfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZDFzaF9nYXRoZXJfaW5kZXhfdTY0KHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXNoX2dhdGhlcl9zNjRpbmRleF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxc2hfZ2F0aGVyX2luZGV4X3M2NChzdmJvb2xfdCwgaW50MTZfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzaF9nYXRoZXJfdTY0aW5kZXhfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZDFzaF9nYXRoZXJfaW5kZXhfdTY0KHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzaF9nYXRoZXJfdTY0aW5kZXhfczY0KSkpCnN2aW50NjRfdCBzdmxkMXNoX2dhdGhlcl9pbmRleF9zNjQoc3Zib29sX3QsIGludDE2X3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXNoX2dhdGhlcl9zMzJvZmZzZXRfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZDFzaF9nYXRoZXJfb2Zmc2V0X3UzMihzdmJvb2xfdCwgaW50MTZfdCBjb25zdCAqLCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzaF9nYXRoZXJfczMyb2Zmc2V0X3MzMikpKQpzdmludDMyX3Qgc3ZsZDFzaF9nYXRoZXJfb2Zmc2V0X3MzMihzdmJvb2xfdCwgaW50MTZfdCBjb25zdCAqLCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzaF9nYXRoZXJfdTMyb2Zmc2V0X3UzMikpKQpzdnVpbnQzMl90IHN2bGQxc2hfZ2F0aGVyX29mZnNldF91MzIoc3Zib29sX3QsIGludDE2X3QgY29uc3QgKiwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXNoX2dhdGhlcl91MzJvZmZzZXRfczMyKSkpCnN2aW50MzJfdCBzdmxkMXNoX2dhdGhlcl9vZmZzZXRfczMyKHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICosIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzaF9nYXRoZXJfczY0b2Zmc2V0X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGQxc2hfZ2F0aGVyX29mZnNldF91NjQoc3Zib29sX3QsIGludDE2X3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxc2hfZ2F0aGVyX3M2NG9mZnNldF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxc2hfZ2F0aGVyX29mZnNldF9zNjQoc3Zib29sX3QsIGludDE2X3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxc2hfZ2F0aGVyX3U2NG9mZnNldF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkMXNoX2dhdGhlcl9vZmZzZXRfdTY0KHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzaF9nYXRoZXJfdTY0b2Zmc2V0X3M2NCkpKQpzdmludDY0X3Qgc3ZsZDFzaF9nYXRoZXJfb2Zmc2V0X3M2NChzdmJvb2xfdCwgaW50MTZfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxc3dfZ2F0aGVyX3U2NGJhc2VfaW5kZXhfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZDFzd19nYXRoZXJfaW5kZXhfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxc3dfZ2F0aGVyX3U2NGJhc2VfaW5kZXhfczY0KSkpCnN2aW50NjRfdCBzdmxkMXN3X2dhdGhlcl9pbmRleF9zNjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzd19nYXRoZXJfdTY0YmFzZV9vZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZDFzd19nYXRoZXJfb2Zmc2V0X3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXN3X2dhdGhlcl91NjRiYXNlX29mZnNldF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxc3dfZ2F0aGVyX29mZnNldF9zNjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzd19nYXRoZXJfdTY0YmFzZV91NjQpKSkKc3Z1aW50NjRfdCBzdmxkMXN3X2dhdGhlcl91NjQoc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFzd19nYXRoZXJfdTY0YmFzZV9zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxc3dfZ2F0aGVyX3M2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXN3X2dhdGhlcl9zNjRpbmRleF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkMXN3X2dhdGhlcl9pbmRleF91NjQoc3Zib29sX3QsIGludDMyX3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxc3dfZ2F0aGVyX3M2NGluZGV4X3M2NCkpKQpzdmludDY0X3Qgc3ZsZDFzd19nYXRoZXJfaW5kZXhfczY0KHN2Ym9vbF90LCBpbnQzMl90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXN3X2dhdGhlcl91NjRpbmRleF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkMXN3X2dhdGhlcl9pbmRleF91NjQoc3Zib29sX3QsIGludDMyX3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXN3X2dhdGhlcl91NjRpbmRleF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxc3dfZ2F0aGVyX2luZGV4X3M2NChzdmJvb2xfdCwgaW50MzJfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxc3dfZ2F0aGVyX3M2NG9mZnNldF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkMXN3X2dhdGhlcl9vZmZzZXRfdTY0KHN2Ym9vbF90LCBpbnQzMl90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXN3X2dhdGhlcl9zNjRvZmZzZXRfczY0KSkpCnN2aW50NjRfdCBzdmxkMXN3X2dhdGhlcl9vZmZzZXRfczY0KHN2Ym9vbF90LCBpbnQzMl90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXN3X2dhdGhlcl91NjRvZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZDFzd19nYXRoZXJfb2Zmc2V0X3U2NChzdmJvb2xfdCwgaW50MzJfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxc3dfZ2F0aGVyX3U2NG9mZnNldF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxc3dfZ2F0aGVyX29mZnNldF9zNjQoc3Zib29sX3QsIGludDMyX3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXViX2dhdGhlcl91MzJiYXNlX29mZnNldF91MzIpKSkKc3Z1aW50MzJfdCBzdmxkMXViX2dhdGhlcl9vZmZzZXRfdTMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdWJfZ2F0aGVyX3U2NGJhc2Vfb2Zmc2V0X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGQxdWJfZ2F0aGVyX29mZnNldF91NjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1Yl9nYXRoZXJfdTMyYmFzZV9vZmZzZXRfczMyKSkpCnN2aW50MzJfdCBzdmxkMXViX2dhdGhlcl9vZmZzZXRfczMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdWJfZ2F0aGVyX3U2NGJhc2Vfb2Zmc2V0X3M2NCkpKQpzdmludDY0X3Qgc3ZsZDF1Yl9nYXRoZXJfb2Zmc2V0X3M2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXViX2dhdGhlcl91MzJiYXNlX3UzMikpKQpzdnVpbnQzMl90IHN2bGQxdWJfZ2F0aGVyX3UzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXViX2dhdGhlcl91NjRiYXNlX3U2NCkpKQpzdnVpbnQ2NF90IHN2bGQxdWJfZ2F0aGVyX3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXViX2dhdGhlcl91MzJiYXNlX3MzMikpKQpzdmludDMyX3Qgc3ZsZDF1Yl9nYXRoZXJfczMyKHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdWJfZ2F0aGVyX3U2NGJhc2VfczY0KSkpCnN2aW50NjRfdCBzdmxkMXViX2dhdGhlcl9zNjQoc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1Yl9nYXRoZXJfczMyb2Zmc2V0X3UzMikpKQpzdnVpbnQzMl90IHN2bGQxdWJfZ2F0aGVyX29mZnNldF91MzIoc3Zib29sX3QsIHVpbnQ4X3QgY29uc3QgKiwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdWJfZ2F0aGVyX3MzMm9mZnNldF9zMzIpKSkKc3ZpbnQzMl90IHN2bGQxdWJfZ2F0aGVyX29mZnNldF9zMzIoc3Zib29sX3QsIHVpbnQ4X3QgY29uc3QgKiwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdWJfZ2F0aGVyX3UzMm9mZnNldF91MzIpKSkKc3Z1aW50MzJfdCBzdmxkMXViX2dhdGhlcl9vZmZzZXRfdTMyKHN2Ym9vbF90LCB1aW50OF90IGNvbnN0ICosIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1Yl9nYXRoZXJfdTMyb2Zmc2V0X3MzMikpKQpzdmludDMyX3Qgc3ZsZDF1Yl9nYXRoZXJfb2Zmc2V0X3MzMihzdmJvb2xfdCwgdWludDhfdCBjb25zdCAqLCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdWJfZ2F0aGVyX3M2NG9mZnNldF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkMXViX2dhdGhlcl9vZmZzZXRfdTY0KHN2Ym9vbF90LCB1aW50OF90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXViX2dhdGhlcl9zNjRvZmZzZXRfczY0KSkpCnN2aW50NjRfdCBzdmxkMXViX2dhdGhlcl9vZmZzZXRfczY0KHN2Ym9vbF90LCB1aW50OF90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXViX2dhdGhlcl91NjRvZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZDF1Yl9nYXRoZXJfb2Zmc2V0X3U2NChzdmJvb2xfdCwgdWludDhfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdWJfZ2F0aGVyX3U2NG9mZnNldF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxdWJfZ2F0aGVyX29mZnNldF9zNjQoc3Zib29sX3QsIHVpbnQ4X3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXVoX2dhdGhlcl91MzJiYXNlX2luZGV4X3UzMikpKQpzdnVpbnQzMl90IHN2bGQxdWhfZ2F0aGVyX2luZGV4X3UzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXVoX2dhdGhlcl91NjRiYXNlX2luZGV4X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGQxdWhfZ2F0aGVyX2luZGV4X3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXVoX2dhdGhlcl91MzJiYXNlX2luZGV4X3MzMikpKQpzdmludDMyX3Qgc3ZsZDF1aF9nYXRoZXJfaW5kZXhfczMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdWhfZ2F0aGVyX3U2NGJhc2VfaW5kZXhfczY0KSkpCnN2aW50NjRfdCBzdmxkMXVoX2dhdGhlcl9pbmRleF9zNjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1aF9nYXRoZXJfdTMyYmFzZV9vZmZzZXRfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZDF1aF9nYXRoZXJfb2Zmc2V0X3UzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXVoX2dhdGhlcl91NjRiYXNlX29mZnNldF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkMXVoX2dhdGhlcl9vZmZzZXRfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdWhfZ2F0aGVyX3UzMmJhc2Vfb2Zmc2V0X3MzMikpKQpzdmludDMyX3Qgc3ZsZDF1aF9nYXRoZXJfb2Zmc2V0X3MzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXVoX2dhdGhlcl91NjRiYXNlX29mZnNldF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxdWhfZ2F0aGVyX29mZnNldF9zNjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1aF9nYXRoZXJfdTMyYmFzZV91MzIpKSkKc3Z1aW50MzJfdCBzdmxkMXVoX2dhdGhlcl91MzIoc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1aF9nYXRoZXJfdTY0YmFzZV91NjQpKSkKc3Z1aW50NjRfdCBzdmxkMXVoX2dhdGhlcl91NjQoc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1aF9nYXRoZXJfdTMyYmFzZV9zMzIpKSkKc3ZpbnQzMl90IHN2bGQxdWhfZ2F0aGVyX3MzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXVoX2dhdGhlcl91NjRiYXNlX3M2NCkpKQpzdmludDY0X3Qgc3ZsZDF1aF9nYXRoZXJfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdWhfZ2F0aGVyX3MzMmluZGV4X3UzMikpKQpzdnVpbnQzMl90IHN2bGQxdWhfZ2F0aGVyX2luZGV4X3UzMihzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKiwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdWhfZ2F0aGVyX3MzMmluZGV4X3MzMikpKQpzdmludDMyX3Qgc3ZsZDF1aF9nYXRoZXJfaW5kZXhfczMyKHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqLCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1aF9nYXRoZXJfdTMyaW5kZXhfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZDF1aF9nYXRoZXJfaW5kZXhfdTMyKHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqLCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdWhfZ2F0aGVyX3UzMmluZGV4X3MzMikpKQpzdmludDMyX3Qgc3ZsZDF1aF9nYXRoZXJfaW5kZXhfczMyKHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqLCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdWhfZ2F0aGVyX3M2NGluZGV4X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGQxdWhfZ2F0aGVyX2luZGV4X3U2NChzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdWhfZ2F0aGVyX3M2NGluZGV4X3M2NCkpKQpzdmludDY0X3Qgc3ZsZDF1aF9nYXRoZXJfaW5kZXhfczY0KHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1aF9nYXRoZXJfdTY0aW5kZXhfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZDF1aF9nYXRoZXJfaW5kZXhfdTY0KHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdWhfZ2F0aGVyX3U2NGluZGV4X3M2NCkpKQpzdmludDY0X3Qgc3ZsZDF1aF9nYXRoZXJfaW5kZXhfczY0KHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdWhfZ2F0aGVyX3MzMm9mZnNldF91MzIpKSkKc3Z1aW50MzJfdCBzdmxkMXVoX2dhdGhlcl9vZmZzZXRfdTMyKHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqLCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1aF9nYXRoZXJfczMyb2Zmc2V0X3MzMikpKQpzdmludDMyX3Qgc3ZsZDF1aF9nYXRoZXJfb2Zmc2V0X3MzMihzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKiwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdWhfZ2F0aGVyX3UzMm9mZnNldF91MzIpKSkKc3Z1aW50MzJfdCBzdmxkMXVoX2dhdGhlcl9vZmZzZXRfdTMyKHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqLCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdWhfZ2F0aGVyX3UzMm9mZnNldF9zMzIpKSkKc3ZpbnQzMl90IHN2bGQxdWhfZ2F0aGVyX29mZnNldF9zMzIoc3Zib29sX3QsIHVpbnQxNl90IGNvbnN0ICosIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1aF9nYXRoZXJfczY0b2Zmc2V0X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGQxdWhfZ2F0aGVyX29mZnNldF91NjQoc3Zib29sX3QsIHVpbnQxNl90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXVoX2dhdGhlcl9zNjRvZmZzZXRfczY0KSkpCnN2aW50NjRfdCBzdmxkMXVoX2dhdGhlcl9vZmZzZXRfczY0KHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1aF9nYXRoZXJfdTY0b2Zmc2V0X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGQxdWhfZ2F0aGVyX29mZnNldF91NjQoc3Zib29sX3QsIHVpbnQxNl90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1aF9nYXRoZXJfdTY0b2Zmc2V0X3M2NCkpKQpzdmludDY0X3Qgc3ZsZDF1aF9nYXRoZXJfb2Zmc2V0X3M2NChzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXV3X2dhdGhlcl91NjRiYXNlX2luZGV4X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGQxdXdfZ2F0aGVyX2luZGV4X3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXV3X2dhdGhlcl91NjRiYXNlX2luZGV4X3M2NCkpKQpzdmludDY0X3Qgc3ZsZDF1d19nYXRoZXJfaW5kZXhfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdXdfZ2F0aGVyX3U2NGJhc2Vfb2Zmc2V0X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGQxdXdfZ2F0aGVyX29mZnNldF91NjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1d19nYXRoZXJfdTY0YmFzZV9vZmZzZXRfczY0KSkpCnN2aW50NjRfdCBzdmxkMXV3X2dhdGhlcl9vZmZzZXRfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdXdfZ2F0aGVyX3U2NGJhc2VfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZDF1d19nYXRoZXJfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxdXdfZ2F0aGVyX3U2NGJhc2VfczY0KSkpCnN2aW50NjRfdCBzdmxkMXV3X2dhdGhlcl9zNjQoc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1d19nYXRoZXJfczY0aW5kZXhfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZDF1d19nYXRoZXJfaW5kZXhfdTY0KHN2Ym9vbF90LCB1aW50MzJfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1d19nYXRoZXJfczY0aW5kZXhfczY0KSkpCnN2aW50NjRfdCBzdmxkMXV3X2dhdGhlcl9pbmRleF9zNjQoc3Zib29sX3QsIHVpbnQzMl90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXV3X2dhdGhlcl91NjRpbmRleF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkMXV3X2dhdGhlcl9pbmRleF91NjQoc3Zib29sX3QsIHVpbnQzMl90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1d19nYXRoZXJfdTY0aW5kZXhfczY0KSkpCnN2aW50NjRfdCBzdmxkMXV3X2dhdGhlcl9pbmRleF9zNjQoc3Zib29sX3QsIHVpbnQzMl90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1d19nYXRoZXJfczY0b2Zmc2V0X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGQxdXdfZ2F0aGVyX29mZnNldF91NjQoc3Zib29sX3QsIHVpbnQzMl90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXV3X2dhdGhlcl9zNjRvZmZzZXRfczY0KSkpCnN2aW50NjRfdCBzdmxkMXV3X2dhdGhlcl9vZmZzZXRfczY0KHN2Ym9vbF90LCB1aW50MzJfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1d19nYXRoZXJfdTY0b2Zmc2V0X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGQxdXdfZ2F0aGVyX29mZnNldF91NjQoc3Zib29sX3QsIHVpbnQzMl90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDF1d19nYXRoZXJfdTY0b2Zmc2V0X3M2NCkpKQpzdmludDY0X3Qgc3ZsZDF1d19nYXRoZXJfb2Zmc2V0X3M2NChzdmJvb2xfdCwgdWludDMyX3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMl91OCkpKQpzdnVpbnQ4eDJfdCBzdmxkMihzdmJvb2xfdCwgdWludDhfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQyX3UzMikpKQpzdnVpbnQzMngyX3Qgc3ZsZDIoc3Zib29sX3QsIHVpbnQzMl90IGNvbnN0ICopOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDJfdTY0KSkpCnN2dWludDY0eDJfdCBzdmxkMihzdmJvb2xfdCwgdWludDY0X3QgY29uc3QgKik7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMl91MTYpKSkKc3Z1aW50MTZ4Ml90IHN2bGQyKHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQyX3M4KSkpCnN2aW50OHgyX3Qgc3ZsZDIoc3Zib29sX3QsIGludDhfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQyX2Y2NCkpKQpzdmZsb2F0NjR4Ml90IHN2bGQyKHN2Ym9vbF90LCBmbG9hdDY0X3QgY29uc3QgKik7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMl9mMzIpKSkKc3ZmbG9hdDMyeDJfdCBzdmxkMihzdmJvb2xfdCwgZmxvYXQzMl90IGNvbnN0ICopOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDJfZjE2KSkpCnN2ZmxvYXQxNngyX3Qgc3ZsZDIoc3Zib29sX3QsIGZsb2F0MTZfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQyX3MzMikpKQpzdmludDMyeDJfdCBzdmxkMihzdmJvb2xfdCwgaW50MzJfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQyX3M2NCkpKQpzdmludDY0eDJfdCBzdmxkMihzdmJvb2xfdCwgaW50NjRfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQyX3MxNikpKQpzdmludDE2eDJfdCBzdmxkMihzdmJvb2xfdCwgaW50MTZfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQyX3ZudW1fdTgpKSkKc3Z1aW50OHgyX3Qgc3ZsZDJfdm51bShzdmJvb2xfdCwgdWludDhfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQyX3ZudW1fdTMyKSkpCnN2dWludDMyeDJfdCBzdmxkMl92bnVtKHN2Ym9vbF90LCB1aW50MzJfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQyX3ZudW1fdTY0KSkpCnN2dWludDY0eDJfdCBzdmxkMl92bnVtKHN2Ym9vbF90LCB1aW50NjRfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQyX3ZudW1fdTE2KSkpCnN2dWludDE2eDJfdCBzdmxkMl92bnVtKHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQyX3ZudW1fczgpKSkKc3ZpbnQ4eDJfdCBzdmxkMl92bnVtKHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMl92bnVtX2Y2NCkpKQpzdmZsb2F0NjR4Ml90IHN2bGQyX3ZudW0oc3Zib29sX3QsIGZsb2F0NjRfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQyX3ZudW1fZjMyKSkpCnN2ZmxvYXQzMngyX3Qgc3ZsZDJfdm51bShzdmJvb2xfdCwgZmxvYXQzMl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDJfdm51bV9mMTYpKSkKc3ZmbG9hdDE2eDJfdCBzdmxkMl92bnVtKHN2Ym9vbF90LCBmbG9hdDE2X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMl92bnVtX3MzMikpKQpzdmludDMyeDJfdCBzdmxkMl92bnVtKHN2Ym9vbF90LCBpbnQzMl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDJfdm51bV9zNjQpKSkKc3ZpbnQ2NHgyX3Qgc3ZsZDJfdm51bShzdmJvb2xfdCwgaW50NjRfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQyX3ZudW1fczE2KSkpCnN2aW50MTZ4Ml90IHN2bGQyX3ZudW0oc3Zib29sX3QsIGludDE2X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkM191OCkpKQpzdnVpbnQ4eDNfdCBzdmxkMyhzdmJvb2xfdCwgdWludDhfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQzX3UzMikpKQpzdnVpbnQzMngzX3Qgc3ZsZDMoc3Zib29sX3QsIHVpbnQzMl90IGNvbnN0ICopOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDNfdTY0KSkpCnN2dWludDY0eDNfdCBzdmxkMyhzdmJvb2xfdCwgdWludDY0X3QgY29uc3QgKik7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkM191MTYpKSkKc3Z1aW50MTZ4M190IHN2bGQzKHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQzX3M4KSkpCnN2aW50OHgzX3Qgc3ZsZDMoc3Zib29sX3QsIGludDhfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQzX2Y2NCkpKQpzdmZsb2F0NjR4M190IHN2bGQzKHN2Ym9vbF90LCBmbG9hdDY0X3QgY29uc3QgKik7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkM19mMzIpKSkKc3ZmbG9hdDMyeDNfdCBzdmxkMyhzdmJvb2xfdCwgZmxvYXQzMl90IGNvbnN0ICopOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDNfZjE2KSkpCnN2ZmxvYXQxNngzX3Qgc3ZsZDMoc3Zib29sX3QsIGZsb2F0MTZfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQzX3MzMikpKQpzdmludDMyeDNfdCBzdmxkMyhzdmJvb2xfdCwgaW50MzJfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQzX3M2NCkpKQpzdmludDY0eDNfdCBzdmxkMyhzdmJvb2xfdCwgaW50NjRfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQzX3MxNikpKQpzdmludDE2eDNfdCBzdmxkMyhzdmJvb2xfdCwgaW50MTZfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQzX3ZudW1fdTgpKSkKc3Z1aW50OHgzX3Qgc3ZsZDNfdm51bShzdmJvb2xfdCwgdWludDhfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQzX3ZudW1fdTMyKSkpCnN2dWludDMyeDNfdCBzdmxkM192bnVtKHN2Ym9vbF90LCB1aW50MzJfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQzX3ZudW1fdTY0KSkpCnN2dWludDY0eDNfdCBzdmxkM192bnVtKHN2Ym9vbF90LCB1aW50NjRfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQzX3ZudW1fdTE2KSkpCnN2dWludDE2eDNfdCBzdmxkM192bnVtKHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQzX3ZudW1fczgpKSkKc3ZpbnQ4eDNfdCBzdmxkM192bnVtKHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkM192bnVtX2Y2NCkpKQpzdmZsb2F0NjR4M190IHN2bGQzX3ZudW0oc3Zib29sX3QsIGZsb2F0NjRfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQzX3ZudW1fZjMyKSkpCnN2ZmxvYXQzMngzX3Qgc3ZsZDNfdm51bShzdmJvb2xfdCwgZmxvYXQzMl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDNfdm51bV9mMTYpKSkKc3ZmbG9hdDE2eDNfdCBzdmxkM192bnVtKHN2Ym9vbF90LCBmbG9hdDE2X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkM192bnVtX3MzMikpKQpzdmludDMyeDNfdCBzdmxkM192bnVtKHN2Ym9vbF90LCBpbnQzMl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDNfdm51bV9zNjQpKSkKc3ZpbnQ2NHgzX3Qgc3ZsZDNfdm51bShzdmJvb2xfdCwgaW50NjRfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQzX3ZudW1fczE2KSkpCnN2aW50MTZ4M190IHN2bGQzX3ZudW0oc3Zib29sX3QsIGludDE2X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkNF91OCkpKQpzdnVpbnQ4eDRfdCBzdmxkNChzdmJvb2xfdCwgdWludDhfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQ0X3UzMikpKQpzdnVpbnQzMng0X3Qgc3ZsZDQoc3Zib29sX3QsIHVpbnQzMl90IGNvbnN0ICopOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDRfdTY0KSkpCnN2dWludDY0eDRfdCBzdmxkNChzdmJvb2xfdCwgdWludDY0X3QgY29uc3QgKik7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkNF91MTYpKSkKc3Z1aW50MTZ4NF90IHN2bGQ0KHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQ0X3M4KSkpCnN2aW50OHg0X3Qgc3ZsZDQoc3Zib29sX3QsIGludDhfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQ0X2Y2NCkpKQpzdmZsb2F0NjR4NF90IHN2bGQ0KHN2Ym9vbF90LCBmbG9hdDY0X3QgY29uc3QgKik7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkNF9mMzIpKSkKc3ZmbG9hdDMyeDRfdCBzdmxkNChzdmJvb2xfdCwgZmxvYXQzMl90IGNvbnN0ICopOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDRfZjE2KSkpCnN2ZmxvYXQxNng0X3Qgc3ZsZDQoc3Zib29sX3QsIGZsb2F0MTZfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQ0X3MzMikpKQpzdmludDMyeDRfdCBzdmxkNChzdmJvb2xfdCwgaW50MzJfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQ0X3M2NCkpKQpzdmludDY0eDRfdCBzdmxkNChzdmJvb2xfdCwgaW50NjRfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQ0X3MxNikpKQpzdmludDE2eDRfdCBzdmxkNChzdmJvb2xfdCwgaW50MTZfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQ0X3ZudW1fdTgpKSkKc3Z1aW50OHg0X3Qgc3ZsZDRfdm51bShzdmJvb2xfdCwgdWludDhfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQ0X3ZudW1fdTMyKSkpCnN2dWludDMyeDRfdCBzdmxkNF92bnVtKHN2Ym9vbF90LCB1aW50MzJfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQ0X3ZudW1fdTY0KSkpCnN2dWludDY0eDRfdCBzdmxkNF92bnVtKHN2Ym9vbF90LCB1aW50NjRfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQ0X3ZudW1fdTE2KSkpCnN2dWludDE2eDRfdCBzdmxkNF92bnVtKHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQ0X3ZudW1fczgpKSkKc3ZpbnQ4eDRfdCBzdmxkNF92bnVtKHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkNF92bnVtX2Y2NCkpKQpzdmZsb2F0NjR4NF90IHN2bGQ0X3ZudW0oc3Zib29sX3QsIGZsb2F0NjRfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQ0X3ZudW1fZjMyKSkpCnN2ZmxvYXQzMng0X3Qgc3ZsZDRfdm51bShzdmJvb2xfdCwgZmxvYXQzMl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDRfdm51bV9mMTYpKSkKc3ZmbG9hdDE2eDRfdCBzdmxkNF92bnVtKHN2Ym9vbF90LCBmbG9hdDE2X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkNF92bnVtX3MzMikpKQpzdmludDMyeDRfdCBzdmxkNF92bnVtKHN2Ym9vbF90LCBpbnQzMl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDRfdm51bV9zNjQpKSkKc3ZpbnQ2NHg0X3Qgc3ZsZDRfdm51bShzdmJvb2xfdCwgaW50NjRfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQ0X3ZudW1fczE2KSkpCnN2aW50MTZ4NF90IHN2bGQ0X3ZudW0oc3Zib29sX3QsIGludDE2X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX3U4KSkpCnN2dWludDhfdCBzdmxkZmYxKHN2Ym9vbF90LCB1aW50OF90IGNvbnN0ICopOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMV91MzIpKSkKc3Z1aW50MzJfdCBzdmxkZmYxKHN2Ym9vbF90LCB1aW50MzJfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZGZmMShzdmJvb2xfdCwgdWludDY0X3QgY29uc3QgKik7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX3UxNikpKQpzdnVpbnQxNl90IHN2bGRmZjEoc3Zib29sX3QsIHVpbnQxNl90IGNvbnN0ICopOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMV9zOCkpKQpzdmludDhfdCBzdmxkZmYxKHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKik7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2Y2NCkpKQpzdmZsb2F0NjRfdCBzdmxkZmYxKHN2Ym9vbF90LCBmbG9hdDY0X3QgY29uc3QgKik7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2YzMikpKQpzdmZsb2F0MzJfdCBzdmxkZmYxKHN2Ym9vbF90LCBmbG9hdDMyX3QgY29uc3QgKik7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2YxNikpKQpzdmZsb2F0MTZfdCBzdmxkZmYxKHN2Ym9vbF90LCBmbG9hdDE2X3QgY29uc3QgKik7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX3MzMikpKQpzdmludDMyX3Qgc3ZsZGZmMShzdmJvb2xfdCwgaW50MzJfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFfczY0KSkpCnN2aW50NjRfdCBzdmxkZmYxKHN2Ym9vbF90LCBpbnQ2NF90IGNvbnN0ICopOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMV9zMTYpKSkKc3ZpbnQxNl90IHN2bGRmZjEoc3Zib29sX3QsIGludDE2X3QgY29uc3QgKik7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2dhdGhlcl91MzJiYXNlX2luZGV4X3UzMikpKQpzdnVpbnQzMl90IHN2bGRmZjFfZ2F0aGVyX2luZGV4X3UzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2dhdGhlcl91NjRiYXNlX2luZGV4X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRmZjFfZ2F0aGVyX2luZGV4X3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2dhdGhlcl91NjRiYXNlX2luZGV4X2Y2NCkpKQpzdmZsb2F0NjRfdCBzdmxkZmYxX2dhdGhlcl9pbmRleF9mNjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMV9nYXRoZXJfdTMyYmFzZV9pbmRleF9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3ZsZGZmMV9nYXRoZXJfaW5kZXhfZjMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFfZ2F0aGVyX3UzMmJhc2VfaW5kZXhfczMyKSkpCnN2aW50MzJfdCBzdmxkZmYxX2dhdGhlcl9pbmRleF9zMzIoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMV9nYXRoZXJfdTY0YmFzZV9pbmRleF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRmZjFfZ2F0aGVyX2luZGV4X3M2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2dhdGhlcl91MzJiYXNlX29mZnNldF91MzIpKSkKc3Z1aW50MzJfdCBzdmxkZmYxX2dhdGhlcl9vZmZzZXRfdTMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFfZ2F0aGVyX3U2NGJhc2Vfb2Zmc2V0X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRmZjFfZ2F0aGVyX29mZnNldF91NjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMV9nYXRoZXJfdTY0YmFzZV9vZmZzZXRfZjY0KSkpCnN2ZmxvYXQ2NF90IHN2bGRmZjFfZ2F0aGVyX29mZnNldF9mNjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMV9nYXRoZXJfdTMyYmFzZV9vZmZzZXRfZjMyKSkpCnN2ZmxvYXQzMl90IHN2bGRmZjFfZ2F0aGVyX29mZnNldF9mMzIoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMV9nYXRoZXJfdTMyYmFzZV9vZmZzZXRfczMyKSkpCnN2aW50MzJfdCBzdmxkZmYxX2dhdGhlcl9vZmZzZXRfczMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFfZ2F0aGVyX3U2NGJhc2Vfb2Zmc2V0X3M2NCkpKQpzdmludDY0X3Qgc3ZsZGZmMV9nYXRoZXJfb2Zmc2V0X3M2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2dhdGhlcl91MzJiYXNlX3UzMikpKQpzdnVpbnQzMl90IHN2bGRmZjFfZ2F0aGVyX3UzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2dhdGhlcl91NjRiYXNlX3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRmZjFfZ2F0aGVyX3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2dhdGhlcl91NjRiYXNlX2Y2NCkpKQpzdmZsb2F0NjRfdCBzdmxkZmYxX2dhdGhlcl9mNjQoc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMV9nYXRoZXJfdTMyYmFzZV9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3ZsZGZmMV9nYXRoZXJfZjMyKHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFfZ2F0aGVyX3UzMmJhc2VfczMyKSkpCnN2aW50MzJfdCBzdmxkZmYxX2dhdGhlcl9zMzIoc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMV9nYXRoZXJfdTY0YmFzZV9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRmZjFfZ2F0aGVyX3M2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2dhdGhlcl9zMzJpbmRleF91MzIpKSkKc3Z1aW50MzJfdCBzdmxkZmYxX2dhdGhlcl9pbmRleChzdmJvb2xfdCwgdWludDMyX3QgY29uc3QgKiwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFfZ2F0aGVyX3MzMmluZGV4X2YzMikpKQpzdmZsb2F0MzJfdCBzdmxkZmYxX2dhdGhlcl9pbmRleChzdmJvb2xfdCwgZmxvYXQzMl90IGNvbnN0ICosIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2dhdGhlcl9zMzJpbmRleF9zMzIpKSkKc3ZpbnQzMl90IHN2bGRmZjFfZ2F0aGVyX2luZGV4KHN2Ym9vbF90LCBpbnQzMl90IGNvbnN0ICosIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2dhdGhlcl91MzJpbmRleF91MzIpKSkKc3Z1aW50MzJfdCBzdmxkZmYxX2dhdGhlcl9pbmRleChzdmJvb2xfdCwgdWludDMyX3QgY29uc3QgKiwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2dhdGhlcl91MzJpbmRleF9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3ZsZGZmMV9nYXRoZXJfaW5kZXgoc3Zib29sX3QsIGZsb2F0MzJfdCBjb25zdCAqLCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFfZ2F0aGVyX3UzMmluZGV4X3MzMikpKQpzdmludDMyX3Qgc3ZsZGZmMV9nYXRoZXJfaW5kZXgoc3Zib29sX3QsIGludDMyX3QgY29uc3QgKiwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2dhdGhlcl9zNjRpbmRleF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkZmYxX2dhdGhlcl9pbmRleChzdmJvb2xfdCwgdWludDY0X3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFfZ2F0aGVyX3M2NGluZGV4X2Y2NCkpKQpzdmZsb2F0NjRfdCBzdmxkZmYxX2dhdGhlcl9pbmRleChzdmJvb2xfdCwgZmxvYXQ2NF90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2dhdGhlcl9zNjRpbmRleF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRmZjFfZ2F0aGVyX2luZGV4KHN2Ym9vbF90LCBpbnQ2NF90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2dhdGhlcl91NjRpbmRleF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkZmYxX2dhdGhlcl9pbmRleChzdmJvb2xfdCwgdWludDY0X3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2dhdGhlcl91NjRpbmRleF9mNjQpKSkKc3ZmbG9hdDY0X3Qgc3ZsZGZmMV9nYXRoZXJfaW5kZXgoc3Zib29sX3QsIGZsb2F0NjRfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFfZ2F0aGVyX3U2NGluZGV4X3M2NCkpKQpzdmludDY0X3Qgc3ZsZGZmMV9nYXRoZXJfaW5kZXgoc3Zib29sX3QsIGludDY0X3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2dhdGhlcl9zMzJvZmZzZXRfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZGZmMV9nYXRoZXJfb2Zmc2V0KHN2Ym9vbF90LCB1aW50MzJfdCBjb25zdCAqLCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMV9nYXRoZXJfczMyb2Zmc2V0X2YzMikpKQpzdmZsb2F0MzJfdCBzdmxkZmYxX2dhdGhlcl9vZmZzZXQoc3Zib29sX3QsIGZsb2F0MzJfdCBjb25zdCAqLCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMV9nYXRoZXJfczMyb2Zmc2V0X3MzMikpKQpzdmludDMyX3Qgc3ZsZGZmMV9nYXRoZXJfb2Zmc2V0KHN2Ym9vbF90LCBpbnQzMl90IGNvbnN0ICosIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2dhdGhlcl91MzJvZmZzZXRfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZGZmMV9nYXRoZXJfb2Zmc2V0KHN2Ym9vbF90LCB1aW50MzJfdCBjb25zdCAqLCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFfZ2F0aGVyX3UzMm9mZnNldF9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3ZsZGZmMV9nYXRoZXJfb2Zmc2V0KHN2Ym9vbF90LCBmbG9hdDMyX3QgY29uc3QgKiwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2dhdGhlcl91MzJvZmZzZXRfczMyKSkpCnN2aW50MzJfdCBzdmxkZmYxX2dhdGhlcl9vZmZzZXQoc3Zib29sX3QsIGludDMyX3QgY29uc3QgKiwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2dhdGhlcl9zNjRvZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZGZmMV9nYXRoZXJfb2Zmc2V0KHN2Ym9vbF90LCB1aW50NjRfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMV9nYXRoZXJfczY0b2Zmc2V0X2Y2NCkpKQpzdmZsb2F0NjRfdCBzdmxkZmYxX2dhdGhlcl9vZmZzZXQoc3Zib29sX3QsIGZsb2F0NjRfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMV9nYXRoZXJfczY0b2Zmc2V0X3M2NCkpKQpzdmludDY0X3Qgc3ZsZGZmMV9nYXRoZXJfb2Zmc2V0KHN2Ym9vbF90LCBpbnQ2NF90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2dhdGhlcl91NjRvZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZGZmMV9nYXRoZXJfb2Zmc2V0KHN2Ym9vbF90LCB1aW50NjRfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFfZ2F0aGVyX3U2NG9mZnNldF9mNjQpKSkKc3ZmbG9hdDY0X3Qgc3ZsZGZmMV9nYXRoZXJfb2Zmc2V0KHN2Ym9vbF90LCBmbG9hdDY0X3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX2dhdGhlcl91NjRvZmZzZXRfczY0KSkpCnN2aW50NjRfdCBzdmxkZmYxX2dhdGhlcl9vZmZzZXQoc3Zib29sX3QsIGludDY0X3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX3ZudW1fdTgpKSkKc3Z1aW50OF90IHN2bGRmZjFfdm51bShzdmJvb2xfdCwgdWludDhfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFfdm51bV91MzIpKSkKc3Z1aW50MzJfdCBzdmxkZmYxX3ZudW0oc3Zib29sX3QsIHVpbnQzMl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMV92bnVtX3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRmZjFfdm51bShzdmJvb2xfdCwgdWludDY0X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX3ZudW1fdTE2KSkpCnN2dWludDE2X3Qgc3ZsZGZmMV92bnVtKHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFfdm51bV9zOCkpKQpzdmludDhfdCBzdmxkZmYxX3ZudW0oc3Zib29sX3QsIGludDhfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFfdm51bV9mNjQpKSkKc3ZmbG9hdDY0X3Qgc3ZsZGZmMV92bnVtKHN2Ym9vbF90LCBmbG9hdDY0X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxX3ZudW1fZjMyKSkpCnN2ZmxvYXQzMl90IHN2bGRmZjFfdm51bShzdmJvb2xfdCwgZmxvYXQzMl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMV92bnVtX2YxNikpKQpzdmZsb2F0MTZfdCBzdmxkZmYxX3ZudW0oc3Zib29sX3QsIGZsb2F0MTZfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFfdm51bV9zMzIpKSkKc3ZpbnQzMl90IHN2bGRmZjFfdm51bShzdmJvb2xfdCwgaW50MzJfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFfdm51bV9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRmZjFfdm51bShzdmJvb2xfdCwgaW50NjRfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFfdm51bV9zMTYpKSkKc3ZpbnQxNl90IHN2bGRmZjFfdm51bShzdmJvb2xfdCwgaW50MTZfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzYl9nYXRoZXJfdTMyYmFzZV9vZmZzZXRfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZGZmMXNiX2dhdGhlcl9vZmZzZXRfdTMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzYl9nYXRoZXJfdTY0YmFzZV9vZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZGZmMXNiX2dhdGhlcl9vZmZzZXRfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzYl9nYXRoZXJfdTMyYmFzZV9vZmZzZXRfczMyKSkpCnN2aW50MzJfdCBzdmxkZmYxc2JfZ2F0aGVyX29mZnNldF9zMzIoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXNiX2dhdGhlcl91NjRiYXNlX29mZnNldF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRmZjFzYl9nYXRoZXJfb2Zmc2V0X3M2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc2JfZ2F0aGVyX3UzMmJhc2VfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZGZmMXNiX2dhdGhlcl91MzIoc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXNiX2dhdGhlcl91NjRiYXNlX3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRmZjFzYl9nYXRoZXJfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzYl9nYXRoZXJfdTMyYmFzZV9zMzIpKSkKc3ZpbnQzMl90IHN2bGRmZjFzYl9nYXRoZXJfczMyKHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzYl9nYXRoZXJfdTY0YmFzZV9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRmZjFzYl9nYXRoZXJfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzYl9nYXRoZXJfczMyb2Zmc2V0X3UzMikpKQpzdnVpbnQzMl90IHN2bGRmZjFzYl9nYXRoZXJfb2Zmc2V0X3UzMihzdmJvb2xfdCwgaW50OF90IGNvbnN0ICosIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc2JfZ2F0aGVyX3MzMm9mZnNldF9zMzIpKSkKc3ZpbnQzMl90IHN2bGRmZjFzYl9nYXRoZXJfb2Zmc2V0X3MzMihzdmJvb2xfdCwgaW50OF90IGNvbnN0ICosIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc2JfZ2F0aGVyX3UzMm9mZnNldF91MzIpKSkKc3Z1aW50MzJfdCBzdmxkZmYxc2JfZ2F0aGVyX29mZnNldF91MzIoc3Zib29sX3QsIGludDhfdCBjb25zdCAqLCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzYl9nYXRoZXJfdTMyb2Zmc2V0X3MzMikpKQpzdmludDMyX3Qgc3ZsZGZmMXNiX2dhdGhlcl9vZmZzZXRfczMyKHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKiwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc2JfZ2F0aGVyX3M2NG9mZnNldF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkZmYxc2JfZ2F0aGVyX29mZnNldF91NjQoc3Zib29sX3QsIGludDhfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXNiX2dhdGhlcl9zNjRvZmZzZXRfczY0KSkpCnN2aW50NjRfdCBzdmxkZmYxc2JfZ2F0aGVyX29mZnNldF9zNjQoc3Zib29sX3QsIGludDhfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXNiX2dhdGhlcl91NjRvZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZGZmMXNiX2dhdGhlcl9vZmZzZXRfdTY0KHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc2JfZ2F0aGVyX3U2NG9mZnNldF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRmZjFzYl9nYXRoZXJfb2Zmc2V0X3M2NChzdmJvb2xfdCwgaW50OF90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXNoX2dhdGhlcl91MzJiYXNlX2luZGV4X3UzMikpKQpzdnVpbnQzMl90IHN2bGRmZjFzaF9nYXRoZXJfaW5kZXhfdTMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzaF9nYXRoZXJfdTY0YmFzZV9pbmRleF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkZmYxc2hfZ2F0aGVyX2luZGV4X3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc2hfZ2F0aGVyX3UzMmJhc2VfaW5kZXhfczMyKSkpCnN2aW50MzJfdCBzdmxkZmYxc2hfZ2F0aGVyX2luZGV4X3MzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc2hfZ2F0aGVyX3U2NGJhc2VfaW5kZXhfczY0KSkpCnN2aW50NjRfdCBzdmxkZmYxc2hfZ2F0aGVyX2luZGV4X3M2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc2hfZ2F0aGVyX3UzMmJhc2Vfb2Zmc2V0X3UzMikpKQpzdnVpbnQzMl90IHN2bGRmZjFzaF9nYXRoZXJfb2Zmc2V0X3UzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc2hfZ2F0aGVyX3U2NGJhc2Vfb2Zmc2V0X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRmZjFzaF9nYXRoZXJfb2Zmc2V0X3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc2hfZ2F0aGVyX3UzMmJhc2Vfb2Zmc2V0X3MzMikpKQpzdmludDMyX3Qgc3ZsZGZmMXNoX2dhdGhlcl9vZmZzZXRfczMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzaF9nYXRoZXJfdTY0YmFzZV9vZmZzZXRfczY0KSkpCnN2aW50NjRfdCBzdmxkZmYxc2hfZ2F0aGVyX29mZnNldF9zNjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXNoX2dhdGhlcl91MzJiYXNlX3UzMikpKQpzdnVpbnQzMl90IHN2bGRmZjFzaF9nYXRoZXJfdTMyKHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzaF9nYXRoZXJfdTY0YmFzZV91NjQpKSkKc3Z1aW50NjRfdCBzdmxkZmYxc2hfZ2F0aGVyX3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc2hfZ2F0aGVyX3UzMmJhc2VfczMyKSkpCnN2aW50MzJfdCBzdmxkZmYxc2hfZ2F0aGVyX3MzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc2hfZ2F0aGVyX3U2NGJhc2VfczY0KSkpCnN2aW50NjRfdCBzdmxkZmYxc2hfZ2F0aGVyX3M2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc2hfZ2F0aGVyX3MzMmluZGV4X3UzMikpKQpzdnVpbnQzMl90IHN2bGRmZjFzaF9nYXRoZXJfaW5kZXhfdTMyKHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICosIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc2hfZ2F0aGVyX3MzMmluZGV4X3MzMikpKQpzdmludDMyX3Qgc3ZsZGZmMXNoX2dhdGhlcl9pbmRleF9zMzIoc3Zib29sX3QsIGludDE2X3QgY29uc3QgKiwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzaF9nYXRoZXJfdTMyaW5kZXhfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZGZmMXNoX2dhdGhlcl9pbmRleF91MzIoc3Zib29sX3QsIGludDE2X3QgY29uc3QgKiwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc2hfZ2F0aGVyX3UzMmluZGV4X3MzMikpKQpzdmludDMyX3Qgc3ZsZGZmMXNoX2dhdGhlcl9pbmRleF9zMzIoc3Zib29sX3QsIGludDE2X3QgY29uc3QgKiwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc2hfZ2F0aGVyX3M2NGluZGV4X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRmZjFzaF9nYXRoZXJfaW5kZXhfdTY0KHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc2hfZ2F0aGVyX3M2NGluZGV4X3M2NCkpKQpzdmludDY0X3Qgc3ZsZGZmMXNoX2dhdGhlcl9pbmRleF9zNjQoc3Zib29sX3QsIGludDE2X3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzaF9nYXRoZXJfdTY0aW5kZXhfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZGZmMXNoX2dhdGhlcl9pbmRleF91NjQoc3Zib29sX3QsIGludDE2X3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc2hfZ2F0aGVyX3U2NGluZGV4X3M2NCkpKQpzdmludDY0X3Qgc3ZsZGZmMXNoX2dhdGhlcl9pbmRleF9zNjQoc3Zib29sX3QsIGludDE2X3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc2hfZ2F0aGVyX3MzMm9mZnNldF91MzIpKSkKc3Z1aW50MzJfdCBzdmxkZmYxc2hfZ2F0aGVyX29mZnNldF91MzIoc3Zib29sX3QsIGludDE2X3QgY29uc3QgKiwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzaF9nYXRoZXJfczMyb2Zmc2V0X3MzMikpKQpzdmludDMyX3Qgc3ZsZGZmMXNoX2dhdGhlcl9vZmZzZXRfczMyKHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICosIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc2hfZ2F0aGVyX3UzMm9mZnNldF91MzIpKSkKc3Z1aW50MzJfdCBzdmxkZmYxc2hfZ2F0aGVyX29mZnNldF91MzIoc3Zib29sX3QsIGludDE2X3QgY29uc3QgKiwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxc2hfZ2F0aGVyX3UzMm9mZnNldF9zMzIpKSkKc3ZpbnQzMl90IHN2bGRmZjFzaF9nYXRoZXJfb2Zmc2V0X3MzMihzdmJvb2xfdCwgaW50MTZfdCBjb25zdCAqLCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzaF9nYXRoZXJfczY0b2Zmc2V0X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRmZjFzaF9nYXRoZXJfb2Zmc2V0X3U2NChzdmJvb2xfdCwgaW50MTZfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXNoX2dhdGhlcl9zNjRvZmZzZXRfczY0KSkpCnN2aW50NjRfdCBzdmxkZmYxc2hfZ2F0aGVyX29mZnNldF9zNjQoc3Zib29sX3QsIGludDE2X3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzaF9nYXRoZXJfdTY0b2Zmc2V0X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRmZjFzaF9nYXRoZXJfb2Zmc2V0X3U2NChzdmJvb2xfdCwgaW50MTZfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzaF9nYXRoZXJfdTY0b2Zmc2V0X3M2NCkpKQpzdmludDY0X3Qgc3ZsZGZmMXNoX2dhdGhlcl9vZmZzZXRfczY0KHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXN3X2dhdGhlcl91NjRiYXNlX2luZGV4X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRmZjFzd19nYXRoZXJfaW5kZXhfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzd19nYXRoZXJfdTY0YmFzZV9pbmRleF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRmZjFzd19nYXRoZXJfaW5kZXhfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzd19nYXRoZXJfdTY0YmFzZV9vZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZGZmMXN3X2dhdGhlcl9vZmZzZXRfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzd19nYXRoZXJfdTY0YmFzZV9vZmZzZXRfczY0KSkpCnN2aW50NjRfdCBzdmxkZmYxc3dfZ2F0aGVyX29mZnNldF9zNjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXN3X2dhdGhlcl91NjRiYXNlX3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRmZjFzd19nYXRoZXJfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzd19nYXRoZXJfdTY0YmFzZV9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRmZjFzd19nYXRoZXJfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzd19nYXRoZXJfczY0aW5kZXhfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZGZmMXN3X2dhdGhlcl9pbmRleF91NjQoc3Zib29sX3QsIGludDMyX3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzd19nYXRoZXJfczY0aW5kZXhfczY0KSkpCnN2aW50NjRfdCBzdmxkZmYxc3dfZ2F0aGVyX2luZGV4X3M2NChzdmJvb2xfdCwgaW50MzJfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXN3X2dhdGhlcl91NjRpbmRleF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkZmYxc3dfZ2F0aGVyX2luZGV4X3U2NChzdmJvb2xfdCwgaW50MzJfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzd19nYXRoZXJfdTY0aW5kZXhfczY0KSkpCnN2aW50NjRfdCBzdmxkZmYxc3dfZ2F0aGVyX2luZGV4X3M2NChzdmJvb2xfdCwgaW50MzJfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzd19nYXRoZXJfczY0b2Zmc2V0X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRmZjFzd19nYXRoZXJfb2Zmc2V0X3U2NChzdmJvb2xfdCwgaW50MzJfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXN3X2dhdGhlcl9zNjRvZmZzZXRfczY0KSkpCnN2aW50NjRfdCBzdmxkZmYxc3dfZ2F0aGVyX29mZnNldF9zNjQoc3Zib29sX3QsIGludDMyX3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzd19nYXRoZXJfdTY0b2Zmc2V0X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRmZjFzd19nYXRoZXJfb2Zmc2V0X3U2NChzdmJvb2xfdCwgaW50MzJfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFzd19nYXRoZXJfdTY0b2Zmc2V0X3M2NCkpKQpzdmludDY0X3Qgc3ZsZGZmMXN3X2dhdGhlcl9vZmZzZXRfczY0KHN2Ym9vbF90LCBpbnQzMl90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXViX2dhdGhlcl91MzJiYXNlX29mZnNldF91MzIpKSkKc3Z1aW50MzJfdCBzdmxkZmYxdWJfZ2F0aGVyX29mZnNldF91MzIoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXViX2dhdGhlcl91NjRiYXNlX29mZnNldF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkZmYxdWJfZ2F0aGVyX29mZnNldF91NjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXViX2dhdGhlcl91MzJiYXNlX29mZnNldF9zMzIpKSkKc3ZpbnQzMl90IHN2bGRmZjF1Yl9nYXRoZXJfb2Zmc2V0X3MzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxdWJfZ2F0aGVyX3U2NGJhc2Vfb2Zmc2V0X3M2NCkpKQpzdmludDY0X3Qgc3ZsZGZmMXViX2dhdGhlcl9vZmZzZXRfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1Yl9nYXRoZXJfdTMyYmFzZV91MzIpKSkKc3Z1aW50MzJfdCBzdmxkZmYxdWJfZ2F0aGVyX3UzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxdWJfZ2F0aGVyX3U2NGJhc2VfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZGZmMXViX2dhdGhlcl91NjQoc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXViX2dhdGhlcl91MzJiYXNlX3MzMikpKQpzdmludDMyX3Qgc3ZsZGZmMXViX2dhdGhlcl9zMzIoc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXViX2dhdGhlcl91NjRiYXNlX3M2NCkpKQpzdmludDY0X3Qgc3ZsZGZmMXViX2dhdGhlcl9zNjQoc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXViX2dhdGhlcl9zMzJvZmZzZXRfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZGZmMXViX2dhdGhlcl9vZmZzZXRfdTMyKHN2Ym9vbF90LCB1aW50OF90IGNvbnN0ICosIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxdWJfZ2F0aGVyX3MzMm9mZnNldF9zMzIpKSkKc3ZpbnQzMl90IHN2bGRmZjF1Yl9nYXRoZXJfb2Zmc2V0X3MzMihzdmJvb2xfdCwgdWludDhfdCBjb25zdCAqLCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXViX2dhdGhlcl91MzJvZmZzZXRfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZGZmMXViX2dhdGhlcl9vZmZzZXRfdTMyKHN2Ym9vbF90LCB1aW50OF90IGNvbnN0ICosIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXViX2dhdGhlcl91MzJvZmZzZXRfczMyKSkpCnN2aW50MzJfdCBzdmxkZmYxdWJfZ2F0aGVyX29mZnNldF9zMzIoc3Zib29sX3QsIHVpbnQ4X3QgY29uc3QgKiwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxdWJfZ2F0aGVyX3M2NG9mZnNldF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkZmYxdWJfZ2F0aGVyX29mZnNldF91NjQoc3Zib29sX3QsIHVpbnQ4X3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1Yl9nYXRoZXJfczY0b2Zmc2V0X3M2NCkpKQpzdmludDY0X3Qgc3ZsZGZmMXViX2dhdGhlcl9vZmZzZXRfczY0KHN2Ym9vbF90LCB1aW50OF90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxdWJfZ2F0aGVyX3U2NG9mZnNldF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkZmYxdWJfZ2F0aGVyX29mZnNldF91NjQoc3Zib29sX3QsIHVpbnQ4X3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxdWJfZ2F0aGVyX3U2NG9mZnNldF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRmZjF1Yl9nYXRoZXJfb2Zmc2V0X3M2NChzdmJvb2xfdCwgdWludDhfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1aF9nYXRoZXJfdTMyYmFzZV9pbmRleF91MzIpKSkKc3Z1aW50MzJfdCBzdmxkZmYxdWhfZ2F0aGVyX2luZGV4X3UzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxdWhfZ2F0aGVyX3U2NGJhc2VfaW5kZXhfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZGZmMXVoX2dhdGhlcl9pbmRleF91NjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXVoX2dhdGhlcl91MzJiYXNlX2luZGV4X3MzMikpKQpzdmludDMyX3Qgc3ZsZGZmMXVoX2dhdGhlcl9pbmRleF9zMzIoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXVoX2dhdGhlcl91NjRiYXNlX2luZGV4X3M2NCkpKQpzdmludDY0X3Qgc3ZsZGZmMXVoX2dhdGhlcl9pbmRleF9zNjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXVoX2dhdGhlcl91MzJiYXNlX29mZnNldF91MzIpKSkKc3Z1aW50MzJfdCBzdmxkZmYxdWhfZ2F0aGVyX29mZnNldF91MzIoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXVoX2dhdGhlcl91NjRiYXNlX29mZnNldF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkZmYxdWhfZ2F0aGVyX29mZnNldF91NjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXVoX2dhdGhlcl91MzJiYXNlX29mZnNldF9zMzIpKSkKc3ZpbnQzMl90IHN2bGRmZjF1aF9nYXRoZXJfb2Zmc2V0X3MzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxdWhfZ2F0aGVyX3U2NGJhc2Vfb2Zmc2V0X3M2NCkpKQpzdmludDY0X3Qgc3ZsZGZmMXVoX2dhdGhlcl9vZmZzZXRfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1aF9nYXRoZXJfdTMyYmFzZV91MzIpKSkKc3Z1aW50MzJfdCBzdmxkZmYxdWhfZ2F0aGVyX3UzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxdWhfZ2F0aGVyX3U2NGJhc2VfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZGZmMXVoX2dhdGhlcl91NjQoc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXVoX2dhdGhlcl91MzJiYXNlX3MzMikpKQpzdmludDMyX3Qgc3ZsZGZmMXVoX2dhdGhlcl9zMzIoc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXVoX2dhdGhlcl91NjRiYXNlX3M2NCkpKQpzdmludDY0X3Qgc3ZsZGZmMXVoX2dhdGhlcl9zNjQoc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXVoX2dhdGhlcl9zMzJpbmRleF91MzIpKSkKc3Z1aW50MzJfdCBzdmxkZmYxdWhfZ2F0aGVyX2luZGV4X3UzMihzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKiwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1aF9nYXRoZXJfczMyaW5kZXhfczMyKSkpCnN2aW50MzJfdCBzdmxkZmYxdWhfZ2F0aGVyX2luZGV4X3MzMihzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKiwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1aF9nYXRoZXJfdTMyaW5kZXhfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZGZmMXVoX2dhdGhlcl9pbmRleF91MzIoc3Zib29sX3QsIHVpbnQxNl90IGNvbnN0ICosIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXVoX2dhdGhlcl91MzJpbmRleF9zMzIpKSkKc3ZpbnQzMl90IHN2bGRmZjF1aF9nYXRoZXJfaW5kZXhfczMyKHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqLCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1aF9nYXRoZXJfczY0aW5kZXhfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZGZmMXVoX2dhdGhlcl9pbmRleF91NjQoc3Zib29sX3QsIHVpbnQxNl90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxdWhfZ2F0aGVyX3M2NGluZGV4X3M2NCkpKQpzdmludDY0X3Qgc3ZsZGZmMXVoX2dhdGhlcl9pbmRleF9zNjQoc3Zib29sX3QsIHVpbnQxNl90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxdWhfZ2F0aGVyX3U2NGluZGV4X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRmZjF1aF9nYXRoZXJfaW5kZXhfdTY0KHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1aF9nYXRoZXJfdTY0aW5kZXhfczY0KSkpCnN2aW50NjRfdCBzdmxkZmYxdWhfZ2F0aGVyX2luZGV4X3M2NChzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxdWhfZ2F0aGVyX3MzMm9mZnNldF91MzIpKSkKc3Z1aW50MzJfdCBzdmxkZmYxdWhfZ2F0aGVyX29mZnNldF91MzIoc3Zib29sX3QsIHVpbnQxNl90IGNvbnN0ICosIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxdWhfZ2F0aGVyX3MzMm9mZnNldF9zMzIpKSkKc3ZpbnQzMl90IHN2bGRmZjF1aF9nYXRoZXJfb2Zmc2V0X3MzMihzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKiwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1aF9nYXRoZXJfdTMyb2Zmc2V0X3UzMikpKQpzdnVpbnQzMl90IHN2bGRmZjF1aF9nYXRoZXJfb2Zmc2V0X3UzMihzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKiwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxdWhfZ2F0aGVyX3UzMm9mZnNldF9zMzIpKSkKc3ZpbnQzMl90IHN2bGRmZjF1aF9nYXRoZXJfb2Zmc2V0X3MzMihzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKiwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxdWhfZ2F0aGVyX3M2NG9mZnNldF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkZmYxdWhfZ2F0aGVyX29mZnNldF91NjQoc3Zib29sX3QsIHVpbnQxNl90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxdWhfZ2F0aGVyX3M2NG9mZnNldF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRmZjF1aF9nYXRoZXJfb2Zmc2V0X3M2NChzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1aF9nYXRoZXJfdTY0b2Zmc2V0X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRmZjF1aF9nYXRoZXJfb2Zmc2V0X3U2NChzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxdWhfZ2F0aGVyX3U2NG9mZnNldF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRmZjF1aF9nYXRoZXJfb2Zmc2V0X3M2NChzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxdXdfZ2F0aGVyX3U2NGJhc2VfaW5kZXhfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZGZmMXV3X2dhdGhlcl9pbmRleF91NjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXV3X2dhdGhlcl91NjRiYXNlX2luZGV4X3M2NCkpKQpzdmludDY0X3Qgc3ZsZGZmMXV3X2dhdGhlcl9pbmRleF9zNjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXV3X2dhdGhlcl91NjRiYXNlX29mZnNldF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkZmYxdXdfZ2F0aGVyX29mZnNldF91NjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXV3X2dhdGhlcl91NjRiYXNlX29mZnNldF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRmZjF1d19nYXRoZXJfb2Zmc2V0X3M2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkZmYxdXdfZ2F0aGVyX3U2NGJhc2VfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZGZmMXV3X2dhdGhlcl91NjQoc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXV3X2dhdGhlcl91NjRiYXNlX3M2NCkpKQpzdmludDY0X3Qgc3ZsZGZmMXV3X2dhdGhlcl9zNjQoc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXV3X2dhdGhlcl9zNjRpbmRleF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkZmYxdXdfZ2F0aGVyX2luZGV4X3U2NChzdmJvb2xfdCwgdWludDMyX3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1d19nYXRoZXJfczY0aW5kZXhfczY0KSkpCnN2aW50NjRfdCBzdmxkZmYxdXdfZ2F0aGVyX2luZGV4X3M2NChzdmJvb2xfdCwgdWludDMyX3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1d19nYXRoZXJfdTY0aW5kZXhfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZGZmMXV3X2dhdGhlcl9pbmRleF91NjQoc3Zib29sX3QsIHVpbnQzMl90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXV3X2dhdGhlcl91NjRpbmRleF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRmZjF1d19nYXRoZXJfaW5kZXhfczY0KHN2Ym9vbF90LCB1aW50MzJfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1d19nYXRoZXJfczY0b2Zmc2V0X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRmZjF1d19nYXRoZXJfb2Zmc2V0X3U2NChzdmJvb2xfdCwgdWludDMyX3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1d19nYXRoZXJfczY0b2Zmc2V0X3M2NCkpKQpzdmludDY0X3Qgc3ZsZGZmMXV3X2dhdGhlcl9vZmZzZXRfczY0KHN2Ym9vbF90LCB1aW50MzJfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMXV3X2dhdGhlcl91NjRvZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZGZmMXV3X2dhdGhlcl9vZmZzZXRfdTY0KHN2Ym9vbF90LCB1aW50MzJfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjF1d19nYXRoZXJfdTY0b2Zmc2V0X3M2NCkpKQpzdmludDY0X3Qgc3ZsZGZmMXV3X2dhdGhlcl9vZmZzZXRfczY0KHN2Ym9vbF90LCB1aW50MzJfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRuZjFfdTgpKSkKc3Z1aW50OF90IHN2bGRuZjEoc3Zib29sX3QsIHVpbnQ4X3QgY29uc3QgKik7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbmYxX3UzMikpKQpzdnVpbnQzMl90IHN2bGRuZjEoc3Zib29sX3QsIHVpbnQzMl90IGNvbnN0ICopOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG5mMV91NjQpKSkKc3Z1aW50NjRfdCBzdmxkbmYxKHN2Ym9vbF90LCB1aW50NjRfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRuZjFfdTE2KSkpCnN2dWludDE2X3Qgc3ZsZG5mMShzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKik7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbmYxX3M4KSkpCnN2aW50OF90IHN2bGRuZjEoc3Zib29sX3QsIGludDhfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRuZjFfZjY0KSkpCnN2ZmxvYXQ2NF90IHN2bGRuZjEoc3Zib29sX3QsIGZsb2F0NjRfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRuZjFfZjMyKSkpCnN2ZmxvYXQzMl90IHN2bGRuZjEoc3Zib29sX3QsIGZsb2F0MzJfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRuZjFfZjE2KSkpCnN2ZmxvYXQxNl90IHN2bGRuZjEoc3Zib29sX3QsIGZsb2F0MTZfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRuZjFfczMyKSkpCnN2aW50MzJfdCBzdmxkbmYxKHN2Ym9vbF90LCBpbnQzMl90IGNvbnN0ICopOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG5mMV9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRuZjEoc3Zib29sX3QsIGludDY0X3QgY29uc3QgKik7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbmYxX3MxNikpKQpzdmludDE2X3Qgc3ZsZG5mMShzdmJvb2xfdCwgaW50MTZfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRuZjFfdm51bV91OCkpKQpzdnVpbnQ4X3Qgc3ZsZG5mMV92bnVtKHN2Ym9vbF90LCB1aW50OF90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG5mMV92bnVtX3UzMikpKQpzdnVpbnQzMl90IHN2bGRuZjFfdm51bShzdmJvb2xfdCwgdWludDMyX3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbmYxX3ZudW1fdTY0KSkpCnN2dWludDY0X3Qgc3ZsZG5mMV92bnVtKHN2Ym9vbF90LCB1aW50NjRfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRuZjFfdm51bV91MTYpKSkKc3Z1aW50MTZfdCBzdmxkbmYxX3ZudW0oc3Zib29sX3QsIHVpbnQxNl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG5mMV92bnVtX3M4KSkpCnN2aW50OF90IHN2bGRuZjFfdm51bShzdmJvb2xfdCwgaW50OF90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG5mMV92bnVtX2Y2NCkpKQpzdmZsb2F0NjRfdCBzdmxkbmYxX3ZudW0oc3Zib29sX3QsIGZsb2F0NjRfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRuZjFfdm51bV9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3ZsZG5mMV92bnVtKHN2Ym9vbF90LCBmbG9hdDMyX3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbmYxX3ZudW1fZjE2KSkpCnN2ZmxvYXQxNl90IHN2bGRuZjFfdm51bShzdmJvb2xfdCwgZmxvYXQxNl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG5mMV92bnVtX3MzMikpKQpzdmludDMyX3Qgc3ZsZG5mMV92bnVtKHN2Ym9vbF90LCBpbnQzMl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG5mMV92bnVtX3M2NCkpKQpzdmludDY0X3Qgc3ZsZG5mMV92bnVtKHN2Ym9vbF90LCBpbnQ2NF90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG5mMV92bnVtX3MxNikpKQpzdmludDE2X3Qgc3ZsZG5mMV92bnVtKHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MV91OCkpKQpzdnVpbnQ4X3Qgc3ZsZG50MShzdmJvb2xfdCwgdWludDhfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZG50MShzdmJvb2xfdCwgdWludDMyX3QgY29uc3QgKik7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxX3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRudDEoc3Zib29sX3QsIHVpbnQ2NF90IGNvbnN0ICopOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MV91MTYpKSkKc3Z1aW50MTZfdCBzdmxkbnQxKHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfczgpKSkKc3ZpbnQ4X3Qgc3ZsZG50MShzdmJvb2xfdCwgaW50OF90IGNvbnN0ICopOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MV9mNjQpKSkKc3ZmbG9hdDY0X3Qgc3ZsZG50MShzdmJvb2xfdCwgZmxvYXQ2NF90IGNvbnN0ICopOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MV9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3ZsZG50MShzdmJvb2xfdCwgZmxvYXQzMl90IGNvbnN0ICopOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MV9mMTYpKSkKc3ZmbG9hdDE2X3Qgc3ZsZG50MShzdmJvb2xfdCwgZmxvYXQxNl90IGNvbnN0ICopOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MV9zMzIpKSkKc3ZpbnQzMl90IHN2bGRudDEoc3Zib29sX3QsIGludDMyX3QgY29uc3QgKik7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxX3M2NCkpKQpzdmludDY0X3Qgc3ZsZG50MShzdmJvb2xfdCwgaW50NjRfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfczE2KSkpCnN2aW50MTZfdCBzdmxkbnQxKHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICopOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MV92bnVtX3U4KSkpCnN2dWludDhfdCBzdmxkbnQxX3ZudW0oc3Zib29sX3QsIHVpbnQ4X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxX3ZudW1fdTMyKSkpCnN2dWludDMyX3Qgc3ZsZG50MV92bnVtKHN2Ym9vbF90LCB1aW50MzJfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfdm51bV91NjQpKSkKc3Z1aW50NjRfdCBzdmxkbnQxX3ZudW0oc3Zib29sX3QsIHVpbnQ2NF90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MV92bnVtX3UxNikpKQpzdnVpbnQxNl90IHN2bGRudDFfdm51bShzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxX3ZudW1fczgpKSkKc3ZpbnQ4X3Qgc3ZsZG50MV92bnVtKHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxX3ZudW1fZjY0KSkpCnN2ZmxvYXQ2NF90IHN2bGRudDFfdm51bShzdmJvb2xfdCwgZmxvYXQ2NF90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MV92bnVtX2YzMikpKQpzdmZsb2F0MzJfdCBzdmxkbnQxX3ZudW0oc3Zib29sX3QsIGZsb2F0MzJfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfdm51bV9mMTYpKSkKc3ZmbG9hdDE2X3Qgc3ZsZG50MV92bnVtKHN2Ym9vbF90LCBmbG9hdDE2X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxX3ZudW1fczMyKSkpCnN2aW50MzJfdCBzdmxkbnQxX3ZudW0oc3Zib29sX3QsIGludDMyX3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxX3ZudW1fczY0KSkpCnN2aW50NjRfdCBzdmxkbnQxX3ZudW0oc3Zib29sX3QsIGludDY0X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxX3ZudW1fczE2KSkpCnN2aW50MTZfdCBzdmxkbnQxX3ZudW0oc3Zib29sX3QsIGludDE2X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxlbl91OCkpKQp1aW50NjRfdCBzdmxlbihzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZW5fdTMyKSkpCnVpbnQ2NF90IHN2bGVuKHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZW5fdTY0KSkpCnVpbnQ2NF90IHN2bGVuKHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZW5fdTE2KSkpCnVpbnQ2NF90IHN2bGVuKHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZW5fczgpKSkKdWludDY0X3Qgc3ZsZW4oc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZW5fZjY0KSkpCnVpbnQ2NF90IHN2bGVuKHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGVuX2YzMikpKQp1aW50NjRfdCBzdmxlbihzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxlbl9mMTYpKSkKdWludDY0X3Qgc3ZsZW4oc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZW5fczMyKSkpCnVpbnQ2NF90IHN2bGVuKHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxlbl9zNjQpKSkKdWludDY0X3Qgc3ZsZW4oc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGVuX3MxNikpKQp1aW50NjRfdCBzdmxlbihzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfbl91OF9tKSkpCnN2dWludDhfdCBzdmxzbF9tKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfbl91MzJfbSkpKQpzdnVpbnQzMl90IHN2bHNsX20oc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX25fdTY0X20pKSkKc3Z1aW50NjRfdCBzdmxzbF9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzbF9uX3UxNl9tKSkpCnN2dWludDE2X3Qgc3Zsc2xfbShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfbl9zOF9tKSkpCnN2aW50OF90IHN2bHNsX20oc3Zib29sX3QsIHN2aW50OF90LCB1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX25fczMyX20pKSkKc3ZpbnQzMl90IHN2bHNsX20oc3Zib29sX3QsIHN2aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfbl9zNjRfbSkpKQpzdmludDY0X3Qgc3Zsc2xfbShzdmJvb2xfdCwgc3ZpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzbF9uX3MxNl9tKSkpCnN2aW50MTZfdCBzdmxzbF9tKHN2Ym9vbF90LCBzdmludDE2X3QsIHVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX25fdThfeCkpKQpzdnVpbnQ4X3Qgc3Zsc2xfeChzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX25fdTMyX3gpKSkKc3Z1aW50MzJfdCBzdmxzbF94KHN2Ym9vbF90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzbF9uX3U2NF94KSkpCnN2dWludDY0X3Qgc3Zsc2xfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfbl91MTZfeCkpKQpzdnVpbnQxNl90IHN2bHNsX3goc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX25fczhfeCkpKQpzdmludDhfdCBzdmxzbF94KHN2Ym9vbF90LCBzdmludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzbF9uX3MzMl94KSkpCnN2aW50MzJfdCBzdmxzbF94KHN2Ym9vbF90LCBzdmludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX25fczY0X3gpKSkKc3ZpbnQ2NF90IHN2bHNsX3goc3Zib29sX3QsIHN2aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfbl9zMTZfeCkpKQpzdmludDE2X3Qgc3Zsc2xfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzbF9uX3U4X3opKSkKc3Z1aW50OF90IHN2bHNsX3ooc3Zib29sX3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzbF9uX3UzMl96KSkpCnN2dWludDMyX3Qgc3Zsc2xfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfbl91NjRfeikpKQpzdnVpbnQ2NF90IHN2bHNsX3ooc3Zib29sX3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX25fdTE2X3opKSkKc3Z1aW50MTZfdCBzdmxzbF96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzbF9uX3M4X3opKSkKc3ZpbnQ4X3Qgc3Zsc2xfeihzdmJvb2xfdCwgc3ZpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfbl9zMzJfeikpKQpzdmludDMyX3Qgc3Zsc2xfeihzdmJvb2xfdCwgc3ZpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzbF9uX3M2NF96KSkpCnN2aW50NjRfdCBzdmxzbF96KHN2Ym9vbF90LCBzdmludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX25fczE2X3opKSkKc3ZpbnQxNl90IHN2bHNsX3ooc3Zib29sX3QsIHN2aW50MTZfdCwgdWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfdThfbSkpKQpzdnVpbnQ4X3Qgc3Zsc2xfbShzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfdTMyX20pKSkKc3Z1aW50MzJfdCBzdmxzbF9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX3U2NF9tKSkpCnN2dWludDY0X3Qgc3Zsc2xfbShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzbF91MTZfbSkpKQpzdnVpbnQxNl90IHN2bHNsX20oc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfczhfbSkpKQpzdmludDhfdCBzdmxzbF9tKHN2Ym9vbF90LCBzdmludDhfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX3MzMl9tKSkpCnN2aW50MzJfdCBzdmxzbF9tKHN2Ym9vbF90LCBzdmludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfczY0X20pKSkKc3ZpbnQ2NF90IHN2bHNsX20oc3Zib29sX3QsIHN2aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzbF9zMTZfbSkpKQpzdmludDE2X3Qgc3Zsc2xfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX3U4X3gpKSkKc3Z1aW50OF90IHN2bHNsX3goc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX3UzMl94KSkpCnN2dWludDMyX3Qgc3Zsc2xfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzbF91NjRfeCkpKQpzdnVpbnQ2NF90IHN2bHNsX3goc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfdTE2X3gpKSkKc3Z1aW50MTZfdCBzdmxzbF94KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX3M4X3gpKSkKc3ZpbnQ4X3Qgc3Zsc2xfeChzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzbF9zMzJfeCkpKQpzdmludDMyX3Qgc3Zsc2xfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX3M2NF94KSkpCnN2aW50NjRfdCBzdmxzbF94KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfczE2X3gpKSkKc3ZpbnQxNl90IHN2bHNsX3goc3Zib29sX3QsIHN2aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzbF91OF96KSkpCnN2dWludDhfdCBzdmxzbF96KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzbF91MzJfeikpKQpzdnVpbnQzMl90IHN2bHNsX3ooc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfdTY0X3opKSkKc3Z1aW50NjRfdCBzdmxzbF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX3UxNl96KSkpCnN2dWludDE2X3Qgc3Zsc2xfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzbF9zOF96KSkpCnN2aW50OF90IHN2bHNsX3ooc3Zib29sX3QsIHN2aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfczMyX3opKSkKc3ZpbnQzMl90IHN2bHNsX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzbF9zNjRfeikpKQpzdmludDY0X3Qgc3Zsc2xfeihzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX3MxNl96KSkpCnN2aW50MTZfdCBzdmxzbF96KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfd2lkZV9uX3U4X20pKSkKc3Z1aW50OF90IHN2bHNsX3dpZGVfbShzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzbF93aWRlX25fdTMyX20pKSkKc3Z1aW50MzJfdCBzdmxzbF93aWRlX20oc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX3dpZGVfbl91MTZfbSkpKQpzdnVpbnQxNl90IHN2bHNsX3dpZGVfbShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfd2lkZV9uX3M4X20pKSkKc3ZpbnQ4X3Qgc3Zsc2xfd2lkZV9tKHN2Ym9vbF90LCBzdmludDhfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfd2lkZV9uX3MzMl9tKSkpCnN2aW50MzJfdCBzdmxzbF93aWRlX20oc3Zib29sX3QsIHN2aW50MzJfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfd2lkZV9uX3MxNl9tKSkpCnN2aW50MTZfdCBzdmxzbF93aWRlX20oc3Zib29sX3QsIHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfd2lkZV9uX3U4X3gpKSkKc3Z1aW50OF90IHN2bHNsX3dpZGVfeChzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzbF93aWRlX25fdTMyX3gpKSkKc3Z1aW50MzJfdCBzdmxzbF93aWRlX3goc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX3dpZGVfbl91MTZfeCkpKQpzdnVpbnQxNl90IHN2bHNsX3dpZGVfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfd2lkZV9uX3M4X3gpKSkKc3ZpbnQ4X3Qgc3Zsc2xfd2lkZV94KHN2Ym9vbF90LCBzdmludDhfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfd2lkZV9uX3MzMl94KSkpCnN2aW50MzJfdCBzdmxzbF93aWRlX3goc3Zib29sX3QsIHN2aW50MzJfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfd2lkZV9uX3MxNl94KSkpCnN2aW50MTZfdCBzdmxzbF93aWRlX3goc3Zib29sX3QsIHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfd2lkZV9uX3U4X3opKSkKc3Z1aW50OF90IHN2bHNsX3dpZGVfeihzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzbF93aWRlX25fdTMyX3opKSkKc3Z1aW50MzJfdCBzdmxzbF93aWRlX3ooc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX3dpZGVfbl91MTZfeikpKQpzdnVpbnQxNl90IHN2bHNsX3dpZGVfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfd2lkZV9uX3M4X3opKSkKc3ZpbnQ4X3Qgc3Zsc2xfd2lkZV96KHN2Ym9vbF90LCBzdmludDhfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfd2lkZV9uX3MzMl96KSkpCnN2aW50MzJfdCBzdmxzbF93aWRlX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfd2lkZV9uX3MxNl96KSkpCnN2aW50MTZfdCBzdmxzbF93aWRlX3ooc3Zib29sX3QsIHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfd2lkZV91OF9tKSkpCnN2dWludDhfdCBzdmxzbF93aWRlX20oc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzbF93aWRlX3UzMl9tKSkpCnN2dWludDMyX3Qgc3Zsc2xfd2lkZV9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX3dpZGVfdTE2X20pKSkKc3Z1aW50MTZfdCBzdmxzbF93aWRlX20oc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfd2lkZV9zOF9tKSkpCnN2aW50OF90IHN2bHNsX3dpZGVfbShzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfd2lkZV9zMzJfbSkpKQpzdmludDMyX3Qgc3Zsc2xfd2lkZV9tKHN2Ym9vbF90LCBzdmludDMyX3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfd2lkZV9zMTZfbSkpKQpzdmludDE2X3Qgc3Zsc2xfd2lkZV9tKHN2Ym9vbF90LCBzdmludDE2X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfd2lkZV91OF94KSkpCnN2dWludDhfdCBzdmxzbF93aWRlX3goc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzbF93aWRlX3UzMl94KSkpCnN2dWludDMyX3Qgc3Zsc2xfd2lkZV94KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX3dpZGVfdTE2X3gpKSkKc3Z1aW50MTZfdCBzdmxzbF93aWRlX3goc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfd2lkZV9zOF94KSkpCnN2aW50OF90IHN2bHNsX3dpZGVfeChzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfd2lkZV9zMzJfeCkpKQpzdmludDMyX3Qgc3Zsc2xfd2lkZV94KHN2Ym9vbF90LCBzdmludDMyX3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfd2lkZV9zMTZfeCkpKQpzdmludDE2X3Qgc3Zsc2xfd2lkZV94KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfd2lkZV91OF96KSkpCnN2dWludDhfdCBzdmxzbF93aWRlX3ooc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzbF93aWRlX3UzMl96KSkpCnN2dWludDMyX3Qgc3Zsc2xfd2lkZV96KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNsX3dpZGVfdTE2X3opKSkKc3Z1aW50MTZfdCBzdmxzbF93aWRlX3ooc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfd2lkZV9zOF96KSkpCnN2aW50OF90IHN2bHNsX3dpZGVfeihzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfd2lkZV9zMzJfeikpKQpzdmludDMyX3Qgc3Zsc2xfd2lkZV96KHN2Ym9vbF90LCBzdmludDMyX3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc2xfd2lkZV9zMTZfeikpKQpzdmludDE2X3Qgc3Zsc2xfd2lkZV96KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc3Jfbl91OF9tKSkpCnN2dWludDhfdCBzdmxzcl9tKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc3Jfbl91MzJfbSkpKQpzdnVpbnQzMl90IHN2bHNyX20oc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNyX25fdTY0X20pKSkKc3Z1aW50NjRfdCBzdmxzcl9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzcl9uX3UxNl9tKSkpCnN2dWludDE2X3Qgc3Zsc3JfbShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc3Jfbl91OF94KSkpCnN2dWludDhfdCBzdmxzcl94KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc3Jfbl91MzJfeCkpKQpzdnVpbnQzMl90IHN2bHNyX3goc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNyX25fdTY0X3gpKSkKc3Z1aW50NjRfdCBzdmxzcl94KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzcl9uX3UxNl94KSkpCnN2dWludDE2X3Qgc3Zsc3JfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc3Jfbl91OF96KSkpCnN2dWludDhfdCBzdmxzcl96KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc3Jfbl91MzJfeikpKQpzdnVpbnQzMl90IHN2bHNyX3ooc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNyX25fdTY0X3opKSkKc3Z1aW50NjRfdCBzdmxzcl96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzcl9uX3UxNl96KSkpCnN2dWludDE2X3Qgc3Zsc3JfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc3JfdThfbSkpKQpzdnVpbnQ4X3Qgc3Zsc3JfbShzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc3JfdTMyX20pKSkKc3Z1aW50MzJfdCBzdmxzcl9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNyX3U2NF9tKSkpCnN2dWludDY0X3Qgc3Zsc3JfbShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzcl91MTZfbSkpKQpzdnVpbnQxNl90IHN2bHNyX20oc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc3JfdThfeCkpKQpzdnVpbnQ4X3Qgc3Zsc3JfeChzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc3JfdTMyX3gpKSkKc3Z1aW50MzJfdCBzdmxzcl94KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNyX3U2NF94KSkpCnN2dWludDY0X3Qgc3Zsc3JfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzcl91MTZfeCkpKQpzdnVpbnQxNl90IHN2bHNyX3goc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc3JfdThfeikpKQpzdnVpbnQ4X3Qgc3Zsc3JfeihzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc3JfdTMyX3opKSkKc3Z1aW50MzJfdCBzdmxzcl96KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNyX3U2NF96KSkpCnN2dWludDY0X3Qgc3Zsc3JfeihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzcl91MTZfeikpKQpzdnVpbnQxNl90IHN2bHNyX3ooc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc3Jfd2lkZV9uX3U4X20pKSkKc3Z1aW50OF90IHN2bHNyX3dpZGVfbShzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzcl93aWRlX25fdTMyX20pKSkKc3Z1aW50MzJfdCBzdmxzcl93aWRlX20oc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNyX3dpZGVfbl91MTZfbSkpKQpzdnVpbnQxNl90IHN2bHNyX3dpZGVfbShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc3Jfd2lkZV9uX3U4X3gpKSkKc3Z1aW50OF90IHN2bHNyX3dpZGVfeChzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzcl93aWRlX25fdTMyX3gpKSkKc3Z1aW50MzJfdCBzdmxzcl93aWRlX3goc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNyX3dpZGVfbl91MTZfeCkpKQpzdnVpbnQxNl90IHN2bHNyX3dpZGVfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc3Jfd2lkZV9uX3U4X3opKSkKc3Z1aW50OF90IHN2bHNyX3dpZGVfeihzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzcl93aWRlX25fdTMyX3opKSkKc3Z1aW50MzJfdCBzdmxzcl93aWRlX3ooc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNyX3dpZGVfbl91MTZfeikpKQpzdnVpbnQxNl90IHN2bHNyX3dpZGVfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc3Jfd2lkZV91OF9tKSkpCnN2dWludDhfdCBzdmxzcl93aWRlX20oc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzcl93aWRlX3UzMl9tKSkpCnN2dWludDMyX3Qgc3Zsc3Jfd2lkZV9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNyX3dpZGVfdTE2X20pKSkKc3Z1aW50MTZfdCBzdmxzcl93aWRlX20oc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc3Jfd2lkZV91OF94KSkpCnN2dWludDhfdCBzdmxzcl93aWRlX3goc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzcl93aWRlX3UzMl94KSkpCnN2dWludDMyX3Qgc3Zsc3Jfd2lkZV94KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNyX3dpZGVfdTE2X3gpKSkKc3Z1aW50MTZfdCBzdmxzcl93aWRlX3goc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsc3Jfd2lkZV91OF96KSkpCnN2dWludDhfdCBzdmxzcl93aWRlX3ooc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxzcl93aWRlX3UzMl96KSkpCnN2dWludDMyX3Qgc3Zsc3Jfd2lkZV96KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bHNyX3dpZGVfdTE2X3opKSkKc3Z1aW50MTZfdCBzdmxzcl93aWRlX3ooc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfbl9mNjRfbSkpKQpzdmZsb2F0NjRfdCBzdm1hZF9tKHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QsIGZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1hZF9uX2YzMl9tKSkpCnN2ZmxvYXQzMl90IHN2bWFkX20oc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWFkX25fZjE2X20pKSkKc3ZmbG9hdDE2X3Qgc3ZtYWRfbShzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfbl9mNjRfeCkpKQpzdmZsb2F0NjRfdCBzdm1hZF94KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QsIGZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1hZF9uX2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2bWFkX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWFkX25fZjE2X3gpKSkKc3ZmbG9hdDE2X3Qgc3ZtYWRfeChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfbl9mNjRfeikpKQpzdmZsb2F0NjRfdCBzdm1hZF96KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QsIGZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1hZF9uX2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2bWFkX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWFkX25fZjE2X3opKSkKc3ZmbG9hdDE2X3Qgc3ZtYWRfeihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfbl91OF9tKSkpCnN2dWludDhfdCBzdm1hZF9tKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1hZF9uX3UzMl9tKSkpCnN2dWludDMyX3Qgc3ZtYWRfbShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfbl91NjRfbSkpKQpzdnVpbnQ2NF90IHN2bWFkX20oc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWFkX25fdTE2X20pKSkKc3Z1aW50MTZfdCBzdm1hZF9tKHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1hZF9uX3M4X20pKSkKc3ZpbnQ4X3Qgc3ZtYWRfbShzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfbl9zMzJfbSkpKQpzdmludDMyX3Qgc3ZtYWRfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfbl9zNjRfbSkpKQpzdmludDY0X3Qgc3ZtYWRfbShzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfbl9zMTZfbSkpKQpzdmludDE2X3Qgc3ZtYWRfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfbl91OF94KSkpCnN2dWludDhfdCBzdm1hZF94KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1hZF9uX3UzMl94KSkpCnN2dWludDMyX3Qgc3ZtYWRfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfbl91NjRfeCkpKQpzdnVpbnQ2NF90IHN2bWFkX3goc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWFkX25fdTE2X3gpKSkKc3Z1aW50MTZfdCBzdm1hZF94KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1hZF9uX3M4X3gpKSkKc3ZpbnQ4X3Qgc3ZtYWRfeChzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfbl9zMzJfeCkpKQpzdmludDMyX3Qgc3ZtYWRfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfbl9zNjRfeCkpKQpzdmludDY0X3Qgc3ZtYWRfeChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfbl9zMTZfeCkpKQpzdmludDE2X3Qgc3ZtYWRfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfbl91OF96KSkpCnN2dWludDhfdCBzdm1hZF96KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1hZF9uX3UzMl96KSkpCnN2dWludDMyX3Qgc3ZtYWRfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfbl91NjRfeikpKQpzdnVpbnQ2NF90IHN2bWFkX3ooc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWFkX25fdTE2X3opKSkKc3Z1aW50MTZfdCBzdm1hZF96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1hZF9uX3M4X3opKSkKc3ZpbnQ4X3Qgc3ZtYWRfeihzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfbl9zMzJfeikpKQpzdmludDMyX3Qgc3ZtYWRfeihzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfbl9zNjRfeikpKQpzdmludDY0X3Qgc3ZtYWRfeihzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfbl9zMTZfeikpKQpzdmludDE2X3Qgc3ZtYWRfeihzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZtYWRfbShzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1hZF9mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdm1hZF9tKHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWFkX2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2bWFkX20oc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZtYWRfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1hZF9mMzJfeCkpKQpzdmZsb2F0MzJfdCBzdm1hZF94KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWFkX2YxNl94KSkpCnN2ZmxvYXQxNl90IHN2bWFkX3goc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZtYWRfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1hZF9mMzJfeikpKQpzdmZsb2F0MzJfdCBzdm1hZF96KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWFkX2YxNl96KSkpCnN2ZmxvYXQxNl90IHN2bWFkX3ooc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfdThfbSkpKQpzdnVpbnQ4X3Qgc3ZtYWRfbShzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1hZF91MzJfbSkpKQpzdnVpbnQzMl90IHN2bWFkX20oc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfdTY0X20pKSkKc3Z1aW50NjRfdCBzdm1hZF9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWFkX3UxNl9tKSkpCnN2dWludDE2X3Qgc3ZtYWRfbShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1hZF9zOF9tKSkpCnN2aW50OF90IHN2bWFkX20oc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfczMyX20pKSkKc3ZpbnQzMl90IHN2bWFkX20oc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfczY0X20pKSkKc3ZpbnQ2NF90IHN2bWFkX20oc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfczE2X20pKSkKc3ZpbnQxNl90IHN2bWFkX20oc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfdThfeCkpKQpzdnVpbnQ4X3Qgc3ZtYWRfeChzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1hZF91MzJfeCkpKQpzdnVpbnQzMl90IHN2bWFkX3goc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfdTY0X3gpKSkKc3Z1aW50NjRfdCBzdm1hZF94KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWFkX3UxNl94KSkpCnN2dWludDE2X3Qgc3ZtYWRfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1hZF9zOF94KSkpCnN2aW50OF90IHN2bWFkX3goc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfczMyX3gpKSkKc3ZpbnQzMl90IHN2bWFkX3goc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfczY0X3gpKSkKc3ZpbnQ2NF90IHN2bWFkX3goc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfczE2X3gpKSkKc3ZpbnQxNl90IHN2bWFkX3goc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfdThfeikpKQpzdnVpbnQ4X3Qgc3ZtYWRfeihzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1hZF91MzJfeikpKQpzdnVpbnQzMl90IHN2bWFkX3ooc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfdTY0X3opKSkKc3Z1aW50NjRfdCBzdm1hZF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWFkX3UxNl96KSkpCnN2dWludDE2X3Qgc3ZtYWRfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1hZF9zOF96KSkpCnN2aW50OF90IHN2bWFkX3ooc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfczMyX3opKSkKc3ZpbnQzMl90IHN2bWFkX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfczY0X3opKSkKc3ZpbnQ2NF90IHN2bWFkX3ooc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYWRfczE2X3opKSkKc3ZpbnQxNl90IHN2bWFkX3ooc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfbl9mNjRfbSkpKQpzdmZsb2F0NjRfdCBzdm1heF9tKHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4X25fZjMyX20pKSkKc3ZmbG9hdDMyX3Qgc3ZtYXhfbShzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heF9uX2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2bWF4X20oc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfbl9mNjRfeCkpKQpzdmZsb2F0NjRfdCBzdm1heF94KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4X25fZjMyX3gpKSkKc3ZmbG9hdDMyX3Qgc3ZtYXhfeChzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heF9uX2YxNl94KSkpCnN2ZmxvYXQxNl90IHN2bWF4X3goc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfbl9mNjRfeikpKQpzdmZsb2F0NjRfdCBzdm1heF96KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4X25fZjMyX3opKSkKc3ZmbG9hdDMyX3Qgc3ZtYXhfeihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heF9uX2YxNl96KSkpCnN2ZmxvYXQxNl90IHN2bWF4X3ooc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfbl9zOF9tKSkpCnN2aW50OF90IHN2bWF4X20oc3Zib29sX3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfbl9zMzJfbSkpKQpzdmludDMyX3Qgc3ZtYXhfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4X25fczY0X20pKSkKc3ZpbnQ2NF90IHN2bWF4X20oc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heF9uX3MxNl9tKSkpCnN2aW50MTZfdCBzdm1heF9tKHN2Ym9vbF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfbl9zOF94KSkpCnN2aW50OF90IHN2bWF4X3goc3Zib29sX3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfbl9zMzJfeCkpKQpzdmludDMyX3Qgc3ZtYXhfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4X25fczY0X3gpKSkKc3ZpbnQ2NF90IHN2bWF4X3goc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heF9uX3MxNl94KSkpCnN2aW50MTZfdCBzdm1heF94KHN2Ym9vbF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfbl9zOF96KSkpCnN2aW50OF90IHN2bWF4X3ooc3Zib29sX3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfbl9zMzJfeikpKQpzdmludDMyX3Qgc3ZtYXhfeihzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4X25fczY0X3opKSkKc3ZpbnQ2NF90IHN2bWF4X3ooc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heF9uX3MxNl96KSkpCnN2aW50MTZfdCBzdm1heF96KHN2Ym9vbF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfbl91OF9tKSkpCnN2dWludDhfdCBzdm1heF9tKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfbl91MzJfbSkpKQpzdnVpbnQzMl90IHN2bWF4X20oc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4X25fdTY0X20pKSkKc3Z1aW50NjRfdCBzdm1heF9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heF9uX3UxNl9tKSkpCnN2dWludDE2X3Qgc3ZtYXhfbShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfbl91OF94KSkpCnN2dWludDhfdCBzdm1heF94KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfbl91MzJfeCkpKQpzdnVpbnQzMl90IHN2bWF4X3goc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4X25fdTY0X3gpKSkKc3Z1aW50NjRfdCBzdm1heF94KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heF9uX3UxNl94KSkpCnN2dWludDE2X3Qgc3ZtYXhfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfbl91OF96KSkpCnN2dWludDhfdCBzdm1heF96KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfbl91MzJfeikpKQpzdnVpbnQzMl90IHN2bWF4X3ooc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4X25fdTY0X3opKSkKc3Z1aW50NjRfdCBzdm1heF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heF9uX3UxNl96KSkpCnN2dWludDE2X3Qgc3ZtYXhfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZtYXhfbShzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4X2YzMl9tKSkpCnN2ZmxvYXQzMl90IHN2bWF4X20oc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heF9mMTZfbSkpKQpzdmZsb2F0MTZfdCBzdm1heF9tKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZtYXhfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4X2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2bWF4X3goc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heF9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdm1heF94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZtYXhfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4X2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2bWF4X3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heF9mMTZfeikpKQpzdmZsb2F0MTZfdCBzdm1heF96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfczhfbSkpKQpzdmludDhfdCBzdm1heF9tKHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfczMyX20pKSkKc3ZpbnQzMl90IHN2bWF4X20oc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4X3M2NF9tKSkpCnN2aW50NjRfdCBzdm1heF9tKHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heF9zMTZfbSkpKQpzdmludDE2X3Qgc3ZtYXhfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfczhfeCkpKQpzdmludDhfdCBzdm1heF94KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfczMyX3gpKSkKc3ZpbnQzMl90IHN2bWF4X3goc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4X3M2NF94KSkpCnN2aW50NjRfdCBzdm1heF94KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heF9zMTZfeCkpKQpzdmludDE2X3Qgc3ZtYXhfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfczhfeikpKQpzdmludDhfdCBzdm1heF96KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfczMyX3opKSkKc3ZpbnQzMl90IHN2bWF4X3ooc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4X3M2NF96KSkpCnN2aW50NjRfdCBzdm1heF96KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heF9zMTZfeikpKQpzdmludDE2X3Qgc3ZtYXhfeihzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfdThfbSkpKQpzdnVpbnQ4X3Qgc3ZtYXhfbShzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfdTMyX20pKSkKc3Z1aW50MzJfdCBzdm1heF9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4X3U2NF9tKSkpCnN2dWludDY0X3Qgc3ZtYXhfbShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heF91MTZfbSkpKQpzdnVpbnQxNl90IHN2bWF4X20oc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfdThfeCkpKQpzdnVpbnQ4X3Qgc3ZtYXhfeChzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfdTMyX3gpKSkKc3Z1aW50MzJfdCBzdm1heF94KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4X3U2NF94KSkpCnN2dWludDY0X3Qgc3ZtYXhfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heF91MTZfeCkpKQpzdnVpbnQxNl90IHN2bWF4X3goc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfdThfeikpKQpzdnVpbnQ4X3Qgc3ZtYXhfeihzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhfdTMyX3opKSkKc3Z1aW50MzJfdCBzdm1heF96KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4X3U2NF96KSkpCnN2dWludDY0X3Qgc3ZtYXhfeihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heF91MTZfeikpKQpzdnVpbnQxNl90IHN2bWF4X3ooc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhubV9uX2Y2NF9tKSkpCnN2ZmxvYXQ2NF90IHN2bWF4bm1fbShzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIGZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heG5tX25fZjMyX20pKSkKc3ZmbG9hdDMyX3Qgc3ZtYXhubV9tKHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4bm1fbl9mMTZfbSkpKQpzdmZsb2F0MTZfdCBzdm1heG5tX20oc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhubV9uX2Y2NF94KSkpCnN2ZmxvYXQ2NF90IHN2bWF4bm1feChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIGZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heG5tX25fZjMyX3gpKSkKc3ZmbG9hdDMyX3Qgc3ZtYXhubV94KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4bm1fbl9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdm1heG5tX3goc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhubV9uX2Y2NF96KSkpCnN2ZmxvYXQ2NF90IHN2bWF4bm1feihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIGZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heG5tX25fZjMyX3opKSkKc3ZmbG9hdDMyX3Qgc3ZtYXhubV96KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4bm1fbl9mMTZfeikpKQpzdmZsb2F0MTZfdCBzdm1heG5tX3ooc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhubV9mNjRfbSkpKQpzdmZsb2F0NjRfdCBzdm1heG5tX20oc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heG5tX2YzMl9tKSkpCnN2ZmxvYXQzMl90IHN2bWF4bm1fbShzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4bm1fZjE2X20pKSkKc3ZmbG9hdDE2X3Qgc3ZtYXhubV9tKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhubV9mNjRfeCkpKQpzdmZsb2F0NjRfdCBzdm1heG5tX3goc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heG5tX2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2bWF4bm1feChzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4bm1fZjE2X3gpKSkKc3ZmbG9hdDE2X3Qgc3ZtYXhubV94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhubV9mNjRfeikpKQpzdmZsb2F0NjRfdCBzdm1heG5tX3ooc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heG5tX2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2bWF4bm1feihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4bm1fZjE2X3opKSkKc3ZmbG9hdDE2X3Qgc3ZtYXhubV96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhubXZfZjY0KSkpCmZsb2F0NjRfdCBzdm1heG5tdihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhubXZfZjMyKSkpCmZsb2F0MzJfdCBzdm1heG5tdihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhubXZfZjE2KSkpCmZsb2F0MTZfdCBzdm1heG5tdihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXh2X2Y2NCkpKQpmbG9hdDY0X3Qgc3ZtYXh2KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heHZfZjMyKSkpCmZsb2F0MzJfdCBzdm1heHYoc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4dl9mMTYpKSkKZmxvYXQxNl90IHN2bWF4dihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXh2X3M4KSkpCmludDhfdCBzdm1heHYoc3Zib29sX3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4dl9zMzIpKSkKaW50MzJfdCBzdm1heHYoc3Zib29sX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heHZfczY0KSkpCmludDY0X3Qgc3ZtYXh2KHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXh2X3MxNikpKQppbnQxNl90IHN2bWF4dihzdmJvb2xfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4dl91OCkpKQp1aW50OF90IHN2bWF4dihzdmJvb2xfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4dl91MzIpKSkKdWludDMyX3Qgc3ZtYXh2KHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4dl91NjQpKSkKdWludDY0X3Qgc3ZtYXh2KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4dl91MTYpKSkKdWludDE2X3Qgc3ZtYXh2KHN2Ym9vbF90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX25fZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZtaW5fbShzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIGZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbl9uX2YzMl9tKSkpCnN2ZmxvYXQzMl90IHN2bWluX20oc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5fbl9mMTZfbSkpKQpzdmZsb2F0MTZfdCBzdm1pbl9tKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX25fZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZtaW5feChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIGZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbl9uX2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2bWluX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5fbl9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdm1pbl94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX25fZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZtaW5feihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIGZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbl9uX2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2bWluX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5fbl9mMTZfeikpKQpzdmZsb2F0MTZfdCBzdm1pbl96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX25fczhfbSkpKQpzdmludDhfdCBzdm1pbl9tKHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX25fczMyX20pKSkKc3ZpbnQzMl90IHN2bWluX20oc3Zib29sX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbl9uX3M2NF9tKSkpCnN2aW50NjRfdCBzdm1pbl9tKHN2Ym9vbF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5fbl9zMTZfbSkpKQpzdmludDE2X3Qgc3ZtaW5fbShzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX25fczhfeCkpKQpzdmludDhfdCBzdm1pbl94KHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX25fczMyX3gpKSkKc3ZpbnQzMl90IHN2bWluX3goc3Zib29sX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbl9uX3M2NF94KSkpCnN2aW50NjRfdCBzdm1pbl94KHN2Ym9vbF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5fbl9zMTZfeCkpKQpzdmludDE2X3Qgc3ZtaW5feChzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX25fczhfeikpKQpzdmludDhfdCBzdm1pbl96KHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX25fczMyX3opKSkKc3ZpbnQzMl90IHN2bWluX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbl9uX3M2NF96KSkpCnN2aW50NjRfdCBzdm1pbl96KHN2Ym9vbF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5fbl9zMTZfeikpKQpzdmludDE2X3Qgc3ZtaW5feihzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX25fdThfbSkpKQpzdnVpbnQ4X3Qgc3ZtaW5fbShzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX25fdTMyX20pKSkKc3Z1aW50MzJfdCBzdm1pbl9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbl9uX3U2NF9tKSkpCnN2dWludDY0X3Qgc3ZtaW5fbShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5fbl91MTZfbSkpKQpzdnVpbnQxNl90IHN2bWluX20oc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX25fdThfeCkpKQpzdnVpbnQ4X3Qgc3ZtaW5feChzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX25fdTMyX3gpKSkKc3Z1aW50MzJfdCBzdm1pbl94KHN2Ym9vbF90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbl9uX3U2NF94KSkpCnN2dWludDY0X3Qgc3ZtaW5feChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5fbl91MTZfeCkpKQpzdnVpbnQxNl90IHN2bWluX3goc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX25fdThfeikpKQpzdnVpbnQ4X3Qgc3ZtaW5feihzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX25fdTMyX3opKSkKc3Z1aW50MzJfdCBzdm1pbl96KHN2Ym9vbF90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbl9uX3U2NF96KSkpCnN2dWludDY0X3Qgc3ZtaW5feihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5fbl91MTZfeikpKQpzdnVpbnQxNl90IHN2bWluX3ooc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX2Y2NF9tKSkpCnN2ZmxvYXQ2NF90IHN2bWluX20oc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbl9mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdm1pbl9tKHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5fZjE2X20pKSkKc3ZmbG9hdDE2X3Qgc3ZtaW5fbShzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX2Y2NF94KSkpCnN2ZmxvYXQ2NF90IHN2bWluX3goc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbl9mMzJfeCkpKQpzdmZsb2F0MzJfdCBzdm1pbl94KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5fZjE2X3gpKSkKc3ZmbG9hdDE2X3Qgc3ZtaW5feChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX2Y2NF96KSkpCnN2ZmxvYXQ2NF90IHN2bWluX3ooc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbl9mMzJfeikpKQpzdmZsb2F0MzJfdCBzdm1pbl96KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5fZjE2X3opKSkKc3ZmbG9hdDE2X3Qgc3ZtaW5feihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX3M4X20pKSkKc3ZpbnQ4X3Qgc3ZtaW5fbShzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX3MzMl9tKSkpCnN2aW50MzJfdCBzdm1pbl9tKHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbl9zNjRfbSkpKQpzdmludDY0X3Qgc3ZtaW5fbShzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5fczE2X20pKSkKc3ZpbnQxNl90IHN2bWluX20oc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX3M4X3gpKSkKc3ZpbnQ4X3Qgc3ZtaW5feChzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX3MzMl94KSkpCnN2aW50MzJfdCBzdm1pbl94KHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbl9zNjRfeCkpKQpzdmludDY0X3Qgc3ZtaW5feChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5fczE2X3gpKSkKc3ZpbnQxNl90IHN2bWluX3goc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX3M4X3opKSkKc3ZpbnQ4X3Qgc3ZtaW5feihzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX3MzMl96KSkpCnN2aW50MzJfdCBzdm1pbl96KHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbl9zNjRfeikpKQpzdmludDY0X3Qgc3ZtaW5feihzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5fczE2X3opKSkKc3ZpbnQxNl90IHN2bWluX3ooc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX3U4X20pKSkKc3Z1aW50OF90IHN2bWluX20oc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX3UzMl9tKSkpCnN2dWludDMyX3Qgc3ZtaW5fbShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbl91NjRfbSkpKQpzdnVpbnQ2NF90IHN2bWluX20oc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5fdTE2X20pKSkKc3Z1aW50MTZfdCBzdm1pbl9tKHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX3U4X3gpKSkKc3Z1aW50OF90IHN2bWluX3goc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX3UzMl94KSkpCnN2dWludDMyX3Qgc3ZtaW5feChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbl91NjRfeCkpKQpzdnVpbnQ2NF90IHN2bWluX3goc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5fdTE2X3gpKSkKc3Z1aW50MTZfdCBzdm1pbl94KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX3U4X3opKSkKc3Z1aW50OF90IHN2bWluX3ooc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWluX3UzMl96KSkpCnN2dWludDMyX3Qgc3ZtaW5feihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbl91NjRfeikpKQpzdnVpbnQ2NF90IHN2bWluX3ooc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5fdTE2X3opKSkKc3Z1aW50MTZfdCBzdm1pbl96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWlubm1fbl9mNjRfbSkpKQpzdmZsb2F0NjRfdCBzdm1pbm5tX20oc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5ubV9uX2YzMl9tKSkpCnN2ZmxvYXQzMl90IHN2bWlubm1fbShzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbm5tX25fZjE2X20pKSkKc3ZmbG9hdDE2X3Qgc3ZtaW5ubV9tKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWlubm1fbl9mNjRfeCkpKQpzdmZsb2F0NjRfdCBzdm1pbm5tX3goc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5ubV9uX2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2bWlubm1feChzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbm5tX25fZjE2X3gpKSkKc3ZmbG9hdDE2X3Qgc3ZtaW5ubV94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWlubm1fbl9mNjRfeikpKQpzdmZsb2F0NjRfdCBzdm1pbm5tX3ooc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5ubV9uX2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2bWlubm1feihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbm5tX25fZjE2X3opKSkKc3ZmbG9hdDE2X3Qgc3ZtaW5ubV96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWlubm1fZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZtaW5ubV9tKHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5ubV9mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdm1pbm5tX20oc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbm5tX2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2bWlubm1fbShzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWlubm1fZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZtaW5ubV94KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5ubV9mMzJfeCkpKQpzdmZsb2F0MzJfdCBzdm1pbm5tX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbm5tX2YxNl94KSkpCnN2ZmxvYXQxNl90IHN2bWlubm1feChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWlubm1fZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZtaW5ubV96KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5ubV9mMzJfeikpKQpzdmZsb2F0MzJfdCBzdm1pbm5tX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbm5tX2YxNl96KSkpCnN2ZmxvYXQxNl90IHN2bWlubm1feihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWlubm12X2Y2NCkpKQpmbG9hdDY0X3Qgc3ZtaW5ubXYoc3Zib29sX3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWlubm12X2YzMikpKQpmbG9hdDMyX3Qgc3ZtaW5ubXYoc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWlubm12X2YxNikpKQpmbG9hdDE2X3Qgc3ZtaW5ubXYoc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWludl9mNjQpKSkKZmxvYXQ2NF90IHN2bWludihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW52X2YzMikpKQpmbG9hdDMyX3Qgc3ZtaW52KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbnZfZjE2KSkpCmZsb2F0MTZfdCBzdm1pbnYoc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWludl9zOCkpKQppbnQ4X3Qgc3ZtaW52KHN2Ym9vbF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbnZfczMyKSkpCmludDMyX3Qgc3ZtaW52KHN2Ym9vbF90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW52X3M2NCkpKQppbnQ2NF90IHN2bWludihzdmJvb2xfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWludl9zMTYpKSkKaW50MTZfdCBzdm1pbnYoc3Zib29sX3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbnZfdTgpKSkKdWludDhfdCBzdm1pbnYoc3Zib29sX3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbnZfdTMyKSkpCnVpbnQzMl90IHN2bWludihzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbnZfdTY0KSkpCnVpbnQ2NF90IHN2bWludihzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbnZfdTE2KSkpCnVpbnQxNl90IHN2bWludihzdmJvb2xfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9uX2Y2NF9tKSkpCnN2ZmxvYXQ2NF90IHN2bWxhX20oc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhX25fZjMyX20pKSkKc3ZmbG9hdDMyX3Qgc3ZtbGFfbShzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90LCBmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFfbl9mMTZfbSkpKQpzdmZsb2F0MTZfdCBzdm1sYV9tKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIGZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9uX2Y2NF94KSkpCnN2ZmxvYXQ2NF90IHN2bWxhX3goc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhX25fZjMyX3gpKSkKc3ZmbG9hdDMyX3Qgc3ZtbGFfeChzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90LCBmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFfbl9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdm1sYV94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIGZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9uX2Y2NF96KSkpCnN2ZmxvYXQ2NF90IHN2bWxhX3ooc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhX25fZjMyX3opKSkKc3ZmbG9hdDMyX3Qgc3ZtbGFfeihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90LCBmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFfbl9mMTZfeikpKQpzdmZsb2F0MTZfdCBzdm1sYV96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIGZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9uX3U4X20pKSkKc3Z1aW50OF90IHN2bWxhX20oc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhX25fdTMyX20pKSkKc3Z1aW50MzJfdCBzdm1sYV9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9uX3U2NF9tKSkpCnN2dWludDY0X3Qgc3ZtbGFfbShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFfbl91MTZfbSkpKQpzdnVpbnQxNl90IHN2bWxhX20oc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhX25fczhfbSkpKQpzdmludDhfdCBzdm1sYV9tKHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9uX3MzMl9tKSkpCnN2aW50MzJfdCBzdm1sYV9tKHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9uX3M2NF9tKSkpCnN2aW50NjRfdCBzdm1sYV9tKHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9uX3MxNl9tKSkpCnN2aW50MTZfdCBzdm1sYV9tKHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9uX3U4X3gpKSkKc3Z1aW50OF90IHN2bWxhX3goc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhX25fdTMyX3gpKSkKc3Z1aW50MzJfdCBzdm1sYV94KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9uX3U2NF94KSkpCnN2dWludDY0X3Qgc3ZtbGFfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFfbl91MTZfeCkpKQpzdnVpbnQxNl90IHN2bWxhX3goc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhX25fczhfeCkpKQpzdmludDhfdCBzdm1sYV94KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9uX3MzMl94KSkpCnN2aW50MzJfdCBzdm1sYV94KHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9uX3M2NF94KSkpCnN2aW50NjRfdCBzdm1sYV94KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9uX3MxNl94KSkpCnN2aW50MTZfdCBzdm1sYV94KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9uX3U4X3opKSkKc3Z1aW50OF90IHN2bWxhX3ooc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhX25fdTMyX3opKSkKc3Z1aW50MzJfdCBzdm1sYV96KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9uX3U2NF96KSkpCnN2dWludDY0X3Qgc3ZtbGFfeihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFfbl91MTZfeikpKQpzdnVpbnQxNl90IHN2bWxhX3ooc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhX25fczhfeikpKQpzdmludDhfdCBzdm1sYV96KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9uX3MzMl96KSkpCnN2aW50MzJfdCBzdm1sYV96KHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9uX3M2NF96KSkpCnN2aW50NjRfdCBzdm1sYV96KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9uX3MxNl96KSkpCnN2aW50MTZfdCBzdm1sYV96KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9mNjRfbSkpKQpzdmZsb2F0NjRfdCBzdm1sYV9tKHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhX2YzMl9tKSkpCnN2ZmxvYXQzMl90IHN2bWxhX20oc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFfZjE2X20pKSkKc3ZmbG9hdDE2X3Qgc3ZtbGFfbShzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9mNjRfeCkpKQpzdmZsb2F0NjRfdCBzdm1sYV94KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhX2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2bWxhX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFfZjE2X3gpKSkKc3ZmbG9hdDE2X3Qgc3ZtbGFfeChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9mNjRfeikpKQpzdmZsb2F0NjRfdCBzdm1sYV96KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhX2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2bWxhX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFfZjE2X3opKSkKc3ZmbG9hdDE2X3Qgc3ZtbGFfeihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV91OF9tKSkpCnN2dWludDhfdCBzdm1sYV9tKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhX3UzMl9tKSkpCnN2dWludDMyX3Qgc3ZtbGFfbShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV91NjRfbSkpKQpzdnVpbnQ2NF90IHN2bWxhX20oc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFfdTE2X20pKSkKc3Z1aW50MTZfdCBzdm1sYV9tKHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhX3M4X20pKSkKc3ZpbnQ4X3Qgc3ZtbGFfbShzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9zMzJfbSkpKQpzdmludDMyX3Qgc3ZtbGFfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9zNjRfbSkpKQpzdmludDY0X3Qgc3ZtbGFfbShzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9zMTZfbSkpKQpzdmludDE2X3Qgc3ZtbGFfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV91OF94KSkpCnN2dWludDhfdCBzdm1sYV94KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhX3UzMl94KSkpCnN2dWludDMyX3Qgc3ZtbGFfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV91NjRfeCkpKQpzdnVpbnQ2NF90IHN2bWxhX3goc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFfdTE2X3gpKSkKc3Z1aW50MTZfdCBzdm1sYV94KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhX3M4X3gpKSkKc3ZpbnQ4X3Qgc3ZtbGFfeChzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9zMzJfeCkpKQpzdmludDMyX3Qgc3ZtbGFfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9zNjRfeCkpKQpzdmludDY0X3Qgc3ZtbGFfeChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9zMTZfeCkpKQpzdmludDE2X3Qgc3ZtbGFfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV91OF96KSkpCnN2dWludDhfdCBzdm1sYV96KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhX3UzMl96KSkpCnN2dWludDMyX3Qgc3ZtbGFfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV91NjRfeikpKQpzdnVpbnQ2NF90IHN2bWxhX3ooc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFfdTE2X3opKSkKc3Z1aW50MTZfdCBzdm1sYV96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhX3M4X3opKSkKc3ZpbnQ4X3Qgc3ZtbGFfeihzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9zMzJfeikpKQpzdmludDMyX3Qgc3ZtbGFfeihzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9zNjRfeikpKQpzdmludDY0X3Qgc3ZtbGFfeihzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9zMTZfeikpKQpzdmludDE2X3Qgc3ZtbGFfeihzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9sYW5lX2Y2NCkpKQpzdmZsb2F0NjRfdCBzdm1sYV9sYW5lKHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhX2xhbmVfZjMyKSkpCnN2ZmxvYXQzMl90IHN2bWxhX2xhbmUoc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFfbGFuZV9mMTYpKSkKc3ZmbG9hdDE2X3Qgc3ZtbGFfbGFuZShzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19uX2Y2NF9tKSkpCnN2ZmxvYXQ2NF90IHN2bWxzX20oc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzX25fZjMyX20pKSkKc3ZmbG9hdDMyX3Qgc3ZtbHNfbShzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90LCBmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNfbl9mMTZfbSkpKQpzdmZsb2F0MTZfdCBzdm1sc19tKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIGZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19uX2Y2NF94KSkpCnN2ZmxvYXQ2NF90IHN2bWxzX3goc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzX25fZjMyX3gpKSkKc3ZmbG9hdDMyX3Qgc3ZtbHNfeChzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90LCBmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNfbl9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdm1sc194KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIGZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19uX2Y2NF96KSkpCnN2ZmxvYXQ2NF90IHN2bWxzX3ooc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzX25fZjMyX3opKSkKc3ZmbG9hdDMyX3Qgc3ZtbHNfeihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90LCBmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNfbl9mMTZfeikpKQpzdmZsb2F0MTZfdCBzdm1sc196KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIGZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19uX3U4X20pKSkKc3Z1aW50OF90IHN2bWxzX20oc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzX25fdTMyX20pKSkKc3Z1aW50MzJfdCBzdm1sc19tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19uX3U2NF9tKSkpCnN2dWludDY0X3Qgc3ZtbHNfbShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNfbl91MTZfbSkpKQpzdnVpbnQxNl90IHN2bWxzX20oc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzX25fczhfbSkpKQpzdmludDhfdCBzdm1sc19tKHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19uX3MzMl9tKSkpCnN2aW50MzJfdCBzdm1sc19tKHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19uX3M2NF9tKSkpCnN2aW50NjRfdCBzdm1sc19tKHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19uX3MxNl9tKSkpCnN2aW50MTZfdCBzdm1sc19tKHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19uX3U4X3gpKSkKc3Z1aW50OF90IHN2bWxzX3goc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzX25fdTMyX3gpKSkKc3Z1aW50MzJfdCBzdm1sc194KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19uX3U2NF94KSkpCnN2dWludDY0X3Qgc3ZtbHNfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNfbl91MTZfeCkpKQpzdnVpbnQxNl90IHN2bWxzX3goc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzX25fczhfeCkpKQpzdmludDhfdCBzdm1sc194KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19uX3MzMl94KSkpCnN2aW50MzJfdCBzdm1sc194KHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19uX3M2NF94KSkpCnN2aW50NjRfdCBzdm1sc194KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19uX3MxNl94KSkpCnN2aW50MTZfdCBzdm1sc194KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19uX3U4X3opKSkKc3Z1aW50OF90IHN2bWxzX3ooc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzX25fdTMyX3opKSkKc3Z1aW50MzJfdCBzdm1sc196KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19uX3U2NF96KSkpCnN2dWludDY0X3Qgc3ZtbHNfeihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNfbl91MTZfeikpKQpzdnVpbnQxNl90IHN2bWxzX3ooc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzX25fczhfeikpKQpzdmludDhfdCBzdm1sc196KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19uX3MzMl96KSkpCnN2aW50MzJfdCBzdm1sc196KHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19uX3M2NF96KSkpCnN2aW50NjRfdCBzdm1sc196KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19uX3MxNl96KSkpCnN2aW50MTZfdCBzdm1sc196KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19mNjRfbSkpKQpzdmZsb2F0NjRfdCBzdm1sc19tKHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzX2YzMl9tKSkpCnN2ZmxvYXQzMl90IHN2bWxzX20oc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNfZjE2X20pKSkKc3ZmbG9hdDE2X3Qgc3ZtbHNfbShzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19mNjRfeCkpKQpzdmZsb2F0NjRfdCBzdm1sc194KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzX2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2bWxzX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNfZjE2X3gpKSkKc3ZmbG9hdDE2X3Qgc3ZtbHNfeChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19mNjRfeikpKQpzdmZsb2F0NjRfdCBzdm1sc196KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzX2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2bWxzX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNfZjE2X3opKSkKc3ZmbG9hdDE2X3Qgc3ZtbHNfeihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc191OF9tKSkpCnN2dWludDhfdCBzdm1sc19tKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzX3UzMl9tKSkpCnN2dWludDMyX3Qgc3ZtbHNfbShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc191NjRfbSkpKQpzdnVpbnQ2NF90IHN2bWxzX20oc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNfdTE2X20pKSkKc3Z1aW50MTZfdCBzdm1sc19tKHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzX3M4X20pKSkKc3ZpbnQ4X3Qgc3ZtbHNfbShzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19zMzJfbSkpKQpzdmludDMyX3Qgc3ZtbHNfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19zNjRfbSkpKQpzdmludDY0X3Qgc3ZtbHNfbShzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19zMTZfbSkpKQpzdmludDE2X3Qgc3ZtbHNfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc191OF94KSkpCnN2dWludDhfdCBzdm1sc194KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzX3UzMl94KSkpCnN2dWludDMyX3Qgc3ZtbHNfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc191NjRfeCkpKQpzdnVpbnQ2NF90IHN2bWxzX3goc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNfdTE2X3gpKSkKc3Z1aW50MTZfdCBzdm1sc194KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzX3M4X3gpKSkKc3ZpbnQ4X3Qgc3ZtbHNfeChzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19zMzJfeCkpKQpzdmludDMyX3Qgc3ZtbHNfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19zNjRfeCkpKQpzdmludDY0X3Qgc3ZtbHNfeChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19zMTZfeCkpKQpzdmludDE2X3Qgc3ZtbHNfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc191OF96KSkpCnN2dWludDhfdCBzdm1sc196KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzX3UzMl96KSkpCnN2dWludDMyX3Qgc3ZtbHNfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc191NjRfeikpKQpzdnVpbnQ2NF90IHN2bWxzX3ooc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNfdTE2X3opKSkKc3Z1aW50MTZfdCBzdm1sc196KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzX3M4X3opKSkKc3ZpbnQ4X3Qgc3ZtbHNfeihzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19zMzJfeikpKQpzdmludDMyX3Qgc3ZtbHNfeihzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19zNjRfeikpKQpzdmludDY0X3Qgc3ZtbHNfeihzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19zMTZfeikpKQpzdmludDE2X3Qgc3ZtbHNfeihzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19sYW5lX2Y2NCkpKQpzdmZsb2F0NjRfdCBzdm1sc19sYW5lKHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzX2xhbmVfZjMyKSkpCnN2ZmxvYXQzMl90IHN2bWxzX2xhbmUoc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNfbGFuZV9mMTYpKSkKc3ZmbG9hdDE2X3Qgc3ZtbHNfbGFuZShzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1vdl9iX3opKSkKc3Zib29sX3Qgc3Ztb3ZfeihzdmJvb2xfdCwgc3Zib29sX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2Jfbl9mNjRfbSkpKQpzdmZsb2F0NjRfdCBzdm1zYl9tKHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QsIGZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1zYl9uX2YzMl9tKSkpCnN2ZmxvYXQzMl90IHN2bXNiX20oc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXNiX25fZjE2X20pKSkKc3ZmbG9hdDE2X3Qgc3Ztc2JfbShzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2Jfbl9mNjRfeCkpKQpzdmZsb2F0NjRfdCBzdm1zYl94KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QsIGZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1zYl9uX2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2bXNiX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXNiX25fZjE2X3gpKSkKc3ZmbG9hdDE2X3Qgc3Ztc2JfeChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2Jfbl9mNjRfeikpKQpzdmZsb2F0NjRfdCBzdm1zYl96KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QsIGZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1zYl9uX2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2bXNiX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXNiX25fZjE2X3opKSkKc3ZmbG9hdDE2X3Qgc3Ztc2JfeihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2Jfbl91OF9tKSkpCnN2dWludDhfdCBzdm1zYl9tKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1zYl9uX3UzMl9tKSkpCnN2dWludDMyX3Qgc3Ztc2JfbShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2Jfbl91NjRfbSkpKQpzdnVpbnQ2NF90IHN2bXNiX20oc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXNiX25fdTE2X20pKSkKc3Z1aW50MTZfdCBzdm1zYl9tKHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1zYl9uX3M4X20pKSkKc3ZpbnQ4X3Qgc3Ztc2JfbShzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2Jfbl9zMzJfbSkpKQpzdmludDMyX3Qgc3Ztc2JfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2Jfbl9zNjRfbSkpKQpzdmludDY0X3Qgc3Ztc2JfbShzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2Jfbl9zMTZfbSkpKQpzdmludDE2X3Qgc3Ztc2JfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2Jfbl91OF94KSkpCnN2dWludDhfdCBzdm1zYl94KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1zYl9uX3UzMl94KSkpCnN2dWludDMyX3Qgc3Ztc2JfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2Jfbl91NjRfeCkpKQpzdnVpbnQ2NF90IHN2bXNiX3goc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXNiX25fdTE2X3gpKSkKc3Z1aW50MTZfdCBzdm1zYl94KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1zYl9uX3M4X3gpKSkKc3ZpbnQ4X3Qgc3Ztc2JfeChzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2Jfbl9zMzJfeCkpKQpzdmludDMyX3Qgc3Ztc2JfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2Jfbl9zNjRfeCkpKQpzdmludDY0X3Qgc3Ztc2JfeChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2Jfbl9zMTZfeCkpKQpzdmludDE2X3Qgc3Ztc2JfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2Jfbl91OF96KSkpCnN2dWludDhfdCBzdm1zYl96KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1zYl9uX3UzMl96KSkpCnN2dWludDMyX3Qgc3Ztc2JfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2Jfbl91NjRfeikpKQpzdnVpbnQ2NF90IHN2bXNiX3ooc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXNiX25fdTE2X3opKSkKc3Z1aW50MTZfdCBzdm1zYl96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1zYl9uX3M4X3opKSkKc3ZpbnQ4X3Qgc3Ztc2JfeihzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2Jfbl9zMzJfeikpKQpzdmludDMyX3Qgc3Ztc2JfeihzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2Jfbl9zNjRfeikpKQpzdmludDY0X3Qgc3Ztc2JfeihzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2Jfbl9zMTZfeikpKQpzdmludDE2X3Qgc3Ztc2JfeihzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2JfZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3Ztc2JfbShzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1zYl9mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdm1zYl9tKHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXNiX2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2bXNiX20oc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2JfZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3Ztc2JfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1zYl9mMzJfeCkpKQpzdmZsb2F0MzJfdCBzdm1zYl94KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXNiX2YxNl94KSkpCnN2ZmxvYXQxNl90IHN2bXNiX3goc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2JfZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3Ztc2JfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1zYl9mMzJfeikpKQpzdmZsb2F0MzJfdCBzdm1zYl96KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXNiX2YxNl96KSkpCnN2ZmxvYXQxNl90IHN2bXNiX3ooc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2JfdThfbSkpKQpzdnVpbnQ4X3Qgc3Ztc2JfbShzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1zYl91MzJfbSkpKQpzdnVpbnQzMl90IHN2bXNiX20oc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2JfdTY0X20pKSkKc3Z1aW50NjRfdCBzdm1zYl9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXNiX3UxNl9tKSkpCnN2dWludDE2X3Qgc3Ztc2JfbShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1zYl9zOF9tKSkpCnN2aW50OF90IHN2bXNiX20oc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2JfczMyX20pKSkKc3ZpbnQzMl90IHN2bXNiX20oc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2JfczY0X20pKSkKc3ZpbnQ2NF90IHN2bXNiX20oc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2JfczE2X20pKSkKc3ZpbnQxNl90IHN2bXNiX20oc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2JfdThfeCkpKQpzdnVpbnQ4X3Qgc3Ztc2JfeChzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1zYl91MzJfeCkpKQpzdnVpbnQzMl90IHN2bXNiX3goc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2JfdTY0X3gpKSkKc3Z1aW50NjRfdCBzdm1zYl94KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXNiX3UxNl94KSkpCnN2dWludDE2X3Qgc3Ztc2JfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1zYl9zOF94KSkpCnN2aW50OF90IHN2bXNiX3goc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2JfczMyX3gpKSkKc3ZpbnQzMl90IHN2bXNiX3goc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2JfczY0X3gpKSkKc3ZpbnQ2NF90IHN2bXNiX3goc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2JfczE2X3gpKSkKc3ZpbnQxNl90IHN2bXNiX3goc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2JfdThfeikpKQpzdnVpbnQ4X3Qgc3Ztc2JfeihzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1zYl91MzJfeikpKQpzdnVpbnQzMl90IHN2bXNiX3ooc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2JfdTY0X3opKSkKc3Z1aW50NjRfdCBzdm1zYl96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXNiX3UxNl96KSkpCnN2dWludDE2X3Qgc3Ztc2JfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1zYl9zOF96KSkpCnN2aW50OF90IHN2bXNiX3ooc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2JfczMyX3opKSkKc3ZpbnQzMl90IHN2bXNiX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2JfczY0X3opKSkKc3ZpbnQ2NF90IHN2bXNiX3ooc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztc2JfczE2X3opKSkKc3ZpbnQxNl90IHN2bXNiX3ooc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfbl9mNjRfbSkpKQpzdmZsb2F0NjRfdCBzdm11bF9tKHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsX25fZjMyX20pKSkKc3ZmbG9hdDMyX3Qgc3ZtdWxfbShzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bF9uX2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2bXVsX20oc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfbl9mNjRfeCkpKQpzdmZsb2F0NjRfdCBzdm11bF94KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsX25fZjMyX3gpKSkKc3ZmbG9hdDMyX3Qgc3ZtdWxfeChzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bF9uX2YxNl94KSkpCnN2ZmxvYXQxNl90IHN2bXVsX3goc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfbl9mNjRfeikpKQpzdmZsb2F0NjRfdCBzdm11bF96KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsX25fZjMyX3opKSkKc3ZmbG9hdDMyX3Qgc3ZtdWxfeihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bF9uX2YxNl96KSkpCnN2ZmxvYXQxNl90IHN2bXVsX3ooc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfbl91OF9tKSkpCnN2dWludDhfdCBzdm11bF9tKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfbl91MzJfbSkpKQpzdnVpbnQzMl90IHN2bXVsX20oc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsX25fdTY0X20pKSkKc3Z1aW50NjRfdCBzdm11bF9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bF9uX3UxNl9tKSkpCnN2dWludDE2X3Qgc3ZtdWxfbShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfbl9zOF9tKSkpCnN2aW50OF90IHN2bXVsX20oc3Zib29sX3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfbl9zMzJfbSkpKQpzdmludDMyX3Qgc3ZtdWxfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsX25fczY0X20pKSkKc3ZpbnQ2NF90IHN2bXVsX20oc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bF9uX3MxNl9tKSkpCnN2aW50MTZfdCBzdm11bF9tKHN2Ym9vbF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfbl91OF94KSkpCnN2dWludDhfdCBzdm11bF94KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfbl91MzJfeCkpKQpzdnVpbnQzMl90IHN2bXVsX3goc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsX25fdTY0X3gpKSkKc3Z1aW50NjRfdCBzdm11bF94KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bF9uX3UxNl94KSkpCnN2dWludDE2X3Qgc3ZtdWxfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfbl9zOF94KSkpCnN2aW50OF90IHN2bXVsX3goc3Zib29sX3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfbl9zMzJfeCkpKQpzdmludDMyX3Qgc3ZtdWxfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsX25fczY0X3gpKSkKc3ZpbnQ2NF90IHN2bXVsX3goc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bF9uX3MxNl94KSkpCnN2aW50MTZfdCBzdm11bF94KHN2Ym9vbF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfbl91OF96KSkpCnN2dWludDhfdCBzdm11bF96KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfbl91MzJfeikpKQpzdnVpbnQzMl90IHN2bXVsX3ooc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsX25fdTY0X3opKSkKc3Z1aW50NjRfdCBzdm11bF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bF9uX3UxNl96KSkpCnN2dWludDE2X3Qgc3ZtdWxfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfbl9zOF96KSkpCnN2aW50OF90IHN2bXVsX3ooc3Zib29sX3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfbl9zMzJfeikpKQpzdmludDMyX3Qgc3ZtdWxfeihzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsX25fczY0X3opKSkKc3ZpbnQ2NF90IHN2bXVsX3ooc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bF9uX3MxNl96KSkpCnN2aW50MTZfdCBzdm11bF96KHN2Ym9vbF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZtdWxfbShzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsX2YzMl9tKSkpCnN2ZmxvYXQzMl90IHN2bXVsX20oc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bF9mMTZfbSkpKQpzdmZsb2F0MTZfdCBzdm11bF9tKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZtdWxfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsX2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2bXVsX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bF9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdm11bF94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZtdWxfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsX2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2bXVsX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bF9mMTZfeikpKQpzdmZsb2F0MTZfdCBzdm11bF96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfdThfbSkpKQpzdnVpbnQ4X3Qgc3ZtdWxfbShzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfdTMyX20pKSkKc3Z1aW50MzJfdCBzdm11bF9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsX3U2NF9tKSkpCnN2dWludDY0X3Qgc3ZtdWxfbShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bF91MTZfbSkpKQpzdnVpbnQxNl90IHN2bXVsX20oc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfczhfbSkpKQpzdmludDhfdCBzdm11bF9tKHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfczMyX20pKSkKc3ZpbnQzMl90IHN2bXVsX20oc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsX3M2NF9tKSkpCnN2aW50NjRfdCBzdm11bF9tKHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bF9zMTZfbSkpKQpzdmludDE2X3Qgc3ZtdWxfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfdThfeCkpKQpzdnVpbnQ4X3Qgc3ZtdWxfeChzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfdTMyX3gpKSkKc3Z1aW50MzJfdCBzdm11bF94KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsX3U2NF94KSkpCnN2dWludDY0X3Qgc3ZtdWxfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bF91MTZfeCkpKQpzdnVpbnQxNl90IHN2bXVsX3goc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfczhfeCkpKQpzdmludDhfdCBzdm11bF94KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfczMyX3gpKSkKc3ZpbnQzMl90IHN2bXVsX3goc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsX3M2NF94KSkpCnN2aW50NjRfdCBzdm11bF94KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bF9zMTZfeCkpKQpzdmludDE2X3Qgc3ZtdWxfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfdThfeikpKQpzdnVpbnQ4X3Qgc3ZtdWxfeihzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfdTMyX3opKSkKc3Z1aW50MzJfdCBzdm11bF96KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsX3U2NF96KSkpCnN2dWludDY0X3Qgc3ZtdWxfeihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bF91MTZfeikpKQpzdnVpbnQxNl90IHN2bXVsX3ooc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfczhfeikpKQpzdmludDhfdCBzdm11bF96KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfczMyX3opKSkKc3ZpbnQzMl90IHN2bXVsX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsX3M2NF96KSkpCnN2aW50NjRfdCBzdm11bF96KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bF9zMTZfeikpKQpzdmludDE2X3Qgc3ZtdWxfeihzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfbGFuZV9mNjQpKSkKc3ZmbG9hdDY0X3Qgc3ZtdWxfbGFuZShzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsX2xhbmVfZjMyKSkpCnN2ZmxvYXQzMl90IHN2bXVsX2xhbmUoc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bF9sYW5lX2YxNikpKQpzdmZsb2F0MTZfdCBzdm11bF9sYW5lKHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxoX25fczhfbSkpKQpzdmludDhfdCBzdm11bGhfbShzdmJvb2xfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGhfbl9zMzJfbSkpKQpzdmludDMyX3Qgc3ZtdWxoX20oc3Zib29sX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGhfbl9zNjRfbSkpKQpzdmludDY0X3Qgc3ZtdWxoX20oc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGhfbl9zMTZfbSkpKQpzdmludDE2X3Qgc3ZtdWxoX20oc3Zib29sX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGhfbl9zOF94KSkpCnN2aW50OF90IHN2bXVsaF94KHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsaF9uX3MzMl94KSkpCnN2aW50MzJfdCBzdm11bGhfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsaF9uX3M2NF94KSkpCnN2aW50NjRfdCBzdm11bGhfeChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsaF9uX3MxNl94KSkpCnN2aW50MTZfdCBzdm11bGhfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsaF9uX3M4X3opKSkKc3ZpbnQ4X3Qgc3ZtdWxoX3ooc3Zib29sX3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxoX25fczMyX3opKSkKc3ZpbnQzMl90IHN2bXVsaF96KHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxoX25fczY0X3opKSkKc3ZpbnQ2NF90IHN2bXVsaF96KHN2Ym9vbF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxoX25fczE2X3opKSkKc3ZpbnQxNl90IHN2bXVsaF96KHN2Ym9vbF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxoX25fdThfbSkpKQpzdnVpbnQ4X3Qgc3ZtdWxoX20oc3Zib29sX3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGhfbl91MzJfbSkpKQpzdnVpbnQzMl90IHN2bXVsaF9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGhfbl91NjRfbSkpKQpzdnVpbnQ2NF90IHN2bXVsaF9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGhfbl91MTZfbSkpKQpzdnVpbnQxNl90IHN2bXVsaF9tKHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGhfbl91OF94KSkpCnN2dWludDhfdCBzdm11bGhfeChzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsaF9uX3UzMl94KSkpCnN2dWludDMyX3Qgc3ZtdWxoX3goc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsaF9uX3U2NF94KSkpCnN2dWludDY0X3Qgc3ZtdWxoX3goc3Zib29sX3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsaF9uX3UxNl94KSkpCnN2dWludDE2X3Qgc3ZtdWxoX3goc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsaF9uX3U4X3opKSkKc3Z1aW50OF90IHN2bXVsaF96KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxoX25fdTMyX3opKSkKc3Z1aW50MzJfdCBzdm11bGhfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxoX25fdTY0X3opKSkKc3Z1aW50NjRfdCBzdm11bGhfeihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxoX25fdTE2X3opKSkKc3Z1aW50MTZfdCBzdm11bGhfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxoX3M4X20pKSkKc3ZpbnQ4X3Qgc3ZtdWxoX20oc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGhfczMyX20pKSkKc3ZpbnQzMl90IHN2bXVsaF9tKHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGhfczY0X20pKSkKc3ZpbnQ2NF90IHN2bXVsaF9tKHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGhfczE2X20pKSkKc3ZpbnQxNl90IHN2bXVsaF9tKHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGhfczhfeCkpKQpzdmludDhfdCBzdm11bGhfeChzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsaF9zMzJfeCkpKQpzdmludDMyX3Qgc3ZtdWxoX3goc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsaF9zNjRfeCkpKQpzdmludDY0X3Qgc3ZtdWxoX3goc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsaF9zMTZfeCkpKQpzdmludDE2X3Qgc3ZtdWxoX3goc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsaF9zOF96KSkpCnN2aW50OF90IHN2bXVsaF96KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxoX3MzMl96KSkpCnN2aW50MzJfdCBzdm11bGhfeihzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxoX3M2NF96KSkpCnN2aW50NjRfdCBzdm11bGhfeihzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxoX3MxNl96KSkpCnN2aW50MTZfdCBzdm11bGhfeihzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxoX3U4X20pKSkKc3Z1aW50OF90IHN2bXVsaF9tKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGhfdTMyX20pKSkKc3Z1aW50MzJfdCBzdm11bGhfbShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGhfdTY0X20pKSkKc3Z1aW50NjRfdCBzdm11bGhfbShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGhfdTE2X20pKSkKc3Z1aW50MTZfdCBzdm11bGhfbShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGhfdThfeCkpKQpzdnVpbnQ4X3Qgc3ZtdWxoX3goc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsaF91MzJfeCkpKQpzdnVpbnQzMl90IHN2bXVsaF94KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsaF91NjRfeCkpKQpzdnVpbnQ2NF90IHN2bXVsaF94KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsaF91MTZfeCkpKQpzdnVpbnQxNl90IHN2bXVsaF94KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsaF91OF96KSkpCnN2dWludDhfdCBzdm11bGhfeihzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxoX3UzMl96KSkpCnN2dWludDMyX3Qgc3ZtdWxoX3ooc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxoX3U2NF96KSkpCnN2dWludDY0X3Qgc3ZtdWxoX3ooc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxoX3UxNl96KSkpCnN2dWludDE2X3Qgc3ZtdWxoX3ooc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWx4X25fZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZtdWx4X20oc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWx4X25fZjMyX20pKSkKc3ZmbG9hdDMyX3Qgc3ZtdWx4X20oc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWx4X25fZjE2X20pKSkKc3ZmbG9hdDE2X3Qgc3ZtdWx4X20oc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWx4X25fZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZtdWx4X3goc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWx4X25fZjMyX3gpKSkKc3ZmbG9hdDMyX3Qgc3ZtdWx4X3goc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWx4X25fZjE2X3gpKSkKc3ZmbG9hdDE2X3Qgc3ZtdWx4X3goc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWx4X25fZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZtdWx4X3ooc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWx4X25fZjMyX3opKSkKc3ZmbG9hdDMyX3Qgc3ZtdWx4X3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWx4X25fZjE2X3opKSkKc3ZmbG9hdDE2X3Qgc3ZtdWx4X3ooc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWx4X2Y2NF9tKSkpCnN2ZmxvYXQ2NF90IHN2bXVseF9tKHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWx4X2YzMl9tKSkpCnN2ZmxvYXQzMl90IHN2bXVseF9tKHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWx4X2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2bXVseF9tKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWx4X2Y2NF94KSkpCnN2ZmxvYXQ2NF90IHN2bXVseF94KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWx4X2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2bXVseF94KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWx4X2YxNl94KSkpCnN2ZmxvYXQxNl90IHN2bXVseF94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWx4X2Y2NF96KSkpCnN2ZmxvYXQ2NF90IHN2bXVseF96KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWx4X2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2bXVseF96KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWx4X2YxNl96KSkpCnN2ZmxvYXQxNl90IHN2bXVseF96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZuYW5kX2JfeikpKQpzdmJvb2xfdCBzdm5hbmRfeihzdmJvb2xfdCwgc3Zib29sX3QsIHN2Ym9vbF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bmVnX2Y2NF9tKSkpCnN2ZmxvYXQ2NF90IHN2bmVnX20oc3ZmbG9hdDY0X3QsIHN2Ym9vbF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5lZ19mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdm5lZ19tKHN2ZmxvYXQzMl90LCBzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZuZWdfZjE2X20pKSkKc3ZmbG9hdDE2X3Qgc3ZuZWdfbShzdmZsb2F0MTZfdCwgc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bmVnX2Y2NF94KSkpCnN2ZmxvYXQ2NF90IHN2bmVnX3goc3Zib29sX3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bmVnX2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2bmVnX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bmVnX2YxNl94KSkpCnN2ZmxvYXQxNl90IHN2bmVnX3goc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bmVnX2Y2NF96KSkpCnN2ZmxvYXQ2NF90IHN2bmVnX3ooc3Zib29sX3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bmVnX2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2bmVnX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bmVnX2YxNl96KSkpCnN2ZmxvYXQxNl90IHN2bmVnX3ooc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bmVnX3M4X20pKSkKc3ZpbnQ4X3Qgc3ZuZWdfbShzdmludDhfdCwgc3Zib29sX3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bmVnX3MzMl9tKSkpCnN2aW50MzJfdCBzdm5lZ19tKHN2aW50MzJfdCwgc3Zib29sX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5lZ19zNjRfbSkpKQpzdmludDY0X3Qgc3ZuZWdfbShzdmludDY0X3QsIHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZuZWdfczE2X20pKSkKc3ZpbnQxNl90IHN2bmVnX20oc3ZpbnQxNl90LCBzdmJvb2xfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bmVnX3M4X3gpKSkKc3ZpbnQ4X3Qgc3ZuZWdfeChzdmJvb2xfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZuZWdfczMyX3gpKSkKc3ZpbnQzMl90IHN2bmVnX3goc3Zib29sX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5lZ19zNjRfeCkpKQpzdmludDY0X3Qgc3ZuZWdfeChzdmJvb2xfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bmVnX3MxNl94KSkpCnN2aW50MTZfdCBzdm5lZ194KHN2Ym9vbF90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZuZWdfczhfeikpKQpzdmludDhfdCBzdm5lZ196KHN2Ym9vbF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5lZ19zMzJfeikpKQpzdmludDMyX3Qgc3ZuZWdfeihzdmJvb2xfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bmVnX3M2NF96KSkpCnN2aW50NjRfdCBzdm5lZ196KHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZuZWdfczE2X3opKSkKc3ZpbnQxNl90IHN2bmVnX3ooc3Zib29sX3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5tYWRfbl9mNjRfbSkpKQpzdmZsb2F0NjRfdCBzdm5tYWRfbShzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWFkX25fZjMyX20pKSkKc3ZmbG9hdDMyX3Qgc3ZubWFkX20oc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm1hZF9uX2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2bm1hZF9tKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIGZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5tYWRfbl9mNjRfeCkpKQpzdmZsb2F0NjRfdCBzdm5tYWRfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWFkX25fZjMyX3gpKSkKc3ZmbG9hdDMyX3Qgc3ZubWFkX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm1hZF9uX2YxNl94KSkpCnN2ZmxvYXQxNl90IHN2bm1hZF94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIGZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5tYWRfbl9mNjRfeikpKQpzdmZsb2F0NjRfdCBzdm5tYWRfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWFkX25fZjMyX3opKSkKc3ZmbG9hdDMyX3Qgc3ZubWFkX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm1hZF9uX2YxNl96KSkpCnN2ZmxvYXQxNl90IHN2bm1hZF96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIGZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5tYWRfZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZubWFkX20oc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWFkX2YzMl9tKSkpCnN2ZmxvYXQzMl90IHN2bm1hZF9tKHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm1hZF9mMTZfbSkpKQpzdmZsb2F0MTZfdCBzdm5tYWRfbShzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5tYWRfZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZubWFkX3goc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWFkX2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2bm1hZF94KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm1hZF9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdm5tYWRfeChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5tYWRfZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZubWFkX3ooc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWFkX2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2bm1hZF96KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm1hZF9mMTZfeikpKQpzdmZsb2F0MTZfdCBzdm5tYWRfeihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5tbGFfbl9mNjRfbSkpKQpzdmZsb2F0NjRfdCBzdm5tbGFfbShzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWxhX25fZjMyX20pKSkKc3ZmbG9hdDMyX3Qgc3ZubWxhX20oc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm1sYV9uX2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2bm1sYV9tKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIGZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5tbGFfbl9mNjRfeCkpKQpzdmZsb2F0NjRfdCBzdm5tbGFfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWxhX25fZjMyX3gpKSkKc3ZmbG9hdDMyX3Qgc3ZubWxhX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm1sYV9uX2YxNl94KSkpCnN2ZmxvYXQxNl90IHN2bm1sYV94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIGZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5tbGFfbl9mNjRfeikpKQpzdmZsb2F0NjRfdCBzdm5tbGFfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWxhX25fZjMyX3opKSkKc3ZmbG9hdDMyX3Qgc3ZubWxhX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm1sYV9uX2YxNl96KSkpCnN2ZmxvYXQxNl90IHN2bm1sYV96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIGZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5tbGFfZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZubWxhX20oc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWxhX2YzMl9tKSkpCnN2ZmxvYXQzMl90IHN2bm1sYV9tKHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm1sYV9mMTZfbSkpKQpzdmZsb2F0MTZfdCBzdm5tbGFfbShzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5tbGFfZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZubWxhX3goc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWxhX2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2bm1sYV94KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm1sYV9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdm5tbGFfeChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5tbGFfZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZubWxhX3ooc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWxhX2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2bm1sYV96KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm1sYV9mMTZfeikpKQpzdmZsb2F0MTZfdCBzdm5tbGFfeihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5tbHNfbl9mNjRfbSkpKQpzdmZsb2F0NjRfdCBzdm5tbHNfbShzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWxzX25fZjMyX20pKSkKc3ZmbG9hdDMyX3Qgc3ZubWxzX20oc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm1sc19uX2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2bm1sc19tKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIGZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5tbHNfbl9mNjRfeCkpKQpzdmZsb2F0NjRfdCBzdm5tbHNfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWxzX25fZjMyX3gpKSkKc3ZmbG9hdDMyX3Qgc3ZubWxzX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm1sc19uX2YxNl94KSkpCnN2ZmxvYXQxNl90IHN2bm1sc194KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIGZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5tbHNfbl9mNjRfeikpKQpzdmZsb2F0NjRfdCBzdm5tbHNfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWxzX25fZjMyX3opKSkKc3ZmbG9hdDMyX3Qgc3ZubWxzX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm1sc19uX2YxNl96KSkpCnN2ZmxvYXQxNl90IHN2bm1sc196KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIGZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5tbHNfZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZubWxzX20oc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWxzX2YzMl9tKSkpCnN2ZmxvYXQzMl90IHN2bm1sc19tKHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm1sc19mMTZfbSkpKQpzdmZsb2F0MTZfdCBzdm5tbHNfbShzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5tbHNfZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZubWxzX3goc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWxzX2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2bm1sc194KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm1sc19mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdm5tbHNfeChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5tbHNfZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZubWxzX3ooc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWxzX2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2bm1sc196KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm1sc19mMTZfeikpKQpzdmZsb2F0MTZfdCBzdm5tbHNfeihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5tc2Jfbl9mNjRfbSkpKQpzdmZsb2F0NjRfdCBzdm5tc2JfbShzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubXNiX25fZjMyX20pKSkKc3ZmbG9hdDMyX3Qgc3ZubXNiX20oc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm1zYl9uX2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2bm1zYl9tKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIGZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5tc2Jfbl9mNjRfeCkpKQpzdmZsb2F0NjRfdCBzdm5tc2JfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubXNiX25fZjMyX3gpKSkKc3ZmbG9hdDMyX3Qgc3ZubXNiX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm1zYl9uX2YxNl94KSkpCnN2ZmxvYXQxNl90IHN2bm1zYl94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIGZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5tc2Jfbl9mNjRfeikpKQpzdmZsb2F0NjRfdCBzdm5tc2JfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubXNiX25fZjMyX3opKSkKc3ZmbG9hdDMyX3Qgc3ZubXNiX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm1zYl9uX2YxNl96KSkpCnN2ZmxvYXQxNl90IHN2bm1zYl96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIGZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5tc2JfZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZubXNiX20oc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubXNiX2YzMl9tKSkpCnN2ZmxvYXQzMl90IHN2bm1zYl9tKHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm1zYl9mMTZfbSkpKQpzdmZsb2F0MTZfdCBzdm5tc2JfbShzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5tc2JfZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZubXNiX3goc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubXNiX2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2bm1zYl94KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm1zYl9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdm5tc2JfeChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5tc2JfZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZubXNiX3ooc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubXNiX2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2bm1zYl96KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm1zYl9mMTZfeikpKQpzdmZsb2F0MTZfdCBzdm5tc2JfeihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5vcl9iX3opKSkKc3Zib29sX3Qgc3Zub3JfeihzdmJvb2xfdCwgc3Zib29sX3QsIHN2Ym9vbF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm90X2JfeikpKQpzdmJvb2xfdCBzdm5vdF96KHN2Ym9vbF90LCBzdmJvb2xfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5vdF91OF9tKSkpCnN2dWludDhfdCBzdm5vdF9tKHN2dWludDhfdCwgc3Zib29sX3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5vdF91MzJfbSkpKQpzdnVpbnQzMl90IHN2bm90X20oc3Z1aW50MzJfdCwgc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zub3RfdTY0X20pKSkKc3Z1aW50NjRfdCBzdm5vdF9tKHN2dWludDY0X3QsIHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm90X3UxNl9tKSkpCnN2dWludDE2X3Qgc3Zub3RfbShzdnVpbnQxNl90LCBzdmJvb2xfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5vdF9zOF9tKSkpCnN2aW50OF90IHN2bm90X20oc3ZpbnQ4X3QsIHN2Ym9vbF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5vdF9zMzJfbSkpKQpzdmludDMyX3Qgc3Zub3RfbShzdmludDMyX3QsIHN2Ym9vbF90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zub3RfczY0X20pKSkKc3ZpbnQ2NF90IHN2bm90X20oc3ZpbnQ2NF90LCBzdmJvb2xfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm90X3MxNl9tKSkpCnN2aW50MTZfdCBzdm5vdF9tKHN2aW50MTZfdCwgc3Zib29sX3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5vdF91OF94KSkpCnN2dWludDhfdCBzdm5vdF94KHN2Ym9vbF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zub3RfdTMyX3gpKSkKc3Z1aW50MzJfdCBzdm5vdF94KHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm90X3U2NF94KSkpCnN2dWludDY0X3Qgc3Zub3RfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5vdF91MTZfeCkpKQpzdnVpbnQxNl90IHN2bm90X3goc3Zib29sX3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zub3RfczhfeCkpKQpzdmludDhfdCBzdm5vdF94KHN2Ym9vbF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5vdF9zMzJfeCkpKQpzdmludDMyX3Qgc3Zub3RfeChzdmJvb2xfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm90X3M2NF94KSkpCnN2aW50NjRfdCBzdm5vdF94KHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zub3RfczE2X3gpKSkKc3ZpbnQxNl90IHN2bm90X3goc3Zib29sX3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5vdF91OF96KSkpCnN2dWludDhfdCBzdm5vdF96KHN2Ym9vbF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zub3RfdTMyX3opKSkKc3Z1aW50MzJfdCBzdm5vdF96KHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm90X3U2NF96KSkpCnN2dWludDY0X3Qgc3Zub3RfeihzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5vdF91MTZfeikpKQpzdnVpbnQxNl90IHN2bm90X3ooc3Zib29sX3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zub3RfczhfeikpKQpzdmludDhfdCBzdm5vdF96KHN2Ym9vbF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5vdF9zMzJfeikpKQpzdmludDMyX3Qgc3Zub3RfeihzdmJvb2xfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm90X3M2NF96KSkpCnN2aW50NjRfdCBzdm5vdF96KHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zub3RfczE2X3opKSkKc3ZpbnQxNl90IHN2bm90X3ooc3Zib29sX3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm9ybl9iX3opKSkKc3Zib29sX3Qgc3Zvcm5feihzdmJvb2xfdCwgc3Zib29sX3QsIHN2Ym9vbF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2b3JyX2JfeikpKQpzdmJvb2xfdCBzdm9ycl96KHN2Ym9vbF90LCBzdmJvb2xfdCwgc3Zib29sX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZvcnJfbl91OF9tKSkpCnN2dWludDhfdCBzdm9ycl9tKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZvcnJfbl91MzJfbSkpKQpzdnVpbnQzMl90IHN2b3JyX20oc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2b3JyX25fdTY0X20pKSkKc3Z1aW50NjRfdCBzdm9ycl9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm9ycl9uX3UxNl9tKSkpCnN2dWludDE2X3Qgc3ZvcnJfbShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZvcnJfbl9zOF9tKSkpCnN2aW50OF90IHN2b3JyX20oc3Zib29sX3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZvcnJfbl9zMzJfbSkpKQpzdmludDMyX3Qgc3ZvcnJfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2b3JyX25fczY0X20pKSkKc3ZpbnQ2NF90IHN2b3JyX20oc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm9ycl9uX3MxNl9tKSkpCnN2aW50MTZfdCBzdm9ycl9tKHN2Ym9vbF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZvcnJfbl91OF94KSkpCnN2dWludDhfdCBzdm9ycl94KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZvcnJfbl91MzJfeCkpKQpzdnVpbnQzMl90IHN2b3JyX3goc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2b3JyX25fdTY0X3gpKSkKc3Z1aW50NjRfdCBzdm9ycl94KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm9ycl9uX3UxNl94KSkpCnN2dWludDE2X3Qgc3ZvcnJfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZvcnJfbl9zOF94KSkpCnN2aW50OF90IHN2b3JyX3goc3Zib29sX3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZvcnJfbl9zMzJfeCkpKQpzdmludDMyX3Qgc3ZvcnJfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2b3JyX25fczY0X3gpKSkKc3ZpbnQ2NF90IHN2b3JyX3goc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm9ycl9uX3MxNl94KSkpCnN2aW50MTZfdCBzdm9ycl94KHN2Ym9vbF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZvcnJfbl91OF96KSkpCnN2dWludDhfdCBzdm9ycl96KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZvcnJfbl91MzJfeikpKQpzdnVpbnQzMl90IHN2b3JyX3ooc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2b3JyX25fdTY0X3opKSkKc3Z1aW50NjRfdCBzdm9ycl96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm9ycl9uX3UxNl96KSkpCnN2dWludDE2X3Qgc3ZvcnJfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZvcnJfbl9zOF96KSkpCnN2aW50OF90IHN2b3JyX3ooc3Zib29sX3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZvcnJfbl9zMzJfeikpKQpzdmludDMyX3Qgc3ZvcnJfeihzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2b3JyX25fczY0X3opKSkKc3ZpbnQ2NF90IHN2b3JyX3ooc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm9ycl9uX3MxNl96KSkpCnN2aW50MTZfdCBzdm9ycl96KHN2Ym9vbF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZvcnJfdThfbSkpKQpzdnVpbnQ4X3Qgc3ZvcnJfbShzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZvcnJfdTMyX20pKSkKc3Z1aW50MzJfdCBzdm9ycl9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2b3JyX3U2NF9tKSkpCnN2dWludDY0X3Qgc3ZvcnJfbShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm9ycl91MTZfbSkpKQpzdnVpbnQxNl90IHN2b3JyX20oc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZvcnJfczhfbSkpKQpzdmludDhfdCBzdm9ycl9tKHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZvcnJfczMyX20pKSkKc3ZpbnQzMl90IHN2b3JyX20oc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2b3JyX3M2NF9tKSkpCnN2aW50NjRfdCBzdm9ycl9tKHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm9ycl9zMTZfbSkpKQpzdmludDE2X3Qgc3ZvcnJfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZvcnJfdThfeCkpKQpzdnVpbnQ4X3Qgc3ZvcnJfeChzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZvcnJfdTMyX3gpKSkKc3Z1aW50MzJfdCBzdm9ycl94KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2b3JyX3U2NF94KSkpCnN2dWludDY0X3Qgc3ZvcnJfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm9ycl91MTZfeCkpKQpzdnVpbnQxNl90IHN2b3JyX3goc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZvcnJfczhfeCkpKQpzdmludDhfdCBzdm9ycl94KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZvcnJfczMyX3gpKSkKc3ZpbnQzMl90IHN2b3JyX3goc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2b3JyX3M2NF94KSkpCnN2aW50NjRfdCBzdm9ycl94KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm9ycl9zMTZfeCkpKQpzdmludDE2X3Qgc3ZvcnJfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZvcnJfdThfeikpKQpzdnVpbnQ4X3Qgc3ZvcnJfeihzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZvcnJfdTMyX3opKSkKc3Z1aW50MzJfdCBzdm9ycl96KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2b3JyX3U2NF96KSkpCnN2dWludDY0X3Qgc3ZvcnJfeihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm9ycl91MTZfeikpKQpzdnVpbnQxNl90IHN2b3JyX3ooc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZvcnJfczhfeikpKQpzdmludDhfdCBzdm9ycl96KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZvcnJfczMyX3opKSkKc3ZpbnQzMl90IHN2b3JyX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2b3JyX3M2NF96KSkpCnN2aW50NjRfdCBzdm9ycl96KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm9ycl9zMTZfeikpKQpzdmludDE2X3Qgc3ZvcnJfeihzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZvcnZfdTgpKSkKdWludDhfdCBzdm9ydihzdmJvb2xfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2b3J2X3UzMikpKQp1aW50MzJfdCBzdm9ydihzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm9ydl91NjQpKSkKdWludDY0X3Qgc3ZvcnYoc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZvcnZfdTE2KSkpCnVpbnQxNl90IHN2b3J2KHN2Ym9vbF90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2b3J2X3M4KSkpCmludDhfdCBzdm9ydihzdmJvb2xfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZvcnZfczMyKSkpCmludDMyX3Qgc3ZvcnYoc3Zib29sX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm9ydl9zNjQpKSkKaW50NjRfdCBzdm9ydihzdmJvb2xfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2b3J2X3MxNikpKQppbnQxNl90IHN2b3J2KHN2Ym9vbF90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnBmYWxzZV9iKSkpCnN2Ym9vbF90IHN2cGZhbHNlKCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnBmaXJzdF9iKSkpCnN2Ym9vbF90IHN2cGZpcnN0KHN2Ym9vbF90LCBzdmJvb2xfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnByZmJfZ2F0aGVyX3UzMmJhc2UpKSkKdm9pZCBzdnByZmJfZ2F0aGVyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBlbnVtIHN2cHJmb3ApOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwcmZiX2dhdGhlcl91NjRiYXNlKSkpCnZvaWQgc3ZwcmZiX2dhdGhlcihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgZW51bSBzdnByZm9wKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cHJmYl9nYXRoZXJfdTMyYmFzZV9vZmZzZXQpKSkKdm9pZCBzdnByZmJfZ2F0aGVyX29mZnNldChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50NjRfdCwgZW51bSBzdnByZm9wKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cHJmYl9nYXRoZXJfdTY0YmFzZV9vZmZzZXQpKSkKdm9pZCBzdnByZmJfZ2F0aGVyX29mZnNldChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCwgZW51bSBzdnByZm9wKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cHJmYl9nYXRoZXJfczMyb2Zmc2V0KSkpCnZvaWQgc3ZwcmZiX2dhdGhlcl9vZmZzZXQoc3Zib29sX3QsIHZvaWQgY29uc3QgKiwgc3ZpbnQzMl90LCBlbnVtIHN2cHJmb3ApOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwcmZiX2dhdGhlcl91MzJvZmZzZXQpKSkKdm9pZCBzdnByZmJfZ2F0aGVyX29mZnNldChzdmJvb2xfdCwgdm9pZCBjb25zdCAqLCBzdnVpbnQzMl90LCBlbnVtIHN2cHJmb3ApOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwcmZiX2dhdGhlcl9zNjRvZmZzZXQpKSkKdm9pZCBzdnByZmJfZ2F0aGVyX29mZnNldChzdmJvb2xfdCwgdm9pZCBjb25zdCAqLCBzdmludDY0X3QsIGVudW0gc3ZwcmZvcCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnByZmJfZ2F0aGVyX3U2NG9mZnNldCkpKQp2b2lkIHN2cHJmYl9nYXRoZXJfb2Zmc2V0KHN2Ym9vbF90LCB2b2lkIGNvbnN0ICosIHN2dWludDY0X3QsIGVudW0gc3ZwcmZvcCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnByZmRfZ2F0aGVyX3UzMmJhc2UpKSkKdm9pZCBzdnByZmRfZ2F0aGVyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBlbnVtIHN2cHJmb3ApOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwcmZkX2dhdGhlcl91NjRiYXNlKSkpCnZvaWQgc3ZwcmZkX2dhdGhlcihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgZW51bSBzdnByZm9wKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cHJmZF9nYXRoZXJfdTMyYmFzZV9pbmRleCkpKQp2b2lkIHN2cHJmZF9nYXRoZXJfaW5kZXgoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QsIGVudW0gc3ZwcmZvcCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnByZmRfZ2F0aGVyX3U2NGJhc2VfaW5kZXgpKSkKdm9pZCBzdnByZmRfZ2F0aGVyX2luZGV4KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90LCBlbnVtIHN2cHJmb3ApOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwcmZkX2dhdGhlcl9zMzJpbmRleCkpKQp2b2lkIHN2cHJmZF9nYXRoZXJfaW5kZXgoc3Zib29sX3QsIHZvaWQgY29uc3QgKiwgc3ZpbnQzMl90LCBlbnVtIHN2cHJmb3ApOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwcmZkX2dhdGhlcl91MzJpbmRleCkpKQp2b2lkIHN2cHJmZF9nYXRoZXJfaW5kZXgoc3Zib29sX3QsIHZvaWQgY29uc3QgKiwgc3Z1aW50MzJfdCwgZW51bSBzdnByZm9wKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cHJmZF9nYXRoZXJfczY0aW5kZXgpKSkKdm9pZCBzdnByZmRfZ2F0aGVyX2luZGV4KHN2Ym9vbF90LCB2b2lkIGNvbnN0ICosIHN2aW50NjRfdCwgZW51bSBzdnByZm9wKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cHJmZF9nYXRoZXJfdTY0aW5kZXgpKSkKdm9pZCBzdnByZmRfZ2F0aGVyX2luZGV4KHN2Ym9vbF90LCB2b2lkIGNvbnN0ICosIHN2dWludDY0X3QsIGVudW0gc3ZwcmZvcCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnByZmhfZ2F0aGVyX3UzMmJhc2UpKSkKdm9pZCBzdnByZmhfZ2F0aGVyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBlbnVtIHN2cHJmb3ApOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwcmZoX2dhdGhlcl91NjRiYXNlKSkpCnZvaWQgc3ZwcmZoX2dhdGhlcihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgZW51bSBzdnByZm9wKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cHJmaF9nYXRoZXJfdTMyYmFzZV9pbmRleCkpKQp2b2lkIHN2cHJmaF9nYXRoZXJfaW5kZXgoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QsIGVudW0gc3ZwcmZvcCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnByZmhfZ2F0aGVyX3U2NGJhc2VfaW5kZXgpKSkKdm9pZCBzdnByZmhfZ2F0aGVyX2luZGV4KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90LCBlbnVtIHN2cHJmb3ApOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwcmZoX2dhdGhlcl9zMzJpbmRleCkpKQp2b2lkIHN2cHJmaF9nYXRoZXJfaW5kZXgoc3Zib29sX3QsIHZvaWQgY29uc3QgKiwgc3ZpbnQzMl90LCBlbnVtIHN2cHJmb3ApOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwcmZoX2dhdGhlcl91MzJpbmRleCkpKQp2b2lkIHN2cHJmaF9nYXRoZXJfaW5kZXgoc3Zib29sX3QsIHZvaWQgY29uc3QgKiwgc3Z1aW50MzJfdCwgZW51bSBzdnByZm9wKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cHJmaF9nYXRoZXJfczY0aW5kZXgpKSkKdm9pZCBzdnByZmhfZ2F0aGVyX2luZGV4KHN2Ym9vbF90LCB2b2lkIGNvbnN0ICosIHN2aW50NjRfdCwgZW51bSBzdnByZm9wKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cHJmaF9nYXRoZXJfdTY0aW5kZXgpKSkKdm9pZCBzdnByZmhfZ2F0aGVyX2luZGV4KHN2Ym9vbF90LCB2b2lkIGNvbnN0ICosIHN2dWludDY0X3QsIGVudW0gc3ZwcmZvcCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnByZndfZ2F0aGVyX3UzMmJhc2UpKSkKdm9pZCBzdnByZndfZ2F0aGVyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBlbnVtIHN2cHJmb3ApOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwcmZ3X2dhdGhlcl91NjRiYXNlKSkpCnZvaWQgc3ZwcmZ3X2dhdGhlcihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgZW51bSBzdnByZm9wKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cHJmd19nYXRoZXJfdTMyYmFzZV9pbmRleCkpKQp2b2lkIHN2cHJmd19nYXRoZXJfaW5kZXgoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QsIGVudW0gc3ZwcmZvcCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnByZndfZ2F0aGVyX3U2NGJhc2VfaW5kZXgpKSkKdm9pZCBzdnByZndfZ2F0aGVyX2luZGV4KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90LCBlbnVtIHN2cHJmb3ApOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwcmZ3X2dhdGhlcl9zMzJpbmRleCkpKQp2b2lkIHN2cHJmd19nYXRoZXJfaW5kZXgoc3Zib29sX3QsIHZvaWQgY29uc3QgKiwgc3ZpbnQzMl90LCBlbnVtIHN2cHJmb3ApOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwcmZ3X2dhdGhlcl91MzJpbmRleCkpKQp2b2lkIHN2cHJmd19nYXRoZXJfaW5kZXgoc3Zib29sX3QsIHZvaWQgY29uc3QgKiwgc3Z1aW50MzJfdCwgZW51bSBzdnByZm9wKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cHJmd19nYXRoZXJfczY0aW5kZXgpKSkKdm9pZCBzdnByZndfZ2F0aGVyX2luZGV4KHN2Ym9vbF90LCB2b2lkIGNvbnN0ICosIHN2aW50NjRfdCwgZW51bSBzdnByZm9wKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cHJmd19nYXRoZXJfdTY0aW5kZXgpKSkKdm9pZCBzdnByZndfZ2F0aGVyX2luZGV4KHN2Ym9vbF90LCB2b2lkIGNvbnN0ICosIHN2dWludDY0X3QsIGVudW0gc3ZwcmZvcCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhZGRfbl9zOCkpKQpzdmludDhfdCBzdnFhZGQoc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhZGRfbl9zMzIpKSkKc3ZpbnQzMl90IHN2cWFkZChzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWRkX25fczY0KSkpCnN2aW50NjRfdCBzdnFhZGQoc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFkZF9uX3MxNikpKQpzdmludDE2X3Qgc3ZxYWRkKHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhZGRfbl91OCkpKQpzdnVpbnQ4X3Qgc3ZxYWRkKHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhZGRfbl91MzIpKSkKc3Z1aW50MzJfdCBzdnFhZGQoc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWRkX25fdTY0KSkpCnN2dWludDY0X3Qgc3ZxYWRkKHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFkZF9uX3UxNikpKQpzdnVpbnQxNl90IHN2cWFkZChzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhZGRfczgpKSkKc3ZpbnQ4X3Qgc3ZxYWRkKHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhZGRfczMyKSkpCnN2aW50MzJfdCBzdnFhZGQoc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWRkX3M2NCkpKQpzdmludDY0X3Qgc3ZxYWRkKHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFkZF9zMTYpKSkKc3ZpbnQxNl90IHN2cWFkZChzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhZGRfdTgpKSkKc3Z1aW50OF90IHN2cWFkZChzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhZGRfdTMyKSkpCnN2dWludDMyX3Qgc3ZxYWRkKHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWRkX3U2NCkpKQpzdnVpbnQ2NF90IHN2cWFkZChzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFkZF91MTYpKSkKc3Z1aW50MTZfdCBzdnFhZGQoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWNiX25fczMyKSkpCmludDMyX3Qgc3ZxZGVjYihpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWNiX25fczY0KSkpCmludDY0X3Qgc3ZxZGVjYihpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWNiX25fdTMyKSkpCnVpbnQzMl90IHN2cWRlY2IodWludDMyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRlY2Jfbl91NjQpKSkKdWludDY0X3Qgc3ZxZGVjYih1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZGVjYl9wYXRfbl9zMzIpKSkKaW50MzJfdCBzdnFkZWNiX3BhdChpbnQzMl90LCBlbnVtIHN2cGF0dGVybiwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZGVjYl9wYXRfbl9zNjQpKSkKaW50NjRfdCBzdnFkZWNiX3BhdChpbnQ2NF90LCBlbnVtIHN2cGF0dGVybiwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZGVjYl9wYXRfbl91MzIpKSkKdWludDMyX3Qgc3ZxZGVjYl9wYXQodWludDMyX3QsIGVudW0gc3ZwYXR0ZXJuLCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWNiX3BhdF9uX3U2NCkpKQp1aW50NjRfdCBzdnFkZWNiX3BhdCh1aW50NjRfdCwgZW51bSBzdnBhdHRlcm4sIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRlY2Rfbl9zMzIpKSkKaW50MzJfdCBzdnFkZWNkKGludDMyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRlY2Rfbl9zNjQpKSkKaW50NjRfdCBzdnFkZWNkKGludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRlY2Rfbl91MzIpKSkKdWludDMyX3Qgc3ZxZGVjZCh1aW50MzJfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZGVjZF9uX3U2NCkpKQp1aW50NjRfdCBzdnFkZWNkKHVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWNkX3M2NCkpKQpzdmludDY0X3Qgc3ZxZGVjZChzdmludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRlY2RfdTY0KSkpCnN2dWludDY0X3Qgc3ZxZGVjZChzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWNkX3BhdF9uX3MzMikpKQppbnQzMl90IHN2cWRlY2RfcGF0KGludDMyX3QsIGVudW0gc3ZwYXR0ZXJuLCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWNkX3BhdF9uX3M2NCkpKQppbnQ2NF90IHN2cWRlY2RfcGF0KGludDY0X3QsIGVudW0gc3ZwYXR0ZXJuLCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWNkX3BhdF9uX3UzMikpKQp1aW50MzJfdCBzdnFkZWNkX3BhdCh1aW50MzJfdCwgZW51bSBzdnBhdHRlcm4sIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRlY2RfcGF0X25fdTY0KSkpCnVpbnQ2NF90IHN2cWRlY2RfcGF0KHVpbnQ2NF90LCBlbnVtIHN2cGF0dGVybiwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZGVjZF9wYXRfczY0KSkpCnN2aW50NjRfdCBzdnFkZWNkX3BhdChzdmludDY0X3QsIGVudW0gc3ZwYXR0ZXJuLCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWNkX3BhdF91NjQpKSkKc3Z1aW50NjRfdCBzdnFkZWNkX3BhdChzdnVpbnQ2NF90LCBlbnVtIHN2cGF0dGVybiwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZGVjaF9uX3MzMikpKQppbnQzMl90IHN2cWRlY2goaW50MzJfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZGVjaF9uX3M2NCkpKQppbnQ2NF90IHN2cWRlY2goaW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZGVjaF9uX3UzMikpKQp1aW50MzJfdCBzdnFkZWNoKHVpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWNoX25fdTY0KSkpCnVpbnQ2NF90IHN2cWRlY2godWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRlY2hfczE2KSkpCnN2aW50MTZfdCBzdnFkZWNoKHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZGVjaF91MTYpKSkKc3Z1aW50MTZfdCBzdnFkZWNoKHN2dWludDE2X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRlY2hfcGF0X25fczMyKSkpCmludDMyX3Qgc3ZxZGVjaF9wYXQoaW50MzJfdCwgZW51bSBzdnBhdHRlcm4sIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRlY2hfcGF0X25fczY0KSkpCmludDY0X3Qgc3ZxZGVjaF9wYXQoaW50NjRfdCwgZW51bSBzdnBhdHRlcm4sIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRlY2hfcGF0X25fdTMyKSkpCnVpbnQzMl90IHN2cWRlY2hfcGF0KHVpbnQzMl90LCBlbnVtIHN2cGF0dGVybiwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZGVjaF9wYXRfbl91NjQpKSkKdWludDY0X3Qgc3ZxZGVjaF9wYXQodWludDY0X3QsIGVudW0gc3ZwYXR0ZXJuLCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWNoX3BhdF9zMTYpKSkKc3ZpbnQxNl90IHN2cWRlY2hfcGF0KHN2aW50MTZfdCwgZW51bSBzdnBhdHRlcm4sIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRlY2hfcGF0X3UxNikpKQpzdnVpbnQxNl90IHN2cWRlY2hfcGF0KHN2dWludDE2X3QsIGVudW0gc3ZwYXR0ZXJuLCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWNwX25fczMyX2I4KSkpCmludDMyX3Qgc3ZxZGVjcF9iOChpbnQzMl90LCBzdmJvb2xfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWNwX25fczMyX2IzMikpKQppbnQzMl90IHN2cWRlY3BfYjMyKGludDMyX3QsIHN2Ym9vbF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRlY3Bfbl9zMzJfYjY0KSkpCmludDMyX3Qgc3ZxZGVjcF9iNjQoaW50MzJfdCwgc3Zib29sX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZGVjcF9uX3MzMl9iMTYpKSkKaW50MzJfdCBzdnFkZWNwX2IxNihpbnQzMl90LCBzdmJvb2xfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWNwX25fczY0X2I4KSkpCmludDY0X3Qgc3ZxZGVjcF9iOChpbnQ2NF90LCBzdmJvb2xfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWNwX25fczY0X2IzMikpKQppbnQ2NF90IHN2cWRlY3BfYjMyKGludDY0X3QsIHN2Ym9vbF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRlY3Bfbl9zNjRfYjY0KSkpCmludDY0X3Qgc3ZxZGVjcF9iNjQoaW50NjRfdCwgc3Zib29sX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZGVjcF9uX3M2NF9iMTYpKSkKaW50NjRfdCBzdnFkZWNwX2IxNihpbnQ2NF90LCBzdmJvb2xfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWNwX25fdTMyX2I4KSkpCnVpbnQzMl90IHN2cWRlY3BfYjgodWludDMyX3QsIHN2Ym9vbF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRlY3Bfbl91MzJfYjMyKSkpCnVpbnQzMl90IHN2cWRlY3BfYjMyKHVpbnQzMl90LCBzdmJvb2xfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWNwX25fdTMyX2I2NCkpKQp1aW50MzJfdCBzdnFkZWNwX2I2NCh1aW50MzJfdCwgc3Zib29sX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZGVjcF9uX3UzMl9iMTYpKSkKdWludDMyX3Qgc3ZxZGVjcF9iMTYodWludDMyX3QsIHN2Ym9vbF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRlY3Bfbl91NjRfYjgpKSkKdWludDY0X3Qgc3ZxZGVjcF9iOCh1aW50NjRfdCwgc3Zib29sX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZGVjcF9uX3U2NF9iMzIpKSkKdWludDY0X3Qgc3ZxZGVjcF9iMzIodWludDY0X3QsIHN2Ym9vbF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRlY3Bfbl91NjRfYjY0KSkpCnVpbnQ2NF90IHN2cWRlY3BfYjY0KHVpbnQ2NF90LCBzdmJvb2xfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWNwX25fdTY0X2IxNikpKQp1aW50NjRfdCBzdnFkZWNwX2IxNih1aW50NjRfdCwgc3Zib29sX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZGVjcF9zMzIpKSkKc3ZpbnQzMl90IHN2cWRlY3Aoc3ZpbnQzMl90LCBzdmJvb2xfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWNwX3M2NCkpKQpzdmludDY0X3Qgc3ZxZGVjcChzdmludDY0X3QsIHN2Ym9vbF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRlY3BfczE2KSkpCnN2aW50MTZfdCBzdnFkZWNwKHN2aW50MTZfdCwgc3Zib29sX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZGVjcF91MzIpKSkKc3Z1aW50MzJfdCBzdnFkZWNwKHN2dWludDMyX3QsIHN2Ym9vbF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRlY3BfdTY0KSkpCnN2dWludDY0X3Qgc3ZxZGVjcChzdnVpbnQ2NF90LCBzdmJvb2xfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWNwX3UxNikpKQpzdnVpbnQxNl90IHN2cWRlY3Aoc3Z1aW50MTZfdCwgc3Zib29sX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZGVjd19uX3MzMikpKQppbnQzMl90IHN2cWRlY3coaW50MzJfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZGVjd19uX3M2NCkpKQppbnQ2NF90IHN2cWRlY3coaW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZGVjd19uX3UzMikpKQp1aW50MzJfdCBzdnFkZWN3KHVpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWN3X25fdTY0KSkpCnVpbnQ2NF90IHN2cWRlY3codWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRlY3dfczMyKSkpCnN2aW50MzJfdCBzdnFkZWN3KHN2aW50MzJfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZGVjd191MzIpKSkKc3Z1aW50MzJfdCBzdnFkZWN3KHN2dWludDMyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRlY3dfcGF0X25fczMyKSkpCmludDMyX3Qgc3ZxZGVjd19wYXQoaW50MzJfdCwgZW51bSBzdnBhdHRlcm4sIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRlY3dfcGF0X25fczY0KSkpCmludDY0X3Qgc3ZxZGVjd19wYXQoaW50NjRfdCwgZW51bSBzdnBhdHRlcm4sIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRlY3dfcGF0X25fdTMyKSkpCnVpbnQzMl90IHN2cWRlY3dfcGF0KHVpbnQzMl90LCBlbnVtIHN2cGF0dGVybiwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZGVjd19wYXRfbl91NjQpKSkKdWludDY0X3Qgc3ZxZGVjd19wYXQodWludDY0X3QsIGVudW0gc3ZwYXR0ZXJuLCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkZWN3X3BhdF9zMzIpKSkKc3ZpbnQzMl90IHN2cWRlY3dfcGF0KHN2aW50MzJfdCwgZW51bSBzdnBhdHRlcm4sIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRlY3dfcGF0X3UzMikpKQpzdnVpbnQzMl90IHN2cWRlY3dfcGF0KHN2dWludDMyX3QsIGVudW0gc3ZwYXR0ZXJuLCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmNiX25fczMyKSkpCmludDMyX3Qgc3ZxaW5jYihpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmNiX25fczY0KSkpCmludDY0X3Qgc3ZxaW5jYihpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmNiX25fdTMyKSkpCnVpbnQzMl90IHN2cWluY2IodWludDMyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWluY2Jfbl91NjQpKSkKdWludDY0X3Qgc3ZxaW5jYih1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxaW5jYl9wYXRfbl9zMzIpKSkKaW50MzJfdCBzdnFpbmNiX3BhdChpbnQzMl90LCBlbnVtIHN2cGF0dGVybiwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxaW5jYl9wYXRfbl9zNjQpKSkKaW50NjRfdCBzdnFpbmNiX3BhdChpbnQ2NF90LCBlbnVtIHN2cGF0dGVybiwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxaW5jYl9wYXRfbl91MzIpKSkKdWludDMyX3Qgc3ZxaW5jYl9wYXQodWludDMyX3QsIGVudW0gc3ZwYXR0ZXJuLCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmNiX3BhdF9uX3U2NCkpKQp1aW50NjRfdCBzdnFpbmNiX3BhdCh1aW50NjRfdCwgZW51bSBzdnBhdHRlcm4sIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWluY2Rfbl9zMzIpKSkKaW50MzJfdCBzdnFpbmNkKGludDMyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWluY2Rfbl9zNjQpKSkKaW50NjRfdCBzdnFpbmNkKGludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWluY2Rfbl91MzIpKSkKdWludDMyX3Qgc3ZxaW5jZCh1aW50MzJfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxaW5jZF9uX3U2NCkpKQp1aW50NjRfdCBzdnFpbmNkKHVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmNkX3M2NCkpKQpzdmludDY0X3Qgc3ZxaW5jZChzdmludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWluY2RfdTY0KSkpCnN2dWludDY0X3Qgc3ZxaW5jZChzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmNkX3BhdF9uX3MzMikpKQppbnQzMl90IHN2cWluY2RfcGF0KGludDMyX3QsIGVudW0gc3ZwYXR0ZXJuLCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmNkX3BhdF9uX3M2NCkpKQppbnQ2NF90IHN2cWluY2RfcGF0KGludDY0X3QsIGVudW0gc3ZwYXR0ZXJuLCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmNkX3BhdF9uX3UzMikpKQp1aW50MzJfdCBzdnFpbmNkX3BhdCh1aW50MzJfdCwgZW51bSBzdnBhdHRlcm4sIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWluY2RfcGF0X25fdTY0KSkpCnVpbnQ2NF90IHN2cWluY2RfcGF0KHVpbnQ2NF90LCBlbnVtIHN2cGF0dGVybiwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxaW5jZF9wYXRfczY0KSkpCnN2aW50NjRfdCBzdnFpbmNkX3BhdChzdmludDY0X3QsIGVudW0gc3ZwYXR0ZXJuLCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmNkX3BhdF91NjQpKSkKc3Z1aW50NjRfdCBzdnFpbmNkX3BhdChzdnVpbnQ2NF90LCBlbnVtIHN2cGF0dGVybiwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxaW5jaF9uX3MzMikpKQppbnQzMl90IHN2cWluY2goaW50MzJfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxaW5jaF9uX3M2NCkpKQppbnQ2NF90IHN2cWluY2goaW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxaW5jaF9uX3UzMikpKQp1aW50MzJfdCBzdnFpbmNoKHVpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmNoX25fdTY0KSkpCnVpbnQ2NF90IHN2cWluY2godWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWluY2hfczE2KSkpCnN2aW50MTZfdCBzdnFpbmNoKHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxaW5jaF91MTYpKSkKc3Z1aW50MTZfdCBzdnFpbmNoKHN2dWludDE2X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWluY2hfcGF0X25fczMyKSkpCmludDMyX3Qgc3ZxaW5jaF9wYXQoaW50MzJfdCwgZW51bSBzdnBhdHRlcm4sIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWluY2hfcGF0X25fczY0KSkpCmludDY0X3Qgc3ZxaW5jaF9wYXQoaW50NjRfdCwgZW51bSBzdnBhdHRlcm4sIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWluY2hfcGF0X25fdTMyKSkpCnVpbnQzMl90IHN2cWluY2hfcGF0KHVpbnQzMl90LCBlbnVtIHN2cGF0dGVybiwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxaW5jaF9wYXRfbl91NjQpKSkKdWludDY0X3Qgc3ZxaW5jaF9wYXQodWludDY0X3QsIGVudW0gc3ZwYXR0ZXJuLCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmNoX3BhdF9zMTYpKSkKc3ZpbnQxNl90IHN2cWluY2hfcGF0KHN2aW50MTZfdCwgZW51bSBzdnBhdHRlcm4sIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWluY2hfcGF0X3UxNikpKQpzdnVpbnQxNl90IHN2cWluY2hfcGF0KHN2dWludDE2X3QsIGVudW0gc3ZwYXR0ZXJuLCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmNwX25fczMyX2I4KSkpCmludDMyX3Qgc3ZxaW5jcF9iOChpbnQzMl90LCBzdmJvb2xfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmNwX25fczMyX2IzMikpKQppbnQzMl90IHN2cWluY3BfYjMyKGludDMyX3QsIHN2Ym9vbF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWluY3Bfbl9zMzJfYjY0KSkpCmludDMyX3Qgc3ZxaW5jcF9iNjQoaW50MzJfdCwgc3Zib29sX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxaW5jcF9uX3MzMl9iMTYpKSkKaW50MzJfdCBzdnFpbmNwX2IxNihpbnQzMl90LCBzdmJvb2xfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmNwX25fczY0X2I4KSkpCmludDY0X3Qgc3ZxaW5jcF9iOChpbnQ2NF90LCBzdmJvb2xfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmNwX25fczY0X2IzMikpKQppbnQ2NF90IHN2cWluY3BfYjMyKGludDY0X3QsIHN2Ym9vbF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWluY3Bfbl9zNjRfYjY0KSkpCmludDY0X3Qgc3ZxaW5jcF9iNjQoaW50NjRfdCwgc3Zib29sX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxaW5jcF9uX3M2NF9iMTYpKSkKaW50NjRfdCBzdnFpbmNwX2IxNihpbnQ2NF90LCBzdmJvb2xfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmNwX25fdTMyX2I4KSkpCnVpbnQzMl90IHN2cWluY3BfYjgodWludDMyX3QsIHN2Ym9vbF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWluY3Bfbl91MzJfYjMyKSkpCnVpbnQzMl90IHN2cWluY3BfYjMyKHVpbnQzMl90LCBzdmJvb2xfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmNwX25fdTMyX2I2NCkpKQp1aW50MzJfdCBzdnFpbmNwX2I2NCh1aW50MzJfdCwgc3Zib29sX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxaW5jcF9uX3UzMl9iMTYpKSkKdWludDMyX3Qgc3ZxaW5jcF9iMTYodWludDMyX3QsIHN2Ym9vbF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWluY3Bfbl91NjRfYjgpKSkKdWludDY0X3Qgc3ZxaW5jcF9iOCh1aW50NjRfdCwgc3Zib29sX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxaW5jcF9uX3U2NF9iMzIpKSkKdWludDY0X3Qgc3ZxaW5jcF9iMzIodWludDY0X3QsIHN2Ym9vbF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWluY3Bfbl91NjRfYjY0KSkpCnVpbnQ2NF90IHN2cWluY3BfYjY0KHVpbnQ2NF90LCBzdmJvb2xfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmNwX25fdTY0X2IxNikpKQp1aW50NjRfdCBzdnFpbmNwX2IxNih1aW50NjRfdCwgc3Zib29sX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxaW5jcF9zMzIpKSkKc3ZpbnQzMl90IHN2cWluY3Aoc3ZpbnQzMl90LCBzdmJvb2xfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmNwX3M2NCkpKQpzdmludDY0X3Qgc3ZxaW5jcChzdmludDY0X3QsIHN2Ym9vbF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWluY3BfczE2KSkpCnN2aW50MTZfdCBzdnFpbmNwKHN2aW50MTZfdCwgc3Zib29sX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxaW5jcF91MzIpKSkKc3Z1aW50MzJfdCBzdnFpbmNwKHN2dWludDMyX3QsIHN2Ym9vbF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWluY3BfdTY0KSkpCnN2dWludDY0X3Qgc3ZxaW5jcChzdnVpbnQ2NF90LCBzdmJvb2xfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmNwX3UxNikpKQpzdnVpbnQxNl90IHN2cWluY3Aoc3Z1aW50MTZfdCwgc3Zib29sX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxaW5jd19uX3MzMikpKQppbnQzMl90IHN2cWluY3coaW50MzJfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxaW5jd19uX3M2NCkpKQppbnQ2NF90IHN2cWluY3coaW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxaW5jd19uX3UzMikpKQp1aW50MzJfdCBzdnFpbmN3KHVpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmN3X25fdTY0KSkpCnVpbnQ2NF90IHN2cWluY3codWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWluY3dfczMyKSkpCnN2aW50MzJfdCBzdnFpbmN3KHN2aW50MzJfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxaW5jd191MzIpKSkKc3Z1aW50MzJfdCBzdnFpbmN3KHN2dWludDMyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWluY3dfcGF0X25fczMyKSkpCmludDMyX3Qgc3ZxaW5jd19wYXQoaW50MzJfdCwgZW51bSBzdnBhdHRlcm4sIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWluY3dfcGF0X25fczY0KSkpCmludDY0X3Qgc3ZxaW5jd19wYXQoaW50NjRfdCwgZW51bSBzdnBhdHRlcm4sIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWluY3dfcGF0X25fdTMyKSkpCnVpbnQzMl90IHN2cWluY3dfcGF0KHVpbnQzMl90LCBlbnVtIHN2cGF0dGVybiwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxaW5jd19wYXRfbl91NjQpKSkKdWludDY0X3Qgc3ZxaW5jd19wYXQodWludDY0X3QsIGVudW0gc3ZwYXR0ZXJuLCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFpbmN3X3BhdF9zMzIpKSkKc3ZpbnQzMl90IHN2cWluY3dfcGF0KHN2aW50MzJfdCwgZW51bSBzdnBhdHRlcm4sIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWluY3dfcGF0X3UzMikpKQpzdnVpbnQzMl90IHN2cWluY3dfcGF0KHN2dWludDMyX3QsIGVudW0gc3ZwYXR0ZXJuLCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJfbl9zOCkpKQpzdmludDhfdCBzdnFzdWIoc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJfbl9zMzIpKSkKc3ZpbnQzMl90IHN2cXN1YihzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3ViX25fczY0KSkpCnN2aW50NjRfdCBzdnFzdWIoc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1Yl9uX3MxNikpKQpzdmludDE2X3Qgc3Zxc3ViKHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJfbl91OCkpKQpzdnVpbnQ4X3Qgc3Zxc3ViKHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJfbl91MzIpKSkKc3Z1aW50MzJfdCBzdnFzdWIoc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3ViX25fdTY0KSkpCnN2dWludDY0X3Qgc3Zxc3ViKHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1Yl9uX3UxNikpKQpzdnVpbnQxNl90IHN2cXN1YihzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJfczgpKSkKc3ZpbnQ4X3Qgc3Zxc3ViKHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJfczMyKSkpCnN2aW50MzJfdCBzdnFzdWIoc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3ViX3M2NCkpKQpzdmludDY0X3Qgc3Zxc3ViKHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1Yl9zMTYpKSkKc3ZpbnQxNl90IHN2cXN1YihzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJfdTgpKSkKc3Z1aW50OF90IHN2cXN1YihzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJfdTMyKSkpCnN2dWludDMyX3Qgc3Zxc3ViKHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3ViX3U2NCkpKQpzdnVpbnQ2NF90IHN2cXN1YihzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1Yl91MTYpKSkKc3Z1aW50MTZfdCBzdnFzdWIoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJiaXRfdThfbSkpKQpzdnVpbnQ4X3Qgc3ZyYml0X20oc3Z1aW50OF90LCBzdmJvb2xfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmJpdF91MzJfbSkpKQpzdnVpbnQzMl90IHN2cmJpdF9tKHN2dWludDMyX3QsIHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmJpdF91NjRfbSkpKQpzdnVpbnQ2NF90IHN2cmJpdF9tKHN2dWludDY0X3QsIHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmJpdF91MTZfbSkpKQpzdnVpbnQxNl90IHN2cmJpdF9tKHN2dWludDE2X3QsIHN2Ym9vbF90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmJpdF9zOF9tKSkpCnN2aW50OF90IHN2cmJpdF9tKHN2aW50OF90LCBzdmJvb2xfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyYml0X3MzMl9tKSkpCnN2aW50MzJfdCBzdnJiaXRfbShzdmludDMyX3QsIHN2Ym9vbF90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyYml0X3M2NF9tKSkpCnN2aW50NjRfdCBzdnJiaXRfbShzdmludDY0X3QsIHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyYml0X3MxNl9tKSkpCnN2aW50MTZfdCBzdnJiaXRfbShzdmludDE2X3QsIHN2Ym9vbF90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyYml0X3U4X3gpKSkKc3Z1aW50OF90IHN2cmJpdF94KHN2Ym9vbF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyYml0X3UzMl94KSkpCnN2dWludDMyX3Qgc3ZyYml0X3goc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyYml0X3U2NF94KSkpCnN2dWludDY0X3Qgc3ZyYml0X3goc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyYml0X3UxNl94KSkpCnN2dWludDE2X3Qgc3ZyYml0X3goc3Zib29sX3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyYml0X3M4X3gpKSkKc3ZpbnQ4X3Qgc3ZyYml0X3goc3Zib29sX3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmJpdF9zMzJfeCkpKQpzdmludDMyX3Qgc3ZyYml0X3goc3Zib29sX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJiaXRfczY0X3gpKSkKc3ZpbnQ2NF90IHN2cmJpdF94KHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyYml0X3MxNl94KSkpCnN2aW50MTZfdCBzdnJiaXRfeChzdmJvb2xfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmJpdF91OF96KSkpCnN2dWludDhfdCBzdnJiaXRfeihzdmJvb2xfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmJpdF91MzJfeikpKQpzdnVpbnQzMl90IHN2cmJpdF96KHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmJpdF91NjRfeikpKQpzdnVpbnQ2NF90IHN2cmJpdF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmJpdF91MTZfeikpKQpzdnVpbnQxNl90IHN2cmJpdF96KHN2Ym9vbF90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmJpdF9zOF96KSkpCnN2aW50OF90IHN2cmJpdF96KHN2Ym9vbF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJiaXRfczMyX3opKSkKc3ZpbnQzMl90IHN2cmJpdF96KHN2Ym9vbF90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyYml0X3M2NF96KSkpCnN2aW50NjRfdCBzdnJiaXRfeihzdmJvb2xfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmJpdF9zMTZfeikpKQpzdmludDE2X3Qgc3ZyYml0X3ooc3Zib29sX3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJlY3BlX2Y2NCkpKQpzdmZsb2F0NjRfdCBzdnJlY3BlKHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmVjcGVfZjMyKSkpCnN2ZmxvYXQzMl90IHN2cmVjcGUoc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyZWNwZV9mMTYpKSkKc3ZmbG9hdDE2X3Qgc3ZyZWNwZShzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJlY3BzX2Y2NCkpKQpzdmZsb2F0NjRfdCBzdnJlY3BzKHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJlY3BzX2YzMikpKQpzdmZsb2F0MzJfdCBzdnJlY3BzKHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJlY3BzX2YxNikpKQpzdmZsb2F0MTZfdCBzdnJlY3BzKHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJlY3B4X2Y2NF9tKSkpCnN2ZmxvYXQ2NF90IHN2cmVjcHhfbShzdmZsb2F0NjRfdCwgc3Zib29sX3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmVjcHhfZjMyX20pKSkKc3ZmbG9hdDMyX3Qgc3ZyZWNweF9tKHN2ZmxvYXQzMl90LCBzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyZWNweF9mMTZfbSkpKQpzdmZsb2F0MTZfdCBzdnJlY3B4X20oc3ZmbG9hdDE2X3QsIHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJlY3B4X2Y2NF94KSkpCnN2ZmxvYXQ2NF90IHN2cmVjcHhfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyZWNweF9mMzJfeCkpKQpzdmZsb2F0MzJfdCBzdnJlY3B4X3goc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmVjcHhfZjE2X3gpKSkKc3ZmbG9hdDE2X3Qgc3ZyZWNweF94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJlY3B4X2Y2NF96KSkpCnN2ZmxvYXQ2NF90IHN2cmVjcHhfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyZWNweF9mMzJfeikpKQpzdmZsb2F0MzJfdCBzdnJlY3B4X3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmVjcHhfZjE2X3opKSkKc3ZmbG9hdDE2X3Qgc3ZyZWNweF96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJldl91OCkpKQpzdnVpbnQ4X3Qgc3ZyZXYoc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2X3UzMikpKQpzdnVpbnQzMl90IHN2cmV2KHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyZXZfdTY0KSkpCnN2dWludDY0X3Qgc3ZyZXYoc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJldl91MTYpKSkKc3Z1aW50MTZfdCBzdnJldihzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2X3M4KSkpCnN2aW50OF90IHN2cmV2KHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2X2Y2NCkpKQpzdmZsb2F0NjRfdCBzdnJldihzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJldl9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3ZyZXYoc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyZXZfZjE2KSkpCnN2ZmxvYXQxNl90IHN2cmV2KHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2X3MzMikpKQpzdmludDMyX3Qgc3ZyZXYoc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2X3M2NCkpKQpzdmludDY0X3Qgc3ZyZXYoc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2X3MxNikpKQpzdmludDE2X3Qgc3ZyZXYoc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2Yl91MzJfbSkpKQpzdnVpbnQzMl90IHN2cmV2Yl9tKHN2dWludDMyX3QsIHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2Yl91NjRfbSkpKQpzdnVpbnQ2NF90IHN2cmV2Yl9tKHN2dWludDY0X3QsIHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2Yl91MTZfbSkpKQpzdnVpbnQxNl90IHN2cmV2Yl9tKHN2dWludDE2X3QsIHN2Ym9vbF90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2Yl9zMzJfbSkpKQpzdmludDMyX3Qgc3ZyZXZiX20oc3ZpbnQzMl90LCBzdmJvb2xfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2Yl9zNjRfbSkpKQpzdmludDY0X3Qgc3ZyZXZiX20oc3ZpbnQ2NF90LCBzdmJvb2xfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2Yl9zMTZfbSkpKQpzdmludDE2X3Qgc3ZyZXZiX20oc3ZpbnQxNl90LCBzdmJvb2xfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2Yl91MzJfeCkpKQpzdnVpbnQzMl90IHN2cmV2Yl94KHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2Yl91NjRfeCkpKQpzdnVpbnQ2NF90IHN2cmV2Yl94KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2Yl91MTZfeCkpKQpzdnVpbnQxNl90IHN2cmV2Yl94KHN2Ym9vbF90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2Yl9zMzJfeCkpKQpzdmludDMyX3Qgc3ZyZXZiX3goc3Zib29sX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJldmJfczY0X3gpKSkKc3ZpbnQ2NF90IHN2cmV2Yl94KHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyZXZiX3MxNl94KSkpCnN2aW50MTZfdCBzdnJldmJfeChzdmJvb2xfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2Yl91MzJfeikpKQpzdnVpbnQzMl90IHN2cmV2Yl96KHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2Yl91NjRfeikpKQpzdnVpbnQ2NF90IHN2cmV2Yl96KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2Yl91MTZfeikpKQpzdnVpbnQxNl90IHN2cmV2Yl96KHN2Ym9vbF90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2Yl9zMzJfeikpKQpzdmludDMyX3Qgc3ZyZXZiX3ooc3Zib29sX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJldmJfczY0X3opKSkKc3ZpbnQ2NF90IHN2cmV2Yl96KHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyZXZiX3MxNl96KSkpCnN2aW50MTZfdCBzdnJldmJfeihzdmJvb2xfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2aF91MzJfbSkpKQpzdnVpbnQzMl90IHN2cmV2aF9tKHN2dWludDMyX3QsIHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2aF91NjRfbSkpKQpzdnVpbnQ2NF90IHN2cmV2aF9tKHN2dWludDY0X3QsIHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2aF9zMzJfbSkpKQpzdmludDMyX3Qgc3ZyZXZoX20oc3ZpbnQzMl90LCBzdmJvb2xfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2aF9zNjRfbSkpKQpzdmludDY0X3Qgc3ZyZXZoX20oc3ZpbnQ2NF90LCBzdmJvb2xfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2aF91MzJfeCkpKQpzdnVpbnQzMl90IHN2cmV2aF94KHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2aF91NjRfeCkpKQpzdnVpbnQ2NF90IHN2cmV2aF94KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2aF9zMzJfeCkpKQpzdmludDMyX3Qgc3ZyZXZoX3goc3Zib29sX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJldmhfczY0X3gpKSkKc3ZpbnQ2NF90IHN2cmV2aF94KHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyZXZoX3UzMl96KSkpCnN2dWludDMyX3Qgc3ZyZXZoX3ooc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyZXZoX3U2NF96KSkpCnN2dWludDY0X3Qgc3ZyZXZoX3ooc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyZXZoX3MzMl96KSkpCnN2aW50MzJfdCBzdnJldmhfeihzdmJvb2xfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2aF9zNjRfeikpKQpzdmludDY0X3Qgc3ZyZXZoX3ooc3Zib29sX3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJldndfdTY0X20pKSkKc3Z1aW50NjRfdCBzdnJldndfbShzdnVpbnQ2NF90LCBzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJldndfczY0X20pKSkKc3ZpbnQ2NF90IHN2cmV2d19tKHN2aW50NjRfdCwgc3Zib29sX3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJldndfdTY0X3gpKSkKc3Z1aW50NjRfdCBzdnJldndfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJldndfczY0X3gpKSkKc3ZpbnQ2NF90IHN2cmV2d194KHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyZXZ3X3U2NF96KSkpCnN2dWludDY0X3Qgc3ZyZXZ3X3ooc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyZXZ3X3M2NF96KSkpCnN2aW50NjRfdCBzdnJldndfeihzdmJvb2xfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmludGFfZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZyaW50YV9tKHN2ZmxvYXQ2NF90LCBzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaW50YV9mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdnJpbnRhX20oc3ZmbG9hdDMyX3QsIHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJpbnRhX2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2cmludGFfbShzdmZsb2F0MTZfdCwgc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmludGFfZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZyaW50YV94KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJpbnRhX2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2cmludGFfeChzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaW50YV9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdnJpbnRhX3goc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmludGFfZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZyaW50YV96KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJpbnRhX2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2cmludGFfeihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaW50YV9mMTZfeikpKQpzdmZsb2F0MTZfdCBzdnJpbnRhX3ooc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmludGlfZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZyaW50aV9tKHN2ZmxvYXQ2NF90LCBzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaW50aV9mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdnJpbnRpX20oc3ZmbG9hdDMyX3QsIHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJpbnRpX2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2cmludGlfbShzdmZsb2F0MTZfdCwgc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmludGlfZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZyaW50aV94KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJpbnRpX2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2cmludGlfeChzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaW50aV9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdnJpbnRpX3goc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmludGlfZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZyaW50aV96KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJpbnRpX2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2cmludGlfeihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaW50aV9mMTZfeikpKQpzdmZsb2F0MTZfdCBzdnJpbnRpX3ooc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmludG1fZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZyaW50bV9tKHN2ZmxvYXQ2NF90LCBzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaW50bV9mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdnJpbnRtX20oc3ZmbG9hdDMyX3QsIHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJpbnRtX2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2cmludG1fbShzdmZsb2F0MTZfdCwgc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmludG1fZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZyaW50bV94KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJpbnRtX2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2cmludG1feChzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaW50bV9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdnJpbnRtX3goc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmludG1fZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZyaW50bV96KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJpbnRtX2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2cmludG1feihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaW50bV9mMTZfeikpKQpzdmZsb2F0MTZfdCBzdnJpbnRtX3ooc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmludG5fZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZyaW50bl9tKHN2ZmxvYXQ2NF90LCBzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaW50bl9mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdnJpbnRuX20oc3ZmbG9hdDMyX3QsIHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJpbnRuX2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2cmludG5fbShzdmZsb2F0MTZfdCwgc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmludG5fZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZyaW50bl94KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJpbnRuX2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2cmludG5feChzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaW50bl9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdnJpbnRuX3goc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmludG5fZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZyaW50bl96KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJpbnRuX2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2cmludG5feihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaW50bl9mMTZfeikpKQpzdmZsb2F0MTZfdCBzdnJpbnRuX3ooc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmludHBfZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZyaW50cF9tKHN2ZmxvYXQ2NF90LCBzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaW50cF9mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdnJpbnRwX20oc3ZmbG9hdDMyX3QsIHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJpbnRwX2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2cmludHBfbShzdmZsb2F0MTZfdCwgc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmludHBfZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZyaW50cF94KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJpbnRwX2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2cmludHBfeChzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaW50cF9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdnJpbnRwX3goc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmludHBfZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZyaW50cF96KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJpbnRwX2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2cmludHBfeihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaW50cF9mMTZfeikpKQpzdmZsb2F0MTZfdCBzdnJpbnRwX3ooc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmludHhfZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZyaW50eF9tKHN2ZmxvYXQ2NF90LCBzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaW50eF9mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdnJpbnR4X20oc3ZmbG9hdDMyX3QsIHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJpbnR4X2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2cmludHhfbShzdmZsb2F0MTZfdCwgc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmludHhfZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZyaW50eF94KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJpbnR4X2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2cmludHhfeChzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaW50eF9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdnJpbnR4X3goc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmludHhfZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZyaW50eF96KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJpbnR4X2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2cmludHhfeihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaW50eF9mMTZfeikpKQpzdmZsb2F0MTZfdCBzdnJpbnR4X3ooc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmludHpfZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZyaW50el9tKHN2ZmxvYXQ2NF90LCBzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaW50el9mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdnJpbnR6X20oc3ZmbG9hdDMyX3QsIHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJpbnR6X2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2cmludHpfbShzdmZsb2F0MTZfdCwgc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmludHpfZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZyaW50el94KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJpbnR6X2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2cmludHpfeChzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaW50el9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdnJpbnR6X3goc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmludHpfZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZyaW50el96KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJpbnR6X2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2cmludHpfeihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaW50el9mMTZfeikpKQpzdmZsb2F0MTZfdCBzdnJpbnR6X3ooc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNxcnRlX2Y2NCkpKQpzdmZsb2F0NjRfdCBzdnJzcXJ0ZShzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzcXJ0ZV9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3Zyc3FydGUoc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc3FydGVfZjE2KSkpCnN2ZmxvYXQxNl90IHN2cnNxcnRlKHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNxcnRzX2Y2NCkpKQpzdmZsb2F0NjRfdCBzdnJzcXJ0cyhzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc3FydHNfZjMyKSkpCnN2ZmxvYXQzMl90IHN2cnNxcnRzKHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzcXJ0c19mMTYpKSkKc3ZmbG9hdDE2X3Qgc3Zyc3FydHMoc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2NhbGVfbl9mNjRfbSkpKQpzdmZsb2F0NjRfdCBzdnNjYWxlX20oc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2NhbGVfbl9mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdnNjYWxlX20oc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2NhbGVfbl9mMTZfbSkpKQpzdmZsb2F0MTZfdCBzdnNjYWxlX20oc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2NhbGVfbl9mNjRfeCkpKQpzdmZsb2F0NjRfdCBzdnNjYWxlX3goc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2NhbGVfbl9mMzJfeCkpKQpzdmZsb2F0MzJfdCBzdnNjYWxlX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2NhbGVfbl9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdnNjYWxlX3goc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2NhbGVfbl9mNjRfeikpKQpzdmZsb2F0NjRfdCBzdnNjYWxlX3ooc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2NhbGVfbl9mMzJfeikpKQpzdmZsb2F0MzJfdCBzdnNjYWxlX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2NhbGVfbl9mMTZfeikpKQpzdmZsb2F0MTZfdCBzdnNjYWxlX3ooc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2NhbGVfZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZzY2FsZV9tKHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2NhbGVfZjMyX20pKSkKc3ZmbG9hdDMyX3Qgc3ZzY2FsZV9tKHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2NhbGVfZjE2X20pKSkKc3ZmbG9hdDE2X3Qgc3ZzY2FsZV9tKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2NhbGVfZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZzY2FsZV94KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2NhbGVfZjMyX3gpKSkKc3ZmbG9hdDMyX3Qgc3ZzY2FsZV94KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2NhbGVfZjE2X3gpKSkKc3ZmbG9hdDE2X3Qgc3ZzY2FsZV94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2NhbGVfZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZzY2FsZV96KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2NhbGVfZjMyX3opKSkKc3ZmbG9hdDMyX3Qgc3ZzY2FsZV96KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2NhbGVfZjE2X3opKSkKc3ZmbG9hdDE2X3Qgc3ZzY2FsZV96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2VsX2IpKSkKc3Zib29sX3Qgc3ZzZWwoc3Zib29sX3QsIHN2Ym9vbF90LCBzdmJvb2xfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNlbF91OCkpKQpzdnVpbnQ4X3Qgc3ZzZWwoc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2VsX3UzMikpKQpzdnVpbnQzMl90IHN2c2VsKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2VsX3U2NCkpKQpzdnVpbnQ2NF90IHN2c2VsKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2VsX3UxNikpKQpzdnVpbnQxNl90IHN2c2VsKHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2VsX3M4KSkpCnN2aW50OF90IHN2c2VsKHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzZWxfZjY0KSkpCnN2ZmxvYXQ2NF90IHN2c2VsKHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzZWxfZjMyKSkpCnN2ZmxvYXQzMl90IHN2c2VsKHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzZWxfZjE2KSkpCnN2ZmxvYXQxNl90IHN2c2VsKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzZWxfczMyKSkpCnN2aW50MzJfdCBzdnNlbChzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzZWxfczY0KSkpCnN2aW50NjRfdCBzdnNlbChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzZWxfczE2KSkpCnN2aW50MTZfdCBzdnNlbChzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzZXQyX3U4KSkpCnN2dWludDh4Ml90IHN2c2V0MihzdnVpbnQ4eDJfdCwgdWludDY0X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNldDJfdTMyKSkpCnN2dWludDMyeDJfdCBzdnNldDIoc3Z1aW50MzJ4Ml90LCB1aW50NjRfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNldDJfdTY0KSkpCnN2dWludDY0eDJfdCBzdnNldDIoc3Z1aW50NjR4Ml90LCB1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNldDJfdTE2KSkpCnN2dWludDE2eDJfdCBzdnNldDIoc3Z1aW50MTZ4Ml90LCB1aW50NjRfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNldDJfczgpKSkKc3ZpbnQ4eDJfdCBzdnNldDIoc3ZpbnQ4eDJfdCwgdWludDY0X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2V0Ml9mNjQpKSkKc3ZmbG9hdDY0eDJfdCBzdnNldDIoc3ZmbG9hdDY0eDJfdCwgdWludDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2V0Ml9mMzIpKSkKc3ZmbG9hdDMyeDJfdCBzdnNldDIoc3ZmbG9hdDMyeDJfdCwgdWludDY0X3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2V0Ml9mMTYpKSkKc3ZmbG9hdDE2eDJfdCBzdnNldDIoc3ZmbG9hdDE2eDJfdCwgdWludDY0X3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2V0Ml9zMzIpKSkKc3ZpbnQzMngyX3Qgc3ZzZXQyKHN2aW50MzJ4Ml90LCB1aW50NjRfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2V0Ml9zNjQpKSkKc3ZpbnQ2NHgyX3Qgc3ZzZXQyKHN2aW50NjR4Ml90LCB1aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2V0Ml9zMTYpKSkKc3ZpbnQxNngyX3Qgc3ZzZXQyKHN2aW50MTZ4Ml90LCB1aW50NjRfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2V0M191OCkpKQpzdnVpbnQ4eDNfdCBzdnNldDMoc3Z1aW50OHgzX3QsIHVpbnQ2NF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzZXQzX3UzMikpKQpzdnVpbnQzMngzX3Qgc3ZzZXQzKHN2dWludDMyeDNfdCwgdWludDY0X3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzZXQzX3U2NCkpKQpzdnVpbnQ2NHgzX3Qgc3ZzZXQzKHN2dWludDY0eDNfdCwgdWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzZXQzX3UxNikpKQpzdnVpbnQxNngzX3Qgc3ZzZXQzKHN2dWludDE2eDNfdCwgdWludDY0X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzZXQzX3M4KSkpCnN2aW50OHgzX3Qgc3ZzZXQzKHN2aW50OHgzX3QsIHVpbnQ2NF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNldDNfZjY0KSkpCnN2ZmxvYXQ2NHgzX3Qgc3ZzZXQzKHN2ZmxvYXQ2NHgzX3QsIHVpbnQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNldDNfZjMyKSkpCnN2ZmxvYXQzMngzX3Qgc3ZzZXQzKHN2ZmxvYXQzMngzX3QsIHVpbnQ2NF90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNldDNfZjE2KSkpCnN2ZmxvYXQxNngzX3Qgc3ZzZXQzKHN2ZmxvYXQxNngzX3QsIHVpbnQ2NF90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNldDNfczMyKSkpCnN2aW50MzJ4M190IHN2c2V0MyhzdmludDMyeDNfdCwgdWludDY0X3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNldDNfczY0KSkpCnN2aW50NjR4M190IHN2c2V0MyhzdmludDY0eDNfdCwgdWludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNldDNfczE2KSkpCnN2aW50MTZ4M190IHN2c2V0MyhzdmludDE2eDNfdCwgdWludDY0X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNldDRfdTgpKSkKc3Z1aW50OHg0X3Qgc3ZzZXQ0KHN2dWludDh4NF90LCB1aW50NjRfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2V0NF91MzIpKSkKc3Z1aW50MzJ4NF90IHN2c2V0NChzdnVpbnQzMng0X3QsIHVpbnQ2NF90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2V0NF91NjQpKSkKc3Z1aW50NjR4NF90IHN2c2V0NChzdnVpbnQ2NHg0X3QsIHVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2V0NF91MTYpKSkKc3Z1aW50MTZ4NF90IHN2c2V0NChzdnVpbnQxNng0X3QsIHVpbnQ2NF90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2V0NF9zOCkpKQpzdmludDh4NF90IHN2c2V0NChzdmludDh4NF90LCB1aW50NjRfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzZXQ0X2Y2NCkpKQpzdmZsb2F0NjR4NF90IHN2c2V0NChzdmZsb2F0NjR4NF90LCB1aW50NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzZXQ0X2YzMikpKQpzdmZsb2F0MzJ4NF90IHN2c2V0NChzdmZsb2F0MzJ4NF90LCB1aW50NjRfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzZXQ0X2YxNikpKQpzdmZsb2F0MTZ4NF90IHN2c2V0NChzdmZsb2F0MTZ4NF90LCB1aW50NjRfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzZXQ0X3MzMikpKQpzdmludDMyeDRfdCBzdnNldDQoc3ZpbnQzMng0X3QsIHVpbnQ2NF90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzZXQ0X3M2NCkpKQpzdmludDY0eDRfdCBzdnNldDQoc3ZpbnQ2NHg0X3QsIHVpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzZXQ0X3MxNikpKQpzdmludDE2eDRfdCBzdnNldDQoc3ZpbnQxNng0X3QsIHVpbnQ2NF90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzcGxpY2VfdTgpKSkKc3Z1aW50OF90IHN2c3BsaWNlKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNwbGljZV91MzIpKSkKc3Z1aW50MzJfdCBzdnNwbGljZShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNwbGljZV91NjQpKSkKc3Z1aW50NjRfdCBzdnNwbGljZShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNwbGljZV91MTYpKSkKc3Z1aW50MTZfdCBzdnNwbGljZShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNwbGljZV9zOCkpKQpzdmludDhfdCBzdnNwbGljZShzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3BsaWNlX2Y2NCkpKQpzdmZsb2F0NjRfdCBzdnNwbGljZShzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3BsaWNlX2YzMikpKQpzdmZsb2F0MzJfdCBzdnNwbGljZShzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3BsaWNlX2YxNikpKQpzdmZsb2F0MTZfdCBzdnNwbGljZShzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3BsaWNlX3MzMikpKQpzdmludDMyX3Qgc3ZzcGxpY2Uoc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3BsaWNlX3M2NCkpKQpzdmludDY0X3Qgc3ZzcGxpY2Uoc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3BsaWNlX3MxNikpKQpzdmludDE2X3Qgc3ZzcGxpY2Uoc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3FydF9mNjRfbSkpKQpzdmZsb2F0NjRfdCBzdnNxcnRfbShzdmZsb2F0NjRfdCwgc3Zib29sX3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3FydF9mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdnNxcnRfbShzdmZsb2F0MzJfdCwgc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3FydF9mMTZfbSkpKQpzdmZsb2F0MTZfdCBzdnNxcnRfbShzdmZsb2F0MTZfdCwgc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3FydF9mNjRfeCkpKQpzdmZsb2F0NjRfdCBzdnNxcnRfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzcXJ0X2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2c3FydF94KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNxcnRfZjE2X3gpKSkKc3ZmbG9hdDE2X3Qgc3ZzcXJ0X3goc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3FydF9mNjRfeikpKQpzdmZsb2F0NjRfdCBzdnNxcnRfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzcXJ0X2YzMl96KSkpCnN2ZmxvYXQzMl90IHN2c3FydF96KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNxcnRfZjE2X3opKSkKc3ZmbG9hdDE2X3Qgc3ZzcXJ0X3ooc3Zib29sX3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxX3U4KSkpCnZvaWQgc3ZzdDEoc3Zib29sX3QsIHVpbnQ4X3QgKiwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxX3UzMikpKQp2b2lkIHN2c3QxKHN2Ym9vbF90LCB1aW50MzJfdCAqLCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxX3U2NCkpKQp2b2lkIHN2c3QxKHN2Ym9vbF90LCB1aW50NjRfdCAqLCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxX3UxNikpKQp2b2lkIHN2c3QxKHN2Ym9vbF90LCB1aW50MTZfdCAqLCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxX3M4KSkpCnZvaWQgc3ZzdDEoc3Zib29sX3QsIGludDhfdCAqLCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV9mNjQpKSkKdm9pZCBzdnN0MShzdmJvb2xfdCwgZmxvYXQ2NF90ICosIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxX2YzMikpKQp2b2lkIHN2c3QxKHN2Ym9vbF90LCBmbG9hdDMyX3QgKiwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFfZjE2KSkpCnZvaWQgc3ZzdDEoc3Zib29sX3QsIGZsb2F0MTZfdCAqLCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV9zMzIpKSkKdm9pZCBzdnN0MShzdmJvb2xfdCwgaW50MzJfdCAqLCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFfczY0KSkpCnZvaWQgc3ZzdDEoc3Zib29sX3QsIGludDY0X3QgKiwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxX3MxNikpKQp2b2lkIHN2c3QxKHN2Ym9vbF90LCBpbnQxNl90ICosIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV9zY2F0dGVyX3UzMmJhc2VfaW5kZXhfdTMyKSkpCnZvaWQgc3ZzdDFfc2NhdHRlcl9pbmRleChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50NjRfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV9zY2F0dGVyX3U2NGJhc2VfaW5kZXhfdTY0KSkpCnZvaWQgc3ZzdDFfc2NhdHRlcl9pbmRleChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV9zY2F0dGVyX3U2NGJhc2VfaW5kZXhfZjY0KSkpCnZvaWQgc3ZzdDFfc2NhdHRlcl9pbmRleChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFfc2NhdHRlcl91MzJiYXNlX2luZGV4X2YzMikpKQp2b2lkIHN2c3QxX3NjYXR0ZXJfaW5kZXgoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxX3NjYXR0ZXJfdTMyYmFzZV9pbmRleF9zMzIpKSkKdm9pZCBzdnN0MV9zY2F0dGVyX2luZGV4KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFfc2NhdHRlcl91NjRiYXNlX2luZGV4X3M2NCkpKQp2b2lkIHN2c3QxX3NjYXR0ZXJfaW5kZXgoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV9zY2F0dGVyX3UzMmJhc2Vfb2Zmc2V0X3UzMikpKQp2b2lkIHN2c3QxX3NjYXR0ZXJfb2Zmc2V0KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxX3NjYXR0ZXJfdTY0YmFzZV9vZmZzZXRfdTY0KSkpCnZvaWQgc3ZzdDFfc2NhdHRlcl9vZmZzZXQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFfc2NhdHRlcl91NjRiYXNlX29mZnNldF9mNjQpKSkKdm9pZCBzdnN0MV9zY2F0dGVyX29mZnNldChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFfc2NhdHRlcl91MzJiYXNlX29mZnNldF9mMzIpKSkKdm9pZCBzdnN0MV9zY2F0dGVyX29mZnNldChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50NjRfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFfc2NhdHRlcl91MzJiYXNlX29mZnNldF9zMzIpKSkKdm9pZCBzdnN0MV9zY2F0dGVyX29mZnNldChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50NjRfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxX3NjYXR0ZXJfdTY0YmFzZV9vZmZzZXRfczY0KSkpCnZvaWQgc3ZzdDFfc2NhdHRlcl9vZmZzZXQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV9zY2F0dGVyX3UzMmJhc2VfdTMyKSkpCnZvaWQgc3ZzdDFfc2NhdHRlcihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV9zY2F0dGVyX3U2NGJhc2VfdTY0KSkpCnZvaWQgc3ZzdDFfc2NhdHRlcihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV9zY2F0dGVyX3U2NGJhc2VfZjY0KSkpCnZvaWQgc3ZzdDFfc2NhdHRlcihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFfc2NhdHRlcl91MzJiYXNlX2YzMikpKQp2b2lkIHN2c3QxX3NjYXR0ZXIoc3Zib29sX3QsIHN2dWludDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxX3NjYXR0ZXJfdTMyYmFzZV9zMzIpKSkKdm9pZCBzdnN0MV9zY2F0dGVyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFfc2NhdHRlcl91NjRiYXNlX3M2NCkpKQp2b2lkIHN2c3QxX3NjYXR0ZXIoc3Zib29sX3QsIHN2dWludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV9zY2F0dGVyX3MzMmluZGV4X3UzMikpKQp2b2lkIHN2c3QxX3NjYXR0ZXJfaW5kZXgoc3Zib29sX3QsIHVpbnQzMl90ICosIHN2aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV9zY2F0dGVyX3MzMmluZGV4X2YzMikpKQp2b2lkIHN2c3QxX3NjYXR0ZXJfaW5kZXgoc3Zib29sX3QsIGZsb2F0MzJfdCAqLCBzdmludDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxX3NjYXR0ZXJfczMyaW5kZXhfczMyKSkpCnZvaWQgc3ZzdDFfc2NhdHRlcl9pbmRleChzdmJvb2xfdCwgaW50MzJfdCAqLCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV9zY2F0dGVyX3UzMmluZGV4X3UzMikpKQp2b2lkIHN2c3QxX3NjYXR0ZXJfaW5kZXgoc3Zib29sX3QsIHVpbnQzMl90ICosIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFfc2NhdHRlcl91MzJpbmRleF9mMzIpKSkKdm9pZCBzdnN0MV9zY2F0dGVyX2luZGV4KHN2Ym9vbF90LCBmbG9hdDMyX3QgKiwgc3Z1aW50MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFfc2NhdHRlcl91MzJpbmRleF9zMzIpKSkKdm9pZCBzdnN0MV9zY2F0dGVyX2luZGV4KHN2Ym9vbF90LCBpbnQzMl90ICosIHN2dWludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV9zY2F0dGVyX3M2NGluZGV4X3U2NCkpKQp2b2lkIHN2c3QxX3NjYXR0ZXJfaW5kZXgoc3Zib29sX3QsIHVpbnQ2NF90ICosIHN2aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV9zY2F0dGVyX3M2NGluZGV4X2Y2NCkpKQp2b2lkIHN2c3QxX3NjYXR0ZXJfaW5kZXgoc3Zib29sX3QsIGZsb2F0NjRfdCAqLCBzdmludDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxX3NjYXR0ZXJfczY0aW5kZXhfczY0KSkpCnZvaWQgc3ZzdDFfc2NhdHRlcl9pbmRleChzdmJvb2xfdCwgaW50NjRfdCAqLCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV9zY2F0dGVyX3U2NGluZGV4X3U2NCkpKQp2b2lkIHN2c3QxX3NjYXR0ZXJfaW5kZXgoc3Zib29sX3QsIHVpbnQ2NF90ICosIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFfc2NhdHRlcl91NjRpbmRleF9mNjQpKSkKdm9pZCBzdnN0MV9zY2F0dGVyX2luZGV4KHN2Ym9vbF90LCBmbG9hdDY0X3QgKiwgc3Z1aW50NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFfc2NhdHRlcl91NjRpbmRleF9zNjQpKSkKdm9pZCBzdnN0MV9zY2F0dGVyX2luZGV4KHN2Ym9vbF90LCBpbnQ2NF90ICosIHN2dWludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV9zY2F0dGVyX3MzMm9mZnNldF91MzIpKSkKdm9pZCBzdnN0MV9zY2F0dGVyX29mZnNldChzdmJvb2xfdCwgdWludDMyX3QgKiwgc3ZpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxX3NjYXR0ZXJfczMyb2Zmc2V0X2YzMikpKQp2b2lkIHN2c3QxX3NjYXR0ZXJfb2Zmc2V0KHN2Ym9vbF90LCBmbG9hdDMyX3QgKiwgc3ZpbnQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV9zY2F0dGVyX3MzMm9mZnNldF9zMzIpKSkKdm9pZCBzdnN0MV9zY2F0dGVyX29mZnNldChzdmJvb2xfdCwgaW50MzJfdCAqLCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV9zY2F0dGVyX3UzMm9mZnNldF91MzIpKSkKdm9pZCBzdnN0MV9zY2F0dGVyX29mZnNldChzdmJvb2xfdCwgdWludDMyX3QgKiwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV9zY2F0dGVyX3UzMm9mZnNldF9mMzIpKSkKdm9pZCBzdnN0MV9zY2F0dGVyX29mZnNldChzdmJvb2xfdCwgZmxvYXQzMl90ICosIHN2dWludDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxX3NjYXR0ZXJfdTMyb2Zmc2V0X3MzMikpKQp2b2lkIHN2c3QxX3NjYXR0ZXJfb2Zmc2V0KHN2Ym9vbF90LCBpbnQzMl90ICosIHN2dWludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV9zY2F0dGVyX3M2NG9mZnNldF91NjQpKSkKdm9pZCBzdnN0MV9zY2F0dGVyX29mZnNldChzdmJvb2xfdCwgdWludDY0X3QgKiwgc3ZpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxX3NjYXR0ZXJfczY0b2Zmc2V0X2Y2NCkpKQp2b2lkIHN2c3QxX3NjYXR0ZXJfb2Zmc2V0KHN2Ym9vbF90LCBmbG9hdDY0X3QgKiwgc3ZpbnQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV9zY2F0dGVyX3M2NG9mZnNldF9zNjQpKSkKdm9pZCBzdnN0MV9zY2F0dGVyX29mZnNldChzdmJvb2xfdCwgaW50NjRfdCAqLCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV9zY2F0dGVyX3U2NG9mZnNldF91NjQpKSkKdm9pZCBzdnN0MV9zY2F0dGVyX29mZnNldChzdmJvb2xfdCwgdWludDY0X3QgKiwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV9zY2F0dGVyX3U2NG9mZnNldF9mNjQpKSkKdm9pZCBzdnN0MV9zY2F0dGVyX29mZnNldChzdmJvb2xfdCwgZmxvYXQ2NF90ICosIHN2dWludDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxX3NjYXR0ZXJfdTY0b2Zmc2V0X3M2NCkpKQp2b2lkIHN2c3QxX3NjYXR0ZXJfb2Zmc2V0KHN2Ym9vbF90LCBpbnQ2NF90ICosIHN2dWludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV92bnVtX3U4KSkpCnZvaWQgc3ZzdDFfdm51bShzdmJvb2xfdCwgdWludDhfdCAqLCBpbnQ2NF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFfdm51bV91MzIpKSkKdm9pZCBzdnN0MV92bnVtKHN2Ym9vbF90LCB1aW50MzJfdCAqLCBpbnQ2NF90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxX3ZudW1fdTY0KSkpCnZvaWQgc3ZzdDFfdm51bShzdmJvb2xfdCwgdWludDY0X3QgKiwgaW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV92bnVtX3UxNikpKQp2b2lkIHN2c3QxX3ZudW0oc3Zib29sX3QsIHVpbnQxNl90ICosIGludDY0X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFfdm51bV9zOCkpKQp2b2lkIHN2c3QxX3ZudW0oc3Zib29sX3QsIGludDhfdCAqLCBpbnQ2NF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV92bnVtX2Y2NCkpKQp2b2lkIHN2c3QxX3ZudW0oc3Zib29sX3QsIGZsb2F0NjRfdCAqLCBpbnQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV92bnVtX2YzMikpKQp2b2lkIHN2c3QxX3ZudW0oc3Zib29sX3QsIGZsb2F0MzJfdCAqLCBpbnQ2NF90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV92bnVtX2YxNikpKQp2b2lkIHN2c3QxX3ZudW0oc3Zib29sX3QsIGZsb2F0MTZfdCAqLCBpbnQ2NF90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV92bnVtX3MzMikpKQp2b2lkIHN2c3QxX3ZudW0oc3Zib29sX3QsIGludDMyX3QgKiwgaW50NjRfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxX3ZudW1fczY0KSkpCnZvaWQgc3ZzdDFfdm51bShzdmJvb2xfdCwgaW50NjRfdCAqLCBpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFfdm51bV9zMTYpKSkKdm9pZCBzdnN0MV92bnVtKHN2Ym9vbF90LCBpbnQxNl90ICosIGludDY0X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWJfczMyKSkpCnZvaWQgc3ZzdDFiKHN2Ym9vbF90LCBpbnQ4X3QgKiwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxYl9zNjQpKSkKdm9pZCBzdnN0MWIoc3Zib29sX3QsIGludDhfdCAqLCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFiX3MxNikpKQp2b2lkIHN2c3QxYihzdmJvb2xfdCwgaW50OF90ICosIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWJfdTMyKSkpCnZvaWQgc3ZzdDFiKHN2Ym9vbF90LCB1aW50OF90ICosIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFiX3U2NCkpKQp2b2lkIHN2c3QxYihzdmJvb2xfdCwgdWludDhfdCAqLCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxYl91MTYpKSkKdm9pZCBzdnN0MWIoc3Zib29sX3QsIHVpbnQ4X3QgKiwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWJfc2NhdHRlcl91MzJiYXNlX29mZnNldF91MzIpKSkKdm9pZCBzdnN0MWJfc2NhdHRlcl9vZmZzZXQoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFiX3NjYXR0ZXJfdTY0YmFzZV9vZmZzZXRfdTY0KSkpCnZvaWQgc3ZzdDFiX3NjYXR0ZXJfb2Zmc2V0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxYl9zY2F0dGVyX3UzMmJhc2Vfb2Zmc2V0X3MzMikpKQp2b2lkIHN2c3QxYl9zY2F0dGVyX29mZnNldChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50NjRfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxYl9zY2F0dGVyX3U2NGJhc2Vfb2Zmc2V0X3M2NCkpKQp2b2lkIHN2c3QxYl9zY2F0dGVyX29mZnNldChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxYl9zY2F0dGVyX3UzMmJhc2VfdTMyKSkpCnZvaWQgc3ZzdDFiX3NjYXR0ZXIoc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFiX3NjYXR0ZXJfdTY0YmFzZV91NjQpKSkKdm9pZCBzdnN0MWJfc2NhdHRlcihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWJfc2NhdHRlcl91MzJiYXNlX3MzMikpKQp2b2lkIHN2c3QxYl9zY2F0dGVyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFiX3NjYXR0ZXJfdTY0YmFzZV9zNjQpKSkKdm9pZCBzdnN0MWJfc2NhdHRlcihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxYl9zY2F0dGVyX3MzMm9mZnNldF9zMzIpKSkKdm9pZCBzdnN0MWJfc2NhdHRlcl9vZmZzZXQoc3Zib29sX3QsIGludDhfdCAqLCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWJfc2NhdHRlcl9zMzJvZmZzZXRfdTMyKSkpCnZvaWQgc3ZzdDFiX3NjYXR0ZXJfb2Zmc2V0KHN2Ym9vbF90LCB1aW50OF90ICosIHN2aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWJfc2NhdHRlcl91MzJvZmZzZXRfczMyKSkpCnZvaWQgc3ZzdDFiX3NjYXR0ZXJfb2Zmc2V0KHN2Ym9vbF90LCBpbnQ4X3QgKiwgc3Z1aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxYl9zY2F0dGVyX3UzMm9mZnNldF91MzIpKSkKdm9pZCBzdnN0MWJfc2NhdHRlcl9vZmZzZXQoc3Zib29sX3QsIHVpbnQ4X3QgKiwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWJfc2NhdHRlcl9zNjRvZmZzZXRfczY0KSkpCnZvaWQgc3ZzdDFiX3NjYXR0ZXJfb2Zmc2V0KHN2Ym9vbF90LCBpbnQ4X3QgKiwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFiX3NjYXR0ZXJfczY0b2Zmc2V0X3U2NCkpKQp2b2lkIHN2c3QxYl9zY2F0dGVyX29mZnNldChzdmJvb2xfdCwgdWludDhfdCAqLCBzdmludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFiX3NjYXR0ZXJfdTY0b2Zmc2V0X3M2NCkpKQp2b2lkIHN2c3QxYl9zY2F0dGVyX29mZnNldChzdmJvb2xfdCwgaW50OF90ICosIHN2dWludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWJfc2NhdHRlcl91NjRvZmZzZXRfdTY0KSkpCnZvaWQgc3ZzdDFiX3NjYXR0ZXJfb2Zmc2V0KHN2Ym9vbF90LCB1aW50OF90ICosIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFiX3ZudW1fczMyKSkpCnZvaWQgc3ZzdDFiX3ZudW0oc3Zib29sX3QsIGludDhfdCAqLCBpbnQ2NF90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFiX3ZudW1fczY0KSkpCnZvaWQgc3ZzdDFiX3ZudW0oc3Zib29sX3QsIGludDhfdCAqLCBpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFiX3ZudW1fczE2KSkpCnZvaWQgc3ZzdDFiX3ZudW0oc3Zib29sX3QsIGludDhfdCAqLCBpbnQ2NF90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFiX3ZudW1fdTMyKSkpCnZvaWQgc3ZzdDFiX3ZudW0oc3Zib29sX3QsIHVpbnQ4X3QgKiwgaW50NjRfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWJfdm51bV91NjQpKSkKdm9pZCBzdnN0MWJfdm51bShzdmJvb2xfdCwgdWludDhfdCAqLCBpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxYl92bnVtX3UxNikpKQp2b2lkIHN2c3QxYl92bnVtKHN2Ym9vbF90LCB1aW50OF90ICosIGludDY0X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFoX3MzMikpKQp2b2lkIHN2c3QxaChzdmJvb2xfdCwgaW50MTZfdCAqLCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFoX3M2NCkpKQp2b2lkIHN2c3QxaChzdmJvb2xfdCwgaW50MTZfdCAqLCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFoX3UzMikpKQp2b2lkIHN2c3QxaChzdmJvb2xfdCwgdWludDE2X3QgKiwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWhfdTY0KSkpCnZvaWQgc3ZzdDFoKHN2Ym9vbF90LCB1aW50MTZfdCAqLCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxaF9zY2F0dGVyX3UzMmJhc2VfaW5kZXhfdTMyKSkpCnZvaWQgc3ZzdDFoX3NjYXR0ZXJfaW5kZXgoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFoX3NjYXR0ZXJfdTY0YmFzZV9pbmRleF91NjQpKSkKdm9pZCBzdnN0MWhfc2NhdHRlcl9pbmRleChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWhfc2NhdHRlcl91MzJiYXNlX2luZGV4X3MzMikpKQp2b2lkIHN2c3QxaF9zY2F0dGVyX2luZGV4KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFoX3NjYXR0ZXJfdTY0YmFzZV9pbmRleF9zNjQpKSkKdm9pZCBzdnN0MWhfc2NhdHRlcl9pbmRleChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxaF9zY2F0dGVyX3UzMmJhc2Vfb2Zmc2V0X3UzMikpKQp2b2lkIHN2c3QxaF9zY2F0dGVyX29mZnNldChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50NjRfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWhfc2NhdHRlcl91NjRiYXNlX29mZnNldF91NjQpKSkKdm9pZCBzdnN0MWhfc2NhdHRlcl9vZmZzZXQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFoX3NjYXR0ZXJfdTMyYmFzZV9vZmZzZXRfczMyKSkpCnZvaWQgc3ZzdDFoX3NjYXR0ZXJfb2Zmc2V0KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFoX3NjYXR0ZXJfdTY0YmFzZV9vZmZzZXRfczY0KSkpCnZvaWQgc3ZzdDFoX3NjYXR0ZXJfb2Zmc2V0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFoX3NjYXR0ZXJfdTMyYmFzZV91MzIpKSkKdm9pZCBzdnN0MWhfc2NhdHRlcihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWhfc2NhdHRlcl91NjRiYXNlX3U2NCkpKQp2b2lkIHN2c3QxaF9zY2F0dGVyKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxaF9zY2F0dGVyX3UzMmJhc2VfczMyKSkpCnZvaWQgc3ZzdDFoX3NjYXR0ZXIoc3Zib29sX3QsIHN2dWludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWhfc2NhdHRlcl91NjRiYXNlX3M2NCkpKQp2b2lkIHN2c3QxaF9zY2F0dGVyKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFoX3NjYXR0ZXJfczMyaW5kZXhfczMyKSkpCnZvaWQgc3ZzdDFoX3NjYXR0ZXJfaW5kZXgoc3Zib29sX3QsIGludDE2X3QgKiwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFoX3NjYXR0ZXJfczMyaW5kZXhfdTMyKSkpCnZvaWQgc3ZzdDFoX3NjYXR0ZXJfaW5kZXgoc3Zib29sX3QsIHVpbnQxNl90ICosIHN2aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWhfc2NhdHRlcl91MzJpbmRleF9zMzIpKSkKdm9pZCBzdnN0MWhfc2NhdHRlcl9pbmRleChzdmJvb2xfdCwgaW50MTZfdCAqLCBzdnVpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFoX3NjYXR0ZXJfdTMyaW5kZXhfdTMyKSkpCnZvaWQgc3ZzdDFoX3NjYXR0ZXJfaW5kZXgoc3Zib29sX3QsIHVpbnQxNl90ICosIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFoX3NjYXR0ZXJfczY0aW5kZXhfczY0KSkpCnZvaWQgc3ZzdDFoX3NjYXR0ZXJfaW5kZXgoc3Zib29sX3QsIGludDE2X3QgKiwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFoX3NjYXR0ZXJfczY0aW5kZXhfdTY0KSkpCnZvaWQgc3ZzdDFoX3NjYXR0ZXJfaW5kZXgoc3Zib29sX3QsIHVpbnQxNl90ICosIHN2aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWhfc2NhdHRlcl91NjRpbmRleF9zNjQpKSkKdm9pZCBzdnN0MWhfc2NhdHRlcl9pbmRleChzdmJvb2xfdCwgaW50MTZfdCAqLCBzdnVpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFoX3NjYXR0ZXJfdTY0aW5kZXhfdTY0KSkpCnZvaWQgc3ZzdDFoX3NjYXR0ZXJfaW5kZXgoc3Zib29sX3QsIHVpbnQxNl90ICosIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFoX3NjYXR0ZXJfczMyb2Zmc2V0X3MzMikpKQp2b2lkIHN2c3QxaF9zY2F0dGVyX29mZnNldChzdmJvb2xfdCwgaW50MTZfdCAqLCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWhfc2NhdHRlcl9zMzJvZmZzZXRfdTMyKSkpCnZvaWQgc3ZzdDFoX3NjYXR0ZXJfb2Zmc2V0KHN2Ym9vbF90LCB1aW50MTZfdCAqLCBzdmludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFoX3NjYXR0ZXJfdTMyb2Zmc2V0X3MzMikpKQp2b2lkIHN2c3QxaF9zY2F0dGVyX29mZnNldChzdmJvb2xfdCwgaW50MTZfdCAqLCBzdnVpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFoX3NjYXR0ZXJfdTMyb2Zmc2V0X3UzMikpKQp2b2lkIHN2c3QxaF9zY2F0dGVyX29mZnNldChzdmJvb2xfdCwgdWludDE2X3QgKiwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWhfc2NhdHRlcl9zNjRvZmZzZXRfczY0KSkpCnZvaWQgc3ZzdDFoX3NjYXR0ZXJfb2Zmc2V0KHN2Ym9vbF90LCBpbnQxNl90ICosIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxaF9zY2F0dGVyX3M2NG9mZnNldF91NjQpKSkKdm9pZCBzdnN0MWhfc2NhdHRlcl9vZmZzZXQoc3Zib29sX3QsIHVpbnQxNl90ICosIHN2aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWhfc2NhdHRlcl91NjRvZmZzZXRfczY0KSkpCnZvaWQgc3ZzdDFoX3NjYXR0ZXJfb2Zmc2V0KHN2Ym9vbF90LCBpbnQxNl90ICosIHN2dWludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWhfc2NhdHRlcl91NjRvZmZzZXRfdTY0KSkpCnZvaWQgc3ZzdDFoX3NjYXR0ZXJfb2Zmc2V0KHN2Ym9vbF90LCB1aW50MTZfdCAqLCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxaF92bnVtX3MzMikpKQp2b2lkIHN2c3QxaF92bnVtKHN2Ym9vbF90LCBpbnQxNl90ICosIGludDY0X3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MWhfdm51bV9zNjQpKSkKdm9pZCBzdnN0MWhfdm51bShzdmJvb2xfdCwgaW50MTZfdCAqLCBpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFoX3ZudW1fdTMyKSkpCnZvaWQgc3ZzdDFoX3ZudW0oc3Zib29sX3QsIHVpbnQxNl90ICosIGludDY0X3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFoX3ZudW1fdTY0KSkpCnZvaWQgc3ZzdDFoX3ZudW0oc3Zib29sX3QsIHVpbnQxNl90ICosIGludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDF3X3M2NCkpKQp2b2lkIHN2c3QxdyhzdmJvb2xfdCwgaW50MzJfdCAqLCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDF3X3U2NCkpKQp2b2lkIHN2c3QxdyhzdmJvb2xfdCwgdWludDMyX3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MXdfc2NhdHRlcl91NjRiYXNlX2luZGV4X3U2NCkpKQp2b2lkIHN2c3Qxd19zY2F0dGVyX2luZGV4KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Qxd19zY2F0dGVyX3U2NGJhc2VfaW5kZXhfczY0KSkpCnZvaWQgc3ZzdDF3X3NjYXR0ZXJfaW5kZXgoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MXdfc2NhdHRlcl91NjRiYXNlX29mZnNldF91NjQpKSkKdm9pZCBzdnN0MXdfc2NhdHRlcl9vZmZzZXQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDF3X3NjYXR0ZXJfdTY0YmFzZV9vZmZzZXRfczY0KSkpCnZvaWQgc3ZzdDF3X3NjYXR0ZXJfb2Zmc2V0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDF3X3NjYXR0ZXJfdTY0YmFzZV91NjQpKSkKdm9pZCBzdnN0MXdfc2NhdHRlcihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MXdfc2NhdHRlcl91NjRiYXNlX3M2NCkpKQp2b2lkIHN2c3Qxd19zY2F0dGVyKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDF3X3NjYXR0ZXJfczY0aW5kZXhfczY0KSkpCnZvaWQgc3ZzdDF3X3NjYXR0ZXJfaW5kZXgoc3Zib29sX3QsIGludDMyX3QgKiwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDF3X3NjYXR0ZXJfczY0aW5kZXhfdTY0KSkpCnZvaWQgc3ZzdDF3X3NjYXR0ZXJfaW5kZXgoc3Zib29sX3QsIHVpbnQzMl90ICosIHN2aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MXdfc2NhdHRlcl91NjRpbmRleF9zNjQpKSkKdm9pZCBzdnN0MXdfc2NhdHRlcl9pbmRleChzdmJvb2xfdCwgaW50MzJfdCAqLCBzdnVpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDF3X3NjYXR0ZXJfdTY0aW5kZXhfdTY0KSkpCnZvaWQgc3ZzdDF3X3NjYXR0ZXJfaW5kZXgoc3Zib29sX3QsIHVpbnQzMl90ICosIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDF3X3NjYXR0ZXJfczY0b2Zmc2V0X3M2NCkpKQp2b2lkIHN2c3Qxd19zY2F0dGVyX29mZnNldChzdmJvb2xfdCwgaW50MzJfdCAqLCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MXdfc2NhdHRlcl9zNjRvZmZzZXRfdTY0KSkpCnZvaWQgc3ZzdDF3X3NjYXR0ZXJfb2Zmc2V0KHN2Ym9vbF90LCB1aW50MzJfdCAqLCBzdmludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDF3X3NjYXR0ZXJfdTY0b2Zmc2V0X3M2NCkpKQp2b2lkIHN2c3Qxd19zY2F0dGVyX29mZnNldChzdmJvb2xfdCwgaW50MzJfdCAqLCBzdnVpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDF3X3NjYXR0ZXJfdTY0b2Zmc2V0X3U2NCkpKQp2b2lkIHN2c3Qxd19zY2F0dGVyX29mZnNldChzdmJvb2xfdCwgdWludDMyX3QgKiwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MXdfdm51bV9zNjQpKSkKdm9pZCBzdnN0MXdfdm51bShzdmJvb2xfdCwgaW50MzJfdCAqLCBpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDF3X3ZudW1fdTY0KSkpCnZvaWQgc3ZzdDF3X3ZudW0oc3Zib29sX3QsIHVpbnQzMl90ICosIGludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDJfdTgpKSkKdm9pZCBzdnN0MihzdmJvb2xfdCwgdWludDhfdCAqLCBzdnVpbnQ4eDJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0Ml91MzIpKSkKdm9pZCBzdnN0MihzdmJvb2xfdCwgdWludDMyX3QgKiwgc3Z1aW50MzJ4Ml90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QyX3U2NCkpKQp2b2lkIHN2c3QyKHN2Ym9vbF90LCB1aW50NjRfdCAqLCBzdnVpbnQ2NHgyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDJfdTE2KSkpCnZvaWQgc3ZzdDIoc3Zib29sX3QsIHVpbnQxNl90ICosIHN2dWludDE2eDJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0Ml9zOCkpKQp2b2lkIHN2c3QyKHN2Ym9vbF90LCBpbnQ4X3QgKiwgc3ZpbnQ4eDJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0Ml9mNjQpKSkKdm9pZCBzdnN0MihzdmJvb2xfdCwgZmxvYXQ2NF90ICosIHN2ZmxvYXQ2NHgyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDJfZjMyKSkpCnZvaWQgc3ZzdDIoc3Zib29sX3QsIGZsb2F0MzJfdCAqLCBzdmZsb2F0MzJ4Ml90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QyX2YxNikpKQp2b2lkIHN2c3QyKHN2Ym9vbF90LCBmbG9hdDE2X3QgKiwgc3ZmbG9hdDE2eDJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0Ml9zMzIpKSkKdm9pZCBzdnN0MihzdmJvb2xfdCwgaW50MzJfdCAqLCBzdmludDMyeDJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0Ml9zNjQpKSkKdm9pZCBzdnN0MihzdmJvb2xfdCwgaW50NjRfdCAqLCBzdmludDY0eDJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0Ml9zMTYpKSkKdm9pZCBzdnN0MihzdmJvb2xfdCwgaW50MTZfdCAqLCBzdmludDE2eDJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0Ml92bnVtX3U4KSkpCnZvaWQgc3ZzdDJfdm51bShzdmJvb2xfdCwgdWludDhfdCAqLCBpbnQ2NF90LCBzdnVpbnQ4eDJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0Ml92bnVtX3UzMikpKQp2b2lkIHN2c3QyX3ZudW0oc3Zib29sX3QsIHVpbnQzMl90ICosIGludDY0X3QsIHN2dWludDMyeDJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0Ml92bnVtX3U2NCkpKQp2b2lkIHN2c3QyX3ZudW0oc3Zib29sX3QsIHVpbnQ2NF90ICosIGludDY0X3QsIHN2dWludDY0eDJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0Ml92bnVtX3UxNikpKQp2b2lkIHN2c3QyX3ZudW0oc3Zib29sX3QsIHVpbnQxNl90ICosIGludDY0X3QsIHN2dWludDE2eDJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0Ml92bnVtX3M4KSkpCnZvaWQgc3ZzdDJfdm51bShzdmJvb2xfdCwgaW50OF90ICosIGludDY0X3QsIHN2aW50OHgyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDJfdm51bV9mNjQpKSkKdm9pZCBzdnN0Ml92bnVtKHN2Ym9vbF90LCBmbG9hdDY0X3QgKiwgaW50NjRfdCwgc3ZmbG9hdDY0eDJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0Ml92bnVtX2YzMikpKQp2b2lkIHN2c3QyX3ZudW0oc3Zib29sX3QsIGZsb2F0MzJfdCAqLCBpbnQ2NF90LCBzdmZsb2F0MzJ4Ml90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QyX3ZudW1fZjE2KSkpCnZvaWQgc3ZzdDJfdm51bShzdmJvb2xfdCwgZmxvYXQxNl90ICosIGludDY0X3QsIHN2ZmxvYXQxNngyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDJfdm51bV9zMzIpKSkKdm9pZCBzdnN0Ml92bnVtKHN2Ym9vbF90LCBpbnQzMl90ICosIGludDY0X3QsIHN2aW50MzJ4Ml90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QyX3ZudW1fczY0KSkpCnZvaWQgc3ZzdDJfdm51bShzdmJvb2xfdCwgaW50NjRfdCAqLCBpbnQ2NF90LCBzdmludDY0eDJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0Ml92bnVtX3MxNikpKQp2b2lkIHN2c3QyX3ZudW0oc3Zib29sX3QsIGludDE2X3QgKiwgaW50NjRfdCwgc3ZpbnQxNngyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDNfdTgpKSkKdm9pZCBzdnN0MyhzdmJvb2xfdCwgdWludDhfdCAqLCBzdnVpbnQ4eDNfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0M191MzIpKSkKdm9pZCBzdnN0MyhzdmJvb2xfdCwgdWludDMyX3QgKiwgc3Z1aW50MzJ4M190KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QzX3U2NCkpKQp2b2lkIHN2c3QzKHN2Ym9vbF90LCB1aW50NjRfdCAqLCBzdnVpbnQ2NHgzX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDNfdTE2KSkpCnZvaWQgc3ZzdDMoc3Zib29sX3QsIHVpbnQxNl90ICosIHN2dWludDE2eDNfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0M19zOCkpKQp2b2lkIHN2c3QzKHN2Ym9vbF90LCBpbnQ4X3QgKiwgc3ZpbnQ4eDNfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0M19mNjQpKSkKdm9pZCBzdnN0MyhzdmJvb2xfdCwgZmxvYXQ2NF90ICosIHN2ZmxvYXQ2NHgzX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDNfZjMyKSkpCnZvaWQgc3ZzdDMoc3Zib29sX3QsIGZsb2F0MzJfdCAqLCBzdmZsb2F0MzJ4M190KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QzX2YxNikpKQp2b2lkIHN2c3QzKHN2Ym9vbF90LCBmbG9hdDE2X3QgKiwgc3ZmbG9hdDE2eDNfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0M19zMzIpKSkKdm9pZCBzdnN0MyhzdmJvb2xfdCwgaW50MzJfdCAqLCBzdmludDMyeDNfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0M19zNjQpKSkKdm9pZCBzdnN0MyhzdmJvb2xfdCwgaW50NjRfdCAqLCBzdmludDY0eDNfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0M19zMTYpKSkKdm9pZCBzdnN0MyhzdmJvb2xfdCwgaW50MTZfdCAqLCBzdmludDE2eDNfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0M192bnVtX3U4KSkpCnZvaWQgc3ZzdDNfdm51bShzdmJvb2xfdCwgdWludDhfdCAqLCBpbnQ2NF90LCBzdnVpbnQ4eDNfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0M192bnVtX3UzMikpKQp2b2lkIHN2c3QzX3ZudW0oc3Zib29sX3QsIHVpbnQzMl90ICosIGludDY0X3QsIHN2dWludDMyeDNfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0M192bnVtX3U2NCkpKQp2b2lkIHN2c3QzX3ZudW0oc3Zib29sX3QsIHVpbnQ2NF90ICosIGludDY0X3QsIHN2dWludDY0eDNfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0M192bnVtX3UxNikpKQp2b2lkIHN2c3QzX3ZudW0oc3Zib29sX3QsIHVpbnQxNl90ICosIGludDY0X3QsIHN2dWludDE2eDNfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0M192bnVtX3M4KSkpCnZvaWQgc3ZzdDNfdm51bShzdmJvb2xfdCwgaW50OF90ICosIGludDY0X3QsIHN2aW50OHgzX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDNfdm51bV9mNjQpKSkKdm9pZCBzdnN0M192bnVtKHN2Ym9vbF90LCBmbG9hdDY0X3QgKiwgaW50NjRfdCwgc3ZmbG9hdDY0eDNfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0M192bnVtX2YzMikpKQp2b2lkIHN2c3QzX3ZudW0oc3Zib29sX3QsIGZsb2F0MzJfdCAqLCBpbnQ2NF90LCBzdmZsb2F0MzJ4M190KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QzX3ZudW1fZjE2KSkpCnZvaWQgc3ZzdDNfdm51bShzdmJvb2xfdCwgZmxvYXQxNl90ICosIGludDY0X3QsIHN2ZmxvYXQxNngzX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDNfdm51bV9zMzIpKSkKdm9pZCBzdnN0M192bnVtKHN2Ym9vbF90LCBpbnQzMl90ICosIGludDY0X3QsIHN2aW50MzJ4M190KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QzX3ZudW1fczY0KSkpCnZvaWQgc3ZzdDNfdm51bShzdmJvb2xfdCwgaW50NjRfdCAqLCBpbnQ2NF90LCBzdmludDY0eDNfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0M192bnVtX3MxNikpKQp2b2lkIHN2c3QzX3ZudW0oc3Zib29sX3QsIGludDE2X3QgKiwgaW50NjRfdCwgc3ZpbnQxNngzX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDRfdTgpKSkKdm9pZCBzdnN0NChzdmJvb2xfdCwgdWludDhfdCAqLCBzdnVpbnQ4eDRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0NF91MzIpKSkKdm9pZCBzdnN0NChzdmJvb2xfdCwgdWludDMyX3QgKiwgc3Z1aW50MzJ4NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Q0X3U2NCkpKQp2b2lkIHN2c3Q0KHN2Ym9vbF90LCB1aW50NjRfdCAqLCBzdnVpbnQ2NHg0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDRfdTE2KSkpCnZvaWQgc3ZzdDQoc3Zib29sX3QsIHVpbnQxNl90ICosIHN2dWludDE2eDRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0NF9zOCkpKQp2b2lkIHN2c3Q0KHN2Ym9vbF90LCBpbnQ4X3QgKiwgc3ZpbnQ4eDRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0NF9mNjQpKSkKdm9pZCBzdnN0NChzdmJvb2xfdCwgZmxvYXQ2NF90ICosIHN2ZmxvYXQ2NHg0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDRfZjMyKSkpCnZvaWQgc3ZzdDQoc3Zib29sX3QsIGZsb2F0MzJfdCAqLCBzdmZsb2F0MzJ4NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Q0X2YxNikpKQp2b2lkIHN2c3Q0KHN2Ym9vbF90LCBmbG9hdDE2X3QgKiwgc3ZmbG9hdDE2eDRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0NF9zMzIpKSkKdm9pZCBzdnN0NChzdmJvb2xfdCwgaW50MzJfdCAqLCBzdmludDMyeDRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0NF9zNjQpKSkKdm9pZCBzdnN0NChzdmJvb2xfdCwgaW50NjRfdCAqLCBzdmludDY0eDRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0NF9zMTYpKSkKdm9pZCBzdnN0NChzdmJvb2xfdCwgaW50MTZfdCAqLCBzdmludDE2eDRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0NF92bnVtX3U4KSkpCnZvaWQgc3ZzdDRfdm51bShzdmJvb2xfdCwgdWludDhfdCAqLCBpbnQ2NF90LCBzdnVpbnQ4eDRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0NF92bnVtX3UzMikpKQp2b2lkIHN2c3Q0X3ZudW0oc3Zib29sX3QsIHVpbnQzMl90ICosIGludDY0X3QsIHN2dWludDMyeDRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0NF92bnVtX3U2NCkpKQp2b2lkIHN2c3Q0X3ZudW0oc3Zib29sX3QsIHVpbnQ2NF90ICosIGludDY0X3QsIHN2dWludDY0eDRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0NF92bnVtX3UxNikpKQp2b2lkIHN2c3Q0X3ZudW0oc3Zib29sX3QsIHVpbnQxNl90ICosIGludDY0X3QsIHN2dWludDE2eDRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0NF92bnVtX3M4KSkpCnZvaWQgc3ZzdDRfdm51bShzdmJvb2xfdCwgaW50OF90ICosIGludDY0X3QsIHN2aW50OHg0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDRfdm51bV9mNjQpKSkKdm9pZCBzdnN0NF92bnVtKHN2Ym9vbF90LCBmbG9hdDY0X3QgKiwgaW50NjRfdCwgc3ZmbG9hdDY0eDRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0NF92bnVtX2YzMikpKQp2b2lkIHN2c3Q0X3ZudW0oc3Zib29sX3QsIGZsb2F0MzJfdCAqLCBpbnQ2NF90LCBzdmZsb2F0MzJ4NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Q0X3ZudW1fZjE2KSkpCnZvaWQgc3ZzdDRfdm51bShzdmJvb2xfdCwgZmxvYXQxNl90ICosIGludDY0X3QsIHN2ZmxvYXQxNng0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDRfdm51bV9zMzIpKSkKdm9pZCBzdnN0NF92bnVtKHN2Ym9vbF90LCBpbnQzMl90ICosIGludDY0X3QsIHN2aW50MzJ4NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Q0X3ZudW1fczY0KSkpCnZvaWQgc3ZzdDRfdm51bShzdmJvb2xfdCwgaW50NjRfdCAqLCBpbnQ2NF90LCBzdmludDY0eDRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0NF92bnVtX3MxNikpKQp2b2lkIHN2c3Q0X3ZudW0oc3Zib29sX3QsIGludDE2X3QgKiwgaW50NjRfdCwgc3ZpbnQxNng0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MV91OCkpKQp2b2lkIHN2c3RudDEoc3Zib29sX3QsIHVpbnQ4X3QgKiwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFfdTMyKSkpCnZvaWQgc3ZzdG50MShzdmJvb2xfdCwgdWludDMyX3QgKiwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxX3U2NCkpKQp2b2lkIHN2c3RudDEoc3Zib29sX3QsIHVpbnQ2NF90ICosIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MV91MTYpKSkKdm9pZCBzdnN0bnQxKHN2Ym9vbF90LCB1aW50MTZfdCAqLCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFfczgpKSkKdm9pZCBzdnN0bnQxKHN2Ym9vbF90LCBpbnQ4X3QgKiwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MV9mNjQpKSkKdm9pZCBzdnN0bnQxKHN2Ym9vbF90LCBmbG9hdDY0X3QgKiwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MV9mMzIpKSkKdm9pZCBzdnN0bnQxKHN2Ym9vbF90LCBmbG9hdDMyX3QgKiwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MV9mMTYpKSkKdm9pZCBzdnN0bnQxKHN2Ym9vbF90LCBmbG9hdDE2X3QgKiwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MV9zMzIpKSkKdm9pZCBzdnN0bnQxKHN2Ym9vbF90LCBpbnQzMl90ICosIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxX3M2NCkpKQp2b2lkIHN2c3RudDEoc3Zib29sX3QsIGludDY0X3QgKiwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFfczE2KSkpCnZvaWQgc3ZzdG50MShzdmJvb2xfdCwgaW50MTZfdCAqLCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MV92bnVtX3U4KSkpCnZvaWQgc3ZzdG50MV92bnVtKHN2Ym9vbF90LCB1aW50OF90ICosIGludDY0X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxX3ZudW1fdTMyKSkpCnZvaWQgc3ZzdG50MV92bnVtKHN2Ym9vbF90LCB1aW50MzJfdCAqLCBpbnQ2NF90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFfdm51bV91NjQpKSkKdm9pZCBzdnN0bnQxX3ZudW0oc3Zib29sX3QsIHVpbnQ2NF90ICosIGludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MV92bnVtX3UxNikpKQp2b2lkIHN2c3RudDFfdm51bShzdmJvb2xfdCwgdWludDE2X3QgKiwgaW50NjRfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxX3ZudW1fczgpKSkKdm9pZCBzdnN0bnQxX3ZudW0oc3Zib29sX3QsIGludDhfdCAqLCBpbnQ2NF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxX3ZudW1fZjY0KSkpCnZvaWQgc3ZzdG50MV92bnVtKHN2Ym9vbF90LCBmbG9hdDY0X3QgKiwgaW50NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MV92bnVtX2YzMikpKQp2b2lkIHN2c3RudDFfdm51bShzdmJvb2xfdCwgZmxvYXQzMl90ICosIGludDY0X3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFfdm51bV9mMTYpKSkKdm9pZCBzdnN0bnQxX3ZudW0oc3Zib29sX3QsIGZsb2F0MTZfdCAqLCBpbnQ2NF90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxX3ZudW1fczMyKSkpCnZvaWQgc3ZzdG50MV92bnVtKHN2Ym9vbF90LCBpbnQzMl90ICosIGludDY0X3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxX3ZudW1fczY0KSkpCnZvaWQgc3ZzdG50MV92bnVtKHN2Ym9vbF90LCBpbnQ2NF90ICosIGludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxX3ZudW1fczE2KSkpCnZvaWQgc3ZzdG50MV92bnVtKHN2Ym9vbF90LCBpbnQxNl90ICosIGludDY0X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl9uX2Y2NF9tKSkpCnN2ZmxvYXQ2NF90IHN2c3ViX20oc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJfbl9mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdnN1Yl9tKHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViX25fZjE2X20pKSkKc3ZmbG9hdDE2X3Qgc3ZzdWJfbShzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIGZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl9uX2Y2NF94KSkpCnN2ZmxvYXQ2NF90IHN2c3ViX3goc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJfbl9mMzJfeCkpKQpzdmZsb2F0MzJfdCBzdnN1Yl94KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViX25fZjE2X3gpKSkKc3ZmbG9hdDE2X3Qgc3ZzdWJfeChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIGZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl9uX2Y2NF96KSkpCnN2ZmxvYXQ2NF90IHN2c3ViX3ooc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJfbl9mMzJfeikpKQpzdmZsb2F0MzJfdCBzdnN1Yl96KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViX25fZjE2X3opKSkKc3ZmbG9hdDE2X3Qgc3ZzdWJfeihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIGZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl9uX3U4X20pKSkKc3Z1aW50OF90IHN2c3ViX20oc3Zib29sX3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl9uX3UzMl9tKSkpCnN2dWludDMyX3Qgc3ZzdWJfbShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJfbl91NjRfbSkpKQpzdnVpbnQ2NF90IHN2c3ViX20oc3Zib29sX3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViX25fdTE2X20pKSkKc3Z1aW50MTZfdCBzdnN1Yl9tKHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl9uX3M4X20pKSkKc3ZpbnQ4X3Qgc3ZzdWJfbShzdmJvb2xfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl9uX3MzMl9tKSkpCnN2aW50MzJfdCBzdnN1Yl9tKHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJfbl9zNjRfbSkpKQpzdmludDY0X3Qgc3ZzdWJfbShzdmJvb2xfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViX25fczE2X20pKSkKc3ZpbnQxNl90IHN2c3ViX20oc3Zib29sX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl9uX3U4X3gpKSkKc3Z1aW50OF90IHN2c3ViX3goc3Zib29sX3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl9uX3UzMl94KSkpCnN2dWludDMyX3Qgc3ZzdWJfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJfbl91NjRfeCkpKQpzdnVpbnQ2NF90IHN2c3ViX3goc3Zib29sX3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViX25fdTE2X3gpKSkKc3Z1aW50MTZfdCBzdnN1Yl94KHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl9uX3M4X3gpKSkKc3ZpbnQ4X3Qgc3ZzdWJfeChzdmJvb2xfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl9uX3MzMl94KSkpCnN2aW50MzJfdCBzdnN1Yl94KHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJfbl9zNjRfeCkpKQpzdmludDY0X3Qgc3ZzdWJfeChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViX25fczE2X3gpKSkKc3ZpbnQxNl90IHN2c3ViX3goc3Zib29sX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl9uX3U4X3opKSkKc3Z1aW50OF90IHN2c3ViX3ooc3Zib29sX3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl9uX3UzMl96KSkpCnN2dWludDMyX3Qgc3ZzdWJfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJfbl91NjRfeikpKQpzdnVpbnQ2NF90IHN2c3ViX3ooc3Zib29sX3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViX25fdTE2X3opKSkKc3Z1aW50MTZfdCBzdnN1Yl96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl9uX3M4X3opKSkKc3ZpbnQ4X3Qgc3ZzdWJfeihzdmJvb2xfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl9uX3MzMl96KSkpCnN2aW50MzJfdCBzdnN1Yl96KHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJfbl9zNjRfeikpKQpzdmludDY0X3Qgc3ZzdWJfeihzdmJvb2xfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViX25fczE2X3opKSkKc3ZpbnQxNl90IHN2c3ViX3ooc3Zib29sX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl9mNjRfbSkpKQpzdmZsb2F0NjRfdCBzdnN1Yl9tKHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJfZjMyX20pKSkKc3ZmbG9hdDMyX3Qgc3ZzdWJfbShzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViX2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2c3ViX20oc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl9mNjRfeCkpKQpzdmZsb2F0NjRfdCBzdnN1Yl94KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJfZjMyX3gpKSkKc3ZmbG9hdDMyX3Qgc3ZzdWJfeChzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViX2YxNl94KSkpCnN2ZmxvYXQxNl90IHN2c3ViX3goc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl9mNjRfeikpKQpzdmZsb2F0NjRfdCBzdnN1Yl96KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJfZjMyX3opKSkKc3ZmbG9hdDMyX3Qgc3ZzdWJfeihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViX2YxNl96KSkpCnN2ZmxvYXQxNl90IHN2c3ViX3ooc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl91OF9tKSkpCnN2dWludDhfdCBzdnN1Yl9tKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl91MzJfbSkpKQpzdnVpbnQzMl90IHN2c3ViX20oc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJfdTY0X20pKSkKc3Z1aW50NjRfdCBzdnN1Yl9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViX3UxNl9tKSkpCnN2dWludDE2X3Qgc3ZzdWJfbShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl9zOF9tKSkpCnN2aW50OF90IHN2c3ViX20oc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl9zMzJfbSkpKQpzdmludDMyX3Qgc3ZzdWJfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJfczY0X20pKSkKc3ZpbnQ2NF90IHN2c3ViX20oc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViX3MxNl9tKSkpCnN2aW50MTZfdCBzdnN1Yl9tKHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl91OF94KSkpCnN2dWludDhfdCBzdnN1Yl94KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl91MzJfeCkpKQpzdnVpbnQzMl90IHN2c3ViX3goc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJfdTY0X3gpKSkKc3Z1aW50NjRfdCBzdnN1Yl94KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViX3UxNl94KSkpCnN2dWludDE2X3Qgc3ZzdWJfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl9zOF94KSkpCnN2aW50OF90IHN2c3ViX3goc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl9zMzJfeCkpKQpzdmludDMyX3Qgc3ZzdWJfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJfczY0X3gpKSkKc3ZpbnQ2NF90IHN2c3ViX3goc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViX3MxNl94KSkpCnN2aW50MTZfdCBzdnN1Yl94KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl91OF96KSkpCnN2dWludDhfdCBzdnN1Yl96KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl91MzJfeikpKQpzdnVpbnQzMl90IHN2c3ViX3ooc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJfdTY0X3opKSkKc3Z1aW50NjRfdCBzdnN1Yl96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViX3UxNl96KSkpCnN2dWludDE2X3Qgc3ZzdWJfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl9zOF96KSkpCnN2aW50OF90IHN2c3ViX3ooc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Yl9zMzJfeikpKQpzdmludDMyX3Qgc3ZzdWJfeihzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJfczY0X3opKSkKc3ZpbnQ2NF90IHN2c3ViX3ooc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViX3MxNl96KSkpCnN2aW50MTZfdCBzdnN1Yl96KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfbl9mNjRfbSkpKQpzdmZsb2F0NjRfdCBzdnN1YnJfbShzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIGZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfbl9mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdnN1YnJfbShzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfbl9mMTZfbSkpKQpzdmZsb2F0MTZfdCBzdnN1YnJfbShzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIGZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfbl9mNjRfeCkpKQpzdmZsb2F0NjRfdCBzdnN1YnJfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIGZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfbl9mMzJfeCkpKQpzdmZsb2F0MzJfdCBzdnN1YnJfeChzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfbl9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdnN1YnJfeChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIGZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfbl9mNjRfeikpKQpzdmZsb2F0NjRfdCBzdnN1YnJfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIGZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfbl9mMzJfeikpKQpzdmZsb2F0MzJfdCBzdnN1YnJfeihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfbl9mMTZfeikpKQpzdmZsb2F0MTZfdCBzdnN1YnJfeihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIGZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfbl91OF9tKSkpCnN2dWludDhfdCBzdnN1YnJfbShzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vicl9uX3UzMl9tKSkpCnN2dWludDMyX3Qgc3ZzdWJyX20oc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vicl9uX3U2NF9tKSkpCnN2dWludDY0X3Qgc3ZzdWJyX20oc3Zib29sX3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vicl9uX3UxNl9tKSkpCnN2dWludDE2X3Qgc3ZzdWJyX20oc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vicl9uX3M4X20pKSkKc3ZpbnQ4X3Qgc3ZzdWJyX20oc3Zib29sX3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX25fczMyX20pKSkKc3ZpbnQzMl90IHN2c3Vicl9tKHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX25fczY0X20pKSkKc3ZpbnQ2NF90IHN2c3Vicl9tKHN2Ym9vbF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX25fczE2X20pKSkKc3ZpbnQxNl90IHN2c3Vicl9tKHN2Ym9vbF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX25fdThfeCkpKQpzdnVpbnQ4X3Qgc3ZzdWJyX3goc3Zib29sX3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfbl91MzJfeCkpKQpzdnVpbnQzMl90IHN2c3Vicl94KHN2Ym9vbF90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfbl91NjRfeCkpKQpzdnVpbnQ2NF90IHN2c3Vicl94KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfbl91MTZfeCkpKQpzdnVpbnQxNl90IHN2c3Vicl94KHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfbl9zOF94KSkpCnN2aW50OF90IHN2c3Vicl94KHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vicl9uX3MzMl94KSkpCnN2aW50MzJfdCBzdnN1YnJfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vicl9uX3M2NF94KSkpCnN2aW50NjRfdCBzdnN1YnJfeChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vicl9uX3MxNl94KSkpCnN2aW50MTZfdCBzdnN1YnJfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vicl9uX3U4X3opKSkKc3Z1aW50OF90IHN2c3Vicl96KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX25fdTMyX3opKSkKc3Z1aW50MzJfdCBzdnN1YnJfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX25fdTY0X3opKSkKc3Z1aW50NjRfdCBzdnN1YnJfeihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX25fdTE2X3opKSkKc3Z1aW50MTZfdCBzdnN1YnJfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX25fczhfeikpKQpzdmludDhfdCBzdnN1YnJfeihzdmJvb2xfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfbl9zMzJfeikpKQpzdmludDMyX3Qgc3ZzdWJyX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfbl9zNjRfeikpKQpzdmludDY0X3Qgc3ZzdWJyX3ooc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfbl9zMTZfeikpKQpzdmludDE2X3Qgc3ZzdWJyX3ooc3Zib29sX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZzdWJyX20oc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfZjMyX20pKSkKc3ZmbG9hdDMyX3Qgc3ZzdWJyX20oc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfZjE2X20pKSkKc3ZmbG9hdDE2X3Qgc3ZzdWJyX20oc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZzdWJyX3goc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfZjMyX3gpKSkKc3ZmbG9hdDMyX3Qgc3ZzdWJyX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfZjE2X3gpKSkKc3ZmbG9hdDE2X3Qgc3ZzdWJyX3goc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfZjY0X3opKSkKc3ZmbG9hdDY0X3Qgc3ZzdWJyX3ooc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfZjMyX3opKSkKc3ZmbG9hdDMyX3Qgc3ZzdWJyX3ooc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfZjE2X3opKSkKc3ZmbG9hdDE2X3Qgc3ZzdWJyX3ooc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfdThfbSkpKQpzdnVpbnQ4X3Qgc3ZzdWJyX20oc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vicl91MzJfbSkpKQpzdnVpbnQzMl90IHN2c3Vicl9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vicl91NjRfbSkpKQpzdnVpbnQ2NF90IHN2c3Vicl9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vicl91MTZfbSkpKQpzdnVpbnQxNl90IHN2c3Vicl9tKHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vicl9zOF9tKSkpCnN2aW50OF90IHN2c3Vicl9tKHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX3MzMl9tKSkpCnN2aW50MzJfdCBzdnN1YnJfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX3M2NF9tKSkpCnN2aW50NjRfdCBzdnN1YnJfbShzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX3MxNl9tKSkpCnN2aW50MTZfdCBzdnN1YnJfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX3U4X3gpKSkKc3Z1aW50OF90IHN2c3Vicl94KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfdTMyX3gpKSkKc3Z1aW50MzJfdCBzdnN1YnJfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfdTY0X3gpKSkKc3Z1aW50NjRfdCBzdnN1YnJfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfdTE2X3gpKSkKc3Z1aW50MTZfdCBzdnN1YnJfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfczhfeCkpKQpzdmludDhfdCBzdnN1YnJfeChzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vicl9zMzJfeCkpKQpzdmludDMyX3Qgc3ZzdWJyX3goc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vicl9zNjRfeCkpKQpzdmludDY0X3Qgc3ZzdWJyX3goc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vicl9zMTZfeCkpKQpzdmludDE2X3Qgc3ZzdWJyX3goc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vicl91OF96KSkpCnN2dWludDhfdCBzdnN1YnJfeihzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX3UzMl96KSkpCnN2dWludDMyX3Qgc3ZzdWJyX3ooc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX3U2NF96KSkpCnN2dWludDY0X3Qgc3ZzdWJyX3ooc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX3UxNl96KSkpCnN2dWludDE2X3Qgc3ZzdWJyX3ooc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJyX3M4X3opKSkKc3ZpbnQ4X3Qgc3ZzdWJyX3ooc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfczMyX3opKSkKc3ZpbnQzMl90IHN2c3Vicl96KHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfczY0X3opKSkKc3ZpbnQ2NF90IHN2c3Vicl96KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YnJfczE2X3opKSkKc3ZpbnQxNl90IHN2c3Vicl96KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRibF91OCkpKQpzdnVpbnQ4X3Qgc3Z0Ymwoc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0YmxfdTMyKSkpCnN2dWludDMyX3Qgc3Z0Ymwoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRibF91NjQpKSkKc3Z1aW50NjRfdCBzdnRibChzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dGJsX3UxNikpKQpzdnVpbnQxNl90IHN2dGJsKHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0YmxfczgpKSkKc3ZpbnQ4X3Qgc3Z0Ymwoc3ZpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRibF9mNjQpKSkKc3ZmbG9hdDY0X3Qgc3Z0Ymwoc3ZmbG9hdDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0YmxfZjMyKSkpCnN2ZmxvYXQzMl90IHN2dGJsKHN2ZmxvYXQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dGJsX2YxNikpKQpzdmZsb2F0MTZfdCBzdnRibChzdmZsb2F0MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRibF9zMzIpKSkKc3ZpbnQzMl90IHN2dGJsKHN2aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRibF9zNjQpKSkKc3ZpbnQ2NF90IHN2dGJsKHN2aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRibF9zMTYpKSkKc3ZpbnQxNl90IHN2dGJsKHN2aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRtYWRfZjY0KSkpCnN2ZmxvYXQ2NF90IHN2dG1hZChzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dG1hZF9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3Z0bWFkKHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0bWFkX2YxNikpKQpzdmZsb2F0MTZfdCBzdnRtYWQoc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRybjFfdTgpKSkKc3Z1aW50OF90IHN2dHJuMShzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRybjFfdTMyKSkpCnN2dWludDMyX3Qgc3Z0cm4xKHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0cm4xX3U2NCkpKQpzdnVpbnQ2NF90IHN2dHJuMShzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dHJuMV91MTYpKSkKc3Z1aW50MTZfdCBzdnRybjEoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRybjFfczgpKSkKc3ZpbnQ4X3Qgc3Z0cm4xKHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRybjFfZjY0KSkpCnN2ZmxvYXQ2NF90IHN2dHJuMShzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0cm4xX2YzMikpKQpzdmZsb2F0MzJfdCBzdnRybjEoc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dHJuMV9mMTYpKSkKc3ZmbG9hdDE2X3Qgc3Z0cm4xKHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRybjFfczMyKSkpCnN2aW50MzJfdCBzdnRybjEoc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0cm4xX3M2NCkpKQpzdmludDY0X3Qgc3Z0cm4xKHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dHJuMV9zMTYpKSkKc3ZpbnQxNl90IHN2dHJuMShzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRybjJfdTgpKSkKc3Z1aW50OF90IHN2dHJuMihzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRybjJfdTMyKSkpCnN2dWludDMyX3Qgc3Z0cm4yKHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0cm4yX3U2NCkpKQpzdnVpbnQ2NF90IHN2dHJuMihzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dHJuMl91MTYpKSkKc3Z1aW50MTZfdCBzdnRybjIoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRybjJfczgpKSkKc3ZpbnQ4X3Qgc3Z0cm4yKHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRybjJfZjY0KSkpCnN2ZmxvYXQ2NF90IHN2dHJuMihzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0cm4yX2YzMikpKQpzdmZsb2F0MzJfdCBzdnRybjIoc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dHJuMl9mMTYpKSkKc3ZmbG9hdDE2X3Qgc3Z0cm4yKHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRybjJfczMyKSkpCnN2aW50MzJfdCBzdnRybjIoc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0cm4yX3M2NCkpKQpzdmludDY0X3Qgc3Z0cm4yKHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dHJuMl9zMTYpKSkKc3ZpbnQxNl90IHN2dHJuMihzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRzbXVsX2Y2NCkpKQpzdmZsb2F0NjRfdCBzdnRzbXVsKHN2ZmxvYXQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dHNtdWxfZjMyKSkpCnN2ZmxvYXQzMl90IHN2dHNtdWwoc3ZmbG9hdDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0c211bF9mMTYpKSkKc3ZmbG9hdDE2X3Qgc3Z0c211bChzdmZsb2F0MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRzc2VsX2Y2NCkpKQpzdmZsb2F0NjRfdCBzdnRzc2VsKHN2ZmxvYXQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dHNzZWxfZjMyKSkpCnN2ZmxvYXQzMl90IHN2dHNzZWwoc3ZmbG9hdDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0c3NlbF9mMTYpKSkKc3ZmbG9hdDE2X3Qgc3Z0c3NlbChzdmZsb2F0MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnVucGtoaV9iKSkpCnN2Ym9vbF90IHN2dW5wa2hpKHN2Ym9vbF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dW5wa2hpX3MzMikpKQpzdmludDMyX3Qgc3Z1bnBraGkoc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dW5wa2hpX3M2NCkpKQpzdmludDY0X3Qgc3Z1bnBraGkoc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dW5wa2hpX3MxNikpKQpzdmludDE2X3Qgc3Z1bnBraGkoc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1bnBraGlfdTMyKSkpCnN2dWludDMyX3Qgc3Z1bnBraGkoc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnVucGtoaV91NjQpKSkKc3Z1aW50NjRfdCBzdnVucGtoaShzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dW5wa2hpX3UxNikpKQpzdnVpbnQxNl90IHN2dW5wa2hpKHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnVucGtsb19iKSkpCnN2Ym9vbF90IHN2dW5wa2xvKHN2Ym9vbF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dW5wa2xvX3MzMikpKQpzdmludDMyX3Qgc3Z1bnBrbG8oc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dW5wa2xvX3M2NCkpKQpzdmludDY0X3Qgc3Z1bnBrbG8oc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dW5wa2xvX3MxNikpKQpzdmludDE2X3Qgc3Z1bnBrbG8oc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1bnBrbG9fdTMyKSkpCnN2dWludDMyX3Qgc3Z1bnBrbG8oc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnVucGtsb191NjQpKSkKc3Z1aW50NjRfdCBzdnVucGtsbyhzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dW5wa2xvX3UxNikpKQpzdnVpbnQxNl90IHN2dW5wa2xvKHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnV6cDFfdTgpKSkKc3Z1aW50OF90IHN2dXpwMShzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnV6cDFfdTMyKSkpCnN2dWludDMyX3Qgc3Z1enAxKHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1enAxX3U2NCkpKQpzdnVpbnQ2NF90IHN2dXpwMShzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXpwMV91MTYpKSkKc3Z1aW50MTZfdCBzdnV6cDEoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnV6cDFfczgpKSkKc3ZpbnQ4X3Qgc3Z1enAxKHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnV6cDFfZjY0KSkpCnN2ZmxvYXQ2NF90IHN2dXpwMShzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1enAxX2YzMikpKQpzdmZsb2F0MzJfdCBzdnV6cDEoc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXpwMV9mMTYpKSkKc3ZmbG9hdDE2X3Qgc3Z1enAxKHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnV6cDFfczMyKSkpCnN2aW50MzJfdCBzdnV6cDEoc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1enAxX3M2NCkpKQpzdmludDY0X3Qgc3Z1enAxKHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXpwMV9zMTYpKSkKc3ZpbnQxNl90IHN2dXpwMShzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnV6cDJfdTgpKSkKc3Z1aW50OF90IHN2dXpwMihzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnV6cDJfdTMyKSkpCnN2dWludDMyX3Qgc3Z1enAyKHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1enAyX3U2NCkpKQpzdnVpbnQ2NF90IHN2dXpwMihzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXpwMl91MTYpKSkKc3Z1aW50MTZfdCBzdnV6cDIoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnV6cDJfczgpKSkKc3ZpbnQ4X3Qgc3Z1enAyKHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnV6cDJfZjY0KSkpCnN2ZmxvYXQ2NF90IHN2dXpwMihzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1enAyX2YzMikpKQpzdmZsb2F0MzJfdCBzdnV6cDIoc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXpwMl9mMTYpKSkKc3ZmbG9hdDE2X3Qgc3Z1enAyKHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnV6cDJfczMyKSkpCnN2aW50MzJfdCBzdnV6cDIoc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1enAyX3M2NCkpKQpzdmludDY0X3Qgc3Z1enAyKHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXpwMl9zMTYpKSkKc3ZpbnQxNl90IHN2dXpwMihzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlbGVfYjhfczMyKSkpCnN2Ym9vbF90IHN2d2hpbGVsZV9iOChpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVsZV9iMzJfczMyKSkpCnN2Ym9vbF90IHN2d2hpbGVsZV9iMzIoaW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlbGVfYjY0X3MzMikpKQpzdmJvb2xfdCBzdndoaWxlbGVfYjY0KGludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z3aGlsZWxlX2IxNl9zMzIpKSkKc3Zib29sX3Qgc3Z3aGlsZWxlX2IxNihpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVsZV9iOF9zNjQpKSkKc3Zib29sX3Qgc3Z3aGlsZWxlX2I4KGludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z3aGlsZWxlX2IzMl9zNjQpKSkKc3Zib29sX3Qgc3Z3aGlsZWxlX2IzMihpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVsZV9iNjRfczY0KSkpCnN2Ym9vbF90IHN2d2hpbGVsZV9iNjQoaW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlbGVfYjE2X3M2NCkpKQpzdmJvb2xfdCBzdndoaWxlbGVfYjE2KGludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z3aGlsZWxlX2I4X3UzMikpKQpzdmJvb2xfdCBzdndoaWxlbGVfYjgodWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVsZV9iMzJfdTMyKSkpCnN2Ym9vbF90IHN2d2hpbGVsZV9iMzIodWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVsZV9iNjRfdTMyKSkpCnN2Ym9vbF90IHN2d2hpbGVsZV9iNjQodWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVsZV9iMTZfdTMyKSkpCnN2Ym9vbF90IHN2d2hpbGVsZV9iMTYodWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVsZV9iOF91NjQpKSkKc3Zib29sX3Qgc3Z3aGlsZWxlX2I4KHVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlbGVfYjMyX3U2NCkpKQpzdmJvb2xfdCBzdndoaWxlbGVfYjMyKHVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlbGVfYjY0X3U2NCkpKQpzdmJvb2xfdCBzdndoaWxlbGVfYjY0KHVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlbGVfYjE2X3U2NCkpKQpzdmJvb2xfdCBzdndoaWxlbGVfYjE2KHVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlbHRfYjhfdTMyKSkpCnN2Ym9vbF90IHN2d2hpbGVsdF9iOCh1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z3aGlsZWx0X2IzMl91MzIpKSkKc3Zib29sX3Qgc3Z3aGlsZWx0X2IzMih1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z3aGlsZWx0X2I2NF91MzIpKSkKc3Zib29sX3Qgc3Z3aGlsZWx0X2I2NCh1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z3aGlsZWx0X2IxNl91MzIpKSkKc3Zib29sX3Qgc3Z3aGlsZWx0X2IxNih1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z3aGlsZWx0X2I4X3U2NCkpKQpzdmJvb2xfdCBzdndoaWxlbHRfYjgodWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVsdF9iMzJfdTY0KSkpCnN2Ym9vbF90IHN2d2hpbGVsdF9iMzIodWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVsdF9iNjRfdTY0KSkpCnN2Ym9vbF90IHN2d2hpbGVsdF9iNjQodWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVsdF9iMTZfdTY0KSkpCnN2Ym9vbF90IHN2d2hpbGVsdF9iMTYodWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVsdF9iOF9zMzIpKSkKc3Zib29sX3Qgc3Z3aGlsZWx0X2I4KGludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z3aGlsZWx0X2IzMl9zMzIpKSkKc3Zib29sX3Qgc3Z3aGlsZWx0X2IzMihpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVsdF9iNjRfczMyKSkpCnN2Ym9vbF90IHN2d2hpbGVsdF9iNjQoaW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlbHRfYjE2X3MzMikpKQpzdmJvb2xfdCBzdndoaWxlbHRfYjE2KGludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z3aGlsZWx0X2I4X3M2NCkpKQpzdmJvb2xfdCBzdndoaWxlbHRfYjgoaW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlbHRfYjMyX3M2NCkpKQpzdmJvb2xfdCBzdndoaWxlbHRfYjMyKGludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z3aGlsZWx0X2I2NF9zNjQpKSkKc3Zib29sX3Qgc3Z3aGlsZWx0X2I2NChpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVsdF9iMTZfczY0KSkpCnN2Ym9vbF90IHN2d2hpbGVsdF9iMTYoaW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnppcDFfdTgpKSkKc3Z1aW50OF90IHN2emlwMShzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnppcDFfdTMyKSkpCnN2dWludDMyX3Qgc3Z6aXAxKHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z6aXAxX3U2NCkpKQpzdnVpbnQ2NF90IHN2emlwMShzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2emlwMV91MTYpKSkKc3Z1aW50MTZfdCBzdnppcDEoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnppcDFfczgpKSkKc3ZpbnQ4X3Qgc3Z6aXAxKHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnppcDFfZjY0KSkpCnN2ZmxvYXQ2NF90IHN2emlwMShzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z6aXAxX2YzMikpKQpzdmZsb2F0MzJfdCBzdnppcDEoc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2emlwMV9mMTYpKSkKc3ZmbG9hdDE2X3Qgc3Z6aXAxKHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnppcDFfczMyKSkpCnN2aW50MzJfdCBzdnppcDEoc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z6aXAxX3M2NCkpKQpzdmludDY0X3Qgc3Z6aXAxKHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2emlwMV9zMTYpKSkKc3ZpbnQxNl90IHN2emlwMShzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnppcDJfdTgpKSkKc3Z1aW50OF90IHN2emlwMihzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnppcDJfdTMyKSkpCnN2dWludDMyX3Qgc3Z6aXAyKHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z6aXAyX3U2NCkpKQpzdnVpbnQ2NF90IHN2emlwMihzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2emlwMl91MTYpKSkKc3Z1aW50MTZfdCBzdnppcDIoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnppcDJfczgpKSkKc3ZpbnQ4X3Qgc3Z6aXAyKHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnppcDJfZjY0KSkpCnN2ZmxvYXQ2NF90IHN2emlwMihzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z6aXAyX2YzMikpKQpzdmZsb2F0MzJfdCBzdnppcDIoc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2emlwMl9mMTYpKSkKc3ZmbG9hdDE2X3Qgc3Z6aXAyKHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnppcDJfczMyKSkpCnN2aW50MzJfdCBzdnppcDIoc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z6aXAyX3M2NCkpKQpzdmludDY0X3Qgc3Z6aXAyKHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2emlwMl9zMTYpKSkKc3ZpbnQxNl90IHN2emlwMihzdmludDE2X3QsIHN2aW50MTZfdCk7CgojaWYgZGVmaW5lZCAoX19BUk1fRkVBVFVSRV9TVkUyX0JJVFBFUk0pCl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmRlcF9uX3U4KSkpCnN2dWludDhfdCBzdmJkZXBfbl91OChzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJkZXBfbl91MzIpKSkKc3Z1aW50MzJfdCBzdmJkZXBfbl91MzIoc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJkZXBfbl91NjQpKSkKc3Z1aW50NjRfdCBzdmJkZXBfbl91NjQoc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJkZXBfbl91MTYpKSkKc3Z1aW50MTZfdCBzdmJkZXBfbl91MTYoc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJkZXBfdTgpKSkKc3Z1aW50OF90IHN2YmRlcF91OChzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmRlcF91MzIpKSkKc3Z1aW50MzJfdCBzdmJkZXBfdTMyKHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJkZXBfdTY0KSkpCnN2dWludDY0X3Qgc3ZiZGVwX3U2NChzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiZGVwX3UxNikpKQpzdnVpbnQxNl90IHN2YmRlcF91MTYoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmV4dF9uX3U4KSkpCnN2dWludDhfdCBzdmJleHRfbl91OChzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJleHRfbl91MzIpKSkKc3Z1aW50MzJfdCBzdmJleHRfbl91MzIoc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJleHRfbl91NjQpKSkKc3Z1aW50NjRfdCBzdmJleHRfbl91NjQoc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJleHRfbl91MTYpKSkKc3Z1aW50MTZfdCBzdmJleHRfbl91MTYoc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJleHRfdTgpKSkKc3Z1aW50OF90IHN2YmV4dF91OChzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmV4dF91MzIpKSkKc3Z1aW50MzJfdCBzdmJleHRfdTMyKHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJleHRfdTY0KSkpCnN2dWludDY0X3Qgc3ZiZXh0X3U2NChzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiZXh0X3UxNikpKQpzdnVpbnQxNl90IHN2YmV4dF91MTYoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmdycF9uX3U4KSkpCnN2dWludDhfdCBzdmJncnBfbl91OChzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJncnBfbl91MzIpKSkKc3Z1aW50MzJfdCBzdmJncnBfbl91MzIoc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJncnBfbl91NjQpKSkKc3Z1aW50NjRfdCBzdmJncnBfbl91NjQoc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJncnBfbl91MTYpKSkKc3Z1aW50MTZfdCBzdmJncnBfbl91MTYoc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJncnBfdTgpKSkKc3Z1aW50OF90IHN2YmdycF91OChzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmdycF91MzIpKSkKc3Z1aW50MzJfdCBzdmJncnBfdTMyKHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJncnBfdTY0KSkpCnN2dWludDY0X3Qgc3ZiZ3JwX3U2NChzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiZ3JwX3UxNikpKQpzdnVpbnQxNl90IHN2YmdycF91MTYoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJkZXBfbl91OCkpKQpzdnVpbnQ4X3Qgc3ZiZGVwKHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJkZXBfbl91MzIpKSkKc3Z1aW50MzJfdCBzdmJkZXAoc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiZGVwX25fdTY0KSkpCnN2dWludDY0X3Qgc3ZiZGVwKHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmRlcF9uX3UxNikpKQpzdnVpbnQxNl90IHN2YmRlcChzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJkZXBfdTgpKSkKc3Z1aW50OF90IHN2YmRlcChzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJkZXBfdTMyKSkpCnN2dWludDMyX3Qgc3ZiZGVwKHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiZGVwX3U2NCkpKQpzdnVpbnQ2NF90IHN2YmRlcChzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmRlcF91MTYpKSkKc3Z1aW50MTZfdCBzdmJkZXAoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJleHRfbl91OCkpKQpzdnVpbnQ4X3Qgc3ZiZXh0KHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJleHRfbl91MzIpKSkKc3Z1aW50MzJfdCBzdmJleHQoc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiZXh0X25fdTY0KSkpCnN2dWludDY0X3Qgc3ZiZXh0KHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmV4dF9uX3UxNikpKQpzdnVpbnQxNl90IHN2YmV4dChzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJleHRfdTgpKSkKc3Z1aW50OF90IHN2YmV4dChzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJleHRfdTMyKSkpCnN2dWludDMyX3Qgc3ZiZXh0KHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiZXh0X3U2NCkpKQpzdnVpbnQ2NF90IHN2YmV4dChzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmV4dF91MTYpKSkKc3Z1aW50MTZfdCBzdmJleHQoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJncnBfbl91OCkpKQpzdnVpbnQ4X3Qgc3ZiZ3JwKHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJncnBfbl91MzIpKSkKc3Z1aW50MzJfdCBzdmJncnAoc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiZ3JwX25fdTY0KSkpCnN2dWludDY0X3Qgc3ZiZ3JwKHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmdycF9uX3UxNikpKQpzdnVpbnQxNl90IHN2YmdycChzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJncnBfdTgpKSkKc3Z1aW50OF90IHN2YmdycChzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJncnBfdTMyKSkpCnN2dWludDMyX3Qgc3ZiZ3JwKHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiZ3JwX3U2NCkpKQpzdnVpbnQ2NF90IHN2YmdycChzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmdycF91MTYpKSkKc3Z1aW50MTZfdCBzdmJncnAoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7CiNlbmRpZiAgLy9kZWZpbmVkIChfX0FSTV9GRUFUVVJFX1NWRTJfQklUUEVSTSkKCiNpZiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfU1ZFMikKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmFfbl9zOCkpKQpzdmludDhfdCBzdmFiYV9uX3M4KHN2aW50OF90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmFfbl9zMzIpKSkKc3ZpbnQzMl90IHN2YWJhX25fczMyKHN2aW50MzJfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmFfbl9zNjQpKSkKc3ZpbnQ2NF90IHN2YWJhX25fczY0KHN2aW50NjRfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmFfbl9zMTYpKSkKc3ZpbnQxNl90IHN2YWJhX25fczE2KHN2aW50MTZfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmFfbl91OCkpKQpzdnVpbnQ4X3Qgc3ZhYmFfbl91OChzdnVpbnQ4X3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJhX25fdTMyKSkpCnN2dWludDMyX3Qgc3ZhYmFfbl91MzIoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiYV9uX3U2NCkpKQpzdnVpbnQ2NF90IHN2YWJhX25fdTY0KHN2dWludDY0X3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmFfbl91MTYpKSkKc3Z1aW50MTZfdCBzdmFiYV9uX3UxNihzdnVpbnQxNl90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJhX3M4KSkpCnN2aW50OF90IHN2YWJhX3M4KHN2aW50OF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiYV9zMzIpKSkKc3ZpbnQzMl90IHN2YWJhX3MzMihzdmludDMyX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmFfczY0KSkpCnN2aW50NjRfdCBzdmFiYV9zNjQoc3ZpbnQ2NF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJhX3MxNikpKQpzdmludDE2X3Qgc3ZhYmFfczE2KHN2aW50MTZfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiYV91OCkpKQpzdnVpbnQ4X3Qgc3ZhYmFfdTgoc3Z1aW50OF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJhX3UzMikpKQpzdnVpbnQzMl90IHN2YWJhX3UzMihzdnVpbnQzMl90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmFfdTY0KSkpCnN2dWludDY0X3Qgc3ZhYmFfdTY0KHN2dWludDY0X3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiYV91MTYpKSkKc3Z1aW50MTZfdCBzdmFiYV91MTYoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJhbGJfbl9zMzIpKSkKc3ZpbnQzMl90IHN2YWJhbGJfbl9zMzIoc3ZpbnQzMl90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiYWxiX25fczY0KSkpCnN2aW50NjRfdCBzdmFiYWxiX25fczY0KHN2aW50NjRfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmFsYl9uX3MxNikpKQpzdmludDE2X3Qgc3ZhYmFsYl9uX3MxNihzdmludDE2X3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiYWxiX25fdTMyKSkpCnN2dWludDMyX3Qgc3ZhYmFsYl9uX3UzMihzdnVpbnQzMl90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJhbGJfbl91NjQpKSkKc3Z1aW50NjRfdCBzdmFiYWxiX25fdTY0KHN2dWludDY0X3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmFsYl9uX3UxNikpKQpzdnVpbnQxNl90IHN2YWJhbGJfbl91MTYoc3Z1aW50MTZfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmFsYl9zMzIpKSkKc3ZpbnQzMl90IHN2YWJhbGJfczMyKHN2aW50MzJfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiYWxiX3M2NCkpKQpzdmludDY0X3Qgc3ZhYmFsYl9zNjQoc3ZpbnQ2NF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJhbGJfczE2KSkpCnN2aW50MTZfdCBzdmFiYWxiX3MxNihzdmludDE2X3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJhbGJfdTMyKSkpCnN2dWludDMyX3Qgc3ZhYmFsYl91MzIoc3Z1aW50MzJfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJhbGJfdTY0KSkpCnN2dWludDY0X3Qgc3ZhYmFsYl91NjQoc3Z1aW50NjRfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJhbGJfdTE2KSkpCnN2dWludDE2X3Qgc3ZhYmFsYl91MTYoc3Z1aW50MTZfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiYWx0X25fczMyKSkpCnN2aW50MzJfdCBzdmFiYWx0X25fczMyKHN2aW50MzJfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmFsdF9uX3M2NCkpKQpzdmludDY0X3Qgc3ZhYmFsdF9uX3M2NChzdmludDY0X3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJhbHRfbl9zMTYpKSkKc3ZpbnQxNl90IHN2YWJhbHRfbl9zMTYoc3ZpbnQxNl90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmFsdF9uX3UzMikpKQpzdnVpbnQzMl90IHN2YWJhbHRfbl91MzIoc3Z1aW50MzJfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiYWx0X25fdTY0KSkpCnN2dWludDY0X3Qgc3ZhYmFsdF9uX3U2NChzdnVpbnQ2NF90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJhbHRfbl91MTYpKSkKc3Z1aW50MTZfdCBzdmFiYWx0X25fdTE2KHN2dWludDE2X3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJhbHRfczMyKSkpCnN2aW50MzJfdCBzdmFiYWx0X3MzMihzdmludDMyX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmFsdF9zNjQpKSkKc3ZpbnQ2NF90IHN2YWJhbHRfczY0KHN2aW50NjRfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiYWx0X3MxNikpKQpzdmludDE2X3Qgc3ZhYmFsdF9zMTYoc3ZpbnQxNl90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiYWx0X3UzMikpKQpzdnVpbnQzMl90IHN2YWJhbHRfdTMyKHN2dWludDMyX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiYWx0X3U2NCkpKQpzdnVpbnQ2NF90IHN2YWJhbHRfdTY0KHN2dWludDY0X3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiYWx0X3UxNikpKQpzdnVpbnQxNl90IHN2YWJhbHRfdTE2KHN2dWludDE2X3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRsYl9uX3MzMikpKQpzdmludDMyX3Qgc3ZhYmRsYl9uX3MzMihzdmludDE2X3QsIGludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZGxiX25fczY0KSkpCnN2aW50NjRfdCBzdmFiZGxiX25fczY0KHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkbGJfbl9zMTYpKSkKc3ZpbnQxNl90IHN2YWJkbGJfbl9zMTYoc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkbGJfbl91MzIpKSkKc3Z1aW50MzJfdCBzdmFiZGxiX25fdTMyKHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRsYl9uX3U2NCkpKQpzdnVpbnQ2NF90IHN2YWJkbGJfbl91NjQoc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZGxiX25fdTE2KSkpCnN2dWludDE2X3Qgc3ZhYmRsYl9uX3UxNihzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZGxiX3MzMikpKQpzdmludDMyX3Qgc3ZhYmRsYl9zMzIoc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZGxiX3M2NCkpKQpzdmludDY0X3Qgc3ZhYmRsYl9zNjQoc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZGxiX3MxNikpKQpzdmludDE2X3Qgc3ZhYmRsYl9zMTYoc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRsYl91MzIpKSkKc3Z1aW50MzJfdCBzdmFiZGxiX3UzMihzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRsYl91NjQpKSkKc3Z1aW50NjRfdCBzdmFiZGxiX3U2NChzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRsYl91MTYpKSkKc3Z1aW50MTZfdCBzdmFiZGxiX3UxNihzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkbHRfbl9zMzIpKSkKc3ZpbnQzMl90IHN2YWJkbHRfbl9zMzIoc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRsdF9uX3M2NCkpKQpzdmludDY0X3Qgc3ZhYmRsdF9uX3M2NChzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZGx0X25fczE2KSkpCnN2aW50MTZfdCBzdmFiZGx0X25fczE2KHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZGx0X25fdTMyKSkpCnN2dWludDMyX3Qgc3ZhYmRsdF9uX3UzMihzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkbHRfbl91NjQpKSkKc3Z1aW50NjRfdCBzdmFiZGx0X25fdTY0KHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRsdF9uX3UxNikpKQpzdnVpbnQxNl90IHN2YWJkbHRfbl91MTYoc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRsdF9zMzIpKSkKc3ZpbnQzMl90IHN2YWJkbHRfczMyKHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRsdF9zNjQpKSkKc3ZpbnQ2NF90IHN2YWJkbHRfczY0KHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRsdF9zMTYpKSkKc3ZpbnQxNl90IHN2YWJkbHRfczE2KHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkbHRfdTMyKSkpCnN2dWludDMyX3Qgc3ZhYmRsdF91MzIoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkbHRfdTY0KSkpCnN2dWludDY0X3Qgc3ZhYmRsdF91NjQoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkbHRfdTE2KSkpCnN2dWludDE2X3Qgc3ZhYmRsdF91MTYoc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkYWxwX3MzMl9tKSkpCnN2aW50MzJfdCBzdmFkYWxwX3MzMl9tKHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRhbHBfczY0X20pKSkKc3ZpbnQ2NF90IHN2YWRhbHBfczY0X20oc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGFscF9zMTZfbSkpKQpzdmludDE2X3Qgc3ZhZGFscF9zMTZfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRhbHBfczMyX3gpKSkKc3ZpbnQzMl90IHN2YWRhbHBfczMyX3goc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGFscF9zNjRfeCkpKQpzdmludDY0X3Qgc3ZhZGFscF9zNjRfeChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkYWxwX3MxNl94KSkpCnN2aW50MTZfdCBzdmFkYWxwX3MxNl94KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGFscF9zMzJfeikpKQpzdmludDMyX3Qgc3ZhZGFscF9zMzJfeihzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkYWxwX3M2NF96KSkpCnN2aW50NjRfdCBzdmFkYWxwX3M2NF96KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRhbHBfczE2X3opKSkKc3ZpbnQxNl90IHN2YWRhbHBfczE2X3ooc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkYWxwX3UzMl9tKSkpCnN2dWludDMyX3Qgc3ZhZGFscF91MzJfbShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRhbHBfdTY0X20pKSkKc3Z1aW50NjRfdCBzdmFkYWxwX3U2NF9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGFscF91MTZfbSkpKQpzdnVpbnQxNl90IHN2YWRhbHBfdTE2X20oc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRhbHBfdTMyX3gpKSkKc3Z1aW50MzJfdCBzdmFkYWxwX3UzMl94KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGFscF91NjRfeCkpKQpzdnVpbnQ2NF90IHN2YWRhbHBfdTY0X3goc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkYWxwX3UxNl94KSkpCnN2dWludDE2X3Qgc3ZhZGFscF91MTZfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGFscF91MzJfeikpKQpzdnVpbnQzMl90IHN2YWRhbHBfdTMyX3ooc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkYWxwX3U2NF96KSkpCnN2dWludDY0X3Qgc3ZhZGFscF91NjRfeihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRhbHBfdTE2X3opKSkKc3Z1aW50MTZfdCBzdmFkYWxwX3UxNl96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkY2xiX25fdTMyKSkpCnN2dWludDMyX3Qgc3ZhZGNsYl9uX3UzMihzdnVpbnQzMl90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRjbGJfbl91NjQpKSkKc3Z1aW50NjRfdCBzdmFkY2xiX25fdTY0KHN2dWludDY0X3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGNsYl91MzIpKSkKc3Z1aW50MzJfdCBzdmFkY2xiX3UzMihzdnVpbnQzMl90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGNsYl91NjQpKSkKc3Z1aW50NjRfdCBzdmFkY2xiX3U2NChzdnVpbnQ2NF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGNsdF9uX3UzMikpKQpzdnVpbnQzMl90IHN2YWRjbHRfbl91MzIoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkY2x0X25fdTY0KSkpCnN2dWludDY0X3Qgc3ZhZGNsdF9uX3U2NChzdnVpbnQ2NF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRjbHRfdTMyKSkpCnN2dWludDMyX3Qgc3ZhZGNsdF91MzIoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRjbHRfdTY0KSkpCnN2dWludDY0X3Qgc3ZhZGNsdF91NjQoc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkaG5iX25fdTMyKSkpCnN2dWludDE2X3Qgc3ZhZGRobmJfbl91MzIoc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZGhuYl9uX3U2NCkpKQpzdnVpbnQzMl90IHN2YWRkaG5iX25fdTY0KHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRobmJfbl91MTYpKSkKc3Z1aW50OF90IHN2YWRkaG5iX25fdTE2KHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRobmJfbl9zMzIpKSkKc3ZpbnQxNl90IHN2YWRkaG5iX25fczMyKHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkaG5iX25fczY0KSkpCnN2aW50MzJfdCBzdmFkZGhuYl9uX3M2NChzdmludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZGhuYl9uX3MxNikpKQpzdmludDhfdCBzdmFkZGhuYl9uX3MxNihzdmludDE2X3QsIGludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZGhuYl91MzIpKSkKc3Z1aW50MTZfdCBzdmFkZGhuYl91MzIoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkaG5iX3U2NCkpKQpzdnVpbnQzMl90IHN2YWRkaG5iX3U2NChzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRobmJfdTE2KSkpCnN2dWludDhfdCBzdmFkZGhuYl91MTYoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkaG5iX3MzMikpKQpzdmludDE2X3Qgc3ZhZGRobmJfczMyKHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRobmJfczY0KSkpCnN2aW50MzJfdCBzdmFkZGhuYl9zNjQoc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZGhuYl9zMTYpKSkKc3ZpbnQ4X3Qgc3ZhZGRobmJfczE2KHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRobnRfbl91MzIpKSkKc3Z1aW50MTZfdCBzdmFkZGhudF9uX3UzMihzdnVpbnQxNl90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkaG50X25fdTY0KSkpCnN2dWludDMyX3Qgc3ZhZGRobnRfbl91NjQoc3Z1aW50MzJfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZGhudF9uX3UxNikpKQpzdnVpbnQ4X3Qgc3ZhZGRobnRfbl91MTYoc3Z1aW50OF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkaG50X25fczMyKSkpCnN2aW50MTZfdCBzdmFkZGhudF9uX3MzMihzdmludDE2X3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkaG50X25fczY0KSkpCnN2aW50MzJfdCBzdmFkZGhudF9uX3M2NChzdmludDMyX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkaG50X25fczE2KSkpCnN2aW50OF90IHN2YWRkaG50X25fczE2KHN2aW50OF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZGhudF91MzIpKSkKc3Z1aW50MTZfdCBzdmFkZGhudF91MzIoc3Z1aW50MTZfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkaG50X3U2NCkpKQpzdnVpbnQzMl90IHN2YWRkaG50X3U2NChzdnVpbnQzMl90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRobnRfdTE2KSkpCnN2dWludDhfdCBzdmFkZGhudF91MTYoc3Z1aW50OF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRobnRfczMyKSkpCnN2aW50MTZfdCBzdmFkZGhudF9zMzIoc3ZpbnQxNl90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkaG50X3M2NCkpKQpzdmludDMyX3Qgc3ZhZGRobnRfczY0KHN2aW50MzJfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZGhudF9zMTYpKSkKc3ZpbnQ4X3Qgc3ZhZGRobnRfczE2KHN2aW50OF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkbGJfbl9zMzIpKSkKc3ZpbnQzMl90IHN2YWRkbGJfbl9zMzIoc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRsYl9uX3M2NCkpKQpzdmludDY0X3Qgc3ZhZGRsYl9uX3M2NChzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZGxiX25fczE2KSkpCnN2aW50MTZfdCBzdmFkZGxiX25fczE2KHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZGxiX25fdTMyKSkpCnN2dWludDMyX3Qgc3ZhZGRsYl9uX3UzMihzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkbGJfbl91NjQpKSkKc3Z1aW50NjRfdCBzdmFkZGxiX25fdTY0KHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRsYl9uX3UxNikpKQpzdnVpbnQxNl90IHN2YWRkbGJfbl91MTYoc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRsYl9zMzIpKSkKc3ZpbnQzMl90IHN2YWRkbGJfczMyKHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRsYl9zNjQpKSkKc3ZpbnQ2NF90IHN2YWRkbGJfczY0KHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRsYl9zMTYpKSkKc3ZpbnQxNl90IHN2YWRkbGJfczE2KHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkbGJfdTMyKSkpCnN2dWludDMyX3Qgc3ZhZGRsYl91MzIoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkbGJfdTY0KSkpCnN2dWludDY0X3Qgc3ZhZGRsYl91NjQoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkbGJfdTE2KSkpCnN2dWludDE2X3Qgc3ZhZGRsYl91MTYoc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZGxidF9uX3MzMikpKQpzdmludDMyX3Qgc3ZhZGRsYnRfbl9zMzIoc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRsYnRfbl9zNjQpKSkKc3ZpbnQ2NF90IHN2YWRkbGJ0X25fczY0KHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkbGJ0X25fczE2KSkpCnN2aW50MTZfdCBzdmFkZGxidF9uX3MxNihzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRsYnRfczMyKSkpCnN2aW50MzJfdCBzdmFkZGxidF9zMzIoc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZGxidF9zNjQpKSkKc3ZpbnQ2NF90IHN2YWRkbGJ0X3M2NChzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkbGJ0X3MxNikpKQpzdmludDE2X3Qgc3ZhZGRsYnRfczE2KHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkbHRfbl9zMzIpKSkKc3ZpbnQzMl90IHN2YWRkbHRfbl9zMzIoc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRsdF9uX3M2NCkpKQpzdmludDY0X3Qgc3ZhZGRsdF9uX3M2NChzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZGx0X25fczE2KSkpCnN2aW50MTZfdCBzdmFkZGx0X25fczE2KHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZGx0X25fdTMyKSkpCnN2dWludDMyX3Qgc3ZhZGRsdF9uX3UzMihzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkbHRfbl91NjQpKSkKc3Z1aW50NjRfdCBzdmFkZGx0X25fdTY0KHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRsdF9uX3UxNikpKQpzdnVpbnQxNl90IHN2YWRkbHRfbl91MTYoc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRsdF9zMzIpKSkKc3ZpbnQzMl90IHN2YWRkbHRfczMyKHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRsdF9zNjQpKSkKc3ZpbnQ2NF90IHN2YWRkbHRfczY0KHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRsdF9zMTYpKSkKc3ZpbnQxNl90IHN2YWRkbHRfczE2KHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkbHRfdTMyKSkpCnN2dWludDMyX3Qgc3ZhZGRsdF91MzIoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkbHRfdTY0KSkpCnN2dWludDY0X3Qgc3ZhZGRsdF91NjQoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkbHRfdTE2KSkpCnN2dWludDE2X3Qgc3ZhZGRsdF91MTYoc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZHBfZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZhZGRwX2Y2NF9tKHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZHBfZjMyX20pKSkKc3ZmbG9hdDMyX3Qgc3ZhZGRwX2YzMl9tKHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZHBfZjE2X20pKSkKc3ZmbG9hdDE2X3Qgc3ZhZGRwX2YxNl9tKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZHBfZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZhZGRwX2Y2NF94KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZHBfZjMyX3gpKSkKc3ZmbG9hdDMyX3Qgc3ZhZGRwX2YzMl94KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZHBfZjE2X3gpKSkKc3ZmbG9hdDE2X3Qgc3ZhZGRwX2YxNl94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZHBfdThfbSkpKQpzdnVpbnQ4X3Qgc3ZhZGRwX3U4X20oc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRwX3UzMl9tKSkpCnN2dWludDMyX3Qgc3ZhZGRwX3UzMl9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRwX3U2NF9tKSkpCnN2dWludDY0X3Qgc3ZhZGRwX3U2NF9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRwX3UxNl9tKSkpCnN2dWludDE2X3Qgc3ZhZGRwX3UxNl9tKHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRwX3M4X20pKSkKc3ZpbnQ4X3Qgc3ZhZGRwX3M4X20oc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkcF9zMzJfbSkpKQpzdmludDMyX3Qgc3ZhZGRwX3MzMl9tKHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkcF9zNjRfbSkpKQpzdmludDY0X3Qgc3ZhZGRwX3M2NF9tKHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkcF9zMTZfbSkpKQpzdmludDE2X3Qgc3ZhZGRwX3MxNl9tKHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkcF91OF94KSkpCnN2dWludDhfdCBzdmFkZHBfdThfeChzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZHBfdTMyX3gpKSkKc3Z1aW50MzJfdCBzdmFkZHBfdTMyX3goc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZHBfdTY0X3gpKSkKc3Z1aW50NjRfdCBzdmFkZHBfdTY0X3goc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZHBfdTE2X3gpKSkKc3Z1aW50MTZfdCBzdmFkZHBfdTE2X3goc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZHBfczhfeCkpKQpzdmludDhfdCBzdmFkZHBfczhfeChzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRwX3MzMl94KSkpCnN2aW50MzJfdCBzdmFkZHBfczMyX3goc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRwX3M2NF94KSkpCnN2aW50NjRfdCBzdmFkZHBfczY0X3goc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRwX3MxNl94KSkpCnN2aW50MTZfdCBzdmFkZHBfczE2X3goc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGR3Yl9uX3MzMikpKQpzdmludDMyX3Qgc3ZhZGR3Yl9uX3MzMihzdmludDMyX3QsIGludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZHdiX25fczY0KSkpCnN2aW50NjRfdCBzdmFkZHdiX25fczY0KHN2aW50NjRfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkd2Jfbl9zMTYpKSkKc3ZpbnQxNl90IHN2YWRkd2Jfbl9zMTYoc3ZpbnQxNl90LCBpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZHdiX25fdTMyKSkpCnN2dWludDMyX3Qgc3ZhZGR3Yl9uX3UzMihzdnVpbnQzMl90LCB1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkd2Jfbl91NjQpKSkKc3Z1aW50NjRfdCBzdmFkZHdiX25fdTY0KHN2dWludDY0X3QsIHVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGR3Yl9uX3UxNikpKQpzdnVpbnQxNl90IHN2YWRkd2Jfbl91MTYoc3Z1aW50MTZfdCwgdWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkd2JfczMyKSkpCnN2aW50MzJfdCBzdmFkZHdiX3MzMihzdmludDMyX3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkd2JfczY0KSkpCnN2aW50NjRfdCBzdmFkZHdiX3M2NChzdmludDY0X3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkd2JfczE2KSkpCnN2aW50MTZfdCBzdmFkZHdiX3MxNihzdmludDE2X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGR3Yl91MzIpKSkKc3Z1aW50MzJfdCBzdmFkZHdiX3UzMihzdnVpbnQzMl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGR3Yl91NjQpKSkKc3Z1aW50NjRfdCBzdmFkZHdiX3U2NChzdnVpbnQ2NF90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGR3Yl91MTYpKSkKc3Z1aW50MTZfdCBzdmFkZHdiX3UxNihzdnVpbnQxNl90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZHd0X25fczMyKSkpCnN2aW50MzJfdCBzdmFkZHd0X25fczMyKHN2aW50MzJfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkd3Rfbl9zNjQpKSkKc3ZpbnQ2NF90IHN2YWRkd3Rfbl9zNjQoc3ZpbnQ2NF90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGR3dF9uX3MxNikpKQpzdmludDE2X3Qgc3ZhZGR3dF9uX3MxNihzdmludDE2X3QsIGludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkd3Rfbl91MzIpKSkKc3Z1aW50MzJfdCBzdmFkZHd0X25fdTMyKHN2dWludDMyX3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGR3dF9uX3U2NCkpKQpzdnVpbnQ2NF90IHN2YWRkd3Rfbl91NjQoc3Z1aW50NjRfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZHd0X25fdTE2KSkpCnN2dWludDE2X3Qgc3ZhZGR3dF9uX3UxNihzdnVpbnQxNl90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGR3dF9zMzIpKSkKc3ZpbnQzMl90IHN2YWRkd3RfczMyKHN2aW50MzJfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGR3dF9zNjQpKSkKc3ZpbnQ2NF90IHN2YWRkd3RfczY0KHN2aW50NjRfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGR3dF9zMTYpKSkKc3ZpbnQxNl90IHN2YWRkd3RfczE2KHN2aW50MTZfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZHd0X3UzMikpKQpzdnVpbnQzMl90IHN2YWRkd3RfdTMyKHN2dWludDMyX3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZHd0X3U2NCkpKQpzdnVpbnQ2NF90IHN2YWRkd3RfdTY0KHN2dWludDY0X3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZHd0X3UxNikpKQpzdnVpbnQxNl90IHN2YWRkd3RfdTE2KHN2dWludDE2X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmNheF9uX3U4KSkpCnN2dWludDhfdCBzdmJjYXhfbl91OChzdnVpbnQ4X3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmNheF9uX3UzMikpKQpzdnVpbnQzMl90IHN2YmNheF9uX3UzMihzdnVpbnQzMl90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmNheF9uX3U2NCkpKQpzdnVpbnQ2NF90IHN2YmNheF9uX3U2NChzdnVpbnQ2NF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmNheF9uX3UxNikpKQpzdnVpbnQxNl90IHN2YmNheF9uX3UxNihzdnVpbnQxNl90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmNheF9uX3M4KSkpCnN2aW50OF90IHN2YmNheF9uX3M4KHN2aW50OF90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiY2F4X25fczMyKSkpCnN2aW50MzJfdCBzdmJjYXhfbl9zMzIoc3ZpbnQzMl90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJjYXhfbl9zNjQpKSkKc3ZpbnQ2NF90IHN2YmNheF9uX3M2NChzdmludDY0X3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmNheF9uX3MxNikpKQpzdmludDE2X3Qgc3ZiY2F4X25fczE2KHN2aW50MTZfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiY2F4X3U4KSkpCnN2dWludDhfdCBzdmJjYXhfdTgoc3Z1aW50OF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmNheF91MzIpKSkKc3Z1aW50MzJfdCBzdmJjYXhfdTMyKHN2dWludDMyX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJjYXhfdTY0KSkpCnN2dWludDY0X3Qgc3ZiY2F4X3U2NChzdnVpbnQ2NF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiY2F4X3UxNikpKQpzdnVpbnQxNl90IHN2YmNheF91MTYoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmNheF9zOCkpKQpzdmludDhfdCBzdmJjYXhfczgoc3ZpbnQ4X3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmNheF9zMzIpKSkKc3ZpbnQzMl90IHN2YmNheF9zMzIoc3ZpbnQzMl90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmNheF9zNjQpKSkKc3ZpbnQ2NF90IHN2YmNheF9zNjQoc3ZpbnQ2NF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmNheF9zMTYpKSkKc3ZpbnQxNl90IHN2YmNheF9zMTYoc3ZpbnQxNl90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YnNsMW5fbl91OCkpKQpzdnVpbnQ4X3Qgc3Zic2wxbl9uX3U4KHN2dWludDhfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zic2wxbl9uX3UzMikpKQpzdnVpbnQzMl90IHN2YnNsMW5fbl91MzIoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJzbDFuX25fdTY0KSkpCnN2dWludDY0X3Qgc3Zic2wxbl9uX3U2NChzdnVpbnQ2NF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YnNsMW5fbl91MTYpKSkKc3Z1aW50MTZfdCBzdmJzbDFuX25fdTE2KHN2dWludDE2X3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zic2wxbl9uX3M4KSkpCnN2aW50OF90IHN2YnNsMW5fbl9zOChzdmludDhfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YnNsMW5fbl9zMzIpKSkKc3ZpbnQzMl90IHN2YnNsMW5fbl9zMzIoc3ZpbnQzMl90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJzbDFuX25fczY0KSkpCnN2aW50NjRfdCBzdmJzbDFuX25fczY0KHN2aW50NjRfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zic2wxbl9uX3MxNikpKQpzdmludDE2X3Qgc3Zic2wxbl9uX3MxNihzdmludDE2X3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YnNsMW5fdTgpKSkKc3Z1aW50OF90IHN2YnNsMW5fdTgoc3Z1aW50OF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YnNsMW5fdTMyKSkpCnN2dWludDMyX3Qgc3Zic2wxbl91MzIoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YnNsMW5fdTY0KSkpCnN2dWludDY0X3Qgc3Zic2wxbl91NjQoc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YnNsMW5fdTE2KSkpCnN2dWludDE2X3Qgc3Zic2wxbl91MTYoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YnNsMW5fczgpKSkKc3ZpbnQ4X3Qgc3Zic2wxbl9zOChzdmludDhfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zic2wxbl9zMzIpKSkKc3ZpbnQzMl90IHN2YnNsMW5fczMyKHN2aW50MzJfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJzbDFuX3M2NCkpKQpzdmludDY0X3Qgc3Zic2wxbl9zNjQoc3ZpbnQ2NF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YnNsMW5fczE2KSkpCnN2aW50MTZfdCBzdmJzbDFuX3MxNihzdmludDE2X3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zic2wybl9uX3U4KSkpCnN2dWludDhfdCBzdmJzbDJuX25fdTgoc3Z1aW50OF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJzbDJuX25fdTMyKSkpCnN2dWludDMyX3Qgc3Zic2wybl9uX3UzMihzdnVpbnQzMl90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YnNsMm5fbl91NjQpKSkKc3Z1aW50NjRfdCBzdmJzbDJuX25fdTY0KHN2dWludDY0X3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zic2wybl9uX3UxNikpKQpzdnVpbnQxNl90IHN2YnNsMm5fbl91MTYoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJzbDJuX25fczgpKSkKc3ZpbnQ4X3Qgc3Zic2wybl9uX3M4KHN2aW50OF90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zic2wybl9uX3MzMikpKQpzdmludDMyX3Qgc3Zic2wybl9uX3MzMihzdmludDMyX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YnNsMm5fbl9zNjQpKSkKc3ZpbnQ2NF90IHN2YnNsMm5fbl9zNjQoc3ZpbnQ2NF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJzbDJuX25fczE2KSkpCnN2aW50MTZfdCBzdmJzbDJuX25fczE2KHN2aW50MTZfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zic2wybl91OCkpKQpzdnVpbnQ4X3Qgc3Zic2wybl91OChzdnVpbnQ4X3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zic2wybl91MzIpKSkKc3Z1aW50MzJfdCBzdmJzbDJuX3UzMihzdnVpbnQzMl90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zic2wybl91NjQpKSkKc3Z1aW50NjRfdCBzdmJzbDJuX3U2NChzdnVpbnQ2NF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zic2wybl91MTYpKSkKc3Z1aW50MTZfdCBzdmJzbDJuX3UxNihzdnVpbnQxNl90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zic2wybl9zOCkpKQpzdmludDhfdCBzdmJzbDJuX3M4KHN2aW50OF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJzbDJuX3MzMikpKQpzdmludDMyX3Qgc3Zic2wybl9zMzIoc3ZpbnQzMl90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YnNsMm5fczY0KSkpCnN2aW50NjRfdCBzdmJzbDJuX3M2NChzdmludDY0X3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zic2wybl9zMTYpKSkKc3ZpbnQxNl90IHN2YnNsMm5fczE2KHN2aW50MTZfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJzbF9uX3U4KSkpCnN2dWludDhfdCBzdmJzbF9uX3U4KHN2dWludDhfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zic2xfbl91MzIpKSkKc3Z1aW50MzJfdCBzdmJzbF9uX3UzMihzdnVpbnQzMl90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YnNsX25fdTY0KSkpCnN2dWludDY0X3Qgc3Zic2xfbl91NjQoc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJzbF9uX3UxNikpKQpzdnVpbnQxNl90IHN2YnNsX25fdTE2KHN2dWludDE2X3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zic2xfbl9zOCkpKQpzdmludDhfdCBzdmJzbF9uX3M4KHN2aW50OF90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zic2xfbl9zMzIpKSkKc3ZpbnQzMl90IHN2YnNsX25fczMyKHN2aW50MzJfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zic2xfbl9zNjQpKSkKc3ZpbnQ2NF90IHN2YnNsX25fczY0KHN2aW50NjRfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zic2xfbl9zMTYpKSkKc3ZpbnQxNl90IHN2YnNsX25fczE2KHN2aW50MTZfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zic2xfdTgpKSkKc3Z1aW50OF90IHN2YnNsX3U4KHN2dWludDhfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJzbF91MzIpKSkKc3Z1aW50MzJfdCBzdmJzbF91MzIoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YnNsX3U2NCkpKQpzdnVpbnQ2NF90IHN2YnNsX3U2NChzdnVpbnQ2NF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zic2xfdTE2KSkpCnN2dWludDE2X3Qgc3Zic2xfdTE2KHN2dWludDE2X3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJzbF9zOCkpKQpzdmludDhfdCBzdmJzbF9zOChzdmludDhfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zic2xfczMyKSkpCnN2aW50MzJfdCBzdmJzbF9zMzIoc3ZpbnQzMl90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YnNsX3M2NCkpKQpzdmludDY0X3Qgc3Zic2xfczY0KHN2aW50NjRfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJzbF9zMTYpKSkKc3ZpbnQxNl90IHN2YnNsX3MxNihzdmludDE2X3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjYWRkX3U4KSkpCnN2dWludDhfdCBzdmNhZGRfdTgoc3Z1aW50OF90LCBzdnVpbnQ4X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjYWRkX3UzMikpKQpzdnVpbnQzMl90IHN2Y2FkZF91MzIoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNhZGRfdTY0KSkpCnN2dWludDY0X3Qgc3ZjYWRkX3U2NChzdnVpbnQ2NF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2FkZF91MTYpKSkKc3Z1aW50MTZfdCBzdmNhZGRfdTE2KHN2dWludDE2X3QsIHN2dWludDE2X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjYWRkX3M4KSkpCnN2aW50OF90IHN2Y2FkZF9zOChzdmludDhfdCwgc3ZpbnQ4X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjYWRkX3MzMikpKQpzdmludDMyX3Qgc3ZjYWRkX3MzMihzdmludDMyX3QsIHN2aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNhZGRfczY0KSkpCnN2aW50NjRfdCBzdmNhZGRfczY0KHN2aW50NjRfdCwgc3ZpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2FkZF9zMTYpKSkKc3ZpbnQxNl90IHN2Y2FkZF9zMTYoc3ZpbnQxNl90LCBzdmludDE2X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjZG90X3MzMikpKQpzdmludDMyX3Qgc3ZjZG90X3MzMihzdmludDMyX3QsIHN2aW50OF90LCBzdmludDhfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNkb3RfczY0KSkpCnN2aW50NjRfdCBzdmNkb3RfczY0KHN2aW50NjRfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjZG90X2xhbmVfczMyKSkpCnN2aW50MzJfdCBzdmNkb3RfbGFuZV9zMzIoc3ZpbnQzMl90LCBzdmludDhfdCwgc3ZpbnQ4X3QsIHVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2RvdF9sYW5lX3M2NCkpKQpzdmludDY0X3Qgc3ZjZG90X2xhbmVfczY0KHN2aW50NjRfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QsIHVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21sYV91OCkpKQpzdnVpbnQ4X3Qgc3ZjbWxhX3U4KHN2dWludDhfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbWxhX3UzMikpKQpzdnVpbnQzMl90IHN2Y21sYV91MzIoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtbGFfdTY0KSkpCnN2dWludDY0X3Qgc3ZjbWxhX3U2NChzdnVpbnQ2NF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21sYV91MTYpKSkKc3Z1aW50MTZfdCBzdmNtbGFfdTE2KHN2dWludDE2X3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbWxhX3M4KSkpCnN2aW50OF90IHN2Y21sYV9zOChzdmludDhfdCwgc3ZpbnQ4X3QsIHN2aW50OF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21sYV9zMzIpKSkKc3ZpbnQzMl90IHN2Y21sYV9zMzIoc3ZpbnQzMl90LCBzdmludDMyX3QsIHN2aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtbGFfczY0KSkpCnN2aW50NjRfdCBzdmNtbGFfczY0KHN2aW50NjRfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbWxhX3MxNikpKQpzdmludDE2X3Qgc3ZjbWxhX3MxNihzdmludDE2X3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21sYV9sYW5lX3UzMikpKQpzdnVpbnQzMl90IHN2Y21sYV9sYW5lX3UzMihzdnVpbnQzMl90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90LCB1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtbGFfbGFuZV91MTYpKSkKc3Z1aW50MTZfdCBzdmNtbGFfbGFuZV91MTYoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgdWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbWxhX2xhbmVfczMyKSkpCnN2aW50MzJfdCBzdmNtbGFfbGFuZV9zMzIoc3ZpbnQzMl90LCBzdmludDMyX3QsIHN2aW50MzJfdCwgdWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbWxhX2xhbmVfczE2KSkpCnN2aW50MTZfdCBzdmNtbGFfbGFuZV9zMTYoc3ZpbnQxNl90LCBzdmludDE2X3QsIHN2aW50MTZfdCwgdWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRsdF9mMzJfZjE2X20pKSkKc3ZmbG9hdDMyX3Qgc3ZjdnRsdF9mMzJfZjE2X20oc3ZmbG9hdDMyX3QsIHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0bHRfZjMyX2YxNl94KSkpCnN2ZmxvYXQzMl90IHN2Y3Z0bHRfZjMyX2YxNl94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0bHRfZjY0X2YzMl9tKSkpCnN2ZmxvYXQ2NF90IHN2Y3Z0bHRfZjY0X2YzMl9tKHN2ZmxvYXQ2NF90LCBzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dGx0X2Y2NF9mMzJfeCkpKQpzdmZsb2F0NjRfdCBzdmN2dGx0X2Y2NF9mMzJfeChzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dG50X2YxNl9mMzJfbSkpKQpzdmZsb2F0MTZfdCBzdmN2dG50X2YxNl9mMzJfbShzdmZsb2F0MTZfdCwgc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRudF9mMzJfZjY0X20pKSkKc3ZmbG9hdDMyX3Qgc3ZjdnRudF9mMzJfZjY0X20oc3ZmbG9hdDMyX3QsIHN2Ym9vbF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0eF9mMzJfZjY0X20pKSkKc3ZmbG9hdDMyX3Qgc3ZjdnR4X2YzMl9mNjRfbShzdmZsb2F0MzJfdCwgc3Zib29sX3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnR4X2YzMl9mNjRfeCkpKQpzdmZsb2F0MzJfdCBzdmN2dHhfZjMyX2Y2NF94KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0eF9mMzJfZjY0X3opKSkKc3ZmbG9hdDMyX3Qgc3ZjdnR4X2YzMl9mNjRfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dHhudF9mMzJfZjY0X20pKSkKc3ZmbG9hdDMyX3Qgc3ZjdnR4bnRfZjMyX2Y2NF9tKHN2ZmxvYXQzMl90LCBzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcjNfbl91OCkpKQpzdnVpbnQ4X3Qgc3Zlb3IzX25fdTgoc3Z1aW50OF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcjNfbl91MzIpKSkKc3Z1aW50MzJfdCBzdmVvcjNfbl91MzIoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcjNfbl91NjQpKSkKc3Z1aW50NjRfdCBzdmVvcjNfbl91NjQoc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcjNfbl91MTYpKSkKc3Z1aW50MTZfdCBzdmVvcjNfbl91MTYoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcjNfbl9zOCkpKQpzdmludDhfdCBzdmVvcjNfbl9zOChzdmludDhfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9yM19uX3MzMikpKQpzdmludDMyX3Qgc3Zlb3IzX25fczMyKHN2aW50MzJfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3IzX25fczY0KSkpCnN2aW50NjRfdCBzdmVvcjNfbl9zNjQoc3ZpbnQ2NF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcjNfbl9zMTYpKSkKc3ZpbnQxNl90IHN2ZW9yM19uX3MxNihzdmludDE2X3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9yM191OCkpKQpzdnVpbnQ4X3Qgc3Zlb3IzX3U4KHN2dWludDhfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcjNfdTMyKSkpCnN2dWludDMyX3Qgc3Zlb3IzX3UzMihzdnVpbnQzMl90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3IzX3U2NCkpKQpzdnVpbnQ2NF90IHN2ZW9yM191NjQoc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9yM191MTYpKSkKc3Z1aW50MTZfdCBzdmVvcjNfdTE2KHN2dWludDE2X3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcjNfczgpKSkKc3ZpbnQ4X3Qgc3Zlb3IzX3M4KHN2aW50OF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcjNfczMyKSkpCnN2aW50MzJfdCBzdmVvcjNfczMyKHN2aW50MzJfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcjNfczY0KSkpCnN2aW50NjRfdCBzdmVvcjNfczY0KHN2aW50NjRfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcjNfczE2KSkpCnN2aW50MTZfdCBzdmVvcjNfczE2KHN2aW50MTZfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcmJ0X25fdTgpKSkKc3Z1aW50OF90IHN2ZW9yYnRfbl91OChzdnVpbnQ4X3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9yYnRfbl91MzIpKSkKc3Z1aW50MzJfdCBzdmVvcmJ0X25fdTMyKHN2dWludDMyX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3JidF9uX3U2NCkpKQpzdnVpbnQ2NF90IHN2ZW9yYnRfbl91NjQoc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcmJ0X25fdTE2KSkpCnN2dWludDE2X3Qgc3Zlb3JidF9uX3UxNihzdnVpbnQxNl90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9yYnRfbl9zOCkpKQpzdmludDhfdCBzdmVvcmJ0X25fczgoc3ZpbnQ4X3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcmJ0X25fczMyKSkpCnN2aW50MzJfdCBzdmVvcmJ0X25fczMyKHN2aW50MzJfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3JidF9uX3M2NCkpKQpzdmludDY0X3Qgc3Zlb3JidF9uX3M2NChzdmludDY0X3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9yYnRfbl9zMTYpKSkKc3ZpbnQxNl90IHN2ZW9yYnRfbl9zMTYoc3ZpbnQxNl90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcmJ0X3U4KSkpCnN2dWludDhfdCBzdmVvcmJ0X3U4KHN2dWludDhfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcmJ0X3UzMikpKQpzdnVpbnQzMl90IHN2ZW9yYnRfdTMyKHN2dWludDMyX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcmJ0X3U2NCkpKQpzdnVpbnQ2NF90IHN2ZW9yYnRfdTY0KHN2dWludDY0X3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcmJ0X3UxNikpKQpzdnVpbnQxNl90IHN2ZW9yYnRfdTE2KHN2dWludDE2X3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcmJ0X3M4KSkpCnN2aW50OF90IHN2ZW9yYnRfczgoc3ZpbnQ4X3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9yYnRfczMyKSkpCnN2aW50MzJfdCBzdmVvcmJ0X3MzMihzdmludDMyX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3JidF9zNjQpKSkKc3ZpbnQ2NF90IHN2ZW9yYnRfczY0KHN2aW50NjRfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcmJ0X3MxNikpKQpzdmludDE2X3Qgc3Zlb3JidF9zMTYoc3ZpbnQxNl90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9ydGJfbl91OCkpKQpzdnVpbnQ4X3Qgc3Zlb3J0Yl9uX3U4KHN2dWludDhfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3J0Yl9uX3UzMikpKQpzdnVpbnQzMl90IHN2ZW9ydGJfbl91MzIoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcnRiX25fdTY0KSkpCnN2dWludDY0X3Qgc3Zlb3J0Yl9uX3U2NChzdnVpbnQ2NF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9ydGJfbl91MTYpKSkKc3Z1aW50MTZfdCBzdmVvcnRiX25fdTE2KHN2dWludDE2X3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3J0Yl9uX3M4KSkpCnN2aW50OF90IHN2ZW9ydGJfbl9zOChzdmludDhfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9ydGJfbl9zMzIpKSkKc3ZpbnQzMl90IHN2ZW9ydGJfbl9zMzIoc3ZpbnQzMl90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcnRiX25fczY0KSkpCnN2aW50NjRfdCBzdmVvcnRiX25fczY0KHN2aW50NjRfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3J0Yl9uX3MxNikpKQpzdmludDE2X3Qgc3Zlb3J0Yl9uX3MxNihzdmludDE2X3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9ydGJfdTgpKSkKc3Z1aW50OF90IHN2ZW9ydGJfdTgoc3Z1aW50OF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9ydGJfdTMyKSkpCnN2dWludDMyX3Qgc3Zlb3J0Yl91MzIoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9ydGJfdTY0KSkpCnN2dWludDY0X3Qgc3Zlb3J0Yl91NjQoc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9ydGJfdTE2KSkpCnN2dWludDE2X3Qgc3Zlb3J0Yl91MTYoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9ydGJfczgpKSkKc3ZpbnQ4X3Qgc3Zlb3J0Yl9zOChzdmludDhfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3J0Yl9zMzIpKSkKc3ZpbnQzMl90IHN2ZW9ydGJfczMyKHN2aW50MzJfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcnRiX3M2NCkpKQpzdmludDY0X3Qgc3Zlb3J0Yl9zNjQoc3ZpbnQ2NF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9ydGJfczE2KSkpCnN2aW50MTZfdCBzdmVvcnRiX3MxNihzdmludDE2X3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZoYWRkX25fczhfbSkpKQpzdmludDhfdCBzdmhhZGRfbl9zOF9tKHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZoYWRkX25fczMyX20pKSkKc3ZpbnQzMl90IHN2aGFkZF9uX3MzMl9tKHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhhZGRfbl9zNjRfbSkpKQpzdmludDY0X3Qgc3ZoYWRkX25fczY0X20oc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aGFkZF9uX3MxNl9tKSkpCnN2aW50MTZfdCBzdmhhZGRfbl9zMTZfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZoYWRkX25fczhfeCkpKQpzdmludDhfdCBzdmhhZGRfbl9zOF94KHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZoYWRkX25fczMyX3gpKSkKc3ZpbnQzMl90IHN2aGFkZF9uX3MzMl94KHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhhZGRfbl9zNjRfeCkpKQpzdmludDY0X3Qgc3ZoYWRkX25fczY0X3goc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aGFkZF9uX3MxNl94KSkpCnN2aW50MTZfdCBzdmhhZGRfbl9zMTZfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZoYWRkX25fczhfeikpKQpzdmludDhfdCBzdmhhZGRfbl9zOF96KHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZoYWRkX25fczMyX3opKSkKc3ZpbnQzMl90IHN2aGFkZF9uX3MzMl96KHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhhZGRfbl9zNjRfeikpKQpzdmludDY0X3Qgc3ZoYWRkX25fczY0X3ooc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aGFkZF9uX3MxNl96KSkpCnN2aW50MTZfdCBzdmhhZGRfbl9zMTZfeihzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZoYWRkX25fdThfbSkpKQpzdnVpbnQ4X3Qgc3ZoYWRkX25fdThfbShzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZoYWRkX25fdTMyX20pKSkKc3Z1aW50MzJfdCBzdmhhZGRfbl91MzJfbShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhhZGRfbl91NjRfbSkpKQpzdnVpbnQ2NF90IHN2aGFkZF9uX3U2NF9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aGFkZF9uX3UxNl9tKSkpCnN2dWludDE2X3Qgc3ZoYWRkX25fdTE2X20oc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZoYWRkX25fdThfeCkpKQpzdnVpbnQ4X3Qgc3ZoYWRkX25fdThfeChzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZoYWRkX25fdTMyX3gpKSkKc3Z1aW50MzJfdCBzdmhhZGRfbl91MzJfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhhZGRfbl91NjRfeCkpKQpzdnVpbnQ2NF90IHN2aGFkZF9uX3U2NF94KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aGFkZF9uX3UxNl94KSkpCnN2dWludDE2X3Qgc3ZoYWRkX25fdTE2X3goc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZoYWRkX25fdThfeikpKQpzdnVpbnQ4X3Qgc3ZoYWRkX25fdThfeihzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZoYWRkX25fdTMyX3opKSkKc3Z1aW50MzJfdCBzdmhhZGRfbl91MzJfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhhZGRfbl91NjRfeikpKQpzdnVpbnQ2NF90IHN2aGFkZF9uX3U2NF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aGFkZF9uX3UxNl96KSkpCnN2dWludDE2X3Qgc3ZoYWRkX25fdTE2X3ooc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZoYWRkX3M4X20pKSkKc3ZpbnQ4X3Qgc3ZoYWRkX3M4X20oc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aGFkZF9zMzJfbSkpKQpzdmludDMyX3Qgc3ZoYWRkX3MzMl9tKHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aGFkZF9zNjRfbSkpKQpzdmludDY0X3Qgc3ZoYWRkX3M2NF9tKHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aGFkZF9zMTZfbSkpKQpzdmludDE2X3Qgc3ZoYWRkX3MxNl9tKHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aGFkZF9zOF94KSkpCnN2aW50OF90IHN2aGFkZF9zOF94KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhhZGRfczMyX3gpKSkKc3ZpbnQzMl90IHN2aGFkZF9zMzJfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhhZGRfczY0X3gpKSkKc3ZpbnQ2NF90IHN2aGFkZF9zNjRfeChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhhZGRfczE2X3gpKSkKc3ZpbnQxNl90IHN2aGFkZF9zMTZfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhhZGRfczhfeikpKQpzdmludDhfdCBzdmhhZGRfczhfeihzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZoYWRkX3MzMl96KSkpCnN2aW50MzJfdCBzdmhhZGRfczMyX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZoYWRkX3M2NF96KSkpCnN2aW50NjRfdCBzdmhhZGRfczY0X3ooc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZoYWRkX3MxNl96KSkpCnN2aW50MTZfdCBzdmhhZGRfczE2X3ooc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZoYWRkX3U4X20pKSkKc3Z1aW50OF90IHN2aGFkZF91OF9tKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aGFkZF91MzJfbSkpKQpzdnVpbnQzMl90IHN2aGFkZF91MzJfbShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aGFkZF91NjRfbSkpKQpzdnVpbnQ2NF90IHN2aGFkZF91NjRfbShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aGFkZF91MTZfbSkpKQpzdnVpbnQxNl90IHN2aGFkZF91MTZfbShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aGFkZF91OF94KSkpCnN2dWludDhfdCBzdmhhZGRfdThfeChzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhhZGRfdTMyX3gpKSkKc3Z1aW50MzJfdCBzdmhhZGRfdTMyX3goc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhhZGRfdTY0X3gpKSkKc3Z1aW50NjRfdCBzdmhhZGRfdTY0X3goc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhhZGRfdTE2X3gpKSkKc3Z1aW50MTZfdCBzdmhhZGRfdTE2X3goc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhhZGRfdThfeikpKQpzdnVpbnQ4X3Qgc3ZoYWRkX3U4X3ooc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZoYWRkX3UzMl96KSkpCnN2dWludDMyX3Qgc3ZoYWRkX3UzMl96KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZoYWRkX3U2NF96KSkpCnN2dWludDY0X3Qgc3ZoYWRkX3U2NF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZoYWRkX3UxNl96KSkpCnN2dWludDE2X3Qgc3ZoYWRkX3UxNl96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZoaXN0Y250X3UzMl96KSkpCnN2dWludDMyX3Qgc3ZoaXN0Y250X3UzMl96KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZoaXN0Y250X3U2NF96KSkpCnN2dWludDY0X3Qgc3ZoaXN0Y250X3U2NF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZoaXN0Y250X3MzMl96KSkpCnN2dWludDMyX3Qgc3ZoaXN0Y250X3MzMl96KHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aGlzdGNudF9zNjRfeikpKQpzdnVpbnQ2NF90IHN2aGlzdGNudF9zNjRfeihzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhpc3RzZWdfdTgpKSkKc3Z1aW50OF90IHN2aGlzdHNlZ191OChzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aGlzdHNlZ19zOCkpKQpzdnVpbnQ4X3Qgc3ZoaXN0c2VnX3M4KHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1Yl9uX3M4X20pKSkKc3ZpbnQ4X3Qgc3Zoc3ViX25fczhfbShzdmJvb2xfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1Yl9uX3MzMl9tKSkpCnN2aW50MzJfdCBzdmhzdWJfbl9zMzJfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3ViX25fczY0X20pKSkKc3ZpbnQ2NF90IHN2aHN1Yl9uX3M2NF9tKHN2Ym9vbF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJfbl9zMTZfbSkpKQpzdmludDE2X3Qgc3Zoc3ViX25fczE2X20oc3Zib29sX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1Yl9uX3M4X3gpKSkKc3ZpbnQ4X3Qgc3Zoc3ViX25fczhfeChzdmJvb2xfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1Yl9uX3MzMl94KSkpCnN2aW50MzJfdCBzdmhzdWJfbl9zMzJfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3ViX25fczY0X3gpKSkKc3ZpbnQ2NF90IHN2aHN1Yl9uX3M2NF94KHN2Ym9vbF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJfbl9zMTZfeCkpKQpzdmludDE2X3Qgc3Zoc3ViX25fczE2X3goc3Zib29sX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1Yl9uX3M4X3opKSkKc3ZpbnQ4X3Qgc3Zoc3ViX25fczhfeihzdmJvb2xfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1Yl9uX3MzMl96KSkpCnN2aW50MzJfdCBzdmhzdWJfbl9zMzJfeihzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3ViX25fczY0X3opKSkKc3ZpbnQ2NF90IHN2aHN1Yl9uX3M2NF96KHN2Ym9vbF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJfbl9zMTZfeikpKQpzdmludDE2X3Qgc3Zoc3ViX25fczE2X3ooc3Zib29sX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1Yl9uX3U4X20pKSkKc3Z1aW50OF90IHN2aHN1Yl9uX3U4X20oc3Zib29sX3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1Yl9uX3UzMl9tKSkpCnN2dWludDMyX3Qgc3Zoc3ViX25fdTMyX20oc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3ViX25fdTY0X20pKSkKc3Z1aW50NjRfdCBzdmhzdWJfbl91NjRfbShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJfbl91MTZfbSkpKQpzdnVpbnQxNl90IHN2aHN1Yl9uX3UxNl9tKHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1Yl9uX3U4X3gpKSkKc3Z1aW50OF90IHN2aHN1Yl9uX3U4X3goc3Zib29sX3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1Yl9uX3UzMl94KSkpCnN2dWludDMyX3Qgc3Zoc3ViX25fdTMyX3goc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3ViX25fdTY0X3gpKSkKc3Z1aW50NjRfdCBzdmhzdWJfbl91NjRfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJfbl91MTZfeCkpKQpzdnVpbnQxNl90IHN2aHN1Yl9uX3UxNl94KHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1Yl9uX3U4X3opKSkKc3Z1aW50OF90IHN2aHN1Yl9uX3U4X3ooc3Zib29sX3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1Yl9uX3UzMl96KSkpCnN2dWludDMyX3Qgc3Zoc3ViX25fdTMyX3ooc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3ViX25fdTY0X3opKSkKc3Z1aW50NjRfdCBzdmhzdWJfbl91NjRfeihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJfbl91MTZfeikpKQpzdnVpbnQxNl90IHN2aHN1Yl9uX3UxNl96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1Yl9zOF9tKSkpCnN2aW50OF90IHN2aHN1Yl9zOF9tKHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJfczMyX20pKSkKc3ZpbnQzMl90IHN2aHN1Yl9zMzJfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJfczY0X20pKSkKc3ZpbnQ2NF90IHN2aHN1Yl9zNjRfbShzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJfczE2X20pKSkKc3ZpbnQxNl90IHN2aHN1Yl9zMTZfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJfczhfeCkpKQpzdmludDhfdCBzdmhzdWJfczhfeChzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3ViX3MzMl94KSkpCnN2aW50MzJfdCBzdmhzdWJfczMyX3goc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3ViX3M2NF94KSkpCnN2aW50NjRfdCBzdmhzdWJfczY0X3goc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3ViX3MxNl94KSkpCnN2aW50MTZfdCBzdmhzdWJfczE2X3goc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3ViX3M4X3opKSkKc3ZpbnQ4X3Qgc3Zoc3ViX3M4X3ooc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1Yl9zMzJfeikpKQpzdmludDMyX3Qgc3Zoc3ViX3MzMl96KHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1Yl9zNjRfeikpKQpzdmludDY0X3Qgc3Zoc3ViX3M2NF96KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1Yl9zMTZfeikpKQpzdmludDE2X3Qgc3Zoc3ViX3MxNl96KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1Yl91OF9tKSkpCnN2dWludDhfdCBzdmhzdWJfdThfbShzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJfdTMyX20pKSkKc3Z1aW50MzJfdCBzdmhzdWJfdTMyX20oc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJfdTY0X20pKSkKc3Z1aW50NjRfdCBzdmhzdWJfdTY0X20oc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJfdTE2X20pKSkKc3Z1aW50MTZfdCBzdmhzdWJfdTE2X20oc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJfdThfeCkpKQpzdnVpbnQ4X3Qgc3Zoc3ViX3U4X3goc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3ViX3UzMl94KSkpCnN2dWludDMyX3Qgc3Zoc3ViX3UzMl94KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3ViX3U2NF94KSkpCnN2dWludDY0X3Qgc3Zoc3ViX3U2NF94KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3ViX3UxNl94KSkpCnN2dWludDE2X3Qgc3Zoc3ViX3UxNl94KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3ViX3U4X3opKSkKc3Z1aW50OF90IHN2aHN1Yl91OF96KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1Yl91MzJfeikpKQpzdnVpbnQzMl90IHN2aHN1Yl91MzJfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1Yl91NjRfeikpKQpzdnVpbnQ2NF90IHN2aHN1Yl91NjRfeihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1Yl91MTZfeikpKQpzdnVpbnQxNl90IHN2aHN1Yl91MTZfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1YnJfbl9zOF9tKSkpCnN2aW50OF90IHN2aHN1YnJfbl9zOF9tKHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3Vicl9uX3MzMl9tKSkpCnN2aW50MzJfdCBzdmhzdWJyX25fczMyX20oc3Zib29sX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1YnJfbl9zNjRfbSkpKQpzdmludDY0X3Qgc3Zoc3Vicl9uX3M2NF9tKHN2Ym9vbF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJyX25fczE2X20pKSkKc3ZpbnQxNl90IHN2aHN1YnJfbl9zMTZfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3Vicl9uX3M4X3gpKSkKc3ZpbnQ4X3Qgc3Zoc3Vicl9uX3M4X3goc3Zib29sX3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJyX25fczMyX3gpKSkKc3ZpbnQzMl90IHN2aHN1YnJfbl9zMzJfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3Vicl9uX3M2NF94KSkpCnN2aW50NjRfdCBzdmhzdWJyX25fczY0X3goc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1YnJfbl9zMTZfeCkpKQpzdmludDE2X3Qgc3Zoc3Vicl9uX3MxNl94KHN2Ym9vbF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJyX25fczhfeikpKQpzdmludDhfdCBzdmhzdWJyX25fczhfeihzdmJvb2xfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1YnJfbl9zMzJfeikpKQpzdmludDMyX3Qgc3Zoc3Vicl9uX3MzMl96KHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJyX25fczY0X3opKSkKc3ZpbnQ2NF90IHN2aHN1YnJfbl9zNjRfeihzdmJvb2xfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3Vicl9uX3MxNl96KSkpCnN2aW50MTZfdCBzdmhzdWJyX25fczE2X3ooc3Zib29sX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1YnJfbl91OF9tKSkpCnN2dWludDhfdCBzdmhzdWJyX25fdThfbShzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3Vicl9uX3UzMl9tKSkpCnN2dWludDMyX3Qgc3Zoc3Vicl9uX3UzMl9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1YnJfbl91NjRfbSkpKQpzdnVpbnQ2NF90IHN2aHN1YnJfbl91NjRfbShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJyX25fdTE2X20pKSkKc3Z1aW50MTZfdCBzdmhzdWJyX25fdTE2X20oc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3Vicl9uX3U4X3gpKSkKc3Z1aW50OF90IHN2aHN1YnJfbl91OF94KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJyX25fdTMyX3gpKSkKc3Z1aW50MzJfdCBzdmhzdWJyX25fdTMyX3goc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3Vicl9uX3U2NF94KSkpCnN2dWludDY0X3Qgc3Zoc3Vicl9uX3U2NF94KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1YnJfbl91MTZfeCkpKQpzdnVpbnQxNl90IHN2aHN1YnJfbl91MTZfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJyX25fdThfeikpKQpzdnVpbnQ4X3Qgc3Zoc3Vicl9uX3U4X3ooc3Zib29sX3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1YnJfbl91MzJfeikpKQpzdnVpbnQzMl90IHN2aHN1YnJfbl91MzJfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJyX25fdTY0X3opKSkKc3Z1aW50NjRfdCBzdmhzdWJyX25fdTY0X3ooc3Zib29sX3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3Vicl9uX3UxNl96KSkpCnN2dWludDE2X3Qgc3Zoc3Vicl9uX3UxNl96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1YnJfczhfbSkpKQpzdmludDhfdCBzdmhzdWJyX3M4X20oc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1YnJfczMyX20pKSkKc3ZpbnQzMl90IHN2aHN1YnJfczMyX20oc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3Vicl9zNjRfbSkpKQpzdmludDY0X3Qgc3Zoc3Vicl9zNjRfbShzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJyX3MxNl9tKSkpCnN2aW50MTZfdCBzdmhzdWJyX3MxNl9tKHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1YnJfczhfeCkpKQpzdmludDhfdCBzdmhzdWJyX3M4X3goc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1YnJfczMyX3gpKSkKc3ZpbnQzMl90IHN2aHN1YnJfczMyX3goc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3Vicl9zNjRfeCkpKQpzdmludDY0X3Qgc3Zoc3Vicl9zNjRfeChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJyX3MxNl94KSkpCnN2aW50MTZfdCBzdmhzdWJyX3MxNl94KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1YnJfczhfeikpKQpzdmludDhfdCBzdmhzdWJyX3M4X3ooc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1YnJfczMyX3opKSkKc3ZpbnQzMl90IHN2aHN1YnJfczMyX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3Vicl9zNjRfeikpKQpzdmludDY0X3Qgc3Zoc3Vicl9zNjRfeihzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJyX3MxNl96KSkpCnN2aW50MTZfdCBzdmhzdWJyX3MxNl96KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1YnJfdThfbSkpKQpzdnVpbnQ4X3Qgc3Zoc3Vicl91OF9tKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1YnJfdTMyX20pKSkKc3Z1aW50MzJfdCBzdmhzdWJyX3UzMl9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3Vicl91NjRfbSkpKQpzdnVpbnQ2NF90IHN2aHN1YnJfdTY0X20oc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJyX3UxNl9tKSkpCnN2dWludDE2X3Qgc3Zoc3Vicl91MTZfbShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1YnJfdThfeCkpKQpzdnVpbnQ4X3Qgc3Zoc3Vicl91OF94KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1YnJfdTMyX3gpKSkKc3Z1aW50MzJfdCBzdmhzdWJyX3UzMl94KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3Vicl91NjRfeCkpKQpzdnVpbnQ2NF90IHN2aHN1YnJfdTY0X3goc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJyX3UxNl94KSkpCnN2dWludDE2X3Qgc3Zoc3Vicl91MTZfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1YnJfdThfeikpKQpzdnVpbnQ4X3Qgc3Zoc3Vicl91OF96KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1YnJfdTMyX3opKSkKc3Z1aW50MzJfdCBzdmhzdWJyX3UzMl96KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3Vicl91NjRfeikpKQpzdnVpbnQ2NF90IHN2aHN1YnJfdTY0X3ooc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJyX3UxNl96KSkpCnN2dWludDE2X3Qgc3Zoc3Vicl91MTZfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfZ2F0aGVyX3UzMmJhc2VfaW5kZXhfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZG50MV9nYXRoZXJfdTMyYmFzZV9pbmRleF91MzIoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxX2dhdGhlcl91NjRiYXNlX2luZGV4X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRudDFfZ2F0aGVyX3U2NGJhc2VfaW5kZXhfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MV9nYXRoZXJfdTY0YmFzZV9pbmRleF9mNjQpKSkKc3ZmbG9hdDY0X3Qgc3ZsZG50MV9nYXRoZXJfdTY0YmFzZV9pbmRleF9mNjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxX2dhdGhlcl91MzJiYXNlX2luZGV4X2YzMikpKQpzdmZsb2F0MzJfdCBzdmxkbnQxX2dhdGhlcl91MzJiYXNlX2luZGV4X2YzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfZ2F0aGVyX3UzMmJhc2VfaW5kZXhfczMyKSkpCnN2aW50MzJfdCBzdmxkbnQxX2dhdGhlcl91MzJiYXNlX2luZGV4X3MzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfZ2F0aGVyX3U2NGJhc2VfaW5kZXhfczY0KSkpCnN2aW50NjRfdCBzdmxkbnQxX2dhdGhlcl91NjRiYXNlX2luZGV4X3M2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfZ2F0aGVyX3UzMmJhc2Vfb2Zmc2V0X3UzMikpKQpzdnVpbnQzMl90IHN2bGRudDFfZ2F0aGVyX3UzMmJhc2Vfb2Zmc2V0X3UzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfZ2F0aGVyX3U2NGJhc2Vfb2Zmc2V0X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRudDFfZ2F0aGVyX3U2NGJhc2Vfb2Zmc2V0X3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfZ2F0aGVyX3U2NGJhc2Vfb2Zmc2V0X2Y2NCkpKQpzdmZsb2F0NjRfdCBzdmxkbnQxX2dhdGhlcl91NjRiYXNlX29mZnNldF9mNjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxX2dhdGhlcl91MzJiYXNlX29mZnNldF9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3ZsZG50MV9nYXRoZXJfdTMyYmFzZV9vZmZzZXRfZjMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MV9nYXRoZXJfdTMyYmFzZV9vZmZzZXRfczMyKSkpCnN2aW50MzJfdCBzdmxkbnQxX2dhdGhlcl91MzJiYXNlX29mZnNldF9zMzIoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxX2dhdGhlcl91NjRiYXNlX29mZnNldF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRudDFfZ2F0aGVyX3U2NGJhc2Vfb2Zmc2V0X3M2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfZ2F0aGVyX3UzMmJhc2VfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZG50MV9nYXRoZXJfdTMyYmFzZV91MzIoc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxX2dhdGhlcl91NjRiYXNlX3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRudDFfZ2F0aGVyX3U2NGJhc2VfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MV9nYXRoZXJfdTY0YmFzZV9mNjQpKSkKc3ZmbG9hdDY0X3Qgc3ZsZG50MV9nYXRoZXJfdTY0YmFzZV9mNjQoc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxX2dhdGhlcl91MzJiYXNlX2YzMikpKQpzdmZsb2F0MzJfdCBzdmxkbnQxX2dhdGhlcl91MzJiYXNlX2YzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfZ2F0aGVyX3UzMmJhc2VfczMyKSkpCnN2aW50MzJfdCBzdmxkbnQxX2dhdGhlcl91MzJiYXNlX3MzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfZ2F0aGVyX3U2NGJhc2VfczY0KSkpCnN2aW50NjRfdCBzdmxkbnQxX2dhdGhlcl91NjRiYXNlX3M2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfZ2F0aGVyX3M2NGluZGV4X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRudDFfZ2F0aGVyX3M2NGluZGV4X3U2NChzdmJvb2xfdCwgdWludDY0X3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MV9nYXRoZXJfczY0aW5kZXhfZjY0KSkpCnN2ZmxvYXQ2NF90IHN2bGRudDFfZ2F0aGVyX3M2NGluZGV4X2Y2NChzdmJvb2xfdCwgZmxvYXQ2NF90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfZ2F0aGVyX3M2NGluZGV4X3M2NCkpKQpzdmludDY0X3Qgc3ZsZG50MV9nYXRoZXJfczY0aW5kZXhfczY0KHN2Ym9vbF90LCBpbnQ2NF90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfZ2F0aGVyX3U2NGluZGV4X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRudDFfZ2F0aGVyX3U2NGluZGV4X3U2NChzdmJvb2xfdCwgdWludDY0X3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfZ2F0aGVyX3U2NGluZGV4X2Y2NCkpKQpzdmZsb2F0NjRfdCBzdmxkbnQxX2dhdGhlcl91NjRpbmRleF9mNjQoc3Zib29sX3QsIGZsb2F0NjRfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MV9nYXRoZXJfdTY0aW5kZXhfczY0KSkpCnN2aW50NjRfdCBzdmxkbnQxX2dhdGhlcl91NjRpbmRleF9zNjQoc3Zib29sX3QsIGludDY0X3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfZ2F0aGVyX3UzMm9mZnNldF91MzIpKSkKc3Z1aW50MzJfdCBzdmxkbnQxX2dhdGhlcl91MzJvZmZzZXRfdTMyKHN2Ym9vbF90LCB1aW50MzJfdCBjb25zdCAqLCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MV9nYXRoZXJfdTMyb2Zmc2V0X2YzMikpKQpzdmZsb2F0MzJfdCBzdmxkbnQxX2dhdGhlcl91MzJvZmZzZXRfZjMyKHN2Ym9vbF90LCBmbG9hdDMyX3QgY29uc3QgKiwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfZ2F0aGVyX3UzMm9mZnNldF9zMzIpKSkKc3ZpbnQzMl90IHN2bGRudDFfZ2F0aGVyX3UzMm9mZnNldF9zMzIoc3Zib29sX3QsIGludDMyX3QgY29uc3QgKiwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfZ2F0aGVyX3M2NG9mZnNldF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkbnQxX2dhdGhlcl9zNjRvZmZzZXRfdTY0KHN2Ym9vbF90LCB1aW50NjRfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxX2dhdGhlcl9zNjRvZmZzZXRfZjY0KSkpCnN2ZmxvYXQ2NF90IHN2bGRudDFfZ2F0aGVyX3M2NG9mZnNldF9mNjQoc3Zib29sX3QsIGZsb2F0NjRfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxX2dhdGhlcl9zNjRvZmZzZXRfczY0KSkpCnN2aW50NjRfdCBzdmxkbnQxX2dhdGhlcl9zNjRvZmZzZXRfczY0KHN2Ym9vbF90LCBpbnQ2NF90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfZ2F0aGVyX3U2NG9mZnNldF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkbnQxX2dhdGhlcl91NjRvZmZzZXRfdTY0KHN2Ym9vbF90LCB1aW50NjRfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MV9nYXRoZXJfdTY0b2Zmc2V0X2Y2NCkpKQpzdmZsb2F0NjRfdCBzdmxkbnQxX2dhdGhlcl91NjRvZmZzZXRfZjY0KHN2Ym9vbF90LCBmbG9hdDY0X3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfZ2F0aGVyX3U2NG9mZnNldF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRudDFfZ2F0aGVyX3U2NG9mZnNldF9zNjQoc3Zib29sX3QsIGludDY0X3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFzYl9nYXRoZXJfdTMyYmFzZV9vZmZzZXRfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZG50MXNiX2dhdGhlcl91MzJiYXNlX29mZnNldF91MzIoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxc2JfZ2F0aGVyX3U2NGJhc2Vfb2Zmc2V0X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRudDFzYl9nYXRoZXJfdTY0YmFzZV9vZmZzZXRfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXNiX2dhdGhlcl91MzJiYXNlX29mZnNldF9zMzIpKSkKc3ZpbnQzMl90IHN2bGRudDFzYl9nYXRoZXJfdTMyYmFzZV9vZmZzZXRfczMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXNiX2dhdGhlcl91NjRiYXNlX29mZnNldF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRudDFzYl9nYXRoZXJfdTY0YmFzZV9vZmZzZXRfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXNiX2dhdGhlcl91MzJiYXNlX3UzMikpKQpzdnVpbnQzMl90IHN2bGRudDFzYl9nYXRoZXJfdTMyYmFzZV91MzIoc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxc2JfZ2F0aGVyX3U2NGJhc2VfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZG50MXNiX2dhdGhlcl91NjRiYXNlX3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFzYl9nYXRoZXJfdTMyYmFzZV9zMzIpKSkKc3ZpbnQzMl90IHN2bGRudDFzYl9nYXRoZXJfdTMyYmFzZV9zMzIoc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxc2JfZ2F0aGVyX3U2NGJhc2VfczY0KSkpCnN2aW50NjRfdCBzdmxkbnQxc2JfZ2F0aGVyX3U2NGJhc2VfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXNiX2dhdGhlcl91MzJvZmZzZXRfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZG50MXNiX2dhdGhlcl91MzJvZmZzZXRfdTMyKHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKiwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFzYl9nYXRoZXJfdTMyb2Zmc2V0X3MzMikpKQpzdmludDMyX3Qgc3ZsZG50MXNiX2dhdGhlcl91MzJvZmZzZXRfczMyKHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKiwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFzYl9nYXRoZXJfczY0b2Zmc2V0X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRudDFzYl9nYXRoZXJfczY0b2Zmc2V0X3U2NChzdmJvb2xfdCwgaW50OF90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFzYl9nYXRoZXJfczY0b2Zmc2V0X3M2NCkpKQpzdmludDY0X3Qgc3ZsZG50MXNiX2dhdGhlcl9zNjRvZmZzZXRfczY0KHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXNiX2dhdGhlcl91NjRvZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZG50MXNiX2dhdGhlcl91NjRvZmZzZXRfdTY0KHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFzYl9nYXRoZXJfdTY0b2Zmc2V0X3M2NCkpKQpzdmludDY0X3Qgc3ZsZG50MXNiX2dhdGhlcl91NjRvZmZzZXRfczY0KHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFzaF9nYXRoZXJfdTMyYmFzZV9pbmRleF91MzIpKSkKc3Z1aW50MzJfdCBzdmxkbnQxc2hfZ2F0aGVyX3UzMmJhc2VfaW5kZXhfdTMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXNoX2dhdGhlcl91NjRiYXNlX2luZGV4X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRudDFzaF9nYXRoZXJfdTY0YmFzZV9pbmRleF91NjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxc2hfZ2F0aGVyX3UzMmJhc2VfaW5kZXhfczMyKSkpCnN2aW50MzJfdCBzdmxkbnQxc2hfZ2F0aGVyX3UzMmJhc2VfaW5kZXhfczMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXNoX2dhdGhlcl91NjRiYXNlX2luZGV4X3M2NCkpKQpzdmludDY0X3Qgc3ZsZG50MXNoX2dhdGhlcl91NjRiYXNlX2luZGV4X3M2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFzaF9nYXRoZXJfdTMyYmFzZV9vZmZzZXRfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZG50MXNoX2dhdGhlcl91MzJiYXNlX29mZnNldF91MzIoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxc2hfZ2F0aGVyX3U2NGJhc2Vfb2Zmc2V0X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRudDFzaF9nYXRoZXJfdTY0YmFzZV9vZmZzZXRfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXNoX2dhdGhlcl91MzJiYXNlX29mZnNldF9zMzIpKSkKc3ZpbnQzMl90IHN2bGRudDFzaF9nYXRoZXJfdTMyYmFzZV9vZmZzZXRfczMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXNoX2dhdGhlcl91NjRiYXNlX29mZnNldF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRudDFzaF9nYXRoZXJfdTY0YmFzZV9vZmZzZXRfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXNoX2dhdGhlcl91MzJiYXNlX3UzMikpKQpzdnVpbnQzMl90IHN2bGRudDFzaF9nYXRoZXJfdTMyYmFzZV91MzIoc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxc2hfZ2F0aGVyX3U2NGJhc2VfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZG50MXNoX2dhdGhlcl91NjRiYXNlX3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFzaF9nYXRoZXJfdTMyYmFzZV9zMzIpKSkKc3ZpbnQzMl90IHN2bGRudDFzaF9nYXRoZXJfdTMyYmFzZV9zMzIoc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxc2hfZ2F0aGVyX3U2NGJhc2VfczY0KSkpCnN2aW50NjRfdCBzdmxkbnQxc2hfZ2F0aGVyX3U2NGJhc2VfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXNoX2dhdGhlcl9zNjRpbmRleF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkbnQxc2hfZ2F0aGVyX3M2NGluZGV4X3U2NChzdmJvb2xfdCwgaW50MTZfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxc2hfZ2F0aGVyX3M2NGluZGV4X3M2NCkpKQpzdmludDY0X3Qgc3ZsZG50MXNoX2dhdGhlcl9zNjRpbmRleF9zNjQoc3Zib29sX3QsIGludDE2X3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXNoX2dhdGhlcl91NjRpbmRleF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkbnQxc2hfZ2F0aGVyX3U2NGluZGV4X3U2NChzdmJvb2xfdCwgaW50MTZfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXNoX2dhdGhlcl91NjRpbmRleF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRudDFzaF9nYXRoZXJfdTY0aW5kZXhfczY0KHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxc2hfZ2F0aGVyX3UzMm9mZnNldF91MzIpKSkKc3Z1aW50MzJfdCBzdmxkbnQxc2hfZ2F0aGVyX3UzMm9mZnNldF91MzIoc3Zib29sX3QsIGludDE2X3QgY29uc3QgKiwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFzaF9nYXRoZXJfdTMyb2Zmc2V0X3MzMikpKQpzdmludDMyX3Qgc3ZsZG50MXNoX2dhdGhlcl91MzJvZmZzZXRfczMyKHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICosIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxc2hfZ2F0aGVyX3M2NG9mZnNldF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkbnQxc2hfZ2F0aGVyX3M2NG9mZnNldF91NjQoc3Zib29sX3QsIGludDE2X3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXNoX2dhdGhlcl9zNjRvZmZzZXRfczY0KSkpCnN2aW50NjRfdCBzdmxkbnQxc2hfZ2F0aGVyX3M2NG9mZnNldF9zNjQoc3Zib29sX3QsIGludDE2X3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXNoX2dhdGhlcl91NjRvZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZG50MXNoX2dhdGhlcl91NjRvZmZzZXRfdTY0KHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxc2hfZ2F0aGVyX3U2NG9mZnNldF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRudDFzaF9nYXRoZXJfdTY0b2Zmc2V0X3M2NChzdmJvb2xfdCwgaW50MTZfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXN3X2dhdGhlcl91NjRiYXNlX2luZGV4X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRudDFzd19nYXRoZXJfdTY0YmFzZV9pbmRleF91NjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxc3dfZ2F0aGVyX3U2NGJhc2VfaW5kZXhfczY0KSkpCnN2aW50NjRfdCBzdmxkbnQxc3dfZ2F0aGVyX3U2NGJhc2VfaW5kZXhfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXN3X2dhdGhlcl91NjRiYXNlX29mZnNldF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkbnQxc3dfZ2F0aGVyX3U2NGJhc2Vfb2Zmc2V0X3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFzd19nYXRoZXJfdTY0YmFzZV9vZmZzZXRfczY0KSkpCnN2aW50NjRfdCBzdmxkbnQxc3dfZ2F0aGVyX3U2NGJhc2Vfb2Zmc2V0X3M2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFzd19nYXRoZXJfdTY0YmFzZV91NjQpKSkKc3Z1aW50NjRfdCBzdmxkbnQxc3dfZ2F0aGVyX3U2NGJhc2VfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXN3X2dhdGhlcl91NjRiYXNlX3M2NCkpKQpzdmludDY0X3Qgc3ZsZG50MXN3X2dhdGhlcl91NjRiYXNlX3M2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFzd19nYXRoZXJfczY0aW5kZXhfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZG50MXN3X2dhdGhlcl9zNjRpbmRleF91NjQoc3Zib29sX3QsIGludDMyX3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXN3X2dhdGhlcl9zNjRpbmRleF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRudDFzd19nYXRoZXJfczY0aW5kZXhfczY0KHN2Ym9vbF90LCBpbnQzMl90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFzd19nYXRoZXJfdTY0aW5kZXhfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZG50MXN3X2dhdGhlcl91NjRpbmRleF91NjQoc3Zib29sX3QsIGludDMyX3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFzd19nYXRoZXJfdTY0aW5kZXhfczY0KSkpCnN2aW50NjRfdCBzdmxkbnQxc3dfZ2F0aGVyX3U2NGluZGV4X3M2NChzdmJvb2xfdCwgaW50MzJfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXN3X2dhdGhlcl9zNjRvZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZG50MXN3X2dhdGhlcl9zNjRvZmZzZXRfdTY0KHN2Ym9vbF90LCBpbnQzMl90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFzd19nYXRoZXJfczY0b2Zmc2V0X3M2NCkpKQpzdmludDY0X3Qgc3ZsZG50MXN3X2dhdGhlcl9zNjRvZmZzZXRfczY0KHN2Ym9vbF90LCBpbnQzMl90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFzd19nYXRoZXJfdTY0b2Zmc2V0X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRudDFzd19nYXRoZXJfdTY0b2Zmc2V0X3U2NChzdmJvb2xfdCwgaW50MzJfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXN3X2dhdGhlcl91NjRvZmZzZXRfczY0KSkpCnN2aW50NjRfdCBzdmxkbnQxc3dfZ2F0aGVyX3U2NG9mZnNldF9zNjQoc3Zib29sX3QsIGludDMyX3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDF1Yl9nYXRoZXJfdTMyYmFzZV9vZmZzZXRfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZG50MXViX2dhdGhlcl91MzJiYXNlX29mZnNldF91MzIoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxdWJfZ2F0aGVyX3U2NGJhc2Vfb2Zmc2V0X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRudDF1Yl9nYXRoZXJfdTY0YmFzZV9vZmZzZXRfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXViX2dhdGhlcl91MzJiYXNlX29mZnNldF9zMzIpKSkKc3ZpbnQzMl90IHN2bGRudDF1Yl9nYXRoZXJfdTMyYmFzZV9vZmZzZXRfczMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXViX2dhdGhlcl91NjRiYXNlX29mZnNldF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRudDF1Yl9nYXRoZXJfdTY0YmFzZV9vZmZzZXRfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXViX2dhdGhlcl91MzJiYXNlX3UzMikpKQpzdnVpbnQzMl90IHN2bGRudDF1Yl9nYXRoZXJfdTMyYmFzZV91MzIoc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxdWJfZ2F0aGVyX3U2NGJhc2VfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZG50MXViX2dhdGhlcl91NjRiYXNlX3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDF1Yl9nYXRoZXJfdTMyYmFzZV9zMzIpKSkKc3ZpbnQzMl90IHN2bGRudDF1Yl9nYXRoZXJfdTMyYmFzZV9zMzIoc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxdWJfZ2F0aGVyX3U2NGJhc2VfczY0KSkpCnN2aW50NjRfdCBzdmxkbnQxdWJfZ2F0aGVyX3U2NGJhc2VfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXViX2dhdGhlcl91MzJvZmZzZXRfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZG50MXViX2dhdGhlcl91MzJvZmZzZXRfdTMyKHN2Ym9vbF90LCB1aW50OF90IGNvbnN0ICosIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxdWJfZ2F0aGVyX3UzMm9mZnNldF9zMzIpKSkKc3ZpbnQzMl90IHN2bGRudDF1Yl9nYXRoZXJfdTMyb2Zmc2V0X3MzMihzdmJvb2xfdCwgdWludDhfdCBjb25zdCAqLCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXViX2dhdGhlcl9zNjRvZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZG50MXViX2dhdGhlcl9zNjRvZmZzZXRfdTY0KHN2Ym9vbF90LCB1aW50OF90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDF1Yl9nYXRoZXJfczY0b2Zmc2V0X3M2NCkpKQpzdmludDY0X3Qgc3ZsZG50MXViX2dhdGhlcl9zNjRvZmZzZXRfczY0KHN2Ym9vbF90LCB1aW50OF90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDF1Yl9nYXRoZXJfdTY0b2Zmc2V0X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRudDF1Yl9nYXRoZXJfdTY0b2Zmc2V0X3U2NChzdmJvb2xfdCwgdWludDhfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXViX2dhdGhlcl91NjRvZmZzZXRfczY0KSkpCnN2aW50NjRfdCBzdmxkbnQxdWJfZ2F0aGVyX3U2NG9mZnNldF9zNjQoc3Zib29sX3QsIHVpbnQ4X3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDF1aF9nYXRoZXJfdTMyYmFzZV9pbmRleF91MzIpKSkKc3Z1aW50MzJfdCBzdmxkbnQxdWhfZ2F0aGVyX3UzMmJhc2VfaW5kZXhfdTMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXVoX2dhdGhlcl91NjRiYXNlX2luZGV4X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRudDF1aF9nYXRoZXJfdTY0YmFzZV9pbmRleF91NjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxdWhfZ2F0aGVyX3UzMmJhc2VfaW5kZXhfczMyKSkpCnN2aW50MzJfdCBzdmxkbnQxdWhfZ2F0aGVyX3UzMmJhc2VfaW5kZXhfczMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXVoX2dhdGhlcl91NjRiYXNlX2luZGV4X3M2NCkpKQpzdmludDY0X3Qgc3ZsZG50MXVoX2dhdGhlcl91NjRiYXNlX2luZGV4X3M2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDF1aF9nYXRoZXJfdTMyYmFzZV9vZmZzZXRfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZG50MXVoX2dhdGhlcl91MzJiYXNlX29mZnNldF91MzIoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxdWhfZ2F0aGVyX3U2NGJhc2Vfb2Zmc2V0X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRudDF1aF9nYXRoZXJfdTY0YmFzZV9vZmZzZXRfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXVoX2dhdGhlcl91MzJiYXNlX29mZnNldF9zMzIpKSkKc3ZpbnQzMl90IHN2bGRudDF1aF9nYXRoZXJfdTMyYmFzZV9vZmZzZXRfczMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXVoX2dhdGhlcl91NjRiYXNlX29mZnNldF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRudDF1aF9nYXRoZXJfdTY0YmFzZV9vZmZzZXRfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXVoX2dhdGhlcl91MzJiYXNlX3UzMikpKQpzdnVpbnQzMl90IHN2bGRudDF1aF9nYXRoZXJfdTMyYmFzZV91MzIoc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxdWhfZ2F0aGVyX3U2NGJhc2VfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZG50MXVoX2dhdGhlcl91NjRiYXNlX3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDF1aF9nYXRoZXJfdTMyYmFzZV9zMzIpKSkKc3ZpbnQzMl90IHN2bGRudDF1aF9nYXRoZXJfdTMyYmFzZV9zMzIoc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxdWhfZ2F0aGVyX3U2NGJhc2VfczY0KSkpCnN2aW50NjRfdCBzdmxkbnQxdWhfZ2F0aGVyX3U2NGJhc2VfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXVoX2dhdGhlcl9zNjRpbmRleF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkbnQxdWhfZ2F0aGVyX3M2NGluZGV4X3U2NChzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXVoX2dhdGhlcl9zNjRpbmRleF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRudDF1aF9nYXRoZXJfczY0aW5kZXhfczY0KHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxdWhfZ2F0aGVyX3U2NGluZGV4X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRudDF1aF9nYXRoZXJfdTY0aW5kZXhfdTY0KHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXVoX2dhdGhlcl91NjRpbmRleF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRudDF1aF9nYXRoZXJfdTY0aW5kZXhfczY0KHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXVoX2dhdGhlcl91MzJvZmZzZXRfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZG50MXVoX2dhdGhlcl91MzJvZmZzZXRfdTMyKHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqLCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXVoX2dhdGhlcl91MzJvZmZzZXRfczMyKSkpCnN2aW50MzJfdCBzdmxkbnQxdWhfZ2F0aGVyX3UzMm9mZnNldF9zMzIoc3Zib29sX3QsIHVpbnQxNl90IGNvbnN0ICosIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxdWhfZ2F0aGVyX3M2NG9mZnNldF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkbnQxdWhfZ2F0aGVyX3M2NG9mZnNldF91NjQoc3Zib29sX3QsIHVpbnQxNl90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDF1aF9nYXRoZXJfczY0b2Zmc2V0X3M2NCkpKQpzdmludDY0X3Qgc3ZsZG50MXVoX2dhdGhlcl9zNjRvZmZzZXRfczY0KHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxdWhfZ2F0aGVyX3U2NG9mZnNldF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkbnQxdWhfZ2F0aGVyX3U2NG9mZnNldF91NjQoc3Zib29sX3QsIHVpbnQxNl90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxdWhfZ2F0aGVyX3U2NG9mZnNldF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRudDF1aF9nYXRoZXJfdTY0b2Zmc2V0X3M2NChzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDF1d19nYXRoZXJfdTY0YmFzZV9pbmRleF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkbnQxdXdfZ2F0aGVyX3U2NGJhc2VfaW5kZXhfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXV3X2dhdGhlcl91NjRiYXNlX2luZGV4X3M2NCkpKQpzdmludDY0X3Qgc3ZsZG50MXV3X2dhdGhlcl91NjRiYXNlX2luZGV4X3M2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDF1d19nYXRoZXJfdTY0YmFzZV9vZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZG50MXV3X2dhdGhlcl91NjRiYXNlX29mZnNldF91NjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxdXdfZ2F0aGVyX3U2NGJhc2Vfb2Zmc2V0X3M2NCkpKQpzdmludDY0X3Qgc3ZsZG50MXV3X2dhdGhlcl91NjRiYXNlX29mZnNldF9zNjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxdXdfZ2F0aGVyX3U2NGJhc2VfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZG50MXV3X2dhdGhlcl91NjRiYXNlX3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDF1d19nYXRoZXJfdTY0YmFzZV9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRudDF1d19nYXRoZXJfdTY0YmFzZV9zNjQoc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxdXdfZ2F0aGVyX3M2NGluZGV4X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRudDF1d19nYXRoZXJfczY0aW5kZXhfdTY0KHN2Ym9vbF90LCB1aW50MzJfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxdXdfZ2F0aGVyX3M2NGluZGV4X3M2NCkpKQpzdmludDY0X3Qgc3ZsZG50MXV3X2dhdGhlcl9zNjRpbmRleF9zNjQoc3Zib29sX3QsIHVpbnQzMl90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDF1d19nYXRoZXJfdTY0aW5kZXhfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZG50MXV3X2dhdGhlcl91NjRpbmRleF91NjQoc3Zib29sX3QsIHVpbnQzMl90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxdXdfZ2F0aGVyX3U2NGluZGV4X3M2NCkpKQpzdmludDY0X3Qgc3ZsZG50MXV3X2dhdGhlcl91NjRpbmRleF9zNjQoc3Zib29sX3QsIHVpbnQzMl90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxdXdfZ2F0aGVyX3M2NG9mZnNldF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkbnQxdXdfZ2F0aGVyX3M2NG9mZnNldF91NjQoc3Zib29sX3QsIHVpbnQzMl90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDF1d19nYXRoZXJfczY0b2Zmc2V0X3M2NCkpKQpzdmludDY0X3Qgc3ZsZG50MXV3X2dhdGhlcl9zNjRvZmZzZXRfczY0KHN2Ym9vbF90LCB1aW50MzJfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxdXdfZ2F0aGVyX3U2NG9mZnNldF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkbnQxdXdfZ2F0aGVyX3U2NG9mZnNldF91NjQoc3Zib29sX3QsIHVpbnQzMl90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxdXdfZ2F0aGVyX3U2NG9mZnNldF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRudDF1d19nYXRoZXJfdTY0b2Zmc2V0X3M2NChzdmJvb2xfdCwgdWludDMyX3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bG9nYl9mNjRfbSkpKQpzdmludDY0X3Qgc3Zsb2diX2Y2NF9tKHN2aW50NjRfdCwgc3Zib29sX3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsb2diX2YzMl9tKSkpCnN2aW50MzJfdCBzdmxvZ2JfZjMyX20oc3ZpbnQzMl90LCBzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxvZ2JfZjE2X20pKSkKc3ZpbnQxNl90IHN2bG9nYl9mMTZfbShzdmludDE2X3QsIHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bG9nYl9mNjRfeCkpKQpzdmludDY0X3Qgc3Zsb2diX2Y2NF94KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bG9nYl9mMzJfeCkpKQpzdmludDMyX3Qgc3Zsb2diX2YzMl94KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bG9nYl9mMTZfeCkpKQpzdmludDE2X3Qgc3Zsb2diX2YxNl94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bG9nYl9mNjRfeikpKQpzdmludDY0X3Qgc3Zsb2diX2Y2NF96KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bG9nYl9mMzJfeikpKQpzdmludDMyX3Qgc3Zsb2diX2YzMl96KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bG9nYl9mMTZfeikpKQpzdmludDE2X3Qgc3Zsb2diX2YxNl96KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF0Y2hfdTgpKSkKc3Zib29sX3Qgc3ZtYXRjaF91OChzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1hdGNoX3UxNikpKQpzdmJvb2xfdCBzdm1hdGNoX3UxNihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF0Y2hfczgpKSkKc3Zib29sX3Qgc3ZtYXRjaF9zOChzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXRjaF9zMTYpKSkKc3Zib29sX3Qgc3ZtYXRjaF9zMTYoc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhubXBfZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZtYXhubXBfZjY0X20oc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4bm1wX2YzMl9tKSkpCnN2ZmxvYXQzMl90IHN2bWF4bm1wX2YzMl9tKHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heG5tcF9mMTZfbSkpKQpzdmZsb2F0MTZfdCBzdm1heG5tcF9mMTZfbShzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhubXBfZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZtYXhubXBfZjY0X3goc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4bm1wX2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2bWF4bm1wX2YzMl94KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heG5tcF9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdm1heG5tcF9mMTZfeChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhwX2Y2NF9tKSkpCnN2ZmxvYXQ2NF90IHN2bWF4cF9mNjRfbShzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhwX2YzMl9tKSkpCnN2ZmxvYXQzMl90IHN2bWF4cF9mMzJfbShzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhwX2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2bWF4cF9mMTZfbShzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhwX2Y2NF94KSkpCnN2ZmxvYXQ2NF90IHN2bWF4cF9mNjRfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhwX2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2bWF4cF9mMzJfeChzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhwX2YxNl94KSkpCnN2ZmxvYXQxNl90IHN2bWF4cF9mMTZfeChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhwX3M4X20pKSkKc3ZpbnQ4X3Qgc3ZtYXhwX3M4X20oc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4cF9zMzJfbSkpKQpzdmludDMyX3Qgc3ZtYXhwX3MzMl9tKHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4cF9zNjRfbSkpKQpzdmludDY0X3Qgc3ZtYXhwX3M2NF9tKHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4cF9zMTZfbSkpKQpzdmludDE2X3Qgc3ZtYXhwX3MxNl9tKHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4cF9zOF94KSkpCnN2aW50OF90IHN2bWF4cF9zOF94KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heHBfczMyX3gpKSkKc3ZpbnQzMl90IHN2bWF4cF9zMzJfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heHBfczY0X3gpKSkKc3ZpbnQ2NF90IHN2bWF4cF9zNjRfeChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heHBfczE2X3gpKSkKc3ZpbnQxNl90IHN2bWF4cF9zMTZfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heHBfdThfbSkpKQpzdnVpbnQ4X3Qgc3ZtYXhwX3U4X20oc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhwX3UzMl9tKSkpCnN2dWludDMyX3Qgc3ZtYXhwX3UzMl9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhwX3U2NF9tKSkpCnN2dWludDY0X3Qgc3ZtYXhwX3U2NF9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhwX3UxNl9tKSkpCnN2dWludDE2X3Qgc3ZtYXhwX3UxNl9tKHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhwX3U4X3gpKSkKc3Z1aW50OF90IHN2bWF4cF91OF94KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4cF91MzJfeCkpKQpzdnVpbnQzMl90IHN2bWF4cF91MzJfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4cF91NjRfeCkpKQpzdnVpbnQ2NF90IHN2bWF4cF91NjRfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4cF91MTZfeCkpKQpzdnVpbnQxNl90IHN2bWF4cF91MTZfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWlubm1wX2Y2NF9tKSkpCnN2ZmxvYXQ2NF90IHN2bWlubm1wX2Y2NF9tKHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbm5tcF9mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdm1pbm5tcF9mMzJfbShzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5ubXBfZjE2X20pKSkKc3ZmbG9hdDE2X3Qgc3ZtaW5ubXBfZjE2X20oc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWlubm1wX2Y2NF94KSkpCnN2ZmxvYXQ2NF90IHN2bWlubm1wX2Y2NF94KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbm5tcF9mMzJfeCkpKQpzdmZsb2F0MzJfdCBzdm1pbm5tcF9mMzJfeChzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5ubXBfZjE2X3gpKSkKc3ZmbG9hdDE2X3Qgc3ZtaW5ubXBfZjE2X3goc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWlucF9mNjRfbSkpKQpzdmZsb2F0NjRfdCBzdm1pbnBfZjY0X20oc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWlucF9mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdm1pbnBfZjMyX20oc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWlucF9mMTZfbSkpKQpzdmZsb2F0MTZfdCBzdm1pbnBfZjE2X20oc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWlucF9mNjRfeCkpKQpzdmZsb2F0NjRfdCBzdm1pbnBfZjY0X3goc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWlucF9mMzJfeCkpKQpzdmZsb2F0MzJfdCBzdm1pbnBfZjMyX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWlucF9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdm1pbnBfZjE2X3goc3Zib29sX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWlucF9zOF9tKSkpCnN2aW50OF90IHN2bWlucF9zOF9tKHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbnBfczMyX20pKSkKc3ZpbnQzMl90IHN2bWlucF9zMzJfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbnBfczY0X20pKSkKc3ZpbnQ2NF90IHN2bWlucF9zNjRfbShzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbnBfczE2X20pKSkKc3ZpbnQxNl90IHN2bWlucF9zMTZfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbnBfczhfeCkpKQpzdmludDhfdCBzdm1pbnBfczhfeChzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5wX3MzMl94KSkpCnN2aW50MzJfdCBzdm1pbnBfczMyX3goc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5wX3M2NF94KSkpCnN2aW50NjRfdCBzdm1pbnBfczY0X3goc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5wX3MxNl94KSkpCnN2aW50MTZfdCBzdm1pbnBfczE2X3goc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5wX3U4X20pKSkKc3Z1aW50OF90IHN2bWlucF91OF9tKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWlucF91MzJfbSkpKQpzdnVpbnQzMl90IHN2bWlucF91MzJfbShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWlucF91NjRfbSkpKQpzdnVpbnQ2NF90IHN2bWlucF91NjRfbShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWlucF91MTZfbSkpKQpzdnVpbnQxNl90IHN2bWlucF91MTZfbShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWlucF91OF94KSkpCnN2dWludDhfdCBzdm1pbnBfdThfeChzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbnBfdTMyX3gpKSkKc3Z1aW50MzJfdCBzdm1pbnBfdTMyX3goc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbnBfdTY0X3gpKSkKc3Z1aW50NjRfdCBzdm1pbnBfdTY0X3goc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbnBfdTE2X3gpKSkKc3Z1aW50MTZfdCBzdm1pbnBfdTE2X3goc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9sYW5lX3UzMikpKQpzdnVpbnQzMl90IHN2bWxhX2xhbmVfdTMyKHN2dWludDMyX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFfbGFuZV91NjQpKSkKc3Z1aW50NjRfdCBzdm1sYV9sYW5lX3U2NChzdnVpbnQ2NF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhX2xhbmVfdTE2KSkpCnN2dWludDE2X3Qgc3ZtbGFfbGFuZV91MTYoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9sYW5lX3MzMikpKQpzdmludDMyX3Qgc3ZtbGFfbGFuZV9zMzIoc3ZpbnQzMl90LCBzdmludDMyX3QsIHN2aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9sYW5lX3M2NCkpKQpzdmludDY0X3Qgc3ZtbGFfbGFuZV9zNjQoc3ZpbnQ2NF90LCBzdmludDY0X3QsIHN2aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9sYW5lX3MxNikpKQpzdmludDE2X3Qgc3ZtbGFfbGFuZV9zMTYoc3ZpbnQxNl90LCBzdmludDE2X3QsIHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYWxiX25fZjMyKSkpCnN2ZmxvYXQzMl90IHN2bWxhbGJfbl9mMzIoc3ZmbG9hdDMyX3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYWxiX25fczMyKSkpCnN2aW50MzJfdCBzdm1sYWxiX25fczMyKHN2aW50MzJfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFsYl9uX3M2NCkpKQpzdmludDY0X3Qgc3ZtbGFsYl9uX3M2NChzdmludDY0X3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhbGJfbl9zMTYpKSkKc3ZpbnQxNl90IHN2bWxhbGJfbl9zMTYoc3ZpbnQxNl90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFsYl9uX3UzMikpKQpzdnVpbnQzMl90IHN2bWxhbGJfbl91MzIoc3Z1aW50MzJfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYWxiX25fdTY0KSkpCnN2dWludDY0X3Qgc3ZtbGFsYl9uX3U2NChzdnVpbnQ2NF90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhbGJfbl91MTYpKSkKc3Z1aW50MTZfdCBzdm1sYWxiX25fdTE2KHN2dWludDE2X3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhbGJfZjMyKSkpCnN2ZmxvYXQzMl90IHN2bWxhbGJfZjMyKHN2ZmxvYXQzMl90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYWxiX3MzMikpKQpzdmludDMyX3Qgc3ZtbGFsYl9zMzIoc3ZpbnQzMl90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhbGJfczY0KSkpCnN2aW50NjRfdCBzdm1sYWxiX3M2NChzdmludDY0X3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFsYl9zMTYpKSkKc3ZpbnQxNl90IHN2bWxhbGJfczE2KHN2aW50MTZfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFsYl91MzIpKSkKc3Z1aW50MzJfdCBzdm1sYWxiX3UzMihzdnVpbnQzMl90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFsYl91NjQpKSkKc3Z1aW50NjRfdCBzdm1sYWxiX3U2NChzdnVpbnQ2NF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFsYl91MTYpKSkKc3Z1aW50MTZfdCBzdm1sYWxiX3UxNihzdnVpbnQxNl90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhbGJfbGFuZV9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3ZtbGFsYl9sYW5lX2YzMihzdmZsb2F0MzJfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhbGJfbGFuZV9zMzIpKSkKc3ZpbnQzMl90IHN2bWxhbGJfbGFuZV9zMzIoc3ZpbnQzMl90LCBzdmludDE2X3QsIHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYWxiX2xhbmVfczY0KSkpCnN2aW50NjRfdCBzdm1sYWxiX2xhbmVfczY0KHN2aW50NjRfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFsYl9sYW5lX3UzMikpKQpzdnVpbnQzMl90IHN2bWxhbGJfbGFuZV91MzIoc3Z1aW50MzJfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYWxiX2xhbmVfdTY0KSkpCnN2dWludDY0X3Qgc3ZtbGFsYl9sYW5lX3U2NChzdnVpbnQ2NF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhbHRfbl9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3ZtbGFsdF9uX2YzMihzdmZsb2F0MzJfdCwgc3ZmbG9hdDE2X3QsIGZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhbHRfbl9zMzIpKSkKc3ZpbnQzMl90IHN2bWxhbHRfbl9zMzIoc3ZpbnQzMl90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYWx0X25fczY0KSkpCnN2aW50NjRfdCBzdm1sYWx0X25fczY0KHN2aW50NjRfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFsdF9uX3MxNikpKQpzdmludDE2X3Qgc3ZtbGFsdF9uX3MxNihzdmludDE2X3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYWx0X25fdTMyKSkpCnN2dWludDMyX3Qgc3ZtbGFsdF9uX3UzMihzdnVpbnQzMl90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhbHRfbl91NjQpKSkKc3Z1aW50NjRfdCBzdm1sYWx0X25fdTY0KHN2dWludDY0X3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFsdF9uX3UxNikpKQpzdnVpbnQxNl90IHN2bWxhbHRfbl91MTYoc3Z1aW50MTZfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFsdF9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3ZtbGFsdF9mMzIoc3ZmbG9hdDMyX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhbHRfczMyKSkpCnN2aW50MzJfdCBzdm1sYWx0X3MzMihzdmludDMyX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFsdF9zNjQpKSkKc3ZpbnQ2NF90IHN2bWxhbHRfczY0KHN2aW50NjRfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYWx0X3MxNikpKQpzdmludDE2X3Qgc3ZtbGFsdF9zMTYoc3ZpbnQxNl90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYWx0X3UzMikpKQpzdnVpbnQzMl90IHN2bWxhbHRfdTMyKHN2dWludDMyX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYWx0X3U2NCkpKQpzdnVpbnQ2NF90IHN2bWxhbHRfdTY0KHN2dWludDY0X3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYWx0X3UxNikpKQpzdnVpbnQxNl90IHN2bWxhbHRfdTE2KHN2dWludDE2X3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFsdF9sYW5lX2YzMikpKQpzdmZsb2F0MzJfdCBzdm1sYWx0X2xhbmVfZjMyKHN2ZmxvYXQzMl90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFsdF9sYW5lX3MzMikpKQpzdmludDMyX3Qgc3ZtbGFsdF9sYW5lX3MzMihzdmludDMyX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhbHRfbGFuZV9zNjQpKSkKc3ZpbnQ2NF90IHN2bWxhbHRfbGFuZV9zNjQoc3ZpbnQ2NF90LCBzdmludDMyX3QsIHN2aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYWx0X2xhbmVfdTMyKSkpCnN2dWludDMyX3Qgc3ZtbGFsdF9sYW5lX3UzMihzdnVpbnQzMl90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhbHRfbGFuZV91NjQpKSkKc3Z1aW50NjRfdCBzdm1sYWx0X2xhbmVfdTY0KHN2dWludDY0X3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNfbGFuZV91MzIpKSkKc3Z1aW50MzJfdCBzdm1sc19sYW5lX3UzMihzdnVpbnQzMl90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzX2xhbmVfdTY0KSkpCnN2dWludDY0X3Qgc3ZtbHNfbGFuZV91NjQoc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19sYW5lX3UxNikpKQpzdnVpbnQxNl90IHN2bWxzX2xhbmVfdTE2KHN2dWludDE2X3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNfbGFuZV9zMzIpKSkKc3ZpbnQzMl90IHN2bWxzX2xhbmVfczMyKHN2aW50MzJfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNfbGFuZV9zNjQpKSkKc3ZpbnQ2NF90IHN2bWxzX2xhbmVfczY0KHN2aW50NjRfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNfbGFuZV9zMTYpKSkKc3ZpbnQxNl90IHN2bWxzX2xhbmVfczE2KHN2aW50MTZfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNsYl9uX2YzMikpKQpzdmZsb2F0MzJfdCBzdm1sc2xiX25fZjMyKHN2ZmxvYXQzMl90LCBzdmZsb2F0MTZfdCwgZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNsYl9uX3MzMikpKQpzdmludDMyX3Qgc3ZtbHNsYl9uX3MzMihzdmludDMyX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzbGJfbl9zNjQpKSkKc3ZpbnQ2NF90IHN2bWxzbGJfbl9zNjQoc3ZpbnQ2NF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc2xiX25fczE2KSkpCnN2aW50MTZfdCBzdm1sc2xiX25fczE2KHN2aW50MTZfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzbGJfbl91MzIpKSkKc3Z1aW50MzJfdCBzdm1sc2xiX25fdTMyKHN2dWludDMyX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNsYl9uX3U2NCkpKQpzdnVpbnQ2NF90IHN2bWxzbGJfbl91NjQoc3Z1aW50NjRfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc2xiX25fdTE2KSkpCnN2dWludDE2X3Qgc3ZtbHNsYl9uX3UxNihzdnVpbnQxNl90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc2xiX2YzMikpKQpzdmZsb2F0MzJfdCBzdm1sc2xiX2YzMihzdmZsb2F0MzJfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNsYl9zMzIpKSkKc3ZpbnQzMl90IHN2bWxzbGJfczMyKHN2aW50MzJfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc2xiX3M2NCkpKQpzdmludDY0X3Qgc3ZtbHNsYl9zNjQoc3ZpbnQ2NF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzbGJfczE2KSkpCnN2aW50MTZfdCBzdm1sc2xiX3MxNihzdmludDE2X3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzbGJfdTMyKSkpCnN2dWludDMyX3Qgc3ZtbHNsYl91MzIoc3Z1aW50MzJfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzbGJfdTY0KSkpCnN2dWludDY0X3Qgc3ZtbHNsYl91NjQoc3Z1aW50NjRfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzbGJfdTE2KSkpCnN2dWludDE2X3Qgc3ZtbHNsYl91MTYoc3Z1aW50MTZfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc2xiX2xhbmVfZjMyKSkpCnN2ZmxvYXQzMl90IHN2bWxzbGJfbGFuZV9mMzIoc3ZmbG9hdDMyX3QsIHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc2xiX2xhbmVfczMyKSkpCnN2aW50MzJfdCBzdm1sc2xiX2xhbmVfczMyKHN2aW50MzJfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNsYl9sYW5lX3M2NCkpKQpzdmludDY0X3Qgc3ZtbHNsYl9sYW5lX3M2NChzdmludDY0X3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzbGJfbGFuZV91MzIpKSkKc3Z1aW50MzJfdCBzdm1sc2xiX2xhbmVfdTMyKHN2dWludDMyX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNsYl9sYW5lX3U2NCkpKQpzdnVpbnQ2NF90IHN2bWxzbGJfbGFuZV91NjQoc3Z1aW50NjRfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc2x0X25fZjMyKSkpCnN2ZmxvYXQzMl90IHN2bWxzbHRfbl9mMzIoc3ZmbG9hdDMyX3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc2x0X25fczMyKSkpCnN2aW50MzJfdCBzdm1sc2x0X25fczMyKHN2aW50MzJfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNsdF9uX3M2NCkpKQpzdmludDY0X3Qgc3ZtbHNsdF9uX3M2NChzdmludDY0X3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzbHRfbl9zMTYpKSkKc3ZpbnQxNl90IHN2bWxzbHRfbl9zMTYoc3ZpbnQxNl90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNsdF9uX3UzMikpKQpzdnVpbnQzMl90IHN2bWxzbHRfbl91MzIoc3Z1aW50MzJfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc2x0X25fdTY0KSkpCnN2dWludDY0X3Qgc3ZtbHNsdF9uX3U2NChzdnVpbnQ2NF90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzbHRfbl91MTYpKSkKc3Z1aW50MTZfdCBzdm1sc2x0X25fdTE2KHN2dWludDE2X3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzbHRfZjMyKSkpCnN2ZmxvYXQzMl90IHN2bWxzbHRfZjMyKHN2ZmxvYXQzMl90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc2x0X3MzMikpKQpzdmludDMyX3Qgc3ZtbHNsdF9zMzIoc3ZpbnQzMl90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzbHRfczY0KSkpCnN2aW50NjRfdCBzdm1sc2x0X3M2NChzdmludDY0X3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNsdF9zMTYpKSkKc3ZpbnQxNl90IHN2bWxzbHRfczE2KHN2aW50MTZfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNsdF91MzIpKSkKc3Z1aW50MzJfdCBzdm1sc2x0X3UzMihzdnVpbnQzMl90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNsdF91NjQpKSkKc3Z1aW50NjRfdCBzdm1sc2x0X3U2NChzdnVpbnQ2NF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNsdF91MTYpKSkKc3Z1aW50MTZfdCBzdm1sc2x0X3UxNihzdnVpbnQxNl90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzbHRfbGFuZV9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3ZtbHNsdF9sYW5lX2YzMihzdmZsb2F0MzJfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzbHRfbGFuZV9zMzIpKSkKc3ZpbnQzMl90IHN2bWxzbHRfbGFuZV9zMzIoc3ZpbnQzMl90LCBzdmludDE2X3QsIHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc2x0X2xhbmVfczY0KSkpCnN2aW50NjRfdCBzdm1sc2x0X2xhbmVfczY0KHN2aW50NjRfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNsdF9sYW5lX3UzMikpKQpzdnVpbnQzMl90IHN2bWxzbHRfbGFuZV91MzIoc3Z1aW50MzJfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc2x0X2xhbmVfdTY0KSkpCnN2dWludDY0X3Qgc3ZtbHNsdF9sYW5lX3U2NChzdnVpbnQ2NF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bW92bGJfczMyKSkpCnN2aW50MzJfdCBzdm1vdmxiX3MzMihzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1vdmxiX3M2NCkpKQpzdmludDY0X3Qgc3Ztb3ZsYl9zNjQoc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztb3ZsYl9zMTYpKSkKc3ZpbnQxNl90IHN2bW92bGJfczE2KHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztb3ZsYl91MzIpKSkKc3Z1aW50MzJfdCBzdm1vdmxiX3UzMihzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztb3ZsYl91NjQpKSkKc3Z1aW50NjRfdCBzdm1vdmxiX3U2NChzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztb3ZsYl91MTYpKSkKc3Z1aW50MTZfdCBzdm1vdmxiX3UxNihzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1vdmx0X3MzMikpKQpzdmludDMyX3Qgc3Ztb3ZsdF9zMzIoc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztb3ZsdF9zNjQpKSkKc3ZpbnQ2NF90IHN2bW92bHRfczY0KHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bW92bHRfczE2KSkpCnN2aW50MTZfdCBzdm1vdmx0X3MxNihzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bW92bHRfdTMyKSkpCnN2dWludDMyX3Qgc3Ztb3ZsdF91MzIoc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bW92bHRfdTY0KSkpCnN2dWludDY0X3Qgc3Ztb3ZsdF91NjQoc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bW92bHRfdTE2KSkpCnN2dWludDE2X3Qgc3Ztb3ZsdF91MTYoc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfbGFuZV91MzIpKSkKc3Z1aW50MzJfdCBzdm11bF9sYW5lX3UzMihzdnVpbnQzMl90LCBzdnVpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsX2xhbmVfdTY0KSkpCnN2dWludDY0X3Qgc3ZtdWxfbGFuZV91NjQoc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bF9sYW5lX3UxNikpKQpzdnVpbnQxNl90IHN2bXVsX2xhbmVfdTE2KHN2dWludDE2X3QsIHN2dWludDE2X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfbGFuZV9zMzIpKSkKc3ZpbnQzMl90IHN2bXVsX2xhbmVfczMyKHN2aW50MzJfdCwgc3ZpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsX2xhbmVfczY0KSkpCnN2aW50NjRfdCBzdm11bF9sYW5lX3M2NChzdmludDY0X3QsIHN2aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bF9sYW5lX3MxNikpKQpzdmludDE2X3Qgc3ZtdWxfbGFuZV9zMTYoc3ZpbnQxNl90LCBzdmludDE2X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxsYl9uX3MzMikpKQpzdmludDMyX3Qgc3ZtdWxsYl9uX3MzMihzdmludDE2X3QsIGludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGxiX25fczY0KSkpCnN2aW50NjRfdCBzdm11bGxiX25fczY0KHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsbGJfbl9zMTYpKSkKc3ZpbnQxNl90IHN2bXVsbGJfbl9zMTYoc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsbGJfbl91MzIpKSkKc3Z1aW50MzJfdCBzdm11bGxiX25fdTMyKHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxsYl9uX3U2NCkpKQpzdnVpbnQ2NF90IHN2bXVsbGJfbl91NjQoc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGxiX25fdTE2KSkpCnN2dWludDE2X3Qgc3ZtdWxsYl9uX3UxNihzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGxiX3MzMikpKQpzdmludDMyX3Qgc3ZtdWxsYl9zMzIoc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGxiX3M2NCkpKQpzdmludDY0X3Qgc3ZtdWxsYl9zNjQoc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGxiX3MxNikpKQpzdmludDE2X3Qgc3ZtdWxsYl9zMTYoc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxsYl91MzIpKSkKc3Z1aW50MzJfdCBzdm11bGxiX3UzMihzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxsYl91NjQpKSkKc3Z1aW50NjRfdCBzdm11bGxiX3U2NChzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxsYl91MTYpKSkKc3Z1aW50MTZfdCBzdm11bGxiX3UxNihzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsbGJfbGFuZV9zMzIpKSkKc3ZpbnQzMl90IHN2bXVsbGJfbGFuZV9zMzIoc3ZpbnQxNl90LCBzdmludDE2X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxsYl9sYW5lX3M2NCkpKQpzdmludDY0X3Qgc3ZtdWxsYl9sYW5lX3M2NChzdmludDMyX3QsIHN2aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGxiX2xhbmVfdTMyKSkpCnN2dWludDMyX3Qgc3ZtdWxsYl9sYW5lX3UzMihzdnVpbnQxNl90LCBzdnVpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsbGJfbGFuZV91NjQpKSkKc3Z1aW50NjRfdCBzdm11bGxiX2xhbmVfdTY0KHN2dWludDMyX3QsIHN2dWludDMyX3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxsdF9uX3MzMikpKQpzdmludDMyX3Qgc3ZtdWxsdF9uX3MzMihzdmludDE2X3QsIGludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGx0X25fczY0KSkpCnN2aW50NjRfdCBzdm11bGx0X25fczY0KHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsbHRfbl9zMTYpKSkKc3ZpbnQxNl90IHN2bXVsbHRfbl9zMTYoc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsbHRfbl91MzIpKSkKc3Z1aW50MzJfdCBzdm11bGx0X25fdTMyKHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxsdF9uX3U2NCkpKQpzdnVpbnQ2NF90IHN2bXVsbHRfbl91NjQoc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGx0X25fdTE2KSkpCnN2dWludDE2X3Qgc3ZtdWxsdF9uX3UxNihzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGx0X3MzMikpKQpzdmludDMyX3Qgc3ZtdWxsdF9zMzIoc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGx0X3M2NCkpKQpzdmludDY0X3Qgc3ZtdWxsdF9zNjQoc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGx0X3MxNikpKQpzdmludDE2X3Qgc3ZtdWxsdF9zMTYoc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxsdF91MzIpKSkKc3Z1aW50MzJfdCBzdm11bGx0X3UzMihzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxsdF91NjQpKSkKc3Z1aW50NjRfdCBzdm11bGx0X3U2NChzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxsdF91MTYpKSkKc3Z1aW50MTZfdCBzdm11bGx0X3UxNihzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsbHRfbGFuZV9zMzIpKSkKc3ZpbnQzMl90IHN2bXVsbHRfbGFuZV9zMzIoc3ZpbnQxNl90LCBzdmludDE2X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxsdF9sYW5lX3M2NCkpKQpzdmludDY0X3Qgc3ZtdWxsdF9sYW5lX3M2NChzdmludDMyX3QsIHN2aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGx0X2xhbmVfdTMyKSkpCnN2dWludDMyX3Qgc3ZtdWxsdF9sYW5lX3UzMihzdnVpbnQxNl90LCBzdnVpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsbHRfbGFuZV91NjQpKSkKc3Z1aW50NjRfdCBzdm11bGx0X2xhbmVfdTY0KHN2dWludDMyX3QsIHN2dWludDMyX3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZuYnNsX25fdTgpKSkKc3Z1aW50OF90IHN2bmJzbF9uX3U4KHN2dWludDhfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZuYnNsX25fdTMyKSkpCnN2dWludDMyX3Qgc3ZuYnNsX25fdTMyKHN2dWludDMyX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZuYnNsX25fdTY0KSkpCnN2dWludDY0X3Qgc3ZuYnNsX25fdTY0KHN2dWludDY0X3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZuYnNsX25fdTE2KSkpCnN2dWludDE2X3Qgc3ZuYnNsX25fdTE2KHN2dWludDE2X3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZuYnNsX25fczgpKSkKc3ZpbnQ4X3Qgc3ZuYnNsX25fczgoc3ZpbnQ4X3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5ic2xfbl9zMzIpKSkKc3ZpbnQzMl90IHN2bmJzbF9uX3MzMihzdmludDMyX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bmJzbF9uX3M2NCkpKQpzdmludDY0X3Qgc3ZuYnNsX25fczY0KHN2aW50NjRfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZuYnNsX25fczE2KSkpCnN2aW50MTZfdCBzdm5ic2xfbl9zMTYoc3ZpbnQxNl90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5ic2xfdTgpKSkKc3Z1aW50OF90IHN2bmJzbF91OChzdnVpbnQ4X3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZuYnNsX3UzMikpKQpzdnVpbnQzMl90IHN2bmJzbF91MzIoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bmJzbF91NjQpKSkKc3Z1aW50NjRfdCBzdm5ic2xfdTY0KHN2dWludDY0X3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5ic2xfdTE2KSkpCnN2dWludDE2X3Qgc3ZuYnNsX3UxNihzdnVpbnQxNl90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZuYnNsX3M4KSkpCnN2aW50OF90IHN2bmJzbF9zOChzdmludDhfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZuYnNsX3MzMikpKQpzdmludDMyX3Qgc3ZuYnNsX3MzMihzdmludDMyX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZuYnNsX3M2NCkpKQpzdmludDY0X3Qgc3ZuYnNsX3M2NChzdmludDY0X3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZuYnNsX3MxNikpKQpzdmludDE2X3Qgc3ZuYnNsX3MxNihzdmludDE2X3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWF0Y2hfdTgpKSkKc3Zib29sX3Qgc3ZubWF0Y2hfdTgoc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWF0Y2hfdTE2KSkpCnN2Ym9vbF90IHN2bm1hdGNoX3UxNihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm1hdGNoX3M4KSkpCnN2Ym9vbF90IHN2bm1hdGNoX3M4KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5tYXRjaF9zMTYpKSkKc3Zib29sX3Qgc3ZubWF0Y2hfczE2KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cG11bF9uX3U4KSkpCnN2dWludDhfdCBzdnBtdWxfbl91OChzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnBtdWxfdTgpKSkKc3Z1aW50OF90IHN2cG11bF91OChzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cG11bGxiX25fdTY0KSkpCnN2dWludDY0X3Qgc3ZwbXVsbGJfbl91NjQoc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnBtdWxsYl9uX3UxNikpKQpzdnVpbnQxNl90IHN2cG11bGxiX25fdTE2KHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cG11bGxiX3U2NCkpKQpzdnVpbnQ2NF90IHN2cG11bGxiX3U2NChzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwbXVsbGJfdTE2KSkpCnN2dWludDE2X3Qgc3ZwbXVsbGJfdTE2KHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwbXVsbGJfcGFpcl9uX3U4KSkpCnN2dWludDhfdCBzdnBtdWxsYl9wYWlyX25fdTgoc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwbXVsbGJfcGFpcl9uX3UzMikpKQpzdnVpbnQzMl90IHN2cG11bGxiX3BhaXJfbl91MzIoc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnBtdWxsYl9wYWlyX3U4KSkpCnN2dWludDhfdCBzdnBtdWxsYl9wYWlyX3U4KHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwbXVsbGJfcGFpcl91MzIpKSkKc3Z1aW50MzJfdCBzdnBtdWxsYl9wYWlyX3UzMihzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwbXVsbHRfbl91NjQpKSkKc3Z1aW50NjRfdCBzdnBtdWxsdF9uX3U2NChzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cG11bGx0X25fdTE2KSkpCnN2dWludDE2X3Qgc3ZwbXVsbHRfbl91MTYoc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwbXVsbHRfdTY0KSkpCnN2dWludDY0X3Qgc3ZwbXVsbHRfdTY0KHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnBtdWxsdF91MTYpKSkKc3Z1aW50MTZfdCBzdnBtdWxsdF91MTYoc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnBtdWxsdF9wYWlyX25fdTgpKSkKc3Z1aW50OF90IHN2cG11bGx0X3BhaXJfbl91OChzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnBtdWxsdF9wYWlyX25fdTMyKSkpCnN2dWludDMyX3Qgc3ZwbXVsbHRfcGFpcl9uX3UzMihzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cG11bGx0X3BhaXJfdTgpKSkKc3Z1aW50OF90IHN2cG11bGx0X3BhaXJfdTgoc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnBtdWxsdF9wYWlyX3UzMikpKQpzdnVpbnQzMl90IHN2cG11bGx0X3BhaXJfdTMyKHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhYnNfczhfbSkpKQpzdmludDhfdCBzdnFhYnNfczhfbShzdmludDhfdCwgc3Zib29sX3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWJzX3MzMl9tKSkpCnN2aW50MzJfdCBzdnFhYnNfczMyX20oc3ZpbnQzMl90LCBzdmJvb2xfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWJzX3M2NF9tKSkpCnN2aW50NjRfdCBzdnFhYnNfczY0X20oc3ZpbnQ2NF90LCBzdmJvb2xfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWJzX3MxNl9tKSkpCnN2aW50MTZfdCBzdnFhYnNfczE2X20oc3ZpbnQxNl90LCBzdmJvb2xfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWJzX3M4X3gpKSkKc3ZpbnQ4X3Qgc3ZxYWJzX3M4X3goc3Zib29sX3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWJzX3MzMl94KSkpCnN2aW50MzJfdCBzdnFhYnNfczMyX3goc3Zib29sX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFic19zNjRfeCkpKQpzdmludDY0X3Qgc3ZxYWJzX3M2NF94KHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhYnNfczE2X3gpKSkKc3ZpbnQxNl90IHN2cWFic19zMTZfeChzdmJvb2xfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWJzX3M4X3opKSkKc3ZpbnQ4X3Qgc3ZxYWJzX3M4X3ooc3Zib29sX3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWJzX3MzMl96KSkpCnN2aW50MzJfdCBzdnFhYnNfczMyX3ooc3Zib29sX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFic19zNjRfeikpKQpzdmludDY0X3Qgc3ZxYWJzX3M2NF96KHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhYnNfczE2X3opKSkKc3ZpbnQxNl90IHN2cWFic19zMTZfeihzdmJvb2xfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWRkX25fczhfbSkpKQpzdmludDhfdCBzdnFhZGRfbl9zOF9tKHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWRkX25fczMyX20pKSkKc3ZpbnQzMl90IHN2cWFkZF9uX3MzMl9tKHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhZGRfbl9zNjRfbSkpKQpzdmludDY0X3Qgc3ZxYWRkX25fczY0X20oc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFkZF9uX3MxNl9tKSkpCnN2aW50MTZfdCBzdnFhZGRfbl9zMTZfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWRkX25fczhfeCkpKQpzdmludDhfdCBzdnFhZGRfbl9zOF94KHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWRkX25fczMyX3gpKSkKc3ZpbnQzMl90IHN2cWFkZF9uX3MzMl94KHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhZGRfbl9zNjRfeCkpKQpzdmludDY0X3Qgc3ZxYWRkX25fczY0X3goc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFkZF9uX3MxNl94KSkpCnN2aW50MTZfdCBzdnFhZGRfbl9zMTZfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWRkX25fczhfeikpKQpzdmludDhfdCBzdnFhZGRfbl9zOF96KHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWRkX25fczMyX3opKSkKc3ZpbnQzMl90IHN2cWFkZF9uX3MzMl96KHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhZGRfbl9zNjRfeikpKQpzdmludDY0X3Qgc3ZxYWRkX25fczY0X3ooc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFkZF9uX3MxNl96KSkpCnN2aW50MTZfdCBzdnFhZGRfbl9zMTZfeihzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWRkX25fdThfbSkpKQpzdnVpbnQ4X3Qgc3ZxYWRkX25fdThfbShzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWRkX25fdTMyX20pKSkKc3Z1aW50MzJfdCBzdnFhZGRfbl91MzJfbShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhZGRfbl91NjRfbSkpKQpzdnVpbnQ2NF90IHN2cWFkZF9uX3U2NF9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFkZF9uX3UxNl9tKSkpCnN2dWludDE2X3Qgc3ZxYWRkX25fdTE2X20oc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWRkX25fdThfeCkpKQpzdnVpbnQ4X3Qgc3ZxYWRkX25fdThfeChzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWRkX25fdTMyX3gpKSkKc3Z1aW50MzJfdCBzdnFhZGRfbl91MzJfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhZGRfbl91NjRfeCkpKQpzdnVpbnQ2NF90IHN2cWFkZF9uX3U2NF94KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFkZF9uX3UxNl94KSkpCnN2dWludDE2X3Qgc3ZxYWRkX25fdTE2X3goc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWRkX25fdThfeikpKQpzdnVpbnQ4X3Qgc3ZxYWRkX25fdThfeihzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWRkX25fdTMyX3opKSkKc3Z1aW50MzJfdCBzdnFhZGRfbl91MzJfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhZGRfbl91NjRfeikpKQpzdnVpbnQ2NF90IHN2cWFkZF9uX3U2NF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFkZF9uX3UxNl96KSkpCnN2dWludDE2X3Qgc3ZxYWRkX25fdTE2X3ooc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWRkX3M4X20pKSkKc3ZpbnQ4X3Qgc3ZxYWRkX3M4X20oc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFkZF9zMzJfbSkpKQpzdmludDMyX3Qgc3ZxYWRkX3MzMl9tKHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFkZF9zNjRfbSkpKQpzdmludDY0X3Qgc3ZxYWRkX3M2NF9tKHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFkZF9zMTZfbSkpKQpzdmludDE2X3Qgc3ZxYWRkX3MxNl9tKHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFkZF9zOF94KSkpCnN2aW50OF90IHN2cWFkZF9zOF94KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhZGRfczMyX3gpKSkKc3ZpbnQzMl90IHN2cWFkZF9zMzJfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhZGRfczY0X3gpKSkKc3ZpbnQ2NF90IHN2cWFkZF9zNjRfeChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhZGRfczE2X3gpKSkKc3ZpbnQxNl90IHN2cWFkZF9zMTZfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhZGRfczhfeikpKQpzdmludDhfdCBzdnFhZGRfczhfeihzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWRkX3MzMl96KSkpCnN2aW50MzJfdCBzdnFhZGRfczMyX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWRkX3M2NF96KSkpCnN2aW50NjRfdCBzdnFhZGRfczY0X3ooc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWRkX3MxNl96KSkpCnN2aW50MTZfdCBzdnFhZGRfczE2X3ooc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWRkX3U4X20pKSkKc3Z1aW50OF90IHN2cWFkZF91OF9tKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFkZF91MzJfbSkpKQpzdnVpbnQzMl90IHN2cWFkZF91MzJfbShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFkZF91NjRfbSkpKQpzdnVpbnQ2NF90IHN2cWFkZF91NjRfbShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFkZF91MTZfbSkpKQpzdnVpbnQxNl90IHN2cWFkZF91MTZfbShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFkZF91OF94KSkpCnN2dWludDhfdCBzdnFhZGRfdThfeChzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhZGRfdTMyX3gpKSkKc3Z1aW50MzJfdCBzdnFhZGRfdTMyX3goc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhZGRfdTY0X3gpKSkKc3Z1aW50NjRfdCBzdnFhZGRfdTY0X3goc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhZGRfdTE2X3gpKSkKc3Z1aW50MTZfdCBzdnFhZGRfdTE2X3goc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhZGRfdThfeikpKQpzdnVpbnQ4X3Qgc3ZxYWRkX3U4X3ooc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWRkX3UzMl96KSkpCnN2dWludDMyX3Qgc3ZxYWRkX3UzMl96KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWRkX3U2NF96KSkpCnN2dWludDY0X3Qgc3ZxYWRkX3U2NF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWRkX3UxNl96KSkpCnN2dWludDE2X3Qgc3ZxYWRkX3UxNl96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxY2FkZF9zOCkpKQpzdmludDhfdCBzdnFjYWRkX3M4KHN2aW50OF90LCBzdmludDhfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFjYWRkX3MzMikpKQpzdmludDMyX3Qgc3ZxY2FkZF9zMzIoc3ZpbnQzMl90LCBzdmludDMyX3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxY2FkZF9zNjQpKSkKc3ZpbnQ2NF90IHN2cWNhZGRfczY0KHN2aW50NjRfdCwgc3ZpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWNhZGRfczE2KSkpCnN2aW50MTZfdCBzdnFjYWRkX3MxNihzdmludDE2X3QsIHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbWxhbGJfbl9zMzIpKSkKc3ZpbnQzMl90IHN2cWRtbGFsYl9uX3MzMihzdmludDMyX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRtbGFsYl9uX3M2NCkpKQpzdmludDY0X3Qgc3ZxZG1sYWxiX25fczY0KHN2aW50NjRfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZG1sYWxiX25fczE2KSkpCnN2aW50MTZfdCBzdnFkbWxhbGJfbl9zMTYoc3ZpbnQxNl90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZG1sYWxiX3MzMikpKQpzdmludDMyX3Qgc3ZxZG1sYWxiX3MzMihzdmludDMyX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZG1sYWxiX3M2NCkpKQpzdmludDY0X3Qgc3ZxZG1sYWxiX3M2NChzdmludDY0X3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZG1sYWxiX3MxNikpKQpzdmludDE2X3Qgc3ZxZG1sYWxiX3MxNihzdmludDE2X3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRtbGFsYl9sYW5lX3MzMikpKQpzdmludDMyX3Qgc3ZxZG1sYWxiX2xhbmVfczMyKHN2aW50MzJfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZG1sYWxiX2xhbmVfczY0KSkpCnN2aW50NjRfdCBzdnFkbWxhbGJfbGFuZV9zNjQoc3ZpbnQ2NF90LCBzdmludDMyX3QsIHN2aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbWxhbGJ0X25fczMyKSkpCnN2aW50MzJfdCBzdnFkbWxhbGJ0X25fczMyKHN2aW50MzJfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZG1sYWxidF9uX3M2NCkpKQpzdmludDY0X3Qgc3ZxZG1sYWxidF9uX3M2NChzdmludDY0X3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRtbGFsYnRfbl9zMTYpKSkKc3ZpbnQxNl90IHN2cWRtbGFsYnRfbl9zMTYoc3ZpbnQxNl90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZG1sYWxidF9zMzIpKSkKc3ZpbnQzMl90IHN2cWRtbGFsYnRfczMyKHN2aW50MzJfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbWxhbGJ0X3M2NCkpKQpzdmludDY0X3Qgc3ZxZG1sYWxidF9zNjQoc3ZpbnQ2NF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRtbGFsYnRfczE2KSkpCnN2aW50MTZfdCBzdnFkbWxhbGJ0X3MxNihzdmludDE2X3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRtbGFsdF9uX3MzMikpKQpzdmludDMyX3Qgc3ZxZG1sYWx0X25fczMyKHN2aW50MzJfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZG1sYWx0X25fczY0KSkpCnN2aW50NjRfdCBzdnFkbWxhbHRfbl9zNjQoc3ZpbnQ2NF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbWxhbHRfbl9zMTYpKSkKc3ZpbnQxNl90IHN2cWRtbGFsdF9uX3MxNihzdmludDE2X3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbWxhbHRfczMyKSkpCnN2aW50MzJfdCBzdnFkbWxhbHRfczMyKHN2aW50MzJfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbWxhbHRfczY0KSkpCnN2aW50NjRfdCBzdnFkbWxhbHRfczY0KHN2aW50NjRfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbWxhbHRfczE2KSkpCnN2aW50MTZfdCBzdnFkbWxhbHRfczE2KHN2aW50MTZfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZG1sYWx0X2xhbmVfczMyKSkpCnN2aW50MzJfdCBzdnFkbWxhbHRfbGFuZV9zMzIoc3ZpbnQzMl90LCBzdmludDE2X3QsIHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbWxhbHRfbGFuZV9zNjQpKSkKc3ZpbnQ2NF90IHN2cWRtbGFsdF9sYW5lX3M2NChzdmludDY0X3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRtbHNsYl9uX3MzMikpKQpzdmludDMyX3Qgc3ZxZG1sc2xiX25fczMyKHN2aW50MzJfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZG1sc2xiX25fczY0KSkpCnN2aW50NjRfdCBzdnFkbWxzbGJfbl9zNjQoc3ZpbnQ2NF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbWxzbGJfbl9zMTYpKSkKc3ZpbnQxNl90IHN2cWRtbHNsYl9uX3MxNihzdmludDE2X3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbWxzbGJfczMyKSkpCnN2aW50MzJfdCBzdnFkbWxzbGJfczMyKHN2aW50MzJfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbWxzbGJfczY0KSkpCnN2aW50NjRfdCBzdnFkbWxzbGJfczY0KHN2aW50NjRfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbWxzbGJfczE2KSkpCnN2aW50MTZfdCBzdnFkbWxzbGJfczE2KHN2aW50MTZfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZG1sc2xiX2xhbmVfczMyKSkpCnN2aW50MzJfdCBzdnFkbWxzbGJfbGFuZV9zMzIoc3ZpbnQzMl90LCBzdmludDE2X3QsIHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbWxzbGJfbGFuZV9zNjQpKSkKc3ZpbnQ2NF90IHN2cWRtbHNsYl9sYW5lX3M2NChzdmludDY0X3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRtbHNsYnRfbl9zMzIpKSkKc3ZpbnQzMl90IHN2cWRtbHNsYnRfbl9zMzIoc3ZpbnQzMl90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbWxzbGJ0X25fczY0KSkpCnN2aW50NjRfdCBzdnFkbWxzbGJ0X25fczY0KHN2aW50NjRfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZG1sc2xidF9uX3MxNikpKQpzdmludDE2X3Qgc3ZxZG1sc2xidF9uX3MxNihzdmludDE2X3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbWxzbGJ0X3MzMikpKQpzdmludDMyX3Qgc3ZxZG1sc2xidF9zMzIoc3ZpbnQzMl90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRtbHNsYnRfczY0KSkpCnN2aW50NjRfdCBzdnFkbWxzbGJ0X3M2NChzdmludDY0X3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZG1sc2xidF9zMTYpKSkKc3ZpbnQxNl90IHN2cWRtbHNsYnRfczE2KHN2aW50MTZfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZG1sc2x0X25fczMyKSkpCnN2aW50MzJfdCBzdnFkbWxzbHRfbl9zMzIoc3ZpbnQzMl90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbWxzbHRfbl9zNjQpKSkKc3ZpbnQ2NF90IHN2cWRtbHNsdF9uX3M2NChzdmludDY0X3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRtbHNsdF9uX3MxNikpKQpzdmludDE2X3Qgc3ZxZG1sc2x0X25fczE2KHN2aW50MTZfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRtbHNsdF9zMzIpKSkKc3ZpbnQzMl90IHN2cWRtbHNsdF9zMzIoc3ZpbnQzMl90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRtbHNsdF9zNjQpKSkKc3ZpbnQ2NF90IHN2cWRtbHNsdF9zNjQoc3ZpbnQ2NF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRtbHNsdF9zMTYpKSkKc3ZpbnQxNl90IHN2cWRtbHNsdF9zMTYoc3ZpbnQxNl90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbWxzbHRfbGFuZV9zMzIpKSkKc3ZpbnQzMl90IHN2cWRtbHNsdF9sYW5lX3MzMihzdmludDMyX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRtbHNsdF9sYW5lX3M2NCkpKQpzdmludDY0X3Qgc3ZxZG1sc2x0X2xhbmVfczY0KHN2aW50NjRfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZG11bGhfbl9zOCkpKQpzdmludDhfdCBzdnFkbXVsaF9uX3M4KHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbXVsaF9uX3MzMikpKQpzdmludDMyX3Qgc3ZxZG11bGhfbl9zMzIoc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZG11bGhfbl9zNjQpKSkKc3ZpbnQ2NF90IHN2cWRtdWxoX25fczY0KHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRtdWxoX25fczE2KSkpCnN2aW50MTZfdCBzdnFkbXVsaF9uX3MxNihzdmludDE2X3QsIGludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbXVsaF9zOCkpKQpzdmludDhfdCBzdnFkbXVsaF9zOChzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbXVsaF9zMzIpKSkKc3ZpbnQzMl90IHN2cWRtdWxoX3MzMihzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRtdWxoX3M2NCkpKQpzdmludDY0X3Qgc3ZxZG11bGhfczY0KHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZG11bGhfczE2KSkpCnN2aW50MTZfdCBzdnFkbXVsaF9zMTYoc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbXVsaF9sYW5lX3MzMikpKQpzdmludDMyX3Qgc3ZxZG11bGhfbGFuZV9zMzIoc3ZpbnQzMl90LCBzdmludDMyX3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZG11bGhfbGFuZV9zNjQpKSkKc3ZpbnQ2NF90IHN2cWRtdWxoX2xhbmVfczY0KHN2aW50NjRfdCwgc3ZpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRtdWxoX2xhbmVfczE2KSkpCnN2aW50MTZfdCBzdnFkbXVsaF9sYW5lX3MxNihzdmludDE2X3QsIHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbXVsbGJfbl9zMzIpKSkKc3ZpbnQzMl90IHN2cWRtdWxsYl9uX3MzMihzdmludDE2X3QsIGludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbXVsbGJfbl9zNjQpKSkKc3ZpbnQ2NF90IHN2cWRtdWxsYl9uX3M2NChzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbXVsbGJfbl9zMTYpKSkKc3ZpbnQxNl90IHN2cWRtdWxsYl9uX3MxNihzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZG11bGxiX3MzMikpKQpzdmludDMyX3Qgc3ZxZG11bGxiX3MzMihzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRtdWxsYl9zNjQpKSkKc3ZpbnQ2NF90IHN2cWRtdWxsYl9zNjQoc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbXVsbGJfczE2KSkpCnN2aW50MTZfdCBzdnFkbXVsbGJfczE2KHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRtdWxsYl9sYW5lX3MzMikpKQpzdmludDMyX3Qgc3ZxZG11bGxiX2xhbmVfczMyKHN2aW50MTZfdCwgc3ZpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRtdWxsYl9sYW5lX3M2NCkpKQpzdmludDY0X3Qgc3ZxZG11bGxiX2xhbmVfczY0KHN2aW50MzJfdCwgc3ZpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRtdWxsdF9uX3MzMikpKQpzdmludDMyX3Qgc3ZxZG11bGx0X25fczMyKHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRtdWxsdF9uX3M2NCkpKQpzdmludDY0X3Qgc3ZxZG11bGx0X25fczY0KHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRtdWxsdF9uX3MxNikpKQpzdmludDE2X3Qgc3ZxZG11bGx0X25fczE2KHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbXVsbHRfczMyKSkpCnN2aW50MzJfdCBzdnFkbXVsbHRfczMyKHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZG11bGx0X3M2NCkpKQpzdmludDY0X3Qgc3ZxZG11bGx0X3M2NChzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRtdWxsdF9zMTYpKSkKc3ZpbnQxNl90IHN2cWRtdWxsdF9zMTYoc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZG11bGx0X2xhbmVfczMyKSkpCnN2aW50MzJfdCBzdnFkbXVsbHRfbGFuZV9zMzIoc3ZpbnQxNl90LCBzdmludDE2X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZG11bGx0X2xhbmVfczY0KSkpCnN2aW50NjRfdCBzdnFkbXVsbHRfbGFuZV9zNjQoc3ZpbnQzMl90LCBzdmludDMyX3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxbmVnX3M4X20pKSkKc3ZpbnQ4X3Qgc3ZxbmVnX3M4X20oc3ZpbnQ4X3QsIHN2Ym9vbF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cW5lZ19zMzJfbSkpKQpzdmludDMyX3Qgc3ZxbmVnX3MzMl9tKHN2aW50MzJfdCwgc3Zib29sX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cW5lZ19zNjRfbSkpKQpzdmludDY0X3Qgc3ZxbmVnX3M2NF9tKHN2aW50NjRfdCwgc3Zib29sX3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cW5lZ19zMTZfbSkpKQpzdmludDE2X3Qgc3ZxbmVnX3MxNl9tKHN2aW50MTZfdCwgc3Zib29sX3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cW5lZ19zOF94KSkpCnN2aW50OF90IHN2cW5lZ19zOF94KHN2Ym9vbF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cW5lZ19zMzJfeCkpKQpzdmludDMyX3Qgc3ZxbmVnX3MzMl94KHN2Ym9vbF90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFuZWdfczY0X3gpKSkKc3ZpbnQ2NF90IHN2cW5lZ19zNjRfeChzdmJvb2xfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxbmVnX3MxNl94KSkpCnN2aW50MTZfdCBzdnFuZWdfczE2X3goc3Zib29sX3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cW5lZ19zOF96KSkpCnN2aW50OF90IHN2cW5lZ19zOF96KHN2Ym9vbF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cW5lZ19zMzJfeikpKQpzdmludDMyX3Qgc3ZxbmVnX3MzMl96KHN2Ym9vbF90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFuZWdfczY0X3opKSkKc3ZpbnQ2NF90IHN2cW5lZ19zNjRfeihzdmJvb2xfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxbmVnX3MxNl96KSkpCnN2aW50MTZfdCBzdnFuZWdfczE2X3ooc3Zib29sX3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJkY21sYWhfczgpKSkKc3ZpbnQ4X3Qgc3ZxcmRjbWxhaF9zOChzdmludDhfdCwgc3ZpbnQ4X3QsIHN2aW50OF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJkY21sYWhfczMyKSkpCnN2aW50MzJfdCBzdnFyZGNtbGFoX3MzMihzdmludDMyX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJkY21sYWhfczY0KSkpCnN2aW50NjRfdCBzdnFyZGNtbGFoX3M2NChzdmludDY0X3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJkY21sYWhfczE2KSkpCnN2aW50MTZfdCBzdnFyZGNtbGFoX3MxNihzdmludDE2X3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJkY21sYWhfbGFuZV9zMzIpKSkKc3ZpbnQzMl90IHN2cXJkY21sYWhfbGFuZV9zMzIoc3ZpbnQzMl90LCBzdmludDMyX3QsIHN2aW50MzJfdCwgdWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcmRjbWxhaF9sYW5lX3MxNikpKQpzdmludDE2X3Qgc3ZxcmRjbWxhaF9sYW5lX3MxNihzdmludDE2X3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90LCB1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyZG1sYWhfbl9zOCkpKQpzdmludDhfdCBzdnFyZG1sYWhfbl9zOChzdmludDhfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJkbWxhaF9uX3MzMikpKQpzdmludDMyX3Qgc3ZxcmRtbGFoX25fczMyKHN2aW50MzJfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcmRtbGFoX25fczY0KSkpCnN2aW50NjRfdCBzdnFyZG1sYWhfbl9zNjQoc3ZpbnQ2NF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyZG1sYWhfbl9zMTYpKSkKc3ZpbnQxNl90IHN2cXJkbWxhaF9uX3MxNihzdmludDE2X3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJkbWxhaF9zOCkpKQpzdmludDhfdCBzdnFyZG1sYWhfczgoc3ZpbnQ4X3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJkbWxhaF9zMzIpKSkKc3ZpbnQzMl90IHN2cXJkbWxhaF9zMzIoc3ZpbnQzMl90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJkbWxhaF9zNjQpKSkKc3ZpbnQ2NF90IHN2cXJkbWxhaF9zNjQoc3ZpbnQ2NF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJkbWxhaF9zMTYpKSkKc3ZpbnQxNl90IHN2cXJkbWxhaF9zMTYoc3ZpbnQxNl90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJkbWxhaF9sYW5lX3MzMikpKQpzdmludDMyX3Qgc3ZxcmRtbGFoX2xhbmVfczMyKHN2aW50MzJfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcmRtbGFoX2xhbmVfczY0KSkpCnN2aW50NjRfdCBzdnFyZG1sYWhfbGFuZV9zNjQoc3ZpbnQ2NF90LCBzdmludDY0X3QsIHN2aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyZG1sYWhfbGFuZV9zMTYpKSkKc3ZpbnQxNl90IHN2cXJkbWxhaF9sYW5lX3MxNihzdmludDE2X3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJkbWxzaF9uX3M4KSkpCnN2aW50OF90IHN2cXJkbWxzaF9uX3M4KHN2aW50OF90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcmRtbHNoX25fczMyKSkpCnN2aW50MzJfdCBzdnFyZG1sc2hfbl9zMzIoc3ZpbnQzMl90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyZG1sc2hfbl9zNjQpKSkKc3ZpbnQ2NF90IHN2cXJkbWxzaF9uX3M2NChzdmludDY0X3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJkbWxzaF9uX3MxNikpKQpzdmludDE2X3Qgc3ZxcmRtbHNoX25fczE2KHN2aW50MTZfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcmRtbHNoX3M4KSkpCnN2aW50OF90IHN2cXJkbWxzaF9zOChzdmludDhfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcmRtbHNoX3MzMikpKQpzdmludDMyX3Qgc3ZxcmRtbHNoX3MzMihzdmludDMyX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcmRtbHNoX3M2NCkpKQpzdmludDY0X3Qgc3ZxcmRtbHNoX3M2NChzdmludDY0X3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcmRtbHNoX3MxNikpKQpzdmludDE2X3Qgc3ZxcmRtbHNoX3MxNihzdmludDE2X3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcmRtbHNoX2xhbmVfczMyKSkpCnN2aW50MzJfdCBzdnFyZG1sc2hfbGFuZV9zMzIoc3ZpbnQzMl90LCBzdmludDMyX3QsIHN2aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyZG1sc2hfbGFuZV9zNjQpKSkKc3ZpbnQ2NF90IHN2cXJkbWxzaF9sYW5lX3M2NChzdmludDY0X3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJkbWxzaF9sYW5lX3MxNikpKQpzdmludDE2X3Qgc3ZxcmRtbHNoX2xhbmVfczE2KHN2aW50MTZfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcmRtdWxoX25fczgpKSkKc3ZpbnQ4X3Qgc3ZxcmRtdWxoX25fczgoc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJkbXVsaF9uX3MzMikpKQpzdmludDMyX3Qgc3ZxcmRtdWxoX25fczMyKHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJkbXVsaF9uX3M2NCkpKQpzdmludDY0X3Qgc3ZxcmRtdWxoX25fczY0KHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJkbXVsaF9uX3MxNikpKQpzdmludDE2X3Qgc3ZxcmRtdWxoX25fczE2KHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJkbXVsaF9zOCkpKQpzdmludDhfdCBzdnFyZG11bGhfczgoc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcmRtdWxoX3MzMikpKQpzdmludDMyX3Qgc3ZxcmRtdWxoX3MzMihzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJkbXVsaF9zNjQpKSkKc3ZpbnQ2NF90IHN2cXJkbXVsaF9zNjQoc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyZG11bGhfczE2KSkpCnN2aW50MTZfdCBzdnFyZG11bGhfczE2KHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcmRtdWxoX2xhbmVfczMyKSkpCnN2aW50MzJfdCBzdnFyZG11bGhfbGFuZV9zMzIoc3ZpbnQzMl90LCBzdmludDMyX3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcmRtdWxoX2xhbmVfczY0KSkpCnN2aW50NjRfdCBzdnFyZG11bGhfbGFuZV9zNjQoc3ZpbnQ2NF90LCBzdmludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcmRtdWxoX2xhbmVfczE2KSkpCnN2aW50MTZfdCBzdnFyZG11bGhfbGFuZV9zMTYoc3ZpbnQxNl90LCBzdmludDE2X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcnNobF9uX3M4X20pKSkKc3ZpbnQ4X3Qgc3ZxcnNobF9uX3M4X20oc3Zib29sX3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hsX25fczMyX20pKSkKc3ZpbnQzMl90IHN2cXJzaGxfbl9zMzJfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcnNobF9uX3M2NF9tKSkpCnN2aW50NjRfdCBzdnFyc2hsX25fczY0X20oc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJzaGxfbl9zMTZfbSkpKQpzdmludDE2X3Qgc3ZxcnNobF9uX3MxNl9tKHN2Ym9vbF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hsX25fczhfeCkpKQpzdmludDhfdCBzdnFyc2hsX25fczhfeChzdmJvb2xfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJzaGxfbl9zMzJfeCkpKQpzdmludDMyX3Qgc3ZxcnNobF9uX3MzMl94KHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hsX25fczY0X3gpKSkKc3ZpbnQ2NF90IHN2cXJzaGxfbl9zNjRfeChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcnNobF9uX3MxNl94KSkpCnN2aW50MTZfdCBzdnFyc2hsX25fczE2X3goc3Zib29sX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJzaGxfbl9zOF96KSkpCnN2aW50OF90IHN2cXJzaGxfbl9zOF96KHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcnNobF9uX3MzMl96KSkpCnN2aW50MzJfdCBzdnFyc2hsX25fczMyX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJzaGxfbl9zNjRfeikpKQpzdmludDY0X3Qgc3ZxcnNobF9uX3M2NF96KHN2Ym9vbF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hsX25fczE2X3opKSkKc3ZpbnQxNl90IHN2cXJzaGxfbl9zMTZfeihzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcnNobF9uX3U4X20pKSkKc3Z1aW50OF90IHN2cXJzaGxfbl91OF9tKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIGludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJzaGxfbl91MzJfbSkpKQpzdnVpbnQzMl90IHN2cXJzaGxfbl91MzJfbShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJzaGxfbl91NjRfbSkpKQpzdnVpbnQ2NF90IHN2cXJzaGxfbl91NjRfbShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJzaGxfbl91MTZfbSkpKQpzdnVpbnQxNl90IHN2cXJzaGxfbl91MTZfbShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJzaGxfbl91OF94KSkpCnN2dWludDhfdCBzdnFyc2hsX25fdThfeChzdmJvb2xfdCwgc3Z1aW50OF90LCBpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hsX25fdTMyX3gpKSkKc3Z1aW50MzJfdCBzdnFyc2hsX25fdTMyX3goc3Zib29sX3QsIHN2dWludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hsX25fdTY0X3gpKSkKc3Z1aW50NjRfdCBzdnFyc2hsX25fdTY0X3goc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hsX25fdTE2X3gpKSkKc3Z1aW50MTZfdCBzdnFyc2hsX25fdTE2X3goc3Zib29sX3QsIHN2dWludDE2X3QsIGludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hsX25fdThfeikpKQpzdnVpbnQ4X3Qgc3ZxcnNobF9uX3U4X3ooc3Zib29sX3QsIHN2dWludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcnNobF9uX3UzMl96KSkpCnN2dWludDMyX3Qgc3ZxcnNobF9uX3UzMl96KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcnNobF9uX3U2NF96KSkpCnN2dWludDY0X3Qgc3ZxcnNobF9uX3U2NF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcnNobF9uX3UxNl96KSkpCnN2dWludDE2X3Qgc3ZxcnNobF9uX3UxNl96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcnNobF9zOF9tKSkpCnN2aW50OF90IHN2cXJzaGxfczhfbShzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcnNobF9zMzJfbSkpKQpzdmludDMyX3Qgc3ZxcnNobF9zMzJfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hsX3M2NF9tKSkpCnN2aW50NjRfdCBzdnFyc2hsX3M2NF9tKHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJzaGxfczE2X20pKSkKc3ZpbnQxNl90IHN2cXJzaGxfczE2X20oc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcnNobF9zOF94KSkpCnN2aW50OF90IHN2cXJzaGxfczhfeChzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcnNobF9zMzJfeCkpKQpzdmludDMyX3Qgc3ZxcnNobF9zMzJfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hsX3M2NF94KSkpCnN2aW50NjRfdCBzdnFyc2hsX3M2NF94KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJzaGxfczE2X3gpKSkKc3ZpbnQxNl90IHN2cXJzaGxfczE2X3goc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcnNobF9zOF96KSkpCnN2aW50OF90IHN2cXJzaGxfczhfeihzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcnNobF9zMzJfeikpKQpzdmludDMyX3Qgc3ZxcnNobF9zMzJfeihzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hsX3M2NF96KSkpCnN2aW50NjRfdCBzdnFyc2hsX3M2NF96KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJzaGxfczE2X3opKSkKc3ZpbnQxNl90IHN2cXJzaGxfczE2X3ooc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcnNobF91OF9tKSkpCnN2dWludDhfdCBzdnFyc2hsX3U4X20oc3Zib29sX3QsIHN2dWludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hsX3UzMl9tKSkpCnN2dWludDMyX3Qgc3ZxcnNobF91MzJfbShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcnNobF91NjRfbSkpKQpzdnVpbnQ2NF90IHN2cXJzaGxfdTY0X20oc3Zib29sX3QsIHN2dWludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJzaGxfdTE2X20pKSkKc3Z1aW50MTZfdCBzdnFyc2hsX3UxNl9tKHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hsX3U4X3gpKSkKc3Z1aW50OF90IHN2cXJzaGxfdThfeChzdmJvb2xfdCwgc3Z1aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJzaGxfdTMyX3gpKSkKc3Z1aW50MzJfdCBzdnFyc2hsX3UzMl94KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hsX3U2NF94KSkpCnN2dWludDY0X3Qgc3ZxcnNobF91NjRfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcnNobF91MTZfeCkpKQpzdnVpbnQxNl90IHN2cXJzaGxfdTE2X3goc3Zib29sX3QsIHN2dWludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJzaGxfdThfeikpKQpzdnVpbnQ4X3Qgc3ZxcnNobF91OF96KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcnNobF91MzJfeikpKQpzdnVpbnQzMl90IHN2cXJzaGxfdTMyX3ooc3Zib29sX3QsIHN2dWludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJzaGxfdTY0X3opKSkKc3Z1aW50NjRfdCBzdnFyc2hsX3U2NF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hsX3UxNl96KSkpCnN2dWludDE2X3Qgc3ZxcnNobF91MTZfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcnNocm5iX25fczMyKSkpCnN2aW50MTZfdCBzdnFyc2hybmJfbl9zMzIoc3ZpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJzaHJuYl9uX3M2NCkpKQpzdmludDMyX3Qgc3ZxcnNocm5iX25fczY0KHN2aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hybmJfbl9zMTYpKSkKc3ZpbnQ4X3Qgc3ZxcnNocm5iX25fczE2KHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hybmJfbl91MzIpKSkKc3Z1aW50MTZfdCBzdnFyc2hybmJfbl91MzIoc3Z1aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hybmJfbl91NjQpKSkKc3Z1aW50MzJfdCBzdnFyc2hybmJfbl91NjQoc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hybmJfbl91MTYpKSkKc3Z1aW50OF90IHN2cXJzaHJuYl9uX3UxNihzdnVpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJzaHJudF9uX3MzMikpKQpzdmludDE2X3Qgc3ZxcnNocm50X25fczMyKHN2aW50MTZfdCwgc3ZpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJzaHJudF9uX3M2NCkpKQpzdmludDMyX3Qgc3ZxcnNocm50X25fczY0KHN2aW50MzJfdCwgc3ZpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJzaHJudF9uX3MxNikpKQpzdmludDhfdCBzdnFyc2hybnRfbl9zMTYoc3ZpbnQ4X3QsIHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hybnRfbl91MzIpKSkKc3Z1aW50MTZfdCBzdnFyc2hybnRfbl91MzIoc3Z1aW50MTZfdCwgc3Z1aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hybnRfbl91NjQpKSkKc3Z1aW50MzJfdCBzdnFyc2hybnRfbl91NjQoc3Z1aW50MzJfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hybnRfbl91MTYpKSkKc3Z1aW50OF90IHN2cXJzaHJudF9uX3UxNihzdnVpbnQ4X3QsIHN2dWludDE2X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcnNocnVuYl9uX3MzMikpKQpzdnVpbnQxNl90IHN2cXJzaHJ1bmJfbl9zMzIoc3ZpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJzaHJ1bmJfbl9zNjQpKSkKc3Z1aW50MzJfdCBzdnFyc2hydW5iX25fczY0KHN2aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hydW5iX25fczE2KSkpCnN2dWludDhfdCBzdnFyc2hydW5iX25fczE2KHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hydW50X25fczMyKSkpCnN2dWludDE2X3Qgc3ZxcnNocnVudF9uX3MzMihzdnVpbnQxNl90LCBzdmludDMyX3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcnNocnVudF9uX3M2NCkpKQpzdnVpbnQzMl90IHN2cXJzaHJ1bnRfbl9zNjQoc3Z1aW50MzJfdCwgc3ZpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJzaHJ1bnRfbl9zMTYpKSkKc3Z1aW50OF90IHN2cXJzaHJ1bnRfbl9zMTYoc3Z1aW50OF90LCBzdmludDE2X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hsX25fczhfbSkpKQpzdmludDhfdCBzdnFzaGxfbl9zOF9tKHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hsX25fczMyX20pKSkKc3ZpbnQzMl90IHN2cXNobF9uX3MzMl9tKHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaGxfbl9zNjRfbSkpKQpzdmludDY0X3Qgc3Zxc2hsX25fczY0X20oc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNobF9uX3MxNl9tKSkpCnN2aW50MTZfdCBzdnFzaGxfbl9zMTZfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hsX25fczhfeCkpKQpzdmludDhfdCBzdnFzaGxfbl9zOF94KHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hsX25fczMyX3gpKSkKc3ZpbnQzMl90IHN2cXNobF9uX3MzMl94KHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaGxfbl9zNjRfeCkpKQpzdmludDY0X3Qgc3Zxc2hsX25fczY0X3goc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNobF9uX3MxNl94KSkpCnN2aW50MTZfdCBzdnFzaGxfbl9zMTZfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hsX25fczhfeikpKQpzdmludDhfdCBzdnFzaGxfbl9zOF96KHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hsX25fczMyX3opKSkKc3ZpbnQzMl90IHN2cXNobF9uX3MzMl96KHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaGxfbl9zNjRfeikpKQpzdmludDY0X3Qgc3Zxc2hsX25fczY0X3ooc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNobF9uX3MxNl96KSkpCnN2aW50MTZfdCBzdnFzaGxfbl9zMTZfeihzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hsX25fdThfbSkpKQpzdnVpbnQ4X3Qgc3Zxc2hsX25fdThfbShzdmJvb2xfdCwgc3Z1aW50OF90LCBpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaGxfbl91MzJfbSkpKQpzdnVpbnQzMl90IHN2cXNobF9uX3UzMl9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hsX25fdTY0X20pKSkKc3Z1aW50NjRfdCBzdnFzaGxfbl91NjRfbShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNobF9uX3UxNl9tKSkpCnN2dWludDE2X3Qgc3Zxc2hsX25fdTE2X20oc3Zib29sX3QsIHN2dWludDE2X3QsIGludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaGxfbl91OF94KSkpCnN2dWludDhfdCBzdnFzaGxfbl91OF94KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIGludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNobF9uX3UzMl94KSkpCnN2dWludDMyX3Qgc3Zxc2hsX25fdTMyX3goc3Zib29sX3QsIHN2dWludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaGxfbl91NjRfeCkpKQpzdnVpbnQ2NF90IHN2cXNobF9uX3U2NF94KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hsX25fdTE2X3gpKSkKc3Z1aW50MTZfdCBzdnFzaGxfbl91MTZfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNobF9uX3U4X3opKSkKc3Z1aW50OF90IHN2cXNobF9uX3U4X3ooc3Zib29sX3QsIHN2dWludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hsX25fdTMyX3opKSkKc3Z1aW50MzJfdCBzdnFzaGxfbl91MzJfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNobF9uX3U2NF96KSkpCnN2dWludDY0X3Qgc3Zxc2hsX25fdTY0X3ooc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaGxfbl91MTZfeikpKQpzdnVpbnQxNl90IHN2cXNobF9uX3UxNl96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hsX3M4X20pKSkKc3ZpbnQ4X3Qgc3Zxc2hsX3M4X20oc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNobF9zMzJfbSkpKQpzdmludDMyX3Qgc3Zxc2hsX3MzMl9tKHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNobF9zNjRfbSkpKQpzdmludDY0X3Qgc3Zxc2hsX3M2NF9tKHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNobF9zMTZfbSkpKQpzdmludDE2X3Qgc3Zxc2hsX3MxNl9tKHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNobF9zOF94KSkpCnN2aW50OF90IHN2cXNobF9zOF94KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaGxfczMyX3gpKSkKc3ZpbnQzMl90IHN2cXNobF9zMzJfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaGxfczY0X3gpKSkKc3ZpbnQ2NF90IHN2cXNobF9zNjRfeChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaGxfczE2X3gpKSkKc3ZpbnQxNl90IHN2cXNobF9zMTZfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaGxfczhfeikpKQpzdmludDhfdCBzdnFzaGxfczhfeihzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hsX3MzMl96KSkpCnN2aW50MzJfdCBzdnFzaGxfczMyX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hsX3M2NF96KSkpCnN2aW50NjRfdCBzdnFzaGxfczY0X3ooc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hsX3MxNl96KSkpCnN2aW50MTZfdCBzdnFzaGxfczE2X3ooc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hsX3U4X20pKSkKc3Z1aW50OF90IHN2cXNobF91OF9tKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hsX3UzMl9tKSkpCnN2dWludDMyX3Qgc3Zxc2hsX3UzMl9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaGxfdTY0X20pKSkKc3Z1aW50NjRfdCBzdnFzaGxfdTY0X20oc3Zib29sX3QsIHN2dWludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNobF91MTZfbSkpKQpzdnVpbnQxNl90IHN2cXNobF91MTZfbShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hsX3U4X3gpKSkKc3Z1aW50OF90IHN2cXNobF91OF94KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hsX3UzMl94KSkpCnN2dWludDMyX3Qgc3Zxc2hsX3UzMl94KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaGxfdTY0X3gpKSkKc3Z1aW50NjRfdCBzdnFzaGxfdTY0X3goc3Zib29sX3QsIHN2dWludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNobF91MTZfeCkpKQpzdnVpbnQxNl90IHN2cXNobF91MTZfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hsX3U4X3opKSkKc3Z1aW50OF90IHN2cXNobF91OF96KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hsX3UzMl96KSkpCnN2dWludDMyX3Qgc3Zxc2hsX3UzMl96KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaGxfdTY0X3opKSkKc3Z1aW50NjRfdCBzdnFzaGxfdTY0X3ooc3Zib29sX3QsIHN2dWludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNobF91MTZfeikpKQpzdnVpbnQxNl90IHN2cXNobF91MTZfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hsdV9uX3M4X20pKSkKc3Z1aW50OF90IHN2cXNobHVfbl9zOF9tKHN2Ym9vbF90LCBzdmludDhfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaGx1X25fczMyX20pKSkKc3Z1aW50MzJfdCBzdnFzaGx1X25fczMyX20oc3Zib29sX3QsIHN2aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaGx1X25fczY0X20pKSkKc3Z1aW50NjRfdCBzdnFzaGx1X25fczY0X20oc3Zib29sX3QsIHN2aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaGx1X25fczE2X20pKSkKc3Z1aW50MTZfdCBzdnFzaGx1X25fczE2X20oc3Zib29sX3QsIHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaGx1X25fczhfeCkpKQpzdnVpbnQ4X3Qgc3Zxc2hsdV9uX3M4X3goc3Zib29sX3QsIHN2aW50OF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNobHVfbl9zMzJfeCkpKQpzdnVpbnQzMl90IHN2cXNobHVfbl9zMzJfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNobHVfbl9zNjRfeCkpKQpzdnVpbnQ2NF90IHN2cXNobHVfbl9zNjRfeChzdmJvb2xfdCwgc3ZpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNobHVfbl9zMTZfeCkpKQpzdnVpbnQxNl90IHN2cXNobHVfbl9zMTZfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNobHVfbl9zOF96KSkpCnN2dWludDhfdCBzdnFzaGx1X25fczhfeihzdmJvb2xfdCwgc3ZpbnQ4X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hsdV9uX3MzMl96KSkpCnN2dWludDMyX3Qgc3Zxc2hsdV9uX3MzMl96KHN2Ym9vbF90LCBzdmludDMyX3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hsdV9uX3M2NF96KSkpCnN2dWludDY0X3Qgc3Zxc2hsdV9uX3M2NF96KHN2Ym9vbF90LCBzdmludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hsdV9uX3MxNl96KSkpCnN2dWludDE2X3Qgc3Zxc2hsdV9uX3MxNl96KHN2Ym9vbF90LCBzdmludDE2X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hybmJfbl9zMzIpKSkKc3ZpbnQxNl90IHN2cXNocm5iX25fczMyKHN2aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaHJuYl9uX3M2NCkpKQpzdmludDMyX3Qgc3Zxc2hybmJfbl9zNjQoc3ZpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNocm5iX25fczE2KSkpCnN2aW50OF90IHN2cXNocm5iX25fczE2KHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaHJuYl9uX3UzMikpKQpzdnVpbnQxNl90IHN2cXNocm5iX25fdTMyKHN2dWludDMyX3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hybmJfbl91NjQpKSkKc3Z1aW50MzJfdCBzdnFzaHJuYl9uX3U2NChzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNocm5iX25fdTE2KSkpCnN2dWludDhfdCBzdnFzaHJuYl9uX3UxNihzdnVpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNocm50X25fczMyKSkpCnN2aW50MTZfdCBzdnFzaHJudF9uX3MzMihzdmludDE2X3QsIHN2aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaHJudF9uX3M2NCkpKQpzdmludDMyX3Qgc3Zxc2hybnRfbl9zNjQoc3ZpbnQzMl90LCBzdmludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hybnRfbl9zMTYpKSkKc3ZpbnQ4X3Qgc3Zxc2hybnRfbl9zMTYoc3ZpbnQ4X3QsIHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaHJudF9uX3UzMikpKQpzdnVpbnQxNl90IHN2cXNocm50X25fdTMyKHN2dWludDE2X3QsIHN2dWludDMyX3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hybnRfbl91NjQpKSkKc3Z1aW50MzJfdCBzdnFzaHJudF9uX3U2NChzdnVpbnQzMl90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNocm50X25fdTE2KSkpCnN2dWludDhfdCBzdnFzaHJudF9uX3UxNihzdnVpbnQ4X3QsIHN2dWludDE2X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hydW5iX25fczMyKSkpCnN2dWludDE2X3Qgc3Zxc2hydW5iX25fczMyKHN2aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaHJ1bmJfbl9zNjQpKSkKc3Z1aW50MzJfdCBzdnFzaHJ1bmJfbl9zNjQoc3ZpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNocnVuYl9uX3MxNikpKQpzdnVpbnQ4X3Qgc3Zxc2hydW5iX25fczE2KHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaHJ1bnRfbl9zMzIpKSkKc3Z1aW50MTZfdCBzdnFzaHJ1bnRfbl9zMzIoc3Z1aW50MTZfdCwgc3ZpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNocnVudF9uX3M2NCkpKQpzdnVpbnQzMl90IHN2cXNocnVudF9uX3M2NChzdnVpbnQzMl90LCBzdmludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hydW50X25fczE2KSkpCnN2dWludDhfdCBzdnFzaHJ1bnRfbl9zMTYoc3Z1aW50OF90LCBzdmludDE2X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3ViX25fczhfbSkpKQpzdmludDhfdCBzdnFzdWJfbl9zOF9tKHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3ViX25fczMyX20pKSkKc3ZpbnQzMl90IHN2cXN1Yl9uX3MzMl9tKHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJfbl9zNjRfbSkpKQpzdmludDY0X3Qgc3Zxc3ViX25fczY0X20oc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1Yl9uX3MxNl9tKSkpCnN2aW50MTZfdCBzdnFzdWJfbl9zMTZfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3ViX25fczhfeCkpKQpzdmludDhfdCBzdnFzdWJfbl9zOF94KHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3ViX25fczMyX3gpKSkKc3ZpbnQzMl90IHN2cXN1Yl9uX3MzMl94KHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJfbl9zNjRfeCkpKQpzdmludDY0X3Qgc3Zxc3ViX25fczY0X3goc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1Yl9uX3MxNl94KSkpCnN2aW50MTZfdCBzdnFzdWJfbl9zMTZfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3ViX25fczhfeikpKQpzdmludDhfdCBzdnFzdWJfbl9zOF96KHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3ViX25fczMyX3opKSkKc3ZpbnQzMl90IHN2cXN1Yl9uX3MzMl96KHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJfbl9zNjRfeikpKQpzdmludDY0X3Qgc3Zxc3ViX25fczY0X3ooc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1Yl9uX3MxNl96KSkpCnN2aW50MTZfdCBzdnFzdWJfbl9zMTZfeihzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3ViX25fdThfbSkpKQpzdnVpbnQ4X3Qgc3Zxc3ViX25fdThfbShzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3ViX25fdTMyX20pKSkKc3Z1aW50MzJfdCBzdnFzdWJfbl91MzJfbShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJfbl91NjRfbSkpKQpzdnVpbnQ2NF90IHN2cXN1Yl9uX3U2NF9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1Yl9uX3UxNl9tKSkpCnN2dWludDE2X3Qgc3Zxc3ViX25fdTE2X20oc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3ViX25fdThfeCkpKQpzdnVpbnQ4X3Qgc3Zxc3ViX25fdThfeChzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3ViX25fdTMyX3gpKSkKc3Z1aW50MzJfdCBzdnFzdWJfbl91MzJfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJfbl91NjRfeCkpKQpzdnVpbnQ2NF90IHN2cXN1Yl9uX3U2NF94KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1Yl9uX3UxNl94KSkpCnN2dWludDE2X3Qgc3Zxc3ViX25fdTE2X3goc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3ViX25fdThfeikpKQpzdnVpbnQ4X3Qgc3Zxc3ViX25fdThfeihzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3ViX25fdTMyX3opKSkKc3Z1aW50MzJfdCBzdnFzdWJfbl91MzJfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJfbl91NjRfeikpKQpzdnVpbnQ2NF90IHN2cXN1Yl9uX3U2NF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1Yl9uX3UxNl96KSkpCnN2dWludDE2X3Qgc3Zxc3ViX25fdTE2X3ooc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3ViX3M4X20pKSkKc3ZpbnQ4X3Qgc3Zxc3ViX3M4X20oc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1Yl9zMzJfbSkpKQpzdmludDMyX3Qgc3Zxc3ViX3MzMl9tKHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1Yl9zNjRfbSkpKQpzdmludDY0X3Qgc3Zxc3ViX3M2NF9tKHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1Yl9zMTZfbSkpKQpzdmludDE2X3Qgc3Zxc3ViX3MxNl9tKHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1Yl9zOF94KSkpCnN2aW50OF90IHN2cXN1Yl9zOF94KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJfczMyX3gpKSkKc3ZpbnQzMl90IHN2cXN1Yl9zMzJfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJfczY0X3gpKSkKc3ZpbnQ2NF90IHN2cXN1Yl9zNjRfeChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJfczE2X3gpKSkKc3ZpbnQxNl90IHN2cXN1Yl9zMTZfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJfczhfeikpKQpzdmludDhfdCBzdnFzdWJfczhfeihzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3ViX3MzMl96KSkpCnN2aW50MzJfdCBzdnFzdWJfczMyX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3ViX3M2NF96KSkpCnN2aW50NjRfdCBzdnFzdWJfczY0X3ooc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3ViX3MxNl96KSkpCnN2aW50MTZfdCBzdnFzdWJfczE2X3ooc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3ViX3U4X20pKSkKc3Z1aW50OF90IHN2cXN1Yl91OF9tKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1Yl91MzJfbSkpKQpzdnVpbnQzMl90IHN2cXN1Yl91MzJfbShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1Yl91NjRfbSkpKQpzdnVpbnQ2NF90IHN2cXN1Yl91NjRfbShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1Yl91MTZfbSkpKQpzdnVpbnQxNl90IHN2cXN1Yl91MTZfbShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1Yl91OF94KSkpCnN2dWludDhfdCBzdnFzdWJfdThfeChzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJfdTMyX3gpKSkKc3Z1aW50MzJfdCBzdnFzdWJfdTMyX3goc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJfdTY0X3gpKSkKc3Z1aW50NjRfdCBzdnFzdWJfdTY0X3goc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJfdTE2X3gpKSkKc3Z1aW50MTZfdCBzdnFzdWJfdTE2X3goc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJfdThfeikpKQpzdnVpbnQ4X3Qgc3Zxc3ViX3U4X3ooc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3ViX3UzMl96KSkpCnN2dWludDMyX3Qgc3Zxc3ViX3UzMl96KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3ViX3U2NF96KSkpCnN2dWludDY0X3Qgc3Zxc3ViX3U2NF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3ViX3UxNl96KSkpCnN2dWludDE2X3Qgc3Zxc3ViX3UxNl96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3Vicl9uX3M4X20pKSkKc3ZpbnQ4X3Qgc3Zxc3Vicl9uX3M4X20oc3Zib29sX3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJyX25fczMyX20pKSkKc3ZpbnQzMl90IHN2cXN1YnJfbl9zMzJfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3Vicl9uX3M2NF9tKSkpCnN2aW50NjRfdCBzdnFzdWJyX25fczY0X20oc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1YnJfbl9zMTZfbSkpKQpzdmludDE2X3Qgc3Zxc3Vicl9uX3MxNl9tKHN2Ym9vbF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJyX25fczhfeCkpKQpzdmludDhfdCBzdnFzdWJyX25fczhfeChzdmJvb2xfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1YnJfbl9zMzJfeCkpKQpzdmludDMyX3Qgc3Zxc3Vicl9uX3MzMl94KHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJyX25fczY0X3gpKSkKc3ZpbnQ2NF90IHN2cXN1YnJfbl9zNjRfeChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3Vicl9uX3MxNl94KSkpCnN2aW50MTZfdCBzdnFzdWJyX25fczE2X3goc3Zib29sX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1YnJfbl9zOF96KSkpCnN2aW50OF90IHN2cXN1YnJfbl9zOF96KHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3Vicl9uX3MzMl96KSkpCnN2aW50MzJfdCBzdnFzdWJyX25fczMyX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1YnJfbl9zNjRfeikpKQpzdmludDY0X3Qgc3Zxc3Vicl9uX3M2NF96KHN2Ym9vbF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJyX25fczE2X3opKSkKc3ZpbnQxNl90IHN2cXN1YnJfbl9zMTZfeihzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3Vicl9uX3U4X20pKSkKc3Z1aW50OF90IHN2cXN1YnJfbl91OF9tKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJyX25fdTMyX20pKSkKc3Z1aW50MzJfdCBzdnFzdWJyX25fdTMyX20oc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3Vicl9uX3U2NF9tKSkpCnN2dWludDY0X3Qgc3Zxc3Vicl9uX3U2NF9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1YnJfbl91MTZfbSkpKQpzdnVpbnQxNl90IHN2cXN1YnJfbl91MTZfbShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJyX25fdThfeCkpKQpzdnVpbnQ4X3Qgc3Zxc3Vicl9uX3U4X3goc3Zib29sX3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1YnJfbl91MzJfeCkpKQpzdnVpbnQzMl90IHN2cXN1YnJfbl91MzJfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJyX25fdTY0X3gpKSkKc3Z1aW50NjRfdCBzdnFzdWJyX25fdTY0X3goc3Zib29sX3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3Vicl9uX3UxNl94KSkpCnN2dWludDE2X3Qgc3Zxc3Vicl9uX3UxNl94KHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1YnJfbl91OF96KSkpCnN2dWludDhfdCBzdnFzdWJyX25fdThfeihzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3Vicl9uX3UzMl96KSkpCnN2dWludDMyX3Qgc3Zxc3Vicl9uX3UzMl96KHN2Ym9vbF90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1YnJfbl91NjRfeikpKQpzdnVpbnQ2NF90IHN2cXN1YnJfbl91NjRfeihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJyX25fdTE2X3opKSkKc3Z1aW50MTZfdCBzdnFzdWJyX25fdTE2X3ooc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3Vicl9zOF9tKSkpCnN2aW50OF90IHN2cXN1YnJfczhfbShzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3Vicl9zMzJfbSkpKQpzdmludDMyX3Qgc3Zxc3Vicl9zMzJfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJyX3M2NF9tKSkpCnN2aW50NjRfdCBzdnFzdWJyX3M2NF9tKHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1YnJfczE2X20pKSkKc3ZpbnQxNl90IHN2cXN1YnJfczE2X20oc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3Vicl9zOF94KSkpCnN2aW50OF90IHN2cXN1YnJfczhfeChzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3Vicl9zMzJfeCkpKQpzdmludDMyX3Qgc3Zxc3Vicl9zMzJfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJyX3M2NF94KSkpCnN2aW50NjRfdCBzdnFzdWJyX3M2NF94KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1YnJfczE2X3gpKSkKc3ZpbnQxNl90IHN2cXN1YnJfczE2X3goc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3Vicl9zOF96KSkpCnN2aW50OF90IHN2cXN1YnJfczhfeihzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3Vicl9zMzJfeikpKQpzdmludDMyX3Qgc3Zxc3Vicl9zMzJfeihzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJyX3M2NF96KSkpCnN2aW50NjRfdCBzdnFzdWJyX3M2NF96KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1YnJfczE2X3opKSkKc3ZpbnQxNl90IHN2cXN1YnJfczE2X3ooc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3Vicl91OF9tKSkpCnN2dWludDhfdCBzdnFzdWJyX3U4X20oc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3Vicl91MzJfbSkpKQpzdnVpbnQzMl90IHN2cXN1YnJfdTMyX20oc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJyX3U2NF9tKSkpCnN2dWludDY0X3Qgc3Zxc3Vicl91NjRfbShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1YnJfdTE2X20pKSkKc3Z1aW50MTZfdCBzdnFzdWJyX3UxNl9tKHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3Vicl91OF94KSkpCnN2dWludDhfdCBzdnFzdWJyX3U4X3goc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3Vicl91MzJfeCkpKQpzdnVpbnQzMl90IHN2cXN1YnJfdTMyX3goc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJyX3U2NF94KSkpCnN2dWludDY0X3Qgc3Zxc3Vicl91NjRfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1YnJfdTE2X3gpKSkKc3Z1aW50MTZfdCBzdnFzdWJyX3UxNl94KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3Vicl91OF96KSkpCnN2dWludDhfdCBzdnFzdWJyX3U4X3ooc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3Vicl91MzJfeikpKQpzdnVpbnQzMl90IHN2cXN1YnJfdTMyX3ooc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJyX3U2NF96KSkpCnN2dWludDY0X3Qgc3Zxc3Vicl91NjRfeihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1YnJfdTE2X3opKSkKc3Z1aW50MTZfdCBzdnFzdWJyX3UxNl96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxeHRuYl9zMzIpKSkKc3ZpbnQxNl90IHN2cXh0bmJfczMyKHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXh0bmJfczY0KSkpCnN2aW50MzJfdCBzdnF4dG5iX3M2NChzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnF4dG5iX3MxNikpKQpzdmludDhfdCBzdnF4dG5iX3MxNihzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnF4dG5iX3UzMikpKQpzdnVpbnQxNl90IHN2cXh0bmJfdTMyKHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnF4dG5iX3U2NCkpKQpzdnVpbnQzMl90IHN2cXh0bmJfdTY0KHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnF4dG5iX3UxNikpKQpzdnVpbnQ4X3Qgc3ZxeHRuYl91MTYoc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXh0bnRfczMyKSkpCnN2aW50MTZfdCBzdnF4dG50X3MzMihzdmludDE2X3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXh0bnRfczY0KSkpCnN2aW50MzJfdCBzdnF4dG50X3M2NChzdmludDMyX3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXh0bnRfczE2KSkpCnN2aW50OF90IHN2cXh0bnRfczE2KHN2aW50OF90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnF4dG50X3UzMikpKQpzdnVpbnQxNl90IHN2cXh0bnRfdTMyKHN2dWludDE2X3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnF4dG50X3U2NCkpKQpzdnVpbnQzMl90IHN2cXh0bnRfdTY0KHN2dWludDMyX3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnF4dG50X3UxNikpKQpzdnVpbnQ4X3Qgc3ZxeHRudF91MTYoc3Z1aW50OF90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxeHR1bmJfczMyKSkpCnN2dWludDE2X3Qgc3ZxeHR1bmJfczMyKHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXh0dW5iX3M2NCkpKQpzdnVpbnQzMl90IHN2cXh0dW5iX3M2NChzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnF4dHVuYl9zMTYpKSkKc3Z1aW50OF90IHN2cXh0dW5iX3MxNihzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnF4dHVudF9zMzIpKSkKc3Z1aW50MTZfdCBzdnF4dHVudF9zMzIoc3Z1aW50MTZfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxeHR1bnRfczY0KSkpCnN2dWludDMyX3Qgc3ZxeHR1bnRfczY0KHN2dWludDMyX3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXh0dW50X3MxNikpKQpzdnVpbnQ4X3Qgc3ZxeHR1bnRfczE2KHN2dWludDhfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyYWRkaG5iX25fdTMyKSkpCnN2dWludDE2X3Qgc3ZyYWRkaG5iX25fdTMyKHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyYWRkaG5iX25fdTY0KSkpCnN2dWludDMyX3Qgc3ZyYWRkaG5iX25fdTY0KHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyYWRkaG5iX25fdTE2KSkpCnN2dWludDhfdCBzdnJhZGRobmJfbl91MTYoc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJhZGRobmJfbl9zMzIpKSkKc3ZpbnQxNl90IHN2cmFkZGhuYl9uX3MzMihzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJhZGRobmJfbl9zNjQpKSkKc3ZpbnQzMl90IHN2cmFkZGhuYl9uX3M2NChzdmludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJhZGRobmJfbl9zMTYpKSkKc3ZpbnQ4X3Qgc3ZyYWRkaG5iX25fczE2KHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmFkZGhuYl91MzIpKSkKc3Z1aW50MTZfdCBzdnJhZGRobmJfdTMyKHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJhZGRobmJfdTY0KSkpCnN2dWludDMyX3Qgc3ZyYWRkaG5iX3U2NChzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyYWRkaG5iX3UxNikpKQpzdnVpbnQ4X3Qgc3ZyYWRkaG5iX3UxNihzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyYWRkaG5iX3MzMikpKQpzdmludDE2X3Qgc3ZyYWRkaG5iX3MzMihzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmFkZGhuYl9zNjQpKSkKc3ZpbnQzMl90IHN2cmFkZGhuYl9zNjQoc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJhZGRobmJfczE2KSkpCnN2aW50OF90IHN2cmFkZGhuYl9zMTYoc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJhZGRobnRfbl91MzIpKSkKc3Z1aW50MTZfdCBzdnJhZGRobnRfbl91MzIoc3Z1aW50MTZfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJhZGRobnRfbl91NjQpKSkKc3Z1aW50MzJfdCBzdnJhZGRobnRfbl91NjQoc3Z1aW50MzJfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJhZGRobnRfbl91MTYpKSkKc3Z1aW50OF90IHN2cmFkZGhudF9uX3UxNihzdnVpbnQ4X3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyYWRkaG50X25fczMyKSkpCnN2aW50MTZfdCBzdnJhZGRobnRfbl9zMzIoc3ZpbnQxNl90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJhZGRobnRfbl9zNjQpKSkKc3ZpbnQzMl90IHN2cmFkZGhudF9uX3M2NChzdmludDMyX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmFkZGhudF9uX3MxNikpKQpzdmludDhfdCBzdnJhZGRobnRfbl9zMTYoc3ZpbnQ4X3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmFkZGhudF91MzIpKSkKc3Z1aW50MTZfdCBzdnJhZGRobnRfdTMyKHN2dWludDE2X3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJhZGRobnRfdTY0KSkpCnN2dWludDMyX3Qgc3ZyYWRkaG50X3U2NChzdnVpbnQzMl90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyYWRkaG50X3UxNikpKQpzdnVpbnQ4X3Qgc3ZyYWRkaG50X3UxNihzdnVpbnQ4X3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJhZGRobnRfczMyKSkpCnN2aW50MTZfdCBzdnJhZGRobnRfczMyKHN2aW50MTZfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJhZGRobnRfczY0KSkpCnN2aW50MzJfdCBzdnJhZGRobnRfczY0KHN2aW50MzJfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJhZGRobnRfczE2KSkpCnN2aW50OF90IHN2cmFkZGhudF9zMTYoc3ZpbnQ4X3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyZWNwZV91MzJfbSkpKQpzdnVpbnQzMl90IHN2cmVjcGVfdTMyX20oc3Z1aW50MzJfdCwgc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJlY3BlX3UzMl94KSkpCnN2dWludDMyX3Qgc3ZyZWNwZV91MzJfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmVjcGVfdTMyX3opKSkKc3Z1aW50MzJfdCBzdnJlY3BlX3UzMl96KHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaGFkZF9uX3M4X20pKSkKc3ZpbnQ4X3Qgc3ZyaGFkZF9uX3M4X20oc3Zib29sX3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJoYWRkX25fczMyX20pKSkKc3ZpbnQzMl90IHN2cmhhZGRfbl9zMzJfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaGFkZF9uX3M2NF9tKSkpCnN2aW50NjRfdCBzdnJoYWRkX25fczY0X20oc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmhhZGRfbl9zMTZfbSkpKQpzdmludDE2X3Qgc3ZyaGFkZF9uX3MxNl9tKHN2Ym9vbF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJoYWRkX25fczhfeCkpKQpzdmludDhfdCBzdnJoYWRkX25fczhfeChzdmJvb2xfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmhhZGRfbl9zMzJfeCkpKQpzdmludDMyX3Qgc3ZyaGFkZF9uX3MzMl94KHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJoYWRkX25fczY0X3gpKSkKc3ZpbnQ2NF90IHN2cmhhZGRfbl9zNjRfeChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaGFkZF9uX3MxNl94KSkpCnN2aW50MTZfdCBzdnJoYWRkX25fczE2X3goc3Zib29sX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmhhZGRfbl9zOF96KSkpCnN2aW50OF90IHN2cmhhZGRfbl9zOF96KHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaGFkZF9uX3MzMl96KSkpCnN2aW50MzJfdCBzdnJoYWRkX25fczMyX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmhhZGRfbl9zNjRfeikpKQpzdmludDY0X3Qgc3ZyaGFkZF9uX3M2NF96KHN2Ym9vbF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJoYWRkX25fczE2X3opKSkKc3ZpbnQxNl90IHN2cmhhZGRfbl9zMTZfeihzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaGFkZF9uX3U4X20pKSkKc3Z1aW50OF90IHN2cmhhZGRfbl91OF9tKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJoYWRkX25fdTMyX20pKSkKc3Z1aW50MzJfdCBzdnJoYWRkX25fdTMyX20oc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaGFkZF9uX3U2NF9tKSkpCnN2dWludDY0X3Qgc3ZyaGFkZF9uX3U2NF9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmhhZGRfbl91MTZfbSkpKQpzdnVpbnQxNl90IHN2cmhhZGRfbl91MTZfbShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJoYWRkX25fdThfeCkpKQpzdnVpbnQ4X3Qgc3ZyaGFkZF9uX3U4X3goc3Zib29sX3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmhhZGRfbl91MzJfeCkpKQpzdnVpbnQzMl90IHN2cmhhZGRfbl91MzJfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJoYWRkX25fdTY0X3gpKSkKc3Z1aW50NjRfdCBzdnJoYWRkX25fdTY0X3goc3Zib29sX3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaGFkZF9uX3UxNl94KSkpCnN2dWludDE2X3Qgc3ZyaGFkZF9uX3UxNl94KHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmhhZGRfbl91OF96KSkpCnN2dWludDhfdCBzdnJoYWRkX25fdThfeihzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaGFkZF9uX3UzMl96KSkpCnN2dWludDMyX3Qgc3ZyaGFkZF9uX3UzMl96KHN2Ym9vbF90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmhhZGRfbl91NjRfeikpKQpzdnVpbnQ2NF90IHN2cmhhZGRfbl91NjRfeihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJoYWRkX25fdTE2X3opKSkKc3Z1aW50MTZfdCBzdnJoYWRkX25fdTE2X3ooc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaGFkZF9zOF9tKSkpCnN2aW50OF90IHN2cmhhZGRfczhfbShzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaGFkZF9zMzJfbSkpKQpzdmludDMyX3Qgc3ZyaGFkZF9zMzJfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJoYWRkX3M2NF9tKSkpCnN2aW50NjRfdCBzdnJoYWRkX3M2NF9tKHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmhhZGRfczE2X20pKSkKc3ZpbnQxNl90IHN2cmhhZGRfczE2X20oc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaGFkZF9zOF94KSkpCnN2aW50OF90IHN2cmhhZGRfczhfeChzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaGFkZF9zMzJfeCkpKQpzdmludDMyX3Qgc3ZyaGFkZF9zMzJfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJoYWRkX3M2NF94KSkpCnN2aW50NjRfdCBzdnJoYWRkX3M2NF94KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmhhZGRfczE2X3gpKSkKc3ZpbnQxNl90IHN2cmhhZGRfczE2X3goc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaGFkZF9zOF96KSkpCnN2aW50OF90IHN2cmhhZGRfczhfeihzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaGFkZF9zMzJfeikpKQpzdmludDMyX3Qgc3ZyaGFkZF9zMzJfeihzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJoYWRkX3M2NF96KSkpCnN2aW50NjRfdCBzdnJoYWRkX3M2NF96KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmhhZGRfczE2X3opKSkKc3ZpbnQxNl90IHN2cmhhZGRfczE2X3ooc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaGFkZF91OF9tKSkpCnN2dWludDhfdCBzdnJoYWRkX3U4X20oc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaGFkZF91MzJfbSkpKQpzdnVpbnQzMl90IHN2cmhhZGRfdTMyX20oc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJoYWRkX3U2NF9tKSkpCnN2dWludDY0X3Qgc3ZyaGFkZF91NjRfbShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmhhZGRfdTE2X20pKSkKc3Z1aW50MTZfdCBzdnJoYWRkX3UxNl9tKHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaGFkZF91OF94KSkpCnN2dWludDhfdCBzdnJoYWRkX3U4X3goc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaGFkZF91MzJfeCkpKQpzdnVpbnQzMl90IHN2cmhhZGRfdTMyX3goc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJoYWRkX3U2NF94KSkpCnN2dWludDY0X3Qgc3ZyaGFkZF91NjRfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmhhZGRfdTE2X3gpKSkKc3Z1aW50MTZfdCBzdnJoYWRkX3UxNl94KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaGFkZF91OF96KSkpCnN2dWludDhfdCBzdnJoYWRkX3U4X3ooc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaGFkZF91MzJfeikpKQpzdnVpbnQzMl90IHN2cmhhZGRfdTMyX3ooc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJoYWRkX3U2NF96KSkpCnN2dWludDY0X3Qgc3ZyaGFkZF91NjRfeihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmhhZGRfdTE2X3opKSkKc3Z1aW50MTZfdCBzdnJoYWRkX3UxNl96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hsX25fczhfbSkpKQpzdmludDhfdCBzdnJzaGxfbl9zOF9tKHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hsX25fczMyX20pKSkKc3ZpbnQzMl90IHN2cnNobF9uX3MzMl9tKHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaGxfbl9zNjRfbSkpKQpzdmludDY0X3Qgc3Zyc2hsX25fczY0X20oc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNobF9uX3MxNl9tKSkpCnN2aW50MTZfdCBzdnJzaGxfbl9zMTZfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hsX25fczhfeCkpKQpzdmludDhfdCBzdnJzaGxfbl9zOF94KHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hsX25fczMyX3gpKSkKc3ZpbnQzMl90IHN2cnNobF9uX3MzMl94KHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaGxfbl9zNjRfeCkpKQpzdmludDY0X3Qgc3Zyc2hsX25fczY0X3goc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNobF9uX3MxNl94KSkpCnN2aW50MTZfdCBzdnJzaGxfbl9zMTZfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hsX25fczhfeikpKQpzdmludDhfdCBzdnJzaGxfbl9zOF96KHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hsX25fczMyX3opKSkKc3ZpbnQzMl90IHN2cnNobF9uX3MzMl96KHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaGxfbl9zNjRfeikpKQpzdmludDY0X3Qgc3Zyc2hsX25fczY0X3ooc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNobF9uX3MxNl96KSkpCnN2aW50MTZfdCBzdnJzaGxfbl9zMTZfeihzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hsX25fdThfbSkpKQpzdnVpbnQ4X3Qgc3Zyc2hsX25fdThfbShzdmJvb2xfdCwgc3Z1aW50OF90LCBpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaGxfbl91MzJfbSkpKQpzdnVpbnQzMl90IHN2cnNobF9uX3UzMl9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hsX25fdTY0X20pKSkKc3Z1aW50NjRfdCBzdnJzaGxfbl91NjRfbShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNobF9uX3UxNl9tKSkpCnN2dWludDE2X3Qgc3Zyc2hsX25fdTE2X20oc3Zib29sX3QsIHN2dWludDE2X3QsIGludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaGxfbl91OF94KSkpCnN2dWludDhfdCBzdnJzaGxfbl91OF94KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIGludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNobF9uX3UzMl94KSkpCnN2dWludDMyX3Qgc3Zyc2hsX25fdTMyX3goc3Zib29sX3QsIHN2dWludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaGxfbl91NjRfeCkpKQpzdnVpbnQ2NF90IHN2cnNobF9uX3U2NF94KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hsX25fdTE2X3gpKSkKc3Z1aW50MTZfdCBzdnJzaGxfbl91MTZfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNobF9uX3U4X3opKSkKc3Z1aW50OF90IHN2cnNobF9uX3U4X3ooc3Zib29sX3QsIHN2dWludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hsX25fdTMyX3opKSkKc3Z1aW50MzJfdCBzdnJzaGxfbl91MzJfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNobF9uX3U2NF96KSkpCnN2dWludDY0X3Qgc3Zyc2hsX25fdTY0X3ooc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaGxfbl91MTZfeikpKQpzdnVpbnQxNl90IHN2cnNobF9uX3UxNl96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hsX3M4X20pKSkKc3ZpbnQ4X3Qgc3Zyc2hsX3M4X20oc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNobF9zMzJfbSkpKQpzdmludDMyX3Qgc3Zyc2hsX3MzMl9tKHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNobF9zNjRfbSkpKQpzdmludDY0X3Qgc3Zyc2hsX3M2NF9tKHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNobF9zMTZfbSkpKQpzdmludDE2X3Qgc3Zyc2hsX3MxNl9tKHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNobF9zOF94KSkpCnN2aW50OF90IHN2cnNobF9zOF94KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaGxfczMyX3gpKSkKc3ZpbnQzMl90IHN2cnNobF9zMzJfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaGxfczY0X3gpKSkKc3ZpbnQ2NF90IHN2cnNobF9zNjRfeChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaGxfczE2X3gpKSkKc3ZpbnQxNl90IHN2cnNobF9zMTZfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaGxfczhfeikpKQpzdmludDhfdCBzdnJzaGxfczhfeihzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hsX3MzMl96KSkpCnN2aW50MzJfdCBzdnJzaGxfczMyX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hsX3M2NF96KSkpCnN2aW50NjRfdCBzdnJzaGxfczY0X3ooc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hsX3MxNl96KSkpCnN2aW50MTZfdCBzdnJzaGxfczE2X3ooc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hsX3U4X20pKSkKc3Z1aW50OF90IHN2cnNobF91OF9tKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hsX3UzMl9tKSkpCnN2dWludDMyX3Qgc3Zyc2hsX3UzMl9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaGxfdTY0X20pKSkKc3Z1aW50NjRfdCBzdnJzaGxfdTY0X20oc3Zib29sX3QsIHN2dWludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNobF91MTZfbSkpKQpzdnVpbnQxNl90IHN2cnNobF91MTZfbShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hsX3U4X3gpKSkKc3Z1aW50OF90IHN2cnNobF91OF94KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hsX3UzMl94KSkpCnN2dWludDMyX3Qgc3Zyc2hsX3UzMl94KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaGxfdTY0X3gpKSkKc3Z1aW50NjRfdCBzdnJzaGxfdTY0X3goc3Zib29sX3QsIHN2dWludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNobF91MTZfeCkpKQpzdnVpbnQxNl90IHN2cnNobF91MTZfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hsX3U4X3opKSkKc3Z1aW50OF90IHN2cnNobF91OF96KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hsX3UzMl96KSkpCnN2dWludDMyX3Qgc3Zyc2hsX3UzMl96KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaGxfdTY0X3opKSkKc3Z1aW50NjRfdCBzdnJzaGxfdTY0X3ooc3Zib29sX3QsIHN2dWludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNobF91MTZfeikpKQpzdnVpbnQxNl90IHN2cnNobF91MTZfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hyX25fczhfbSkpKQpzdmludDhfdCBzdnJzaHJfbl9zOF9tKHN2Ym9vbF90LCBzdmludDhfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaHJfbl9zMzJfbSkpKQpzdmludDMyX3Qgc3Zyc2hyX25fczMyX20oc3Zib29sX3QsIHN2aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaHJfbl9zNjRfbSkpKQpzdmludDY0X3Qgc3Zyc2hyX25fczY0X20oc3Zib29sX3QsIHN2aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaHJfbl9zMTZfbSkpKQpzdmludDE2X3Qgc3Zyc2hyX25fczE2X20oc3Zib29sX3QsIHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaHJfbl91OF9tKSkpCnN2dWludDhfdCBzdnJzaHJfbl91OF9tKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hyX25fdTMyX20pKSkKc3Z1aW50MzJfdCBzdnJzaHJfbl91MzJfbShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaHJfbl91NjRfbSkpKQpzdnVpbnQ2NF90IHN2cnNocl9uX3U2NF9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNocl9uX3UxNl9tKSkpCnN2dWludDE2X3Qgc3Zyc2hyX25fdTE2X20oc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hyX25fczhfeCkpKQpzdmludDhfdCBzdnJzaHJfbl9zOF94KHN2Ym9vbF90LCBzdmludDhfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaHJfbl9zMzJfeCkpKQpzdmludDMyX3Qgc3Zyc2hyX25fczMyX3goc3Zib29sX3QsIHN2aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaHJfbl9zNjRfeCkpKQpzdmludDY0X3Qgc3Zyc2hyX25fczY0X3goc3Zib29sX3QsIHN2aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaHJfbl9zMTZfeCkpKQpzdmludDE2X3Qgc3Zyc2hyX25fczE2X3goc3Zib29sX3QsIHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaHJfbl91OF94KSkpCnN2dWludDhfdCBzdnJzaHJfbl91OF94KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hyX25fdTMyX3gpKSkKc3Z1aW50MzJfdCBzdnJzaHJfbl91MzJfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaHJfbl91NjRfeCkpKQpzdnVpbnQ2NF90IHN2cnNocl9uX3U2NF94KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNocl9uX3UxNl94KSkpCnN2dWludDE2X3Qgc3Zyc2hyX25fdTE2X3goc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hyX25fczhfeikpKQpzdmludDhfdCBzdnJzaHJfbl9zOF96KHN2Ym9vbF90LCBzdmludDhfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaHJfbl9zMzJfeikpKQpzdmludDMyX3Qgc3Zyc2hyX25fczMyX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaHJfbl9zNjRfeikpKQpzdmludDY0X3Qgc3Zyc2hyX25fczY0X3ooc3Zib29sX3QsIHN2aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaHJfbl9zMTZfeikpKQpzdmludDE2X3Qgc3Zyc2hyX25fczE2X3ooc3Zib29sX3QsIHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaHJfbl91OF96KSkpCnN2dWludDhfdCBzdnJzaHJfbl91OF96KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hyX25fdTMyX3opKSkKc3Z1aW50MzJfdCBzdnJzaHJfbl91MzJfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaHJfbl91NjRfeikpKQpzdnVpbnQ2NF90IHN2cnNocl9uX3U2NF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNocl9uX3UxNl96KSkpCnN2dWludDE2X3Qgc3Zyc2hyX25fdTE2X3ooc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hybmJfbl91MzIpKSkKc3Z1aW50MTZfdCBzdnJzaHJuYl9uX3UzMihzdnVpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNocm5iX25fdTY0KSkpCnN2dWludDMyX3Qgc3Zyc2hybmJfbl91NjQoc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaHJuYl9uX3UxNikpKQpzdnVpbnQ4X3Qgc3Zyc2hybmJfbl91MTYoc3Z1aW50MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaHJuYl9uX3MzMikpKQpzdmludDE2X3Qgc3Zyc2hybmJfbl9zMzIoc3ZpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNocm5iX25fczY0KSkpCnN2aW50MzJfdCBzdnJzaHJuYl9uX3M2NChzdmludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hybmJfbl9zMTYpKSkKc3ZpbnQ4X3Qgc3Zyc2hybmJfbl9zMTYoc3ZpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNocm50X25fdTMyKSkpCnN2dWludDE2X3Qgc3Zyc2hybnRfbl91MzIoc3Z1aW50MTZfdCwgc3Z1aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaHJudF9uX3U2NCkpKQpzdnVpbnQzMl90IHN2cnNocm50X25fdTY0KHN2dWludDMyX3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hybnRfbl91MTYpKSkKc3Z1aW50OF90IHN2cnNocm50X25fdTE2KHN2dWludDhfdCwgc3Z1aW50MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaHJudF9uX3MzMikpKQpzdmludDE2X3Qgc3Zyc2hybnRfbl9zMzIoc3ZpbnQxNl90LCBzdmludDMyX3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hybnRfbl9zNjQpKSkKc3ZpbnQzMl90IHN2cnNocm50X25fczY0KHN2aW50MzJfdCwgc3ZpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNocm50X25fczE2KSkpCnN2aW50OF90IHN2cnNocm50X25fczE2KHN2aW50OF90LCBzdmludDE2X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc3FydGVfdTMyX20pKSkKc3Z1aW50MzJfdCBzdnJzcXJ0ZV91MzJfbShzdnVpbnQzMl90LCBzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNxcnRlX3UzMl94KSkpCnN2dWludDMyX3Qgc3Zyc3FydGVfdTMyX3goc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzcXJ0ZV91MzJfeikpKQpzdnVpbnQzMl90IHN2cnNxcnRlX3UzMl96KHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc3JhX25fczgpKSkKc3ZpbnQ4X3Qgc3Zyc3JhX25fczgoc3ZpbnQ4X3QsIHN2aW50OF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNyYV9uX3MzMikpKQpzdmludDMyX3Qgc3Zyc3JhX25fczMyKHN2aW50MzJfdCwgc3ZpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNyYV9uX3M2NCkpKQpzdmludDY0X3Qgc3Zyc3JhX25fczY0KHN2aW50NjRfdCwgc3ZpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNyYV9uX3MxNikpKQpzdmludDE2X3Qgc3Zyc3JhX25fczE2KHN2aW50MTZfdCwgc3ZpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNyYV9uX3U4KSkpCnN2dWludDhfdCBzdnJzcmFfbl91OChzdnVpbnQ4X3QsIHN2dWludDhfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzcmFfbl91MzIpKSkKc3Z1aW50MzJfdCBzdnJzcmFfbl91MzIoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzcmFfbl91NjQpKSkKc3Z1aW50NjRfdCBzdnJzcmFfbl91NjQoc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzcmFfbl91MTYpKSkKc3Z1aW50MTZfdCBzdnJzcmFfbl91MTYoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzdWJobmJfbl91MzIpKSkKc3Z1aW50MTZfdCBzdnJzdWJobmJfbl91MzIoc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzdWJobmJfbl91NjQpKSkKc3Z1aW50MzJfdCBzdnJzdWJobmJfbl91NjQoc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzdWJobmJfbl91MTYpKSkKc3Z1aW50OF90IHN2cnN1YmhuYl9uX3UxNihzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnN1YmhuYl9uX3MzMikpKQpzdmludDE2X3Qgc3Zyc3ViaG5iX25fczMyKHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnN1YmhuYl9uX3M2NCkpKQpzdmludDMyX3Qgc3Zyc3ViaG5iX25fczY0KHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnN1YmhuYl9uX3MxNikpKQpzdmludDhfdCBzdnJzdWJobmJfbl9zMTYoc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc3ViaG5iX3UzMikpKQpzdnVpbnQxNl90IHN2cnN1YmhuYl91MzIoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnN1YmhuYl91NjQpKSkKc3Z1aW50MzJfdCBzdnJzdWJobmJfdTY0KHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzdWJobmJfdTE2KSkpCnN2dWludDhfdCBzdnJzdWJobmJfdTE2KHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzdWJobmJfczMyKSkpCnN2aW50MTZfdCBzdnJzdWJobmJfczMyKHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc3ViaG5iX3M2NCkpKQpzdmludDMyX3Qgc3Zyc3ViaG5iX3M2NChzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnN1YmhuYl9zMTYpKSkKc3ZpbnQ4X3Qgc3Zyc3ViaG5iX3MxNihzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnN1YmhudF9uX3UzMikpKQpzdnVpbnQxNl90IHN2cnN1YmhudF9uX3UzMihzdnVpbnQxNl90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnN1YmhudF9uX3U2NCkpKQpzdnVpbnQzMl90IHN2cnN1YmhudF9uX3U2NChzdnVpbnQzMl90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnN1YmhudF9uX3UxNikpKQpzdnVpbnQ4X3Qgc3Zyc3ViaG50X25fdTE2KHN2dWludDhfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzdWJobnRfbl9zMzIpKSkKc3ZpbnQxNl90IHN2cnN1YmhudF9uX3MzMihzdmludDE2X3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnN1YmhudF9uX3M2NCkpKQpzdmludDMyX3Qgc3Zyc3ViaG50X25fczY0KHN2aW50MzJfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc3ViaG50X25fczE2KSkpCnN2aW50OF90IHN2cnN1YmhudF9uX3MxNihzdmludDhfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc3ViaG50X3UzMikpKQpzdnVpbnQxNl90IHN2cnN1YmhudF91MzIoc3Z1aW50MTZfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnN1YmhudF91NjQpKSkKc3Z1aW50MzJfdCBzdnJzdWJobnRfdTY0KHN2dWludDMyX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzdWJobnRfdTE2KSkpCnN2dWludDhfdCBzdnJzdWJobnRfdTE2KHN2dWludDhfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnN1YmhudF9zMzIpKSkKc3ZpbnQxNl90IHN2cnN1YmhudF9zMzIoc3ZpbnQxNl90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnN1YmhudF9zNjQpKSkKc3ZpbnQzMl90IHN2cnN1YmhudF9zNjQoc3ZpbnQzMl90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnN1YmhudF9zMTYpKSkKc3ZpbnQ4X3Qgc3Zyc3ViaG50X3MxNihzdmludDhfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNiY2xiX25fdTMyKSkpCnN2dWludDMyX3Qgc3ZzYmNsYl9uX3UzMihzdnVpbnQzMl90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2JjbGJfbl91NjQpKSkKc3Z1aW50NjRfdCBzdnNiY2xiX25fdTY0KHN2dWludDY0X3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzYmNsYl91MzIpKSkKc3Z1aW50MzJfdCBzdnNiY2xiX3UzMihzdnVpbnQzMl90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzYmNsYl91NjQpKSkKc3Z1aW50NjRfdCBzdnNiY2xiX3U2NChzdnVpbnQ2NF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzYmNsdF9uX3UzMikpKQpzdnVpbnQzMl90IHN2c2JjbHRfbl91MzIoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNiY2x0X25fdTY0KSkpCnN2dWludDY0X3Qgc3ZzYmNsdF9uX3U2NChzdnVpbnQ2NF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2JjbHRfdTMyKSkpCnN2dWludDMyX3Qgc3ZzYmNsdF91MzIoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2JjbHRfdTY0KSkpCnN2dWludDY0X3Qgc3ZzYmNsdF91NjQoc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2hsbGJfbl9zMzIpKSkKc3ZpbnQzMl90IHN2c2hsbGJfbl9zMzIoc3ZpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2hsbGJfbl9zNjQpKSkKc3ZpbnQ2NF90IHN2c2hsbGJfbl9zNjQoc3ZpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2hsbGJfbl9zMTYpKSkKc3ZpbnQxNl90IHN2c2hsbGJfbl9zMTYoc3ZpbnQ4X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzaGxsYl9uX3UzMikpKQpzdnVpbnQzMl90IHN2c2hsbGJfbl91MzIoc3Z1aW50MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNobGxiX25fdTY0KSkpCnN2dWludDY0X3Qgc3ZzaGxsYl9uX3U2NChzdnVpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2hsbGJfbl91MTYpKSkKc3Z1aW50MTZfdCBzdnNobGxiX25fdTE2KHN2dWludDhfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNobGx0X25fczMyKSkpCnN2aW50MzJfdCBzdnNobGx0X25fczMyKHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNobGx0X25fczY0KSkpCnN2aW50NjRfdCBzdnNobGx0X25fczY0KHN2aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNobGx0X25fczE2KSkpCnN2aW50MTZfdCBzdnNobGx0X25fczE2KHN2aW50OF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2hsbHRfbl91MzIpKSkKc3Z1aW50MzJfdCBzdnNobGx0X25fdTMyKHN2dWludDE2X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzaGxsdF9uX3U2NCkpKQpzdnVpbnQ2NF90IHN2c2hsbHRfbl91NjQoc3Z1aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNobGx0X25fdTE2KSkpCnN2dWludDE2X3Qgc3ZzaGxsdF9uX3UxNihzdnVpbnQ4X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzaHJuYl9uX3UzMikpKQpzdnVpbnQxNl90IHN2c2hybmJfbl91MzIoc3Z1aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNocm5iX25fdTY0KSkpCnN2dWludDMyX3Qgc3ZzaHJuYl9uX3U2NChzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2hybmJfbl91MTYpKSkKc3Z1aW50OF90IHN2c2hybmJfbl91MTYoc3Z1aW50MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNocm5iX25fczMyKSkpCnN2aW50MTZfdCBzdnNocm5iX25fczMyKHN2aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNocm5iX25fczY0KSkpCnN2aW50MzJfdCBzdnNocm5iX25fczY0KHN2aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNocm5iX25fczE2KSkpCnN2aW50OF90IHN2c2hybmJfbl9zMTYoc3ZpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2hybnRfbl91MzIpKSkKc3Z1aW50MTZfdCBzdnNocm50X25fdTMyKHN2dWludDE2X3QsIHN2dWludDMyX3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzaHJudF9uX3U2NCkpKQpzdnVpbnQzMl90IHN2c2hybnRfbl91NjQoc3Z1aW50MzJfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNocm50X25fdTE2KSkpCnN2dWludDhfdCBzdnNocm50X25fdTE2KHN2dWludDhfdCwgc3Z1aW50MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNocm50X25fczMyKSkpCnN2aW50MTZfdCBzdnNocm50X25fczMyKHN2aW50MTZfdCwgc3ZpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2hybnRfbl9zNjQpKSkKc3ZpbnQzMl90IHN2c2hybnRfbl9zNjQoc3ZpbnQzMl90LCBzdmludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzaHJudF9uX3MxNikpKQpzdmludDhfdCBzdnNocm50X25fczE2KHN2aW50OF90LCBzdmludDE2X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzbGlfbl91OCkpKQpzdnVpbnQ4X3Qgc3ZzbGlfbl91OChzdnVpbnQ4X3QsIHN2dWludDhfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNsaV9uX3UzMikpKQpzdnVpbnQzMl90IHN2c2xpX25fdTMyKHN2dWludDMyX3QsIHN2dWludDMyX3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzbGlfbl91NjQpKSkKc3Z1aW50NjRfdCBzdnNsaV9uX3U2NChzdnVpbnQ2NF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2xpX25fdTE2KSkpCnN2dWludDE2X3Qgc3ZzbGlfbl91MTYoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNsaV9uX3M4KSkpCnN2aW50OF90IHN2c2xpX25fczgoc3ZpbnQ4X3QsIHN2aW50OF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2xpX25fczMyKSkpCnN2aW50MzJfdCBzdnNsaV9uX3MzMihzdmludDMyX3QsIHN2aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNsaV9uX3M2NCkpKQpzdmludDY0X3Qgc3ZzbGlfbl9zNjQoc3ZpbnQ2NF90LCBzdmludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzbGlfbl9zMTYpKSkKc3ZpbnQxNl90IHN2c2xpX25fczE2KHN2aW50MTZfdCwgc3ZpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3FhZGRfbl91OF9tKSkpCnN2dWludDhfdCBzdnNxYWRkX25fdThfbShzdmJvb2xfdCwgc3Z1aW50OF90LCBpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNxYWRkX25fdTMyX20pKSkKc3Z1aW50MzJfdCBzdnNxYWRkX25fdTMyX20oc3Zib29sX3QsIHN2dWludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNxYWRkX25fdTY0X20pKSkKc3Z1aW50NjRfdCBzdnNxYWRkX25fdTY0X20oc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNxYWRkX25fdTE2X20pKSkKc3Z1aW50MTZfdCBzdnNxYWRkX25fdTE2X20oc3Zib29sX3QsIHN2dWludDE2X3QsIGludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNxYWRkX25fdThfeCkpKQpzdnVpbnQ4X3Qgc3ZzcWFkZF9uX3U4X3goc3Zib29sX3QsIHN2dWludDhfdCwgaW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzcWFkZF9uX3UzMl94KSkpCnN2dWludDMyX3Qgc3ZzcWFkZF9uX3UzMl94KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzcWFkZF9uX3U2NF94KSkpCnN2dWludDY0X3Qgc3ZzcWFkZF9uX3U2NF94KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzcWFkZF9uX3UxNl94KSkpCnN2dWludDE2X3Qgc3ZzcWFkZF9uX3UxNl94KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzcWFkZF9uX3U4X3opKSkKc3Z1aW50OF90IHN2c3FhZGRfbl91OF96KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIGludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3FhZGRfbl91MzJfeikpKQpzdnVpbnQzMl90IHN2c3FhZGRfbl91MzJfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3FhZGRfbl91NjRfeikpKQpzdnVpbnQ2NF90IHN2c3FhZGRfbl91NjRfeihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3FhZGRfbl91MTZfeikpKQpzdnVpbnQxNl90IHN2c3FhZGRfbl91MTZfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3FhZGRfdThfbSkpKQpzdnVpbnQ4X3Qgc3ZzcWFkZF91OF9tKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzcWFkZF91MzJfbSkpKQpzdnVpbnQzMl90IHN2c3FhZGRfdTMyX20oc3Zib29sX3QsIHN2dWludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3FhZGRfdTY0X20pKSkKc3Z1aW50NjRfdCBzdnNxYWRkX3U2NF9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNxYWRkX3UxNl9tKSkpCnN2dWludDE2X3Qgc3ZzcWFkZF91MTZfbShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzcWFkZF91OF94KSkpCnN2dWludDhfdCBzdnNxYWRkX3U4X3goc3Zib29sX3QsIHN2dWludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNxYWRkX3UzMl94KSkpCnN2dWludDMyX3Qgc3ZzcWFkZF91MzJfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzcWFkZF91NjRfeCkpKQpzdnVpbnQ2NF90IHN2c3FhZGRfdTY0X3goc3Zib29sX3QsIHN2dWludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3FhZGRfdTE2X3gpKSkKc3Z1aW50MTZfdCBzdnNxYWRkX3UxNl94KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNxYWRkX3U4X3opKSkKc3Z1aW50OF90IHN2c3FhZGRfdThfeihzdmJvb2xfdCwgc3Z1aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3FhZGRfdTMyX3opKSkKc3Z1aW50MzJfdCBzdnNxYWRkX3UzMl96KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNxYWRkX3U2NF96KSkpCnN2dWludDY0X3Qgc3ZzcWFkZF91NjRfeihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzcWFkZF91MTZfeikpKQpzdnVpbnQxNl90IHN2c3FhZGRfdTE2X3ooc3Zib29sX3QsIHN2dWludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3JhX25fczgpKSkKc3ZpbnQ4X3Qgc3ZzcmFfbl9zOChzdmludDhfdCwgc3ZpbnQ4X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzcmFfbl9zMzIpKSkKc3ZpbnQzMl90IHN2c3JhX25fczMyKHN2aW50MzJfdCwgc3ZpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3JhX25fczY0KSkpCnN2aW50NjRfdCBzdnNyYV9uX3M2NChzdmludDY0X3QsIHN2aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNyYV9uX3MxNikpKQpzdmludDE2X3Qgc3ZzcmFfbl9zMTYoc3ZpbnQxNl90LCBzdmludDE2X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzcmFfbl91OCkpKQpzdnVpbnQ4X3Qgc3ZzcmFfbl91OChzdnVpbnQ4X3QsIHN2dWludDhfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNyYV9uX3UzMikpKQpzdnVpbnQzMl90IHN2c3JhX25fdTMyKHN2dWludDMyX3QsIHN2dWludDMyX3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzcmFfbl91NjQpKSkKc3Z1aW50NjRfdCBzdnNyYV9uX3U2NChzdnVpbnQ2NF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3JhX25fdTE2KSkpCnN2dWludDE2X3Qgc3ZzcmFfbl91MTYoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNyaV9uX3U4KSkpCnN2dWludDhfdCBzdnNyaV9uX3U4KHN2dWludDhfdCwgc3Z1aW50OF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3JpX25fdTMyKSkpCnN2dWludDMyX3Qgc3Zzcmlfbl91MzIoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNyaV9uX3U2NCkpKQpzdnVpbnQ2NF90IHN2c3JpX25fdTY0KHN2dWludDY0X3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zzcmlfbl91MTYpKSkKc3Z1aW50MTZfdCBzdnNyaV9uX3UxNihzdnVpbnQxNl90LCBzdnVpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3JpX25fczgpKSkKc3ZpbnQ4X3Qgc3Zzcmlfbl9zOChzdmludDhfdCwgc3ZpbnQ4X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zzcmlfbl9zMzIpKSkKc3ZpbnQzMl90IHN2c3JpX25fczMyKHN2aW50MzJfdCwgc3ZpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3JpX25fczY0KSkpCnN2aW50NjRfdCBzdnNyaV9uX3M2NChzdmludDY0X3QsIHN2aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNyaV9uX3MxNikpKQpzdmludDE2X3Qgc3Zzcmlfbl9zMTYoc3ZpbnQxNl90LCBzdmludDE2X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MV9zY2F0dGVyX3UzMmJhc2VfaW5kZXhfdTMyKSkpCnZvaWQgc3ZzdG50MV9zY2F0dGVyX3UzMmJhc2VfaW5kZXhfdTMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MV9zY2F0dGVyX3U2NGJhc2VfaW5kZXhfdTY0KSkpCnZvaWQgc3ZzdG50MV9zY2F0dGVyX3U2NGJhc2VfaW5kZXhfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MV9zY2F0dGVyX3U2NGJhc2VfaW5kZXhfZjY0KSkpCnZvaWQgc3ZzdG50MV9zY2F0dGVyX3U2NGJhc2VfaW5kZXhfZjY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFfc2NhdHRlcl91MzJiYXNlX2luZGV4X2YzMikpKQp2b2lkIHN2c3RudDFfc2NhdHRlcl91MzJiYXNlX2luZGV4X2YzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50NjRfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxX3NjYXR0ZXJfdTMyYmFzZV9pbmRleF9zMzIpKSkKdm9pZCBzdnN0bnQxX3NjYXR0ZXJfdTMyYmFzZV9pbmRleF9zMzIoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFfc2NhdHRlcl91NjRiYXNlX2luZGV4X3M2NCkpKQp2b2lkIHN2c3RudDFfc2NhdHRlcl91NjRiYXNlX2luZGV4X3M2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MV9zY2F0dGVyX3UzMmJhc2Vfb2Zmc2V0X3UzMikpKQp2b2lkIHN2c3RudDFfc2NhdHRlcl91MzJiYXNlX29mZnNldF91MzIoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxX3NjYXR0ZXJfdTY0YmFzZV9vZmZzZXRfdTY0KSkpCnZvaWQgc3ZzdG50MV9zY2F0dGVyX3U2NGJhc2Vfb2Zmc2V0X3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFfc2NhdHRlcl91NjRiYXNlX29mZnNldF9mNjQpKSkKdm9pZCBzdnN0bnQxX3NjYXR0ZXJfdTY0YmFzZV9vZmZzZXRfZjY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFfc2NhdHRlcl91MzJiYXNlX29mZnNldF9mMzIpKSkKdm9pZCBzdnN0bnQxX3NjYXR0ZXJfdTMyYmFzZV9vZmZzZXRfZjMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFfc2NhdHRlcl91MzJiYXNlX29mZnNldF9zMzIpKSkKdm9pZCBzdnN0bnQxX3NjYXR0ZXJfdTMyYmFzZV9vZmZzZXRfczMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxX3NjYXR0ZXJfdTY0YmFzZV9vZmZzZXRfczY0KSkpCnZvaWQgc3ZzdG50MV9zY2F0dGVyX3U2NGJhc2Vfb2Zmc2V0X3M2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MV9zY2F0dGVyX3UzMmJhc2VfdTMyKSkpCnZvaWQgc3ZzdG50MV9zY2F0dGVyX3UzMmJhc2VfdTMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MV9zY2F0dGVyX3U2NGJhc2VfdTY0KSkpCnZvaWQgc3ZzdG50MV9zY2F0dGVyX3U2NGJhc2VfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MV9zY2F0dGVyX3U2NGJhc2VfZjY0KSkpCnZvaWQgc3ZzdG50MV9zY2F0dGVyX3U2NGJhc2VfZjY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFfc2NhdHRlcl91MzJiYXNlX2YzMikpKQp2b2lkIHN2c3RudDFfc2NhdHRlcl91MzJiYXNlX2YzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxX3NjYXR0ZXJfdTMyYmFzZV9zMzIpKSkKdm9pZCBzdnN0bnQxX3NjYXR0ZXJfdTMyYmFzZV9zMzIoc3Zib29sX3QsIHN2dWludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFfc2NhdHRlcl91NjRiYXNlX3M2NCkpKQp2b2lkIHN2c3RudDFfc2NhdHRlcl91NjRiYXNlX3M2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MV9zY2F0dGVyX3M2NGluZGV4X3U2NCkpKQp2b2lkIHN2c3RudDFfc2NhdHRlcl9zNjRpbmRleF91NjQoc3Zib29sX3QsIHVpbnQ2NF90ICosIHN2aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFfc2NhdHRlcl9zNjRpbmRleF9mNjQpKSkKdm9pZCBzdnN0bnQxX3NjYXR0ZXJfczY0aW5kZXhfZjY0KHN2Ym9vbF90LCBmbG9hdDY0X3QgKiwgc3ZpbnQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFfc2NhdHRlcl9zNjRpbmRleF9zNjQpKSkKdm9pZCBzdnN0bnQxX3NjYXR0ZXJfczY0aW5kZXhfczY0KHN2Ym9vbF90LCBpbnQ2NF90ICosIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MV9zY2F0dGVyX3U2NGluZGV4X3U2NCkpKQp2b2lkIHN2c3RudDFfc2NhdHRlcl91NjRpbmRleF91NjQoc3Zib29sX3QsIHVpbnQ2NF90ICosIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxX3NjYXR0ZXJfdTY0aW5kZXhfZjY0KSkpCnZvaWQgc3ZzdG50MV9zY2F0dGVyX3U2NGluZGV4X2Y2NChzdmJvb2xfdCwgZmxvYXQ2NF90ICosIHN2dWludDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MV9zY2F0dGVyX3U2NGluZGV4X3M2NCkpKQp2b2lkIHN2c3RudDFfc2NhdHRlcl91NjRpbmRleF9zNjQoc3Zib29sX3QsIGludDY0X3QgKiwgc3Z1aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MV9zY2F0dGVyX3UzMm9mZnNldF91MzIpKSkKdm9pZCBzdnN0bnQxX3NjYXR0ZXJfdTMyb2Zmc2V0X3UzMihzdmJvb2xfdCwgdWludDMyX3QgKiwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFfc2NhdHRlcl91MzJvZmZzZXRfZjMyKSkpCnZvaWQgc3ZzdG50MV9zY2F0dGVyX3UzMm9mZnNldF9mMzIoc3Zib29sX3QsIGZsb2F0MzJfdCAqLCBzdnVpbnQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFfc2NhdHRlcl91MzJvZmZzZXRfczMyKSkpCnZvaWQgc3ZzdG50MV9zY2F0dGVyX3UzMm9mZnNldF9zMzIoc3Zib29sX3QsIGludDMyX3QgKiwgc3Z1aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MV9zY2F0dGVyX3M2NG9mZnNldF91NjQpKSkKdm9pZCBzdnN0bnQxX3NjYXR0ZXJfczY0b2Zmc2V0X3U2NChzdmJvb2xfdCwgdWludDY0X3QgKiwgc3ZpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MV9zY2F0dGVyX3M2NG9mZnNldF9mNjQpKSkKdm9pZCBzdnN0bnQxX3NjYXR0ZXJfczY0b2Zmc2V0X2Y2NChzdmJvb2xfdCwgZmxvYXQ2NF90ICosIHN2aW50NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxX3NjYXR0ZXJfczY0b2Zmc2V0X3M2NCkpKQp2b2lkIHN2c3RudDFfc2NhdHRlcl9zNjRvZmZzZXRfczY0KHN2Ym9vbF90LCBpbnQ2NF90ICosIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MV9zY2F0dGVyX3U2NG9mZnNldF91NjQpKSkKdm9pZCBzdnN0bnQxX3NjYXR0ZXJfdTY0b2Zmc2V0X3U2NChzdmJvb2xfdCwgdWludDY0X3QgKiwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFfc2NhdHRlcl91NjRvZmZzZXRfZjY0KSkpCnZvaWQgc3ZzdG50MV9zY2F0dGVyX3U2NG9mZnNldF9mNjQoc3Zib29sX3QsIGZsb2F0NjRfdCAqLCBzdnVpbnQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFfc2NhdHRlcl91NjRvZmZzZXRfczY0KSkpCnZvaWQgc3ZzdG50MV9zY2F0dGVyX3U2NG9mZnNldF9zNjQoc3Zib29sX3QsIGludDY0X3QgKiwgc3Z1aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MWJfc2NhdHRlcl91MzJiYXNlX29mZnNldF91MzIpKSkKdm9pZCBzdnN0bnQxYl9zY2F0dGVyX3UzMmJhc2Vfb2Zmc2V0X3UzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50NjRfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFiX3NjYXR0ZXJfdTY0YmFzZV9vZmZzZXRfdTY0KSkpCnZvaWQgc3ZzdG50MWJfc2NhdHRlcl91NjRiYXNlX29mZnNldF91NjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxYl9zY2F0dGVyX3UzMmJhc2Vfb2Zmc2V0X3MzMikpKQp2b2lkIHN2c3RudDFiX3NjYXR0ZXJfdTMyYmFzZV9vZmZzZXRfczMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxYl9zY2F0dGVyX3U2NGJhc2Vfb2Zmc2V0X3M2NCkpKQp2b2lkIHN2c3RudDFiX3NjYXR0ZXJfdTY0YmFzZV9vZmZzZXRfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxYl9zY2F0dGVyX3UzMmJhc2VfdTMyKSkpCnZvaWQgc3ZzdG50MWJfc2NhdHRlcl91MzJiYXNlX3UzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFiX3NjYXR0ZXJfdTY0YmFzZV91NjQpKSkKdm9pZCBzdnN0bnQxYl9zY2F0dGVyX3U2NGJhc2VfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MWJfc2NhdHRlcl91MzJiYXNlX3MzMikpKQp2b2lkIHN2c3RudDFiX3NjYXR0ZXJfdTMyYmFzZV9zMzIoc3Zib29sX3QsIHN2dWludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFiX3NjYXR0ZXJfdTY0YmFzZV9zNjQpKSkKdm9pZCBzdnN0bnQxYl9zY2F0dGVyX3U2NGJhc2VfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxYl9zY2F0dGVyX3UzMm9mZnNldF9zMzIpKSkKdm9pZCBzdnN0bnQxYl9zY2F0dGVyX3UzMm9mZnNldF9zMzIoc3Zib29sX3QsIGludDhfdCAqLCBzdnVpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxYl9zY2F0dGVyX3UzMm9mZnNldF91MzIpKSkKdm9pZCBzdnN0bnQxYl9zY2F0dGVyX3UzMm9mZnNldF91MzIoc3Zib29sX3QsIHVpbnQ4X3QgKiwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFiX3NjYXR0ZXJfczY0b2Zmc2V0X3M2NCkpKQp2b2lkIHN2c3RudDFiX3NjYXR0ZXJfczY0b2Zmc2V0X3M2NChzdmJvb2xfdCwgaW50OF90ICosIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MWJfc2NhdHRlcl9zNjRvZmZzZXRfdTY0KSkpCnZvaWQgc3ZzdG50MWJfc2NhdHRlcl9zNjRvZmZzZXRfdTY0KHN2Ym9vbF90LCB1aW50OF90ICosIHN2aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFiX3NjYXR0ZXJfdTY0b2Zmc2V0X3M2NCkpKQp2b2lkIHN2c3RudDFiX3NjYXR0ZXJfdTY0b2Zmc2V0X3M2NChzdmJvb2xfdCwgaW50OF90ICosIHN2dWludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFiX3NjYXR0ZXJfdTY0b2Zmc2V0X3U2NCkpKQp2b2lkIHN2c3RudDFiX3NjYXR0ZXJfdTY0b2Zmc2V0X3U2NChzdmJvb2xfdCwgdWludDhfdCAqLCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MWhfc2NhdHRlcl91MzJiYXNlX2luZGV4X3UzMikpKQp2b2lkIHN2c3RudDFoX3NjYXR0ZXJfdTMyYmFzZV9pbmRleF91MzIoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxaF9zY2F0dGVyX3U2NGJhc2VfaW5kZXhfdTY0KSkpCnZvaWQgc3ZzdG50MWhfc2NhdHRlcl91NjRiYXNlX2luZGV4X3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFoX3NjYXR0ZXJfdTMyYmFzZV9pbmRleF9zMzIpKSkKdm9pZCBzdnN0bnQxaF9zY2F0dGVyX3UzMmJhc2VfaW5kZXhfczMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxaF9zY2F0dGVyX3U2NGJhc2VfaW5kZXhfczY0KSkpCnZvaWQgc3ZzdG50MWhfc2NhdHRlcl91NjRiYXNlX2luZGV4X3M2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MWhfc2NhdHRlcl91MzJiYXNlX29mZnNldF91MzIpKSkKdm9pZCBzdnN0bnQxaF9zY2F0dGVyX3UzMmJhc2Vfb2Zmc2V0X3UzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50NjRfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFoX3NjYXR0ZXJfdTY0YmFzZV9vZmZzZXRfdTY0KSkpCnZvaWQgc3ZzdG50MWhfc2NhdHRlcl91NjRiYXNlX29mZnNldF91NjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxaF9zY2F0dGVyX3UzMmJhc2Vfb2Zmc2V0X3MzMikpKQp2b2lkIHN2c3RudDFoX3NjYXR0ZXJfdTMyYmFzZV9vZmZzZXRfczMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxaF9zY2F0dGVyX3U2NGJhc2Vfb2Zmc2V0X3M2NCkpKQp2b2lkIHN2c3RudDFoX3NjYXR0ZXJfdTY0YmFzZV9vZmZzZXRfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxaF9zY2F0dGVyX3UzMmJhc2VfdTMyKSkpCnZvaWQgc3ZzdG50MWhfc2NhdHRlcl91MzJiYXNlX3UzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFoX3NjYXR0ZXJfdTY0YmFzZV91NjQpKSkKdm9pZCBzdnN0bnQxaF9zY2F0dGVyX3U2NGJhc2VfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MWhfc2NhdHRlcl91MzJiYXNlX3MzMikpKQp2b2lkIHN2c3RudDFoX3NjYXR0ZXJfdTMyYmFzZV9zMzIoc3Zib29sX3QsIHN2dWludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFoX3NjYXR0ZXJfdTY0YmFzZV9zNjQpKSkKdm9pZCBzdnN0bnQxaF9zY2F0dGVyX3U2NGJhc2VfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxaF9zY2F0dGVyX3M2NGluZGV4X3M2NCkpKQp2b2lkIHN2c3RudDFoX3NjYXR0ZXJfczY0aW5kZXhfczY0KHN2Ym9vbF90LCBpbnQxNl90ICosIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MWhfc2NhdHRlcl9zNjRpbmRleF91NjQpKSkKdm9pZCBzdnN0bnQxaF9zY2F0dGVyX3M2NGluZGV4X3U2NChzdmJvb2xfdCwgdWludDE2X3QgKiwgc3ZpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MWhfc2NhdHRlcl91NjRpbmRleF9zNjQpKSkKdm9pZCBzdnN0bnQxaF9zY2F0dGVyX3U2NGluZGV4X3M2NChzdmJvb2xfdCwgaW50MTZfdCAqLCBzdnVpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxaF9zY2F0dGVyX3U2NGluZGV4X3U2NCkpKQp2b2lkIHN2c3RudDFoX3NjYXR0ZXJfdTY0aW5kZXhfdTY0KHN2Ym9vbF90LCB1aW50MTZfdCAqLCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MWhfc2NhdHRlcl91MzJvZmZzZXRfczMyKSkpCnZvaWQgc3ZzdG50MWhfc2NhdHRlcl91MzJvZmZzZXRfczMyKHN2Ym9vbF90LCBpbnQxNl90ICosIHN2dWludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFoX3NjYXR0ZXJfdTMyb2Zmc2V0X3UzMikpKQp2b2lkIHN2c3RudDFoX3NjYXR0ZXJfdTMyb2Zmc2V0X3UzMihzdmJvb2xfdCwgdWludDE2X3QgKiwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFoX3NjYXR0ZXJfczY0b2Zmc2V0X3M2NCkpKQp2b2lkIHN2c3RudDFoX3NjYXR0ZXJfczY0b2Zmc2V0X3M2NChzdmJvb2xfdCwgaW50MTZfdCAqLCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFoX3NjYXR0ZXJfczY0b2Zmc2V0X3U2NCkpKQp2b2lkIHN2c3RudDFoX3NjYXR0ZXJfczY0b2Zmc2V0X3U2NChzdmJvb2xfdCwgdWludDE2X3QgKiwgc3ZpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MWhfc2NhdHRlcl91NjRvZmZzZXRfczY0KSkpCnZvaWQgc3ZzdG50MWhfc2NhdHRlcl91NjRvZmZzZXRfczY0KHN2Ym9vbF90LCBpbnQxNl90ICosIHN2dWludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFoX3NjYXR0ZXJfdTY0b2Zmc2V0X3U2NCkpKQp2b2lkIHN2c3RudDFoX3NjYXR0ZXJfdTY0b2Zmc2V0X3U2NChzdmJvb2xfdCwgdWludDE2X3QgKiwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDF3X3NjYXR0ZXJfdTY0YmFzZV9pbmRleF91NjQpKSkKdm9pZCBzdnN0bnQxd19zY2F0dGVyX3U2NGJhc2VfaW5kZXhfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MXdfc2NhdHRlcl91NjRiYXNlX2luZGV4X3M2NCkpKQp2b2lkIHN2c3RudDF3X3NjYXR0ZXJfdTY0YmFzZV9pbmRleF9zNjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDF3X3NjYXR0ZXJfdTY0YmFzZV9vZmZzZXRfdTY0KSkpCnZvaWQgc3ZzdG50MXdfc2NhdHRlcl91NjRiYXNlX29mZnNldF91NjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxd19zY2F0dGVyX3U2NGJhc2Vfb2Zmc2V0X3M2NCkpKQp2b2lkIHN2c3RudDF3X3NjYXR0ZXJfdTY0YmFzZV9vZmZzZXRfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxd19zY2F0dGVyX3U2NGJhc2VfdTY0KSkpCnZvaWQgc3ZzdG50MXdfc2NhdHRlcl91NjRiYXNlX3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDF3X3NjYXR0ZXJfdTY0YmFzZV9zNjQpKSkKdm9pZCBzdnN0bnQxd19zY2F0dGVyX3U2NGJhc2VfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxd19zY2F0dGVyX3M2NGluZGV4X3M2NCkpKQp2b2lkIHN2c3RudDF3X3NjYXR0ZXJfczY0aW5kZXhfczY0KHN2Ym9vbF90LCBpbnQzMl90ICosIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MXdfc2NhdHRlcl9zNjRpbmRleF91NjQpKSkKdm9pZCBzdnN0bnQxd19zY2F0dGVyX3M2NGluZGV4X3U2NChzdmJvb2xfdCwgdWludDMyX3QgKiwgc3ZpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MXdfc2NhdHRlcl91NjRpbmRleF9zNjQpKSkKdm9pZCBzdnN0bnQxd19zY2F0dGVyX3U2NGluZGV4X3M2NChzdmJvb2xfdCwgaW50MzJfdCAqLCBzdnVpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxd19zY2F0dGVyX3U2NGluZGV4X3U2NCkpKQp2b2lkIHN2c3RudDF3X3NjYXR0ZXJfdTY0aW5kZXhfdTY0KHN2Ym9vbF90LCB1aW50MzJfdCAqLCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MXdfc2NhdHRlcl9zNjRvZmZzZXRfczY0KSkpCnZvaWQgc3ZzdG50MXdfc2NhdHRlcl9zNjRvZmZzZXRfczY0KHN2Ym9vbF90LCBpbnQzMl90ICosIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MXdfc2NhdHRlcl9zNjRvZmZzZXRfdTY0KSkpCnZvaWQgc3ZzdG50MXdfc2NhdHRlcl9zNjRvZmZzZXRfdTY0KHN2Ym9vbF90LCB1aW50MzJfdCAqLCBzdmludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxd19zY2F0dGVyX3U2NG9mZnNldF9zNjQpKSkKdm9pZCBzdnN0bnQxd19zY2F0dGVyX3U2NG9mZnNldF9zNjQoc3Zib29sX3QsIGludDMyX3QgKiwgc3Z1aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MXdfc2NhdHRlcl91NjRvZmZzZXRfdTY0KSkpCnZvaWQgc3ZzdG50MXdfc2NhdHRlcl91NjRvZmZzZXRfdTY0KHN2Ym9vbF90LCB1aW50MzJfdCAqLCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJobmJfbl91MzIpKSkKc3Z1aW50MTZfdCBzdnN1YmhuYl9uX3UzMihzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViaG5iX25fdTY0KSkpCnN2dWludDMyX3Qgc3ZzdWJobmJfbl91NjQoc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YmhuYl9uX3UxNikpKQpzdnVpbnQ4X3Qgc3ZzdWJobmJfbl91MTYoc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YmhuYl9uX3MzMikpKQpzdmludDE2X3Qgc3ZzdWJobmJfbl9zMzIoc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJobmJfbl9zNjQpKSkKc3ZpbnQzMl90IHN2c3ViaG5iX25fczY0KHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViaG5iX25fczE2KSkpCnN2aW50OF90IHN2c3ViaG5iX25fczE2KHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViaG5iX3UzMikpKQpzdnVpbnQxNl90IHN2c3ViaG5iX3UzMihzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJobmJfdTY0KSkpCnN2dWludDMyX3Qgc3ZzdWJobmJfdTY0KHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YmhuYl91MTYpKSkKc3Z1aW50OF90IHN2c3ViaG5iX3UxNihzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJobmJfczMyKSkpCnN2aW50MTZfdCBzdnN1YmhuYl9zMzIoc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YmhuYl9zNjQpKSkKc3ZpbnQzMl90IHN2c3ViaG5iX3M2NChzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViaG5iX3MxNikpKQpzdmludDhfdCBzdnN1YmhuYl9zMTYoc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YmhudF9uX3UzMikpKQpzdnVpbnQxNl90IHN2c3ViaG50X25fdTMyKHN2dWludDE2X3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJobnRfbl91NjQpKSkKc3Z1aW50MzJfdCBzdnN1YmhudF9uX3U2NChzdnVpbnQzMl90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViaG50X25fdTE2KSkpCnN2dWludDhfdCBzdnN1YmhudF9uX3UxNihzdnVpbnQ4X3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJobnRfbl9zMzIpKSkKc3ZpbnQxNl90IHN2c3ViaG50X25fczMyKHN2aW50MTZfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJobnRfbl9zNjQpKSkKc3ZpbnQzMl90IHN2c3ViaG50X25fczY0KHN2aW50MzJfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJobnRfbl9zMTYpKSkKc3ZpbnQ4X3Qgc3ZzdWJobnRfbl9zMTYoc3ZpbnQ4X3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViaG50X3UzMikpKQpzdnVpbnQxNl90IHN2c3ViaG50X3UzMihzdnVpbnQxNl90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJobnRfdTY0KSkpCnN2dWludDMyX3Qgc3ZzdWJobnRfdTY0KHN2dWludDMyX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YmhudF91MTYpKSkKc3Z1aW50OF90IHN2c3ViaG50X3UxNihzdnVpbnQ4X3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YmhudF9zMzIpKSkKc3ZpbnQxNl90IHN2c3ViaG50X3MzMihzdmludDE2X3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJobnRfczY0KSkpCnN2aW50MzJfdCBzdnN1YmhudF9zNjQoc3ZpbnQzMl90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViaG50X3MxNikpKQpzdmludDhfdCBzdnN1YmhudF9zMTYoc3ZpbnQ4X3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJsYl9uX3MzMikpKQpzdmludDMyX3Qgc3ZzdWJsYl9uX3MzMihzdmludDE2X3QsIGludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YmxiX25fczY0KSkpCnN2aW50NjRfdCBzdnN1YmxiX25fczY0KHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3VibGJfbl9zMTYpKSkKc3ZpbnQxNl90IHN2c3VibGJfbl9zMTYoc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3VibGJfbl91MzIpKSkKc3Z1aW50MzJfdCBzdnN1YmxiX25fdTMyKHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJsYl9uX3U2NCkpKQpzdnVpbnQ2NF90IHN2c3VibGJfbl91NjQoc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YmxiX25fdTE2KSkpCnN2dWludDE2X3Qgc3ZzdWJsYl9uX3UxNihzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YmxiX3MzMikpKQpzdmludDMyX3Qgc3ZzdWJsYl9zMzIoc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YmxiX3M2NCkpKQpzdmludDY0X3Qgc3ZzdWJsYl9zNjQoc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YmxiX3MxNikpKQpzdmludDE2X3Qgc3ZzdWJsYl9zMTYoc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJsYl91MzIpKSkKc3Z1aW50MzJfdCBzdnN1YmxiX3UzMihzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJsYl91NjQpKSkKc3Z1aW50NjRfdCBzdnN1YmxiX3U2NChzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJsYl91MTYpKSkKc3Z1aW50MTZfdCBzdnN1YmxiX3UxNihzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3VibGJ0X25fczMyKSkpCnN2aW50MzJfdCBzdnN1YmxidF9uX3MzMihzdmludDE2X3QsIGludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YmxidF9uX3M2NCkpKQpzdmludDY0X3Qgc3ZzdWJsYnRfbl9zNjQoc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJsYnRfbl9zMTYpKSkKc3ZpbnQxNl90IHN2c3VibGJ0X25fczE2KHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YmxidF9zMzIpKSkKc3ZpbnQzMl90IHN2c3VibGJ0X3MzMihzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3VibGJ0X3M2NCkpKQpzdmludDY0X3Qgc3ZzdWJsYnRfczY0KHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJsYnRfczE2KSkpCnN2aW50MTZfdCBzdnN1YmxidF9zMTYoc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJsdF9uX3MzMikpKQpzdmludDMyX3Qgc3ZzdWJsdF9uX3MzMihzdmludDE2X3QsIGludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Ymx0X25fczY0KSkpCnN2aW50NjRfdCBzdnN1Ymx0X25fczY0KHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3VibHRfbl9zMTYpKSkKc3ZpbnQxNl90IHN2c3VibHRfbl9zMTYoc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3VibHRfbl91MzIpKSkKc3Z1aW50MzJfdCBzdnN1Ymx0X25fdTMyKHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJsdF9uX3U2NCkpKQpzdnVpbnQ2NF90IHN2c3VibHRfbl91NjQoc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Ymx0X25fdTE2KSkpCnN2dWludDE2X3Qgc3ZzdWJsdF9uX3UxNihzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Ymx0X3MzMikpKQpzdmludDMyX3Qgc3ZzdWJsdF9zMzIoc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Ymx0X3M2NCkpKQpzdmludDY0X3Qgc3ZzdWJsdF9zNjQoc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Ymx0X3MxNikpKQpzdmludDE2X3Qgc3ZzdWJsdF9zMTYoc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJsdF91MzIpKSkKc3Z1aW50MzJfdCBzdnN1Ymx0X3UzMihzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJsdF91NjQpKSkKc3Z1aW50NjRfdCBzdnN1Ymx0X3U2NChzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJsdF91MTYpKSkKc3Z1aW50MTZfdCBzdnN1Ymx0X3UxNihzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3VibHRiX25fczMyKSkpCnN2aW50MzJfdCBzdnN1Ymx0Yl9uX3MzMihzdmludDE2X3QsIGludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Ymx0Yl9uX3M2NCkpKQpzdmludDY0X3Qgc3ZzdWJsdGJfbl9zNjQoc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJsdGJfbl9zMTYpKSkKc3ZpbnQxNl90IHN2c3VibHRiX25fczE2KHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Ymx0Yl9zMzIpKSkKc3ZpbnQzMl90IHN2c3VibHRiX3MzMihzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3VibHRiX3M2NCkpKQpzdmludDY0X3Qgc3ZzdWJsdGJfczY0KHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJsdGJfczE2KSkpCnN2aW50MTZfdCBzdnN1Ymx0Yl9zMTYoc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJ3Yl9uX3MzMikpKQpzdmludDMyX3Qgc3ZzdWJ3Yl9uX3MzMihzdmludDMyX3QsIGludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YndiX25fczY0KSkpCnN2aW50NjRfdCBzdnN1YndiX25fczY0KHN2aW50NjRfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vid2Jfbl9zMTYpKSkKc3ZpbnQxNl90IHN2c3Vid2Jfbl9zMTYoc3ZpbnQxNl90LCBpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YndiX25fdTMyKSkpCnN2dWludDMyX3Qgc3ZzdWJ3Yl9uX3UzMihzdnVpbnQzMl90LCB1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vid2Jfbl91NjQpKSkKc3Z1aW50NjRfdCBzdnN1YndiX25fdTY0KHN2dWludDY0X3QsIHVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJ3Yl9uX3UxNikpKQpzdnVpbnQxNl90IHN2c3Vid2Jfbl91MTYoc3Z1aW50MTZfdCwgdWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vid2JfczMyKSkpCnN2aW50MzJfdCBzdnN1YndiX3MzMihzdmludDMyX3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vid2JfczY0KSkpCnN2aW50NjRfdCBzdnN1YndiX3M2NChzdmludDY0X3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vid2JfczE2KSkpCnN2aW50MTZfdCBzdnN1YndiX3MxNihzdmludDE2X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJ3Yl91MzIpKSkKc3Z1aW50MzJfdCBzdnN1YndiX3UzMihzdnVpbnQzMl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJ3Yl91NjQpKSkKc3Z1aW50NjRfdCBzdnN1YndiX3U2NChzdnVpbnQ2NF90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJ3Yl91MTYpKSkKc3Z1aW50MTZfdCBzdnN1YndiX3UxNihzdnVpbnQxNl90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Ynd0X25fczMyKSkpCnN2aW50MzJfdCBzdnN1Ynd0X25fczMyKHN2aW50MzJfdCwgaW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vid3Rfbl9zNjQpKSkKc3ZpbnQ2NF90IHN2c3Vid3Rfbl9zNjQoc3ZpbnQ2NF90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJ3dF9uX3MxNikpKQpzdmludDE2X3Qgc3ZzdWJ3dF9uX3MxNihzdmludDE2X3QsIGludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vid3Rfbl91MzIpKSkKc3Z1aW50MzJfdCBzdnN1Ynd0X25fdTMyKHN2dWludDMyX3QsIHVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJ3dF9uX3U2NCkpKQpzdnVpbnQ2NF90IHN2c3Vid3Rfbl91NjQoc3Z1aW50NjRfdCwgdWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Ynd0X25fdTE2KSkpCnN2dWludDE2X3Qgc3ZzdWJ3dF9uX3UxNihzdnVpbnQxNl90LCB1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJ3dF9zMzIpKSkKc3ZpbnQzMl90IHN2c3Vid3RfczMyKHN2aW50MzJfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJ3dF9zNjQpKSkKc3ZpbnQ2NF90IHN2c3Vid3RfczY0KHN2aW50NjRfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJ3dF9zMTYpKSkKc3ZpbnQxNl90IHN2c3Vid3RfczE2KHN2aW50MTZfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Ynd0X3UzMikpKQpzdnVpbnQzMl90IHN2c3Vid3RfdTMyKHN2dWludDMyX3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Ynd0X3U2NCkpKQpzdnVpbnQ2NF90IHN2c3Vid3RfdTY0KHN2dWludDY0X3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Ynd0X3UxNikpKQpzdnVpbnQxNl90IHN2c3Vid3RfdTE2KHN2dWludDE2X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dGJsMl91OCkpKQpzdnVpbnQ4X3Qgc3Z0YmwyX3U4KHN2dWludDh4Ml90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRibDJfdTMyKSkpCnN2dWludDMyX3Qgc3Z0YmwyX3UzMihzdnVpbnQzMngyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRibDJfdTY0KSkpCnN2dWludDY0X3Qgc3Z0YmwyX3U2NChzdnVpbnQ2NHgyX3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRibDJfdTE2KSkpCnN2dWludDE2X3Qgc3Z0YmwyX3UxNihzdnVpbnQxNngyX3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRibDJfczgpKSkKc3ZpbnQ4X3Qgc3Z0YmwyX3M4KHN2aW50OHgyX3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dGJsMl9mNjQpKSkKc3ZmbG9hdDY0X3Qgc3Z0YmwyX2Y2NChzdmZsb2F0NjR4Ml90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0YmwyX2YzMikpKQpzdmZsb2F0MzJfdCBzdnRibDJfZjMyKHN2ZmxvYXQzMngyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRibDJfZjE2KSkpCnN2ZmxvYXQxNl90IHN2dGJsMl9mMTYoc3ZmbG9hdDE2eDJfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dGJsMl9zMzIpKSkKc3ZpbnQzMl90IHN2dGJsMl9zMzIoc3ZpbnQzMngyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRibDJfczY0KSkpCnN2aW50NjRfdCBzdnRibDJfczY0KHN2aW50NjR4Ml90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0YmwyX3MxNikpKQpzdmludDE2X3Qgc3Z0YmwyX3MxNihzdmludDE2eDJfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dGJ4X3U4KSkpCnN2dWludDhfdCBzdnRieF91OChzdnVpbnQ4X3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0YnhfdTMyKSkpCnN2dWludDMyX3Qgc3Z0YnhfdTMyKHN2dWludDMyX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRieF91NjQpKSkKc3Z1aW50NjRfdCBzdnRieF91NjQoc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dGJ4X3UxNikpKQpzdnVpbnQxNl90IHN2dGJ4X3UxNihzdnVpbnQxNl90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0YnhfczgpKSkKc3ZpbnQ4X3Qgc3Z0Ynhfczgoc3ZpbnQ4X3QsIHN2aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRieF9mNjQpKSkKc3ZmbG9hdDY0X3Qgc3Z0YnhfZjY0KHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dGJ4X2YzMikpKQpzdmZsb2F0MzJfdCBzdnRieF9mMzIoc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0YnhfZjE2KSkpCnN2ZmxvYXQxNl90IHN2dGJ4X2YxNihzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRieF9zMzIpKSkKc3ZpbnQzMl90IHN2dGJ4X3MzMihzdmludDMyX3QsIHN2aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dGJ4X3M2NCkpKQpzdmludDY0X3Qgc3Z0YnhfczY0KHN2aW50NjRfdCwgc3ZpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0YnhfczE2KSkpCnN2aW50MTZfdCBzdnRieF9zMTYoc3ZpbnQxNl90LCBzdmludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnVxYWRkX25fczhfbSkpKQpzdmludDhfdCBzdnVxYWRkX25fczhfbShzdmJvb2xfdCwgc3ZpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnVxYWRkX25fczMyX20pKSkKc3ZpbnQzMl90IHN2dXFhZGRfbl9zMzJfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXFhZGRfbl9zNjRfbSkpKQpzdmludDY0X3Qgc3Z1cWFkZF9uX3M2NF9tKHN2Ym9vbF90LCBzdmludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1cWFkZF9uX3MxNl9tKSkpCnN2aW50MTZfdCBzdnVxYWRkX25fczE2X20oc3Zib29sX3QsIHN2aW50MTZfdCwgdWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnVxYWRkX25fczhfeCkpKQpzdmludDhfdCBzdnVxYWRkX25fczhfeChzdmJvb2xfdCwgc3ZpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnVxYWRkX25fczMyX3gpKSkKc3ZpbnQzMl90IHN2dXFhZGRfbl9zMzJfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXFhZGRfbl9zNjRfeCkpKQpzdmludDY0X3Qgc3Z1cWFkZF9uX3M2NF94KHN2Ym9vbF90LCBzdmludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1cWFkZF9uX3MxNl94KSkpCnN2aW50MTZfdCBzdnVxYWRkX25fczE2X3goc3Zib29sX3QsIHN2aW50MTZfdCwgdWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnVxYWRkX25fczhfeikpKQpzdmludDhfdCBzdnVxYWRkX25fczhfeihzdmJvb2xfdCwgc3ZpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnVxYWRkX25fczMyX3opKSkKc3ZpbnQzMl90IHN2dXFhZGRfbl9zMzJfeihzdmJvb2xfdCwgc3ZpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXFhZGRfbl9zNjRfeikpKQpzdmludDY0X3Qgc3Z1cWFkZF9uX3M2NF96KHN2Ym9vbF90LCBzdmludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1cWFkZF9uX3MxNl96KSkpCnN2aW50MTZfdCBzdnVxYWRkX25fczE2X3ooc3Zib29sX3QsIHN2aW50MTZfdCwgdWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnVxYWRkX3M4X20pKSkKc3ZpbnQ4X3Qgc3Z1cWFkZF9zOF9tKHN2Ym9vbF90LCBzdmludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1cWFkZF9zMzJfbSkpKQpzdmludDMyX3Qgc3Z1cWFkZF9zMzJfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1cWFkZF9zNjRfbSkpKQpzdmludDY0X3Qgc3Z1cWFkZF9zNjRfbShzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1cWFkZF9zMTZfbSkpKQpzdmludDE2X3Qgc3Z1cWFkZF9zMTZfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1cWFkZF9zOF94KSkpCnN2aW50OF90IHN2dXFhZGRfczhfeChzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXFhZGRfczMyX3gpKSkKc3ZpbnQzMl90IHN2dXFhZGRfczMyX3goc3Zib29sX3QsIHN2aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXFhZGRfczY0X3gpKSkKc3ZpbnQ2NF90IHN2dXFhZGRfczY0X3goc3Zib29sX3QsIHN2aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXFhZGRfczE2X3gpKSkKc3ZpbnQxNl90IHN2dXFhZGRfczE2X3goc3Zib29sX3QsIHN2aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXFhZGRfczhfeikpKQpzdmludDhfdCBzdnVxYWRkX3M4X3ooc3Zib29sX3QsIHN2aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnVxYWRkX3MzMl96KSkpCnN2aW50MzJfdCBzdnVxYWRkX3MzMl96KHN2Ym9vbF90LCBzdmludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnVxYWRkX3M2NF96KSkpCnN2aW50NjRfdCBzdnVxYWRkX3M2NF96KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnVxYWRkX3MxNl96KSkpCnN2aW50MTZfdCBzdnVxYWRkX3MxNl96KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlZ2VfYjhfczMyKSkpCnN2Ym9vbF90IHN2d2hpbGVnZV9iOF9zMzIoaW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVnZV9iMzJfczMyKSkpCnN2Ym9vbF90IHN2d2hpbGVnZV9iMzJfczMyKGludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlZ2VfYjY0X3MzMikpKQpzdmJvb2xfdCBzdndoaWxlZ2VfYjY0X3MzMihpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z3aGlsZWdlX2IxNl9zMzIpKSkKc3Zib29sX3Qgc3Z3aGlsZWdlX2IxNl9zMzIoaW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVnZV9iOF9zNjQpKSkKc3Zib29sX3Qgc3Z3aGlsZWdlX2I4X3M2NChpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z3aGlsZWdlX2IzMl9zNjQpKSkKc3Zib29sX3Qgc3Z3aGlsZWdlX2IzMl9zNjQoaW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVnZV9iNjRfczY0KSkpCnN2Ym9vbF90IHN2d2hpbGVnZV9iNjRfczY0KGludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlZ2VfYjE2X3M2NCkpKQpzdmJvb2xfdCBzdndoaWxlZ2VfYjE2X3M2NChpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z3aGlsZWdlX2I4X3UzMikpKQpzdmJvb2xfdCBzdndoaWxlZ2VfYjhfdTMyKHVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVnZV9iMzJfdTMyKSkpCnN2Ym9vbF90IHN2d2hpbGVnZV9iMzJfdTMyKHVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVnZV9iNjRfdTMyKSkpCnN2Ym9vbF90IHN2d2hpbGVnZV9iNjRfdTMyKHVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVnZV9iMTZfdTMyKSkpCnN2Ym9vbF90IHN2d2hpbGVnZV9iMTZfdTMyKHVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVnZV9iOF91NjQpKSkKc3Zib29sX3Qgc3Z3aGlsZWdlX2I4X3U2NCh1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlZ2VfYjMyX3U2NCkpKQpzdmJvb2xfdCBzdndoaWxlZ2VfYjMyX3U2NCh1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlZ2VfYjY0X3U2NCkpKQpzdmJvb2xfdCBzdndoaWxlZ2VfYjY0X3U2NCh1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlZ2VfYjE2X3U2NCkpKQpzdmJvb2xfdCBzdndoaWxlZ2VfYjE2X3U2NCh1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlZ3RfYjhfczMyKSkpCnN2Ym9vbF90IHN2d2hpbGVndF9iOF9zMzIoaW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVndF9iMzJfczMyKSkpCnN2Ym9vbF90IHN2d2hpbGVndF9iMzJfczMyKGludDMyX3QsIGludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlZ3RfYjY0X3MzMikpKQpzdmJvb2xfdCBzdndoaWxlZ3RfYjY0X3MzMihpbnQzMl90LCBpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z3aGlsZWd0X2IxNl9zMzIpKSkKc3Zib29sX3Qgc3Z3aGlsZWd0X2IxNl9zMzIoaW50MzJfdCwgaW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVndF9iOF9zNjQpKSkKc3Zib29sX3Qgc3Z3aGlsZWd0X2I4X3M2NChpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z3aGlsZWd0X2IzMl9zNjQpKSkKc3Zib29sX3Qgc3Z3aGlsZWd0X2IzMl9zNjQoaW50NjRfdCwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVndF9iNjRfczY0KSkpCnN2Ym9vbF90IHN2d2hpbGVndF9iNjRfczY0KGludDY0X3QsIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlZ3RfYjE2X3M2NCkpKQpzdmJvb2xfdCBzdndoaWxlZ3RfYjE2X3M2NChpbnQ2NF90LCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z3aGlsZWd0X2I4X3UzMikpKQpzdmJvb2xfdCBzdndoaWxlZ3RfYjhfdTMyKHVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVndF9iMzJfdTMyKSkpCnN2Ym9vbF90IHN2d2hpbGVndF9iMzJfdTMyKHVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVndF9iNjRfdTMyKSkpCnN2Ym9vbF90IHN2d2hpbGVndF9iNjRfdTMyKHVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVndF9iMTZfdTMyKSkpCnN2Ym9vbF90IHN2d2hpbGVndF9iMTZfdTMyKHVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVndF9iOF91NjQpKSkKc3Zib29sX3Qgc3Z3aGlsZWd0X2I4X3U2NCh1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlZ3RfYjMyX3U2NCkpKQpzdmJvb2xfdCBzdndoaWxlZ3RfYjMyX3U2NCh1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlZ3RfYjY0X3U2NCkpKQpzdmJvb2xfdCBzdndoaWxlZ3RfYjY0X3U2NCh1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlZ3RfYjE2X3U2NCkpKQpzdmJvb2xfdCBzdndoaWxlZ3RfYjE2X3U2NCh1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlcndfdTgpKSkKc3Zib29sX3Qgc3Z3aGlsZXJ3X3U4KHVpbnQ4X3QgY29uc3QgKiwgdWludDhfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z3aGlsZXJ3X3M4KSkpCnN2Ym9vbF90IHN2d2hpbGVyd19zOChpbnQ4X3QgY29uc3QgKiwgaW50OF90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlcndfdTY0KSkpCnN2Ym9vbF90IHN2d2hpbGVyd191NjQodWludDY0X3QgY29uc3QgKiwgdWludDY0X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVyd19mNjQpKSkKc3Zib29sX3Qgc3Z3aGlsZXJ3X2Y2NChmbG9hdDY0X3QgY29uc3QgKiwgZmxvYXQ2NF90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlcndfczY0KSkpCnN2Ym9vbF90IHN2d2hpbGVyd19zNjQoaW50NjRfdCBjb25zdCAqLCBpbnQ2NF90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlcndfdTE2KSkpCnN2Ym9vbF90IHN2d2hpbGVyd191MTYodWludDE2X3QgY29uc3QgKiwgdWludDE2X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVyd19mMTYpKSkKc3Zib29sX3Qgc3Z3aGlsZXJ3X2YxNihmbG9hdDE2X3QgY29uc3QgKiwgZmxvYXQxNl90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlcndfczE2KSkpCnN2Ym9vbF90IHN2d2hpbGVyd19zMTYoaW50MTZfdCBjb25zdCAqLCBpbnQxNl90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlcndfdTMyKSkpCnN2Ym9vbF90IHN2d2hpbGVyd191MzIodWludDMyX3QgY29uc3QgKiwgdWludDMyX3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVyd19mMzIpKSkKc3Zib29sX3Qgc3Z3aGlsZXJ3X2YzMihmbG9hdDMyX3QgY29uc3QgKiwgZmxvYXQzMl90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlcndfczMyKSkpCnN2Ym9vbF90IHN2d2hpbGVyd19zMzIoaW50MzJfdCBjb25zdCAqLCBpbnQzMl90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxld3JfdTgpKSkKc3Zib29sX3Qgc3Z3aGlsZXdyX3U4KHVpbnQ4X3QgY29uc3QgKiwgdWludDhfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z3aGlsZXdyX3M4KSkpCnN2Ym9vbF90IHN2d2hpbGV3cl9zOChpbnQ4X3QgY29uc3QgKiwgaW50OF90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxld3JfdTY0KSkpCnN2Ym9vbF90IHN2d2hpbGV3cl91NjQodWludDY0X3QgY29uc3QgKiwgdWludDY0X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGV3cl9mNjQpKSkKc3Zib29sX3Qgc3Z3aGlsZXdyX2Y2NChmbG9hdDY0X3QgY29uc3QgKiwgZmxvYXQ2NF90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxld3JfczY0KSkpCnN2Ym9vbF90IHN2d2hpbGV3cl9zNjQoaW50NjRfdCBjb25zdCAqLCBpbnQ2NF90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxld3JfdTE2KSkpCnN2Ym9vbF90IHN2d2hpbGV3cl91MTYodWludDE2X3QgY29uc3QgKiwgdWludDE2X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGV3cl9mMTYpKSkKc3Zib29sX3Qgc3Z3aGlsZXdyX2YxNihmbG9hdDE2X3QgY29uc3QgKiwgZmxvYXQxNl90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxld3JfczE2KSkpCnN2Ym9vbF90IHN2d2hpbGV3cl9zMTYoaW50MTZfdCBjb25zdCAqLCBpbnQxNl90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxld3JfdTMyKSkpCnN2Ym9vbF90IHN2d2hpbGV3cl91MzIodWludDMyX3QgY29uc3QgKiwgdWludDMyX3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGV3cl9mMzIpKSkKc3Zib29sX3Qgc3Z3aGlsZXdyX2YzMihmbG9hdDMyX3QgY29uc3QgKiwgZmxvYXQzMl90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxld3JfczMyKSkpCnN2Ym9vbF90IHN2d2hpbGV3cl9zMzIoaW50MzJfdCBjb25zdCAqLCBpbnQzMl90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnhhcl9uX3U4KSkpCnN2dWludDhfdCBzdnhhcl9uX3U4KHN2dWludDhfdCwgc3Z1aW50OF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2eGFyX25fdTMyKSkpCnN2dWludDMyX3Qgc3Z4YXJfbl91MzIoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnhhcl9uX3U2NCkpKQpzdnVpbnQ2NF90IHN2eGFyX25fdTY0KHN2dWludDY0X3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z4YXJfbl91MTYpKSkKc3Z1aW50MTZfdCBzdnhhcl9uX3UxNihzdnVpbnQxNl90LCBzdnVpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2eGFyX25fczgpKSkKc3ZpbnQ4X3Qgc3Z4YXJfbl9zOChzdmludDhfdCwgc3ZpbnQ4X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z4YXJfbl9zMzIpKSkKc3ZpbnQzMl90IHN2eGFyX25fczMyKHN2aW50MzJfdCwgc3ZpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2eGFyX25fczY0KSkpCnN2aW50NjRfdCBzdnhhcl9uX3M2NChzdmludDY0X3QsIHN2aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnhhcl9uX3MxNikpKQpzdmludDE2X3Qgc3Z4YXJfbl9zMTYoc3ZpbnQxNl90LCBzdmludDE2X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJhX25fczgpKSkKc3ZpbnQ4X3Qgc3ZhYmEoc3ZpbnQ4X3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmFfbl9zMzIpKSkKc3ZpbnQzMl90IHN2YWJhKHN2aW50MzJfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJhX25fczY0KSkpCnN2aW50NjRfdCBzdmFiYShzdmludDY0X3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiYV9uX3MxNikpKQpzdmludDE2X3Qgc3ZhYmEoc3ZpbnQxNl90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmFfbl91OCkpKQpzdnVpbnQ4X3Qgc3ZhYmEoc3Z1aW50OF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmFfbl91MzIpKSkKc3Z1aW50MzJfdCBzdmFiYShzdnVpbnQzMl90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiYV9uX3U2NCkpKQpzdnVpbnQ2NF90IHN2YWJhKHN2dWludDY0X3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJhX25fdTE2KSkpCnN2dWludDE2X3Qgc3ZhYmEoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmFfczgpKSkKc3ZpbnQ4X3Qgc3ZhYmEoc3ZpbnQ4X3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiYV9zMzIpKSkKc3ZpbnQzMl90IHN2YWJhKHN2aW50MzJfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmFfczY0KSkpCnN2aW50NjRfdCBzdmFiYShzdmludDY0X3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJhX3MxNikpKQpzdmludDE2X3Qgc3ZhYmEoc3ZpbnQxNl90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiYV91OCkpKQpzdnVpbnQ4X3Qgc3ZhYmEoc3Z1aW50OF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiYV91MzIpKSkKc3Z1aW50MzJfdCBzdmFiYShzdnVpbnQzMl90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJhX3U2NCkpKQpzdnVpbnQ2NF90IHN2YWJhKHN2dWludDY0X3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmFfdTE2KSkpCnN2dWludDE2X3Qgc3ZhYmEoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiYWxiX25fczMyKSkpCnN2aW50MzJfdCBzdmFiYWxiKHN2aW50MzJfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJhbGJfbl9zNjQpKSkKc3ZpbnQ2NF90IHN2YWJhbGIoc3ZpbnQ2NF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmFsYl9uX3MxNikpKQpzdmludDE2X3Qgc3ZhYmFsYihzdmludDE2X3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmFsYl9uX3UzMikpKQpzdnVpbnQzMl90IHN2YWJhbGIoc3Z1aW50MzJfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmFsYl9uX3U2NCkpKQpzdnVpbnQ2NF90IHN2YWJhbGIoc3Z1aW50NjRfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmFsYl9uX3UxNikpKQpzdnVpbnQxNl90IHN2YWJhbGIoc3Z1aW50MTZfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJhbGJfczMyKSkpCnN2aW50MzJfdCBzdmFiYWxiKHN2aW50MzJfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmFsYl9zNjQpKSkKc3ZpbnQ2NF90IHN2YWJhbGIoc3ZpbnQ2NF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiYWxiX3MxNikpKQpzdmludDE2X3Qgc3ZhYmFsYihzdmludDE2X3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiYWxiX3UzMikpKQpzdnVpbnQzMl90IHN2YWJhbGIoc3Z1aW50MzJfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiYWxiX3U2NCkpKQpzdnVpbnQ2NF90IHN2YWJhbGIoc3Z1aW50NjRfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiYWxiX3UxNikpKQpzdnVpbnQxNl90IHN2YWJhbGIoc3Z1aW50MTZfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmFsdF9uX3MzMikpKQpzdmludDMyX3Qgc3ZhYmFsdChzdmludDMyX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiYWx0X25fczY0KSkpCnN2aW50NjRfdCBzdmFiYWx0KHN2aW50NjRfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJhbHRfbl9zMTYpKSkKc3ZpbnQxNl90IHN2YWJhbHQoc3ZpbnQxNl90LCBzdmludDhfdCwgaW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJhbHRfbl91MzIpKSkKc3Z1aW50MzJfdCBzdmFiYWx0KHN2dWludDMyX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJhbHRfbl91NjQpKSkKc3Z1aW50NjRfdCBzdmFiYWx0KHN2dWludDY0X3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJhbHRfbl91MTYpKSkKc3Z1aW50MTZfdCBzdmFiYWx0KHN2dWludDE2X3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiYWx0X3MzMikpKQpzdmludDMyX3Qgc3ZhYmFsdChzdmludDMyX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJhbHRfczY0KSkpCnN2aW50NjRfdCBzdmFiYWx0KHN2aW50NjRfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmFsdF9zMTYpKSkKc3ZpbnQxNl90IHN2YWJhbHQoc3ZpbnQxNl90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmFsdF91MzIpKSkKc3Z1aW50MzJfdCBzdmFiYWx0KHN2dWludDMyX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmFsdF91NjQpKSkKc3Z1aW50NjRfdCBzdmFiYWx0KHN2dWludDY0X3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmFsdF91MTYpKSkKc3Z1aW50MTZfdCBzdmFiYWx0KHN2dWludDE2X3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkbGJfbl9zMzIpKSkKc3ZpbnQzMl90IHN2YWJkbGIoc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkbGJfbl9zNjQpKSkKc3ZpbnQ2NF90IHN2YWJkbGIoc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkbGJfbl9zMTYpKSkKc3ZpbnQxNl90IHN2YWJkbGIoc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZGxiX25fdTMyKSkpCnN2dWludDMyX3Qgc3ZhYmRsYihzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZGxiX25fdTY0KSkpCnN2dWludDY0X3Qgc3ZhYmRsYihzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZGxiX25fdTE2KSkpCnN2dWludDE2X3Qgc3ZhYmRsYihzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRsYl9zMzIpKSkKc3ZpbnQzMl90IHN2YWJkbGIoc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRsYl9zNjQpKSkKc3ZpbnQ2NF90IHN2YWJkbGIoc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRsYl9zMTYpKSkKc3ZpbnQxNl90IHN2YWJkbGIoc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkbGJfdTMyKSkpCnN2dWludDMyX3Qgc3ZhYmRsYihzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkbGJfdTY0KSkpCnN2dWludDY0X3Qgc3ZhYmRsYihzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkbGJfdTE2KSkpCnN2dWludDE2X3Qgc3ZhYmRsYihzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZGx0X25fczMyKSkpCnN2aW50MzJfdCBzdmFiZGx0KHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZGx0X25fczY0KSkpCnN2aW50NjRfdCBzdmFiZGx0KHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZGx0X25fczE2KSkpCnN2aW50MTZfdCBzdmFiZGx0KHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRsdF9uX3UzMikpKQpzdnVpbnQzMl90IHN2YWJkbHQoc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRsdF9uX3U2NCkpKQpzdnVpbnQ2NF90IHN2YWJkbHQoc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhYmRsdF9uX3UxNikpKQpzdnVpbnQxNl90IHN2YWJkbHQoc3Z1aW50OF90LCB1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkbHRfczMyKSkpCnN2aW50MzJfdCBzdmFiZGx0KHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkbHRfczY0KSkpCnN2aW50NjRfdCBzdmFiZGx0KHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWJkbHRfczE2KSkpCnN2aW50MTZfdCBzdmFiZGx0KHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZGx0X3UzMikpKQpzdnVpbnQzMl90IHN2YWJkbHQoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZGx0X3U2NCkpKQpzdnVpbnQ2NF90IHN2YWJkbHQoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFiZGx0X3UxNikpKQpzdnVpbnQxNl90IHN2YWJkbHQoc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGFscF9zMzJfbSkpKQpzdmludDMyX3Qgc3ZhZGFscF9tKHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkYWxwX3M2NF9tKSkpCnN2aW50NjRfdCBzdmFkYWxwX20oc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRhbHBfczE2X20pKSkKc3ZpbnQxNl90IHN2YWRhbHBfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkYWxwX3MzMl94KSkpCnN2aW50MzJfdCBzdmFkYWxwX3goc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRhbHBfczY0X3gpKSkKc3ZpbnQ2NF90IHN2YWRhbHBfeChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGFscF9zMTZfeCkpKQpzdmludDE2X3Qgc3ZhZGFscF94KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRhbHBfczMyX3opKSkKc3ZpbnQzMl90IHN2YWRhbHBfeihzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGFscF9zNjRfeikpKQpzdmludDY0X3Qgc3ZhZGFscF96KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkYWxwX3MxNl96KSkpCnN2aW50MTZfdCBzdmFkYWxwX3ooc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGFscF91MzJfbSkpKQpzdnVpbnQzMl90IHN2YWRhbHBfbShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkYWxwX3U2NF9tKSkpCnN2dWludDY0X3Qgc3ZhZGFscF9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRhbHBfdTE2X20pKSkKc3Z1aW50MTZfdCBzdmFkYWxwX20oc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkYWxwX3UzMl94KSkpCnN2dWludDMyX3Qgc3ZhZGFscF94KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRhbHBfdTY0X3gpKSkKc3Z1aW50NjRfdCBzdmFkYWxwX3goc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGFscF91MTZfeCkpKQpzdnVpbnQxNl90IHN2YWRhbHBfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRhbHBfdTMyX3opKSkKc3Z1aW50MzJfdCBzdmFkYWxwX3ooc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGFscF91NjRfeikpKQpzdnVpbnQ2NF90IHN2YWRhbHBfeihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkYWxwX3UxNl96KSkpCnN2dWludDE2X3Qgc3ZhZGFscF96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGNsYl9uX3UzMikpKQpzdnVpbnQzMl90IHN2YWRjbGIoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGNsYl9uX3U2NCkpKQpzdnVpbnQ2NF90IHN2YWRjbGIoc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGNsYl91MzIpKSkKc3Z1aW50MzJfdCBzdmFkY2xiKHN2dWludDMyX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGNsYl91NjQpKSkKc3Z1aW50NjRfdCBzdmFkY2xiKHN2dWludDY0X3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGNsdF9uX3UzMikpKQpzdnVpbnQzMl90IHN2YWRjbHQoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGNsdF9uX3U2NCkpKQpzdnVpbnQ2NF90IHN2YWRjbHQoc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGNsdF91MzIpKSkKc3Z1aW50MzJfdCBzdmFkY2x0KHN2dWludDMyX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGNsdF91NjQpKSkKc3Z1aW50NjRfdCBzdmFkY2x0KHN2dWludDY0X3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRobmJfbl91MzIpKSkKc3Z1aW50MTZfdCBzdmFkZGhuYihzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZGhuYl9uX3U2NCkpKQpzdnVpbnQzMl90IHN2YWRkaG5iKHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkaG5iX25fdTE2KSkpCnN2dWludDhfdCBzdmFkZGhuYihzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZGhuYl9uX3MzMikpKQpzdmludDE2X3Qgc3ZhZGRobmIoc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkaG5iX25fczY0KSkpCnN2aW50MzJfdCBzdmFkZGhuYihzdmludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRobmJfbl9zMTYpKSkKc3ZpbnQ4X3Qgc3ZhZGRobmIoc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkaG5iX3UzMikpKQpzdnVpbnQxNl90IHN2YWRkaG5iKHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRobmJfdTY0KSkpCnN2dWludDMyX3Qgc3ZhZGRobmIoc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZGhuYl91MTYpKSkKc3Z1aW50OF90IHN2YWRkaG5iKHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRobmJfczMyKSkpCnN2aW50MTZfdCBzdmFkZGhuYihzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZGhuYl9zNjQpKSkKc3ZpbnQzMl90IHN2YWRkaG5iKHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkaG5iX3MxNikpKQpzdmludDhfdCBzdmFkZGhuYihzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZGhudF9uX3UzMikpKQpzdnVpbnQxNl90IHN2YWRkaG50KHN2dWludDE2X3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkaG50X25fdTY0KSkpCnN2dWludDMyX3Qgc3ZhZGRobnQoc3Z1aW50MzJfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRobnRfbl91MTYpKSkKc3Z1aW50OF90IHN2YWRkaG50KHN2dWludDhfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRobnRfbl9zMzIpKSkKc3ZpbnQxNl90IHN2YWRkaG50KHN2aW50MTZfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkaG50X25fczY0KSkpCnN2aW50MzJfdCBzdmFkZGhudChzdmludDMyX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZGhudF9uX3MxNikpKQpzdmludDhfdCBzdmFkZGhudChzdmludDhfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkaG50X3UzMikpKQpzdnVpbnQxNl90IHN2YWRkaG50KHN2dWludDE2X3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRobnRfdTY0KSkpCnN2dWludDMyX3Qgc3ZhZGRobnQoc3Z1aW50MzJfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZGhudF91MTYpKSkKc3Z1aW50OF90IHN2YWRkaG50KHN2dWludDhfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZGhudF9zMzIpKSkKc3ZpbnQxNl90IHN2YWRkaG50KHN2aW50MTZfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRobnRfczY0KSkpCnN2aW50MzJfdCBzdmFkZGhudChzdmludDMyX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkaG50X3MxNikpKQpzdmludDhfdCBzdmFkZGhudChzdmludDhfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRsYl9uX3MzMikpKQpzdmludDMyX3Qgc3ZhZGRsYihzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRsYl9uX3M2NCkpKQpzdmludDY0X3Qgc3ZhZGRsYihzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRsYl9uX3MxNikpKQpzdmludDE2X3Qgc3ZhZGRsYihzdmludDhfdCwgaW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkbGJfbl91MzIpKSkKc3Z1aW50MzJfdCBzdmFkZGxiKHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkbGJfbl91NjQpKSkKc3Z1aW50NjRfdCBzdmFkZGxiKHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkbGJfbl91MTYpKSkKc3Z1aW50MTZfdCBzdmFkZGxiKHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZGxiX3MzMikpKQpzdmludDMyX3Qgc3ZhZGRsYihzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZGxiX3M2NCkpKQpzdmludDY0X3Qgc3ZhZGRsYihzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZGxiX3MxNikpKQpzdmludDE2X3Qgc3ZhZGRsYihzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRsYl91MzIpKSkKc3Z1aW50MzJfdCBzdmFkZGxiKHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRsYl91NjQpKSkKc3Z1aW50NjRfdCBzdmFkZGxiKHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRsYl91MTYpKSkKc3Z1aW50MTZfdCBzdmFkZGxiKHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkbGJ0X25fczMyKSkpCnN2aW50MzJfdCBzdmFkZGxidChzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRsYnRfbl9zNjQpKSkKc3ZpbnQ2NF90IHN2YWRkbGJ0KHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZGxidF9uX3MxNikpKQpzdmludDE2X3Qgc3ZhZGRsYnQoc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZGxidF9zMzIpKSkKc3ZpbnQzMl90IHN2YWRkbGJ0KHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkbGJ0X3M2NCkpKQpzdmludDY0X3Qgc3ZhZGRsYnQoc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRsYnRfczE2KSkpCnN2aW50MTZfdCBzdmFkZGxidChzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRsdF9uX3MzMikpKQpzdmludDMyX3Qgc3ZhZGRsdChzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRsdF9uX3M2NCkpKQpzdmludDY0X3Qgc3ZhZGRsdChzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRsdF9uX3MxNikpKQpzdmludDE2X3Qgc3ZhZGRsdChzdmludDhfdCwgaW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkbHRfbl91MzIpKSkKc3Z1aW50MzJfdCBzdmFkZGx0KHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkbHRfbl91NjQpKSkKc3Z1aW50NjRfdCBzdmFkZGx0KHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkbHRfbl91MTYpKSkKc3Z1aW50MTZfdCBzdmFkZGx0KHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZGx0X3MzMikpKQpzdmludDMyX3Qgc3ZhZGRsdChzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZGx0X3M2NCkpKQpzdmludDY0X3Qgc3ZhZGRsdChzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZGx0X3MxNikpKQpzdmludDE2X3Qgc3ZhZGRsdChzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRsdF91MzIpKSkKc3Z1aW50MzJfdCBzdmFkZGx0KHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRsdF91NjQpKSkKc3Z1aW50NjRfdCBzdmFkZGx0KHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRsdF91MTYpKSkKc3Z1aW50MTZfdCBzdmFkZGx0KHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkcF9mNjRfbSkpKQpzdmZsb2F0NjRfdCBzdmFkZHBfbShzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkcF9mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdmFkZHBfbShzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkcF9mMTZfbSkpKQpzdmZsb2F0MTZfdCBzdmFkZHBfbShzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkcF9mNjRfeCkpKQpzdmZsb2F0NjRfdCBzdmFkZHBfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkcF9mMzJfeCkpKQpzdmZsb2F0MzJfdCBzdmFkZHBfeChzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkcF9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdmFkZHBfeChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkcF91OF9tKSkpCnN2dWludDhfdCBzdmFkZHBfbShzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRwX3UzMl9tKSkpCnN2dWludDMyX3Qgc3ZhZGRwX20oc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRwX3U2NF9tKSkpCnN2dWludDY0X3Qgc3ZhZGRwX20oc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRwX3UxNl9tKSkpCnN2dWludDE2X3Qgc3ZhZGRwX20oc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRwX3M4X20pKSkKc3ZpbnQ4X3Qgc3ZhZGRwX20oc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZHBfczMyX20pKSkKc3ZpbnQzMl90IHN2YWRkcF9tKHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZHBfczY0X20pKSkKc3ZpbnQ2NF90IHN2YWRkcF9tKHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZHBfczE2X20pKSkKc3ZpbnQxNl90IHN2YWRkcF9tKHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZHBfdThfeCkpKQpzdnVpbnQ4X3Qgc3ZhZGRwX3goc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkcF91MzJfeCkpKQpzdnVpbnQzMl90IHN2YWRkcF94KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkcF91NjRfeCkpKQpzdnVpbnQ2NF90IHN2YWRkcF94KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkcF91MTZfeCkpKQpzdnVpbnQxNl90IHN2YWRkcF94KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkcF9zOF94KSkpCnN2aW50OF90IHN2YWRkcF94KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRwX3MzMl94KSkpCnN2aW50MzJfdCBzdmFkZHBfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRwX3M2NF94KSkpCnN2aW50NjRfdCBzdmFkZHBfeChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGRwX3MxNl94KSkpCnN2aW50MTZfdCBzdmFkZHBfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGR3Yl9uX3MzMikpKQpzdmludDMyX3Qgc3ZhZGR3YihzdmludDMyX3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGR3Yl9uX3M2NCkpKQpzdmludDY0X3Qgc3ZhZGR3YihzdmludDY0X3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGR3Yl9uX3MxNikpKQpzdmludDE2X3Qgc3ZhZGR3YihzdmludDE2X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZHdiX25fdTMyKSkpCnN2dWludDMyX3Qgc3ZhZGR3YihzdnVpbnQzMl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZHdiX25fdTY0KSkpCnN2dWludDY0X3Qgc3ZhZGR3YihzdnVpbnQ2NF90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZHdiX25fdTE2KSkpCnN2dWludDE2X3Qgc3ZhZGR3YihzdnVpbnQxNl90LCB1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkd2JfczMyKSkpCnN2aW50MzJfdCBzdmFkZHdiKHN2aW50MzJfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkd2JfczY0KSkpCnN2aW50NjRfdCBzdmFkZHdiKHN2aW50NjRfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkd2JfczE2KSkpCnN2aW50MTZfdCBzdmFkZHdiKHN2aW50MTZfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGR3Yl91MzIpKSkKc3Z1aW50MzJfdCBzdmFkZHdiKHN2dWludDMyX3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGR3Yl91NjQpKSkKc3Z1aW50NjRfdCBzdmFkZHdiKHN2dWludDY0X3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGR3Yl91MTYpKSkKc3Z1aW50MTZfdCBzdmFkZHdiKHN2dWludDE2X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZHd0X25fczMyKSkpCnN2aW50MzJfdCBzdmFkZHd0KHN2aW50MzJfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZHd0X25fczY0KSkpCnN2aW50NjRfdCBzdmFkZHd0KHN2aW50NjRfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZHd0X25fczE2KSkpCnN2aW50MTZfdCBzdmFkZHd0KHN2aW50MTZfdCwgaW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkd3Rfbl91MzIpKSkKc3Z1aW50MzJfdCBzdmFkZHd0KHN2dWludDMyX3QsIHVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkd3Rfbl91NjQpKSkKc3Z1aW50NjRfdCBzdmFkZHd0KHN2dWludDY0X3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWRkd3Rfbl91MTYpKSkKc3Z1aW50MTZfdCBzdmFkZHd0KHN2dWludDE2X3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGR3dF9zMzIpKSkKc3ZpbnQzMl90IHN2YWRkd3Qoc3ZpbnQzMl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGR3dF9zNjQpKSkKc3ZpbnQ2NF90IHN2YWRkd3Qoc3ZpbnQ2NF90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZGR3dF9zMTYpKSkKc3ZpbnQxNl90IHN2YWRkd3Qoc3ZpbnQxNl90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZHd0X3UzMikpKQpzdnVpbnQzMl90IHN2YWRkd3Qoc3Z1aW50MzJfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZHd0X3U2NCkpKQpzdnVpbnQ2NF90IHN2YWRkd3Qoc3Z1aW50NjRfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFkZHd0X3UxNikpKQpzdnVpbnQxNl90IHN2YWRkd3Qoc3Z1aW50MTZfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmNheF9uX3U4KSkpCnN2dWludDhfdCBzdmJjYXgoc3Z1aW50OF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiY2F4X25fdTMyKSkpCnN2dWludDMyX3Qgc3ZiY2F4KHN2dWludDMyX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmNheF9uX3U2NCkpKQpzdnVpbnQ2NF90IHN2YmNheChzdnVpbnQ2NF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJjYXhfbl91MTYpKSkKc3Z1aW50MTZfdCBzdmJjYXgoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiY2F4X25fczgpKSkKc3ZpbnQ4X3Qgc3ZiY2F4KHN2aW50OF90LCBzdmludDhfdCwgaW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmNheF9uX3MzMikpKQpzdmludDMyX3Qgc3ZiY2F4KHN2aW50MzJfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmNheF9uX3M2NCkpKQpzdmludDY0X3Qgc3ZiY2F4KHN2aW50NjRfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmNheF9uX3MxNikpKQpzdmludDE2X3Qgc3ZiY2F4KHN2aW50MTZfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmNheF91OCkpKQpzdnVpbnQ4X3Qgc3ZiY2F4KHN2dWludDhfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiY2F4X3UzMikpKQpzdnVpbnQzMl90IHN2YmNheChzdnVpbnQzMl90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmNheF91NjQpKSkKc3Z1aW50NjRfdCBzdmJjYXgoc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJjYXhfdTE2KSkpCnN2dWludDE2X3Qgc3ZiY2F4KHN2dWludDE2X3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiY2F4X3M4KSkpCnN2aW50OF90IHN2YmNheChzdmludDhfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmNheF9zMzIpKSkKc3ZpbnQzMl90IHN2YmNheChzdmludDMyX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmNheF9zNjQpKSkKc3ZpbnQ2NF90IHN2YmNheChzdmludDY0X3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmNheF9zMTYpKSkKc3ZpbnQxNl90IHN2YmNheChzdmludDE2X3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YnNsMW5fbl91OCkpKQpzdnVpbnQ4X3Qgc3Zic2wxbihzdnVpbnQ4X3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJzbDFuX25fdTMyKSkpCnN2dWludDMyX3Qgc3Zic2wxbihzdnVpbnQzMl90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJzbDFuX25fdTY0KSkpCnN2dWludDY0X3Qgc3Zic2wxbihzdnVpbnQ2NF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJzbDFuX25fdTE2KSkpCnN2dWludDE2X3Qgc3Zic2wxbihzdnVpbnQxNl90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJzbDFuX25fczgpKSkKc3ZpbnQ4X3Qgc3Zic2wxbihzdmludDhfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJzbDFuX25fczMyKSkpCnN2aW50MzJfdCBzdmJzbDFuKHN2aW50MzJfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YnNsMW5fbl9zNjQpKSkKc3ZpbnQ2NF90IHN2YnNsMW4oc3ZpbnQ2NF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zic2wxbl9uX3MxNikpKQpzdmludDE2X3Qgc3Zic2wxbihzdmludDE2X3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJzbDFuX3U4KSkpCnN2dWludDhfdCBzdmJzbDFuKHN2dWludDhfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zic2wxbl91MzIpKSkKc3Z1aW50MzJfdCBzdmJzbDFuKHN2dWludDMyX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zic2wxbl91NjQpKSkKc3Z1aW50NjRfdCBzdmJzbDFuKHN2dWludDY0X3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zic2wxbl91MTYpKSkKc3Z1aW50MTZfdCBzdmJzbDFuKHN2dWludDE2X3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zic2wxbl9zOCkpKQpzdmludDhfdCBzdmJzbDFuKHN2aW50OF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zic2wxbl9zMzIpKSkKc3ZpbnQzMl90IHN2YnNsMW4oc3ZpbnQzMl90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJzbDFuX3M2NCkpKQpzdmludDY0X3Qgc3Zic2wxbihzdmludDY0X3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YnNsMW5fczE2KSkpCnN2aW50MTZfdCBzdmJzbDFuKHN2aW50MTZfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zic2wybl9uX3U4KSkpCnN2dWludDhfdCBzdmJzbDJuKHN2dWludDhfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YnNsMm5fbl91MzIpKSkKc3Z1aW50MzJfdCBzdmJzbDJuKHN2dWludDMyX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YnNsMm5fbl91NjQpKSkKc3Z1aW50NjRfdCBzdmJzbDJuKHN2dWludDY0X3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YnNsMm5fbl91MTYpKSkKc3Z1aW50MTZfdCBzdmJzbDJuKHN2dWludDE2X3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YnNsMm5fbl9zOCkpKQpzdmludDhfdCBzdmJzbDJuKHN2aW50OF90LCBzdmludDhfdCwgaW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YnNsMm5fbl9zMzIpKSkKc3ZpbnQzMl90IHN2YnNsMm4oc3ZpbnQzMl90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zic2wybl9uX3M2NCkpKQpzdmludDY0X3Qgc3Zic2wybihzdmludDY0X3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJzbDJuX25fczE2KSkpCnN2aW50MTZfdCBzdmJzbDJuKHN2aW50MTZfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YnNsMm5fdTgpKSkKc3Z1aW50OF90IHN2YnNsMm4oc3Z1aW50OF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJzbDJuX3UzMikpKQpzdnVpbnQzMl90IHN2YnNsMm4oc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJzbDJuX3U2NCkpKQpzdnVpbnQ2NF90IHN2YnNsMm4oc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJzbDJuX3UxNikpKQpzdnVpbnQxNl90IHN2YnNsMm4oc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJzbDJuX3M4KSkpCnN2aW50OF90IHN2YnNsMm4oc3ZpbnQ4X3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJzbDJuX3MzMikpKQpzdmludDMyX3Qgc3Zic2wybihzdmludDMyX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YnNsMm5fczY0KSkpCnN2aW50NjRfdCBzdmJzbDJuKHN2aW50NjRfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zic2wybl9zMTYpKSkKc3ZpbnQxNl90IHN2YnNsMm4oc3ZpbnQxNl90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJzbF9uX3U4KSkpCnN2dWludDhfdCBzdmJzbChzdnVpbnQ4X3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJzbF9uX3UzMikpKQpzdnVpbnQzMl90IHN2YnNsKHN2dWludDMyX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YnNsX25fdTY0KSkpCnN2dWludDY0X3Qgc3Zic2woc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zic2xfbl91MTYpKSkKc3Z1aW50MTZfdCBzdmJzbChzdnVpbnQxNl90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJzbF9uX3M4KSkpCnN2aW50OF90IHN2YnNsKHN2aW50OF90LCBzdmludDhfdCwgaW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YnNsX25fczMyKSkpCnN2aW50MzJfdCBzdmJzbChzdmludDMyX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJzbF9uX3M2NCkpKQpzdmludDY0X3Qgc3Zic2woc3ZpbnQ2NF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zic2xfbl9zMTYpKSkKc3ZpbnQxNl90IHN2YnNsKHN2aW50MTZfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YnNsX3U4KSkpCnN2dWludDhfdCBzdmJzbChzdnVpbnQ4X3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YnNsX3UzMikpKQpzdnVpbnQzMl90IHN2YnNsKHN2dWludDMyX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zic2xfdTY0KSkpCnN2dWludDY0X3Qgc3Zic2woc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJzbF91MTYpKSkKc3Z1aW50MTZfdCBzdmJzbChzdnVpbnQxNl90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YnNsX3M4KSkpCnN2aW50OF90IHN2YnNsKHN2aW50OF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zic2xfczMyKSkpCnN2aW50MzJfdCBzdmJzbChzdmludDMyX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YnNsX3M2NCkpKQpzdmludDY0X3Qgc3Zic2woc3ZpbnQ2NF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJzbF9zMTYpKSkKc3ZpbnQxNl90IHN2YnNsKHN2aW50MTZfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjYWRkX3U4KSkpCnN2dWludDhfdCBzdmNhZGQoc3Z1aW50OF90LCBzdnVpbnQ4X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2FkZF91MzIpKSkKc3Z1aW50MzJfdCBzdmNhZGQoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjYWRkX3U2NCkpKQpzdnVpbnQ2NF90IHN2Y2FkZChzdnVpbnQ2NF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNhZGRfdTE2KSkpCnN2dWludDE2X3Qgc3ZjYWRkKHN2dWludDE2X3QsIHN2dWludDE2X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2FkZF9zOCkpKQpzdmludDhfdCBzdmNhZGQoc3ZpbnQ4X3QsIHN2aW50OF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNhZGRfczMyKSkpCnN2aW50MzJfdCBzdmNhZGQoc3ZpbnQzMl90LCBzdmludDMyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2FkZF9zNjQpKSkKc3ZpbnQ2NF90IHN2Y2FkZChzdmludDY0X3QsIHN2aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjYWRkX3MxNikpKQpzdmludDE2X3Qgc3ZjYWRkKHN2aW50MTZfdCwgc3ZpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNkb3RfczMyKSkpCnN2aW50MzJfdCBzdmNkb3Qoc3ZpbnQzMl90LCBzdmludDhfdCwgc3ZpbnQ4X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2RvdF9zNjQpKSkKc3ZpbnQ2NF90IHN2Y2RvdChzdmludDY0X3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNkb3RfbGFuZV9zMzIpKSkKc3ZpbnQzMl90IHN2Y2RvdF9sYW5lKHN2aW50MzJfdCwgc3ZpbnQ4X3QsIHN2aW50OF90LCB1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjZG90X2xhbmVfczY0KSkpCnN2aW50NjRfdCBzdmNkb3RfbGFuZShzdmludDY0X3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90LCB1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbWxhX3U4KSkpCnN2dWludDhfdCBzdmNtbGEoc3Z1aW50OF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbWxhX3UzMikpKQpzdnVpbnQzMl90IHN2Y21sYShzdnVpbnQzMl90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtbGFfdTY0KSkpCnN2dWludDY0X3Qgc3ZjbWxhKHN2dWludDY0X3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21sYV91MTYpKSkKc3Z1aW50MTZfdCBzdmNtbGEoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbWxhX3M4KSkpCnN2aW50OF90IHN2Y21sYShzdmludDhfdCwgc3ZpbnQ4X3QsIHN2aW50OF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtbGFfczMyKSkpCnN2aW50MzJfdCBzdmNtbGEoc3ZpbnQzMl90LCBzdmludDMyX3QsIHN2aW50MzJfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbWxhX3M2NCkpKQpzdmludDY0X3Qgc3ZjbWxhKHN2aW50NjRfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21sYV9zMTYpKSkKc3ZpbnQxNl90IHN2Y21sYShzdmludDE2X3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNtbGFfbGFuZV91MzIpKSkKc3Z1aW50MzJfdCBzdmNtbGFfbGFuZShzdnVpbnQzMl90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90LCB1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbWxhX2xhbmVfdTE2KSkpCnN2dWludDE2X3Qgc3ZjbWxhX2xhbmUoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgdWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21sYV9sYW5lX3MzMikpKQpzdmludDMyX3Qgc3ZjbWxhX2xhbmUoc3ZpbnQzMl90LCBzdmludDMyX3QsIHN2aW50MzJfdCwgdWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y21sYV9sYW5lX3MxNikpKQpzdmludDE2X3Qgc3ZjbWxhX2xhbmUoc3ZpbnQxNl90LCBzdmludDE2X3QsIHN2aW50MTZfdCwgdWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0bHRfZjMyX2YxNl9tKSkpCnN2ZmxvYXQzMl90IHN2Y3Z0bHRfZjMyX20oc3ZmbG9hdDMyX3QsIHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dGx0X2YzMl9mMTZfeCkpKQpzdmZsb2F0MzJfdCBzdmN2dGx0X2YzMl94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dGx0X2Y2NF9mMzJfbSkpKQpzdmZsb2F0NjRfdCBzdmN2dGx0X2Y2NF9tKHN2ZmxvYXQ2NF90LCBzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRsdF9mNjRfZjMyX3gpKSkKc3ZmbG9hdDY0X3Qgc3ZjdnRsdF9mNjRfeChzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRudF9mMTZfZjMyX20pKSkKc3ZmbG9hdDE2X3Qgc3ZjdnRudF9mMTZfbShzdmZsb2F0MTZfdCwgc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0bnRfZjMyX2Y2NF9tKSkpCnN2ZmxvYXQzMl90IHN2Y3Z0bnRfZjMyX20oc3ZmbG9hdDMyX3QsIHN2Ym9vbF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dHhfZjMyX2Y2NF9tKSkpCnN2ZmxvYXQzMl90IHN2Y3Z0eF9mMzJfbShzdmZsb2F0MzJfdCwgc3Zib29sX3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0eF9mMzJfZjY0X3gpKSkKc3ZmbG9hdDMyX3Qgc3ZjdnR4X2YzMl94KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dHhfZjMyX2Y2NF96KSkpCnN2ZmxvYXQzMl90IHN2Y3Z0eF9mMzJfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnR4bnRfZjMyX2Y2NF9tKSkpCnN2ZmxvYXQzMl90IHN2Y3Z0eG50X2YzMl9tKHN2ZmxvYXQzMl90LCBzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3IzX25fdTgpKSkKc3Z1aW50OF90IHN2ZW9yMyhzdnVpbnQ4X3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcjNfbl91MzIpKSkKc3Z1aW50MzJfdCBzdmVvcjMoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3IzX25fdTY0KSkpCnN2dWludDY0X3Qgc3Zlb3IzKHN2dWludDY0X3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9yM19uX3UxNikpKQpzdnVpbnQxNl90IHN2ZW9yMyhzdnVpbnQxNl90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcjNfbl9zOCkpKQpzdmludDhfdCBzdmVvcjMoc3ZpbnQ4X3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3IzX25fczMyKSkpCnN2aW50MzJfdCBzdmVvcjMoc3ZpbnQzMl90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3IzX25fczY0KSkpCnN2aW50NjRfdCBzdmVvcjMoc3ZpbnQ2NF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3IzX25fczE2KSkpCnN2aW50MTZfdCBzdmVvcjMoc3ZpbnQxNl90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3IzX3U4KSkpCnN2dWludDhfdCBzdmVvcjMoc3Z1aW50OF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcjNfdTMyKSkpCnN2dWludDMyX3Qgc3Zlb3IzKHN2dWludDMyX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3IzX3U2NCkpKQpzdnVpbnQ2NF90IHN2ZW9yMyhzdnVpbnQ2NF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9yM191MTYpKSkKc3Z1aW50MTZfdCBzdmVvcjMoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcjNfczgpKSkKc3ZpbnQ4X3Qgc3Zlb3IzKHN2aW50OF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3IzX3MzMikpKQpzdmludDMyX3Qgc3Zlb3IzKHN2aW50MzJfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3IzX3M2NCkpKQpzdmludDY0X3Qgc3Zlb3IzKHN2aW50NjRfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3IzX3MxNikpKQpzdmludDE2X3Qgc3Zlb3IzKHN2aW50MTZfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3JidF9uX3U4KSkpCnN2dWludDhfdCBzdmVvcmJ0KHN2dWludDhfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9yYnRfbl91MzIpKSkKc3Z1aW50MzJfdCBzdmVvcmJ0KHN2dWludDMyX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9yYnRfbl91NjQpKSkKc3Z1aW50NjRfdCBzdmVvcmJ0KHN2dWludDY0X3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9yYnRfbl91MTYpKSkKc3Z1aW50MTZfdCBzdmVvcmJ0KHN2dWludDE2X3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9yYnRfbl9zOCkpKQpzdmludDhfdCBzdmVvcmJ0KHN2aW50OF90LCBzdmludDhfdCwgaW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9yYnRfbl9zMzIpKSkKc3ZpbnQzMl90IHN2ZW9yYnQoc3ZpbnQzMl90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3JidF9uX3M2NCkpKQpzdmludDY0X3Qgc3Zlb3JidChzdmludDY0X3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcmJ0X25fczE2KSkpCnN2aW50MTZfdCBzdmVvcmJ0KHN2aW50MTZfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9yYnRfdTgpKSkKc3Z1aW50OF90IHN2ZW9yYnQoc3Z1aW50OF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcmJ0X3UzMikpKQpzdnVpbnQzMl90IHN2ZW9yYnQoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcmJ0X3U2NCkpKQpzdnVpbnQ2NF90IHN2ZW9yYnQoc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcmJ0X3UxNikpKQpzdnVpbnQxNl90IHN2ZW9yYnQoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcmJ0X3M4KSkpCnN2aW50OF90IHN2ZW9yYnQoc3ZpbnQ4X3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcmJ0X3MzMikpKQpzdmludDMyX3Qgc3Zlb3JidChzdmludDMyX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9yYnRfczY0KSkpCnN2aW50NjRfdCBzdmVvcmJ0KHN2aW50NjRfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3JidF9zMTYpKSkKc3ZpbnQxNl90IHN2ZW9yYnQoc3ZpbnQxNl90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcnRiX25fdTgpKSkKc3Z1aW50OF90IHN2ZW9ydGIoc3Z1aW50OF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3J0Yl9uX3UzMikpKQpzdnVpbnQzMl90IHN2ZW9ydGIoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3J0Yl9uX3U2NCkpKQpzdnVpbnQ2NF90IHN2ZW9ydGIoc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3J0Yl9uX3UxNikpKQpzdnVpbnQxNl90IHN2ZW9ydGIoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3J0Yl9uX3M4KSkpCnN2aW50OF90IHN2ZW9ydGIoc3ZpbnQ4X3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3J0Yl9uX3MzMikpKQpzdmludDMyX3Qgc3Zlb3J0YihzdmludDMyX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcnRiX25fczY0KSkpCnN2aW50NjRfdCBzdmVvcnRiKHN2aW50NjRfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9ydGJfbl9zMTYpKSkKc3ZpbnQxNl90IHN2ZW9ydGIoc3ZpbnQxNl90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3J0Yl91OCkpKQpzdnVpbnQ4X3Qgc3Zlb3J0YihzdnVpbnQ4X3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9ydGJfdTMyKSkpCnN2dWludDMyX3Qgc3Zlb3J0YihzdnVpbnQzMl90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9ydGJfdTY0KSkpCnN2dWludDY0X3Qgc3Zlb3J0YihzdnVpbnQ2NF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9ydGJfdTE2KSkpCnN2dWludDE2X3Qgc3Zlb3J0YihzdnVpbnQxNl90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9ydGJfczgpKSkKc3ZpbnQ4X3Qgc3Zlb3J0YihzdmludDhfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZW9ydGJfczMyKSkpCnN2aW50MzJfdCBzdmVvcnRiKHN2aW50MzJfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zlb3J0Yl9zNjQpKSkKc3ZpbnQ2NF90IHN2ZW9ydGIoc3ZpbnQ2NF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmVvcnRiX3MxNikpKQpzdmludDE2X3Qgc3Zlb3J0YihzdmludDE2X3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aGFkZF9uX3M4X20pKSkKc3ZpbnQ4X3Qgc3ZoYWRkX20oc3Zib29sX3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZoYWRkX25fczMyX20pKSkKc3ZpbnQzMl90IHN2aGFkZF9tKHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZoYWRkX25fczY0X20pKSkKc3ZpbnQ2NF90IHN2aGFkZF9tKHN2Ym9vbF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZoYWRkX25fczE2X20pKSkKc3ZpbnQxNl90IHN2aGFkZF9tKHN2Ym9vbF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZoYWRkX25fczhfeCkpKQpzdmludDhfdCBzdmhhZGRfeChzdmJvb2xfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhhZGRfbl9zMzJfeCkpKQpzdmludDMyX3Qgc3ZoYWRkX3goc3Zib29sX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhhZGRfbl9zNjRfeCkpKQpzdmludDY0X3Qgc3ZoYWRkX3goc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhhZGRfbl9zMTZfeCkpKQpzdmludDE2X3Qgc3ZoYWRkX3goc3Zib29sX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhhZGRfbl9zOF96KSkpCnN2aW50OF90IHN2aGFkZF96KHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aGFkZF9uX3MzMl96KSkpCnN2aW50MzJfdCBzdmhhZGRfeihzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aGFkZF9uX3M2NF96KSkpCnN2aW50NjRfdCBzdmhhZGRfeihzdmJvb2xfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aGFkZF9uX3MxNl96KSkpCnN2aW50MTZfdCBzdmhhZGRfeihzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aGFkZF9uX3U4X20pKSkKc3Z1aW50OF90IHN2aGFkZF9tKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZoYWRkX25fdTMyX20pKSkKc3Z1aW50MzJfdCBzdmhhZGRfbShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZoYWRkX25fdTY0X20pKSkKc3Z1aW50NjRfdCBzdmhhZGRfbShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZoYWRkX25fdTE2X20pKSkKc3Z1aW50MTZfdCBzdmhhZGRfbShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZoYWRkX25fdThfeCkpKQpzdnVpbnQ4X3Qgc3ZoYWRkX3goc3Zib29sX3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhhZGRfbl91MzJfeCkpKQpzdnVpbnQzMl90IHN2aGFkZF94KHN2Ym9vbF90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhhZGRfbl91NjRfeCkpKQpzdnVpbnQ2NF90IHN2aGFkZF94KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhhZGRfbl91MTZfeCkpKQpzdnVpbnQxNl90IHN2aGFkZF94KHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhhZGRfbl91OF96KSkpCnN2dWludDhfdCBzdmhhZGRfeihzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aGFkZF9uX3UzMl96KSkpCnN2dWludDMyX3Qgc3ZoYWRkX3ooc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aGFkZF9uX3U2NF96KSkpCnN2dWludDY0X3Qgc3ZoYWRkX3ooc3Zib29sX3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aGFkZF9uX3UxNl96KSkpCnN2dWludDE2X3Qgc3ZoYWRkX3ooc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aGFkZF9zOF9tKSkpCnN2aW50OF90IHN2aGFkZF9tKHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZoYWRkX3MzMl9tKSkpCnN2aW50MzJfdCBzdmhhZGRfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZoYWRkX3M2NF9tKSkpCnN2aW50NjRfdCBzdmhhZGRfbShzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZoYWRkX3MxNl9tKSkpCnN2aW50MTZfdCBzdmhhZGRfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZoYWRkX3M4X3gpKSkKc3ZpbnQ4X3Qgc3ZoYWRkX3goc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhhZGRfczMyX3gpKSkKc3ZpbnQzMl90IHN2aGFkZF94KHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhhZGRfczY0X3gpKSkKc3ZpbnQ2NF90IHN2aGFkZF94KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhhZGRfczE2X3gpKSkKc3ZpbnQxNl90IHN2aGFkZF94KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhhZGRfczhfeikpKQpzdmludDhfdCBzdmhhZGRfeihzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aGFkZF9zMzJfeikpKQpzdmludDMyX3Qgc3ZoYWRkX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aGFkZF9zNjRfeikpKQpzdmludDY0X3Qgc3ZoYWRkX3ooc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aGFkZF9zMTZfeikpKQpzdmludDE2X3Qgc3ZoYWRkX3ooc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aGFkZF91OF9tKSkpCnN2dWludDhfdCBzdmhhZGRfbShzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZoYWRkX3UzMl9tKSkpCnN2dWludDMyX3Qgc3ZoYWRkX20oc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZoYWRkX3U2NF9tKSkpCnN2dWludDY0X3Qgc3ZoYWRkX20oc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZoYWRkX3UxNl9tKSkpCnN2dWludDE2X3Qgc3ZoYWRkX20oc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZoYWRkX3U4X3gpKSkKc3Z1aW50OF90IHN2aGFkZF94KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhhZGRfdTMyX3gpKSkKc3Z1aW50MzJfdCBzdmhhZGRfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhhZGRfdTY0X3gpKSkKc3Z1aW50NjRfdCBzdmhhZGRfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhhZGRfdTE2X3gpKSkKc3Z1aW50MTZfdCBzdmhhZGRfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhhZGRfdThfeikpKQpzdnVpbnQ4X3Qgc3ZoYWRkX3ooc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aGFkZF91MzJfeikpKQpzdnVpbnQzMl90IHN2aGFkZF96KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aGFkZF91NjRfeikpKQpzdnVpbnQ2NF90IHN2aGFkZF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aGFkZF91MTZfeikpKQpzdnVpbnQxNl90IHN2aGFkZF96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aGlzdGNudF91MzJfeikpKQpzdnVpbnQzMl90IHN2aGlzdGNudF96KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aGlzdGNudF91NjRfeikpKQpzdnVpbnQ2NF90IHN2aGlzdGNudF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aGlzdGNudF9zMzJfeikpKQpzdnVpbnQzMl90IHN2aGlzdGNudF96KHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhpc3RjbnRfczY0X3opKSkKc3Z1aW50NjRfdCBzdmhpc3RjbnRfeihzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZoaXN0c2VnX3U4KSkpCnN2dWludDhfdCBzdmhpc3RzZWcoc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZoaXN0c2VnX3M4KSkpCnN2dWludDhfdCBzdmhpc3RzZWcoc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1Yl9uX3M4X20pKSkKc3ZpbnQ4X3Qgc3Zoc3ViX20oc3Zib29sX3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3ViX25fczMyX20pKSkKc3ZpbnQzMl90IHN2aHN1Yl9tKHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3ViX25fczY0X20pKSkKc3ZpbnQ2NF90IHN2aHN1Yl9tKHN2Ym9vbF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3ViX25fczE2X20pKSkKc3ZpbnQxNl90IHN2aHN1Yl9tKHN2Ym9vbF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3ViX25fczhfeCkpKQpzdmludDhfdCBzdmhzdWJfeChzdmJvb2xfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJfbl9zMzJfeCkpKQpzdmludDMyX3Qgc3Zoc3ViX3goc3Zib29sX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJfbl9zNjRfeCkpKQpzdmludDY0X3Qgc3Zoc3ViX3goc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJfbl9zMTZfeCkpKQpzdmludDE2X3Qgc3Zoc3ViX3goc3Zib29sX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJfbl9zOF96KSkpCnN2aW50OF90IHN2aHN1Yl96KHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1Yl9uX3MzMl96KSkpCnN2aW50MzJfdCBzdmhzdWJfeihzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1Yl9uX3M2NF96KSkpCnN2aW50NjRfdCBzdmhzdWJfeihzdmJvb2xfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1Yl9uX3MxNl96KSkpCnN2aW50MTZfdCBzdmhzdWJfeihzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1Yl9uX3U4X20pKSkKc3Z1aW50OF90IHN2aHN1Yl9tKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3ViX25fdTMyX20pKSkKc3Z1aW50MzJfdCBzdmhzdWJfbShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3ViX25fdTY0X20pKSkKc3Z1aW50NjRfdCBzdmhzdWJfbShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3ViX25fdTE2X20pKSkKc3Z1aW50MTZfdCBzdmhzdWJfbShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3ViX25fdThfeCkpKQpzdnVpbnQ4X3Qgc3Zoc3ViX3goc3Zib29sX3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJfbl91MzJfeCkpKQpzdnVpbnQzMl90IHN2aHN1Yl94KHN2Ym9vbF90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJfbl91NjRfeCkpKQpzdnVpbnQ2NF90IHN2aHN1Yl94KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJfbl91MTZfeCkpKQpzdnVpbnQxNl90IHN2aHN1Yl94KHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJfbl91OF96KSkpCnN2dWludDhfdCBzdmhzdWJfeihzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1Yl9uX3UzMl96KSkpCnN2dWludDMyX3Qgc3Zoc3ViX3ooc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1Yl9uX3U2NF96KSkpCnN2dWludDY0X3Qgc3Zoc3ViX3ooc3Zib29sX3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1Yl9uX3UxNl96KSkpCnN2dWludDE2X3Qgc3Zoc3ViX3ooc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1Yl9zOF9tKSkpCnN2aW50OF90IHN2aHN1Yl9tKHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3ViX3MzMl9tKSkpCnN2aW50MzJfdCBzdmhzdWJfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3ViX3M2NF9tKSkpCnN2aW50NjRfdCBzdmhzdWJfbShzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3ViX3MxNl9tKSkpCnN2aW50MTZfdCBzdmhzdWJfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3ViX3M4X3gpKSkKc3ZpbnQ4X3Qgc3Zoc3ViX3goc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJfczMyX3gpKSkKc3ZpbnQzMl90IHN2aHN1Yl94KHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJfczY0X3gpKSkKc3ZpbnQ2NF90IHN2aHN1Yl94KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJfczE2X3gpKSkKc3ZpbnQxNl90IHN2aHN1Yl94KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJfczhfeikpKQpzdmludDhfdCBzdmhzdWJfeihzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1Yl9zMzJfeikpKQpzdmludDMyX3Qgc3Zoc3ViX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1Yl9zNjRfeikpKQpzdmludDY0X3Qgc3Zoc3ViX3ooc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1Yl9zMTZfeikpKQpzdmludDE2X3Qgc3Zoc3ViX3ooc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1Yl91OF9tKSkpCnN2dWludDhfdCBzdmhzdWJfbShzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3ViX3UzMl9tKSkpCnN2dWludDMyX3Qgc3Zoc3ViX20oc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3ViX3U2NF9tKSkpCnN2dWludDY0X3Qgc3Zoc3ViX20oc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3ViX3UxNl9tKSkpCnN2dWludDE2X3Qgc3Zoc3ViX20oc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3ViX3U4X3gpKSkKc3Z1aW50OF90IHN2aHN1Yl94KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJfdTMyX3gpKSkKc3Z1aW50MzJfdCBzdmhzdWJfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJfdTY0X3gpKSkKc3Z1aW50NjRfdCBzdmhzdWJfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJfdTE2X3gpKSkKc3Z1aW50MTZfdCBzdmhzdWJfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJfdThfeikpKQpzdnVpbnQ4X3Qgc3Zoc3ViX3ooc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1Yl91MzJfeikpKQpzdnVpbnQzMl90IHN2aHN1Yl96KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1Yl91NjRfeikpKQpzdnVpbnQ2NF90IHN2aHN1Yl96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1Yl91MTZfeikpKQpzdnVpbnQxNl90IHN2aHN1Yl96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1YnJfbl9zOF9tKSkpCnN2aW50OF90IHN2aHN1YnJfbShzdmJvb2xfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJyX25fczMyX20pKSkKc3ZpbnQzMl90IHN2aHN1YnJfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1YnJfbl9zNjRfbSkpKQpzdmludDY0X3Qgc3Zoc3Vicl9tKHN2Ym9vbF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3Vicl9uX3MxNl9tKSkpCnN2aW50MTZfdCBzdmhzdWJyX20oc3Zib29sX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJyX25fczhfeCkpKQpzdmludDhfdCBzdmhzdWJyX3goc3Zib29sX3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3Vicl9uX3MzMl94KSkpCnN2aW50MzJfdCBzdmhzdWJyX3goc3Zib29sX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJyX25fczY0X3gpKSkKc3ZpbnQ2NF90IHN2aHN1YnJfeChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1YnJfbl9zMTZfeCkpKQpzdmludDE2X3Qgc3Zoc3Vicl94KHN2Ym9vbF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3Vicl9uX3M4X3opKSkKc3ZpbnQ4X3Qgc3Zoc3Vicl96KHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1YnJfbl9zMzJfeikpKQpzdmludDMyX3Qgc3Zoc3Vicl96KHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3Vicl9uX3M2NF96KSkpCnN2aW50NjRfdCBzdmhzdWJyX3ooc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJyX25fczE2X3opKSkKc3ZpbnQxNl90IHN2aHN1YnJfeihzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1YnJfbl91OF9tKSkpCnN2dWludDhfdCBzdmhzdWJyX20oc3Zib29sX3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJyX25fdTMyX20pKSkKc3Z1aW50MzJfdCBzdmhzdWJyX20oc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1YnJfbl91NjRfbSkpKQpzdnVpbnQ2NF90IHN2aHN1YnJfbShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3Vicl9uX3UxNl9tKSkpCnN2dWludDE2X3Qgc3Zoc3Vicl9tKHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJyX25fdThfeCkpKQpzdnVpbnQ4X3Qgc3Zoc3Vicl94KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3Vicl9uX3UzMl94KSkpCnN2dWludDMyX3Qgc3Zoc3Vicl94KHN2Ym9vbF90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJyX25fdTY0X3gpKSkKc3Z1aW50NjRfdCBzdmhzdWJyX3goc3Zib29sX3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1YnJfbl91MTZfeCkpKQpzdnVpbnQxNl90IHN2aHN1YnJfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3Vicl9uX3U4X3opKSkKc3Z1aW50OF90IHN2aHN1YnJfeihzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1YnJfbl91MzJfeikpKQpzdnVpbnQzMl90IHN2aHN1YnJfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3Vicl9uX3U2NF96KSkpCnN2dWludDY0X3Qgc3Zoc3Vicl96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJyX25fdTE2X3opKSkKc3Z1aW50MTZfdCBzdmhzdWJyX3ooc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1YnJfczhfbSkpKQpzdmludDhfdCBzdmhzdWJyX20oc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJyX3MzMl9tKSkpCnN2aW50MzJfdCBzdmhzdWJyX20oc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1YnJfczY0X20pKSkKc3ZpbnQ2NF90IHN2aHN1YnJfbShzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3Vicl9zMTZfbSkpKQpzdmludDE2X3Qgc3Zoc3Vicl9tKHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJyX3M4X3gpKSkKc3ZpbnQ4X3Qgc3Zoc3Vicl94KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3Vicl9zMzJfeCkpKQpzdmludDMyX3Qgc3Zoc3Vicl94KHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJyX3M2NF94KSkpCnN2aW50NjRfdCBzdmhzdWJyX3goc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1YnJfczE2X3gpKSkKc3ZpbnQxNl90IHN2aHN1YnJfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3Vicl9zOF96KSkpCnN2aW50OF90IHN2aHN1YnJfeihzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1YnJfczMyX3opKSkKc3ZpbnQzMl90IHN2aHN1YnJfeihzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3Vicl9zNjRfeikpKQpzdmludDY0X3Qgc3Zoc3Vicl96KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJyX3MxNl96KSkpCnN2aW50MTZfdCBzdmhzdWJyX3ooc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1YnJfdThfbSkpKQpzdnVpbnQ4X3Qgc3Zoc3Vicl9tKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJyX3UzMl9tKSkpCnN2dWludDMyX3Qgc3Zoc3Vicl9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1YnJfdTY0X20pKSkKc3Z1aW50NjRfdCBzdmhzdWJyX20oc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3Vicl91MTZfbSkpKQpzdnVpbnQxNl90IHN2aHN1YnJfbShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJyX3U4X3gpKSkKc3Z1aW50OF90IHN2aHN1YnJfeChzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3Vicl91MzJfeCkpKQpzdnVpbnQzMl90IHN2aHN1YnJfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJyX3U2NF94KSkpCnN2dWludDY0X3Qgc3Zoc3Vicl94KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1YnJfdTE2X3gpKSkKc3Z1aW50MTZfdCBzdmhzdWJyX3goc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3Vicl91OF96KSkpCnN2dWludDhfdCBzdmhzdWJyX3ooc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aHN1YnJfdTMyX3opKSkKc3Z1aW50MzJfdCBzdmhzdWJyX3ooc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zoc3Vicl91NjRfeikpKQpzdnVpbnQ2NF90IHN2aHN1YnJfeihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmhzdWJyX3UxNl96KSkpCnN2dWludDE2X3Qgc3Zoc3Vicl96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfZ2F0aGVyX3UzMmJhc2VfaW5kZXhfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZG50MV9nYXRoZXJfaW5kZXhfdTMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfZ2F0aGVyX3U2NGJhc2VfaW5kZXhfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZG50MV9nYXRoZXJfaW5kZXhfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfZ2F0aGVyX3U2NGJhc2VfaW5kZXhfZjY0KSkpCnN2ZmxvYXQ2NF90IHN2bGRudDFfZ2F0aGVyX2luZGV4X2Y2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxX2dhdGhlcl91MzJiYXNlX2luZGV4X2YzMikpKQpzdmZsb2F0MzJfdCBzdmxkbnQxX2dhdGhlcl9pbmRleF9mMzIoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MV9nYXRoZXJfdTMyYmFzZV9pbmRleF9zMzIpKSkKc3ZpbnQzMl90IHN2bGRudDFfZ2F0aGVyX2luZGV4X3MzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxX2dhdGhlcl91NjRiYXNlX2luZGV4X3M2NCkpKQpzdmludDY0X3Qgc3ZsZG50MV9nYXRoZXJfaW5kZXhfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfZ2F0aGVyX3UzMmJhc2Vfb2Zmc2V0X3UzMikpKQpzdnVpbnQzMl90IHN2bGRudDFfZ2F0aGVyX29mZnNldF91MzIoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MV9nYXRoZXJfdTY0YmFzZV9vZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZG50MV9nYXRoZXJfb2Zmc2V0X3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxX2dhdGhlcl91NjRiYXNlX29mZnNldF9mNjQpKSkKc3ZmbG9hdDY0X3Qgc3ZsZG50MV9nYXRoZXJfb2Zmc2V0X2Y2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxX2dhdGhlcl91MzJiYXNlX29mZnNldF9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3ZsZG50MV9nYXRoZXJfb2Zmc2V0X2YzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxX2dhdGhlcl91MzJiYXNlX29mZnNldF9zMzIpKSkKc3ZpbnQzMl90IHN2bGRudDFfZ2F0aGVyX29mZnNldF9zMzIoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MV9nYXRoZXJfdTY0YmFzZV9vZmZzZXRfczY0KSkpCnN2aW50NjRfdCBzdmxkbnQxX2dhdGhlcl9vZmZzZXRfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfZ2F0aGVyX3UzMmJhc2VfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZG50MV9nYXRoZXJfdTMyKHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfZ2F0aGVyX3U2NGJhc2VfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZG50MV9nYXRoZXJfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfZ2F0aGVyX3U2NGJhc2VfZjY0KSkpCnN2ZmxvYXQ2NF90IHN2bGRudDFfZ2F0aGVyX2Y2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxX2dhdGhlcl91MzJiYXNlX2YzMikpKQpzdmZsb2F0MzJfdCBzdmxkbnQxX2dhdGhlcl9mMzIoc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MV9nYXRoZXJfdTMyYmFzZV9zMzIpKSkKc3ZpbnQzMl90IHN2bGRudDFfZ2F0aGVyX3MzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxX2dhdGhlcl91NjRiYXNlX3M2NCkpKQpzdmludDY0X3Qgc3ZsZG50MV9nYXRoZXJfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfZ2F0aGVyX3M2NGluZGV4X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRudDFfZ2F0aGVyX2luZGV4KHN2Ym9vbF90LCB1aW50NjRfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MV9nYXRoZXJfczY0aW5kZXhfZjY0KSkpCnN2ZmxvYXQ2NF90IHN2bGRudDFfZ2F0aGVyX2luZGV4KHN2Ym9vbF90LCBmbG9hdDY0X3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfZ2F0aGVyX3M2NGluZGV4X3M2NCkpKQpzdmludDY0X3Qgc3ZsZG50MV9nYXRoZXJfaW5kZXgoc3Zib29sX3QsIGludDY0X3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfZ2F0aGVyX3U2NGluZGV4X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRudDFfZ2F0aGVyX2luZGV4KHN2Ym9vbF90LCB1aW50NjRfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfZ2F0aGVyX3U2NGluZGV4X2Y2NCkpKQpzdmZsb2F0NjRfdCBzdmxkbnQxX2dhdGhlcl9pbmRleChzdmJvb2xfdCwgZmxvYXQ2NF90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MV9nYXRoZXJfdTY0aW5kZXhfczY0KSkpCnN2aW50NjRfdCBzdmxkbnQxX2dhdGhlcl9pbmRleChzdmJvb2xfdCwgaW50NjRfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfZ2F0aGVyX3UzMm9mZnNldF91MzIpKSkKc3Z1aW50MzJfdCBzdmxkbnQxX2dhdGhlcl9vZmZzZXQoc3Zib29sX3QsIHVpbnQzMl90IGNvbnN0ICosIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MV9nYXRoZXJfdTMyb2Zmc2V0X2YzMikpKQpzdmZsb2F0MzJfdCBzdmxkbnQxX2dhdGhlcl9vZmZzZXQoc3Zib29sX3QsIGZsb2F0MzJfdCBjb25zdCAqLCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfZ2F0aGVyX3UzMm9mZnNldF9zMzIpKSkKc3ZpbnQzMl90IHN2bGRudDFfZ2F0aGVyX29mZnNldChzdmJvb2xfdCwgaW50MzJfdCBjb25zdCAqLCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfZ2F0aGVyX3M2NG9mZnNldF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkbnQxX2dhdGhlcl9vZmZzZXQoc3Zib29sX3QsIHVpbnQ2NF90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxX2dhdGhlcl9zNjRvZmZzZXRfZjY0KSkpCnN2ZmxvYXQ2NF90IHN2bGRudDFfZ2F0aGVyX29mZnNldChzdmJvb2xfdCwgZmxvYXQ2NF90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxX2dhdGhlcl9zNjRvZmZzZXRfczY0KSkpCnN2aW50NjRfdCBzdmxkbnQxX2dhdGhlcl9vZmZzZXQoc3Zib29sX3QsIGludDY0X3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfZ2F0aGVyX3U2NG9mZnNldF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkbnQxX2dhdGhlcl9vZmZzZXQoc3Zib29sX3QsIHVpbnQ2NF90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MV9nYXRoZXJfdTY0b2Zmc2V0X2Y2NCkpKQpzdmZsb2F0NjRfdCBzdmxkbnQxX2dhdGhlcl9vZmZzZXQoc3Zib29sX3QsIGZsb2F0NjRfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfZ2F0aGVyX3U2NG9mZnNldF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRudDFfZ2F0aGVyX29mZnNldChzdmJvb2xfdCwgaW50NjRfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFzYl9nYXRoZXJfdTMyYmFzZV9vZmZzZXRfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZG50MXNiX2dhdGhlcl9vZmZzZXRfdTMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFzYl9nYXRoZXJfdTY0YmFzZV9vZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZG50MXNiX2dhdGhlcl9vZmZzZXRfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFzYl9nYXRoZXJfdTMyYmFzZV9vZmZzZXRfczMyKSkpCnN2aW50MzJfdCBzdmxkbnQxc2JfZ2F0aGVyX29mZnNldF9zMzIoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXNiX2dhdGhlcl91NjRiYXNlX29mZnNldF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRudDFzYl9nYXRoZXJfb2Zmc2V0X3M2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxc2JfZ2F0aGVyX3UzMmJhc2VfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZG50MXNiX2dhdGhlcl91MzIoc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXNiX2dhdGhlcl91NjRiYXNlX3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRudDFzYl9nYXRoZXJfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFzYl9nYXRoZXJfdTMyYmFzZV9zMzIpKSkKc3ZpbnQzMl90IHN2bGRudDFzYl9nYXRoZXJfczMyKHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFzYl9nYXRoZXJfdTY0YmFzZV9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRudDFzYl9nYXRoZXJfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFzYl9nYXRoZXJfdTMyb2Zmc2V0X3UzMikpKQpzdnVpbnQzMl90IHN2bGRudDFzYl9nYXRoZXJfb2Zmc2V0X3UzMihzdmJvb2xfdCwgaW50OF90IGNvbnN0ICosIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXNiX2dhdGhlcl91MzJvZmZzZXRfczMyKSkpCnN2aW50MzJfdCBzdmxkbnQxc2JfZ2F0aGVyX29mZnNldF9zMzIoc3Zib29sX3QsIGludDhfdCBjb25zdCAqLCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFzYl9nYXRoZXJfczY0b2Zmc2V0X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRudDFzYl9nYXRoZXJfb2Zmc2V0X3U2NChzdmJvb2xfdCwgaW50OF90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxc2JfZ2F0aGVyX3M2NG9mZnNldF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRudDFzYl9nYXRoZXJfb2Zmc2V0X3M2NChzdmJvb2xfdCwgaW50OF90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxc2JfZ2F0aGVyX3U2NG9mZnNldF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkbnQxc2JfZ2F0aGVyX29mZnNldF91NjQoc3Zib29sX3QsIGludDhfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFzYl9nYXRoZXJfdTY0b2Zmc2V0X3M2NCkpKQpzdmludDY0X3Qgc3ZsZG50MXNiX2dhdGhlcl9vZmZzZXRfczY0KHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxc2hfZ2F0aGVyX3UzMmJhc2VfaW5kZXhfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZG50MXNoX2dhdGhlcl9pbmRleF91MzIoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXNoX2dhdGhlcl91NjRiYXNlX2luZGV4X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRudDFzaF9nYXRoZXJfaW5kZXhfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFzaF9nYXRoZXJfdTMyYmFzZV9pbmRleF9zMzIpKSkKc3ZpbnQzMl90IHN2bGRudDFzaF9nYXRoZXJfaW5kZXhfczMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFzaF9nYXRoZXJfdTY0YmFzZV9pbmRleF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRudDFzaF9nYXRoZXJfaW5kZXhfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFzaF9nYXRoZXJfdTMyYmFzZV9vZmZzZXRfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZG50MXNoX2dhdGhlcl9vZmZzZXRfdTMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFzaF9nYXRoZXJfdTY0YmFzZV9vZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZG50MXNoX2dhdGhlcl9vZmZzZXRfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFzaF9nYXRoZXJfdTMyYmFzZV9vZmZzZXRfczMyKSkpCnN2aW50MzJfdCBzdmxkbnQxc2hfZ2F0aGVyX29mZnNldF9zMzIoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXNoX2dhdGhlcl91NjRiYXNlX29mZnNldF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRudDFzaF9nYXRoZXJfb2Zmc2V0X3M2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxc2hfZ2F0aGVyX3UzMmJhc2VfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZG50MXNoX2dhdGhlcl91MzIoc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXNoX2dhdGhlcl91NjRiYXNlX3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRudDFzaF9nYXRoZXJfdTY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFzaF9nYXRoZXJfdTMyYmFzZV9zMzIpKSkKc3ZpbnQzMl90IHN2bGRudDFzaF9nYXRoZXJfczMyKHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFzaF9nYXRoZXJfdTY0YmFzZV9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRudDFzaF9nYXRoZXJfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFzaF9nYXRoZXJfczY0aW5kZXhfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZG50MXNoX2dhdGhlcl9pbmRleF91NjQoc3Zib29sX3QsIGludDE2X3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFzaF9nYXRoZXJfczY0aW5kZXhfczY0KSkpCnN2aW50NjRfdCBzdmxkbnQxc2hfZ2F0aGVyX2luZGV4X3M2NChzdmJvb2xfdCwgaW50MTZfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXNoX2dhdGhlcl91NjRpbmRleF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkbnQxc2hfZ2F0aGVyX2luZGV4X3U2NChzdmJvb2xfdCwgaW50MTZfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFzaF9nYXRoZXJfdTY0aW5kZXhfczY0KSkpCnN2aW50NjRfdCBzdmxkbnQxc2hfZ2F0aGVyX2luZGV4X3M2NChzdmJvb2xfdCwgaW50MTZfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFzaF9nYXRoZXJfdTMyb2Zmc2V0X3UzMikpKQpzdnVpbnQzMl90IHN2bGRudDFzaF9nYXRoZXJfb2Zmc2V0X3UzMihzdmJvb2xfdCwgaW50MTZfdCBjb25zdCAqLCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFzaF9nYXRoZXJfdTMyb2Zmc2V0X3MzMikpKQpzdmludDMyX3Qgc3ZsZG50MXNoX2dhdGhlcl9vZmZzZXRfczMyKHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICosIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXNoX2dhdGhlcl9zNjRvZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZG50MXNoX2dhdGhlcl9vZmZzZXRfdTY0KHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxc2hfZ2F0aGVyX3M2NG9mZnNldF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRudDFzaF9nYXRoZXJfb2Zmc2V0X3M2NChzdmJvb2xfdCwgaW50MTZfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXNoX2dhdGhlcl91NjRvZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZG50MXNoX2dhdGhlcl9vZmZzZXRfdTY0KHN2Ym9vbF90LCBpbnQxNl90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXNoX2dhdGhlcl91NjRvZmZzZXRfczY0KSkpCnN2aW50NjRfdCBzdmxkbnQxc2hfZ2F0aGVyX29mZnNldF9zNjQoc3Zib29sX3QsIGludDE2X3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxc3dfZ2F0aGVyX3U2NGJhc2VfaW5kZXhfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZG50MXN3X2dhdGhlcl9pbmRleF91NjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXN3X2dhdGhlcl91NjRiYXNlX2luZGV4X3M2NCkpKQpzdmludDY0X3Qgc3ZsZG50MXN3X2dhdGhlcl9pbmRleF9zNjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXN3X2dhdGhlcl91NjRiYXNlX29mZnNldF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkbnQxc3dfZ2F0aGVyX29mZnNldF91NjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXN3X2dhdGhlcl91NjRiYXNlX29mZnNldF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRudDFzd19nYXRoZXJfb2Zmc2V0X3M2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxc3dfZ2F0aGVyX3U2NGJhc2VfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZG50MXN3X2dhdGhlcl91NjQoc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXN3X2dhdGhlcl91NjRiYXNlX3M2NCkpKQpzdmludDY0X3Qgc3ZsZG50MXN3X2dhdGhlcl9zNjQoc3Zib29sX3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXN3X2dhdGhlcl9zNjRpbmRleF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkbnQxc3dfZ2F0aGVyX2luZGV4X3U2NChzdmJvb2xfdCwgaW50MzJfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXN3X2dhdGhlcl9zNjRpbmRleF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRudDFzd19nYXRoZXJfaW5kZXhfczY0KHN2Ym9vbF90LCBpbnQzMl90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxc3dfZ2F0aGVyX3U2NGluZGV4X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRudDFzd19nYXRoZXJfaW5kZXhfdTY0KHN2Ym9vbF90LCBpbnQzMl90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXN3X2dhdGhlcl91NjRpbmRleF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRudDFzd19nYXRoZXJfaW5kZXhfczY0KHN2Ym9vbF90LCBpbnQzMl90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXN3X2dhdGhlcl9zNjRvZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZG50MXN3X2dhdGhlcl9vZmZzZXRfdTY0KHN2Ym9vbF90LCBpbnQzMl90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxc3dfZ2F0aGVyX3M2NG9mZnNldF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRudDFzd19nYXRoZXJfb2Zmc2V0X3M2NChzdmJvb2xfdCwgaW50MzJfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXN3X2dhdGhlcl91NjRvZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZG50MXN3X2dhdGhlcl9vZmZzZXRfdTY0KHN2Ym9vbF90LCBpbnQzMl90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXN3X2dhdGhlcl91NjRvZmZzZXRfczY0KSkpCnN2aW50NjRfdCBzdmxkbnQxc3dfZ2F0aGVyX29mZnNldF9zNjQoc3Zib29sX3QsIGludDMyX3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxdWJfZ2F0aGVyX3UzMmJhc2Vfb2Zmc2V0X3UzMikpKQpzdnVpbnQzMl90IHN2bGRudDF1Yl9nYXRoZXJfb2Zmc2V0X3UzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxdWJfZ2F0aGVyX3U2NGJhc2Vfb2Zmc2V0X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRudDF1Yl9nYXRoZXJfb2Zmc2V0X3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxdWJfZ2F0aGVyX3UzMmJhc2Vfb2Zmc2V0X3MzMikpKQpzdmludDMyX3Qgc3ZsZG50MXViX2dhdGhlcl9vZmZzZXRfczMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDF1Yl9nYXRoZXJfdTY0YmFzZV9vZmZzZXRfczY0KSkpCnN2aW50NjRfdCBzdmxkbnQxdWJfZ2F0aGVyX29mZnNldF9zNjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXViX2dhdGhlcl91MzJiYXNlX3UzMikpKQpzdnVpbnQzMl90IHN2bGRudDF1Yl9nYXRoZXJfdTMyKHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDF1Yl9nYXRoZXJfdTY0YmFzZV91NjQpKSkKc3Z1aW50NjRfdCBzdmxkbnQxdWJfZ2F0aGVyX3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxdWJfZ2F0aGVyX3UzMmJhc2VfczMyKSkpCnN2aW50MzJfdCBzdmxkbnQxdWJfZ2F0aGVyX3MzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxdWJfZ2F0aGVyX3U2NGJhc2VfczY0KSkpCnN2aW50NjRfdCBzdmxkbnQxdWJfZ2F0aGVyX3M2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxdWJfZ2F0aGVyX3UzMm9mZnNldF91MzIpKSkKc3Z1aW50MzJfdCBzdmxkbnQxdWJfZ2F0aGVyX29mZnNldF91MzIoc3Zib29sX3QsIHVpbnQ4X3QgY29uc3QgKiwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxdWJfZ2F0aGVyX3UzMm9mZnNldF9zMzIpKSkKc3ZpbnQzMl90IHN2bGRudDF1Yl9nYXRoZXJfb2Zmc2V0X3MzMihzdmJvb2xfdCwgdWludDhfdCBjb25zdCAqLCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDF1Yl9nYXRoZXJfczY0b2Zmc2V0X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRudDF1Yl9nYXRoZXJfb2Zmc2V0X3U2NChzdmJvb2xfdCwgdWludDhfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXViX2dhdGhlcl9zNjRvZmZzZXRfczY0KSkpCnN2aW50NjRfdCBzdmxkbnQxdWJfZ2F0aGVyX29mZnNldF9zNjQoc3Zib29sX3QsIHVpbnQ4X3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDF1Yl9nYXRoZXJfdTY0b2Zmc2V0X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRudDF1Yl9nYXRoZXJfb2Zmc2V0X3U2NChzdmJvb2xfdCwgdWludDhfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDF1Yl9nYXRoZXJfdTY0b2Zmc2V0X3M2NCkpKQpzdmludDY0X3Qgc3ZsZG50MXViX2dhdGhlcl9vZmZzZXRfczY0KHN2Ym9vbF90LCB1aW50OF90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXVoX2dhdGhlcl91MzJiYXNlX2luZGV4X3UzMikpKQpzdnVpbnQzMl90IHN2bGRudDF1aF9nYXRoZXJfaW5kZXhfdTMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDF1aF9nYXRoZXJfdTY0YmFzZV9pbmRleF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkbnQxdWhfZ2F0aGVyX2luZGV4X3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxdWhfZ2F0aGVyX3UzMmJhc2VfaW5kZXhfczMyKSkpCnN2aW50MzJfdCBzdmxkbnQxdWhfZ2F0aGVyX2luZGV4X3MzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxdWhfZ2F0aGVyX3U2NGJhc2VfaW5kZXhfczY0KSkpCnN2aW50NjRfdCBzdmxkbnQxdWhfZ2F0aGVyX2luZGV4X3M2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxdWhfZ2F0aGVyX3UzMmJhc2Vfb2Zmc2V0X3UzMikpKQpzdnVpbnQzMl90IHN2bGRudDF1aF9nYXRoZXJfb2Zmc2V0X3UzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxdWhfZ2F0aGVyX3U2NGJhc2Vfb2Zmc2V0X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRudDF1aF9nYXRoZXJfb2Zmc2V0X3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxdWhfZ2F0aGVyX3UzMmJhc2Vfb2Zmc2V0X3MzMikpKQpzdmludDMyX3Qgc3ZsZG50MXVoX2dhdGhlcl9vZmZzZXRfczMyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDF1aF9nYXRoZXJfdTY0YmFzZV9vZmZzZXRfczY0KSkpCnN2aW50NjRfdCBzdmxkbnQxdWhfZ2F0aGVyX29mZnNldF9zNjQoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXVoX2dhdGhlcl91MzJiYXNlX3UzMikpKQpzdnVpbnQzMl90IHN2bGRudDF1aF9nYXRoZXJfdTMyKHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDF1aF9nYXRoZXJfdTY0YmFzZV91NjQpKSkKc3Z1aW50NjRfdCBzdmxkbnQxdWhfZ2F0aGVyX3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxdWhfZ2F0aGVyX3UzMmJhc2VfczMyKSkpCnN2aW50MzJfdCBzdmxkbnQxdWhfZ2F0aGVyX3MzMihzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxdWhfZ2F0aGVyX3U2NGJhc2VfczY0KSkpCnN2aW50NjRfdCBzdmxkbnQxdWhfZ2F0aGVyX3M2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxdWhfZ2F0aGVyX3M2NGluZGV4X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRudDF1aF9nYXRoZXJfaW5kZXhfdTY0KHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXVoX2dhdGhlcl9zNjRpbmRleF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRudDF1aF9nYXRoZXJfaW5kZXhfczY0KHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXVoX2dhdGhlcl91NjRpbmRleF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkbnQxdWhfZ2F0aGVyX2luZGV4X3U2NChzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxdWhfZ2F0aGVyX3U2NGluZGV4X3M2NCkpKQpzdmludDY0X3Qgc3ZsZG50MXVoX2dhdGhlcl9pbmRleF9zNjQoc3Zib29sX3QsIHVpbnQxNl90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXVoX2dhdGhlcl91MzJvZmZzZXRfdTMyKSkpCnN2dWludDMyX3Qgc3ZsZG50MXVoX2dhdGhlcl9vZmZzZXRfdTMyKHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqLCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDF1aF9nYXRoZXJfdTMyb2Zmc2V0X3MzMikpKQpzdmludDMyX3Qgc3ZsZG50MXVoX2dhdGhlcl9vZmZzZXRfczMyKHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqLCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDF1aF9nYXRoZXJfczY0b2Zmc2V0X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRudDF1aF9nYXRoZXJfb2Zmc2V0X3U2NChzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKiwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDF1aF9nYXRoZXJfczY0b2Zmc2V0X3M2NCkpKQpzdmludDY0X3Qgc3ZsZG50MXVoX2dhdGhlcl9vZmZzZXRfczY0KHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXVoX2dhdGhlcl91NjRvZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZG50MXVoX2dhdGhlcl9vZmZzZXRfdTY0KHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDF1aF9nYXRoZXJfdTY0b2Zmc2V0X3M2NCkpKQpzdmludDY0X3Qgc3ZsZG50MXVoX2dhdGhlcl9vZmZzZXRfczY0KHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqLCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDF1d19nYXRoZXJfdTY0YmFzZV9pbmRleF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkbnQxdXdfZ2F0aGVyX2luZGV4X3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxdXdfZ2F0aGVyX3U2NGJhc2VfaW5kZXhfczY0KSkpCnN2aW50NjRfdCBzdmxkbnQxdXdfZ2F0aGVyX2luZGV4X3M2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxdXdfZ2F0aGVyX3U2NGJhc2Vfb2Zmc2V0X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRudDF1d19nYXRoZXJfb2Zmc2V0X3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxdXdfZ2F0aGVyX3U2NGJhc2Vfb2Zmc2V0X3M2NCkpKQpzdmludDY0X3Qgc3ZsZG50MXV3X2dhdGhlcl9vZmZzZXRfczY0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDF1d19nYXRoZXJfdTY0YmFzZV91NjQpKSkKc3Z1aW50NjRfdCBzdmxkbnQxdXdfZ2F0aGVyX3U2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxdXdfZ2F0aGVyX3U2NGJhc2VfczY0KSkpCnN2aW50NjRfdCBzdmxkbnQxdXdfZ2F0aGVyX3M2NChzdmJvb2xfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxdXdfZ2F0aGVyX3M2NGluZGV4X3U2NCkpKQpzdnVpbnQ2NF90IHN2bGRudDF1d19nYXRoZXJfaW5kZXhfdTY0KHN2Ym9vbF90LCB1aW50MzJfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXV3X2dhdGhlcl9zNjRpbmRleF9zNjQpKSkKc3ZpbnQ2NF90IHN2bGRudDF1d19nYXRoZXJfaW5kZXhfczY0KHN2Ym9vbF90LCB1aW50MzJfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXV3X2dhdGhlcl91NjRpbmRleF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkbnQxdXdfZ2F0aGVyX2luZGV4X3U2NChzdmJvb2xfdCwgdWludDMyX3QgY29uc3QgKiwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxdXdfZ2F0aGVyX3U2NGluZGV4X3M2NCkpKQpzdmludDY0X3Qgc3ZsZG50MXV3X2dhdGhlcl9pbmRleF9zNjQoc3Zib29sX3QsIHVpbnQzMl90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXV3X2dhdGhlcl9zNjRvZmZzZXRfdTY0KSkpCnN2dWludDY0X3Qgc3ZsZG50MXV3X2dhdGhlcl9vZmZzZXRfdTY0KHN2Ym9vbF90LCB1aW50MzJfdCBjb25zdCAqLCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXV3X2dhdGhlcl9zNjRvZmZzZXRfczY0KSkpCnN2aW50NjRfdCBzdmxkbnQxdXdfZ2F0aGVyX29mZnNldF9zNjQoc3Zib29sX3QsIHVpbnQzMl90IGNvbnN0ICosIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxdXdfZ2F0aGVyX3U2NG9mZnNldF91NjQpKSkKc3Z1aW50NjRfdCBzdmxkbnQxdXdfZ2F0aGVyX29mZnNldF91NjQoc3Zib29sX3QsIHVpbnQzMl90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MXV3X2dhdGhlcl91NjRvZmZzZXRfczY0KSkpCnN2aW50NjRfdCBzdmxkbnQxdXdfZ2F0aGVyX29mZnNldF9zNjQoc3Zib29sX3QsIHVpbnQzMl90IGNvbnN0ICosIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsb2diX2Y2NF9tKSkpCnN2aW50NjRfdCBzdmxvZ2JfbShzdmludDY0X3QsIHN2Ym9vbF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxvZ2JfZjMyX20pKSkKc3ZpbnQzMl90IHN2bG9nYl9tKHN2aW50MzJfdCwgc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bG9nYl9mMTZfbSkpKQpzdmludDE2X3Qgc3Zsb2diX20oc3ZpbnQxNl90LCBzdmJvb2xfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsb2diX2Y2NF94KSkpCnN2aW50NjRfdCBzdmxvZ2JfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsb2diX2YzMl94KSkpCnN2aW50MzJfdCBzdmxvZ2JfeChzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsb2diX2YxNl94KSkpCnN2aW50MTZfdCBzdmxvZ2JfeChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsb2diX2Y2NF96KSkpCnN2aW50NjRfdCBzdmxvZ2JfeihzdmJvb2xfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsb2diX2YzMl96KSkpCnN2aW50MzJfdCBzdmxvZ2JfeihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zsb2diX2YxNl96KSkpCnN2aW50MTZfdCBzdmxvZ2JfeihzdmJvb2xfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXRjaF91OCkpKQpzdmJvb2xfdCBzdm1hdGNoKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1hdGNoX3UxNikpKQpzdmJvb2xfdCBzdm1hdGNoKHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF0Y2hfczgpKSkKc3Zib29sX3Qgc3ZtYXRjaChzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF0Y2hfczE2KSkpCnN2Ym9vbF90IHN2bWF0Y2goc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4bm1wX2Y2NF9tKSkpCnN2ZmxvYXQ2NF90IHN2bWF4bm1wX20oc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heG5tcF9mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdm1heG5tcF9tKHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhubXBfZjE2X20pKSkKc3ZmbG9hdDE2X3Qgc3ZtYXhubXBfbShzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4bm1wX2Y2NF94KSkpCnN2ZmxvYXQ2NF90IHN2bWF4bm1wX3goc3Zib29sX3QsIHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heG5tcF9mMzJfeCkpKQpzdmZsb2F0MzJfdCBzdm1heG5tcF94KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhubXBfZjE2X3gpKSkKc3ZmbG9hdDE2X3Qgc3ZtYXhubXBfeChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4cF9mNjRfbSkpKQpzdmZsb2F0NjRfdCBzdm1heHBfbShzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4cF9mMzJfbSkpKQpzdmZsb2F0MzJfdCBzdm1heHBfbShzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4cF9mMTZfbSkpKQpzdmZsb2F0MTZfdCBzdm1heHBfbShzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4cF9mNjRfeCkpKQpzdmZsb2F0NjRfdCBzdm1heHBfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4cF9mMzJfeCkpKQpzdmZsb2F0MzJfdCBzdm1heHBfeChzdmJvb2xfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4cF9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdm1heHBfeChzdmJvb2xfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4cF9zOF9tKSkpCnN2aW50OF90IHN2bWF4cF9tKHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhwX3MzMl9tKSkpCnN2aW50MzJfdCBzdm1heHBfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhwX3M2NF9tKSkpCnN2aW50NjRfdCBzdm1heHBfbShzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhwX3MxNl9tKSkpCnN2aW50MTZfdCBzdm1heHBfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhwX3M4X3gpKSkKc3ZpbnQ4X3Qgc3ZtYXhwX3goc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heHBfczMyX3gpKSkKc3ZpbnQzMl90IHN2bWF4cF94KHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heHBfczY0X3gpKSkKc3ZpbnQ2NF90IHN2bWF4cF94KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heHBfczE2X3gpKSkKc3ZpbnQxNl90IHN2bWF4cF94KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1heHBfdThfbSkpKQpzdnVpbnQ4X3Qgc3ZtYXhwX20oc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4cF91MzJfbSkpKQpzdnVpbnQzMl90IHN2bWF4cF9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4cF91NjRfbSkpKQpzdnVpbnQ2NF90IHN2bWF4cF9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4cF91MTZfbSkpKQpzdnVpbnQxNl90IHN2bWF4cF9tKHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWF4cF91OF94KSkpCnN2dWludDhfdCBzdm1heHBfeChzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhwX3UzMl94KSkpCnN2dWludDMyX3Qgc3ZtYXhwX3goc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhwX3U2NF94KSkpCnN2dWludDY0X3Qgc3ZtYXhwX3goc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtYXhwX3UxNl94KSkpCnN2dWludDE2X3Qgc3ZtYXhwX3goc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5ubXBfZjY0X20pKSkKc3ZmbG9hdDY0X3Qgc3ZtaW5ubXBfbShzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWlubm1wX2YzMl9tKSkpCnN2ZmxvYXQzMl90IHN2bWlubm1wX20oc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbm5tcF9mMTZfbSkpKQpzdmZsb2F0MTZfdCBzdm1pbm5tcF9tKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5ubXBfZjY0X3gpKSkKc3ZmbG9hdDY0X3Qgc3ZtaW5ubXBfeChzdmJvb2xfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWlubm1wX2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2bWlubm1wX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbm5tcF9mMTZfeCkpKQpzdmZsb2F0MTZfdCBzdm1pbm5tcF94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5wX2Y2NF9tKSkpCnN2ZmxvYXQ2NF90IHN2bWlucF9tKHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5wX2YzMl9tKSkpCnN2ZmxvYXQzMl90IHN2bWlucF9tKHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5wX2YxNl9tKSkpCnN2ZmxvYXQxNl90IHN2bWlucF9tKHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5wX2Y2NF94KSkpCnN2ZmxvYXQ2NF90IHN2bWlucF94KHN2Ym9vbF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5wX2YzMl94KSkpCnN2ZmxvYXQzMl90IHN2bWlucF94KHN2Ym9vbF90LCBzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5wX2YxNl94KSkpCnN2ZmxvYXQxNl90IHN2bWlucF94KHN2Ym9vbF90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5wX3M4X20pKSkKc3ZpbnQ4X3Qgc3ZtaW5wX20oc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbnBfczMyX20pKSkKc3ZpbnQzMl90IHN2bWlucF9tKHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbnBfczY0X20pKSkKc3ZpbnQ2NF90IHN2bWlucF9tKHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbnBfczE2X20pKSkKc3ZpbnQxNl90IHN2bWlucF9tKHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbnBfczhfeCkpKQpzdmludDhfdCBzdm1pbnBfeChzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWlucF9zMzJfeCkpKQpzdmludDMyX3Qgc3ZtaW5wX3goc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWlucF9zNjRfeCkpKQpzdmludDY0X3Qgc3ZtaW5wX3goc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWlucF9zMTZfeCkpKQpzdmludDE2X3Qgc3ZtaW5wX3goc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWlucF91OF9tKSkpCnN2dWludDhfdCBzdm1pbnBfbShzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5wX3UzMl9tKSkpCnN2dWludDMyX3Qgc3ZtaW5wX20oc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5wX3U2NF9tKSkpCnN2dWludDY0X3Qgc3ZtaW5wX20oc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5wX3UxNl9tKSkpCnN2dWludDE2X3Qgc3ZtaW5wX20oc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtaW5wX3U4X3gpKSkKc3Z1aW50OF90IHN2bWlucF94KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbnBfdTMyX3gpKSkKc3Z1aW50MzJfdCBzdm1pbnBfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbnBfdTY0X3gpKSkKc3Z1aW50NjRfdCBzdm1pbnBfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1pbnBfdTE2X3gpKSkKc3Z1aW50MTZfdCBzdm1pbnBfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9sYW5lX3UzMikpKQpzdnVpbnQzMl90IHN2bWxhX2xhbmUoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFfbGFuZV91NjQpKSkKc3Z1aW50NjRfdCBzdm1sYV9sYW5lKHN2dWludDY0X3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhX2xhbmVfdTE2KSkpCnN2dWludDE2X3Qgc3ZtbGFfbGFuZShzdnVpbnQxNl90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9sYW5lX3MzMikpKQpzdmludDMyX3Qgc3ZtbGFfbGFuZShzdmludDMyX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9sYW5lX3M2NCkpKQpzdmludDY0X3Qgc3ZtbGFfbGFuZShzdmludDY0X3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYV9sYW5lX3MxNikpKQpzdmludDE2X3Qgc3ZtbGFfbGFuZShzdmludDE2X3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYWxiX25fZjMyKSkpCnN2ZmxvYXQzMl90IHN2bWxhbGIoc3ZmbG9hdDMyX3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFsYl9uX3MzMikpKQpzdmludDMyX3Qgc3ZtbGFsYihzdmludDMyX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYWxiX25fczY0KSkpCnN2aW50NjRfdCBzdm1sYWxiKHN2aW50NjRfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhbGJfbl9zMTYpKSkKc3ZpbnQxNl90IHN2bWxhbGIoc3ZpbnQxNl90LCBzdmludDhfdCwgaW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhbGJfbl91MzIpKSkKc3Z1aW50MzJfdCBzdm1sYWxiKHN2dWludDMyX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhbGJfbl91NjQpKSkKc3Z1aW50NjRfdCBzdm1sYWxiKHN2dWludDY0X3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhbGJfbl91MTYpKSkKc3Z1aW50MTZfdCBzdm1sYWxiKHN2dWludDE2X3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYWxiX2YzMikpKQpzdmZsb2F0MzJfdCBzdm1sYWxiKHN2ZmxvYXQzMl90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFsYl9zMzIpKSkKc3ZpbnQzMl90IHN2bWxhbGIoc3ZpbnQzMl90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYWxiX3M2NCkpKQpzdmludDY0X3Qgc3ZtbGFsYihzdmludDY0X3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhbGJfczE2KSkpCnN2aW50MTZfdCBzdm1sYWxiKHN2aW50MTZfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhbGJfdTMyKSkpCnN2dWludDMyX3Qgc3ZtbGFsYihzdnVpbnQzMl90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhbGJfdTY0KSkpCnN2dWludDY0X3Qgc3ZtbGFsYihzdnVpbnQ2NF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhbGJfdTE2KSkpCnN2dWludDE2X3Qgc3ZtbGFsYihzdnVpbnQxNl90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYWxiX2xhbmVfZjMyKSkpCnN2ZmxvYXQzMl90IHN2bWxhbGJfbGFuZShzdmZsb2F0MzJfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYWxiX2xhbmVfczMyKSkpCnN2aW50MzJfdCBzdm1sYWxiX2xhbmUoc3ZpbnQzMl90LCBzdmludDE2X3QsIHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFsYl9sYW5lX3M2NCkpKQpzdmludDY0X3Qgc3ZtbGFsYl9sYW5lKHN2aW50NjRfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhbGJfbGFuZV91MzIpKSkKc3Z1aW50MzJfdCBzdm1sYWxiX2xhbmUoc3Z1aW50MzJfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFsYl9sYW5lX3U2NCkpKQpzdnVpbnQ2NF90IHN2bWxhbGJfbGFuZShzdnVpbnQ2NF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYWx0X25fZjMyKSkpCnN2ZmxvYXQzMl90IHN2bWxhbHQoc3ZmbG9hdDMyX3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFsdF9uX3MzMikpKQpzdmludDMyX3Qgc3ZtbGFsdChzdmludDMyX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYWx0X25fczY0KSkpCnN2aW50NjRfdCBzdm1sYWx0KHN2aW50NjRfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhbHRfbl9zMTYpKSkKc3ZpbnQxNl90IHN2bWxhbHQoc3ZpbnQxNl90LCBzdmludDhfdCwgaW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhbHRfbl91MzIpKSkKc3Z1aW50MzJfdCBzdm1sYWx0KHN2dWludDMyX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhbHRfbl91NjQpKSkKc3Z1aW50NjRfdCBzdm1sYWx0KHN2dWludDY0X3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhbHRfbl91MTYpKSkKc3Z1aW50MTZfdCBzdm1sYWx0KHN2dWludDE2X3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYWx0X2YzMikpKQpzdmZsb2F0MzJfdCBzdm1sYWx0KHN2ZmxvYXQzMl90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFsdF9zMzIpKSkKc3ZpbnQzMl90IHN2bWxhbHQoc3ZpbnQzMl90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYWx0X3M2NCkpKQpzdmludDY0X3Qgc3ZtbGFsdChzdmludDY0X3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhbHRfczE2KSkpCnN2aW50MTZfdCBzdm1sYWx0KHN2aW50MTZfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhbHRfdTMyKSkpCnN2dWludDMyX3Qgc3ZtbGFsdChzdnVpbnQzMl90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhbHRfdTY0KSkpCnN2dWludDY0X3Qgc3ZtbGFsdChzdnVpbnQ2NF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhbHRfdTE2KSkpCnN2dWludDE2X3Qgc3ZtbGFsdChzdnVpbnQxNl90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYWx0X2xhbmVfZjMyKSkpCnN2ZmxvYXQzMl90IHN2bWxhbHRfbGFuZShzdmZsb2F0MzJfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sYWx0X2xhbmVfczMyKSkpCnN2aW50MzJfdCBzdm1sYWx0X2xhbmUoc3ZpbnQzMl90LCBzdmludDE2X3QsIHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFsdF9sYW5lX3M2NCkpKQpzdmludDY0X3Qgc3ZtbGFsdF9sYW5lKHN2aW50NjRfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxhbHRfbGFuZV91MzIpKSkKc3Z1aW50MzJfdCBzdm1sYWx0X2xhbmUoc3Z1aW50MzJfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbGFsdF9sYW5lX3U2NCkpKQpzdnVpbnQ2NF90IHN2bWxhbHRfbGFuZShzdnVpbnQ2NF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19sYW5lX3UzMikpKQpzdnVpbnQzMl90IHN2bWxzX2xhbmUoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNfbGFuZV91NjQpKSkKc3Z1aW50NjRfdCBzdm1sc19sYW5lKHN2dWludDY0X3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzX2xhbmVfdTE2KSkpCnN2dWludDE2X3Qgc3ZtbHNfbGFuZShzdnVpbnQxNl90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19sYW5lX3MzMikpKQpzdmludDMyX3Qgc3ZtbHNfbGFuZShzdmludDMyX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19sYW5lX3M2NCkpKQpzdmludDY0X3Qgc3ZtbHNfbGFuZShzdmludDY0X3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc19sYW5lX3MxNikpKQpzdmludDE2X3Qgc3ZtbHNfbGFuZShzdmludDE2X3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc2xiX25fZjMyKSkpCnN2ZmxvYXQzMl90IHN2bWxzbGIoc3ZmbG9hdDMyX3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNsYl9uX3MzMikpKQpzdmludDMyX3Qgc3ZtbHNsYihzdmludDMyX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc2xiX25fczY0KSkpCnN2aW50NjRfdCBzdm1sc2xiKHN2aW50NjRfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzbGJfbl9zMTYpKSkKc3ZpbnQxNl90IHN2bWxzbGIoc3ZpbnQxNl90LCBzdmludDhfdCwgaW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzbGJfbl91MzIpKSkKc3Z1aW50MzJfdCBzdm1sc2xiKHN2dWludDMyX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzbGJfbl91NjQpKSkKc3Z1aW50NjRfdCBzdm1sc2xiKHN2dWludDY0X3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzbGJfbl91MTYpKSkKc3Z1aW50MTZfdCBzdm1sc2xiKHN2dWludDE2X3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc2xiX2YzMikpKQpzdmZsb2F0MzJfdCBzdm1sc2xiKHN2ZmxvYXQzMl90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNsYl9zMzIpKSkKc3ZpbnQzMl90IHN2bWxzbGIoc3ZpbnQzMl90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc2xiX3M2NCkpKQpzdmludDY0X3Qgc3ZtbHNsYihzdmludDY0X3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzbGJfczE2KSkpCnN2aW50MTZfdCBzdm1sc2xiKHN2aW50MTZfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzbGJfdTMyKSkpCnN2dWludDMyX3Qgc3ZtbHNsYihzdnVpbnQzMl90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzbGJfdTY0KSkpCnN2dWludDY0X3Qgc3ZtbHNsYihzdnVpbnQ2NF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzbGJfdTE2KSkpCnN2dWludDE2X3Qgc3ZtbHNsYihzdnVpbnQxNl90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc2xiX2xhbmVfZjMyKSkpCnN2ZmxvYXQzMl90IHN2bWxzbGJfbGFuZShzdmZsb2F0MzJfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc2xiX2xhbmVfczMyKSkpCnN2aW50MzJfdCBzdm1sc2xiX2xhbmUoc3ZpbnQzMl90LCBzdmludDE2X3QsIHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNsYl9sYW5lX3M2NCkpKQpzdmludDY0X3Qgc3ZtbHNsYl9sYW5lKHN2aW50NjRfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzbGJfbGFuZV91MzIpKSkKc3Z1aW50MzJfdCBzdm1sc2xiX2xhbmUoc3Z1aW50MzJfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNsYl9sYW5lX3U2NCkpKQpzdnVpbnQ2NF90IHN2bWxzbGJfbGFuZShzdnVpbnQ2NF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc2x0X25fZjMyKSkpCnN2ZmxvYXQzMl90IHN2bWxzbHQoc3ZmbG9hdDMyX3QsIHN2ZmxvYXQxNl90LCBmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNsdF9uX3MzMikpKQpzdmludDMyX3Qgc3ZtbHNsdChzdmludDMyX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc2x0X25fczY0KSkpCnN2aW50NjRfdCBzdm1sc2x0KHN2aW50NjRfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzbHRfbl9zMTYpKSkKc3ZpbnQxNl90IHN2bWxzbHQoc3ZpbnQxNl90LCBzdmludDhfdCwgaW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzbHRfbl91MzIpKSkKc3Z1aW50MzJfdCBzdm1sc2x0KHN2dWludDMyX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzbHRfbl91NjQpKSkKc3Z1aW50NjRfdCBzdm1sc2x0KHN2dWludDY0X3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzbHRfbl91MTYpKSkKc3Z1aW50MTZfdCBzdm1sc2x0KHN2dWludDE2X3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc2x0X2YzMikpKQpzdmZsb2F0MzJfdCBzdm1sc2x0KHN2ZmxvYXQzMl90LCBzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNsdF9zMzIpKSkKc3ZpbnQzMl90IHN2bWxzbHQoc3ZpbnQzMl90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc2x0X3M2NCkpKQpzdmludDY0X3Qgc3ZtbHNsdChzdmludDY0X3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzbHRfczE2KSkpCnN2aW50MTZfdCBzdm1sc2x0KHN2aW50MTZfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzbHRfdTMyKSkpCnN2dWludDMyX3Qgc3ZtbHNsdChzdnVpbnQzMl90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzbHRfdTY0KSkpCnN2dWludDY0X3Qgc3ZtbHNsdChzdnVpbnQ2NF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzbHRfdTE2KSkpCnN2dWludDE2X3Qgc3ZtbHNsdChzdnVpbnQxNl90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc2x0X2xhbmVfZjMyKSkpCnN2ZmxvYXQzMl90IHN2bWxzbHRfbGFuZShzdmZsb2F0MzJfdCwgc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1sc2x0X2xhbmVfczMyKSkpCnN2aW50MzJfdCBzdm1sc2x0X2xhbmUoc3ZpbnQzMl90LCBzdmludDE2X3QsIHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNsdF9sYW5lX3M2NCkpKQpzdmludDY0X3Qgc3ZtbHNsdF9sYW5lKHN2aW50NjRfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bWxzbHRfbGFuZV91MzIpKSkKc3Z1aW50MzJfdCBzdm1sc2x0X2xhbmUoc3Z1aW50MzJfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtbHNsdF9sYW5lX3U2NCkpKQpzdnVpbnQ2NF90IHN2bWxzbHRfbGFuZShzdnVpbnQ2NF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1vdmxiX3MzMikpKQpzdmludDMyX3Qgc3Ztb3ZsYihzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztb3ZsYl9zNjQpKSkKc3ZpbnQ2NF90IHN2bW92bGIoc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bW92bGJfczE2KSkpCnN2aW50MTZfdCBzdm1vdmxiKHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bW92bGJfdTMyKSkpCnN2dWludDMyX3Qgc3Ztb3ZsYihzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bW92bGJfdTY0KSkpCnN2dWludDY0X3Qgc3Ztb3ZsYihzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bW92bGJfdTE2KSkpCnN2dWludDE2X3Qgc3Ztb3ZsYihzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Ztb3ZsdF9zMzIpKSkKc3ZpbnQzMl90IHN2bW92bHQoc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bW92bHRfczY0KSkpCnN2aW50NjRfdCBzdm1vdmx0KHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1vdmx0X3MxNikpKQpzdmludDE2X3Qgc3Ztb3ZsdChzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1vdmx0X3UzMikpKQpzdnVpbnQzMl90IHN2bW92bHQoc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1vdmx0X3U2NCkpKQpzdnVpbnQ2NF90IHN2bW92bHQoc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1vdmx0X3UxNikpKQpzdnVpbnQxNl90IHN2bW92bHQoc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsX2xhbmVfdTMyKSkpCnN2dWludDMyX3Qgc3ZtdWxfbGFuZShzdnVpbnQzMl90LCBzdnVpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bF9sYW5lX3U2NCkpKQpzdnVpbnQ2NF90IHN2bXVsX2xhbmUoc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfbGFuZV91MTYpKSkKc3Z1aW50MTZfdCBzdm11bF9sYW5lKHN2dWludDE2X3QsIHN2dWludDE2X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsX2xhbmVfczMyKSkpCnN2aW50MzJfdCBzdm11bF9sYW5lKHN2aW50MzJfdCwgc3ZpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bF9sYW5lX3M2NCkpKQpzdmludDY0X3Qgc3ZtdWxfbGFuZShzdmludDY0X3QsIHN2aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxfbGFuZV9zMTYpKSkKc3ZpbnQxNl90IHN2bXVsX2xhbmUoc3ZpbnQxNl90LCBzdmludDE2X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsbGJfbl9zMzIpKSkKc3ZpbnQzMl90IHN2bXVsbGIoc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsbGJfbl9zNjQpKSkKc3ZpbnQ2NF90IHN2bXVsbGIoc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsbGJfbl9zMTYpKSkKc3ZpbnQxNl90IHN2bXVsbGIoc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGxiX25fdTMyKSkpCnN2dWludDMyX3Qgc3ZtdWxsYihzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGxiX25fdTY0KSkpCnN2dWludDY0X3Qgc3ZtdWxsYihzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGxiX25fdTE2KSkpCnN2dWludDE2X3Qgc3ZtdWxsYihzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxsYl9zMzIpKSkKc3ZpbnQzMl90IHN2bXVsbGIoc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxsYl9zNjQpKSkKc3ZpbnQ2NF90IHN2bXVsbGIoc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxsYl9zMTYpKSkKc3ZpbnQxNl90IHN2bXVsbGIoc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsbGJfdTMyKSkpCnN2dWludDMyX3Qgc3ZtdWxsYihzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsbGJfdTY0KSkpCnN2dWludDY0X3Qgc3ZtdWxsYihzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsbGJfdTE2KSkpCnN2dWludDE2X3Qgc3ZtdWxsYihzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGxiX2xhbmVfczMyKSkpCnN2aW50MzJfdCBzdm11bGxiX2xhbmUoc3ZpbnQxNl90LCBzdmludDE2X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsbGJfbGFuZV9zNjQpKSkKc3ZpbnQ2NF90IHN2bXVsbGJfbGFuZShzdmludDMyX3QsIHN2aW50MzJfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxsYl9sYW5lX3UzMikpKQpzdnVpbnQzMl90IHN2bXVsbGJfbGFuZShzdnVpbnQxNl90LCBzdnVpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGxiX2xhbmVfdTY0KSkpCnN2dWludDY0X3Qgc3ZtdWxsYl9sYW5lKHN2dWludDMyX3QsIHN2dWludDMyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsbHRfbl9zMzIpKSkKc3ZpbnQzMl90IHN2bXVsbHQoc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsbHRfbl9zNjQpKSkKc3ZpbnQ2NF90IHN2bXVsbHQoc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsbHRfbl9zMTYpKSkKc3ZpbnQxNl90IHN2bXVsbHQoc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGx0X25fdTMyKSkpCnN2dWludDMyX3Qgc3ZtdWxsdChzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGx0X25fdTY0KSkpCnN2dWludDY0X3Qgc3ZtdWxsdChzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGx0X25fdTE2KSkpCnN2dWludDE2X3Qgc3ZtdWxsdChzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxsdF9zMzIpKSkKc3ZpbnQzMl90IHN2bXVsbHQoc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxsdF9zNjQpKSkKc3ZpbnQ2NF90IHN2bXVsbHQoc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxsdF9zMTYpKSkKc3ZpbnQxNl90IHN2bXVsbHQoc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsbHRfdTMyKSkpCnN2dWludDMyX3Qgc3ZtdWxsdChzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsbHRfdTY0KSkpCnN2dWludDY0X3Qgc3ZtdWxsdChzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsbHRfdTE2KSkpCnN2dWludDE2X3Qgc3ZtdWxsdChzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGx0X2xhbmVfczMyKSkpCnN2aW50MzJfdCBzdm11bGx0X2xhbmUoc3ZpbnQxNl90LCBzdmludDE2X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bXVsbHRfbGFuZV9zNjQpKSkKc3ZpbnQ2NF90IHN2bXVsbHRfbGFuZShzdmludDMyX3QsIHN2aW50MzJfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZtdWxsdF9sYW5lX3UzMikpKQpzdnVpbnQzMl90IHN2bXVsbHRfbGFuZShzdnVpbnQxNl90LCBzdnVpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm11bGx0X2xhbmVfdTY0KSkpCnN2dWludDY0X3Qgc3ZtdWxsdF9sYW5lKHN2dWludDMyX3QsIHN2dWludDMyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bmJzbF9uX3U4KSkpCnN2dWludDhfdCBzdm5ic2woc3Z1aW50OF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZuYnNsX25fdTMyKSkpCnN2dWludDMyX3Qgc3ZuYnNsKHN2dWludDMyX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bmJzbF9uX3U2NCkpKQpzdnVpbnQ2NF90IHN2bmJzbChzdnVpbnQ2NF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5ic2xfbl91MTYpKSkKc3Z1aW50MTZfdCBzdm5ic2woc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZuYnNsX25fczgpKSkKc3ZpbnQ4X3Qgc3ZuYnNsKHN2aW50OF90LCBzdmludDhfdCwgaW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bmJzbF9uX3MzMikpKQpzdmludDMyX3Qgc3ZuYnNsKHN2aW50MzJfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bmJzbF9uX3M2NCkpKQpzdmludDY0X3Qgc3ZuYnNsKHN2aW50NjRfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bmJzbF9uX3MxNikpKQpzdmludDE2X3Qgc3ZuYnNsKHN2aW50MTZfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bmJzbF91OCkpKQpzdnVpbnQ4X3Qgc3ZuYnNsKHN2dWludDhfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZuYnNsX3UzMikpKQpzdnVpbnQzMl90IHN2bmJzbChzdnVpbnQzMl90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bmJzbF91NjQpKSkKc3Z1aW50NjRfdCBzdm5ic2woc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5ic2xfdTE2KSkpCnN2dWludDE2X3Qgc3ZuYnNsKHN2dWludDE2X3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZuYnNsX3M4KSkpCnN2aW50OF90IHN2bmJzbChzdmludDhfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bmJzbF9zMzIpKSkKc3ZpbnQzMl90IHN2bmJzbChzdmludDMyX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bmJzbF9zNjQpKSkKc3ZpbnQ2NF90IHN2bmJzbChzdmludDY0X3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bmJzbF9zMTYpKSkKc3ZpbnQxNl90IHN2bmJzbChzdmludDE2X3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bm1hdGNoX3U4KSkpCnN2Ym9vbF90IHN2bm1hdGNoKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5tYXRjaF91MTYpKSkKc3Zib29sX3Qgc3ZubWF0Y2goc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZubWF0Y2hfczgpKSkKc3Zib29sX3Qgc3ZubWF0Y2goc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm5tYXRjaF9zMTYpKSkKc3Zib29sX3Qgc3ZubWF0Y2goc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cG11bF9uX3U4KSkpCnN2dWludDhfdCBzdnBtdWwoc3Z1aW50OF90LCB1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cG11bF91OCkpKQpzdnVpbnQ4X3Qgc3ZwbXVsKHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cG11bGxiX25fdTY0KSkpCnN2dWludDY0X3Qgc3ZwbXVsbGIoc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwbXVsbGJfbl91MTYpKSkKc3Z1aW50MTZfdCBzdnBtdWxsYihzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwbXVsbGJfdTY0KSkpCnN2dWludDY0X3Qgc3ZwbXVsbGIoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnBtdWxsYl91MTYpKSkKc3Z1aW50MTZfdCBzdnBtdWxsYihzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnBtdWxsYl9wYWlyX25fdTgpKSkKc3Z1aW50OF90IHN2cG11bGxiX3BhaXIoc3Z1aW50OF90LCB1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cG11bGxiX3BhaXJfbl91MzIpKSkKc3Z1aW50MzJfdCBzdnBtdWxsYl9wYWlyKHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cG11bGxiX3BhaXJfdTgpKSkKc3Z1aW50OF90IHN2cG11bGxiX3BhaXIoc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwbXVsbGJfcGFpcl91MzIpKSkKc3Z1aW50MzJfdCBzdnBtdWxsYl9wYWlyKHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwbXVsbHRfbl91NjQpKSkKc3Z1aW50NjRfdCBzdnBtdWxsdChzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnBtdWxsdF9uX3UxNikpKQpzdnVpbnQxNl90IHN2cG11bGx0KHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnBtdWxsdF91NjQpKSkKc3Z1aW50NjRfdCBzdnBtdWxsdChzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cG11bGx0X3UxNikpKQpzdnVpbnQxNl90IHN2cG11bGx0KHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cG11bGx0X3BhaXJfbl91OCkpKQpzdnVpbnQ4X3Qgc3ZwbXVsbHRfcGFpcihzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwbXVsbHRfcGFpcl9uX3UzMikpKQpzdnVpbnQzMl90IHN2cG11bGx0X3BhaXIoc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwbXVsbHRfcGFpcl91OCkpKQpzdnVpbnQ4X3Qgc3ZwbXVsbHRfcGFpcihzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnBtdWxsdF9wYWlyX3UzMikpKQpzdnVpbnQzMl90IHN2cG11bGx0X3BhaXIoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhYnNfczhfbSkpKQpzdmludDhfdCBzdnFhYnNfbShzdmludDhfdCwgc3Zib29sX3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFic19zMzJfbSkpKQpzdmludDMyX3Qgc3ZxYWJzX20oc3ZpbnQzMl90LCBzdmJvb2xfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFic19zNjRfbSkpKQpzdmludDY0X3Qgc3ZxYWJzX20oc3ZpbnQ2NF90LCBzdmJvb2xfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFic19zMTZfbSkpKQpzdmludDE2X3Qgc3ZxYWJzX20oc3ZpbnQxNl90LCBzdmJvb2xfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFic19zOF94KSkpCnN2aW50OF90IHN2cWFic194KHN2Ym9vbF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhYnNfczMyX3gpKSkKc3ZpbnQzMl90IHN2cWFic194KHN2Ym9vbF90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWJzX3M2NF94KSkpCnN2aW50NjRfdCBzdnFhYnNfeChzdmJvb2xfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFic19zMTZfeCkpKQpzdmludDE2X3Qgc3ZxYWJzX3goc3Zib29sX3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhYnNfczhfeikpKQpzdmludDhfdCBzdnFhYnNfeihzdmJvb2xfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWJzX3MzMl96KSkpCnN2aW50MzJfdCBzdnFhYnNfeihzdmJvb2xfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFic19zNjRfeikpKQpzdmludDY0X3Qgc3ZxYWJzX3ooc3Zib29sX3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhYnNfczE2X3opKSkKc3ZpbnQxNl90IHN2cWFic196KHN2Ym9vbF90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWRkX25fczhfbSkpKQpzdmludDhfdCBzdnFhZGRfbShzdmJvb2xfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhZGRfbl9zMzJfbSkpKQpzdmludDMyX3Qgc3ZxYWRkX20oc3Zib29sX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhZGRfbl9zNjRfbSkpKQpzdmludDY0X3Qgc3ZxYWRkX20oc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhZGRfbl9zMTZfbSkpKQpzdmludDE2X3Qgc3ZxYWRkX20oc3Zib29sX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhZGRfbl9zOF94KSkpCnN2aW50OF90IHN2cWFkZF94KHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFkZF9uX3MzMl94KSkpCnN2aW50MzJfdCBzdnFhZGRfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFkZF9uX3M2NF94KSkpCnN2aW50NjRfdCBzdnFhZGRfeChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFkZF9uX3MxNl94KSkpCnN2aW50MTZfdCBzdnFhZGRfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFkZF9uX3M4X3opKSkKc3ZpbnQ4X3Qgc3ZxYWRkX3ooc3Zib29sX3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWRkX25fczMyX3opKSkKc3ZpbnQzMl90IHN2cWFkZF96KHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWRkX25fczY0X3opKSkKc3ZpbnQ2NF90IHN2cWFkZF96KHN2Ym9vbF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWRkX25fczE2X3opKSkKc3ZpbnQxNl90IHN2cWFkZF96KHN2Ym9vbF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWRkX25fdThfbSkpKQpzdnVpbnQ4X3Qgc3ZxYWRkX20oc3Zib29sX3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhZGRfbl91MzJfbSkpKQpzdnVpbnQzMl90IHN2cWFkZF9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhZGRfbl91NjRfbSkpKQpzdnVpbnQ2NF90IHN2cWFkZF9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhZGRfbl91MTZfbSkpKQpzdnVpbnQxNl90IHN2cWFkZF9tKHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhZGRfbl91OF94KSkpCnN2dWludDhfdCBzdnFhZGRfeChzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFkZF9uX3UzMl94KSkpCnN2dWludDMyX3Qgc3ZxYWRkX3goc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFkZF9uX3U2NF94KSkpCnN2dWludDY0X3Qgc3ZxYWRkX3goc3Zib29sX3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFkZF9uX3UxNl94KSkpCnN2dWludDE2X3Qgc3ZxYWRkX3goc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFkZF9uX3U4X3opKSkKc3Z1aW50OF90IHN2cWFkZF96KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWRkX25fdTMyX3opKSkKc3Z1aW50MzJfdCBzdnFhZGRfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWRkX25fdTY0X3opKSkKc3Z1aW50NjRfdCBzdnFhZGRfeihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWRkX25fdTE2X3opKSkKc3Z1aW50MTZfdCBzdnFhZGRfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWRkX3M4X20pKSkKc3ZpbnQ4X3Qgc3ZxYWRkX20oc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhZGRfczMyX20pKSkKc3ZpbnQzMl90IHN2cWFkZF9tKHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhZGRfczY0X20pKSkKc3ZpbnQ2NF90IHN2cWFkZF9tKHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhZGRfczE2X20pKSkKc3ZpbnQxNl90IHN2cWFkZF9tKHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhZGRfczhfeCkpKQpzdmludDhfdCBzdnFhZGRfeChzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFkZF9zMzJfeCkpKQpzdmludDMyX3Qgc3ZxYWRkX3goc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFkZF9zNjRfeCkpKQpzdmludDY0X3Qgc3ZxYWRkX3goc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFkZF9zMTZfeCkpKQpzdmludDE2X3Qgc3ZxYWRkX3goc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFkZF9zOF96KSkpCnN2aW50OF90IHN2cWFkZF96KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWRkX3MzMl96KSkpCnN2aW50MzJfdCBzdnFhZGRfeihzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWRkX3M2NF96KSkpCnN2aW50NjRfdCBzdnFhZGRfeihzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWRkX3MxNl96KSkpCnN2aW50MTZfdCBzdnFhZGRfeihzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWRkX3U4X20pKSkKc3Z1aW50OF90IHN2cWFkZF9tKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhZGRfdTMyX20pKSkKc3Z1aW50MzJfdCBzdnFhZGRfbShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhZGRfdTY0X20pKSkKc3Z1aW50NjRfdCBzdnFhZGRfbShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhZGRfdTE2X20pKSkKc3Z1aW50MTZfdCBzdnFhZGRfbShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFhZGRfdThfeCkpKQpzdnVpbnQ4X3Qgc3ZxYWRkX3goc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFkZF91MzJfeCkpKQpzdnVpbnQzMl90IHN2cWFkZF94KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFkZF91NjRfeCkpKQpzdnVpbnQ2NF90IHN2cWFkZF94KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFkZF91MTZfeCkpKQpzdnVpbnQxNl90IHN2cWFkZF94KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWFkZF91OF96KSkpCnN2dWludDhfdCBzdnFhZGRfeihzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWRkX3UzMl96KSkpCnN2dWludDMyX3Qgc3ZxYWRkX3ooc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWRkX3U2NF96KSkpCnN2dWludDY0X3Qgc3ZxYWRkX3ooc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxYWRkX3UxNl96KSkpCnN2dWludDE2X3Qgc3ZxYWRkX3ooc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxY2FkZF9zOCkpKQpzdmludDhfdCBzdnFjYWRkKHN2aW50OF90LCBzdmludDhfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxY2FkZF9zMzIpKSkKc3ZpbnQzMl90IHN2cWNhZGQoc3ZpbnQzMl90LCBzdmludDMyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWNhZGRfczY0KSkpCnN2aW50NjRfdCBzdnFjYWRkKHN2aW50NjRfdCwgc3ZpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFjYWRkX3MxNikpKQpzdmludDE2X3Qgc3ZxY2FkZChzdmludDE2X3QsIHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZG1sYWxiX25fczMyKSkpCnN2aW50MzJfdCBzdnFkbWxhbGIoc3ZpbnQzMl90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZG1sYWxiX25fczY0KSkpCnN2aW50NjRfdCBzdnFkbWxhbGIoc3ZpbnQ2NF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZG1sYWxiX25fczE2KSkpCnN2aW50MTZfdCBzdnFkbWxhbGIoc3ZpbnQxNl90LCBzdmludDhfdCwgaW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRtbGFsYl9zMzIpKSkKc3ZpbnQzMl90IHN2cWRtbGFsYihzdmludDMyX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRtbGFsYl9zNjQpKSkKc3ZpbnQ2NF90IHN2cWRtbGFsYihzdmludDY0X3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRtbGFsYl9zMTYpKSkKc3ZpbnQxNl90IHN2cWRtbGFsYihzdmludDE2X3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbWxhbGJfbGFuZV9zMzIpKSkKc3ZpbnQzMl90IHN2cWRtbGFsYl9sYW5lKHN2aW50MzJfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRtbGFsYl9sYW5lX3M2NCkpKQpzdmludDY0X3Qgc3ZxZG1sYWxiX2xhbmUoc3ZpbnQ2NF90LCBzdmludDMyX3QsIHN2aW50MzJfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZG1sYWxidF9uX3MzMikpKQpzdmludDMyX3Qgc3ZxZG1sYWxidChzdmludDMyX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbWxhbGJ0X25fczY0KSkpCnN2aW50NjRfdCBzdnFkbWxhbGJ0KHN2aW50NjRfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRtbGFsYnRfbl9zMTYpKSkKc3ZpbnQxNl90IHN2cWRtbGFsYnQoc3ZpbnQxNl90LCBzdmludDhfdCwgaW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRtbGFsYnRfczMyKSkpCnN2aW50MzJfdCBzdnFkbWxhbGJ0KHN2aW50MzJfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZG1sYWxidF9zNjQpKSkKc3ZpbnQ2NF90IHN2cWRtbGFsYnQoc3ZpbnQ2NF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbWxhbGJ0X3MxNikpKQpzdmludDE2X3Qgc3ZxZG1sYWxidChzdmludDE2X3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbWxhbHRfbl9zMzIpKSkKc3ZpbnQzMl90IHN2cWRtbGFsdChzdmludDMyX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbWxhbHRfbl9zNjQpKSkKc3ZpbnQ2NF90IHN2cWRtbGFsdChzdmludDY0X3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbWxhbHRfbl9zMTYpKSkKc3ZpbnQxNl90IHN2cWRtbGFsdChzdmludDE2X3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZG1sYWx0X3MzMikpKQpzdmludDMyX3Qgc3ZxZG1sYWx0KHN2aW50MzJfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZG1sYWx0X3M2NCkpKQpzdmludDY0X3Qgc3ZxZG1sYWx0KHN2aW50NjRfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZG1sYWx0X3MxNikpKQpzdmludDE2X3Qgc3ZxZG1sYWx0KHN2aW50MTZfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRtbGFsdF9sYW5lX3MzMikpKQpzdmludDMyX3Qgc3ZxZG1sYWx0X2xhbmUoc3ZpbnQzMl90LCBzdmludDE2X3QsIHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZG1sYWx0X2xhbmVfczY0KSkpCnN2aW50NjRfdCBzdnFkbWxhbHRfbGFuZShzdmludDY0X3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbWxzbGJfbl9zMzIpKSkKc3ZpbnQzMl90IHN2cWRtbHNsYihzdmludDMyX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbWxzbGJfbl9zNjQpKSkKc3ZpbnQ2NF90IHN2cWRtbHNsYihzdmludDY0X3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbWxzbGJfbl9zMTYpKSkKc3ZpbnQxNl90IHN2cWRtbHNsYihzdmludDE2X3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZG1sc2xiX3MzMikpKQpzdmludDMyX3Qgc3ZxZG1sc2xiKHN2aW50MzJfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZG1sc2xiX3M2NCkpKQpzdmludDY0X3Qgc3ZxZG1sc2xiKHN2aW50NjRfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZG1sc2xiX3MxNikpKQpzdmludDE2X3Qgc3ZxZG1sc2xiKHN2aW50MTZfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRtbHNsYl9sYW5lX3MzMikpKQpzdmludDMyX3Qgc3ZxZG1sc2xiX2xhbmUoc3ZpbnQzMl90LCBzdmludDE2X3QsIHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZG1sc2xiX2xhbmVfczY0KSkpCnN2aW50NjRfdCBzdnFkbWxzbGJfbGFuZShzdmludDY0X3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbWxzbGJ0X25fczMyKSkpCnN2aW50MzJfdCBzdnFkbWxzbGJ0KHN2aW50MzJfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRtbHNsYnRfbl9zNjQpKSkKc3ZpbnQ2NF90IHN2cWRtbHNsYnQoc3ZpbnQ2NF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZG1sc2xidF9uX3MxNikpKQpzdmludDE2X3Qgc3ZxZG1sc2xidChzdmludDE2X3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZG1sc2xidF9zMzIpKSkKc3ZpbnQzMl90IHN2cWRtbHNsYnQoc3ZpbnQzMl90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbWxzbGJ0X3M2NCkpKQpzdmludDY0X3Qgc3ZxZG1sc2xidChzdmludDY0X3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRtbHNsYnRfczE2KSkpCnN2aW50MTZfdCBzdnFkbWxzbGJ0KHN2aW50MTZfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRtbHNsdF9uX3MzMikpKQpzdmludDMyX3Qgc3ZxZG1sc2x0KHN2aW50MzJfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRtbHNsdF9uX3M2NCkpKQpzdmludDY0X3Qgc3ZxZG1sc2x0KHN2aW50NjRfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRtbHNsdF9uX3MxNikpKQpzdmludDE2X3Qgc3ZxZG1sc2x0KHN2aW50MTZfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbWxzbHRfczMyKSkpCnN2aW50MzJfdCBzdnFkbWxzbHQoc3ZpbnQzMl90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbWxzbHRfczY0KSkpCnN2aW50NjRfdCBzdnFkbWxzbHQoc3ZpbnQ2NF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbWxzbHRfczE2KSkpCnN2aW50MTZfdCBzdnFkbWxzbHQoc3ZpbnQxNl90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZG1sc2x0X2xhbmVfczMyKSkpCnN2aW50MzJfdCBzdnFkbWxzbHRfbGFuZShzdmludDMyX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbWxzbHRfbGFuZV9zNjQpKSkKc3ZpbnQ2NF90IHN2cWRtbHNsdF9sYW5lKHN2aW50NjRfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRtdWxoX25fczgpKSkKc3ZpbnQ4X3Qgc3ZxZG11bGgoc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbXVsaF9uX3MzMikpKQpzdmludDMyX3Qgc3ZxZG11bGgoc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRtdWxoX25fczY0KSkpCnN2aW50NjRfdCBzdnFkbXVsaChzdmludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZG11bGhfbl9zMTYpKSkKc3ZpbnQxNl90IHN2cWRtdWxoKHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbXVsaF9zOCkpKQpzdmludDhfdCBzdnFkbXVsaChzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZG11bGhfczMyKSkpCnN2aW50MzJfdCBzdnFkbXVsaChzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbXVsaF9zNjQpKSkKc3ZpbnQ2NF90IHN2cWRtdWxoKHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRtdWxoX3MxNikpKQpzdmludDE2X3Qgc3ZxZG11bGgoc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZG11bGhfbGFuZV9zMzIpKSkKc3ZpbnQzMl90IHN2cWRtdWxoX2xhbmUoc3ZpbnQzMl90LCBzdmludDMyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRtdWxoX2xhbmVfczY0KSkpCnN2aW50NjRfdCBzdnFkbXVsaF9sYW5lKHN2aW50NjRfdCwgc3ZpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbXVsaF9sYW5lX3MxNikpKQpzdmludDE2X3Qgc3ZxZG11bGhfbGFuZShzdmludDE2X3QsIHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZG11bGxiX25fczMyKSkpCnN2aW50MzJfdCBzdnFkbXVsbGIoc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRtdWxsYl9uX3M2NCkpKQpzdmludDY0X3Qgc3ZxZG11bGxiKHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbXVsbGJfbl9zMTYpKSkKc3ZpbnQxNl90IHN2cWRtdWxsYihzdmludDhfdCwgaW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRtdWxsYl9zMzIpKSkKc3ZpbnQzMl90IHN2cWRtdWxsYihzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbXVsbGJfczY0KSkpCnN2aW50NjRfdCBzdnFkbXVsbGIoc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZG11bGxiX3MxNikpKQpzdmludDE2X3Qgc3ZxZG11bGxiKHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbXVsbGJfbGFuZV9zMzIpKSkKc3ZpbnQzMl90IHN2cWRtdWxsYl9sYW5lKHN2aW50MTZfdCwgc3ZpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbXVsbGJfbGFuZV9zNjQpKSkKc3ZpbnQ2NF90IHN2cWRtdWxsYl9sYW5lKHN2aW50MzJfdCwgc3ZpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbXVsbHRfbl9zMzIpKSkKc3ZpbnQzMl90IHN2cWRtdWxsdChzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZG11bGx0X25fczY0KSkpCnN2aW50NjRfdCBzdnFkbXVsbHQoc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRtdWxsdF9uX3MxNikpKQpzdmludDE2X3Qgc3ZxZG11bGx0KHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxZG11bGx0X3MzMikpKQpzdmludDMyX3Qgc3ZxZG11bGx0KHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRtdWxsdF9zNjQpKSkKc3ZpbnQ2NF90IHN2cWRtdWxsdChzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFkbXVsbHRfczE2KSkpCnN2aW50MTZfdCBzdnFkbXVsbHQoc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRtdWxsdF9sYW5lX3MzMikpKQpzdmludDMyX3Qgc3ZxZG11bGx0X2xhbmUoc3ZpbnQxNl90LCBzdmludDE2X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cWRtdWxsdF9sYW5lX3M2NCkpKQpzdmludDY0X3Qgc3ZxZG11bGx0X2xhbmUoc3ZpbnQzMl90LCBzdmludDMyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cW5lZ19zOF9tKSkpCnN2aW50OF90IHN2cW5lZ19tKHN2aW50OF90LCBzdmJvb2xfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxbmVnX3MzMl9tKSkpCnN2aW50MzJfdCBzdnFuZWdfbShzdmludDMyX3QsIHN2Ym9vbF90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxbmVnX3M2NF9tKSkpCnN2aW50NjRfdCBzdnFuZWdfbShzdmludDY0X3QsIHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxbmVnX3MxNl9tKSkpCnN2aW50MTZfdCBzdnFuZWdfbShzdmludDE2X3QsIHN2Ym9vbF90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxbmVnX3M4X3gpKSkKc3ZpbnQ4X3Qgc3ZxbmVnX3goc3Zib29sX3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cW5lZ19zMzJfeCkpKQpzdmludDMyX3Qgc3ZxbmVnX3goc3Zib29sX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFuZWdfczY0X3gpKSkKc3ZpbnQ2NF90IHN2cW5lZ194KHN2Ym9vbF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxbmVnX3MxNl94KSkpCnN2aW50MTZfdCBzdnFuZWdfeChzdmJvb2xfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cW5lZ19zOF96KSkpCnN2aW50OF90IHN2cW5lZ196KHN2Ym9vbF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFuZWdfczMyX3opKSkKc3ZpbnQzMl90IHN2cW5lZ196KHN2Ym9vbF90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxbmVnX3M2NF96KSkpCnN2aW50NjRfdCBzdnFuZWdfeihzdmJvb2xfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cW5lZ19zMTZfeikpKQpzdmludDE2X3Qgc3ZxbmVnX3ooc3Zib29sX3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyZGNtbGFoX3M4KSkpCnN2aW50OF90IHN2cXJkY21sYWgoc3ZpbnQ4X3QsIHN2aW50OF90LCBzdmludDhfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcmRjbWxhaF9zMzIpKSkKc3ZpbnQzMl90IHN2cXJkY21sYWgoc3ZpbnQzMl90LCBzdmludDMyX3QsIHN2aW50MzJfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcmRjbWxhaF9zNjQpKSkKc3ZpbnQ2NF90IHN2cXJkY21sYWgoc3ZpbnQ2NF90LCBzdmludDY0X3QsIHN2aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcmRjbWxhaF9zMTYpKSkKc3ZpbnQxNl90IHN2cXJkY21sYWgoc3ZpbnQxNl90LCBzdmludDE2X3QsIHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcmRjbWxhaF9sYW5lX3MzMikpKQpzdmludDMyX3Qgc3ZxcmRjbWxhaF9sYW5lKHN2aW50MzJfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QsIHVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyZGNtbGFoX2xhbmVfczE2KSkpCnN2aW50MTZfdCBzdnFyZGNtbGFoX2xhbmUoc3ZpbnQxNl90LCBzdmludDE2X3QsIHN2aW50MTZfdCwgdWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJkbWxhaF9uX3M4KSkpCnN2aW50OF90IHN2cXJkbWxhaChzdmludDhfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyZG1sYWhfbl9zMzIpKSkKc3ZpbnQzMl90IHN2cXJkbWxhaChzdmludDMyX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyZG1sYWhfbl9zNjQpKSkKc3ZpbnQ2NF90IHN2cXJkbWxhaChzdmludDY0X3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyZG1sYWhfbl9zMTYpKSkKc3ZpbnQxNl90IHN2cXJkbWxhaChzdmludDE2X3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyZG1sYWhfczgpKSkKc3ZpbnQ4X3Qgc3ZxcmRtbGFoKHN2aW50OF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcmRtbGFoX3MzMikpKQpzdmludDMyX3Qgc3ZxcmRtbGFoKHN2aW50MzJfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcmRtbGFoX3M2NCkpKQpzdmludDY0X3Qgc3ZxcmRtbGFoKHN2aW50NjRfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcmRtbGFoX3MxNikpKQpzdmludDE2X3Qgc3ZxcmRtbGFoKHN2aW50MTZfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcmRtbGFoX2xhbmVfczMyKSkpCnN2aW50MzJfdCBzdnFyZG1sYWhfbGFuZShzdmludDMyX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyZG1sYWhfbGFuZV9zNjQpKSkKc3ZpbnQ2NF90IHN2cXJkbWxhaF9sYW5lKHN2aW50NjRfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJkbWxhaF9sYW5lX3MxNikpKQpzdmludDE2X3Qgc3ZxcmRtbGFoX2xhbmUoc3ZpbnQxNl90LCBzdmludDE2X3QsIHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcmRtbHNoX25fczgpKSkKc3ZpbnQ4X3Qgc3ZxcmRtbHNoKHN2aW50OF90LCBzdmludDhfdCwgaW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJkbWxzaF9uX3MzMikpKQpzdmludDMyX3Qgc3ZxcmRtbHNoKHN2aW50MzJfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJkbWxzaF9uX3M2NCkpKQpzdmludDY0X3Qgc3ZxcmRtbHNoKHN2aW50NjRfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJkbWxzaF9uX3MxNikpKQpzdmludDE2X3Qgc3ZxcmRtbHNoKHN2aW50MTZfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJkbWxzaF9zOCkpKQpzdmludDhfdCBzdnFyZG1sc2goc3ZpbnQ4X3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyZG1sc2hfczMyKSkpCnN2aW50MzJfdCBzdnFyZG1sc2goc3ZpbnQzMl90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyZG1sc2hfczY0KSkpCnN2aW50NjRfdCBzdnFyZG1sc2goc3ZpbnQ2NF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyZG1sc2hfczE2KSkpCnN2aW50MTZfdCBzdnFyZG1sc2goc3ZpbnQxNl90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyZG1sc2hfbGFuZV9zMzIpKSkKc3ZpbnQzMl90IHN2cXJkbWxzaF9sYW5lKHN2aW50MzJfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJkbWxzaF9sYW5lX3M2NCkpKQpzdmludDY0X3Qgc3ZxcmRtbHNoX2xhbmUoc3ZpbnQ2NF90LCBzdmludDY0X3QsIHN2aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcmRtbHNoX2xhbmVfczE2KSkpCnN2aW50MTZfdCBzdnFyZG1sc2hfbGFuZShzdmludDE2X3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyZG11bGhfbl9zOCkpKQpzdmludDhfdCBzdnFyZG11bGgoc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyZG11bGhfbl9zMzIpKSkKc3ZpbnQzMl90IHN2cXJkbXVsaChzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcmRtdWxoX25fczY0KSkpCnN2aW50NjRfdCBzdnFyZG11bGgoc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJkbXVsaF9uX3MxNikpKQpzdmludDE2X3Qgc3ZxcmRtdWxoKHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyZG11bGhfczgpKSkKc3ZpbnQ4X3Qgc3ZxcmRtdWxoKHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyZG11bGhfczMyKSkpCnN2aW50MzJfdCBzdnFyZG11bGgoc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcmRtdWxoX3M2NCkpKQpzdmludDY0X3Qgc3ZxcmRtdWxoKHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJkbXVsaF9zMTYpKSkKc3ZpbnQxNl90IHN2cXJkbXVsaChzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyZG11bGhfbGFuZV9zMzIpKSkKc3ZpbnQzMl90IHN2cXJkbXVsaF9sYW5lKHN2aW50MzJfdCwgc3ZpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyZG11bGhfbGFuZV9zNjQpKSkKc3ZpbnQ2NF90IHN2cXJkbXVsaF9sYW5lKHN2aW50NjRfdCwgc3ZpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyZG11bGhfbGFuZV9zMTYpKSkKc3ZpbnQxNl90IHN2cXJkbXVsaF9sYW5lKHN2aW50MTZfdCwgc3ZpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hsX25fczhfbSkpKQpzdmludDhfdCBzdnFyc2hsX20oc3Zib29sX3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcnNobF9uX3MzMl9tKSkpCnN2aW50MzJfdCBzdnFyc2hsX20oc3Zib29sX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hsX25fczY0X20pKSkKc3ZpbnQ2NF90IHN2cXJzaGxfbShzdmJvb2xfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJzaGxfbl9zMTZfbSkpKQpzdmludDE2X3Qgc3ZxcnNobF9tKHN2Ym9vbF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcnNobF9uX3M4X3gpKSkKc3ZpbnQ4X3Qgc3ZxcnNobF94KHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJzaGxfbl9zMzJfeCkpKQpzdmludDMyX3Qgc3ZxcnNobF94KHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcnNobF9uX3M2NF94KSkpCnN2aW50NjRfdCBzdnFyc2hsX3goc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hsX25fczE2X3gpKSkKc3ZpbnQxNl90IHN2cXJzaGxfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJzaGxfbl9zOF96KSkpCnN2aW50OF90IHN2cXJzaGxfeihzdmJvb2xfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hsX25fczMyX3opKSkKc3ZpbnQzMl90IHN2cXJzaGxfeihzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJzaGxfbl9zNjRfeikpKQpzdmludDY0X3Qgc3ZxcnNobF96KHN2Ym9vbF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcnNobF9uX3MxNl96KSkpCnN2aW50MTZfdCBzdnFyc2hsX3ooc3Zib29sX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hsX25fdThfbSkpKQpzdnVpbnQ4X3Qgc3ZxcnNobF9tKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hsX25fdTMyX20pKSkKc3Z1aW50MzJfdCBzdnFyc2hsX20oc3Zib29sX3QsIHN2dWludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcnNobF9uX3U2NF9tKSkpCnN2dWludDY0X3Qgc3ZxcnNobF9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJzaGxfbl91MTZfbSkpKQpzdnVpbnQxNl90IHN2cXJzaGxfbShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hsX25fdThfeCkpKQpzdnVpbnQ4X3Qgc3ZxcnNobF94KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hsX25fdTMyX3gpKSkKc3Z1aW50MzJfdCBzdnFyc2hsX3goc3Zib29sX3QsIHN2dWludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcnNobF9uX3U2NF94KSkpCnN2dWludDY0X3Qgc3ZxcnNobF94KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJzaGxfbl91MTZfeCkpKQpzdnVpbnQxNl90IHN2cXJzaGxfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hsX25fdThfeikpKQpzdnVpbnQ4X3Qgc3ZxcnNobF96KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hsX25fdTMyX3opKSkKc3Z1aW50MzJfdCBzdnFyc2hsX3ooc3Zib29sX3QsIHN2dWludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcnNobF9uX3U2NF96KSkpCnN2dWludDY0X3Qgc3ZxcnNobF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJzaGxfbl91MTZfeikpKQpzdnVpbnQxNl90IHN2cXJzaGxfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hsX3M4X20pKSkKc3ZpbnQ4X3Qgc3ZxcnNobF9tKHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcnNobF9zMzJfbSkpKQpzdmludDMyX3Qgc3ZxcnNobF9tKHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hsX3M2NF9tKSkpCnN2aW50NjRfdCBzdnFyc2hsX20oc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJzaGxfczE2X20pKSkKc3ZpbnQxNl90IHN2cXJzaGxfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcnNobF9zOF94KSkpCnN2aW50OF90IHN2cXJzaGxfeChzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJzaGxfczMyX3gpKSkKc3ZpbnQzMl90IHN2cXJzaGxfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcnNobF9zNjRfeCkpKQpzdmludDY0X3Qgc3ZxcnNobF94KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hsX3MxNl94KSkpCnN2aW50MTZfdCBzdnFyc2hsX3goc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJzaGxfczhfeikpKQpzdmludDhfdCBzdnFyc2hsX3ooc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hsX3MzMl96KSkpCnN2aW50MzJfdCBzdnFyc2hsX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJzaGxfczY0X3opKSkKc3ZpbnQ2NF90IHN2cXJzaGxfeihzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcnNobF9zMTZfeikpKQpzdmludDE2X3Qgc3ZxcnNobF96KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hsX3U4X20pKSkKc3Z1aW50OF90IHN2cXJzaGxfbShzdmJvb2xfdCwgc3Z1aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hsX3UzMl9tKSkpCnN2dWludDMyX3Qgc3ZxcnNobF9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcnNobF91NjRfbSkpKQpzdnVpbnQ2NF90IHN2cXJzaGxfbShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJzaGxfdTE2X20pKSkKc3Z1aW50MTZfdCBzdnFyc2hsX20oc3Zib29sX3QsIHN2dWludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hsX3U4X3gpKSkKc3Z1aW50OF90IHN2cXJzaGxfeChzdmJvb2xfdCwgc3Z1aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hsX3UzMl94KSkpCnN2dWludDMyX3Qgc3ZxcnNobF94KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcnNobF91NjRfeCkpKQpzdnVpbnQ2NF90IHN2cXJzaGxfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJzaGxfdTE2X3gpKSkKc3Z1aW50MTZfdCBzdnFyc2hsX3goc3Zib29sX3QsIHN2dWludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hsX3U4X3opKSkKc3Z1aW50OF90IHN2cXJzaGxfeihzdmJvb2xfdCwgc3Z1aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hsX3UzMl96KSkpCnN2dWludDMyX3Qgc3ZxcnNobF96KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcnNobF91NjRfeikpKQpzdnVpbnQ2NF90IHN2cXJzaGxfeihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJzaGxfdTE2X3opKSkKc3Z1aW50MTZfdCBzdnFyc2hsX3ooc3Zib29sX3QsIHN2dWludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hybmJfbl9zMzIpKSkKc3ZpbnQxNl90IHN2cXJzaHJuYihzdmludDMyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJzaHJuYl9uX3M2NCkpKQpzdmludDMyX3Qgc3ZxcnNocm5iKHN2aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcnNocm5iX25fczE2KSkpCnN2aW50OF90IHN2cXJzaHJuYihzdmludDE2X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJzaHJuYl9uX3UzMikpKQpzdnVpbnQxNl90IHN2cXJzaHJuYihzdnVpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hybmJfbl91NjQpKSkKc3Z1aW50MzJfdCBzdnFyc2hybmIoc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcnNocm5iX25fdTE2KSkpCnN2dWludDhfdCBzdnFyc2hybmIoc3Z1aW50MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcnNocm50X25fczMyKSkpCnN2aW50MTZfdCBzdnFyc2hybnQoc3ZpbnQxNl90LCBzdmludDMyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJzaHJudF9uX3M2NCkpKQpzdmludDMyX3Qgc3ZxcnNocm50KHN2aW50MzJfdCwgc3ZpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hybnRfbl9zMTYpKSkKc3ZpbnQ4X3Qgc3ZxcnNocm50KHN2aW50OF90LCBzdmludDE2X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJzaHJudF9uX3UzMikpKQpzdnVpbnQxNl90IHN2cXJzaHJudChzdnVpbnQxNl90LCBzdnVpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hybnRfbl91NjQpKSkKc3Z1aW50MzJfdCBzdnFyc2hybnQoc3Z1aW50MzJfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcnNocm50X25fdTE2KSkpCnN2dWludDhfdCBzdnFyc2hybnQoc3Z1aW50OF90LCBzdnVpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hydW5iX25fczMyKSkpCnN2dWludDE2X3Qgc3ZxcnNocnVuYihzdmludDMyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJzaHJ1bmJfbl9zNjQpKSkKc3Z1aW50MzJfdCBzdnFyc2hydW5iKHN2aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcnNocnVuYl9uX3MxNikpKQpzdnVpbnQ4X3Qgc3ZxcnNocnVuYihzdmludDE2X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXJzaHJ1bnRfbl9zMzIpKSkKc3Z1aW50MTZfdCBzdnFyc2hydW50KHN2dWludDE2X3QsIHN2aW50MzJfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxcnNocnVudF9uX3M2NCkpKQpzdnVpbnQzMl90IHN2cXJzaHJ1bnQoc3Z1aW50MzJfdCwgc3ZpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFyc2hydW50X25fczE2KSkpCnN2dWludDhfdCBzdnFyc2hydW50KHN2dWludDhfdCwgc3ZpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaGxfbl9zOF9tKSkpCnN2aW50OF90IHN2cXNobF9tKHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNobF9uX3MzMl9tKSkpCnN2aW50MzJfdCBzdnFzaGxfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNobF9uX3M2NF9tKSkpCnN2aW50NjRfdCBzdnFzaGxfbShzdmJvb2xfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNobF9uX3MxNl9tKSkpCnN2aW50MTZfdCBzdnFzaGxfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNobF9uX3M4X3gpKSkKc3ZpbnQ4X3Qgc3Zxc2hsX3goc3Zib29sX3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hsX25fczMyX3gpKSkKc3ZpbnQzMl90IHN2cXNobF94KHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hsX25fczY0X3gpKSkKc3ZpbnQ2NF90IHN2cXNobF94KHN2Ym9vbF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hsX25fczE2X3gpKSkKc3ZpbnQxNl90IHN2cXNobF94KHN2Ym9vbF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hsX25fczhfeikpKQpzdmludDhfdCBzdnFzaGxfeihzdmJvb2xfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaGxfbl9zMzJfeikpKQpzdmludDMyX3Qgc3Zxc2hsX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaGxfbl9zNjRfeikpKQpzdmludDY0X3Qgc3Zxc2hsX3ooc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaGxfbl9zMTZfeikpKQpzdmludDE2X3Qgc3Zxc2hsX3ooc3Zib29sX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaGxfbl91OF9tKSkpCnN2dWludDhfdCBzdnFzaGxfbShzdmJvb2xfdCwgc3Z1aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hsX25fdTMyX20pKSkKc3Z1aW50MzJfdCBzdnFzaGxfbShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaGxfbl91NjRfbSkpKQpzdnVpbnQ2NF90IHN2cXNobF9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNobF9uX3UxNl9tKSkpCnN2dWludDE2X3Qgc3Zxc2hsX20oc3Zib29sX3QsIHN2dWludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hsX25fdThfeCkpKQpzdnVpbnQ4X3Qgc3Zxc2hsX3goc3Zib29sX3QsIHN2dWludDhfdCwgaW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNobF9uX3UzMl94KSkpCnN2dWludDMyX3Qgc3Zxc2hsX3goc3Zib29sX3QsIHN2dWludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hsX25fdTY0X3gpKSkKc3Z1aW50NjRfdCBzdnFzaGxfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaGxfbl91MTZfeCkpKQpzdnVpbnQxNl90IHN2cXNobF94KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNobF9uX3U4X3opKSkKc3Z1aW50OF90IHN2cXNobF96KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaGxfbl91MzJfeikpKQpzdnVpbnQzMl90IHN2cXNobF96KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNobF9uX3U2NF96KSkpCnN2dWludDY0X3Qgc3Zxc2hsX3ooc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hsX25fdTE2X3opKSkKc3Z1aW50MTZfdCBzdnFzaGxfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaGxfczhfbSkpKQpzdmludDhfdCBzdnFzaGxfbShzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNobF9zMzJfbSkpKQpzdmludDMyX3Qgc3Zxc2hsX20oc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNobF9zNjRfbSkpKQpzdmludDY0X3Qgc3Zxc2hsX20oc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNobF9zMTZfbSkpKQpzdmludDE2X3Qgc3Zxc2hsX20oc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNobF9zOF94KSkpCnN2aW50OF90IHN2cXNobF94KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hsX3MzMl94KSkpCnN2aW50MzJfdCBzdnFzaGxfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hsX3M2NF94KSkpCnN2aW50NjRfdCBzdnFzaGxfeChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hsX3MxNl94KSkpCnN2aW50MTZfdCBzdnFzaGxfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hsX3M4X3opKSkKc3ZpbnQ4X3Qgc3Zxc2hsX3ooc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaGxfczMyX3opKSkKc3ZpbnQzMl90IHN2cXNobF96KHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaGxfczY0X3opKSkKc3ZpbnQ2NF90IHN2cXNobF96KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaGxfczE2X3opKSkKc3ZpbnQxNl90IHN2cXNobF96KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaGxfdThfbSkpKQpzdnVpbnQ4X3Qgc3Zxc2hsX20oc3Zib29sX3QsIHN2dWludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hsX3UzMl9tKSkpCnN2dWludDMyX3Qgc3Zxc2hsX20oc3Zib29sX3QsIHN2dWludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaGxfdTY0X20pKSkKc3Z1aW50NjRfdCBzdnFzaGxfbShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNobF91MTZfbSkpKQpzdnVpbnQxNl90IHN2cXNobF9tKHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hsX3U4X3gpKSkKc3Z1aW50OF90IHN2cXNobF94KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNobF91MzJfeCkpKQpzdnVpbnQzMl90IHN2cXNobF94KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hsX3U2NF94KSkpCnN2dWludDY0X3Qgc3Zxc2hsX3goc3Zib29sX3QsIHN2dWludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaGxfdTE2X3gpKSkKc3Z1aW50MTZfdCBzdnFzaGxfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNobF91OF96KSkpCnN2dWludDhfdCBzdnFzaGxfeihzdmJvb2xfdCwgc3Z1aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaGxfdTMyX3opKSkKc3Z1aW50MzJfdCBzdnFzaGxfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNobF91NjRfeikpKQpzdnVpbnQ2NF90IHN2cXNobF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hsX3UxNl96KSkpCnN2dWludDE2X3Qgc3Zxc2hsX3ooc3Zib29sX3QsIHN2dWludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaGx1X25fczhfbSkpKQpzdnVpbnQ4X3Qgc3Zxc2hsdV9tKHN2Ym9vbF90LCBzdmludDhfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hsdV9uX3MzMl9tKSkpCnN2dWludDMyX3Qgc3Zxc2hsdV9tKHN2Ym9vbF90LCBzdmludDMyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNobHVfbl9zNjRfbSkpKQpzdnVpbnQ2NF90IHN2cXNobHVfbShzdmJvb2xfdCwgc3ZpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaGx1X25fczE2X20pKSkKc3Z1aW50MTZfdCBzdnFzaGx1X20oc3Zib29sX3QsIHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hsdV9uX3M4X3gpKSkKc3Z1aW50OF90IHN2cXNobHVfeChzdmJvb2xfdCwgc3ZpbnQ4X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNobHVfbl9zMzJfeCkpKQpzdnVpbnQzMl90IHN2cXNobHVfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaGx1X25fczY0X3gpKSkKc3Z1aW50NjRfdCBzdnFzaGx1X3goc3Zib29sX3QsIHN2aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hsdV9uX3MxNl94KSkpCnN2dWludDE2X3Qgc3Zxc2hsdV94KHN2Ym9vbF90LCBzdmludDE2X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNobHVfbl9zOF96KSkpCnN2dWludDhfdCBzdnFzaGx1X3ooc3Zib29sX3QsIHN2aW50OF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaGx1X25fczMyX3opKSkKc3Z1aW50MzJfdCBzdnFzaGx1X3ooc3Zib29sX3QsIHN2aW50MzJfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hsdV9uX3M2NF96KSkpCnN2dWludDY0X3Qgc3Zxc2hsdV96KHN2Ym9vbF90LCBzdmludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNobHVfbl9zMTZfeikpKQpzdnVpbnQxNl90IHN2cXNobHVfeihzdmJvb2xfdCwgc3ZpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaHJuYl9uX3MzMikpKQpzdmludDE2X3Qgc3Zxc2hybmIoc3ZpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaHJuYl9uX3M2NCkpKQpzdmludDMyX3Qgc3Zxc2hybmIoc3ZpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaHJuYl9uX3MxNikpKQpzdmludDhfdCBzdnFzaHJuYihzdmludDE2X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNocm5iX25fdTMyKSkpCnN2dWludDE2X3Qgc3Zxc2hybmIoc3Z1aW50MzJfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hybmJfbl91NjQpKSkKc3Z1aW50MzJfdCBzdnFzaHJuYihzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaHJuYl9uX3UxNikpKQpzdnVpbnQ4X3Qgc3Zxc2hybmIoc3Z1aW50MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hybnRfbl9zMzIpKSkKc3ZpbnQxNl90IHN2cXNocm50KHN2aW50MTZfdCwgc3ZpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaHJudF9uX3M2NCkpKQpzdmludDMyX3Qgc3Zxc2hybnQoc3ZpbnQzMl90LCBzdmludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNocm50X25fczE2KSkpCnN2aW50OF90IHN2cXNocm50KHN2aW50OF90LCBzdmludDE2X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNocm50X25fdTMyKSkpCnN2dWludDE2X3Qgc3Zxc2hybnQoc3Z1aW50MTZfdCwgc3Z1aW50MzJfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc2hybnRfbl91NjQpKSkKc3Z1aW50MzJfdCBzdnFzaHJudChzdnVpbnQzMl90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaHJudF9uX3UxNikpKQpzdnVpbnQ4X3Qgc3Zxc2hybnQoc3Z1aW50OF90LCBzdnVpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaHJ1bmJfbl9zMzIpKSkKc3Z1aW50MTZfdCBzdnFzaHJ1bmIoc3ZpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaHJ1bmJfbl9zNjQpKSkKc3Z1aW50MzJfdCBzdnFzaHJ1bmIoc3ZpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzaHJ1bmJfbl9zMTYpKSkKc3Z1aW50OF90IHN2cXNocnVuYihzdmludDE2X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNocnVudF9uX3MzMikpKQpzdnVpbnQxNl90IHN2cXNocnVudChzdnVpbnQxNl90LCBzdmludDMyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNocnVudF9uX3M2NCkpKQpzdnVpbnQzMl90IHN2cXNocnVudChzdnVpbnQzMl90LCBzdmludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXNocnVudF9uX3MxNikpKQpzdnVpbnQ4X3Qgc3Zxc2hydW50KHN2dWludDhfdCwgc3ZpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJfbl9zOF9tKSkpCnN2aW50OF90IHN2cXN1Yl9tKHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1Yl9uX3MzMl9tKSkpCnN2aW50MzJfdCBzdnFzdWJfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1Yl9uX3M2NF9tKSkpCnN2aW50NjRfdCBzdnFzdWJfbShzdmJvb2xfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1Yl9uX3MxNl9tKSkpCnN2aW50MTZfdCBzdnFzdWJfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1Yl9uX3M4X3gpKSkKc3ZpbnQ4X3Qgc3Zxc3ViX3goc3Zib29sX3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3ViX25fczMyX3gpKSkKc3ZpbnQzMl90IHN2cXN1Yl94KHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3ViX25fczY0X3gpKSkKc3ZpbnQ2NF90IHN2cXN1Yl94KHN2Ym9vbF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3ViX25fczE2X3gpKSkKc3ZpbnQxNl90IHN2cXN1Yl94KHN2Ym9vbF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3ViX25fczhfeikpKQpzdmludDhfdCBzdnFzdWJfeihzdmJvb2xfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJfbl9zMzJfeikpKQpzdmludDMyX3Qgc3Zxc3ViX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJfbl9zNjRfeikpKQpzdmludDY0X3Qgc3Zxc3ViX3ooc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJfbl9zMTZfeikpKQpzdmludDE2X3Qgc3Zxc3ViX3ooc3Zib29sX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJfbl91OF9tKSkpCnN2dWludDhfdCBzdnFzdWJfbShzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1Yl9uX3UzMl9tKSkpCnN2dWludDMyX3Qgc3Zxc3ViX20oc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1Yl9uX3U2NF9tKSkpCnN2dWludDY0X3Qgc3Zxc3ViX20oc3Zib29sX3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1Yl9uX3UxNl9tKSkpCnN2dWludDE2X3Qgc3Zxc3ViX20oc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1Yl9uX3U4X3gpKSkKc3Z1aW50OF90IHN2cXN1Yl94KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3ViX25fdTMyX3gpKSkKc3Z1aW50MzJfdCBzdnFzdWJfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3ViX25fdTY0X3gpKSkKc3Z1aW50NjRfdCBzdnFzdWJfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3ViX25fdTE2X3gpKSkKc3Z1aW50MTZfdCBzdnFzdWJfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3ViX25fdThfeikpKQpzdnVpbnQ4X3Qgc3Zxc3ViX3ooc3Zib29sX3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJfbl91MzJfeikpKQpzdnVpbnQzMl90IHN2cXN1Yl96KHN2Ym9vbF90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJfbl91NjRfeikpKQpzdnVpbnQ2NF90IHN2cXN1Yl96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJfbl91MTZfeikpKQpzdnVpbnQxNl90IHN2cXN1Yl96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJfczhfbSkpKQpzdmludDhfdCBzdnFzdWJfbShzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1Yl9zMzJfbSkpKQpzdmludDMyX3Qgc3Zxc3ViX20oc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1Yl9zNjRfbSkpKQpzdmludDY0X3Qgc3Zxc3ViX20oc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1Yl9zMTZfbSkpKQpzdmludDE2X3Qgc3Zxc3ViX20oc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1Yl9zOF94KSkpCnN2aW50OF90IHN2cXN1Yl94KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3ViX3MzMl94KSkpCnN2aW50MzJfdCBzdnFzdWJfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3ViX3M2NF94KSkpCnN2aW50NjRfdCBzdnFzdWJfeChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3ViX3MxNl94KSkpCnN2aW50MTZfdCBzdnFzdWJfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3ViX3M4X3opKSkKc3ZpbnQ4X3Qgc3Zxc3ViX3ooc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJfczMyX3opKSkKc3ZpbnQzMl90IHN2cXN1Yl96KHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJfczY0X3opKSkKc3ZpbnQ2NF90IHN2cXN1Yl96KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJfczE2X3opKSkKc3ZpbnQxNl90IHN2cXN1Yl96KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJfdThfbSkpKQpzdnVpbnQ4X3Qgc3Zxc3ViX20oc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1Yl91MzJfbSkpKQpzdnVpbnQzMl90IHN2cXN1Yl9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1Yl91NjRfbSkpKQpzdnVpbnQ2NF90IHN2cXN1Yl9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1Yl91MTZfbSkpKQpzdnVpbnQxNl90IHN2cXN1Yl9tKHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1Yl91OF94KSkpCnN2dWludDhfdCBzdnFzdWJfeChzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3ViX3UzMl94KSkpCnN2dWludDMyX3Qgc3Zxc3ViX3goc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3ViX3U2NF94KSkpCnN2dWludDY0X3Qgc3Zxc3ViX3goc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3ViX3UxNl94KSkpCnN2dWludDE2X3Qgc3Zxc3ViX3goc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3ViX3U4X3opKSkKc3Z1aW50OF90IHN2cXN1Yl96KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJfdTMyX3opKSkKc3Z1aW50MzJfdCBzdnFzdWJfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJfdTY0X3opKSkKc3Z1aW50NjRfdCBzdnFzdWJfeihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJfdTE2X3opKSkKc3Z1aW50MTZfdCBzdnFzdWJfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJyX25fczhfbSkpKQpzdmludDhfdCBzdnFzdWJyX20oc3Zib29sX3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3Vicl9uX3MzMl9tKSkpCnN2aW50MzJfdCBzdnFzdWJyX20oc3Zib29sX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJyX25fczY0X20pKSkKc3ZpbnQ2NF90IHN2cXN1YnJfbShzdmJvb2xfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1YnJfbl9zMTZfbSkpKQpzdmludDE2X3Qgc3Zxc3Vicl9tKHN2Ym9vbF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3Vicl9uX3M4X3gpKSkKc3ZpbnQ4X3Qgc3Zxc3Vicl94KHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1YnJfbl9zMzJfeCkpKQpzdmludDMyX3Qgc3Zxc3Vicl94KHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3Vicl9uX3M2NF94KSkpCnN2aW50NjRfdCBzdnFzdWJyX3goc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJyX25fczE2X3gpKSkKc3ZpbnQxNl90IHN2cXN1YnJfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1YnJfbl9zOF96KSkpCnN2aW50OF90IHN2cXN1YnJfeihzdmJvb2xfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJyX25fczMyX3opKSkKc3ZpbnQzMl90IHN2cXN1YnJfeihzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1YnJfbl9zNjRfeikpKQpzdmludDY0X3Qgc3Zxc3Vicl96KHN2Ym9vbF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3Vicl9uX3MxNl96KSkpCnN2aW50MTZfdCBzdnFzdWJyX3ooc3Zib29sX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJyX25fdThfbSkpKQpzdnVpbnQ4X3Qgc3Zxc3Vicl9tKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3Vicl9uX3UzMl9tKSkpCnN2dWludDMyX3Qgc3Zxc3Vicl9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJyX25fdTY0X20pKSkKc3Z1aW50NjRfdCBzdnFzdWJyX20oc3Zib29sX3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1YnJfbl91MTZfbSkpKQpzdnVpbnQxNl90IHN2cXN1YnJfbShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3Vicl9uX3U4X3gpKSkKc3Z1aW50OF90IHN2cXN1YnJfeChzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1YnJfbl91MzJfeCkpKQpzdnVpbnQzMl90IHN2cXN1YnJfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3Vicl9uX3U2NF94KSkpCnN2dWludDY0X3Qgc3Zxc3Vicl94KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJyX25fdTE2X3gpKSkKc3Z1aW50MTZfdCBzdnFzdWJyX3goc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1YnJfbl91OF96KSkpCnN2dWludDhfdCBzdnFzdWJyX3ooc3Zib29sX3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJyX25fdTMyX3opKSkKc3Z1aW50MzJfdCBzdnFzdWJyX3ooc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1YnJfbl91NjRfeikpKQpzdnVpbnQ2NF90IHN2cXN1YnJfeihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3Vicl9uX3UxNl96KSkpCnN2dWludDE2X3Qgc3Zxc3Vicl96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJyX3M4X20pKSkKc3ZpbnQ4X3Qgc3Zxc3Vicl9tKHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3Vicl9zMzJfbSkpKQpzdmludDMyX3Qgc3Zxc3Vicl9tKHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJyX3M2NF9tKSkpCnN2aW50NjRfdCBzdnFzdWJyX20oc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1YnJfczE2X20pKSkKc3ZpbnQxNl90IHN2cXN1YnJfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3Vicl9zOF94KSkpCnN2aW50OF90IHN2cXN1YnJfeChzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1YnJfczMyX3gpKSkKc3ZpbnQzMl90IHN2cXN1YnJfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3Vicl9zNjRfeCkpKQpzdmludDY0X3Qgc3Zxc3Vicl94KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJyX3MxNl94KSkpCnN2aW50MTZfdCBzdnFzdWJyX3goc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1YnJfczhfeikpKQpzdmludDhfdCBzdnFzdWJyX3ooc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJyX3MzMl96KSkpCnN2aW50MzJfdCBzdnFzdWJyX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1YnJfczY0X3opKSkKc3ZpbnQ2NF90IHN2cXN1YnJfeihzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3Vicl9zMTZfeikpKQpzdmludDE2X3Qgc3Zxc3Vicl96KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJyX3U4X20pKSkKc3Z1aW50OF90IHN2cXN1YnJfbShzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3Vicl91MzJfbSkpKQpzdnVpbnQzMl90IHN2cXN1YnJfbShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJyX3U2NF9tKSkpCnN2dWludDY0X3Qgc3Zxc3Vicl9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1YnJfdTE2X20pKSkKc3Z1aW50MTZfdCBzdnFzdWJyX20oc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3Vicl91OF94KSkpCnN2dWludDhfdCBzdnFzdWJyX3goc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1YnJfdTMyX3gpKSkKc3Z1aW50MzJfdCBzdnFzdWJyX3goc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3Vicl91NjRfeCkpKQpzdnVpbnQ2NF90IHN2cXN1YnJfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJyX3UxNl94KSkpCnN2dWludDE2X3Qgc3Zxc3Vicl94KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1YnJfdThfeikpKQpzdnVpbnQ4X3Qgc3Zxc3Vicl96KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnFzdWJyX3UzMl96KSkpCnN2dWludDMyX3Qgc3Zxc3Vicl96KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXN1YnJfdTY0X3opKSkKc3Z1aW50NjRfdCBzdnFzdWJyX3ooc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zxc3Vicl91MTZfeikpKQpzdnVpbnQxNl90IHN2cXN1YnJfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnF4dG5iX3MzMikpKQpzdmludDE2X3Qgc3ZxeHRuYihzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxeHRuYl9zNjQpKSkKc3ZpbnQzMl90IHN2cXh0bmIoc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXh0bmJfczE2KSkpCnN2aW50OF90IHN2cXh0bmIoc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXh0bmJfdTMyKSkpCnN2dWludDE2X3Qgc3ZxeHRuYihzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXh0bmJfdTY0KSkpCnN2dWludDMyX3Qgc3ZxeHRuYihzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXh0bmJfdTE2KSkpCnN2dWludDhfdCBzdnF4dG5iKHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxeHRudF9zMzIpKSkKc3ZpbnQxNl90IHN2cXh0bnQoc3ZpbnQxNl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxeHRudF9zNjQpKSkKc3ZpbnQzMl90IHN2cXh0bnQoc3ZpbnQzMl90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxeHRudF9zMTYpKSkKc3ZpbnQ4X3Qgc3ZxeHRudChzdmludDhfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXh0bnRfdTMyKSkpCnN2dWludDE2X3Qgc3ZxeHRudChzdnVpbnQxNl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXh0bnRfdTY0KSkpCnN2dWludDMyX3Qgc3ZxeHRudChzdnVpbnQzMl90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXh0bnRfdTE2KSkpCnN2dWludDhfdCBzdnF4dG50KHN2dWludDhfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnF4dHVuYl9zMzIpKSkKc3Z1aW50MTZfdCBzdnF4dHVuYihzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxeHR1bmJfczY0KSkpCnN2dWludDMyX3Qgc3ZxeHR1bmIoc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXh0dW5iX3MxNikpKQpzdnVpbnQ4X3Qgc3ZxeHR1bmIoc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cXh0dW50X3MzMikpKQpzdnVpbnQxNl90IHN2cXh0dW50KHN2dWludDE2X3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnF4dHVudF9zNjQpKSkKc3Z1aW50MzJfdCBzdnF4dHVudChzdnVpbnQzMl90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZxeHR1bnRfczE2KSkpCnN2dWludDhfdCBzdnF4dHVudChzdnVpbnQ4X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJhZGRobmJfbl91MzIpKSkKc3Z1aW50MTZfdCBzdnJhZGRobmIoc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyYWRkaG5iX25fdTY0KSkpCnN2dWludDMyX3Qgc3ZyYWRkaG5iKHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmFkZGhuYl9uX3UxNikpKQpzdnVpbnQ4X3Qgc3ZyYWRkaG5iKHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmFkZGhuYl9uX3MzMikpKQpzdmludDE2X3Qgc3ZyYWRkaG5iKHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJhZGRobmJfbl9zNjQpKSkKc3ZpbnQzMl90IHN2cmFkZGhuYihzdmludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyYWRkaG5iX25fczE2KSkpCnN2aW50OF90IHN2cmFkZGhuYihzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyYWRkaG5iX3UzMikpKQpzdnVpbnQxNl90IHN2cmFkZGhuYihzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmFkZGhuYl91NjQpKSkKc3Z1aW50MzJfdCBzdnJhZGRobmIoc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJhZGRobmJfdTE2KSkpCnN2dWludDhfdCBzdnJhZGRobmIoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJhZGRobmJfczMyKSkpCnN2aW50MTZfdCBzdnJhZGRobmIoc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyYWRkaG5iX3M2NCkpKQpzdmludDMyX3Qgc3ZyYWRkaG5iKHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmFkZGhuYl9zMTYpKSkKc3ZpbnQ4X3Qgc3ZyYWRkaG5iKHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmFkZGhudF9uX3UzMikpKQpzdnVpbnQxNl90IHN2cmFkZGhudChzdnVpbnQxNl90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJhZGRobnRfbl91NjQpKSkKc3Z1aW50MzJfdCBzdnJhZGRobnQoc3Z1aW50MzJfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyYWRkaG50X25fdTE2KSkpCnN2dWludDhfdCBzdnJhZGRobnQoc3Z1aW50OF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJhZGRobnRfbl9zMzIpKSkKc3ZpbnQxNl90IHN2cmFkZGhudChzdmludDE2X3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJhZGRobnRfbl9zNjQpKSkKc3ZpbnQzMl90IHN2cmFkZGhudChzdmludDMyX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJhZGRobnRfbl9zMTYpKSkKc3ZpbnQ4X3Qgc3ZyYWRkaG50KHN2aW50OF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyYWRkaG50X3UzMikpKQpzdnVpbnQxNl90IHN2cmFkZGhudChzdnVpbnQxNl90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmFkZGhudF91NjQpKSkKc3Z1aW50MzJfdCBzdnJhZGRobnQoc3Z1aW50MzJfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJhZGRobnRfdTE2KSkpCnN2dWludDhfdCBzdnJhZGRobnQoc3Z1aW50OF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmFkZGhudF9zMzIpKSkKc3ZpbnQxNl90IHN2cmFkZGhudChzdmludDE2X3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmFkZGhudF9zNjQpKSkKc3ZpbnQzMl90IHN2cmFkZGhudChzdmludDMyX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmFkZGhudF9zMTYpKSkKc3ZpbnQ4X3Qgc3ZyYWRkaG50KHN2aW50OF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJlY3BlX3UzMl9tKSkpCnN2dWludDMyX3Qgc3ZyZWNwZV9tKHN2dWludDMyX3QsIHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmVjcGVfdTMyX3gpKSkKc3Z1aW50MzJfdCBzdnJlY3BlX3goc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyZWNwZV91MzJfeikpKQpzdnVpbnQzMl90IHN2cmVjcGVfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJoYWRkX25fczhfbSkpKQpzdmludDhfdCBzdnJoYWRkX20oc3Zib29sX3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaGFkZF9uX3MzMl9tKSkpCnN2aW50MzJfdCBzdnJoYWRkX20oc3Zib29sX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJoYWRkX25fczY0X20pKSkKc3ZpbnQ2NF90IHN2cmhhZGRfbShzdmJvb2xfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmhhZGRfbl9zMTZfbSkpKQpzdmludDE2X3Qgc3ZyaGFkZF9tKHN2Ym9vbF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaGFkZF9uX3M4X3gpKSkKc3ZpbnQ4X3Qgc3ZyaGFkZF94KHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmhhZGRfbl9zMzJfeCkpKQpzdmludDMyX3Qgc3ZyaGFkZF94KHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaGFkZF9uX3M2NF94KSkpCnN2aW50NjRfdCBzdnJoYWRkX3goc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJoYWRkX25fczE2X3gpKSkKc3ZpbnQxNl90IHN2cmhhZGRfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmhhZGRfbl9zOF96KSkpCnN2aW50OF90IHN2cmhhZGRfeihzdmJvb2xfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJoYWRkX25fczMyX3opKSkKc3ZpbnQzMl90IHN2cmhhZGRfeihzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmhhZGRfbl9zNjRfeikpKQpzdmludDY0X3Qgc3ZyaGFkZF96KHN2Ym9vbF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaGFkZF9uX3MxNl96KSkpCnN2aW50MTZfdCBzdnJoYWRkX3ooc3Zib29sX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJoYWRkX25fdThfbSkpKQpzdnVpbnQ4X3Qgc3ZyaGFkZF9tKHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaGFkZF9uX3UzMl9tKSkpCnN2dWludDMyX3Qgc3ZyaGFkZF9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJoYWRkX25fdTY0X20pKSkKc3Z1aW50NjRfdCBzdnJoYWRkX20oc3Zib29sX3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmhhZGRfbl91MTZfbSkpKQpzdnVpbnQxNl90IHN2cmhhZGRfbShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaGFkZF9uX3U4X3gpKSkKc3Z1aW50OF90IHN2cmhhZGRfeChzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmhhZGRfbl91MzJfeCkpKQpzdnVpbnQzMl90IHN2cmhhZGRfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaGFkZF9uX3U2NF94KSkpCnN2dWludDY0X3Qgc3ZyaGFkZF94KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJoYWRkX25fdTE2X3gpKSkKc3Z1aW50MTZfdCBzdnJoYWRkX3goc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmhhZGRfbl91OF96KSkpCnN2dWludDhfdCBzdnJoYWRkX3ooc3Zib29sX3QsIHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJoYWRkX25fdTMyX3opKSkKc3Z1aW50MzJfdCBzdnJoYWRkX3ooc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmhhZGRfbl91NjRfeikpKQpzdnVpbnQ2NF90IHN2cmhhZGRfeihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaGFkZF9uX3UxNl96KSkpCnN2dWludDE2X3Qgc3ZyaGFkZF96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJoYWRkX3M4X20pKSkKc3ZpbnQ4X3Qgc3ZyaGFkZF9tKHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaGFkZF9zMzJfbSkpKQpzdmludDMyX3Qgc3ZyaGFkZF9tKHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJoYWRkX3M2NF9tKSkpCnN2aW50NjRfdCBzdnJoYWRkX20oc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmhhZGRfczE2X20pKSkKc3ZpbnQxNl90IHN2cmhhZGRfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaGFkZF9zOF94KSkpCnN2aW50OF90IHN2cmhhZGRfeChzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmhhZGRfczMyX3gpKSkKc3ZpbnQzMl90IHN2cmhhZGRfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaGFkZF9zNjRfeCkpKQpzdmludDY0X3Qgc3ZyaGFkZF94KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJoYWRkX3MxNl94KSkpCnN2aW50MTZfdCBzdnJoYWRkX3goc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmhhZGRfczhfeikpKQpzdmludDhfdCBzdnJoYWRkX3ooc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJoYWRkX3MzMl96KSkpCnN2aW50MzJfdCBzdnJoYWRkX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmhhZGRfczY0X3opKSkKc3ZpbnQ2NF90IHN2cmhhZGRfeihzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaGFkZF9zMTZfeikpKQpzdmludDE2X3Qgc3ZyaGFkZF96KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJoYWRkX3U4X20pKSkKc3Z1aW50OF90IHN2cmhhZGRfbShzdmJvb2xfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaGFkZF91MzJfbSkpKQpzdnVpbnQzMl90IHN2cmhhZGRfbShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJoYWRkX3U2NF9tKSkpCnN2dWludDY0X3Qgc3ZyaGFkZF9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmhhZGRfdTE2X20pKSkKc3Z1aW50MTZfdCBzdnJoYWRkX20oc3Zib29sX3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaGFkZF91OF94KSkpCnN2dWludDhfdCBzdnJoYWRkX3goc3Zib29sX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmhhZGRfdTMyX3gpKSkKc3Z1aW50MzJfdCBzdnJoYWRkX3goc3Zib29sX3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaGFkZF91NjRfeCkpKQpzdnVpbnQ2NF90IHN2cmhhZGRfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJoYWRkX3UxNl94KSkpCnN2dWludDE2X3Qgc3ZyaGFkZF94KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmhhZGRfdThfeikpKQpzdnVpbnQ4X3Qgc3ZyaGFkZF96KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJoYWRkX3UzMl96KSkpCnN2dWludDMyX3Qgc3ZyaGFkZF96KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmhhZGRfdTY0X3opKSkKc3Z1aW50NjRfdCBzdnJoYWRkX3ooc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyaGFkZF91MTZfeikpKQpzdnVpbnQxNl90IHN2cmhhZGRfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaGxfbl9zOF9tKSkpCnN2aW50OF90IHN2cnNobF9tKHN2Ym9vbF90LCBzdmludDhfdCwgaW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNobF9uX3MzMl9tKSkpCnN2aW50MzJfdCBzdnJzaGxfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNobF9uX3M2NF9tKSkpCnN2aW50NjRfdCBzdnJzaGxfbShzdmJvb2xfdCwgc3ZpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNobF9uX3MxNl9tKSkpCnN2aW50MTZfdCBzdnJzaGxfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNobF9uX3M4X3gpKSkKc3ZpbnQ4X3Qgc3Zyc2hsX3goc3Zib29sX3QsIHN2aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hsX25fczMyX3gpKSkKc3ZpbnQzMl90IHN2cnNobF94KHN2Ym9vbF90LCBzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hsX25fczY0X3gpKSkKc3ZpbnQ2NF90IHN2cnNobF94KHN2Ym9vbF90LCBzdmludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hsX25fczE2X3gpKSkKc3ZpbnQxNl90IHN2cnNobF94KHN2Ym9vbF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hsX25fczhfeikpKQpzdmludDhfdCBzdnJzaGxfeihzdmJvb2xfdCwgc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaGxfbl9zMzJfeikpKQpzdmludDMyX3Qgc3Zyc2hsX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaGxfbl9zNjRfeikpKQpzdmludDY0X3Qgc3Zyc2hsX3ooc3Zib29sX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaGxfbl9zMTZfeikpKQpzdmludDE2X3Qgc3Zyc2hsX3ooc3Zib29sX3QsIHN2aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaGxfbl91OF9tKSkpCnN2dWludDhfdCBzdnJzaGxfbShzdmJvb2xfdCwgc3Z1aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hsX25fdTMyX20pKSkKc3Z1aW50MzJfdCBzdnJzaGxfbShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaGxfbl91NjRfbSkpKQpzdnVpbnQ2NF90IHN2cnNobF9tKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNobF9uX3UxNl9tKSkpCnN2dWludDE2X3Qgc3Zyc2hsX20oc3Zib29sX3QsIHN2dWludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hsX25fdThfeCkpKQpzdnVpbnQ4X3Qgc3Zyc2hsX3goc3Zib29sX3QsIHN2dWludDhfdCwgaW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNobF9uX3UzMl94KSkpCnN2dWludDMyX3Qgc3Zyc2hsX3goc3Zib29sX3QsIHN2dWludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hsX25fdTY0X3gpKSkKc3Z1aW50NjRfdCBzdnJzaGxfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaGxfbl91MTZfeCkpKQpzdnVpbnQxNl90IHN2cnNobF94KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNobF9uX3U4X3opKSkKc3Z1aW50OF90IHN2cnNobF96KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaGxfbl91MzJfeikpKQpzdnVpbnQzMl90IHN2cnNobF96KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNobF9uX3U2NF96KSkpCnN2dWludDY0X3Qgc3Zyc2hsX3ooc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hsX25fdTE2X3opKSkKc3Z1aW50MTZfdCBzdnJzaGxfeihzdmJvb2xfdCwgc3Z1aW50MTZfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaGxfczhfbSkpKQpzdmludDhfdCBzdnJzaGxfbShzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNobF9zMzJfbSkpKQpzdmludDMyX3Qgc3Zyc2hsX20oc3Zib29sX3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNobF9zNjRfbSkpKQpzdmludDY0X3Qgc3Zyc2hsX20oc3Zib29sX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNobF9zMTZfbSkpKQpzdmludDE2X3Qgc3Zyc2hsX20oc3Zib29sX3QsIHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNobF9zOF94KSkpCnN2aW50OF90IHN2cnNobF94KHN2Ym9vbF90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hsX3MzMl94KSkpCnN2aW50MzJfdCBzdnJzaGxfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hsX3M2NF94KSkpCnN2aW50NjRfdCBzdnJzaGxfeChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hsX3MxNl94KSkpCnN2aW50MTZfdCBzdnJzaGxfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hsX3M4X3opKSkKc3ZpbnQ4X3Qgc3Zyc2hsX3ooc3Zib29sX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaGxfczMyX3opKSkKc3ZpbnQzMl90IHN2cnNobF96KHN2Ym9vbF90LCBzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaGxfczY0X3opKSkKc3ZpbnQ2NF90IHN2cnNobF96KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaGxfczE2X3opKSkKc3ZpbnQxNl90IHN2cnNobF96KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaGxfdThfbSkpKQpzdnVpbnQ4X3Qgc3Zyc2hsX20oc3Zib29sX3QsIHN2dWludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hsX3UzMl9tKSkpCnN2dWludDMyX3Qgc3Zyc2hsX20oc3Zib29sX3QsIHN2dWludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaGxfdTY0X20pKSkKc3Z1aW50NjRfdCBzdnJzaGxfbShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNobF91MTZfbSkpKQpzdnVpbnQxNl90IHN2cnNobF9tKHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hsX3U4X3gpKSkKc3Z1aW50OF90IHN2cnNobF94KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNobF91MzJfeCkpKQpzdnVpbnQzMl90IHN2cnNobF94KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hsX3U2NF94KSkpCnN2dWludDY0X3Qgc3Zyc2hsX3goc3Zib29sX3QsIHN2dWludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaGxfdTE2X3gpKSkKc3Z1aW50MTZfdCBzdnJzaGxfeChzdmJvb2xfdCwgc3Z1aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNobF91OF96KSkpCnN2dWludDhfdCBzdnJzaGxfeihzdmJvb2xfdCwgc3Z1aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaGxfdTMyX3opKSkKc3Z1aW50MzJfdCBzdnJzaGxfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNobF91NjRfeikpKQpzdnVpbnQ2NF90IHN2cnNobF96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hsX3UxNl96KSkpCnN2dWludDE2X3Qgc3Zyc2hsX3ooc3Zib29sX3QsIHN2dWludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaHJfbl9zOF9tKSkpCnN2aW50OF90IHN2cnNocl9tKHN2Ym9vbF90LCBzdmludDhfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hyX25fczMyX20pKSkKc3ZpbnQzMl90IHN2cnNocl9tKHN2Ym9vbF90LCBzdmludDMyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNocl9uX3M2NF9tKSkpCnN2aW50NjRfdCBzdnJzaHJfbShzdmJvb2xfdCwgc3ZpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaHJfbl9zMTZfbSkpKQpzdmludDE2X3Qgc3Zyc2hyX20oc3Zib29sX3QsIHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hyX25fdThfbSkpKQpzdnVpbnQ4X3Qgc3Zyc2hyX20oc3Zib29sX3QsIHN2dWludDhfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hyX25fdTMyX20pKSkKc3Z1aW50MzJfdCBzdnJzaHJfbShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hyX25fdTY0X20pKSkKc3Z1aW50NjRfdCBzdnJzaHJfbShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hyX25fdTE2X20pKSkKc3Z1aW50MTZfdCBzdnJzaHJfbShzdmJvb2xfdCwgc3Z1aW50MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hyX25fczhfeCkpKQpzdmludDhfdCBzdnJzaHJfeChzdmJvb2xfdCwgc3ZpbnQ4X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNocl9uX3MzMl94KSkpCnN2aW50MzJfdCBzdnJzaHJfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaHJfbl9zNjRfeCkpKQpzdmludDY0X3Qgc3Zyc2hyX3goc3Zib29sX3QsIHN2aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hyX25fczE2X3gpKSkKc3ZpbnQxNl90IHN2cnNocl94KHN2Ym9vbF90LCBzdmludDE2X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNocl9uX3U4X3gpKSkKc3Z1aW50OF90IHN2cnNocl94KHN2Ym9vbF90LCBzdnVpbnQ4X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNocl9uX3UzMl94KSkpCnN2dWludDMyX3Qgc3Zyc2hyX3goc3Zib29sX3QsIHN2dWludDMyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNocl9uX3U2NF94KSkpCnN2dWludDY0X3Qgc3Zyc2hyX3goc3Zib29sX3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNocl9uX3UxNl94KSkpCnN2dWludDE2X3Qgc3Zyc2hyX3goc3Zib29sX3QsIHN2dWludDE2X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNocl9uX3M4X3opKSkKc3ZpbnQ4X3Qgc3Zyc2hyX3ooc3Zib29sX3QsIHN2aW50OF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaHJfbl9zMzJfeikpKQpzdmludDMyX3Qgc3Zyc2hyX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hyX25fczY0X3opKSkKc3ZpbnQ2NF90IHN2cnNocl96KHN2Ym9vbF90LCBzdmludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNocl9uX3MxNl96KSkpCnN2aW50MTZfdCBzdnJzaHJfeihzdmJvb2xfdCwgc3ZpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaHJfbl91OF96KSkpCnN2dWludDhfdCBzdnJzaHJfeihzdmJvb2xfdCwgc3Z1aW50OF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaHJfbl91MzJfeikpKQpzdnVpbnQzMl90IHN2cnNocl96KHN2Ym9vbF90LCBzdnVpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaHJfbl91NjRfeikpKQpzdnVpbnQ2NF90IHN2cnNocl96KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaHJfbl91MTZfeikpKQpzdnVpbnQxNl90IHN2cnNocl96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaHJuYl9uX3UzMikpKQpzdnVpbnQxNl90IHN2cnNocm5iKHN2dWludDMyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNocm5iX25fdTY0KSkpCnN2dWludDMyX3Qgc3Zyc2hybmIoc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hybmJfbl91MTYpKSkKc3Z1aW50OF90IHN2cnNocm5iKHN2dWludDE2X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNocm5iX25fczMyKSkpCnN2aW50MTZfdCBzdnJzaHJuYihzdmludDMyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNocm5iX25fczY0KSkpCnN2aW50MzJfdCBzdnJzaHJuYihzdmludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNocm5iX25fczE2KSkpCnN2aW50OF90IHN2cnNocm5iKHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hybnRfbl91MzIpKSkKc3Z1aW50MTZfdCBzdnJzaHJudChzdnVpbnQxNl90LCBzdnVpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaHJudF9uX3U2NCkpKQpzdnVpbnQzMl90IHN2cnNocm50KHN2dWludDMyX3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNocm50X25fdTE2KSkpCnN2dWludDhfdCBzdnJzaHJudChzdnVpbnQ4X3QsIHN2dWludDE2X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNocm50X25fczMyKSkpCnN2aW50MTZfdCBzdnJzaHJudChzdmludDE2X3QsIHN2aW50MzJfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc2hybnRfbl9zNjQpKSkKc3ZpbnQzMl90IHN2cnNocm50KHN2aW50MzJfdCwgc3ZpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzaHJudF9uX3MxNikpKQpzdmludDhfdCBzdnJzaHJudChzdmludDhfdCwgc3ZpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzcXJ0ZV91MzJfbSkpKQpzdnVpbnQzMl90IHN2cnNxcnRlX20oc3Z1aW50MzJfdCwgc3Zib29sX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc3FydGVfdTMyX3gpKSkKc3Z1aW50MzJfdCBzdnJzcXJ0ZV94KHN2Ym9vbF90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNxcnRlX3UzMl96KSkpCnN2dWludDMyX3Qgc3Zyc3FydGVfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzcmFfbl9zOCkpKQpzdmludDhfdCBzdnJzcmEoc3ZpbnQ4X3QsIHN2aW50OF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzcmFfbl9zMzIpKSkKc3ZpbnQzMl90IHN2cnNyYShzdmludDMyX3QsIHN2aW50MzJfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc3JhX25fczY0KSkpCnN2aW50NjRfdCBzdnJzcmEoc3ZpbnQ2NF90LCBzdmludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNyYV9uX3MxNikpKQpzdmludDE2X3Qgc3Zyc3JhKHN2aW50MTZfdCwgc3ZpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzcmFfbl91OCkpKQpzdnVpbnQ4X3Qgc3Zyc3JhKHN2dWludDhfdCwgc3Z1aW50OF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzcmFfbl91MzIpKSkKc3Z1aW50MzJfdCBzdnJzcmEoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc3JhX25fdTY0KSkpCnN2dWludDY0X3Qgc3Zyc3JhKHN2dWludDY0X3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnNyYV9uX3UxNikpKQpzdnVpbnQxNl90IHN2cnNyYShzdnVpbnQxNl90LCBzdnVpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzdWJobmJfbl91MzIpKSkKc3Z1aW50MTZfdCBzdnJzdWJobmIoc3Z1aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc3ViaG5iX25fdTY0KSkpCnN2dWludDMyX3Qgc3Zyc3ViaG5iKHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnN1YmhuYl9uX3UxNikpKQpzdnVpbnQ4X3Qgc3Zyc3ViaG5iKHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnN1YmhuYl9uX3MzMikpKQpzdmludDE2X3Qgc3Zyc3ViaG5iKHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzdWJobmJfbl9zNjQpKSkKc3ZpbnQzMl90IHN2cnN1YmhuYihzdmludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc3ViaG5iX25fczE2KSkpCnN2aW50OF90IHN2cnN1YmhuYihzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc3ViaG5iX3UzMikpKQpzdnVpbnQxNl90IHN2cnN1YmhuYihzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnN1YmhuYl91NjQpKSkKc3Z1aW50MzJfdCBzdnJzdWJobmIoc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzdWJobmJfdTE2KSkpCnN2dWludDhfdCBzdnJzdWJobmIoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzdWJobmJfczMyKSkpCnN2aW50MTZfdCBzdnJzdWJobmIoc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc3ViaG5iX3M2NCkpKQpzdmludDMyX3Qgc3Zyc3ViaG5iKHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnN1YmhuYl9zMTYpKSkKc3ZpbnQ4X3Qgc3Zyc3ViaG5iKHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnN1YmhudF9uX3UzMikpKQpzdnVpbnQxNl90IHN2cnN1YmhudChzdnVpbnQxNl90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzdWJobnRfbl91NjQpKSkKc3Z1aW50MzJfdCBzdnJzdWJobnQoc3Z1aW50MzJfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc3ViaG50X25fdTE2KSkpCnN2dWludDhfdCBzdnJzdWJobnQoc3Z1aW50OF90LCBzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzdWJobnRfbl9zMzIpKSkKc3ZpbnQxNl90IHN2cnN1YmhudChzdmludDE2X3QsIHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzdWJobnRfbl9zNjQpKSkKc3ZpbnQzMl90IHN2cnN1YmhudChzdmludDMyX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzdWJobnRfbl9zMTYpKSkKc3ZpbnQ4X3Qgc3Zyc3ViaG50KHN2aW50OF90LCBzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zyc3ViaG50X3UzMikpKQpzdnVpbnQxNl90IHN2cnN1YmhudChzdnVpbnQxNl90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnN1YmhudF91NjQpKSkKc3Z1aW50MzJfdCBzdnJzdWJobnQoc3Z1aW50MzJfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnJzdWJobnRfdTE2KSkpCnN2dWludDhfdCBzdnJzdWJobnQoc3Z1aW50OF90LCBzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnN1YmhudF9zMzIpKSkKc3ZpbnQxNl90IHN2cnN1YmhudChzdmludDE2X3QsIHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnN1YmhudF9zNjQpKSkKc3ZpbnQzMl90IHN2cnN1YmhudChzdmludDMyX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cnN1YmhudF9zMTYpKSkKc3ZpbnQ4X3Qgc3Zyc3ViaG50KHN2aW50OF90LCBzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNiY2xiX25fdTMyKSkpCnN2dWludDMyX3Qgc3ZzYmNsYihzdnVpbnQzMl90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNiY2xiX25fdTY0KSkpCnN2dWludDY0X3Qgc3ZzYmNsYihzdnVpbnQ2NF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNiY2xiX3UzMikpKQpzdnVpbnQzMl90IHN2c2JjbGIoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNiY2xiX3U2NCkpKQpzdnVpbnQ2NF90IHN2c2JjbGIoc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNiY2x0X25fdTMyKSkpCnN2dWludDMyX3Qgc3ZzYmNsdChzdnVpbnQzMl90LCBzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNiY2x0X25fdTY0KSkpCnN2dWludDY0X3Qgc3ZzYmNsdChzdnVpbnQ2NF90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNiY2x0X3UzMikpKQpzdnVpbnQzMl90IHN2c2JjbHQoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNiY2x0X3U2NCkpKQpzdnVpbnQ2NF90IHN2c2JjbHQoc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNobGxiX25fczMyKSkpCnN2aW50MzJfdCBzdnNobGxiKHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzaGxsYl9uX3M2NCkpKQpzdmludDY0X3Qgc3ZzaGxsYihzdmludDMyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2hsbGJfbl9zMTYpKSkKc3ZpbnQxNl90IHN2c2hsbGIoc3ZpbnQ4X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2hsbGJfbl91MzIpKSkKc3Z1aW50MzJfdCBzdnNobGxiKHN2dWludDE2X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2hsbGJfbl91NjQpKSkKc3Z1aW50NjRfdCBzdnNobGxiKHN2dWludDMyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2hsbGJfbl91MTYpKSkKc3Z1aW50MTZfdCBzdnNobGxiKHN2dWludDhfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzaGxsdF9uX3MzMikpKQpzdmludDMyX3Qgc3ZzaGxsdChzdmludDE2X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2hsbHRfbl9zNjQpKSkKc3ZpbnQ2NF90IHN2c2hsbHQoc3ZpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNobGx0X25fczE2KSkpCnN2aW50MTZfdCBzdnNobGx0KHN2aW50OF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNobGx0X25fdTMyKSkpCnN2dWludDMyX3Qgc3ZzaGxsdChzdnVpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNobGx0X25fdTY0KSkpCnN2dWludDY0X3Qgc3ZzaGxsdChzdnVpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNobGx0X25fdTE2KSkpCnN2dWludDE2X3Qgc3ZzaGxsdChzdnVpbnQ4X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2hybmJfbl91MzIpKSkKc3Z1aW50MTZfdCBzdnNocm5iKHN2dWludDMyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2hybmJfbl91NjQpKSkKc3Z1aW50MzJfdCBzdnNocm5iKHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2hybmJfbl91MTYpKSkKc3Z1aW50OF90IHN2c2hybmIoc3Z1aW50MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzaHJuYl9uX3MzMikpKQpzdmludDE2X3Qgc3ZzaHJuYihzdmludDMyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2hybmJfbl9zNjQpKSkKc3ZpbnQzMl90IHN2c2hybmIoc3ZpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNocm5iX25fczE2KSkpCnN2aW50OF90IHN2c2hybmIoc3ZpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNocm50X25fdTMyKSkpCnN2dWludDE2X3Qgc3ZzaHJudChzdnVpbnQxNl90LCBzdnVpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNocm50X25fdTY0KSkpCnN2dWludDMyX3Qgc3ZzaHJudChzdnVpbnQzMl90LCBzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNocm50X25fdTE2KSkpCnN2dWludDhfdCBzdnNocm50KHN2dWludDhfdCwgc3Z1aW50MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzaHJudF9uX3MzMikpKQpzdmludDE2X3Qgc3ZzaHJudChzdmludDE2X3QsIHN2aW50MzJfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzaHJudF9uX3M2NCkpKQpzdmludDMyX3Qgc3ZzaHJudChzdmludDMyX3QsIHN2aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzaHJudF9uX3MxNikpKQpzdmludDhfdCBzdnNocm50KHN2aW50OF90LCBzdmludDE2X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2xpX25fdTgpKSkKc3Z1aW50OF90IHN2c2xpKHN2dWludDhfdCwgc3Z1aW50OF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNsaV9uX3UzMikpKQpzdnVpbnQzMl90IHN2c2xpKHN2dWludDMyX3QsIHN2dWludDMyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2xpX25fdTY0KSkpCnN2dWludDY0X3Qgc3ZzbGkoc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzbGlfbl91MTYpKSkKc3Z1aW50MTZfdCBzdnNsaShzdnVpbnQxNl90LCBzdnVpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNsaV9uX3M4KSkpCnN2aW50OF90IHN2c2xpKHN2aW50OF90LCBzdmludDhfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzbGlfbl9zMzIpKSkKc3ZpbnQzMl90IHN2c2xpKHN2aW50MzJfdCwgc3ZpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNsaV9uX3M2NCkpKQpzdmludDY0X3Qgc3ZzbGkoc3ZpbnQ2NF90LCBzdmludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2xpX25fczE2KSkpCnN2aW50MTZfdCBzdnNsaShzdmludDE2X3QsIHN2aW50MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzcWFkZF9uX3U4X20pKSkKc3Z1aW50OF90IHN2c3FhZGRfbShzdmJvb2xfdCwgc3Z1aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzcWFkZF9uX3UzMl9tKSkpCnN2dWludDMyX3Qgc3ZzcWFkZF9tKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3FhZGRfbl91NjRfbSkpKQpzdnVpbnQ2NF90IHN2c3FhZGRfbShzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNxYWRkX25fdTE2X20pKSkKc3Z1aW50MTZfdCBzdnNxYWRkX20oc3Zib29sX3QsIHN2dWludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzcWFkZF9uX3U4X3gpKSkKc3Z1aW50OF90IHN2c3FhZGRfeChzdmJvb2xfdCwgc3Z1aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzcWFkZF9uX3UzMl94KSkpCnN2dWludDMyX3Qgc3ZzcWFkZF94KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3FhZGRfbl91NjRfeCkpKQpzdnVpbnQ2NF90IHN2c3FhZGRfeChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNxYWRkX25fdTE2X3gpKSkKc3Z1aW50MTZfdCBzdnNxYWRkX3goc3Zib29sX3QsIHN2dWludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzcWFkZF9uX3U4X3opKSkKc3Z1aW50OF90IHN2c3FhZGRfeihzdmJvb2xfdCwgc3Z1aW50OF90LCBpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzcWFkZF9uX3UzMl96KSkpCnN2dWludDMyX3Qgc3ZzcWFkZF96KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3FhZGRfbl91NjRfeikpKQpzdnVpbnQ2NF90IHN2c3FhZGRfeihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNxYWRkX25fdTE2X3opKSkKc3Z1aW50MTZfdCBzdnNxYWRkX3ooc3Zib29sX3QsIHN2dWludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzcWFkZF91OF9tKSkpCnN2dWludDhfdCBzdnNxYWRkX20oc3Zib29sX3QsIHN2dWludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzcWFkZF91MzJfbSkpKQpzdnVpbnQzMl90IHN2c3FhZGRfbShzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3FhZGRfdTY0X20pKSkKc3Z1aW50NjRfdCBzdnNxYWRkX20oc3Zib29sX3QsIHN2dWludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNxYWRkX3UxNl9tKSkpCnN2dWludDE2X3Qgc3ZzcWFkZF9tKHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzcWFkZF91OF94KSkpCnN2dWludDhfdCBzdnNxYWRkX3goc3Zib29sX3QsIHN2dWludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzcWFkZF91MzJfeCkpKQpzdnVpbnQzMl90IHN2c3FhZGRfeChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3FhZGRfdTY0X3gpKSkKc3Z1aW50NjRfdCBzdnNxYWRkX3goc3Zib29sX3QsIHN2dWludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNxYWRkX3UxNl94KSkpCnN2dWludDE2X3Qgc3ZzcWFkZF94KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzcWFkZF91OF96KSkpCnN2dWludDhfdCBzdnNxYWRkX3ooc3Zib29sX3QsIHN2dWludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzcWFkZF91MzJfeikpKQpzdnVpbnQzMl90IHN2c3FhZGRfeihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3FhZGRfdTY0X3opKSkKc3Z1aW50NjRfdCBzdnNxYWRkX3ooc3Zib29sX3QsIHN2dWludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNxYWRkX3UxNl96KSkpCnN2dWludDE2X3Qgc3ZzcWFkZF96KHN2Ym9vbF90LCBzdnVpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzcmFfbl9zOCkpKQpzdmludDhfdCBzdnNyYShzdmludDhfdCwgc3ZpbnQ4X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3JhX25fczMyKSkpCnN2aW50MzJfdCBzdnNyYShzdmludDMyX3QsIHN2aW50MzJfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzcmFfbl9zNjQpKSkKc3ZpbnQ2NF90IHN2c3JhKHN2aW50NjRfdCwgc3ZpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNyYV9uX3MxNikpKQpzdmludDE2X3Qgc3ZzcmEoc3ZpbnQxNl90LCBzdmludDE2X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3JhX25fdTgpKSkKc3Z1aW50OF90IHN2c3JhKHN2dWludDhfdCwgc3Z1aW50OF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNyYV9uX3UzMikpKQpzdnVpbnQzMl90IHN2c3JhKHN2dWludDMyX3QsIHN2dWludDMyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3JhX25fdTY0KSkpCnN2dWludDY0X3Qgc3ZzcmEoc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzcmFfbl91MTYpKSkKc3Z1aW50MTZfdCBzdnNyYShzdnVpbnQxNl90LCBzdnVpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNyaV9uX3U4KSkpCnN2dWludDhfdCBzdnNyaShzdnVpbnQ4X3QsIHN2dWludDhfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zzcmlfbl91MzIpKSkKc3Z1aW50MzJfdCBzdnNyaShzdnVpbnQzMl90LCBzdnVpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNyaV9uX3U2NCkpKQpzdnVpbnQ2NF90IHN2c3JpKHN2dWludDY0X3QsIHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3JpX25fdTE2KSkpCnN2dWludDE2X3Qgc3Zzcmkoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zzcmlfbl9zOCkpKQpzdmludDhfdCBzdnNyaShzdmludDhfdCwgc3ZpbnQ4X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3JpX25fczMyKSkpCnN2aW50MzJfdCBzdnNyaShzdmludDMyX3QsIHN2aW50MzJfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Zzcmlfbl9zNjQpKSkKc3ZpbnQ2NF90IHN2c3JpKHN2aW50NjRfdCwgc3ZpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNyaV9uX3MxNikpKQpzdmludDE2X3Qgc3Zzcmkoc3ZpbnQxNl90LCBzdmludDE2X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFfc2NhdHRlcl91MzJiYXNlX2luZGV4X3UzMikpKQp2b2lkIHN2c3RudDFfc2NhdHRlcl9pbmRleChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50NjRfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxX3NjYXR0ZXJfdTY0YmFzZV9pbmRleF91NjQpKSkKdm9pZCBzdnN0bnQxX3NjYXR0ZXJfaW5kZXgoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MV9zY2F0dGVyX3U2NGJhc2VfaW5kZXhfZjY0KSkpCnZvaWQgc3ZzdG50MV9zY2F0dGVyX2luZGV4KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxX3NjYXR0ZXJfdTMyYmFzZV9pbmRleF9mMzIpKSkKdm9pZCBzdnN0bnQxX3NjYXR0ZXJfaW5kZXgoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFfc2NhdHRlcl91MzJiYXNlX2luZGV4X3MzMikpKQp2b2lkIHN2c3RudDFfc2NhdHRlcl9pbmRleChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50NjRfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFfc2NhdHRlcl91NjRiYXNlX2luZGV4X3M2NCkpKQp2b2lkIHN2c3RudDFfc2NhdHRlcl9pbmRleChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFfc2NhdHRlcl91MzJiYXNlX29mZnNldF91MzIpKSkKdm9pZCBzdnN0bnQxX3NjYXR0ZXJfb2Zmc2V0KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFfc2NhdHRlcl91NjRiYXNlX29mZnNldF91NjQpKSkKdm9pZCBzdnN0bnQxX3NjYXR0ZXJfb2Zmc2V0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFfc2NhdHRlcl91NjRiYXNlX29mZnNldF9mNjQpKSkKdm9pZCBzdnN0bnQxX3NjYXR0ZXJfb2Zmc2V0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxX3NjYXR0ZXJfdTMyYmFzZV9vZmZzZXRfZjMyKSkpCnZvaWQgc3ZzdG50MV9zY2F0dGVyX29mZnNldChzdmJvb2xfdCwgc3Z1aW50MzJfdCwgaW50NjRfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MV9zY2F0dGVyX3UzMmJhc2Vfb2Zmc2V0X3MzMikpKQp2b2lkIHN2c3RudDFfc2NhdHRlcl9vZmZzZXQoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxX3NjYXR0ZXJfdTY0YmFzZV9vZmZzZXRfczY0KSkpCnZvaWQgc3ZzdG50MV9zY2F0dGVyX29mZnNldChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFfc2NhdHRlcl91MzJiYXNlX3UzMikpKQp2b2lkIHN2c3RudDFfc2NhdHRlcihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxX3NjYXR0ZXJfdTY0YmFzZV91NjQpKSkKdm9pZCBzdnN0bnQxX3NjYXR0ZXIoc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MV9zY2F0dGVyX3U2NGJhc2VfZjY0KSkpCnZvaWQgc3ZzdG50MV9zY2F0dGVyKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxX3NjYXR0ZXJfdTMyYmFzZV9mMzIpKSkKdm9pZCBzdnN0bnQxX3NjYXR0ZXIoc3Zib29sX3QsIHN2dWludDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFfc2NhdHRlcl91MzJiYXNlX3MzMikpKQp2b2lkIHN2c3RudDFfc2NhdHRlcihzdmJvb2xfdCwgc3Z1aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFfc2NhdHRlcl91NjRiYXNlX3M2NCkpKQp2b2lkIHN2c3RudDFfc2NhdHRlcihzdmJvb2xfdCwgc3Z1aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFfc2NhdHRlcl9zNjRpbmRleF91NjQpKSkKdm9pZCBzdnN0bnQxX3NjYXR0ZXJfaW5kZXgoc3Zib29sX3QsIHVpbnQ2NF90ICosIHN2aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxX3NjYXR0ZXJfczY0aW5kZXhfZjY0KSkpCnZvaWQgc3ZzdG50MV9zY2F0dGVyX2luZGV4KHN2Ym9vbF90LCBmbG9hdDY0X3QgKiwgc3ZpbnQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxX3NjYXR0ZXJfczY0aW5kZXhfczY0KSkpCnZvaWQgc3ZzdG50MV9zY2F0dGVyX2luZGV4KHN2Ym9vbF90LCBpbnQ2NF90ICosIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFfc2NhdHRlcl91NjRpbmRleF91NjQpKSkKdm9pZCBzdnN0bnQxX3NjYXR0ZXJfaW5kZXgoc3Zib29sX3QsIHVpbnQ2NF90ICosIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MV9zY2F0dGVyX3U2NGluZGV4X2Y2NCkpKQp2b2lkIHN2c3RudDFfc2NhdHRlcl9pbmRleChzdmJvb2xfdCwgZmxvYXQ2NF90ICosIHN2dWludDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFfc2NhdHRlcl91NjRpbmRleF9zNjQpKSkKdm9pZCBzdnN0bnQxX3NjYXR0ZXJfaW5kZXgoc3Zib29sX3QsIGludDY0X3QgKiwgc3Z1aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFfc2NhdHRlcl91MzJvZmZzZXRfdTMyKSkpCnZvaWQgc3ZzdG50MV9zY2F0dGVyX29mZnNldChzdmJvb2xfdCwgdWludDMyX3QgKiwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxX3NjYXR0ZXJfdTMyb2Zmc2V0X2YzMikpKQp2b2lkIHN2c3RudDFfc2NhdHRlcl9vZmZzZXQoc3Zib29sX3QsIGZsb2F0MzJfdCAqLCBzdnVpbnQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxX3NjYXR0ZXJfdTMyb2Zmc2V0X3MzMikpKQp2b2lkIHN2c3RudDFfc2NhdHRlcl9vZmZzZXQoc3Zib29sX3QsIGludDMyX3QgKiwgc3Z1aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFfc2NhdHRlcl9zNjRvZmZzZXRfdTY0KSkpCnZvaWQgc3ZzdG50MV9zY2F0dGVyX29mZnNldChzdmJvb2xfdCwgdWludDY0X3QgKiwgc3ZpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFfc2NhdHRlcl9zNjRvZmZzZXRfZjY0KSkpCnZvaWQgc3ZzdG50MV9zY2F0dGVyX29mZnNldChzdmJvb2xfdCwgZmxvYXQ2NF90ICosIHN2aW50NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MV9zY2F0dGVyX3M2NG9mZnNldF9zNjQpKSkKdm9pZCBzdnN0bnQxX3NjYXR0ZXJfb2Zmc2V0KHN2Ym9vbF90LCBpbnQ2NF90ICosIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFfc2NhdHRlcl91NjRvZmZzZXRfdTY0KSkpCnZvaWQgc3ZzdG50MV9zY2F0dGVyX29mZnNldChzdmJvb2xfdCwgdWludDY0X3QgKiwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxX3NjYXR0ZXJfdTY0b2Zmc2V0X2Y2NCkpKQp2b2lkIHN2c3RudDFfc2NhdHRlcl9vZmZzZXQoc3Zib29sX3QsIGZsb2F0NjRfdCAqLCBzdnVpbnQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxX3NjYXR0ZXJfdTY0b2Zmc2V0X3M2NCkpKQp2b2lkIHN2c3RudDFfc2NhdHRlcl9vZmZzZXQoc3Zib29sX3QsIGludDY0X3QgKiwgc3Z1aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFiX3NjYXR0ZXJfdTMyYmFzZV9vZmZzZXRfdTMyKSkpCnZvaWQgc3ZzdG50MWJfc2NhdHRlcl9vZmZzZXQoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MWJfc2NhdHRlcl91NjRiYXNlX29mZnNldF91NjQpKSkKdm9pZCBzdnN0bnQxYl9zY2F0dGVyX29mZnNldChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxYl9zY2F0dGVyX3UzMmJhc2Vfb2Zmc2V0X3MzMikpKQp2b2lkIHN2c3RudDFiX3NjYXR0ZXJfb2Zmc2V0KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MWJfc2NhdHRlcl91NjRiYXNlX29mZnNldF9zNjQpKSkKdm9pZCBzdnN0bnQxYl9zY2F0dGVyX29mZnNldChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFiX3NjYXR0ZXJfdTMyYmFzZV91MzIpKSkKdm9pZCBzdnN0bnQxYl9zY2F0dGVyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFiX3NjYXR0ZXJfdTY0YmFzZV91NjQpKSkKdm9pZCBzdnN0bnQxYl9zY2F0dGVyKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFiX3NjYXR0ZXJfdTMyYmFzZV9zMzIpKSkKdm9pZCBzdnN0bnQxYl9zY2F0dGVyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MWJfc2NhdHRlcl91NjRiYXNlX3M2NCkpKQp2b2lkIHN2c3RudDFiX3NjYXR0ZXIoc3Zib29sX3QsIHN2dWludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxYl9zY2F0dGVyX3UzMm9mZnNldF9zMzIpKSkKdm9pZCBzdnN0bnQxYl9zY2F0dGVyX29mZnNldChzdmJvb2xfdCwgaW50OF90ICosIHN2dWludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxYl9zY2F0dGVyX3UzMm9mZnNldF91MzIpKSkKdm9pZCBzdnN0bnQxYl9zY2F0dGVyX29mZnNldChzdmJvb2xfdCwgdWludDhfdCAqLCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFiX3NjYXR0ZXJfczY0b2Zmc2V0X3M2NCkpKQp2b2lkIHN2c3RudDFiX3NjYXR0ZXJfb2Zmc2V0KHN2Ym9vbF90LCBpbnQ4X3QgKiwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MWJfc2NhdHRlcl9zNjRvZmZzZXRfdTY0KSkpCnZvaWQgc3ZzdG50MWJfc2NhdHRlcl9vZmZzZXQoc3Zib29sX3QsIHVpbnQ4X3QgKiwgc3ZpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFiX3NjYXR0ZXJfdTY0b2Zmc2V0X3M2NCkpKQp2b2lkIHN2c3RudDFiX3NjYXR0ZXJfb2Zmc2V0KHN2Ym9vbF90LCBpbnQ4X3QgKiwgc3Z1aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFiX3NjYXR0ZXJfdTY0b2Zmc2V0X3U2NCkpKQp2b2lkIHN2c3RudDFiX3NjYXR0ZXJfb2Zmc2V0KHN2Ym9vbF90LCB1aW50OF90ICosIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MWhfc2NhdHRlcl91MzJiYXNlX2luZGV4X3UzMikpKQp2b2lkIHN2c3RudDFoX3NjYXR0ZXJfaW5kZXgoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MWhfc2NhdHRlcl91NjRiYXNlX2luZGV4X3U2NCkpKQp2b2lkIHN2c3RudDFoX3NjYXR0ZXJfaW5kZXgoc3Zib29sX3QsIHN2dWludDY0X3QsIGludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MWhfc2NhdHRlcl91MzJiYXNlX2luZGV4X3MzMikpKQp2b2lkIHN2c3RudDFoX3NjYXR0ZXJfaW5kZXgoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxaF9zY2F0dGVyX3U2NGJhc2VfaW5kZXhfczY0KSkpCnZvaWQgc3ZzdG50MWhfc2NhdHRlcl9pbmRleChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFoX3NjYXR0ZXJfdTMyYmFzZV9vZmZzZXRfdTMyKSkpCnZvaWQgc3ZzdG50MWhfc2NhdHRlcl9vZmZzZXQoc3Zib29sX3QsIHN2dWludDMyX3QsIGludDY0X3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MWhfc2NhdHRlcl91NjRiYXNlX29mZnNldF91NjQpKSkKdm9pZCBzdnN0bnQxaF9zY2F0dGVyX29mZnNldChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxaF9zY2F0dGVyX3UzMmJhc2Vfb2Zmc2V0X3MzMikpKQp2b2lkIHN2c3RudDFoX3NjYXR0ZXJfb2Zmc2V0KHN2Ym9vbF90LCBzdnVpbnQzMl90LCBpbnQ2NF90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MWhfc2NhdHRlcl91NjRiYXNlX29mZnNldF9zNjQpKSkKdm9pZCBzdnN0bnQxaF9zY2F0dGVyX29mZnNldChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFoX3NjYXR0ZXJfdTMyYmFzZV91MzIpKSkKdm9pZCBzdnN0bnQxaF9zY2F0dGVyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFoX3NjYXR0ZXJfdTY0YmFzZV91NjQpKSkKdm9pZCBzdnN0bnQxaF9zY2F0dGVyKHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFoX3NjYXR0ZXJfdTMyYmFzZV9zMzIpKSkKdm9pZCBzdnN0bnQxaF9zY2F0dGVyKHN2Ym9vbF90LCBzdnVpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MWhfc2NhdHRlcl91NjRiYXNlX3M2NCkpKQp2b2lkIHN2c3RudDFoX3NjYXR0ZXIoc3Zib29sX3QsIHN2dWludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxaF9zY2F0dGVyX3M2NGluZGV4X3M2NCkpKQp2b2lkIHN2c3RudDFoX3NjYXR0ZXJfaW5kZXgoc3Zib29sX3QsIGludDE2X3QgKiwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MWhfc2NhdHRlcl9zNjRpbmRleF91NjQpKSkKdm9pZCBzdnN0bnQxaF9zY2F0dGVyX2luZGV4KHN2Ym9vbF90LCB1aW50MTZfdCAqLCBzdmludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MWhfc2NhdHRlcl91NjRpbmRleF9zNjQpKSkKdm9pZCBzdnN0bnQxaF9zY2F0dGVyX2luZGV4KHN2Ym9vbF90LCBpbnQxNl90ICosIHN2dWludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxaF9zY2F0dGVyX3U2NGluZGV4X3U2NCkpKQp2b2lkIHN2c3RudDFoX3NjYXR0ZXJfaW5kZXgoc3Zib29sX3QsIHVpbnQxNl90ICosIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MWhfc2NhdHRlcl91MzJvZmZzZXRfczMyKSkpCnZvaWQgc3ZzdG50MWhfc2NhdHRlcl9vZmZzZXQoc3Zib29sX3QsIGludDE2X3QgKiwgc3Z1aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFoX3NjYXR0ZXJfdTMyb2Zmc2V0X3UzMikpKQp2b2lkIHN2c3RudDFoX3NjYXR0ZXJfb2Zmc2V0KHN2Ym9vbF90LCB1aW50MTZfdCAqLCBzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFoX3NjYXR0ZXJfczY0b2Zmc2V0X3M2NCkpKQp2b2lkIHN2c3RudDFoX3NjYXR0ZXJfb2Zmc2V0KHN2Ym9vbF90LCBpbnQxNl90ICosIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFoX3NjYXR0ZXJfczY0b2Zmc2V0X3U2NCkpKQp2b2lkIHN2c3RudDFoX3NjYXR0ZXJfb2Zmc2V0KHN2Ym9vbF90LCB1aW50MTZfdCAqLCBzdmludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MWhfc2NhdHRlcl91NjRvZmZzZXRfczY0KSkpCnZvaWQgc3ZzdG50MWhfc2NhdHRlcl9vZmZzZXQoc3Zib29sX3QsIGludDE2X3QgKiwgc3Z1aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDFoX3NjYXR0ZXJfdTY0b2Zmc2V0X3U2NCkpKQp2b2lkIHN2c3RudDFoX3NjYXR0ZXJfb2Zmc2V0KHN2Ym9vbF90LCB1aW50MTZfdCAqLCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDF3X3NjYXR0ZXJfdTY0YmFzZV9pbmRleF91NjQpKSkKdm9pZCBzdnN0bnQxd19zY2F0dGVyX2luZGV4KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3RudDF3X3NjYXR0ZXJfdTY0YmFzZV9pbmRleF9zNjQpKSkKdm9pZCBzdnN0bnQxd19zY2F0dGVyX2luZGV4KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MXdfc2NhdHRlcl91NjRiYXNlX29mZnNldF91NjQpKSkKdm9pZCBzdnN0bnQxd19zY2F0dGVyX29mZnNldChzdmJvb2xfdCwgc3Z1aW50NjRfdCwgaW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxd19zY2F0dGVyX3U2NGJhc2Vfb2Zmc2V0X3M2NCkpKQp2b2lkIHN2c3RudDF3X3NjYXR0ZXJfb2Zmc2V0KHN2Ym9vbF90LCBzdnVpbnQ2NF90LCBpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MXdfc2NhdHRlcl91NjRiYXNlX3U2NCkpKQp2b2lkIHN2c3RudDF3X3NjYXR0ZXIoc3Zib29sX3QsIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MXdfc2NhdHRlcl91NjRiYXNlX3M2NCkpKQp2b2lkIHN2c3RudDF3X3NjYXR0ZXIoc3Zib29sX3QsIHN2dWludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxd19zY2F0dGVyX3M2NGluZGV4X3M2NCkpKQp2b2lkIHN2c3RudDF3X3NjYXR0ZXJfaW5kZXgoc3Zib29sX3QsIGludDMyX3QgKiwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MXdfc2NhdHRlcl9zNjRpbmRleF91NjQpKSkKdm9pZCBzdnN0bnQxd19zY2F0dGVyX2luZGV4KHN2Ym9vbF90LCB1aW50MzJfdCAqLCBzdmludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MXdfc2NhdHRlcl91NjRpbmRleF9zNjQpKSkKdm9pZCBzdnN0bnQxd19zY2F0dGVyX2luZGV4KHN2Ym9vbF90LCBpbnQzMl90ICosIHN2dWludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxd19zY2F0dGVyX3U2NGluZGV4X3U2NCkpKQp2b2lkIHN2c3RudDF3X3NjYXR0ZXJfaW5kZXgoc3Zib29sX3QsIHVpbnQzMl90ICosIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MXdfc2NhdHRlcl9zNjRvZmZzZXRfczY0KSkpCnZvaWQgc3ZzdG50MXdfc2NhdHRlcl9vZmZzZXQoc3Zib29sX3QsIGludDMyX3QgKiwgc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MXdfc2NhdHRlcl9zNjRvZmZzZXRfdTY0KSkpCnZvaWQgc3ZzdG50MXdfc2NhdHRlcl9vZmZzZXQoc3Zib29sX3QsIHVpbnQzMl90ICosIHN2aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxd19zY2F0dGVyX3U2NG9mZnNldF9zNjQpKSkKdm9pZCBzdnN0bnQxd19zY2F0dGVyX29mZnNldChzdmJvb2xfdCwgaW50MzJfdCAqLCBzdnVpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MXdfc2NhdHRlcl91NjRvZmZzZXRfdTY0KSkpCnZvaWQgc3ZzdG50MXdfc2NhdHRlcl9vZmZzZXQoc3Zib29sX3QsIHVpbnQzMl90ICosIHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJobmJfbl91MzIpKSkKc3Z1aW50MTZfdCBzdnN1YmhuYihzdnVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YmhuYl9uX3U2NCkpKQpzdnVpbnQzMl90IHN2c3ViaG5iKHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViaG5iX25fdTE2KSkpCnN2dWludDhfdCBzdnN1YmhuYihzdnVpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YmhuYl9uX3MzMikpKQpzdmludDE2X3Qgc3ZzdWJobmIoc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViaG5iX25fczY0KSkpCnN2aW50MzJfdCBzdnN1YmhuYihzdmludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJobmJfbl9zMTYpKSkKc3ZpbnQ4X3Qgc3ZzdWJobmIoc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViaG5iX3UzMikpKQpzdnVpbnQxNl90IHN2c3ViaG5iKHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJobmJfdTY0KSkpCnN2dWludDMyX3Qgc3ZzdWJobmIoc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YmhuYl91MTYpKSkKc3Z1aW50OF90IHN2c3ViaG5iKHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJobmJfczMyKSkpCnN2aW50MTZfdCBzdnN1YmhuYihzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YmhuYl9zNjQpKSkKc3ZpbnQzMl90IHN2c3ViaG5iKHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViaG5iX3MxNikpKQpzdmludDhfdCBzdnN1YmhuYihzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YmhudF9uX3UzMikpKQpzdnVpbnQxNl90IHN2c3ViaG50KHN2dWludDE2X3QsIHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViaG50X25fdTY0KSkpCnN2dWludDMyX3Qgc3ZzdWJobnQoc3Z1aW50MzJfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJobnRfbl91MTYpKSkKc3Z1aW50OF90IHN2c3ViaG50KHN2dWludDhfdCwgc3Z1aW50MTZfdCwgdWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJobnRfbl9zMzIpKSkKc3ZpbnQxNl90IHN2c3ViaG50KHN2aW50MTZfdCwgc3ZpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViaG50X25fczY0KSkpCnN2aW50MzJfdCBzdnN1YmhudChzdmludDMyX3QsIHN2aW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YmhudF9uX3MxNikpKQpzdmludDhfdCBzdnN1YmhudChzdmludDhfdCwgc3ZpbnQxNl90LCBpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViaG50X3UzMikpKQpzdnVpbnQxNl90IHN2c3ViaG50KHN2dWludDE2X3QsIHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJobnRfdTY0KSkpCnN2dWludDMyX3Qgc3ZzdWJobnQoc3Z1aW50MzJfdCwgc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YmhudF91MTYpKSkKc3Z1aW50OF90IHN2c3ViaG50KHN2dWludDhfdCwgc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YmhudF9zMzIpKSkKc3ZpbnQxNl90IHN2c3ViaG50KHN2aW50MTZfdCwgc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJobnRfczY0KSkpCnN2aW50MzJfdCBzdnN1YmhudChzdmludDMyX3QsIHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3ViaG50X3MxNikpKQpzdmludDhfdCBzdnN1YmhudChzdmludDhfdCwgc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJsYl9uX3MzMikpKQpzdmludDMyX3Qgc3ZzdWJsYihzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJsYl9uX3M2NCkpKQpzdmludDY0X3Qgc3ZzdWJsYihzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJsYl9uX3MxNikpKQpzdmludDE2X3Qgc3ZzdWJsYihzdmludDhfdCwgaW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3VibGJfbl91MzIpKSkKc3Z1aW50MzJfdCBzdnN1YmxiKHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3VibGJfbl91NjQpKSkKc3Z1aW50NjRfdCBzdnN1YmxiKHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3VibGJfbl91MTYpKSkKc3Z1aW50MTZfdCBzdnN1YmxiKHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YmxiX3MzMikpKQpzdmludDMyX3Qgc3ZzdWJsYihzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YmxiX3M2NCkpKQpzdmludDY0X3Qgc3ZzdWJsYihzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YmxiX3MxNikpKQpzdmludDE2X3Qgc3ZzdWJsYihzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJsYl91MzIpKSkKc3Z1aW50MzJfdCBzdnN1YmxiKHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJsYl91NjQpKSkKc3Z1aW50NjRfdCBzdnN1YmxiKHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJsYl91MTYpKSkKc3Z1aW50MTZfdCBzdnN1YmxiKHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3VibGJ0X25fczMyKSkpCnN2aW50MzJfdCBzdnN1YmxidChzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJsYnRfbl9zNjQpKSkKc3ZpbnQ2NF90IHN2c3VibGJ0KHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YmxidF9uX3MxNikpKQpzdmludDE2X3Qgc3ZzdWJsYnQoc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YmxidF9zMzIpKSkKc3ZpbnQzMl90IHN2c3VibGJ0KHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3VibGJ0X3M2NCkpKQpzdmludDY0X3Qgc3ZzdWJsYnQoc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJsYnRfczE2KSkpCnN2aW50MTZfdCBzdnN1YmxidChzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJsdF9uX3MzMikpKQpzdmludDMyX3Qgc3ZzdWJsdChzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJsdF9uX3M2NCkpKQpzdmludDY0X3Qgc3ZzdWJsdChzdmludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJsdF9uX3MxNikpKQpzdmludDE2X3Qgc3ZzdWJsdChzdmludDhfdCwgaW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3VibHRfbl91MzIpKSkKc3Z1aW50MzJfdCBzdnN1Ymx0KHN2dWludDE2X3QsIHVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3VibHRfbl91NjQpKSkKc3Z1aW50NjRfdCBzdnN1Ymx0KHN2dWludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3VibHRfbl91MTYpKSkKc3Z1aW50MTZfdCBzdnN1Ymx0KHN2dWludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Ymx0X3MzMikpKQpzdmludDMyX3Qgc3ZzdWJsdChzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Ymx0X3M2NCkpKQpzdmludDY0X3Qgc3ZzdWJsdChzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Ymx0X3MxNikpKQpzdmludDE2X3Qgc3ZzdWJsdChzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJsdF91MzIpKSkKc3Z1aW50MzJfdCBzdnN1Ymx0KHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJsdF91NjQpKSkKc3Z1aW50NjRfdCBzdnN1Ymx0KHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJsdF91MTYpKSkKc3Z1aW50MTZfdCBzdnN1Ymx0KHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3VibHRiX25fczMyKSkpCnN2aW50MzJfdCBzdnN1Ymx0YihzdmludDE2X3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJsdGJfbl9zNjQpKSkKc3ZpbnQ2NF90IHN2c3VibHRiKHN2aW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Ymx0Yl9uX3MxNikpKQpzdmludDE2X3Qgc3ZzdWJsdGIoc3ZpbnQ4X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Ymx0Yl9zMzIpKSkKc3ZpbnQzMl90IHN2c3VibHRiKHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3VibHRiX3M2NCkpKQpzdmludDY0X3Qgc3ZzdWJsdGIoc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJsdGJfczE2KSkpCnN2aW50MTZfdCBzdnN1Ymx0YihzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJ3Yl9uX3MzMikpKQpzdmludDMyX3Qgc3ZzdWJ3YihzdmludDMyX3QsIGludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJ3Yl9uX3M2NCkpKQpzdmludDY0X3Qgc3ZzdWJ3YihzdmludDY0X3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJ3Yl9uX3MxNikpKQpzdmludDE2X3Qgc3ZzdWJ3YihzdmludDE2X3QsIGludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YndiX25fdTMyKSkpCnN2dWludDMyX3Qgc3ZzdWJ3YihzdnVpbnQzMl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YndiX25fdTY0KSkpCnN2dWludDY0X3Qgc3ZzdWJ3YihzdnVpbnQ2NF90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1YndiX25fdTE2KSkpCnN2dWludDE2X3Qgc3ZzdWJ3YihzdnVpbnQxNl90LCB1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vid2JfczMyKSkpCnN2aW50MzJfdCBzdnN1YndiKHN2aW50MzJfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vid2JfczY0KSkpCnN2aW50NjRfdCBzdnN1YndiKHN2aW50NjRfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vid2JfczE2KSkpCnN2aW50MTZfdCBzdnN1YndiKHN2aW50MTZfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJ3Yl91MzIpKSkKc3Z1aW50MzJfdCBzdnN1YndiKHN2dWludDMyX3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJ3Yl91NjQpKSkKc3Z1aW50NjRfdCBzdnN1YndiKHN2dWludDY0X3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJ3Yl91MTYpKSkKc3Z1aW50MTZfdCBzdnN1YndiKHN2dWludDE2X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Ynd0X25fczMyKSkpCnN2aW50MzJfdCBzdnN1Ynd0KHN2aW50MzJfdCwgaW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Ynd0X25fczY0KSkpCnN2aW50NjRfdCBzdnN1Ynd0KHN2aW50NjRfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Ynd0X25fczE2KSkpCnN2aW50MTZfdCBzdnN1Ynd0KHN2aW50MTZfdCwgaW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vid3Rfbl91MzIpKSkKc3Z1aW50MzJfdCBzdnN1Ynd0KHN2dWludDMyX3QsIHVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vid3Rfbl91NjQpKSkKc3Z1aW50NjRfdCBzdnN1Ynd0KHN2dWludDY0X3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vid3Rfbl91MTYpKSkKc3Z1aW50MTZfdCBzdnN1Ynd0KHN2dWludDE2X3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJ3dF9zMzIpKSkKc3ZpbnQzMl90IHN2c3Vid3Qoc3ZpbnQzMl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJ3dF9zNjQpKSkKc3ZpbnQ2NF90IHN2c3Vid3Qoc3ZpbnQ2NF90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWJ3dF9zMTYpKSkKc3ZpbnQxNl90IHN2c3Vid3Qoc3ZpbnQxNl90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Ynd0X3UzMikpKQpzdnVpbnQzMl90IHN2c3Vid3Qoc3Z1aW50MzJfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Ynd0X3U2NCkpKQpzdnVpbnQ2NF90IHN2c3Vid3Qoc3Z1aW50NjRfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1Ynd0X3UxNikpKQpzdnVpbnQxNl90IHN2c3Vid3Qoc3Z1aW50MTZfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dGJsMl91OCkpKQpzdnVpbnQ4X3Qgc3Z0YmwyKHN2dWludDh4Ml90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0YmwyX3UzMikpKQpzdnVpbnQzMl90IHN2dGJsMihzdnVpbnQzMngyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0YmwyX3U2NCkpKQpzdnVpbnQ2NF90IHN2dGJsMihzdnVpbnQ2NHgyX3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0YmwyX3UxNikpKQpzdnVpbnQxNl90IHN2dGJsMihzdnVpbnQxNngyX3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0YmwyX3M4KSkpCnN2aW50OF90IHN2dGJsMihzdmludDh4Ml90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0YmwyX2Y2NCkpKQpzdmZsb2F0NjRfdCBzdnRibDIoc3ZmbG9hdDY0eDJfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRibDJfZjMyKSkpCnN2ZmxvYXQzMl90IHN2dGJsMihzdmZsb2F0MzJ4Ml90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dGJsMl9mMTYpKSkKc3ZmbG9hdDE2X3Qgc3Z0YmwyKHN2ZmxvYXQxNngyX3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0YmwyX3MzMikpKQpzdmludDMyX3Qgc3Z0YmwyKHN2aW50MzJ4Ml90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dGJsMl9zNjQpKSkKc3ZpbnQ2NF90IHN2dGJsMihzdmludDY0eDJfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRibDJfczE2KSkpCnN2aW50MTZfdCBzdnRibDIoc3ZpbnQxNngyX3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0YnhfdTgpKSkKc3Z1aW50OF90IHN2dGJ4KHN2dWludDhfdCwgc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0YnhfdTMyKSkpCnN2dWludDMyX3Qgc3Z0Yngoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRieF91NjQpKSkKc3Z1aW50NjRfdCBzdnRieChzdnVpbnQ2NF90LCBzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dGJ4X3UxNikpKQpzdnVpbnQxNl90IHN2dGJ4KHN2dWludDE2X3QsIHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0YnhfczgpKSkKc3ZpbnQ4X3Qgc3Z0Yngoc3ZpbnQ4X3QsIHN2aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0YnhfZjY0KSkpCnN2ZmxvYXQ2NF90IHN2dGJ4KHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRieF9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3Z0Yngoc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dGJ4X2YxNikpKQpzdmZsb2F0MTZfdCBzdnRieChzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0YnhfczMyKSkpCnN2aW50MzJfdCBzdnRieChzdmludDMyX3QsIHN2aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRieF9zNjQpKSkKc3ZpbnQ2NF90IHN2dGJ4KHN2aW50NjRfdCwgc3ZpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dGJ4X3MxNikpKQpzdmludDE2X3Qgc3Z0Yngoc3ZpbnQxNl90LCBzdmludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1cWFkZF9uX3M4X20pKSkKc3ZpbnQ4X3Qgc3Z1cWFkZF9tKHN2Ym9vbF90LCBzdmludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnVxYWRkX25fczMyX20pKSkKc3ZpbnQzMl90IHN2dXFhZGRfbShzdmJvb2xfdCwgc3ZpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnVxYWRkX25fczY0X20pKSkKc3ZpbnQ2NF90IHN2dXFhZGRfbShzdmJvb2xfdCwgc3ZpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnVxYWRkX25fczE2X20pKSkKc3ZpbnQxNl90IHN2dXFhZGRfbShzdmJvb2xfdCwgc3ZpbnQxNl90LCB1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnVxYWRkX25fczhfeCkpKQpzdmludDhfdCBzdnVxYWRkX3goc3Zib29sX3QsIHN2aW50OF90LCB1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXFhZGRfbl9zMzJfeCkpKQpzdmludDMyX3Qgc3Z1cWFkZF94KHN2Ym9vbF90LCBzdmludDMyX3QsIHVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXFhZGRfbl9zNjRfeCkpKQpzdmludDY0X3Qgc3Z1cWFkZF94KHN2Ym9vbF90LCBzdmludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXFhZGRfbl9zMTZfeCkpKQpzdmludDE2X3Qgc3Z1cWFkZF94KHN2Ym9vbF90LCBzdmludDE2X3QsIHVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXFhZGRfbl9zOF96KSkpCnN2aW50OF90IHN2dXFhZGRfeihzdmJvb2xfdCwgc3ZpbnQ4X3QsIHVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1cWFkZF9uX3MzMl96KSkpCnN2aW50MzJfdCBzdnVxYWRkX3ooc3Zib29sX3QsIHN2aW50MzJfdCwgdWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1cWFkZF9uX3M2NF96KSkpCnN2aW50NjRfdCBzdnVxYWRkX3ooc3Zib29sX3QsIHN2aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1cWFkZF9uX3MxNl96KSkpCnN2aW50MTZfdCBzdnVxYWRkX3ooc3Zib29sX3QsIHN2aW50MTZfdCwgdWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1cWFkZF9zOF9tKSkpCnN2aW50OF90IHN2dXFhZGRfbShzdmJvb2xfdCwgc3ZpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnVxYWRkX3MzMl9tKSkpCnN2aW50MzJfdCBzdnVxYWRkX20oc3Zib29sX3QsIHN2aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnVxYWRkX3M2NF9tKSkpCnN2aW50NjRfdCBzdnVxYWRkX20oc3Zib29sX3QsIHN2aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnVxYWRkX3MxNl9tKSkpCnN2aW50MTZfdCBzdnVxYWRkX20oc3Zib29sX3QsIHN2aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnVxYWRkX3M4X3gpKSkKc3ZpbnQ4X3Qgc3Z1cWFkZF94KHN2Ym9vbF90LCBzdmludDhfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXFhZGRfczMyX3gpKSkKc3ZpbnQzMl90IHN2dXFhZGRfeChzdmJvb2xfdCwgc3ZpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXFhZGRfczY0X3gpKSkKc3ZpbnQ2NF90IHN2dXFhZGRfeChzdmJvb2xfdCwgc3ZpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXFhZGRfczE2X3gpKSkKc3ZpbnQxNl90IHN2dXFhZGRfeChzdmJvb2xfdCwgc3ZpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXFhZGRfczhfeikpKQpzdmludDhfdCBzdnVxYWRkX3ooc3Zib29sX3QsIHN2aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1cWFkZF9zMzJfeikpKQpzdmludDMyX3Qgc3Z1cWFkZF96KHN2Ym9vbF90LCBzdmludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1cWFkZF9zNjRfeikpKQpzdmludDY0X3Qgc3Z1cWFkZF96KHN2Ym9vbF90LCBzdmludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1cWFkZF9zMTZfeikpKQpzdmludDE2X3Qgc3Z1cWFkZF96KHN2Ym9vbF90LCBzdmludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z3aGlsZWdlX2I4X3MzMikpKQpzdmJvb2xfdCBzdndoaWxlZ2VfYjgoaW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlZ2VfYjMyX3MzMikpKQpzdmJvb2xfdCBzdndoaWxlZ2VfYjMyKGludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z3aGlsZWdlX2I2NF9zMzIpKSkKc3Zib29sX3Qgc3Z3aGlsZWdlX2I2NChpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVnZV9iMTZfczMyKSkpCnN2Ym9vbF90IHN2d2hpbGVnZV9iMTYoaW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlZ2VfYjhfczY0KSkpCnN2Ym9vbF90IHN2d2hpbGVnZV9iOChpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVnZV9iMzJfczY0KSkpCnN2Ym9vbF90IHN2d2hpbGVnZV9iMzIoaW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlZ2VfYjY0X3M2NCkpKQpzdmJvb2xfdCBzdndoaWxlZ2VfYjY0KGludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z3aGlsZWdlX2IxNl9zNjQpKSkKc3Zib29sX3Qgc3Z3aGlsZWdlX2IxNihpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVnZV9iOF91MzIpKSkKc3Zib29sX3Qgc3Z3aGlsZWdlX2I4KHVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlZ2VfYjMyX3UzMikpKQpzdmJvb2xfdCBzdndoaWxlZ2VfYjMyKHVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlZ2VfYjY0X3UzMikpKQpzdmJvb2xfdCBzdndoaWxlZ2VfYjY0KHVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlZ2VfYjE2X3UzMikpKQpzdmJvb2xfdCBzdndoaWxlZ2VfYjE2KHVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlZ2VfYjhfdTY0KSkpCnN2Ym9vbF90IHN2d2hpbGVnZV9iOCh1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z3aGlsZWdlX2IzMl91NjQpKSkKc3Zib29sX3Qgc3Z3aGlsZWdlX2IzMih1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z3aGlsZWdlX2I2NF91NjQpKSkKc3Zib29sX3Qgc3Z3aGlsZWdlX2I2NCh1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z3aGlsZWdlX2IxNl91NjQpKSkKc3Zib29sX3Qgc3Z3aGlsZWdlX2IxNih1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z3aGlsZWd0X2I4X3MzMikpKQpzdmJvb2xfdCBzdndoaWxlZ3RfYjgoaW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlZ3RfYjMyX3MzMikpKQpzdmJvb2xfdCBzdndoaWxlZ3RfYjMyKGludDMyX3QsIGludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z3aGlsZWd0X2I2NF9zMzIpKSkKc3Zib29sX3Qgc3Z3aGlsZWd0X2I2NChpbnQzMl90LCBpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVndF9iMTZfczMyKSkpCnN2Ym9vbF90IHN2d2hpbGVndF9iMTYoaW50MzJfdCwgaW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlZ3RfYjhfczY0KSkpCnN2Ym9vbF90IHN2d2hpbGVndF9iOChpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVndF9iMzJfczY0KSkpCnN2Ym9vbF90IHN2d2hpbGVndF9iMzIoaW50NjRfdCwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlZ3RfYjY0X3M2NCkpKQpzdmJvb2xfdCBzdndoaWxlZ3RfYjY0KGludDY0X3QsIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z3aGlsZWd0X2IxNl9zNjQpKSkKc3Zib29sX3Qgc3Z3aGlsZWd0X2IxNihpbnQ2NF90LCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVndF9iOF91MzIpKSkKc3Zib29sX3Qgc3Z3aGlsZWd0X2I4KHVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlZ3RfYjMyX3UzMikpKQpzdmJvb2xfdCBzdndoaWxlZ3RfYjMyKHVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlZ3RfYjY0X3UzMikpKQpzdmJvb2xfdCBzdndoaWxlZ3RfYjY0KHVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlZ3RfYjE2X3UzMikpKQpzdmJvb2xfdCBzdndoaWxlZ3RfYjE2KHVpbnQzMl90LCB1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlZ3RfYjhfdTY0KSkpCnN2Ym9vbF90IHN2d2hpbGVndF9iOCh1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z3aGlsZWd0X2IzMl91NjQpKSkKc3Zib29sX3Qgc3Z3aGlsZWd0X2IzMih1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z3aGlsZWd0X2I2NF91NjQpKSkKc3Zib29sX3Qgc3Z3aGlsZWd0X2I2NCh1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z3aGlsZWd0X2IxNl91NjQpKSkKc3Zib29sX3Qgc3Z3aGlsZWd0X2IxNih1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z3aGlsZXJ3X3U4KSkpCnN2Ym9vbF90IHN2d2hpbGVydyh1aW50OF90IGNvbnN0ICosIHVpbnQ4X3QgY29uc3QgKik7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlcndfczgpKSkKc3Zib29sX3Qgc3Z3aGlsZXJ3KGludDhfdCBjb25zdCAqLCBpbnQ4X3QgY29uc3QgKik7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlcndfdTY0KSkpCnN2Ym9vbF90IHN2d2hpbGVydyh1aW50NjRfdCBjb25zdCAqLCB1aW50NjRfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVyd19mNjQpKSkKc3Zib29sX3Qgc3Z3aGlsZXJ3KGZsb2F0NjRfdCBjb25zdCAqLCBmbG9hdDY0X3QgY29uc3QgKik7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlcndfczY0KSkpCnN2Ym9vbF90IHN2d2hpbGVydyhpbnQ2NF90IGNvbnN0ICosIGludDY0X3QgY29uc3QgKik7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlcndfdTE2KSkpCnN2Ym9vbF90IHN2d2hpbGVydyh1aW50MTZfdCBjb25zdCAqLCB1aW50MTZfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVyd19mMTYpKSkKc3Zib29sX3Qgc3Z3aGlsZXJ3KGZsb2F0MTZfdCBjb25zdCAqLCBmbG9hdDE2X3QgY29uc3QgKik7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlcndfczE2KSkpCnN2Ym9vbF90IHN2d2hpbGVydyhpbnQxNl90IGNvbnN0ICosIGludDE2X3QgY29uc3QgKik7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlcndfdTMyKSkpCnN2Ym9vbF90IHN2d2hpbGVydyh1aW50MzJfdCBjb25zdCAqLCB1aW50MzJfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVyd19mMzIpKSkKc3Zib29sX3Qgc3Z3aGlsZXJ3KGZsb2F0MzJfdCBjb25zdCAqLCBmbG9hdDMyX3QgY29uc3QgKik7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlcndfczMyKSkpCnN2Ym9vbF90IHN2d2hpbGVydyhpbnQzMl90IGNvbnN0ICosIGludDMyX3QgY29uc3QgKik7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxld3JfdTgpKSkKc3Zib29sX3Qgc3Z3aGlsZXdyKHVpbnQ4X3QgY29uc3QgKiwgdWludDhfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGV3cl9zOCkpKQpzdmJvb2xfdCBzdndoaWxld3IoaW50OF90IGNvbnN0ICosIGludDhfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGV3cl91NjQpKSkKc3Zib29sX3Qgc3Z3aGlsZXdyKHVpbnQ2NF90IGNvbnN0ICosIHVpbnQ2NF90IGNvbnN0ICopOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z3aGlsZXdyX2Y2NCkpKQpzdmJvb2xfdCBzdndoaWxld3IoZmxvYXQ2NF90IGNvbnN0ICosIGZsb2F0NjRfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGV3cl9zNjQpKSkKc3Zib29sX3Qgc3Z3aGlsZXdyKGludDY0X3QgY29uc3QgKiwgaW50NjRfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGV3cl91MTYpKSkKc3Zib29sX3Qgc3Z3aGlsZXdyKHVpbnQxNl90IGNvbnN0ICosIHVpbnQxNl90IGNvbnN0ICopOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z3aGlsZXdyX2YxNikpKQpzdmJvb2xfdCBzdndoaWxld3IoZmxvYXQxNl90IGNvbnN0ICosIGZsb2F0MTZfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGV3cl9zMTYpKSkKc3Zib29sX3Qgc3Z3aGlsZXdyKGludDE2X3QgY29uc3QgKiwgaW50MTZfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGV3cl91MzIpKSkKc3Zib29sX3Qgc3Z3aGlsZXdyKHVpbnQzMl90IGNvbnN0ICosIHVpbnQzMl90IGNvbnN0ICopOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z3aGlsZXdyX2YzMikpKQpzdmJvb2xfdCBzdndoaWxld3IoZmxvYXQzMl90IGNvbnN0ICosIGZsb2F0MzJfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGV3cl9zMzIpKSkKc3Zib29sX3Qgc3Z3aGlsZXdyKGludDMyX3QgY29uc3QgKiwgaW50MzJfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2eGFyX25fdTgpKSkKc3Z1aW50OF90IHN2eGFyKHN2dWludDhfdCwgc3Z1aW50OF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnhhcl9uX3UzMikpKQpzdnVpbnQzMl90IHN2eGFyKHN2dWludDMyX3QsIHN2dWludDMyX3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2eGFyX25fdTY0KSkpCnN2dWludDY0X3Qgc3Z4YXIoc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z4YXJfbl91MTYpKSkKc3Z1aW50MTZfdCBzdnhhcihzdnVpbnQxNl90LCBzdnVpbnQxNl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnhhcl9uX3M4KSkpCnN2aW50OF90IHN2eGFyKHN2aW50OF90LCBzdmludDhfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z4YXJfbl9zMzIpKSkKc3ZpbnQzMl90IHN2eGFyKHN2aW50MzJfdCwgc3ZpbnQzMl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnhhcl9uX3M2NCkpKQpzdmludDY0X3Qgc3Z4YXIoc3ZpbnQ2NF90LCBzdmludDY0X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2eGFyX25fczE2KSkpCnN2aW50MTZfdCBzdnhhcihzdmludDE2X3QsIHN2aW50MTZfdCwgdWludDY0X3QpOwojZW5kaWYgIC8vZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NWRTIpCgojaWYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NWRTIpICYmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9CRjE2X1NDQUxBUl9BUklUSE1FVElDKQpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxlcndfYmYxNikpKQpzdmJvb2xfdCBzdndoaWxlcndfYmYxNihiZmxvYXQxNl90IGNvbnN0ICosIGJmbG9hdDE2X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGV3cl9iZjE2KSkpCnN2Ym9vbF90IHN2d2hpbGV3cl9iZjE2KGJmbG9hdDE2X3QgY29uc3QgKiwgYmZsb2F0MTZfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2d2hpbGVyd19iZjE2KSkpCnN2Ym9vbF90IHN2d2hpbGVydyhiZmxvYXQxNl90IGNvbnN0ICosIGJmbG9hdDE2X3QgY29uc3QgKik7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdndoaWxld3JfYmYxNikpKQpzdmJvb2xfdCBzdndoaWxld3IoYmZsb2F0MTZfdCBjb25zdCAqLCBiZmxvYXQxNl90IGNvbnN0ICopOwojZW5kaWYgIC8vZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NWRTIpICYmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9CRjE2X1NDQUxBUl9BUklUSE1FVElDKQoKI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9TVkUyKSAmJiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfU1ZFX0JGMTYpCl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dGJsMl9iZjE2KSkpCnN2YmZsb2F0MTZfdCBzdnRibDJfYmYxNihzdmJmbG9hdDE2eDJfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dGJ4X2JmMTYpKSkKc3ZiZmxvYXQxNl90IHN2dGJ4X2JmMTYoc3ZiZmxvYXQxNl90LCBzdmJmbG9hdDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0YmwyX2JmMTYpKSkKc3ZiZmxvYXQxNl90IHN2dGJsMihzdmJmbG9hdDE2eDJfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRieF9iZjE2KSkpCnN2YmZsb2F0MTZfdCBzdnRieChzdmJmbG9hdDE2X3QsIHN2YmZsb2F0MTZfdCwgc3Z1aW50MTZfdCk7CiNlbmRpZiAgLy9kZWZpbmVkKF9fQVJNX0ZFQVRVUkVfU1ZFMikgJiYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NWRV9CRjE2KQoKI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9TVkUyX0FFUykKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZXNkX3U4KSkpCnN2dWludDhfdCBzdmFlc2RfdTgoc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFlc2VfdTgpKSkKc3Z1aW50OF90IHN2YWVzZV91OChzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YWVzaW1jX3U4KSkpCnN2dWludDhfdCBzdmFlc2ltY191OChzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFlc21jX3U4KSkpCnN2dWludDhfdCBzdmFlc21jX3U4KHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cG11bGxiX3BhaXJfbl91NjQpKSkKc3Z1aW50NjRfdCBzdnBtdWxsYl9wYWlyX25fdTY0KHN2dWludDY0X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwbXVsbGJfcGFpcl91NjQpKSkKc3Z1aW50NjRfdCBzdnBtdWxsYl9wYWlyX3U2NChzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZwbXVsbHRfcGFpcl9uX3U2NCkpKQpzdnVpbnQ2NF90IHN2cG11bGx0X3BhaXJfbl91NjQoc3Z1aW50NjRfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnBtdWxsdF9wYWlyX3U2NCkpKQpzdnVpbnQ2NF90IHN2cG11bGx0X3BhaXJfdTY0KHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZXNkX3U4KSkpCnN2dWludDhfdCBzdmFlc2Qoc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZXNlX3U4KSkpCnN2dWludDhfdCBzdmFlc2Uoc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZhZXNpbWNfdTgpKSkKc3Z1aW50OF90IHN2YWVzaW1jKHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmFlc21jX3U4KSkpCnN2dWludDhfdCBzdmFlc21jKHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnBtdWxsYl9wYWlyX25fdTY0KSkpCnN2dWludDY0X3Qgc3ZwbXVsbGJfcGFpcihzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnBtdWxsYl9wYWlyX3U2NCkpKQpzdnVpbnQ2NF90IHN2cG11bGxiX3BhaXIoc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnBtdWxsdF9wYWlyX25fdTY0KSkpCnN2dWludDY0X3Qgc3ZwbXVsbHRfcGFpcihzdnVpbnQ2NF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnBtdWxsdF9wYWlyX3U2NCkpKQpzdnVpbnQ2NF90IHN2cG11bGx0X3BhaXIoc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7CiNlbmRpZiAgLy9kZWZpbmVkKF9fQVJNX0ZFQVRVUkVfU1ZFMl9BRVMpCgojaWYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NWRTJfU0hBMykKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyYXgxX3U2NCkpKQpzdnVpbnQ2NF90IHN2cmF4MV91NjQoc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmF4MV9zNjQpKSkKc3ZpbnQ2NF90IHN2cmF4MV9zNjQoc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyYXgxX3U2NCkpKQpzdnVpbnQ2NF90IHN2cmF4MShzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmF4MV9zNjQpKSkKc3ZpbnQ2NF90IHN2cmF4MShzdmludDY0X3QsIHN2aW50NjRfdCk7CiNlbmRpZiAgLy9kZWZpbmVkKF9fQVJNX0ZFQVRVUkVfU1ZFMl9TSEEzKQoKI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9TVkUyX1NNNCkKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzbTRlX3UzMikpKQpzdnVpbnQzMl90IHN2c200ZV91MzIoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c200ZWtleV91MzIpKSkKc3Z1aW50MzJfdCBzdnNtNGVrZXlfdTMyKHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzbTRlX3UzMikpKQpzdnVpbnQzMl90IHN2c200ZShzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c200ZWtleV91MzIpKSkKc3Z1aW50MzJfdCBzdnNtNGVrZXkoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7CiNlbmRpZiAgLy9kZWZpbmVkKF9fQVJNX0ZFQVRVUkVfU1ZFMl9TTTQpCgojaWYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NWRV9CRjE2KQpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJmZG90X25fZjMyKSkpCnN2ZmxvYXQzMl90IHN2YmZkb3Rfbl9mMzIoc3ZmbG9hdDMyX3QsIHN2YmZsb2F0MTZfdCwgYmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmZkb3RfZjMyKSkpCnN2ZmxvYXQzMl90IHN2YmZkb3RfZjMyKHN2ZmxvYXQzMl90LCBzdmJmbG9hdDE2X3QsIHN2YmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmZkb3RfbGFuZV9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3ZiZmRvdF9sYW5lX2YzMihzdmZsb2F0MzJfdCwgc3ZiZmxvYXQxNl90LCBzdmJmbG9hdDE2X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiZm1sYWxiX25fZjMyKSkpCnN2ZmxvYXQzMl90IHN2YmZtbGFsYl9uX2YzMihzdmZsb2F0MzJfdCwgc3ZiZmxvYXQxNl90LCBiZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiZm1sYWxiX2YzMikpKQpzdmZsb2F0MzJfdCBzdmJmbWxhbGJfZjMyKHN2ZmxvYXQzMl90LCBzdmJmbG9hdDE2X3QsIHN2YmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmZtbGFsYl9sYW5lX2YzMikpKQpzdmZsb2F0MzJfdCBzdmJmbWxhbGJfbGFuZV9mMzIoc3ZmbG9hdDMyX3QsIHN2YmZsb2F0MTZfdCwgc3ZiZmxvYXQxNl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmZtbGFsdF9uX2YzMikpKQpzdmZsb2F0MzJfdCBzdmJmbWxhbHRfbl9mMzIoc3ZmbG9hdDMyX3QsIHN2YmZsb2F0MTZfdCwgYmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmZtbGFsdF9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3ZiZm1sYWx0X2YzMihzdmZsb2F0MzJfdCwgc3ZiZmxvYXQxNl90LCBzdmJmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJmbWxhbHRfbGFuZV9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3ZiZm1sYWx0X2xhbmVfZjMyKHN2ZmxvYXQzMl90LCBzdmJmbG9hdDE2X3QsIHN2YmZsb2F0MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJmbW1sYV9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3ZiZm1tbGFfZjMyKHN2ZmxvYXQzMl90LCBzdmJmbG9hdDE2X3QsIHN2YmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2xhc3RhX25fYmYxNikpKQpiZmxvYXQxNl90IHN2Y2xhc3RhX25fYmYxNihzdmJvb2xfdCwgYmZsb2F0MTZfdCwgc3ZiZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbGFzdGFfYmYxNikpKQpzdmJmbG9hdDE2X3Qgc3ZjbGFzdGFfYmYxNihzdmJvb2xfdCwgc3ZiZmxvYXQxNl90LCBzdmJmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNsYXN0Yl9uX2JmMTYpKSkKYmZsb2F0MTZfdCBzdmNsYXN0Yl9uX2JmMTYoc3Zib29sX3QsIGJmbG9hdDE2X3QsIHN2YmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2xhc3RiX2JmMTYpKSkKc3ZiZmxvYXQxNl90IHN2Y2xhc3RiX2JmMTYoc3Zib29sX3QsIHN2YmZsb2F0MTZfdCwgc3ZiZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbnRfYmYxNl9tKSkpCnN2dWludDE2X3Qgc3ZjbnRfYmYxNl9tKHN2dWludDE2X3QsIHN2Ym9vbF90LCBzdmJmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNudF9iZjE2X3gpKSkKc3Z1aW50MTZfdCBzdmNudF9iZjE2X3goc3Zib29sX3QsIHN2YmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y250X2JmMTZfeikpKQpzdnVpbnQxNl90IHN2Y250X2JmMTZfeihzdmJvb2xfdCwgc3ZiZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjcmVhdGUyX2JmMTYpKSkKc3ZiZmxvYXQxNngyX3Qgc3ZjcmVhdGUyX2JmMTYoc3ZiZmxvYXQxNl90LCBzdmJmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNyZWF0ZTNfYmYxNikpKQpzdmJmbG9hdDE2eDNfdCBzdmNyZWF0ZTNfYmYxNihzdmJmbG9hdDE2X3QsIHN2YmZsb2F0MTZfdCwgc3ZiZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjcmVhdGU0X2JmMTYpKSkKc3ZiZmxvYXQxNng0X3Qgc3ZjcmVhdGU0X2JmMTYoc3ZiZmxvYXQxNl90LCBzdmJmbG9hdDE2X3QsIHN2YmZsb2F0MTZfdCwgc3ZiZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfYmYxNl9mMzJfbSkpKQpzdmJmbG9hdDE2X3Qgc3ZjdnRfYmYxNl9mMzJfbShzdmJmbG9hdDE2X3QsIHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X2JmMTZfZjMyX3gpKSkKc3ZiZmxvYXQxNl90IHN2Y3Z0X2JmMTZfZjMyX3goc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRfYmYxNl9mMzJfeikpKQpzdmJmbG9hdDE2X3Qgc3ZjdnRfYmYxNl9mMzJfeihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dG50X2JmMTZfZjMyX20pKSkKc3ZiZmxvYXQxNl90IHN2Y3Z0bnRfYmYxNl9mMzJfbShzdmJmbG9hdDE2X3QsIHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwX25fYmYxNikpKQpzdmJmbG9hdDE2X3Qgc3ZkdXBfbl9iZjE2KGJmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9uX2JmMTZfbSkpKQpzdmJmbG9hdDE2X3Qgc3ZkdXBfbl9iZjE2X20oc3ZiZmxvYXQxNl90LCBzdmJvb2xfdCwgYmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwX25fYmYxNl94KSkpCnN2YmZsb2F0MTZfdCBzdmR1cF9uX2JmMTZfeChzdmJvb2xfdCwgYmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwX25fYmYxNl96KSkpCnN2YmZsb2F0MTZfdCBzdmR1cF9uX2JmMTZfeihzdmJvb2xfdCwgYmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwX2xhbmVfYmYxNikpKQpzdmJmbG9hdDE2X3Qgc3ZkdXBfbGFuZV9iZjE2KHN2YmZsb2F0MTZfdCwgdWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cHFfbl9iZjE2KSkpCnN2YmZsb2F0MTZfdCBzdmR1cHFfbl9iZjE2KGJmbG9hdDE2X3QsIGJmbG9hdDE2X3QsIGJmbG9hdDE2X3QsIGJmbG9hdDE2X3QsIGJmbG9hdDE2X3QsIGJmbG9hdDE2X3QsIGJmbG9hdDE2X3QsIGJmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cHFfbGFuZV9iZjE2KSkpCnN2YmZsb2F0MTZfdCBzdmR1cHFfbGFuZV9iZjE2KHN2YmZsb2F0MTZfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmV4dF9iZjE2KSkpCnN2YmZsb2F0MTZfdCBzdmV4dF9iZjE2KHN2YmZsb2F0MTZfdCwgc3ZiZmxvYXQxNl90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Z2V0Ml9iZjE2KSkpCnN2YmZsb2F0MTZfdCBzdmdldDJfYmYxNihzdmJmbG9hdDE2eDJfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmdldDNfYmYxNikpKQpzdmJmbG9hdDE2X3Qgc3ZnZXQzX2JmMTYoc3ZiZmxvYXQxNngzX3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZnZXQ0X2JmMTYpKSkKc3ZiZmxvYXQxNl90IHN2Z2V0NF9iZjE2KHN2YmZsb2F0MTZ4NF90LCB1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2aW5zcl9uX2JmMTYpKSkKc3ZiZmxvYXQxNl90IHN2aW5zcl9uX2JmMTYoc3ZiZmxvYXQxNl90LCBiZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsYXN0YV9iZjE2KSkpCmJmbG9hdDE2X3Qgc3ZsYXN0YV9iZjE2KHN2Ym9vbF90LCBzdmJmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxhc3RiX2JmMTYpKSkKYmZsb2F0MTZfdCBzdmxhc3RiX2JmMTYoc3Zib29sX3QsIHN2YmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX2JmMTYpKSkKc3ZiZmxvYXQxNl90IHN2bGQxX2JmMTYoc3Zib29sX3QsIGJmbG9hdDE2X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX3ZudW1fYmYxNikpKQpzdmJmbG9hdDE2X3Qgc3ZsZDFfdm51bV9iZjE2KHN2Ym9vbF90LCBiZmxvYXQxNl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXJxX2JmMTYpKSkKc3ZiZmxvYXQxNl90IHN2bGQxcnFfYmYxNihzdmJvb2xfdCwgYmZsb2F0MTZfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDJfYmYxNikpKQpzdmJmbG9hdDE2eDJfdCBzdmxkMl9iZjE2KHN2Ym9vbF90LCBiZmxvYXQxNl90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMl92bnVtX2JmMTYpKSkKc3ZiZmxvYXQxNngyX3Qgc3ZsZDJfdm51bV9iZjE2KHN2Ym9vbF90LCBiZmxvYXQxNl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkM19iZjE2KSkpCnN2YmZsb2F0MTZ4M190IHN2bGQzX2JmMTYoc3Zib29sX3QsIGJmbG9hdDE2X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQzX3ZudW1fYmYxNikpKQpzdmJmbG9hdDE2eDNfdCBzdmxkM192bnVtX2JmMTYoc3Zib29sX3QsIGJmbG9hdDE2X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQ0X2JmMTYpKSkKc3ZiZmxvYXQxNng0X3Qgc3ZsZDRfYmYxNihzdmJvb2xfdCwgYmZsb2F0MTZfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDRfdm51bV9iZjE2KSkpCnN2YmZsb2F0MTZ4NF90IHN2bGQ0X3ZudW1fYmYxNihzdmJvb2xfdCwgYmZsb2F0MTZfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMV9iZjE2KSkpCnN2YmZsb2F0MTZfdCBzdmxkZmYxX2JmMTYoc3Zib29sX3QsIGJmbG9hdDE2X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRmZjFfdm51bV9iZjE2KSkpCnN2YmZsb2F0MTZfdCBzdmxkZmYxX3ZudW1fYmYxNihzdmJvb2xfdCwgYmZsb2F0MTZfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG5mMV9iZjE2KSkpCnN2YmZsb2F0MTZfdCBzdmxkbmYxX2JmMTYoc3Zib29sX3QsIGJmbG9hdDE2X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRuZjFfdm51bV9iZjE2KSkpCnN2YmZsb2F0MTZfdCBzdmxkbmYxX3ZudW1fYmYxNihzdmJvb2xfdCwgYmZsb2F0MTZfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZG50MV9iZjE2KSkpCnN2YmZsb2F0MTZfdCBzdmxkbnQxX2JmMTYoc3Zib29sX3QsIGJmbG9hdDE2X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRudDFfdm51bV9iZjE2KSkpCnN2YmZsb2F0MTZfdCBzdmxkbnQxX3ZudW1fYmYxNihzdmJvb2xfdCwgYmZsb2F0MTZfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZW5fYmYxNikpKQp1aW50NjRfdCBzdmxlbl9iZjE2KHN2YmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2cmV2X2JmMTYpKSkKc3ZiZmxvYXQxNl90IHN2cmV2X2JmMTYoc3ZiZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzZWxfYmYxNikpKQpzdmJmbG9hdDE2X3Qgc3ZzZWxfYmYxNihzdmJvb2xfdCwgc3ZiZmxvYXQxNl90LCBzdmJmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNldDJfYmYxNikpKQpzdmJmbG9hdDE2eDJfdCBzdnNldDJfYmYxNihzdmJmbG9hdDE2eDJfdCwgdWludDY0X3QsIHN2YmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2V0M19iZjE2KSkpCnN2YmZsb2F0MTZ4M190IHN2c2V0M19iZjE2KHN2YmZsb2F0MTZ4M190LCB1aW50NjRfdCwgc3ZiZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzZXQ0X2JmMTYpKSkKc3ZiZmxvYXQxNng0X3Qgc3ZzZXQ0X2JmMTYoc3ZiZmxvYXQxNng0X3QsIHVpbnQ2NF90LCBzdmJmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNwbGljZV9iZjE2KSkpCnN2YmZsb2F0MTZfdCBzdnNwbGljZV9iZjE2KHN2Ym9vbF90LCBzdmJmbG9hdDE2X3QsIHN2YmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxX2JmMTYpKSkKdm9pZCBzdnN0MV9iZjE2KHN2Ym9vbF90LCBiZmxvYXQxNl90ICosIHN2YmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QxX3ZudW1fYmYxNikpKQp2b2lkIHN2c3QxX3ZudW1fYmYxNihzdmJvb2xfdCwgYmZsb2F0MTZfdCAqLCBpbnQ2NF90LCBzdmJmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0Ml9iZjE2KSkpCnZvaWQgc3ZzdDJfYmYxNihzdmJvb2xfdCwgYmZsb2F0MTZfdCAqLCBzdmJmbG9hdDE2eDJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QyX3ZudW1fYmYxNikpKQp2b2lkIHN2c3QyX3ZudW1fYmYxNihzdmJvb2xfdCwgYmZsb2F0MTZfdCAqLCBpbnQ2NF90LCBzdmJmbG9hdDE2eDJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3QzX2JmMTYpKSkKdm9pZCBzdnN0M19iZjE2KHN2Ym9vbF90LCBiZmxvYXQxNl90ICosIHN2YmZsb2F0MTZ4M190KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDNfdm51bV9iZjE2KSkpCnZvaWQgc3ZzdDNfdm51bV9iZjE2KHN2Ym9vbF90LCBiZmxvYXQxNl90ICosIGludDY0X3QsIHN2YmZsb2F0MTZ4M190KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDRfYmYxNikpKQp2b2lkIHN2c3Q0X2JmMTYoc3Zib29sX3QsIGJmbG9hdDE2X3QgKiwgc3ZiZmxvYXQxNng0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0NF92bnVtX2JmMTYpKSkKdm9pZCBzdnN0NF92bnVtX2JmMTYoc3Zib29sX3QsIGJmbG9hdDE2X3QgKiwgaW50NjRfdCwgc3ZiZmxvYXQxNng0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxX2JmMTYpKSkKdm9pZCBzdnN0bnQxX2JmMTYoc3Zib29sX3QsIGJmbG9hdDE2X3QgKiwgc3ZiZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdG50MV92bnVtX2JmMTYpKSkKdm9pZCBzdnN0bnQxX3ZudW1fYmYxNihzdmJvb2xfdCwgYmZsb2F0MTZfdCAqLCBpbnQ2NF90LCBzdmJmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRibF9iZjE2KSkpCnN2YmZsb2F0MTZfdCBzdnRibF9iZjE2KHN2YmZsb2F0MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dHJuMV9iZjE2KSkpCnN2YmZsb2F0MTZfdCBzdnRybjFfYmYxNihzdmJmbG9hdDE2X3QsIHN2YmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dHJuMl9iZjE2KSkpCnN2YmZsb2F0MTZfdCBzdnRybjJfYmYxNihzdmJmbG9hdDE2X3QsIHN2YmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dW5kZWYyX2JmMTYpKSkKc3ZiZmxvYXQxNngyX3Qgc3Z1bmRlZjJfYmYxNigpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnVuZGVmM19iZjE2KSkpCnN2YmZsb2F0MTZ4M190IHN2dW5kZWYzX2JmMTYoKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1bmRlZjRfYmYxNikpKQpzdmJmbG9hdDE2eDRfdCBzdnVuZGVmNF9iZjE2KCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dW5kZWZfYmYxNikpKQpzdmJmbG9hdDE2X3Qgc3Z1bmRlZl9iZjE2KCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXpwMV9iZjE2KSkpCnN2YmZsb2F0MTZfdCBzdnV6cDFfYmYxNihzdmJmbG9hdDE2X3QsIHN2YmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXpwMl9iZjE2KSkpCnN2YmZsb2F0MTZfdCBzdnV6cDJfYmYxNihzdmJmbG9hdDE2X3QsIHN2YmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2emlwMV9iZjE2KSkpCnN2YmZsb2F0MTZfdCBzdnppcDFfYmYxNihzdmJmbG9hdDE2X3QsIHN2YmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2emlwMl9iZjE2KSkpCnN2YmZsb2F0MTZfdCBzdnppcDJfYmYxNihzdmJmbG9hdDE2X3QsIHN2YmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJmZG90X25fZjMyKSkpCnN2ZmxvYXQzMl90IHN2YmZkb3Qoc3ZmbG9hdDMyX3QsIHN2YmZsb2F0MTZfdCwgYmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJmZG90X2YzMikpKQpzdmZsb2F0MzJfdCBzdmJmZG90KHN2ZmxvYXQzMl90LCBzdmJmbG9hdDE2X3QsIHN2YmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJmZG90X2xhbmVfZjMyKSkpCnN2ZmxvYXQzMl90IHN2YmZkb3RfbGFuZShzdmZsb2F0MzJfdCwgc3ZiZmxvYXQxNl90LCBzdmJmbG9hdDE2X3QsIHVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmZtbGFsYl9uX2YzMikpKQpzdmZsb2F0MzJfdCBzdmJmbWxhbGIoc3ZmbG9hdDMyX3QsIHN2YmZsb2F0MTZfdCwgYmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJmbWxhbGJfZjMyKSkpCnN2ZmxvYXQzMl90IHN2YmZtbGFsYihzdmZsb2F0MzJfdCwgc3ZiZmxvYXQxNl90LCBzdmJmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiZm1sYWxiX2xhbmVfZjMyKSkpCnN2ZmxvYXQzMl90IHN2YmZtbGFsYl9sYW5lKHN2ZmxvYXQzMl90LCBzdmJmbG9hdDE2X3QsIHN2YmZsb2F0MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZiZm1sYWx0X25fZjMyKSkpCnN2ZmxvYXQzMl90IHN2YmZtbGFsdChzdmZsb2F0MzJfdCwgc3ZiZmxvYXQxNl90LCBiZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2YmZtbGFsdF9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3ZiZm1sYWx0KHN2ZmxvYXQzMl90LCBzdmJmbG9hdDE2X3QsIHN2YmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJmbWxhbHRfbGFuZV9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3ZiZm1sYWx0X2xhbmUoc3ZmbG9hdDMyX3QsIHN2YmZsb2F0MTZfdCwgc3ZiZmxvYXQxNl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmJmbW1sYV9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3ZiZm1tbGEoc3ZmbG9hdDMyX3QsIHN2YmZsb2F0MTZfdCwgc3ZiZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2xhc3RhX25fYmYxNikpKQpiZmxvYXQxNl90IHN2Y2xhc3RhKHN2Ym9vbF90LCBiZmxvYXQxNl90LCBzdmJmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbGFzdGFfYmYxNikpKQpzdmJmbG9hdDE2X3Qgc3ZjbGFzdGEoc3Zib29sX3QsIHN2YmZsb2F0MTZfdCwgc3ZiZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y2xhc3RiX25fYmYxNikpKQpiZmxvYXQxNl90IHN2Y2xhc3RiKHN2Ym9vbF90LCBiZmxvYXQxNl90LCBzdmJmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbGFzdGJfYmYxNikpKQpzdmJmbG9hdDE2X3Qgc3ZjbGFzdGIoc3Zib29sX3QsIHN2YmZsb2F0MTZfdCwgc3ZiZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y250X2JmMTZfbSkpKQpzdnVpbnQxNl90IHN2Y250X20oc3Z1aW50MTZfdCwgc3Zib29sX3QsIHN2YmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNudF9iZjE2X3gpKSkKc3Z1aW50MTZfdCBzdmNudF94KHN2Ym9vbF90LCBzdmJmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjbnRfYmYxNl96KSkpCnN2dWludDE2X3Qgc3ZjbnRfeihzdmJvb2xfdCwgc3ZiZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3JlYXRlMl9iZjE2KSkpCnN2YmZsb2F0MTZ4Ml90IHN2Y3JlYXRlMihzdmJmbG9hdDE2X3QsIHN2YmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNyZWF0ZTNfYmYxNikpKQpzdmJmbG9hdDE2eDNfdCBzdmNyZWF0ZTMoc3ZiZmxvYXQxNl90LCBzdmJmbG9hdDE2X3QsIHN2YmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmNyZWF0ZTRfYmYxNikpKQpzdmJmbG9hdDE2eDRfdCBzdmNyZWF0ZTQoc3ZiZmxvYXQxNl90LCBzdmJmbG9hdDE2X3QsIHN2YmZsb2F0MTZfdCwgc3ZiZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X2JmMTZfZjMyX20pKSkKc3ZiZmxvYXQxNl90IHN2Y3Z0X2JmMTZfbShzdmJmbG9hdDE2X3QsIHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmN2dF9iZjE2X2YzMl94KSkpCnN2YmZsb2F0MTZfdCBzdmN2dF9iZjE2X3goc3Zib29sX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2Y3Z0X2JmMTZfZjMyX3opKSkKc3ZiZmxvYXQxNl90IHN2Y3Z0X2JmMTZfeihzdmJvb2xfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZjdnRudF9iZjE2X2YzMl9tKSkpCnN2YmZsb2F0MTZfdCBzdmN2dG50X2JmMTZfbShzdmJmbG9hdDE2X3QsIHN2Ym9vbF90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9uX2JmMTYpKSkKc3ZiZmxvYXQxNl90IHN2ZHVwX2JmMTYoYmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9uX2JmMTZfbSkpKQpzdmJmbG9hdDE2X3Qgc3ZkdXBfYmYxNl9tKHN2YmZsb2F0MTZfdCwgc3Zib29sX3QsIGJmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBfbl9iZjE2X3gpKSkKc3ZiZmxvYXQxNl90IHN2ZHVwX2JmMTZfeChzdmJvb2xfdCwgYmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmR1cF9uX2JmMTZfeikpKQpzdmJmbG9hdDE2X3Qgc3ZkdXBfYmYxNl96KHN2Ym9vbF90LCBiZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwX2xhbmVfYmYxNikpKQpzdmJmbG9hdDE2X3Qgc3ZkdXBfbGFuZShzdmJmbG9hdDE2X3QsIHVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2ZHVwcV9uX2JmMTYpKSkKc3ZiZmxvYXQxNl90IHN2ZHVwcV9iZjE2KGJmbG9hdDE2X3QsIGJmbG9hdDE2X3QsIGJmbG9hdDE2X3QsIGJmbG9hdDE2X3QsIGJmbG9hdDE2X3QsIGJmbG9hdDE2X3QsIGJmbG9hdDE2X3QsIGJmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZkdXBxX2xhbmVfYmYxNikpKQpzdmJmbG9hdDE2X3Qgc3ZkdXBxX2xhbmUoc3ZiZmxvYXQxNl90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmV4dF9iZjE2KSkpCnN2YmZsb2F0MTZfdCBzdmV4dChzdmJmbG9hdDE2X3QsIHN2YmZsb2F0MTZfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZnZXQyX2JmMTYpKSkKc3ZiZmxvYXQxNl90IHN2Z2V0MihzdmJmbG9hdDE2eDJfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZnZXQzX2JmMTYpKSkKc3ZiZmxvYXQxNl90IHN2Z2V0MyhzdmJmbG9hdDE2eDNfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZnZXQ0X2JmMTYpKSkKc3ZiZmxvYXQxNl90IHN2Z2V0NChzdmJmbG9hdDE2eDRfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZpbnNyX25fYmYxNikpKQpzdmJmbG9hdDE2X3Qgc3ZpbnNyKHN2YmZsb2F0MTZfdCwgYmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxhc3RhX2JmMTYpKSkKYmZsb2F0MTZfdCBzdmxhc3RhKHN2Ym9vbF90LCBzdmJmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsYXN0Yl9iZjE2KSkpCmJmbG9hdDE2X3Qgc3ZsYXN0YihzdmJvb2xfdCwgc3ZiZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxX2JmMTYpKSkKc3ZiZmxvYXQxNl90IHN2bGQxKHN2Ym9vbF90LCBiZmxvYXQxNl90IGNvbnN0ICopOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFfdm51bV9iZjE2KSkpCnN2YmZsb2F0MTZfdCBzdmxkMV92bnVtKHN2Ym9vbF90LCBiZmxvYXQxNl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFycV9iZjE2KSkpCnN2YmZsb2F0MTZfdCBzdmxkMXJxKHN2Ym9vbF90LCBiZmxvYXQxNl90IGNvbnN0ICopOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDJfYmYxNikpKQpzdmJmbG9hdDE2eDJfdCBzdmxkMihzdmJvb2xfdCwgYmZsb2F0MTZfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQyX3ZudW1fYmYxNikpKQpzdmJmbG9hdDE2eDJfdCBzdmxkMl92bnVtKHN2Ym9vbF90LCBiZmxvYXQxNl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDNfYmYxNikpKQpzdmJmbG9hdDE2eDNfdCBzdmxkMyhzdmJvb2xfdCwgYmZsb2F0MTZfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQzX3ZudW1fYmYxNikpKQpzdmJmbG9hdDE2eDNfdCBzdmxkM192bnVtKHN2Ym9vbF90LCBiZmxvYXQxNl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDRfYmYxNikpKQpzdmJmbG9hdDE2eDRfdCBzdmxkNChzdmJvb2xfdCwgYmZsb2F0MTZfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQ0X3ZudW1fYmYxNikpKQpzdmJmbG9hdDE2eDRfdCBzdmxkNF92bnVtKHN2Ym9vbF90LCBiZmxvYXQxNl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMV9iZjE2KSkpCnN2YmZsb2F0MTZfdCBzdmxkZmYxKHN2Ym9vbF90LCBiZmxvYXQxNl90IGNvbnN0ICopOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZGZmMV92bnVtX2JmMTYpKSkKc3ZiZmxvYXQxNl90IHN2bGRmZjFfdm51bShzdmJvb2xfdCwgYmZsb2F0MTZfdCBjb25zdCAqLCBpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRuZjFfYmYxNikpKQpzdmJmbG9hdDE2X3Qgc3ZsZG5mMShzdmJvb2xfdCwgYmZsb2F0MTZfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGRuZjFfdm51bV9iZjE2KSkpCnN2YmZsb2F0MTZfdCBzdmxkbmYxX3ZudW0oc3Zib29sX3QsIGJmbG9hdDE2X3QgY29uc3QgKiwgaW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxX2JmMTYpKSkKc3ZiZmxvYXQxNl90IHN2bGRudDEoc3Zib29sX3QsIGJmbG9hdDE2X3QgY29uc3QgKik7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkbnQxX3ZudW1fYmYxNikpKQpzdmJmbG9hdDE2X3Qgc3ZsZG50MV92bnVtKHN2Ym9vbF90LCBiZmxvYXQxNl90IGNvbnN0ICosIGludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZW5fYmYxNikpKQp1aW50NjRfdCBzdmxlbihzdmJmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZyZXZfYmYxNikpKQpzdmJmbG9hdDE2X3Qgc3ZyZXYoc3ZiZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2VsX2JmMTYpKSkKc3ZiZmxvYXQxNl90IHN2c2VsKHN2Ym9vbF90LCBzdmJmbG9hdDE2X3QsIHN2YmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNldDJfYmYxNikpKQpzdmJmbG9hdDE2eDJfdCBzdnNldDIoc3ZiZmxvYXQxNngyX3QsIHVpbnQ2NF90LCBzdmJmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzZXQzX2JmMTYpKSkKc3ZiZmxvYXQxNngzX3Qgc3ZzZXQzKHN2YmZsb2F0MTZ4M190LCB1aW50NjRfdCwgc3ZiZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c2V0NF9iZjE2KSkpCnN2YmZsb2F0MTZ4NF90IHN2c2V0NChzdmJmbG9hdDE2eDRfdCwgdWludDY0X3QsIHN2YmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnNwbGljZV9iZjE2KSkpCnN2YmZsb2F0MTZfdCBzdnNwbGljZShzdmJvb2xfdCwgc3ZiZmxvYXQxNl90LCBzdmJmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDFfYmYxNikpKQp2b2lkIHN2c3QxKHN2Ym9vbF90LCBiZmxvYXQxNl90ICosIHN2YmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0MV92bnVtX2JmMTYpKSkKdm9pZCBzdnN0MV92bnVtKHN2Ym9vbF90LCBiZmxvYXQxNl90ICosIGludDY0X3QsIHN2YmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0Ml9iZjE2KSkpCnZvaWQgc3ZzdDIoc3Zib29sX3QsIGJmbG9hdDE2X3QgKiwgc3ZiZmxvYXQxNngyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDJfdm51bV9iZjE2KSkpCnZvaWQgc3ZzdDJfdm51bShzdmJvb2xfdCwgYmZsb2F0MTZfdCAqLCBpbnQ2NF90LCBzdmJmbG9hdDE2eDJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0M19iZjE2KSkpCnZvaWQgc3ZzdDMoc3Zib29sX3QsIGJmbG9hdDE2X3QgKiwgc3ZiZmxvYXQxNngzX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDNfdm51bV9iZjE2KSkpCnZvaWQgc3ZzdDNfdm51bShzdmJvb2xfdCwgYmZsb2F0MTZfdCAqLCBpbnQ2NF90LCBzdmJmbG9hdDE2eDNfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0NF9iZjE2KSkpCnZvaWQgc3ZzdDQoc3Zib29sX3QsIGJmbG9hdDE2X3QgKiwgc3ZiZmxvYXQxNng0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdDRfdm51bV9iZjE2KSkpCnZvaWQgc3ZzdDRfdm51bShzdmJvb2xfdCwgYmZsb2F0MTZfdCAqLCBpbnQ2NF90LCBzdmJmbG9hdDE2eDRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxX2JmMTYpKSkKdm9pZCBzdnN0bnQxKHN2Ym9vbF90LCBiZmxvYXQxNl90ICosIHN2YmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN0bnQxX3ZudW1fYmYxNikpKQp2b2lkIHN2c3RudDFfdm51bShzdmJvb2xfdCwgYmZsb2F0MTZfdCAqLCBpbnQ2NF90LCBzdmJmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0YmxfYmYxNikpKQpzdmJmbG9hdDE2X3Qgc3Z0Ymwoc3ZiZmxvYXQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dHJuMV9iZjE2KSkpCnN2YmZsb2F0MTZfdCBzdnRybjEoc3ZiZmxvYXQxNl90LCBzdmJmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0cm4yX2JmMTYpKSkKc3ZiZmxvYXQxNl90IHN2dHJuMihzdmJmbG9hdDE2X3QsIHN2YmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnV6cDFfYmYxNikpKQpzdmJmbG9hdDE2X3Qgc3Z1enAxKHN2YmZsb2F0MTZfdCwgc3ZiZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXpwMl9iZjE2KSkpCnN2YmZsb2F0MTZfdCBzdnV6cDIoc3ZiZmxvYXQxNl90LCBzdmJmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z6aXAxX2JmMTYpKSkKc3ZiZmxvYXQxNl90IHN2emlwMShzdmJmbG9hdDE2X3QsIHN2YmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnppcDJfYmYxNikpKQpzdmJmbG9hdDE2X3Qgc3Z6aXAyKHN2YmZsb2F0MTZfdCwgc3ZiZmxvYXQxNl90KTsKI2VuZGlmICAvL2RlZmluZWQoX19BUk1fRkVBVFVSRV9TVkVfQkYxNikKCiNpZiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfU1ZFX01BVE1VTF9GUDMyKQpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1tbGFfZjMyKSkpCnN2ZmxvYXQzMl90IHN2bW1sYV9mMzIoc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1tbGFfZjMyKSkpCnN2ZmxvYXQzMl90IHN2bW1sYShzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKI2VuZGlmICAvL2RlZmluZWQoX19BUk1fRkVBVFVSRV9TVkVfTUFUTVVMX0ZQMzIpCgojaWYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NWRV9NQVRNVUxfRlA2NCkKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFyb191OCkpKQpzdnVpbnQ4X3Qgc3ZsZDFyb191OChzdmJvb2xfdCwgdWludDhfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFyb191MzIpKSkKc3Z1aW50MzJfdCBzdmxkMXJvX3UzMihzdmJvb2xfdCwgdWludDMyX3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxcm9fdTY0KSkpCnN2dWludDY0X3Qgc3ZsZDFyb191NjQoc3Zib29sX3QsIHVpbnQ2NF90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXJvX3UxNikpKQpzdnVpbnQxNl90IHN2bGQxcm9fdTE2KHN2Ym9vbF90LCB1aW50MTZfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFyb19zOCkpKQpzdmludDhfdCBzdmxkMXJvX3M4KHN2Ym9vbF90LCBpbnQ4X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxcm9fZjY0KSkpCnN2ZmxvYXQ2NF90IHN2bGQxcm9fZjY0KHN2Ym9vbF90LCBmbG9hdDY0X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxcm9fZjMyKSkpCnN2ZmxvYXQzMl90IHN2bGQxcm9fZjMyKHN2Ym9vbF90LCBmbG9hdDMyX3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxcm9fZjE2KSkpCnN2ZmxvYXQxNl90IHN2bGQxcm9fZjE2KHN2Ym9vbF90LCBmbG9hdDE2X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxcm9fczMyKSkpCnN2aW50MzJfdCBzdmxkMXJvX3MzMihzdmJvb2xfdCwgaW50MzJfdCBjb25zdCAqKTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFyb19zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxcm9fczY0KHN2Ym9vbF90LCBpbnQ2NF90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXJvX3MxNikpKQpzdmludDE2X3Qgc3ZsZDFyb19zMTYoc3Zib29sX3QsIGludDE2X3QgY29uc3QgKik7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bW1sYV9mNjQpKSkKc3ZmbG9hdDY0X3Qgc3ZtbWxhX2Y2NChzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0cm4xcV91OCkpKQpzdnVpbnQ4X3Qgc3Z0cm4xcV91OChzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dHJuMXFfdTMyKSkpCnN2dWludDMyX3Qgc3Z0cm4xcV91MzIoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dHJuMXFfdTY0KSkpCnN2dWludDY0X3Qgc3Z0cm4xcV91NjQoc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dHJuMXFfdTE2KSkpCnN2dWludDE2X3Qgc3Z0cm4xcV91MTYoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dHJuMXFfczgpKSkKc3ZpbnQ4X3Qgc3Z0cm4xcV9zOChzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRybjFxX2Y2NCkpKQpzdmZsb2F0NjRfdCBzdnRybjFxX2Y2NChzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRybjFxX2YzMikpKQpzdmZsb2F0MzJfdCBzdnRybjFxX2YzMihzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRybjFxX2YxNikpKQpzdmZsb2F0MTZfdCBzdnRybjFxX2YxNihzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRybjFxX3MzMikpKQpzdmludDMyX3Qgc3Z0cm4xcV9zMzIoc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRybjFxX3M2NCkpKQpzdmludDY0X3Qgc3Z0cm4xcV9zNjQoc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRybjFxX3MxNikpKQpzdmludDE2X3Qgc3Z0cm4xcV9zMTYoc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRybjJxX3U4KSkpCnN2dWludDhfdCBzdnRybjJxX3U4KHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0cm4ycV91MzIpKSkKc3Z1aW50MzJfdCBzdnRybjJxX3UzMihzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0cm4ycV91NjQpKSkKc3Z1aW50NjRfdCBzdnRybjJxX3U2NChzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0cm4ycV91MTYpKSkKc3Z1aW50MTZfdCBzdnRybjJxX3UxNihzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0cm4ycV9zOCkpKQpzdmludDhfdCBzdnRybjJxX3M4KHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dHJuMnFfZjY0KSkpCnN2ZmxvYXQ2NF90IHN2dHJuMnFfZjY0KHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dHJuMnFfZjMyKSkpCnN2ZmxvYXQzMl90IHN2dHJuMnFfZjMyKHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dHJuMnFfZjE2KSkpCnN2ZmxvYXQxNl90IHN2dHJuMnFfZjE2KHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dHJuMnFfczMyKSkpCnN2aW50MzJfdCBzdnRybjJxX3MzMihzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dHJuMnFfczY0KSkpCnN2aW50NjRfdCBzdnRybjJxX3M2NChzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dHJuMnFfczE2KSkpCnN2aW50MTZfdCBzdnRybjJxX3MxNihzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXpwMXFfdTgpKSkKc3Z1aW50OF90IHN2dXpwMXFfdTgoc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnV6cDFxX3UzMikpKQpzdnVpbnQzMl90IHN2dXpwMXFfdTMyKHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnV6cDFxX3U2NCkpKQpzdnVpbnQ2NF90IHN2dXpwMXFfdTY0KHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnV6cDFxX3UxNikpKQpzdnVpbnQxNl90IHN2dXpwMXFfdTE2KHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnV6cDFxX3M4KSkpCnN2aW50OF90IHN2dXpwMXFfczgoc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1enAxcV9mNjQpKSkKc3ZmbG9hdDY0X3Qgc3Z1enAxcV9mNjQoc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1enAxcV9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3Z1enAxcV9mMzIoc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1enAxcV9mMTYpKSkKc3ZmbG9hdDE2X3Qgc3Z1enAxcV9mMTYoc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1enAxcV9zMzIpKSkKc3ZpbnQzMl90IHN2dXpwMXFfczMyKHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1enAxcV9zNjQpKSkKc3ZpbnQ2NF90IHN2dXpwMXFfczY0KHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1enAxcV9zMTYpKSkKc3ZpbnQxNl90IHN2dXpwMXFfczE2KHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1enAycV91OCkpKQpzdnVpbnQ4X3Qgc3Z1enAycV91OChzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXpwMnFfdTMyKSkpCnN2dWludDMyX3Qgc3Z1enAycV91MzIoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXpwMnFfdTY0KSkpCnN2dWludDY0X3Qgc3Z1enAycV91NjQoc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXpwMnFfdTE2KSkpCnN2dWludDE2X3Qgc3Z1enAycV91MTYoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXpwMnFfczgpKSkKc3ZpbnQ4X3Qgc3Z1enAycV9zOChzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnV6cDJxX2Y2NCkpKQpzdmZsb2F0NjRfdCBzdnV6cDJxX2Y2NChzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnV6cDJxX2YzMikpKQpzdmZsb2F0MzJfdCBzdnV6cDJxX2YzMihzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnV6cDJxX2YxNikpKQpzdmZsb2F0MTZfdCBzdnV6cDJxX2YxNihzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnV6cDJxX3MzMikpKQpzdmludDMyX3Qgc3Z1enAycV9zMzIoc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnV6cDJxX3M2NCkpKQpzdmludDY0X3Qgc3Z1enAycV9zNjQoc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnV6cDJxX3MxNikpKQpzdmludDE2X3Qgc3Z1enAycV9zMTYoc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnppcDFxX3U4KSkpCnN2dWludDhfdCBzdnppcDFxX3U4KHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z6aXAxcV91MzIpKSkKc3Z1aW50MzJfdCBzdnppcDFxX3UzMihzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z6aXAxcV91NjQpKSkKc3Z1aW50NjRfdCBzdnppcDFxX3U2NChzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z6aXAxcV91MTYpKSkKc3Z1aW50MTZfdCBzdnppcDFxX3UxNihzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z6aXAxcV9zOCkpKQpzdmludDhfdCBzdnppcDFxX3M4KHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2emlwMXFfZjY0KSkpCnN2ZmxvYXQ2NF90IHN2emlwMXFfZjY0KHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2emlwMXFfZjMyKSkpCnN2ZmxvYXQzMl90IHN2emlwMXFfZjMyKHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2emlwMXFfZjE2KSkpCnN2ZmxvYXQxNl90IHN2emlwMXFfZjE2KHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2emlwMXFfczMyKSkpCnN2aW50MzJfdCBzdnppcDFxX3MzMihzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2emlwMXFfczY0KSkpCnN2aW50NjRfdCBzdnppcDFxX3M2NChzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2emlwMXFfczE2KSkpCnN2aW50MTZfdCBzdnppcDFxX3MxNihzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2emlwMnFfdTgpKSkKc3Z1aW50OF90IHN2emlwMnFfdTgoc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnppcDJxX3UzMikpKQpzdnVpbnQzMl90IHN2emlwMnFfdTMyKHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnppcDJxX3U2NCkpKQpzdnVpbnQ2NF90IHN2emlwMnFfdTY0KHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnppcDJxX3UxNikpKQpzdnVpbnQxNl90IHN2emlwMnFfdTE2KHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnppcDJxX3M4KSkpCnN2aW50OF90IHN2emlwMnFfczgoc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z6aXAycV9mNjQpKSkKc3ZmbG9hdDY0X3Qgc3Z6aXAycV9mNjQoc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z6aXAycV9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3Z6aXAycV9mMzIoc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z6aXAycV9mMTYpKSkKc3ZmbG9hdDE2X3Qgc3Z6aXAycV9mMTYoc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z6aXAycV9zMzIpKSkKc3ZpbnQzMl90IHN2emlwMnFfczMyKHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z6aXAycV9zNjQpKSkKc3ZpbnQ2NF90IHN2emlwMnFfczY0KHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z6aXAycV9zMTYpKSkKc3ZpbnQxNl90IHN2emlwMnFfczE2KHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxcm9fdTgpKSkKc3Z1aW50OF90IHN2bGQxcm8oc3Zib29sX3QsIHVpbnQ4X3QgY29uc3QgKik7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXJvX3UzMikpKQpzdnVpbnQzMl90IHN2bGQxcm8oc3Zib29sX3QsIHVpbnQzMl90IGNvbnN0ICopOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFyb191NjQpKSkKc3Z1aW50NjRfdCBzdmxkMXJvKHN2Ym9vbF90LCB1aW50NjRfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxcm9fdTE2KSkpCnN2dWludDE2X3Qgc3ZsZDFybyhzdmJvb2xfdCwgdWludDE2X3QgY29uc3QgKik7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXJvX3M4KSkpCnN2aW50OF90IHN2bGQxcm8oc3Zib29sX3QsIGludDhfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxcm9fZjY0KSkpCnN2ZmxvYXQ2NF90IHN2bGQxcm8oc3Zib29sX3QsIGZsb2F0NjRfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxcm9fZjMyKSkpCnN2ZmxvYXQzMl90IHN2bGQxcm8oc3Zib29sX3QsIGZsb2F0MzJfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxcm9fZjE2KSkpCnN2ZmxvYXQxNl90IHN2bGQxcm8oc3Zib29sX3QsIGZsb2F0MTZfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxcm9fczMyKSkpCnN2aW50MzJfdCBzdmxkMXJvKHN2Ym9vbF90LCBpbnQzMl90IGNvbnN0ICopOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFyb19zNjQpKSkKc3ZpbnQ2NF90IHN2bGQxcm8oc3Zib29sX3QsIGludDY0X3QgY29uc3QgKik7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdmxkMXJvX3MxNikpKQpzdmludDE2X3Qgc3ZsZDFybyhzdmJvb2xfdCwgaW50MTZfdCBjb25zdCAqKTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bW1sYV9mNjQpKSkKc3ZmbG9hdDY0X3Qgc3ZtbWxhKHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0cm4xcV91OCkpKQpzdnVpbnQ4X3Qgc3Z0cm4xcShzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRybjFxX3UzMikpKQpzdnVpbnQzMl90IHN2dHJuMXEoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRybjFxX3U2NCkpKQpzdnVpbnQ2NF90IHN2dHJuMXEoc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRybjFxX3UxNikpKQpzdnVpbnQxNl90IHN2dHJuMXEoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRybjFxX3M4KSkpCnN2aW50OF90IHN2dHJuMXEoc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dHJuMXFfZjY0KSkpCnN2ZmxvYXQ2NF90IHN2dHJuMXEoc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dHJuMXFfZjMyKSkpCnN2ZmxvYXQzMl90IHN2dHJuMXEoc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dHJuMXFfZjE2KSkpCnN2ZmxvYXQxNl90IHN2dHJuMXEoc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dHJuMXFfczMyKSkpCnN2aW50MzJfdCBzdnRybjFxKHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dHJuMXFfczY0KSkpCnN2aW50NjRfdCBzdnRybjFxKHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dHJuMXFfczE2KSkpCnN2aW50MTZfdCBzdnRybjFxKHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dHJuMnFfdTgpKSkKc3Z1aW50OF90IHN2dHJuMnEoc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0cm4ycV91MzIpKSkKc3Z1aW50MzJfdCBzdnRybjJxKHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0cm4ycV91NjQpKSkKc3Z1aW50NjRfdCBzdnRybjJxKHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0cm4ycV91MTYpKSkKc3Z1aW50MTZfdCBzdnRybjJxKHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0cm4ycV9zOCkpKQpzdmludDhfdCBzdnRybjJxKHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRybjJxX2Y2NCkpKQpzdmZsb2F0NjRfdCBzdnRybjJxKHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRybjJxX2YzMikpKQpzdmZsb2F0MzJfdCBzdnRybjJxKHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRybjJxX2YxNikpKQpzdmZsb2F0MTZfdCBzdnRybjJxKHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRybjJxX3MzMikpKQpzdmludDMyX3Qgc3Z0cm4ycShzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRybjJxX3M2NCkpKQpzdmludDY0X3Qgc3Z0cm4ycShzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRybjJxX3MxNikpKQpzdmludDE2X3Qgc3Z0cm4ycShzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnV6cDFxX3U4KSkpCnN2dWludDhfdCBzdnV6cDFxKHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXpwMXFfdTMyKSkpCnN2dWludDMyX3Qgc3Z1enAxcShzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXpwMXFfdTY0KSkpCnN2dWludDY0X3Qgc3Z1enAxcShzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXpwMXFfdTE2KSkpCnN2dWludDE2X3Qgc3Z1enAxcShzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXpwMXFfczgpKSkKc3ZpbnQ4X3Qgc3Z1enAxcShzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1enAxcV9mNjQpKSkKc3ZmbG9hdDY0X3Qgc3Z1enAxcShzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1enAxcV9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3Z1enAxcShzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1enAxcV9mMTYpKSkKc3ZmbG9hdDE2X3Qgc3Z1enAxcShzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1enAxcV9zMzIpKSkKc3ZpbnQzMl90IHN2dXpwMXEoc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1enAxcV9zNjQpKSkKc3ZpbnQ2NF90IHN2dXpwMXEoc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1enAxcV9zMTYpKSkKc3ZpbnQxNl90IHN2dXpwMXEoc3ZpbnQxNl90LCBzdmludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1enAycV91OCkpKQpzdnVpbnQ4X3Qgc3Z1enAycShzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnV6cDJxX3UzMikpKQpzdnVpbnQzMl90IHN2dXpwMnEoc3Z1aW50MzJfdCwgc3Z1aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnV6cDJxX3U2NCkpKQpzdnVpbnQ2NF90IHN2dXpwMnEoc3Z1aW50NjRfdCwgc3Z1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnV6cDJxX3UxNikpKQpzdnVpbnQxNl90IHN2dXpwMnEoc3Z1aW50MTZfdCwgc3Z1aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnV6cDJxX3M4KSkpCnN2aW50OF90IHN2dXpwMnEoc3ZpbnQ4X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXpwMnFfZjY0KSkpCnN2ZmxvYXQ2NF90IHN2dXpwMnEoc3ZmbG9hdDY0X3QsIHN2ZmxvYXQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXpwMnFfZjMyKSkpCnN2ZmxvYXQzMl90IHN2dXpwMnEoc3ZmbG9hdDMyX3QsIHN2ZmxvYXQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXpwMnFfZjE2KSkpCnN2ZmxvYXQxNl90IHN2dXpwMnEoc3ZmbG9hdDE2X3QsIHN2ZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXpwMnFfczMyKSkpCnN2aW50MzJfdCBzdnV6cDJxKHN2aW50MzJfdCwgc3ZpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXpwMnFfczY0KSkpCnN2aW50NjRfdCBzdnV6cDJxKHN2aW50NjRfdCwgc3ZpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXpwMnFfczE2KSkpCnN2aW50MTZfdCBzdnV6cDJxKHN2aW50MTZfdCwgc3ZpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2emlwMXFfdTgpKSkKc3Z1aW50OF90IHN2emlwMXEoc3Z1aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z6aXAxcV91MzIpKSkKc3Z1aW50MzJfdCBzdnppcDFxKHN2dWludDMyX3QsIHN2dWludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z6aXAxcV91NjQpKSkKc3Z1aW50NjRfdCBzdnppcDFxKHN2dWludDY0X3QsIHN2dWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z6aXAxcV91MTYpKSkKc3Z1aW50MTZfdCBzdnppcDFxKHN2dWludDE2X3QsIHN2dWludDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z6aXAxcV9zOCkpKQpzdmludDhfdCBzdnppcDFxKHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnppcDFxX2Y2NCkpKQpzdmZsb2F0NjRfdCBzdnppcDFxKHN2ZmxvYXQ2NF90LCBzdmZsb2F0NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnppcDFxX2YzMikpKQpzdmZsb2F0MzJfdCBzdnppcDFxKHN2ZmxvYXQzMl90LCBzdmZsb2F0MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnppcDFxX2YxNikpKQpzdmZsb2F0MTZfdCBzdnppcDFxKHN2ZmxvYXQxNl90LCBzdmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnppcDFxX3MzMikpKQpzdmludDMyX3Qgc3Z6aXAxcShzdmludDMyX3QsIHN2aW50MzJfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnppcDFxX3M2NCkpKQpzdmludDY0X3Qgc3Z6aXAxcShzdmludDY0X3QsIHN2aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnppcDFxX3MxNikpKQpzdmludDE2X3Qgc3Z6aXAxcShzdmludDE2X3QsIHN2aW50MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnppcDJxX3U4KSkpCnN2dWludDhfdCBzdnppcDJxKHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2emlwMnFfdTMyKSkpCnN2dWludDMyX3Qgc3Z6aXAycShzdnVpbnQzMl90LCBzdnVpbnQzMl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2emlwMnFfdTY0KSkpCnN2dWludDY0X3Qgc3Z6aXAycShzdnVpbnQ2NF90LCBzdnVpbnQ2NF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2emlwMnFfdTE2KSkpCnN2dWludDE2X3Qgc3Z6aXAycShzdnVpbnQxNl90LCBzdnVpbnQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2emlwMnFfczgpKSkKc3ZpbnQ4X3Qgc3Z6aXAycShzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z6aXAycV9mNjQpKSkKc3ZmbG9hdDY0X3Qgc3Z6aXAycShzdmZsb2F0NjRfdCwgc3ZmbG9hdDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z6aXAycV9mMzIpKSkKc3ZmbG9hdDMyX3Qgc3Z6aXAycShzdmZsb2F0MzJfdCwgc3ZmbG9hdDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z6aXAycV9mMTYpKSkKc3ZmbG9hdDE2X3Qgc3Z6aXAycShzdmZsb2F0MTZfdCwgc3ZmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z6aXAycV9zMzIpKSkKc3ZpbnQzMl90IHN2emlwMnEoc3ZpbnQzMl90LCBzdmludDMyX3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z6aXAycV9zNjQpKSkKc3ZpbnQ2NF90IHN2emlwMnEoc3ZpbnQ2NF90LCBzdmludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z6aXAycV9zMTYpKSkKc3ZpbnQxNl90IHN2emlwMnEoc3ZpbnQxNl90LCBzdmludDE2X3QpOwojZW5kaWYgIC8vZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NWRV9NQVRNVUxfRlA2NCkKCiNpZiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfU1ZFX01BVE1VTF9GUDY0KSAmJiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfU1ZFX0JGMTYpCl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bGQxcm9fYmYxNikpKQpzdmJmbG9hdDE2X3Qgc3ZsZDFyb19iZjE2KHN2Ym9vbF90LCBiZmxvYXQxNl90IGNvbnN0ICopOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnRybjFxX2JmMTYpKSkKc3ZiZmxvYXQxNl90IHN2dHJuMXFfYmYxNihzdmJmbG9hdDE2X3QsIHN2YmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dHJuMnFfYmYxNikpKQpzdmJmbG9hdDE2X3Qgc3Z0cm4ycV9iZjE2KHN2YmZsb2F0MTZfdCwgc3ZiZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1enAxcV9iZjE2KSkpCnN2YmZsb2F0MTZfdCBzdnV6cDFxX2JmMTYoc3ZiZmxvYXQxNl90LCBzdmJmbG9hdDE2X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnV6cDJxX2JmMTYpKSkKc3ZiZmxvYXQxNl90IHN2dXpwMnFfYmYxNihzdmJmbG9hdDE2X3QsIHN2YmZsb2F0MTZfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2emlwMXFfYmYxNikpKQpzdmJmbG9hdDE2X3Qgc3Z6aXAxcV9iZjE2KHN2YmZsb2F0MTZfdCwgc3ZiZmxvYXQxNl90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z6aXAycV9iZjE2KSkpCnN2YmZsb2F0MTZfdCBzdnppcDJxX2JmMTYoc3ZiZmxvYXQxNl90LCBzdmJmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZsZDFyb19iZjE2KSkpCnN2YmZsb2F0MTZfdCBzdmxkMXJvKHN2Ym9vbF90LCBiZmxvYXQxNl90IGNvbnN0ICopOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z0cm4xcV9iZjE2KSkpCnN2YmZsb2F0MTZfdCBzdnRybjFxKHN2YmZsb2F0MTZfdCwgc3ZiZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dHJuMnFfYmYxNikpKQpzdmJmbG9hdDE2X3Qgc3Z0cm4ycShzdmJmbG9hdDE2X3QsIHN2YmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnV6cDFxX2JmMTYpKSkKc3ZiZmxvYXQxNl90IHN2dXpwMXEoc3ZiZmxvYXQxNl90LCBzdmJmbG9hdDE2X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1enAycV9iZjE2KSkpCnN2YmZsb2F0MTZfdCBzdnV6cDJxKHN2YmZsb2F0MTZfdCwgc3ZiZmxvYXQxNl90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2emlwMXFfYmYxNikpKQpzdmJmbG9hdDE2X3Qgc3Z6aXAxcShzdmJmbG9hdDE2X3QsIHN2YmZsb2F0MTZfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnppcDJxX2JmMTYpKSkKc3ZiZmxvYXQxNl90IHN2emlwMnEoc3ZiZmxvYXQxNl90LCBzdmJmbG9hdDE2X3QpOwojZW5kaWYgIC8vZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NWRV9NQVRNVUxfRlA2NCkgJiYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NWRV9CRjE2KQoKI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9TVkVfTUFUTVVMX0lOVDgpCl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bW1sYV9zMzIpKSkKc3ZpbnQzMl90IHN2bW1sYV9zMzIoc3ZpbnQzMl90LCBzdmludDhfdCwgc3ZpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1tbGFfdTMyKSkpCnN2dWludDMyX3Qgc3ZtbWxhX3UzMihzdnVpbnQzMl90LCBzdnVpbnQ4X3QsIHN2dWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vkb3Rfbl9zMzIpKSkKc3ZpbnQzMl90IHN2c3Vkb3Rfbl9zMzIoc3ZpbnQzMl90LCBzdmludDhfdCwgdWludDhfdCk7Cl9fYWkgX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vkb3RfczMyKSkpCnN2aW50MzJfdCBzdnN1ZG90X3MzMihzdmludDMyX3QsIHN2aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1ZG90X2xhbmVfczMyKSkpCnN2aW50MzJfdCBzdnN1ZG90X2xhbmVfczMyKHN2aW50MzJfdCwgc3ZpbnQ4X3QsIHN2dWludDhfdCwgdWludDY0X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnVzZG90X25fczMyKSkpCnN2aW50MzJfdCBzdnVzZG90X25fczMyKHN2aW50MzJfdCwgc3Z1aW50OF90LCBpbnQ4X3QpOwpfX2FpIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnVzZG90X3MzMikpKQpzdmludDMyX3Qgc3Z1c2RvdF9zMzIoc3ZpbnQzMl90LCBzdnVpbnQ4X3QsIHN2aW50OF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1c2RvdF9sYW5lX3MzMikpKQpzdmludDMyX3Qgc3Z1c2RvdF9sYW5lX3MzMihzdmludDMyX3QsIHN2dWludDhfdCwgc3ZpbnQ4X3QsIHVpbnQ2NF90KTsKX19haSBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1c21tbGFfczMyKSkpCnN2aW50MzJfdCBzdnVzbW1sYV9zMzIoc3ZpbnQzMl90LCBzdnVpbnQ4X3QsIHN2aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2bW1sYV9zMzIpKSkKc3ZpbnQzMl90IHN2bW1sYShzdmludDMyX3QsIHN2aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdm1tbGFfdTMyKSkpCnN2dWludDMyX3Qgc3ZtbWxhKHN2dWludDMyX3QsIHN2dWludDhfdCwgc3Z1aW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2c3Vkb3Rfbl9zMzIpKSkKc3ZpbnQzMl90IHN2c3Vkb3Qoc3ZpbnQzMl90LCBzdmludDhfdCwgdWludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnN1ZG90X3MzMikpKQpzdmludDMyX3Qgc3ZzdWRvdChzdmludDMyX3QsIHN2aW50OF90LCBzdnVpbnQ4X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3ZzdWRvdF9sYW5lX3MzMikpKQpzdmludDMyX3Qgc3ZzdWRvdF9sYW5lKHN2aW50MzJfdCwgc3ZpbnQ4X3QsIHN2dWludDhfdCwgdWludDY0X3QpOwpfX2FpbyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9zdmVfc3Z1c2RvdF9uX3MzMikpKQpzdmludDMyX3Qgc3Z1c2RvdChzdmludDMyX3QsIHN2dWludDhfdCwgaW50OF90KTsKX19haW8gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fc3ZlX3N2dXNkb3RfczMyKSkpCnN2aW50MzJfdCBzdnVzZG90KHN2aW50MzJfdCwgc3Z1aW50OF90LCBzdmludDhfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnVzZG90X2xhbmVfczMyKSkpCnN2aW50MzJfdCBzdnVzZG90X2xhbmUoc3ZpbnQzMl90LCBzdnVpbnQ4X3QsIHN2aW50OF90LCB1aW50NjRfdCk7Cl9fYWlvIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX3N2ZV9zdnVzbW1sYV9zMzIpKSkKc3ZpbnQzMl90IHN2dXNtbWxhKHN2aW50MzJfdCwgc3Z1aW50OF90LCBzdmludDhfdCk7CiNlbmRpZiAgLy9kZWZpbmVkKF9fQVJNX0ZFQVRVUkVfU1ZFX01BVE1VTF9JTlQ4KQojaWYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NWRV9CRjE2KQojZGVmaW5lIHN2Y3Z0bnRfYmYxNl94ICAgICAgc3ZjdnRudF9iZjE2X20KI2RlZmluZSBzdmN2dG50X2JmMTZfZjMyX3ggIHN2Y3Z0bnRfYmYxNl9mMzJfbQojZW5kaWYgLypfX0FSTV9GRUFUVVJFX1NWRV9CRjE2ICovCgojaWYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NWRTIpCiNkZWZpbmUgc3ZjdnRudF9mMTZfeCAgICAgIHN2Y3Z0bnRfZjE2X20KI2RlZmluZSBzdmN2dG50X2YxNl9mMzJfeCAgc3ZjdnRudF9mMTZfZjMyX20KI2RlZmluZSBzdmN2dG50X2YzMl94ICAgICAgc3ZjdnRudF9mMzJfbQojZGVmaW5lIHN2Y3Z0bnRfZjMyX2Y2NF94ICBzdmN2dG50X2YzMl9mNjRfbQoKI2RlZmluZSBzdmN2dHhudF9mMzJfeCAgICAgc3ZjdnR4bnRfZjMyX20KI2RlZmluZSBzdmN2dHhudF9mMzJfZjY0X3ggc3ZjdnR4bnRfZjMyX2Y2NF9tCgojZW5kaWYgLypfX0FSTV9GRUFUVVJFX1NWRTIgKi8KCiNpZmRlZiBfX2NwbHVzcGx1cwp9IC8vIGV4dGVybiAiQyIKI2VuZGlmCgojZW5kaWYgLypfX0FSTV9GRUFUVVJFX1NWRSAqLwoKI2VuZGlmIC8qIF9fQVJNX1NWRV9IICovCgAvKj09PS0tLS0tIGF2eDUxMnZwb3BjbnRkcWludHJpbi5oIC0gQVZYNTEyVlBPUENOVERRIGludHJpbnNpY3MtLS0tLS0tLS0tLS0tPT09CiAqCiAqCiAqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCiAqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCiNpZm5kZWYgX19JTU1JTlRSSU5fSAojZXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIk5ldmVyIHVzZSA8YXZ4NTEydnBvcGNudGRxaW50cmluLmg+IGRpcmVjdGx5OyBpbmNsdWRlIDxpbW1pbnRyaW4uaD4gaW5zdGVhZC4iCiNlbmRpZgoKI2lmbmRlZiBfX0FWWDUxMlZQT1BDTlREUUlOVFJJTl9ICiNkZWZpbmUgX19BVlg1MTJWUE9QQ05URFFJTlRSSU5fSAoKLyogRGVmaW5lIHRoZSBkZWZhdWx0IGF0dHJpYnV0ZXMgZm9yIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlLiAqLwojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygiYXZ4NTEydnBvcGNudGRxIiksIF9fbWluX3ZlY3Rvcl93aWR0aF9fKDUxMikpKQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlMgX21tNTEyX3BvcGNudF9lcGk2NChfX201MTJpIF9fQSkgewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl92cG9wY250cV81MTIoKF9fdjhkaSlfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW01MTJfbWFza19wb3BjbnRfZXBpNjQoX19tNTEyaSBfX1csIF9fbW1hc2s4IF9fVSwgX19tNTEyaSBfX0EpIHsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV81MTIoCiAgICAgIChfX21tYXNrOClfX1UsIChfX3Y4ZGkpX21tNTEyX3BvcGNudF9lcGk2NChfX0EpLCAoX192OGRpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTUxMl9tYXNrel9wb3BjbnRfZXBpNjQoX19tbWFzazggX19VLCBfX201MTJpIF9fQSkgewogIHJldHVybiBfbW01MTJfbWFza19wb3BjbnRfZXBpNjQoKF9fbTUxMmkpX21tNTEyX3NldHplcm9fc2k1MTIoKSwgX19VLCBfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUyBfbW01MTJfcG9wY250X2VwaTMyKF9fbTUxMmkgX19BKSB7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3Zwb3BjbnRkXzUxMigoX192MTZzaSlfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW01MTJfbWFza19wb3BjbnRfZXBpMzIoX19tNTEyaSBfX1csIF9fbW1hc2sxNiBfX1UsIF9fbTUxMmkgX19BKSB7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfNTEyKAogICAgICAoX19tbWFzazE2KV9fVSwgKF9fdjE2c2kpX21tNTEyX3BvcGNudF9lcGkzMihfX0EpLCAoX192MTZzaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW01MTJfbWFza3pfcG9wY250X2VwaTMyKF9fbW1hc2sxNiBfX1UsIF9fbTUxMmkgX19BKSB7CiAgcmV0dXJuIF9tbTUxMl9tYXNrX3BvcGNudF9lcGkzMigoX19tNTEyaSlfbW01MTJfc2V0emVyb19zaTUxMigpLCBfX1UsIF9fQSk7Cn0KCiN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlMKCiNlbmRpZgoAYXZ4aW50cmluLmgALyo9PT0tLS0tIGVtbWludHJpbi5oIC0gU1NFMiBpbnRyaW5zaWNzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwoKI2lmbmRlZiBfX0VNTUlOVFJJTl9ICiNkZWZpbmUgX19FTU1JTlRSSU5fSAoKI2lmICFkZWZpbmVkKF9faTM4Nl9fKSAmJiAhZGVmaW5lZChfX3g4Nl82NF9fKQojZXJyb3IgIlRoaXMgaGVhZGVyIGlzIG9ubHkgbWVhbnQgdG8gYmUgdXNlZCBvbiB4ODYgYW5kIHg2NCBhcmNoaXRlY3R1cmUiCiNlbmRpZgoKI2luY2x1ZGUgPHhtbWludHJpbi5oPgoKdHlwZWRlZiBkb3VibGUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oMTYpLCBfX2FsaWduZWRfXygxNikpKTsKdHlwZWRlZiBsb25nIGxvbmcgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oMTYpLCBfX2FsaWduZWRfXygxNikpKTsKCnR5cGVkZWYgZG91YmxlIF9fbTEyOGRfdSBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oMTYpLCBfX2FsaWduZWRfXygxKSkpOwp0eXBlZGVmIGxvbmcgbG9uZyBfX20xMjhpX3UgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDE2KSwgX19hbGlnbmVkX18oMSkpKTsKCi8qIFR5cGUgZGVmaW5lcy4gICovCnR5cGVkZWYgZG91YmxlIF9fdjJkZiBfX2F0dHJpYnV0ZV9fICgoX192ZWN0b3Jfc2l6ZV9fICgxNikpKTsKdHlwZWRlZiBsb25nIGxvbmcgX192MmRpIF9fYXR0cmlidXRlX18gKChfX3ZlY3Rvcl9zaXplX18gKDE2KSkpOwp0eXBlZGVmIHNob3J0IF9fdjhoaSBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oMTYpKSk7CnR5cGVkZWYgY2hhciBfX3YxNnFpIF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXygxNikpKTsKCi8qIFVuc2lnbmVkIHR5cGVzICovCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIF9fdjJkdSBfX2F0dHJpYnV0ZV9fICgoX192ZWN0b3Jfc2l6ZV9fICgxNikpKTsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX3Y4aHUgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDE2KSkpOwp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX192MTZxdSBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oMTYpKSk7CgovKiBXZSBuZWVkIGFuIGV4cGxpY2l0bHkgc2lnbmVkIHZhcmlhbnQgZm9yIGNoYXIuIE5vdGUgdGhhdCB0aGlzIHNob3VsZG4ndAogKiBhcHBlYXIgaW4gdGhlIGludGVyZmFjZSB0aG91Z2guICovCnR5cGVkZWYgc2lnbmVkIGNoYXIgX192MTZxcyBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oMTYpKSk7CgovKiBEZWZpbmUgdGhlIGRlZmF1bHQgYXR0cmlidXRlcyBmb3IgdGhlIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUuICovCiNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygic3NlMiIpLCBfX21pbl92ZWN0b3Jfd2lkdGhfXygxMjgpKSkKI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygibW14LHNzZTIiKSwgX19taW5fdmVjdG9yX3dpZHRoX18oNjQpKSkKCi8vLyBBZGRzIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIGluIGJvdGggb3BlcmFuZHMgYW5kIHJldHVybnMgdGhlCi8vLyAgICBzdW0gaW4gdGhlIGxvd2VyIDY0IGJpdHMgb2YgdGhlIHJlc3VsdC4gVGhlIHVwcGVyIDY0IGJpdHMgb2YgdGhlIHJlc3VsdAovLy8gICAgYXJlIGNvcGllZCBmcm9tIHRoZSB1cHBlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIHRoZSBmaXJzdCBvcGVyYW5kLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZBRERTRCAvIEFERFNEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSB3aG9zZSBsb3dlciA2NCBiaXRzIGNvbnRhaW4gdGhlCi8vLyAgICBzdW0gb2YgdGhlIGxvd2VyIDY0IGJpdHMgb2YgYm90aCBvcGVyYW5kcy4gVGhlIHVwcGVyIDY0IGJpdHMgYXJlIGNvcGllZAovLy8gICAgZnJvbSB0aGUgdXBwZXIgNjQgYml0cyBvZiB0aGUgZmlyc3Qgc291cmNlIG9wZXJhbmQuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9hZGRfc2QoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQp7CiAgX19hWzBdICs9IF9fYlswXTsKICByZXR1cm4gX19hOwp9CgovLy8gQWRkcyB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQUREUEQgLyBBRERQRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgc3VtcyBvZiBib3RoCi8vLyAgICBvcGVyYW5kcy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2FkZF9wZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpCnsKICByZXR1cm4gKF9fbTEyOGQpKChfX3YyZGYpX19hICsgKF9fdjJkZilfX2IpOwp9CgovLy8gU3VidHJhY3RzIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIHRoZSBzZWNvbmQgb3BlcmFuZAovLy8gICAgZnJvbSB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiB0aGUgZmlyc3Qgb3BlcmFuZCBhbmQgcmV0dXJucwovLy8gICAgdGhlIGRpZmZlcmVuY2UgaW4gdGhlIGxvd2VyIDY0IGJpdHMgb2YgdGhlIHJlc3VsdC4gVGhlIHVwcGVyIDY0IGJpdHMgb2YKLy8vICAgIHRoZSByZXN1bHQgYXJlIGNvcGllZCBmcm9tIHRoZSB1cHBlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIHRoZSBmaXJzdAovLy8gICAgb3BlcmFuZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWU1VCU0QgLyBTVUJTRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIG1pbnVlbmQuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBzdWJ0cmFoZW5kLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gd2hvc2UgbG93ZXIgNjQgYml0cyBjb250YWluIHRoZQovLy8gICAgZGlmZmVyZW5jZSBvZiB0aGUgbG93ZXIgNjQgYml0cyBvZiBib3RoIG9wZXJhbmRzLiBUaGUgdXBwZXIgNjQgYml0cyBhcmUKLy8vICAgIGNvcGllZCBmcm9tIHRoZSB1cHBlciA2NCBiaXRzIG9mIHRoZSBmaXJzdCBzb3VyY2Ugb3BlcmFuZC4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3N1Yl9zZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpCnsKICBfX2FbMF0gLT0gX19iWzBdOwogIHJldHVybiBfX2E7Cn0KCi8vLyBTdWJ0cmFjdHMgdHdvIDEyOC1iaXQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlNVQlBEIC8gU1VCUEQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBtaW51ZW5kLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgc3VidHJhaGVuZC4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4KLy8vICAgIGJvdGggb3BlcmFuZHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zdWJfcGQoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQp7CiAgcmV0dXJuIChfX20xMjhkKSgoX192MmRmKV9fYSAtIChfX3YyZGYpX19iKTsKfQoKLy8vIE11bHRpcGxpZXMgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgaW4gYm90aCBvcGVyYW5kcyBhbmQgcmV0dXJucwovLy8gICAgdGhlIHByb2R1Y3QgaW4gdGhlIGxvd2VyIDY0IGJpdHMgb2YgdGhlIHJlc3VsdC4gVGhlIHVwcGVyIDY0IGJpdHMgb2YgdGhlCi8vLyAgICByZXN1bHQgYXJlIGNvcGllZCBmcm9tIHRoZSB1cHBlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIHRoZSBmaXJzdAovLy8gICAgb3BlcmFuZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTVVMU0QgLyBNVUxTRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gd2hvc2UgbG93ZXIgNjQgYml0cyBjb250YWluIHRoZQovLy8gICAgcHJvZHVjdCBvZiB0aGUgbG93ZXIgNjQgYml0cyBvZiBib3RoIG9wZXJhbmRzLiBUaGUgdXBwZXIgNjQgYml0cyBhcmUKLy8vICAgIGNvcGllZCBmcm9tIHRoZSB1cHBlciA2NCBiaXRzIG9mIHRoZSBmaXJzdCBzb3VyY2Ugb3BlcmFuZC4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX211bF9zZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpCnsKICBfX2FbMF0gKj0gX19iWzBdOwogIHJldHVybiBfX2E7Cn0KCi8vLyBNdWx0aXBsaWVzIHR3byAxMjgtYml0IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNVUxQRCAvIE1VTFBEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgcHJvZHVjdHMgb2YgYm90aAovLy8gICAgb3BlcmFuZHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9tdWxfcGQoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQp7CiAgcmV0dXJuIChfX20xMjhkKSgoX192MmRmKV9fYSAqIChfX3YyZGYpX19iKTsKfQoKLy8vIERpdmlkZXMgdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgdGhlIGZpcnN0IG9wZXJhbmQgYnkgdGhlCi8vLyAgICBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIHRoZSBzZWNvbmQgb3BlcmFuZCBhbmQgcmV0dXJucyB0aGUKLy8vICAgIHF1b3RpZW50IGluIHRoZSBsb3dlciA2NCBiaXRzIG9mIHRoZSByZXN1bHQuIFRoZSB1cHBlciA2NCBiaXRzIG9mIHRoZQovLy8gICAgcmVzdWx0IGFyZSBjb3BpZWQgZnJvbSB0aGUgdXBwZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiB0aGUgZmlyc3QKLy8vICAgIG9wZXJhbmQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkRJVlNEIC8gRElWU0QgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBkaXZpZGVuZC4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgZGl2aXNvci4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIHdob3NlIGxvd2VyIDY0IGJpdHMgY29udGFpbiB0aGUKLy8vICAgIHF1b3RpZW50IG9mIHRoZSBsb3dlciA2NCBiaXRzIG9mIGJvdGggb3BlcmFuZHMuIFRoZSB1cHBlciA2NCBiaXRzIGFyZQovLy8gICAgY29waWVkIGZyb20gdGhlIHVwcGVyIDY0IGJpdHMgb2YgdGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fZGl2X3NkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikKewogIF9fYVswXSAvPSBfX2JbMF07CiAgcmV0dXJuIF9fYTsKfQoKLy8vIFBlcmZvcm1zIGFuIGVsZW1lbnQtYnktZWxlbWVudCBkaXZpc2lvbiBvZiB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mCi8vLyAgICBbMiB4IGRvdWJsZV0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkRJVlBEIC8gRElWUEQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBkaXZpZGVuZC4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGRpdmlzb3IuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBxdW90aWVudHMgb2YgYm90aAovLy8gICAgb3BlcmFuZHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9kaXZfcGQoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQp7CiAgcmV0dXJuIChfX20xMjhkKSgoX192MmRmKV9fYSAvIChfX3YyZGYpX19iKTsKfQoKLy8vIENhbGN1bGF0ZXMgdGhlIHNxdWFyZSByb290IG9mIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mCi8vLyAgICB0aGUgc2Vjb25kIG9wZXJhbmQgYW5kIHJldHVybnMgaXQgaW4gdGhlIGxvd2VyIDY0IGJpdHMgb2YgdGhlIHJlc3VsdC4KLy8vICAgIFRoZSB1cHBlciA2NCBiaXRzIG9mIHRoZSByZXN1bHQgYXJlIGNvcGllZCBmcm9tIHRoZSB1cHBlcgovLy8gICAgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiB0aGUgZmlyc3Qgb3BlcmFuZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWU1FSVFNEIC8gU1FSVFNEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLiBUaGUKLy8vICAgIHVwcGVyIDY0IGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZSBjb3BpZWQgdG8gdGhlIHVwcGVyIDY0IGJpdHMgb2YgdGhlCi8vLyAgICByZXN1bHQuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuIFRoZQovLy8gICAgc3F1YXJlIHJvb3QgaXMgY2FsY3VsYXRlZCB1c2luZyB0aGUgbG93ZXIgNjQgYml0cyBvZiB0aGlzIG9wZXJhbmQuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSB3aG9zZSBsb3dlciA2NCBiaXRzIGNvbnRhaW4gdGhlCi8vLyAgICBzcXVhcmUgcm9vdCBvZiB0aGUgbG93ZXIgNjQgYml0cyBvZiBvcGVyYW5kIFxhIF9fYiwgYW5kIHdob3NlIHVwcGVyIDY0Ci8vLyAgICBiaXRzIGFyZSBjb3BpZWQgZnJvbSB0aGUgdXBwZXIgNjQgYml0cyBvZiBvcGVyYW5kIFxhIF9fYS4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3NxcnRfc2QoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQp7CiAgX19tMTI4ZCBfX2MgPSBfX2J1aWx0aW5faWEzMl9zcXJ0c2QoKF9fdjJkZilfX2IpOwogIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjhkKSB7IF9fY1swXSwgX19hWzFdIH07Cn0KCi8vLyBDYWxjdWxhdGVzIHRoZSBzcXVhcmUgcm9vdCBvZiB0aGUgZWFjaCBvZiB0d28gdmFsdWVzIHN0b3JlZCBpbiBhCi8vLyAgICAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlNRUlRQRCAvIFNRUlRQRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgc3F1YXJlIHJvb3RzIG9mIHRoZQovLy8gICAgdmFsdWVzIGluIHRoZSBvcGVyYW5kLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc3FydF9wZChfX20xMjhkIF9fYSkKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9zcXJ0cGQoKF9fdjJkZilfX2EpOwp9CgovLy8gQ29tcGFyZXMgbG93ZXIgNjQtYml0IGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIG9mIGJvdGggb3BlcmFuZHMsIGFuZAovLy8gICAgcmV0dXJucyB0aGUgbGVzc2VyIG9mIHRoZSBwYWlyIG9mIHZhbHVlcyBpbiB0aGUgbG93ZXIgNjQtYml0cyBvZiB0aGUKLy8vICAgIHJlc3VsdC4gVGhlIHVwcGVyIDY0IGJpdHMgb2YgdGhlIHJlc3VsdCBhcmUgY29waWVkIGZyb20gdGhlIHVwcGVyCi8vLyAgICBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIHRoZSBmaXJzdCBvcGVyYW5kLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNSU5TRCAvIE1JTlNEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLiBUaGUKLy8vICAgIGxvd2VyIDY0IGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZSB1c2VkIGluIHRoZSBjb21wYXJpc29uLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLiBUaGUKLy8vICAgIGxvd2VyIDY0IGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZSB1c2VkIGluIHRoZSBjb21wYXJpc29uLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gd2hvc2UgbG93ZXIgNjQgYml0cyBjb250YWluIHRoZQovLy8gICAgbWluaW11bSB2YWx1ZSBiZXR3ZWVuIGJvdGggb3BlcmFuZHMuIFRoZSB1cHBlciA2NCBiaXRzIGFyZSBjb3BpZWQgZnJvbQovLy8gICAgdGhlIHVwcGVyIDY0IGJpdHMgb2YgdGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fbWluX3NkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9taW5zZCgoX192MmRmKV9fYSwgKF9fdjJkZilfX2IpOwp9CgovLy8gUGVyZm9ybXMgZWxlbWVudC1ieS1lbGVtZW50IGNvbXBhcmlzb24gb2YgdGhlIHR3byAxMjgtYml0IHZlY3RvcnMgb2YKLy8vICAgIFsyIHggZG91YmxlXSBhbmQgcmV0dXJucyB0aGUgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGxlc3NlciBvZiBlYWNoIHBhaXIgb2YKLy8vICAgIHZhbHVlcy4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTUlOUEQgLyBNSU5QRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIG1pbmltdW0gdmFsdWVzCi8vLyAgICBiZXR3ZWVuIGJvdGggb3BlcmFuZHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9taW5fcGQoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX21pbnBkKChfX3YyZGYpX19hLCAoX192MmRmKV9fYik7Cn0KCi8vLyBDb21wYXJlcyBsb3dlciA2NC1iaXQgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgb2YgYm90aCBvcGVyYW5kcywgYW5kCi8vLyAgICByZXR1cm5zIHRoZSBncmVhdGVyIG9mIHRoZSBwYWlyIG9mIHZhbHVlcyBpbiB0aGUgbG93ZXIgNjQtYml0cyBvZiB0aGUKLy8vICAgIHJlc3VsdC4gVGhlIHVwcGVyIDY0IGJpdHMgb2YgdGhlIHJlc3VsdCBhcmUgY29waWVkIGZyb20gdGhlIHVwcGVyCi8vLyAgICBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIHRoZSBmaXJzdCBvcGVyYW5kLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNQVhTRCAvIE1BWFNEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLiBUaGUKLy8vICAgIGxvd2VyIDY0IGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZSB1c2VkIGluIHRoZSBjb21wYXJpc29uLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLiBUaGUKLy8vICAgIGxvd2VyIDY0IGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZSB1c2VkIGluIHRoZSBjb21wYXJpc29uLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gd2hvc2UgbG93ZXIgNjQgYml0cyBjb250YWluIHRoZQovLy8gICAgbWF4aW11bSB2YWx1ZSBiZXR3ZWVuIGJvdGggb3BlcmFuZHMuIFRoZSB1cHBlciA2NCBiaXRzIGFyZSBjb3BpZWQgZnJvbQovLy8gICAgdGhlIHVwcGVyIDY0IGJpdHMgb2YgdGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fbWF4X3NkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9tYXhzZCgoX192MmRmKV9fYSwgKF9fdjJkZilfX2IpOwp9CgovLy8gUGVyZm9ybXMgZWxlbWVudC1ieS1lbGVtZW50IGNvbXBhcmlzb24gb2YgdGhlIHR3byAxMjgtYml0IHZlY3RvcnMgb2YKLy8vICAgIFsyIHggZG91YmxlXSBhbmQgcmV0dXJucyB0aGUgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGdyZWF0ZXIgb2YgZWFjaCBwYWlyCi8vLyAgICBvZiB2YWx1ZXMuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1BWFBEIC8gTUFYUEQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBtYXhpbXVtIHZhbHVlcwovLy8gICAgYmV0d2VlbiBib3RoIG9wZXJhbmRzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fbWF4X3BkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9tYXhwZCgoX192MmRmKV9fYSwgKF9fdjJkZilfX2IpOwp9CgovLy8gUGVyZm9ybXMgYSBiaXR3aXNlIEFORCBvZiB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEFORCAvIFBBTkQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGJpdHdpc2UgQU5EIG9mIHRoZQovLy8gICAgdmFsdWVzIGJldHdlZW4gYm90aCBvcGVyYW5kcy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2FuZF9wZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpCnsKICByZXR1cm4gKF9fbTEyOGQpKChfX3YyZHUpX19hICYgKF9fdjJkdSlfX2IpOwp9CgovLy8gUGVyZm9ybXMgYSBiaXR3aXNlIEFORCBvZiB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXSwgdXNpbmcKLy8vICAgIHRoZSBvbmUncyBjb21wbGVtZW50IG9mIHRoZSB2YWx1ZXMgY29udGFpbmVkIGluIHRoZSBmaXJzdCBzb3VyY2Ugb3BlcmFuZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEFORE4gLyBQQU5ETiA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGxlZnQgc291cmNlIG9wZXJhbmQuIFRoZQovLy8gICAgb25lJ3MgY29tcGxlbWVudCBvZiB0aGlzIHZhbHVlIGlzIHVzZWQgaW4gdGhlIGJpdHdpc2UgQU5ELgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgcmlnaHQgc291cmNlIG9wZXJhbmQuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBiaXR3aXNlIEFORCBvZiB0aGUKLy8vICAgIHZhbHVlcyBpbiB0aGUgc2Vjb25kIG9wZXJhbmQgYW5kIHRoZSBvbmUncyBjb21wbGVtZW50IG9mIHRoZSBmaXJzdAovLy8gICAgb3BlcmFuZC4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2FuZG5vdF9wZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpCnsKICByZXR1cm4gKF9fbTEyOGQpKH4oX192MmR1KV9fYSAmIChfX3YyZHUpX19iKTsKfQoKLy8vIFBlcmZvcm1zIGEgYml0d2lzZSBPUiBvZiB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUE9SIC8gUE9SIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBiaXR3aXNlIE9SIG9mIHRoZQovLy8gICAgdmFsdWVzIGJldHdlZW4gYm90aCBvcGVyYW5kcy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX29yX3BkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikKewogIHJldHVybiAoX19tMTI4ZCkoKF9fdjJkdSlfX2EgfCAoX192MmR1KV9fYik7Cn0KCi8vLyBQZXJmb3JtcyBhIGJpdHdpc2UgWE9SIG9mIHR3byAxMjgtYml0IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQWE9SIC8gUFhPUiA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgYml0d2lzZSBYT1Igb2YgdGhlCi8vLyAgICB2YWx1ZXMgYmV0d2VlbiBib3RoIG9wZXJhbmRzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1feG9yX3BkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikKewogIHJldHVybiAoX19tMTI4ZCkoKF9fdjJkdSlfX2EgXiAoX192MmR1KV9fYik7Cn0KCi8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIG9mIHRoZQovLy8gICAgMTI4LWJpdCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXSBmb3IgZXF1YWxpdHkuIEVhY2ggY29tcGFyaXNvbiB5aWVsZHMgMHgwCi8vLyAgICBmb3IgZmFsc2UsIDB4RkZGRkZGRkZGRkZGRkZGRiBmb3IgdHJ1ZS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QRVFQRCAvIENNUEVRUEQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jbXBlcV9wZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpCnsKICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfY21wZXFwZCgoX192MmRmKV9fYSwgKF9fdjJkZilfX2IpOwp9CgovLy8gQ29tcGFyZXMgZWFjaCBvZiB0aGUgY29ycmVzcG9uZGluZyBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBvZiB0aGUKLy8vICAgIDEyOC1iaXQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0gdG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZXMgaW4gdGhlIGZpcnN0Ci8vLyAgICBvcGVyYW5kIGFyZSBsZXNzIHRoYW4gdGhvc2UgaW4gdGhlIHNlY29uZCBvcGVyYW5kLiBFYWNoIGNvbXBhcmlzb24KLy8vICAgIHlpZWxkcyAweDAgZm9yIGZhbHNlLCAweEZGRkZGRkZGRkZGRkZGRkYgZm9yIHRydWUuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUExUUEQgLyBDTVBMVFBEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY21wbHRfcGQoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQp7CiAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2NtcGx0cGQoKF9fdjJkZilfX2EsIChfX3YyZGYpX19iKTsKfQoKLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgb2YgdGhlCi8vLyAgICAxMjgtYml0IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdIHRvIGRldGVybWluZSBpZiB0aGUgdmFsdWVzIGluIHRoZSBmaXJzdAovLy8gICAgb3BlcmFuZCBhcmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRob3NlIGluIHRoZSBzZWNvbmQgb3BlcmFuZC4KLy8vCi8vLyAgICBFYWNoIGNvbXBhcmlzb24geWllbGRzIDB4MCBmb3IgZmFsc2UsIDB4RkZGRkZGRkZGRkZGRkZGRiBmb3IgdHJ1ZS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QTEVQRCAvIENNUExFUEQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jbXBsZV9wZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpCnsKICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfY21wbGVwZCgoX192MmRmKV9fYSwgKF9fdjJkZilfX2IpOwp9CgovLy8gQ29tcGFyZXMgZWFjaCBvZiB0aGUgY29ycmVzcG9uZGluZyBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBvZiB0aGUKLy8vICAgIDEyOC1iaXQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0gdG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZXMgaW4gdGhlIGZpcnN0Ci8vLyAgICBvcGVyYW5kIGFyZSBncmVhdGVyIHRoYW4gdGhvc2UgaW4gdGhlIHNlY29uZCBvcGVyYW5kLgovLy8KLy8vICAgIEVhY2ggY29tcGFyaXNvbiB5aWVsZHMgMHgwIGZvciBmYWxzZSwgMHhGRkZGRkZGRkZGRkZGRkZGIGZvciB0cnVlLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBMVFBEIC8gQ01QTFRQRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2NtcGd0X3BkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikKewogIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9jbXBsdHBkKChfX3YyZGYpX19iLCAoX192MmRmKV9fYSk7Cn0KCi8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIG9mIHRoZQovLy8gICAgMTI4LWJpdCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXSB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlcyBpbiB0aGUgZmlyc3QKLy8vICAgIG9wZXJhbmQgYXJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aG9zZSBpbiB0aGUgc2Vjb25kIG9wZXJhbmQuCi8vLwovLy8gICAgRWFjaCBjb21wYXJpc29uIHlpZWxkcyAweDAgZm9yIGZhbHNlLCAweEZGRkZGRkZGRkZGRkZGRkYgZm9yIHRydWUuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUExFUEQgLyBDTVBMRVBEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY21wZ2VfcGQoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQp7CiAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2NtcGxlcGQoKF9fdjJkZilfX2IsIChfX3YyZGYpX19hKTsKfQoKLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgb2YgdGhlCi8vLyAgICAxMjgtYml0IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdIHRvIGRldGVybWluZSBpZiB0aGUgdmFsdWVzIGluIHRoZSBmaXJzdAovLy8gICAgb3BlcmFuZCBhcmUgb3JkZXJlZCB3aXRoIHJlc3BlY3QgdG8gdGhvc2UgaW4gdGhlIHNlY29uZCBvcGVyYW5kLgovLy8KLy8vICAgIEEgcGFpciBvZiBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBhcmUgIm9yZGVyZWQiIHdpdGggcmVzcGVjdCB0byBlYWNoCi8vLyAgICBvdGhlciBpZiBuZWl0aGVyIHZhbHVlIGlzIGEgTmFOLiBFYWNoIGNvbXBhcmlzb24geWllbGRzIDB4MCBmb3IgZmFsc2UsCi8vLyAgICAweEZGRkZGRkZGRkZGRkZGRkYgZm9yIHRydWUuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUE9SRFBEIC8gQ01QT1JEUEQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jbXBvcmRfcGQoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQp7CiAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2NtcG9yZHBkKChfX3YyZGYpX19hLCAoX192MmRmKV9fYik7Cn0KCi8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIG9mIHRoZQovLy8gICAgMTI4LWJpdCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXSB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlcyBpbiB0aGUgZmlyc3QKLy8vICAgIG9wZXJhbmQgYXJlIHVub3JkZXJlZCB3aXRoIHJlc3BlY3QgdG8gdGhvc2UgaW4gdGhlIHNlY29uZCBvcGVyYW5kLgovLy8KLy8vICAgIEEgcGFpciBvZiBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBhcmUgInVub3JkZXJlZCIgd2l0aCByZXNwZWN0IHRvIGVhY2gKLy8vICAgIG90aGVyIGlmIG9uZSBvciBib3RoIHZhbHVlcyBhcmUgTmFOLiBFYWNoIGNvbXBhcmlzb24geWllbGRzIDB4MCBmb3IKLy8vICAgIGZhbHNlLCAweEZGRkZGRkZGRkZGRkZGRkYgZm9yIHRydWUuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUFVOT1JEUEQgLyBDTVBVTk9SRFBEIDwvYz4KLy8vICAgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY21wdW5vcmRfcGQoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQp7CiAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2NtcHVub3JkcGQoKF9fdjJkZilfX2EsIChfX3YyZGYpX19iKTsKfQoKLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgb2YgdGhlCi8vLyAgICAxMjgtYml0IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdIHRvIGRldGVybWluZSBpZiB0aGUgdmFsdWVzIGluIHRoZSBmaXJzdAovLy8gICAgb3BlcmFuZCBhcmUgdW5lcXVhbCB0byB0aG9zZSBpbiB0aGUgc2Vjb25kIG9wZXJhbmQuCi8vLwovLy8gICAgRWFjaCBjb21wYXJpc29uIHlpZWxkcyAweDAgZm9yIGZhbHNlLCAweEZGRkZGRkZGRkZGRkZGRkYgZm9yIHRydWUuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUE5FUVBEIC8gQ01QTkVRUEQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jbXBuZXFfcGQoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQp7CiAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2NtcG5lcXBkKChfX3YyZGYpX19hLCAoX192MmRmKV9fYik7Cn0KCi8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIG9mIHRoZQovLy8gICAgMTI4LWJpdCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXSB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlcyBpbiB0aGUgZmlyc3QKLy8vICAgIG9wZXJhbmQgYXJlIG5vdCBsZXNzIHRoYW4gdGhvc2UgaW4gdGhlIHNlY29uZCBvcGVyYW5kLgovLy8KLy8vICAgIEVhY2ggY29tcGFyaXNvbiB5aWVsZHMgMHgwIGZvciBmYWxzZSwgMHhGRkZGRkZGRkZGRkZGRkZGIGZvciB0cnVlLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBOTFRQRCAvIENNUE5MVFBEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY21wbmx0X3BkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikKewogIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9jbXBubHRwZCgoX192MmRmKV9fYSwgKF9fdjJkZilfX2IpOwp9CgovLy8gQ29tcGFyZXMgZWFjaCBvZiB0aGUgY29ycmVzcG9uZGluZyBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBvZiB0aGUKLy8vICAgIDEyOC1iaXQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0gdG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZXMgaW4gdGhlIGZpcnN0Ci8vLyAgICBvcGVyYW5kIGFyZSBub3QgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRob3NlIGluIHRoZSBzZWNvbmQgb3BlcmFuZC4KLy8vCi8vLyAgICBFYWNoIGNvbXBhcmlzb24geWllbGRzIDB4MCBmb3IgZmFsc2UsIDB4RkZGRkZGRkZGRkZGRkZGRiBmb3IgdHJ1ZS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QTkxFUEQgLyBDTVBOTEVQRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2NtcG5sZV9wZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpCnsKICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfY21wbmxlcGQoKF9fdjJkZilfX2EsIChfX3YyZGYpX19iKTsKfQoKLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgb2YgdGhlCi8vLyAgICAxMjgtYml0IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdIHRvIGRldGVybWluZSBpZiB0aGUgdmFsdWVzIGluIHRoZSBmaXJzdAovLy8gICAgb3BlcmFuZCBhcmUgbm90IGdyZWF0ZXIgdGhhbiB0aG9zZSBpbiB0aGUgc2Vjb25kIG9wZXJhbmQuCi8vLwovLy8gICAgRWFjaCBjb21wYXJpc29uIHlpZWxkcyAweDAgZm9yIGZhbHNlLCAweEZGRkZGRkZGRkZGRkZGRkYgZm9yIHRydWUuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUE5MVFBEIC8gQ01QTkxUUEQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jbXBuZ3RfcGQoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQp7CiAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2NtcG5sdHBkKChfX3YyZGYpX19iLCAoX192MmRmKV9fYSk7Cn0KCi8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIG9mIHRoZQovLy8gICAgMTI4LWJpdCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXSB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlcyBpbiB0aGUgZmlyc3QKLy8vICAgIG9wZXJhbmQgYXJlIG5vdCBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhvc2UgaW4gdGhlIHNlY29uZCBvcGVyYW5kLgovLy8KLy8vICAgIEVhY2ggY29tcGFyaXNvbiB5aWVsZHMgMHgwIGZvciBmYWxzZSwgMHhGRkZGRkZGRkZGRkZGRkZGIGZvciB0cnVlLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBOTEVQRCAvIENNUE5MRVBEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY21wbmdlX3BkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikKewogIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9jbXBubGVwZCgoX192MmRmKV9fYiwgKF9fdjJkZilfX2EpOwp9CgovLy8gQ29tcGFyZXMgdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWVzIGluIGVhY2ggb2YKLy8vICAgIHRoZSB0d28gMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXSBmb3IgZXF1YWxpdHkuCi8vLwovLy8gICAgVGhlIGNvbXBhcmlzb24geWllbGRzIDB4MCBmb3IgZmFsc2UsIDB4RkZGRkZGRkZGRkZGRkZGRiBmb3IgdHJ1ZS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QRVFTRCAvIENNUEVRU0QgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMKLy8vICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYi4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcwovLy8gICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19hLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3Rvci4gVGhlIGxvd2VyIDY0IGJpdHMgY29udGFpbnMgdGhlIGNvbXBhcmlzb24KLy8vICAgIHJlc3VsdHMuIFRoZSB1cHBlciA2NCBiaXRzIGFyZSBjb3BpZWQgZnJvbSB0aGUgdXBwZXIgNjQgYml0cyBvZiBcYSBfX2EuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jbXBlcV9zZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpCnsKICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfY21wZXFzZCgoX192MmRmKV9fYSwgKF9fdjJkZilfX2IpOwp9CgovLy8gQ29tcGFyZXMgdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWVzIGluIGVhY2ggb2YKLy8vICAgIHRoZSB0d28gMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXSB0byBkZXRlcm1pbmUgaWYKLy8vICAgIHRoZSB2YWx1ZSBpbiB0aGUgZmlyc3QgcGFyYW1ldGVyIGlzIGxlc3MgdGhhbiB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBpbgovLy8gICAgdGhlIHNlY29uZCBwYXJhbWV0ZXIuCi8vLwovLy8gICAgVGhlIGNvbXBhcmlzb24geWllbGRzIDB4MCBmb3IgZmFsc2UsIDB4RkZGRkZGRkZGRkZGRkZGRiBmb3IgdHJ1ZS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QTFRTRCAvIENNUExUU0QgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMKLy8vICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYi4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcwovLy8gICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19hLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3Rvci4gVGhlIGxvd2VyIDY0IGJpdHMgY29udGFpbnMgdGhlIGNvbXBhcmlzb24KLy8vICAgIHJlc3VsdHMuIFRoZSB1cHBlciA2NCBiaXRzIGFyZSBjb3BpZWQgZnJvbSB0aGUgdXBwZXIgNjQgYml0cyBvZiBcYSBfX2EuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jbXBsdF9zZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpCnsKICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfY21wbHRzZCgoX192MmRmKV9fYSwgKF9fdjJkZilfX2IpOwp9CgovLy8gQ29tcGFyZXMgdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWVzIGluIGVhY2ggb2YKLy8vICAgIHRoZSB0d28gMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXSB0byBkZXRlcm1pbmUgaWYKLy8vICAgIHRoZSB2YWx1ZSBpbiB0aGUgZmlyc3QgcGFyYW1ldGVyIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUKLy8vICAgIGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4gdGhlIHNlY29uZCBwYXJhbWV0ZXIuCi8vLwovLy8gICAgVGhlIGNvbXBhcmlzb24geWllbGRzIDB4MCBmb3IgZmFsc2UsIDB4RkZGRkZGRkZGRkZGRkZGRiBmb3IgdHJ1ZS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QTEVTRCAvIENNUExFU0QgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMKLy8vICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYi4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcwovLy8gICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19hLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3Rvci4gVGhlIGxvd2VyIDY0IGJpdHMgY29udGFpbnMgdGhlIGNvbXBhcmlzb24KLy8vICAgIHJlc3VsdHMuIFRoZSB1cHBlciA2NCBiaXRzIGFyZSBjb3BpZWQgZnJvbSB0aGUgdXBwZXIgNjQgYml0cyBvZiBcYSBfX2EuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jbXBsZV9zZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpCnsKICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfY21wbGVzZCgoX192MmRmKV9fYSwgKF9fdjJkZilfX2IpOwp9CgovLy8gQ29tcGFyZXMgdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWVzIGluIGVhY2ggb2YKLy8vICAgIHRoZSB0d28gMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXSB0byBkZXRlcm1pbmUgaWYKLy8vICAgIHRoZSB2YWx1ZSBpbiB0aGUgZmlyc3QgcGFyYW1ldGVyIGlzIGdyZWF0ZXIgdGhhbiB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZQovLy8gICAgaW4gdGhlIHNlY29uZCBwYXJhbWV0ZXIuCi8vLwovLy8gICAgVGhlIGNvbXBhcmlzb24geWllbGRzIDB4MCBmb3IgZmFsc2UsIDB4RkZGRkZGRkZGRkZGRkZGRiBmb3IgdHJ1ZS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QTFRTRCAvIENNUExUU0QgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzCi8vLyAgICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19iLgovLy8gXHBhcmFtIF9fYgovLy8gICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcwovLy8gICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYS4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3IuIFRoZSBsb3dlciA2NCBiaXRzIGNvbnRhaW5zIHRoZSBjb21wYXJpc29uCi8vLyAgICAgcmVzdWx0cy4gVGhlIHVwcGVyIDY0IGJpdHMgYXJlIGNvcGllZCBmcm9tIHRoZSB1cHBlciA2NCBiaXRzIG9mIFxhIF9fYS4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2NtcGd0X3NkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikKewogIF9fbTEyOGQgX19jID0gX19idWlsdGluX2lhMzJfY21wbHRzZCgoX192MmRmKV9fYiwgKF9fdjJkZilfX2EpOwogIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjhkKSB7IF9fY1swXSwgX19hWzFdIH07Cn0KCi8vLyBDb21wYXJlcyB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMgaW4gZWFjaCBvZgovLy8gICAgdGhlIHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdIHRvIGRldGVybWluZSBpZgovLy8gICAgdGhlIHZhbHVlIGluIHRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZQovLy8gICAgY29ycmVzcG9uZGluZyB2YWx1ZSBpbiB0aGUgc2Vjb25kIHBhcmFtZXRlci4KLy8vCi8vLyAgICBUaGUgY29tcGFyaXNvbiB5aWVsZHMgMHgwIGZvciBmYWxzZSwgMHhGRkZGRkZGRkZGRkZGRkZGIGZvciB0cnVlLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBMRVNEIC8gQ01QTEVTRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcwovLy8gICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19iLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzCi8vLyAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2EuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yLiBUaGUgbG93ZXIgNjQgYml0cyBjb250YWlucyB0aGUgY29tcGFyaXNvbgovLy8gICAgcmVzdWx0cy4gVGhlIHVwcGVyIDY0IGJpdHMgYXJlIGNvcGllZCBmcm9tIHRoZSB1cHBlciA2NCBiaXRzIG9mIFxhIF9fYS4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2NtcGdlX3NkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikKewogIF9fbTEyOGQgX19jID0gX19idWlsdGluX2lhMzJfY21wbGVzZCgoX192MmRmKV9fYiwgKF9fdjJkZilfX2EpOwogIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjhkKSB7IF9fY1swXSwgX19hWzFdIH07Cn0KCi8vLyBDb21wYXJlcyB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMgaW4gZWFjaCBvZgovLy8gICAgdGhlIHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdIHRvIGRldGVybWluZSBpZgovLy8gICAgdGhlIHZhbHVlIGluIHRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgIm9yZGVyZWQiIHdpdGggcmVzcGVjdCB0byB0aGUKLy8vICAgIGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4gdGhlIHNlY29uZCBwYXJhbWV0ZXIuCi8vLwovLy8gICAgVGhlIGNvbXBhcmlzb24geWllbGRzIDB4MCBmb3IgZmFsc2UsIDB4RkZGRkZGRkZGRkZGRkZGRiBmb3IgdHJ1ZS4gQSBwYWlyCi8vLyAgICBvZiBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBhcmUgIm9yZGVyZWQiIHdpdGggcmVzcGVjdCB0byBlYWNoIG90aGVyIGlmCi8vLyAgICBuZWl0aGVyIHZhbHVlIGlzIGEgTmFOLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBPUkRTRCAvIENNUE9SRFNEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzCi8vLyAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2IuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMKLy8vICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYS4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3IuIFRoZSBsb3dlciA2NCBiaXRzIGNvbnRhaW5zIHRoZSBjb21wYXJpc29uCi8vLyAgICByZXN1bHRzLiBUaGUgdXBwZXIgNjQgYml0cyBhcmUgY29waWVkIGZyb20gdGhlIHVwcGVyIDY0IGJpdHMgb2YgXGEgX19hLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY21wb3JkX3NkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikKewogIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9jbXBvcmRzZCgoX192MmRmKV9fYSwgKF9fdjJkZilfX2IpOwp9CgovLy8gQ29tcGFyZXMgdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWVzIGluIGVhY2ggb2YKLy8vICAgIHRoZSB0d28gMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXSB0byBkZXRlcm1pbmUgaWYKLy8vICAgIHRoZSB2YWx1ZSBpbiB0aGUgZmlyc3QgcGFyYW1ldGVyIGlzICJ1bm9yZGVyZWQiIHdpdGggcmVzcGVjdCB0byB0aGUKLy8vICAgIGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4gdGhlIHNlY29uZCBwYXJhbWV0ZXIuCi8vLwovLy8gICAgVGhlIGNvbXBhcmlzb24geWllbGRzIDB4MCBmb3IgZmFsc2UsIDB4RkZGRkZGRkZGRkZGRkZGRiBmb3IgdHJ1ZS4gQSBwYWlyCi8vLyAgICBvZiBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBhcmUgInVub3JkZXJlZCIgd2l0aCByZXNwZWN0IHRvIGVhY2ggb3RoZXIgaWYKLy8vICAgIG9uZSBvciBib3RoIHZhbHVlcyBhcmUgTmFOLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBVTk9SRFNEIC8gQ01QVU5PUkRTRCA8L2M+Ci8vLyAgIGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcwovLy8gICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19iLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzCi8vLyAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2EuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yLiBUaGUgbG93ZXIgNjQgYml0cyBjb250YWlucyB0aGUgY29tcGFyaXNvbgovLy8gICAgcmVzdWx0cy4gVGhlIHVwcGVyIDY0IGJpdHMgYXJlIGNvcGllZCBmcm9tIHRoZSB1cHBlciA2NCBiaXRzIG9mIFxhIF9fYS4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2NtcHVub3JkX3NkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikKewogIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9jbXB1bm9yZHNkKChfX3YyZGYpX19hLCAoX192MmRmKV9fYik7Cn0KCi8vLyBDb21wYXJlcyB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMgaW4gZWFjaCBvZgovLy8gICAgdGhlIHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdIHRvIGRldGVybWluZSBpZgovLy8gICAgdGhlIHZhbHVlIGluIHRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgdW5lcXVhbCB0byB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBpbgovLy8gICAgdGhlIHNlY29uZCBwYXJhbWV0ZXIuCi8vLwovLy8gICAgVGhlIGNvbXBhcmlzb24geWllbGRzIDB4MCBmb3IgZmFsc2UsIDB4RkZGRkZGRkZGRkZGRkZGRiBmb3IgdHJ1ZS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QTkVRU0QgLyBDTVBORVFTRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcwovLy8gICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19iLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzCi8vLyAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2EuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yLiBUaGUgbG93ZXIgNjQgYml0cyBjb250YWlucyB0aGUgY29tcGFyaXNvbgovLy8gICAgcmVzdWx0cy4gVGhlIHVwcGVyIDY0IGJpdHMgYXJlIGNvcGllZCBmcm9tIHRoZSB1cHBlciA2NCBiaXRzIG9mIFxhIF9fYS4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2NtcG5lcV9zZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpCnsKICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfY21wbmVxc2QoKF9fdjJkZilfX2EsIChfX3YyZGYpX19iKTsKfQoKLy8vIENvbXBhcmVzIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcyBpbiBlYWNoIG9mCi8vLyAgICB0aGUgdHdvIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0gdG8gZGV0ZXJtaW5lIGlmCi8vLyAgICB0aGUgdmFsdWUgaW4gdGhlIGZpcnN0IHBhcmFtZXRlciBpcyBub3QgbGVzcyB0aGFuIHRoZSBjb3JyZXNwb25kaW5nCi8vLyAgICB2YWx1ZSBpbiB0aGUgc2Vjb25kIHBhcmFtZXRlci4KLy8vCi8vLyAgICBUaGUgY29tcGFyaXNvbiB5aWVsZHMgMHgwIGZvciBmYWxzZSwgMHhGRkZGRkZGRkZGRkZGRkZGIGZvciB0cnVlLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBOTFRTRCAvIENNUE5MVFNEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzCi8vLyAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2IuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMKLy8vICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYS4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3IuIFRoZSBsb3dlciA2NCBiaXRzIGNvbnRhaW5zIHRoZSBjb21wYXJpc29uCi8vLyAgICByZXN1bHRzLiBUaGUgdXBwZXIgNjQgYml0cyBhcmUgY29waWVkIGZyb20gdGhlIHVwcGVyIDY0IGJpdHMgb2YgXGEgX19hLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY21wbmx0X3NkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikKewogIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9jbXBubHRzZCgoX192MmRmKV9fYSwgKF9fdjJkZilfX2IpOwp9CgovLy8gQ29tcGFyZXMgdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWVzIGluIGVhY2ggb2YKLy8vICAgIHRoZSB0d28gMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXSB0byBkZXRlcm1pbmUgaWYKLy8vICAgIHRoZSB2YWx1ZSBpbiB0aGUgZmlyc3QgcGFyYW1ldGVyIGlzIG5vdCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlCi8vLyAgICBjb3JyZXNwb25kaW5nIHZhbHVlIGluIHRoZSBzZWNvbmQgcGFyYW1ldGVyLgovLy8KLy8vICAgIFRoZSBjb21wYXJpc29uIHlpZWxkcyAweDAgZm9yIGZhbHNlLCAweEZGRkZGRkZGRkZGRkZGRkYgZm9yIHRydWUuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUE5MRVNEIC8gQ01QTkxFU0QgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMKLy8vICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYi4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcwovLy8gICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19hLgovLy8gXHJldHVybnMgIEEgMTI4LWJpdCB2ZWN0b3IuIFRoZSBsb3dlciA2NCBiaXRzIGNvbnRhaW5zIHRoZSBjb21wYXJpc29uCi8vLyAgICByZXN1bHRzLiBUaGUgdXBwZXIgNjQgYml0cyBhcmUgY29waWVkIGZyb20gdGhlIHVwcGVyIDY0IGJpdHMgb2YgXGEgX19hLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY21wbmxlX3NkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikKewogIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9jbXBubGVzZCgoX192MmRmKV9fYSwgKF9fdjJkZilfX2IpOwp9CgovLy8gQ29tcGFyZXMgdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWVzIGluIGVhY2ggb2YKLy8vICAgIHRoZSB0d28gMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXSB0byBkZXRlcm1pbmUgaWYKLy8vICAgIHRoZSB2YWx1ZSBpbiB0aGUgZmlyc3QgcGFyYW1ldGVyIGlzIG5vdCBncmVhdGVyIHRoYW4gdGhlIGNvcnJlc3BvbmRpbmcKLy8vICAgIHZhbHVlIGluIHRoZSBzZWNvbmQgcGFyYW1ldGVyLgovLy8KLy8vICAgIFRoZSBjb21wYXJpc29uIHlpZWxkcyAweDAgZm9yIGZhbHNlLCAweEZGRkZGRkZGRkZGRkZGRkYgZm9yIHRydWUuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUE5MVFNEIC8gQ01QTkxUU0QgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMKLy8vICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYi4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcwovLy8gICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19hLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3Rvci4gVGhlIGxvd2VyIDY0IGJpdHMgY29udGFpbnMgdGhlIGNvbXBhcmlzb24KLy8vICAgIHJlc3VsdHMuIFRoZSB1cHBlciA2NCBiaXRzIGFyZSBjb3BpZWQgZnJvbSB0aGUgdXBwZXIgNjQgYml0cyBvZiBcYSBfX2EuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jbXBuZ3Rfc2QoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQp7CiAgX19tMTI4ZCBfX2MgPSBfX2J1aWx0aW5faWEzMl9jbXBubHRzZCgoX192MmRmKV9fYiwgKF9fdjJkZilfX2EpOwogIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjhkKSB7IF9fY1swXSwgX19hWzFdIH07Cn0KCi8vLyBDb21wYXJlcyB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMgaW4gZWFjaCBvZgovLy8gICAgdGhlIHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdIHRvIGRldGVybWluZSBpZgovLy8gICAgdGhlIHZhbHVlIGluIHRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgbm90IGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUKLy8vICAgIGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4gdGhlIHNlY29uZCBwYXJhbWV0ZXIuCi8vLwovLy8gICAgVGhlIGNvbXBhcmlzb24geWllbGRzIDB4MCBmb3IgZmFsc2UsIDB4RkZGRkZGRkZGRkZGRkZGRiBmb3IgdHJ1ZS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QTkxFU0QgLyBDTVBOTEVTRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcwovLy8gICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19iLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzCi8vLyAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2EuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yLiBUaGUgbG93ZXIgNjQgYml0cyBjb250YWlucyB0aGUgY29tcGFyaXNvbgovLy8gICAgcmVzdWx0cy4gVGhlIHVwcGVyIDY0IGJpdHMgYXJlIGNvcGllZCBmcm9tIHRoZSB1cHBlciA2NCBiaXRzIG9mIFxhIF9fYS4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2NtcG5nZV9zZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpCnsKICBfX20xMjhkIF9fYyA9IF9fYnVpbHRpbl9pYTMyX2NtcG5sZXNkKChfX3YyZGYpX19iLCAoX192MmRmKV9fYSk7CiAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOGQpIHsgX19jWzBdLCBfX2FbMV0gfTsKfQoKLy8vIENvbXBhcmVzIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcyBpbiBlYWNoIG9mCi8vLyAgICB0aGUgdHdvIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0gZm9yIGVxdWFsaXR5LgovLy8KLy8vICAgIFRoZSBjb21wYXJpc29uIHlpZWxkcyAwIGZvciBmYWxzZSwgMSBmb3IgdHJ1ZS4gSWYgZWl0aGVyIG9mIHRoZSB0d28KLy8vICAgIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ09NSVNEIC8gQ09NSVNEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzCi8vLyAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2IuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMKLy8vICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYS4KLy8vIFxyZXR1cm5zIEFuIGludGVnZXIgY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLiBJZiBlaXRoZXIgb2YgdGhlIHR3bwovLy8gICAgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVybmVkLgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jb21pZXFfc2QoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2NvbWlzZGVxKChfX3YyZGYpX19hLCAoX192MmRmKV9fYik7Cn0KCi8vLyBDb21wYXJlcyB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMgaW4gZWFjaCBvZgovLy8gICAgdGhlIHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdIHRvIGRldGVybWluZSBpZgovLy8gICAgdGhlIHZhbHVlIGluIHRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgbGVzcyB0aGFuIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGluCi8vLyAgICB0aGUgc2Vjb25kIHBhcmFtZXRlci4KLy8vCi8vLyAgICBUaGUgY29tcGFyaXNvbiB5aWVsZHMgMCBmb3IgZmFsc2UsIDEgZm9yIHRydWUuIElmIGVpdGhlciBvZiB0aGUgdHdvCi8vLyAgICBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBpcyBOYU4sIDAgaXMgcmV0dXJuZWQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNPTUlTRCAvIENPTUlTRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcwovLy8gICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19iLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzCi8vLyAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2EuCi8vLyBccmV0dXJucyBBbiBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4gSWYgZWl0aGVyIG9mIHRoZSB0d28KLy8vICAgICBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBpcyBOYU4sIDAgaXMgcmV0dXJuZWQuCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2NvbWlsdF9zZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfY29taXNkbHQoKF9fdjJkZilfX2EsIChfX3YyZGYpX19iKTsKfQoKLy8vIENvbXBhcmVzIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcyBpbiBlYWNoIG9mCi8vLyAgICB0aGUgdHdvIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0gdG8gZGV0ZXJtaW5lIGlmCi8vLyAgICB0aGUgdmFsdWUgaW4gdGhlIGZpcnN0IHBhcmFtZXRlciBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlCi8vLyAgICBjb3JyZXNwb25kaW5nIHZhbHVlIGluIHRoZSBzZWNvbmQgcGFyYW1ldGVyLgovLy8KLy8vICAgIFRoZSBjb21wYXJpc29uIHlpZWxkcyAwIGZvciBmYWxzZSwgMSBmb3IgdHJ1ZS4gSWYgZWl0aGVyIG9mIHRoZSB0d28KLy8vICAgIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ09NSVNEIC8gQ09NSVNEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzCi8vLyAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2IuCi8vLyBccGFyYW0gX19iCi8vLyAgICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzCi8vLyAgICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19hLgovLy8gXHJldHVybnMgQW4gaW50ZWdlciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuIElmIGVpdGhlciBvZiB0aGUgdHdvCi8vLyAgICAgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVybmVkLgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jb21pbGVfc2QoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2NvbWlzZGxlKChfX3YyZGYpX19hLCAoX192MmRmKV9fYik7Cn0KCi8vLyBDb21wYXJlcyB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMgaW4gZWFjaCBvZgovLy8gICAgdGhlIHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdIHRvIGRldGVybWluZSBpZgovLy8gICAgdGhlIHZhbHVlIGluIHRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgZ3JlYXRlciB0aGFuIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlCi8vLyAgICBpbiB0aGUgc2Vjb25kIHBhcmFtZXRlci4KLy8vCi8vLyAgICBUaGUgY29tcGFyaXNvbiB5aWVsZHMgMCBmb3IgZmFsc2UsIDEgZm9yIHRydWUuIElmIGVpdGhlciBvZiB0aGUgdHdvCi8vLyAgICBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBpcyBOYU4sIDAgaXMgcmV0dXJuZWQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNPTUlTRCAvIENPTUlTRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcwovLy8gICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19iLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzCi8vLyAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2EuCi8vLyBccmV0dXJucyBBbiBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4gSWYgZWl0aGVyIG9mIHRoZSB0d28KLy8vICAgICBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBpcyBOYU4sIDAgaXMgcmV0dXJuZWQuCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2NvbWlndF9zZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfY29taXNkZ3QoKF9fdjJkZilfX2EsIChfX3YyZGYpX19iKTsKfQoKLy8vIENvbXBhcmVzIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcyBpbiBlYWNoIG9mCi8vLyAgICB0aGUgdHdvIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0gdG8gZGV0ZXJtaW5lIGlmCi8vLyAgICB0aGUgdmFsdWUgaW4gdGhlIGZpcnN0IHBhcmFtZXRlciBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlCi8vLyAgICBjb3JyZXNwb25kaW5nIHZhbHVlIGluIHRoZSBzZWNvbmQgcGFyYW1ldGVyLgovLy8KLy8vICAgIFRoZSBjb21wYXJpc29uIHlpZWxkcyAwIGZvciBmYWxzZSwgMSBmb3IgdHJ1ZS4gSWYgZWl0aGVyIG9mIHRoZSB0d28KLy8vICAgIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ09NSVNEIC8gQ09NSVNEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzCi8vLyAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2IuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMKLy8vICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYS4KLy8vIFxyZXR1cm5zIEFuIGludGVnZXIgY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLiBJZiBlaXRoZXIgb2YgdGhlIHR3bwovLy8gICAgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVybmVkLgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jb21pZ2Vfc2QoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2NvbWlzZGdlKChfX3YyZGYpX19hLCAoX192MmRmKV9fYik7Cn0KCi8vLyBDb21wYXJlcyB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMgaW4gZWFjaCBvZgovLy8gICAgdGhlIHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdIHRvIGRldGVybWluZSBpZgovLy8gICAgdGhlIHZhbHVlIGluIHRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgdW5lcXVhbCB0byB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBpbgovLy8gICAgdGhlIHNlY29uZCBwYXJhbWV0ZXIuCi8vLwovLy8gICAgVGhlIGNvbXBhcmlzb24geWllbGRzIDAgZm9yIGZhbHNlLCAxIGZvciB0cnVlLiBJZiBlaXRoZXIgb2YgdGhlIHR3bwovLy8gICAgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgaXMgTmFOLCAxIGlzIHJldHVybmVkLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDT01JU0QgLyBDT01JU0QgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMKLy8vICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYi4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcwovLy8gICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19hLgovLy8gXHJldHVybnMgQW4gaW50ZWdlciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuIElmIGVpdGhlciBvZiB0aGUgdHdvCi8vLyAgICAgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgaXMgTmFOLCAxIGlzIHJldHVybmVkLgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jb21pbmVxX3NkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9jb21pc2RuZXEoKF9fdjJkZilfX2EsIChfX3YyZGYpX19iKTsKfQoKLy8vIENvbXBhcmVzIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcyBpbiBlYWNoIG9mCi8vLyAgICB0aGUgdHdvIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0gZm9yIGVxdWFsaXR5LiBUaGUKLy8vICAgIGNvbXBhcmlzb24geWllbGRzIDAgZm9yIGZhbHNlLCAxIGZvciB0cnVlLgovLy8KLy8vICAgIElmIGVpdGhlciBvZiB0aGUgdHdvIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWVUNPTUlTRCAvIFVDT01JU0QgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMKLy8vICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYi4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcwovLy8gICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19hLgovLy8gXHJldHVybnMgQW4gaW50ZWdlciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuIElmIGVpdGhlciBvZiB0aGUgdHdvCi8vLyAgICBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBpcyBOYU4sIDAgaXMgcmV0dXJuZWQuCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3Vjb21pZXFfc2QoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Vjb21pc2RlcSgoX192MmRmKV9fYSwgKF9fdjJkZilfX2IpOwp9CgovLy8gQ29tcGFyZXMgdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWVzIGluIGVhY2ggb2YKLy8vICAgIHRoZSB0d28gMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXSB0byBkZXRlcm1pbmUgaWYKLy8vICAgIHRoZSB2YWx1ZSBpbiB0aGUgZmlyc3QgcGFyYW1ldGVyIGlzIGxlc3MgdGhhbiB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBpbgovLy8gICAgdGhlIHNlY29uZCBwYXJhbWV0ZXIuCi8vLwovLy8gICAgVGhlIGNvbXBhcmlzb24geWllbGRzIDAgZm9yIGZhbHNlLCAxIGZvciB0cnVlLiBJZiBlaXRoZXIgb2YgdGhlIHR3byBsb3dlcgovLy8gICAgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVybmVkLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZVQ09NSVNEIC8gVUNPTUlTRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcwovLy8gICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19iLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzCi8vLyAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2EuCi8vLyBccmV0dXJucyBBbiBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4gSWYgZWl0aGVyIG9mIHRoZSB0d28KLy8vICAgIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4Kc3RhdGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fdWNvbWlsdF9zZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfdWNvbWlzZGx0KChfX3YyZGYpX19hLCAoX192MmRmKV9fYik7Cn0KCi8vLyBDb21wYXJlcyB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMgaW4gZWFjaCBvZgovLy8gICAgdGhlIHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdIHRvIGRldGVybWluZSBpZgovLy8gICAgdGhlIHZhbHVlIGluIHRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZQovLy8gICAgY29ycmVzcG9uZGluZyB2YWx1ZSBpbiB0aGUgc2Vjb25kIHBhcmFtZXRlci4KLy8vCi8vLyAgICBUaGUgY29tcGFyaXNvbiB5aWVsZHMgMCBmb3IgZmFsc2UsIDEgZm9yIHRydWUuIElmIGVpdGhlciBvZiB0aGUgdHdvIGxvd2VyCi8vLyAgICBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBpcyBOYU4sIDAgaXMgcmV0dXJuZWQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlVDT01JU0QgLyBVQ09NSVNEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzCi8vLyAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2IuCi8vLyBccGFyYW0gX19iCi8vLyAgICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzCi8vLyAgICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19hLgovLy8gXHJldHVybnMgQW4gaW50ZWdlciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuIElmIGVpdGhlciBvZiB0aGUgdHdvCi8vLyAgICAgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVybmVkLgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV91Y29taWxlX3NkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl91Y29taXNkbGUoKF9fdjJkZilfX2EsIChfX3YyZGYpX19iKTsKfQoKLy8vIENvbXBhcmVzIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcyBpbiBlYWNoIG9mCi8vLyAgICB0aGUgdHdvIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0gdG8gZGV0ZXJtaW5lIGlmCi8vLyAgICB0aGUgdmFsdWUgaW4gdGhlIGZpcnN0IHBhcmFtZXRlciBpcyBncmVhdGVyIHRoYW4gdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUKLy8vICAgIGluIHRoZSBzZWNvbmQgcGFyYW1ldGVyLgovLy8KLy8vICAgIFRoZSBjb21wYXJpc29uIHlpZWxkcyAwIGZvciBmYWxzZSwgMSBmb3IgdHJ1ZS4gSWYgZWl0aGVyIG9mIHRoZSB0d28gbG93ZXIKLy8vICAgIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWVUNPTUlTRCAvIFVDT01JU0QgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMKLy8vICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYi4KLy8vIFxwYXJhbSBfX2IKLy8vICAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMKLy8vICAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2EuCi8vLyBccmV0dXJucyBBbiBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4gSWYgZWl0aGVyIG9mIHRoZSB0d28KLy8vICAgICBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBpcyBOYU4sIDAgaXMgcmV0dXJuZWQuCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3Vjb21pZ3Rfc2QoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Vjb21pc2RndCgoX192MmRmKV9fYSwgKF9fdjJkZilfX2IpOwp9CgovLy8gQ29tcGFyZXMgdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWVzIGluIGVhY2ggb2YKLy8vICAgIHRoZSB0d28gMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXSB0byBkZXRlcm1pbmUgaWYKLy8vICAgIHRoZSB2YWx1ZSBpbiB0aGUgZmlyc3QgcGFyYW1ldGVyIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUKLy8vICAgIGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4gdGhlIHNlY29uZCBwYXJhbWV0ZXIuCi8vLwovLy8gICAgVGhlIGNvbXBhcmlzb24geWllbGRzIDAgZm9yIGZhbHNlLCAxIGZvciB0cnVlLiAgSWYgZWl0aGVyIG9mIHRoZSB0d28KLy8vICAgIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWVUNPTUlTRCAvIFVDT01JU0QgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMKLy8vICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYi4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcwovLy8gICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19hLgovLy8gXHJldHVybnMgQW4gaW50ZWdlciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuIElmIGVpdGhlciBvZiB0aGUgdHdvCi8vLyAgICBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBpcyBOYU4sIDAgaXMgcmV0dXJuZWQuCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3Vjb21pZ2Vfc2QoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Vjb21pc2RnZSgoX192MmRmKV9fYSwgKF9fdjJkZilfX2IpOwp9CgovLy8gQ29tcGFyZXMgdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWVzIGluIGVhY2ggb2YKLy8vICAgIHRoZSB0d28gMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXSB0byBkZXRlcm1pbmUgaWYKLy8vICAgIHRoZSB2YWx1ZSBpbiB0aGUgZmlyc3QgcGFyYW1ldGVyIGlzIHVuZXF1YWwgdG8gdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4KLy8vICAgIHRoZSBzZWNvbmQgcGFyYW1ldGVyLgovLy8KLy8vICAgIFRoZSBjb21wYXJpc29uIHlpZWxkcyAwIGZvciBmYWxzZSwgMSBmb3IgdHJ1ZS4gSWYgZWl0aGVyIG9mIHRoZSB0d28gbG93ZXIKLy8vICAgIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIGlzIE5hTiwgMSBpcyByZXR1cm5lZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWVUNPTUlTRCAvIFVDT01JU0QgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMKLy8vICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYi4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcwovLy8gICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19hLgovLy8gXHJldHVybnMgQW4gaW50ZWdlciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdC4gSWYgZWl0aGVyIG9mIHRoZSB0d28KLy8vICAgIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIGlzIE5hTiwgMSBpcyByZXR1cm5lZC4Kc3RhdGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fdWNvbWluZXFfc2QoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Vjb21pc2RuZXEoKF9fdjJkZilfX2EsIChfX3YyZGYpX19iKTsKfQoKLy8vIENvbnZlcnRzIHRoZSB0d28gZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCBlbGVtZW50cyBvZiBhCi8vLyAgICAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gaW50byB0d28gc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludAovLy8gICAgdmFsdWVzLCByZXR1cm5lZCBpbiB0aGUgbG93ZXIgNjQgYml0cyBvZiBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLgovLy8gICAgVGhlIHVwcGVyIDY0IGJpdHMgb2YgdGhlIHJlc3VsdCB2ZWN0b3IgYXJlIHNldCB0byB6ZXJvLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDVlRQRDJQUyAvIENWVFBEMlBTIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIHdob3NlIGxvd2VyIDY0IGJpdHMgY29udGFpbiB0aGUKLy8vICAgIGNvbnZlcnRlZCB2YWx1ZXMuIFRoZSB1cHBlciA2NCBiaXRzIGFyZSBzZXQgdG8gemVyby4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY3Z0cGRfcHMoX19tMTI4ZCBfX2EpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfY3Z0cGQycHMoKF9fdjJkZilfX2EpOwp9CgovLy8gQ29udmVydHMgdGhlIGxvd2VyIHR3byBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IGVsZW1lbnRzIG9mIGEKLy8vICAgIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGludG8gdHdvIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQKLy8vICAgIHZhbHVlcywgcmV0dXJuZWQgaW4gYSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSB1cHBlciB0d28KLy8vICAgIGVsZW1lbnRzIG9mIHRoZSBpbnB1dCB2ZWN0b3IgYXJlIHVudXNlZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ1ZUUFMyUEQgLyBDVlRQUzJQRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciB0d28gc2luZ2xlLXByZWNpc2lvbgovLy8gICAgZmxvYXRpbmctcG9pbnQgZWxlbWVudHMgYXJlIGNvbnZlcnRlZCB0byBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcy4gVGhlCi8vLyAgICB1cHBlciB0d28gZWxlbWVudHMgYXJlIHVudXNlZC4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRlZCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jdnRwc19wZChfX20xMjggX19hKQp7CiAgcmV0dXJuIChfX20xMjhkKSBfX2J1aWx0aW5fY29udmVydHZlY3RvcigKICAgICAgX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19hLCAwLCAxKSwgX192MmRmKTsKfQoKLy8vIENvbnZlcnRzIHRoZSBsb3dlciB0d28gaW50ZWdlciBlbGVtZW50cyBvZiBhIDEyOC1iaXQgdmVjdG9yIG9mCi8vLyAgICBbNCB4IGkzMl0gaW50byB0d28gZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMsIHJldHVybmVkIGluIGEKLy8vICAgIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4KLy8vCi8vLyAgICBUaGUgdXBwZXIgdHdvIGVsZW1lbnRzIG9mIHRoZSBpbnB1dCB2ZWN0b3IgYXJlIHVudXNlZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ1ZURFEyUEQgLyBDVlREUTJQRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkzMl0uIFRoZSBsb3dlciB0d28gaW50ZWdlciBlbGVtZW50cyBhcmUKLy8vICAgIGNvbnZlcnRlZCB0byBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcy4KLy8vCi8vLyAgICBUaGUgdXBwZXIgdHdvIGVsZW1lbnRzIGFyZSB1bnVzZWQuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBjb252ZXJ0ZWQgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY3Z0ZXBpMzJfcGQoX19tMTI4aSBfX2EpCnsKICByZXR1cm4gKF9fbTEyOGQpIF9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKAogICAgICBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192NHNpKV9fYSwgKF9fdjRzaSlfX2EsIDAsIDEpLCBfX3YyZGYpOwp9CgovLy8gQ29udmVydHMgdGhlIHR3byBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IGVsZW1lbnRzIG9mIGEKLy8vICAgIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBpbnRvIHR3byBzaWduZWQgMzItYml0IGludGVnZXIgdmFsdWVzLAovLy8gICAgcmV0dXJuZWQgaW4gdGhlIGxvd2VyIDY0IGJpdHMgb2YgYSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0uIFRoZSB1cHBlcgovLy8gICAgNjQgYml0cyBvZiB0aGUgcmVzdWx0IHZlY3RvciBhcmUgc2V0IHRvIHplcm8uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNWVFBEMkRRIC8gQ1ZUUEQyRFEgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdIHdob3NlIGxvd2VyIDY0IGJpdHMgY29udGFpbiB0aGUKLy8vICAgIGNvbnZlcnRlZCB2YWx1ZXMuIFRoZSB1cHBlciA2NCBiaXRzIGFyZSBzZXQgdG8gemVyby4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2N2dHBkX2VwaTMyKF9fbTEyOGQgX19hKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2N2dHBkMmRxKChfX3YyZGYpX19hKTsKfQoKLy8vIENvbnZlcnRzIHRoZSBsb3ctb3JkZXIgZWxlbWVudCBvZiBhIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXQovLy8gICAgaW50byBhIDMyLWJpdCBzaWduZWQgaW50ZWdlciB2YWx1ZS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ1ZUU0QyU0kgLyBDVlRTRDJTSSA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgNjQgYml0cyBhcmUgdXNlZCBpbiB0aGUKLy8vICAgIGNvbnZlcnNpb24uCi8vLyBccmV0dXJucyBBIDMyLWJpdCBzaWduZWQgaW50ZWdlciBjb250YWluaW5nIHRoZSBjb252ZXJ0ZWQgdmFsdWUuCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2N2dHNkX3NpMzIoX19tMTI4ZCBfX2EpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfY3Z0c2Qyc2koKF9fdjJkZilfX2EpOwp9CgovLy8gQ29udmVydHMgdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgZWxlbWVudCBvZiBhCi8vLyAgICAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0sIGluIHRoZSBzZWNvbmQgcGFyYW1ldGVyLCBpbnRvIGEKLy8vICAgIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUsIHJldHVybmVkIGluIHRoZSBsb3dlciAzMiBiaXRzIG9mIGEKLy8vICAgIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgdXBwZXIgOTYgYml0cyBvZiB0aGUgcmVzdWx0IHZlY3RvciBhcmUKLy8vICAgIGNvcGllZCBmcm9tIHRoZSB1cHBlciA5NiBiaXRzIG9mIHRoZSBmaXJzdCBwYXJhbWV0ZXIuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNWVFNEMlNTIC8gQ1ZUU0QyU1MgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgdXBwZXIgOTYgYml0cyBvZiB0aGlzIHBhcmFtZXRlciBhcmUKLy8vICAgIGNvcGllZCB0byB0aGUgdXBwZXIgOTYgYml0cyBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uCi8vLyAgICBmbG9hdGluZy1wb2ludCBlbGVtZW50IGlzIHVzZWQgaW4gdGhlIGNvbnZlcnNpb24uCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIgMzIgYml0cyBjb250YWluIHRoZQovLy8gICAgY29udmVydGVkIHZhbHVlIGZyb20gdGhlIHNlY29uZCBwYXJhbWV0ZXIuIFRoZSB1cHBlciA5NiBiaXRzIGFyZSBjb3BpZWQKLy8vICAgIGZyb20gdGhlIHVwcGVyIDk2IGJpdHMgb2YgdGhlIGZpcnN0IHBhcmFtZXRlci4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY3Z0c2Rfc3MoX19tMTI4IF9fYSwgX19tMTI4ZCBfX2IpCnsKICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl9jdnRzZDJzcygoX192NHNmKV9fYSwgKF9fdjJkZilfX2IpOwp9CgovLy8gQ29udmVydHMgYSAzMi1iaXQgc2lnbmVkIGludGVnZXIgdmFsdWUsIGluIHRoZSBzZWNvbmQgcGFyYW1ldGVyLCBpbnRvCi8vLyAgICBhIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUsIHJldHVybmVkIGluIHRoZSBsb3dlciA2NCBiaXRzIG9mCi8vLyAgICBhIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIHVwcGVyIDY0IGJpdHMgb2YgdGhlIHJlc3VsdCB2ZWN0b3IKLy8vICAgIGFyZSBjb3BpZWQgZnJvbSB0aGUgdXBwZXIgNjQgYml0cyBvZiB0aGUgZmlyc3QgcGFyYW1ldGVyLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDVlRTSTJTRCAvIENWVFNJMlNEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSB1cHBlciA2NCBiaXRzIG9mIHRoaXMgcGFyYW1ldGVyIGFyZQovLy8gICAgY29waWVkIHRvIHRoZSB1cHBlciA2NCBiaXRzIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDMyLWJpdCBzaWduZWQgaW50ZWdlciBjb250YWluaW5nIHRoZSB2YWx1ZSB0byBiZSBjb252ZXJ0ZWQuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIDY0IGJpdHMgY29udGFpbiB0aGUKLy8vICAgIGNvbnZlcnRlZCB2YWx1ZSBmcm9tIHRoZSBzZWNvbmQgcGFyYW1ldGVyLiBUaGUgdXBwZXIgNjQgYml0cyBhcmUgY29waWVkCi8vLyAgICBmcm9tIHRoZSB1cHBlciA2NCBiaXRzIG9mIHRoZSBmaXJzdCBwYXJhbWV0ZXIuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jdnRzaTMyX3NkKF9fbTEyOGQgX19hLCBpbnQgX19iKQp7CiAgX19hWzBdID0gX19iOwogIHJldHVybiBfX2E7Cn0KCi8vLyBDb252ZXJ0cyB0aGUgbG93ZXIgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCBlbGVtZW50IG9mIGEKLy8vICAgIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLCBpbiB0aGUgc2Vjb25kIHBhcmFtZXRlciwgaW50byBhCi8vLyAgICBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlLCByZXR1cm5lZCBpbiB0aGUgbG93ZXIgNjQgYml0cyBvZgovLy8gICAgYSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSB1cHBlciA2NCBiaXRzIG9mIHRoZSByZXN1bHQgdmVjdG9yCi8vLyAgICBhcmUgY29waWVkIGZyb20gdGhlIHVwcGVyIDY0IGJpdHMgb2YgdGhlIGZpcnN0IHBhcmFtZXRlci4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ1ZUU1MyU0QgLyBDVlRTUzJTRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgdXBwZXIgNjQgYml0cyBvZiB0aGlzIHBhcmFtZXRlciBhcmUKLy8vICAgIGNvcGllZCB0byB0aGUgdXBwZXIgNjQgYml0cyBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIHNpbmdsZS1wcmVjaXNpb24KLy8vICAgIGZsb2F0aW5nLXBvaW50IGVsZW1lbnQgaXMgdXNlZCBpbiB0aGUgY29udmVyc2lvbi4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgNjQgYml0cyBjb250YWluIHRoZQovLy8gICAgY29udmVydGVkIHZhbHVlIGZyb20gdGhlIHNlY29uZCBwYXJhbWV0ZXIuIFRoZSB1cHBlciA2NCBiaXRzIGFyZSBjb3BpZWQKLy8vICAgIGZyb20gdGhlIHVwcGVyIDY0IGJpdHMgb2YgdGhlIGZpcnN0IHBhcmFtZXRlci4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2N2dHNzX3NkKF9fbTEyOGQgX19hLCBfX20xMjggX19iKQp7CiAgX19hWzBdID0gX19iWzBdOwogIHJldHVybiBfX2E7Cn0KCi8vLyBDb252ZXJ0cyB0aGUgdHdvIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgZWxlbWVudHMgb2YgYQovLy8gICAgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGludG8gdHdvIHNpZ25lZCAzMi1iaXQgaW50ZWdlciB2YWx1ZXMsCi8vLyAgICByZXR1cm5lZCBpbiB0aGUgbG93ZXIgNjQgYml0cyBvZiBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXS4KLy8vCi8vLyAgICBJZiB0aGUgcmVzdWx0IG9mIGVpdGhlciBjb252ZXJzaW9uIGlzIGluZXhhY3QsIHRoZSByZXN1bHQgaXMgdHJ1bmNhdGVkCi8vLyAgICAocm91bmRlZCB0b3dhcmRzIHplcm8pIHJlZ2FyZGxlc3Mgb2YgdGhlIGN1cnJlbnQgTVhDU1Igc2V0dGluZy4gVGhlIHVwcGVyCi8vLyAgICA2NCBiaXRzIG9mIHRoZSByZXN1bHQgdmVjdG9yIGFyZSBzZXQgdG8gemVyby4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ1ZUVFBEMkRRIC8gQ1ZUVFBEMkRRIDwvYz4KLy8vICAgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXSB3aG9zZSBsb3dlciA2NCBiaXRzIGNvbnRhaW4gdGhlCi8vLyAgICBjb252ZXJ0ZWQgdmFsdWVzLiBUaGUgdXBwZXIgNjQgYml0cyBhcmUgc2V0IHRvIHplcm8uCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jdnR0cGRfZXBpMzIoX19tMTI4ZCBfX2EpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfY3Z0dHBkMmRxKChfX3YyZGYpX19hKTsKfQoKLy8vIENvbnZlcnRzIHRoZSBsb3ctb3JkZXIgZWxlbWVudCBvZiBhIFsyIHggZG91YmxlXSB2ZWN0b3IgaW50byBhIDMyLWJpdAovLy8gICAgc2lnbmVkIGludGVnZXIgdmFsdWUsIHRydW5jYXRpbmcgdGhlIHJlc3VsdCB3aGVuIGl0IGlzIGluZXhhY3QuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNWVFRTRDJTSSAvIENWVFRTRDJTSSA8L2M+Ci8vLyAgIGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgNjQgYml0cyBhcmUgdXNlZCBpbiB0aGUKLy8vICAgIGNvbnZlcnNpb24uCi8vLyBccmV0dXJucyBBIDMyLWJpdCBzaWduZWQgaW50ZWdlciBjb250YWluaW5nIHRoZSBjb252ZXJ0ZWQgdmFsdWUuCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2N2dHRzZF9zaTMyKF9fbTEyOGQgX19hKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2N2dHRzZDJzaSgoX192MmRmKV9fYSk7Cn0KCi8vLyBDb252ZXJ0cyB0aGUgdHdvIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgZWxlbWVudHMgb2YgYQovLy8gICAgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGludG8gdHdvIHNpZ25lZCAzMi1iaXQgaW50ZWdlciB2YWx1ZXMsCi8vLyAgICByZXR1cm5lZCBpbiBhIDY0LWJpdCB2ZWN0b3Igb2YgWzIgeCBpMzJdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IENWVFBEMlBJIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uCi8vLyBccmV0dXJucyBBIDY0LWJpdCB2ZWN0b3Igb2YgWzIgeCBpMzJdIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRlZCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgKX21tX2N2dHBkX3BpMzIoX19tMTI4ZCBfX2EpCnsKICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX2N2dHBkMnBpKChfX3YyZGYpX19hKTsKfQoKLy8vIENvbnZlcnRzIHRoZSB0d28gZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCBlbGVtZW50cyBvZiBhCi8vLyAgICAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gaW50byB0d28gc2lnbmVkIDMyLWJpdCBpbnRlZ2VyIHZhbHVlcywKLy8vICAgIHJldHVybmVkIGluIGEgNjQtYml0IHZlY3RvciBvZiBbMiB4IGkzMl0uCi8vLwovLy8gICAgSWYgdGhlIHJlc3VsdCBvZiBlaXRoZXIgY29udmVyc2lvbiBpcyBpbmV4YWN0LCB0aGUgcmVzdWx0IGlzIHRydW5jYXRlZAovLy8gICAgKHJvdW5kZWQgdG93YXJkcyB6ZXJvKSByZWdhcmRsZXNzIG9mIHRoZSBjdXJyZW50IE1YQ1NSIHNldHRpbmcuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gQ1ZUVFBEMlBJIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uCi8vLyBccmV0dXJucyBBIDY0LWJpdCB2ZWN0b3Igb2YgWzIgeCBpMzJdIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRlZCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgKX21tX2N2dHRwZF9waTMyKF9fbTEyOGQgX19hKQp7CiAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9jdnR0cGQycGkoKF9fdjJkZilfX2EpOwp9CgovLy8gQ29udmVydHMgdGhlIHR3byBzaWduZWQgMzItYml0IGludGVnZXIgZWxlbWVudHMgb2YgYSA2NC1iaXQgdmVjdG9yIG9mCi8vLyAgICBbMiB4IGkzMl0gaW50byB0d28gZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMsIHJldHVybmVkIGluIGEKLy8vICAgIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBDVlRQSTJQRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgNjQtYml0IHZlY3RvciBvZiBbMiB4IGkzMl0uCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBjb252ZXJ0ZWQgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSU19NTVgKX21tX2N2dHBpMzJfcGQoX19tNjQgX19hKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2N2dHBpMnBkKChfX3Yyc2kpX19hKTsKfQoKLy8vIFJldHVybnMgdGhlIGxvdy1vcmRlciBlbGVtZW50IG9mIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGFzCi8vLyAgICBhIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGhhcyBubyBjb3JyZXNwb25kaW5nIGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgNjQgYml0cyBhcmUgcmV0dXJuZWQuCi8vLyBccmV0dXJucyBBIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUgY29waWVkIGZyb20gdGhlIGxvd2VyIDY0Ci8vLyAgICBiaXRzIG9mIFxhIF9fYS4Kc3RhdGljIF9faW5saW5lX18gZG91YmxlIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY3Z0c2RfZjY0KF9fbTEyOGQgX19hKQp7CiAgcmV0dXJuIF9fYVswXTsKfQoKLy8vIExvYWRzIGEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGZyb20gYW4gYWxpZ25lZAovLy8gICAgbWVtb3J5IGxvY2F0aW9uLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZBUEQgLyBNT1ZBUEQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19kcAovLy8gICAgQSBwb2ludGVyIHRvIGEgMTI4LWJpdCBtZW1vcnkgbG9jYXRpb24uIFRoZSBhZGRyZXNzIG9mIHRoZSBtZW1vcnkKLy8vICAgIGxvY2F0aW9uIGhhcyB0byBiZSAxNi1ieXRlIGFsaWduZWQuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBsb2FkZWQgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fbG9hZF9wZChkb3VibGUgY29uc3QgKl9fZHApCnsKICByZXR1cm4gKihjb25zdCBfX20xMjhkKilfX2RwOwp9CgovLy8gTG9hZHMgYSBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIGZyb20gYSBzcGVjaWZpZWQgbWVtb3J5Ci8vLyAgICBsb2NhdGlvbiBhbmQgZHVwbGljYXRlcyBpdCB0byBib3RoIHZlY3RvciBlbGVtZW50cyBvZiBhIDEyOC1iaXQgdmVjdG9yIG9mCi8vLyAgICBbMiB4IGRvdWJsZV0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVkREVVAgLyBNT1ZERFVQIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fZHAKLy8vICAgIEEgcG9pbnRlciB0byBhIG1lbW9yeSBsb2NhdGlvbiBjb250YWluaW5nIGEgZG91YmxlLXByZWNpc2lvbiB2YWx1ZS4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGxvYWRlZCBhbmQKLy8vICAgIGR1cGxpY2F0ZWQgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fbG9hZDFfcGQoZG91YmxlIGNvbnN0ICpfX2RwKQp7CiAgc3RydWN0IF9fbW1fbG9hZDFfcGRfc3RydWN0IHsKICAgIGRvdWJsZSBfX3U7CiAgfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19fKSk7CiAgZG91YmxlIF9fdSA9ICgoY29uc3Qgc3RydWN0IF9fbW1fbG9hZDFfcGRfc3RydWN0KilfX2RwKS0+X191OwogIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjhkKXsgX191LCBfX3UgfTsKfQoKI2RlZmluZSAgICAgICAgX21tX2xvYWRfcGQxKGRwKSAgICAgICAgX21tX2xvYWQxX3BkKGRwKQoKLy8vIExvYWRzIHR3byBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcywgaW4gcmV2ZXJzZSBvcmRlciwgZnJvbSBhbiBhbGlnbmVkCi8vLyAgICBtZW1vcnkgbG9jYXRpb24gaW50byBhIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WQVBEIC8gTU9WQVBEIDwvYz4gaW5zdHJ1Y3Rpb24gKwovLy8gbmVlZGVkIHNodWZmbGluZyBpbnN0cnVjdGlvbnMuIEluIEFWWCBtb2RlLCB0aGUgc2h1ZmZsaW5nIG1heSBiZSBjb21iaW5lZAovLy8gd2l0aCB0aGUgXGMgVk1PVkFQRCwgcmVzdWx0aW5nIGluIG9ubHkgYSBcYyBWUEVSTUlMUEQgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fZHAKLy8vICAgIEEgMTYtYnl0ZSBhbGlnbmVkIHBvaW50ZXIgdG8gYW4gYXJyYXkgb2YgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgdG8gYmUKLy8vICAgIGxvYWRlZCBpbiByZXZlcnNlIG9yZGVyLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgcmV2ZXJzZWQgbG9hZGVkCi8vLyAgICB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9sb2Fkcl9wZChkb3VibGUgY29uc3QgKl9fZHApCnsKICBfX20xMjhkIF9fdSA9ICooY29uc3QgX19tMTI4ZCopX19kcDsKICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjJkZilfX3UsIChfX3YyZGYpX191LCAxLCAwKTsKfQoKLy8vIExvYWRzIGEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGZyb20gYW4KLy8vICAgIHVuYWxpZ25lZCBtZW1vcnkgbG9jYXRpb24uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVlVQRCAvIE1PVlVQRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2RwCi8vLyAgICBBIHBvaW50ZXIgdG8gYSAxMjgtYml0IG1lbW9yeSBsb2NhdGlvbi4gVGhlIGFkZHJlc3Mgb2YgdGhlIG1lbW9yeQovLy8gICAgbG9jYXRpb24gZG9lcyBub3QgaGF2ZSB0byBiZSBhbGlnbmVkLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgbG9hZGVkIHZhbHVlcy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2xvYWR1X3BkKGRvdWJsZSBjb25zdCAqX19kcCkKewogIHN0cnVjdCBfX2xvYWR1X3BkIHsKICAgIF9fbTEyOGRfdSBfX3Y7CiAgfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19fKSk7CiAgcmV0dXJuICgoY29uc3Qgc3RydWN0IF9fbG9hZHVfcGQqKV9fZHApLT5fX3Y7Cn0KCi8vLyBMb2FkcyBhIDY0LWJpdCBpbnRlZ2VyIHZhbHVlIHRvIHRoZSBsb3cgZWxlbWVudCBvZiBhIDEyOC1iaXQgaW50ZWdlcgovLy8gICAgdmVjdG9yIGFuZCBjbGVhcnMgdGhlIHVwcGVyIGVsZW1lbnQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVlEgLyBNT1ZRIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSBwb2ludGVyIHRvIGEgNjQtYml0IG1lbW9yeSBsb2NhdGlvbi4gVGhlIGFkZHJlc3Mgb2YgdGhlIG1lbW9yeQovLy8gICAgbG9jYXRpb24gZG9lcyBub3QgaGF2ZSB0byBiZSBhbGlnbmVkLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0gY29udGFpbmluZyB0aGUgbG9hZGVkIHZhbHVlLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fbG9hZHVfc2k2NCh2b2lkIGNvbnN0ICpfX2EpCnsKICBzdHJ1Y3QgX19sb2FkdV9zaTY0IHsKICAgIGxvbmcgbG9uZyBfX3Y7CiAgfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19fKSk7CiAgbG9uZyBsb25nIF9fdSA9ICgoY29uc3Qgc3RydWN0IF9fbG9hZHVfc2k2NCopX19hKS0+X192OwogIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjhpKShfX3YyZGkpe19fdSwgMExMfTsKfQoKLy8vIExvYWRzIGEgMzItYml0IGludGVnZXIgdmFsdWUgdG8gdGhlIGxvdyBlbGVtZW50IG9mIGEgMTI4LWJpdCBpbnRlZ2VyCi8vLyAgICB2ZWN0b3IgYW5kIGNsZWFycyB0aGUgdXBwZXIgZWxlbWVudC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WRCAvIE1PVkQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIHBvaW50ZXIgdG8gYSAzMi1iaXQgbWVtb3J5IGxvY2F0aW9uLiBUaGUgYWRkcmVzcyBvZiB0aGUgbWVtb3J5Ci8vLyAgICBsb2NhdGlvbiBkb2VzIG5vdCBoYXZlIHRvIGJlIGFsaWduZWQuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXSBjb250YWluaW5nIHRoZSBsb2FkZWQgdmFsdWUuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9sb2FkdV9zaTMyKHZvaWQgY29uc3QgKl9fYSkKewogIHN0cnVjdCBfX2xvYWR1X3NpMzIgewogICAgaW50IF9fdjsKICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsKICBpbnQgX191ID0gKChjb25zdCBzdHJ1Y3QgX19sb2FkdV9zaTMyKilfX2EpLT5fX3Y7CiAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOGkpKF9fdjRzaSl7X191LCAwLCAwLCAwfTsKfQoKLy8vIExvYWRzIGEgMTYtYml0IGludGVnZXIgdmFsdWUgdG8gdGhlIGxvdyBlbGVtZW50IG9mIGEgMTI4LWJpdCBpbnRlZ2VyCi8vLyAgICB2ZWN0b3IgYW5kIGNsZWFycyB0aGUgdXBwZXIgZWxlbWVudC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHNwZWNpZmljIGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgcG9pbnRlciB0byBhIDE2LWJpdCBtZW1vcnkgbG9jYXRpb24uIFRoZSBhZGRyZXNzIG9mIHRoZSBtZW1vcnkKLy8vICAgIGxvY2F0aW9uIGRvZXMgbm90IGhhdmUgdG8gYmUgYWxpZ25lZC4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZdIGNvbnRhaW5pbmcgdGhlIGxvYWRlZCB2YWx1ZS4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2xvYWR1X3NpMTYodm9pZCBjb25zdCAqX19hKQp7CiAgc3RydWN0IF9fbG9hZHVfc2kxNiB7CiAgICBzaG9ydCBfX3Y7CiAgfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19fKSk7CiAgc2hvcnQgX191ID0gKChjb25zdCBzdHJ1Y3QgX19sb2FkdV9zaTE2KilfX2EpLT5fX3Y7CiAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOGkpKF9fdjhoaSl7X191LCAwLCAwLCAwLCAwLCAwLCAwLCAwfTsKfQoKLy8vIExvYWRzIGEgNjQtYml0IGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgdG8gdGhlIGxvdyBlbGVtZW50IG9mIGEKLy8vICAgIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgYW5kIGNsZWFycyB0aGUgdXBwZXIgZWxlbWVudC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WU0QgLyBNT1ZTRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2RwCi8vLyAgICBBIHBvaW50ZXIgdG8gYSBtZW1vcnkgbG9jYXRpb24gY29udGFpbmluZyBhIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUuCi8vLyAgICBUaGUgYWRkcmVzcyBvZiB0aGUgbWVtb3J5IGxvY2F0aW9uIGRvZXMgbm90IGhhdmUgdG8gYmUgYWxpZ25lZC4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGxvYWRlZCB2YWx1ZS4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2xvYWRfc2QoZG91YmxlIGNvbnN0ICpfX2RwKQp7CiAgc3RydWN0IF9fbW1fbG9hZF9zZF9zdHJ1Y3QgewogICAgZG91YmxlIF9fdTsKICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsKICBkb3VibGUgX191ID0gKChjb25zdCBzdHJ1Y3QgX19tbV9sb2FkX3NkX3N0cnVjdCopX19kcCktPl9fdTsKICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMTI4ZCl7IF9fdSwgMCB9Owp9CgovLy8gTG9hZHMgYSBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGludG8gdGhlIGhpZ2gtb3JkZXIgYml0cyBvZiBhIDEyOC1iaXQKLy8vICAgIHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3ctb3JkZXIgYml0cyBhcmUgY29waWVkIGZyb20gdGhlIGxvdy1vcmRlcgovLy8gICAgYml0cyBvZiB0aGUgZmlyc3Qgb3BlcmFuZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WSFBEIC8gTU9WSFBEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFxuCi8vLyAgICBCaXRzIFs2MzowXSBhcmUgd3JpdHRlbiB0byBiaXRzIFs2MzowXSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fZHAKLy8vICAgIEEgcG9pbnRlciB0byBhIDY0LWJpdCBtZW1vcnkgbG9jYXRpb24gY29udGFpbmluZyBhIGRvdWJsZS1wcmVjaXNpb24KLy8vICAgIGZsb2F0aW5nLXBvaW50IHZhbHVlIHRoYXQgaXMgbG9hZGVkLiBUaGUgbG9hZGVkIHZhbHVlIGlzIHdyaXR0ZW4gdG8gYml0cwovLy8gICAgWzEyNzo2NF0gb2YgdGhlIHJlc3VsdC4gVGhlIGFkZHJlc3Mgb2YgdGhlIG1lbW9yeSBsb2NhdGlvbiBkb2VzIG5vdCBoYXZlCi8vLyAgICB0byBiZSBhbGlnbmVkLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgbW92ZWQgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fbG9hZGhfcGQoX19tMTI4ZCBfX2EsIGRvdWJsZSBjb25zdCAqX19kcCkKewogIHN0cnVjdCBfX21tX2xvYWRoX3BkX3N0cnVjdCB7CiAgICBkb3VibGUgX191OwogIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOwogIGRvdWJsZSBfX3UgPSAoKGNvbnN0IHN0cnVjdCBfX21tX2xvYWRoX3BkX3N0cnVjdCopX19kcCktPl9fdTsKICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMTI4ZCl7IF9fYVswXSwgX191IH07Cn0KCi8vLyBMb2FkcyBhIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaW50byB0aGUgbG93LW9yZGVyIGJpdHMgb2YgYSAxMjgtYml0Ci8vLyAgICB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgaGlnaC1vcmRlciBiaXRzIGFyZSBjb3BpZWQgZnJvbSB0aGUKLy8vICAgIGhpZ2gtb3JkZXIgYml0cyBvZiB0aGUgZmlyc3Qgb3BlcmFuZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WTFBEIC8gTU9WTFBEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFxuCi8vLyAgICBCaXRzIFsxMjc6NjRdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzEyNzo2NF0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2RwCi8vLyAgICBBIHBvaW50ZXIgdG8gYSA2NC1iaXQgbWVtb3J5IGxvY2F0aW9uIGNvbnRhaW5pbmcgYSBkb3VibGUtcHJlY2lzaW9uCi8vLyAgICBmbG9hdGluZy1wb2ludCB2YWx1ZSB0aGF0IGlzIGxvYWRlZC4gVGhlIGxvYWRlZCB2YWx1ZSBpcyB3cml0dGVuIHRvIGJpdHMKLy8vICAgIFs2MzowXSBvZiB0aGUgcmVzdWx0LiBUaGUgYWRkcmVzcyBvZiB0aGUgbWVtb3J5IGxvY2F0aW9uIGRvZXMgbm90IGhhdmUgdG8KLy8vICAgIGJlIGFsaWduZWQuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBtb3ZlZCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9sb2FkbF9wZChfX20xMjhkIF9fYSwgZG91YmxlIGNvbnN0ICpfX2RwKQp7CiAgc3RydWN0IF9fbW1fbG9hZGxfcGRfc3RydWN0IHsKICAgIGRvdWJsZSBfX3U7CiAgfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19fKSk7CiAgZG91YmxlIF9fdSA9ICgoY29uc3Qgc3RydWN0IF9fbW1fbG9hZGxfcGRfc3RydWN0KilfX2RwKS0+X191OwogIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjhkKXsgX191LCBfX2FbMV0gfTsKfQoKLy8vIENvbnN0cnVjdHMgYSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gd2l0aAovLy8gICAgdW5zcGVjaWZpZWQgY29udGVudC4gVGhpcyBjb3VsZCBiZSB1c2VkIGFzIGFuIGFyZ3VtZW50IHRvIGFub3RoZXIKLy8vICAgIGludHJpbnNpYyBmdW5jdGlvbiB3aGVyZSB0aGUgYXJndW1lbnQgaXMgcmVxdWlyZWQgYnV0IHRoZSB2YWx1ZSBpcyBub3QKLy8vICAgIGFjdHVhbGx5IHVzZWQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGhhcyBubyBjb3JyZXNwb25kaW5nIGluc3RydWN0aW9uLgovLy8KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIHdpdGggdW5zcGVjaWZpZWQKLy8vICAgIGNvbnRlbnQuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV91bmRlZmluZWRfcGQodm9pZCkKewogIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl91bmRlZjEyOCgpOwp9CgovLy8gQ29uc3RydWN0cyBhIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyCi8vLyAgICA2NCBiaXRzIG9mIHRoZSB2ZWN0b3IgYXJlIGluaXRpYWxpemVkIHdpdGggdGhlIHNwZWNpZmllZCBkb3VibGUtcHJlY2lzaW9uCi8vLyAgICBmbG9hdGluZy1wb2ludCB2YWx1ZS4gVGhlIHVwcGVyIDY0IGJpdHMgYXJlIHNldCB0byB6ZXJvLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZRIC8gTU9WUSA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX3cKLy8vICAgIEEgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgdGhlIGxvd2VyIDY0Ci8vLyAgICBiaXRzIG9mIHRoZSByZXN1bHQuCi8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZQovLy8gICAgbG93ZXIgNjQgYml0cyBjb250YWluIHRoZSB2YWx1ZSBvZiB0aGUgcGFyYW1ldGVyLiBUaGUgdXBwZXIgNjQgYml0cyBhcmUKLy8vICAgIHNldCB0byB6ZXJvLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc2V0X3NkKGRvdWJsZSBfX3cpCnsKICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMTI4ZCl7IF9fdywgMCB9Owp9CgovLy8gQ29uc3RydWN0cyBhIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSwgd2l0aCBlYWNoCi8vLyAgICBvZiB0aGUgdHdvIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmVjdG9yIGVsZW1lbnRzIHNldCB0byB0aGUKLy8vICAgIHNwZWNpZmllZCBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZERFVQIC8gTU9WTEhQUyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX3cKLy8vICAgIEEgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgZWFjaCB2ZWN0b3IKLy8vICAgIGVsZW1lbnQgb2YgdGhlIHJlc3VsdC4KLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3NldDFfcGQoZG91YmxlIF9fdykKewogIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjhkKXsgX193LCBfX3cgfTsKfQoKLy8vIENvbnN0cnVjdHMgYSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0sIHdpdGggZWFjaAovLy8gICAgb2YgdGhlIHR3byBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZlY3RvciBlbGVtZW50cyBzZXQgdG8gdGhlCi8vLyAgICBzcGVjaWZpZWQgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WRERVUCAvIE1PVkxIUFMgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX193Ci8vLyAgICBBIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGVhY2ggdmVjdG9yCi8vLyAgICBlbGVtZW50IG9mIHRoZSByZXN1bHQuCi8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zZXRfcGQxKGRvdWJsZSBfX3cpCnsKICByZXR1cm4gX21tX3NldDFfcGQoX193KTsKfQoKLy8vIENvbnN0cnVjdHMgYSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0KLy8vICAgIGluaXRpYWxpemVkIHdpdGggdGhlIHNwZWNpZmllZCBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcy4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWVU5QQ0tMUEQgLyBVTlBDS0xQRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX3cKLy8vICAgIEEgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgdGhlIHVwcGVyIDY0Ci8vLyAgICBiaXRzIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX194Ci8vLyAgICBBIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIHRoZSBsb3dlciA2NAovLy8gICAgYml0cyBvZiB0aGUgcmVzdWx0LgovLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc2V0X3BkKGRvdWJsZSBfX3csIGRvdWJsZSBfX3gpCnsKICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMTI4ZCl7IF9feCwgX193IH07Cn0KCi8vLyBDb25zdHJ1Y3RzIGEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLAovLy8gICAgaW5pdGlhbGl6ZWQgaW4gcmV2ZXJzZSBvcmRlciB3aXRoIHRoZSBzcGVjaWZpZWQgZG91YmxlLXByZWNpc2lvbgovLy8gICAgZmxvYXRpbmctcG9pbnQgdmFsdWVzLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZVTlBDS0xQRCAvIFVOUENLTFBEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fdwovLy8gICAgQSBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgbG93ZXIgNjQKLy8vICAgIGJpdHMgb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX3gKLy8vICAgIEEgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgdGhlIHVwcGVyIDY0Ci8vLyAgICBiaXRzIG9mIHRoZSByZXN1bHQuCi8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zZXRyX3BkKGRvdWJsZSBfX3csIGRvdWJsZSBfX3gpCnsKICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMTI4ZCl7IF9fdywgX194IH07Cn0KCi8vLyBDb25zdHJ1Y3RzIGEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdCi8vLyAgICBpbml0aWFsaXplZCB0byB6ZXJvLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZYT1JQUyAvIFhPUlBTIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIHdpdGgKLy8vICAgIGFsbCBlbGVtZW50cyBzZXQgdG8gemVyby4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3NldHplcm9fcGQodm9pZCkKewogIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjhkKXsgMCwgMCB9Owp9CgovLy8gQ29uc3RydWN0cyBhIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyCi8vLyAgICA2NCBiaXRzIGFyZSBzZXQgdG8gdGhlIGxvd2VyIDY0IGJpdHMgb2YgdGhlIHNlY29uZCBwYXJhbWV0ZXIuIFRoZSB1cHBlcgovLy8gICAgNjQgYml0cyBhcmUgc2V0IHRvIHRoZSB1cHBlciA2NCBiaXRzIG9mIHRoZSBmaXJzdCBwYXJhbWV0ZXIuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkJMRU5EUEQgLyBCTEVORFBEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSB1cHBlciA2NCBiaXRzIGFyZSB3cml0dGVuIHRvIHRoZQovLy8gICAgdXBwZXIgNjQgYml0cyBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciA2NCBiaXRzIGFyZSB3cml0dGVuIHRvIHRoZQovLy8gICAgbG93ZXIgNjQgYml0cyBvZiB0aGUgcmVzdWx0LgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgbW92ZWQgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fbW92ZV9zZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpCnsKICBfX2FbMF0gPSBfX2JbMF07CiAgcmV0dXJuIF9fYTsKfQoKLy8vIFN0b3JlcyB0aGUgbG93ZXIgNjQgYml0cyBvZiBhIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSB0byBhCi8vLyAgICBtZW1vcnkgbG9jYXRpb24uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVlNEIC8gTU9WU0QgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19kcAovLy8gICAgQSBwb2ludGVyIHRvIGEgNjQtYml0IG1lbW9yeSBsb2NhdGlvbi4KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIHZhbHVlIHRvIGJlIHN0b3JlZC4Kc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3N0b3JlX3NkKGRvdWJsZSAqX19kcCwgX19tMTI4ZCBfX2EpCnsKICBzdHJ1Y3QgX19tbV9zdG9yZV9zZF9zdHJ1Y3QgewogICAgZG91YmxlIF9fdTsKICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsKICAoKHN0cnVjdCBfX21tX3N0b3JlX3NkX3N0cnVjdCopX19kcCktPl9fdSA9IF9fYVswXTsKfQoKLy8vIE1vdmVzIHBhY2tlZCBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBmcm9tIGEgMTI4LWJpdCB2ZWN0b3Igb2YKLy8vICAgIFsyIHggZG91YmxlXSB0byBhIG1lbW9yeSBsb2NhdGlvbi4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPlZNT1ZBUEQgLyBNT1ZBUFM8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2RwCi8vLyAgICBBIHBvaW50ZXIgdG8gYW4gYWxpZ25lZCBtZW1vcnkgbG9jYXRpb24gdGhhdCBjYW4gc3RvcmUgdHdvCi8vLyAgICBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcy4KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgcGFja2VkIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSB2YWx1ZXMgdG8gYmUKLy8vICAgIG1vdmVkLgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc3RvcmVfcGQoZG91YmxlICpfX2RwLCBfX20xMjhkIF9fYSkKewogICooX19tMTI4ZCopX19kcCA9IF9fYTsKfQoKLy8vIE1vdmVzIHRoZSBsb3dlciA2NCBiaXRzIG9mIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIHR3aWNlIHRvCi8vLyAgICB0aGUgdXBwZXIgYW5kIGxvd2VyIDY0IGJpdHMgb2YgYSBtZW1vcnkgbG9jYXRpb24uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZQovLy8gICA8Yz4gVk1PVkREVVAgKyBWTU9WQVBEIC8gTU9WTEhQUyArIE1PVkFQUyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2RwCi8vLyAgICBBIHBvaW50ZXIgdG8gYSBtZW1vcnkgbG9jYXRpb24gdGhhdCBjYW4gc3RvcmUgdHdvIGRvdWJsZS1wcmVjaXNpb24KLy8vICAgIHZhbHVlcy4KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIHdob3NlIGxvd2VyIDY0IGJpdHMgYXJlIGNvcGllZCB0byBlYWNoCi8vLyAgICBvZiB0aGUgdmFsdWVzIGluIFxhIF9fZHAuCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zdG9yZTFfcGQoZG91YmxlICpfX2RwLCBfX20xMjhkIF9fYSkKewogIF9fYSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3YyZGYpX19hLCAoX192MmRmKV9fYSwgMCwgMCk7CiAgX21tX3N0b3JlX3BkKF9fZHAsIF9fYSk7Cn0KCi8vLyBNb3ZlcyB0aGUgbG93ZXIgNjQgYml0cyBvZiBhIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSB0d2ljZSB0bwovLy8gICAgdGhlIHVwcGVyIGFuZCBsb3dlciA2NCBiaXRzIG9mIGEgbWVtb3J5IGxvY2F0aW9uLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUKLy8vICAgPGM+IFZNT1ZERFVQICsgVk1PVkFQRCAvIE1PVkxIUFMgKyBNT1ZBUFMgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19kcAovLy8gICAgQSBwb2ludGVyIHRvIGEgbWVtb3J5IGxvY2F0aW9uIHRoYXQgY2FuIHN0b3JlIHR3byBkb3VibGUtcHJlY2lzaW9uCi8vLyAgICB2YWx1ZXMuCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSB3aG9zZSBsb3dlciA2NCBiaXRzIGFyZSBjb3BpZWQgdG8gZWFjaAovLy8gICAgb2YgdGhlIHZhbHVlcyBpbiBcYSBfX2RwLgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc3RvcmVfcGQxKGRvdWJsZSAqX19kcCwgX19tMTI4ZCBfX2EpCnsKICBfbW1fc3RvcmUxX3BkKF9fZHAsIF9fYSk7Cn0KCi8vLyBTdG9yZXMgYSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gaW50byBhbiB1bmFsaWduZWQgbWVtb3J5Ci8vLyAgICBsb2NhdGlvbi4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WVVBEIC8gTU9WVVBEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fZHAKLy8vICAgIEEgcG9pbnRlciB0byBhIDEyOC1iaXQgbWVtb3J5IGxvY2F0aW9uLiBUaGUgYWRkcmVzcyBvZiB0aGUgbWVtb3J5Ci8vLyAgICBsb2NhdGlvbiBkb2VzIG5vdCBoYXZlIHRvIGJlIGFsaWduZWQuCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSB2YWx1ZXMgdG8gYmUgc3RvcmVkLgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc3RvcmV1X3BkKGRvdWJsZSAqX19kcCwgX19tMTI4ZCBfX2EpCnsKICBzdHJ1Y3QgX19zdG9yZXVfcGQgewogICAgX19tMTI4ZF91IF9fdjsKICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsKICAoKHN0cnVjdCBfX3N0b3JldV9wZCopX19kcCktPl9fdiA9IF9fYTsKfQoKLy8vIFN0b3JlcyB0d28gZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMsIGluIHJldmVyc2Ugb3JkZXIsIGZyb20gYSAxMjgtYml0Ci8vLyAgICB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIHRvIGEgMTYtYnl0ZSBhbGlnbmVkIG1lbW9yeSBsb2NhdGlvbi4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gYSBzaHVmZmxpbmcgaW5zdHJ1Y3Rpb24gZm9sbG93ZWQgYnkgYQovLy8gPGM+IFZNT1ZBUEQgLyBNT1ZBUEQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19kcAovLy8gICAgQSBwb2ludGVyIHRvIGEgMTYtYnl0ZSBhbGlnbmVkIG1lbW9yeSBsb2NhdGlvbiB0aGF0IGNhbiBzdG9yZSB0d28KLy8vICAgIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzLgovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgdmFsdWVzIHRvIGJlIHJldmVyc2VkIGFuZAovLy8gICAgc3RvcmVkLgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc3RvcmVyX3BkKGRvdWJsZSAqX19kcCwgX19tMTI4ZCBfX2EpCnsKICBfX2EgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192MmRmKV9fYSwgKF9fdjJkZilfX2EsIDEsIDApOwogICooX19tMTI4ZCAqKV9fZHAgPSBfX2E7Cn0KCi8vLyBTdG9yZXMgdGhlIHVwcGVyIDY0IGJpdHMgb2YgYSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gdG8gYQovLy8gICAgbWVtb3J5IGxvY2F0aW9uLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZIUEQgLyBNT1ZIUEQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19kcAovLy8gICAgQSBwb2ludGVyIHRvIGEgNjQtYml0IG1lbW9yeSBsb2NhdGlvbi4KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIHZhbHVlIHRvIGJlIHN0b3JlZC4Kc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3N0b3JlaF9wZChkb3VibGUgKl9fZHAsIF9fbTEyOGQgX19hKQp7CiAgc3RydWN0IF9fbW1fc3RvcmVoX3BkX3N0cnVjdCB7CiAgICBkb3VibGUgX191OwogIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOwogICgoc3RydWN0IF9fbW1fc3RvcmVoX3BkX3N0cnVjdCopX19kcCktPl9fdSA9IF9fYVsxXTsKfQoKLy8vIFN0b3JlcyB0aGUgbG93ZXIgNjQgYml0cyBvZiBhIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSB0byBhCi8vLyAgICBtZW1vcnkgbG9jYXRpb24uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVkxQRCAvIE1PVkxQRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2RwCi8vLyAgICBBIHBvaW50ZXIgdG8gYSA2NC1iaXQgbWVtb3J5IGxvY2F0aW9uLgovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgdmFsdWUgdG8gYmUgc3RvcmVkLgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc3RvcmVsX3BkKGRvdWJsZSAqX19kcCwgX19tMTI4ZCBfX2EpCnsKICBzdHJ1Y3QgX19tbV9zdG9yZWhfcGRfc3RydWN0IHsKICAgIGRvdWJsZSBfX3U7CiAgfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19fKSk7CiAgKChzdHJ1Y3QgX19tbV9zdG9yZWhfcGRfc3RydWN0KilfX2RwKS0+X191ID0gX19hWzBdOwp9CgovLy8gQWRkcyB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBvZiB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mIFsxNiB4IGk4XSwKLy8vICAgIHNhdmluZyB0aGUgbG93ZXIgOCBiaXRzIG9mIGVhY2ggc3VtIGluIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgb2YgYQovLy8gICAgMTI4LWJpdCByZXN1bHQgdmVjdG9yIG9mIFsxNiB4IGk4XS4KLy8vCi8vLyAgICBUaGUgaW50ZWdlciBlbGVtZW50cyBvZiBib3RoIHBhcmFtZXRlcnMgY2FuIGJlIGVpdGhlciBzaWduZWQgb3IgdW5zaWduZWQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBBRERCIC8gUEFEREIgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XS4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThdLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0gY29udGFpbmluZyB0aGUgc3VtcyBvZiBib3RoCi8vLyAgICBwYXJhbWV0ZXJzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fYWRkX2VwaTgoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQp7CiAgcmV0dXJuIChfX20xMjhpKSgoX192MTZxdSlfX2EgKyAoX192MTZxdSlfX2IpOwp9CgovLy8gQWRkcyB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBvZiB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mIFs4IHggaTE2XSwKLy8vICAgIHNhdmluZyB0aGUgbG93ZXIgMTYgYml0cyBvZiBlYWNoIHN1bSBpbiB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IG9mIGEKLy8vICAgIDEyOC1iaXQgcmVzdWx0IHZlY3RvciBvZiBbOCB4IGkxNl0uCi8vLwovLy8gICAgVGhlIGludGVnZXIgZWxlbWVudHMgb2YgYm90aCBwYXJhbWV0ZXJzIGNhbiBiZSBlaXRoZXIgc2lnbmVkIG9yIHVuc2lnbmVkLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQUREVyAvIFBBRERXIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGkxNl0uCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XS4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZdIGNvbnRhaW5pbmcgdGhlIHN1bXMgb2YgYm90aAovLy8gICAgcGFyYW1ldGVycy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2FkZF9lcGkxNihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpCnsKICByZXR1cm4gKF9fbTEyOGkpKChfX3Y4aHUpX19hICsgKF9fdjhodSlfX2IpOwp9CgovLy8gQWRkcyB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBvZiB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mIFs0IHggaTMyXSwKLy8vICAgIHNhdmluZyB0aGUgbG93ZXIgMzIgYml0cyBvZiBlYWNoIHN1bSBpbiB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IG9mIGEKLy8vICAgIDEyOC1iaXQgcmVzdWx0IHZlY3RvciBvZiBbNCB4IGkzMl0uCi8vLwovLy8gICAgVGhlIGludGVnZXIgZWxlbWVudHMgb2YgYm90aCBwYXJhbWV0ZXJzIGNhbiBiZSBlaXRoZXIgc2lnbmVkIG9yIHVuc2lnbmVkLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQURERCAvIFBBREREIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0uCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXS4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdIGNvbnRhaW5pbmcgdGhlIHN1bXMgb2YgYm90aAovLy8gICAgcGFyYW1ldGVycy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2FkZF9lcGkzMihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpCnsKICByZXR1cm4gKF9fbTEyOGkpKChfX3Y0c3UpX19hICsgKF9fdjRzdSlfX2IpOwp9CgovLy8gQWRkcyB0d28gc2lnbmVkIG9yIHVuc2lnbmVkIDY0LWJpdCBpbnRlZ2VyIHZhbHVlcywgcmV0dXJuaW5nIHRoZQovLy8gICAgbG93ZXIgNjQgYml0cyBvZiB0aGUgc3VtLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBBRERRIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSA2NC1iaXQgaW50ZWdlci4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgNjQtYml0IGludGVnZXIuCi8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIHN1bSBvZiBib3RoIHBhcmFtZXRlcnMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgKX21tX2FkZF9zaTY0KF9fbTY0IF9fYSwgX19tNjQgX19iKQp7CiAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wYWRkcSgoX192MWRpKV9fYSwgKF9fdjFkaSlfX2IpOwp9CgovLy8gQWRkcyB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBvZiB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mIFsyIHggaTY0XSwKLy8vICAgIHNhdmluZyB0aGUgbG93ZXIgNjQgYml0cyBvZiBlYWNoIHN1bSBpbiB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IG9mIGEKLy8vICAgIDEyOC1iaXQgcmVzdWx0IHZlY3RvciBvZiBbMiB4IGk2NF0uCi8vLwovLy8gICAgVGhlIGludGVnZXIgZWxlbWVudHMgb2YgYm90aCBwYXJhbWV0ZXJzIGNhbiBiZSBlaXRoZXIgc2lnbmVkIG9yIHVuc2lnbmVkLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQUREUSAvIFBBRERRIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0uCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggaTY0XS4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBpNjRdIGNvbnRhaW5pbmcgdGhlIHN1bXMgb2YgYm90aAovLy8gICAgcGFyYW1ldGVycy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2FkZF9lcGk2NChfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpCnsKICByZXR1cm4gKF9fbTEyOGkpKChfX3YyZHUpX19hICsgKF9fdjJkdSlfX2IpOwp9CgovLy8gQWRkcywgd2l0aCBzYXR1cmF0aW9uLCB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBvZiB0d28gMTI4LWJpdAovLy8gICAgc2lnbmVkIFsxNiB4IGk4XSB2ZWN0b3JzLCBzYXZpbmcgZWFjaCBzdW0gaW4gdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBvZgovLy8gICAgYSAxMjgtYml0IHJlc3VsdCB2ZWN0b3Igb2YgWzE2IHggaThdLiBQb3NpdGl2ZSBzdW1zIGdyZWF0ZXIgdGhhbiAweDdGIGFyZQovLy8gICAgc2F0dXJhdGVkIHRvIDB4N0YuIE5lZ2F0aXZlIHN1bXMgbGVzcyB0aGFuIDB4ODAgYXJlIHNhdHVyYXRlZCB0byAweDgwLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQUREU0IgLyBQQUREU0IgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgc2lnbmVkIFsxNiB4IGk4XSB2ZWN0b3IuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgc2lnbmVkIFsxNiB4IGk4XSB2ZWN0b3IuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgc2lnbmVkIFsxNiB4IGk4XSB2ZWN0b3IgY29udGFpbmluZyB0aGUgc2F0dXJhdGVkIHN1bXMgb2YKLy8vICAgIGJvdGggcGFyYW1ldGVycy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2FkZHNfZXBpOChfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcGFkZHNiMTI4KChfX3YxNnFpKV9fYSwgKF9fdjE2cWkpX19iKTsKfQoKLy8vIEFkZHMsIHdpdGggc2F0dXJhdGlvbiwgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgb2YgdHdvIDEyOC1iaXQKLy8vICAgIHNpZ25lZCBbOCB4IGkxNl0gdmVjdG9ycywgc2F2aW5nIGVhY2ggc3VtIGluIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgb2YKLy8vICAgIGEgMTI4LWJpdCByZXN1bHQgdmVjdG9yIG9mIFs4IHggaTE2XS4gUG9zaXRpdmUgc3VtcyBncmVhdGVyIHRoYW4gMHg3RkZGCi8vLyAgICBhcmUgc2F0dXJhdGVkIHRvIDB4N0ZGRi4gTmVnYXRpdmUgc3VtcyBsZXNzIHRoYW4gMHg4MDAwIGFyZSBzYXR1cmF0ZWQgdG8KLy8vICAgIDB4ODAwMC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEFERFNXIC8gUEFERFNXIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHNpZ25lZCBbOCB4IGkxNl0gdmVjdG9yLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHNpZ25lZCBbOCB4IGkxNl0gdmVjdG9yLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHNpZ25lZCBbOCB4IGkxNl0gdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNhdHVyYXRlZCBzdW1zIG9mCi8vLyAgICBib3RoIHBhcmFtZXRlcnMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9hZGRzX2VwaTE2KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wYWRkc3cxMjgoKF9fdjhoaSlfX2EsIChfX3Y4aGkpX19iKTsKfQoKLy8vIEFkZHMsIHdpdGggc2F0dXJhdGlvbiwgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgb2YgdHdvIDEyOC1iaXQKLy8vICAgIHVuc2lnbmVkIFsxNiB4IGk4XSB2ZWN0b3JzLCBzYXZpbmcgZWFjaCBzdW0gaW4gdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudAovLy8gICAgb2YgYSAxMjgtYml0IHJlc3VsdCB2ZWN0b3Igb2YgWzE2IHggaThdLiBQb3NpdGl2ZSBzdW1zIGdyZWF0ZXIgdGhhbiAweEZGCi8vLyAgICBhcmUgc2F0dXJhdGVkIHRvIDB4RkYuIE5lZ2F0aXZlIHN1bXMgYXJlIHNhdHVyYXRlZCB0byAweDAwLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQUREVVNCIC8gUEFERFVTQiA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB1bnNpZ25lZCBbMTYgeCBpOF0gdmVjdG9yLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHVuc2lnbmVkIFsxNiB4IGk4XSB2ZWN0b3IuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdW5zaWduZWQgWzE2IHggaThdIHZlY3RvciBjb250YWluaW5nIHRoZSBzYXR1cmF0ZWQgc3VtcwovLy8gICAgb2YgYm90aCBwYXJhbWV0ZXJzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fYWRkc19lcHU4KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wYWRkdXNiMTI4KChfX3YxNnFpKV9fYSwgKF9fdjE2cWkpX19iKTsKfQoKLy8vIEFkZHMsIHdpdGggc2F0dXJhdGlvbiwgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgb2YgdHdvIDEyOC1iaXQKLy8vICAgIHVuc2lnbmVkIFs4IHggaTE2XSB2ZWN0b3JzLCBzYXZpbmcgZWFjaCBzdW0gaW4gdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudAovLy8gICAgb2YgYSAxMjgtYml0IHJlc3VsdCB2ZWN0b3Igb2YgWzggeCBpMTZdLiBQb3NpdGl2ZSBzdW1zIGdyZWF0ZXIgdGhhbgovLy8gICAgMHhGRkZGIGFyZSBzYXR1cmF0ZWQgdG8gMHhGRkZGLiBOZWdhdGl2ZSBzdW1zIGFyZSBzYXR1cmF0ZWQgdG8gMHgwMDAwLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQUREVVNCIC8gUEFERFVTQiA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB1bnNpZ25lZCBbOCB4IGkxNl0gdmVjdG9yLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHVuc2lnbmVkIFs4IHggaTE2XSB2ZWN0b3IuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdW5zaWduZWQgWzggeCBpMTZdIHZlY3RvciBjb250YWluaW5nIHRoZSBzYXR1cmF0ZWQgc3VtcwovLy8gICAgb2YgYm90aCBwYXJhbWV0ZXJzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fYWRkc19lcHUxNihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcGFkZHVzdzEyOCgoX192OGhpKV9fYSwgKF9fdjhoaSlfX2IpOwp9CgovLy8gQ29tcHV0ZXMgdGhlIHJvdW5kZWQgYXZlcmFnZXMgb2YgY29ycmVzcG9uZGluZyBlbGVtZW50cyBvZiB0d28KLy8vICAgIDEyOC1iaXQgdW5zaWduZWQgWzE2IHggaThdIHZlY3RvcnMsIHNhdmluZyBlYWNoIHJlc3VsdCBpbiB0aGUKLy8vICAgIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBvZiBhIDEyOC1iaXQgcmVzdWx0IHZlY3RvciBvZiBbMTYgeCBpOF0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBBVkdCIC8gUEFWR0IgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdW5zaWduZWQgWzE2IHggaThdIHZlY3Rvci4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCB1bnNpZ25lZCBbMTYgeCBpOF0gdmVjdG9yLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHVuc2lnbmVkIFsxNiB4IGk4XSB2ZWN0b3IgY29udGFpbmluZyB0aGUgcm91bmRlZAovLy8gICAgYXZlcmFnZXMgb2YgYm90aCBwYXJhbWV0ZXJzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fYXZnX2VwdTgoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BhdmdiMTI4KChfX3YxNnFpKV9fYSwgKF9fdjE2cWkpX19iKTsKfQoKLy8vIENvbXB1dGVzIHRoZSByb3VuZGVkIGF2ZXJhZ2VzIG9mIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgb2YgdHdvCi8vLyAgICAxMjgtYml0IHVuc2lnbmVkIFs4IHggaTE2XSB2ZWN0b3JzLCBzYXZpbmcgZWFjaCByZXN1bHQgaW4gdGhlCi8vLyAgICBjb3JyZXNwb25kaW5nIGVsZW1lbnQgb2YgYSAxMjgtYml0IHJlc3VsdCB2ZWN0b3Igb2YgWzggeCBpMTZdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQVZHVyAvIFBBVkdXIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHVuc2lnbmVkIFs4IHggaTE2XSB2ZWN0b3IuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdW5zaWduZWQgWzggeCBpMTZdIHZlY3Rvci4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB1bnNpZ25lZCBbOCB4IGkxNl0gdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHJvdW5kZWQKLy8vICAgIGF2ZXJhZ2VzIG9mIGJvdGggcGFyYW1ldGVycy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2F2Z19lcHUxNihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcGF2Z3cxMjgoKF9fdjhoaSlfX2EsIChfX3Y4aGkpX19iKTsKfQoKLy8vIE11bHRpcGxpZXMgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgb2YgdHdvIDEyOC1iaXQgc2lnbmVkIFs4IHggaTE2XQovLy8gICAgdmVjdG9ycywgcHJvZHVjaW5nIGVpZ2h0IGludGVybWVkaWF0ZSAzMi1iaXQgc2lnbmVkIGludGVnZXIgcHJvZHVjdHMsIGFuZAovLy8gICAgYWRkcyB0aGUgY29uc2VjdXRpdmUgcGFpcnMgb2YgMzItYml0IHByb2R1Y3RzIHRvIGZvcm0gYSAxMjgtYml0IHNpZ25lZAovLy8gICAgWzQgeCBpMzJdIHZlY3Rvci4KLy8vCi8vLyAgICBGb3IgZXhhbXBsZSwgYml0cyBbMTU6MF0gb2YgYm90aCBwYXJhbWV0ZXJzIGFyZSBtdWx0aXBsaWVkIHByb2R1Y2luZyBhCi8vLyAgICAzMi1iaXQgcHJvZHVjdCwgYml0cyBbMzE6MTZdIG9mIGJvdGggcGFyYW1ldGVycyBhcmUgbXVsdGlwbGllZCBwcm9kdWNpbmcKLy8vICAgIGEgMzItYml0IHByb2R1Y3QsIGFuZCB0aGUgc3VtIG9mIHRob3NlIHR3byBwcm9kdWN0cyBiZWNvbWVzIGJpdHMgWzMxOjBdCi8vLyAgICBvZiB0aGUgcmVzdWx0LgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQTUFERFdEIC8gUE1BRERXRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCBzaWduZWQgWzggeCBpMTZdIHZlY3Rvci4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCBzaWduZWQgWzggeCBpMTZdIHZlY3Rvci4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBzaWduZWQgWzQgeCBpMzJdIHZlY3RvciBjb250YWluaW5nIHRoZSBzdW1zIG9mIHByb2R1Y3RzCi8vLyAgICBvZiBib3RoIHBhcmFtZXRlcnMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9tYWRkX2VwaTE2KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wbWFkZHdkMTI4KChfX3Y4aGkpX19hLCAoX192OGhpKV9fYik7Cn0KCi8vLyBDb21wYXJlcyBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIG9mIHR3byAxMjgtYml0IHNpZ25lZCBbOCB4IGkxNl0KLy8vICAgIHZlY3RvcnMsIHNhdmluZyB0aGUgZ3JlYXRlciB2YWx1ZSBmcm9tIGVhY2ggY29tcGFyaXNvbiBpbiB0aGUKLy8vICAgIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBvZiBhIDEyOC1iaXQgcmVzdWx0IHZlY3RvciBvZiBbOCB4IGkxNl0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBNQVhTVyAvIFBNQVhTVyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCBzaWduZWQgWzggeCBpMTZdIHZlY3Rvci4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCBzaWduZWQgWzggeCBpMTZdIHZlY3Rvci4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBzaWduZWQgWzggeCBpMTZdIHZlY3RvciBjb250YWluaW5nIHRoZSBncmVhdGVyIHZhbHVlIG9mCi8vLyAgICBlYWNoIGNvbXBhcmlzb24uCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9tYXhfZXBpMTYoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BtYXhzdzEyOCgoX192OGhpKV9fYSwgKF9fdjhoaSlfX2IpOwp9CgovLy8gQ29tcGFyZXMgY29ycmVzcG9uZGluZyBlbGVtZW50cyBvZiB0d28gMTI4LWJpdCB1bnNpZ25lZCBbMTYgeCBpOF0KLy8vICAgIHZlY3RvcnMsIHNhdmluZyB0aGUgZ3JlYXRlciB2YWx1ZSBmcm9tIGVhY2ggY29tcGFyaXNvbiBpbiB0aGUKLy8vICAgIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBvZiBhIDEyOC1iaXQgcmVzdWx0IHZlY3RvciBvZiBbMTYgeCBpOF0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBNQVhVQiAvIFBNQVhVQiA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB1bnNpZ25lZCBbMTYgeCBpOF0gdmVjdG9yLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHVuc2lnbmVkIFsxNiB4IGk4XSB2ZWN0b3IuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdW5zaWduZWQgWzE2IHggaThdIHZlY3RvciBjb250YWluaW5nIHRoZSBncmVhdGVyIHZhbHVlIG9mCi8vLyAgICBlYWNoIGNvbXBhcmlzb24uCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9tYXhfZXB1OChfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcG1heHViMTI4KChfX3YxNnFpKV9fYSwgKF9fdjE2cWkpX19iKTsKfQoKLy8vIENvbXBhcmVzIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgb2YgdHdvIDEyOC1iaXQgc2lnbmVkIFs4IHggaTE2XQovLy8gICAgdmVjdG9ycywgc2F2aW5nIHRoZSBzbWFsbGVyIHZhbHVlIGZyb20gZWFjaCBjb21wYXJpc29uIGluIHRoZQovLy8gICAgY29ycmVzcG9uZGluZyBlbGVtZW50IG9mIGEgMTI4LWJpdCByZXN1bHQgdmVjdG9yIG9mIFs4IHggaTE2XS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUE1JTlNXIC8gUE1JTlNXIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHNpZ25lZCBbOCB4IGkxNl0gdmVjdG9yLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHNpZ25lZCBbOCB4IGkxNl0gdmVjdG9yLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHNpZ25lZCBbOCB4IGkxNl0gdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNtYWxsZXIgdmFsdWUgb2YKLy8vICAgIGVhY2ggY29tcGFyaXNvbi4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX21pbl9lcGkxNihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcG1pbnN3MTI4KChfX3Y4aGkpX19hLCAoX192OGhpKV9fYik7Cn0KCi8vLyBDb21wYXJlcyBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIG9mIHR3byAxMjgtYml0IHVuc2lnbmVkIFsxNiB4IGk4XQovLy8gICAgdmVjdG9ycywgc2F2aW5nIHRoZSBzbWFsbGVyIHZhbHVlIGZyb20gZWFjaCBjb21wYXJpc29uIGluIHRoZQovLy8gICAgY29ycmVzcG9uZGluZyBlbGVtZW50IG9mIGEgMTI4LWJpdCByZXN1bHQgdmVjdG9yIG9mIFsxNiB4IGk4XS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUE1JTlVCIC8gUE1JTlVCIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHVuc2lnbmVkIFsxNiB4IGk4XSB2ZWN0b3IuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdW5zaWduZWQgWzE2IHggaThdIHZlY3Rvci4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB1bnNpZ25lZCBbMTYgeCBpOF0gdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNtYWxsZXIgdmFsdWUgb2YKLy8vICAgIGVhY2ggY29tcGFyaXNvbi4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX21pbl9lcHU4KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wbWludWIxMjgoKF9fdjE2cWkpX19hLCAoX192MTZxaSlfX2IpOwp9CgovLy8gTXVsdGlwbGllcyB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBvZiB0d28gc2lnbmVkIFs4IHggaTE2XQovLy8gICAgdmVjdG9ycywgc2F2aW5nIHRoZSB1cHBlciAxNiBiaXRzIG9mIGVhY2ggMzItYml0IHByb2R1Y3QgaW4gdGhlCi8vLyAgICBjb3JyZXNwb25kaW5nIGVsZW1lbnQgb2YgYSAxMjgtYml0IHNpZ25lZCBbOCB4IGkxNl0gcmVzdWx0IHZlY3Rvci4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUE1VTEhXIC8gUE1VTEhXIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHNpZ25lZCBbOCB4IGkxNl0gdmVjdG9yLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHNpZ25lZCBbOCB4IGkxNl0gdmVjdG9yLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHNpZ25lZCBbOCB4IGkxNl0gdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHVwcGVyIDE2IGJpdHMgb2YKLy8vICAgIGVhY2ggb2YgdGhlIGVpZ2h0IDMyLWJpdCBwcm9kdWN0cy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX211bGhpX2VwaTE2KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wbXVsaHcxMjgoKF9fdjhoaSlfX2EsIChfX3Y4aGkpX19iKTsKfQoKLy8vIE11bHRpcGxpZXMgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgb2YgdHdvIHVuc2lnbmVkIFs4IHggaTE2XQovLy8gICAgdmVjdG9ycywgc2F2aW5nIHRoZSB1cHBlciAxNiBiaXRzIG9mIGVhY2ggMzItYml0IHByb2R1Y3QgaW4gdGhlCi8vLyAgICBjb3JyZXNwb25kaW5nIGVsZW1lbnQgb2YgYSAxMjgtYml0IHVuc2lnbmVkIFs4IHggaTE2XSByZXN1bHQgdmVjdG9yLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQTVVMSFVXIC8gUE1VTEhVVyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB1bnNpZ25lZCBbOCB4IGkxNl0gdmVjdG9yLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHVuc2lnbmVkIFs4IHggaTE2XSB2ZWN0b3IuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdW5zaWduZWQgWzggeCBpMTZdIHZlY3RvciBjb250YWluaW5nIHRoZSB1cHBlciAxNiBiaXRzCi8vLyAgICBvZiBlYWNoIG9mIHRoZSBlaWdodCAzMi1iaXQgcHJvZHVjdHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9tdWxoaV9lcHUxNihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcG11bGh1dzEyOCgoX192OGhpKV9fYSwgKF9fdjhoaSlfX2IpOwp9CgovLy8gTXVsdGlwbGllcyB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBvZiB0d28gc2lnbmVkIFs4IHggaTE2XQovLy8gICAgdmVjdG9ycywgc2F2aW5nIHRoZSBsb3dlciAxNiBiaXRzIG9mIGVhY2ggMzItYml0IHByb2R1Y3QgaW4gdGhlCi8vLyAgICBjb3JyZXNwb25kaW5nIGVsZW1lbnQgb2YgYSAxMjgtYml0IHNpZ25lZCBbOCB4IGkxNl0gcmVzdWx0IHZlY3Rvci4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUE1VTExXIC8gUE1VTExXIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHNpZ25lZCBbOCB4IGkxNl0gdmVjdG9yLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHNpZ25lZCBbOCB4IGkxNl0gdmVjdG9yLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHNpZ25lZCBbOCB4IGkxNl0gdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGxvd2VyIDE2IGJpdHMgb2YKLy8vICAgIGVhY2ggb2YgdGhlIGVpZ2h0IDMyLWJpdCBwcm9kdWN0cy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX211bGxvX2VwaTE2KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikKewogIHJldHVybiAoX19tMTI4aSkoKF9fdjhodSlfX2EgKiAoX192OGh1KV9fYik7Cn0KCi8vLyBNdWx0aXBsaWVzIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlcyBjb250YWluZWQgaW4gdGhlIGxvd2VyIGJpdHMKLy8vICAgIG9mIHRoZSB0d28gNjQtYml0IGludGVnZXIgdmVjdG9ycyBhbmQgcmV0dXJucyB0aGUgNjQtYml0IHVuc2lnbmVkCi8vLyAgICBwcm9kdWN0LgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBNVUxVRFEgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuCi8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBwcm9kdWN0IG9mIGJvdGggb3BlcmFuZHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgKX21tX211bF9zdTMyKF9fbTY0IF9fYSwgX19tNjQgX19iKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3BtdWx1ZHEoKF9fdjJzaSlfX2EsIChfX3Yyc2kpX19iKTsKfQoKLy8vIE11bHRpcGxpZXMgMzItYml0IHVuc2lnbmVkIGludGVnZXIgdmFsdWVzIGNvbnRhaW5lZCBpbiB0aGUgbG93ZXIKLy8vICAgIGJpdHMgb2YgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgb2YgdHdvIFsyIHggaTY0XSB2ZWN0b3JzLCBhbmQgcmV0dXJucwovLy8gICAgdGhlIDY0LWJpdCBwcm9kdWN0cyBpbiB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBvZiBhIFsyIHggaTY0XSB2ZWN0b3IuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBNVUxVRFEgLyBQTVVMVURRIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSBbMiB4IGk2NF0gdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIFsyIHggaTY0XSB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4KLy8vIFxyZXR1cm5zIEEgWzIgeCBpNjRdIHZlY3RvciBjb250YWluaW5nIHRoZSBwcm9kdWN0IG9mIGJvdGggb3BlcmFuZHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9tdWxfZXB1MzIoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3BtdWx1ZHExMjgoKF9fdjRzaSlfX2EsIChfX3Y0c2kpX19iKTsKfQoKLy8vIENvbXB1dGVzIHRoZSBhYnNvbHV0ZSBkaWZmZXJlbmNlcyBvZiBjb3JyZXNwb25kaW5nIDgtYml0IGludGVnZXIKLy8vICAgIHZhbHVlcyBpbiB0d28gMTI4LWJpdCB2ZWN0b3JzLiBTdW1zIHRoZSBmaXJzdCA4IGFic29sdXRlIGRpZmZlcmVuY2VzLCBhbmQKLy8vICAgIHNlcGFyYXRlbHkgc3VtcyB0aGUgc2Vjb25kIDggYWJzb2x1dGUgZGlmZmVyZW5jZXMuIFBhY2tzIHRoZXNlIHR3bwovLy8gICAgdW5zaWduZWQgMTYtYml0IGludGVnZXIgc3VtcyBpbnRvIHRoZSB1cHBlciBhbmQgbG93ZXIgZWxlbWVudHMgb2YgYQovLy8gICAgWzIgeCBpNjRdIHZlY3Rvci4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFNBREJXIC8gUFNBREJXIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4KLy8vIFxyZXR1cm5zIEEgWzIgeCBpNjRdIHZlY3RvciBjb250YWluaW5nIHRoZSBzdW1zIG9mIHRoZSBzZXRzIG9mIGFic29sdXRlCi8vLyAgICBkaWZmZXJlbmNlcyBiZXR3ZWVuIGJvdGggb3BlcmFuZHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zYWRfZXB1OChfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfcHNhZGJ3MTI4KChfX3YxNnFpKV9fYSwgKF9fdjE2cWkpX19iKTsKfQoKLy8vIFN1YnRyYWN0cyB0aGUgY29ycmVzcG9uZGluZyA4LWJpdCBpbnRlZ2VyIHZhbHVlcyBpbiB0aGUgb3BlcmFuZHMuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBTVUJCIC8gUFNVQkIgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgbWludWVuZHMuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgc3VidHJhaGVuZHMuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgZGlmZmVyZW5jZXMgb2YgdGhlIHZhbHVlcwovLy8gICAgaW4gdGhlIG9wZXJhbmRzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc3ViX2VwaTgoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQp7CiAgcmV0dXJuIChfX20xMjhpKSgoX192MTZxdSlfX2EgLSAoX192MTZxdSlfX2IpOwp9CgovLy8gU3VidHJhY3RzIHRoZSBjb3JyZXNwb25kaW5nIDE2LWJpdCBpbnRlZ2VyIHZhbHVlcyBpbiB0aGUgb3BlcmFuZHMuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBTVUJXIC8gUFNVQlcgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgbWludWVuZHMuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgc3VidHJhaGVuZHMuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgZGlmZmVyZW5jZXMgb2YgdGhlIHZhbHVlcwovLy8gICAgaW4gdGhlIG9wZXJhbmRzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc3ViX2VwaTE2KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikKewogIHJldHVybiAoX19tMTI4aSkoKF9fdjhodSlfX2EgLSAoX192OGh1KV9fYik7Cn0KCi8vLyBTdWJ0cmFjdHMgdGhlIGNvcnJlc3BvbmRpbmcgMzItYml0IGludGVnZXIgdmFsdWVzIGluIHRoZSBvcGVyYW5kcy4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFNVQkQgLyBQU1VCRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBtaW51ZW5kcy4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBzdWJ0cmFoZW5kcy4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBkaWZmZXJlbmNlcyBvZiB0aGUgdmFsdWVzCi8vLyAgICBpbiB0aGUgb3BlcmFuZHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zdWJfZXBpMzIoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQp7CiAgcmV0dXJuIChfX20xMjhpKSgoX192NHN1KV9fYSAtIChfX3Y0c3UpX19iKTsKfQoKLy8vIFN1YnRyYWN0cyBzaWduZWQgb3IgdW5zaWduZWQgNjQtYml0IGludGVnZXIgdmFsdWVzIGFuZCB3cml0ZXMgdGhlCi8vLyAgICBkaWZmZXJlbmNlIHRvIHRoZSBjb3JyZXNwb25kaW5nIGJpdHMgaW4gdGhlIGRlc3RpbmF0aW9uLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBTVUJRIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgbWludWVuZC4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHN1YnRyYWhlbmQuCi8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBkaWZmZXJlbmNlIG9mIHRoZSB2YWx1ZXMgaW4KLy8vICAgIHRoZSBvcGVyYW5kcy4Kc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTX01NWApfbW1fc3ViX3NpNjQoX19tNjQgX19hLCBfX202NCBfX2IpCnsKICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BzdWJxKChfX3YxZGkpX19hLCAoX192MWRpKV9fYik7Cn0KCi8vLyBTdWJ0cmFjdHMgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgb2YgdHdvIFsyIHggaTY0XSB2ZWN0b3JzLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQU1VCUSAvIFBTVUJRIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIG1pbnVlbmRzLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHN1YnRyYWhlbmRzLgovLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGRpZmZlcmVuY2VzIG9mIHRoZSB2YWx1ZXMKLy8vICAgIGluIHRoZSBvcGVyYW5kcy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3N1Yl9lcGk2NChfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpCnsKICByZXR1cm4gKF9fbTEyOGkpKChfX3YyZHUpX19hIC0gKF9fdjJkdSlfX2IpOwp9CgovLy8gU3VidHJhY3RzIGNvcnJlc3BvbmRpbmcgOC1iaXQgc2lnbmVkIGludGVnZXIgdmFsdWVzIGluIHRoZSBpbnB1dCBhbmQKLy8vICAgIHJldHVybnMgdGhlIGRpZmZlcmVuY2VzIGluIHRoZSBjb3JyZXNwb25kaW5nIGJ5dGVzIGluIHRoZSBkZXN0aW5hdGlvbi4KLy8vICAgIERpZmZlcmVuY2VzIGdyZWF0ZXIgdGhhbiAweDdGIGFyZSBzYXR1cmF0ZWQgdG8gMHg3RiwgYW5kIGRpZmZlcmVuY2VzIGxlc3MKLy8vICAgIHRoYW4gMHg4MCBhcmUgc2F0dXJhdGVkIHRvIDB4ODAuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBTVUJTQiAvIFBTVUJTQiA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBtaW51ZW5kcy4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBzdWJ0cmFoZW5kcy4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBkaWZmZXJlbmNlcyBvZiB0aGUgdmFsdWVzCi8vLyAgICBpbiB0aGUgb3BlcmFuZHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zdWJzX2VwaTgoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzdWJzYjEyOCgoX192MTZxaSlfX2EsIChfX3YxNnFpKV9fYik7Cn0KCi8vLyBTdWJ0cmFjdHMgY29ycmVzcG9uZGluZyAxNi1iaXQgc2lnbmVkIGludGVnZXIgdmFsdWVzIGluIHRoZSBpbnB1dCBhbmQKLy8vICAgIHJldHVybnMgdGhlIGRpZmZlcmVuY2VzIGluIHRoZSBjb3JyZXNwb25kaW5nIGJ5dGVzIGluIHRoZSBkZXN0aW5hdGlvbi4KLy8vICAgIERpZmZlcmVuY2VzIGdyZWF0ZXIgdGhhbiAweDdGRkYgYXJlIHNhdHVyYXRlZCB0byAweDdGRkYsIGFuZCB2YWx1ZXMgbGVzcwovLy8gICAgdGhhbiAweDgwMDAgYXJlIHNhdHVyYXRlZCB0byAweDgwMDAuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBTVUJTVyAvIFBTVUJTVyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBtaW51ZW5kcy4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBzdWJ0cmFoZW5kcy4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBkaWZmZXJlbmNlcyBvZiB0aGUgdmFsdWVzCi8vLyAgICBpbiB0aGUgb3BlcmFuZHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zdWJzX2VwaTE2KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wc3Vic3cxMjgoKF9fdjhoaSlfX2EsIChfX3Y4aGkpX19iKTsKfQoKLy8vIFN1YnRyYWN0cyBjb3JyZXNwb25kaW5nIDgtYml0IHVuc2lnbmVkIGludGVnZXIgdmFsdWVzIGluIHRoZSBpbnB1dAovLy8gICAgYW5kIHJldHVybnMgdGhlIGRpZmZlcmVuY2VzIGluIHRoZSBjb3JyZXNwb25kaW5nIGJ5dGVzIGluIHRoZQovLy8gICAgZGVzdGluYXRpb24uIERpZmZlcmVuY2VzIGxlc3MgdGhhbiAweDAwIGFyZSBzYXR1cmF0ZWQgdG8gMHgwMC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFNVQlVTQiAvIFBTVUJVU0IgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgbWludWVuZHMuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgc3VidHJhaGVuZHMuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgdW5zaWduZWQgaW50ZWdlcgovLy8gICAgZGlmZmVyZW5jZXMgb2YgdGhlIHZhbHVlcyBpbiB0aGUgb3BlcmFuZHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zdWJzX2VwdTgoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzdWJ1c2IxMjgoKF9fdjE2cWkpX19hLCAoX192MTZxaSlfX2IpOwp9CgovLy8gU3VidHJhY3RzIGNvcnJlc3BvbmRpbmcgMTYtYml0IHVuc2lnbmVkIGludGVnZXIgdmFsdWVzIGluIHRoZSBpbnB1dAovLy8gICAgYW5kIHJldHVybnMgdGhlIGRpZmZlcmVuY2VzIGluIHRoZSBjb3JyZXNwb25kaW5nIGJ5dGVzIGluIHRoZQovLy8gICAgZGVzdGluYXRpb24uIERpZmZlcmVuY2VzIGxlc3MgdGhhbiAweDAwMDAgYXJlIHNhdHVyYXRlZCB0byAweDAwMDAuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBTVUJVU1cgLyBQU1VCVVNXIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIG1pbnVlbmRzLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHN1YnRyYWhlbmRzLgovLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHVuc2lnbmVkIGludGVnZXIKLy8vICAgIGRpZmZlcmVuY2VzIG9mIHRoZSB2YWx1ZXMgaW4gdGhlIG9wZXJhbmRzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc3Vic19lcHUxNihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHN1YnVzdzEyOCgoX192OGhpKV9fYSwgKF9fdjhoaSlfX2IpOwp9CgovLy8gUGVyZm9ybXMgYSBiaXR3aXNlIEFORCBvZiB0d28gMTI4LWJpdCBpbnRlZ2VyIHZlY3RvcnMuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBBTkQgLyBQQU5EIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBiaXR3aXNlIEFORCBvZiB0aGUgdmFsdWVzCi8vLyAgICBpbiBib3RoIG9wZXJhbmRzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fYW5kX3NpMTI4KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikKewogIHJldHVybiAoX19tMTI4aSkoKF9fdjJkdSlfX2EgJiAoX192MmR1KV9fYik7Cn0KCi8vLyBQZXJmb3JtcyBhIGJpdHdpc2UgQU5EIG9mIHR3byAxMjgtYml0IGludGVnZXIgdmVjdG9ycywgdXNpbmcgdGhlCi8vLyAgICBvbmUncyBjb21wbGVtZW50IG9mIHRoZSB2YWx1ZXMgY29udGFpbmVkIGluIHRoZSBmaXJzdCBzb3VyY2Ugb3BlcmFuZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEFORE4gLyBQQU5ETiA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3IgY29udGFpbmluZyB0aGUgbGVmdCBzb3VyY2Ugb3BlcmFuZC4gVGhlIG9uZSdzIGNvbXBsZW1lbnQKLy8vICAgIG9mIHRoaXMgdmFsdWUgaXMgdXNlZCBpbiB0aGUgYml0d2lzZSBBTkQuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHJpZ2h0IHNvdXJjZSBvcGVyYW5kLgovLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGJpdHdpc2UgQU5EIG9mIHRoZSBvbmUncwovLy8gICAgY29tcGxlbWVudCBvZiB0aGUgZmlyc3Qgb3BlcmFuZCBhbmQgdGhlIHZhbHVlcyBpbiB0aGUgc2Vjb25kIG9wZXJhbmQuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9hbmRub3Rfc2kxMjgoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQp7CiAgcmV0dXJuIChfX20xMjhpKSh+KF9fdjJkdSlfX2EgJiAoX192MmR1KV9fYik7Cn0KLy8vIFBlcmZvcm1zIGEgYml0d2lzZSBPUiBvZiB0d28gMTI4LWJpdCBpbnRlZ2VyIHZlY3RvcnMuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBPUiAvIFBPUiA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgYml0d2lzZSBPUiBvZiB0aGUgdmFsdWVzCi8vLyAgICBpbiBib3RoIG9wZXJhbmRzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fb3Jfc2kxMjgoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQp7CiAgcmV0dXJuIChfX20xMjhpKSgoX192MmR1KV9fYSB8IChfX3YyZHUpX19iKTsKfQoKLy8vIFBlcmZvcm1zIGEgYml0d2lzZSBleGNsdXNpdmUgT1Igb2YgdHdvIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3JzLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQWE9SIC8gUFhPUiA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgYml0d2lzZSBleGNsdXNpdmUgT1Igb2YgdGhlCi8vLyAgICB2YWx1ZXMgaW4gYm90aCBvcGVyYW5kcy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3hvcl9zaTEyOChfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpCnsKICByZXR1cm4gKF9fbTEyOGkpKChfX3YyZHUpX19hIF4gKF9fdjJkdSlfX2IpOwp9CgovLy8gTGVmdC1zaGlmdHMgdGhlIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb3BlcmFuZCBieSB0aGUgc3BlY2lmaWVkCi8vLyAgICBudW1iZXIgb2YgYnl0ZXMuIExvdy1vcmRlciBiaXRzIGFyZSBjbGVhcmVkLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBcY29kZQovLy8gX19tMTI4aSBfbW1fc2xsaV9zaTEyOChfX20xMjhpIGEsIGNvbnN0IGludCBpbW0pOwovLy8gXGVuZGNvZGUKLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQU0xMRFEgLyBQU0xMRFEgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gYQovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNvdXJjZSBvcGVyYW5kLgovLy8gXHBhcmFtIGltbQovLy8gICAgQW4gaW1tZWRpYXRlIHZhbHVlIHNwZWNpZnlpbmcgdGhlIG51bWJlciBvZiBieXRlcyB0byBsZWZ0LXNoaWZ0IG9wZXJhbmQKLy8vICAgIFxhIGEuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgbGVmdC1zaGlmdGVkIHZhbHVlLgojZGVmaW5lIF9tbV9zbGxpX3NpMTI4KGEsIGltbSkgXAogICgoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wc2xsZHFpMTI4X2J5dGVzaGlmdCgoX192MmRpKShfX20xMjhpKShhKSwgKGludCkoaW1tKSkpCgojZGVmaW5lIF9tbV9ic2xsaV9zaTEyOChhLCBpbW0pIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNsbGRxaTEyOF9ieXRlc2hpZnQoKF9fdjJkaSkoX19tMTI4aSkoYSksIChpbnQpKGltbSkpKQoKLy8vIExlZnQtc2hpZnRzIGVhY2ggMTYtYml0IHZhbHVlIGluIHRoZSAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9wZXJhbmQKLy8vICAgIGJ5IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGJpdHMuIExvdy1vcmRlciBiaXRzIGFyZSBjbGVhcmVkLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQU0xMVyAvIFBTTExXIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNvdXJjZSBvcGVyYW5kLgovLy8gXHBhcmFtIF9fY291bnQKLy8vICAgIEFuIGludGVnZXIgdmFsdWUgc3BlY2lmeWluZyB0aGUgbnVtYmVyIG9mIGJpdHMgdG8gbGVmdC1zaGlmdCBlYWNoIHZhbHVlCi8vLyAgICBpbiBvcGVyYW5kIFxhIF9fYS4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBsZWZ0LXNoaWZ0ZWQgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc2xsaV9lcGkxNihfX20xMjhpIF9fYSwgaW50IF9fY291bnQpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNsbHdpMTI4KChfX3Y4aGkpX19hLCBfX2NvdW50KTsKfQoKLy8vIExlZnQtc2hpZnRzIGVhY2ggMTYtYml0IHZhbHVlIGluIHRoZSAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9wZXJhbmQKLy8vICAgIGJ5IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGJpdHMuIExvdy1vcmRlciBiaXRzIGFyZSBjbGVhcmVkLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQU0xMVyAvIFBTTExXIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNvdXJjZSBvcGVyYW5kLgovLy8gXHBhcmFtIF9fY291bnQKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBpbiB3aGljaCBiaXRzIFs2MzowXSBzcGVjaWZ5IHRoZSBudW1iZXIgb2YgYml0cwovLy8gICAgdG8gbGVmdC1zaGlmdCBlYWNoIHZhbHVlIGluIG9wZXJhbmQgXGEgX19hLgovLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGxlZnQtc2hpZnRlZCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zbGxfZXBpMTYoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19jb3VudCkKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wc2xsdzEyOCgoX192OGhpKV9fYSwgKF9fdjhoaSlfX2NvdW50KTsKfQoKLy8vIExlZnQtc2hpZnRzIGVhY2ggMzItYml0IHZhbHVlIGluIHRoZSAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9wZXJhbmQKLy8vICAgIGJ5IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGJpdHMuIExvdy1vcmRlciBiaXRzIGFyZSBjbGVhcmVkLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQU0xMRCAvIFBTTExEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNvdXJjZSBvcGVyYW5kLgovLy8gXHBhcmFtIF9fY291bnQKLy8vICAgIEFuIGludGVnZXIgdmFsdWUgc3BlY2lmeWluZyB0aGUgbnVtYmVyIG9mIGJpdHMgdG8gbGVmdC1zaGlmdCBlYWNoIHZhbHVlCi8vLyAgICBpbiBvcGVyYW5kIFxhIF9fYS4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBsZWZ0LXNoaWZ0ZWQgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc2xsaV9lcGkzMihfX20xMjhpIF9fYSwgaW50IF9fY291bnQpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNsbGRpMTI4KChfX3Y0c2kpX19hLCBfX2NvdW50KTsKfQoKLy8vIExlZnQtc2hpZnRzIGVhY2ggMzItYml0IHZhbHVlIGluIHRoZSAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9wZXJhbmQKLy8vICAgIGJ5IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGJpdHMuIExvdy1vcmRlciBiaXRzIGFyZSBjbGVhcmVkLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQU0xMRCAvIFBTTExEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNvdXJjZSBvcGVyYW5kLgovLy8gXHBhcmFtIF9fY291bnQKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBpbiB3aGljaCBiaXRzIFs2MzowXSBzcGVjaWZ5IHRoZSBudW1iZXIgb2YgYml0cwovLy8gICAgdG8gbGVmdC1zaGlmdCBlYWNoIHZhbHVlIGluIG9wZXJhbmQgXGEgX19hLgovLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGxlZnQtc2hpZnRlZCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zbGxfZXBpMzIoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19jb3VudCkKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wc2xsZDEyOCgoX192NHNpKV9fYSwgKF9fdjRzaSlfX2NvdW50KTsKfQoKLy8vIExlZnQtc2hpZnRzIGVhY2ggNjQtYml0IHZhbHVlIGluIHRoZSAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9wZXJhbmQKLy8vICAgIGJ5IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGJpdHMuIExvdy1vcmRlciBiaXRzIGFyZSBjbGVhcmVkLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQU0xMUSAvIFBTTExRIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNvdXJjZSBvcGVyYW5kLgovLy8gXHBhcmFtIF9fY291bnQKLy8vICAgIEFuIGludGVnZXIgdmFsdWUgc3BlY2lmeWluZyB0aGUgbnVtYmVyIG9mIGJpdHMgdG8gbGVmdC1zaGlmdCBlYWNoIHZhbHVlCi8vLyAgICBpbiBvcGVyYW5kIFxhIF9fYS4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBsZWZ0LXNoaWZ0ZWQgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc2xsaV9lcGk2NChfX20xMjhpIF9fYSwgaW50IF9fY291bnQpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfcHNsbHFpMTI4KChfX3YyZGkpX19hLCBfX2NvdW50KTsKfQoKLy8vIExlZnQtc2hpZnRzIGVhY2ggNjQtYml0IHZhbHVlIGluIHRoZSAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9wZXJhbmQKLy8vICAgIGJ5IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGJpdHMuIExvdy1vcmRlciBiaXRzIGFyZSBjbGVhcmVkLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQU0xMUSAvIFBTTExRIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNvdXJjZSBvcGVyYW5kLgovLy8gXHBhcmFtIF9fY291bnQKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBpbiB3aGljaCBiaXRzIFs2MzowXSBzcGVjaWZ5IHRoZSBudW1iZXIgb2YgYml0cwovLy8gICAgdG8gbGVmdC1zaGlmdCBlYWNoIHZhbHVlIGluIG9wZXJhbmQgXGEgX19hLgovLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGxlZnQtc2hpZnRlZCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zbGxfZXBpNjQoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19jb3VudCkKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9wc2xscTEyOCgoX192MmRpKV9fYSwgKF9fdjJkaSlfX2NvdW50KTsKfQoKLy8vIFJpZ2h0LXNoaWZ0cyBlYWNoIDE2LWJpdCB2YWx1ZSBpbiB0aGUgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvcGVyYW5kCi8vLyAgICBieSB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBiaXRzLiBIaWdoLW9yZGVyIGJpdHMgYXJlIGZpbGxlZCB3aXRoIHRoZSBzaWduCi8vLyAgICBiaXQgb2YgdGhlIGluaXRpYWwgdmFsdWUuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBTUkFXIC8gUFNSQVcgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgc291cmNlIG9wZXJhbmQuCi8vLyBccGFyYW0gX19jb3VudAovLy8gICAgQW4gaW50ZWdlciB2YWx1ZSBzcGVjaWZ5aW5nIHRoZSBudW1iZXIgb2YgYml0cyB0byByaWdodC1zaGlmdCBlYWNoIHZhbHVlCi8vLyAgICBpbiBvcGVyYW5kIFxhIF9fYS4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSByaWdodC1zaGlmdGVkIHZhbHVlcy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3NyYWlfZXBpMTYoX19tMTI4aSBfX2EsIGludCBfX2NvdW50KQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzcmF3aTEyOCgoX192OGhpKV9fYSwgX19jb3VudCk7Cn0KCi8vLyBSaWdodC1zaGlmdHMgZWFjaCAxNi1iaXQgdmFsdWUgaW4gdGhlIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb3BlcmFuZAovLy8gICAgYnkgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgYml0cy4gSGlnaC1vcmRlciBiaXRzIGFyZSBmaWxsZWQgd2l0aCB0aGUgc2lnbgovLy8gICAgYml0IG9mIHRoZSBpbml0aWFsIHZhbHVlLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQU1JBVyAvIFBTUkFXIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNvdXJjZSBvcGVyYW5kLgovLy8gXHBhcmFtIF9fY291bnQKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBpbiB3aGljaCBiaXRzIFs2MzowXSBzcGVjaWZ5IHRoZSBudW1iZXIgb2YgYml0cwovLy8gICAgdG8gcmlnaHQtc2hpZnQgZWFjaCB2YWx1ZSBpbiBvcGVyYW5kIFxhIF9fYS4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSByaWdodC1zaGlmdGVkIHZhbHVlcy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3NyYV9lcGkxNihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2NvdW50KQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzcmF3MTI4KChfX3Y4aGkpX19hLCAoX192OGhpKV9fY291bnQpOwp9CgovLy8gUmlnaHQtc2hpZnRzIGVhY2ggMzItYml0IHZhbHVlIGluIHRoZSAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9wZXJhbmQKLy8vICAgIGJ5IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGJpdHMuIEhpZ2gtb3JkZXIgYml0cyBhcmUgZmlsbGVkIHdpdGggdGhlIHNpZ24KLy8vICAgIGJpdCBvZiB0aGUgaW5pdGlhbCB2YWx1ZS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFNSQUQgLyBQU1JBRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBzb3VyY2Ugb3BlcmFuZC4KLy8vIFxwYXJhbSBfX2NvdW50Ci8vLyAgICBBbiBpbnRlZ2VyIHZhbHVlIHNwZWNpZnlpbmcgdGhlIG51bWJlciBvZiBiaXRzIHRvIHJpZ2h0LXNoaWZ0IGVhY2ggdmFsdWUKLy8vICAgIGluIG9wZXJhbmQgXGEgX19hLgovLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHJpZ2h0LXNoaWZ0ZWQgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc3JhaV9lcGkzMihfX20xMjhpIF9fYSwgaW50IF9fY291bnQpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNyYWRpMTI4KChfX3Y0c2kpX19hLCBfX2NvdW50KTsKfQoKLy8vIFJpZ2h0LXNoaWZ0cyBlYWNoIDMyLWJpdCB2YWx1ZSBpbiB0aGUgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvcGVyYW5kCi8vLyAgICBieSB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBiaXRzLiBIaWdoLW9yZGVyIGJpdHMgYXJlIGZpbGxlZCB3aXRoIHRoZSBzaWduCi8vLyAgICBiaXQgb2YgdGhlIGluaXRpYWwgdmFsdWUuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBTUkFEIC8gUFNSQUQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgc291cmNlIG9wZXJhbmQuCi8vLyBccGFyYW0gX19jb3VudAovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGluIHdoaWNoIGJpdHMgWzYzOjBdIHNwZWNpZnkgdGhlIG51bWJlciBvZiBiaXRzCi8vLyAgICB0byByaWdodC1zaGlmdCBlYWNoIHZhbHVlIGluIG9wZXJhbmQgXGEgX19hLgovLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHJpZ2h0LXNoaWZ0ZWQgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc3JhX2VwaTMyKF9fbTEyOGkgX19hLCBfX20xMjhpIF9fY291bnQpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNyYWQxMjgoKF9fdjRzaSlfX2EsIChfX3Y0c2kpX19jb3VudCk7Cn0KCi8vLyBSaWdodC1zaGlmdHMgdGhlIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb3BlcmFuZCBieSB0aGUgc3BlY2lmaWVkCi8vLyAgICBudW1iZXIgb2YgYnl0ZXMuIEhpZ2gtb3JkZXIgYml0cyBhcmUgY2xlYXJlZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gXGNvZGUKLy8vIF9fbTEyOGkgX21tX3NybGlfc2kxMjgoX19tMTI4aSBhLCBjb25zdCBpbnQgaW1tKTsKLy8vIFxlbmRjb2RlCi8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFNSTERRIC8gUFNSTERRIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIGEKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBzb3VyY2Ugb3BlcmFuZC4KLy8vIFxwYXJhbSBpbW0KLy8vICAgIEFuIGltbWVkaWF0ZSB2YWx1ZSBzcGVjaWZ5aW5nIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gcmlnaHQtc2hpZnQgb3BlcmFuZAovLy8gICAgXGEgYS4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSByaWdodC1zaGlmdGVkIHZhbHVlLgojZGVmaW5lIF9tbV9zcmxpX3NpMTI4KGEsIGltbSkgXAogICgoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wc3JsZHFpMTI4X2J5dGVzaGlmdCgoX192MmRpKShfX20xMjhpKShhKSwgKGludCkoaW1tKSkpCgojZGVmaW5lIF9tbV9ic3JsaV9zaTEyOChhLCBpbW0pIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNybGRxaTEyOF9ieXRlc2hpZnQoKF9fdjJkaSkoX19tMTI4aSkoYSksIChpbnQpKGltbSkpKQoKLy8vIFJpZ2h0LXNoaWZ0cyBlYWNoIG9mIDE2LWJpdCB2YWx1ZXMgaW4gdGhlIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IKLy8vICAgIG9wZXJhbmQgYnkgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgYml0cy4gSGlnaC1vcmRlciBiaXRzIGFyZSBjbGVhcmVkLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQU1JMVyAvIFBTUkxXIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNvdXJjZSBvcGVyYW5kLgovLy8gXHBhcmFtIF9fY291bnQKLy8vICAgIEFuIGludGVnZXIgdmFsdWUgc3BlY2lmeWluZyB0aGUgbnVtYmVyIG9mIGJpdHMgdG8gcmlnaHQtc2hpZnQgZWFjaCB2YWx1ZQovLy8gICAgaW4gb3BlcmFuZCBcYSBfX2EuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgcmlnaHQtc2hpZnRlZCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zcmxpX2VwaTE2KF9fbTEyOGkgX19hLCBpbnQgX19jb3VudCkKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wc3Jsd2kxMjgoKF9fdjhoaSlfX2EsIF9fY291bnQpOwp9CgovLy8gUmlnaHQtc2hpZnRzIGVhY2ggb2YgMTYtYml0IHZhbHVlcyBpbiB0aGUgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvcgovLy8gICAgb3BlcmFuZCBieSB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBiaXRzLiBIaWdoLW9yZGVyIGJpdHMgYXJlIGNsZWFyZWQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBTUkxXIC8gUFNSTFcgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgc291cmNlIG9wZXJhbmQuCi8vLyBccGFyYW0gX19jb3VudAovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGluIHdoaWNoIGJpdHMgWzYzOjBdIHNwZWNpZnkgdGhlIG51bWJlciBvZiBiaXRzCi8vLyAgICB0byByaWdodC1zaGlmdCBlYWNoIHZhbHVlIGluIG9wZXJhbmQgXGEgX19hLgovLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHJpZ2h0LXNoaWZ0ZWQgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc3JsX2VwaTE2KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fY291bnQpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNybHcxMjgoKF9fdjhoaSlfX2EsIChfX3Y4aGkpX19jb3VudCk7Cn0KCi8vLyBSaWdodC1zaGlmdHMgZWFjaCBvZiAzMi1iaXQgdmFsdWVzIGluIHRoZSAxMjgtYml0IGludGVnZXIgdmVjdG9yCi8vLyAgICBvcGVyYW5kIGJ5IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGJpdHMuIEhpZ2gtb3JkZXIgYml0cyBhcmUgY2xlYXJlZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFNSTEQgLyBQU1JMRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBzb3VyY2Ugb3BlcmFuZC4KLy8vIFxwYXJhbSBfX2NvdW50Ci8vLyAgICBBbiBpbnRlZ2VyIHZhbHVlIHNwZWNpZnlpbmcgdGhlIG51bWJlciBvZiBiaXRzIHRvIHJpZ2h0LXNoaWZ0IGVhY2ggdmFsdWUKLy8vICAgIGluIG9wZXJhbmQgXGEgX19hLgovLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHJpZ2h0LXNoaWZ0ZWQgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc3JsaV9lcGkzMihfX20xMjhpIF9fYSwgaW50IF9fY291bnQpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNybGRpMTI4KChfX3Y0c2kpX19hLCBfX2NvdW50KTsKfQoKLy8vIFJpZ2h0LXNoaWZ0cyBlYWNoIG9mIDMyLWJpdCB2YWx1ZXMgaW4gdGhlIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IKLy8vICAgIG9wZXJhbmQgYnkgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgYml0cy4gSGlnaC1vcmRlciBiaXRzIGFyZSBjbGVhcmVkLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQU1JMRCAvIFBTUkxEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNvdXJjZSBvcGVyYW5kLgovLy8gXHBhcmFtIF9fY291bnQKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBpbiB3aGljaCBiaXRzIFs2MzowXSBzcGVjaWZ5IHRoZSBudW1iZXIgb2YgYml0cwovLy8gICAgdG8gcmlnaHQtc2hpZnQgZWFjaCB2YWx1ZSBpbiBvcGVyYW5kIFxhIF9fYS4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSByaWdodC1zaGlmdGVkIHZhbHVlcy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3NybF9lcGkzMihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2NvdW50KQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzcmxkMTI4KChfX3Y0c2kpX19hLCAoX192NHNpKV9fY291bnQpOwp9CgovLy8gUmlnaHQtc2hpZnRzIGVhY2ggb2YgNjQtYml0IHZhbHVlcyBpbiB0aGUgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvcgovLy8gICAgb3BlcmFuZCBieSB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBiaXRzLiBIaWdoLW9yZGVyIGJpdHMgYXJlIGNsZWFyZWQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBTUkxRIC8gUFNSTFEgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgc291cmNlIG9wZXJhbmQuCi8vLyBccGFyYW0gX19jb3VudAovLy8gICAgQW4gaW50ZWdlciB2YWx1ZSBzcGVjaWZ5aW5nIHRoZSBudW1iZXIgb2YgYml0cyB0byByaWdodC1zaGlmdCBlYWNoIHZhbHVlCi8vLyAgICBpbiBvcGVyYW5kIFxhIF9fYS4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSByaWdodC1zaGlmdGVkIHZhbHVlcy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3NybGlfZXBpNjQoX19tMTI4aSBfX2EsIGludCBfX2NvdW50KQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3BzcmxxaTEyOCgoX192MmRpKV9fYSwgX19jb3VudCk7Cn0KCi8vLyBSaWdodC1zaGlmdHMgZWFjaCBvZiA2NC1iaXQgdmFsdWVzIGluIHRoZSAxMjgtYml0IGludGVnZXIgdmVjdG9yCi8vLyAgICBvcGVyYW5kIGJ5IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGJpdHMuIEhpZ2gtb3JkZXIgYml0cyBhcmUgY2xlYXJlZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFNSTFEgLyBQU1JMUSA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBzb3VyY2Ugb3BlcmFuZC4KLy8vIFxwYXJhbSBfX2NvdW50Ci8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgaW4gd2hpY2ggYml0cyBbNjM6MF0gc3BlY2lmeSB0aGUgbnVtYmVyIG9mIGJpdHMKLy8vICAgIHRvIHJpZ2h0LXNoaWZ0IGVhY2ggdmFsdWUgaW4gb3BlcmFuZCBcYSBfX2EuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgcmlnaHQtc2hpZnRlZCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zcmxfZXBpNjQoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19jb3VudCkKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9wc3JscTEyOCgoX192MmRpKV9fYSwgKF9fdjJkaSlfX2NvdW50KTsKfQoKLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgOC1iaXQgdmFsdWVzIG9mIHRoZSAxMjgtYml0Ci8vLyAgICBpbnRlZ2VyIHZlY3RvcnMgZm9yIGVxdWFsaXR5LiBFYWNoIGNvbXBhcmlzb24geWllbGRzIDB4MCBmb3IgZmFsc2UsIDB4RkYKLy8vICAgIGZvciB0cnVlLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQ01QRVFCIC8gUENNUEVRQiA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jbXBlcV9lcGk4KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikKewogIHJldHVybiAoX19tMTI4aSkoKF9fdjE2cWkpX19hID09IChfX3YxNnFpKV9fYik7Cn0KCi8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIDE2LWJpdCB2YWx1ZXMgb2YgdGhlIDEyOC1iaXQKLy8vICAgIGludGVnZXIgdmVjdG9ycyBmb3IgZXF1YWxpdHkuIEVhY2ggY29tcGFyaXNvbiB5aWVsZHMgMHgwIGZvciBmYWxzZSwKLy8vICAgIDB4RkZGRiBmb3IgdHJ1ZS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUENNUEVRVyAvIFBDTVBFUVcgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY21wZXFfZXBpMTYoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQp7CiAgcmV0dXJuIChfX20xMjhpKSgoX192OGhpKV9fYSA9PSAoX192OGhpKV9fYik7Cn0KCi8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIDMyLWJpdCB2YWx1ZXMgb2YgdGhlIDEyOC1iaXQKLy8vICAgIGludGVnZXIgdmVjdG9ycyBmb3IgZXF1YWxpdHkuIEVhY2ggY29tcGFyaXNvbiB5aWVsZHMgMHgwIGZvciBmYWxzZSwKLy8vICAgIDB4RkZGRkZGRkYgZm9yIHRydWUuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBDTVBFUUQgLyBQQ01QRVFEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yLgovLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2NtcGVxX2VwaTMyKF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikKewogIHJldHVybiAoX19tMTI4aSkoKF9fdjRzaSlfX2EgPT0gKF9fdjRzaSlfX2IpOwp9CgovLy8gQ29tcGFyZXMgZWFjaCBvZiB0aGUgY29ycmVzcG9uZGluZyBzaWduZWQgOC1iaXQgdmFsdWVzIG9mIHRoZSAxMjgtYml0Ci8vLyAgICBpbnRlZ2VyIHZlY3RvcnMgdG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZXMgaW4gdGhlIGZpcnN0IG9wZXJhbmQgYXJlCi8vLyAgICBncmVhdGVyIHRoYW4gdGhvc2UgaW4gdGhlIHNlY29uZCBvcGVyYW5kLiBFYWNoIGNvbXBhcmlzb24geWllbGRzIDB4MCBmb3IKLy8vICAgIGZhbHNlLCAweEZGIGZvciB0cnVlLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQ01QR1RCIC8gUENNUEdUQiA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jbXBndF9lcGk4KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikKewogIC8qIFRoaXMgZnVuY3Rpb24gYWx3YXlzIHBlcmZvcm1zIGEgc2lnbmVkIGNvbXBhcmlzb24sIGJ1dCBfX3YxNnFpIGlzIGEgY2hhcgogICAgIHdoaWNoIG1heSBiZSBzaWduZWQgb3IgdW5zaWduZWQsIHNvIHVzZSBfX3YxNnFzLiAqLwogIHJldHVybiAoX19tMTI4aSkoKF9fdjE2cXMpX19hID4gKF9fdjE2cXMpX19iKTsKfQoKLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgc2lnbmVkIDE2LWJpdCB2YWx1ZXMgb2YgdGhlCi8vLyAgICAxMjgtYml0IGludGVnZXIgdmVjdG9ycyB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlcyBpbiB0aGUgZmlyc3Qgb3BlcmFuZAovLy8gICAgYXJlIGdyZWF0ZXIgdGhhbiB0aG9zZSBpbiB0aGUgc2Vjb25kIG9wZXJhbmQuCi8vLwovLy8gICAgRWFjaCBjb21wYXJpc29uIHlpZWxkcyAweDAgZm9yIGZhbHNlLCAweEZGRkYgZm9yIHRydWUuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBDTVBHVFcgLyBQQ01QR1RXIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yLgovLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2NtcGd0X2VwaTE2KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikKewogIHJldHVybiAoX19tMTI4aSkoKF9fdjhoaSlfX2EgPiAoX192OGhpKV9fYik7Cn0KCi8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIHNpZ25lZCAzMi1iaXQgdmFsdWVzIG9mIHRoZQovLy8gICAgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvcnMgdG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZXMgaW4gdGhlIGZpcnN0IG9wZXJhbmQKLy8vICAgIGFyZSBncmVhdGVyIHRoYW4gdGhvc2UgaW4gdGhlIHNlY29uZCBvcGVyYW5kLgovLy8KLy8vICAgIEVhY2ggY29tcGFyaXNvbiB5aWVsZHMgMHgwIGZvciBmYWxzZSwgMHhGRkZGRkZGRiBmb3IgdHJ1ZS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUENNUEdURCAvIFBDTVBHVEQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY21wZ3RfZXBpMzIoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQp7CiAgcmV0dXJuIChfX20xMjhpKSgoX192NHNpKV9fYSA+IChfX3Y0c2kpX19iKTsKfQoKLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgc2lnbmVkIDgtYml0IHZhbHVlcyBvZiB0aGUgMTI4LWJpdAovLy8gICAgaW50ZWdlciB2ZWN0b3JzIHRvIGRldGVybWluZSBpZiB0aGUgdmFsdWVzIGluIHRoZSBmaXJzdCBvcGVyYW5kIGFyZSBsZXNzCi8vLyAgICB0aGFuIHRob3NlIGluIHRoZSBzZWNvbmQgb3BlcmFuZC4KLy8vCi8vLyAgICBFYWNoIGNvbXBhcmlzb24geWllbGRzIDB4MCBmb3IgZmFsc2UsIDB4RkYgZm9yIHRydWUuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBDTVBHVEIgLyBQQ01QR1RCIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yLgovLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2NtcGx0X2VwaTgoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQp7CiAgcmV0dXJuIF9tbV9jbXBndF9lcGk4KF9fYiwgX19hKTsKfQoKLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgc2lnbmVkIDE2LWJpdCB2YWx1ZXMgb2YgdGhlCi8vLyAgICAxMjgtYml0IGludGVnZXIgdmVjdG9ycyB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlcyBpbiB0aGUgZmlyc3Qgb3BlcmFuZAovLy8gICAgYXJlIGxlc3MgdGhhbiB0aG9zZSBpbiB0aGUgc2Vjb25kIG9wZXJhbmQuCi8vLwovLy8gICAgRWFjaCBjb21wYXJpc29uIHlpZWxkcyAweDAgZm9yIGZhbHNlLCAweEZGRkYgZm9yIHRydWUuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBDTVBHVFcgLyBQQ01QR1RXIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yLgovLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2NtcGx0X2VwaTE2KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikKewogIHJldHVybiBfbW1fY21wZ3RfZXBpMTYoX19iLCBfX2EpOwp9CgovLy8gQ29tcGFyZXMgZWFjaCBvZiB0aGUgY29ycmVzcG9uZGluZyBzaWduZWQgMzItYml0IHZhbHVlcyBvZiB0aGUKLy8vICAgIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3JzIHRvIGRldGVybWluZSBpZiB0aGUgdmFsdWVzIGluIHRoZSBmaXJzdCBvcGVyYW5kCi8vLyAgICBhcmUgbGVzcyB0aGFuIHRob3NlIGluIHRoZSBzZWNvbmQgb3BlcmFuZC4KLy8vCi8vLyAgICBFYWNoIGNvbXBhcmlzb24geWllbGRzIDB4MCBmb3IgZmFsc2UsIDB4RkZGRkZGRkYgZm9yIHRydWUuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBDTVBHVEQgLyBQQ01QR1REIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yLgovLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2NtcGx0X2VwaTMyKF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikKewogIHJldHVybiBfbW1fY21wZ3RfZXBpMzIoX19iLCBfX2EpOwp9CgojaWZkZWYgX194ODZfNjRfXwovLy8gQ29udmVydHMgYSA2NC1iaXQgc2lnbmVkIGludGVnZXIgdmFsdWUgZnJvbSB0aGUgc2Vjb25kIG9wZXJhbmQgaW50byBhCi8vLyAgICBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGFuZCByZXR1cm5zIGl0IGluIHRoZSBsb3dlciBlbGVtZW50IG9mIGEgWzIgeAovLy8gICAgZG91YmxlXSB2ZWN0b3I7IHRoZSB1cHBlciBlbGVtZW50IG9mIHRoZSByZXR1cm5lZCB2ZWN0b3IgaXMgY29waWVkIGZyb20KLy8vICAgIHRoZSB1cHBlciBlbGVtZW50IG9mIHRoZSBmaXJzdCBvcGVyYW5kLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDVlRTSTJTRCAvIENWVFNJMlNEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSB1cHBlciA2NCBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUKLy8vICAgIGNvcGllZCB0byB0aGUgdXBwZXIgNjQgYml0cyBvZiB0aGUgZGVzdGluYXRpb24uCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDY0LWJpdCBzaWduZWQgaW50ZWdlciBvcGVyYW5kIGNvbnRhaW5pbmcgdGhlIHZhbHVlIHRvIGJlIGNvbnZlcnRlZC4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIHdob3NlIGxvd2VyIDY0IGJpdHMgY29udGFpbiB0aGUKLy8vICAgIGNvbnZlcnRlZCB2YWx1ZSBvZiB0aGUgc2Vjb25kIG9wZXJhbmQuIFRoZSB1cHBlciA2NCBiaXRzIGFyZSBjb3BpZWQgZnJvbQovLy8gICAgdGhlIHVwcGVyIDY0IGJpdHMgb2YgdGhlIGZpcnN0IG9wZXJhbmQuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jdnRzaTY0X3NkKF9fbTEyOGQgX19hLCBsb25nIGxvbmcgX19iKQp7CiAgX19hWzBdID0gX19iOwogIHJldHVybiBfX2E7Cn0KCi8vLyBDb252ZXJ0cyB0aGUgZmlyc3QgKGxvd2VyKSBlbGVtZW50IG9mIGEgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBpbnRvIGEKLy8vICAgIDY0LWJpdCBzaWduZWQgaW50ZWdlciB2YWx1ZSwgYWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50IHJvdW5kaW5nIG1vZGUuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNWVFNEMlNJIC8gQ1ZUU0QyU0kgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIDY0IGJpdHMgYXJlIHVzZWQgaW4gdGhlCi8vLyAgICBjb252ZXJzaW9uLgovLy8gXHJldHVybnMgQSA2NC1iaXQgc2lnbmVkIGludGVnZXIgY29udGFpbmluZyB0aGUgY29udmVydGVkIHZhbHVlLgpzdGF0aWMgX19pbmxpbmVfXyBsb25nIGxvbmcgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jdnRzZF9zaTY0KF9fbTEyOGQgX19hKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2N2dHNkMnNpNjQoKF9fdjJkZilfX2EpOwp9CgovLy8gQ29udmVydHMgdGhlIGZpcnN0IChsb3dlcikgZWxlbWVudCBvZiBhIHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gaW50byBhCi8vLyAgICA2NC1iaXQgc2lnbmVkIGludGVnZXIgdmFsdWUsIHRydW5jYXRpbmcgdGhlIHJlc3VsdCB3aGVuIGl0IGlzIGluZXhhY3QuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNWVFRTRDJTSSAvIENWVFRTRDJTSSA8L2M+Ci8vLyAgIGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgNjQgYml0cyBhcmUgdXNlZCBpbiB0aGUKLy8vICAgIGNvbnZlcnNpb24uCi8vLyBccmV0dXJucyBBIDY0LWJpdCBzaWduZWQgaW50ZWdlciBjb250YWluaW5nIHRoZSBjb252ZXJ0ZWQgdmFsdWUuCnN0YXRpYyBfX2lubGluZV9fIGxvbmcgbG9uZyBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2N2dHRzZF9zaTY0KF9fbTEyOGQgX19hKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2N2dHRzZDJzaTY0KChfX3YyZGYpX19hKTsKfQojZW5kaWYKCi8vLyBDb252ZXJ0cyBhIHZlY3RvciBvZiBbNCB4IGkzMl0gaW50byBhIHZlY3RvciBvZiBbNCB4IGZsb2F0XS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ1ZURFEyUFMgLyBDVlREUTJQUyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29udmVydGVkIHZhbHVlcy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY3Z0ZXBpMzJfcHMoX19tMTI4aSBfX2EpCnsKICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5fY29udmVydHZlY3RvcigoX192NHNpKV9fYSwgX192NHNmKTsKfQoKLy8vIENvbnZlcnRzIGEgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGludG8gYSB2ZWN0b3Igb2YgWzQgeCBpMzJdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDVlRQUzJEUSAvIENWVFBTMkRRIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkzMl0gY29udGFpbmluZyB0aGUgY29udmVydGVkCi8vLyAgICB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jdnRwc19lcGkzMihfX20xMjggX19hKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX2N2dHBzMmRxKChfX3Y0c2YpX19hKTsKfQoKLy8vIENvbnZlcnRzIGEgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGludG8gYSB2ZWN0b3Igb2YgWzQgeCBpMzJdLAovLy8gICAgdHJ1bmNhdGluZyB0aGUgcmVzdWx0IHdoZW4gaXQgaXMgaW5leGFjdC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ1ZUVFBTMkRRIC8gQ1ZUVFBTMkRRIDwvYz4KLy8vICAgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRlZCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jdnR0cHNfZXBpMzIoX19tMTI4IF9fYSkKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9jdnR0cHMyZHEoKF9fdjRzZilfX2EpOwp9CgovLy8gUmV0dXJucyBhIHZlY3RvciBvZiBbNCB4IGkzMl0gd2hlcmUgdGhlIGxvd2VzdCBlbGVtZW50IGlzIHRoZSBpbnB1dAovLy8gICAgb3BlcmFuZCBhbmQgdGhlIHJlbWFpbmluZyBlbGVtZW50cyBhcmUgemVyby4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WRCAvIE1PVkQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDMyLWJpdCBzaWduZWQgaW50ZWdlciBvcGVyYW5kLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0uCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jdnRzaTMyX3NpMTI4KGludCBfX2EpCnsKICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMTI4aSkoX192NHNpKXsgX19hLCAwLCAwLCAwIH07Cn0KCiNpZmRlZiBfX3g4Nl82NF9fCi8vLyBSZXR1cm5zIGEgdmVjdG9yIG9mIFsyIHggaTY0XSB3aGVyZSB0aGUgbG93ZXIgZWxlbWVudCBpcyB0aGUgaW5wdXQKLy8vICAgIG9wZXJhbmQgYW5kIHRoZSB1cHBlciBlbGVtZW50IGlzIHplcm8uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVlEgLyBNT1ZRIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSA2NC1iaXQgc2lnbmVkIGludGVnZXIgb3BlcmFuZCBjb250YWluaW5nIHRoZSB2YWx1ZSB0byBiZSBjb252ZXJ0ZWQuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggaTY0XSBjb250YWluaW5nIHRoZSBjb252ZXJ0ZWQgdmFsdWUuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jdnRzaTY0X3NpMTI4KGxvbmcgbG9uZyBfX2EpCnsKICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMTI4aSkoX192MmRpKXsgX19hLCAwIH07Cn0KI2VuZGlmCgovLy8gTW92ZXMgdGhlIGxlYXN0IHNpZ25pZmljYW50IDMyIGJpdHMgb2YgYSB2ZWN0b3Igb2YgWzQgeCBpMzJdIHRvIGEKLy8vICAgIDMyLWJpdCBzaWduZWQgaW50ZWdlciB2YWx1ZS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WRCAvIE1PVkQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIHZlY3RvciBvZiBbNCB4IGkzMl0uIFRoZSBsZWFzdCBzaWduaWZpY2FudCAzMiBiaXRzIGFyZSBtb3ZlZCB0byB0aGUKLy8vICAgIGRlc3RpbmF0aW9uLgovLy8gXHJldHVybnMgQSAzMi1iaXQgc2lnbmVkIGludGVnZXIgY29udGFpbmluZyB0aGUgbW92ZWQgdmFsdWUuCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2N2dHNpMTI4X3NpMzIoX19tMTI4aSBfX2EpCnsKICBfX3Y0c2kgX19iID0gKF9fdjRzaSlfX2E7CiAgcmV0dXJuIF9fYlswXTsKfQoKI2lmZGVmIF9feDg2XzY0X18KLy8vIE1vdmVzIHRoZSBsZWFzdCBzaWduaWZpY2FudCA2NCBiaXRzIG9mIGEgdmVjdG9yIG9mIFsyIHggaTY0XSB0byBhCi8vLyAgICA2NC1iaXQgc2lnbmVkIGludGVnZXIgdmFsdWUuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVlEgLyBNT1ZRIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSB2ZWN0b3Igb2YgWzIgeCBpNjRdLiBUaGUgbGVhc3Qgc2lnbmlmaWNhbnQgNjQgYml0cyBhcmUgbW92ZWQgdG8gdGhlCi8vLyAgICBkZXN0aW5hdGlvbi4KLy8vIFxyZXR1cm5zIEEgNjQtYml0IHNpZ25lZCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIG1vdmVkIHZhbHVlLgpzdGF0aWMgX19pbmxpbmVfXyBsb25nIGxvbmcgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jdnRzaTEyOF9zaTY0KF9fbTEyOGkgX19hKQp7CiAgcmV0dXJuIF9fYVswXTsKfQojZW5kaWYKCi8vLyBNb3ZlcyBwYWNrZWQgaW50ZWdlciB2YWx1ZXMgZnJvbSBhbiBhbGlnbmVkIDEyOC1iaXQgbWVtb3J5IGxvY2F0aW9uCi8vLyAgICB0byBlbGVtZW50cyBpbiBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVkRRQSAvIE1PVkRRQSA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX3AKLy8vICAgIEFuIGFsaWduZWQgcG9pbnRlciB0byBhIG1lbW9yeSBsb2NhdGlvbiBjb250YWluaW5nIGludGVnZXIgdmFsdWVzLgovLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIG1vdmVkIHZhbHVlcy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2xvYWRfc2kxMjgoX19tMTI4aSBjb25zdCAqX19wKQp7CiAgcmV0dXJuICpfX3A7Cn0KCi8vLyBNb3ZlcyBwYWNrZWQgaW50ZWdlciB2YWx1ZXMgZnJvbSBhbiB1bmFsaWduZWQgMTI4LWJpdCBtZW1vcnkgbG9jYXRpb24KLy8vICAgIHRvIGVsZW1lbnRzIGluIGEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WRFFVIC8gTU9WRFFVIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fcAovLy8gICAgQSBwb2ludGVyIHRvIGEgbWVtb3J5IGxvY2F0aW9uIGNvbnRhaW5pbmcgaW50ZWdlciB2YWx1ZXMuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgbW92ZWQgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fbG9hZHVfc2kxMjgoX19tMTI4aV91IGNvbnN0ICpfX3ApCnsKICBzdHJ1Y3QgX19sb2FkdV9zaTEyOCB7CiAgICBfX20xMjhpX3UgX192OwogIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOwogIHJldHVybiAoKGNvbnN0IHN0cnVjdCBfX2xvYWR1X3NpMTI4KilfX3ApLT5fX3Y7Cn0KCi8vLyBSZXR1cm5zIGEgdmVjdG9yIG9mIFsyIHggaTY0XSB3aGVyZSB0aGUgbG93ZXIgZWxlbWVudCBpcyB0YWtlbiBmcm9tCi8vLyAgICB0aGUgbG93ZXIgZWxlbWVudCBvZiB0aGUgb3BlcmFuZCwgYW5kIHRoZSB1cHBlciBlbGVtZW50IGlzIHplcm8uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVlEgLyBNT1ZRIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fcAovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0uIEJpdHMgWzYzOjBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzYzOjBdIG9mCi8vLyAgICB0aGUgZGVzdGluYXRpb24uCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggaTY0XS4gVGhlIGxvd2VyIG9yZGVyIGJpdHMgY29udGFpbiB0aGUKLy8vICAgIG1vdmVkIHZhbHVlLiBUaGUgaGlnaGVyIG9yZGVyIGJpdHMgYXJlIGNsZWFyZWQuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9sb2FkbF9lcGk2NChfX20xMjhpX3UgY29uc3QgKl9fcCkKewogIHN0cnVjdCBfX21tX2xvYWRsX2VwaTY0X3N0cnVjdCB7CiAgICBsb25nIGxvbmcgX191OwogIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOwogIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjhpKSB7ICgoY29uc3Qgc3RydWN0IF9fbW1fbG9hZGxfZXBpNjRfc3RydWN0KilfX3ApLT5fX3UsIDB9Owp9CgovLy8gR2VuZXJhdGVzIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdIHdpdGggdW5zcGVjaWZpZWQgY29udGVudC4KLy8vICAgIFRoaXMgY291bGQgYmUgdXNlZCBhcyBhbiBhcmd1bWVudCB0byBhbm90aGVyIGludHJpbnNpYyBmdW5jdGlvbiB3aGVyZSB0aGUKLy8vICAgIGFyZ3VtZW50IGlzIHJlcXVpcmVkIGJ1dCB0aGUgdmFsdWUgaXMgbm90IGFjdHVhbGx5IHVzZWQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGhhcyBubyBjb3JyZXNwb25kaW5nIGluc3RydWN0aW9uLgovLy8KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdIHdpdGggdW5zcGVjaWZpZWQgY29udGVudC4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3VuZGVmaW5lZF9zaTEyOCh2b2lkKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3VuZGVmMTI4KCk7Cn0KCi8vLyBJbml0aWFsaXplcyBib3RoIDY0LWJpdCB2YWx1ZXMgaW4gYSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0gd2l0aAovLy8gICAgdGhlIHNwZWNpZmllZCA2NC1iaXQgaW50ZWdlciB2YWx1ZXMuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGlzIGEgdXRpbGl0eSBmdW5jdGlvbiBhbmQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHNwZWNpZmljCi8vLyAgICBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19xMQovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgdGhlIHVwcGVyIDY0IGJpdHMgb2YgdGhlCi8vLyAgICBkZXN0aW5hdGlvbiB2ZWN0b3Igb2YgWzIgeCBpNjRdLgovLy8gXHBhcmFtIF9fcTAKLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIHRoZSBsb3dlciA2NCBiaXRzIG9mIHRoZQovLy8gICAgZGVzdGluYXRpb24gdmVjdG9yIG9mIFsyIHggaTY0XS4KLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggaTY0XSBjb250YWluaW5nIHRoZSB2YWx1ZXMKLy8vICAgIHByb3ZpZGVkIGluIHRoZSBvcGVyYW5kcy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3NldF9lcGk2NHgobG9uZyBsb25nIF9fcTEsIGxvbmcgbG9uZyBfX3EwKQp7CiAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOGkpKF9fdjJkaSl7IF9fcTAsIF9fcTEgfTsKfQoKLy8vIEluaXRpYWxpemVzIGJvdGggNjQtYml0IHZhbHVlcyBpbiBhIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggaTY0XSB3aXRoCi8vLyAgICB0aGUgc3BlY2lmaWVkIDY0LWJpdCBpbnRlZ2VyIHZhbHVlcy4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1dGlsaXR5IGZ1bmN0aW9uIGFuZCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lmaWMKLy8vICAgIGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX3ExCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgdXBwZXIgNjQgYml0cyBvZiB0aGUKLy8vICAgIGRlc3RpbmF0aW9uIHZlY3RvciBvZiBbMiB4IGk2NF0uCi8vLyBccGFyYW0gX19xMAovLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgdGhlIGxvd2VyIDY0IGJpdHMgb2YgdGhlCi8vLyAgICBkZXN0aW5hdGlvbiB2ZWN0b3Igb2YgWzIgeCBpNjRdLgovLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBpNjRdIGNvbnRhaW5pbmcgdGhlIHZhbHVlcwovLy8gICAgcHJvdmlkZWQgaW4gdGhlIG9wZXJhbmRzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc2V0X2VwaTY0KF9fbTY0IF9fcTEsIF9fbTY0IF9fcTApCnsKICByZXR1cm4gX21tX3NldF9lcGk2NHgoKGxvbmcgbG9uZylfX3ExLCAobG9uZyBsb25nKV9fcTApOwp9CgovLy8gSW5pdGlhbGl6ZXMgdGhlIDMyLWJpdCB2YWx1ZXMgaW4gYSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0gd2l0aAovLy8gICAgdGhlIHNwZWNpZmllZCAzMi1iaXQgaW50ZWdlciB2YWx1ZXMuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGlzIGEgdXRpbGl0eSBmdW5jdGlvbiBhbmQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHNwZWNpZmljCi8vLyAgICBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19pMwovLy8gICAgQSAzMi1iaXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTI3Ojk2XSBvZiB0aGUKLy8vICAgIGRlc3RpbmF0aW9uIHZlY3Rvci4KLy8vIFxwYXJhbSBfX2kyCi8vLyAgICBBIDMyLWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs5NTo2NF0gb2YgdGhlIGRlc3RpbmF0aW9uCi8vLyAgICB2ZWN0b3IuCi8vLyBccGFyYW0gX19pMQovLy8gICAgQSAzMi1iaXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNjM6MzJdIG9mIHRoZSBkZXN0aW5hdGlvbgovLy8gICAgdmVjdG9yLgovLy8gXHBhcmFtIF9faTAKLy8vICAgIEEgMzItYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzMxOjBdIG9mIHRoZSBkZXN0aW5hdGlvbgovLy8gICAgdmVjdG9yLgovLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdIGNvbnRhaW5pbmcgdGhlIHZhbHVlcwovLy8gICAgcHJvdmlkZWQgaW4gdGhlIG9wZXJhbmRzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc2V0X2VwaTMyKGludCBfX2kzLCBpbnQgX19pMiwgaW50IF9faTEsIGludCBfX2kwKQp7CiAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOGkpKF9fdjRzaSl7IF9faTAsIF9faTEsIF9faTIsIF9faTN9Owp9CgovLy8gSW5pdGlhbGl6ZXMgdGhlIDE2LWJpdCB2YWx1ZXMgaW4gYSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGkxNl0gd2l0aAovLy8gICAgdGhlIHNwZWNpZmllZCAxNi1iaXQgaW50ZWdlciB2YWx1ZXMuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGlzIGEgdXRpbGl0eSBmdW5jdGlvbiBhbmQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHNwZWNpZmljCi8vLyAgICBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX193NwovLy8gICAgQSAxNi1iaXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTI3OjExMl0gb2YgdGhlCi8vLyAgICBkZXN0aW5hdGlvbiB2ZWN0b3IuCi8vLyBccGFyYW0gX193NgovLy8gICAgQSAxNi1iaXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTExOjk2XSBvZiB0aGUKLy8vICAgIGRlc3RpbmF0aW9uIHZlY3Rvci4KLy8vIFxwYXJhbSBfX3c1Ci8vLyAgICBBIDE2LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs5NTo4MF0gb2YgdGhlIGRlc3RpbmF0aW9uCi8vLyAgICB2ZWN0b3IuCi8vLyBccGFyYW0gX193NAovLy8gICAgQSAxNi1iaXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNzk6NjRdIG9mIHRoZSBkZXN0aW5hdGlvbgovLy8gICAgdmVjdG9yLgovLy8gXHBhcmFtIF9fdzMKLy8vICAgIEEgMTYtYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzYzOjQ4XSBvZiB0aGUgZGVzdGluYXRpb24KLy8vICAgIHZlY3Rvci4KLy8vIFxwYXJhbSBfX3cyCi8vLyAgICBBIDE2LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs0NzozMl0gb2YgdGhlIGRlc3RpbmF0aW9uCi8vLyAgICB2ZWN0b3IuCi8vLyBccGFyYW0gX193MQovLy8gICAgQSAxNi1iaXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMzE6MTZdIG9mIHRoZSBkZXN0aW5hdGlvbgovLy8gICAgdmVjdG9yLgovLy8gXHBhcmFtIF9fdzAKLy8vICAgIEEgMTYtYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE1OjBdIG9mIHRoZSBkZXN0aW5hdGlvbgovLy8gICAgdmVjdG9yLgovLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZdIGNvbnRhaW5pbmcgdGhlIHZhbHVlcwovLy8gICAgcHJvdmlkZWQgaW4gdGhlIG9wZXJhbmRzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc2V0X2VwaTE2KHNob3J0IF9fdzcsIHNob3J0IF9fdzYsIHNob3J0IF9fdzUsIHNob3J0IF9fdzQsIHNob3J0IF9fdzMsIHNob3J0IF9fdzIsIHNob3J0IF9fdzEsIHNob3J0IF9fdzApCnsKICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMTI4aSkoX192OGhpKXsgX193MCwgX193MSwgX193MiwgX193MywgX193NCwgX193NSwgX193NiwgX193NyB9Owp9CgovLy8gSW5pdGlhbGl6ZXMgdGhlIDgtYml0IHZhbHVlcyBpbiBhIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XSB3aXRoCi8vLyAgICB0aGUgc3BlY2lmaWVkIDgtYml0IGludGVnZXIgdmFsdWVzLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBpcyBhIHV0aWxpdHkgZnVuY3Rpb24gYW5kIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBzcGVjaWZpYwovLy8gICAgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYjE1Ci8vLyAgICBJbml0aWFsaXplcyBiaXRzIFsxMjc6MTIwXSBvZiB0aGUgZGVzdGluYXRpb24gdmVjdG9yLgovLy8gXHBhcmFtIF9fYjE0Ci8vLyAgICBJbml0aWFsaXplcyBiaXRzIFsxMTk6MTEyXSBvZiB0aGUgZGVzdGluYXRpb24gdmVjdG9yLgovLy8gXHBhcmFtIF9fYjEzCi8vLyAgICBJbml0aWFsaXplcyBiaXRzIFsxMTE6MTA0XSBvZiB0aGUgZGVzdGluYXRpb24gdmVjdG9yLgovLy8gXHBhcmFtIF9fYjEyCi8vLyAgICBJbml0aWFsaXplcyBiaXRzIFsxMDM6OTZdIG9mIHRoZSBkZXN0aW5hdGlvbiB2ZWN0b3IuCi8vLyBccGFyYW0gX19iMTEKLy8vICAgIEluaXRpYWxpemVzIGJpdHMgWzk1Ojg4XSBvZiB0aGUgZGVzdGluYXRpb24gdmVjdG9yLgovLy8gXHBhcmFtIF9fYjEwCi8vLyAgICBJbml0aWFsaXplcyBiaXRzIFs4Nzo4MF0gb2YgdGhlIGRlc3RpbmF0aW9uIHZlY3Rvci4KLy8vIFxwYXJhbSBfX2I5Ci8vLyAgICBJbml0aWFsaXplcyBiaXRzIFs3OTo3Ml0gb2YgdGhlIGRlc3RpbmF0aW9uIHZlY3Rvci4KLy8vIFxwYXJhbSBfX2I4Ci8vLyAgICBJbml0aWFsaXplcyBiaXRzIFs3MTo2NF0gb2YgdGhlIGRlc3RpbmF0aW9uIHZlY3Rvci4KLy8vIFxwYXJhbSBfX2I3Ci8vLyAgICBJbml0aWFsaXplcyBiaXRzIFs2Mzo1Nl0gb2YgdGhlIGRlc3RpbmF0aW9uIHZlY3Rvci4KLy8vIFxwYXJhbSBfX2I2Ci8vLyAgICBJbml0aWFsaXplcyBiaXRzIFs1NTo0OF0gb2YgdGhlIGRlc3RpbmF0aW9uIHZlY3Rvci4KLy8vIFxwYXJhbSBfX2I1Ci8vLyAgICBJbml0aWFsaXplcyBiaXRzIFs0Nzo0MF0gb2YgdGhlIGRlc3RpbmF0aW9uIHZlY3Rvci4KLy8vIFxwYXJhbSBfX2I0Ci8vLyAgICBJbml0aWFsaXplcyBiaXRzIFszOTozMl0gb2YgdGhlIGRlc3RpbmF0aW9uIHZlY3Rvci4KLy8vIFxwYXJhbSBfX2IzCi8vLyAgICBJbml0aWFsaXplcyBiaXRzIFszMToyNF0gb2YgdGhlIGRlc3RpbmF0aW9uIHZlY3Rvci4KLy8vIFxwYXJhbSBfX2IyCi8vLyAgICBJbml0aWFsaXplcyBiaXRzIFsyMzoxNl0gb2YgdGhlIGRlc3RpbmF0aW9uIHZlY3Rvci4KLy8vIFxwYXJhbSBfX2IxCi8vLyAgICBJbml0aWFsaXplcyBiaXRzIFsxNTo4XSBvZiB0aGUgZGVzdGluYXRpb24gdmVjdG9yLgovLy8gXHBhcmFtIF9fYjAKLy8vICAgIEluaXRpYWxpemVzIGJpdHMgWzc6MF0gb2YgdGhlIGRlc3RpbmF0aW9uIHZlY3Rvci4KLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XSBjb250YWluaW5nIHRoZSB2YWx1ZXMKLy8vICAgIHByb3ZpZGVkIGluIHRoZSBvcGVyYW5kcy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3NldF9lcGk4KGNoYXIgX19iMTUsIGNoYXIgX19iMTQsIGNoYXIgX19iMTMsIGNoYXIgX19iMTIsIGNoYXIgX19iMTEsIGNoYXIgX19iMTAsIGNoYXIgX19iOSwgY2hhciBfX2I4LCBjaGFyIF9fYjcsIGNoYXIgX19iNiwgY2hhciBfX2I1LCBjaGFyIF9fYjQsIGNoYXIgX19iMywgY2hhciBfX2IyLCBjaGFyIF9fYjEsIGNoYXIgX19iMCkKewogIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjhpKShfX3YxNnFpKXsgX19iMCwgX19iMSwgX19iMiwgX19iMywgX19iNCwgX19iNSwgX19iNiwgX19iNywgX19iOCwgX19iOSwgX19iMTAsIF9fYjExLCBfX2IxMiwgX19iMTMsIF9fYjE0LCBfX2IxNSB9Owp9CgovLy8gSW5pdGlhbGl6ZXMgYm90aCB2YWx1ZXMgaW4gYSAxMjgtYml0IGludGVnZXIgdmVjdG9yIHdpdGggdGhlCi8vLyAgICBzcGVjaWZpZWQgNjQtYml0IGludGVnZXIgdmFsdWUuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGlzIGEgdXRpbGl0eSBmdW5jdGlvbiBhbmQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHNwZWNpZmljCi8vLyAgICBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19xCi8vLyAgICBJbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgZWxlbWVudHMgb2YgdGhlIGRlc3RpbmF0aW9uIGludGVnZXIKLy8vICAgIHZlY3Rvci4KLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpNjRdIHdpdGggYm90aAovLy8gICAgZWxlbWVudHMgY29udGFpbmluZyB0aGUgdmFsdWUgcHJvdmlkZWQgaW4gdGhlIG9wZXJhbmQuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zZXQxX2VwaTY0eChsb25nIGxvbmcgX19xKQp7CiAgcmV0dXJuIF9tbV9zZXRfZXBpNjR4KF9fcSwgX19xKTsKfQoKLy8vIEluaXRpYWxpemVzIGJvdGggdmFsdWVzIGluIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBpNjRdIHdpdGggdGhlCi8vLyAgICBzcGVjaWZpZWQgNjQtYml0IHZhbHVlLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBpcyBhIHV0aWxpdHkgZnVuY3Rpb24gYW5kIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBzcGVjaWZpYwovLy8gICAgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fcQovLy8gICAgQSA2NC1iaXQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIHRoZSBlbGVtZW50cyBvZiB0aGUgZGVzdGluYXRpb24gaW50ZWdlcgovLy8gICAgdmVjdG9yLgovLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBpNjRdIHdpdGggYWxsIGVsZW1lbnRzCi8vLyAgICBjb250YWluaW5nIHRoZSB2YWx1ZSBwcm92aWRlZCBpbiB0aGUgb3BlcmFuZC4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3NldDFfZXBpNjQoX19tNjQgX19xKQp7CiAgcmV0dXJuIF9tbV9zZXRfZXBpNjQoX19xLCBfX3EpOwp9CgovLy8gSW5pdGlhbGl6ZXMgYWxsIHZhbHVlcyBpbiBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXSB3aXRoIHRoZQovLy8gICAgc3BlY2lmaWVkIDMyLWJpdCB2YWx1ZS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1dGlsaXR5IGZ1bmN0aW9uIGFuZCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lmaWMKLy8vICAgIGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2kKLy8vICAgIEEgMzItYml0IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgZWxlbWVudHMgb2YgdGhlIGRlc3RpbmF0aW9uIGludGVnZXIKLy8vICAgIHZlY3Rvci4KLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXSB3aXRoIGFsbCBlbGVtZW50cwovLy8gICAgY29udGFpbmluZyB0aGUgdmFsdWUgcHJvdmlkZWQgaW4gdGhlIG9wZXJhbmQuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zZXQxX2VwaTMyKGludCBfX2kpCnsKICByZXR1cm4gX21tX3NldF9lcGkzMihfX2ksIF9faSwgX19pLCBfX2kpOwp9CgovLy8gSW5pdGlhbGl6ZXMgYWxsIHZhbHVlcyBpbiBhIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XSB3aXRoIHRoZQovLy8gICAgc3BlY2lmaWVkIDE2LWJpdCB2YWx1ZS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1dGlsaXR5IGZ1bmN0aW9uIGFuZCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lmaWMKLy8vICAgIGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX3cKLy8vICAgIEEgMTYtYml0IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgZWxlbWVudHMgb2YgdGhlIGRlc3RpbmF0aW9uIGludGVnZXIKLy8vICAgIHZlY3Rvci4KLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XSB3aXRoIGFsbCBlbGVtZW50cwovLy8gICAgY29udGFpbmluZyB0aGUgdmFsdWUgcHJvdmlkZWQgaW4gdGhlIG9wZXJhbmQuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zZXQxX2VwaTE2KHNob3J0IF9fdykKewogIHJldHVybiBfbW1fc2V0X2VwaTE2KF9fdywgX193LCBfX3csIF9fdywgX193LCBfX3csIF9fdywgX193KTsKfQoKLy8vIEluaXRpYWxpemVzIGFsbCB2YWx1ZXMgaW4gYSAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0gd2l0aCB0aGUKLy8vICAgIHNwZWNpZmllZCA4LWJpdCB2YWx1ZS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1dGlsaXR5IGZ1bmN0aW9uIGFuZCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lmaWMKLy8vICAgIGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEFuIDgtYml0IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgZWxlbWVudHMgb2YgdGhlIGRlc3RpbmF0aW9uIGludGVnZXIKLy8vICAgIHZlY3Rvci4KLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XSB3aXRoIGFsbCBlbGVtZW50cwovLy8gICAgY29udGFpbmluZyB0aGUgdmFsdWUgcHJvdmlkZWQgaW4gdGhlIG9wZXJhbmQuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zZXQxX2VwaTgoY2hhciBfX2IpCnsKICByZXR1cm4gX21tX3NldF9lcGk4KF9fYiwgX19iLCBfX2IsIF9fYiwgX19iLCBfX2IsIF9fYiwgX19iLCBfX2IsIF9fYiwgX19iLCBfX2IsIF9fYiwgX19iLCBfX2IsIF9fYik7Cn0KCi8vLyBDb25zdHJ1Y3RzIGEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciwgaW5pdGlhbGl6ZWQgaW4gcmV2ZXJzZSBvcmRlcgovLy8gICAgIHdpdGggdGhlIHNwZWNpZmllZCA2NC1iaXQgaW50ZWdyYWwgdmFsdWVzLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lmaWMgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fcTAKLy8vICAgIEEgNjQtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgbG93ZXIgNjQgYml0cyBvZiB0aGUKLy8vICAgIHJlc3VsdC4KLy8vIFxwYXJhbSBfX3ExCi8vLyAgICBBIDY0LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgdGhlIHVwcGVyIDY0IGJpdHMgb2YgdGhlCi8vLyAgICByZXN1bHQuCi8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAxMjgtYml0IGludGVnZXIgdmVjdG9yLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc2V0cl9lcGk2NChfX202NCBfX3EwLCBfX202NCBfX3ExKQp7CiAgcmV0dXJuIF9tbV9zZXRfZXBpNjQoX19xMSwgX19xMCk7Cn0KCi8vLyBDb25zdHJ1Y3RzIGEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciwgaW5pdGlhbGl6ZWQgaW4gcmV2ZXJzZSBvcmRlcgovLy8gICAgIHdpdGggdGhlIHNwZWNpZmllZCAzMi1iaXQgaW50ZWdyYWwgdmFsdWVzLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBpcyBhIHV0aWxpdHkgZnVuY3Rpb24gYW5kIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBzcGVjaWZpYwovLy8gICAgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9faTAKLy8vICAgIEEgMzItYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFszMTowXSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9faTEKLy8vICAgIEEgMzItYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs2MzozMl0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2kyCi8vLyAgICBBIDMyLWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbOTU6NjRdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19pMwovLy8gICAgQSAzMi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzEyNzo5Nl0gb2YgdGhlIHJlc3VsdC4KLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zZXRyX2VwaTMyKGludCBfX2kwLCBpbnQgX19pMSwgaW50IF9faTIsIGludCBfX2kzKQp7CiAgcmV0dXJuIF9tbV9zZXRfZXBpMzIoX19pMywgX19pMiwgX19pMSwgX19pMCk7Cn0KCi8vLyBDb25zdHJ1Y3RzIGEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciwgaW5pdGlhbGl6ZWQgaW4gcmV2ZXJzZSBvcmRlcgovLy8gICAgIHdpdGggdGhlIHNwZWNpZmllZCAxNi1iaXQgaW50ZWdyYWwgdmFsdWVzLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBpcyBhIHV0aWxpdHkgZnVuY3Rpb24gYW5kIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBzcGVjaWZpYwovLy8gICAgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fdzAKLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxNTowXSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fdzEKLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFszMToxNl0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX3cyCi8vLyAgICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNDc6MzJdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX193MwovLy8gICAgQSAxNi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzYzOjQ4XSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fdzQKLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs3OTo2NF0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX3c1Ci8vLyAgICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbOTU6ODBdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX193NgovLy8gICAgQSAxNi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzExMTo5Nl0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX3c3Ci8vLyAgICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTI3OjExMl0gb2YgdGhlIHJlc3VsdC4KLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zZXRyX2VwaTE2KHNob3J0IF9fdzAsIHNob3J0IF9fdzEsIHNob3J0IF9fdzIsIHNob3J0IF9fdzMsIHNob3J0IF9fdzQsIHNob3J0IF9fdzUsIHNob3J0IF9fdzYsIHNob3J0IF9fdzcpCnsKICByZXR1cm4gX21tX3NldF9lcGkxNihfX3c3LCBfX3c2LCBfX3c1LCBfX3c0LCBfX3czLCBfX3cyLCBfX3cxLCBfX3cwKTsKfQoKLy8vIENvbnN0cnVjdHMgYSAxMjgtYml0IGludGVnZXIgdmVjdG9yLCBpbml0aWFsaXplZCBpbiByZXZlcnNlIG9yZGVyCi8vLyAgICAgd2l0aCB0aGUgc3BlY2lmaWVkIDgtYml0IGludGVncmFsIHZhbHVlcy4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1dGlsaXR5IGZ1bmN0aW9uIGFuZCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lmaWMKLy8vICAgIGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2IwCi8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNzowXSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fYjEKLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxNTo4XSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fYjIKLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsyMzoxNl0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2IzCi8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMzE6MjRdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19iNAovLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzM5OjMyXSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fYjUKLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs0Nzo0MF0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2I2Ci8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNTU6NDhdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19iNwovLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzYzOjU2XSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fYjgKLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs3MTo2NF0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2I5Ci8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNzk6NzJdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19iMTAKLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs4Nzo4MF0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2IxMQovLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzk1Ojg4XSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fYjEyCi8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTAzOjk2XSBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIF9fYjEzCi8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTExOjEwNF0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2IxNAovLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzExOToxMTJdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19iMTUKLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxMjc6MTIwXSBvZiB0aGUgcmVzdWx0LgovLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3NldHJfZXBpOChjaGFyIF9fYjAsIGNoYXIgX19iMSwgY2hhciBfX2IyLCBjaGFyIF9fYjMsIGNoYXIgX19iNCwgY2hhciBfX2I1LCBjaGFyIF9fYjYsIGNoYXIgX19iNywgY2hhciBfX2I4LCBjaGFyIF9fYjksIGNoYXIgX19iMTAsIGNoYXIgX19iMTEsIGNoYXIgX19iMTIsIGNoYXIgX19iMTMsIGNoYXIgX19iMTQsIGNoYXIgX19iMTUpCnsKICByZXR1cm4gX21tX3NldF9lcGk4KF9fYjE1LCBfX2IxNCwgX19iMTMsIF9fYjEyLCBfX2IxMSwgX19iMTAsIF9fYjksIF9fYjgsIF9fYjcsIF9fYjYsIF9fYjUsIF9fYjQsIF9fYjMsIF9fYjIsIF9fYjEsIF9fYjApOwp9CgovLy8gQ3JlYXRlcyBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgaW5pdGlhbGl6ZWQgdG8gemVyby4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWWE9SUFMgLyBYT1JQUyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igd2l0aCBhbGwgZWxlbWVudHMgc2V0IHRvCi8vLyAgICB6ZXJvLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc2V0emVyb19zaTEyOCh2b2lkKQp7CiAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOGkpKF9fdjJkaSl7IDBMTCwgMExMIH07Cn0KCi8vLyBTdG9yZXMgYSAxMjgtYml0IGludGVnZXIgdmVjdG9yIHRvIGEgbWVtb3J5IGxvY2F0aW9uIGFsaWduZWQgb24gYQovLy8gICAgMTI4LWJpdCBib3VuZGFyeS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WQVBTIC8gTU9WQVBTIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fcAovLy8gICAgQSBwb2ludGVyIHRvIGFuIGFsaWduZWQgbWVtb3J5IGxvY2F0aW9uIHRoYXQgd2lsbCByZWNlaXZlIHRoZSBpbnRlZ2VyCi8vLyAgICB2YWx1ZXMuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgdmFsdWVzIHRvIGJlIG1vdmVkLgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc3RvcmVfc2kxMjgoX19tMTI4aSAqX19wLCBfX20xMjhpIF9fYikKewogICpfX3AgPSBfX2I7Cn0KCi8vLyBTdG9yZXMgYSAxMjgtYml0IGludGVnZXIgdmVjdG9yIHRvIGFuIHVuYWxpZ25lZCBtZW1vcnkgbG9jYXRpb24uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVlVQUyAvIE1PVlVQUyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX3AKLy8vICAgIEEgcG9pbnRlciB0byBhIG1lbW9yeSBsb2NhdGlvbiB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUgaW50ZWdlciB2YWx1ZXMuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgdmFsdWVzIHRvIGJlIG1vdmVkLgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc3RvcmV1X3NpMTI4KF9fbTEyOGlfdSAqX19wLCBfX20xMjhpIF9fYikKewogIHN0cnVjdCBfX3N0b3JldV9zaTEyOCB7CiAgICBfX20xMjhpX3UgX192OwogIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOwogICgoc3RydWN0IF9fc3RvcmV1X3NpMTI4KilfX3ApLT5fX3YgPSBfX2I7Cn0KCi8vLyBTdG9yZXMgYSA2NC1iaXQgaW50ZWdlciB2YWx1ZSBmcm9tIHRoZSBsb3cgZWxlbWVudCBvZiBhIDEyOC1iaXQgaW50ZWdlcgovLy8gICAgdmVjdG9yLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZRIC8gTU9WUSA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX3AKLy8vICAgIEEgcG9pbnRlciB0byBhIDY0LWJpdCBtZW1vcnkgbG9jYXRpb24uIFRoZSBhZGRyZXNzIG9mIHRoZSBtZW1vcnkKLy8vICAgIGxvY2F0aW9uIGRvZXMgbm90IGhhdmUgdG8gYmUgYWxpZ25lZC4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSB2YWx1ZSB0byBiZSBzdG9yZWQuCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zdG9yZXVfc2k2NCh2b2lkICpfX3AsIF9fbTEyOGkgX19iKQp7CiAgc3RydWN0IF9fc3RvcmV1X3NpNjQgewogICAgbG9uZyBsb25nIF9fdjsKICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsKICAoKHN0cnVjdCBfX3N0b3JldV9zaTY0KilfX3ApLT5fX3YgPSAoKF9fdjJkaSlfX2IpWzBdOwp9CgovLy8gU3RvcmVzIGEgMzItYml0IGludGVnZXIgdmFsdWUgZnJvbSB0aGUgbG93IGVsZW1lbnQgb2YgYSAxMjgtYml0IGludGVnZXIKLy8vICAgIHZlY3Rvci4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WRCAvIE1PVkQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19wCi8vLyAgICBBIHBvaW50ZXIgdG8gYSAzMi1iaXQgbWVtb3J5IGxvY2F0aW9uLiBUaGUgYWRkcmVzcyBvZiB0aGUgbWVtb3J5Ci8vLyAgICBsb2NhdGlvbiBkb2VzIG5vdCBoYXZlIHRvIGJlIGFsaWduZWQuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgdmFsdWUgdG8gYmUgc3RvcmVkLgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc3RvcmV1X3NpMzIodm9pZCAqX19wLCBfX20xMjhpIF9fYikKewogIHN0cnVjdCBfX3N0b3JldV9zaTMyIHsKICAgIGludCBfX3Y7CiAgfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19fKSk7CiAgKChzdHJ1Y3QgX19zdG9yZXVfc2kzMiopX19wKS0+X192ID0gKChfX3Y0c2kpX19iKVswXTsKfQoKLy8vIFN0b3JlcyBhIDE2LWJpdCBpbnRlZ2VyIHZhbHVlIGZyb20gdGhlIGxvdyBlbGVtZW50IG9mIGEgMTI4LWJpdCBpbnRlZ2VyCi8vLyAgICB2ZWN0b3IuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBzcGVjaWZpYyBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19wCi8vLyAgICBBIHBvaW50ZXIgdG8gYSAxNi1iaXQgbWVtb3J5IGxvY2F0aW9uLiBUaGUgYWRkcmVzcyBvZiB0aGUgbWVtb3J5Ci8vLyAgICBsb2NhdGlvbiBkb2VzIG5vdCBoYXZlIHRvIGJlIGFsaWduZWQuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgdmFsdWUgdG8gYmUgc3RvcmVkLgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc3RvcmV1X3NpMTYodm9pZCAqX19wLCBfX20xMjhpIF9fYikKewogIHN0cnVjdCBfX3N0b3JldV9zaTE2IHsKICAgIHNob3J0IF9fdjsKICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsKICAoKHN0cnVjdCBfX3N0b3JldV9zaTE2KilfX3ApLT5fX3YgPSAoKF9fdjhoaSlfX2IpWzBdOwp9CgovLy8gTW92ZXMgYnl0ZXMgc2VsZWN0ZWQgYnkgdGhlIG1hc2sgZnJvbSB0aGUgZmlyc3Qgb3BlcmFuZCB0byB0aGUKLy8vICAgIHNwZWNpZmllZCB1bmFsaWduZWQgbWVtb3J5IGxvY2F0aW9uLiBXaGVuIGEgbWFzayBiaXQgaXMgMSwgdGhlCi8vLyAgICBjb3JyZXNwb25kaW5nIGJ5dGUgaXMgd3JpdHRlbiwgb3RoZXJ3aXNlIGl0IGlzIG5vdCB3cml0dGVuLgovLy8KLy8vICAgIFRvIG1pbmltaXplIGNhY2hpbmcsIHRoZSBkYXRhIGlzIGZsYWdnZWQgYXMgbm9uLXRlbXBvcmFsICh1bmxpa2VseSB0byBiZQovLy8gICAgdXNlZCBhZ2FpbiBzb29uKS4gRXhjZXB0aW9uIGFuZCB0cmFwIGJlaGF2aW9yIGZvciBlbGVtZW50cyBub3Qgc2VsZWN0ZWQKLy8vICAgIGZvciBzdG9yYWdlIHRvIG1lbW9yeSBhcmUgaW1wbGVtZW50YXRpb24gZGVwZW5kZW50LgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNQVNLTU9WRFFVIC8gTUFTS01PVkRRVSA8L2M+Ci8vLyAgIGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2QKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSB2YWx1ZXMgdG8gYmUgbW92ZWQuCi8vLyBccGFyYW0gX19uCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgbWFzay4gVGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0IG9mCi8vLyAgICBlYWNoIGJ5dGUgcmVwcmVzZW50cyB0aGUgbWFzayBiaXRzLgovLy8gXHBhcmFtIF9fcAovLy8gICAgQSBwb2ludGVyIHRvIGFuIHVuYWxpZ25lZCAxMjgtYml0IG1lbW9yeSBsb2NhdGlvbiB3aGVyZSB0aGUgc3BlY2lmaWVkCi8vLyAgICB2YWx1ZXMgYXJlIG1vdmVkLgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fbWFza21vdmV1X3NpMTI4KF9fbTEyOGkgX19kLCBfX20xMjhpIF9fbiwgY2hhciAqX19wKQp7CiAgX19idWlsdGluX2lhMzJfbWFza21vdmRxdSgoX192MTZxaSlfX2QsIChfX3YxNnFpKV9fbiwgX19wKTsKfQoKLy8vIFN0b3JlcyB0aGUgbG93ZXIgNjQgYml0cyBvZiBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpNjRdIHRvCi8vLyAgICBhIG1lbW9yeSBsb2NhdGlvbi4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WTFBTIC8gTU9WTFBTIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fcAovLy8gICAgQSBwb2ludGVyIHRvIGEgNjQtYml0IG1lbW9yeSBsb2NhdGlvbiB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUgbG93ZXIgNjQgYml0cwovLy8gICAgb2YgdGhlIGludGVnZXIgdmVjdG9yIHBhcmFtZXRlci4KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGk2NF0uIFRoZSBsb3dlciA2NCBiaXRzIGNvbnRhaW4gdGhlCi8vLyAgICB2YWx1ZSB0byBiZSBzdG9yZWQuCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zdG9yZWxfZXBpNjQoX19tMTI4aV91ICpfX3AsIF9fbTEyOGkgX19hKQp7CiAgc3RydWN0IF9fbW1fc3RvcmVsX2VwaTY0X3N0cnVjdCB7CiAgICBsb25nIGxvbmcgX191OwogIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOwogICgoc3RydWN0IF9fbW1fc3RvcmVsX2VwaTY0X3N0cnVjdCopX19wKS0+X191ID0gX19hWzBdOwp9CgovLy8gU3RvcmVzIGEgMTI4LWJpdCBmbG9hdGluZyBwb2ludCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIHRvIGEgMTI4LWJpdAovLy8gICAgYWxpZ25lZCBtZW1vcnkgbG9jYXRpb24uCi8vLwovLy8gICAgVG8gbWluaW1pemUgY2FjaGluZywgdGhlIGRhdGEgaXMgZmxhZ2dlZCBhcyBub24tdGVtcG9yYWwgKHVubGlrZWx5IHRvIGJlCi8vLyAgICB1c2VkIGFnYWluIHNvb24pLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZOVFBTIC8gTU9WTlRQUyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX3AKLy8vICAgIEEgcG9pbnRlciB0byB0aGUgMTI4LWJpdCBhbGlnbmVkIG1lbW9yeSBsb2NhdGlvbiB1c2VkIHRvIHN0b3JlIHRoZSB2YWx1ZS4KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSA2NC1iaXQgdmFsdWVzIHRvIGJlIHN0b3JlZC4Kc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3N0cmVhbV9wZChkb3VibGUgKl9fcCwgX19tMTI4ZCBfX2EpCnsKICBfX2J1aWx0aW5fbm9udGVtcG9yYWxfc3RvcmUoKF9fdjJkZilfX2EsIChfX3YyZGYqKV9fcCk7Cn0KCi8vLyBTdG9yZXMgYSAxMjgtYml0IGludGVnZXIgdmVjdG9yIHRvIGEgMTI4LWJpdCBhbGlnbmVkIG1lbW9yeSBsb2NhdGlvbi4KLy8vCi8vLyAgICBUbyBtaW5pbWl6ZSBjYWNoaW5nLCB0aGUgZGF0YSBpcyBmbGFnZ2VkIGFzIG5vbi10ZW1wb3JhbCAodW5saWtlbHkgdG8gYmUKLy8vICAgIHVzZWQgYWdhaW4gc29vbikuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVk5UUFMgLyBNT1ZOVFBTIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fcAovLy8gICAgQSBwb2ludGVyIHRvIHRoZSAxMjgtYml0IGFsaWduZWQgbWVtb3J5IGxvY2F0aW9uIHVzZWQgdG8gc3RvcmUgdGhlIHZhbHVlLgovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHZhbHVlcyB0byBiZSBzdG9yZWQuCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zdHJlYW1fc2kxMjgoX19tMTI4aSAqX19wLCBfX20xMjhpIF9fYSkKewogIF9fYnVpbHRpbl9ub250ZW1wb3JhbF9zdG9yZSgoX192MmRpKV9fYSwgKF9fdjJkaSopX19wKTsKfQoKLy8vIFN0b3JlcyBhIDMyLWJpdCBpbnRlZ2VyIHZhbHVlIGluIHRoZSBzcGVjaWZpZWQgbWVtb3J5IGxvY2F0aW9uLgovLy8KLy8vICAgIFRvIG1pbmltaXplIGNhY2hpbmcsIHRoZSBkYXRhIGlzIGZsYWdnZWQgYXMgbm9uLXRlbXBvcmFsICh1bmxpa2VseSB0byBiZQovLy8gICAgdXNlZCBhZ2FpbiBzb29uKS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBNT1ZOVEkgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19wCi8vLyAgICBBIHBvaW50ZXIgdG8gdGhlIDMyLWJpdCBtZW1vcnkgbG9jYXRpb24gdXNlZCB0byBzdG9yZSB0aGUgdmFsdWUuCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDMyLWJpdCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIHZhbHVlIHRvIGJlIHN0b3JlZC4Kc3RhdGljIF9faW5saW5lX18gdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oInNzZTIiKSkpCl9tbV9zdHJlYW1fc2kzMihpbnQgKl9fcCwgaW50IF9fYSkKewogIF9fYnVpbHRpbl9pYTMyX21vdm50aShfX3AsIF9fYSk7Cn0KCiNpZmRlZiBfX3g4Nl82NF9fCi8vLyBTdG9yZXMgYSA2NC1iaXQgaW50ZWdlciB2YWx1ZSBpbiB0aGUgc3BlY2lmaWVkIG1lbW9yeSBsb2NhdGlvbi4KLy8vCi8vLyAgICBUbyBtaW5pbWl6ZSBjYWNoaW5nLCB0aGUgZGF0YSBpcyBmbGFnZ2VkIGFzIG5vbi10ZW1wb3JhbCAodW5saWtlbHkgdG8gYmUKLy8vICAgIHVzZWQgYWdhaW4gc29vbikuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gTU9WTlRJUSA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX3AKLy8vICAgIEEgcG9pbnRlciB0byB0aGUgNjQtYml0IG1lbW9yeSBsb2NhdGlvbiB1c2VkIHRvIHN0b3JlIHRoZSB2YWx1ZS4KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgNjQtYml0IGludGVnZXIgY29udGFpbmluZyB0aGUgdmFsdWUgdG8gYmUgc3RvcmVkLgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygic3NlMiIpKSkKX21tX3N0cmVhbV9zaTY0KGxvbmcgbG9uZyAqX19wLCBsb25nIGxvbmcgX19hKQp7CiAgX19idWlsdGluX2lhMzJfbW92bnRpNjQoX19wLCBfX2EpOwp9CiNlbmRpZgoKI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpCmV4dGVybiAiQyIgewojZW5kaWYKCi8vLyBUaGUgY2FjaGUgbGluZSBjb250YWluaW5nIFxhIF9fcCBpcyBmbHVzaGVkIGFuZCBpbnZhbGlkYXRlZCBmcm9tIGFsbAovLy8gICAgY2FjaGVzIGluIHRoZSBjb2hlcmVuY3kgZG9tYWluLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IENMRkxVU0ggPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19wCi8vLyAgICBBIHBvaW50ZXIgdG8gdGhlIG1lbW9yeSBsb2NhdGlvbiB1c2VkIHRvIGlkZW50aWZ5IHRoZSBjYWNoZSBsaW5lIHRvIGJlCi8vLyAgICBmbHVzaGVkLgp2b2lkIF9tbV9jbGZsdXNoKHZvaWQgY29uc3QgKiBfX3ApOwoKLy8vIEZvcmNlcyBzdHJvbmcgbWVtb3J5IG9yZGVyaW5nIChzZXJpYWxpemF0aW9uKSBiZXR3ZWVuIGxvYWQKLy8vICAgIGluc3RydWN0aW9ucyBwcmVjZWRpbmcgdGhpcyBpbnN0cnVjdGlvbiBhbmQgbG9hZCBpbnN0cnVjdGlvbnMgZm9sbG93aW5nCi8vLyAgICB0aGlzIGluc3RydWN0aW9uLCBlbnN1cmluZyB0aGUgc3lzdGVtIGNvbXBsZXRlcyBhbGwgcHJldmlvdXMgbG9hZHMgYmVmb3JlCi8vLyAgICBleGVjdXRpbmcgc3Vic2VxdWVudCBsb2Fkcy4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBMRkVOQ0UgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCnZvaWQgX21tX2xmZW5jZSh2b2lkKTsKCi8vLyBGb3JjZXMgc3Ryb25nIG1lbW9yeSBvcmRlcmluZyAoc2VyaWFsaXphdGlvbikgYmV0d2VlbiBsb2FkIGFuZCBzdG9yZQovLy8gICAgaW5zdHJ1Y3Rpb25zIHByZWNlZGluZyB0aGlzIGluc3RydWN0aW9uIGFuZCBsb2FkIGFuZCBzdG9yZSBpbnN0cnVjdGlvbnMKLy8vICAgIGZvbGxvd2luZyB0aGlzIGluc3RydWN0aW9uLCBlbnN1cmluZyB0aGF0IHRoZSBzeXN0ZW0gY29tcGxldGVzIGFsbAovLy8gICAgcHJldmlvdXMgbWVtb3J5IGFjY2Vzc2VzIGJlZm9yZSBleGVjdXRpbmcgc3Vic2VxdWVudCBtZW1vcnkgYWNjZXNzZXMuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gTUZFTkNFIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwp2b2lkIF9tbV9tZmVuY2Uodm9pZCk7CgojaWYgZGVmaW5lZChfX2NwbHVzcGx1cykKfSAvLyBleHRlcm4gIkMiCiNlbmRpZgoKLy8vIENvbnZlcnRzIDE2LWJpdCBzaWduZWQgaW50ZWdlcnMgZnJvbSBib3RoIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IKLy8vICAgIG9wZXJhbmRzIGludG8gOC1iaXQgc2lnbmVkIGludGVnZXJzLCBhbmQgcGFja3MgdGhlIHJlc3VsdHMgaW50byB0aGUKLy8vICAgIGRlc3RpbmF0aW9uLiBQb3NpdGl2ZSB2YWx1ZXMgZ3JlYXRlciB0aGFuIDB4N0YgYXJlIHNhdHVyYXRlZCB0byAweDdGLgovLy8gICAgTmVnYXRpdmUgdmFsdWVzIGxlc3MgdGhhbiAweDgwIGFyZSBzYXR1cmF0ZWQgdG8gMHg4MC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEFDS1NTV0IgLyBQQUNLU1NXQiA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaTE2XS4gRWFjaCAxNi1iaXQgZWxlbWVudCBpcyB0cmVhdGVkIGFzCi8vLyAgIGEgc2lnbmVkIGludGVnZXIgYW5kIGlzIGNvbnZlcnRlZCB0byBhIDgtYml0IHNpZ25lZCBpbnRlZ2VyIHdpdGgKLy8vICAgc2F0dXJhdGlvbi4gVmFsdWVzIGdyZWF0ZXIgdGhhbiAweDdGIGFyZSBzYXR1cmF0ZWQgdG8gMHg3Ri4gVmFsdWVzIGxlc3MKLy8vICAgdGhhbiAweDgwIGFyZSBzYXR1cmF0ZWQgdG8gMHg4MC4gVGhlIGNvbnZlcnRlZCBbOCB4IGk4XSB2YWx1ZXMgYXJlCi8vLyAgIHdyaXR0ZW4gdG8gdGhlIGxvd2VyIDY0IGJpdHMgb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2IKLy8vICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaTE2XS4gRWFjaCAxNi1iaXQgZWxlbWVudCBpcyB0cmVhdGVkIGFzCi8vLyAgIGEgc2lnbmVkIGludGVnZXIgYW5kIGlzIGNvbnZlcnRlZCB0byBhIDgtYml0IHNpZ25lZCBpbnRlZ2VyIHdpdGgKLy8vICAgc2F0dXJhdGlvbi4gVmFsdWVzIGdyZWF0ZXIgdGhhbiAweDdGIGFyZSBzYXR1cmF0ZWQgdG8gMHg3Ri4gVmFsdWVzIGxlc3MKLy8vICAgdGhhbiAweDgwIGFyZSBzYXR1cmF0ZWQgdG8gMHg4MC4gVGhlIGNvbnZlcnRlZCBbOCB4IGk4XSB2YWx1ZXMgYXJlCi8vLyAgIHdyaXR0ZW4gdG8gdGhlIGhpZ2hlciA2NCBiaXRzIG9mIHRoZSByZXN1bHQuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XSBjb250YWluaW5nIHRoZSBjb252ZXJ0ZWQgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fcGFja3NfZXBpMTYoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BhY2tzc3diMTI4KChfX3Y4aGkpX19hLCAoX192OGhpKV9fYik7Cn0KCi8vLyBDb252ZXJ0cyAzMi1iaXQgc2lnbmVkIGludGVnZXJzIGZyb20gYm90aCAxMjgtYml0IGludGVnZXIgdmVjdG9yCi8vLyAgICBvcGVyYW5kcyBpbnRvIDE2LWJpdCBzaWduZWQgaW50ZWdlcnMsIGFuZCBwYWNrcyB0aGUgcmVzdWx0cyBpbnRvIHRoZQovLy8gICAgZGVzdGluYXRpb24uIFBvc2l0aXZlIHZhbHVlcyBncmVhdGVyIHRoYW4gMHg3RkZGIGFyZSBzYXR1cmF0ZWQgdG8gMHg3RkZGLgovLy8gICAgTmVnYXRpdmUgdmFsdWVzIGxlc3MgdGhhbiAweDgwMDAgYXJlIHNhdHVyYXRlZCB0byAweDgwMDAuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBBQ0tTU0RXIC8gUEFDS1NTRFcgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMzJdLiBFYWNoIDMyLWJpdCBlbGVtZW50IGlzIHRyZWF0ZWQgYXMKLy8vICAgIGEgc2lnbmVkIGludGVnZXIgYW5kIGlzIGNvbnZlcnRlZCB0byBhIDE2LWJpdCBzaWduZWQgaW50ZWdlciB3aXRoCi8vLyAgICBzYXR1cmF0aW9uLiBWYWx1ZXMgZ3JlYXRlciB0aGFuIDB4N0ZGRiBhcmUgc2F0dXJhdGVkIHRvIDB4N0ZGRi4gVmFsdWVzCi8vLyAgICBsZXNzIHRoYW4gMHg4MDAwIGFyZSBzYXR1cmF0ZWQgdG8gMHg4MDAwLiBUaGUgY29udmVydGVkIFs0IHggaTE2XSB2YWx1ZXMKLy8vICAgIGFyZSB3cml0dGVuIHRvIHRoZSBsb3dlciA2NCBiaXRzIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMzJdLiBFYWNoIDMyLWJpdCBlbGVtZW50IGlzIHRyZWF0ZWQgYXMKLy8vICAgIGEgc2lnbmVkIGludGVnZXIgYW5kIGlzIGNvbnZlcnRlZCB0byBhIDE2LWJpdCBzaWduZWQgaW50ZWdlciB3aXRoCi8vLyAgICBzYXR1cmF0aW9uLiBWYWx1ZXMgZ3JlYXRlciB0aGFuIDB4N0ZGRiBhcmUgc2F0dXJhdGVkIHRvIDB4N0ZGRi4gVmFsdWVzCi8vLyAgICBsZXNzIHRoYW4gMHg4MDAwIGFyZSBzYXR1cmF0ZWQgdG8gMHg4MDAwLiBUaGUgY29udmVydGVkIFs0IHggaTE2XSB2YWx1ZXMKLy8vICAgIGFyZSB3cml0dGVuIHRvIHRoZSBoaWdoZXIgNjQgYml0cyBvZiB0aGUgcmVzdWx0LgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGkxNl0gY29udGFpbmluZyB0aGUgY29udmVydGVkIHZhbHVlcy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3BhY2tzX2VwaTMyKF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wYWNrc3NkdzEyOCgoX192NHNpKV9fYSwgKF9fdjRzaSlfX2IpOwp9CgovLy8gQ29udmVydHMgMTYtYml0IHNpZ25lZCBpbnRlZ2VycyBmcm9tIGJvdGggMTI4LWJpdCBpbnRlZ2VyIHZlY3RvcgovLy8gICAgb3BlcmFuZHMgaW50byA4LWJpdCB1bnNpZ25lZCBpbnRlZ2VycywgYW5kIHBhY2tzIHRoZSByZXN1bHRzIGludG8gdGhlCi8vLyAgICBkZXN0aW5hdGlvbi4gVmFsdWVzIGdyZWF0ZXIgdGhhbiAweEZGIGFyZSBzYXR1cmF0ZWQgdG8gMHhGRi4gVmFsdWVzIGxlc3MKLy8vICAgIHRoYW4gMHgwMCBhcmUgc2F0dXJhdGVkIHRvIDB4MDAuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBBQ0tVU1dCIC8gUEFDS1VTV0IgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpMTZdLiBFYWNoIDE2LWJpdCBlbGVtZW50IGlzIHRyZWF0ZWQgYXMKLy8vICAgIGEgc2lnbmVkIGludGVnZXIgYW5kIGlzIGNvbnZlcnRlZCB0byBhbiA4LWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHdpdGgKLy8vICAgIHNhdHVyYXRpb24uIFZhbHVlcyBncmVhdGVyIHRoYW4gMHhGRiBhcmUgc2F0dXJhdGVkIHRvIDB4RkYuIFZhbHVlcyBsZXNzCi8vLyAgICB0aGFuIDB4MDAgYXJlIHNhdHVyYXRlZCB0byAweDAwLiBUaGUgY29udmVydGVkIFs4IHggaThdIHZhbHVlcyBhcmUKLy8vICAgIHdyaXR0ZW4gdG8gdGhlIGxvd2VyIDY0IGJpdHMgb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGkxNl0uIEVhY2ggMTYtYml0IGVsZW1lbnQgaXMgdHJlYXRlZCBhcwovLy8gICAgYSBzaWduZWQgaW50ZWdlciBhbmQgaXMgY29udmVydGVkIHRvIGFuIDgtYml0IHVuc2lnbmVkIGludGVnZXIgd2l0aAovLy8gICAgc2F0dXJhdGlvbi4gVmFsdWVzIGdyZWF0ZXIgdGhhbiAweEZGIGFyZSBzYXR1cmF0ZWQgdG8gMHhGRi4gVmFsdWVzIGxlc3MKLy8vICAgIHRoYW4gMHgwMCBhcmUgc2F0dXJhdGVkIHRvIDB4MDAuIFRoZSBjb252ZXJ0ZWQgWzggeCBpOF0gdmFsdWVzIGFyZQovLy8gICAgd3JpdHRlbiB0byB0aGUgaGlnaGVyIDY0IGJpdHMgb2YgdGhlIHJlc3VsdC4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThdIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRlZCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9wYWNrdXNfZXBpMTYoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BhY2t1c3diMTI4KChfX3Y4aGkpX19hLCAoX192OGhpKV9fYik7Cn0KCi8vLyBFeHRyYWN0cyAxNiBiaXRzIGZyb20gYSAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaTE2XSwgdXNpbmcKLy8vICAgIHRoZSBpbW1lZGlhdGUtdmFsdWUgcGFyYW1ldGVyIGFzIGEgc2VsZWN0b3IuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBFWFRSVyAvIFBFWFRSVyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4KLy8vIFxwYXJhbSBfX2ltbQovLy8gICAgQW4gaW1tZWRpYXRlIHZhbHVlLiBCaXRzIFsyOjBdIHNlbGVjdHMgdmFsdWVzIGZyb20gXGEgX19hIHRvIGJlIGFzc2lnbmVkCi8vLyAgICB0byBiaXRzWzE1OjBdIG9mIHRoZSByZXN1bHQuIFxuCi8vLyAgICAwMDA6IGFzc2lnbiB2YWx1ZXMgZnJvbSBiaXRzIFsxNTowXSBvZiBcYSBfX2EuIFxuCi8vLyAgICAwMDE6IGFzc2lnbiB2YWx1ZXMgZnJvbSBiaXRzIFszMToxNl0gb2YgXGEgX19hLiBcbgovLy8gICAgMDEwOiBhc3NpZ24gdmFsdWVzIGZyb20gYml0cyBbNDc6MzJdIG9mIFxhIF9fYS4gXG4KLy8vICAgIDAxMTogYXNzaWduIHZhbHVlcyBmcm9tIGJpdHMgWzYzOjQ4XSBvZiBcYSBfX2EuIFxuCi8vLyAgICAxMDA6IGFzc2lnbiB2YWx1ZXMgZnJvbSBiaXRzIFs3OTo2NF0gb2YgXGEgX19hLiBcbgovLy8gICAgMTAxOiBhc3NpZ24gdmFsdWVzIGZyb20gYml0cyBbOTU6ODBdIG9mIFxhIF9fYS4gXG4KLy8vICAgIDExMDogYXNzaWduIHZhbHVlcyBmcm9tIGJpdHMgWzExMTo5Nl0gb2YgXGEgX19hLiBcbgovLy8gICAgMTExOiBhc3NpZ24gdmFsdWVzIGZyb20gYml0cyBbMTI3OjExMl0gb2YgXGEgX19hLgovLy8gXHJldHVybnMgQW4gaW50ZWdlciwgd2hvc2UgbG93ZXIgMTYgYml0cyBhcmUgc2VsZWN0ZWQgZnJvbSB0aGUgMTI4LWJpdAovLy8gICAgaW50ZWdlciB2ZWN0b3IgcGFyYW1ldGVyIGFuZCB0aGUgcmVtYWluaW5nIGJpdHMgYXJlIGFzc2lnbmVkIHplcm9zLgojZGVmaW5lIF9tbV9leHRyYWN0X2VwaTE2KGEsIGltbSkgXAogICgoaW50KSh1bnNpZ25lZCBzaG9ydClfX2J1aWx0aW5faWEzMl92ZWNfZXh0X3Y4aGkoKF9fdjhoaSkoX19tMTI4aSkoYSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKGltbSkpKQoKLy8vIENvbnN0cnVjdHMgYSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGJ5IGZpcnN0IG1ha2luZyBhIGNvcHkgb2YgdGhlCi8vLyAgICAxMjgtYml0IGludGVnZXIgdmVjdG9yIHBhcmFtZXRlciwgYW5kIHRoZW4gaW5zZXJ0aW5nIHRoZSBsb3dlciAxNiBiaXRzCi8vLyAgICBvZiBhbiBpbnRlZ2VyIHBhcmFtZXRlciBpbnRvIGFuIG9mZnNldCBzcGVjaWZpZWQgYnkgdGhlIGltbWVkaWF0ZS12YWx1ZQovLy8gICAgcGFyYW1ldGVyLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQSU5TUlcgLyBQSU5TUlcgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpMTZdLiBUaGlzIHZlY3RvciBpcyBjb3BpZWQgdG8gdGhlCi8vLyAgICByZXN1bHQgYW5kIHRoZW4gb25lIG9mIHRoZSBlaWdodCBlbGVtZW50cyBpbiB0aGUgcmVzdWx0IGlzIHJlcGxhY2VkIGJ5Ci8vLyAgICB0aGUgbG93ZXIgMTYgYml0cyBvZiBcYSBfX2IuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBbiBpbnRlZ2VyLiBUaGUgbG93ZXIgMTYgYml0cyBvZiB0aGlzIHBhcmFtZXRlciBhcmUgd3JpdHRlbiB0byB0aGUKLy8vICAgIHJlc3VsdCBiZWdpbm5pbmcgYXQgYW4gb2Zmc2V0IHNwZWNpZmllZCBieSBcYSBfX2ltbS4KLy8vIFxwYXJhbSBfX2ltbQovLy8gICAgQW4gaW1tZWRpYXRlIHZhbHVlIHNwZWNpZnlpbmcgdGhlIGJpdCBvZmZzZXQgaW4gdGhlIHJlc3VsdCBhdCB3aGljaCB0aGUKLy8vICAgIGxvd2VyIDE2IGJpdHMgb2YgXGEgX19iIGFyZSB3cml0dGVuLgovLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbnN0cnVjdGVkIHZhbHVlcy4KI2RlZmluZSBfbW1faW5zZXJ0X2VwaTE2KGEsIGIsIGltbSkgXAogICgoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92ZWNfc2V0X3Y4aGkoKF9fdjhoaSkoX19tMTI4aSkoYSksIChpbnQpKGIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShpbW0pKSkKCi8vLyBDb3BpZXMgdGhlIHZhbHVlcyBvZiB0aGUgbW9zdCBzaWduaWZpY2FudCBiaXRzIGZyb20gZWFjaCA4LWJpdAovLy8gICAgZWxlbWVudCBpbiBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzE2IHggaThdIHRvIGNyZWF0ZSBhIDE2LWJpdCBtYXNrCi8vLyAgICB2YWx1ZSwgemVyby1leHRlbmRzIHRoZSB2YWx1ZSwgYW5kIHdyaXRlcyBpdCB0byB0aGUgZGVzdGluYXRpb24uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBNT1ZNU0tCIC8gUE1PVk1TS0IgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgdmFsdWVzIHdpdGggYml0cyB0byBiZSBleHRyYWN0ZWQuCi8vLyBccmV0dXJucyBUaGUgbW9zdCBzaWduaWZpY2FudCBiaXRzIGZyb20gZWFjaCA4LWJpdCBlbGVtZW50IGluIFxhIF9fYSwKLy8vICAgIHdyaXR0ZW4gdG8gYml0cyBbMTU6MF0uIFRoZSBvdGhlciBiaXRzIGFyZSBhc3NpZ25lZCB6ZXJvcy4Kc3RhdGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fbW92ZW1hc2tfZXBpOChfX20xMjhpIF9fYSkKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9wbW92bXNrYjEyOCgoX192MTZxaSlfX2EpOwp9CgovLy8gQ29uc3RydWN0cyBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgYnkgc2h1ZmZsaW5nIGZvdXIgMzItYml0Ci8vLyAgICBlbGVtZW50cyBvZiBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgcGFyYW1ldGVyLCB1c2luZyB0aGUgaW1tZWRpYXRlLXZhbHVlCi8vLyAgICBwYXJhbWV0ZXIgYXMgYSBzcGVjaWZpZXIuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFxjb2RlCi8vLyBfX20xMjhpIF9tbV9zaHVmZmxlX2VwaTMyKF9fbTEyOGkgYSwgY29uc3QgaW50IGltbSk7Ci8vLyBcZW5kY29kZQovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBTSFVGRCAvIFBTSFVGRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBhCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgdmFsdWVzIHRvIGJlIGNvcGllZC4KLy8vIFxwYXJhbSBpbW0KLy8vICAgIEFuIGltbWVkaWF0ZSB2YWx1ZSBjb250YWluaW5nIGFuIDgtYml0IHZhbHVlIHNwZWNpZnlpbmcgd2hpY2ggZWxlbWVudHMgdG8KLy8vICAgIGNvcHkgZnJvbSBhLiBUaGUgZGVzdGluYXRpb25zIHdpdGhpbiB0aGUgMTI4LWJpdCBkZXN0aW5hdGlvbiBhcmUgYXNzaWduZWQKLy8vICAgIHZhbHVlcyBhcyBmb2xsb3dzOiBcbgovLy8gICAgQml0cyBbMTowXSBhcmUgdXNlZCB0byBhc3NpZ24gdmFsdWVzIHRvIGJpdHMgWzMxOjBdIG9mIHRoZSByZXN1bHQuIFxuCi8vLyAgICBCaXRzIFszOjJdIGFyZSB1c2VkIHRvIGFzc2lnbiB2YWx1ZXMgdG8gYml0cyBbNjM6MzJdIG9mIHRoZSByZXN1bHQuIFxuCi8vLyAgICBCaXRzIFs1OjRdIGFyZSB1c2VkIHRvIGFzc2lnbiB2YWx1ZXMgdG8gYml0cyBbOTU6NjRdIG9mIHRoZSByZXN1bHQuIFxuCi8vLyAgICBCaXRzIFs3OjZdIGFyZSB1c2VkIHRvIGFzc2lnbiB2YWx1ZXMgdG8gYml0cyBbMTI3Ojk2XSBvZiB0aGUgcmVzdWx0LiBcbgovLy8gICAgQml0IHZhbHVlIGFzc2lnbm1lbnRzOiBcbgovLy8gICAgMDA6IGFzc2lnbiB2YWx1ZXMgZnJvbSBiaXRzIFszMTowXSBvZiBcYSBhLiBcbgovLy8gICAgMDE6IGFzc2lnbiB2YWx1ZXMgZnJvbSBiaXRzIFs2MzozMl0gb2YgXGEgYS4gXG4KLy8vICAgIDEwOiBhc3NpZ24gdmFsdWVzIGZyb20gYml0cyBbOTU6NjRdIG9mIFxhIGEuIFxuCi8vLyAgICAxMTogYXNzaWduIHZhbHVlcyBmcm9tIGJpdHMgWzEyNzo5Nl0gb2YgXGEgYS4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBzaHVmZmxlZCB2YWx1ZXMuCiNkZWZpbmUgX21tX3NodWZmbGVfZXBpMzIoYSwgaW1tKSBcCiAgKChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzaHVmZCgoX192NHNpKShfX20xMjhpKShhKSwgKGludCkoaW1tKSkpCgovLy8gQ29uc3RydWN0cyBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgYnkgc2h1ZmZsaW5nIGZvdXIgbG93ZXIgMTYtYml0Ci8vLyAgICBlbGVtZW50cyBvZiBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpMTZdLCB1c2luZyB0aGUgaW1tZWRpYXRlCi8vLyAgICB2YWx1ZSBwYXJhbWV0ZXIgYXMgYSBzcGVjaWZpZXIuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFxjb2RlCi8vLyBfX20xMjhpIF9tbV9zaHVmZmxlbG9fZXBpMTYoX19tMTI4aSBhLCBjb25zdCBpbnQgaW1tKTsKLy8vIFxlbmRjb2RlCi8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFNIVUZMVyAvIFBTSFVGTFcgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gYQovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaTE2XS4gQml0cyBbMTI3OjY0XSBhcmUgY29waWVkIHRvIGJpdHMKLy8vICAgIFsxMjc6NjRdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gaW1tCi8vLyAgICBBbiA4LWJpdCBpbW1lZGlhdGUgdmFsdWUgc3BlY2lmeWluZyB3aGljaCBlbGVtZW50cyB0byBjb3B5IGZyb20gXGEgYS4gXG4KLy8vICAgIEJpdHNbMTowXSBhcmUgdXNlZCB0byBhc3NpZ24gdmFsdWVzIHRvIGJpdHMgWzE1OjBdIG9mIHRoZSByZXN1bHQuIFxuCi8vLyAgICBCaXRzWzM6Ml0gYXJlIHVzZWQgdG8gYXNzaWduIHZhbHVlcyB0byBiaXRzIFszMToxNl0gb2YgdGhlIHJlc3VsdC4gXG4KLy8vICAgIEJpdHNbNTo0XSBhcmUgdXNlZCB0byBhc3NpZ24gdmFsdWVzIHRvIGJpdHMgWzQ3OjMyXSBvZiB0aGUgcmVzdWx0LiBcbgovLy8gICAgQml0c1s3OjZdIGFyZSB1c2VkIHRvIGFzc2lnbiB2YWx1ZXMgdG8gYml0cyBbNjM6NDhdIG9mIHRoZSByZXN1bHQuIFxuCi8vLyAgICBCaXQgdmFsdWUgYXNzaWdubWVudHM6IFxuCi8vLyAgICAwMDogYXNzaWduIHZhbHVlcyBmcm9tIGJpdHMgWzE1OjBdIG9mIFxhIGEuIFxuCi8vLyAgICAwMTogYXNzaWduIHZhbHVlcyBmcm9tIGJpdHMgWzMxOjE2XSBvZiBcYSBhLiBcbgovLy8gICAgMTA6IGFzc2lnbiB2YWx1ZXMgZnJvbSBiaXRzIFs0NzozMl0gb2YgXGEgYS4gXG4KLy8vICAgIDExOiBhc3NpZ24gdmFsdWVzIGZyb20gYml0cyBbNjM6NDhdIG9mIFxhIGEuIFxuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgc2h1ZmZsZWQgdmFsdWVzLgojZGVmaW5lIF9tbV9zaHVmZmxlbG9fZXBpMTYoYSwgaW1tKSBcCiAgKChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzaHVmbHcoKF9fdjhoaSkoX19tMTI4aSkoYSksIChpbnQpKGltbSkpKQoKLy8vIENvbnN0cnVjdHMgYSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGJ5IHNodWZmbGluZyBmb3VyIHVwcGVyIDE2LWJpdAovLy8gICAgZWxlbWVudHMgb2YgYSAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaTE2XSwgdXNpbmcgdGhlIGltbWVkaWF0ZQovLy8gICAgdmFsdWUgcGFyYW1ldGVyIGFzIGEgc3BlY2lmaWVyLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBcY29kZQovLy8gX19tMTI4aSBfbW1fc2h1ZmZsZWhpX2VwaTE2KF9fbTEyOGkgYSwgY29uc3QgaW50IGltbSk7Ci8vLyBcZW5kY29kZQovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBTSFVGSFcgLyBQU0hVRkhXIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIGEKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGkxNl0uIEJpdHMgWzYzOjBdIGFyZSBjb3BpZWQgdG8gYml0cwovLy8gICAgWzYzOjBdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gaW1tCi8vLyAgICBBbiA4LWJpdCBpbW1lZGlhdGUgdmFsdWUgc3BlY2lmeWluZyB3aGljaCBlbGVtZW50cyB0byBjb3B5IGZyb20gXGEgYS4gXG4KLy8vICAgIEJpdHNbMTowXSBhcmUgdXNlZCB0byBhc3NpZ24gdmFsdWVzIHRvIGJpdHMgWzc5OjY0XSBvZiB0aGUgcmVzdWx0LiBcbgovLy8gICAgQml0c1szOjJdIGFyZSB1c2VkIHRvIGFzc2lnbiB2YWx1ZXMgdG8gYml0cyBbOTU6ODBdIG9mIHRoZSByZXN1bHQuIFxuCi8vLyAgICBCaXRzWzU6NF0gYXJlIHVzZWQgdG8gYXNzaWduIHZhbHVlcyB0byBiaXRzIFsxMTE6OTZdIG9mIHRoZSByZXN1bHQuIFxuCi8vLyAgICBCaXRzWzc6Nl0gYXJlIHVzZWQgdG8gYXNzaWduIHZhbHVlcyB0byBiaXRzIFsxMjc6MTEyXSBvZiB0aGUgcmVzdWx0LiBcbgovLy8gICAgQml0IHZhbHVlIGFzc2lnbm1lbnRzOiBcbgovLy8gICAgMDA6IGFzc2lnbiB2YWx1ZXMgZnJvbSBiaXRzIFs3OTo2NF0gb2YgXGEgYS4gXG4KLy8vICAgIDAxOiBhc3NpZ24gdmFsdWVzIGZyb20gYml0cyBbOTU6ODBdIG9mIFxhIGEuIFxuCi8vLyAgICAxMDogYXNzaWduIHZhbHVlcyBmcm9tIGJpdHMgWzExMTo5Nl0gb2YgXGEgYS4gXG4KLy8vICAgIDExOiBhc3NpZ24gdmFsdWVzIGZyb20gYml0cyBbMTI3OjExMl0gb2YgXGEgYS4gXG4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBzaHVmZmxlZCB2YWx1ZXMuCiNkZWZpbmUgX21tX3NodWZmbGVoaV9lcGkxNihhLCBpbW0pIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNodWZodygoX192OGhpKShfX20xMjhpKShhKSwgKGludCkoaW1tKSkpCgovLy8gVW5wYWNrcyB0aGUgaGlnaC1vcmRlciAoaW5kZXggOC0xNSkgdmFsdWVzIGZyb20gdHdvIDEyOC1iaXQgdmVjdG9ycwovLy8gICAgb2YgWzE2IHggaThdIGFuZCBpbnRlcmxlYXZlcyB0aGVtIGludG8gYSAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBVTlBDS0hCVyAvIFBVTlBDS0hCVyA8L2M+Ci8vLyAgIGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThdLgovLy8gICAgQml0cyBbNzE6NjRdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzc6MF0gb2YgdGhlIHJlc3VsdC4gXG4KLy8vICAgIEJpdHMgWzc5OjcyXSBhcmUgd3JpdHRlbiB0byBiaXRzIFsyMzoxNl0gb2YgdGhlIHJlc3VsdC4gXG4KLy8vICAgIEJpdHMgWzg3OjgwXSBhcmUgd3JpdHRlbiB0byBiaXRzIFszOTozMl0gb2YgdGhlIHJlc3VsdC4gXG4KLy8vICAgIEJpdHMgWzk1Ojg4XSBhcmUgd3JpdHRlbiB0byBiaXRzIFs1NTo0OF0gb2YgdGhlIHJlc3VsdC4gXG4KLy8vICAgIEJpdHMgWzEwMzo5Nl0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbNzE6NjRdIG9mIHRoZSByZXN1bHQuIFxuCi8vLyAgICBCaXRzIFsxMTE6MTA0XSBhcmUgd3JpdHRlbiB0byBiaXRzIFs4Nzo4MF0gb2YgdGhlIHJlc3VsdC4gXG4KLy8vICAgIEJpdHMgWzExOToxMTJdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzEwMzo5Nl0gb2YgdGhlIHJlc3VsdC4gXG4KLy8vICAgIEJpdHMgWzEyNzoxMjBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzExOToxMTJdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XS4gXG4KLy8vICAgIEJpdHMgWzcxOjY0XSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxNTo4XSBvZiB0aGUgcmVzdWx0LiBcbgovLy8gICAgQml0cyBbNzk6NzJdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzMxOjI0XSBvZiB0aGUgcmVzdWx0LiBcbgovLy8gICAgQml0cyBbODc6ODBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzQ3OjQwXSBvZiB0aGUgcmVzdWx0LiBcbgovLy8gICAgQml0cyBbOTU6ODhdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzYzOjU2XSBvZiB0aGUgcmVzdWx0LiBcbgovLy8gICAgQml0cyBbMTAzOjk2XSBhcmUgd3JpdHRlbiB0byBiaXRzIFs3OTo3Ml0gb2YgdGhlIHJlc3VsdC4gXG4KLy8vICAgIEJpdHMgWzExMToxMDRdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzk1Ojg4XSBvZiB0aGUgcmVzdWx0LiBcbgovLy8gICAgQml0cyBbMTE5OjExMl0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMTExOjEwNF0gb2YgdGhlIHJlc3VsdC4gXG4KLy8vICAgIEJpdHMgWzEyNzoxMjBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzEyNzoxMjBdIG9mIHRoZSByZXN1bHQuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XSBjb250YWluaW5nIHRoZSBpbnRlcmxlYXZlZCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV91bnBhY2toaV9lcGk4KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192MTZxaSlfX2EsIChfX3YxNnFpKV9fYiwgOCwgMTYrOCwgOSwgMTYrOSwgMTAsIDE2KzEwLCAxMSwgMTYrMTEsIDEyLCAxNisxMiwgMTMsIDE2KzEzLCAxNCwgMTYrMTQsIDE1LCAxNisxNSk7Cn0KCi8vLyBVbnBhY2tzIHRoZSBoaWdoLW9yZGVyIChpbmRleCA0LTcpIHZhbHVlcyBmcm9tIHR3byAxMjgtYml0IHZlY3RvcnMgb2YKLy8vICAgIFs4IHggaTE2XSBhbmQgaW50ZXJsZWF2ZXMgdGhlbSBpbnRvIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQVU5QQ0tIV0QgLyBQVU5QQ0tIV0QgPC9jPgovLy8gICBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XS4KLy8vICAgIEJpdHMgWzc5OjY0XSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxNTowXSBvZiB0aGUgcmVzdWx0LiBcbgovLy8gICAgQml0cyBbOTU6ODBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzQ3OjMyXSBvZiB0aGUgcmVzdWx0LiBcbgovLy8gICAgQml0cyBbMTExOjk2XSBhcmUgd3JpdHRlbiB0byBiaXRzIFs3OTo2NF0gb2YgdGhlIHJlc3VsdC4gXG4KLy8vICAgIEJpdHMgWzEyNzoxMTJdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzExMTo5Nl0gb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZdLgovLy8gICAgQml0cyBbNzk6NjRdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzMxOjE2XSBvZiB0aGUgcmVzdWx0LiBcbgovLy8gICAgQml0cyBbOTU6ODBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzYzOjQ4XSBvZiB0aGUgcmVzdWx0LiBcbgovLy8gICAgQml0cyBbMTExOjk2XSBhcmUgd3JpdHRlbiB0byBiaXRzIFs5NTo4MF0gb2YgdGhlIHJlc3VsdC4gXG4KLy8vICAgIEJpdHMgWzEyNzoxMTJdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzEyNzoxMTJdIG9mIHRoZSByZXN1bHQuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XSBjb250YWluaW5nIHRoZSBpbnRlcmxlYXZlZCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV91bnBhY2toaV9lcGkxNihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjhoaSlfX2EsIChfX3Y4aGkpX19iLCA0LCA4KzQsIDUsIDgrNSwgNiwgOCs2LCA3LCA4KzcpOwp9CgovLy8gVW5wYWNrcyB0aGUgaGlnaC1vcmRlciAoaW5kZXggMiwzKSB2YWx1ZXMgZnJvbSB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mCi8vLyAgICBbNCB4IGkzMl0gYW5kIGludGVybGVhdmVzIHRoZW0gaW50byBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFVOUENLSERRIC8gUFVOUENLSERRIDwvYz4KLy8vICAgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0uIFxuCi8vLyAgICBCaXRzIFs5NTo2NF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMzE6MF0gb2YgdGhlIGRlc3RpbmF0aW9uLiBcbgovLy8gICAgQml0cyBbMTI3Ojk2XSBhcmUgd3JpdHRlbiB0byBiaXRzIFs5NTo2NF0gb2YgdGhlIGRlc3RpbmF0aW9uLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0uIFxuCi8vLyAgICBCaXRzIFs5NTo2NF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbNjQ6MzJdIG9mIHRoZSBkZXN0aW5hdGlvbi4gXG4KLy8vICAgIEJpdHMgWzEyNzo5Nl0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMTI3Ojk2XSBvZiB0aGUgZGVzdGluYXRpb24uCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXSBjb250YWluaW5nIHRoZSBpbnRlcmxlYXZlZCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV91bnBhY2toaV9lcGkzMihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjRzaSlfX2EsIChfX3Y0c2kpX19iLCAyLCA0KzIsIDMsIDQrMyk7Cn0KCi8vLyBVbnBhY2tzIHRoZSBoaWdoLW9yZGVyIDY0LWJpdCBlbGVtZW50cyBmcm9tIHR3byAxMjgtYml0IHZlY3RvcnMgb2YKLy8vICAgIFsyIHggaTY0XSBhbmQgaW50ZXJsZWF2ZXMgdGhlbSBpbnRvIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBpNjRdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQVU5QQ0tIUURRIC8gUFVOUENLSFFEUSA8L2M+Ci8vLyAgIGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBpNjRdLiBcbgovLy8gICAgQml0cyBbMTI3OjY0XSBhcmUgd3JpdHRlbiB0byBiaXRzIFs2MzowXSBvZiB0aGUgZGVzdGluYXRpb24uCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggaTY0XS4gXG4KLy8vICAgIEJpdHMgWzEyNzo2NF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMTI3OjY0XSBvZiB0aGUgZGVzdGluYXRpb24uCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggaTY0XSBjb250YWluaW5nIHRoZSBpbnRlcmxlYXZlZCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV91bnBhY2toaV9lcGk2NChfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjJkaSlfX2EsIChfX3YyZGkpX19iLCAxLCAyKzEpOwp9CgovLy8gVW5wYWNrcyB0aGUgbG93LW9yZGVyIChpbmRleCAwLTcpIHZhbHVlcyBmcm9tIHR3byAxMjgtYml0IHZlY3RvcnMgb2YKLy8vICAgIFsxNiB4IGk4XSBhbmQgaW50ZXJsZWF2ZXMgdGhlbSBpbnRvIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQVU5QQ0tMQlcgLyBQVU5QQ0tMQlcgPC9jPgovLy8gICBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XS4gXG4KLy8vICAgIEJpdHMgWzc6MF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbNzowXSBvZiB0aGUgcmVzdWx0LiBcbgovLy8gICAgQml0cyBbMTU6OF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMjM6MTZdIG9mIHRoZSByZXN1bHQuIFxuCi8vLyAgICBCaXRzIFsyMzoxNl0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMzk6MzJdIG9mIHRoZSByZXN1bHQuIFxuCi8vLyAgICBCaXRzIFszMToyNF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbNTU6NDhdIG9mIHRoZSByZXN1bHQuIFxuCi8vLyAgICBCaXRzIFszOTozMl0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbNzE6NjRdIG9mIHRoZSByZXN1bHQuIFxuCi8vLyAgICBCaXRzIFs0Nzo0MF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbODc6ODBdIG9mIHRoZSByZXN1bHQuIFxuCi8vLyAgICBCaXRzIFs1NTo0OF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMTAzOjk2XSBvZiB0aGUgcmVzdWx0LiBcbgovLy8gICAgQml0cyBbNjM6NTZdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzExOToxMTJdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XS4KLy8vICAgIEJpdHMgWzc6MF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMTU6OF0gb2YgdGhlIHJlc3VsdC4gXG4KLy8vICAgIEJpdHMgWzE1OjhdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzMxOjI0XSBvZiB0aGUgcmVzdWx0LiBcbgovLy8gICAgQml0cyBbMjM6MTZdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzQ3OjQwXSBvZiB0aGUgcmVzdWx0LiBcbgovLy8gICAgQml0cyBbMzE6MjRdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzYzOjU2XSBvZiB0aGUgcmVzdWx0LiBcbgovLy8gICAgQml0cyBbMzk6MzJdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzc5OjcyXSBvZiB0aGUgcmVzdWx0LiBcbgovLy8gICAgQml0cyBbNDc6NDBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzk1Ojg4XSBvZiB0aGUgcmVzdWx0LiBcbgovLy8gICAgQml0cyBbNTU6NDhdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzExMToxMDRdIG9mIHRoZSByZXN1bHQuIFxuCi8vLyAgICBCaXRzIFs2Mzo1Nl0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMTI3OjEyMF0gb2YgdGhlIHJlc3VsdC4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThdIGNvbnRhaW5pbmcgdGhlIGludGVybGVhdmVkIHZhbHVlcy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3VucGFja2xvX2VwaTgoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3YxNnFpKV9fYSwgKF9fdjE2cWkpX19iLCAwLCAxNiswLCAxLCAxNisxLCAyLCAxNisyLCAzLCAxNiszLCA0LCAxNis0LCA1LCAxNis1LCA2LCAxNis2LCA3LCAxNis3KTsKfQoKLy8vIFVucGFja3MgdGhlIGxvdy1vcmRlciAoaW5kZXggMC0zKSB2YWx1ZXMgZnJvbSBlYWNoIG9mIHRoZSB0d28gMTI4LWJpdAovLy8gICAgdmVjdG9ycyBvZiBbOCB4IGkxNl0gYW5kIGludGVybGVhdmVzIHRoZW0gaW50byBhIDEyOC1iaXQgdmVjdG9yIG9mCi8vLyAgICBbOCB4IGkxNl0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBVTlBDS0xXRCAvIFBVTlBDS0xXRCA8L2M+Ci8vLyAgIGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZdLgovLy8gICAgQml0cyBbMTU6MF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMTU6MF0gb2YgdGhlIHJlc3VsdC4gXG4KLy8vICAgIEJpdHMgWzMxOjE2XSBhcmUgd3JpdHRlbiB0byBiaXRzIFs0NzozMl0gb2YgdGhlIHJlc3VsdC4gXG4KLy8vICAgIEJpdHMgWzQ3OjMyXSBhcmUgd3JpdHRlbiB0byBiaXRzIFs3OTo2NF0gb2YgdGhlIHJlc3VsdC4gXG4KLy8vICAgIEJpdHMgWzYzOjQ4XSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxMTE6OTZdIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19iCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XS4KLy8vICAgIEJpdHMgWzE1OjBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzMxOjE2XSBvZiB0aGUgcmVzdWx0LiBcbgovLy8gICAgQml0cyBbMzE6MTZdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzYzOjQ4XSBvZiB0aGUgcmVzdWx0LiBcbgovLy8gICAgQml0cyBbNDc6MzJdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzk1OjgwXSBvZiB0aGUgcmVzdWx0LiBcbgovLy8gICAgQml0cyBbNjM6NDhdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzEyNzoxMTJdIG9mIHRoZSByZXN1bHQuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XSBjb250YWluaW5nIHRoZSBpbnRlcmxlYXZlZCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV91bnBhY2tsb19lcGkxNihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjhoaSlfX2EsIChfX3Y4aGkpX19iLCAwLCA4KzAsIDEsIDgrMSwgMiwgOCsyLCAzLCA4KzMpOwp9CgovLy8gVW5wYWNrcyB0aGUgbG93LW9yZGVyIChpbmRleCAwLDEpIHZhbHVlcyBmcm9tIHR3byAxMjgtYml0IHZlY3RvcnMgb2YKLy8vICAgIFs0IHggaTMyXSBhbmQgaW50ZXJsZWF2ZXMgdGhlbSBpbnRvIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQVU5QQ0tMRFEgLyBQVU5QQ0tMRFEgPC9jPgovLy8gICBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXS4gXG4KLy8vICAgIEJpdHMgWzMxOjBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzMxOjBdIG9mIHRoZSBkZXN0aW5hdGlvbi4gXG4KLy8vICAgIEJpdHMgWzYzOjMyXSBhcmUgd3JpdHRlbiB0byBiaXRzIFs5NTo2NF0gb2YgdGhlIGRlc3RpbmF0aW9uLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0uIFxuCi8vLyAgICBCaXRzIFszMTowXSBhcmUgd3JpdHRlbiB0byBiaXRzIFs2NDozMl0gb2YgdGhlIGRlc3RpbmF0aW9uLiBcbgovLy8gICAgQml0cyBbNjM6MzJdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzEyNzo5Nl0gb2YgdGhlIGRlc3RpbmF0aW9uLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0gY29udGFpbmluZyB0aGUgaW50ZXJsZWF2ZWQgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fdW5wYWNrbG9fZXBpMzIoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y0c2kpX19hLCAoX192NHNpKV9fYiwgMCwgNCswLCAxLCA0KzEpOwp9CgovLy8gVW5wYWNrcyB0aGUgbG93LW9yZGVyIDY0LWJpdCBlbGVtZW50cyBmcm9tIHR3byAxMjgtYml0IHZlY3RvcnMgb2YKLy8vICAgIFsyIHggaTY0XSBhbmQgaW50ZXJsZWF2ZXMgdGhlbSBpbnRvIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBpNjRdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQVU5QQ0tMUURRIC8gUFVOUENLTFFEUSA8L2M+Ci8vLyAgIGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBpNjRdLiBcbgovLy8gICAgQml0cyBbNjM6MF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbNjM6MF0gb2YgdGhlIGRlc3RpbmF0aW9uLiBcbgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0uIFxuCi8vLyAgICBCaXRzIFs2MzowXSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxMjc6NjRdIG9mIHRoZSBkZXN0aW5hdGlvbi4gXG4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBpNjRdIGNvbnRhaW5pbmcgdGhlIGludGVybGVhdmVkIHZhbHVlcy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3VucGFja2xvX2VwaTY0KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192MmRpKV9fYSwgKF9fdjJkaSlfX2IsIDAsIDIrMCk7Cn0KCi8vLyBSZXR1cm5zIHRoZSBsb3dlciA2NCBiaXRzIG9mIGEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBhcyBhIDY0LWJpdAovLy8gICAgaW50ZWdlci4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBNT1ZEUTJRIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9wZXJhbmQuIFRoZSBsb3dlciA2NCBiaXRzIGFyZSBtb3ZlZCB0byB0aGUKLy8vICAgIGRlc3RpbmF0aW9uLgovLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciBjb250YWluaW5nIHRoZSBsb3dlciA2NCBiaXRzIG9mIHRoZSBwYXJhbWV0ZXIuCnN0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fbW92ZXBpNjRfcGk2NChfX20xMjhpIF9fYSkKewogIHJldHVybiAoX19tNjQpX19hWzBdOwp9CgovLy8gTW92ZXMgdGhlIDY0LWJpdCBvcGVyYW5kIHRvIGEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciwgemVyb2luZyB0aGUKLy8vICAgIHVwcGVyIGJpdHMuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gTU9WRCtWTU9WUSA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgNjQtYml0IHZhbHVlLgovLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yLiBUaGUgbG93ZXIgNjQgYml0cyBjb250YWluIHRoZSB2YWx1ZSBmcm9tCi8vLyAgICB0aGUgb3BlcmFuZC4gVGhlIHVwcGVyIDY0IGJpdHMgYXJlIGFzc2lnbmVkIHplcm9zLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fbW92cGk2NF9lcGk2NChfX202NCBfX2EpCnsKICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMTI4aSkoX192MmRpKXsgKGxvbmcgbG9uZylfX2EsIDAgfTsKfQoKLy8vIE1vdmVzIHRoZSBsb3dlciA2NCBiaXRzIG9mIGEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciB0byBhIDEyOC1iaXQKLy8vICAgIGludGVnZXIgdmVjdG9yLCB6ZXJvaW5nIHRoZSB1cHBlciBiaXRzLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZRIC8gTU9WUSA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvcGVyYW5kLiBUaGUgbG93ZXIgNjQgYml0cyBhcmUgbW92ZWQgdG8gdGhlCi8vLyAgICBkZXN0aW5hdGlvbi4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4gVGhlIGxvd2VyIDY0IGJpdHMgY29udGFpbiB0aGUgdmFsdWUgZnJvbQovLy8gICAgdGhlIG9wZXJhbmQuIFRoZSB1cHBlciA2NCBiaXRzIGFyZSBhc3NpZ25lZCB6ZXJvcy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX21vdmVfZXBpNjQoX19tMTI4aSBfX2EpCnsKICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjJkaSlfX2EsIF9tbV9zZXR6ZXJvX3NpMTI4KCksIDAsIDIpOwp9CgovLy8gVW5wYWNrcyB0aGUgaGlnaC1vcmRlciA2NC1iaXQgZWxlbWVudHMgZnJvbSB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mCi8vLyAgICBbMiB4IGRvdWJsZV0gYW5kIGludGVybGVhdmVzIHRoZW0gaW50byBhIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHgKLy8vICAgIGRvdWJsZV0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlVOUENLSFBEIC8gVU5QQ0tIUEQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gXG4KLy8vICAgIEJpdHMgWzEyNzo2NF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbNjM6MF0gb2YgdGhlIGRlc3RpbmF0aW9uLgovLy8gXHBhcmFtIF9fYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFxuCi8vLyAgICBCaXRzIFsxMjc6NjRdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzEyNzo2NF0gb2YgdGhlIGRlc3RpbmF0aW9uLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgaW50ZXJsZWF2ZWQgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fdW5wYWNraGlfcGQoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3YyZGYpX19hLCAoX192MmRmKV9fYiwgMSwgMisxKTsKfQoKLy8vIFVucGFja3MgdGhlIGxvdy1vcmRlciA2NC1iaXQgZWxlbWVudHMgZnJvbSB0d28gMTI4LWJpdCB2ZWN0b3JzCi8vLyAgICBvZiBbMiB4IGRvdWJsZV0gYW5kIGludGVybGVhdmVzIHRoZW0gaW50byBhIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHgKLy8vICAgIGRvdWJsZV0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlVOUENLTFBEIC8gVU5QQ0tMUEQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gXG4KLy8vICAgIEJpdHMgWzYzOjBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzYzOjBdIG9mIHRoZSBkZXN0aW5hdGlvbi4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBcbgovLy8gICAgQml0cyBbNjM6MF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMTI3OjY0XSBvZiB0aGUgZGVzdGluYXRpb24uCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBpbnRlcmxlYXZlZCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV91bnBhY2tsb19wZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpCnsKICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjJkZilfX2EsIChfX3YyZGYpX19iLCAwLCAyKzApOwp9CgovLy8gRXh0cmFjdHMgdGhlIHNpZ24gYml0cyBvZiB0aGUgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgaW4gdGhlIDEyOC1iaXQKLy8vICAgIHZlY3RvciBvZiBbMiB4IGRvdWJsZV0sIHplcm8tZXh0ZW5kcyB0aGUgdmFsdWUsIGFuZCB3cml0ZXMgaXQgdG8gdGhlCi8vLyAgICBsb3ctb3JkZXIgYml0cyBvZiB0aGUgZGVzdGluYXRpb24uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVk1TS1BEIC8gTU9WTVNLUEQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSB2YWx1ZXMgd2l0aCBzaWduIGJpdHMgdG8KLy8vICAgIGJlIGV4dHJhY3RlZC4KLy8vIFxyZXR1cm5zIFRoZSBzaWduIGJpdHMgZnJvbSBlYWNoIG9mIHRoZSBkb3VibGUtcHJlY2lzaW9uIGVsZW1lbnRzIGluIFxhIF9fYSwKLy8vICAgIHdyaXR0ZW4gdG8gYml0cyBbMTowXS4gVGhlIHJlbWFpbmluZyBiaXRzIGFyZSBhc3NpZ25lZCB2YWx1ZXMgb2YgemVyby4Kc3RhdGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fbW92ZW1hc2tfcGQoX19tMTI4ZCBfX2EpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfbW92bXNrcGQoKF9fdjJkZilfX2EpOwp9CgoKLy8vIENvbnN0cnVjdHMgYSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gZnJvbSB0d28KLy8vICAgIDEyOC1iaXQgdmVjdG9yIHBhcmFtZXRlcnMgb2YgWzIgeCBkb3VibGVdLCB1c2luZyB0aGUgaW1tZWRpYXRlLXZhbHVlCi8vLyAgICAgcGFyYW1ldGVyIGFzIGEgc3BlY2lmaWVyLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBcY29kZQovLy8gX19tMTI4ZCBfbW1fc2h1ZmZsZV9wZChfX20xMjhkIGEsIF9fbTEyOGQgYiwgY29uc3QgaW50IGkpOwovLy8gXGVuZGNvZGUKLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZTSFVGUEQgLyBTSFVGUEQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uCi8vLyBccGFyYW0gYgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uCi8vLyBccGFyYW0gaQovLy8gICAgQW4gOC1iaXQgaW1tZWRpYXRlIHZhbHVlLiBUaGUgbGVhc3Qgc2lnbmlmaWNhbnQgdHdvIGJpdHMgc3BlY2lmeSB3aGljaAovLy8gICAgZWxlbWVudHMgdG8gY29weSBmcm9tIFxhIGEgYW5kIFxhIGI6IFxuCi8vLyAgICBCaXRbMF0gPSAwOiBsb3dlciBlbGVtZW50IG9mIFxhIGEgY29waWVkIHRvIGxvd2VyIGVsZW1lbnQgb2YgcmVzdWx0LiBcbgovLy8gICAgQml0WzBdID0gMTogdXBwZXIgZWxlbWVudCBvZiBcYSBhIGNvcGllZCB0byBsb3dlciBlbGVtZW50IG9mIHJlc3VsdC4gXG4KLy8vICAgIEJpdFsxXSA9IDA6IGxvd2VyIGVsZW1lbnQgb2YgXGEgYiBjb3BpZWQgdG8gdXBwZXIgZWxlbWVudCBvZiByZXN1bHQuIFxuCi8vLyAgICBCaXRbMV0gPSAxOiB1cHBlciBlbGVtZW50IG9mIFxhIGIgY29waWVkIHRvIHVwcGVyIGVsZW1lbnQgb2YgcmVzdWx0LiBcbgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgc2h1ZmZsZWQgdmFsdWVzLgojZGVmaW5lIF9tbV9zaHVmZmxlX3BkKGEsIGIsIGkpIFwKICAoKF9fbTEyOGQpX19idWlsdGluX2lhMzJfc2h1ZnBkKChfX3YyZGYpKF9fbTEyOGQpKGEpLCAoX192MmRmKShfX20xMjhkKShiKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoaSkpKQoKLy8vIENhc3RzIGEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGludG8gYSAxMjgtYml0Ci8vLyAgICBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGhhcyBubyBjb3JyZXNwb25kaW5nIGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLgovLy8gXHJldHVybnMgQSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBzYW1lCi8vLyAgICBiaXR3aXNlIHBhdHRlcm4gYXMgdGhlIHBhcmFtZXRlci4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY2FzdHBkX3BzKF9fbTEyOGQgX19hKQp7CiAgcmV0dXJuIChfX20xMjgpX19hOwp9CgovLy8gQ2FzdHMgYSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gaW50byBhIDEyOC1iaXQKLy8vICAgIGludGVnZXIgdmVjdG9yLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBoYXMgbm8gY29ycmVzcG9uZGluZyBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBzYW1lIGJpdHdpc2UgcGF0dGVybiBhcyB0aGUKLy8vICAgIHBhcmFtZXRlci4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2Nhc3RwZF9zaTEyOChfX20xMjhkIF9fYSkKewogIHJldHVybiAoX19tMTI4aSlfX2E7Cn0KCi8vLyBDYXN0cyBhIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGludG8gYSAxMjgtYml0Ci8vLyAgICBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBoYXMgbm8gY29ycmVzcG9uZGluZyBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLgovLy8gXHJldHVybnMgQSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgc2FtZQovLy8gICAgYml0d2lzZSBwYXR0ZXJuIGFzIHRoZSBwYXJhbWV0ZXIuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jYXN0cHNfcGQoX19tMTI4IF9fYSkKewogIHJldHVybiAoX19tMTI4ZClfX2E7Cn0KCi8vLyBDYXN0cyBhIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGludG8gYSAxMjgtYml0Ci8vLyAgICBpbnRlZ2VyIHZlY3Rvci4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgaGFzIG5vIGNvcnJlc3BvbmRpbmcgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBzYW1lIGJpdHdpc2UgcGF0dGVybiBhcyB0aGUKLy8vICAgIHBhcmFtZXRlci4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2Nhc3Rwc19zaTEyOChfX20xMjggX19hKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYTsKfQoKLy8vIENhc3RzIGEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBpbnRvIGEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3IKLy8vICAgIG9mIFs0IHggZmxvYXRdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBoYXMgbm8gY29ycmVzcG9uZGluZyBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHNhbWUKLy8vICAgIGJpdHdpc2UgcGF0dGVybiBhcyB0aGUgcGFyYW1ldGVyLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jYXN0c2kxMjhfcHMoX19tMTI4aSBfX2EpCnsKICByZXR1cm4gKF9fbTEyOClfX2E7Cn0KCi8vLyBDYXN0cyBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgaW50byBhIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yCi8vLyAgICBvZiBbMiB4IGRvdWJsZV0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGhhcyBubyBjb3JyZXNwb25kaW5nIGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIHNhbWUKLy8vICAgIGJpdHdpc2UgcGF0dGVybiBhcyB0aGUgcGFyYW1ldGVyLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY2FzdHNpMTI4X3BkKF9fbTEyOGkgX19hKQp7CiAgcmV0dXJuIChfX20xMjhkKV9fYTsKfQoKI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpCmV4dGVybiAiQyIgewojZW5kaWYKCi8vLyBJbmRpY2F0ZXMgdGhhdCBhIHNwaW4gbG9vcCBpcyBiZWluZyBleGVjdXRlZCBmb3IgdGhlIHB1cnBvc2VzIG9mCi8vLyAgICBvcHRpbWl6aW5nIHBvd2VyIGNvbnN1bXB0aW9uIGR1cmluZyB0aGUgbG9vcC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQQVVTRSA8L2M+IGluc3RydWN0aW9uLgovLy8Kdm9pZCBfbW1fcGF1c2Uodm9pZCk7CgojaWYgZGVmaW5lZChfX2NwbHVzcGx1cykKfSAvLyBleHRlcm4gIkMiCiNlbmRpZgojdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTCiN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YCgojZGVmaW5lIF9NTV9TSFVGRkxFMih4LCB5KSAoKCh4KSA8PCAxKSB8ICh5KSkKCiNkZWZpbmUgX01NX0RFTk9STUFMU19aRVJPX09OICAgKDB4MDA0MFUpCiNkZWZpbmUgX01NX0RFTk9STUFMU19aRVJPX09GRiAgKDB4MDAwMFUpCgojZGVmaW5lIF9NTV9ERU5PUk1BTFNfWkVST19NQVNLICgweDAwNDBVKQoKI2RlZmluZSBfTU1fR0VUX0RFTk9STUFMU19aRVJPX01PREUoKSAoX21tX2dldGNzcigpICYgX01NX0RFTk9STUFMU19aRVJPX01BU0spCiNkZWZpbmUgX01NX1NFVF9ERU5PUk1BTFNfWkVST19NT0RFKHgpIChfbW1fc2V0Y3NyKChfbW1fZ2V0Y3NyKCkgJiB+X01NX0RFTk9STUFMU19aRVJPX01BU0spIHwgKHgpKSkKCiNlbmRpZiAvKiBfX0VNTUlOVFJJTl9IICovCgAvKj09PS0tLS0gaHRteGxpbnRyaW4uaCAtIFhMIGNvbXBpbGVyIEhUTSBleGVjdXRpb24gaW50cmluc2ljcy0tLS0tLS0tLS0tLS09PT0qXAogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgpcKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0qLwoKI2lmbmRlZiBfX0hUTVhMSU5UUklOX0gKI2RlZmluZSBfX0hUTVhMSU5UUklOX0gKCiNpZm5kZWYgX19IVE1fXwojZXJyb3IgIkhUTSBpbnN0cnVjdGlvbiBzZXQgbm90IGVuYWJsZWQiCiNlbmRpZgoKI2luY2x1ZGUgPGh0bWludHJpbi5oPgoKI2lmZGVmIF9fcG93ZXJwY19fCgojaWZkZWYgX19jcGx1c3BsdXMKZXh0ZXJuICJDIiB7CiNlbmRpZgoKI2RlZmluZSBfVEVYQVNSX1BUUihUTV9CVUYpICgodGV4YXNyX3QgKikoKGNoYXIgKikoVE1fQlVGKSArIDApKQojZGVmaW5lIF9URVhBU1JVX1BUUihUTV9CVUYpICgodGV4YXNydV90ICopKChjaGFyICopKFRNX0JVRikgKyAwKSkKI2RlZmluZSBfVEVYQVNSTF9QVFIoVE1fQlVGKSAoKHRleGFzcmxfdCAqKSgoY2hhciAqKShUTV9CVUYpICsgNCkpCiNkZWZpbmUgX1RGSUFSX1BUUihUTV9CVUYpICgodGZpYXJfdCAqKSgoY2hhciAqKShUTV9CVUYpICsgOCkpCgp0eXBlZGVmIGNoYXIgVE1fYnVmZl90eXBlWzE2XTsKCi8qIFRoaXMgbWFjcm8gY2FuIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSB0cmFuc2FjdGlvbiB3YXMgc3VjY2Vzc2Z1bGx5CiAgIHN0YXJ0ZWQgZnJvbSB0aGUgX19UTV9iZWdpbigpIGFuZCBfX1RNX3NpbXBsZV9iZWdpbigpIGludHJpbnNpYyBmdW5jdGlvbnMKICAgYmVsb3cuICAqLwojZGVmaW5lIF9IVE1fVEJFR0lOX1NUQVJURUQgICAgIDEKCmV4dGVybiBfX2lubGluZSBsb25nCl9fYXR0cmlidXRlX18gKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX19UTV9zaW1wbGVfYmVnaW4gKHZvaWQpCnsKICBpZiAoX19idWlsdGluX2V4cGVjdCAoX19idWlsdGluX3RiZWdpbiAoMCksIDEpKQogICAgcmV0dXJuIF9IVE1fVEJFR0lOX1NUQVJURUQ7CiAgcmV0dXJuIDA7Cn0KCmV4dGVybiBfX2lubGluZSBsb25nCl9fYXR0cmlidXRlX18gKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX19UTV9iZWdpbiAodm9pZCogY29uc3QgX19UTV9idWZmKQp7CiAgKl9URVhBU1JMX1BUUiAoX19UTV9idWZmKSA9IDA7CiAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKF9fYnVpbHRpbl90YmVnaW4gKDApLCAxKSkKICAgIHJldHVybiBfSFRNX1RCRUdJTl9TVEFSVEVEOwojaWZkZWYgX19wb3dlcnBjNjRfXwogICpfVEVYQVNSX1BUUiAoX19UTV9idWZmKSA9IF9fYnVpbHRpbl9nZXRfdGV4YXNyICgpOwojZWxzZQogICpfVEVYQVNSVV9QVFIgKF9fVE1fYnVmZikgPSBfX2J1aWx0aW5fZ2V0X3RleGFzcnUgKCk7CiAgKl9URVhBU1JMX1BUUiAoX19UTV9idWZmKSA9IF9fYnVpbHRpbl9nZXRfdGV4YXNyICgpOwojZW5kaWYKICAqX1RGSUFSX1BUUiAoX19UTV9idWZmKSA9IF9fYnVpbHRpbl9nZXRfdGZpYXIgKCk7CiAgcmV0dXJuIDA7Cn0KCmV4dGVybiBfX2lubGluZSBsb25nCl9fYXR0cmlidXRlX18gKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX19UTV9lbmQgKHZvaWQpCnsKICBpZiAoX19idWlsdGluX2V4cGVjdCAoX19idWlsdGluX3RlbmQgKDApLCAxKSkKICAgIHJldHVybiAxOwogIHJldHVybiAwOwp9CgpleHRlcm4gX19pbmxpbmUgdm9pZApfX2F0dHJpYnV0ZV9fICgoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9fVE1fYWJvcnQgKHZvaWQpCnsKICBfX2J1aWx0aW5fdGFib3J0ICgwKTsKfQoKZXh0ZXJuIF9faW5saW5lIHZvaWQKX19hdHRyaWJ1dGVfXyAoKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfX1RNX25hbWVkX2Fib3J0ICh1bnNpZ25lZCBjaGFyIGNvbnN0IF9fY29kZSkKewogIF9fYnVpbHRpbl90YWJvcnQgKF9fY29kZSk7Cn0KCmV4dGVybiBfX2lubGluZSB2b2lkCl9fYXR0cmlidXRlX18gKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX19UTV9yZXN1bWUgKHZvaWQpCnsKICBfX2J1aWx0aW5fdHJlc3VtZSAoKTsKfQoKZXh0ZXJuIF9faW5saW5lIHZvaWQKX19hdHRyaWJ1dGVfXyAoKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfX1RNX3N1c3BlbmQgKHZvaWQpCnsKICBfX2J1aWx0aW5fdHN1c3BlbmQgKCk7Cn0KCmV4dGVybiBfX2lubGluZSBsb25nCl9fYXR0cmlidXRlX18gKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX19UTV9pc191c2VyX2Fib3J0ICh2b2lkKiBjb25zdCBfX1RNX2J1ZmYpCnsKICB0ZXhhc3J1X3QgdGV4YXNydSA9ICpfVEVYQVNSVV9QVFIgKF9fVE1fYnVmZik7CiAgcmV0dXJuIF9URVhBU1JVX0FCT1JUICh0ZXhhc3J1KTsKfQoKZXh0ZXJuIF9faW5saW5lIGxvbmcKX19hdHRyaWJ1dGVfXyAoKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfX1RNX2lzX25hbWVkX3VzZXJfYWJvcnQgKHZvaWQqIGNvbnN0IF9fVE1fYnVmZiwgdW5zaWduZWQgY2hhciAqX19jb2RlKQp7CiAgdGV4YXNydV90IHRleGFzcnUgPSAqX1RFWEFTUlVfUFRSIChfX1RNX2J1ZmYpOwoKICAqX19jb2RlID0gX1RFWEFTUlVfRkFJTFVSRV9DT0RFICh0ZXhhc3J1KTsKICByZXR1cm4gX1RFWEFTUlVfQUJPUlQgKHRleGFzcnUpOwp9CgpleHRlcm4gX19pbmxpbmUgbG9uZwpfX2F0dHJpYnV0ZV9fICgoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9fVE1faXNfaWxsZWdhbCAodm9pZCogY29uc3QgX19UTV9idWZmKQp7CiAgdGV4YXNydV90IHRleGFzcnUgPSAqX1RFWEFTUlVfUFRSIChfX1RNX2J1ZmYpOwogIHJldHVybiBfVEVYQVNSVV9ESVNBTExPV0VEICh0ZXhhc3J1KTsKfQoKZXh0ZXJuIF9faW5saW5lIGxvbmcKX19hdHRyaWJ1dGVfXyAoKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfX1RNX2lzX2Zvb3RwcmludF9leGNlZWRlZCAodm9pZCogY29uc3QgX19UTV9idWZmKQp7CiAgdGV4YXNydV90IHRleGFzcnUgPSAqX1RFWEFTUlVfUFRSIChfX1RNX2J1ZmYpOwogIHJldHVybiBfVEVYQVNSVV9GT09UUFJJTlRfT1ZFUkZMT1cgKHRleGFzcnUpOwp9CgpleHRlcm4gX19pbmxpbmUgbG9uZwpfX2F0dHJpYnV0ZV9fICgoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9fVE1fbmVzdGluZ19kZXB0aCAodm9pZCogY29uc3QgX19UTV9idWZmKQp7CiAgdGV4YXNybF90IHRleGFzcmw7CgogIGlmIChfSFRNX1NUQVRFIChfX2J1aWx0aW5fdHRlc3QgKCkpID09IF9IVE1fTk9OVFJBTlNBQ1RJT05BTCkKICAgIHsKICAgICAgdGV4YXNybCA9ICpfVEVYQVNSTF9QVFIgKF9fVE1fYnVmZik7CiAgICAgIGlmICghX1RFWEFTUl9GQUlMVVJFX1NVTU1BUlkgKHRleGFzcmwpKQogICAgICAgIHRleGFzcmwgPSAwOwogICAgfQogIGVsc2UKICAgIHRleGFzcmwgPSAodGV4YXNybF90KSBfX2J1aWx0aW5fZ2V0X3RleGFzciAoKTsKCiAgcmV0dXJuIF9URVhBU1JfVFJBTlNBQ1RJT05fTEVWRUwgKHRleGFzcmwpOwp9CgpleHRlcm4gX19pbmxpbmUgbG9uZwpfX2F0dHJpYnV0ZV9fICgoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9fVE1faXNfbmVzdGVkX3Rvb19kZWVwKHZvaWQqIGNvbnN0IF9fVE1fYnVmZikKewogIHRleGFzcnVfdCB0ZXhhc3J1ID0gKl9URVhBU1JVX1BUUiAoX19UTV9idWZmKTsKICByZXR1cm4gX1RFWEFTUlVfTkVTVElOR19PVkVSRkxPVyAodGV4YXNydSk7Cn0KCmV4dGVybiBfX2lubGluZSBsb25nCl9fYXR0cmlidXRlX18gKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX19UTV9pc19jb25mbGljdCh2b2lkKiBjb25zdCBfX1RNX2J1ZmYpCnsKICB0ZXhhc3J1X3QgdGV4YXNydSA9ICpfVEVYQVNSVV9QVFIgKF9fVE1fYnVmZik7CiAgLyogUmV0dXJuIFRFWEFTUiBiaXRzIDExIChTZWxmLUluZHVjZWQgQ29uZmxpY3QpIHRocm91Z2gKICAgICAxNCAoVHJhbnNsYXRpb24gSW52YWxpZGF0aW9uIENvbmZsaWN0KS4gICovCiAgcmV0dXJuIChfVEVYQVNSVV9FWFRSQUNUX0JJVFMgKHRleGFzcnUsIDE0LCA0KSkgPyAxIDogMDsKfQoKZXh0ZXJuIF9faW5saW5lIGxvbmcKX19hdHRyaWJ1dGVfXyAoKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfX1RNX2lzX2ZhaWx1cmVfcGVyc2lzdGVudCh2b2lkKiBjb25zdCBfX1RNX2J1ZmYpCnsKICB0ZXhhc3J1X3QgdGV4YXNydSA9ICpfVEVYQVNSVV9QVFIgKF9fVE1fYnVmZik7CiAgcmV0dXJuIF9URVhBU1JVX0ZBSUxVUkVfUEVSU0lTVEVOVCAodGV4YXNydSk7Cn0KCmV4dGVybiBfX2lubGluZSBsb25nCl9fYXR0cmlidXRlX18gKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX19UTV9mYWlsdXJlX2FkZHJlc3Modm9pZCogY29uc3QgX19UTV9idWZmKQp7CiAgcmV0dXJuICpfVEZJQVJfUFRSIChfX1RNX2J1ZmYpOwp9CgpleHRlcm4gX19pbmxpbmUgbG9uZyBsb25nCl9fYXR0cmlidXRlX18gKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX19UTV9mYWlsdXJlX2NvZGUodm9pZCogY29uc3QgX19UTV9idWZmKQp7CiAgcmV0dXJuICpfVEVYQVNSX1BUUiAoX19UTV9idWZmKTsKfQoKI2lmZGVmIF9fY3BsdXNwbHVzCn0KI2VuZGlmCgojZW5kaWYgLyogX19wb3dlcnBjX18gKi8KCiNpZmRlZiBfX3MzOTBfXwoKI2luY2x1ZGUgPHN0ZGludC5oPgoKLyogVGhlc2UgaW50cmluc2ljcyBhcmUgYmVpbmcgbWFkZSBhdmFpbGFibGUgZm9yIGNvbXBhdGliaWxpdHkgd2l0aAogICB0aGUgSUJNIFhMIGNvbXBpbGVyLiAgRm9yIGRvY3VtZW50YXRpb24gcGxlYXNlIHNlZSB0aGUgInovT1MgWEwKICAgQy9DKysgUHJvZ3JhbW1pbmcgR3VpZGUiIHB1YmxpY2x5IGF2YWlsYWJsZSBvbiB0aGUgd2ViLiAgKi8KCnN0YXRpYyBfX2lubGluZSBsb25nIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCl9fVE1fc2ltcGxlX2JlZ2luICgpCnsKICByZXR1cm4gX19idWlsdGluX3RiZWdpbl9ub2Zsb2F0ICgwKTsKfQoKc3RhdGljIF9faW5saW5lIGxvbmcgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKX19UTV9iZWdpbiAodm9pZCogY29uc3QgX190ZGIpCnsKICByZXR1cm4gX19idWlsdGluX3RiZWdpbl9ub2Zsb2F0IChfX3RkYik7Cn0KCnN0YXRpYyBfX2lubGluZSBsb25nIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCl9fVE1fZW5kICgpCnsKICByZXR1cm4gX19idWlsdGluX3RlbmQgKCk7Cn0KCnN0YXRpYyBfX2lubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKX19UTV9hYm9ydCAoKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl90YWJvcnQgKF9IVE1fRklSU1RfVVNFUl9BQk9SVF9DT0RFKTsKfQoKc3RhdGljIF9faW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKX19UTV9uYW1lZF9hYm9ydCAodW5zaWduZWQgY2hhciBjb25zdCBfX2NvZGUpCnsKICByZXR1cm4gX19idWlsdGluX3RhYm9ydCAoKGludClfSFRNX0ZJUlNUX1VTRVJfQUJPUlRfQ09ERSArIF9fY29kZSk7Cn0KCnN0YXRpYyBfX2lubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCl9fVE1fbm9uX3RyYW5zYWN0aW9uYWxfc3RvcmUgKHZvaWQqIGNvbnN0IF9fYWRkciwgbG9uZyBsb25nIGNvbnN0IF9fdmFsdWUpCnsKICBfX2J1aWx0aW5fbm9uX3R4X3N0b3JlICgodWludDY0X3QqKV9fYWRkciwgKHVpbnQ2NF90KV9fdmFsdWUpOwp9CgpzdGF0aWMgX19pbmxpbmUgbG9uZyBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpfX1RNX25lc3RpbmdfZGVwdGggKHZvaWQqIGNvbnN0IF9fdGRiX3B0cikKewogIGludCBkZXB0aCA9IF9fYnVpbHRpbl90eF9uZXN0aW5nX2RlcHRoICgpOwogIHN0cnVjdCBfX2h0bV90ZGIgKnRkYiA9IChzdHJ1Y3QgX19odG1fdGRiKilfX3RkYl9wdHI7CgogIGlmIChkZXB0aCAhPSAwKQogICAgcmV0dXJuIGRlcHRoOwoKICBpZiAodGRiLT5mb3JtYXQgIT0gMSkKICAgIHJldHVybiAwOwogIHJldHVybiB0ZGItPm5lc3RpbmdfZGVwdGg7Cn0KCi8qIFRyYW5zYWN0aW9uIGZhaWx1cmUgZGlhZ25vc3RpY3MgKi8KCnN0YXRpYyBfX2lubGluZSBsb25nIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCl9fVE1faXNfdXNlcl9hYm9ydCAodm9pZCogY29uc3QgX190ZGJfcHRyKQp7CiAgc3RydWN0IF9faHRtX3RkYiAqdGRiID0gKHN0cnVjdCBfX2h0bV90ZGIqKV9fdGRiX3B0cjsKCiAgaWYgKHRkYi0+Zm9ybWF0ICE9IDEpCiAgICByZXR1cm4gMDsKCiAgcmV0dXJuICEhKHRkYi0+YWJvcnRfY29kZSA+PSBfSFRNX0ZJUlNUX1VTRVJfQUJPUlRfQ09ERSk7Cn0KCnN0YXRpYyBfX2lubGluZSBsb25nIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCl9fVE1faXNfbmFtZWRfdXNlcl9hYm9ydCAodm9pZCogY29uc3QgX190ZGJfcHRyLCB1bnNpZ25lZCBjaGFyKiBfX2NvZGUpCnsKICBzdHJ1Y3QgX19odG1fdGRiICp0ZGIgPSAoc3RydWN0IF9faHRtX3RkYiopX190ZGJfcHRyOwoKICBpZiAodGRiLT5mb3JtYXQgIT0gMSkKICAgIHJldHVybiAwOwoKICBpZiAodGRiLT5hYm9ydF9jb2RlID49IF9IVE1fRklSU1RfVVNFUl9BQk9SVF9DT0RFKQogICAgewogICAgICAqX19jb2RlID0gdGRiLT5hYm9ydF9jb2RlIC0gX0hUTV9GSVJTVF9VU0VSX0FCT1JUX0NPREU7CiAgICAgIHJldHVybiAxOwogICAgfQogIHJldHVybiAwOwp9CgpzdGF0aWMgX19pbmxpbmUgbG9uZyBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpfX1RNX2lzX2lsbGVnYWwgKHZvaWQqIGNvbnN0IF9fdGRiX3B0cikKewogIHN0cnVjdCBfX2h0bV90ZGIgKnRkYiA9IChzdHJ1Y3QgX19odG1fdGRiKilfX3RkYl9wdHI7CgogIHJldHVybiAodGRiLT5mb3JtYXQgPT0gMQoJICAmJiAodGRiLT5hYm9ydF9jb2RlID09IDQgLyogdW5maWx0ZXJlZCBwcm9ncmFtIGludGVycnVwdGlvbiAqLwoJICAgICAgfHwgdGRiLT5hYm9ydF9jb2RlID09IDExIC8qIHJlc3RyaWN0ZWQgaW5zdHJ1Y3Rpb24gKi8pKTsKfQoKc3RhdGljIF9faW5saW5lIGxvbmcgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKX19UTV9pc19mb290cHJpbnRfZXhjZWVkZWQgKHZvaWQqIGNvbnN0IF9fdGRiX3B0cikKewogIHN0cnVjdCBfX2h0bV90ZGIgKnRkYiA9IChzdHJ1Y3QgX19odG1fdGRiKilfX3RkYl9wdHI7CgogIHJldHVybiAodGRiLT5mb3JtYXQgPT0gMQoJICAmJiAodGRiLT5hYm9ydF9jb2RlID09IDcgLyogZmV0Y2ggb3ZlcmZsb3cgKi8KCSAgICAgIHx8IHRkYi0+YWJvcnRfY29kZSA9PSA4IC8qIHN0b3JlIG92ZXJmbG93ICovKSk7Cn0KCnN0YXRpYyBfX2lubGluZSBsb25nIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCl9fVE1faXNfbmVzdGVkX3Rvb19kZWVwICh2b2lkKiBjb25zdCBfX3RkYl9wdHIpCnsKICBzdHJ1Y3QgX19odG1fdGRiICp0ZGIgPSAoc3RydWN0IF9faHRtX3RkYiopX190ZGJfcHRyOwoKICByZXR1cm4gdGRiLT5mb3JtYXQgPT0gMSAmJiB0ZGItPmFib3J0X2NvZGUgPT0gMTM7IC8qIGRlcHRoIGV4Y2VlZGVkICovCn0KCnN0YXRpYyBfX2lubGluZSBsb25nIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCl9fVE1faXNfY29uZmxpY3QgKHZvaWQqIGNvbnN0IF9fdGRiX3B0cikKewogIHN0cnVjdCBfX2h0bV90ZGIgKnRkYiA9IChzdHJ1Y3QgX19odG1fdGRiKilfX3RkYl9wdHI7CgogIHJldHVybiAodGRiLT5mb3JtYXQgPT0gMQoJICAmJiAodGRiLT5hYm9ydF9jb2RlID09IDkgLyogZmV0Y2ggY29uZmxpY3QgKi8KCSAgICAgIHx8IHRkYi0+YWJvcnRfY29kZSA9PSAxMCAvKiBzdG9yZSBjb25mbGljdCAqLykpOwp9CgpzdGF0aWMgX19pbmxpbmUgbG9uZyBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpfX1RNX2lzX2ZhaWx1cmVfcGVyc2lzdGVudCAobG9uZyBjb25zdCBfX3Jlc3VsdCkKewogIHJldHVybiBfX3Jlc3VsdCA9PSBfSFRNX1RCRUdJTl9QRVJTSVNURU5UOwp9CgpzdGF0aWMgX19pbmxpbmUgbG9uZyBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpfX1RNX2ZhaWx1cmVfYWRkcmVzcyAodm9pZCogY29uc3QgX190ZGJfcHRyKQp7CiAgc3RydWN0IF9faHRtX3RkYiAqdGRiID0gKHN0cnVjdCBfX2h0bV90ZGIqKV9fdGRiX3B0cjsKICByZXR1cm4gdGRiLT5hdGlhOwp9CgpzdGF0aWMgX19pbmxpbmUgbG9uZyBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpfX1RNX2ZhaWx1cmVfY29kZSAodm9pZCogY29uc3QgX190ZGJfcHRyKQp7CiAgc3RydWN0IF9faHRtX3RkYiAqdGRiID0gKHN0cnVjdCBfX2h0bV90ZGIqKV9fdGRiX3B0cjsKCiAgcmV0dXJuIHRkYi0+YWJvcnRfY29kZTsKfQoKI2VuZGlmIC8qIF9fczM5MF9fICovCgojZW5kaWYgLyogX19IVE1YTElOVFJJTl9IICAqLwoALyo9PT0tLS0tIGx3cGludHJpbi5oIC0gTFdQIGludHJpbnNpY3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwoKI2lmbmRlZiBfX1g4NklOVFJJTl9ICiNlcnJvciAiTmV2ZXIgdXNlIDxsd3BpbnRyaW4uaD4gZGlyZWN0bHk7IGluY2x1ZGUgPHg4NmludHJpbi5oPiBpbnN0ZWFkLiIKI2VuZGlmCgojaWZuZGVmIF9fTFdQSU5UUklOX0gKI2RlZmluZSBfX0xXUElOVFJJTl9ICgovKiBEZWZpbmUgdGhlIGRlZmF1bHQgYXR0cmlidXRlcyBmb3IgdGhlIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUuICovCiNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygibHdwIikpKQoKLy8vIFBhcnNlcyB0aGUgTFdQQ0IgYXQgdGhlIHNwZWNpZmllZCBhZGRyZXNzIGFuZCBlbmFibGVzCi8vLyAgICAgICAgcHJvZmlsaW5nIGlmIHZhbGlkLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IExMV1BDQiA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2FkZHIKLy8vICAgIEFkZHJlc3MgdG8gdGhlIG5ldyBMaWdodHdlaWdodCBQcm9maWxpbmcgQ29udHJvbCBCbG9jayAoTFdQQ0IpLiBJZiB0aGUKLy8vICAgIExXUENCIGlzIHZhbGlkLCB3cml0ZXMgdGhlIGFkZHJlc3MgaW50byB0aGUgTFdQX0NCQUREUiBNU1IgYW5kIGVuYWJsZXMKLy8vICAgIExpZ2h0d2VpZ2h0IFByb2ZpbGluZy4Kc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMKX19sbHdwY2IgKHZvaWQgKl9fYWRkcikKewogIF9fYnVpbHRpbl9pYTMyX2xsd3BjYihfX2FkZHIpOwp9CgovLy8gRmx1c2hlcyB0aGUgTFdQIHN0YXRlIHRvIG1lbW9yeSBhbmQgcmV0dXJucyB0aGUgYWRkcmVzcyBvZiB0aGUgTFdQQ0IuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gU0xXUENCIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHJldHVybgovLy8gICAgQWRkcmVzcyB0byB0aGUgY3VycmVudCBMaWdodHdlaWdodCBQcm9maWxpbmcgQ29udHJvbCBCbG9jayAoTFdQQ0IpLgovLy8gICAgSWYgTFdQIGlzIG5vdCBjdXJyZW50bHkgZW5hYmxlZCwgcmV0dXJucyBOVUxMLgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkKiBfX0RFRkFVTFRfRk5fQVRUUlMKX19zbHdwY2IgKHZvaWQpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfc2x3cGNiKCk7Cn0KCi8vLyBJbnNlcnRzIHByb2dyYW1tZWQgZXZlbnQgcmVjb3JkIGludG8gdGhlIExXUCBldmVudCByaW5nIGJ1ZmZlcgovLy8gICAgICAgIGFuZCBhZHZhbmNlcyB0aGUgcmluZyBidWZmZXIgcG9pbnRlci4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBMV1BJTlMgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gREFUQTIKLy8vICAgIEEgMzItYml0IHZhbHVlIGlzIHplcm8tZXh0ZW5kZWQgYW5kIGluc2VydGVkIGludG8gdGhlIDY0LWJpdCBEYXRhMiBmaWVsZC4KLy8vIFxwYXJhbSBEQVRBMQovLy8gICAgQSAzMi1iaXQgdmFsdWUgaXMgaW5zZXJ0ZWQgaW50byB0aGUgMzItYml0IERhdGExIGZpZWxkLgovLy8gXHBhcmFtIEZMQUdTCi8vLyAgICBBIDMyLWJpdCBpbW1lZGlhdGUgdmFsdWUgaXMgaW5zZXJ0ZWQgaW50byB0aGUgMzItYml0IEZsYWdzIGZpZWxkLgovLy8gXHJldHVybnMgSWYgdGhlIHJpbmcgYnVmZmVyIGlzIGZ1bGwgYW5kIExXUCBpcyBydW5uaW5nIGluIFN5bmNocm9uaXplZCBNb2RlLAovLy8gICAgdGhlIGV2ZW50IHJlY29yZCBvdmVyd3JpdGVzIHRoZSBsYXN0IHJlY29yZCBpbiB0aGUgYnVmZmVyLCB0aGUgTWlzc2VkRXZlbnRzCi8vLyAgICBjb3VudGVyIGluIHRoZSBMV1BDQiBpcyBpbmNyZW1lbnRlZCwgdGhlIGhlYWQgcG9pbnRlciBpcyBub3QgYWR2YW5jZWQsIGFuZAovLy8gICAgMSBpcyByZXR1cm5lZC4gT3RoZXJ3aXNlIDAgaXMgcmV0dXJuZWQuCiNkZWZpbmUgX19sd3BpbnMzMihEQVRBMiwgREFUQTEsIEZMQUdTKSBcCiAgKF9fYnVpbHRpbl9pYTMyX2x3cGluczMyKCh1bnNpZ25lZCBpbnQpIChEQVRBMiksICh1bnNpZ25lZCBpbnQpIChEQVRBMSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGludCkgKEZMQUdTKSkpCgovLy8gRGVjcmVtZW50cyB0aGUgTFdQIHByb2dyYW1tZWQgdmFsdWUgc2FtcGxlIGV2ZW50IGNvdW50ZXIuIElmIHRoZSByZXN1bHQgaXMKLy8vICAgICAgICBuZWdhdGl2ZSwgaW5zZXJ0cyBhbiBldmVudCByZWNvcmQgaW50byB0aGUgTFdQIGV2ZW50IHJpbmcgYnVmZmVyIGluIG1lbW9yeQovLy8gICAgICAgIGFuZCBhZHZhbmNlcyB0aGUgcmluZyBidWZmZXIgcG9pbnRlci4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBMV1BWQUwgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gREFUQTIKLy8vICAgIEEgMzItYml0IHZhbHVlIGlzIHplcm8tZXh0ZW5kZWQgYW5kIGluc2VydGVkIGludG8gdGhlIDY0LWJpdCBEYXRhMiBmaWVsZC4KLy8vIFxwYXJhbSBEQVRBMQovLy8gICAgQSAzMi1iaXQgdmFsdWUgaXMgaW5zZXJ0ZWQgaW50byB0aGUgMzItYml0IERhdGExIGZpZWxkLgovLy8gXHBhcmFtIEZMQUdTCi8vLyAgICBBIDMyLWJpdCBpbW1lZGlhdGUgdmFsdWUgaXMgaW5zZXJ0ZWQgaW50byB0aGUgMzItYml0IEZsYWdzIGZpZWxkLgojZGVmaW5lIF9fbHdwdmFsMzIoREFUQTIsIERBVEExLCBGTEFHUykgXAogIChfX2J1aWx0aW5faWEzMl9sd3B2YWwzMigodW5zaWduZWQgaW50KSAoREFUQTIpLCAodW5zaWduZWQgaW50KSAoREFUQTEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBpbnQpIChGTEFHUykpKQoKI2lmZGVmIF9feDg2XzY0X18KCi8vLyBJbnNlcnRzIHByb2dyYW1tZWQgZXZlbnQgcmVjb3JkIGludG8gdGhlIExXUCBldmVudCByaW5nIGJ1ZmZlcgovLy8gICAgICAgIGFuZCBhZHZhbmNlcyB0aGUgcmluZyBidWZmZXIgcG9pbnRlci4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBMV1BJTlMgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gREFUQTIKLy8vICAgIEEgNjQtYml0IHZhbHVlIGlzIGluc2VydGVkIGludG8gdGhlIDY0LWJpdCBEYXRhMiBmaWVsZC4KLy8vIFxwYXJhbSBEQVRBMQovLy8gICAgQSAzMi1iaXQgdmFsdWUgaXMgaW5zZXJ0ZWQgaW50byB0aGUgMzItYml0IERhdGExIGZpZWxkLgovLy8gXHBhcmFtIEZMQUdTCi8vLyAgICBBIDMyLWJpdCBpbW1lZGlhdGUgdmFsdWUgaXMgaW5zZXJ0ZWQgaW50byB0aGUgMzItYml0IEZsYWdzIGZpZWxkLgovLy8gXHJldHVybnMgSWYgdGhlIHJpbmcgYnVmZmVyIGlzIGZ1bGwgYW5kIExXUCBpcyBydW5uaW5nIGluIFN5bmNocm9uaXplZCBNb2RlLAovLy8gICAgdGhlIGV2ZW50IHJlY29yZCBvdmVyd3JpdGVzIHRoZSBsYXN0IHJlY29yZCBpbiB0aGUgYnVmZmVyLCB0aGUgTWlzc2VkRXZlbnRzCi8vLyAgICBjb3VudGVyIGluIHRoZSBMV1BDQiBpcyBpbmNyZW1lbnRlZCwgdGhlIGhlYWQgcG9pbnRlciBpcyBub3QgYWR2YW5jZWQsIGFuZAovLy8gICAgMSBpcyByZXR1cm5lZC4gT3RoZXJ3aXNlIDAgaXMgcmV0dXJuZWQuCiNkZWZpbmUgX19sd3BpbnM2NChEQVRBMiwgREFUQTEsIEZMQUdTKSBcCiAgKF9fYnVpbHRpbl9pYTMyX2x3cGluczY0KCh1bnNpZ25lZCBsb25nIGxvbmcpIChEQVRBMiksICh1bnNpZ25lZCBpbnQpIChEQVRBMSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGludCkgKEZMQUdTKSkpCgovLy8gRGVjcmVtZW50cyB0aGUgTFdQIHByb2dyYW1tZWQgdmFsdWUgc2FtcGxlIGV2ZW50IGNvdW50ZXIuIElmIHRoZSByZXN1bHQgaXMKLy8vICAgICAgICBuZWdhdGl2ZSwgaW5zZXJ0cyBhbiBldmVudCByZWNvcmQgaW50byB0aGUgTFdQIGV2ZW50IHJpbmcgYnVmZmVyIGluIG1lbW9yeQovLy8gICAgICAgIGFuZCBhZHZhbmNlcyB0aGUgcmluZyBidWZmZXIgcG9pbnRlci4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBMV1BWQUwgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gREFUQTIKLy8vICAgIEEgNjQtYml0IHZhbHVlIGlzIGFuZCBpbnNlcnRlZCBpbnRvIHRoZSA2NC1iaXQgRGF0YTIgZmllbGQuCi8vLyBccGFyYW0gREFUQTEKLy8vICAgIEEgMzItYml0IHZhbHVlIGlzIGluc2VydGVkIGludG8gdGhlIDMyLWJpdCBEYXRhMSBmaWVsZC4KLy8vIFxwYXJhbSBGTEFHUwovLy8gICAgQSAzMi1iaXQgaW1tZWRpYXRlIHZhbHVlIGlzIGluc2VydGVkIGludG8gdGhlIDMyLWJpdCBGbGFncyBmaWVsZC4KI2RlZmluZSBfX2x3cHZhbDY0KERBVEEyLCBEQVRBMSwgRkxBR1MpIFwKICAoX19idWlsdGluX2lhMzJfbHdwdmFsNjQoKHVuc2lnbmVkIGxvbmcgbG9uZykgKERBVEEyKSwgKHVuc2lnbmVkIGludCkgKERBVEExKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgaW50KSAoRkxBR1MpKSkKCiNlbmRpZgoKI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUwoKI2VuZGlmIC8qIF9fTFdQSU5UUklOX0ggKi8KAG1tX21hbGxvYy5oAHhzYXZlY2ludHJpbi5oAC8qPT09LS0tLSB4dGVzdGludHJpbi5oIC0gWFRFU1QgaW50cmluc2ljIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKi8KCiNpZm5kZWYgX19JTU1JTlRSSU5fSAojZXJyb3IgIk5ldmVyIHVzZSA8eHRlc3RpbnRyaW4uaD4gZGlyZWN0bHk7IGluY2x1ZGUgPGltbWludHJpbi5oPiBpbnN0ZWFkLiIKI2VuZGlmCgojaWZuZGVmIF9fWFRFU1RJTlRSSU5fSAojZGVmaW5lIF9fWFRFU1RJTlRSSU5fSAoKLyogeHRlc3QgcmV0dXJucyBub24temVybyBpZiB0aGUgaW5zdHJ1Y3Rpb24gaXMgZXhlY3V0ZWQgd2l0aGluIGFuIFJUTSBvciBhY3RpdmUKICogSExFIHJlZ2lvbi4gKi8KLyogRklYTUU6IFRoaXMgY2FuIGJlIGFuIGVpdGhlciBvciBmb3IgUlRNL0hMRS4gRGVhbCB3aXRoIHRoaXMgd2hlbiBITEUgaXMKICogc3VwcG9ydGVkLiAqLwpzdGF0aWMgX19pbmxpbmVfXyBpbnQKICAgIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygicnRtIikpKQogICAgX3h0ZXN0KHZvaWQpIHsKICByZXR1cm4gX19idWlsdGluX2lhMzJfeHRlc3QoKTsKfQoKI2VuZGlmCgBvcGVubXBfd3JhcHBlcnMvbWF0aC5oAC8qPT09LS0tLSB0bW1pbnRyaW4uaCAtIEltcGxlbWVudGF0aW9uIG9mIFNTU0UzIGludHJpbnNpY3Mgb24gUG93ZXJQQyAtLS0tLS09PT0KICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKi8KCi8qIEltcGxlbWVudGVkIGZyb20gdGhlIHNwZWNpZmljYXRpb24gaW5jbHVkZWQgaW4gdGhlIEludGVsIEMrKyBDb21waWxlcgogICBVc2VyIEd1aWRlIGFuZCBSZWZlcmVuY2UsIHZlcnNpb24gOS4wLiAgKi8KCiNpZm5kZWYgTk9fV0FSTl9YODZfSU5UUklOU0lDUwovKiBUaGlzIGhlYWRlciBpcyBkaXN0cmlidXRlZCB0byBzaW1wbGlmeSBwb3J0aW5nIHg4Nl82NCBjb2RlIHRoYXQKICAgbWFrZXMgZXhwbGljaXQgdXNlIG9mIEludGVsIGludHJpbnNpY3MgdG8gcG93ZXJwYzY0bGUuCgogICBJdCBpcyB0aGUgdXNlcidzIHJlc3BvbnNpYmlsaXR5IHRvIGRldGVybWluZSBpZiB0aGUgcmVzdWx0cyBhcmUKICAgYWNjZXB0YWJsZSBhbmQgbWFrZSBhZGRpdGlvbmFsIGNoYW5nZXMgYXMgbmVjZXNzYXJ5LgoKICAgTm90ZSB0aGF0IG11Y2ggY29kZSB0aGF0IHVzZXMgSW50ZWwgaW50cmluc2ljcyBjYW4gYmUgcmV3cml0dGVuIGluCiAgIHN0YW5kYXJkIEMgb3IgR05VIEMgZXh0ZW5zaW9ucywgd2hpY2ggYXJlIG1vcmUgcG9ydGFibGUgYW5kIGJldHRlcgogICBvcHRpbWl6ZWQgYWNyb3NzIG11bHRpcGxlIHRhcmdldHMuICAqLwojZW5kaWYKCiNpZm5kZWYgVE1NSU5UUklOX0hfCiNkZWZpbmUgVE1NSU5UUklOX0hfCgojaWYgZGVmaW5lZChfX3BwYzY0X18pICYmIChkZWZpbmVkKF9fbGludXhfXykgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykpCgojaW5jbHVkZSA8YWx0aXZlYy5oPgoKLyogV2UgbmVlZCBkZWZpbml0aW9ucyBmcm9tIHRoZSBTU0UgaGVhZGVyIGZpbGVzLiAgKi8KI2luY2x1ZGUgPHBtbWludHJpbi5oPgoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGkKX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9hYnNfZXBpMTYgKF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKSB2ZWNfYWJzICgoX192OGhpKSBfX0EpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4aQpfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2Fic19lcGkzMiAoX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIHZlY19hYnMgKChfX3Y0c2kpIF9fQSk7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhpCl9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fYWJzX2VwaTggKF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKSB2ZWNfYWJzICgoX192MTZxaSkgX19BKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTY0Cl9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fYWJzX3BpMTYgKF9fbTY0IF9fQSkKewogIF9fdjhoaSBfX0IgPSAoX192OGhpKSAoX192MmR1KSB7IF9fQSwgX19BIH07CiAgcmV0dXJuIChfX202NCkgKChfX3YyZHUpIHZlY19hYnMgKF9fQikpWzBdOwp9CgpleHRlcm4gX19pbmxpbmUgX19tNjQKX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9hYnNfcGkzMiAoX19tNjQgX19BKQp7CiAgX192NHNpIF9fQiA9IChfX3Y0c2kpIChfX3YyZHUpIHsgX19BLCBfX0EgfTsKICByZXR1cm4gKF9fbTY0KSAoKF9fdjJkdSkgdmVjX2FicyAoX19CKSlbMF07Cn0KCmV4dGVybiBfX2lubGluZSBfX202NApfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2Fic19waTggKF9fbTY0IF9fQSkKewogIF9fdjE2cWkgX19CID0gKF9fdjE2cWkpIChfX3YyZHUpIHsgX19BLCBfX0EgfTsKICByZXR1cm4gKF9fbTY0KSAoKF9fdjJkdSkgdmVjX2FicyAoX19CKSlbMF07Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhpCl9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fYWxpZ25yX2VwaTggKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQiwgY29uc3QgdW5zaWduZWQgaW50IF9fY291bnQpCnsKICBpZiAoX19idWlsdGluX2NvbnN0YW50X3AgKF9fY291bnQpICYmIF9fY291bnQgPCAxNikKICAgIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgICAgIF9fQSA9IChfX20xMjhpKSB2ZWNfcmV2ZSAoKF9fdjE2cXUpIF9fQSk7CiAgICAgIF9fQiA9IChfX20xMjhpKSB2ZWNfcmV2ZSAoKF9fdjE2cXUpIF9fQik7CiNlbmRpZgogICAgICBfX0EgPSAoX19tMTI4aSkgdmVjX3NsZCAoKF9fdjE2cXUpIF9fQiwgKF9fdjE2cXUpIF9fQSwgX19jb3VudCk7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogICAgICBfX0EgPSAoX19tMTI4aSkgdmVjX3JldmUgKChfX3YxNnF1KSBfX0EpOwojZW5kaWYKICAgICAgcmV0dXJuIF9fQTsKICAgIH0KCiAgaWYgKF9fY291bnQgPT0gMCkKICAgIHJldHVybiBfX0I7CgogIGlmIChfX2NvdW50ID49IDE2KQogICAgewogICAgICBpZiAoX19jb3VudCA+PSAzMikKCXsKCSAgY29uc3QgX192MTZxdSB6ZXJvID0geyAwIH07CgkgIHJldHVybiAoX19tMTI4aSkgemVybzsKCX0KICAgICAgZWxzZQoJewoJICBjb25zdCBfX3YxNnF1IF9fc2hpZnQgPQoJICAgIHZlY19zcGxhdHMgKCh1bnNpZ25lZCBjaGFyKSAoKF9fY291bnQgLSAxNikgKiA4KSk7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwoJICByZXR1cm4gKF9fbTEyOGkpIHZlY19zcm8gKChfX3YxNnF1KSBfX0EsIF9fc2hpZnQpOwojZWxzZQoJICByZXR1cm4gKF9fbTEyOGkpIHZlY19zbG8gKChfX3YxNnF1KSBfX0EsIF9fc2hpZnQpOwojZW5kaWYKCX0KICAgIH0KICBlbHNlCiAgICB7CiAgICAgIGNvbnN0IF9fdjE2cXUgX19zaGlmdEEgPQoJdmVjX3NwbGF0cyAoKHVuc2lnbmVkIGNoYXIpICgoMTYgLSBfX2NvdW50KSAqIDgpKTsKICAgICAgY29uc3QgX192MTZxdSBfX3NoaWZ0QiA9IHZlY19zcGxhdHMgKCh1bnNpZ25lZCBjaGFyKSAoX19jb3VudCAqIDgpKTsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgICAgIF9fQSA9IChfX20xMjhpKSB2ZWNfc2xvICgoX192MTZxdSkgX19BLCBfX3NoaWZ0QSk7CiAgICAgIF9fQiA9IChfX20xMjhpKSB2ZWNfc3JvICgoX192MTZxdSkgX19CLCBfX3NoaWZ0Qik7CiNlbHNlCiAgICAgIF9fQSA9IChfX20xMjhpKSB2ZWNfc3JvICgoX192MTZxdSkgX19BLCBfX3NoaWZ0QSk7CiAgICAgIF9fQiA9IChfX20xMjhpKSB2ZWNfc2xvICgoX192MTZxdSkgX19CLCBfX3NoaWZ0Qik7CiNlbmRpZgogICAgICByZXR1cm4gKF9fbTEyOGkpIHZlY19vciAoKF9fdjE2cXUpIF9fQSwgKF9fdjE2cXUpIF9fQik7CiAgICB9Cn0KCmV4dGVybiBfX2lubGluZSBfX202NApfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2FsaWducl9waTggKF9fbTY0IF9fQSwgX19tNjQgX19CLCB1bnNpZ25lZCBpbnQgX19jb3VudCkKewogIGlmIChfX2NvdW50IDwgMTYpCiAgICB7CiAgICAgIF9fdjJkdSBfX0MgPSB7IF9fQiwgX19BIH07CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogICAgICBjb25zdCBfX3Y0c3UgX19zaGlmdCA9IHsgX19jb3VudCA8PCAzLCAwLCAwLCAwIH07CiAgICAgIF9fQyA9IChfX3YyZHUpIHZlY19zcm8gKChfX3YxNnF1KSBfX0MsIChfX3YxNnF1KSBfX3NoaWZ0KTsKI2Vsc2UKICAgICAgY29uc3QgX192NHN1IF9fc2hpZnQgPSB7IDAsIDAsIDAsIF9fY291bnQgPDwgMyB9OwogICAgICBfX0MgPSAoX192MmR1KSB2ZWNfc2xvICgoX192MTZxdSkgX19DLCAoX192MTZxdSkgX19zaGlmdCk7CiNlbmRpZgogICAgICByZXR1cm4gKF9fbTY0KSBfX0NbMF07CiAgICB9CiAgZWxzZQogICAgewogICAgICBjb25zdCBfX202NCBfX3plcm8gPSB7IDAgfTsKICAgICAgcmV0dXJuIF9femVybzsKICAgIH0KfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGkKX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9oYWRkX2VwaTE2IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICBjb25zdCBfX3YxNnF1IF9fUCA9CiAgICB7ICAwLCAgMSwgIDQsICA1LCAgOCwgIDksIDEyLCAxMywgMTYsIDE3LCAyMCwgMjEsIDI0LCAyNSwgMjgsIDI5IH07CiAgY29uc3QgX192MTZxdSBfX1EgPQogICAgeyAgMiwgIDMsICA2LCAgNywgMTAsIDExLCAxNCwgMTUsIDE4LCAxOSwgMjIsIDIzLCAyNiwgMjcsIDMwLCAzMSB9OwogIF9fdjhoaSBfX0MgPSB2ZWNfcGVybSAoKF9fdjhoaSkgX19BLCAoX192OGhpKSBfX0IsIF9fUCk7CiAgX192OGhpIF9fRCA9IHZlY19wZXJtICgoX192OGhpKSBfX0EsIChfX3Y4aGkpIF9fQiwgX19RKTsKICByZXR1cm4gKF9fbTEyOGkpIHZlY19hZGQgKF9fQywgX19EKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGkKX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9oYWRkX2VwaTMyIChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICBjb25zdCBfX3YxNnF1IF9fUCA9CiAgICB7ICAwLCAgMSwgIDIsICAzLCAgOCwgIDksIDEwLCAxMSwgMTYsIDE3LCAxOCwgMTksIDI0LCAyNSwgMjYsIDI3IH07CiAgY29uc3QgX192MTZxdSBfX1EgPQogICAgeyAgNCwgIDUsICA2LCAgNywgMTIsIDEzLCAxNCwgMTUsIDIwLCAyMSwgMjIsIDIzLCAyOCwgMjksIDMwLCAzMSB9OwogIF9fdjRzaSBfX0MgPSB2ZWNfcGVybSAoKF9fdjRzaSkgX19BLCAoX192NHNpKSBfX0IsIF9fUCk7CiAgX192NHNpIF9fRCA9IHZlY19wZXJtICgoX192NHNpKSBfX0EsIChfX3Y0c2kpIF9fQiwgX19RKTsKICByZXR1cm4gKF9fbTEyOGkpIHZlY19hZGQgKF9fQywgX19EKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTY0Cl9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1faGFkZF9waTE2IChfX202NCBfX0EsIF9fbTY0IF9fQikKewogIF9fdjhoaSBfX0MgPSAoX192OGhpKSAoX192MmR1KSB7IF9fQSwgX19CIH07CiAgY29uc3QgX192MTZxdSBfX1AgPQogICAgeyAgMCwgIDEsICA0LCAgNSwgIDgsICA5LCAxMiwgMTMsICAwLCAgMSwgIDQsICA1LCAgOCwgIDksIDEyLCAxMyB9OwogIGNvbnN0IF9fdjE2cXUgX19RID0KICAgIHsgIDIsICAzLCAgNiwgIDcsIDEwLCAxMSwgMTQsIDE1LCAgMiwgIDMsICA2LCAgNywgMTAsIDExLCAxNCwgMTUgfTsKICBfX3Y4aGkgX19EID0gdmVjX3Blcm0gKF9fQywgX19DLCBfX1EpOwogIF9fQyA9IHZlY19wZXJtIChfX0MsIF9fQywgX19QKTsKICBfX0MgPSB2ZWNfYWRkIChfX0MsIF9fRCk7CiAgcmV0dXJuIChfX202NCkgKChfX3YyZHUpIF9fQylbMV07Cn0KCmV4dGVybiBfX2lubGluZSBfX202NApfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2hhZGRfcGkzMiAoX19tNjQgX19BLCBfX202NCBfX0IpCnsKICBfX3Y0c2kgX19DID0gKF9fdjRzaSkgKF9fdjJkdSkgeyBfX0EsIF9fQiB9OwogIGNvbnN0IF9fdjE2cXUgX19QID0KICAgIHsgIDAsICAxLCAgMiwgIDMsICA4LCAgOSwgMTAsIDExLCAgMCwgIDEsICAyLCAgMywgIDgsICA5LCAxMCwgMTEgfTsKICBjb25zdCBfX3YxNnF1IF9fUSA9CiAgICB7ICA0LCAgNSwgIDYsICA3LCAxMiwgMTMsIDE0LCAxNSwgIDQsICA1LCAgNiwgIDcsIDEyLCAxMywgMTQsIDE1IH07CiAgX192NHNpIF9fRCA9IHZlY19wZXJtIChfX0MsIF9fQywgX19RKTsKICBfX0MgPSB2ZWNfcGVybSAoX19DLCBfX0MsIF9fUCk7CiAgX19DID0gdmVjX2FkZCAoX19DLCBfX0QpOwogIHJldHVybiAoX19tNjQpICgoX192MmR1KSBfX0MpWzFdOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4aQpfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2hhZGRzX2VwaTE2IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICBfX3Y0c2kgX19DID0geyAwIH0sIF9fRCA9IHsgMCB9OwogIF9fQyA9IHZlY19zdW00cyAoKF9fdjhoaSkgX19BLCBfX0MpOwogIF9fRCA9IHZlY19zdW00cyAoKF9fdjhoaSkgX19CLCBfX0QpOwogIF9fQyA9IChfX3Y0c2kpIHZlY19wYWNrcyAoX19DLCBfX0QpOwogIHJldHVybiAoX19tMTI4aSkgX19DOwp9CgpleHRlcm4gX19pbmxpbmUgX19tNjQKX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9oYWRkc19waTE2IChfX202NCBfX0EsIF9fbTY0IF9fQikKewogIGNvbnN0IF9fdjRzaSBfX3plcm8gPSB7IDAgfTsKICBfX3Y4aGkgX19DID0gKF9fdjhoaSkgKF9fdjJkdSkgeyBfX0EsIF9fQiB9OwogIF9fdjRzaSBfX0QgPSB2ZWNfc3VtNHMgKF9fQywgX196ZXJvKTsKICBfX0MgPSB2ZWNfcGFja3MgKF9fRCwgX19EKTsKICByZXR1cm4gKF9fbTY0KSAoKF9fdjJkdSkgX19DKVsxXTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGkKX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9oc3ViX2VwaTE2IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICBjb25zdCBfX3YxNnF1IF9fUCA9CiAgICB7ICAwLCAgMSwgIDQsICA1LCAgOCwgIDksIDEyLCAxMywgMTYsIDE3LCAyMCwgMjEsIDI0LCAyNSwgMjgsIDI5IH07CiAgY29uc3QgX192MTZxdSBfX1EgPQogICAgeyAgMiwgIDMsICA2LCAgNywgMTAsIDExLCAxNCwgMTUsIDE4LCAxOSwgMjIsIDIzLCAyNiwgMjcsIDMwLCAzMSB9OwogIF9fdjhoaSBfX0MgPSB2ZWNfcGVybSAoKF9fdjhoaSkgX19BLCAoX192OGhpKSBfX0IsIF9fUCk7CiAgX192OGhpIF9fRCA9IHZlY19wZXJtICgoX192OGhpKSBfX0EsIChfX3Y4aGkpIF9fQiwgX19RKTsKICByZXR1cm4gKF9fbTEyOGkpIHZlY19zdWIgKF9fQywgX19EKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGkKX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9oc3ViX2VwaTMyIChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICBjb25zdCBfX3YxNnF1IF9fUCA9CiAgICB7ICAwLCAgMSwgIDIsICAzLCAgOCwgIDksIDEwLCAxMSwgMTYsIDE3LCAxOCwgMTksIDI0LCAyNSwgMjYsIDI3IH07CiAgY29uc3QgX192MTZxdSBfX1EgPQogICAgeyAgNCwgIDUsICA2LCAgNywgMTIsIDEzLCAxNCwgMTUsIDIwLCAyMSwgMjIsIDIzLCAyOCwgMjksIDMwLCAzMSB9OwogIF9fdjRzaSBfX0MgPSB2ZWNfcGVybSAoKF9fdjRzaSkgX19BLCAoX192NHNpKSBfX0IsIF9fUCk7CiAgX192NHNpIF9fRCA9IHZlY19wZXJtICgoX192NHNpKSBfX0EsIChfX3Y0c2kpIF9fQiwgX19RKTsKICByZXR1cm4gKF9fbTEyOGkpIHZlY19zdWIgKF9fQywgX19EKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTY0Cl9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1faHN1Yl9waTE2IChfX202NCBfX0EsIF9fbTY0IF9fQikKewogIGNvbnN0IF9fdjE2cXUgX19QID0KICAgIHsgIDAsICAxLCAgNCwgIDUsICA4LCAgOSwgMTIsIDEzLCAgMCwgIDEsICA0LCAgNSwgIDgsICA5LCAxMiwgMTMgfTsKICBjb25zdCBfX3YxNnF1IF9fUSA9CiAgICB7ICAyLCAgMywgIDYsICA3LCAxMCwgMTEsIDE0LCAxNSwgIDIsICAzLCAgNiwgIDcsIDEwLCAxMSwgMTQsIDE1IH07CiAgX192OGhpIF9fQyA9IChfX3Y4aGkpIChfX3YyZHUpIHsgX19BLCBfX0IgfTsKICBfX3Y4aGkgX19EID0gdmVjX3Blcm0gKF9fQywgX19DLCBfX1EpOwogIF9fQyA9IHZlY19wZXJtIChfX0MsIF9fQywgX19QKTsKICBfX0MgPSB2ZWNfc3ViIChfX0MsIF9fRCk7CiAgcmV0dXJuIChfX202NCkgKChfX3YyZHUpIF9fQylbMV07Cn0KCmV4dGVybiBfX2lubGluZSBfX202NApfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2hzdWJfcGkzMiAoX19tNjQgX19BLCBfX202NCBfX0IpCnsKICBjb25zdCBfX3YxNnF1IF9fUCA9CiAgICB7ICAwLCAgMSwgIDIsICAzLCAgOCwgIDksIDEwLCAxMSwgIDAsICAxLCAgMiwgIDMsICA4LCAgOSwgMTAsIDExIH07CiAgY29uc3QgX192MTZxdSBfX1EgPQogICAgeyAgNCwgIDUsICA2LCAgNywgMTIsIDEzLCAxNCwgMTUsICA0LCAgNSwgIDYsICA3LCAxMiwgMTMsIDE0LCAxNSB9OwogIF9fdjRzaSBfX0MgPSAoX192NHNpKSAoX192MmR1KSB7IF9fQSwgX19CIH07CiAgX192NHNpIF9fRCA9IHZlY19wZXJtIChfX0MsIF9fQywgX19RKTsKICBfX0MgPSB2ZWNfcGVybSAoX19DLCBfX0MsIF9fUCk7CiAgX19DID0gdmVjX3N1YiAoX19DLCBfX0QpOwogIHJldHVybiAoX19tNjQpICgoX192MmR1KSBfX0MpWzFdOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4aQpfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2hzdWJzX2VwaTE2IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICBjb25zdCBfX3YxNnF1IF9fUCA9CiAgICB7ICAwLCAgMSwgIDQsICA1LCAgOCwgIDksIDEyLCAxMywgMTYsIDE3LCAyMCwgMjEsIDI0LCAyNSwgMjgsIDI5IH07CiAgY29uc3QgX192MTZxdSBfX1EgPQogICAgeyAgMiwgIDMsICA2LCAgNywgMTAsIDExLCAxNCwgMTUsIDE4LCAxOSwgMjIsIDIzLCAyNiwgMjcsIDMwLCAzMSB9OwogIF9fdjhoaSBfX0MgPSB2ZWNfcGVybSAoKF9fdjhoaSkgX19BLCAoX192OGhpKSBfX0IsIF9fUCk7CiAgX192OGhpIF9fRCA9IHZlY19wZXJtICgoX192OGhpKSBfX0EsIChfX3Y4aGkpIF9fQiwgX19RKTsKICByZXR1cm4gKF9fbTEyOGkpIHZlY19zdWJzIChfX0MsIF9fRCk7Cn0KCmV4dGVybiBfX2lubGluZSBfX202NApfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2hzdWJzX3BpMTYgKF9fbTY0IF9fQSwgX19tNjQgX19CKQp7CiAgY29uc3QgX192MTZxdSBfX1AgPQogICAgeyAgMCwgIDEsICA0LCAgNSwgIDgsICA5LCAxMiwgMTMsICAwLCAgMSwgIDQsICA1LCAgOCwgIDksIDEyLCAxMyB9OwogIGNvbnN0IF9fdjE2cXUgX19RID0KICAgIHsgIDIsICAzLCAgNiwgIDcsIDEwLCAxMSwgMTQsIDE1LCAgMiwgIDMsICA2LCAgNywgMTAsIDExLCAxNCwgMTUgfTsKICBfX3Y4aGkgX19DID0gKF9fdjhoaSkgKF9fdjJkdSkgeyBfX0EsIF9fQiB9OwogIF9fdjhoaSBfX0QgPSB2ZWNfcGVybSAoX19DLCBfX0MsIF9fUCk7CiAgX192OGhpIF9fRSA9IHZlY19wZXJtIChfX0MsIF9fQywgX19RKTsKICBfX0MgPSB2ZWNfc3VicyAoX19ELCBfX0UpOwogIHJldHVybiAoX19tNjQpICgoX192MmR1KSBfX0MpWzFdOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4aQpfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX3NodWZmbGVfZXBpOCAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgY29uc3QgX192MTZxaSBfX3plcm8gPSB7IDAgfTsKICBfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX3NlbGVjdCA9IHZlY19jbXBsdCAoKF9fdjE2cWkpIF9fQiwgX196ZXJvKTsKICBfX3YxNnFpIF9fQyA9IHZlY19wZXJtICgoX192MTZxaSkgX19BLCAoX192MTZxaSkgX19BLCAoX192MTZxdSkgX19CKTsKICByZXR1cm4gKF9fbTEyOGkpIHZlY19zZWwgKF9fQywgX196ZXJvLCBfX3NlbGVjdCk7Cn0KCmV4dGVybiBfX2lubGluZSBfX202NApfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX3NodWZmbGVfcGk4IChfX202NCBfX0EsIF9fbTY0IF9fQikKewogIGNvbnN0IF9fdjE2cWkgX196ZXJvID0geyAwIH07CiAgX192MTZxaSBfX0MgPSAoX192MTZxaSkgKF9fdjJkdSkgeyBfX0EsIF9fQSB9OwogIF9fdjE2cWkgX19EID0gKF9fdjE2cWkpIChfX3YyZHUpIHsgX19CLCBfX0IgfTsKICBfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX3NlbGVjdCA9IHZlY19jbXBsdCAoKF9fdjE2cWkpIF9fRCwgX196ZXJvKTsKICBfX0MgPSB2ZWNfcGVybSAoKF9fdjE2cWkpIF9fQywgKF9fdjE2cWkpIF9fQywgKF9fdjE2cXUpIF9fRCk7CiAgX19DID0gdmVjX3NlbCAoX19DLCBfX3plcm8sIF9fc2VsZWN0KTsKICByZXR1cm4gKF9fbTY0KSAoKF9fdjJkdSkgKF9fQykpWzBdOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4aQpfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX3NpZ25fZXBpOCAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgY29uc3QgX192MTZxaSBfX3plcm8gPSB7IDAgfTsKICBfX3YxNnFpIF9fc2VsZWN0bmVnID0gKF9fdjE2cWkpIHZlY19jbXBsdCAoKF9fdjE2cWkpIF9fQiwgX196ZXJvKTsKICBfX3YxNnFpIF9fc2VsZWN0cG9zID0KICAgIChfX3YxNnFpKSB2ZWNfbmVnICgoX192MTZxaSkgdmVjX2NtcGd0ICgoX192MTZxaSkgX19CLCBfX3plcm8pKTsKICBfX3YxNnFpIF9fY29udiA9IHZlY19hZGQgKF9fc2VsZWN0bmVnLCBfX3NlbGVjdHBvcyk7CiAgcmV0dXJuIChfX20xMjhpKSB2ZWNfbXVsICgoX192MTZxaSkgX19BLCAoX192MTZxaSkgX19jb252KTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGkKX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9zaWduX2VwaTE2IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICBjb25zdCBfX3Y4aGkgX196ZXJvID0geyAwIH07CiAgX192OGhpIF9fc2VsZWN0bmVnID0gKF9fdjhoaSkgdmVjX2NtcGx0ICgoX192OGhpKSBfX0IsIF9femVybyk7CiAgX192OGhpIF9fc2VsZWN0cG9zID0KICAgIChfX3Y4aGkpIHZlY19uZWcgKChfX3Y4aGkpIHZlY19jbXBndCAoKF9fdjhoaSkgX19CLCBfX3plcm8pKTsKICBfX3Y4aGkgX19jb252ID0gdmVjX2FkZCAoX19zZWxlY3RuZWcsIF9fc2VsZWN0cG9zKTsKICByZXR1cm4gKF9fbTEyOGkpIHZlY19tdWwgKChfX3Y4aGkpIF9fQSwgKF9fdjhoaSkgX19jb252KTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGkKX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9zaWduX2VwaTMyIChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICBjb25zdCBfX3Y0c2kgX196ZXJvID0geyAwIH07CiAgX192NHNpIF9fc2VsZWN0bmVnID0gKF9fdjRzaSkgdmVjX2NtcGx0ICgoX192NHNpKSBfX0IsIF9femVybyk7CiAgX192NHNpIF9fc2VsZWN0cG9zID0KICAgIChfX3Y0c2kpIHZlY19uZWcgKChfX3Y0c2kpIHZlY19jbXBndCAoKF9fdjRzaSkgX19CLCBfX3plcm8pKTsKICBfX3Y0c2kgX19jb252ID0gdmVjX2FkZCAoX19zZWxlY3RuZWcsIF9fc2VsZWN0cG9zKTsKICByZXR1cm4gKF9fbTEyOGkpIHZlY19tdWwgKChfX3Y0c2kpIF9fQSwgKF9fdjRzaSkgX19jb252KTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTY0Cl9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fc2lnbl9waTggKF9fbTY0IF9fQSwgX19tNjQgX19CKQp7CiAgY29uc3QgX192MTZxaSBfX3plcm8gPSB7IDAgfTsKICBfX3YxNnFpIF9fQyA9IChfX3YxNnFpKSAoX192MmR1KSB7IF9fQSwgX19BIH07CiAgX192MTZxaSBfX0QgPSAoX192MTZxaSkgKF9fdjJkdSkgeyBfX0IsIF9fQiB9OwogIF9fQyA9IChfX3YxNnFpKSBfbW1fc2lnbl9lcGk4ICgoX19tMTI4aSkgX19DLCAoX19tMTI4aSkgX19EKTsKICByZXR1cm4gKF9fbTY0KSAoKF9fdjJkdSkgKF9fQykpWzBdOwp9CgpleHRlcm4gX19pbmxpbmUgX19tNjQKX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9zaWduX3BpMTYgKF9fbTY0IF9fQSwgX19tNjQgX19CKQp7CiAgY29uc3QgX192OGhpIF9femVybyA9IHsgMCB9OwogIF9fdjhoaSBfX0MgPSAoX192OGhpKSAoX192MmR1KSB7IF9fQSwgX19BIH07CiAgX192OGhpIF9fRCA9IChfX3Y4aGkpIChfX3YyZHUpIHsgX19CLCBfX0IgfTsKICBfX0MgPSAoX192OGhpKSBfbW1fc2lnbl9lcGkxNiAoKF9fbTEyOGkpIF9fQywgKF9fbTEyOGkpIF9fRCk7CiAgcmV0dXJuIChfX202NCkgKChfX3YyZHUpIChfX0MpKVswXTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTY0Cl9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fc2lnbl9waTMyIChfX202NCBfX0EsIF9fbTY0IF9fQikKewogIGNvbnN0IF9fdjRzaSBfX3plcm8gPSB7IDAgfTsKICBfX3Y0c2kgX19DID0gKF9fdjRzaSkgKF9fdjJkdSkgeyBfX0EsIF9fQSB9OwogIF9fdjRzaSBfX0QgPSAoX192NHNpKSAoX192MmR1KSB7IF9fQiwgX19CIH07CiAgX19DID0gKF9fdjRzaSkgX21tX3NpZ25fZXBpMzIgKChfX20xMjhpKSBfX0MsIChfX20xMjhpKSBfX0QpOwogIHJldHVybiAoX19tNjQpICgoX192MmR1KSAoX19DKSlbMF07Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhpCl9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fbWFkZHVic19lcGkxNiAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgX192OGhpIF9fdW5zaWduZWQgPSB2ZWNfc3BsYXRzICgoc2lnbmVkIHNob3J0KSAweDAwZmYpOwogIF9fdjhoaSBfX0MgPSB2ZWNfYW5kICh2ZWNfdW5wYWNraCAoKF9fdjE2cWkpIF9fQSksIF9fdW5zaWduZWQpOwogIF9fdjhoaSBfX0QgPSB2ZWNfYW5kICh2ZWNfdW5wYWNrbCAoKF9fdjE2cWkpIF9fQSksIF9fdW5zaWduZWQpOwogIF9fdjhoaSBfX0UgPSB2ZWNfdW5wYWNraCAoKF9fdjE2cWkpIF9fQik7CiAgX192OGhpIF9fRiA9IHZlY191bnBhY2tsICgoX192MTZxaSkgX19CKTsKICBfX0MgPSB2ZWNfbXVsIChfX0MsIF9fRSk7CiAgX19EID0gdmVjX211bCAoX19ELCBfX0YpOwogIGNvbnN0IF9fdjE2cXUgX19vZGRzICA9CiAgICB7ICAwLCAgMSwgIDQsICA1LCAgOCwgIDksIDEyLCAxMywgMTYsIDE3LCAyMCwgMjEsIDI0LCAyNSwgMjgsIDI5IH07CiAgY29uc3QgX192MTZxdSBfX2V2ZW5zID0KICAgIHsgIDIsICAzLCAgNiwgIDcsIDEwLCAxMSwgMTQsIDE1LCAxOCwgMTksIDIyLCAyMywgMjYsIDI3LCAzMCwgMzEgfTsKICBfX0UgPSB2ZWNfcGVybSAoX19DLCBfX0QsIF9fb2Rkcyk7CiAgX19GID0gdmVjX3Blcm0gKF9fQywgX19ELCBfX2V2ZW5zKTsKICByZXR1cm4gKF9fbTEyOGkpIHZlY19hZGRzIChfX0UsIF9fRik7Cn0KCmV4dGVybiBfX2lubGluZSBfX202NApfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX21hZGR1YnNfcGkxNiAoX19tNjQgX19BLCBfX202NCBfX0IpCnsKICBfX3Y4aGkgX19DID0gKF9fdjhoaSkgKF9fdjJkdSkgeyBfX0EsIF9fQSB9OwogIF9fQyA9IHZlY191bnBhY2tsICgoX192MTZxaSkgX19DKTsKICBjb25zdCBfX3Y4aGkgX191bnNpZ25lZCA9IHZlY19zcGxhdHMgKChzaWduZWQgc2hvcnQpIDB4MDBmZik7CiAgX19DID0gdmVjX2FuZCAoX19DLCBfX3Vuc2lnbmVkKTsKICBfX3Y4aGkgX19EID0gKF9fdjhoaSkgKF9fdjJkdSkgeyBfX0IsIF9fQiB9OwogIF9fRCA9IHZlY191bnBhY2tsICgoX192MTZxaSkgX19EKTsKICBfX0QgPSB2ZWNfbXVsIChfX0MsIF9fRCk7CiAgY29uc3QgX192MTZxdSBfX29kZHMgID0KICAgIHsgIDAsICAxLCAgNCwgIDUsICA4LCAgOSwgMTIsIDEzLCAxNiwgMTcsIDIwLCAyMSwgMjQsIDI1LCAyOCwgMjkgfTsKICBjb25zdCBfX3YxNnF1IF9fZXZlbnMgPQogICAgeyAgMiwgIDMsICA2LCAgNywgMTAsIDExLCAxNCwgMTUsIDE4LCAxOSwgMjIsIDIzLCAyNiwgMjcsIDMwLCAzMSB9OwogIF9fQyA9IHZlY19wZXJtIChfX0QsIF9fRCwgX19vZGRzKTsKICBfX0QgPSB2ZWNfcGVybSAoX19ELCBfX0QsIF9fZXZlbnMpOwogIF9fQyA9IHZlY19hZGRzIChfX0MsIF9fRCk7CiAgcmV0dXJuIChfX202NCkgKChfX3YyZHUpIChfX0MpKVswXTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGkKX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9tdWxocnNfZXBpMTYgKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIF9fdjRzaSBfX0MgPSB2ZWNfdW5wYWNraCAoKF9fdjhoaSkgX19BKTsKICBfX3Y0c2kgX19EID0gdmVjX3VucGFja2ggKChfX3Y4aGkpIF9fQik7CiAgX19DID0gdmVjX211bCAoX19DLCBfX0QpOwogIF9fRCA9IHZlY191bnBhY2tsICgoX192OGhpKSBfX0EpOwogIF9fdjRzaSBfX0UgPSB2ZWNfdW5wYWNrbCAoKF9fdjhoaSkgX19CKTsKICBfX0QgPSB2ZWNfbXVsIChfX0QsIF9fRSk7CiAgY29uc3QgX192NHN1IF9fc2hpZnQgPSB2ZWNfc3BsYXRzICgodW5zaWduZWQgaW50KSAxNCk7CiAgX19DID0gdmVjX3NyIChfX0MsIF9fc2hpZnQpOwogIF9fRCA9IHZlY19zciAoX19ELCBfX3NoaWZ0KTsKICBjb25zdCBfX3Y0c2kgX19vbmVzID0gdmVjX3NwbGF0cyAoKHNpZ25lZCBpbnQpIDEpOwogIF9fQyA9IHZlY19hZGQgKF9fQywgX19vbmVzKTsKICBfX0MgPSB2ZWNfc3IgKF9fQywgKF9fdjRzdSkgX19vbmVzKTsKICBfX0QgPSB2ZWNfYWRkIChfX0QsIF9fb25lcyk7CiAgX19EID0gdmVjX3NyIChfX0QsIChfX3Y0c3UpIF9fb25lcyk7CiAgcmV0dXJuIChfX20xMjhpKSB2ZWNfcGFjayAoX19DLCBfX0QpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tNjQKX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9tdWxocnNfcGkxNiAoX19tNjQgX19BLCBfX202NCBfX0IpCnsKICBfX3Y0c2kgX19DID0gKF9fdjRzaSkgKF9fdjJkdSkgeyBfX0EsIF9fQSB9OwogIF9fQyA9IHZlY191bnBhY2toICgoX192OGhpKSBfX0MpOwogIF9fdjRzaSBfX0QgPSAoX192NHNpKSAoX192MmR1KSB7IF9fQiwgX19CIH07CiAgX19EID0gdmVjX3VucGFja2ggKChfX3Y4aGkpIF9fRCk7CiAgX19DID0gdmVjX211bCAoX19DLCBfX0QpOwogIGNvbnN0IF9fdjRzdSBfX3NoaWZ0ID0gdmVjX3NwbGF0cyAoKHVuc2lnbmVkIGludCkgMTQpOwogIF9fQyA9IHZlY19zciAoX19DLCBfX3NoaWZ0KTsKICBjb25zdCBfX3Y0c2kgX19vbmVzID0gdmVjX3NwbGF0cyAoKHNpZ25lZCBpbnQpIDEpOwogIF9fQyA9IHZlY19hZGQgKF9fQywgX19vbmVzKTsKICBfX0MgPSB2ZWNfc3IgKF9fQywgKF9fdjRzdSkgX19vbmVzKTsKICBfX3Y4aGkgX19FID0gdmVjX3BhY2sgKF9fQywgX19EKTsKICByZXR1cm4gKF9fbTY0KSAoKF9fdjJkdSkgKF9fRSkpWzBdOwp9CgojZWxzZQojaW5jbHVkZV9uZXh0IDx0bW1pbnRyaW4uaD4KI2VuZGlmIC8qIGRlZmluZWQoX19wcGM2NF9fKSAmJiAoZGVmaW5lZChfX2xpbnV4X18pIHx8IGRlZmluZWQoX19GcmVlQlNEX18pKSAgIFwKICAgICAgICAqLwoKI2VuZGlmIC8qIFRNTUlOVFJJTl9IXyAqLwoAQFx3K0AAXFwAdW5zdXBwb3J0ZWQgZW5jb2RpbmcAcm9vdC9maWxlcy8AQ29tcGlsZXI6OkNvcHkgY2FsbGVkIQBleHRlcm5hbC9yZWdleC1yZTIvcmUyL25mYS5jYwBcYgBDYwBEdXBsb3lhbgBOa28ATmwAU3lyaWFjAFNJR0FCUlQAdW5leHBlY3RlZCBwX3R5cGUASW5pdCgpIGRpZCBub3Qgc2V0IGdldGNwdV9mbl8Ac3ltYm9sIG91dCBvZiByYW5nZQBjaGFyAHVuc2lnbmVkIGludABEZABjbwBscwBycwBndAAhAFJlcXVlc3RlZCBwcmVmaXggc2l6ZSAAPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KAHRyZWUtPklzQnRyZWUoKQAgKAAsIGxlbiA9IABdIGhhcyBhbiBpbnZhbGlkIGxlbmd0aCAAZXh0ZXJuYWwvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvZXNjYXBpbmcuY2MAbm8AaW5pdHkAbmV3X2ggIT0gbnVsbHB0cgB3LT53YWl0cC0+Y29uZCA9PSBudWxscHRyAFJlYWRlclVubG9jayAAZXh0ZXJuYWwvYm9yaW5nc3NsL3NyYy9jcnlwdG8vZmlwc21vZHVsZS9ibi9qYWNvYmkuYwBleHRlcm5hbC9ib3Jpbmdzc2wvc3JjL2NyeXB0by9maXBzbW9kdWxlL2VjL29jdC5jAEVDRFNBIEtleUdlbiBmYWlsZWQKAGV4dGVybmFsL2JvcmluZ3NzbC9zcmMvY3J5cHRvL2ZpcHNtb2R1bGUvY2lwaGVyL2VfYWVzLmMARGlmZmllLUhlbGxtYW4gcm91dGluZXMARUNESCByb3V0aW5lcwBreXRoZS5wcm90by5BbmFseXNpc1JlcXVlc3QucmV2aXNpb24Aa3l0aGUucHJvdG8uSW5kZXhlZENvbXBpbGF0aW9uLkluZGV4LnJldmlzaW9ucwBreXRoZS5wcm90by5jb21tb24uT3JpZ2luLnJldmlzaW9uAGt5dGhlL3Byb3RvL2ZpbGVjb250ZXh0LnByb3RvAC1YY2xhbmctb25seT0AL3Jvb3QAPT0APgBTeXN0ZW0gaGVhZGVyIHByZWZpeDogAE5vIEZpbGVSZWYgZm9yIABleHRlcm5hbC9reXRoZS9reXRoZS9jeHgvaW5kZXhlci9jeHgvaW5kZXhlZF9wYXJlbnRfbWFwLmNjAC8qPT09LS0tLSBhdng1MTJ2bGJ3aW50cmluLmggLSBBVlg1MTJWTCBhbmQgQVZYNTEyQlcgaW50cmluc2ljcyAtLS0tLS0tLS0tLS09PT0KICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKi8KCiNpZm5kZWYgX19JTU1JTlRSSU5fSAojZXJyb3IgIk5ldmVyIHVzZSA8YXZ4NTEydmxid2ludHJpbi5oPiBkaXJlY3RseTsgaW5jbHVkZSA8aW1taW50cmluLmg+IGluc3RlYWQuIgojZW5kaWYKCiNpZm5kZWYgX19BVlg1MTJWTEJXSU5UUklOX0gKI2RlZmluZSBfX0FWWDUxMlZMQldJTlRSSU5fSAoKLyogRGVmaW5lIHRoZSBkZWZhdWx0IGF0dHJpYnV0ZXMgZm9yIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlLiAqLwojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oImF2eDUxMnZsLGF2eDUxMmJ3IiksIF9fbWluX3ZlY3Rvcl93aWR0aF9fKDEyOCkpKQojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUzI1NiBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oImF2eDUxMnZsLGF2eDUxMmJ3IiksIF9fbWluX3ZlY3Rvcl93aWR0aF9fKDI1NikpKQoKLyogSW50ZWdlciBjb21wYXJlICovCgojZGVmaW5lIF9tbV9jbXBfZXBpOF9tYXNrKGEsIGIsIHApIFwKICAoKF9fbW1hc2sxNilfX2J1aWx0aW5faWEzMl9jbXBiMTI4X21hc2soKF9fdjE2cWkpKF9fbTEyOGkpKGEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKShfX20xMjhpKShiKSwgKGludCkocCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNiktMSkpCgojZGVmaW5lIF9tbV9tYXNrX2NtcF9lcGk4X21hc2sobSwgYSwgYiwgcCkgXAogICgoX19tbWFzazE2KV9fYnVpbHRpbl9pYTMyX2NtcGIxMjhfbWFzaygoX192MTZxaSkoX19tMTI4aSkoYSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpKF9fbTEyOGkpKGIpLCAoaW50KShwKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KShtKSkpCgojZGVmaW5lIF9tbV9jbXBfZXB1OF9tYXNrKGEsIGIsIHApIFwKICAoKF9fbW1hc2sxNilfX2J1aWx0aW5faWEzMl91Y21wYjEyOF9tYXNrKChfX3YxNnFpKShfX20xMjhpKShhKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpKF9fbTEyOGkpKGIpLCAoaW50KShwKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNiktMSkpCgojZGVmaW5lIF9tbV9tYXNrX2NtcF9lcHU4X21hc2sobSwgYSwgYiwgcCkgXAogICgoX19tbWFzazE2KV9fYnVpbHRpbl9pYTMyX3VjbXBiMTI4X21hc2soKF9fdjE2cWkpKF9fbTEyOGkpKGEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZxaSkoX19tMTI4aSkoYiksIChpbnQpKHApLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KShtKSkpCgojZGVmaW5lIF9tbTI1Nl9jbXBfZXBpOF9tYXNrKGEsIGIsIHApIFwKICAoKF9fbW1hc2szMilfX2J1aWx0aW5faWEzMl9jbXBiMjU2X21hc2soKF9fdjMycWkpKF9fbTI1NmkpKGEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMnFpKShfX20yNTZpKShiKSwgKGludCkocCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2szMiktMSkpCgojZGVmaW5lIF9tbTI1Nl9tYXNrX2NtcF9lcGk4X21hc2sobSwgYSwgYiwgcCkgXAogICgoX19tbWFzazMyKV9fYnVpbHRpbl9pYTMyX2NtcGIyNTZfbWFzaygoX192MzJxaSkoX19tMjU2aSkoYSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMycWkpKF9fbTI1NmkpKGIpLCAoaW50KShwKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazMyKShtKSkpCgojZGVmaW5lIF9tbTI1Nl9jbXBfZXB1OF9tYXNrKGEsIGIsIHApIFwKICAoKF9fbW1hc2szMilfX2J1aWx0aW5faWEzMl91Y21wYjI1Nl9tYXNrKChfX3YzMnFpKShfX20yNTZpKShhKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMycWkpKF9fbTI1NmkpKGIpLCAoaW50KShwKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2szMiktMSkpCgojZGVmaW5lIF9tbTI1Nl9tYXNrX2NtcF9lcHU4X21hc2sobSwgYSwgYiwgcCkgXAogICgoX19tbWFzazMyKV9fYnVpbHRpbl9pYTMyX3VjbXBiMjU2X21hc2soKF9fdjMycWkpKF9fbTI1NmkpKGEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJxaSkoX19tMjU2aSkoYiksIChpbnQpKHApLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazMyKShtKSkpCgojZGVmaW5lIF9tbV9jbXBfZXBpMTZfbWFzayhhLCBiLCBwKSBcCiAgKChfX21tYXNrOClfX2J1aWx0aW5faWEzMl9jbXB3MTI4X21hc2soKF9fdjhoaSkoX19tMTI4aSkoYSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKShfX20xMjhpKShiKSwgKGludCkocCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEpKQoKI2RlZmluZSBfbW1fbWFza19jbXBfZXBpMTZfbWFzayhtLCBhLCBiLCBwKSBcCiAgKChfX21tYXNrOClfX2J1aWx0aW5faWEzMl9jbXB3MTI4X21hc2soKF9fdjhoaSkoX19tMTI4aSkoYSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKShfX20xMjhpKShiKSwgKGludCkocCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKG0pKSkKCiNkZWZpbmUgX21tX2NtcF9lcHUxNl9tYXNrKGEsIGIsIHApIFwKICAoKF9fbW1hc2s4KV9fYnVpbHRpbl9pYTMyX3VjbXB3MTI4X21hc2soKF9fdjhoaSkoX19tMTI4aSkoYSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSkoX19tMTI4aSkoYiksIChpbnQpKHApLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSkpCgojZGVmaW5lIF9tbV9tYXNrX2NtcF9lcHUxNl9tYXNrKG0sIGEsIGIsIHApIFwKICAoKF9fbW1hc2s4KV9fYnVpbHRpbl9pYTMyX3VjbXB3MTI4X21hc2soKF9fdjhoaSkoX19tMTI4aSkoYSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSkoX19tMTI4aSkoYiksIChpbnQpKHApLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkobSkpKQoKI2RlZmluZSBfbW0yNTZfY21wX2VwaTE2X21hc2soYSwgYiwgcCkgXAogICgoX19tbWFzazE2KV9fYnVpbHRpbl9pYTMyX2NtcHcyNTZfbWFzaygoX192MTZoaSkoX19tMjU2aSkoYSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpKF9fbTI1NmkpKGIpLCAoaW50KShwKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KS0xKSkKCiNkZWZpbmUgX21tMjU2X21hc2tfY21wX2VwaTE2X21hc2sobSwgYSwgYiwgcCkgXAogICgoX19tbWFzazE2KV9fYnVpbHRpbl9pYTMyX2NtcHcyNTZfbWFzaygoX192MTZoaSkoX19tMjU2aSkoYSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpKF9fbTI1NmkpKGIpLCAoaW50KShwKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KShtKSkpCgojZGVmaW5lIF9tbTI1Nl9jbXBfZXB1MTZfbWFzayhhLCBiLCBwKSBcCiAgKChfX21tYXNrMTYpX19idWlsdGluX2lhMzJfdWNtcHcyNTZfbWFzaygoX192MTZoaSkoX19tMjU2aSkoYSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKShfX20yNTZpKShiKSwgKGludCkocCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpLTEpKQoKI2RlZmluZSBfbW0yNTZfbWFza19jbXBfZXB1MTZfbWFzayhtLCBhLCBiLCBwKSBcCiAgKChfX21tYXNrMTYpX19idWlsdGluX2lhMzJfdWNtcHcyNTZfbWFzaygoX192MTZoaSkoX19tMjU2aSkoYSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKShfX20yNTZpKShiKSwgKGludCkocCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpKG0pKSkKCiNkZWZpbmUgX21tX2NtcGVxX2VwaThfbWFzayhBLCBCKSBcCiAgICBfbW1fY21wX2VwaThfbWFzaygoQSksIChCKSwgX01NX0NNUElOVF9FUSkKI2RlZmluZSBfbW1fbWFza19jbXBlcV9lcGk4X21hc2soaywgQSwgQikgXAogICAgX21tX21hc2tfY21wX2VwaThfbWFzaygoayksIChBKSwgKEIpLCBfTU1fQ01QSU5UX0VRKQojZGVmaW5lIF9tbV9jbXBnZV9lcGk4X21hc2soQSwgQikgXAogICAgX21tX2NtcF9lcGk4X21hc2soKEEpLCAoQiksIF9NTV9DTVBJTlRfR0UpCiNkZWZpbmUgX21tX21hc2tfY21wZ2VfZXBpOF9tYXNrKGssIEEsIEIpIFwKICAgIF9tbV9tYXNrX2NtcF9lcGk4X21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9HRSkKI2RlZmluZSBfbW1fY21wZ3RfZXBpOF9tYXNrKEEsIEIpIFwKICAgIF9tbV9jbXBfZXBpOF9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX0dUKQojZGVmaW5lIF9tbV9tYXNrX2NtcGd0X2VwaThfbWFzayhrLCBBLCBCKSBcCiAgICBfbW1fbWFza19jbXBfZXBpOF9tYXNrKChrKSwgKEEpLCAoQiksIF9NTV9DTVBJTlRfR1QpCiNkZWZpbmUgX21tX2NtcGxlX2VwaThfbWFzayhBLCBCKSBcCiAgICBfbW1fY21wX2VwaThfbWFzaygoQSksIChCKSwgX01NX0NNUElOVF9MRSkKI2RlZmluZSBfbW1fbWFza19jbXBsZV9lcGk4X21hc2soaywgQSwgQikgXAogICAgX21tX21hc2tfY21wX2VwaThfbWFzaygoayksIChBKSwgKEIpLCBfTU1fQ01QSU5UX0xFKQojZGVmaW5lIF9tbV9jbXBsdF9lcGk4X21hc2soQSwgQikgXAogICAgX21tX2NtcF9lcGk4X21hc2soKEEpLCAoQiksIF9NTV9DTVBJTlRfTFQpCiNkZWZpbmUgX21tX21hc2tfY21wbHRfZXBpOF9tYXNrKGssIEEsIEIpIFwKICAgIF9tbV9tYXNrX2NtcF9lcGk4X21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9MVCkKI2RlZmluZSBfbW1fY21wbmVxX2VwaThfbWFzayhBLCBCKSBcCiAgICBfbW1fY21wX2VwaThfbWFzaygoQSksIChCKSwgX01NX0NNUElOVF9ORSkKI2RlZmluZSBfbW1fbWFza19jbXBuZXFfZXBpOF9tYXNrKGssIEEsIEIpIFwKICAgIF9tbV9tYXNrX2NtcF9lcGk4X21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9ORSkKCiNkZWZpbmUgX21tMjU2X2NtcGVxX2VwaThfbWFzayhBLCBCKSBcCiAgICBfbW0yNTZfY21wX2VwaThfbWFzaygoQSksIChCKSwgX01NX0NNUElOVF9FUSkKI2RlZmluZSBfbW0yNTZfbWFza19jbXBlcV9lcGk4X21hc2soaywgQSwgQikgXAogICAgX21tMjU2X21hc2tfY21wX2VwaThfbWFzaygoayksIChBKSwgKEIpLCBfTU1fQ01QSU5UX0VRKQojZGVmaW5lIF9tbTI1Nl9jbXBnZV9lcGk4X21hc2soQSwgQikgXAogICAgX21tMjU2X2NtcF9lcGk4X21hc2soKEEpLCAoQiksIF9NTV9DTVBJTlRfR0UpCiNkZWZpbmUgX21tMjU2X21hc2tfY21wZ2VfZXBpOF9tYXNrKGssIEEsIEIpIFwKICAgIF9tbTI1Nl9tYXNrX2NtcF9lcGk4X21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9HRSkKI2RlZmluZSBfbW0yNTZfY21wZ3RfZXBpOF9tYXNrKEEsIEIpIFwKICAgIF9tbTI1Nl9jbXBfZXBpOF9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX0dUKQojZGVmaW5lIF9tbTI1Nl9tYXNrX2NtcGd0X2VwaThfbWFzayhrLCBBLCBCKSBcCiAgICBfbW0yNTZfbWFza19jbXBfZXBpOF9tYXNrKChrKSwgKEEpLCAoQiksIF9NTV9DTVBJTlRfR1QpCiNkZWZpbmUgX21tMjU2X2NtcGxlX2VwaThfbWFzayhBLCBCKSBcCiAgICBfbW0yNTZfY21wX2VwaThfbWFzaygoQSksIChCKSwgX01NX0NNUElOVF9MRSkKI2RlZmluZSBfbW0yNTZfbWFza19jbXBsZV9lcGk4X21hc2soaywgQSwgQikgXAogICAgX21tMjU2X21hc2tfY21wX2VwaThfbWFzaygoayksIChBKSwgKEIpLCBfTU1fQ01QSU5UX0xFKQojZGVmaW5lIF9tbTI1Nl9jbXBsdF9lcGk4X21hc2soQSwgQikgXAogICAgX21tMjU2X2NtcF9lcGk4X21hc2soKEEpLCAoQiksIF9NTV9DTVBJTlRfTFQpCiNkZWZpbmUgX21tMjU2X21hc2tfY21wbHRfZXBpOF9tYXNrKGssIEEsIEIpIFwKICAgIF9tbTI1Nl9tYXNrX2NtcF9lcGk4X21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9MVCkKI2RlZmluZSBfbW0yNTZfY21wbmVxX2VwaThfbWFzayhBLCBCKSBcCiAgICBfbW0yNTZfY21wX2VwaThfbWFzaygoQSksIChCKSwgX01NX0NNUElOVF9ORSkKI2RlZmluZSBfbW0yNTZfbWFza19jbXBuZXFfZXBpOF9tYXNrKGssIEEsIEIpIFwKICAgIF9tbTI1Nl9tYXNrX2NtcF9lcGk4X21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9ORSkKCiNkZWZpbmUgX21tX2NtcGVxX2VwdThfbWFzayhBLCBCKSBcCiAgICBfbW1fY21wX2VwdThfbWFzaygoQSksIChCKSwgX01NX0NNUElOVF9FUSkKI2RlZmluZSBfbW1fbWFza19jbXBlcV9lcHU4X21hc2soaywgQSwgQikgXAogICAgX21tX21hc2tfY21wX2VwdThfbWFzaygoayksIChBKSwgKEIpLCBfTU1fQ01QSU5UX0VRKQojZGVmaW5lIF9tbV9jbXBnZV9lcHU4X21hc2soQSwgQikgXAogICAgX21tX2NtcF9lcHU4X21hc2soKEEpLCAoQiksIF9NTV9DTVBJTlRfR0UpCiNkZWZpbmUgX21tX21hc2tfY21wZ2VfZXB1OF9tYXNrKGssIEEsIEIpIFwKICAgIF9tbV9tYXNrX2NtcF9lcHU4X21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9HRSkKI2RlZmluZSBfbW1fY21wZ3RfZXB1OF9tYXNrKEEsIEIpIFwKICAgIF9tbV9jbXBfZXB1OF9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX0dUKQojZGVmaW5lIF9tbV9tYXNrX2NtcGd0X2VwdThfbWFzayhrLCBBLCBCKSBcCiAgICBfbW1fbWFza19jbXBfZXB1OF9tYXNrKChrKSwgKEEpLCAoQiksIF9NTV9DTVBJTlRfR1QpCiNkZWZpbmUgX21tX2NtcGxlX2VwdThfbWFzayhBLCBCKSBcCiAgICBfbW1fY21wX2VwdThfbWFzaygoQSksIChCKSwgX01NX0NNUElOVF9MRSkKI2RlZmluZSBfbW1fbWFza19jbXBsZV9lcHU4X21hc2soaywgQSwgQikgXAogICAgX21tX21hc2tfY21wX2VwdThfbWFzaygoayksIChBKSwgKEIpLCBfTU1fQ01QSU5UX0xFKQojZGVmaW5lIF9tbV9jbXBsdF9lcHU4X21hc2soQSwgQikgXAogICAgX21tX2NtcF9lcHU4X21hc2soKEEpLCAoQiksIF9NTV9DTVBJTlRfTFQpCiNkZWZpbmUgX21tX21hc2tfY21wbHRfZXB1OF9tYXNrKGssIEEsIEIpIFwKICAgIF9tbV9tYXNrX2NtcF9lcHU4X21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9MVCkKI2RlZmluZSBfbW1fY21wbmVxX2VwdThfbWFzayhBLCBCKSBcCiAgICBfbW1fY21wX2VwdThfbWFzaygoQSksIChCKSwgX01NX0NNUElOVF9ORSkKI2RlZmluZSBfbW1fbWFza19jbXBuZXFfZXB1OF9tYXNrKGssIEEsIEIpIFwKICAgIF9tbV9tYXNrX2NtcF9lcHU4X21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9ORSkKCiNkZWZpbmUgX21tMjU2X2NtcGVxX2VwdThfbWFzayhBLCBCKSBcCiAgICBfbW0yNTZfY21wX2VwdThfbWFzaygoQSksIChCKSwgX01NX0NNUElOVF9FUSkKI2RlZmluZSBfbW0yNTZfbWFza19jbXBlcV9lcHU4X21hc2soaywgQSwgQikgXAogICAgX21tMjU2X21hc2tfY21wX2VwdThfbWFzaygoayksIChBKSwgKEIpLCBfTU1fQ01QSU5UX0VRKQojZGVmaW5lIF9tbTI1Nl9jbXBnZV9lcHU4X21hc2soQSwgQikgXAogICAgX21tMjU2X2NtcF9lcHU4X21hc2soKEEpLCAoQiksIF9NTV9DTVBJTlRfR0UpCiNkZWZpbmUgX21tMjU2X21hc2tfY21wZ2VfZXB1OF9tYXNrKGssIEEsIEIpIFwKICAgIF9tbTI1Nl9tYXNrX2NtcF9lcHU4X21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9HRSkKI2RlZmluZSBfbW0yNTZfY21wZ3RfZXB1OF9tYXNrKEEsIEIpIFwKICAgIF9tbTI1Nl9jbXBfZXB1OF9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX0dUKQojZGVmaW5lIF9tbTI1Nl9tYXNrX2NtcGd0X2VwdThfbWFzayhrLCBBLCBCKSBcCiAgICBfbW0yNTZfbWFza19jbXBfZXB1OF9tYXNrKChrKSwgKEEpLCAoQiksIF9NTV9DTVBJTlRfR1QpCiNkZWZpbmUgX21tMjU2X2NtcGxlX2VwdThfbWFzayhBLCBCKSBcCiAgICBfbW0yNTZfY21wX2VwdThfbWFzaygoQSksIChCKSwgX01NX0NNUElOVF9MRSkKI2RlZmluZSBfbW0yNTZfbWFza19jbXBsZV9lcHU4X21hc2soaywgQSwgQikgXAogICAgX21tMjU2X21hc2tfY21wX2VwdThfbWFzaygoayksIChBKSwgKEIpLCBfTU1fQ01QSU5UX0xFKQojZGVmaW5lIF9tbTI1Nl9jbXBsdF9lcHU4X21hc2soQSwgQikgXAogICAgX21tMjU2X2NtcF9lcHU4X21hc2soKEEpLCAoQiksIF9NTV9DTVBJTlRfTFQpCiNkZWZpbmUgX21tMjU2X21hc2tfY21wbHRfZXB1OF9tYXNrKGssIEEsIEIpIFwKICAgIF9tbTI1Nl9tYXNrX2NtcF9lcHU4X21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9MVCkKI2RlZmluZSBfbW0yNTZfY21wbmVxX2VwdThfbWFzayhBLCBCKSBcCiAgICBfbW0yNTZfY21wX2VwdThfbWFzaygoQSksIChCKSwgX01NX0NNUElOVF9ORSkKI2RlZmluZSBfbW0yNTZfbWFza19jbXBuZXFfZXB1OF9tYXNrKGssIEEsIEIpIFwKICAgIF9tbTI1Nl9tYXNrX2NtcF9lcHU4X21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9ORSkKCiNkZWZpbmUgX21tX2NtcGVxX2VwaTE2X21hc2soQSwgQikgXAogICAgX21tX2NtcF9lcGkxNl9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX0VRKQojZGVmaW5lIF9tbV9tYXNrX2NtcGVxX2VwaTE2X21hc2soaywgQSwgQikgXAogICAgX21tX21hc2tfY21wX2VwaTE2X21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9FUSkKI2RlZmluZSBfbW1fY21wZ2VfZXBpMTZfbWFzayhBLCBCKSBcCiAgICBfbW1fY21wX2VwaTE2X21hc2soKEEpLCAoQiksIF9NTV9DTVBJTlRfR0UpCiNkZWZpbmUgX21tX21hc2tfY21wZ2VfZXBpMTZfbWFzayhrLCBBLCBCKSBcCiAgICBfbW1fbWFza19jbXBfZXBpMTZfbWFzaygoayksIChBKSwgKEIpLCBfTU1fQ01QSU5UX0dFKQojZGVmaW5lIF9tbV9jbXBndF9lcGkxNl9tYXNrKEEsIEIpIFwKICAgIF9tbV9jbXBfZXBpMTZfbWFzaygoQSksIChCKSwgX01NX0NNUElOVF9HVCkKI2RlZmluZSBfbW1fbWFza19jbXBndF9lcGkxNl9tYXNrKGssIEEsIEIpIFwKICAgIF9tbV9tYXNrX2NtcF9lcGkxNl9tYXNrKChrKSwgKEEpLCAoQiksIF9NTV9DTVBJTlRfR1QpCiNkZWZpbmUgX21tX2NtcGxlX2VwaTE2X21hc2soQSwgQikgXAogICAgX21tX2NtcF9lcGkxNl9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX0xFKQojZGVmaW5lIF9tbV9tYXNrX2NtcGxlX2VwaTE2X21hc2soaywgQSwgQikgXAogICAgX21tX21hc2tfY21wX2VwaTE2X21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9MRSkKI2RlZmluZSBfbW1fY21wbHRfZXBpMTZfbWFzayhBLCBCKSBcCiAgICBfbW1fY21wX2VwaTE2X21hc2soKEEpLCAoQiksIF9NTV9DTVBJTlRfTFQpCiNkZWZpbmUgX21tX21hc2tfY21wbHRfZXBpMTZfbWFzayhrLCBBLCBCKSBcCiAgICBfbW1fbWFza19jbXBfZXBpMTZfbWFzaygoayksIChBKSwgKEIpLCBfTU1fQ01QSU5UX0xUKQojZGVmaW5lIF9tbV9jbXBuZXFfZXBpMTZfbWFzayhBLCBCKSBcCiAgICBfbW1fY21wX2VwaTE2X21hc2soKEEpLCAoQiksIF9NTV9DTVBJTlRfTkUpCiNkZWZpbmUgX21tX21hc2tfY21wbmVxX2VwaTE2X21hc2soaywgQSwgQikgXAogICAgX21tX21hc2tfY21wX2VwaTE2X21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9ORSkKCiNkZWZpbmUgX21tMjU2X2NtcGVxX2VwaTE2X21hc2soQSwgQikgXAogICAgX21tMjU2X2NtcF9lcGkxNl9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX0VRKQojZGVmaW5lIF9tbTI1Nl9tYXNrX2NtcGVxX2VwaTE2X21hc2soaywgQSwgQikgXAogICAgX21tMjU2X21hc2tfY21wX2VwaTE2X21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9FUSkKI2RlZmluZSBfbW0yNTZfY21wZ2VfZXBpMTZfbWFzayhBLCBCKSBcCiAgICBfbW0yNTZfY21wX2VwaTE2X21hc2soKEEpLCAoQiksIF9NTV9DTVBJTlRfR0UpCiNkZWZpbmUgX21tMjU2X21hc2tfY21wZ2VfZXBpMTZfbWFzayhrLCBBLCBCKSBcCiAgICBfbW0yNTZfbWFza19jbXBfZXBpMTZfbWFzaygoayksIChBKSwgKEIpLCBfTU1fQ01QSU5UX0dFKQojZGVmaW5lIF9tbTI1Nl9jbXBndF9lcGkxNl9tYXNrKEEsIEIpIFwKICAgIF9tbTI1Nl9jbXBfZXBpMTZfbWFzaygoQSksIChCKSwgX01NX0NNUElOVF9HVCkKI2RlZmluZSBfbW0yNTZfbWFza19jbXBndF9lcGkxNl9tYXNrKGssIEEsIEIpIFwKICAgIF9tbTI1Nl9tYXNrX2NtcF9lcGkxNl9tYXNrKChrKSwgKEEpLCAoQiksIF9NTV9DTVBJTlRfR1QpCiNkZWZpbmUgX21tMjU2X2NtcGxlX2VwaTE2X21hc2soQSwgQikgXAogICAgX21tMjU2X2NtcF9lcGkxNl9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX0xFKQojZGVmaW5lIF9tbTI1Nl9tYXNrX2NtcGxlX2VwaTE2X21hc2soaywgQSwgQikgXAogICAgX21tMjU2X21hc2tfY21wX2VwaTE2X21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9MRSkKI2RlZmluZSBfbW0yNTZfY21wbHRfZXBpMTZfbWFzayhBLCBCKSBcCiAgICBfbW0yNTZfY21wX2VwaTE2X21hc2soKEEpLCAoQiksIF9NTV9DTVBJTlRfTFQpCiNkZWZpbmUgX21tMjU2X21hc2tfY21wbHRfZXBpMTZfbWFzayhrLCBBLCBCKSBcCiAgICBfbW0yNTZfbWFza19jbXBfZXBpMTZfbWFzaygoayksIChBKSwgKEIpLCBfTU1fQ01QSU5UX0xUKQojZGVmaW5lIF9tbTI1Nl9jbXBuZXFfZXBpMTZfbWFzayhBLCBCKSBcCiAgICBfbW0yNTZfY21wX2VwaTE2X21hc2soKEEpLCAoQiksIF9NTV9DTVBJTlRfTkUpCiNkZWZpbmUgX21tMjU2X21hc2tfY21wbmVxX2VwaTE2X21hc2soaywgQSwgQikgXAogICAgX21tMjU2X21hc2tfY21wX2VwaTE2X21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9ORSkKCiNkZWZpbmUgX21tX2NtcGVxX2VwdTE2X21hc2soQSwgQikgXAogICAgX21tX2NtcF9lcHUxNl9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX0VRKQojZGVmaW5lIF9tbV9tYXNrX2NtcGVxX2VwdTE2X21hc2soaywgQSwgQikgXAogICAgX21tX21hc2tfY21wX2VwdTE2X21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9FUSkKI2RlZmluZSBfbW1fY21wZ2VfZXB1MTZfbWFzayhBLCBCKSBcCiAgICBfbW1fY21wX2VwdTE2X21hc2soKEEpLCAoQiksIF9NTV9DTVBJTlRfR0UpCiNkZWZpbmUgX21tX21hc2tfY21wZ2VfZXB1MTZfbWFzayhrLCBBLCBCKSBcCiAgICBfbW1fbWFza19jbXBfZXB1MTZfbWFzaygoayksIChBKSwgKEIpLCBfTU1fQ01QSU5UX0dFKQojZGVmaW5lIF9tbV9jbXBndF9lcHUxNl9tYXNrKEEsIEIpIFwKICAgIF9tbV9jbXBfZXB1MTZfbWFzaygoQSksIChCKSwgX01NX0NNUElOVF9HVCkKI2RlZmluZSBfbW1fbWFza19jbXBndF9lcHUxNl9tYXNrKGssIEEsIEIpIFwKICAgIF9tbV9tYXNrX2NtcF9lcHUxNl9tYXNrKChrKSwgKEEpLCAoQiksIF9NTV9DTVBJTlRfR1QpCiNkZWZpbmUgX21tX2NtcGxlX2VwdTE2X21hc2soQSwgQikgXAogICAgX21tX2NtcF9lcHUxNl9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX0xFKQojZGVmaW5lIF9tbV9tYXNrX2NtcGxlX2VwdTE2X21hc2soaywgQSwgQikgXAogICAgX21tX21hc2tfY21wX2VwdTE2X21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9MRSkKI2RlZmluZSBfbW1fY21wbHRfZXB1MTZfbWFzayhBLCBCKSBcCiAgICBfbW1fY21wX2VwdTE2X21hc2soKEEpLCAoQiksIF9NTV9DTVBJTlRfTFQpCiNkZWZpbmUgX21tX21hc2tfY21wbHRfZXB1MTZfbWFzayhrLCBBLCBCKSBcCiAgICBfbW1fbWFza19jbXBfZXB1MTZfbWFzaygoayksIChBKSwgKEIpLCBfTU1fQ01QSU5UX0xUKQojZGVmaW5lIF9tbV9jbXBuZXFfZXB1MTZfbWFzayhBLCBCKSBcCiAgICBfbW1fY21wX2VwdTE2X21hc2soKEEpLCAoQiksIF9NTV9DTVBJTlRfTkUpCiNkZWZpbmUgX21tX21hc2tfY21wbmVxX2VwdTE2X21hc2soaywgQSwgQikgXAogICAgX21tX21hc2tfY21wX2VwdTE2X21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9ORSkKCiNkZWZpbmUgX21tMjU2X2NtcGVxX2VwdTE2X21hc2soQSwgQikgXAogICAgX21tMjU2X2NtcF9lcHUxNl9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX0VRKQojZGVmaW5lIF9tbTI1Nl9tYXNrX2NtcGVxX2VwdTE2X21hc2soaywgQSwgQikgXAogICAgX21tMjU2X21hc2tfY21wX2VwdTE2X21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9FUSkKI2RlZmluZSBfbW0yNTZfY21wZ2VfZXB1MTZfbWFzayhBLCBCKSBcCiAgICBfbW0yNTZfY21wX2VwdTE2X21hc2soKEEpLCAoQiksIF9NTV9DTVBJTlRfR0UpCiNkZWZpbmUgX21tMjU2X21hc2tfY21wZ2VfZXB1MTZfbWFzayhrLCBBLCBCKSBcCiAgICBfbW0yNTZfbWFza19jbXBfZXB1MTZfbWFzaygoayksIChBKSwgKEIpLCBfTU1fQ01QSU5UX0dFKQojZGVmaW5lIF9tbTI1Nl9jbXBndF9lcHUxNl9tYXNrKEEsIEIpIFwKICAgIF9tbTI1Nl9jbXBfZXB1MTZfbWFzaygoQSksIChCKSwgX01NX0NNUElOVF9HVCkKI2RlZmluZSBfbW0yNTZfbWFza19jbXBndF9lcHUxNl9tYXNrKGssIEEsIEIpIFwKICAgIF9tbTI1Nl9tYXNrX2NtcF9lcHUxNl9tYXNrKChrKSwgKEEpLCAoQiksIF9NTV9DTVBJTlRfR1QpCiNkZWZpbmUgX21tMjU2X2NtcGxlX2VwdTE2X21hc2soQSwgQikgXAogICAgX21tMjU2X2NtcF9lcHUxNl9tYXNrKChBKSwgKEIpLCBfTU1fQ01QSU5UX0xFKQojZGVmaW5lIF9tbTI1Nl9tYXNrX2NtcGxlX2VwdTE2X21hc2soaywgQSwgQikgXAogICAgX21tMjU2X21hc2tfY21wX2VwdTE2X21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9MRSkKI2RlZmluZSBfbW0yNTZfY21wbHRfZXB1MTZfbWFzayhBLCBCKSBcCiAgICBfbW0yNTZfY21wX2VwdTE2X21hc2soKEEpLCAoQiksIF9NTV9DTVBJTlRfTFQpCiNkZWZpbmUgX21tMjU2X21hc2tfY21wbHRfZXB1MTZfbWFzayhrLCBBLCBCKSBcCiAgICBfbW0yNTZfbWFza19jbXBfZXB1MTZfbWFzaygoayksIChBKSwgKEIpLCBfTU1fQ01QSU5UX0xUKQojZGVmaW5lIF9tbTI1Nl9jbXBuZXFfZXB1MTZfbWFzayhBLCBCKSBcCiAgICBfbW0yNTZfY21wX2VwdTE2X21hc2soKEEpLCAoQiksIF9NTV9DTVBJTlRfTkUpCiNkZWZpbmUgX21tMjU2X21hc2tfY21wbmVxX2VwdTE2X21hc2soaywgQSwgQikgXAogICAgX21tMjU2X21hc2tfY21wX2VwdTE2X21hc2soKGspLCAoQSksIChCKSwgX01NX0NNUElOVF9ORSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2FkZF9lcGk4KF9fbTI1NmkgX19XLCBfX21tYXNrMzIgX19VLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzI1NigoX19tbWFzazMyKV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMycWkpX21tMjU2X2FkZF9lcGk4KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMycWkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2FkZF9lcGk4KF9fbW1hc2szMiBfX1UsIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikgewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzI1NigoX19tbWFzazMyKV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMycWkpX21tMjU2X2FkZF9lcGk4KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMycWkpX21tMjU2X3NldHplcm9fc2kyNTYoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2FkZF9lcGkxNihfX20yNTZpIF9fVywgX19tbWFzazE2IF9fVSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKSB7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMjU2KChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfYWRkX2VwaTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2FkZF9lcGkxNihfX21tYXNrMTYgX19VLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpIHsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0d18yNTYoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKV9tbTI1Nl9hZGRfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfc3ViX2VwaTgoX19tMjU2aSBfX1csIF9fbW1hc2szMiBfX1UsIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikgewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzI1NigoX19tbWFzazMyKV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMycWkpX21tMjU2X3N1Yl9lcGk4KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMycWkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X3N1Yl9lcGk4KF9fbW1hc2szMiBfX1UsIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikgewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzI1NigoX19tbWFzazMyKV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMycWkpX21tMjU2X3N1Yl9lcGk4KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMycWkpX21tMjU2X3NldHplcm9fc2kyNTYoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX3N1Yl9lcGkxNihfX20yNTZpIF9fVywgX19tbWFzazE2IF9fVSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKSB7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMjU2KChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfc3ViX2VwaTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X3N1Yl9lcGkxNihfX21tYXNrMTYgX19VLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpIHsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0d18yNTYoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKV9tbTI1Nl9zdWJfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfYWRkX2VwaTgoX19tMTI4aSBfX1csIF9fbW1hc2sxNiBfX1UsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikgewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzEyOCgoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpX21tX2FkZF9lcGk4KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2FkZF9lcGk4KF9fbW1hc2sxNiBfX1UsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikgewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzEyOCgoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpX21tX2FkZF9lcGk4KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpX21tX3NldHplcm9fc2kxMjgoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2FkZF9lcGkxNihfX20xMjhpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpIHsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0d18xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfbW1fYWRkX2VwaTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfYWRkX2VwaTE2KF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKSB7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX2FkZF9lcGkxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX3NldHplcm9fc2kxMjgoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3N1Yl9lcGk4KF9fbTEyOGkgX19XLCBfX21tYXNrMTYgX19VLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpIHsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl8xMjgoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKV9tbV9zdWJfZXBpOChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9zdWJfZXBpOChfX21tYXNrMTYgX19VLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpIHsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl8xMjgoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKV9tbV9zdWJfZXBpOChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19zdWJfZXBpMTYoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKSB7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX3N1Yl9lcGkxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X3N1Yl9lcGkxNihfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikgewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9tbV9zdWJfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19tdWxsb19lcGkxNihfX20yNTZpIF9fVywgX19tbWFzazE2IF9fVSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKSB7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMjU2KChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfbXVsbG9fZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfbXVsbG9fZXBpMTYoX19tbWFzazE2IF9fVSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKSB7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMjU2KChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfbXVsbG9fZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfbXVsbG9fZXBpMTYoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKSB7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX211bGxvX2VwaTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfbXVsbG9fZXBpMTYoX19tbWFzazggX19VLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpIHsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0d18xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfbW1fbXVsbG9fZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19ibGVuZF9lcGk4IChfX21tYXNrMTYgX19VLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX1cpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfMTI4ICgoX19tbWFzazE2KSBfX1UsCiAgICAgICAgICAgICAgKF9fdjE2cWkpIF9fVywKICAgICAgICAgICAgICAoX192MTZxaSkgX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfYmxlbmRfZXBpOCAoX19tbWFzazMyIF9fVSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19XKQp7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzI1NiAoKF9fbW1hc2szMikgX19VLAogICAgICAgICAgICAgICAoX192MzJxaSkgX19XLAogICAgICAgICAgICAgICAoX192MzJxaSkgX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfYmxlbmRfZXBpMTYgKF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19XKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzEyOCAoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgIChfX3Y4aGkpIF9fVywKICAgICAgICAgICAgICAgKF9fdjhoaSkgX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfYmxlbmRfZXBpMTYgKF9fbW1hc2sxNiBfX1UsIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fVykKewogIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfc2VsZWN0d18yNTYgKChfX21tYXNrMTYpIF9fVSwKICAgICAgICAgICAgICAgKF9fdjE2aGkpIF9fVywKICAgICAgICAgICAgICAgKF9fdjE2aGkpIF9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2Fic19lcGk4KF9fbTEyOGkgX19XLCBfX21tYXNrMTYgX19VLCBfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzEyOCgoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpX21tX2Fic19lcGk4KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9hYnNfZXBpOChfX21tYXNrMTYgX19VLCBfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzEyOCgoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpX21tX2Fic19lcGk4KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19hYnNfZXBpOChfX20yNTZpIF9fVywgX19tbWFzazMyIF9fVSwgX19tMjU2aSBfX0EpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl8yNTYoKF9fbW1hc2szMilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMnFpKV9tbTI1Nl9hYnNfZXBpOChfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJxaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfYWJzX2VwaTggKF9fbW1hc2szMiBfX1UsIF9fbTI1NmkgX19BKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfMjU2KChfX21tYXNrMzIpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJxaSlfbW0yNTZfYWJzX2VwaTgoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMycWkpX21tMjU2X3NldHplcm9fc2kyNTYoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2Fic19lcGkxNihfX20xMjhpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9tbV9hYnNfZXBpMTYoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfYWJzX2VwaTE2KF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0d18xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfbW1fYWJzX2VwaTE2KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX3NldHplcm9fc2kxMjgoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2Fic19lcGkxNihfX20yNTZpIF9fVywgX19tbWFzazE2IF9fVSwgX19tMjU2aSBfX0EpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0d18yNTYoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKV9tbTI1Nl9hYnNfZXBpMTYoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2Fic19lcGkxNihfX21tYXNrMTYgX19VLCBfX20yNTZpIF9fQSkKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzI1NigoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX21tMjU2X2Fic19lcGkxNihfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X3BhY2tzX2VwaTMyKF9fbW1hc2s4IF9fTSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKSB7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMTI4KChfX21tYXNrOClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX3BhY2tzX2VwaTMyKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfcGFja3NfZXBpMzIoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fTSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMTI4KChfX21tYXNrOClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX3BhY2tzX2VwaTMyKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfcGFja3NfZXBpMzIoX19tbWFzazE2IF9fTSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMjU2KChfX21tYXNrMTYpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfcGFja3NfZXBpMzIoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfcGFja3NfZXBpMzIoX19tMjU2aSBfX1csIF9fbW1hc2sxNiBfX00sIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzI1NigoX19tbWFzazE2KV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX21tMjU2X3BhY2tzX2VwaTMyKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X3BhY2tzX2VwaTE2KF9fbW1hc2sxNiBfX00sIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzEyOCgoX19tbWFzazE2KV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpX21tX3BhY2tzX2VwaTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpX21tX3NldHplcm9fc2kxMjgoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3BhY2tzX2VwaTE2KF9fbTEyOGkgX19XLCBfX21tYXNrMTYgX19NLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl8xMjgoKF9fbW1hc2sxNilfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKV9tbV9wYWNrc19lcGkxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9wYWNrc19lcGkxNihfX21tYXNrMzIgX19NLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl8yNTYoKF9fbW1hc2szMilfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMnFpKV9tbTI1Nl9wYWNrc19lcGkxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMnFpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19wYWNrc19lcGkxNihfX20yNTZpIF9fVywgX19tbWFzazMyIF9fTSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfMjU2KChfX21tYXNrMzIpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJxaSlfbW0yNTZfcGFja3NfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJxaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfcGFja3VzX2VwaTMyKF9fbW1hc2s4IF9fTSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMTI4KChfX21tYXNrOClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX3BhY2t1c19lcGkzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX3NldHplcm9fc2kxMjgoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3BhY2t1c19lcGkzMihfX20xMjhpIF9fVywgX19tbWFzazggX19NLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0d18xMjgoKF9fbW1hc2s4KV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfbW1fcGFja3VzX2VwaTMyKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfcGFja3VzX2VwaTMyKF9fbW1hc2sxNiBfX00sIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzI1NigoX19tbWFzazE2KV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfcGFja3VzX2VwaTMyKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfcGFja3VzX2VwaTMyKF9fbTI1NmkgX19XLCBfX21tYXNrMTYgX19NLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0d18yNTYoKF9fbW1hc2sxNilfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX21tMjU2X3BhY2t1c19lcGkzMihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X3BhY2t1c19lcGkxNihfX21tYXNrMTYgX19NLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl8xMjgoKF9fbW1hc2sxNilfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpX21tX3BhY2t1c19lcGkxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpX21tX3NldHplcm9fc2kxMjgoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3BhY2t1c19lcGkxNihfX20xMjhpIF9fVywgX19tbWFzazE2IF9fTSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfMTI4KChfX21tYXNrMTYpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKV9tbV9wYWNrdXNfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9wYWNrdXNfZXBpMTYoX19tbWFzazMyIF9fTSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfMjU2KChfX21tYXNrMzIpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMnFpKV9tbTI1Nl9wYWNrdXNfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMnFpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19wYWNrdXNfZXBpMTYoX19tMjU2aSBfX1csIF9fbW1hc2szMiBfX00sIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzI1NigoX19tbWFzazMyKV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJxaSlfbW0yNTZfcGFja3VzX2VwaTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJxaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19hZGRzX2VwaTgoX19tMTI4aSBfX1csIF9fbW1hc2sxNiBfX1UsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzEyOCgoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpX21tX2FkZHNfZXBpOChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9hZGRzX2VwaTgoX19tbWFzazE2IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfMTI4KChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZxaSlfbW1fYWRkc19lcGk4KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpX21tX3NldHplcm9fc2kxMjgoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2FkZHNfZXBpOChfX20yNTZpIF9fVywgX19tbWFzazMyIF9fVSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfMjU2KChfX21tYXNrMzIpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMnFpKV9tbTI1Nl9hZGRzX2VwaTgoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMnFpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9hZGRzX2VwaTgoX19tbWFzazMyIF9fVSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfMjU2KChfX21tYXNrMzIpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMnFpKV9tbTI1Nl9hZGRzX2VwaTgoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMnFpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19hZGRzX2VwaTE2KF9fbTEyOGkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9tbV9hZGRzX2VwaTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfYWRkc19lcGkxNihfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9tbV9hZGRzX2VwaTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfYWRkc19lcGkxNihfX20yNTZpIF9fVywgX19tbWFzazE2IF9fVSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMjU2KChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX21tMjU2X2FkZHNfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2FkZHNfZXBpMTYoX19tbWFzazE2IF9fVSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMjU2KChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX21tMjU2X2FkZHNfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX21tMjU2X3NldHplcm9fc2kyNTYoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2FkZHNfZXB1OChfX20xMjhpIF9fVywgX19tbWFzazE2IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfMTI4KChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZxaSlfbW1fYWRkc19lcHU4KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2FkZHNfZXB1OChfX21tYXNrMTYgX19VLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl8xMjgoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKV9tbV9hZGRzX2VwdTgoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZxaSlfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfYWRkc19lcHU4KF9fbTI1NmkgX19XLCBfX21tYXNrMzIgX19VLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl8yNTYoKF9fbW1hc2szMilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMycWkpX21tMjU2X2FkZHNfZXB1OChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMycWkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2FkZHNfZXB1OChfX21tYXNrMzIgX19VLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl8yNTYoKF9fbW1hc2szMilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMycWkpX21tMjU2X2FkZHNfZXB1OChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMycWkpX21tMjU2X3NldHplcm9fc2kyNTYoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2FkZHNfZXB1MTYoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX2FkZHNfZXB1MTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9hZGRzX2VwdTE2KF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX2FkZHNfZXB1MTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19hZGRzX2VwdTE2KF9fbTI1NmkgX19XLCBfX21tYXNrMTYgX19VLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0d18yNTYoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfYWRkc19lcHUxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfYWRkc19lcHUxNihfX21tYXNrMTYgX19VLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0d18yNTYoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfYWRkc19lcHUxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfYXZnX2VwdTgoX19tMTI4aSBfX1csIF9fbW1hc2sxNiBfX1UsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzEyOCgoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpX21tX2F2Z19lcHU4KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2F2Z19lcHU4KF9fbW1hc2sxNiBfX1UsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzEyOCgoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpX21tX2F2Z19lcHU4KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpX21tX3NldHplcm9fc2kxMjgoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2F2Z19lcHU4KF9fbTI1NmkgX19XLCBfX21tYXNrMzIgX19VLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl8yNTYoKF9fbW1hc2szMilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMnFpKV9tbTI1Nl9hdmdfZXB1OChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMnFpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9hdmdfZXB1OChfX21tYXNrMzIgX19VLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl8yNTYoKF9fbW1hc2szMilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMnFpKV9tbTI1Nl9hdmdfZXB1OChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMnFpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19hdmdfZXB1MTYoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX2F2Z19lcHUxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2F2Z19lcHUxNihfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9tbV9hdmdfZXB1MTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19hdmdfZXB1MTYoX19tMjU2aSBfX1csIF9fbW1hc2sxNiBfX1UsIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzI1NigoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfYXZnX2VwdTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfYXZnX2VwdTE2KF9fbW1hc2sxNiBfX1UsIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzI1NigoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfYXZnX2VwdTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X21heF9lcGk4KF9fbW1hc2sxNiBfX00sIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzEyOCgoX19tbWFzazE2KV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpX21tX21heF9lcGk4KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpX21tX3NldHplcm9fc2kxMjgoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX21heF9lcGk4KF9fbTEyOGkgX19XLCBfX21tYXNrMTYgX19NLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl8xMjgoKF9fbW1hc2sxNilfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKV9tbV9tYXhfZXBpOChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9tYXhfZXBpOChfX21tYXNrMzIgX19NLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl8yNTYoKF9fbW1hc2szMilfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMnFpKV9tbTI1Nl9tYXhfZXBpOChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMnFpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19tYXhfZXBpOChfX20yNTZpIF9fVywgX19tbWFzazMyIF9fTSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfMjU2KChfX21tYXNrMzIpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJxaSlfbW0yNTZfbWF4X2VwaTgoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJxaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfbWF4X2VwaTE2KF9fbW1hc2s4IF9fTSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMTI4KChfX21tYXNrOClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX21heF9lcGkxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX3NldHplcm9fc2kxMjgoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX21heF9lcGkxNihfX20xMjhpIF9fVywgX19tbWFzazggX19NLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0d18xMjgoKF9fbW1hc2s4KV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfbW1fbWF4X2VwaTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfbWF4X2VwaTE2KF9fbW1hc2sxNiBfX00sIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzI1NigoX19tbWFzazE2KV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfbWF4X2VwaTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfbWF4X2VwaTE2KF9fbTI1NmkgX19XLCBfX21tYXNrMTYgX19NLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0d18yNTYoKF9fbW1hc2sxNilfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX21tMjU2X21heF9lcGkxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X21heF9lcHU4KF9fbW1hc2sxNiBfX00sIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzEyOCgoX19tbWFzazE2KV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpX21tX21heF9lcHU4KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpX21tX3NldHplcm9fc2kxMjgoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX21heF9lcHU4KF9fbTEyOGkgX19XLCBfX21tYXNrMTYgX19NLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl8xMjgoKF9fbW1hc2sxNilfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKV9tbV9tYXhfZXB1OChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9tYXhfZXB1OCAoX19tbWFzazMyIF9fTSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfMjU2KChfX21tYXNrMzIpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJxaSlfbW0yNTZfbWF4X2VwdTgoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJxaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfbWF4X2VwdTgoX19tMjU2aSBfX1csIF9fbW1hc2szMiBfX00sIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzI1NigoX19tbWFzazMyKV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMycWkpX21tMjU2X21heF9lcHU4KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMycWkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X21heF9lcHUxNihfX21tYXNrOCBfX00sIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzEyOCgoX19tbWFzazgpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9tbV9tYXhfZXB1MTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19tYXhfZXB1MTYoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fTSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMTI4KChfX21tYXNrOClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX21heF9lcHUxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X21heF9lcHUxNihfX21tYXNrMTYgX19NLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0d18yNTYoKF9fbW1hc2sxNilfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX21tMjU2X21heF9lcHUxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX21tMjU2X3NldHplcm9fc2kyNTYoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX21heF9lcHUxNihfX20yNTZpIF9fVywgX19tbWFzazE2IF9fTSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMjU2KChfX21tYXNrMTYpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKV9tbTI1Nl9tYXhfZXB1MTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9taW5fZXBpOChfX21tYXNrMTYgX19NLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl8xMjgoKF9fbW1hc2sxNilfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKV9tbV9taW5fZXBpOChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19taW5fZXBpOChfX20xMjhpIF9fVywgX19tbWFzazE2IF9fTSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfMTI4KChfX21tYXNrMTYpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZxaSlfbW1fbWluX2VwaTgoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZxaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfbWluX2VwaTgoX19tbWFzazMyIF9fTSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfMjU2KChfX21tYXNrMzIpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJxaSlfbW0yNTZfbWluX2VwaTgoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJxaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfbWluX2VwaTgoX19tMjU2aSBfX1csIF9fbW1hc2szMiBfX00sIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzI1NigoX19tbWFzazMyKV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMycWkpX21tMjU2X21pbl9lcGk4KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMycWkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X21pbl9lcGkxNihfX21tYXNrOCBfX00sIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzEyOCgoX19tbWFzazgpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9tbV9taW5fZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19taW5fZXBpMTYoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fTSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMTI4KChfX21tYXNrOClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX21pbl9lcGkxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X21pbl9lcGkxNihfX21tYXNrMTYgX19NLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0d18yNTYoKF9fbW1hc2sxNilfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX21tMjU2X21pbl9lcGkxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX21tMjU2X3NldHplcm9fc2kyNTYoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX21pbl9lcGkxNihfX20yNTZpIF9fVywgX19tbWFzazE2IF9fTSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMjU2KChfX21tYXNrMTYpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKV9tbTI1Nl9taW5fZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9taW5fZXB1OChfX21tYXNrMTYgX19NLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl8xMjgoKF9fbW1hc2sxNilfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKV9tbV9taW5fZXB1OChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19taW5fZXB1OChfX20xMjhpIF9fVywgX19tbWFzazE2IF9fTSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfMTI4KChfX21tYXNrMTYpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZxaSlfbW1fbWluX2VwdTgoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZxaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfbWluX2VwdTggKF9fbW1hc2szMiBfX00sIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzI1NigoX19tbWFzazMyKV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMycWkpX21tMjU2X21pbl9lcHU4KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMycWkpX21tMjU2X3NldHplcm9fc2kyNTYoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX21pbl9lcHU4KF9fbTI1NmkgX19XLCBfX21tYXNrMzIgX19NLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl8yNTYoKF9fbW1hc2szMilfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMnFpKV9tbTI1Nl9taW5fZXB1OChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMnFpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9taW5fZXB1MTYoX19tbWFzazggX19NLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0d18xMjgoKF9fbW1hc2s4KV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfbW1fbWluX2VwdTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfbWluX2VwdTE2KF9fbTEyOGkgX19XLCBfX21tYXNrOCBfX00sIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzEyOCgoX19tbWFzazgpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9tbV9taW5fZXB1MTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9taW5fZXB1MTYoX19tbWFzazE2IF9fTSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMjU2KChfX21tYXNrMTYpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKV9tbTI1Nl9taW5fZXB1MTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19taW5fZXB1MTYoX19tMjU2aSBfX1csIF9fbW1hc2sxNiBfX00sIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzI1NigoX19tbWFzazE2KV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfbWluX2VwdTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19zaHVmZmxlX2VwaTgoX19tMTI4aSBfX1csIF9fbW1hc2sxNiBfX1UsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzEyOCgoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZxaSlfbW1fc2h1ZmZsZV9lcGk4KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZxaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfc2h1ZmZsZV9lcGk4KF9fbW1hc2sxNiBfX1UsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzEyOCgoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZxaSlfbW1fc2h1ZmZsZV9lcGk4KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZxaSlfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfc2h1ZmZsZV9lcGk4KF9fbTI1NmkgX19XLCBfX21tYXNrMzIgX19VLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl8yNTYoKF9fbW1hc2szMilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMycWkpX21tMjU2X3NodWZmbGVfZXBpOChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMycWkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X3NodWZmbGVfZXBpOChfX21tYXNrMzIgX19VLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl8yNTYoKF9fbW1hc2szMilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMycWkpX21tMjU2X3NodWZmbGVfZXBpOChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMycWkpX21tMjU2X3NldHplcm9fc2kyNTYoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3N1YnNfZXBpOChfX20xMjhpIF9fVywgX19tbWFzazE2IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfMTI4KChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZxaSlfbW1fc3Vic19lcGk4KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X3N1YnNfZXBpOChfX21tYXNrMTYgX19VLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl8xMjgoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKV9tbV9zdWJzX2VwaTgoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZxaSlfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfc3Vic19lcGk4KF9fbTI1NmkgX19XLCBfX21tYXNrMzIgX19VLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl8yNTYoKF9fbW1hc2szMilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMycWkpX21tMjU2X3N1YnNfZXBpOChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMycWkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X3N1YnNfZXBpOChfX21tYXNrMzIgX19VLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl8yNTYoKF9fbW1hc2szMilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMycWkpX21tMjU2X3N1YnNfZXBpOChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMycWkpX21tMjU2X3NldHplcm9fc2kyNTYoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3N1YnNfZXBpMTYoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX3N1YnNfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9zdWJzX2VwaTE2KF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX3N1YnNfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19zdWJzX2VwaTE2KF9fbTI1NmkgX19XLCBfX21tYXNrMTYgX19VLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0d18yNTYoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfc3Vic19lcGkxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfc3Vic19lcGkxNihfX21tYXNrMTYgX19VLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0d18yNTYoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfc3Vic19lcGkxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfc3Vic19lcHU4KF9fbTEyOGkgX19XLCBfX21tYXNrMTYgX19VLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl8xMjgoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKV9tbV9zdWJzX2VwdTgoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZxaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfc3Vic19lcHU4KF9fbW1hc2sxNiBfX1UsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzEyOCgoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpX21tX3N1YnNfZXB1OChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19zdWJzX2VwdTgoX19tMjU2aSBfX1csIF9fbW1hc2szMiBfX1UsIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzI1NigoX19tbWFzazMyKV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJxaSlfbW0yNTZfc3Vic19lcHU4KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJxaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfc3Vic19lcHU4KF9fbW1hc2szMiBfX1UsIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzI1NigoX19tbWFzazMyKV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJxaSlfbW0yNTZfc3Vic19lcHU4KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJxaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfc3Vic19lcHUxNihfX20xMjhpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0d18xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfbW1fc3Vic19lcHUxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X3N1YnNfZXB1MTYoX19tbWFzazggX19VLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0d18xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfbW1fc3Vic19lcHUxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX3NldHplcm9fc2kxMjgoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX3N1YnNfZXB1MTYoX19tMjU2aSBfX1csIF9fbW1hc2sxNiBfX1UsIF9fbTI1NmkgX19BLAogICAgICBfX20yNTZpIF9fQikgewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzI1NigoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKV9tbTI1Nl9zdWJzX2VwdTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9zdWJzX2VwdTE2KF9fbW1hc2sxNiBfX1UsIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzI1NigoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKV9tbTI1Nl9zdWJzX2VwdTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fcGVybXV0ZXgydmFyX2VwaTE2KF9fbTEyOGkgX19BLCBfX20xMjhpIF9fSSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdnBlcm1pMnZhcmhpMTI4KChfX3Y4aGkpX19BLCAoX192OGhpKV9fSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpIF9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3Blcm11dGV4MnZhcl9lcGkxNihfX20xMjhpIF9fQSwgX19tbWFzazggX19VLCBfX20xMjhpIF9fSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMTI4KF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX3Blcm11dGV4MnZhcl9lcGkxNihfX0EsIF9fSSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2syX3Blcm11dGV4MnZhcl9lcGkxNihfX20xMjhpIF9fQSwgX19tMTI4aSBfX0ksIF9fbW1hc2s4IF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzEyOChfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9tbV9wZXJtdXRleDJ2YXJfZXBpMTYoX19BLCBfX0ksIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9fSSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9wZXJtdXRleDJ2YXJfZXBpMTYgKF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19JLAogICAgICAgICAgICBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzEyOChfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9tbV9wZXJtdXRleDJ2YXJfZXBpMTYoX19BLCBfX0ksIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfcGVybXV0ZXgydmFyX2VwaTE2KF9fbTI1NmkgX19BLCBfX20yNTZpIF9fSSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfdnBlcm1pMnZhcmhpMjU2KChfX3YxNmhpKV9fQSwgKF9fdjE2aGkpX19JLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfcGVybXV0ZXgydmFyX2VwaTE2KF9fbTI1NmkgX19BLCBfX21tYXNrMTYgX19VLCBfX20yNTZpIF9fSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMjU2KF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX21tMjU2X3Blcm11dGV4MnZhcl9lcGkxNihfX0EsIF9fSSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2syX3Blcm11dGV4MnZhcl9lcGkxNihfX20yNTZpIF9fQSwgX19tMjU2aSBfX0ksIF9fbW1hc2sxNiBfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0d18yNTYoX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfcGVybXV0ZXgydmFyX2VwaTE2KF9fQSwgX19JLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfX0kpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfcGVybXV0ZXgydmFyX2VwaTE2IChfX21tYXNrMTYgX19VLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMjU2KF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX21tMjU2X3Blcm11dGV4MnZhcl9lcGkxNihfX0EsIF9fSSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX21tMjU2X3NldHplcm9fc2kyNTYoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX21hZGR1YnNfZXBpMTYoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX1gsIF9fbTEyOGkgX19ZKSB7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfbW1fbWFkZHVic19lcGkxNihfX1gsIF9fWSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfbWFkZHVic19lcGkxNihfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19YLCBfX20xMjhpIF9fWSkgewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX21hZGR1YnNfZXBpMTYoX19YLCBfX1kpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX3NldHplcm9fc2kxMjgoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX21hZGR1YnNfZXBpMTYoX19tMjU2aSBfX1csIF9fbW1hc2sxNiBfX1UsIF9fbTI1NmkgX19YLAogICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTI1NmkgX19ZKSB7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMjU2KChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX21tMjU2X21hZGR1YnNfZXBpMTYoX19YLCBfX1kpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X21hZGR1YnNfZXBpMTYoX19tbWFzazE2IF9fVSwgX19tMjU2aSBfX1gsIF9fbTI1NmkgX19ZKSB7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMjU2KChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX21tMjU2X21hZGR1YnNfZXBpMTYoX19YLCBfX1kpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX21tMjU2X3NldHplcm9fc2kyNTYoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX21hZGRfZXBpMTYoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKSB7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX21hZGRfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9tYWRkX2VwaTE2KF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKSB7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX21hZGRfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19tYWRkX2VwaTE2KF9fbTI1NmkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikgewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X21hZGRfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X21hZGRfZXBpMTYoX19tbWFzazggX19VLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpIHsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9tYWRkX2VwaTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fY3Z0c2VwaTE2X2VwaTggKF9fbTEyOGkgX19BKSB7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92c3diMTI4X21hc2sgKChfX3Y4aGkpIF9fQSwKICAgICAgICAgICAgICAgKF9fdjE2cWkpIF9tbV9zZXR6ZXJvX3NpMTI4KCksCiAgICAgICAgICAgICAgIChfX21tYXNrOCkgLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19jdnRzZXBpMTZfZXBpOCAoX19tMTI4aSBfX08sIF9fbW1hc2s4IF9fTSwgX19tMTI4aSBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Btb3Zzd2IxMjhfbWFzayAoKF9fdjhoaSkgX19BLAogICAgICAgICAgICAgICAoX192MTZxaSkgX19PLAogICAgICAgICAgICAgICAgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2N2dHNlcGkxNl9lcGk4IChfX21tYXNrOCBfX00sIF9fbTEyOGkgX19BKSB7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92c3diMTI4X21hc2sgKChfX3Y4aGkpIF9fQSwKICAgICAgICAgICAgICAgKF9fdjE2cWkpIF9tbV9zZXR6ZXJvX3NpMTI4KCksCiAgICAgICAgICAgICAgIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9jdnRzZXBpMTZfZXBpOCAoX19tMjU2aSBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Btb3Zzd2IyNTZfbWFzayAoKF9fdjE2aGkpIF9fQSwKICAgICAgICAgICAgICAgKF9fdjE2cWkpIF9tbV9zZXR6ZXJvX3NpMTI4KCksCiAgICAgICAgICAgICAgIChfX21tYXNrMTYpIC0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfY3Z0c2VwaTE2X2VwaTggKF9fbTEyOGkgX19PLCBfX21tYXNrMTYgX19NLCBfX20yNTZpIF9fQSkgewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnN3YjI1Nl9tYXNrICgoX192MTZoaSkgX19BLAogICAgICAgICAgICAgICAoX192MTZxaSkgX19PLAogICAgICAgICAgICAgICAgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2N2dHNlcGkxNl9lcGk4IChfX21tYXNrMTYgX19NLCBfX20yNTZpIF9fQSkgewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnN3YjI1Nl9tYXNrICgoX192MTZoaSkgX19BLAogICAgICAgICAgICAgICAoX192MTZxaSkgX21tX3NldHplcm9fc2kxMjgoKSwKICAgICAgICAgICAgICAgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX2N2dHVzZXBpMTZfZXBpOCAoX19tMTI4aSBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Btb3Z1c3diMTI4X21hc2sgKChfX3Y4aGkpIF9fQSwKICAgICAgICAgICAgICAgIChfX3YxNnFpKSBfbW1fc2V0emVyb19zaTEyOCgpLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSAtMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2N2dHVzZXBpMTZfZXBpOCAoX19tMTI4aSBfX08sIF9fbW1hc2s4IF9fTSwgX19tMTI4aSBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Btb3Z1c3diMTI4X21hc2sgKChfX3Y4aGkpIF9fQSwKICAgICAgICAgICAgICAgIChfX3YxNnFpKSBfX08sCiAgICAgICAgICAgICAgICBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfY3Z0dXNlcGkxNl9lcGk4IChfX21tYXNrOCBfX00sIF9fbTEyOGkgX19BKSB7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92dXN3YjEyOF9tYXNrICgoX192OGhpKSBfX0EsCiAgICAgICAgICAgICAgICAoX192MTZxaSkgX21tX3NldHplcm9fc2kxMjgoKSwKICAgICAgICAgICAgICAgIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9jdnR1c2VwaTE2X2VwaTggKF9fbTI1NmkgX19BKSB7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92dXN3YjI1Nl9tYXNrICgoX192MTZoaSkgX19BLAogICAgICAgICAgICAgICAgKF9fdjE2cWkpIF9tbV9zZXR6ZXJvX3NpMTI4KCksCiAgICAgICAgICAgICAgICAoX19tbWFzazE2KSAtMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2N2dHVzZXBpMTZfZXBpOCAoX19tMTI4aSBfX08sIF9fbW1hc2sxNiBfX00sIF9fbTI1NmkgX19BKSB7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92dXN3YjI1Nl9tYXNrICgoX192MTZoaSkgX19BLAogICAgICAgICAgICAgICAgKF9fdjE2cWkpIF9fTywKICAgICAgICAgICAgICAgIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9jdnR1c2VwaTE2X2VwaTggKF9fbW1hc2sxNiBfX00sIF9fbTI1NmkgX19BKSB7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92dXN3YjI1Nl9tYXNrICgoX192MTZoaSkgX19BLAogICAgICAgICAgICAgICAgKF9fdjE2cWkpIF9tbV9zZXR6ZXJvX3NpMTI4KCksCiAgICAgICAgICAgICAgICBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fY3Z0ZXBpMTZfZXBpOCAoX19tMTI4aSBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX3NodWZmbGV2ZWN0b3IoCiAgICAgIF9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKChfX3Y4aGkpX19BLCBfX3Y4cWkpLAogICAgICAoX192OHFpKXswLCAwLCAwLCAwLCAwLCAwLCAwLCAwfSwgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLAogICAgICAxMiwgMTMsIDE0LCAxNSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2N2dGVwaTE2X2VwaTggKF9fbTEyOGkgX19PLCBfX21tYXNrOCBfX00sIF9fbTEyOGkgX19BKSB7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92d2IxMjhfbWFzayAoKF9fdjhoaSkgX19BLAogICAgICAgICAgICAgICAoX192MTZxaSkgX19PLAogICAgICAgICAgICAgICBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfY3Z0ZXBpMTZfZXBpOCAoX19tbWFzazggX19NLCBfX20xMjhpIF9fQSkgewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1vdndiMTI4X21hc2sgKChfX3Y4aGkpIF9fQSwKICAgICAgICAgICAgICAgKF9fdjE2cWkpIF9tbV9zZXR6ZXJvX3NpMTI4KCksCiAgICAgICAgICAgICAgIF9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2N2dGVwaTE2X3N0b3JldV9lcGk4ICh2b2lkICogX19QLCBfX21tYXNrOCBfX00sIF9fbTEyOGkgX19BKQp7CiAgX19idWlsdGluX2lhMzJfcG1vdndiMTI4bWVtX21hc2sgKChfX3YxNnFpICopIF9fUCwgKF9fdjhoaSkgX19BLCBfX00pOwp9CgoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfY3Z0c2VwaTE2X3N0b3JldV9lcGk4ICh2b2lkICogX19QLCBfX21tYXNrOCBfX00sIF9fbTEyOGkgX19BKQp7CiAgX19idWlsdGluX2lhMzJfcG1vdnN3YjEyOG1lbV9tYXNrICgoX192MTZxaSAqKSBfX1AsIChfX3Y4aGkpIF9fQSwgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfY3Z0dXNlcGkxNl9zdG9yZXVfZXBpOCAodm9pZCAqIF9fUCwgX19tbWFzazggX19NLCBfX20xMjhpIF9fQSkKewogIF9fYnVpbHRpbl9pYTMyX3Btb3Z1c3diMTI4bWVtX21hc2sgKChfX3YxNnFpICopIF9fUCwgKF9fdjhoaSkgX19BLCBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfY3Z0ZXBpMTZfZXBpOCAoX19tMjU2aSBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoKF9fdjE2aGkpIF9fQSwgX192MTZxaSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2N2dGVwaTE2X2VwaTggKF9fbTEyOGkgX19PLCBfX21tYXNrMTYgX19NLCBfX20yNTZpIF9fQSkgewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzEyOCgoX19tbWFzazE2KV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpX21tMjU2X2N2dGVwaTE2X2VwaTgoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpX19PKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2N2dGVwaTE2X2VwaTggKF9fbW1hc2sxNiBfX00sIF9fbTI1NmkgX19BKSB7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfMTI4KChfX21tYXNrMTYpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZxaSlfbW0yNTZfY3Z0ZXBpMTZfZXBpOChfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZxaSlfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfY3Z0ZXBpMTZfc3RvcmV1X2VwaTggKHZvaWQgKiBfX1AsIF9fbW1hc2sxNiBfX00sIF9fbTI1NmkgX19BKQp7CiAgX19idWlsdGluX2lhMzJfcG1vdndiMjU2bWVtX21hc2sgKChfX3YxNnFpICopIF9fUCwgKF9fdjE2aGkpIF9fQSwgX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfY3Z0c2VwaTE2X3N0b3JldV9lcGk4ICh2b2lkICogX19QLCBfX21tYXNrMTYgX19NLCBfX20yNTZpIF9fQSkKewogIF9fYnVpbHRpbl9pYTMyX3Btb3Zzd2IyNTZtZW1fbWFzayAoKF9fdjE2cWkgKikgX19QLCAoX192MTZoaSkgX19BLCBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19jdnR1c2VwaTE2X3N0b3JldV9lcGk4ICh2b2lkICogX19QLCBfX21tYXNrMTYgX19NLCBfX20yNTZpIF9fQSkKewogIF9fYnVpbHRpbl9pYTMyX3Btb3Z1c3diMjU2bWVtX21hc2sgKChfX3YxNnFpKikgX19QLCAoX192MTZoaSkgX19BLCBfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19tdWxocnNfZXBpMTYoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX1gsIF9fbTEyOGkgX19ZKSB7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX211bGhyc19lcGkxNihfX1gsIF9fWSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X211bGhyc19lcGkxNihfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19YLCBfX20xMjhpIF9fWSkgewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9tbV9tdWxocnNfZXBpMTYoX19YLCBfX1kpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19tdWxocnNfZXBpMTYoX19tMjU2aSBfX1csIF9fbW1hc2sxNiBfX1UsIF9fbTI1NmkgX19YLCBfX20yNTZpIF9fWSkgewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzI1NigoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfbXVsaHJzX2VwaTE2KF9fWCwgX19ZKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfbXVsaHJzX2VwaTE2KF9fbW1hc2sxNiBfX1UsIF9fbTI1NmkgX19YLCBfX20yNTZpIF9fWSkgewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzI1NigoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfbXVsaHJzX2VwaTE2KF9fWCwgX19ZKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfbXVsaGlfZXB1MTYoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKSB7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX211bGhpX2VwdTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfbXVsaGlfZXB1MTYoX19tbWFzazggX19VLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpIHsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0d18xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfbW1fbXVsaGlfZXB1MTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19tdWxoaV9lcHUxNihfX20yNTZpIF9fVywgX19tbWFzazE2IF9fVSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKSB7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMjU2KChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfbXVsaGlfZXB1MTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfbXVsaGlfZXB1MTYoX19tbWFzazE2IF9fVSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKSB7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMjU2KChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfbXVsaGlfZXB1MTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfbXVsaGlfZXBpMTYoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKSB7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX211bGhpX2VwaTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfbXVsaGlfZXBpMTYoX19tbWFzazggX19VLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpIHsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0d18xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfbW1fbXVsaGlfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19tdWxoaV9lcGkxNihfX20yNTZpIF9fVywgX19tbWFzazE2IF9fVSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKSB7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMjU2KChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfbXVsaGlfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfbXVsaGlfZXBpMTYoX19tbWFzazE2IF9fVSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKSB7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMjU2KChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfbXVsaGlfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfdW5wYWNraGlfZXBpOChfX20xMjhpIF9fVywgX19tbWFzazE2IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKSB7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfMTI4KChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpX21tX3VucGFja2hpX2VwaTgoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X3VucGFja2hpX2VwaTgoX19tbWFzazE2IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKSB7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfMTI4KChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpX21tX3VucGFja2hpX2VwaTgoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpX21tX3NldHplcm9fc2kxMjgoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX3VucGFja2hpX2VwaTgoX19tMjU2aSBfX1csIF9fbW1hc2szMiBfX1UsIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikgewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzI1NigoX19tbWFzazMyKV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMnFpKV9tbTI1Nl91bnBhY2toaV9lcGk4KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMnFpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel91bnBhY2toaV9lcGk4KF9fbW1hc2szMiBfX1UsIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikgewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzI1NigoX19tbWFzazMyKV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMnFpKV9tbTI1Nl91bnBhY2toaV9lcGk4KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMnFpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza191bnBhY2toaV9lcGkxNihfX20xMjhpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpIHsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0d18xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX3VucGFja2hpX2VwaTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X3VucGFja2hpX2VwaTE2KF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKSB7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9tbV91bnBhY2toaV9lcGkxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKSBfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfdW5wYWNraGlfZXBpMTYoX19tMjU2aSBfX1csIF9fbW1hc2sxNiBfX1UsIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikgewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzI1NigoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX21tMjU2X3VucGFja2hpX2VwaTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X3VucGFja2hpX2VwaTE2KF9fbW1hc2sxNiBfX1UsIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikgewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzI1NigoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX21tMjU2X3VucGFja2hpX2VwaTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX21tMjU2X3NldHplcm9fc2kyNTYoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3VucGFja2xvX2VwaTgoX19tMTI4aSBfX1csIF9fbW1hc2sxNiBfX1UsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikgewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzEyOCgoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKV9tbV91bnBhY2tsb19lcGk4KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel91bnBhY2tsb19lcGk4KF9fbW1hc2sxNiBfX1UsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikgewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzEyOCgoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKV9tbV91bnBhY2tsb19lcGk4KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza191bnBhY2tsb19lcGk4KF9fbTI1NmkgX19XLCBfX21tYXNrMzIgX19VLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpIHsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl8yNTYoKF9fbW1hc2szMilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJxaSlfbW0yNTZfdW5wYWNrbG9fZXBpOChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJxaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfdW5wYWNrbG9fZXBpOChfX21tYXNrMzIgX19VLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpIHsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl8yNTYoKF9fbW1hc2szMilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJxaSlfbW0yNTZfdW5wYWNrbG9fZXBpOChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJxaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfdW5wYWNrbG9fZXBpMTYoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKSB7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9tbV91bnBhY2tsb19lcGkxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel91bnBhY2tsb19lcGkxNihfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikgewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfbW1fdW5wYWNrbG9fZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSkgX21tX3NldHplcm9fc2kxMjgoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX3VucGFja2xvX2VwaTE2KF9fbTI1NmkgX19XLCBfX21tYXNrMTYgX19VLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpIHsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0d18yNTYoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKV9tbTI1Nl91bnBhY2tsb19lcGkxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel91bnBhY2tsb19lcGkxNihfX21tYXNrMTYgX19VLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpIHsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0d18yNTYoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKV9tbTI1Nl91bnBhY2tsb19lcGkxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19jdnRlcGk4X2VwaTE2KF9fbTEyOGkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX2N2dGVwaThfZXBpMTYoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfY3Z0ZXBpOF9lcGkxNihfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX2N2dGVwaThfZXBpMTYoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfY3Z0ZXBpOF9lcGkxNihfX20yNTZpIF9fVywgX19tbWFzazE2IF9fVSwgX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0d18yNTYoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKV9tbTI1Nl9jdnRlcGk4X2VwaTE2KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9jdnRlcGk4X2VwaTE2KF9fbW1hc2sxNiBfX1UsIF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMjU2KChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfY3Z0ZXBpOF9lcGkxNihfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2N2dGVwdThfZXBpMTYoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0d18xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfbW1fY3Z0ZXB1OF9lcGkxNihfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9jdnRlcHU4X2VwaTE2KF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0d18xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfbW1fY3Z0ZXB1OF9lcGkxNihfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19jdnRlcHU4X2VwaTE2KF9fbTI1NmkgX19XLCBfX21tYXNrMTYgX19VLCBfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzI1NigoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX21tMjU2X2N2dGVwdThfZXBpMTYoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2N2dGVwdThfZXBpMTYgKF9fbW1hc2sxNiBfX1UsIF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMjU2KChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfY3Z0ZXB1OF9lcGkxNihfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKCiNkZWZpbmUgX21tX21hc2tfc2h1ZmZsZWhpX2VwaTE2KFcsIFUsIEEsIGltbSkgXAogICgoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzEyOCgoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX3NodWZmbGVoaV9lcGkxNigoQSksIChpbW0pKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKShfX20xMjhpKShXKSkpCgojZGVmaW5lIF9tbV9tYXNrel9zaHVmZmxlaGlfZXBpMTYoVSwgQSwgaW1tKSBcCiAgKChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMTI4KChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfbW1fc2h1ZmZsZWhpX2VwaTE2KChBKSwgKGltbSkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX3NldHplcm9fc2kxMjgoKSkpCgojZGVmaW5lIF9tbTI1Nl9tYXNrX3NodWZmbGVoaV9lcGkxNihXLCBVLCBBLCBpbW0pIFwKICAoKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0d18yNTYoKF9fbW1hc2sxNikoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX21tMjU2X3NodWZmbGVoaV9lcGkxNigoQSksIChpbW0pKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSkoX19tMjU2aSkoVykpKQoKI2RlZmluZSBfbW0yNTZfbWFza3pfc2h1ZmZsZWhpX2VwaTE2KFUsIEEsIGltbSkgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzI1NigoX19tbWFzazE2KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfc2h1ZmZsZWhpX2VwaTE2KChBKSwgKGltbSkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpKQoKI2RlZmluZSBfbW1fbWFza19zaHVmZmxlbG9fZXBpMTYoVywgVSwgQSwgaW1tKSBcCiAgKChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMTI4KChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfbW1fc2h1ZmZsZWxvX2VwaTE2KChBKSwgKGltbSkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpKF9fbTEyOGkpKFcpKSkKCiNkZWZpbmUgX21tX21hc2t6X3NodWZmbGVsb19lcGkxNihVLCBBLCBpbW0pIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0d18xMjgoKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9tbV9zaHVmZmxlbG9fZXBpMTYoKEEpLCAoaW1tKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfbW1fc2V0emVyb19zaTEyOCgpKSkKCiNkZWZpbmUgX21tMjU2X21hc2tfc2h1ZmZsZWxvX2VwaTE2KFcsIFUsIEEsIGltbSkgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzI1NigoX19tbWFzazE2KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfc2h1ZmZsZWxvX2VwaTE2KChBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbW0pKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSkoX19tMjU2aSkoVykpKQoKI2RlZmluZSBfbW0yNTZfbWFza3pfc2h1ZmZsZWxvX2VwaTE2KFUsIEEsIGltbSkgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzI1NigoX19tbWFzazE2KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfc2h1ZmZsZWxvX2VwaTE2KChBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbW0pKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9zbGx2X2VwaTE2KF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9wc2xsdjE2aGkoKF9fdjE2aGkpX19BLCAoX192MTZoaSlfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19zbGx2X2VwaTE2KF9fbTI1NmkgX19XLCBfX21tYXNrMTYgX19VLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0d18yNTYoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfc2xsdl9lcGkxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfc2xsdl9lcGkxNihfX21tYXNrMTYgX19VLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0d18yNTYoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfc2xsdl9lcGkxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX3NsbHZfZXBpMTYoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzbGx2OGhpKChfX3Y4aGkpX19BLCAoX192OGhpKV9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3NsbHZfZXBpMTYoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX3NsbHZfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9zbGx2X2VwaTE2KF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX3NsbHZfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19zbGxfZXBpMTYoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX3NsbF9lcGkxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X3NsbF9lcGkxNiAoX19tbWFzazggX19VLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0d18xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfbW1fc2xsX2VwaTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfc2xsX2VwaTE2KF9fbTI1NmkgX19XLCBfX21tYXNrMTYgX19VLCBfX20yNTZpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0d18yNTYoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKV9tbTI1Nl9zbGxfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfc2xsX2VwaTE2KF9fbW1hc2sxNiBfX1UsIF9fbTI1NmkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzI1NigoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX21tMjU2X3NsbF9lcGkxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19zbGxpX2VwaTE2KF9fbTEyOGkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BLCB1bnNpZ25lZCBpbnQgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX3NsbGlfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9zbGxpX2VwaTE2IChfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BLCB1bnNpZ25lZCBpbnQgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX3NsbGlfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19zbGxpX2VwaTE2KF9fbTI1NmkgX19XLCBfX21tYXNrMTYgX19VLCBfX20yNTZpIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMjU2KChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKV9tbTI1Nl9zbGxpX2VwaTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfc2xsaV9lcGkxNihfX21tYXNrMTYgX19VLCBfX20yNTZpIF9fQSwgdW5zaWduZWQgaW50IF9fQikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzI1NigoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfc2xsaV9lcGkxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX21tMjU2X3NldHplcm9fc2kyNTYoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9zcmx2X2VwaTE2KF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9wc3JsdjE2aGkoKF9fdjE2aGkpX19BLCAoX192MTZoaSlfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19zcmx2X2VwaTE2KF9fbTI1NmkgX19XLCBfX21tYXNrMTYgX19VLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0d18yNTYoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfc3Jsdl9lcGkxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfc3Jsdl9lcGkxNihfX21tYXNrMTYgX19VLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0d18yNTYoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfc3Jsdl9lcGkxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX3NybHZfZXBpMTYoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3Bzcmx2OGhpKChfX3Y4aGkpX19BLCAoX192OGhpKV9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3NybHZfZXBpMTYoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX3NybHZfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9zcmx2X2VwaTE2KF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX3NybHZfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfc3Jhdl9lcGkxNihfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfcHNyYXYxNmhpKChfX3YxNmhpKV9fQSwgKF9fdjE2aGkpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfc3Jhdl9lcGkxNihfX20yNTZpIF9fVywgX19tbWFzazE2IF9fVSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMjU2KChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX21tMjU2X3NyYXZfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X3NyYXZfZXBpMTYoX19tbWFzazE2IF9fVSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMjU2KChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX21tMjU2X3NyYXZfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX21tMjU2X3NldHplcm9fc2kyNTYoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9zcmF2X2VwaTE2KF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wc3JhdjhoaSgoX192OGhpKV9fQSwgKF9fdjhoaSlfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19zcmF2X2VwaTE2KF9fbTEyOGkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9tbV9zcmF2X2VwaTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfc3Jhdl9lcGkxNihfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9tbV9zcmF2X2VwaTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfc3JhX2VwaTE2KF9fbTEyOGkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9tbV9zcmFfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9zcmFfZXBpMTYoX19tbWFzazggX19VLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0d18xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfbW1fc3JhX2VwaTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfc3JhX2VwaTE2KF9fbTI1NmkgX19XLCBfX21tYXNrMTYgX19VLCBfX20yNTZpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0d18yNTYoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKV9tbTI1Nl9zcmFfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfc3JhX2VwaTE2KF9fbW1hc2sxNiBfX1UsIF9fbTI1NmkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzI1NigoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX21tMjU2X3NyYV9lcGkxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19zcmFpX2VwaTE2KF9fbTEyOGkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BLCB1bnNpZ25lZCBpbnQgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX3NyYWlfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9zcmFpX2VwaTE2KF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIHVuc2lnbmVkIGludCBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0d18xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfbW1fc3JhaV9lcGkxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX3NldHplcm9fc2kxMjgoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX3NyYWlfZXBpMTYoX19tMjU2aSBfX1csIF9fbW1hc2sxNiBfX1UsIF9fbTI1NmkgX19BLAogICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0d18yNTYoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX21tMjU2X3NyYWlfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9zcmFpX2VwaTE2KF9fbW1hc2sxNiBfX1UsIF9fbTI1NmkgX19BLCB1bnNpZ25lZCBpbnQgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMjU2KChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKV9tbTI1Nl9zcmFpX2VwaTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfc3JsX2VwaTE2KF9fbTEyOGkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9tbV9zcmxfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9zcmxfZXBpMTYgKF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX3NybF9lcGkxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX3NldHplcm9fc2kxMjgoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX3NybF9lcGkxNihfX20yNTZpIF9fVywgX19tbWFzazE2IF9fVSwgX19tMjU2aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMjU2KChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfc3JsX2VwaTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X3NybF9lcGkxNihfX21tYXNrMTYgX19VLCBfX20yNTZpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0d18yNTYoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKV9tbTI1Nl9zcmxfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfc3JsaV9lcGkxNihfX20xMjhpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhpIF9fQSwgaW50IF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9tbV9zcmxpX2VwaTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfc3JsaV9lcGkxNiAoX19tbWFzazggX19VLCBfX20xMjhpIF9fQSwgaW50IF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9tbV9zcmxpX2VwaTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfc3JsaV9lcGkxNihfX20yNTZpIF9fVywgX19tbWFzazE2IF9fVSwgX19tMjU2aSBfX0EsIGludCBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0d18yNTYoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX21tMjU2X3NybGlfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9zcmxpX2VwaTE2KF9fbW1hc2sxNiBfX1UsIF9fbTI1NmkgX19BLCBpbnQgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMjU2KChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKV9tbTI1Nl9zcmxpX2VwaTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfbW92X2VwaTE2IChfX20xMjhpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfc2VsZWN0d18xMjggKChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgKF9fdjhoaSkgX19BLAogICAgICAgICAgICAgICAgKF9fdjhoaSkgX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X21vdl9lcGkxNiAoX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfc2VsZWN0d18xMjggKChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgKF9fdjhoaSkgX19BLAogICAgICAgICAgICAgICAgKF9fdjhoaSkgX21tX3NldHplcm9fc2kxMjggKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19tb3ZfZXBpMTYgKF9fbTI1NmkgX19XLCBfX21tYXNrMTYgX19VLCBfX20yNTZpIF9fQSkKewogIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfc2VsZWN0d18yNTYgKChfX21tYXNrMTYpIF9fVSwKICAgICAgICAgICAgICAgIChfX3YxNmhpKSBfX0EsCiAgICAgICAgICAgICAgICAoX192MTZoaSkgX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X21vdl9lcGkxNiAoX19tbWFzazE2IF9fVSwgX19tMjU2aSBfX0EpCnsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMjU2ICgoX19tbWFzazE2KSBfX1UsCiAgICAgICAgICAgICAgICAoX192MTZoaSkgX19BLAogICAgICAgICAgICAgICAgKF9fdjE2aGkpIF9tbTI1Nl9zZXR6ZXJvX3NpMjU2ICgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfbW92X2VwaTggKF9fbTEyOGkgX19XLCBfX21tYXNrMTYgX19VLCBfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfc2VsZWN0Yl8xMjggKChfX21tYXNrMTYpIF9fVSwKICAgICAgICAgICAgICAgIChfX3YxNnFpKSBfX0EsCiAgICAgICAgICAgICAgICAoX192MTZxaSkgX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X21vdl9lcGk4IChfX21tYXNrMTYgX19VLCBfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfc2VsZWN0Yl8xMjggKChfX21tYXNrMTYpIF9fVSwKICAgICAgICAgICAgICAgIChfX3YxNnFpKSBfX0EsCiAgICAgICAgICAgICAgICAoX192MTZxaSkgX21tX3NldHplcm9fc2kxMjggKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19tb3ZfZXBpOCAoX19tMjU2aSBfX1csIF9fbW1hc2szMiBfX1UsIF9fbTI1NmkgX19BKQp7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzI1NiAoKF9fbW1hc2szMikgX19VLAogICAgICAgICAgICAgICAgKF9fdjMycWkpIF9fQSwKICAgICAgICAgICAgICAgIChfX3YzMnFpKSBfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfbW92X2VwaTggKF9fbW1hc2szMiBfX1UsIF9fbTI1NmkgX19BKQp7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzI1NiAoKF9fbW1hc2szMikgX19VLAogICAgICAgICAgICAgICAgKF9fdjMycWkpIF9fQSwKICAgICAgICAgICAgICAgIChfX3YzMnFpKSBfbW0yNTZfc2V0emVyb19zaTI1NiAoKSk7Cn0KCgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19zZXQxX2VwaTggKF9fbTEyOGkgX19PLCBfX21tYXNrMTYgX19NLCBjaGFyIF9fQSkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfc2VsZWN0Yl8xMjgoX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpIF9tbV9zZXQxX2VwaTgoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKSBfX08pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfc2V0MV9lcGk4IChfX21tYXNrMTYgX19NLCBjaGFyIF9fQSkKewogcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzEyOChfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKSBfbW1fc2V0MV9lcGk4KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKSBfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfc2V0MV9lcGk4IChfX20yNTZpIF9fTywgX19tbWFzazMyIF9fTSwgY2hhciBfX0EpCnsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfMjU2KF9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMnFpKSBfbW0yNTZfc2V0MV9lcGk4KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJxaSkgX19PKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X3NldDFfZXBpOCAoX19tbWFzazMyIF9fTSwgY2hhciBfX0EpCnsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfMjU2KF9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMnFpKSBfbW0yNTZfc2V0MV9lcGk4KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJxaSkgX21tMjU2X3NldHplcm9fc2kyNTYoKSk7Cn0KCnN0YXRpYyBfX2lubGluZSBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbG9hZHVfZXBpMTYgKHZvaWQgY29uc3QgKl9fUCkKewogIHN0cnVjdCBfX2xvYWR1X2VwaTE2IHsKICAgIF9fbTEyOGlfdSBfX3Y7CiAgfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19fKSk7CiAgcmV0dXJuICgoY29uc3Qgc3RydWN0IF9fbG9hZHVfZXBpMTYqKV9fUCktPl9fdjsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfbG9hZHVfZXBpMTYgKF9fbTEyOGkgX19XLCBfX21tYXNrOCBfX1UsIHZvaWQgY29uc3QgKl9fUCkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfbG9hZGRxdWhpMTI4X21hc2sgKChjb25zdCBfX3Y4aGkgKikgX19QLAogICAgICAgICAgICAgICAgIChfX3Y4aGkpIF9fVywKICAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9sb2FkdV9lcGkxNiAoX19tbWFzazggX19VLCB2b2lkIGNvbnN0ICpfX1ApCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX2xvYWRkcXVoaTEyOF9tYXNrICgoY29uc3QgX192OGhpICopIF9fUCwKICAgICAgICAgICAgICAgICAoX192OGhpKQogICAgICAgICAgICAgICAgIF9tbV9zZXR6ZXJvX3NpMTI4ICgpLAogICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9sb2FkdV9lcGkxNiAodm9pZCBjb25zdCAqX19QKQp7CiAgc3RydWN0IF9fbG9hZHVfZXBpMTYgewogICAgX19tMjU2aV91IF9fdjsKICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsKICByZXR1cm4gKChjb25zdCBzdHJ1Y3QgX19sb2FkdV9lcGkxNiopX19QKS0+X192Owp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19sb2FkdV9lcGkxNiAoX19tMjU2aSBfX1csIF9fbW1hc2sxNiBfX1UsIHZvaWQgY29uc3QgKl9fUCkKewogIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfbG9hZGRxdWhpMjU2X21hc2sgKChjb25zdCBfX3YxNmhpICopIF9fUCwKICAgICAgICAgICAgICAgICAoX192MTZoaSkgX19XLAogICAgICAgICAgICAgICAgIChfX21tYXNrMTYpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9sb2FkdV9lcGkxNiAoX19tbWFzazE2IF9fVSwgdm9pZCBjb25zdCAqX19QKQp7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl9sb2FkZHF1aGkyNTZfbWFzayAoKGNvbnN0IF9fdjE2aGkgKikgX19QLAogICAgICAgICAgICAgICAgIChfX3YxNmhpKQogICAgICAgICAgICAgICAgIF9tbTI1Nl9zZXR6ZXJvX3NpMjU2ICgpLAogICAgICAgICAgICAgICAgIChfX21tYXNrMTYpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZSBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbG9hZHVfZXBpOCAodm9pZCBjb25zdCAqX19QKQp7CiAgc3RydWN0IF9fbG9hZHVfZXBpOCB7CiAgICBfX20xMjhpX3UgX192OwogIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOwogIHJldHVybiAoKGNvbnN0IHN0cnVjdCBfX2xvYWR1X2VwaTgqKV9fUCktPl9fdjsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfbG9hZHVfZXBpOCAoX19tMTI4aSBfX1csIF9fbW1hc2sxNiBfX1UsIHZvaWQgY29uc3QgKl9fUCkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfbG9hZGRxdXFpMTI4X21hc2sgKChjb25zdCBfX3YxNnFpICopIF9fUCwKICAgICAgICAgICAgICAgICAoX192MTZxaSkgX19XLAogICAgICAgICAgICAgICAgIChfX21tYXNrMTYpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9sb2FkdV9lcGk4IChfX21tYXNrMTYgX19VLCB2b2lkIGNvbnN0ICpfX1ApCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX2xvYWRkcXVxaTEyOF9tYXNrICgoY29uc3QgX192MTZxaSAqKSBfX1AsCiAgICAgICAgICAgICAgICAgKF9fdjE2cWkpCiAgICAgICAgICAgICAgICAgX21tX3NldHplcm9fc2kxMjggKCksCiAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikgX19VKTsKfQoKc3RhdGljIF9faW5saW5lIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9sb2FkdV9lcGk4ICh2b2lkIGNvbnN0ICpfX1ApCnsKICBzdHJ1Y3QgX19sb2FkdV9lcGk4IHsKICAgIF9fbTI1NmlfdSBfX3Y7CiAgfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19fKSk7CiAgcmV0dXJuICgoY29uc3Qgc3RydWN0IF9fbG9hZHVfZXBpOCopX19QKS0+X192Owp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19sb2FkdV9lcGk4IChfX20yNTZpIF9fVywgX19tbWFzazMyIF9fVSwgdm9pZCBjb25zdCAqX19QKQp7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl9sb2FkZHF1cWkyNTZfbWFzayAoKGNvbnN0IF9fdjMycWkgKikgX19QLAogICAgICAgICAgICAgICAgIChfX3YzMnFpKSBfX1csCiAgICAgICAgICAgICAgICAgKF9fbW1hc2szMikgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2xvYWR1X2VwaTggKF9fbW1hc2szMiBfX1UsIHZvaWQgY29uc3QgKl9fUCkKewogIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfbG9hZGRxdXFpMjU2X21hc2sgKChjb25zdCBfX3YzMnFpICopIF9fUCwKICAgICAgICAgICAgICAgICAoX192MzJxaSkKICAgICAgICAgICAgICAgICBfbW0yNTZfc2V0emVyb19zaTI1NiAoKSwKICAgICAgICAgICAgICAgICAoX19tbWFzazMyKSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmUgdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX3N0b3JldV9lcGkxNiAodm9pZCAqX19QLCBfX20xMjhpIF9fQSkKewogIHN0cnVjdCBfX3N0b3JldV9lcGkxNiB7CiAgICBfX20xMjhpX3UgX192OwogIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOwogICgoc3RydWN0IF9fc3RvcmV1X2VwaTE2KilfX1ApLT5fX3YgPSBfX0E7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3N0b3JldV9lcGkxNiAodm9pZCAqX19QLCBfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BKQp7CiAgX19idWlsdGluX2lhMzJfc3RvcmVkcXVoaTEyOF9tYXNrICgoX192OGhpICopIF9fUCwKICAgICAgICAgICAgIChfX3Y4aGkpIF9fQSwKICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9zdG9yZXVfZXBpMTYgKHZvaWQgKl9fUCwgX19tMjU2aSBfX0EpCnsKICBzdHJ1Y3QgX19zdG9yZXVfZXBpMTYgewogICAgX19tMjU2aV91IF9fdjsKICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsKICAoKHN0cnVjdCBfX3N0b3JldV9lcGkxNiopX19QKS0+X192ID0gX19BOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19zdG9yZXVfZXBpMTYgKHZvaWQgKl9fUCwgX19tbWFzazE2IF9fVSwgX19tMjU2aSBfX0EpCnsKICBfX2J1aWx0aW5faWEzMl9zdG9yZWRxdWhpMjU2X21hc2sgKChfX3YxNmhpICopIF9fUCwKICAgICAgICAgICAgIChfX3YxNmhpKSBfX0EsCiAgICAgICAgICAgICAoX19tbWFzazE2KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmUgdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX3N0b3JldV9lcGk4ICh2b2lkICpfX1AsIF9fbTEyOGkgX19BKQp7CiAgc3RydWN0IF9fc3RvcmV1X2VwaTggewogICAgX19tMTI4aV91IF9fdjsKICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsKICAoKHN0cnVjdCBfX3N0b3JldV9lcGk4KilfX1ApLT5fX3YgPSBfX0E7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3N0b3JldV9lcGk4ICh2b2lkICpfX1AsIF9fbW1hc2sxNiBfX1UsIF9fbTEyOGkgX19BKQp7CiAgX19idWlsdGluX2lhMzJfc3RvcmVkcXVxaTEyOF9tYXNrICgoX192MTZxaSAqKSBfX1AsCiAgICAgICAgICAgICAoX192MTZxaSkgX19BLAogICAgICAgICAgICAgKF9fbW1hc2sxNikgX19VKTsKfQoKc3RhdGljIF9faW5saW5lIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9zdG9yZXVfZXBpOCAodm9pZCAqX19QLCBfX20yNTZpIF9fQSkKewogIHN0cnVjdCBfX3N0b3JldV9lcGk4IHsKICAgIF9fbTI1NmlfdSBfX3Y7CiAgfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19fKSk7CiAgKChzdHJ1Y3QgX19zdG9yZXVfZXBpOCopX19QKS0+X192ID0gX19BOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19zdG9yZXVfZXBpOCAodm9pZCAqX19QLCBfX21tYXNrMzIgX19VLCBfX20yNTZpIF9fQSkKewogIF9fYnVpbHRpbl9pYTMyX3N0b3JlZHF1cWkyNTZfbWFzayAoKF9fdjMycWkgKikgX19QLAogICAgICAgICAgICAgKF9fdjMycWkpIF9fQSwKICAgICAgICAgICAgIChfX21tYXNrMzIpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbW1hc2sxNiBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX3Rlc3RfZXBpOF9tYXNrIChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gX21tX2NtcG5lcV9lcGk4X21hc2sgKF9tbV9hbmRfc2kxMjgoX19BLCBfX0IpLCBfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tbWFzazE2IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza190ZXN0X2VwaThfbWFzayAoX19tbWFzazE2IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIF9tbV9tYXNrX2NtcG5lcV9lcGk4X21hc2sgKF9fVSwgX21tX2FuZF9zaTEyOCAoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tbWFzazMyIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfdGVzdF9lcGk4X21hc2sgKF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikKewogIHJldHVybiBfbW0yNTZfY21wbmVxX2VwaThfbWFzayAoX21tMjU2X2FuZF9zaTI1NihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tbWFzazMyIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza190ZXN0X2VwaThfbWFzayAoX19tbWFzazMyIF9fVSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIF9tbTI1Nl9tYXNrX2NtcG5lcV9lcGk4X21hc2sgKF9fVSwgX21tMjU2X2FuZF9zaTI1NihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX21tYXNrOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX3Rlc3RfZXBpMTZfbWFzayAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIF9tbV9jbXBuZXFfZXBpMTZfbWFzayAoX21tX2FuZF9zaTEyOCAoX19BLCBfX0IpLCBfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tbWFzazggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3Rlc3RfZXBpMTZfbWFzayAoX19tbWFzazggX19VLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gX21tX21hc2tfY21wbmVxX2VwaTE2X21hc2sgKF9fVSwgX21tX2FuZF9zaTEyOCAoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX21tX3NldHplcm9fc2kxMjgoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbW1hc2sxNiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X3Rlc3RfZXBpMTZfbWFzayAoX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIF9tbTI1Nl9jbXBuZXFfZXBpMTZfbWFzayAoX21tMjU2X2FuZF9zaTI1NiAoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9tbTI1Nl9zZXR6ZXJvX3NpMjU2ICgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tbWFzazE2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza190ZXN0X2VwaTE2X21hc2sgKF9fbW1hc2sxNiBfX1UsIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikKewogIHJldHVybiBfbW0yNTZfbWFza19jbXBuZXFfZXBpMTZfbWFzayAoX19VLCBfbW0yNTZfYW5kX3NpMjU2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX21tYXNrMTYgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV90ZXN0bl9lcGk4X21hc2sgKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiBfbW1fY21wZXFfZXBpOF9tYXNrIChfbW1fYW5kX3NpMTI4IChfX0EsIF9fQiksIF9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX21tYXNrMTYgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3Rlc3RuX2VwaThfbWFzayAoX19tbWFzazE2IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIF9tbV9tYXNrX2NtcGVxX2VwaThfbWFzayAoX19VLCBfbW1fYW5kX3NpMTI4IChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tbWFzazMyIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfdGVzdG5fZXBpOF9tYXNrIChfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gX21tMjU2X2NtcGVxX2VwaThfbWFzayAoX21tMjU2X2FuZF9zaTI1NiAoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tbWFzazMyIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza190ZXN0bl9lcGk4X21hc2sgKF9fbW1hc2szMiBfX1UsIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikKewogIHJldHVybiBfbW0yNTZfbWFza19jbXBlcV9lcGk4X21hc2sgKF9fVSwgX21tMjU2X2FuZF9zaTI1NiAoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX21tYXNrOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX3Rlc3RuX2VwaTE2X21hc2sgKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiBfbW1fY21wZXFfZXBpMTZfbWFzayAoX21tX2FuZF9zaTEyOCAoX19BLCBfX0IpLCBfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tbWFzazggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3Rlc3RuX2VwaTE2X21hc2sgKF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIF9tbV9tYXNrX2NtcGVxX2VwaTE2X21hc2sgKF9fVSwgX21tX2FuZF9zaTEyOChfX0EsIF9fQiksIF9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX21tYXNrMTYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl90ZXN0bl9lcGkxNl9tYXNrIChfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gX21tMjU2X2NtcGVxX2VwaTE2X21hc2sgKF9tbTI1Nl9hbmRfc2kyNTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX21tMjU2X3NldHplcm9fc2kyNTYoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbW1hc2sxNiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfdGVzdG5fZXBpMTZfbWFzayAoX19tbWFzazE2IF9fVSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIF9tbTI1Nl9tYXNrX2NtcGVxX2VwaTE2X21hc2sgKF9fVSwgX21tMjU2X2FuZF9zaTI1NiAoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tbWFzazE2IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbW92ZXBpOF9tYXNrIChfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tbWFzazE2KSBfX2J1aWx0aW5faWEzMl9jdnRiMm1hc2sxMjggKChfX3YxNnFpKSBfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX21tYXNrMzIgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tb3ZlcGk4X21hc2sgKF9fbTI1NmkgX19BKQp7CiAgcmV0dXJuIChfX21tYXNrMzIpIF9fYnVpbHRpbl9pYTMyX2N2dGIybWFzazI1NiAoKF9fdjMycWkpIF9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbW1hc2s4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbW92ZXBpMTZfbWFzayAoX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbW1hc2s4KSBfX2J1aWx0aW5faWEzMl9jdnR3Mm1hc2sxMjggKChfX3Y4aGkpIF9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbW1hc2sxNiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21vdmVwaTE2X21hc2sgKF9fbTI1NmkgX19BKQp7CiAgcmV0dXJuIChfX21tYXNrMTYpIF9fYnVpbHRpbl9pYTMyX2N2dHcybWFzazI1NiAoKF9fdjE2aGkpIF9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tb3ZtX2VwaTggKF9fbW1hc2sxNiBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX2N2dG1hc2syYjEyOCAoX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21vdm1fZXBpOCAoX19tbWFzazMyIF9fQSkKewogIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfY3Z0bWFzazJiMjU2IChfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbW92bV9lcGkxNiAoX19tbWFzazggX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9jdnRtYXNrMncxMjggKF9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tb3ZtX2VwaTE2IChfX21tYXNrMTYgX19BKQp7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl9jdnRtYXNrMncyNTYgKF9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2Jyb2FkY2FzdGJfZXBpOCAoX19tMTI4aSBfX08sIF9fbW1hc2sxNiBfX00sIF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfMTI4KF9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpIF9tbV9icm9hZGNhc3RiX2VwaTgoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpIF9fTyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9icm9hZGNhc3RiX2VwaTggKF9fbW1hc2sxNiBfX00sIF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfMTI4KF9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpIF9tbV9icm9hZGNhc3RiX2VwaTgoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpIF9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19icm9hZGNhc3RiX2VwaTggKF9fbTI1NmkgX19PLCBfX21tYXNrMzIgX19NLCBfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzI1NihfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMnFpKSBfbW0yNTZfYnJvYWRjYXN0Yl9lcGk4KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMnFpKSBfX08pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfYnJvYWRjYXN0Yl9lcGk4IChfX21tYXNrMzIgX19NLCBfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzI1NihfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMnFpKSBfbW0yNTZfYnJvYWRjYXN0Yl9lcGk4KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMnFpKSBfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfYnJvYWRjYXN0d19lcGkxNiAoX19tMTI4aSBfX08sIF9fbW1hc2s4IF9fTSwgX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0d18xMjgoX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKSBfbW1fYnJvYWRjYXN0d19lcGkxNihfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKSBfX08pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfYnJvYWRjYXN0d19lcGkxNiAoX19tbWFzazggX19NLCBfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzEyOChfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpIF9tbV9icm9hZGNhc3R3X2VwaTE2KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpIF9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19icm9hZGNhc3R3X2VwaTE2IChfX20yNTZpIF9fTywgX19tbWFzazE2IF9fTSwgX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0d18yNTYoX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSkgX21tMjU2X2Jyb2FkY2FzdHdfZXBpMTYoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpIF9fTyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9icm9hZGNhc3R3X2VwaTE2IChfX21tYXNrMTYgX19NLCBfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzI1NihfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKSBfbW0yNTZfYnJvYWRjYXN0d19lcGkxNihfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSkgX21tMjU2X3NldHplcm9fc2kyNTYoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX3NldDFfZXBpMTYgKF9fbTI1NmkgX19PLCBfX21tYXNrMTYgX19NLCBzaG9ydCBfX0EpCnsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMjU2IChfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpIF9tbTI1Nl9zZXQxX2VwaTE2KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpIF9fTyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9zZXQxX2VwaTE2IChfX21tYXNrMTYgX19NLCBzaG9ydCBfX0EpCnsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMjU2KF9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKV9tbTI1Nl9zZXQxX2VwaTE2KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSkgX21tMjU2X3NldHplcm9fc2kyNTYoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3NldDFfZXBpMTYgKF9fbTEyOGkgX19PLCBfX21tYXNrOCBfX00sIHNob3J0IF9fQSkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfc2VsZWN0d18xMjgoX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSkgX21tX3NldDFfZXBpMTYoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpIF9fTyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9zZXQxX2VwaTE2IChfX21tYXNrOCBfX00sIHNob3J0IF9fQSkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfc2VsZWN0d18xMjgoX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSkgX21tX3NldDFfZXBpMTYoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpIF9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fcGVybXV0ZXh2YXJfZXBpMTYgKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wZXJtdmFyaGkxMjgoKF9fdjhoaSkgX19CLCAoX192OGhpKSBfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfcGVybXV0ZXh2YXJfZXBpMTYgKF9fbW1hc2s4IF9fTSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMTI4KChfX21tYXNrOClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9tbV9wZXJtdXRleHZhcl9lcGkxNihfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKSBfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfcGVybXV0ZXh2YXJfZXBpMTYgKF9fbTEyOGkgX19XLCBfX21tYXNrOCBfX00sIF9fbTEyOGkgX19BLAogICAgICAgICAgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0d18xMjgoKF9fbW1hc2s4KV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX3Blcm11dGV4dmFyX2VwaTE2KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X3Blcm11dGV4dmFyX2VwaTE2IChfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfcGVybXZhcmhpMjU2KChfX3YxNmhpKSBfX0IsIChfX3YxNmhpKSBfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfcGVybXV0ZXh2YXJfZXBpMTYgKF9fbW1hc2sxNiBfX00sIF9fbTI1NmkgX19BLAogICAgICAgIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMjU2KChfX21tYXNrMTYpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfcGVybXV0ZXh2YXJfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfcGVybXV0ZXh2YXJfZXBpMTYgKF9fbTI1NmkgX19XLCBfX21tYXNrMTYgX19NLCBfX20yNTZpIF9fQSwKICAgICAgICAgICAgIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMjU2KChfX21tYXNrMTYpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfcGVybXV0ZXh2YXJfZXBpMTYoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfX1cpOwp9CgojZGVmaW5lIF9tbV9tYXNrX2FsaWducl9lcGk4KFcsIFUsIEEsIEIsIE4pIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl8xMjgoKF9fbW1hc2sxNikoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpX21tX2FsaWducl9lcGk4KChBKSwgKEIpLCAoaW50KShOKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpKF9fbTEyOGkpKFcpKSkKCiNkZWZpbmUgX21tX21hc2t6X2FsaWducl9lcGk4KFUsIEEsIEIsIE4pIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl8xMjgoKF9fbW1hc2sxNikoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpX21tX2FsaWducl9lcGk4KChBKSwgKEIpLCAoaW50KShOKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpX21tX3NldHplcm9fc2kxMjgoKSkpCgojZGVmaW5lIF9tbTI1Nl9tYXNrX2FsaWducl9lcGk4KFcsIFUsIEEsIEIsIE4pIFwKICAoKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl8yNTYoKF9fbW1hc2szMikoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMycWkpX21tMjU2X2FsaWducl9lcGk4KChBKSwgKEIpLCAoaW50KShOKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMycWkpKF9fbTI1NmkpKFcpKSkKCiNkZWZpbmUgX21tMjU2X21hc2t6X2FsaWducl9lcGk4KFUsIEEsIEIsIE4pIFwKICAoKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0Yl8yNTYoKF9fbW1hc2szMikoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMycWkpX21tMjU2X2FsaWducl9lcGk4KChBKSwgKEIpLCAoaW50KShOKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMycWkpX21tMjU2X3NldHplcm9fc2kyNTYoKSkpCgojZGVmaW5lIF9tbV9kYnNhZF9lcHU4KEEsIEIsIGltbSkgXAogICgoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9kYnBzYWRidzEyOCgoX192MTZxaSkoX19tMTI4aSkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpKF9fbTEyOGkpKEIpLCAoaW50KShpbW0pKSkKCiNkZWZpbmUgX21tX21hc2tfZGJzYWRfZXB1OChXLCBVLCBBLCBCLCBpbW0pIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0d18xMjgoKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX2Ric2FkX2VwdTgoKEEpLCAoQiksIChpbW0pKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpKF9fbTEyOGkpKFcpKSkKCiNkZWZpbmUgX21tX21hc2t6X2Ric2FkX2VwdTgoVSwgQSwgQiwgaW1tKSBcCiAgKChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMTI4KChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9tbV9kYnNhZF9lcHU4KChBKSwgKEIpLCAoaW1tKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpKQoKI2RlZmluZSBfbW0yNTZfZGJzYWRfZXB1OChBLCBCLCBpbW0pIFwKICAoKF9fbTI1NmkpX19idWlsdGluX2lhMzJfZGJwc2FkYncyNTYoKF9fdjMycWkpKF9fbTI1NmkpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMnFpKShfX20yNTZpKShCKSwgKGludCkoaW1tKSkpCgojZGVmaW5lIF9tbTI1Nl9tYXNrX2Ric2FkX2VwdTgoVywgVSwgQSwgQiwgaW1tKSBcCiAgKChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMjU2KChfX21tYXNrMTYpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfZGJzYWRfZXB1OCgoQSksIChCKSwgKGltbSkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSkoX19tMjU2aSkoVykpKQoKI2RlZmluZSBfbW0yNTZfbWFza3pfZGJzYWRfZXB1OChVLCBBLCBCLCBpbW0pIFwKICAoKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0d18yNTYoKF9fbW1hc2sxNikoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKV9tbTI1Nl9kYnNhZF9lcHU4KChBKSwgKEIpLCAoaW1tKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpKQoKI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUzEyOAojdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2CgojZW5kaWYgLyogX19BVlg1MTJWTEJXSU5UUklOX0ggKi8KAGx6Y250aW50cmluLmgALy89PT0tLS0tLSBvcGVuY2wtYy1iYXNlLmggLSBPcGVuQ0wgQyBsYW5ndWFnZSBiYXNlIGRlZmluaXRpb25zIC0tLS0tLS0tLS0tPT09Ly8KLy8KLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KLy8KLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KCiNpZm5kZWYgX09QRU5DTF9CQVNFX0hfCiNkZWZpbmUgX09QRU5DTF9CQVNFX0hfCgovLyBEZWZpbmUgZXh0ZW5zaW9uIG1hY3JvcwoKI2lmIChkZWZpbmVkKF9fT1BFTkNMX0NQUF9WRVJTSU9OX18pIHx8IF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IDIwMCkKLy8gRm9yIFNQSVIgYW5kIFNQSVItViBhbGwgZXh0ZW5zaW9ucyBhcmUgc3VwcG9ydGVkLgojaWYgZGVmaW5lZChfX1NQSVJfXykgfHwgZGVmaW5lZChfX1NQSVJWX18pCiNkZWZpbmUgY2xfa2hyX3N1Ymdyb3VwX2V4dGVuZGVkX3R5cGVzIDEKI2RlZmluZSBjbF9raHJfc3ViZ3JvdXBfbm9uX3VuaWZvcm1fdm90ZSAxCiNkZWZpbmUgY2xfa2hyX3N1Ymdyb3VwX2JhbGxvdCAxCiNkZWZpbmUgY2xfa2hyX3N1Ymdyb3VwX25vbl91bmlmb3JtX2FyaXRobWV0aWMgMQojZGVmaW5lIGNsX2tocl9zdWJncm91cF9zaHVmZmxlIDEKI2RlZmluZSBjbF9raHJfc3ViZ3JvdXBfc2h1ZmZsZV9yZWxhdGl2ZSAxCiNkZWZpbmUgY2xfa2hyX3N1Ymdyb3VwX2NsdXN0ZXJlZF9yZWR1Y2UgMQojZGVmaW5lIGNsX2tocl9leHRlbmRlZF9iaXRfb3BzIDEKI2RlZmluZSBjbF9raHJfaW50ZWdlcl9kb3RfcHJvZHVjdCAxCiNkZWZpbmUgX19vcGVuY2xfY19pbnRlZ2VyX2RvdF9wcm9kdWN0X2lucHV0XzR4OGJpdCAxCiNkZWZpbmUgX19vcGVuY2xfY19pbnRlZ2VyX2RvdF9wcm9kdWN0X2lucHV0XzR4OGJpdF9wYWNrZWQgMQojZGVmaW5lIGNsX2V4dF9mbG9hdF9hdG9taWNzIDEKI2lmZGVmIGNsX2tocl9mcDE2CiNkZWZpbmUgX19vcGVuY2xfY19leHRfZnAxNl9nbG9iYWxfYXRvbWljX2xvYWRfc3RvcmUgMQojZGVmaW5lIF9fb3BlbmNsX2NfZXh0X2ZwMTZfbG9jYWxfYXRvbWljX2xvYWRfc3RvcmUgMQojZGVmaW5lIF9fb3BlbmNsX2NfZXh0X2ZwMTZfZ2xvYmFsX2F0b21pY19hZGQgMQojZGVmaW5lIF9fb3BlbmNsX2NfZXh0X2ZwMTZfbG9jYWxfYXRvbWljX2FkZCAxCiNkZWZpbmUgX19vcGVuY2xfY19leHRfZnAxNl9nbG9iYWxfYXRvbWljX21pbl9tYXggMQojZGVmaW5lIF9fb3BlbmNsX2NfZXh0X2ZwMTZfbG9jYWxfYXRvbWljX21pbl9tYXggMQojZW5kaWYKI2lmZGVmIGNsX2tocl9mcDY0CiNkZWZpbmUgX19vcGVuY2xfY19leHRfZnA2NF9nbG9iYWxfYXRvbWljX2FkZCAxCiNkZWZpbmUgX19vcGVuY2xfY19leHRfZnA2NF9sb2NhbF9hdG9taWNfYWRkIDEKI2RlZmluZSBfX29wZW5jbF9jX2V4dF9mcDY0X2dsb2JhbF9hdG9taWNfbWluX21heCAxCiNkZWZpbmUgX19vcGVuY2xfY19leHRfZnA2NF9sb2NhbF9hdG9taWNfbWluX21heCAxCiNlbmRpZgojZGVmaW5lIF9fb3BlbmNsX2NfZXh0X2ZwMzJfZ2xvYmFsX2F0b21pY19hZGQgMQojZGVmaW5lIF9fb3BlbmNsX2NfZXh0X2ZwMzJfbG9jYWxfYXRvbWljX2FkZCAxCiNkZWZpbmUgX19vcGVuY2xfY19leHRfZnAzMl9nbG9iYWxfYXRvbWljX21pbl9tYXggMQojZGVmaW5lIF9fb3BlbmNsX2NfZXh0X2ZwMzJfbG9jYWxfYXRvbWljX21pbl9tYXggMQoKI2VuZGlmIC8vIGRlZmluZWQoX19TUElSX18pIHx8IGRlZmluZWQoX19TUElSVl9fKQojZW5kaWYgLy8gKGRlZmluZWQoX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXykgfHwgX19PUEVOQ0xfQ19WRVJTSU9OX18gPj0gMjAwKQoKLy8gRGVmaW5lIGZlYXR1cmUgbWFjcm9zIGZvciBPcGVuQ0wgQyAyLjAKI2lmIChfX09QRU5DTF9DUFBfVkVSU0lPTl9fID09IDEwMCB8fCBfX09QRU5DTF9DX1ZFUlNJT05fXyA9PSAyMDApCiNkZWZpbmUgX19vcGVuY2xfY19waXBlcyAxCiNkZWZpbmUgX19vcGVuY2xfY19nZW5lcmljX2FkZHJlc3Nfc3BhY2UgMQojZGVmaW5lIF9fb3BlbmNsX2Nfd29ya19ncm91cF9jb2xsZWN0aXZlX2Z1bmN0aW9ucyAxCiNkZWZpbmUgX19vcGVuY2xfY19hdG9taWNfb3JkZXJfYWNxX3JlbCAxCiNkZWZpbmUgX19vcGVuY2xfY19hdG9taWNfb3JkZXJfc2VxX2NzdCAxCiNkZWZpbmUgX19vcGVuY2xfY19hdG9taWNfc2NvcGVfZGV2aWNlIDEKI2RlZmluZSBfX29wZW5jbF9jX2F0b21pY19zY29wZV9hbGxfZGV2aWNlcyAxCiNkZWZpbmUgX19vcGVuY2xfY19kZXZpY2VfZW5xdWV1ZSAxCiNkZWZpbmUgX19vcGVuY2xfY19yZWFkX3dyaXRlX2ltYWdlcyAxCiNkZWZpbmUgX19vcGVuY2xfY19wcm9ncmFtX3Njb3BlX2dsb2JhbF92YXJpYWJsZXMgMQojZGVmaW5lIF9fb3BlbmNsX2NfaW1hZ2VzIDEKI2VuZGlmCgovLyBEZWZpbmUgaGVhZGVyLW9ubHkgZmVhdHVyZSBtYWNyb3MgZm9yIE9wZW5DTCBDIDMuMC4KI2lmIChfX09QRU5DTF9DUFBfVkVSU0lPTl9fID09IDIwMjEwMCB8fCBfX09QRU5DTF9DX1ZFUlNJT05fXyA9PSAzMDApCi8vIEZvciB0aGUgU1BJUiBhbmQgU1BJUi1WIHRhcmdldCBhbGwgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZC4KI2lmIGRlZmluZWQoX19TUElSX18pIHx8IGRlZmluZWQoX19TUElSVl9fKQojZGVmaW5lIF9fb3BlbmNsX2NfYXRvbWljX3Njb3BlX2FsbF9kZXZpY2VzIDEKI2VuZGlmIC8vIGRlZmluZWQoX19TUElSX18pCiNlbmRpZiAvLyAoX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXyA9PSAyMDIxMDAgfHwgX19PUEVOQ0xfQ19WRVJTSU9OX18gPT0gMzAwKQoKLy8gYnVpbHQtaW4gc2NhbGFyIGRhdGEgdHlwZXM6CgovKioKICogQW4gdW5zaWduZWQgOC1iaXQgaW50ZWdlci4KICovCnR5cGVkZWYgdW5zaWduZWQgY2hhciB1Y2hhcjsKCi8qKgogKiBBbiB1bnNpZ25lZCAxNi1iaXQgaW50ZWdlci4KICovCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdXNob3J0OwoKLyoqCiAqIEFuIHVuc2lnbmVkIDMyLWJpdCBpbnRlZ2VyLgogKi8KdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDsKCi8qKgogKiBBbiB1bnNpZ25lZCA2NC1iaXQgaW50ZWdlci4KICovCnR5cGVkZWYgdW5zaWduZWQgbG9uZyB1bG9uZzsKCi8qKgogKiBUaGUgdW5zaWduZWQgaW50ZWdlciB0eXBlIG9mIHRoZSByZXN1bHQgb2YgdGhlIHNpemVvZiBvcGVyYXRvci4gVGhpcwogKiBpcyBhIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyIGlmIENMX0RFVklDRV9BRERSRVNTX0JJVFMKICogZGVmaW5lZCBpbiB0YWJsZSA0LjMgaXMgMzItYml0cyBhbmQgaXMgYSA2NC1iaXQgdW5zaWduZWQgaW50ZWdlciBpZgogKiBDTF9ERVZJQ0VfQUREUkVTU19CSVRTIGlzIDY0LWJpdHMuCiAqLwp0eXBlZGVmIF9fU0laRV9UWVBFX18gc2l6ZV90OwoKLyoqCiAqIEEgc2lnbmVkIGludGVnZXIgdHlwZSB0aGF0IGlzIHRoZSByZXN1bHQgb2Ygc3VidHJhY3RpbmcgdHdvIHBvaW50ZXJzLgogKiBUaGlzIGlzIGEgMzItYml0IHNpZ25lZCBpbnRlZ2VyIGlmIENMX0RFVklDRV9BRERSRVNTX0JJVFMKICogZGVmaW5lZCBpbiB0YWJsZSA0LjMgaXMgMzItYml0cyBhbmQgaXMgYSA2NC1iaXQgc2lnbmVkIGludGVnZXIgaWYKICogQ0xfREVWSUNFX0FERFJFU1NfQklUUyBpcyA2NC1iaXRzLgogKi8KdHlwZWRlZiBfX1BUUkRJRkZfVFlQRV9fIHB0cmRpZmZfdDsKCi8qKgogKiBBIHNpZ25lZCBpbnRlZ2VyIHR5cGUgd2l0aCB0aGUgcHJvcGVydHkgdGhhdCBhbnkgdmFsaWQgcG9pbnRlciB0bwogKiB2b2lkIGNhbiBiZSBjb252ZXJ0ZWQgdG8gdGhpcyB0eXBlLCB0aGVuIGNvbnZlcnRlZCBiYWNrIHRvIHBvaW50ZXIKICogdG8gdm9pZCwgYW5kIHRoZSByZXN1bHQgd2lsbCBjb21wYXJlIGVxdWFsIHRvIHRoZSBvcmlnaW5hbCBwb2ludGVyLgogKi8KdHlwZWRlZiBfX0lOVFBUUl9UWVBFX18gaW50cHRyX3Q7CgovKioKICogQW4gdW5zaWduZWQgaW50ZWdlciB0eXBlIHdpdGggdGhlIHByb3BlcnR5IHRoYXQgYW55IHZhbGlkIHBvaW50ZXIgdG8KICogdm9pZCBjYW4gYmUgY29udmVydGVkIHRvIHRoaXMgdHlwZSwgdGhlbiBjb252ZXJ0ZWQgYmFjayB0byBwb2ludGVyCiAqIHRvIHZvaWQsIGFuZCB0aGUgcmVzdWx0IHdpbGwgY29tcGFyZSBlcXVhbCB0byB0aGUgb3JpZ2luYWwgcG9pbnRlci4KICovCnR5cGVkZWYgX19VSU5UUFRSX1RZUEVfXyB1aW50cHRyX3Q7CgovLyBidWlsdC1pbiB2ZWN0b3IgZGF0YSB0eXBlczoKdHlwZWRlZiBjaGFyIGNoYXIyIF9fYXR0cmlidXRlX18oKGV4dF92ZWN0b3JfdHlwZSgyKSkpOwp0eXBlZGVmIGNoYXIgY2hhcjMgX19hdHRyaWJ1dGVfXygoZXh0X3ZlY3Rvcl90eXBlKDMpKSk7CnR5cGVkZWYgY2hhciBjaGFyNCBfX2F0dHJpYnV0ZV9fKChleHRfdmVjdG9yX3R5cGUoNCkpKTsKdHlwZWRlZiBjaGFyIGNoYXI4IF9fYXR0cmlidXRlX18oKGV4dF92ZWN0b3JfdHlwZSg4KSkpOwp0eXBlZGVmIGNoYXIgY2hhcjE2IF9fYXR0cmlidXRlX18oKGV4dF92ZWN0b3JfdHlwZSgxNikpKTsKdHlwZWRlZiB1Y2hhciB1Y2hhcjIgX19hdHRyaWJ1dGVfXygoZXh0X3ZlY3Rvcl90eXBlKDIpKSk7CnR5cGVkZWYgdWNoYXIgdWNoYXIzIF9fYXR0cmlidXRlX18oKGV4dF92ZWN0b3JfdHlwZSgzKSkpOwp0eXBlZGVmIHVjaGFyIHVjaGFyNCBfX2F0dHJpYnV0ZV9fKChleHRfdmVjdG9yX3R5cGUoNCkpKTsKdHlwZWRlZiB1Y2hhciB1Y2hhcjggX19hdHRyaWJ1dGVfXygoZXh0X3ZlY3Rvcl90eXBlKDgpKSk7CnR5cGVkZWYgdWNoYXIgdWNoYXIxNiBfX2F0dHJpYnV0ZV9fKChleHRfdmVjdG9yX3R5cGUoMTYpKSk7CnR5cGVkZWYgc2hvcnQgc2hvcnQyIF9fYXR0cmlidXRlX18oKGV4dF92ZWN0b3JfdHlwZSgyKSkpOwp0eXBlZGVmIHNob3J0IHNob3J0MyBfX2F0dHJpYnV0ZV9fKChleHRfdmVjdG9yX3R5cGUoMykpKTsKdHlwZWRlZiBzaG9ydCBzaG9ydDQgX19hdHRyaWJ1dGVfXygoZXh0X3ZlY3Rvcl90eXBlKDQpKSk7CnR5cGVkZWYgc2hvcnQgc2hvcnQ4IF9fYXR0cmlidXRlX18oKGV4dF92ZWN0b3JfdHlwZSg4KSkpOwp0eXBlZGVmIHNob3J0IHNob3J0MTYgX19hdHRyaWJ1dGVfXygoZXh0X3ZlY3Rvcl90eXBlKDE2KSkpOwp0eXBlZGVmIHVzaG9ydCB1c2hvcnQyIF9fYXR0cmlidXRlX18oKGV4dF92ZWN0b3JfdHlwZSgyKSkpOwp0eXBlZGVmIHVzaG9ydCB1c2hvcnQzIF9fYXR0cmlidXRlX18oKGV4dF92ZWN0b3JfdHlwZSgzKSkpOwp0eXBlZGVmIHVzaG9ydCB1c2hvcnQ0IF9fYXR0cmlidXRlX18oKGV4dF92ZWN0b3JfdHlwZSg0KSkpOwp0eXBlZGVmIHVzaG9ydCB1c2hvcnQ4IF9fYXR0cmlidXRlX18oKGV4dF92ZWN0b3JfdHlwZSg4KSkpOwp0eXBlZGVmIHVzaG9ydCB1c2hvcnQxNiBfX2F0dHJpYnV0ZV9fKChleHRfdmVjdG9yX3R5cGUoMTYpKSk7CnR5cGVkZWYgaW50IGludDIgX19hdHRyaWJ1dGVfXygoZXh0X3ZlY3Rvcl90eXBlKDIpKSk7CnR5cGVkZWYgaW50IGludDMgX19hdHRyaWJ1dGVfXygoZXh0X3ZlY3Rvcl90eXBlKDMpKSk7CnR5cGVkZWYgaW50IGludDQgX19hdHRyaWJ1dGVfXygoZXh0X3ZlY3Rvcl90eXBlKDQpKSk7CnR5cGVkZWYgaW50IGludDggX19hdHRyaWJ1dGVfXygoZXh0X3ZlY3Rvcl90eXBlKDgpKSk7CnR5cGVkZWYgaW50IGludDE2IF9fYXR0cmlidXRlX18oKGV4dF92ZWN0b3JfdHlwZSgxNikpKTsKdHlwZWRlZiB1aW50IHVpbnQyIF9fYXR0cmlidXRlX18oKGV4dF92ZWN0b3JfdHlwZSgyKSkpOwp0eXBlZGVmIHVpbnQgdWludDMgX19hdHRyaWJ1dGVfXygoZXh0X3ZlY3Rvcl90eXBlKDMpKSk7CnR5cGVkZWYgdWludCB1aW50NCBfX2F0dHJpYnV0ZV9fKChleHRfdmVjdG9yX3R5cGUoNCkpKTsKdHlwZWRlZiB1aW50IHVpbnQ4IF9fYXR0cmlidXRlX18oKGV4dF92ZWN0b3JfdHlwZSg4KSkpOwp0eXBlZGVmIHVpbnQgdWludDE2IF9fYXR0cmlidXRlX18oKGV4dF92ZWN0b3JfdHlwZSgxNikpKTsKdHlwZWRlZiBsb25nIGxvbmcyIF9fYXR0cmlidXRlX18oKGV4dF92ZWN0b3JfdHlwZSgyKSkpOwp0eXBlZGVmIGxvbmcgbG9uZzMgX19hdHRyaWJ1dGVfXygoZXh0X3ZlY3Rvcl90eXBlKDMpKSk7CnR5cGVkZWYgbG9uZyBsb25nNCBfX2F0dHJpYnV0ZV9fKChleHRfdmVjdG9yX3R5cGUoNCkpKTsKdHlwZWRlZiBsb25nIGxvbmc4IF9fYXR0cmlidXRlX18oKGV4dF92ZWN0b3JfdHlwZSg4KSkpOwp0eXBlZGVmIGxvbmcgbG9uZzE2IF9fYXR0cmlidXRlX18oKGV4dF92ZWN0b3JfdHlwZSgxNikpKTsKdHlwZWRlZiB1bG9uZyB1bG9uZzIgX19hdHRyaWJ1dGVfXygoZXh0X3ZlY3Rvcl90eXBlKDIpKSk7CnR5cGVkZWYgdWxvbmcgdWxvbmczIF9fYXR0cmlidXRlX18oKGV4dF92ZWN0b3JfdHlwZSgzKSkpOwp0eXBlZGVmIHVsb25nIHVsb25nNCBfX2F0dHJpYnV0ZV9fKChleHRfdmVjdG9yX3R5cGUoNCkpKTsKdHlwZWRlZiB1bG9uZyB1bG9uZzggX19hdHRyaWJ1dGVfXygoZXh0X3ZlY3Rvcl90eXBlKDgpKSk7CnR5cGVkZWYgdWxvbmcgdWxvbmcxNiBfX2F0dHJpYnV0ZV9fKChleHRfdmVjdG9yX3R5cGUoMTYpKSk7CnR5cGVkZWYgZmxvYXQgZmxvYXQyIF9fYXR0cmlidXRlX18oKGV4dF92ZWN0b3JfdHlwZSgyKSkpOwp0eXBlZGVmIGZsb2F0IGZsb2F0MyBfX2F0dHJpYnV0ZV9fKChleHRfdmVjdG9yX3R5cGUoMykpKTsKdHlwZWRlZiBmbG9hdCBmbG9hdDQgX19hdHRyaWJ1dGVfXygoZXh0X3ZlY3Rvcl90eXBlKDQpKSk7CnR5cGVkZWYgZmxvYXQgZmxvYXQ4IF9fYXR0cmlidXRlX18oKGV4dF92ZWN0b3JfdHlwZSg4KSkpOwp0eXBlZGVmIGZsb2F0IGZsb2F0MTYgX19hdHRyaWJ1dGVfXygoZXh0X3ZlY3Rvcl90eXBlKDE2KSkpOwojaWZkZWYgY2xfa2hyX2ZwMTYKI3ByYWdtYSBPUEVOQ0wgRVhURU5TSU9OIGNsX2tocl9mcDE2IDogZW5hYmxlCnR5cGVkZWYgaGFsZiBoYWxmMiBfX2F0dHJpYnV0ZV9fKChleHRfdmVjdG9yX3R5cGUoMikpKTsKdHlwZWRlZiBoYWxmIGhhbGYzIF9fYXR0cmlidXRlX18oKGV4dF92ZWN0b3JfdHlwZSgzKSkpOwp0eXBlZGVmIGhhbGYgaGFsZjQgX19hdHRyaWJ1dGVfXygoZXh0X3ZlY3Rvcl90eXBlKDQpKSk7CnR5cGVkZWYgaGFsZiBoYWxmOCBfX2F0dHJpYnV0ZV9fKChleHRfdmVjdG9yX3R5cGUoOCkpKTsKdHlwZWRlZiBoYWxmIGhhbGYxNiBfX2F0dHJpYnV0ZV9fKChleHRfdmVjdG9yX3R5cGUoMTYpKSk7CiNlbmRpZgojaWZkZWYgY2xfa2hyX2ZwNjQKI2lmIF9fT1BFTkNMX0NfVkVSU0lPTl9fIDwgQ0xfVkVSU0lPTl8xXzIKI3ByYWdtYSBPUEVOQ0wgRVhURU5TSU9OIGNsX2tocl9mcDY0IDogZW5hYmxlCiNlbmRpZgp0eXBlZGVmIGRvdWJsZSBkb3VibGUyIF9fYXR0cmlidXRlX18oKGV4dF92ZWN0b3JfdHlwZSgyKSkpOwp0eXBlZGVmIGRvdWJsZSBkb3VibGUzIF9fYXR0cmlidXRlX18oKGV4dF92ZWN0b3JfdHlwZSgzKSkpOwp0eXBlZGVmIGRvdWJsZSBkb3VibGU0IF9fYXR0cmlidXRlX18oKGV4dF92ZWN0b3JfdHlwZSg0KSkpOwp0eXBlZGVmIGRvdWJsZSBkb3VibGU4IF9fYXR0cmlidXRlX18oKGV4dF92ZWN0b3JfdHlwZSg4KSkpOwp0eXBlZGVmIGRvdWJsZSBkb3VibGUxNiBfX2F0dHJpYnV0ZV9fKChleHRfdmVjdG9yX3R5cGUoMTYpKSk7CiNlbmRpZgoKI2lmIGRlZmluZWQoX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXykKI2RlZmluZSBOVUxMIG51bGxwdHIKI2VsaWYgZGVmaW5lZChfX09QRU5DTF9DX1ZFUlNJT05fXykKI2RlZmluZSBOVUxMICgodm9pZCopMCkKI2VuZGlmCgovKioKICogVmFsdWUgb2YgbWF4aW11bSBub24taW5maW5pdGUgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludAogKiBudW1iZXIuCiAqLwojZGVmaW5lIE1BWEZMT0FUIDB4MS5mZmZmZmVwMTI3ZgoKLyoqCiAqIEEgcG9zaXRpdmUgZmxvYXQgY29uc3RhbnQgZXhwcmVzc2lvbi4gSFVHRV9WQUxGIGV2YWx1YXRlcwogKiB0byAraW5maW5pdHkuIFVzZWQgYXMgYW4gZXJyb3IgdmFsdWUgcmV0dXJuZWQgYnkgdGhlIGJ1aWx0LWluCiAqIG1hdGggZnVuY3Rpb25zLgogKi8KI2RlZmluZSBIVUdFX1ZBTEYgKF9fYnVpbHRpbl9odWdlX3ZhbGYoKSkKCi8qKgogKiBBIHBvc2l0aXZlIGRvdWJsZSBjb25zdGFudCBleHByZXNzaW9uLiBIVUdFX1ZBTCBldmFsdWF0ZXMKICogdG8gK2luZmluaXR5LiBVc2VkIGFzIGFuIGVycm9yIHZhbHVlIHJldHVybmVkIGJ5IHRoZSBidWlsdC1pbgogKiBtYXRoIGZ1bmN0aW9ucy4KICovCiNkZWZpbmUgSFVHRV9WQUwgKF9fYnVpbHRpbl9odWdlX3ZhbCgpKQoKLyoqCiAqIEEgY29uc3RhbnQgZXhwcmVzc2lvbiBvZiB0eXBlIGZsb2F0IHJlcHJlc2VudGluZyBwb3NpdGl2ZSBvcgogKiB1bnNpZ25lZCBpbmZpbml0eS4KICovCiNkZWZpbmUgSU5GSU5JVFkgKF9fYnVpbHRpbl9pbmZmKCkpCgovKioKICogQSBjb25zdGFudCBleHByZXNzaW9uIG9mIHR5cGUgZmxvYXQgcmVwcmVzZW50aW5nIGEgcXVpZXQgTmFOLgogKi8KI2RlZmluZSBOQU4gYXNfZmxvYXQoSU5UX01BWCkKCiNkZWZpbmUgRlBfSUxPR0IwICAgIElOVF9NSU4KI2RlZmluZSBGUF9JTE9HQk5BTiAgSU5UX01BWAoKI2RlZmluZSBGTFRfRElHIDYKI2RlZmluZSBGTFRfTUFOVF9ESUcgMjQKI2RlZmluZSBGTFRfTUFYXzEwX0VYUCArMzgKI2RlZmluZSBGTFRfTUFYX0VYUCArMTI4CiNkZWZpbmUgRkxUX01JTl8xMF9FWFAgLTM3CiNkZWZpbmUgRkxUX01JTl9FWFAgLTEyNQojZGVmaW5lIEZMVF9SQURJWCAyCiNkZWZpbmUgRkxUX01BWCAweDEuZmZmZmZlcDEyN2YKI2RlZmluZSBGTFRfTUlOIDB4MS4wcC0xMjZmCiNkZWZpbmUgRkxUX0VQU0lMT04gMHgxLjBwLTIzZgoKI2RlZmluZSBNX0VfRiAgICAgICAgIDIuNzE4MjgxODI4NDU5MDQ1MjM1MzYwMjg3NDcxMzUyNjYyNTBmCiNkZWZpbmUgTV9MT0cyRV9GICAgICAxLjQ0MjY5NTA0MDg4ODk2MzQwNzM1OTkyNDY4MTAwMTg5MjE0ZgojZGVmaW5lIE1fTE9HMTBFX0YgICAgMC40MzQyOTQ0ODE5MDMyNTE4Mjc2NTExMjg5MTg5MTY2MDUwODJmCiNkZWZpbmUgTV9MTjJfRiAgICAgICAwLjY5MzE0NzE4MDU1OTk0NTMwOTQxNzIzMjEyMTQ1ODE3NjU2OGYKI2RlZmluZSBNX0xOMTBfRiAgICAgIDIuMzAyNTg1MDkyOTk0MDQ1Njg0MDE3OTkxNDU0Njg0MzY0MjFmCiNkZWZpbmUgTV9QSV9GICAgICAgICAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2MjY0MzM4MzI3OTUwMjg4ZgojZGVmaW5lIE1fUElfMl9GICAgICAgMS41NzA3OTYzMjY3OTQ4OTY2MTkyMzEzMjE2OTE2Mzk3NTE0NGYKI2RlZmluZSBNX1BJXzRfRiAgICAgIDAuNzg1Mzk4MTYzMzk3NDQ4MzA5NjE1NjYwODQ1ODE5ODc1NzIxZgojZGVmaW5lIE1fMV9QSV9GICAgICAgMC4zMTgzMDk4ODYxODM3OTA2NzE1Mzc3Njc1MjY3NDUwMjg3MjRmCiNkZWZpbmUgTV8yX1BJX0YgICAgICAwLjYzNjYxOTc3MjM2NzU4MTM0MzA3NTUzNTA1MzQ5MDA1NzQ0OGYKI2RlZmluZSBNXzJfU1FSVFBJX0YgIDEuMTI4Mzc5MTY3MDk1NTEyNTczODk2MTU4OTAzMTIxNTQ1MTdmCiNkZWZpbmUgTV9TUVJUMl9GICAgICAxLjQxNDIxMzU2MjM3MzA5NTA0ODgwMTY4ODcyNDIwOTY5ODA4ZgojZGVmaW5lIE1fU1FSVDFfMl9GICAgMC43MDcxMDY3ODExODY1NDc1MjQ0MDA4NDQzNjIxMDQ4NDkwMzlmCgojZGVmaW5lIERCTF9ESUcgMTUKI2RlZmluZSBEQkxfTUFOVF9ESUcgNTMKI2RlZmluZSBEQkxfTUFYXzEwX0VYUCArMzA4CiNkZWZpbmUgREJMX01BWF9FWFAgKzEwMjQKI2RlZmluZSBEQkxfTUlOXzEwX0VYUCAtMzA3CiNkZWZpbmUgREJMX01JTl9FWFAgLTEwMjEKI2RlZmluZSBEQkxfUkFESVggMgojZGVmaW5lIERCTF9NQVggMHgxLmZmZmZmZmZmZmZmZmZwMTAyMwojZGVmaW5lIERCTF9NSU4gMHgxLjBwLTEwMjIKI2RlZmluZSBEQkxfRVBTSUxPTiAweDEuMHAtNTIKCiNkZWZpbmUgTV9FICAgICAgICAgICAweDEuNWJmMGE4YjE0NTc2OXArMQojZGVmaW5lIE1fTE9HMkUgICAgICAgMHgxLjcxNTQ3NjUyYjgyZmVwKzAKI2RlZmluZSBNX0xPRzEwRSAgICAgIDB4MS5iY2I3YjE1MjZlNTBlcC0yCiNkZWZpbmUgTV9MTjIgICAgICAgICAweDEuNjJlNDJmZWZhMzllZnAtMQojZGVmaW5lIE1fTE4xMCAgICAgICAgMHgxLjI2YmIxYmJiNTU1MTZwKzEKI2RlZmluZSBNX1BJICAgICAgICAgIDB4MS45MjFmYjU0NDQyZDE4cCsxCiNkZWZpbmUgTV9QSV8yICAgICAgICAweDEuOTIxZmI1NDQ0MmQxOHArMAojZGVmaW5lIE1fUElfNCAgICAgICAgMHgxLjkyMWZiNTQ0NDJkMThwLTEKI2RlZmluZSBNXzFfUEkgICAgICAgIDB4MS40NWYzMDZkYzljODgzcC0yCiNkZWZpbmUgTV8yX1BJICAgICAgICAweDEuNDVmMzA2ZGM5Yzg4M3AtMQojZGVmaW5lIE1fMl9TUVJUUEkgICAgMHgxLjIwZGQ3NTA0MjliNmRwKzAKI2RlZmluZSBNX1NRUlQyICAgICAgIDB4MS42YTA5ZTY2N2YzYmNkcCswCiNkZWZpbmUgTV9TUVJUMV8yICAgICAweDEuNmEwOWU2NjdmM2JjZHAtMQoKI2lmZGVmIGNsX2tocl9mcDE2CgojZGVmaW5lIEhBTEZfRElHIDMKI2RlZmluZSBIQUxGX01BTlRfRElHIDExCiNkZWZpbmUgSEFMRl9NQVhfMTBfRVhQICs0CiNkZWZpbmUgSEFMRl9NQVhfRVhQICsxNgojZGVmaW5lIEhBTEZfTUlOXzEwX0VYUCAtNAojZGVmaW5lIEhBTEZfTUlOX0VYUCAtMTMKI2RlZmluZSBIQUxGX1JBRElYIDIKI2RlZmluZSBIQUxGX01BWCAoKDB4MS5mZmNwMTVoKSkKI2RlZmluZSBIQUxGX01JTiAoKDB4MS4wcC0xNGgpKQojZGVmaW5lIEhBTEZfRVBTSUxPTiAoKDB4MS4wcC0xMGgpKQoKI2RlZmluZSBNX0VfSCAgICAgICAgIDIuNzE4MjgxODI4NDU5MDQ1MjM1MzYwMjg3NDcxMzUyNjYyNTBoCiNkZWZpbmUgTV9MT0cyRV9IICAgICAxLjQ0MjY5NTA0MDg4ODk2MzQwNzM1OTkyNDY4MTAwMTg5MjE0aAojZGVmaW5lIE1fTE9HMTBFX0ggICAgMC40MzQyOTQ0ODE5MDMyNTE4Mjc2NTExMjg5MTg5MTY2MDUwODJoCiNkZWZpbmUgTV9MTjJfSCAgICAgICAwLjY5MzE0NzE4MDU1OTk0NTMwOTQxNzIzMjEyMTQ1ODE3NjU2OGgKI2RlZmluZSBNX0xOMTBfSCAgICAgIDIuMzAyNTg1MDkyOTk0MDQ1Njg0MDE3OTkxNDU0Njg0MzY0MjFoCiNkZWZpbmUgTV9QSV9IICAgICAgICAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2MjY0MzM4MzI3OTUwMjg4aAojZGVmaW5lIE1fUElfMl9IICAgICAgMS41NzA3OTYzMjY3OTQ4OTY2MTkyMzEzMjE2OTE2Mzk3NTE0NGgKI2RlZmluZSBNX1BJXzRfSCAgICAgIDAuNzg1Mzk4MTYzMzk3NDQ4MzA5NjE1NjYwODQ1ODE5ODc1NzIxaAojZGVmaW5lIE1fMV9QSV9IICAgICAgMC4zMTgzMDk4ODYxODM3OTA2NzE1Mzc3Njc1MjY3NDUwMjg3MjRoCiNkZWZpbmUgTV8yX1BJX0ggICAgICAwLjYzNjYxOTc3MjM2NzU4MTM0MzA3NTUzNTA1MzQ5MDA1NzQ0OGgKI2RlZmluZSBNXzJfU1FSVFBJX0ggIDEuMTI4Mzc5MTY3MDk1NTEyNTczODk2MTU4OTAzMTIxNTQ1MTdoCiNkZWZpbmUgTV9TUVJUMl9IICAgICAxLjQxNDIxMzU2MjM3MzA5NTA0ODgwMTY4ODcyNDIwOTY5ODA4aAojZGVmaW5lIE1fU1FSVDFfMl9IICAgMC43MDcxMDY3ODExODY1NDc1MjQ0MDA4NDQzNjIxMDQ4NDkwMzloCgojZW5kaWYgLy9jbF9raHJfZnAxNgoKI2RlZmluZSBDSEFSX0JJVCAgOAojZGVmaW5lIFNDSEFSX01BWCAxMjcKI2RlZmluZSBTQ0hBUl9NSU4gKC0xMjgpCiNkZWZpbmUgVUNIQVJfTUFYIDI1NQojZGVmaW5lIENIQVJfTUFYICBTQ0hBUl9NQVgKI2RlZmluZSBDSEFSX01JTiAgU0NIQVJfTUlOCiNkZWZpbmUgVVNIUlRfTUFYIDY1NTM1CiNkZWZpbmUgU0hSVF9NQVggIDMyNzY3CiNkZWZpbmUgU0hSVF9NSU4gICgtMzI3NjgpCiNkZWZpbmUgVUlOVF9NQVggIDB4ZmZmZmZmZmYKI2RlZmluZSBJTlRfTUFYICAgMjE0NzQ4MzY0NwojZGVmaW5lIElOVF9NSU4gICAoLTIxNDc0ODM2NDctMSkKI2RlZmluZSBVTE9OR19NQVggMHhmZmZmZmZmZmZmZmZmZmZmVUwKI2RlZmluZSBMT05HX01BWCAgMHg3ZmZmZmZmZmZmZmZmZmZmTAojZGVmaW5lIExPTkdfTUlOICAoLTB4N2ZmZmZmZmZmZmZmZmZmZkwtMSkKCi8vIE9wZW5DTCB2MS4xIHM2LjExLjgsIHYxLjIgczYuMTIuOCwgdjIuMCBzNi4xMy44IC0gU3luY2hyb25pemF0aW9uIEZ1bmN0aW9ucwoKLy8gRmxhZyB0eXBlIGFuZCB2YWx1ZXMgZm9yIGJhcnJpZXIsIG1lbV9mZW5jZSwgcmVhZF9tZW1fZmVuY2UsIHdyaXRlX21lbV9mZW5jZQp0eXBlZGVmIHVpbnQgY2xfbWVtX2ZlbmNlX2ZsYWdzOwoKLyoqCiAqIFF1ZXVlIGEgbWVtb3J5IGZlbmNlIHRvIGVuc3VyZSBjb3JyZWN0CiAqIG9yZGVyaW5nIG9mIG1lbW9yeSBvcGVyYXRpb25zIHRvIGxvY2FsIG1lbW9yeQogKi8KI2RlZmluZSBDTEtfTE9DQUxfTUVNX0ZFTkNFICAgIDB4MDEKCi8qKgogKiBRdWV1ZSBhIG1lbW9yeSBmZW5jZSB0byBlbnN1cmUgY29ycmVjdAogKiBvcmRlcmluZyBvZiBtZW1vcnkgb3BlcmF0aW9ucyB0byBnbG9iYWwgbWVtb3J5CiAqLwojZGVmaW5lIENMS19HTE9CQUxfTUVNX0ZFTkNFICAgMHgwMgoKI2lmIGRlZmluZWQoX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXykgfHwgKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fMl8wKQoKdHlwZWRlZiBlbnVtIG1lbW9yeV9zY29wZSB7CiAgbWVtb3J5X3Njb3BlX3dvcmtfaXRlbSA9IF9fT1BFTkNMX01FTU9SWV9TQ09QRV9XT1JLX0lURU0sCiAgbWVtb3J5X3Njb3BlX3dvcmtfZ3JvdXAgPSBfX09QRU5DTF9NRU1PUllfU0NPUEVfV09SS19HUk9VUCwKICBtZW1vcnlfc2NvcGVfZGV2aWNlID0gX19PUEVOQ0xfTUVNT1JZX1NDT1BFX0RFVklDRSwKI2lmIGRlZmluZWQoX19vcGVuY2xfY19hdG9taWNfc2NvcGVfYWxsX2RldmljZXMpCiAgbWVtb3J5X3Njb3BlX2FsbF9zdm1fZGV2aWNlcyA9IF9fT1BFTkNMX01FTU9SWV9TQ09QRV9BTExfU1ZNX0RFVklDRVMsCiNpZiAoX19PUEVOQ0xfQ19WRVJTSU9OX18gPj0gQ0xfVkVSU0lPTl8zXzAgfHwgX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXyA+PSAyMDIxMDApCiAgbWVtb3J5X3Njb3BlX2FsbF9kZXZpY2VzID0gbWVtb3J5X3Njb3BlX2FsbF9zdm1fZGV2aWNlcywKI2VuZGlmIC8vIChfX09QRU5DTF9DX1ZFUlNJT05fXyA+PSBDTF9WRVJTSU9OXzNfMCB8fCBfX09QRU5DTF9DUFBfVkVSU0lPTl9fID49IDIwMjEwMCkKI2VuZGlmIC8vIGRlZmluZWQoX19vcGVuY2xfY19hdG9taWNfc2NvcGVfYWxsX2RldmljZXMpCi8qKgogKiBTdWJncm91cHMgaGF2ZSBkaWZmZXJlbnQgcmVxdWlyZW1lbnRzIG9uIGZvcndhcmQgcHJvZ3Jlc3MsIHNvIGp1c3QgdGVzdAogKiBhbGwgdGhlIHJlbGV2YW50IG1hY3Jvcy4KICogQ0wgMy4wIHN1Yi1ncm91cHMgInRoZXkgYXJlIG5vdCBndWFyYW50ZWVkIHRvIG1ha2UgaW5kZXBlbmRlbnQgZm9yd2FyZCBwcm9ncmVzcyIKICogS0hSIHN1Ymdyb3VwcyAiU3ViZ3JvdXBzIHdpdGhpbiBhIHdvcmtncm91cCBhcmUgaW5kZXBlbmRlbnQsIG1ha2UgZm9yd2FyZCBwcm9ncmVzcyB3aXRoIHJlc3BlY3QgdG8gZWFjaCBvdGhlciIKICovCiNpZiBkZWZpbmVkKGNsX2ludGVsX3N1Ymdyb3VwcykgfHwgZGVmaW5lZChjbF9raHJfc3ViZ3JvdXBzKSB8fCBkZWZpbmVkKF9fb3BlbmNsX2Nfc3ViZ3JvdXBzKQogIG1lbW9yeV9zY29wZV9zdWJfZ3JvdXAgPSBfX09QRU5DTF9NRU1PUllfU0NPUEVfU1VCX0dST1VQCiNlbmRpZgp9IG1lbW9yeV9zY29wZTsKCi8qKgogKiBRdWV1ZSBhIG1lbW9yeSBmZW5jZSB0byBlbnN1cmUgY29ycmVjdCBvcmRlcmluZyBvZiBtZW1vcnkKICogb3BlcmF0aW9ucyBiZXR3ZWVuIHdvcmstaXRlbXMgb2YgYSB3b3JrLWdyb3VwIHRvCiAqIGltYWdlIG1lbW9yeS4KICovCiNkZWZpbmUgQ0xLX0lNQUdFX01FTV9GRU5DRSAgMHgwNAoKI2lmbmRlZiBBVE9NSUNfVkFSX0lOSVQKI2RlZmluZSBBVE9NSUNfVkFSX0lOSVQoeCkgKHgpCiNlbmRpZiAvL0FUT01JQ19WQVJfSU5JVAojZGVmaW5lIEFUT01JQ19GTEFHX0lOSVQgMAoKLy8gZW51bSB2YWx1ZXMgYWxpZ25lZCB3aXRoIHdoYXQgY2xhbmcgdXNlcyBpbiBFbWl0QXRvbWljRXhwcigpCnR5cGVkZWYgZW51bSBtZW1vcnlfb3JkZXIKewogIG1lbW9yeV9vcmRlcl9yZWxheGVkID0gX19BVE9NSUNfUkVMQVhFRCwKICBtZW1vcnlfb3JkZXJfYWNxdWlyZSA9IF9fQVRPTUlDX0FDUVVJUkUsCiAgbWVtb3J5X29yZGVyX3JlbGVhc2UgPSBfX0FUT01JQ19SRUxFQVNFLAogIG1lbW9yeV9vcmRlcl9hY3FfcmVsID0gX19BVE9NSUNfQUNRX1JFTCwKI2lmIGRlZmluZWQoX19vcGVuY2xfY19hdG9taWNfb3JkZXJfc2VxX2NzdCkKICBtZW1vcnlfb3JkZXJfc2VxX2NzdCA9IF9fQVRPTUlDX1NFUV9DU1QKI2VuZGlmCn0gbWVtb3J5X29yZGVyOwoKI2VuZGlmIC8vIGRlZmluZWQoX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXykgfHwgKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fMl8wKQoKLy8gT3BlbkNMIHYxLjEgczYuMTEuMywgdjEuMiBzNi4xMi4xNCwgdjIuMCBzNi4xMy4xNCAtIEltYWdlIFJlYWQgYW5kIFdyaXRlIEZ1bmN0aW9ucwoKLy8gVGhlc2UgdmFsdWVzIG5lZWQgdG8gbWF0Y2ggdGhlIHJ1bnRpbWUgZXF1aXZhbGVudAovLwovLyBBZGRyZXNzaW5nIE1vZGUuCi8vCiNkZWZpbmUgQ0xLX0FERFJFU1NfTk9ORSAgICAgICAgICAgICAgICAwCiNkZWZpbmUgQ0xLX0FERFJFU1NfQ0xBTVBfVE9fRURHRSAgICAgICAyCiNkZWZpbmUgQ0xLX0FERFJFU1NfQ0xBTVAgICAgICAgICAgICAgICA0CiNkZWZpbmUgQ0xLX0FERFJFU1NfUkVQRUFUICAgICAgICAgICAgICA2CiNkZWZpbmUgQ0xLX0FERFJFU1NfTUlSUk9SRURfUkVQRUFUICAgICA4CgovLwovLyBDb29yZGluYXRpb24gTm9ybWFsaXphdGlvbgovLwojZGVmaW5lIENMS19OT1JNQUxJWkVEX0NPT1JEU19GQUxTRSAgICAgMAojZGVmaW5lIENMS19OT1JNQUxJWkVEX0NPT1JEU19UUlVFICAgICAgMQoKLy8KLy8gRmlsdGVyaW5nIE1vZGUuCi8vCiNkZWZpbmUgQ0xLX0ZJTFRFUl9ORUFSRVNUICAgICAgICAgICAgICAweDEwCiNkZWZpbmUgQ0xLX0ZJTFRFUl9MSU5FQVIgICAgICAgICAgICAgICAweDIwCgojaWZkZWYgY2xfa2hyX2dsX21zYWFfc2hhcmluZwojcHJhZ21hIE9QRU5DTCBFWFRFTlNJT04gY2xfa2hyX2dsX21zYWFfc2hhcmluZyA6IGVuYWJsZQojZW5kaWYgLy9jbF9raHJfZ2xfbXNhYV9zaGFyaW5nCgovLwovLyBDaGFubmVsIERhdGF0eXBlLgovLwojZGVmaW5lIENMS19TTk9STV9JTlQ4ICAgICAgICAweDEwRDAKI2RlZmluZSBDTEtfU05PUk1fSU5UMTYgICAgICAgMHgxMEQxCiNkZWZpbmUgQ0xLX1VOT1JNX0lOVDggICAgICAgIDB4MTBEMgojZGVmaW5lIENMS19VTk9STV9JTlQxNiAgICAgICAweDEwRDMKI2RlZmluZSBDTEtfVU5PUk1fU0hPUlRfNTY1ICAgMHgxMEQ0CiNkZWZpbmUgQ0xLX1VOT1JNX1NIT1JUXzU1NSAgIDB4MTBENQojZGVmaW5lIENMS19VTk9STV9JTlRfMTAxMDEwICAweDEwRDYKI2RlZmluZSBDTEtfU0lHTkVEX0lOVDggICAgICAgMHgxMEQ3CiNkZWZpbmUgQ0xLX1NJR05FRF9JTlQxNiAgICAgIDB4MTBEOAojZGVmaW5lIENMS19TSUdORURfSU5UMzIgICAgICAweDEwRDkKI2RlZmluZSBDTEtfVU5TSUdORURfSU5UOCAgICAgMHgxMERBCiNkZWZpbmUgQ0xLX1VOU0lHTkVEX0lOVDE2ICAgIDB4MTBEQgojZGVmaW5lIENMS19VTlNJR05FRF9JTlQzMiAgICAweDEwREMKI2RlZmluZSBDTEtfSEFMRl9GTE9BVCAgICAgICAgMHgxMERECiNkZWZpbmUgQ0xLX0ZMT0FUICAgICAgICAgICAgIDB4MTBERQojZGVmaW5lIENMS19VTk9STV9JTlQyNCAgICAgICAweDEwREYKCi8vIENoYW5uZWwgb3JkZXIsIG51bWJlcmluZyBtdXN0IGJlIGFsaWduZWQgd2l0aCBjbF9jaGFubmVsX29yZGVyIGluIGNsLmgKLy8KI2RlZmluZSBDTEtfUiAgICAgICAgIDB4MTBCMAojZGVmaW5lIENMS19BICAgICAgICAgMHgxMEIxCiNkZWZpbmUgQ0xLX1JHICAgICAgICAweDEwQjIKI2RlZmluZSBDTEtfUkEgICAgICAgIDB4MTBCMwojZGVmaW5lIENMS19SR0IgICAgICAgMHgxMEI0CiNkZWZpbmUgQ0xLX1JHQkEgICAgICAweDEwQjUKI2RlZmluZSBDTEtfQkdSQSAgICAgIDB4MTBCNgojZGVmaW5lIENMS19BUkdCICAgICAgMHgxMEI3CiNkZWZpbmUgQ0xLX0lOVEVOU0lUWSAweDEwQjgKI2RlZmluZSBDTEtfTFVNSU5BTkNFIDB4MTBCOQojZGVmaW5lIENMS19SeCAgICAgICAgICAgICAgICAweDEwQkEKI2RlZmluZSBDTEtfUkd4ICAgICAgICAgICAgICAgMHgxMEJCCiNkZWZpbmUgQ0xLX1JHQnggICAgICAgICAgICAgIDB4MTBCQwojZGVmaW5lIENMS19ERVBUSCAgICAgICAgICAgICAweDEwQkQKI2RlZmluZSBDTEtfREVQVEhfU1RFTkNJTCAgICAgMHgxMEJFCiNpZiBfX09QRU5DTF9DX1ZFUlNJT05fXyA+PSBDTF9WRVJTSU9OXzJfMAojZGVmaW5lIENMS19zUkdCICAgICAgICAgICAgICAweDEwQkYKI2RlZmluZSBDTEtfc1JHQnggICAgICAgICAgICAgMHgxMEMwCiNkZWZpbmUgQ0xLX3NSR0JBICAgICAgICAgICAgIDB4MTBDMQojZGVmaW5lIENMS19zQkdSQSAgICAgICAgICAgICAweDEwQzIKI2RlZmluZSBDTEtfQUJHUiAgICAgICAgICAgICAgMHgxMEMzCiNlbmRpZiAvL19fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fMl8wCgovLyBPcGVuQ0wgdjIuMCBzNi4xMy4xNiAtIFBpcGUgRnVuY3Rpb25zCiNpZiBkZWZpbmVkKF9fT1BFTkNMX0NQUF9WRVJTSU9OX18pIHx8IChfX09QRU5DTF9DX1ZFUlNJT05fXyA+PSBDTF9WRVJTSU9OXzJfMCkKI2RlZmluZSBDTEtfTlVMTF9SRVNFUlZFX0lEIChfX2J1aWx0aW5fYXN0eXBlKCgodm9pZCopKF9fU0laRV9NQVhfXykpLCByZXNlcnZlX2lkX3QpKQoKLy8gT3BlbkNMIHYyLjAgczYuMTMuMTcgLSBFbnF1ZXVlIEtlcm5lbHMKI2RlZmluZSBDTF9DT01QTEVURSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MAojZGVmaW5lIENMX1JVTk5JTkcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxCiNkZWZpbmUgQ0xfU1VCTUlUVEVEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIKI2RlZmluZSBDTF9RVUVVRUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MwoKI2RlZmluZSBDTEtfU1VDQ0VTUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAKI2RlZmluZSBDTEtfRU5RVUVVRV9GQUlMVVJFICAgICAgICAgICAgICAgICAgICAgICAgIC0xMDEKI2RlZmluZSBDTEtfSU5WQUxJRF9RVUVVRSAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xMDIKI2RlZmluZSBDTEtfSU5WQUxJRF9ORFJBTkdFICAgICAgICAgICAgICAgICAgICAgICAgIC0xNjAKI2RlZmluZSBDTEtfSU5WQUxJRF9FVkVOVF9XQUlUX0xJU1QgICAgICAgICAgICAgICAgIC01NwojZGVmaW5lIENMS19ERVZJQ0VfUVVFVUVfRlVMTCAgICAgICAgICAgICAgICAgICAgICAgLTE2MQojZGVmaW5lIENMS19JTlZBTElEX0FSR19TSVpFICAgICAgICAgICAgICAgICAgICAgICAgLTUxCiNkZWZpbmUgQ0xLX0VWRU5UX0FMTE9DQVRJT05fRkFJTFVSRSAgICAgICAgICAgICAgICAtMTAwCiNkZWZpbmUgQ0xLX09VVF9PRl9SRVNPVVJDRVMgICAgICAgICAgICAgICAgICAgICAgICAtNQoKI2RlZmluZSBDTEtfTlVMTF9RVUVVRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAKI2RlZmluZSBDTEtfTlVMTF9FVkVOVCAoX19idWlsdGluX2FzdHlwZSgoKF9fU0laRV9NQVhfXykpLCBjbGtfZXZlbnRfdCkpCgovLyBleGVjdXRpb24gbW9kZWwgcmVsYXRlZCBkZWZpbml0aW9ucwojZGVmaW5lIENMS19FTlFVRVVFX0ZMQUdTX05PX1dBSVQgICAgICAgICAgICAgICAgICAgMHgwCiNkZWZpbmUgQ0xLX0VOUVVFVUVfRkxBR1NfV0FJVF9LRVJORUwgICAgICAgICAgICAgICAweDEKI2RlZmluZSBDTEtfRU5RVUVVRV9GTEFHU19XQUlUX1dPUktfR1JPVVAgICAgICAgICAgIDB4MgoKdHlwZWRlZiBpbnQga2VybmVsX2VucXVldWVfZmxhZ3NfdDsKdHlwZWRlZiBpbnQgY2xrX3Byb2ZpbGluZ19pbmZvOwoKLy8gUHJvZmlsaW5nIGluZm8gbmFtZSAoc2VlIGNhcHR1cmVfZXZlbnRfcHJvZmlsaW5nX2luZm8pCiNkZWZpbmUgQ0xLX1BST0ZJTElOR19DT01NQU5EX0VYRUNfVElNRSAweDEKCiNkZWZpbmUgTUFYX1dPUktfRElNIDMKCnR5cGVkZWYgc3RydWN0IHsKICB1bnNpZ25lZCBpbnQgd29ya0RpbWVuc2lvbjsKICBzaXplX3QgZ2xvYmFsV29ya09mZnNldFtNQVhfV09SS19ESU1dOwogIHNpemVfdCBnbG9iYWxXb3JrU2l6ZVtNQVhfV09SS19ESU1dOwogIHNpemVfdCBsb2NhbFdvcmtTaXplW01BWF9XT1JLX0RJTV07Cn0gbmRyYW5nZV90OwoKI2VuZGlmIC8vIGRlZmluZWQoX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXykgfHwgKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fMl8wKQoKLyoqCiAqIE9wZW5DTCB2MS4xLzEuMi8yLjAgczYuMi40LjIgLSBhc190eXBlIG9wZXJhdG9ycwogKiBSZWludGVycHJldHMgYSBkYXRhIHR5cGUgYXMgYW5vdGhlciBkYXRhIHR5cGUgb2YgdGhlIHNhbWUgc2l6ZQogKi8KI2RlZmluZSBhc19jaGFyKHgpIF9fYnVpbHRpbl9hc3R5cGUoKHgpLCBjaGFyKQojZGVmaW5lIGFzX2NoYXIyKHgpIF9fYnVpbHRpbl9hc3R5cGUoKHgpLCBjaGFyMikKI2RlZmluZSBhc19jaGFyMyh4KSBfX2J1aWx0aW5fYXN0eXBlKCh4KSwgY2hhcjMpCiNkZWZpbmUgYXNfY2hhcjQoeCkgX19idWlsdGluX2FzdHlwZSgoeCksIGNoYXI0KQojZGVmaW5lIGFzX2NoYXI4KHgpIF9fYnVpbHRpbl9hc3R5cGUoKHgpLCBjaGFyOCkKI2RlZmluZSBhc19jaGFyMTYoeCkgX19idWlsdGluX2FzdHlwZSgoeCksIGNoYXIxNikKCiNkZWZpbmUgYXNfdWNoYXIoeCkgX19idWlsdGluX2FzdHlwZSgoeCksIHVjaGFyKQojZGVmaW5lIGFzX3VjaGFyMih4KSBfX2J1aWx0aW5fYXN0eXBlKCh4KSwgdWNoYXIyKQojZGVmaW5lIGFzX3VjaGFyMyh4KSBfX2J1aWx0aW5fYXN0eXBlKCh4KSwgdWNoYXIzKQojZGVmaW5lIGFzX3VjaGFyNCh4KSBfX2J1aWx0aW5fYXN0eXBlKCh4KSwgdWNoYXI0KQojZGVmaW5lIGFzX3VjaGFyOCh4KSBfX2J1aWx0aW5fYXN0eXBlKCh4KSwgdWNoYXI4KQojZGVmaW5lIGFzX3VjaGFyMTYoeCkgX19idWlsdGluX2FzdHlwZSgoeCksIHVjaGFyMTYpCgojZGVmaW5lIGFzX3Nob3J0KHgpIF9fYnVpbHRpbl9hc3R5cGUoKHgpLCBzaG9ydCkKI2RlZmluZSBhc19zaG9ydDIoeCkgX19idWlsdGluX2FzdHlwZSgoeCksIHNob3J0MikKI2RlZmluZSBhc19zaG9ydDMoeCkgX19idWlsdGluX2FzdHlwZSgoeCksIHNob3J0MykKI2RlZmluZSBhc19zaG9ydDQoeCkgX19idWlsdGluX2FzdHlwZSgoeCksIHNob3J0NCkKI2RlZmluZSBhc19zaG9ydDgoeCkgX19idWlsdGluX2FzdHlwZSgoeCksIHNob3J0OCkKI2RlZmluZSBhc19zaG9ydDE2KHgpIF9fYnVpbHRpbl9hc3R5cGUoKHgpLCBzaG9ydDE2KQoKI2RlZmluZSBhc191c2hvcnQoeCkgX19idWlsdGluX2FzdHlwZSgoeCksIHVzaG9ydCkKI2RlZmluZSBhc191c2hvcnQyKHgpIF9fYnVpbHRpbl9hc3R5cGUoKHgpLCB1c2hvcnQyKQojZGVmaW5lIGFzX3VzaG9ydDMoeCkgX19idWlsdGluX2FzdHlwZSgoeCksIHVzaG9ydDMpCiNkZWZpbmUgYXNfdXNob3J0NCh4KSBfX2J1aWx0aW5fYXN0eXBlKCh4KSwgdXNob3J0NCkKI2RlZmluZSBhc191c2hvcnQ4KHgpIF9fYnVpbHRpbl9hc3R5cGUoKHgpLCB1c2hvcnQ4KQojZGVmaW5lIGFzX3VzaG9ydDE2KHgpIF9fYnVpbHRpbl9hc3R5cGUoKHgpLCB1c2hvcnQxNikKCiNkZWZpbmUgYXNfaW50KHgpIF9fYnVpbHRpbl9hc3R5cGUoKHgpLCBpbnQpCiNkZWZpbmUgYXNfaW50Mih4KSBfX2J1aWx0aW5fYXN0eXBlKCh4KSwgaW50MikKI2RlZmluZSBhc19pbnQzKHgpIF9fYnVpbHRpbl9hc3R5cGUoKHgpLCBpbnQzKQojZGVmaW5lIGFzX2ludDQoeCkgX19idWlsdGluX2FzdHlwZSgoeCksIGludDQpCiNkZWZpbmUgYXNfaW50OCh4KSBfX2J1aWx0aW5fYXN0eXBlKCh4KSwgaW50OCkKI2RlZmluZSBhc19pbnQxNih4KSBfX2J1aWx0aW5fYXN0eXBlKCh4KSwgaW50MTYpCgojZGVmaW5lIGFzX3VpbnQoeCkgX19idWlsdGluX2FzdHlwZSgoeCksIHVpbnQpCiNkZWZpbmUgYXNfdWludDIoeCkgX19idWlsdGluX2FzdHlwZSgoeCksIHVpbnQyKQojZGVmaW5lIGFzX3VpbnQzKHgpIF9fYnVpbHRpbl9hc3R5cGUoKHgpLCB1aW50MykKI2RlZmluZSBhc191aW50NCh4KSBfX2J1aWx0aW5fYXN0eXBlKCh4KSwgdWludDQpCiNkZWZpbmUgYXNfdWludDgoeCkgX19idWlsdGluX2FzdHlwZSgoeCksIHVpbnQ4KQojZGVmaW5lIGFzX3VpbnQxNih4KSBfX2J1aWx0aW5fYXN0eXBlKCh4KSwgdWludDE2KQoKI2RlZmluZSBhc19sb25nKHgpIF9fYnVpbHRpbl9hc3R5cGUoKHgpLCBsb25nKQojZGVmaW5lIGFzX2xvbmcyKHgpIF9fYnVpbHRpbl9hc3R5cGUoKHgpLCBsb25nMikKI2RlZmluZSBhc19sb25nMyh4KSBfX2J1aWx0aW5fYXN0eXBlKCh4KSwgbG9uZzMpCiNkZWZpbmUgYXNfbG9uZzQoeCkgX19idWlsdGluX2FzdHlwZSgoeCksIGxvbmc0KQojZGVmaW5lIGFzX2xvbmc4KHgpIF9fYnVpbHRpbl9hc3R5cGUoKHgpLCBsb25nOCkKI2RlZmluZSBhc19sb25nMTYoeCkgX19idWlsdGluX2FzdHlwZSgoeCksIGxvbmcxNikKCiNkZWZpbmUgYXNfdWxvbmcoeCkgX19idWlsdGluX2FzdHlwZSgoeCksIHVsb25nKQojZGVmaW5lIGFzX3Vsb25nMih4KSBfX2J1aWx0aW5fYXN0eXBlKCh4KSwgdWxvbmcyKQojZGVmaW5lIGFzX3Vsb25nMyh4KSBfX2J1aWx0aW5fYXN0eXBlKCh4KSwgdWxvbmczKQojZGVmaW5lIGFzX3Vsb25nNCh4KSBfX2J1aWx0aW5fYXN0eXBlKCh4KSwgdWxvbmc0KQojZGVmaW5lIGFzX3Vsb25nOCh4KSBfX2J1aWx0aW5fYXN0eXBlKCh4KSwgdWxvbmc4KQojZGVmaW5lIGFzX3Vsb25nMTYoeCkgX19idWlsdGluX2FzdHlwZSgoeCksIHVsb25nMTYpCgojZGVmaW5lIGFzX2Zsb2F0KHgpIF9fYnVpbHRpbl9hc3R5cGUoKHgpLCBmbG9hdCkKI2RlZmluZSBhc19mbG9hdDIoeCkgX19idWlsdGluX2FzdHlwZSgoeCksIGZsb2F0MikKI2RlZmluZSBhc19mbG9hdDMoeCkgX19idWlsdGluX2FzdHlwZSgoeCksIGZsb2F0MykKI2RlZmluZSBhc19mbG9hdDQoeCkgX19idWlsdGluX2FzdHlwZSgoeCksIGZsb2F0NCkKI2RlZmluZSBhc19mbG9hdDgoeCkgX19idWlsdGluX2FzdHlwZSgoeCksIGZsb2F0OCkKI2RlZmluZSBhc19mbG9hdDE2KHgpIF9fYnVpbHRpbl9hc3R5cGUoKHgpLCBmbG9hdDE2KQoKI2lmZGVmIGNsX2tocl9mcDY0CiNkZWZpbmUgYXNfZG91YmxlKHgpIF9fYnVpbHRpbl9hc3R5cGUoKHgpLCBkb3VibGUpCiNkZWZpbmUgYXNfZG91YmxlMih4KSBfX2J1aWx0aW5fYXN0eXBlKCh4KSwgZG91YmxlMikKI2RlZmluZSBhc19kb3VibGUzKHgpIF9fYnVpbHRpbl9hc3R5cGUoKHgpLCBkb3VibGUzKQojZGVmaW5lIGFzX2RvdWJsZTQoeCkgX19idWlsdGluX2FzdHlwZSgoeCksIGRvdWJsZTQpCiNkZWZpbmUgYXNfZG91YmxlOCh4KSBfX2J1aWx0aW5fYXN0eXBlKCh4KSwgZG91YmxlOCkKI2RlZmluZSBhc19kb3VibGUxNih4KSBfX2J1aWx0aW5fYXN0eXBlKCh4KSwgZG91YmxlMTYpCiNlbmRpZiAvLyBjbF9raHJfZnA2NAoKI2lmZGVmIGNsX2tocl9mcDE2CiNkZWZpbmUgYXNfaGFsZih4KSBfX2J1aWx0aW5fYXN0eXBlKCh4KSwgaGFsZikKI2RlZmluZSBhc19oYWxmMih4KSBfX2J1aWx0aW5fYXN0eXBlKCh4KSwgaGFsZjIpCiNkZWZpbmUgYXNfaGFsZjMoeCkgX19idWlsdGluX2FzdHlwZSgoeCksIGhhbGYzKQojZGVmaW5lIGFzX2hhbGY0KHgpIF9fYnVpbHRpbl9hc3R5cGUoKHgpLCBoYWxmNCkKI2RlZmluZSBhc19oYWxmOCh4KSBfX2J1aWx0aW5fYXN0eXBlKCh4KSwgaGFsZjgpCiNkZWZpbmUgYXNfaGFsZjE2KHgpIF9fYnVpbHRpbl9hc3R5cGUoKHgpLCBoYWxmMTYpCiNlbmRpZiAvLyBjbF9raHJfZnAxNgoKI2RlZmluZSBhc19zaXplX3QoeCkgX19idWlsdGluX2FzdHlwZSgoeCksIHNpemVfdCkKI2RlZmluZSBhc19wdHJkaWZmX3QoeCkgX19idWlsdGluX2FzdHlwZSgoeCksIHB0cmRpZmZfdCkKI2RlZmluZSBhc19pbnRwdHJfdCh4KSBfX2J1aWx0aW5fYXN0eXBlKCh4KSwgaW50cHRyX3QpCiNkZWZpbmUgYXNfdWludHB0cl90KHgpIF9fYnVpbHRpbl9hc3R5cGUoKHgpLCB1aW50cHRyX3QpCgovLyBDKysgZm9yIE9wZW5DTCAtIF9fcmVtb3ZlX2FkZHJlc3Nfc3BhY2UKI2lmIGRlZmluZWQoX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXykKdGVtcGxhdGUgPHR5cGVuYW1lIF9UcD4gc3RydWN0IF9fcmVtb3ZlX2FkZHJlc3Nfc3BhY2UgeyB1c2luZyB0eXBlID0gX1RwOyB9Owp0ZW1wbGF0ZSA8dHlwZW5hbWUgX1RwPiBzdHJ1Y3QgX19yZW1vdmVfYWRkcmVzc19zcGFjZTxfX2dlbmVyaWMgX1RwPiB7CiAgdXNpbmcgdHlwZSA9IF9UcDsKfTsKdGVtcGxhdGUgPHR5cGVuYW1lIF9UcD4gc3RydWN0IF9fcmVtb3ZlX2FkZHJlc3Nfc3BhY2U8X19nbG9iYWwgX1RwPiB7CiAgdXNpbmcgdHlwZSA9IF9UcDsKfTsKdGVtcGxhdGUgPHR5cGVuYW1lIF9UcD4gc3RydWN0IF9fcmVtb3ZlX2FkZHJlc3Nfc3BhY2U8X19wcml2YXRlIF9UcD4gewogIHVzaW5nIHR5cGUgPSBfVHA7Cn07CnRlbXBsYXRlIDx0eXBlbmFtZSBfVHA+IHN0cnVjdCBfX3JlbW92ZV9hZGRyZXNzX3NwYWNlPF9fbG9jYWwgX1RwPiB7CiAgdXNpbmcgdHlwZSA9IF9UcDsKfTsKdGVtcGxhdGUgPHR5cGVuYW1lIF9UcD4gc3RydWN0IF9fcmVtb3ZlX2FkZHJlc3Nfc3BhY2U8X19jb25zdGFudCBfVHA+IHsKICB1c2luZyB0eXBlID0gX1RwOwp9OwojZW5kaWYKCi8vIE9wZW5DTCB2MS4xIHM2LjksIHYxLjIvMi4wIHM2LjEwIC0gRnVuY3Rpb24gcXVhbGlmaWVycwoKI2RlZmluZSBfX2tlcm5lbF9leGVjKFgsIHR5cGVuKSBfX2tlcm5lbCBcCglfX2F0dHJpYnV0ZV9fKCh3b3JrX2dyb3VwX3NpemVfaGludChYLCAxLCAxKSkpIFwKCV9fYXR0cmlidXRlX18oKHZlY190eXBlX2hpbnQodHlwZW4pKSkKCiNkZWZpbmUga2VybmVsX2V4ZWMoWCwgdHlwZW4pIF9fa2VybmVsIFwKCV9fYXR0cmlidXRlX18oKHdvcmtfZ3JvdXBfc2l6ZV9oaW50KFgsIDEsIDEpKSkgXAoJX19hdHRyaWJ1dGVfXygodmVjX3R5cGVfaGludCh0eXBlbikpKQoKI2lmIGRlZmluZWQoX19PUEVOQ0xfQ1BQX1ZFUlNJT05fXykgfHwgKF9fT1BFTkNMX0NfVkVSU0lPTl9fID49IENMX1ZFUlNJT05fMV8yKQovLyBPcGVuQ0wgdjEuMiBzNi4xMi4xMywgdjIuMCBzNi4xMy4xMyAtIHByaW50ZgoKaW50IHByaW50ZihfX2NvbnN0YW50IGNvbnN0IGNoYXIqIHN0LCAuLi4pIF9fYXR0cmlidXRlX18oKGZvcm1hdChwcmludGYsIDEsIDIpKSk7CiNlbmRpZgoKI2lmZGVmIGNsX2ludGVsX2RldmljZV9zaWRlX2F2Y19tb3Rpb25fZXN0aW1hdGlvbgoKI2RlZmluZSBDTEtfQVZDX01FX01BSk9SXzE2eDE2X0lOVEVMIDB4MAojZGVmaW5lIENMS19BVkNfTUVfTUFKT1JfMTZ4OF9JTlRFTCAweDEKI2RlZmluZSBDTEtfQVZDX01FX01BSk9SXzh4MTZfSU5URUwgMHgyCiNkZWZpbmUgQ0xLX0FWQ19NRV9NQUpPUl84eDhfSU5URUwgMHgzCgojZGVmaW5lIENMS19BVkNfTUVfTUlOT1JfOHg4X0lOVEVMIDB4MAojZGVmaW5lIENMS19BVkNfTUVfTUlOT1JfOHg0X0lOVEVMIDB4MQojZGVmaW5lIENMS19BVkNfTUVfTUlOT1JfNHg4X0lOVEVMIDB4MgojZGVmaW5lIENMS19BVkNfTUVfTUlOT1JfNHg0X0lOVEVMIDB4MwoKI2RlZmluZSBDTEtfQVZDX01FX01BSk9SX0ZPUldBUkRfSU5URUwgMHgwCiNkZWZpbmUgQ0xLX0FWQ19NRV9NQUpPUl9CQUNLV0FSRF9JTlRFTCAweDEKI2RlZmluZSBDTEtfQVZDX01FX01BSk9SX0JJRElSRUNUSU9OQUxfSU5URUwgMHgyCgojZGVmaW5lIENMS19BVkNfTUVfUEFSVElUSU9OX01BU0tfQUxMX0lOVEVMIDB4MAojZGVmaW5lIENMS19BVkNfTUVfUEFSVElUSU9OX01BU0tfMTZ4MTZfSU5URUwgMHg3RQojZGVmaW5lIENMS19BVkNfTUVfUEFSVElUSU9OX01BU0tfMTZ4OF9JTlRFTCAweDdECiNkZWZpbmUgQ0xLX0FWQ19NRV9QQVJUSVRJT05fTUFTS184eDE2X0lOVEVMIDB4N0IKI2RlZmluZSBDTEtfQVZDX01FX1BBUlRJVElPTl9NQVNLXzh4OF9JTlRFTCAweDc3CiNkZWZpbmUgQ0xLX0FWQ19NRV9QQVJUSVRJT05fTUFTS184eDRfSU5URUwgMHg2RgojZGVmaW5lIENMS19BVkNfTUVfUEFSVElUSU9OX01BU0tfNHg4X0lOVEVMIDB4NUYKI2RlZmluZSBDTEtfQVZDX01FX1BBUlRJVElPTl9NQVNLXzR4NF9JTlRFTCAweDNGCgojZGVmaW5lIENMS19BVkNfTUVfU0xJQ0VfVFlQRV9QUkVEX0lOVEVMIDB4MAojZGVmaW5lIENMS19BVkNfTUVfU0xJQ0VfVFlQRV9CUFJFRF9JTlRFTCAweDEKI2RlZmluZSBDTEtfQVZDX01FX1NMSUNFX1RZUEVfSU5UUkFfSU5URUwgMHgyCgojZGVmaW5lIENMS19BVkNfTUVfU0VBUkNIX1dJTkRPV19FWEhBVVNUSVZFX0lOVEVMIDB4MAojZGVmaW5lIENMS19BVkNfTUVfU0VBUkNIX1dJTkRPV19TTUFMTF9JTlRFTCAweDEKI2RlZmluZSBDTEtfQVZDX01FX1NFQVJDSF9XSU5ET1dfVElOWV9JTlRFTCAweDIKI2RlZmluZSBDTEtfQVZDX01FX1NFQVJDSF9XSU5ET1dfRVhUUkFfVElOWV9JTlRFTCAweDMKI2RlZmluZSBDTEtfQVZDX01FX1NFQVJDSF9XSU5ET1dfRElBTU9ORF9JTlRFTCAweDQKI2RlZmluZSBDTEtfQVZDX01FX1NFQVJDSF9XSU5ET1dfTEFSR0VfRElBTU9ORF9JTlRFTCAweDUKI2RlZmluZSBDTEtfQVZDX01FX1NFQVJDSF9XSU5ET1dfUkVTRVJWRUQwX0lOVEVMIDB4NgojZGVmaW5lIENMS19BVkNfTUVfU0VBUkNIX1dJTkRPV19SRVNFUlZFRDFfSU5URUwgMHg3CiNkZWZpbmUgQ0xLX0FWQ19NRV9TRUFSQ0hfV0lORE9XX0NVU1RPTV9JTlRFTCAweDgKCiNkZWZpbmUgQ0xLX0FWQ19NRV9TQURfQURKVVNUX01PREVfTk9ORV9JTlRFTCAweDAKI2RlZmluZSBDTEtfQVZDX01FX1NBRF9BREpVU1RfTU9ERV9IQUFSX0lOVEVMIDB4MgoKI2RlZmluZSBDTEtfQVZDX01FX1NVQlBJWEVMX01PREVfSU5URUdFUl9JTlRFTCAweDAKI2RlZmluZSBDTEtfQVZDX01FX1NVQlBJWEVMX01PREVfSFBFTF9JTlRFTCAweDEKI2RlZmluZSBDTEtfQVZDX01FX1NVQlBJWEVMX01PREVfUVBFTF9JTlRFTCAweDMKCiNkZWZpbmUgQ0xLX0FWQ19NRV9DT1NUX1BSRUNJU0lPTl9RUEVMX0lOVEVMIDB4MAojZGVmaW5lIENMS19BVkNfTUVfQ09TVF9QUkVDSVNJT05fSFBFTF9JTlRFTCAweDEKI2RlZmluZSBDTEtfQVZDX01FX0NPU1RfUFJFQ0lTSU9OX1BFTF9JTlRFTCAweDIKI2RlZmluZSBDTEtfQVZDX01FX0NPU1RfUFJFQ0lTSU9OX0RQRUxfSU5URUwgMHgzCgojZGVmaW5lIENMS19BVkNfTUVfQklESVJfV0VJR0hUX1FVQVJURVJfSU5URUwgMHgxMAojZGVmaW5lIENMS19BVkNfTUVfQklESVJfV0VJR0hUX1RISVJEX0lOVEVMIDB4MTUKI2RlZmluZSBDTEtfQVZDX01FX0JJRElSX1dFSUdIVF9IQUxGX0lOVEVMIDB4MjAKI2RlZmluZSBDTEtfQVZDX01FX0JJRElSX1dFSUdIVF9UV09fVEhJUkRfSU5URUwgMHgyQgojZGVmaW5lIENMS19BVkNfTUVfQklESVJfV0VJR0hUX1RIUkVFX1FVQVJURVJfSU5URUwgMHgzMAoKI2RlZmluZSBDTEtfQVZDX01FX0JPUkRFUl9SRUFDSEVEX0xFRlRfSU5URUwgMHgwCiNkZWZpbmUgQ0xLX0FWQ19NRV9CT1JERVJfUkVBQ0hFRF9SSUdIVF9JTlRFTCAweDIKI2RlZmluZSBDTEtfQVZDX01FX0JPUkRFUl9SRUFDSEVEX1RPUF9JTlRFTCAweDQKI2RlZmluZSBDTEtfQVZDX01FX0JPUkRFUl9SRUFDSEVEX0JPVFRPTV9JTlRFTCAweDgKCiNkZWZpbmUgQ0xLX0FWQ19NRV9JTlRSQV8xNngxNl9JTlRFTCAweDAKI2RlZmluZSBDTEtfQVZDX01FX0lOVFJBXzh4OF9JTlRFTCAweDEKI2RlZmluZSBDTEtfQVZDX01FX0lOVFJBXzR4NF9JTlRFTCAweDIKCiNkZWZpbmUgQ0xLX0FWQ19NRV9TS0lQX0JMT0NLX1BBUlRJVElPTl8xNngxNl9JTlRFTCAweDAKI2RlZmluZSBDTEtfQVZDX01FX1NLSVBfQkxPQ0tfUEFSVElUSU9OXzh4OF9JTlRFTCAweDQwMDAKCiNkZWZpbmUgQ0xLX0FWQ19NRV9TS0lQX0JMT0NLXzE2eDE2X0ZPUldBUkRfRU5BQkxFX0lOVEVMICgweDEgPDwgMjQpCiNkZWZpbmUgQ0xLX0FWQ19NRV9TS0lQX0JMT0NLXzE2eDE2X0JBQ0tXQVJEX0VOQUJMRV9JTlRFTCAoMHgyIDw8IDI0KQojZGVmaW5lIENMS19BVkNfTUVfU0tJUF9CTE9DS18xNngxNl9EVUFMX0VOQUJMRV9JTlRFTCAoMHgzIDw8IDI0KQojZGVmaW5lIENMS19BVkNfTUVfU0tJUF9CTE9DS184eDhfRk9SV0FSRF9FTkFCTEVfSU5URUwgKDB4NTUgPDwgMjQpCiNkZWZpbmUgQ0xLX0FWQ19NRV9TS0lQX0JMT0NLXzh4OF9CQUNLV0FSRF9FTkFCTEVfSU5URUwgKDB4QUEgPDwgMjQpCiNkZWZpbmUgQ0xLX0FWQ19NRV9TS0lQX0JMT0NLXzh4OF9EVUFMX0VOQUJMRV9JTlRFTCAoMHhGRiA8PCAyNCkKI2RlZmluZSBDTEtfQVZDX01FX1NLSVBfQkxPQ0tfOHg4XzBfRk9SV0FSRF9FTkFCTEVfSU5URUwgKDB4MSA8PCAyNCkKI2RlZmluZSBDTEtfQVZDX01FX1NLSVBfQkxPQ0tfOHg4XzBfQkFDS1dBUkRfRU5BQkxFX0lOVEVMICgweDIgPDwgMjQpCiNkZWZpbmUgQ0xLX0FWQ19NRV9TS0lQX0JMT0NLXzh4OF8xX0ZPUldBUkRfRU5BQkxFX0lOVEVMICgweDEgPDwgMjYpCiNkZWZpbmUgQ0xLX0FWQ19NRV9TS0lQX0JMT0NLXzh4OF8xX0JBQ0tXQVJEX0VOQUJMRV9JTlRFTCAoMHgyIDw8IDI2KQojZGVmaW5lIENMS19BVkNfTUVfU0tJUF9CTE9DS184eDhfMl9GT1JXQVJEX0VOQUJMRV9JTlRFTCAoMHgxIDw8IDI4KQojZGVmaW5lIENMS19BVkNfTUVfU0tJUF9CTE9DS184eDhfMl9CQUNLV0FSRF9FTkFCTEVfSU5URUwgKDB4MiA8PCAyOCkKI2RlZmluZSBDTEtfQVZDX01FX1NLSVBfQkxPQ0tfOHg4XzNfRk9SV0FSRF9FTkFCTEVfSU5URUwgKDB4MSA8PCAzMCkKI2RlZmluZSBDTEtfQVZDX01FX1NLSVBfQkxPQ0tfOHg4XzNfQkFDS1dBUkRfRU5BQkxFX0lOVEVMICgweDIgPDwgMzApCgojZGVmaW5lIENMS19BVkNfTUVfQkxPQ0tfQkFTRURfU0tJUF80eDRfSU5URUwgMHgwMAojZGVmaW5lIENMS19BVkNfTUVfQkxPQ0tfQkFTRURfU0tJUF84eDhfSU5URUwgMHg4MAoKI2RlZmluZSBDTEtfQVZDX01FX0lOVFJBX0xVTUFfUEFSVElUSU9OX01BU0tfQUxMX0lOVEVMIDB4MAojZGVmaW5lIENMS19BVkNfTUVfSU5UUkFfTFVNQV9QQVJUSVRJT05fTUFTS18xNngxNl9JTlRFTCAweDYKI2RlZmluZSBDTEtfQVZDX01FX0lOVFJBX0xVTUFfUEFSVElUSU9OX01BU0tfOHg4X0lOVEVMIDB4NQojZGVmaW5lIENMS19BVkNfTUVfSU5UUkFfTFVNQV9QQVJUSVRJT05fTUFTS180eDRfSU5URUwgMHgzCgojZGVmaW5lIENMS19BVkNfTUVfSU5UUkFfTkVJR0hCT1JfTEVGVF9NQVNLX0VOQUJMRV9JTlRFTCAweDYwCiNkZWZpbmUgQ0xLX0FWQ19NRV9JTlRSQV9ORUlHSEJPUl9VUFBFUl9NQVNLX0VOQUJMRV9JTlRFTCAweDEwCiNkZWZpbmUgQ0xLX0FWQ19NRV9JTlRSQV9ORUlHSEJPUl9VUFBFUl9SSUdIVF9NQVNLX0VOQUJMRV9JTlRFTCAweDgKI2RlZmluZSBDTEtfQVZDX01FX0lOVFJBX05FSUdIQk9SX1VQUEVSX0xFRlRfTUFTS19FTkFCTEVfSU5URUwgMHg0CgojZGVmaW5lIENMS19BVkNfTUVfTFVNQV9QUkVESUNUT1JfTU9ERV9WRVJUSUNBTF9JTlRFTCAweDAKI2RlZmluZSBDTEtfQVZDX01FX0xVTUFfUFJFRElDVE9SX01PREVfSE9SSVpPTlRBTF9JTlRFTCAweDEKI2RlZmluZSBDTEtfQVZDX01FX0xVTUFfUFJFRElDVE9SX01PREVfRENfSU5URUwgMHgyCiNkZWZpbmUgQ0xLX0FWQ19NRV9MVU1BX1BSRURJQ1RPUl9NT0RFX0RJQUdPTkFMX0RPV05fTEVGVF9JTlRFTCAweDMKI2RlZmluZSBDTEtfQVZDX01FX0xVTUFfUFJFRElDVE9SX01PREVfRElBR09OQUxfRE9XTl9SSUdIVF9JTlRFTCAweDQKI2RlZmluZSBDTEtfQVZDX01FX0xVTUFfUFJFRElDVE9SX01PREVfUExBTkVfSU5URUwgMHg0CiNkZWZpbmUgQ0xLX0FWQ19NRV9MVU1BX1BSRURJQ1RPUl9NT0RFX1ZFUlRJQ0FMX1JJR0hUX0lOVEVMIDB4NQojZGVmaW5lIENMS19BVkNfTUVfTFVNQV9QUkVESUNUT1JfTU9ERV9IT1JJWk9OVEFMX0RPV05fSU5URUwgMHg2CiNkZWZpbmUgQ0xLX0FWQ19NRV9MVU1BX1BSRURJQ1RPUl9NT0RFX1ZFUlRJQ0FMX0xFRlRfSU5URUwgMHg3CiNkZWZpbmUgQ0xLX0FWQ19NRV9MVU1BX1BSRURJQ1RPUl9NT0RFX0hPUklaT05UQUxfVVBfSU5URUwgMHg4CiNkZWZpbmUgQ0xLX0FWQ19NRV9DSFJPTUFfUFJFRElDVE9SX01PREVfRENfSU5URUwgMHgwCiNkZWZpbmUgQ0xLX0FWQ19NRV9DSFJPTUFfUFJFRElDVE9SX01PREVfSE9SSVpPTlRBTF9JTlRFTCAweDEKI2RlZmluZSBDTEtfQVZDX01FX0NIUk9NQV9QUkVESUNUT1JfTU9ERV9WRVJUSUNBTF9JTlRFTCAweDIKI2RlZmluZSBDTEtfQVZDX01FX0NIUk9NQV9QUkVESUNUT1JfTU9ERV9QTEFORV9JTlRFTCAweDMKCiNkZWZpbmUgQ0xLX0FWQ19NRV9GUkFNRV9GT1JXQVJEX0lOVEVMIDB4MQojZGVmaW5lIENMS19BVkNfTUVfRlJBTUVfQkFDS1dBUkRfSU5URUwgMHgyCiNkZWZpbmUgQ0xLX0FWQ19NRV9GUkFNRV9EVUFMX0lOVEVMIDB4MwoKI2RlZmluZSBDTEtfQVZDX01FX0lOVEVSTEFDRURfU0NBTl9UT1BfRklFTERfSU5URUwgMHgwCiNkZWZpbmUgQ0xLX0FWQ19NRV9JTlRFUkxBQ0VEX1NDQU5fQk9UVE9NX0ZJRUxEX0lOVEVMIDB4MQoKI2RlZmluZSBDTEtfQVZDX01FX0lOSVRJQUxJWkVfSU5URUwgMHgwCgojZGVmaW5lIENMS19BVkNfSU1FX1BBWUxPQURfSU5JVElBTElaRV9JTlRFTCAweDAKI2RlZmluZSBDTEtfQVZDX1JFRl9QQVlMT0FEX0lOSVRJQUxJWkVfSU5URUwgMHgwCiNkZWZpbmUgQ0xLX0FWQ19TSUNfUEFZTE9BRF9JTklUSUFMSVpFX0lOVEVMIDB4MAoKI2RlZmluZSBDTEtfQVZDX0lNRV9SRVNVTFRfSU5JVElBTElaRV9JTlRFTCAweDAKI2RlZmluZSBDTEtfQVZDX1JFRl9SRVNVTFRfSU5JVElBTElaRV9JTlRFTCAweDAKI2RlZmluZSBDTEtfQVZDX1NJQ19SRVNVTFRfSU5JVElBTElaRV9JTlRFTCAweDAKCiNkZWZpbmUgQ0xLX0FWQ19JTUVfUkVTVUxUX1NJTkdMRV9SRUZFUkVOQ0VfU1RSRUFNT1VUX0lOSVRJQUxJWkVfSU5URUwgMHgwCiNkZWZpbmUgQ0xLX0FWQ19JTUVfUkVTVUxUX1NJTkdMRV9SRUZFUkVOQ0VfU1RSRUFNSU5fSU5JVElBTElaRV9JTlRFTCAweDAKI2RlZmluZSBDTEtfQVZDX0lNRV9SRVNVTFRfRFVBTF9SRUZFUkVOQ0VfU1RSRUFNT1VUX0lOSVRJQUxJWkVfSU5URUwgMHgwCiNkZWZpbmUgQ0xLX0FWQ19JTUVfUkVTVUxUX0RVQUxfUkVGRVJFTkNFX1NUUkVBTUlOX0lOSVRJQUxJWkVfSU5URUwgMHgwCgojZW5kaWYgLy8gY2xfaW50ZWxfZGV2aWNlX3NpZGVfYXZjX21vdGlvbl9lc3RpbWF0aW9uCgovLyBEaXNhYmxlIGFueSBleHRlbnNpb25zIHdlIG1heSBoYXZlIGVuYWJsZWQgcHJldmlvdXNseS4KI3ByYWdtYSBPUEVOQ0wgRVhURU5TSU9OIGFsbCA6IGRpc2FibGUKCiNlbmRpZiAvL19PUEVOQ0xfQkFTRV9IXwoAc3RkaW50LmgAd2Jub2ludmRpbnRyaW4uaABvcGVubXBfd3JhcHBlcnMvY29tcGxleC5oAHNhbml0aXplci9saW51eF9zeXNjYWxsX2hvb2tzLmgAc2l6ZQBWTmFtZSBydWxlIGlzIG1pc3NpbmcgaXRzIHBhdHRlcm4uAFRoZSBkb2N1bWVudCBpcyBlbXB0eS4AZm9ybWF0AEludmFsaWQgUkUyOiAAIGluIENvbXB1dGVGaXJzdEJ5dGUAQmFkIGFyZyBpbiBrSW5zdEFsdE1hdGNoOiAAbWlzc2luZyApAFxyAENoZXJva2VlAEhhbmlmaV9Sb2hpbmd5YQBIYXRyYW4ASmF2YW5lc2UATWMATXJvAGVsZW1lbnQgbm90IGluIGZyZWVsaXN0AH0AdwBzaG9ydABsb25nIGRvdWJsZQBlTwBePQBsdABzdHJpbmcAb3N0cmVhbQB0cmVlLT5oZWlnaHQoKSA8PSBDb3JkUmVwQnRyZWU6OmtNYXhIZWlnaHQAICBDb3JkUmVwUmluZygALCByYyA9IAB9CgAwMTIzNDU2Nzg5QUJDREVGMDEyMzQ1Njc4OWFiY2RlZgBTaWduYWwgd2FrZXVwAFJlbGVhc2FibGVNdXRleExvY2s6OlJlbGVhc2UgbWF5IG9ubHkgYmUgY2FsbGVkIG9uY2UAY2xvY2tfZ2V0dGltZShDTE9DS19SRUFMVElNRSwgJnRzKSA9PSAwAGZpbGU6AGV4dGVybmFsL2JvcmluZ3NzbC9zcmMvY3J5cHRvL2ZpcHNtb2R1bGUvYm4vZGl2LmMARVZQX0FFQURfQ1RYX2luaXQgZm9yIEFFUy0xMjgtR0NNIGZhaWxlZC4KAFBFTSByb3V0aW5lcwBYLjUwOSBjZXJ0aWZpY2F0ZSByb3V0aW5lcwBjb21tb24gbGliY3J5cHRvIHJvdXRpbmVzAFg1MDkgVjMgcm91dGluZXMAT0NTUCByb3V0aW5lcwBFQ0RTQSByb3V0aW5lcwBvdmVyZmxvdwBleHRlcm5hbC9ib3Jpbmdzc2wvc3JjL2NyeXB0by9leF9kYXRhLmMAa3l0aGUucHJvdG8uQ29tcGlsYXRpb25Vbml0LkVudi52YWx1ZQBreXRoZS5wcm90by5LemlwSW5mby5Db3JwdXNJbmZvLkxhbmd1YWdlUmVxdWlyZWRJbnB1dHNFbnRyeS5rZXkAQ2FsbCBzZXQgbWV0aG9kcyB0byBpbml0aWFsaXplIE1hcEtleS4AZXh0ZXJuYWwvcHJvdG9idWYvc3JjL2dvb2dsZS9wcm90b2J1Zi9tYXBfZmllbGRfaW5sLmgAa3l0aGUucHJvdG8uQnVpbGREZXRhaWxzLmJ1aWxkX3RhcmdldABreXRoZS5wcm90by5DeHhDb21waWxhdGlvblVuaXREZXRhaWxzLkhlYWRlclNlYXJjaERpci5wYXRoAGY3Ny1jcHAtaW5wdXQARXJyb3IgY2xvc2luZyBremlwIG91dHB1dDogAGFybV9hY2xlLmgALyo9PT0tLS0tLS0tLS0tIGF2eDUxMnZsZnAxNmludHJpbi5oIC0gQVZYNTEyLUZQMTYgaW50cmluc2ljcyAtLS0tLS0tLS0tLS0tLT09PQogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwojaWZuZGVmIF9fSU1NSU5UUklOX0gKI2Vycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICJOZXZlciB1c2UgPGF2eDUxMnZsZnAxNmludHJpbi5oPiBkaXJlY3RseTsgaW5jbHVkZSA8aW1taW50cmluLmg+IGluc3RlYWQuIgojZW5kaWYKCiNpZm5kZWYgX19BVlg1MTJWTEZQMTZJTlRSSU5fSAojZGVmaW5lIF9fQVZYNTEyVkxGUDE2SU5UUklOX0gKCi8qIERlZmluZSB0aGUgZGVmYXVsdCBhdHRyaWJ1dGVzIGZvciB0aGUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZS4gKi8KI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICBfX3RhcmdldF9fKCJhdng1MTJmcDE2LCBhdng1MTJ2bCIpLCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICBfX21pbl92ZWN0b3Jfd2lkdGhfXygyNTYpKSkKI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMxMjggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICBfX3RhcmdldF9fKCJhdng1MTJmcDE2LCBhdng1MTJ2bCIpLCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICBfX21pbl92ZWN0b3Jfd2lkdGhfXygxMjgpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9GbG9hdDE2IF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfbW1fY3Z0c2hfaChfX20xMjhoIF9fYSkgewogIHJldHVybiBfX2FbMF07Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9GbG9hdDE2IF9fREVGQVVMVF9GTl9BVFRSUzI1NiBfbW0yNTZfY3Z0c2hfaChfX20yNTZoIF9fYSkgewogIHJldHVybiBfX2FbMF07Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9zZXRfc2goX0Zsb2F0MTYgX19oKSB7CiAgcmV0dXJuIF9fZXh0ZW5zaW9uX18oX19tMTI4aCl7X19oLCAwLCAwLCAwLCAwLCAwLCAwLCAwfTsKfQoKc3RhdGljIF9faW5saW5lIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9zZXQxX3BoKF9GbG9hdDE2IF9faCkgewogIHJldHVybiAoX19tMTI4aCkoX192OGhmKXtfX2gsIF9faCwgX19oLCBfX2gsIF9faCwgX19oLCBfX2gsIF9faH07Cn0KCnN0YXRpYyBfX2lubGluZSBfX20yNTZoIF9fREVGQVVMVF9GTl9BVFRSUzI1NiBfbW0yNTZfc2V0MV9waChfRmxvYXQxNiBfX2gpIHsKICByZXR1cm4gKF9fbTI1NmgpKF9fdjE2aGYpe19faCwgX19oLCBfX2gsIF9faCwgX19oLCBfX2gsIF9faCwgX19oLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX19oLCBfX2gsIF9faCwgX19oLCBfX2gsIF9faCwgX19oLCBfX2h9Owp9CgpzdGF0aWMgX19pbmxpbmUgX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX3NldF9waChfRmxvYXQxNiBfX2gxLCBfRmxvYXQxNiBfX2gyLCBfRmxvYXQxNiBfX2gzLCBfRmxvYXQxNiBfX2g0LAogICAgICAgICAgIF9GbG9hdDE2IF9faDUsIF9GbG9hdDE2IF9faDYsIF9GbG9hdDE2IF9faDcsIF9GbG9hdDE2IF9faDgpIHsKICByZXR1cm4gKF9fbTEyOGgpKF9fdjhoZil7X19oOCwgX19oNywgX19oNiwgX19oNSwgX19oNCwgX19oMywgX19oMiwgX19oMX07Cn0KCnN0YXRpYyBfX2lubGluZSBfX20yNTZoIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfc2V0MV9wY2goX0Zsb2F0MTYgX0NvbXBsZXggaCkgewogIHJldHVybiAoX19tMjU2aClfbW0yNTZfc2V0MV9wcyhfX2J1aWx0aW5fYml0X2Nhc3QoZmxvYXQsIGgpKTsKfQoKc3RhdGljIF9faW5saW5lIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9zZXQxX3BjaChfRmxvYXQxNiBfQ29tcGxleCBoKSB7CiAgcmV0dXJuIChfX20xMjhoKV9tbV9zZXQxX3BzKF9fYnVpbHRpbl9iaXRfY2FzdChmbG9hdCwgaCkpOwp9CgpzdGF0aWMgX19pbmxpbmUgX19tMjU2aCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X3NldF9waChfRmxvYXQxNiBfX2gxLCBfRmxvYXQxNiBfX2gyLCBfRmxvYXQxNiBfX2gzLCBfRmxvYXQxNiBfX2g0LAogICAgICAgICAgICAgIF9GbG9hdDE2IF9faDUsIF9GbG9hdDE2IF9faDYsIF9GbG9hdDE2IF9faDcsIF9GbG9hdDE2IF9faDgsCiAgICAgICAgICAgICAgX0Zsb2F0MTYgX19oOSwgX0Zsb2F0MTYgX19oMTAsIF9GbG9hdDE2IF9faDExLCBfRmxvYXQxNiBfX2gxMiwKICAgICAgICAgICAgICBfRmxvYXQxNiBfX2gxMywgX0Zsb2F0MTYgX19oMTQsIF9GbG9hdDE2IF9faDE1LCBfRmxvYXQxNiBfX2gxNikgewogIHJldHVybiAoX19tMjU2aCkoX192MTZoZil7X19oMTYsIF9faDE1LCBfX2gxNCwgX19oMTMsIF9faDEyLCBfX2gxMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faDEwLCBfX2g5LCAgX19oOCwgIF9faDcsICBfX2g2LCAgX19oNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faDQsICBfX2gzLCAgX19oMiwgIF9faDF9Owp9CgojZGVmaW5lIF9tbV9zZXRyX3BoKGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIGg3LCBoOCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9tbV9zZXRfcGgoKGg4KSwgKGg3KSwgKGg2KSwgKGg1KSwgKGg0KSwgKGgzKSwgKGgyKSwgKGgxKSkKCiNkZWZpbmUgX21tMjU2X3NldHJfcGgoaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgaDcsIGg4LCBoOSwgaDEwLCBoMTEsIGgxMiwgaDEzLCBcCiAgICAgICAgICAgICAgICAgICAgICAgaDE0LCBoMTUsIGgxNikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX21tMjU2X3NldF9waCgoaDE2KSwgKGgxNSksIChoMTQpLCAoaDEzKSwgKGgxMiksIChoMTEpLCAoaDEwKSwgKGg5KSwgKGg4KSwgICBcCiAgICAgICAgICAgICAgICAoaDcpLCAoaDYpLCAoaDUpLCAoaDQpLCAoaDMpLCAoaDIpLCAoaDEpKQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYgX21tMjU2X2FkZF9waChfX20yNTZoIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20yNTZoIF9fQikgewogIHJldHVybiAoX19tMjU2aCkoKF9fdjE2aGYpX19BICsgKF9fdjE2aGYpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfYWRkX3BoKF9fbTI1NmggX19XLCBfX21tYXNrMTYgX19VLCBfX20yNTZoIF9fQSwgX19tMjU2aCBfX0IpIHsKICByZXR1cm4gKF9fbTI1NmgpX19idWlsdGluX2lhMzJfc2VsZWN0cGhfMjU2KAogICAgICBfX1UsIChfX3YxNmhmKV9tbTI1Nl9hZGRfcGgoX19BLCBfX0IpLCAoX192MTZoZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZoIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfYWRkX3BoKF9fbW1hc2sxNiBfX1UsIF9fbTI1NmggX19BLCBfX20yNTZoIF9fQikgewogIHJldHVybiAoX19tMjU2aClfX2J1aWx0aW5faWEzMl9zZWxlY3RwaF8yNTYoCiAgICAgIF9fVSwgKF9fdjE2aGYpX21tMjU2X2FkZF9waChfX0EsIF9fQiksIChfX3YxNmhmKV9tbTI1Nl9zZXR6ZXJvX3BoKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfbW1fYWRkX3BoKF9fbTEyOGggX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGggX19CKSB7CiAgcmV0dXJuIChfX20xMjhoKSgoX192OGhmKV9fQSArIChfX3Y4aGYpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tX21hc2tfYWRkX3BoKF9fbTEyOGggX19XLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tbWFzazggX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQikgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl9zZWxlY3RwaF8xMjgoX19VLCAoX192OGhmKV9tbV9hZGRfcGgoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfbW1fbWFza3pfYWRkX3BoKF9fbW1hc2s4IF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQikgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl9zZWxlY3RwaF8xMjgoX19VLCAoX192OGhmKV9tbV9hZGRfcGgoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoZilfbW1fc2V0emVyb19waCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYgX21tMjU2X3N1Yl9waChfX20yNTZoIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20yNTZoIF9fQikgewogIHJldHVybiAoX19tMjU2aCkoKF9fdjE2aGYpX19BIC0gKF9fdjE2aGYpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfc3ViX3BoKF9fbTI1NmggX19XLCBfX21tYXNrMTYgX19VLCBfX20yNTZoIF9fQSwgX19tMjU2aCBfX0IpIHsKICByZXR1cm4gKF9fbTI1NmgpX19idWlsdGluX2lhMzJfc2VsZWN0cGhfMjU2KAogICAgICBfX1UsIChfX3YxNmhmKV9tbTI1Nl9zdWJfcGgoX19BLCBfX0IpLCAoX192MTZoZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZoIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfc3ViX3BoKF9fbW1hc2sxNiBfX1UsIF9fbTI1NmggX19BLCBfX20yNTZoIF9fQikgewogIHJldHVybiAoX19tMjU2aClfX2J1aWx0aW5faWEzMl9zZWxlY3RwaF8yNTYoCiAgICAgIF9fVSwgKF9fdjE2aGYpX21tMjU2X3N1Yl9waChfX0EsIF9fQiksIChfX3YxNmhmKV9tbTI1Nl9zZXR6ZXJvX3BoKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfbW1fc3ViX3BoKF9fbTEyOGggX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGggX19CKSB7CiAgcmV0dXJuIChfX20xMjhoKSgoX192OGhmKV9fQSAtIChfX3Y4aGYpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tX21hc2tfc3ViX3BoKF9fbTEyOGggX19XLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tbWFzazggX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQikgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl9zZWxlY3RwaF8xMjgoX19VLCAoX192OGhmKV9tbV9zdWJfcGgoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfbW1fbWFza3pfc3ViX3BoKF9fbW1hc2s4IF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQikgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl9zZWxlY3RwaF8xMjgoX19VLCAoX192OGhmKV9tbV9zdWJfcGgoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoZilfbW1fc2V0emVyb19waCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYgX21tMjU2X211bF9waChfX20yNTZoIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20yNTZoIF9fQikgewogIHJldHVybiAoX19tMjU2aCkoKF9fdjE2aGYpX19BICogKF9fdjE2aGYpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfbXVsX3BoKF9fbTI1NmggX19XLCBfX21tYXNrMTYgX19VLCBfX20yNTZoIF9fQSwgX19tMjU2aCBfX0IpIHsKICByZXR1cm4gKF9fbTI1NmgpX19idWlsdGluX2lhMzJfc2VsZWN0cGhfMjU2KAogICAgICBfX1UsIChfX3YxNmhmKV9tbTI1Nl9tdWxfcGgoX19BLCBfX0IpLCAoX192MTZoZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZoIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfbXVsX3BoKF9fbW1hc2sxNiBfX1UsIF9fbTI1NmggX19BLCBfX20yNTZoIF9fQikgewogIHJldHVybiAoX19tMjU2aClfX2J1aWx0aW5faWEzMl9zZWxlY3RwaF8yNTYoCiAgICAgIF9fVSwgKF9fdjE2aGYpX21tMjU2X211bF9waChfX0EsIF9fQiksIChfX3YxNmhmKV9tbTI1Nl9zZXR6ZXJvX3BoKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfbW1fbXVsX3BoKF9fbTEyOGggX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGggX19CKSB7CiAgcmV0dXJuIChfX20xMjhoKSgoX192OGhmKV9fQSAqIChfX3Y4aGYpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tX21hc2tfbXVsX3BoKF9fbTEyOGggX19XLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tbWFzazggX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQikgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl9zZWxlY3RwaF8xMjgoX19VLCAoX192OGhmKV9tbV9tdWxfcGgoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfbW1fbWFza3pfbXVsX3BoKF9fbW1hc2s4IF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQikgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl9zZWxlY3RwaF8xMjgoX19VLCAoX192OGhmKV9tbV9tdWxfcGgoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoZilfbW1fc2V0emVyb19waCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYgX21tMjU2X2Rpdl9waChfX20yNTZoIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20yNTZoIF9fQikgewogIHJldHVybiAoX19tMjU2aCkoKF9fdjE2aGYpX19BIC8gKF9fdjE2aGYpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfZGl2X3BoKF9fbTI1NmggX19XLCBfX21tYXNrMTYgX19VLCBfX20yNTZoIF9fQSwgX19tMjU2aCBfX0IpIHsKICByZXR1cm4gKF9fbTI1NmgpX19idWlsdGluX2lhMzJfc2VsZWN0cGhfMjU2KAogICAgICBfX1UsIChfX3YxNmhmKV9tbTI1Nl9kaXZfcGgoX19BLCBfX0IpLCAoX192MTZoZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZoIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfZGl2X3BoKF9fbW1hc2sxNiBfX1UsIF9fbTI1NmggX19BLCBfX20yNTZoIF9fQikgewogIHJldHVybiAoX19tMjU2aClfX2J1aWx0aW5faWEzMl9zZWxlY3RwaF8yNTYoCiAgICAgIF9fVSwgKF9fdjE2aGYpX21tMjU2X2Rpdl9waChfX0EsIF9fQiksIChfX3YxNmhmKV9tbTI1Nl9zZXR6ZXJvX3BoKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfbW1fZGl2X3BoKF9fbTEyOGggX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGggX19CKSB7CiAgcmV0dXJuIChfX20xMjhoKSgoX192OGhmKV9fQSAvIChfX3Y4aGYpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tX21hc2tfZGl2X3BoKF9fbTEyOGggX19XLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tbWFzazggX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQikgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl9zZWxlY3RwaF8xMjgoX19VLCAoX192OGhmKV9tbV9kaXZfcGgoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfbW1fbWFza3pfZGl2X3BoKF9fbW1hc2s4IF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQikgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl9zZWxlY3RwaF8xMjgoX19VLCAoX192OGhmKV9tbV9kaXZfcGgoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoZilfbW1fc2V0emVyb19waCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYgX21tMjU2X21pbl9waChfX20yNTZoIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20yNTZoIF9fQikgewogIHJldHVybiAoX19tMjU2aClfX2J1aWx0aW5faWEzMl9taW5waDI1NigoX192MTZoZilfX0EsIChfX3YxNmhmKV9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmggX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX21pbl9waChfX20yNTZoIF9fVywgX19tbWFzazE2IF9fVSwgX19tMjU2aCBfX0EsIF9fbTI1NmggX19CKSB7CiAgcmV0dXJuIChfX20yNTZoKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBoXzI1NigKICAgICAgKF9fbW1hc2sxNilfX1UsCiAgICAgIChfX3YxNmhmKV9fYnVpbHRpbl9pYTMyX21pbnBoMjU2KChfX3YxNmhmKV9fQSwgKF9fdjE2aGYpX19CKSwKICAgICAgKF9fdjE2aGYpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X21pbl9waChfX21tYXNrMTYgX19VLCBfX20yNTZoIF9fQSwgX19tMjU2aCBfX0IpIHsKICByZXR1cm4gKF9fbTI1NmgpX19idWlsdGluX2lhMzJfc2VsZWN0cGhfMjU2KAogICAgICAoX19tbWFzazE2KV9fVSwKICAgICAgKF9fdjE2aGYpX19idWlsdGluX2lhMzJfbWlucGgyNTYoKF9fdjE2aGYpX19BLCAoX192MTZoZilfX0IpLAogICAgICAoX192MTZoZilfbW0yNTZfc2V0emVyb19waCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tX21pbl9waChfX20xMjhoIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQikgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl9taW5waDEyOCgoX192OGhmKV9fQSwgKF9fdjhoZilfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfbW1fbWFza19taW5fcGgoX19tMTI4aCBfX1csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX21tYXNrOCBfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGggX19CKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBoXzEyOCgKICAgICAgKF9fbW1hc2s4KV9fVSwgKF9fdjhoZilfX2J1aWx0aW5faWEzMl9taW5waDEyOCgoX192OGhmKV9fQSwgKF9fdjhoZilfX0IpLAogICAgICAoX192OGhmKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9tYXNrel9taW5fcGgoX19tbWFzazggX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGggX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGggX19CKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBoXzEyOCgKICAgICAgKF9fbW1hc2s4KV9fVSwgKF9fdjhoZilfX2J1aWx0aW5faWEzMl9taW5waDEyOCgoX192OGhmKV9fQSwgKF9fdjhoZilfX0IpLAogICAgICAoX192OGhmKV9tbV9zZXR6ZXJvX3BoKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZoIF9fREVGQVVMVF9GTl9BVFRSUzI1NiBfbW0yNTZfbWF4X3BoKF9fbTI1NmggX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTI1NmggX19CKSB7CiAgcmV0dXJuIChfX20yNTZoKV9fYnVpbHRpbl9pYTMyX21heHBoMjU2KChfX3YxNmhmKV9fQSwgKF9fdjE2aGYpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfbWF4X3BoKF9fbTI1NmggX19XLCBfX21tYXNrMTYgX19VLCBfX20yNTZoIF9fQSwgX19tMjU2aCBfX0IpIHsKICByZXR1cm4gKF9fbTI1NmgpX19idWlsdGluX2lhMzJfc2VsZWN0cGhfMjU2KAogICAgICAoX19tbWFzazE2KV9fVSwKICAgICAgKF9fdjE2aGYpX19idWlsdGluX2lhMzJfbWF4cGgyNTYoKF9fdjE2aGYpX19BLCAoX192MTZoZilfX0IpLAogICAgICAoX192MTZoZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZoIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfbWF4X3BoKF9fbW1hc2sxNiBfX1UsIF9fbTI1NmggX19BLCBfX20yNTZoIF9fQikgewogIHJldHVybiAoX19tMjU2aClfX2J1aWx0aW5faWEzMl9zZWxlY3RwaF8yNTYoCiAgICAgIChfX21tYXNrMTYpX19VLAogICAgICAoX192MTZoZilfX2J1aWx0aW5faWEzMl9tYXhwaDI1NigoX192MTZoZilfX0EsIChfX3YxNmhmKV9fQiksCiAgICAgIChfX3YxNmhmKV9tbTI1Nl9zZXR6ZXJvX3BoKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfbW1fbWF4X3BoKF9fbTEyOGggX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGggX19CKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX21heHBoMTI4KChfX3Y4aGYpX19BLCAoX192OGhmKV9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9tYXNrX21heF9waChfX20xMjhoIF9fVywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbW1hc2s4IF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGggX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0IpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfc2VsZWN0cGhfMTI4KAogICAgICAoX19tbWFzazgpX19VLCAoX192OGhmKV9fYnVpbHRpbl9pYTMyX21heHBoMTI4KChfX3Y4aGYpX19BLCAoX192OGhmKV9fQiksCiAgICAgIChfX3Y4aGYpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tX21hc2t6X21heF9waChfX21tYXNrOCBfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0IpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfc2VsZWN0cGhfMTI4KAogICAgICAoX19tbWFzazgpX19VLCAoX192OGhmKV9fYnVpbHRpbl9pYTMyX21heHBoMTI4KChfX3Y4aGYpX19BLCAoX192OGhmKV9fQiksCiAgICAgIChfX3Y4aGYpX21tX3NldHplcm9fcGgoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmggX19ERUZBVUxUX0ZOX0FUVFJTMjU2IF9tbTI1Nl9hYnNfcGgoX19tMjU2aCBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmgpX21tMjU2X2FuZF9lcGkzMihfbW0yNTZfc2V0MV9lcGkzMigweDdGRkY3RkZGKSwgKF9fbTI1NmkpX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tX2Fic19waChfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tMTI4aClfbW1fYW5kX2VwaTMyKF9tbV9zZXQxX2VwaTMyKDB4N0ZGRjdGRkYpLCAoX19tMTI4aSlfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZoIF9fREVGQVVMVF9GTl9BVFRSUzI1NiBfbW0yNTZfY29ual9wY2goX19tMjU2aCBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmgpX21tMjU2X3hvcl9wcygoX19tMjU2KV9fQSwgX21tMjU2X3NldDFfcHMoLTAuMGYpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfY29ual9wY2goX19tMjU2aCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2aCBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmgpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMjU2KAogICAgICAoX19tbWFzazgpX19VLCAoX192OHNmKV9tbTI1Nl9jb25qX3BjaChfX0EpLCAoX192OHNmKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmggX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9jb25qX3BjaChfX21tYXNrOCBfX1UsIF9fbTI1NmggX19BKSB7CiAgcmV0dXJuIChfX20yNTZoKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzI1NigKICAgICAgKF9fbW1hc2s4KV9fVSwgKF9fdjhzZilfbW0yNTZfY29ual9wY2goX19BKSwgKF9fdjhzZilfbW0yNTZfc2V0emVyb19wcygpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tX2NvbmpfcGNoKF9fbTEyOGggX19BKSB7CiAgcmV0dXJuIChfX20xMjhoKV9tbV94b3JfcHMoKF9fbTEyOClfX0EsIF9tbV9zZXQxX3BzKC0wLjBmKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9tYXNrX2NvbmpfcGNoKF9fbTEyOGggX19XLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX21tYXNrOCBfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGggX19BKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzEyOCgKICAgICAgKF9fbW1hc2s4KV9fVSwgKF9fdjRzZilfbW1fY29ual9wY2goX19BKSwgKF9fdjRzZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfY29ual9wY2goX19tbWFzazggX19VLCBfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18xMjgoCiAgICAgIChfX21tYXNrOClfX1UsIChfX3Y0c2YpX21tX2NvbmpfcGNoKF9fQSksIChfX3Y0c2YpX21tX3NldHplcm9fcHMoKSk7Cn0KCiNkZWZpbmUgX21tMjU2X2NtcF9waF9tYXNrKGEsIGIsIHApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX21tYXNrMTYpX19idWlsdGluX2lhMzJfY21wcGgyNTZfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3YxNmhmKShfX20yNTZoKShhKSwgKF9fdjE2aGYpKF9fbTI1NmgpKGIpLCAoaW50KShwKSwgKF9fbW1hc2sxNiktMSkpCgojZGVmaW5lIF9tbTI1Nl9tYXNrX2NtcF9waF9tYXNrKG0sIGEsIGIsIHApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tbWFzazE2KV9fYnVpbHRpbl9pYTMyX2NtcHBoMjU2X21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192MTZoZikoX19tMjU2aCkoYSksIChfX3YxNmhmKShfX20yNTZoKShiKSwgKGludCkocCksIChfX21tYXNrMTYpKG0pKSkKCiNkZWZpbmUgX21tX2NtcF9waF9tYXNrKGEsIGIsIHApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX21tYXNrOClfX2J1aWx0aW5faWEzMl9jbXBwaDEyOF9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3Y4aGYpKF9fbTEyOGgpKGEpLCAoX192OGhmKShfX20xMjhoKShiKSwgKGludCkocCksIChfX21tYXNrOCktMSkpCgojZGVmaW5lIF9tbV9tYXNrX2NtcF9waF9tYXNrKG0sIGEsIGIsIHApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tbWFzazgpX19idWlsdGluX2lhMzJfY21wcGgxMjhfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192OGhmKShfX20xMjhoKShhKSwgKF9fdjhoZikoX19tMTI4aCkoYiksIChpbnQpKHApLCAoX19tbWFzazgpKG0pKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmggX19ERUZBVUxUX0ZOX0FUVFJTMjU2IF9tbTI1Nl9yY3BfcGgoX19tMjU2aCBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmgpX19idWlsdGluX2lhMzJfcmNwcGgyNTZfbWFzaygKICAgICAgKF9fdjE2aGYpX19BLCAoX192MTZoZilfbW0yNTZfdW5kZWZpbmVkX3BoKCksIChfX21tYXNrMTYpLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZoIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19yY3BfcGgoX19tMjU2aCBfX1csIF9fbW1hc2sxNiBfX1UsIF9fbTI1NmggX19BKSB7CiAgcmV0dXJuIChfX20yNTZoKV9fYnVpbHRpbl9pYTMyX3JjcHBoMjU2X21hc2soKF9fdjE2aGYpX19BLCAoX192MTZoZilfX1csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNilfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZoIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfcmNwX3BoKF9fbW1hc2sxNiBfX1UsIF9fbTI1NmggX19BKSB7CiAgcmV0dXJuIChfX20yNTZoKV9fYnVpbHRpbl9pYTMyX3JjcHBoMjU2X21hc2soCiAgICAgIChfX3YxNmhmKV9fQSwgKF9fdjE2aGYpX21tMjU2X3NldHplcm9fcGgoKSwgKF9fbW1hc2sxNilfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfbW1fcmNwX3BoKF9fbTEyOGggX19BKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3JjcHBoMTI4X21hc2soCiAgICAgIChfX3Y4aGYpX19BLCAoX192OGhmKV9tbV91bmRlZmluZWRfcGgoKSwgKF9fbW1hc2s4KS0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tX21hc2tfcmNwX3BoKF9fbTEyOGggX19XLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tbWFzazggX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfcmNwcGgxMjhfbWFzaygoX192OGhmKV9fQSwgKF9fdjhoZilfX1csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KV9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9tYXNrel9yY3BfcGgoX19tbWFzazggX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGggX19BKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3JjcHBoMTI4X21hc2soCiAgICAgIChfX3Y4aGYpX19BLCAoX192OGhmKV9tbV9zZXR6ZXJvX3BoKCksIChfX21tYXNrOClfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZoIF9fREVGQVVMVF9GTl9BVFRSUzI1NiBfbW0yNTZfcnNxcnRfcGgoX19tMjU2aCBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmgpX19idWlsdGluX2lhMzJfcnNxcnRwaDI1Nl9tYXNrKAogICAgICAoX192MTZoZilfX0EsIChfX3YxNmhmKV9tbTI1Nl91bmRlZmluZWRfcGgoKSwgKF9fbW1hc2sxNiktMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmggX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX3JzcXJ0X3BoKF9fbTI1NmggX19XLCBfX21tYXNrMTYgX19VLCBfX20yNTZoIF9fQSkgewogIHJldHVybiAoX19tMjU2aClfX2J1aWx0aW5faWEzMl9yc3FydHBoMjU2X21hc2soKF9fdjE2aGYpX19BLCAoX192MTZoZilfX1csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KV9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmggX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9yc3FydF9waChfX21tYXNrMTYgX19VLCBfX20yNTZoIF9fQSkgewogIHJldHVybiAoX19tMjU2aClfX2J1aWx0aW5faWEzMl9yc3FydHBoMjU2X21hc2soCiAgICAgIChfX3YxNmhmKV9fQSwgKF9fdjE2aGYpX21tMjU2X3NldHplcm9fcGgoKSwgKF9fbW1hc2sxNilfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfbW1fcnNxcnRfcGgoX19tMTI4aCBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfcnNxcnRwaDEyOF9tYXNrKAogICAgICAoX192OGhmKV9fQSwgKF9fdjhoZilfbW1fdW5kZWZpbmVkX3BoKCksIChfX21tYXNrOCktMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9tYXNrX3JzcXJ0X3BoKF9fbTEyOGggX19XLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX21tYXNrOCBfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGggX19BKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3JzcXJ0cGgxMjhfbWFzaygoX192OGhmKV9fQSwgKF9fdjhoZilfX1csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X3JzcXJ0X3BoKF9fbW1hc2s4IF9fVSwgX19tMTI4aCBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfcnNxcnRwaDEyOF9tYXNrKAogICAgICAoX192OGhmKV9fQSwgKF9fdjhoZilfbW1fc2V0emVyb19waCgpLCAoX19tbWFzazgpX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tX2dldGV4cF9waChfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl9nZXRleHBwaDEyOF9tYXNrKAogICAgICAoX192OGhmKV9fQSwgKF9fdjhoZilfbW1fc2V0emVyb19waCgpLCAoX19tbWFzazgpLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19nZXRleHBfcGgoX19tMTI4aCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aCBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfZ2V0ZXhwcGgxMjhfbWFzaygoX192OGhmKV9fQSwgKF9fdjhoZilfX1csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KV9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9nZXRleHBfcGgoX19tbWFzazggX19VLCBfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl9nZXRleHBwaDEyOF9tYXNrKAogICAgICAoX192OGhmKV9fQSwgKF9fdjhoZilfbW1fc2V0emVyb19waCgpLCAoX19tbWFzazgpX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYgX21tMjU2X2dldGV4cF9waChfX20yNTZoIF9fQSkgewogIHJldHVybiAoX19tMjU2aClfX2J1aWx0aW5faWEzMl9nZXRleHBwaDI1Nl9tYXNrKAogICAgICAoX192MTZoZilfX0EsIChfX3YxNmhmKV9tbTI1Nl9zZXR6ZXJvX3BoKCksIChfX21tYXNrMTYpLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZoIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19nZXRleHBfcGgoX19tMjU2aCBfX1csIF9fbW1hc2sxNiBfX1UsIF9fbTI1NmggX19BKSB7CiAgcmV0dXJuIChfX20yNTZoKV9fYnVpbHRpbl9pYTMyX2dldGV4cHBoMjU2X21hc2soKF9fdjE2aGYpX19BLCAoX192MTZoZilfX1csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNilfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZoIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfZ2V0ZXhwX3BoKF9fbW1hc2sxNiBfX1UsIF9fbTI1NmggX19BKSB7CiAgcmV0dXJuIChfX20yNTZoKV9fYnVpbHRpbl9pYTMyX2dldGV4cHBoMjU2X21hc2soCiAgICAgIChfX3YxNmhmKV9fQSwgKF9fdjE2aGYpX21tMjU2X3NldHplcm9fcGgoKSwgKF9fbW1hc2sxNilfX1UpOwp9CgojZGVmaW5lIF9tbV9nZXRtYW50X3BoKEEsIEIsIEMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tMTI4aClfX2J1aWx0aW5faWEzMl9nZXRtYW50cGgxMjhfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192OGhmKShfX20xMjhoKShBKSwgKGludCkoKChDKSA8PCAyKSB8IChCKSksIChfX3Y4aGYpX21tX3NldHplcm9fcGgoKSwgXAogICAgICAoX19tbWFzazgpLTEpKQoKI2RlZmluZSBfbW1fbWFza19nZXRtYW50X3BoKFcsIFUsIEEsIEIsIEMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTEyOGgpX19idWlsdGluX2lhMzJfZ2V0bWFudHBoMTI4X21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjhoZikoX19tMTI4aCkoQSksIChpbnQpKCgoQykgPDwgMikgfCAoQikpLCAoX192OGhmKShfX20xMjhoKShXKSwgICAgIFwKICAgICAgKF9fbW1hc2s4KShVKSkpCgojZGVmaW5lIF9tbV9tYXNrel9nZXRtYW50X3BoKFUsIEEsIEIsIEMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tMTI4aClfX2J1aWx0aW5faWEzMl9nZXRtYW50cGgxMjhfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192OGhmKShfX20xMjhoKShBKSwgKGludCkoKChDKSA8PCAyKSB8IChCKSksIChfX3Y4aGYpX21tX3NldHplcm9fcGgoKSwgXAogICAgICAoX19tbWFzazgpKFUpKSkKCiNkZWZpbmUgX21tMjU2X2dldG1hbnRfcGgoQSwgQiwgQykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX20yNTZoKV9fYnVpbHRpbl9pYTMyX2dldG1hbnRwaDI1Nl9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3YxNmhmKShfX20yNTZoKShBKSwgKGludCkoKChDKSA8PCAyKSB8IChCKSksICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3YxNmhmKV9tbTI1Nl9zZXR6ZXJvX3BoKCksIChfX21tYXNrMTYpLTEpKQoKI2RlZmluZSBfbW0yNTZfbWFza19nZXRtYW50X3BoKFcsIFUsIEEsIEIsIEMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTI1NmgpX19idWlsdGluX2lhMzJfZ2V0bWFudHBoMjU2X21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjE2aGYpKF9fbTI1NmgpKEEpLCAoaW50KSgoKEMpIDw8IDIpIHwgKEIpKSwgKF9fdjE2aGYpKF9fbTI1NmgpKFcpLCAgIFwKICAgICAgKF9fbW1hc2sxNikoVSkpKQoKI2RlZmluZSBfbW0yNTZfbWFza3pfZ2V0bWFudF9waChVLCBBLCBCLCBDKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTI1NmgpX19idWlsdGluX2lhMzJfZ2V0bWFudHBoMjU2X21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjE2aGYpKF9fbTI1NmgpKEEpLCAoaW50KSgoKEMpIDw8IDIpIHwgKEIpKSwgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjE2aGYpX21tMjU2X3NldHplcm9fcGgoKSwgKF9fbW1hc2sxNikoVSkpKQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tX3NjYWxlZl9waChfX20xMjhoIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQikgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl9zY2FsZWZwaDEyOF9tYXNrKAogICAgICAoX192OGhmKV9fQSwgKF9fdjhoZilfX0IsIChfX3Y4aGYpX21tX3NldHplcm9fcGgoKSwgKF9fbW1hc2s4KS0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfc2NhbGVmX3BoKF9fbTEyOGggX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGggX19BLCBfX20xMjhoIF9fQikgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl9zY2FsZWZwaDEyOF9tYXNrKChfX3Y4aGYpX19BLCAoX192OGhmKV9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhmKV9fVywgKF9fbW1hc2s4KV9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9zY2FsZWZfcGgoX19tbWFzazggX19VLCBfX20xMjhoIF9fQSwgX19tMTI4aCBfX0IpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfc2NhbGVmcGgxMjhfbWFzaygKICAgICAgKF9fdjhoZilfX0EsIChfX3Y4aGYpX19CLCAoX192OGhmKV9tbV9zZXR6ZXJvX3BoKCksIChfX21tYXNrOClfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZoIF9fREVGQVVMVF9GTl9BVFRSUzI1NiBfbW0yNTZfc2NhbGVmX3BoKF9fbTI1NmggX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTI1NmggX19CKSB7CiAgcmV0dXJuIChfX20yNTZoKV9fYnVpbHRpbl9pYTMyX3NjYWxlZnBoMjU2X21hc2soCiAgICAgIChfX3YxNmhmKV9fQSwgKF9fdjE2aGYpX19CLCAoX192MTZoZilfbW0yNTZfc2V0emVyb19waCgpLCAoX19tbWFzazE2KS0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfc2NhbGVmX3BoKF9fbTI1NmggX19XLCBfX21tYXNrMTYgX19VLCBfX20yNTZoIF9fQSwgX19tMjU2aCBfX0IpIHsKICByZXR1cm4gKF9fbTI1NmgpX19idWlsdGluX2lhMzJfc2NhbGVmcGgyNTZfbWFzaygoX192MTZoZilfX0EsIChfX3YxNmhmKV9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoZilfX1csIChfX21tYXNrMTYpX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X3NjYWxlZl9waChfX21tYXNrMTYgX19VLCBfX20yNTZoIF9fQSwgX19tMjU2aCBfX0IpIHsKICByZXR1cm4gKF9fbTI1NmgpX19idWlsdGluX2lhMzJfc2NhbGVmcGgyNTZfbWFzaygKICAgICAgKF9fdjE2aGYpX19BLCAoX192MTZoZilfX0IsIChfX3YxNmhmKV9tbTI1Nl9zZXR6ZXJvX3BoKCksIChfX21tYXNrMTYpX19VKTsKfQoKI2RlZmluZSBfbW1fcm91bmRzY2FsZV9waChBLCBpbW0pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTEyOGgpX19idWlsdGluX2lhMzJfcm5kc2NhbGVwaF8xMjhfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjhoZikoX19tMTI4aCkoQSksIChpbnQpKGltbSksIChfX3Y4aGYpX21tX3NldHplcm9fcGgoKSwgICAgICAgICAgICAgIFwKICAgICAgKF9fbW1hc2s4KS0xKSkKCiNkZWZpbmUgX21tX21hc2tfcm91bmRzY2FsZV9waChXLCBVLCBBLCBpbW0pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3JuZHNjYWxlcGhfMTI4X21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3Y4aGYpKF9fbTEyOGgpKEEpLCAoaW50KShpbW0pLCAoX192OGhmKShfX20xMjhoKShXKSwgKF9fbW1hc2s4KShVKSkpCgojZGVmaW5lIF9tbV9tYXNrel9yb3VuZHNjYWxlX3BoKFUsIEEsIGltbSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tMTI4aClfX2J1aWx0aW5faWEzMl9ybmRzY2FsZXBoXzEyOF9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192OGhmKShfX20xMjhoKShBKSwgKGludCkoaW1tKSwgKF9fdjhoZilfbW1fc2V0emVyb19waCgpLCAgICAgICAgICAgICAgXAogICAgICAoX19tbWFzazgpKFUpKSkKCiNkZWZpbmUgX21tMjU2X3JvdW5kc2NhbGVfcGgoQSwgaW1tKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX20yNTZoKV9fYnVpbHRpbl9pYTMyX3JuZHNjYWxlcGhfMjU2X21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3YxNmhmKShfX20yNTZoKShBKSwgKGludCkoaW1tKSwgKF9fdjE2aGYpX21tMjU2X3NldHplcm9fcGgoKSwgICAgICAgICBcCiAgICAgIChfX21tYXNrMTYpLTEpKQoKI2RlZmluZSBfbW0yNTZfbWFza19yb3VuZHNjYWxlX3BoKFcsIFUsIEEsIGltbSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTI1NmgpX19idWlsdGluX2lhMzJfcm5kc2NhbGVwaF8yNTZfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjE2aGYpKF9fbTI1NmgpKEEpLCAoaW50KShpbW0pLCAoX192MTZoZikoX19tMjU2aCkoVyksICAgICAgICAgICAgICAgIFwKICAgICAgKF9fbW1hc2sxNikoVSkpKQoKI2RlZmluZSBfbW0yNTZfbWFza3pfcm91bmRzY2FsZV9waChVLCBBLCBpbW0pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTI1NmgpX19idWlsdGluX2lhMzJfcm5kc2NhbGVwaF8yNTZfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjE2aGYpKF9fbTI1NmgpKEEpLCAoaW50KShpbW0pLCAoX192MTZoZilfbW0yNTZfc2V0emVyb19waCgpLCAgICAgICAgIFwKICAgICAgKF9fbW1hc2sxNikoVSkpKQoKI2RlZmluZSBfbW1fcmVkdWNlX3BoKEEsIGltbSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTEyOGgpX19idWlsdGluX2lhMzJfcmVkdWNlcGgxMjhfbWFzaygoX192OGhmKShfX20xMjhoKShBKSwgKGludCkoaW1tKSwgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhmKV9tbV9zZXR6ZXJvX3BoKCksICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEpKQoKI2RlZmluZSBfbW1fbWFza19yZWR1Y2VfcGgoVywgVSwgQSwgaW1tKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTEyOGgpX19idWlsdGluX2lhMzJfcmVkdWNlcGgxMjhfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjhoZikoX19tMTI4aCkoQSksIChpbnQpKGltbSksIChfX3Y4aGYpKF9fbTEyOGgpKFcpLCAoX19tbWFzazgpKFUpKSkKCiNkZWZpbmUgX21tX21hc2t6X3JlZHVjZV9waChVLCBBLCBpbW0pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3JlZHVjZXBoMTI4X21hc2soKF9fdjhoZikoX19tMTI4aCkoQSksIChpbnQpKGltbSksICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoZilfbW1fc2V0emVyb19waCgpLCAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSkpCgojZGVmaW5lIF9tbTI1Nl9yZWR1Y2VfcGgoQSwgaW1tKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tMjU2aClfX2J1aWx0aW5faWEzMl9yZWR1Y2VwaDI1Nl9tYXNrKChfX3YxNmhmKShfX20yNTZoKShBKSwgKGludCkoaW1tKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhmKV9tbTI1Nl9zZXR6ZXJvX3BoKCksICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpLTEpKQoKI2RlZmluZSBfbW0yNTZfbWFza19yZWR1Y2VfcGgoVywgVSwgQSwgaW1tKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTI1NmgpX19idWlsdGluX2lhMzJfcmVkdWNlcGgyNTZfbWFzaygoX192MTZoZikoX19tMjU2aCkoQSksIChpbnQpKGltbSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoZikoX19tMjU2aCkoVyksICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KShVKSkpCgojZGVmaW5lIF9tbTI1Nl9tYXNrel9yZWR1Y2VfcGgoVSwgQSwgaW1tKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tMjU2aClfX2J1aWx0aW5faWEzMl9yZWR1Y2VwaDI1Nl9tYXNrKChfX3YxNmhmKShfX20yNTZoKShBKSwgKGludCkoaW1tKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhmKV9tbTI1Nl9zZXR6ZXJvX3BoKCksICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpKFUpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9zcXJ0X3BoKF9fbTEyOGggX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3NxcnRwaCgoX192OGhmKV9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9tYXNrX3NxcnRfcGgoX19tMTI4aCBfX1csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tbWFzazggX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGggX19BKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBoXzEyOCgKICAgICAgKF9fbW1hc2s4KV9fVSwgKF9fdjhoZilfbW1fc3FydF9waChfX0EpLCAoX192OGhmKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9tYXNrel9zcXJ0X3BoKF9fbW1hc2s4IF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfc2VsZWN0cGhfMTI4KAogICAgICAoX19tbWFzazgpX19VLCAoX192OGhmKV9tbV9zcXJ0X3BoKF9fQSksIChfX3Y4aGYpX21tX3NldHplcm9fcGgoKSk7Cn0KCnN0YXRpYyBfX2lubGluZSBfX20yNTZoIF9fREVGQVVMVF9GTl9BVFRSUzI1NiBfbW0yNTZfc3FydF9waChfX20yNTZoIF9fYSkgewogIHJldHVybiAoX19tMjU2aClfX2J1aWx0aW5faWEzMl9zcXJ0cGgyNTYoKF9fdjE2aGYpX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfc3FydF9waChfX20yNTZoIF9fVywgX19tbWFzazE2IF9fVSwgX19tMjU2aCBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmgpX19idWlsdGluX2lhMzJfc2VsZWN0cGhfMjU2KAogICAgICAoX19tbWFzazE2KV9fVSwgKF9fdjE2aGYpX21tMjU2X3NxcnRfcGgoX19BKSwgKF9fdjE2aGYpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X3NxcnRfcGgoX19tbWFzazE2IF9fVSwgX19tMjU2aCBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmgpX19idWlsdGluX2lhMzJfc2VsZWN0cGhfMjU2KChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGYpX21tMjU2X3NxcnRfcGgoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhmKV9tbTI1Nl9zZXR6ZXJvX3BoKCkpOwp9CgojZGVmaW5lIF9tbV9tYXNrX2ZwY2xhc3NfcGhfbWFzayhVLCBBLCBpbW0pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tbWFzazgpX19idWlsdGluX2lhMzJfZnBjbGFzc3BoMTI4X21hc2soKF9fdjhoZikoX19tMTI4aCkoQSksICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoaW1tKSwgKF9fbW1hc2s4KShVKSkpCgojZGVmaW5lIF9tbV9mcGNsYXNzX3BoX21hc2soQSwgaW1tKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tbWFzazgpX19idWlsdGluX2lhMzJfZnBjbGFzc3BoMTI4X21hc2soKF9fdjhoZikoX19tMTI4aCkoQSksICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoaW1tKSwgKF9fbW1hc2s4KS0xKSkKCiNkZWZpbmUgX21tMjU2X21hc2tfZnBjbGFzc19waF9tYXNrKFUsIEEsIGltbSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX21tYXNrMTYpX19idWlsdGluX2lhMzJfZnBjbGFzc3BoMjU2X21hc2soKF9fdjE2aGYpKF9fbTI1NmgpKEEpLCAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoaW1tKSwgKF9fbW1hc2sxNikoVSkpKQoKI2RlZmluZSBfbW0yNTZfZnBjbGFzc19waF9tYXNrKEEsIGltbSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbW1hc2sxNilfX2J1aWx0aW5faWEzMl9mcGNsYXNzcGgyNTZfbWFzaygoX192MTZoZikoX19tMjU2aCkoQSksICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShpbW0pLCAoX19tbWFzazE2KS0xKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9jdnRwZF9waChfX20xMjhkIF9fQSkgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl92Y3Z0cGQycGgxMjhfbWFzaygKICAgICAgKF9fdjJkZilfX0EsIChfX3Y4aGYpX21tX3VuZGVmaW5lZF9waCgpLCAoX19tbWFzazgpLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfbW1fbWFza19jdnRwZF9waChfX20xMjhoIF9fVywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tbWFzazggX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhkIF9fQSkgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl92Y3Z0cGQycGgxMjhfbWFzaygoX192MmRmKV9fQSwgKF9fdjhoZilfX1csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOClfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfY3Z0cGRfcGgoX19tbWFzazggX19VLCBfX20xMjhkIF9fQSkgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl92Y3Z0cGQycGgxMjhfbWFzaygKICAgICAgKF9fdjJkZilfX0EsIChfX3Y4aGYpX21tX3NldHplcm9fcGgoKSwgKF9fbW1hc2s4KV9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMjU2IF9tbTI1Nl9jdnRwZF9waChfX20yNTZkIF9fQSkgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl92Y3Z0cGQycGgyNTZfbWFzaygKICAgICAgKF9fdjRkZilfX0EsIChfX3Y4aGYpX21tX3VuZGVmaW5lZF9waCgpLCAoX19tbWFzazgpLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19jdnRwZF9waChfX20xMjhoIF9fVywgX19tbWFzazggX19VLCBfX20yNTZkIF9fQSkgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl92Y3Z0cGQycGgyNTZfbWFzaygoX192NGRmKV9fQSwgKF9fdjhoZilfX1csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOClfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfY3Z0cGRfcGgoX19tbWFzazggX19VLCBfX20yNTZkIF9fQSkgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl92Y3Z0cGQycGgyNTZfbWFzaygKICAgICAgKF9fdjRkZilfX0EsIChfX3Y4aGYpX21tX3NldHplcm9fcGgoKSwgKF9fbW1hc2s4KV9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9jdnRwaF9wZChfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl92Y3Z0cGgycGQxMjhfbWFzaygKICAgICAgKF9fdjhoZilfX0EsIChfX3YyZGYpX21tX3VuZGVmaW5lZF9wZCgpLCAoX19tbWFzazgpLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfbW1fbWFza19jdnRwaF9wZChfX20xMjhkIF9fVywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tbWFzazggX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl92Y3Z0cGgycGQxMjhfbWFzaygoX192OGhmKV9fQSwgKF9fdjJkZilfX1csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOClfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfY3Z0cGhfcGQoX19tbWFzazggX19VLCBfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl92Y3Z0cGgycGQxMjhfbWFzaygKICAgICAgKF9fdjhoZilfX0EsIChfX3YyZGYpX21tX3NldHplcm9fcGQoKSwgKF9fbW1hc2s4KV9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2IF9tbTI1Nl9jdnRwaF9wZChfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tMjU2ZClfX2J1aWx0aW5faWEzMl92Y3Z0cGgycGQyNTZfbWFzaygKICAgICAgKF9fdjhoZilfX0EsIChfX3Y0ZGYpX21tMjU2X3VuZGVmaW5lZF9wZCgpLCAoX19tbWFzazgpLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19jdnRwaF9wZChfX20yNTZkIF9fVywgX19tbWFzazggX19VLCBfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tMjU2ZClfX2J1aWx0aW5faWEzMl92Y3Z0cGgycGQyNTZfbWFzaygoX192OGhmKV9fQSwgKF9fdjRkZilfX1csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOClfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfY3Z0cGhfcGQoX19tbWFzazggX19VLCBfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tMjU2ZClfX2J1aWx0aW5faWEzMl92Y3Z0cGgycGQyNTZfbWFzaygKICAgICAgKF9fdjhoZilfX0EsIChfX3Y0ZGYpX21tMjU2X3NldHplcm9fcGQoKSwgKF9fbW1hc2s4KV9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9jdnRwaF9lcGkxNihfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92Y3Z0cGgydzEyOF9tYXNrKAogICAgICAoX192OGhmKV9fQSwgKF9fdjhoaSlfbW1fdW5kZWZpbmVkX3NpMTI4KCksIChfX21tYXNrOCktMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2N2dHBoX2VwaTE2KF9fbTEyOGkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGggX19BKSB7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3ZjdnRwaDJ3MTI4X21hc2soKF9fdjhoZilfX0EsIChfX3Y4aGkpX19XLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOClfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfY3Z0cGhfZXBpMTYoX19tbWFzazggX19VLCBfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92Y3Z0cGgydzEyOF9tYXNrKAogICAgICAoX192OGhmKV9fQSwgKF9fdjhoaSlfbW1fc2V0emVyb19zaTEyOCgpLCAoX19tbWFzazgpX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2N2dHBoX2VwaTE2KF9fbTI1NmggX19BKSB7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3ZjdnRwaDJ3MjU2X21hc2soCiAgICAgIChfX3YxNmhmKV9fQSwgKF9fdjE2aGkpX21tMjU2X3VuZGVmaW5lZF9zaTI1NigpLCAoX19tbWFzazE2KS0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfY3Z0cGhfZXBpMTYoX19tMjU2aSBfX1csIF9fbW1hc2sxNiBfX1UsIF9fbTI1NmggX19BKSB7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3ZjdnRwaDJ3MjU2X21hc2soKF9fdjE2aGYpX19BLCAoX192MTZoaSlfX1csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNilfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfY3Z0cGhfZXBpMTYoX19tbWFzazE2IF9fVSwgX19tMjU2aCBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfdmN2dHBoMncyNTZfbWFzaygKICAgICAgKF9fdjE2aGYpX19BLCAoX192MTZoaSlfbW0yNTZfc2V0emVyb19zaTI1NigpLCAoX19tbWFzazE2KV9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9jdnR0cGhfZXBpMTYoX19tMTI4aCBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdmN2dHRwaDJ3MTI4X21hc2soCiAgICAgIChfX3Y4aGYpX19BLCAoX192OGhpKV9tbV91bmRlZmluZWRfc2kxMjgoKSwgKF9fbW1hc2s4KS0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfY3Z0dHBoX2VwaTE2KF9fbTEyOGkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGggX19BKSB7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3ZjdnR0cGgydzEyOF9tYXNrKChfX3Y4aGYpX19BLCAoX192OGhpKV9fVywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KV9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9jdnR0cGhfZXBpMTYoX19tbWFzazggX19VLCBfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92Y3Z0dHBoMncxMjhfbWFzaygKICAgICAgKF9fdjhoZilfX0EsIChfX3Y4aGkpX21tX3NldHplcm9fc2kxMjgoKSwgKF9fbW1hc2s4KV9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9jdnR0cGhfZXBpMTYoX19tMjU2aCBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfdmN2dHRwaDJ3MjU2X21hc2soCiAgICAgIChfX3YxNmhmKV9fQSwgKF9fdjE2aGkpX21tMjU2X3VuZGVmaW5lZF9zaTI1NigpLCAoX19tbWFzazE2KS0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfY3Z0dHBoX2VwaTE2KF9fbTI1NmkgX19XLCBfX21tYXNrMTYgX19VLCBfX20yNTZoIF9fQSkgewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl92Y3Z0dHBoMncyNTZfbWFzaygoX192MTZoZilfX0EsIChfX3YxNmhpKV9fVywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNilfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfY3Z0dHBoX2VwaTE2KF9fbW1hc2sxNiBfX1UsIF9fbTI1NmggX19BKSB7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3ZjdnR0cGgydzI1Nl9tYXNrKAogICAgICAoX192MTZoZilfX0EsIChfX3YxNmhpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCksIChfX21tYXNrMTYpX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tX2N2dGVwaTE2X3BoKF9fbTEyOGkgX19BKSB7CiAgcmV0dXJuIChfX20xMjhoKSBfX2J1aWx0aW5fY29udmVydHZlY3RvcigoX192OGhpKV9fQSwgX192OGhmKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfY3Z0ZXBpMTZfcGgoX19tMTI4aCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfc2VsZWN0cGhfMTI4KAogICAgICAoX19tbWFzazgpX19VLCAoX192OGhmKV9tbV9jdnRlcGkxNl9waChfX0EpLCAoX192OGhmKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9jdnRlcGkxNl9waChfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBoXzEyOCgKICAgICAgKF9fbW1hc2s4KV9fVSwgKF9fdjhoZilfbW1fY3Z0ZXBpMTZfcGgoX19BKSwgKF9fdjhoZilfbW1fc2V0emVyb19waCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2N2dGVwaTE2X3BoKF9fbTI1NmkgX19BKSB7CiAgcmV0dXJuIChfX20yNTZoKSBfX2J1aWx0aW5fY29udmVydHZlY3RvcigoX192MTZoaSlfX0EsIF9fdjE2aGYpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZoIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19jdnRlcGkxNl9waChfX20yNTZoIF9fVywgX19tbWFzazE2IF9fVSwgX19tMjU2aSBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmgpX19idWlsdGluX2lhMzJfc2VsZWN0cGhfMjU2KAogICAgICAoX19tbWFzazE2KV9fVSwgKF9fdjE2aGYpX21tMjU2X2N2dGVwaTE2X3BoKF9fQSksIChfX3YxNmhmKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmggX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9jdnRlcGkxNl9waChfX21tYXNrMTYgX19VLCBfX20yNTZpIF9fQSkgewogIHJldHVybiAoX19tMjU2aClfX2J1aWx0aW5faWEzMl9zZWxlY3RwaF8yNTYoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoZilfbW0yNTZfY3Z0ZXBpMTZfcGgoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhmKV9tbTI1Nl9zZXR6ZXJvX3BoKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfbW1fY3Z0cGhfZXB1MTYoX19tMTI4aCBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdmN2dHBoMnV3MTI4X21hc2soCiAgICAgIChfX3Y4aGYpX19BLCAoX192OGh1KV9tbV91bmRlZmluZWRfc2kxMjgoKSwgKF9fbW1hc2s4KS0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfY3Z0cGhfZXB1MTYoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aCBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdmN2dHBoMnV3MTI4X21hc2soKF9fdjhoZilfX0EsIChfX3Y4aHUpX19XLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2N2dHBoX2VwdTE2KF9fbW1hc2s4IF9fVSwgX19tMTI4aCBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdmN2dHBoMnV3MTI4X21hc2soCiAgICAgIChfX3Y4aGYpX19BLCAoX192OGh1KV9tbV9zZXR6ZXJvX3NpMTI4KCksIChfX21tYXNrOClfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfY3Z0cGhfZXB1MTYoX19tMjU2aCBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfdmN2dHBoMnV3MjU2X21hc2soCiAgICAgIChfX3YxNmhmKV9fQSwgKF9fdjE2aHUpX21tMjU2X3VuZGVmaW5lZF9zaTI1NigpLCAoX19tbWFzazE2KS0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfY3Z0cGhfZXB1MTYoX19tMjU2aSBfX1csIF9fbW1hc2sxNiBfX1UsIF9fbTI1NmggX19BKSB7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3ZjdnRwaDJ1dzI1Nl9tYXNrKChfX3YxNmhmKV9fQSwgKF9fdjE2aHUpX19XLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KV9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9jdnRwaF9lcHUxNihfX21tYXNrMTYgX19VLCBfX20yNTZoIF9fQSkgewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl92Y3Z0cGgydXcyNTZfbWFzaygKICAgICAgKF9fdjE2aGYpX19BLCAoX192MTZodSlfbW0yNTZfc2V0emVyb19zaTI1NigpLCAoX19tbWFzazE2KV9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9jdnR0cGhfZXB1MTYoX19tMTI4aCBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdmN2dHRwaDJ1dzEyOF9tYXNrKAogICAgICAoX192OGhmKV9fQSwgKF9fdjhodSlfbW1fdW5kZWZpbmVkX3NpMTI4KCksIChfX21tYXNrOCktMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2N2dHRwaF9lcHUxNihfX20xMjhpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92Y3Z0dHBoMnV3MTI4X21hc2soKF9fdjhoZilfX0EsIChfX3Y4aHUpX19XLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KV9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9jdnR0cGhfZXB1MTYoX19tbWFzazggX19VLCBfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92Y3Z0dHBoMnV3MTI4X21hc2soCiAgICAgIChfX3Y4aGYpX19BLCAoX192OGh1KV9tbV9zZXR6ZXJvX3NpMTI4KCksIChfX21tYXNrOClfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfY3Z0dHBoX2VwdTE2KF9fbTI1NmggX19BKSB7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3ZjdnR0cGgydXcyNTZfbWFzaygKICAgICAgKF9fdjE2aGYpX19BLCAoX192MTZodSlfbW0yNTZfdW5kZWZpbmVkX3NpMjU2KCksIChfX21tYXNrMTYpLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19jdnR0cGhfZXB1MTYoX19tMjU2aSBfX1csIF9fbW1hc2sxNiBfX1UsIF9fbTI1NmggX19BKSB7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3ZjdnR0cGgydXcyNTZfbWFzaygoX192MTZoZilfX0EsIChfX3YxNmh1KV9fVywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2N2dHRwaF9lcHUxNihfX21tYXNrMTYgX19VLCBfX20yNTZoIF9fQSkgewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl92Y3Z0dHBoMnV3MjU2X21hc2soCiAgICAgIChfX3YxNmhmKV9fQSwgKF9fdjE2aHUpX21tMjU2X3NldHplcm9fc2kyNTYoKSwgKF9fbW1hc2sxNilfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfbW1fY3Z0ZXB1MTZfcGgoX19tMTI4aSBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGgpIF9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKChfX3Y4aHUpX19BLCBfX3Y4aGYpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19jdnRlcHUxNl9waChfX20xMjhoIF9fVywgX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl9zZWxlY3RwaF8xMjgoCiAgICAgIChfX21tYXNrOClfX1UsIChfX3Y4aGYpX21tX2N2dGVwdTE2X3BoKF9fQSksIChfX3Y4aGYpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2N2dGVwdTE2X3BoKF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfc2VsZWN0cGhfMTI4KAogICAgICAoX19tbWFzazgpX19VLCAoX192OGhmKV9tbV9jdnRlcHUxNl9waChfX0EpLCAoX192OGhmKV9tbV9zZXR6ZXJvX3BoKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZoIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfY3Z0ZXB1MTZfcGgoX19tMjU2aSBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmgpIF9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKChfX3YxNmh1KV9fQSwgX192MTZoZik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmggX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2N2dGVwdTE2X3BoKF9fbTI1NmggX19XLCBfX21tYXNrMTYgX19VLCBfX20yNTZpIF9fQSkgewogIHJldHVybiAoX19tMjU2aClfX2J1aWx0aW5faWEzMl9zZWxlY3RwaF8yNTYoCiAgICAgIChfX21tYXNrMTYpX19VLCAoX192MTZoZilfbW0yNTZfY3Z0ZXB1MTZfcGgoX19BKSwgKF9fdjE2aGYpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2N2dGVwdTE2X3BoKF9fbW1hc2sxNiBfX1UsIF9fbTI1NmkgX19BKSB7CiAgcmV0dXJuIChfX20yNTZoKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBoXzI1NigoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhmKV9tbTI1Nl9jdnRlcHUxNl9waChfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGYpX21tMjU2X3NldHplcm9fcGgoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9jdnRwaF9lcGkzMihfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92Y3Z0cGgyZHExMjhfbWFzaygKICAgICAgKF9fdjhoZilfX0EsIChfX3Y0c2kpX21tX3VuZGVmaW5lZF9zaTEyOCgpLCAoX19tbWFzazgpLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19jdnRwaF9lcGkzMihfX20xMjhpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92Y3Z0cGgyZHExMjhfbWFzaygoX192OGhmKV9fQSwgKF9fdjRzaSlfX1csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOClfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfY3Z0cGhfZXBpMzIoX19tbWFzazggX19VLCBfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92Y3Z0cGgyZHExMjhfbWFzaygKICAgICAgKF9fdjhoZilfX0EsIChfX3Y0c2kpX21tX3NldHplcm9fc2kxMjgoKSwgKF9fbW1hc2s4KV9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9jdnRwaF9lcGkzMihfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl92Y3Z0cGgyZHEyNTZfbWFzaygKICAgICAgKF9fdjhoZilfX0EsIChfX3Y4c2kpX21tMjU2X3VuZGVmaW5lZF9zaTI1NigpLCAoX19tbWFzazgpLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19jdnRwaF9lcGkzMihfX20yNTZpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl92Y3Z0cGgyZHEyNTZfbWFzaygoX192OGhmKV9fQSwgKF9fdjhzaSlfX1csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOClfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfY3Z0cGhfZXBpMzIoX19tbWFzazggX19VLCBfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl92Y3Z0cGgyZHEyNTZfbWFzaygKICAgICAgKF9fdjhoZilfX0EsIChfX3Y4c2kpX21tMjU2X3NldHplcm9fc2kyNTYoKSwgKF9fbW1hc2s4KV9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9jdnRwaF9lcHUzMihfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92Y3Z0cGgydWRxMTI4X21hc2soCiAgICAgIChfX3Y4aGYpX19BLCAoX192NHN1KV9tbV91bmRlZmluZWRfc2kxMjgoKSwgKF9fbW1hc2s4KS0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfY3Z0cGhfZXB1MzIoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aCBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdmN2dHBoMnVkcTEyOF9tYXNrKChfX3Y4aGYpX19BLCAoX192NHN1KV9fVywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOClfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfY3Z0cGhfZXB1MzIoX19tbWFzazggX19VLCBfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92Y3Z0cGgydWRxMTI4X21hc2soCiAgICAgIChfX3Y4aGYpX19BLCAoX192NHN1KV9tbV9zZXR6ZXJvX3NpMTI4KCksIChfX21tYXNrOClfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfY3Z0cGhfZXB1MzIoX19tMTI4aCBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfdmN2dHBoMnVkcTI1Nl9tYXNrKAogICAgICAoX192OGhmKV9fQSwgKF9fdjhzdSlfbW0yNTZfdW5kZWZpbmVkX3NpMjU2KCksIChfX21tYXNrOCktMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2N2dHBoX2VwdTMyKF9fbTI1NmkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGggX19BKSB7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3ZjdnRwaDJ1ZHEyNTZfbWFzaygoX192OGhmKV9fQSwgKF9fdjhzdSlfX1csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2N2dHBoX2VwdTMyKF9fbW1hc2s4IF9fVSwgX19tMTI4aCBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfdmN2dHBoMnVkcTI1Nl9tYXNrKAogICAgICAoX192OGhmKV9fQSwgKF9fdjhzdSlfbW0yNTZfc2V0emVyb19zaTI1NigpLCAoX19tbWFzazgpX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tX2N2dGVwaTMyX3BoKF9fbTEyOGkgX19BKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZjdnRkcTJwaDEyOF9tYXNrKAogICAgICAoX192NHNpKV9fQSwgKF9fdjhoZilfbW1fdW5kZWZpbmVkX3BoKCksIChfX21tYXNrOCktMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2N2dGVwaTMyX3BoKF9fbTEyOGggX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZjdnRkcTJwaDEyOF9tYXNrKChfX3Y0c2kpX19BLCAoX192OGhmKV9fVywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KV9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9jdnRlcGkzMl9waChfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZjdnRkcTJwaDEyOF9tYXNrKAogICAgICAoX192NHNpKV9fQSwgKF9fdjhoZilfbW1fc2V0emVyb19waCgpLCAoX19tbWFzazgpX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2N2dGVwaTMyX3BoKF9fbTI1NmkgX19BKSB7CiAgcmV0dXJuIChfX20xMjhoKSBfX2J1aWx0aW5fY29udmVydHZlY3RvcigoX192OHNpKV9fQSwgX192OGhmKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfY3Z0ZXBpMzJfcGgoX19tMTI4aCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfc2VsZWN0cGhfMTI4KAogICAgICAoX19tbWFzazgpX19VLCAoX192OGhmKV9tbTI1Nl9jdnRlcGkzMl9waChfX0EpLCAoX192OGhmKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9jdnRlcGkzMl9waChfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19BKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBoXzEyOCgKICAgICAgKF9fbW1hc2s4KV9fVSwgKF9fdjhoZilfbW0yNTZfY3Z0ZXBpMzJfcGgoX19BKSwgKF9fdjhoZilfbW1fc2V0emVyb19waCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tX2N2dGVwdTMyX3BoKF9fbTEyOGkgX19BKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZjdnR1ZHEycGgxMjhfbWFzaygKICAgICAgKF9fdjRzdSlfX0EsIChfX3Y4aGYpX21tX3VuZGVmaW5lZF9waCgpLCAoX19tbWFzazgpLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19jdnRlcHUzMl9waChfX20xMjhoIF9fVywgX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl92Y3Z0dWRxMnBoMTI4X21hc2soKF9fdjRzdSlfX0EsIChfX3Y4aGYpX19XLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KV9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9jdnRlcHUzMl9waChfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZjdnR1ZHEycGgxMjhfbWFzaygKICAgICAgKF9fdjRzdSlfX0EsIChfX3Y4aGYpX21tX3NldHplcm9fcGgoKSwgKF9fbW1hc2s4KV9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9jdnRlcHUzMl9waChfX20yNTZpIF9fQSkgewogIHJldHVybiAoX19tMTI4aCkgX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoKF9fdjhzdSlfX0EsIF9fdjhoZik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2N2dGVwdTMyX3BoKF9fbTEyOGggX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19BKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBoXzEyOCgKICAgICAgKF9fbW1hc2s4KV9fVSwgKF9fdjhoZilfbW0yNTZfY3Z0ZXB1MzJfcGgoX19BKSwgKF9fdjhoZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfY3Z0ZXB1MzJfcGgoX19tbWFzazggX19VLCBfX20yNTZpIF9fQSkgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl9zZWxlY3RwaF8xMjgoCiAgICAgIChfX21tYXNrOClfX1UsIChfX3Y4aGYpX21tMjU2X2N2dGVwdTMyX3BoKF9fQSksIChfX3Y4aGYpX21tX3NldHplcm9fcGgoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9jdnR0cGhfZXBpMzIoX19tMTI4aCBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdmN2dHRwaDJkcTEyOF9tYXNrKAogICAgICAoX192OGhmKV9fQSwgKF9fdjRzaSlfbW1fdW5kZWZpbmVkX3NpMTI4KCksIChfX21tYXNrOCktMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2N2dHRwaF9lcGkzMihfX20xMjhpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92Y3Z0dHBoMmRxMTI4X21hc2soKF9fdjhoZilfX0EsIChfX3Y0c2kpX19XLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KV9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9jdnR0cGhfZXBpMzIoX19tbWFzazggX19VLCBfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92Y3Z0dHBoMmRxMTI4X21hc2soCiAgICAgIChfX3Y4aGYpX19BLCAoX192NHNpKV9tbV9zZXR6ZXJvX3NpMTI4KCksIChfX21tYXNrOClfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfY3Z0dHBoX2VwaTMyKF9fbTEyOGggX19BKSB7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3ZjdnR0cGgyZHEyNTZfbWFzaygKICAgICAgKF9fdjhoZilfX0EsIChfX3Y4c2kpX21tMjU2X3VuZGVmaW5lZF9zaTI1NigpLCAoX19tbWFzazgpLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19jdnR0cGhfZXBpMzIoX19tMjU2aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aCBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfdmN2dHRwaDJkcTI1Nl9tYXNrKChfX3Y4aGYpX19BLCAoX192OHNpKV9fVywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOClfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfY3Z0dHBoX2VwaTMyKF9fbW1hc2s4IF9fVSwgX19tMTI4aCBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfdmN2dHRwaDJkcTI1Nl9tYXNrKAogICAgICAoX192OGhmKV9fQSwgKF9fdjhzaSlfbW0yNTZfc2V0emVyb19zaTI1NigpLCAoX19tbWFzazgpX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tX2N2dHRwaF9lcHUzMihfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92Y3Z0dHBoMnVkcTEyOF9tYXNrKAogICAgICAoX192OGhmKV9fQSwgKF9fdjRzdSlfbW1fdW5kZWZpbmVkX3NpMTI4KCksIChfX21tYXNrOCktMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2N2dHRwaF9lcHUzMihfX20xMjhpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92Y3Z0dHBoMnVkcTEyOF9tYXNrKChfX3Y4aGYpX19BLCAoX192NHN1KV9fVywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2N2dHRwaF9lcHUzMihfX21tYXNrOCBfX1UsIF9fbTEyOGggX19BKSB7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3ZjdnR0cGgydWRxMTI4X21hc2soCiAgICAgIChfX3Y4aGYpX19BLCAoX192NHN1KV9tbV9zZXR6ZXJvX3NpMTI4KCksIChfX21tYXNrOClfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfY3Z0dHBoX2VwdTMyKF9fbTEyOGggX19BKSB7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3ZjdnR0cGgydWRxMjU2X21hc2soCiAgICAgIChfX3Y4aGYpX19BLCAoX192OHN1KV9tbTI1Nl91bmRlZmluZWRfc2kyNTYoKSwgKF9fbW1hc2s4KS0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfY3Z0dHBoX2VwdTMyKF9fbTI1NmkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGggX19BKSB7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3ZjdnR0cGgydWRxMjU2X21hc2soKF9fdjhoZilfX0EsIChfX3Y4c3UpX19XLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOClfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfY3Z0dHBoX2VwdTMyKF9fbW1hc2s4IF9fVSwgX19tMTI4aCBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfdmN2dHRwaDJ1ZHEyNTZfbWFzaygKICAgICAgKF9fdjhoZilfX0EsIChfX3Y4c3UpX21tMjU2X3NldHplcm9fc2kyNTYoKSwgKF9fbW1hc2s4KV9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9jdnRlcGk2NF9waChfX20xMjhpIF9fQSkgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl92Y3Z0cXEycGgxMjhfbWFzaygKICAgICAgKF9fdjJkaSlfX0EsIChfX3Y4aGYpX21tX3VuZGVmaW5lZF9waCgpLCAoX19tbWFzazgpLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19jdnRlcGk2NF9waChfX20xMjhoIF9fVywgX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl92Y3Z0cXEycGgxMjhfbWFzaygoX192MmRpKV9fQSwgKF9fdjhoZilfX1csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOClfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfY3Z0ZXBpNjRfcGgoX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl92Y3Z0cXEycGgxMjhfbWFzaygKICAgICAgKF9fdjJkaSlfX0EsIChfX3Y4aGYpX21tX3NldHplcm9fcGgoKSwgKF9fbW1hc2s4KV9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9jdnRlcGk2NF9waChfX20yNTZpIF9fQSkgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl92Y3Z0cXEycGgyNTZfbWFzaygKICAgICAgKF9fdjRkaSlfX0EsIChfX3Y4aGYpX21tX3VuZGVmaW5lZF9waCgpLCAoX19tbWFzazgpLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19jdnRlcGk2NF9waChfX20xMjhoIF9fVywgX19tbWFzazggX19VLCBfX20yNTZpIF9fQSkgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl92Y3Z0cXEycGgyNTZfbWFzaygoX192NGRpKV9fQSwgKF9fdjhoZilfX1csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOClfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfY3Z0ZXBpNjRfcGgoX19tbWFzazggX19VLCBfX20yNTZpIF9fQSkgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl92Y3Z0cXEycGgyNTZfbWFzaygKICAgICAgKF9fdjRkaSlfX0EsIChfX3Y4aGYpX21tX3NldHplcm9fcGgoKSwgKF9fbW1hc2s4KV9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9jdnRwaF9lcGk2NChfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92Y3Z0cGgycXExMjhfbWFzaygKICAgICAgKF9fdjhoZilfX0EsIChfX3YyZGkpX21tX3VuZGVmaW5lZF9zaTEyOCgpLCAoX19tbWFzazgpLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19jdnRwaF9lcGk2NChfX20xMjhpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92Y3Z0cGgycXExMjhfbWFzaygoX192OGhmKV9fQSwgKF9fdjJkaSlfX1csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOClfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfY3Z0cGhfZXBpNjQoX19tbWFzazggX19VLCBfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92Y3Z0cGgycXExMjhfbWFzaygKICAgICAgKF9fdjhoZilfX0EsIChfX3YyZGkpX21tX3NldHplcm9fc2kxMjgoKSwgKF9fbW1hc2s4KV9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9jdnRwaF9lcGk2NChfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl92Y3Z0cGgycXEyNTZfbWFzaygKICAgICAgKF9fdjhoZilfX0EsIChfX3Y0ZGkpX21tMjU2X3VuZGVmaW5lZF9zaTI1NigpLCAoX19tbWFzazgpLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19jdnRwaF9lcGk2NChfX20yNTZpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl92Y3Z0cGgycXEyNTZfbWFzaygoX192OGhmKV9fQSwgKF9fdjRkaSlfX1csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOClfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfY3Z0cGhfZXBpNjQoX19tbWFzazggX19VLCBfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl92Y3Z0cGgycXEyNTZfbWFzaygKICAgICAgKF9fdjhoZilfX0EsIChfX3Y0ZGkpX21tMjU2X3NldHplcm9fc2kyNTYoKSwgKF9fbW1hc2s4KV9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9jdnRlcHU2NF9waChfX20xMjhpIF9fQSkgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl92Y3Z0dXFxMnBoMTI4X21hc2soCiAgICAgIChfX3YyZHUpX19BLCAoX192OGhmKV9tbV91bmRlZmluZWRfcGgoKSwgKF9fbW1hc2s4KS0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfY3Z0ZXB1NjRfcGgoX19tMTI4aCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfdmN2dHVxcTJwaDEyOF9tYXNrKChfX3YyZHUpX19BLCAoX192OGhmKV9fVywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOClfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfY3Z0ZXB1NjRfcGgoX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl92Y3Z0dXFxMnBoMTI4X21hc2soCiAgICAgIChfX3YyZHUpX19BLCAoX192OGhmKV9tbV9zZXR6ZXJvX3BoKCksIChfX21tYXNrOClfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfY3Z0ZXB1NjRfcGgoX19tMjU2aSBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfdmN2dHVxcTJwaDI1Nl9tYXNrKAogICAgICAoX192NGR1KV9fQSwgKF9fdjhoZilfbW1fdW5kZWZpbmVkX3BoKCksIChfX21tYXNrOCktMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2N2dGVwdTY0X3BoKF9fbTEyOGggX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19BKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZjdnR1cXEycGgyNTZfbWFzaygoX192NGR1KV9fQSwgKF9fdjhoZilfX1csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2N2dGVwdTY0X3BoKF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfdmN2dHVxcTJwaDI1Nl9tYXNrKAogICAgICAoX192NGR1KV9fQSwgKF9fdjhoZilfbW1fc2V0emVyb19waCgpLCAoX19tbWFzazgpX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tX2N2dHBoX2VwdTY0KF9fbTEyOGggX19BKSB7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3ZjdnRwaDJ1cXExMjhfbWFzaygKICAgICAgKF9fdjhoZilfX0EsIChfX3YyZHUpX21tX3VuZGVmaW5lZF9zaTEyOCgpLCAoX19tbWFzazgpLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19jdnRwaF9lcHU2NChfX20xMjhpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92Y3Z0cGgydXFxMTI4X21hc2soKF9fdjhoZilfX0EsIChfX3YyZHUpX19XLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KV9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9jdnRwaF9lcHU2NChfX21tYXNrOCBfX1UsIF9fbTEyOGggX19BKSB7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3ZjdnRwaDJ1cXExMjhfbWFzaygKICAgICAgKF9fdjhoZilfX0EsIChfX3YyZHUpX21tX3NldHplcm9fc2kxMjgoKSwgKF9fbW1hc2s4KV9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9jdnRwaF9lcHU2NChfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl92Y3Z0cGgydXFxMjU2X21hc2soCiAgICAgIChfX3Y4aGYpX19BLCAoX192NGR1KV9tbTI1Nl91bmRlZmluZWRfc2kyNTYoKSwgKF9fbW1hc2s4KS0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfY3Z0cGhfZXB1NjQoX19tMjU2aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aCBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfdmN2dHBoMnVxcTI1Nl9tYXNrKChfX3Y4aGYpX19BLCAoX192NGR1KV9fVywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOClfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfY3Z0cGhfZXB1NjQoX19tbWFzazggX19VLCBfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl92Y3Z0cGgydXFxMjU2X21hc2soCiAgICAgIChfX3Y4aGYpX19BLCAoX192NGR1KV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCksIChfX21tYXNrOClfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfbW1fY3Z0dHBoX2VwaTY0KF9fbTEyOGggX19BKSB7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3ZjdnR0cGgycXExMjhfbWFzaygKICAgICAgKF9fdjhoZilfX0EsIChfX3YyZGkpX21tX3VuZGVmaW5lZF9zaTEyOCgpLCAoX19tbWFzazgpLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19jdnR0cGhfZXBpNjQoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aCBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdmN2dHRwaDJxcTEyOF9tYXNrKChfX3Y4aGYpX19BLCAoX192MmRpKV9fVywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOClfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfY3Z0dHBoX2VwaTY0KF9fbW1hc2s4IF9fVSwgX19tMTI4aCBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdmN2dHRwaDJxcTEyOF9tYXNrKAogICAgICAoX192OGhmKV9fQSwgKF9fdjJkaSlfbW1fc2V0emVyb19zaTEyOCgpLCAoX19tbWFzazgpX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2N2dHRwaF9lcGk2NChfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl92Y3Z0dHBoMnFxMjU2X21hc2soCiAgICAgIChfX3Y4aGYpX19BLCAoX192NGRpKV9tbTI1Nl91bmRlZmluZWRfc2kyNTYoKSwgKF9fbW1hc2s4KS0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfY3Z0dHBoX2VwaTY0KF9fbTI1NmkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGggX19BKSB7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3ZjdnR0cGgycXEyNTZfbWFzaygoX192OGhmKV9fQSwgKF9fdjRkaSlfX1csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2N2dHRwaF9lcGk2NChfX21tYXNrOCBfX1UsIF9fbTEyOGggX19BKSB7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3ZjdnR0cGgycXEyNTZfbWFzaygKICAgICAgKF9fdjhoZilfX0EsIChfX3Y0ZGkpX21tMjU2X3NldHplcm9fc2kyNTYoKSwgKF9fbW1hc2s4KV9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9jdnR0cGhfZXB1NjQoX19tMTI4aCBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdmN2dHRwaDJ1cXExMjhfbWFzaygKICAgICAgKF9fdjhoZilfX0EsIChfX3YyZHUpX21tX3VuZGVmaW5lZF9zaTEyOCgpLCAoX19tbWFzazgpLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19jdnR0cGhfZXB1NjQoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aCBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdmN2dHRwaDJ1cXExMjhfbWFzaygoX192OGhmKV9fQSwgKF9fdjJkdSlfX1csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KV9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9jdnR0cGhfZXB1NjQoX19tbWFzazggX19VLCBfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92Y3Z0dHBoMnVxcTEyOF9tYXNrKAogICAgICAoX192OGhmKV9fQSwgKF9fdjJkdSlfbW1fc2V0emVyb19zaTEyOCgpLCAoX19tbWFzazgpX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2N2dHRwaF9lcHU2NChfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl92Y3Z0dHBoMnVxcTI1Nl9tYXNrKAogICAgICAoX192OGhmKV9fQSwgKF9fdjRkdSlfbW0yNTZfdW5kZWZpbmVkX3NpMjU2KCksIChfX21tYXNrOCktMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2N2dHRwaF9lcHU2NChfX20yNTZpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl92Y3Z0dHBoMnVxcTI1Nl9tYXNrKChfX3Y4aGYpX19BLCAoX192NGR1KV9fVywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2N2dHRwaF9lcHU2NChfX21tYXNrOCBfX1UsIF9fbTEyOGggX19BKSB7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3ZjdnR0cGgydXFxMjU2X21hc2soCiAgICAgIChfX3Y4aGYpX19BLCAoX192NGR1KV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCksIChfX21tYXNrOClfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9jdnR4cGhfcHMoX19tMTI4aCBfX0EpIHsKICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl92Y3Z0cGgycHN4MTI4X21hc2soCiAgICAgIChfX3Y4aGYpX19BLCAoX192NHNmKV9tbV91bmRlZmluZWRfcHMoKSwgKF9fbW1hc2s4KS0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfbW1fbWFza19jdnR4cGhfcHMoX19tMTI4IF9fVywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tbWFzazggX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3ZjdnRwaDJwc3gxMjhfbWFzaygoX192OGhmKV9fQSwgKF9fdjRzZilfX1csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOClfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9jdnR4cGhfcHMoX19tbWFzazggX19VLCBfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3ZjdnRwaDJwc3gxMjhfbWFzaygKICAgICAgKF9fdjhoZilfX0EsIChfX3Y0c2YpX21tX3NldHplcm9fcHMoKSwgKF9fbW1hc2s4KV9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYgX21tMjU2X2N2dHhwaF9wcyhfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tMjU2KV9fYnVpbHRpbl9pYTMyX3ZjdnRwaDJwc3gyNTZfbWFzaygKICAgICAgKF9fdjhoZilfX0EsIChfX3Y4c2YpX21tMjU2X3VuZGVmaW5lZF9wcygpLCAoX19tbWFzazgpLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2N2dHhwaF9wcyhfX20yNTYgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGggX19BKSB7CiAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2lhMzJfdmN2dHBoMnBzeDI1Nl9tYXNrKChfX3Y4aGYpX19BLCAoX192OHNmKV9fVywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KV9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2N2dHhwaF9wcyhfX21tYXNrOCBfX1UsIF9fbTEyOGggX19BKSB7CiAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2lhMzJfdmN2dHBoMnBzeDI1Nl9tYXNrKAogICAgICAoX192OGhmKV9fQSwgKF9fdjhzZilfbW0yNTZfc2V0emVyb19wcygpLCAoX19tbWFzazgpX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tX2N2dHhwc19waChfX20xMjggX19BKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZjdnRwczJwaHgxMjhfbWFzaygKICAgICAgKF9fdjRzZilfX0EsIChfX3Y4aGYpX21tX3VuZGVmaW5lZF9waCgpLCAoX19tbWFzazgpLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfbW1fbWFza19jdnR4cHNfcGgoX19tMTI4aCBfX1csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX21tYXNrOCBfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjggX19BKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZjdnRwczJwaHgxMjhfbWFzaygoX192NHNmKV9fQSwgKF9fdjhoZilfX1csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2N2dHhwc19waChfX21tYXNrOCBfX1UsIF9fbTEyOCBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfdmN2dHBzMnBoeDEyOF9tYXNrKAogICAgICAoX192NHNmKV9fQSwgKF9fdjhoZilfbW1fc2V0emVyb19waCgpLCAoX19tbWFzazgpX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYgX21tMjU2X2N2dHhwc19waChfX20yNTYgX19BKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZjdnRwczJwaHgyNTZfbWFzaygKICAgICAgKF9fdjhzZilfX0EsIChfX3Y4aGYpX21tX3VuZGVmaW5lZF9waCgpLCAoX19tbWFzazgpLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19jdnR4cHNfcGgoX19tMTI4aCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2IF9fQSkgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl92Y3Z0cHMycGh4MjU2X21hc2soKF9fdjhzZilfX0EsIChfX3Y4aGYpX19XLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KV9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9jdnR4cHNfcGgoX19tbWFzazggX19VLCBfX20yNTYgX19BKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZjdnRwczJwaHgyNTZfbWFzaygKICAgICAgKF9fdjhzZilfX0EsIChfX3Y4aGYpX21tX3NldHplcm9fcGgoKSwgKF9fbW1hc2s4KV9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9mbWFkZF9waChfX20xMjhoIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGggX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0MpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfdmZtYWRkcGgoKF9fdjhoZilfX0EsIChfX3Y4aGYpX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhmKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9tYXNrX2ZtYWRkX3BoKF9fbTEyOGggX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX21tYXNrOCBfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGggX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQykgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl9zZWxlY3RwaF8xMjgoCiAgICAgIChfX21tYXNrOClfX1UsCiAgICAgIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBoKChfX3Y4aGYpX19BLCAoX192OGhmKV9fQiwgKF9fdjhoZilfX0MpLAogICAgICAoX192OGhmKV9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrM19mbWFkZF9waChfX20xMjhoIF9fQSwgX19tMTI4aCBfX0IsIF9fbTEyOGggX19DLCBfX21tYXNrOCBfX1UpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfc2VsZWN0cGhfMTI4KAogICAgICAoX19tbWFzazgpX19VLAogICAgICBfX2J1aWx0aW5faWEzMl92Zm1hZGRwaCgoX192OGhmKV9fQSwgKF9fdjhoZilfX0IsIChfX3Y4aGYpX19DKSwKICAgICAgKF9fdjhoZilfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfZm1hZGRfcGgoX19tbWFzazggX19VLCBfX20xMjhoIF9fQSwgX19tMTI4aCBfX0IsIF9fbTEyOGggX19DKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBoXzEyOCgKICAgICAgKF9fbW1hc2s4KV9fVSwKICAgICAgX19idWlsdGluX2lhMzJfdmZtYWRkcGgoKF9fdjhoZilfX0EsIChfX3Y4aGYpX19CLCAoX192OGhmKV9fQyksCiAgICAgIChfX3Y4aGYpX21tX3NldHplcm9fcGgoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9mbXN1Yl9waChfX20xMjhoIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGggX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0MpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfdmZtYWRkcGgoKF9fdjhoZilfX0EsIChfX3Y4aGYpX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjhoZilfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfbW1fbWFza19mbXN1Yl9waChfX20xMjhoIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tbWFzazggX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0MpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfc2VsZWN0cGhfMTI4KAogICAgICAoX19tbWFzazgpX19VLCBfbW1fZm1zdWJfcGgoKF9fdjhoZilfX0EsIChfX3Y4aGYpX19CLCAoX192OGhmKV9fQyksCiAgICAgIChfX3Y4aGYpX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2Ztc3ViX3BoKF9fbW1hc2s4IF9fVSwgX19tMTI4aCBfX0EsIF9fbTEyOGggX19CLCBfX20xMjhoIF9fQykgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl9zZWxlY3RwaF8xMjgoCiAgICAgIChfX21tYXNrOClfX1UsIF9tbV9mbXN1Yl9waCgoX192OGhmKV9fQSwgKF9fdjhoZilfX0IsIChfX3Y4aGYpX19DKSwKICAgICAgKF9fdjhoZilfbW1fc2V0emVyb19waCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2szX2ZubWFkZF9waChfX20xMjhoIF9fQSwgX19tMTI4aCBfX0IsIF9fbTEyOGggX19DLCBfX21tYXNrOCBfX1UpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfc2VsZWN0cGhfMTI4KAogICAgICAoX19tbWFzazgpX19VLAogICAgICBfX2J1aWx0aW5faWEzMl92Zm1hZGRwaCgtKF9fdjhoZilfX0EsIChfX3Y4aGYpX19CLCAoX192OGhmKV9fQyksCiAgICAgIChfX3Y4aGYpX19DKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2ZubWFkZF9waChfX21tYXNrOCBfX1UsIF9fbTEyOGggX19BLCBfX20xMjhoIF9fQiwgX19tMTI4aCBfX0MpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfc2VsZWN0cGhfMTI4KAogICAgICAoX19tbWFzazgpX19VLAogICAgICBfX2J1aWx0aW5faWEzMl92Zm1hZGRwaCgtKF9fdjhoZilfX0EsIChfX3Y4aGYpX19CLCAoX192OGhmKV9fQyksCiAgICAgIChfX3Y4aGYpX21tX3NldHplcm9fcGgoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9mbm1zdWJfcGgoX19tbWFzazggX19VLCBfX20xMjhoIF9fQSwgX19tMTI4aCBfX0IsIF9fbTEyOGggX19DKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBoXzEyOCgKICAgICAgKF9fbW1hc2s4KV9fVSwKICAgICAgX19idWlsdGluX2lhMzJfdmZtYWRkcGgoLShfX3Y4aGYpX19BLCAoX192OGhmKV9fQiwgLShfX3Y4aGYpX19DKSwKICAgICAgKF9fdjhoZilfbW1fc2V0emVyb19waCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYgX21tMjU2X2ZtYWRkX3BoKF9fbTI1NmggX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMjU2aCBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20yNTZoIF9fQykgewogIHJldHVybiAoX19tMjU2aClfX2J1aWx0aW5faWEzMl92Zm1hZGRwaDI1NigoX192MTZoZilfX0EsIChfX3YxNmhmKV9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGYpX19DKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfZm1hZGRfcGgoX19tMjU2aCBfX0EsIF9fbW1hc2sxNiBfX1UsIF9fbTI1NmggX19CLCBfX20yNTZoIF9fQykgewogIHJldHVybiAoX19tMjU2aClfX2J1aWx0aW5faWEzMl9zZWxlY3RwaF8yNTYoCiAgICAgIChfX21tYXNrMTYpX19VLAogICAgICBfX2J1aWx0aW5faWEzMl92Zm1hZGRwaDI1NigoX192MTZoZilfX0EsIChfX3YxNmhmKV9fQiwgKF9fdjE2aGYpX19DKSwKICAgICAgKF9fdjE2aGYpX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2szX2ZtYWRkX3BoKF9fbTI1NmggX19BLCBfX20yNTZoIF9fQiwgX19tMjU2aCBfX0MsIF9fbW1hc2sxNiBfX1UpIHsKICByZXR1cm4gKF9fbTI1NmgpX19idWlsdGluX2lhMzJfc2VsZWN0cGhfMjU2KAogICAgICAoX19tbWFzazE2KV9fVSwKICAgICAgX19idWlsdGluX2lhMzJfdmZtYWRkcGgyNTYoKF9fdjE2aGYpX19BLCAoX192MTZoZilfX0IsIChfX3YxNmhmKV9fQyksCiAgICAgIChfX3YxNmhmKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmggX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9mbWFkZF9waChfX21tYXNrMTYgX19VLCBfX20yNTZoIF9fQSwgX19tMjU2aCBfX0IsIF9fbTI1NmggX19DKSB7CiAgcmV0dXJuIChfX20yNTZoKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBoXzI1NigKICAgICAgKF9fbW1hc2sxNilfX1UsCiAgICAgIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBoMjU2KChfX3YxNmhmKV9fQSwgKF9fdjE2aGYpX19CLCAoX192MTZoZilfX0MpLAogICAgICAoX192MTZoZilfbW0yNTZfc2V0emVyb19waCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYgX21tMjU2X2Ztc3ViX3BoKF9fbTI1NmggX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMjU2aCBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20yNTZoIF9fQykgewogIHJldHVybiAoX19tMjU2aClfX2J1aWx0aW5faWEzMl92Zm1hZGRwaDI1NigoX192MTZoZilfX0EsIChfX3YxNmhmKV9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3YxNmhmKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmggX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2Ztc3ViX3BoKF9fbTI1NmggX19BLCBfX21tYXNrMTYgX19VLCBfX20yNTZoIF9fQiwgX19tMjU2aCBfX0MpIHsKICByZXR1cm4gKF9fbTI1NmgpX19idWlsdGluX2lhMzJfc2VsZWN0cGhfMjU2KAogICAgICAoX19tbWFzazE2KV9fVSwKICAgICAgX19idWlsdGluX2lhMzJfdmZtYWRkcGgyNTYoKF9fdjE2aGYpX19BLCAoX192MTZoZilfX0IsIC0oX192MTZoZilfX0MpLAogICAgICAoX192MTZoZilfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZoIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfZm1zdWJfcGgoX19tbWFzazE2IF9fVSwgX19tMjU2aCBfX0EsIF9fbTI1NmggX19CLCBfX20yNTZoIF9fQykgewogIHJldHVybiAoX19tMjU2aClfX2J1aWx0aW5faWEzMl9zZWxlY3RwaF8yNTYoCiAgICAgIChfX21tYXNrMTYpX19VLAogICAgICBfX2J1aWx0aW5faWEzMl92Zm1hZGRwaDI1NigoX192MTZoZilfX0EsIChfX3YxNmhmKV9fQiwgLShfX3YxNmhmKV9fQyksCiAgICAgIChfX3YxNmhmKV9tbTI1Nl9zZXR6ZXJvX3BoKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZoIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFzazNfZm5tYWRkX3BoKF9fbTI1NmggX19BLCBfX20yNTZoIF9fQiwgX19tMjU2aCBfX0MsIF9fbW1hc2sxNiBfX1UpIHsKICByZXR1cm4gKF9fbTI1NmgpX19idWlsdGluX2lhMzJfc2VsZWN0cGhfMjU2KAogICAgICAoX19tbWFzazE2KV9fVSwKICAgICAgX19idWlsdGluX2lhMzJfdmZtYWRkcGgyNTYoLShfX3YxNmhmKV9fQSwgKF9fdjE2aGYpX19CLCAoX192MTZoZilfX0MpLAogICAgICAoX192MTZoZilfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZoIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfZm5tYWRkX3BoKF9fbW1hc2sxNiBfX1UsIF9fbTI1NmggX19BLCBfX20yNTZoIF9fQiwgX19tMjU2aCBfX0MpIHsKICByZXR1cm4gKF9fbTI1NmgpX19idWlsdGluX2lhMzJfc2VsZWN0cGhfMjU2KAogICAgICAoX19tbWFzazE2KV9fVSwKICAgICAgX19idWlsdGluX2lhMzJfdmZtYWRkcGgyNTYoLShfX3YxNmhmKV9fQSwgKF9fdjE2aGYpX19CLCAoX192MTZoZilfX0MpLAogICAgICAoX192MTZoZilfbW0yNTZfc2V0emVyb19waCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2ZubXN1Yl9waChfX21tYXNrMTYgX19VLCBfX20yNTZoIF9fQSwgX19tMjU2aCBfX0IsIF9fbTI1NmggX19DKSB7CiAgcmV0dXJuIChfX20yNTZoKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBoXzI1NigKICAgICAgKF9fbW1hc2sxNilfX1UsCiAgICAgIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBoMjU2KC0oX192MTZoZilfX0EsIChfX3YxNmhmKV9fQiwgLShfX3YxNmhmKV9fQyksCiAgICAgIChfX3YxNmhmKV9tbTI1Nl9zZXR6ZXJvX3BoKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfbW1fZm1hZGRzdWJfcGgoX19tMTI4aCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGggX19DKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHN1YnBoKChfX3Y4aGYpX19BLCAoX192OGhmKV9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoZilfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19mbWFkZHN1Yl9waChfX20xMjhoIF9fQSwgX19tbWFzazggX19VLCBfX20xMjhoIF9fQiwgX19tMTI4aCBfX0MpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfc2VsZWN0cGhfMTI4KAogICAgICAoX19tbWFzazgpX19VLAogICAgICBfX2J1aWx0aW5faWEzMl92Zm1hZGRzdWJwaCgoX192OGhmKV9fQSwgKF9fdjhoZilfX0IsIChfX3Y4aGYpX19DKSwKICAgICAgKF9fdjhoZilfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFzazNfZm1hZGRzdWJfcGgoX19tMTI4aCBfX0EsIF9fbTEyOGggX19CLCBfX20xMjhoIF9fQywgX19tbWFzazggX19VKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBoXzEyOCgKICAgICAgKF9fbW1hc2s4KV9fVSwKICAgICAgX19idWlsdGluX2lhMzJfdmZtYWRkc3VicGgoKF9fdjhoZilfX0EsIChfX3Y4aGYpX19CLCAoX192OGhmKV9fQyksCiAgICAgIChfX3Y4aGYpX19DKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2ZtYWRkc3ViX3BoKF9fbW1hc2s4IF9fVSwgX19tMTI4aCBfX0EsIF9fbTEyOGggX19CLCBfX20xMjhoIF9fQykgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl9zZWxlY3RwaF8xMjgoCiAgICAgIChfX21tYXNrOClfX1UsCiAgICAgIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHN1YnBoKChfX3Y4aGYpX19BLCAoX192OGhmKV9fQiwgKF9fdjhoZilfX0MpLAogICAgICAoX192OGhmKV9tbV9zZXR6ZXJvX3BoKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfbW1fZm1zdWJhZGRfcGgoX19tMTI4aCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGggX19DKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHN1YnBoKChfX3Y4aGYpX19BLCAoX192OGhmKV9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3Y4aGYpX19DKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfZm1zdWJhZGRfcGgoX19tMTI4aCBfX0EsIF9fbW1hc2s4IF9fVSwgX19tMTI4aCBfX0IsIF9fbTEyOGggX19DKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBoXzEyOCgKICAgICAgKF9fbW1hc2s4KV9fVSwKICAgICAgX19idWlsdGluX2lhMzJfdmZtYWRkc3VicGgoKF9fdjhoZilfX0EsIChfX3Y4aGYpX19CLCAtKF9fdjhoZilfX0MpLAogICAgICAoX192OGhmKV9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9mbXN1YmFkZF9waChfX21tYXNrOCBfX1UsIF9fbTEyOGggX19BLCBfX20xMjhoIF9fQiwgX19tMTI4aCBfX0MpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfc2VsZWN0cGhfMTI4KAogICAgICAoX19tbWFzazgpX19VLAogICAgICBfX2J1aWx0aW5faWEzMl92Zm1hZGRzdWJwaCgoX192OGhmKV9fQSwgKF9fdjhoZilfX0IsIC0oX192OGhmKV9fQyksCiAgICAgIChfX3Y4aGYpX21tX3NldHplcm9fcGgoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmggX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9mbWFkZHN1Yl9waChfX20yNTZoIF9fQSwgX19tMjU2aCBfX0IsIF9fbTI1NmggX19DKSB7CiAgcmV0dXJuIChfX20yNTZoKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHN1YnBoMjU2KChfX3YxNmhmKV9fQSwgKF9fdjE2aGYpX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoZilfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZoIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19mbWFkZHN1Yl9waChfX20yNTZoIF9fQSwgX19tbWFzazE2IF9fVSwgX19tMjU2aCBfX0IsIF9fbTI1NmggX19DKSB7CiAgcmV0dXJuIChfX20yNTZoKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBoXzI1NigKICAgICAgKF9fbW1hc2sxNilfX1UsCiAgICAgIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHN1YnBoMjU2KChfX3YxNmhmKV9fQSwgKF9fdjE2aGYpX19CLCAoX192MTZoZilfX0MpLAogICAgICAoX192MTZoZilfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZoIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFzazNfZm1hZGRzdWJfcGgoX19tMjU2aCBfX0EsIF9fbTI1NmggX19CLCBfX20yNTZoIF9fQywgX19tbWFzazE2IF9fVSkgewogIHJldHVybiAoX19tMjU2aClfX2J1aWx0aW5faWEzMl9zZWxlY3RwaF8yNTYoCiAgICAgIChfX21tYXNrMTYpX19VLAogICAgICBfX2J1aWx0aW5faWEzMl92Zm1hZGRzdWJwaDI1NigoX192MTZoZilfX0EsIChfX3YxNmhmKV9fQiwgKF9fdjE2aGYpX19DKSwKICAgICAgKF9fdjE2aGYpX19DKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2ZtYWRkc3ViX3BoKF9fbW1hc2sxNiBfX1UsIF9fbTI1NmggX19BLCBfX20yNTZoIF9fQiwgX19tMjU2aCBfX0MpIHsKICByZXR1cm4gKF9fbTI1NmgpX19idWlsdGluX2lhMzJfc2VsZWN0cGhfMjU2KAogICAgICAoX19tbWFzazE2KV9fVSwKICAgICAgX19idWlsdGluX2lhMzJfdmZtYWRkc3VicGgyNTYoKF9fdjE2aGYpX19BLCAoX192MTZoZilfX0IsIChfX3YxNmhmKV9fQyksCiAgICAgIChfX3YxNmhmKV9tbTI1Nl9zZXR6ZXJvX3BoKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZoIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfZm1zdWJhZGRfcGgoX19tMjU2aCBfX0EsIF9fbTI1NmggX19CLCBfX20yNTZoIF9fQykgewogIHJldHVybiAoX19tMjU2aClfX2J1aWx0aW5faWEzMl92Zm1hZGRzdWJwaDI1NigoX192MTZoZilfX0EsIChfX3YxNmhmKV9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3YxNmhmKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmggX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2Ztc3ViYWRkX3BoKF9fbTI1NmggX19BLCBfX21tYXNrMTYgX19VLCBfX20yNTZoIF9fQiwgX19tMjU2aCBfX0MpIHsKICByZXR1cm4gKF9fbTI1NmgpX19idWlsdGluX2lhMzJfc2VsZWN0cGhfMjU2KAogICAgICAoX19tbWFzazE2KV9fVSwKICAgICAgX19idWlsdGluX2lhMzJfdmZtYWRkc3VicGgyNTYoKF9fdjE2aGYpX19BLCAoX192MTZoZilfX0IsIC0oX192MTZoZilfX0MpLAogICAgICAoX192MTZoZilfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZoIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfZm1zdWJhZGRfcGgoX19tbWFzazE2IF9fVSwgX19tMjU2aCBfX0EsIF9fbTI1NmggX19CLCBfX20yNTZoIF9fQykgewogIHJldHVybiAoX19tMjU2aClfX2J1aWx0aW5faWEzMl9zZWxlY3RwaF8yNTYoCiAgICAgIChfX21tYXNrMTYpX19VLAogICAgICBfX2J1aWx0aW5faWEzMl92Zm1hZGRzdWJwaDI1NigoX192MTZoZilfX0EsIChfX3YxNmhmKV9fQiwgLShfX3YxNmhmKV9fQyksCiAgICAgIChfX3YxNmhmKV9tbTI1Nl9zZXR6ZXJvX3BoKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFzazNfZm1zdWJfcGgoX19tMTI4aCBfX0EsIF9fbTEyOGggX19CLCBfX20xMjhoIF9fQywgX19tbWFzazggX19VKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBoXzEyOCgKICAgICAgKF9fbW1hc2s4KV9fVSwKICAgICAgX19idWlsdGluX2lhMzJfdmZtYWRkcGgoKF9fdjhoZilfX0EsIChfX3Y4aGYpX19CLCAtKF9fdjhoZilfX0MpLAogICAgICAoX192OGhmKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmggX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrM19mbXN1Yl9waChfX20yNTZoIF9fQSwgX19tMjU2aCBfX0IsIF9fbTI1NmggX19DLCBfX21tYXNrMTYgX19VKSB7CiAgcmV0dXJuIChfX20yNTZoKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBoXzI1NigKICAgICAgKF9fbW1hc2sxNilfX1UsCiAgICAgIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBoMjU2KChfX3YxNmhmKV9fQSwgKF9fdjE2aGYpX19CLCAtKF9fdjE2aGYpX19DKSwKICAgICAgKF9fdjE2aGYpX19DKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2szX2Ztc3ViYWRkX3BoKF9fbTEyOGggX19BLCBfX20xMjhoIF9fQiwgX19tMTI4aCBfX0MsIF9fbW1hc2s4IF9fVSkgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl9zZWxlY3RwaF8xMjgoCiAgICAgIChfX21tYXNrOClfX1UsCiAgICAgIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHN1YnBoKChfX3Y4aGYpX19BLCAoX192OGhmKV9fQiwgLShfX3Y4aGYpX19DKSwKICAgICAgKF9fdjhoZilfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZoIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFzazNfZm1zdWJhZGRfcGgoX19tMjU2aCBfX0EsIF9fbTI1NmggX19CLCBfX20yNTZoIF9fQywgX19tbWFzazE2IF9fVSkgewogIHJldHVybiAoX19tMjU2aClfX2J1aWx0aW5faWEzMl9zZWxlY3RwaF8yNTYoCiAgICAgIChfX21tYXNrMTYpX19VLAogICAgICBfX2J1aWx0aW5faWEzMl92Zm1hZGRzdWJwaDI1NigoX192MTZoZilfX0EsIChfX3YxNmhmKV9fQiwgLShfX3YxNmhmKV9fQyksCiAgICAgIChfX3YxNmhmKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9mbm1hZGRfcGgoX19tMTI4aCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0MpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfdmZtYWRkcGgoKF9fdjhoZilfX0EsIC0oX192OGhmKV9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoZilfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19mbm1hZGRfcGgoX19tMTI4aCBfX0EsIF9fbW1hc2s4IF9fVSwgX19tMTI4aCBfX0IsIF9fbTEyOGggX19DKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBoXzEyOCgKICAgICAgKF9fbW1hc2s4KV9fVSwKICAgICAgX19idWlsdGluX2lhMzJfdmZtYWRkcGgoKF9fdjhoZilfX0EsIC0oX192OGhmKV9fQiwgKF9fdjhoZilfX0MpLAogICAgICAoX192OGhmKV9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmggX19ERUZBVUxUX0ZOX0FUVFJTMjU2IF9tbTI1Nl9mbm1hZGRfcGgoX19tMjU2aCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMjU2aCBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMjU2aCBfX0MpIHsKICByZXR1cm4gKF9fbTI1NmgpX19idWlsdGluX2lhMzJfdmZtYWRkcGgyNTYoKF9fdjE2aGYpX19BLCAtKF9fdjE2aGYpX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoZilfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZoIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19mbm1hZGRfcGgoX19tMjU2aCBfX0EsIF9fbW1hc2sxNiBfX1UsIF9fbTI1NmggX19CLCBfX20yNTZoIF9fQykgewogIHJldHVybiAoX19tMjU2aClfX2J1aWx0aW5faWEzMl9zZWxlY3RwaF8yNTYoCiAgICAgIChfX21tYXNrMTYpX19VLAogICAgICBfX2J1aWx0aW5faWEzMl92Zm1hZGRwaDI1NigoX192MTZoZilfX0EsIC0oX192MTZoZilfX0IsIChfX3YxNmhmKV9fQyksCiAgICAgIChfX3YxNmhmKV9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9mbm1zdWJfcGgoX19tMTI4aCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0MpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfdmZtYWRkcGgoKF9fdjhoZilfX0EsIC0oX192OGhmKV9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3Y4aGYpX19DKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfZm5tc3ViX3BoKF9fbTEyOGggX19BLCBfX21tYXNrOCBfX1UsIF9fbTEyOGggX19CLCBfX20xMjhoIF9fQykgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl9zZWxlY3RwaF8xMjgoCiAgICAgIChfX21tYXNrOClfX1UsCiAgICAgIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBoKChfX3Y4aGYpX19BLCAtKF9fdjhoZilfX0IsIC0oX192OGhmKV9fQyksCiAgICAgIChfX3Y4aGYpX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2szX2ZubXN1Yl9waChfX20xMjhoIF9fQSwgX19tMTI4aCBfX0IsIF9fbTEyOGggX19DLCBfX21tYXNrOCBfX1UpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfc2VsZWN0cGhfMTI4KAogICAgICAoX19tbWFzazgpX19VLAogICAgICBfX2J1aWx0aW5faWEzMl92Zm1hZGRwaCgoX192OGhmKV9fQSwgLShfX3Y4aGYpX19CLCAtKF9fdjhoZilfX0MpLAogICAgICAoX192OGhmKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmggX19ERUZBVUxUX0ZOX0FUVFJTMjU2IF9tbTI1Nl9mbm1zdWJfcGgoX19tMjU2aCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMjU2aCBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMjU2aCBfX0MpIHsKICByZXR1cm4gKF9fbTI1NmgpX19idWlsdGluX2lhMzJfdmZtYWRkcGgyNTYoKF9fdjE2aGYpX19BLCAtKF9fdjE2aGYpX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjE2aGYpX19DKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfZm5tc3ViX3BoKF9fbTI1NmggX19BLCBfX21tYXNrMTYgX19VLCBfX20yNTZoIF9fQiwgX19tMjU2aCBfX0MpIHsKICByZXR1cm4gKF9fbTI1NmgpX19idWlsdGluX2lhMzJfc2VsZWN0cGhfMjU2KAogICAgICAoX19tbWFzazE2KV9fVSwKICAgICAgX19idWlsdGluX2lhMzJfdmZtYWRkcGgyNTYoKF9fdjE2aGYpX19BLCAtKF9fdjE2aGYpX19CLCAtKF9fdjE2aGYpX19DKSwKICAgICAgKF9fdjE2aGYpX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2szX2ZubXN1Yl9waChfX20yNTZoIF9fQSwgX19tMjU2aCBfX0IsIF9fbTI1NmggX19DLCBfX21tYXNrMTYgX19VKSB7CiAgcmV0dXJuIChfX20yNTZoKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBoXzI1NigKICAgICAgKF9fbW1hc2sxNilfX1UsCiAgICAgIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBoMjU2KChfX3YxNmhmKV9fQSwgLShfX3YxNmhmKV9fQiwgLShfX3YxNmhmKV9fQyksCiAgICAgIChfX3YxNmhmKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9mY211bF9wY2goX19tMTI4aCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0IpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfdmZjbXVsY3BoMTI4X21hc2soCiAgICAgIChfX3Y0c2YpX19BLCAoX192NHNmKV9fQiwgKF9fdjRzZilfbW1fdW5kZWZpbmVkX3BoKCksIChfX21tYXNrOCktMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2ZjbXVsX3BjaChfX20xMjhoIF9fVywgX19tbWFzazggX19VLCBfX20xMjhoIF9fQSwgX19tMTI4aCBfX0IpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfdmZjbXVsY3BoMTI4X21hc2soKF9fdjRzZilfX0EsIChfX3Y0c2YpX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9fVywgKF9fbW1hc2s4KV9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9mY211bF9wY2goX19tbWFzazggX19VLCBfX20xMjhoIF9fQSwgX19tMTI4aCBfX0IpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfdmZjbXVsY3BoMTI4X21hc2soCiAgICAgIChfX3Y0c2YpX19BLCAoX192NHNmKV9fQiwgKF9fdjRzZilfbW1fc2V0emVyb19waCgpLCAoX19tbWFzazgpX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tMjU2X2ZjbXVsX3BjaChfX20yNTZoIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20yNTZoIF9fQikgewogIHJldHVybiAoX19tMjU2aClfX2J1aWx0aW5faWEzMl92ZmNtdWxjcGgyNTZfbWFzaygKICAgICAgKF9fdjhzZilfX0EsIChfX3Y4c2YpX19CLCAoX192OHNmKV9tbTI1Nl91bmRlZmluZWRfcGgoKSwgKF9fbW1hc2s4KS0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfZmNtdWxfcGNoKF9fbTI1NmggX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NmggX19BLCBfX20yNTZoIF9fQikgewogIHJldHVybiAoX19tMjU2aClfX2J1aWx0aW5faWEzMl92ZmNtdWxjcGgyNTZfbWFzaygoX192OHNmKV9fQSwgKF9fdjhzZilfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX19XLCAoX19tbWFzazgpX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2ZjbXVsX3BjaChfX21tYXNrOCBfX1UsIF9fbTI1NmggX19BLCBfX20yNTZoIF9fQikgewogIHJldHVybiAoX19tMjU2aClfX2J1aWx0aW5faWEzMl92ZmNtdWxjcGgyNTZfbWFzaygKICAgICAgKF9fdjhzZilfX0EsIChfX3Y4c2YpX19CLCAoX192OHNmKV9tbTI1Nl9zZXR6ZXJvX3BoKCksIChfX21tYXNrOClfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfbW1fZmNtYWRkX3BjaChfX20xMjhoIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGggX19DKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZmY21hZGRjcGgxMjhfbWFzaygoX192NHNmKV9fQSwgKF9fdjRzZilfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9fQywgKF9fbW1hc2s4KS0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfZmNtYWRkX3BjaChfX20xMjhoIF9fQSwgX19tbWFzazggX19VLCBfX20xMjhoIF9fQiwgX19tMTI4aCBfX0MpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMTI4KAogICAgICBfX1UsCiAgICAgIF9fYnVpbHRpbl9pYTMyX3ZmY21hZGRjcGgxMjhfbWFzaygoX192NHNmKV9fQSwgKF9fdjRzZikoX19tMTI4aClfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9fQywgKF9fbW1hc2s4KV9fVSksCiAgICAgIChfX3Y0c2YpX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2szX2ZjbWFkZF9wY2goX19tMTI4aCBfX0EsIF9fbTEyOGggX19CLCBfX20xMjhoIF9fQywgX19tbWFzazggX19VKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZmY21hZGRjcGgxMjhfbWFzaygoX192NHNmKV9fQSwgKF9fdjRzZilfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9fQywgKF9fbW1hc2s4KV9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9mY21hZGRfcGNoKF9fbW1hc2s4IF9fVSwgX19tMTI4aCBfX0EsIF9fbTEyOGggX19CLCBfX20xMjhoIF9fQykgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl92ZmNtYWRkY3BoMTI4X21hc2t6KAogICAgICAoX192NHNmKV9fQSwgKF9fdjRzZilfX0IsIChfX3Y0c2YpX19DLCAoX19tbWFzazgpX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYgX21tMjU2X2ZjbWFkZF9wY2goX19tMjU2aCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTI1NmggX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20yNTZoIF9fQykgewogIHJldHVybiAoX19tMjU2aClfX2J1aWx0aW5faWEzMl92ZmNtYWRkY3BoMjU2X21hc2soKF9fdjhzZilfX0EsIChfX3Y4c2YpX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZilfX0MsIChfX21tYXNrOCktMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmggX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2ZjbWFkZF9wY2goX19tMjU2aCBfX0EsIF9fbW1hc2s4IF9fVSwgX19tMjU2aCBfX0IsIF9fbTI1NmggX19DKSB7CiAgcmV0dXJuIChfX20yNTZoKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzI1NigKICAgICAgX19VLAogICAgICBfX2J1aWx0aW5faWEzMl92ZmNtYWRkY3BoMjU2X21hc2soKF9fdjhzZilfX0EsIChfX3Y4c2YpX19CLCAoX192OHNmKV9fQywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOClfX1UpLAogICAgICAoX192OHNmKV9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmggX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrM19mY21hZGRfcGNoKF9fbTI1NmggX19BLCBfX20yNTZoIF9fQiwgX19tMjU2aCBfX0MsIF9fbW1hc2s4IF9fVSkgewogIHJldHVybiAoX19tMjU2aClfX2J1aWx0aW5faWEzMl92ZmNtYWRkY3BoMjU2X21hc2soKF9fdjhzZilfX0EsIChfX3Y4c2YpX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZilfX0MsIChfX21tYXNrOClfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZoIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfZmNtYWRkX3BjaChfX21tYXNrOCBfX1UsIF9fbTI1NmggX19BLCBfX20yNTZoIF9fQiwgX19tMjU2aCBfX0MpIHsKICByZXR1cm4gKF9fbTI1NmgpX19idWlsdGluX2lhMzJfdmZjbWFkZGNwaDI1Nl9tYXNreigKICAgICAgKF9fdjhzZilfX0EsIChfX3Y4c2YpX19CLCAoX192OHNmKV9fQywgKF9fbW1hc2s4KV9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9mbXVsX3BjaChfX20xMjhoIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGggX19CKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZmbXVsY3BoMTI4X21hc2soCiAgICAgIChfX3Y0c2YpX19BLCAoX192NHNmKV9fQiwgKF9fdjRzZilfbW1fdW5kZWZpbmVkX3BoKCksIChfX21tYXNrOCktMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9tYXNrX2ZtdWxfcGNoKF9fbTEyOGggX19XLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX21tYXNrOCBfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGggX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQikgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl92Zm11bGNwaDEyOF9tYXNrKChfX3Y0c2YpX19BLCAoX192NHNmKV9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9fVywgKF9fbW1hc2s4KV9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9mbXVsX3BjaChfX21tYXNrOCBfX1UsIF9fbTEyOGggX19BLCBfX20xMjhoIF9fQikgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl92Zm11bGNwaDEyOF9tYXNrKAogICAgICAoX192NHNmKV9fQSwgKF9fdjRzZilfX0IsIChfX3Y0c2YpX21tX3NldHplcm9fcGgoKSwgKF9fbW1hc2s4KV9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmggX19ERUZBVUxUX0ZOX0FUVFJTMjU2IF9tbTI1Nl9mbXVsX3BjaChfX20yNTZoIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTI1NmggX19CKSB7CiAgcmV0dXJuIChfX20yNTZoKV9fYnVpbHRpbl9pYTMyX3ZmbXVsY3BoMjU2X21hc2soCiAgICAgIChfX3Y4c2YpX19BLCAoX192OHNmKV9fQiwgKF9fdjhzZilfbW0yNTZfdW5kZWZpbmVkX3BoKCksIChfX21tYXNrOCktMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmggX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2ZtdWxfcGNoKF9fbTI1NmggX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NmggX19BLCBfX20yNTZoIF9fQikgewogIHJldHVybiAoX19tMjU2aClfX2J1aWx0aW5faWEzMl92Zm11bGNwaDI1Nl9tYXNrKChfX3Y4c2YpX19BLCAoX192OHNmKV9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKV9fVywgKF9fbW1hc2s4KV9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmggX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9mbXVsX3BjaChfX21tYXNrOCBfX1UsIF9fbTI1NmggX19BLCBfX20yNTZoIF9fQikgewogIHJldHVybiAoX19tMjU2aClfX2J1aWx0aW5faWEzMl92Zm11bGNwaDI1Nl9tYXNrKAogICAgICAoX192OHNmKV9fQSwgKF9fdjhzZilfX0IsIChfX3Y4c2YpX21tMjU2X3NldHplcm9fcGgoKSwgKF9fbW1hc2s4KV9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9mbWFkZF9wY2goX19tMTI4aCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0MpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfdmZtYWRkY3BoMTI4X21hc2soKF9fdjRzZilfX0EsIChfX3Y0c2YpX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9fQywgKF9fbW1hc2s4KS0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfZm1hZGRfcGNoKF9fbTEyOGggX19BLCBfX21tYXNrOCBfX1UsIF9fbTEyOGggX19CLCBfX20xMjhoIF9fQykgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18xMjgoCiAgICAgIF9fVSwKICAgICAgX19idWlsdGluX2lhMzJfdmZtYWRkY3BoMTI4X21hc2soKF9fdjRzZilfX0EsIChfX3Y0c2YpX19CLCAoX192NHNmKV9fQywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KV9fVSksCiAgICAgIChfX3Y0c2YpX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2szX2ZtYWRkX3BjaChfX20xMjhoIF9fQSwgX19tMTI4aCBfX0IsIF9fbTEyOGggX19DLCBfX21tYXNrOCBfX1UpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfdmZtYWRkY3BoMTI4X21hc2soKF9fdjRzZilfX0EsIChfX3Y0c2YpX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9fQywgKF9fbW1hc2s4KV9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9mbWFkZF9wY2goX19tbWFzazggX19VLCBfX20xMjhoIF9fQSwgX19tMTI4aCBfX0IsIF9fbTEyOGggX19DKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZGNwaDEyOF9tYXNreigoX192NHNmKV9fQSwgKF9fdjRzZilfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9fQywgKF9fbW1hc2s4KV9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmggX19ERUZBVUxUX0ZOX0FUVFJTMjU2IF9tbTI1Nl9mbWFkZF9wY2goX19tMjU2aCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMjU2aCBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMjU2aCBfX0MpIHsKICByZXR1cm4gKF9fbTI1NmgpX19idWlsdGluX2lhMzJfdmZtYWRkY3BoMjU2X21hc2soKF9fdjhzZilfX0EsIChfX3Y4c2YpX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKV9fQywgKF9fbW1hc2s4KS0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfZm1hZGRfcGNoKF9fbTI1NmggX19BLCBfX21tYXNrOCBfX1UsIF9fbTI1NmggX19CLCBfX20yNTZoIF9fQykgewogIHJldHVybiAoX19tMjU2aClfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18yNTYoCiAgICAgIF9fVSwKICAgICAgX19idWlsdGluX2lhMzJfdmZtYWRkY3BoMjU2X21hc2soKF9fdjhzZilfX0EsIChfX3Y4c2YpX19CLCAoX192OHNmKV9fQywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KV9fVSksCiAgICAgIChfX3Y4c2YpX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2szX2ZtYWRkX3BjaChfX20yNTZoIF9fQSwgX19tMjU2aCBfX0IsIF9fbTI1NmggX19DLCBfX21tYXNrOCBfX1UpIHsKICByZXR1cm4gKF9fbTI1NmgpX19idWlsdGluX2lhMzJfdmZtYWRkY3BoMjU2X21hc2soKF9fdjhzZilfX0EsIChfX3Y4c2YpX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKV9fQywgKF9fbW1hc2s4KV9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmggX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9mbWFkZF9wY2goX19tbWFzazggX19VLCBfX20yNTZoIF9fQSwgX19tMjU2aCBfX0IsIF9fbTI1NmggX19DKSB7CiAgcmV0dXJuIChfX20yNTZoKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZGNwaDI1Nl9tYXNreigoX192OHNmKV9fQSwgKF9fdjhzZilfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKV9fQywgKF9fbW1hc2s4KV9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9tYXNrX2JsZW5kX3BoKF9fbW1hc2s4IF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGggX19XKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBoXzEyOCgoX19tbWFzazgpX19VLCAoX192OGhmKV9fVywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGYpX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfYmxlbmRfcGgoX19tbWFzazE2IF9fVSwgX19tMjU2aCBfX0EsIF9fbTI1NmggX19XKSB7CiAgcmV0dXJuIChfX20yNTZoKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBoXzI1NigoX19tbWFzazE2KV9fVSwgKF9fdjE2aGYpX19XLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGYpX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX3Blcm11dGV4MnZhcl9waChfX20xMjhoIF9fQSwgX19tMTI4aSBfX0ksIF9fbTEyOGggX19CKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZwZXJtaTJ2YXJoaTEyOCgoX192OGhpKV9fQSwgKF9fdjhoaSlfX0ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmggX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9wZXJtdXRleDJ2YXJfcGgoX19tMjU2aCBfX0EsIF9fbTI1NmkgX19JLCBfX20yNTZoIF9fQikgewogIHJldHVybiAoX19tMjU2aClfX2J1aWx0aW5faWEzMl92cGVybWkydmFyaGkyNTYoKF9fdjE2aGkpX19BLCAoX192MTZoaSlfX0ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fcGVybXV0ZXh2YXJfcGgoX19tMTI4aSBfX0EsIF9fbTEyOGggX19CKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3Blcm12YXJoaTEyOCgoX192OGhpKV9fQiwgKF9fdjhoaSlfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZoIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfcGVybXV0ZXh2YXJfcGgoX19tMjU2aSBfX0EsIF9fbTI1NmggX19CKSB7CiAgcmV0dXJuIChfX20yNTZoKV9fYnVpbHRpbl9pYTMyX3Blcm12YXJoaTI1NigoX192MTZoaSlfX0IsIChfX3YxNmhpKV9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9GbG9hdDE2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfcmVkdWNlX2FkZF9waChfX20yNTZoIF9fVykgewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9yZWR1Y2VfZmFkZF9waDI1NigtMC4wZjE2LCBfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfRmxvYXQxNiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X3JlZHVjZV9tdWxfcGgoX19tMjU2aCBfX1cpIHsKICByZXR1cm4gX19idWlsdGluX2lhMzJfcmVkdWNlX2ZtdWxfcGgyNTYoMS4wZjE2LCBfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfRmxvYXQxNiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X3JlZHVjZV9tYXhfcGgoX19tMjU2aCBfX1YpIHsKICByZXR1cm4gX19idWlsdGluX2lhMzJfcmVkdWNlX2ZtYXhfcGgyNTYoX19WKTsKfQoKc3RhdGljIF9faW5saW5lX18gX0Zsb2F0MTYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9yZWR1Y2VfbWluX3BoKF9fbTI1NmggX19WKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3JlZHVjZV9mbWluX3BoMjU2KF9fVik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9GbG9hdDE2IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fcmVkdWNlX2FkZF9waChfX20xMjhoIF9fVykgewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9yZWR1Y2VfZmFkZF9waDEyOCgtMC4wZjE2LCBfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfRmxvYXQxNiBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX3JlZHVjZV9tdWxfcGgoX19tMTI4aCBfX1cpIHsKICByZXR1cm4gX19idWlsdGluX2lhMzJfcmVkdWNlX2ZtdWxfcGgxMjgoMS4wZjE2LCBfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfRmxvYXQxNiBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX3JlZHVjZV9tYXhfcGgoX19tMTI4aCBfX1YpIHsKICByZXR1cm4gX19idWlsdGluX2lhMzJfcmVkdWNlX2ZtYXhfcGgxMjgoX19WKTsKfQoKc3RhdGljIF9faW5saW5lX18gX0Zsb2F0MTYgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9yZWR1Y2VfbWluX3BoKF9fbTEyOGggX19WKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3JlZHVjZV9mbWluX3BoMTI4KF9fVik7Cn0KCi8vIGludHJpbnNpY3MgYmVsb3cgYXJlIGFsaWFzIGZvciBmKm11bF8qY2gKI2RlZmluZSBfbW1fbXVsX3BjaChBLCBCKSBfbW1fZm11bF9wY2goQSwgQikKI2RlZmluZSBfbW1fbWFza19tdWxfcGNoKFcsIFUsIEEsIEIpIF9tbV9tYXNrX2ZtdWxfcGNoKFcsIFUsIEEsIEIpCiNkZWZpbmUgX21tX21hc2t6X211bF9wY2goVSwgQSwgQikgX21tX21hc2t6X2ZtdWxfcGNoKFUsIEEsIEIpCiNkZWZpbmUgX21tMjU2X211bF9wY2goQSwgQikgX21tMjU2X2ZtdWxfcGNoKEEsIEIpCiNkZWZpbmUgX21tMjU2X21hc2tfbXVsX3BjaChXLCBVLCBBLCBCKSBfbW0yNTZfbWFza19mbXVsX3BjaChXLCBVLCBBLCBCKQojZGVmaW5lIF9tbTI1Nl9tYXNrel9tdWxfcGNoKFUsIEEsIEIpIF9tbTI1Nl9tYXNrel9mbXVsX3BjaChVLCBBLCBCKQoKI2RlZmluZSBfbW1fY211bF9wY2goQSwgQikgX21tX2ZjbXVsX3BjaChBLCBCKQojZGVmaW5lIF9tbV9tYXNrX2NtdWxfcGNoKFcsIFUsIEEsIEIpIF9tbV9tYXNrX2ZjbXVsX3BjaChXLCBVLCBBLCBCKQojZGVmaW5lIF9tbV9tYXNrel9jbXVsX3BjaChVLCBBLCBCKSBfbW1fbWFza3pfZmNtdWxfcGNoKFUsIEEsIEIpCiNkZWZpbmUgX21tMjU2X2NtdWxfcGNoKEEsIEIpIF9tbTI1Nl9mY211bF9wY2goQSwgQikKI2RlZmluZSBfbW0yNTZfbWFza19jbXVsX3BjaChXLCBVLCBBLCBCKSBfbW0yNTZfbWFza19mY211bF9wY2goVywgVSwgQSwgQikKI2RlZmluZSBfbW0yNTZfbWFza3pfY211bF9wY2goVSwgQSwgQikgX21tMjU2X21hc2t6X2ZjbXVsX3BjaChVLCBBLCBCKQoKI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUzEyOAojdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2CgojZW5kaWYKAGF2eDUxMnZwb3BjbnRkcXZsaW50cmluLmgALyo9PT0tLS0tIGJ1aWx0aW5zLmggLSBTdGFuZGFyZCBoZWFkZXIgZm9yIGV4dHJhIGJ1aWx0aW5zIC0tLS0tLS0tLS0tLS0tLS0tPT09KlwKICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKXCo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ki8KCi8vLyBTb21lIGxlZ2FjeSBjb21waWxlcnMgaGF2ZSBidWlsdGluIGRlZmluaXRpb25zIGluIGEgZmlsZSBuYW1lZCBidWlsdGlucy5oLgovLy8gVGhpcyBoZWFkZXIgZmlsZSBoYXMgYmVlbiBhZGRlZCB0byBhbGxvdyBjb21wYXRpYmlsaXR5IHdpdGggY29kZSB0aGF0IHdhcwovLy8gd3JpdHRlbiBmb3IgdGhvc2UgY29tcGlsZXJzLiBDb2RlIG1heSBoYXZlIGFuIGluY2x1ZGUgbGluZSBmb3IgdGhpcyBmaWxlCi8vLyBhbmQgdG8gYXZvaWQgYW4gZXJyb3IgYW4gZW1wdHkgZmlsZSB3aXRoIHRoaXMgbmFtZSBpcyBwcm92aWRlZC4KI2lmbmRlZiBfX0JVSUxUSU5TX0gKI2RlZmluZSBfX0JVSUxUSU5TX0gKCiNlbmRpZiAvKiBfX0JVSUxUSU5TX0ggKi8KAC8qPT09LS0tLSBjbGRlbW90ZWludHJpbi5oIC0gQ0xERU1PVEUgaW50cmluc2ljIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKi8KCiNpZiAhZGVmaW5lZCBfX1g4NklOVFJJTl9IICYmICFkZWZpbmVkIF9fSU1NSU5UUklOX0gKI2Vycm9yICJOZXZlciB1c2UgPGNsZGVtb3RlaW50cmluLmg+IGRpcmVjdGx5OyBpbmNsdWRlIDx4ODZpbnRyaW4uaD4gaW5zdGVhZC4iCiNlbmRpZgoKI2lmbmRlZiBfX0NMREVNT1RFSU5UUklOX0gKI2RlZmluZSBfX0NMREVNT1RFSU5UUklOX0gKCi8qIERlZmluZSB0aGUgZGVmYXVsdCBhdHRyaWJ1dGVzIGZvciB0aGUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZS4gKi8KI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMgXAogIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgIF9fdGFyZ2V0X18oImNsZGVtb3RlIikpKQoKLy8vIEhpbnQgdG8gaGFyZHdhcmUgdGhhdCB0aGUgY2FjaGUgbGluZSB0aGF0IGNvbnRhaW5zIFxwIF9fUCBzaG91bGQgYmUgZGVtb3RlZAovLy8gZnJvbSB0aGUgY2FjaGUgY2xvc2VzdCB0byB0aGUgcHJvY2Vzc29yIGNvcmUgdG8gYSBsZXZlbCBtb3JlIGRpc3RhbnQgZnJvbQovLy8gdGhlIHByb2Nlc3NvciBjb3JlLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IENMREVNT1RFIDwvYz4gaW5zdHJ1Y3Rpb24uCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTCl9jbGRlbW90ZShjb25zdCB2b2lkICogX19QKSB7CiAgX19idWlsdGluX2lhMzJfY2xkZW1vdGUoX19QKTsKfQoKI2RlZmluZSBfbW1fY2xkZW1vdGUocCkgX2NsZGVtb3RlKHApCiN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlMKCiNlbmRpZgoAbHdwaW50cmluLmgAbXdhaXR4aW50cmluLmgALyo9PT0tLS0tLS0tLS0tLS0tLS0tLS0gdWludHJpbnRyaW4uaCAtIFVJTlRSIGludHJpbnNpY3MgLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwoKI2lmbmRlZiBfX1g4NkdQUklOVFJJTl9ICiNlcnJvciAiTmV2ZXIgdXNlIDx1aW50cmludHJpbi5oPiBkaXJlY3RseTsgaW5jbHVkZSA8eDg2Z3ByaW50cmluLmg+IGluc3RlYWQuIgojZW5kaWYKCiNpZm5kZWYgX19VSU5UUklOVFJJTl9ICiNkZWZpbmUgX19VSU5UUklOVFJJTl9ICgovKiBEZWZpbmUgdGhlIGRlZmF1bHQgYXR0cmlidXRlcyBmb3IgdGhlIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUgKi8KI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMgXAogIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygidWludHIiKSkpCgojaWZkZWYgX194ODZfNjRfXwoKc3RydWN0IF9fdWludHJfZnJhbWUKewogIHVuc2lnbmVkIGxvbmcgbG9uZyByaXA7CiAgdW5zaWduZWQgbG9uZyBsb25nIHJmbGFnczsKICB1bnNpZ25lZCBsb25nIGxvbmcgcnNwOwp9OwoKLy8vIENsZWFycyB0aGUgdXNlciBpbnRlcnJ1cHQgZmxhZyAoVUlGKS4gSXRzIGVmZmVjdCB0YWtlcyBwbGFjZSBpbW1lZGlhdGVseTogYQovLy8gICAgdXNlciBpbnRlcnJ1cHQgY2Fubm90IGJlIGRlbGl2ZXJlZCBvbiB0aGUgaW5zdHJ1Y3Rpb24gYm91bmRhcnkgZm9sbG93aW5nCi8vLyAgICBDTFVJLiBDYW4gYmUgZXhlY3V0ZWQgb25seSBpZiBDUjQuVUlOVCA9IDEsIHRoZSBsb2dpY2FsIHByb2Nlc3NvciBpcyBpbgovLy8gICAgNjQtYml0IG1vZGUsIGFuZCBzb2Z0d2FyZSBpcyBub3QgZXhlY3V0aW5nIGluc2lkZSBhbiBlbmNsYXZlOyBvdGhlcndpc2UsCi8vLyAgICBlYWNoIGNhdXNlcyBhbiBpbnZhbGlkLW9wY29kZSBleGNlcHRpb24uIENhdXNlcyBhIHRyYW5zYWN0aW9uYWwgYWJvcnQgaWYKLy8vICAgIGV4ZWN1dGVkIGluc2lkZSBhIHRyYW5zYWN0aW9uYWwgcmVnaW9uOyB0aGUgYWJvcnQgbG9hZHMgRUFYIGFzIGl0IHdvdWxkCi8vLyAgICBoYWQgaXQgYmVlbiBkdWUgdG8gYW4gZXhlY3V0aW9uIG9mIENMSS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2Z3ByaW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBDTFVJIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXG9wZXJhdGlvbgovLy8gICBVSUYgOj0gMAovLy8gXGVuZG9wZXJhdGlvbgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUwpfY2x1aSAodm9pZCkKewogIF9fYnVpbHRpbl9pYTMyX2NsdWkoKTsKfQoKLy8vIFNldHMgdGhlIHVzZXIgaW50ZXJydXB0IGZsYWcgKFVJRikuIEl0cyBlZmZlY3QgdGFrZXMgcGxhY2UgaW1tZWRpYXRlbHk7IGEKLy8vICAgIHVzZXIgaW50ZXJydXB0IG1heSBiZSBkZWxpdmVyZWQgb24gdGhlIGluc3RydWN0aW9uIGJvdW5kYXJ5IGZvbGxvd2luZwovLy8gICAgU1RVSS4gQ2FuIGJlIGV4ZWN1dGVkIG9ubHkgaWYgQ1I0LlVJTlQgPSAxLCB0aGUgbG9naWNhbCBwcm9jZXNzb3IgaXMgaW4KLy8vICAgIDY0LWJpdCBtb2RlLCBhbmQgc29mdHdhcmUgaXMgbm90IGV4ZWN1dGluZyBpbnNpZGUgYW4gZW5jbGF2ZTsgb3RoZXJ3aXNlLAovLy8gICAgZWFjaCBjYXVzZXMgYW4gaW52YWxpZC1vcGNvZGUgZXhjZXB0aW9uLiBDYXVzZXMgYSB0cmFuc2FjdGlvbmFsIGFib3J0IGlmCi8vLyAgICBleGVjdXRlZCBpbnNpZGUgYSB0cmFuc2FjdGlvbmFsIHJlZ2lvbjsgdGhlIGFib3J0IGxvYWRzIEVBWCBhcyBpdCB3b3VsZAovLy8gICAgaGFkIGl0IGJlZW4gZHVlIHRvIGFuIGV4ZWN1dGlvbiBvZiBTVEkuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmdwcmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gU1RVSSA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxvcGVyYXRpb24KLy8vICAgVUlGIDo9IDEKLy8vIFxlbmRvcGVyYXRpb24Kc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMKX3N0dWkgKHZvaWQpCnsKICBfX2J1aWx0aW5faWEzMl9zdHVpKCk7Cn0KCi8vLyBHZXQgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIHVzZXIgaW50ZXJydXB0IGZsYWcgKFVJRikuIENhbiBiZSBleGVjdXRlZAovLy8gICAgcmVnYXJkbGVzcyBvZiBDUEwgYW5kIGluc2lkZSBhIHRyYW5zYWN0aW9uYWwgcmVnaW9uLiBDYW4gYmUgZXhlY3V0ZWQgb25seQovLy8gICAgaWYgQ1I0LlVJTlQgPSAxLCB0aGUgbG9naWNhbCBwcm9jZXNzb3IgaXMgaW4gNjQtYml0IG1vZGUsIGFuZCBzb2Z0d2FyZSBpcwovLy8gICAgbm90IGV4ZWN1dGluZyBpbnNpZGUgYW4gZW5jbGF2ZTsgb3RoZXJ3aXNlLCBpdCBjYXVzZXMgYW4gaW52YWxpZC1vcGNvZGUKLy8vICAgIGV4Y2VwdGlvbi4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2Z3ByaW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBURVNUVUkgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccmV0dXJucyBUaGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgdXNlciBpbnRlcnJ1cHQgZmxhZyAoVUlGKS4KLy8vCi8vLyBcb3BlcmF0aW9uCi8vLyAgIENGIDo9IFVJRgovLy8gICBaRiA6PSAwCi8vLyAgIEFGIDo9IDAKLy8vICAgT0YgOj0gMAovLy8gICBQRiA6PSAwCi8vLyAgIFNGIDo9IDAKLy8vICAgZHN0IDo9IENGCi8vLyBcZW5kb3BlcmF0aW9uCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGNoYXIgX19ERUZBVUxUX0ZOX0FUVFJTCl90ZXN0dWkgKHZvaWQpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfdGVzdHVpKCk7Cn0KCi8vLyBTZW5kIGludGVycHJvY2Vzc29yIHVzZXIgaW50ZXJydXB0LiBDYW4gYmUgZXhlY3V0ZWQgb25seSBpZgovLy8gICAgQ1I0LlVJTlQgPSBJQTMyX1VJTlRfVFRbMF0gPSAxLCB0aGUgbG9naWNhbCBwcm9jZXNzb3IgaXMgaW4gNjQtYml0IG1vZGUsCi8vLyAgICBhbmQgc29mdHdhcmUgaXMgbm90IGV4ZWN1dGluZyBpbnNpZGUgYW4gZW5jbGF2ZTsgb3RoZXJ3aXNlLCBpdCBjYXVzZXMgYW4KLy8vICAgIGludmFsaWQtb3Bjb2RlIGV4Y2VwdGlvbi4gTWF5IGJlIGV4ZWN1dGVkIGF0IGFueSBwcml2aWxlZ2UgbGV2ZWwsIGFsbCBvZgovLy8gICAgaXRzIG1lbW9yeSBhY2Nlc3NlcyBhcmUgcGVyZm9ybWVkIHdpdGggc3VwZXJ2aXNvciBwcml2aWxlZ2UuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmdwcmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gU0VORFVJUEkgPC9jPiBpbnN0cnVjdGlvbgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEluZGV4IG9mIHVzZXItaW50ZXJydXB0IHRhcmdldCB0YWJsZSBlbnRyeSBpbiB1c2VyLWludGVycnVwdCB0YXJnZXQKLy8vICAgIHRhYmxlLgovLy8KLy8vIFxvcGVyYXRpb24KLy8vICAgSUYgX19hID4gVUlUVFNaCi8vLyAgICAgR1AgKDApCi8vLyAgIEZJCi8vLyAgIHRlbXBVSVRURSA6PSBNRU1bVUlUVEFERFIgKyAoYTw8NCldCi8vLyAgIC8vIHRlbXBVSVRURSBtdXN0IGJlIHZhbGlkLCBhbmQgY2FuJ3QgaGF2ZSBhbnkgcmVzZXJ2ZWQgYml0IHNldAovLy8gICBJRiAodGVtcFVJVFRFLlYgPT0gMCBPUiB0ZW1wVUlUVEVbNzoxXSAhPSAwKQovLy8gICAgIEdQICgwKQovLy8gICBGSQovLy8gICB0ZW1wVVBJRCA6PSBNRU1bdGVtcFVJVFRFLlVQSURBRERSXSAvLyB1bmRlciBsb2NrCi8vLyAgIC8vIHRlbXBVUElEIGNhbid0IGhhdmUgYW55IHJlc2VydmVkIGJpdCBzZXQKLy8vICAgSUYgKHRlbXBVUElEWzE1OjJdICE9IDAgT1IgdGVtcFVQSURbMzE6MjRdICE9IDApCi8vLyAgICAgR1AgKDApIC8vIHJlbGVhc2UgbG9jawovLy8gICBGSQovLy8gICB0ZW1wVVBJRC5QSVJbdGVtcFVJVFRFLlVWXSA6PSAxOwovLy8gICBJRiAodGVtcFVQSUQuU04gPT0gMCBBTkQgdGVtcFVQSUQuT04gPT0gMCkKLy8vICAgICB0ZW1wVVBJRC5PTiA6PSAxCi8vLyAgICAgc2VuZE5vdGlmeSA6PSAxCi8vLyAgIEVMU0UKLy8vICAgICBzZW5kTm90aWZ5IDo9IDAKLy8vICAgRkkKLy8vICAgTUVNW3RlbXBVSVRURS5VUElEQUREUl0gOj0gdGVtcFVQSUQgLy8gcmVsZWFzZSBsb2NrCi8vLyAgIElGIHNlbmROb3RpZnkgPT0gMQovLy8gICAgIElGIElBMzJfQVBJQ19CQVNFWzEwXSA9PSAxIC8vIGxvY2FsIEFQSUMgaXMgaW4geDJBUElDIG1vZGUKLy8vICAgICAgIC8vIHNlbmQgb3JkaW5hcnkgSVBJIHdpdGggdmVjdG9yIHRlbXBVUElELk5WIHRvIDMyLWJpdCBwaHlzaWNhbCBBUElDCi8vLyAgICAgICAvLyBJRCB0ZW1wVVBJRC5ORFNUCi8vLyAgICAgICBTZW5kT3JkaW5hcnlJUEkodGVtcFVQSUQuTlYsIHRlbXBVUElELk5EU1QpCi8vLyAgICAgRUxTRQovLy8gICAgICAgLy8gc2VuZCBvcmRpbmFyeSBJUEkgd2l0aCB2ZWN0b3IgdGVtcFVQSUQuTlYgdG8gOC1iaXQgcGh5c2ljYWwgQVBJQwovLy8gICAgICAgLy8gSUQgdGVtcFVQSUQuTkRTVFsxNTo4XQovLy8gICAgICAgU2VuZE9yZGluYXJ5SVBJKHRlbXBVUElELk5WLCB0ZW1wVVBJRC5ORFNUWzE1OjhdKQovLy8gICAgIEZJCi8vLyAgIEZJCi8vLyBcZW5kb3BlcmF0aW9uCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTCl9zZW5kdWlwaSAodW5zaWduZWQgbG9uZyBsb25nIF9fYSkKewogIF9fYnVpbHRpbl9pYTMyX3NlbmR1aXBpKF9fYSk7Cn0KCiNlbmRpZiAvKiBfX3g4Nl82NF9fICovCgojdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTCgojZW5kaWYgLyogX19VSU5UUklOVFJJTl9IICovCgB2YWVzaW50cmluLmgALy89PT0tLSBkZnNhbl9pbnRlcmZhY2UuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KLy8KLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KLy8KLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KLy8KLy8gVGhpcyBmaWxlIGlzIGEgcGFydCBvZiBEYXRhRmxvd1Nhbml0aXplci4KLy8KLy8gUHVibGljIGludGVyZmFjZSBoZWFkZXIuCi8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiNpZm5kZWYgREZTQU5fSU5URVJGQUNFX0gKI2RlZmluZSBERlNBTl9JTlRFUkZBQ0VfSAoKI2luY2x1ZGUgPHN0ZGRlZi5oPgojaW5jbHVkZSA8c3RkaW50Lmg+CiNpbmNsdWRlIDxzYW5pdGl6ZXIvY29tbW9uX2ludGVyZmFjZV9kZWZzLmg+CgojaWZkZWYgX19jcGx1c3BsdXMKZXh0ZXJuICJDIiB7CiNlbmRpZgoKdHlwZWRlZiB1aW50OF90IGRmc2FuX2xhYmVsOwp0eXBlZGVmIHVpbnQzMl90IGRmc2FuX29yaWdpbjsKCi8vLyBTaWduYXR1cmUgb2YgdGhlIGNhbGxiYWNrIGFyZ3VtZW50IHRvIGRmc2FuX3NldF93cml0ZV9jYWxsYmFjaygpLgp0eXBlZGVmIHZvaWQgKCpkZnNhbl93cml0ZV9jYWxsYmFja190KShpbnQgZmQsIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50KTsKCi8vLyBDb21wdXRlcyB0aGUgdW5pb24gb2YgXGMgbDEgYW5kIFxjIGwyLCByZXN1bHRpbmcgaW4gYSB1bmlvbiBsYWJlbC4KZGZzYW5fbGFiZWwgZGZzYW5fdW5pb24oZGZzYW5fbGFiZWwgbDEsIGRmc2FuX2xhYmVsIGwyKTsKCi8vLyBTZXRzIHRoZSBsYWJlbCBmb3IgZWFjaCBhZGRyZXNzIGluIFthZGRyLGFkZHIrc2l6ZSkgdG8gXGMgbGFiZWwuCnZvaWQgZGZzYW5fc2V0X2xhYmVsKGRmc2FuX2xhYmVsIGxhYmVsLCB2b2lkICphZGRyLCBzaXplX3Qgc2l6ZSk7CgovLy8gU2V0cyB0aGUgbGFiZWwgZm9yIGVhY2ggYWRkcmVzcyBpbiBbYWRkcixhZGRyK3NpemUpIHRvIHRoZSB1bmlvbiBvZiB0aGUKLy8vIGN1cnJlbnQgbGFiZWwgZm9yIHRoYXQgYWRkcmVzcyBhbmQgXGMgbGFiZWwuCnZvaWQgZGZzYW5fYWRkX2xhYmVsKGRmc2FuX2xhYmVsIGxhYmVsLCB2b2lkICphZGRyLCBzaXplX3Qgc2l6ZSk7CgovLy8gUmV0cmlldmVzIHRoZSBsYWJlbCBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIGRhdGEuCi8vLwovLy8gVGhlIHR5cGUgb2YgJ2RhdGEnIGlzIGFyYml0cmFyeS4gIFRoZSBmdW5jdGlvbiBhY2NlcHRzIGEgdmFsdWUgb2YgYW55IHR5cGUsCi8vLyB3aGljaCBjYW4gYmUgdHJ1bmNhdGVkIG9yIGV4dGVuZGVkIChpbXBsaWNpdGx5IG9yIGV4cGxpY2l0bHkpIGFzIG5lY2Vzc2FyeS4KLy8vIFRoZSB0cnVuY2F0aW9uL2V4dGVuc2lvbiBvcGVyYXRpb25zIHdpbGwgcHJlc2VydmUgdGhlIGxhYmVsIG9mIHRoZSBvcmlnaW5hbAovLy8gdmFsdWUuCmRmc2FuX2xhYmVsIGRmc2FuX2dldF9sYWJlbChsb25nIGRhdGEpOwoKLy8vIFJldHJpZXZlcyB0aGUgaW1tZWRpYXRlIG9yaWdpbiBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIGRhdGEuIFRoZSByZXR1cm5lZAovLy8gb3JpZ2luIG1heSBwb2ludCB0byBhbm90aGVyIG9yaWdpbi4KLy8vCi8vLyBUaGUgdHlwZSBvZiAnZGF0YScgaXMgYXJiaXRyYXJ5LgpkZnNhbl9vcmlnaW4gZGZzYW5fZ2V0X29yaWdpbihsb25nIGRhdGEpOwoKLy8vIFJldHJpZXZlcyB0aGUgbGFiZWwgYXNzb2NpYXRlZCB3aXRoIHRoZSBkYXRhIGF0IHRoZSBnaXZlbiBhZGRyZXNzLgpkZnNhbl9sYWJlbCBkZnNhbl9yZWFkX2xhYmVsKGNvbnN0IHZvaWQgKmFkZHIsIHNpemVfdCBzaXplKTsKCi8vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGdpdmVuIGxhYmVsIGxhYmVsIGNvbnRhaW5zIHRoZSBsYWJlbCBlbGVtLgppbnQgZGZzYW5faGFzX2xhYmVsKGRmc2FuX2xhYmVsIGxhYmVsLCBkZnNhbl9sYWJlbCBlbGVtKTsKCi8vLyBGbHVzaGVzIHRoZSBERlNhbiBzaGFkb3csIGkuZS4gZm9yZ2V0cyBhYm91dCBhbGwgbGFiZWxzIGN1cnJlbnRseSBhc3NvY2lhdGVkCi8vLyB3aXRoIHRoZSBhcHBsaWNhdGlvbiBtZW1vcnkuICBVc2UgdGhpcyBjYWxsIHRvIHN0YXJ0IG92ZXIgdGhlIHRhaW50IHRyYWNraW5nCi8vLyB3aXRoaW4gdGhlIHNhbWUgcHJvY2Vzcy4KLy8vCi8vLyBOb3RlOiBJZiBhbm90aGVyIHRocmVhZCBpcyB3b3JraW5nIHdpdGggdGFpbnRlZCBkYXRhIGR1cmluZyB0aGUgZmx1c2gsIHRoYXQKLy8vIHRhaW50IGNvdWxkIHN0aWxsIGJlIHdyaXR0ZW4gdG8gc2hhZG93IGFmdGVyIHRoZSBmbHVzaC4Kdm9pZCBkZnNhbl9mbHVzaCh2b2lkKTsKCi8vLyBTZXRzIGEgY2FsbGJhY2sgdG8gYmUgaW52b2tlZCBvbiBjYWxscyB0byB3cml0ZSgpLiAgVGhlIGNhbGxiYWNrIGlzIGludm9rZWQKLy8vIGJlZm9yZSB0aGUgd3JpdGUgaXMgZG9uZS4gIFRoZSB3cml0ZSBpcyBub3QgZ3VhcmFudGVlZCB0byBzdWNjZWVkIHdoZW4gdGhlCi8vLyBjYWxsYmFjayBleGVjdXRlcy4gIFBhc3MgaW4gTlVMTCB0byByZW1vdmUgYW55IGNhbGxiYWNrLgp2b2lkIGRmc2FuX3NldF93cml0ZV9jYWxsYmFjayhkZnNhbl93cml0ZV9jYWxsYmFja190IGxhYmVsZWRfd3JpdGVfY2FsbGJhY2spOwoKLy8vIEludGVyY2VwdG9yIGhvb2tzLgovLy8gV2hlbmV2ZXIgYSBkZnNhbidzIGN1c3RvbSBmdW5jdGlvbiBpcyBjYWxsZWQgdGhlIGNvcnJlc3BvbmRpbmcKLy8vIGhvb2sgaXMgY2FsbGVkIGl0IG5vbi16ZXJvLiBUaGUgaG9va3Mgc2hvdWxkIGJlIGRlZmluZWQgYnkgdGhlIHVzZXIuCi8vLyBUaGUgcHJpbWFyeSB1c2UgY2FzZSBpcyB0YWludC1ndWlkZWQgZnV6emluZywgd2hlcmUgdGhlIGZ1enplcgovLy8gbmVlZHMgdG8gc2VlIHRoZSBwYXJhbWV0ZXJzIG9mIHRoZSBmdW5jdGlvbiBhbmQgdGhlIGxhYmVscy4KLy8vIEZJWE1FOiBpbXBsZW1lbnQgbW9yZSBob29rcy4Kdm9pZCBkZnNhbl93ZWFrX2hvb2tfbWVtY21wKHZvaWQgKmNhbGxlcl9wYywgY29uc3Qgdm9pZCAqczEsIGNvbnN0IHZvaWQgKnMyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG4sIGRmc2FuX2xhYmVsIHMxX2xhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGZzYW5fbGFiZWwgczJfbGFiZWwsIGRmc2FuX2xhYmVsIG5fbGFiZWwpOwp2b2lkIGRmc2FuX3dlYWtfaG9va19zdHJuY21wKHZvaWQgKmNhbGxlcl9wYywgY29uc3QgY2hhciAqczEsIGNvbnN0IGNoYXIgKnMyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBuLCBkZnNhbl9sYWJlbCBzMV9sYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZnNhbl9sYWJlbCBzMl9sYWJlbCwgZGZzYW5fbGFiZWwgbl9sYWJlbCk7CgovLy8gUHJpbnRzIHRoZSBvcmlnaW4gdHJhY2Ugb2YgdGhlIGxhYmVsIGF0IHRoZSBhZGRyZXNzIGFkZHIgdG8gc3RkZXJyLiBJdCBhbHNvCi8vLyBwcmludHMgZGVzY3JpcHRpb24gYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgdHJhY2UuIElmIG9yaWdpbiB0cmFja2luZyBpcyBub3QKLy8vIG9uLCBvciB0aGUgYWRkcmVzcyBpcyBub3QgbGFiZWxlZCwgaXQgcHJpbnRzIG5vdGhpbmcuCnZvaWQgZGZzYW5fcHJpbnRfb3JpZ2luX3RyYWNlKGNvbnN0IHZvaWQgKmFkZHIsIGNvbnN0IGNoYXIgKmRlc2NyaXB0aW9uKTsKCi8vLyBQcmludHMgdGhlIG9yaWdpbiB0cmFjZSBvZiB0aGUgbGFiZWwgYXQgdGhlIGFkZHJlc3MgXHAgYWRkciB0byBhCi8vLyBwcmUtYWxsb2NhdGVkIG91dHB1dCBidWZmZXIuIElmIG9yaWdpbiB0cmFja2luZyBpcyBub3Qgb24sIG9yIHRoZSBhZGRyZXNzIGlzCi8vLyBub3QgbGFiZWxlZCwgaXQgcHJpbnRzIG5vdGhpbmcuCi8vLwovLy8gVHlwaWNhbCB1c2FnZToKLy8vIFxjb2RlCi8vLyAgIGNoYXIga0Rlc2NyaXB0aW9uW10gPSAiLi4uIjsKLy8vICAgY2hhciBidWZbMTAyNF07Ci8vLyAgIGRmc2FuX3NwcmludF9vcmlnaW5fdHJhY2UoJnRhaW50ZWRfdmFyLCBrRGVzY3JpcHRpb24sIGJ1Ziwgc2l6ZW9mKGJ1ZikpOwovLy8gXGVuZGNvZGUKLy8vCi8vLyBUeXBpY2FsIHVzYWdlIHRoYXQgaGFuZGxlcyB0cnVuY2F0aW9uOgovLy8gXGNvZGUKLy8vICAgY2hhciBidWZbMTAyNF07Ci8vLyAgIGludCBsZW4gPSBkZnNhbl9zcHJpbnRfb3JpZ2luX3RyYWNlKCZ2YXIsIG51bGxwdHIsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOwovLy8KLy8vICAgaWYgKGxlbiA8IHNpemVvZihidWYpKSB7Ci8vLyAgICAgUHJvY2Vzc09yaWdpblRyYWNlKGJ1Zik7Ci8vLyAgIH0gZWxzZSB7Ci8vLyAgICAgY2hhciAqdG1wYnVmID0gbmV3IGNoYXJbbGVuICsgMV07Ci8vLyAgICAgZGZzYW5fc3ByaW50X29yaWdpbl90cmFjZSgmdmFyLCBudWxscHRyLCB0bXBidWYsIGxlbiArIDEpOwovLy8gICAgIFByb2Nlc3NPcmlnaW5UcmFjZSh0bXBidWYpOwovLy8gICAgIGRlbGV0ZVtdIHRtcGJ1ZjsKLy8vICAgfQovLy8gXGVuZGNvZGUKLy8vCi8vLyBccGFyYW0gYWRkciBUaGUgdGFpbnRlZCBtZW1vcnkgYWRkcmVzcyB3aG9zZSBvcmlnaW4gd2UgYXJlIHByaW50aW5nLgovLy8gXHBhcmFtIGRlc2NyaXB0aW9uIEEgZGVzY3JpcHRpb24gcHJpbnRlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSB0cmFjZS4KLy8vIFxwYXJhbSBbb3V0XSBvdXRfYnVmIFRoZSBvdXRwdXQgYnVmZmVyIHRvIHdyaXRlIHRoZSByZXN1bHRzIHRvLgovLy8gXHBhcmFtIG91dF9idWZfc2l6ZSBUaGUgc2l6ZSBvZiBccCBvdXRfYnVmLgovLy8KLy8vIFxyZXR1cm5zIFRoZSBudW1iZXIgb2Ygc3ltYm9scyB0aGF0IHNob3VsZCBoYXZlIGJlZW4gd3JpdHRlbiB0byBccCBvdXRfYnVmCi8vLyAobm90IGluY2x1ZGluZyB0cmFpbGluZyBudWxsIGJ5dGUgJ1wwJykuIFRodXMsIHRoZSBzdHJpbmcgaXMgdHJ1bmNhdGVkIGlmZgovLy8gcmV0dXJuIHZhbHVlIGlzIG5vdCBsZXNzIHRoYW4gXHAgb3V0X2J1Zl9zaXplLgpzaXplX3QgZGZzYW5fc3ByaW50X29yaWdpbl90cmFjZShjb25zdCB2b2lkICphZGRyLCBjb25zdCBjaGFyICpkZXNjcmlwdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqb3V0X2J1Ziwgc2l6ZV90IG91dF9idWZfc2l6ZSk7CgovLy8gUHJpbnRzIHRoZSBzdGFjayB0cmFjZSBsZWFkaW5nIHRvIHRoaXMgY2FsbCB0byBhIHByZS1hbGxvY2F0ZWQgb3V0cHV0Ci8vLyBidWZmZXIuCi8vLwovLy8gRm9yIHVzYWdlIGV4YW1wbGVzLCBzZWUgZGZzYW5fc3ByaW50X29yaWdpbl90cmFjZS4KLy8vCi8vLyBccGFyYW0gW291dF0gb3V0X2J1ZiBUaGUgb3V0cHV0IGJ1ZmZlciB0byB3cml0ZSB0aGUgcmVzdWx0cyB0by4KLy8vIFxwYXJhbSBvdXRfYnVmX3NpemUgVGhlIHNpemUgb2YgXHAgb3V0X2J1Zi4KLy8vCi8vLyBccmV0dXJucyBUaGUgbnVtYmVyIG9mIHN5bWJvbHMgdGhhdCBzaG91bGQgaGF2ZSBiZWVuIHdyaXR0ZW4gdG8gXHAgb3V0X2J1ZgovLy8gKG5vdCBpbmNsdWRpbmcgdHJhaWxpbmcgbnVsbCBieXRlICdcMCcpLiBUaHVzLCB0aGUgc3RyaW5nIGlzIHRydW5jYXRlZCBpZmYKLy8vIHJldHVybiB2YWx1ZSBpcyBub3QgbGVzcyB0aGFuIFxwIG91dF9idWZfc2l6ZS4Kc2l6ZV90IGRmc2FuX3NwcmludF9zdGFja190cmFjZShjaGFyICpvdXRfYnVmLCBzaXplX3Qgb3V0X2J1Zl9zaXplKTsKCi8vLyBSZXRyaWV2ZXMgdGhlIHZlcnkgZmlyc3Qgb3JpZ2luIGFzc29jaWF0ZWQgd2l0aCB0aGUgZGF0YSBhdCB0aGUgZ2l2ZW4KLy8vIGFkZHJlc3MuCmRmc2FuX29yaWdpbiBkZnNhbl9nZXRfaW5pdF9vcmlnaW4oY29uc3Qgdm9pZCAqYWRkcik7CgovLy8gUmV0dXJucyB0aGUgdmFsdWUgb2YgLWRmc2FuLXRyYWNrLW9yaWdpbnMuCi8vLyAqIDA6IGRvIG5vdCB0cmFjayBvcmlnaW5zLgovLy8gKiAxOiB0cmFjayBvcmlnaW5zIGF0IG1lbW9yeSBzdG9yZSBvcGVyYXRpb25zLgovLy8gKiAyOiB0cmFjayBvcmlnaW5zIGF0IG1lbW9yeSBsb2FkIGFuZCBzdG9yZSBvcGVyYXRpb25zLgppbnQgZGZzYW5fZ2V0X3RyYWNrX29yaWdpbnModm9pZCk7CiNpZmRlZiBfX2NwbHVzcGx1cwp9ICAvLyBleHRlcm4gIkMiCgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBkZnNhbl9zZXRfbGFiZWwoZGZzYW5fbGFiZWwgbGFiZWwsIFQgJmRhdGEpIHsKICBkZnNhbl9zZXRfbGFiZWwobGFiZWwsICh2b2lkICopJmRhdGEsIHNpemVvZihUKSk7Cn0KCiNlbmRpZgoKI2VuZGlmICAvLyBERlNBTl9JTlRFUkZBQ0VfSAoAQ2FwdHVyZSBpbmRleCBvdXQgb2YgcmFuZ2U6IABVbmhhbmRsZWQgAEJhZCBhcmcgaW4ga0luc3RDYXB0dXJlOiAAbm8gZXJyb3IARG9Db2FsZXNjZSBmYWlsZWQ6IHIxLT5vcCgpIGlzIAB7JWQsfQAoKXt9W10qKz98Ll4kXABBcmFiaWMAQ2hhbQBEZXNlcmV0AExpbmVhcl9CAE9sZF9JdGFsaWMAVGhhYW5hAHNpZ2FjdGlvbihkYXRhLT5zaWdubywgJmFjdCwgJmRhdGEtPnByZXZpb3VzX2FjdGlvbikgPT0gMABmZCBvdXQgb2YgcmFuZ2UAZXh0ZXJuYWwvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9zeW1ib2xpemVfZWxmLmluYwBwLnBfdHlwZSA9PSBQVF9OVUxMAGZuICE9ICZJbml0QW5kR2V0Q1BVAGJhZCBtYWdpYyBudW1iZXIgaW4gTmV4dCgpAGJhZCBhcmVuYSBwb2ludGVyIGluIE5leHQoKQB7dW5uYW1lZCB0eXBlIwBvbwAgZXhjZWVkcyBDb3JkJ3Mgc2l6ZSAAKi4qAHRydWUAd2FrZV9saXN0ICE9IGtQZXJUaHJlYWRTeW5jaE51bGwAQUVTX3NldF9kZWNyeXB0X2tleSBmYWlsZWQuCgBTSEEtNTEyIEtBVABFQ0RTQSBzaWduYXR1cmUgS0FUIGZhaWxlZC4KAGV4dGVybmFsL2JvcmluZ3NzbC9zcmMvY3J5cHRvL21lbS5jAHVua25vd24gZXJyb3IARFNBIHJvdXRpbmVzAGNmZy10ZW1wb3JhcnktZHRvcnM9dHJ1ZQApJABLWVRIRV9CVUlMRF9DT05GSUcAc3lzdGVtX2hlYWRlcl9wcmVmaXgAaW5wdXRzLnNpemUoKQBHTlVtb2RlAG5vdF9HTlVNb2RlAG5vdF9PYmpDAF9fY2xhbmdfaGlwX2xpYmRldmljZV9kZWNsYXJlcy5oAF9fc3RkZGVmX21heF9hbGlnbl90LmgAYW1taW50cmluLmgALyo9PT0tLS0tIGFybV9tdmUuaCAtIEFSTSBNVkUgaW50cmluc2ljcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKgogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwoKI2lmbmRlZiBfX0FSTV9NVkVfSAojZGVmaW5lIF9fQVJNX01WRV9ICgojaWYgIV9fQVJNX0ZFQVRVUkVfTVZFCiNlcnJvciAiTVZFIHN1cHBvcnQgbm90IGVuYWJsZWQiCiNlbmRpZgoKI2luY2x1ZGUgPHN0ZGludC5oPgoKI2lmZGVmIF9fY3BsdXNwbHVzCmV4dGVybiAiQyIgewojZW5kaWYKCnR5cGVkZWYgdWludDE2X3QgbXZlX3ByZWQxNl90Owp0eXBlZGVmIF9fYXR0cmlidXRlX18oKF9fbmVvbl92ZWN0b3JfdHlwZV9fKDgpLCBfX2NsYW5nX2FybV9tdmVfc3RyaWN0X3BvbHltb3JwaGlzbSkpIGludDE2X3QgaW50MTZ4OF90Owp0eXBlZGVmIHN0cnVjdCB7IGludDE2eDhfdCB2YWxbMl07IH0gaW50MTZ4OHgyX3Q7CnR5cGVkZWYgc3RydWN0IHsgaW50MTZ4OF90IHZhbFs0XTsgfSBpbnQxNng4eDRfdDsKdHlwZWRlZiBfX2F0dHJpYnV0ZV9fKChfX25lb25fdmVjdG9yX3R5cGVfXyg0KSwgX19jbGFuZ19hcm1fbXZlX3N0cmljdF9wb2x5bW9ycGhpc20pKSBpbnQzMl90IGludDMyeDRfdDsKdHlwZWRlZiBzdHJ1Y3QgeyBpbnQzMng0X3QgdmFsWzJdOyB9IGludDMyeDR4Ml90Owp0eXBlZGVmIHN0cnVjdCB7IGludDMyeDRfdCB2YWxbNF07IH0gaW50MzJ4NHg0X3Q7CnR5cGVkZWYgX19hdHRyaWJ1dGVfXygoX19uZW9uX3ZlY3Rvcl90eXBlX18oMiksIF9fY2xhbmdfYXJtX212ZV9zdHJpY3RfcG9seW1vcnBoaXNtKSkgaW50NjRfdCBpbnQ2NHgyX3Q7CnR5cGVkZWYgc3RydWN0IHsgaW50NjR4Ml90IHZhbFsyXTsgfSBpbnQ2NHgyeDJfdDsKdHlwZWRlZiBzdHJ1Y3QgeyBpbnQ2NHgyX3QgdmFsWzRdOyB9IGludDY0eDJ4NF90Owp0eXBlZGVmIF9fYXR0cmlidXRlX18oKF9fbmVvbl92ZWN0b3JfdHlwZV9fKDE2KSwgX19jbGFuZ19hcm1fbXZlX3N0cmljdF9wb2x5bW9ycGhpc20pKSBpbnQ4X3QgaW50OHgxNl90Owp0eXBlZGVmIHN0cnVjdCB7IGludDh4MTZfdCB2YWxbMl07IH0gaW50OHgxNngyX3Q7CnR5cGVkZWYgc3RydWN0IHsgaW50OHgxNl90IHZhbFs0XTsgfSBpbnQ4eDE2eDRfdDsKdHlwZWRlZiBfX2F0dHJpYnV0ZV9fKChfX25lb25fdmVjdG9yX3R5cGVfXyg4KSwgX19jbGFuZ19hcm1fbXZlX3N0cmljdF9wb2x5bW9ycGhpc20pKSB1aW50MTZfdCB1aW50MTZ4OF90Owp0eXBlZGVmIHN0cnVjdCB7IHVpbnQxNng4X3QgdmFsWzJdOyB9IHVpbnQxNng4eDJfdDsKdHlwZWRlZiBzdHJ1Y3QgeyB1aW50MTZ4OF90IHZhbFs0XTsgfSB1aW50MTZ4OHg0X3Q7CnR5cGVkZWYgX19hdHRyaWJ1dGVfXygoX19uZW9uX3ZlY3Rvcl90eXBlX18oNCksIF9fY2xhbmdfYXJtX212ZV9zdHJpY3RfcG9seW1vcnBoaXNtKSkgdWludDMyX3QgdWludDMyeDRfdDsKdHlwZWRlZiBzdHJ1Y3QgeyB1aW50MzJ4NF90IHZhbFsyXTsgfSB1aW50MzJ4NHgyX3Q7CnR5cGVkZWYgc3RydWN0IHsgdWludDMyeDRfdCB2YWxbNF07IH0gdWludDMyeDR4NF90Owp0eXBlZGVmIF9fYXR0cmlidXRlX18oKF9fbmVvbl92ZWN0b3JfdHlwZV9fKDIpLCBfX2NsYW5nX2FybV9tdmVfc3RyaWN0X3BvbHltb3JwaGlzbSkpIHVpbnQ2NF90IHVpbnQ2NHgyX3Q7CnR5cGVkZWYgc3RydWN0IHsgdWludDY0eDJfdCB2YWxbMl07IH0gdWludDY0eDJ4Ml90Owp0eXBlZGVmIHN0cnVjdCB7IHVpbnQ2NHgyX3QgdmFsWzRdOyB9IHVpbnQ2NHgyeDRfdDsKdHlwZWRlZiBfX2F0dHJpYnV0ZV9fKChfX25lb25fdmVjdG9yX3R5cGVfXygxNiksIF9fY2xhbmdfYXJtX212ZV9zdHJpY3RfcG9seW1vcnBoaXNtKSkgdWludDhfdCB1aW50OHgxNl90Owp0eXBlZGVmIHN0cnVjdCB7IHVpbnQ4eDE2X3QgdmFsWzJdOyB9IHVpbnQ4eDE2eDJfdDsKdHlwZWRlZiBzdHJ1Y3QgeyB1aW50OHgxNl90IHZhbFs0XTsgfSB1aW50OHgxNng0X3Q7CgpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX2FzcmwpKSkKaW50NjRfdCBfX2FybV9hc3JsKGludDY0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX2xzbGwpKSkKdWludDY0X3QgX19hcm1fbHNsbCh1aW50NjRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfc3Fyc2hyKSkpCmludDMyX3QgX19hcm1fc3Fyc2hyKGludDMyX3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3NxcnNocmwpKSkKaW50NjRfdCBfX2FybV9zcXJzaHJsKGludDY0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3NxcnNocmxfc2F0NDgpKSkKaW50NjRfdCBfX2FybV9zcXJzaHJsX3NhdDQ4KGludDY0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Nxc2hsKSkpCmludDMyX3QgX19hcm1fc3FzaGwoaW50MzJfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV9zcXNobGwpKSkKaW50NjRfdCBfX2FybV9zcXNobGwoaW50NjRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV9zcnNocikpKQppbnQzMl90IF9fYXJtX3Nyc2hyKGludDMyX3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfc3JzaHJsKSkpCmludDY0X3QgX19hcm1fc3JzaHJsKGludDY0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdXFyc2hsKSkpCnVpbnQzMl90IF9fYXJtX3VxcnNobCh1aW50MzJfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdXFyc2hsbCkpKQp1aW50NjRfdCBfX2FybV91cXJzaGxsKHVpbnQ2NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV91cXJzaGxsX3NhdDQ4KSkpCnVpbnQ2NF90IF9fYXJtX3VxcnNobGxfc2F0NDgodWludDY0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Vxc2hsKSkpCnVpbnQzMl90IF9fYXJtX3Vxc2hsKHVpbnQzMl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Vxc2hsbCkpKQp1aW50NjRfdCBfX2FybV91cXNobGwodWludDY0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdXJzaHIpKSkKdWludDMyX3QgX19hcm1fdXJzaHIodWludDMyX3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdXJzaHJsKSkpCnVpbnQ2NF90IF9fYXJtX3Vyc2hybCh1aW50NjRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJhdnFfcF9zMTYpKSkKdWludDMyX3QgX19hcm1fdmFiYXZxX3BfczE2KHVpbnQzMl90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJhdnFfcF9zMTYpKSkKdWludDMyX3QgX19hcm1fdmFiYXZxX3AodWludDMyX3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmF2cV9wX3MzMikpKQp1aW50MzJfdCBfX2FybV92YWJhdnFfcF9zMzIodWludDMyX3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmF2cV9wX3MzMikpKQp1aW50MzJfdCBfX2FybV92YWJhdnFfcCh1aW50MzJfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiYXZxX3BfczgpKSkKdWludDMyX3QgX19hcm1fdmFiYXZxX3BfczgodWludDMyX3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmF2cV9wX3M4KSkpCnVpbnQzMl90IF9fYXJtX3ZhYmF2cV9wKHVpbnQzMl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJhdnFfcF91MTYpKSkKdWludDMyX3QgX19hcm1fdmFiYXZxX3BfdTE2KHVpbnQzMl90LCB1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmF2cV9wX3UxNikpKQp1aW50MzJfdCBfX2FybV92YWJhdnFfcCh1aW50MzJfdCwgdWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJhdnFfcF91MzIpKSkKdWludDMyX3QgX19hcm1fdmFiYXZxX3BfdTMyKHVpbnQzMl90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmF2cV9wX3UzMikpKQp1aW50MzJfdCBfX2FybV92YWJhdnFfcCh1aW50MzJfdCwgdWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJhdnFfcF91OCkpKQp1aW50MzJfdCBfX2FybV92YWJhdnFfcF91OCh1aW50MzJfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJhdnFfcF91OCkpKQp1aW50MzJfdCBfX2FybV92YWJhdnFfcCh1aW50MzJfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJhdnFfczE2KSkpCnVpbnQzMl90IF9fYXJtX3ZhYmF2cV9zMTYodWludDMyX3QsIGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJhdnFfczE2KSkpCnVpbnQzMl90IF9fYXJtX3ZhYmF2cSh1aW50MzJfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmF2cV9zMzIpKSkKdWludDMyX3QgX19hcm1fdmFiYXZxX3MzMih1aW50MzJfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmF2cV9zMzIpKSkKdWludDMyX3QgX19hcm1fdmFiYXZxKHVpbnQzMl90LCBpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiYXZxX3M4KSkpCnVpbnQzMl90IF9fYXJtX3ZhYmF2cV9zOCh1aW50MzJfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmF2cV9zOCkpKQp1aW50MzJfdCBfX2FybV92YWJhdnEodWludDMyX3QsIGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJhdnFfdTE2KSkpCnVpbnQzMl90IF9fYXJtX3ZhYmF2cV91MTYodWludDMyX3QsIHVpbnQxNng4X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmF2cV91MTYpKSkKdWludDMyX3QgX19hcm1fdmFiYXZxKHVpbnQzMl90LCB1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJhdnFfdTMyKSkpCnVpbnQzMl90IF9fYXJtX3ZhYmF2cV91MzIodWludDMyX3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmF2cV91MzIpKSkKdWludDMyX3QgX19hcm1fdmFiYXZxKHVpbnQzMl90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJhdnFfdTgpKSkKdWludDMyX3QgX19hcm1fdmFiYXZxX3U4KHVpbnQzMl90LCB1aW50OHgxNl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJhdnFfdTgpKSkKdWludDMyX3QgX19hcm1fdmFiYXZxKHVpbnQzMl90LCB1aW50OHgxNl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJkcV9tX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmFiZHFfbV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJkcV9tX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmFiZHFfbShpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmRxX21fczMyKSkpCmludDMyeDRfdCBfX2FybV92YWJkcV9tX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmRxX21fczMyKSkpCmludDMyeDRfdCBfX2FybV92YWJkcV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiZHFfbV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdmFiZHFfbV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmRxX21fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZhYmRxX20oaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJkcV9tX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZhYmRxX21fdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiZHFfbV91MTYpKSkKdWludDE2eDhfdCBfX2FybV92YWJkcV9tKHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiZHFfbV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92YWJkcV9tX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmRxX21fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmFiZHFfbSh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmRxX21fdTgpKSkKdWludDh4MTZfdCBfX2FybV92YWJkcV9tX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiZHFfbV91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZhYmRxX20odWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJkcV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZhYmRxX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiZHFfczE2KSkpCmludDE2eDhfdCBfX2FybV92YWJkcShpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiZHFfczMyKSkpCmludDMyeDRfdCBfX2FybV92YWJkcV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmRxX3MzMikpKQppbnQzMng0X3QgX19hcm1fdmFiZHEoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmRxX3M4KSkpCmludDh4MTZfdCBfX2FybV92YWJkcV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiZHFfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZhYmRxKGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJkcV91MTYpKSkKdWludDE2eDhfdCBfX2FybV92YWJkcV91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiZHFfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmFiZHEodWludDE2eDhfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiZHFfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmFiZHFfdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmRxX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZhYmRxKHVpbnQzMng0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmRxX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmFiZHFfdTgodWludDh4MTZfdCwgdWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiZHFfdTgpKSkKdWludDh4MTZfdCBfX2FybV92YWJkcSh1aW50OHgxNl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJkcV94X3MxNikpKQppbnQxNng4X3QgX19hcm1fdmFiZHFfeF9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiZHFfeF9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZhYmRxX3goaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiZHFfeF9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZhYmRxX3hfczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmRxX3hfczMyKSkpCmludDMyeDRfdCBfX2FybV92YWJkcV94KGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmRxX3hfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZhYmRxX3hfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiZHFfeF9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdmFiZHFfeChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJkcV94X3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZhYmRxX3hfdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiZHFfeF91MTYpKSkKdWludDE2eDhfdCBfX2FybV92YWJkcV94KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiZHFfeF91MzIpKSkKdWludDMyeDRfdCBfX2FybV92YWJkcV94X3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmRxX3hfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmFiZHFfeCh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmRxX3hfdTgpKSkKdWludDh4MTZfdCBfX2FybV92YWJkcV94X3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiZHFfeF91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZhYmRxX3godWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJzcV9tX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmFic3FfbV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFic3FfbV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZhYnNxX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFic3FfbV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZhYnNxX21fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYnNxX21fczMyKSkpCmludDMyeDRfdCBfX2FybV92YWJzcV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYnNxX21fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZhYnNxX21fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFic3FfbV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdmFic3FfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJzcV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZhYnNxX3MxNihpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYnNxX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmFic3EoaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJzcV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZhYnNxX3MzMihpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYnNxX3MzMikpKQppbnQzMng0X3QgX19hcm1fdmFic3EoaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJzcV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdmFic3FfczgoaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJzcV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdmFic3EoaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJzcV94X3MxNikpKQppbnQxNng4X3QgX19hcm1fdmFic3FfeF9zMTYoaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYnNxX3hfczE2KSkpCmludDE2eDhfdCBfX2FybV92YWJzcV94KGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJzcV94X3MzMikpKQppbnQzMng0X3QgX19hcm1fdmFic3FfeF9zMzIoaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYnNxX3hfczMyKSkpCmludDMyeDRfdCBfX2FybV92YWJzcV94KGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJzcV94X3M4KSkpCmludDh4MTZfdCBfX2FybV92YWJzcV94X3M4KGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJzcV94X3M4KSkpCmludDh4MTZfdCBfX2FybV92YWJzcV94KGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRjaXFfbV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZhZGNpcV9tX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCB1bnNpZ25lZCAqLCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGNpcV9tX3MzMikpKQppbnQzMng0X3QgX19hcm1fdmFkY2lxX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgdW5zaWduZWQgKiwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRjaXFfbV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92YWRjaXFfbV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgdWludDMyeDRfdCwgdW5zaWduZWQgKiwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRjaXFfbV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92YWRjaXFfbSh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1bnNpZ25lZCAqLCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGNpcV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZhZGNpcV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIHVuc2lnbmVkICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGNpcV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZhZGNpcShpbnQzMng0X3QsIGludDMyeDRfdCwgdW5zaWduZWQgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkY2lxX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZhZGNpcV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgdW5zaWduZWQgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkY2lxX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZhZGNpcSh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1bnNpZ25lZCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRjcV9tX3MzMikpKQppbnQzMng0X3QgX19hcm1fdmFkY3FfbV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgdW5zaWduZWQgKiwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRjcV9tX3MzMikpKQppbnQzMng0X3QgX19hcm1fdmFkY3FfbShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCB1bnNpZ25lZCAqLCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGNxX21fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmFkY3FfbV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgdWludDMyeDRfdCwgdW5zaWduZWQgKiwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRjcV9tX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZhZGNxX20odWludDMyeDRfdCwgdWludDMyeDRfdCwgdWludDMyeDRfdCwgdW5zaWduZWQgKiwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRjcV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZhZGNxX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgdW5zaWduZWQgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkY3FfczMyKSkpCmludDMyeDRfdCBfX2FybV92YWRjcShpbnQzMng0X3QsIGludDMyeDRfdCwgdW5zaWduZWQgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkY3FfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmFkY3FfdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVuc2lnbmVkICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGNxX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZhZGNxKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVuc2lnbmVkICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRsdmFxX3BfczMyKSkpCmludDY0X3QgX19hcm1fdmFkZGx2YXFfcF9zMzIoaW50NjRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRsdmFxX3BfczMyKSkpCmludDY0X3QgX19hcm1fdmFkZGx2YXFfcChpbnQ2NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZGx2YXFfcF91MzIpKSkKdWludDY0X3QgX19hcm1fdmFkZGx2YXFfcF91MzIodWludDY0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZGx2YXFfcF91MzIpKSkKdWludDY0X3QgX19hcm1fdmFkZGx2YXFfcCh1aW50NjRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkbHZhcV9zMzIpKSkKaW50NjRfdCBfX2FybV92YWRkbHZhcV9zMzIoaW50NjRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkbHZhcV9zMzIpKSkKaW50NjRfdCBfX2FybV92YWRkbHZhcShpbnQ2NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRsdmFxX3UzMikpKQp1aW50NjRfdCBfX2FybV92YWRkbHZhcV91MzIodWludDY0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRsdmFxX3UzMikpKQp1aW50NjRfdCBfX2FybV92YWRkbHZhcSh1aW50NjRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZGx2cV9wX3MzMikpKQppbnQ2NF90IF9fYXJtX3ZhZGRsdnFfcF9zMzIoaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRsdnFfcF9zMzIpKSkKaW50NjRfdCBfX2FybV92YWRkbHZxX3AoaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRsdnFfcF91MzIpKSkKdWludDY0X3QgX19hcm1fdmFkZGx2cV9wX3UzMih1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRsdnFfcF91MzIpKSkKdWludDY0X3QgX19hcm1fdmFkZGx2cV9wKHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZGx2cV9zMzIpKSkKaW50NjRfdCBfX2FybV92YWRkbHZxX3MzMihpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRsdnFfczMyKSkpCmludDY0X3QgX19hcm1fdmFkZGx2cShpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRsdnFfdTMyKSkpCnVpbnQ2NF90IF9fYXJtX3ZhZGRsdnFfdTMyKHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRsdnFfdTMyKSkpCnVpbnQ2NF90IF9fYXJtX3ZhZGRsdnEodWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfbV9uX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmFkZHFfbV9uX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV9tX25fczE2KSkpCmludDE2eDhfdCBfX2FybV92YWRkcV9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX21fbl9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZhZGRxX21fbl9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfbV9uX3MzMikpKQppbnQzMng0X3QgX19hcm1fdmFkZHFfbShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV9tX25fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZhZGRxX21fbl9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX21fbl9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdmFkZHFfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX21fbl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92YWRkcV9tX25fdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX21fbl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92YWRkcV9tKHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX21fbl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92YWRkcV9tX25fdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX21fbl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92YWRkcV9tKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX21fbl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZhZGRxX21fbl91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX21fbl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZhZGRxX20odWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV9tX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmFkZHFfbV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV9tX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmFkZHFfbShpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX21fczMyKSkpCmludDMyeDRfdCBfX2FybV92YWRkcV9tX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX21fczMyKSkpCmludDMyeDRfdCBfX2FybV92YWRkcV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfbV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdmFkZHFfbV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX21fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZhZGRxX20oaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV9tX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZhZGRxX21fdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfbV91MTYpKSkKdWludDE2eDhfdCBfX2FybV92YWRkcV9tKHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfbV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92YWRkcV9tX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX21fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmFkZHFfbSh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX21fdTgpKSkKdWludDh4MTZfdCBfX2FybV92YWRkcV9tX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfbV91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZhZGRxX20odWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV9uX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmFkZHFfbl9zMTYoaW50MTZ4OF90LCBpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV9uX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmFkZHEoaW50MTZ4OF90LCBpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV9uX3MzMikpKQppbnQzMng0X3QgX19hcm1fdmFkZHFfbl9zMzIoaW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV9uX3MzMikpKQppbnQzMng0X3QgX19hcm1fdmFkZHEoaW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV9uX3M4KSkpCmludDh4MTZfdCBfX2FybV92YWRkcV9uX3M4KGludDh4MTZfdCwgaW50OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV9uX3M4KSkpCmludDh4MTZfdCBfX2FybV92YWRkcShpbnQ4eDE2X3QsIGludDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfbl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92YWRkcV9uX3UxNih1aW50MTZ4OF90LCB1aW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfbl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92YWRkcSh1aW50MTZ4OF90LCB1aW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfbl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92YWRkcV9uX3UzMih1aW50MzJ4NF90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfbl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92YWRkcSh1aW50MzJ4NF90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfbl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZhZGRxX25fdTgodWludDh4MTZfdCwgdWludDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfbl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZhZGRxKHVpbnQ4eDE2X3QsIHVpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmFkZHFfczE2KGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZhZGRxKGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZhZGRxX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfczMyKSkpCmludDMyeDRfdCBfX2FybV92YWRkcShpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZhZGRxX3M4KGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdmFkZHEoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZhZGRxX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV91MTYpKSkKdWludDE2eDhfdCBfX2FybV92YWRkcSh1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92YWRkcV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmFkZHEodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfdTgpKSkKdWludDh4MTZfdCBfX2FybV92YWRkcV91OCh1aW50OHgxNl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZhZGRxKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX3hfbl9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZhZGRxX3hfbl9zMTYoaW50MTZ4OF90LCBpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX3hfbl9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZhZGRxX3goaW50MTZ4OF90LCBpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX3hfbl9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZhZGRxX3hfbl9zMzIoaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX3hfbl9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZhZGRxX3goaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX3hfbl9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdmFkZHFfeF9uX3M4KGludDh4MTZfdCwgaW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX3hfbl9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdmFkZHFfeChpbnQ4eDE2X3QsIGludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV94X25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmFkZHFfeF9uX3UxNih1aW50MTZ4OF90LCB1aW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV94X25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmFkZHFfeCh1aW50MTZ4OF90LCB1aW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV94X25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmFkZHFfeF9uX3UzMih1aW50MzJ4NF90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV94X25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmFkZHFfeCh1aW50MzJ4NF90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV94X25fdTgpKSkKdWludDh4MTZfdCBfX2FybV92YWRkcV94X25fdTgodWludDh4MTZfdCwgdWludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV94X25fdTgpKSkKdWludDh4MTZfdCBfX2FybV92YWRkcV94KHVpbnQ4eDE2X3QsIHVpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfeF9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZhZGRxX3hfczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX3hfczE2KSkpCmludDE2eDhfdCBfX2FybV92YWRkcV94KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX3hfczMyKSkpCmludDMyeDRfdCBfX2FybV92YWRkcV94X3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV94X3MzMikpKQppbnQzMng0X3QgX19hcm1fdmFkZHFfeChpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV94X3M4KSkpCmludDh4MTZfdCBfX2FybV92YWRkcV94X3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX3hfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZhZGRxX3goaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfeF91MTYpKSkKdWludDE2eDhfdCBfX2FybV92YWRkcV94X3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX3hfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmFkZHFfeCh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX3hfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmFkZHFfeF91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV94X3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZhZGRxX3godWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV94X3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmFkZHFfeF91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX3hfdTgpKSkKdWludDh4MTZfdCBfX2FybV92YWRkcV94KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHZhcV9wX3MxNikpKQppbnQzMl90IF9fYXJtX3ZhZGR2YXFfcF9zMTYoaW50MzJfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGR2YXFfcF9zMTYpKSkKaW50MzJfdCBfX2FybV92YWRkdmFxX3AoaW50MzJfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGR2YXFfcF9zMzIpKSkKaW50MzJfdCBfX2FybV92YWRkdmFxX3BfczMyKGludDMyX3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkdmFxX3BfczMyKSkpCmludDMyX3QgX19hcm1fdmFkZHZhcV9wKGludDMyX3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkdmFxX3BfczgpKSkKaW50MzJfdCBfX2FybV92YWRkdmFxX3BfczgoaW50MzJfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGR2YXFfcF9zOCkpKQppbnQzMl90IF9fYXJtX3ZhZGR2YXFfcChpbnQzMl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHZhcV9wX3UxNikpKQp1aW50MzJfdCBfX2FybV92YWRkdmFxX3BfdTE2KHVpbnQzMl90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGR2YXFfcF91MTYpKSkKdWludDMyX3QgX19hcm1fdmFkZHZhcV9wKHVpbnQzMl90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGR2YXFfcF91MzIpKSkKdWludDMyX3QgX19hcm1fdmFkZHZhcV9wX3UzMih1aW50MzJfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkdmFxX3BfdTMyKSkpCnVpbnQzMl90IF9fYXJtX3ZhZGR2YXFfcCh1aW50MzJfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkdmFxX3BfdTgpKSkKdWludDMyX3QgX19hcm1fdmFkZHZhcV9wX3U4KHVpbnQzMl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGR2YXFfcF91OCkpKQp1aW50MzJfdCBfX2FybV92YWRkdmFxX3AodWludDMyX3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHZhcV9zMTYpKSkKaW50MzJfdCBfX2FybV92YWRkdmFxX3MxNihpbnQzMl90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGR2YXFfczE2KSkpCmludDMyX3QgX19hcm1fdmFkZHZhcShpbnQzMl90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGR2YXFfczMyKSkpCmludDMyX3QgX19hcm1fdmFkZHZhcV9zMzIoaW50MzJfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkdmFxX3MzMikpKQppbnQzMl90IF9fYXJtX3ZhZGR2YXEoaW50MzJfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkdmFxX3M4KSkpCmludDMyX3QgX19hcm1fdmFkZHZhcV9zOChpbnQzMl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGR2YXFfczgpKSkKaW50MzJfdCBfX2FybV92YWRkdmFxKGludDMyX3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHZhcV91MTYpKSkKdWludDMyX3QgX19hcm1fdmFkZHZhcV91MTYodWludDMyX3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGR2YXFfdTE2KSkpCnVpbnQzMl90IF9fYXJtX3ZhZGR2YXEodWludDMyX3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGR2YXFfdTMyKSkpCnVpbnQzMl90IF9fYXJtX3ZhZGR2YXFfdTMyKHVpbnQzMl90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkdmFxX3UzMikpKQp1aW50MzJfdCBfX2FybV92YWRkdmFxKHVpbnQzMl90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkdmFxX3U4KSkpCnVpbnQzMl90IF9fYXJtX3ZhZGR2YXFfdTgodWludDMyX3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGR2YXFfdTgpKSkKdWludDMyX3QgX19hcm1fdmFkZHZhcSh1aW50MzJfdCwgdWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHZxX3BfczE2KSkpCmludDMyX3QgX19hcm1fdmFkZHZxX3BfczE2KGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkdnFfcF9zMTYpKSkKaW50MzJfdCBfX2FybV92YWRkdnFfcChpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHZxX3BfczMyKSkpCmludDMyX3QgX19hcm1fdmFkZHZxX3BfczMyKGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkdnFfcF9zMzIpKSkKaW50MzJfdCBfX2FybV92YWRkdnFfcChpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHZxX3BfczgpKSkKaW50MzJfdCBfX2FybV92YWRkdnFfcF9zOChpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHZxX3BfczgpKSkKaW50MzJfdCBfX2FybV92YWRkdnFfcChpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHZxX3BfdTE2KSkpCnVpbnQzMl90IF9fYXJtX3ZhZGR2cV9wX3UxNih1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGR2cV9wX3UxNikpKQp1aW50MzJfdCBfX2FybV92YWRkdnFfcCh1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGR2cV9wX3UzMikpKQp1aW50MzJfdCBfX2FybV92YWRkdnFfcF91MzIodWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkdnFfcF91MzIpKSkKdWludDMyX3QgX19hcm1fdmFkZHZxX3AodWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkdnFfcF91OCkpKQp1aW50MzJfdCBfX2FybV92YWRkdnFfcF91OCh1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGR2cV9wX3U4KSkpCnVpbnQzMl90IF9fYXJtX3ZhZGR2cV9wKHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHZxX3MxNikpKQppbnQzMl90IF9fYXJtX3ZhZGR2cV9zMTYoaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkdnFfczE2KSkpCmludDMyX3QgX19hcm1fdmFkZHZxKGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHZxX3MzMikpKQppbnQzMl90IF9fYXJtX3ZhZGR2cV9zMzIoaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkdnFfczMyKSkpCmludDMyX3QgX19hcm1fdmFkZHZxKGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHZxX3M4KSkpCmludDMyX3QgX19hcm1fdmFkZHZxX3M4KGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHZxX3M4KSkpCmludDMyX3QgX19hcm1fdmFkZHZxKGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHZxX3UxNikpKQp1aW50MzJfdCBfX2FybV92YWRkdnFfdTE2KHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGR2cV91MTYpKSkKdWludDMyX3QgX19hcm1fdmFkZHZxKHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGR2cV91MzIpKSkKdWludDMyX3QgX19hcm1fdmFkZHZxX3UzMih1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkdnFfdTMyKSkpCnVpbnQzMl90IF9fYXJtX3ZhZGR2cSh1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkdnFfdTgpKSkKdWludDMyX3QgX19hcm1fdmFkZHZxX3U4KHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGR2cV91OCkpKQp1aW50MzJfdCBfX2FybV92YWRkdnEodWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFuZHFfbV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZhbmRxX21fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFuZHFfbV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZhbmRxX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YW5kcV9tX3MzMikpKQppbnQzMng0X3QgX19hcm1fdmFuZHFfbV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YW5kcV9tX3MzMikpKQppbnQzMng0X3QgX19hcm1fdmFuZHFfbShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhbmRxX21fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZhbmRxX21fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YW5kcV9tX3M4KSkpCmludDh4MTZfdCBfX2FybV92YW5kcV9tKGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFuZHFfbV91MTYpKSkKdWludDE2eDhfdCBfX2FybV92YW5kcV9tX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhbmRxX21fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmFuZHFfbSh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhbmRxX21fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmFuZHFfbV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YW5kcV9tX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZhbmRxX20odWludDMyeDRfdCwgdWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YW5kcV9tX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmFuZHFfbV91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhbmRxX21fdTgpKSkKdWludDh4MTZfdCBfX2FybV92YW5kcV9tKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFuZHFfczE2KSkpCmludDE2eDhfdCBfX2FybV92YW5kcV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhbmRxX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmFuZHEoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhbmRxX3MzMikpKQppbnQzMng0X3QgX19hcm1fdmFuZHFfczMyKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YW5kcV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZhbmRxKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YW5kcV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdmFuZHFfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhbmRxX3M4KSkpCmludDh4MTZfdCBfX2FybV92YW5kcShpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFuZHFfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmFuZHFfdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhbmRxX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZhbmRxKHVpbnQxNng4X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhbmRxX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZhbmRxX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YW5kcV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92YW5kcSh1aW50MzJ4NF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YW5kcV91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZhbmRxX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhbmRxX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmFuZHEodWludDh4MTZfdCwgdWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFuZHFfeF9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZhbmRxX3hfczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhbmRxX3hfczE2KSkpCmludDE2eDhfdCBfX2FybV92YW5kcV94KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhbmRxX3hfczMyKSkpCmludDMyeDRfdCBfX2FybV92YW5kcV94X3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YW5kcV94X3MzMikpKQppbnQzMng0X3QgX19hcm1fdmFuZHFfeChpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YW5kcV94X3M4KSkpCmludDh4MTZfdCBfX2FybV92YW5kcV94X3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhbmRxX3hfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZhbmRxX3goaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFuZHFfeF91MTYpKSkKdWludDE2eDhfdCBfX2FybV92YW5kcV94X3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhbmRxX3hfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmFuZHFfeCh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhbmRxX3hfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmFuZHFfeF91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YW5kcV94X3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZhbmRxX3godWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YW5kcV94X3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmFuZHFfeF91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhbmRxX3hfdTgpKSkKdWludDh4MTZfdCBfX2FybV92YW5kcV94KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJpY3FfbV9uX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmJpY3FfbV9uX3MxNihpbnQxNng4X3QsIGludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJpY3FfbV9uX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmJpY3FfbV9uKGludDE2eDhfdCwgaW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YmljcV9tX25fczMyKSkpCmludDMyeDRfdCBfX2FybV92YmljcV9tX25fczMyKGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YmljcV9tX25fczMyKSkpCmludDMyeDRfdCBfX2FybV92YmljcV9tX24oaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZiaWNxX21fbl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92YmljcV9tX25fdTE2KHVpbnQxNng4X3QsIHVpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZiaWNxX21fbl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92YmljcV9tX24odWludDE2eDhfdCwgdWludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJpY3FfbV9uX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZiaWNxX21fbl91MzIodWludDMyeDRfdCwgdWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJpY3FfbV9uX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZiaWNxX21fbih1aW50MzJ4NF90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YmljcV9tX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmJpY3FfbV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YmljcV9tX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmJpY3FfbShpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZiaWNxX21fczMyKSkpCmludDMyeDRfdCBfX2FybV92YmljcV9tX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZiaWNxX21fczMyKSkpCmludDMyeDRfdCBfX2FybV92YmljcV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJpY3FfbV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdmJpY3FfbV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZiaWNxX21fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZiaWNxX20oaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YmljcV9tX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZiaWNxX21fdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJpY3FfbV91MTYpKSkKdWludDE2eDhfdCBfX2FybV92YmljcV9tKHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJpY3FfbV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92YmljcV9tX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZiaWNxX21fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmJpY3FfbSh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZiaWNxX21fdTgpKSkKdWludDh4MTZfdCBfX2FybV92YmljcV9tX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJpY3FfbV91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZiaWNxX20odWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YmljcV9uX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmJpY3Ffbl9zMTYoaW50MTZ4OF90LCBpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YmljcV9uX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmJpY3EoaW50MTZ4OF90LCBpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YmljcV9uX3MzMikpKQppbnQzMng0X3QgX19hcm1fdmJpY3Ffbl9zMzIoaW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YmljcV9uX3MzMikpKQppbnQzMng0X3QgX19hcm1fdmJpY3EoaW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YmljcV9uX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZiaWNxX25fdTE2KHVpbnQxNng4X3QsIHVpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YmljcV9uX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZiaWNxKHVpbnQxNng4X3QsIHVpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YmljcV9uX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZiaWNxX25fdTMyKHVpbnQzMng0X3QsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YmljcV9uX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZiaWNxKHVpbnQzMng0X3QsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YmljcV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZiaWNxX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJpY3FfczE2KSkpCmludDE2eDhfdCBfX2FybV92YmljcShpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJpY3FfczMyKSkpCmludDMyeDRfdCBfX2FybV92YmljcV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZiaWNxX3MzMikpKQppbnQzMng0X3QgX19hcm1fdmJpY3EoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZiaWNxX3M4KSkpCmludDh4MTZfdCBfX2FybV92YmljcV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJpY3FfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZiaWNxKGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YmljcV91MTYpKSkKdWludDE2eDhfdCBfX2FybV92YmljcV91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJpY3FfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmJpY3EodWludDE2eDhfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJpY3FfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmJpY3FfdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZiaWNxX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZiaWNxKHVpbnQzMng0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZiaWNxX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmJpY3FfdTgodWludDh4MTZfdCwgdWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJpY3FfdTgpKSkKdWludDh4MTZfdCBfX2FybV92YmljcSh1aW50OHgxNl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YmljcV94X3MxNikpKQppbnQxNng4X3QgX19hcm1fdmJpY3FfeF9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJpY3FfeF9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZiaWNxX3goaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJpY3FfeF9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZiaWNxX3hfczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZiaWNxX3hfczMyKSkpCmludDMyeDRfdCBfX2FybV92YmljcV94KGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZiaWNxX3hfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZiaWNxX3hfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJpY3FfeF9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdmJpY3FfeChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YmljcV94X3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZiaWNxX3hfdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJpY3FfeF91MTYpKSkKdWludDE2eDhfdCBfX2FybV92YmljcV94KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJpY3FfeF91MzIpKSkKdWludDMyeDRfdCBfX2FybV92YmljcV94X3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZiaWNxX3hfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmJpY3FfeCh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZiaWNxX3hfdTgpKSkKdWludDh4MTZfdCBfX2FybV92YmljcV94X3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJpY3FfeF91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZiaWNxX3godWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YnJzcnFfbV9uX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmJyc3JxX21fbl9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJyc3JxX21fbl9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZicnNycV9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZicnNycV9tX25fczMyKSkpCmludDMyeDRfdCBfX2FybV92YnJzcnFfbV9uX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YnJzcnFfbV9uX3MzMikpKQppbnQzMng0X3QgX19hcm1fdmJyc3JxX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJyc3JxX21fbl9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdmJyc3JxX21fbl9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YnJzcnFfbV9uX3M4KSkpCmludDh4MTZfdCBfX2FybV92YnJzcnFfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YnJzcnFfbV9uX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZicnNycV9tX25fdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJyc3JxX21fbl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92YnJzcnFfbSh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZicnNycV9tX25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmJyc3JxX21fbl91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YnJzcnFfbV9uX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZicnNycV9tKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJyc3JxX21fbl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZicnNycV9tX25fdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YnJzcnFfbV9uX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmJyc3JxX20odWludDh4MTZfdCwgdWludDh4MTZfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YnJzcnFfbl9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZicnNycV9uX3MxNihpbnQxNng4X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZicnNycV9uX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmJyc3JxKGludDE2eDhfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJyc3JxX25fczMyKSkpCmludDMyeDRfdCBfX2FybV92YnJzcnFfbl9zMzIoaW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YnJzcnFfbl9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZicnNycShpbnQzMng0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZicnNycV9uX3M4KSkpCmludDh4MTZfdCBfX2FybV92YnJzcnFfbl9zOChpbnQ4eDE2X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZicnNycV9uX3M4KSkpCmludDh4MTZfdCBfX2FybV92YnJzcnEoaW50OHgxNl90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YnJzcnFfbl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92YnJzcnFfbl91MTYodWludDE2eDhfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJyc3JxX25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmJyc3JxKHVpbnQxNng4X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZicnNycV9uX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZicnNycV9uX3UzMih1aW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YnJzcnFfbl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92YnJzcnEodWludDMyeDRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJyc3JxX25fdTgpKSkKdWludDh4MTZfdCBfX2FybV92YnJzcnFfbl91OCh1aW50OHgxNl90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YnJzcnFfbl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZicnNycSh1aW50OHgxNl90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YnJzcnFfeF9uX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmJyc3JxX3hfbl9zMTYoaW50MTZ4OF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZicnNycV94X25fczE2KSkpCmludDE2eDhfdCBfX2FybV92YnJzcnFfeChpbnQxNng4X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJyc3JxX3hfbl9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZicnNycV94X25fczMyKGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YnJzcnFfeF9uX3MzMikpKQppbnQzMng0X3QgX19hcm1fdmJyc3JxX3goaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZicnNycV94X25fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZicnNycV94X25fczgoaW50OHgxNl90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZicnNycV94X25fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZicnNycV94KGludDh4MTZfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YnJzcnFfeF9uX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZicnNycV94X25fdTE2KHVpbnQxNng4X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJyc3JxX3hfbl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92YnJzcnFfeCh1aW50MTZ4OF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZicnNycV94X25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmJyc3JxX3hfbl91MzIodWludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YnJzcnFfeF9uX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZicnNycV94KHVpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJyc3JxX3hfbl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZicnNycV94X25fdTgodWludDh4MTZfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YnJzcnFfeF9uX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmJyc3JxX3godWludDh4MTZfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90MjcwX21fczE2KSkpCmludDE2eDhfdCBfX2FybV92Y2FkZHFfcm90MjcwX21fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDI3MF9tX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmNhZGRxX3JvdDI3MF9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDI3MF9tX3MzMikpKQppbnQzMng0X3QgX19hcm1fdmNhZGRxX3JvdDI3MF9tX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3QyNzBfbV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZjYWRkcV9yb3QyNzBfbShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3QyNzBfbV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdmNhZGRxX3JvdDI3MF9tX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDI3MF9tX3M4KSkpCmludDh4MTZfdCBfX2FybV92Y2FkZHFfcm90MjcwX20oaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90MjcwX21fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmNhZGRxX3JvdDI3MF9tX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3QyNzBfbV91MTYpKSkKdWludDE2eDhfdCBfX2FybV92Y2FkZHFfcm90MjcwX20odWludDE2eDhfdCwgdWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90MjcwX21fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmNhZGRxX3JvdDI3MF9tX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3QyNzBfbV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92Y2FkZHFfcm90MjcwX20odWludDMyeDRfdCwgdWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90MjcwX21fdTgpKSkKdWludDh4MTZfdCBfX2FybV92Y2FkZHFfcm90MjcwX21fdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90MjcwX21fdTgpKSkKdWludDh4MTZfdCBfX2FybV92Y2FkZHFfcm90MjcwX20odWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90MjcwX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmNhZGRxX3JvdDI3MF9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3QyNzBfczE2KSkpCmludDE2eDhfdCBfX2FybV92Y2FkZHFfcm90MjcwKGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90MjcwX3MzMikpKQppbnQzMng0X3QgX19hcm1fdmNhZGRxX3JvdDI3MF9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3QyNzBfczMyKSkpCmludDMyeDRfdCBfX2FybV92Y2FkZHFfcm90MjcwKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90MjcwX3M4KSkpCmludDh4MTZfdCBfX2FybV92Y2FkZHFfcm90MjcwX3M4KGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90MjcwX3M4KSkpCmludDh4MTZfdCBfX2FybV92Y2FkZHFfcm90MjcwKGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90MjcwX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZjYWRkcV9yb3QyNzBfdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3QyNzBfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmNhZGRxX3JvdDI3MCh1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90MjcwX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZjYWRkcV9yb3QyNzBfdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3QyNzBfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmNhZGRxX3JvdDI3MCh1aW50MzJ4NF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90MjcwX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmNhZGRxX3JvdDI3MF91OCh1aW50OHgxNl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90MjcwX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmNhZGRxX3JvdDI3MCh1aW50OHgxNl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90MjcwX3hfczE2KSkpCmludDE2eDhfdCBfX2FybV92Y2FkZHFfcm90MjcwX3hfczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3QyNzBfeF9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZjYWRkcV9yb3QyNzBfeChpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90MjcwX3hfczMyKSkpCmludDMyeDRfdCBfX2FybV92Y2FkZHFfcm90MjcwX3hfczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3QyNzBfeF9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZjYWRkcV9yb3QyNzBfeChpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90MjcwX3hfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZjYWRkcV9yb3QyNzBfeF9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90MjcwX3hfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZjYWRkcV9yb3QyNzBfeChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90MjcwX3hfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmNhZGRxX3JvdDI3MF94X3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3QyNzBfeF91MTYpKSkKdWludDE2eDhfdCBfX2FybV92Y2FkZHFfcm90MjcwX3godWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90MjcwX3hfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmNhZGRxX3JvdDI3MF94X3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3QyNzBfeF91MzIpKSkKdWludDMyeDRfdCBfX2FybV92Y2FkZHFfcm90MjcwX3godWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90MjcwX3hfdTgpKSkKdWludDh4MTZfdCBfX2FybV92Y2FkZHFfcm90MjcwX3hfdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90MjcwX3hfdTgpKSkKdWludDh4MTZfdCBfX2FybV92Y2FkZHFfcm90MjcwX3godWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90OTBfbV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZjYWRkcV9yb3Q5MF9tX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3Q5MF9tX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmNhZGRxX3JvdDkwX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90OTBfbV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZjYWRkcV9yb3Q5MF9tX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3Q5MF9tX3MzMikpKQppbnQzMng0X3QgX19hcm1fdmNhZGRxX3JvdDkwX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90OTBfbV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdmNhZGRxX3JvdDkwX21fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90OTBfbV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdmNhZGRxX3JvdDkwX20oaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90OTBfbV91MTYpKSkKdWludDE2eDhfdCBfX2FybV92Y2FkZHFfcm90OTBfbV91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90OTBfbV91MTYpKSkKdWludDE2eDhfdCBfX2FybV92Y2FkZHFfcm90OTBfbSh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3Q5MF9tX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZjYWRkcV9yb3Q5MF9tX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3Q5MF9tX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZjYWRkcV9yb3Q5MF9tKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDkwX21fdTgpKSkKdWludDh4MTZfdCBfX2FybV92Y2FkZHFfcm90OTBfbV91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3Q5MF9tX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmNhZGRxX3JvdDkwX20odWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90OTBfczE2KSkpCmludDE2eDhfdCBfX2FybV92Y2FkZHFfcm90OTBfczE2KGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90OTBfczE2KSkpCmludDE2eDhfdCBfX2FybV92Y2FkZHFfcm90OTAoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3Q5MF9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZjYWRkcV9yb3Q5MF9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3Q5MF9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZjYWRkcV9yb3Q5MChpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDkwX3M4KSkpCmludDh4MTZfdCBfX2FybV92Y2FkZHFfcm90OTBfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3Q5MF9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdmNhZGRxX3JvdDkwKGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90OTBfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmNhZGRxX3JvdDkwX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90OTBfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmNhZGRxX3JvdDkwKHVpbnQxNng4X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3Q5MF91MzIpKSkKdWludDMyeDRfdCBfX2FybV92Y2FkZHFfcm90OTBfdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3Q5MF91MzIpKSkKdWludDMyeDRfdCBfX2FybV92Y2FkZHFfcm90OTAodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDkwX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmNhZGRxX3JvdDkwX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3Q5MF91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZjYWRkcV9yb3Q5MCh1aW50OHgxNl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90OTBfeF9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZjYWRkcV9yb3Q5MF94X3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90OTBfeF9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZjYWRkcV9yb3Q5MF94KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3Q5MF94X3MzMikpKQppbnQzMng0X3QgX19hcm1fdmNhZGRxX3JvdDkwX3hfczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3Q5MF94X3MzMikpKQppbnQzMng0X3QgX19hcm1fdmNhZGRxX3JvdDkwX3goaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDkwX3hfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZjYWRkcV9yb3Q5MF94X3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3Q5MF94X3M4KSkpCmludDh4MTZfdCBfX2FybV92Y2FkZHFfcm90OTBfeChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90OTBfeF91MTYpKSkKdWludDE2eDhfdCBfX2FybV92Y2FkZHFfcm90OTBfeF91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90OTBfeF91MTYpKSkKdWludDE2eDhfdCBfX2FybV92Y2FkZHFfcm90OTBfeCh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3Q5MF94X3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZjYWRkcV9yb3Q5MF94X3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3Q5MF94X3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZjYWRkcV9yb3Q5MF94KHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDkwX3hfdTgpKSkKdWludDh4MTZfdCBfX2FybV92Y2FkZHFfcm90OTBfeF91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3Q5MF94X3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmNhZGRxX3JvdDkwX3godWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2xzcV9tX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmNsc3FfbV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNsc3FfbV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZjbHNxX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNsc3FfbV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZjbHNxX21fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbHNxX21fczMyKSkpCmludDMyeDRfdCBfX2FybV92Y2xzcV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbHNxX21fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZjbHNxX21fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNsc3FfbV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdmNsc3FfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2xzcV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZjbHNxX3MxNihpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbHNxX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmNsc3EoaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2xzcV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZjbHNxX3MzMihpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbHNxX3MzMikpKQppbnQzMng0X3QgX19hcm1fdmNsc3EoaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2xzcV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdmNsc3FfczgoaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2xzcV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdmNsc3EoaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2xzcV94X3MxNikpKQppbnQxNng4X3QgX19hcm1fdmNsc3FfeF9zMTYoaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbHNxX3hfczE2KSkpCmludDE2eDhfdCBfX2FybV92Y2xzcV94KGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2xzcV94X3MzMikpKQppbnQzMng0X3QgX19hcm1fdmNsc3FfeF9zMzIoaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbHNxX3hfczMyKSkpCmludDMyeDRfdCBfX2FybV92Y2xzcV94KGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2xzcV94X3M4KSkpCmludDh4MTZfdCBfX2FybV92Y2xzcV94X3M4KGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2xzcV94X3M4KSkpCmludDh4MTZfdCBfX2FybV92Y2xzcV94KGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2x6cV9tX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmNsenFfbV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNsenFfbV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZjbHpxX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNsenFfbV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZjbHpxX21fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbHpxX21fczMyKSkpCmludDMyeDRfdCBfX2FybV92Y2x6cV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbHpxX21fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZjbHpxX21fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNsenFfbV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdmNsenFfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2x6cV9tX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZjbHpxX21fdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNsenFfbV91MTYpKSkKdWludDE2eDhfdCBfX2FybV92Y2x6cV9tKHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNsenFfbV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92Y2x6cV9tX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbHpxX21fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmNsenFfbSh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbHpxX21fdTgpKSkKdWludDh4MTZfdCBfX2FybV92Y2x6cV9tX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNsenFfbV91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZjbHpxX20odWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2x6cV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZjbHpxX3MxNihpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbHpxX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmNsenEoaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2x6cV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZjbHpxX3MzMihpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbHpxX3MzMikpKQppbnQzMng0X3QgX19hcm1fdmNsenEoaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2x6cV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdmNsenFfczgoaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2x6cV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdmNsenEoaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2x6cV91MTYpKSkKdWludDE2eDhfdCBfX2FybV92Y2x6cV91MTYodWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNsenFfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmNsenEodWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNsenFfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmNsenFfdTMyKHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbHpxX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZjbHpxKHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbHpxX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmNsenFfdTgodWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNsenFfdTgpKSkKdWludDh4MTZfdCBfX2FybV92Y2x6cSh1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2x6cV94X3MxNikpKQppbnQxNng4X3QgX19hcm1fdmNsenFfeF9zMTYoaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbHpxX3hfczE2KSkpCmludDE2eDhfdCBfX2FybV92Y2x6cV94KGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2x6cV94X3MzMikpKQppbnQzMng0X3QgX19hcm1fdmNsenFfeF9zMzIoaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbHpxX3hfczMyKSkpCmludDMyeDRfdCBfX2FybV92Y2x6cV94KGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2x6cV94X3M4KSkpCmludDh4MTZfdCBfX2FybV92Y2x6cV94X3M4KGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2x6cV94X3M4KSkpCmludDh4MTZfdCBfX2FybV92Y2x6cV94KGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2x6cV94X3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZjbHpxX3hfdTE2KHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNsenFfeF91MTYpKSkKdWludDE2eDhfdCBfX2FybV92Y2x6cV94KHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNsenFfeF91MzIpKSkKdWludDMyeDRfdCBfX2FybV92Y2x6cV94X3UzMih1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbHpxX3hfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmNsenFfeCh1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbHpxX3hfdTgpKSkKdWludDh4MTZfdCBfX2FybV92Y2x6cV94X3U4KHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNsenFfeF91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZjbHpxX3godWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wY3NxX21fbl91MTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBjc3FfbV9uX3UxNih1aW50MTZ4OF90LCB1aW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wY3NxX21fbl91MTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBjc3FfbSh1aW50MTZ4OF90LCB1aW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wY3NxX21fbl91MzIpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBjc3FfbV9uX3UzMih1aW50MzJ4NF90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wY3NxX21fbl91MzIpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBjc3FfbSh1aW50MzJ4NF90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wY3NxX21fbl91OCkpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGNzcV9tX25fdTgodWludDh4MTZfdCwgdWludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wY3NxX21fbl91OCkpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGNzcV9tKHVpbnQ4eDE2X3QsIHVpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGNzcV9tX3UxNikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGNzcV9tX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBjc3FfbV91MTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBjc3FfbSh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBjc3FfbV91MzIpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBjc3FfbV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wY3NxX21fdTMyKSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wY3NxX20odWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wY3NxX21fdTgpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBjc3FfbV91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBjc3FfbV91OCkpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGNzcV9tKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGNzcV9uX3UxNikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGNzcV9uX3UxNih1aW50MTZ4OF90LCB1aW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGNzcV9uX3UxNikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGNzcSh1aW50MTZ4OF90LCB1aW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGNzcV9uX3UzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGNzcV9uX3UzMih1aW50MzJ4NF90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGNzcV9uX3UzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGNzcSh1aW50MzJ4NF90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGNzcV9uX3U4KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wY3NxX25fdTgodWludDh4MTZfdCwgdWludDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGNzcV9uX3U4KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wY3NxKHVpbnQ4eDE2X3QsIHVpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBjc3FfdTE2KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wY3NxX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wY3NxX3UxNikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGNzcSh1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wY3NxX3UzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGNzcV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGNzcV91MzIpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBjc3EodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGNzcV91OCkpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGNzcV91OCh1aW50OHgxNl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wY3NxX3U4KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wY3NxKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfbV9uX3MxNikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGVxcV9tX25fczE2KGludDE2eDhfdCwgaW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZXFxX21fbl9zMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBlcXFfbShpbnQxNng4X3QsIGludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGVxcV9tX25fczMyKSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wZXFxX21fbl9zMzIoaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfbV9uX3MzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGVxcV9tKGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZXFxX21fbl9zOCkpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGVxcV9tX25fczgoaW50OHgxNl90LCBpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGVxcV9tX25fczgpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBlcXFfbShpbnQ4eDE2X3QsIGludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZXFxX21fbl91MTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBlcXFfbV9uX3UxNih1aW50MTZ4OF90LCB1aW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZXFxX21fbl91MTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBlcXFfbSh1aW50MTZ4OF90LCB1aW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZXFxX21fbl91MzIpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBlcXFfbV9uX3UzMih1aW50MzJ4NF90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZXFxX21fbl91MzIpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBlcXFfbSh1aW50MzJ4NF90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZXFxX21fbl91OCkpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGVxcV9tX25fdTgodWludDh4MTZfdCwgdWludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZXFxX21fbl91OCkpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGVxcV9tKHVpbnQ4eDE2X3QsIHVpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGVxcV9tX3MxNikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGVxcV9tX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZXFxX21fczE2KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wZXFxX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGVxcV9tX3MzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGVxcV9tX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZXFxX21fczMyKSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wZXFxX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGVxcV9tX3M4KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wZXFxX21fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGVxcV9tX3M4KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wZXFxX20oaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGVxcV9tX3UxNikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGVxcV9tX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfbV91MTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBlcXFfbSh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfbV91MzIpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBlcXFfbV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZXFxX21fdTMyKSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wZXFxX20odWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZXFxX21fdTgpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBlcXFfbV91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfbV91OCkpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGVxcV9tKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGVxcV9uX3MxNikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGVxcV9uX3MxNihpbnQxNng4X3QsIGludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfbl9zMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBlcXEoaW50MTZ4OF90LCBpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZXFxX25fczMyKSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wZXFxX25fczMyKGludDMyeDRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGVxcV9uX3MzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGVxcShpbnQzMng0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfbl9zOCkpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGVxcV9uX3M4KGludDh4MTZfdCwgaW50OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZXFxX25fczgpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBlcXEoaW50OHgxNl90LCBpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfbl91MTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBlcXFfbl91MTYodWludDE2eDhfdCwgdWludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfbl91MTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBlcXEodWludDE2eDhfdCwgdWludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfbl91MzIpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBlcXFfbl91MzIodWludDMyeDRfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfbl91MzIpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBlcXEodWludDMyeDRfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfbl91OCkpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGVxcV9uX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfbl91OCkpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGVxcSh1aW50OHgxNl90LCB1aW50OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZXFxX3MxNikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGVxcV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfczE2KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wZXFxKGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZXFxX3MzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGVxcV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfczMyKSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wZXFxKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZXFxX3M4KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wZXFxX3M4KGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZXFxX3M4KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wZXFxKGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZXFxX3UxNikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGVxcV91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGVxcV91MTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBlcXEodWludDE2eDhfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGVxcV91MzIpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBlcXFfdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfdTMyKSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wZXFxKHVpbnQzMng0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfdTgpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBlcXFfdTgodWludDh4MTZfdCwgdWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGVxcV91OCkpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGVxcSh1aW50OHgxNl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ2VxX21fbl9zMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBnZXFfbV9uX3MxNihpbnQxNng4X3QsIGludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGdlcV9tX25fczE2KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wZ2VxX20oaW50MTZ4OF90LCBpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBnZXFfbV9uX3MzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGdlcV9tX25fczMyKGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ2VxX21fbl9zMzIpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBnZXFfbShpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGdlcV9tX25fczgpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBnZXFfbV9uX3M4KGludDh4MTZfdCwgaW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBnZXFfbV9uX3M4KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wZ2VxX20oaW50OHgxNl90LCBpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGdlcV9tX3MxNikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGdlcV9tX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ2VxX21fczE2KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wZ2VxX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGdlcV9tX3MzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGdlcV9tX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ2VxX21fczMyKSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wZ2VxX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGdlcV9tX3M4KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wZ2VxX21fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGdlcV9tX3M4KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wZ2VxX20oaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGdlcV9uX3MxNikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGdlcV9uX3MxNihpbnQxNng4X3QsIGludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBnZXFfbl9zMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBnZXEoaW50MTZ4OF90LCBpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ2VxX25fczMyKSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wZ2VxX25fczMyKGludDMyeDRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGdlcV9uX3MzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGdlcShpbnQzMng0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBnZXFfbl9zOCkpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGdlcV9uX3M4KGludDh4MTZfdCwgaW50OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ2VxX25fczgpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBnZXEoaW50OHgxNl90LCBpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBnZXFfczE2KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wZ2VxX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGdlcV9zMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBnZXEoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBnZXFfczMyKSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wZ2VxX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGdlcV9zMzIpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBnZXEoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBnZXFfczgpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBnZXFfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBnZXFfczgpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBnZXEoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBndHFfbV9uX3MxNikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGd0cV9tX25fczE2KGludDE2eDhfdCwgaW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ3RxX21fbl9zMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBndHFfbShpbnQxNng4X3QsIGludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGd0cV9tX25fczMyKSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wZ3RxX21fbl9zMzIoaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBndHFfbV9uX3MzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGd0cV9tKGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ3RxX21fbl9zOCkpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGd0cV9tX25fczgoaW50OHgxNl90LCBpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGd0cV9tX25fczgpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBndHFfbShpbnQ4eDE2X3QsIGludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ3RxX21fczE2KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wZ3RxX21fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBndHFfbV9zMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBndHFfbShpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ3RxX21fczMyKSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wZ3RxX21fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBndHFfbV9zMzIpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBndHFfbShpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ3RxX21fczgpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBndHFfbV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ3RxX21fczgpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBndHFfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ3RxX25fczE2KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wZ3RxX25fczE2KGludDE2eDhfdCwgaW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGd0cV9uX3MxNikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGd0cShpbnQxNng4X3QsIGludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBndHFfbl9zMzIpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBndHFfbl9zMzIoaW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ3RxX25fczMyKSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wZ3RxKGludDMyeDRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGd0cV9uX3M4KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wZ3RxX25fczgoaW50OHgxNl90LCBpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBndHFfbl9zOCkpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGd0cShpbnQ4eDE2X3QsIGludDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGd0cV9zMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBndHFfczE2KGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ3RxX3MxNikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGd0cShpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGd0cV9zMzIpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBndHFfczMyKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ3RxX3MzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGd0cShpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGd0cV9zOCkpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGd0cV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGd0cV9zOCkpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGd0cShpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGhpcV9tX25fdTE2KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21waGlxX21fbl91MTYodWludDE2eDhfdCwgdWludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGhpcV9tX25fdTE2KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21waGlxX20odWludDE2eDhfdCwgdWludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGhpcV9tX25fdTMyKSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21waGlxX21fbl91MzIodWludDMyeDRfdCwgdWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGhpcV9tX25fdTMyKSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21waGlxX20odWludDMyeDRfdCwgdWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGhpcV9tX25fdTgpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBoaXFfbV9uX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGhpcV9tX25fdTgpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBoaXFfbSh1aW50OHgxNl90LCB1aW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBoaXFfbV91MTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBoaXFfbV91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21waGlxX21fdTE2KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21waGlxX20odWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21waGlxX21fdTMyKSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21waGlxX21fdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGhpcV9tX3UzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGhpcV9tKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGhpcV9tX3U4KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21waGlxX21fdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21waGlxX21fdTgpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBoaXFfbSh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBoaXFfbl91MTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBoaXFfbl91MTYodWludDE2eDhfdCwgdWludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBoaXFfbl91MTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBoaXEodWludDE2eDhfdCwgdWludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBoaXFfbl91MzIpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBoaXFfbl91MzIodWludDMyeDRfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBoaXFfbl91MzIpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBoaXEodWludDMyeDRfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBoaXFfbl91OCkpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGhpcV9uX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBoaXFfbl91OCkpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGhpcSh1aW50OHgxNl90LCB1aW50OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21waGlxX3UxNikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGhpcV91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGhpcV91MTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBoaXEodWludDE2eDhfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGhpcV91MzIpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBoaXFfdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBoaXFfdTMyKSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21waGlxKHVpbnQzMng0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBoaXFfdTgpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBoaXFfdTgodWludDh4MTZfdCwgdWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGhpcV91OCkpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGhpcSh1aW50OHgxNl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbGVxX21fbl9zMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBsZXFfbV9uX3MxNihpbnQxNng4X3QsIGludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGxlcV9tX25fczE2KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wbGVxX20oaW50MTZ4OF90LCBpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsZXFfbV9uX3MzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGxlcV9tX25fczMyKGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbGVxX21fbl9zMzIpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBsZXFfbShpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGxlcV9tX25fczgpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBsZXFfbV9uX3M4KGludDh4MTZfdCwgaW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsZXFfbV9uX3M4KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wbGVxX20oaW50OHgxNl90LCBpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGxlcV9tX3MxNikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGxlcV9tX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbGVxX21fczE2KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wbGVxX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGxlcV9tX3MzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGxlcV9tX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbGVxX21fczMyKSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wbGVxX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGxlcV9tX3M4KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wbGVxX21fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGxlcV9tX3M4KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wbGVxX20oaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGxlcV9uX3MxNikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGxlcV9uX3MxNihpbnQxNng4X3QsIGludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsZXFfbl9zMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBsZXEoaW50MTZ4OF90LCBpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbGVxX25fczMyKSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wbGVxX25fczMyKGludDMyeDRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGxlcV9uX3MzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGxlcShpbnQzMng0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsZXFfbl9zOCkpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGxlcV9uX3M4KGludDh4MTZfdCwgaW50OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbGVxX25fczgpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBsZXEoaW50OHgxNl90LCBpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsZXFfczE2KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wbGVxX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGxlcV9zMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBsZXEoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsZXFfczMyKSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wbGVxX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGxlcV9zMzIpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBsZXEoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsZXFfczgpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBsZXFfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsZXFfczgpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBsZXEoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsdHFfbV9uX3MxNikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGx0cV9tX25fczE2KGludDE2eDhfdCwgaW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbHRxX21fbl9zMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBsdHFfbShpbnQxNng4X3QsIGludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGx0cV9tX25fczMyKSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wbHRxX21fbl9zMzIoaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsdHFfbV9uX3MzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGx0cV9tKGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbHRxX21fbl9zOCkpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGx0cV9tX25fczgoaW50OHgxNl90LCBpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGx0cV9tX25fczgpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBsdHFfbShpbnQ4eDE2X3QsIGludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbHRxX21fczE2KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wbHRxX21fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsdHFfbV9zMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBsdHFfbShpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbHRxX21fczMyKSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wbHRxX21fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsdHFfbV9zMzIpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBsdHFfbShpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbHRxX21fczgpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBsdHFfbV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbHRxX21fczgpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBsdHFfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbHRxX25fczE2KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wbHRxX25fczE2KGludDE2eDhfdCwgaW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGx0cV9uX3MxNikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGx0cShpbnQxNng4X3QsIGludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsdHFfbl9zMzIpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBsdHFfbl9zMzIoaW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbHRxX25fczMyKSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wbHRxKGludDMyeDRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGx0cV9uX3M4KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wbHRxX25fczgoaW50OHgxNl90LCBpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsdHFfbl9zOCkpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGx0cShpbnQ4eDE2X3QsIGludDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGx0cV9zMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBsdHFfczE2KGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbHRxX3MxNikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGx0cShpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGx0cV9zMzIpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBsdHFfczMyKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbHRxX3MzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGx0cShpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGx0cV9zOCkpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGx0cV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGx0cV9zOCkpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGx0cShpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV9tX25fczE2KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wbmVxX21fbl9zMTYoaW50MTZ4OF90LCBpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBuZXFfbV9uX3MxNikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcG5lcV9tKGludDE2eDhfdCwgaW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbmVxX21fbl9zMzIpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBuZXFfbV9uX3MzMihpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV9tX25fczMyKSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wbmVxX20oaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBuZXFfbV9uX3M4KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wbmVxX21fbl9zOChpbnQ4eDE2X3QsIGludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbmVxX21fbl9zOCkpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcG5lcV9tKGludDh4MTZfdCwgaW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBuZXFfbV9uX3UxNikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcG5lcV9tX25fdTE2KHVpbnQxNng4X3QsIHVpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBuZXFfbV9uX3UxNikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcG5lcV9tKHVpbnQxNng4X3QsIHVpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBuZXFfbV9uX3UzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcG5lcV9tX25fdTMyKHVpbnQzMng0X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBuZXFfbV9uX3UzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcG5lcV9tKHVpbnQzMng0X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBuZXFfbV9uX3U4KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wbmVxX21fbl91OCh1aW50OHgxNl90LCB1aW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBuZXFfbV9uX3U4KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wbmVxX20odWludDh4MTZfdCwgdWludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbmVxX21fczE2KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wbmVxX21fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBuZXFfbV9zMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBuZXFfbShpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbmVxX21fczMyKSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wbmVxX21fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBuZXFfbV9zMzIpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBuZXFfbShpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbmVxX21fczgpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBuZXFfbV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbmVxX21fczgpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBuZXFfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbmVxX21fdTE2KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wbmVxX21fdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV9tX3UxNikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcG5lcV9tKHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV9tX3UzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcG5lcV9tX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBuZXFfbV91MzIpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBuZXFfbSh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBuZXFfbV91OCkpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcG5lcV9tX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV9tX3U4KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wbmVxX20odWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbmVxX25fczE2KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wbmVxX25fczE2KGludDE2eDhfdCwgaW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV9uX3MxNikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcG5lcShpbnQxNng4X3QsIGludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBuZXFfbl9zMzIpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBuZXFfbl9zMzIoaW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbmVxX25fczMyKSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wbmVxKGludDMyeDRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV9uX3M4KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wbmVxX25fczgoaW50OHgxNl90LCBpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBuZXFfbl9zOCkpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcG5lcShpbnQ4eDE2X3QsIGludDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV9uX3UxNikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcG5lcV9uX3UxNih1aW50MTZ4OF90LCB1aW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV9uX3UxNikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcG5lcSh1aW50MTZ4OF90LCB1aW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV9uX3UzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcG5lcV9uX3UzMih1aW50MzJ4NF90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV9uX3UzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcG5lcSh1aW50MzJ4NF90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV9uX3U4KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wbmVxX25fdTgodWludDh4MTZfdCwgdWludDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV9uX3U4KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wbmVxKHVpbnQ4eDE2X3QsIHVpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBuZXFfczE2KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wbmVxX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV9zMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBuZXEoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBuZXFfczMyKSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wbmVxX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV9zMzIpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBuZXEoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBuZXFfczgpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBuZXFfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBuZXFfczgpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBuZXEoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBuZXFfdTE2KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wbmVxX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbmVxX3UxNikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcG5lcSh1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbmVxX3UzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcG5lcV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV91MzIpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBuZXEodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV91OCkpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcG5lcV91OCh1aW50OHgxNl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbmVxX3U4KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wbmVxKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjcmVhdGVxX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmNyZWF0ZXFfczE2KHVpbnQ2NF90LCB1aW50NjRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNyZWF0ZXFfczMyKSkpCmludDMyeDRfdCBfX2FybV92Y3JlYXRlcV9zMzIodWludDY0X3QsIHVpbnQ2NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3JlYXRlcV9zNjQpKSkKaW50NjR4Ml90IF9fYXJtX3ZjcmVhdGVxX3M2NCh1aW50NjRfdCwgdWludDY0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjcmVhdGVxX3M4KSkpCmludDh4MTZfdCBfX2FybV92Y3JlYXRlcV9zOCh1aW50NjRfdCwgdWludDY0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjcmVhdGVxX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZjcmVhdGVxX3UxNih1aW50NjRfdCwgdWludDY0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjcmVhdGVxX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZjcmVhdGVxX3UzMih1aW50NjRfdCwgdWludDY0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjcmVhdGVxX3U2NCkpKQp1aW50NjR4Ml90IF9fYXJtX3ZjcmVhdGVxX3U2NCh1aW50NjRfdCwgdWludDY0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjcmVhdGVxX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmNyZWF0ZXFfdTgodWludDY0X3QsIHVpbnQ2NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3RwMTZxKSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y3RwMTZxKHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3RwMTZxX20pKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjdHAxNnFfbSh1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3RwMzJxKSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y3RwMzJxKHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3RwMzJxX20pKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjdHAzMnFfbSh1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3RwNjRxKSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y3RwNjRxKHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3RwNjRxX20pKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjdHA2NHFfbSh1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3RwOHEpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjdHA4cSh1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN0cDhxX20pKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjdHA4cV9tKHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkZHVwcV9tX25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmRkdXBxX21fbl91MTYodWludDE2eDhfdCwgdWludDMyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZGR1cHFfbV9uX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZkZHVwcV9tKHVpbnQxNng4X3QsIHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmRkdXBxX21fbl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92ZGR1cHFfbV9uX3UzMih1aW50MzJ4NF90LCB1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkZHVwcV9tX25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmRkdXBxX20odWludDMyeDRfdCwgdWludDMyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZGR1cHFfbV9uX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmRkdXBxX21fbl91OCh1aW50OHgxNl90LCB1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkZHVwcV9tX25fdTgpKSkKdWludDh4MTZfdCBfX2FybV92ZGR1cHFfbSh1aW50OHgxNl90LCB1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkZHVwcV9tX3diX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZkZHVwcV9tX3diX3UxNih1aW50MTZ4OF90LCB1aW50MzJfdCAqLCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmRkdXBxX21fd2JfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmRkdXBxX20odWludDE2eDhfdCwgdWludDMyX3QgKiwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkZHVwcV9tX3diX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZkZHVwcV9tX3diX3UzMih1aW50MzJ4NF90LCB1aW50MzJfdCAqLCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmRkdXBxX21fd2JfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmRkdXBxX20odWludDMyeDRfdCwgdWludDMyX3QgKiwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkZHVwcV9tX3diX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmRkdXBxX21fd2JfdTgodWludDh4MTZfdCwgdWludDMyX3QgKiwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkZHVwcV9tX3diX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmRkdXBxX20odWludDh4MTZfdCwgdWludDMyX3QgKiwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkZHVwcV9uX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZkZHVwcV9uX3UxNih1aW50MzJfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZGR1cHFfbl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92ZGR1cHFfdTE2KHVpbnQzMl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkZHVwcV9uX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZkZHVwcV9uX3UzMih1aW50MzJfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZGR1cHFfbl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92ZGR1cHFfdTMyKHVpbnQzMl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkZHVwcV9uX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmRkdXBxX25fdTgodWludDMyX3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmRkdXBxX25fdTgpKSkKdWludDh4MTZfdCBfX2FybV92ZGR1cHFfdTgodWludDMyX3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmRkdXBxX3diX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZkZHVwcV93Yl91MTYodWludDMyX3QgKiwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZGR1cHFfd2JfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmRkdXBxX3UxNih1aW50MzJfdCAqLCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkZHVwcV93Yl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92ZGR1cHFfd2JfdTMyKHVpbnQzMl90ICosIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmRkdXBxX3diX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZkZHVwcV91MzIodWludDMyX3QgKiwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZGR1cHFfd2JfdTgpKSkKdWludDh4MTZfdCBfX2FybV92ZGR1cHFfd2JfdTgodWludDMyX3QgKiwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZGR1cHFfd2JfdTgpKSkKdWludDh4MTZfdCBfX2FybV92ZGR1cHFfdTgodWludDMyX3QgKiwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZGR1cHFfeF9uX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZkZHVwcV94X25fdTE2KHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmRkdXBxX3hfbl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92ZGR1cHFfeF91MTYodWludDMyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZGR1cHFfeF9uX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZkZHVwcV94X25fdTMyKHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmRkdXBxX3hfbl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92ZGR1cHFfeF91MzIodWludDMyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZGR1cHFfeF9uX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmRkdXBxX3hfbl91OCh1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkZHVwcV94X25fdTgpKSkKdWludDh4MTZfdCBfX2FybV92ZGR1cHFfeF91OCh1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkZHVwcV94X3diX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZkZHVwcV94X3diX3UxNih1aW50MzJfdCAqLCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmRkdXBxX3hfd2JfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmRkdXBxX3hfdTE2KHVpbnQzMl90ICosIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZGR1cHFfeF93Yl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92ZGR1cHFfeF93Yl91MzIodWludDMyX3QgKiwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkZHVwcV94X3diX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZkZHVwcV94X3UzMih1aW50MzJfdCAqLCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmRkdXBxX3hfd2JfdTgpKSkKdWludDh4MTZfdCBfX2FybV92ZGR1cHFfeF93Yl91OCh1aW50MzJfdCAqLCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmRkdXBxX3hfd2JfdTgpKSkKdWludDh4MTZfdCBfX2FybV92ZGR1cHFfeF91OCh1aW50MzJfdCAqLCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmR1cHFfbV9uX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmR1cHFfbV9uX3MxNihpbnQxNng4X3QsIGludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmR1cHFfbV9uX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmR1cHFfbShpbnQxNng4X3QsIGludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmR1cHFfbV9uX3MzMikpKQppbnQzMng0X3QgX19hcm1fdmR1cHFfbV9uX3MzMihpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmR1cHFfbV9uX3MzMikpKQppbnQzMng0X3QgX19hcm1fdmR1cHFfbShpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmR1cHFfbV9uX3M4KSkpCmludDh4MTZfdCBfX2FybV92ZHVwcV9tX25fczgoaW50OHgxNl90LCBpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmR1cHFfbV9uX3M4KSkpCmludDh4MTZfdCBfX2FybV92ZHVwcV9tKGludDh4MTZfdCwgaW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkdXBxX21fbl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92ZHVwcV9tX25fdTE2KHVpbnQxNng4X3QsIHVpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkdXBxX21fbl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92ZHVwcV9tKHVpbnQxNng4X3QsIHVpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkdXBxX21fbl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92ZHVwcV9tX25fdTMyKHVpbnQzMng0X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkdXBxX21fbl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92ZHVwcV9tKHVpbnQzMng0X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkdXBxX21fbl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZkdXBxX21fbl91OCh1aW50OHgxNl90LCB1aW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkdXBxX21fbl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZkdXBxX20odWludDh4MTZfdCwgdWludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHVwcV9uX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmR1cHFfbl9zMTYoaW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmR1cHFfbl9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZkdXBxX25fczMyKGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkdXBxX25fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZkdXBxX25fczgoaW50OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHVwcV9uX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZkdXBxX25fdTE2KHVpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHVwcV9uX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZkdXBxX25fdTMyKHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHVwcV9uX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmR1cHFfbl91OCh1aW50OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHVwcV94X25fczE2KSkpCmludDE2eDhfdCBfX2FybV92ZHVwcV94X25fczE2KGludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmR1cHFfeF9uX3MzMikpKQppbnQzMng0X3QgX19hcm1fdmR1cHFfeF9uX3MzMihpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkdXBxX3hfbl9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdmR1cHFfeF9uX3M4KGludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHVwcV94X25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmR1cHFfeF9uX3UxNih1aW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHVwcV94X25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmR1cHFfeF9uX3UzMih1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHVwcV94X25fdTgpKSkKdWludDh4MTZfdCBfX2FybV92ZHVwcV94X25fdTgodWludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHdkdXBxX21fbl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92ZHdkdXBxX21fbl91MTYodWludDE2eDhfdCwgdWludDMyX3QsIHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmR3ZHVwcV9tX25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmR3ZHVwcV9tKHVpbnQxNng4X3QsIHVpbnQzMl90LCB1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zkd2R1cHFfbV9uX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3Zkd2R1cHFfbV9uX3UzMih1aW50MzJ4NF90LCB1aW50MzJfdCwgdWludDMyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHdkdXBxX21fbl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92ZHdkdXBxX20odWludDMyeDRfdCwgdWludDMyX3QsIHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmR3ZHVwcV9tX25fdTgpKSkKdWludDh4MTZfdCBfX2FybV92ZHdkdXBxX21fbl91OCh1aW50OHgxNl90LCB1aW50MzJfdCwgdWludDMyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHdkdXBxX21fbl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3Zkd2R1cHFfbSh1aW50OHgxNl90LCB1aW50MzJfdCwgdWludDMyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHdkdXBxX21fd2JfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmR3ZHVwcV9tX3diX3UxNih1aW50MTZ4OF90LCB1aW50MzJfdCAqLCB1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zkd2R1cHFfbV93Yl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92ZHdkdXBxX20odWludDE2eDhfdCwgdWludDMyX3QgKiwgdWludDMyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHdkdXBxX21fd2JfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmR3ZHVwcV9tX3diX3UzMih1aW50MzJ4NF90LCB1aW50MzJfdCAqLCB1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zkd2R1cHFfbV93Yl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92ZHdkdXBxX20odWludDMyeDRfdCwgdWludDMyX3QgKiwgdWludDMyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHdkdXBxX21fd2JfdTgpKSkKdWludDh4MTZfdCBfX2FybV92ZHdkdXBxX21fd2JfdTgodWludDh4MTZfdCwgdWludDMyX3QgKiwgdWludDMyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHdkdXBxX21fd2JfdTgpKSkKdWludDh4MTZfdCBfX2FybV92ZHdkdXBxX20odWludDh4MTZfdCwgdWludDMyX3QgKiwgdWludDMyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHdkdXBxX25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmR3ZHVwcV9uX3UxNih1aW50MzJfdCwgdWludDMyX3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmR3ZHVwcV9uX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3Zkd2R1cHFfdTE2KHVpbnQzMl90LCB1aW50MzJfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHdkdXBxX25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmR3ZHVwcV9uX3UzMih1aW50MzJfdCwgdWludDMyX3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmR3ZHVwcV9uX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3Zkd2R1cHFfdTMyKHVpbnQzMl90LCB1aW50MzJfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHdkdXBxX25fdTgpKSkKdWludDh4MTZfdCBfX2FybV92ZHdkdXBxX25fdTgodWludDMyX3QsIHVpbnQzMl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zkd2R1cHFfbl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3Zkd2R1cHFfdTgodWludDMyX3QsIHVpbnQzMl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zkd2R1cHFfd2JfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmR3ZHVwcV93Yl91MTYodWludDMyX3QgKiwgdWludDMyX3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmR3ZHVwcV93Yl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92ZHdkdXBxX3UxNih1aW50MzJfdCAqLCB1aW50MzJfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHdkdXBxX3diX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3Zkd2R1cHFfd2JfdTMyKHVpbnQzMl90ICosIHVpbnQzMl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zkd2R1cHFfd2JfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmR3ZHVwcV91MzIodWludDMyX3QgKiwgdWludDMyX3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmR3ZHVwcV93Yl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3Zkd2R1cHFfd2JfdTgodWludDMyX3QgKiwgdWludDMyX3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmR3ZHVwcV93Yl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3Zkd2R1cHFfdTgodWludDMyX3QgKiwgdWludDMyX3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmR3ZHVwcV94X25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmR3ZHVwcV94X25fdTE2KHVpbnQzMl90LCB1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zkd2R1cHFfeF9uX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3Zkd2R1cHFfeF91MTYodWludDMyX3QsIHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmR3ZHVwcV94X25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmR3ZHVwcV94X25fdTMyKHVpbnQzMl90LCB1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zkd2R1cHFfeF9uX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3Zkd2R1cHFfeF91MzIodWludDMyX3QsIHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmR3ZHVwcV94X25fdTgpKSkKdWludDh4MTZfdCBfX2FybV92ZHdkdXBxX3hfbl91OCh1aW50MzJfdCwgdWludDMyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHdkdXBxX3hfbl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3Zkd2R1cHFfeF91OCh1aW50MzJfdCwgdWludDMyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHdkdXBxX3hfd2JfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmR3ZHVwcV94X3diX3UxNih1aW50MzJfdCAqLCB1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zkd2R1cHFfeF93Yl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92ZHdkdXBxX3hfdTE2KHVpbnQzMl90ICosIHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmR3ZHVwcV94X3diX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3Zkd2R1cHFfeF93Yl91MzIodWludDMyX3QgKiwgdWludDMyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHdkdXBxX3hfd2JfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmR3ZHVwcV94X3UzMih1aW50MzJfdCAqLCB1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zkd2R1cHFfeF93Yl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3Zkd2R1cHFfeF93Yl91OCh1aW50MzJfdCAqLCB1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zkd2R1cHFfeF93Yl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3Zkd2R1cHFfeF91OCh1aW50MzJfdCAqLCB1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zlb3JxX21fczE2KSkpCmludDE2eDhfdCBfX2FybV92ZW9ycV9tX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zlb3JxX21fczE2KSkpCmludDE2eDhfdCBfX2FybV92ZW9ycV9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmVvcnFfbV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3Zlb3JxX21fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmVvcnFfbV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3Zlb3JxX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZW9ycV9tX3M4KSkpCmludDh4MTZfdCBfX2FybV92ZW9ycV9tX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmVvcnFfbV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdmVvcnFfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zlb3JxX21fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmVvcnFfbV91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZW9ycV9tX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3Zlb3JxX20odWludDE2eDhfdCwgdWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZW9ycV9tX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3Zlb3JxX21fdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmVvcnFfbV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92ZW9ycV9tKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmVvcnFfbV91OCkpKQp1aW50OHgxNl90IF9fYXJtX3Zlb3JxX21fdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZW9ycV9tX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmVvcnFfbSh1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zlb3JxX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmVvcnFfczE2KGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZW9ycV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3Zlb3JxKGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZW9ycV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3Zlb3JxX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmVvcnFfczMyKSkpCmludDMyeDRfdCBfX2FybV92ZW9ycShpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmVvcnFfczgpKSkKaW50OHgxNl90IF9fYXJtX3Zlb3JxX3M4KGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZW9ycV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdmVvcnEoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zlb3JxX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3Zlb3JxX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZW9ycV91MTYpKSkKdWludDE2eDhfdCBfX2FybV92ZW9ycSh1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZW9ycV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92ZW9ycV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmVvcnFfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmVvcnEodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmVvcnFfdTgpKSkKdWludDh4MTZfdCBfX2FybV92ZW9ycV91OCh1aW50OHgxNl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZW9ycV91OCkpKQp1aW50OHgxNl90IF9fYXJtX3Zlb3JxKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zlb3JxX3hfczE2KSkpCmludDE2eDhfdCBfX2FybV92ZW9ycV94X3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZW9ycV94X3MxNikpKQppbnQxNng4X3QgX19hcm1fdmVvcnFfeChpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZW9ycV94X3MzMikpKQppbnQzMng0X3QgX19hcm1fdmVvcnFfeF9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmVvcnFfeF9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3Zlb3JxX3goaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmVvcnFfeF9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdmVvcnFfeF9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZW9ycV94X3M4KSkpCmludDh4MTZfdCBfX2FybV92ZW9ycV94KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zlb3JxX3hfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmVvcnFfeF91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZW9ycV94X3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3Zlb3JxX3godWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZW9ycV94X3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3Zlb3JxX3hfdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmVvcnFfeF91MzIpKSkKdWludDMyeDRfdCBfX2FybV92ZW9ycV94KHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmVvcnFfeF91OCkpKQp1aW50OHgxNl90IF9fYXJtX3Zlb3JxX3hfdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZW9ycV94X3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmVvcnFfeCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZnZXRxX2xhbmVfczE2KSkpCmludDE2X3QgX19hcm1fdmdldHFfbGFuZV9zMTYoaW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZnZXRxX2xhbmVfczE2KSkpCmludDE2X3QgX19hcm1fdmdldHFfbGFuZShpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmdldHFfbGFuZV9zMzIpKSkKaW50MzJfdCBfX2FybV92Z2V0cV9sYW5lX3MzMihpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmdldHFfbGFuZV9zMzIpKSkKaW50MzJfdCBfX2FybV92Z2V0cV9sYW5lKGludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Z2V0cV9sYW5lX3M2NCkpKQppbnQ2NF90IF9fYXJtX3ZnZXRxX2xhbmVfczY0KGludDY0eDJfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Z2V0cV9sYW5lX3M2NCkpKQppbnQ2NF90IF9fYXJtX3ZnZXRxX2xhbmUoaW50NjR4Ml90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZnZXRxX2xhbmVfczgpKSkKaW50OF90IF9fYXJtX3ZnZXRxX2xhbmVfczgoaW50OHgxNl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZnZXRxX2xhbmVfczgpKSkKaW50OF90IF9fYXJtX3ZnZXRxX2xhbmUoaW50OHgxNl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZnZXRxX2xhbmVfdTE2KSkpCnVpbnQxNl90IF9fYXJtX3ZnZXRxX2xhbmVfdTE2KHVpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmdldHFfbGFuZV91MTYpKSkKdWludDE2X3QgX19hcm1fdmdldHFfbGFuZSh1aW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZnZXRxX2xhbmVfdTMyKSkpCnVpbnQzMl90IF9fYXJtX3ZnZXRxX2xhbmVfdTMyKHVpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmdldHFfbGFuZV91MzIpKSkKdWludDMyX3QgX19hcm1fdmdldHFfbGFuZSh1aW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZnZXRxX2xhbmVfdTY0KSkpCnVpbnQ2NF90IF9fYXJtX3ZnZXRxX2xhbmVfdTY0KHVpbnQ2NHgyX3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmdldHFfbGFuZV91NjQpKSkKdWludDY0X3QgX19hcm1fdmdldHFfbGFuZSh1aW50NjR4Ml90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZnZXRxX2xhbmVfdTgpKSkKdWludDhfdCBfX2FybV92Z2V0cV9sYW5lX3U4KHVpbnQ4eDE2X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmdldHFfbGFuZV91OCkpKQp1aW50OF90IF9fYXJtX3ZnZXRxX2xhbmUodWludDh4MTZfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGFkZHFfbV9uX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmhhZGRxX21fbl9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX21fbl9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZoYWRkcV9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV9tX25fczMyKSkpCmludDMyeDRfdCBfX2FybV92aGFkZHFfbV9uX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGFkZHFfbV9uX3MzMikpKQppbnQzMng0X3QgX19hcm1fdmhhZGRxX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX21fbl9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdmhhZGRxX21fbl9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV9tX25fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZoYWRkcV9tKGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX21fbl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92aGFkZHFfbV9uX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90LCB1aW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGFkZHFfbV9uX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZoYWRkcV9tKHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV9tX25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmhhZGRxX21fbl91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgdWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX21fbl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92aGFkZHFfbSh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGFkZHFfbV9uX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmhhZGRxX21fbl91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV9tX25fdTgpKSkKdWludDh4MTZfdCBfX2FybV92aGFkZHFfbSh1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV9tX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmhhZGRxX21fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX21fczE2KSkpCmludDE2eDhfdCBfX2FybV92aGFkZHFfbShpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV9tX3MzMikpKQppbnQzMng0X3QgX19hcm1fdmhhZGRxX21fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX21fczMyKSkpCmludDMyeDRfdCBfX2FybV92aGFkZHFfbShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV9tX3M4KSkpCmludDh4MTZfdCBfX2FybV92aGFkZHFfbV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV9tX3M4KSkpCmludDh4MTZfdCBfX2FybV92aGFkZHFfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV9tX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZoYWRkcV9tX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV9tX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZoYWRkcV9tKHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX21fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmhhZGRxX21fdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX21fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmhhZGRxX20odWludDMyeDRfdCwgdWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGFkZHFfbV91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZoYWRkcV9tX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX21fdTgpKSkKdWludDh4MTZfdCBfX2FybV92aGFkZHFfbSh1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV9uX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmhhZGRxX25fczE2KGludDE2eDhfdCwgaW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX25fczE2KSkpCmludDE2eDhfdCBfX2FybV92aGFkZHEoaW50MTZ4OF90LCBpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGFkZHFfbl9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZoYWRkcV9uX3MzMihpbnQzMng0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV9uX3MzMikpKQppbnQzMng0X3QgX19hcm1fdmhhZGRxKGludDMyeDRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX25fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZoYWRkcV9uX3M4KGludDh4MTZfdCwgaW50OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGFkZHFfbl9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdmhhZGRxKGludDh4MTZfdCwgaW50OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGFkZHFfbl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92aGFkZHFfbl91MTYodWludDE2eDhfdCwgdWludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV9uX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZoYWRkcSh1aW50MTZ4OF90LCB1aW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmhhZGRxX25fdTMyKHVpbnQzMng0X3QsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGFkZHFfbl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92aGFkZHEodWludDMyeDRfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV9uX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmhhZGRxX25fdTgodWludDh4MTZfdCwgdWludDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX25fdTgpKSkKdWludDh4MTZfdCBfX2FybV92aGFkZHEodWludDh4MTZfdCwgdWludDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmhhZGRxX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmhhZGRxKGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGFkZHFfczMyKSkpCmludDMyeDRfdCBfX2FybV92aGFkZHFfczMyKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGFkZHFfczMyKSkpCmludDMyeDRfdCBfX2FybV92aGFkZHEoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdmhhZGRxX3M4KGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGFkZHFfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZoYWRkcShpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZoYWRkcV91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZoYWRkcSh1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGFkZHFfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmhhZGRxX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGFkZHFfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmhhZGRxKHVpbnQzMng0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZoYWRkcV91OCh1aW50OHgxNl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGFkZHFfdTgpKSkKdWludDh4MTZfdCBfX2FybV92aGFkZHEodWludDh4MTZfdCwgdWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX3hfbl9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZoYWRkcV94X25fczE2KGludDE2eDhfdCwgaW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGFkZHFfeF9uX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmhhZGRxX3goaW50MTZ4OF90LCBpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV94X25fczMyKSkpCmludDMyeDRfdCBfX2FybV92aGFkZHFfeF9uX3MzMihpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX3hfbl9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZoYWRkcV94KGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGFkZHFfeF9uX3M4KSkpCmludDh4MTZfdCBfX2FybV92aGFkZHFfeF9uX3M4KGludDh4MTZfdCwgaW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV94X25fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZoYWRkcV94KGludDh4MTZfdCwgaW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV94X25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmhhZGRxX3hfbl91MTYodWludDE2eDhfdCwgdWludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX3hfbl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92aGFkZHFfeCh1aW50MTZ4OF90LCB1aW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGFkZHFfeF9uX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZoYWRkcV94X25fdTMyKHVpbnQzMng0X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV94X25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmhhZGRxX3godWludDMyeDRfdCwgdWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX3hfbl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZoYWRkcV94X25fdTgodWludDh4MTZfdCwgdWludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGFkZHFfeF9uX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmhhZGRxX3godWludDh4MTZfdCwgdWludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGFkZHFfeF9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZoYWRkcV94X3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGFkZHFfeF9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZoYWRkcV94KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV94X3MzMikpKQppbnQzMng0X3QgX19hcm1fdmhhZGRxX3hfczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV94X3MzMikpKQppbnQzMng0X3QgX19hcm1fdmhhZGRxX3goaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX3hfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZoYWRkcV94X3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV94X3M4KSkpCmludDh4MTZfdCBfX2FybV92aGFkZHFfeChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGFkZHFfeF91MTYpKSkKdWludDE2eDhfdCBfX2FybV92aGFkZHFfeF91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGFkZHFfeF91MTYpKSkKdWludDE2eDhfdCBfX2FybV92aGFkZHFfeCh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV94X3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZoYWRkcV94X3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV94X3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZoYWRkcV94KHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX3hfdTgpKSkKdWludDh4MTZfdCBfX2FybV92aGFkZHFfeF91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV94X3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmhhZGRxX3godWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGNhZGRxX3JvdDI3MF9tX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmhjYWRkcV9yb3QyNzBfbV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGNhZGRxX3JvdDI3MF9tX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmhjYWRkcV9yb3QyNzBfbShpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoY2FkZHFfcm90MjcwX21fczMyKSkpCmludDMyeDRfdCBfX2FybV92aGNhZGRxX3JvdDI3MF9tX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoY2FkZHFfcm90MjcwX21fczMyKSkpCmludDMyeDRfdCBfX2FybV92aGNhZGRxX3JvdDI3MF9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhjYWRkcV9yb3QyNzBfbV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdmhjYWRkcV9yb3QyNzBfbV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoY2FkZHFfcm90MjcwX21fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZoY2FkZHFfcm90MjcwX20oaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGNhZGRxX3JvdDI3MF9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZoY2FkZHFfcm90MjcwX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhjYWRkcV9yb3QyNzBfczE2KSkpCmludDE2eDhfdCBfX2FybV92aGNhZGRxX3JvdDI3MChpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhjYWRkcV9yb3QyNzBfczMyKSkpCmludDMyeDRfdCBfX2FybV92aGNhZGRxX3JvdDI3MF9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoY2FkZHFfcm90MjcwX3MzMikpKQppbnQzMng0X3QgX19hcm1fdmhjYWRkcV9yb3QyNzAoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoY2FkZHFfcm90MjcwX3M4KSkpCmludDh4MTZfdCBfX2FybV92aGNhZGRxX3JvdDI3MF9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhjYWRkcV9yb3QyNzBfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZoY2FkZHFfcm90MjcwKGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGNhZGRxX3JvdDI3MF94X3MxNikpKQppbnQxNng4X3QgX19hcm1fdmhjYWRkcV9yb3QyNzBfeF9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhjYWRkcV9yb3QyNzBfeF9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZoY2FkZHFfcm90MjcwX3goaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhjYWRkcV9yb3QyNzBfeF9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZoY2FkZHFfcm90MjcwX3hfczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoY2FkZHFfcm90MjcwX3hfczMyKSkpCmludDMyeDRfdCBfX2FybV92aGNhZGRxX3JvdDI3MF94KGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoY2FkZHFfcm90MjcwX3hfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZoY2FkZHFfcm90MjcwX3hfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhjYWRkcV9yb3QyNzBfeF9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdmhjYWRkcV9yb3QyNzBfeChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGNhZGRxX3JvdDkwX21fczE2KSkpCmludDE2eDhfdCBfX2FybV92aGNhZGRxX3JvdDkwX21fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhjYWRkcV9yb3Q5MF9tX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmhjYWRkcV9yb3Q5MF9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhjYWRkcV9yb3Q5MF9tX3MzMikpKQppbnQzMng0X3QgX19hcm1fdmhjYWRkcV9yb3Q5MF9tX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoY2FkZHFfcm90OTBfbV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZoY2FkZHFfcm90OTBfbShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoY2FkZHFfcm90OTBfbV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdmhjYWRkcV9yb3Q5MF9tX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhjYWRkcV9yb3Q5MF9tX3M4KSkpCmludDh4MTZfdCBfX2FybV92aGNhZGRxX3JvdDkwX20oaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGNhZGRxX3JvdDkwX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmhjYWRkcV9yb3Q5MF9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoY2FkZHFfcm90OTBfczE2KSkpCmludDE2eDhfdCBfX2FybV92aGNhZGRxX3JvdDkwKGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGNhZGRxX3JvdDkwX3MzMikpKQppbnQzMng0X3QgX19hcm1fdmhjYWRkcV9yb3Q5MF9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoY2FkZHFfcm90OTBfczMyKSkpCmludDMyeDRfdCBfX2FybV92aGNhZGRxX3JvdDkwKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGNhZGRxX3JvdDkwX3M4KSkpCmludDh4MTZfdCBfX2FybV92aGNhZGRxX3JvdDkwX3M4KGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGNhZGRxX3JvdDkwX3M4KSkpCmludDh4MTZfdCBfX2FybV92aGNhZGRxX3JvdDkwKGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGNhZGRxX3JvdDkwX3hfczE2KSkpCmludDE2eDhfdCBfX2FybV92aGNhZGRxX3JvdDkwX3hfczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoY2FkZHFfcm90OTBfeF9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZoY2FkZHFfcm90OTBfeChpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGNhZGRxX3JvdDkwX3hfczMyKSkpCmludDMyeDRfdCBfX2FybV92aGNhZGRxX3JvdDkwX3hfczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoY2FkZHFfcm90OTBfeF9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZoY2FkZHFfcm90OTBfeChpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGNhZGRxX3JvdDkwX3hfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZoY2FkZHFfcm90OTBfeF9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGNhZGRxX3JvdDkwX3hfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZoY2FkZHFfcm90OTBfeChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aHN1YnFfbV9uX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmhzdWJxX21fbl9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX21fbl9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3Zoc3VicV9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV9tX25fczMyKSkpCmludDMyeDRfdCBfX2FybV92aHN1YnFfbV9uX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aHN1YnFfbV9uX3MzMikpKQppbnQzMng0X3QgX19hcm1fdmhzdWJxX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX21fbl9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdmhzdWJxX21fbl9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV9tX25fczgpKSkKaW50OHgxNl90IF9fYXJtX3Zoc3VicV9tKGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX21fbl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92aHN1YnFfbV9uX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90LCB1aW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aHN1YnFfbV9uX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3Zoc3VicV9tKHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV9tX25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmhzdWJxX21fbl91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgdWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX21fbl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92aHN1YnFfbSh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aHN1YnFfbV9uX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmhzdWJxX21fbl91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV9tX25fdTgpKSkKdWludDh4MTZfdCBfX2FybV92aHN1YnFfbSh1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV9tX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmhzdWJxX21fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX21fczE2KSkpCmludDE2eDhfdCBfX2FybV92aHN1YnFfbShpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV9tX3MzMikpKQppbnQzMng0X3QgX19hcm1fdmhzdWJxX21fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX21fczMyKSkpCmludDMyeDRfdCBfX2FybV92aHN1YnFfbShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV9tX3M4KSkpCmludDh4MTZfdCBfX2FybV92aHN1YnFfbV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV9tX3M4KSkpCmludDh4MTZfdCBfX2FybV92aHN1YnFfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV9tX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3Zoc3VicV9tX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV9tX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3Zoc3VicV9tKHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX21fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmhzdWJxX21fdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX21fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmhzdWJxX20odWludDMyeDRfdCwgdWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aHN1YnFfbV91OCkpKQp1aW50OHgxNl90IF9fYXJtX3Zoc3VicV9tX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX21fdTgpKSkKdWludDh4MTZfdCBfX2FybV92aHN1YnFfbSh1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV9uX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmhzdWJxX25fczE2KGludDE2eDhfdCwgaW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX25fczE2KSkpCmludDE2eDhfdCBfX2FybV92aHN1YnEoaW50MTZ4OF90LCBpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aHN1YnFfbl9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3Zoc3VicV9uX3MzMihpbnQzMng0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV9uX3MzMikpKQppbnQzMng0X3QgX19hcm1fdmhzdWJxKGludDMyeDRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX25fczgpKSkKaW50OHgxNl90IF9fYXJtX3Zoc3VicV9uX3M4KGludDh4MTZfdCwgaW50OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aHN1YnFfbl9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdmhzdWJxKGludDh4MTZfdCwgaW50OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aHN1YnFfbl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92aHN1YnFfbl91MTYodWludDE2eDhfdCwgdWludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV9uX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3Zoc3VicSh1aW50MTZ4OF90LCB1aW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmhzdWJxX25fdTMyKHVpbnQzMng0X3QsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aHN1YnFfbl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92aHN1YnEodWludDMyeDRfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV9uX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmhzdWJxX25fdTgodWludDh4MTZfdCwgdWludDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX25fdTgpKSkKdWludDh4MTZfdCBfX2FybV92aHN1YnEodWludDh4MTZfdCwgdWludDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmhzdWJxX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmhzdWJxKGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aHN1YnFfczMyKSkpCmludDMyeDRfdCBfX2FybV92aHN1YnFfczMyKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aHN1YnFfczMyKSkpCmludDMyeDRfdCBfX2FybV92aHN1YnEoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdmhzdWJxX3M4KGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aHN1YnFfczgpKSkKaW50OHgxNl90IF9fYXJtX3Zoc3VicShpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3Zoc3VicV91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3Zoc3VicSh1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aHN1YnFfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmhzdWJxX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aHN1YnFfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmhzdWJxKHVpbnQzMng0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV91OCkpKQp1aW50OHgxNl90IF9fYXJtX3Zoc3VicV91OCh1aW50OHgxNl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aHN1YnFfdTgpKSkKdWludDh4MTZfdCBfX2FybV92aHN1YnEodWludDh4MTZfdCwgdWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX3hfbl9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3Zoc3VicV94X25fczE2KGludDE2eDhfdCwgaW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aHN1YnFfeF9uX3MxNikpKQppbnQxNng4X3QgX19hcm1fdmhzdWJxX3goaW50MTZ4OF90LCBpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV94X25fczMyKSkpCmludDMyeDRfdCBfX2FybV92aHN1YnFfeF9uX3MzMihpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX3hfbl9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3Zoc3VicV94KGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aHN1YnFfeF9uX3M4KSkpCmludDh4MTZfdCBfX2FybV92aHN1YnFfeF9uX3M4KGludDh4MTZfdCwgaW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV94X25fczgpKSkKaW50OHgxNl90IF9fYXJtX3Zoc3VicV94KGludDh4MTZfdCwgaW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV94X25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmhzdWJxX3hfbl91MTYodWludDE2eDhfdCwgdWludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX3hfbl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92aHN1YnFfeCh1aW50MTZ4OF90LCB1aW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aHN1YnFfeF9uX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3Zoc3VicV94X25fdTMyKHVpbnQzMng0X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV94X25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmhzdWJxX3godWludDMyeDRfdCwgdWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX3hfbl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3Zoc3VicV94X25fdTgodWludDh4MTZfdCwgdWludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aHN1YnFfeF9uX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmhzdWJxX3godWludDh4MTZfdCwgdWludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aHN1YnFfeF9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3Zoc3VicV94X3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aHN1YnFfeF9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3Zoc3VicV94KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV94X3MzMikpKQppbnQzMng0X3QgX19hcm1fdmhzdWJxX3hfczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV94X3MzMikpKQppbnQzMng0X3QgX19hcm1fdmhzdWJxX3goaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX3hfczgpKSkKaW50OHgxNl90IF9fYXJtX3Zoc3VicV94X3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV94X3M4KSkpCmludDh4MTZfdCBfX2FybV92aHN1YnFfeChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aHN1YnFfeF91MTYpKSkKdWludDE2eDhfdCBfX2FybV92aHN1YnFfeF91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aHN1YnFfeF91MTYpKSkKdWludDE2eDhfdCBfX2FybV92aHN1YnFfeCh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV94X3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3Zoc3VicV94X3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV94X3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3Zoc3VicV94KHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX3hfdTgpKSkKdWludDh4MTZfdCBfX2FybV92aHN1YnFfeF91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV94X3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmhzdWJxX3godWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aWR1cHFfbV9uX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZpZHVwcV9tX25fdTE2KHVpbnQxNng4X3QsIHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmlkdXBxX21fbl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92aWR1cHFfbSh1aW50MTZ4OF90LCB1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZpZHVwcV9tX25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmlkdXBxX21fbl91MzIodWludDMyeDRfdCwgdWludDMyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aWR1cHFfbV9uX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZpZHVwcV9tKHVpbnQzMng0X3QsIHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmlkdXBxX21fbl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZpZHVwcV9tX25fdTgodWludDh4MTZfdCwgdWludDMyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aWR1cHFfbV9uX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmlkdXBxX20odWludDh4MTZfdCwgdWludDMyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aWR1cHFfbV93Yl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92aWR1cHFfbV93Yl91MTYodWludDE2eDhfdCwgdWludDMyX3QgKiwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZpZHVwcV9tX3diX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZpZHVwcV9tKHVpbnQxNng4X3QsIHVpbnQzMl90ICosIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aWR1cHFfbV93Yl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92aWR1cHFfbV93Yl91MzIodWludDMyeDRfdCwgdWludDMyX3QgKiwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZpZHVwcV9tX3diX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZpZHVwcV9tKHVpbnQzMng0X3QsIHVpbnQzMl90ICosIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aWR1cHFfbV93Yl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZpZHVwcV9tX3diX3U4KHVpbnQ4eDE2X3QsIHVpbnQzMl90ICosIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aWR1cHFfbV93Yl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZpZHVwcV9tKHVpbnQ4eDE2X3QsIHVpbnQzMl90ICosIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aWR1cHFfbl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92aWR1cHFfbl91MTYodWludDMyX3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmlkdXBxX25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmlkdXBxX3UxNih1aW50MzJfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aWR1cHFfbl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92aWR1cHFfbl91MzIodWludDMyX3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmlkdXBxX25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmlkdXBxX3UzMih1aW50MzJfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aWR1cHFfbl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZpZHVwcV9uX3U4KHVpbnQzMl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZpZHVwcV9uX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmlkdXBxX3U4KHVpbnQzMl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZpZHVwcV93Yl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92aWR1cHFfd2JfdTE2KHVpbnQzMl90ICosIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmlkdXBxX3diX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZpZHVwcV91MTYodWludDMyX3QgKiwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aWR1cHFfd2JfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmlkdXBxX3diX3UzMih1aW50MzJfdCAqLCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZpZHVwcV93Yl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92aWR1cHFfdTMyKHVpbnQzMl90ICosIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmlkdXBxX3diX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmlkdXBxX3diX3U4KHVpbnQzMl90ICosIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmlkdXBxX3diX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmlkdXBxX3U4KHVpbnQzMl90ICosIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmlkdXBxX3hfbl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92aWR1cHFfeF9uX3UxNih1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZpZHVwcV94X25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmlkdXBxX3hfdTE2KHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmlkdXBxX3hfbl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92aWR1cHFfeF9uX3UzMih1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZpZHVwcV94X25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmlkdXBxX3hfdTMyKHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmlkdXBxX3hfbl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZpZHVwcV94X25fdTgodWludDMyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aWR1cHFfeF9uX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmlkdXBxX3hfdTgodWludDMyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aWR1cHFfeF93Yl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92aWR1cHFfeF93Yl91MTYodWludDMyX3QgKiwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZpZHVwcV94X3diX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZpZHVwcV94X3UxNih1aW50MzJfdCAqLCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmlkdXBxX3hfd2JfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmlkdXBxX3hfd2JfdTMyKHVpbnQzMl90ICosIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aWR1cHFfeF93Yl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92aWR1cHFfeF91MzIodWludDMyX3QgKiwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZpZHVwcV94X3diX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmlkdXBxX3hfd2JfdTgodWludDMyX3QgKiwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZpZHVwcV94X3diX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmlkdXBxX3hfdTgodWludDMyX3QgKiwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zpd2R1cHFfbV9uX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3Zpd2R1cHFfbV9uX3UxNih1aW50MTZ4OF90LCB1aW50MzJfdCwgdWludDMyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aXdkdXBxX21fbl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92aXdkdXBxX20odWludDE2eDhfdCwgdWludDMyX3QsIHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdml3ZHVwcV9tX25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdml3ZHVwcV9tX25fdTMyKHVpbnQzMng0X3QsIHVpbnQzMl90LCB1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zpd2R1cHFfbV9uX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3Zpd2R1cHFfbSh1aW50MzJ4NF90LCB1aW50MzJfdCwgdWludDMyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aXdkdXBxX21fbl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3Zpd2R1cHFfbV9uX3U4KHVpbnQ4eDE2X3QsIHVpbnQzMl90LCB1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zpd2R1cHFfbV9uX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdml3ZHVwcV9tKHVpbnQ4eDE2X3QsIHVpbnQzMl90LCB1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zpd2R1cHFfbV93Yl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92aXdkdXBxX21fd2JfdTE2KHVpbnQxNng4X3QsIHVpbnQzMl90ICosIHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdml3ZHVwcV9tX3diX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3Zpd2R1cHFfbSh1aW50MTZ4OF90LCB1aW50MzJfdCAqLCB1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zpd2R1cHFfbV93Yl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92aXdkdXBxX21fd2JfdTMyKHVpbnQzMng0X3QsIHVpbnQzMl90ICosIHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdml3ZHVwcV9tX3diX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3Zpd2R1cHFfbSh1aW50MzJ4NF90LCB1aW50MzJfdCAqLCB1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zpd2R1cHFfbV93Yl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3Zpd2R1cHFfbV93Yl91OCh1aW50OHgxNl90LCB1aW50MzJfdCAqLCB1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zpd2R1cHFfbV93Yl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3Zpd2R1cHFfbSh1aW50OHgxNl90LCB1aW50MzJfdCAqLCB1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zpd2R1cHFfbl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92aXdkdXBxX25fdTE2KHVpbnQzMl90LCB1aW50MzJfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aXdkdXBxX25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdml3ZHVwcV91MTYodWludDMyX3QsIHVpbnQzMl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zpd2R1cHFfbl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92aXdkdXBxX25fdTMyKHVpbnQzMl90LCB1aW50MzJfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aXdkdXBxX25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdml3ZHVwcV91MzIodWludDMyX3QsIHVpbnQzMl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zpd2R1cHFfbl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3Zpd2R1cHFfbl91OCh1aW50MzJfdCwgdWludDMyX3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdml3ZHVwcV9uX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdml3ZHVwcV91OCh1aW50MzJfdCwgdWludDMyX3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdml3ZHVwcV93Yl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92aXdkdXBxX3diX3UxNih1aW50MzJfdCAqLCB1aW50MzJfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aXdkdXBxX3diX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3Zpd2R1cHFfdTE2KHVpbnQzMl90ICosIHVpbnQzMl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zpd2R1cHFfd2JfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdml3ZHVwcV93Yl91MzIodWludDMyX3QgKiwgdWludDMyX3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdml3ZHVwcV93Yl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92aXdkdXBxX3UzMih1aW50MzJfdCAqLCB1aW50MzJfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aXdkdXBxX3diX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdml3ZHVwcV93Yl91OCh1aW50MzJfdCAqLCB1aW50MzJfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aXdkdXBxX3diX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdml3ZHVwcV91OCh1aW50MzJfdCAqLCB1aW50MzJfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aXdkdXBxX3hfbl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92aXdkdXBxX3hfbl91MTYodWludDMyX3QsIHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdml3ZHVwcV94X25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdml3ZHVwcV94X3UxNih1aW50MzJfdCwgdWludDMyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aXdkdXBxX3hfbl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92aXdkdXBxX3hfbl91MzIodWludDMyX3QsIHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdml3ZHVwcV94X25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdml3ZHVwcV94X3UzMih1aW50MzJfdCwgdWludDMyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aXdkdXBxX3hfbl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3Zpd2R1cHFfeF9uX3U4KHVpbnQzMl90LCB1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zpd2R1cHFfeF9uX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdml3ZHVwcV94X3U4KHVpbnQzMl90LCB1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zpd2R1cHFfeF93Yl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92aXdkdXBxX3hfd2JfdTE2KHVpbnQzMl90ICosIHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdml3ZHVwcV94X3diX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3Zpd2R1cHFfeF91MTYodWludDMyX3QgKiwgdWludDMyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aXdkdXBxX3hfd2JfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdml3ZHVwcV94X3diX3UzMih1aW50MzJfdCAqLCB1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zpd2R1cHFfeF93Yl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92aXdkdXBxX3hfdTMyKHVpbnQzMl90ICosIHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdml3ZHVwcV94X3diX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdml3ZHVwcV94X3diX3U4KHVpbnQzMl90ICosIHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdml3ZHVwcV94X3diX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdml3ZHVwcV94X3U4KHVpbnQzMl90ICosIHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkMXFfczE2KSkpCmludDE2eDhfdCBfX2FybV92bGQxcV9zMTYoY29uc3QgaW50MTZfdCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGQxcV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZsZDFxKGNvbnN0IGludDE2X3QgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkMXFfczMyKSkpCmludDMyeDRfdCBfX2FybV92bGQxcV9zMzIoY29uc3QgaW50MzJfdCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGQxcV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZsZDFxKGNvbnN0IGludDMyX3QgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkMXFfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZsZDFxX3M4KGNvbnN0IGludDhfdCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGQxcV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdmxkMXEoY29uc3QgaW50OF90ICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZDFxX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZsZDFxX3UxNihjb25zdCB1aW50MTZfdCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGQxcV91MTYpKSkKdWludDE2eDhfdCBfX2FybV92bGQxcShjb25zdCB1aW50MTZfdCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGQxcV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92bGQxcV91MzIoY29uc3QgdWludDMyX3QgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkMXFfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmxkMXEoY29uc3QgdWludDMyX3QgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkMXFfdTgpKSkKdWludDh4MTZfdCBfX2FybV92bGQxcV91OChjb25zdCB1aW50OF90ICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZDFxX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmxkMXEoY29uc3QgdWludDhfdCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGQxcV96X3MxNikpKQppbnQxNng4X3QgX19hcm1fdmxkMXFfel9zMTYoY29uc3QgaW50MTZfdCAqLCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZDFxX3pfczE2KSkpCmludDE2eDhfdCBfX2FybV92bGQxcV96KGNvbnN0IGludDE2X3QgKiwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGQxcV96X3MzMikpKQppbnQzMng0X3QgX19hcm1fdmxkMXFfel9zMzIoY29uc3QgaW50MzJfdCAqLCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZDFxX3pfczMyKSkpCmludDMyeDRfdCBfX2FybV92bGQxcV96KGNvbnN0IGludDMyX3QgKiwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGQxcV96X3M4KSkpCmludDh4MTZfdCBfX2FybV92bGQxcV96X3M4KGNvbnN0IGludDhfdCAqLCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZDFxX3pfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZsZDFxX3ooY29uc3QgaW50OF90ICosIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkMXFfel91MTYpKSkKdWludDE2eDhfdCBfX2FybV92bGQxcV96X3UxNihjb25zdCB1aW50MTZfdCAqLCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZDFxX3pfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmxkMXFfeihjb25zdCB1aW50MTZfdCAqLCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZDFxX3pfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmxkMXFfel91MzIoY29uc3QgdWludDMyX3QgKiwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGQxcV96X3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZsZDFxX3ooY29uc3QgdWludDMyX3QgKiwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGQxcV96X3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmxkMXFfel91OChjb25zdCB1aW50OF90ICosIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkMXFfel91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZsZDFxX3ooY29uc3QgdWludDhfdCAqLCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZDJxX3MxNikpKQppbnQxNng4eDJfdCBfX2FybV92bGQycV9zMTYoY29uc3QgaW50MTZfdCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGQycV9zMTYpKSkKaW50MTZ4OHgyX3QgX19hcm1fdmxkMnEoY29uc3QgaW50MTZfdCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGQycV9zMzIpKSkKaW50MzJ4NHgyX3QgX19hcm1fdmxkMnFfczMyKGNvbnN0IGludDMyX3QgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkMnFfczMyKSkpCmludDMyeDR4Ml90IF9fYXJtX3ZsZDJxKGNvbnN0IGludDMyX3QgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkMnFfczgpKSkKaW50OHgxNngyX3QgX19hcm1fdmxkMnFfczgoY29uc3QgaW50OF90ICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZDJxX3M4KSkpCmludDh4MTZ4Ml90IF9fYXJtX3ZsZDJxKGNvbnN0IGludDhfdCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGQycV91MTYpKSkKdWludDE2eDh4Ml90IF9fYXJtX3ZsZDJxX3UxNihjb25zdCB1aW50MTZfdCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGQycV91MTYpKSkKdWludDE2eDh4Ml90IF9fYXJtX3ZsZDJxKGNvbnN0IHVpbnQxNl90ICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZDJxX3UzMikpKQp1aW50MzJ4NHgyX3QgX19hcm1fdmxkMnFfdTMyKGNvbnN0IHVpbnQzMl90ICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZDJxX3UzMikpKQp1aW50MzJ4NHgyX3QgX19hcm1fdmxkMnEoY29uc3QgdWludDMyX3QgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkMnFfdTgpKSkKdWludDh4MTZ4Ml90IF9fYXJtX3ZsZDJxX3U4KGNvbnN0IHVpbnQ4X3QgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkMnFfdTgpKSkKdWludDh4MTZ4Ml90IF9fYXJtX3ZsZDJxKGNvbnN0IHVpbnQ4X3QgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkNHFfczE2KSkpCmludDE2eDh4NF90IF9fYXJtX3ZsZDRxX3MxNihjb25zdCBpbnQxNl90ICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZDRxX3MxNikpKQppbnQxNng4eDRfdCBfX2FybV92bGQ0cShjb25zdCBpbnQxNl90ICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZDRxX3MzMikpKQppbnQzMng0eDRfdCBfX2FybV92bGQ0cV9zMzIoY29uc3QgaW50MzJfdCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGQ0cV9zMzIpKSkKaW50MzJ4NHg0X3QgX19hcm1fdmxkNHEoY29uc3QgaW50MzJfdCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGQ0cV9zOCkpKQppbnQ4eDE2eDRfdCBfX2FybV92bGQ0cV9zOChjb25zdCBpbnQ4X3QgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkNHFfczgpKSkKaW50OHgxNng0X3QgX19hcm1fdmxkNHEoY29uc3QgaW50OF90ICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZDRxX3UxNikpKQp1aW50MTZ4OHg0X3QgX19hcm1fdmxkNHFfdTE2KGNvbnN0IHVpbnQxNl90ICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZDRxX3UxNikpKQp1aW50MTZ4OHg0X3QgX19hcm1fdmxkNHEoY29uc3QgdWludDE2X3QgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkNHFfdTMyKSkpCnVpbnQzMng0eDRfdCBfX2FybV92bGQ0cV91MzIoY29uc3QgdWludDMyX3QgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkNHFfdTMyKSkpCnVpbnQzMng0eDRfdCBfX2FybV92bGQ0cShjb25zdCB1aW50MzJfdCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGQ0cV91OCkpKQp1aW50OHgxNng0X3QgX19hcm1fdmxkNHFfdTgoY29uc3QgdWludDhfdCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGQ0cV91OCkpKQp1aW50OHgxNng0X3QgX19hcm1fdmxkNHEoY29uc3QgdWludDhfdCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyYnFfZ2F0aGVyX29mZnNldF9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZsZHJicV9nYXRoZXJfb2Zmc2V0X3MxNihjb25zdCBpbnQ4X3QgKiwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmJxX2dhdGhlcl9vZmZzZXRfczE2KSkpCmludDE2eDhfdCBfX2FybV92bGRyYnFfZ2F0aGVyX29mZnNldChjb25zdCBpbnQ4X3QgKiwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmJxX2dhdGhlcl9vZmZzZXRfczMyKSkpCmludDMyeDRfdCBfX2FybV92bGRyYnFfZ2F0aGVyX29mZnNldF9zMzIoY29uc3QgaW50OF90ICosIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJicV9nYXRoZXJfb2Zmc2V0X3MzMikpKQppbnQzMng0X3QgX19hcm1fdmxkcmJxX2dhdGhlcl9vZmZzZXQoY29uc3QgaW50OF90ICosIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJicV9nYXRoZXJfb2Zmc2V0X3M4KSkpCmludDh4MTZfdCBfX2FybV92bGRyYnFfZ2F0aGVyX29mZnNldF9zOChjb25zdCBpbnQ4X3QgKiwgdWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmJxX2dhdGhlcl9vZmZzZXRfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZsZHJicV9nYXRoZXJfb2Zmc2V0KGNvbnN0IGludDhfdCAqLCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyYnFfZ2F0aGVyX29mZnNldF91MTYpKSkKdWludDE2eDhfdCBfX2FybV92bGRyYnFfZ2F0aGVyX29mZnNldF91MTYoY29uc3QgdWludDhfdCAqLCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyYnFfZ2F0aGVyX29mZnNldF91MTYpKSkKdWludDE2eDhfdCBfX2FybV92bGRyYnFfZ2F0aGVyX29mZnNldChjb25zdCB1aW50OF90ICosIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJicV9nYXRoZXJfb2Zmc2V0X3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZsZHJicV9nYXRoZXJfb2Zmc2V0X3UzMihjb25zdCB1aW50OF90ICosIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJicV9nYXRoZXJfb2Zmc2V0X3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZsZHJicV9nYXRoZXJfb2Zmc2V0KGNvbnN0IHVpbnQ4X3QgKiwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmJxX2dhdGhlcl9vZmZzZXRfdTgpKSkKdWludDh4MTZfdCBfX2FybV92bGRyYnFfZ2F0aGVyX29mZnNldF91OChjb25zdCB1aW50OF90ICosIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJicV9nYXRoZXJfb2Zmc2V0X3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdmxkcmJxX2dhdGhlcl9vZmZzZXQoY29uc3QgdWludDhfdCAqLCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyYnFfZ2F0aGVyX29mZnNldF96X3MxNikpKQppbnQxNng4X3QgX19hcm1fdmxkcmJxX2dhdGhlcl9vZmZzZXRfel9zMTYoY29uc3QgaW50OF90ICosIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmJxX2dhdGhlcl9vZmZzZXRfel9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZsZHJicV9nYXRoZXJfb2Zmc2V0X3ooY29uc3QgaW50OF90ICosIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmJxX2dhdGhlcl9vZmZzZXRfel9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZsZHJicV9nYXRoZXJfb2Zmc2V0X3pfczMyKGNvbnN0IGludDhfdCAqLCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJicV9nYXRoZXJfb2Zmc2V0X3pfczMyKSkpCmludDMyeDRfdCBfX2FybV92bGRyYnFfZ2F0aGVyX29mZnNldF96KGNvbnN0IGludDhfdCAqLCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJicV9nYXRoZXJfb2Zmc2V0X3pfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZsZHJicV9nYXRoZXJfb2Zmc2V0X3pfczgoY29uc3QgaW50OF90ICosIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmJxX2dhdGhlcl9vZmZzZXRfel9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdmxkcmJxX2dhdGhlcl9vZmZzZXRfeihjb25zdCBpbnQ4X3QgKiwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyYnFfZ2F0aGVyX29mZnNldF96X3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZsZHJicV9nYXRoZXJfb2Zmc2V0X3pfdTE2KGNvbnN0IHVpbnQ4X3QgKiwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyYnFfZ2F0aGVyX29mZnNldF96X3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZsZHJicV9nYXRoZXJfb2Zmc2V0X3ooY29uc3QgdWludDhfdCAqLCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJicV9nYXRoZXJfb2Zmc2V0X3pfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmxkcmJxX2dhdGhlcl9vZmZzZXRfel91MzIoY29uc3QgdWludDhfdCAqLCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJicV9nYXRoZXJfb2Zmc2V0X3pfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmxkcmJxX2dhdGhlcl9vZmZzZXRfeihjb25zdCB1aW50OF90ICosIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmJxX2dhdGhlcl9vZmZzZXRfel91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZsZHJicV9nYXRoZXJfb2Zmc2V0X3pfdTgoY29uc3QgdWludDhfdCAqLCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJicV9nYXRoZXJfb2Zmc2V0X3pfdTgpKSkKdWludDh4MTZfdCBfX2FybV92bGRyYnFfZ2F0aGVyX29mZnNldF96KGNvbnN0IHVpbnQ4X3QgKiwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyYnFfczE2KSkpCmludDE2eDhfdCBfX2FybV92bGRyYnFfczE2KGNvbnN0IGludDhfdCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyYnFfczMyKSkpCmludDMyeDRfdCBfX2FybV92bGRyYnFfczMyKGNvbnN0IGludDhfdCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyYnFfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZsZHJicV9zOChjb25zdCBpbnQ4X3QgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmJxX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZsZHJicV91MTYoY29uc3QgdWludDhfdCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyYnFfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmxkcmJxX3UzMihjb25zdCB1aW50OF90ICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJicV91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZsZHJicV91OChjb25zdCB1aW50OF90ICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJicV96X3MxNikpKQppbnQxNng4X3QgX19hcm1fdmxkcmJxX3pfczE2KGNvbnN0IGludDhfdCAqLCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJicV96X3MzMikpKQppbnQzMng0X3QgX19hcm1fdmxkcmJxX3pfczMyKGNvbnN0IGludDhfdCAqLCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJicV96X3M4KSkpCmludDh4MTZfdCBfX2FybV92bGRyYnFfel9zOChjb25zdCBpbnQ4X3QgKiwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyYnFfel91MTYpKSkKdWludDE2eDhfdCBfX2FybV92bGRyYnFfel91MTYoY29uc3QgdWludDhfdCAqLCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJicV96X3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZsZHJicV96X3UzMihjb25zdCB1aW50OF90ICosIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmJxX3pfdTgpKSkKdWludDh4MTZfdCBfX2FybV92bGRyYnFfel91OChjb25zdCB1aW50OF90ICosIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmRxX2dhdGhlcl9iYXNlX3M2NCkpKQppbnQ2NHgyX3QgX19hcm1fdmxkcmRxX2dhdGhlcl9iYXNlX3M2NCh1aW50NjR4Ml90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJkcV9nYXRoZXJfYmFzZV91NjQpKSkKdWludDY0eDJfdCBfX2FybV92bGRyZHFfZ2F0aGVyX2Jhc2VfdTY0KHVpbnQ2NHgyX3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmRxX2dhdGhlcl9iYXNlX3diX3M2NCkpKQppbnQ2NHgyX3QgX19hcm1fdmxkcmRxX2dhdGhlcl9iYXNlX3diX3M2NCh1aW50NjR4Ml90ICosIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmRxX2dhdGhlcl9iYXNlX3diX3U2NCkpKQp1aW50NjR4Ml90IF9fYXJtX3ZsZHJkcV9nYXRoZXJfYmFzZV93Yl91NjQodWludDY0eDJfdCAqLCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJkcV9nYXRoZXJfYmFzZV93Yl96X3M2NCkpKQppbnQ2NHgyX3QgX19hcm1fdmxkcmRxX2dhdGhlcl9iYXNlX3diX3pfczY0KHVpbnQ2NHgyX3QgKiwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJkcV9nYXRoZXJfYmFzZV93Yl96X3U2NCkpKQp1aW50NjR4Ml90IF9fYXJtX3ZsZHJkcV9nYXRoZXJfYmFzZV93Yl96X3U2NCh1aW50NjR4Ml90ICosIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyZHFfZ2F0aGVyX2Jhc2Vfel9zNjQpKSkKaW50NjR4Ml90IF9fYXJtX3ZsZHJkcV9nYXRoZXJfYmFzZV96X3M2NCh1aW50NjR4Ml90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmRxX2dhdGhlcl9iYXNlX3pfdTY0KSkpCnVpbnQ2NHgyX3QgX19hcm1fdmxkcmRxX2dhdGhlcl9iYXNlX3pfdTY0KHVpbnQ2NHgyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyZHFfZ2F0aGVyX29mZnNldF9zNjQpKSkKaW50NjR4Ml90IF9fYXJtX3ZsZHJkcV9nYXRoZXJfb2Zmc2V0X3M2NChjb25zdCBpbnQ2NF90ICosIHVpbnQ2NHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJkcV9nYXRoZXJfb2Zmc2V0X3M2NCkpKQppbnQ2NHgyX3QgX19hcm1fdmxkcmRxX2dhdGhlcl9vZmZzZXQoY29uc3QgaW50NjRfdCAqLCB1aW50NjR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyZHFfZ2F0aGVyX29mZnNldF91NjQpKSkKdWludDY0eDJfdCBfX2FybV92bGRyZHFfZ2F0aGVyX29mZnNldF91NjQoY29uc3QgdWludDY0X3QgKiwgdWludDY0eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmRxX2dhdGhlcl9vZmZzZXRfdTY0KSkpCnVpbnQ2NHgyX3QgX19hcm1fdmxkcmRxX2dhdGhlcl9vZmZzZXQoY29uc3QgdWludDY0X3QgKiwgdWludDY0eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmRxX2dhdGhlcl9vZmZzZXRfel9zNjQpKSkKaW50NjR4Ml90IF9fYXJtX3ZsZHJkcV9nYXRoZXJfb2Zmc2V0X3pfczY0KGNvbnN0IGludDY0X3QgKiwgdWludDY0eDJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyZHFfZ2F0aGVyX29mZnNldF96X3M2NCkpKQppbnQ2NHgyX3QgX19hcm1fdmxkcmRxX2dhdGhlcl9vZmZzZXRfeihjb25zdCBpbnQ2NF90ICosIHVpbnQ2NHgyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmRxX2dhdGhlcl9vZmZzZXRfel91NjQpKSkKdWludDY0eDJfdCBfX2FybV92bGRyZHFfZ2F0aGVyX29mZnNldF96X3U2NChjb25zdCB1aW50NjRfdCAqLCB1aW50NjR4Ml90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJkcV9nYXRoZXJfb2Zmc2V0X3pfdTY0KSkpCnVpbnQ2NHgyX3QgX19hcm1fdmxkcmRxX2dhdGhlcl9vZmZzZXRfeihjb25zdCB1aW50NjRfdCAqLCB1aW50NjR4Ml90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJkcV9nYXRoZXJfc2hpZnRlZF9vZmZzZXRfczY0KSkpCmludDY0eDJfdCBfX2FybV92bGRyZHFfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3M2NChjb25zdCBpbnQ2NF90ICosIHVpbnQ2NHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJkcV9nYXRoZXJfc2hpZnRlZF9vZmZzZXRfczY0KSkpCmludDY0eDJfdCBfX2FybV92bGRyZHFfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0KGNvbnN0IGludDY0X3QgKiwgdWludDY0eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmRxX2dhdGhlcl9zaGlmdGVkX29mZnNldF91NjQpKSkKdWludDY0eDJfdCBfX2FybV92bGRyZHFfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3U2NChjb25zdCB1aW50NjRfdCAqLCB1aW50NjR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyZHFfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3U2NCkpKQp1aW50NjR4Ml90IF9fYXJtX3ZsZHJkcV9nYXRoZXJfc2hpZnRlZF9vZmZzZXQoY29uc3QgdWludDY0X3QgKiwgdWludDY0eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmRxX2dhdGhlcl9zaGlmdGVkX29mZnNldF96X3M2NCkpKQppbnQ2NHgyX3QgX19hcm1fdmxkcmRxX2dhdGhlcl9zaGlmdGVkX29mZnNldF96X3M2NChjb25zdCBpbnQ2NF90ICosIHVpbnQ2NHgyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmRxX2dhdGhlcl9zaGlmdGVkX29mZnNldF96X3M2NCkpKQppbnQ2NHgyX3QgX19hcm1fdmxkcmRxX2dhdGhlcl9zaGlmdGVkX29mZnNldF96KGNvbnN0IGludDY0X3QgKiwgdWludDY0eDJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyZHFfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3pfdTY0KSkpCnVpbnQ2NHgyX3QgX19hcm1fdmxkcmRxX2dhdGhlcl9zaGlmdGVkX29mZnNldF96X3U2NChjb25zdCB1aW50NjRfdCAqLCB1aW50NjR4Ml90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJkcV9nYXRoZXJfc2hpZnRlZF9vZmZzZXRfel91NjQpKSkKdWludDY0eDJfdCBfX2FybV92bGRyZHFfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3ooY29uc3QgdWludDY0X3QgKiwgdWludDY0eDJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyaHFfZ2F0aGVyX29mZnNldF9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZsZHJocV9nYXRoZXJfb2Zmc2V0X3MxNihjb25zdCBpbnQxNl90ICosIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJocV9nYXRoZXJfb2Zmc2V0X3MxNikpKQppbnQxNng4X3QgX19hcm1fdmxkcmhxX2dhdGhlcl9vZmZzZXQoY29uc3QgaW50MTZfdCAqLCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyaHFfZ2F0aGVyX29mZnNldF9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZsZHJocV9nYXRoZXJfb2Zmc2V0X3MzMihjb25zdCBpbnQxNl90ICosIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJocV9nYXRoZXJfb2Zmc2V0X3MzMikpKQppbnQzMng0X3QgX19hcm1fdmxkcmhxX2dhdGhlcl9vZmZzZXQoY29uc3QgaW50MTZfdCAqLCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyaHFfZ2F0aGVyX29mZnNldF91MTYpKSkKdWludDE2eDhfdCBfX2FybV92bGRyaHFfZ2F0aGVyX29mZnNldF91MTYoY29uc3QgdWludDE2X3QgKiwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmhxX2dhdGhlcl9vZmZzZXRfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmxkcmhxX2dhdGhlcl9vZmZzZXQoY29uc3QgdWludDE2X3QgKiwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmhxX2dhdGhlcl9vZmZzZXRfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmxkcmhxX2dhdGhlcl9vZmZzZXRfdTMyKGNvbnN0IHVpbnQxNl90ICosIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJocV9nYXRoZXJfb2Zmc2V0X3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZsZHJocV9nYXRoZXJfb2Zmc2V0KGNvbnN0IHVpbnQxNl90ICosIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJocV9nYXRoZXJfb2Zmc2V0X3pfczE2KSkpCmludDE2eDhfdCBfX2FybV92bGRyaHFfZ2F0aGVyX29mZnNldF96X3MxNihjb25zdCBpbnQxNl90ICosIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmhxX2dhdGhlcl9vZmZzZXRfel9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZsZHJocV9nYXRoZXJfb2Zmc2V0X3ooY29uc3QgaW50MTZfdCAqLCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJocV9nYXRoZXJfb2Zmc2V0X3pfczMyKSkpCmludDMyeDRfdCBfX2FybV92bGRyaHFfZ2F0aGVyX29mZnNldF96X3MzMihjb25zdCBpbnQxNl90ICosIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmhxX2dhdGhlcl9vZmZzZXRfel9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZsZHJocV9nYXRoZXJfb2Zmc2V0X3ooY29uc3QgaW50MTZfdCAqLCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJocV9nYXRoZXJfb2Zmc2V0X3pfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmxkcmhxX2dhdGhlcl9vZmZzZXRfel91MTYoY29uc3QgdWludDE2X3QgKiwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyaHFfZ2F0aGVyX29mZnNldF96X3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZsZHJocV9nYXRoZXJfb2Zmc2V0X3ooY29uc3QgdWludDE2X3QgKiwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyaHFfZ2F0aGVyX29mZnNldF96X3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZsZHJocV9nYXRoZXJfb2Zmc2V0X3pfdTMyKGNvbnN0IHVpbnQxNl90ICosIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmhxX2dhdGhlcl9vZmZzZXRfel91MzIpKSkKdWludDMyeDRfdCBfX2FybV92bGRyaHFfZ2F0aGVyX29mZnNldF96KGNvbnN0IHVpbnQxNl90ICosIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmhxX2dhdGhlcl9zaGlmdGVkX29mZnNldF9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZsZHJocV9nYXRoZXJfc2hpZnRlZF9vZmZzZXRfczE2KGNvbnN0IGludDE2X3QgKiwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmhxX2dhdGhlcl9zaGlmdGVkX29mZnNldF9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZsZHJocV9nYXRoZXJfc2hpZnRlZF9vZmZzZXQoY29uc3QgaW50MTZfdCAqLCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyaHFfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3MzMikpKQppbnQzMng0X3QgX19hcm1fdmxkcmhxX2dhdGhlcl9zaGlmdGVkX29mZnNldF9zMzIoY29uc3QgaW50MTZfdCAqLCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyaHFfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3MzMikpKQppbnQzMng0X3QgX19hcm1fdmxkcmhxX2dhdGhlcl9zaGlmdGVkX29mZnNldChjb25zdCBpbnQxNl90ICosIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJocV9nYXRoZXJfc2hpZnRlZF9vZmZzZXRfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmxkcmhxX2dhdGhlcl9zaGlmdGVkX29mZnNldF91MTYoY29uc3QgdWludDE2X3QgKiwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmhxX2dhdGhlcl9zaGlmdGVkX29mZnNldF91MTYpKSkKdWludDE2eDhfdCBfX2FybV92bGRyaHFfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0KGNvbnN0IHVpbnQxNl90ICosIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJocV9nYXRoZXJfc2hpZnRlZF9vZmZzZXRfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmxkcmhxX2dhdGhlcl9zaGlmdGVkX29mZnNldF91MzIoY29uc3QgdWludDE2X3QgKiwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmhxX2dhdGhlcl9zaGlmdGVkX29mZnNldF91MzIpKSkKdWludDMyeDRfdCBfX2FybV92bGRyaHFfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0KGNvbnN0IHVpbnQxNl90ICosIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJocV9nYXRoZXJfc2hpZnRlZF9vZmZzZXRfel9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZsZHJocV9nYXRoZXJfc2hpZnRlZF9vZmZzZXRfel9zMTYoY29uc3QgaW50MTZfdCAqLCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJocV9nYXRoZXJfc2hpZnRlZF9vZmZzZXRfel9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZsZHJocV9nYXRoZXJfc2hpZnRlZF9vZmZzZXRfeihjb25zdCBpbnQxNl90ICosIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmhxX2dhdGhlcl9zaGlmdGVkX29mZnNldF96X3MzMikpKQppbnQzMng0X3QgX19hcm1fdmxkcmhxX2dhdGhlcl9zaGlmdGVkX29mZnNldF96X3MzMihjb25zdCBpbnQxNl90ICosIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmhxX2dhdGhlcl9zaGlmdGVkX29mZnNldF96X3MzMikpKQppbnQzMng0X3QgX19hcm1fdmxkcmhxX2dhdGhlcl9zaGlmdGVkX29mZnNldF96KGNvbnN0IGludDE2X3QgKiwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyaHFfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3pfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmxkcmhxX2dhdGhlcl9zaGlmdGVkX29mZnNldF96X3UxNihjb25zdCB1aW50MTZfdCAqLCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJocV9nYXRoZXJfc2hpZnRlZF9vZmZzZXRfel91MTYpKSkKdWludDE2eDhfdCBfX2FybV92bGRyaHFfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3ooY29uc3QgdWludDE2X3QgKiwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyaHFfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3pfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmxkcmhxX2dhdGhlcl9zaGlmdGVkX29mZnNldF96X3UzMihjb25zdCB1aW50MTZfdCAqLCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJocV9nYXRoZXJfc2hpZnRlZF9vZmZzZXRfel91MzIpKSkKdWludDMyeDRfdCBfX2FybV92bGRyaHFfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3ooY29uc3QgdWludDE2X3QgKiwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyaHFfczE2KSkpCmludDE2eDhfdCBfX2FybV92bGRyaHFfczE2KGNvbnN0IGludDE2X3QgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmhxX3MzMikpKQppbnQzMng0X3QgX19hcm1fdmxkcmhxX3MzMihjb25zdCBpbnQxNl90ICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJocV91MTYpKSkKdWludDE2eDhfdCBfX2FybV92bGRyaHFfdTE2KGNvbnN0IHVpbnQxNl90ICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJocV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92bGRyaHFfdTMyKGNvbnN0IHVpbnQxNl90ICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJocV96X3MxNikpKQppbnQxNng4X3QgX19hcm1fdmxkcmhxX3pfczE2KGNvbnN0IGludDE2X3QgKiwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyaHFfel9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZsZHJocV96X3MzMihjb25zdCBpbnQxNl90ICosIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmhxX3pfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmxkcmhxX3pfdTE2KGNvbnN0IHVpbnQxNl90ICosIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmhxX3pfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmxkcmhxX3pfdTMyKGNvbnN0IHVpbnQxNl90ICosIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcndxX2dhdGhlcl9iYXNlX3MzMikpKQppbnQzMng0X3QgX19hcm1fdmxkcndxX2dhdGhlcl9iYXNlX3MzMih1aW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJ3cV9nYXRoZXJfYmFzZV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92bGRyd3FfZ2F0aGVyX2Jhc2VfdTMyKHVpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcndxX2dhdGhlcl9iYXNlX3diX3MzMikpKQppbnQzMng0X3QgX19hcm1fdmxkcndxX2dhdGhlcl9iYXNlX3diX3MzMih1aW50MzJ4NF90ICosIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcndxX2dhdGhlcl9iYXNlX3diX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZsZHJ3cV9nYXRoZXJfYmFzZV93Yl91MzIodWludDMyeDRfdCAqLCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJ3cV9nYXRoZXJfYmFzZV93Yl96X3MzMikpKQppbnQzMng0X3QgX19hcm1fdmxkcndxX2dhdGhlcl9iYXNlX3diX3pfczMyKHVpbnQzMng0X3QgKiwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJ3cV9nYXRoZXJfYmFzZV93Yl96X3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZsZHJ3cV9nYXRoZXJfYmFzZV93Yl96X3UzMih1aW50MzJ4NF90ICosIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyd3FfZ2F0aGVyX2Jhc2Vfel9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZsZHJ3cV9nYXRoZXJfYmFzZV96X3MzMih1aW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcndxX2dhdGhlcl9iYXNlX3pfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmxkcndxX2dhdGhlcl9iYXNlX3pfdTMyKHVpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyd3FfZ2F0aGVyX29mZnNldF9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZsZHJ3cV9nYXRoZXJfb2Zmc2V0X3MzMihjb25zdCBpbnQzMl90ICosIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJ3cV9nYXRoZXJfb2Zmc2V0X3MzMikpKQppbnQzMng0X3QgX19hcm1fdmxkcndxX2dhdGhlcl9vZmZzZXQoY29uc3QgaW50MzJfdCAqLCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyd3FfZ2F0aGVyX29mZnNldF91MzIpKSkKdWludDMyeDRfdCBfX2FybV92bGRyd3FfZ2F0aGVyX29mZnNldF91MzIoY29uc3QgdWludDMyX3QgKiwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcndxX2dhdGhlcl9vZmZzZXRfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmxkcndxX2dhdGhlcl9vZmZzZXQoY29uc3QgdWludDMyX3QgKiwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcndxX2dhdGhlcl9vZmZzZXRfel9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZsZHJ3cV9nYXRoZXJfb2Zmc2V0X3pfczMyKGNvbnN0IGludDMyX3QgKiwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyd3FfZ2F0aGVyX29mZnNldF96X3MzMikpKQppbnQzMng0X3QgX19hcm1fdmxkcndxX2dhdGhlcl9vZmZzZXRfeihjb25zdCBpbnQzMl90ICosIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcndxX2dhdGhlcl9vZmZzZXRfel91MzIpKSkKdWludDMyeDRfdCBfX2FybV92bGRyd3FfZ2F0aGVyX29mZnNldF96X3UzMihjb25zdCB1aW50MzJfdCAqLCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJ3cV9nYXRoZXJfb2Zmc2V0X3pfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmxkcndxX2dhdGhlcl9vZmZzZXRfeihjb25zdCB1aW50MzJfdCAqLCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJ3cV9nYXRoZXJfc2hpZnRlZF9vZmZzZXRfczMyKSkpCmludDMyeDRfdCBfX2FybV92bGRyd3FfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3MzMihjb25zdCBpbnQzMl90ICosIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJ3cV9nYXRoZXJfc2hpZnRlZF9vZmZzZXRfczMyKSkpCmludDMyeDRfdCBfX2FybV92bGRyd3FfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0KGNvbnN0IGludDMyX3QgKiwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcndxX2dhdGhlcl9zaGlmdGVkX29mZnNldF91MzIpKSkKdWludDMyeDRfdCBfX2FybV92bGRyd3FfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3UzMihjb25zdCB1aW50MzJfdCAqLCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyd3FfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZsZHJ3cV9nYXRoZXJfc2hpZnRlZF9vZmZzZXQoY29uc3QgdWludDMyX3QgKiwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcndxX2dhdGhlcl9zaGlmdGVkX29mZnNldF96X3MzMikpKQppbnQzMng0X3QgX19hcm1fdmxkcndxX2dhdGhlcl9zaGlmdGVkX29mZnNldF96X3MzMihjb25zdCBpbnQzMl90ICosIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcndxX2dhdGhlcl9zaGlmdGVkX29mZnNldF96X3MzMikpKQppbnQzMng0X3QgX19hcm1fdmxkcndxX2dhdGhlcl9zaGlmdGVkX29mZnNldF96KGNvbnN0IGludDMyX3QgKiwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyd3FfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3pfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmxkcndxX2dhdGhlcl9zaGlmdGVkX29mZnNldF96X3UzMihjb25zdCB1aW50MzJfdCAqLCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJ3cV9nYXRoZXJfc2hpZnRlZF9vZmZzZXRfel91MzIpKSkKdWludDMyeDRfdCBfX2FybV92bGRyd3FfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3ooY29uc3QgdWludDMyX3QgKiwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyd3FfczMyKSkpCmludDMyeDRfdCBfX2FybV92bGRyd3FfczMyKGNvbnN0IGludDMyX3QgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcndxX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZsZHJ3cV91MzIoY29uc3QgdWludDMyX3QgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcndxX3pfczMyKSkpCmludDMyeDRfdCBfX2FybV92bGRyd3Ffel9zMzIoY29uc3QgaW50MzJfdCAqLCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJ3cV96X3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZsZHJ3cV96X3UzMihjb25zdCB1aW50MzJfdCAqLCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhhcV9tX3MxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZtYXhhcV9tX3MxNih1aW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heGFxX21fczE2KSkpCnVpbnQxNng4X3QgX19hcm1fdm1heGFxX20odWludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhhcV9tX3MzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZtYXhhcV9tX3MzMih1aW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heGFxX21fczMyKSkpCnVpbnQzMng0X3QgX19hcm1fdm1heGFxX20odWludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhhcV9tX3M4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdm1heGFxX21fczgodWludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhhcV9tX3M4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdm1heGFxX20odWludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhhcV9zMTYpKSkKdWludDE2eDhfdCBfX2FybV92bWF4YXFfczE2KHVpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heGFxX3MxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZtYXhhcSh1aW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhhcV9zMzIpKSkKdWludDMyeDRfdCBfX2FybV92bWF4YXFfczMyKHVpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heGFxX3MzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZtYXhhcSh1aW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhhcV9zOCkpKQp1aW50OHgxNl90IF9fYXJtX3ZtYXhhcV9zOCh1aW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhhcV9zOCkpKQp1aW50OHgxNl90IF9fYXJtX3ZtYXhhcSh1aW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhhdnFfcF9zMTYpKSkKdWludDE2X3QgX19hcm1fdm1heGF2cV9wX3MxNih1aW50MTZfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhhdnFfcF9zMTYpKSkKdWludDE2X3QgX19hcm1fdm1heGF2cV9wKHVpbnQxNl90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heGF2cV9wX3MzMikpKQp1aW50MzJfdCBfX2FybV92bWF4YXZxX3BfczMyKHVpbnQzMl90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heGF2cV9wX3MzMikpKQp1aW50MzJfdCBfX2FybV92bWF4YXZxX3AodWludDMyX3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4YXZxX3BfczgpKSkKdWludDhfdCBfX2FybV92bWF4YXZxX3BfczgodWludDhfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhhdnFfcF9zOCkpKQp1aW50OF90IF9fYXJtX3ZtYXhhdnFfcCh1aW50OF90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heGF2cV9zMTYpKSkKdWludDE2X3QgX19hcm1fdm1heGF2cV9zMTYodWludDE2X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heGF2cV9zMTYpKSkKdWludDE2X3QgX19hcm1fdm1heGF2cSh1aW50MTZfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4YXZxX3MzMikpKQp1aW50MzJfdCBfX2FybV92bWF4YXZxX3MzMih1aW50MzJfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4YXZxX3MzMikpKQp1aW50MzJfdCBfX2FybV92bWF4YXZxKHVpbnQzMl90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhhdnFfczgpKSkKdWludDhfdCBfX2FybV92bWF4YXZxX3M4KHVpbnQ4X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heGF2cV9zOCkpKQp1aW50OF90IF9fYXJtX3ZtYXhhdnEodWludDhfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4cV9tX3MxNikpKQppbnQxNng4X3QgX19hcm1fdm1heHFfbV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4cV9tX3MxNikpKQppbnQxNng4X3QgX19hcm1fdm1heHFfbShpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhxX21fczMyKSkpCmludDMyeDRfdCBfX2FybV92bWF4cV9tX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhxX21fczMyKSkpCmludDMyeDRfdCBfX2FybV92bWF4cV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heHFfbV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdm1heHFfbV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhxX21fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZtYXhxX20oaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4cV9tX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZtYXhxX21fdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heHFfbV91MTYpKSkKdWludDE2eDhfdCBfX2FybV92bWF4cV9tKHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heHFfbV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92bWF4cV9tX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhxX21fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdm1heHFfbSh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhxX21fdTgpKSkKdWludDh4MTZfdCBfX2FybV92bWF4cV9tX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heHFfbV91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZtYXhxX20odWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4cV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZtYXhxX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heHFfczE2KSkpCmludDE2eDhfdCBfX2FybV92bWF4cShpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heHFfczMyKSkpCmludDMyeDRfdCBfX2FybV92bWF4cV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhxX3MzMikpKQppbnQzMng0X3QgX19hcm1fdm1heHEoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhxX3M4KSkpCmludDh4MTZfdCBfX2FybV92bWF4cV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heHFfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZtYXhxKGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4cV91MTYpKSkKdWludDE2eDhfdCBfX2FybV92bWF4cV91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heHFfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdm1heHEodWludDE2eDhfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heHFfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdm1heHFfdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhxX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZtYXhxKHVpbnQzMng0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhxX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdm1heHFfdTgodWludDh4MTZfdCwgdWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heHFfdTgpKSkKdWludDh4MTZfdCBfX2FybV92bWF4cSh1aW50OHgxNl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4cV94X3MxNikpKQppbnQxNng4X3QgX19hcm1fdm1heHFfeF9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heHFfeF9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZtYXhxX3goaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heHFfeF9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZtYXhxX3hfczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhxX3hfczMyKSkpCmludDMyeDRfdCBfX2FybV92bWF4cV94KGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhxX3hfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZtYXhxX3hfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heHFfeF9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdm1heHFfeChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4cV94X3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZtYXhxX3hfdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heHFfeF91MTYpKSkKdWludDE2eDhfdCBfX2FybV92bWF4cV94KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heHFfeF91MzIpKSkKdWludDMyeDRfdCBfX2FybV92bWF4cV94X3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhxX3hfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdm1heHFfeCh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhxX3hfdTgpKSkKdWludDh4MTZfdCBfX2FybV92bWF4cV94X3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heHFfeF91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZtYXhxX3godWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4dnFfcF9zMTYpKSkKaW50MTZfdCBfX2FybV92bWF4dnFfcF9zMTYoaW50MTZfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXh2cV9wX3MxNikpKQppbnQxNl90IF9fYXJtX3ZtYXh2cV9wKGludDE2X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4dnFfcF9zMzIpKSkKaW50MzJfdCBfX2FybV92bWF4dnFfcF9zMzIoaW50MzJfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXh2cV9wX3MzMikpKQppbnQzMl90IF9fYXJtX3ZtYXh2cV9wKGludDMyX3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4dnFfcF9zOCkpKQppbnQ4X3QgX19hcm1fdm1heHZxX3BfczgoaW50OF90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heHZxX3BfczgpKSkKaW50OF90IF9fYXJtX3ZtYXh2cV9wKGludDhfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXh2cV9wX3UxNikpKQp1aW50MTZfdCBfX2FybV92bWF4dnFfcF91MTYodWludDE2X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heHZxX3BfdTE2KSkpCnVpbnQxNl90IF9fYXJtX3ZtYXh2cV9wKHVpbnQxNl90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXh2cV9wX3UzMikpKQp1aW50MzJfdCBfX2FybV92bWF4dnFfcF91MzIodWludDMyX3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heHZxX3BfdTMyKSkpCnVpbnQzMl90IF9fYXJtX3ZtYXh2cV9wKHVpbnQzMl90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXh2cV9wX3U4KSkpCnVpbnQ4X3QgX19hcm1fdm1heHZxX3BfdTgodWludDhfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4dnFfcF91OCkpKQp1aW50OF90IF9fYXJtX3ZtYXh2cV9wKHVpbnQ4X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heHZxX3MxNikpKQppbnQxNl90IF9fYXJtX3ZtYXh2cV9zMTYoaW50MTZfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4dnFfczE2KSkpCmludDE2X3QgX19hcm1fdm1heHZxKGludDE2X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heHZxX3MzMikpKQppbnQzMl90IF9fYXJtX3ZtYXh2cV9zMzIoaW50MzJfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4dnFfczMyKSkpCmludDMyX3QgX19hcm1fdm1heHZxKGludDMyX3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heHZxX3M4KSkpCmludDhfdCBfX2FybV92bWF4dnFfczgoaW50OF90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXh2cV9zOCkpKQppbnQ4X3QgX19hcm1fdm1heHZxKGludDhfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4dnFfdTE2KSkpCnVpbnQxNl90IF9fYXJtX3ZtYXh2cV91MTYodWludDE2X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXh2cV91MTYpKSkKdWludDE2X3QgX19hcm1fdm1heHZxKHVpbnQxNl90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4dnFfdTMyKSkpCnVpbnQzMl90IF9fYXJtX3ZtYXh2cV91MzIodWludDMyX3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXh2cV91MzIpKSkKdWludDMyX3QgX19hcm1fdm1heHZxKHVpbnQzMl90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4dnFfdTgpKSkKdWludDhfdCBfX2FybV92bWF4dnFfdTgodWludDhfdCwgdWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heHZxX3U4KSkpCnVpbnQ4X3QgX19hcm1fdm1heHZxKHVpbnQ4X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5hcV9tX3MxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZtaW5hcV9tX3MxNih1aW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbmFxX21fczE2KSkpCnVpbnQxNng4X3QgX19hcm1fdm1pbmFxX20odWludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5hcV9tX3MzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZtaW5hcV9tX3MzMih1aW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbmFxX21fczMyKSkpCnVpbnQzMng0X3QgX19hcm1fdm1pbmFxX20odWludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5hcV9tX3M4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdm1pbmFxX21fczgodWludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5hcV9tX3M4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdm1pbmFxX20odWludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5hcV9zMTYpKSkKdWludDE2eDhfdCBfX2FybV92bWluYXFfczE2KHVpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbmFxX3MxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZtaW5hcSh1aW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5hcV9zMzIpKSkKdWludDMyeDRfdCBfX2FybV92bWluYXFfczMyKHVpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbmFxX3MzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZtaW5hcSh1aW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5hcV9zOCkpKQp1aW50OHgxNl90IF9fYXJtX3ZtaW5hcV9zOCh1aW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5hcV9zOCkpKQp1aW50OHgxNl90IF9fYXJtX3ZtaW5hcSh1aW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5hdnFfcF9zMTYpKSkKdWludDE2X3QgX19hcm1fdm1pbmF2cV9wX3MxNih1aW50MTZfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5hdnFfcF9zMTYpKSkKdWludDE2X3QgX19hcm1fdm1pbmF2cV9wKHVpbnQxNl90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbmF2cV9wX3MzMikpKQp1aW50MzJfdCBfX2FybV92bWluYXZxX3BfczMyKHVpbnQzMl90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbmF2cV9wX3MzMikpKQp1aW50MzJfdCBfX2FybV92bWluYXZxX3AodWludDMyX3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWluYXZxX3BfczgpKSkKdWludDhfdCBfX2FybV92bWluYXZxX3BfczgodWludDhfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5hdnFfcF9zOCkpKQp1aW50OF90IF9fYXJtX3ZtaW5hdnFfcCh1aW50OF90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbmF2cV9zMTYpKSkKdWludDE2X3QgX19hcm1fdm1pbmF2cV9zMTYodWludDE2X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbmF2cV9zMTYpKSkKdWludDE2X3QgX19hcm1fdm1pbmF2cSh1aW50MTZfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWluYXZxX3MzMikpKQp1aW50MzJfdCBfX2FybV92bWluYXZxX3MzMih1aW50MzJfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWluYXZxX3MzMikpKQp1aW50MzJfdCBfX2FybV92bWluYXZxKHVpbnQzMl90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5hdnFfczgpKSkKdWludDhfdCBfX2FybV92bWluYXZxX3M4KHVpbnQ4X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbmF2cV9zOCkpKQp1aW50OF90IF9fYXJtX3ZtaW5hdnEodWludDhfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWlucV9tX3MxNikpKQppbnQxNng4X3QgX19hcm1fdm1pbnFfbV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWlucV9tX3MxNikpKQppbnQxNng4X3QgX19hcm1fdm1pbnFfbShpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5xX21fczMyKSkpCmludDMyeDRfdCBfX2FybV92bWlucV9tX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5xX21fczMyKSkpCmludDMyeDRfdCBfX2FybV92bWlucV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbnFfbV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdm1pbnFfbV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5xX21fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZtaW5xX20oaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWlucV9tX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZtaW5xX21fdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbnFfbV91MTYpKSkKdWludDE2eDhfdCBfX2FybV92bWlucV9tKHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbnFfbV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92bWlucV9tX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5xX21fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdm1pbnFfbSh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5xX21fdTgpKSkKdWludDh4MTZfdCBfX2FybV92bWlucV9tX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbnFfbV91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZtaW5xX20odWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWlucV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZtaW5xX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbnFfczE2KSkpCmludDE2eDhfdCBfX2FybV92bWlucShpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbnFfczMyKSkpCmludDMyeDRfdCBfX2FybV92bWlucV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5xX3MzMikpKQppbnQzMng0X3QgX19hcm1fdm1pbnEoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5xX3M4KSkpCmludDh4MTZfdCBfX2FybV92bWlucV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbnFfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZtaW5xKGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWlucV91MTYpKSkKdWludDE2eDhfdCBfX2FybV92bWlucV91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbnFfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdm1pbnEodWludDE2eDhfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbnFfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdm1pbnFfdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5xX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZtaW5xKHVpbnQzMng0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5xX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdm1pbnFfdTgodWludDh4MTZfdCwgdWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbnFfdTgpKSkKdWludDh4MTZfdCBfX2FybV92bWlucSh1aW50OHgxNl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWlucV94X3MxNikpKQppbnQxNng4X3QgX19hcm1fdm1pbnFfeF9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbnFfeF9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZtaW5xX3goaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbnFfeF9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZtaW5xX3hfczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5xX3hfczMyKSkpCmludDMyeDRfdCBfX2FybV92bWlucV94KGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5xX3hfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZtaW5xX3hfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbnFfeF9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdm1pbnFfeChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWlucV94X3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZtaW5xX3hfdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbnFfeF91MTYpKSkKdWludDE2eDhfdCBfX2FybV92bWlucV94KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbnFfeF91MzIpKSkKdWludDMyeDRfdCBfX2FybV92bWlucV94X3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5xX3hfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdm1pbnFfeCh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5xX3hfdTgpKSkKdWludDh4MTZfdCBfX2FybV92bWlucV94X3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbnFfeF91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZtaW5xX3godWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWludnFfcF9zMTYpKSkKaW50MTZfdCBfX2FybV92bWludnFfcF9zMTYoaW50MTZfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW52cV9wX3MxNikpKQppbnQxNl90IF9fYXJtX3ZtaW52cV9wKGludDE2X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWludnFfcF9zMzIpKSkKaW50MzJfdCBfX2FybV92bWludnFfcF9zMzIoaW50MzJfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW52cV9wX3MzMikpKQppbnQzMl90IF9fYXJtX3ZtaW52cV9wKGludDMyX3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWludnFfcF9zOCkpKQppbnQ4X3QgX19hcm1fdm1pbnZxX3BfczgoaW50OF90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbnZxX3BfczgpKSkKaW50OF90IF9fYXJtX3ZtaW52cV9wKGludDhfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW52cV9wX3UxNikpKQp1aW50MTZfdCBfX2FybV92bWludnFfcF91MTYodWludDE2X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbnZxX3BfdTE2KSkpCnVpbnQxNl90IF9fYXJtX3ZtaW52cV9wKHVpbnQxNl90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW52cV9wX3UzMikpKQp1aW50MzJfdCBfX2FybV92bWludnFfcF91MzIodWludDMyX3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbnZxX3BfdTMyKSkpCnVpbnQzMl90IF9fYXJtX3ZtaW52cV9wKHVpbnQzMl90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW52cV9wX3U4KSkpCnVpbnQ4X3QgX19hcm1fdm1pbnZxX3BfdTgodWludDhfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWludnFfcF91OCkpKQp1aW50OF90IF9fYXJtX3ZtaW52cV9wKHVpbnQ4X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbnZxX3MxNikpKQppbnQxNl90IF9fYXJtX3ZtaW52cV9zMTYoaW50MTZfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWludnFfczE2KSkpCmludDE2X3QgX19hcm1fdm1pbnZxKGludDE2X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbnZxX3MzMikpKQppbnQzMl90IF9fYXJtX3ZtaW52cV9zMzIoaW50MzJfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWludnFfczMyKSkpCmludDMyX3QgX19hcm1fdm1pbnZxKGludDMyX3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbnZxX3M4KSkpCmludDhfdCBfX2FybV92bWludnFfczgoaW50OF90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW52cV9zOCkpKQppbnQ4X3QgX19hcm1fdm1pbnZxKGludDhfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWludnFfdTE2KSkpCnVpbnQxNl90IF9fYXJtX3ZtaW52cV91MTYodWludDE2X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW52cV91MTYpKSkKdWludDE2X3QgX19hcm1fdm1pbnZxKHVpbnQxNl90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWludnFfdTMyKSkpCnVpbnQzMl90IF9fYXJtX3ZtaW52cV91MzIodWludDMyX3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW52cV91MzIpKSkKdWludDMyX3QgX19hcm1fdm1pbnZxKHVpbnQzMl90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWludnFfdTgpKSkKdWludDhfdCBfX2FybV92bWludnFfdTgodWludDhfdCwgdWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbnZxX3U4KSkpCnVpbnQ4X3QgX19hcm1fdm1pbnZxKHVpbnQ4X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFkYXZhcV9wX3MxNikpKQppbnQzMl90IF9fYXJtX3ZtbGFkYXZhcV9wX3MxNihpbnQzMl90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhZGF2YXFfcF9zMTYpKSkKaW50MzJfdCBfX2FybV92bWxhZGF2YXFfcChpbnQzMl90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhZGF2YXFfcF9zMzIpKSkKaW50MzJfdCBfX2FybV92bWxhZGF2YXFfcF9zMzIoaW50MzJfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdmFxX3BfczMyKSkpCmludDMyX3QgX19hcm1fdm1sYWRhdmFxX3AoaW50MzJfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdmFxX3BfczgpKSkKaW50MzJfdCBfX2FybV92bWxhZGF2YXFfcF9zOChpbnQzMl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhZGF2YXFfcF9zOCkpKQppbnQzMl90IF9fYXJtX3ZtbGFkYXZhcV9wKGludDMyX3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFkYXZhcV9wX3UxNikpKQp1aW50MzJfdCBfX2FybV92bWxhZGF2YXFfcF91MTYodWludDMyX3QsIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdmFxX3BfdTE2KSkpCnVpbnQzMl90IF9fYXJtX3ZtbGFkYXZhcV9wKHVpbnQzMl90LCB1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFkYXZhcV9wX3UzMikpKQp1aW50MzJfdCBfX2FybV92bWxhZGF2YXFfcF91MzIodWludDMyX3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdmFxX3BfdTMyKSkpCnVpbnQzMl90IF9fYXJtX3ZtbGFkYXZhcV9wKHVpbnQzMl90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFkYXZhcV9wX3U4KSkpCnVpbnQzMl90IF9fYXJtX3ZtbGFkYXZhcV9wX3U4KHVpbnQzMl90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFkYXZhcV9wX3U4KSkpCnVpbnQzMl90IF9fYXJtX3ZtbGFkYXZhcV9wKHVpbnQzMl90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFkYXZhcV9zMTYpKSkKaW50MzJfdCBfX2FybV92bWxhZGF2YXFfczE2KGludDMyX3QsIGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhZGF2YXFfczE2KSkpCmludDMyX3QgX19hcm1fdm1sYWRhdmFxKGludDMyX3QsIGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhZGF2YXFfczMyKSkpCmludDMyX3QgX19hcm1fdm1sYWRhdmFxX3MzMihpbnQzMl90LCBpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdmFxX3MzMikpKQppbnQzMl90IF9fYXJtX3ZtbGFkYXZhcShpbnQzMl90LCBpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdmFxX3M4KSkpCmludDMyX3QgX19hcm1fdm1sYWRhdmFxX3M4KGludDMyX3QsIGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhZGF2YXFfczgpKSkKaW50MzJfdCBfX2FybV92bWxhZGF2YXEoaW50MzJfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFkYXZhcV91MTYpKSkKdWludDMyX3QgX19hcm1fdm1sYWRhdmFxX3UxNih1aW50MzJfdCwgdWludDE2eDhfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdmFxX3UxNikpKQp1aW50MzJfdCBfX2FybV92bWxhZGF2YXEodWludDMyX3QsIHVpbnQxNng4X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFkYXZhcV91MzIpKSkKdWludDMyX3QgX19hcm1fdm1sYWRhdmFxX3UzMih1aW50MzJfdCwgdWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdmFxX3UzMikpKQp1aW50MzJfdCBfX2FybV92bWxhZGF2YXEodWludDMyX3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFkYXZhcV91OCkpKQp1aW50MzJfdCBfX2FybV92bWxhZGF2YXFfdTgodWludDMyX3QsIHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFkYXZhcV91OCkpKQp1aW50MzJfdCBfX2FybV92bWxhZGF2YXEodWludDMyX3QsIHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFkYXZheHFfcF9zMTYpKSkKaW50MzJfdCBfX2FybV92bWxhZGF2YXhxX3BfczE2KGludDMyX3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFkYXZheHFfcF9zMTYpKSkKaW50MzJfdCBfX2FybV92bWxhZGF2YXhxX3AoaW50MzJfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdmF4cV9wX3MzMikpKQppbnQzMl90IF9fYXJtX3ZtbGFkYXZheHFfcF9zMzIoaW50MzJfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdmF4cV9wX3MzMikpKQppbnQzMl90IF9fYXJtX3ZtbGFkYXZheHFfcChpbnQzMl90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhZGF2YXhxX3BfczgpKSkKaW50MzJfdCBfX2FybV92bWxhZGF2YXhxX3BfczgoaW50MzJfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdmF4cV9wX3M4KSkpCmludDMyX3QgX19hcm1fdm1sYWRhdmF4cV9wKGludDMyX3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFkYXZheHFfczE2KSkpCmludDMyX3QgX19hcm1fdm1sYWRhdmF4cV9zMTYoaW50MzJfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFkYXZheHFfczE2KSkpCmludDMyX3QgX19hcm1fdm1sYWRhdmF4cShpbnQzMl90LCBpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdmF4cV9zMzIpKSkKaW50MzJfdCBfX2FybV92bWxhZGF2YXhxX3MzMihpbnQzMl90LCBpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdmF4cV9zMzIpKSkKaW50MzJfdCBfX2FybV92bWxhZGF2YXhxKGludDMyX3QsIGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhZGF2YXhxX3M4KSkpCmludDMyX3QgX19hcm1fdm1sYWRhdmF4cV9zOChpbnQzMl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdmF4cV9zOCkpKQppbnQzMl90IF9fYXJtX3ZtbGFkYXZheHEoaW50MzJfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFkYXZxX3BfczE2KSkpCmludDMyX3QgX19hcm1fdm1sYWRhdnFfcF9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdnFfcF9zMTYpKSkKaW50MzJfdCBfX2FybV92bWxhZGF2cV9wKGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFkYXZxX3BfczMyKSkpCmludDMyX3QgX19hcm1fdm1sYWRhdnFfcF9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdnFfcF9zMzIpKSkKaW50MzJfdCBfX2FybV92bWxhZGF2cV9wKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFkYXZxX3BfczgpKSkKaW50MzJfdCBfX2FybV92bWxhZGF2cV9wX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFkYXZxX3BfczgpKSkKaW50MzJfdCBfX2FybV92bWxhZGF2cV9wKGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFkYXZxX3BfdTE2KSkpCnVpbnQzMl90IF9fYXJtX3ZtbGFkYXZxX3BfdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdnFfcF91MTYpKSkKdWludDMyX3QgX19hcm1fdm1sYWRhdnFfcCh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFkYXZxX3BfdTMyKSkpCnVpbnQzMl90IF9fYXJtX3ZtbGFkYXZxX3BfdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdnFfcF91MzIpKSkKdWludDMyX3QgX19hcm1fdm1sYWRhdnFfcCh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFkYXZxX3BfdTgpKSkKdWludDMyX3QgX19hcm1fdm1sYWRhdnFfcF91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFkYXZxX3BfdTgpKSkKdWludDMyX3QgX19hcm1fdm1sYWRhdnFfcCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFkYXZxX3MxNikpKQppbnQzMl90IF9fYXJtX3ZtbGFkYXZxX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdnFfczE2KSkpCmludDMyX3QgX19hcm1fdm1sYWRhdnEoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFkYXZxX3MzMikpKQppbnQzMl90IF9fYXJtX3ZtbGFkYXZxX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdnFfczMyKSkpCmludDMyX3QgX19hcm1fdm1sYWRhdnEoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFkYXZxX3M4KSkpCmludDMyX3QgX19hcm1fdm1sYWRhdnFfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFkYXZxX3M4KSkpCmludDMyX3QgX19hcm1fdm1sYWRhdnEoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFkYXZxX3UxNikpKQp1aW50MzJfdCBfX2FybV92bWxhZGF2cV91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdnFfdTE2KSkpCnVpbnQzMl90IF9fYXJtX3ZtbGFkYXZxKHVpbnQxNng4X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFkYXZxX3UzMikpKQp1aW50MzJfdCBfX2FybV92bWxhZGF2cV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdnFfdTMyKSkpCnVpbnQzMl90IF9fYXJtX3ZtbGFkYXZxKHVpbnQzMng0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFkYXZxX3U4KSkpCnVpbnQzMl90IF9fYXJtX3ZtbGFkYXZxX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFkYXZxX3U4KSkpCnVpbnQzMl90IF9fYXJtX3ZtbGFkYXZxKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFkYXZ4cV9wX3MxNikpKQppbnQzMl90IF9fYXJtX3ZtbGFkYXZ4cV9wX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhZGF2eHFfcF9zMTYpKSkKaW50MzJfdCBfX2FybV92bWxhZGF2eHFfcChpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhZGF2eHFfcF9zMzIpKSkKaW50MzJfdCBfX2FybV92bWxhZGF2eHFfcF9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdnhxX3BfczMyKSkpCmludDMyX3QgX19hcm1fdm1sYWRhdnhxX3AoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdnhxX3BfczgpKSkKaW50MzJfdCBfX2FybV92bWxhZGF2eHFfcF9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhZGF2eHFfcF9zOCkpKQppbnQzMl90IF9fYXJtX3ZtbGFkYXZ4cV9wKGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFkYXZ4cV9zMTYpKSkKaW50MzJfdCBfX2FybV92bWxhZGF2eHFfczE2KGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhZGF2eHFfczE2KSkpCmludDMyX3QgX19hcm1fdm1sYWRhdnhxKGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhZGF2eHFfczMyKSkpCmludDMyX3QgX19hcm1fdm1sYWRhdnhxX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdnhxX3MzMikpKQppbnQzMl90IF9fYXJtX3ZtbGFkYXZ4cShpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdnhxX3M4KSkpCmludDMyX3QgX19hcm1fdm1sYWRhdnhxX3M4KGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhZGF2eHFfczgpKSkKaW50MzJfdCBfX2FybV92bWxhZGF2eHEoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFsZGF2YXFfcF9zMTYpKSkKaW50NjRfdCBfX2FybV92bWxhbGRhdmFxX3BfczE2KGludDY0X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFsZGF2YXFfcF9zMTYpKSkKaW50NjRfdCBfX2FybV92bWxhbGRhdmFxX3AoaW50NjRfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWxkYXZhcV9wX3MzMikpKQppbnQ2NF90IF9fYXJtX3ZtbGFsZGF2YXFfcF9zMzIoaW50NjRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWxkYXZhcV9wX3MzMikpKQppbnQ2NF90IF9fYXJtX3ZtbGFsZGF2YXFfcChpbnQ2NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhbGRhdmFxX3BfdTE2KSkpCnVpbnQ2NF90IF9fYXJtX3ZtbGFsZGF2YXFfcF91MTYodWludDY0X3QsIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWxkYXZhcV9wX3UxNikpKQp1aW50NjRfdCBfX2FybV92bWxhbGRhdmFxX3AodWludDY0X3QsIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWxkYXZhcV9wX3UzMikpKQp1aW50NjRfdCBfX2FybV92bWxhbGRhdmFxX3BfdTMyKHVpbnQ2NF90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFsZGF2YXFfcF91MzIpKSkKdWludDY0X3QgX19hcm1fdm1sYWxkYXZhcV9wKHVpbnQ2NF90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFsZGF2YXFfczE2KSkpCmludDY0X3QgX19hcm1fdm1sYWxkYXZhcV9zMTYoaW50NjRfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFsZGF2YXFfczE2KSkpCmludDY0X3QgX19hcm1fdm1sYWxkYXZhcShpbnQ2NF90LCBpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWxkYXZhcV9zMzIpKSkKaW50NjRfdCBfX2FybV92bWxhbGRhdmFxX3MzMihpbnQ2NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWxkYXZhcV9zMzIpKSkKaW50NjRfdCBfX2FybV92bWxhbGRhdmFxKGludDY0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhbGRhdmFxX3UxNikpKQp1aW50NjRfdCBfX2FybV92bWxhbGRhdmFxX3UxNih1aW50NjRfdCwgdWludDE2eDhfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWxkYXZhcV91MTYpKSkKdWludDY0X3QgX19hcm1fdm1sYWxkYXZhcSh1aW50NjRfdCwgdWludDE2eDhfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWxkYXZhcV91MzIpKSkKdWludDY0X3QgX19hcm1fdm1sYWxkYXZhcV91MzIodWludDY0X3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFsZGF2YXFfdTMyKSkpCnVpbnQ2NF90IF9fYXJtX3ZtbGFsZGF2YXEodWludDY0X3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFsZGF2YXhxX3BfczE2KSkpCmludDY0X3QgX19hcm1fdm1sYWxkYXZheHFfcF9zMTYoaW50NjRfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWxkYXZheHFfcF9zMTYpKSkKaW50NjRfdCBfX2FybV92bWxhbGRhdmF4cV9wKGludDY0X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFsZGF2YXhxX3BfczMyKSkpCmludDY0X3QgX19hcm1fdm1sYWxkYXZheHFfcF9zMzIoaW50NjRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWxkYXZheHFfcF9zMzIpKSkKaW50NjRfdCBfX2FybV92bWxhbGRhdmF4cV9wKGludDY0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFsZGF2YXhxX3MxNikpKQppbnQ2NF90IF9fYXJtX3ZtbGFsZGF2YXhxX3MxNihpbnQ2NF90LCBpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWxkYXZheHFfczE2KSkpCmludDY0X3QgX19hcm1fdm1sYWxkYXZheHEoaW50NjRfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFsZGF2YXhxX3MzMikpKQppbnQ2NF90IF9fYXJtX3ZtbGFsZGF2YXhxX3MzMihpbnQ2NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWxkYXZheHFfczMyKSkpCmludDY0X3QgX19hcm1fdm1sYWxkYXZheHEoaW50NjRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFsZGF2cV9wX3MxNikpKQppbnQ2NF90IF9fYXJtX3ZtbGFsZGF2cV9wX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhbGRhdnFfcF9zMTYpKSkKaW50NjRfdCBfX2FybV92bWxhbGRhdnFfcChpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhbGRhdnFfcF9zMzIpKSkKaW50NjRfdCBfX2FybV92bWxhbGRhdnFfcF9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWxkYXZxX3BfczMyKSkpCmludDY0X3QgX19hcm1fdm1sYWxkYXZxX3AoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWxkYXZxX3BfdTE2KSkpCnVpbnQ2NF90IF9fYXJtX3ZtbGFsZGF2cV9wX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFsZGF2cV9wX3UxNikpKQp1aW50NjRfdCBfX2FybV92bWxhbGRhdnFfcCh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFsZGF2cV9wX3UzMikpKQp1aW50NjRfdCBfX2FybV92bWxhbGRhdnFfcF91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhbGRhdnFfcF91MzIpKSkKdWludDY0X3QgX19hcm1fdm1sYWxkYXZxX3AodWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhbGRhdnFfczE2KSkpCmludDY0X3QgX19hcm1fdm1sYWxkYXZxX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWxkYXZxX3MxNikpKQppbnQ2NF90IF9fYXJtX3ZtbGFsZGF2cShpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWxkYXZxX3MzMikpKQppbnQ2NF90IF9fYXJtX3ZtbGFsZGF2cV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFsZGF2cV9zMzIpKSkKaW50NjRfdCBfX2FybV92bWxhbGRhdnEoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFsZGF2cV91MTYpKSkKdWludDY0X3QgX19hcm1fdm1sYWxkYXZxX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhbGRhdnFfdTE2KSkpCnVpbnQ2NF90IF9fYXJtX3ZtbGFsZGF2cSh1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhbGRhdnFfdTMyKSkpCnVpbnQ2NF90IF9fYXJtX3ZtbGFsZGF2cV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWxkYXZxX3UzMikpKQp1aW50NjRfdCBfX2FybV92bWxhbGRhdnEodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWxkYXZ4cV9wX3MxNikpKQppbnQ2NF90IF9fYXJtX3ZtbGFsZGF2eHFfcF9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWxkYXZ4cV9wX3MxNikpKQppbnQ2NF90IF9fYXJtX3ZtbGFsZGF2eHFfcChpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhbGRhdnhxX3BfczMyKSkpCmludDY0X3QgX19hcm1fdm1sYWxkYXZ4cV9wX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhbGRhdnhxX3BfczMyKSkpCmludDY0X3QgX19hcm1fdm1sYWxkYXZ4cV9wKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFsZGF2eHFfczE2KSkpCmludDY0X3QgX19hcm1fdm1sYWxkYXZ4cV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFsZGF2eHFfczE2KSkpCmludDY0X3QgX19hcm1fdm1sYWxkYXZ4cShpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWxkYXZ4cV9zMzIpKSkKaW50NjRfdCBfX2FybV92bWxhbGRhdnhxX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWxkYXZ4cV9zMzIpKSkKaW50NjRfdCBfX2FybV92bWxhbGRhdnhxKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhcV9tX25fczE2KSkpCmludDE2eDhfdCBfX2FybV92bWxhcV9tX25fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFxX21fbl9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZtbGFxX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYXFfbV9uX3MzMikpKQppbnQzMng0X3QgX19hcm1fdm1sYXFfbV9uX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhcV9tX25fczMyKSkpCmludDMyeDRfdCBfX2FybV92bWxhcV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFxX21fbl9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdm1sYXFfbV9uX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYXFfbV9uX3M4KSkpCmludDh4MTZfdCBfX2FybV92bWxhcV9tKGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYXFfbV9uX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZtbGFxX21fbl91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgdWludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYXFfbV9uX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZtbGFxX20odWludDE2eDhfdCwgdWludDE2eDhfdCwgdWludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYXFfbV9uX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZtbGFxX21fbl91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgdWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYXFfbV9uX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZtbGFxX20odWludDMyeDRfdCwgdWludDMyeDRfdCwgdWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYXFfbV9uX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdm1sYXFfbV9uX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYXFfbV9uX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdm1sYXFfbSh1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFxX25fczE2KSkpCmludDE2eDhfdCBfX2FybV92bWxhcV9uX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYXFfbl9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZtbGFxKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhcV9uX3MzMikpKQppbnQzMng0X3QgX19hcm1fdm1sYXFfbl9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFxX25fczMyKSkpCmludDMyeDRfdCBfX2FybV92bWxhcShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYXFfbl9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdm1sYXFfbl9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhcV9uX3M4KSkpCmludDh4MTZfdCBfX2FybV92bWxhcShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhcV9uX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZtbGFxX25fdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhcV9uX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZtbGFxKHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhcV9uX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZtbGFxX25fdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhcV9uX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZtbGFxKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhcV9uX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdm1sYXFfbl91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhcV9uX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdm1sYXEodWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYXNxX21fbl9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZtbGFzcV9tX25fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFzcV9tX25fczE2KSkpCmludDE2eDhfdCBfX2FybV92bWxhc3FfbShpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhc3FfbV9uX3MzMikpKQppbnQzMng0X3QgX19hcm1fdm1sYXNxX21fbl9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYXNxX21fbl9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZtbGFzcV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFzcV9tX25fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZtbGFzcV9tX25fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhc3FfbV9uX3M4KSkpCmludDh4MTZfdCBfX2FybV92bWxhc3FfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFzcV9tX25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdm1sYXNxX21fbl91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgdWludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYXNxX21fbl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92bWxhc3FfbSh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCB1aW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhc3FfbV9uX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZtbGFzcV9tX25fdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFzcV9tX25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdm1sYXNxX20odWludDMyeDRfdCwgdWludDMyeDRfdCwgdWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYXNxX21fbl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZtbGFzcV9tX25fdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhc3FfbV9uX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdm1sYXNxX20odWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhc3Ffbl9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZtbGFzcV9uX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYXNxX25fczE2KSkpCmludDE2eDhfdCBfX2FybV92bWxhc3EoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFzcV9uX3MzMikpKQppbnQzMng0X3QgX19hcm1fdm1sYXNxX25fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhc3Ffbl9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZtbGFzcShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYXNxX25fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZtbGFzcV9uX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFzcV9uX3M4KSkpCmludDh4MTZfdCBfX2FybV92bWxhc3EoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYXNxX25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdm1sYXNxX25fdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhc3Ffbl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92bWxhc3EodWludDE2eDhfdCwgdWludDE2eDhfdCwgdWludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFzcV9uX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZtbGFzcV9uX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYXNxX25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdm1sYXNxKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhc3Ffbl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZtbGFzcV9uX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFzcV9uX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdm1sYXNxKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNkYXZhcV9wX3MxNikpKQppbnQzMl90IF9fYXJtX3ZtbHNkYXZhcV9wX3MxNihpbnQzMl90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzZGF2YXFfcF9zMTYpKSkKaW50MzJfdCBfX2FybV92bWxzZGF2YXFfcChpbnQzMl90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzZGF2YXFfcF9zMzIpKSkKaW50MzJfdCBfX2FybV92bWxzZGF2YXFfcF9zMzIoaW50MzJfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2RhdmFxX3BfczMyKSkpCmludDMyX3QgX19hcm1fdm1sc2RhdmFxX3AoaW50MzJfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2RhdmFxX3BfczgpKSkKaW50MzJfdCBfX2FybV92bWxzZGF2YXFfcF9zOChpbnQzMl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzZGF2YXFfcF9zOCkpKQppbnQzMl90IF9fYXJtX3ZtbHNkYXZhcV9wKGludDMyX3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNkYXZhcV9zMTYpKSkKaW50MzJfdCBfX2FybV92bWxzZGF2YXFfczE2KGludDMyX3QsIGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzZGF2YXFfczE2KSkpCmludDMyX3QgX19hcm1fdm1sc2RhdmFxKGludDMyX3QsIGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzZGF2YXFfczMyKSkpCmludDMyX3QgX19hcm1fdm1sc2RhdmFxX3MzMihpbnQzMl90LCBpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2RhdmFxX3MzMikpKQppbnQzMl90IF9fYXJtX3ZtbHNkYXZhcShpbnQzMl90LCBpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2RhdmFxX3M4KSkpCmludDMyX3QgX19hcm1fdm1sc2RhdmFxX3M4KGludDMyX3QsIGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzZGF2YXFfczgpKSkKaW50MzJfdCBfX2FybV92bWxzZGF2YXEoaW50MzJfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNkYXZheHFfcF9zMTYpKSkKaW50MzJfdCBfX2FybV92bWxzZGF2YXhxX3BfczE2KGludDMyX3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNkYXZheHFfcF9zMTYpKSkKaW50MzJfdCBfX2FybV92bWxzZGF2YXhxX3AoaW50MzJfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2RhdmF4cV9wX3MzMikpKQppbnQzMl90IF9fYXJtX3ZtbHNkYXZheHFfcF9zMzIoaW50MzJfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2RhdmF4cV9wX3MzMikpKQppbnQzMl90IF9fYXJtX3ZtbHNkYXZheHFfcChpbnQzMl90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzZGF2YXhxX3BfczgpKSkKaW50MzJfdCBfX2FybV92bWxzZGF2YXhxX3BfczgoaW50MzJfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2RhdmF4cV9wX3M4KSkpCmludDMyX3QgX19hcm1fdm1sc2RhdmF4cV9wKGludDMyX3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNkYXZheHFfczE2KSkpCmludDMyX3QgX19hcm1fdm1sc2RhdmF4cV9zMTYoaW50MzJfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNkYXZheHFfczE2KSkpCmludDMyX3QgX19hcm1fdm1sc2RhdmF4cShpbnQzMl90LCBpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2RhdmF4cV9zMzIpKSkKaW50MzJfdCBfX2FybV92bWxzZGF2YXhxX3MzMihpbnQzMl90LCBpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2RhdmF4cV9zMzIpKSkKaW50MzJfdCBfX2FybV92bWxzZGF2YXhxKGludDMyX3QsIGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzZGF2YXhxX3M4KSkpCmludDMyX3QgX19hcm1fdm1sc2RhdmF4cV9zOChpbnQzMl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2RhdmF4cV9zOCkpKQppbnQzMl90IF9fYXJtX3ZtbHNkYXZheHEoaW50MzJfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNkYXZxX3BfczE2KSkpCmludDMyX3QgX19hcm1fdm1sc2RhdnFfcF9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2RhdnFfcF9zMTYpKSkKaW50MzJfdCBfX2FybV92bWxzZGF2cV9wKGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNkYXZxX3BfczMyKSkpCmludDMyX3QgX19hcm1fdm1sc2RhdnFfcF9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2RhdnFfcF9zMzIpKSkKaW50MzJfdCBfX2FybV92bWxzZGF2cV9wKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNkYXZxX3BfczgpKSkKaW50MzJfdCBfX2FybV92bWxzZGF2cV9wX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNkYXZxX3BfczgpKSkKaW50MzJfdCBfX2FybV92bWxzZGF2cV9wKGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNkYXZxX3MxNikpKQppbnQzMl90IF9fYXJtX3ZtbHNkYXZxX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2RhdnFfczE2KSkpCmludDMyX3QgX19hcm1fdm1sc2RhdnEoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNkYXZxX3MzMikpKQppbnQzMl90IF9fYXJtX3ZtbHNkYXZxX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2RhdnFfczMyKSkpCmludDMyX3QgX19hcm1fdm1sc2RhdnEoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNkYXZxX3M4KSkpCmludDMyX3QgX19hcm1fdm1sc2RhdnFfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNkYXZxX3M4KSkpCmludDMyX3QgX19hcm1fdm1sc2RhdnEoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNkYXZ4cV9wX3MxNikpKQppbnQzMl90IF9fYXJtX3ZtbHNkYXZ4cV9wX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzZGF2eHFfcF9zMTYpKSkKaW50MzJfdCBfX2FybV92bWxzZGF2eHFfcChpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzZGF2eHFfcF9zMzIpKSkKaW50MzJfdCBfX2FybV92bWxzZGF2eHFfcF9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2RhdnhxX3BfczMyKSkpCmludDMyX3QgX19hcm1fdm1sc2RhdnhxX3AoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2RhdnhxX3BfczgpKSkKaW50MzJfdCBfX2FybV92bWxzZGF2eHFfcF9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzZGF2eHFfcF9zOCkpKQppbnQzMl90IF9fYXJtX3ZtbHNkYXZ4cV9wKGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNkYXZ4cV9zMTYpKSkKaW50MzJfdCBfX2FybV92bWxzZGF2eHFfczE2KGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzZGF2eHFfczE2KSkpCmludDMyX3QgX19hcm1fdm1sc2RhdnhxKGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzZGF2eHFfczMyKSkpCmludDMyX3QgX19hcm1fdm1sc2RhdnhxX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2RhdnhxX3MzMikpKQppbnQzMl90IF9fYXJtX3ZtbHNkYXZ4cShpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2RhdnhxX3M4KSkpCmludDMyX3QgX19hcm1fdm1sc2RhdnhxX3M4KGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzZGF2eHFfczgpKSkKaW50MzJfdCBfX2FybV92bWxzZGF2eHEoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNsZGF2YXFfcF9zMTYpKSkKaW50NjRfdCBfX2FybV92bWxzbGRhdmFxX3BfczE2KGludDY0X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNsZGF2YXFfcF9zMTYpKSkKaW50NjRfdCBfX2FybV92bWxzbGRhdmFxX3AoaW50NjRfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2xkYXZhcV9wX3MzMikpKQppbnQ2NF90IF9fYXJtX3ZtbHNsZGF2YXFfcF9zMzIoaW50NjRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2xkYXZhcV9wX3MzMikpKQppbnQ2NF90IF9fYXJtX3ZtbHNsZGF2YXFfcChpbnQ2NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzbGRhdmFxX3MxNikpKQppbnQ2NF90IF9fYXJtX3ZtbHNsZGF2YXFfczE2KGludDY0X3QsIGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzbGRhdmFxX3MxNikpKQppbnQ2NF90IF9fYXJtX3ZtbHNsZGF2YXEoaW50NjRfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNsZGF2YXFfczMyKSkpCmludDY0X3QgX19hcm1fdm1sc2xkYXZhcV9zMzIoaW50NjRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNsZGF2YXFfczMyKSkpCmludDY0X3QgX19hcm1fdm1sc2xkYXZhcShpbnQ2NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2xkYXZheHFfcF9zMTYpKSkKaW50NjRfdCBfX2FybV92bWxzbGRhdmF4cV9wX3MxNihpbnQ2NF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzbGRhdmF4cV9wX3MxNikpKQppbnQ2NF90IF9fYXJtX3ZtbHNsZGF2YXhxX3AoaW50NjRfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2xkYXZheHFfcF9zMzIpKSkKaW50NjRfdCBfX2FybV92bWxzbGRhdmF4cV9wX3MzMihpbnQ2NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzbGRhdmF4cV9wX3MzMikpKQppbnQ2NF90IF9fYXJtX3ZtbHNsZGF2YXhxX3AoaW50NjRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2xkYXZheHFfczE2KSkpCmludDY0X3QgX19hcm1fdm1sc2xkYXZheHFfczE2KGludDY0X3QsIGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzbGRhdmF4cV9zMTYpKSkKaW50NjRfdCBfX2FybV92bWxzbGRhdmF4cShpbnQ2NF90LCBpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2xkYXZheHFfczMyKSkpCmludDY0X3QgX19hcm1fdm1sc2xkYXZheHFfczMyKGludDY0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzbGRhdmF4cV9zMzIpKSkKaW50NjRfdCBfX2FybV92bWxzbGRhdmF4cShpbnQ2NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2xkYXZxX3BfczE2KSkpCmludDY0X3QgX19hcm1fdm1sc2xkYXZxX3BfczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNsZGF2cV9wX3MxNikpKQppbnQ2NF90IF9fYXJtX3ZtbHNsZGF2cV9wKGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNsZGF2cV9wX3MzMikpKQppbnQ2NF90IF9fYXJtX3ZtbHNsZGF2cV9wX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzbGRhdnFfcF9zMzIpKSkKaW50NjRfdCBfX2FybV92bWxzbGRhdnFfcChpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzbGRhdnFfczE2KSkpCmludDY0X3QgX19hcm1fdm1sc2xkYXZxX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2xkYXZxX3MxNikpKQppbnQ2NF90IF9fYXJtX3ZtbHNsZGF2cShpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2xkYXZxX3MzMikpKQppbnQ2NF90IF9fYXJtX3ZtbHNsZGF2cV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNsZGF2cV9zMzIpKSkKaW50NjRfdCBfX2FybV92bWxzbGRhdnEoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNsZGF2eHFfcF9zMTYpKSkKaW50NjRfdCBfX2FybV92bWxzbGRhdnhxX3BfczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNsZGF2eHFfcF9zMTYpKSkKaW50NjRfdCBfX2FybV92bWxzbGRhdnhxX3AoaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2xkYXZ4cV9wX3MzMikpKQppbnQ2NF90IF9fYXJtX3ZtbHNsZGF2eHFfcF9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2xkYXZ4cV9wX3MzMikpKQppbnQ2NF90IF9fYXJtX3ZtbHNsZGF2eHFfcChpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzbGRhdnhxX3MxNikpKQppbnQ2NF90IF9fYXJtX3ZtbHNsZGF2eHFfczE2KGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzbGRhdnhxX3MxNikpKQppbnQ2NF90IF9fYXJtX3ZtbHNsZGF2eHEoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNsZGF2eHFfczMyKSkpCmludDY0X3QgX19hcm1fdm1sc2xkYXZ4cV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNsZGF2eHFfczMyKSkpCmludDY0X3QgX19hcm1fdm1sc2xkYXZ4cShpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdmxicV9tX3MxNikpKQppbnQzMng0X3QgX19hcm1fdm1vdmxicV9tX3MxNihpbnQzMng0X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bGJxX21fczE2KSkpCmludDMyeDRfdCBfX2FybV92bW92bGJxX20oaW50MzJ4NF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdmxicV9tX3M4KSkpCmludDE2eDhfdCBfX2FybV92bW92bGJxX21fczgoaW50MTZ4OF90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdmxicV9tX3M4KSkpCmludDE2eDhfdCBfX2FybV92bW92bGJxX20oaW50MTZ4OF90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdmxicV9tX3UxNikpKQp1aW50MzJ4NF90IF9fYXJtX3Ztb3ZsYnFfbV91MTYodWludDMyeDRfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bGJxX21fdTE2KSkpCnVpbnQzMng0X3QgX19hcm1fdm1vdmxicV9tKHVpbnQzMng0X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdmxicV9tX3U4KSkpCnVpbnQxNng4X3QgX19hcm1fdm1vdmxicV9tX3U4KHVpbnQxNng4X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdmxicV9tX3U4KSkpCnVpbnQxNng4X3QgX19hcm1fdm1vdmxicV9tKHVpbnQxNng4X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdmxicV9zMTYpKSkKaW50MzJ4NF90IF9fYXJtX3Ztb3ZsYnFfczE2KGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdmxicV9zMTYpKSkKaW50MzJ4NF90IF9fYXJtX3Ztb3ZsYnEoaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bGJxX3M4KSkpCmludDE2eDhfdCBfX2FybV92bW92bGJxX3M4KGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdmxicV9zOCkpKQppbnQxNng4X3QgX19hcm1fdm1vdmxicShpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztb3ZsYnFfdTE2KSkpCnVpbnQzMng0X3QgX19hcm1fdm1vdmxicV91MTYodWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdmxicV91MTYpKSkKdWludDMyeDRfdCBfX2FybV92bW92bGJxKHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztb3ZsYnFfdTgpKSkKdWludDE2eDhfdCBfX2FybV92bW92bGJxX3U4KHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztb3ZsYnFfdTgpKSkKdWludDE2eDhfdCBfX2FybV92bW92bGJxKHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztb3ZsYnFfeF9zMTYpKSkKaW50MzJ4NF90IF9fYXJtX3Ztb3ZsYnFfeF9zMTYoaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztb3ZsYnFfeF9zMTYpKSkKaW50MzJ4NF90IF9fYXJtX3Ztb3ZsYnFfeChpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdmxicV94X3M4KSkpCmludDE2eDhfdCBfX2FybV92bW92bGJxX3hfczgoaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztb3ZsYnFfeF9zOCkpKQppbnQxNng4X3QgX19hcm1fdm1vdmxicV94KGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bGJxX3hfdTE2KSkpCnVpbnQzMng0X3QgX19hcm1fdm1vdmxicV94X3UxNih1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztb3ZsYnFfeF91MTYpKSkKdWludDMyeDRfdCBfX2FybV92bW92bGJxX3godWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bGJxX3hfdTgpKSkKdWludDE2eDhfdCBfX2FybV92bW92bGJxX3hfdTgodWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bGJxX3hfdTgpKSkKdWludDE2eDhfdCBfX2FybV92bW92bGJxX3godWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bHRxX21fczE2KSkpCmludDMyeDRfdCBfX2FybV92bW92bHRxX21fczE2KGludDMyeDRfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztb3ZsdHFfbV9zMTYpKSkKaW50MzJ4NF90IF9fYXJtX3Ztb3ZsdHFfbShpbnQzMng0X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bHRxX21fczgpKSkKaW50MTZ4OF90IF9fYXJtX3Ztb3ZsdHFfbV9zOChpbnQxNng4X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bHRxX21fczgpKSkKaW50MTZ4OF90IF9fYXJtX3Ztb3ZsdHFfbShpbnQxNng4X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bHRxX21fdTE2KSkpCnVpbnQzMng0X3QgX19hcm1fdm1vdmx0cV9tX3UxNih1aW50MzJ4NF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztb3ZsdHFfbV91MTYpKSkKdWludDMyeDRfdCBfX2FybV92bW92bHRxX20odWludDMyeDRfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bHRxX21fdTgpKSkKdWludDE2eDhfdCBfX2FybV92bW92bHRxX21fdTgodWludDE2eDhfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bHRxX21fdTgpKSkKdWludDE2eDhfdCBfX2FybV92bW92bHRxX20odWludDE2eDhfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bHRxX3MxNikpKQppbnQzMng0X3QgX19hcm1fdm1vdmx0cV9zMTYoaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bHRxX3MxNikpKQppbnQzMng0X3QgX19hcm1fdm1vdmx0cShpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztb3ZsdHFfczgpKSkKaW50MTZ4OF90IF9fYXJtX3Ztb3ZsdHFfczgoaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bHRxX3M4KSkpCmludDE2eDhfdCBfX2FybV92bW92bHRxKGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdmx0cV91MTYpKSkKdWludDMyeDRfdCBfX2FybV92bW92bHRxX3UxNih1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bHRxX3UxNikpKQp1aW50MzJ4NF90IF9fYXJtX3Ztb3ZsdHEodWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdmx0cV91OCkpKQp1aW50MTZ4OF90IF9fYXJtX3Ztb3ZsdHFfdTgodWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdmx0cV91OCkpKQp1aW50MTZ4OF90IF9fYXJtX3Ztb3ZsdHEodWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdmx0cV94X3MxNikpKQppbnQzMng0X3QgX19hcm1fdm1vdmx0cV94X3MxNihpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdmx0cV94X3MxNikpKQppbnQzMng0X3QgX19hcm1fdm1vdmx0cV94KGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bHRxX3hfczgpKSkKaW50MTZ4OF90IF9fYXJtX3Ztb3ZsdHFfeF9zOChpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdmx0cV94X3M4KSkpCmludDE2eDhfdCBfX2FybV92bW92bHRxX3goaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztb3ZsdHFfeF91MTYpKSkKdWludDMyeDRfdCBfX2FybV92bW92bHRxX3hfdTE2KHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdmx0cV94X3UxNikpKQp1aW50MzJ4NF90IF9fYXJtX3Ztb3ZsdHFfeCh1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztb3ZsdHFfeF91OCkpKQp1aW50MTZ4OF90IF9fYXJtX3Ztb3ZsdHFfeF91OCh1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztb3ZsdHFfeF91OCkpKQp1aW50MTZ4OF90IF9fYXJtX3Ztb3ZsdHFfeCh1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztb3ZuYnFfbV9zMTYpKSkKaW50OHgxNl90IF9fYXJtX3Ztb3ZuYnFfbV9zMTYoaW50OHgxNl90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdm5icV9tX3MxNikpKQppbnQ4eDE2X3QgX19hcm1fdm1vdm5icV9tKGludDh4MTZfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztb3ZuYnFfbV9zMzIpKSkKaW50MTZ4OF90IF9fYXJtX3Ztb3ZuYnFfbV9zMzIoaW50MTZ4OF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdm5icV9tX3MzMikpKQppbnQxNng4X3QgX19hcm1fdm1vdm5icV9tKGludDE2eDhfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztb3ZuYnFfbV91MTYpKSkKdWludDh4MTZfdCBfX2FybV92bW92bmJxX21fdTE2KHVpbnQ4eDE2X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdm5icV9tX3UxNikpKQp1aW50OHgxNl90IF9fYXJtX3Ztb3ZuYnFfbSh1aW50OHgxNl90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztb3ZuYnFfbV91MzIpKSkKdWludDE2eDhfdCBfX2FybV92bW92bmJxX21fdTMyKHVpbnQxNng4X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdm5icV9tX3UzMikpKQp1aW50MTZ4OF90IF9fYXJtX3Ztb3ZuYnFfbSh1aW50MTZ4OF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztb3ZuYnFfczE2KSkpCmludDh4MTZfdCBfX2FybV92bW92bmJxX3MxNihpbnQ4eDE2X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdm5icV9zMTYpKSkKaW50OHgxNl90IF9fYXJtX3Ztb3ZuYnEoaW50OHgxNl90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztb3ZuYnFfczMyKSkpCmludDE2eDhfdCBfX2FybV92bW92bmJxX3MzMihpbnQxNng4X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdm5icV9zMzIpKSkKaW50MTZ4OF90IF9fYXJtX3Ztb3ZuYnEoaW50MTZ4OF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztb3ZuYnFfdTE2KSkpCnVpbnQ4eDE2X3QgX19hcm1fdm1vdm5icV91MTYodWludDh4MTZfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdm5icV91MTYpKSkKdWludDh4MTZfdCBfX2FybV92bW92bmJxKHVpbnQ4eDE2X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztb3ZuYnFfdTMyKSkpCnVpbnQxNng4X3QgX19hcm1fdm1vdm5icV91MzIodWludDE2eDhfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdm5icV91MzIpKSkKdWludDE2eDhfdCBfX2FybV92bW92bmJxKHVpbnQxNng4X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztb3ZudHFfbV9zMTYpKSkKaW50OHgxNl90IF9fYXJtX3Ztb3ZudHFfbV9zMTYoaW50OHgxNl90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdm50cV9tX3MxNikpKQppbnQ4eDE2X3QgX19hcm1fdm1vdm50cV9tKGludDh4MTZfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztb3ZudHFfbV9zMzIpKSkKaW50MTZ4OF90IF9fYXJtX3Ztb3ZudHFfbV9zMzIoaW50MTZ4OF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdm50cV9tX3MzMikpKQppbnQxNng4X3QgX19hcm1fdm1vdm50cV9tKGludDE2eDhfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztb3ZudHFfbV91MTYpKSkKdWludDh4MTZfdCBfX2FybV92bW92bnRxX21fdTE2KHVpbnQ4eDE2X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdm50cV9tX3UxNikpKQp1aW50OHgxNl90IF9fYXJtX3Ztb3ZudHFfbSh1aW50OHgxNl90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztb3ZudHFfbV91MzIpKSkKdWludDE2eDhfdCBfX2FybV92bW92bnRxX21fdTMyKHVpbnQxNng4X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdm50cV9tX3UzMikpKQp1aW50MTZ4OF90IF9fYXJtX3Ztb3ZudHFfbSh1aW50MTZ4OF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztb3ZudHFfczE2KSkpCmludDh4MTZfdCBfX2FybV92bW92bnRxX3MxNihpbnQ4eDE2X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdm50cV9zMTYpKSkKaW50OHgxNl90IF9fYXJtX3Ztb3ZudHEoaW50OHgxNl90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztb3ZudHFfczMyKSkpCmludDE2eDhfdCBfX2FybV92bW92bnRxX3MzMihpbnQxNng4X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdm50cV9zMzIpKSkKaW50MTZ4OF90IF9fYXJtX3Ztb3ZudHEoaW50MTZ4OF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztb3ZudHFfdTE2KSkpCnVpbnQ4eDE2X3QgX19hcm1fdm1vdm50cV91MTYodWludDh4MTZfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdm50cV91MTYpKSkKdWludDh4MTZfdCBfX2FybV92bW92bnRxKHVpbnQ4eDE2X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztb3ZudHFfdTMyKSkpCnVpbnQxNng4X3QgX19hcm1fdm1vdm50cV91MzIodWludDE2eDhfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdm50cV91MzIpKSkKdWludDE2eDhfdCBfX2FybV92bW92bnRxKHVpbnQxNng4X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxocV9tX3MxNikpKQppbnQxNng4X3QgX19hcm1fdm11bGhxX21fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGhxX21fczE2KSkpCmludDE2eDhfdCBfX2FybV92bXVsaHFfbShpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxocV9tX3MzMikpKQppbnQzMng0X3QgX19hcm1fdm11bGhxX21fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGhxX21fczMyKSkpCmludDMyeDRfdCBfX2FybV92bXVsaHFfbShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxocV9tX3M4KSkpCmludDh4MTZfdCBfX2FybV92bXVsaHFfbV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxocV9tX3M4KSkpCmludDh4MTZfdCBfX2FybV92bXVsaHFfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxocV9tX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZtdWxocV9tX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxocV9tX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZtdWxocV9tKHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGhxX21fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdm11bGhxX21fdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGhxX21fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdm11bGhxX20odWludDMyeDRfdCwgdWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsaHFfbV91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZtdWxocV9tX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGhxX21fdTgpKSkKdWludDh4MTZfdCBfX2FybV92bXVsaHFfbSh1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxocV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZtdWxocV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxocV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZtdWxocShpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGhxX3MzMikpKQppbnQzMng0X3QgX19hcm1fdm11bGhxX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGhxX3MzMikpKQppbnQzMng0X3QgX19hcm1fdm11bGhxKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsaHFfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZtdWxocV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGhxX3M4KSkpCmludDh4MTZfdCBfX2FybV92bXVsaHEoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxocV91MTYpKSkKdWludDE2eDhfdCBfX2FybV92bXVsaHFfdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxocV91MTYpKSkKdWludDE2eDhfdCBfX2FybV92bXVsaHEodWludDE2eDhfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGhxX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZtdWxocV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGhxX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZtdWxocSh1aW50MzJ4NF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsaHFfdTgpKSkKdWludDh4MTZfdCBfX2FybV92bXVsaHFfdTgodWludDh4MTZfdCwgdWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGhxX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdm11bGhxKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxocV94X3MxNikpKQppbnQxNng4X3QgX19hcm1fdm11bGhxX3hfczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxocV94X3MxNikpKQppbnQxNng4X3QgX19hcm1fdm11bGhxX3goaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGhxX3hfczMyKSkpCmludDMyeDRfdCBfX2FybV92bXVsaHFfeF9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGhxX3hfczMyKSkpCmludDMyeDRfdCBfX2FybV92bXVsaHFfeChpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsaHFfeF9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdm11bGhxX3hfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGhxX3hfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZtdWxocV94KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxocV94X3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZtdWxocV94X3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxocV94X3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZtdWxocV94KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGhxX3hfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdm11bGhxX3hfdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGhxX3hfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdm11bGhxX3godWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsaHFfeF91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZtdWxocV94X3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGhxX3hfdTgpKSkKdWludDh4MTZfdCBfX2FybV92bXVsaHFfeCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsYnFfaW50X21fczE2KSkpCmludDMyeDRfdCBfX2FybV92bXVsbGJxX2ludF9tX3MxNihpbnQzMng0X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsYnFfaW50X21fczE2KSkpCmludDMyeDRfdCBfX2FybV92bXVsbGJxX2ludF9tKGludDMyeDRfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGxicV9pbnRfbV9zMzIpKSkKaW50NjR4Ml90IF9fYXJtX3ZtdWxsYnFfaW50X21fczMyKGludDY0eDJfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGxicV9pbnRfbV9zMzIpKSkKaW50NjR4Ml90IF9fYXJtX3ZtdWxsYnFfaW50X20oaW50NjR4Ml90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbGJxX2ludF9tX3M4KSkpCmludDE2eDhfdCBfX2FybV92bXVsbGJxX2ludF9tX3M4KGludDE2eDhfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGxicV9pbnRfbV9zOCkpKQppbnQxNng4X3QgX19hcm1fdm11bGxicV9pbnRfbShpbnQxNng4X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsYnFfaW50X21fdTE2KSkpCnVpbnQzMng0X3QgX19hcm1fdm11bGxicV9pbnRfbV91MTYodWludDMyeDRfdCwgdWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbGJxX2ludF9tX3UxNikpKQp1aW50MzJ4NF90IF9fYXJtX3ZtdWxsYnFfaW50X20odWludDMyeDRfdCwgdWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbGJxX2ludF9tX3UzMikpKQp1aW50NjR4Ml90IF9fYXJtX3ZtdWxsYnFfaW50X21fdTMyKHVpbnQ2NHgyX3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGxicV9pbnRfbV91MzIpKSkKdWludDY0eDJfdCBfX2FybV92bXVsbGJxX2ludF9tKHVpbnQ2NHgyX3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGxicV9pbnRfbV91OCkpKQp1aW50MTZ4OF90IF9fYXJtX3ZtdWxsYnFfaW50X21fdTgodWludDE2eDhfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbGJxX2ludF9tX3U4KSkpCnVpbnQxNng4X3QgX19hcm1fdm11bGxicV9pbnRfbSh1aW50MTZ4OF90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsYnFfaW50X3MxNikpKQppbnQzMng0X3QgX19hcm1fdm11bGxicV9pbnRfczE2KGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbGJxX2ludF9zMTYpKSkKaW50MzJ4NF90IF9fYXJtX3ZtdWxsYnFfaW50KGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbGJxX2ludF9zMzIpKSkKaW50NjR4Ml90IF9fYXJtX3ZtdWxsYnFfaW50X3MzMihpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGxicV9pbnRfczMyKSkpCmludDY0eDJfdCBfX2FybV92bXVsbGJxX2ludChpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGxicV9pbnRfczgpKSkKaW50MTZ4OF90IF9fYXJtX3ZtdWxsYnFfaW50X3M4KGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbGJxX2ludF9zOCkpKQppbnQxNng4X3QgX19hcm1fdm11bGxicV9pbnQoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsYnFfaW50X3UxNikpKQp1aW50MzJ4NF90IF9fYXJtX3ZtdWxsYnFfaW50X3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbGJxX2ludF91MTYpKSkKdWludDMyeDRfdCBfX2FybV92bXVsbGJxX2ludCh1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbGJxX2ludF91MzIpKSkKdWludDY0eDJfdCBfX2FybV92bXVsbGJxX2ludF91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGxicV9pbnRfdTMyKSkpCnVpbnQ2NHgyX3QgX19hcm1fdm11bGxicV9pbnQodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGxicV9pbnRfdTgpKSkKdWludDE2eDhfdCBfX2FybV92bXVsbGJxX2ludF91OCh1aW50OHgxNl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbGJxX2ludF91OCkpKQp1aW50MTZ4OF90IF9fYXJtX3ZtdWxsYnFfaW50KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsYnFfaW50X3hfczE2KSkpCmludDMyeDRfdCBfX2FybV92bXVsbGJxX2ludF94X3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbGJxX2ludF94X3MxNikpKQppbnQzMng0X3QgX19hcm1fdm11bGxicV9pbnRfeChpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbGJxX2ludF94X3MzMikpKQppbnQ2NHgyX3QgX19hcm1fdm11bGxicV9pbnRfeF9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGxicV9pbnRfeF9zMzIpKSkKaW50NjR4Ml90IF9fYXJtX3ZtdWxsYnFfaW50X3goaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGxicV9pbnRfeF9zOCkpKQppbnQxNng4X3QgX19hcm1fdm11bGxicV9pbnRfeF9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbGJxX2ludF94X3M4KSkpCmludDE2eDhfdCBfX2FybV92bXVsbGJxX2ludF94KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsYnFfaW50X3hfdTE2KSkpCnVpbnQzMng0X3QgX19hcm1fdm11bGxicV9pbnRfeF91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbGJxX2ludF94X3UxNikpKQp1aW50MzJ4NF90IF9fYXJtX3ZtdWxsYnFfaW50X3godWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbGJxX2ludF94X3UzMikpKQp1aW50NjR4Ml90IF9fYXJtX3ZtdWxsYnFfaW50X3hfdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGxicV9pbnRfeF91MzIpKSkKdWludDY0eDJfdCBfX2FybV92bXVsbGJxX2ludF94KHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGxicV9pbnRfeF91OCkpKQp1aW50MTZ4OF90IF9fYXJtX3ZtdWxsYnFfaW50X3hfdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbGJxX2ludF94X3U4KSkpCnVpbnQxNng4X3QgX19hcm1fdm11bGxicV9pbnRfeCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsYnFfcG9seV9tX3AxNikpKQp1aW50MzJ4NF90IF9fYXJtX3ZtdWxsYnFfcG9seV9tX3AxNih1aW50MzJ4NF90LCB1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsYnFfcG9seV9tX3AxNikpKQp1aW50MzJ4NF90IF9fYXJtX3ZtdWxsYnFfcG9seV9tKHVpbnQzMng0X3QsIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGxicV9wb2x5X21fcDgpKSkKdWludDE2eDhfdCBfX2FybV92bXVsbGJxX3BvbHlfbV9wOCh1aW50MTZ4OF90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsYnFfcG9seV9tX3A4KSkpCnVpbnQxNng4X3QgX19hcm1fdm11bGxicV9wb2x5X20odWludDE2eDhfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbGJxX3BvbHlfcDE2KSkpCnVpbnQzMng0X3QgX19hcm1fdm11bGxicV9wb2x5X3AxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbGJxX3BvbHlfcDE2KSkpCnVpbnQzMng0X3QgX19hcm1fdm11bGxicV9wb2x5KHVpbnQxNng4X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsYnFfcG9seV9wOCkpKQp1aW50MTZ4OF90IF9fYXJtX3ZtdWxsYnFfcG9seV9wOCh1aW50OHgxNl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbGJxX3BvbHlfcDgpKSkKdWludDE2eDhfdCBfX2FybV92bXVsbGJxX3BvbHkodWludDh4MTZfdCwgdWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGxicV9wb2x5X3hfcDE2KSkpCnVpbnQzMng0X3QgX19hcm1fdm11bGxicV9wb2x5X3hfcDE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGxicV9wb2x5X3hfcDE2KSkpCnVpbnQzMng0X3QgX19hcm1fdm11bGxicV9wb2x5X3godWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbGJxX3BvbHlfeF9wOCkpKQp1aW50MTZ4OF90IF9fYXJtX3ZtdWxsYnFfcG9seV94X3A4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGxicV9wb2x5X3hfcDgpKSkKdWludDE2eDhfdCBfX2FybV92bXVsbGJxX3BvbHlfeCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsdHFfaW50X21fczE2KSkpCmludDMyeDRfdCBfX2FybV92bXVsbHRxX2ludF9tX3MxNihpbnQzMng0X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsdHFfaW50X21fczE2KSkpCmludDMyeDRfdCBfX2FybV92bXVsbHRxX2ludF9tKGludDMyeDRfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGx0cV9pbnRfbV9zMzIpKSkKaW50NjR4Ml90IF9fYXJtX3ZtdWxsdHFfaW50X21fczMyKGludDY0eDJfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGx0cV9pbnRfbV9zMzIpKSkKaW50NjR4Ml90IF9fYXJtX3ZtdWxsdHFfaW50X20oaW50NjR4Ml90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbHRxX2ludF9tX3M4KSkpCmludDE2eDhfdCBfX2FybV92bXVsbHRxX2ludF9tX3M4KGludDE2eDhfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGx0cV9pbnRfbV9zOCkpKQppbnQxNng4X3QgX19hcm1fdm11bGx0cV9pbnRfbShpbnQxNng4X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsdHFfaW50X21fdTE2KSkpCnVpbnQzMng0X3QgX19hcm1fdm11bGx0cV9pbnRfbV91MTYodWludDMyeDRfdCwgdWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbHRxX2ludF9tX3UxNikpKQp1aW50MzJ4NF90IF9fYXJtX3ZtdWxsdHFfaW50X20odWludDMyeDRfdCwgdWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbHRxX2ludF9tX3UzMikpKQp1aW50NjR4Ml90IF9fYXJtX3ZtdWxsdHFfaW50X21fdTMyKHVpbnQ2NHgyX3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGx0cV9pbnRfbV91MzIpKSkKdWludDY0eDJfdCBfX2FybV92bXVsbHRxX2ludF9tKHVpbnQ2NHgyX3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGx0cV9pbnRfbV91OCkpKQp1aW50MTZ4OF90IF9fYXJtX3ZtdWxsdHFfaW50X21fdTgodWludDE2eDhfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbHRxX2ludF9tX3U4KSkpCnVpbnQxNng4X3QgX19hcm1fdm11bGx0cV9pbnRfbSh1aW50MTZ4OF90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsdHFfaW50X3MxNikpKQppbnQzMng0X3QgX19hcm1fdm11bGx0cV9pbnRfczE2KGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbHRxX2ludF9zMTYpKSkKaW50MzJ4NF90IF9fYXJtX3ZtdWxsdHFfaW50KGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbHRxX2ludF9zMzIpKSkKaW50NjR4Ml90IF9fYXJtX3ZtdWxsdHFfaW50X3MzMihpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGx0cV9pbnRfczMyKSkpCmludDY0eDJfdCBfX2FybV92bXVsbHRxX2ludChpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGx0cV9pbnRfczgpKSkKaW50MTZ4OF90IF9fYXJtX3ZtdWxsdHFfaW50X3M4KGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbHRxX2ludF9zOCkpKQppbnQxNng4X3QgX19hcm1fdm11bGx0cV9pbnQoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsdHFfaW50X3UxNikpKQp1aW50MzJ4NF90IF9fYXJtX3ZtdWxsdHFfaW50X3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbHRxX2ludF91MTYpKSkKdWludDMyeDRfdCBfX2FybV92bXVsbHRxX2ludCh1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbHRxX2ludF91MzIpKSkKdWludDY0eDJfdCBfX2FybV92bXVsbHRxX2ludF91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGx0cV9pbnRfdTMyKSkpCnVpbnQ2NHgyX3QgX19hcm1fdm11bGx0cV9pbnQodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGx0cV9pbnRfdTgpKSkKdWludDE2eDhfdCBfX2FybV92bXVsbHRxX2ludF91OCh1aW50OHgxNl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbHRxX2ludF91OCkpKQp1aW50MTZ4OF90IF9fYXJtX3ZtdWxsdHFfaW50KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsdHFfaW50X3hfczE2KSkpCmludDMyeDRfdCBfX2FybV92bXVsbHRxX2ludF94X3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbHRxX2ludF94X3MxNikpKQppbnQzMng0X3QgX19hcm1fdm11bGx0cV9pbnRfeChpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbHRxX2ludF94X3MzMikpKQppbnQ2NHgyX3QgX19hcm1fdm11bGx0cV9pbnRfeF9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGx0cV9pbnRfeF9zMzIpKSkKaW50NjR4Ml90IF9fYXJtX3ZtdWxsdHFfaW50X3goaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGx0cV9pbnRfeF9zOCkpKQppbnQxNng4X3QgX19hcm1fdm11bGx0cV9pbnRfeF9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbHRxX2ludF94X3M4KSkpCmludDE2eDhfdCBfX2FybV92bXVsbHRxX2ludF94KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsdHFfaW50X3hfdTE2KSkpCnVpbnQzMng0X3QgX19hcm1fdm11bGx0cV9pbnRfeF91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbHRxX2ludF94X3UxNikpKQp1aW50MzJ4NF90IF9fYXJtX3ZtdWxsdHFfaW50X3godWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbHRxX2ludF94X3UzMikpKQp1aW50NjR4Ml90IF9fYXJtX3ZtdWxsdHFfaW50X3hfdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGx0cV9pbnRfeF91MzIpKSkKdWludDY0eDJfdCBfX2FybV92bXVsbHRxX2ludF94KHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGx0cV9pbnRfeF91OCkpKQp1aW50MTZ4OF90IF9fYXJtX3ZtdWxsdHFfaW50X3hfdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbHRxX2ludF94X3U4KSkpCnVpbnQxNng4X3QgX19hcm1fdm11bGx0cV9pbnRfeCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsdHFfcG9seV9tX3AxNikpKQp1aW50MzJ4NF90IF9fYXJtX3ZtdWxsdHFfcG9seV9tX3AxNih1aW50MzJ4NF90LCB1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsdHFfcG9seV9tX3AxNikpKQp1aW50MzJ4NF90IF9fYXJtX3ZtdWxsdHFfcG9seV9tKHVpbnQzMng0X3QsIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGx0cV9wb2x5X21fcDgpKSkKdWludDE2eDhfdCBfX2FybV92bXVsbHRxX3BvbHlfbV9wOCh1aW50MTZ4OF90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsdHFfcG9seV9tX3A4KSkpCnVpbnQxNng4X3QgX19hcm1fdm11bGx0cV9wb2x5X20odWludDE2eDhfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbHRxX3BvbHlfcDE2KSkpCnVpbnQzMng0X3QgX19hcm1fdm11bGx0cV9wb2x5X3AxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbHRxX3BvbHlfcDE2KSkpCnVpbnQzMng0X3QgX19hcm1fdm11bGx0cV9wb2x5KHVpbnQxNng4X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsdHFfcG9seV9wOCkpKQp1aW50MTZ4OF90IF9fYXJtX3ZtdWxsdHFfcG9seV9wOCh1aW50OHgxNl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbHRxX3BvbHlfcDgpKSkKdWludDE2eDhfdCBfX2FybV92bXVsbHRxX3BvbHkodWludDh4MTZfdCwgdWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGx0cV9wb2x5X3hfcDE2KSkpCnVpbnQzMng0X3QgX19hcm1fdm11bGx0cV9wb2x5X3hfcDE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGx0cV9wb2x5X3hfcDE2KSkpCnVpbnQzMng0X3QgX19hcm1fdm11bGx0cV9wb2x5X3godWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbHRxX3BvbHlfeF9wOCkpKQp1aW50MTZ4OF90IF9fYXJtX3ZtdWxsdHFfcG9seV94X3A4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGx0cV9wb2x5X3hfcDgpKSkKdWludDE2eDhfdCBfX2FybV92bXVsbHRxX3BvbHlfeCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX21fbl9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZtdWxxX21fbl9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfbV9uX3MxNikpKQppbnQxNng4X3QgX19hcm1fdm11bHFfbShpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV9tX25fczMyKSkpCmludDMyeDRfdCBfX2FybV92bXVscV9tX25fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX21fbl9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZtdWxxX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfbV9uX3M4KSkpCmludDh4MTZfdCBfX2FybV92bXVscV9tX25fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV9tX25fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZtdWxxX20oaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV9tX25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdm11bHFfbV9uX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90LCB1aW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV9tX25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdm11bHFfbSh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCB1aW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV9tX25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdm11bHFfbV9uX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV9tX25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdm11bHFfbSh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV9tX25fdTgpKSkKdWludDh4MTZfdCBfX2FybV92bXVscV9tX25fdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV9tX25fdTgpKSkKdWludDh4MTZfdCBfX2FybV92bXVscV9tKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfbV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZtdWxxX21fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfbV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZtdWxxX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV9tX3MzMikpKQppbnQzMng0X3QgX19hcm1fdm11bHFfbV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV9tX3MzMikpKQppbnQzMng0X3QgX19hcm1fdm11bHFfbShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX21fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZtdWxxX21fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV9tX3M4KSkpCmludDh4MTZfdCBfX2FybV92bXVscV9tKGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfbV91MTYpKSkKdWludDE2eDhfdCBfX2FybV92bXVscV9tX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX21fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdm11bHFfbSh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX21fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdm11bHFfbV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV9tX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZtdWxxX20odWludDMyeDRfdCwgdWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV9tX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdm11bHFfbV91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX21fdTgpKSkKdWludDh4MTZfdCBfX2FybV92bXVscV9tKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfbl9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZtdWxxX25fczE2KGludDE2eDhfdCwgaW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfbl9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZtdWxxKGludDE2eDhfdCwgaW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfbl9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZtdWxxX25fczMyKGludDMyeDRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfbl9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZtdWxxKGludDMyeDRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfbl9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdm11bHFfbl9zOChpbnQ4eDE2X3QsIGludDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfbl9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdm11bHEoaW50OHgxNl90LCBpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdm11bHFfbl91MTYodWludDE2eDhfdCwgdWludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdm11bHEodWludDE2eDhfdCwgdWludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdm11bHFfbl91MzIodWludDMyeDRfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdm11bHEodWludDMyeDRfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX25fdTgpKSkKdWludDh4MTZfdCBfX2FybV92bXVscV9uX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX25fdTgpKSkKdWludDh4MTZfdCBfX2FybV92bXVscSh1aW50OHgxNl90LCB1aW50OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZtdWxxX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfczE2KSkpCmludDE2eDhfdCBfX2FybV92bXVscShpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfczMyKSkpCmludDMyeDRfdCBfX2FybV92bXVscV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX3MzMikpKQppbnQzMng0X3QgX19hcm1fdm11bHEoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX3M4KSkpCmludDh4MTZfdCBfX2FybV92bXVscV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZtdWxxKGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV91MTYpKSkKdWludDE2eDhfdCBfX2FybV92bXVscV91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdm11bHEodWludDE2eDhfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdm11bHFfdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZtdWxxKHVpbnQzMng0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdm11bHFfdTgodWludDh4MTZfdCwgdWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfdTgpKSkKdWludDh4MTZfdCBfX2FybV92bXVscSh1aW50OHgxNl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV94X25fczE2KSkpCmludDE2eDhfdCBfX2FybV92bXVscV94X25fczE2KGludDE2eDhfdCwgaW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV94X25fczE2KSkpCmludDE2eDhfdCBfX2FybV92bXVscV94KGludDE2eDhfdCwgaW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV94X25fczMyKSkpCmludDMyeDRfdCBfX2FybV92bXVscV94X25fczMyKGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV94X25fczMyKSkpCmludDMyeDRfdCBfX2FybV92bXVscV94KGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV94X25fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZtdWxxX3hfbl9zOChpbnQ4eDE2X3QsIGludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV94X25fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZtdWxxX3goaW50OHgxNl90LCBpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfeF9uX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZtdWxxX3hfbl91MTYodWludDE2eDhfdCwgdWludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfeF9uX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZtdWxxX3godWludDE2eDhfdCwgdWludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfeF9uX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZtdWxxX3hfbl91MzIodWludDMyeDRfdCwgdWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfeF9uX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZtdWxxX3godWludDMyeDRfdCwgdWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfeF9uX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdm11bHFfeF9uX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfeF9uX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdm11bHFfeCh1aW50OHgxNl90LCB1aW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX3hfczE2KSkpCmludDE2eDhfdCBfX2FybV92bXVscV94X3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV94X3MxNikpKQppbnQxNng4X3QgX19hcm1fdm11bHFfeChpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV94X3MzMikpKQppbnQzMng0X3QgX19hcm1fdm11bHFfeF9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfeF9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZtdWxxX3goaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfeF9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdm11bHFfeF9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV94X3M4KSkpCmludDh4MTZfdCBfX2FybV92bXVscV94KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX3hfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdm11bHFfeF91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV94X3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZtdWxxX3godWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV94X3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZtdWxxX3hfdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfeF91MzIpKSkKdWludDMyeDRfdCBfX2FybV92bXVscV94KHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfeF91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZtdWxxX3hfdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV94X3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdm11bHFfeCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztdm5xX21fbl9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3Ztdm5xX21fbl9zMTYoaW50MTZ4OF90LCBpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztdm5xX21fbl9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3Ztdm5xX20oaW50MTZ4OF90LCBpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztdm5xX21fbl9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3Ztdm5xX21fbl9zMzIoaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztdm5xX21fbl9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3Ztdm5xX20oaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztdm5xX21fbl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92bXZucV9tX25fdTE2KHVpbnQxNng4X3QsIHVpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztdm5xX21fbl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92bXZucV9tKHVpbnQxNng4X3QsIHVpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztdm5xX21fbl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92bXZucV9tX25fdTMyKHVpbnQzMng0X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztdm5xX21fbl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92bXZucV9tKHVpbnQzMng0X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztdm5xX21fczE2KSkpCmludDE2eDhfdCBfX2FybV92bXZucV9tX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXZucV9tX3MxNikpKQppbnQxNng4X3QgX19hcm1fdm12bnFfbShpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXZucV9tX3MzMikpKQppbnQzMng0X3QgX19hcm1fdm12bnFfbV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm12bnFfbV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3Ztdm5xX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm12bnFfbV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdm12bnFfbV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXZucV9tX3M4KSkpCmludDh4MTZfdCBfX2FybV92bXZucV9tKGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztdm5xX21fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdm12bnFfbV91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXZucV9tX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3Ztdm5xX20odWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXZucV9tX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3Ztdm5xX21fdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm12bnFfbV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92bXZucV9tKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm12bnFfbV91OCkpKQp1aW50OHgxNl90IF9fYXJtX3Ztdm5xX21fdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXZucV9tX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdm12bnFfbSh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztdm5xX25fczE2KSkpCmludDE2eDhfdCBfX2FybV92bXZucV9uX3MxNihpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXZucV9uX3MzMikpKQppbnQzMng0X3QgX19hcm1fdm12bnFfbl9zMzIoaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm12bnFfbl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92bXZucV9uX3UxNih1aW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm12bnFfbl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92bXZucV9uX3UzMih1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm12bnFfczE2KSkpCmludDE2eDhfdCBfX2FybV92bXZucV9zMTYoaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXZucV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3Ztdm5xKGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm12bnFfczMyKSkpCmludDMyeDRfdCBfX2FybV92bXZucV9zMzIoaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXZucV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3Ztdm5xKGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm12bnFfczgpKSkKaW50OHgxNl90IF9fYXJtX3Ztdm5xX3M4KGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm12bnFfczgpKSkKaW50OHgxNl90IF9fYXJtX3Ztdm5xKGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm12bnFfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdm12bnFfdTE2KHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztdm5xX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3Ztdm5xKHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztdm5xX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3Ztdm5xX3UzMih1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXZucV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92bXZucSh1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXZucV91OCkpKQp1aW50OHgxNl90IF9fYXJtX3Ztdm5xX3U4KHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztdm5xX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdm12bnEodWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm12bnFfeF9uX3MxNikpKQppbnQxNng4X3QgX19hcm1fdm12bnFfeF9uX3MxNihpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztdm5xX3hfbl9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3Ztdm5xX3hfbl9zMzIoaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXZucV94X25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdm12bnFfeF9uX3UxNih1aW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXZucV94X25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdm12bnFfeF9uX3UzMih1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXZucV94X3MxNikpKQppbnQxNng4X3QgX19hcm1fdm12bnFfeF9zMTYoaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztdm5xX3hfczE2KSkpCmludDE2eDhfdCBfX2FybV92bXZucV94KGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXZucV94X3MzMikpKQppbnQzMng0X3QgX19hcm1fdm12bnFfeF9zMzIoaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztdm5xX3hfczMyKSkpCmludDMyeDRfdCBfX2FybV92bXZucV94KGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXZucV94X3M4KSkpCmludDh4MTZfdCBfX2FybV92bXZucV94X3M4KGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXZucV94X3M4KSkpCmludDh4MTZfdCBfX2FybV92bXZucV94KGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXZucV94X3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3Ztdm5xX3hfdTE2KHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm12bnFfeF91MTYpKSkKdWludDE2eDhfdCBfX2FybV92bXZucV94KHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm12bnFfeF91MzIpKSkKdWludDMyeDRfdCBfX2FybV92bXZucV94X3UzMih1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztdm5xX3hfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdm12bnFfeCh1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztdm5xX3hfdTgpKSkKdWludDh4MTZfdCBfX2FybV92bXZucV94X3U4KHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm12bnFfeF91OCkpKQp1aW50OHgxNl90IF9fYXJtX3Ztdm5xX3godWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bmVncV9tX3MxNikpKQppbnQxNng4X3QgX19hcm1fdm5lZ3FfbV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm5lZ3FfbV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZuZWdxX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm5lZ3FfbV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZuZWdxX21fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZuZWdxX21fczMyKSkpCmludDMyeDRfdCBfX2FybV92bmVncV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZuZWdxX21fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZuZWdxX21fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm5lZ3FfbV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdm5lZ3FfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bmVncV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZuZWdxX3MxNihpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZuZWdxX3MxNikpKQppbnQxNng4X3QgX19hcm1fdm5lZ3EoaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bmVncV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZuZWdxX3MzMihpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZuZWdxX3MzMikpKQppbnQzMng0X3QgX19hcm1fdm5lZ3EoaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bmVncV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdm5lZ3FfczgoaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bmVncV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdm5lZ3EoaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bmVncV94X3MxNikpKQppbnQxNng4X3QgX19hcm1fdm5lZ3FfeF9zMTYoaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZuZWdxX3hfczE2KSkpCmludDE2eDhfdCBfX2FybV92bmVncV94KGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bmVncV94X3MzMikpKQppbnQzMng0X3QgX19hcm1fdm5lZ3FfeF9zMzIoaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZuZWdxX3hfczMyKSkpCmludDMyeDRfdCBfX2FybV92bmVncV94KGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bmVncV94X3M4KSkpCmludDh4MTZfdCBfX2FybV92bmVncV94X3M4KGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bmVncV94X3M4KSkpCmludDh4MTZfdCBfX2FybV92bmVncV94KGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JucV9tX3MxNikpKQppbnQxNng4X3QgX19hcm1fdm9ybnFfbV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JucV9tX3MxNikpKQppbnQxNng4X3QgX19hcm1fdm9ybnFfbShpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zvcm5xX21fczMyKSkpCmludDMyeDRfdCBfX2FybV92b3JucV9tX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zvcm5xX21fczMyKSkpCmludDMyeDRfdCBfX2FybV92b3JucV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ybnFfbV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdm9ybnFfbV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zvcm5xX21fczgpKSkKaW50OHgxNl90IF9fYXJtX3Zvcm5xX20oaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JucV9tX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3Zvcm5xX21fdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ybnFfbV91MTYpKSkKdWludDE2eDhfdCBfX2FybV92b3JucV9tKHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ybnFfbV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92b3JucV9tX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zvcm5xX21fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdm9ybnFfbSh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zvcm5xX21fdTgpKSkKdWludDh4MTZfdCBfX2FybV92b3JucV9tX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ybnFfbV91OCkpKQp1aW50OHgxNl90IF9fYXJtX3Zvcm5xX20odWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JucV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3Zvcm5xX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ybnFfczE2KSkpCmludDE2eDhfdCBfX2FybV92b3JucShpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ybnFfczMyKSkpCmludDMyeDRfdCBfX2FybV92b3JucV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zvcm5xX3MzMikpKQppbnQzMng0X3QgX19hcm1fdm9ybnEoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zvcm5xX3M4KSkpCmludDh4MTZfdCBfX2FybV92b3JucV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ybnFfczgpKSkKaW50OHgxNl90IF9fYXJtX3Zvcm5xKGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JucV91MTYpKSkKdWludDE2eDhfdCBfX2FybV92b3JucV91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ybnFfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdm9ybnEodWludDE2eDhfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ybnFfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdm9ybnFfdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zvcm5xX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3Zvcm5xKHVpbnQzMng0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zvcm5xX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdm9ybnFfdTgodWludDh4MTZfdCwgdWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ybnFfdTgpKSkKdWludDh4MTZfdCBfX2FybV92b3JucSh1aW50OHgxNl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JucV94X3MxNikpKQppbnQxNng4X3QgX19hcm1fdm9ybnFfeF9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ybnFfeF9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3Zvcm5xX3goaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ybnFfeF9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3Zvcm5xX3hfczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zvcm5xX3hfczMyKSkpCmludDMyeDRfdCBfX2FybV92b3JucV94KGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zvcm5xX3hfczgpKSkKaW50OHgxNl90IF9fYXJtX3Zvcm5xX3hfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ybnFfeF9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdm9ybnFfeChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JucV94X3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3Zvcm5xX3hfdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ybnFfeF91MTYpKSkKdWludDE2eDhfdCBfX2FybV92b3JucV94KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ybnFfeF91MzIpKSkKdWludDMyeDRfdCBfX2FybV92b3JucV94X3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zvcm5xX3hfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdm9ybnFfeCh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zvcm5xX3hfdTgpKSkKdWludDh4MTZfdCBfX2FybV92b3JucV94X3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ybnFfeF91OCkpKQp1aW50OHgxNl90IF9fYXJtX3Zvcm5xX3godWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JycV9tX25fczE2KSkpCmludDE2eDhfdCBfX2FybV92b3JycV9tX25fczE2KGludDE2eDhfdCwgaW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JycV9tX25fczE2KSkpCmludDE2eDhfdCBfX2FybV92b3JycV9tX24oaW50MTZ4OF90LCBpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZvcnJxX21fbl9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZvcnJxX21fbl9zMzIoaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZvcnJxX21fbl9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZvcnJxX21fbihpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ycnFfbV9uX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZvcnJxX21fbl91MTYodWludDE2eDhfdCwgdWludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ycnFfbV9uX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZvcnJxX21fbih1aW50MTZ4OF90LCB1aW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JycV9tX25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdm9ycnFfbV9uX3UzMih1aW50MzJ4NF90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JycV9tX25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdm9ycnFfbV9uKHVpbnQzMng0X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZvcnJxX21fczE2KSkpCmludDE2eDhfdCBfX2FybV92b3JycV9tX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZvcnJxX21fczE2KSkpCmludDE2eDhfdCBfX2FybV92b3JycV9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ycnFfbV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZvcnJxX21fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ycnFfbV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZvcnJxX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JycV9tX3M4KSkpCmludDh4MTZfdCBfX2FybV92b3JycV9tX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ycnFfbV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdm9ycnFfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZvcnJxX21fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdm9ycnFfbV91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JycV9tX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZvcnJxX20odWludDE2eDhfdCwgdWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JycV9tX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZvcnJxX21fdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ycnFfbV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92b3JycV9tKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ycnFfbV91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZvcnJxX21fdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JycV9tX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdm9ycnFfbSh1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZvcnJxX25fczE2KSkpCmludDE2eDhfdCBfX2FybV92b3JycV9uX3MxNihpbnQxNng4X3QsIGludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZvcnJxX25fczE2KSkpCmludDE2eDhfdCBfX2FybV92b3JycShpbnQxNng4X3QsIGludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZvcnJxX25fczMyKSkpCmludDMyeDRfdCBfX2FybV92b3JycV9uX3MzMihpbnQzMng0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZvcnJxX25fczMyKSkpCmludDMyeDRfdCBfX2FybV92b3JycShpbnQzMng0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZvcnJxX25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdm9ycnFfbl91MTYodWludDE2eDhfdCwgdWludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZvcnJxX25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdm9ycnEodWludDE2eDhfdCwgdWludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZvcnJxX25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdm9ycnFfbl91MzIodWludDMyeDRfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZvcnJxX25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdm9ycnEodWludDMyeDRfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZvcnJxX3MxNikpKQppbnQxNng4X3QgX19hcm1fdm9ycnFfczE2KGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JycV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZvcnJxKGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JycV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZvcnJxX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ycnFfczMyKSkpCmludDMyeDRfdCBfX2FybV92b3JycShpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ycnFfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZvcnJxX3M4KGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JycV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdm9ycnEoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZvcnJxX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZvcnJxX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JycV91MTYpKSkKdWludDE2eDhfdCBfX2FybV92b3JycSh1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JycV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92b3JycV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ycnFfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdm9ycnEodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ycnFfdTgpKSkKdWludDh4MTZfdCBfX2FybV92b3JycV91OCh1aW50OHgxNl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JycV91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZvcnJxKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZvcnJxX3hfczE2KSkpCmludDE2eDhfdCBfX2FybV92b3JycV94X3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JycV94X3MxNikpKQppbnQxNng4X3QgX19hcm1fdm9ycnFfeChpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JycV94X3MzMikpKQppbnQzMng0X3QgX19hcm1fdm9ycnFfeF9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ycnFfeF9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZvcnJxX3goaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ycnFfeF9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdm9ycnFfeF9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JycV94X3M4KSkpCmludDh4MTZfdCBfX2FybV92b3JycV94KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZvcnJxX3hfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdm9ycnFfeF91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JycV94X3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZvcnJxX3godWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JycV94X3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZvcnJxX3hfdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ycnFfeF91MzIpKSkKdWludDMyeDRfdCBfX2FybV92b3JycV94KHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ycnFfeF91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZvcnJxX3hfdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JycV94X3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdm9ycnFfeCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zwbm90KSkpCm12ZV9wcmVkMTZfdCBfX2FybV92cG5vdChtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zwc2VscV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3Zwc2VscV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnBzZWxxX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnBzZWxxKGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zwc2VscV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3Zwc2VscV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnBzZWxxX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnBzZWxxKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zwc2VscV9zNjQpKSkKaW50NjR4Ml90IF9fYXJtX3Zwc2VscV9zNjQoaW50NjR4Ml90LCBpbnQ2NHgyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnBzZWxxX3M2NCkpKQppbnQ2NHgyX3QgX19hcm1fdnBzZWxxKGludDY0eDJfdCwgaW50NjR4Ml90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zwc2VscV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnBzZWxxX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zwc2VscV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnBzZWxxKGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zwc2VscV91MTYpKSkKdWludDE2eDhfdCBfX2FybV92cHNlbHFfdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnBzZWxxX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3Zwc2VscSh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zwc2VscV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92cHNlbHFfdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnBzZWxxX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3Zwc2VscSh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zwc2VscV91NjQpKSkKdWludDY0eDJfdCBfX2FybV92cHNlbHFfdTY0KHVpbnQ2NHgyX3QsIHVpbnQ2NHgyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnBzZWxxX3U2NCkpKQp1aW50NjR4Ml90IF9fYXJtX3Zwc2VscSh1aW50NjR4Ml90LCB1aW50NjR4Ml90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zwc2VscV91OCkpKQp1aW50OHgxNl90IF9fYXJtX3Zwc2VscV91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zwc2VscV91OCkpKQp1aW50OHgxNl90IF9fYXJtX3Zwc2VscSh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxYWJzcV9tX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnFhYnNxX21fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxYWJzcV9tX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnFhYnNxX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFhYnNxX21fczMyKSkpCmludDMyeDRfdCBfX2FybV92cWFic3FfbV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFhYnNxX21fczMyKSkpCmludDMyeDRfdCBfX2FybV92cWFic3FfbShpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWFic3FfbV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnFhYnNxX21fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFhYnNxX21fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZxYWJzcV9tKGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxYWJzcV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZxYWJzcV9zMTYoaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWFic3FfczE2KSkpCmludDE2eDhfdCBfX2FybV92cWFic3EoaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWFic3FfczMyKSkpCmludDMyeDRfdCBfX2FybV92cWFic3FfczMyKGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFhYnNxX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnFhYnNxKGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFhYnNxX3M4KSkpCmludDh4MTZfdCBfX2FybV92cWFic3FfczgoaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWFic3FfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZxYWJzcShpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxYWRkcV9tX25fczE2KSkpCmludDE2eDhfdCBfX2FybV92cWFkZHFfbV9uX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWFkZHFfbV9uX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnFhZGRxX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFhZGRxX21fbl9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZxYWRkcV9tX25fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxYWRkcV9tX25fczMyKSkpCmludDMyeDRfdCBfX2FybV92cWFkZHFfbShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWFkZHFfbV9uX3M4KSkpCmludDh4MTZfdCBfX2FybV92cWFkZHFfbV9uX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFhZGRxX21fbl9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnFhZGRxX20oaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWFkZHFfbV9uX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZxYWRkcV9tX25fdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxYWRkcV9tX25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnFhZGRxX20odWludDE2eDhfdCwgdWludDE2eDhfdCwgdWludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFhZGRxX21fbl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92cWFkZHFfbV9uX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWFkZHFfbV9uX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZxYWRkcV9tKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxYWRkcV9tX25fdTgpKSkKdWludDh4MTZfdCBfX2FybV92cWFkZHFfbV9uX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFhZGRxX21fbl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZxYWRkcV9tKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFhZGRxX21fczE2KSkpCmludDE2eDhfdCBfX2FybV92cWFkZHFfbV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWFkZHFfbV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZxYWRkcV9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFhZGRxX21fczMyKSkpCmludDMyeDRfdCBfX2FybV92cWFkZHFfbV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWFkZHFfbV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZxYWRkcV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFhZGRxX21fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZxYWRkcV9tX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFhZGRxX21fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZxYWRkcV9tKGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFhZGRxX21fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnFhZGRxX21fdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFhZGRxX21fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnFhZGRxX20odWludDE2eDhfdCwgdWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWFkZHFfbV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92cWFkZHFfbV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWFkZHFfbV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92cWFkZHFfbSh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxYWRkcV9tX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnFhZGRxX21fdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWFkZHFfbV91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZxYWRkcV9tKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFhZGRxX25fczE2KSkpCmludDE2eDhfdCBfX2FybV92cWFkZHFfbl9zMTYoaW50MTZ4OF90LCBpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWFkZHFfbl9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZxYWRkcShpbnQxNng4X3QsIGludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxYWRkcV9uX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnFhZGRxX25fczMyKGludDMyeDRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFhZGRxX25fczMyKSkpCmludDMyeDRfdCBfX2FybV92cWFkZHEoaW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWFkZHFfbl9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnFhZGRxX25fczgoaW50OHgxNl90LCBpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxYWRkcV9uX3M4KSkpCmludDh4MTZfdCBfX2FybV92cWFkZHEoaW50OHgxNl90LCBpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxYWRkcV9uX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZxYWRkcV9uX3UxNih1aW50MTZ4OF90LCB1aW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFhZGRxX25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnFhZGRxKHVpbnQxNng4X3QsIHVpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWFkZHFfbl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92cWFkZHFfbl91MzIodWludDMyeDRfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxYWRkcV9uX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZxYWRkcSh1aW50MzJ4NF90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFhZGRxX25fdTgpKSkKdWludDh4MTZfdCBfX2FybV92cWFkZHFfbl91OCh1aW50OHgxNl90LCB1aW50OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWFkZHFfbl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZxYWRkcSh1aW50OHgxNl90LCB1aW50OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWFkZHFfczE2KSkpCmludDE2eDhfdCBfX2FybV92cWFkZHFfczE2KGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWFkZHFfczE2KSkpCmludDE2eDhfdCBfX2FybV92cWFkZHEoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxYWRkcV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZxYWRkcV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxYWRkcV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZxYWRkcShpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFhZGRxX3M4KSkpCmludDh4MTZfdCBfX2FybV92cWFkZHFfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxYWRkcV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnFhZGRxKGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWFkZHFfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnFhZGRxX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWFkZHFfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnFhZGRxKHVpbnQxNng4X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxYWRkcV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92cWFkZHFfdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxYWRkcV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92cWFkZHEodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFhZGRxX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnFhZGRxX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxYWRkcV91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZxYWRkcSh1aW50OHgxNl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbGFkaHFfbV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZxZG1sYWRocV9tX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sYWRocV9tX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnFkbWxhZGhxX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbGFkaHFfbV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZxZG1sYWRocV9tX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sYWRocV9tX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnFkbWxhZGhxX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbGFkaHFfbV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnFkbWxhZGhxX21fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbGFkaHFfbV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnFkbWxhZGhxX20oaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbGFkaHFfczE2KSkpCmludDE2eDhfdCBfX2FybV92cWRtbGFkaHFfczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sYWRocV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZxZG1sYWRocShpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbGFkaHFfczMyKSkpCmludDMyeDRfdCBfX2FybV92cWRtbGFkaHFfczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sYWRocV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZxZG1sYWRocShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbGFkaHFfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZxZG1sYWRocV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbGFkaHFfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZxZG1sYWRocShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbGFkaHhxX21fczE2KSkpCmludDE2eDhfdCBfX2FybV92cWRtbGFkaHhxX21fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbWxhZGh4cV9tX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnFkbWxhZGh4cV9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbWxhZGh4cV9tX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnFkbWxhZGh4cV9tX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sYWRoeHFfbV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZxZG1sYWRoeHFfbShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sYWRoeHFfbV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnFkbWxhZGh4cV9tX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbWxhZGh4cV9tX3M4KSkpCmludDh4MTZfdCBfX2FybV92cWRtbGFkaHhxX20oaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbGFkaHhxX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnFkbWxhZGh4cV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbWxhZGh4cV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZxZG1sYWRoeHEoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbWxhZGh4cV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZxZG1sYWRoeHFfczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sYWRoeHFfczMyKSkpCmludDMyeDRfdCBfX2FybV92cWRtbGFkaHhxKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sYWRoeHFfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZxZG1sYWRoeHFfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbWxhZGh4cV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnFkbWxhZGh4cShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbGFocV9tX25fczE2KSkpCmludDE2eDhfdCBfX2FybV92cWRtbGFocV9tX25fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sYWhxX21fbl9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZxZG1sYWhxX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbWxhaHFfbV9uX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnFkbWxhaHFfbV9uX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbGFocV9tX25fczMyKSkpCmludDMyeDRfdCBfX2FybV92cWRtbGFocV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sYWhxX21fbl9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnFkbWxhaHFfbV9uX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbWxhaHFfbV9uX3M4KSkpCmludDh4MTZfdCBfX2FybV92cWRtbGFocV9tKGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbWxhaHFfbl9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZxZG1sYWhxX25fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbGFocV9uX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnFkbWxhaHEoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sYWhxX25fczMyKSkpCmludDMyeDRfdCBfX2FybV92cWRtbGFocV9uX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbWxhaHFfbl9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZxZG1sYWhxKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbGFocV9uX3M4KSkpCmludDh4MTZfdCBfX2FybV92cWRtbGFocV9uX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sYWhxX25fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZxZG1sYWhxKGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sYXNocV9tX25fczE2KSkpCmludDE2eDhfdCBfX2FybV92cWRtbGFzaHFfbV9uX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbGFzaHFfbV9uX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnFkbWxhc2hxX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbWxhc2hxX21fbl9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZxZG1sYXNocV9tX25fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sYXNocV9tX25fczMyKSkpCmludDMyeDRfdCBfX2FybV92cWRtbGFzaHFfbShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbGFzaHFfbV9uX3M4KSkpCmludDh4MTZfdCBfX2FybV92cWRtbGFzaHFfbV9uX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbWxhc2hxX21fbl9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnFkbWxhc2hxX20oaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbGFzaHFfbl9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZxZG1sYXNocV9uX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbWxhc2hxX25fczE2KSkpCmludDE2eDhfdCBfX2FybV92cWRtbGFzaHEoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sYXNocV9uX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnFkbWxhc2hxX25fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbGFzaHFfbl9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZxZG1sYXNocShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbWxhc2hxX25fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZxZG1sYXNocV9uX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sYXNocV9uX3M4KSkpCmludDh4MTZfdCBfX2FybV92cWRtbGFzaHEoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbWxzZGhxX21fczE2KSkpCmludDE2eDhfdCBfX2FybV92cWRtbHNkaHFfbV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbHNkaHFfbV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZxZG1sc2RocV9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbWxzZGhxX21fczMyKSkpCmludDMyeDRfdCBfX2FybV92cWRtbHNkaHFfbV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbHNkaHFfbV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZxZG1sc2RocV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbWxzZGhxX21fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZxZG1sc2RocV9tX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbWxzZGhxX21fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZxZG1sc2RocV9tKGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbWxzZGhxX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnFkbWxzZGhxX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbHNkaHFfczE2KSkpCmludDE2eDhfdCBfX2FybV92cWRtbHNkaHEoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbWxzZGhxX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnFkbWxzZGhxX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbHNkaHFfczMyKSkpCmludDMyeDRfdCBfX2FybV92cWRtbHNkaHEoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbWxzZGhxX3M4KSkpCmludDh4MTZfdCBfX2FybV92cWRtbHNkaHFfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbWxzZGhxX3M4KSkpCmludDh4MTZfdCBfX2FybV92cWRtbHNkaHEoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbWxzZGh4cV9tX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnFkbWxzZGh4cV9tX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sc2RoeHFfbV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZxZG1sc2RoeHFfbShpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sc2RoeHFfbV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZxZG1sc2RoeHFfbV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbHNkaHhxX21fczMyKSkpCmludDMyeDRfdCBfX2FybV92cWRtbHNkaHhxX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbHNkaHhxX21fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZxZG1sc2RoeHFfbV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sc2RoeHFfbV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnFkbWxzZGh4cV9tKGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbWxzZGh4cV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZxZG1sc2RoeHFfczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sc2RoeHFfczE2KSkpCmludDE2eDhfdCBfX2FybV92cWRtbHNkaHhxKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sc2RoeHFfczMyKSkpCmludDMyeDRfdCBfX2FybV92cWRtbHNkaHhxX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbHNkaHhxX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnFkbWxzZGh4cShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbHNkaHhxX3M4KSkpCmludDh4MTZfdCBfX2FybV92cWRtbHNkaHhxX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sc2RoeHFfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZxZG1sc2RoeHEoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbXVsaHFfbV9uX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnFkbXVsaHFfbV9uX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtdWxocV9tX25fczE2KSkpCmludDE2eDhfdCBfX2FybV92cWRtdWxocV9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG11bGhxX21fbl9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZxZG11bGhxX21fbl9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbXVsaHFfbV9uX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnFkbXVsaHFfbShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtdWxocV9tX25fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZxZG11bGhxX21fbl9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG11bGhxX21fbl9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnFkbXVsaHFfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG11bGhxX21fczE2KSkpCmludDE2eDhfdCBfX2FybV92cWRtdWxocV9tX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG11bGhxX21fczE2KSkpCmludDE2eDhfdCBfX2FybV92cWRtdWxocV9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbXVsaHFfbV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZxZG11bGhxX21fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbXVsaHFfbV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZxZG11bGhxX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtdWxocV9tX3M4KSkpCmludDh4MTZfdCBfX2FybV92cWRtdWxocV9tX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbXVsaHFfbV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnFkbXVsaHFfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG11bGhxX25fczE2KSkpCmludDE2eDhfdCBfX2FybV92cWRtdWxocV9uX3MxNihpbnQxNng4X3QsIGludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG11bGhxX25fczE2KSkpCmludDE2eDhfdCBfX2FybV92cWRtdWxocShpbnQxNng4X3QsIGludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG11bGhxX25fczMyKSkpCmludDMyeDRfdCBfX2FybV92cWRtdWxocV9uX3MzMihpbnQzMng0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG11bGhxX25fczMyKSkpCmludDMyeDRfdCBfX2FybV92cWRtdWxocShpbnQzMng0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG11bGhxX25fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZxZG11bGhxX25fczgoaW50OHgxNl90LCBpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG11bGhxX25fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZxZG11bGhxKGludDh4MTZfdCwgaW50OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtdWxocV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZxZG11bGhxX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbXVsaHFfczE2KSkpCmludDE2eDhfdCBfX2FybV92cWRtdWxocShpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbXVsaHFfczMyKSkpCmludDMyeDRfdCBfX2FybV92cWRtdWxocV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG11bGhxX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnFkbXVsaHEoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG11bGhxX3M4KSkpCmludDh4MTZfdCBfX2FybV92cWRtdWxocV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbXVsaHFfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZxZG11bGhxKGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtdWxsYnFfbV9uX3MxNikpKQppbnQzMng0X3QgX19hcm1fdnFkbXVsbGJxX21fbl9zMTYoaW50MzJ4NF90LCBpbnQxNng4X3QsIGludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbXVsbGJxX21fbl9zMTYpKSkKaW50MzJ4NF90IF9fYXJtX3ZxZG11bGxicV9tKGludDMyeDRfdCwgaW50MTZ4OF90LCBpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG11bGxicV9tX25fczMyKSkpCmludDY0eDJfdCBfX2FybV92cWRtdWxsYnFfbV9uX3MzMihpbnQ2NHgyX3QsIGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtdWxsYnFfbV9uX3MzMikpKQppbnQ2NHgyX3QgX19hcm1fdnFkbXVsbGJxX20oaW50NjR4Ml90LCBpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbXVsbGJxX21fczE2KSkpCmludDMyeDRfdCBfX2FybV92cWRtdWxsYnFfbV9zMTYoaW50MzJ4NF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtdWxsYnFfbV9zMTYpKSkKaW50MzJ4NF90IF9fYXJtX3ZxZG11bGxicV9tKGludDMyeDRfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbXVsbGJxX21fczMyKSkpCmludDY0eDJfdCBfX2FybV92cWRtdWxsYnFfbV9zMzIoaW50NjR4Ml90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtdWxsYnFfbV9zMzIpKSkKaW50NjR4Ml90IF9fYXJtX3ZxZG11bGxicV9tKGludDY0eDJfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbXVsbGJxX25fczE2KSkpCmludDMyeDRfdCBfX2FybV92cWRtdWxsYnFfbl9zMTYoaW50MTZ4OF90LCBpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtdWxsYnFfbl9zMTYpKSkKaW50MzJ4NF90IF9fYXJtX3ZxZG11bGxicShpbnQxNng4X3QsIGludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG11bGxicV9uX3MzMikpKQppbnQ2NHgyX3QgX19hcm1fdnFkbXVsbGJxX25fczMyKGludDMyeDRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbXVsbGJxX25fczMyKSkpCmludDY0eDJfdCBfX2FybV92cWRtdWxsYnEoaW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtdWxsYnFfczE2KSkpCmludDMyeDRfdCBfX2FybV92cWRtdWxsYnFfczE2KGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtdWxsYnFfczE2KSkpCmludDMyeDRfdCBfX2FybV92cWRtdWxsYnEoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG11bGxicV9zMzIpKSkKaW50NjR4Ml90IF9fYXJtX3ZxZG11bGxicV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG11bGxicV9zMzIpKSkKaW50NjR4Ml90IF9fYXJtX3ZxZG11bGxicShpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbXVsbHRxX21fbl9zMTYpKSkKaW50MzJ4NF90IF9fYXJtX3ZxZG11bGx0cV9tX25fczE2KGludDMyeDRfdCwgaW50MTZ4OF90LCBpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG11bGx0cV9tX25fczE2KSkpCmludDMyeDRfdCBfX2FybV92cWRtdWxsdHFfbShpbnQzMng0X3QsIGludDE2eDhfdCwgaW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtdWxsdHFfbV9uX3MzMikpKQppbnQ2NHgyX3QgX19hcm1fdnFkbXVsbHRxX21fbl9zMzIoaW50NjR4Ml90LCBpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbXVsbHRxX21fbl9zMzIpKSkKaW50NjR4Ml90IF9fYXJtX3ZxZG11bGx0cV9tKGludDY0eDJfdCwgaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG11bGx0cV9tX3MxNikpKQppbnQzMng0X3QgX19hcm1fdnFkbXVsbHRxX21fczE2KGludDMyeDRfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbXVsbHRxX21fczE2KSkpCmludDMyeDRfdCBfX2FybV92cWRtdWxsdHFfbShpbnQzMng0X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG11bGx0cV9tX3MzMikpKQppbnQ2NHgyX3QgX19hcm1fdnFkbXVsbHRxX21fczMyKGludDY0eDJfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbXVsbHRxX21fczMyKSkpCmludDY0eDJfdCBfX2FybV92cWRtdWxsdHFfbShpbnQ2NHgyX3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG11bGx0cV9uX3MxNikpKQppbnQzMng0X3QgX19hcm1fdnFkbXVsbHRxX25fczE2KGludDE2eDhfdCwgaW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbXVsbHRxX25fczE2KSkpCmludDMyeDRfdCBfX2FybV92cWRtdWxsdHEoaW50MTZ4OF90LCBpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtdWxsdHFfbl9zMzIpKSkKaW50NjR4Ml90IF9fYXJtX3ZxZG11bGx0cV9uX3MzMihpbnQzMng0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG11bGx0cV9uX3MzMikpKQppbnQ2NHgyX3QgX19hcm1fdnFkbXVsbHRxKGludDMyeDRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbXVsbHRxX3MxNikpKQppbnQzMng0X3QgX19hcm1fdnFkbXVsbHRxX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbXVsbHRxX3MxNikpKQppbnQzMng0X3QgX19hcm1fdnFkbXVsbHRxKGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtdWxsdHFfczMyKSkpCmludDY0eDJfdCBfX2FybV92cWRtdWxsdHFfczMyKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtdWxsdHFfczMyKSkpCmludDY0eDJfdCBfX2FybV92cWRtdWxsdHEoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxbW92bmJxX21fczE2KSkpCmludDh4MTZfdCBfX2FybV92cW1vdm5icV9tX3MxNihpbnQ4eDE2X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cW1vdm5icV9tX3MxNikpKQppbnQ4eDE2X3QgX19hcm1fdnFtb3ZuYnFfbShpbnQ4eDE2X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cW1vdm5icV9tX3MzMikpKQppbnQxNng4X3QgX19hcm1fdnFtb3ZuYnFfbV9zMzIoaW50MTZ4OF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFtb3ZuYnFfbV9zMzIpKSkKaW50MTZ4OF90IF9fYXJtX3ZxbW92bmJxX20oaW50MTZ4OF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFtb3ZuYnFfbV91MTYpKSkKdWludDh4MTZfdCBfX2FybV92cW1vdm5icV9tX3UxNih1aW50OHgxNl90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxbW92bmJxX21fdTE2KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnFtb3ZuYnFfbSh1aW50OHgxNl90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxbW92bmJxX21fdTMyKSkpCnVpbnQxNng4X3QgX19hcm1fdnFtb3ZuYnFfbV91MzIodWludDE2eDhfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cW1vdm5icV9tX3UzMikpKQp1aW50MTZ4OF90IF9fYXJtX3ZxbW92bmJxX20odWludDE2eDhfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cW1vdm5icV9zMTYpKSkKaW50OHgxNl90IF9fYXJtX3ZxbW92bmJxX3MxNihpbnQ4eDE2X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFtb3ZuYnFfczE2KSkpCmludDh4MTZfdCBfX2FybV92cW1vdm5icShpbnQ4eDE2X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFtb3ZuYnFfczMyKSkpCmludDE2eDhfdCBfX2FybV92cW1vdm5icV9zMzIoaW50MTZ4OF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxbW92bmJxX3MzMikpKQppbnQxNng4X3QgX19hcm1fdnFtb3ZuYnEoaW50MTZ4OF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxbW92bmJxX3UxNikpKQp1aW50OHgxNl90IF9fYXJtX3ZxbW92bmJxX3UxNih1aW50OHgxNl90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cW1vdm5icV91MTYpKSkKdWludDh4MTZfdCBfX2FybV92cW1vdm5icSh1aW50OHgxNl90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cW1vdm5icV91MzIpKSkKdWludDE2eDhfdCBfX2FybV92cW1vdm5icV91MzIodWludDE2eDhfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFtb3ZuYnFfdTMyKSkpCnVpbnQxNng4X3QgX19hcm1fdnFtb3ZuYnEodWludDE2eDhfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFtb3ZudHFfbV9zMTYpKSkKaW50OHgxNl90IF9fYXJtX3ZxbW92bnRxX21fczE2KGludDh4MTZfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxbW92bnRxX21fczE2KSkpCmludDh4MTZfdCBfX2FybV92cW1vdm50cV9tKGludDh4MTZfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxbW92bnRxX21fczMyKSkpCmludDE2eDhfdCBfX2FybV92cW1vdm50cV9tX3MzMihpbnQxNng4X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cW1vdm50cV9tX3MzMikpKQppbnQxNng4X3QgX19hcm1fdnFtb3ZudHFfbShpbnQxNng4X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cW1vdm50cV9tX3UxNikpKQp1aW50OHgxNl90IF9fYXJtX3ZxbW92bnRxX21fdTE2KHVpbnQ4eDE2X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFtb3ZudHFfbV91MTYpKSkKdWludDh4MTZfdCBfX2FybV92cW1vdm50cV9tKHVpbnQ4eDE2X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFtb3ZudHFfbV91MzIpKSkKdWludDE2eDhfdCBfX2FybV92cW1vdm50cV9tX3UzMih1aW50MTZ4OF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxbW92bnRxX21fdTMyKSkpCnVpbnQxNng4X3QgX19hcm1fdnFtb3ZudHFfbSh1aW50MTZ4OF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxbW92bnRxX3MxNikpKQppbnQ4eDE2X3QgX19hcm1fdnFtb3ZudHFfczE2KGludDh4MTZfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cW1vdm50cV9zMTYpKSkKaW50OHgxNl90IF9fYXJtX3ZxbW92bnRxKGludDh4MTZfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cW1vdm50cV9zMzIpKSkKaW50MTZ4OF90IF9fYXJtX3ZxbW92bnRxX3MzMihpbnQxNng4X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFtb3ZudHFfczMyKSkpCmludDE2eDhfdCBfX2FybV92cW1vdm50cShpbnQxNng4X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFtb3ZudHFfdTE2KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnFtb3ZudHFfdTE2KHVpbnQ4eDE2X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxbW92bnRxX3UxNikpKQp1aW50OHgxNl90IF9fYXJtX3ZxbW92bnRxKHVpbnQ4eDE2X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxbW92bnRxX3UzMikpKQp1aW50MTZ4OF90IF9fYXJtX3ZxbW92bnRxX3UzMih1aW50MTZ4OF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cW1vdm50cV91MzIpKSkKdWludDE2eDhfdCBfX2FybV92cW1vdm50cSh1aW50MTZ4OF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cW1vdnVuYnFfbV9zMTYpKSkKdWludDh4MTZfdCBfX2FybV92cW1vdnVuYnFfbV9zMTYodWludDh4MTZfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxbW92dW5icV9tX3MxNikpKQp1aW50OHgxNl90IF9fYXJtX3ZxbW92dW5icV9tKHVpbnQ4eDE2X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cW1vdnVuYnFfbV9zMzIpKSkKdWludDE2eDhfdCBfX2FybV92cW1vdnVuYnFfbV9zMzIodWludDE2eDhfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxbW92dW5icV9tX3MzMikpKQp1aW50MTZ4OF90IF9fYXJtX3ZxbW92dW5icV9tKHVpbnQxNng4X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cW1vdnVuYnFfczE2KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnFtb3Z1bmJxX3MxNih1aW50OHgxNl90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxbW92dW5icV9zMTYpKSkKdWludDh4MTZfdCBfX2FybV92cW1vdnVuYnEodWludDh4MTZfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cW1vdnVuYnFfczMyKSkpCnVpbnQxNng4X3QgX19hcm1fdnFtb3Z1bmJxX3MzMih1aW50MTZ4OF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxbW92dW5icV9zMzIpKSkKdWludDE2eDhfdCBfX2FybV92cW1vdnVuYnEodWludDE2eDhfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cW1vdnVudHFfbV9zMTYpKSkKdWludDh4MTZfdCBfX2FybV92cW1vdnVudHFfbV9zMTYodWludDh4MTZfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxbW92dW50cV9tX3MxNikpKQp1aW50OHgxNl90IF9fYXJtX3ZxbW92dW50cV9tKHVpbnQ4eDE2X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cW1vdnVudHFfbV9zMzIpKSkKdWludDE2eDhfdCBfX2FybV92cW1vdnVudHFfbV9zMzIodWludDE2eDhfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxbW92dW50cV9tX3MzMikpKQp1aW50MTZ4OF90IF9fYXJtX3ZxbW92dW50cV9tKHVpbnQxNng4X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cW1vdnVudHFfczE2KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnFtb3Z1bnRxX3MxNih1aW50OHgxNl90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxbW92dW50cV9zMTYpKSkKdWludDh4MTZfdCBfX2FybV92cW1vdnVudHEodWludDh4MTZfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cW1vdnVudHFfczMyKSkpCnVpbnQxNng4X3QgX19hcm1fdnFtb3Z1bnRxX3MzMih1aW50MTZ4OF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxbW92dW50cV9zMzIpKSkKdWludDE2eDhfdCBfX2FybV92cW1vdnVudHEodWludDE2eDhfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cW5lZ3FfbV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZxbmVncV9tX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cW5lZ3FfbV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZxbmVncV9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxbmVncV9tX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnFuZWdxX21fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxbmVncV9tX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnFuZWdxX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFuZWdxX21fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZxbmVncV9tX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxbmVncV9tX3M4KSkpCmludDh4MTZfdCBfX2FybV92cW5lZ3FfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cW5lZ3FfczE2KSkpCmludDE2eDhfdCBfX2FybV92cW5lZ3FfczE2KGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFuZWdxX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnFuZWdxKGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFuZWdxX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnFuZWdxX3MzMihpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxbmVncV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZxbmVncShpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxbmVncV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnFuZWdxX3M4KGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFuZWdxX3M4KSkpCmludDh4MTZfdCBfX2FybV92cW5lZ3EoaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbWxhZGhxX21fczE2KSkpCmludDE2eDhfdCBfX2FybV92cXJkbWxhZGhxX21fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG1sYWRocV9tX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnFyZG1sYWRocV9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG1sYWRocV9tX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnFyZG1sYWRocV9tX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbGFkaHFfbV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZxcmRtbGFkaHFfbShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbGFkaHFfbV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnFyZG1sYWRocV9tX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG1sYWRocV9tX3M4KSkpCmludDh4MTZfdCBfX2FybV92cXJkbWxhZGhxX20oaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbWxhZGhxX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnFyZG1sYWRocV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG1sYWRocV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZxcmRtbGFkaHEoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG1sYWRocV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZxcmRtbGFkaHFfczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbGFkaHFfczMyKSkpCmludDMyeDRfdCBfX2FybV92cXJkbWxhZGhxKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbGFkaHFfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZxcmRtbGFkaHFfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG1sYWRocV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnFyZG1sYWRocShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbWxhZGh4cV9tX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnFyZG1sYWRoeHFfbV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbWxhZGh4cV9tX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnFyZG1sYWRoeHFfbShpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbGFkaHhxX21fczMyKSkpCmludDMyeDRfdCBfX2FybV92cXJkbWxhZGh4cV9tX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbGFkaHhxX21fczMyKSkpCmludDMyeDRfdCBfX2FybV92cXJkbWxhZGh4cV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG1sYWRoeHFfbV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnFyZG1sYWRoeHFfbV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbGFkaHhxX21fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZxcmRtbGFkaHhxX20oaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbWxhZGh4cV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZxcmRtbGFkaHhxX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbWxhZGh4cV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZxcmRtbGFkaHhxKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbGFkaHhxX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnFyZG1sYWRoeHFfczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbGFkaHhxX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnFyZG1sYWRoeHEoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG1sYWRoeHFfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZxcmRtbGFkaHhxX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbGFkaHhxX3M4KSkpCmludDh4MTZfdCBfX2FybV92cXJkbWxhZGh4cShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbWxhaHFfbV9uX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnFyZG1sYWhxX21fbl9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG1sYWhxX21fbl9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZxcmRtbGFocV9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbGFocV9tX25fczMyKSkpCmludDMyeDRfdCBfX2FybV92cXJkbWxhaHFfbV9uX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbWxhaHFfbV9uX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnFyZG1sYWhxX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG1sYWhxX21fbl9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnFyZG1sYWhxX21fbl9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbGFocV9tX25fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZxcmRtbGFocV9tKGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG1sYWhxX25fczE2KSkpCmludDE2eDhfdCBfX2FybV92cXJkbWxhaHFfbl9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbGFocV9uX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnFyZG1sYWhxKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbWxhaHFfbl9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZxcmRtbGFocV9uX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG1sYWhxX25fczMyKSkpCmludDMyeDRfdCBfX2FybV92cXJkbWxhaHEoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbGFocV9uX3M4KSkpCmludDh4MTZfdCBfX2FybV92cXJkbWxhaHFfbl9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbWxhaHFfbl9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnFyZG1sYWhxKGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbGFzaHFfbV9uX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnFyZG1sYXNocV9tX25fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbGFzaHFfbV9uX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnFyZG1sYXNocV9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbGFzaHFfbV9uX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnFyZG1sYXNocV9tX25fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbGFzaHFfbV9uX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnFyZG1sYXNocV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbGFzaHFfbV9uX3M4KSkpCmludDh4MTZfdCBfX2FybV92cXJkbWxhc2hxX21fbl9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbGFzaHFfbV9uX3M4KSkpCmludDh4MTZfdCBfX2FybV92cXJkbWxhc2hxX20oaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbWxhc2hxX25fczE2KSkpCmludDE2eDhfdCBfX2FybV92cXJkbWxhc2hxX25fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbWxhc2hxX25fczE2KSkpCmludDE2eDhfdCBfX2FybV92cXJkbWxhc2hxKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbWxhc2hxX25fczMyKSkpCmludDMyeDRfdCBfX2FybV92cXJkbWxhc2hxX25fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbWxhc2hxX25fczMyKSkpCmludDMyeDRfdCBfX2FybV92cXJkbWxhc2hxKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbWxhc2hxX25fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZxcmRtbGFzaHFfbl9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbWxhc2hxX25fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZxcmRtbGFzaHEoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG1sc2RocV9tX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnFyZG1sc2RocV9tX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbHNkaHFfbV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZxcmRtbHNkaHFfbShpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbHNkaHFfbV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZxcmRtbHNkaHFfbV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbWxzZGhxX21fczMyKSkpCmludDMyeDRfdCBfX2FybV92cXJkbWxzZGhxX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbWxzZGhxX21fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZxcmRtbHNkaHFfbV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbHNkaHFfbV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnFyZG1sc2RocV9tKGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG1sc2RocV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZxcmRtbHNkaHFfczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbHNkaHFfczE2KSkpCmludDE2eDhfdCBfX2FybV92cXJkbWxzZGhxKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbHNkaHFfczMyKSkpCmludDMyeDRfdCBfX2FybV92cXJkbWxzZGhxX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbWxzZGhxX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnFyZG1sc2RocShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbWxzZGhxX3M4KSkpCmludDh4MTZfdCBfX2FybV92cXJkbWxzZGhxX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbHNkaHFfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZxcmRtbHNkaHEoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG1sc2RoeHFfbV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZxcmRtbHNkaHhxX21fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG1sc2RoeHFfbV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZxcmRtbHNkaHhxX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbWxzZGh4cV9tX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnFyZG1sc2RoeHFfbV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbWxzZGh4cV9tX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnFyZG1sc2RoeHFfbShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbHNkaHhxX21fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZxcmRtbHNkaHhxX21fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbWxzZGh4cV9tX3M4KSkpCmludDh4MTZfdCBfX2FybV92cXJkbWxzZGh4cV9tKGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG1sc2RoeHFfczE2KSkpCmludDE2eDhfdCBfX2FybV92cXJkbWxzZGh4cV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG1sc2RoeHFfczE2KSkpCmludDE2eDhfdCBfX2FybV92cXJkbWxzZGh4cShpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbWxzZGh4cV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZxcmRtbHNkaHhxX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbWxzZGh4cV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZxcmRtbHNkaHhxKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbHNkaHhxX3M4KSkpCmludDh4MTZfdCBfX2FybV92cXJkbWxzZGh4cV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbWxzZGh4cV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnFyZG1sc2RoeHEoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG11bGhxX21fbl9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZxcmRtdWxocV9tX25fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtdWxocV9tX25fczE2KSkpCmludDE2eDhfdCBfX2FybV92cXJkbXVsaHFfbShpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbXVsaHFfbV9uX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnFyZG11bGhxX21fbl9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG11bGhxX21fbl9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZxcmRtdWxocV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtdWxocV9tX25fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZxcmRtdWxocV9tX25fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbXVsaHFfbV9uX3M4KSkpCmludDh4MTZfdCBfX2FybV92cXJkbXVsaHFfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtdWxocV9tX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnFyZG11bGhxX21fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG11bGhxX21fczE2KSkpCmludDE2eDhfdCBfX2FybV92cXJkbXVsaHFfbShpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtdWxocV9tX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnFyZG11bGhxX21fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG11bGhxX21fczMyKSkpCmludDMyeDRfdCBfX2FybV92cXJkbXVsaHFfbShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtdWxocV9tX3M4KSkpCmludDh4MTZfdCBfX2FybV92cXJkbXVsaHFfbV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtdWxocV9tX3M4KSkpCmludDh4MTZfdCBfX2FybV92cXJkbXVsaHFfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtdWxocV9uX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnFyZG11bGhxX25fczE2KGludDE2eDhfdCwgaW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG11bGhxX25fczE2KSkpCmludDE2eDhfdCBfX2FybV92cXJkbXVsaHEoaW50MTZ4OF90LCBpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbXVsaHFfbl9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZxcmRtdWxocV9uX3MzMihpbnQzMng0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtdWxocV9uX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnFyZG11bGhxKGludDMyeDRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG11bGhxX25fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZxcmRtdWxocV9uX3M4KGludDh4MTZfdCwgaW50OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbXVsaHFfbl9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnFyZG11bGhxKGludDh4MTZfdCwgaW50OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbXVsaHFfczE2KSkpCmludDE2eDhfdCBfX2FybV92cXJkbXVsaHFfczE2KGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbXVsaHFfczE2KSkpCmludDE2eDhfdCBfX2FybV92cXJkbXVsaHEoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtdWxocV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZxcmRtdWxocV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtdWxocV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZxcmRtdWxocShpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG11bGhxX3M4KSkpCmludDh4MTZfdCBfX2FybV92cXJkbXVsaHFfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtdWxocV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnFyZG11bGhxKGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaGxxX21fbl9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZxcnNobHFfbV9uX3MxNihpbnQxNng4X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyc2hscV9tX25fczE2KSkpCmludDE2eDhfdCBfX2FybV92cXJzaGxxX21fbihpbnQxNng4X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyc2hscV9tX25fczMyKSkpCmludDMyeDRfdCBfX2FybV92cXJzaGxxX21fbl9zMzIoaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNobHFfbV9uX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnFyc2hscV9tX24oaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNobHFfbV9uX3M4KSkpCmludDh4MTZfdCBfX2FybV92cXJzaGxxX21fbl9zOChpbnQ4eDE2X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyc2hscV9tX25fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZxcnNobHFfbV9uKGludDh4MTZfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaGxxX21fbl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92cXJzaGxxX21fbl91MTYodWludDE2eDhfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaGxxX21fbl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92cXJzaGxxX21fbih1aW50MTZ4OF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNobHFfbV9uX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZxcnNobHFfbV9uX3UzMih1aW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNobHFfbV9uX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZxcnNobHFfbV9uKHVpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyc2hscV9tX25fdTgpKSkKdWludDh4MTZfdCBfX2FybV92cXJzaGxxX21fbl91OCh1aW50OHgxNl90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNobHFfbV9uX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnFyc2hscV9tX24odWludDh4MTZfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaGxxX21fczE2KSkpCmludDE2eDhfdCBfX2FybV92cXJzaGxxX21fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyc2hscV9tX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnFyc2hscV9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyc2hscV9tX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnFyc2hscV9tX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNobHFfbV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZxcnNobHFfbShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNobHFfbV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnFyc2hscV9tX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyc2hscV9tX3M4KSkpCmludDh4MTZfdCBfX2FybV92cXJzaGxxX20oaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaGxxX21fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnFyc2hscV9tX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyc2hscV9tX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZxcnNobHFfbSh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyc2hscV9tX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZxcnNobHFfbV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNobHFfbV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92cXJzaGxxX20odWludDMyeDRfdCwgdWludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNobHFfbV91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZxcnNobHFfbV91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyc2hscV9tX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnFyc2hscV9tKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaGxxX25fczE2KSkpCmludDE2eDhfdCBfX2FybV92cXJzaGxxX25fczE2KGludDE2eDhfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyc2hscV9uX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnFyc2hscShpbnQxNng4X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNobHFfbl9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZxcnNobHFfbl9zMzIoaW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaGxxX25fczMyKSkpCmludDMyeDRfdCBfX2FybV92cXJzaGxxKGludDMyeDRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyc2hscV9uX3M4KSkpCmludDh4MTZfdCBfX2FybV92cXJzaGxxX25fczgoaW50OHgxNl90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaGxxX25fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZxcnNobHEoaW50OHgxNl90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaGxxX25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnFyc2hscV9uX3UxNih1aW50MTZ4OF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaGxxX25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnFyc2hscSh1aW50MTZ4OF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaGxxX25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdnFyc2hscV9uX3UzMih1aW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaGxxX25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdnFyc2hscSh1aW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaGxxX25fdTgpKSkKdWludDh4MTZfdCBfX2FybV92cXJzaGxxX25fdTgodWludDh4MTZfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyc2hscV9uX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnFyc2hscSh1aW50OHgxNl90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaGxxX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnFyc2hscV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNobHFfczE2KSkpCmludDE2eDhfdCBfX2FybV92cXJzaGxxKGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaGxxX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnFyc2hscV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNobHFfczMyKSkpCmludDMyeDRfdCBfX2FybV92cXJzaGxxKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaGxxX3M4KSkpCmludDh4MTZfdCBfX2FybV92cXJzaGxxX3M4KGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaGxxX3M4KSkpCmludDh4MTZfdCBfX2FybV92cXJzaGxxKGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaGxxX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZxcnNobHFfdTE2KHVpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyc2hscV91MTYpKSkKdWludDE2eDhfdCBfX2FybV92cXJzaGxxKHVpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyc2hscV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92cXJzaGxxX3UzMih1aW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNobHFfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdnFyc2hscSh1aW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNobHFfdTgpKSkKdWludDh4MTZfdCBfX2FybV92cXJzaGxxX3U4KHVpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyc2hscV91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZxcnNobHEodWludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaHJuYnFfbV9uX3MxNikpKQppbnQ4eDE2X3QgX19hcm1fdnFyc2hybmJxX21fbl9zMTYoaW50OHgxNl90LCBpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaHJuYnFfbV9uX3MxNikpKQppbnQ4eDE2X3QgX19hcm1fdnFyc2hybmJxX20oaW50OHgxNl90LCBpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaHJuYnFfbV9uX3MzMikpKQppbnQxNng4X3QgX19hcm1fdnFyc2hybmJxX21fbl9zMzIoaW50MTZ4OF90LCBpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaHJuYnFfbV9uX3MzMikpKQppbnQxNng4X3QgX19hcm1fdnFyc2hybmJxX20oaW50MTZ4OF90LCBpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaHJuYnFfbV9uX3UxNikpKQp1aW50OHgxNl90IF9fYXJtX3ZxcnNocm5icV9tX25fdTE2KHVpbnQ4eDE2X3QsIHVpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaHJuYnFfbV9uX3UxNikpKQp1aW50OHgxNl90IF9fYXJtX3ZxcnNocm5icV9tKHVpbnQ4eDE2X3QsIHVpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaHJuYnFfbV9uX3UzMikpKQp1aW50MTZ4OF90IF9fYXJtX3ZxcnNocm5icV9tX25fdTMyKHVpbnQxNng4X3QsIHVpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaHJuYnFfbV9uX3UzMikpKQp1aW50MTZ4OF90IF9fYXJtX3ZxcnNocm5icV9tKHVpbnQxNng4X3QsIHVpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaHJuYnFfbl9zMTYpKSkKaW50OHgxNl90IF9fYXJtX3ZxcnNocm5icV9uX3MxNihpbnQ4eDE2X3QsIGludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaHJuYnFfbl9zMTYpKSkKaW50OHgxNl90IF9fYXJtX3ZxcnNocm5icShpbnQ4eDE2X3QsIGludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaHJuYnFfbl9zMzIpKSkKaW50MTZ4OF90IF9fYXJtX3ZxcnNocm5icV9uX3MzMihpbnQxNng4X3QsIGludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaHJuYnFfbl9zMzIpKSkKaW50MTZ4OF90IF9fYXJtX3ZxcnNocm5icShpbnQxNng4X3QsIGludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaHJuYnFfbl91MTYpKSkKdWludDh4MTZfdCBfX2FybV92cXJzaHJuYnFfbl91MTYodWludDh4MTZfdCwgdWludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaHJuYnFfbl91MTYpKSkKdWludDh4MTZfdCBfX2FybV92cXJzaHJuYnEodWludDh4MTZfdCwgdWludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaHJuYnFfbl91MzIpKSkKdWludDE2eDhfdCBfX2FybV92cXJzaHJuYnFfbl91MzIodWludDE2eDhfdCwgdWludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaHJuYnFfbl91MzIpKSkKdWludDE2eDhfdCBfX2FybV92cXJzaHJuYnEodWludDE2eDhfdCwgdWludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaHJudHFfbV9uX3MxNikpKQppbnQ4eDE2X3QgX19hcm1fdnFyc2hybnRxX21fbl9zMTYoaW50OHgxNl90LCBpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaHJudHFfbV9uX3MxNikpKQppbnQ4eDE2X3QgX19hcm1fdnFyc2hybnRxX20oaW50OHgxNl90LCBpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaHJudHFfbV9uX3MzMikpKQppbnQxNng4X3QgX19hcm1fdnFyc2hybnRxX21fbl9zMzIoaW50MTZ4OF90LCBpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaHJudHFfbV9uX3MzMikpKQppbnQxNng4X3QgX19hcm1fdnFyc2hybnRxX20oaW50MTZ4OF90LCBpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaHJudHFfbV9uX3UxNikpKQp1aW50OHgxNl90IF9fYXJtX3ZxcnNocm50cV9tX25fdTE2KHVpbnQ4eDE2X3QsIHVpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaHJudHFfbV9uX3UxNikpKQp1aW50OHgxNl90IF9fYXJtX3ZxcnNocm50cV9tKHVpbnQ4eDE2X3QsIHVpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaHJudHFfbV9uX3UzMikpKQp1aW50MTZ4OF90IF9fYXJtX3ZxcnNocm50cV9tX25fdTMyKHVpbnQxNng4X3QsIHVpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaHJudHFfbV9uX3UzMikpKQp1aW50MTZ4OF90IF9fYXJtX3ZxcnNocm50cV9tKHVpbnQxNng4X3QsIHVpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaHJudHFfbl9zMTYpKSkKaW50OHgxNl90IF9fYXJtX3ZxcnNocm50cV9uX3MxNihpbnQ4eDE2X3QsIGludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaHJudHFfbl9zMTYpKSkKaW50OHgxNl90IF9fYXJtX3ZxcnNocm50cShpbnQ4eDE2X3QsIGludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaHJudHFfbl9zMzIpKSkKaW50MTZ4OF90IF9fYXJtX3ZxcnNocm50cV9uX3MzMihpbnQxNng4X3QsIGludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaHJudHFfbl9zMzIpKSkKaW50MTZ4OF90IF9fYXJtX3ZxcnNocm50cShpbnQxNng4X3QsIGludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaHJudHFfbl91MTYpKSkKdWludDh4MTZfdCBfX2FybV92cXJzaHJudHFfbl91MTYodWludDh4MTZfdCwgdWludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaHJudHFfbl91MTYpKSkKdWludDh4MTZfdCBfX2FybV92cXJzaHJudHEodWludDh4MTZfdCwgdWludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaHJudHFfbl91MzIpKSkKdWludDE2eDhfdCBfX2FybV92cXJzaHJudHFfbl91MzIodWludDE2eDhfdCwgdWludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaHJudHFfbl91MzIpKSkKdWludDE2eDhfdCBfX2FybV92cXJzaHJudHEodWludDE2eDhfdCwgdWludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaHJ1bmJxX21fbl9zMTYpKSkKdWludDh4MTZfdCBfX2FybV92cXJzaHJ1bmJxX21fbl9zMTYodWludDh4MTZfdCwgaW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyc2hydW5icV9tX25fczE2KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnFyc2hydW5icV9tKHVpbnQ4eDE2X3QsIGludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNocnVuYnFfbV9uX3MzMikpKQp1aW50MTZ4OF90IF9fYXJtX3ZxcnNocnVuYnFfbV9uX3MzMih1aW50MTZ4OF90LCBpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaHJ1bmJxX21fbl9zMzIpKSkKdWludDE2eDhfdCBfX2FybV92cXJzaHJ1bmJxX20odWludDE2eDhfdCwgaW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyc2hydW5icV9uX3MxNikpKQp1aW50OHgxNl90IF9fYXJtX3ZxcnNocnVuYnFfbl9zMTYodWludDh4MTZfdCwgaW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNocnVuYnFfbl9zMTYpKSkKdWludDh4MTZfdCBfX2FybV92cXJzaHJ1bmJxKHVpbnQ4eDE2X3QsIGludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaHJ1bmJxX25fczMyKSkpCnVpbnQxNng4X3QgX19hcm1fdnFyc2hydW5icV9uX3MzMih1aW50MTZ4OF90LCBpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyc2hydW5icV9uX3MzMikpKQp1aW50MTZ4OF90IF9fYXJtX3ZxcnNocnVuYnEodWludDE2eDhfdCwgaW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNocnVudHFfbV9uX3MxNikpKQp1aW50OHgxNl90IF9fYXJtX3ZxcnNocnVudHFfbV9uX3MxNih1aW50OHgxNl90LCBpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaHJ1bnRxX21fbl9zMTYpKSkKdWludDh4MTZfdCBfX2FybV92cXJzaHJ1bnRxX20odWludDh4MTZfdCwgaW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyc2hydW50cV9tX25fczMyKSkpCnVpbnQxNng4X3QgX19hcm1fdnFyc2hydW50cV9tX25fczMyKHVpbnQxNng4X3QsIGludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNocnVudHFfbV9uX3MzMikpKQp1aW50MTZ4OF90IF9fYXJtX3ZxcnNocnVudHFfbSh1aW50MTZ4OF90LCBpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaHJ1bnRxX25fczE2KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnFyc2hydW50cV9uX3MxNih1aW50OHgxNl90LCBpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyc2hydW50cV9uX3MxNikpKQp1aW50OHgxNl90IF9fYXJtX3ZxcnNocnVudHEodWludDh4MTZfdCwgaW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNocnVudHFfbl9zMzIpKSkKdWludDE2eDhfdCBfX2FybV92cXJzaHJ1bnRxX25fczMyKHVpbnQxNng4X3QsIGludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaHJ1bnRxX25fczMyKSkpCnVpbnQxNng4X3QgX19hcm1fdnFyc2hydW50cSh1aW50MTZ4OF90LCBpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGxxX21fbl9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3Zxc2hscV9tX25fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGxxX21fbl9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3Zxc2hscV9tX24oaW50MTZ4OF90LCBpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfbV9uX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnFzaGxxX21fbl9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfbV9uX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnFzaGxxX21fbihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hscV9tX25fczgpKSkKaW50OHgxNl90IF9fYXJtX3Zxc2hscV9tX25fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfbV9uX3M4KSkpCmludDh4MTZfdCBfX2FybV92cXNobHFfbV9uKGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGxxX21fbl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92cXNobHFfbV9uX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGxxX21fbl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92cXNobHFfbV9uKHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfbV9uX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3Zxc2hscV9tX25fdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfbV9uX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3Zxc2hscV9tX24odWludDMyeDRfdCwgdWludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hscV9tX25fdTgpKSkKdWludDh4MTZfdCBfX2FybV92cXNobHFfbV9uX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfbV9uX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnFzaGxxX21fbih1aW50OHgxNl90LCB1aW50OHgxNl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGxxX21fcl9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3Zxc2hscV9tX3JfczE2KGludDE2eDhfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfbV9yX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnFzaGxxX21fcihpbnQxNng4X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGxxX21fcl9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3Zxc2hscV9tX3JfczMyKGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfbV9yX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnFzaGxxX21fcihpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGxxX21fcl9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnFzaGxxX21fcl9zOChpbnQ4eDE2X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGxxX21fcl9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnFzaGxxX21fcihpbnQ4eDE2X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGxxX21fcl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92cXNobHFfbV9yX3UxNih1aW50MTZ4OF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hscV9tX3JfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnFzaGxxX21fcih1aW50MTZ4OF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hscV9tX3JfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdnFzaGxxX21fcl91MzIodWludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfbV9yX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3Zxc2hscV9tX3IodWludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfbV9yX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnFzaGxxX21fcl91OCh1aW50OHgxNl90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hscV9tX3JfdTgpKSkKdWludDh4MTZfdCBfX2FybV92cXNobHFfbV9yKHVpbnQ4eDE2X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGxxX21fczE2KSkpCmludDE2eDhfdCBfX2FybV92cXNobHFfbV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfbV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3Zxc2hscV9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGxxX21fczMyKSkpCmludDMyeDRfdCBfX2FybV92cXNobHFfbV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfbV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3Zxc2hscV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGxxX21fczgpKSkKaW50OHgxNl90IF9fYXJtX3Zxc2hscV9tX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGxxX21fczgpKSkKaW50OHgxNl90IF9fYXJtX3Zxc2hscV9tKGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGxxX21fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnFzaGxxX21fdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfbV91MTYpKSkKdWludDE2eDhfdCBfX2FybV92cXNobHFfbSh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGxxX21fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdnFzaGxxX21fdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfbV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92cXNobHFfbSh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGxxX21fdTgpKSkKdWludDh4MTZfdCBfX2FybV92cXNobHFfbV91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGxxX21fdTgpKSkKdWludDh4MTZfdCBfX2FybV92cXNobHFfbSh1aW50OHgxNl90LCB1aW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGxxX25fczE2KSkpCmludDE2eDhfdCBfX2FybV92cXNobHFfbl9zMTYoaW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hscV9uX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnFzaGxxX24oaW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hscV9uX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnFzaGxxX25fczMyKGludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfbl9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3Zxc2hscV9uKGludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfbl9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnFzaGxxX25fczgoaW50OHgxNl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hscV9uX3M4KSkpCmludDh4MTZfdCBfX2FybV92cXNobHFfbihpbnQ4eDE2X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGxxX25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnFzaGxxX25fdTE2KHVpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGxxX25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnFzaGxxX24odWludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfbl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92cXNobHFfbl91MzIodWludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfbl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92cXNobHFfbih1aW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hscV9uX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnFzaGxxX25fdTgodWludDh4MTZfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfbl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3Zxc2hscV9uKHVpbnQ4eDE2X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGxxX3JfczE2KSkpCmludDE2eDhfdCBfX2FybV92cXNobHFfcl9zMTYoaW50MTZ4OF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfcl9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3Zxc2hscV9yKGludDE2eDhfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGxxX3JfczMyKSkpCmludDMyeDRfdCBfX2FybV92cXNobHFfcl9zMzIoaW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfcl9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3Zxc2hscV9yKGludDMyeDRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGxxX3JfczgpKSkKaW50OHgxNl90IF9fYXJtX3Zxc2hscV9yX3M4KGludDh4MTZfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGxxX3JfczgpKSkKaW50OHgxNl90IF9fYXJtX3Zxc2hscV9yKGludDh4MTZfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGxxX3JfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnFzaGxxX3JfdTE2KHVpbnQxNng4X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hscV9yX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3Zxc2hscV9yKHVpbnQxNng4X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hscV9yX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3Zxc2hscV9yX3UzMih1aW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfcl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92cXNobHFfcih1aW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfcl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3Zxc2hscV9yX3U4KHVpbnQ4eDE2X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hscV9yX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnFzaGxxX3IodWludDh4MTZfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGxxX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnFzaGxxX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGxxX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnFzaGxxKGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfczMyKSkpCmludDMyeDRfdCBfX2FybV92cXNobHFfczMyKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfczMyKSkpCmludDMyeDRfdCBfX2FybV92cXNobHEoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hscV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnFzaGxxX3M4KGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfczgpKSkKaW50OHgxNl90IF9fYXJtX3Zxc2hscShpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGxxX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3Zxc2hscV91MTYodWludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnFzaGxxKHVpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGxxX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3Zxc2hscV91MzIodWludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdnFzaGxxKHVpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGxxX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnFzaGxxX3U4KHVpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGxxX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnFzaGxxKHVpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGx1cV9tX25fczE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnFzaGx1cV9tX25fczE2KHVpbnQxNng4X3QsIGludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hsdXFfbV9uX3MxNikpKQp1aW50MTZ4OF90IF9fYXJtX3Zxc2hsdXFfbSh1aW50MTZ4OF90LCBpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHVxX21fbl9zMzIpKSkKdWludDMyeDRfdCBfX2FybV92cXNobHVxX21fbl9zMzIodWludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGx1cV9tX25fczMyKSkpCnVpbnQzMng0X3QgX19hcm1fdnFzaGx1cV9tKHVpbnQzMng0X3QsIGludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hsdXFfbV9uX3M4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnFzaGx1cV9tX25fczgodWludDh4MTZfdCwgaW50OHgxNl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGx1cV9tX25fczgpKSkKdWludDh4MTZfdCBfX2FybV92cXNobHVxX20odWludDh4MTZfdCwgaW50OHgxNl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGx1cV9uX3MxNikpKQp1aW50MTZ4OF90IF9fYXJtX3Zxc2hsdXFfbl9zMTYoaW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hsdXFfbl9zMTYpKSkKdWludDE2eDhfdCBfX2FybV92cXNobHVxKGludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHVxX25fczMyKSkpCnVpbnQzMng0X3QgX19hcm1fdnFzaGx1cV9uX3MzMihpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGx1cV9uX3MzMikpKQp1aW50MzJ4NF90IF9fYXJtX3Zxc2hsdXEoaW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hsdXFfbl9zOCkpKQp1aW50OHgxNl90IF9fYXJtX3Zxc2hsdXFfbl9zOChpbnQ4eDE2X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGx1cV9uX3M4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnFzaGx1cShpbnQ4eDE2X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaHJuYnFfbV9uX3MxNikpKQppbnQ4eDE2X3QgX19hcm1fdnFzaHJuYnFfbV9uX3MxNihpbnQ4eDE2X3QsIGludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hybmJxX21fbl9zMTYpKSkKaW50OHgxNl90IF9fYXJtX3Zxc2hybmJxX20oaW50OHgxNl90LCBpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNocm5icV9tX25fczMyKSkpCmludDE2eDhfdCBfX2FybV92cXNocm5icV9tX25fczMyKGludDE2eDhfdCwgaW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaHJuYnFfbV9uX3MzMikpKQppbnQxNng4X3QgX19hcm1fdnFzaHJuYnFfbShpbnQxNng4X3QsIGludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hybmJxX21fbl91MTYpKSkKdWludDh4MTZfdCBfX2FybV92cXNocm5icV9tX25fdTE2KHVpbnQ4eDE2X3QsIHVpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNocm5icV9tX25fdTE2KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnFzaHJuYnFfbSh1aW50OHgxNl90LCB1aW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaHJuYnFfbV9uX3UzMikpKQp1aW50MTZ4OF90IF9fYXJtX3Zxc2hybmJxX21fbl91MzIodWludDE2eDhfdCwgdWludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hybmJxX21fbl91MzIpKSkKdWludDE2eDhfdCBfX2FybV92cXNocm5icV9tKHVpbnQxNng4X3QsIHVpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNocm5icV9uX3MxNikpKQppbnQ4eDE2X3QgX19hcm1fdnFzaHJuYnFfbl9zMTYoaW50OHgxNl90LCBpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaHJuYnFfbl9zMTYpKSkKaW50OHgxNl90IF9fYXJtX3Zxc2hybmJxKGludDh4MTZfdCwgaW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hybmJxX25fczMyKSkpCmludDE2eDhfdCBfX2FybV92cXNocm5icV9uX3MzMihpbnQxNng4X3QsIGludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNocm5icV9uX3MzMikpKQppbnQxNng4X3QgX19hcm1fdnFzaHJuYnEoaW50MTZ4OF90LCBpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaHJuYnFfbl91MTYpKSkKdWludDh4MTZfdCBfX2FybV92cXNocm5icV9uX3UxNih1aW50OHgxNl90LCB1aW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hybmJxX25fdTE2KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnFzaHJuYnEodWludDh4MTZfdCwgdWludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNocm5icV9uX3UzMikpKQp1aW50MTZ4OF90IF9fYXJtX3Zxc2hybmJxX25fdTMyKHVpbnQxNng4X3QsIHVpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaHJuYnFfbl91MzIpKSkKdWludDE2eDhfdCBfX2FybV92cXNocm5icSh1aW50MTZ4OF90LCB1aW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hybnRxX21fbl9zMTYpKSkKaW50OHgxNl90IF9fYXJtX3Zxc2hybnRxX21fbl9zMTYoaW50OHgxNl90LCBpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNocm50cV9tX25fczE2KSkpCmludDh4MTZfdCBfX2FybV92cXNocm50cV9tKGludDh4MTZfdCwgaW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaHJudHFfbV9uX3MzMikpKQppbnQxNng4X3QgX19hcm1fdnFzaHJudHFfbV9uX3MzMihpbnQxNng4X3QsIGludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hybnRxX21fbl9zMzIpKSkKaW50MTZ4OF90IF9fYXJtX3Zxc2hybnRxX20oaW50MTZ4OF90LCBpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNocm50cV9tX25fdTE2KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnFzaHJudHFfbV9uX3UxNih1aW50OHgxNl90LCB1aW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaHJudHFfbV9uX3UxNikpKQp1aW50OHgxNl90IF9fYXJtX3Zxc2hybnRxX20odWludDh4MTZfdCwgdWludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hybnRxX21fbl91MzIpKSkKdWludDE2eDhfdCBfX2FybV92cXNocm50cV9tX25fdTMyKHVpbnQxNng4X3QsIHVpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNocm50cV9tX25fdTMyKSkpCnVpbnQxNng4X3QgX19hcm1fdnFzaHJudHFfbSh1aW50MTZ4OF90LCB1aW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaHJudHFfbl9zMTYpKSkKaW50OHgxNl90IF9fYXJtX3Zxc2hybnRxX25fczE2KGludDh4MTZfdCwgaW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hybnRxX25fczE2KSkpCmludDh4MTZfdCBfX2FybV92cXNocm50cShpbnQ4eDE2X3QsIGludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNocm50cV9uX3MzMikpKQppbnQxNng4X3QgX19hcm1fdnFzaHJudHFfbl9zMzIoaW50MTZ4OF90LCBpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaHJudHFfbl9zMzIpKSkKaW50MTZ4OF90IF9fYXJtX3Zxc2hybnRxKGludDE2eDhfdCwgaW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hybnRxX25fdTE2KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnFzaHJudHFfbl91MTYodWludDh4MTZfdCwgdWludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNocm50cV9uX3UxNikpKQp1aW50OHgxNl90IF9fYXJtX3Zxc2hybnRxKHVpbnQ4eDE2X3QsIHVpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaHJudHFfbl91MzIpKSkKdWludDE2eDhfdCBfX2FybV92cXNocm50cV9uX3UzMih1aW50MTZ4OF90LCB1aW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hybnRxX25fdTMyKSkpCnVpbnQxNng4X3QgX19hcm1fdnFzaHJudHEodWludDE2eDhfdCwgdWludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNocnVuYnFfbV9uX3MxNikpKQp1aW50OHgxNl90IF9fYXJtX3Zxc2hydW5icV9tX25fczE2KHVpbnQ4eDE2X3QsIGludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hydW5icV9tX25fczE2KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnFzaHJ1bmJxX20odWludDh4MTZfdCwgaW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaHJ1bmJxX21fbl9zMzIpKSkKdWludDE2eDhfdCBfX2FybV92cXNocnVuYnFfbV9uX3MzMih1aW50MTZ4OF90LCBpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNocnVuYnFfbV9uX3MzMikpKQp1aW50MTZ4OF90IF9fYXJtX3Zxc2hydW5icV9tKHVpbnQxNng4X3QsIGludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hydW5icV9uX3MxNikpKQp1aW50OHgxNl90IF9fYXJtX3Zxc2hydW5icV9uX3MxNih1aW50OHgxNl90LCBpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaHJ1bmJxX25fczE2KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnFzaHJ1bmJxKHVpbnQ4eDE2X3QsIGludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNocnVuYnFfbl9zMzIpKSkKdWludDE2eDhfdCBfX2FybV92cXNocnVuYnFfbl9zMzIodWludDE2eDhfdCwgaW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hydW5icV9uX3MzMikpKQp1aW50MTZ4OF90IF9fYXJtX3Zxc2hydW5icSh1aW50MTZ4OF90LCBpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaHJ1bnRxX21fbl9zMTYpKSkKdWludDh4MTZfdCBfX2FybV92cXNocnVudHFfbV9uX3MxNih1aW50OHgxNl90LCBpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNocnVudHFfbV9uX3MxNikpKQp1aW50OHgxNl90IF9fYXJtX3Zxc2hydW50cV9tKHVpbnQ4eDE2X3QsIGludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hydW50cV9tX25fczMyKSkpCnVpbnQxNng4X3QgX19hcm1fdnFzaHJ1bnRxX21fbl9zMzIodWludDE2eDhfdCwgaW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaHJ1bnRxX21fbl9zMzIpKSkKdWludDE2eDhfdCBfX2FybV92cXNocnVudHFfbSh1aW50MTZ4OF90LCBpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNocnVudHFfbl9zMTYpKSkKdWludDh4MTZfdCBfX2FybV92cXNocnVudHFfbl9zMTYodWludDh4MTZfdCwgaW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hydW50cV9uX3MxNikpKQp1aW50OHgxNl90IF9fYXJtX3Zxc2hydW50cSh1aW50OHgxNl90LCBpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaHJ1bnRxX25fczMyKSkpCnVpbnQxNng4X3QgX19hcm1fdnFzaHJ1bnRxX25fczMyKHVpbnQxNng4X3QsIGludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNocnVudHFfbl9zMzIpKSkKdWludDE2eDhfdCBfX2FybV92cXNocnVudHEodWludDE2eDhfdCwgaW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc3VicV9tX25fczE2KSkpCmludDE2eDhfdCBfX2FybV92cXN1YnFfbV9uX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXN1YnFfbV9uX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnFzdWJxX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzdWJxX21fbl9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3Zxc3VicV9tX25fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc3VicV9tX25fczMyKSkpCmludDMyeDRfdCBfX2FybV92cXN1YnFfbShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXN1YnFfbV9uX3M4KSkpCmludDh4MTZfdCBfX2FybV92cXN1YnFfbV9uX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzdWJxX21fbl9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnFzdWJxX20oaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXN1YnFfbV9uX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3Zxc3VicV9tX25fdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc3VicV9tX25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnFzdWJxX20odWludDE2eDhfdCwgdWludDE2eDhfdCwgdWludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzdWJxX21fbl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92cXN1YnFfbV9uX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXN1YnFfbV9uX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3Zxc3VicV9tKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc3VicV9tX25fdTgpKSkKdWludDh4MTZfdCBfX2FybV92cXN1YnFfbV9uX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzdWJxX21fbl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3Zxc3VicV9tKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzdWJxX21fczE2KSkpCmludDE2eDhfdCBfX2FybV92cXN1YnFfbV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXN1YnFfbV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3Zxc3VicV9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzdWJxX21fczMyKSkpCmludDMyeDRfdCBfX2FybV92cXN1YnFfbV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXN1YnFfbV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3Zxc3VicV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzdWJxX21fczgpKSkKaW50OHgxNl90IF9fYXJtX3Zxc3VicV9tX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzdWJxX21fczgpKSkKaW50OHgxNl90IF9fYXJtX3Zxc3VicV9tKGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzdWJxX21fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnFzdWJxX21fdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzdWJxX21fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnFzdWJxX20odWludDE2eDhfdCwgdWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXN1YnFfbV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92cXN1YnFfbV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXN1YnFfbV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92cXN1YnFfbSh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc3VicV9tX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnFzdWJxX21fdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXN1YnFfbV91OCkpKQp1aW50OHgxNl90IF9fYXJtX3Zxc3VicV9tKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzdWJxX25fczE2KSkpCmludDE2eDhfdCBfX2FybV92cXN1YnFfbl9zMTYoaW50MTZ4OF90LCBpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXN1YnFfbl9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3Zxc3VicShpbnQxNng4X3QsIGludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc3VicV9uX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnFzdWJxX25fczMyKGludDMyeDRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzdWJxX25fczMyKSkpCmludDMyeDRfdCBfX2FybV92cXN1YnEoaW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXN1YnFfbl9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnFzdWJxX25fczgoaW50OHgxNl90LCBpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc3VicV9uX3M4KSkpCmludDh4MTZfdCBfX2FybV92cXN1YnEoaW50OHgxNl90LCBpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc3VicV9uX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3Zxc3VicV9uX3UxNih1aW50MTZ4OF90LCB1aW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzdWJxX25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnFzdWJxKHVpbnQxNng4X3QsIHVpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXN1YnFfbl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92cXN1YnFfbl91MzIodWludDMyeDRfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc3VicV9uX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3Zxc3VicSh1aW50MzJ4NF90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzdWJxX25fdTgpKSkKdWludDh4MTZfdCBfX2FybV92cXN1YnFfbl91OCh1aW50OHgxNl90LCB1aW50OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXN1YnFfbl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3Zxc3VicSh1aW50OHgxNl90LCB1aW50OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXN1YnFfczE2KSkpCmludDE2eDhfdCBfX2FybV92cXN1YnFfczE2KGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXN1YnFfczE2KSkpCmludDE2eDhfdCBfX2FybV92cXN1YnEoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc3VicV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3Zxc3VicV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc3VicV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3Zxc3VicShpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzdWJxX3M4KSkpCmludDh4MTZfdCBfX2FybV92cXN1YnFfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc3VicV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnFzdWJxKGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXN1YnFfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnFzdWJxX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXN1YnFfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnFzdWJxKHVpbnQxNng4X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc3VicV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92cXN1YnFfdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc3VicV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92cXN1YnEodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzdWJxX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnFzdWJxX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc3VicV91OCkpKQp1aW50OHgxNl90IF9fYXJtX3Zxc3VicSh1aW50OHgxNl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3MxNl9zMzIpKSkKaW50MTZ4OF90IF9fYXJtX3ZyZWludGVycHJldHFfczE2X3MzMihpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczE2X3MzMikpKQppbnQxNng4X3QgX19hcm1fdnJlaW50ZXJwcmV0cV9zMTYoaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3MxNl9zNjQpKSkKaW50MTZ4OF90IF9fYXJtX3ZyZWludGVycHJldHFfczE2X3M2NChpbnQ2NHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczE2X3M2NCkpKQppbnQxNng4X3QgX19hcm1fdnJlaW50ZXJwcmV0cV9zMTYoaW50NjR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3MxNl9zOCkpKQppbnQxNng4X3QgX19hcm1fdnJlaW50ZXJwcmV0cV9zMTZfczgoaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3MxNl9zOCkpKQppbnQxNng4X3QgX19hcm1fdnJlaW50ZXJwcmV0cV9zMTYoaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3MxNl91MTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZyZWludGVycHJldHFfczE2X3UxNih1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3MxNl91MTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZyZWludGVycHJldHFfczE2KHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczE2X3UzMikpKQppbnQxNng4X3QgX19hcm1fdnJlaW50ZXJwcmV0cV9zMTZfdTMyKHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczE2X3UzMikpKQppbnQxNng4X3QgX19hcm1fdnJlaW50ZXJwcmV0cV9zMTYodWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zMTZfdTY0KSkpCmludDE2eDhfdCBfX2FybV92cmVpbnRlcnByZXRxX3MxNl91NjQodWludDY0eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zMTZfdTY0KSkpCmludDE2eDhfdCBfX2FybV92cmVpbnRlcnByZXRxX3MxNih1aW50NjR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3MxNl91OCkpKQppbnQxNng4X3QgX19hcm1fdnJlaW50ZXJwcmV0cV9zMTZfdTgodWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zMTZfdTgpKSkKaW50MTZ4OF90IF9fYXJtX3ZyZWludGVycHJldHFfczE2KHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczMyX3MxNikpKQppbnQzMng0X3QgX19hcm1fdnJlaW50ZXJwcmV0cV9zMzJfczE2KGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zMzJfczE2KSkpCmludDMyeDRfdCBfX2FybV92cmVpbnRlcnByZXRxX3MzMihpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczMyX3M2NCkpKQppbnQzMng0X3QgX19hcm1fdnJlaW50ZXJwcmV0cV9zMzJfczY0KGludDY0eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zMzJfczY0KSkpCmludDMyeDRfdCBfX2FybV92cmVpbnRlcnByZXRxX3MzMihpbnQ2NHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczMyX3M4KSkpCmludDMyeDRfdCBfX2FybV92cmVpbnRlcnByZXRxX3MzMl9zOChpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczMyX3M4KSkpCmludDMyeDRfdCBfX2FybV92cmVpbnRlcnByZXRxX3MzMihpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczMyX3UxNikpKQppbnQzMng0X3QgX19hcm1fdnJlaW50ZXJwcmV0cV9zMzJfdTE2KHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczMyX3UxNikpKQppbnQzMng0X3QgX19hcm1fdnJlaW50ZXJwcmV0cV9zMzIodWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zMzJfdTMyKSkpCmludDMyeDRfdCBfX2FybV92cmVpbnRlcnByZXRxX3MzMl91MzIodWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zMzJfdTMyKSkpCmludDMyeDRfdCBfX2FybV92cmVpbnRlcnByZXRxX3MzMih1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3MzMl91NjQpKSkKaW50MzJ4NF90IF9fYXJtX3ZyZWludGVycHJldHFfczMyX3U2NCh1aW50NjR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3MzMl91NjQpKSkKaW50MzJ4NF90IF9fYXJtX3ZyZWludGVycHJldHFfczMyKHVpbnQ2NHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczMyX3U4KSkpCmludDMyeDRfdCBfX2FybV92cmVpbnRlcnByZXRxX3MzMl91OCh1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3MzMl91OCkpKQppbnQzMng0X3QgX19hcm1fdnJlaW50ZXJwcmV0cV9zMzIodWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zNjRfczE2KSkpCmludDY0eDJfdCBfX2FybV92cmVpbnRlcnByZXRxX3M2NF9zMTYoaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3M2NF9zMTYpKSkKaW50NjR4Ml90IF9fYXJtX3ZyZWludGVycHJldHFfczY0KGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zNjRfczMyKSkpCmludDY0eDJfdCBfX2FybV92cmVpbnRlcnByZXRxX3M2NF9zMzIoaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3M2NF9zMzIpKSkKaW50NjR4Ml90IF9fYXJtX3ZyZWludGVycHJldHFfczY0KGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zNjRfczgpKSkKaW50NjR4Ml90IF9fYXJtX3ZyZWludGVycHJldHFfczY0X3M4KGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zNjRfczgpKSkKaW50NjR4Ml90IF9fYXJtX3ZyZWludGVycHJldHFfczY0KGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zNjRfdTE2KSkpCmludDY0eDJfdCBfX2FybV92cmVpbnRlcnByZXRxX3M2NF91MTYodWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zNjRfdTE2KSkpCmludDY0eDJfdCBfX2FybV92cmVpbnRlcnByZXRxX3M2NCh1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3M2NF91MzIpKSkKaW50NjR4Ml90IF9fYXJtX3ZyZWludGVycHJldHFfczY0X3UzMih1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3M2NF91MzIpKSkKaW50NjR4Ml90IF9fYXJtX3ZyZWludGVycHJldHFfczY0KHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczY0X3U2NCkpKQppbnQ2NHgyX3QgX19hcm1fdnJlaW50ZXJwcmV0cV9zNjRfdTY0KHVpbnQ2NHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczY0X3U2NCkpKQppbnQ2NHgyX3QgX19hcm1fdnJlaW50ZXJwcmV0cV9zNjQodWludDY0eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zNjRfdTgpKSkKaW50NjR4Ml90IF9fYXJtX3ZyZWludGVycHJldHFfczY0X3U4KHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczY0X3U4KSkpCmludDY0eDJfdCBfX2FybV92cmVpbnRlcnByZXRxX3M2NCh1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3M4X3MxNikpKQppbnQ4eDE2X3QgX19hcm1fdnJlaW50ZXJwcmV0cV9zOF9zMTYoaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3M4X3MxNikpKQppbnQ4eDE2X3QgX19hcm1fdnJlaW50ZXJwcmV0cV9zOChpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczhfczMyKSkpCmludDh4MTZfdCBfX2FybV92cmVpbnRlcnByZXRxX3M4X3MzMihpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczhfczMyKSkpCmludDh4MTZfdCBfX2FybV92cmVpbnRlcnByZXRxX3M4KGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zOF9zNjQpKSkKaW50OHgxNl90IF9fYXJtX3ZyZWludGVycHJldHFfczhfczY0KGludDY0eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zOF9zNjQpKSkKaW50OHgxNl90IF9fYXJtX3ZyZWludGVycHJldHFfczgoaW50NjR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3M4X3UxNikpKQppbnQ4eDE2X3QgX19hcm1fdnJlaW50ZXJwcmV0cV9zOF91MTYodWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zOF91MTYpKSkKaW50OHgxNl90IF9fYXJtX3ZyZWludGVycHJldHFfczgodWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zOF91MzIpKSkKaW50OHgxNl90IF9fYXJtX3ZyZWludGVycHJldHFfczhfdTMyKHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczhfdTMyKSkpCmludDh4MTZfdCBfX2FybV92cmVpbnRlcnByZXRxX3M4KHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczhfdTY0KSkpCmludDh4MTZfdCBfX2FybV92cmVpbnRlcnByZXRxX3M4X3U2NCh1aW50NjR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3M4X3U2NCkpKQppbnQ4eDE2X3QgX19hcm1fdnJlaW50ZXJwcmV0cV9zOCh1aW50NjR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3M4X3U4KSkpCmludDh4MTZfdCBfX2FybV92cmVpbnRlcnByZXRxX3M4X3U4KHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczhfdTgpKSkKaW50OHgxNl90IF9fYXJtX3ZyZWludGVycHJldHFfczgodWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91MTZfczE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnJlaW50ZXJwcmV0cV91MTZfczE2KGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91MTZfczE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnJlaW50ZXJwcmV0cV91MTYoaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3UxNl9zMzIpKSkKdWludDE2eDhfdCBfX2FybV92cmVpbnRlcnByZXRxX3UxNl9zMzIoaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3UxNl9zMzIpKSkKdWludDE2eDhfdCBfX2FybV92cmVpbnRlcnByZXRxX3UxNihpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdTE2X3M2NCkpKQp1aW50MTZ4OF90IF9fYXJtX3ZyZWludGVycHJldHFfdTE2X3M2NChpbnQ2NHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdTE2X3M2NCkpKQp1aW50MTZ4OF90IF9fYXJtX3ZyZWludGVycHJldHFfdTE2KGludDY0eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91MTZfczgpKSkKdWludDE2eDhfdCBfX2FybV92cmVpbnRlcnByZXRxX3UxNl9zOChpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdTE2X3M4KSkpCnVpbnQxNng4X3QgX19hcm1fdnJlaW50ZXJwcmV0cV91MTYoaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3UxNl91MzIpKSkKdWludDE2eDhfdCBfX2FybV92cmVpbnRlcnByZXRxX3UxNl91MzIodWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91MTZfdTMyKSkpCnVpbnQxNng4X3QgX19hcm1fdnJlaW50ZXJwcmV0cV91MTYodWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91MTZfdTY0KSkpCnVpbnQxNng4X3QgX19hcm1fdnJlaW50ZXJwcmV0cV91MTZfdTY0KHVpbnQ2NHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdTE2X3U2NCkpKQp1aW50MTZ4OF90IF9fYXJtX3ZyZWludGVycHJldHFfdTE2KHVpbnQ2NHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdTE2X3U4KSkpCnVpbnQxNng4X3QgX19hcm1fdnJlaW50ZXJwcmV0cV91MTZfdTgodWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91MTZfdTgpKSkKdWludDE2eDhfdCBfX2FybV92cmVpbnRlcnByZXRxX3UxNih1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3UzMl9zMTYpKSkKdWludDMyeDRfdCBfX2FybV92cmVpbnRlcnByZXRxX3UzMl9zMTYoaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3UzMl9zMTYpKSkKdWludDMyeDRfdCBfX2FybV92cmVpbnRlcnByZXRxX3UzMihpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdTMyX3MzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZyZWludGVycHJldHFfdTMyX3MzMihpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdTMyX3MzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZyZWludGVycHJldHFfdTMyKGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91MzJfczY0KSkpCnVpbnQzMng0X3QgX19hcm1fdnJlaW50ZXJwcmV0cV91MzJfczY0KGludDY0eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91MzJfczY0KSkpCnVpbnQzMng0X3QgX19hcm1fdnJlaW50ZXJwcmV0cV91MzIoaW50NjR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3UzMl9zOCkpKQp1aW50MzJ4NF90IF9fYXJtX3ZyZWludGVycHJldHFfdTMyX3M4KGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91MzJfczgpKSkKdWludDMyeDRfdCBfX2FybV92cmVpbnRlcnByZXRxX3UzMihpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdTMyX3UxNikpKQp1aW50MzJ4NF90IF9fYXJtX3ZyZWludGVycHJldHFfdTMyX3UxNih1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3UzMl91MTYpKSkKdWludDMyeDRfdCBfX2FybV92cmVpbnRlcnByZXRxX3UzMih1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3UzMl91NjQpKSkKdWludDMyeDRfdCBfX2FybV92cmVpbnRlcnByZXRxX3UzMl91NjQodWludDY0eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91MzJfdTY0KSkpCnVpbnQzMng0X3QgX19hcm1fdnJlaW50ZXJwcmV0cV91MzIodWludDY0eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91MzJfdTgpKSkKdWludDMyeDRfdCBfX2FybV92cmVpbnRlcnByZXRxX3UzMl91OCh1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3UzMl91OCkpKQp1aW50MzJ4NF90IF9fYXJtX3ZyZWludGVycHJldHFfdTMyKHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdTY0X3MxNikpKQp1aW50NjR4Ml90IF9fYXJtX3ZyZWludGVycHJldHFfdTY0X3MxNihpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdTY0X3MxNikpKQp1aW50NjR4Ml90IF9fYXJtX3ZyZWludGVycHJldHFfdTY0KGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91NjRfczMyKSkpCnVpbnQ2NHgyX3QgX19hcm1fdnJlaW50ZXJwcmV0cV91NjRfczMyKGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91NjRfczMyKSkpCnVpbnQ2NHgyX3QgX19hcm1fdnJlaW50ZXJwcmV0cV91NjQoaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3U2NF9zNjQpKSkKdWludDY0eDJfdCBfX2FybV92cmVpbnRlcnByZXRxX3U2NF9zNjQoaW50NjR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3U2NF9zNjQpKSkKdWludDY0eDJfdCBfX2FybV92cmVpbnRlcnByZXRxX3U2NChpbnQ2NHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdTY0X3M4KSkpCnVpbnQ2NHgyX3QgX19hcm1fdnJlaW50ZXJwcmV0cV91NjRfczgoaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3U2NF9zOCkpKQp1aW50NjR4Ml90IF9fYXJtX3ZyZWludGVycHJldHFfdTY0KGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91NjRfdTE2KSkpCnVpbnQ2NHgyX3QgX19hcm1fdnJlaW50ZXJwcmV0cV91NjRfdTE2KHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdTY0X3UxNikpKQp1aW50NjR4Ml90IF9fYXJtX3ZyZWludGVycHJldHFfdTY0KHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdTY0X3UzMikpKQp1aW50NjR4Ml90IF9fYXJtX3ZyZWludGVycHJldHFfdTY0X3UzMih1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3U2NF91MzIpKSkKdWludDY0eDJfdCBfX2FybV92cmVpbnRlcnByZXRxX3U2NCh1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3U2NF91OCkpKQp1aW50NjR4Ml90IF9fYXJtX3ZyZWludGVycHJldHFfdTY0X3U4KHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdTY0X3U4KSkpCnVpbnQ2NHgyX3QgX19hcm1fdnJlaW50ZXJwcmV0cV91NjQodWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91OF9zMTYpKSkKdWludDh4MTZfdCBfX2FybV92cmVpbnRlcnByZXRxX3U4X3MxNihpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdThfczE2KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnJlaW50ZXJwcmV0cV91OChpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdThfczMyKSkpCnVpbnQ4eDE2X3QgX19hcm1fdnJlaW50ZXJwcmV0cV91OF9zMzIoaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3U4X3MzMikpKQp1aW50OHgxNl90IF9fYXJtX3ZyZWludGVycHJldHFfdTgoaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3U4X3M2NCkpKQp1aW50OHgxNl90IF9fYXJtX3ZyZWludGVycHJldHFfdThfczY0KGludDY0eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91OF9zNjQpKSkKdWludDh4MTZfdCBfX2FybV92cmVpbnRlcnByZXRxX3U4KGludDY0eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91OF9zOCkpKQp1aW50OHgxNl90IF9fYXJtX3ZyZWludGVycHJldHFfdThfczgoaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3U4X3M4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnJlaW50ZXJwcmV0cV91OChpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdThfdTE2KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnJlaW50ZXJwcmV0cV91OF91MTYodWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91OF91MTYpKSkKdWludDh4MTZfdCBfX2FybV92cmVpbnRlcnByZXRxX3U4KHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdThfdTMyKSkpCnVpbnQ4eDE2X3QgX19hcm1fdnJlaW50ZXJwcmV0cV91OF91MzIodWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91OF91MzIpKSkKdWludDh4MTZfdCBfX2FybV92cmVpbnRlcnByZXRxX3U4KHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdThfdTY0KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnJlaW50ZXJwcmV0cV91OF91NjQodWludDY0eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91OF91NjQpKSkKdWludDh4MTZfdCBfX2FybV92cmVpbnRlcnByZXRxX3U4KHVpbnQ2NHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXYxNnFfbV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnJldjE2cV9tX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXYxNnFfbV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnJldjE2cV9tKGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXYxNnFfbV91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZyZXYxNnFfbV91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXYxNnFfbV91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZyZXYxNnFfbSh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXYxNnFfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZyZXYxNnFfczgoaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2MTZxX3M4KSkpCmludDh4MTZfdCBfX2FybV92cmV2MTZxKGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjE2cV91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZyZXYxNnFfdTgodWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjE2cV91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZyZXYxNnEodWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjE2cV94X3M4KSkpCmludDh4MTZfdCBfX2FybV92cmV2MTZxX3hfczgoaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXYxNnFfeF9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnJldjE2cV94KGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2MTZxX3hfdTgpKSkKdWludDh4MTZfdCBfX2FybV92cmV2MTZxX3hfdTgodWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2MTZxX3hfdTgpKSkKdWludDh4MTZfdCBfX2FybV92cmV2MTZxX3godWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2MzJxX21fczE2KSkpCmludDE2eDhfdCBfX2FybV92cmV2MzJxX21fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXYzMnFfbV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZyZXYzMnFfbShpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2MzJxX21fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZyZXYzMnFfbV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2MzJxX21fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZyZXYzMnFfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2MzJxX21fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnJldjMycV9tX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXYzMnFfbV91MTYpKSkKdWludDE2eDhfdCBfX2FybV92cmV2MzJxX20odWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2MzJxX21fdTgpKSkKdWludDh4MTZfdCBfX2FybV92cmV2MzJxX21fdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2MzJxX21fdTgpKSkKdWludDh4MTZfdCBfX2FybV92cmV2MzJxX20odWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2MzJxX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnJldjMycV9zMTYoaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2MzJxX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnJldjMycShpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXYzMnFfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZyZXYzMnFfczgoaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2MzJxX3M4KSkpCmludDh4MTZfdCBfX2FybV92cmV2MzJxKGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjMycV91MTYpKSkKdWludDE2eDhfdCBfX2FybV92cmV2MzJxX3UxNih1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2MzJxX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZyZXYzMnEodWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjMycV91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZyZXYzMnFfdTgodWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjMycV91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZyZXYzMnEodWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjMycV94X3MxNikpKQppbnQxNng4X3QgX19hcm1fdnJldjMycV94X3MxNihpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjMycV94X3MxNikpKQppbnQxNng4X3QgX19hcm1fdnJldjMycV94KGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2MzJxX3hfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZyZXYzMnFfeF9zOChpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjMycV94X3M4KSkpCmludDh4MTZfdCBfX2FybV92cmV2MzJxX3goaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXYzMnFfeF91MTYpKSkKdWludDE2eDhfdCBfX2FybV92cmV2MzJxX3hfdTE2KHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjMycV94X3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZyZXYzMnFfeCh1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXYzMnFfeF91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZyZXYzMnFfeF91OCh1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXYzMnFfeF91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZyZXYzMnFfeCh1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXY2NHFfbV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZyZXY2NHFfbV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjY0cV9tX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnJldjY0cV9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXY2NHFfbV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZyZXY2NHFfbV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjY0cV9tX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnJldjY0cV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXY2NHFfbV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnJldjY0cV9tX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXY2NHFfbV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnJldjY0cV9tKGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXY2NHFfbV91MTYpKSkKdWludDE2eDhfdCBfX2FybV92cmV2NjRxX21fdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjY0cV9tX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZyZXY2NHFfbSh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXY2NHFfbV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92cmV2NjRxX21fdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjY0cV9tX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZyZXY2NHFfbSh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXY2NHFfbV91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZyZXY2NHFfbV91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXY2NHFfbV91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZyZXY2NHFfbSh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXY2NHFfczE2KSkpCmludDE2eDhfdCBfX2FybV92cmV2NjRxX3MxNihpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXY2NHFfczE2KSkpCmludDE2eDhfdCBfX2FybV92cmV2NjRxKGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjY0cV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZyZXY2NHFfczMyKGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjY0cV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZyZXY2NHEoaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2NjRxX3M4KSkpCmludDh4MTZfdCBfX2FybV92cmV2NjRxX3M4KGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjY0cV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnJldjY0cShpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXY2NHFfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnJldjY0cV91MTYodWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjY0cV91MTYpKSkKdWludDE2eDhfdCBfX2FybV92cmV2NjRxKHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXY2NHFfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdnJldjY0cV91MzIodWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjY0cV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92cmV2NjRxKHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXY2NHFfdTgpKSkKdWludDh4MTZfdCBfX2FybV92cmV2NjRxX3U4KHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXY2NHFfdTgpKSkKdWludDh4MTZfdCBfX2FybV92cmV2NjRxKHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXY2NHFfeF9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZyZXY2NHFfeF9zMTYoaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXY2NHFfeF9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZyZXY2NHFfeChpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjY0cV94X3MzMikpKQppbnQzMng0X3QgX19hcm1fdnJldjY0cV94X3MzMihpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjY0cV94X3MzMikpKQppbnQzMng0X3QgX19hcm1fdnJldjY0cV94KGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2NjRxX3hfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZyZXY2NHFfeF9zOChpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjY0cV94X3M4KSkpCmludDh4MTZfdCBfX2FybV92cmV2NjRxX3goaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXY2NHFfeF91MTYpKSkKdWludDE2eDhfdCBfX2FybV92cmV2NjRxX3hfdTE2KHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjY0cV94X3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZyZXY2NHFfeCh1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXY2NHFfeF91MzIpKSkKdWludDMyeDRfdCBfX2FybV92cmV2NjRxX3hfdTMyKHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjY0cV94X3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZyZXY2NHFfeCh1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXY2NHFfeF91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZyZXY2NHFfeF91OCh1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXY2NHFfeF91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZyZXY2NHFfeCh1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyaGFkZHFfbV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZyaGFkZHFfbV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmhhZGRxX21fczE2KSkpCmludDE2eDhfdCBfX2FybV92cmhhZGRxX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmhhZGRxX21fczMyKSkpCmludDMyeDRfdCBfX2FybV92cmhhZGRxX21fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJoYWRkcV9tX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnJoYWRkcV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJoYWRkcV9tX3M4KSkpCmludDh4MTZfdCBfX2FybV92cmhhZGRxX21fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmhhZGRxX21fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZyaGFkZHFfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyaGFkZHFfbV91MTYpKSkKdWludDE2eDhfdCBfX2FybV92cmhhZGRxX21fdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJoYWRkcV9tX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZyaGFkZHFfbSh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyaGFkZHFfbV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92cmhhZGRxX21fdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJoYWRkcV9tX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZyaGFkZHFfbSh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyaGFkZHFfbV91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZyaGFkZHFfbV91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyaGFkZHFfbV91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZyaGFkZHFfbSh1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyaGFkZHFfczE2KSkpCmludDE2eDhfdCBfX2FybV92cmhhZGRxX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJoYWRkcV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZyaGFkZHEoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyaGFkZHFfczMyKSkpCmludDMyeDRfdCBfX2FybV92cmhhZGRxX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJoYWRkcV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZyaGFkZHEoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyaGFkZHFfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZyaGFkZHFfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyaGFkZHFfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZyaGFkZHEoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyaGFkZHFfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnJoYWRkcV91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJoYWRkcV91MTYpKSkKdWludDE2eDhfdCBfX2FybV92cmhhZGRxKHVpbnQxNng4X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyaGFkZHFfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdnJoYWRkcV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJoYWRkcV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92cmhhZGRxKHVpbnQzMng0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyaGFkZHFfdTgpKSkKdWludDh4MTZfdCBfX2FybV92cmhhZGRxX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyaGFkZHFfdTgpKSkKdWludDh4MTZfdCBfX2FybV92cmhhZGRxKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyaGFkZHFfeF9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZyaGFkZHFfeF9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJoYWRkcV94X3MxNikpKQppbnQxNng4X3QgX19hcm1fdnJoYWRkcV94KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyaGFkZHFfeF9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZyaGFkZHFfeF9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJoYWRkcV94X3MzMikpKQppbnQzMng0X3QgX19hcm1fdnJoYWRkcV94KGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyaGFkZHFfeF9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnJoYWRkcV94X3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyaGFkZHFfeF9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnJoYWRkcV94KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyaGFkZHFfeF91MTYpKSkKdWludDE2eDhfdCBfX2FybV92cmhhZGRxX3hfdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJoYWRkcV94X3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZyaGFkZHFfeCh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyaGFkZHFfeF91MzIpKSkKdWludDMyeDRfdCBfX2FybV92cmhhZGRxX3hfdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJoYWRkcV94X3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZyaGFkZHFfeCh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyaGFkZHFfeF91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZyaGFkZHFfeF91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyaGFkZHFfeF91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZyaGFkZHFfeCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybWxhbGRhdmhhcV9wX3MzMikpKQppbnQ2NF90IF9fYXJtX3ZybWxhbGRhdmhhcV9wX3MzMihpbnQ2NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm1sYWxkYXZoYXFfcF9zMzIpKSkKaW50NjRfdCBfX2FybV92cm1sYWxkYXZoYXFfcChpbnQ2NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm1sYWxkYXZoYXFfcF91MzIpKSkKdWludDY0X3QgX19hcm1fdnJtbGFsZGF2aGFxX3BfdTMyKHVpbnQ2NF90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybWxhbGRhdmhhcV9wX3UzMikpKQp1aW50NjRfdCBfX2FybV92cm1sYWxkYXZoYXFfcCh1aW50NjRfdCwgdWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm1sYWxkYXZoYXFfczMyKSkpCmludDY0X3QgX19hcm1fdnJtbGFsZGF2aGFxX3MzMihpbnQ2NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJtbGFsZGF2aGFxX3MzMikpKQppbnQ2NF90IF9fYXJtX3ZybWxhbGRhdmhhcShpbnQ2NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJtbGFsZGF2aGFxX3UzMikpKQp1aW50NjRfdCBfX2FybV92cm1sYWxkYXZoYXFfdTMyKHVpbnQ2NF90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm1sYWxkYXZoYXFfdTMyKSkpCnVpbnQ2NF90IF9fYXJtX3ZybWxhbGRhdmhhcSh1aW50NjRfdCwgdWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJtbGFsZGF2aGF4cV9wX3MzMikpKQppbnQ2NF90IF9fYXJtX3ZybWxhbGRhdmhheHFfcF9zMzIoaW50NjRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJtbGFsZGF2aGF4cV9wX3MzMikpKQppbnQ2NF90IF9fYXJtX3ZybWxhbGRhdmhheHFfcChpbnQ2NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm1sYWxkYXZoYXhxX3MzMikpKQppbnQ2NF90IF9fYXJtX3ZybWxhbGRhdmhheHFfczMyKGludDY0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm1sYWxkYXZoYXhxX3MzMikpKQppbnQ2NF90IF9fYXJtX3ZybWxhbGRhdmhheHEoaW50NjRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybWxhbGRhdmhxX3BfczMyKSkpCmludDY0X3QgX19hcm1fdnJtbGFsZGF2aHFfcF9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJtbGFsZGF2aHFfcF9zMzIpKSkKaW50NjRfdCBfX2FybV92cm1sYWxkYXZocV9wKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybWxhbGRhdmhxX3BfdTMyKSkpCnVpbnQ2NF90IF9fYXJtX3ZybWxhbGRhdmhxX3BfdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJtbGFsZGF2aHFfcF91MzIpKSkKdWludDY0X3QgX19hcm1fdnJtbGFsZGF2aHFfcCh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybWxhbGRhdmhxX3MzMikpKQppbnQ2NF90IF9fYXJtX3ZybWxhbGRhdmhxX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJtbGFsZGF2aHFfczMyKSkpCmludDY0X3QgX19hcm1fdnJtbGFsZGF2aHEoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybWxhbGRhdmhxX3UzMikpKQp1aW50NjRfdCBfX2FybV92cm1sYWxkYXZocV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJtbGFsZGF2aHFfdTMyKSkpCnVpbnQ2NF90IF9fYXJtX3ZybWxhbGRhdmhxKHVpbnQzMng0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybWxhbGRhdmh4cV9wX3MzMikpKQppbnQ2NF90IF9fYXJtX3ZybWxhbGRhdmh4cV9wX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm1sYWxkYXZoeHFfcF9zMzIpKSkKaW50NjRfdCBfX2FybV92cm1sYWxkYXZoeHFfcChpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm1sYWxkYXZoeHFfczMyKSkpCmludDY0X3QgX19hcm1fdnJtbGFsZGF2aHhxX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJtbGFsZGF2aHhxX3MzMikpKQppbnQ2NF90IF9fYXJtX3ZybWxhbGRhdmh4cShpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJtbHNsZGF2aGFxX3BfczMyKSkpCmludDY0X3QgX19hcm1fdnJtbHNsZGF2aGFxX3BfczMyKGludDY0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybWxzbGRhdmhhcV9wX3MzMikpKQppbnQ2NF90IF9fYXJtX3ZybWxzbGRhdmhhcV9wKGludDY0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybWxzbGRhdmhhcV9zMzIpKSkKaW50NjRfdCBfX2FybV92cm1sc2xkYXZoYXFfczMyKGludDY0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm1sc2xkYXZoYXFfczMyKSkpCmludDY0X3QgX19hcm1fdnJtbHNsZGF2aGFxKGludDY0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm1sc2xkYXZoYXhxX3BfczMyKSkpCmludDY0X3QgX19hcm1fdnJtbHNsZGF2aGF4cV9wX3MzMihpbnQ2NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm1sc2xkYXZoYXhxX3BfczMyKSkpCmludDY0X3QgX19hcm1fdnJtbHNsZGF2aGF4cV9wKGludDY0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybWxzbGRhdmhheHFfczMyKSkpCmludDY0X3QgX19hcm1fdnJtbHNsZGF2aGF4cV9zMzIoaW50NjRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybWxzbGRhdmhheHFfczMyKSkpCmludDY0X3QgX19hcm1fdnJtbHNsZGF2aGF4cShpbnQ2NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJtbHNsZGF2aHFfcF9zMzIpKSkKaW50NjRfdCBfX2FybV92cm1sc2xkYXZocV9wX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm1sc2xkYXZocV9wX3MzMikpKQppbnQ2NF90IF9fYXJtX3ZybWxzbGRhdmhxX3AoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJtbHNsZGF2aHFfczMyKSkpCmludDY0X3QgX19hcm1fdnJtbHNsZGF2aHFfczMyKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm1sc2xkYXZocV9zMzIpKSkKaW50NjRfdCBfX2FybV92cm1sc2xkYXZocShpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJtbHNsZGF2aHhxX3BfczMyKSkpCmludDY0X3QgX19hcm1fdnJtbHNsZGF2aHhxX3BfczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybWxzbGRhdmh4cV9wX3MzMikpKQppbnQ2NF90IF9fYXJtX3ZybWxzbGRhdmh4cV9wKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybWxzbGRhdmh4cV9zMzIpKSkKaW50NjRfdCBfX2FybV92cm1sc2xkYXZoeHFfczMyKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm1sc2xkYXZoeHFfczMyKSkpCmludDY0X3QgX19hcm1fdnJtbHNsZGF2aHhxKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm11bGhxX21fczE2KSkpCmludDE2eDhfdCBfX2FybV92cm11bGhxX21fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJtdWxocV9tX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnJtdWxocV9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJtdWxocV9tX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnJtdWxocV9tX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybXVsaHFfbV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZybXVsaHFfbShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybXVsaHFfbV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnJtdWxocV9tX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJtdWxocV9tX3M4KSkpCmludDh4MTZfdCBfX2FybV92cm11bGhxX20oaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm11bGhxX21fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnJtdWxocV9tX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybXVsaHFfbV91MTYpKSkKdWludDE2eDhfdCBfX2FybV92cm11bGhxX20odWludDE2eDhfdCwgdWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm11bGhxX21fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdnJtdWxocV9tX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybXVsaHFfbV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92cm11bGhxX20odWludDMyeDRfdCwgdWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm11bGhxX21fdTgpKSkKdWludDh4MTZfdCBfX2FybV92cm11bGhxX21fdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm11bGhxX21fdTgpKSkKdWludDh4MTZfdCBfX2FybV92cm11bGhxX20odWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm11bGhxX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnJtdWxocV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybXVsaHFfczE2KSkpCmludDE2eDhfdCBfX2FybV92cm11bGhxKGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm11bGhxX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnJtdWxocV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybXVsaHFfczMyKSkpCmludDMyeDRfdCBfX2FybV92cm11bGhxKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm11bGhxX3M4KSkpCmludDh4MTZfdCBfX2FybV92cm11bGhxX3M4KGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm11bGhxX3M4KSkpCmludDh4MTZfdCBfX2FybV92cm11bGhxKGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm11bGhxX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZybXVsaHFfdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybXVsaHFfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnJtdWxocSh1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm11bGhxX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZybXVsaHFfdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybXVsaHFfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdnJtdWxocSh1aW50MzJ4NF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm11bGhxX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnJtdWxocV91OCh1aW50OHgxNl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm11bGhxX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnJtdWxocSh1aW50OHgxNl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm11bGhxX3hfczE2KSkpCmludDE2eDhfdCBfX2FybV92cm11bGhxX3hfczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybXVsaHFfeF9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZybXVsaHFfeChpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm11bGhxX3hfczMyKSkpCmludDMyeDRfdCBfX2FybV92cm11bGhxX3hfczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybXVsaHFfeF9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZybXVsaHFfeChpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm11bGhxX3hfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZybXVsaHFfeF9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm11bGhxX3hfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZybXVsaHFfeChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm11bGhxX3hfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnJtdWxocV94X3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybXVsaHFfeF91MTYpKSkKdWludDE2eDhfdCBfX2FybV92cm11bGhxX3godWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm11bGhxX3hfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdnJtdWxocV94X3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybXVsaHFfeF91MzIpKSkKdWludDMyeDRfdCBfX2FybV92cm11bGhxX3godWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm11bGhxX3hfdTgpKSkKdWludDh4MTZfdCBfX2FybV92cm11bGhxX3hfdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm11bGhxX3hfdTgpKSkKdWludDh4MTZfdCBfX2FybV92cm11bGhxX3godWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNobHFfbV9uX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnJzaGxxX21fbl9zMTYoaW50MTZ4OF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV9tX25fczE2KSkpCmludDE2eDhfdCBfX2FybV92cnNobHFfbV9uKGludDE2eDhfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNobHFfbV9uX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnJzaGxxX21fbl9zMzIoaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV9tX25fczMyKSkpCmludDMyeDRfdCBfX2FybV92cnNobHFfbV9uKGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNobHFfbV9uX3M4KSkpCmludDh4MTZfdCBfX2FybV92cnNobHFfbV9uX3M4KGludDh4MTZfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNobHFfbV9uX3M4KSkpCmludDh4MTZfdCBfX2FybV92cnNobHFfbV9uKGludDh4MTZfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNobHFfbV9uX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3Zyc2hscV9tX25fdTE2KHVpbnQxNng4X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaGxxX21fbl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92cnNobHFfbV9uKHVpbnQxNng4X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaGxxX21fbl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92cnNobHFfbV9uX3UzMih1aW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV9tX25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdnJzaGxxX21fbih1aW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV9tX25fdTgpKSkKdWludDh4MTZfdCBfX2FybV92cnNobHFfbV9uX3U4KHVpbnQ4eDE2X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaGxxX21fbl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3Zyc2hscV9tX24odWludDh4MTZfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNobHFfbV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3Zyc2hscV9tX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV9tX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnJzaGxxX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNobHFfbV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3Zyc2hscV9tX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV9tX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnJzaGxxX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNobHFfbV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnJzaGxxX21fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNobHFfbV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnJzaGxxX20oaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNobHFfbV91MTYpKSkKdWludDE2eDhfdCBfX2FybV92cnNobHFfbV91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV9tX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3Zyc2hscV9tKHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNobHFfbV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92cnNobHFfbV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV9tX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3Zyc2hscV9tKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNobHFfbV91OCkpKQp1aW50OHgxNl90IF9fYXJtX3Zyc2hscV9tX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNobHFfbV91OCkpKQp1aW50OHgxNl90IF9fYXJtX3Zyc2hscV9tKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNobHFfbl9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3Zyc2hscV9uX3MxNihpbnQxNng4X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV9uX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnJzaGxxKGludDE2eDhfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaGxxX25fczMyKSkpCmludDMyeDRfdCBfX2FybV92cnNobHFfbl9zMzIoaW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNobHFfbl9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3Zyc2hscShpbnQzMng0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV9uX3M4KSkpCmludDh4MTZfdCBfX2FybV92cnNobHFfbl9zOChpbnQ4eDE2X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV9uX3M4KSkpCmludDh4MTZfdCBfX2FybV92cnNobHEoaW50OHgxNl90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNobHFfbl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92cnNobHFfbl91MTYodWludDE2eDhfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaGxxX25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnJzaGxxKHVpbnQxNng4X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV9uX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3Zyc2hscV9uX3UzMih1aW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNobHFfbl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92cnNobHEodWludDMyeDRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaGxxX25fdTgpKSkKdWludDh4MTZfdCBfX2FybV92cnNobHFfbl91OCh1aW50OHgxNl90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNobHFfbl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3Zyc2hscSh1aW50OHgxNl90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNobHFfczE2KSkpCmludDE2eDhfdCBfX2FybV92cnNobHFfczE2KGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNobHFfczE2KSkpCmludDE2eDhfdCBfX2FybV92cnNobHEoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3Zyc2hscV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3Zyc2hscShpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaGxxX3M4KSkpCmludDh4MTZfdCBfX2FybV92cnNobHFfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnJzaGxxKGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNobHFfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnJzaGxxX3UxNih1aW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV91MTYpKSkKdWludDE2eDhfdCBfX2FybV92cnNobHEodWludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNobHFfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdnJzaGxxX3UzMih1aW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92cnNobHEodWludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNobHFfdTgpKSkKdWludDh4MTZfdCBfX2FybV92cnNobHFfdTgodWludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNobHFfdTgpKSkKdWludDh4MTZfdCBfX2FybV92cnNobHEodWludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNobHFfeF9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3Zyc2hscV94X3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNobHFfeF9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3Zyc2hscV94KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV94X3MzMikpKQppbnQzMng0X3QgX19hcm1fdnJzaGxxX3hfczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV94X3MzMikpKQppbnQzMng0X3QgX19hcm1fdnJzaGxxX3goaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaGxxX3hfczgpKSkKaW50OHgxNl90IF9fYXJtX3Zyc2hscV94X3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV94X3M4KSkpCmludDh4MTZfdCBfX2FybV92cnNobHFfeChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNobHFfeF91MTYpKSkKdWludDE2eDhfdCBfX2FybV92cnNobHFfeF91MTYodWludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV94X3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3Zyc2hscV94KHVpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNobHFfeF91MzIpKSkKdWludDMyeDRfdCBfX2FybV92cnNobHFfeF91MzIodWludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV94X3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3Zyc2hscV94KHVpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNobHFfeF91OCkpKQp1aW50OHgxNl90IF9fYXJtX3Zyc2hscV94X3U4KHVpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNobHFfeF91OCkpKQp1aW50OHgxNl90IF9fYXJtX3Zyc2hscV94KHVpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNocm5icV9tX25fczE2KSkpCmludDh4MTZfdCBfX2FybV92cnNocm5icV9tX25fczE2KGludDh4MTZfdCwgaW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJuYnFfbV9uX3MxNikpKQppbnQ4eDE2X3QgX19hcm1fdnJzaHJuYnFfbShpbnQ4eDE2X3QsIGludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hybmJxX21fbl9zMzIpKSkKaW50MTZ4OF90IF9fYXJtX3Zyc2hybmJxX21fbl9zMzIoaW50MTZ4OF90LCBpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNocm5icV9tX25fczMyKSkpCmludDE2eDhfdCBfX2FybV92cnNocm5icV9tKGludDE2eDhfdCwgaW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJuYnFfbV9uX3UxNikpKQp1aW50OHgxNl90IF9fYXJtX3Zyc2hybmJxX21fbl91MTYodWludDh4MTZfdCwgdWludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hybmJxX21fbl91MTYpKSkKdWludDh4MTZfdCBfX2FybV92cnNocm5icV9tKHVpbnQ4eDE2X3QsIHVpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNocm5icV9tX25fdTMyKSkpCnVpbnQxNng4X3QgX19hcm1fdnJzaHJuYnFfbV9uX3UzMih1aW50MTZ4OF90LCB1aW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJuYnFfbV9uX3UzMikpKQp1aW50MTZ4OF90IF9fYXJtX3Zyc2hybmJxX20odWludDE2eDhfdCwgdWludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hybmJxX25fczE2KSkpCmludDh4MTZfdCBfX2FybV92cnNocm5icV9uX3MxNihpbnQ4eDE2X3QsIGludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNocm5icV9uX3MxNikpKQppbnQ4eDE2X3QgX19hcm1fdnJzaHJuYnEoaW50OHgxNl90LCBpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJuYnFfbl9zMzIpKSkKaW50MTZ4OF90IF9fYXJtX3Zyc2hybmJxX25fczMyKGludDE2eDhfdCwgaW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hybmJxX25fczMyKSkpCmludDE2eDhfdCBfX2FybV92cnNocm5icShpbnQxNng4X3QsIGludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNocm5icV9uX3UxNikpKQp1aW50OHgxNl90IF9fYXJtX3Zyc2hybmJxX25fdTE2KHVpbnQ4eDE2X3QsIHVpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJuYnFfbl91MTYpKSkKdWludDh4MTZfdCBfX2FybV92cnNocm5icSh1aW50OHgxNl90LCB1aW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hybmJxX25fdTMyKSkpCnVpbnQxNng4X3QgX19hcm1fdnJzaHJuYnFfbl91MzIodWludDE2eDhfdCwgdWludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNocm5icV9uX3UzMikpKQp1aW50MTZ4OF90IF9fYXJtX3Zyc2hybmJxKHVpbnQxNng4X3QsIHVpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJudHFfbV9uX3MxNikpKQppbnQ4eDE2X3QgX19hcm1fdnJzaHJudHFfbV9uX3MxNihpbnQ4eDE2X3QsIGludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hybnRxX21fbl9zMTYpKSkKaW50OHgxNl90IF9fYXJtX3Zyc2hybnRxX20oaW50OHgxNl90LCBpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNocm50cV9tX25fczMyKSkpCmludDE2eDhfdCBfX2FybV92cnNocm50cV9tX25fczMyKGludDE2eDhfdCwgaW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJudHFfbV9uX3MzMikpKQppbnQxNng4X3QgX19hcm1fdnJzaHJudHFfbShpbnQxNng4X3QsIGludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hybnRxX21fbl91MTYpKSkKdWludDh4MTZfdCBfX2FybV92cnNocm50cV9tX25fdTE2KHVpbnQ4eDE2X3QsIHVpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNocm50cV9tX25fdTE2KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnJzaHJudHFfbSh1aW50OHgxNl90LCB1aW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJudHFfbV9uX3UzMikpKQp1aW50MTZ4OF90IF9fYXJtX3Zyc2hybnRxX21fbl91MzIodWludDE2eDhfdCwgdWludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hybnRxX21fbl91MzIpKSkKdWludDE2eDhfdCBfX2FybV92cnNocm50cV9tKHVpbnQxNng4X3QsIHVpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNocm50cV9uX3MxNikpKQppbnQ4eDE2X3QgX19hcm1fdnJzaHJudHFfbl9zMTYoaW50OHgxNl90LCBpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJudHFfbl9zMTYpKSkKaW50OHgxNl90IF9fYXJtX3Zyc2hybnRxKGludDh4MTZfdCwgaW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hybnRxX25fczMyKSkpCmludDE2eDhfdCBfX2FybV92cnNocm50cV9uX3MzMihpbnQxNng4X3QsIGludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNocm50cV9uX3MzMikpKQppbnQxNng4X3QgX19hcm1fdnJzaHJudHEoaW50MTZ4OF90LCBpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJudHFfbl91MTYpKSkKdWludDh4MTZfdCBfX2FybV92cnNocm50cV9uX3UxNih1aW50OHgxNl90LCB1aW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hybnRxX25fdTE2KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnJzaHJudHEodWludDh4MTZfdCwgdWludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNocm50cV9uX3UzMikpKQp1aW50MTZ4OF90IF9fYXJtX3Zyc2hybnRxX25fdTMyKHVpbnQxNng4X3QsIHVpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJudHFfbl91MzIpKSkKdWludDE2eDhfdCBfX2FybV92cnNocm50cSh1aW50MTZ4OF90LCB1aW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hycV9tX25fczE2KSkpCmludDE2eDhfdCBfX2FybV92cnNocnFfbV9uX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hycV9tX25fczE2KSkpCmludDE2eDhfdCBfX2FybV92cnNocnFfbShpbnQxNng4X3QsIGludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hycV9tX25fczMyKSkpCmludDMyeDRfdCBfX2FybV92cnNocnFfbV9uX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hycV9tX25fczMyKSkpCmludDMyeDRfdCBfX2FybV92cnNocnFfbShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hycV9tX25fczgpKSkKaW50OHgxNl90IF9fYXJtX3Zyc2hycV9tX25fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNocnFfbV9uX3M4KSkpCmludDh4MTZfdCBfX2FybV92cnNocnFfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hycV9tX25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnJzaHJxX21fbl91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hycV9tX25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnJzaHJxX20odWludDE2eDhfdCwgdWludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hycV9tX25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdnJzaHJxX21fbl91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hycV9tX25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdnJzaHJxX20odWludDMyeDRfdCwgdWludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hycV9tX25fdTgpKSkKdWludDh4MTZfdCBfX2FybV92cnNocnFfbV9uX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNocnFfbV9uX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnJzaHJxX20odWludDh4MTZfdCwgdWludDh4MTZfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hycV9uX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnJzaHJxX25fczE2KGludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNocnFfbl9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3Zyc2hycShpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJxX25fczMyKSkpCmludDMyeDRfdCBfX2FybV92cnNocnFfbl9zMzIoaW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hycV9uX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnJzaHJxKGludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNocnFfbl9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnJzaHJxX25fczgoaW50OHgxNl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hycV9uX3M4KSkpCmludDh4MTZfdCBfX2FybV92cnNocnEoaW50OHgxNl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hycV9uX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3Zyc2hycV9uX3UxNih1aW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hycV9uX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3Zyc2hycSh1aW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hycV9uX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3Zyc2hycV9uX3UzMih1aW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hycV9uX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3Zyc2hycSh1aW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hycV9uX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnJzaHJxX25fdTgodWludDh4MTZfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNocnFfbl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3Zyc2hycSh1aW50OHgxNl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hycV94X25fczE2KSkpCmludDE2eDhfdCBfX2FybV92cnNocnFfeF9uX3MxNihpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNocnFfeF9uX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnJzaHJxX3goaW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJxX3hfbl9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3Zyc2hycV94X25fczMyKGludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hycV94X25fczMyKSkpCmludDMyeDRfdCBfX2FybV92cnNocnFfeChpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNocnFfeF9uX3M4KSkpCmludDh4MTZfdCBfX2FybV92cnNocnFfeF9uX3M4KGludDh4MTZfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hycV94X25fczgpKSkKaW50OHgxNl90IF9fYXJtX3Zyc2hycV94KGludDh4MTZfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hycV94X25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnJzaHJxX3hfbl91MTYodWludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hycV94X25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnJzaHJxX3godWludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hycV94X25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdnJzaHJxX3hfbl91MzIodWludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hycV94X25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdnJzaHJxX3godWludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hycV94X25fdTgpKSkKdWludDh4MTZfdCBfX2FybV92cnNocnFfeF9uX3U4KHVpbnQ4eDE2X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNocnFfeF9uX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnJzaHJxX3godWludDh4MTZfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzYmNpcV9tX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnNiY2lxX21fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIHVuc2lnbmVkICosIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNiY2lxX21fczMyKSkpCmludDMyeDRfdCBfX2FybV92c2JjaXFfbShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCB1bnNpZ25lZCAqLCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzYmNpcV9tX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZzYmNpcV9tX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1bnNpZ25lZCAqLCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzYmNpcV9tX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZzYmNpcV9tKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVuc2lnbmVkICosIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNiY2lxX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnNiY2lxX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgdW5zaWduZWQgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNiY2lxX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnNiY2lxKGludDMyeDRfdCwgaW50MzJ4NF90LCB1bnNpZ25lZCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2JjaXFfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdnNiY2lxX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1bnNpZ25lZCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2JjaXFfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdnNiY2lxKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVuc2lnbmVkICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzYmNxX21fczMyKSkpCmludDMyeDRfdCBfX2FybV92c2JjcV9tX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCB1bnNpZ25lZCAqLCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzYmNxX21fczMyKSkpCmludDMyeDRfdCBfX2FybV92c2JjcV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIHVuc2lnbmVkICosIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNiY3FfbV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92c2JjcV9tX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1bnNpZ25lZCAqLCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzYmNxX21fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdnNiY3FfbSh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1bnNpZ25lZCAqLCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzYmNxX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnNiY3FfczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCB1bnNpZ25lZCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2JjcV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZzYmNxKGludDMyeDRfdCwgaW50MzJ4NF90LCB1bnNpZ25lZCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2JjcV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92c2JjcV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgdW5zaWduZWQgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNiY3FfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdnNiY3EodWludDMyeDRfdCwgdWludDMyeDRfdCwgdW5zaWduZWQgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNldHFfbGFuZV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZzZXRxX2xhbmVfczE2KGludDE2X3QsIGludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2V0cV9sYW5lX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnNldHFfbGFuZShpbnQxNl90LCBpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNldHFfbGFuZV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZzZXRxX2xhbmVfczMyKGludDMyX3QsIGludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2V0cV9sYW5lX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnNldHFfbGFuZShpbnQzMl90LCBpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNldHFfbGFuZV9zNjQpKSkKaW50NjR4Ml90IF9fYXJtX3ZzZXRxX2xhbmVfczY0KGludDY0X3QsIGludDY0eDJfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2V0cV9sYW5lX3M2NCkpKQppbnQ2NHgyX3QgX19hcm1fdnNldHFfbGFuZShpbnQ2NF90LCBpbnQ2NHgyX3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNldHFfbGFuZV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnNldHFfbGFuZV9zOChpbnQ4X3QsIGludDh4MTZfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2V0cV9sYW5lX3M4KSkpCmludDh4MTZfdCBfX2FybV92c2V0cV9sYW5lKGludDhfdCwgaW50OHgxNl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzZXRxX2xhbmVfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnNldHFfbGFuZV91MTYodWludDE2X3QsIHVpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNldHFfbGFuZV91MTYpKSkKdWludDE2eDhfdCBfX2FybV92c2V0cV9sYW5lKHVpbnQxNl90LCB1aW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzZXRxX2xhbmVfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdnNldHFfbGFuZV91MzIodWludDMyX3QsIHVpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNldHFfbGFuZV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92c2V0cV9sYW5lKHVpbnQzMl90LCB1aW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzZXRxX2xhbmVfdTY0KSkpCnVpbnQ2NHgyX3QgX19hcm1fdnNldHFfbGFuZV91NjQodWludDY0X3QsIHVpbnQ2NHgyX3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNldHFfbGFuZV91NjQpKSkKdWludDY0eDJfdCBfX2FybV92c2V0cV9sYW5lKHVpbnQ2NF90LCB1aW50NjR4Ml90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzZXRxX2xhbmVfdTgpKSkKdWludDh4MTZfdCBfX2FybV92c2V0cV9sYW5lX3U4KHVpbnQ4X3QsIHVpbnQ4eDE2X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNldHFfbGFuZV91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZzZXRxX2xhbmUodWludDhfdCwgdWludDh4MTZfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsY3FfbV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZzaGxjcV9tX3MxNihpbnQxNng4X3QsIHVpbnQzMl90ICosIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsY3FfbV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZzaGxjcV9tKGludDE2eDhfdCwgdWludDMyX3QgKiwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxjcV9tX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnNobGNxX21fczMyKGludDMyeDRfdCwgdWludDMyX3QgKiwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxjcV9tX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnNobGNxX20oaW50MzJ4NF90LCB1aW50MzJfdCAqLCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobGNxX21fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZzaGxjcV9tX3M4KGludDh4MTZfdCwgdWludDMyX3QgKiwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxjcV9tX3M4KSkpCmludDh4MTZfdCBfX2FybV92c2hsY3FfbShpbnQ4eDE2X3QsIHVpbnQzMl90ICosIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsY3FfbV91MTYpKSkKdWludDE2eDhfdCBfX2FybV92c2hsY3FfbV91MTYodWludDE2eDhfdCwgdWludDMyX3QgKiwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxjcV9tX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZzaGxjcV9tKHVpbnQxNng4X3QsIHVpbnQzMl90ICosIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsY3FfbV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92c2hsY3FfbV91MzIodWludDMyeDRfdCwgdWludDMyX3QgKiwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxjcV9tX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZzaGxjcV9tKHVpbnQzMng0X3QsIHVpbnQzMl90ICosIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsY3FfbV91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZzaGxjcV9tX3U4KHVpbnQ4eDE2X3QsIHVpbnQzMl90ICosIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsY3FfbV91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZzaGxjcV9tKHVpbnQ4eDE2X3QsIHVpbnQzMl90ICosIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsY3FfczE2KSkpCmludDE2eDhfdCBfX2FybV92c2hsY3FfczE2KGludDE2eDhfdCwgdWludDMyX3QgKiwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsY3FfczE2KSkpCmludDE2eDhfdCBfX2FybV92c2hsY3EoaW50MTZ4OF90LCB1aW50MzJfdCAqLCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxjcV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZzaGxjcV9zMzIoaW50MzJ4NF90LCB1aW50MzJfdCAqLCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxjcV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZzaGxjcShpbnQzMng0X3QsIHVpbnQzMl90ICosIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobGNxX3M4KSkpCmludDh4MTZfdCBfX2FybV92c2hsY3FfczgoaW50OHgxNl90LCB1aW50MzJfdCAqLCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxjcV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnNobGNxKGludDh4MTZfdCwgdWludDMyX3QgKiwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsY3FfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnNobGNxX3UxNih1aW50MTZ4OF90LCB1aW50MzJfdCAqLCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxjcV91MTYpKSkKdWludDE2eDhfdCBfX2FybV92c2hsY3EodWludDE2eDhfdCwgdWludDMyX3QgKiwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsY3FfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdnNobGNxX3UzMih1aW50MzJ4NF90LCB1aW50MzJfdCAqLCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxjcV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92c2hsY3EodWludDMyeDRfdCwgdWludDMyX3QgKiwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsY3FfdTgpKSkKdWludDh4MTZfdCBfX2FybV92c2hsY3FfdTgodWludDh4MTZfdCwgdWludDMyX3QgKiwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsY3FfdTgpKSkKdWludDh4MTZfdCBfX2FybV92c2hsY3EodWludDh4MTZfdCwgdWludDMyX3QgKiwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsbGJxX21fbl9zMTYpKSkKaW50MzJ4NF90IF9fYXJtX3ZzaGxsYnFfbV9uX3MxNihpbnQzMng0X3QsIGludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxsYnFfbV9uX3MxNikpKQppbnQzMng0X3QgX19hcm1fdnNobGxicV9tKGludDMyeDRfdCwgaW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobGxicV9tX25fczgpKSkKaW50MTZ4OF90IF9fYXJtX3ZzaGxsYnFfbV9uX3M4KGludDE2eDhfdCwgaW50OHgxNl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobGxicV9tX25fczgpKSkKaW50MTZ4OF90IF9fYXJtX3ZzaGxsYnFfbShpbnQxNng4X3QsIGludDh4MTZfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxsYnFfbV9uX3UxNikpKQp1aW50MzJ4NF90IF9fYXJtX3ZzaGxsYnFfbV9uX3UxNih1aW50MzJ4NF90LCB1aW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobGxicV9tX25fdTE2KSkpCnVpbnQzMng0X3QgX19hcm1fdnNobGxicV9tKHVpbnQzMng0X3QsIHVpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsbGJxX21fbl91OCkpKQp1aW50MTZ4OF90IF9fYXJtX3ZzaGxsYnFfbV9uX3U4KHVpbnQxNng4X3QsIHVpbnQ4eDE2X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsbGJxX21fbl91OCkpKQp1aW50MTZ4OF90IF9fYXJtX3ZzaGxsYnFfbSh1aW50MTZ4OF90LCB1aW50OHgxNl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobGxicV9uX3MxNikpKQppbnQzMng0X3QgX19hcm1fdnNobGxicV9uX3MxNihpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobGxicV9uX3MxNikpKQppbnQzMng0X3QgX19hcm1fdnNobGxicShpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobGxicV9uX3M4KSkpCmludDE2eDhfdCBfX2FybV92c2hsbGJxX25fczgoaW50OHgxNl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxsYnFfbl9zOCkpKQppbnQxNng4X3QgX19hcm1fdnNobGxicShpbnQ4eDE2X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobGxicV9uX3UxNikpKQp1aW50MzJ4NF90IF9fYXJtX3ZzaGxsYnFfbl91MTYodWludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsbGJxX25fdTE2KSkpCnVpbnQzMng0X3QgX19hcm1fdnNobGxicSh1aW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxsYnFfbl91OCkpKQp1aW50MTZ4OF90IF9fYXJtX3ZzaGxsYnFfbl91OCh1aW50OHgxNl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxsYnFfbl91OCkpKQp1aW50MTZ4OF90IF9fYXJtX3ZzaGxsYnEodWludDh4MTZfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsbGJxX3hfbl9zMTYpKSkKaW50MzJ4NF90IF9fYXJtX3ZzaGxsYnFfeF9uX3MxNihpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsbGJxX3hfbl9zMTYpKSkKaW50MzJ4NF90IF9fYXJtX3ZzaGxsYnFfeChpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsbGJxX3hfbl9zOCkpKQppbnQxNng4X3QgX19hcm1fdnNobGxicV94X25fczgoaW50OHgxNl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobGxicV94X25fczgpKSkKaW50MTZ4OF90IF9fYXJtX3ZzaGxsYnFfeChpbnQ4eDE2X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsbGJxX3hfbl91MTYpKSkKdWludDMyeDRfdCBfX2FybV92c2hsbGJxX3hfbl91MTYodWludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxsYnFfeF9uX3UxNikpKQp1aW50MzJ4NF90IF9fYXJtX3ZzaGxsYnFfeCh1aW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobGxicV94X25fdTgpKSkKdWludDE2eDhfdCBfX2FybV92c2hsbGJxX3hfbl91OCh1aW50OHgxNl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobGxicV94X25fdTgpKSkKdWludDE2eDhfdCBfX2FybV92c2hsbGJxX3godWludDh4MTZfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxsdHFfbV9uX3MxNikpKQppbnQzMng0X3QgX19hcm1fdnNobGx0cV9tX25fczE2KGludDMyeDRfdCwgaW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobGx0cV9tX25fczE2KSkpCmludDMyeDRfdCBfX2FybV92c2hsbHRxX20oaW50MzJ4NF90LCBpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsbHRxX21fbl9zOCkpKQppbnQxNng4X3QgX19hcm1fdnNobGx0cV9tX25fczgoaW50MTZ4OF90LCBpbnQ4eDE2X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsbHRxX21fbl9zOCkpKQppbnQxNng4X3QgX19hcm1fdnNobGx0cV9tKGludDE2eDhfdCwgaW50OHgxNl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobGx0cV9tX25fdTE2KSkpCnVpbnQzMng0X3QgX19hcm1fdnNobGx0cV9tX25fdTE2KHVpbnQzMng0X3QsIHVpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsbHRxX21fbl91MTYpKSkKdWludDMyeDRfdCBfX2FybV92c2hsbHRxX20odWludDMyeDRfdCwgdWludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxsdHFfbV9uX3U4KSkpCnVpbnQxNng4X3QgX19hcm1fdnNobGx0cV9tX25fdTgodWludDE2eDhfdCwgdWludDh4MTZfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxsdHFfbV9uX3U4KSkpCnVpbnQxNng4X3QgX19hcm1fdnNobGx0cV9tKHVpbnQxNng4X3QsIHVpbnQ4eDE2X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsbHRxX25fczE2KSkpCmludDMyeDRfdCBfX2FybV92c2hsbHRxX25fczE2KGludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsbHRxX25fczE2KSkpCmludDMyeDRfdCBfX2FybV92c2hsbHRxKGludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsbHRxX25fczgpKSkKaW50MTZ4OF90IF9fYXJtX3ZzaGxsdHFfbl9zOChpbnQ4eDE2X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobGx0cV9uX3M4KSkpCmludDE2eDhfdCBfX2FybV92c2hsbHRxKGludDh4MTZfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsbHRxX25fdTE2KSkpCnVpbnQzMng0X3QgX19hcm1fdnNobGx0cV9uX3UxNih1aW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxsdHFfbl91MTYpKSkKdWludDMyeDRfdCBfX2FybV92c2hsbHRxKHVpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobGx0cV9uX3U4KSkpCnVpbnQxNng4X3QgX19hcm1fdnNobGx0cV9uX3U4KHVpbnQ4eDE2X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobGx0cV9uX3U4KSkpCnVpbnQxNng4X3QgX19hcm1fdnNobGx0cSh1aW50OHgxNl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxsdHFfeF9uX3MxNikpKQppbnQzMng0X3QgX19hcm1fdnNobGx0cV94X25fczE2KGludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxsdHFfeF9uX3MxNikpKQppbnQzMng0X3QgX19hcm1fdnNobGx0cV94KGludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxsdHFfeF9uX3M4KSkpCmludDE2eDhfdCBfX2FybV92c2hsbHRxX3hfbl9zOChpbnQ4eDE2X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsbHRxX3hfbl9zOCkpKQppbnQxNng4X3QgX19hcm1fdnNobGx0cV94KGludDh4MTZfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxsdHFfeF9uX3UxNikpKQp1aW50MzJ4NF90IF9fYXJtX3ZzaGxsdHFfeF9uX3UxNih1aW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobGx0cV94X25fdTE2KSkpCnVpbnQzMng0X3QgX19hcm1fdnNobGx0cV94KHVpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsbHRxX3hfbl91OCkpKQp1aW50MTZ4OF90IF9fYXJtX3ZzaGxsdHFfeF9uX3U4KHVpbnQ4eDE2X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsbHRxX3hfbl91OCkpKQp1aW50MTZ4OF90IF9fYXJtX3ZzaGxsdHFfeCh1aW50OHgxNl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfbV9uX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnNobHFfbV9uX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX21fbl9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZzaGxxX21fbihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX21fbl9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZzaGxxX21fbl9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9tX25fczMyKSkpCmludDMyeDRfdCBfX2FybV92c2hscV9tX24oaW50MzJ4NF90LCBpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9tX25fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZzaGxxX21fbl9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX21fbl9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnNobHFfbV9uKGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfbV9uX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZzaGxxX21fbl91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX21fbl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92c2hscV9tX24odWludDE2eDhfdCwgdWludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX21fbl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92c2hscV9tX25fdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9tX25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdnNobHFfbV9uKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9tX25fdTgpKSkKdWludDh4MTZfdCBfX2FybV92c2hscV9tX25fdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX21fbl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZzaGxxX21fbih1aW50OHgxNl90LCB1aW50OHgxNl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfbV9yX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnNobHFfbV9yX3MxNihpbnQxNng4X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfbV9yX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnNobHFfbV9yKGludDE2eDhfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9tX3JfczMyKSkpCmludDMyeDRfdCBfX2FybV92c2hscV9tX3JfczMyKGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9tX3JfczMyKSkpCmludDMyeDRfdCBfX2FybV92c2hscV9tX3IoaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX21fcl9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnNobHFfbV9yX3M4KGludDh4MTZfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9tX3JfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZzaGxxX21fcihpbnQ4eDE2X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfbV9yX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZzaGxxX21fcl91MTYodWludDE2eDhfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9tX3JfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnNobHFfbV9yKHVpbnQxNng4X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfbV9yX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZzaGxxX21fcl91MzIodWludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9tX3JfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdnNobHFfbV9yKHVpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfbV9yX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnNobHFfbV9yX3U4KHVpbnQ4eDE2X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfbV9yX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnNobHFfbV9yKHVpbnQ4eDE2X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfbV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZzaGxxX21fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfbV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZzaGxxX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9tX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnNobHFfbV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9tX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnNobHFfbShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX21fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZzaGxxX21fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9tX3M4KSkpCmludDh4MTZfdCBfX2FybV92c2hscV9tKGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfbV91MTYpKSkKdWludDE2eDhfdCBfX2FybV92c2hscV9tX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfbV91MTYpKSkKdWludDE2eDhfdCBfX2FybV92c2hscV9tKHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9tX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZzaGxxX21fdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9tX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZzaGxxX20odWludDMyeDRfdCwgdWludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX21fdTgpKSkKdWludDh4MTZfdCBfX2FybV92c2hscV9tX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9tX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnNobHFfbSh1aW50OHgxNl90LCB1aW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfbl9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZzaGxxX25fczE2KGludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9uX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnNobHFfbihpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfbl9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZzaGxxX25fczMyKGludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9uX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnNobHFfbihpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfbl9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnNobHFfbl9zOChpbnQ4eDE2X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfbl9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnNobHFfbihpbnQ4eDE2X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfbl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92c2hscV9uX3UxNih1aW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnNobHFfbih1aW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdnNobHFfbl91MzIodWludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9uX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZzaGxxX24odWludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9uX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnNobHFfbl91OCh1aW50OHgxNl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX25fdTgpKSkKdWludDh4MTZfdCBfX2FybV92c2hscV9uKHVpbnQ4eDE2X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfcl9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZzaGxxX3JfczE2KGludDE2eDhfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfcl9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZzaGxxX3IoaW50MTZ4OF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9yX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnNobHFfcl9zMzIoaW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9yX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnNobHFfcihpbnQzMng0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX3JfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZzaGxxX3JfczgoaW50OHgxNl90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9yX3M4KSkpCmludDh4MTZfdCBfX2FybV92c2hscV9yKGludDh4MTZfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfcl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92c2hscV9yX3UxNih1aW50MTZ4OF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9yX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZzaGxxX3IodWludDE2eDhfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfcl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92c2hscV9yX3UzMih1aW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9yX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZzaGxxX3IodWludDMyeDRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfcl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZzaGxxX3JfdTgodWludDh4MTZfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfcl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZzaGxxX3IodWludDh4MTZfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfczE2KSkpCmludDE2eDhfdCBfX2FybV92c2hscV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnNobHEoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnNobHFfczMyKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZzaGxxKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnNobHFfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX3M4KSkpCmludDh4MTZfdCBfX2FybV92c2hscShpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnNobHFfdTE2KHVpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnNobHEodWludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92c2hscV91MzIodWludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV91MzIpKSkKdWludDMyeDRfdCBfX2FybV92c2hscSh1aW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnNobHFfdTgodWludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZzaGxxKHVpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfeF9uX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnNobHFfeF9uX3MxNihpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV94X25fczE2KSkpCmludDE2eDhfdCBfX2FybV92c2hscV94X24oaW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfeF9uX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnNobHFfeF9uX3MzMihpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV94X25fczMyKSkpCmludDMyeDRfdCBfX2FybV92c2hscV94X24oaW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfeF9uX3M4KSkpCmludDh4MTZfdCBfX2FybV92c2hscV94X25fczgoaW50OHgxNl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfeF9uX3M4KSkpCmludDh4MTZfdCBfX2FybV92c2hscV94X24oaW50OHgxNl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfeF9uX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZzaGxxX3hfbl91MTYodWludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX3hfbl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92c2hscV94X24odWludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX3hfbl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92c2hscV94X25fdTMyKHVpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV94X25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdnNobHFfeF9uKHVpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV94X25fdTgpKSkKdWludDh4MTZfdCBfX2FybV92c2hscV94X25fdTgodWludDh4MTZfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX3hfbl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZzaGxxX3hfbih1aW50OHgxNl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfeF9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZzaGxxX3hfczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX3hfczE2KSkpCmludDE2eDhfdCBfX2FybV92c2hscV94KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX3hfczMyKSkpCmludDMyeDRfdCBfX2FybV92c2hscV94X3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV94X3MzMikpKQppbnQzMng0X3QgX19hcm1fdnNobHFfeChpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV94X3M4KSkpCmludDh4MTZfdCBfX2FybV92c2hscV94X3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX3hfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZzaGxxX3goaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfeF91MTYpKSkKdWludDE2eDhfdCBfX2FybV92c2hscV94X3UxNih1aW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfeF91MTYpKSkKdWludDE2eDhfdCBfX2FybV92c2hscV94KHVpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV94X3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZzaGxxX3hfdTMyKHVpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV94X3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZzaGxxX3godWludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX3hfdTgpKSkKdWludDh4MTZfdCBfX2FybV92c2hscV94X3U4KHVpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV94X3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnNobHFfeCh1aW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocm5icV9tX25fczE2KSkpCmludDh4MTZfdCBfX2FybV92c2hybmJxX21fbl9zMTYoaW50OHgxNl90LCBpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hybmJxX21fbl9zMTYpKSkKaW50OHgxNl90IF9fYXJtX3ZzaHJuYnFfbShpbnQ4eDE2X3QsIGludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJuYnFfbV9uX3MzMikpKQppbnQxNng4X3QgX19hcm1fdnNocm5icV9tX25fczMyKGludDE2eDhfdCwgaW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocm5icV9tX25fczMyKSkpCmludDE2eDhfdCBfX2FybV92c2hybmJxX20oaW50MTZ4OF90LCBpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hybmJxX21fbl91MTYpKSkKdWludDh4MTZfdCBfX2FybV92c2hybmJxX21fbl91MTYodWludDh4MTZfdCwgdWludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJuYnFfbV9uX3UxNikpKQp1aW50OHgxNl90IF9fYXJtX3ZzaHJuYnFfbSh1aW50OHgxNl90LCB1aW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocm5icV9tX25fdTMyKSkpCnVpbnQxNng4X3QgX19hcm1fdnNocm5icV9tX25fdTMyKHVpbnQxNng4X3QsIHVpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hybmJxX21fbl91MzIpKSkKdWludDE2eDhfdCBfX2FybV92c2hybmJxX20odWludDE2eDhfdCwgdWludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJuYnFfbl9zMTYpKSkKaW50OHgxNl90IF9fYXJtX3ZzaHJuYnFfbl9zMTYoaW50OHgxNl90LCBpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocm5icV9uX3MxNikpKQppbnQ4eDE2X3QgX19hcm1fdnNocm5icShpbnQ4eDE2X3QsIGludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hybmJxX25fczMyKSkpCmludDE2eDhfdCBfX2FybV92c2hybmJxX25fczMyKGludDE2eDhfdCwgaW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJuYnFfbl9zMzIpKSkKaW50MTZ4OF90IF9fYXJtX3ZzaHJuYnEoaW50MTZ4OF90LCBpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocm5icV9uX3UxNikpKQp1aW50OHgxNl90IF9fYXJtX3ZzaHJuYnFfbl91MTYodWludDh4MTZfdCwgdWludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hybmJxX25fdTE2KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnNocm5icSh1aW50OHgxNl90LCB1aW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJuYnFfbl91MzIpKSkKdWludDE2eDhfdCBfX2FybV92c2hybmJxX25fdTMyKHVpbnQxNng4X3QsIHVpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocm5icV9uX3UzMikpKQp1aW50MTZ4OF90IF9fYXJtX3ZzaHJuYnEodWludDE2eDhfdCwgdWludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hybnRxX21fbl9zMTYpKSkKaW50OHgxNl90IF9fYXJtX3ZzaHJudHFfbV9uX3MxNihpbnQ4eDE2X3QsIGludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJudHFfbV9uX3MxNikpKQppbnQ4eDE2X3QgX19hcm1fdnNocm50cV9tKGludDh4MTZfdCwgaW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocm50cV9tX25fczMyKSkpCmludDE2eDhfdCBfX2FybV92c2hybnRxX21fbl9zMzIoaW50MTZ4OF90LCBpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hybnRxX21fbl9zMzIpKSkKaW50MTZ4OF90IF9fYXJtX3ZzaHJudHFfbShpbnQxNng4X3QsIGludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJudHFfbV9uX3UxNikpKQp1aW50OHgxNl90IF9fYXJtX3ZzaHJudHFfbV9uX3UxNih1aW50OHgxNl90LCB1aW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocm50cV9tX25fdTE2KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnNocm50cV9tKHVpbnQ4eDE2X3QsIHVpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hybnRxX21fbl91MzIpKSkKdWludDE2eDhfdCBfX2FybV92c2hybnRxX21fbl91MzIodWludDE2eDhfdCwgdWludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJudHFfbV9uX3UzMikpKQp1aW50MTZ4OF90IF9fYXJtX3ZzaHJudHFfbSh1aW50MTZ4OF90LCB1aW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocm50cV9uX3MxNikpKQppbnQ4eDE2X3QgX19hcm1fdnNocm50cV9uX3MxNihpbnQ4eDE2X3QsIGludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hybnRxX25fczE2KSkpCmludDh4MTZfdCBfX2FybV92c2hybnRxKGludDh4MTZfdCwgaW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJudHFfbl9zMzIpKSkKaW50MTZ4OF90IF9fYXJtX3ZzaHJudHFfbl9zMzIoaW50MTZ4OF90LCBpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocm50cV9uX3MzMikpKQppbnQxNng4X3QgX19hcm1fdnNocm50cShpbnQxNng4X3QsIGludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hybnRxX25fdTE2KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnNocm50cV9uX3UxNih1aW50OHgxNl90LCB1aW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJudHFfbl91MTYpKSkKdWludDh4MTZfdCBfX2FybV92c2hybnRxKHVpbnQ4eDE2X3QsIHVpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocm50cV9uX3UzMikpKQp1aW50MTZ4OF90IF9fYXJtX3ZzaHJudHFfbl91MzIodWludDE2eDhfdCwgdWludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hybnRxX25fdTMyKSkpCnVpbnQxNng4X3QgX19hcm1fdnNocm50cSh1aW50MTZ4OF90LCB1aW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJxX21fbl9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZzaHJxX21fbl9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hycV9tX25fczE2KSkpCmludDE2eDhfdCBfX2FybV92c2hycV9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocnFfbV9uX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnNocnFfbV9uX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJxX21fbl9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZzaHJxX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hycV9tX25fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZzaHJxX21fbl9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJxX21fbl9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnNocnFfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJxX21fbl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92c2hycV9tX25fdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hycV9tX25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnNocnFfbSh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocnFfbV9uX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZzaHJxX21fbl91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJxX21fbl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92c2hycV9tKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hycV9tX25fdTgpKSkKdWludDh4MTZfdCBfX2FybV92c2hycV9tX25fdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJxX21fbl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZzaHJxX20odWludDh4MTZfdCwgdWludDh4MTZfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJxX25fczE2KSkpCmludDE2eDhfdCBfX2FybV92c2hycV9uX3MxNihpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocnFfbl9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZzaHJxKGludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hycV9uX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnNocnFfbl9zMzIoaW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJxX25fczMyKSkpCmludDMyeDRfdCBfX2FybV92c2hycShpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocnFfbl9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnNocnFfbl9zOChpbnQ4eDE2X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocnFfbl9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnNocnEoaW50OHgxNl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJxX25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnNocnFfbl91MTYodWludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hycV9uX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZzaHJxKHVpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocnFfbl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92c2hycV9uX3UzMih1aW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJxX25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdnNocnEodWludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hycV9uX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnNocnFfbl91OCh1aW50OHgxNl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJxX25fdTgpKSkKdWludDh4MTZfdCBfX2FybV92c2hycSh1aW50OHgxNl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJxX3hfbl9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZzaHJxX3hfbl9zMTYoaW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocnFfeF9uX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnNocnFfeChpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hycV94X25fczMyKSkpCmludDMyeDRfdCBfX2FybV92c2hycV94X25fczMyKGludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJxX3hfbl9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZzaHJxX3goaW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocnFfeF9uX3M4KSkpCmludDh4MTZfdCBfX2FybV92c2hycV94X25fczgoaW50OHgxNl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocnFfeF9uX3M4KSkpCmludDh4MTZfdCBfX2FybV92c2hycV94KGludDh4MTZfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJxX3hfbl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92c2hycV94X25fdTE2KHVpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hycV94X25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnNocnFfeCh1aW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocnFfeF9uX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZzaHJxX3hfbl91MzIodWludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJxX3hfbl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92c2hycV94KHVpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hycV94X25fdTgpKSkKdWludDh4MTZfdCBfX2FybV92c2hycV94X25fdTgodWludDh4MTZfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJxX3hfbl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZzaHJxX3godWludDh4MTZfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzbGlxX21fbl9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZzbGlxX21fbl9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2xpcV9tX25fczE2KSkpCmludDE2eDhfdCBfX2FybV92c2xpcV9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNsaXFfbV9uX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnNsaXFfbV9uX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzbGlxX21fbl9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZzbGlxX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2xpcV9tX25fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZzbGlxX21fbl9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzbGlxX21fbl9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnNsaXFfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzbGlxX21fbl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92c2xpcV9tX25fdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2xpcV9tX25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnNsaXFfbSh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNsaXFfbV9uX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZzbGlxX21fbl91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzbGlxX21fbl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92c2xpcV9tKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2xpcV9tX25fdTgpKSkKdWludDh4MTZfdCBfX2FybV92c2xpcV9tX25fdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzbGlxX21fbl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZzbGlxX20odWludDh4MTZfdCwgdWludDh4MTZfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzbGlxX25fczE2KSkpCmludDE2eDhfdCBfX2FybV92c2xpcV9uX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2xpcV9uX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnNsaXEoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNsaXFfbl9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZzbGlxX25fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzbGlxX25fczMyKSkpCmludDMyeDRfdCBfX2FybV92c2xpcShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2xpcV9uX3M4KSkpCmludDh4MTZfdCBfX2FybV92c2xpcV9uX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzbGlxX25fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZzbGlxKGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzbGlxX25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnNsaXFfbl91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2xpcV9uX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZzbGlxKHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNsaXFfbl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92c2xpcV9uX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzbGlxX25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdnNsaXEodWludDMyeDRfdCwgdWludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2xpcV9uX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnNsaXFfbl91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzbGlxX25fdTgpKSkKdWludDh4MTZfdCBfX2FybV92c2xpcSh1aW50OHgxNl90LCB1aW50OHgxNl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzcmlxX21fbl9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZzcmlxX21fbl9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3JpcV9tX25fczE2KSkpCmludDE2eDhfdCBfX2FybV92c3JpcV9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNyaXFfbV9uX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnNyaXFfbV9uX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzcmlxX21fbl9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZzcmlxX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3JpcV9tX25fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZzcmlxX21fbl9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzcmlxX21fbl9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnNyaXFfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzcmlxX21fbl91MTYpKSkKdWludDE2eDhfdCBfX2FybV92c3JpcV9tX25fdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3JpcV9tX25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnNyaXFfbSh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNyaXFfbV9uX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZzcmlxX21fbl91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzcmlxX21fbl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92c3JpcV9tKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3JpcV9tX25fdTgpKSkKdWludDh4MTZfdCBfX2FybV92c3JpcV9tX25fdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzcmlxX21fbl91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZzcmlxX20odWludDh4MTZfdCwgdWludDh4MTZfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzcmlxX25fczE2KSkpCmludDE2eDhfdCBfX2FybV92c3JpcV9uX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3JpcV9uX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnNyaXEoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNyaXFfbl9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZzcmlxX25fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzcmlxX25fczMyKSkpCmludDMyeDRfdCBfX2FybV92c3JpcShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3JpcV9uX3M4KSkpCmludDh4MTZfdCBfX2FybV92c3JpcV9uX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzcmlxX25fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZzcmlxKGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzcmlxX25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnNyaXFfbl91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3JpcV9uX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZzcmlxKHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNyaXFfbl91MzIpKSkKdWludDMyeDRfdCBfX2FybV92c3JpcV9uX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzcmlxX25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdnNyaXEodWludDMyeDRfdCwgdWludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3JpcV9uX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnNyaXFfbl91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzcmlxX25fdTgpKSkKdWludDh4MTZfdCBfX2FybV92c3JpcSh1aW50OHgxNl90LCB1aW50OHgxNl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdDFxX3BfczE2KSkpCnZvaWQgX19hcm1fdnN0MXFfcF9zMTYoaW50MTZfdCAqLCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0MXFfcF9zMTYpKSkKdm9pZCBfX2FybV92c3QxcV9wKGludDE2X3QgKiwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdDFxX3BfczMyKSkpCnZvaWQgX19hcm1fdnN0MXFfcF9zMzIoaW50MzJfdCAqLCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0MXFfcF9zMzIpKSkKdm9pZCBfX2FybV92c3QxcV9wKGludDMyX3QgKiwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdDFxX3BfczgpKSkKdm9pZCBfX2FybV92c3QxcV9wX3M4KGludDhfdCAqLCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0MXFfcF9zOCkpKQp2b2lkIF9fYXJtX3ZzdDFxX3AoaW50OF90ICosIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3QxcV9wX3UxNikpKQp2b2lkIF9fYXJtX3ZzdDFxX3BfdTE2KHVpbnQxNl90ICosIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0MXFfcF91MTYpKSkKdm9pZCBfX2FybV92c3QxcV9wKHVpbnQxNl90ICosIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0MXFfcF91MzIpKSkKdm9pZCBfX2FybV92c3QxcV9wX3UzMih1aW50MzJfdCAqLCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdDFxX3BfdTMyKSkpCnZvaWQgX19hcm1fdnN0MXFfcCh1aW50MzJfdCAqLCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdDFxX3BfdTgpKSkKdm9pZCBfX2FybV92c3QxcV9wX3U4KHVpbnQ4X3QgKiwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3QxcV9wX3U4KSkpCnZvaWQgX19hcm1fdnN0MXFfcCh1aW50OF90ICosIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0MXFfczE2KSkpCnZvaWQgX19hcm1fdnN0MXFfczE2KGludDE2X3QgKiwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3QxcV9zMTYpKSkKdm9pZCBfX2FybV92c3QxcShpbnQxNl90ICosIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0MXFfczMyKSkpCnZvaWQgX19hcm1fdnN0MXFfczMyKGludDMyX3QgKiwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3QxcV9zMzIpKSkKdm9pZCBfX2FybV92c3QxcShpbnQzMl90ICosIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0MXFfczgpKSkKdm9pZCBfX2FybV92c3QxcV9zOChpbnQ4X3QgKiwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3QxcV9zOCkpKQp2b2lkIF9fYXJtX3ZzdDFxKGludDhfdCAqLCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdDFxX3UxNikpKQp2b2lkIF9fYXJtX3ZzdDFxX3UxNih1aW50MTZfdCAqLCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3QxcV91MTYpKSkKdm9pZCBfX2FybV92c3QxcSh1aW50MTZfdCAqLCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3QxcV91MzIpKSkKdm9pZCBfX2FybV92c3QxcV91MzIodWludDMyX3QgKiwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0MXFfdTMyKSkpCnZvaWQgX19hcm1fdnN0MXEodWludDMyX3QgKiwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0MXFfdTgpKSkKdm9pZCBfX2FybV92c3QxcV91OCh1aW50OF90ICosIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdDFxX3U4KSkpCnZvaWQgX19hcm1fdnN0MXEodWludDhfdCAqLCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3QycV9zMTYpKSkKdm9pZCBfX2FybV92c3QycV9zMTYoaW50MTZfdCAqLCBpbnQxNng4eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0MnFfczE2KSkpCnZvaWQgX19hcm1fdnN0MnEoaW50MTZfdCAqLCBpbnQxNng4eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0MnFfczMyKSkpCnZvaWQgX19hcm1fdnN0MnFfczMyKGludDMyX3QgKiwgaW50MzJ4NHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdDJxX3MzMikpKQp2b2lkIF9fYXJtX3ZzdDJxKGludDMyX3QgKiwgaW50MzJ4NHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdDJxX3M4KSkpCnZvaWQgX19hcm1fdnN0MnFfczgoaW50OF90ICosIGludDh4MTZ4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3QycV9zOCkpKQp2b2lkIF9fYXJtX3ZzdDJxKGludDhfdCAqLCBpbnQ4eDE2eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0MnFfdTE2KSkpCnZvaWQgX19hcm1fdnN0MnFfdTE2KHVpbnQxNl90ICosIHVpbnQxNng4eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0MnFfdTE2KSkpCnZvaWQgX19hcm1fdnN0MnEodWludDE2X3QgKiwgdWludDE2eDh4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3QycV91MzIpKSkKdm9pZCBfX2FybV92c3QycV91MzIodWludDMyX3QgKiwgdWludDMyeDR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3QycV91MzIpKSkKdm9pZCBfX2FybV92c3QycSh1aW50MzJfdCAqLCB1aW50MzJ4NHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdDJxX3U4KSkpCnZvaWQgX19hcm1fdnN0MnFfdTgodWludDhfdCAqLCB1aW50OHgxNngyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdDJxX3U4KSkpCnZvaWQgX19hcm1fdnN0MnEodWludDhfdCAqLCB1aW50OHgxNngyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdDRxX3MxNikpKQp2b2lkIF9fYXJtX3ZzdDRxX3MxNihpbnQxNl90ICosIGludDE2eDh4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Q0cV9zMTYpKSkKdm9pZCBfX2FybV92c3Q0cShpbnQxNl90ICosIGludDE2eDh4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Q0cV9zMzIpKSkKdm9pZCBfX2FybV92c3Q0cV9zMzIoaW50MzJfdCAqLCBpbnQzMng0eDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0NHFfczMyKSkpCnZvaWQgX19hcm1fdnN0NHEoaW50MzJfdCAqLCBpbnQzMng0eDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0NHFfczgpKSkKdm9pZCBfX2FybV92c3Q0cV9zOChpbnQ4X3QgKiwgaW50OHgxNng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdDRxX3M4KSkpCnZvaWQgX19hcm1fdnN0NHEoaW50OF90ICosIGludDh4MTZ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Q0cV91MTYpKSkKdm9pZCBfX2FybV92c3Q0cV91MTYodWludDE2X3QgKiwgdWludDE2eDh4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Q0cV91MTYpKSkKdm9pZCBfX2FybV92c3Q0cSh1aW50MTZfdCAqLCB1aW50MTZ4OHg0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdDRxX3UzMikpKQp2b2lkIF9fYXJtX3ZzdDRxX3UzMih1aW50MzJfdCAqLCB1aW50MzJ4NHg0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdDRxX3UzMikpKQp2b2lkIF9fYXJtX3ZzdDRxKHVpbnQzMl90ICosIHVpbnQzMng0eDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0NHFfdTgpKSkKdm9pZCBfX2FybV92c3Q0cV91OCh1aW50OF90ICosIHVpbnQ4eDE2eDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0NHFfdTgpKSkKdm9pZCBfX2FybV92c3Q0cSh1aW50OF90ICosIHVpbnQ4eDE2eDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmJxX3BfczE2KSkpCnZvaWQgX19hcm1fdnN0cmJxX3BfczE2KGludDhfdCAqLCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmJxX3BfczE2KSkpCnZvaWQgX19hcm1fdnN0cmJxX3AoaW50OF90ICosIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyYnFfcF9zMzIpKSkKdm9pZCBfX2FybV92c3RyYnFfcF9zMzIoaW50OF90ICosIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyYnFfcF9zMzIpKSkKdm9pZCBfX2FybV92c3RyYnFfcChpbnQ4X3QgKiwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJicV9wX3M4KSkpCnZvaWQgX19hcm1fdnN0cmJxX3BfczgoaW50OF90ICosIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyYnFfcF9zOCkpKQp2b2lkIF9fYXJtX3ZzdHJicV9wKGludDhfdCAqLCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmJxX3BfdTE2KSkpCnZvaWQgX19hcm1fdnN0cmJxX3BfdTE2KHVpbnQ4X3QgKiwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyYnFfcF91MTYpKSkKdm9pZCBfX2FybV92c3RyYnFfcCh1aW50OF90ICosIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmJxX3BfdTMyKSkpCnZvaWQgX19hcm1fdnN0cmJxX3BfdTMyKHVpbnQ4X3QgKiwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyYnFfcF91MzIpKSkKdm9pZCBfX2FybV92c3RyYnFfcCh1aW50OF90ICosIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmJxX3BfdTgpKSkKdm9pZCBfX2FybV92c3RyYnFfcF91OCh1aW50OF90ICosIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmJxX3BfdTgpKSkKdm9pZCBfX2FybV92c3RyYnFfcCh1aW50OF90ICosIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmJxX3MxNikpKQp2b2lkIF9fYXJtX3ZzdHJicV9zMTYoaW50OF90ICosIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmJxX3MxNikpKQp2b2lkIF9fYXJtX3ZzdHJicShpbnQ4X3QgKiwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyYnFfczMyKSkpCnZvaWQgX19hcm1fdnN0cmJxX3MzMihpbnQ4X3QgKiwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyYnFfczMyKSkpCnZvaWQgX19hcm1fdnN0cmJxKGludDhfdCAqLCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJicV9zOCkpKQp2b2lkIF9fYXJtX3ZzdHJicV9zOChpbnQ4X3QgKiwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyYnFfczgpKSkKdm9pZCBfX2FybV92c3RyYnEoaW50OF90ICosIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmJxX3NjYXR0ZXJfb2Zmc2V0X3BfczE2KSkpCnZvaWQgX19hcm1fdnN0cmJxX3NjYXR0ZXJfb2Zmc2V0X3BfczE2KGludDhfdCAqLCB1aW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmJxX3NjYXR0ZXJfb2Zmc2V0X3BfczE2KSkpCnZvaWQgX19hcm1fdnN0cmJxX3NjYXR0ZXJfb2Zmc2V0X3AoaW50OF90ICosIHVpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyYnFfc2NhdHRlcl9vZmZzZXRfcF9zMzIpKSkKdm9pZCBfX2FybV92c3RyYnFfc2NhdHRlcl9vZmZzZXRfcF9zMzIoaW50OF90ICosIHVpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyYnFfc2NhdHRlcl9vZmZzZXRfcF9zMzIpKSkKdm9pZCBfX2FybV92c3RyYnFfc2NhdHRlcl9vZmZzZXRfcChpbnQ4X3QgKiwgdWludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJicV9zY2F0dGVyX29mZnNldF9wX3M4KSkpCnZvaWQgX19hcm1fdnN0cmJxX3NjYXR0ZXJfb2Zmc2V0X3BfczgoaW50OF90ICosIHVpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyYnFfc2NhdHRlcl9vZmZzZXRfcF9zOCkpKQp2b2lkIF9fYXJtX3ZzdHJicV9zY2F0dGVyX29mZnNldF9wKGludDhfdCAqLCB1aW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmJxX3NjYXR0ZXJfb2Zmc2V0X3BfdTE2KSkpCnZvaWQgX19hcm1fdnN0cmJxX3NjYXR0ZXJfb2Zmc2V0X3BfdTE2KHVpbnQ4X3QgKiwgdWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyYnFfc2NhdHRlcl9vZmZzZXRfcF91MTYpKSkKdm9pZCBfX2FybV92c3RyYnFfc2NhdHRlcl9vZmZzZXRfcCh1aW50OF90ICosIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmJxX3NjYXR0ZXJfb2Zmc2V0X3BfdTMyKSkpCnZvaWQgX19hcm1fdnN0cmJxX3NjYXR0ZXJfb2Zmc2V0X3BfdTMyKHVpbnQ4X3QgKiwgdWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyYnFfc2NhdHRlcl9vZmZzZXRfcF91MzIpKSkKdm9pZCBfX2FybV92c3RyYnFfc2NhdHRlcl9vZmZzZXRfcCh1aW50OF90ICosIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmJxX3NjYXR0ZXJfb2Zmc2V0X3BfdTgpKSkKdm9pZCBfX2FybV92c3RyYnFfc2NhdHRlcl9vZmZzZXRfcF91OCh1aW50OF90ICosIHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmJxX3NjYXR0ZXJfb2Zmc2V0X3BfdTgpKSkKdm9pZCBfX2FybV92c3RyYnFfc2NhdHRlcl9vZmZzZXRfcCh1aW50OF90ICosIHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmJxX3NjYXR0ZXJfb2Zmc2V0X3MxNikpKQp2b2lkIF9fYXJtX3ZzdHJicV9zY2F0dGVyX29mZnNldF9zMTYoaW50OF90ICosIHVpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmJxX3NjYXR0ZXJfb2Zmc2V0X3MxNikpKQp2b2lkIF9fYXJtX3ZzdHJicV9zY2F0dGVyX29mZnNldChpbnQ4X3QgKiwgdWludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyYnFfc2NhdHRlcl9vZmZzZXRfczMyKSkpCnZvaWQgX19hcm1fdnN0cmJxX3NjYXR0ZXJfb2Zmc2V0X3MzMihpbnQ4X3QgKiwgdWludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyYnFfc2NhdHRlcl9vZmZzZXRfczMyKSkpCnZvaWQgX19hcm1fdnN0cmJxX3NjYXR0ZXJfb2Zmc2V0KGludDhfdCAqLCB1aW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJicV9zY2F0dGVyX29mZnNldF9zOCkpKQp2b2lkIF9fYXJtX3ZzdHJicV9zY2F0dGVyX29mZnNldF9zOChpbnQ4X3QgKiwgdWludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyYnFfc2NhdHRlcl9vZmZzZXRfczgpKSkKdm9pZCBfX2FybV92c3RyYnFfc2NhdHRlcl9vZmZzZXQoaW50OF90ICosIHVpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmJxX3NjYXR0ZXJfb2Zmc2V0X3UxNikpKQp2b2lkIF9fYXJtX3ZzdHJicV9zY2F0dGVyX29mZnNldF91MTYodWludDhfdCAqLCB1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyYnFfc2NhdHRlcl9vZmZzZXRfdTE2KSkpCnZvaWQgX19hcm1fdnN0cmJxX3NjYXR0ZXJfb2Zmc2V0KHVpbnQ4X3QgKiwgdWludDE2eDhfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmJxX3NjYXR0ZXJfb2Zmc2V0X3UzMikpKQp2b2lkIF9fYXJtX3ZzdHJicV9zY2F0dGVyX29mZnNldF91MzIodWludDhfdCAqLCB1aW50MzJ4NF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyYnFfc2NhdHRlcl9vZmZzZXRfdTMyKSkpCnZvaWQgX19hcm1fdnN0cmJxX3NjYXR0ZXJfb2Zmc2V0KHVpbnQ4X3QgKiwgdWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmJxX3NjYXR0ZXJfb2Zmc2V0X3U4KSkpCnZvaWQgX19hcm1fdnN0cmJxX3NjYXR0ZXJfb2Zmc2V0X3U4KHVpbnQ4X3QgKiwgdWludDh4MTZfdCwgdWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmJxX3NjYXR0ZXJfb2Zmc2V0X3U4KSkpCnZvaWQgX19hcm1fdnN0cmJxX3NjYXR0ZXJfb2Zmc2V0KHVpbnQ4X3QgKiwgdWludDh4MTZfdCwgdWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmJxX3UxNikpKQp2b2lkIF9fYXJtX3ZzdHJicV91MTYodWludDhfdCAqLCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyYnFfdTE2KSkpCnZvaWQgX19hcm1fdnN0cmJxKHVpbnQ4X3QgKiwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmJxX3UzMikpKQp2b2lkIF9fYXJtX3ZzdHJicV91MzIodWludDhfdCAqLCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyYnFfdTMyKSkpCnZvaWQgX19hcm1fdnN0cmJxKHVpbnQ4X3QgKiwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmJxX3U4KSkpCnZvaWQgX19hcm1fdnN0cmJxX3U4KHVpbnQ4X3QgKiwgdWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmJxX3U4KSkpCnZvaWQgX19hcm1fdnN0cmJxKHVpbnQ4X3QgKiwgdWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmRxX3NjYXR0ZXJfYmFzZV9wX3M2NCkpKQp2b2lkIF9fYXJtX3ZzdHJkcV9zY2F0dGVyX2Jhc2VfcF9zNjQodWludDY0eDJfdCwgaW50LCBpbnQ2NHgyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmRxX3NjYXR0ZXJfYmFzZV9wX3M2NCkpKQp2b2lkIF9fYXJtX3ZzdHJkcV9zY2F0dGVyX2Jhc2VfcCh1aW50NjR4Ml90LCBpbnQsIGludDY0eDJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyZHFfc2NhdHRlcl9iYXNlX3BfdTY0KSkpCnZvaWQgX19hcm1fdnN0cmRxX3NjYXR0ZXJfYmFzZV9wX3U2NCh1aW50NjR4Ml90LCBpbnQsIHVpbnQ2NHgyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmRxX3NjYXR0ZXJfYmFzZV9wX3U2NCkpKQp2b2lkIF9fYXJtX3ZzdHJkcV9zY2F0dGVyX2Jhc2VfcCh1aW50NjR4Ml90LCBpbnQsIHVpbnQ2NHgyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmRxX3NjYXR0ZXJfYmFzZV9zNjQpKSkKdm9pZCBfX2FybV92c3RyZHFfc2NhdHRlcl9iYXNlX3M2NCh1aW50NjR4Ml90LCBpbnQsIGludDY0eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmRxX3NjYXR0ZXJfYmFzZV9zNjQpKSkKdm9pZCBfX2FybV92c3RyZHFfc2NhdHRlcl9iYXNlKHVpbnQ2NHgyX3QsIGludCwgaW50NjR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyZHFfc2NhdHRlcl9iYXNlX3U2NCkpKQp2b2lkIF9fYXJtX3ZzdHJkcV9zY2F0dGVyX2Jhc2VfdTY0KHVpbnQ2NHgyX3QsIGludCwgdWludDY0eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmRxX3NjYXR0ZXJfYmFzZV91NjQpKSkKdm9pZCBfX2FybV92c3RyZHFfc2NhdHRlcl9iYXNlKHVpbnQ2NHgyX3QsIGludCwgdWludDY0eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmRxX3NjYXR0ZXJfYmFzZV93Yl9wX3M2NCkpKQp2b2lkIF9fYXJtX3ZzdHJkcV9zY2F0dGVyX2Jhc2Vfd2JfcF9zNjQodWludDY0eDJfdCAqLCBpbnQsIGludDY0eDJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyZHFfc2NhdHRlcl9iYXNlX3diX3BfczY0KSkpCnZvaWQgX19hcm1fdnN0cmRxX3NjYXR0ZXJfYmFzZV93Yl9wKHVpbnQ2NHgyX3QgKiwgaW50LCBpbnQ2NHgyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmRxX3NjYXR0ZXJfYmFzZV93Yl9wX3U2NCkpKQp2b2lkIF9fYXJtX3ZzdHJkcV9zY2F0dGVyX2Jhc2Vfd2JfcF91NjQodWludDY0eDJfdCAqLCBpbnQsIHVpbnQ2NHgyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmRxX3NjYXR0ZXJfYmFzZV93Yl9wX3U2NCkpKQp2b2lkIF9fYXJtX3ZzdHJkcV9zY2F0dGVyX2Jhc2Vfd2JfcCh1aW50NjR4Ml90ICosIGludCwgdWludDY0eDJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyZHFfc2NhdHRlcl9iYXNlX3diX3M2NCkpKQp2b2lkIF9fYXJtX3ZzdHJkcV9zY2F0dGVyX2Jhc2Vfd2JfczY0KHVpbnQ2NHgyX3QgKiwgaW50LCBpbnQ2NHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJkcV9zY2F0dGVyX2Jhc2Vfd2JfczY0KSkpCnZvaWQgX19hcm1fdnN0cmRxX3NjYXR0ZXJfYmFzZV93Yih1aW50NjR4Ml90ICosIGludCwgaW50NjR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyZHFfc2NhdHRlcl9iYXNlX3diX3U2NCkpKQp2b2lkIF9fYXJtX3ZzdHJkcV9zY2F0dGVyX2Jhc2Vfd2JfdTY0KHVpbnQ2NHgyX3QgKiwgaW50LCB1aW50NjR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyZHFfc2NhdHRlcl9iYXNlX3diX3U2NCkpKQp2b2lkIF9fYXJtX3ZzdHJkcV9zY2F0dGVyX2Jhc2Vfd2IodWludDY0eDJfdCAqLCBpbnQsIHVpbnQ2NHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJkcV9zY2F0dGVyX29mZnNldF9wX3M2NCkpKQp2b2lkIF9fYXJtX3ZzdHJkcV9zY2F0dGVyX29mZnNldF9wX3M2NChpbnQ2NF90ICosIHVpbnQ2NHgyX3QsIGludDY0eDJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyZHFfc2NhdHRlcl9vZmZzZXRfcF9zNjQpKSkKdm9pZCBfX2FybV92c3RyZHFfc2NhdHRlcl9vZmZzZXRfcChpbnQ2NF90ICosIHVpbnQ2NHgyX3QsIGludDY0eDJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyZHFfc2NhdHRlcl9vZmZzZXRfcF91NjQpKSkKdm9pZCBfX2FybV92c3RyZHFfc2NhdHRlcl9vZmZzZXRfcF91NjQodWludDY0X3QgKiwgdWludDY0eDJfdCwgdWludDY0eDJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyZHFfc2NhdHRlcl9vZmZzZXRfcF91NjQpKSkKdm9pZCBfX2FybV92c3RyZHFfc2NhdHRlcl9vZmZzZXRfcCh1aW50NjRfdCAqLCB1aW50NjR4Ml90LCB1aW50NjR4Ml90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJkcV9zY2F0dGVyX29mZnNldF9zNjQpKSkKdm9pZCBfX2FybV92c3RyZHFfc2NhdHRlcl9vZmZzZXRfczY0KGludDY0X3QgKiwgdWludDY0eDJfdCwgaW50NjR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyZHFfc2NhdHRlcl9vZmZzZXRfczY0KSkpCnZvaWQgX19hcm1fdnN0cmRxX3NjYXR0ZXJfb2Zmc2V0KGludDY0X3QgKiwgdWludDY0eDJfdCwgaW50NjR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyZHFfc2NhdHRlcl9vZmZzZXRfdTY0KSkpCnZvaWQgX19hcm1fdnN0cmRxX3NjYXR0ZXJfb2Zmc2V0X3U2NCh1aW50NjRfdCAqLCB1aW50NjR4Ml90LCB1aW50NjR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyZHFfc2NhdHRlcl9vZmZzZXRfdTY0KSkpCnZvaWQgX19hcm1fdnN0cmRxX3NjYXR0ZXJfb2Zmc2V0KHVpbnQ2NF90ICosIHVpbnQ2NHgyX3QsIHVpbnQ2NHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJkcV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3BfczY0KSkpCnZvaWQgX19hcm1fdnN0cmRxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfcF9zNjQoaW50NjRfdCAqLCB1aW50NjR4Ml90LCBpbnQ2NHgyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmRxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfcF9zNjQpKSkKdm9pZCBfX2FybV92c3RyZHFfc2NhdHRlcl9zaGlmdGVkX29mZnNldF9wKGludDY0X3QgKiwgdWludDY0eDJfdCwgaW50NjR4Ml90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJkcV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3BfdTY0KSkpCnZvaWQgX19hcm1fdnN0cmRxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfcF91NjQodWludDY0X3QgKiwgdWludDY0eDJfdCwgdWludDY0eDJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyZHFfc2NhdHRlcl9zaGlmdGVkX29mZnNldF9wX3U2NCkpKQp2b2lkIF9fYXJtX3ZzdHJkcV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3AodWludDY0X3QgKiwgdWludDY0eDJfdCwgdWludDY0eDJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyZHFfc2NhdHRlcl9zaGlmdGVkX29mZnNldF9zNjQpKSkKdm9pZCBfX2FybV92c3RyZHFfc2NhdHRlcl9zaGlmdGVkX29mZnNldF9zNjQoaW50NjRfdCAqLCB1aW50NjR4Ml90LCBpbnQ2NHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJkcV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3M2NCkpKQp2b2lkIF9fYXJtX3ZzdHJkcV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0KGludDY0X3QgKiwgdWludDY0eDJfdCwgaW50NjR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyZHFfc2NhdHRlcl9zaGlmdGVkX29mZnNldF91NjQpKSkKdm9pZCBfX2FybV92c3RyZHFfc2NhdHRlcl9zaGlmdGVkX29mZnNldF91NjQodWludDY0X3QgKiwgdWludDY0eDJfdCwgdWludDY0eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmRxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfdTY0KSkpCnZvaWQgX19hcm1fdnN0cmRxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXQodWludDY0X3QgKiwgdWludDY0eDJfdCwgdWludDY0eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmhxX3BfczE2KSkpCnZvaWQgX19hcm1fdnN0cmhxX3BfczE2KGludDE2X3QgKiwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJocV9wX3MxNikpKQp2b2lkIF9fYXJtX3ZzdHJocV9wKGludDE2X3QgKiwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJocV9wX3MzMikpKQp2b2lkIF9fYXJtX3ZzdHJocV9wX3MzMihpbnQxNl90ICosIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyaHFfcF9zMzIpKSkKdm9pZCBfX2FybV92c3RyaHFfcChpbnQxNl90ICosIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyaHFfcF91MTYpKSkKdm9pZCBfX2FybV92c3RyaHFfcF91MTYodWludDE2X3QgKiwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyaHFfcF91MTYpKSkKdm9pZCBfX2FybV92c3RyaHFfcCh1aW50MTZfdCAqLCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJocV9wX3UzMikpKQp2b2lkIF9fYXJtX3ZzdHJocV9wX3UzMih1aW50MTZfdCAqLCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJocV9wX3UzMikpKQp2b2lkIF9fYXJtX3ZzdHJocV9wKHVpbnQxNl90ICosIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmhxX3MxNikpKQp2b2lkIF9fYXJtX3ZzdHJocV9zMTYoaW50MTZfdCAqLCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJocV9zMTYpKSkKdm9pZCBfX2FybV92c3RyaHEoaW50MTZfdCAqLCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJocV9zMzIpKSkKdm9pZCBfX2FybV92c3RyaHFfczMyKGludDE2X3QgKiwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyaHFfczMyKSkpCnZvaWQgX19hcm1fdnN0cmhxKGludDE2X3QgKiwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyaHFfc2NhdHRlcl9vZmZzZXRfcF9zMTYpKSkKdm9pZCBfX2FybV92c3RyaHFfc2NhdHRlcl9vZmZzZXRfcF9zMTYoaW50MTZfdCAqLCB1aW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmhxX3NjYXR0ZXJfb2Zmc2V0X3BfczE2KSkpCnZvaWQgX19hcm1fdnN0cmhxX3NjYXR0ZXJfb2Zmc2V0X3AoaW50MTZfdCAqLCB1aW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmhxX3NjYXR0ZXJfb2Zmc2V0X3BfczMyKSkpCnZvaWQgX19hcm1fdnN0cmhxX3NjYXR0ZXJfb2Zmc2V0X3BfczMyKGludDE2X3QgKiwgdWludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJocV9zY2F0dGVyX29mZnNldF9wX3MzMikpKQp2b2lkIF9fYXJtX3ZzdHJocV9zY2F0dGVyX29mZnNldF9wKGludDE2X3QgKiwgdWludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJocV9zY2F0dGVyX29mZnNldF9wX3UxNikpKQp2b2lkIF9fYXJtX3ZzdHJocV9zY2F0dGVyX29mZnNldF9wX3UxNih1aW50MTZfdCAqLCB1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJocV9zY2F0dGVyX29mZnNldF9wX3UxNikpKQp2b2lkIF9fYXJtX3ZzdHJocV9zY2F0dGVyX29mZnNldF9wKHVpbnQxNl90ICosIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmhxX3NjYXR0ZXJfb2Zmc2V0X3BfdTMyKSkpCnZvaWQgX19hcm1fdnN0cmhxX3NjYXR0ZXJfb2Zmc2V0X3BfdTMyKHVpbnQxNl90ICosIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmhxX3NjYXR0ZXJfb2Zmc2V0X3BfdTMyKSkpCnZvaWQgX19hcm1fdnN0cmhxX3NjYXR0ZXJfb2Zmc2V0X3AodWludDE2X3QgKiwgdWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyaHFfc2NhdHRlcl9vZmZzZXRfczE2KSkpCnZvaWQgX19hcm1fdnN0cmhxX3NjYXR0ZXJfb2Zmc2V0X3MxNihpbnQxNl90ICosIHVpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmhxX3NjYXR0ZXJfb2Zmc2V0X3MxNikpKQp2b2lkIF9fYXJtX3ZzdHJocV9zY2F0dGVyX29mZnNldChpbnQxNl90ICosIHVpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmhxX3NjYXR0ZXJfb2Zmc2V0X3MzMikpKQp2b2lkIF9fYXJtX3ZzdHJocV9zY2F0dGVyX29mZnNldF9zMzIoaW50MTZfdCAqLCB1aW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJocV9zY2F0dGVyX29mZnNldF9zMzIpKSkKdm9pZCBfX2FybV92c3RyaHFfc2NhdHRlcl9vZmZzZXQoaW50MTZfdCAqLCB1aW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJocV9zY2F0dGVyX29mZnNldF91MTYpKSkKdm9pZCBfX2FybV92c3RyaHFfc2NhdHRlcl9vZmZzZXRfdTE2KHVpbnQxNl90ICosIHVpbnQxNng4X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJocV9zY2F0dGVyX29mZnNldF91MTYpKSkKdm9pZCBfX2FybV92c3RyaHFfc2NhdHRlcl9vZmZzZXQodWludDE2X3QgKiwgdWludDE2eDhfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmhxX3NjYXR0ZXJfb2Zmc2V0X3UzMikpKQp2b2lkIF9fYXJtX3ZzdHJocV9zY2F0dGVyX29mZnNldF91MzIodWludDE2X3QgKiwgdWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmhxX3NjYXR0ZXJfb2Zmc2V0X3UzMikpKQp2b2lkIF9fYXJtX3ZzdHJocV9zY2F0dGVyX29mZnNldCh1aW50MTZfdCAqLCB1aW50MzJ4NF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyaHFfc2NhdHRlcl9zaGlmdGVkX29mZnNldF9wX3MxNikpKQp2b2lkIF9fYXJtX3ZzdHJocV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3BfczE2KGludDE2X3QgKiwgdWludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJocV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3BfczE2KSkpCnZvaWQgX19hcm1fdnN0cmhxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfcChpbnQxNl90ICosIHVpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyaHFfc2NhdHRlcl9zaGlmdGVkX29mZnNldF9wX3MzMikpKQp2b2lkIF9fYXJtX3ZzdHJocV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3BfczMyKGludDE2X3QgKiwgdWludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJocV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3BfczMyKSkpCnZvaWQgX19hcm1fdnN0cmhxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfcChpbnQxNl90ICosIHVpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyaHFfc2NhdHRlcl9zaGlmdGVkX29mZnNldF9wX3UxNikpKQp2b2lkIF9fYXJtX3ZzdHJocV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3BfdTE2KHVpbnQxNl90ICosIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmhxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfcF91MTYpKSkKdm9pZCBfX2FybV92c3RyaHFfc2NhdHRlcl9zaGlmdGVkX29mZnNldF9wKHVpbnQxNl90ICosIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmhxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfcF91MzIpKSkKdm9pZCBfX2FybV92c3RyaHFfc2NhdHRlcl9zaGlmdGVkX29mZnNldF9wX3UzMih1aW50MTZfdCAqLCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJocV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3BfdTMyKSkpCnZvaWQgX19hcm1fdnN0cmhxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfcCh1aW50MTZfdCAqLCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJocV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3MxNikpKQp2b2lkIF9fYXJtX3ZzdHJocV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3MxNihpbnQxNl90ICosIHVpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmhxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfczE2KSkpCnZvaWQgX19hcm1fdnN0cmhxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXQoaW50MTZfdCAqLCB1aW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJocV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3MzMikpKQp2b2lkIF9fYXJtX3ZzdHJocV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3MzMihpbnQxNl90ICosIHVpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmhxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfczMyKSkpCnZvaWQgX19hcm1fdnN0cmhxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXQoaW50MTZfdCAqLCB1aW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJocV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3UxNikpKQp2b2lkIF9fYXJtX3ZzdHJocV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3UxNih1aW50MTZfdCAqLCB1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyaHFfc2NhdHRlcl9zaGlmdGVkX29mZnNldF91MTYpKSkKdm9pZCBfX2FybV92c3RyaHFfc2NhdHRlcl9zaGlmdGVkX29mZnNldCh1aW50MTZfdCAqLCB1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyaHFfc2NhdHRlcl9zaGlmdGVkX29mZnNldF91MzIpKSkKdm9pZCBfX2FybV92c3RyaHFfc2NhdHRlcl9zaGlmdGVkX29mZnNldF91MzIodWludDE2X3QgKiwgdWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmhxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfdTMyKSkpCnZvaWQgX19hcm1fdnN0cmhxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXQodWludDE2X3QgKiwgdWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmhxX3UxNikpKQp2b2lkIF9fYXJtX3ZzdHJocV91MTYodWludDE2X3QgKiwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmhxX3UxNikpKQp2b2lkIF9fYXJtX3ZzdHJocSh1aW50MTZfdCAqLCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyaHFfdTMyKSkpCnZvaWQgX19hcm1fdnN0cmhxX3UzMih1aW50MTZfdCAqLCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyaHFfdTMyKSkpCnZvaWQgX19hcm1fdnN0cmhxKHVpbnQxNl90ICosIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJ3cV9wX3MzMikpKQp2b2lkIF9fYXJtX3ZzdHJ3cV9wX3MzMihpbnQzMl90ICosIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Ryd3FfcF9zMzIpKSkKdm9pZCBfX2FybV92c3Ryd3FfcChpbnQzMl90ICosIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Ryd3FfcF91MzIpKSkKdm9pZCBfX2FybV92c3Ryd3FfcF91MzIodWludDMyX3QgKiwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Ryd3FfcF91MzIpKSkKdm9pZCBfX2FybV92c3Ryd3FfcCh1aW50MzJfdCAqLCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJ3cV9zMzIpKSkKdm9pZCBfX2FybV92c3Ryd3FfczMyKGludDMyX3QgKiwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Ryd3FfczMyKSkpCnZvaWQgX19hcm1fdnN0cndxKGludDMyX3QgKiwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Ryd3Ffc2NhdHRlcl9iYXNlX3BfczMyKSkpCnZvaWQgX19hcm1fdnN0cndxX3NjYXR0ZXJfYmFzZV9wX3MzMih1aW50MzJ4NF90LCBpbnQsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Ryd3Ffc2NhdHRlcl9iYXNlX3BfczMyKSkpCnZvaWQgX19hcm1fdnN0cndxX3NjYXR0ZXJfYmFzZV9wKHVpbnQzMng0X3QsIGludCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJ3cV9zY2F0dGVyX2Jhc2VfcF91MzIpKSkKdm9pZCBfX2FybV92c3Ryd3Ffc2NhdHRlcl9iYXNlX3BfdTMyKHVpbnQzMng0X3QsIGludCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Ryd3Ffc2NhdHRlcl9iYXNlX3BfdTMyKSkpCnZvaWQgX19hcm1fdnN0cndxX3NjYXR0ZXJfYmFzZV9wKHVpbnQzMng0X3QsIGludCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Ryd3Ffc2NhdHRlcl9iYXNlX3MzMikpKQp2b2lkIF9fYXJtX3ZzdHJ3cV9zY2F0dGVyX2Jhc2VfczMyKHVpbnQzMng0X3QsIGludCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Ryd3Ffc2NhdHRlcl9iYXNlX3MzMikpKQp2b2lkIF9fYXJtX3ZzdHJ3cV9zY2F0dGVyX2Jhc2UodWludDMyeDRfdCwgaW50LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJ3cV9zY2F0dGVyX2Jhc2VfdTMyKSkpCnZvaWQgX19hcm1fdnN0cndxX3NjYXR0ZXJfYmFzZV91MzIodWludDMyeDRfdCwgaW50LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Ryd3Ffc2NhdHRlcl9iYXNlX3UzMikpKQp2b2lkIF9fYXJtX3ZzdHJ3cV9zY2F0dGVyX2Jhc2UodWludDMyeDRfdCwgaW50LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Ryd3Ffc2NhdHRlcl9iYXNlX3diX3BfczMyKSkpCnZvaWQgX19hcm1fdnN0cndxX3NjYXR0ZXJfYmFzZV93Yl9wX3MzMih1aW50MzJ4NF90ICosIGludCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJ3cV9zY2F0dGVyX2Jhc2Vfd2JfcF9zMzIpKSkKdm9pZCBfX2FybV92c3Ryd3Ffc2NhdHRlcl9iYXNlX3diX3AodWludDMyeDRfdCAqLCBpbnQsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Ryd3Ffc2NhdHRlcl9iYXNlX3diX3BfdTMyKSkpCnZvaWQgX19hcm1fdnN0cndxX3NjYXR0ZXJfYmFzZV93Yl9wX3UzMih1aW50MzJ4NF90ICosIGludCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Ryd3Ffc2NhdHRlcl9iYXNlX3diX3BfdTMyKSkpCnZvaWQgX19hcm1fdnN0cndxX3NjYXR0ZXJfYmFzZV93Yl9wKHVpbnQzMng0X3QgKiwgaW50LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJ3cV9zY2F0dGVyX2Jhc2Vfd2JfczMyKSkpCnZvaWQgX19hcm1fdnN0cndxX3NjYXR0ZXJfYmFzZV93Yl9zMzIodWludDMyeDRfdCAqLCBpbnQsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cndxX3NjYXR0ZXJfYmFzZV93Yl9zMzIpKSkKdm9pZCBfX2FybV92c3Ryd3Ffc2NhdHRlcl9iYXNlX3diKHVpbnQzMng0X3QgKiwgaW50LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJ3cV9zY2F0dGVyX2Jhc2Vfd2JfdTMyKSkpCnZvaWQgX19hcm1fdnN0cndxX3NjYXR0ZXJfYmFzZV93Yl91MzIodWludDMyeDRfdCAqLCBpbnQsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJ3cV9zY2F0dGVyX2Jhc2Vfd2JfdTMyKSkpCnZvaWQgX19hcm1fdnN0cndxX3NjYXR0ZXJfYmFzZV93Yih1aW50MzJ4NF90ICosIGludCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cndxX3NjYXR0ZXJfb2Zmc2V0X3BfczMyKSkpCnZvaWQgX19hcm1fdnN0cndxX3NjYXR0ZXJfb2Zmc2V0X3BfczMyKGludDMyX3QgKiwgdWludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJ3cV9zY2F0dGVyX29mZnNldF9wX3MzMikpKQp2b2lkIF9fYXJtX3ZzdHJ3cV9zY2F0dGVyX29mZnNldF9wKGludDMyX3QgKiwgdWludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJ3cV9zY2F0dGVyX29mZnNldF9wX3UzMikpKQp2b2lkIF9fYXJtX3ZzdHJ3cV9zY2F0dGVyX29mZnNldF9wX3UzMih1aW50MzJfdCAqLCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJ3cV9zY2F0dGVyX29mZnNldF9wX3UzMikpKQp2b2lkIF9fYXJtX3ZzdHJ3cV9zY2F0dGVyX29mZnNldF9wKHVpbnQzMl90ICosIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cndxX3NjYXR0ZXJfb2Zmc2V0X3MzMikpKQp2b2lkIF9fYXJtX3ZzdHJ3cV9zY2F0dGVyX29mZnNldF9zMzIoaW50MzJfdCAqLCB1aW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJ3cV9zY2F0dGVyX29mZnNldF9zMzIpKSkKdm9pZCBfX2FybV92c3Ryd3Ffc2NhdHRlcl9vZmZzZXQoaW50MzJfdCAqLCB1aW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJ3cV9zY2F0dGVyX29mZnNldF91MzIpKSkKdm9pZCBfX2FybV92c3Ryd3Ffc2NhdHRlcl9vZmZzZXRfdTMyKHVpbnQzMl90ICosIHVpbnQzMng0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJ3cV9zY2F0dGVyX29mZnNldF91MzIpKSkKdm9pZCBfX2FybV92c3Ryd3Ffc2NhdHRlcl9vZmZzZXQodWludDMyX3QgKiwgdWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cndxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfcF9zMzIpKSkKdm9pZCBfX2FybV92c3Ryd3Ffc2NhdHRlcl9zaGlmdGVkX29mZnNldF9wX3MzMihpbnQzMl90ICosIHVpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Ryd3Ffc2NhdHRlcl9zaGlmdGVkX29mZnNldF9wX3MzMikpKQp2b2lkIF9fYXJtX3ZzdHJ3cV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3AoaW50MzJfdCAqLCB1aW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cndxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfcF91MzIpKSkKdm9pZCBfX2FybV92c3Ryd3Ffc2NhdHRlcl9zaGlmdGVkX29mZnNldF9wX3UzMih1aW50MzJfdCAqLCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJ3cV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3BfdTMyKSkpCnZvaWQgX19hcm1fdnN0cndxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfcCh1aW50MzJfdCAqLCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJ3cV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3MzMikpKQp2b2lkIF9fYXJtX3ZzdHJ3cV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3MzMihpbnQzMl90ICosIHVpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cndxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfczMyKSkpCnZvaWQgX19hcm1fdnN0cndxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXQoaW50MzJfdCAqLCB1aW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJ3cV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3UzMikpKQp2b2lkIF9fYXJtX3ZzdHJ3cV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3UzMih1aW50MzJfdCAqLCB1aW50MzJ4NF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Ryd3Ffc2NhdHRlcl9zaGlmdGVkX29mZnNldF91MzIpKSkKdm9pZCBfX2FybV92c3Ryd3Ffc2NhdHRlcl9zaGlmdGVkX29mZnNldCh1aW50MzJfdCAqLCB1aW50MzJ4NF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Ryd3FfdTMyKSkpCnZvaWQgX19hcm1fdnN0cndxX3UzMih1aW50MzJfdCAqLCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Ryd3FfdTMyKSkpCnZvaWQgX19hcm1fdnN0cndxKHVpbnQzMl90ICosIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX21fbl9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZzdWJxX21fbl9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfbV9uX3MxNikpKQppbnQxNng4X3QgX19hcm1fdnN1YnFfbShpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV9tX25fczMyKSkpCmludDMyeDRfdCBfX2FybV92c3VicV9tX25fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX21fbl9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZzdWJxX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfbV9uX3M4KSkpCmludDh4MTZfdCBfX2FybV92c3VicV9tX25fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV9tX25fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZzdWJxX20oaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV9tX25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnN1YnFfbV9uX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90LCB1aW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV9tX25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnN1YnFfbSh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCB1aW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV9tX25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdnN1YnFfbV9uX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV9tX25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdnN1YnFfbSh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV9tX25fdTgpKSkKdWludDh4MTZfdCBfX2FybV92c3VicV9tX25fdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV9tX25fdTgpKSkKdWludDh4MTZfdCBfX2FybV92c3VicV9tKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfbV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZzdWJxX21fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfbV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZzdWJxX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV9tX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnN1YnFfbV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV9tX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnN1YnFfbShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX21fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZzdWJxX21fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV9tX3M4KSkpCmludDh4MTZfdCBfX2FybV92c3VicV9tKGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfbV91MTYpKSkKdWludDE2eDhfdCBfX2FybV92c3VicV9tX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX21fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnN1YnFfbSh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX21fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdnN1YnFfbV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV9tX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZzdWJxX20odWludDMyeDRfdCwgdWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV9tX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnN1YnFfbV91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX21fdTgpKSkKdWludDh4MTZfdCBfX2FybV92c3VicV9tKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfbl9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZzdWJxX25fczE2KGludDE2eDhfdCwgaW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfbl9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZzdWJxKGludDE2eDhfdCwgaW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfbl9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZzdWJxX25fczMyKGludDMyeDRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfbl9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZzdWJxKGludDMyeDRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfbl9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnN1YnFfbl9zOChpbnQ4eDE2X3QsIGludDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfbl9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnN1YnEoaW50OHgxNl90LCBpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnN1YnFfbl91MTYodWludDE2eDhfdCwgdWludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX25fdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnN1YnEodWludDE2eDhfdCwgdWludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdnN1YnFfbl91MzIodWludDMyeDRfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX25fdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdnN1YnEodWludDMyeDRfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX25fdTgpKSkKdWludDh4MTZfdCBfX2FybV92c3VicV9uX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX25fdTgpKSkKdWludDh4MTZfdCBfX2FybV92c3VicSh1aW50OHgxNl90LCB1aW50OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZzdWJxX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfczE2KSkpCmludDE2eDhfdCBfX2FybV92c3VicShpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfczMyKSkpCmludDMyeDRfdCBfX2FybV92c3VicV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX3MzMikpKQppbnQzMng0X3QgX19hcm1fdnN1YnEoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX3M4KSkpCmludDh4MTZfdCBfX2FybV92c3VicV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfczgpKSkKaW50OHgxNl90IF9fYXJtX3ZzdWJxKGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV91MTYpKSkKdWludDE2eDhfdCBfX2FybV92c3VicV91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnN1YnEodWludDE2eDhfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdnN1YnFfdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZzdWJxKHVpbnQzMng0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnN1YnFfdTgodWludDh4MTZfdCwgdWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfdTgpKSkKdWludDh4MTZfdCBfX2FybV92c3VicSh1aW50OHgxNl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV94X25fczE2KSkpCmludDE2eDhfdCBfX2FybV92c3VicV94X25fczE2KGludDE2eDhfdCwgaW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV94X25fczE2KSkpCmludDE2eDhfdCBfX2FybV92c3VicV94KGludDE2eDhfdCwgaW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV94X25fczMyKSkpCmludDMyeDRfdCBfX2FybV92c3VicV94X25fczMyKGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV94X25fczMyKSkpCmludDMyeDRfdCBfX2FybV92c3VicV94KGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV94X25fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZzdWJxX3hfbl9zOChpbnQ4eDE2X3QsIGludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV94X25fczgpKSkKaW50OHgxNl90IF9fYXJtX3ZzdWJxX3goaW50OHgxNl90LCBpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfeF9uX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZzdWJxX3hfbl91MTYodWludDE2eDhfdCwgdWludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfeF9uX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZzdWJxX3godWludDE2eDhfdCwgdWludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfeF9uX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZzdWJxX3hfbl91MzIodWludDMyeDRfdCwgdWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfeF9uX3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZzdWJxX3godWludDMyeDRfdCwgdWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfeF9uX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnN1YnFfeF9uX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfeF9uX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnN1YnFfeCh1aW50OHgxNl90LCB1aW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX3hfczE2KSkpCmludDE2eDhfdCBfX2FybV92c3VicV94X3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV94X3MxNikpKQppbnQxNng4X3QgX19hcm1fdnN1YnFfeChpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV94X3MzMikpKQppbnQzMng0X3QgX19hcm1fdnN1YnFfeF9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfeF9zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZzdWJxX3goaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfeF9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnN1YnFfeF9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV94X3M4KSkpCmludDh4MTZfdCBfX2FybV92c3VicV94KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX3hfdTE2KSkpCnVpbnQxNng4X3QgX19hcm1fdnN1YnFfeF91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV94X3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZzdWJxX3godWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV94X3UzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZzdWJxX3hfdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfeF91MzIpKSkKdWludDMyeDRfdCBfX2FybV92c3VicV94KHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfeF91OCkpKQp1aW50OHgxNl90IF9fYXJtX3ZzdWJxX3hfdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV94X3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnN1YnFfeCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Z1bmluaXRpYWxpemVkcV9wb2x5bW9ycGhpY19zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3Z1bmluaXRpYWxpemVkcShpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Z1bmluaXRpYWxpemVkcV9wb2x5bW9ycGhpY19zMzIpKSkKaW50MzJ4NF90IF9fYXJtX3Z1bmluaXRpYWxpemVkcShpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Z1bmluaXRpYWxpemVkcV9wb2x5bW9ycGhpY19zNjQpKSkKaW50NjR4Ml90IF9fYXJtX3Z1bmluaXRpYWxpemVkcShpbnQ2NHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Z1bmluaXRpYWxpemVkcV9wb2x5bW9ycGhpY19zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnVuaW5pdGlhbGl6ZWRxKGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnVuaW5pdGlhbGl6ZWRxX3BvbHltb3JwaGljX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3Z1bmluaXRpYWxpemVkcSh1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92dW5pbml0aWFsaXplZHFfcG9seW1vcnBoaWNfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdnVuaW5pdGlhbGl6ZWRxKHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Z1bmluaXRpYWxpemVkcV9wb2x5bW9ycGhpY191NjQpKSkKdWludDY0eDJfdCBfX2FybV92dW5pbml0aWFsaXplZHEodWludDY0eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnVuaW5pdGlhbGl6ZWRxX3BvbHltb3JwaGljX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnVuaW5pdGlhbGl6ZWRxKHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Z1bmluaXRpYWxpemVkcV9zMTYpKSkKaW50MTZ4OF90IF9fYXJtX3Z1bmluaXRpYWxpemVkcV9zMTYoKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92dW5pbml0aWFsaXplZHFfczMyKSkpCmludDMyeDRfdCBfX2FybV92dW5pbml0aWFsaXplZHFfczMyKCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnVuaW5pdGlhbGl6ZWRxX3M2NCkpKQppbnQ2NHgyX3QgX19hcm1fdnVuaW5pdGlhbGl6ZWRxX3M2NCgpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Z1bmluaXRpYWxpemVkcV9zOCkpKQppbnQ4eDE2X3QgX19hcm1fdnVuaW5pdGlhbGl6ZWRxX3M4KCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnVuaW5pdGlhbGl6ZWRxX3UxNikpKQp1aW50MTZ4OF90IF9fYXJtX3Z1bmluaXRpYWxpemVkcV91MTYoKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92dW5pbml0aWFsaXplZHFfdTMyKSkpCnVpbnQzMng0X3QgX19hcm1fdnVuaW5pdGlhbGl6ZWRxX3UzMigpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Z1bmluaXRpYWxpemVkcV91NjQpKSkKdWludDY0eDJfdCBfX2FybV92dW5pbml0aWFsaXplZHFfdTY0KCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnVuaW5pdGlhbGl6ZWRxX3U4KSkpCnVpbnQ4eDE2X3QgX19hcm1fdnVuaW5pdGlhbGl6ZWRxX3U4KCk7CgojaWYgKF9fQVJNX0ZFQVRVUkVfTVZFICYgMikKCnR5cGVkZWYgX19mcDE2IGZsb2F0MTZfdDsKdHlwZWRlZiBmbG9hdCBmbG9hdDMyX3Q7CnR5cGVkZWYgX19hdHRyaWJ1dGVfXygoX19uZW9uX3ZlY3Rvcl90eXBlX18oOCksIF9fY2xhbmdfYXJtX212ZV9zdHJpY3RfcG9seW1vcnBoaXNtKSkgZmxvYXQxNl90IGZsb2F0MTZ4OF90Owp0eXBlZGVmIHN0cnVjdCB7IGZsb2F0MTZ4OF90IHZhbFsyXTsgfSBmbG9hdDE2eDh4Ml90Owp0eXBlZGVmIHN0cnVjdCB7IGZsb2F0MTZ4OF90IHZhbFs0XTsgfSBmbG9hdDE2eDh4NF90Owp0eXBlZGVmIF9fYXR0cmlidXRlX18oKF9fbmVvbl92ZWN0b3JfdHlwZV9fKDQpLCBfX2NsYW5nX2FybV9tdmVfc3RyaWN0X3BvbHltb3JwaGlzbSkpIGZsb2F0MzJfdCBmbG9hdDMyeDRfdDsKdHlwZWRlZiBzdHJ1Y3QgeyBmbG9hdDMyeDRfdCB2YWxbMl07IH0gZmxvYXQzMng0eDJfdDsKdHlwZWRlZiBzdHJ1Y3QgeyBmbG9hdDMyeDRfdCB2YWxbNF07IH0gZmxvYXQzMng0eDRfdDsKCnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiZHFfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZhYmRxX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmRxX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92YWJkcShmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmRxX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92YWJkcV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJkcV9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmFiZHEoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJkcV9tX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92YWJkcV9tX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmRxX21fZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZhYmRxX20oZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJkcV9tX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92YWJkcV9tX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmRxX21fZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZhYmRxX20oZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJkcV94X2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92YWJkcV94X2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiZHFfeF9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmFiZHFfeChmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiZHFfeF9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmFiZHFfeF9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmRxX3hfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZhYmRxX3goZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYnNxX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92YWJzcV9mMTYoZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYnNxX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92YWJzcShmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFic3FfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZhYnNxX2YzMihmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFic3FfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZhYnNxKGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJzcV9tX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92YWJzcV9tX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFic3FfbV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmFic3FfbShmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFic3FfbV9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmFic3FfbV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYnNxX21fZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZhYnNxX20oZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYnNxX3hfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZhYnNxX3hfZjE2KGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYnNxX3hfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZhYnNxX3goZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFic3FfeF9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmFic3FfeF9mMzIoZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFic3FfeF9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmFic3FfeChmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmFkZHFfZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZhZGRxKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZhZGRxX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92YWRkcShmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX21fZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZhZGRxX21fZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfbV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmFkZHFfbShmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX21fZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZhZGRxX21fZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfbV9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmFkZHFfbShmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX21fbl9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmFkZHFfbV9uX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIGZsb2F0MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV9tX25fZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZhZGRxX20oZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfbV9uX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92YWRkcV9tX25fZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgZmxvYXQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX21fbl9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmFkZHFfbShmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV9uX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92YWRkcV9uX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV9uX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92YWRkcShmbG9hdDE2eDhfdCwgZmxvYXQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV9uX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92YWRkcV9uX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV9uX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92YWRkcShmbG9hdDMyeDRfdCwgZmxvYXQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV94X2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92YWRkcV94X2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfeF9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmFkZHFfeChmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfeF9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmFkZHFfeF9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX3hfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZhZGRxX3goZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX3hfbl9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmFkZHFfeF9uX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX3hfbl9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmFkZHFfeChmbG9hdDE2eDhfdCwgZmxvYXQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX3hfbl9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmFkZHFfeF9uX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX3hfbl9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmFkZHFfeChmbG9hdDMyeDRfdCwgZmxvYXQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhbmRxX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92YW5kcV9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YW5kcV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmFuZHEoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YW5kcV9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmFuZHFfZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFuZHFfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZhbmRxKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFuZHFfbV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmFuZHFfbV9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YW5kcV9tX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92YW5kcV9tKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFuZHFfbV9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmFuZHFfbV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YW5kcV9tX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92YW5kcV9tKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFuZHFfeF9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmFuZHFfeF9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhbmRxX3hfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZhbmRxX3goZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhbmRxX3hfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZhbmRxX3hfZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YW5kcV94X2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92YW5kcV94KGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YmljcV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmJpY3FfZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJpY3FfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZiaWNxKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJpY3FfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZiaWNxX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZiaWNxX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92YmljcShmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZiaWNxX21fZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZiaWNxX21fZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJpY3FfbV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmJpY3FfbShmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZiaWNxX21fZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZiaWNxX21fZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJpY3FfbV9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmJpY3FfbShmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZiaWNxX3hfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZiaWNxX3hfZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YmljcV94X2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92YmljcV94KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YmljcV94X2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92YmljcV94X2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJpY3FfeF9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmJpY3FfeChmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJyc3JxX21fbl9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmJyc3JxX21fbl9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZicnNycV9tX25fZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZicnNycV9tKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YnJzcnFfbV9uX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92YnJzcnFfbV9uX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJyc3JxX21fbl9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmJyc3JxX20oZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZicnNycV9uX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92YnJzcnFfbl9mMTYoZmxvYXQxNng4X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZicnNycV9uX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92YnJzcnEoZmxvYXQxNng4X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZicnNycV9uX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92YnJzcnFfbl9mMzIoZmxvYXQzMng0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZicnNycV9uX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92YnJzcnEoZmxvYXQzMng0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZicnNycV94X25fZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZicnNycV94X25fZjE2KGZsb2F0MTZ4OF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZicnNycV94X25fZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZicnNycV94KGZsb2F0MTZ4OF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZicnNycV94X25fZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZicnNycV94X25fZjMyKGZsb2F0MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZicnNycV94X25fZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZicnNycV94KGZsb2F0MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3QyNzBfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZjYWRkcV9yb3QyNzBfZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDI3MF9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmNhZGRxX3JvdDI3MChmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3QyNzBfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZjYWRkcV9yb3QyNzBfZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDI3MF9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmNhZGRxX3JvdDI3MChmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3QyNzBfbV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmNhZGRxX3JvdDI3MF9tX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3QyNzBfbV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmNhZGRxX3JvdDI3MF9tKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDI3MF9tX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92Y2FkZHFfcm90MjcwX21fZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDI3MF9tX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92Y2FkZHFfcm90MjcwX20oZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90MjcwX3hfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZjYWRkcV9yb3QyNzBfeF9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3QyNzBfeF9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmNhZGRxX3JvdDI3MF94KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90MjcwX3hfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZjYWRkcV9yb3QyNzBfeF9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3QyNzBfeF9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmNhZGRxX3JvdDI3MF94KGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90OTBfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZjYWRkcV9yb3Q5MF9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90OTBfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZjYWRkcV9yb3Q5MChmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3Q5MF9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmNhZGRxX3JvdDkwX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3Q5MF9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmNhZGRxX3JvdDkwKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDkwX21fZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZjYWRkcV9yb3Q5MF9tX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3Q5MF9tX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92Y2FkZHFfcm90OTBfbShmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3Q5MF9tX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92Y2FkZHFfcm90OTBfbV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90OTBfbV9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmNhZGRxX3JvdDkwX20oZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90OTBfeF9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmNhZGRxX3JvdDkwX3hfZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90OTBfeF9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmNhZGRxX3JvdDkwX3goZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3Q5MF94X2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92Y2FkZHFfcm90OTBfeF9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3Q5MF94X2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92Y2FkZHFfcm90OTBfeChmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtbGFxX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92Y21sYXFfZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbWxhcV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmNtbGFxKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbWxhcV9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmNtbGFxX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21sYXFfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZjbWxhcShmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21sYXFfbV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmNtbGFxX21fZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtbGFxX21fZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZjbWxhcV9tKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtbGFxX21fZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZjbWxhcV9tX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbWxhcV9tX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92Y21sYXFfbShmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbWxhcV9yb3QxODBfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZjbWxhcV9yb3QxODBfZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbWxhcV9yb3QxODBfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZjbWxhcV9yb3QxODAoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtbGFxX3JvdDE4MF9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmNtbGFxX3JvdDE4MF9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtbGFxX3JvdDE4MF9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmNtbGFxX3JvdDE4MChmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21sYXFfcm90MTgwX21fZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZjbWxhcV9yb3QxODBfbV9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21sYXFfcm90MTgwX21fZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZjbWxhcV9yb3QxODBfbShmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbWxhcV9yb3QxODBfbV9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmNtbGFxX3JvdDE4MF9tX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbWxhcV9yb3QxODBfbV9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmNtbGFxX3JvdDE4MF9tKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtbGFxX3JvdDI3MF9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmNtbGFxX3JvdDI3MF9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtbGFxX3JvdDI3MF9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmNtbGFxX3JvdDI3MChmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21sYXFfcm90MjcwX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92Y21sYXFfcm90MjcwX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21sYXFfcm90MjcwX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92Y21sYXFfcm90MjcwKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbWxhcV9yb3QyNzBfbV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmNtbGFxX3JvdDI3MF9tX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbWxhcV9yb3QyNzBfbV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmNtbGFxX3JvdDI3MF9tKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtbGFxX3JvdDI3MF9tX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92Y21sYXFfcm90MjcwX21fZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtbGFxX3JvdDI3MF9tX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92Y21sYXFfcm90MjcwX20oZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21sYXFfcm90OTBfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZjbWxhcV9yb3Q5MF9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtbGFxX3JvdDkwX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92Y21sYXFfcm90OTAoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtbGFxX3JvdDkwX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92Y21sYXFfcm90OTBfZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbWxhcV9yb3Q5MF9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmNtbGFxX3JvdDkwKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbWxhcV9yb3Q5MF9tX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92Y21sYXFfcm90OTBfbV9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21sYXFfcm90OTBfbV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmNtbGFxX3JvdDkwX20oZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21sYXFfcm90OTBfbV9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmNtbGFxX3JvdDkwX21fZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtbGFxX3JvdDkwX21fZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZjbWxhcV9yb3Q5MF9tKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGVxcV9mMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBlcXFfZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGVxcV9mMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBlcXEoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZXFxX2YzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGVxcV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZXFxX2YzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGVxcShmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfbV9mMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBlcXFfbV9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfbV9mMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBlcXFfbShmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGVxcV9tX2YzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGVxcV9tX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGVxcV9tX2YzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGVxcV9tKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZXFxX21fbl9mMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBlcXFfbV9uX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfbV9uX2YxNikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGVxcV9tKGZsb2F0MTZ4OF90LCBmbG9hdDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGVxcV9tX25fZjMyKSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wZXFxX21fbl9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZXFxX21fbl9mMzIpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBlcXFfbShmbG9hdDMyeDRfdCwgZmxvYXQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfbl9mMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBlcXFfbl9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGVxcV9uX2YxNikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGVxcShmbG9hdDE2eDhfdCwgZmxvYXQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZXFxX25fZjMyKSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wZXFxX25fZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfbl9mMzIpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBlcXEoZmxvYXQzMng0X3QsIGZsb2F0MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGdlcV9mMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBnZXFfZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGdlcV9mMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBnZXEoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ2VxX2YzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGdlcV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ2VxX2YzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGdlcShmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBnZXFfbV9mMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBnZXFfbV9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBnZXFfbV9mMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBnZXFfbShmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGdlcV9tX2YzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGdlcV9tX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGdlcV9tX2YzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGdlcV9tKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ2VxX21fbl9mMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBnZXFfbV9uX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBnZXFfbV9uX2YxNikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGdlcV9tKGZsb2F0MTZ4OF90LCBmbG9hdDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGdlcV9tX25fZjMyKSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wZ2VxX21fbl9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ2VxX21fbl9mMzIpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBnZXFfbShmbG9hdDMyeDRfdCwgZmxvYXQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBnZXFfbl9mMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBnZXFfbl9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGdlcV9uX2YxNikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGdlcShmbG9hdDE2eDhfdCwgZmxvYXQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ2VxX25fZjMyKSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wZ2VxX25fZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBnZXFfbl9mMzIpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBnZXEoZmxvYXQzMng0X3QsIGZsb2F0MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGd0cV9mMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBndHFfZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGd0cV9mMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBndHEoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ3RxX2YzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGd0cV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ3RxX2YzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGd0cShmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBndHFfbV9mMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBndHFfbV9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBndHFfbV9mMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBndHFfbShmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGd0cV9tX2YzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGd0cV9tX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGd0cV9tX2YzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGd0cV9tKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ3RxX21fbl9mMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBndHFfbV9uX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBndHFfbV9uX2YxNikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGd0cV9tKGZsb2F0MTZ4OF90LCBmbG9hdDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGd0cV9tX25fZjMyKSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wZ3RxX21fbl9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ3RxX21fbl9mMzIpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBndHFfbShmbG9hdDMyeDRfdCwgZmxvYXQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBndHFfbl9mMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBndHFfbl9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGd0cV9uX2YxNikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGd0cShmbG9hdDE2eDhfdCwgZmxvYXQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ3RxX25fZjMyKSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wZ3RxX25fZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBndHFfbl9mMzIpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBndHEoZmxvYXQzMng0X3QsIGZsb2F0MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGxlcV9mMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBsZXFfZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGxlcV9mMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBsZXEoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbGVxX2YzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGxlcV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbGVxX2YzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGxlcShmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsZXFfbV9mMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBsZXFfbV9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsZXFfbV9mMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBsZXFfbShmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGxlcV9tX2YzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGxlcV9tX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGxlcV9tX2YzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGxlcV9tKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbGVxX21fbl9mMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBsZXFfbV9uX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsZXFfbV9uX2YxNikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGxlcV9tKGZsb2F0MTZ4OF90LCBmbG9hdDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGxlcV9tX25fZjMyKSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wbGVxX21fbl9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbGVxX21fbl9mMzIpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBsZXFfbShmbG9hdDMyeDRfdCwgZmxvYXQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsZXFfbl9mMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBsZXFfbl9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGxlcV9uX2YxNikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGxlcShmbG9hdDE2eDhfdCwgZmxvYXQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbGVxX25fZjMyKSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wbGVxX25fZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsZXFfbl9mMzIpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBsZXEoZmxvYXQzMng0X3QsIGZsb2F0MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGx0cV9mMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBsdHFfZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGx0cV9mMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBsdHEoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbHRxX2YzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGx0cV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbHRxX2YzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGx0cShmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsdHFfbV9mMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBsdHFfbV9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsdHFfbV9mMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBsdHFfbShmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGx0cV9tX2YzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGx0cV9tX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGx0cV9tX2YzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGx0cV9tKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbHRxX21fbl9mMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBsdHFfbV9uX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsdHFfbV9uX2YxNikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGx0cV9tKGZsb2F0MTZ4OF90LCBmbG9hdDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGx0cV9tX25fZjMyKSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wbHRxX21fbl9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbHRxX21fbl9mMzIpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBsdHFfbShmbG9hdDMyeDRfdCwgZmxvYXQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsdHFfbl9mMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBsdHFfbl9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGx0cV9uX2YxNikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcGx0cShmbG9hdDE2eDhfdCwgZmxvYXQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbHRxX25fZjMyKSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wbHRxX25fZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsdHFfbl9mMzIpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBsdHEoZmxvYXQzMng0X3QsIGZsb2F0MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV9mMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBuZXFfZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV9mMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBuZXEoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbmVxX2YzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcG5lcV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbmVxX2YzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcG5lcShmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBuZXFfbV9mMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBuZXFfbV9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBuZXFfbV9mMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBuZXFfbShmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV9tX2YzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcG5lcV9tX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV9tX2YzMikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcG5lcV9tKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbmVxX21fbl9mMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBuZXFfbV9uX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBuZXFfbV9uX2YxNikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcG5lcV9tKGZsb2F0MTZ4OF90LCBmbG9hdDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV9tX25fZjMyKSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wbmVxX21fbl9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbmVxX21fbl9mMzIpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBuZXFfbShmbG9hdDMyeDRfdCwgZmxvYXQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBuZXFfbl9mMTYpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBuZXFfbl9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV9uX2YxNikpKQptdmVfcHJlZDE2X3QgX19hcm1fdmNtcG5lcShmbG9hdDE2eDhfdCwgZmxvYXQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbmVxX25fZjMyKSkpCm12ZV9wcmVkMTZfdCBfX2FybV92Y21wbmVxX25fZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBuZXFfbl9mMzIpKSkKbXZlX3ByZWQxNl90IF9fYXJtX3ZjbXBuZXEoZmxvYXQzMng0X3QsIGZsb2F0MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtdWxxX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92Y211bHFfZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtdWxxX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92Y211bHEoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y211bHFfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZjbXVscV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y211bHFfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZjbXVscShmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXVscV9tX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92Y211bHFfbV9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y211bHFfbV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmNtdWxxX20oZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y211bHFfbV9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmNtdWxxX21fZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtdWxxX21fZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZjbXVscV9tKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtdWxxX3JvdDE4MF9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmNtdWxxX3JvdDE4MF9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y211bHFfcm90MTgwX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92Y211bHFfcm90MTgwKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtdWxxX3JvdDE4MF9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmNtdWxxX3JvdDE4MF9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y211bHFfcm90MTgwX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92Y211bHFfcm90MTgwKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtdWxxX3JvdDE4MF9tX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92Y211bHFfcm90MTgwX21fZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtdWxxX3JvdDE4MF9tX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92Y211bHFfcm90MTgwX20oZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y211bHFfcm90MTgwX21fZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZjbXVscV9yb3QxODBfbV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y211bHFfcm90MTgwX21fZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZjbXVscV9yb3QxODBfbShmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXVscV9yb3QxODBfeF9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmNtdWxxX3JvdDE4MF94X2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtdWxxX3JvdDE4MF94X2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92Y211bHFfcm90MTgwX3goZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXVscV9yb3QxODBfeF9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmNtdWxxX3JvdDE4MF94X2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtdWxxX3JvdDE4MF94X2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92Y211bHFfcm90MTgwX3goZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXVscV9yb3QyNzBfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZjbXVscV9yb3QyNzBfZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtdWxxX3JvdDI3MF9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmNtdWxxX3JvdDI3MChmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXVscV9yb3QyNzBfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZjbXVscV9yb3QyNzBfZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtdWxxX3JvdDI3MF9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmNtdWxxX3JvdDI3MChmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXVscV9yb3QyNzBfbV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmNtdWxxX3JvdDI3MF9tX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXVscV9yb3QyNzBfbV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmNtdWxxX3JvdDI3MF9tKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtdWxxX3JvdDI3MF9tX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92Y211bHFfcm90MjcwX21fZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtdWxxX3JvdDI3MF9tX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92Y211bHFfcm90MjcwX20oZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y211bHFfcm90MjcwX3hfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZjbXVscV9yb3QyNzBfeF9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXVscV9yb3QyNzBfeF9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmNtdWxxX3JvdDI3MF94KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y211bHFfcm90MjcwX3hfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZjbXVscV9yb3QyNzBfeF9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXVscV9yb3QyNzBfeF9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmNtdWxxX3JvdDI3MF94KGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y211bHFfcm90OTBfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZjbXVscV9yb3Q5MF9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y211bHFfcm90OTBfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZjbXVscV9yb3Q5MChmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXVscV9yb3Q5MF9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmNtdWxxX3JvdDkwX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXVscV9yb3Q5MF9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmNtdWxxX3JvdDkwKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtdWxxX3JvdDkwX21fZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZjbXVscV9yb3Q5MF9tX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXVscV9yb3Q5MF9tX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92Y211bHFfcm90OTBfbShmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXVscV9yb3Q5MF9tX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92Y211bHFfcm90OTBfbV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y211bHFfcm90OTBfbV9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmNtdWxxX3JvdDkwX20oZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y211bHFfcm90OTBfeF9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmNtdWxxX3JvdDkwX3hfZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y211bHFfcm90OTBfeF9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmNtdWxxX3JvdDkwX3goZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXVscV9yb3Q5MF94X2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92Y211bHFfcm90OTBfeF9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXVscV9yb3Q5MF94X2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92Y211bHFfcm90OTBfeChmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtdWxxX3hfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZjbXVscV94X2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtdWxxX3hfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZjbXVscV94KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y211bHFfeF9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmNtdWxxX3hfZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y211bHFfeF9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmNtdWxxX3goZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjcmVhdGVxX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92Y3JlYXRlcV9mMTYodWludDY0X3QsIHVpbnQ2NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3JlYXRlcV9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmNyZWF0ZXFfZjMyKHVpbnQ2NF90LCB1aW50NjRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dGFxX21fczE2X2YxNikpKQppbnQxNng4X3QgX19hcm1fdmN2dGFxX21fczE2X2YxNihpbnQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRhcV9tX3MxNl9mMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZjdnRhcV9tKGludDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dGFxX21fczMyX2YzMikpKQppbnQzMng0X3QgX19hcm1fdmN2dGFxX21fczMyX2YzMihpbnQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRhcV9tX3MzMl9mMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZjdnRhcV9tKGludDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dGFxX21fdTE2X2YxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZjdnRhcV9tX3UxNl9mMTYodWludDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dGFxX21fdTE2X2YxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZjdnRhcV9tKHVpbnQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRhcV9tX3UzMl9mMzIpKSkKdWludDMyeDRfdCBfX2FybV92Y3Z0YXFfbV91MzJfZjMyKHVpbnQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRhcV9tX3UzMl9mMzIpKSkKdWludDMyeDRfdCBfX2FybV92Y3Z0YXFfbSh1aW50MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0YXFfczE2X2YxNikpKQppbnQxNng4X3QgX19hcm1fdmN2dGFxX3MxNl9mMTYoZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRhcV9zMzJfZjMyKSkpCmludDMyeDRfdCBfX2FybV92Y3Z0YXFfczMyX2YzMihmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dGFxX3UxNl9mMTYpKSkKdWludDE2eDhfdCBfX2FybV92Y3Z0YXFfdTE2X2YxNihmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dGFxX3UzMl9mMzIpKSkKdWludDMyeDRfdCBfX2FybV92Y3Z0YXFfdTMyX2YzMihmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dGFxX3hfczE2X2YxNikpKQppbnQxNng4X3QgX19hcm1fdmN2dGFxX3hfczE2X2YxNihmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0YXFfeF9zMzJfZjMyKSkpCmludDMyeDRfdCBfX2FybV92Y3Z0YXFfeF9zMzJfZjMyKGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRhcV94X3UxNl9mMTYpKSkKdWludDE2eDhfdCBfX2FybV92Y3Z0YXFfeF91MTZfZjE2KGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRhcV94X3UzMl9mMzIpKSkKdWludDMyeDRfdCBfX2FybV92Y3Z0YXFfeF91MzJfZjMyKGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRicV9mMTZfZjMyKSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZjdnRicV9mMTZfZjMyKGZsb2F0MTZ4OF90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dGJxX2YzMl9mMTYpKSkKZmxvYXQzMng0X3QgX19hcm1fdmN2dGJxX2YzMl9mMTYoZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRicV9tX2YxNl9mMzIpKSkKZmxvYXQxNng4X3QgX19hcm1fdmN2dGJxX21fZjE2X2YzMihmbG9hdDE2eDhfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dGJxX21fZjMyX2YxNikpKQpmbG9hdDMyeDRfdCBfX2FybV92Y3Z0YnFfbV9mMzJfZjE2KGZsb2F0MzJ4NF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0YnFfeF9mMzJfZjE2KSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZjdnRicV94X2YzMl9mMTYoZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dG1xX21fczE2X2YxNikpKQppbnQxNng4X3QgX19hcm1fdmN2dG1xX21fczE2X2YxNihpbnQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRtcV9tX3MxNl9mMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZjdnRtcV9tKGludDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dG1xX21fczMyX2YzMikpKQppbnQzMng0X3QgX19hcm1fdmN2dG1xX21fczMyX2YzMihpbnQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRtcV9tX3MzMl9mMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZjdnRtcV9tKGludDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dG1xX21fdTE2X2YxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZjdnRtcV9tX3UxNl9mMTYodWludDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dG1xX21fdTE2X2YxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZjdnRtcV9tKHVpbnQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRtcV9tX3UzMl9mMzIpKSkKdWludDMyeDRfdCBfX2FybV92Y3Z0bXFfbV91MzJfZjMyKHVpbnQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRtcV9tX3UzMl9mMzIpKSkKdWludDMyeDRfdCBfX2FybV92Y3Z0bXFfbSh1aW50MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0bXFfczE2X2YxNikpKQppbnQxNng4X3QgX19hcm1fdmN2dG1xX3MxNl9mMTYoZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRtcV9zMzJfZjMyKSkpCmludDMyeDRfdCBfX2FybV92Y3Z0bXFfczMyX2YzMihmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dG1xX3UxNl9mMTYpKSkKdWludDE2eDhfdCBfX2FybV92Y3Z0bXFfdTE2X2YxNihmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dG1xX3UzMl9mMzIpKSkKdWludDMyeDRfdCBfX2FybV92Y3Z0bXFfdTMyX2YzMihmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dG1xX3hfczE2X2YxNikpKQppbnQxNng4X3QgX19hcm1fdmN2dG1xX3hfczE2X2YxNihmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0bXFfeF9zMzJfZjMyKSkpCmludDMyeDRfdCBfX2FybV92Y3Z0bXFfeF9zMzJfZjMyKGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRtcV94X3UxNl9mMTYpKSkKdWludDE2eDhfdCBfX2FybV92Y3Z0bXFfeF91MTZfZjE2KGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRtcV94X3UzMl9mMzIpKSkKdWludDMyeDRfdCBfX2FybV92Y3Z0bXFfeF91MzJfZjMyKGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRucV9tX3MxNl9mMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZjdnRucV9tX3MxNl9mMTYoaW50MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0bnFfbV9zMTZfZjE2KSkpCmludDE2eDhfdCBfX2FybV92Y3Z0bnFfbShpbnQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRucV9tX3MzMl9mMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZjdnRucV9tX3MzMl9mMzIoaW50MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0bnFfbV9zMzJfZjMyKSkpCmludDMyeDRfdCBfX2FybV92Y3Z0bnFfbShpbnQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRucV9tX3UxNl9mMTYpKSkKdWludDE2eDhfdCBfX2FybV92Y3Z0bnFfbV91MTZfZjE2KHVpbnQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRucV9tX3UxNl9mMTYpKSkKdWludDE2eDhfdCBfX2FybV92Y3Z0bnFfbSh1aW50MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0bnFfbV91MzJfZjMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmN2dG5xX21fdTMyX2YzMih1aW50MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0bnFfbV91MzJfZjMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmN2dG5xX20odWludDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dG5xX3MxNl9mMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZjdnRucV9zMTZfZjE2KGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0bnFfczMyX2YzMikpKQppbnQzMng0X3QgX19hcm1fdmN2dG5xX3MzMl9mMzIoZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRucV91MTZfZjE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmN2dG5xX3UxNl9mMTYoZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRucV91MzJfZjMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmN2dG5xX3UzMl9mMzIoZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRucV94X3MxNl9mMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZjdnRucV94X3MxNl9mMTYoZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dG5xX3hfczMyX2YzMikpKQppbnQzMng0X3QgX19hcm1fdmN2dG5xX3hfczMyX2YzMihmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0bnFfeF91MTZfZjE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmN2dG5xX3hfdTE2X2YxNihmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0bnFfeF91MzJfZjMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmN2dG5xX3hfdTMyX2YzMihmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cHFfbV9zMTZfZjE2KSkpCmludDE2eDhfdCBfX2FybV92Y3Z0cHFfbV9zMTZfZjE2KGludDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHBxX21fczE2X2YxNikpKQppbnQxNng4X3QgX19hcm1fdmN2dHBxX20oaW50MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cHFfbV9zMzJfZjMyKSkpCmludDMyeDRfdCBfX2FybV92Y3Z0cHFfbV9zMzJfZjMyKGludDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHBxX21fczMyX2YzMikpKQppbnQzMng0X3QgX19hcm1fdmN2dHBxX20oaW50MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cHFfbV91MTZfZjE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmN2dHBxX21fdTE2X2YxNih1aW50MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cHFfbV91MTZfZjE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmN2dHBxX20odWludDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHBxX21fdTMyX2YzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZjdnRwcV9tX3UzMl9mMzIodWludDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHBxX21fdTMyX2YzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZjdnRwcV9tKHVpbnQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRwcV9zMTZfZjE2KSkpCmludDE2eDhfdCBfX2FybV92Y3Z0cHFfczE2X2YxNihmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHBxX3MzMl9mMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZjdnRwcV9zMzJfZjMyKGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cHFfdTE2X2YxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZjdnRwcV91MTZfZjE2KGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cHFfdTMyX2YzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZjdnRwcV91MzJfZjMyKGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cHFfeF9zMTZfZjE2KSkpCmludDE2eDhfdCBfX2FybV92Y3Z0cHFfeF9zMTZfZjE2KGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRwcV94X3MzMl9mMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZjdnRwcV94X3MzMl9mMzIoZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHBxX3hfdTE2X2YxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZjdnRwcV94X3UxNl9mMTYoZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHBxX3hfdTMyX2YzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZjdnRwcV94X3UzMl9mMzIoZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfZjE2X3MxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92Y3Z0cV9mMTZfczE2KGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfZjE2X3MxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92Y3Z0cShpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX2YxNl91MTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmN2dHFfZjE2X3UxNih1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV9mMTZfdTE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZjdnRxKHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX2YzMl9zMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmN2dHFfZjMyX3MzMihpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX2YzMl9zMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmN2dHEoaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV9mMzJfdTMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZjdnRxX2YzMl91MzIodWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfZjMyX3UzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92Y3Z0cSh1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV9tX2YxNl9zMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmN2dHFfbV9mMTZfczE2KGZsb2F0MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfbV9mMTZfczE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZjdnRxX20oZmxvYXQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV9tX2YxNl91MTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmN2dHFfbV9mMTZfdTE2KGZsb2F0MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX21fZjE2X3UxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92Y3Z0cV9tKGZsb2F0MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX21fZjMyX3MzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92Y3Z0cV9tX2YzMl9zMzIoZmxvYXQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV9tX2YzMl9zMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmN2dHFfbShmbG9hdDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX21fZjMyX3UzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92Y3Z0cV9tX2YzMl91MzIoZmxvYXQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfbV9mMzJfdTMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZjdnRxX20oZmxvYXQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfbV9uX2YxNl9zMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmN2dHFfbV9uX2YxNl9zMTYoZmxvYXQxNng4X3QsIGludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX21fbl9mMTZfczE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZjdnRxX21fbihmbG9hdDE2eDhfdCwgaW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfbV9uX2YxNl91MTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmN2dHFfbV9uX2YxNl91MTYoZmxvYXQxNng4X3QsIHVpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV9tX25fZjE2X3UxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92Y3Z0cV9tX24oZmxvYXQxNng4X3QsIHVpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV9tX25fZjMyX3MzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92Y3Z0cV9tX25fZjMyX3MzMihmbG9hdDMyeDRfdCwgaW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfbV9uX2YzMl9zMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmN2dHFfbV9uKGZsb2F0MzJ4NF90LCBpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV9tX25fZjMyX3UzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92Y3Z0cV9tX25fZjMyX3UzMihmbG9hdDMyeDRfdCwgdWludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX21fbl9mMzJfdTMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZjdnRxX21fbihmbG9hdDMyeDRfdCwgdWludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX21fbl9zMTZfZjE2KSkpCmludDE2eDhfdCBfX2FybV92Y3Z0cV9tX25fczE2X2YxNihpbnQxNng4X3QsIGZsb2F0MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfbV9uX3MxNl9mMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZjdnRxX21fbihpbnQxNng4X3QsIGZsb2F0MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfbV9uX3MzMl9mMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZjdnRxX21fbl9zMzJfZjMyKGludDMyeDRfdCwgZmxvYXQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV9tX25fczMyX2YzMikpKQppbnQzMng0X3QgX19hcm1fdmN2dHFfbV9uKGludDMyeDRfdCwgZmxvYXQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV9tX25fdTE2X2YxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZjdnRxX21fbl91MTZfZjE2KHVpbnQxNng4X3QsIGZsb2F0MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfbV9uX3UxNl9mMTYpKSkKdWludDE2eDhfdCBfX2FybV92Y3Z0cV9tX24odWludDE2eDhfdCwgZmxvYXQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV9tX25fdTMyX2YzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZjdnRxX21fbl91MzJfZjMyKHVpbnQzMng0X3QsIGZsb2F0MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfbV9uX3UzMl9mMzIpKSkKdWludDMyeDRfdCBfX2FybV92Y3Z0cV9tX24odWludDMyeDRfdCwgZmxvYXQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV9tX3MxNl9mMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZjdnRxX21fczE2X2YxNihpbnQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX21fczE2X2YxNikpKQppbnQxNng4X3QgX19hcm1fdmN2dHFfbShpbnQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX21fczMyX2YzMikpKQppbnQzMng0X3QgX19hcm1fdmN2dHFfbV9zMzJfZjMyKGludDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfbV9zMzJfZjMyKSkpCmludDMyeDRfdCBfX2FybV92Y3Z0cV9tKGludDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfbV91MTZfZjE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmN2dHFfbV91MTZfZjE2KHVpbnQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX21fdTE2X2YxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZjdnRxX20odWludDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfbV91MzJfZjMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmN2dHFfbV91MzJfZjMyKHVpbnQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX21fdTMyX2YzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZjdnRxX20odWludDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfbl9mMTZfczE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZjdnRxX25fZjE2X3MxNihpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfbl9mMTZfczE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZjdnRxX24oaW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX25fZjE2X3UxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92Y3Z0cV9uX2YxNl91MTYodWludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV9uX2YxNl91MTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmN2dHFfbih1aW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX25fZjMyX3MzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92Y3Z0cV9uX2YzMl9zMzIoaW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX25fZjMyX3MzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92Y3Z0cV9uKGludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV9uX2YzMl91MzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmN2dHFfbl9mMzJfdTMyKHVpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfbl9mMzJfdTMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZjdnRxX24odWludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV9uX3MxNl9mMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZjdnRxX25fczE2X2YxNihmbG9hdDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV9uX3MzMl9mMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZjdnRxX25fczMyX2YzMihmbG9hdDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV9uX3UxNl9mMTYpKSkKdWludDE2eDhfdCBfX2FybV92Y3Z0cV9uX3UxNl9mMTYoZmxvYXQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfbl91MzJfZjMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmN2dHFfbl91MzJfZjMyKGZsb2F0MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX3MxNl9mMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZjdnRxX3MxNl9mMTYoZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX3MzMl9mMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZjdnRxX3MzMl9mMzIoZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX3UxNl9mMTYpKSkKdWludDE2eDhfdCBfX2FybV92Y3Z0cV91MTZfZjE2KGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV91MzJfZjMyKSkpCnVpbnQzMng0X3QgX19hcm1fdmN2dHFfdTMyX2YzMihmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfeF9mMTZfczE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZjdnRxX3hfZjE2X3MxNihpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfeF9mMTZfczE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZjdnRxX3goaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX3hfZjE2X3UxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92Y3Z0cV94X2YxNl91MTYodWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV94X2YxNl91MTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmN2dHFfeCh1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX3hfZjMyX3MzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92Y3Z0cV94X2YzMl9zMzIoaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX3hfZjMyX3MzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92Y3Z0cV94KGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV94X2YzMl91MzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmN2dHFfeF9mMzJfdTMyKHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfeF9mMzJfdTMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZjdnRxX3godWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV94X25fZjE2X3MxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92Y3Z0cV94X25fZjE2X3MxNihpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV94X25fZjE2X3MxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92Y3Z0cV94X24oaW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfeF9uX2YxNl91MTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmN2dHFfeF9uX2YxNl91MTYodWludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX3hfbl9mMTZfdTE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZjdnRxX3hfbih1aW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfeF9uX2YzMl9zMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmN2dHFfeF9uX2YzMl9zMzIoaW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfeF9uX2YzMl9zMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmN2dHFfeF9uKGludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX3hfbl9mMzJfdTMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZjdnRxX3hfbl9mMzJfdTMyKHVpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV94X25fZjMyX3UzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92Y3Z0cV94X24odWludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX3hfbl9zMTZfZjE2KSkpCmludDE2eDhfdCBfX2FybV92Y3Z0cV94X25fczE2X2YxNihmbG9hdDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX3hfbl9zMzJfZjMyKSkpCmludDMyeDRfdCBfX2FybV92Y3Z0cV94X25fczMyX2YzMihmbG9hdDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX3hfbl91MTZfZjE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmN2dHFfeF9uX3UxNl9mMTYoZmxvYXQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV94X25fdTMyX2YzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZjdnRxX3hfbl91MzJfZjMyKGZsb2F0MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfeF9zMTZfZjE2KSkpCmludDE2eDhfdCBfX2FybV92Y3Z0cV94X3MxNl9mMTYoZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfeF9zMzJfZjMyKSkpCmludDMyeDRfdCBfX2FybV92Y3Z0cV94X3MzMl9mMzIoZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfeF91MTZfZjE2KSkpCnVpbnQxNng4X3QgX19hcm1fdmN2dHFfeF91MTZfZjE2KGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX3hfdTMyX2YzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZjdnRxX3hfdTMyX2YzMihmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0dHFfZjE2X2YzMikpKQpmbG9hdDE2eDhfdCBfX2FybV92Y3Z0dHFfZjE2X2YzMihmbG9hdDE2eDhfdCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnR0cV9mMzJfZjE2KSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZjdnR0cV9mMzJfZjE2KGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0dHFfbV9mMTZfZjMyKSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZjdnR0cV9tX2YxNl9mMzIoZmxvYXQxNng4X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnR0cV9tX2YzMl9mMTYpKSkKZmxvYXQzMng0X3QgX19hcm1fdmN2dHRxX21fZjMyX2YxNihmbG9hdDMyeDRfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHRxX3hfZjMyX2YxNikpKQpmbG9hdDMyeDRfdCBfX2FybV92Y3Z0dHFfeF9mMzJfZjE2KGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkdXBxX21fbl9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmR1cHFfbV9uX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkdXBxX21fbl9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmR1cHFfbShmbG9hdDE2eDhfdCwgZmxvYXQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkdXBxX21fbl9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmR1cHFfbV9uX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkdXBxX21fbl9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmR1cHFfbShmbG9hdDMyeDRfdCwgZmxvYXQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkdXBxX25fZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZkdXBxX25fZjE2KGZsb2F0MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmR1cHFfbl9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmR1cHFfbl9mMzIoZmxvYXQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHVwcV94X25fZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZkdXBxX3hfbl9mMTYoZmxvYXQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkdXBxX3hfbl9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmR1cHFfeF9uX2YzMihmbG9hdDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmVvcnFfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3Zlb3JxX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zlb3JxX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92ZW9ycShmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zlb3JxX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92ZW9ycV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZW9ycV9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmVvcnEoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZW9ycV9tX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92ZW9ycV9tX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zlb3JxX21fZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3Zlb3JxX20oZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZW9ycV9tX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92ZW9ycV9tX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zlb3JxX21fZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3Zlb3JxX20oZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZW9ycV94X2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92ZW9ycV94X2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmVvcnFfeF9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmVvcnFfeChmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmVvcnFfeF9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmVvcnFfeF9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zlb3JxX3hfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3Zlb3JxX3goZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZmbWFxX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92Zm1hcV9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmZtYXFfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZmbWFxKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZmbWFxX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92Zm1hcV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmZtYXFfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZmbWFxKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZmbWFxX21fZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZmbWFxX21fZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmZtYXFfbV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmZtYXFfbShmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZmbWFxX21fZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZmbWFxX21fZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmZtYXFfbV9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmZtYXFfbShmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZmbWFxX21fbl9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmZtYXFfbV9uX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIGZsb2F0MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Zm1hcV9tX25fZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZmbWFxX20oZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmZtYXFfbV9uX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92Zm1hcV9tX25fZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgZmxvYXQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZmbWFxX21fbl9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmZtYXFfbShmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Zm1hcV9uX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92Zm1hcV9uX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIGZsb2F0MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmZtYXFfbl9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmZtYXEoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZmbWFxX25fZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZmbWFxX25fZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgZmxvYXQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Zm1hcV9uX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92Zm1hcShmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmZtYXNxX21fbl9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmZtYXNxX21fbl9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmZtYXNxX21fbl9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmZtYXNxX20oZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmZtYXNxX21fbl9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmZtYXNxX21fbl9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmZtYXNxX21fbl9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmZtYXNxX20oZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmZtYXNxX25fZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZmbWFzcV9uX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIGZsb2F0MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmZtYXNxX25fZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZmbWFzcShmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIGZsb2F0MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmZtYXNxX25fZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZmbWFzcV9uX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmZtYXNxX25fZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZmbWFzcShmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmZtc3FfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZmbXNxX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Zm1zcV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmZtc3EoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmZtc3FfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZmbXNxX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Zm1zcV9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmZtc3EoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmZtc3FfbV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmZtc3FfbV9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Zm1zcV9tX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92Zm1zcV9tKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmZtc3FfbV9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmZtc3FfbV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Zm1zcV9tX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92Zm1zcV9tKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmdldHFfbGFuZV9mMTYpKSkKZmxvYXQxNl90IF9fYXJtX3ZnZXRxX2xhbmVfZjE2KGZsb2F0MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZnZXRxX2xhbmVfZjE2KSkpCmZsb2F0MTZfdCBfX2FybV92Z2V0cV9sYW5lKGZsb2F0MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZnZXRxX2xhbmVfZjMyKSkpCmZsb2F0MzJfdCBfX2FybV92Z2V0cV9sYW5lX2YzMihmbG9hdDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Z2V0cV9sYW5lX2YzMikpKQpmbG9hdDMyX3QgX19hcm1fdmdldHFfbGFuZShmbG9hdDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGQxcV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmxkMXFfZjE2KGNvbnN0IGZsb2F0MTZfdCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGQxcV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmxkMXEoY29uc3QgZmxvYXQxNl90ICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZDFxX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92bGQxcV9mMzIoY29uc3QgZmxvYXQzMl90ICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZDFxX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92bGQxcShjb25zdCBmbG9hdDMyX3QgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkMXFfel9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmxkMXFfel9mMTYoY29uc3QgZmxvYXQxNl90ICosIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkMXFfel9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmxkMXFfeihjb25zdCBmbG9hdDE2X3QgKiwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGQxcV96X2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92bGQxcV96X2YzMihjb25zdCBmbG9hdDMyX3QgKiwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGQxcV96X2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92bGQxcV96KGNvbnN0IGZsb2F0MzJfdCAqLCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZDJxX2YxNikpKQpmbG9hdDE2eDh4Ml90IF9fYXJtX3ZsZDJxX2YxNihjb25zdCBmbG9hdDE2X3QgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkMnFfZjE2KSkpCmZsb2F0MTZ4OHgyX3QgX19hcm1fdmxkMnEoY29uc3QgZmxvYXQxNl90ICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZDJxX2YzMikpKQpmbG9hdDMyeDR4Ml90IF9fYXJtX3ZsZDJxX2YzMihjb25zdCBmbG9hdDMyX3QgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkMnFfZjMyKSkpCmZsb2F0MzJ4NHgyX3QgX19hcm1fdmxkMnEoY29uc3QgZmxvYXQzMl90ICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZDRxX2YxNikpKQpmbG9hdDE2eDh4NF90IF9fYXJtX3ZsZDRxX2YxNihjb25zdCBmbG9hdDE2X3QgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkNHFfZjE2KSkpCmZsb2F0MTZ4OHg0X3QgX19hcm1fdmxkNHEoY29uc3QgZmxvYXQxNl90ICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZDRxX2YzMikpKQpmbG9hdDMyeDR4NF90IF9fYXJtX3ZsZDRxX2YzMihjb25zdCBmbG9hdDMyX3QgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkNHFfZjMyKSkpCmZsb2F0MzJ4NHg0X3QgX19hcm1fdmxkNHEoY29uc3QgZmxvYXQzMl90ICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJocV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdmxkcmhxX2YxNihjb25zdCBmbG9hdDE2X3QgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmhxX2dhdGhlcl9vZmZzZXRfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZsZHJocV9nYXRoZXJfb2Zmc2V0X2YxNihjb25zdCBmbG9hdDE2X3QgKiwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmhxX2dhdGhlcl9vZmZzZXRfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZsZHJocV9nYXRoZXJfb2Zmc2V0KGNvbnN0IGZsb2F0MTZfdCAqLCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyaHFfZ2F0aGVyX29mZnNldF96X2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92bGRyaHFfZ2F0aGVyX29mZnNldF96X2YxNihjb25zdCBmbG9hdDE2X3QgKiwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyaHFfZ2F0aGVyX29mZnNldF96X2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92bGRyaHFfZ2F0aGVyX29mZnNldF96KGNvbnN0IGZsb2F0MTZfdCAqLCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJocV9nYXRoZXJfc2hpZnRlZF9vZmZzZXRfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZsZHJocV9nYXRoZXJfc2hpZnRlZF9vZmZzZXRfZjE2KGNvbnN0IGZsb2F0MTZfdCAqLCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyaHFfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92bGRyaHFfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0KGNvbnN0IGZsb2F0MTZfdCAqLCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyaHFfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3pfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZsZHJocV9nYXRoZXJfc2hpZnRlZF9vZmZzZXRfel9mMTYoY29uc3QgZmxvYXQxNl90ICosIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmhxX2dhdGhlcl9zaGlmdGVkX29mZnNldF96X2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92bGRyaHFfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3ooY29uc3QgZmxvYXQxNl90ICosIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmhxX3pfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZsZHJocV96X2YxNihjb25zdCBmbG9hdDE2X3QgKiwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyd3FfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZsZHJ3cV9mMzIoY29uc3QgZmxvYXQzMl90ICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJ3cV9nYXRoZXJfYmFzZV9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmxkcndxX2dhdGhlcl9iYXNlX2YzMih1aW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJ3cV9nYXRoZXJfYmFzZV93Yl9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmxkcndxX2dhdGhlcl9iYXNlX3diX2YzMih1aW50MzJ4NF90ICosIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcndxX2dhdGhlcl9iYXNlX3diX3pfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZsZHJ3cV9nYXRoZXJfYmFzZV93Yl96X2YzMih1aW50MzJ4NF90ICosIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyd3FfZ2F0aGVyX2Jhc2Vfel9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmxkcndxX2dhdGhlcl9iYXNlX3pfZjMyKHVpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyd3FfZ2F0aGVyX29mZnNldF9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmxkcndxX2dhdGhlcl9vZmZzZXRfZjMyKGNvbnN0IGZsb2F0MzJfdCAqLCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyd3FfZ2F0aGVyX29mZnNldF9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmxkcndxX2dhdGhlcl9vZmZzZXQoY29uc3QgZmxvYXQzMl90ICosIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJ3cV9nYXRoZXJfb2Zmc2V0X3pfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZsZHJ3cV9nYXRoZXJfb2Zmc2V0X3pfZjMyKGNvbnN0IGZsb2F0MzJfdCAqLCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJ3cV9nYXRoZXJfb2Zmc2V0X3pfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZsZHJ3cV9nYXRoZXJfb2Zmc2V0X3ooY29uc3QgZmxvYXQzMl90ICosIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcndxX2dhdGhlcl9zaGlmdGVkX29mZnNldF9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmxkcndxX2dhdGhlcl9zaGlmdGVkX29mZnNldF9mMzIoY29uc3QgZmxvYXQzMl90ICosIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJ3cV9nYXRoZXJfc2hpZnRlZF9vZmZzZXRfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZsZHJ3cV9nYXRoZXJfc2hpZnRlZF9vZmZzZXQoY29uc3QgZmxvYXQzMl90ICosIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJ3cV9nYXRoZXJfc2hpZnRlZF9vZmZzZXRfel9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmxkcndxX2dhdGhlcl9zaGlmdGVkX29mZnNldF96X2YzMihjb25zdCBmbG9hdDMyX3QgKiwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyd3FfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3pfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZsZHJ3cV9nYXRoZXJfc2hpZnRlZF9vZmZzZXRfeihjb25zdCBmbG9hdDMyX3QgKiwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyd3Ffel9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdmxkcndxX3pfZjMyKGNvbnN0IGZsb2F0MzJfdCAqLCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhubWFxX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92bWF4bm1hcV9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4bm1hcV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdm1heG5tYXEoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4bm1hcV9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdm1heG5tYXFfZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heG5tYXFfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZtYXhubWFxKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heG5tYXFfbV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdm1heG5tYXFfbV9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhubWFxX21fZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZtYXhubWFxX20oZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhubWFxX21fZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZtYXhubWFxX21fZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4bm1hcV9tX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92bWF4bm1hcV9tKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4bm1hdnFfZjE2KSkpCmZsb2F0MTZfdCBfX2FybV92bWF4bm1hdnFfZjE2KGZsb2F0MTZfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhubWF2cV9mMTYpKSkKZmxvYXQxNl90IF9fYXJtX3ZtYXhubWF2cShmbG9hdDE2X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4bm1hdnFfZjMyKSkpCmZsb2F0MzJfdCBfX2FybV92bWF4bm1hdnFfZjMyKGZsb2F0MzJfdCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhubWF2cV9mMzIpKSkKZmxvYXQzMl90IF9fYXJtX3ZtYXhubWF2cShmbG9hdDMyX3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4bm1hdnFfcF9mMTYpKSkKZmxvYXQxNl90IF9fYXJtX3ZtYXhubWF2cV9wX2YxNihmbG9hdDE2X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhubWF2cV9wX2YxNikpKQpmbG9hdDE2X3QgX19hcm1fdm1heG5tYXZxX3AoZmxvYXQxNl90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4bm1hdnFfcF9mMzIpKSkKZmxvYXQzMl90IF9fYXJtX3ZtYXhubWF2cV9wX2YzMihmbG9hdDMyX3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhubWF2cV9wX2YzMikpKQpmbG9hdDMyX3QgX19hcm1fdm1heG5tYXZxX3AoZmxvYXQzMl90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4bm1xX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92bWF4bm1xX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhubXFfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZtYXhubXEoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4bm1xX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92bWF4bm1xX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhubXFfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZtYXhubXEoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4bm1xX21fZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZtYXhubXFfbV9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4bm1xX21fZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZtYXhubXFfbShmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhubXFfbV9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdm1heG5tcV9tX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhubXFfbV9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdm1heG5tcV9tKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heG5tcV94X2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92bWF4bm1xX3hfZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4bm1xX3hfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZtYXhubXFfeChmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heG5tcV94X2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92bWF4bm1xX3hfZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4bm1xX3hfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZtYXhubXFfeChmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heG5tdnFfZjE2KSkpCmZsb2F0MTZfdCBfX2FybV92bWF4bm12cV9mMTYoZmxvYXQxNl90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heG5tdnFfZjE2KSkpCmZsb2F0MTZfdCBfX2FybV92bWF4bm12cShmbG9hdDE2X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4bm12cV9mMzIpKSkKZmxvYXQzMl90IF9fYXJtX3ZtYXhubXZxX2YzMihmbG9hdDMyX3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4bm12cV9mMzIpKSkKZmxvYXQzMl90IF9fYXJtX3ZtYXhubXZxKGZsb2F0MzJfdCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhubXZxX3BfZjE2KSkpCmZsb2F0MTZfdCBfX2FybV92bWF4bm12cV9wX2YxNihmbG9hdDE2X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhubXZxX3BfZjE2KSkpCmZsb2F0MTZfdCBfX2FybV92bWF4bm12cV9wKGZsb2F0MTZfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heG5tdnFfcF9mMzIpKSkKZmxvYXQzMl90IF9fYXJtX3ZtYXhubXZxX3BfZjMyKGZsb2F0MzJfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heG5tdnFfcF9mMzIpKSkKZmxvYXQzMl90IF9fYXJtX3ZtYXhubXZxX3AoZmxvYXQzMl90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWlubm1hcV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdm1pbm5tYXFfZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbm5tYXFfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZtaW5ubWFxKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbm5tYXFfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZtaW5ubWFxX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5ubWFxX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92bWlubm1hcShmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5ubWFxX21fZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZtaW5ubWFxX21fZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWlubm1hcV9tX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92bWlubm1hcV9tKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWlubm1hcV9tX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92bWlubm1hcV9tX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbm5tYXFfbV9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdm1pbm5tYXFfbShmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbm5tYXZxX2YxNikpKQpmbG9hdDE2X3QgX19hcm1fdm1pbm5tYXZxX2YxNihmbG9hdDE2X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWlubm1hdnFfZjE2KSkpCmZsb2F0MTZfdCBfX2FybV92bWlubm1hdnEoZmxvYXQxNl90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbm5tYXZxX2YzMikpKQpmbG9hdDMyX3QgX19hcm1fdm1pbm5tYXZxX2YzMihmbG9hdDMyX3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWlubm1hdnFfZjMyKSkpCmZsb2F0MzJfdCBfX2FybV92bWlubm1hdnEoZmxvYXQzMl90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbm5tYXZxX3BfZjE2KSkpCmZsb2F0MTZfdCBfX2FybV92bWlubm1hdnFfcF9mMTYoZmxvYXQxNl90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWlubm1hdnFfcF9mMTYpKSkKZmxvYXQxNl90IF9fYXJtX3ZtaW5ubWF2cV9wKGZsb2F0MTZfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbm5tYXZxX3BfZjMyKSkpCmZsb2F0MzJfdCBfX2FybV92bWlubm1hdnFfcF9mMzIoZmxvYXQzMl90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWlubm1hdnFfcF9mMzIpKSkKZmxvYXQzMl90IF9fYXJtX3ZtaW5ubWF2cV9wKGZsb2F0MzJfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbm5tcV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdm1pbm5tcV9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWlubm1xX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92bWlubm1xKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbm5tcV9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdm1pbm5tcV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWlubm1xX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92bWlubm1xKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbm5tcV9tX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92bWlubm1xX21fZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbm5tcV9tX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92bWlubm1xX20oZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWlubm1xX21fZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZtaW5ubXFfbV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWlubm1xX21fZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZtaW5ubXFfbShmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5ubXFfeF9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdm1pbm5tcV94X2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbm5tcV94X2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92bWlubm1xX3goZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5ubXFfeF9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdm1pbm5tcV94X2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbm5tcV94X2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92bWlubm1xX3goZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5ubXZxX2YxNikpKQpmbG9hdDE2X3QgX19hcm1fdm1pbm5tdnFfZjE2KGZsb2F0MTZfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5ubXZxX2YxNikpKQpmbG9hdDE2X3QgX19hcm1fdm1pbm5tdnEoZmxvYXQxNl90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbm5tdnFfZjMyKSkpCmZsb2F0MzJfdCBfX2FybV92bWlubm12cV9mMzIoZmxvYXQzMl90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbm5tdnFfZjMyKSkpCmZsb2F0MzJfdCBfX2FybV92bWlubm12cShmbG9hdDMyX3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWlubm12cV9wX2YxNikpKQpmbG9hdDE2X3QgX19hcm1fdm1pbm5tdnFfcF9mMTYoZmxvYXQxNl90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWlubm12cV9wX2YxNikpKQpmbG9hdDE2X3QgX19hcm1fdm1pbm5tdnFfcChmbG9hdDE2X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5ubXZxX3BfZjMyKSkpCmZsb2F0MzJfdCBfX2FybV92bWlubm12cV9wX2YzMihmbG9hdDMyX3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5ubXZxX3BfZjMyKSkpCmZsb2F0MzJfdCBfX2FybV92bWlubm12cV9wKGZsb2F0MzJfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZtdWxxX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92bXVscShmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92bXVscV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdm11bHEoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV9tX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92bXVscV9tX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX21fZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZtdWxxX20oZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV9tX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92bXVscV9tX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX21fZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZtdWxxX20oZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV9tX25fZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZtdWxxX21fbl9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfbV9uX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92bXVscV9tKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX21fbl9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdm11bHFfbV9uX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV9tX25fZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZtdWxxX20oZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfbl9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdm11bHFfbl9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfbl9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdm11bHEoZmxvYXQxNng4X3QsIGZsb2F0MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfbl9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdm11bHFfbl9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfbl9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdm11bHEoZmxvYXQzMng0X3QsIGZsb2F0MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfeF9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdm11bHFfeF9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX3hfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZtdWxxX3goZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX3hfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZtdWxxX3hfZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV94X2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92bXVscV94KGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV94X25fZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZtdWxxX3hfbl9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV94X25fZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZtdWxxX3goZmxvYXQxNng4X3QsIGZsb2F0MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV94X25fZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZtdWxxX3hfbl9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV94X25fZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZtdWxxX3goZmxvYXQzMng0X3QsIGZsb2F0MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bmVncV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdm5lZ3FfZjE2KGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bmVncV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdm5lZ3EoZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZuZWdxX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92bmVncV9mMzIoZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZuZWdxX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92bmVncShmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm5lZ3FfbV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdm5lZ3FfbV9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZuZWdxX21fZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZuZWdxX20oZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZuZWdxX21fZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZuZWdxX21fZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bmVncV9tX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92bmVncV9tKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bmVncV94X2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92bmVncV94X2YxNihmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bmVncV94X2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92bmVncV94KGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZuZWdxX3hfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZuZWdxX3hfZjMyKGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZuZWdxX3hfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZuZWdxX3goZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ybnFfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3Zvcm5xX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zvcm5xX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92b3JucShmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zvcm5xX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92b3JucV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JucV9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdm9ybnEoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JucV9tX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92b3JucV9tX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zvcm5xX21fZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3Zvcm5xX20oZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JucV9tX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92b3JucV9tX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zvcm5xX21fZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3Zvcm5xX20oZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JucV94X2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92b3JucV94X2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ybnFfeF9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdm9ybnFfeChmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ybnFfeF9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdm9ybnFfeF9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zvcm5xX3hfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3Zvcm5xX3goZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZvcnJxX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92b3JycV9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JycV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdm9ycnEoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JycV9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdm9ycnFfZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ycnFfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZvcnJxKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ycnFfbV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdm9ycnFfbV9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JycV9tX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92b3JycV9tKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ycnFfbV9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdm9ycnFfbV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JycV9tX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92b3JycV9tKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ycnFfeF9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdm9ycnFfeF9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZvcnJxX3hfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZvcnJxX3goZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZvcnJxX3hfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZvcnJxX3hfZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JycV94X2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92b3JycV94KGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cHNlbHFfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3Zwc2VscV9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zwc2VscV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdnBzZWxxKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cHNlbHFfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3Zwc2VscV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zwc2VscV9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdnBzZWxxKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX2YxNl9mMzIpKSkKZmxvYXQxNng4X3QgX19hcm1fdnJlaW50ZXJwcmV0cV9mMTZfZjMyKGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX2YxNl9mMzIpKSkKZmxvYXQxNng4X3QgX19hcm1fdnJlaW50ZXJwcmV0cV9mMTYoZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfZjE2X3MxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92cmVpbnRlcnByZXRxX2YxNl9zMTYoaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX2YxNl9zMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdnJlaW50ZXJwcmV0cV9mMTYoaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX2YxNl9zMzIpKSkKZmxvYXQxNng4X3QgX19hcm1fdnJlaW50ZXJwcmV0cV9mMTZfczMyKGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9mMTZfczMyKSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZyZWludGVycHJldHFfZjE2KGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9mMTZfczY0KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZyZWludGVycHJldHFfZjE2X3M2NChpbnQ2NHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfZjE2X3M2NCkpKQpmbG9hdDE2eDhfdCBfX2FybV92cmVpbnRlcnByZXRxX2YxNihpbnQ2NHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfZjE2X3M4KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZyZWludGVycHJldHFfZjE2X3M4KGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9mMTZfczgpKSkKZmxvYXQxNng4X3QgX19hcm1fdnJlaW50ZXJwcmV0cV9mMTYoaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX2YxNl91MTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdnJlaW50ZXJwcmV0cV9mMTZfdTE2KHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfZjE2X3UxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92cmVpbnRlcnByZXRxX2YxNih1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX2YxNl91MzIpKSkKZmxvYXQxNng4X3QgX19hcm1fdnJlaW50ZXJwcmV0cV9mMTZfdTMyKHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfZjE2X3UzMikpKQpmbG9hdDE2eDhfdCBfX2FybV92cmVpbnRlcnByZXRxX2YxNih1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX2YxNl91NjQpKSkKZmxvYXQxNng4X3QgX19hcm1fdnJlaW50ZXJwcmV0cV9mMTZfdTY0KHVpbnQ2NHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfZjE2X3U2NCkpKQpmbG9hdDE2eDhfdCBfX2FybV92cmVpbnRlcnByZXRxX2YxNih1aW50NjR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX2YxNl91OCkpKQpmbG9hdDE2eDhfdCBfX2FybV92cmVpbnRlcnByZXRxX2YxNl91OCh1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX2YxNl91OCkpKQpmbG9hdDE2eDhfdCBfX2FybV92cmVpbnRlcnByZXRxX2YxNih1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX2YzMl9mMTYpKSkKZmxvYXQzMng0X3QgX19hcm1fdnJlaW50ZXJwcmV0cV9mMzJfZjE2KGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX2YzMl9mMTYpKSkKZmxvYXQzMng0X3QgX19hcm1fdnJlaW50ZXJwcmV0cV9mMzIoZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfZjMyX3MxNikpKQpmbG9hdDMyeDRfdCBfX2FybV92cmVpbnRlcnByZXRxX2YzMl9zMTYoaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX2YzMl9zMTYpKSkKZmxvYXQzMng0X3QgX19hcm1fdnJlaW50ZXJwcmV0cV9mMzIoaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX2YzMl9zMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdnJlaW50ZXJwcmV0cV9mMzJfczMyKGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9mMzJfczMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZyZWludGVycHJldHFfZjMyKGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9mMzJfczY0KSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZyZWludGVycHJldHFfZjMyX3M2NChpbnQ2NHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfZjMyX3M2NCkpKQpmbG9hdDMyeDRfdCBfX2FybV92cmVpbnRlcnByZXRxX2YzMihpbnQ2NHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfZjMyX3M4KSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZyZWludGVycHJldHFfZjMyX3M4KGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9mMzJfczgpKSkKZmxvYXQzMng0X3QgX19hcm1fdnJlaW50ZXJwcmV0cV9mMzIoaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX2YzMl91MTYpKSkKZmxvYXQzMng0X3QgX19hcm1fdnJlaW50ZXJwcmV0cV9mMzJfdTE2KHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfZjMyX3UxNikpKQpmbG9hdDMyeDRfdCBfX2FybV92cmVpbnRlcnByZXRxX2YzMih1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX2YzMl91MzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdnJlaW50ZXJwcmV0cV9mMzJfdTMyKHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfZjMyX3UzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92cmVpbnRlcnByZXRxX2YzMih1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX2YzMl91NjQpKSkKZmxvYXQzMng0X3QgX19hcm1fdnJlaW50ZXJwcmV0cV9mMzJfdTY0KHVpbnQ2NHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfZjMyX3U2NCkpKQpmbG9hdDMyeDRfdCBfX2FybV92cmVpbnRlcnByZXRxX2YzMih1aW50NjR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX2YzMl91OCkpKQpmbG9hdDMyeDRfdCBfX2FybV92cmVpbnRlcnByZXRxX2YzMl91OCh1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX2YzMl91OCkpKQpmbG9hdDMyeDRfdCBfX2FybV92cmVpbnRlcnByZXRxX2YzMih1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3MxNl9mMTYpKSkKaW50MTZ4OF90IF9fYXJtX3ZyZWludGVycHJldHFfczE2X2YxNihmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zMTZfZjE2KSkpCmludDE2eDhfdCBfX2FybV92cmVpbnRlcnByZXRxX3MxNihmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zMTZfZjMyKSkpCmludDE2eDhfdCBfX2FybV92cmVpbnRlcnByZXRxX3MxNl9mMzIoZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczE2X2YzMikpKQppbnQxNng4X3QgX19hcm1fdnJlaW50ZXJwcmV0cV9zMTYoZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczMyX2YxNikpKQppbnQzMng0X3QgX19hcm1fdnJlaW50ZXJwcmV0cV9zMzJfZjE2KGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3MzMl9mMTYpKSkKaW50MzJ4NF90IF9fYXJtX3ZyZWludGVycHJldHFfczMyKGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3MzMl9mMzIpKSkKaW50MzJ4NF90IF9fYXJtX3ZyZWludGVycHJldHFfczMyX2YzMihmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zMzJfZjMyKSkpCmludDMyeDRfdCBfX2FybV92cmVpbnRlcnByZXRxX3MzMihmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zNjRfZjE2KSkpCmludDY0eDJfdCBfX2FybV92cmVpbnRlcnByZXRxX3M2NF9mMTYoZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczY0X2YxNikpKQppbnQ2NHgyX3QgX19hcm1fdnJlaW50ZXJwcmV0cV9zNjQoZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczY0X2YzMikpKQppbnQ2NHgyX3QgX19hcm1fdnJlaW50ZXJwcmV0cV9zNjRfZjMyKGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3M2NF9mMzIpKSkKaW50NjR4Ml90IF9fYXJtX3ZyZWludGVycHJldHFfczY0KGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3M4X2YxNikpKQppbnQ4eDE2X3QgX19hcm1fdnJlaW50ZXJwcmV0cV9zOF9mMTYoZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczhfZjE2KSkpCmludDh4MTZfdCBfX2FybV92cmVpbnRlcnByZXRxX3M4KGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3M4X2YzMikpKQppbnQ4eDE2X3QgX19hcm1fdnJlaW50ZXJwcmV0cV9zOF9mMzIoZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczhfZjMyKSkpCmludDh4MTZfdCBfX2FybV92cmVpbnRlcnByZXRxX3M4KGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3UxNl9mMTYpKSkKdWludDE2eDhfdCBfX2FybV92cmVpbnRlcnByZXRxX3UxNl9mMTYoZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdTE2X2YxNikpKQp1aW50MTZ4OF90IF9fYXJtX3ZyZWludGVycHJldHFfdTE2KGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3UxNl9mMzIpKSkKdWludDE2eDhfdCBfX2FybV92cmVpbnRlcnByZXRxX3UxNl9mMzIoZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdTE2X2YzMikpKQp1aW50MTZ4OF90IF9fYXJtX3ZyZWludGVycHJldHFfdTE2KGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3UzMl9mMTYpKSkKdWludDMyeDRfdCBfX2FybV92cmVpbnRlcnByZXRxX3UzMl9mMTYoZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdTMyX2YxNikpKQp1aW50MzJ4NF90IF9fYXJtX3ZyZWludGVycHJldHFfdTMyKGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3UzMl9mMzIpKSkKdWludDMyeDRfdCBfX2FybV92cmVpbnRlcnByZXRxX3UzMl9mMzIoZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdTMyX2YzMikpKQp1aW50MzJ4NF90IF9fYXJtX3ZyZWludGVycHJldHFfdTMyKGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3U2NF9mMTYpKSkKdWludDY0eDJfdCBfX2FybV92cmVpbnRlcnByZXRxX3U2NF9mMTYoZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdTY0X2YxNikpKQp1aW50NjR4Ml90IF9fYXJtX3ZyZWludGVycHJldHFfdTY0KGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3U2NF9mMzIpKSkKdWludDY0eDJfdCBfX2FybV92cmVpbnRlcnByZXRxX3U2NF9mMzIoZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdTY0X2YzMikpKQp1aW50NjR4Ml90IF9fYXJtX3ZyZWludGVycHJldHFfdTY0KGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3U4X2YxNikpKQp1aW50OHgxNl90IF9fYXJtX3ZyZWludGVycHJldHFfdThfZjE2KGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3U4X2YxNikpKQp1aW50OHgxNl90IF9fYXJtX3ZyZWludGVycHJldHFfdTgoZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdThfZjMyKSkpCnVpbnQ4eDE2X3QgX19hcm1fdnJlaW50ZXJwcmV0cV91OF9mMzIoZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdThfZjMyKSkpCnVpbnQ4eDE2X3QgX19hcm1fdnJlaW50ZXJwcmV0cV91OChmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjMycV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdnJldjMycV9mMTYoZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXYzMnFfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZyZXYzMnEoZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXYzMnFfbV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdnJldjMycV9tX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjMycV9tX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92cmV2MzJxX20oZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXYzMnFfeF9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdnJldjMycV94X2YxNihmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2MzJxX3hfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZyZXYzMnFfeChmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2NjRxX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92cmV2NjRxX2YxNihmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjY0cV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdnJldjY0cShmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjY0cV9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdnJldjY0cV9mMzIoZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXY2NHFfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZyZXY2NHEoZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXY2NHFfbV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdnJldjY0cV9tX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjY0cV9tX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92cmV2NjRxX20oZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXY2NHFfbV9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdnJldjY0cV9tX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjY0cV9tX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92cmV2NjRxX20oZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXY2NHFfeF9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdnJldjY0cV94X2YxNihmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2NjRxX3hfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZyZXY2NHFfeChmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2NjRxX3hfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZyZXY2NHFfeF9mMzIoZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjY0cV94X2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92cmV2NjRxX3goZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZGFxX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92cm5kYXFfZjE2KGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm5kYXFfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZybmRhcShmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZGFxX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92cm5kYXFfZjMyKGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm5kYXFfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZybmRhcShmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZGFxX21fZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZybmRhcV9tX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZGFxX21fZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZybmRhcV9tKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm5kYXFfbV9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdnJuZGFxX21fZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm5kYXFfbV9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdnJuZGFxX20oZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmRhcV94X2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92cm5kYXFfeF9mMTYoZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZGFxX3hfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZybmRhcV94KGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmRhcV94X2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92cm5kYXFfeF9mMzIoZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZGFxX3hfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZybmRhcV94KGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmRtcV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdnJuZG1xX2YxNihmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZG1xX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92cm5kbXEoZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmRtcV9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdnJuZG1xX2YzMihmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZG1xX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92cm5kbXEoZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmRtcV9tX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92cm5kbXFfbV9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmRtcV9tX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92cm5kbXFfbShmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZG1xX21fZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZybmRtcV9tX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZG1xX21fZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZybmRtcV9tKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm5kbXFfeF9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdnJuZG1xX3hfZjE2KGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmRtcV94X2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92cm5kbXFfeChmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm5kbXFfeF9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdnJuZG1xX3hfZjMyKGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmRtcV94X2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92cm5kbXFfeChmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm5kbnFfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZybmRucV9mMTYoZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmRucV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdnJuZG5xKGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm5kbnFfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZybmRucV9mMzIoZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmRucV9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdnJuZG5xKGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm5kbnFfbV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdnJuZG5xX21fZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm5kbnFfbV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdnJuZG5xX20oZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmRucV9tX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92cm5kbnFfbV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmRucV9tX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92cm5kbnFfbShmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZG5xX3hfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZybmRucV94X2YxNihmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm5kbnFfeF9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdnJuZG5xX3goZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZG5xX3hfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZybmRucV94X2YzMihmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm5kbnFfeF9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdnJuZG5xX3goZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZHBxX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92cm5kcHFfZjE2KGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm5kcHFfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZybmRwcShmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZHBxX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92cm5kcHFfZjMyKGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm5kcHFfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZybmRwcShmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZHBxX21fZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZybmRwcV9tX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZHBxX21fZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZybmRwcV9tKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm5kcHFfbV9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdnJuZHBxX21fZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm5kcHFfbV9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdnJuZHBxX20oZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmRwcV94X2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92cm5kcHFfeF9mMTYoZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZHBxX3hfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZybmRwcV94KGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmRwcV94X2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92cm5kcHFfeF9mMzIoZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZHBxX3hfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZybmRwcV94KGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmRxX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92cm5kcV9mMTYoZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmRxX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92cm5kcShmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZHFfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZybmRxX2YzMihmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZHFfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZybmRxKGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm5kcV9tX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92cm5kcV9tX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZHFfbV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdnJuZHFfbShmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZHFfbV9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdnJuZHFfbV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmRxX21fZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZybmRxX20oZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmRxX3hfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZybmRxX3hfZjE2KGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmRxX3hfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZybmRxX3goZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZHFfeF9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdnJuZHFfeF9mMzIoZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZHFfeF9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdnJuZHFfeChmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm5keHFfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZybmR4cV9mMTYoZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmR4cV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdnJuZHhxKGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm5keHFfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZybmR4cV9mMzIoZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmR4cV9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdnJuZHhxKGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm5keHFfbV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdnJuZHhxX21fZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm5keHFfbV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdnJuZHhxX20oZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmR4cV9tX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92cm5keHFfbV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmR4cV9tX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92cm5keHFfbShmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZHhxX3hfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZybmR4cV94X2YxNihmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm5keHFfeF9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdnJuZHhxX3goZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZHhxX3hfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZybmR4cV94X2YzMihmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm5keHFfeF9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdnJuZHhxX3goZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNldHFfbGFuZV9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdnNldHFfbGFuZV9mMTYoZmxvYXQxNl90LCBmbG9hdDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2V0cV9sYW5lX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92c2V0cV9sYW5lKGZsb2F0MTZfdCwgZmxvYXQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNldHFfbGFuZV9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdnNldHFfbGFuZV9mMzIoZmxvYXQzMl90LCBmbG9hdDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2V0cV9sYW5lX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92c2V0cV9sYW5lKGZsb2F0MzJfdCwgZmxvYXQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0MXFfZjE2KSkpCnZvaWQgX19hcm1fdnN0MXFfZjE2KGZsb2F0MTZfdCAqLCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0MXFfZjE2KSkpCnZvaWQgX19hcm1fdnN0MXEoZmxvYXQxNl90ICosIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3QxcV9mMzIpKSkKdm9pZCBfX2FybV92c3QxcV9mMzIoZmxvYXQzMl90ICosIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3QxcV9mMzIpKSkKdm9pZCBfX2FybV92c3QxcShmbG9hdDMyX3QgKiwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdDFxX3BfZjE2KSkpCnZvaWQgX19hcm1fdnN0MXFfcF9mMTYoZmxvYXQxNl90ICosIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdDFxX3BfZjE2KSkpCnZvaWQgX19hcm1fdnN0MXFfcChmbG9hdDE2X3QgKiwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0MXFfcF9mMzIpKSkKdm9pZCBfX2FybV92c3QxcV9wX2YzMihmbG9hdDMyX3QgKiwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0MXFfcF9mMzIpKSkKdm9pZCBfX2FybV92c3QxcV9wKGZsb2F0MzJfdCAqLCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3QycV9mMTYpKSkKdm9pZCBfX2FybV92c3QycV9mMTYoZmxvYXQxNl90ICosIGZsb2F0MTZ4OHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdDJxX2YxNikpKQp2b2lkIF9fYXJtX3ZzdDJxKGZsb2F0MTZfdCAqLCBmbG9hdDE2eDh4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3QycV9mMzIpKSkKdm9pZCBfX2FybV92c3QycV9mMzIoZmxvYXQzMl90ICosIGZsb2F0MzJ4NHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdDJxX2YzMikpKQp2b2lkIF9fYXJtX3ZzdDJxKGZsb2F0MzJfdCAqLCBmbG9hdDMyeDR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Q0cV9mMTYpKSkKdm9pZCBfX2FybV92c3Q0cV9mMTYoZmxvYXQxNl90ICosIGZsb2F0MTZ4OHg0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdDRxX2YxNikpKQp2b2lkIF9fYXJtX3ZzdDRxKGZsb2F0MTZfdCAqLCBmbG9hdDE2eDh4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Q0cV9mMzIpKSkKdm9pZCBfX2FybV92c3Q0cV9mMzIoZmxvYXQzMl90ICosIGZsb2F0MzJ4NHg0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdDRxX2YzMikpKQp2b2lkIF9fYXJtX3ZzdDRxKGZsb2F0MzJfdCAqLCBmbG9hdDMyeDR4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyaHFfZjE2KSkpCnZvaWQgX19hcm1fdnN0cmhxX2YxNihmbG9hdDE2X3QgKiwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJocV9mMTYpKSkKdm9pZCBfX2FybV92c3RyaHEoZmxvYXQxNl90ICosIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyaHFfcF9mMTYpKSkKdm9pZCBfX2FybV92c3RyaHFfcF9mMTYoZmxvYXQxNl90ICosIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJocV9wX2YxNikpKQp2b2lkIF9fYXJtX3ZzdHJocV9wKGZsb2F0MTZfdCAqLCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyaHFfc2NhdHRlcl9vZmZzZXRfZjE2KSkpCnZvaWQgX19hcm1fdnN0cmhxX3NjYXR0ZXJfb2Zmc2V0X2YxNihmbG9hdDE2X3QgKiwgdWludDE2eDhfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJocV9zY2F0dGVyX29mZnNldF9mMTYpKSkKdm9pZCBfX2FybV92c3RyaHFfc2NhdHRlcl9vZmZzZXQoZmxvYXQxNl90ICosIHVpbnQxNng4X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyaHFfc2NhdHRlcl9vZmZzZXRfcF9mMTYpKSkKdm9pZCBfX2FybV92c3RyaHFfc2NhdHRlcl9vZmZzZXRfcF9mMTYoZmxvYXQxNl90ICosIHVpbnQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJocV9zY2F0dGVyX29mZnNldF9wX2YxNikpKQp2b2lkIF9fYXJtX3ZzdHJocV9zY2F0dGVyX29mZnNldF9wKGZsb2F0MTZfdCAqLCB1aW50MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyaHFfc2NhdHRlcl9zaGlmdGVkX29mZnNldF9mMTYpKSkKdm9pZCBfX2FybV92c3RyaHFfc2NhdHRlcl9zaGlmdGVkX29mZnNldF9mMTYoZmxvYXQxNl90ICosIHVpbnQxNng4X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyaHFfc2NhdHRlcl9zaGlmdGVkX29mZnNldF9mMTYpKSkKdm9pZCBfX2FybV92c3RyaHFfc2NhdHRlcl9zaGlmdGVkX29mZnNldChmbG9hdDE2X3QgKiwgdWludDE2eDhfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJocV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3BfZjE2KSkpCnZvaWQgX19hcm1fdnN0cmhxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfcF9mMTYoZmxvYXQxNl90ICosIHVpbnQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJocV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3BfZjE2KSkpCnZvaWQgX19hcm1fdnN0cmhxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfcChmbG9hdDE2X3QgKiwgdWludDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cndxX2YzMikpKQp2b2lkIF9fYXJtX3ZzdHJ3cV9mMzIoZmxvYXQzMl90ICosIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Ryd3FfZjMyKSkpCnZvaWQgX19hcm1fdnN0cndxKGZsb2F0MzJfdCAqLCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cndxX3BfZjMyKSkpCnZvaWQgX19hcm1fdnN0cndxX3BfZjMyKGZsb2F0MzJfdCAqLCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Ryd3FfcF9mMzIpKSkKdm9pZCBfX2FybV92c3Ryd3FfcChmbG9hdDMyX3QgKiwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cndxX3NjYXR0ZXJfYmFzZV9mMzIpKSkKdm9pZCBfX2FybV92c3Ryd3Ffc2NhdHRlcl9iYXNlX2YzMih1aW50MzJ4NF90LCBpbnQsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Ryd3Ffc2NhdHRlcl9iYXNlX2YzMikpKQp2b2lkIF9fYXJtX3ZzdHJ3cV9zY2F0dGVyX2Jhc2UodWludDMyeDRfdCwgaW50LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cndxX3NjYXR0ZXJfYmFzZV9wX2YzMikpKQp2b2lkIF9fYXJtX3ZzdHJ3cV9zY2F0dGVyX2Jhc2VfcF9mMzIodWludDMyeDRfdCwgaW50LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Ryd3Ffc2NhdHRlcl9iYXNlX3BfZjMyKSkpCnZvaWQgX19hcm1fdnN0cndxX3NjYXR0ZXJfYmFzZV9wKHVpbnQzMng0X3QsIGludCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cndxX3NjYXR0ZXJfYmFzZV93Yl9mMzIpKSkKdm9pZCBfX2FybV92c3Ryd3Ffc2NhdHRlcl9iYXNlX3diX2YzMih1aW50MzJ4NF90ICosIGludCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJ3cV9zY2F0dGVyX2Jhc2Vfd2JfZjMyKSkpCnZvaWQgX19hcm1fdnN0cndxX3NjYXR0ZXJfYmFzZV93Yih1aW50MzJ4NF90ICosIGludCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJ3cV9zY2F0dGVyX2Jhc2Vfd2JfcF9mMzIpKSkKdm9pZCBfX2FybV92c3Ryd3Ffc2NhdHRlcl9iYXNlX3diX3BfZjMyKHVpbnQzMng0X3QgKiwgaW50LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Ryd3Ffc2NhdHRlcl9iYXNlX3diX3BfZjMyKSkpCnZvaWQgX19hcm1fdnN0cndxX3NjYXR0ZXJfYmFzZV93Yl9wKHVpbnQzMng0X3QgKiwgaW50LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Ryd3Ffc2NhdHRlcl9vZmZzZXRfZjMyKSkpCnZvaWQgX19hcm1fdnN0cndxX3NjYXR0ZXJfb2Zmc2V0X2YzMihmbG9hdDMyX3QgKiwgdWludDMyeDRfdCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJ3cV9zY2F0dGVyX29mZnNldF9mMzIpKSkKdm9pZCBfX2FybV92c3Ryd3Ffc2NhdHRlcl9vZmZzZXQoZmxvYXQzMl90ICosIHVpbnQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Ryd3Ffc2NhdHRlcl9vZmZzZXRfcF9mMzIpKSkKdm9pZCBfX2FybV92c3Ryd3Ffc2NhdHRlcl9vZmZzZXRfcF9mMzIoZmxvYXQzMl90ICosIHVpbnQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJ3cV9zY2F0dGVyX29mZnNldF9wX2YzMikpKQp2b2lkIF9fYXJtX3ZzdHJ3cV9zY2F0dGVyX29mZnNldF9wKGZsb2F0MzJfdCAqLCB1aW50MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Ryd3Ffc2NhdHRlcl9zaGlmdGVkX29mZnNldF9mMzIpKSkKdm9pZCBfX2FybV92c3Ryd3Ffc2NhdHRlcl9zaGlmdGVkX29mZnNldF9mMzIoZmxvYXQzMl90ICosIHVpbnQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Ryd3Ffc2NhdHRlcl9zaGlmdGVkX29mZnNldF9mMzIpKSkKdm9pZCBfX2FybV92c3Ryd3Ffc2NhdHRlcl9zaGlmdGVkX29mZnNldChmbG9hdDMyX3QgKiwgdWludDMyeDRfdCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJ3cV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3BfZjMyKSkpCnZvaWQgX19hcm1fdnN0cndxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfcF9mMzIoZmxvYXQzMl90ICosIHVpbnQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJ3cV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3BfZjMyKSkpCnZvaWQgX19hcm1fdnN0cndxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfcChmbG9hdDMyX3QgKiwgdWludDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZzdWJxX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92c3VicShmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92c3VicV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdnN1YnEoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV9tX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92c3VicV9tX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX21fZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZzdWJxX20oZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV9tX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92c3VicV9tX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX21fZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZzdWJxX20oZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV9tX25fZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZzdWJxX21fbl9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfbV9uX2YxNikpKQpmbG9hdDE2eDhfdCBfX2FybV92c3VicV9tKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX21fbl9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdnN1YnFfbV9uX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV9tX25fZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZzdWJxX20oZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfbl9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdnN1YnFfbl9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfbl9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdnN1YnEoZmxvYXQxNng4X3QsIGZsb2F0MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfbl9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdnN1YnFfbl9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfbl9mMzIpKSkKZmxvYXQzMng0X3QgX19hcm1fdnN1YnEoZmxvYXQzMng0X3QsIGZsb2F0MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfeF9mMTYpKSkKZmxvYXQxNng4X3QgX19hcm1fdnN1YnFfeF9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX3hfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZzdWJxX3goZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX3hfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZzdWJxX3hfZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV94X2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92c3VicV94KGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV94X25fZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZzdWJxX3hfbl9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV94X25fZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3ZzdWJxX3goZmxvYXQxNng4X3QsIGZsb2F0MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV94X25fZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZzdWJxX3hfbl9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV94X25fZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3ZzdWJxX3goZmxvYXQzMng0X3QsIGZsb2F0MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92dW5pbml0aWFsaXplZHFfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3Z1bmluaXRpYWxpemVkcV9mMTYoKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92dW5pbml0aWFsaXplZHFfZjMyKSkpCmZsb2F0MzJ4NF90IF9fYXJtX3Z1bmluaXRpYWxpemVkcV9mMzIoKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92dW5pbml0aWFsaXplZHFfcG9seW1vcnBoaWNfZjE2KSkpCmZsb2F0MTZ4OF90IF9fYXJtX3Z1bmluaXRpYWxpemVkcShmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnVuaW5pdGlhbGl6ZWRxX3BvbHltb3JwaGljX2YzMikpKQpmbG9hdDMyeDRfdCBfX2FybV92dW5pbml0aWFsaXplZHEoZmxvYXQzMng0X3QpOwoKI2VuZGlmIC8qIChfX0FSTV9GRUFUVVJFX01WRSAmIDIpICovCgojaWYgKCFkZWZpbmVkIF9fQVJNX01WRV9QUkVTRVJWRV9VU0VSX05BTUVTUEFDRSkKCnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfYXNybCkpKQppbnQ2NF90IGFzcmwoaW50NjRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfbHNsbCkpKQp1aW50NjRfdCBsc2xsKHVpbnQ2NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV9zcXJzaHIpKSkKaW50MzJfdCBzcXJzaHIoaW50MzJfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfc3Fyc2hybCkpKQppbnQ2NF90IHNxcnNocmwoaW50NjRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfc3Fyc2hybF9zYXQ0OCkpKQppbnQ2NF90IHNxcnNocmxfc2F0NDgoaW50NjRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfc3FzaGwpKSkKaW50MzJfdCBzcXNobChpbnQzMl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Nxc2hsbCkpKQppbnQ2NF90IHNxc2hsbChpbnQ2NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Nyc2hyKSkpCmludDMyX3Qgc3JzaHIoaW50MzJfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV9zcnNocmwpKSkKaW50NjRfdCBzcnNocmwoaW50NjRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV91cXJzaGwpKSkKdWludDMyX3QgdXFyc2hsKHVpbnQzMl90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV91cXJzaGxsKSkpCnVpbnQ2NF90IHVxcnNobGwodWludDY0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3VxcnNobGxfc2F0NDgpKSkKdWludDY0X3QgdXFyc2hsbF9zYXQ0OCh1aW50NjRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdXFzaGwpKSkKdWludDMyX3QgdXFzaGwodWludDMyX3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdXFzaGxsKSkpCnVpbnQ2NF90IHVxc2hsbCh1aW50NjRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV91cnNocikpKQp1aW50MzJfdCB1cnNocih1aW50MzJfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV91cnNocmwpKSkKdWludDY0X3QgdXJzaHJsKHVpbnQ2NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmF2cV9wX3MxNikpKQp1aW50MzJfdCB2YWJhdnFfcF9zMTYodWludDMyX3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmF2cV9wX3MxNikpKQp1aW50MzJfdCB2YWJhdnFfcCh1aW50MzJfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiYXZxX3BfczMyKSkpCnVpbnQzMl90IHZhYmF2cV9wX3MzMih1aW50MzJfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiYXZxX3BfczMyKSkpCnVpbnQzMl90IHZhYmF2cV9wKHVpbnQzMl90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJhdnFfcF9zOCkpKQp1aW50MzJfdCB2YWJhdnFfcF9zOCh1aW50MzJfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiYXZxX3BfczgpKSkKdWludDMyX3QgdmFiYXZxX3AodWludDMyX3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmF2cV9wX3UxNikpKQp1aW50MzJfdCB2YWJhdnFfcF91MTYodWludDMyX3QsIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiYXZxX3BfdTE2KSkpCnVpbnQzMl90IHZhYmF2cV9wKHVpbnQzMl90LCB1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmF2cV9wX3UzMikpKQp1aW50MzJfdCB2YWJhdnFfcF91MzIodWludDMyX3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiYXZxX3BfdTMyKSkpCnVpbnQzMl90IHZhYmF2cV9wKHVpbnQzMl90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmF2cV9wX3U4KSkpCnVpbnQzMl90IHZhYmF2cV9wX3U4KHVpbnQzMl90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmF2cV9wX3U4KSkpCnVpbnQzMl90IHZhYmF2cV9wKHVpbnQzMl90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmF2cV9zMTYpKSkKdWludDMyX3QgdmFiYXZxX3MxNih1aW50MzJfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmF2cV9zMTYpKSkKdWludDMyX3QgdmFiYXZxKHVpbnQzMl90LCBpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiYXZxX3MzMikpKQp1aW50MzJfdCB2YWJhdnFfczMyKHVpbnQzMl90LCBpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiYXZxX3MzMikpKQp1aW50MzJfdCB2YWJhdnEodWludDMyX3QsIGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJhdnFfczgpKSkKdWludDMyX3QgdmFiYXZxX3M4KHVpbnQzMl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiYXZxX3M4KSkpCnVpbnQzMl90IHZhYmF2cSh1aW50MzJfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmF2cV91MTYpKSkKdWludDMyX3QgdmFiYXZxX3UxNih1aW50MzJfdCwgdWludDE2eDhfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiYXZxX3UxNikpKQp1aW50MzJfdCB2YWJhdnEodWludDMyX3QsIHVpbnQxNng4X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmF2cV91MzIpKSkKdWludDMyX3QgdmFiYXZxX3UzMih1aW50MzJfdCwgdWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiYXZxX3UzMikpKQp1aW50MzJfdCB2YWJhdnEodWludDMyX3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmF2cV91OCkpKQp1aW50MzJfdCB2YWJhdnFfdTgodWludDMyX3QsIHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmF2cV91OCkpKQp1aW50MzJfdCB2YWJhdnEodWludDMyX3QsIHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmRxX21fczE2KSkpCmludDE2eDhfdCB2YWJkcV9tX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmRxX21fczE2KSkpCmludDE2eDhfdCB2YWJkcV9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiZHFfbV9zMzIpKSkKaW50MzJ4NF90IHZhYmRxX21fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiZHFfbV9zMzIpKSkKaW50MzJ4NF90IHZhYmRxX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJkcV9tX3M4KSkpCmludDh4MTZfdCB2YWJkcV9tX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiZHFfbV9zOCkpKQppbnQ4eDE2X3QgdmFiZHFfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmRxX21fdTE2KSkpCnVpbnQxNng4X3QgdmFiZHFfbV91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJkcV9tX3UxNikpKQp1aW50MTZ4OF90IHZhYmRxX20odWludDE2eDhfdCwgdWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJkcV9tX3UzMikpKQp1aW50MzJ4NF90IHZhYmRxX21fdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiZHFfbV91MzIpKSkKdWludDMyeDRfdCB2YWJkcV9tKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiZHFfbV91OCkpKQp1aW50OHgxNl90IHZhYmRxX21fdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJkcV9tX3U4KSkpCnVpbnQ4eDE2X3QgdmFiZHFfbSh1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmRxX3MxNikpKQppbnQxNng4X3QgdmFiZHFfczE2KGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJkcV9zMTYpKSkKaW50MTZ4OF90IHZhYmRxKGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJkcV9zMzIpKSkKaW50MzJ4NF90IHZhYmRxX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiZHFfczMyKSkpCmludDMyeDRfdCB2YWJkcShpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiZHFfczgpKSkKaW50OHgxNl90IHZhYmRxX3M4KGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJkcV9zOCkpKQppbnQ4eDE2X3QgdmFiZHEoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmRxX3UxNikpKQp1aW50MTZ4OF90IHZhYmRxX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJkcV91MTYpKSkKdWludDE2eDhfdCB2YWJkcSh1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJkcV91MzIpKSkKdWludDMyeDRfdCB2YWJkcV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiZHFfdTMyKSkpCnVpbnQzMng0X3QgdmFiZHEodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiZHFfdTgpKSkKdWludDh4MTZfdCB2YWJkcV91OCh1aW50OHgxNl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJkcV91OCkpKQp1aW50OHgxNl90IHZhYmRxKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmRxX3hfczE2KSkpCmludDE2eDhfdCB2YWJkcV94X3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJkcV94X3MxNikpKQppbnQxNng4X3QgdmFiZHFfeChpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJkcV94X3MzMikpKQppbnQzMng0X3QgdmFiZHFfeF9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiZHFfeF9zMzIpKSkKaW50MzJ4NF90IHZhYmRxX3goaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiZHFfeF9zOCkpKQppbnQ4eDE2X3QgdmFiZHFfeF9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJkcV94X3M4KSkpCmludDh4MTZfdCB2YWJkcV94KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmRxX3hfdTE2KSkpCnVpbnQxNng4X3QgdmFiZHFfeF91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJkcV94X3UxNikpKQp1aW50MTZ4OF90IHZhYmRxX3godWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJkcV94X3UzMikpKQp1aW50MzJ4NF90IHZhYmRxX3hfdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiZHFfeF91MzIpKSkKdWludDMyeDRfdCB2YWJkcV94KHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiZHFfeF91OCkpKQp1aW50OHgxNl90IHZhYmRxX3hfdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJkcV94X3U4KSkpCnVpbnQ4eDE2X3QgdmFiZHFfeCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYnNxX21fczE2KSkpCmludDE2eDhfdCB2YWJzcV9tX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJzcV9tX3MxNikpKQppbnQxNng4X3QgdmFic3FfbShpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJzcV9tX3MzMikpKQppbnQzMng0X3QgdmFic3FfbV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFic3FfbV9zMzIpKSkKaW50MzJ4NF90IHZhYnNxX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFic3FfbV9zOCkpKQppbnQ4eDE2X3QgdmFic3FfbV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJzcV9tX3M4KSkpCmludDh4MTZfdCB2YWJzcV9tKGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYnNxX3MxNikpKQppbnQxNng4X3QgdmFic3FfczE2KGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFic3FfczE2KSkpCmludDE2eDhfdCB2YWJzcShpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYnNxX3MzMikpKQppbnQzMng0X3QgdmFic3FfczMyKGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFic3FfczMyKSkpCmludDMyeDRfdCB2YWJzcShpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYnNxX3M4KSkpCmludDh4MTZfdCB2YWJzcV9zOChpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYnNxX3M4KSkpCmludDh4MTZfdCB2YWJzcShpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYnNxX3hfczE2KSkpCmludDE2eDhfdCB2YWJzcV94X3MxNihpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFic3FfeF9zMTYpKSkKaW50MTZ4OF90IHZhYnNxX3goaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYnNxX3hfczMyKSkpCmludDMyeDRfdCB2YWJzcV94X3MzMihpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFic3FfeF9zMzIpKSkKaW50MzJ4NF90IHZhYnNxX3goaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYnNxX3hfczgpKSkKaW50OHgxNl90IHZhYnNxX3hfczgoaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYnNxX3hfczgpKSkKaW50OHgxNl90IHZhYnNxX3goaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGNpcV9tX3MzMikpKQppbnQzMng0X3QgdmFkY2lxX21fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIHVuc2lnbmVkICosIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkY2lxX21fczMyKSkpCmludDMyeDRfdCB2YWRjaXFfbShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCB1bnNpZ25lZCAqLCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGNpcV9tX3UzMikpKQp1aW50MzJ4NF90IHZhZGNpcV9tX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1bnNpZ25lZCAqLCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGNpcV9tX3UzMikpKQp1aW50MzJ4NF90IHZhZGNpcV9tKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVuc2lnbmVkICosIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkY2lxX3MzMikpKQppbnQzMng0X3QgdmFkY2lxX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgdW5zaWduZWQgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkY2lxX3MzMikpKQppbnQzMng0X3QgdmFkY2lxKGludDMyeDRfdCwgaW50MzJ4NF90LCB1bnNpZ25lZCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRjaXFfdTMyKSkpCnVpbnQzMng0X3QgdmFkY2lxX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1bnNpZ25lZCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRjaXFfdTMyKSkpCnVpbnQzMng0X3QgdmFkY2lxKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVuc2lnbmVkICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGNxX21fczMyKSkpCmludDMyeDRfdCB2YWRjcV9tX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCB1bnNpZ25lZCAqLCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGNxX21fczMyKSkpCmludDMyeDRfdCB2YWRjcV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIHVuc2lnbmVkICosIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkY3FfbV91MzIpKSkKdWludDMyeDRfdCB2YWRjcV9tX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1bnNpZ25lZCAqLCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGNxX21fdTMyKSkpCnVpbnQzMng0X3QgdmFkY3FfbSh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1bnNpZ25lZCAqLCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGNxX3MzMikpKQppbnQzMng0X3QgdmFkY3FfczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCB1bnNpZ25lZCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRjcV9zMzIpKSkKaW50MzJ4NF90IHZhZGNxKGludDMyeDRfdCwgaW50MzJ4NF90LCB1bnNpZ25lZCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRjcV91MzIpKSkKdWludDMyeDRfdCB2YWRjcV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgdW5zaWduZWQgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkY3FfdTMyKSkpCnVpbnQzMng0X3QgdmFkY3EodWludDMyeDRfdCwgdWludDMyeDRfdCwgdW5zaWduZWQgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZGx2YXFfcF9zMzIpKSkKaW50NjRfdCB2YWRkbHZhcV9wX3MzMihpbnQ2NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZGx2YXFfcF9zMzIpKSkKaW50NjRfdCB2YWRkbHZhcV9wKGludDY0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkbHZhcV9wX3UzMikpKQp1aW50NjRfdCB2YWRkbHZhcV9wX3UzMih1aW50NjRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkbHZhcV9wX3UzMikpKQp1aW50NjRfdCB2YWRkbHZhcV9wKHVpbnQ2NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRsdmFxX3MzMikpKQppbnQ2NF90IHZhZGRsdmFxX3MzMihpbnQ2NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRsdmFxX3MzMikpKQppbnQ2NF90IHZhZGRsdmFxKGludDY0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZGx2YXFfdTMyKSkpCnVpbnQ2NF90IHZhZGRsdmFxX3UzMih1aW50NjRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZGx2YXFfdTMyKSkpCnVpbnQ2NF90IHZhZGRsdmFxKHVpbnQ2NF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkbHZxX3BfczMyKSkpCmludDY0X3QgdmFkZGx2cV9wX3MzMihpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZGx2cV9wX3MzMikpKQppbnQ2NF90IHZhZGRsdnFfcChpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZGx2cV9wX3UzMikpKQp1aW50NjRfdCB2YWRkbHZxX3BfdTMyKHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZGx2cV9wX3UzMikpKQp1aW50NjRfdCB2YWRkbHZxX3AodWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkbHZxX3MzMikpKQppbnQ2NF90IHZhZGRsdnFfczMyKGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZGx2cV9zMzIpKSkKaW50NjRfdCB2YWRkbHZxKGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZGx2cV91MzIpKSkKdWludDY0X3QgdmFkZGx2cV91MzIodWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZGx2cV91MzIpKSkKdWludDY0X3QgdmFkZGx2cSh1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV9tX25fczE2KSkpCmludDE2eDhfdCB2YWRkcV9tX25fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX21fbl9zMTYpKSkKaW50MTZ4OF90IHZhZGRxX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfbV9uX3MzMikpKQppbnQzMng0X3QgdmFkZHFfbV9uX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV9tX25fczMyKSkpCmludDMyeDRfdCB2YWRkcV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX21fbl9zOCkpKQppbnQ4eDE2X3QgdmFkZHFfbV9uX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfbV9uX3M4KSkpCmludDh4MTZfdCB2YWRkcV9tKGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfbV9uX3UxNikpKQp1aW50MTZ4OF90IHZhZGRxX21fbl91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgdWludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfbV9uX3UxNikpKQp1aW50MTZ4OF90IHZhZGRxX20odWludDE2eDhfdCwgdWludDE2eDhfdCwgdWludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfbV9uX3UzMikpKQp1aW50MzJ4NF90IHZhZGRxX21fbl91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgdWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfbV9uX3UzMikpKQp1aW50MzJ4NF90IHZhZGRxX20odWludDMyeDRfdCwgdWludDMyeDRfdCwgdWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfbV9uX3U4KSkpCnVpbnQ4eDE2X3QgdmFkZHFfbV9uX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfbV9uX3U4KSkpCnVpbnQ4eDE2X3QgdmFkZHFfbSh1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX21fczE2KSkpCmludDE2eDhfdCB2YWRkcV9tX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX21fczE2KSkpCmludDE2eDhfdCB2YWRkcV9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfbV9zMzIpKSkKaW50MzJ4NF90IHZhZGRxX21fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfbV9zMzIpKSkKaW50MzJ4NF90IHZhZGRxX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV9tX3M4KSkpCmludDh4MTZfdCB2YWRkcV9tX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfbV9zOCkpKQppbnQ4eDE2X3QgdmFkZHFfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX21fdTE2KSkpCnVpbnQxNng4X3QgdmFkZHFfbV91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV9tX3UxNikpKQp1aW50MTZ4OF90IHZhZGRxX20odWludDE2eDhfdCwgdWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV9tX3UzMikpKQp1aW50MzJ4NF90IHZhZGRxX21fdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfbV91MzIpKSkKdWludDMyeDRfdCB2YWRkcV9tKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfbV91OCkpKQp1aW50OHgxNl90IHZhZGRxX21fdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV9tX3U4KSkpCnVpbnQ4eDE2X3QgdmFkZHFfbSh1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX25fczE2KSkpCmludDE2eDhfdCB2YWRkcV9uX3MxNihpbnQxNng4X3QsIGludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX25fczE2KSkpCmludDE2eDhfdCB2YWRkcShpbnQxNng4X3QsIGludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX25fczMyKSkpCmludDMyeDRfdCB2YWRkcV9uX3MzMihpbnQzMng0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX25fczMyKSkpCmludDMyeDRfdCB2YWRkcShpbnQzMng0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX25fczgpKSkKaW50OHgxNl90IHZhZGRxX25fczgoaW50OHgxNl90LCBpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX25fczgpKSkKaW50OHgxNl90IHZhZGRxKGludDh4MTZfdCwgaW50OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV9uX3UxNikpKQp1aW50MTZ4OF90IHZhZGRxX25fdTE2KHVpbnQxNng4X3QsIHVpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV9uX3UxNikpKQp1aW50MTZ4OF90IHZhZGRxKHVpbnQxNng4X3QsIHVpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV9uX3UzMikpKQp1aW50MzJ4NF90IHZhZGRxX25fdTMyKHVpbnQzMng0X3QsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV9uX3UzMikpKQp1aW50MzJ4NF90IHZhZGRxKHVpbnQzMng0X3QsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV9uX3U4KSkpCnVpbnQ4eDE2X3QgdmFkZHFfbl91OCh1aW50OHgxNl90LCB1aW50OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV9uX3U4KSkpCnVpbnQ4eDE2X3QgdmFkZHEodWludDh4MTZfdCwgdWludDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfczE2KSkpCmludDE2eDhfdCB2YWRkcV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX3MxNikpKQppbnQxNng4X3QgdmFkZHEoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX3MzMikpKQppbnQzMng0X3QgdmFkZHFfczMyKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV9zMzIpKSkKaW50MzJ4NF90IHZhZGRxKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV9zOCkpKQppbnQ4eDE2X3QgdmFkZHFfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX3M4KSkpCmludDh4MTZfdCB2YWRkcShpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfdTE2KSkpCnVpbnQxNng4X3QgdmFkZHFfdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX3UxNikpKQp1aW50MTZ4OF90IHZhZGRxKHVpbnQxNng4X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX3UzMikpKQp1aW50MzJ4NF90IHZhZGRxX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV91MzIpKSkKdWludDMyeDRfdCB2YWRkcSh1aW50MzJ4NF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV91OCkpKQp1aW50OHgxNl90IHZhZGRxX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX3U4KSkpCnVpbnQ4eDE2X3QgdmFkZHEodWludDh4MTZfdCwgdWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfeF9uX3MxNikpKQppbnQxNng4X3QgdmFkZHFfeF9uX3MxNihpbnQxNng4X3QsIGludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfeF9uX3MxNikpKQppbnQxNng4X3QgdmFkZHFfeChpbnQxNng4X3QsIGludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfeF9uX3MzMikpKQppbnQzMng0X3QgdmFkZHFfeF9uX3MzMihpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfeF9uX3MzMikpKQppbnQzMng0X3QgdmFkZHFfeChpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfeF9uX3M4KSkpCmludDh4MTZfdCB2YWRkcV94X25fczgoaW50OHgxNl90LCBpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfeF9uX3M4KSkpCmludDh4MTZfdCB2YWRkcV94KGludDh4MTZfdCwgaW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX3hfbl91MTYpKSkKdWludDE2eDhfdCB2YWRkcV94X25fdTE2KHVpbnQxNng4X3QsIHVpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX3hfbl91MTYpKSkKdWludDE2eDhfdCB2YWRkcV94KHVpbnQxNng4X3QsIHVpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX3hfbl91MzIpKSkKdWludDMyeDRfdCB2YWRkcV94X25fdTMyKHVpbnQzMng0X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX3hfbl91MzIpKSkKdWludDMyeDRfdCB2YWRkcV94KHVpbnQzMng0X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX3hfbl91OCkpKQp1aW50OHgxNl90IHZhZGRxX3hfbl91OCh1aW50OHgxNl90LCB1aW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX3hfbl91OCkpKQp1aW50OHgxNl90IHZhZGRxX3godWludDh4MTZfdCwgdWludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV94X3MxNikpKQppbnQxNng4X3QgdmFkZHFfeF9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfeF9zMTYpKSkKaW50MTZ4OF90IHZhZGRxX3goaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfeF9zMzIpKSkKaW50MzJ4NF90IHZhZGRxX3hfczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX3hfczMyKSkpCmludDMyeDRfdCB2YWRkcV94KGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX3hfczgpKSkKaW50OHgxNl90IHZhZGRxX3hfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfeF9zOCkpKQppbnQ4eDE2X3QgdmFkZHFfeChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV94X3UxNikpKQp1aW50MTZ4OF90IHZhZGRxX3hfdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfeF91MTYpKSkKdWludDE2eDhfdCB2YWRkcV94KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfeF91MzIpKSkKdWludDMyeDRfdCB2YWRkcV94X3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX3hfdTMyKSkpCnVpbnQzMng0X3QgdmFkZHFfeCh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX3hfdTgpKSkKdWludDh4MTZfdCB2YWRkcV94X3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfeF91OCkpKQp1aW50OHgxNl90IHZhZGRxX3godWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkdmFxX3BfczE2KSkpCmludDMyX3QgdmFkZHZhcV9wX3MxNihpbnQzMl90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHZhcV9wX3MxNikpKQppbnQzMl90IHZhZGR2YXFfcChpbnQzMl90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHZhcV9wX3MzMikpKQppbnQzMl90IHZhZGR2YXFfcF9zMzIoaW50MzJfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGR2YXFfcF9zMzIpKSkKaW50MzJfdCB2YWRkdmFxX3AoaW50MzJfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGR2YXFfcF9zOCkpKQppbnQzMl90IHZhZGR2YXFfcF9zOChpbnQzMl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHZhcV9wX3M4KSkpCmludDMyX3QgdmFkZHZhcV9wKGludDMyX3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkdmFxX3BfdTE2KSkpCnVpbnQzMl90IHZhZGR2YXFfcF91MTYodWludDMyX3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHZhcV9wX3UxNikpKQp1aW50MzJfdCB2YWRkdmFxX3AodWludDMyX3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHZhcV9wX3UzMikpKQp1aW50MzJfdCB2YWRkdmFxX3BfdTMyKHVpbnQzMl90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGR2YXFfcF91MzIpKSkKdWludDMyX3QgdmFkZHZhcV9wKHVpbnQzMl90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGR2YXFfcF91OCkpKQp1aW50MzJfdCB2YWRkdmFxX3BfdTgodWludDMyX3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHZhcV9wX3U4KSkpCnVpbnQzMl90IHZhZGR2YXFfcCh1aW50MzJfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkdmFxX3MxNikpKQppbnQzMl90IHZhZGR2YXFfczE2KGludDMyX3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHZhcV9zMTYpKSkKaW50MzJfdCB2YWRkdmFxKGludDMyX3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHZhcV9zMzIpKSkKaW50MzJfdCB2YWRkdmFxX3MzMihpbnQzMl90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGR2YXFfczMyKSkpCmludDMyX3QgdmFkZHZhcShpbnQzMl90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGR2YXFfczgpKSkKaW50MzJfdCB2YWRkdmFxX3M4KGludDMyX3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHZhcV9zOCkpKQppbnQzMl90IHZhZGR2YXEoaW50MzJfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkdmFxX3UxNikpKQp1aW50MzJfdCB2YWRkdmFxX3UxNih1aW50MzJfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHZhcV91MTYpKSkKdWludDMyX3QgdmFkZHZhcSh1aW50MzJfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHZhcV91MzIpKSkKdWludDMyX3QgdmFkZHZhcV91MzIodWludDMyX3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGR2YXFfdTMyKSkpCnVpbnQzMl90IHZhZGR2YXEodWludDMyX3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGR2YXFfdTgpKSkKdWludDMyX3QgdmFkZHZhcV91OCh1aW50MzJfdCwgdWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHZhcV91OCkpKQp1aW50MzJfdCB2YWRkdmFxKHVpbnQzMl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkdnFfcF9zMTYpKSkKaW50MzJfdCB2YWRkdnFfcF9zMTYoaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGR2cV9wX3MxNikpKQppbnQzMl90IHZhZGR2cV9wKGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkdnFfcF9zMzIpKSkKaW50MzJfdCB2YWRkdnFfcF9zMzIoaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGR2cV9wX3MzMikpKQppbnQzMl90IHZhZGR2cV9wKGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkdnFfcF9zOCkpKQppbnQzMl90IHZhZGR2cV9wX3M4KGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkdnFfcF9zOCkpKQppbnQzMl90IHZhZGR2cV9wKGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkdnFfcF91MTYpKSkKdWludDMyX3QgdmFkZHZxX3BfdTE2KHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHZxX3BfdTE2KSkpCnVpbnQzMl90IHZhZGR2cV9wKHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHZxX3BfdTMyKSkpCnVpbnQzMl90IHZhZGR2cV9wX3UzMih1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGR2cV9wX3UzMikpKQp1aW50MzJfdCB2YWRkdnFfcCh1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGR2cV9wX3U4KSkpCnVpbnQzMl90IHZhZGR2cV9wX3U4KHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHZxX3BfdTgpKSkKdWludDMyX3QgdmFkZHZxX3AodWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkdnFfczE2KSkpCmludDMyX3QgdmFkZHZxX3MxNihpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGR2cV9zMTYpKSkKaW50MzJfdCB2YWRkdnEoaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkdnFfczMyKSkpCmludDMyX3QgdmFkZHZxX3MzMihpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGR2cV9zMzIpKSkKaW50MzJfdCB2YWRkdnEoaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkdnFfczgpKSkKaW50MzJfdCB2YWRkdnFfczgoaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkdnFfczgpKSkKaW50MzJfdCB2YWRkdnEoaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkdnFfdTE2KSkpCnVpbnQzMl90IHZhZGR2cV91MTYodWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHZxX3UxNikpKQp1aW50MzJfdCB2YWRkdnEodWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHZxX3UzMikpKQp1aW50MzJfdCB2YWRkdnFfdTMyKHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGR2cV91MzIpKSkKdWludDMyX3QgdmFkZHZxKHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGR2cV91OCkpKQp1aW50MzJfdCB2YWRkdnFfdTgodWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHZxX3U4KSkpCnVpbnQzMl90IHZhZGR2cSh1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YW5kcV9tX3MxNikpKQppbnQxNng4X3QgdmFuZHFfbV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YW5kcV9tX3MxNikpKQppbnQxNng4X3QgdmFuZHFfbShpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhbmRxX21fczMyKSkpCmludDMyeDRfdCB2YW5kcV9tX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhbmRxX21fczMyKSkpCmludDMyeDRfdCB2YW5kcV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFuZHFfbV9zOCkpKQppbnQ4eDE2X3QgdmFuZHFfbV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhbmRxX21fczgpKSkKaW50OHgxNl90IHZhbmRxX20oaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YW5kcV9tX3UxNikpKQp1aW50MTZ4OF90IHZhbmRxX21fdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFuZHFfbV91MTYpKSkKdWludDE2eDhfdCB2YW5kcV9tKHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFuZHFfbV91MzIpKSkKdWludDMyeDRfdCB2YW5kcV9tX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhbmRxX21fdTMyKSkpCnVpbnQzMng0X3QgdmFuZHFfbSh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhbmRxX21fdTgpKSkKdWludDh4MTZfdCB2YW5kcV9tX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFuZHFfbV91OCkpKQp1aW50OHgxNl90IHZhbmRxX20odWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YW5kcV9zMTYpKSkKaW50MTZ4OF90IHZhbmRxX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFuZHFfczE2KSkpCmludDE2eDhfdCB2YW5kcShpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFuZHFfczMyKSkpCmludDMyeDRfdCB2YW5kcV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhbmRxX3MzMikpKQppbnQzMng0X3QgdmFuZHEoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhbmRxX3M4KSkpCmludDh4MTZfdCB2YW5kcV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFuZHFfczgpKSkKaW50OHgxNl90IHZhbmRxKGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YW5kcV91MTYpKSkKdWludDE2eDhfdCB2YW5kcV91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFuZHFfdTE2KSkpCnVpbnQxNng4X3QgdmFuZHEodWludDE2eDhfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFuZHFfdTMyKSkpCnVpbnQzMng0X3QgdmFuZHFfdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhbmRxX3UzMikpKQp1aW50MzJ4NF90IHZhbmRxKHVpbnQzMng0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhbmRxX3U4KSkpCnVpbnQ4eDE2X3QgdmFuZHFfdTgodWludDh4MTZfdCwgdWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFuZHFfdTgpKSkKdWludDh4MTZfdCB2YW5kcSh1aW50OHgxNl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YW5kcV94X3MxNikpKQppbnQxNng4X3QgdmFuZHFfeF9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFuZHFfeF9zMTYpKSkKaW50MTZ4OF90IHZhbmRxX3goaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFuZHFfeF9zMzIpKSkKaW50MzJ4NF90IHZhbmRxX3hfczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhbmRxX3hfczMyKSkpCmludDMyeDRfdCB2YW5kcV94KGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhbmRxX3hfczgpKSkKaW50OHgxNl90IHZhbmRxX3hfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFuZHFfeF9zOCkpKQppbnQ4eDE2X3QgdmFuZHFfeChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YW5kcV94X3UxNikpKQp1aW50MTZ4OF90IHZhbmRxX3hfdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFuZHFfeF91MTYpKSkKdWludDE2eDhfdCB2YW5kcV94KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFuZHFfeF91MzIpKSkKdWludDMyeDRfdCB2YW5kcV94X3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhbmRxX3hfdTMyKSkpCnVpbnQzMng0X3QgdmFuZHFfeCh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhbmRxX3hfdTgpKSkKdWludDh4MTZfdCB2YW5kcV94X3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFuZHFfeF91OCkpKQp1aW50OHgxNl90IHZhbmRxX3godWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YmljcV9tX25fczE2KSkpCmludDE2eDhfdCB2YmljcV9tX25fczE2KGludDE2eDhfdCwgaW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YmljcV9tX25fczE2KSkpCmludDE2eDhfdCB2YmljcV9tX24oaW50MTZ4OF90LCBpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZiaWNxX21fbl9zMzIpKSkKaW50MzJ4NF90IHZiaWNxX21fbl9zMzIoaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZiaWNxX21fbl9zMzIpKSkKaW50MzJ4NF90IHZiaWNxX21fbihpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJpY3FfbV9uX3UxNikpKQp1aW50MTZ4OF90IHZiaWNxX21fbl91MTYodWludDE2eDhfdCwgdWludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJpY3FfbV9uX3UxNikpKQp1aW50MTZ4OF90IHZiaWNxX21fbih1aW50MTZ4OF90LCB1aW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YmljcV9tX25fdTMyKSkpCnVpbnQzMng0X3QgdmJpY3FfbV9uX3UzMih1aW50MzJ4NF90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YmljcV9tX25fdTMyKSkpCnVpbnQzMng0X3QgdmJpY3FfbV9uKHVpbnQzMng0X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZiaWNxX21fczE2KSkpCmludDE2eDhfdCB2YmljcV9tX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZiaWNxX21fczE2KSkpCmludDE2eDhfdCB2YmljcV9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJpY3FfbV9zMzIpKSkKaW50MzJ4NF90IHZiaWNxX21fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJpY3FfbV9zMzIpKSkKaW50MzJ4NF90IHZiaWNxX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YmljcV9tX3M4KSkpCmludDh4MTZfdCB2YmljcV9tX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJpY3FfbV9zOCkpKQppbnQ4eDE2X3QgdmJpY3FfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZiaWNxX21fdTE2KSkpCnVpbnQxNng4X3QgdmJpY3FfbV91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YmljcV9tX3UxNikpKQp1aW50MTZ4OF90IHZiaWNxX20odWludDE2eDhfdCwgdWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YmljcV9tX3UzMikpKQp1aW50MzJ4NF90IHZiaWNxX21fdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJpY3FfbV91MzIpKSkKdWludDMyeDRfdCB2YmljcV9tKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJpY3FfbV91OCkpKQp1aW50OHgxNl90IHZiaWNxX21fdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YmljcV9tX3U4KSkpCnVpbnQ4eDE2X3QgdmJpY3FfbSh1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZiaWNxX25fczE2KSkpCmludDE2eDhfdCB2YmljcV9uX3MxNihpbnQxNng4X3QsIGludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZiaWNxX25fczE2KSkpCmludDE2eDhfdCB2YmljcShpbnQxNng4X3QsIGludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZiaWNxX25fczMyKSkpCmludDMyeDRfdCB2YmljcV9uX3MzMihpbnQzMng0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZiaWNxX25fczMyKSkpCmludDMyeDRfdCB2YmljcShpbnQzMng0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZiaWNxX25fdTE2KSkpCnVpbnQxNng4X3QgdmJpY3Ffbl91MTYodWludDE2eDhfdCwgdWludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZiaWNxX25fdTE2KSkpCnVpbnQxNng4X3QgdmJpY3EodWludDE2eDhfdCwgdWludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZiaWNxX25fdTMyKSkpCnVpbnQzMng0X3QgdmJpY3Ffbl91MzIodWludDMyeDRfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZiaWNxX25fdTMyKSkpCnVpbnQzMng0X3QgdmJpY3EodWludDMyeDRfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZiaWNxX3MxNikpKQppbnQxNng4X3QgdmJpY3FfczE2KGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YmljcV9zMTYpKSkKaW50MTZ4OF90IHZiaWNxKGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YmljcV9zMzIpKSkKaW50MzJ4NF90IHZiaWNxX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJpY3FfczMyKSkpCmludDMyeDRfdCB2YmljcShpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJpY3FfczgpKSkKaW50OHgxNl90IHZiaWNxX3M4KGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YmljcV9zOCkpKQppbnQ4eDE2X3QgdmJpY3EoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZiaWNxX3UxNikpKQp1aW50MTZ4OF90IHZiaWNxX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YmljcV91MTYpKSkKdWludDE2eDhfdCB2YmljcSh1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YmljcV91MzIpKSkKdWludDMyeDRfdCB2YmljcV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJpY3FfdTMyKSkpCnVpbnQzMng0X3QgdmJpY3EodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJpY3FfdTgpKSkKdWludDh4MTZfdCB2YmljcV91OCh1aW50OHgxNl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YmljcV91OCkpKQp1aW50OHgxNl90IHZiaWNxKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZiaWNxX3hfczE2KSkpCmludDE2eDhfdCB2YmljcV94X3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YmljcV94X3MxNikpKQppbnQxNng4X3QgdmJpY3FfeChpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YmljcV94X3MzMikpKQppbnQzMng0X3QgdmJpY3FfeF9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJpY3FfeF9zMzIpKSkKaW50MzJ4NF90IHZiaWNxX3goaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJpY3FfeF9zOCkpKQppbnQ4eDE2X3QgdmJpY3FfeF9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YmljcV94X3M4KSkpCmludDh4MTZfdCB2YmljcV94KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZiaWNxX3hfdTE2KSkpCnVpbnQxNng4X3QgdmJpY3FfeF91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YmljcV94X3UxNikpKQp1aW50MTZ4OF90IHZiaWNxX3godWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YmljcV94X3UzMikpKQp1aW50MzJ4NF90IHZiaWNxX3hfdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJpY3FfeF91MzIpKSkKdWludDMyeDRfdCB2YmljcV94KHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJpY3FfeF91OCkpKQp1aW50OHgxNl90IHZiaWNxX3hfdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YmljcV94X3U4KSkpCnVpbnQ4eDE2X3QgdmJpY3FfeCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZicnNycV9tX25fczE2KSkpCmludDE2eDhfdCB2YnJzcnFfbV9uX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YnJzcnFfbV9uX3MxNikpKQppbnQxNng4X3QgdmJyc3JxX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJyc3JxX21fbl9zMzIpKSkKaW50MzJ4NF90IHZicnNycV9tX25fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZicnNycV9tX25fczMyKSkpCmludDMyeDRfdCB2YnJzcnFfbShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YnJzcnFfbV9uX3M4KSkpCmludDh4MTZfdCB2YnJzcnFfbV9uX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZicnNycV9tX25fczgpKSkKaW50OHgxNl90IHZicnNycV9tKGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZicnNycV9tX25fdTE2KSkpCnVpbnQxNng4X3QgdmJyc3JxX21fbl91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YnJzcnFfbV9uX3UxNikpKQp1aW50MTZ4OF90IHZicnNycV9tKHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJyc3JxX21fbl91MzIpKSkKdWludDMyeDRfdCB2YnJzcnFfbV9uX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZicnNycV9tX25fdTMyKSkpCnVpbnQzMng0X3QgdmJyc3JxX20odWludDMyeDRfdCwgdWludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YnJzcnFfbV9uX3U4KSkpCnVpbnQ4eDE2X3QgdmJyc3JxX21fbl91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZicnNycV9tX25fdTgpKSkKdWludDh4MTZfdCB2YnJzcnFfbSh1aW50OHgxNl90LCB1aW50OHgxNl90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZicnNycV9uX3MxNikpKQppbnQxNng4X3QgdmJyc3JxX25fczE2KGludDE2eDhfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJyc3JxX25fczE2KSkpCmludDE2eDhfdCB2YnJzcnEoaW50MTZ4OF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YnJzcnFfbl9zMzIpKSkKaW50MzJ4NF90IHZicnNycV9uX3MzMihpbnQzMng0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZicnNycV9uX3MzMikpKQppbnQzMng0X3QgdmJyc3JxKGludDMyeDRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJyc3JxX25fczgpKSkKaW50OHgxNl90IHZicnNycV9uX3M4KGludDh4MTZfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJyc3JxX25fczgpKSkKaW50OHgxNl90IHZicnNycShpbnQ4eDE2X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZicnNycV9uX3UxNikpKQp1aW50MTZ4OF90IHZicnNycV9uX3UxNih1aW50MTZ4OF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YnJzcnFfbl91MTYpKSkKdWludDE2eDhfdCB2YnJzcnEodWludDE2eDhfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJyc3JxX25fdTMyKSkpCnVpbnQzMng0X3QgdmJyc3JxX25fdTMyKHVpbnQzMng0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZicnNycV9uX3UzMikpKQp1aW50MzJ4NF90IHZicnNycSh1aW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YnJzcnFfbl91OCkpKQp1aW50OHgxNl90IHZicnNycV9uX3U4KHVpbnQ4eDE2X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZicnNycV9uX3U4KSkpCnVpbnQ4eDE2X3QgdmJyc3JxKHVpbnQ4eDE2X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZicnNycV94X25fczE2KSkpCmludDE2eDhfdCB2YnJzcnFfeF9uX3MxNihpbnQxNng4X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJyc3JxX3hfbl9zMTYpKSkKaW50MTZ4OF90IHZicnNycV94KGludDE2eDhfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YnJzcnFfeF9uX3MzMikpKQppbnQzMng0X3QgdmJyc3JxX3hfbl9zMzIoaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZicnNycV94X25fczMyKSkpCmludDMyeDRfdCB2YnJzcnFfeChpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJyc3JxX3hfbl9zOCkpKQppbnQ4eDE2X3QgdmJyc3JxX3hfbl9zOChpbnQ4eDE2X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJyc3JxX3hfbl9zOCkpKQppbnQ4eDE2X3QgdmJyc3JxX3goaW50OHgxNl90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZicnNycV94X25fdTE2KSkpCnVpbnQxNng4X3QgdmJyc3JxX3hfbl91MTYodWludDE2eDhfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YnJzcnFfeF9uX3UxNikpKQp1aW50MTZ4OF90IHZicnNycV94KHVpbnQxNng4X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJyc3JxX3hfbl91MzIpKSkKdWludDMyeDRfdCB2YnJzcnFfeF9uX3UzMih1aW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZicnNycV94X25fdTMyKSkpCnVpbnQzMng0X3QgdmJyc3JxX3godWludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YnJzcnFfeF9uX3U4KSkpCnVpbnQ4eDE2X3QgdmJyc3JxX3hfbl91OCh1aW50OHgxNl90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZicnNycV94X25fdTgpKSkKdWludDh4MTZfdCB2YnJzcnFfeCh1aW50OHgxNl90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3QyNzBfbV9zMTYpKSkKaW50MTZ4OF90IHZjYWRkcV9yb3QyNzBfbV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90MjcwX21fczE2KSkpCmludDE2eDhfdCB2Y2FkZHFfcm90MjcwX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90MjcwX21fczMyKSkpCmludDMyeDRfdCB2Y2FkZHFfcm90MjcwX21fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDI3MF9tX3MzMikpKQppbnQzMng0X3QgdmNhZGRxX3JvdDI3MF9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDI3MF9tX3M4KSkpCmludDh4MTZfdCB2Y2FkZHFfcm90MjcwX21fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90MjcwX21fczgpKSkKaW50OHgxNl90IHZjYWRkcV9yb3QyNzBfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3QyNzBfbV91MTYpKSkKdWludDE2eDhfdCB2Y2FkZHFfcm90MjcwX21fdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDI3MF9tX3UxNikpKQp1aW50MTZ4OF90IHZjYWRkcV9yb3QyNzBfbSh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3QyNzBfbV91MzIpKSkKdWludDMyeDRfdCB2Y2FkZHFfcm90MjcwX21fdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDI3MF9tX3UzMikpKQp1aW50MzJ4NF90IHZjYWRkcV9yb3QyNzBfbSh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3QyNzBfbV91OCkpKQp1aW50OHgxNl90IHZjYWRkcV9yb3QyNzBfbV91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3QyNzBfbV91OCkpKQp1aW50OHgxNl90IHZjYWRkcV9yb3QyNzBfbSh1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3QyNzBfczE2KSkpCmludDE2eDhfdCB2Y2FkZHFfcm90MjcwX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDI3MF9zMTYpKSkKaW50MTZ4OF90IHZjYWRkcV9yb3QyNzAoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3QyNzBfczMyKSkpCmludDMyeDRfdCB2Y2FkZHFfcm90MjcwX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDI3MF9zMzIpKSkKaW50MzJ4NF90IHZjYWRkcV9yb3QyNzAoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3QyNzBfczgpKSkKaW50OHgxNl90IHZjYWRkcV9yb3QyNzBfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3QyNzBfczgpKSkKaW50OHgxNl90IHZjYWRkcV9yb3QyNzAoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3QyNzBfdTE2KSkpCnVpbnQxNng4X3QgdmNhZGRxX3JvdDI3MF91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDI3MF91MTYpKSkKdWludDE2eDhfdCB2Y2FkZHFfcm90MjcwKHVpbnQxNng4X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3QyNzBfdTMyKSkpCnVpbnQzMng0X3QgdmNhZGRxX3JvdDI3MF91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDI3MF91MzIpKSkKdWludDMyeDRfdCB2Y2FkZHFfcm90MjcwKHVpbnQzMng0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3QyNzBfdTgpKSkKdWludDh4MTZfdCB2Y2FkZHFfcm90MjcwX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3QyNzBfdTgpKSkKdWludDh4MTZfdCB2Y2FkZHFfcm90MjcwKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3QyNzBfeF9zMTYpKSkKaW50MTZ4OF90IHZjYWRkcV9yb3QyNzBfeF9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDI3MF94X3MxNikpKQppbnQxNng4X3QgdmNhZGRxX3JvdDI3MF94KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3QyNzBfeF9zMzIpKSkKaW50MzJ4NF90IHZjYWRkcV9yb3QyNzBfeF9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDI3MF94X3MzMikpKQppbnQzMng0X3QgdmNhZGRxX3JvdDI3MF94KGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3QyNzBfeF9zOCkpKQppbnQ4eDE2X3QgdmNhZGRxX3JvdDI3MF94X3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3QyNzBfeF9zOCkpKQppbnQ4eDE2X3QgdmNhZGRxX3JvdDI3MF94KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3QyNzBfeF91MTYpKSkKdWludDE2eDhfdCB2Y2FkZHFfcm90MjcwX3hfdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDI3MF94X3UxNikpKQp1aW50MTZ4OF90IHZjYWRkcV9yb3QyNzBfeCh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3QyNzBfeF91MzIpKSkKdWludDMyeDRfdCB2Y2FkZHFfcm90MjcwX3hfdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDI3MF94X3UzMikpKQp1aW50MzJ4NF90IHZjYWRkcV9yb3QyNzBfeCh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3QyNzBfeF91OCkpKQp1aW50OHgxNl90IHZjYWRkcV9yb3QyNzBfeF91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3QyNzBfeF91OCkpKQp1aW50OHgxNl90IHZjYWRkcV9yb3QyNzBfeCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3Q5MF9tX3MxNikpKQppbnQxNng4X3QgdmNhZGRxX3JvdDkwX21fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDkwX21fczE2KSkpCmludDE2eDhfdCB2Y2FkZHFfcm90OTBfbShpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3Q5MF9tX3MzMikpKQppbnQzMng0X3QgdmNhZGRxX3JvdDkwX21fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDkwX21fczMyKSkpCmludDMyeDRfdCB2Y2FkZHFfcm90OTBfbShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3Q5MF9tX3M4KSkpCmludDh4MTZfdCB2Y2FkZHFfcm90OTBfbV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3Q5MF9tX3M4KSkpCmludDh4MTZfdCB2Y2FkZHFfcm90OTBfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3Q5MF9tX3UxNikpKQp1aW50MTZ4OF90IHZjYWRkcV9yb3Q5MF9tX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3Q5MF9tX3UxNikpKQp1aW50MTZ4OF90IHZjYWRkcV9yb3Q5MF9tKHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDkwX21fdTMyKSkpCnVpbnQzMng0X3QgdmNhZGRxX3JvdDkwX21fdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDkwX21fdTMyKSkpCnVpbnQzMng0X3QgdmNhZGRxX3JvdDkwX20odWludDMyeDRfdCwgdWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90OTBfbV91OCkpKQp1aW50OHgxNl90IHZjYWRkcV9yb3Q5MF9tX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDkwX21fdTgpKSkKdWludDh4MTZfdCB2Y2FkZHFfcm90OTBfbSh1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3Q5MF9zMTYpKSkKaW50MTZ4OF90IHZjYWRkcV9yb3Q5MF9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3Q5MF9zMTYpKSkKaW50MTZ4OF90IHZjYWRkcV9yb3Q5MChpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDkwX3MzMikpKQppbnQzMng0X3QgdmNhZGRxX3JvdDkwX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDkwX3MzMikpKQppbnQzMng0X3QgdmNhZGRxX3JvdDkwKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90OTBfczgpKSkKaW50OHgxNl90IHZjYWRkcV9yb3Q5MF9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDkwX3M4KSkpCmludDh4MTZfdCB2Y2FkZHFfcm90OTAoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3Q5MF91MTYpKSkKdWludDE2eDhfdCB2Y2FkZHFfcm90OTBfdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3Q5MF91MTYpKSkKdWludDE2eDhfdCB2Y2FkZHFfcm90OTAodWludDE2eDhfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDkwX3UzMikpKQp1aW50MzJ4NF90IHZjYWRkcV9yb3Q5MF91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDkwX3UzMikpKQp1aW50MzJ4NF90IHZjYWRkcV9yb3Q5MCh1aW50MzJ4NF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90OTBfdTgpKSkKdWludDh4MTZfdCB2Y2FkZHFfcm90OTBfdTgodWludDh4MTZfdCwgdWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDkwX3U4KSkpCnVpbnQ4eDE2X3QgdmNhZGRxX3JvdDkwKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3Q5MF94X3MxNikpKQppbnQxNng4X3QgdmNhZGRxX3JvdDkwX3hfczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3Q5MF94X3MxNikpKQppbnQxNng4X3QgdmNhZGRxX3JvdDkwX3goaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDkwX3hfczMyKSkpCmludDMyeDRfdCB2Y2FkZHFfcm90OTBfeF9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDkwX3hfczMyKSkpCmludDMyeDRfdCB2Y2FkZHFfcm90OTBfeChpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90OTBfeF9zOCkpKQppbnQ4eDE2X3QgdmNhZGRxX3JvdDkwX3hfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDkwX3hfczgpKSkKaW50OHgxNl90IHZjYWRkcV9yb3Q5MF94KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3Q5MF94X3UxNikpKQp1aW50MTZ4OF90IHZjYWRkcV9yb3Q5MF94X3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3Q5MF94X3UxNikpKQp1aW50MTZ4OF90IHZjYWRkcV9yb3Q5MF94KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDkwX3hfdTMyKSkpCnVpbnQzMng0X3QgdmNhZGRxX3JvdDkwX3hfdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDkwX3hfdTMyKSkpCnVpbnQzMng0X3QgdmNhZGRxX3JvdDkwX3godWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90OTBfeF91OCkpKQp1aW50OHgxNl90IHZjYWRkcV9yb3Q5MF94X3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDkwX3hfdTgpKSkKdWludDh4MTZfdCB2Y2FkZHFfcm90OTBfeCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbHNxX21fczE2KSkpCmludDE2eDhfdCB2Y2xzcV9tX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2xzcV9tX3MxNikpKQppbnQxNng4X3QgdmNsc3FfbShpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2xzcV9tX3MzMikpKQppbnQzMng0X3QgdmNsc3FfbV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNsc3FfbV9zMzIpKSkKaW50MzJ4NF90IHZjbHNxX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNsc3FfbV9zOCkpKQppbnQ4eDE2X3QgdmNsc3FfbV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2xzcV9tX3M4KSkpCmludDh4MTZfdCB2Y2xzcV9tKGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbHNxX3MxNikpKQppbnQxNng4X3QgdmNsc3FfczE2KGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNsc3FfczE2KSkpCmludDE2eDhfdCB2Y2xzcShpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbHNxX3MzMikpKQppbnQzMng0X3QgdmNsc3FfczMyKGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNsc3FfczMyKSkpCmludDMyeDRfdCB2Y2xzcShpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbHNxX3M4KSkpCmludDh4MTZfdCB2Y2xzcV9zOChpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbHNxX3M4KSkpCmludDh4MTZfdCB2Y2xzcShpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbHNxX3hfczE2KSkpCmludDE2eDhfdCB2Y2xzcV94X3MxNihpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNsc3FfeF9zMTYpKSkKaW50MTZ4OF90IHZjbHNxX3goaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbHNxX3hfczMyKSkpCmludDMyeDRfdCB2Y2xzcV94X3MzMihpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNsc3FfeF9zMzIpKSkKaW50MzJ4NF90IHZjbHNxX3goaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbHNxX3hfczgpKSkKaW50OHgxNl90IHZjbHNxX3hfczgoaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbHNxX3hfczgpKSkKaW50OHgxNl90IHZjbHNxX3goaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbHpxX21fczE2KSkpCmludDE2eDhfdCB2Y2x6cV9tX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2x6cV9tX3MxNikpKQppbnQxNng4X3QgdmNsenFfbShpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2x6cV9tX3MzMikpKQppbnQzMng0X3QgdmNsenFfbV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNsenFfbV9zMzIpKSkKaW50MzJ4NF90IHZjbHpxX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNsenFfbV9zOCkpKQppbnQ4eDE2X3QgdmNsenFfbV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2x6cV9tX3M4KSkpCmludDh4MTZfdCB2Y2x6cV9tKGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbHpxX21fdTE2KSkpCnVpbnQxNng4X3QgdmNsenFfbV91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2x6cV9tX3UxNikpKQp1aW50MTZ4OF90IHZjbHpxX20odWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2x6cV9tX3UzMikpKQp1aW50MzJ4NF90IHZjbHpxX21fdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNsenFfbV91MzIpKSkKdWludDMyeDRfdCB2Y2x6cV9tKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNsenFfbV91OCkpKQp1aW50OHgxNl90IHZjbHpxX21fdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2x6cV9tX3U4KSkpCnVpbnQ4eDE2X3QgdmNsenFfbSh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbHpxX3MxNikpKQppbnQxNng4X3QgdmNsenFfczE2KGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNsenFfczE2KSkpCmludDE2eDhfdCB2Y2x6cShpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbHpxX3MzMikpKQppbnQzMng0X3QgdmNsenFfczMyKGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNsenFfczMyKSkpCmludDMyeDRfdCB2Y2x6cShpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbHpxX3M4KSkpCmludDh4MTZfdCB2Y2x6cV9zOChpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbHpxX3M4KSkpCmludDh4MTZfdCB2Y2x6cShpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbHpxX3UxNikpKQp1aW50MTZ4OF90IHZjbHpxX3UxNih1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2x6cV91MTYpKSkKdWludDE2eDhfdCB2Y2x6cSh1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2x6cV91MzIpKSkKdWludDMyeDRfdCB2Y2x6cV91MzIodWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNsenFfdTMyKSkpCnVpbnQzMng0X3QgdmNsenEodWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNsenFfdTgpKSkKdWludDh4MTZfdCB2Y2x6cV91OCh1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2x6cV91OCkpKQp1aW50OHgxNl90IHZjbHpxKHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbHpxX3hfczE2KSkpCmludDE2eDhfdCB2Y2x6cV94X3MxNihpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNsenFfeF9zMTYpKSkKaW50MTZ4OF90IHZjbHpxX3goaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbHpxX3hfczMyKSkpCmludDMyeDRfdCB2Y2x6cV94X3MzMihpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNsenFfeF9zMzIpKSkKaW50MzJ4NF90IHZjbHpxX3goaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbHpxX3hfczgpKSkKaW50OHgxNl90IHZjbHpxX3hfczgoaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbHpxX3hfczgpKSkKaW50OHgxNl90IHZjbHpxX3goaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbHpxX3hfdTE2KSkpCnVpbnQxNng4X3QgdmNsenFfeF91MTYodWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2x6cV94X3UxNikpKQp1aW50MTZ4OF90IHZjbHpxX3godWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2x6cV94X3UzMikpKQp1aW50MzJ4NF90IHZjbHpxX3hfdTMyKHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNsenFfeF91MzIpKSkKdWludDMyeDRfdCB2Y2x6cV94KHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNsenFfeF91OCkpKQp1aW50OHgxNl90IHZjbHpxX3hfdTgodWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2x6cV94X3U4KSkpCnVpbnQ4eDE2X3QgdmNsenFfeCh1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBjc3FfbV9uX3UxNikpKQptdmVfcHJlZDE2X3QgdmNtcGNzcV9tX25fdTE2KHVpbnQxNng4X3QsIHVpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBjc3FfbV9uX3UxNikpKQptdmVfcHJlZDE2X3QgdmNtcGNzcV9tKHVpbnQxNng4X3QsIHVpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBjc3FfbV9uX3UzMikpKQptdmVfcHJlZDE2X3QgdmNtcGNzcV9tX25fdTMyKHVpbnQzMng0X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBjc3FfbV9uX3UzMikpKQptdmVfcHJlZDE2X3QgdmNtcGNzcV9tKHVpbnQzMng0X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBjc3FfbV9uX3U4KSkpCm12ZV9wcmVkMTZfdCB2Y21wY3NxX21fbl91OCh1aW50OHgxNl90LCB1aW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBjc3FfbV9uX3U4KSkpCm12ZV9wcmVkMTZfdCB2Y21wY3NxX20odWludDh4MTZfdCwgdWludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wY3NxX21fdTE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wY3NxX21fdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGNzcV9tX3UxNikpKQptdmVfcHJlZDE2X3QgdmNtcGNzcV9tKHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGNzcV9tX3UzMikpKQptdmVfcHJlZDE2X3QgdmNtcGNzcV9tX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBjc3FfbV91MzIpKSkKbXZlX3ByZWQxNl90IHZjbXBjc3FfbSh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBjc3FfbV91OCkpKQptdmVfcHJlZDE2X3QgdmNtcGNzcV9tX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGNzcV9tX3U4KSkpCm12ZV9wcmVkMTZfdCB2Y21wY3NxX20odWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wY3NxX25fdTE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wY3NxX25fdTE2KHVpbnQxNng4X3QsIHVpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wY3NxX25fdTE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wY3NxKHVpbnQxNng4X3QsIHVpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wY3NxX25fdTMyKSkpCm12ZV9wcmVkMTZfdCB2Y21wY3NxX25fdTMyKHVpbnQzMng0X3QsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wY3NxX25fdTMyKSkpCm12ZV9wcmVkMTZfdCB2Y21wY3NxKHVpbnQzMng0X3QsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wY3NxX25fdTgpKSkKbXZlX3ByZWQxNl90IHZjbXBjc3Ffbl91OCh1aW50OHgxNl90LCB1aW50OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wY3NxX25fdTgpKSkKbXZlX3ByZWQxNl90IHZjbXBjc3EodWludDh4MTZfdCwgdWludDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGNzcV91MTYpKSkKbXZlX3ByZWQxNl90IHZjbXBjc3FfdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBjc3FfdTE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wY3NxKHVpbnQxNng4X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBjc3FfdTMyKSkpCm12ZV9wcmVkMTZfdCB2Y21wY3NxX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wY3NxX3UzMikpKQptdmVfcHJlZDE2X3QgdmNtcGNzcSh1aW50MzJ4NF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wY3NxX3U4KSkpCm12ZV9wcmVkMTZfdCB2Y21wY3NxX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBjc3FfdTgpKSkKbXZlX3ByZWQxNl90IHZjbXBjc3EodWludDh4MTZfdCwgdWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGVxcV9tX25fczE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wZXFxX21fbl9zMTYoaW50MTZ4OF90LCBpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfbV9uX3MxNikpKQptdmVfcHJlZDE2X3QgdmNtcGVxcV9tKGludDE2eDhfdCwgaW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZXFxX21fbl9zMzIpKSkKbXZlX3ByZWQxNl90IHZjbXBlcXFfbV9uX3MzMihpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGVxcV9tX25fczMyKSkpCm12ZV9wcmVkMTZfdCB2Y21wZXFxX20oaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfbV9uX3M4KSkpCm12ZV9wcmVkMTZfdCB2Y21wZXFxX21fbl9zOChpbnQ4eDE2X3QsIGludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZXFxX21fbl9zOCkpKQptdmVfcHJlZDE2X3QgdmNtcGVxcV9tKGludDh4MTZfdCwgaW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfbV9uX3UxNikpKQptdmVfcHJlZDE2X3QgdmNtcGVxcV9tX25fdTE2KHVpbnQxNng4X3QsIHVpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfbV9uX3UxNikpKQptdmVfcHJlZDE2X3QgdmNtcGVxcV9tKHVpbnQxNng4X3QsIHVpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfbV9uX3UzMikpKQptdmVfcHJlZDE2X3QgdmNtcGVxcV9tX25fdTMyKHVpbnQzMng0X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfbV9uX3UzMikpKQptdmVfcHJlZDE2X3QgdmNtcGVxcV9tKHVpbnQzMng0X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfbV9uX3U4KSkpCm12ZV9wcmVkMTZfdCB2Y21wZXFxX21fbl91OCh1aW50OHgxNl90LCB1aW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfbV9uX3U4KSkpCm12ZV9wcmVkMTZfdCB2Y21wZXFxX20odWludDh4MTZfdCwgdWludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZXFxX21fczE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wZXFxX21fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfbV9zMTYpKSkKbXZlX3ByZWQxNl90IHZjbXBlcXFfbShpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZXFxX21fczMyKSkpCm12ZV9wcmVkMTZfdCB2Y21wZXFxX21fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfbV9zMzIpKSkKbXZlX3ByZWQxNl90IHZjbXBlcXFfbShpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZXFxX21fczgpKSkKbXZlX3ByZWQxNl90IHZjbXBlcXFfbV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZXFxX21fczgpKSkKbXZlX3ByZWQxNl90IHZjbXBlcXFfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZXFxX21fdTE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wZXFxX21fdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGVxcV9tX3UxNikpKQptdmVfcHJlZDE2X3QgdmNtcGVxcV9tKHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGVxcV9tX3UzMikpKQptdmVfcHJlZDE2X3QgdmNtcGVxcV9tX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfbV91MzIpKSkKbXZlX3ByZWQxNl90IHZjbXBlcXFfbSh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfbV91OCkpKQptdmVfcHJlZDE2X3QgdmNtcGVxcV9tX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGVxcV9tX3U4KSkpCm12ZV9wcmVkMTZfdCB2Y21wZXFxX20odWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZXFxX25fczE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wZXFxX25fczE2KGludDE2eDhfdCwgaW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGVxcV9uX3MxNikpKQptdmVfcHJlZDE2X3QgdmNtcGVxcShpbnQxNng4X3QsIGludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfbl9zMzIpKSkKbXZlX3ByZWQxNl90IHZjbXBlcXFfbl9zMzIoaW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZXFxX25fczMyKSkpCm12ZV9wcmVkMTZfdCB2Y21wZXFxKGludDMyeDRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGVxcV9uX3M4KSkpCm12ZV9wcmVkMTZfdCB2Y21wZXFxX25fczgoaW50OHgxNl90LCBpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfbl9zOCkpKQptdmVfcHJlZDE2X3QgdmNtcGVxcShpbnQ4eDE2X3QsIGludDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGVxcV9uX3UxNikpKQptdmVfcHJlZDE2X3QgdmNtcGVxcV9uX3UxNih1aW50MTZ4OF90LCB1aW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGVxcV9uX3UxNikpKQptdmVfcHJlZDE2X3QgdmNtcGVxcSh1aW50MTZ4OF90LCB1aW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGVxcV9uX3UzMikpKQptdmVfcHJlZDE2X3QgdmNtcGVxcV9uX3UzMih1aW50MzJ4NF90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGVxcV9uX3UzMikpKQptdmVfcHJlZDE2X3QgdmNtcGVxcSh1aW50MzJ4NF90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGVxcV9uX3U4KSkpCm12ZV9wcmVkMTZfdCB2Y21wZXFxX25fdTgodWludDh4MTZfdCwgdWludDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGVxcV9uX3U4KSkpCm12ZV9wcmVkMTZfdCB2Y21wZXFxKHVpbnQ4eDE2X3QsIHVpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfczE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wZXFxX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGVxcV9zMTYpKSkKbXZlX3ByZWQxNl90IHZjbXBlcXEoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfczMyKSkpCm12ZV9wcmVkMTZfdCB2Y21wZXFxX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGVxcV9zMzIpKSkKbXZlX3ByZWQxNl90IHZjbXBlcXEoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfczgpKSkKbXZlX3ByZWQxNl90IHZjbXBlcXFfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfczgpKSkKbXZlX3ByZWQxNl90IHZjbXBlcXEoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfdTE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wZXFxX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZXFxX3UxNikpKQptdmVfcHJlZDE2X3QgdmNtcGVxcSh1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZXFxX3UzMikpKQptdmVfcHJlZDE2X3QgdmNtcGVxcV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGVxcV91MzIpKSkKbXZlX3ByZWQxNl90IHZjbXBlcXEodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGVxcV91OCkpKQptdmVfcHJlZDE2X3QgdmNtcGVxcV91OCh1aW50OHgxNl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZXFxX3U4KSkpCm12ZV9wcmVkMTZfdCB2Y21wZXFxKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBnZXFfbV9uX3MxNikpKQptdmVfcHJlZDE2X3QgdmNtcGdlcV9tX25fczE2KGludDE2eDhfdCwgaW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ2VxX21fbl9zMTYpKSkKbXZlX3ByZWQxNl90IHZjbXBnZXFfbShpbnQxNng4X3QsIGludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGdlcV9tX25fczMyKSkpCm12ZV9wcmVkMTZfdCB2Y21wZ2VxX21fbl9zMzIoaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBnZXFfbV9uX3MzMikpKQptdmVfcHJlZDE2X3QgdmNtcGdlcV9tKGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ2VxX21fbl9zOCkpKQptdmVfcHJlZDE2X3QgdmNtcGdlcV9tX25fczgoaW50OHgxNl90LCBpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGdlcV9tX25fczgpKSkKbXZlX3ByZWQxNl90IHZjbXBnZXFfbShpbnQ4eDE2X3QsIGludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ2VxX21fczE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wZ2VxX21fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBnZXFfbV9zMTYpKSkKbXZlX3ByZWQxNl90IHZjbXBnZXFfbShpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ2VxX21fczMyKSkpCm12ZV9wcmVkMTZfdCB2Y21wZ2VxX21fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBnZXFfbV9zMzIpKSkKbXZlX3ByZWQxNl90IHZjbXBnZXFfbShpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ2VxX21fczgpKSkKbXZlX3ByZWQxNl90IHZjbXBnZXFfbV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ2VxX21fczgpKSkKbXZlX3ByZWQxNl90IHZjbXBnZXFfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ2VxX25fczE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wZ2VxX25fczE2KGludDE2eDhfdCwgaW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGdlcV9uX3MxNikpKQptdmVfcHJlZDE2X3QgdmNtcGdlcShpbnQxNng4X3QsIGludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBnZXFfbl9zMzIpKSkKbXZlX3ByZWQxNl90IHZjbXBnZXFfbl9zMzIoaW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ2VxX25fczMyKSkpCm12ZV9wcmVkMTZfdCB2Y21wZ2VxKGludDMyeDRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGdlcV9uX3M4KSkpCm12ZV9wcmVkMTZfdCB2Y21wZ2VxX25fczgoaW50OHgxNl90LCBpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBnZXFfbl9zOCkpKQptdmVfcHJlZDE2X3QgdmNtcGdlcShpbnQ4eDE2X3QsIGludDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGdlcV9zMTYpKSkKbXZlX3ByZWQxNl90IHZjbXBnZXFfczE2KGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ2VxX3MxNikpKQptdmVfcHJlZDE2X3QgdmNtcGdlcShpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGdlcV9zMzIpKSkKbXZlX3ByZWQxNl90IHZjbXBnZXFfczMyKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ2VxX3MzMikpKQptdmVfcHJlZDE2X3QgdmNtcGdlcShpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGdlcV9zOCkpKQptdmVfcHJlZDE2X3QgdmNtcGdlcV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGdlcV9zOCkpKQptdmVfcHJlZDE2X3QgdmNtcGdlcShpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGd0cV9tX25fczE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wZ3RxX21fbl9zMTYoaW50MTZ4OF90LCBpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBndHFfbV9uX3MxNikpKQptdmVfcHJlZDE2X3QgdmNtcGd0cV9tKGludDE2eDhfdCwgaW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ3RxX21fbl9zMzIpKSkKbXZlX3ByZWQxNl90IHZjbXBndHFfbV9uX3MzMihpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGd0cV9tX25fczMyKSkpCm12ZV9wcmVkMTZfdCB2Y21wZ3RxX20oaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBndHFfbV9uX3M4KSkpCm12ZV9wcmVkMTZfdCB2Y21wZ3RxX21fbl9zOChpbnQ4eDE2X3QsIGludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ3RxX21fbl9zOCkpKQptdmVfcHJlZDE2X3QgdmNtcGd0cV9tKGludDh4MTZfdCwgaW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBndHFfbV9zMTYpKSkKbXZlX3ByZWQxNl90IHZjbXBndHFfbV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGd0cV9tX3MxNikpKQptdmVfcHJlZDE2X3QgdmNtcGd0cV9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBndHFfbV9zMzIpKSkKbXZlX3ByZWQxNl90IHZjbXBndHFfbV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGd0cV9tX3MzMikpKQptdmVfcHJlZDE2X3QgdmNtcGd0cV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBndHFfbV9zOCkpKQptdmVfcHJlZDE2X3QgdmNtcGd0cV9tX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBndHFfbV9zOCkpKQptdmVfcHJlZDE2X3QgdmNtcGd0cV9tKGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBndHFfbl9zMTYpKSkKbXZlX3ByZWQxNl90IHZjbXBndHFfbl9zMTYoaW50MTZ4OF90LCBpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ3RxX25fczE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wZ3RxKGludDE2eDhfdCwgaW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGd0cV9uX3MzMikpKQptdmVfcHJlZDE2X3QgdmNtcGd0cV9uX3MzMihpbnQzMng0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBndHFfbl9zMzIpKSkKbXZlX3ByZWQxNl90IHZjbXBndHEoaW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ3RxX25fczgpKSkKbXZlX3ByZWQxNl90IHZjbXBndHFfbl9zOChpbnQ4eDE2X3QsIGludDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGd0cV9uX3M4KSkpCm12ZV9wcmVkMTZfdCB2Y21wZ3RxKGludDh4MTZfdCwgaW50OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ3RxX3MxNikpKQptdmVfcHJlZDE2X3QgdmNtcGd0cV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBndHFfczE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wZ3RxKGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ3RxX3MzMikpKQptdmVfcHJlZDE2X3QgdmNtcGd0cV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBndHFfczMyKSkpCm12ZV9wcmVkMTZfdCB2Y21wZ3RxKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ3RxX3M4KSkpCm12ZV9wcmVkMTZfdCB2Y21wZ3RxX3M4KGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ3RxX3M4KSkpCm12ZV9wcmVkMTZfdCB2Y21wZ3RxKGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21waGlxX21fbl91MTYpKSkKbXZlX3ByZWQxNl90IHZjbXBoaXFfbV9uX3UxNih1aW50MTZ4OF90LCB1aW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21waGlxX21fbl91MTYpKSkKbXZlX3ByZWQxNl90IHZjbXBoaXFfbSh1aW50MTZ4OF90LCB1aW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21waGlxX21fbl91MzIpKSkKbXZlX3ByZWQxNl90IHZjbXBoaXFfbV9uX3UzMih1aW50MzJ4NF90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21waGlxX21fbl91MzIpKSkKbXZlX3ByZWQxNl90IHZjbXBoaXFfbSh1aW50MzJ4NF90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21waGlxX21fbl91OCkpKQptdmVfcHJlZDE2X3QgdmNtcGhpcV9tX25fdTgodWludDh4MTZfdCwgdWludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21waGlxX21fbl91OCkpKQptdmVfcHJlZDE2X3QgdmNtcGhpcV9tKHVpbnQ4eDE2X3QsIHVpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGhpcV9tX3UxNikpKQptdmVfcHJlZDE2X3QgdmNtcGhpcV9tX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBoaXFfbV91MTYpKSkKbXZlX3ByZWQxNl90IHZjbXBoaXFfbSh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBoaXFfbV91MzIpKSkKbXZlX3ByZWQxNl90IHZjbXBoaXFfbV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21waGlxX21fdTMyKSkpCm12ZV9wcmVkMTZfdCB2Y21waGlxX20odWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21waGlxX21fdTgpKSkKbXZlX3ByZWQxNl90IHZjbXBoaXFfbV91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBoaXFfbV91OCkpKQptdmVfcHJlZDE2X3QgdmNtcGhpcV9tKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGhpcV9uX3UxNikpKQptdmVfcHJlZDE2X3QgdmNtcGhpcV9uX3UxNih1aW50MTZ4OF90LCB1aW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGhpcV9uX3UxNikpKQptdmVfcHJlZDE2X3QgdmNtcGhpcSh1aW50MTZ4OF90LCB1aW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGhpcV9uX3UzMikpKQptdmVfcHJlZDE2X3QgdmNtcGhpcV9uX3UzMih1aW50MzJ4NF90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGhpcV9uX3UzMikpKQptdmVfcHJlZDE2X3QgdmNtcGhpcSh1aW50MzJ4NF90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGhpcV9uX3U4KSkpCm12ZV9wcmVkMTZfdCB2Y21waGlxX25fdTgodWludDh4MTZfdCwgdWludDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGhpcV9uX3U4KSkpCm12ZV9wcmVkMTZfdCB2Y21waGlxKHVpbnQ4eDE2X3QsIHVpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBoaXFfdTE2KSkpCm12ZV9wcmVkMTZfdCB2Y21waGlxX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21waGlxX3UxNikpKQptdmVfcHJlZDE2X3QgdmNtcGhpcSh1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21waGlxX3UzMikpKQptdmVfcHJlZDE2X3QgdmNtcGhpcV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGhpcV91MzIpKSkKbXZlX3ByZWQxNl90IHZjbXBoaXEodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGhpcV91OCkpKQptdmVfcHJlZDE2X3QgdmNtcGhpcV91OCh1aW50OHgxNl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21waGlxX3U4KSkpCm12ZV9wcmVkMTZfdCB2Y21waGlxKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsZXFfbV9uX3MxNikpKQptdmVfcHJlZDE2X3QgdmNtcGxlcV9tX25fczE2KGludDE2eDhfdCwgaW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbGVxX21fbl9zMTYpKSkKbXZlX3ByZWQxNl90IHZjbXBsZXFfbShpbnQxNng4X3QsIGludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGxlcV9tX25fczMyKSkpCm12ZV9wcmVkMTZfdCB2Y21wbGVxX21fbl9zMzIoaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsZXFfbV9uX3MzMikpKQptdmVfcHJlZDE2X3QgdmNtcGxlcV9tKGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbGVxX21fbl9zOCkpKQptdmVfcHJlZDE2X3QgdmNtcGxlcV9tX25fczgoaW50OHgxNl90LCBpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGxlcV9tX25fczgpKSkKbXZlX3ByZWQxNl90IHZjbXBsZXFfbShpbnQ4eDE2X3QsIGludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbGVxX21fczE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wbGVxX21fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsZXFfbV9zMTYpKSkKbXZlX3ByZWQxNl90IHZjbXBsZXFfbShpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbGVxX21fczMyKSkpCm12ZV9wcmVkMTZfdCB2Y21wbGVxX21fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsZXFfbV9zMzIpKSkKbXZlX3ByZWQxNl90IHZjbXBsZXFfbShpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbGVxX21fczgpKSkKbXZlX3ByZWQxNl90IHZjbXBsZXFfbV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbGVxX21fczgpKSkKbXZlX3ByZWQxNl90IHZjbXBsZXFfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbGVxX25fczE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wbGVxX25fczE2KGludDE2eDhfdCwgaW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGxlcV9uX3MxNikpKQptdmVfcHJlZDE2X3QgdmNtcGxlcShpbnQxNng4X3QsIGludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsZXFfbl9zMzIpKSkKbXZlX3ByZWQxNl90IHZjbXBsZXFfbl9zMzIoaW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbGVxX25fczMyKSkpCm12ZV9wcmVkMTZfdCB2Y21wbGVxKGludDMyeDRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGxlcV9uX3M4KSkpCm12ZV9wcmVkMTZfdCB2Y21wbGVxX25fczgoaW50OHgxNl90LCBpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsZXFfbl9zOCkpKQptdmVfcHJlZDE2X3QgdmNtcGxlcShpbnQ4eDE2X3QsIGludDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGxlcV9zMTYpKSkKbXZlX3ByZWQxNl90IHZjbXBsZXFfczE2KGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbGVxX3MxNikpKQptdmVfcHJlZDE2X3QgdmNtcGxlcShpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGxlcV9zMzIpKSkKbXZlX3ByZWQxNl90IHZjbXBsZXFfczMyKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbGVxX3MzMikpKQptdmVfcHJlZDE2X3QgdmNtcGxlcShpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGxlcV9zOCkpKQptdmVfcHJlZDE2X3QgdmNtcGxlcV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGxlcV9zOCkpKQptdmVfcHJlZDE2X3QgdmNtcGxlcShpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGx0cV9tX25fczE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wbHRxX21fbl9zMTYoaW50MTZ4OF90LCBpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsdHFfbV9uX3MxNikpKQptdmVfcHJlZDE2X3QgdmNtcGx0cV9tKGludDE2eDhfdCwgaW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbHRxX21fbl9zMzIpKSkKbXZlX3ByZWQxNl90IHZjbXBsdHFfbV9uX3MzMihpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGx0cV9tX25fczMyKSkpCm12ZV9wcmVkMTZfdCB2Y21wbHRxX20oaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsdHFfbV9uX3M4KSkpCm12ZV9wcmVkMTZfdCB2Y21wbHRxX21fbl9zOChpbnQ4eDE2X3QsIGludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbHRxX21fbl9zOCkpKQptdmVfcHJlZDE2X3QgdmNtcGx0cV9tKGludDh4MTZfdCwgaW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsdHFfbV9zMTYpKSkKbXZlX3ByZWQxNl90IHZjbXBsdHFfbV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGx0cV9tX3MxNikpKQptdmVfcHJlZDE2X3QgdmNtcGx0cV9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsdHFfbV9zMzIpKSkKbXZlX3ByZWQxNl90IHZjbXBsdHFfbV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGx0cV9tX3MzMikpKQptdmVfcHJlZDE2X3QgdmNtcGx0cV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsdHFfbV9zOCkpKQptdmVfcHJlZDE2X3QgdmNtcGx0cV9tX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsdHFfbV9zOCkpKQptdmVfcHJlZDE2X3QgdmNtcGx0cV9tKGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsdHFfbl9zMTYpKSkKbXZlX3ByZWQxNl90IHZjbXBsdHFfbl9zMTYoaW50MTZ4OF90LCBpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbHRxX25fczE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wbHRxKGludDE2eDhfdCwgaW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGx0cV9uX3MzMikpKQptdmVfcHJlZDE2X3QgdmNtcGx0cV9uX3MzMihpbnQzMng0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsdHFfbl9zMzIpKSkKbXZlX3ByZWQxNl90IHZjbXBsdHEoaW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbHRxX25fczgpKSkKbXZlX3ByZWQxNl90IHZjbXBsdHFfbl9zOChpbnQ4eDE2X3QsIGludDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGx0cV9uX3M4KSkpCm12ZV9wcmVkMTZfdCB2Y21wbHRxKGludDh4MTZfdCwgaW50OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbHRxX3MxNikpKQptdmVfcHJlZDE2X3QgdmNtcGx0cV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsdHFfczE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wbHRxKGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbHRxX3MzMikpKQptdmVfcHJlZDE2X3QgdmNtcGx0cV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsdHFfczMyKSkpCm12ZV9wcmVkMTZfdCB2Y21wbHRxKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbHRxX3M4KSkpCm12ZV9wcmVkMTZfdCB2Y21wbHRxX3M4KGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbHRxX3M4KSkpCm12ZV9wcmVkMTZfdCB2Y21wbHRxKGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbmVxX21fbl9zMTYpKSkKbXZlX3ByZWQxNl90IHZjbXBuZXFfbV9uX3MxNihpbnQxNng4X3QsIGludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV9tX25fczE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wbmVxX20oaW50MTZ4OF90LCBpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBuZXFfbV9uX3MzMikpKQptdmVfcHJlZDE2X3QgdmNtcG5lcV9tX25fczMyKGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbmVxX21fbl9zMzIpKSkKbXZlX3ByZWQxNl90IHZjbXBuZXFfbShpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV9tX25fczgpKSkKbXZlX3ByZWQxNl90IHZjbXBuZXFfbV9uX3M4KGludDh4MTZfdCwgaW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBuZXFfbV9uX3M4KSkpCm12ZV9wcmVkMTZfdCB2Y21wbmVxX20oaW50OHgxNl90LCBpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV9tX25fdTE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wbmVxX21fbl91MTYodWludDE2eDhfdCwgdWludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV9tX25fdTE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wbmVxX20odWludDE2eDhfdCwgdWludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV9tX25fdTMyKSkpCm12ZV9wcmVkMTZfdCB2Y21wbmVxX21fbl91MzIodWludDMyeDRfdCwgdWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV9tX25fdTMyKSkpCm12ZV9wcmVkMTZfdCB2Y21wbmVxX20odWludDMyeDRfdCwgdWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV9tX25fdTgpKSkKbXZlX3ByZWQxNl90IHZjbXBuZXFfbV9uX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV9tX25fdTgpKSkKbXZlX3ByZWQxNl90IHZjbXBuZXFfbSh1aW50OHgxNl90LCB1aW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBuZXFfbV9zMTYpKSkKbXZlX3ByZWQxNl90IHZjbXBuZXFfbV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV9tX3MxNikpKQptdmVfcHJlZDE2X3QgdmNtcG5lcV9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBuZXFfbV9zMzIpKSkKbXZlX3ByZWQxNl90IHZjbXBuZXFfbV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV9tX3MzMikpKQptdmVfcHJlZDE2X3QgdmNtcG5lcV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBuZXFfbV9zOCkpKQptdmVfcHJlZDE2X3QgdmNtcG5lcV9tX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBuZXFfbV9zOCkpKQptdmVfcHJlZDE2X3QgdmNtcG5lcV9tKGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBuZXFfbV91MTYpKSkKbXZlX3ByZWQxNl90IHZjbXBuZXFfbV91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbmVxX21fdTE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wbmVxX20odWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbmVxX21fdTMyKSkpCm12ZV9wcmVkMTZfdCB2Y21wbmVxX21fdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV9tX3UzMikpKQptdmVfcHJlZDE2X3QgdmNtcG5lcV9tKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV9tX3U4KSkpCm12ZV9wcmVkMTZfdCB2Y21wbmVxX21fdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbmVxX21fdTgpKSkKbXZlX3ByZWQxNl90IHZjbXBuZXFfbSh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBuZXFfbl9zMTYpKSkKbXZlX3ByZWQxNl90IHZjbXBuZXFfbl9zMTYoaW50MTZ4OF90LCBpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbmVxX25fczE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wbmVxKGludDE2eDhfdCwgaW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV9uX3MzMikpKQptdmVfcHJlZDE2X3QgdmNtcG5lcV9uX3MzMihpbnQzMng0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBuZXFfbl9zMzIpKSkKbXZlX3ByZWQxNl90IHZjbXBuZXEoaW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbmVxX25fczgpKSkKbXZlX3ByZWQxNl90IHZjbXBuZXFfbl9zOChpbnQ4eDE2X3QsIGludDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV9uX3M4KSkpCm12ZV9wcmVkMTZfdCB2Y21wbmVxKGludDh4MTZfdCwgaW50OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbmVxX25fdTE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wbmVxX25fdTE2KHVpbnQxNng4X3QsIHVpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbmVxX25fdTE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wbmVxKHVpbnQxNng4X3QsIHVpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbmVxX25fdTMyKSkpCm12ZV9wcmVkMTZfdCB2Y21wbmVxX25fdTMyKHVpbnQzMng0X3QsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbmVxX25fdTMyKSkpCm12ZV9wcmVkMTZfdCB2Y21wbmVxKHVpbnQzMng0X3QsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbmVxX25fdTgpKSkKbXZlX3ByZWQxNl90IHZjbXBuZXFfbl91OCh1aW50OHgxNl90LCB1aW50OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbmVxX25fdTgpKSkKbXZlX3ByZWQxNl90IHZjbXBuZXEodWludDh4MTZfdCwgdWludDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV9zMTYpKSkKbXZlX3ByZWQxNl90IHZjbXBuZXFfczE2KGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbmVxX3MxNikpKQptdmVfcHJlZDE2X3QgdmNtcG5lcShpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV9zMzIpKSkKbXZlX3ByZWQxNl90IHZjbXBuZXFfczMyKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbmVxX3MzMikpKQptdmVfcHJlZDE2X3QgdmNtcG5lcShpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV9zOCkpKQptdmVfcHJlZDE2X3QgdmNtcG5lcV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV9zOCkpKQptdmVfcHJlZDE2X3QgdmNtcG5lcShpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV91MTYpKSkKbXZlX3ByZWQxNl90IHZjbXBuZXFfdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBuZXFfdTE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wbmVxKHVpbnQxNng4X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBuZXFfdTMyKSkpCm12ZV9wcmVkMTZfdCB2Y21wbmVxX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbmVxX3UzMikpKQptdmVfcHJlZDE2X3QgdmNtcG5lcSh1aW50MzJ4NF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbmVxX3U4KSkpCm12ZV9wcmVkMTZfdCB2Y21wbmVxX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBuZXFfdTgpKSkKbXZlX3ByZWQxNl90IHZjbXBuZXEodWludDh4MTZfdCwgdWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNyZWF0ZXFfczE2KSkpCmludDE2eDhfdCB2Y3JlYXRlcV9zMTYodWludDY0X3QsIHVpbnQ2NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3JlYXRlcV9zMzIpKSkKaW50MzJ4NF90IHZjcmVhdGVxX3MzMih1aW50NjRfdCwgdWludDY0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjcmVhdGVxX3M2NCkpKQppbnQ2NHgyX3QgdmNyZWF0ZXFfczY0KHVpbnQ2NF90LCB1aW50NjRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNyZWF0ZXFfczgpKSkKaW50OHgxNl90IHZjcmVhdGVxX3M4KHVpbnQ2NF90LCB1aW50NjRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNyZWF0ZXFfdTE2KSkpCnVpbnQxNng4X3QgdmNyZWF0ZXFfdTE2KHVpbnQ2NF90LCB1aW50NjRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNyZWF0ZXFfdTMyKSkpCnVpbnQzMng0X3QgdmNyZWF0ZXFfdTMyKHVpbnQ2NF90LCB1aW50NjRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNyZWF0ZXFfdTY0KSkpCnVpbnQ2NHgyX3QgdmNyZWF0ZXFfdTY0KHVpbnQ2NF90LCB1aW50NjRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNyZWF0ZXFfdTgpKSkKdWludDh4MTZfdCB2Y3JlYXRlcV91OCh1aW50NjRfdCwgdWludDY0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdHAxNnEpKSkKbXZlX3ByZWQxNl90IHZjdHAxNnEodWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdHAxNnFfbSkpKQptdmVfcHJlZDE2X3QgdmN0cDE2cV9tKHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdHAzMnEpKSkKbXZlX3ByZWQxNl90IHZjdHAzMnEodWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdHAzMnFfbSkpKQptdmVfcHJlZDE2X3QgdmN0cDMycV9tKHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdHA2NHEpKSkKbXZlX3ByZWQxNl90IHZjdHA2NHEodWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdHA2NHFfbSkpKQptdmVfcHJlZDE2X3QgdmN0cDY0cV9tKHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdHA4cSkpKQptdmVfcHJlZDE2X3QgdmN0cDhxKHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3RwOHFfbSkpKQptdmVfcHJlZDE2X3QgdmN0cDhxX20odWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmRkdXBxX21fbl91MTYpKSkKdWludDE2eDhfdCB2ZGR1cHFfbV9uX3UxNih1aW50MTZ4OF90LCB1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkZHVwcV9tX25fdTE2KSkpCnVpbnQxNng4X3QgdmRkdXBxX20odWludDE2eDhfdCwgdWludDMyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZGR1cHFfbV9uX3UzMikpKQp1aW50MzJ4NF90IHZkZHVwcV9tX25fdTMyKHVpbnQzMng0X3QsIHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmRkdXBxX21fbl91MzIpKSkKdWludDMyeDRfdCB2ZGR1cHFfbSh1aW50MzJ4NF90LCB1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkZHVwcV9tX25fdTgpKSkKdWludDh4MTZfdCB2ZGR1cHFfbV9uX3U4KHVpbnQ4eDE2X3QsIHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmRkdXBxX21fbl91OCkpKQp1aW50OHgxNl90IHZkZHVwcV9tKHVpbnQ4eDE2X3QsIHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmRkdXBxX21fd2JfdTE2KSkpCnVpbnQxNng4X3QgdmRkdXBxX21fd2JfdTE2KHVpbnQxNng4X3QsIHVpbnQzMl90ICosIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZGR1cHFfbV93Yl91MTYpKSkKdWludDE2eDhfdCB2ZGR1cHFfbSh1aW50MTZ4OF90LCB1aW50MzJfdCAqLCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmRkdXBxX21fd2JfdTMyKSkpCnVpbnQzMng0X3QgdmRkdXBxX21fd2JfdTMyKHVpbnQzMng0X3QsIHVpbnQzMl90ICosIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZGR1cHFfbV93Yl91MzIpKSkKdWludDMyeDRfdCB2ZGR1cHFfbSh1aW50MzJ4NF90LCB1aW50MzJfdCAqLCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmRkdXBxX21fd2JfdTgpKSkKdWludDh4MTZfdCB2ZGR1cHFfbV93Yl91OCh1aW50OHgxNl90LCB1aW50MzJfdCAqLCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmRkdXBxX21fd2JfdTgpKSkKdWludDh4MTZfdCB2ZGR1cHFfbSh1aW50OHgxNl90LCB1aW50MzJfdCAqLCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmRkdXBxX25fdTE2KSkpCnVpbnQxNng4X3QgdmRkdXBxX25fdTE2KHVpbnQzMl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkZHVwcV9uX3UxNikpKQp1aW50MTZ4OF90IHZkZHVwcV91MTYodWludDMyX3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmRkdXBxX25fdTMyKSkpCnVpbnQzMng0X3QgdmRkdXBxX25fdTMyKHVpbnQzMl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkZHVwcV9uX3UzMikpKQp1aW50MzJ4NF90IHZkZHVwcV91MzIodWludDMyX3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmRkdXBxX25fdTgpKSkKdWludDh4MTZfdCB2ZGR1cHFfbl91OCh1aW50MzJfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZGR1cHFfbl91OCkpKQp1aW50OHgxNl90IHZkZHVwcV91OCh1aW50MzJfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZGR1cHFfd2JfdTE2KSkpCnVpbnQxNng4X3QgdmRkdXBxX3diX3UxNih1aW50MzJfdCAqLCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkZHVwcV93Yl91MTYpKSkKdWludDE2eDhfdCB2ZGR1cHFfdTE2KHVpbnQzMl90ICosIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmRkdXBxX3diX3UzMikpKQp1aW50MzJ4NF90IHZkZHVwcV93Yl91MzIodWludDMyX3QgKiwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZGR1cHFfd2JfdTMyKSkpCnVpbnQzMng0X3QgdmRkdXBxX3UzMih1aW50MzJfdCAqLCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkZHVwcV93Yl91OCkpKQp1aW50OHgxNl90IHZkZHVwcV93Yl91OCh1aW50MzJfdCAqLCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkZHVwcV93Yl91OCkpKQp1aW50OHgxNl90IHZkZHVwcV91OCh1aW50MzJfdCAqLCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkZHVwcV94X25fdTE2KSkpCnVpbnQxNng4X3QgdmRkdXBxX3hfbl91MTYodWludDMyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZGR1cHFfeF9uX3UxNikpKQp1aW50MTZ4OF90IHZkZHVwcV94X3UxNih1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkZHVwcV94X25fdTMyKSkpCnVpbnQzMng0X3QgdmRkdXBxX3hfbl91MzIodWludDMyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZGR1cHFfeF9uX3UzMikpKQp1aW50MzJ4NF90IHZkZHVwcV94X3UzMih1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkZHVwcV94X25fdTgpKSkKdWludDh4MTZfdCB2ZGR1cHFfeF9uX3U4KHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmRkdXBxX3hfbl91OCkpKQp1aW50OHgxNl90IHZkZHVwcV94X3U4KHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmRkdXBxX3hfd2JfdTE2KSkpCnVpbnQxNng4X3QgdmRkdXBxX3hfd2JfdTE2KHVpbnQzMl90ICosIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZGR1cHFfeF93Yl91MTYpKSkKdWludDE2eDhfdCB2ZGR1cHFfeF91MTYodWludDMyX3QgKiwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkZHVwcV94X3diX3UzMikpKQp1aW50MzJ4NF90IHZkZHVwcV94X3diX3UzMih1aW50MzJfdCAqLCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmRkdXBxX3hfd2JfdTMyKSkpCnVpbnQzMng0X3QgdmRkdXBxX3hfdTMyKHVpbnQzMl90ICosIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZGR1cHFfeF93Yl91OCkpKQp1aW50OHgxNl90IHZkZHVwcV94X3diX3U4KHVpbnQzMl90ICosIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZGR1cHFfeF93Yl91OCkpKQp1aW50OHgxNl90IHZkZHVwcV94X3U4KHVpbnQzMl90ICosIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHVwcV9tX25fczE2KSkpCmludDE2eDhfdCB2ZHVwcV9tX25fczE2KGludDE2eDhfdCwgaW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHVwcV9tX25fczE2KSkpCmludDE2eDhfdCB2ZHVwcV9tKGludDE2eDhfdCwgaW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHVwcV9tX25fczMyKSkpCmludDMyeDRfdCB2ZHVwcV9tX25fczMyKGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHVwcV9tX25fczMyKSkpCmludDMyeDRfdCB2ZHVwcV9tKGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHVwcV9tX25fczgpKSkKaW50OHgxNl90IHZkdXBxX21fbl9zOChpbnQ4eDE2X3QsIGludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHVwcV9tX25fczgpKSkKaW50OHgxNl90IHZkdXBxX20oaW50OHgxNl90LCBpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmR1cHFfbV9uX3UxNikpKQp1aW50MTZ4OF90IHZkdXBxX21fbl91MTYodWludDE2eDhfdCwgdWludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmR1cHFfbV9uX3UxNikpKQp1aW50MTZ4OF90IHZkdXBxX20odWludDE2eDhfdCwgdWludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmR1cHFfbV9uX3UzMikpKQp1aW50MzJ4NF90IHZkdXBxX21fbl91MzIodWludDMyeDRfdCwgdWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmR1cHFfbV9uX3UzMikpKQp1aW50MzJ4NF90IHZkdXBxX20odWludDMyeDRfdCwgdWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmR1cHFfbV9uX3U4KSkpCnVpbnQ4eDE2X3QgdmR1cHFfbV9uX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmR1cHFfbV9uX3U4KSkpCnVpbnQ4eDE2X3QgdmR1cHFfbSh1aW50OHgxNl90LCB1aW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkdXBxX25fczE2KSkpCmludDE2eDhfdCB2ZHVwcV9uX3MxNihpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHVwcV9uX3MzMikpKQppbnQzMng0X3QgdmR1cHFfbl9zMzIoaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmR1cHFfbl9zOCkpKQppbnQ4eDE2X3QgdmR1cHFfbl9zOChpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkdXBxX25fdTE2KSkpCnVpbnQxNng4X3QgdmR1cHFfbl91MTYodWludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkdXBxX25fdTMyKSkpCnVpbnQzMng0X3QgdmR1cHFfbl91MzIodWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkdXBxX25fdTgpKSkKdWludDh4MTZfdCB2ZHVwcV9uX3U4KHVpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkdXBxX3hfbl9zMTYpKSkKaW50MTZ4OF90IHZkdXBxX3hfbl9zMTYoaW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHVwcV94X25fczMyKSkpCmludDMyeDRfdCB2ZHVwcV94X25fczMyKGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmR1cHFfeF9uX3M4KSkpCmludDh4MTZfdCB2ZHVwcV94X25fczgoaW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkdXBxX3hfbl91MTYpKSkKdWludDE2eDhfdCB2ZHVwcV94X25fdTE2KHVpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkdXBxX3hfbl91MzIpKSkKdWludDMyeDRfdCB2ZHVwcV94X25fdTMyKHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkdXBxX3hfbl91OCkpKQp1aW50OHgxNl90IHZkdXBxX3hfbl91OCh1aW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zkd2R1cHFfbV9uX3UxNikpKQp1aW50MTZ4OF90IHZkd2R1cHFfbV9uX3UxNih1aW50MTZ4OF90LCB1aW50MzJfdCwgdWludDMyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHdkdXBxX21fbl91MTYpKSkKdWludDE2eDhfdCB2ZHdkdXBxX20odWludDE2eDhfdCwgdWludDMyX3QsIHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmR3ZHVwcV9tX25fdTMyKSkpCnVpbnQzMng0X3QgdmR3ZHVwcV9tX25fdTMyKHVpbnQzMng0X3QsIHVpbnQzMl90LCB1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zkd2R1cHFfbV9uX3UzMikpKQp1aW50MzJ4NF90IHZkd2R1cHFfbSh1aW50MzJ4NF90LCB1aW50MzJfdCwgdWludDMyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHdkdXBxX21fbl91OCkpKQp1aW50OHgxNl90IHZkd2R1cHFfbV9uX3U4KHVpbnQ4eDE2X3QsIHVpbnQzMl90LCB1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zkd2R1cHFfbV9uX3U4KSkpCnVpbnQ4eDE2X3QgdmR3ZHVwcV9tKHVpbnQ4eDE2X3QsIHVpbnQzMl90LCB1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zkd2R1cHFfbV93Yl91MTYpKSkKdWludDE2eDhfdCB2ZHdkdXBxX21fd2JfdTE2KHVpbnQxNng4X3QsIHVpbnQzMl90ICosIHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmR3ZHVwcV9tX3diX3UxNikpKQp1aW50MTZ4OF90IHZkd2R1cHFfbSh1aW50MTZ4OF90LCB1aW50MzJfdCAqLCB1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zkd2R1cHFfbV93Yl91MzIpKSkKdWludDMyeDRfdCB2ZHdkdXBxX21fd2JfdTMyKHVpbnQzMng0X3QsIHVpbnQzMl90ICosIHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmR3ZHVwcV9tX3diX3UzMikpKQp1aW50MzJ4NF90IHZkd2R1cHFfbSh1aW50MzJ4NF90LCB1aW50MzJfdCAqLCB1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zkd2R1cHFfbV93Yl91OCkpKQp1aW50OHgxNl90IHZkd2R1cHFfbV93Yl91OCh1aW50OHgxNl90LCB1aW50MzJfdCAqLCB1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zkd2R1cHFfbV93Yl91OCkpKQp1aW50OHgxNl90IHZkd2R1cHFfbSh1aW50OHgxNl90LCB1aW50MzJfdCAqLCB1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zkd2R1cHFfbl91MTYpKSkKdWludDE2eDhfdCB2ZHdkdXBxX25fdTE2KHVpbnQzMl90LCB1aW50MzJfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHdkdXBxX25fdTE2KSkpCnVpbnQxNng4X3QgdmR3ZHVwcV91MTYodWludDMyX3QsIHVpbnQzMl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zkd2R1cHFfbl91MzIpKSkKdWludDMyeDRfdCB2ZHdkdXBxX25fdTMyKHVpbnQzMl90LCB1aW50MzJfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHdkdXBxX25fdTMyKSkpCnVpbnQzMng0X3QgdmR3ZHVwcV91MzIodWludDMyX3QsIHVpbnQzMl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zkd2R1cHFfbl91OCkpKQp1aW50OHgxNl90IHZkd2R1cHFfbl91OCh1aW50MzJfdCwgdWludDMyX3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmR3ZHVwcV9uX3U4KSkpCnVpbnQ4eDE2X3QgdmR3ZHVwcV91OCh1aW50MzJfdCwgdWludDMyX3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmR3ZHVwcV93Yl91MTYpKSkKdWludDE2eDhfdCB2ZHdkdXBxX3diX3UxNih1aW50MzJfdCAqLCB1aW50MzJfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHdkdXBxX3diX3UxNikpKQp1aW50MTZ4OF90IHZkd2R1cHFfdTE2KHVpbnQzMl90ICosIHVpbnQzMl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zkd2R1cHFfd2JfdTMyKSkpCnVpbnQzMng0X3QgdmR3ZHVwcV93Yl91MzIodWludDMyX3QgKiwgdWludDMyX3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmR3ZHVwcV93Yl91MzIpKSkKdWludDMyeDRfdCB2ZHdkdXBxX3UzMih1aW50MzJfdCAqLCB1aW50MzJfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHdkdXBxX3diX3U4KSkpCnVpbnQ4eDE2X3QgdmR3ZHVwcV93Yl91OCh1aW50MzJfdCAqLCB1aW50MzJfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHdkdXBxX3diX3U4KSkpCnVpbnQ4eDE2X3QgdmR3ZHVwcV91OCh1aW50MzJfdCAqLCB1aW50MzJfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHdkdXBxX3hfbl91MTYpKSkKdWludDE2eDhfdCB2ZHdkdXBxX3hfbl91MTYodWludDMyX3QsIHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmR3ZHVwcV94X25fdTE2KSkpCnVpbnQxNng4X3QgdmR3ZHVwcV94X3UxNih1aW50MzJfdCwgdWludDMyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHdkdXBxX3hfbl91MzIpKSkKdWludDMyeDRfdCB2ZHdkdXBxX3hfbl91MzIodWludDMyX3QsIHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmR3ZHVwcV94X25fdTMyKSkpCnVpbnQzMng0X3QgdmR3ZHVwcV94X3UzMih1aW50MzJfdCwgdWludDMyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHdkdXBxX3hfbl91OCkpKQp1aW50OHgxNl90IHZkd2R1cHFfeF9uX3U4KHVpbnQzMl90LCB1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zkd2R1cHFfeF9uX3U4KSkpCnVpbnQ4eDE2X3QgdmR3ZHVwcV94X3U4KHVpbnQzMl90LCB1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zkd2R1cHFfeF93Yl91MTYpKSkKdWludDE2eDhfdCB2ZHdkdXBxX3hfd2JfdTE2KHVpbnQzMl90ICosIHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmR3ZHVwcV94X3diX3UxNikpKQp1aW50MTZ4OF90IHZkd2R1cHFfeF91MTYodWludDMyX3QgKiwgdWludDMyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHdkdXBxX3hfd2JfdTMyKSkpCnVpbnQzMng0X3QgdmR3ZHVwcV94X3diX3UzMih1aW50MzJfdCAqLCB1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zkd2R1cHFfeF93Yl91MzIpKSkKdWludDMyeDRfdCB2ZHdkdXBxX3hfdTMyKHVpbnQzMl90ICosIHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmR3ZHVwcV94X3diX3U4KSkpCnVpbnQ4eDE2X3QgdmR3ZHVwcV94X3diX3U4KHVpbnQzMl90ICosIHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmR3ZHVwcV94X3diX3U4KSkpCnVpbnQ4eDE2X3QgdmR3ZHVwcV94X3U4KHVpbnQzMl90ICosIHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmVvcnFfbV9zMTYpKSkKaW50MTZ4OF90IHZlb3JxX21fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmVvcnFfbV9zMTYpKSkKaW50MTZ4OF90IHZlb3JxX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZW9ycV9tX3MzMikpKQppbnQzMng0X3QgdmVvcnFfbV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZW9ycV9tX3MzMikpKQppbnQzMng0X3QgdmVvcnFfbShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zlb3JxX21fczgpKSkKaW50OHgxNl90IHZlb3JxX21fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZW9ycV9tX3M4KSkpCmludDh4MTZfdCB2ZW9ycV9tKGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmVvcnFfbV91MTYpKSkKdWludDE2eDhfdCB2ZW9ycV9tX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zlb3JxX21fdTE2KSkpCnVpbnQxNng4X3QgdmVvcnFfbSh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zlb3JxX21fdTMyKSkpCnVpbnQzMng0X3QgdmVvcnFfbV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZW9ycV9tX3UzMikpKQp1aW50MzJ4NF90IHZlb3JxX20odWludDMyeDRfdCwgdWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZW9ycV9tX3U4KSkpCnVpbnQ4eDE2X3QgdmVvcnFfbV91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zlb3JxX21fdTgpKSkKdWludDh4MTZfdCB2ZW9ycV9tKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmVvcnFfczE2KSkpCmludDE2eDhfdCB2ZW9ycV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zlb3JxX3MxNikpKQppbnQxNng4X3QgdmVvcnEoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zlb3JxX3MzMikpKQppbnQzMng0X3QgdmVvcnFfczMyKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZW9ycV9zMzIpKSkKaW50MzJ4NF90IHZlb3JxKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZW9ycV9zOCkpKQppbnQ4eDE2X3QgdmVvcnFfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zlb3JxX3M4KSkpCmludDh4MTZfdCB2ZW9ycShpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmVvcnFfdTE2KSkpCnVpbnQxNng4X3QgdmVvcnFfdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zlb3JxX3UxNikpKQp1aW50MTZ4OF90IHZlb3JxKHVpbnQxNng4X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zlb3JxX3UzMikpKQp1aW50MzJ4NF90IHZlb3JxX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZW9ycV91MzIpKSkKdWludDMyeDRfdCB2ZW9ycSh1aW50MzJ4NF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZW9ycV91OCkpKQp1aW50OHgxNl90IHZlb3JxX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zlb3JxX3U4KSkpCnVpbnQ4eDE2X3QgdmVvcnEodWludDh4MTZfdCwgdWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmVvcnFfeF9zMTYpKSkKaW50MTZ4OF90IHZlb3JxX3hfczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zlb3JxX3hfczE2KSkpCmludDE2eDhfdCB2ZW9ycV94KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zlb3JxX3hfczMyKSkpCmludDMyeDRfdCB2ZW9ycV94X3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZW9ycV94X3MzMikpKQppbnQzMng0X3QgdmVvcnFfeChpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZW9ycV94X3M4KSkpCmludDh4MTZfdCB2ZW9ycV94X3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zlb3JxX3hfczgpKSkKaW50OHgxNl90IHZlb3JxX3goaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmVvcnFfeF91MTYpKSkKdWludDE2eDhfdCB2ZW9ycV94X3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zlb3JxX3hfdTE2KSkpCnVpbnQxNng4X3QgdmVvcnFfeCh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zlb3JxX3hfdTMyKSkpCnVpbnQzMng0X3QgdmVvcnFfeF91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZW9ycV94X3UzMikpKQp1aW50MzJ4NF90IHZlb3JxX3godWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZW9ycV94X3U4KSkpCnVpbnQ4eDE2X3QgdmVvcnFfeF91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zlb3JxX3hfdTgpKSkKdWludDh4MTZfdCB2ZW9ycV94KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmdldHFfbGFuZV9zMTYpKSkKaW50MTZfdCB2Z2V0cV9sYW5lX3MxNihpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmdldHFfbGFuZV9zMTYpKSkKaW50MTZfdCB2Z2V0cV9sYW5lKGludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Z2V0cV9sYW5lX3MzMikpKQppbnQzMl90IHZnZXRxX2xhbmVfczMyKGludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Z2V0cV9sYW5lX3MzMikpKQppbnQzMl90IHZnZXRxX2xhbmUoaW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZnZXRxX2xhbmVfczY0KSkpCmludDY0X3QgdmdldHFfbGFuZV9zNjQoaW50NjR4Ml90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZnZXRxX2xhbmVfczY0KSkpCmludDY0X3QgdmdldHFfbGFuZShpbnQ2NHgyX3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmdldHFfbGFuZV9zOCkpKQppbnQ4X3QgdmdldHFfbGFuZV9zOChpbnQ4eDE2X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmdldHFfbGFuZV9zOCkpKQppbnQ4X3QgdmdldHFfbGFuZShpbnQ4eDE2X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmdldHFfbGFuZV91MTYpKSkKdWludDE2X3QgdmdldHFfbGFuZV91MTYodWludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Z2V0cV9sYW5lX3UxNikpKQp1aW50MTZfdCB2Z2V0cV9sYW5lKHVpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmdldHFfbGFuZV91MzIpKSkKdWludDMyX3QgdmdldHFfbGFuZV91MzIodWludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Z2V0cV9sYW5lX3UzMikpKQp1aW50MzJfdCB2Z2V0cV9sYW5lKHVpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmdldHFfbGFuZV91NjQpKSkKdWludDY0X3QgdmdldHFfbGFuZV91NjQodWludDY0eDJfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Z2V0cV9sYW5lX3U2NCkpKQp1aW50NjRfdCB2Z2V0cV9sYW5lKHVpbnQ2NHgyX3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmdldHFfbGFuZV91OCkpKQp1aW50OF90IHZnZXRxX2xhbmVfdTgodWludDh4MTZfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Z2V0cV9sYW5lX3U4KSkpCnVpbnQ4X3QgdmdldHFfbGFuZSh1aW50OHgxNl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV9tX25fczE2KSkpCmludDE2eDhfdCB2aGFkZHFfbV9uX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGFkZHFfbV9uX3MxNikpKQppbnQxNng4X3QgdmhhZGRxX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX21fbl9zMzIpKSkKaW50MzJ4NF90IHZoYWRkcV9tX25fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV9tX25fczMyKSkpCmludDMyeDRfdCB2aGFkZHFfbShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGFkZHFfbV9uX3M4KSkpCmludDh4MTZfdCB2aGFkZHFfbV9uX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX21fbl9zOCkpKQppbnQ4eDE2X3QgdmhhZGRxX20oaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGFkZHFfbV9uX3UxNikpKQp1aW50MTZ4OF90IHZoYWRkcV9tX25fdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV9tX25fdTE2KSkpCnVpbnQxNng4X3QgdmhhZGRxX20odWludDE2eDhfdCwgdWludDE2eDhfdCwgdWludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX21fbl91MzIpKSkKdWludDMyeDRfdCB2aGFkZHFfbV9uX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGFkZHFfbV9uX3UzMikpKQp1aW50MzJ4NF90IHZoYWRkcV9tKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV9tX25fdTgpKSkKdWludDh4MTZfdCB2aGFkZHFfbV9uX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX21fbl91OCkpKQp1aW50OHgxNl90IHZoYWRkcV9tKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX21fczE2KSkpCmludDE2eDhfdCB2aGFkZHFfbV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGFkZHFfbV9zMTYpKSkKaW50MTZ4OF90IHZoYWRkcV9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX21fczMyKSkpCmludDMyeDRfdCB2aGFkZHFfbV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGFkZHFfbV9zMzIpKSkKaW50MzJ4NF90IHZoYWRkcV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX21fczgpKSkKaW50OHgxNl90IHZoYWRkcV9tX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX21fczgpKSkKaW50OHgxNl90IHZoYWRkcV9tKGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX21fdTE2KSkpCnVpbnQxNng4X3QgdmhhZGRxX21fdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX21fdTE2KSkpCnVpbnQxNng4X3QgdmhhZGRxX20odWludDE2eDhfdCwgdWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGFkZHFfbV91MzIpKSkKdWludDMyeDRfdCB2aGFkZHFfbV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGFkZHFfbV91MzIpKSkKdWludDMyeDRfdCB2aGFkZHFfbSh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV9tX3U4KSkpCnVpbnQ4eDE2X3QgdmhhZGRxX21fdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGFkZHFfbV91OCkpKQp1aW50OHgxNl90IHZoYWRkcV9tKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX25fczE2KSkpCmludDE2eDhfdCB2aGFkZHFfbl9zMTYoaW50MTZ4OF90LCBpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGFkZHFfbl9zMTYpKSkKaW50MTZ4OF90IHZoYWRkcShpbnQxNng4X3QsIGludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV9uX3MzMikpKQppbnQzMng0X3QgdmhhZGRxX25fczMyKGludDMyeDRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX25fczMyKSkpCmludDMyeDRfdCB2aGFkZHEoaW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGFkZHFfbl9zOCkpKQppbnQ4eDE2X3QgdmhhZGRxX25fczgoaW50OHgxNl90LCBpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV9uX3M4KSkpCmludDh4MTZfdCB2aGFkZHEoaW50OHgxNl90LCBpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV9uX3UxNikpKQp1aW50MTZ4OF90IHZoYWRkcV9uX3UxNih1aW50MTZ4OF90LCB1aW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX25fdTE2KSkpCnVpbnQxNng4X3QgdmhhZGRxKHVpbnQxNng4X3QsIHVpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGFkZHFfbl91MzIpKSkKdWludDMyeDRfdCB2aGFkZHFfbl91MzIodWludDMyeDRfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV9uX3UzMikpKQp1aW50MzJ4NF90IHZoYWRkcSh1aW50MzJ4NF90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX25fdTgpKSkKdWludDh4MTZfdCB2aGFkZHFfbl91OCh1aW50OHgxNl90LCB1aW50OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGFkZHFfbl91OCkpKQp1aW50OHgxNl90IHZoYWRkcSh1aW50OHgxNl90LCB1aW50OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGFkZHFfczE2KSkpCmludDE2eDhfdCB2aGFkZHFfczE2KGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGFkZHFfczE2KSkpCmludDE2eDhfdCB2aGFkZHEoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV9zMzIpKSkKaW50MzJ4NF90IHZoYWRkcV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV9zMzIpKSkKaW50MzJ4NF90IHZoYWRkcShpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX3M4KSkpCmludDh4MTZfdCB2aGFkZHFfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV9zOCkpKQppbnQ4eDE2X3QgdmhhZGRxKGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGFkZHFfdTE2KSkpCnVpbnQxNng4X3QgdmhhZGRxX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGFkZHFfdTE2KSkpCnVpbnQxNng4X3QgdmhhZGRxKHVpbnQxNng4X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV91MzIpKSkKdWludDMyeDRfdCB2aGFkZHFfdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV91MzIpKSkKdWludDMyeDRfdCB2aGFkZHEodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX3U4KSkpCnVpbnQ4eDE2X3QgdmhhZGRxX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV91OCkpKQp1aW50OHgxNl90IHZoYWRkcSh1aW50OHgxNl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGFkZHFfeF9uX3MxNikpKQppbnQxNng4X3QgdmhhZGRxX3hfbl9zMTYoaW50MTZ4OF90LCBpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV94X25fczE2KSkpCmludDE2eDhfdCB2aGFkZHFfeChpbnQxNng4X3QsIGludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX3hfbl9zMzIpKSkKaW50MzJ4NF90IHZoYWRkcV94X25fczMyKGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGFkZHFfeF9uX3MzMikpKQppbnQzMng0X3QgdmhhZGRxX3goaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV94X25fczgpKSkKaW50OHgxNl90IHZoYWRkcV94X25fczgoaW50OHgxNl90LCBpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX3hfbl9zOCkpKQppbnQ4eDE2X3QgdmhhZGRxX3goaW50OHgxNl90LCBpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX3hfbl91MTYpKSkKdWludDE2eDhfdCB2aGFkZHFfeF9uX3UxNih1aW50MTZ4OF90LCB1aW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGFkZHFfeF9uX3UxNikpKQp1aW50MTZ4OF90IHZoYWRkcV94KHVpbnQxNng4X3QsIHVpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV94X25fdTMyKSkpCnVpbnQzMng0X3QgdmhhZGRxX3hfbl91MzIodWludDMyeDRfdCwgdWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX3hfbl91MzIpKSkKdWludDMyeDRfdCB2aGFkZHFfeCh1aW50MzJ4NF90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGFkZHFfeF9uX3U4KSkpCnVpbnQ4eDE2X3QgdmhhZGRxX3hfbl91OCh1aW50OHgxNl90LCB1aW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV94X25fdTgpKSkKdWludDh4MTZfdCB2aGFkZHFfeCh1aW50OHgxNl90LCB1aW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV94X3MxNikpKQppbnQxNng4X3QgdmhhZGRxX3hfczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV94X3MxNikpKQppbnQxNng4X3QgdmhhZGRxX3goaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX3hfczMyKSkpCmludDMyeDRfdCB2aGFkZHFfeF9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX3hfczMyKSkpCmludDMyeDRfdCB2aGFkZHFfeChpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGFkZHFfeF9zOCkpKQppbnQ4eDE2X3QgdmhhZGRxX3hfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX3hfczgpKSkKaW50OHgxNl90IHZoYWRkcV94KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV94X3UxNikpKQp1aW50MTZ4OF90IHZoYWRkcV94X3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoYWRkcV94X3UxNikpKQp1aW50MTZ4OF90IHZoYWRkcV94KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX3hfdTMyKSkpCnVpbnQzMng0X3QgdmhhZGRxX3hfdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX3hfdTMyKSkpCnVpbnQzMng0X3QgdmhhZGRxX3godWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGFkZHFfeF91OCkpKQp1aW50OHgxNl90IHZoYWRkcV94X3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhhZGRxX3hfdTgpKSkKdWludDh4MTZfdCB2aGFkZHFfeCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoY2FkZHFfcm90MjcwX21fczE2KSkpCmludDE2eDhfdCB2aGNhZGRxX3JvdDI3MF9tX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoY2FkZHFfcm90MjcwX21fczE2KSkpCmludDE2eDhfdCB2aGNhZGRxX3JvdDI3MF9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhjYWRkcV9yb3QyNzBfbV9zMzIpKSkKaW50MzJ4NF90IHZoY2FkZHFfcm90MjcwX21fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhjYWRkcV9yb3QyNzBfbV9zMzIpKSkKaW50MzJ4NF90IHZoY2FkZHFfcm90MjcwX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGNhZGRxX3JvdDI3MF9tX3M4KSkpCmludDh4MTZfdCB2aGNhZGRxX3JvdDI3MF9tX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhjYWRkcV9yb3QyNzBfbV9zOCkpKQppbnQ4eDE2X3QgdmhjYWRkcV9yb3QyNzBfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoY2FkZHFfcm90MjcwX3MxNikpKQppbnQxNng4X3QgdmhjYWRkcV9yb3QyNzBfczE2KGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGNhZGRxX3JvdDI3MF9zMTYpKSkKaW50MTZ4OF90IHZoY2FkZHFfcm90MjcwKGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGNhZGRxX3JvdDI3MF9zMzIpKSkKaW50MzJ4NF90IHZoY2FkZHFfcm90MjcwX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhjYWRkcV9yb3QyNzBfczMyKSkpCmludDMyeDRfdCB2aGNhZGRxX3JvdDI3MChpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhjYWRkcV9yb3QyNzBfczgpKSkKaW50OHgxNl90IHZoY2FkZHFfcm90MjcwX3M4KGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGNhZGRxX3JvdDI3MF9zOCkpKQppbnQ4eDE2X3QgdmhjYWRkcV9yb3QyNzAoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoY2FkZHFfcm90MjcwX3hfczE2KSkpCmludDE2eDhfdCB2aGNhZGRxX3JvdDI3MF94X3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGNhZGRxX3JvdDI3MF94X3MxNikpKQppbnQxNng4X3QgdmhjYWRkcV9yb3QyNzBfeChpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGNhZGRxX3JvdDI3MF94X3MzMikpKQppbnQzMng0X3QgdmhjYWRkcV9yb3QyNzBfeF9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhjYWRkcV9yb3QyNzBfeF9zMzIpKSkKaW50MzJ4NF90IHZoY2FkZHFfcm90MjcwX3goaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhjYWRkcV9yb3QyNzBfeF9zOCkpKQppbnQ4eDE2X3QgdmhjYWRkcV9yb3QyNzBfeF9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGNhZGRxX3JvdDI3MF94X3M4KSkpCmludDh4MTZfdCB2aGNhZGRxX3JvdDI3MF94KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoY2FkZHFfcm90OTBfbV9zMTYpKSkKaW50MTZ4OF90IHZoY2FkZHFfcm90OTBfbV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGNhZGRxX3JvdDkwX21fczE2KSkpCmludDE2eDhfdCB2aGNhZGRxX3JvdDkwX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGNhZGRxX3JvdDkwX21fczMyKSkpCmludDMyeDRfdCB2aGNhZGRxX3JvdDkwX21fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhjYWRkcV9yb3Q5MF9tX3MzMikpKQppbnQzMng0X3QgdmhjYWRkcV9yb3Q5MF9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhjYWRkcV9yb3Q5MF9tX3M4KSkpCmludDh4MTZfdCB2aGNhZGRxX3JvdDkwX21fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aGNhZGRxX3JvdDkwX21fczgpKSkKaW50OHgxNl90IHZoY2FkZHFfcm90OTBfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoY2FkZHFfcm90OTBfczE2KSkpCmludDE2eDhfdCB2aGNhZGRxX3JvdDkwX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhjYWRkcV9yb3Q5MF9zMTYpKSkKaW50MTZ4OF90IHZoY2FkZHFfcm90OTAoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoY2FkZHFfcm90OTBfczMyKSkpCmludDMyeDRfdCB2aGNhZGRxX3JvdDkwX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhjYWRkcV9yb3Q5MF9zMzIpKSkKaW50MzJ4NF90IHZoY2FkZHFfcm90OTAoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoY2FkZHFfcm90OTBfczgpKSkKaW50OHgxNl90IHZoY2FkZHFfcm90OTBfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoY2FkZHFfcm90OTBfczgpKSkKaW50OHgxNl90IHZoY2FkZHFfcm90OTAoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoY2FkZHFfcm90OTBfeF9zMTYpKSkKaW50MTZ4OF90IHZoY2FkZHFfcm90OTBfeF9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhjYWRkcV9yb3Q5MF94X3MxNikpKQppbnQxNng4X3QgdmhjYWRkcV9yb3Q5MF94KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoY2FkZHFfcm90OTBfeF9zMzIpKSkKaW50MzJ4NF90IHZoY2FkZHFfcm90OTBfeF9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhjYWRkcV9yb3Q5MF94X3MzMikpKQppbnQzMng0X3QgdmhjYWRkcV9yb3Q5MF94KGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoY2FkZHFfcm90OTBfeF9zOCkpKQppbnQ4eDE2X3QgdmhjYWRkcV9yb3Q5MF94X3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZoY2FkZHFfcm90OTBfeF9zOCkpKQppbnQ4eDE2X3QgdmhjYWRkcV9yb3Q5MF94KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV9tX25fczE2KSkpCmludDE2eDhfdCB2aHN1YnFfbV9uX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aHN1YnFfbV9uX3MxNikpKQppbnQxNng4X3QgdmhzdWJxX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX21fbl9zMzIpKSkKaW50MzJ4NF90IHZoc3VicV9tX25fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV9tX25fczMyKSkpCmludDMyeDRfdCB2aHN1YnFfbShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aHN1YnFfbV9uX3M4KSkpCmludDh4MTZfdCB2aHN1YnFfbV9uX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX21fbl9zOCkpKQppbnQ4eDE2X3QgdmhzdWJxX20oaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aHN1YnFfbV9uX3UxNikpKQp1aW50MTZ4OF90IHZoc3VicV9tX25fdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV9tX25fdTE2KSkpCnVpbnQxNng4X3QgdmhzdWJxX20odWludDE2eDhfdCwgdWludDE2eDhfdCwgdWludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX21fbl91MzIpKSkKdWludDMyeDRfdCB2aHN1YnFfbV9uX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aHN1YnFfbV9uX3UzMikpKQp1aW50MzJ4NF90IHZoc3VicV9tKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV9tX25fdTgpKSkKdWludDh4MTZfdCB2aHN1YnFfbV9uX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX21fbl91OCkpKQp1aW50OHgxNl90IHZoc3VicV9tKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX21fczE2KSkpCmludDE2eDhfdCB2aHN1YnFfbV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aHN1YnFfbV9zMTYpKSkKaW50MTZ4OF90IHZoc3VicV9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX21fczMyKSkpCmludDMyeDRfdCB2aHN1YnFfbV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aHN1YnFfbV9zMzIpKSkKaW50MzJ4NF90IHZoc3VicV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX21fczgpKSkKaW50OHgxNl90IHZoc3VicV9tX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX21fczgpKSkKaW50OHgxNl90IHZoc3VicV9tKGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX21fdTE2KSkpCnVpbnQxNng4X3QgdmhzdWJxX21fdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX21fdTE2KSkpCnVpbnQxNng4X3QgdmhzdWJxX20odWludDE2eDhfdCwgdWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aHN1YnFfbV91MzIpKSkKdWludDMyeDRfdCB2aHN1YnFfbV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aHN1YnFfbV91MzIpKSkKdWludDMyeDRfdCB2aHN1YnFfbSh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV9tX3U4KSkpCnVpbnQ4eDE2X3QgdmhzdWJxX21fdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aHN1YnFfbV91OCkpKQp1aW50OHgxNl90IHZoc3VicV9tKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX25fczE2KSkpCmludDE2eDhfdCB2aHN1YnFfbl9zMTYoaW50MTZ4OF90LCBpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aHN1YnFfbl9zMTYpKSkKaW50MTZ4OF90IHZoc3VicShpbnQxNng4X3QsIGludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV9uX3MzMikpKQppbnQzMng0X3QgdmhzdWJxX25fczMyKGludDMyeDRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX25fczMyKSkpCmludDMyeDRfdCB2aHN1YnEoaW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aHN1YnFfbl9zOCkpKQppbnQ4eDE2X3QgdmhzdWJxX25fczgoaW50OHgxNl90LCBpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV9uX3M4KSkpCmludDh4MTZfdCB2aHN1YnEoaW50OHgxNl90LCBpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV9uX3UxNikpKQp1aW50MTZ4OF90IHZoc3VicV9uX3UxNih1aW50MTZ4OF90LCB1aW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX25fdTE2KSkpCnVpbnQxNng4X3QgdmhzdWJxKHVpbnQxNng4X3QsIHVpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aHN1YnFfbl91MzIpKSkKdWludDMyeDRfdCB2aHN1YnFfbl91MzIodWludDMyeDRfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV9uX3UzMikpKQp1aW50MzJ4NF90IHZoc3VicSh1aW50MzJ4NF90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX25fdTgpKSkKdWludDh4MTZfdCB2aHN1YnFfbl91OCh1aW50OHgxNl90LCB1aW50OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aHN1YnFfbl91OCkpKQp1aW50OHgxNl90IHZoc3VicSh1aW50OHgxNl90LCB1aW50OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aHN1YnFfczE2KSkpCmludDE2eDhfdCB2aHN1YnFfczE2KGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aHN1YnFfczE2KSkpCmludDE2eDhfdCB2aHN1YnEoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV9zMzIpKSkKaW50MzJ4NF90IHZoc3VicV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV9zMzIpKSkKaW50MzJ4NF90IHZoc3VicShpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX3M4KSkpCmludDh4MTZfdCB2aHN1YnFfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV9zOCkpKQppbnQ4eDE2X3QgdmhzdWJxKGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aHN1YnFfdTE2KSkpCnVpbnQxNng4X3QgdmhzdWJxX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aHN1YnFfdTE2KSkpCnVpbnQxNng4X3QgdmhzdWJxKHVpbnQxNng4X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV91MzIpKSkKdWludDMyeDRfdCB2aHN1YnFfdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV91MzIpKSkKdWludDMyeDRfdCB2aHN1YnEodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX3U4KSkpCnVpbnQ4eDE2X3QgdmhzdWJxX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV91OCkpKQp1aW50OHgxNl90IHZoc3VicSh1aW50OHgxNl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aHN1YnFfeF9uX3MxNikpKQppbnQxNng4X3QgdmhzdWJxX3hfbl9zMTYoaW50MTZ4OF90LCBpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV94X25fczE2KSkpCmludDE2eDhfdCB2aHN1YnFfeChpbnQxNng4X3QsIGludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX3hfbl9zMzIpKSkKaW50MzJ4NF90IHZoc3VicV94X25fczMyKGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aHN1YnFfeF9uX3MzMikpKQppbnQzMng0X3QgdmhzdWJxX3goaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV94X25fczgpKSkKaW50OHgxNl90IHZoc3VicV94X25fczgoaW50OHgxNl90LCBpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX3hfbl9zOCkpKQppbnQ4eDE2X3QgdmhzdWJxX3goaW50OHgxNl90LCBpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX3hfbl91MTYpKSkKdWludDE2eDhfdCB2aHN1YnFfeF9uX3UxNih1aW50MTZ4OF90LCB1aW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aHN1YnFfeF9uX3UxNikpKQp1aW50MTZ4OF90IHZoc3VicV94KHVpbnQxNng4X3QsIHVpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV94X25fdTMyKSkpCnVpbnQzMng0X3QgdmhzdWJxX3hfbl91MzIodWludDMyeDRfdCwgdWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX3hfbl91MzIpKSkKdWludDMyeDRfdCB2aHN1YnFfeCh1aW50MzJ4NF90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aHN1YnFfeF9uX3U4KSkpCnVpbnQ4eDE2X3QgdmhzdWJxX3hfbl91OCh1aW50OHgxNl90LCB1aW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV94X25fdTgpKSkKdWludDh4MTZfdCB2aHN1YnFfeCh1aW50OHgxNl90LCB1aW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV94X3MxNikpKQppbnQxNng4X3QgdmhzdWJxX3hfczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV94X3MxNikpKQppbnQxNng4X3QgdmhzdWJxX3goaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX3hfczMyKSkpCmludDMyeDRfdCB2aHN1YnFfeF9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX3hfczMyKSkpCmludDMyeDRfdCB2aHN1YnFfeChpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aHN1YnFfeF9zOCkpKQppbnQ4eDE2X3QgdmhzdWJxX3hfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX3hfczgpKSkKaW50OHgxNl90IHZoc3VicV94KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV94X3UxNikpKQp1aW50MTZ4OF90IHZoc3VicV94X3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zoc3VicV94X3UxNikpKQp1aW50MTZ4OF90IHZoc3VicV94KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX3hfdTMyKSkpCnVpbnQzMng0X3QgdmhzdWJxX3hfdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX3hfdTMyKSkpCnVpbnQzMng0X3QgdmhzdWJxX3godWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aHN1YnFfeF91OCkpKQp1aW50OHgxNl90IHZoc3VicV94X3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmhzdWJxX3hfdTgpKSkKdWludDh4MTZfdCB2aHN1YnFfeCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZpZHVwcV9tX25fdTE2KSkpCnVpbnQxNng4X3QgdmlkdXBxX21fbl91MTYodWludDE2eDhfdCwgdWludDMyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aWR1cHFfbV9uX3UxNikpKQp1aW50MTZ4OF90IHZpZHVwcV9tKHVpbnQxNng4X3QsIHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmlkdXBxX21fbl91MzIpKSkKdWludDMyeDRfdCB2aWR1cHFfbV9uX3UzMih1aW50MzJ4NF90LCB1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZpZHVwcV9tX25fdTMyKSkpCnVpbnQzMng0X3QgdmlkdXBxX20odWludDMyeDRfdCwgdWludDMyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aWR1cHFfbV9uX3U4KSkpCnVpbnQ4eDE2X3QgdmlkdXBxX21fbl91OCh1aW50OHgxNl90LCB1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZpZHVwcV9tX25fdTgpKSkKdWludDh4MTZfdCB2aWR1cHFfbSh1aW50OHgxNl90LCB1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZpZHVwcV9tX3diX3UxNikpKQp1aW50MTZ4OF90IHZpZHVwcV9tX3diX3UxNih1aW50MTZ4OF90LCB1aW50MzJfdCAqLCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmlkdXBxX21fd2JfdTE2KSkpCnVpbnQxNng4X3QgdmlkdXBxX20odWludDE2eDhfdCwgdWludDMyX3QgKiwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZpZHVwcV9tX3diX3UzMikpKQp1aW50MzJ4NF90IHZpZHVwcV9tX3diX3UzMih1aW50MzJ4NF90LCB1aW50MzJfdCAqLCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmlkdXBxX21fd2JfdTMyKSkpCnVpbnQzMng0X3QgdmlkdXBxX20odWludDMyeDRfdCwgdWludDMyX3QgKiwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZpZHVwcV9tX3diX3U4KSkpCnVpbnQ4eDE2X3QgdmlkdXBxX21fd2JfdTgodWludDh4MTZfdCwgdWludDMyX3QgKiwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZpZHVwcV9tX3diX3U4KSkpCnVpbnQ4eDE2X3QgdmlkdXBxX20odWludDh4MTZfdCwgdWludDMyX3QgKiwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZpZHVwcV9uX3UxNikpKQp1aW50MTZ4OF90IHZpZHVwcV9uX3UxNih1aW50MzJfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aWR1cHFfbl91MTYpKSkKdWludDE2eDhfdCB2aWR1cHFfdTE2KHVpbnQzMl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZpZHVwcV9uX3UzMikpKQp1aW50MzJ4NF90IHZpZHVwcV9uX3UzMih1aW50MzJfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aWR1cHFfbl91MzIpKSkKdWludDMyeDRfdCB2aWR1cHFfdTMyKHVpbnQzMl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZpZHVwcV9uX3U4KSkpCnVpbnQ4eDE2X3QgdmlkdXBxX25fdTgodWludDMyX3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmlkdXBxX25fdTgpKSkKdWludDh4MTZfdCB2aWR1cHFfdTgodWludDMyX3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmlkdXBxX3diX3UxNikpKQp1aW50MTZ4OF90IHZpZHVwcV93Yl91MTYodWludDMyX3QgKiwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aWR1cHFfd2JfdTE2KSkpCnVpbnQxNng4X3QgdmlkdXBxX3UxNih1aW50MzJfdCAqLCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZpZHVwcV93Yl91MzIpKSkKdWludDMyeDRfdCB2aWR1cHFfd2JfdTMyKHVpbnQzMl90ICosIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmlkdXBxX3diX3UzMikpKQp1aW50MzJ4NF90IHZpZHVwcV91MzIodWludDMyX3QgKiwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aWR1cHFfd2JfdTgpKSkKdWludDh4MTZfdCB2aWR1cHFfd2JfdTgodWludDMyX3QgKiwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aWR1cHFfd2JfdTgpKSkKdWludDh4MTZfdCB2aWR1cHFfdTgodWludDMyX3QgKiwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aWR1cHFfeF9uX3UxNikpKQp1aW50MTZ4OF90IHZpZHVwcV94X25fdTE2KHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmlkdXBxX3hfbl91MTYpKSkKdWludDE2eDhfdCB2aWR1cHFfeF91MTYodWludDMyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aWR1cHFfeF9uX3UzMikpKQp1aW50MzJ4NF90IHZpZHVwcV94X25fdTMyKHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmlkdXBxX3hfbl91MzIpKSkKdWludDMyeDRfdCB2aWR1cHFfeF91MzIodWludDMyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aWR1cHFfeF9uX3U4KSkpCnVpbnQ4eDE2X3QgdmlkdXBxX3hfbl91OCh1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZpZHVwcV94X25fdTgpKSkKdWludDh4MTZfdCB2aWR1cHFfeF91OCh1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZpZHVwcV94X3diX3UxNikpKQp1aW50MTZ4OF90IHZpZHVwcV94X3diX3UxNih1aW50MzJfdCAqLCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmlkdXBxX3hfd2JfdTE2KSkpCnVpbnQxNng4X3QgdmlkdXBxX3hfdTE2KHVpbnQzMl90ICosIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aWR1cHFfeF93Yl91MzIpKSkKdWludDMyeDRfdCB2aWR1cHFfeF93Yl91MzIodWludDMyX3QgKiwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZpZHVwcV94X3diX3UzMikpKQp1aW50MzJ4NF90IHZpZHVwcV94X3UzMih1aW50MzJfdCAqLCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmlkdXBxX3hfd2JfdTgpKSkKdWludDh4MTZfdCB2aWR1cHFfeF93Yl91OCh1aW50MzJfdCAqLCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmlkdXBxX3hfd2JfdTgpKSkKdWludDh4MTZfdCB2aWR1cHFfeF91OCh1aW50MzJfdCAqLCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdml3ZHVwcV9tX25fdTE2KSkpCnVpbnQxNng4X3Qgdml3ZHVwcV9tX25fdTE2KHVpbnQxNng4X3QsIHVpbnQzMl90LCB1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zpd2R1cHFfbV9uX3UxNikpKQp1aW50MTZ4OF90IHZpd2R1cHFfbSh1aW50MTZ4OF90LCB1aW50MzJfdCwgdWludDMyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aXdkdXBxX21fbl91MzIpKSkKdWludDMyeDRfdCB2aXdkdXBxX21fbl91MzIodWludDMyeDRfdCwgdWludDMyX3QsIHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdml3ZHVwcV9tX25fdTMyKSkpCnVpbnQzMng0X3Qgdml3ZHVwcV9tKHVpbnQzMng0X3QsIHVpbnQzMl90LCB1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zpd2R1cHFfbV9uX3U4KSkpCnVpbnQ4eDE2X3Qgdml3ZHVwcV9tX25fdTgodWludDh4MTZfdCwgdWludDMyX3QsIHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdml3ZHVwcV9tX25fdTgpKSkKdWludDh4MTZfdCB2aXdkdXBxX20odWludDh4MTZfdCwgdWludDMyX3QsIHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdml3ZHVwcV9tX3diX3UxNikpKQp1aW50MTZ4OF90IHZpd2R1cHFfbV93Yl91MTYodWludDE2eDhfdCwgdWludDMyX3QgKiwgdWludDMyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aXdkdXBxX21fd2JfdTE2KSkpCnVpbnQxNng4X3Qgdml3ZHVwcV9tKHVpbnQxNng4X3QsIHVpbnQzMl90ICosIHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdml3ZHVwcV9tX3diX3UzMikpKQp1aW50MzJ4NF90IHZpd2R1cHFfbV93Yl91MzIodWludDMyeDRfdCwgdWludDMyX3QgKiwgdWludDMyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aXdkdXBxX21fd2JfdTMyKSkpCnVpbnQzMng0X3Qgdml3ZHVwcV9tKHVpbnQzMng0X3QsIHVpbnQzMl90ICosIHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdml3ZHVwcV9tX3diX3U4KSkpCnVpbnQ4eDE2X3Qgdml3ZHVwcV9tX3diX3U4KHVpbnQ4eDE2X3QsIHVpbnQzMl90ICosIHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdml3ZHVwcV9tX3diX3U4KSkpCnVpbnQ4eDE2X3Qgdml3ZHVwcV9tKHVpbnQ4eDE2X3QsIHVpbnQzMl90ICosIHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdml3ZHVwcV9uX3UxNikpKQp1aW50MTZ4OF90IHZpd2R1cHFfbl91MTYodWludDMyX3QsIHVpbnQzMl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zpd2R1cHFfbl91MTYpKSkKdWludDE2eDhfdCB2aXdkdXBxX3UxNih1aW50MzJfdCwgdWludDMyX3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdml3ZHVwcV9uX3UzMikpKQp1aW50MzJ4NF90IHZpd2R1cHFfbl91MzIodWludDMyX3QsIHVpbnQzMl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zpd2R1cHFfbl91MzIpKSkKdWludDMyeDRfdCB2aXdkdXBxX3UzMih1aW50MzJfdCwgdWludDMyX3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdml3ZHVwcV9uX3U4KSkpCnVpbnQ4eDE2X3Qgdml3ZHVwcV9uX3U4KHVpbnQzMl90LCB1aW50MzJfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aXdkdXBxX25fdTgpKSkKdWludDh4MTZfdCB2aXdkdXBxX3U4KHVpbnQzMl90LCB1aW50MzJfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aXdkdXBxX3diX3UxNikpKQp1aW50MTZ4OF90IHZpd2R1cHFfd2JfdTE2KHVpbnQzMl90ICosIHVpbnQzMl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zpd2R1cHFfd2JfdTE2KSkpCnVpbnQxNng4X3Qgdml3ZHVwcV91MTYodWludDMyX3QgKiwgdWludDMyX3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdml3ZHVwcV93Yl91MzIpKSkKdWludDMyeDRfdCB2aXdkdXBxX3diX3UzMih1aW50MzJfdCAqLCB1aW50MzJfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aXdkdXBxX3diX3UzMikpKQp1aW50MzJ4NF90IHZpd2R1cHFfdTMyKHVpbnQzMl90ICosIHVpbnQzMl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zpd2R1cHFfd2JfdTgpKSkKdWludDh4MTZfdCB2aXdkdXBxX3diX3U4KHVpbnQzMl90ICosIHVpbnQzMl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zpd2R1cHFfd2JfdTgpKSkKdWludDh4MTZfdCB2aXdkdXBxX3U4KHVpbnQzMl90ICosIHVpbnQzMl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zpd2R1cHFfeF9uX3UxNikpKQp1aW50MTZ4OF90IHZpd2R1cHFfeF9uX3UxNih1aW50MzJfdCwgdWludDMyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aXdkdXBxX3hfbl91MTYpKSkKdWludDE2eDhfdCB2aXdkdXBxX3hfdTE2KHVpbnQzMl90LCB1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zpd2R1cHFfeF9uX3UzMikpKQp1aW50MzJ4NF90IHZpd2R1cHFfeF9uX3UzMih1aW50MzJfdCwgdWludDMyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aXdkdXBxX3hfbl91MzIpKSkKdWludDMyeDRfdCB2aXdkdXBxX3hfdTMyKHVpbnQzMl90LCB1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zpd2R1cHFfeF9uX3U4KSkpCnVpbnQ4eDE2X3Qgdml3ZHVwcV94X25fdTgodWludDMyX3QsIHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdml3ZHVwcV94X25fdTgpKSkKdWludDh4MTZfdCB2aXdkdXBxX3hfdTgodWludDMyX3QsIHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdml3ZHVwcV94X3diX3UxNikpKQp1aW50MTZ4OF90IHZpd2R1cHFfeF93Yl91MTYodWludDMyX3QgKiwgdWludDMyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aXdkdXBxX3hfd2JfdTE2KSkpCnVpbnQxNng4X3Qgdml3ZHVwcV94X3UxNih1aW50MzJfdCAqLCB1aW50MzJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zpd2R1cHFfeF93Yl91MzIpKSkKdWludDMyeDRfdCB2aXdkdXBxX3hfd2JfdTMyKHVpbnQzMl90ICosIHVpbnQzMl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdml3ZHVwcV94X3diX3UzMikpKQp1aW50MzJ4NF90IHZpd2R1cHFfeF91MzIodWludDMyX3QgKiwgdWludDMyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aXdkdXBxX3hfd2JfdTgpKSkKdWludDh4MTZfdCB2aXdkdXBxX3hfd2JfdTgodWludDMyX3QgKiwgdWludDMyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92aXdkdXBxX3hfd2JfdTgpKSkKdWludDh4MTZfdCB2aXdkdXBxX3hfdTgodWludDMyX3QgKiwgdWludDMyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGQxcV9zMTYpKSkKaW50MTZ4OF90IHZsZDFxX3MxNihjb25zdCBpbnQxNl90ICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZDFxX3MxNikpKQppbnQxNng4X3QgdmxkMXEoY29uc3QgaW50MTZfdCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGQxcV9zMzIpKSkKaW50MzJ4NF90IHZsZDFxX3MzMihjb25zdCBpbnQzMl90ICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZDFxX3MzMikpKQppbnQzMng0X3QgdmxkMXEoY29uc3QgaW50MzJfdCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGQxcV9zOCkpKQppbnQ4eDE2X3QgdmxkMXFfczgoY29uc3QgaW50OF90ICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZDFxX3M4KSkpCmludDh4MTZfdCB2bGQxcShjb25zdCBpbnQ4X3QgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkMXFfdTE2KSkpCnVpbnQxNng4X3QgdmxkMXFfdTE2KGNvbnN0IHVpbnQxNl90ICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZDFxX3UxNikpKQp1aW50MTZ4OF90IHZsZDFxKGNvbnN0IHVpbnQxNl90ICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZDFxX3UzMikpKQp1aW50MzJ4NF90IHZsZDFxX3UzMihjb25zdCB1aW50MzJfdCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGQxcV91MzIpKSkKdWludDMyeDRfdCB2bGQxcShjb25zdCB1aW50MzJfdCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGQxcV91OCkpKQp1aW50OHgxNl90IHZsZDFxX3U4KGNvbnN0IHVpbnQ4X3QgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkMXFfdTgpKSkKdWludDh4MTZfdCB2bGQxcShjb25zdCB1aW50OF90ICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZDFxX3pfczE2KSkpCmludDE2eDhfdCB2bGQxcV96X3MxNihjb25zdCBpbnQxNl90ICosIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkMXFfel9zMTYpKSkKaW50MTZ4OF90IHZsZDFxX3ooY29uc3QgaW50MTZfdCAqLCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZDFxX3pfczMyKSkpCmludDMyeDRfdCB2bGQxcV96X3MzMihjb25zdCBpbnQzMl90ICosIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkMXFfel9zMzIpKSkKaW50MzJ4NF90IHZsZDFxX3ooY29uc3QgaW50MzJfdCAqLCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZDFxX3pfczgpKSkKaW50OHgxNl90IHZsZDFxX3pfczgoY29uc3QgaW50OF90ICosIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkMXFfel9zOCkpKQppbnQ4eDE2X3QgdmxkMXFfeihjb25zdCBpbnQ4X3QgKiwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGQxcV96X3UxNikpKQp1aW50MTZ4OF90IHZsZDFxX3pfdTE2KGNvbnN0IHVpbnQxNl90ICosIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkMXFfel91MTYpKSkKdWludDE2eDhfdCB2bGQxcV96KGNvbnN0IHVpbnQxNl90ICosIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkMXFfel91MzIpKSkKdWludDMyeDRfdCB2bGQxcV96X3UzMihjb25zdCB1aW50MzJfdCAqLCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZDFxX3pfdTMyKSkpCnVpbnQzMng0X3QgdmxkMXFfeihjb25zdCB1aW50MzJfdCAqLCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZDFxX3pfdTgpKSkKdWludDh4MTZfdCB2bGQxcV96X3U4KGNvbnN0IHVpbnQ4X3QgKiwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGQxcV96X3U4KSkpCnVpbnQ4eDE2X3QgdmxkMXFfeihjb25zdCB1aW50OF90ICosIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkMnFfczE2KSkpCmludDE2eDh4Ml90IHZsZDJxX3MxNihjb25zdCBpbnQxNl90ICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZDJxX3MxNikpKQppbnQxNng4eDJfdCB2bGQycShjb25zdCBpbnQxNl90ICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZDJxX3MzMikpKQppbnQzMng0eDJfdCB2bGQycV9zMzIoY29uc3QgaW50MzJfdCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGQycV9zMzIpKSkKaW50MzJ4NHgyX3QgdmxkMnEoY29uc3QgaW50MzJfdCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGQycV9zOCkpKQppbnQ4eDE2eDJfdCB2bGQycV9zOChjb25zdCBpbnQ4X3QgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkMnFfczgpKSkKaW50OHgxNngyX3QgdmxkMnEoY29uc3QgaW50OF90ICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZDJxX3UxNikpKQp1aW50MTZ4OHgyX3QgdmxkMnFfdTE2KGNvbnN0IHVpbnQxNl90ICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZDJxX3UxNikpKQp1aW50MTZ4OHgyX3QgdmxkMnEoY29uc3QgdWludDE2X3QgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkMnFfdTMyKSkpCnVpbnQzMng0eDJfdCB2bGQycV91MzIoY29uc3QgdWludDMyX3QgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkMnFfdTMyKSkpCnVpbnQzMng0eDJfdCB2bGQycShjb25zdCB1aW50MzJfdCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGQycV91OCkpKQp1aW50OHgxNngyX3QgdmxkMnFfdTgoY29uc3QgdWludDhfdCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGQycV91OCkpKQp1aW50OHgxNngyX3QgdmxkMnEoY29uc3QgdWludDhfdCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGQ0cV9zMTYpKSkKaW50MTZ4OHg0X3QgdmxkNHFfczE2KGNvbnN0IGludDE2X3QgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkNHFfczE2KSkpCmludDE2eDh4NF90IHZsZDRxKGNvbnN0IGludDE2X3QgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkNHFfczMyKSkpCmludDMyeDR4NF90IHZsZDRxX3MzMihjb25zdCBpbnQzMl90ICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZDRxX3MzMikpKQppbnQzMng0eDRfdCB2bGQ0cShjb25zdCBpbnQzMl90ICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZDRxX3M4KSkpCmludDh4MTZ4NF90IHZsZDRxX3M4KGNvbnN0IGludDhfdCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGQ0cV9zOCkpKQppbnQ4eDE2eDRfdCB2bGQ0cShjb25zdCBpbnQ4X3QgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkNHFfdTE2KSkpCnVpbnQxNng4eDRfdCB2bGQ0cV91MTYoY29uc3QgdWludDE2X3QgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkNHFfdTE2KSkpCnVpbnQxNng4eDRfdCB2bGQ0cShjb25zdCB1aW50MTZfdCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGQ0cV91MzIpKSkKdWludDMyeDR4NF90IHZsZDRxX3UzMihjb25zdCB1aW50MzJfdCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGQ0cV91MzIpKSkKdWludDMyeDR4NF90IHZsZDRxKGNvbnN0IHVpbnQzMl90ICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZDRxX3U4KSkpCnVpbnQ4eDE2eDRfdCB2bGQ0cV91OChjb25zdCB1aW50OF90ICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZDRxX3U4KSkpCnVpbnQ4eDE2eDRfdCB2bGQ0cShjb25zdCB1aW50OF90ICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJicV9nYXRoZXJfb2Zmc2V0X3MxNikpKQppbnQxNng4X3QgdmxkcmJxX2dhdGhlcl9vZmZzZXRfczE2KGNvbnN0IGludDhfdCAqLCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyYnFfZ2F0aGVyX29mZnNldF9zMTYpKSkKaW50MTZ4OF90IHZsZHJicV9nYXRoZXJfb2Zmc2V0KGNvbnN0IGludDhfdCAqLCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyYnFfZ2F0aGVyX29mZnNldF9zMzIpKSkKaW50MzJ4NF90IHZsZHJicV9nYXRoZXJfb2Zmc2V0X3MzMihjb25zdCBpbnQ4X3QgKiwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmJxX2dhdGhlcl9vZmZzZXRfczMyKSkpCmludDMyeDRfdCB2bGRyYnFfZ2F0aGVyX29mZnNldChjb25zdCBpbnQ4X3QgKiwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmJxX2dhdGhlcl9vZmZzZXRfczgpKSkKaW50OHgxNl90IHZsZHJicV9nYXRoZXJfb2Zmc2V0X3M4KGNvbnN0IGludDhfdCAqLCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyYnFfZ2F0aGVyX29mZnNldF9zOCkpKQppbnQ4eDE2X3QgdmxkcmJxX2dhdGhlcl9vZmZzZXQoY29uc3QgaW50OF90ICosIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJicV9nYXRoZXJfb2Zmc2V0X3UxNikpKQp1aW50MTZ4OF90IHZsZHJicV9nYXRoZXJfb2Zmc2V0X3UxNihjb25zdCB1aW50OF90ICosIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJicV9nYXRoZXJfb2Zmc2V0X3UxNikpKQp1aW50MTZ4OF90IHZsZHJicV9nYXRoZXJfb2Zmc2V0KGNvbnN0IHVpbnQ4X3QgKiwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmJxX2dhdGhlcl9vZmZzZXRfdTMyKSkpCnVpbnQzMng0X3QgdmxkcmJxX2dhdGhlcl9vZmZzZXRfdTMyKGNvbnN0IHVpbnQ4X3QgKiwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmJxX2dhdGhlcl9vZmZzZXRfdTMyKSkpCnVpbnQzMng0X3QgdmxkcmJxX2dhdGhlcl9vZmZzZXQoY29uc3QgdWludDhfdCAqLCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyYnFfZ2F0aGVyX29mZnNldF91OCkpKQp1aW50OHgxNl90IHZsZHJicV9nYXRoZXJfb2Zmc2V0X3U4KGNvbnN0IHVpbnQ4X3QgKiwgdWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmJxX2dhdGhlcl9vZmZzZXRfdTgpKSkKdWludDh4MTZfdCB2bGRyYnFfZ2F0aGVyX29mZnNldChjb25zdCB1aW50OF90ICosIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJicV9nYXRoZXJfb2Zmc2V0X3pfczE2KSkpCmludDE2eDhfdCB2bGRyYnFfZ2F0aGVyX29mZnNldF96X3MxNihjb25zdCBpbnQ4X3QgKiwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyYnFfZ2F0aGVyX29mZnNldF96X3MxNikpKQppbnQxNng4X3QgdmxkcmJxX2dhdGhlcl9vZmZzZXRfeihjb25zdCBpbnQ4X3QgKiwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyYnFfZ2F0aGVyX29mZnNldF96X3MzMikpKQppbnQzMng0X3QgdmxkcmJxX2dhdGhlcl9vZmZzZXRfel9zMzIoY29uc3QgaW50OF90ICosIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmJxX2dhdGhlcl9vZmZzZXRfel9zMzIpKSkKaW50MzJ4NF90IHZsZHJicV9nYXRoZXJfb2Zmc2V0X3ooY29uc3QgaW50OF90ICosIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmJxX2dhdGhlcl9vZmZzZXRfel9zOCkpKQppbnQ4eDE2X3QgdmxkcmJxX2dhdGhlcl9vZmZzZXRfel9zOChjb25zdCBpbnQ4X3QgKiwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyYnFfZ2F0aGVyX29mZnNldF96X3M4KSkpCmludDh4MTZfdCB2bGRyYnFfZ2F0aGVyX29mZnNldF96KGNvbnN0IGludDhfdCAqLCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJicV9nYXRoZXJfb2Zmc2V0X3pfdTE2KSkpCnVpbnQxNng4X3QgdmxkcmJxX2dhdGhlcl9vZmZzZXRfel91MTYoY29uc3QgdWludDhfdCAqLCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJicV9nYXRoZXJfb2Zmc2V0X3pfdTE2KSkpCnVpbnQxNng4X3QgdmxkcmJxX2dhdGhlcl9vZmZzZXRfeihjb25zdCB1aW50OF90ICosIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmJxX2dhdGhlcl9vZmZzZXRfel91MzIpKSkKdWludDMyeDRfdCB2bGRyYnFfZ2F0aGVyX29mZnNldF96X3UzMihjb25zdCB1aW50OF90ICosIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmJxX2dhdGhlcl9vZmZzZXRfel91MzIpKSkKdWludDMyeDRfdCB2bGRyYnFfZ2F0aGVyX29mZnNldF96KGNvbnN0IHVpbnQ4X3QgKiwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyYnFfZ2F0aGVyX29mZnNldF96X3U4KSkpCnVpbnQ4eDE2X3QgdmxkcmJxX2dhdGhlcl9vZmZzZXRfel91OChjb25zdCB1aW50OF90ICosIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmJxX2dhdGhlcl9vZmZzZXRfel91OCkpKQp1aW50OHgxNl90IHZsZHJicV9nYXRoZXJfb2Zmc2V0X3ooY29uc3QgdWludDhfdCAqLCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJicV9zMTYpKSkKaW50MTZ4OF90IHZsZHJicV9zMTYoY29uc3QgaW50OF90ICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJicV9zMzIpKSkKaW50MzJ4NF90IHZsZHJicV9zMzIoY29uc3QgaW50OF90ICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJicV9zOCkpKQppbnQ4eDE2X3QgdmxkcmJxX3M4KGNvbnN0IGludDhfdCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyYnFfdTE2KSkpCnVpbnQxNng4X3QgdmxkcmJxX3UxNihjb25zdCB1aW50OF90ICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJicV91MzIpKSkKdWludDMyeDRfdCB2bGRyYnFfdTMyKGNvbnN0IHVpbnQ4X3QgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmJxX3U4KSkpCnVpbnQ4eDE2X3QgdmxkcmJxX3U4KGNvbnN0IHVpbnQ4X3QgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmJxX3pfczE2KSkpCmludDE2eDhfdCB2bGRyYnFfel9zMTYoY29uc3QgaW50OF90ICosIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmJxX3pfczMyKSkpCmludDMyeDRfdCB2bGRyYnFfel9zMzIoY29uc3QgaW50OF90ICosIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmJxX3pfczgpKSkKaW50OHgxNl90IHZsZHJicV96X3M4KGNvbnN0IGludDhfdCAqLCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJicV96X3UxNikpKQp1aW50MTZ4OF90IHZsZHJicV96X3UxNihjb25zdCB1aW50OF90ICosIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmJxX3pfdTMyKSkpCnVpbnQzMng0X3QgdmxkcmJxX3pfdTMyKGNvbnN0IHVpbnQ4X3QgKiwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyYnFfel91OCkpKQp1aW50OHgxNl90IHZsZHJicV96X3U4KGNvbnN0IHVpbnQ4X3QgKiwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyZHFfZ2F0aGVyX2Jhc2VfczY0KSkpCmludDY0eDJfdCB2bGRyZHFfZ2F0aGVyX2Jhc2VfczY0KHVpbnQ2NHgyX3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmRxX2dhdGhlcl9iYXNlX3U2NCkpKQp1aW50NjR4Ml90IHZsZHJkcV9nYXRoZXJfYmFzZV91NjQodWludDY0eDJfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyZHFfZ2F0aGVyX2Jhc2Vfd2JfczY0KSkpCmludDY0eDJfdCB2bGRyZHFfZ2F0aGVyX2Jhc2Vfd2JfczY0KHVpbnQ2NHgyX3QgKiwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyZHFfZ2F0aGVyX2Jhc2Vfd2JfdTY0KSkpCnVpbnQ2NHgyX3QgdmxkcmRxX2dhdGhlcl9iYXNlX3diX3U2NCh1aW50NjR4Ml90ICosIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmRxX2dhdGhlcl9iYXNlX3diX3pfczY0KSkpCmludDY0eDJfdCB2bGRyZHFfZ2F0aGVyX2Jhc2Vfd2Jfel9zNjQodWludDY0eDJfdCAqLCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmRxX2dhdGhlcl9iYXNlX3diX3pfdTY0KSkpCnVpbnQ2NHgyX3QgdmxkcmRxX2dhdGhlcl9iYXNlX3diX3pfdTY0KHVpbnQ2NHgyX3QgKiwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJkcV9nYXRoZXJfYmFzZV96X3M2NCkpKQppbnQ2NHgyX3QgdmxkcmRxX2dhdGhlcl9iYXNlX3pfczY0KHVpbnQ2NHgyX3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyZHFfZ2F0aGVyX2Jhc2Vfel91NjQpKSkKdWludDY0eDJfdCB2bGRyZHFfZ2F0aGVyX2Jhc2Vfel91NjQodWludDY0eDJfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJkcV9nYXRoZXJfb2Zmc2V0X3M2NCkpKQppbnQ2NHgyX3QgdmxkcmRxX2dhdGhlcl9vZmZzZXRfczY0KGNvbnN0IGludDY0X3QgKiwgdWludDY0eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmRxX2dhdGhlcl9vZmZzZXRfczY0KSkpCmludDY0eDJfdCB2bGRyZHFfZ2F0aGVyX29mZnNldChjb25zdCBpbnQ2NF90ICosIHVpbnQ2NHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJkcV9nYXRoZXJfb2Zmc2V0X3U2NCkpKQp1aW50NjR4Ml90IHZsZHJkcV9nYXRoZXJfb2Zmc2V0X3U2NChjb25zdCB1aW50NjRfdCAqLCB1aW50NjR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyZHFfZ2F0aGVyX29mZnNldF91NjQpKSkKdWludDY0eDJfdCB2bGRyZHFfZ2F0aGVyX29mZnNldChjb25zdCB1aW50NjRfdCAqLCB1aW50NjR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyZHFfZ2F0aGVyX29mZnNldF96X3M2NCkpKQppbnQ2NHgyX3QgdmxkcmRxX2dhdGhlcl9vZmZzZXRfel9zNjQoY29uc3QgaW50NjRfdCAqLCB1aW50NjR4Ml90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJkcV9nYXRoZXJfb2Zmc2V0X3pfczY0KSkpCmludDY0eDJfdCB2bGRyZHFfZ2F0aGVyX29mZnNldF96KGNvbnN0IGludDY0X3QgKiwgdWludDY0eDJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyZHFfZ2F0aGVyX29mZnNldF96X3U2NCkpKQp1aW50NjR4Ml90IHZsZHJkcV9nYXRoZXJfb2Zmc2V0X3pfdTY0KGNvbnN0IHVpbnQ2NF90ICosIHVpbnQ2NHgyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmRxX2dhdGhlcl9vZmZzZXRfel91NjQpKSkKdWludDY0eDJfdCB2bGRyZHFfZ2F0aGVyX29mZnNldF96KGNvbnN0IHVpbnQ2NF90ICosIHVpbnQ2NHgyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmRxX2dhdGhlcl9zaGlmdGVkX29mZnNldF9zNjQpKSkKaW50NjR4Ml90IHZsZHJkcV9nYXRoZXJfc2hpZnRlZF9vZmZzZXRfczY0KGNvbnN0IGludDY0X3QgKiwgdWludDY0eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmRxX2dhdGhlcl9zaGlmdGVkX29mZnNldF9zNjQpKSkKaW50NjR4Ml90IHZsZHJkcV9nYXRoZXJfc2hpZnRlZF9vZmZzZXQoY29uc3QgaW50NjRfdCAqLCB1aW50NjR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyZHFfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3U2NCkpKQp1aW50NjR4Ml90IHZsZHJkcV9nYXRoZXJfc2hpZnRlZF9vZmZzZXRfdTY0KGNvbnN0IHVpbnQ2NF90ICosIHVpbnQ2NHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJkcV9nYXRoZXJfc2hpZnRlZF9vZmZzZXRfdTY0KSkpCnVpbnQ2NHgyX3QgdmxkcmRxX2dhdGhlcl9zaGlmdGVkX29mZnNldChjb25zdCB1aW50NjRfdCAqLCB1aW50NjR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyZHFfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3pfczY0KSkpCmludDY0eDJfdCB2bGRyZHFfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3pfczY0KGNvbnN0IGludDY0X3QgKiwgdWludDY0eDJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyZHFfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3pfczY0KSkpCmludDY0eDJfdCB2bGRyZHFfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3ooY29uc3QgaW50NjRfdCAqLCB1aW50NjR4Ml90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJkcV9nYXRoZXJfc2hpZnRlZF9vZmZzZXRfel91NjQpKSkKdWludDY0eDJfdCB2bGRyZHFfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3pfdTY0KGNvbnN0IHVpbnQ2NF90ICosIHVpbnQ2NHgyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmRxX2dhdGhlcl9zaGlmdGVkX29mZnNldF96X3U2NCkpKQp1aW50NjR4Ml90IHZsZHJkcV9nYXRoZXJfc2hpZnRlZF9vZmZzZXRfeihjb25zdCB1aW50NjRfdCAqLCB1aW50NjR4Ml90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJocV9nYXRoZXJfb2Zmc2V0X3MxNikpKQppbnQxNng4X3QgdmxkcmhxX2dhdGhlcl9vZmZzZXRfczE2KGNvbnN0IGludDE2X3QgKiwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmhxX2dhdGhlcl9vZmZzZXRfczE2KSkpCmludDE2eDhfdCB2bGRyaHFfZ2F0aGVyX29mZnNldChjb25zdCBpbnQxNl90ICosIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJocV9nYXRoZXJfb2Zmc2V0X3MzMikpKQppbnQzMng0X3QgdmxkcmhxX2dhdGhlcl9vZmZzZXRfczMyKGNvbnN0IGludDE2X3QgKiwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmhxX2dhdGhlcl9vZmZzZXRfczMyKSkpCmludDMyeDRfdCB2bGRyaHFfZ2F0aGVyX29mZnNldChjb25zdCBpbnQxNl90ICosIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJocV9nYXRoZXJfb2Zmc2V0X3UxNikpKQp1aW50MTZ4OF90IHZsZHJocV9nYXRoZXJfb2Zmc2V0X3UxNihjb25zdCB1aW50MTZfdCAqLCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyaHFfZ2F0aGVyX29mZnNldF91MTYpKSkKdWludDE2eDhfdCB2bGRyaHFfZ2F0aGVyX29mZnNldChjb25zdCB1aW50MTZfdCAqLCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyaHFfZ2F0aGVyX29mZnNldF91MzIpKSkKdWludDMyeDRfdCB2bGRyaHFfZ2F0aGVyX29mZnNldF91MzIoY29uc3QgdWludDE2X3QgKiwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmhxX2dhdGhlcl9vZmZzZXRfdTMyKSkpCnVpbnQzMng0X3QgdmxkcmhxX2dhdGhlcl9vZmZzZXQoY29uc3QgdWludDE2X3QgKiwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmhxX2dhdGhlcl9vZmZzZXRfel9zMTYpKSkKaW50MTZ4OF90IHZsZHJocV9nYXRoZXJfb2Zmc2V0X3pfczE2KGNvbnN0IGludDE2X3QgKiwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyaHFfZ2F0aGVyX29mZnNldF96X3MxNikpKQppbnQxNng4X3QgdmxkcmhxX2dhdGhlcl9vZmZzZXRfeihjb25zdCBpbnQxNl90ICosIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmhxX2dhdGhlcl9vZmZzZXRfel9zMzIpKSkKaW50MzJ4NF90IHZsZHJocV9nYXRoZXJfb2Zmc2V0X3pfczMyKGNvbnN0IGludDE2X3QgKiwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyaHFfZ2F0aGVyX29mZnNldF96X3MzMikpKQppbnQzMng0X3QgdmxkcmhxX2dhdGhlcl9vZmZzZXRfeihjb25zdCBpbnQxNl90ICosIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmhxX2dhdGhlcl9vZmZzZXRfel91MTYpKSkKdWludDE2eDhfdCB2bGRyaHFfZ2F0aGVyX29mZnNldF96X3UxNihjb25zdCB1aW50MTZfdCAqLCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJocV9nYXRoZXJfb2Zmc2V0X3pfdTE2KSkpCnVpbnQxNng4X3QgdmxkcmhxX2dhdGhlcl9vZmZzZXRfeihjb25zdCB1aW50MTZfdCAqLCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJocV9nYXRoZXJfb2Zmc2V0X3pfdTMyKSkpCnVpbnQzMng0X3QgdmxkcmhxX2dhdGhlcl9vZmZzZXRfel91MzIoY29uc3QgdWludDE2X3QgKiwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyaHFfZ2F0aGVyX29mZnNldF96X3UzMikpKQp1aW50MzJ4NF90IHZsZHJocV9nYXRoZXJfb2Zmc2V0X3ooY29uc3QgdWludDE2X3QgKiwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyaHFfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3MxNikpKQppbnQxNng4X3QgdmxkcmhxX2dhdGhlcl9zaGlmdGVkX29mZnNldF9zMTYoY29uc3QgaW50MTZfdCAqLCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyaHFfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3MxNikpKQppbnQxNng4X3QgdmxkcmhxX2dhdGhlcl9zaGlmdGVkX29mZnNldChjb25zdCBpbnQxNl90ICosIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJocV9nYXRoZXJfc2hpZnRlZF9vZmZzZXRfczMyKSkpCmludDMyeDRfdCB2bGRyaHFfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3MzMihjb25zdCBpbnQxNl90ICosIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJocV9nYXRoZXJfc2hpZnRlZF9vZmZzZXRfczMyKSkpCmludDMyeDRfdCB2bGRyaHFfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0KGNvbnN0IGludDE2X3QgKiwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmhxX2dhdGhlcl9zaGlmdGVkX29mZnNldF91MTYpKSkKdWludDE2eDhfdCB2bGRyaHFfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3UxNihjb25zdCB1aW50MTZfdCAqLCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyaHFfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3UxNikpKQp1aW50MTZ4OF90IHZsZHJocV9nYXRoZXJfc2hpZnRlZF9vZmZzZXQoY29uc3QgdWludDE2X3QgKiwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmhxX2dhdGhlcl9zaGlmdGVkX29mZnNldF91MzIpKSkKdWludDMyeDRfdCB2bGRyaHFfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3UzMihjb25zdCB1aW50MTZfdCAqLCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyaHFfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3UzMikpKQp1aW50MzJ4NF90IHZsZHJocV9nYXRoZXJfc2hpZnRlZF9vZmZzZXQoY29uc3QgdWludDE2X3QgKiwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmhxX2dhdGhlcl9zaGlmdGVkX29mZnNldF96X3MxNikpKQppbnQxNng4X3QgdmxkcmhxX2dhdGhlcl9zaGlmdGVkX29mZnNldF96X3MxNihjb25zdCBpbnQxNl90ICosIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmhxX2dhdGhlcl9zaGlmdGVkX29mZnNldF96X3MxNikpKQppbnQxNng4X3QgdmxkcmhxX2dhdGhlcl9zaGlmdGVkX29mZnNldF96KGNvbnN0IGludDE2X3QgKiwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyaHFfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3pfczMyKSkpCmludDMyeDRfdCB2bGRyaHFfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3pfczMyKGNvbnN0IGludDE2X3QgKiwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyaHFfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3pfczMyKSkpCmludDMyeDRfdCB2bGRyaHFfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3ooY29uc3QgaW50MTZfdCAqLCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJocV9nYXRoZXJfc2hpZnRlZF9vZmZzZXRfel91MTYpKSkKdWludDE2eDhfdCB2bGRyaHFfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3pfdTE2KGNvbnN0IHVpbnQxNl90ICosIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmhxX2dhdGhlcl9zaGlmdGVkX29mZnNldF96X3UxNikpKQp1aW50MTZ4OF90IHZsZHJocV9nYXRoZXJfc2hpZnRlZF9vZmZzZXRfeihjb25zdCB1aW50MTZfdCAqLCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJocV9nYXRoZXJfc2hpZnRlZF9vZmZzZXRfel91MzIpKSkKdWludDMyeDRfdCB2bGRyaHFfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3pfdTMyKGNvbnN0IHVpbnQxNl90ICosIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmhxX2dhdGhlcl9zaGlmdGVkX29mZnNldF96X3UzMikpKQp1aW50MzJ4NF90IHZsZHJocV9nYXRoZXJfc2hpZnRlZF9vZmZzZXRfeihjb25zdCB1aW50MTZfdCAqLCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJocV9zMTYpKSkKaW50MTZ4OF90IHZsZHJocV9zMTYoY29uc3QgaW50MTZfdCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyaHFfczMyKSkpCmludDMyeDRfdCB2bGRyaHFfczMyKGNvbnN0IGludDE2X3QgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmhxX3UxNikpKQp1aW50MTZ4OF90IHZsZHJocV91MTYoY29uc3QgdWludDE2X3QgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmhxX3UzMikpKQp1aW50MzJ4NF90IHZsZHJocV91MzIoY29uc3QgdWludDE2X3QgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmhxX3pfczE2KSkpCmludDE2eDhfdCB2bGRyaHFfel9zMTYoY29uc3QgaW50MTZfdCAqLCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJocV96X3MzMikpKQppbnQzMng0X3QgdmxkcmhxX3pfczMyKGNvbnN0IGludDE2X3QgKiwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyaHFfel91MTYpKSkKdWludDE2eDhfdCB2bGRyaHFfel91MTYoY29uc3QgdWludDE2X3QgKiwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyaHFfel91MzIpKSkKdWludDMyeDRfdCB2bGRyaHFfel91MzIoY29uc3QgdWludDE2X3QgKiwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyd3FfZ2F0aGVyX2Jhc2VfczMyKSkpCmludDMyeDRfdCB2bGRyd3FfZ2F0aGVyX2Jhc2VfczMyKHVpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcndxX2dhdGhlcl9iYXNlX3UzMikpKQp1aW50MzJ4NF90IHZsZHJ3cV9nYXRoZXJfYmFzZV91MzIodWludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyd3FfZ2F0aGVyX2Jhc2Vfd2JfczMyKSkpCmludDMyeDRfdCB2bGRyd3FfZ2F0aGVyX2Jhc2Vfd2JfczMyKHVpbnQzMng0X3QgKiwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyd3FfZ2F0aGVyX2Jhc2Vfd2JfdTMyKSkpCnVpbnQzMng0X3QgdmxkcndxX2dhdGhlcl9iYXNlX3diX3UzMih1aW50MzJ4NF90ICosIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcndxX2dhdGhlcl9iYXNlX3diX3pfczMyKSkpCmludDMyeDRfdCB2bGRyd3FfZ2F0aGVyX2Jhc2Vfd2Jfel9zMzIodWludDMyeDRfdCAqLCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcndxX2dhdGhlcl9iYXNlX3diX3pfdTMyKSkpCnVpbnQzMng0X3QgdmxkcndxX2dhdGhlcl9iYXNlX3diX3pfdTMyKHVpbnQzMng0X3QgKiwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJ3cV9nYXRoZXJfYmFzZV96X3MzMikpKQppbnQzMng0X3QgdmxkcndxX2dhdGhlcl9iYXNlX3pfczMyKHVpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyd3FfZ2F0aGVyX2Jhc2Vfel91MzIpKSkKdWludDMyeDRfdCB2bGRyd3FfZ2F0aGVyX2Jhc2Vfel91MzIodWludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJ3cV9nYXRoZXJfb2Zmc2V0X3MzMikpKQppbnQzMng0X3QgdmxkcndxX2dhdGhlcl9vZmZzZXRfczMyKGNvbnN0IGludDMyX3QgKiwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcndxX2dhdGhlcl9vZmZzZXRfczMyKSkpCmludDMyeDRfdCB2bGRyd3FfZ2F0aGVyX29mZnNldChjb25zdCBpbnQzMl90ICosIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJ3cV9nYXRoZXJfb2Zmc2V0X3UzMikpKQp1aW50MzJ4NF90IHZsZHJ3cV9nYXRoZXJfb2Zmc2V0X3UzMihjb25zdCB1aW50MzJfdCAqLCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyd3FfZ2F0aGVyX29mZnNldF91MzIpKSkKdWludDMyeDRfdCB2bGRyd3FfZ2F0aGVyX29mZnNldChjb25zdCB1aW50MzJfdCAqLCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyd3FfZ2F0aGVyX29mZnNldF96X3MzMikpKQppbnQzMng0X3QgdmxkcndxX2dhdGhlcl9vZmZzZXRfel9zMzIoY29uc3QgaW50MzJfdCAqLCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJ3cV9nYXRoZXJfb2Zmc2V0X3pfczMyKSkpCmludDMyeDRfdCB2bGRyd3FfZ2F0aGVyX29mZnNldF96KGNvbnN0IGludDMyX3QgKiwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyd3FfZ2F0aGVyX29mZnNldF96X3UzMikpKQp1aW50MzJ4NF90IHZsZHJ3cV9nYXRoZXJfb2Zmc2V0X3pfdTMyKGNvbnN0IHVpbnQzMl90ICosIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcndxX2dhdGhlcl9vZmZzZXRfel91MzIpKSkKdWludDMyeDRfdCB2bGRyd3FfZ2F0aGVyX29mZnNldF96KGNvbnN0IHVpbnQzMl90ICosIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcndxX2dhdGhlcl9zaGlmdGVkX29mZnNldF9zMzIpKSkKaW50MzJ4NF90IHZsZHJ3cV9nYXRoZXJfc2hpZnRlZF9vZmZzZXRfczMyKGNvbnN0IGludDMyX3QgKiwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcndxX2dhdGhlcl9zaGlmdGVkX29mZnNldF9zMzIpKSkKaW50MzJ4NF90IHZsZHJ3cV9nYXRoZXJfc2hpZnRlZF9vZmZzZXQoY29uc3QgaW50MzJfdCAqLCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyd3FfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3UzMikpKQp1aW50MzJ4NF90IHZsZHJ3cV9nYXRoZXJfc2hpZnRlZF9vZmZzZXRfdTMyKGNvbnN0IHVpbnQzMl90ICosIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJ3cV9nYXRoZXJfc2hpZnRlZF9vZmZzZXRfdTMyKSkpCnVpbnQzMng0X3QgdmxkcndxX2dhdGhlcl9zaGlmdGVkX29mZnNldChjb25zdCB1aW50MzJfdCAqLCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyd3FfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3pfczMyKSkpCmludDMyeDRfdCB2bGRyd3FfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3pfczMyKGNvbnN0IGludDMyX3QgKiwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyd3FfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3pfczMyKSkpCmludDMyeDRfdCB2bGRyd3FfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3ooY29uc3QgaW50MzJfdCAqLCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJ3cV9nYXRoZXJfc2hpZnRlZF9vZmZzZXRfel91MzIpKSkKdWludDMyeDRfdCB2bGRyd3FfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3pfdTMyKGNvbnN0IHVpbnQzMl90ICosIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcndxX2dhdGhlcl9zaGlmdGVkX29mZnNldF96X3UzMikpKQp1aW50MzJ4NF90IHZsZHJ3cV9nYXRoZXJfc2hpZnRlZF9vZmZzZXRfeihjb25zdCB1aW50MzJfdCAqLCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJ3cV9zMzIpKSkKaW50MzJ4NF90IHZsZHJ3cV9zMzIoY29uc3QgaW50MzJfdCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyd3FfdTMyKSkpCnVpbnQzMng0X3QgdmxkcndxX3UzMihjb25zdCB1aW50MzJfdCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyd3Ffel9zMzIpKSkKaW50MzJ4NF90IHZsZHJ3cV96X3MzMihjb25zdCBpbnQzMl90ICosIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcndxX3pfdTMyKSkpCnVpbnQzMng0X3QgdmxkcndxX3pfdTMyKGNvbnN0IHVpbnQzMl90ICosIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heGFxX21fczE2KSkpCnVpbnQxNng4X3Qgdm1heGFxX21fczE2KHVpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4YXFfbV9zMTYpKSkKdWludDE2eDhfdCB2bWF4YXFfbSh1aW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heGFxX21fczMyKSkpCnVpbnQzMng0X3Qgdm1heGFxX21fczMyKHVpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4YXFfbV9zMzIpKSkKdWludDMyeDRfdCB2bWF4YXFfbSh1aW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heGFxX21fczgpKSkKdWludDh4MTZfdCB2bWF4YXFfbV9zOCh1aW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heGFxX21fczgpKSkKdWludDh4MTZfdCB2bWF4YXFfbSh1aW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heGFxX3MxNikpKQp1aW50MTZ4OF90IHZtYXhhcV9zMTYodWludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4YXFfczE2KSkpCnVpbnQxNng4X3Qgdm1heGFxKHVpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heGFxX3MzMikpKQp1aW50MzJ4NF90IHZtYXhhcV9zMzIodWludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4YXFfczMyKSkpCnVpbnQzMng0X3Qgdm1heGFxKHVpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heGFxX3M4KSkpCnVpbnQ4eDE2X3Qgdm1heGFxX3M4KHVpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heGFxX3M4KSkpCnVpbnQ4eDE2X3Qgdm1heGFxKHVpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heGF2cV9wX3MxNikpKQp1aW50MTZfdCB2bWF4YXZxX3BfczE2KHVpbnQxNl90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heGF2cV9wX3MxNikpKQp1aW50MTZfdCB2bWF4YXZxX3AodWludDE2X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4YXZxX3BfczMyKSkpCnVpbnQzMl90IHZtYXhhdnFfcF9zMzIodWludDMyX3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4YXZxX3BfczMyKSkpCnVpbnQzMl90IHZtYXhhdnFfcCh1aW50MzJfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhhdnFfcF9zOCkpKQp1aW50OF90IHZtYXhhdnFfcF9zOCh1aW50OF90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heGF2cV9wX3M4KSkpCnVpbnQ4X3Qgdm1heGF2cV9wKHVpbnQ4X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4YXZxX3MxNikpKQp1aW50MTZfdCB2bWF4YXZxX3MxNih1aW50MTZfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4YXZxX3MxNikpKQp1aW50MTZfdCB2bWF4YXZxKHVpbnQxNl90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhhdnFfczMyKSkpCnVpbnQzMl90IHZtYXhhdnFfczMyKHVpbnQzMl90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhhdnFfczMyKSkpCnVpbnQzMl90IHZtYXhhdnEodWludDMyX3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heGF2cV9zOCkpKQp1aW50OF90IHZtYXhhdnFfczgodWludDhfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4YXZxX3M4KSkpCnVpbnQ4X3Qgdm1heGF2cSh1aW50OF90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhxX21fczE2KSkpCmludDE2eDhfdCB2bWF4cV9tX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhxX21fczE2KSkpCmludDE2eDhfdCB2bWF4cV9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heHFfbV9zMzIpKSkKaW50MzJ4NF90IHZtYXhxX21fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heHFfbV9zMzIpKSkKaW50MzJ4NF90IHZtYXhxX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4cV9tX3M4KSkpCmludDh4MTZfdCB2bWF4cV9tX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heHFfbV9zOCkpKQppbnQ4eDE2X3Qgdm1heHFfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhxX21fdTE2KSkpCnVpbnQxNng4X3Qgdm1heHFfbV91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4cV9tX3UxNikpKQp1aW50MTZ4OF90IHZtYXhxX20odWludDE2eDhfdCwgdWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4cV9tX3UzMikpKQp1aW50MzJ4NF90IHZtYXhxX21fdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heHFfbV91MzIpKSkKdWludDMyeDRfdCB2bWF4cV9tKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heHFfbV91OCkpKQp1aW50OHgxNl90IHZtYXhxX21fdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4cV9tX3U4KSkpCnVpbnQ4eDE2X3Qgdm1heHFfbSh1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhxX3MxNikpKQppbnQxNng4X3Qgdm1heHFfczE2KGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4cV9zMTYpKSkKaW50MTZ4OF90IHZtYXhxKGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4cV9zMzIpKSkKaW50MzJ4NF90IHZtYXhxX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heHFfczMyKSkpCmludDMyeDRfdCB2bWF4cShpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heHFfczgpKSkKaW50OHgxNl90IHZtYXhxX3M4KGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4cV9zOCkpKQppbnQ4eDE2X3Qgdm1heHEoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhxX3UxNikpKQp1aW50MTZ4OF90IHZtYXhxX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4cV91MTYpKSkKdWludDE2eDhfdCB2bWF4cSh1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4cV91MzIpKSkKdWludDMyeDRfdCB2bWF4cV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heHFfdTMyKSkpCnVpbnQzMng0X3Qgdm1heHEodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heHFfdTgpKSkKdWludDh4MTZfdCB2bWF4cV91OCh1aW50OHgxNl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4cV91OCkpKQp1aW50OHgxNl90IHZtYXhxKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhxX3hfczE2KSkpCmludDE2eDhfdCB2bWF4cV94X3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4cV94X3MxNikpKQppbnQxNng4X3Qgdm1heHFfeChpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4cV94X3MzMikpKQppbnQzMng0X3Qgdm1heHFfeF9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heHFfeF9zMzIpKSkKaW50MzJ4NF90IHZtYXhxX3goaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heHFfeF9zOCkpKQppbnQ4eDE2X3Qgdm1heHFfeF9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4cV94X3M4KSkpCmludDh4MTZfdCB2bWF4cV94KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhxX3hfdTE2KSkpCnVpbnQxNng4X3Qgdm1heHFfeF91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4cV94X3UxNikpKQp1aW50MTZ4OF90IHZtYXhxX3godWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4cV94X3UzMikpKQp1aW50MzJ4NF90IHZtYXhxX3hfdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heHFfeF91MzIpKSkKdWludDMyeDRfdCB2bWF4cV94KHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heHFfeF91OCkpKQp1aW50OHgxNl90IHZtYXhxX3hfdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4cV94X3U4KSkpCnVpbnQ4eDE2X3Qgdm1heHFfeCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXh2cV9wX3MxNikpKQppbnQxNl90IHZtYXh2cV9wX3MxNihpbnQxNl90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heHZxX3BfczE2KSkpCmludDE2X3Qgdm1heHZxX3AoaW50MTZfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXh2cV9wX3MzMikpKQppbnQzMl90IHZtYXh2cV9wX3MzMihpbnQzMl90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heHZxX3BfczMyKSkpCmludDMyX3Qgdm1heHZxX3AoaW50MzJfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXh2cV9wX3M4KSkpCmludDhfdCB2bWF4dnFfcF9zOChpbnQ4X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4dnFfcF9zOCkpKQppbnQ4X3Qgdm1heHZxX3AoaW50OF90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heHZxX3BfdTE2KSkpCnVpbnQxNl90IHZtYXh2cV9wX3UxNih1aW50MTZfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4dnFfcF91MTYpKSkKdWludDE2X3Qgdm1heHZxX3AodWludDE2X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heHZxX3BfdTMyKSkpCnVpbnQzMl90IHZtYXh2cV9wX3UzMih1aW50MzJfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4dnFfcF91MzIpKSkKdWludDMyX3Qgdm1heHZxX3AodWludDMyX3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heHZxX3BfdTgpKSkKdWludDhfdCB2bWF4dnFfcF91OCh1aW50OF90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXh2cV9wX3U4KSkpCnVpbnQ4X3Qgdm1heHZxX3AodWludDhfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4dnFfczE2KSkpCmludDE2X3Qgdm1heHZxX3MxNihpbnQxNl90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXh2cV9zMTYpKSkKaW50MTZfdCB2bWF4dnEoaW50MTZfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4dnFfczMyKSkpCmludDMyX3Qgdm1heHZxX3MzMihpbnQzMl90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXh2cV9zMzIpKSkKaW50MzJfdCB2bWF4dnEoaW50MzJfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4dnFfczgpKSkKaW50OF90IHZtYXh2cV9zOChpbnQ4X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heHZxX3M4KSkpCmludDhfdCB2bWF4dnEoaW50OF90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXh2cV91MTYpKSkKdWludDE2X3Qgdm1heHZxX3UxNih1aW50MTZfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heHZxX3UxNikpKQp1aW50MTZfdCB2bWF4dnEodWludDE2X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXh2cV91MzIpKSkKdWludDMyX3Qgdm1heHZxX3UzMih1aW50MzJfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heHZxX3UzMikpKQp1aW50MzJfdCB2bWF4dnEodWludDMyX3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXh2cV91OCkpKQp1aW50OF90IHZtYXh2cV91OCh1aW50OF90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4dnFfdTgpKSkKdWludDhfdCB2bWF4dnEodWludDhfdCwgdWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbmFxX21fczE2KSkpCnVpbnQxNng4X3Qgdm1pbmFxX21fczE2KHVpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWluYXFfbV9zMTYpKSkKdWludDE2eDhfdCB2bWluYXFfbSh1aW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbmFxX21fczMyKSkpCnVpbnQzMng0X3Qgdm1pbmFxX21fczMyKHVpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWluYXFfbV9zMzIpKSkKdWludDMyeDRfdCB2bWluYXFfbSh1aW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbmFxX21fczgpKSkKdWludDh4MTZfdCB2bWluYXFfbV9zOCh1aW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbmFxX21fczgpKSkKdWludDh4MTZfdCB2bWluYXFfbSh1aW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbmFxX3MxNikpKQp1aW50MTZ4OF90IHZtaW5hcV9zMTYodWludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWluYXFfczE2KSkpCnVpbnQxNng4X3Qgdm1pbmFxKHVpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbmFxX3MzMikpKQp1aW50MzJ4NF90IHZtaW5hcV9zMzIodWludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWluYXFfczMyKSkpCnVpbnQzMng0X3Qgdm1pbmFxKHVpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbmFxX3M4KSkpCnVpbnQ4eDE2X3Qgdm1pbmFxX3M4KHVpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbmFxX3M4KSkpCnVpbnQ4eDE2X3Qgdm1pbmFxKHVpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbmF2cV9wX3MxNikpKQp1aW50MTZfdCB2bWluYXZxX3BfczE2KHVpbnQxNl90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbmF2cV9wX3MxNikpKQp1aW50MTZfdCB2bWluYXZxX3AodWludDE2X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWluYXZxX3BfczMyKSkpCnVpbnQzMl90IHZtaW5hdnFfcF9zMzIodWludDMyX3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWluYXZxX3BfczMyKSkpCnVpbnQzMl90IHZtaW5hdnFfcCh1aW50MzJfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5hdnFfcF9zOCkpKQp1aW50OF90IHZtaW5hdnFfcF9zOCh1aW50OF90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbmF2cV9wX3M4KSkpCnVpbnQ4X3Qgdm1pbmF2cV9wKHVpbnQ4X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWluYXZxX3MxNikpKQp1aW50MTZfdCB2bWluYXZxX3MxNih1aW50MTZfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWluYXZxX3MxNikpKQp1aW50MTZfdCB2bWluYXZxKHVpbnQxNl90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5hdnFfczMyKSkpCnVpbnQzMl90IHZtaW5hdnFfczMyKHVpbnQzMl90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5hdnFfczMyKSkpCnVpbnQzMl90IHZtaW5hdnEodWludDMyX3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbmF2cV9zOCkpKQp1aW50OF90IHZtaW5hdnFfczgodWludDhfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWluYXZxX3M4KSkpCnVpbnQ4X3Qgdm1pbmF2cSh1aW50OF90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5xX21fczE2KSkpCmludDE2eDhfdCB2bWlucV9tX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5xX21fczE2KSkpCmludDE2eDhfdCB2bWlucV9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbnFfbV9zMzIpKSkKaW50MzJ4NF90IHZtaW5xX21fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbnFfbV9zMzIpKSkKaW50MzJ4NF90IHZtaW5xX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWlucV9tX3M4KSkpCmludDh4MTZfdCB2bWlucV9tX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbnFfbV9zOCkpKQppbnQ4eDE2X3Qgdm1pbnFfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5xX21fdTE2KSkpCnVpbnQxNng4X3Qgdm1pbnFfbV91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWlucV9tX3UxNikpKQp1aW50MTZ4OF90IHZtaW5xX20odWludDE2eDhfdCwgdWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWlucV9tX3UzMikpKQp1aW50MzJ4NF90IHZtaW5xX21fdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbnFfbV91MzIpKSkKdWludDMyeDRfdCB2bWlucV9tKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbnFfbV91OCkpKQp1aW50OHgxNl90IHZtaW5xX21fdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWlucV9tX3U4KSkpCnVpbnQ4eDE2X3Qgdm1pbnFfbSh1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5xX3MxNikpKQppbnQxNng4X3Qgdm1pbnFfczE2KGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWlucV9zMTYpKSkKaW50MTZ4OF90IHZtaW5xKGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWlucV9zMzIpKSkKaW50MzJ4NF90IHZtaW5xX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbnFfczMyKSkpCmludDMyeDRfdCB2bWlucShpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbnFfczgpKSkKaW50OHgxNl90IHZtaW5xX3M4KGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWlucV9zOCkpKQppbnQ4eDE2X3Qgdm1pbnEoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5xX3UxNikpKQp1aW50MTZ4OF90IHZtaW5xX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWlucV91MTYpKSkKdWludDE2eDhfdCB2bWlucSh1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWlucV91MzIpKSkKdWludDMyeDRfdCB2bWlucV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbnFfdTMyKSkpCnVpbnQzMng0X3Qgdm1pbnEodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbnFfdTgpKSkKdWludDh4MTZfdCB2bWlucV91OCh1aW50OHgxNl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWlucV91OCkpKQp1aW50OHgxNl90IHZtaW5xKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5xX3hfczE2KSkpCmludDE2eDhfdCB2bWlucV94X3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWlucV94X3MxNikpKQppbnQxNng4X3Qgdm1pbnFfeChpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWlucV94X3MzMikpKQppbnQzMng0X3Qgdm1pbnFfeF9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbnFfeF9zMzIpKSkKaW50MzJ4NF90IHZtaW5xX3goaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbnFfeF9zOCkpKQppbnQ4eDE2X3Qgdm1pbnFfeF9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWlucV94X3M4KSkpCmludDh4MTZfdCB2bWlucV94KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5xX3hfdTE2KSkpCnVpbnQxNng4X3Qgdm1pbnFfeF91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWlucV94X3UxNikpKQp1aW50MTZ4OF90IHZtaW5xX3godWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWlucV94X3UzMikpKQp1aW50MzJ4NF90IHZtaW5xX3hfdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbnFfeF91MzIpKSkKdWludDMyeDRfdCB2bWlucV94KHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbnFfeF91OCkpKQp1aW50OHgxNl90IHZtaW5xX3hfdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWlucV94X3U4KSkpCnVpbnQ4eDE2X3Qgdm1pbnFfeCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW52cV9wX3MxNikpKQppbnQxNl90IHZtaW52cV9wX3MxNihpbnQxNl90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbnZxX3BfczE2KSkpCmludDE2X3Qgdm1pbnZxX3AoaW50MTZfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW52cV9wX3MzMikpKQppbnQzMl90IHZtaW52cV9wX3MzMihpbnQzMl90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbnZxX3BfczMyKSkpCmludDMyX3Qgdm1pbnZxX3AoaW50MzJfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW52cV9wX3M4KSkpCmludDhfdCB2bWludnFfcF9zOChpbnQ4X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWludnFfcF9zOCkpKQppbnQ4X3Qgdm1pbnZxX3AoaW50OF90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbnZxX3BfdTE2KSkpCnVpbnQxNl90IHZtaW52cV9wX3UxNih1aW50MTZfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWludnFfcF91MTYpKSkKdWludDE2X3Qgdm1pbnZxX3AodWludDE2X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbnZxX3BfdTMyKSkpCnVpbnQzMl90IHZtaW52cV9wX3UzMih1aW50MzJfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWludnFfcF91MzIpKSkKdWludDMyX3Qgdm1pbnZxX3AodWludDMyX3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbnZxX3BfdTgpKSkKdWludDhfdCB2bWludnFfcF91OCh1aW50OF90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW52cV9wX3U4KSkpCnVpbnQ4X3Qgdm1pbnZxX3AodWludDhfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWludnFfczE2KSkpCmludDE2X3Qgdm1pbnZxX3MxNihpbnQxNl90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW52cV9zMTYpKSkKaW50MTZfdCB2bWludnEoaW50MTZfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWludnFfczMyKSkpCmludDMyX3Qgdm1pbnZxX3MzMihpbnQzMl90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW52cV9zMzIpKSkKaW50MzJfdCB2bWludnEoaW50MzJfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWludnFfczgpKSkKaW50OF90IHZtaW52cV9zOChpbnQ4X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbnZxX3M4KSkpCmludDhfdCB2bWludnEoaW50OF90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW52cV91MTYpKSkKdWludDE2X3Qgdm1pbnZxX3UxNih1aW50MTZfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbnZxX3UxNikpKQp1aW50MTZfdCB2bWludnEodWludDE2X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW52cV91MzIpKSkKdWludDMyX3Qgdm1pbnZxX3UzMih1aW50MzJfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbnZxX3UzMikpKQp1aW50MzJfdCB2bWludnEodWludDMyX3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW52cV91OCkpKQp1aW50OF90IHZtaW52cV91OCh1aW50OF90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWludnFfdTgpKSkKdWludDhfdCB2bWludnEodWludDhfdCwgdWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdmFxX3BfczE2KSkpCmludDMyX3Qgdm1sYWRhdmFxX3BfczE2KGludDMyX3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFkYXZhcV9wX3MxNikpKQppbnQzMl90IHZtbGFkYXZhcV9wKGludDMyX3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFkYXZhcV9wX3MzMikpKQppbnQzMl90IHZtbGFkYXZhcV9wX3MzMihpbnQzMl90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhZGF2YXFfcF9zMzIpKSkKaW50MzJfdCB2bWxhZGF2YXFfcChpbnQzMl90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhZGF2YXFfcF9zOCkpKQppbnQzMl90IHZtbGFkYXZhcV9wX3M4KGludDMyX3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFkYXZhcV9wX3M4KSkpCmludDMyX3Qgdm1sYWRhdmFxX3AoaW50MzJfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdmFxX3BfdTE2KSkpCnVpbnQzMl90IHZtbGFkYXZhcV9wX3UxNih1aW50MzJfdCwgdWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhZGF2YXFfcF91MTYpKSkKdWludDMyX3Qgdm1sYWRhdmFxX3AodWludDMyX3QsIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdmFxX3BfdTMyKSkpCnVpbnQzMl90IHZtbGFkYXZhcV9wX3UzMih1aW50MzJfdCwgdWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhZGF2YXFfcF91MzIpKSkKdWludDMyX3Qgdm1sYWRhdmFxX3AodWludDMyX3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdmFxX3BfdTgpKSkKdWludDMyX3Qgdm1sYWRhdmFxX3BfdTgodWludDMyX3QsIHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdmFxX3BfdTgpKSkKdWludDMyX3Qgdm1sYWRhdmFxX3AodWludDMyX3QsIHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdmFxX3MxNikpKQppbnQzMl90IHZtbGFkYXZhcV9zMTYoaW50MzJfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFkYXZhcV9zMTYpKSkKaW50MzJfdCB2bWxhZGF2YXEoaW50MzJfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFkYXZhcV9zMzIpKSkKaW50MzJfdCB2bWxhZGF2YXFfczMyKGludDMyX3QsIGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhZGF2YXFfczMyKSkpCmludDMyX3Qgdm1sYWRhdmFxKGludDMyX3QsIGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhZGF2YXFfczgpKSkKaW50MzJfdCB2bWxhZGF2YXFfczgoaW50MzJfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFkYXZhcV9zOCkpKQppbnQzMl90IHZtbGFkYXZhcShpbnQzMl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdmFxX3UxNikpKQp1aW50MzJfdCB2bWxhZGF2YXFfdTE2KHVpbnQzMl90LCB1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhZGF2YXFfdTE2KSkpCnVpbnQzMl90IHZtbGFkYXZhcSh1aW50MzJfdCwgdWludDE2eDhfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdmFxX3UzMikpKQp1aW50MzJfdCB2bWxhZGF2YXFfdTMyKHVpbnQzMl90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhZGF2YXFfdTMyKSkpCnVpbnQzMl90IHZtbGFkYXZhcSh1aW50MzJfdCwgdWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdmFxX3U4KSkpCnVpbnQzMl90IHZtbGFkYXZhcV91OCh1aW50MzJfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdmFxX3U4KSkpCnVpbnQzMl90IHZtbGFkYXZhcSh1aW50MzJfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdmF4cV9wX3MxNikpKQppbnQzMl90IHZtbGFkYXZheHFfcF9zMTYoaW50MzJfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdmF4cV9wX3MxNikpKQppbnQzMl90IHZtbGFkYXZheHFfcChpbnQzMl90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhZGF2YXhxX3BfczMyKSkpCmludDMyX3Qgdm1sYWRhdmF4cV9wX3MzMihpbnQzMl90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhZGF2YXhxX3BfczMyKSkpCmludDMyX3Qgdm1sYWRhdmF4cV9wKGludDMyX3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFkYXZheHFfcF9zOCkpKQppbnQzMl90IHZtbGFkYXZheHFfcF9zOChpbnQzMl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhZGF2YXhxX3BfczgpKSkKaW50MzJfdCB2bWxhZGF2YXhxX3AoaW50MzJfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdmF4cV9zMTYpKSkKaW50MzJfdCB2bWxhZGF2YXhxX3MxNihpbnQzMl90LCBpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdmF4cV9zMTYpKSkKaW50MzJfdCB2bWxhZGF2YXhxKGludDMyX3QsIGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhZGF2YXhxX3MzMikpKQppbnQzMl90IHZtbGFkYXZheHFfczMyKGludDMyX3QsIGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhZGF2YXhxX3MzMikpKQppbnQzMl90IHZtbGFkYXZheHEoaW50MzJfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFkYXZheHFfczgpKSkKaW50MzJfdCB2bWxhZGF2YXhxX3M4KGludDMyX3QsIGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhZGF2YXhxX3M4KSkpCmludDMyX3Qgdm1sYWRhdmF4cShpbnQzMl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdnFfcF9zMTYpKSkKaW50MzJfdCB2bWxhZGF2cV9wX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhZGF2cV9wX3MxNikpKQppbnQzMl90IHZtbGFkYXZxX3AoaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdnFfcF9zMzIpKSkKaW50MzJfdCB2bWxhZGF2cV9wX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhZGF2cV9wX3MzMikpKQppbnQzMl90IHZtbGFkYXZxX3AoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdnFfcF9zOCkpKQppbnQzMl90IHZtbGFkYXZxX3BfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdnFfcF9zOCkpKQppbnQzMl90IHZtbGFkYXZxX3AoaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdnFfcF91MTYpKSkKdWludDMyX3Qgdm1sYWRhdnFfcF91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhZGF2cV9wX3UxNikpKQp1aW50MzJfdCB2bWxhZGF2cV9wKHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdnFfcF91MzIpKSkKdWludDMyX3Qgdm1sYWRhdnFfcF91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhZGF2cV9wX3UzMikpKQp1aW50MzJfdCB2bWxhZGF2cV9wKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdnFfcF91OCkpKQp1aW50MzJfdCB2bWxhZGF2cV9wX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdnFfcF91OCkpKQp1aW50MzJfdCB2bWxhZGF2cV9wKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdnFfczE2KSkpCmludDMyX3Qgdm1sYWRhdnFfczE2KGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhZGF2cV9zMTYpKSkKaW50MzJfdCB2bWxhZGF2cShpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdnFfczMyKSkpCmludDMyX3Qgdm1sYWRhdnFfczMyKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhZGF2cV9zMzIpKSkKaW50MzJfdCB2bWxhZGF2cShpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdnFfczgpKSkKaW50MzJfdCB2bWxhZGF2cV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdnFfczgpKSkKaW50MzJfdCB2bWxhZGF2cShpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdnFfdTE2KSkpCnVpbnQzMl90IHZtbGFkYXZxX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhZGF2cV91MTYpKSkKdWludDMyX3Qgdm1sYWRhdnEodWludDE2eDhfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdnFfdTMyKSkpCnVpbnQzMl90IHZtbGFkYXZxX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhZGF2cV91MzIpKSkKdWludDMyX3Qgdm1sYWRhdnEodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdnFfdTgpKSkKdWludDMyX3Qgdm1sYWRhdnFfdTgodWludDh4MTZfdCwgdWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdnFfdTgpKSkKdWludDMyX3Qgdm1sYWRhdnEodWludDh4MTZfdCwgdWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdnhxX3BfczE2KSkpCmludDMyX3Qgdm1sYWRhdnhxX3BfczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFkYXZ4cV9wX3MxNikpKQppbnQzMl90IHZtbGFkYXZ4cV9wKGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFkYXZ4cV9wX3MzMikpKQppbnQzMl90IHZtbGFkYXZ4cV9wX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhZGF2eHFfcF9zMzIpKSkKaW50MzJfdCB2bWxhZGF2eHFfcChpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhZGF2eHFfcF9zOCkpKQppbnQzMl90IHZtbGFkYXZ4cV9wX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFkYXZ4cV9wX3M4KSkpCmludDMyX3Qgdm1sYWRhdnhxX3AoaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWRhdnhxX3MxNikpKQppbnQzMl90IHZtbGFkYXZ4cV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFkYXZ4cV9zMTYpKSkKaW50MzJfdCB2bWxhZGF2eHEoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFkYXZ4cV9zMzIpKSkKaW50MzJfdCB2bWxhZGF2eHFfczMyKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhZGF2eHFfczMyKSkpCmludDMyX3Qgdm1sYWRhdnhxKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhZGF2eHFfczgpKSkKaW50MzJfdCB2bWxhZGF2eHFfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFkYXZ4cV9zOCkpKQppbnQzMl90IHZtbGFkYXZ4cShpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWxkYXZhcV9wX3MxNikpKQppbnQ2NF90IHZtbGFsZGF2YXFfcF9zMTYoaW50NjRfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWxkYXZhcV9wX3MxNikpKQppbnQ2NF90IHZtbGFsZGF2YXFfcChpbnQ2NF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhbGRhdmFxX3BfczMyKSkpCmludDY0X3Qgdm1sYWxkYXZhcV9wX3MzMihpbnQ2NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhbGRhdmFxX3BfczMyKSkpCmludDY0X3Qgdm1sYWxkYXZhcV9wKGludDY0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFsZGF2YXFfcF91MTYpKSkKdWludDY0X3Qgdm1sYWxkYXZhcV9wX3UxNih1aW50NjRfdCwgdWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhbGRhdmFxX3BfdTE2KSkpCnVpbnQ2NF90IHZtbGFsZGF2YXFfcCh1aW50NjRfdCwgdWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhbGRhdmFxX3BfdTMyKSkpCnVpbnQ2NF90IHZtbGFsZGF2YXFfcF91MzIodWludDY0X3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWxkYXZhcV9wX3UzMikpKQp1aW50NjRfdCB2bWxhbGRhdmFxX3AodWludDY0X3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWxkYXZhcV9zMTYpKSkKaW50NjRfdCB2bWxhbGRhdmFxX3MxNihpbnQ2NF90LCBpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWxkYXZhcV9zMTYpKSkKaW50NjRfdCB2bWxhbGRhdmFxKGludDY0X3QsIGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhbGRhdmFxX3MzMikpKQppbnQ2NF90IHZtbGFsZGF2YXFfczMyKGludDY0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhbGRhdmFxX3MzMikpKQppbnQ2NF90IHZtbGFsZGF2YXEoaW50NjRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFsZGF2YXFfdTE2KSkpCnVpbnQ2NF90IHZtbGFsZGF2YXFfdTE2KHVpbnQ2NF90LCB1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhbGRhdmFxX3UxNikpKQp1aW50NjRfdCB2bWxhbGRhdmFxKHVpbnQ2NF90LCB1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhbGRhdmFxX3UzMikpKQp1aW50NjRfdCB2bWxhbGRhdmFxX3UzMih1aW50NjRfdCwgdWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWxkYXZhcV91MzIpKSkKdWludDY0X3Qgdm1sYWxkYXZhcSh1aW50NjRfdCwgdWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWxkYXZheHFfcF9zMTYpKSkKaW50NjRfdCB2bWxhbGRhdmF4cV9wX3MxNihpbnQ2NF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhbGRhdmF4cV9wX3MxNikpKQppbnQ2NF90IHZtbGFsZGF2YXhxX3AoaW50NjRfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWxkYXZheHFfcF9zMzIpKSkKaW50NjRfdCB2bWxhbGRhdmF4cV9wX3MzMihpbnQ2NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhbGRhdmF4cV9wX3MzMikpKQppbnQ2NF90IHZtbGFsZGF2YXhxX3AoaW50NjRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWxkYXZheHFfczE2KSkpCmludDY0X3Qgdm1sYWxkYXZheHFfczE2KGludDY0X3QsIGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhbGRhdmF4cV9zMTYpKSkKaW50NjRfdCB2bWxhbGRhdmF4cShpbnQ2NF90LCBpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWxkYXZheHFfczMyKSkpCmludDY0X3Qgdm1sYWxkYXZheHFfczMyKGludDY0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhbGRhdmF4cV9zMzIpKSkKaW50NjRfdCB2bWxhbGRhdmF4cShpbnQ2NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWxkYXZxX3BfczE2KSkpCmludDY0X3Qgdm1sYWxkYXZxX3BfczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFsZGF2cV9wX3MxNikpKQppbnQ2NF90IHZtbGFsZGF2cV9wKGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFsZGF2cV9wX3MzMikpKQppbnQ2NF90IHZtbGFsZGF2cV9wX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhbGRhdnFfcF9zMzIpKSkKaW50NjRfdCB2bWxhbGRhdnFfcChpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhbGRhdnFfcF91MTYpKSkKdWludDY0X3Qgdm1sYWxkYXZxX3BfdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWxkYXZxX3BfdTE2KSkpCnVpbnQ2NF90IHZtbGFsZGF2cV9wKHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWxkYXZxX3BfdTMyKSkpCnVpbnQ2NF90IHZtbGFsZGF2cV9wX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFsZGF2cV9wX3UzMikpKQp1aW50NjRfdCB2bWxhbGRhdnFfcCh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFsZGF2cV9zMTYpKSkKaW50NjRfdCB2bWxhbGRhdnFfczE2KGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhbGRhdnFfczE2KSkpCmludDY0X3Qgdm1sYWxkYXZxKGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhbGRhdnFfczMyKSkpCmludDY0X3Qgdm1sYWxkYXZxX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWxkYXZxX3MzMikpKQppbnQ2NF90IHZtbGFsZGF2cShpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWxkYXZxX3UxNikpKQp1aW50NjRfdCB2bWxhbGRhdnFfdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFsZGF2cV91MTYpKSkKdWludDY0X3Qgdm1sYWxkYXZxKHVpbnQxNng4X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFsZGF2cV91MzIpKSkKdWludDY0X3Qgdm1sYWxkYXZxX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhbGRhdnFfdTMyKSkpCnVpbnQ2NF90IHZtbGFsZGF2cSh1aW50MzJ4NF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhbGRhdnhxX3BfczE2KSkpCmludDY0X3Qgdm1sYWxkYXZ4cV9wX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhbGRhdnhxX3BfczE2KSkpCmludDY0X3Qgdm1sYWxkYXZ4cV9wKGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFsZGF2eHFfcF9zMzIpKSkKaW50NjRfdCB2bWxhbGRhdnhxX3BfczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFsZGF2eHFfcF9zMzIpKSkKaW50NjRfdCB2bWxhbGRhdnhxX3AoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWxkYXZ4cV9zMTYpKSkKaW50NjRfdCB2bWxhbGRhdnhxX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYWxkYXZ4cV9zMTYpKSkKaW50NjRfdCB2bWxhbGRhdnhxKGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhbGRhdnhxX3MzMikpKQppbnQ2NF90IHZtbGFsZGF2eHFfczMyKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhbGRhdnhxX3MzMikpKQppbnQ2NF90IHZtbGFsZGF2eHEoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFxX21fbl9zMTYpKSkKaW50MTZ4OF90IHZtbGFxX21fbl9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYXFfbV9uX3MxNikpKQppbnQxNng4X3Qgdm1sYXFfbShpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhcV9tX25fczMyKSkpCmludDMyeDRfdCB2bWxhcV9tX25fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFxX21fbl9zMzIpKSkKaW50MzJ4NF90IHZtbGFxX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYXFfbV9uX3M4KSkpCmludDh4MTZfdCB2bWxhcV9tX25fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhcV9tX25fczgpKSkKaW50OHgxNl90IHZtbGFxX20oaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhcV9tX25fdTE2KSkpCnVpbnQxNng4X3Qgdm1sYXFfbV9uX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90LCB1aW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhcV9tX25fdTE2KSkpCnVpbnQxNng4X3Qgdm1sYXFfbSh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCB1aW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhcV9tX25fdTMyKSkpCnVpbnQzMng0X3Qgdm1sYXFfbV9uX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhcV9tX25fdTMyKSkpCnVpbnQzMng0X3Qgdm1sYXFfbSh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhcV9tX25fdTgpKSkKdWludDh4MTZfdCB2bWxhcV9tX25fdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhcV9tX25fdTgpKSkKdWludDh4MTZfdCB2bWxhcV9tKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYXFfbl9zMTYpKSkKaW50MTZ4OF90IHZtbGFxX25fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhcV9uX3MxNikpKQppbnQxNng4X3Qgdm1sYXEoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFxX25fczMyKSkpCmludDMyeDRfdCB2bWxhcV9uX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYXFfbl9zMzIpKSkKaW50MzJ4NF90IHZtbGFxKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhcV9uX3M4KSkpCmludDh4MTZfdCB2bWxhcV9uX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFxX25fczgpKSkKaW50OHgxNl90IHZtbGFxKGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFxX25fdTE2KSkpCnVpbnQxNng4X3Qgdm1sYXFfbl91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgdWludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFxX25fdTE2KSkpCnVpbnQxNng4X3Qgdm1sYXEodWludDE2eDhfdCwgdWludDE2eDhfdCwgdWludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFxX25fdTMyKSkpCnVpbnQzMng0X3Qgdm1sYXFfbl91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFxX25fdTMyKSkpCnVpbnQzMng0X3Qgdm1sYXEodWludDMyeDRfdCwgdWludDMyeDRfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFxX25fdTgpKSkKdWludDh4MTZfdCB2bWxhcV9uX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFxX25fdTgpKSkKdWludDh4MTZfdCB2bWxhcSh1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhc3FfbV9uX3MxNikpKQppbnQxNng4X3Qgdm1sYXNxX21fbl9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYXNxX21fbl9zMTYpKSkKaW50MTZ4OF90IHZtbGFzcV9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFzcV9tX25fczMyKSkpCmludDMyeDRfdCB2bWxhc3FfbV9uX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhc3FfbV9uX3MzMikpKQppbnQzMng0X3Qgdm1sYXNxX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYXNxX21fbl9zOCkpKQppbnQ4eDE2X3Qgdm1sYXNxX21fbl9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFzcV9tX25fczgpKSkKaW50OHgxNl90IHZtbGFzcV9tKGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYXNxX21fbl91MTYpKSkKdWludDE2eDhfdCB2bWxhc3FfbV9uX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90LCB1aW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhc3FfbV9uX3UxNikpKQp1aW50MTZ4OF90IHZtbGFzcV9tKHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFzcV9tX25fdTMyKSkpCnVpbnQzMng0X3Qgdm1sYXNxX21fbl91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgdWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYXNxX21fbl91MzIpKSkKdWludDMyeDRfdCB2bWxhc3FfbSh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhc3FfbV9uX3U4KSkpCnVpbnQ4eDE2X3Qgdm1sYXNxX21fbl91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFzcV9tX25fdTgpKSkKdWludDh4MTZfdCB2bWxhc3FfbSh1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFzcV9uX3MxNikpKQppbnQxNng4X3Qgdm1sYXNxX25fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhc3Ffbl9zMTYpKSkKaW50MTZ4OF90IHZtbGFzcShpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYXNxX25fczMyKSkpCmludDMyeDRfdCB2bWxhc3Ffbl9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFzcV9uX3MzMikpKQppbnQzMng0X3Qgdm1sYXNxKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhc3Ffbl9zOCkpKQppbnQ4eDE2X3Qgdm1sYXNxX25fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYXNxX25fczgpKSkKaW50OHgxNl90IHZtbGFzcShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhc3Ffbl91MTYpKSkKdWludDE2eDhfdCB2bWxhc3Ffbl91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgdWludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFzcV9uX3UxNikpKQp1aW50MTZ4OF90IHZtbGFzcSh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCB1aW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYXNxX25fdTMyKSkpCnVpbnQzMng0X3Qgdm1sYXNxX25fdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxhc3Ffbl91MzIpKSkKdWludDMyeDRfdCB2bWxhc3EodWludDMyeDRfdCwgdWludDMyeDRfdCwgdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbGFzcV9uX3U4KSkpCnVpbnQ4eDE2X3Qgdm1sYXNxX25fdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sYXNxX25fdTgpKSkKdWludDh4MTZfdCB2bWxhc3EodWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2RhdmFxX3BfczE2KSkpCmludDMyX3Qgdm1sc2RhdmFxX3BfczE2KGludDMyX3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNkYXZhcV9wX3MxNikpKQppbnQzMl90IHZtbHNkYXZhcV9wKGludDMyX3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNkYXZhcV9wX3MzMikpKQppbnQzMl90IHZtbHNkYXZhcV9wX3MzMihpbnQzMl90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzZGF2YXFfcF9zMzIpKSkKaW50MzJfdCB2bWxzZGF2YXFfcChpbnQzMl90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzZGF2YXFfcF9zOCkpKQppbnQzMl90IHZtbHNkYXZhcV9wX3M4KGludDMyX3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNkYXZhcV9wX3M4KSkpCmludDMyX3Qgdm1sc2RhdmFxX3AoaW50MzJfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2RhdmFxX3MxNikpKQppbnQzMl90IHZtbHNkYXZhcV9zMTYoaW50MzJfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNkYXZhcV9zMTYpKSkKaW50MzJfdCB2bWxzZGF2YXEoaW50MzJfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNkYXZhcV9zMzIpKSkKaW50MzJfdCB2bWxzZGF2YXFfczMyKGludDMyX3QsIGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzZGF2YXFfczMyKSkpCmludDMyX3Qgdm1sc2RhdmFxKGludDMyX3QsIGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzZGF2YXFfczgpKSkKaW50MzJfdCB2bWxzZGF2YXFfczgoaW50MzJfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNkYXZhcV9zOCkpKQppbnQzMl90IHZtbHNkYXZhcShpbnQzMl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2RhdmF4cV9wX3MxNikpKQppbnQzMl90IHZtbHNkYXZheHFfcF9zMTYoaW50MzJfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2RhdmF4cV9wX3MxNikpKQppbnQzMl90IHZtbHNkYXZheHFfcChpbnQzMl90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzZGF2YXhxX3BfczMyKSkpCmludDMyX3Qgdm1sc2RhdmF4cV9wX3MzMihpbnQzMl90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzZGF2YXhxX3BfczMyKSkpCmludDMyX3Qgdm1sc2RhdmF4cV9wKGludDMyX3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNkYXZheHFfcF9zOCkpKQppbnQzMl90IHZtbHNkYXZheHFfcF9zOChpbnQzMl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzZGF2YXhxX3BfczgpKSkKaW50MzJfdCB2bWxzZGF2YXhxX3AoaW50MzJfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2RhdmF4cV9zMTYpKSkKaW50MzJfdCB2bWxzZGF2YXhxX3MxNihpbnQzMl90LCBpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2RhdmF4cV9zMTYpKSkKaW50MzJfdCB2bWxzZGF2YXhxKGludDMyX3QsIGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzZGF2YXhxX3MzMikpKQppbnQzMl90IHZtbHNkYXZheHFfczMyKGludDMyX3QsIGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzZGF2YXhxX3MzMikpKQppbnQzMl90IHZtbHNkYXZheHEoaW50MzJfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNkYXZheHFfczgpKSkKaW50MzJfdCB2bWxzZGF2YXhxX3M4KGludDMyX3QsIGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzZGF2YXhxX3M4KSkpCmludDMyX3Qgdm1sc2RhdmF4cShpbnQzMl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2RhdnFfcF9zMTYpKSkKaW50MzJfdCB2bWxzZGF2cV9wX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzZGF2cV9wX3MxNikpKQppbnQzMl90IHZtbHNkYXZxX3AoaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2RhdnFfcF9zMzIpKSkKaW50MzJfdCB2bWxzZGF2cV9wX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzZGF2cV9wX3MzMikpKQppbnQzMl90IHZtbHNkYXZxX3AoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2RhdnFfcF9zOCkpKQppbnQzMl90IHZtbHNkYXZxX3BfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2RhdnFfcF9zOCkpKQppbnQzMl90IHZtbHNkYXZxX3AoaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2RhdnFfczE2KSkpCmludDMyX3Qgdm1sc2RhdnFfczE2KGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzZGF2cV9zMTYpKSkKaW50MzJfdCB2bWxzZGF2cShpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2RhdnFfczMyKSkpCmludDMyX3Qgdm1sc2RhdnFfczMyKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzZGF2cV9zMzIpKSkKaW50MzJfdCB2bWxzZGF2cShpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2RhdnFfczgpKSkKaW50MzJfdCB2bWxzZGF2cV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2RhdnFfczgpKSkKaW50MzJfdCB2bWxzZGF2cShpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2RhdnhxX3BfczE2KSkpCmludDMyX3Qgdm1sc2RhdnhxX3BfczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNkYXZ4cV9wX3MxNikpKQppbnQzMl90IHZtbHNkYXZ4cV9wKGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNkYXZ4cV9wX3MzMikpKQppbnQzMl90IHZtbHNkYXZ4cV9wX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzZGF2eHFfcF9zMzIpKSkKaW50MzJfdCB2bWxzZGF2eHFfcChpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzZGF2eHFfcF9zOCkpKQppbnQzMl90IHZtbHNkYXZ4cV9wX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNkYXZ4cV9wX3M4KSkpCmludDMyX3Qgdm1sc2RhdnhxX3AoaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2RhdnhxX3MxNikpKQppbnQzMl90IHZtbHNkYXZ4cV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNkYXZ4cV9zMTYpKSkKaW50MzJfdCB2bWxzZGF2eHEoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNkYXZ4cV9zMzIpKSkKaW50MzJfdCB2bWxzZGF2eHFfczMyKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzZGF2eHFfczMyKSkpCmludDMyX3Qgdm1sc2RhdnhxKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzZGF2eHFfczgpKSkKaW50MzJfdCB2bWxzZGF2eHFfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNkYXZ4cV9zOCkpKQppbnQzMl90IHZtbHNkYXZ4cShpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2xkYXZhcV9wX3MxNikpKQppbnQ2NF90IHZtbHNsZGF2YXFfcF9zMTYoaW50NjRfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2xkYXZhcV9wX3MxNikpKQppbnQ2NF90IHZtbHNsZGF2YXFfcChpbnQ2NF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzbGRhdmFxX3BfczMyKSkpCmludDY0X3Qgdm1sc2xkYXZhcV9wX3MzMihpbnQ2NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzbGRhdmFxX3BfczMyKSkpCmludDY0X3Qgdm1sc2xkYXZhcV9wKGludDY0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNsZGF2YXFfczE2KSkpCmludDY0X3Qgdm1sc2xkYXZhcV9zMTYoaW50NjRfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNsZGF2YXFfczE2KSkpCmludDY0X3Qgdm1sc2xkYXZhcShpbnQ2NF90LCBpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2xkYXZhcV9zMzIpKSkKaW50NjRfdCB2bWxzbGRhdmFxX3MzMihpbnQ2NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2xkYXZhcV9zMzIpKSkKaW50NjRfdCB2bWxzbGRhdmFxKGludDY0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzbGRhdmF4cV9wX3MxNikpKQppbnQ2NF90IHZtbHNsZGF2YXhxX3BfczE2KGludDY0X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNsZGF2YXhxX3BfczE2KSkpCmludDY0X3Qgdm1sc2xkYXZheHFfcChpbnQ2NF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzbGRhdmF4cV9wX3MzMikpKQppbnQ2NF90IHZtbHNsZGF2YXhxX3BfczMyKGludDY0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNsZGF2YXhxX3BfczMyKSkpCmludDY0X3Qgdm1sc2xkYXZheHFfcChpbnQ2NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzbGRhdmF4cV9zMTYpKSkKaW50NjRfdCB2bWxzbGRhdmF4cV9zMTYoaW50NjRfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNsZGF2YXhxX3MxNikpKQppbnQ2NF90IHZtbHNsZGF2YXhxKGludDY0X3QsIGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzbGRhdmF4cV9zMzIpKSkKaW50NjRfdCB2bWxzbGRhdmF4cV9zMzIoaW50NjRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNsZGF2YXhxX3MzMikpKQppbnQ2NF90IHZtbHNsZGF2YXhxKGludDY0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzbGRhdnFfcF9zMTYpKSkKaW50NjRfdCB2bWxzbGRhdnFfcF9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2xkYXZxX3BfczE2KSkpCmludDY0X3Qgdm1sc2xkYXZxX3AoaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2xkYXZxX3BfczMyKSkpCmludDY0X3Qgdm1sc2xkYXZxX3BfczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNsZGF2cV9wX3MzMikpKQppbnQ2NF90IHZtbHNsZGF2cV9wKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNsZGF2cV9zMTYpKSkKaW50NjRfdCB2bWxzbGRhdnFfczE2KGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzbGRhdnFfczE2KSkpCmludDY0X3Qgdm1sc2xkYXZxKGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzbGRhdnFfczMyKSkpCmludDY0X3Qgdm1sc2xkYXZxX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2xkYXZxX3MzMikpKQppbnQ2NF90IHZtbHNsZGF2cShpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2xkYXZ4cV9wX3MxNikpKQppbnQ2NF90IHZtbHNsZGF2eHFfcF9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2xkYXZ4cV9wX3MxNikpKQppbnQ2NF90IHZtbHNsZGF2eHFfcChpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzbGRhdnhxX3BfczMyKSkpCmludDY0X3Qgdm1sc2xkYXZ4cV9wX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWxzbGRhdnhxX3BfczMyKSkpCmludDY0X3Qgdm1sc2xkYXZ4cV9wKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNsZGF2eHFfczE2KSkpCmludDY0X3Qgdm1sc2xkYXZ4cV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtbHNsZGF2eHFfczE2KSkpCmludDY0X3Qgdm1sc2xkYXZ4cShpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2xkYXZ4cV9zMzIpKSkKaW50NjRfdCB2bWxzbGRhdnhxX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1sc2xkYXZ4cV9zMzIpKSkKaW50NjRfdCB2bWxzbGRhdnhxKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bGJxX21fczE2KSkpCmludDMyeDRfdCB2bW92bGJxX21fczE2KGludDMyeDRfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztb3ZsYnFfbV9zMTYpKSkKaW50MzJ4NF90IHZtb3ZsYnFfbShpbnQzMng0X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bGJxX21fczgpKSkKaW50MTZ4OF90IHZtb3ZsYnFfbV9zOChpbnQxNng4X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bGJxX21fczgpKSkKaW50MTZ4OF90IHZtb3ZsYnFfbShpbnQxNng4X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bGJxX21fdTE2KSkpCnVpbnQzMng0X3Qgdm1vdmxicV9tX3UxNih1aW50MzJ4NF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztb3ZsYnFfbV91MTYpKSkKdWludDMyeDRfdCB2bW92bGJxX20odWludDMyeDRfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bGJxX21fdTgpKSkKdWludDE2eDhfdCB2bW92bGJxX21fdTgodWludDE2eDhfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bGJxX21fdTgpKSkKdWludDE2eDhfdCB2bW92bGJxX20odWludDE2eDhfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bGJxX3MxNikpKQppbnQzMng0X3Qgdm1vdmxicV9zMTYoaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bGJxX3MxNikpKQppbnQzMng0X3Qgdm1vdmxicShpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztb3ZsYnFfczgpKSkKaW50MTZ4OF90IHZtb3ZsYnFfczgoaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bGJxX3M4KSkpCmludDE2eDhfdCB2bW92bGJxKGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdmxicV91MTYpKSkKdWludDMyeDRfdCB2bW92bGJxX3UxNih1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bGJxX3UxNikpKQp1aW50MzJ4NF90IHZtb3ZsYnEodWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdmxicV91OCkpKQp1aW50MTZ4OF90IHZtb3ZsYnFfdTgodWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdmxicV91OCkpKQp1aW50MTZ4OF90IHZtb3ZsYnEodWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdmxicV94X3MxNikpKQppbnQzMng0X3Qgdm1vdmxicV94X3MxNihpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdmxicV94X3MxNikpKQppbnQzMng0X3Qgdm1vdmxicV94KGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bGJxX3hfczgpKSkKaW50MTZ4OF90IHZtb3ZsYnFfeF9zOChpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdmxicV94X3M4KSkpCmludDE2eDhfdCB2bW92bGJxX3goaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztb3ZsYnFfeF91MTYpKSkKdWludDMyeDRfdCB2bW92bGJxX3hfdTE2KHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdmxicV94X3UxNikpKQp1aW50MzJ4NF90IHZtb3ZsYnFfeCh1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztb3ZsYnFfeF91OCkpKQp1aW50MTZ4OF90IHZtb3ZsYnFfeF91OCh1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztb3ZsYnFfeF91OCkpKQp1aW50MTZ4OF90IHZtb3ZsYnFfeCh1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztb3ZsdHFfbV9zMTYpKSkKaW50MzJ4NF90IHZtb3ZsdHFfbV9zMTYoaW50MzJ4NF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdmx0cV9tX3MxNikpKQppbnQzMng0X3Qgdm1vdmx0cV9tKGludDMyeDRfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztb3ZsdHFfbV9zOCkpKQppbnQxNng4X3Qgdm1vdmx0cV9tX3M4KGludDE2eDhfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztb3ZsdHFfbV9zOCkpKQppbnQxNng4X3Qgdm1vdmx0cV9tKGludDE2eDhfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztb3ZsdHFfbV91MTYpKSkKdWludDMyeDRfdCB2bW92bHRxX21fdTE2KHVpbnQzMng0X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdmx0cV9tX3UxNikpKQp1aW50MzJ4NF90IHZtb3ZsdHFfbSh1aW50MzJ4NF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztb3ZsdHFfbV91OCkpKQp1aW50MTZ4OF90IHZtb3ZsdHFfbV91OCh1aW50MTZ4OF90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztb3ZsdHFfbV91OCkpKQp1aW50MTZ4OF90IHZtb3ZsdHFfbSh1aW50MTZ4OF90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztb3ZsdHFfczE2KSkpCmludDMyeDRfdCB2bW92bHRxX3MxNihpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztb3ZsdHFfczE2KSkpCmludDMyeDRfdCB2bW92bHRxKGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdmx0cV9zOCkpKQppbnQxNng4X3Qgdm1vdmx0cV9zOChpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztb3ZsdHFfczgpKSkKaW50MTZ4OF90IHZtb3ZsdHEoaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bHRxX3UxNikpKQp1aW50MzJ4NF90IHZtb3ZsdHFfdTE2KHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztb3ZsdHFfdTE2KSkpCnVpbnQzMng0X3Qgdm1vdmx0cSh1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bHRxX3U4KSkpCnVpbnQxNng4X3Qgdm1vdmx0cV91OCh1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bHRxX3U4KSkpCnVpbnQxNng4X3Qgdm1vdmx0cSh1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bHRxX3hfczE2KSkpCmludDMyeDRfdCB2bW92bHRxX3hfczE2KGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bHRxX3hfczE2KSkpCmludDMyeDRfdCB2bW92bHRxX3goaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztb3ZsdHFfeF9zOCkpKQppbnQxNng4X3Qgdm1vdmx0cV94X3M4KGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bHRxX3hfczgpKSkKaW50MTZ4OF90IHZtb3ZsdHFfeChpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdmx0cV94X3UxNikpKQp1aW50MzJ4NF90IHZtb3ZsdHFfeF91MTYodWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bHRxX3hfdTE2KSkpCnVpbnQzMng0X3Qgdm1vdmx0cV94KHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdmx0cV94X3U4KSkpCnVpbnQxNng4X3Qgdm1vdmx0cV94X3U4KHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdmx0cV94X3U4KSkpCnVpbnQxNng4X3Qgdm1vdmx0cV94KHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdm5icV9tX3MxNikpKQppbnQ4eDE2X3Qgdm1vdm5icV9tX3MxNihpbnQ4eDE2X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bmJxX21fczE2KSkpCmludDh4MTZfdCB2bW92bmJxX20oaW50OHgxNl90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdm5icV9tX3MzMikpKQppbnQxNng4X3Qgdm1vdm5icV9tX3MzMihpbnQxNng4X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bmJxX21fczMyKSkpCmludDE2eDhfdCB2bW92bmJxX20oaW50MTZ4OF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdm5icV9tX3UxNikpKQp1aW50OHgxNl90IHZtb3ZuYnFfbV91MTYodWludDh4MTZfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bmJxX21fdTE2KSkpCnVpbnQ4eDE2X3Qgdm1vdm5icV9tKHVpbnQ4eDE2X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdm5icV9tX3UzMikpKQp1aW50MTZ4OF90IHZtb3ZuYnFfbV91MzIodWludDE2eDhfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bmJxX21fdTMyKSkpCnVpbnQxNng4X3Qgdm1vdm5icV9tKHVpbnQxNng4X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdm5icV9zMTYpKSkKaW50OHgxNl90IHZtb3ZuYnFfczE2KGludDh4MTZfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bmJxX3MxNikpKQppbnQ4eDE2X3Qgdm1vdm5icShpbnQ4eDE2X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdm5icV9zMzIpKSkKaW50MTZ4OF90IHZtb3ZuYnFfczMyKGludDE2eDhfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bmJxX3MzMikpKQppbnQxNng4X3Qgdm1vdm5icShpbnQxNng4X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdm5icV91MTYpKSkKdWludDh4MTZfdCB2bW92bmJxX3UxNih1aW50OHgxNl90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bmJxX3UxNikpKQp1aW50OHgxNl90IHZtb3ZuYnEodWludDh4MTZfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdm5icV91MzIpKSkKdWludDE2eDhfdCB2bW92bmJxX3UzMih1aW50MTZ4OF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bmJxX3UzMikpKQp1aW50MTZ4OF90IHZtb3ZuYnEodWludDE2eDhfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdm50cV9tX3MxNikpKQppbnQ4eDE2X3Qgdm1vdm50cV9tX3MxNihpbnQ4eDE2X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bnRxX21fczE2KSkpCmludDh4MTZfdCB2bW92bnRxX20oaW50OHgxNl90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdm50cV9tX3MzMikpKQppbnQxNng4X3Qgdm1vdm50cV9tX3MzMihpbnQxNng4X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bnRxX21fczMyKSkpCmludDE2eDhfdCB2bW92bnRxX20oaW50MTZ4OF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdm50cV9tX3UxNikpKQp1aW50OHgxNl90IHZtb3ZudHFfbV91MTYodWludDh4MTZfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bnRxX21fdTE2KSkpCnVpbnQ4eDE2X3Qgdm1vdm50cV9tKHVpbnQ4eDE2X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdm50cV9tX3UzMikpKQp1aW50MTZ4OF90IHZtb3ZudHFfbV91MzIodWludDE2eDhfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bnRxX21fdTMyKSkpCnVpbnQxNng4X3Qgdm1vdm50cV9tKHVpbnQxNng4X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdm50cV9zMTYpKSkKaW50OHgxNl90IHZtb3ZudHFfczE2KGludDh4MTZfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bnRxX3MxNikpKQppbnQ4eDE2X3Qgdm1vdm50cShpbnQ4eDE2X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdm50cV9zMzIpKSkKaW50MTZ4OF90IHZtb3ZudHFfczMyKGludDE2eDhfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bnRxX3MzMikpKQppbnQxNng4X3Qgdm1vdm50cShpbnQxNng4X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdm50cV91MTYpKSkKdWludDh4MTZfdCB2bW92bnRxX3UxNih1aW50OHgxNl90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bnRxX3UxNikpKQp1aW50OHgxNl90IHZtb3ZudHEodWludDh4MTZfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1vdm50cV91MzIpKSkKdWludDE2eDhfdCB2bW92bnRxX3UzMih1aW50MTZ4OF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bW92bnRxX3UzMikpKQp1aW50MTZ4OF90IHZtb3ZudHEodWludDE2eDhfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGhxX21fczE2KSkpCmludDE2eDhfdCB2bXVsaHFfbV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsaHFfbV9zMTYpKSkKaW50MTZ4OF90IHZtdWxocV9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGhxX21fczMyKSkpCmludDMyeDRfdCB2bXVsaHFfbV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsaHFfbV9zMzIpKSkKaW50MzJ4NF90IHZtdWxocV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGhxX21fczgpKSkKaW50OHgxNl90IHZtdWxocV9tX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGhxX21fczgpKSkKaW50OHgxNl90IHZtdWxocV9tKGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGhxX21fdTE2KSkpCnVpbnQxNng4X3Qgdm11bGhxX21fdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGhxX21fdTE2KSkpCnVpbnQxNng4X3Qgdm11bGhxX20odWludDE2eDhfdCwgdWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsaHFfbV91MzIpKSkKdWludDMyeDRfdCB2bXVsaHFfbV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsaHFfbV91MzIpKSkKdWludDMyeDRfdCB2bXVsaHFfbSh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxocV9tX3U4KSkpCnVpbnQ4eDE2X3Qgdm11bGhxX21fdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsaHFfbV91OCkpKQp1aW50OHgxNl90IHZtdWxocV9tKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGhxX3MxNikpKQppbnQxNng4X3Qgdm11bGhxX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGhxX3MxNikpKQppbnQxNng4X3Qgdm11bGhxKGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsaHFfczMyKSkpCmludDMyeDRfdCB2bXVsaHFfczMyKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsaHFfczMyKSkpCmludDMyeDRfdCB2bXVsaHEoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxocV9zOCkpKQppbnQ4eDE2X3Qgdm11bGhxX3M4KGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsaHFfczgpKSkKaW50OHgxNl90IHZtdWxocShpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGhxX3UxNikpKQp1aW50MTZ4OF90IHZtdWxocV91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGhxX3UxNikpKQp1aW50MTZ4OF90IHZtdWxocSh1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsaHFfdTMyKSkpCnVpbnQzMng0X3Qgdm11bGhxX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsaHFfdTMyKSkpCnVpbnQzMng0X3Qgdm11bGhxKHVpbnQzMng0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxocV91OCkpKQp1aW50OHgxNl90IHZtdWxocV91OCh1aW50OHgxNl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsaHFfdTgpKSkKdWludDh4MTZfdCB2bXVsaHEodWludDh4MTZfdCwgdWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGhxX3hfczE2KSkpCmludDE2eDhfdCB2bXVsaHFfeF9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGhxX3hfczE2KSkpCmludDE2eDhfdCB2bXVsaHFfeChpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsaHFfeF9zMzIpKSkKaW50MzJ4NF90IHZtdWxocV94X3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsaHFfeF9zMzIpKSkKaW50MzJ4NF90IHZtdWxocV94KGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxocV94X3M4KSkpCmludDh4MTZfdCB2bXVsaHFfeF9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsaHFfeF9zOCkpKQppbnQ4eDE2X3Qgdm11bGhxX3goaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGhxX3hfdTE2KSkpCnVpbnQxNng4X3Qgdm11bGhxX3hfdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGhxX3hfdTE2KSkpCnVpbnQxNng4X3Qgdm11bGhxX3godWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsaHFfeF91MzIpKSkKdWludDMyeDRfdCB2bXVsaHFfeF91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsaHFfeF91MzIpKSkKdWludDMyeDRfdCB2bXVsaHFfeCh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxocV94X3U4KSkpCnVpbnQ4eDE2X3Qgdm11bGhxX3hfdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsaHFfeF91OCkpKQp1aW50OHgxNl90IHZtdWxocV94KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGxicV9pbnRfbV9zMTYpKSkKaW50MzJ4NF90IHZtdWxsYnFfaW50X21fczE2KGludDMyeDRfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGxicV9pbnRfbV9zMTYpKSkKaW50MzJ4NF90IHZtdWxsYnFfaW50X20oaW50MzJ4NF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbGJxX2ludF9tX3MzMikpKQppbnQ2NHgyX3Qgdm11bGxicV9pbnRfbV9zMzIoaW50NjR4Ml90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbGJxX2ludF9tX3MzMikpKQppbnQ2NHgyX3Qgdm11bGxicV9pbnRfbShpbnQ2NHgyX3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsYnFfaW50X21fczgpKSkKaW50MTZ4OF90IHZtdWxsYnFfaW50X21fczgoaW50MTZ4OF90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbGJxX2ludF9tX3M4KSkpCmludDE2eDhfdCB2bXVsbGJxX2ludF9tKGludDE2eDhfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGxicV9pbnRfbV91MTYpKSkKdWludDMyeDRfdCB2bXVsbGJxX2ludF9tX3UxNih1aW50MzJ4NF90LCB1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsYnFfaW50X21fdTE2KSkpCnVpbnQzMng0X3Qgdm11bGxicV9pbnRfbSh1aW50MzJ4NF90LCB1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsYnFfaW50X21fdTMyKSkpCnVpbnQ2NHgyX3Qgdm11bGxicV9pbnRfbV91MzIodWludDY0eDJfdCwgdWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbGJxX2ludF9tX3UzMikpKQp1aW50NjR4Ml90IHZtdWxsYnFfaW50X20odWludDY0eDJfdCwgdWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbGJxX2ludF9tX3U4KSkpCnVpbnQxNng4X3Qgdm11bGxicV9pbnRfbV91OCh1aW50MTZ4OF90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsYnFfaW50X21fdTgpKSkKdWludDE2eDhfdCB2bXVsbGJxX2ludF9tKHVpbnQxNng4X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGxicV9pbnRfczE2KSkpCmludDMyeDRfdCB2bXVsbGJxX2ludF9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsYnFfaW50X3MxNikpKQppbnQzMng0X3Qgdm11bGxicV9pbnQoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsYnFfaW50X3MzMikpKQppbnQ2NHgyX3Qgdm11bGxicV9pbnRfczMyKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbGJxX2ludF9zMzIpKSkKaW50NjR4Ml90IHZtdWxsYnFfaW50KGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbGJxX2ludF9zOCkpKQppbnQxNng4X3Qgdm11bGxicV9pbnRfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsYnFfaW50X3M4KSkpCmludDE2eDhfdCB2bXVsbGJxX2ludChpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGxicV9pbnRfdTE2KSkpCnVpbnQzMng0X3Qgdm11bGxicV9pbnRfdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsYnFfaW50X3UxNikpKQp1aW50MzJ4NF90IHZtdWxsYnFfaW50KHVpbnQxNng4X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsYnFfaW50X3UzMikpKQp1aW50NjR4Ml90IHZtdWxsYnFfaW50X3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbGJxX2ludF91MzIpKSkKdWludDY0eDJfdCB2bXVsbGJxX2ludCh1aW50MzJ4NF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbGJxX2ludF91OCkpKQp1aW50MTZ4OF90IHZtdWxsYnFfaW50X3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsYnFfaW50X3U4KSkpCnVpbnQxNng4X3Qgdm11bGxicV9pbnQodWludDh4MTZfdCwgdWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGxicV9pbnRfeF9zMTYpKSkKaW50MzJ4NF90IHZtdWxsYnFfaW50X3hfczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsYnFfaW50X3hfczE2KSkpCmludDMyeDRfdCB2bXVsbGJxX2ludF94KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsYnFfaW50X3hfczMyKSkpCmludDY0eDJfdCB2bXVsbGJxX2ludF94X3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbGJxX2ludF94X3MzMikpKQppbnQ2NHgyX3Qgdm11bGxicV9pbnRfeChpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbGJxX2ludF94X3M4KSkpCmludDE2eDhfdCB2bXVsbGJxX2ludF94X3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsYnFfaW50X3hfczgpKSkKaW50MTZ4OF90IHZtdWxsYnFfaW50X3goaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGxicV9pbnRfeF91MTYpKSkKdWludDMyeDRfdCB2bXVsbGJxX2ludF94X3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsYnFfaW50X3hfdTE2KSkpCnVpbnQzMng0X3Qgdm11bGxicV9pbnRfeCh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsYnFfaW50X3hfdTMyKSkpCnVpbnQ2NHgyX3Qgdm11bGxicV9pbnRfeF91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbGJxX2ludF94X3UzMikpKQp1aW50NjR4Ml90IHZtdWxsYnFfaW50X3godWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbGJxX2ludF94X3U4KSkpCnVpbnQxNng4X3Qgdm11bGxicV9pbnRfeF91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsYnFfaW50X3hfdTgpKSkKdWludDE2eDhfdCB2bXVsbGJxX2ludF94KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGxicV9wb2x5X21fcDE2KSkpCnVpbnQzMng0X3Qgdm11bGxicV9wb2x5X21fcDE2KHVpbnQzMng0X3QsIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGxicV9wb2x5X21fcDE2KSkpCnVpbnQzMng0X3Qgdm11bGxicV9wb2x5X20odWludDMyeDRfdCwgdWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbGJxX3BvbHlfbV9wOCkpKQp1aW50MTZ4OF90IHZtdWxsYnFfcG9seV9tX3A4KHVpbnQxNng4X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGxicV9wb2x5X21fcDgpKSkKdWludDE2eDhfdCB2bXVsbGJxX3BvbHlfbSh1aW50MTZ4OF90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsYnFfcG9seV9wMTYpKSkKdWludDMyeDRfdCB2bXVsbGJxX3BvbHlfcDE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsYnFfcG9seV9wMTYpKSkKdWludDMyeDRfdCB2bXVsbGJxX3BvbHkodWludDE2eDhfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGxicV9wb2x5X3A4KSkpCnVpbnQxNng4X3Qgdm11bGxicV9wb2x5X3A4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsYnFfcG9seV9wOCkpKQp1aW50MTZ4OF90IHZtdWxsYnFfcG9seSh1aW50OHgxNl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbGJxX3BvbHlfeF9wMTYpKSkKdWludDMyeDRfdCB2bXVsbGJxX3BvbHlfeF9wMTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbGJxX3BvbHlfeF9wMTYpKSkKdWludDMyeDRfdCB2bXVsbGJxX3BvbHlfeCh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsYnFfcG9seV94X3A4KSkpCnVpbnQxNng4X3Qgdm11bGxicV9wb2x5X3hfcDgodWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbGJxX3BvbHlfeF9wOCkpKQp1aW50MTZ4OF90IHZtdWxsYnFfcG9seV94KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGx0cV9pbnRfbV9zMTYpKSkKaW50MzJ4NF90IHZtdWxsdHFfaW50X21fczE2KGludDMyeDRfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGx0cV9pbnRfbV9zMTYpKSkKaW50MzJ4NF90IHZtdWxsdHFfaW50X20oaW50MzJ4NF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbHRxX2ludF9tX3MzMikpKQppbnQ2NHgyX3Qgdm11bGx0cV9pbnRfbV9zMzIoaW50NjR4Ml90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbHRxX2ludF9tX3MzMikpKQppbnQ2NHgyX3Qgdm11bGx0cV9pbnRfbShpbnQ2NHgyX3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsdHFfaW50X21fczgpKSkKaW50MTZ4OF90IHZtdWxsdHFfaW50X21fczgoaW50MTZ4OF90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbHRxX2ludF9tX3M4KSkpCmludDE2eDhfdCB2bXVsbHRxX2ludF9tKGludDE2eDhfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGx0cV9pbnRfbV91MTYpKSkKdWludDMyeDRfdCB2bXVsbHRxX2ludF9tX3UxNih1aW50MzJ4NF90LCB1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsdHFfaW50X21fdTE2KSkpCnVpbnQzMng0X3Qgdm11bGx0cV9pbnRfbSh1aW50MzJ4NF90LCB1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsdHFfaW50X21fdTMyKSkpCnVpbnQ2NHgyX3Qgdm11bGx0cV9pbnRfbV91MzIodWludDY0eDJfdCwgdWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbHRxX2ludF9tX3UzMikpKQp1aW50NjR4Ml90IHZtdWxsdHFfaW50X20odWludDY0eDJfdCwgdWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbHRxX2ludF9tX3U4KSkpCnVpbnQxNng4X3Qgdm11bGx0cV9pbnRfbV91OCh1aW50MTZ4OF90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsdHFfaW50X21fdTgpKSkKdWludDE2eDhfdCB2bXVsbHRxX2ludF9tKHVpbnQxNng4X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGx0cV9pbnRfczE2KSkpCmludDMyeDRfdCB2bXVsbHRxX2ludF9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsdHFfaW50X3MxNikpKQppbnQzMng0X3Qgdm11bGx0cV9pbnQoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsdHFfaW50X3MzMikpKQppbnQ2NHgyX3Qgdm11bGx0cV9pbnRfczMyKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbHRxX2ludF9zMzIpKSkKaW50NjR4Ml90IHZtdWxsdHFfaW50KGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbHRxX2ludF9zOCkpKQppbnQxNng4X3Qgdm11bGx0cV9pbnRfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsdHFfaW50X3M4KSkpCmludDE2eDhfdCB2bXVsbHRxX2ludChpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGx0cV9pbnRfdTE2KSkpCnVpbnQzMng0X3Qgdm11bGx0cV9pbnRfdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsdHFfaW50X3UxNikpKQp1aW50MzJ4NF90IHZtdWxsdHFfaW50KHVpbnQxNng4X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsdHFfaW50X3UzMikpKQp1aW50NjR4Ml90IHZtdWxsdHFfaW50X3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbHRxX2ludF91MzIpKSkKdWludDY0eDJfdCB2bXVsbHRxX2ludCh1aW50MzJ4NF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbHRxX2ludF91OCkpKQp1aW50MTZ4OF90IHZtdWxsdHFfaW50X3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsdHFfaW50X3U4KSkpCnVpbnQxNng4X3Qgdm11bGx0cV9pbnQodWludDh4MTZfdCwgdWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGx0cV9pbnRfeF9zMTYpKSkKaW50MzJ4NF90IHZtdWxsdHFfaW50X3hfczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsdHFfaW50X3hfczE2KSkpCmludDMyeDRfdCB2bXVsbHRxX2ludF94KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsdHFfaW50X3hfczMyKSkpCmludDY0eDJfdCB2bXVsbHRxX2ludF94X3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbHRxX2ludF94X3MzMikpKQppbnQ2NHgyX3Qgdm11bGx0cV9pbnRfeChpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbHRxX2ludF94X3M4KSkpCmludDE2eDhfdCB2bXVsbHRxX2ludF94X3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsdHFfaW50X3hfczgpKSkKaW50MTZ4OF90IHZtdWxsdHFfaW50X3goaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGx0cV9pbnRfeF91MTYpKSkKdWludDMyeDRfdCB2bXVsbHRxX2ludF94X3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsdHFfaW50X3hfdTE2KSkpCnVpbnQzMng0X3Qgdm11bGx0cV9pbnRfeCh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsdHFfaW50X3hfdTMyKSkpCnVpbnQ2NHgyX3Qgdm11bGx0cV9pbnRfeF91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbHRxX2ludF94X3UzMikpKQp1aW50NjR4Ml90IHZtdWxsdHFfaW50X3godWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbHRxX2ludF94X3U4KSkpCnVpbnQxNng4X3Qgdm11bGx0cV9pbnRfeF91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsdHFfaW50X3hfdTgpKSkKdWludDE2eDhfdCB2bXVsbHRxX2ludF94KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGx0cV9wb2x5X21fcDE2KSkpCnVpbnQzMng0X3Qgdm11bGx0cV9wb2x5X21fcDE2KHVpbnQzMng0X3QsIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGx0cV9wb2x5X21fcDE2KSkpCnVpbnQzMng0X3Qgdm11bGx0cV9wb2x5X20odWludDMyeDRfdCwgdWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbHRxX3BvbHlfbV9wOCkpKQp1aW50MTZ4OF90IHZtdWxsdHFfcG9seV9tX3A4KHVpbnQxNng4X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGx0cV9wb2x5X21fcDgpKSkKdWludDE2eDhfdCB2bXVsbHRxX3BvbHlfbSh1aW50MTZ4OF90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsdHFfcG9seV9wMTYpKSkKdWludDMyeDRfdCB2bXVsbHRxX3BvbHlfcDE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsdHFfcG9seV9wMTYpKSkKdWludDMyeDRfdCB2bXVsbHRxX3BvbHkodWludDE2eDhfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bGx0cV9wb2x5X3A4KSkpCnVpbnQxNng4X3Qgdm11bGx0cV9wb2x5X3A4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsdHFfcG9seV9wOCkpKQp1aW50MTZ4OF90IHZtdWxsdHFfcG9seSh1aW50OHgxNl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbHRxX3BvbHlfeF9wMTYpKSkKdWludDMyeDRfdCB2bXVsbHRxX3BvbHlfeF9wMTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbHRxX3BvbHlfeF9wMTYpKSkKdWludDMyeDRfdCB2bXVsbHRxX3BvbHlfeCh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxsdHFfcG9seV94X3A4KSkpCnVpbnQxNng4X3Qgdm11bGx0cV9wb2x5X3hfcDgodWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVsbHRxX3BvbHlfeF9wOCkpKQp1aW50MTZ4OF90IHZtdWxsdHFfcG9seV94KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfbV9uX3MxNikpKQppbnQxNng4X3Qgdm11bHFfbV9uX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV9tX25fczE2KSkpCmludDE2eDhfdCB2bXVscV9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX21fbl9zMzIpKSkKaW50MzJ4NF90IHZtdWxxX21fbl9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfbV9uX3MzMikpKQppbnQzMng0X3Qgdm11bHFfbShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV9tX25fczgpKSkKaW50OHgxNl90IHZtdWxxX21fbl9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX21fbl9zOCkpKQppbnQ4eDE2X3Qgdm11bHFfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX21fbl91MTYpKSkKdWludDE2eDhfdCB2bXVscV9tX25fdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX21fbl91MTYpKSkKdWludDE2eDhfdCB2bXVscV9tKHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX21fbl91MzIpKSkKdWludDMyeDRfdCB2bXVscV9tX25fdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX21fbl91MzIpKSkKdWludDMyeDRfdCB2bXVscV9tKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX21fbl91OCkpKQp1aW50OHgxNl90IHZtdWxxX21fbl91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX21fbl91OCkpKQp1aW50OHgxNl90IHZtdWxxX20odWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV9tX3MxNikpKQppbnQxNng4X3Qgdm11bHFfbV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV9tX3MxNikpKQppbnQxNng4X3Qgdm11bHFfbShpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX21fczMyKSkpCmludDMyeDRfdCB2bXVscV9tX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX21fczMyKSkpCmludDMyeDRfdCB2bXVscV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfbV9zOCkpKQppbnQ4eDE2X3Qgdm11bHFfbV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX21fczgpKSkKaW50OHgxNl90IHZtdWxxX20oaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV9tX3UxNikpKQp1aW50MTZ4OF90IHZtdWxxX21fdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfbV91MTYpKSkKdWludDE2eDhfdCB2bXVscV9tKHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfbV91MzIpKSkKdWludDMyeDRfdCB2bXVscV9tX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX21fdTMyKSkpCnVpbnQzMng0X3Qgdm11bHFfbSh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX21fdTgpKSkKdWludDh4MTZfdCB2bXVscV9tX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfbV91OCkpKQp1aW50OHgxNl90IHZtdWxxX20odWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV9uX3MxNikpKQppbnQxNng4X3Qgdm11bHFfbl9zMTYoaW50MTZ4OF90LCBpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV9uX3MxNikpKQppbnQxNng4X3Qgdm11bHEoaW50MTZ4OF90LCBpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV9uX3MzMikpKQppbnQzMng0X3Qgdm11bHFfbl9zMzIoaW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV9uX3MzMikpKQppbnQzMng0X3Qgdm11bHEoaW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV9uX3M4KSkpCmludDh4MTZfdCB2bXVscV9uX3M4KGludDh4MTZfdCwgaW50OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV9uX3M4KSkpCmludDh4MTZfdCB2bXVscShpbnQ4eDE2X3QsIGludDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfbl91MTYpKSkKdWludDE2eDhfdCB2bXVscV9uX3UxNih1aW50MTZ4OF90LCB1aW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfbl91MTYpKSkKdWludDE2eDhfdCB2bXVscSh1aW50MTZ4OF90LCB1aW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfbl91MzIpKSkKdWludDMyeDRfdCB2bXVscV9uX3UzMih1aW50MzJ4NF90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfbl91MzIpKSkKdWludDMyeDRfdCB2bXVscSh1aW50MzJ4NF90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfbl91OCkpKQp1aW50OHgxNl90IHZtdWxxX25fdTgodWludDh4MTZfdCwgdWludDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfbl91OCkpKQp1aW50OHgxNl90IHZtdWxxKHVpbnQ4eDE2X3QsIHVpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX3MxNikpKQppbnQxNng4X3Qgdm11bHFfczE2KGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV9zMTYpKSkKaW50MTZ4OF90IHZtdWxxKGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV9zMzIpKSkKaW50MzJ4NF90IHZtdWxxX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfczMyKSkpCmludDMyeDRfdCB2bXVscShpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfczgpKSkKaW50OHgxNl90IHZtdWxxX3M4KGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV9zOCkpKQppbnQ4eDE2X3Qgdm11bHEoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX3UxNikpKQp1aW50MTZ4OF90IHZtdWxxX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV91MTYpKSkKdWludDE2eDhfdCB2bXVscSh1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV91MzIpKSkKdWludDMyeDRfdCB2bXVscV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfdTMyKSkpCnVpbnQzMng0X3Qgdm11bHEodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfdTgpKSkKdWludDh4MTZfdCB2bXVscV91OCh1aW50OHgxNl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV91OCkpKQp1aW50OHgxNl90IHZtdWxxKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX3hfbl9zMTYpKSkKaW50MTZ4OF90IHZtdWxxX3hfbl9zMTYoaW50MTZ4OF90LCBpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX3hfbl9zMTYpKSkKaW50MTZ4OF90IHZtdWxxX3goaW50MTZ4OF90LCBpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX3hfbl9zMzIpKSkKaW50MzJ4NF90IHZtdWxxX3hfbl9zMzIoaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX3hfbl9zMzIpKSkKaW50MzJ4NF90IHZtdWxxX3goaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX3hfbl9zOCkpKQppbnQ4eDE2X3Qgdm11bHFfeF9uX3M4KGludDh4MTZfdCwgaW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX3hfbl9zOCkpKQppbnQ4eDE2X3Qgdm11bHFfeChpbnQ4eDE2X3QsIGludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV94X25fdTE2KSkpCnVpbnQxNng4X3Qgdm11bHFfeF9uX3UxNih1aW50MTZ4OF90LCB1aW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV94X25fdTE2KSkpCnVpbnQxNng4X3Qgdm11bHFfeCh1aW50MTZ4OF90LCB1aW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV94X25fdTMyKSkpCnVpbnQzMng0X3Qgdm11bHFfeF9uX3UzMih1aW50MzJ4NF90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV94X25fdTMyKSkpCnVpbnQzMng0X3Qgdm11bHFfeCh1aW50MzJ4NF90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV94X25fdTgpKSkKdWludDh4MTZfdCB2bXVscV94X25fdTgodWludDh4MTZfdCwgdWludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV94X25fdTgpKSkKdWludDh4MTZfdCB2bXVscV94KHVpbnQ4eDE2X3QsIHVpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfeF9zMTYpKSkKaW50MTZ4OF90IHZtdWxxX3hfczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX3hfczE2KSkpCmludDE2eDhfdCB2bXVscV94KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX3hfczMyKSkpCmludDMyeDRfdCB2bXVscV94X3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV94X3MzMikpKQppbnQzMng0X3Qgdm11bHFfeChpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV94X3M4KSkpCmludDh4MTZfdCB2bXVscV94X3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX3hfczgpKSkKaW50OHgxNl90IHZtdWxxX3goaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfeF91MTYpKSkKdWludDE2eDhfdCB2bXVscV94X3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX3hfdTE2KSkpCnVpbnQxNng4X3Qgdm11bHFfeCh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX3hfdTMyKSkpCnVpbnQzMng0X3Qgdm11bHFfeF91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV94X3UzMikpKQp1aW50MzJ4NF90IHZtdWxxX3godWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV94X3U4KSkpCnVpbnQ4eDE2X3Qgdm11bHFfeF91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX3hfdTgpKSkKdWludDh4MTZfdCB2bXVscV94KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm12bnFfbV9uX3MxNikpKQppbnQxNng4X3Qgdm12bnFfbV9uX3MxNihpbnQxNng4X3QsIGludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm12bnFfbV9uX3MxNikpKQppbnQxNng4X3Qgdm12bnFfbShpbnQxNng4X3QsIGludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm12bnFfbV9uX3MzMikpKQppbnQzMng0X3Qgdm12bnFfbV9uX3MzMihpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm12bnFfbV9uX3MzMikpKQppbnQzMng0X3Qgdm12bnFfbShpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm12bnFfbV9uX3UxNikpKQp1aW50MTZ4OF90IHZtdm5xX21fbl91MTYodWludDE2eDhfdCwgdWludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm12bnFfbV9uX3UxNikpKQp1aW50MTZ4OF90IHZtdm5xX20odWludDE2eDhfdCwgdWludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm12bnFfbV9uX3UzMikpKQp1aW50MzJ4NF90IHZtdm5xX21fbl91MzIodWludDMyeDRfdCwgdWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm12bnFfbV9uX3UzMikpKQp1aW50MzJ4NF90IHZtdm5xX20odWludDMyeDRfdCwgdWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm12bnFfbV9zMTYpKSkKaW50MTZ4OF90IHZtdm5xX21fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztdm5xX21fczE2KSkpCmludDE2eDhfdCB2bXZucV9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztdm5xX21fczMyKSkpCmludDMyeDRfdCB2bXZucV9tX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXZucV9tX3MzMikpKQppbnQzMng0X3Qgdm12bnFfbShpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXZucV9tX3M4KSkpCmludDh4MTZfdCB2bXZucV9tX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztdm5xX21fczgpKSkKaW50OHgxNl90IHZtdm5xX20oaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm12bnFfbV91MTYpKSkKdWludDE2eDhfdCB2bXZucV9tX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztdm5xX21fdTE2KSkpCnVpbnQxNng4X3Qgdm12bnFfbSh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztdm5xX21fdTMyKSkpCnVpbnQzMng0X3Qgdm12bnFfbV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXZucV9tX3UzMikpKQp1aW50MzJ4NF90IHZtdm5xX20odWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXZucV9tX3U4KSkpCnVpbnQ4eDE2X3Qgdm12bnFfbV91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztdm5xX21fdTgpKSkKdWludDh4MTZfdCB2bXZucV9tKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm12bnFfbl9zMTYpKSkKaW50MTZ4OF90IHZtdm5xX25fczE2KGludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztdm5xX25fczMyKSkpCmludDMyeDRfdCB2bXZucV9uX3MzMihpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXZucV9uX3UxNikpKQp1aW50MTZ4OF90IHZtdm5xX25fdTE2KHVpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXZucV9uX3UzMikpKQp1aW50MzJ4NF90IHZtdm5xX25fdTMyKHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXZucV9zMTYpKSkKaW50MTZ4OF90IHZtdm5xX3MxNihpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztdm5xX3MxNikpKQppbnQxNng4X3Qgdm12bnEoaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXZucV9zMzIpKSkKaW50MzJ4NF90IHZtdm5xX3MzMihpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztdm5xX3MzMikpKQppbnQzMng0X3Qgdm12bnEoaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXZucV9zOCkpKQppbnQ4eDE2X3Qgdm12bnFfczgoaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXZucV9zOCkpKQppbnQ4eDE2X3Qgdm12bnEoaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXZucV91MTYpKSkKdWludDE2eDhfdCB2bXZucV91MTYodWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm12bnFfdTE2KSkpCnVpbnQxNng4X3Qgdm12bnEodWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm12bnFfdTMyKSkpCnVpbnQzMng0X3Qgdm12bnFfdTMyKHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztdm5xX3UzMikpKQp1aW50MzJ4NF90IHZtdm5xKHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztdm5xX3U4KSkpCnVpbnQ4eDE2X3Qgdm12bnFfdTgodWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm12bnFfdTgpKSkKdWludDh4MTZfdCB2bXZucSh1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXZucV94X25fczE2KSkpCmludDE2eDhfdCB2bXZucV94X25fczE2KGludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm12bnFfeF9uX3MzMikpKQppbnQzMng0X3Qgdm12bnFfeF9uX3MzMihpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztdm5xX3hfbl91MTYpKSkKdWludDE2eDhfdCB2bXZucV94X25fdTE2KHVpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztdm5xX3hfbl91MzIpKSkKdWludDMyeDRfdCB2bXZucV94X25fdTMyKHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztdm5xX3hfczE2KSkpCmludDE2eDhfdCB2bXZucV94X3MxNihpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm12bnFfeF9zMTYpKSkKaW50MTZ4OF90IHZtdm5xX3goaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztdm5xX3hfczMyKSkpCmludDMyeDRfdCB2bXZucV94X3MzMihpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm12bnFfeF9zMzIpKSkKaW50MzJ4NF90IHZtdm5xX3goaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztdm5xX3hfczgpKSkKaW50OHgxNl90IHZtdm5xX3hfczgoaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztdm5xX3hfczgpKSkKaW50OHgxNl90IHZtdm5xX3goaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Ztdm5xX3hfdTE2KSkpCnVpbnQxNng4X3Qgdm12bnFfeF91MTYodWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXZucV94X3UxNikpKQp1aW50MTZ4OF90IHZtdm5xX3godWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXZucV94X3UzMikpKQp1aW50MzJ4NF90IHZtdm5xX3hfdTMyKHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm12bnFfeF91MzIpKSkKdWludDMyeDRfdCB2bXZucV94KHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm12bnFfeF91OCkpKQp1aW50OHgxNl90IHZtdm5xX3hfdTgodWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXZucV94X3U4KSkpCnVpbnQ4eDE2X3Qgdm12bnFfeCh1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZuZWdxX21fczE2KSkpCmludDE2eDhfdCB2bmVncV9tX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bmVncV9tX3MxNikpKQppbnQxNng4X3Qgdm5lZ3FfbShpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bmVncV9tX3MzMikpKQppbnQzMng0X3Qgdm5lZ3FfbV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm5lZ3FfbV9zMzIpKSkKaW50MzJ4NF90IHZuZWdxX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm5lZ3FfbV9zOCkpKQppbnQ4eDE2X3Qgdm5lZ3FfbV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bmVncV9tX3M4KSkpCmludDh4MTZfdCB2bmVncV9tKGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZuZWdxX3MxNikpKQppbnQxNng4X3Qgdm5lZ3FfczE2KGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm5lZ3FfczE2KSkpCmludDE2eDhfdCB2bmVncShpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZuZWdxX3MzMikpKQppbnQzMng0X3Qgdm5lZ3FfczMyKGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm5lZ3FfczMyKSkpCmludDMyeDRfdCB2bmVncShpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZuZWdxX3M4KSkpCmludDh4MTZfdCB2bmVncV9zOChpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZuZWdxX3M4KSkpCmludDh4MTZfdCB2bmVncShpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZuZWdxX3hfczE2KSkpCmludDE2eDhfdCB2bmVncV94X3MxNihpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm5lZ3FfeF9zMTYpKSkKaW50MTZ4OF90IHZuZWdxX3goaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZuZWdxX3hfczMyKSkpCmludDMyeDRfdCB2bmVncV94X3MzMihpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm5lZ3FfeF9zMzIpKSkKaW50MzJ4NF90IHZuZWdxX3goaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZuZWdxX3hfczgpKSkKaW50OHgxNl90IHZuZWdxX3hfczgoaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZuZWdxX3hfczgpKSkKaW50OHgxNl90IHZuZWdxX3goaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zvcm5xX21fczE2KSkpCmludDE2eDhfdCB2b3JucV9tX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zvcm5xX21fczE2KSkpCmludDE2eDhfdCB2b3JucV9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ybnFfbV9zMzIpKSkKaW50MzJ4NF90IHZvcm5xX21fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ybnFfbV9zMzIpKSkKaW50MzJ4NF90IHZvcm5xX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JucV9tX3M4KSkpCmludDh4MTZfdCB2b3JucV9tX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ybnFfbV9zOCkpKQppbnQ4eDE2X3Qgdm9ybnFfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zvcm5xX21fdTE2KSkpCnVpbnQxNng4X3Qgdm9ybnFfbV91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JucV9tX3UxNikpKQp1aW50MTZ4OF90IHZvcm5xX20odWludDE2eDhfdCwgdWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JucV9tX3UzMikpKQp1aW50MzJ4NF90IHZvcm5xX21fdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ybnFfbV91MzIpKSkKdWludDMyeDRfdCB2b3JucV9tKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ybnFfbV91OCkpKQp1aW50OHgxNl90IHZvcm5xX21fdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JucV9tX3U4KSkpCnVpbnQ4eDE2X3Qgdm9ybnFfbSh1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zvcm5xX3MxNikpKQppbnQxNng4X3Qgdm9ybnFfczE2KGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JucV9zMTYpKSkKaW50MTZ4OF90IHZvcm5xKGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JucV9zMzIpKSkKaW50MzJ4NF90IHZvcm5xX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ybnFfczMyKSkpCmludDMyeDRfdCB2b3JucShpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ybnFfczgpKSkKaW50OHgxNl90IHZvcm5xX3M4KGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JucV9zOCkpKQppbnQ4eDE2X3Qgdm9ybnEoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zvcm5xX3UxNikpKQp1aW50MTZ4OF90IHZvcm5xX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JucV91MTYpKSkKdWludDE2eDhfdCB2b3JucSh1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JucV91MzIpKSkKdWludDMyeDRfdCB2b3JucV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ybnFfdTMyKSkpCnVpbnQzMng0X3Qgdm9ybnEodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ybnFfdTgpKSkKdWludDh4MTZfdCB2b3JucV91OCh1aW50OHgxNl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JucV91OCkpKQp1aW50OHgxNl90IHZvcm5xKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zvcm5xX3hfczE2KSkpCmludDE2eDhfdCB2b3JucV94X3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JucV94X3MxNikpKQppbnQxNng4X3Qgdm9ybnFfeChpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JucV94X3MzMikpKQppbnQzMng0X3Qgdm9ybnFfeF9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ybnFfeF9zMzIpKSkKaW50MzJ4NF90IHZvcm5xX3goaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ybnFfeF9zOCkpKQppbnQ4eDE2X3Qgdm9ybnFfeF9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JucV94X3M4KSkpCmludDh4MTZfdCB2b3JucV94KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zvcm5xX3hfdTE2KSkpCnVpbnQxNng4X3Qgdm9ybnFfeF91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JucV94X3UxNikpKQp1aW50MTZ4OF90IHZvcm5xX3godWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JucV94X3UzMikpKQp1aW50MzJ4NF90IHZvcm5xX3hfdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ybnFfeF91MzIpKSkKdWludDMyeDRfdCB2b3JucV94KHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ybnFfeF91OCkpKQp1aW50OHgxNl90IHZvcm5xX3hfdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JucV94X3U4KSkpCnVpbnQ4eDE2X3Qgdm9ybnFfeCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZvcnJxX21fbl9zMTYpKSkKaW50MTZ4OF90IHZvcnJxX21fbl9zMTYoaW50MTZ4OF90LCBpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZvcnJxX21fbl9zMTYpKSkKaW50MTZ4OF90IHZvcnJxX21fbihpbnQxNng4X3QsIGludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ycnFfbV9uX3MzMikpKQppbnQzMng0X3Qgdm9ycnFfbV9uX3MzMihpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ycnFfbV9uX3MzMikpKQppbnQzMng0X3Qgdm9ycnFfbV9uKGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JycV9tX25fdTE2KSkpCnVpbnQxNng4X3Qgdm9ycnFfbV9uX3UxNih1aW50MTZ4OF90LCB1aW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JycV9tX25fdTE2KSkpCnVpbnQxNng4X3Qgdm9ycnFfbV9uKHVpbnQxNng4X3QsIHVpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZvcnJxX21fbl91MzIpKSkKdWludDMyeDRfdCB2b3JycV9tX25fdTMyKHVpbnQzMng0X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZvcnJxX21fbl91MzIpKSkKdWludDMyeDRfdCB2b3JycV9tX24odWludDMyeDRfdCwgdWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ycnFfbV9zMTYpKSkKaW50MTZ4OF90IHZvcnJxX21fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ycnFfbV9zMTYpKSkKaW50MTZ4OF90IHZvcnJxX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JycV9tX3MzMikpKQppbnQzMng0X3Qgdm9ycnFfbV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JycV9tX3MzMikpKQppbnQzMng0X3Qgdm9ycnFfbShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZvcnJxX21fczgpKSkKaW50OHgxNl90IHZvcnJxX21fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JycV9tX3M4KSkpCmludDh4MTZfdCB2b3JycV9tKGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ycnFfbV91MTYpKSkKdWludDE2eDhfdCB2b3JycV9tX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZvcnJxX21fdTE2KSkpCnVpbnQxNng4X3Qgdm9ycnFfbSh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZvcnJxX21fdTMyKSkpCnVpbnQzMng0X3Qgdm9ycnFfbV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JycV9tX3UzMikpKQp1aW50MzJ4NF90IHZvcnJxX20odWludDMyeDRfdCwgdWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JycV9tX3U4KSkpCnVpbnQ4eDE2X3Qgdm9ycnFfbV91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZvcnJxX21fdTgpKSkKdWludDh4MTZfdCB2b3JycV9tKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ycnFfbl9zMTYpKSkKaW50MTZ4OF90IHZvcnJxX25fczE2KGludDE2eDhfdCwgaW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ycnFfbl9zMTYpKSkKaW50MTZ4OF90IHZvcnJxKGludDE2eDhfdCwgaW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ycnFfbl9zMzIpKSkKaW50MzJ4NF90IHZvcnJxX25fczMyKGludDMyeDRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ycnFfbl9zMzIpKSkKaW50MzJ4NF90IHZvcnJxKGludDMyeDRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ycnFfbl91MTYpKSkKdWludDE2eDhfdCB2b3JycV9uX3UxNih1aW50MTZ4OF90LCB1aW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ycnFfbl91MTYpKSkKdWludDE2eDhfdCB2b3JycSh1aW50MTZ4OF90LCB1aW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ycnFfbl91MzIpKSkKdWludDMyeDRfdCB2b3JycV9uX3UzMih1aW50MzJ4NF90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ycnFfbl91MzIpKSkKdWludDMyeDRfdCB2b3JycSh1aW50MzJ4NF90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ycnFfczE2KSkpCmludDE2eDhfdCB2b3JycV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZvcnJxX3MxNikpKQppbnQxNng4X3Qgdm9ycnEoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZvcnJxX3MzMikpKQppbnQzMng0X3Qgdm9ycnFfczMyKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JycV9zMzIpKSkKaW50MzJ4NF90IHZvcnJxKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JycV9zOCkpKQppbnQ4eDE2X3Qgdm9ycnFfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZvcnJxX3M4KSkpCmludDh4MTZfdCB2b3JycShpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ycnFfdTE2KSkpCnVpbnQxNng4X3Qgdm9ycnFfdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZvcnJxX3UxNikpKQp1aW50MTZ4OF90IHZvcnJxKHVpbnQxNng4X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZvcnJxX3UzMikpKQp1aW50MzJ4NF90IHZvcnJxX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JycV91MzIpKSkKdWludDMyeDRfdCB2b3JycSh1aW50MzJ4NF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JycV91OCkpKQp1aW50OHgxNl90IHZvcnJxX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZvcnJxX3U4KSkpCnVpbnQ4eDE2X3Qgdm9ycnEodWludDh4MTZfdCwgdWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ycnFfeF9zMTYpKSkKaW50MTZ4OF90IHZvcnJxX3hfczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZvcnJxX3hfczE2KSkpCmludDE2eDhfdCB2b3JycV94KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZvcnJxX3hfczMyKSkpCmludDMyeDRfdCB2b3JycV94X3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JycV94X3MzMikpKQppbnQzMng0X3Qgdm9ycnFfeChpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JycV94X3M4KSkpCmludDh4MTZfdCB2b3JycV94X3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZvcnJxX3hfczgpKSkKaW50OHgxNl90IHZvcnJxX3goaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ycnFfeF91MTYpKSkKdWludDE2eDhfdCB2b3JycV94X3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZvcnJxX3hfdTE2KSkpCnVpbnQxNng4X3Qgdm9ycnFfeCh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZvcnJxX3hfdTMyKSkpCnVpbnQzMng0X3Qgdm9ycnFfeF91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JycV94X3UzMikpKQp1aW50MzJ4NF90IHZvcnJxX3godWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JycV94X3U4KSkpCnVpbnQ4eDE2X3Qgdm9ycnFfeF91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZvcnJxX3hfdTgpKSkKdWludDh4MTZfdCB2b3JycV94KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnBub3QpKSkKbXZlX3ByZWQxNl90IHZwbm90KG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnBzZWxxX3MxNikpKQppbnQxNng4X3QgdnBzZWxxX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cHNlbHFfczE2KSkpCmludDE2eDhfdCB2cHNlbHEoaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnBzZWxxX3MzMikpKQppbnQzMng0X3QgdnBzZWxxX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cHNlbHFfczMyKSkpCmludDMyeDRfdCB2cHNlbHEoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnBzZWxxX3M2NCkpKQppbnQ2NHgyX3QgdnBzZWxxX3M2NChpbnQ2NHgyX3QsIGludDY0eDJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cHNlbHFfczY0KSkpCmludDY0eDJfdCB2cHNlbHEoaW50NjR4Ml90LCBpbnQ2NHgyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnBzZWxxX3M4KSkpCmludDh4MTZfdCB2cHNlbHFfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnBzZWxxX3M4KSkpCmludDh4MTZfdCB2cHNlbHEoaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnBzZWxxX3UxNikpKQp1aW50MTZ4OF90IHZwc2VscV91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cHNlbHFfdTE2KSkpCnVpbnQxNng4X3QgdnBzZWxxKHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnBzZWxxX3UzMikpKQp1aW50MzJ4NF90IHZwc2VscV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cHNlbHFfdTMyKSkpCnVpbnQzMng0X3QgdnBzZWxxKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnBzZWxxX3U2NCkpKQp1aW50NjR4Ml90IHZwc2VscV91NjQodWludDY0eDJfdCwgdWludDY0eDJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cHNlbHFfdTY0KSkpCnVpbnQ2NHgyX3QgdnBzZWxxKHVpbnQ2NHgyX3QsIHVpbnQ2NHgyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnBzZWxxX3U4KSkpCnVpbnQ4eDE2X3QgdnBzZWxxX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnBzZWxxX3U4KSkpCnVpbnQ4eDE2X3QgdnBzZWxxKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFhYnNxX21fczE2KSkpCmludDE2eDhfdCB2cWFic3FfbV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFhYnNxX21fczE2KSkpCmludDE2eDhfdCB2cWFic3FfbShpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWFic3FfbV9zMzIpKSkKaW50MzJ4NF90IHZxYWJzcV9tX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWFic3FfbV9zMzIpKSkKaW50MzJ4NF90IHZxYWJzcV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxYWJzcV9tX3M4KSkpCmludDh4MTZfdCB2cWFic3FfbV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWFic3FfbV9zOCkpKQppbnQ4eDE2X3QgdnFhYnNxX20oaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFhYnNxX3MxNikpKQppbnQxNng4X3QgdnFhYnNxX3MxNihpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxYWJzcV9zMTYpKSkKaW50MTZ4OF90IHZxYWJzcShpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxYWJzcV9zMzIpKSkKaW50MzJ4NF90IHZxYWJzcV9zMzIoaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWFic3FfczMyKSkpCmludDMyeDRfdCB2cWFic3EoaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWFic3FfczgpKSkKaW50OHgxNl90IHZxYWJzcV9zOChpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxYWJzcV9zOCkpKQppbnQ4eDE2X3QgdnFhYnNxKGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFhZGRxX21fbl9zMTYpKSkKaW50MTZ4OF90IHZxYWRkcV9tX25fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxYWRkcV9tX25fczE2KSkpCmludDE2eDhfdCB2cWFkZHFfbShpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWFkZHFfbV9uX3MzMikpKQppbnQzMng0X3QgdnFhZGRxX21fbl9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFhZGRxX21fbl9zMzIpKSkKaW50MzJ4NF90IHZxYWRkcV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxYWRkcV9tX25fczgpKSkKaW50OHgxNl90IHZxYWRkcV9tX25fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWFkZHFfbV9uX3M4KSkpCmludDh4MTZfdCB2cWFkZHFfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxYWRkcV9tX25fdTE2KSkpCnVpbnQxNng4X3QgdnFhZGRxX21fbl91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgdWludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFhZGRxX21fbl91MTYpKSkKdWludDE2eDhfdCB2cWFkZHFfbSh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCB1aW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWFkZHFfbV9uX3UzMikpKQp1aW50MzJ4NF90IHZxYWRkcV9tX25fdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxYWRkcV9tX25fdTMyKSkpCnVpbnQzMng0X3QgdnFhZGRxX20odWludDMyeDRfdCwgdWludDMyeDRfdCwgdWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFhZGRxX21fbl91OCkpKQp1aW50OHgxNl90IHZxYWRkcV9tX25fdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWFkZHFfbV9uX3U4KSkpCnVpbnQ4eDE2X3QgdnFhZGRxX20odWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWFkZHFfbV9zMTYpKSkKaW50MTZ4OF90IHZxYWRkcV9tX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxYWRkcV9tX3MxNikpKQppbnQxNng4X3QgdnFhZGRxX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWFkZHFfbV9zMzIpKSkKaW50MzJ4NF90IHZxYWRkcV9tX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxYWRkcV9tX3MzMikpKQppbnQzMng0X3QgdnFhZGRxX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWFkZHFfbV9zOCkpKQppbnQ4eDE2X3QgdnFhZGRxX21fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWFkZHFfbV9zOCkpKQppbnQ4eDE2X3QgdnFhZGRxX20oaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWFkZHFfbV91MTYpKSkKdWludDE2eDhfdCB2cWFkZHFfbV91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWFkZHFfbV91MTYpKSkKdWludDE2eDhfdCB2cWFkZHFfbSh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxYWRkcV9tX3UzMikpKQp1aW50MzJ4NF90IHZxYWRkcV9tX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxYWRkcV9tX3UzMikpKQp1aW50MzJ4NF90IHZxYWRkcV9tKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFhZGRxX21fdTgpKSkKdWludDh4MTZfdCB2cWFkZHFfbV91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxYWRkcV9tX3U4KSkpCnVpbnQ4eDE2X3QgdnFhZGRxX20odWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWFkZHFfbl9zMTYpKSkKaW50MTZ4OF90IHZxYWRkcV9uX3MxNihpbnQxNng4X3QsIGludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxYWRkcV9uX3MxNikpKQppbnQxNng4X3QgdnFhZGRxKGludDE2eDhfdCwgaW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFhZGRxX25fczMyKSkpCmludDMyeDRfdCB2cWFkZHFfbl9zMzIoaW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWFkZHFfbl9zMzIpKSkKaW50MzJ4NF90IHZxYWRkcShpbnQzMng0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxYWRkcV9uX3M4KSkpCmludDh4MTZfdCB2cWFkZHFfbl9zOChpbnQ4eDE2X3QsIGludDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFhZGRxX25fczgpKSkKaW50OHgxNl90IHZxYWRkcShpbnQ4eDE2X3QsIGludDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFhZGRxX25fdTE2KSkpCnVpbnQxNng4X3QgdnFhZGRxX25fdTE2KHVpbnQxNng4X3QsIHVpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWFkZHFfbl91MTYpKSkKdWludDE2eDhfdCB2cWFkZHEodWludDE2eDhfdCwgdWludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxYWRkcV9uX3UzMikpKQp1aW50MzJ4NF90IHZxYWRkcV9uX3UzMih1aW50MzJ4NF90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFhZGRxX25fdTMyKSkpCnVpbnQzMng0X3QgdnFhZGRxKHVpbnQzMng0X3QsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWFkZHFfbl91OCkpKQp1aW50OHgxNl90IHZxYWRkcV9uX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxYWRkcV9uX3U4KSkpCnVpbnQ4eDE2X3QgdnFhZGRxKHVpbnQ4eDE2X3QsIHVpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxYWRkcV9zMTYpKSkKaW50MTZ4OF90IHZxYWRkcV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxYWRkcV9zMTYpKSkKaW50MTZ4OF90IHZxYWRkcShpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFhZGRxX3MzMikpKQppbnQzMng0X3QgdnFhZGRxX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFhZGRxX3MzMikpKQppbnQzMng0X3QgdnFhZGRxKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWFkZHFfczgpKSkKaW50OHgxNl90IHZxYWRkcV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFhZGRxX3M4KSkpCmludDh4MTZfdCB2cWFkZHEoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxYWRkcV91MTYpKSkKdWludDE2eDhfdCB2cWFkZHFfdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxYWRkcV91MTYpKSkKdWludDE2eDhfdCB2cWFkZHEodWludDE2eDhfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFhZGRxX3UzMikpKQp1aW50MzJ4NF90IHZxYWRkcV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFhZGRxX3UzMikpKQp1aW50MzJ4NF90IHZxYWRkcSh1aW50MzJ4NF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWFkZHFfdTgpKSkKdWludDh4MTZfdCB2cWFkZHFfdTgodWludDh4MTZfdCwgdWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFhZGRxX3U4KSkpCnVpbnQ4eDE2X3QgdnFhZGRxKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sYWRocV9tX3MxNikpKQppbnQxNng4X3QgdnFkbWxhZGhxX21fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbWxhZGhxX21fczE2KSkpCmludDE2eDhfdCB2cWRtbGFkaHFfbShpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sYWRocV9tX3MzMikpKQppbnQzMng0X3QgdnFkbWxhZGhxX21fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbWxhZGhxX21fczMyKSkpCmludDMyeDRfdCB2cWRtbGFkaHFfbShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sYWRocV9tX3M4KSkpCmludDh4MTZfdCB2cWRtbGFkaHFfbV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sYWRocV9tX3M4KSkpCmludDh4MTZfdCB2cWRtbGFkaHFfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sYWRocV9zMTYpKSkKaW50MTZ4OF90IHZxZG1sYWRocV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbWxhZGhxX3MxNikpKQppbnQxNng4X3QgdnFkbWxhZGhxKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sYWRocV9zMzIpKSkKaW50MzJ4NF90IHZxZG1sYWRocV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbWxhZGhxX3MzMikpKQppbnQzMng0X3QgdnFkbWxhZGhxKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sYWRocV9zOCkpKQppbnQ4eDE2X3QgdnFkbWxhZGhxX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sYWRocV9zOCkpKQppbnQ4eDE2X3QgdnFkbWxhZGhxKGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sYWRoeHFfbV9zMTYpKSkKaW50MTZ4OF90IHZxZG1sYWRoeHFfbV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbGFkaHhxX21fczE2KSkpCmludDE2eDhfdCB2cWRtbGFkaHhxX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbGFkaHhxX21fczMyKSkpCmludDMyeDRfdCB2cWRtbGFkaHhxX21fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbWxhZGh4cV9tX3MzMikpKQppbnQzMng0X3QgdnFkbWxhZGh4cV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbWxhZGh4cV9tX3M4KSkpCmludDh4MTZfdCB2cWRtbGFkaHhxX21fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbGFkaHhxX21fczgpKSkKaW50OHgxNl90IHZxZG1sYWRoeHFfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sYWRoeHFfczE2KSkpCmludDE2eDhfdCB2cWRtbGFkaHhxX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbGFkaHhxX3MxNikpKQppbnQxNng4X3QgdnFkbWxhZGh4cShpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbGFkaHhxX3MzMikpKQppbnQzMng0X3QgdnFkbWxhZGh4cV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbWxhZGh4cV9zMzIpKSkKaW50MzJ4NF90IHZxZG1sYWRoeHEoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbWxhZGh4cV9zOCkpKQppbnQ4eDE2X3QgdnFkbWxhZGh4cV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbGFkaHhxX3M4KSkpCmludDh4MTZfdCB2cWRtbGFkaHhxKGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sYWhxX21fbl9zMTYpKSkKaW50MTZ4OF90IHZxZG1sYWhxX21fbl9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbWxhaHFfbV9uX3MxNikpKQppbnQxNng4X3QgdnFkbWxhaHFfbShpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbGFocV9tX25fczMyKSkpCmludDMyeDRfdCB2cWRtbGFocV9tX25fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sYWhxX21fbl9zMzIpKSkKaW50MzJ4NF90IHZxZG1sYWhxX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbWxhaHFfbV9uX3M4KSkpCmludDh4MTZfdCB2cWRtbGFocV9tX25fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbGFocV9tX25fczgpKSkKaW50OHgxNl90IHZxZG1sYWhxX20oaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbGFocV9uX3MxNikpKQppbnQxNng4X3QgdnFkbWxhaHFfbl9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sYWhxX25fczE2KSkpCmludDE2eDhfdCB2cWRtbGFocShpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbWxhaHFfbl9zMzIpKSkKaW50MzJ4NF90IHZxZG1sYWhxX25fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbGFocV9uX3MzMikpKQppbnQzMng0X3QgdnFkbWxhaHEoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sYWhxX25fczgpKSkKaW50OHgxNl90IHZxZG1sYWhxX25fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbWxhaHFfbl9zOCkpKQppbnQ4eDE2X3QgdnFkbWxhaHEoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbWxhc2hxX21fbl9zMTYpKSkKaW50MTZ4OF90IHZxZG1sYXNocV9tX25fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sYXNocV9tX25fczE2KSkpCmludDE2eDhfdCB2cWRtbGFzaHFfbShpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbGFzaHFfbV9uX3MzMikpKQppbnQzMng0X3QgdnFkbWxhc2hxX21fbl9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbWxhc2hxX21fbl9zMzIpKSkKaW50MzJ4NF90IHZxZG1sYXNocV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sYXNocV9tX25fczgpKSkKaW50OHgxNl90IHZxZG1sYXNocV9tX25fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbGFzaHFfbV9uX3M4KSkpCmludDh4MTZfdCB2cWRtbGFzaHFfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sYXNocV9uX3MxNikpKQppbnQxNng4X3QgdnFkbWxhc2hxX25fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbGFzaHFfbl9zMTYpKSkKaW50MTZ4OF90IHZxZG1sYXNocShpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbWxhc2hxX25fczMyKSkpCmludDMyeDRfdCB2cWRtbGFzaHFfbl9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sYXNocV9uX3MzMikpKQppbnQzMng0X3QgdnFkbWxhc2hxKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbGFzaHFfbl9zOCkpKQppbnQ4eDE2X3QgdnFkbWxhc2hxX25fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbWxhc2hxX25fczgpKSkKaW50OHgxNl90IHZxZG1sYXNocShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbHNkaHFfbV9zMTYpKSkKaW50MTZ4OF90IHZxZG1sc2RocV9tX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sc2RocV9tX3MxNikpKQppbnQxNng4X3QgdnFkbWxzZGhxX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbHNkaHFfbV9zMzIpKSkKaW50MzJ4NF90IHZxZG1sc2RocV9tX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sc2RocV9tX3MzMikpKQppbnQzMng0X3QgdnFkbWxzZGhxX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbHNkaHFfbV9zOCkpKQppbnQ4eDE2X3QgdnFkbWxzZGhxX21fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbHNkaHFfbV9zOCkpKQppbnQ4eDE2X3QgdnFkbWxzZGhxX20oaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbHNkaHFfczE2KSkpCmludDE2eDhfdCB2cWRtbHNkaHFfczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sc2RocV9zMTYpKSkKaW50MTZ4OF90IHZxZG1sc2RocShpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbHNkaHFfczMyKSkpCmludDMyeDRfdCB2cWRtbHNkaHFfczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sc2RocV9zMzIpKSkKaW50MzJ4NF90IHZxZG1sc2RocShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbHNkaHFfczgpKSkKaW50OHgxNl90IHZxZG1sc2RocV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbHNkaHFfczgpKSkKaW50OHgxNl90IHZxZG1sc2RocShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbHNkaHhxX21fczE2KSkpCmludDE2eDhfdCB2cWRtbHNkaHhxX21fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbWxzZGh4cV9tX3MxNikpKQppbnQxNng4X3QgdnFkbWxzZGh4cV9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbWxzZGh4cV9tX3MzMikpKQppbnQzMng0X3QgdnFkbWxzZGh4cV9tX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sc2RoeHFfbV9zMzIpKSkKaW50MzJ4NF90IHZxZG1sc2RoeHFfbShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sc2RoeHFfbV9zOCkpKQppbnQ4eDE2X3QgdnFkbWxzZGh4cV9tX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbWxzZGh4cV9tX3M4KSkpCmludDh4MTZfdCB2cWRtbHNkaHhxX20oaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtbHNkaHhxX3MxNikpKQppbnQxNng4X3QgdnFkbWxzZGh4cV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbWxzZGh4cV9zMTYpKSkKaW50MTZ4OF90IHZxZG1sc2RoeHEoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbWxzZGh4cV9zMzIpKSkKaW50MzJ4NF90IHZxZG1sc2RoeHFfczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sc2RoeHFfczMyKSkpCmludDMyeDRfdCB2cWRtbHNkaHhxKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG1sc2RoeHFfczgpKSkKaW50OHgxNl90IHZxZG1sc2RoeHFfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbWxzZGh4cV9zOCkpKQppbnQ4eDE2X3QgdnFkbWxzZGh4cShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtdWxocV9tX25fczE2KSkpCmludDE2eDhfdCB2cWRtdWxocV9tX25fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG11bGhxX21fbl9zMTYpKSkKaW50MTZ4OF90IHZxZG11bGhxX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbXVsaHFfbV9uX3MzMikpKQppbnQzMng0X3QgdnFkbXVsaHFfbV9uX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtdWxocV9tX25fczMyKSkpCmludDMyeDRfdCB2cWRtdWxocV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG11bGhxX21fbl9zOCkpKQppbnQ4eDE2X3QgdnFkbXVsaHFfbV9uX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbXVsaHFfbV9uX3M4KSkpCmludDh4MTZfdCB2cWRtdWxocV9tKGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbXVsaHFfbV9zMTYpKSkKaW50MTZ4OF90IHZxZG11bGhxX21fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbXVsaHFfbV9zMTYpKSkKaW50MTZ4OF90IHZxZG11bGhxX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtdWxocV9tX3MzMikpKQppbnQzMng0X3QgdnFkbXVsaHFfbV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtdWxocV9tX3MzMikpKQppbnQzMng0X3QgdnFkbXVsaHFfbShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG11bGhxX21fczgpKSkKaW50OHgxNl90IHZxZG11bGhxX21fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtdWxocV9tX3M4KSkpCmludDh4MTZfdCB2cWRtdWxocV9tKGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbXVsaHFfbl9zMTYpKSkKaW50MTZ4OF90IHZxZG11bGhxX25fczE2KGludDE2eDhfdCwgaW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbXVsaHFfbl9zMTYpKSkKaW50MTZ4OF90IHZxZG11bGhxKGludDE2eDhfdCwgaW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbXVsaHFfbl9zMzIpKSkKaW50MzJ4NF90IHZxZG11bGhxX25fczMyKGludDMyeDRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbXVsaHFfbl9zMzIpKSkKaW50MzJ4NF90IHZxZG11bGhxKGludDMyeDRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbXVsaHFfbl9zOCkpKQppbnQ4eDE2X3QgdnFkbXVsaHFfbl9zOChpbnQ4eDE2X3QsIGludDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbXVsaHFfbl9zOCkpKQppbnQ4eDE2X3QgdnFkbXVsaHEoaW50OHgxNl90LCBpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG11bGhxX3MxNikpKQppbnQxNng4X3QgdnFkbXVsaHFfczE2KGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtdWxocV9zMTYpKSkKaW50MTZ4OF90IHZxZG11bGhxKGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtdWxocV9zMzIpKSkKaW50MzJ4NF90IHZxZG11bGhxX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbXVsaHFfczMyKSkpCmludDMyeDRfdCB2cWRtdWxocShpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbXVsaHFfczgpKSkKaW50OHgxNl90IHZxZG11bGhxX3M4KGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtdWxocV9zOCkpKQppbnQ4eDE2X3QgdnFkbXVsaHEoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG11bGxicV9tX25fczE2KSkpCmludDMyeDRfdCB2cWRtdWxsYnFfbV9uX3MxNihpbnQzMng0X3QsIGludDE2eDhfdCwgaW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtdWxsYnFfbV9uX3MxNikpKQppbnQzMng0X3QgdnFkbXVsbGJxX20oaW50MzJ4NF90LCBpbnQxNng4X3QsIGludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbXVsbGJxX21fbl9zMzIpKSkKaW50NjR4Ml90IHZxZG11bGxicV9tX25fczMyKGludDY0eDJfdCwgaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG11bGxicV9tX25fczMyKSkpCmludDY0eDJfdCB2cWRtdWxsYnFfbShpbnQ2NHgyX3QsIGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtdWxsYnFfbV9zMTYpKSkKaW50MzJ4NF90IHZxZG11bGxicV9tX3MxNihpbnQzMng0X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG11bGxicV9tX3MxNikpKQppbnQzMng0X3QgdnFkbXVsbGJxX20oaW50MzJ4NF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtdWxsYnFfbV9zMzIpKSkKaW50NjR4Ml90IHZxZG11bGxicV9tX3MzMihpbnQ2NHgyX3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG11bGxicV9tX3MzMikpKQppbnQ2NHgyX3QgdnFkbXVsbGJxX20oaW50NjR4Ml90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtdWxsYnFfbl9zMTYpKSkKaW50MzJ4NF90IHZxZG11bGxicV9uX3MxNihpbnQxNng4X3QsIGludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG11bGxicV9uX3MxNikpKQppbnQzMng0X3QgdnFkbXVsbGJxKGludDE2eDhfdCwgaW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbXVsbGJxX25fczMyKSkpCmludDY0eDJfdCB2cWRtdWxsYnFfbl9zMzIoaW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtdWxsYnFfbl9zMzIpKSkKaW50NjR4Ml90IHZxZG11bGxicShpbnQzMng0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG11bGxicV9zMTYpKSkKaW50MzJ4NF90IHZxZG11bGxicV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG11bGxicV9zMTYpKSkKaW50MzJ4NF90IHZxZG11bGxicShpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbXVsbGJxX3MzMikpKQppbnQ2NHgyX3QgdnFkbXVsbGJxX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbXVsbGJxX3MzMikpKQppbnQ2NHgyX3QgdnFkbXVsbGJxKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtdWxsdHFfbV9uX3MxNikpKQppbnQzMng0X3QgdnFkbXVsbHRxX21fbl9zMTYoaW50MzJ4NF90LCBpbnQxNng4X3QsIGludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbXVsbHRxX21fbl9zMTYpKSkKaW50MzJ4NF90IHZxZG11bGx0cV9tKGludDMyeDRfdCwgaW50MTZ4OF90LCBpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG11bGx0cV9tX25fczMyKSkpCmludDY0eDJfdCB2cWRtdWxsdHFfbV9uX3MzMihpbnQ2NHgyX3QsIGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtdWxsdHFfbV9uX3MzMikpKQppbnQ2NHgyX3QgdnFkbXVsbHRxX20oaW50NjR4Ml90LCBpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbXVsbHRxX21fczE2KSkpCmludDMyeDRfdCB2cWRtdWxsdHFfbV9zMTYoaW50MzJ4NF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtdWxsdHFfbV9zMTYpKSkKaW50MzJ4NF90IHZxZG11bGx0cV9tKGludDMyeDRfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbXVsbHRxX21fczMyKSkpCmludDY0eDJfdCB2cWRtdWxsdHFfbV9zMzIoaW50NjR4Ml90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtdWxsdHFfbV9zMzIpKSkKaW50NjR4Ml90IHZxZG11bGx0cV9tKGludDY0eDJfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbXVsbHRxX25fczE2KSkpCmludDMyeDRfdCB2cWRtdWxsdHFfbl9zMTYoaW50MTZ4OF90LCBpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtdWxsdHFfbl9zMTYpKSkKaW50MzJ4NF90IHZxZG11bGx0cShpbnQxNng4X3QsIGludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG11bGx0cV9uX3MzMikpKQppbnQ2NHgyX3QgdnFkbXVsbHRxX25fczMyKGludDMyeDRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFkbXVsbHRxX25fczMyKSkpCmludDY0eDJfdCB2cWRtdWxsdHEoaW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtdWxsdHFfczE2KSkpCmludDMyeDRfdCB2cWRtdWxsdHFfczE2KGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cWRtdWxsdHFfczE2KSkpCmludDMyeDRfdCB2cWRtdWxsdHEoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG11bGx0cV9zMzIpKSkKaW50NjR4Ml90IHZxZG11bGx0cV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxZG11bGx0cV9zMzIpKSkKaW50NjR4Ml90IHZxZG11bGx0cShpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFtb3ZuYnFfbV9zMTYpKSkKaW50OHgxNl90IHZxbW92bmJxX21fczE2KGludDh4MTZfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxbW92bmJxX21fczE2KSkpCmludDh4MTZfdCB2cW1vdm5icV9tKGludDh4MTZfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxbW92bmJxX21fczMyKSkpCmludDE2eDhfdCB2cW1vdm5icV9tX3MzMihpbnQxNng4X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cW1vdm5icV9tX3MzMikpKQppbnQxNng4X3QgdnFtb3ZuYnFfbShpbnQxNng4X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cW1vdm5icV9tX3UxNikpKQp1aW50OHgxNl90IHZxbW92bmJxX21fdTE2KHVpbnQ4eDE2X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFtb3ZuYnFfbV91MTYpKSkKdWludDh4MTZfdCB2cW1vdm5icV9tKHVpbnQ4eDE2X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFtb3ZuYnFfbV91MzIpKSkKdWludDE2eDhfdCB2cW1vdm5icV9tX3UzMih1aW50MTZ4OF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxbW92bmJxX21fdTMyKSkpCnVpbnQxNng4X3QgdnFtb3ZuYnFfbSh1aW50MTZ4OF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxbW92bmJxX3MxNikpKQppbnQ4eDE2X3QgdnFtb3ZuYnFfczE2KGludDh4MTZfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cW1vdm5icV9zMTYpKSkKaW50OHgxNl90IHZxbW92bmJxKGludDh4MTZfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cW1vdm5icV9zMzIpKSkKaW50MTZ4OF90IHZxbW92bmJxX3MzMihpbnQxNng4X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFtb3ZuYnFfczMyKSkpCmludDE2eDhfdCB2cW1vdm5icShpbnQxNng4X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFtb3ZuYnFfdTE2KSkpCnVpbnQ4eDE2X3QgdnFtb3ZuYnFfdTE2KHVpbnQ4eDE2X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxbW92bmJxX3UxNikpKQp1aW50OHgxNl90IHZxbW92bmJxKHVpbnQ4eDE2X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxbW92bmJxX3UzMikpKQp1aW50MTZ4OF90IHZxbW92bmJxX3UzMih1aW50MTZ4OF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cW1vdm5icV91MzIpKSkKdWludDE2eDhfdCB2cW1vdm5icSh1aW50MTZ4OF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cW1vdm50cV9tX3MxNikpKQppbnQ4eDE2X3QgdnFtb3ZudHFfbV9zMTYoaW50OHgxNl90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFtb3ZudHFfbV9zMTYpKSkKaW50OHgxNl90IHZxbW92bnRxX20oaW50OHgxNl90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFtb3ZudHFfbV9zMzIpKSkKaW50MTZ4OF90IHZxbW92bnRxX21fczMyKGludDE2eDhfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxbW92bnRxX21fczMyKSkpCmludDE2eDhfdCB2cW1vdm50cV9tKGludDE2eDhfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxbW92bnRxX21fdTE2KSkpCnVpbnQ4eDE2X3QgdnFtb3ZudHFfbV91MTYodWludDh4MTZfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cW1vdm50cV9tX3UxNikpKQp1aW50OHgxNl90IHZxbW92bnRxX20odWludDh4MTZfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cW1vdm50cV9tX3UzMikpKQp1aW50MTZ4OF90IHZxbW92bnRxX21fdTMyKHVpbnQxNng4X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFtb3ZudHFfbV91MzIpKSkKdWludDE2eDhfdCB2cW1vdm50cV9tKHVpbnQxNng4X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFtb3ZudHFfczE2KSkpCmludDh4MTZfdCB2cW1vdm50cV9zMTYoaW50OHgxNl90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxbW92bnRxX3MxNikpKQppbnQ4eDE2X3QgdnFtb3ZudHEoaW50OHgxNl90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxbW92bnRxX3MzMikpKQppbnQxNng4X3QgdnFtb3ZudHFfczMyKGludDE2eDhfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cW1vdm50cV9zMzIpKSkKaW50MTZ4OF90IHZxbW92bnRxKGludDE2eDhfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cW1vdm50cV91MTYpKSkKdWludDh4MTZfdCB2cW1vdm50cV91MTYodWludDh4MTZfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFtb3ZudHFfdTE2KSkpCnVpbnQ4eDE2X3QgdnFtb3ZudHEodWludDh4MTZfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFtb3ZudHFfdTMyKSkpCnVpbnQxNng4X3QgdnFtb3ZudHFfdTMyKHVpbnQxNng4X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxbW92bnRxX3UzMikpKQp1aW50MTZ4OF90IHZxbW92bnRxKHVpbnQxNng4X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxbW92dW5icV9tX3MxNikpKQp1aW50OHgxNl90IHZxbW92dW5icV9tX3MxNih1aW50OHgxNl90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFtb3Z1bmJxX21fczE2KSkpCnVpbnQ4eDE2X3QgdnFtb3Z1bmJxX20odWludDh4MTZfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxbW92dW5icV9tX3MzMikpKQp1aW50MTZ4OF90IHZxbW92dW5icV9tX3MzMih1aW50MTZ4OF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFtb3Z1bmJxX21fczMyKSkpCnVpbnQxNng4X3QgdnFtb3Z1bmJxX20odWludDE2eDhfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxbW92dW5icV9zMTYpKSkKdWludDh4MTZfdCB2cW1vdnVuYnFfczE2KHVpbnQ4eDE2X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFtb3Z1bmJxX3MxNikpKQp1aW50OHgxNl90IHZxbW92dW5icSh1aW50OHgxNl90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxbW92dW5icV9zMzIpKSkKdWludDE2eDhfdCB2cW1vdnVuYnFfczMyKHVpbnQxNng4X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFtb3Z1bmJxX3MzMikpKQp1aW50MTZ4OF90IHZxbW92dW5icSh1aW50MTZ4OF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxbW92dW50cV9tX3MxNikpKQp1aW50OHgxNl90IHZxbW92dW50cV9tX3MxNih1aW50OHgxNl90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFtb3Z1bnRxX21fczE2KSkpCnVpbnQ4eDE2X3QgdnFtb3Z1bnRxX20odWludDh4MTZfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxbW92dW50cV9tX3MzMikpKQp1aW50MTZ4OF90IHZxbW92dW50cV9tX3MzMih1aW50MTZ4OF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFtb3Z1bnRxX21fczMyKSkpCnVpbnQxNng4X3QgdnFtb3Z1bnRxX20odWludDE2eDhfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxbW92dW50cV9zMTYpKSkKdWludDh4MTZfdCB2cW1vdnVudHFfczE2KHVpbnQ4eDE2X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFtb3Z1bnRxX3MxNikpKQp1aW50OHgxNl90IHZxbW92dW50cSh1aW50OHgxNl90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxbW92dW50cV9zMzIpKSkKdWludDE2eDhfdCB2cW1vdnVudHFfczMyKHVpbnQxNng4X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFtb3Z1bnRxX3MzMikpKQp1aW50MTZ4OF90IHZxbW92dW50cSh1aW50MTZ4OF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxbmVncV9tX3MxNikpKQppbnQxNng4X3QgdnFuZWdxX21fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxbmVncV9tX3MxNikpKQppbnQxNng4X3QgdnFuZWdxX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFuZWdxX21fczMyKSkpCmludDMyeDRfdCB2cW5lZ3FfbV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFuZWdxX21fczMyKSkpCmludDMyeDRfdCB2cW5lZ3FfbShpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cW5lZ3FfbV9zOCkpKQppbnQ4eDE2X3QgdnFuZWdxX21fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFuZWdxX21fczgpKSkKaW50OHgxNl90IHZxbmVncV9tKGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxbmVncV9zMTYpKSkKaW50MTZ4OF90IHZxbmVncV9zMTYoaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cW5lZ3FfczE2KSkpCmludDE2eDhfdCB2cW5lZ3EoaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cW5lZ3FfczMyKSkpCmludDMyeDRfdCB2cW5lZ3FfczMyKGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFuZWdxX3MzMikpKQppbnQzMng0X3QgdnFuZWdxKGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFuZWdxX3M4KSkpCmludDh4MTZfdCB2cW5lZ3FfczgoaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cW5lZ3FfczgpKSkKaW50OHgxNl90IHZxbmVncShpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbGFkaHFfbV9zMTYpKSkKaW50MTZ4OF90IHZxcmRtbGFkaHFfbV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbWxhZGhxX21fczE2KSkpCmludDE2eDhfdCB2cXJkbWxhZGhxX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbWxhZGhxX21fczMyKSkpCmludDMyeDRfdCB2cXJkbWxhZGhxX21fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG1sYWRocV9tX3MzMikpKQppbnQzMng0X3QgdnFyZG1sYWRocV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG1sYWRocV9tX3M4KSkpCmludDh4MTZfdCB2cXJkbWxhZGhxX21fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbWxhZGhxX21fczgpKSkKaW50OHgxNl90IHZxcmRtbGFkaHFfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbGFkaHFfczE2KSkpCmludDE2eDhfdCB2cXJkbWxhZGhxX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbWxhZGhxX3MxNikpKQppbnQxNng4X3QgdnFyZG1sYWRocShpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbWxhZGhxX3MzMikpKQppbnQzMng0X3QgdnFyZG1sYWRocV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG1sYWRocV9zMzIpKSkKaW50MzJ4NF90IHZxcmRtbGFkaHEoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG1sYWRocV9zOCkpKQppbnQ4eDE2X3QgdnFyZG1sYWRocV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbWxhZGhxX3M4KSkpCmludDh4MTZfdCB2cXJkbWxhZGhxKGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbGFkaHhxX21fczE2KSkpCmludDE2eDhfdCB2cXJkbWxhZGh4cV9tX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbGFkaHhxX21fczE2KSkpCmludDE2eDhfdCB2cXJkbWxhZGh4cV9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG1sYWRoeHFfbV9zMzIpKSkKaW50MzJ4NF90IHZxcmRtbGFkaHhxX21fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG1sYWRoeHFfbV9zMzIpKSkKaW50MzJ4NF90IHZxcmRtbGFkaHhxX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbWxhZGh4cV9tX3M4KSkpCmludDh4MTZfdCB2cXJkbWxhZGh4cV9tX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG1sYWRoeHFfbV9zOCkpKQppbnQ4eDE2X3QgdnFyZG1sYWRoeHFfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbGFkaHhxX3MxNikpKQppbnQxNng4X3QgdnFyZG1sYWRoeHFfczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbGFkaHhxX3MxNikpKQppbnQxNng4X3QgdnFyZG1sYWRoeHEoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG1sYWRoeHFfczMyKSkpCmludDMyeDRfdCB2cXJkbWxhZGh4cV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG1sYWRoeHFfczMyKSkpCmludDMyeDRfdCB2cXJkbWxhZGh4cShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbWxhZGh4cV9zOCkpKQppbnQ4eDE2X3QgdnFyZG1sYWRoeHFfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG1sYWRoeHFfczgpKSkKaW50OHgxNl90IHZxcmRtbGFkaHhxKGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbGFocV9tX25fczE2KSkpCmludDE2eDhfdCB2cXJkbWxhaHFfbV9uX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbWxhaHFfbV9uX3MxNikpKQppbnQxNng4X3QgdnFyZG1sYWhxX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG1sYWhxX21fbl9zMzIpKSkKaW50MzJ4NF90IHZxcmRtbGFocV9tX25fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbGFocV9tX25fczMyKSkpCmludDMyeDRfdCB2cXJkbWxhaHFfbShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbWxhaHFfbV9uX3M4KSkpCmludDh4MTZfdCB2cXJkbWxhaHFfbV9uX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG1sYWhxX21fbl9zOCkpKQppbnQ4eDE2X3QgdnFyZG1sYWhxX20oaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbWxhaHFfbl9zMTYpKSkKaW50MTZ4OF90IHZxcmRtbGFocV9uX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG1sYWhxX25fczE2KSkpCmludDE2eDhfdCB2cXJkbWxhaHEoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbGFocV9uX3MzMikpKQppbnQzMng0X3QgdnFyZG1sYWhxX25fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbWxhaHFfbl9zMzIpKSkKaW50MzJ4NF90IHZxcmRtbGFocShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG1sYWhxX25fczgpKSkKaW50OHgxNl90IHZxcmRtbGFocV9uX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbGFocV9uX3M4KSkpCmludDh4MTZfdCB2cXJkbWxhaHEoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG1sYXNocV9tX25fczE2KSkpCmludDE2eDhfdCB2cXJkbWxhc2hxX21fbl9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG1sYXNocV9tX25fczE2KSkpCmludDE2eDhfdCB2cXJkbWxhc2hxX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG1sYXNocV9tX25fczMyKSkpCmludDMyeDRfdCB2cXJkbWxhc2hxX21fbl9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG1sYXNocV9tX25fczMyKSkpCmludDMyeDRfdCB2cXJkbWxhc2hxX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG1sYXNocV9tX25fczgpKSkKaW50OHgxNl90IHZxcmRtbGFzaHFfbV9uX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG1sYXNocV9tX25fczgpKSkKaW50OHgxNl90IHZxcmRtbGFzaHFfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbGFzaHFfbl9zMTYpKSkKaW50MTZ4OF90IHZxcmRtbGFzaHFfbl9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbGFzaHFfbl9zMTYpKSkKaW50MTZ4OF90IHZxcmRtbGFzaHEoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbGFzaHFfbl9zMzIpKSkKaW50MzJ4NF90IHZxcmRtbGFzaHFfbl9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbGFzaHFfbl9zMzIpKSkKaW50MzJ4NF90IHZxcmRtbGFzaHEoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbGFzaHFfbl9zOCkpKQppbnQ4eDE2X3QgdnFyZG1sYXNocV9uX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbGFzaHFfbl9zOCkpKQppbnQ4eDE2X3QgdnFyZG1sYXNocShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbWxzZGhxX21fczE2KSkpCmludDE2eDhfdCB2cXJkbWxzZGhxX21fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG1sc2RocV9tX3MxNikpKQppbnQxNng4X3QgdnFyZG1sc2RocV9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG1sc2RocV9tX3MzMikpKQppbnQzMng0X3QgdnFyZG1sc2RocV9tX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbHNkaHFfbV9zMzIpKSkKaW50MzJ4NF90IHZxcmRtbHNkaHFfbShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbHNkaHFfbV9zOCkpKQppbnQ4eDE2X3QgdnFyZG1sc2RocV9tX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG1sc2RocV9tX3M4KSkpCmludDh4MTZfdCB2cXJkbWxzZGhxX20oaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbWxzZGhxX3MxNikpKQppbnQxNng4X3QgdnFyZG1sc2RocV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG1sc2RocV9zMTYpKSkKaW50MTZ4OF90IHZxcmRtbHNkaHEoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG1sc2RocV9zMzIpKSkKaW50MzJ4NF90IHZxcmRtbHNkaHFfczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbHNkaHFfczMyKSkpCmludDMyeDRfdCB2cXJkbWxzZGhxKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbHNkaHFfczgpKSkKaW50OHgxNl90IHZxcmRtbHNkaHFfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG1sc2RocV9zOCkpKQppbnQ4eDE2X3QgdnFyZG1sc2RocShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbWxzZGh4cV9tX3MxNikpKQppbnQxNng4X3QgdnFyZG1sc2RoeHFfbV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbWxzZGh4cV9tX3MxNikpKQppbnQxNng4X3QgdnFyZG1sc2RoeHFfbShpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbHNkaHhxX21fczMyKSkpCmludDMyeDRfdCB2cXJkbWxzZGh4cV9tX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbHNkaHhxX21fczMyKSkpCmludDMyeDRfdCB2cXJkbWxzZGh4cV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG1sc2RoeHFfbV9zOCkpKQppbnQ4eDE2X3QgdnFyZG1sc2RoeHFfbV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbHNkaHhxX21fczgpKSkKaW50OHgxNl90IHZxcmRtbHNkaHhxX20oaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbWxzZGh4cV9zMTYpKSkKaW50MTZ4OF90IHZxcmRtbHNkaHhxX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbWxzZGh4cV9zMTYpKSkKaW50MTZ4OF90IHZxcmRtbHNkaHhxKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbHNkaHhxX3MzMikpKQppbnQzMng0X3QgdnFyZG1sc2RoeHFfczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbHNkaHhxX3MzMikpKQppbnQzMng0X3QgdnFyZG1sc2RoeHEoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG1sc2RoeHFfczgpKSkKaW50OHgxNl90IHZxcmRtbHNkaHhxX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtbHNkaHhxX3M4KSkpCmludDh4MTZfdCB2cXJkbWxzZGh4cShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbXVsaHFfbV9uX3MxNikpKQppbnQxNng4X3QgdnFyZG11bGhxX21fbl9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG11bGhxX21fbl9zMTYpKSkKaW50MTZ4OF90IHZxcmRtdWxocV9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtdWxocV9tX25fczMyKSkpCmludDMyeDRfdCB2cXJkbXVsaHFfbV9uX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbXVsaHFfbV9uX3MzMikpKQppbnQzMng0X3QgdnFyZG11bGhxX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG11bGhxX21fbl9zOCkpKQppbnQ4eDE2X3QgdnFyZG11bGhxX21fbl9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtdWxocV9tX25fczgpKSkKaW50OHgxNl90IHZxcmRtdWxocV9tKGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG11bGhxX21fczE2KSkpCmludDE2eDhfdCB2cXJkbXVsaHFfbV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbXVsaHFfbV9zMTYpKSkKaW50MTZ4OF90IHZxcmRtdWxocV9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG11bGhxX21fczMyKSkpCmludDMyeDRfdCB2cXJkbXVsaHFfbV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbXVsaHFfbV9zMzIpKSkKaW50MzJ4NF90IHZxcmRtdWxocV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG11bGhxX21fczgpKSkKaW50OHgxNl90IHZxcmRtdWxocV9tX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG11bGhxX21fczgpKSkKaW50OHgxNl90IHZxcmRtdWxocV9tKGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG11bGhxX25fczE2KSkpCmludDE2eDhfdCB2cXJkbXVsaHFfbl9zMTYoaW50MTZ4OF90LCBpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbXVsaHFfbl9zMTYpKSkKaW50MTZ4OF90IHZxcmRtdWxocShpbnQxNng4X3QsIGludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtdWxocV9uX3MzMikpKQppbnQzMng0X3QgdnFyZG11bGhxX25fczMyKGludDMyeDRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG11bGhxX25fczMyKSkpCmludDMyeDRfdCB2cXJkbXVsaHEoaW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbXVsaHFfbl9zOCkpKQppbnQ4eDE2X3QgdnFyZG11bGhxX25fczgoaW50OHgxNl90LCBpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtdWxocV9uX3M4KSkpCmludDh4MTZfdCB2cXJkbXVsaHEoaW50OHgxNl90LCBpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtdWxocV9zMTYpKSkKaW50MTZ4OF90IHZxcmRtdWxocV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcmRtdWxocV9zMTYpKSkKaW50MTZ4OF90IHZxcmRtdWxocShpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG11bGhxX3MzMikpKQppbnQzMng0X3QgdnFyZG11bGhxX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG11bGhxX3MzMikpKQppbnQzMng0X3QgdnFyZG11bGhxKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJkbXVsaHFfczgpKSkKaW50OHgxNl90IHZxcmRtdWxocV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyZG11bGhxX3M4KSkpCmludDh4MTZfdCB2cXJkbXVsaHEoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNobHFfbV9uX3MxNikpKQppbnQxNng4X3QgdnFyc2hscV9tX25fczE2KGludDE2eDhfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaGxxX21fbl9zMTYpKSkKaW50MTZ4OF90IHZxcnNobHFfbV9uKGludDE2eDhfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaGxxX21fbl9zMzIpKSkKaW50MzJ4NF90IHZxcnNobHFfbV9uX3MzMihpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyc2hscV9tX25fczMyKSkpCmludDMyeDRfdCB2cXJzaGxxX21fbihpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyc2hscV9tX25fczgpKSkKaW50OHgxNl90IHZxcnNobHFfbV9uX3M4KGludDh4MTZfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaGxxX21fbl9zOCkpKQppbnQ4eDE2X3QgdnFyc2hscV9tX24oaW50OHgxNl90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNobHFfbV9uX3UxNikpKQp1aW50MTZ4OF90IHZxcnNobHFfbV9uX3UxNih1aW50MTZ4OF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNobHFfbV9uX3UxNikpKQp1aW50MTZ4OF90IHZxcnNobHFfbV9uKHVpbnQxNng4X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyc2hscV9tX25fdTMyKSkpCnVpbnQzMng0X3QgdnFyc2hscV9tX25fdTMyKHVpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyc2hscV9tX25fdTMyKSkpCnVpbnQzMng0X3QgdnFyc2hscV9tX24odWludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaGxxX21fbl91OCkpKQp1aW50OHgxNl90IHZxcnNobHFfbV9uX3U4KHVpbnQ4eDE2X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyc2hscV9tX25fdTgpKSkKdWludDh4MTZfdCB2cXJzaGxxX21fbih1aW50OHgxNl90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNobHFfbV9zMTYpKSkKaW50MTZ4OF90IHZxcnNobHFfbV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaGxxX21fczE2KSkpCmludDE2eDhfdCB2cXJzaGxxX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaGxxX21fczMyKSkpCmludDMyeDRfdCB2cXJzaGxxX21fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyc2hscV9tX3MzMikpKQppbnQzMng0X3QgdnFyc2hscV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyc2hscV9tX3M4KSkpCmludDh4MTZfdCB2cXJzaGxxX21fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaGxxX21fczgpKSkKaW50OHgxNl90IHZxcnNobHFfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNobHFfbV91MTYpKSkKdWludDE2eDhfdCB2cXJzaGxxX21fdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaGxxX21fdTE2KSkpCnVpbnQxNng4X3QgdnFyc2hscV9tKHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaGxxX21fdTMyKSkpCnVpbnQzMng0X3QgdnFyc2hscV9tX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyc2hscV9tX3UzMikpKQp1aW50MzJ4NF90IHZxcnNobHFfbSh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyc2hscV9tX3U4KSkpCnVpbnQ4eDE2X3QgdnFyc2hscV9tX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaGxxX21fdTgpKSkKdWludDh4MTZfdCB2cXJzaGxxX20odWludDh4MTZfdCwgdWludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNobHFfbl9zMTYpKSkKaW50MTZ4OF90IHZxcnNobHFfbl9zMTYoaW50MTZ4OF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaGxxX25fczE2KSkpCmludDE2eDhfdCB2cXJzaGxxKGludDE2eDhfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyc2hscV9uX3MzMikpKQppbnQzMng0X3QgdnFyc2hscV9uX3MzMihpbnQzMng0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNobHFfbl9zMzIpKSkKaW50MzJ4NF90IHZxcnNobHEoaW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaGxxX25fczgpKSkKaW50OHgxNl90IHZxcnNobHFfbl9zOChpbnQ4eDE2X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNobHFfbl9zOCkpKQppbnQ4eDE2X3QgdnFyc2hscShpbnQ4eDE2X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNobHFfbl91MTYpKSkKdWludDE2eDhfdCB2cXJzaGxxX25fdTE2KHVpbnQxNng4X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNobHFfbl91MTYpKSkKdWludDE2eDhfdCB2cXJzaGxxKHVpbnQxNng4X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNobHFfbl91MzIpKSkKdWludDMyeDRfdCB2cXJzaGxxX25fdTMyKHVpbnQzMng0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNobHFfbl91MzIpKSkKdWludDMyeDRfdCB2cXJzaGxxKHVpbnQzMng0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNobHFfbl91OCkpKQp1aW50OHgxNl90IHZxcnNobHFfbl91OCh1aW50OHgxNl90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaGxxX25fdTgpKSkKdWludDh4MTZfdCB2cXJzaGxxKHVpbnQ4eDE2X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNobHFfczE2KSkpCmludDE2eDhfdCB2cXJzaGxxX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyc2hscV9zMTYpKSkKaW50MTZ4OF90IHZxcnNobHEoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNobHFfczMyKSkpCmludDMyeDRfdCB2cXJzaGxxX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyc2hscV9zMzIpKSkKaW50MzJ4NF90IHZxcnNobHEoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNobHFfczgpKSkKaW50OHgxNl90IHZxcnNobHFfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNobHFfczgpKSkKaW50OHgxNl90IHZxcnNobHEoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNobHFfdTE2KSkpCnVpbnQxNng4X3QgdnFyc2hscV91MTYodWludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaGxxX3UxNikpKQp1aW50MTZ4OF90IHZxcnNobHEodWludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaGxxX3UzMikpKQp1aW50MzJ4NF90IHZxcnNobHFfdTMyKHVpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyc2hscV91MzIpKSkKdWludDMyeDRfdCB2cXJzaGxxKHVpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyc2hscV91OCkpKQp1aW50OHgxNl90IHZxcnNobHFfdTgodWludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaGxxX3U4KSkpCnVpbnQ4eDE2X3QgdnFyc2hscSh1aW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNocm5icV9tX25fczE2KSkpCmludDh4MTZfdCB2cXJzaHJuYnFfbV9uX3MxNihpbnQ4eDE2X3QsIGludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNocm5icV9tX25fczE2KSkpCmludDh4MTZfdCB2cXJzaHJuYnFfbShpbnQ4eDE2X3QsIGludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNocm5icV9tX25fczMyKSkpCmludDE2eDhfdCB2cXJzaHJuYnFfbV9uX3MzMihpbnQxNng4X3QsIGludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNocm5icV9tX25fczMyKSkpCmludDE2eDhfdCB2cXJzaHJuYnFfbShpbnQxNng4X3QsIGludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNocm5icV9tX25fdTE2KSkpCnVpbnQ4eDE2X3QgdnFyc2hybmJxX21fbl91MTYodWludDh4MTZfdCwgdWludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNocm5icV9tX25fdTE2KSkpCnVpbnQ4eDE2X3QgdnFyc2hybmJxX20odWludDh4MTZfdCwgdWludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNocm5icV9tX25fdTMyKSkpCnVpbnQxNng4X3QgdnFyc2hybmJxX21fbl91MzIodWludDE2eDhfdCwgdWludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNocm5icV9tX25fdTMyKSkpCnVpbnQxNng4X3QgdnFyc2hybmJxX20odWludDE2eDhfdCwgdWludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNocm5icV9uX3MxNikpKQppbnQ4eDE2X3QgdnFyc2hybmJxX25fczE2KGludDh4MTZfdCwgaW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNocm5icV9uX3MxNikpKQppbnQ4eDE2X3QgdnFyc2hybmJxKGludDh4MTZfdCwgaW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNocm5icV9uX3MzMikpKQppbnQxNng4X3QgdnFyc2hybmJxX25fczMyKGludDE2eDhfdCwgaW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNocm5icV9uX3MzMikpKQppbnQxNng4X3QgdnFyc2hybmJxKGludDE2eDhfdCwgaW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNocm5icV9uX3UxNikpKQp1aW50OHgxNl90IHZxcnNocm5icV9uX3UxNih1aW50OHgxNl90LCB1aW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNocm5icV9uX3UxNikpKQp1aW50OHgxNl90IHZxcnNocm5icSh1aW50OHgxNl90LCB1aW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNocm5icV9uX3UzMikpKQp1aW50MTZ4OF90IHZxcnNocm5icV9uX3UzMih1aW50MTZ4OF90LCB1aW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNocm5icV9uX3UzMikpKQp1aW50MTZ4OF90IHZxcnNocm5icSh1aW50MTZ4OF90LCB1aW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNocm50cV9tX25fczE2KSkpCmludDh4MTZfdCB2cXJzaHJudHFfbV9uX3MxNihpbnQ4eDE2X3QsIGludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNocm50cV9tX25fczE2KSkpCmludDh4MTZfdCB2cXJzaHJudHFfbShpbnQ4eDE2X3QsIGludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNocm50cV9tX25fczMyKSkpCmludDE2eDhfdCB2cXJzaHJudHFfbV9uX3MzMihpbnQxNng4X3QsIGludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNocm50cV9tX25fczMyKSkpCmludDE2eDhfdCB2cXJzaHJudHFfbShpbnQxNng4X3QsIGludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNocm50cV9tX25fdTE2KSkpCnVpbnQ4eDE2X3QgdnFyc2hybnRxX21fbl91MTYodWludDh4MTZfdCwgdWludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNocm50cV9tX25fdTE2KSkpCnVpbnQ4eDE2X3QgdnFyc2hybnRxX20odWludDh4MTZfdCwgdWludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNocm50cV9tX25fdTMyKSkpCnVpbnQxNng4X3QgdnFyc2hybnRxX21fbl91MzIodWludDE2eDhfdCwgdWludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNocm50cV9tX25fdTMyKSkpCnVpbnQxNng4X3QgdnFyc2hybnRxX20odWludDE2eDhfdCwgdWludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNocm50cV9uX3MxNikpKQppbnQ4eDE2X3QgdnFyc2hybnRxX25fczE2KGludDh4MTZfdCwgaW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNocm50cV9uX3MxNikpKQppbnQ4eDE2X3QgdnFyc2hybnRxKGludDh4MTZfdCwgaW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNocm50cV9uX3MzMikpKQppbnQxNng4X3QgdnFyc2hybnRxX25fczMyKGludDE2eDhfdCwgaW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNocm50cV9uX3MzMikpKQppbnQxNng4X3QgdnFyc2hybnRxKGludDE2eDhfdCwgaW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNocm50cV9uX3UxNikpKQp1aW50OHgxNl90IHZxcnNocm50cV9uX3UxNih1aW50OHgxNl90LCB1aW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNocm50cV9uX3UxNikpKQp1aW50OHgxNl90IHZxcnNocm50cSh1aW50OHgxNl90LCB1aW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNocm50cV9uX3UzMikpKQp1aW50MTZ4OF90IHZxcnNocm50cV9uX3UzMih1aW50MTZ4OF90LCB1aW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNocm50cV9uX3UzMikpKQp1aW50MTZ4OF90IHZxcnNocm50cSh1aW50MTZ4OF90LCB1aW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNocnVuYnFfbV9uX3MxNikpKQp1aW50OHgxNl90IHZxcnNocnVuYnFfbV9uX3MxNih1aW50OHgxNl90LCBpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaHJ1bmJxX21fbl9zMTYpKSkKdWludDh4MTZfdCB2cXJzaHJ1bmJxX20odWludDh4MTZfdCwgaW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyc2hydW5icV9tX25fczMyKSkpCnVpbnQxNng4X3QgdnFyc2hydW5icV9tX25fczMyKHVpbnQxNng4X3QsIGludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNocnVuYnFfbV9uX3MzMikpKQp1aW50MTZ4OF90IHZxcnNocnVuYnFfbSh1aW50MTZ4OF90LCBpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaHJ1bmJxX25fczE2KSkpCnVpbnQ4eDE2X3QgdnFyc2hydW5icV9uX3MxNih1aW50OHgxNl90LCBpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyc2hydW5icV9uX3MxNikpKQp1aW50OHgxNl90IHZxcnNocnVuYnEodWludDh4MTZfdCwgaW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNocnVuYnFfbl9zMzIpKSkKdWludDE2eDhfdCB2cXJzaHJ1bmJxX25fczMyKHVpbnQxNng4X3QsIGludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaHJ1bmJxX25fczMyKSkpCnVpbnQxNng4X3QgdnFyc2hydW5icSh1aW50MTZ4OF90LCBpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyc2hydW50cV9tX25fczE2KSkpCnVpbnQ4eDE2X3QgdnFyc2hydW50cV9tX25fczE2KHVpbnQ4eDE2X3QsIGludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNocnVudHFfbV9uX3MxNikpKQp1aW50OHgxNl90IHZxcnNocnVudHFfbSh1aW50OHgxNl90LCBpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaHJ1bnRxX21fbl9zMzIpKSkKdWludDE2eDhfdCB2cXJzaHJ1bnRxX21fbl9zMzIodWludDE2eDhfdCwgaW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyc2hydW50cV9tX25fczMyKSkpCnVpbnQxNng4X3QgdnFyc2hydW50cV9tKHVpbnQxNng4X3QsIGludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNocnVudHFfbl9zMTYpKSkKdWludDh4MTZfdCB2cXJzaHJ1bnRxX25fczE2KHVpbnQ4eDE2X3QsIGludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXJzaHJ1bnRxX25fczE2KSkpCnVpbnQ4eDE2X3QgdnFyc2hydW50cSh1aW50OHgxNl90LCBpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFyc2hydW50cV9uX3MzMikpKQp1aW50MTZ4OF90IHZxcnNocnVudHFfbl9zMzIodWludDE2eDhfdCwgaW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZxcnNocnVudHFfbl9zMzIpKSkKdWludDE2eDhfdCB2cXJzaHJ1bnRxKHVpbnQxNng4X3QsIGludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfbV9uX3MxNikpKQppbnQxNng4X3QgdnFzaGxxX21fbl9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfbV9uX3MxNikpKQppbnQxNng4X3QgdnFzaGxxX21fbihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hscV9tX25fczMyKSkpCmludDMyeDRfdCB2cXNobHFfbV9uX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hscV9tX25fczMyKSkpCmludDMyeDRfdCB2cXNobHFfbV9uKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGxxX21fbl9zOCkpKQppbnQ4eDE2X3QgdnFzaGxxX21fbl9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hscV9tX25fczgpKSkKaW50OHgxNl90IHZxc2hscV9tX24oaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfbV9uX3UxNikpKQp1aW50MTZ4OF90IHZxc2hscV9tX25fdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfbV9uX3UxNikpKQp1aW50MTZ4OF90IHZxc2hscV9tX24odWludDE2eDhfdCwgdWludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hscV9tX25fdTMyKSkpCnVpbnQzMng0X3QgdnFzaGxxX21fbl91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hscV9tX25fdTMyKSkpCnVpbnQzMng0X3QgdnFzaGxxX21fbih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGxxX21fbl91OCkpKQp1aW50OHgxNl90IHZxc2hscV9tX25fdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hscV9tX25fdTgpKSkKdWludDh4MTZfdCB2cXNobHFfbV9uKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfbV9yX3MxNikpKQppbnQxNng4X3QgdnFzaGxxX21fcl9zMTYoaW50MTZ4OF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hscV9tX3JfczE2KSkpCmludDE2eDhfdCB2cXNobHFfbV9yKGludDE2eDhfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfbV9yX3MzMikpKQppbnQzMng0X3QgdnFzaGxxX21fcl9zMzIoaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hscV9tX3JfczMyKSkpCmludDMyeDRfdCB2cXNobHFfbV9yKGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfbV9yX3M4KSkpCmludDh4MTZfdCB2cXNobHFfbV9yX3M4KGludDh4MTZfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfbV9yX3M4KSkpCmludDh4MTZfdCB2cXNobHFfbV9yKGludDh4MTZfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfbV9yX3UxNikpKQp1aW50MTZ4OF90IHZxc2hscV9tX3JfdTE2KHVpbnQxNng4X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGxxX21fcl91MTYpKSkKdWludDE2eDhfdCB2cXNobHFfbV9yKHVpbnQxNng4X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGxxX21fcl91MzIpKSkKdWludDMyeDRfdCB2cXNobHFfbV9yX3UzMih1aW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hscV9tX3JfdTMyKSkpCnVpbnQzMng0X3QgdnFzaGxxX21fcih1aW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hscV9tX3JfdTgpKSkKdWludDh4MTZfdCB2cXNobHFfbV9yX3U4KHVpbnQ4eDE2X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGxxX21fcl91OCkpKQp1aW50OHgxNl90IHZxc2hscV9tX3IodWludDh4MTZfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfbV9zMTYpKSkKaW50MTZ4OF90IHZxc2hscV9tX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hscV9tX3MxNikpKQppbnQxNng4X3QgdnFzaGxxX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfbV9zMzIpKSkKaW50MzJ4NF90IHZxc2hscV9tX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hscV9tX3MzMikpKQppbnQzMng0X3QgdnFzaGxxX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfbV9zOCkpKQppbnQ4eDE2X3QgdnFzaGxxX21fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfbV9zOCkpKQppbnQ4eDE2X3QgdnFzaGxxX20oaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfbV91MTYpKSkKdWludDE2eDhfdCB2cXNobHFfbV91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hscV9tX3UxNikpKQp1aW50MTZ4OF90IHZxc2hscV9tKHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfbV91MzIpKSkKdWludDMyeDRfdCB2cXNobHFfbV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hscV9tX3UzMikpKQp1aW50MzJ4NF90IHZxc2hscV9tKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfbV91OCkpKQp1aW50OHgxNl90IHZxc2hscV9tX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfbV91OCkpKQp1aW50OHgxNl90IHZxc2hscV9tKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfbl9zMTYpKSkKaW50MTZ4OF90IHZxc2hscV9uX3MxNihpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGxxX25fczE2KSkpCmludDE2eDhfdCB2cXNobHFfbihpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGxxX25fczMyKSkpCmludDMyeDRfdCB2cXNobHFfbl9zMzIoaW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hscV9uX3MzMikpKQppbnQzMng0X3QgdnFzaGxxX24oaW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hscV9uX3M4KSkpCmludDh4MTZfdCB2cXNobHFfbl9zOChpbnQ4eDE2X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGxxX25fczgpKSkKaW50OHgxNl90IHZxc2hscV9uKGludDh4MTZfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfbl91MTYpKSkKdWludDE2eDhfdCB2cXNobHFfbl91MTYodWludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfbl91MTYpKSkKdWludDE2eDhfdCB2cXNobHFfbih1aW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hscV9uX3UzMikpKQp1aW50MzJ4NF90IHZxc2hscV9uX3UzMih1aW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hscV9uX3UzMikpKQp1aW50MzJ4NF90IHZxc2hscV9uKHVpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGxxX25fdTgpKSkKdWludDh4MTZfdCB2cXNobHFfbl91OCh1aW50OHgxNl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hscV9uX3U4KSkpCnVpbnQ4eDE2X3QgdnFzaGxxX24odWludDh4MTZfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfcl9zMTYpKSkKaW50MTZ4OF90IHZxc2hscV9yX3MxNihpbnQxNng4X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hscV9yX3MxNikpKQppbnQxNng4X3QgdnFzaGxxX3IoaW50MTZ4OF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfcl9zMzIpKSkKaW50MzJ4NF90IHZxc2hscV9yX3MzMihpbnQzMng0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hscV9yX3MzMikpKQppbnQzMng0X3QgdnFzaGxxX3IoaW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfcl9zOCkpKQppbnQ4eDE2X3QgdnFzaGxxX3JfczgoaW50OHgxNl90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfcl9zOCkpKQppbnQ4eDE2X3QgdnFzaGxxX3IoaW50OHgxNl90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfcl91MTYpKSkKdWludDE2eDhfdCB2cXNobHFfcl91MTYodWludDE2eDhfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGxxX3JfdTE2KSkpCnVpbnQxNng4X3QgdnFzaGxxX3IodWludDE2eDhfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGxxX3JfdTMyKSkpCnVpbnQzMng0X3QgdnFzaGxxX3JfdTMyKHVpbnQzMng0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hscV9yX3UzMikpKQp1aW50MzJ4NF90IHZxc2hscV9yKHVpbnQzMng0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hscV9yX3U4KSkpCnVpbnQ4eDE2X3QgdnFzaGxxX3JfdTgodWludDh4MTZfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGxxX3JfdTgpKSkKdWludDh4MTZfdCB2cXNobHFfcih1aW50OHgxNl90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfczE2KSkpCmludDE2eDhfdCB2cXNobHFfczE2KGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfczE2KSkpCmludDE2eDhfdCB2cXNobHEoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hscV9zMzIpKSkKaW50MzJ4NF90IHZxc2hscV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hscV9zMzIpKSkKaW50MzJ4NF90IHZxc2hscShpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGxxX3M4KSkpCmludDh4MTZfdCB2cXNobHFfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hscV9zOCkpKQppbnQ4eDE2X3QgdnFzaGxxKGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfdTE2KSkpCnVpbnQxNng4X3QgdnFzaGxxX3UxNih1aW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hscV91MTYpKSkKdWludDE2eDhfdCB2cXNobHEodWludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfdTMyKSkpCnVpbnQzMng0X3QgdnFzaGxxX3UzMih1aW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hscV91MzIpKSkKdWludDMyeDRfdCB2cXNobHEodWludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfdTgpKSkKdWludDh4MTZfdCB2cXNobHFfdTgodWludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHFfdTgpKSkKdWludDh4MTZfdCB2cXNobHEodWludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHVxX21fbl9zMTYpKSkKdWludDE2eDhfdCB2cXNobHVxX21fbl9zMTYodWludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGx1cV9tX25fczE2KSkpCnVpbnQxNng4X3QgdnFzaGx1cV9tKHVpbnQxNng4X3QsIGludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hsdXFfbV9uX3MzMikpKQp1aW50MzJ4NF90IHZxc2hsdXFfbV9uX3MzMih1aW50MzJ4NF90LCBpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHVxX21fbl9zMzIpKSkKdWludDMyeDRfdCB2cXNobHVxX20odWludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGx1cV9tX25fczgpKSkKdWludDh4MTZfdCB2cXNobHVxX21fbl9zOCh1aW50OHgxNl90LCBpbnQ4eDE2X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHVxX21fbl9zOCkpKQp1aW50OHgxNl90IHZxc2hsdXFfbSh1aW50OHgxNl90LCBpbnQ4eDE2X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHVxX25fczE2KSkpCnVpbnQxNng4X3QgdnFzaGx1cV9uX3MxNihpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGx1cV9uX3MxNikpKQp1aW50MTZ4OF90IHZxc2hsdXEoaW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hsdXFfbl9zMzIpKSkKdWludDMyeDRfdCB2cXNobHVxX25fczMyKGludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHVxX25fczMyKSkpCnVpbnQzMng0X3QgdnFzaGx1cShpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaGx1cV9uX3M4KSkpCnVpbnQ4eDE2X3QgdnFzaGx1cV9uX3M4KGludDh4MTZfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNobHVxX25fczgpKSkKdWludDh4MTZfdCB2cXNobHVxKGludDh4MTZfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNocm5icV9tX25fczE2KSkpCmludDh4MTZfdCB2cXNocm5icV9tX25fczE2KGludDh4MTZfdCwgaW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaHJuYnFfbV9uX3MxNikpKQppbnQ4eDE2X3QgdnFzaHJuYnFfbShpbnQ4eDE2X3QsIGludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hybmJxX21fbl9zMzIpKSkKaW50MTZ4OF90IHZxc2hybmJxX21fbl9zMzIoaW50MTZ4OF90LCBpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNocm5icV9tX25fczMyKSkpCmludDE2eDhfdCB2cXNocm5icV9tKGludDE2eDhfdCwgaW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaHJuYnFfbV9uX3UxNikpKQp1aW50OHgxNl90IHZxc2hybmJxX21fbl91MTYodWludDh4MTZfdCwgdWludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hybmJxX21fbl91MTYpKSkKdWludDh4MTZfdCB2cXNocm5icV9tKHVpbnQ4eDE2X3QsIHVpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNocm5icV9tX25fdTMyKSkpCnVpbnQxNng4X3QgdnFzaHJuYnFfbV9uX3UzMih1aW50MTZ4OF90LCB1aW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaHJuYnFfbV9uX3UzMikpKQp1aW50MTZ4OF90IHZxc2hybmJxX20odWludDE2eDhfdCwgdWludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hybmJxX25fczE2KSkpCmludDh4MTZfdCB2cXNocm5icV9uX3MxNihpbnQ4eDE2X3QsIGludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNocm5icV9uX3MxNikpKQppbnQ4eDE2X3QgdnFzaHJuYnEoaW50OHgxNl90LCBpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaHJuYnFfbl9zMzIpKSkKaW50MTZ4OF90IHZxc2hybmJxX25fczMyKGludDE2eDhfdCwgaW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hybmJxX25fczMyKSkpCmludDE2eDhfdCB2cXNocm5icShpbnQxNng4X3QsIGludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNocm5icV9uX3UxNikpKQp1aW50OHgxNl90IHZxc2hybmJxX25fdTE2KHVpbnQ4eDE2X3QsIHVpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaHJuYnFfbl91MTYpKSkKdWludDh4MTZfdCB2cXNocm5icSh1aW50OHgxNl90LCB1aW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hybmJxX25fdTMyKSkpCnVpbnQxNng4X3QgdnFzaHJuYnFfbl91MzIodWludDE2eDhfdCwgdWludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNocm5icV9uX3UzMikpKQp1aW50MTZ4OF90IHZxc2hybmJxKHVpbnQxNng4X3QsIHVpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaHJudHFfbV9uX3MxNikpKQppbnQ4eDE2X3QgdnFzaHJudHFfbV9uX3MxNihpbnQ4eDE2X3QsIGludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hybnRxX21fbl9zMTYpKSkKaW50OHgxNl90IHZxc2hybnRxX20oaW50OHgxNl90LCBpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNocm50cV9tX25fczMyKSkpCmludDE2eDhfdCB2cXNocm50cV9tX25fczMyKGludDE2eDhfdCwgaW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaHJudHFfbV9uX3MzMikpKQppbnQxNng4X3QgdnFzaHJudHFfbShpbnQxNng4X3QsIGludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hybnRxX21fbl91MTYpKSkKdWludDh4MTZfdCB2cXNocm50cV9tX25fdTE2KHVpbnQ4eDE2X3QsIHVpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNocm50cV9tX25fdTE2KSkpCnVpbnQ4eDE2X3QgdnFzaHJudHFfbSh1aW50OHgxNl90LCB1aW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaHJudHFfbV9uX3UzMikpKQp1aW50MTZ4OF90IHZxc2hybnRxX21fbl91MzIodWludDE2eDhfdCwgdWludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hybnRxX21fbl91MzIpKSkKdWludDE2eDhfdCB2cXNocm50cV9tKHVpbnQxNng4X3QsIHVpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNocm50cV9uX3MxNikpKQppbnQ4eDE2X3QgdnFzaHJudHFfbl9zMTYoaW50OHgxNl90LCBpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaHJudHFfbl9zMTYpKSkKaW50OHgxNl90IHZxc2hybnRxKGludDh4MTZfdCwgaW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hybnRxX25fczMyKSkpCmludDE2eDhfdCB2cXNocm50cV9uX3MzMihpbnQxNng4X3QsIGludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNocm50cV9uX3MzMikpKQppbnQxNng4X3QgdnFzaHJudHEoaW50MTZ4OF90LCBpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaHJudHFfbl91MTYpKSkKdWludDh4MTZfdCB2cXNocm50cV9uX3UxNih1aW50OHgxNl90LCB1aW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hybnRxX25fdTE2KSkpCnVpbnQ4eDE2X3QgdnFzaHJudHEodWludDh4MTZfdCwgdWludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNocm50cV9uX3UzMikpKQp1aW50MTZ4OF90IHZxc2hybnRxX25fdTMyKHVpbnQxNng4X3QsIHVpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaHJudHFfbl91MzIpKSkKdWludDE2eDhfdCB2cXNocm50cSh1aW50MTZ4OF90LCB1aW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hydW5icV9tX25fczE2KSkpCnVpbnQ4eDE2X3QgdnFzaHJ1bmJxX21fbl9zMTYodWludDh4MTZfdCwgaW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaHJ1bmJxX21fbl9zMTYpKSkKdWludDh4MTZfdCB2cXNocnVuYnFfbSh1aW50OHgxNl90LCBpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNocnVuYnFfbV9uX3MzMikpKQp1aW50MTZ4OF90IHZxc2hydW5icV9tX25fczMyKHVpbnQxNng4X3QsIGludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hydW5icV9tX25fczMyKSkpCnVpbnQxNng4X3QgdnFzaHJ1bmJxX20odWludDE2eDhfdCwgaW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaHJ1bmJxX25fczE2KSkpCnVpbnQ4eDE2X3QgdnFzaHJ1bmJxX25fczE2KHVpbnQ4eDE2X3QsIGludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNocnVuYnFfbl9zMTYpKSkKdWludDh4MTZfdCB2cXNocnVuYnEodWludDh4MTZfdCwgaW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hydW5icV9uX3MzMikpKQp1aW50MTZ4OF90IHZxc2hydW5icV9uX3MzMih1aW50MTZ4OF90LCBpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaHJ1bmJxX25fczMyKSkpCnVpbnQxNng4X3QgdnFzaHJ1bmJxKHVpbnQxNng4X3QsIGludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNocnVudHFfbV9uX3MxNikpKQp1aW50OHgxNl90IHZxc2hydW50cV9tX25fczE2KHVpbnQ4eDE2X3QsIGludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hydW50cV9tX25fczE2KSkpCnVpbnQ4eDE2X3QgdnFzaHJ1bnRxX20odWludDh4MTZfdCwgaW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaHJ1bnRxX21fbl9zMzIpKSkKdWludDE2eDhfdCB2cXNocnVudHFfbV9uX3MzMih1aW50MTZ4OF90LCBpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNocnVudHFfbV9uX3MzMikpKQp1aW50MTZ4OF90IHZxc2hydW50cV9tKHVpbnQxNng4X3QsIGludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hydW50cV9uX3MxNikpKQp1aW50OHgxNl90IHZxc2hydW50cV9uX3MxNih1aW50OHgxNl90LCBpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzaHJ1bnRxX25fczE2KSkpCnVpbnQ4eDE2X3QgdnFzaHJ1bnRxKHVpbnQ4eDE2X3QsIGludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXNocnVudHFfbl9zMzIpKSkKdWludDE2eDhfdCB2cXNocnVudHFfbl9zMzIodWludDE2eDhfdCwgaW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc2hydW50cV9uX3MzMikpKQp1aW50MTZ4OF90IHZxc2hydW50cSh1aW50MTZ4OF90LCBpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzdWJxX21fbl9zMTYpKSkKaW50MTZ4OF90IHZxc3VicV9tX25fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc3VicV9tX25fczE2KSkpCmludDE2eDhfdCB2cXN1YnFfbShpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXN1YnFfbV9uX3MzMikpKQppbnQzMng0X3QgdnFzdWJxX21fbl9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzdWJxX21fbl9zMzIpKSkKaW50MzJ4NF90IHZxc3VicV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc3VicV9tX25fczgpKSkKaW50OHgxNl90IHZxc3VicV9tX25fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXN1YnFfbV9uX3M4KSkpCmludDh4MTZfdCB2cXN1YnFfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc3VicV9tX25fdTE2KSkpCnVpbnQxNng4X3QgdnFzdWJxX21fbl91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgdWludDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzdWJxX21fbl91MTYpKSkKdWludDE2eDhfdCB2cXN1YnFfbSh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCB1aW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXN1YnFfbV9uX3UzMikpKQp1aW50MzJ4NF90IHZxc3VicV9tX25fdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc3VicV9tX25fdTMyKSkpCnVpbnQzMng0X3QgdnFzdWJxX20odWludDMyeDRfdCwgdWludDMyeDRfdCwgdWludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzdWJxX21fbl91OCkpKQp1aW50OHgxNl90IHZxc3VicV9tX25fdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXN1YnFfbV9uX3U4KSkpCnVpbnQ4eDE2X3QgdnFzdWJxX20odWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXN1YnFfbV9zMTYpKSkKaW50MTZ4OF90IHZxc3VicV9tX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc3VicV9tX3MxNikpKQppbnQxNng4X3QgdnFzdWJxX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXN1YnFfbV9zMzIpKSkKaW50MzJ4NF90IHZxc3VicV9tX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc3VicV9tX3MzMikpKQppbnQzMng0X3QgdnFzdWJxX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXN1YnFfbV9zOCkpKQppbnQ4eDE2X3QgdnFzdWJxX21fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXN1YnFfbV9zOCkpKQppbnQ4eDE2X3QgdnFzdWJxX20oaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXN1YnFfbV91MTYpKSkKdWludDE2eDhfdCB2cXN1YnFfbV91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXN1YnFfbV91MTYpKSkKdWludDE2eDhfdCB2cXN1YnFfbSh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc3VicV9tX3UzMikpKQp1aW50MzJ4NF90IHZxc3VicV9tX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc3VicV9tX3UzMikpKQp1aW50MzJ4NF90IHZxc3VicV9tKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzdWJxX21fdTgpKSkKdWludDh4MTZfdCB2cXN1YnFfbV91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc3VicV9tX3U4KSkpCnVpbnQ4eDE2X3QgdnFzdWJxX20odWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXN1YnFfbl9zMTYpKSkKaW50MTZ4OF90IHZxc3VicV9uX3MxNihpbnQxNng4X3QsIGludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc3VicV9uX3MxNikpKQppbnQxNng4X3QgdnFzdWJxKGludDE2eDhfdCwgaW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzdWJxX25fczMyKSkpCmludDMyeDRfdCB2cXN1YnFfbl9zMzIoaW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXN1YnFfbl9zMzIpKSkKaW50MzJ4NF90IHZxc3VicShpbnQzMng0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc3VicV9uX3M4KSkpCmludDh4MTZfdCB2cXN1YnFfbl9zOChpbnQ4eDE2X3QsIGludDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzdWJxX25fczgpKSkKaW50OHgxNl90IHZxc3VicShpbnQ4eDE2X3QsIGludDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzdWJxX25fdTE2KSkpCnVpbnQxNng4X3QgdnFzdWJxX25fdTE2KHVpbnQxNng4X3QsIHVpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXN1YnFfbl91MTYpKSkKdWludDE2eDhfdCB2cXN1YnEodWludDE2eDhfdCwgdWludDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc3VicV9uX3UzMikpKQp1aW50MzJ4NF90IHZxc3VicV9uX3UzMih1aW50MzJ4NF90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzdWJxX25fdTMyKSkpCnVpbnQzMng0X3QgdnFzdWJxKHVpbnQzMng0X3QsIHVpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXN1YnFfbl91OCkpKQp1aW50OHgxNl90IHZxc3VicV9uX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc3VicV9uX3U4KSkpCnVpbnQ4eDE2X3QgdnFzdWJxKHVpbnQ4eDE2X3QsIHVpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc3VicV9zMTYpKSkKaW50MTZ4OF90IHZxc3VicV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc3VicV9zMTYpKSkKaW50MTZ4OF90IHZxc3VicShpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzdWJxX3MzMikpKQppbnQzMng0X3QgdnFzdWJxX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzdWJxX3MzMikpKQppbnQzMng0X3QgdnFzdWJxKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXN1YnFfczgpKSkKaW50OHgxNl90IHZxc3VicV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzdWJxX3M4KSkpCmludDh4MTZfdCB2cXN1YnEoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc3VicV91MTYpKSkKdWludDE2eDhfdCB2cXN1YnFfdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zxc3VicV91MTYpKSkKdWludDE2eDhfdCB2cXN1YnEodWludDE2eDhfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzdWJxX3UzMikpKQp1aW50MzJ4NF90IHZxc3VicV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzdWJxX3UzMikpKQp1aW50MzJ4NF90IHZxc3VicSh1aW50MzJ4NF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cXN1YnFfdTgpKSkKdWludDh4MTZfdCB2cXN1YnFfdTgodWludDh4MTZfdCwgdWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnFzdWJxX3U4KSkpCnVpbnQ4eDE2X3QgdnFzdWJxKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczE2X3MzMikpKQppbnQxNng4X3QgdnJlaW50ZXJwcmV0cV9zMTZfczMyKGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zMTZfczMyKSkpCmludDE2eDhfdCB2cmVpbnRlcnByZXRxX3MxNihpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczE2X3M2NCkpKQppbnQxNng4X3QgdnJlaW50ZXJwcmV0cV9zMTZfczY0KGludDY0eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zMTZfczY0KSkpCmludDE2eDhfdCB2cmVpbnRlcnByZXRxX3MxNihpbnQ2NHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczE2X3M4KSkpCmludDE2eDhfdCB2cmVpbnRlcnByZXRxX3MxNl9zOChpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczE2X3M4KSkpCmludDE2eDhfdCB2cmVpbnRlcnByZXRxX3MxNihpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczE2X3UxNikpKQppbnQxNng4X3QgdnJlaW50ZXJwcmV0cV9zMTZfdTE2KHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczE2X3UxNikpKQppbnQxNng4X3QgdnJlaW50ZXJwcmV0cV9zMTYodWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zMTZfdTMyKSkpCmludDE2eDhfdCB2cmVpbnRlcnByZXRxX3MxNl91MzIodWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zMTZfdTMyKSkpCmludDE2eDhfdCB2cmVpbnRlcnByZXRxX3MxNih1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3MxNl91NjQpKSkKaW50MTZ4OF90IHZyZWludGVycHJldHFfczE2X3U2NCh1aW50NjR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3MxNl91NjQpKSkKaW50MTZ4OF90IHZyZWludGVycHJldHFfczE2KHVpbnQ2NHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczE2X3U4KSkpCmludDE2eDhfdCB2cmVpbnRlcnByZXRxX3MxNl91OCh1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3MxNl91OCkpKQppbnQxNng4X3QgdnJlaW50ZXJwcmV0cV9zMTYodWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zMzJfczE2KSkpCmludDMyeDRfdCB2cmVpbnRlcnByZXRxX3MzMl9zMTYoaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3MzMl9zMTYpKSkKaW50MzJ4NF90IHZyZWludGVycHJldHFfczMyKGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zMzJfczY0KSkpCmludDMyeDRfdCB2cmVpbnRlcnByZXRxX3MzMl9zNjQoaW50NjR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3MzMl9zNjQpKSkKaW50MzJ4NF90IHZyZWludGVycHJldHFfczMyKGludDY0eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zMzJfczgpKSkKaW50MzJ4NF90IHZyZWludGVycHJldHFfczMyX3M4KGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zMzJfczgpKSkKaW50MzJ4NF90IHZyZWludGVycHJldHFfczMyKGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zMzJfdTE2KSkpCmludDMyeDRfdCB2cmVpbnRlcnByZXRxX3MzMl91MTYodWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zMzJfdTE2KSkpCmludDMyeDRfdCB2cmVpbnRlcnByZXRxX3MzMih1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3MzMl91MzIpKSkKaW50MzJ4NF90IHZyZWludGVycHJldHFfczMyX3UzMih1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3MzMl91MzIpKSkKaW50MzJ4NF90IHZyZWludGVycHJldHFfczMyKHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczMyX3U2NCkpKQppbnQzMng0X3QgdnJlaW50ZXJwcmV0cV9zMzJfdTY0KHVpbnQ2NHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczMyX3U2NCkpKQppbnQzMng0X3QgdnJlaW50ZXJwcmV0cV9zMzIodWludDY0eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zMzJfdTgpKSkKaW50MzJ4NF90IHZyZWludGVycHJldHFfczMyX3U4KHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczMyX3U4KSkpCmludDMyeDRfdCB2cmVpbnRlcnByZXRxX3MzMih1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3M2NF9zMTYpKSkKaW50NjR4Ml90IHZyZWludGVycHJldHFfczY0X3MxNihpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczY0X3MxNikpKQppbnQ2NHgyX3QgdnJlaW50ZXJwcmV0cV9zNjQoaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3M2NF9zMzIpKSkKaW50NjR4Ml90IHZyZWludGVycHJldHFfczY0X3MzMihpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczY0X3MzMikpKQppbnQ2NHgyX3QgdnJlaW50ZXJwcmV0cV9zNjQoaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3M2NF9zOCkpKQppbnQ2NHgyX3QgdnJlaW50ZXJwcmV0cV9zNjRfczgoaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3M2NF9zOCkpKQppbnQ2NHgyX3QgdnJlaW50ZXJwcmV0cV9zNjQoaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3M2NF91MTYpKSkKaW50NjR4Ml90IHZyZWludGVycHJldHFfczY0X3UxNih1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3M2NF91MTYpKSkKaW50NjR4Ml90IHZyZWludGVycHJldHFfczY0KHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczY0X3UzMikpKQppbnQ2NHgyX3QgdnJlaW50ZXJwcmV0cV9zNjRfdTMyKHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczY0X3UzMikpKQppbnQ2NHgyX3QgdnJlaW50ZXJwcmV0cV9zNjQodWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zNjRfdTY0KSkpCmludDY0eDJfdCB2cmVpbnRlcnByZXRxX3M2NF91NjQodWludDY0eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zNjRfdTY0KSkpCmludDY0eDJfdCB2cmVpbnRlcnByZXRxX3M2NCh1aW50NjR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3M2NF91OCkpKQppbnQ2NHgyX3QgdnJlaW50ZXJwcmV0cV9zNjRfdTgodWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zNjRfdTgpKSkKaW50NjR4Ml90IHZyZWludGVycHJldHFfczY0KHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczhfczE2KSkpCmludDh4MTZfdCB2cmVpbnRlcnByZXRxX3M4X3MxNihpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczhfczE2KSkpCmludDh4MTZfdCB2cmVpbnRlcnByZXRxX3M4KGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zOF9zMzIpKSkKaW50OHgxNl90IHZyZWludGVycHJldHFfczhfczMyKGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zOF9zMzIpKSkKaW50OHgxNl90IHZyZWludGVycHJldHFfczgoaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3M4X3M2NCkpKQppbnQ4eDE2X3QgdnJlaW50ZXJwcmV0cV9zOF9zNjQoaW50NjR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3M4X3M2NCkpKQppbnQ4eDE2X3QgdnJlaW50ZXJwcmV0cV9zOChpbnQ2NHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczhfdTE2KSkpCmludDh4MTZfdCB2cmVpbnRlcnByZXRxX3M4X3UxNih1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3M4X3UxNikpKQppbnQ4eDE2X3QgdnJlaW50ZXJwcmV0cV9zOCh1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3M4X3UzMikpKQppbnQ4eDE2X3QgdnJlaW50ZXJwcmV0cV9zOF91MzIodWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zOF91MzIpKSkKaW50OHgxNl90IHZyZWludGVycHJldHFfczgodWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zOF91NjQpKSkKaW50OHgxNl90IHZyZWludGVycHJldHFfczhfdTY0KHVpbnQ2NHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczhfdTY0KSkpCmludDh4MTZfdCB2cmVpbnRlcnByZXRxX3M4KHVpbnQ2NHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczhfdTgpKSkKaW50OHgxNl90IHZyZWludGVycHJldHFfczhfdTgodWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zOF91OCkpKQppbnQ4eDE2X3QgdnJlaW50ZXJwcmV0cV9zOCh1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3UxNl9zMTYpKSkKdWludDE2eDhfdCB2cmVpbnRlcnByZXRxX3UxNl9zMTYoaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3UxNl9zMTYpKSkKdWludDE2eDhfdCB2cmVpbnRlcnByZXRxX3UxNihpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdTE2X3MzMikpKQp1aW50MTZ4OF90IHZyZWludGVycHJldHFfdTE2X3MzMihpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdTE2X3MzMikpKQp1aW50MTZ4OF90IHZyZWludGVycHJldHFfdTE2KGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91MTZfczY0KSkpCnVpbnQxNng4X3QgdnJlaW50ZXJwcmV0cV91MTZfczY0KGludDY0eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91MTZfczY0KSkpCnVpbnQxNng4X3QgdnJlaW50ZXJwcmV0cV91MTYoaW50NjR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3UxNl9zOCkpKQp1aW50MTZ4OF90IHZyZWludGVycHJldHFfdTE2X3M4KGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91MTZfczgpKSkKdWludDE2eDhfdCB2cmVpbnRlcnByZXRxX3UxNihpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdTE2X3UzMikpKQp1aW50MTZ4OF90IHZyZWludGVycHJldHFfdTE2X3UzMih1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3UxNl91MzIpKSkKdWludDE2eDhfdCB2cmVpbnRlcnByZXRxX3UxNih1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3UxNl91NjQpKSkKdWludDE2eDhfdCB2cmVpbnRlcnByZXRxX3UxNl91NjQodWludDY0eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91MTZfdTY0KSkpCnVpbnQxNng4X3QgdnJlaW50ZXJwcmV0cV91MTYodWludDY0eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91MTZfdTgpKSkKdWludDE2eDhfdCB2cmVpbnRlcnByZXRxX3UxNl91OCh1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3UxNl91OCkpKQp1aW50MTZ4OF90IHZyZWludGVycHJldHFfdTE2KHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdTMyX3MxNikpKQp1aW50MzJ4NF90IHZyZWludGVycHJldHFfdTMyX3MxNihpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdTMyX3MxNikpKQp1aW50MzJ4NF90IHZyZWludGVycHJldHFfdTMyKGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91MzJfczMyKSkpCnVpbnQzMng0X3QgdnJlaW50ZXJwcmV0cV91MzJfczMyKGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91MzJfczMyKSkpCnVpbnQzMng0X3QgdnJlaW50ZXJwcmV0cV91MzIoaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3UzMl9zNjQpKSkKdWludDMyeDRfdCB2cmVpbnRlcnByZXRxX3UzMl9zNjQoaW50NjR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3UzMl9zNjQpKSkKdWludDMyeDRfdCB2cmVpbnRlcnByZXRxX3UzMihpbnQ2NHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdTMyX3M4KSkpCnVpbnQzMng0X3QgdnJlaW50ZXJwcmV0cV91MzJfczgoaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3UzMl9zOCkpKQp1aW50MzJ4NF90IHZyZWludGVycHJldHFfdTMyKGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91MzJfdTE2KSkpCnVpbnQzMng0X3QgdnJlaW50ZXJwcmV0cV91MzJfdTE2KHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdTMyX3UxNikpKQp1aW50MzJ4NF90IHZyZWludGVycHJldHFfdTMyKHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdTMyX3U2NCkpKQp1aW50MzJ4NF90IHZyZWludGVycHJldHFfdTMyX3U2NCh1aW50NjR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3UzMl91NjQpKSkKdWludDMyeDRfdCB2cmVpbnRlcnByZXRxX3UzMih1aW50NjR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3UzMl91OCkpKQp1aW50MzJ4NF90IHZyZWludGVycHJldHFfdTMyX3U4KHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdTMyX3U4KSkpCnVpbnQzMng0X3QgdnJlaW50ZXJwcmV0cV91MzIodWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91NjRfczE2KSkpCnVpbnQ2NHgyX3QgdnJlaW50ZXJwcmV0cV91NjRfczE2KGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91NjRfczE2KSkpCnVpbnQ2NHgyX3QgdnJlaW50ZXJwcmV0cV91NjQoaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3U2NF9zMzIpKSkKdWludDY0eDJfdCB2cmVpbnRlcnByZXRxX3U2NF9zMzIoaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3U2NF9zMzIpKSkKdWludDY0eDJfdCB2cmVpbnRlcnByZXRxX3U2NChpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdTY0X3M2NCkpKQp1aW50NjR4Ml90IHZyZWludGVycHJldHFfdTY0X3M2NChpbnQ2NHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdTY0X3M2NCkpKQp1aW50NjR4Ml90IHZyZWludGVycHJldHFfdTY0KGludDY0eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91NjRfczgpKSkKdWludDY0eDJfdCB2cmVpbnRlcnByZXRxX3U2NF9zOChpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdTY0X3M4KSkpCnVpbnQ2NHgyX3QgdnJlaW50ZXJwcmV0cV91NjQoaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3U2NF91MTYpKSkKdWludDY0eDJfdCB2cmVpbnRlcnByZXRxX3U2NF91MTYodWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91NjRfdTE2KSkpCnVpbnQ2NHgyX3QgdnJlaW50ZXJwcmV0cV91NjQodWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91NjRfdTMyKSkpCnVpbnQ2NHgyX3QgdnJlaW50ZXJwcmV0cV91NjRfdTMyKHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdTY0X3UzMikpKQp1aW50NjR4Ml90IHZyZWludGVycHJldHFfdTY0KHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdTY0X3U4KSkpCnVpbnQ2NHgyX3QgdnJlaW50ZXJwcmV0cV91NjRfdTgodWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91NjRfdTgpKSkKdWludDY0eDJfdCB2cmVpbnRlcnByZXRxX3U2NCh1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3U4X3MxNikpKQp1aW50OHgxNl90IHZyZWludGVycHJldHFfdThfczE2KGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91OF9zMTYpKSkKdWludDh4MTZfdCB2cmVpbnRlcnByZXRxX3U4KGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91OF9zMzIpKSkKdWludDh4MTZfdCB2cmVpbnRlcnByZXRxX3U4X3MzMihpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdThfczMyKSkpCnVpbnQ4eDE2X3QgdnJlaW50ZXJwcmV0cV91OChpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdThfczY0KSkpCnVpbnQ4eDE2X3QgdnJlaW50ZXJwcmV0cV91OF9zNjQoaW50NjR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3U4X3M2NCkpKQp1aW50OHgxNl90IHZyZWludGVycHJldHFfdTgoaW50NjR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3U4X3M4KSkpCnVpbnQ4eDE2X3QgdnJlaW50ZXJwcmV0cV91OF9zOChpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfdThfczgpKSkKdWludDh4MTZfdCB2cmVpbnRlcnByZXRxX3U4KGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91OF91MTYpKSkKdWludDh4MTZfdCB2cmVpbnRlcnByZXRxX3U4X3UxNih1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3U4X3UxNikpKQp1aW50OHgxNl90IHZyZWludGVycHJldHFfdTgodWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91OF91MzIpKSkKdWludDh4MTZfdCB2cmVpbnRlcnByZXRxX3U4X3UzMih1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3U4X3UzMikpKQp1aW50OHgxNl90IHZyZWludGVycHJldHFfdTgodWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91OF91NjQpKSkKdWludDh4MTZfdCB2cmVpbnRlcnByZXRxX3U4X3U2NCh1aW50NjR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3U4X3U2NCkpKQp1aW50OHgxNl90IHZyZWludGVycHJldHFfdTgodWludDY0eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjE2cV9tX3M4KSkpCmludDh4MTZfdCB2cmV2MTZxX21fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjE2cV9tX3M4KSkpCmludDh4MTZfdCB2cmV2MTZxX20oaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjE2cV9tX3U4KSkpCnVpbnQ4eDE2X3QgdnJldjE2cV9tX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjE2cV9tX3U4KSkpCnVpbnQ4eDE2X3QgdnJldjE2cV9tKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjE2cV9zOCkpKQppbnQ4eDE2X3QgdnJldjE2cV9zOChpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXYxNnFfczgpKSkKaW50OHgxNl90IHZyZXYxNnEoaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2MTZxX3U4KSkpCnVpbnQ4eDE2X3QgdnJldjE2cV91OCh1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2MTZxX3U4KSkpCnVpbnQ4eDE2X3QgdnJldjE2cSh1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2MTZxX3hfczgpKSkKaW50OHgxNl90IHZyZXYxNnFfeF9zOChpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjE2cV94X3M4KSkpCmludDh4MTZfdCB2cmV2MTZxX3goaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXYxNnFfeF91OCkpKQp1aW50OHgxNl90IHZyZXYxNnFfeF91OCh1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXYxNnFfeF91OCkpKQp1aW50OHgxNl90IHZyZXYxNnFfeCh1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXYzMnFfbV9zMTYpKSkKaW50MTZ4OF90IHZyZXYzMnFfbV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjMycV9tX3MxNikpKQppbnQxNng4X3QgdnJldjMycV9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXYzMnFfbV9zOCkpKQppbnQ4eDE2X3QgdnJldjMycV9tX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXYzMnFfbV9zOCkpKQppbnQ4eDE2X3QgdnJldjMycV9tKGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXYzMnFfbV91MTYpKSkKdWludDE2eDhfdCB2cmV2MzJxX21fdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjMycV9tX3UxNikpKQp1aW50MTZ4OF90IHZyZXYzMnFfbSh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXYzMnFfbV91OCkpKQp1aW50OHgxNl90IHZyZXYzMnFfbV91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXYzMnFfbV91OCkpKQp1aW50OHgxNl90IHZyZXYzMnFfbSh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXYzMnFfczE2KSkpCmludDE2eDhfdCB2cmV2MzJxX3MxNihpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXYzMnFfczE2KSkpCmludDE2eDhfdCB2cmV2MzJxKGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjMycV9zOCkpKQppbnQ4eDE2X3QgdnJldjMycV9zOChpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXYzMnFfczgpKSkKaW50OHgxNl90IHZyZXYzMnEoaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2MzJxX3UxNikpKQp1aW50MTZ4OF90IHZyZXYzMnFfdTE2KHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXYzMnFfdTE2KSkpCnVpbnQxNng4X3QgdnJldjMycSh1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2MzJxX3U4KSkpCnVpbnQ4eDE2X3QgdnJldjMycV91OCh1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2MzJxX3U4KSkpCnVpbnQ4eDE2X3QgdnJldjMycSh1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2MzJxX3hfczE2KSkpCmludDE2eDhfdCB2cmV2MzJxX3hfczE2KGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2MzJxX3hfczE2KSkpCmludDE2eDhfdCB2cmV2MzJxX3goaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXYzMnFfeF9zOCkpKQppbnQ4eDE2X3QgdnJldjMycV94X3M4KGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2MzJxX3hfczgpKSkKaW50OHgxNl90IHZyZXYzMnFfeChpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjMycV94X3UxNikpKQp1aW50MTZ4OF90IHZyZXYzMnFfeF91MTYodWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2MzJxX3hfdTE2KSkpCnVpbnQxNng4X3QgdnJldjMycV94KHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjMycV94X3U4KSkpCnVpbnQ4eDE2X3QgdnJldjMycV94X3U4KHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjMycV94X3U4KSkpCnVpbnQ4eDE2X3QgdnJldjMycV94KHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjY0cV9tX3MxNikpKQppbnQxNng4X3QgdnJldjY0cV9tX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2NjRxX21fczE2KSkpCmludDE2eDhfdCB2cmV2NjRxX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjY0cV9tX3MzMikpKQppbnQzMng0X3QgdnJldjY0cV9tX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2NjRxX21fczMyKSkpCmludDMyeDRfdCB2cmV2NjRxX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjY0cV9tX3M4KSkpCmludDh4MTZfdCB2cmV2NjRxX21fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjY0cV9tX3M4KSkpCmludDh4MTZfdCB2cmV2NjRxX20oaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjY0cV9tX3UxNikpKQp1aW50MTZ4OF90IHZyZXY2NHFfbV91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2NjRxX21fdTE2KSkpCnVpbnQxNng4X3QgdnJldjY0cV9tKHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjY0cV9tX3UzMikpKQp1aW50MzJ4NF90IHZyZXY2NHFfbV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2NjRxX21fdTMyKSkpCnVpbnQzMng0X3QgdnJldjY0cV9tKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjY0cV9tX3U4KSkpCnVpbnQ4eDE2X3QgdnJldjY0cV9tX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjY0cV9tX3U4KSkpCnVpbnQ4eDE2X3QgdnJldjY0cV9tKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjY0cV9zMTYpKSkKaW50MTZ4OF90IHZyZXY2NHFfczE2KGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjY0cV9zMTYpKSkKaW50MTZ4OF90IHZyZXY2NHEoaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2NjRxX3MzMikpKQppbnQzMng0X3QgdnJldjY0cV9zMzIoaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2NjRxX3MzMikpKQppbnQzMng0X3QgdnJldjY0cShpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXY2NHFfczgpKSkKaW50OHgxNl90IHZyZXY2NHFfczgoaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2NjRxX3M4KSkpCmludDh4MTZfdCB2cmV2NjRxKGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjY0cV91MTYpKSkKdWludDE2eDhfdCB2cmV2NjRxX3UxNih1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2NjRxX3UxNikpKQp1aW50MTZ4OF90IHZyZXY2NHEodWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjY0cV91MzIpKSkKdWludDMyeDRfdCB2cmV2NjRxX3UzMih1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2NjRxX3UzMikpKQp1aW50MzJ4NF90IHZyZXY2NHEodWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjY0cV91OCkpKQp1aW50OHgxNl90IHZyZXY2NHFfdTgodWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjY0cV91OCkpKQp1aW50OHgxNl90IHZyZXY2NHEodWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjY0cV94X3MxNikpKQppbnQxNng4X3QgdnJldjY0cV94X3MxNihpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjY0cV94X3MxNikpKQppbnQxNng4X3QgdnJldjY0cV94KGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2NjRxX3hfczMyKSkpCmludDMyeDRfdCB2cmV2NjRxX3hfczMyKGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2NjRxX3hfczMyKSkpCmludDMyeDRfdCB2cmV2NjRxX3goaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXY2NHFfeF9zOCkpKQppbnQ4eDE2X3QgdnJldjY0cV94X3M4KGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2NjRxX3hfczgpKSkKaW50OHgxNl90IHZyZXY2NHFfeChpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjY0cV94X3UxNikpKQp1aW50MTZ4OF90IHZyZXY2NHFfeF91MTYodWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2NjRxX3hfdTE2KSkpCnVpbnQxNng4X3QgdnJldjY0cV94KHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjY0cV94X3UzMikpKQp1aW50MzJ4NF90IHZyZXY2NHFfeF91MzIodWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2NjRxX3hfdTMyKSkpCnVpbnQzMng0X3QgdnJldjY0cV94KHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjY0cV94X3U4KSkpCnVpbnQ4eDE2X3QgdnJldjY0cV94X3U4KHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjY0cV94X3U4KSkpCnVpbnQ4eDE2X3QgdnJldjY0cV94KHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJoYWRkcV9tX3MxNikpKQppbnQxNng4X3QgdnJoYWRkcV9tX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyaGFkZHFfbV9zMTYpKSkKaW50MTZ4OF90IHZyaGFkZHFfbShpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyaGFkZHFfbV9zMzIpKSkKaW50MzJ4NF90IHZyaGFkZHFfbV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmhhZGRxX21fczMyKSkpCmludDMyeDRfdCB2cmhhZGRxX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmhhZGRxX21fczgpKSkKaW50OHgxNl90IHZyaGFkZHFfbV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyaGFkZHFfbV9zOCkpKQppbnQ4eDE2X3QgdnJoYWRkcV9tKGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJoYWRkcV9tX3UxNikpKQp1aW50MTZ4OF90IHZyaGFkZHFfbV91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmhhZGRxX21fdTE2KSkpCnVpbnQxNng4X3QgdnJoYWRkcV9tKHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJoYWRkcV9tX3UzMikpKQp1aW50MzJ4NF90IHZyaGFkZHFfbV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmhhZGRxX21fdTMyKSkpCnVpbnQzMng0X3QgdnJoYWRkcV9tKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJoYWRkcV9tX3U4KSkpCnVpbnQ4eDE2X3QgdnJoYWRkcV9tX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJoYWRkcV9tX3U4KSkpCnVpbnQ4eDE2X3QgdnJoYWRkcV9tKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJoYWRkcV9zMTYpKSkKaW50MTZ4OF90IHZyaGFkZHFfczE2KGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmhhZGRxX3MxNikpKQppbnQxNng4X3QgdnJoYWRkcShpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJoYWRkcV9zMzIpKSkKaW50MzJ4NF90IHZyaGFkZHFfczMyKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmhhZGRxX3MzMikpKQppbnQzMng0X3QgdnJoYWRkcShpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJoYWRkcV9zOCkpKQppbnQ4eDE2X3QgdnJoYWRkcV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJoYWRkcV9zOCkpKQppbnQ4eDE2X3QgdnJoYWRkcShpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJoYWRkcV91MTYpKSkKdWludDE2eDhfdCB2cmhhZGRxX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmhhZGRxX3UxNikpKQp1aW50MTZ4OF90IHZyaGFkZHEodWludDE2eDhfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJoYWRkcV91MzIpKSkKdWludDMyeDRfdCB2cmhhZGRxX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmhhZGRxX3UzMikpKQp1aW50MzJ4NF90IHZyaGFkZHEodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJoYWRkcV91OCkpKQp1aW50OHgxNl90IHZyaGFkZHFfdTgodWludDh4MTZfdCwgdWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJoYWRkcV91OCkpKQp1aW50OHgxNl90IHZyaGFkZHEodWludDh4MTZfdCwgdWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJoYWRkcV94X3MxNikpKQppbnQxNng4X3QgdnJoYWRkcV94X3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmhhZGRxX3hfczE2KSkpCmludDE2eDhfdCB2cmhhZGRxX3goaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJoYWRkcV94X3MzMikpKQppbnQzMng0X3QgdnJoYWRkcV94X3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmhhZGRxX3hfczMyKSkpCmludDMyeDRfdCB2cmhhZGRxX3goaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJoYWRkcV94X3M4KSkpCmludDh4MTZfdCB2cmhhZGRxX3hfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJoYWRkcV94X3M4KSkpCmludDh4MTZfdCB2cmhhZGRxX3goaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJoYWRkcV94X3UxNikpKQp1aW50MTZ4OF90IHZyaGFkZHFfeF91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmhhZGRxX3hfdTE2KSkpCnVpbnQxNng4X3QgdnJoYWRkcV94KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJoYWRkcV94X3UzMikpKQp1aW50MzJ4NF90IHZyaGFkZHFfeF91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmhhZGRxX3hfdTMyKSkpCnVpbnQzMng0X3QgdnJoYWRkcV94KHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJoYWRkcV94X3U4KSkpCnVpbnQ4eDE2X3QgdnJoYWRkcV94X3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJoYWRkcV94X3U4KSkpCnVpbnQ4eDE2X3QgdnJoYWRkcV94KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJtbGFsZGF2aGFxX3BfczMyKSkpCmludDY0X3QgdnJtbGFsZGF2aGFxX3BfczMyKGludDY0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybWxhbGRhdmhhcV9wX3MzMikpKQppbnQ2NF90IHZybWxhbGRhdmhhcV9wKGludDY0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybWxhbGRhdmhhcV9wX3UzMikpKQp1aW50NjRfdCB2cm1sYWxkYXZoYXFfcF91MzIodWludDY0X3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJtbGFsZGF2aGFxX3BfdTMyKSkpCnVpbnQ2NF90IHZybWxhbGRhdmhhcV9wKHVpbnQ2NF90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybWxhbGRhdmhhcV9zMzIpKSkKaW50NjRfdCB2cm1sYWxkYXZoYXFfczMyKGludDY0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm1sYWxkYXZoYXFfczMyKSkpCmludDY0X3QgdnJtbGFsZGF2aGFxKGludDY0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm1sYWxkYXZoYXFfdTMyKSkpCnVpbnQ2NF90IHZybWxhbGRhdmhhcV91MzIodWludDY0X3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybWxhbGRhdmhhcV91MzIpKSkKdWludDY0X3QgdnJtbGFsZGF2aGFxKHVpbnQ2NF90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm1sYWxkYXZoYXhxX3BfczMyKSkpCmludDY0X3QgdnJtbGFsZGF2aGF4cV9wX3MzMihpbnQ2NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm1sYWxkYXZoYXhxX3BfczMyKSkpCmludDY0X3QgdnJtbGFsZGF2aGF4cV9wKGludDY0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybWxhbGRhdmhheHFfczMyKSkpCmludDY0X3QgdnJtbGFsZGF2aGF4cV9zMzIoaW50NjRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybWxhbGRhdmhheHFfczMyKSkpCmludDY0X3QgdnJtbGFsZGF2aGF4cShpbnQ2NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJtbGFsZGF2aHFfcF9zMzIpKSkKaW50NjRfdCB2cm1sYWxkYXZocV9wX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm1sYWxkYXZocV9wX3MzMikpKQppbnQ2NF90IHZybWxhbGRhdmhxX3AoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJtbGFsZGF2aHFfcF91MzIpKSkKdWludDY0X3QgdnJtbGFsZGF2aHFfcF91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm1sYWxkYXZocV9wX3UzMikpKQp1aW50NjRfdCB2cm1sYWxkYXZocV9wKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJtbGFsZGF2aHFfczMyKSkpCmludDY0X3QgdnJtbGFsZGF2aHFfczMyKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm1sYWxkYXZocV9zMzIpKSkKaW50NjRfdCB2cm1sYWxkYXZocShpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJtbGFsZGF2aHFfdTMyKSkpCnVpbnQ2NF90IHZybWxhbGRhdmhxX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm1sYWxkYXZocV91MzIpKSkKdWludDY0X3QgdnJtbGFsZGF2aHEodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJtbGFsZGF2aHhxX3BfczMyKSkpCmludDY0X3QgdnJtbGFsZGF2aHhxX3BfczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybWxhbGRhdmh4cV9wX3MzMikpKQppbnQ2NF90IHZybWxhbGRhdmh4cV9wKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybWxhbGRhdmh4cV9zMzIpKSkKaW50NjRfdCB2cm1sYWxkYXZoeHFfczMyKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm1sYWxkYXZoeHFfczMyKSkpCmludDY0X3QgdnJtbGFsZGF2aHhxKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm1sc2xkYXZoYXFfcF9zMzIpKSkKaW50NjRfdCB2cm1sc2xkYXZoYXFfcF9zMzIoaW50NjRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJtbHNsZGF2aGFxX3BfczMyKSkpCmludDY0X3QgdnJtbHNsZGF2aGFxX3AoaW50NjRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJtbHNsZGF2aGFxX3MzMikpKQppbnQ2NF90IHZybWxzbGRhdmhhcV9zMzIoaW50NjRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybWxzbGRhdmhhcV9zMzIpKSkKaW50NjRfdCB2cm1sc2xkYXZoYXEoaW50NjRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybWxzbGRhdmhheHFfcF9zMzIpKSkKaW50NjRfdCB2cm1sc2xkYXZoYXhxX3BfczMyKGludDY0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybWxzbGRhdmhheHFfcF9zMzIpKSkKaW50NjRfdCB2cm1sc2xkYXZoYXhxX3AoaW50NjRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJtbHNsZGF2aGF4cV9zMzIpKSkKaW50NjRfdCB2cm1sc2xkYXZoYXhxX3MzMihpbnQ2NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJtbHNsZGF2aGF4cV9zMzIpKSkKaW50NjRfdCB2cm1sc2xkYXZoYXhxKGludDY0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm1sc2xkYXZocV9wX3MzMikpKQppbnQ2NF90IHZybWxzbGRhdmhxX3BfczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybWxzbGRhdmhxX3BfczMyKSkpCmludDY0X3QgdnJtbHNsZGF2aHFfcChpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm1sc2xkYXZocV9zMzIpKSkKaW50NjRfdCB2cm1sc2xkYXZocV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybWxzbGRhdmhxX3MzMikpKQppbnQ2NF90IHZybWxzbGRhdmhxKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm1sc2xkYXZoeHFfcF9zMzIpKSkKaW50NjRfdCB2cm1sc2xkYXZoeHFfcF9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJtbHNsZGF2aHhxX3BfczMyKSkpCmludDY0X3QgdnJtbHNsZGF2aHhxX3AoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJtbHNsZGF2aHhxX3MzMikpKQppbnQ2NF90IHZybWxzbGRhdmh4cV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybWxzbGRhdmh4cV9zMzIpKSkKaW50NjRfdCB2cm1sc2xkYXZoeHEoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybXVsaHFfbV9zMTYpKSkKaW50MTZ4OF90IHZybXVsaHFfbV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm11bGhxX21fczE2KSkpCmludDE2eDhfdCB2cm11bGhxX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm11bGhxX21fczMyKSkpCmludDMyeDRfdCB2cm11bGhxX21fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJtdWxocV9tX3MzMikpKQppbnQzMng0X3QgdnJtdWxocV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJtdWxocV9tX3M4KSkpCmludDh4MTZfdCB2cm11bGhxX21fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm11bGhxX21fczgpKSkKaW50OHgxNl90IHZybXVsaHFfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybXVsaHFfbV91MTYpKSkKdWludDE2eDhfdCB2cm11bGhxX21fdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJtdWxocV9tX3UxNikpKQp1aW50MTZ4OF90IHZybXVsaHFfbSh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybXVsaHFfbV91MzIpKSkKdWludDMyeDRfdCB2cm11bGhxX21fdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJtdWxocV9tX3UzMikpKQp1aW50MzJ4NF90IHZybXVsaHFfbSh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybXVsaHFfbV91OCkpKQp1aW50OHgxNl90IHZybXVsaHFfbV91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybXVsaHFfbV91OCkpKQp1aW50OHgxNl90IHZybXVsaHFfbSh1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybXVsaHFfczE2KSkpCmludDE2eDhfdCB2cm11bGhxX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJtdWxocV9zMTYpKSkKaW50MTZ4OF90IHZybXVsaHEoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybXVsaHFfczMyKSkpCmludDMyeDRfdCB2cm11bGhxX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJtdWxocV9zMzIpKSkKaW50MzJ4NF90IHZybXVsaHEoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybXVsaHFfczgpKSkKaW50OHgxNl90IHZybXVsaHFfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybXVsaHFfczgpKSkKaW50OHgxNl90IHZybXVsaHEoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybXVsaHFfdTE2KSkpCnVpbnQxNng4X3QgdnJtdWxocV91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJtdWxocV91MTYpKSkKdWludDE2eDhfdCB2cm11bGhxKHVpbnQxNng4X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybXVsaHFfdTMyKSkpCnVpbnQzMng0X3QgdnJtdWxocV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJtdWxocV91MzIpKSkKdWludDMyeDRfdCB2cm11bGhxKHVpbnQzMng0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybXVsaHFfdTgpKSkKdWludDh4MTZfdCB2cm11bGhxX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybXVsaHFfdTgpKSkKdWludDh4MTZfdCB2cm11bGhxKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybXVsaHFfeF9zMTYpKSkKaW50MTZ4OF90IHZybXVsaHFfeF9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJtdWxocV94X3MxNikpKQppbnQxNng4X3QgdnJtdWxocV94KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybXVsaHFfeF9zMzIpKSkKaW50MzJ4NF90IHZybXVsaHFfeF9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJtdWxocV94X3MzMikpKQppbnQzMng0X3QgdnJtdWxocV94KGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybXVsaHFfeF9zOCkpKQppbnQ4eDE2X3QgdnJtdWxocV94X3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybXVsaHFfeF9zOCkpKQppbnQ4eDE2X3QgdnJtdWxocV94KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybXVsaHFfeF91MTYpKSkKdWludDE2eDhfdCB2cm11bGhxX3hfdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJtdWxocV94X3UxNikpKQp1aW50MTZ4OF90IHZybXVsaHFfeCh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybXVsaHFfeF91MzIpKSkKdWludDMyeDRfdCB2cm11bGhxX3hfdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJtdWxocV94X3UzMikpKQp1aW50MzJ4NF90IHZybXVsaHFfeCh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybXVsaHFfeF91OCkpKQp1aW50OHgxNl90IHZybXVsaHFfeF91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybXVsaHFfeF91OCkpKQp1aW50OHgxNl90IHZybXVsaHFfeCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV9tX25fczE2KSkpCmludDE2eDhfdCB2cnNobHFfbV9uX3MxNihpbnQxNng4X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaGxxX21fbl9zMTYpKSkKaW50MTZ4OF90IHZyc2hscV9tX24oaW50MTZ4OF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV9tX25fczMyKSkpCmludDMyeDRfdCB2cnNobHFfbV9uX3MzMihpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaGxxX21fbl9zMzIpKSkKaW50MzJ4NF90IHZyc2hscV9tX24oaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV9tX25fczgpKSkKaW50OHgxNl90IHZyc2hscV9tX25fczgoaW50OHgxNl90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV9tX25fczgpKSkKaW50OHgxNl90IHZyc2hscV9tX24oaW50OHgxNl90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV9tX25fdTE2KSkpCnVpbnQxNng4X3QgdnJzaGxxX21fbl91MTYodWludDE2eDhfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNobHFfbV9uX3UxNikpKQp1aW50MTZ4OF90IHZyc2hscV9tX24odWludDE2eDhfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNobHFfbV9uX3UzMikpKQp1aW50MzJ4NF90IHZyc2hscV9tX25fdTMyKHVpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaGxxX21fbl91MzIpKSkKdWludDMyeDRfdCB2cnNobHFfbV9uKHVpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaGxxX21fbl91OCkpKQp1aW50OHgxNl90IHZyc2hscV9tX25fdTgodWludDh4MTZfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNobHFfbV9uX3U4KSkpCnVpbnQ4eDE2X3QgdnJzaGxxX21fbih1aW50OHgxNl90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV9tX3MxNikpKQppbnQxNng4X3QgdnJzaGxxX21fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaGxxX21fczE2KSkpCmludDE2eDhfdCB2cnNobHFfbShpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV9tX3MzMikpKQppbnQzMng0X3QgdnJzaGxxX21fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaGxxX21fczMyKSkpCmludDMyeDRfdCB2cnNobHFfbShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV9tX3M4KSkpCmludDh4MTZfdCB2cnNobHFfbV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV9tX3M4KSkpCmludDh4MTZfdCB2cnNobHFfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV9tX3UxNikpKQp1aW50MTZ4OF90IHZyc2hscV9tX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaGxxX21fdTE2KSkpCnVpbnQxNng4X3QgdnJzaGxxX20odWludDE2eDhfdCwgdWludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV9tX3UzMikpKQp1aW50MzJ4NF90IHZyc2hscV9tX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaGxxX21fdTMyKSkpCnVpbnQzMng0X3QgdnJzaGxxX20odWludDMyeDRfdCwgdWludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV9tX3U4KSkpCnVpbnQ4eDE2X3QgdnJzaGxxX21fdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV9tX3U4KSkpCnVpbnQ4eDE2X3QgdnJzaGxxX20odWludDh4MTZfdCwgdWludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV9uX3MxNikpKQppbnQxNng4X3QgdnJzaGxxX25fczE2KGludDE2eDhfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaGxxX25fczE2KSkpCmludDE2eDhfdCB2cnNobHEoaW50MTZ4OF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNobHFfbl9zMzIpKSkKaW50MzJ4NF90IHZyc2hscV9uX3MzMihpbnQzMng0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV9uX3MzMikpKQppbnQzMng0X3QgdnJzaGxxKGludDMyeDRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaGxxX25fczgpKSkKaW50OHgxNl90IHZyc2hscV9uX3M4KGludDh4MTZfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaGxxX25fczgpKSkKaW50OHgxNl90IHZyc2hscShpbnQ4eDE2X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV9uX3UxNikpKQp1aW50MTZ4OF90IHZyc2hscV9uX3UxNih1aW50MTZ4OF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNobHFfbl91MTYpKSkKdWludDE2eDhfdCB2cnNobHEodWludDE2eDhfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaGxxX25fdTMyKSkpCnVpbnQzMng0X3QgdnJzaGxxX25fdTMyKHVpbnQzMng0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV9uX3UzMikpKQp1aW50MzJ4NF90IHZyc2hscSh1aW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNobHFfbl91OCkpKQp1aW50OHgxNl90IHZyc2hscV9uX3U4KHVpbnQ4eDE2X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV9uX3U4KSkpCnVpbnQ4eDE2X3QgdnJzaGxxKHVpbnQ4eDE2X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV9zMTYpKSkKaW50MTZ4OF90IHZyc2hscV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV9zMTYpKSkKaW50MTZ4OF90IHZyc2hscShpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaGxxX3MzMikpKQppbnQzMng0X3QgdnJzaGxxX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaGxxX3MzMikpKQppbnQzMng0X3QgdnJzaGxxKGludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNobHFfczgpKSkKaW50OHgxNl90IHZyc2hscV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaGxxX3M4KSkpCmludDh4MTZfdCB2cnNobHEoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV91MTYpKSkKdWludDE2eDhfdCB2cnNobHFfdTE2KHVpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaGxxX3UxNikpKQp1aW50MTZ4OF90IHZyc2hscSh1aW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV91MzIpKSkKdWludDMyeDRfdCB2cnNobHFfdTMyKHVpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaGxxX3UzMikpKQp1aW50MzJ4NF90IHZyc2hscSh1aW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV91OCkpKQp1aW50OHgxNl90IHZyc2hscV91OCh1aW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV91OCkpKQp1aW50OHgxNl90IHZyc2hscSh1aW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV94X3MxNikpKQppbnQxNng4X3QgdnJzaGxxX3hfczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV94X3MxNikpKQppbnQxNng4X3QgdnJzaGxxX3goaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaGxxX3hfczMyKSkpCmludDMyeDRfdCB2cnNobHFfeF9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaGxxX3hfczMyKSkpCmludDMyeDRfdCB2cnNobHFfeChpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNobHFfeF9zOCkpKQppbnQ4eDE2X3QgdnJzaGxxX3hfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaGxxX3hfczgpKSkKaW50OHgxNl90IHZyc2hscV94KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV94X3UxNikpKQp1aW50MTZ4OF90IHZyc2hscV94X3UxNih1aW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaGxxX3hfdTE2KSkpCnVpbnQxNng4X3QgdnJzaGxxX3godWludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV94X3UzMikpKQp1aW50MzJ4NF90IHZyc2hscV94X3UzMih1aW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaGxxX3hfdTMyKSkpCnVpbnQzMng0X3QgdnJzaGxxX3godWludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV94X3U4KSkpCnVpbnQ4eDE2X3QgdnJzaGxxX3hfdTgodWludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hscV94X3U4KSkpCnVpbnQ4eDE2X3QgdnJzaGxxX3godWludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hybmJxX21fbl9zMTYpKSkKaW50OHgxNl90IHZyc2hybmJxX21fbl9zMTYoaW50OHgxNl90LCBpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNocm5icV9tX25fczE2KSkpCmludDh4MTZfdCB2cnNocm5icV9tKGludDh4MTZfdCwgaW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJuYnFfbV9uX3MzMikpKQppbnQxNng4X3QgdnJzaHJuYnFfbV9uX3MzMihpbnQxNng4X3QsIGludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hybmJxX21fbl9zMzIpKSkKaW50MTZ4OF90IHZyc2hybmJxX20oaW50MTZ4OF90LCBpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNocm5icV9tX25fdTE2KSkpCnVpbnQ4eDE2X3QgdnJzaHJuYnFfbV9uX3UxNih1aW50OHgxNl90LCB1aW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJuYnFfbV9uX3UxNikpKQp1aW50OHgxNl90IHZyc2hybmJxX20odWludDh4MTZfdCwgdWludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hybmJxX21fbl91MzIpKSkKdWludDE2eDhfdCB2cnNocm5icV9tX25fdTMyKHVpbnQxNng4X3QsIHVpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNocm5icV9tX25fdTMyKSkpCnVpbnQxNng4X3QgdnJzaHJuYnFfbSh1aW50MTZ4OF90LCB1aW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJuYnFfbl9zMTYpKSkKaW50OHgxNl90IHZyc2hybmJxX25fczE2KGludDh4MTZfdCwgaW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hybmJxX25fczE2KSkpCmludDh4MTZfdCB2cnNocm5icShpbnQ4eDE2X3QsIGludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNocm5icV9uX3MzMikpKQppbnQxNng4X3QgdnJzaHJuYnFfbl9zMzIoaW50MTZ4OF90LCBpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJuYnFfbl9zMzIpKSkKaW50MTZ4OF90IHZyc2hybmJxKGludDE2eDhfdCwgaW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hybmJxX25fdTE2KSkpCnVpbnQ4eDE2X3QgdnJzaHJuYnFfbl91MTYodWludDh4MTZfdCwgdWludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNocm5icV9uX3UxNikpKQp1aW50OHgxNl90IHZyc2hybmJxKHVpbnQ4eDE2X3QsIHVpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJuYnFfbl91MzIpKSkKdWludDE2eDhfdCB2cnNocm5icV9uX3UzMih1aW50MTZ4OF90LCB1aW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hybmJxX25fdTMyKSkpCnVpbnQxNng4X3QgdnJzaHJuYnEodWludDE2eDhfdCwgdWludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNocm50cV9tX25fczE2KSkpCmludDh4MTZfdCB2cnNocm50cV9tX25fczE2KGludDh4MTZfdCwgaW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJudHFfbV9uX3MxNikpKQppbnQ4eDE2X3QgdnJzaHJudHFfbShpbnQ4eDE2X3QsIGludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hybnRxX21fbl9zMzIpKSkKaW50MTZ4OF90IHZyc2hybnRxX21fbl9zMzIoaW50MTZ4OF90LCBpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNocm50cV9tX25fczMyKSkpCmludDE2eDhfdCB2cnNocm50cV9tKGludDE2eDhfdCwgaW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJudHFfbV9uX3UxNikpKQp1aW50OHgxNl90IHZyc2hybnRxX21fbl91MTYodWludDh4MTZfdCwgdWludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hybnRxX21fbl91MTYpKSkKdWludDh4MTZfdCB2cnNocm50cV9tKHVpbnQ4eDE2X3QsIHVpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNocm50cV9tX25fdTMyKSkpCnVpbnQxNng4X3QgdnJzaHJudHFfbV9uX3UzMih1aW50MTZ4OF90LCB1aW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJudHFfbV9uX3UzMikpKQp1aW50MTZ4OF90IHZyc2hybnRxX20odWludDE2eDhfdCwgdWludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hybnRxX25fczE2KSkpCmludDh4MTZfdCB2cnNocm50cV9uX3MxNihpbnQ4eDE2X3QsIGludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNocm50cV9uX3MxNikpKQppbnQ4eDE2X3QgdnJzaHJudHEoaW50OHgxNl90LCBpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJudHFfbl9zMzIpKSkKaW50MTZ4OF90IHZyc2hybnRxX25fczMyKGludDE2eDhfdCwgaW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hybnRxX25fczMyKSkpCmludDE2eDhfdCB2cnNocm50cShpbnQxNng4X3QsIGludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNocm50cV9uX3UxNikpKQp1aW50OHgxNl90IHZyc2hybnRxX25fdTE2KHVpbnQ4eDE2X3QsIHVpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJudHFfbl91MTYpKSkKdWludDh4MTZfdCB2cnNocm50cSh1aW50OHgxNl90LCB1aW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hybnRxX25fdTMyKSkpCnVpbnQxNng4X3QgdnJzaHJudHFfbl91MzIodWludDE2eDhfdCwgdWludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNocm50cV9uX3UzMikpKQp1aW50MTZ4OF90IHZyc2hybnRxKHVpbnQxNng4X3QsIHVpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJxX21fbl9zMTYpKSkKaW50MTZ4OF90IHZyc2hycV9tX25fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJxX21fbl9zMTYpKSkKaW50MTZ4OF90IHZyc2hycV9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJxX21fbl9zMzIpKSkKaW50MzJ4NF90IHZyc2hycV9tX25fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJxX21fbl9zMzIpKSkKaW50MzJ4NF90IHZyc2hycV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJxX21fbl9zOCkpKQppbnQ4eDE2X3QgdnJzaHJxX21fbl9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hycV9tX25fczgpKSkKaW50OHgxNl90IHZyc2hycV9tKGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJxX21fbl91MTYpKSkKdWludDE2eDhfdCB2cnNocnFfbV9uX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJxX21fbl91MTYpKSkKdWludDE2eDhfdCB2cnNocnFfbSh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJxX21fbl91MzIpKSkKdWludDMyeDRfdCB2cnNocnFfbV9uX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJxX21fbl91MzIpKSkKdWludDMyeDRfdCB2cnNocnFfbSh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJxX21fbl91OCkpKQp1aW50OHgxNl90IHZyc2hycV9tX25fdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hycV9tX25fdTgpKSkKdWludDh4MTZfdCB2cnNocnFfbSh1aW50OHgxNl90LCB1aW50OHgxNl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJxX25fczE2KSkpCmludDE2eDhfdCB2cnNocnFfbl9zMTYoaW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hycV9uX3MxNikpKQppbnQxNng4X3QgdnJzaHJxKGludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNocnFfbl9zMzIpKSkKaW50MzJ4NF90IHZyc2hycV9uX3MzMihpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJxX25fczMyKSkpCmludDMyeDRfdCB2cnNocnEoaW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hycV9uX3M4KSkpCmludDh4MTZfdCB2cnNocnFfbl9zOChpbnQ4eDE2X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJxX25fczgpKSkKaW50OHgxNl90IHZyc2hycShpbnQ4eDE2X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJxX25fdTE2KSkpCnVpbnQxNng4X3QgdnJzaHJxX25fdTE2KHVpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJxX25fdTE2KSkpCnVpbnQxNng4X3QgdnJzaHJxKHVpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJxX25fdTMyKSkpCnVpbnQzMng0X3QgdnJzaHJxX25fdTMyKHVpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJxX25fdTMyKSkpCnVpbnQzMng0X3QgdnJzaHJxKHVpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJxX25fdTgpKSkKdWludDh4MTZfdCB2cnNocnFfbl91OCh1aW50OHgxNl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hycV9uX3U4KSkpCnVpbnQ4eDE2X3QgdnJzaHJxKHVpbnQ4eDE2X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJxX3hfbl9zMTYpKSkKaW50MTZ4OF90IHZyc2hycV94X25fczE2KGludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hycV94X25fczE2KSkpCmludDE2eDhfdCB2cnNocnFfeChpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cnNocnFfeF9uX3MzMikpKQppbnQzMng0X3QgdnJzaHJxX3hfbl9zMzIoaW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJxX3hfbl9zMzIpKSkKaW50MzJ4NF90IHZyc2hycV94KGludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hycV94X25fczgpKSkKaW50OHgxNl90IHZyc2hycV94X25fczgoaW50OHgxNl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJxX3hfbl9zOCkpKQppbnQ4eDE2X3QgdnJzaHJxX3goaW50OHgxNl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJxX3hfbl91MTYpKSkKdWludDE2eDhfdCB2cnNocnFfeF9uX3UxNih1aW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJxX3hfbl91MTYpKSkKdWludDE2eDhfdCB2cnNocnFfeCh1aW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJxX3hfbl91MzIpKSkKdWludDMyeDRfdCB2cnNocnFfeF9uX3UzMih1aW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJxX3hfbl91MzIpKSkKdWludDMyeDRfdCB2cnNocnFfeCh1aW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJzaHJxX3hfbl91OCkpKQp1aW50OHgxNl90IHZyc2hycV94X25fdTgodWludDh4MTZfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zyc2hycV94X25fdTgpKSkKdWludDh4MTZfdCB2cnNocnFfeCh1aW50OHgxNl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNiY2lxX21fczMyKSkpCmludDMyeDRfdCB2c2JjaXFfbV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgdW5zaWduZWQgKiwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2JjaXFfbV9zMzIpKSkKaW50MzJ4NF90IHZzYmNpcV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIHVuc2lnbmVkICosIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNiY2lxX21fdTMyKSkpCnVpbnQzMng0X3QgdnNiY2lxX21fdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVuc2lnbmVkICosIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNiY2lxX21fdTMyKSkpCnVpbnQzMng0X3QgdnNiY2lxX20odWludDMyeDRfdCwgdWludDMyeDRfdCwgdWludDMyeDRfdCwgdW5zaWduZWQgKiwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2JjaXFfczMyKSkpCmludDMyeDRfdCB2c2JjaXFfczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCB1bnNpZ25lZCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2JjaXFfczMyKSkpCmludDMyeDRfdCB2c2JjaXEoaW50MzJ4NF90LCBpbnQzMng0X3QsIHVuc2lnbmVkICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzYmNpcV91MzIpKSkKdWludDMyeDRfdCB2c2JjaXFfdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVuc2lnbmVkICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzYmNpcV91MzIpKSkKdWludDMyeDRfdCB2c2JjaXEodWludDMyeDRfdCwgdWludDMyeDRfdCwgdW5zaWduZWQgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNiY3FfbV9zMzIpKSkKaW50MzJ4NF90IHZzYmNxX21fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIHVuc2lnbmVkICosIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNiY3FfbV9zMzIpKSkKaW50MzJ4NF90IHZzYmNxX20oaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyeDRfdCwgdW5zaWduZWQgKiwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2JjcV9tX3UzMikpKQp1aW50MzJ4NF90IHZzYmNxX21fdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVuc2lnbmVkICosIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNiY3FfbV91MzIpKSkKdWludDMyeDRfdCB2c2JjcV9tKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVuc2lnbmVkICosIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNiY3FfczMyKSkpCmludDMyeDRfdCB2c2JjcV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIHVuc2lnbmVkICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzYmNxX3MzMikpKQppbnQzMng0X3QgdnNiY3EoaW50MzJ4NF90LCBpbnQzMng0X3QsIHVuc2lnbmVkICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzYmNxX3UzMikpKQp1aW50MzJ4NF90IHZzYmNxX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1bnNpZ25lZCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2JjcV91MzIpKSkKdWludDMyeDRfdCB2c2JjcSh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1bnNpZ25lZCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2V0cV9sYW5lX3MxNikpKQppbnQxNng4X3QgdnNldHFfbGFuZV9zMTYoaW50MTZfdCwgaW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzZXRxX2xhbmVfczE2KSkpCmludDE2eDhfdCB2c2V0cV9sYW5lKGludDE2X3QsIGludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2V0cV9sYW5lX3MzMikpKQppbnQzMng0X3QgdnNldHFfbGFuZV9zMzIoaW50MzJfdCwgaW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzZXRxX2xhbmVfczMyKSkpCmludDMyeDRfdCB2c2V0cV9sYW5lKGludDMyX3QsIGludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2V0cV9sYW5lX3M2NCkpKQppbnQ2NHgyX3QgdnNldHFfbGFuZV9zNjQoaW50NjRfdCwgaW50NjR4Ml90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzZXRxX2xhbmVfczY0KSkpCmludDY0eDJfdCB2c2V0cV9sYW5lKGludDY0X3QsIGludDY0eDJfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2V0cV9sYW5lX3M4KSkpCmludDh4MTZfdCB2c2V0cV9sYW5lX3M4KGludDhfdCwgaW50OHgxNl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzZXRxX2xhbmVfczgpKSkKaW50OHgxNl90IHZzZXRxX2xhbmUoaW50OF90LCBpbnQ4eDE2X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNldHFfbGFuZV91MTYpKSkKdWludDE2eDhfdCB2c2V0cV9sYW5lX3UxNih1aW50MTZfdCwgdWludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2V0cV9sYW5lX3UxNikpKQp1aW50MTZ4OF90IHZzZXRxX2xhbmUodWludDE2X3QsIHVpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNldHFfbGFuZV91MzIpKSkKdWludDMyeDRfdCB2c2V0cV9sYW5lX3UzMih1aW50MzJfdCwgdWludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2V0cV9sYW5lX3UzMikpKQp1aW50MzJ4NF90IHZzZXRxX2xhbmUodWludDMyX3QsIHVpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNldHFfbGFuZV91NjQpKSkKdWludDY0eDJfdCB2c2V0cV9sYW5lX3U2NCh1aW50NjRfdCwgdWludDY0eDJfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2V0cV9sYW5lX3U2NCkpKQp1aW50NjR4Ml90IHZzZXRxX2xhbmUodWludDY0X3QsIHVpbnQ2NHgyX3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNldHFfbGFuZV91OCkpKQp1aW50OHgxNl90IHZzZXRxX2xhbmVfdTgodWludDhfdCwgdWludDh4MTZfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2V0cV9sYW5lX3U4KSkpCnVpbnQ4eDE2X3QgdnNldHFfbGFuZSh1aW50OF90LCB1aW50OHgxNl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxjcV9tX3MxNikpKQppbnQxNng4X3QgdnNobGNxX21fczE2KGludDE2eDhfdCwgdWludDMyX3QgKiwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxjcV9tX3MxNikpKQppbnQxNng4X3QgdnNobGNxX20oaW50MTZ4OF90LCB1aW50MzJfdCAqLCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobGNxX21fczMyKSkpCmludDMyeDRfdCB2c2hsY3FfbV9zMzIoaW50MzJ4NF90LCB1aW50MzJfdCAqLCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobGNxX21fczMyKSkpCmludDMyeDRfdCB2c2hsY3FfbShpbnQzMng0X3QsIHVpbnQzMl90ICosIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsY3FfbV9zOCkpKQppbnQ4eDE2X3QgdnNobGNxX21fczgoaW50OHgxNl90LCB1aW50MzJfdCAqLCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobGNxX21fczgpKSkKaW50OHgxNl90IHZzaGxjcV9tKGludDh4MTZfdCwgdWludDMyX3QgKiwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxjcV9tX3UxNikpKQp1aW50MTZ4OF90IHZzaGxjcV9tX3UxNih1aW50MTZ4OF90LCB1aW50MzJfdCAqLCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobGNxX21fdTE2KSkpCnVpbnQxNng4X3QgdnNobGNxX20odWludDE2eDhfdCwgdWludDMyX3QgKiwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxjcV9tX3UzMikpKQp1aW50MzJ4NF90IHZzaGxjcV9tX3UzMih1aW50MzJ4NF90LCB1aW50MzJfdCAqLCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobGNxX21fdTMyKSkpCnVpbnQzMng0X3QgdnNobGNxX20odWludDMyeDRfdCwgdWludDMyX3QgKiwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxjcV9tX3U4KSkpCnVpbnQ4eDE2X3QgdnNobGNxX21fdTgodWludDh4MTZfdCwgdWludDMyX3QgKiwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxjcV9tX3U4KSkpCnVpbnQ4eDE2X3QgdnNobGNxX20odWludDh4MTZfdCwgdWludDMyX3QgKiwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxjcV9zMTYpKSkKaW50MTZ4OF90IHZzaGxjcV9zMTYoaW50MTZ4OF90LCB1aW50MzJfdCAqLCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxjcV9zMTYpKSkKaW50MTZ4OF90IHZzaGxjcShpbnQxNng4X3QsIHVpbnQzMl90ICosIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobGNxX3MzMikpKQppbnQzMng0X3QgdnNobGNxX3MzMihpbnQzMng0X3QsIHVpbnQzMl90ICosIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobGNxX3MzMikpKQppbnQzMng0X3QgdnNobGNxKGludDMyeDRfdCwgdWludDMyX3QgKiwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsY3FfczgpKSkKaW50OHgxNl90IHZzaGxjcV9zOChpbnQ4eDE2X3QsIHVpbnQzMl90ICosIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobGNxX3M4KSkpCmludDh4MTZfdCB2c2hsY3EoaW50OHgxNl90LCB1aW50MzJfdCAqLCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxjcV91MTYpKSkKdWludDE2eDhfdCB2c2hsY3FfdTE2KHVpbnQxNng4X3QsIHVpbnQzMl90ICosIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobGNxX3UxNikpKQp1aW50MTZ4OF90IHZzaGxjcSh1aW50MTZ4OF90LCB1aW50MzJfdCAqLCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxjcV91MzIpKSkKdWludDMyeDRfdCB2c2hsY3FfdTMyKHVpbnQzMng0X3QsIHVpbnQzMl90ICosIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobGNxX3UzMikpKQp1aW50MzJ4NF90IHZzaGxjcSh1aW50MzJ4NF90LCB1aW50MzJfdCAqLCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxjcV91OCkpKQp1aW50OHgxNl90IHZzaGxjcV91OCh1aW50OHgxNl90LCB1aW50MzJfdCAqLCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxjcV91OCkpKQp1aW50OHgxNl90IHZzaGxjcSh1aW50OHgxNl90LCB1aW50MzJfdCAqLCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxsYnFfbV9uX3MxNikpKQppbnQzMng0X3QgdnNobGxicV9tX25fczE2KGludDMyeDRfdCwgaW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobGxicV9tX25fczE2KSkpCmludDMyeDRfdCB2c2hsbGJxX20oaW50MzJ4NF90LCBpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsbGJxX21fbl9zOCkpKQppbnQxNng4X3QgdnNobGxicV9tX25fczgoaW50MTZ4OF90LCBpbnQ4eDE2X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsbGJxX21fbl9zOCkpKQppbnQxNng4X3QgdnNobGxicV9tKGludDE2eDhfdCwgaW50OHgxNl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobGxicV9tX25fdTE2KSkpCnVpbnQzMng0X3QgdnNobGxicV9tX25fdTE2KHVpbnQzMng0X3QsIHVpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsbGJxX21fbl91MTYpKSkKdWludDMyeDRfdCB2c2hsbGJxX20odWludDMyeDRfdCwgdWludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxsYnFfbV9uX3U4KSkpCnVpbnQxNng4X3QgdnNobGxicV9tX25fdTgodWludDE2eDhfdCwgdWludDh4MTZfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxsYnFfbV9uX3U4KSkpCnVpbnQxNng4X3QgdnNobGxicV9tKHVpbnQxNng4X3QsIHVpbnQ4eDE2X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsbGJxX25fczE2KSkpCmludDMyeDRfdCB2c2hsbGJxX25fczE2KGludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsbGJxX25fczE2KSkpCmludDMyeDRfdCB2c2hsbGJxKGludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsbGJxX25fczgpKSkKaW50MTZ4OF90IHZzaGxsYnFfbl9zOChpbnQ4eDE2X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobGxicV9uX3M4KSkpCmludDE2eDhfdCB2c2hsbGJxKGludDh4MTZfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsbGJxX25fdTE2KSkpCnVpbnQzMng0X3QgdnNobGxicV9uX3UxNih1aW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxsYnFfbl91MTYpKSkKdWludDMyeDRfdCB2c2hsbGJxKHVpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobGxicV9uX3U4KSkpCnVpbnQxNng4X3QgdnNobGxicV9uX3U4KHVpbnQ4eDE2X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobGxicV9uX3U4KSkpCnVpbnQxNng4X3QgdnNobGxicSh1aW50OHgxNl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxsYnFfeF9uX3MxNikpKQppbnQzMng0X3QgdnNobGxicV94X25fczE2KGludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxsYnFfeF9uX3MxNikpKQppbnQzMng0X3QgdnNobGxicV94KGludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxsYnFfeF9uX3M4KSkpCmludDE2eDhfdCB2c2hsbGJxX3hfbl9zOChpbnQ4eDE2X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsbGJxX3hfbl9zOCkpKQppbnQxNng4X3QgdnNobGxicV94KGludDh4MTZfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxsYnFfeF9uX3UxNikpKQp1aW50MzJ4NF90IHZzaGxsYnFfeF9uX3UxNih1aW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobGxicV94X25fdTE2KSkpCnVpbnQzMng0X3QgdnNobGxicV94KHVpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsbGJxX3hfbl91OCkpKQp1aW50MTZ4OF90IHZzaGxsYnFfeF9uX3U4KHVpbnQ4eDE2X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsbGJxX3hfbl91OCkpKQp1aW50MTZ4OF90IHZzaGxsYnFfeCh1aW50OHgxNl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobGx0cV9tX25fczE2KSkpCmludDMyeDRfdCB2c2hsbHRxX21fbl9zMTYoaW50MzJ4NF90LCBpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsbHRxX21fbl9zMTYpKSkKaW50MzJ4NF90IHZzaGxsdHFfbShpbnQzMng0X3QsIGludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxsdHFfbV9uX3M4KSkpCmludDE2eDhfdCB2c2hsbHRxX21fbl9zOChpbnQxNng4X3QsIGludDh4MTZfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxsdHFfbV9uX3M4KSkpCmludDE2eDhfdCB2c2hsbHRxX20oaW50MTZ4OF90LCBpbnQ4eDE2X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsbHRxX21fbl91MTYpKSkKdWludDMyeDRfdCB2c2hsbHRxX21fbl91MTYodWludDMyeDRfdCwgdWludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxsdHFfbV9uX3UxNikpKQp1aW50MzJ4NF90IHZzaGxsdHFfbSh1aW50MzJ4NF90LCB1aW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobGx0cV9tX25fdTgpKSkKdWludDE2eDhfdCB2c2hsbHRxX21fbl91OCh1aW50MTZ4OF90LCB1aW50OHgxNl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobGx0cV9tX25fdTgpKSkKdWludDE2eDhfdCB2c2hsbHRxX20odWludDE2eDhfdCwgdWludDh4MTZfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxsdHFfbl9zMTYpKSkKaW50MzJ4NF90IHZzaGxsdHFfbl9zMTYoaW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxsdHFfbl9zMTYpKSkKaW50MzJ4NF90IHZzaGxsdHEoaW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxsdHFfbl9zOCkpKQppbnQxNng4X3QgdnNobGx0cV9uX3M4KGludDh4MTZfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsbHRxX25fczgpKSkKaW50MTZ4OF90IHZzaGxsdHEoaW50OHgxNl90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxsdHFfbl91MTYpKSkKdWludDMyeDRfdCB2c2hsbHRxX25fdTE2KHVpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobGx0cV9uX3UxNikpKQp1aW50MzJ4NF90IHZzaGxsdHEodWludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsbHRxX25fdTgpKSkKdWludDE2eDhfdCB2c2hsbHRxX25fdTgodWludDh4MTZfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsbHRxX25fdTgpKSkKdWludDE2eDhfdCB2c2hsbHRxKHVpbnQ4eDE2X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobGx0cV94X25fczE2KSkpCmludDMyeDRfdCB2c2hsbHRxX3hfbl9zMTYoaW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobGx0cV94X25fczE2KSkpCmludDMyeDRfdCB2c2hsbHRxX3goaW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobGx0cV94X25fczgpKSkKaW50MTZ4OF90IHZzaGxsdHFfeF9uX3M4KGludDh4MTZfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxsdHFfeF9uX3M4KSkpCmludDE2eDhfdCB2c2hsbHRxX3goaW50OHgxNl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobGx0cV94X25fdTE2KSkpCnVpbnQzMng0X3QgdnNobGx0cV94X25fdTE2KHVpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hsbHRxX3hfbl91MTYpKSkKdWludDMyeDRfdCB2c2hsbHRxX3godWludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxsdHFfeF9uX3U4KSkpCnVpbnQxNng4X3QgdnNobGx0cV94X25fdTgodWludDh4MTZfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxsdHFfeF9uX3U4KSkpCnVpbnQxNng4X3QgdnNobGx0cV94KHVpbnQ4eDE2X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9tX25fczE2KSkpCmludDE2eDhfdCB2c2hscV9tX25fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfbV9uX3MxNikpKQppbnQxNng4X3QgdnNobHFfbV9uKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfbV9uX3MzMikpKQppbnQzMng0X3QgdnNobHFfbV9uX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX21fbl9zMzIpKSkKaW50MzJ4NF90IHZzaGxxX21fbihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX21fbl9zOCkpKQppbnQ4eDE2X3QgdnNobHFfbV9uX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfbV9uX3M4KSkpCmludDh4MTZfdCB2c2hscV9tX24oaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9tX25fdTE2KSkpCnVpbnQxNng4X3QgdnNobHFfbV9uX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfbV9uX3UxNikpKQp1aW50MTZ4OF90IHZzaGxxX21fbih1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfbV9uX3UzMikpKQp1aW50MzJ4NF90IHZzaGxxX21fbl91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX21fbl91MzIpKSkKdWludDMyeDRfdCB2c2hscV9tX24odWludDMyeDRfdCwgdWludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX21fbl91OCkpKQp1aW50OHgxNl90IHZzaGxxX21fbl91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfbV9uX3U4KSkpCnVpbnQ4eDE2X3QgdnNobHFfbV9uKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9tX3JfczE2KSkpCmludDE2eDhfdCB2c2hscV9tX3JfczE2KGludDE2eDhfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9tX3JfczE2KSkpCmludDE2eDhfdCB2c2hscV9tX3IoaW50MTZ4OF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX21fcl9zMzIpKSkKaW50MzJ4NF90IHZzaGxxX21fcl9zMzIoaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX21fcl9zMzIpKSkKaW50MzJ4NF90IHZzaGxxX21fcihpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfbV9yX3M4KSkpCmludDh4MTZfdCB2c2hscV9tX3JfczgoaW50OHgxNl90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX21fcl9zOCkpKQppbnQ4eDE2X3QgdnNobHFfbV9yKGludDh4MTZfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9tX3JfdTE2KSkpCnVpbnQxNng4X3QgdnNobHFfbV9yX3UxNih1aW50MTZ4OF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX21fcl91MTYpKSkKdWludDE2eDhfdCB2c2hscV9tX3IodWludDE2eDhfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9tX3JfdTMyKSkpCnVpbnQzMng0X3QgdnNobHFfbV9yX3UzMih1aW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX21fcl91MzIpKSkKdWludDMyeDRfdCB2c2hscV9tX3IodWludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9tX3JfdTgpKSkKdWludDh4MTZfdCB2c2hscV9tX3JfdTgodWludDh4MTZfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9tX3JfdTgpKSkKdWludDh4MTZfdCB2c2hscV9tX3IodWludDh4MTZfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9tX3MxNikpKQppbnQxNng4X3QgdnNobHFfbV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9tX3MxNikpKQppbnQxNng4X3QgdnNobHFfbShpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX21fczMyKSkpCmludDMyeDRfdCB2c2hscV9tX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX21fczMyKSkpCmludDMyeDRfdCB2c2hscV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfbV9zOCkpKQppbnQ4eDE2X3QgdnNobHFfbV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX21fczgpKSkKaW50OHgxNl90IHZzaGxxX20oaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9tX3UxNikpKQp1aW50MTZ4OF90IHZzaGxxX21fdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9tX3UxNikpKQp1aW50MTZ4OF90IHZzaGxxX20odWludDE2eDhfdCwgdWludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX21fdTMyKSkpCnVpbnQzMng0X3QgdnNobHFfbV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX21fdTMyKSkpCnVpbnQzMng0X3QgdnNobHFfbSh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfbV91OCkpKQp1aW50OHgxNl90IHZzaGxxX21fdTgodWludDh4MTZfdCwgdWludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX21fdTgpKSkKdWludDh4MTZfdCB2c2hscV9tKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9uX3MxNikpKQppbnQxNng4X3QgdnNobHFfbl9zMTYoaW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX25fczE2KSkpCmludDE2eDhfdCB2c2hscV9uKGludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9uX3MzMikpKQppbnQzMng0X3QgdnNobHFfbl9zMzIoaW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX25fczMyKSkpCmludDMyeDRfdCB2c2hscV9uKGludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9uX3M4KSkpCmludDh4MTZfdCB2c2hscV9uX3M4KGludDh4MTZfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9uX3M4KSkpCmludDh4MTZfdCB2c2hscV9uKGludDh4MTZfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9uX3UxNikpKQp1aW50MTZ4OF90IHZzaGxxX25fdTE2KHVpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfbl91MTYpKSkKdWludDE2eDhfdCB2c2hscV9uKHVpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfbl91MzIpKSkKdWludDMyeDRfdCB2c2hscV9uX3UzMih1aW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX25fdTMyKSkpCnVpbnQzMng0X3QgdnNobHFfbih1aW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX25fdTgpKSkKdWludDh4MTZfdCB2c2hscV9uX3U4KHVpbnQ4eDE2X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfbl91OCkpKQp1aW50OHgxNl90IHZzaGxxX24odWludDh4MTZfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9yX3MxNikpKQppbnQxNng4X3QgdnNobHFfcl9zMTYoaW50MTZ4OF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9yX3MxNikpKQppbnQxNng4X3QgdnNobHFfcihpbnQxNng4X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX3JfczMyKSkpCmludDMyeDRfdCB2c2hscV9yX3MzMihpbnQzMng0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX3JfczMyKSkpCmludDMyeDRfdCB2c2hscV9yKGludDMyeDRfdCwgaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfcl9zOCkpKQppbnQ4eDE2X3QgdnNobHFfcl9zOChpbnQ4eDE2X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX3JfczgpKSkKaW50OHgxNl90IHZzaGxxX3IoaW50OHgxNl90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9yX3UxNikpKQp1aW50MTZ4OF90IHZzaGxxX3JfdTE2KHVpbnQxNng4X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX3JfdTE2KSkpCnVpbnQxNng4X3QgdnNobHFfcih1aW50MTZ4OF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9yX3UzMikpKQp1aW50MzJ4NF90IHZzaGxxX3JfdTMyKHVpbnQzMng0X3QsIGludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX3JfdTMyKSkpCnVpbnQzMng0X3QgdnNobHFfcih1aW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9yX3U4KSkpCnVpbnQ4eDE2X3QgdnNobHFfcl91OCh1aW50OHgxNl90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9yX3U4KSkpCnVpbnQ4eDE2X3QgdnNobHFfcih1aW50OHgxNl90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV9zMTYpKSkKaW50MTZ4OF90IHZzaGxxX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfczE2KSkpCmludDE2eDhfdCB2c2hscShpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfczMyKSkpCmludDMyeDRfdCB2c2hscV9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX3MzMikpKQppbnQzMng0X3QgdnNobHEoaW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX3M4KSkpCmludDh4MTZfdCB2c2hscV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfczgpKSkKaW50OHgxNl90IHZzaGxxKGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV91MTYpKSkKdWludDE2eDhfdCB2c2hscV91MTYodWludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV91MTYpKSkKdWludDE2eDhfdCB2c2hscSh1aW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX3UzMikpKQp1aW50MzJ4NF90IHZzaGxxX3UzMih1aW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX3UzMikpKQp1aW50MzJ4NF90IHZzaGxxKHVpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfdTgpKSkKdWludDh4MTZfdCB2c2hscV91OCh1aW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX3U4KSkpCnVpbnQ4eDE2X3QgdnNobHEodWludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV94X25fczE2KSkpCmludDE2eDhfdCB2c2hscV94X25fczE2KGludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX3hfbl9zMTYpKSkKaW50MTZ4OF90IHZzaGxxX3hfbihpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV94X25fczMyKSkpCmludDMyeDRfdCB2c2hscV94X25fczMyKGludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX3hfbl9zMzIpKSkKaW50MzJ4NF90IHZzaGxxX3hfbihpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV94X25fczgpKSkKaW50OHgxNl90IHZzaGxxX3hfbl9zOChpbnQ4eDE2X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV94X25fczgpKSkKaW50OHgxNl90IHZzaGxxX3hfbihpbnQ4eDE2X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV94X25fdTE2KSkpCnVpbnQxNng4X3QgdnNobHFfeF9uX3UxNih1aW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfeF9uX3UxNikpKQp1aW50MTZ4OF90IHZzaGxxX3hfbih1aW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfeF9uX3UzMikpKQp1aW50MzJ4NF90IHZzaGxxX3hfbl91MzIodWludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX3hfbl91MzIpKSkKdWludDMyeDRfdCB2c2hscV94X24odWludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX3hfbl91OCkpKQp1aW50OHgxNl90IHZzaGxxX3hfbl91OCh1aW50OHgxNl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfeF9uX3U4KSkpCnVpbnQ4eDE2X3QgdnNobHFfeF9uKHVpbnQ4eDE2X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV94X3MxNikpKQppbnQxNng4X3QgdnNobHFfeF9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfeF9zMTYpKSkKaW50MTZ4OF90IHZzaGxxX3goaW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfeF9zMzIpKSkKaW50MzJ4NF90IHZzaGxxX3hfczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX3hfczMyKSkpCmludDMyeDRfdCB2c2hscV94KGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX3hfczgpKSkKaW50OHgxNl90IHZzaGxxX3hfczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfeF9zOCkpKQppbnQ4eDE2X3QgdnNobHFfeChpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV94X3UxNikpKQp1aW50MTZ4OF90IHZzaGxxX3hfdTE2KHVpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hscV94X3UxNikpKQp1aW50MTZ4OF90IHZzaGxxX3godWludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX3hfdTMyKSkpCnVpbnQzMng0X3QgdnNobHFfeF91MzIodWludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX3hfdTMyKSkpCnVpbnQzMng0X3QgdnNobHFfeCh1aW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNobHFfeF91OCkpKQp1aW50OHgxNl90IHZzaGxxX3hfdTgodWludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaGxxX3hfdTgpKSkKdWludDh4MTZfdCB2c2hscV94KHVpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hybmJxX21fbl9zMTYpKSkKaW50OHgxNl90IHZzaHJuYnFfbV9uX3MxNihpbnQ4eDE2X3QsIGludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJuYnFfbV9uX3MxNikpKQppbnQ4eDE2X3QgdnNocm5icV9tKGludDh4MTZfdCwgaW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocm5icV9tX25fczMyKSkpCmludDE2eDhfdCB2c2hybmJxX21fbl9zMzIoaW50MTZ4OF90LCBpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hybmJxX21fbl9zMzIpKSkKaW50MTZ4OF90IHZzaHJuYnFfbShpbnQxNng4X3QsIGludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJuYnFfbV9uX3UxNikpKQp1aW50OHgxNl90IHZzaHJuYnFfbV9uX3UxNih1aW50OHgxNl90LCB1aW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocm5icV9tX25fdTE2KSkpCnVpbnQ4eDE2X3QgdnNocm5icV9tKHVpbnQ4eDE2X3QsIHVpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hybmJxX21fbl91MzIpKSkKdWludDE2eDhfdCB2c2hybmJxX21fbl91MzIodWludDE2eDhfdCwgdWludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJuYnFfbV9uX3UzMikpKQp1aW50MTZ4OF90IHZzaHJuYnFfbSh1aW50MTZ4OF90LCB1aW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocm5icV9uX3MxNikpKQppbnQ4eDE2X3QgdnNocm5icV9uX3MxNihpbnQ4eDE2X3QsIGludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hybmJxX25fczE2KSkpCmludDh4MTZfdCB2c2hybmJxKGludDh4MTZfdCwgaW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJuYnFfbl9zMzIpKSkKaW50MTZ4OF90IHZzaHJuYnFfbl9zMzIoaW50MTZ4OF90LCBpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocm5icV9uX3MzMikpKQppbnQxNng4X3QgdnNocm5icShpbnQxNng4X3QsIGludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hybmJxX25fdTE2KSkpCnVpbnQ4eDE2X3QgdnNocm5icV9uX3UxNih1aW50OHgxNl90LCB1aW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJuYnFfbl91MTYpKSkKdWludDh4MTZfdCB2c2hybmJxKHVpbnQ4eDE2X3QsIHVpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocm5icV9uX3UzMikpKQp1aW50MTZ4OF90IHZzaHJuYnFfbl91MzIodWludDE2eDhfdCwgdWludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hybmJxX25fdTMyKSkpCnVpbnQxNng4X3QgdnNocm5icSh1aW50MTZ4OF90LCB1aW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJudHFfbV9uX3MxNikpKQppbnQ4eDE2X3QgdnNocm50cV9tX25fczE2KGludDh4MTZfdCwgaW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocm50cV9tX25fczE2KSkpCmludDh4MTZfdCB2c2hybnRxX20oaW50OHgxNl90LCBpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hybnRxX21fbl9zMzIpKSkKaW50MTZ4OF90IHZzaHJudHFfbV9uX3MzMihpbnQxNng4X3QsIGludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJudHFfbV9uX3MzMikpKQppbnQxNng4X3QgdnNocm50cV9tKGludDE2eDhfdCwgaW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocm50cV9tX25fdTE2KSkpCnVpbnQ4eDE2X3QgdnNocm50cV9tX25fdTE2KHVpbnQ4eDE2X3QsIHVpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hybnRxX21fbl91MTYpKSkKdWludDh4MTZfdCB2c2hybnRxX20odWludDh4MTZfdCwgdWludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJudHFfbV9uX3UzMikpKQp1aW50MTZ4OF90IHZzaHJudHFfbV9uX3UzMih1aW50MTZ4OF90LCB1aW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocm50cV9tX25fdTMyKSkpCnVpbnQxNng4X3QgdnNocm50cV9tKHVpbnQxNng4X3QsIHVpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hybnRxX25fczE2KSkpCmludDh4MTZfdCB2c2hybnRxX25fczE2KGludDh4MTZfdCwgaW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJudHFfbl9zMTYpKSkKaW50OHgxNl90IHZzaHJudHEoaW50OHgxNl90LCBpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocm50cV9uX3MzMikpKQppbnQxNng4X3QgdnNocm50cV9uX3MzMihpbnQxNng4X3QsIGludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hybnRxX25fczMyKSkpCmludDE2eDhfdCB2c2hybnRxKGludDE2eDhfdCwgaW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJudHFfbl91MTYpKSkKdWludDh4MTZfdCB2c2hybnRxX25fdTE2KHVpbnQ4eDE2X3QsIHVpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocm50cV9uX3UxNikpKQp1aW50OHgxNl90IHZzaHJudHEodWludDh4MTZfdCwgdWludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hybnRxX25fdTMyKSkpCnVpbnQxNng4X3QgdnNocm50cV9uX3UzMih1aW50MTZ4OF90LCB1aW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJudHFfbl91MzIpKSkKdWludDE2eDhfdCB2c2hybnRxKHVpbnQxNng4X3QsIHVpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocnFfbV9uX3MxNikpKQppbnQxNng4X3QgdnNocnFfbV9uX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJxX21fbl9zMTYpKSkKaW50MTZ4OF90IHZzaHJxX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hycV9tX25fczMyKSkpCmludDMyeDRfdCB2c2hycV9tX25fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocnFfbV9uX3MzMikpKQppbnQzMng0X3QgdnNocnFfbShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJxX21fbl9zOCkpKQppbnQ4eDE2X3QgdnNocnFfbV9uX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocnFfbV9uX3M4KSkpCmludDh4MTZfdCB2c2hycV9tKGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocnFfbV9uX3UxNikpKQp1aW50MTZ4OF90IHZzaHJxX21fbl91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJxX21fbl91MTYpKSkKdWludDE2eDhfdCB2c2hycV9tKHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hycV9tX25fdTMyKSkpCnVpbnQzMng0X3QgdnNocnFfbV9uX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocnFfbV9uX3UzMikpKQp1aW50MzJ4NF90IHZzaHJxX20odWludDMyeDRfdCwgdWludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJxX21fbl91OCkpKQp1aW50OHgxNl90IHZzaHJxX21fbl91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocnFfbV9uX3U4KSkpCnVpbnQ4eDE2X3QgdnNocnFfbSh1aW50OHgxNl90LCB1aW50OHgxNl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocnFfbl9zMTYpKSkKaW50MTZ4OF90IHZzaHJxX25fczE2KGludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hycV9uX3MxNikpKQppbnQxNng4X3QgdnNocnEoaW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJxX25fczMyKSkpCmludDMyeDRfdCB2c2hycV9uX3MzMihpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocnFfbl9zMzIpKSkKaW50MzJ4NF90IHZzaHJxKGludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hycV9uX3M4KSkpCmludDh4MTZfdCB2c2hycV9uX3M4KGludDh4MTZfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hycV9uX3M4KSkpCmludDh4MTZfdCB2c2hycShpbnQ4eDE2X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocnFfbl91MTYpKSkKdWludDE2eDhfdCB2c2hycV9uX3UxNih1aW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJxX25fdTE2KSkpCnVpbnQxNng4X3QgdnNocnEodWludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hycV9uX3UzMikpKQp1aW50MzJ4NF90IHZzaHJxX25fdTMyKHVpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocnFfbl91MzIpKSkKdWludDMyeDRfdCB2c2hycSh1aW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJxX25fdTgpKSkKdWludDh4MTZfdCB2c2hycV9uX3U4KHVpbnQ4eDE2X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocnFfbl91OCkpKQp1aW50OHgxNl90IHZzaHJxKHVpbnQ4eDE2X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocnFfeF9uX3MxNikpKQppbnQxNng4X3QgdnNocnFfeF9uX3MxNihpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hycV94X25fczE2KSkpCmludDE2eDhfdCB2c2hycV94KGludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJxX3hfbl9zMzIpKSkKaW50MzJ4NF90IHZzaHJxX3hfbl9zMzIoaW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocnFfeF9uX3MzMikpKQppbnQzMng0X3QgdnNocnFfeChpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hycV94X25fczgpKSkKaW50OHgxNl90IHZzaHJxX3hfbl9zOChpbnQ4eDE2X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hycV94X25fczgpKSkKaW50OHgxNl90IHZzaHJxX3goaW50OHgxNl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocnFfeF9uX3UxNikpKQp1aW50MTZ4OF90IHZzaHJxX3hfbl91MTYodWludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJxX3hfbl91MTYpKSkKdWludDE2eDhfdCB2c2hycV94KHVpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2hycV94X25fdTMyKSkpCnVpbnQzMng0X3QgdnNocnFfeF9uX3UzMih1aW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocnFfeF9uX3UzMikpKQp1aW50MzJ4NF90IHZzaHJxX3godWludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzaHJxX3hfbl91OCkpKQp1aW50OHgxNl90IHZzaHJxX3hfbl91OCh1aW50OHgxNl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNocnFfeF9uX3U4KSkpCnVpbnQ4eDE2X3QgdnNocnFfeCh1aW50OHgxNl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNsaXFfbV9uX3MxNikpKQppbnQxNng4X3QgdnNsaXFfbV9uX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzbGlxX21fbl9zMTYpKSkKaW50MTZ4OF90IHZzbGlxX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2xpcV9tX25fczMyKSkpCmludDMyeDRfdCB2c2xpcV9tX25fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNsaXFfbV9uX3MzMikpKQppbnQzMng0X3QgdnNsaXFfbShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzbGlxX21fbl9zOCkpKQppbnQ4eDE2X3QgdnNsaXFfbV9uX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNsaXFfbV9uX3M4KSkpCmludDh4MTZfdCB2c2xpcV9tKGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNsaXFfbV9uX3UxNikpKQp1aW50MTZ4OF90IHZzbGlxX21fbl91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzbGlxX21fbl91MTYpKSkKdWludDE2eDhfdCB2c2xpcV9tKHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2xpcV9tX25fdTMyKSkpCnVpbnQzMng0X3QgdnNsaXFfbV9uX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNsaXFfbV9uX3UzMikpKQp1aW50MzJ4NF90IHZzbGlxX20odWludDMyeDRfdCwgdWludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzbGlxX21fbl91OCkpKQp1aW50OHgxNl90IHZzbGlxX21fbl91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNsaXFfbV9uX3U4KSkpCnVpbnQ4eDE2X3QgdnNsaXFfbSh1aW50OHgxNl90LCB1aW50OHgxNl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNsaXFfbl9zMTYpKSkKaW50MTZ4OF90IHZzbGlxX25fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzbGlxX25fczE2KSkpCmludDE2eDhfdCB2c2xpcShpbnQxNng4X3QsIGludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2xpcV9uX3MzMikpKQppbnQzMng0X3QgdnNsaXFfbl9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNsaXFfbl9zMzIpKSkKaW50MzJ4NF90IHZzbGlxKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzbGlxX25fczgpKSkKaW50OHgxNl90IHZzbGlxX25fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNsaXFfbl9zOCkpKQppbnQ4eDE2X3QgdnNsaXEoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNsaXFfbl91MTYpKSkKdWludDE2eDhfdCB2c2xpcV9uX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzbGlxX25fdTE2KSkpCnVpbnQxNng4X3QgdnNsaXEodWludDE2eDhfdCwgdWludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c2xpcV9uX3UzMikpKQp1aW50MzJ4NF90IHZzbGlxX25fdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNsaXFfbl91MzIpKSkKdWludDMyeDRfdCB2c2xpcSh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzbGlxX25fdTgpKSkKdWludDh4MTZfdCB2c2xpcV9uX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNsaXFfbl91OCkpKQp1aW50OHgxNl90IHZzbGlxKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNyaXFfbV9uX3MxNikpKQppbnQxNng4X3QgdnNyaXFfbV9uX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzcmlxX21fbl9zMTYpKSkKaW50MTZ4OF90IHZzcmlxX20oaW50MTZ4OF90LCBpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3JpcV9tX25fczMyKSkpCmludDMyeDRfdCB2c3JpcV9tX25fczMyKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNyaXFfbV9uX3MzMikpKQppbnQzMng0X3QgdnNyaXFfbShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzcmlxX21fbl9zOCkpKQppbnQ4eDE2X3QgdnNyaXFfbV9uX3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNyaXFfbV9uX3M4KSkpCmludDh4MTZfdCB2c3JpcV9tKGludDh4MTZfdCwgaW50OHgxNl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNyaXFfbV9uX3UxNikpKQp1aW50MTZ4OF90IHZzcmlxX21fbl91MTYodWludDE2eDhfdCwgdWludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzcmlxX21fbl91MTYpKSkKdWludDE2eDhfdCB2c3JpcV9tKHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3JpcV9tX25fdTMyKSkpCnVpbnQzMng0X3QgdnNyaXFfbV9uX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNyaXFfbV9uX3UzMikpKQp1aW50MzJ4NF90IHZzcmlxX20odWludDMyeDRfdCwgdWludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzcmlxX21fbl91OCkpKQp1aW50OHgxNl90IHZzcmlxX21fbl91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNyaXFfbV9uX3U4KSkpCnVpbnQ4eDE2X3QgdnNyaXFfbSh1aW50OHgxNl90LCB1aW50OHgxNl90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNyaXFfbl9zMTYpKSkKaW50MTZ4OF90IHZzcmlxX25fczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzcmlxX25fczE2KSkpCmludDE2eDhfdCB2c3JpcShpbnQxNng4X3QsIGludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3JpcV9uX3MzMikpKQppbnQzMng0X3QgdnNyaXFfbl9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNyaXFfbl9zMzIpKSkKaW50MzJ4NF90IHZzcmlxKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzcmlxX25fczgpKSkKaW50OHgxNl90IHZzcmlxX25fczgoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNyaXFfbl9zOCkpKQppbnQ4eDE2X3QgdnNyaXEoaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNyaXFfbl91MTYpKSkKdWludDE2eDhfdCB2c3JpcV9uX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzcmlxX25fdTE2KSkpCnVpbnQxNng4X3QgdnNyaXEodWludDE2eDhfdCwgdWludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3JpcV9uX3UzMikpKQp1aW50MzJ4NF90IHZzcmlxX25fdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNyaXFfbl91MzIpKSkKdWludDMyeDRfdCB2c3JpcSh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzcmlxX25fdTgpKSkKdWludDh4MTZfdCB2c3JpcV9uX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNyaXFfbl91OCkpKQp1aW50OHgxNl90IHZzcmlxKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0MXFfcF9zMTYpKSkKdm9pZCB2c3QxcV9wX3MxNihpbnQxNl90ICosIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3QxcV9wX3MxNikpKQp2b2lkIHZzdDFxX3AoaW50MTZfdCAqLCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0MXFfcF9zMzIpKSkKdm9pZCB2c3QxcV9wX3MzMihpbnQzMl90ICosIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3QxcV9wX3MzMikpKQp2b2lkIHZzdDFxX3AoaW50MzJfdCAqLCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0MXFfcF9zOCkpKQp2b2lkIHZzdDFxX3BfczgoaW50OF90ICosIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3QxcV9wX3M4KSkpCnZvaWQgdnN0MXFfcChpbnQ4X3QgKiwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdDFxX3BfdTE2KSkpCnZvaWQgdnN0MXFfcF91MTYodWludDE2X3QgKiwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3QxcV9wX3UxNikpKQp2b2lkIHZzdDFxX3AodWludDE2X3QgKiwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3QxcV9wX3UzMikpKQp2b2lkIHZzdDFxX3BfdTMyKHVpbnQzMl90ICosIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0MXFfcF91MzIpKSkKdm9pZCB2c3QxcV9wKHVpbnQzMl90ICosIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0MXFfcF91OCkpKQp2b2lkIHZzdDFxX3BfdTgodWludDhfdCAqLCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdDFxX3BfdTgpKSkKdm9pZCB2c3QxcV9wKHVpbnQ4X3QgKiwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3QxcV9zMTYpKSkKdm9pZCB2c3QxcV9zMTYoaW50MTZfdCAqLCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdDFxX3MxNikpKQp2b2lkIHZzdDFxKGludDE2X3QgKiwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3QxcV9zMzIpKSkKdm9pZCB2c3QxcV9zMzIoaW50MzJfdCAqLCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdDFxX3MzMikpKQp2b2lkIHZzdDFxKGludDMyX3QgKiwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3QxcV9zOCkpKQp2b2lkIHZzdDFxX3M4KGludDhfdCAqLCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdDFxX3M4KSkpCnZvaWQgdnN0MXEoaW50OF90ICosIGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0MXFfdTE2KSkpCnZvaWQgdnN0MXFfdTE2KHVpbnQxNl90ICosIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdDFxX3UxNikpKQp2b2lkIHZzdDFxKHVpbnQxNl90ICosIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdDFxX3UzMikpKQp2b2lkIHZzdDFxX3UzMih1aW50MzJfdCAqLCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3QxcV91MzIpKSkKdm9pZCB2c3QxcSh1aW50MzJfdCAqLCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3QxcV91OCkpKQp2b2lkIHZzdDFxX3U4KHVpbnQ4X3QgKiwgdWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0MXFfdTgpKSkKdm9pZCB2c3QxcSh1aW50OF90ICosIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdDJxX3MxNikpKQp2b2lkIHZzdDJxX3MxNihpbnQxNl90ICosIGludDE2eDh4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3QycV9zMTYpKSkKdm9pZCB2c3QycShpbnQxNl90ICosIGludDE2eDh4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3QycV9zMzIpKSkKdm9pZCB2c3QycV9zMzIoaW50MzJfdCAqLCBpbnQzMng0eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0MnFfczMyKSkpCnZvaWQgdnN0MnEoaW50MzJfdCAqLCBpbnQzMng0eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0MnFfczgpKSkKdm9pZCB2c3QycV9zOChpbnQ4X3QgKiwgaW50OHgxNngyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdDJxX3M4KSkpCnZvaWQgdnN0MnEoaW50OF90ICosIGludDh4MTZ4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3QycV91MTYpKSkKdm9pZCB2c3QycV91MTYodWludDE2X3QgKiwgdWludDE2eDh4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3QycV91MTYpKSkKdm9pZCB2c3QycSh1aW50MTZfdCAqLCB1aW50MTZ4OHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdDJxX3UzMikpKQp2b2lkIHZzdDJxX3UzMih1aW50MzJfdCAqLCB1aW50MzJ4NHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdDJxX3UzMikpKQp2b2lkIHZzdDJxKHVpbnQzMl90ICosIHVpbnQzMng0eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0MnFfdTgpKSkKdm9pZCB2c3QycV91OCh1aW50OF90ICosIHVpbnQ4eDE2eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0MnFfdTgpKSkKdm9pZCB2c3QycSh1aW50OF90ICosIHVpbnQ4eDE2eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0NHFfczE2KSkpCnZvaWQgdnN0NHFfczE2KGludDE2X3QgKiwgaW50MTZ4OHg0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdDRxX3MxNikpKQp2b2lkIHZzdDRxKGludDE2X3QgKiwgaW50MTZ4OHg0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdDRxX3MzMikpKQp2b2lkIHZzdDRxX3MzMihpbnQzMl90ICosIGludDMyeDR4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Q0cV9zMzIpKSkKdm9pZCB2c3Q0cShpbnQzMl90ICosIGludDMyeDR4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Q0cV9zOCkpKQp2b2lkIHZzdDRxX3M4KGludDhfdCAqLCBpbnQ4eDE2eDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0NHFfczgpKSkKdm9pZCB2c3Q0cShpbnQ4X3QgKiwgaW50OHgxNng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdDRxX3UxNikpKQp2b2lkIHZzdDRxX3UxNih1aW50MTZfdCAqLCB1aW50MTZ4OHg0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdDRxX3UxNikpKQp2b2lkIHZzdDRxKHVpbnQxNl90ICosIHVpbnQxNng4eDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0NHFfdTMyKSkpCnZvaWQgdnN0NHFfdTMyKHVpbnQzMl90ICosIHVpbnQzMng0eDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0NHFfdTMyKSkpCnZvaWQgdnN0NHEodWludDMyX3QgKiwgdWludDMyeDR4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Q0cV91OCkpKQp2b2lkIHZzdDRxX3U4KHVpbnQ4X3QgKiwgdWludDh4MTZ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Q0cV91OCkpKQp2b2lkIHZzdDRxKHVpbnQ4X3QgKiwgdWludDh4MTZ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyYnFfcF9zMTYpKSkKdm9pZCB2c3RyYnFfcF9zMTYoaW50OF90ICosIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyYnFfcF9zMTYpKSkKdm9pZCB2c3RyYnFfcChpbnQ4X3QgKiwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJicV9wX3MzMikpKQp2b2lkIHZzdHJicV9wX3MzMihpbnQ4X3QgKiwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJicV9wX3MzMikpKQp2b2lkIHZzdHJicV9wKGludDhfdCAqLCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmJxX3BfczgpKSkKdm9pZCB2c3RyYnFfcF9zOChpbnQ4X3QgKiwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJicV9wX3M4KSkpCnZvaWQgdnN0cmJxX3AoaW50OF90ICosIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyYnFfcF91MTYpKSkKdm9pZCB2c3RyYnFfcF91MTYodWludDhfdCAqLCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJicV9wX3UxNikpKQp2b2lkIHZzdHJicV9wKHVpbnQ4X3QgKiwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyYnFfcF91MzIpKSkKdm9pZCB2c3RyYnFfcF91MzIodWludDhfdCAqLCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJicV9wX3UzMikpKQp2b2lkIHZzdHJicV9wKHVpbnQ4X3QgKiwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyYnFfcF91OCkpKQp2b2lkIHZzdHJicV9wX3U4KHVpbnQ4X3QgKiwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyYnFfcF91OCkpKQp2b2lkIHZzdHJicV9wKHVpbnQ4X3QgKiwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyYnFfczE2KSkpCnZvaWQgdnN0cmJxX3MxNihpbnQ4X3QgKiwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyYnFfczE2KSkpCnZvaWQgdnN0cmJxKGludDhfdCAqLCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJicV9zMzIpKSkKdm9pZCB2c3RyYnFfczMyKGludDhfdCAqLCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJicV9zMzIpKSkKdm9pZCB2c3RyYnEoaW50OF90ICosIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmJxX3M4KSkpCnZvaWQgdnN0cmJxX3M4KGludDhfdCAqLCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJicV9zOCkpKQp2b2lkIHZzdHJicShpbnQ4X3QgKiwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyYnFfc2NhdHRlcl9vZmZzZXRfcF9zMTYpKSkKdm9pZCB2c3RyYnFfc2NhdHRlcl9vZmZzZXRfcF9zMTYoaW50OF90ICosIHVpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyYnFfc2NhdHRlcl9vZmZzZXRfcF9zMTYpKSkKdm9pZCB2c3RyYnFfc2NhdHRlcl9vZmZzZXRfcChpbnQ4X3QgKiwgdWludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJicV9zY2F0dGVyX29mZnNldF9wX3MzMikpKQp2b2lkIHZzdHJicV9zY2F0dGVyX29mZnNldF9wX3MzMihpbnQ4X3QgKiwgdWludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJicV9zY2F0dGVyX29mZnNldF9wX3MzMikpKQp2b2lkIHZzdHJicV9zY2F0dGVyX29mZnNldF9wKGludDhfdCAqLCB1aW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmJxX3NjYXR0ZXJfb2Zmc2V0X3BfczgpKSkKdm9pZCB2c3RyYnFfc2NhdHRlcl9vZmZzZXRfcF9zOChpbnQ4X3QgKiwgdWludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJicV9zY2F0dGVyX29mZnNldF9wX3M4KSkpCnZvaWQgdnN0cmJxX3NjYXR0ZXJfb2Zmc2V0X3AoaW50OF90ICosIHVpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyYnFfc2NhdHRlcl9vZmZzZXRfcF91MTYpKSkKdm9pZCB2c3RyYnFfc2NhdHRlcl9vZmZzZXRfcF91MTYodWludDhfdCAqLCB1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJicV9zY2F0dGVyX29mZnNldF9wX3UxNikpKQp2b2lkIHZzdHJicV9zY2F0dGVyX29mZnNldF9wKHVpbnQ4X3QgKiwgdWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyYnFfc2NhdHRlcl9vZmZzZXRfcF91MzIpKSkKdm9pZCB2c3RyYnFfc2NhdHRlcl9vZmZzZXRfcF91MzIodWludDhfdCAqLCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJicV9zY2F0dGVyX29mZnNldF9wX3UzMikpKQp2b2lkIHZzdHJicV9zY2F0dGVyX29mZnNldF9wKHVpbnQ4X3QgKiwgdWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyYnFfc2NhdHRlcl9vZmZzZXRfcF91OCkpKQp2b2lkIHZzdHJicV9zY2F0dGVyX29mZnNldF9wX3U4KHVpbnQ4X3QgKiwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyYnFfc2NhdHRlcl9vZmZzZXRfcF91OCkpKQp2b2lkIHZzdHJicV9zY2F0dGVyX29mZnNldF9wKHVpbnQ4X3QgKiwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyYnFfc2NhdHRlcl9vZmZzZXRfczE2KSkpCnZvaWQgdnN0cmJxX3NjYXR0ZXJfb2Zmc2V0X3MxNihpbnQ4X3QgKiwgdWludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyYnFfc2NhdHRlcl9vZmZzZXRfczE2KSkpCnZvaWQgdnN0cmJxX3NjYXR0ZXJfb2Zmc2V0KGludDhfdCAqLCB1aW50MTZ4OF90LCBpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJicV9zY2F0dGVyX29mZnNldF9zMzIpKSkKdm9pZCB2c3RyYnFfc2NhdHRlcl9vZmZzZXRfczMyKGludDhfdCAqLCB1aW50MzJ4NF90LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJicV9zY2F0dGVyX29mZnNldF9zMzIpKSkKdm9pZCB2c3RyYnFfc2NhdHRlcl9vZmZzZXQoaW50OF90ICosIHVpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmJxX3NjYXR0ZXJfb2Zmc2V0X3M4KSkpCnZvaWQgdnN0cmJxX3NjYXR0ZXJfb2Zmc2V0X3M4KGludDhfdCAqLCB1aW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJicV9zY2F0dGVyX29mZnNldF9zOCkpKQp2b2lkIHZzdHJicV9zY2F0dGVyX29mZnNldChpbnQ4X3QgKiwgdWludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyYnFfc2NhdHRlcl9vZmZzZXRfdTE2KSkpCnZvaWQgdnN0cmJxX3NjYXR0ZXJfb2Zmc2V0X3UxNih1aW50OF90ICosIHVpbnQxNng4X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJicV9zY2F0dGVyX29mZnNldF91MTYpKSkKdm9pZCB2c3RyYnFfc2NhdHRlcl9vZmZzZXQodWludDhfdCAqLCB1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyYnFfc2NhdHRlcl9vZmZzZXRfdTMyKSkpCnZvaWQgdnN0cmJxX3NjYXR0ZXJfb2Zmc2V0X3UzMih1aW50OF90ICosIHVpbnQzMng0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJicV9zY2F0dGVyX29mZnNldF91MzIpKSkKdm9pZCB2c3RyYnFfc2NhdHRlcl9vZmZzZXQodWludDhfdCAqLCB1aW50MzJ4NF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyYnFfc2NhdHRlcl9vZmZzZXRfdTgpKSkKdm9pZCB2c3RyYnFfc2NhdHRlcl9vZmZzZXRfdTgodWludDhfdCAqLCB1aW50OHgxNl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyYnFfc2NhdHRlcl9vZmZzZXRfdTgpKSkKdm9pZCB2c3RyYnFfc2NhdHRlcl9vZmZzZXQodWludDhfdCAqLCB1aW50OHgxNl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyYnFfdTE2KSkpCnZvaWQgdnN0cmJxX3UxNih1aW50OF90ICosIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJicV91MTYpKSkKdm9pZCB2c3RyYnEodWludDhfdCAqLCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyYnFfdTMyKSkpCnZvaWQgdnN0cmJxX3UzMih1aW50OF90ICosIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJicV91MzIpKSkKdm9pZCB2c3RyYnEodWludDhfdCAqLCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyYnFfdTgpKSkKdm9pZCB2c3RyYnFfdTgodWludDhfdCAqLCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyYnFfdTgpKSkKdm9pZCB2c3RyYnEodWludDhfdCAqLCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyZHFfc2NhdHRlcl9iYXNlX3BfczY0KSkpCnZvaWQgdnN0cmRxX3NjYXR0ZXJfYmFzZV9wX3M2NCh1aW50NjR4Ml90LCBpbnQsIGludDY0eDJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyZHFfc2NhdHRlcl9iYXNlX3BfczY0KSkpCnZvaWQgdnN0cmRxX3NjYXR0ZXJfYmFzZV9wKHVpbnQ2NHgyX3QsIGludCwgaW50NjR4Ml90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJkcV9zY2F0dGVyX2Jhc2VfcF91NjQpKSkKdm9pZCB2c3RyZHFfc2NhdHRlcl9iYXNlX3BfdTY0KHVpbnQ2NHgyX3QsIGludCwgdWludDY0eDJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyZHFfc2NhdHRlcl9iYXNlX3BfdTY0KSkpCnZvaWQgdnN0cmRxX3NjYXR0ZXJfYmFzZV9wKHVpbnQ2NHgyX3QsIGludCwgdWludDY0eDJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyZHFfc2NhdHRlcl9iYXNlX3M2NCkpKQp2b2lkIHZzdHJkcV9zY2F0dGVyX2Jhc2VfczY0KHVpbnQ2NHgyX3QsIGludCwgaW50NjR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyZHFfc2NhdHRlcl9iYXNlX3M2NCkpKQp2b2lkIHZzdHJkcV9zY2F0dGVyX2Jhc2UodWludDY0eDJfdCwgaW50LCBpbnQ2NHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJkcV9zY2F0dGVyX2Jhc2VfdTY0KSkpCnZvaWQgdnN0cmRxX3NjYXR0ZXJfYmFzZV91NjQodWludDY0eDJfdCwgaW50LCB1aW50NjR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyZHFfc2NhdHRlcl9iYXNlX3U2NCkpKQp2b2lkIHZzdHJkcV9zY2F0dGVyX2Jhc2UodWludDY0eDJfdCwgaW50LCB1aW50NjR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyZHFfc2NhdHRlcl9iYXNlX3diX3BfczY0KSkpCnZvaWQgdnN0cmRxX3NjYXR0ZXJfYmFzZV93Yl9wX3M2NCh1aW50NjR4Ml90ICosIGludCwgaW50NjR4Ml90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJkcV9zY2F0dGVyX2Jhc2Vfd2JfcF9zNjQpKSkKdm9pZCB2c3RyZHFfc2NhdHRlcl9iYXNlX3diX3AodWludDY0eDJfdCAqLCBpbnQsIGludDY0eDJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyZHFfc2NhdHRlcl9iYXNlX3diX3BfdTY0KSkpCnZvaWQgdnN0cmRxX3NjYXR0ZXJfYmFzZV93Yl9wX3U2NCh1aW50NjR4Ml90ICosIGludCwgdWludDY0eDJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyZHFfc2NhdHRlcl9iYXNlX3diX3BfdTY0KSkpCnZvaWQgdnN0cmRxX3NjYXR0ZXJfYmFzZV93Yl9wKHVpbnQ2NHgyX3QgKiwgaW50LCB1aW50NjR4Ml90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJkcV9zY2F0dGVyX2Jhc2Vfd2JfczY0KSkpCnZvaWQgdnN0cmRxX3NjYXR0ZXJfYmFzZV93Yl9zNjQodWludDY0eDJfdCAqLCBpbnQsIGludDY0eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmRxX3NjYXR0ZXJfYmFzZV93Yl9zNjQpKSkKdm9pZCB2c3RyZHFfc2NhdHRlcl9iYXNlX3diKHVpbnQ2NHgyX3QgKiwgaW50LCBpbnQ2NHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJkcV9zY2F0dGVyX2Jhc2Vfd2JfdTY0KSkpCnZvaWQgdnN0cmRxX3NjYXR0ZXJfYmFzZV93Yl91NjQodWludDY0eDJfdCAqLCBpbnQsIHVpbnQ2NHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJkcV9zY2F0dGVyX2Jhc2Vfd2JfdTY0KSkpCnZvaWQgdnN0cmRxX3NjYXR0ZXJfYmFzZV93Yih1aW50NjR4Ml90ICosIGludCwgdWludDY0eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmRxX3NjYXR0ZXJfb2Zmc2V0X3BfczY0KSkpCnZvaWQgdnN0cmRxX3NjYXR0ZXJfb2Zmc2V0X3BfczY0KGludDY0X3QgKiwgdWludDY0eDJfdCwgaW50NjR4Ml90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJkcV9zY2F0dGVyX29mZnNldF9wX3M2NCkpKQp2b2lkIHZzdHJkcV9zY2F0dGVyX29mZnNldF9wKGludDY0X3QgKiwgdWludDY0eDJfdCwgaW50NjR4Ml90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJkcV9zY2F0dGVyX29mZnNldF9wX3U2NCkpKQp2b2lkIHZzdHJkcV9zY2F0dGVyX29mZnNldF9wX3U2NCh1aW50NjRfdCAqLCB1aW50NjR4Ml90LCB1aW50NjR4Ml90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJkcV9zY2F0dGVyX29mZnNldF9wX3U2NCkpKQp2b2lkIHZzdHJkcV9zY2F0dGVyX29mZnNldF9wKHVpbnQ2NF90ICosIHVpbnQ2NHgyX3QsIHVpbnQ2NHgyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmRxX3NjYXR0ZXJfb2Zmc2V0X3M2NCkpKQp2b2lkIHZzdHJkcV9zY2F0dGVyX29mZnNldF9zNjQoaW50NjRfdCAqLCB1aW50NjR4Ml90LCBpbnQ2NHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJkcV9zY2F0dGVyX29mZnNldF9zNjQpKSkKdm9pZCB2c3RyZHFfc2NhdHRlcl9vZmZzZXQoaW50NjRfdCAqLCB1aW50NjR4Ml90LCBpbnQ2NHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJkcV9zY2F0dGVyX29mZnNldF91NjQpKSkKdm9pZCB2c3RyZHFfc2NhdHRlcl9vZmZzZXRfdTY0KHVpbnQ2NF90ICosIHVpbnQ2NHgyX3QsIHVpbnQ2NHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJkcV9zY2F0dGVyX29mZnNldF91NjQpKSkKdm9pZCB2c3RyZHFfc2NhdHRlcl9vZmZzZXQodWludDY0X3QgKiwgdWludDY0eDJfdCwgdWludDY0eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmRxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfcF9zNjQpKSkKdm9pZCB2c3RyZHFfc2NhdHRlcl9zaGlmdGVkX29mZnNldF9wX3M2NChpbnQ2NF90ICosIHVpbnQ2NHgyX3QsIGludDY0eDJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyZHFfc2NhdHRlcl9zaGlmdGVkX29mZnNldF9wX3M2NCkpKQp2b2lkIHZzdHJkcV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3AoaW50NjRfdCAqLCB1aW50NjR4Ml90LCBpbnQ2NHgyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmRxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfcF91NjQpKSkKdm9pZCB2c3RyZHFfc2NhdHRlcl9zaGlmdGVkX29mZnNldF9wX3U2NCh1aW50NjRfdCAqLCB1aW50NjR4Ml90LCB1aW50NjR4Ml90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJkcV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3BfdTY0KSkpCnZvaWQgdnN0cmRxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfcCh1aW50NjRfdCAqLCB1aW50NjR4Ml90LCB1aW50NjR4Ml90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJkcV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3M2NCkpKQp2b2lkIHZzdHJkcV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3M2NChpbnQ2NF90ICosIHVpbnQ2NHgyX3QsIGludDY0eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmRxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfczY0KSkpCnZvaWQgdnN0cmRxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXQoaW50NjRfdCAqLCB1aW50NjR4Ml90LCBpbnQ2NHgyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJkcV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3U2NCkpKQp2b2lkIHZzdHJkcV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3U2NCh1aW50NjRfdCAqLCB1aW50NjR4Ml90LCB1aW50NjR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyZHFfc2NhdHRlcl9zaGlmdGVkX29mZnNldF91NjQpKSkKdm9pZCB2c3RyZHFfc2NhdHRlcl9zaGlmdGVkX29mZnNldCh1aW50NjRfdCAqLCB1aW50NjR4Ml90LCB1aW50NjR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyaHFfcF9zMTYpKSkKdm9pZCB2c3RyaHFfcF9zMTYoaW50MTZfdCAqLCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmhxX3BfczE2KSkpCnZvaWQgdnN0cmhxX3AoaW50MTZfdCAqLCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmhxX3BfczMyKSkpCnZvaWQgdnN0cmhxX3BfczMyKGludDE2X3QgKiwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJocV9wX3MzMikpKQp2b2lkIHZzdHJocV9wKGludDE2X3QgKiwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJocV9wX3UxNikpKQp2b2lkIHZzdHJocV9wX3UxNih1aW50MTZfdCAqLCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJocV9wX3UxNikpKQp2b2lkIHZzdHJocV9wKHVpbnQxNl90ICosIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmhxX3BfdTMyKSkpCnZvaWQgdnN0cmhxX3BfdTMyKHVpbnQxNl90ICosIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmhxX3BfdTMyKSkpCnZvaWQgdnN0cmhxX3AodWludDE2X3QgKiwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyaHFfczE2KSkpCnZvaWQgdnN0cmhxX3MxNihpbnQxNl90ICosIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmhxX3MxNikpKQp2b2lkIHZzdHJocShpbnQxNl90ICosIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmhxX3MzMikpKQp2b2lkIHZzdHJocV9zMzIoaW50MTZfdCAqLCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJocV9zMzIpKSkKdm9pZCB2c3RyaHEoaW50MTZfdCAqLCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJocV9zY2F0dGVyX29mZnNldF9wX3MxNikpKQp2b2lkIHZzdHJocV9zY2F0dGVyX29mZnNldF9wX3MxNihpbnQxNl90ICosIHVpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyaHFfc2NhdHRlcl9vZmZzZXRfcF9zMTYpKSkKdm9pZCB2c3RyaHFfc2NhdHRlcl9vZmZzZXRfcChpbnQxNl90ICosIHVpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyaHFfc2NhdHRlcl9vZmZzZXRfcF9zMzIpKSkKdm9pZCB2c3RyaHFfc2NhdHRlcl9vZmZzZXRfcF9zMzIoaW50MTZfdCAqLCB1aW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmhxX3NjYXR0ZXJfb2Zmc2V0X3BfczMyKSkpCnZvaWQgdnN0cmhxX3NjYXR0ZXJfb2Zmc2V0X3AoaW50MTZfdCAqLCB1aW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmhxX3NjYXR0ZXJfb2Zmc2V0X3BfdTE2KSkpCnZvaWQgdnN0cmhxX3NjYXR0ZXJfb2Zmc2V0X3BfdTE2KHVpbnQxNl90ICosIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmhxX3NjYXR0ZXJfb2Zmc2V0X3BfdTE2KSkpCnZvaWQgdnN0cmhxX3NjYXR0ZXJfb2Zmc2V0X3AodWludDE2X3QgKiwgdWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyaHFfc2NhdHRlcl9vZmZzZXRfcF91MzIpKSkKdm9pZCB2c3RyaHFfc2NhdHRlcl9vZmZzZXRfcF91MzIodWludDE2X3QgKiwgdWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyaHFfc2NhdHRlcl9vZmZzZXRfcF91MzIpKSkKdm9pZCB2c3RyaHFfc2NhdHRlcl9vZmZzZXRfcCh1aW50MTZfdCAqLCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJocV9zY2F0dGVyX29mZnNldF9zMTYpKSkKdm9pZCB2c3RyaHFfc2NhdHRlcl9vZmZzZXRfczE2KGludDE2X3QgKiwgdWludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyaHFfc2NhdHRlcl9vZmZzZXRfczE2KSkpCnZvaWQgdnN0cmhxX3NjYXR0ZXJfb2Zmc2V0KGludDE2X3QgKiwgdWludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyaHFfc2NhdHRlcl9vZmZzZXRfczMyKSkpCnZvaWQgdnN0cmhxX3NjYXR0ZXJfb2Zmc2V0X3MzMihpbnQxNl90ICosIHVpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmhxX3NjYXR0ZXJfb2Zmc2V0X3MzMikpKQp2b2lkIHZzdHJocV9zY2F0dGVyX29mZnNldChpbnQxNl90ICosIHVpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmhxX3NjYXR0ZXJfb2Zmc2V0X3UxNikpKQp2b2lkIHZzdHJocV9zY2F0dGVyX29mZnNldF91MTYodWludDE2X3QgKiwgdWludDE2eDhfdCwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmhxX3NjYXR0ZXJfb2Zmc2V0X3UxNikpKQp2b2lkIHZzdHJocV9zY2F0dGVyX29mZnNldCh1aW50MTZfdCAqLCB1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyaHFfc2NhdHRlcl9vZmZzZXRfdTMyKSkpCnZvaWQgdnN0cmhxX3NjYXR0ZXJfb2Zmc2V0X3UzMih1aW50MTZfdCAqLCB1aW50MzJ4NF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyaHFfc2NhdHRlcl9vZmZzZXRfdTMyKSkpCnZvaWQgdnN0cmhxX3NjYXR0ZXJfb2Zmc2V0KHVpbnQxNl90ICosIHVpbnQzMng0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJocV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3BfczE2KSkpCnZvaWQgdnN0cmhxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfcF9zMTYoaW50MTZfdCAqLCB1aW50MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmhxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfcF9zMTYpKSkKdm9pZCB2c3RyaHFfc2NhdHRlcl9zaGlmdGVkX29mZnNldF9wKGludDE2X3QgKiwgdWludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJocV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3BfczMyKSkpCnZvaWQgdnN0cmhxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfcF9zMzIoaW50MTZfdCAqLCB1aW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmhxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfcF9zMzIpKSkKdm9pZCB2c3RyaHFfc2NhdHRlcl9zaGlmdGVkX29mZnNldF9wKGludDE2X3QgKiwgdWludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJocV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3BfdTE2KSkpCnZvaWQgdnN0cmhxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfcF91MTYodWludDE2X3QgKiwgdWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyaHFfc2NhdHRlcl9zaGlmdGVkX29mZnNldF9wX3UxNikpKQp2b2lkIHZzdHJocV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3AodWludDE2X3QgKiwgdWludDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyaHFfc2NhdHRlcl9zaGlmdGVkX29mZnNldF9wX3UzMikpKQp2b2lkIHZzdHJocV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3BfdTMyKHVpbnQxNl90ICosIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmhxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfcF91MzIpKSkKdm9pZCB2c3RyaHFfc2NhdHRlcl9zaGlmdGVkX29mZnNldF9wKHVpbnQxNl90ICosIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmhxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfczE2KSkpCnZvaWQgdnN0cmhxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfczE2KGludDE2X3QgKiwgdWludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyaHFfc2NhdHRlcl9zaGlmdGVkX29mZnNldF9zMTYpKSkKdm9pZCB2c3RyaHFfc2NhdHRlcl9zaGlmdGVkX29mZnNldChpbnQxNl90ICosIHVpbnQxNng4X3QsIGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmhxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfczMyKSkpCnZvaWQgdnN0cmhxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfczMyKGludDE2X3QgKiwgdWludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyaHFfc2NhdHRlcl9zaGlmdGVkX29mZnNldF9zMzIpKSkKdm9pZCB2c3RyaHFfc2NhdHRlcl9zaGlmdGVkX29mZnNldChpbnQxNl90ICosIHVpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmhxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfdTE2KSkpCnZvaWQgdnN0cmhxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfdTE2KHVpbnQxNl90ICosIHVpbnQxNng4X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJocV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3UxNikpKQp2b2lkIHZzdHJocV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0KHVpbnQxNl90ICosIHVpbnQxNng4X3QsIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJocV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3UzMikpKQp2b2lkIHZzdHJocV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3UzMih1aW50MTZfdCAqLCB1aW50MzJ4NF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyaHFfc2NhdHRlcl9zaGlmdGVkX29mZnNldF91MzIpKSkKdm9pZCB2c3RyaHFfc2NhdHRlcl9zaGlmdGVkX29mZnNldCh1aW50MTZfdCAqLCB1aW50MzJ4NF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyaHFfdTE2KSkpCnZvaWQgdnN0cmhxX3UxNih1aW50MTZfdCAqLCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyaHFfdTE2KSkpCnZvaWQgdnN0cmhxKHVpbnQxNl90ICosIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJocV91MzIpKSkKdm9pZCB2c3RyaHFfdTMyKHVpbnQxNl90ICosIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJocV91MzIpKSkKdm9pZCB2c3RyaHEodWludDE2X3QgKiwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cndxX3BfczMyKSkpCnZvaWQgdnN0cndxX3BfczMyKGludDMyX3QgKiwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJ3cV9wX3MzMikpKQp2b2lkIHZzdHJ3cV9wKGludDMyX3QgKiwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJ3cV9wX3UzMikpKQp2b2lkIHZzdHJ3cV9wX3UzMih1aW50MzJfdCAqLCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJ3cV9wX3UzMikpKQp2b2lkIHZzdHJ3cV9wKHVpbnQzMl90ICosIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cndxX3MzMikpKQp2b2lkIHZzdHJ3cV9zMzIoaW50MzJfdCAqLCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJ3cV9zMzIpKSkKdm9pZCB2c3Ryd3EoaW50MzJfdCAqLCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJ3cV9zY2F0dGVyX2Jhc2VfcF9zMzIpKSkKdm9pZCB2c3Ryd3Ffc2NhdHRlcl9iYXNlX3BfczMyKHVpbnQzMng0X3QsIGludCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJ3cV9zY2F0dGVyX2Jhc2VfcF9zMzIpKSkKdm9pZCB2c3Ryd3Ffc2NhdHRlcl9iYXNlX3AodWludDMyeDRfdCwgaW50LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cndxX3NjYXR0ZXJfYmFzZV9wX3UzMikpKQp2b2lkIHZzdHJ3cV9zY2F0dGVyX2Jhc2VfcF91MzIodWludDMyeDRfdCwgaW50LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJ3cV9zY2F0dGVyX2Jhc2VfcF91MzIpKSkKdm9pZCB2c3Ryd3Ffc2NhdHRlcl9iYXNlX3AodWludDMyeDRfdCwgaW50LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJ3cV9zY2F0dGVyX2Jhc2VfczMyKSkpCnZvaWQgdnN0cndxX3NjYXR0ZXJfYmFzZV9zMzIodWludDMyeDRfdCwgaW50LCBpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJ3cV9zY2F0dGVyX2Jhc2VfczMyKSkpCnZvaWQgdnN0cndxX3NjYXR0ZXJfYmFzZSh1aW50MzJ4NF90LCBpbnQsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cndxX3NjYXR0ZXJfYmFzZV91MzIpKSkKdm9pZCB2c3Ryd3Ffc2NhdHRlcl9iYXNlX3UzMih1aW50MzJ4NF90LCBpbnQsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJ3cV9zY2F0dGVyX2Jhc2VfdTMyKSkpCnZvaWQgdnN0cndxX3NjYXR0ZXJfYmFzZSh1aW50MzJ4NF90LCBpbnQsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJ3cV9zY2F0dGVyX2Jhc2Vfd2JfcF9zMzIpKSkKdm9pZCB2c3Ryd3Ffc2NhdHRlcl9iYXNlX3diX3BfczMyKHVpbnQzMng0X3QgKiwgaW50LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cndxX3NjYXR0ZXJfYmFzZV93Yl9wX3MzMikpKQp2b2lkIHZzdHJ3cV9zY2F0dGVyX2Jhc2Vfd2JfcCh1aW50MzJ4NF90ICosIGludCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJ3cV9zY2F0dGVyX2Jhc2Vfd2JfcF91MzIpKSkKdm9pZCB2c3Ryd3Ffc2NhdHRlcl9iYXNlX3diX3BfdTMyKHVpbnQzMng0X3QgKiwgaW50LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJ3cV9zY2F0dGVyX2Jhc2Vfd2JfcF91MzIpKSkKdm9pZCB2c3Ryd3Ffc2NhdHRlcl9iYXNlX3diX3AodWludDMyeDRfdCAqLCBpbnQsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cndxX3NjYXR0ZXJfYmFzZV93Yl9zMzIpKSkKdm9pZCB2c3Ryd3Ffc2NhdHRlcl9iYXNlX3diX3MzMih1aW50MzJ4NF90ICosIGludCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Ryd3Ffc2NhdHRlcl9iYXNlX3diX3MzMikpKQp2b2lkIHZzdHJ3cV9zY2F0dGVyX2Jhc2Vfd2IodWludDMyeDRfdCAqLCBpbnQsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cndxX3NjYXR0ZXJfYmFzZV93Yl91MzIpKSkKdm9pZCB2c3Ryd3Ffc2NhdHRlcl9iYXNlX3diX3UzMih1aW50MzJ4NF90ICosIGludCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cndxX3NjYXR0ZXJfYmFzZV93Yl91MzIpKSkKdm9pZCB2c3Ryd3Ffc2NhdHRlcl9iYXNlX3diKHVpbnQzMng0X3QgKiwgaW50LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Ryd3Ffc2NhdHRlcl9vZmZzZXRfcF9zMzIpKSkKdm9pZCB2c3Ryd3Ffc2NhdHRlcl9vZmZzZXRfcF9zMzIoaW50MzJfdCAqLCB1aW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cndxX3NjYXR0ZXJfb2Zmc2V0X3BfczMyKSkpCnZvaWQgdnN0cndxX3NjYXR0ZXJfb2Zmc2V0X3AoaW50MzJfdCAqLCB1aW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cndxX3NjYXR0ZXJfb2Zmc2V0X3BfdTMyKSkpCnZvaWQgdnN0cndxX3NjYXR0ZXJfb2Zmc2V0X3BfdTMyKHVpbnQzMl90ICosIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cndxX3NjYXR0ZXJfb2Zmc2V0X3BfdTMyKSkpCnZvaWQgdnN0cndxX3NjYXR0ZXJfb2Zmc2V0X3AodWludDMyX3QgKiwgdWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Ryd3Ffc2NhdHRlcl9vZmZzZXRfczMyKSkpCnZvaWQgdnN0cndxX3NjYXR0ZXJfb2Zmc2V0X3MzMihpbnQzMl90ICosIHVpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cndxX3NjYXR0ZXJfb2Zmc2V0X3MzMikpKQp2b2lkIHZzdHJ3cV9zY2F0dGVyX29mZnNldChpbnQzMl90ICosIHVpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cndxX3NjYXR0ZXJfb2Zmc2V0X3UzMikpKQp2b2lkIHZzdHJ3cV9zY2F0dGVyX29mZnNldF91MzIodWludDMyX3QgKiwgdWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cndxX3NjYXR0ZXJfb2Zmc2V0X3UzMikpKQp2b2lkIHZzdHJ3cV9zY2F0dGVyX29mZnNldCh1aW50MzJfdCAqLCB1aW50MzJ4NF90LCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Ryd3Ffc2NhdHRlcl9zaGlmdGVkX29mZnNldF9wX3MzMikpKQp2b2lkIHZzdHJ3cV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3BfczMyKGludDMyX3QgKiwgdWludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJ3cV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3BfczMyKSkpCnZvaWQgdnN0cndxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfcChpbnQzMl90ICosIHVpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Ryd3Ffc2NhdHRlcl9zaGlmdGVkX29mZnNldF9wX3UzMikpKQp2b2lkIHZzdHJ3cV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3BfdTMyKHVpbnQzMl90ICosIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cndxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfcF91MzIpKSkKdm9pZCB2c3Ryd3Ffc2NhdHRlcl9zaGlmdGVkX29mZnNldF9wKHVpbnQzMl90ICosIHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cndxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfczMyKSkpCnZvaWQgdnN0cndxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfczMyKGludDMyX3QgKiwgdWludDMyeDRfdCwgaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Ryd3Ffc2NhdHRlcl9zaGlmdGVkX29mZnNldF9zMzIpKSkKdm9pZCB2c3Ryd3Ffc2NhdHRlcl9zaGlmdGVkX29mZnNldChpbnQzMl90ICosIHVpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cndxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfdTMyKSkpCnZvaWQgdnN0cndxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfdTMyKHVpbnQzMl90ICosIHVpbnQzMng0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJ3cV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3UzMikpKQp2b2lkIHZzdHJ3cV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0KHVpbnQzMl90ICosIHVpbnQzMng0X3QsIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJ3cV91MzIpKSkKdm9pZCB2c3Ryd3FfdTMyKHVpbnQzMl90ICosIHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJ3cV91MzIpKSkKdm9pZCB2c3Ryd3EodWludDMyX3QgKiwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfbV9uX3MxNikpKQppbnQxNng4X3QgdnN1YnFfbV9uX3MxNihpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV9tX25fczE2KSkpCmludDE2eDhfdCB2c3VicV9tKGludDE2eDhfdCwgaW50MTZ4OF90LCBpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX21fbl9zMzIpKSkKaW50MzJ4NF90IHZzdWJxX21fbl9zMzIoaW50MzJ4NF90LCBpbnQzMng0X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfbV9uX3MzMikpKQppbnQzMng0X3QgdnN1YnFfbShpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV9tX25fczgpKSkKaW50OHgxNl90IHZzdWJxX21fbl9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX21fbl9zOCkpKQppbnQ4eDE2X3QgdnN1YnFfbShpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX21fbl91MTYpKSkKdWludDE2eDhfdCB2c3VicV9tX25fdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX21fbl91MTYpKSkKdWludDE2eDhfdCB2c3VicV9tKHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX21fbl91MzIpKSkKdWludDMyeDRfdCB2c3VicV9tX25fdTMyKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX21fbl91MzIpKSkKdWludDMyeDRfdCB2c3VicV9tKHVpbnQzMng0X3QsIHVpbnQzMng0X3QsIHVpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX21fbl91OCkpKQp1aW50OHgxNl90IHZzdWJxX21fbl91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCB1aW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX21fbl91OCkpKQp1aW50OHgxNl90IHZzdWJxX20odWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV9tX3MxNikpKQppbnQxNng4X3QgdnN1YnFfbV9zMTYoaW50MTZ4OF90LCBpbnQxNng4X3QsIGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV9tX3MxNikpKQppbnQxNng4X3QgdnN1YnFfbShpbnQxNng4X3QsIGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX21fczMyKSkpCmludDMyeDRfdCB2c3VicV9tX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgaW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX21fczMyKSkpCmludDMyeDRfdCB2c3VicV9tKGludDMyeDRfdCwgaW50MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfbV9zOCkpKQppbnQ4eDE2X3QgdnN1YnFfbV9zOChpbnQ4eDE2X3QsIGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX21fczgpKSkKaW50OHgxNl90IHZzdWJxX20oaW50OHgxNl90LCBpbnQ4eDE2X3QsIGludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV9tX3UxNikpKQp1aW50MTZ4OF90IHZzdWJxX21fdTE2KHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfbV91MTYpKSkKdWludDE2eDhfdCB2c3VicV9tKHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfbV91MzIpKSkKdWludDMyeDRfdCB2c3VicV9tX3UzMih1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX21fdTMyKSkpCnVpbnQzMng0X3QgdnN1YnFfbSh1aW50MzJ4NF90LCB1aW50MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX21fdTgpKSkKdWludDh4MTZfdCB2c3VicV9tX3U4KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfbV91OCkpKQp1aW50OHgxNl90IHZzdWJxX20odWludDh4MTZfdCwgdWludDh4MTZfdCwgdWludDh4MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV9uX3MxNikpKQppbnQxNng4X3QgdnN1YnFfbl9zMTYoaW50MTZ4OF90LCBpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV9uX3MxNikpKQppbnQxNng4X3QgdnN1YnEoaW50MTZ4OF90LCBpbnQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV9uX3MzMikpKQppbnQzMng0X3QgdnN1YnFfbl9zMzIoaW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV9uX3MzMikpKQppbnQzMng0X3QgdnN1YnEoaW50MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV9uX3M4KSkpCmludDh4MTZfdCB2c3VicV9uX3M4KGludDh4MTZfdCwgaW50OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV9uX3M4KSkpCmludDh4MTZfdCB2c3VicShpbnQ4eDE2X3QsIGludDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfbl91MTYpKSkKdWludDE2eDhfdCB2c3VicV9uX3UxNih1aW50MTZ4OF90LCB1aW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfbl91MTYpKSkKdWludDE2eDhfdCB2c3VicSh1aW50MTZ4OF90LCB1aW50MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfbl91MzIpKSkKdWludDMyeDRfdCB2c3VicV9uX3UzMih1aW50MzJ4NF90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfbl91MzIpKSkKdWludDMyeDRfdCB2c3VicSh1aW50MzJ4NF90LCB1aW50MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfbl91OCkpKQp1aW50OHgxNl90IHZzdWJxX25fdTgodWludDh4MTZfdCwgdWludDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfbl91OCkpKQp1aW50OHgxNl90IHZzdWJxKHVpbnQ4eDE2X3QsIHVpbnQ4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX3MxNikpKQppbnQxNng4X3QgdnN1YnFfczE2KGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV9zMTYpKSkKaW50MTZ4OF90IHZzdWJxKGludDE2eDhfdCwgaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV9zMzIpKSkKaW50MzJ4NF90IHZzdWJxX3MzMihpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfczMyKSkpCmludDMyeDRfdCB2c3VicShpbnQzMng0X3QsIGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfczgpKSkKaW50OHgxNl90IHZzdWJxX3M4KGludDh4MTZfdCwgaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV9zOCkpKQppbnQ4eDE2X3QgdnN1YnEoaW50OHgxNl90LCBpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX3UxNikpKQp1aW50MTZ4OF90IHZzdWJxX3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV91MTYpKSkKdWludDE2eDhfdCB2c3VicSh1aW50MTZ4OF90LCB1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV91MzIpKSkKdWludDMyeDRfdCB2c3VicV91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfdTMyKSkpCnVpbnQzMng0X3QgdnN1YnEodWludDMyeDRfdCwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfdTgpKSkKdWludDh4MTZfdCB2c3VicV91OCh1aW50OHgxNl90LCB1aW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV91OCkpKQp1aW50OHgxNl90IHZzdWJxKHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX3hfbl9zMTYpKSkKaW50MTZ4OF90IHZzdWJxX3hfbl9zMTYoaW50MTZ4OF90LCBpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX3hfbl9zMTYpKSkKaW50MTZ4OF90IHZzdWJxX3goaW50MTZ4OF90LCBpbnQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX3hfbl9zMzIpKSkKaW50MzJ4NF90IHZzdWJxX3hfbl9zMzIoaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX3hfbl9zMzIpKSkKaW50MzJ4NF90IHZzdWJxX3goaW50MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX3hfbl9zOCkpKQppbnQ4eDE2X3QgdnN1YnFfeF9uX3M4KGludDh4MTZfdCwgaW50OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX3hfbl9zOCkpKQppbnQ4eDE2X3QgdnN1YnFfeChpbnQ4eDE2X3QsIGludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV94X25fdTE2KSkpCnVpbnQxNng4X3QgdnN1YnFfeF9uX3UxNih1aW50MTZ4OF90LCB1aW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV94X25fdTE2KSkpCnVpbnQxNng4X3QgdnN1YnFfeCh1aW50MTZ4OF90LCB1aW50MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV94X25fdTMyKSkpCnVpbnQzMng0X3QgdnN1YnFfeF9uX3UzMih1aW50MzJ4NF90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV94X25fdTMyKSkpCnVpbnQzMng0X3QgdnN1YnFfeCh1aW50MzJ4NF90LCB1aW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV94X25fdTgpKSkKdWludDh4MTZfdCB2c3VicV94X25fdTgodWludDh4MTZfdCwgdWludDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV94X25fdTgpKSkKdWludDh4MTZfdCB2c3VicV94KHVpbnQ4eDE2X3QsIHVpbnQ4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfeF9zMTYpKSkKaW50MTZ4OF90IHZzdWJxX3hfczE2KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX3hfczE2KSkpCmludDE2eDhfdCB2c3VicV94KGludDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX3hfczMyKSkpCmludDMyeDRfdCB2c3VicV94X3MzMihpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV94X3MzMikpKQppbnQzMng0X3QgdnN1YnFfeChpbnQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV94X3M4KSkpCmludDh4MTZfdCB2c3VicV94X3M4KGludDh4MTZfdCwgaW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX3hfczgpKSkKaW50OHgxNl90IHZzdWJxX3goaW50OHgxNl90LCBpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfeF91MTYpKSkKdWludDE2eDhfdCB2c3VicV94X3UxNih1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX3hfdTE2KSkpCnVpbnQxNng4X3QgdnN1YnFfeCh1aW50MTZ4OF90LCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX3hfdTMyKSkpCnVpbnQzMng0X3QgdnN1YnFfeF91MzIodWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV94X3UzMikpKQp1aW50MzJ4NF90IHZzdWJxX3godWludDMyeDRfdCwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV94X3U4KSkpCnVpbnQ4eDE2X3QgdnN1YnFfeF91OCh1aW50OHgxNl90LCB1aW50OHgxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX3hfdTgpKSkKdWludDh4MTZfdCB2c3VicV94KHVpbnQ4eDE2X3QsIHVpbnQ4eDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnVuaW5pdGlhbGl6ZWRxX3BvbHltb3JwaGljX3MxNikpKQppbnQxNng4X3QgdnVuaW5pdGlhbGl6ZWRxKGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnVuaW5pdGlhbGl6ZWRxX3BvbHltb3JwaGljX3MzMikpKQppbnQzMng0X3QgdnVuaW5pdGlhbGl6ZWRxKGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnVuaW5pdGlhbGl6ZWRxX3BvbHltb3JwaGljX3M2NCkpKQppbnQ2NHgyX3QgdnVuaW5pdGlhbGl6ZWRxKGludDY0eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnVuaW5pdGlhbGl6ZWRxX3BvbHltb3JwaGljX3M4KSkpCmludDh4MTZfdCB2dW5pbml0aWFsaXplZHEoaW50OHgxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92dW5pbml0aWFsaXplZHFfcG9seW1vcnBoaWNfdTE2KSkpCnVpbnQxNng4X3QgdnVuaW5pdGlhbGl6ZWRxKHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Z1bmluaXRpYWxpemVkcV9wb2x5bW9ycGhpY191MzIpKSkKdWludDMyeDRfdCB2dW5pbml0aWFsaXplZHEodWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnVuaW5pdGlhbGl6ZWRxX3BvbHltb3JwaGljX3U2NCkpKQp1aW50NjR4Ml90IHZ1bmluaXRpYWxpemVkcSh1aW50NjR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92dW5pbml0aWFsaXplZHFfcG9seW1vcnBoaWNfdTgpKSkKdWludDh4MTZfdCB2dW5pbml0aWFsaXplZHEodWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnVuaW5pdGlhbGl6ZWRxX3MxNikpKQppbnQxNng4X3QgdnVuaW5pdGlhbGl6ZWRxX3MxNigpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Z1bmluaXRpYWxpemVkcV9zMzIpKSkKaW50MzJ4NF90IHZ1bmluaXRpYWxpemVkcV9zMzIoKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92dW5pbml0aWFsaXplZHFfczY0KSkpCmludDY0eDJfdCB2dW5pbml0aWFsaXplZHFfczY0KCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnVuaW5pdGlhbGl6ZWRxX3M4KSkpCmludDh4MTZfdCB2dW5pbml0aWFsaXplZHFfczgoKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92dW5pbml0aWFsaXplZHFfdTE2KSkpCnVpbnQxNng4X3QgdnVuaW5pdGlhbGl6ZWRxX3UxNigpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Z1bmluaXRpYWxpemVkcV91MzIpKSkKdWludDMyeDRfdCB2dW5pbml0aWFsaXplZHFfdTMyKCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnVuaW5pdGlhbGl6ZWRxX3U2NCkpKQp1aW50NjR4Ml90IHZ1bmluaXRpYWxpemVkcV91NjQoKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92dW5pbml0aWFsaXplZHFfdTgpKSkKdWludDh4MTZfdCB2dW5pbml0aWFsaXplZHFfdTgoKTsKCiNlbmRpZiAvKiAoIWRlZmluZWQgX19BUk1fTVZFX1BSRVNFUlZFX1VTRVJfTkFNRVNQQUNFKSAqLwoKI2lmIChfX0FSTV9GRUFUVVJFX01WRSAmIDIpICYmICghZGVmaW5lZCBfX0FSTV9NVkVfUFJFU0VSVkVfVVNFUl9OQU1FU1BBQ0UpCgpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmRxX2YxNikpKQpmbG9hdDE2eDhfdCB2YWJkcV9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJkcV9mMTYpKSkKZmxvYXQxNng4X3QgdmFiZHEoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJkcV9mMzIpKSkKZmxvYXQzMng0X3QgdmFiZHFfZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiZHFfZjMyKSkpCmZsb2F0MzJ4NF90IHZhYmRxKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiZHFfbV9mMTYpKSkKZmxvYXQxNng4X3QgdmFiZHFfbV9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJkcV9tX2YxNikpKQpmbG9hdDE2eDhfdCB2YWJkcV9tKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiZHFfbV9mMzIpKSkKZmxvYXQzMng0X3QgdmFiZHFfbV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJkcV9tX2YzMikpKQpmbG9hdDMyeDRfdCB2YWJkcV9tKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFiZHFfeF9mMTYpKSkKZmxvYXQxNng4X3QgdmFiZHFfeF9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmRxX3hfZjE2KSkpCmZsb2F0MTZ4OF90IHZhYmRxX3goZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYmRxX3hfZjMyKSkpCmZsb2F0MzJ4NF90IHZhYmRxX3hfZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJkcV94X2YzMikpKQpmbG9hdDMyeDRfdCB2YWJkcV94KGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJzcV9mMTYpKSkKZmxvYXQxNng4X3QgdmFic3FfZjE2KGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJzcV9mMTYpKSkKZmxvYXQxNng4X3QgdmFic3EoZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYnNxX2YzMikpKQpmbG9hdDMyeDRfdCB2YWJzcV9mMzIoZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYnNxX2YzMikpKQpmbG9hdDMyeDRfdCB2YWJzcShmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFic3FfbV9mMTYpKSkKZmxvYXQxNng4X3QgdmFic3FfbV9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYnNxX21fZjE2KSkpCmZsb2F0MTZ4OF90IHZhYnNxX20oZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYnNxX21fZjMyKSkpCmZsb2F0MzJ4NF90IHZhYnNxX21fZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJzcV9tX2YzMikpKQpmbG9hdDMyeDRfdCB2YWJzcV9tKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJzcV94X2YxNikpKQpmbG9hdDE2eDhfdCB2YWJzcV94X2YxNihmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWJzcV94X2YxNikpKQpmbG9hdDE2eDhfdCB2YWJzcV94KGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYnNxX3hfZjMyKSkpCmZsb2F0MzJ4NF90IHZhYnNxX3hfZjMyKGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhYnNxX3hfZjMyKSkpCmZsb2F0MzJ4NF90IHZhYnNxX3goZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfZjE2KSkpCmZsb2F0MTZ4OF90IHZhZGRxX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX2YxNikpKQpmbG9hdDE2eDhfdCB2YWRkcShmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX2YzMikpKQpmbG9hdDMyeDRfdCB2YWRkcV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV9mMzIpKSkKZmxvYXQzMng0X3QgdmFkZHEoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV9tX2YxNikpKQpmbG9hdDE2eDhfdCB2YWRkcV9tX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX21fZjE2KSkpCmZsb2F0MTZ4OF90IHZhZGRxX20oZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV9tX2YzMikpKQpmbG9hdDMyeDRfdCB2YWRkcV9tX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX21fZjMyKSkpCmZsb2F0MzJ4NF90IHZhZGRxX20oZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV9tX25fZjE2KSkpCmZsb2F0MTZ4OF90IHZhZGRxX21fbl9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfbV9uX2YxNikpKQpmbG9hdDE2eDhfdCB2YWRkcV9tKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX21fbl9mMzIpKSkKZmxvYXQzMng0X3QgdmFkZHFfbV9uX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV9tX25fZjMyKSkpCmZsb2F0MzJ4NF90IHZhZGRxX20oZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfbl9mMTYpKSkKZmxvYXQxNng4X3QgdmFkZHFfbl9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfbl9mMTYpKSkKZmxvYXQxNng4X3QgdmFkZHEoZmxvYXQxNng4X3QsIGZsb2F0MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfbl9mMzIpKSkKZmxvYXQzMng0X3QgdmFkZHFfbl9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfbl9mMzIpKSkKZmxvYXQzMng0X3QgdmFkZHEoZmxvYXQzMng0X3QsIGZsb2F0MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFkZHFfeF9mMTYpKSkKZmxvYXQxNng4X3QgdmFkZHFfeF9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX3hfZjE2KSkpCmZsb2F0MTZ4OF90IHZhZGRxX3goZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhZGRxX3hfZjMyKSkpCmZsb2F0MzJ4NF90IHZhZGRxX3hfZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV94X2YzMikpKQpmbG9hdDMyeDRfdCB2YWRkcV94KGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV94X25fZjE2KSkpCmZsb2F0MTZ4OF90IHZhZGRxX3hfbl9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV94X25fZjE2KSkpCmZsb2F0MTZ4OF90IHZhZGRxX3goZmxvYXQxNng4X3QsIGZsb2F0MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV94X25fZjMyKSkpCmZsb2F0MzJ4NF90IHZhZGRxX3hfbl9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YWRkcV94X25fZjMyKSkpCmZsb2F0MzJ4NF90IHZhZGRxX3goZmxvYXQzMng0X3QsIGZsb2F0MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YW5kcV9mMTYpKSkKZmxvYXQxNng4X3QgdmFuZHFfZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFuZHFfZjE2KSkpCmZsb2F0MTZ4OF90IHZhbmRxKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFuZHFfZjMyKSkpCmZsb2F0MzJ4NF90IHZhbmRxX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhbmRxX2YzMikpKQpmbG9hdDMyeDRfdCB2YW5kcShmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhbmRxX21fZjE2KSkpCmZsb2F0MTZ4OF90IHZhbmRxX21fZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFuZHFfbV9mMTYpKSkKZmxvYXQxNng4X3QgdmFuZHFfbShmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhbmRxX21fZjMyKSkpCmZsb2F0MzJ4NF90IHZhbmRxX21fZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFuZHFfbV9mMzIpKSkKZmxvYXQzMng0X3QgdmFuZHFfbShmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZhbmRxX3hfZjE2KSkpCmZsb2F0MTZ4OF90IHZhbmRxX3hfZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YW5kcV94X2YxNikpKQpmbG9hdDE2eDhfdCB2YW5kcV94KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YW5kcV94X2YzMikpKQpmbG9hdDMyeDRfdCB2YW5kcV94X2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmFuZHFfeF9mMzIpKSkKZmxvYXQzMng0X3QgdmFuZHFfeChmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJpY3FfZjE2KSkpCmZsb2F0MTZ4OF90IHZiaWNxX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZiaWNxX2YxNikpKQpmbG9hdDE2eDhfdCB2YmljcShmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZiaWNxX2YzMikpKQpmbG9hdDMyeDRfdCB2YmljcV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YmljcV9mMzIpKSkKZmxvYXQzMng0X3QgdmJpY3EoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YmljcV9tX2YxNikpKQpmbG9hdDE2eDhfdCB2YmljcV9tX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZiaWNxX21fZjE2KSkpCmZsb2F0MTZ4OF90IHZiaWNxX20oZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YmljcV9tX2YzMikpKQpmbG9hdDMyeDRfdCB2YmljcV9tX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZiaWNxX21fZjMyKSkpCmZsb2F0MzJ4NF90IHZiaWNxX20oZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YmljcV94X2YxNikpKQpmbG9hdDE2eDhfdCB2YmljcV94X2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJpY3FfeF9mMTYpKSkKZmxvYXQxNng4X3QgdmJpY3FfeChmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJpY3FfeF9mMzIpKSkKZmxvYXQzMng0X3QgdmJpY3FfeF9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZiaWNxX3hfZjMyKSkpCmZsb2F0MzJ4NF90IHZiaWNxX3goZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZicnNycV9tX25fZjE2KSkpCmZsb2F0MTZ4OF90IHZicnNycV9tX25fZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YnJzcnFfbV9uX2YxNikpKQpmbG9hdDE2eDhfdCB2YnJzcnFfbShmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIGludDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmJyc3JxX21fbl9mMzIpKSkKZmxvYXQzMng0X3QgdmJyc3JxX21fbl9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBpbnQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZicnNycV9tX25fZjMyKSkpCmZsb2F0MzJ4NF90IHZicnNycV9tKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YnJzcnFfbl9mMTYpKSkKZmxvYXQxNng4X3QgdmJyc3JxX25fZjE2KGZsb2F0MTZ4OF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YnJzcnFfbl9mMTYpKSkKZmxvYXQxNng4X3QgdmJyc3JxKGZsb2F0MTZ4OF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YnJzcnFfbl9mMzIpKSkKZmxvYXQzMng0X3QgdmJyc3JxX25fZjMyKGZsb2F0MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YnJzcnFfbl9mMzIpKSkKZmxvYXQzMng0X3QgdmJyc3JxKGZsb2F0MzJ4NF90LCBpbnQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YnJzcnFfeF9uX2YxNikpKQpmbG9hdDE2eDhfdCB2YnJzcnFfeF9uX2YxNihmbG9hdDE2eDhfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YnJzcnFfeF9uX2YxNikpKQpmbG9hdDE2eDhfdCB2YnJzcnFfeChmbG9hdDE2eDhfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YnJzcnFfeF9uX2YzMikpKQpmbG9hdDMyeDRfdCB2YnJzcnFfeF9uX2YzMihmbG9hdDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92YnJzcnFfeF9uX2YzMikpKQpmbG9hdDMyeDRfdCB2YnJzcnFfeChmbG9hdDMyeDRfdCwgaW50MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90MjcwX2YxNikpKQpmbG9hdDE2eDhfdCB2Y2FkZHFfcm90MjcwX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3QyNzBfZjE2KSkpCmZsb2F0MTZ4OF90IHZjYWRkcV9yb3QyNzAoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90MjcwX2YzMikpKQpmbG9hdDMyeDRfdCB2Y2FkZHFfcm90MjcwX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3QyNzBfZjMyKSkpCmZsb2F0MzJ4NF90IHZjYWRkcV9yb3QyNzAoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90MjcwX21fZjE2KSkpCmZsb2F0MTZ4OF90IHZjYWRkcV9yb3QyNzBfbV9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90MjcwX21fZjE2KSkpCmZsb2F0MTZ4OF90IHZjYWRkcV9yb3QyNzBfbShmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3QyNzBfbV9mMzIpKSkKZmxvYXQzMng0X3QgdmNhZGRxX3JvdDI3MF9tX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3QyNzBfbV9mMzIpKSkKZmxvYXQzMng0X3QgdmNhZGRxX3JvdDI3MF9tKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDI3MF94X2YxNikpKQpmbG9hdDE2eDhfdCB2Y2FkZHFfcm90MjcwX3hfZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90MjcwX3hfZjE2KSkpCmZsb2F0MTZ4OF90IHZjYWRkcV9yb3QyNzBfeChmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDI3MF94X2YzMikpKQpmbG9hdDMyeDRfdCB2Y2FkZHFfcm90MjcwX3hfZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90MjcwX3hfZjMyKSkpCmZsb2F0MzJ4NF90IHZjYWRkcV9yb3QyNzBfeChmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDkwX2YxNikpKQpmbG9hdDE2eDhfdCB2Y2FkZHFfcm90OTBfZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDkwX2YxNikpKQpmbG9hdDE2eDhfdCB2Y2FkZHFfcm90OTAoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90OTBfZjMyKSkpCmZsb2F0MzJ4NF90IHZjYWRkcV9yb3Q5MF9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90OTBfZjMyKSkpCmZsb2F0MzJ4NF90IHZjYWRkcV9yb3Q5MChmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjYWRkcV9yb3Q5MF9tX2YxNikpKQpmbG9hdDE2eDhfdCB2Y2FkZHFfcm90OTBfbV9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90OTBfbV9mMTYpKSkKZmxvYXQxNng4X3QgdmNhZGRxX3JvdDkwX20oZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90OTBfbV9mMzIpKSkKZmxvYXQzMng0X3QgdmNhZGRxX3JvdDkwX21fZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDkwX21fZjMyKSkpCmZsb2F0MzJ4NF90IHZjYWRkcV9yb3Q5MF9tKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDkwX3hfZjE2KSkpCmZsb2F0MTZ4OF90IHZjYWRkcV9yb3Q5MF94X2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNhZGRxX3JvdDkwX3hfZjE2KSkpCmZsb2F0MTZ4OF90IHZjYWRkcV9yb3Q5MF94KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90OTBfeF9mMzIpKSkKZmxvYXQzMng0X3QgdmNhZGRxX3JvdDkwX3hfZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y2FkZHFfcm90OTBfeF9mMzIpKSkKZmxvYXQzMng0X3QgdmNhZGRxX3JvdDkwX3goZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbWxhcV9mMTYpKSkKZmxvYXQxNng4X3QgdmNtbGFxX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21sYXFfZjE2KSkpCmZsb2F0MTZ4OF90IHZjbWxhcShmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21sYXFfZjMyKSkpCmZsb2F0MzJ4NF90IHZjbWxhcV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtbGFxX2YzMikpKQpmbG9hdDMyeDRfdCB2Y21sYXEoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtbGFxX21fZjE2KSkpCmZsb2F0MTZ4OF90IHZjbWxhcV9tX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbWxhcV9tX2YxNikpKQpmbG9hdDE2eDhfdCB2Y21sYXFfbShmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbWxhcV9tX2YzMikpKQpmbG9hdDMyeDRfdCB2Y21sYXFfbV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21sYXFfbV9mMzIpKSkKZmxvYXQzMng0X3QgdmNtbGFxX20oZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21sYXFfcm90MTgwX2YxNikpKQpmbG9hdDE2eDhfdCB2Y21sYXFfcm90MTgwX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21sYXFfcm90MTgwX2YxNikpKQpmbG9hdDE2eDhfdCB2Y21sYXFfcm90MTgwKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbWxhcV9yb3QxODBfZjMyKSkpCmZsb2F0MzJ4NF90IHZjbWxhcV9yb3QxODBfZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbWxhcV9yb3QxODBfZjMyKSkpCmZsb2F0MzJ4NF90IHZjbWxhcV9yb3QxODAoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtbGFxX3JvdDE4MF9tX2YxNikpKQpmbG9hdDE2eDhfdCB2Y21sYXFfcm90MTgwX21fZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtbGFxX3JvdDE4MF9tX2YxNikpKQpmbG9hdDE2eDhfdCB2Y21sYXFfcm90MTgwX20oZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21sYXFfcm90MTgwX21fZjMyKSkpCmZsb2F0MzJ4NF90IHZjbWxhcV9yb3QxODBfbV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21sYXFfcm90MTgwX21fZjMyKSkpCmZsb2F0MzJ4NF90IHZjbWxhcV9yb3QxODBfbShmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbWxhcV9yb3QyNzBfZjE2KSkpCmZsb2F0MTZ4OF90IHZjbWxhcV9yb3QyNzBfZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbWxhcV9yb3QyNzBfZjE2KSkpCmZsb2F0MTZ4OF90IHZjbWxhcV9yb3QyNzAoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtbGFxX3JvdDI3MF9mMzIpKSkKZmxvYXQzMng0X3QgdmNtbGFxX3JvdDI3MF9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtbGFxX3JvdDI3MF9mMzIpKSkKZmxvYXQzMng0X3QgdmNtbGFxX3JvdDI3MChmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21sYXFfcm90MjcwX21fZjE2KSkpCmZsb2F0MTZ4OF90IHZjbWxhcV9yb3QyNzBfbV9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21sYXFfcm90MjcwX21fZjE2KSkpCmZsb2F0MTZ4OF90IHZjbWxhcV9yb3QyNzBfbShmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbWxhcV9yb3QyNzBfbV9mMzIpKSkKZmxvYXQzMng0X3QgdmNtbGFxX3JvdDI3MF9tX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbWxhcV9yb3QyNzBfbV9mMzIpKSkKZmxvYXQzMng0X3QgdmNtbGFxX3JvdDI3MF9tKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtbGFxX3JvdDkwX2YxNikpKQpmbG9hdDE2eDhfdCB2Y21sYXFfcm90OTBfZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbWxhcV9yb3Q5MF9mMTYpKSkKZmxvYXQxNng4X3QgdmNtbGFxX3JvdDkwKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbWxhcV9yb3Q5MF9mMzIpKSkKZmxvYXQzMng0X3QgdmNtbGFxX3JvdDkwX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21sYXFfcm90OTBfZjMyKSkpCmZsb2F0MzJ4NF90IHZjbWxhcV9yb3Q5MChmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21sYXFfcm90OTBfbV9mMTYpKSkKZmxvYXQxNng4X3QgdmNtbGFxX3JvdDkwX21fZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtbGFxX3JvdDkwX21fZjE2KSkpCmZsb2F0MTZ4OF90IHZjbWxhcV9yb3Q5MF9tKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtbGFxX3JvdDkwX21fZjMyKSkpCmZsb2F0MzJ4NF90IHZjbWxhcV9yb3Q5MF9tX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbWxhcV9yb3Q5MF9tX2YzMikpKQpmbG9hdDMyeDRfdCB2Y21sYXFfcm90OTBfbShmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfZjE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wZXFxX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfZjE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wZXFxKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGVxcV9mMzIpKSkKbXZlX3ByZWQxNl90IHZjbXBlcXFfZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGVxcV9mMzIpKSkKbXZlX3ByZWQxNl90IHZjbXBlcXEoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZXFxX21fZjE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wZXFxX21fZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZXFxX21fZjE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wZXFxX20oZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfbV9mMzIpKSkKbXZlX3ByZWQxNl90IHZjbXBlcXFfbV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfbV9mMzIpKSkKbXZlX3ByZWQxNl90IHZjbXBlcXFfbShmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGVxcV9tX25fZjE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wZXFxX21fbl9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZXFxX21fbl9mMTYpKSkKbXZlX3ByZWQxNl90IHZjbXBlcXFfbShmbG9hdDE2eDhfdCwgZmxvYXQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfbV9uX2YzMikpKQptdmVfcHJlZDE2X3QgdmNtcGVxcV9tX25fZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGVxcV9tX25fZjMyKSkpCm12ZV9wcmVkMTZfdCB2Y21wZXFxX20oZmxvYXQzMng0X3QsIGZsb2F0MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZXFxX25fZjE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wZXFxX25fZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBlcXFfbl9mMTYpKSkKbXZlX3ByZWQxNl90IHZjbXBlcXEoZmxvYXQxNng4X3QsIGZsb2F0MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGVxcV9uX2YzMikpKQptdmVfcHJlZDE2X3QgdmNtcGVxcV9uX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZXFxX25fZjMyKSkpCm12ZV9wcmVkMTZfdCB2Y21wZXFxKGZsb2F0MzJ4NF90LCBmbG9hdDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBnZXFfZjE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wZ2VxX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBnZXFfZjE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wZ2VxKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGdlcV9mMzIpKSkKbXZlX3ByZWQxNl90IHZjbXBnZXFfZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGdlcV9mMzIpKSkKbXZlX3ByZWQxNl90IHZjbXBnZXEoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ2VxX21fZjE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wZ2VxX21fZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ2VxX21fZjE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wZ2VxX20oZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBnZXFfbV9mMzIpKSkKbXZlX3ByZWQxNl90IHZjbXBnZXFfbV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBnZXFfbV9mMzIpKSkKbXZlX3ByZWQxNl90IHZjbXBnZXFfbShmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGdlcV9tX25fZjE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wZ2VxX21fbl9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ2VxX21fbl9mMTYpKSkKbXZlX3ByZWQxNl90IHZjbXBnZXFfbShmbG9hdDE2eDhfdCwgZmxvYXQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBnZXFfbV9uX2YzMikpKQptdmVfcHJlZDE2X3QgdmNtcGdlcV9tX25fZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGdlcV9tX25fZjMyKSkpCm12ZV9wcmVkMTZfdCB2Y21wZ2VxX20oZmxvYXQzMng0X3QsIGZsb2F0MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ2VxX25fZjE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wZ2VxX25fZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBnZXFfbl9mMTYpKSkKbXZlX3ByZWQxNl90IHZjbXBnZXEoZmxvYXQxNng4X3QsIGZsb2F0MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGdlcV9uX2YzMikpKQptdmVfcHJlZDE2X3QgdmNtcGdlcV9uX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ2VxX25fZjMyKSkpCm12ZV9wcmVkMTZfdCB2Y21wZ2VxKGZsb2F0MzJ4NF90LCBmbG9hdDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBndHFfZjE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wZ3RxX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBndHFfZjE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wZ3RxKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGd0cV9mMzIpKSkKbXZlX3ByZWQxNl90IHZjbXBndHFfZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGd0cV9mMzIpKSkKbXZlX3ByZWQxNl90IHZjbXBndHEoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ3RxX21fZjE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wZ3RxX21fZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ3RxX21fZjE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wZ3RxX20oZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBndHFfbV9mMzIpKSkKbXZlX3ByZWQxNl90IHZjbXBndHFfbV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBndHFfbV9mMzIpKSkKbXZlX3ByZWQxNl90IHZjbXBndHFfbShmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGd0cV9tX25fZjE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wZ3RxX21fbl9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ3RxX21fbl9mMTYpKSkKbXZlX3ByZWQxNl90IHZjbXBndHFfbShmbG9hdDE2eDhfdCwgZmxvYXQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBndHFfbV9uX2YzMikpKQptdmVfcHJlZDE2X3QgdmNtcGd0cV9tX25fZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGd0cV9tX25fZjMyKSkpCm12ZV9wcmVkMTZfdCB2Y21wZ3RxX20oZmxvYXQzMng0X3QsIGZsb2F0MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ3RxX25fZjE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wZ3RxX25fZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBndHFfbl9mMTYpKSkKbXZlX3ByZWQxNl90IHZjbXBndHEoZmxvYXQxNng4X3QsIGZsb2F0MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGd0cV9uX2YzMikpKQptdmVfcHJlZDE2X3QgdmNtcGd0cV9uX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wZ3RxX25fZjMyKSkpCm12ZV9wcmVkMTZfdCB2Y21wZ3RxKGZsb2F0MzJ4NF90LCBmbG9hdDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsZXFfZjE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wbGVxX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsZXFfZjE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wbGVxKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGxlcV9mMzIpKSkKbXZlX3ByZWQxNl90IHZjbXBsZXFfZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGxlcV9mMzIpKSkKbXZlX3ByZWQxNl90IHZjbXBsZXEoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbGVxX21fZjE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wbGVxX21fZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbGVxX21fZjE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wbGVxX20oZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsZXFfbV9mMzIpKSkKbXZlX3ByZWQxNl90IHZjbXBsZXFfbV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsZXFfbV9mMzIpKSkKbXZlX3ByZWQxNl90IHZjbXBsZXFfbShmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGxlcV9tX25fZjE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wbGVxX21fbl9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbGVxX21fbl9mMTYpKSkKbXZlX3ByZWQxNl90IHZjbXBsZXFfbShmbG9hdDE2eDhfdCwgZmxvYXQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsZXFfbV9uX2YzMikpKQptdmVfcHJlZDE2X3QgdmNtcGxlcV9tX25fZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGxlcV9tX25fZjMyKSkpCm12ZV9wcmVkMTZfdCB2Y21wbGVxX20oZmxvYXQzMng0X3QsIGZsb2F0MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbGVxX25fZjE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wbGVxX25fZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsZXFfbl9mMTYpKSkKbXZlX3ByZWQxNl90IHZjbXBsZXEoZmxvYXQxNng4X3QsIGZsb2F0MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGxlcV9uX2YzMikpKQptdmVfcHJlZDE2X3QgdmNtcGxlcV9uX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbGVxX25fZjMyKSkpCm12ZV9wcmVkMTZfdCB2Y21wbGVxKGZsb2F0MzJ4NF90LCBmbG9hdDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsdHFfZjE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wbHRxX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsdHFfZjE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wbHRxKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGx0cV9mMzIpKSkKbXZlX3ByZWQxNl90IHZjbXBsdHFfZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGx0cV9mMzIpKSkKbXZlX3ByZWQxNl90IHZjbXBsdHEoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbHRxX21fZjE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wbHRxX21fZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbHRxX21fZjE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wbHRxX20oZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsdHFfbV9mMzIpKSkKbXZlX3ByZWQxNl90IHZjbXBsdHFfbV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsdHFfbV9mMzIpKSkKbXZlX3ByZWQxNl90IHZjbXBsdHFfbShmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGx0cV9tX25fZjE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wbHRxX21fbl9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbHRxX21fbl9mMTYpKSkKbXZlX3ByZWQxNl90IHZjbXBsdHFfbShmbG9hdDE2eDhfdCwgZmxvYXQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsdHFfbV9uX2YzMikpKQptdmVfcHJlZDE2X3QgdmNtcGx0cV9tX25fZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGx0cV9tX25fZjMyKSkpCm12ZV9wcmVkMTZfdCB2Y21wbHRxX20oZmxvYXQzMng0X3QsIGZsb2F0MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbHRxX25fZjE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wbHRxX25fZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBsdHFfbl9mMTYpKSkKbXZlX3ByZWQxNl90IHZjbXBsdHEoZmxvYXQxNng4X3QsIGZsb2F0MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcGx0cV9uX2YzMikpKQptdmVfcHJlZDE2X3QgdmNtcGx0cV9uX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbHRxX25fZjMyKSkpCm12ZV9wcmVkMTZfdCB2Y21wbHRxKGZsb2F0MzJ4NF90LCBmbG9hdDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBuZXFfZjE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wbmVxX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBuZXFfZjE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wbmVxKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV9mMzIpKSkKbXZlX3ByZWQxNl90IHZjbXBuZXFfZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV9mMzIpKSkKbXZlX3ByZWQxNl90IHZjbXBuZXEoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbmVxX21fZjE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wbmVxX21fZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbmVxX21fZjE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wbmVxX20oZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBuZXFfbV9mMzIpKSkKbXZlX3ByZWQxNl90IHZjbXBuZXFfbV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBuZXFfbV9mMzIpKSkKbXZlX3ByZWQxNl90IHZjbXBuZXFfbShmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV9tX25fZjE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wbmVxX21fbl9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbmVxX21fbl9mMTYpKSkKbXZlX3ByZWQxNl90IHZjbXBuZXFfbShmbG9hdDE2eDhfdCwgZmxvYXQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBuZXFfbV9uX2YzMikpKQptdmVfcHJlZDE2X3QgdmNtcG5lcV9tX25fZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV9tX25fZjMyKSkpCm12ZV9wcmVkMTZfdCB2Y21wbmVxX20oZmxvYXQzMng0X3QsIGZsb2F0MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbmVxX25fZjE2KSkpCm12ZV9wcmVkMTZfdCB2Y21wbmVxX25fZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXBuZXFfbl9mMTYpKSkKbXZlX3ByZWQxNl90IHZjbXBuZXEoZmxvYXQxNng4X3QsIGZsb2F0MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtcG5lcV9uX2YzMikpKQptdmVfcHJlZDE2X3QgdmNtcG5lcV9uX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y21wbmVxX25fZjMyKSkpCm12ZV9wcmVkMTZfdCB2Y21wbmVxKGZsb2F0MzJ4NF90LCBmbG9hdDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXVscV9mMTYpKSkKZmxvYXQxNng4X3QgdmNtdWxxX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXVscV9mMTYpKSkKZmxvYXQxNng4X3QgdmNtdWxxKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtdWxxX2YzMikpKQpmbG9hdDMyeDRfdCB2Y211bHFfZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtdWxxX2YzMikpKQpmbG9hdDMyeDRfdCB2Y211bHEoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y211bHFfbV9mMTYpKSkKZmxvYXQxNng4X3QgdmNtdWxxX21fZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtdWxxX21fZjE2KSkpCmZsb2F0MTZ4OF90IHZjbXVscV9tKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtdWxxX21fZjMyKSkpCmZsb2F0MzJ4NF90IHZjbXVscV9tX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXVscV9tX2YzMikpKQpmbG9hdDMyeDRfdCB2Y211bHFfbShmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXVscV9yb3QxODBfZjE2KSkpCmZsb2F0MTZ4OF90IHZjbXVscV9yb3QxODBfZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtdWxxX3JvdDE4MF9mMTYpKSkKZmxvYXQxNng4X3QgdmNtdWxxX3JvdDE4MChmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXVscV9yb3QxODBfZjMyKSkpCmZsb2F0MzJ4NF90IHZjbXVscV9yb3QxODBfZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtdWxxX3JvdDE4MF9mMzIpKSkKZmxvYXQzMng0X3QgdmNtdWxxX3JvdDE4MChmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXVscV9yb3QxODBfbV9mMTYpKSkKZmxvYXQxNng4X3QgdmNtdWxxX3JvdDE4MF9tX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXVscV9yb3QxODBfbV9mMTYpKSkKZmxvYXQxNng4X3QgdmNtdWxxX3JvdDE4MF9tKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtdWxxX3JvdDE4MF9tX2YzMikpKQpmbG9hdDMyeDRfdCB2Y211bHFfcm90MTgwX21fZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtdWxxX3JvdDE4MF9tX2YzMikpKQpmbG9hdDMyeDRfdCB2Y211bHFfcm90MTgwX20oZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y211bHFfcm90MTgwX3hfZjE2KSkpCmZsb2F0MTZ4OF90IHZjbXVscV9yb3QxODBfeF9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXVscV9yb3QxODBfeF9mMTYpKSkKZmxvYXQxNng4X3QgdmNtdWxxX3JvdDE4MF94KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y211bHFfcm90MTgwX3hfZjMyKSkpCmZsb2F0MzJ4NF90IHZjbXVscV9yb3QxODBfeF9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXVscV9yb3QxODBfeF9mMzIpKSkKZmxvYXQzMng0X3QgdmNtdWxxX3JvdDE4MF94KGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y211bHFfcm90MjcwX2YxNikpKQpmbG9hdDE2eDhfdCB2Y211bHFfcm90MjcwX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXVscV9yb3QyNzBfZjE2KSkpCmZsb2F0MTZ4OF90IHZjbXVscV9yb3QyNzAoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y211bHFfcm90MjcwX2YzMikpKQpmbG9hdDMyeDRfdCB2Y211bHFfcm90MjcwX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXVscV9yb3QyNzBfZjMyKSkpCmZsb2F0MzJ4NF90IHZjbXVscV9yb3QyNzAoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y211bHFfcm90MjcwX21fZjE2KSkpCmZsb2F0MTZ4OF90IHZjbXVscV9yb3QyNzBfbV9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y211bHFfcm90MjcwX21fZjE2KSkpCmZsb2F0MTZ4OF90IHZjbXVscV9yb3QyNzBfbShmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXVscV9yb3QyNzBfbV9mMzIpKSkKZmxvYXQzMng0X3QgdmNtdWxxX3JvdDI3MF9tX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXVscV9yb3QyNzBfbV9mMzIpKSkKZmxvYXQzMng0X3QgdmNtdWxxX3JvdDI3MF9tKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtdWxxX3JvdDI3MF94X2YxNikpKQpmbG9hdDE2eDhfdCB2Y211bHFfcm90MjcwX3hfZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y211bHFfcm90MjcwX3hfZjE2KSkpCmZsb2F0MTZ4OF90IHZjbXVscV9yb3QyNzBfeChmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtdWxxX3JvdDI3MF94X2YzMikpKQpmbG9hdDMyeDRfdCB2Y211bHFfcm90MjcwX3hfZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y211bHFfcm90MjcwX3hfZjMyKSkpCmZsb2F0MzJ4NF90IHZjbXVscV9yb3QyNzBfeChmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtdWxxX3JvdDkwX2YxNikpKQpmbG9hdDE2eDhfdCB2Y211bHFfcm90OTBfZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtdWxxX3JvdDkwX2YxNikpKQpmbG9hdDE2eDhfdCB2Y211bHFfcm90OTAoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y211bHFfcm90OTBfZjMyKSkpCmZsb2F0MzJ4NF90IHZjbXVscV9yb3Q5MF9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y211bHFfcm90OTBfZjMyKSkpCmZsb2F0MzJ4NF90IHZjbXVscV9yb3Q5MChmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXVscV9yb3Q5MF9tX2YxNikpKQpmbG9hdDE2eDhfdCB2Y211bHFfcm90OTBfbV9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y211bHFfcm90OTBfbV9mMTYpKSkKZmxvYXQxNng4X3QgdmNtdWxxX3JvdDkwX20oZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y211bHFfcm90OTBfbV9mMzIpKSkKZmxvYXQzMng0X3QgdmNtdWxxX3JvdDkwX21fZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtdWxxX3JvdDkwX21fZjMyKSkpCmZsb2F0MzJ4NF90IHZjbXVscV9yb3Q5MF9tKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtdWxxX3JvdDkwX3hfZjE2KSkpCmZsb2F0MTZ4OF90IHZjbXVscV9yb3Q5MF94X2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtdWxxX3JvdDkwX3hfZjE2KSkpCmZsb2F0MTZ4OF90IHZjbXVscV9yb3Q5MF94KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y211bHFfcm90OTBfeF9mMzIpKSkKZmxvYXQzMng0X3QgdmNtdWxxX3JvdDkwX3hfZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y211bHFfcm90OTBfeF9mMzIpKSkKZmxvYXQzMng0X3QgdmNtdWxxX3JvdDkwX3goZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXVscV94X2YxNikpKQpmbG9hdDE2eDhfdCB2Y211bHFfeF9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjbXVscV94X2YxNikpKQpmbG9hdDE2eDhfdCB2Y211bHFfeChmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtdWxxX3hfZjMyKSkpCmZsb2F0MzJ4NF90IHZjbXVscV94X2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNtdWxxX3hfZjMyKSkpCmZsb2F0MzJ4NF90IHZjbXVscV94KGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3JlYXRlcV9mMTYpKSkKZmxvYXQxNng4X3QgdmNyZWF0ZXFfZjE2KHVpbnQ2NF90LCB1aW50NjRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmNyZWF0ZXFfZjMyKSkpCmZsb2F0MzJ4NF90IHZjcmVhdGVxX2YzMih1aW50NjRfdCwgdWludDY0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRhcV9tX3MxNl9mMTYpKSkKaW50MTZ4OF90IHZjdnRhcV9tX3MxNl9mMTYoaW50MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0YXFfbV9zMTZfZjE2KSkpCmludDE2eDhfdCB2Y3Z0YXFfbShpbnQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRhcV9tX3MzMl9mMzIpKSkKaW50MzJ4NF90IHZjdnRhcV9tX3MzMl9mMzIoaW50MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0YXFfbV9zMzJfZjMyKSkpCmludDMyeDRfdCB2Y3Z0YXFfbShpbnQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRhcV9tX3UxNl9mMTYpKSkKdWludDE2eDhfdCB2Y3Z0YXFfbV91MTZfZjE2KHVpbnQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRhcV9tX3UxNl9mMTYpKSkKdWludDE2eDhfdCB2Y3Z0YXFfbSh1aW50MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0YXFfbV91MzJfZjMyKSkpCnVpbnQzMng0X3QgdmN2dGFxX21fdTMyX2YzMih1aW50MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0YXFfbV91MzJfZjMyKSkpCnVpbnQzMng0X3QgdmN2dGFxX20odWludDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dGFxX3MxNl9mMTYpKSkKaW50MTZ4OF90IHZjdnRhcV9zMTZfZjE2KGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0YXFfczMyX2YzMikpKQppbnQzMng0X3QgdmN2dGFxX3MzMl9mMzIoZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRhcV91MTZfZjE2KSkpCnVpbnQxNng4X3QgdmN2dGFxX3UxNl9mMTYoZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRhcV91MzJfZjMyKSkpCnVpbnQzMng0X3QgdmN2dGFxX3UzMl9mMzIoZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRhcV94X3MxNl9mMTYpKSkKaW50MTZ4OF90IHZjdnRhcV94X3MxNl9mMTYoZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dGFxX3hfczMyX2YzMikpKQppbnQzMng0X3QgdmN2dGFxX3hfczMyX2YzMihmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0YXFfeF91MTZfZjE2KSkpCnVpbnQxNng4X3QgdmN2dGFxX3hfdTE2X2YxNihmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0YXFfeF91MzJfZjMyKSkpCnVpbnQzMng0X3QgdmN2dGFxX3hfdTMyX2YzMihmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0YnFfZjE2X2YzMikpKQpmbG9hdDE2eDhfdCB2Y3Z0YnFfZjE2X2YzMihmbG9hdDE2eDhfdCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRicV9mMzJfZjE2KSkpCmZsb2F0MzJ4NF90IHZjdnRicV9mMzJfZjE2KGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0YnFfbV9mMTZfZjMyKSkpCmZsb2F0MTZ4OF90IHZjdnRicV9tX2YxNl9mMzIoZmxvYXQxNng4X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRicV9tX2YzMl9mMTYpKSkKZmxvYXQzMng0X3QgdmN2dGJxX21fZjMyX2YxNihmbG9hdDMyeDRfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dGJxX3hfZjMyX2YxNikpKQpmbG9hdDMyeDRfdCB2Y3Z0YnFfeF9mMzJfZjE2KGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRtcV9tX3MxNl9mMTYpKSkKaW50MTZ4OF90IHZjdnRtcV9tX3MxNl9mMTYoaW50MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0bXFfbV9zMTZfZjE2KSkpCmludDE2eDhfdCB2Y3Z0bXFfbShpbnQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRtcV9tX3MzMl9mMzIpKSkKaW50MzJ4NF90IHZjdnRtcV9tX3MzMl9mMzIoaW50MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0bXFfbV9zMzJfZjMyKSkpCmludDMyeDRfdCB2Y3Z0bXFfbShpbnQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRtcV9tX3UxNl9mMTYpKSkKdWludDE2eDhfdCB2Y3Z0bXFfbV91MTZfZjE2KHVpbnQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRtcV9tX3UxNl9mMTYpKSkKdWludDE2eDhfdCB2Y3Z0bXFfbSh1aW50MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0bXFfbV91MzJfZjMyKSkpCnVpbnQzMng0X3QgdmN2dG1xX21fdTMyX2YzMih1aW50MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0bXFfbV91MzJfZjMyKSkpCnVpbnQzMng0X3QgdmN2dG1xX20odWludDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dG1xX3MxNl9mMTYpKSkKaW50MTZ4OF90IHZjdnRtcV9zMTZfZjE2KGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0bXFfczMyX2YzMikpKQppbnQzMng0X3QgdmN2dG1xX3MzMl9mMzIoZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRtcV91MTZfZjE2KSkpCnVpbnQxNng4X3QgdmN2dG1xX3UxNl9mMTYoZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRtcV91MzJfZjMyKSkpCnVpbnQzMng0X3QgdmN2dG1xX3UzMl9mMzIoZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRtcV94X3MxNl9mMTYpKSkKaW50MTZ4OF90IHZjdnRtcV94X3MxNl9mMTYoZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dG1xX3hfczMyX2YzMikpKQppbnQzMng0X3QgdmN2dG1xX3hfczMyX2YzMihmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0bXFfeF91MTZfZjE2KSkpCnVpbnQxNng4X3QgdmN2dG1xX3hfdTE2X2YxNihmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0bXFfeF91MzJfZjMyKSkpCnVpbnQzMng0X3QgdmN2dG1xX3hfdTMyX2YzMihmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0bnFfbV9zMTZfZjE2KSkpCmludDE2eDhfdCB2Y3Z0bnFfbV9zMTZfZjE2KGludDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dG5xX21fczE2X2YxNikpKQppbnQxNng4X3QgdmN2dG5xX20oaW50MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0bnFfbV9zMzJfZjMyKSkpCmludDMyeDRfdCB2Y3Z0bnFfbV9zMzJfZjMyKGludDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dG5xX21fczMyX2YzMikpKQppbnQzMng0X3QgdmN2dG5xX20oaW50MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0bnFfbV91MTZfZjE2KSkpCnVpbnQxNng4X3QgdmN2dG5xX21fdTE2X2YxNih1aW50MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0bnFfbV91MTZfZjE2KSkpCnVpbnQxNng4X3QgdmN2dG5xX20odWludDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dG5xX21fdTMyX2YzMikpKQp1aW50MzJ4NF90IHZjdnRucV9tX3UzMl9mMzIodWludDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dG5xX21fdTMyX2YzMikpKQp1aW50MzJ4NF90IHZjdnRucV9tKHVpbnQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRucV9zMTZfZjE2KSkpCmludDE2eDhfdCB2Y3Z0bnFfczE2X2YxNihmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dG5xX3MzMl9mMzIpKSkKaW50MzJ4NF90IHZjdnRucV9zMzJfZjMyKGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0bnFfdTE2X2YxNikpKQp1aW50MTZ4OF90IHZjdnRucV91MTZfZjE2KGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0bnFfdTMyX2YzMikpKQp1aW50MzJ4NF90IHZjdnRucV91MzJfZjMyKGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0bnFfeF9zMTZfZjE2KSkpCmludDE2eDhfdCB2Y3Z0bnFfeF9zMTZfZjE2KGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRucV94X3MzMl9mMzIpKSkKaW50MzJ4NF90IHZjdnRucV94X3MzMl9mMzIoZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dG5xX3hfdTE2X2YxNikpKQp1aW50MTZ4OF90IHZjdnRucV94X3UxNl9mMTYoZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dG5xX3hfdTMyX2YzMikpKQp1aW50MzJ4NF90IHZjdnRucV94X3UzMl9mMzIoZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHBxX21fczE2X2YxNikpKQppbnQxNng4X3QgdmN2dHBxX21fczE2X2YxNihpbnQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRwcV9tX3MxNl9mMTYpKSkKaW50MTZ4OF90IHZjdnRwcV9tKGludDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHBxX21fczMyX2YzMikpKQppbnQzMng0X3QgdmN2dHBxX21fczMyX2YzMihpbnQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRwcV9tX3MzMl9mMzIpKSkKaW50MzJ4NF90IHZjdnRwcV9tKGludDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHBxX21fdTE2X2YxNikpKQp1aW50MTZ4OF90IHZjdnRwcV9tX3UxNl9mMTYodWludDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHBxX21fdTE2X2YxNikpKQp1aW50MTZ4OF90IHZjdnRwcV9tKHVpbnQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRwcV9tX3UzMl9mMzIpKSkKdWludDMyeDRfdCB2Y3Z0cHFfbV91MzJfZjMyKHVpbnQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRwcV9tX3UzMl9mMzIpKSkKdWludDMyeDRfdCB2Y3Z0cHFfbSh1aW50MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cHFfczE2X2YxNikpKQppbnQxNng4X3QgdmN2dHBxX3MxNl9mMTYoZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRwcV9zMzJfZjMyKSkpCmludDMyeDRfdCB2Y3Z0cHFfczMyX2YzMihmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHBxX3UxNl9mMTYpKSkKdWludDE2eDhfdCB2Y3Z0cHFfdTE2X2YxNihmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHBxX3UzMl9mMzIpKSkKdWludDMyeDRfdCB2Y3Z0cHFfdTMyX2YzMihmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHBxX3hfczE2X2YxNikpKQppbnQxNng4X3QgdmN2dHBxX3hfczE2X2YxNihmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cHFfeF9zMzJfZjMyKSkpCmludDMyeDRfdCB2Y3Z0cHFfeF9zMzJfZjMyKGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRwcV94X3UxNl9mMTYpKSkKdWludDE2eDhfdCB2Y3Z0cHFfeF91MTZfZjE2KGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRwcV94X3UzMl9mMzIpKSkKdWludDMyeDRfdCB2Y3Z0cHFfeF91MzJfZjMyKGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX2YxNl9zMTYpKSkKZmxvYXQxNng4X3QgdmN2dHFfZjE2X3MxNihpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX2YxNl9zMTYpKSkKZmxvYXQxNng4X3QgdmN2dHEoaW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV9mMTZfdTE2KSkpCmZsb2F0MTZ4OF90IHZjdnRxX2YxNl91MTYodWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfZjE2X3UxNikpKQpmbG9hdDE2eDhfdCB2Y3Z0cSh1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV9mMzJfczMyKSkpCmZsb2F0MzJ4NF90IHZjdnRxX2YzMl9zMzIoaW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV9mMzJfczMyKSkpCmZsb2F0MzJ4NF90IHZjdnRxKGludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfZjMyX3UzMikpKQpmbG9hdDMyeDRfdCB2Y3Z0cV9mMzJfdTMyKHVpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX2YzMl91MzIpKSkKZmxvYXQzMng0X3QgdmN2dHEodWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfbV9mMTZfczE2KSkpCmZsb2F0MTZ4OF90IHZjdnRxX21fZjE2X3MxNihmbG9hdDE2eDhfdCwgaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX21fZjE2X3MxNikpKQpmbG9hdDE2eDhfdCB2Y3Z0cV9tKGZsb2F0MTZ4OF90LCBpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfbV9mMTZfdTE2KSkpCmZsb2F0MTZ4OF90IHZjdnRxX21fZjE2X3UxNihmbG9hdDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV9tX2YxNl91MTYpKSkKZmxvYXQxNng4X3QgdmN2dHFfbShmbG9hdDE2eDhfdCwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV9tX2YzMl9zMzIpKSkKZmxvYXQzMng0X3QgdmN2dHFfbV9mMzJfczMyKGZsb2F0MzJ4NF90LCBpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfbV9mMzJfczMyKSkpCmZsb2F0MzJ4NF90IHZjdnRxX20oZmxvYXQzMng0X3QsIGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV9tX2YzMl91MzIpKSkKZmxvYXQzMng0X3QgdmN2dHFfbV9mMzJfdTMyKGZsb2F0MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX21fZjMyX3UzMikpKQpmbG9hdDMyeDRfdCB2Y3Z0cV9tKGZsb2F0MzJ4NF90LCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX21fbl9mMTZfczE2KSkpCmZsb2F0MTZ4OF90IHZjdnRxX21fbl9mMTZfczE2KGZsb2F0MTZ4OF90LCBpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV9tX25fZjE2X3MxNikpKQpmbG9hdDE2eDhfdCB2Y3Z0cV9tX24oZmxvYXQxNng4X3QsIGludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX21fbl9mMTZfdTE2KSkpCmZsb2F0MTZ4OF90IHZjdnRxX21fbl9mMTZfdTE2KGZsb2F0MTZ4OF90LCB1aW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfbV9uX2YxNl91MTYpKSkKZmxvYXQxNng4X3QgdmN2dHFfbV9uKGZsb2F0MTZ4OF90LCB1aW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfbV9uX2YzMl9zMzIpKSkKZmxvYXQzMng0X3QgdmN2dHFfbV9uX2YzMl9zMzIoZmxvYXQzMng0X3QsIGludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX21fbl9mMzJfczMyKSkpCmZsb2F0MzJ4NF90IHZjdnRxX21fbihmbG9hdDMyeDRfdCwgaW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfbV9uX2YzMl91MzIpKSkKZmxvYXQzMng0X3QgdmN2dHFfbV9uX2YzMl91MzIoZmxvYXQzMng0X3QsIHVpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV9tX25fZjMyX3UzMikpKQpmbG9hdDMyeDRfdCB2Y3Z0cV9tX24oZmxvYXQzMng0X3QsIHVpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV9tX25fczE2X2YxNikpKQppbnQxNng4X3QgdmN2dHFfbV9uX3MxNl9mMTYoaW50MTZ4OF90LCBmbG9hdDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX21fbl9zMTZfZjE2KSkpCmludDE2eDhfdCB2Y3Z0cV9tX24oaW50MTZ4OF90LCBmbG9hdDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX21fbl9zMzJfZjMyKSkpCmludDMyeDRfdCB2Y3Z0cV9tX25fczMyX2YzMihpbnQzMng0X3QsIGZsb2F0MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfbV9uX3MzMl9mMzIpKSkKaW50MzJ4NF90IHZjdnRxX21fbihpbnQzMng0X3QsIGZsb2F0MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfbV9uX3UxNl9mMTYpKSkKdWludDE2eDhfdCB2Y3Z0cV9tX25fdTE2X2YxNih1aW50MTZ4OF90LCBmbG9hdDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX21fbl91MTZfZjE2KSkpCnVpbnQxNng4X3QgdmN2dHFfbV9uKHVpbnQxNng4X3QsIGZsb2F0MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfbV9uX3UzMl9mMzIpKSkKdWludDMyeDRfdCB2Y3Z0cV9tX25fdTMyX2YzMih1aW50MzJ4NF90LCBmbG9hdDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX21fbl91MzJfZjMyKSkpCnVpbnQzMng0X3QgdmN2dHFfbV9uKHVpbnQzMng0X3QsIGZsb2F0MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfbV9zMTZfZjE2KSkpCmludDE2eDhfdCB2Y3Z0cV9tX3MxNl9mMTYoaW50MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV9tX3MxNl9mMTYpKSkKaW50MTZ4OF90IHZjdnRxX20oaW50MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV9tX3MzMl9mMzIpKSkKaW50MzJ4NF90IHZjdnRxX21fczMyX2YzMihpbnQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX21fczMyX2YzMikpKQppbnQzMng0X3QgdmN2dHFfbShpbnQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX21fdTE2X2YxNikpKQp1aW50MTZ4OF90IHZjdnRxX21fdTE2X2YxNih1aW50MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV9tX3UxNl9mMTYpKSkKdWludDE2eDhfdCB2Y3Z0cV9tKHVpbnQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX21fdTMyX2YzMikpKQp1aW50MzJ4NF90IHZjdnRxX21fdTMyX2YzMih1aW50MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV9tX3UzMl9mMzIpKSkKdWludDMyeDRfdCB2Y3Z0cV9tKHVpbnQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX25fZjE2X3MxNikpKQpmbG9hdDE2eDhfdCB2Y3Z0cV9uX2YxNl9zMTYoaW50MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX25fZjE2X3MxNikpKQpmbG9hdDE2eDhfdCB2Y3Z0cV9uKGludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV9uX2YxNl91MTYpKSkKZmxvYXQxNng4X3QgdmN2dHFfbl9mMTZfdTE2KHVpbnQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfbl9mMTZfdTE2KSkpCmZsb2F0MTZ4OF90IHZjdnRxX24odWludDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV9uX2YzMl9zMzIpKSkKZmxvYXQzMng0X3QgdmN2dHFfbl9mMzJfczMyKGludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV9uX2YzMl9zMzIpKSkKZmxvYXQzMng0X3QgdmN2dHFfbihpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfbl9mMzJfdTMyKSkpCmZsb2F0MzJ4NF90IHZjdnRxX25fZjMyX3UzMih1aW50MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX25fZjMyX3UzMikpKQpmbG9hdDMyeDRfdCB2Y3Z0cV9uKHVpbnQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfbl9zMTZfZjE2KSkpCmludDE2eDhfdCB2Y3Z0cV9uX3MxNl9mMTYoZmxvYXQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfbl9zMzJfZjMyKSkpCmludDMyeDRfdCB2Y3Z0cV9uX3MzMl9mMzIoZmxvYXQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfbl91MTZfZjE2KSkpCnVpbnQxNng4X3QgdmN2dHFfbl91MTZfZjE2KGZsb2F0MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX25fdTMyX2YzMikpKQp1aW50MzJ4NF90IHZjdnRxX25fdTMyX2YzMihmbG9hdDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV9zMTZfZjE2KSkpCmludDE2eDhfdCB2Y3Z0cV9zMTZfZjE2KGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV9zMzJfZjMyKSkpCmludDMyeDRfdCB2Y3Z0cV9zMzJfZjMyKGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV91MTZfZjE2KSkpCnVpbnQxNng4X3QgdmN2dHFfdTE2X2YxNihmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfdTMyX2YzMikpKQp1aW50MzJ4NF90IHZjdnRxX3UzMl9mMzIoZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX3hfZjE2X3MxNikpKQpmbG9hdDE2eDhfdCB2Y3Z0cV94X2YxNl9zMTYoaW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX3hfZjE2X3MxNikpKQpmbG9hdDE2eDhfdCB2Y3Z0cV94KGludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV94X2YxNl91MTYpKSkKZmxvYXQxNng4X3QgdmN2dHFfeF9mMTZfdTE2KHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfeF9mMTZfdTE2KSkpCmZsb2F0MTZ4OF90IHZjdnRxX3godWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV94X2YzMl9zMzIpKSkKZmxvYXQzMng0X3QgdmN2dHFfeF9mMzJfczMyKGludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV94X2YzMl9zMzIpKSkKZmxvYXQzMng0X3QgdmN2dHFfeChpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfeF9mMzJfdTMyKSkpCmZsb2F0MzJ4NF90IHZjdnRxX3hfZjMyX3UzMih1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX3hfZjMyX3UzMikpKQpmbG9hdDMyeDRfdCB2Y3Z0cV94KHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfeF9uX2YxNl9zMTYpKSkKZmxvYXQxNng4X3QgdmN2dHFfeF9uX2YxNl9zMTYoaW50MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfeF9uX2YxNl9zMTYpKSkKZmxvYXQxNng4X3QgdmN2dHFfeF9uKGludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX3hfbl9mMTZfdTE2KSkpCmZsb2F0MTZ4OF90IHZjdnRxX3hfbl9mMTZfdTE2KHVpbnQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV94X25fZjE2X3UxNikpKQpmbG9hdDE2eDhfdCB2Y3Z0cV94X24odWludDE2eDhfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX3hfbl9mMzJfczMyKSkpCmZsb2F0MzJ4NF90IHZjdnRxX3hfbl9mMzJfczMyKGludDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX3hfbl9mMzJfczMyKSkpCmZsb2F0MzJ4NF90IHZjdnRxX3hfbihpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV94X25fZjMyX3UzMikpKQpmbG9hdDMyeDRfdCB2Y3Z0cV94X25fZjMyX3UzMih1aW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfeF9uX2YzMl91MzIpKSkKZmxvYXQzMng0X3QgdmN2dHFfeF9uKHVpbnQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV94X25fczE2X2YxNikpKQppbnQxNng4X3QgdmN2dHFfeF9uX3MxNl9mMTYoZmxvYXQxNng4X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV94X25fczMyX2YzMikpKQppbnQzMng0X3QgdmN2dHFfeF9uX3MzMl9mMzIoZmxvYXQzMng0X3QsIGludCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV94X25fdTE2X2YxNikpKQp1aW50MTZ4OF90IHZjdnRxX3hfbl91MTZfZjE2KGZsb2F0MTZ4OF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHFfeF9uX3UzMl9mMzIpKSkKdWludDMyeDRfdCB2Y3Z0cV94X25fdTMyX2YzMihmbG9hdDMyeDRfdCwgaW50LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX3hfczE2X2YxNikpKQppbnQxNng4X3QgdmN2dHFfeF9zMTZfZjE2KGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX3hfczMyX2YzMikpKQppbnQzMng0X3QgdmN2dHFfeF9zMzJfZjMyKGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnRxX3hfdTE2X2YxNikpKQp1aW50MTZ4OF90IHZjdnRxX3hfdTE2X2YxNihmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0cV94X3UzMl9mMzIpKSkKdWludDMyeDRfdCB2Y3Z0cV94X3UzMl9mMzIoZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHRxX2YxNl9mMzIpKSkKZmxvYXQxNng4X3QgdmN2dHRxX2YxNl9mMzIoZmxvYXQxNng4X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0dHFfZjMyX2YxNikpKQpmbG9hdDMyeDRfdCB2Y3Z0dHFfZjMyX2YxNihmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmN2dHRxX21fZjE2X2YzMikpKQpmbG9hdDE2eDhfdCB2Y3Z0dHFfbV9mMTZfZjMyKGZsb2F0MTZ4OF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Y3Z0dHFfbV9mMzJfZjE2KSkpCmZsb2F0MzJ4NF90IHZjdnR0cV9tX2YzMl9mMTYoZmxvYXQzMng0X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZjdnR0cV94X2YzMl9mMTYpKSkKZmxvYXQzMng0X3QgdmN2dHRxX3hfZjMyX2YxNihmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHVwcV9tX25fZjE2KSkpCmZsb2F0MTZ4OF90IHZkdXBxX21fbl9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHVwcV9tX25fZjE2KSkpCmZsb2F0MTZ4OF90IHZkdXBxX20oZmxvYXQxNng4X3QsIGZsb2F0MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHVwcV9tX25fZjMyKSkpCmZsb2F0MzJ4NF90IHZkdXBxX21fbl9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHVwcV9tX25fZjMyKSkpCmZsb2F0MzJ4NF90IHZkdXBxX20oZmxvYXQzMng0X3QsIGZsb2F0MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHVwcV9uX2YxNikpKQpmbG9hdDE2eDhfdCB2ZHVwcV9uX2YxNihmbG9hdDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZkdXBxX25fZjMyKSkpCmZsb2F0MzJ4NF90IHZkdXBxX25fZjMyKGZsb2F0MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmR1cHFfeF9uX2YxNikpKQpmbG9hdDE2eDhfdCB2ZHVwcV94X25fZjE2KGZsb2F0MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZHVwcV94X25fZjMyKSkpCmZsb2F0MzJ4NF90IHZkdXBxX3hfbl9mMzIoZmxvYXQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zlb3JxX2YxNikpKQpmbG9hdDE2eDhfdCB2ZW9ycV9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZW9ycV9mMTYpKSkKZmxvYXQxNng4X3QgdmVvcnEoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZW9ycV9mMzIpKSkKZmxvYXQzMng0X3QgdmVvcnFfZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmVvcnFfZjMyKSkpCmZsb2F0MzJ4NF90IHZlb3JxKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmVvcnFfbV9mMTYpKSkKZmxvYXQxNng4X3QgdmVvcnFfbV9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZW9ycV9tX2YxNikpKQpmbG9hdDE2eDhfdCB2ZW9ycV9tKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmVvcnFfbV9mMzIpKSkKZmxvYXQzMng0X3QgdmVvcnFfbV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZW9ycV9tX2YzMikpKQpmbG9hdDMyeDRfdCB2ZW9ycV9tKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmVvcnFfeF9mMTYpKSkKZmxvYXQxNng4X3QgdmVvcnFfeF9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zlb3JxX3hfZjE2KSkpCmZsb2F0MTZ4OF90IHZlb3JxX3goZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zlb3JxX3hfZjMyKSkpCmZsb2F0MzJ4NF90IHZlb3JxX3hfZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92ZW9ycV94X2YzMikpKQpmbG9hdDMyeDRfdCB2ZW9ycV94KGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Zm1hcV9mMTYpKSkKZmxvYXQxNng4X3QgdmZtYXFfZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZmbWFxX2YxNikpKQpmbG9hdDE2eDhfdCB2Zm1hcShmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Zm1hcV9mMzIpKSkKZmxvYXQzMng0X3QgdmZtYXFfZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZmbWFxX2YzMikpKQpmbG9hdDMyeDRfdCB2Zm1hcShmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Zm1hcV9tX2YxNikpKQpmbG9hdDE2eDhfdCB2Zm1hcV9tX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZmbWFxX21fZjE2KSkpCmZsb2F0MTZ4OF90IHZmbWFxX20oZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Zm1hcV9tX2YzMikpKQpmbG9hdDMyeDRfdCB2Zm1hcV9tX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZmbWFxX21fZjMyKSkpCmZsb2F0MzJ4NF90IHZmbWFxX20oZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Zm1hcV9tX25fZjE2KSkpCmZsb2F0MTZ4OF90IHZmbWFxX21fbl9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmZtYXFfbV9uX2YxNikpKQpmbG9hdDE2eDhfdCB2Zm1hcV9tKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZmbWFxX21fbl9mMzIpKSkKZmxvYXQzMng0X3QgdmZtYXFfbV9uX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Zm1hcV9tX25fZjMyKSkpCmZsb2F0MzJ4NF90IHZmbWFxX20oZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmZtYXFfbl9mMTYpKSkKZmxvYXQxNng4X3QgdmZtYXFfbl9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZmbWFxX25fZjE2KSkpCmZsb2F0MTZ4OF90IHZmbWFxKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Zm1hcV9uX2YzMikpKQpmbG9hdDMyeDRfdCB2Zm1hcV9uX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmZtYXFfbl9mMzIpKSkKZmxvYXQzMng0X3QgdmZtYXEoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZmbWFzcV9tX25fZjE2KSkpCmZsb2F0MTZ4OF90IHZmbWFzcV9tX25fZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZmbWFzcV9tX25fZjE2KSkpCmZsb2F0MTZ4OF90IHZmbWFzcV9tKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZmbWFzcV9tX25fZjMyKSkpCmZsb2F0MzJ4NF90IHZmbWFzcV9tX25fZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgZmxvYXQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZmbWFzcV9tX25fZjMyKSkpCmZsb2F0MzJ4NF90IHZmbWFzcV9tKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgZmxvYXQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZmbWFzcV9uX2YxNikpKQpmbG9hdDE2eDhfdCB2Zm1hc3Ffbl9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZmbWFzcV9uX2YxNikpKQpmbG9hdDE2eDhfdCB2Zm1hc3EoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZmbWFzcV9uX2YzMikpKQpmbG9hdDMyeDRfdCB2Zm1hc3Ffbl9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZmbWFzcV9uX2YzMikpKQpmbG9hdDMyeDRfdCB2Zm1hc3EoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZmbXNxX2YxNikpKQpmbG9hdDE2eDhfdCB2Zm1zcV9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmZtc3FfZjE2KSkpCmZsb2F0MTZ4OF90IHZmbXNxKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZmbXNxX2YzMikpKQpmbG9hdDMyeDRfdCB2Zm1zcV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmZtc3FfZjMyKSkpCmZsb2F0MzJ4NF90IHZmbXNxKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZmbXNxX21fZjE2KSkpCmZsb2F0MTZ4OF90IHZmbXNxX21fZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmZtc3FfbV9mMTYpKSkKZmxvYXQxNng4X3QgdmZtc3FfbShmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZmbXNxX21fZjMyKSkpCmZsb2F0MzJ4NF90IHZmbXNxX21fZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmZtc3FfbV9mMzIpKSkKZmxvYXQzMng0X3QgdmZtc3FfbShmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZnZXRxX2xhbmVfZjE2KSkpCmZsb2F0MTZfdCB2Z2V0cV9sYW5lX2YxNihmbG9hdDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Z2V0cV9sYW5lX2YxNikpKQpmbG9hdDE2X3QgdmdldHFfbGFuZShmbG9hdDE2eDhfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92Z2V0cV9sYW5lX2YzMikpKQpmbG9hdDMyX3QgdmdldHFfbGFuZV9mMzIoZmxvYXQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmdldHFfbGFuZV9mMzIpKSkKZmxvYXQzMl90IHZnZXRxX2xhbmUoZmxvYXQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkMXFfZjE2KSkpCmZsb2F0MTZ4OF90IHZsZDFxX2YxNihjb25zdCBmbG9hdDE2X3QgKik7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkMXFfZjE2KSkpCmZsb2F0MTZ4OF90IHZsZDFxKGNvbnN0IGZsb2F0MTZfdCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGQxcV9mMzIpKSkKZmxvYXQzMng0X3QgdmxkMXFfZjMyKGNvbnN0IGZsb2F0MzJfdCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGQxcV9mMzIpKSkKZmxvYXQzMng0X3QgdmxkMXEoY29uc3QgZmxvYXQzMl90ICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZDFxX3pfZjE2KSkpCmZsb2F0MTZ4OF90IHZsZDFxX3pfZjE2KGNvbnN0IGZsb2F0MTZfdCAqLCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZDFxX3pfZjE2KSkpCmZsb2F0MTZ4OF90IHZsZDFxX3ooY29uc3QgZmxvYXQxNl90ICosIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkMXFfel9mMzIpKSkKZmxvYXQzMng0X3QgdmxkMXFfel9mMzIoY29uc3QgZmxvYXQzMl90ICosIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkMXFfel9mMzIpKSkKZmxvYXQzMng0X3QgdmxkMXFfeihjb25zdCBmbG9hdDMyX3QgKiwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGQycV9mMTYpKSkKZmxvYXQxNng4eDJfdCB2bGQycV9mMTYoY29uc3QgZmxvYXQxNl90ICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZDJxX2YxNikpKQpmbG9hdDE2eDh4Ml90IHZsZDJxKGNvbnN0IGZsb2F0MTZfdCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGQycV9mMzIpKSkKZmxvYXQzMng0eDJfdCB2bGQycV9mMzIoY29uc3QgZmxvYXQzMl90ICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZDJxX2YzMikpKQpmbG9hdDMyeDR4Ml90IHZsZDJxKGNvbnN0IGZsb2F0MzJfdCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGQ0cV9mMTYpKSkKZmxvYXQxNng4eDRfdCB2bGQ0cV9mMTYoY29uc3QgZmxvYXQxNl90ICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZDRxX2YxNikpKQpmbG9hdDE2eDh4NF90IHZsZDRxKGNvbnN0IGZsb2F0MTZfdCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGQ0cV9mMzIpKSkKZmxvYXQzMng0eDRfdCB2bGQ0cV9mMzIoY29uc3QgZmxvYXQzMl90ICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZDRxX2YzMikpKQpmbG9hdDMyeDR4NF90IHZsZDRxKGNvbnN0IGZsb2F0MzJfdCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyaHFfZjE2KSkpCmZsb2F0MTZ4OF90IHZsZHJocV9mMTYoY29uc3QgZmxvYXQxNl90ICopOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJocV9nYXRoZXJfb2Zmc2V0X2YxNikpKQpmbG9hdDE2eDhfdCB2bGRyaHFfZ2F0aGVyX29mZnNldF9mMTYoY29uc3QgZmxvYXQxNl90ICosIHVpbnQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJocV9nYXRoZXJfb2Zmc2V0X2YxNikpKQpmbG9hdDE2eDhfdCB2bGRyaHFfZ2F0aGVyX29mZnNldChjb25zdCBmbG9hdDE2X3QgKiwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmhxX2dhdGhlcl9vZmZzZXRfel9mMTYpKSkKZmxvYXQxNng4X3QgdmxkcmhxX2dhdGhlcl9vZmZzZXRfel9mMTYoY29uc3QgZmxvYXQxNl90ICosIHVpbnQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmhxX2dhdGhlcl9vZmZzZXRfel9mMTYpKSkKZmxvYXQxNng4X3QgdmxkcmhxX2dhdGhlcl9vZmZzZXRfeihjb25zdCBmbG9hdDE2X3QgKiwgdWludDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyaHFfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X2YxNikpKQpmbG9hdDE2eDhfdCB2bGRyaHFfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X2YxNihjb25zdCBmbG9hdDE2X3QgKiwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmhxX2dhdGhlcl9zaGlmdGVkX29mZnNldF9mMTYpKSkKZmxvYXQxNng4X3QgdmxkcmhxX2dhdGhlcl9zaGlmdGVkX29mZnNldChjb25zdCBmbG9hdDE2X3QgKiwgdWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcmhxX2dhdGhlcl9zaGlmdGVkX29mZnNldF96X2YxNikpKQpmbG9hdDE2eDhfdCB2bGRyaHFfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3pfZjE2KGNvbnN0IGZsb2F0MTZfdCAqLCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJocV9nYXRoZXJfc2hpZnRlZF9vZmZzZXRfel9mMTYpKSkKZmxvYXQxNng4X3QgdmxkcmhxX2dhdGhlcl9zaGlmdGVkX29mZnNldF96KGNvbnN0IGZsb2F0MTZfdCAqLCB1aW50MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJocV96X2YxNikpKQpmbG9hdDE2eDhfdCB2bGRyaHFfel9mMTYoY29uc3QgZmxvYXQxNl90ICosIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcndxX2YzMikpKQpmbG9hdDMyeDRfdCB2bGRyd3FfZjMyKGNvbnN0IGZsb2F0MzJfdCAqKTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyd3FfZ2F0aGVyX2Jhc2VfZjMyKSkpCmZsb2F0MzJ4NF90IHZsZHJ3cV9nYXRoZXJfYmFzZV9mMzIodWludDMyeDRfdCwgaW50KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyd3FfZ2F0aGVyX2Jhc2Vfd2JfZjMyKSkpCmZsb2F0MzJ4NF90IHZsZHJ3cV9nYXRoZXJfYmFzZV93Yl9mMzIodWludDMyeDRfdCAqLCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJ3cV9nYXRoZXJfYmFzZV93Yl96X2YzMikpKQpmbG9hdDMyeDRfdCB2bGRyd3FfZ2F0aGVyX2Jhc2Vfd2Jfel9mMzIodWludDMyeDRfdCAqLCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcndxX2dhdGhlcl9iYXNlX3pfZjMyKSkpCmZsb2F0MzJ4NF90IHZsZHJ3cV9nYXRoZXJfYmFzZV96X2YzMih1aW50MzJ4NF90LCBpbnQsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcndxX2dhdGhlcl9vZmZzZXRfZjMyKSkpCmZsb2F0MzJ4NF90IHZsZHJ3cV9nYXRoZXJfb2Zmc2V0X2YzMihjb25zdCBmbG9hdDMyX3QgKiwgdWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcndxX2dhdGhlcl9vZmZzZXRfZjMyKSkpCmZsb2F0MzJ4NF90IHZsZHJ3cV9nYXRoZXJfb2Zmc2V0KGNvbnN0IGZsb2F0MzJfdCAqLCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyd3FfZ2F0aGVyX29mZnNldF96X2YzMikpKQpmbG9hdDMyeDRfdCB2bGRyd3FfZ2F0aGVyX29mZnNldF96X2YzMihjb25zdCBmbG9hdDMyX3QgKiwgdWludDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyd3FfZ2F0aGVyX29mZnNldF96X2YzMikpKQpmbG9hdDMyeDRfdCB2bGRyd3FfZ2F0aGVyX29mZnNldF96KGNvbnN0IGZsb2F0MzJfdCAqLCB1aW50MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZsZHJ3cV9nYXRoZXJfc2hpZnRlZF9vZmZzZXRfZjMyKSkpCmZsb2F0MzJ4NF90IHZsZHJ3cV9nYXRoZXJfc2hpZnRlZF9vZmZzZXRfZjMyKGNvbnN0IGZsb2F0MzJfdCAqLCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyd3FfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X2YzMikpKQpmbG9hdDMyeDRfdCB2bGRyd3FfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0KGNvbnN0IGZsb2F0MzJfdCAqLCB1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bGRyd3FfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3pfZjMyKSkpCmZsb2F0MzJ4NF90IHZsZHJ3cV9nYXRoZXJfc2hpZnRlZF9vZmZzZXRfel9mMzIoY29uc3QgZmxvYXQzMl90ICosIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcndxX2dhdGhlcl9zaGlmdGVkX29mZnNldF96X2YzMikpKQpmbG9hdDMyeDRfdCB2bGRyd3FfZ2F0aGVyX3NoaWZ0ZWRfb2Zmc2V0X3ooY29uc3QgZmxvYXQzMl90ICosIHVpbnQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdmxkcndxX3pfZjMyKSkpCmZsb2F0MzJ4NF90IHZsZHJ3cV96X2YzMihjb25zdCBmbG9hdDMyX3QgKiwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4bm1hcV9mMTYpKSkKZmxvYXQxNng4X3Qgdm1heG5tYXFfZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heG5tYXFfZjE2KSkpCmZsb2F0MTZ4OF90IHZtYXhubWFxKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heG5tYXFfZjMyKSkpCmZsb2F0MzJ4NF90IHZtYXhubWFxX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhubWFxX2YzMikpKQpmbG9hdDMyeDRfdCB2bWF4bm1hcShmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhubWFxX21fZjE2KSkpCmZsb2F0MTZ4OF90IHZtYXhubWFxX21fZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4bm1hcV9tX2YxNikpKQpmbG9hdDE2eDhfdCB2bWF4bm1hcV9tKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4bm1hcV9tX2YzMikpKQpmbG9hdDMyeDRfdCB2bWF4bm1hcV9tX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heG5tYXFfbV9mMzIpKSkKZmxvYXQzMng0X3Qgdm1heG5tYXFfbShmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heG5tYXZxX2YxNikpKQpmbG9hdDE2X3Qgdm1heG5tYXZxX2YxNihmbG9hdDE2X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4bm1hdnFfZjE2KSkpCmZsb2F0MTZfdCB2bWF4bm1hdnEoZmxvYXQxNl90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heG5tYXZxX2YzMikpKQpmbG9hdDMyX3Qgdm1heG5tYXZxX2YzMihmbG9hdDMyX3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4bm1hdnFfZjMyKSkpCmZsb2F0MzJfdCB2bWF4bm1hdnEoZmxvYXQzMl90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heG5tYXZxX3BfZjE2KSkpCmZsb2F0MTZfdCB2bWF4bm1hdnFfcF9mMTYoZmxvYXQxNl90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4bm1hdnFfcF9mMTYpKSkKZmxvYXQxNl90IHZtYXhubWF2cV9wKGZsb2F0MTZfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heG5tYXZxX3BfZjMyKSkpCmZsb2F0MzJfdCB2bWF4bm1hdnFfcF9mMzIoZmxvYXQzMl90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4bm1hdnFfcF9mMzIpKSkKZmxvYXQzMl90IHZtYXhubWF2cV9wKGZsb2F0MzJfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heG5tcV9mMTYpKSkKZmxvYXQxNng4X3Qgdm1heG5tcV9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4bm1xX2YxNikpKQpmbG9hdDE2eDhfdCB2bWF4bm1xKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heG5tcV9mMzIpKSkKZmxvYXQzMng0X3Qgdm1heG5tcV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4bm1xX2YzMikpKQpmbG9hdDMyeDRfdCB2bWF4bm1xKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heG5tcV9tX2YxNikpKQpmbG9hdDE2eDhfdCB2bWF4bm1xX21fZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heG5tcV9tX2YxNikpKQpmbG9hdDE2eDhfdCB2bWF4bm1xX20oZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4bm1xX21fZjMyKSkpCmZsb2F0MzJ4NF90IHZtYXhubXFfbV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4bm1xX21fZjMyKSkpCmZsb2F0MzJ4NF90IHZtYXhubXFfbShmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhubXFfeF9mMTYpKSkKZmxvYXQxNng4X3Qgdm1heG5tcV94X2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heG5tcV94X2YxNikpKQpmbG9hdDE2eDhfdCB2bWF4bm1xX3goZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhubXFfeF9mMzIpKSkKZmxvYXQzMng0X3Qgdm1heG5tcV94X2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heG5tcV94X2YzMikpKQpmbG9hdDMyeDRfdCB2bWF4bm1xX3goZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhubXZxX2YxNikpKQpmbG9hdDE2X3Qgdm1heG5tdnFfZjE2KGZsb2F0MTZfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhubXZxX2YxNikpKQpmbG9hdDE2X3Qgdm1heG5tdnEoZmxvYXQxNl90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heG5tdnFfZjMyKSkpCmZsb2F0MzJfdCB2bWF4bm12cV9mMzIoZmxvYXQzMl90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1heG5tdnFfZjMyKSkpCmZsb2F0MzJfdCB2bWF4bm12cShmbG9hdDMyX3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4bm12cV9wX2YxNikpKQpmbG9hdDE2X3Qgdm1heG5tdnFfcF9mMTYoZmxvYXQxNl90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWF4bm12cV9wX2YxNikpKQpmbG9hdDE2X3Qgdm1heG5tdnFfcChmbG9hdDE2X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhubXZxX3BfZjMyKSkpCmZsb2F0MzJfdCB2bWF4bm12cV9wX2YzMihmbG9hdDMyX3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtYXhubXZxX3BfZjMyKSkpCmZsb2F0MzJfdCB2bWF4bm12cV9wKGZsb2F0MzJfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbm5tYXFfZjE2KSkpCmZsb2F0MTZ4OF90IHZtaW5ubWFxX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5ubWFxX2YxNikpKQpmbG9hdDE2eDhfdCB2bWlubm1hcShmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5ubWFxX2YzMikpKQpmbG9hdDMyeDRfdCB2bWlubm1hcV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWlubm1hcV9mMzIpKSkKZmxvYXQzMng0X3Qgdm1pbm5tYXEoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWlubm1hcV9tX2YxNikpKQpmbG9hdDE2eDhfdCB2bWlubm1hcV9tX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbm5tYXFfbV9mMTYpKSkKZmxvYXQxNng4X3Qgdm1pbm5tYXFfbShmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbm5tYXFfbV9mMzIpKSkKZmxvYXQzMng0X3Qgdm1pbm5tYXFfbV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5ubWFxX21fZjMyKSkpCmZsb2F0MzJ4NF90IHZtaW5ubWFxX20oZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5ubWF2cV9mMTYpKSkKZmxvYXQxNl90IHZtaW5ubWF2cV9mMTYoZmxvYXQxNl90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbm5tYXZxX2YxNikpKQpmbG9hdDE2X3Qgdm1pbm5tYXZxKGZsb2F0MTZfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5ubWF2cV9mMzIpKSkKZmxvYXQzMl90IHZtaW5ubWF2cV9mMzIoZmxvYXQzMl90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbm5tYXZxX2YzMikpKQpmbG9hdDMyX3Qgdm1pbm5tYXZxKGZsb2F0MzJfdCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5ubWF2cV9wX2YxNikpKQpmbG9hdDE2X3Qgdm1pbm5tYXZxX3BfZjE2KGZsb2F0MTZfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbm5tYXZxX3BfZjE2KSkpCmZsb2F0MTZfdCB2bWlubm1hdnFfcChmbG9hdDE2X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5ubWF2cV9wX2YzMikpKQpmbG9hdDMyX3Qgdm1pbm5tYXZxX3BfZjMyKGZsb2F0MzJfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbm5tYXZxX3BfZjMyKSkpCmZsb2F0MzJfdCB2bWlubm1hdnFfcChmbG9hdDMyX3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5ubXFfZjE2KSkpCmZsb2F0MTZ4OF90IHZtaW5ubXFfZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbm5tcV9mMTYpKSkKZmxvYXQxNng4X3Qgdm1pbm5tcShmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5ubXFfZjMyKSkpCmZsb2F0MzJ4NF90IHZtaW5ubXFfZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbm5tcV9mMzIpKSkKZmxvYXQzMng0X3Qgdm1pbm5tcShmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5ubXFfbV9mMTYpKSkKZmxvYXQxNng4X3Qgdm1pbm5tcV9tX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5ubXFfbV9mMTYpKSkKZmxvYXQxNng4X3Qgdm1pbm5tcV9tKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbm5tcV9tX2YzMikpKQpmbG9hdDMyeDRfdCB2bWlubm1xX21fZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbm5tcV9tX2YzMikpKQpmbG9hdDMyeDRfdCB2bWlubm1xX20oZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWlubm1xX3hfZjE2KSkpCmZsb2F0MTZ4OF90IHZtaW5ubXFfeF9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5ubXFfeF9mMTYpKSkKZmxvYXQxNng4X3Qgdm1pbm5tcV94KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWlubm1xX3hfZjMyKSkpCmZsb2F0MzJ4NF90IHZtaW5ubXFfeF9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5ubXFfeF9mMzIpKSkKZmxvYXQzMng0X3Qgdm1pbm5tcV94KGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWlubm12cV9mMTYpKSkKZmxvYXQxNl90IHZtaW5ubXZxX2YxNihmbG9hdDE2X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWlubm12cV9mMTYpKSkKZmxvYXQxNl90IHZtaW5ubXZxKGZsb2F0MTZfdCwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5ubXZxX2YzMikpKQpmbG9hdDMyX3Qgdm1pbm5tdnFfZjMyKGZsb2F0MzJfdCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtaW5ubXZxX2YzMikpKQpmbG9hdDMyX3Qgdm1pbm5tdnEoZmxvYXQzMl90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbm5tdnFfcF9mMTYpKSkKZmxvYXQxNl90IHZtaW5ubXZxX3BfZjE2KGZsb2F0MTZfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm1pbm5tdnFfcF9mMTYpKSkKZmxvYXQxNl90IHZtaW5ubXZxX3AoZmxvYXQxNl90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWlubm12cV9wX2YzMikpKQpmbG9hdDMyX3Qgdm1pbm5tdnFfcF9mMzIoZmxvYXQzMl90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bWlubm12cV9wX2YzMikpKQpmbG9hdDMyX3Qgdm1pbm5tdnFfcChmbG9hdDMyX3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX2YxNikpKQpmbG9hdDE2eDhfdCB2bXVscV9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV9mMTYpKSkKZmxvYXQxNng4X3Qgdm11bHEoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV9mMzIpKSkKZmxvYXQzMng0X3Qgdm11bHFfZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfZjMyKSkpCmZsb2F0MzJ4NF90IHZtdWxxKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfbV9mMTYpKSkKZmxvYXQxNng4X3Qgdm11bHFfbV9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV9tX2YxNikpKQpmbG9hdDE2eDhfdCB2bXVscV9tKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfbV9mMzIpKSkKZmxvYXQzMng0X3Qgdm11bHFfbV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV9tX2YzMikpKQpmbG9hdDMyeDRfdCB2bXVscV9tKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfbV9uX2YxNikpKQpmbG9hdDE2eDhfdCB2bXVscV9tX25fZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX21fbl9mMTYpKSkKZmxvYXQxNng4X3Qgdm11bHFfbShmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIGZsb2F0MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV9tX25fZjMyKSkpCmZsb2F0MzJ4NF90IHZtdWxxX21fbl9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfbV9uX2YzMikpKQpmbG9hdDMyeDRfdCB2bXVscV9tKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgZmxvYXQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX25fZjE2KSkpCmZsb2F0MTZ4OF90IHZtdWxxX25fZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX25fZjE2KSkpCmZsb2F0MTZ4OF90IHZtdWxxKGZsb2F0MTZ4OF90LCBmbG9hdDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX25fZjMyKSkpCmZsb2F0MzJ4NF90IHZtdWxxX25fZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX25fZjMyKSkpCmZsb2F0MzJ4NF90IHZtdWxxKGZsb2F0MzJ4NF90LCBmbG9hdDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZtdWxxX3hfZjE2KSkpCmZsb2F0MTZ4OF90IHZtdWxxX3hfZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV94X2YxNikpKQpmbG9hdDE2eDhfdCB2bXVscV94KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bXVscV94X2YzMikpKQpmbG9hdDMyeDRfdCB2bXVscV94X2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfeF9mMzIpKSkKZmxvYXQzMng0X3Qgdm11bHFfeChmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfeF9uX2YxNikpKQpmbG9hdDE2eDhfdCB2bXVscV94X25fZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfeF9uX2YxNikpKQpmbG9hdDE2eDhfdCB2bXVscV94KGZsb2F0MTZ4OF90LCBmbG9hdDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfeF9uX2YzMikpKQpmbG9hdDMyeDRfdCB2bXVscV94X25fZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm11bHFfeF9uX2YzMikpKQpmbG9hdDMyeDRfdCB2bXVscV94KGZsb2F0MzJ4NF90LCBmbG9hdDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm5lZ3FfZjE2KSkpCmZsb2F0MTZ4OF90IHZuZWdxX2YxNihmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm5lZ3FfZjE2KSkpCmZsb2F0MTZ4OF90IHZuZWdxKGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bmVncV9mMzIpKSkKZmxvYXQzMng0X3Qgdm5lZ3FfZjMyKGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bmVncV9mMzIpKSkKZmxvYXQzMng0X3Qgdm5lZ3EoZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZuZWdxX21fZjE2KSkpCmZsb2F0MTZ4OF90IHZuZWdxX21fZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bmVncV9tX2YxNikpKQpmbG9hdDE2eDhfdCB2bmVncV9tKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bmVncV9tX2YzMikpKQpmbG9hdDMyeDRfdCB2bmVncV9tX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm5lZ3FfbV9mMzIpKSkKZmxvYXQzMng0X3Qgdm5lZ3FfbShmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm5lZ3FfeF9mMTYpKSkKZmxvYXQxNng4X3Qgdm5lZ3FfeF9mMTYoZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm5lZ3FfeF9mMTYpKSkKZmxvYXQxNng4X3Qgdm5lZ3FfeChmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bmVncV94X2YzMikpKQpmbG9hdDMyeDRfdCB2bmVncV94X2YzMihmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92bmVncV94X2YzMikpKQpmbG9hdDMyeDRfdCB2bmVncV94KGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zvcm5xX2YxNikpKQpmbG9hdDE2eDhfdCB2b3JucV9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JucV9mMTYpKSkKZmxvYXQxNng4X3Qgdm9ybnEoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JucV9mMzIpKSkKZmxvYXQzMng0X3Qgdm9ybnFfZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ybnFfZjMyKSkpCmZsb2F0MzJ4NF90IHZvcm5xKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ybnFfbV9mMTYpKSkKZmxvYXQxNng4X3Qgdm9ybnFfbV9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JucV9tX2YxNikpKQpmbG9hdDE2eDhfdCB2b3JucV9tKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ybnFfbV9mMzIpKSkKZmxvYXQzMng0X3Qgdm9ybnFfbV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JucV9tX2YzMikpKQpmbG9hdDMyeDRfdCB2b3JucV9tKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ybnFfeF9mMTYpKSkKZmxvYXQxNng4X3Qgdm9ybnFfeF9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zvcm5xX3hfZjE2KSkpCmZsb2F0MTZ4OF90IHZvcm5xX3goZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Zvcm5xX3hfZjMyKSkpCmZsb2F0MzJ4NF90IHZvcm5xX3hfZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JucV94X2YzMikpKQpmbG9hdDMyeDRfdCB2b3JucV94KGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JycV9mMTYpKSkKZmxvYXQxNng4X3Qgdm9ycnFfZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ycnFfZjE2KSkpCmZsb2F0MTZ4OF90IHZvcnJxKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ycnFfZjMyKSkpCmZsb2F0MzJ4NF90IHZvcnJxX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZvcnJxX2YzMikpKQpmbG9hdDMyeDRfdCB2b3JycShmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZvcnJxX21fZjE2KSkpCmZsb2F0MTZ4OF90IHZvcnJxX21fZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ycnFfbV9mMTYpKSkKZmxvYXQxNng4X3Qgdm9ycnFfbShmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZvcnJxX21fZjMyKSkpCmZsb2F0MzJ4NF90IHZvcnJxX21fZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ycnFfbV9mMzIpKSkKZmxvYXQzMng0X3Qgdm9ycnFfbShmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZvcnJxX3hfZjE2KSkpCmZsb2F0MTZ4OF90IHZvcnJxX3hfZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JycV94X2YxNikpKQpmbG9hdDE2eDhfdCB2b3JycV94KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92b3JycV94X2YzMikpKQpmbG9hdDMyeDRfdCB2b3JycV94X2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdm9ycnFfeF9mMzIpKSkKZmxvYXQzMng0X3Qgdm9ycnFfeChmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnBzZWxxX2YxNikpKQpmbG9hdDE2eDhfdCB2cHNlbHFfZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cHNlbHFfZjE2KSkpCmZsb2F0MTZ4OF90IHZwc2VscShmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnBzZWxxX2YzMikpKQpmbG9hdDMyeDRfdCB2cHNlbHFfZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cHNlbHFfZjMyKSkpCmZsb2F0MzJ4NF90IHZwc2VscShmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9mMTZfZjMyKSkpCmZsb2F0MTZ4OF90IHZyZWludGVycHJldHFfZjE2X2YzMihmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9mMTZfZjMyKSkpCmZsb2F0MTZ4OF90IHZyZWludGVycHJldHFfZjE2KGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX2YxNl9zMTYpKSkKZmxvYXQxNng4X3QgdnJlaW50ZXJwcmV0cV9mMTZfczE2KGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9mMTZfczE2KSkpCmZsb2F0MTZ4OF90IHZyZWludGVycHJldHFfZjE2KGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9mMTZfczMyKSkpCmZsb2F0MTZ4OF90IHZyZWludGVycHJldHFfZjE2X3MzMihpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfZjE2X3MzMikpKQpmbG9hdDE2eDhfdCB2cmVpbnRlcnByZXRxX2YxNihpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfZjE2X3M2NCkpKQpmbG9hdDE2eDhfdCB2cmVpbnRlcnByZXRxX2YxNl9zNjQoaW50NjR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX2YxNl9zNjQpKSkKZmxvYXQxNng4X3QgdnJlaW50ZXJwcmV0cV9mMTYoaW50NjR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX2YxNl9zOCkpKQpmbG9hdDE2eDhfdCB2cmVpbnRlcnByZXRxX2YxNl9zOChpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfZjE2X3M4KSkpCmZsb2F0MTZ4OF90IHZyZWludGVycHJldHFfZjE2KGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9mMTZfdTE2KSkpCmZsb2F0MTZ4OF90IHZyZWludGVycHJldHFfZjE2X3UxNih1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX2YxNl91MTYpKSkKZmxvYXQxNng4X3QgdnJlaW50ZXJwcmV0cV9mMTYodWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9mMTZfdTMyKSkpCmZsb2F0MTZ4OF90IHZyZWludGVycHJldHFfZjE2X3UzMih1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX2YxNl91MzIpKSkKZmxvYXQxNng4X3QgdnJlaW50ZXJwcmV0cV9mMTYodWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9mMTZfdTY0KSkpCmZsb2F0MTZ4OF90IHZyZWludGVycHJldHFfZjE2X3U2NCh1aW50NjR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX2YxNl91NjQpKSkKZmxvYXQxNng4X3QgdnJlaW50ZXJwcmV0cV9mMTYodWludDY0eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9mMTZfdTgpKSkKZmxvYXQxNng4X3QgdnJlaW50ZXJwcmV0cV9mMTZfdTgodWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9mMTZfdTgpKSkKZmxvYXQxNng4X3QgdnJlaW50ZXJwcmV0cV9mMTYodWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9mMzJfZjE2KSkpCmZsb2F0MzJ4NF90IHZyZWludGVycHJldHFfZjMyX2YxNihmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9mMzJfZjE2KSkpCmZsb2F0MzJ4NF90IHZyZWludGVycHJldHFfZjMyKGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX2YzMl9zMTYpKSkKZmxvYXQzMng0X3QgdnJlaW50ZXJwcmV0cV9mMzJfczE2KGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9mMzJfczE2KSkpCmZsb2F0MzJ4NF90IHZyZWludGVycHJldHFfZjMyKGludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9mMzJfczMyKSkpCmZsb2F0MzJ4NF90IHZyZWludGVycHJldHFfZjMyX3MzMihpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfZjMyX3MzMikpKQpmbG9hdDMyeDRfdCB2cmVpbnRlcnByZXRxX2YzMihpbnQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfZjMyX3M2NCkpKQpmbG9hdDMyeDRfdCB2cmVpbnRlcnByZXRxX2YzMl9zNjQoaW50NjR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX2YzMl9zNjQpKSkKZmxvYXQzMng0X3QgdnJlaW50ZXJwcmV0cV9mMzIoaW50NjR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX2YzMl9zOCkpKQpmbG9hdDMyeDRfdCB2cmVpbnRlcnByZXRxX2YzMl9zOChpbnQ4eDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfZjMyX3M4KSkpCmZsb2F0MzJ4NF90IHZyZWludGVycHJldHFfZjMyKGludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9mMzJfdTE2KSkpCmZsb2F0MzJ4NF90IHZyZWludGVycHJldHFfZjMyX3UxNih1aW50MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX2YzMl91MTYpKSkKZmxvYXQzMng0X3QgdnJlaW50ZXJwcmV0cV9mMzIodWludDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9mMzJfdTMyKSkpCmZsb2F0MzJ4NF90IHZyZWludGVycHJldHFfZjMyX3UzMih1aW50MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX2YzMl91MzIpKSkKZmxvYXQzMng0X3QgdnJlaW50ZXJwcmV0cV9mMzIodWludDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9mMzJfdTY0KSkpCmZsb2F0MzJ4NF90IHZyZWludGVycHJldHFfZjMyX3U2NCh1aW50NjR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX2YzMl91NjQpKSkKZmxvYXQzMng0X3QgdnJlaW50ZXJwcmV0cV9mMzIodWludDY0eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9mMzJfdTgpKSkKZmxvYXQzMng0X3QgdnJlaW50ZXJwcmV0cV9mMzJfdTgodWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9mMzJfdTgpKSkKZmxvYXQzMng0X3QgdnJlaW50ZXJwcmV0cV9mMzIodWludDh4MTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zMTZfZjE2KSkpCmludDE2eDhfdCB2cmVpbnRlcnByZXRxX3MxNl9mMTYoZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczE2X2YxNikpKQppbnQxNng4X3QgdnJlaW50ZXJwcmV0cV9zMTYoZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczE2X2YzMikpKQppbnQxNng4X3QgdnJlaW50ZXJwcmV0cV9zMTZfZjMyKGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3MxNl9mMzIpKSkKaW50MTZ4OF90IHZyZWludGVycHJldHFfczE2KGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3MzMl9mMTYpKSkKaW50MzJ4NF90IHZyZWludGVycHJldHFfczMyX2YxNihmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zMzJfZjE2KSkpCmludDMyeDRfdCB2cmVpbnRlcnByZXRxX3MzMihmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zMzJfZjMyKSkpCmludDMyeDRfdCB2cmVpbnRlcnByZXRxX3MzMl9mMzIoZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczMyX2YzMikpKQppbnQzMng0X3QgdnJlaW50ZXJwcmV0cV9zMzIoZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZWludGVycHJldHFfczY0X2YxNikpKQppbnQ2NHgyX3QgdnJlaW50ZXJwcmV0cV9zNjRfZjE2KGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3M2NF9mMTYpKSkKaW50NjR4Ml90IHZyZWludGVycHJldHFfczY0KGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3M2NF9mMzIpKSkKaW50NjR4Ml90IHZyZWludGVycHJldHFfczY0X2YzMihmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zNjRfZjMyKSkpCmludDY0eDJfdCB2cmVpbnRlcnByZXRxX3M2NChmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zOF9mMTYpKSkKaW50OHgxNl90IHZyZWludGVycHJldHFfczhfZjE2KGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3M4X2YxNikpKQppbnQ4eDE2X3QgdnJlaW50ZXJwcmV0cV9zOChmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV9zOF9mMzIpKSkKaW50OHgxNl90IHZyZWludGVycHJldHFfczhfZjMyKGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3M4X2YzMikpKQppbnQ4eDE2X3QgdnJlaW50ZXJwcmV0cV9zOChmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91MTZfZjE2KSkpCnVpbnQxNng4X3QgdnJlaW50ZXJwcmV0cV91MTZfZjE2KGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3UxNl9mMTYpKSkKdWludDE2eDhfdCB2cmVpbnRlcnByZXRxX3UxNihmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91MTZfZjMyKSkpCnVpbnQxNng4X3QgdnJlaW50ZXJwcmV0cV91MTZfZjMyKGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3UxNl9mMzIpKSkKdWludDE2eDhfdCB2cmVpbnRlcnByZXRxX3UxNihmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91MzJfZjE2KSkpCnVpbnQzMng0X3QgdnJlaW50ZXJwcmV0cV91MzJfZjE2KGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3UzMl9mMTYpKSkKdWludDMyeDRfdCB2cmVpbnRlcnByZXRxX3UzMihmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91MzJfZjMyKSkpCnVpbnQzMng0X3QgdnJlaW50ZXJwcmV0cV91MzJfZjMyKGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3UzMl9mMzIpKSkKdWludDMyeDRfdCB2cmVpbnRlcnByZXRxX3UzMihmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91NjRfZjE2KSkpCnVpbnQ2NHgyX3QgdnJlaW50ZXJwcmV0cV91NjRfZjE2KGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3U2NF9mMTYpKSkKdWludDY0eDJfdCB2cmVpbnRlcnByZXRxX3U2NChmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91NjRfZjMyKSkpCnVpbnQ2NHgyX3QgdnJlaW50ZXJwcmV0cV91NjRfZjMyKGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3U2NF9mMzIpKSkKdWludDY0eDJfdCB2cmVpbnRlcnByZXRxX3U2NChmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91OF9mMTYpKSkKdWludDh4MTZfdCB2cmVpbnRlcnByZXRxX3U4X2YxNihmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJlaW50ZXJwcmV0cV91OF9mMTYpKSkKdWludDh4MTZfdCB2cmVpbnRlcnByZXRxX3U4KGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3U4X2YzMikpKQp1aW50OHgxNl90IHZyZWludGVycHJldHFfdThfZjMyKGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmVpbnRlcnByZXRxX3U4X2YzMikpKQp1aW50OHgxNl90IHZyZWludGVycHJldHFfdTgoZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXYzMnFfZjE2KSkpCmZsb2F0MTZ4OF90IHZyZXYzMnFfZjE2KGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2MzJxX2YxNikpKQpmbG9hdDE2eDhfdCB2cmV2MzJxKGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2MzJxX21fZjE2KSkpCmZsb2F0MTZ4OF90IHZyZXYzMnFfbV9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXYzMnFfbV9mMTYpKSkKZmxvYXQxNng4X3QgdnJldjMycV9tKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2MzJxX3hfZjE2KSkpCmZsb2F0MTZ4OF90IHZyZXYzMnFfeF9mMTYoZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjMycV94X2YxNikpKQpmbG9hdDE2eDhfdCB2cmV2MzJxX3goZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjY0cV9mMTYpKSkKZmxvYXQxNng4X3QgdnJldjY0cV9mMTYoZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXY2NHFfZjE2KSkpCmZsb2F0MTZ4OF90IHZyZXY2NHEoZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXY2NHFfZjMyKSkpCmZsb2F0MzJ4NF90IHZyZXY2NHFfZjMyKGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2NjRxX2YzMikpKQpmbG9hdDMyeDRfdCB2cmV2NjRxKGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2NjRxX21fZjE2KSkpCmZsb2F0MTZ4OF90IHZyZXY2NHFfbV9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXY2NHFfbV9mMTYpKSkKZmxvYXQxNng4X3QgdnJldjY0cV9tKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2NjRxX21fZjMyKSkpCmZsb2F0MzJ4NF90IHZyZXY2NHFfbV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXY2NHFfbV9mMzIpKSkKZmxvYXQzMng0X3QgdnJldjY0cV9tKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cmV2NjRxX3hfZjE2KSkpCmZsb2F0MTZ4OF90IHZyZXY2NHFfeF9mMTYoZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjY0cV94X2YxNikpKQpmbG9hdDE2eDhfdCB2cmV2NjRxX3goZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJldjY0cV94X2YzMikpKQpmbG9hdDMyeDRfdCB2cmV2NjRxX3hfZjMyKGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZyZXY2NHFfeF9mMzIpKSkKZmxvYXQzMng0X3QgdnJldjY0cV94KGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmRhcV9mMTYpKSkKZmxvYXQxNng4X3QgdnJuZGFxX2YxNihmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZGFxX2YxNikpKQpmbG9hdDE2eDhfdCB2cm5kYXEoZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmRhcV9mMzIpKSkKZmxvYXQzMng0X3QgdnJuZGFxX2YzMihmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZGFxX2YzMikpKQpmbG9hdDMyeDRfdCB2cm5kYXEoZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmRhcV9tX2YxNikpKQpmbG9hdDE2eDhfdCB2cm5kYXFfbV9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmRhcV9tX2YxNikpKQpmbG9hdDE2eDhfdCB2cm5kYXFfbShmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZGFxX21fZjMyKSkpCmZsb2F0MzJ4NF90IHZybmRhcV9tX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZGFxX21fZjMyKSkpCmZsb2F0MzJ4NF90IHZybmRhcV9tKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm5kYXFfeF9mMTYpKSkKZmxvYXQxNng4X3QgdnJuZGFxX3hfZjE2KGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmRhcV94X2YxNikpKQpmbG9hdDE2eDhfdCB2cm5kYXFfeChmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm5kYXFfeF9mMzIpKSkKZmxvYXQzMng0X3QgdnJuZGFxX3hfZjMyKGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmRhcV94X2YzMikpKQpmbG9hdDMyeDRfdCB2cm5kYXFfeChmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm5kbXFfZjE2KSkpCmZsb2F0MTZ4OF90IHZybmRtcV9mMTYoZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmRtcV9mMTYpKSkKZmxvYXQxNng4X3QgdnJuZG1xKGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm5kbXFfZjMyKSkpCmZsb2F0MzJ4NF90IHZybmRtcV9mMzIoZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmRtcV9mMzIpKSkKZmxvYXQzMng0X3QgdnJuZG1xKGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm5kbXFfbV9mMTYpKSkKZmxvYXQxNng4X3QgdnJuZG1xX21fZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm5kbXFfbV9mMTYpKSkKZmxvYXQxNng4X3QgdnJuZG1xX20oZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmRtcV9tX2YzMikpKQpmbG9hdDMyeDRfdCB2cm5kbXFfbV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmRtcV9tX2YzMikpKQpmbG9hdDMyeDRfdCB2cm5kbXFfbShmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZG1xX3hfZjE2KSkpCmZsb2F0MTZ4OF90IHZybmRtcV94X2YxNihmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm5kbXFfeF9mMTYpKSkKZmxvYXQxNng4X3QgdnJuZG1xX3goZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZG1xX3hfZjMyKSkpCmZsb2F0MzJ4NF90IHZybmRtcV94X2YzMihmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm5kbXFfeF9mMzIpKSkKZmxvYXQzMng0X3QgdnJuZG1xX3goZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZG5xX2YxNikpKQpmbG9hdDE2eDhfdCB2cm5kbnFfZjE2KGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm5kbnFfZjE2KSkpCmZsb2F0MTZ4OF90IHZybmRucShmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZG5xX2YzMikpKQpmbG9hdDMyeDRfdCB2cm5kbnFfZjMyKGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm5kbnFfZjMyKSkpCmZsb2F0MzJ4NF90IHZybmRucShmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZG5xX21fZjE2KSkpCmZsb2F0MTZ4OF90IHZybmRucV9tX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZG5xX21fZjE2KSkpCmZsb2F0MTZ4OF90IHZybmRucV9tKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm5kbnFfbV9mMzIpKSkKZmxvYXQzMng0X3QgdnJuZG5xX21fZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm5kbnFfbV9mMzIpKSkKZmxvYXQzMng0X3QgdnJuZG5xX20oZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmRucV94X2YxNikpKQpmbG9hdDE2eDhfdCB2cm5kbnFfeF9mMTYoZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZG5xX3hfZjE2KSkpCmZsb2F0MTZ4OF90IHZybmRucV94KGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmRucV94X2YzMikpKQpmbG9hdDMyeDRfdCB2cm5kbnFfeF9mMzIoZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZG5xX3hfZjMyKSkpCmZsb2F0MzJ4NF90IHZybmRucV94KGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmRwcV9mMTYpKSkKZmxvYXQxNng4X3QgdnJuZHBxX2YxNihmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZHBxX2YxNikpKQpmbG9hdDE2eDhfdCB2cm5kcHEoZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmRwcV9mMzIpKSkKZmxvYXQzMng0X3QgdnJuZHBxX2YzMihmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZHBxX2YzMikpKQpmbG9hdDMyeDRfdCB2cm5kcHEoZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmRwcV9tX2YxNikpKQpmbG9hdDE2eDhfdCB2cm5kcHFfbV9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmRwcV9tX2YxNikpKQpmbG9hdDE2eDhfdCB2cm5kcHFfbShmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZHBxX21fZjMyKSkpCmZsb2F0MzJ4NF90IHZybmRwcV9tX2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZHBxX21fZjMyKSkpCmZsb2F0MzJ4NF90IHZybmRwcV9tKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm5kcHFfeF9mMTYpKSkKZmxvYXQxNng4X3QgdnJuZHBxX3hfZjE2KGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmRwcV94X2YxNikpKQpmbG9hdDE2eDhfdCB2cm5kcHFfeChmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm5kcHFfeF9mMzIpKSkKZmxvYXQzMng0X3QgdnJuZHBxX3hfZjMyKGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmRwcV94X2YzMikpKQpmbG9hdDMyeDRfdCB2cm5kcHFfeChmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm5kcV9mMTYpKSkKZmxvYXQxNng4X3QgdnJuZHFfZjE2KGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm5kcV9mMTYpKSkKZmxvYXQxNng4X3QgdnJuZHEoZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmRxX2YzMikpKQpmbG9hdDMyeDRfdCB2cm5kcV9mMzIoZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmRxX2YzMikpKQpmbG9hdDMyeDRfdCB2cm5kcShmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZHFfbV9mMTYpKSkKZmxvYXQxNng4X3QgdnJuZHFfbV9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmRxX21fZjE2KSkpCmZsb2F0MTZ4OF90IHZybmRxX20oZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmRxX21fZjMyKSkpCmZsb2F0MzJ4NF90IHZybmRxX21fZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm5kcV9tX2YzMikpKQpmbG9hdDMyeDRfdCB2cm5kcV9tKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm5kcV94X2YxNikpKQpmbG9hdDE2eDhfdCB2cm5kcV94X2YxNihmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm5kcV94X2YxNikpKQpmbG9hdDE2eDhfdCB2cm5kcV94KGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmRxX3hfZjMyKSkpCmZsb2F0MzJ4NF90IHZybmRxX3hfZjMyKGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmRxX3hfZjMyKSkpCmZsb2F0MzJ4NF90IHZybmRxX3goZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZHhxX2YxNikpKQpmbG9hdDE2eDhfdCB2cm5keHFfZjE2KGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm5keHFfZjE2KSkpCmZsb2F0MTZ4OF90IHZybmR4cShmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZHhxX2YzMikpKQpmbG9hdDMyeDRfdCB2cm5keHFfZjMyKGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm5keHFfZjMyKSkpCmZsb2F0MzJ4NF90IHZybmR4cShmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZHhxX21fZjE2KSkpCmZsb2F0MTZ4OF90IHZybmR4cV9tX2YxNihmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZHhxX21fZjE2KSkpCmZsb2F0MTZ4OF90IHZybmR4cV9tKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm5keHFfbV9mMzIpKSkKZmxvYXQzMng0X3QgdnJuZHhxX21fZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92cm5keHFfbV9mMzIpKSkKZmxvYXQzMng0X3QgdnJuZHhxX20oZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmR4cV94X2YxNikpKQpmbG9hdDE2eDhfdCB2cm5keHFfeF9mMTYoZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZHhxX3hfZjE2KSkpCmZsb2F0MTZ4OF90IHZybmR4cV94KGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZybmR4cV94X2YzMikpKQpmbG9hdDMyeDRfdCB2cm5keHFfeF9mMzIoZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnJuZHhxX3hfZjMyKSkpCmZsb2F0MzJ4NF90IHZybmR4cV94KGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzZXRxX2xhbmVfZjE2KSkpCmZsb2F0MTZ4OF90IHZzZXRxX2xhbmVfZjE2KGZsb2F0MTZfdCwgZmxvYXQxNng4X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNldHFfbGFuZV9mMTYpKSkKZmxvYXQxNng4X3QgdnNldHFfbGFuZShmbG9hdDE2X3QsIGZsb2F0MTZ4OF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzZXRxX2xhbmVfZjMyKSkpCmZsb2F0MzJ4NF90IHZzZXRxX2xhbmVfZjMyKGZsb2F0MzJfdCwgZmxvYXQzMng0X3QsIGludCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnNldHFfbGFuZV9mMzIpKSkKZmxvYXQzMng0X3QgdnNldHFfbGFuZShmbG9hdDMyX3QsIGZsb2F0MzJ4NF90LCBpbnQpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdDFxX2YxNikpKQp2b2lkIHZzdDFxX2YxNihmbG9hdDE2X3QgKiwgZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdDFxX2YxNikpKQp2b2lkIHZzdDFxKGZsb2F0MTZfdCAqLCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0MXFfZjMyKSkpCnZvaWQgdnN0MXFfZjMyKGZsb2F0MzJfdCAqLCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0MXFfZjMyKSkpCnZvaWQgdnN0MXEoZmxvYXQzMl90ICosIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3QxcV9wX2YxNikpKQp2b2lkIHZzdDFxX3BfZjE2KGZsb2F0MTZfdCAqLCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3QxcV9wX2YxNikpKQp2b2lkIHZzdDFxX3AoZmxvYXQxNl90ICosIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdDFxX3BfZjMyKSkpCnZvaWQgdnN0MXFfcF9mMzIoZmxvYXQzMl90ICosIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdDFxX3BfZjMyKSkpCnZvaWQgdnN0MXFfcChmbG9hdDMyX3QgKiwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0MnFfZjE2KSkpCnZvaWQgdnN0MnFfZjE2KGZsb2F0MTZfdCAqLCBmbG9hdDE2eDh4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3QycV9mMTYpKSkKdm9pZCB2c3QycShmbG9hdDE2X3QgKiwgZmxvYXQxNng4eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0MnFfZjMyKSkpCnZvaWQgdnN0MnFfZjMyKGZsb2F0MzJfdCAqLCBmbG9hdDMyeDR4Ml90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3QycV9mMzIpKSkKdm9pZCB2c3QycShmbG9hdDMyX3QgKiwgZmxvYXQzMng0eDJfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0NHFfZjE2KSkpCnZvaWQgdnN0NHFfZjE2KGZsb2F0MTZfdCAqLCBmbG9hdDE2eDh4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Q0cV9mMTYpKSkKdm9pZCB2c3Q0cShmbG9hdDE2X3QgKiwgZmxvYXQxNng4eDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0NHFfZjMyKSkpCnZvaWQgdnN0NHFfZjMyKGZsb2F0MzJfdCAqLCBmbG9hdDMyeDR4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Q0cV9mMzIpKSkKdm9pZCB2c3Q0cShmbG9hdDMyX3QgKiwgZmxvYXQzMng0eDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmhxX2YxNikpKQp2b2lkIHZzdHJocV9mMTYoZmxvYXQxNl90ICosIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyaHFfZjE2KSkpCnZvaWQgdnN0cmhxKGZsb2F0MTZfdCAqLCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmhxX3BfZjE2KSkpCnZvaWQgdnN0cmhxX3BfZjE2KGZsb2F0MTZfdCAqLCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyaHFfcF9mMTYpKSkKdm9pZCB2c3RyaHFfcChmbG9hdDE2X3QgKiwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmhxX3NjYXR0ZXJfb2Zmc2V0X2YxNikpKQp2b2lkIHZzdHJocV9zY2F0dGVyX29mZnNldF9mMTYoZmxvYXQxNl90ICosIHVpbnQxNng4X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyaHFfc2NhdHRlcl9vZmZzZXRfZjE2KSkpCnZvaWQgdnN0cmhxX3NjYXR0ZXJfb2Zmc2V0KGZsb2F0MTZfdCAqLCB1aW50MTZ4OF90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmhxX3NjYXR0ZXJfb2Zmc2V0X3BfZjE2KSkpCnZvaWQgdnN0cmhxX3NjYXR0ZXJfb2Zmc2V0X3BfZjE2KGZsb2F0MTZfdCAqLCB1aW50MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyaHFfc2NhdHRlcl9vZmZzZXRfcF9mMTYpKSkKdm9pZCB2c3RyaHFfc2NhdHRlcl9vZmZzZXRfcChmbG9hdDE2X3QgKiwgdWludDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmhxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfZjE2KSkpCnZvaWQgdnN0cmhxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfZjE2KGZsb2F0MTZfdCAqLCB1aW50MTZ4OF90LCBmbG9hdDE2eDhfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cmhxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfZjE2KSkpCnZvaWQgdnN0cmhxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXQoZmxvYXQxNl90ICosIHVpbnQxNng4X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyaHFfc2NhdHRlcl9zaGlmdGVkX29mZnNldF9wX2YxNikpKQp2b2lkIHZzdHJocV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3BfZjE2KGZsb2F0MTZfdCAqLCB1aW50MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3RyaHFfc2NhdHRlcl9zaGlmdGVkX29mZnNldF9wX2YxNikpKQp2b2lkIHZzdHJocV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3AoZmxvYXQxNl90ICosIHVpbnQxNng4X3QsIGZsb2F0MTZ4OF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJ3cV9mMzIpKSkKdm9pZCB2c3Ryd3FfZjMyKGZsb2F0MzJfdCAqLCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cndxX2YzMikpKQp2b2lkIHZzdHJ3cShmbG9hdDMyX3QgKiwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJ3cV9wX2YzMikpKQp2b2lkIHZzdHJ3cV9wX2YzMihmbG9hdDMyX3QgKiwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cndxX3BfZjMyKSkpCnZvaWQgdnN0cndxX3AoZmxvYXQzMl90ICosIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJ3cV9zY2F0dGVyX2Jhc2VfZjMyKSkpCnZvaWQgdnN0cndxX3NjYXR0ZXJfYmFzZV9mMzIodWludDMyeDRfdCwgaW50LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cndxX3NjYXR0ZXJfYmFzZV9mMzIpKSkKdm9pZCB2c3Ryd3Ffc2NhdHRlcl9iYXNlKHVpbnQzMng0X3QsIGludCwgZmxvYXQzMng0X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJ3cV9zY2F0dGVyX2Jhc2VfcF9mMzIpKSkKdm9pZCB2c3Ryd3Ffc2NhdHRlcl9iYXNlX3BfZjMyKHVpbnQzMng0X3QsIGludCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cndxX3NjYXR0ZXJfYmFzZV9wX2YzMikpKQp2b2lkIHZzdHJ3cV9zY2F0dGVyX2Jhc2VfcCh1aW50MzJ4NF90LCBpbnQsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdHJ3cV9zY2F0dGVyX2Jhc2Vfd2JfZjMyKSkpCnZvaWQgdnN0cndxX3NjYXR0ZXJfYmFzZV93Yl9mMzIodWludDMyeDRfdCAqLCBpbnQsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Ryd3Ffc2NhdHRlcl9iYXNlX3diX2YzMikpKQp2b2lkIHZzdHJ3cV9zY2F0dGVyX2Jhc2Vfd2IodWludDMyeDRfdCAqLCBpbnQsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Ryd3Ffc2NhdHRlcl9iYXNlX3diX3BfZjMyKSkpCnZvaWQgdnN0cndxX3NjYXR0ZXJfYmFzZV93Yl9wX2YzMih1aW50MzJ4NF90ICosIGludCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cndxX3NjYXR0ZXJfYmFzZV93Yl9wX2YzMikpKQp2b2lkIHZzdHJ3cV9zY2F0dGVyX2Jhc2Vfd2JfcCh1aW50MzJ4NF90ICosIGludCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cndxX3NjYXR0ZXJfb2Zmc2V0X2YzMikpKQp2b2lkIHZzdHJ3cV9zY2F0dGVyX29mZnNldF9mMzIoZmxvYXQzMl90ICosIHVpbnQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Ryd3Ffc2NhdHRlcl9vZmZzZXRfZjMyKSkpCnZvaWQgdnN0cndxX3NjYXR0ZXJfb2Zmc2V0KGZsb2F0MzJfdCAqLCB1aW50MzJ4NF90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cndxX3NjYXR0ZXJfb2Zmc2V0X3BfZjMyKSkpCnZvaWQgdnN0cndxX3NjYXR0ZXJfb2Zmc2V0X3BfZjMyKGZsb2F0MzJfdCAqLCB1aW50MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Ryd3Ffc2NhdHRlcl9vZmZzZXRfcF9mMzIpKSkKdm9pZCB2c3Ryd3Ffc2NhdHRlcl9vZmZzZXRfcChmbG9hdDMyX3QgKiwgdWludDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cndxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfZjMyKSkpCnZvaWQgdnN0cndxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfZjMyKGZsb2F0MzJfdCAqLCB1aW50MzJ4NF90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN0cndxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXRfZjMyKSkpCnZvaWQgdnN0cndxX3NjYXR0ZXJfc2hpZnRlZF9vZmZzZXQoZmxvYXQzMl90ICosIHVpbnQzMng0X3QsIGZsb2F0MzJ4NF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Ryd3Ffc2NhdHRlcl9zaGlmdGVkX29mZnNldF9wX2YzMikpKQp2b2lkIHZzdHJ3cV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3BfZjMyKGZsb2F0MzJfdCAqLCB1aW50MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3Ryd3Ffc2NhdHRlcl9zaGlmdGVkX29mZnNldF9wX2YzMikpKQp2b2lkIHZzdHJ3cV9zY2F0dGVyX3NoaWZ0ZWRfb2Zmc2V0X3AoZmxvYXQzMl90ICosIHVpbnQzMng0X3QsIGZsb2F0MzJ4NF90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX2YxNikpKQpmbG9hdDE2eDhfdCB2c3VicV9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV9mMTYpKSkKZmxvYXQxNng4X3QgdnN1YnEoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV9mMzIpKSkKZmxvYXQzMng0X3QgdnN1YnFfZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfZjMyKSkpCmZsb2F0MzJ4NF90IHZzdWJxKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfbV9mMTYpKSkKZmxvYXQxNng4X3QgdnN1YnFfbV9mMTYoZmxvYXQxNng4X3QsIGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV9tX2YxNikpKQpmbG9hdDE2eDhfdCB2c3VicV9tKGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfbV9mMzIpKSkKZmxvYXQzMng0X3QgdnN1YnFfbV9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV9tX2YzMikpKQpmbG9hdDMyeDRfdCB2c3VicV9tKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfbV9uX2YxNikpKQpmbG9hdDE2eDhfdCB2c3VicV9tX25fZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgZmxvYXQxNl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX21fbl9mMTYpKSkKZmxvYXQxNng4X3QgdnN1YnFfbShmbG9hdDE2eDhfdCwgZmxvYXQxNng4X3QsIGZsb2F0MTZfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV9tX25fZjMyKSkpCmZsb2F0MzJ4NF90IHZzdWJxX21fbl9mMzIoZmxvYXQzMng0X3QsIGZsb2F0MzJ4NF90LCBmbG9hdDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfbV9uX2YzMikpKQpmbG9hdDMyeDRfdCB2c3VicV9tKGZsb2F0MzJ4NF90LCBmbG9hdDMyeDRfdCwgZmxvYXQzMl90LCBtdmVfcHJlZDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX25fZjE2KSkpCmZsb2F0MTZ4OF90IHZzdWJxX25fZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX25fZjE2KSkpCmZsb2F0MTZ4OF90IHZzdWJxKGZsb2F0MTZ4OF90LCBmbG9hdDE2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX25fZjMyKSkpCmZsb2F0MzJ4NF90IHZzdWJxX25fZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX25fZjMyKSkpCmZsb2F0MzJ4NF90IHZzdWJxKGZsb2F0MzJ4NF90LCBmbG9hdDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3ZzdWJxX3hfZjE2KSkpCmZsb2F0MTZ4OF90IHZzdWJxX3hfZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV94X2YxNikpKQpmbG9hdDE2eDhfdCB2c3VicV94KGZsb2F0MTZ4OF90LCBmbG9hdDE2eDhfdCwgbXZlX3ByZWQxNl90KTsKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19jbGFuZ19hcm1fYnVpbHRpbl9hbGlhcyhfX2J1aWx0aW5fYXJtX212ZV92c3VicV94X2YzMikpKQpmbG9hdDMyeDRfdCB2c3VicV94X2YzMihmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfeF9mMzIpKSkKZmxvYXQzMng0X3QgdnN1YnFfeChmbG9hdDMyeDRfdCwgZmxvYXQzMng0X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfeF9uX2YxNikpKQpmbG9hdDE2eDhfdCB2c3VicV94X25fZjE2KGZsb2F0MTZ4OF90LCBmbG9hdDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfeF9uX2YxNikpKQpmbG9hdDE2eDhfdCB2c3VicV94KGZsb2F0MTZ4OF90LCBmbG9hdDE2X3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfeF9uX2YzMikpKQpmbG9hdDMyeDRfdCB2c3VicV94X25fZjMyKGZsb2F0MzJ4NF90LCBmbG9hdDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnN1YnFfeF9uX2YzMikpKQpmbG9hdDMyeDRfdCB2c3VicV94KGZsb2F0MzJ4NF90LCBmbG9hdDMyX3QsIG12ZV9wcmVkMTZfdCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnVuaW5pdGlhbGl6ZWRxX2YxNikpKQpmbG9hdDE2eDhfdCB2dW5pbml0aWFsaXplZHFfZjE2KCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnVuaW5pdGlhbGl6ZWRxX2YzMikpKQpmbG9hdDMyeDRfdCB2dW5pbml0aWFsaXplZHFfZjMyKCk7CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fY2xhbmdfYXJtX2J1aWx0aW5fYWxpYXMoX19idWlsdGluX2FybV9tdmVfdnVuaW5pdGlhbGl6ZWRxX3BvbHltb3JwaGljX2YxNikpKQpmbG9hdDE2eDhfdCB2dW5pbml0aWFsaXplZHEoZmxvYXQxNng4X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX292ZXJsb2FkYWJsZV9fLCBfX2NsYW5nX2FybV9idWlsdGluX2FsaWFzKF9fYnVpbHRpbl9hcm1fbXZlX3Z1bmluaXRpYWxpemVkcV9wb2x5bW9ycGhpY19mMzIpKSkKZmxvYXQzMng0X3QgdnVuaW5pdGlhbGl6ZWRxKGZsb2F0MzJ4NF90KTsKCiNlbmRpZiAvKiAoX19BUk1fRkVBVFVSRV9NVkUgJiAyKSAmJiAoIWRlZmluZWQgX19BUk1fTVZFX1BSRVNFUlZFX1VTRVJfTkFNRVNQQUNFKSAqLwoKI2lmZGVmIF9fY3BsdXNwbHVzCn0gLyogZXh0ZXJuICJDIiAqLwojZW5kaWYKCiNlbmRpZiAvKiBfX0FSTV9NVkVfSCAqLwoAYXZ4NTEyY2RpbnRyaW4uaAAvKj09PS0tLS0gYXZ4NTEydmxiaXRhbGdpbnRyaW4uaCAtIEJJVEFMRyBpbnRyaW5zaWNzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqCiAqCiAqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCiAqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCiNpZm5kZWYgX19JTU1JTlRSSU5fSAojZXJyb3IgIk5ldmVyIHVzZSA8YXZ4NTEydmxiaXRhbGdpbnRyaW4uaD4gZGlyZWN0bHk7IGluY2x1ZGUgPGltbWludHJpbi5oPiBpbnN0ZWFkLiIKI2VuZGlmCgojaWZuZGVmIF9fQVZYNTEyVkxCSVRBTEdJTlRSSU5fSAojZGVmaW5lIF9fQVZYNTEyVkxCSVRBTEdJTlRSSU5fSAoKLyogRGVmaW5lIHRoZSBkZWZhdWx0IGF0dHJpYnV0ZXMgZm9yIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlLiAqLwojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oImF2eDUxMnZsLGF2eDUxMmJpdGFsZyIpLCBfX21pbl92ZWN0b3Jfd2lkdGhfXygxMjgpKSkKI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJhdng1MTJ2bCxhdng1MTJiaXRhbGciKSwgX19taW5fdmVjdG9yX3dpZHRoX18oMjU2KSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfcG9wY250X2VwaTE2KF9fbTI1NmkgX19BKQp7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl92cG9wY250d18yNTYoKF9fdjE2aGkpIF9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX3BvcGNudF9lcGkxNihfX20yNTZpIF9fQSwgX19tbWFzazE2IF9fVSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMjU2KChfX21tYXNrMTYpIF9fVSwKICAgICAgICAgICAgICAoX192MTZoaSkgX21tMjU2X3BvcGNudF9lcGkxNihfX0IpLAogICAgICAgICAgICAgIChfX3YxNmhpKSBfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfcG9wY250X2VwaTE2KF9fbW1hc2sxNiBfX1UsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIF9tbTI1Nl9tYXNrX3BvcGNudF9lcGkxNigoX19tMjU2aSkgX21tMjU2X3NldHplcm9fc2kyNTYoKSwKICAgICAgICAgICAgICBfX1UsCiAgICAgICAgICAgICAgX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX3BvcGNudF9lcGkxNihfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfdnBvcGNudHdfMTI4KChfX3Y4aGkpIF9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3BvcGNudF9lcGkxNihfX20xMjhpIF9fQSwgX19tbWFzazggX19VLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfc2VsZWN0d18xMjgoKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgKF9fdjhoaSkgX21tX3BvcGNudF9lcGkxNihfX0IpLAogICAgICAgICAgICAgIChfX3Y4aGkpIF9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9wb3BjbnRfZXBpMTYoX19tbWFzazggX19VLCBfX20xMjhpIF9fQikKewogIHJldHVybiBfbW1fbWFza19wb3BjbnRfZXBpMTYoKF9fbTEyOGkpIF9tbV9zZXR6ZXJvX3NpMTI4KCksCiAgICAgICAgICAgICAgX19VLAogICAgICAgICAgICAgIF9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9wb3BjbnRfZXBpOChfX20yNTZpIF9fQSkKewogIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfdnBvcGNudGJfMjU2KChfX3YzMnFpKSBfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19wb3BjbnRfZXBpOChfX20yNTZpIF9fQSwgX19tbWFzazMyIF9fVSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX3NlbGVjdGJfMjU2KChfX21tYXNrMzIpIF9fVSwKICAgICAgICAgICAgICAoX192MzJxaSkgX21tMjU2X3BvcGNudF9lcGk4KF9fQiksCiAgICAgICAgICAgICAgKF9fdjMycWkpIF9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9wb3BjbnRfZXBpOChfX21tYXNrMzIgX19VLCBfX20yNTZpIF9fQikKewogIHJldHVybiBfbW0yNTZfbWFza19wb3BjbnRfZXBpOCgoX19tMjU2aSkgX21tMjU2X3NldHplcm9fc2kyNTYoKSwKICAgICAgICAgICAgICBfX1UsCiAgICAgICAgICAgICAgX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX3BvcGNudF9lcGk4KF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl92cG9wY250Yl8xMjgoKF9fdjE2cWkpIF9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3BvcGNudF9lcGk4KF9fbTEyOGkgX19BLCBfX21tYXNrMTYgX19VLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfc2VsZWN0Yl8xMjgoKF9fbW1hc2sxNikgX19VLAogICAgICAgICAgICAgIChfX3YxNnFpKSBfbW1fcG9wY250X2VwaTgoX19CKSwKICAgICAgICAgICAgICAoX192MTZxaSkgX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X3BvcGNudF9lcGk4KF9fbW1hc2sxNiBfX1UsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIF9tbV9tYXNrX3BvcGNudF9lcGk4KChfX20xMjhpKSBfbW1fc2V0emVyb19zaTEyOCgpLAogICAgICAgICAgICAgIF9fVSwKICAgICAgICAgICAgICBfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX21tYXNrMzIgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2JpdHNodWZmbGVfZXBpNjRfbWFzayhfX21tYXNrMzIgX19VLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbW1hc2szMikgX19idWlsdGluX2lhMzJfdnBzaHVmYml0cW1iMjU2X21hc2soKF9fdjMycWkpIF9fQSwKICAgICAgICAgICAgICAoX192MzJxaSkgX19CLAogICAgICAgICAgICAgIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbW1hc2szMiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2JpdHNodWZmbGVfZXBpNjRfbWFzayhfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gX21tMjU2X21hc2tfYml0c2h1ZmZsZV9lcGk2NF9tYXNrKChfX21tYXNrMzIpIC0xLAogICAgICAgICAgICAgIF9fQSwKICAgICAgICAgICAgICBfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX21tYXNrMTYgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2JpdHNodWZmbGVfZXBpNjRfbWFzayhfX21tYXNrMTYgX19VLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbW1hc2sxNikgX19idWlsdGluX2lhMzJfdnBzaHVmYml0cW1iMTI4X21hc2soKF9fdjE2cWkpIF9fQSwKICAgICAgICAgICAgICAoX192MTZxaSkgX19CLAogICAgICAgICAgICAgIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbW1hc2sxNiBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX2JpdHNodWZmbGVfZXBpNjRfbWFzayhfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gX21tX21hc2tfYml0c2h1ZmZsZV9lcGk2NF9tYXNrKChfX21tYXNrMTYpIC0xLAogICAgICAgICAgICAgIF9fQSwKICAgICAgICAgICAgICBfX0IpOwp9CgoKI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUzEyOAojdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2CgojZW5kaWYKAC8qPT09LS0tLSBhdng1MTJ2cG9wY250ZHFpbnRyaW4uaCAtIEFWWDUxMlZQT1BDTlREUSBpbnRyaW5zaWNzIC0tLS0tLS0tLS0tLS09PT0KICoKICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKi8KI2lmbmRlZiBfX0lNTUlOVFJJTl9ICiNlcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAiTmV2ZXIgdXNlIDxhdng1MTJ2cG9wY250ZHF2bGludHJpbi5oPiBkaXJlY3RseTsgaW5jbHVkZSA8aW1taW50cmluLmg+IGluc3RlYWQuIgojZW5kaWYKCiNpZm5kZWYgX19BVlg1MTJWUE9QQ05URFFWTElOVFJJTl9ICiNkZWZpbmUgX19BVlg1MTJWUE9QQ05URFFWTElOVFJJTl9ICgovKiBEZWZpbmUgdGhlIGRlZmF1bHQgYXR0cmlidXRlcyBmb3IgdGhlIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUuICovCiNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTMTI4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJhdng1MTJ2cG9wY250ZHEsYXZ4NTEydmwiKSwgX19taW5fdmVjdG9yX3dpZHRoX18oMTI4KSkpCiNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTMjU2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJhdng1MTJ2cG9wY250ZHEsYXZ4NTEydmwiKSwgX19taW5fdmVjdG9yX3dpZHRoX18oMjU2KSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fcG9wY250X2VwaTY0KF9fbTEyOGkgX19BKSB7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3Zwb3BjbnRxXzEyOCgoX192MmRpKV9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3BvcGNudF9lcGk2NChfX20xMjhpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkgewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzEyOCgKICAgICAgKF9fbW1hc2s4KV9fVSwgKF9fdjJkaSlfbW1fcG9wY250X2VwaTY0KF9fQSksIChfX3YyZGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X3BvcGNudF9lcGk2NChfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BKSB7CiAgcmV0dXJuIF9tbV9tYXNrX3BvcGNudF9lcGk2NCgoX19tMTI4aSlfbW1fc2V0emVyb19zaTEyOCgpLCBfX1UsIF9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9wb3BjbnRfZXBpMzIoX19tMTI4aSBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdnBvcGNudGRfMTI4KChfX3Y0c2kpX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfcG9wY250X2VwaTMyKF9fbTEyOGkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BKSB7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMTI4KAogICAgICAoX19tbWFzazgpX19VLCAoX192NHNpKV9tbV9wb3BjbnRfZXBpMzIoX19BKSwgKF9fdjRzaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfcG9wY250X2VwaTMyKF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EpIHsKICByZXR1cm4gX21tX21hc2tfcG9wY250X2VwaTMyKChfX20xMjhpKV9tbV9zZXR6ZXJvX3NpMTI4KCksIF9fVSwgX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X3BvcGNudF9lcGk2NChfX20yNTZpIF9fQSkgewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl92cG9wY250cV8yNTYoKF9fdjRkaSlfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19wb3BjbnRfZXBpNjQoX19tMjU2aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8yNTYoCiAgICAgIChfX21tYXNrOClfX1UsIChfX3Y0ZGkpX21tMjU2X3BvcGNudF9lcGk2NChfX0EpLCAoX192NGRpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9wb3BjbnRfZXBpNjQoX19tbWFzazggX19VLCBfX20yNTZpIF9fQSkgewogIHJldHVybiBfbW0yNTZfbWFza19wb3BjbnRfZXBpNjQoKF9fbTI1NmkpX21tMjU2X3NldHplcm9fc2kyNTYoKSwgX19VLCBfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfcG9wY250X2VwaTMyKF9fbTI1NmkgX19BKSB7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3Zwb3BjbnRkXzI1NigoX192OHNpKV9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX3BvcGNudF9lcGkzMihfX20yNTZpIF9fVywgX19tbWFzazggX19VLCBfX20yNTZpIF9fQSkgewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzI1NigKICAgICAgKF9fbW1hc2s4KV9fVSwgKF9fdjhzaSlfbW0yNTZfcG9wY250X2VwaTMyKF9fQSksIChfX3Y4c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X3BvcGNudF9lcGkzMihfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19BKSB7CiAgcmV0dXJuIF9tbTI1Nl9tYXNrX3BvcGNudF9lcGkzMigoX19tMjU2aSlfbW0yNTZfc2V0emVyb19zaTI1NigpLCBfX1UsIF9fQSk7Cn0KCiN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUzI1NgoKI2VuZGlmCgBmMTZjaW50cmluLmgALyo9PT0tLS0tIGZsb2F0LmggLSBDaGFyYWN0ZXJpc3RpY3Mgb2YgZmxvYXRpbmcgcG9pbnQgdHlwZXMgLS0tLS0tLS0tLS0tLS0tLT09PQogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwoKI2lmbmRlZiBfX0NMQU5HX0ZMT0FUX0gKI2RlZmluZSBfX0NMQU5HX0ZMT0FUX0gKCi8qIElmIHdlJ3JlIG9uIE1pbkdXLCBmYWxsIGJhY2sgdG8gdGhlIHN5c3RlbSdzIGZsb2F0LmgsIHdoaWNoIG1pZ2h0IGhhdmUKICogYWRkaXRpb25hbCBkZWZpbml0aW9ucyBwcm92aWRlZCBmb3IgV2luZG93cy4KICogRm9yIG1vcmUgZGV0YWlscyBzZWUgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3kweWJ3OWZ5LmFzcHgKICoKICogQWxzbyBmYWxsIGJhY2sgb24gRGFyd2luIHRvIGFsbG93IGFkZGl0aW9uYWwgZGVmaW5pdGlvbnMgYW5kCiAqIGltcGxlbWVudGF0aW9uLWRlZmluZWQgdmFsdWVzLgogKi8KI2lmIChkZWZpbmVkKF9fQVBQTEVfXykgfHwgKGRlZmluZWQoX19NSU5HVzMyX18pIHx8IGRlZmluZWQoX01TQ19WRVIpKSkgJiYgXAogICAgX19TVERDX0hPU1RFRF9fICYmIF9faGFzX2luY2x1ZGVfbmV4dCg8ZmxvYXQuaD4pCgovKiBQcmlvciB0byBBcHBsZSdzIDEwLjcgU0RLLCBmbG9hdC5oIFNESyBoZWFkZXIgdXNlZCB0byBhcHBseSBhbiBleHRyYSBsZXZlbAogKiBvZiAjaW5jbHVkZV9uZXh0PGZsb2F0Lmg+IHRvIGtlZXAgTWV0cm93ZXJrcyBjb21waWxlcnMgaGFwcHkuIEF2b2lkIHRoaXMKICogZXh0cmEgaW5kaXJlY3Rpb24uCiAqLwojaWZkZWYgX19BUFBMRV9fCiNkZWZpbmUgX0ZMT0FUX0hfCiNlbmRpZgoKIyAgaW5jbHVkZV9uZXh0IDxmbG9hdC5oPgoKLyogVW5kZWZpbmUgYW55dGhpbmcgdGhhdCB3ZSdsbCBiZSByZWRlZmluaW5nIGJlbG93LiAqLwojICB1bmRlZiBGTFRfRVZBTF9NRVRIT0QKIyAgdW5kZWYgRkxUX1JPVU5EUwojICB1bmRlZiBGTFRfUkFESVgKIyAgdW5kZWYgRkxUX01BTlRfRElHCiMgIHVuZGVmIERCTF9NQU5UX0RJRwojICB1bmRlZiBMREJMX01BTlRfRElHCiMgIGlmIF9fU1REQ19WRVJTSU9OX18gPj0gMTk5OTAxTCB8fCAhZGVmaW5lZChfX1NUUklDVF9BTlNJX18pIHx8IF9fY3BsdXNwbHVzID49IDIwMTEwM0wKIyAgICB1bmRlZiBERUNJTUFMX0RJRwojICBlbmRpZgojICB1bmRlZiBGTFRfRElHCiMgIHVuZGVmIERCTF9ESUcKIyAgdW5kZWYgTERCTF9ESUcKIyAgdW5kZWYgRkxUX01JTl9FWFAKIyAgdW5kZWYgREJMX01JTl9FWFAKIyAgdW5kZWYgTERCTF9NSU5fRVhQCiMgIHVuZGVmIEZMVF9NSU5fMTBfRVhQCiMgIHVuZGVmIERCTF9NSU5fMTBfRVhQCiMgIHVuZGVmIExEQkxfTUlOXzEwX0VYUAojICB1bmRlZiBGTFRfTUFYX0VYUAojICB1bmRlZiBEQkxfTUFYX0VYUAojICB1bmRlZiBMREJMX01BWF9FWFAKIyAgdW5kZWYgRkxUX01BWF8xMF9FWFAKIyAgdW5kZWYgREJMX01BWF8xMF9FWFAKIyAgdW5kZWYgTERCTF9NQVhfMTBfRVhQCiMgIHVuZGVmIEZMVF9NQVgKIyAgdW5kZWYgREJMX01BWAojICB1bmRlZiBMREJMX01BWAojICB1bmRlZiBGTFRfRVBTSUxPTgojICB1bmRlZiBEQkxfRVBTSUxPTgojICB1bmRlZiBMREJMX0VQU0lMT04KIyAgdW5kZWYgRkxUX01JTgojICB1bmRlZiBEQkxfTUlOCiMgIHVuZGVmIExEQkxfTUlOCiMgIGlmIF9fU1REQ19WRVJTSU9OX18gPj0gMjAxMTEyTCB8fCAhZGVmaW5lZChfX1NUUklDVF9BTlNJX18pIHx8IF9fY3BsdXNwbHVzID49IDIwMTcwM0wKIyAgICB1bmRlZiBGTFRfVFJVRV9NSU4KIyAgICB1bmRlZiBEQkxfVFJVRV9NSU4KIyAgICB1bmRlZiBMREJMX1RSVUVfTUlOCiMgICAgdW5kZWYgRkxUX0RFQ0lNQUxfRElHCiMgICAgdW5kZWYgREJMX0RFQ0lNQUxfRElHCiMgICAgdW5kZWYgTERCTF9ERUNJTUFMX0RJRwojICAgIHVuZGVmIEZMVF9IQVNfU1VCTk9STQojICAgIHVuZGVmIERCTF9IQVNfU1VCTk9STQojICAgIHVuZGVmIExEQkxfSEFTX1NVQk5PUk0KIyAgZW5kaWYKI2VuZGlmCgovKiBDaGFyYWN0ZXJpc3RpY3Mgb2YgZmxvYXRpbmcgcG9pbnQgdHlwZXMsIEM5OSA1LjIuNC4yLjIgKi8KCiNkZWZpbmUgRkxUX0VWQUxfTUVUSE9EIF9fRkxUX0VWQUxfTUVUSE9EX18KI2RlZmluZSBGTFRfUk9VTkRTIChfX2J1aWx0aW5fZmx0X3JvdW5kcygpKQojZGVmaW5lIEZMVF9SQURJWCBfX0ZMVF9SQURJWF9fCgojZGVmaW5lIEZMVF9NQU5UX0RJRyBfX0ZMVF9NQU5UX0RJR19fCiNkZWZpbmUgREJMX01BTlRfRElHIF9fREJMX01BTlRfRElHX18KI2RlZmluZSBMREJMX01BTlRfRElHIF9fTERCTF9NQU5UX0RJR19fCgojaWYgX19TVERDX1ZFUlNJT05fXyA+PSAxOTk5MDFMIHx8ICFkZWZpbmVkKF9fU1RSSUNUX0FOU0lfXykgfHwgX19jcGx1c3BsdXMgPj0gMjAxMTAzTAojICBkZWZpbmUgREVDSU1BTF9ESUcgX19ERUNJTUFMX0RJR19fCiNlbmRpZgoKI2RlZmluZSBGTFRfRElHIF9fRkxUX0RJR19fCiNkZWZpbmUgREJMX0RJRyBfX0RCTF9ESUdfXwojZGVmaW5lIExEQkxfRElHIF9fTERCTF9ESUdfXwoKI2RlZmluZSBGTFRfTUlOX0VYUCBfX0ZMVF9NSU5fRVhQX18KI2RlZmluZSBEQkxfTUlOX0VYUCBfX0RCTF9NSU5fRVhQX18KI2RlZmluZSBMREJMX01JTl9FWFAgX19MREJMX01JTl9FWFBfXwoKI2RlZmluZSBGTFRfTUlOXzEwX0VYUCBfX0ZMVF9NSU5fMTBfRVhQX18KI2RlZmluZSBEQkxfTUlOXzEwX0VYUCBfX0RCTF9NSU5fMTBfRVhQX18KI2RlZmluZSBMREJMX01JTl8xMF9FWFAgX19MREJMX01JTl8xMF9FWFBfXwoKI2RlZmluZSBGTFRfTUFYX0VYUCBfX0ZMVF9NQVhfRVhQX18KI2RlZmluZSBEQkxfTUFYX0VYUCBfX0RCTF9NQVhfRVhQX18KI2RlZmluZSBMREJMX01BWF9FWFAgX19MREJMX01BWF9FWFBfXwoKI2RlZmluZSBGTFRfTUFYXzEwX0VYUCBfX0ZMVF9NQVhfMTBfRVhQX18KI2RlZmluZSBEQkxfTUFYXzEwX0VYUCBfX0RCTF9NQVhfMTBfRVhQX18KI2RlZmluZSBMREJMX01BWF8xMF9FWFAgX19MREJMX01BWF8xMF9FWFBfXwoKI2RlZmluZSBGTFRfTUFYIF9fRkxUX01BWF9fCiNkZWZpbmUgREJMX01BWCBfX0RCTF9NQVhfXwojZGVmaW5lIExEQkxfTUFYIF9fTERCTF9NQVhfXwoKI2RlZmluZSBGTFRfRVBTSUxPTiBfX0ZMVF9FUFNJTE9OX18KI2RlZmluZSBEQkxfRVBTSUxPTiBfX0RCTF9FUFNJTE9OX18KI2RlZmluZSBMREJMX0VQU0lMT04gX19MREJMX0VQU0lMT05fXwoKI2RlZmluZSBGTFRfTUlOIF9fRkxUX01JTl9fCiNkZWZpbmUgREJMX01JTiBfX0RCTF9NSU5fXwojZGVmaW5lIExEQkxfTUlOIF9fTERCTF9NSU5fXwoKI2lmIF9fU1REQ19WRVJTSU9OX18gPj0gMjAxMTEyTCB8fCAhZGVmaW5lZChfX1NUUklDVF9BTlNJX18pIHx8IF9fY3BsdXNwbHVzID49IDIwMTcwM0wKIyAgZGVmaW5lIEZMVF9UUlVFX01JTiBfX0ZMVF9ERU5PUk1fTUlOX18KIyAgZGVmaW5lIERCTF9UUlVFX01JTiBfX0RCTF9ERU5PUk1fTUlOX18KIyAgZGVmaW5lIExEQkxfVFJVRV9NSU4gX19MREJMX0RFTk9STV9NSU5fXwojICBkZWZpbmUgRkxUX0RFQ0lNQUxfRElHIF9fRkxUX0RFQ0lNQUxfRElHX18KIyAgZGVmaW5lIERCTF9ERUNJTUFMX0RJRyBfX0RCTF9ERUNJTUFMX0RJR19fCiMgIGRlZmluZSBMREJMX0RFQ0lNQUxfRElHIF9fTERCTF9ERUNJTUFMX0RJR19fCiMgIGRlZmluZSBGTFRfSEFTX1NVQk5PUk0gX19GTFRfSEFTX0RFTk9STV9fCiMgIGRlZmluZSBEQkxfSEFTX1NVQk5PUk0gX19EQkxfSEFTX0RFTk9STV9fCiMgIGRlZmluZSBMREJMX0hBU19TVUJOT1JNIF9fTERCTF9IQVNfREVOT1JNX18KI2VuZGlmCgojaWZkZWYgX19TVERDX1dBTlRfSUVDXzYwNTU5X1RZUEVTX0VYVF9fCiMgIGRlZmluZSBGTFQxNl9NQU5UX0RJRyAgICBfX0ZMVDE2X01BTlRfRElHX18KIyAgZGVmaW5lIEZMVDE2X0RFQ0lNQUxfRElHIF9fRkxUMTZfREVDSU1BTF9ESUdfXwojICBkZWZpbmUgRkxUMTZfRElHICAgICAgICAgX19GTFQxNl9ESUdfXwojICBkZWZpbmUgRkxUMTZfTUlOX0VYUCAgICAgX19GTFQxNl9NSU5fRVhQX18KIyAgZGVmaW5lIEZMVDE2X01JTl8xMF9FWFAgIF9fRkxUMTZfTUlOXzEwX0VYUF9fCiMgIGRlZmluZSBGTFQxNl9NQVhfRVhQICAgICBfX0ZMVDE2X01BWF9FWFBfXwojICBkZWZpbmUgRkxUMTZfTUFYXzEwX0VYUCAgX19GTFQxNl9NQVhfMTBfRVhQX18KIyAgZGVmaW5lIEZMVDE2X01BWCAgICAgICAgIF9fRkxUMTZfTUFYX18KIyAgZGVmaW5lIEZMVDE2X0VQU0lMT04gICAgIF9fRkxUMTZfRVBTSUxPTl9fCiMgIGRlZmluZSBGTFQxNl9NSU4gICAgICAgICBfX0ZMVDE2X01JTl9fCiMgIGRlZmluZSBGTFQxNl9UUlVFX01JTiAgICBfX0ZMVDE2X1RSVUVfTUlOX18KI2VuZGlmIC8qIF9fU1REQ19XQU5UX0lFQ182MDU1OV9UWVBFU19FWFRfXyAqLwoKI2VuZGlmIC8qIF9fQ0xBTkdfRkxPQVRfSCAqLwoALyo9PT0tLS0tIGZtYTRpbnRyaW4uaCAtIEZNQTQgaW50cmluc2ljcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwoKI2lmbmRlZiBfX1g4NklOVFJJTl9ICiNlcnJvciAiTmV2ZXIgdXNlIDxmbWE0aW50cmluLmg+IGRpcmVjdGx5OyBpbmNsdWRlIDx4ODZpbnRyaW4uaD4gaW5zdGVhZC4iCiNlbmRpZgoKI2lmbmRlZiBfX0ZNQTRJTlRSSU5fSAojZGVmaW5lIF9fRk1BNElOVFJJTl9ICgojaW5jbHVkZSA8cG1taW50cmluLmg+CgovKiBEZWZpbmUgdGhlIGRlZmF1bHQgYXR0cmlidXRlcyBmb3IgdGhlIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUuICovCiNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygiZm1hNCIpLCBfX21pbl92ZWN0b3Jfd2lkdGhfXygxMjgpKSkKI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJmbWE0IiksIF9fbWluX3ZlY3Rvcl93aWR0aF9fKDI1NikpKQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFjY19wcyhfX20xMjggX19BLCBfX20xMjggX19CLCBfX20xMjggX19DKQp7CiAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfdmZtYWRkcHMoKF9fdjRzZilfX0EsIChfX3Y0c2YpX19CLCAoX192NHNmKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYWNjX3BkKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQiwgX19tMTI4ZCBfX0MpCnsKICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfdmZtYWRkcGQoKF9fdjJkZilfX0EsIChfX3YyZGYpX19CLCAoX192MmRmKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hY2Nfc3MoX19tMTI4IF9fQSwgX19tMTI4IF9fQiwgX19tMTI4IF9fQykKewogIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHNzKChfX3Y0c2YpX19BLCAoX192NHNmKV9fQiwgKF9fdjRzZilfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFjY19zZChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IsIF9fbTEyOGQgX19DKQp7CiAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHNkKChfX3YyZGYpX19BLCAoX192MmRmKV9fQiwgKF9fdjJkZilfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tc3ViX3BzKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IsIF9fbTEyOCBfX0MpCnsKICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl92Zm1hZGRwcygoX192NHNmKV9fQSwgKF9fdjRzZilfX0IsIC0oX192NHNmKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tc3ViX3BkKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQiwgX19tMTI4ZCBfX0MpCnsKICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfdmZtYWRkcGQoKF9fdjJkZilfX0EsIChfX3YyZGYpX19CLCAtKF9fdjJkZilfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tc3ViX3NzKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IsIF9fbTEyOCBfX0MpCnsKICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl92Zm1hZGRzcygoX192NHNmKV9fQSwgKF9fdjRzZilfX0IsIC0oX192NHNmKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tc3ViX3NkKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQiwgX19tMTI4ZCBfX0MpCnsKICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfdmZtYWRkc2QoKF9fdjJkZilfX0EsIChfX3YyZGYpX19CLCAtKF9fdjJkZilfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9ubWFjY19wcyhfX20xMjggX19BLCBfX20xMjggX19CLCBfX20xMjggX19DKQp7CiAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfdmZtYWRkcHMoLShfX3Y0c2YpX19BLCAoX192NHNmKV9fQiwgKF9fdjRzZilfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbm1hY2NfcGQoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CLCBfX20xMjhkIF9fQykKewogIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl92Zm1hZGRwZCgtKF9fdjJkZilfX0EsIChfX3YyZGYpX19CLCAoX192MmRmKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX25tYWNjX3NzKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IsIF9fbTEyOCBfX0MpCnsKICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl92Zm1hZGRzcygtKF9fdjRzZilfX0EsIChfX3Y0c2YpX19CLCAoX192NHNmKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9ubWFjY19zZChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IsIF9fbTEyOGQgX19DKQp7CiAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHNkKC0oX192MmRmKV9fQSwgKF9fdjJkZilfX0IsIChfX3YyZGYpX19DKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbm1zdWJfcHMoX19tMTI4IF9fQSwgX19tMTI4IF9fQiwgX19tMTI4IF9fQykKewogIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBzKC0oX192NHNmKV9fQSwgKF9fdjRzZilfX0IsIC0oX192NHNmKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9ubXN1Yl9wZChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IsIF9fbTEyOGQgX19DKQp7CiAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBkKC0oX192MmRmKV9fQSwgKF9fdjJkZilfX0IsIC0oX192MmRmKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX25tc3ViX3NzKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IsIF9fbTEyOCBfX0MpCnsKICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl92Zm1hZGRzcygtKF9fdjRzZilfX0EsIChfX3Y0c2YpX19CLCAtKF9fdjRzZilfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbm1zdWJfc2QoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CLCBfX20xMjhkIF9fQykKewogIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl92Zm1hZGRzZCgtKF9fdjJkZilfX0EsIChfX3YyZGYpX19CLCAtKF9fdjJkZilfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYWRkc3ViX3BzKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IsIF9fbTEyOCBfX0MpCnsKICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl92Zm1hZGRzdWJwcygoX192NHNmKV9fQSwgKF9fdjRzZilfX0IsIChfX3Y0c2YpX19DKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hZGRzdWJfcGQoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CLCBfX20xMjhkIF9fQykKewogIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl92Zm1hZGRzdWJwZCgoX192MmRmKV9fQSwgKF9fdjJkZilfX0IsIChfX3YyZGYpX19DKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbXN1YmFkZF9wcyhfX20xMjggX19BLCBfX20xMjggX19CLCBfX20xMjggX19DKQp7CiAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfdmZtYWRkc3VicHMoKF9fdjRzZilfX0EsIChfX3Y0c2YpX19CLCAtKF9fdjRzZilfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbXN1YmFkZF9wZChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IsIF9fbTEyOGQgX19DKQp7CiAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHN1YnBkKChfX3YyZGYpX19BLCAoX192MmRmKV9fQiwgLShfX3YyZGYpX19DKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFjY19wcyhfX20yNTYgX19BLCBfX20yNTYgX19CLCBfX20yNTYgX19DKQp7CiAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2lhMzJfdmZtYWRkcHMyNTYoKF9fdjhzZilfX0EsIChfX3Y4c2YpX19CLCAoX192OHNmKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYWNjX3BkKF9fbTI1NmQgX19BLCBfX20yNTZkIF9fQiwgX19tMjU2ZCBfX0MpCnsKICByZXR1cm4gKF9fbTI1NmQpX19idWlsdGluX2lhMzJfdmZtYWRkcGQyNTYoKF9fdjRkZilfX0EsIChfX3Y0ZGYpX19CLCAoX192NGRmKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21zdWJfcHMoX19tMjU2IF9fQSwgX19tMjU2IF9fQiwgX19tMjU2IF9fQykKewogIHJldHVybiAoX19tMjU2KV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBzMjU2KChfX3Y4c2YpX19BLCAoX192OHNmKV9fQiwgLShfX3Y4c2YpX19DKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21zdWJfcGQoX19tMjU2ZCBfX0EsIF9fbTI1NmQgX19CLCBfX20yNTZkIF9fQykKewogIHJldHVybiAoX19tMjU2ZClfX2J1aWx0aW5faWEzMl92Zm1hZGRwZDI1NigoX192NGRmKV9fQSwgKF9fdjRkZilfX0IsIC0oX192NGRmKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X25tYWNjX3BzKF9fbTI1NiBfX0EsIF9fbTI1NiBfX0IsIF9fbTI1NiBfX0MpCnsKICByZXR1cm4gKF9fbTI1NilfX2J1aWx0aW5faWEzMl92Zm1hZGRwczI1NigtKF9fdjhzZilfX0EsIChfX3Y4c2YpX19CLCAoX192OHNmKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9ubWFjY19wZChfX20yNTZkIF9fQSwgX19tMjU2ZCBfX0IsIF9fbTI1NmQgX19DKQp7CiAgcmV0dXJuIChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBkMjU2KC0oX192NGRmKV9fQSwgKF9fdjRkZilfX0IsIChfX3Y0ZGYpX19DKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbm1zdWJfcHMoX19tMjU2IF9fQSwgX19tMjU2IF9fQiwgX19tMjU2IF9fQykKewogIHJldHVybiAoX19tMjU2KV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBzMjU2KC0oX192OHNmKV9fQSwgKF9fdjhzZilfX0IsIC0oX192OHNmKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9ubXN1Yl9wZChfX20yNTZkIF9fQSwgX19tMjU2ZCBfX0IsIF9fbTI1NmQgX19DKQp7CiAgcmV0dXJuIChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBkMjU2KC0oX192NGRmKV9fQSwgKF9fdjRkZilfX0IsIC0oX192NGRmKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hZGRzdWJfcHMoX19tMjU2IF9fQSwgX19tMjU2IF9fQiwgX19tMjU2IF9fQykKewogIHJldHVybiAoX19tMjU2KV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHN1YnBzMjU2KChfX3Y4c2YpX19BLCAoX192OHNmKV9fQiwgKF9fdjhzZilfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFkZHN1Yl9wZChfX20yNTZkIF9fQSwgX19tMjU2ZCBfX0IsIF9fbTI1NmQgX19DKQp7CiAgcmV0dXJuIChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHN1YnBkMjU2KChfX3Y0ZGYpX19BLCAoX192NGRmKV9fQiwgKF9fdjRkZilfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tc3ViYWRkX3BzKF9fbTI1NiBfX0EsIF9fbTI1NiBfX0IsIF9fbTI1NiBfX0MpCnsKICByZXR1cm4gKF9fbTI1NilfX2J1aWx0aW5faWEzMl92Zm1hZGRzdWJwczI1NigoX192OHNmKV9fQSwgKF9fdjhzZilfX0IsIC0oX192OHNmKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tc3ViYWRkX3BkKF9fbTI1NmQgX19BLCBfX20yNTZkIF9fQiwgX19tMjU2ZCBfX0MpCnsKICByZXR1cm4gKF9fbTI1NmQpX19idWlsdGluX2lhMzJfdmZtYWRkc3VicGQyNTYoKF9fdjRkZilfX0EsIChfX3Y0ZGYpX19CLCAtKF9fdjRkZilfX0MpOwp9CgojdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTMTI4CiN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKCiNlbmRpZiAvKiBfX0ZNQTRJTlRSSU5fSCAqLwoALyo9PT0tLS0tIHN0ZGFsaWduLmggLSBTdGFuZGFyZCBoZWFkZXIgZm9yIGFsaWdubWVudCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKi8KCiNpZm5kZWYgX19TVERBTElHTl9ICiNkZWZpbmUgX19TVERBTElHTl9ICgojaWZuZGVmIF9fY3BsdXNwbHVzCiNkZWZpbmUgYWxpZ25hcyBfQWxpZ25hcwojZGVmaW5lIGFsaWdub2YgX0FsaWdub2YKI2VuZGlmCgojZGVmaW5lIF9fYWxpZ25hc19pc19kZWZpbmVkIDEKI2RlZmluZSBfX2FsaWdub2ZfaXNfZGVmaW5lZCAxCgojZW5kaWYgLyogX19TVERBTElHTl9IICovCgB0c3hsZHRya2ludHJpbi5oAHg4NmdwcmludHJpbi5oAC8vPT09LS0gc2FuaXRpemVyL2FzYW5faW50ZXJmYWNlLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCi8vCi8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCi8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgovLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCi8vCi8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCi8vCi8vIFRoaXMgZmlsZSBpcyBhIHBhcnQgb2YgQWRkcmVzc1Nhbml0aXplciAoQVNhbikuCi8vCi8vIFB1YmxpYyBpbnRlcmZhY2UgaGVhZGVyLgovLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwojaWZuZGVmIFNBTklUSVpFUl9BU0FOX0lOVEVSRkFDRV9ICiNkZWZpbmUgU0FOSVRJWkVSX0FTQU5fSU5URVJGQUNFX0gKCiNpbmNsdWRlIDxzYW5pdGl6ZXIvY29tbW9uX2ludGVyZmFjZV9kZWZzLmg+CgojaWZkZWYgX19jcGx1c3BsdXMKZXh0ZXJuICJDIiB7CiNlbmRpZgovLy8gTWFya3MgYSBtZW1vcnkgcmVnaW9uICg8Yz5bYWRkciwgYWRkcitzaXplKTwvYz4pIGFzIHVuYWRkcmVzc2FibGUuCi8vLwovLy8gVGhpcyBtZW1vcnkgbXVzdCBiZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBieSB5b3VyIHByb2dyYW0uIEluc3RydW1lbnRlZAovLy8gY29kZSBpcyBmb3JiaWRkZW4gZnJvbSBhY2Nlc3NpbmcgYWRkcmVzc2VzIGluIHRoaXMgcmVnaW9uIHVudGlsIGl0IGlzCi8vLyB1bnBvaXNvbmVkLiBUaGlzIGZ1bmN0aW9uIGlzIG5vdCBndWFyYW50ZWVkIHRvIHBvaXNvbiB0aGUgZW50aXJlIHJlZ2lvbiAtCi8vLyBpdCBjb3VsZCBwb2lzb24gb25seSBhIHN1YnJlZ2lvbiBvZiA8Yz5bYWRkciwgYWRkcitzaXplKTwvYz4gZHVlIHRvIEFTYW4KLy8vIGFsaWdubWVudCByZXN0cmljdGlvbnMuCi8vLwovLy8gXG5vdGUgVGhpcyBmdW5jdGlvbiBpcyBub3QgdGhyZWFkLXNhZmUgYmVjYXVzZSBubyB0d28gdGhyZWFkcyBjYW4gcG9pc29uIG9yCi8vLyB1bnBvaXNvbiBtZW1vcnkgaW4gdGhlIHNhbWUgbWVtb3J5IHJlZ2lvbiBzaW11bHRhbmVvdXNseS4KLy8vCi8vLyBccGFyYW0gYWRkciBTdGFydCBvZiBtZW1vcnkgcmVnaW9uLgovLy8gXHBhcmFtIHNpemUgU2l6ZSBvZiBtZW1vcnkgcmVnaW9uLgp2b2lkIF9fYXNhbl9wb2lzb25fbWVtb3J5X3JlZ2lvbih2b2lkIGNvbnN0IHZvbGF0aWxlICphZGRyLCBzaXplX3Qgc2l6ZSk7CgovLy8gTWFya3MgYSBtZW1vcnkgcmVnaW9uICg8Yz5bYWRkciwgYWRkcitzaXplKTwvYz4pIGFzIGFkZHJlc3NhYmxlLgovLy8KLy8vIFRoaXMgbWVtb3J5IG11c3QgYmUgcHJldmlvdXNseSBhbGxvY2F0ZWQgYnkgeW91ciBwcm9ncmFtLiBBY2Nlc3NpbmcKLy8vIGFkZHJlc3NlcyBpbiB0aGlzIHJlZ2lvbiBpcyBhbGxvd2VkIHVudGlsIHRoaXMgcmVnaW9uIGlzIHBvaXNvbmVkIGFnYWluLgovLy8gVGhpcyBmdW5jdGlvbiBjb3VsZCB1bnBvaXNvbiBhIHN1cGVyLXJlZ2lvbiBvZiA8Yz5bYWRkciwgYWRkcitzaXplKTwvYz4gZHVlCi8vLyB0byBBU2FuIGFsaWdubWVudCByZXN0cmljdGlvbnMuCi8vLwovLy8gXG5vdGUgVGhpcyBmdW5jdGlvbiBpcyBub3QgdGhyZWFkLXNhZmUgYmVjYXVzZSBubyB0d28gdGhyZWFkcyBjYW4KLy8vIHBvaXNvbiBvciB1bnBvaXNvbiBtZW1vcnkgaW4gdGhlIHNhbWUgbWVtb3J5IHJlZ2lvbiBzaW11bHRhbmVvdXNseS4KLy8vCi8vLyBccGFyYW0gYWRkciBTdGFydCBvZiBtZW1vcnkgcmVnaW9uLgovLy8gXHBhcmFtIHNpemUgU2l6ZSBvZiBtZW1vcnkgcmVnaW9uLgp2b2lkIF9fYXNhbl91bnBvaXNvbl9tZW1vcnlfcmVnaW9uKHZvaWQgY29uc3Qgdm9sYXRpbGUgKmFkZHIsIHNpemVfdCBzaXplKTsKCi8vIE1hY3JvcyBwcm92aWRlZCBmb3IgY29udmVuaWVuY2UuCiNpZiBfX2hhc19mZWF0dXJlKGFkZHJlc3Nfc2FuaXRpemVyKSB8fCBkZWZpbmVkKF9fU0FOSVRJWkVfQUREUkVTU19fKQovLy8gTWFya3MgYSBtZW1vcnkgcmVnaW9uIGFzIHVuYWRkcmVzc2FibGUuCi8vLwovLy8gXG5vdGUgTWFjcm8gcHJvdmlkZWQgZm9yIGNvbnZlbmllbmNlOyBkZWZpbmVkIGFzIGEgbm8tb3AgaWYgQVNhbiBpcyBub3QKLy8vIGVuYWJsZWQuCi8vLwovLy8gXHBhcmFtIGFkZHIgU3RhcnQgb2YgbWVtb3J5IHJlZ2lvbi4KLy8vIFxwYXJhbSBzaXplIFNpemUgb2YgbWVtb3J5IHJlZ2lvbi4KI2RlZmluZSBBU0FOX1BPSVNPTl9NRU1PUllfUkVHSU9OKGFkZHIsIHNpemUpIFwKICBfX2FzYW5fcG9pc29uX21lbW9yeV9yZWdpb24oKGFkZHIpLCAoc2l6ZSkpCgovLy8gTWFya3MgYSBtZW1vcnkgcmVnaW9uIGFzIGFkZHJlc3NhYmxlLgovLy8KLy8vIFxub3RlIE1hY3JvIHByb3ZpZGVkIGZvciBjb252ZW5pZW5jZTsgZGVmaW5lZCBhcyBhIG5vLW9wIGlmIEFTYW4gaXMgbm90Ci8vLyBlbmFibGVkLgovLy8KLy8vIFxwYXJhbSBhZGRyIFN0YXJ0IG9mIG1lbW9yeSByZWdpb24uCi8vLyBccGFyYW0gc2l6ZSBTaXplIG9mIG1lbW9yeSByZWdpb24uCiNkZWZpbmUgQVNBTl9VTlBPSVNPTl9NRU1PUllfUkVHSU9OKGFkZHIsIHNpemUpIFwKICBfX2FzYW5fdW5wb2lzb25fbWVtb3J5X3JlZ2lvbigoYWRkciksIChzaXplKSkKI2Vsc2UKI2RlZmluZSBBU0FOX1BPSVNPTl9NRU1PUllfUkVHSU9OKGFkZHIsIHNpemUpIFwKICAoKHZvaWQpKGFkZHIpLCAodm9pZCkoc2l6ZSkpCiNkZWZpbmUgQVNBTl9VTlBPSVNPTl9NRU1PUllfUkVHSU9OKGFkZHIsIHNpemUpIFwKICAoKHZvaWQpKGFkZHIpLCAodm9pZCkoc2l6ZSkpCiNlbmRpZgoKLy8vIENoZWNrcyBpZiBhbiBhZGRyZXNzIGlzIHBvaXNvbmVkLgovLy8KLy8vIFJldHVybnMgMSBpZiA8Yz48aT5hZGRyPC9pPjwvYz4gaXMgcG9pc29uZWQgKHRoYXQgaXMsIDEtYnl0ZSByZWFkL3dyaXRlCi8vLyBhY2Nlc3MgdG8gdGhpcyBhZGRyZXNzIHdvdWxkIHJlc3VsdCBpbiBhbiBlcnJvciByZXBvcnQgZnJvbSBBU2FuKS4KLy8vIE90aGVyd2lzZSByZXR1cm5zIDAuCi8vLwovLy8gXHBhcmFtIGFkZHIgQWRkcmVzcyB0byBjaGVjay4KLy8vCi8vLyBccmV0dmFsIDEgQWRkcmVzcyBpcyBwb2lzb25lZC4KLy8vIFxyZXR2YWwgMCBBZGRyZXNzIGlzIG5vdCBwb2lzb25lZC4KaW50IF9fYXNhbl9hZGRyZXNzX2lzX3BvaXNvbmVkKHZvaWQgY29uc3Qgdm9sYXRpbGUgKmFkZHIpOwoKLy8vIENoZWNrcyBpZiBhIHJlZ2lvbiBpcyBwb2lzb25lZC4KLy8vCi8vLyBJZiBhdCBsZWFzdCBvbmUgYnl0ZSBpbiA8Yz5bYmVnLCBiZWcrc2l6ZSk8L2M+IGlzIHBvaXNvbmVkLCByZXR1cm5zIHRoZQovLy8gYWRkcmVzcyBvZiB0aGUgZmlyc3Qgc3VjaCBieXRlLiBPdGhlcndpc2UgcmV0dXJucyAwLgovLy8KLy8vIFxwYXJhbSBiZWcgU3RhcnQgb2YgbWVtb3J5IHJlZ2lvbi4KLy8vIFxwYXJhbSBzaXplIFN0YXJ0IG9mIG1lbW9yeSByZWdpb24uCi8vLyBccmV0dXJucyBBZGRyZXNzIG9mIGZpcnN0IHBvaXNvbmVkIGJ5dGUuCnZvaWQgKl9fYXNhbl9yZWdpb25faXNfcG9pc29uZWQodm9pZCAqYmVnLCBzaXplX3Qgc2l6ZSk7CgovLy8gRGVzY3JpYmVzIGFuIGFkZHJlc3MgKHVzZWZ1bCBmb3IgY2FsbGluZyBmcm9tIHRoZSBkZWJ1Z2dlcikuCi8vLwovLy8gUHJpbnRzIHRoZSBkZXNjcmlwdGlvbiBvZiA8Yz48aT5hZGRyPC9pPjwvYz4uCi8vLwovLy8gXHBhcmFtIGFkZHIgQWRkcmVzcyB0byBkZXNjcmliZS4Kdm9pZCBfX2FzYW5fZGVzY3JpYmVfYWRkcmVzcyh2b2lkICphZGRyKTsKCi8vLyBDaGVja3MgaWYgYW4gZXJyb3IgaGFzIGJlZW4gb3IgaXMgYmVpbmcgcmVwb3J0ZWQgKHVzZWZ1bCBmb3IgY2FsbGluZyBmcm9tCi8vLyB0aGUgZGVidWdnZXIgdG8gZ2V0IGluZm9ybWF0aW9uIGFib3V0IGFuIEFTYW4gZXJyb3IpLgovLy8KLy8vIFJldHVybnMgMSBpZiBhbiBlcnJvciBoYXMgYmVlbiAob3IgaXMgYmVpbmcpIHJlcG9ydGVkLiBPdGhlcndpc2UgcmV0dXJucyAwLgovLy8KLy8vIFxyZXR1cm5zIDEgaWYgYW4gZXJyb3IgaGFzIGJlZW4gKG9yIGlzIGJlaW5nKSByZXBvcnRlZC4gT3RoZXJ3aXNlIHJldHVybnMKLy8vIDAuCmludCBfX2FzYW5fcmVwb3J0X3ByZXNlbnQodm9pZCk7CgovLy8gR2V0cyB0aGUgUEMgKHByb2dyYW0gY291bnRlcikgcmVnaXN0ZXIgdmFsdWUgb2YgYW4gQVNhbiBlcnJvciAodXNlZnVsIGZvcgovLy8gY2FsbGluZyBmcm9tIHRoZSBkZWJ1Z2dlcikuCi8vLwovLy8gUmV0dXJucyBQQyBpZiBhbiBlcnJvciBoYXMgYmVlbiAob3IgaXMgYmVpbmcpIHJlcG9ydGVkLgovLy8gT3RoZXJ3aXNlIHJldHVybnMgMC4KLy8vCi8vLyBccmV0dXJucyBQQyB2YWx1ZS4Kdm9pZCAqX19hc2FuX2dldF9yZXBvcnRfcGModm9pZCk7CgovLy8gR2V0cyB0aGUgQlAgKGJhc2UgcG9pbnRlcikgcmVnaXN0ZXIgdmFsdWUgb2YgYW4gQVNhbiBlcnJvciAodXNlZnVsIGZvcgovLy8gY2FsbGluZyBmcm9tIHRoZSBkZWJ1Z2dlcikuCi8vLwovLy8gUmV0dXJucyBCUCBpZiBhbiBlcnJvciBoYXMgYmVlbiAob3IgaXMgYmVpbmcpIHJlcG9ydGVkLgovLy8gT3RoZXJ3aXNlIHJldHVybnMgMC4KLy8vCi8vLyBccmV0dXJucyBCUCB2YWx1ZS4Kdm9pZCAqX19hc2FuX2dldF9yZXBvcnRfYnAodm9pZCk7CgovLy8gR2V0cyB0aGUgU1AgKHN0YWNrIHBvaW50ZXIpIHJlZ2lzdGVyIHZhbHVlIG9mIGFuIEFTYW4gZXJyb3IgKHVzZWZ1bCBmb3IKLy8vIGNhbGxpbmcgZnJvbSB0aGUgZGVidWdnZXIpLgovLy8KLy8vIElmIGFuIGVycm9yIGhhcyBiZWVuIChvciBpcyBiZWluZykgcmVwb3J0ZWQsIHJldHVybnMgU1AuCi8vLyBPdGhlcndpc2UgcmV0dXJucyAwLgovLy8KLy8vIFxyZXR1cm5zIFNQIHZhbHVlLgp2b2lkICpfX2FzYW5fZ2V0X3JlcG9ydF9zcCh2b2lkKTsKCi8vLyBHZXRzIHRoZSBhZGRyZXNzIG9mIHRoZSByZXBvcnQgYnVmZmVyIG9mIGFuIEFTYW4gZXJyb3IgKHVzZWZ1bCBmb3IgY2FsbGluZwovLy8gZnJvbSB0aGUgZGVidWdnZXIpLgovLy8KLy8vIFJldHVybnMgdGhlIGFkZHJlc3Mgb2YgdGhlIHJlcG9ydCBidWZmZXIgaWYgYW4gZXJyb3IgaGFzIGJlZW4gKG9yIGlzIGJlaW5nKQovLy8gcmVwb3J0ZWQuIE90aGVyd2lzZSByZXR1cm5zIDAuCi8vLwovLy8gXHJldHVybnMgQWRkcmVzcyBvZiByZXBvcnQgYnVmZmVyLgp2b2lkICpfX2FzYW5fZ2V0X3JlcG9ydF9hZGRyZXNzKHZvaWQpOwoKLy8vIEdldHMgYWNjZXNzIHR5cGUgb2YgYW4gQVNhbiBlcnJvciAodXNlZnVsIGZvciBjYWxsaW5nIGZyb20gdGhlIGRlYnVnZ2VyKS4KLy8vCi8vLyBSZXR1cm5zIGFjY2VzcyB0eXBlIChyZWFkIG9yIHdyaXRlKSBpZiBhbiBlcnJvciBoYXMgYmVlbiAob3IgaXMgYmVpbmcpCi8vLyByZXBvcnRlZC4gT3RoZXJ3aXNlIHJldHVybnMgMC4KLy8vCi8vLyBccmV0dXJucyBBY2Nlc3MgdHlwZSAoMCA9IHJlYWQsIDEgPSB3cml0ZSkuCmludCBfX2FzYW5fZ2V0X3JlcG9ydF9hY2Nlc3NfdHlwZSh2b2lkKTsKCi8vLyBHZXRzIGFjY2VzcyBzaXplIG9mIGFuIEFTYW4gZXJyb3IgKHVzZWZ1bCBmb3IgY2FsbGluZyBmcm9tIHRoZSBkZWJ1Z2dlcikuCi8vLwovLy8gUmV0dXJucyBhY2Nlc3Mgc2l6ZSBpZiBhbiBlcnJvciBoYXMgYmVlbiAob3IgaXMgYmVpbmcpIHJlcG9ydGVkLiBPdGhlcndpc2UKLy8vIHJldHVybnMgMC4KLy8vCi8vLyBccmV0dXJucyBBY2Nlc3Mgc2l6ZSBpbiBieXRlcy4Kc2l6ZV90IF9fYXNhbl9nZXRfcmVwb3J0X2FjY2Vzc19zaXplKHZvaWQpOwoKLy8vIEdldHMgdGhlIGJ1ZyBkZXNjcmlwdGlvbiBvZiBhbiBBU2FuIGVycm9yICh1c2VmdWwgZm9yIGNhbGxpbmcgZnJvbSBhCi8vLyBkZWJ1Z2dlcikuCi8vLwovLy8gXHJldHVybnMgUmV0dXJucyBhIGJ1ZyBkZXNjcmlwdGlvbiBpZiBhbiBlcnJvciBoYXMgYmVlbiAob3IgaXMgYmVpbmcpCi8vLyByZXBvcnRlZCAtIGZvciBleGFtcGxlLCAiaGVhcC11c2UtYWZ0ZXItZnJlZSIuIE90aGVyd2lzZSByZXR1cm5zIGFuIGVtcHR5Ci8vLyBzdHJpbmcuCmNvbnN0IGNoYXIgKl9fYXNhbl9nZXRfcmVwb3J0X2Rlc2NyaXB0aW9uKHZvaWQpOwoKLy8vIEdldHMgaW5mb3JtYXRpb24gYWJvdXQgYSBwb2ludGVyICh1c2VmdWwgZm9yIGNhbGxpbmcgZnJvbSB0aGUgZGVidWdnZXIpLgovLy8KLy8vIFJldHVybnMgdGhlIGNhdGVnb3J5IG9mIHRoZSBnaXZlbiBwb2ludGVyIGFzIGEgY29uc3RhbnQgc3RyaW5nLgovLy8gUG9zc2libGUgcmV0dXJuIHZhbHVlcyBhcmUgPGM+Z2xvYmFsPC9jPiwgPGM+c3RhY2s8L2M+LCA8Yz5zdGFjay1mYWtlPC9jPiwKLy8vIDxjPmhlYXA8L2M+LCA8Yz5oZWFwLWludmFsaWQ8L2M+LCA8Yz5zaGFkb3ctbG93PC9jPiwgPGM+c2hhZG93LWdhcDwvYz4sCi8vLyA8Yz5zaGFkb3ctaGlnaDwvYz4sIGFuZCA8Yz51bmtub3duPC9jPi4KLy8vCi8vLyBJZiB0aGUgcmV0dXJuIHZhbHVlIGlzIDxjPmdsb2JhbDwvYz4gb3IgPGM+c3RhY2s8L2M+LCB0cmllcyB0byBhbHNvIHJldHVybgovLy8gdGhlIHZhcmlhYmxlIG5hbWUsIGFkZHJlc3MsIGFuZCBzaXplLiBJZiB0aGUgcmV0dXJuIHZhbHVlIGlzIDxjPmhlYXA8L2M+LAovLy8gdHJpZXMgdG8gcmV0dXJuIHRoZSBjaHVuayBhZGRyZXNzIGFuZCBzaXplLiA8Yz48aT5uYW1lPC9pPjwvYz4gc2hvdWxkIHBvaW50Ci8vLyB0byBhbiBhbGxvY2F0ZWQgYnVmZmVyIG9mIHNpemUgPGM+PGk+bmFtZV9zaXplPC9pPjwvYz4uCi8vLwovLy8gXHBhcmFtIGFkZHIgQWRkcmVzcyB0byBsb2NhdGUuCi8vLyBccGFyYW0gbmFtZSBCdWZmZXIgdG8gc3RvcmUgdGhlIHZhcmlhYmxlJ3MgbmFtZS4KLy8vIFxwYXJhbSBuYW1lX3NpemUgU2l6ZSBpbiBieXRlcyBvZiB0aGUgdmFyaWFibGUncyBuYW1lIGJ1ZmZlci4KLy8vIFxwYXJhbVtvdXRdIHJlZ2lvbl9hZGRyZXNzIEFkZHJlc3Mgb2YgdGhlIHJlZ2lvbi4KLy8vIFxwYXJhbVtvdXRdIHJlZ2lvbl9zaXplIFNpemUgb2YgdGhlIHJlZ2lvbiBpbiBieXRlcy4KLy8vCi8vLyBccmV0dXJucyBSZXR1cm5zIHRoZSBjYXRlZ29yeSBvZiB0aGUgZ2l2ZW4gcG9pbnRlciBhcyBhIGNvbnN0YW50IHN0cmluZy4KY29uc3QgY2hhciAqX19hc2FuX2xvY2F0ZV9hZGRyZXNzKHZvaWQgKmFkZHIsIGNoYXIgKm5hbWUsIHNpemVfdCBuYW1lX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICoqcmVnaW9uX2FkZHJlc3MsIHNpemVfdCAqcmVnaW9uX3NpemUpOwoKLy8vIEdldHMgdGhlIGFsbG9jYXRpb24gc3RhY2sgdHJhY2UgYW5kIHRocmVhZCBJRCBmb3IgYSBoZWFwIGFkZHJlc3MgKHVzZWZ1bAovLy8gZm9yIGNhbGxpbmcgZnJvbSB0aGUgZGVidWdnZXIpLgovLy8KLy8vIFN0b3JlcyB1cCB0byA8Yz48aT5zaXplPC9pPjwvYz4gZnJhbWVzIGluIDxjPjxpPnRyYWNlPC9pPjwvYz4uIFJldHVybnMKLy8vIHRoZSBudW1iZXIgb2Ygc3RvcmVkIGZyYW1lcyBvciAwIG9uIGVycm9yLgovLy8KLy8vIFxwYXJhbSBhZGRyIEEgaGVhcCBhZGRyZXNzLgovLy8gXHBhcmFtIHRyYWNlIEEgYnVmZmVyIHRvIHN0b3JlIHRoZSBzdGFjayB0cmFjZS4KLy8vIFxwYXJhbSBzaXplIFNpemUgaW4gYnl0ZXMgb2YgdGhlIHRyYWNlIGJ1ZmZlci4KLy8vIFxwYXJhbVtvdXRdIHRocmVhZF9pZCBUaGUgdGhyZWFkIElEIG9mIHRoZSBhZGRyZXNzLgovLy8KLy8vIFxyZXR1cm5zIFJldHVybnMgdGhlIG51bWJlciBvZiBzdG9yZWQgZnJhbWVzIG9yIDAgb24gZXJyb3IuCnNpemVfdCBfX2FzYW5fZ2V0X2FsbG9jX3N0YWNrKHZvaWQgKmFkZHIsIHZvaWQgKip0cmFjZSwgc2l6ZV90IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqdGhyZWFkX2lkKTsKCi8vLyBHZXRzIHRoZSBmcmVlIHN0YWNrIHRyYWNlIGFuZCB0aHJlYWQgSUQgZm9yIGEgaGVhcCBhZGRyZXNzICh1c2VmdWwgZm9yCi8vLyBjYWxsaW5nIGZyb20gdGhlIGRlYnVnZ2VyKS4KLy8vCi8vLyBTdG9yZXMgdXAgdG8gPGM+PGk+c2l6ZTwvaT48L2M+IGZyYW1lcyBpbiA8Yz48aT50cmFjZTwvaT48L2M+LiBSZXR1cm5zCi8vLyB0aGUgbnVtYmVyIG9mIHN0b3JlZCBmcmFtZXMgb3IgMCBvbiBlcnJvci4KLy8vCi8vLyBccGFyYW0gYWRkciBBIGhlYXAgYWRkcmVzcy4KLy8vIFxwYXJhbSB0cmFjZSBBIGJ1ZmZlciB0byBzdG9yZSB0aGUgc3RhY2sgdHJhY2UuCi8vLyBccGFyYW0gc2l6ZSBTaXplIGluIGJ5dGVzIG9mIHRoZSB0cmFjZSBidWZmZXIuCi8vLyBccGFyYW1bb3V0XSB0aHJlYWRfaWQgVGhlIHRocmVhZCBJRCBvZiB0aGUgYWRkcmVzcy4KLy8vCi8vLyBccmV0dXJucyBSZXR1cm5zIHRoZSBudW1iZXIgb2Ygc3RvcmVkIGZyYW1lcyBvciAwIG9uIGVycm9yLgpzaXplX3QgX19hc2FuX2dldF9mcmVlX3N0YWNrKHZvaWQgKmFkZHIsIHZvaWQgKip0cmFjZSwgc2l6ZV90IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICp0aHJlYWRfaWQpOwoKLy8vIEdldHMgdGhlIGN1cnJlbnQgc2hhZG93IG1lbW9yeSBtYXBwaW5nICh1c2VmdWwgZm9yIGNhbGxpbmcgZnJvbSB0aGUKLy8vIGRlYnVnZ2VyKS4KLy8vCi8vLyBccGFyYW1bb3V0XSBzaGFkb3dfc2NhbGUgU2hhZG93IHNjYWxlIHZhbHVlLgovLy8gXHBhcmFtW291dF0gc2hhZG93X29mZnNldCBPZmZzZXQgdmFsdWUuCnZvaWQgX19hc2FuX2dldF9zaGFkb3dfbWFwcGluZyhzaXplX3QgKnNoYWRvd19zY2FsZSwgc2l6ZV90ICpzaGFkb3dfb2Zmc2V0KTsKCi8vLyBUaGlzIGlzIGFuIGludGVybmFsIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIHRvIHJlcG9ydCBhbiBlcnJvci4gSG93ZXZlciwKLy8vIGl0IGlzIHN0aWxsIGEgcGFydCBvZiB0aGUgaW50ZXJmYWNlIGJlY2F1c2UgeW91IG1pZ2h0IHdhbnQgdG8gc2V0IGEKLy8vIGJyZWFrcG9pbnQgb24gdGhpcyBmdW5jdGlvbiBpbiB0aGUgZGVidWdnZXIuCi8vLwovLy8gXHBhcmFtIHBjIDxjPjxpPnBjPC9pPjwvYz4gdmFsdWUgb2YgdGhlIEFTYW4gZXJyb3IuCi8vLyBccGFyYW0gYnAgPGM+PGk+YnA8L2k+PC9jPiB2YWx1ZSBvZiB0aGUgQVNhbiBlcnJvci4KLy8vIFxwYXJhbSBzcCA8Yz48aT5zcDwvaT48L2M+IHZhbHVlIG9mIHRoZSBBU2FuIGVycm9yLgovLy8gXHBhcmFtIGFkZHIgQWRkcmVzcyBvZiB0aGUgQVNhbiBlcnJvci4KLy8vIFxwYXJhbSBpc193cml0ZSBUcnVlIGlmIHRoZSBlcnJvciBpcyBhIHdyaXRlIGVycm9yOyBmYWxzZSBvdGhlcndpc2UuCi8vLyBccGFyYW0gYWNjZXNzX3NpemUgU2l6ZSBvZiB0aGUgbWVtb3J5IGFjY2VzcyBvZiB0aGUgQVNhbiBlcnJvci4Kdm9pZCBfX2FzYW5fcmVwb3J0X2Vycm9yKHZvaWQgKnBjLCB2b2lkICpicCwgdm9pZCAqc3AsCiAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICphZGRyLCBpbnQgaXNfd3JpdGUsIHNpemVfdCBhY2Nlc3Nfc2l6ZSk7CgovLyBEZXByZWNhdGVkLiBDYWxsIF9fc2FuaXRpemVyX3NldF9kZWF0aF9jYWxsYmFjayBpbnN0ZWFkLgp2b2lkIF9fYXNhbl9zZXRfZGVhdGhfY2FsbGJhY2sodm9pZCAoKmNhbGxiYWNrKSh2b2lkKSk7CgovLy8gU2V0cyB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGR1cmluZyBBU2FuIGVycm9yIHJlcG9ydGluZy4KLy8vCi8vLyBUaGUgY2FsbGJhY2sgcHJvdmlkZXMgYSBzdHJpbmcgcG9pbnRlciB0byB0aGUgcmVwb3J0LgovLy8KLy8vIFxwYXJhbSBjYWxsYmFjayBVc2VyLXByb3ZpZGVkIGZ1bmN0aW9uLgp2b2lkIF9fYXNhbl9zZXRfZXJyb3JfcmVwb3J0X2NhbGxiYWNrKHZvaWQgKCpjYWxsYmFjaykoY29uc3QgY2hhciAqKSk7CgovLy8gVXNlci1wcm92aWRlZCBjYWxsYmFjayBvbiBBU2FuIGVycm9ycy4KLy8vCi8vLyBZb3UgY2FuIHByb3ZpZGUgYSBmdW5jdGlvbiB0aGF0IHdvdWxkIGJlIGNhbGxlZCBpbW1lZGlhdGVseSB3aGVuIEFTYW4KLy8vIGRldGVjdHMgYW4gZXJyb3IuIFRoaXMgaXMgdXNlZnVsIGluIGNhc2VzIHdoZW4gQVNhbiBkZXRlY3RzIGFuIGVycm9yIGJ1dAovLy8geW91ciBwcm9ncmFtIGNyYXNoZXMgYmVmb3JlIHRoZSBBU2FuIHJlcG9ydCBpcyBwcmludGVkLgp2b2lkIF9fYXNhbl9vbl9lcnJvcih2b2lkKTsKCi8vLyBQcmludHMgYWNjdW11bGF0ZWQgc3RhdGlzdGljcyB0byA8Yz5zdGRlcnI8L2M+ICh1c2VmdWwgZm9yIGNhbGxpbmcgZnJvbSB0aGUKLy8vIGRlYnVnZ2VyKS4Kdm9pZCBfX2FzYW5fcHJpbnRfYWNjdW11bGF0ZWRfc3RhdHModm9pZCk7CgovLy8gVXNlci1wcm92aWRlZCBkZWZhdWx0IG9wdGlvbiBzZXR0aW5ncy4KLy8vCi8vLyBZb3UgY2FuIHByb3ZpZGUgeW91ciBvd24gaW1wbGVtZW50YXRpb24gb2YgdGhpcyBmdW5jdGlvbiB0byByZXR1cm4gYSBzdHJpbmcKLy8vIGNvbnRhaW5pbmcgQVNhbiBydW50aW1lIG9wdGlvbnMgKGZvciBleGFtcGxlLAovLy8gPGM+dmVyYm9zaXR5PTE6aGFsdF9vbl9lcnJvcj0wPC9jPikuCi8vLwovLy8gXHJldHVybnMgRGVmYXVsdCBvcHRpb25zIHN0cmluZy4KY29uc3QgY2hhciogX19hc2FuX2RlZmF1bHRfb3B0aW9ucyh2b2lkKTsKCi8vIFRoZSBmb2xsb3dpbmcgdHdvIGZ1bmN0aW9ucyBmYWNpbGl0YXRlIGdhcmJhZ2UgY29sbGVjdGlvbiBpbiBwcmVzZW5jZSBvZgovLyBBU2FuJ3MgZmFrZSBzdGFjay4KCi8vLyBHZXRzIGFuIG9wYXF1ZSBoYW5kbGVyIHRvIHRoZSBjdXJyZW50IHRocmVhZCdzIGZha2Ugc3RhY2suCi8vLwovLy8gUmV0dXJucyBhbiBvcGFxdWUgaGFuZGxlciB0byBiZSB1c2VkIGJ5Ci8vLyA8Yz5fX2FzYW5fYWRkcl9pc19pbl9mYWtlX3N0YWNrKCk8L2M+LiBSZXR1cm5zIE5VTEwgaWYgdGhlIGN1cnJlbnQgdGhyZWFkCi8vLyBkb2VzIG5vdCBoYXZlIGEgZmFrZSBzdGFjay4KLy8vCi8vLyBccmV0dXJucyBBbiBvcGFxdWUgaGFuZGxlciB0byB0aGUgZmFrZSBzdGFjayBvciBOVUxMLgp2b2lkICpfX2FzYW5fZ2V0X2N1cnJlbnRfZmFrZV9zdGFjayh2b2lkKTsKCi8vLyBDaGVja3MgaWYgYW4gYWRkcmVzcyBiZWxvbmdzIHRvIGEgZ2l2ZW4gZmFrZSBzdGFjay4KLy8vCi8vLyBJZiA8Yz48aT5mYWtlX3N0YWNrPC9pPjwvYz4gaXMgbm9uLU5VTEwgYW5kIDxjPjxpPmFkZHI8L2k+PC9jPiBiZWxvbmdzIHRvIGEKLy8vIGZha2UgZnJhbWUgaW4gPGM+PGk+ZmFrZV9zdGFjazwvaT48L2M+LCByZXR1cm5zIHRoZSBhZGRyZXNzIG9mIHRoZSByZWFsCi8vLyBzdGFjayB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSBmYWtlIGZyYW1lIGFuZCBzZXRzIDxjPjxpPmJlZzwvaT48L2M+IGFuZAovLy8gPGM+PGk+ZW5kPC9pPjwvYz4gdG8gdGhlIGJvdW5kYXJpZXMgb2YgdGhpcyBmYWtlIGZyYW1lLiBPdGhlcndpc2UgcmV0dXJucwovLy8gTlVMTCBhbmQgZG9lcyBub3QgdG91Y2ggPGM+PGk+YmVnPC9pPjwvYz4gYW5kIDxjPjxpPmVuZDwvaT48L2M+LgovLy8KLy8vIElmIDxjPjxpPmJlZzwvaT48L2M+IG9yIDxjPjxpPmVuZDwvaT48L2M+IGFyZSBOVUxMLCB0aGV5IGFyZSBub3QgdG91Y2hlZC4KLy8vCi8vLyBcbm90ZSBUaGlzIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgZnJvbSBhIHRocmVhZCBvdGhlciB0aGFuIHRoZSBvd25lciBvZgovLy8gPGM+PGk+ZmFrZV9zdGFjazwvaT48L2M+LCBidXQgdGhlIG93bmVyIHRocmVhZCBuZWVkcyB0byBiZSBhbGl2ZS4KLy8vCi8vLyBccGFyYW0gZmFrZV9zdGFjayBBbiBvcGFxdWUgaGFuZGxlciB0byBhIGZha2Ugc3RhY2suCi8vLyBccGFyYW0gYWRkciBBZGRyZXNzIHRvIHRlc3QuCi8vLyBccGFyYW1bb3V0XSBiZWcgQmVnaW5uaW5nIG9mIGZha2UgZnJhbWUuCi8vLyBccGFyYW1bb3V0XSBlbmQgRW5kIG9mIGZha2UgZnJhbWUuCi8vLyBccmV0dXJucyBTdGFjayBhZGRyZXNzIG9yIE5VTEwuCnZvaWQgKl9fYXNhbl9hZGRyX2lzX2luX2Zha2Vfc3RhY2sodm9pZCAqZmFrZV9zdGFjaywgdm9pZCAqYWRkciwgdm9pZCAqKmJlZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICoqZW5kKTsKCi8vLyBQZXJmb3JtcyBzaGFkb3cgbWVtb3J5IGNsZWFudXAgb2YgdGhlIGN1cnJlbnQgdGhyZWFkJ3Mgc3RhY2sgYmVmb3JlIGEKLy8vIGZ1bmN0aW9uIG1hcmtlZCB3aXRoIHRoZSA8Yz5bW25vcmV0dXJuXV08L2M+IGF0dHJpYnV0ZSBpcyBjYWxsZWQuCi8vLwovLy8gVG8gYXZvaWQgZmFsc2UgcG9zaXRpdmVzIG9uIHRoZSBzdGFjaywgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIG5vLXJldHVybgovLy8gZnVuY3Rpb25zIGxpa2UgPGM+X2V4aXQoKTwvYz4gYW5kIDxjPmV4ZWNsKCk8L2M+Lgp2b2lkIF9fYXNhbl9oYW5kbGVfbm9fcmV0dXJuKHZvaWQpOwoKLy8vIFVwZGF0ZSBhbGxvY2F0aW9uIHN0YWNrIHRyYWNlIGZvciB0aGUgZ2l2ZW4gYWxsb2NhdGlvbiB0byB0aGUgY3VycmVudCBzdGFjawovLy8gdHJhY2UuIFJldHVybnMgMSBpZiBzdWNjZXNzZnVsLCAwIGlmIG5vdC4KaW50IF9fYXNhbl91cGRhdGVfYWxsb2NhdGlvbl9jb250ZXh0KHZvaWQqIGFkZHIpOwoKI2lmZGVmIF9fY3BsdXNwbHVzCn0gIC8vIGV4dGVybiAiQyIKI2VuZGlmCgojZW5kaWYgIC8vIFNBTklUSVpFUl9BU0FOX0lOVEVSRkFDRV9ICgAvLz09PS0tIHRzYW5faW50ZXJmYWNlLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwovLwovLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgovLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgovLwovLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwovLwovLyBUaGlzIGZpbGUgaXMgYSBwYXJ0IG9mIFRocmVhZFNhbml0aXplciAoVFNhbiksIGEgcmFjZSBkZXRlY3Rvci4KLy8KLy8gUHVibGljIGludGVyZmFjZSBoZWFkZXIgZm9yIFRTYW4uCi8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiNpZm5kZWYgU0FOSVRJWkVSX1RTQU5fSU5URVJGQUNFX0gKI2RlZmluZSBTQU5JVElaRVJfVFNBTl9JTlRFUkZBQ0VfSAoKI2luY2x1ZGUgPHNhbml0aXplci9jb21tb25faW50ZXJmYWNlX2RlZnMuaD4KCiNpZmRlZiBfX2NwbHVzcGx1cwpleHRlcm4gIkMiIHsKI2VuZGlmCgovLyBfX3RzYW5fcmVsZWFzZSBlc3RhYmxpc2hlcyBhIGhhcHBlbnMtYmVmb3JlIHJlbGF0aW9uIHdpdGggYSBwcmVjZWRpbmcKLy8gX190c2FuX2FjcXVpcmUgb24gdGhlIHNhbWUgYWRkcmVzcy4Kdm9pZCBfX3RzYW5fYWNxdWlyZSh2b2lkICphZGRyKTsKdm9pZCBfX3RzYW5fcmVsZWFzZSh2b2lkICphZGRyKTsKCi8vIEFubm90YXRpb25zIGZvciBjdXN0b20gbXV0ZXhlcy4KLy8gVGhlIGFubm90YXRpb25zIGFsbG93IHRvIGdldCBiZXR0ZXIgcmVwb3J0cyAod2l0aCBzZXRzIG9mIGxvY2tlZCBtdXRleGVzKSwKLy8gZGV0ZWN0IG1vcmUgdHlwZXMgb2YgYnVncyAoZS5nLiBtdXRleCBtaXN1c2VzLCByYWNlcyBiZXR3ZWVuIGxvY2svdW5sb2NrIGFuZAovLyBkZXN0cnVjdGlvbiBhbmQgcG90ZW50aWFsIGRlYWRsb2NrcykgYW5kIGltcHJvdmUgcHJlY2lzaW9uIGFuZCBwZXJmb3JtYW5jZQovLyAoYnkgaWdub3JpbmcgaW5kaXZpZHVhbCBhdG9taWMgb3BlcmF0aW9ucyBpbiBtdXRleCBjb2RlKS4gSG93ZXZlciwgdGhlCi8vIGRvd25zaWRlIGlzIHRoYXQgYW5ub3RhdGVkIG11dGV4IGNvZGUgaXRzZWxmIGlzIG5vdCBjaGVja2VkIGZvciBjb3JyZWN0bmVzcy4KCi8vIE11dGV4IGNyZWF0aW9uIGZsYWdzIGFyZSBwYXNzZWQgdG8gX190c2FuX211dGV4X2NyZWF0ZSBhbm5vdGF0aW9uLgovLyBJZiBtdXRleCBoYXMgbm8gY29uc3RydWN0b3IgYW5kIF9fdHNhbl9tdXRleF9jcmVhdGUgaXMgbm90IGNhbGxlZCwKLy8gdGhlIGZsYWdzIG1heSBiZSBwYXNzZWQgdG8gX190c2FuX211dGV4X3ByZV9sb2NrL19fdHNhbl9tdXRleF9wb3N0X2xvY2sKLy8gYW5ub3RhdGlvbnMuCgovLyBNdXRleCBoYXMgc3RhdGljIHN0b3JhZ2UgZHVyYXRpb24gYW5kIG5vLW9wIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yLgovLyBUaGlzIGVmZmVjdGl2ZWx5IG1ha2VzIHRzYW4gaWdub3JlIGRlc3Ryb3kgYW5ub3RhdGlvbi4Kc3RhdGljIGNvbnN0IHVuc2lnbmVkIF9fdHNhbl9tdXRleF9saW5rZXJfaW5pdCAgICAgID0gMSA8PCAwOwovLyBNdXRleCBpcyB3cml0ZSByZWVudHJhbnQuCnN0YXRpYyBjb25zdCB1bnNpZ25lZCBfX3RzYW5fbXV0ZXhfd3JpdGVfcmVlbnRyYW50ICA9IDEgPDwgMTsKLy8gTXV0ZXggaXMgcmVhZCByZWVudHJhbnQuCnN0YXRpYyBjb25zdCB1bnNpZ25lZCBfX3RzYW5fbXV0ZXhfcmVhZF9yZWVudHJhbnQgICA9IDEgPDwgMjsKLy8gTXV0ZXggZG9lcyBub3QgaGF2ZSBzdGF0aWMgc3RvcmFnZSBkdXJhdGlvbiwgYW5kIG11c3Qgbm90IGJlIHVzZWQgYWZ0ZXIKLy8gaXRzIGRlc3RydWN0b3IgcnVucy4gIFRoZSBvcHBvc2l0ZSBvZiBfX3RzYW5fbXV0ZXhfbGlua2VyX2luaXQuCi8vIElmIHRoaXMgZmxhZyBpcyBwYXNzZWQgdG8gX190c2FuX211dGV4X2Rlc3Ryb3ksIHRoZW4gdGhlIGRlc3RydWN0aW9uCi8vIGlzIGlnbm9yZWQgdW5sZXNzIHRoaXMgZmxhZyB3YXMgcHJldmlvdXNseSBzZXQgb24gdGhlIG11dGV4LgpzdGF0aWMgY29uc3QgdW5zaWduZWQgX190c2FuX211dGV4X25vdF9zdGF0aWMgICAgICAgPSAxIDw8IDg7CgovLyBNdXRleCBvcGVyYXRpb24gZmxhZ3M6CgovLyBEZW5vdGVzIHJlYWQgbG9jayBvcGVyYXRpb24uCnN0YXRpYyBjb25zdCB1bnNpZ25lZCBfX3RzYW5fbXV0ZXhfcmVhZF9sb2NrICAgICAgICA9IDEgPDwgMzsKLy8gRGVub3RlcyB0cnkgbG9jayBvcGVyYXRpb24uCnN0YXRpYyBjb25zdCB1bnNpZ25lZCBfX3RzYW5fbXV0ZXhfdHJ5X2xvY2sgICAgICAgICA9IDEgPDwgNDsKLy8gRGVub3RlcyB0aGF0IGEgdHJ5IGxvY2sgb3BlcmF0aW9uIGhhcyBmYWlsZWQgdG8gYWNxdWlyZSB0aGUgbXV0ZXguCnN0YXRpYyBjb25zdCB1bnNpZ25lZCBfX3RzYW5fbXV0ZXhfdHJ5X2xvY2tfZmFpbGVkICA9IDEgPDwgNTsKLy8gRGVub3RlcyB0aGF0IHRoZSBsb2NrIG9wZXJhdGlvbiBhY3F1aXJlcyBtdWx0aXBsZSByZWN1cnNpb24gbGV2ZWxzLgovLyBOdW1iZXIgb2YgbGV2ZWxzIGlzIHBhc3NlZCBpbiByZWN1cnNpb24gcGFyYW1ldGVyLgovLyBUaGlzIGlzIHVzZWZ1bCBmb3IgYW5ub3RhdGlvbiBvZiBlLmcuIEphdmEgYnVpbHRpbiBtb25pdG9ycywKLy8gZm9yIHdoaWNoIHdhaXQgb3BlcmF0aW9uIHJlbGVhc2VzIGFsbCByZWN1cnNpdmUgYWNxdWlzaXRpb25zIG9mIHRoZSBtdXRleC4Kc3RhdGljIGNvbnN0IHVuc2lnbmVkIF9fdHNhbl9tdXRleF9yZWN1cnNpdmVfbG9jayAgID0gMSA8PCA2OwovLyBEZW5vdGVzIHRoYXQgdGhlIHVubG9jayBvcGVyYXRpb24gcmVsZWFzZXMgYWxsIHJlY3Vyc2lvbiBsZXZlbHMuCi8vIE51bWJlciBvZiByZWxlYXNlZCBsZXZlbHMgaXMgcmV0dXJuZWQgYW5kIGxhdGVyIG11c3QgYmUgcGFzc2VkIHRvCi8vIHRoZSBjb3JyZXNwb25kaW5nIF9fdHNhbl9tdXRleF9wb3N0X2xvY2sgYW5ub3RhdGlvbi4Kc3RhdGljIGNvbnN0IHVuc2lnbmVkIF9fdHNhbl9tdXRleF9yZWN1cnNpdmVfdW5sb2NrID0gMSA8PCA3OwoKLy8gQ29udmVuaWVudCBjb21wb3NlZCBjb25zdGFudHMuCnN0YXRpYyBjb25zdCB1bnNpZ25lZCBfX3RzYW5fbXV0ZXhfdHJ5X3JlYWRfbG9jayA9CiAgICBfX3RzYW5fbXV0ZXhfcmVhZF9sb2NrIHwgX190c2FuX211dGV4X3RyeV9sb2NrOwpzdGF0aWMgY29uc3QgdW5zaWduZWQgX190c2FuX211dGV4X3RyeV9yZWFkX2xvY2tfZmFpbGVkID0KICAgIF9fdHNhbl9tdXRleF90cnlfcmVhZF9sb2NrIHwgX190c2FuX211dGV4X3RyeV9sb2NrX2ZhaWxlZDsKCi8vIEFubm90YXRlIGNyZWF0aW9uIG9mIGEgbXV0ZXguCi8vIFN1cHBvcnRlZCBmbGFnczogbXV0ZXggY3JlYXRpb24gZmxhZ3MuCnZvaWQgX190c2FuX211dGV4X2NyZWF0ZSh2b2lkICphZGRyLCB1bnNpZ25lZCBmbGFncyk7CgovLyBBbm5vdGF0ZSBkZXN0cnVjdGlvbiBvZiBhIG11dGV4LgovLyBTdXBwb3J0ZWQgZmxhZ3M6Ci8vICAgLSBfX3RzYW5fbXV0ZXhfbGlua2VyX2luaXQKLy8gICAtIF9fdHNhbl9tdXRleF9ub3Rfc3RhdGljCnZvaWQgX190c2FuX211dGV4X2Rlc3Ryb3kodm9pZCAqYWRkciwgdW5zaWduZWQgZmxhZ3MpOwoKLy8gQW5ub3RhdGUgc3RhcnQgb2YgbG9jayBvcGVyYXRpb24uCi8vIFN1cHBvcnRlZCBmbGFnczoKLy8gICAtIF9fdHNhbl9tdXRleF9yZWFkX2xvY2sKLy8gICAtIF9fdHNhbl9tdXRleF90cnlfbG9jawovLyAgIC0gYWxsIG11dGV4IGNyZWF0aW9uIGZsYWdzCnZvaWQgX190c2FuX211dGV4X3ByZV9sb2NrKHZvaWQgKmFkZHIsIHVuc2lnbmVkIGZsYWdzKTsKCi8vIEFubm90YXRlIGVuZCBvZiBsb2NrIG9wZXJhdGlvbi4KLy8gU3VwcG9ydGVkIGZsYWdzOgovLyAgIC0gX190c2FuX211dGV4X3JlYWRfbG9jayAobXVzdCBtYXRjaCBfX3RzYW5fbXV0ZXhfcHJlX2xvY2spCi8vICAgLSBfX3RzYW5fbXV0ZXhfdHJ5X2xvY2sgKG11c3QgbWF0Y2ggX190c2FuX211dGV4X3ByZV9sb2NrKQovLyAgIC0gX190c2FuX211dGV4X3RyeV9sb2NrX2ZhaWxlZAovLyAgIC0gX190c2FuX211dGV4X3JlY3Vyc2l2ZV9sb2NrCi8vICAgLSBhbGwgbXV0ZXggY3JlYXRpb24gZmxhZ3MKdm9pZCBfX3RzYW5fbXV0ZXhfcG9zdF9sb2NrKHZvaWQgKmFkZHIsIHVuc2lnbmVkIGZsYWdzLCBpbnQgcmVjdXJzaW9uKTsKCi8vIEFubm90YXRlIHN0YXJ0IG9mIHVubG9jayBvcGVyYXRpb24uCi8vIFN1cHBvcnRlZCBmbGFnczoKLy8gICAtIF9fdHNhbl9tdXRleF9yZWFkX2xvY2sKLy8gICAtIF9fdHNhbl9tdXRleF9yZWN1cnNpdmVfdW5sb2NrCmludCBfX3RzYW5fbXV0ZXhfcHJlX3VubG9jayh2b2lkICphZGRyLCB1bnNpZ25lZCBmbGFncyk7CgovLyBBbm5vdGF0ZSBlbmQgb2YgdW5sb2NrIG9wZXJhdGlvbi4KLy8gU3VwcG9ydGVkIGZsYWdzOgovLyAgIC0gX190c2FuX211dGV4X3JlYWRfbG9jayAobXVzdCBtYXRjaCBfX3RzYW5fbXV0ZXhfcHJlX3VubG9jaykKdm9pZCBfX3RzYW5fbXV0ZXhfcG9zdF91bmxvY2sodm9pZCAqYWRkciwgdW5zaWduZWQgZmxhZ3MpOwoKLy8gQW5ub3RhdGUgc3RhcnQvZW5kIG9mIG5vdGlmeS9zaWduYWwvYnJvYWRjYXN0IG9wZXJhdGlvbi4KLy8gU3VwcG9ydGVkIGZsYWdzOiBub25lLgp2b2lkIF9fdHNhbl9tdXRleF9wcmVfc2lnbmFsKHZvaWQgKmFkZHIsIHVuc2lnbmVkIGZsYWdzKTsKdm9pZCBfX3RzYW5fbXV0ZXhfcG9zdF9zaWduYWwodm9pZCAqYWRkciwgdW5zaWduZWQgZmxhZ3MpOwoKLy8gQW5ub3RhdGUgc3RhcnQvZW5kIG9mIGEgcmVnaW9uIG9mIGNvZGUgd2hlcmUgbG9jay91bmxvY2svc2lnbmFsIG9wZXJhdGlvbgovLyBkaXZlcnRzIHRvIGRvIHNvbWV0aGluZyBlbHNlIHVucmVsYXRlZCB0byB0aGUgbXV0ZXguIFRoaXMgY2FuIGJlIHVzZWQgdG8KLy8gYW5ub3RhdGUsIGZvciBleGFtcGxlLCBjYWxscyBpbnRvIGNvb3BlcmF0aXZlIHNjaGVkdWxlciBvciBjb250ZW50aW9uCi8vIHByb2ZpbGluZyBjb2RlLgovLyBUaGVzZSBhbm5vdGF0aW9ucyBtdXN0IGJlIGNhbGxlZCBvbmx5IGZyb20gd2l0aGluCi8vIF9fdHNhbl9tdXRleF9wcmUvcG9zdF9sb2NrLCBfX3RzYW5fbXV0ZXhfcHJlL3Bvc3RfdW5sb2NrLAovLyBfX3RzYW5fbXV0ZXhfcHJlL3Bvc3Rfc2lnbmFsIHJlZ2lvbnMuCi8vIFN1cHBvcnRlZCBmbGFnczogbm9uZS4Kdm9pZCBfX3RzYW5fbXV0ZXhfcHJlX2RpdmVydCh2b2lkICphZGRyLCB1bnNpZ25lZCBmbGFncyk7CnZvaWQgX190c2FuX211dGV4X3Bvc3RfZGl2ZXJ0KHZvaWQgKmFkZHIsIHVuc2lnbmVkIGZsYWdzKTsKCi8vIEV4dGVybmFsIHJhY2UgZGV0ZWN0aW9uIEFQSS4KLy8gQ2FuIGJlIHVzZWQgYnkgbm9uLWluc3RydW1lbnRlZCBsaWJyYXJpZXMgdG8gZGV0ZWN0IHdoZW4gdGhlaXIgb2JqZWN0cyBhcmUKLy8gYmVpbmcgdXNlZCBpbiBhbiB1bnNhZmUgbWFubmVyLgovLyAgIC0gX190c2FuX2V4dGVybmFsX3JlYWQvX190c2FuX2V4dGVybmFsX3dyaXRlIGFubm90YXRlcyB0aGUgbG9naWNhbCByZWFkcwovLyAgICAgICBhbmQgd3JpdGVzIG9mIHRoZSBvYmplY3QgYXQgdGhlIHNwZWNpZmllZCBhZGRyZXNzLiAnY2FsbGVyX3BjJyBzaG91bGQKLy8gICAgICAgYmUgdGhlIFBDIG9mIHRoZSBsaWJyYXJ5IHVzZXIsIHdoaWNoIHRoZSBsaWJyYXJ5IGNhbiBvYnRhaW4gd2l0aCBlLmcuCi8vICAgICAgIGBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMClgLgovLyAgIC0gX190c2FuX2V4dGVybmFsX3JlZ2lzdGVyX3RhZyByZWdpc3RlcnMgYSAndGFnJyB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZSwKLy8gICAgICAgd2hpY2ggaXMgbGF0ZXIgdXNlZCBpbiByZWFkL3dyaXRlIGFubm90YXRpb25zIHRvIGRlbm90ZSB0aGUgb2JqZWN0IHR5cGUKLy8gICAtIF9fdHNhbl9leHRlcm5hbF9hc3NpZ25fdGFnIGNhbiBvcHRpb25hbGx5IG1hcmsgYSBoZWFwIG9iamVjdCB3aXRoIGEgdGFnCnZvaWQgKl9fdHNhbl9leHRlcm5hbF9yZWdpc3Rlcl90YWcoY29uc3QgY2hhciAqb2JqZWN0X3R5cGUpOwp2b2lkIF9fdHNhbl9leHRlcm5hbF9yZWdpc3Rlcl9oZWFkZXIodm9pZCAqdGFnLCBjb25zdCBjaGFyICpoZWFkZXIpOwp2b2lkIF9fdHNhbl9leHRlcm5hbF9hc3NpZ25fdGFnKHZvaWQgKmFkZHIsIHZvaWQgKnRhZyk7CnZvaWQgX190c2FuX2V4dGVybmFsX3JlYWQodm9pZCAqYWRkciwgdm9pZCAqY2FsbGVyX3BjLCB2b2lkICp0YWcpOwp2b2lkIF9fdHNhbl9leHRlcm5hbF93cml0ZSh2b2lkICphZGRyLCB2b2lkICpjYWxsZXJfcGMsIHZvaWQgKnRhZyk7CgovLyBGaWJlciBzd2l0Y2hpbmcgQVBJLgovLyAgIC0gVFNBTiBjb250ZXh0IGZvciBmaWJlciBjYW4gYmUgY3JlYXRlZCBieSBfX3RzYW5fY3JlYXRlX2ZpYmVyCi8vICAgICBhbmQgZnJlZWQgYnkgX190c2FuX2Rlc3Ryb3lfZmliZXIuCi8vICAgLSBUU0FOIGNvbnRleHQgb2YgY3VycmVudCBmaWJlciBvciB0aHJlYWQgY2FuIGJlIG9idGFpbmVkCi8vICAgICBieSBjYWxsaW5nIF9fdHNhbl9nZXRfY3VycmVudF9maWJlci4KLy8gICAtIF9fdHNhbl9zd2l0Y2hfdG9fZmliZXIgc2hvdWxkIGJlIGNhbGxlZCBpbW1lZGlhdGVseSBiZWZvcmUgc3dpdGNoCi8vICAgICB0byBmaWJlciwgc3VjaCBhcyBjYWxsIG9mIHN3YXBjb250ZXh0LgovLyAgIC0gRmliZXIgbmFtZSBjYW4gYmUgc2V0IGJ5IF9fdHNhbl9zZXRfZmliZXJfbmFtZS4Kdm9pZCAqX190c2FuX2dldF9jdXJyZW50X2ZpYmVyKHZvaWQpOwp2b2lkICpfX3RzYW5fY3JlYXRlX2ZpYmVyKHVuc2lnbmVkIGZsYWdzKTsKdm9pZCBfX3RzYW5fZGVzdHJveV9maWJlcih2b2lkICpmaWJlcik7CnZvaWQgX190c2FuX3N3aXRjaF90b19maWJlcih2b2lkICpmaWJlciwgdW5zaWduZWQgZmxhZ3MpOwp2b2lkIF9fdHNhbl9zZXRfZmliZXJfbmFtZSh2b2lkICpmaWJlciwgY29uc3QgY2hhciAqbmFtZSk7CgovLyBGbGFncyBmb3IgX190c2FuX3N3aXRjaF90b19maWJlcjoKLy8gRG8gbm90IGVzdGFibGlzaCBhIGhhcHBlbnMtYmVmb3JlIHJlbGF0aW9uIGJldHdlZW4gZmliZXJzCnN0YXRpYyBjb25zdCB1bnNpZ25lZCBfX3RzYW5fc3dpdGNoX3RvX2ZpYmVyX25vX3N5bmMgPSAxIDw8IDA7CgovLyBVc2VyLXByb3ZpZGVkIGNhbGxiYWNrIGludm9rZWQgb24gVFNhbiBpbml0aWFsaXphdGlvbi4Kdm9pZCBfX3RzYW5fb25faW5pdGlhbGl6ZSgpOwoKLy8gVXNlci1wcm92aWRlZCBjYWxsYmFjayBpbnZva2VkIG9uIFRTYW4gc2h1dGRvd24uCi8vIGBmYWlsZWRgIC0gTm9uemVybyBpZiBUU2FuIGRpZCBkZXRlY3QgaXNzdWVzLCB6ZXJvIG90aGVyd2lzZS4KLy8gUmV0dXJuIGAwYCBpZiBUU2FuIHNob3VsZCBleGl0IGFzIGlmIG5vIGlzc3VlcyB3ZXJlIGRldGVjdGVkLiAgUmV0dXJuIG5vbnplcm8KLy8gaWYgVFNhbiBzaG91bGQgZXhpdCBhcyBpZiBpc3N1ZXMgd2VyZSBkZXRlY3RlZC4KaW50IF9fdHNhbl9vbl9maW5hbGl6ZShpbnQgZmFpbGVkKTsKCi8vIFJlbGVhc2UgVFNhbiBpbnRlcm5hbCBtZW1vcnkgaW4gYSBiZXN0LWVmZm9ydCBtYW5uZXIuCnZvaWQgX190c2FuX2ZsdXNoX21lbW9yeSgpOwoKI2lmZGVmIF9fY3BsdXNwbHVzCn0gIC8vIGV4dGVybiAiQyIKI2VuZGlmCgojZW5kaWYgIC8vIFNBTklUSVpFUl9UU0FOX0lOVEVSRkFDRV9ICgBJbnZhbGlkIHZhbHVlLgBNaXNzaW5nIGEgbmFtZSBmb3Igb2JqZWN0IG1lbWJlci4AZXh0ZXJuYWwva3l0aGUva3l0aGUvY3h4L2NvbW1vbi9wYXRoX3V0aWxzLmNjAFJld3JpdGUgc2NoZW1hIHJlcXVlc3RzICVkIG1hdGNoZXMsIGJ1dCB0aGUgcmVnZXhwIG9ubHkgaGFzICVkIHBhcmVudGhlc2l6ZWQgc3ViZXhwcmVzc2lvbnMuAEJhZCBjYWxsIHRvIFBhcnNlU3RhdGU6OlBhcnNlUGVybEZsYWdzAFxXAFs6Y250cmw6XQBleHRlcm5hbC9yZWdleC1yZTIvcmUyL2NvbXBpbGUuY2MAVW5leHBlY3RlZCBvcGNvZGU6IABpbnZhbGlkIGNoYXJhY3RlciBjbGFzcyByYW5nZQAgW3RydW5jYXRlZF0AQnVnaW5lc2UAQ29tbW9uAE1haGFqYW5pAE1ha2FzYXIAT2xkX1NvdXRoX0FyYWJpYW4AU2F1cmFzaHRyYQBTbwBUaWZpbmFnaABzaWdhY3Rpb24oKSBmYWlsZWQAcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHJlZ2lvbikgJSBhcmVuYS0+cGFnZXNpemUgPT0gMABlAERhAGNoYXI4X3QAbmEAcm0AKz0Ab1IAPj49AGlzdHJlYW0AREVBRExJTkVfRVhDRUVERUQAZWRnZS0+YnRyZWUoKS0+aGVpZ2h0KCkgPT0gdHJlZS0+aGVpZ2h0KCkgLSAxAElORgB0aGlzLT5Bd2FpdENvbW1vbihjb25kLCBLZXJuZWxUaW1lb3V0OjpOZXZlcigpKQByZXMgfHwgdC5oYXNfdGltZW91dCgpAFJlYWRlckxvY2sgYmxvY2tpbmcgAENoZWNrICh2ICYgKGtNdVdyaXRlciB8IGtNdVJlYWRlcikpICE9IChrTXVXcml0ZXIgfCBrTXVSZWFkZXIpIGZhaWxlZDogJXM6IE11dGV4IGNvcnJ1cHQ6IGJvdGggcmVhZGVyIGFuZCB3cml0ZXIgbG9jayBoZWxkOiAlcABwdGhyZWFkX2dldHNjaGVkcGFyYW0gZmFpbGVkOiAlZAAtMDAAL2RhdGEvbWlzYy96b25laW5mby9jdXJyZW50L3R6ZGF0YQBleHRlcm5hbC9ib3Jpbmdzc2wvc3JjL2NyeXB0by9maXBzbW9kdWxlL2JuL2V4cG9uZW50aWF0aW9uLmMAZXh0ZXJuYWwvYm9yaW5nc3NsL3NyYy9jcnlwdG8vZmlwc21vZHVsZS9ibi9zaGlmdC5jAFAtMjU2ACVzIGZhaWxlZC4KRXhwZWN0ZWQ6IABsaWIoJXUpAG1lbW9yeSBidWZmZXIgcm91dGluZXMASEtERiBmdW5jdGlvbnMAa3l0aGUucHJvdG8uQ29tcGlsYXRpb25Vbml0LkVudi5uYW1lAGt5dGhlLnByb3RvLkNvbnRleHREZXBlbmRlbnRWZXJzaW9uLkNvbHVtbi5saW5rZWRfY29udGV4dABhc3NlbWJsZXItd2l0aC1jcHAALS1hbmFseXplAEtZVEhFX0VYQ0xVREVfQVVUT0NPTkZJR1VSQVRJT05fRklMRVMAaGVhZGVyX3NlYXJjaF9pbmZvAENoZWNrIGZhaWxlZDogACk6IABfX3dtbWludHJpbl9hZXMuaAAvKj09PS0tLS0tLS0tLSBhdng1MTJ2bGJmMTZpbnRyaW4uaCAtIEFWWDUxMl9CRjE2IGludHJpbnNpY3MgLS0tLS0tLS0tLS0tLS0tPT09CiAqCiAqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCiAqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCiNpZm5kZWYgX19JTU1JTlRSSU5fSAojZXJyb3IgIk5ldmVyIHVzZSA8YXZ4NTEydmxiZjE2aW50cmluLmg+IGRpcmVjdGx5OyBpbmNsdWRlIDxpbW1pbnRyaW4uaD4gaW5zdGVhZC4iCiNlbmRpZgoKI2lmbmRlZiBfX0FWWDUxMlZMQkYxNklOVFJJTl9ICiNkZWZpbmUgX19BVlg1MTJWTEJGMTZJTlRSSU5fSAoKdHlwZWRlZiBzaG9ydCBfX20xMjhiaCBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oMTYpLCBfX2FsaWduZWRfXygxNikpKTsKCiNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTMTI4IFwKICBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIFwKICAgICAgICAgICAgICAgICBfX3RhcmdldF9fKCJhdng1MTJ2bCwgYXZ4NTEyYmYxNiIpLCBfX21pbl92ZWN0b3Jfd2lkdGhfXygxMjgpKSkKI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYgXAogIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgXAogICAgICAgICAgICAgICAgIF9fdGFyZ2V0X18oImF2eDUxMnZsLCBhdng1MTJiZjE2IiksIF9fbWluX3ZlY3Rvcl93aWR0aF9fKDI1NikpKQoKLy8vIENvbnZlcnQgVHdvIFBhY2tlZCBTaW5nbGUgRGF0YSB0byBPbmUgUGFja2VkIEJGMTYgRGF0YS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ1ZUTkUyUFMyQkYxNiA8L2M+IGluc3RydWN0aW9ucy4KLy8vCi8vLyBccGFyYW0gX19BCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLgovLy8gXHBhcmFtIF9fQgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBiZmxvYXRdIHdob3NlIGxvd2VyIDY0IGJpdHMgY29tZSBmcm9tCi8vLyAgICBjb252ZXJzaW9uIG9mIF9fQiwgYW5kIGhpZ2hlciA2NCBiaXRzIGNvbWUgZnJvbSBjb252ZXJzaW9uIG9mIF9fQS4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4YmggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9jdnRuZTJwc19wYmgoX19tMTI4IF9fQSwgX19tMTI4IF9fQikgewogIHJldHVybiAoX19tMTI4YmgpX19idWlsdGluX2lhMzJfY3Z0bmUycHMyYmYxNl8xMjgoKF9fdjRzZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikgX19CKTsKfQoKLy8vIENvbnZlcnQgVHdvIFBhY2tlZCBTaW5nbGUgRGF0YSB0byBPbmUgUGFja2VkIEJGMTYgRGF0YS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ1ZUTkUyUFMyQkYxNiA8L2M+IGluc3RydWN0aW9ucy4KLy8vCi8vLyBccGFyYW0gX19BCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLgovLy8gXHBhcmFtIF9fQgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4KLy8vIFxwYXJhbSBfX1cKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBiZmxvYXRdLgovLy8gXHBhcmFtIF9fVQovLy8gICAgQSA4LWJpdCBtYXNrIHZhbHVlIHNwZWNpZnlpbmcgd2hhdCBpcyBjaG9zZW4gZm9yIGVhY2ggZWxlbWVudC4KLy8vICAgIEEgMSBtZWFucyBjb252ZXJzaW9uIG9mIF9fQSBvciBfX0IuIEEgMCBtZWFucyBlbGVtZW50IGZyb20gX19XLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGJmbG9hdF0gd2hvc2UgbG93ZXIgNjQgYml0cyBjb21lIGZyb20KLy8vICAgIGNvbnZlcnNpb24gb2YgX19CLCBhbmQgaGlnaGVyIDY0IGJpdHMgY29tZSBmcm9tIGNvbnZlcnNpb24gb2YgX19BLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhiaCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfY3Z0bmUycHNfcGJoKF9fbTEyOGJoIF9fVywgX19tbWFzazggX19VLCBfX20xMjggX19BLCBfX20xMjggX19CKSB7CiAgcmV0dXJuIChfX20xMjhiaClfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9tbV9jdnRuZTJwc19wYmgoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9fVyk7Cn0KCi8vLyBDb252ZXJ0IFR3byBQYWNrZWQgU2luZ2xlIERhdGEgdG8gT25lIFBhY2tlZCBCRjE2IERhdGEuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNWVE5FMlBTMkJGMTYgPC9jPiBpbnN0cnVjdGlvbnMuCi8vLwovLy8gXHBhcmFtIF9fQQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4KLy8vIFxwYXJhbSBfX0IKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uCi8vLyBccGFyYW0gX19VCi8vLyAgICBBIDgtYml0IG1hc2sgdmFsdWUgc3BlY2lmeWluZyB3aGF0IGlzIGNob3NlbiBmb3IgZWFjaCBlbGVtZW50LgovLy8gICAgQSAxIG1lYW5zIGNvbnZlcnNpb24gb2YgX19BIG9yIF9fQi4gQSAwIG1lYW5zIGVsZW1lbnQgaXMgemVyby4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBiZmxvYXRdIHdob3NlIGxvd2VyIDY0IGJpdHMgY29tZSBmcm9tCi8vLyAgICBjb252ZXJzaW9uIG9mIF9fQiwgYW5kIGhpZ2hlciA2NCBiaXRzIGNvbWUgZnJvbSBjb252ZXJzaW9uIG9mIF9fQS4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4YmggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9jdnRuZTJwc19wYmgoX19tbWFzazggX19VLCBfX20xMjggX19BLCBfX20xMjggX19CKSB7CiAgcmV0dXJuIChfX20xMjhiaClfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9tbV9jdnRuZTJwc19wYmgoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgovLy8gQ29udmVydCBUd28gUGFja2VkIFNpbmdsZSBEYXRhIHRvIE9uZSBQYWNrZWQgQkYxNiBEYXRhLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDVlRORTJQUzJCRjE2IDwvYz4gaW5zdHJ1Y3Rpb25zLgovLy8KLy8vIFxwYXJhbSBfX0EKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uCi8vLyBccGFyYW0gX19CCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLgovLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbMTYgeCBiZmxvYXRdIHdob3NlIGxvd2VyIDEyOCBiaXRzIGNvbWUgZnJvbQovLy8gICAgY29udmVyc2lvbiBvZiBfX0IsIGFuZCBoaWdoZXIgMTI4IGJpdHMgY29tZSBmcm9tIGNvbnZlcnNpb24gb2YgX19BLgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZiaCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2N2dG5lMnBzX3BiaChfX20yNTYgX19BLCBfX20yNTYgX19CKSB7CiAgcmV0dXJuIChfX20yNTZiaClfX2J1aWx0aW5faWEzMl9jdnRuZTJwczJiZjE2XzI1NigoX192OHNmKSBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKSBfX0IpOwp9CgovLy8gQ29udmVydCBUd28gUGFja2VkIFNpbmdsZSBEYXRhIHRvIE9uZSBQYWNrZWQgQkYxNiBEYXRhLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDVlRORTJQUzJCRjE2IDwvYz4gaW5zdHJ1Y3Rpb25zLgovLy8KLy8vIFxwYXJhbSBfX0EKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uCi8vLyBccGFyYW0gX19CCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLgovLy8gXHBhcmFtIF9fVwovLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbMTYgeCBiZmxvYXRdLgovLy8gXHBhcmFtIF9fVQovLy8gICAgQSAxNi1iaXQgbWFzayB2YWx1ZSBzcGVjaWZ5aW5nIHdoYXQgaXMgY2hvc2VuIGZvciBlYWNoIGVsZW1lbnQuCi8vLyAgICBBIDEgbWVhbnMgY29udmVyc2lvbiBvZiBfX0Egb3IgX19CLiBBIDAgbWVhbnMgZWxlbWVudCBmcm9tIF9fVy4KLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzE2IHggYmZsb2F0XSB3aG9zZSBsb3dlciAxMjggYml0cyBjb21lIGZyb20KLy8vICAgIGNvbnZlcnNpb24gb2YgX19CLCBhbmQgaGlnaGVyIDEyOCBiaXRzIGNvbWUgZnJvbSBjb252ZXJzaW9uIG9mIF9fQS4Kc3RhdGljIF9faW5saW5lX18gX19tMjU2YmggX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2N2dG5lMnBzX3BiaChfX20yNTZiaCBfX1csIF9fbW1hc2sxNiBfX1UsIF9fbTI1NiBfX0EsIF9fbTI1NiBfX0IpIHsKICByZXR1cm4gKF9fbTI1NmJoKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMjU2KChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKV9tbTI1Nl9jdnRuZTJwc19wYmgoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKV9fVyk7Cn0KCi8vLyBDb252ZXJ0IFR3byBQYWNrZWQgU2luZ2xlIERhdGEgdG8gT25lIFBhY2tlZCBCRjE2IERhdGEuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNWVE5FMlBTMkJGMTYgPC9jPiBpbnN0cnVjdGlvbnMuCi8vLwovLy8gXHBhcmFtIF9fQQovLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4KLy8vIFxwYXJhbSBfX0IKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uCi8vLyBccGFyYW0gX19VCi8vLyAgICBBIDE2LWJpdCBtYXNrIHZhbHVlIHNwZWNpZnlpbmcgd2hhdCBpcyBjaG9zZW4gZm9yIGVhY2ggZWxlbWVudC4KLy8vICAgIEEgMSBtZWFucyBjb252ZXJzaW9uIG9mIF9fQSBvciBfX0IuIEEgMCBtZWFucyBlbGVtZW50IGlzIHplcm8uCi8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFsxNiB4IGJmbG9hdF0gd2hvc2UgbG93ZXIgMTI4IGJpdHMgY29tZSBmcm9tCi8vLyAgICBjb252ZXJzaW9uIG9mIF9fQiwgYW5kIGhpZ2hlciAxMjggYml0cyBjb21lIGZyb20gY29udmVyc2lvbiBvZiBfX0EuCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmJoIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfY3Z0bmUycHNfcGJoKF9fbW1hc2sxNiBfX1UsIF9fbTI1NiBfX0EsIF9fbTI1NiBfX0IpIHsKICByZXR1cm4gKF9fbTI1NmJoKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMjU2KChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKV9tbTI1Nl9jdnRuZTJwc19wYmgoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgovLy8gQ29udmVydCBQYWNrZWQgU2luZ2xlIERhdGEgdG8gUGFja2VkIEJGMTYgRGF0YS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ1ZUTkVQUzJCRjE2IDwvYz4gaW5zdHJ1Y3Rpb25zLgovLy8KLy8vIFxwYXJhbSBfX0EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggYmZsb2F0XSB3aG9zZSBsb3dlciA2NCBiaXRzIGNvbWUgZnJvbQovLy8gICAgY29udmVyc2lvbiBvZiBfX0EsIGFuZCBoaWdoZXIgNjQgYml0cyBhcmUgMC4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4YmggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9jdnRuZXBzX3BiaChfX20xMjggX19BKSB7CiAgcmV0dXJuIChfX20xMjhiaClfX2J1aWx0aW5faWEzMl9jdnRuZXBzMmJmMTZfMTI4X21hc2soKF9fdjRzZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX3VuZGVmaW5lZF9zaTEyOCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSk7Cn0KCi8vLyBDb252ZXJ0IFBhY2tlZCBTaW5nbGUgRGF0YSB0byBQYWNrZWQgQkYxNiBEYXRhLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDVlRORVBTMkJGMTYgPC9jPiBpbnN0cnVjdGlvbnMuCi8vLwovLy8gXHBhcmFtIF9fQQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4KLy8vIFxwYXJhbSBfX1cKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBiZmxvYXRdLgovLy8gXHBhcmFtIF9fVQovLy8gICAgQSA0LWJpdCBtYXNrIHZhbHVlIHNwZWNpZnlpbmcgd2hhdCBpcyBjaG9zZW4gZm9yIGVhY2ggZWxlbWVudC4KLy8vICAgIEEgMSBtZWFucyBjb252ZXJzaW9uIG9mIF9fQS4gQSAwIG1lYW5zIGVsZW1lbnQgZnJvbSBfX1cuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggYmZsb2F0XSB3aG9zZSBsb3dlciA2NCBiaXRzIGNvbWUgZnJvbQovLy8gICAgY29udmVyc2lvbiBvZiBfX0EsIGFuZCBoaWdoZXIgNjQgYml0cyBhcmUgMC4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4YmggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2N2dG5lcHNfcGJoKF9fbTEyOGJoIF9fVywgX19tbWFzazggX19VLCBfX20xMjggX19BKSB7CiAgcmV0dXJuIChfX20xMjhiaClfX2J1aWx0aW5faWEzMl9jdnRuZXBzMmJmMTZfMTI4X21hc2soKF9fdjRzZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX19XLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOClfX1UpOwp9CgovLy8gQ29udmVydCBQYWNrZWQgU2luZ2xlIERhdGEgdG8gUGFja2VkIEJGMTYgRGF0YS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ1ZUTkVQUzJCRjE2IDwvYz4gaW5zdHJ1Y3Rpb25zLgovLy8KLy8vIFxwYXJhbSBfX0EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uCi8vLyBccGFyYW0gX19VCi8vLyAgICBBIDQtYml0IG1hc2sgdmFsdWUgc3BlY2lmeWluZyB3aGF0IGlzIGNob3NlbiBmb3IgZWFjaCBlbGVtZW50LgovLy8gICAgQSAxIG1lYW5zIGNvbnZlcnNpb24gb2YgX19BLiBBIDAgbWVhbnMgZWxlbWVudCBpcyB6ZXJvLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGJmbG9hdF0gd2hvc2UgbG93ZXIgNjQgYml0cyBjb21lIGZyb20KLy8vICAgIGNvbnZlcnNpb24gb2YgX19BLCBhbmQgaGlnaGVyIDY0IGJpdHMgYXJlIDAuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGJoIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfY3Z0bmVwc19wYmgoX19tbWFzazggX19VLCBfX20xMjggX19BKSB7CiAgcmV0dXJuIChfX20xMjhiaClfX2J1aWx0aW5faWEzMl9jdnRuZXBzMmJmMTZfMTI4X21hc2soKF9fdjRzZikgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfbW1fc2V0emVyb19zaTEyOCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KV9fVSk7Cn0KCi8vLyBDb252ZXJ0IFBhY2tlZCBTaW5nbGUgRGF0YSB0byBQYWNrZWQgQkYxNiBEYXRhLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDVlRORVBTMkJGMTYgPC9jPiBpbnN0cnVjdGlvbnMuCi8vLwovLy8gXHBhcmFtIF9fQQovLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBiZmxvYXRdIGNvbWVzIGZyb20gY29udmVyc2lvbiBvZiBfX0EuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGJoIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfY3Z0bmVwc19wYmgoX19tMjU2IF9fQSkgewogIHJldHVybiAoX19tMTI4YmgpX19idWlsdGluX2lhMzJfY3Z0bmVwczJiZjE2XzI1Nl9tYXNrKChfX3Y4c2YpX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX3VuZGVmaW5lZF9zaTEyOCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSk7Cn0KCi8vLyBDb252ZXJ0IFBhY2tlZCBTaW5nbGUgRGF0YSB0byBQYWNrZWQgQkYxNiBEYXRhLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDVlRORVBTMkJGMTYgPC9jPiBpbnN0cnVjdGlvbnMuCi8vLwovLy8gXHBhcmFtIF9fQQovLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4KLy8vIFxwYXJhbSBfX1cKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBiZmxvYXRdLgovLy8gXHBhcmFtIF9fVQovLy8gICAgQSA4LWJpdCBtYXNrIHZhbHVlIHNwZWNpZnlpbmcgd2hhdCBpcyBjaG9zZW4gZm9yIGVhY2ggZWxlbWVudC4KLy8vICAgIEEgMSBtZWFucyBjb252ZXJzaW9uIG9mIF9fQS4gQSAwIG1lYW5zIGVsZW1lbnQgZnJvbSBfX1cuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggYmZsb2F0XSBjb21lcyBmcm9tIGNvbnZlcnNpb24gb2YgX19BLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhiaCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfY3Z0bmVwc19wYmgoX19tMTI4YmggX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NiBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGJoKV9fYnVpbHRpbl9pYTMyX2N2dG5lcHMyYmYxNl8yNTZfbWFzaygoX192OHNmKV9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9fVywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpX19VKTsKfQoKLy8vIENvbnZlcnQgUGFja2VkIFNpbmdsZSBEYXRhIHRvIFBhY2tlZCBCRjE2IERhdGEuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNWVE5FUFMyQkYxNiA8L2M+IGluc3RydWN0aW9ucy4KLy8vCi8vLyBccGFyYW0gX19BCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLgovLy8gXHBhcmFtIF9fVQovLy8gICAgQSA4LWJpdCBtYXNrIHZhbHVlIHNwZWNpZnlpbmcgd2hhdCBpcyBjaG9zZW4gZm9yIGVhY2ggZWxlbWVudC4KLy8vICAgIEEgMSBtZWFucyBjb252ZXJzaW9uIG9mIF9fQS4gQSAwIG1lYW5zIGVsZW1lbnQgaXMgemVyby4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBiZmxvYXRdIGNvbWVzIGZyb20gY29udmVyc2lvbiBvZiBfX0EuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGJoIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfY3Z0bmVwc19wYmgoX19tbWFzazggX19VLCBfX20yNTYgX19BKSB7CiAgcmV0dXJuIChfX20xMjhiaClfX2J1aWx0aW5faWEzMl9jdnRuZXBzMmJmMTZfMjU2X21hc2soKF9fdjhzZilfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9tbV9zZXR6ZXJvX3NpMTI4KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpX19VKTsKfQoKLy8vIERvdCBQcm9kdWN0IG9mIEJGMTYgUGFpcnMgQWNjdW11bGF0ZWQgaW50byBQYWNrZWQgU2luZ2xlIFByZWNpc2lvbi4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWRFBCRjE2UFMgPC9jPiBpbnN0cnVjdGlvbnMuCi8vLwovLy8gXHBhcmFtIF9fQQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGJmbG9hdF0uCi8vLyBccGFyYW0gX19CCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggYmZsb2F0XS4KLy8vIFxwYXJhbSBfX0QKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbWVzIGZyb20gIERvdCBQcm9kdWN0IG9mCi8vLyAgX19BLCBfX0IgYW5kIF9fRApzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9kcGJmMTZfcHMoX19tMTI4IF9fRCwgX19tMTI4YmggX19BLCBfX20xMjhiaCBfX0IpIHsKICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl9kcGJmMTZwc18xMjgoKF9fdjRzZilfX0QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9fQik7Cn0KCi8vLyBEb3QgUHJvZHVjdCBvZiBCRjE2IFBhaXJzIEFjY3VtdWxhdGVkIGludG8gUGFja2VkIFNpbmdsZSBQcmVjaXNpb24uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkRQQkYxNlBTIDwvYz4gaW5zdHJ1Y3Rpb25zLgovLy8KLy8vIFxwYXJhbSBfX0EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBiZmxvYXRdLgovLy8gXHBhcmFtIF9fQgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGJmbG9hdF0uCi8vLyBccGFyYW0gX19ECi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLgovLy8gXHBhcmFtIF9fVQovLy8gICAgQSA4LWJpdCBtYXNrIHZhbHVlIHNwZWNpZnlpbmcgd2hhdCBpcyBjaG9zZW4gZm9yIGVhY2ggZWxlbWVudC4KLy8vICAgIEEgMSBtZWFucyBfX0EgYW5kIF9fQidzIGRvdCBwcm9kdWN0IGFjY3VtdWxhdGVkIHdpdGggX19ELiBBIDAgbWVhbnMgX19ELgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb21lcyBmcm9tICBEb3QgUHJvZHVjdCBvZgovLy8gIF9fQSwgX19CIGFuZCBfX0QKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19kcGJmMTZfcHMoX19tMTI4IF9fRCwgX19tbWFzazggX19VLCBfX20xMjhiaCBfX0EsIF9fbTEyOGJoIF9fQikgewogIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfbW1fZHBiZjE2X3BzKF9fRCwgX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfX0QpOwp9CgovLy8gRG90IFByb2R1Y3Qgb2YgQkYxNiBQYWlycyBBY2N1bXVsYXRlZCBpbnRvIFBhY2tlZCBTaW5nbGUgUHJlY2lzaW9uLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZEUEJGMTZQUyA8L2M+IGluc3RydWN0aW9ucy4KLy8vCi8vLyBccGFyYW0gX19BCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggYmZsb2F0XS4KLy8vIFxwYXJhbSBfX0IKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBiZmxvYXRdLgovLy8gXHBhcmFtIF9fRAovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4KLy8vIFxwYXJhbSBfX1UKLy8vICAgIEEgOC1iaXQgbWFzayB2YWx1ZSBzcGVjaWZ5aW5nIHdoYXQgaXMgY2hvc2VuIGZvciBlYWNoIGVsZW1lbnQuCi8vLyAgICBBIDEgbWVhbnMgX19BIGFuZCBfX0IncyBkb3QgcHJvZHVjdCBhY2N1bXVsYXRlZCB3aXRoIF9fRC4gQSAwIG1lYW5zIDAuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbWVzIGZyb20gIERvdCBQcm9kdWN0IG9mCi8vLyAgX19BLCBfX0IgYW5kIF9fRApzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9kcGJmMTZfcHMoX19tbWFzazggX19VLCBfX20xMjggX19ELCBfX20xMjhiaCBfX0EsIF9fbTEyOGJoIF9fQikgewogIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfbW1fZHBiZjE2X3BzKF9fRCwgX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKLy8vIERvdCBQcm9kdWN0IG9mIEJGMTYgUGFpcnMgQWNjdW11bGF0ZWQgaW50byBQYWNrZWQgU2luZ2xlIFByZWNpc2lvbi4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWRFBCRjE2UFMgPC9jPiBpbnN0cnVjdGlvbnMuCi8vLwovLy8gXHBhcmFtIF9fQQovLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbMTYgeCBiZmxvYXRdLgovLy8gXHBhcmFtIF9fQgovLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbMTYgeCBiZmxvYXRdLgovLy8gXHBhcmFtIF9fRAovLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4KLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29tZXMgZnJvbSAgRG90IFByb2R1Y3Qgb2YKLy8vICBfX0EsIF9fQiBhbmQgX19ECnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2RwYmYxNl9wcyhfX20yNTYgX19ELCBfX20yNTZiaCBfX0EsIF9fbTI1NmJoIF9fQikgewogIHJldHVybiAoX19tMjU2KV9fYnVpbHRpbl9pYTMyX2RwYmYxNnBzXzI1NigoX192OHNmKV9fRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX19CKTsKfQoKLy8vIERvdCBQcm9kdWN0IG9mIEJGMTYgUGFpcnMgQWNjdW11bGF0ZWQgaW50byBQYWNrZWQgU2luZ2xlIFByZWNpc2lvbi4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWRFBCRjE2UFMgPC9jPiBpbnN0cnVjdGlvbnMuCi8vLwovLy8gXHBhcmFtIF9fQQovLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbMTYgeCBiZmxvYXRdLgovLy8gXHBhcmFtIF9fQgovLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbMTYgeCBiZmxvYXRdLgovLy8gXHBhcmFtIF9fRAovLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4KLy8vIFxwYXJhbSBfX1UKLy8vICAgIEEgMTYtYml0IG1hc2sgdmFsdWUgc3BlY2lmeWluZyB3aGF0IGlzIGNob3NlbiBmb3IgZWFjaCBlbGVtZW50LgovLy8gICAgQSAxIG1lYW5zIF9fQSBhbmQgX19CJ3MgZG90IHByb2R1Y3QgYWNjdW11bGF0ZWQgd2l0aCBfX0QuIEEgMCBtZWFucyBfX0QuCi8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbWVzIGZyb20gIERvdCBQcm9kdWN0IG9mCi8vLyAgX19BLCBfX0IgYW5kIF9fRApzdGF0aWMgX19pbmxpbmVfXyBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2RwYmYxNl9wcyhfX20yNTYgX19ELCBfX21tYXNrOCBfX1UsIF9fbTI1NmJoIF9fQSwgX19tMjU2YmggX19CKSB7CiAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKV9tbTI1Nl9kcGJmMTZfcHMoX19ELCBfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKV9fRCk7Cn0KCi8vLyBEb3QgUHJvZHVjdCBvZiBCRjE2IFBhaXJzIEFjY3VtdWxhdGVkIGludG8gUGFja2VkIFNpbmdsZSBQcmVjaXNpb24uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkRQQkYxNlBTIDwvYz4gaW5zdHJ1Y3Rpb25zLgovLy8KLy8vIFxwYXJhbSBfX0EKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzE2IHggYmZsb2F0XS4KLy8vIFxwYXJhbSBfX0IKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzE2IHggYmZsb2F0XS4KLy8vIFxwYXJhbSBfX0QKLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uCi8vLyBccGFyYW0gX19VCi8vLyAgICBBIDgtYml0IG1hc2sgdmFsdWUgc3BlY2lmeWluZyB3aGF0IGlzIGNob3NlbiBmb3IgZWFjaCBlbGVtZW50LgovLy8gICAgQSAxIG1lYW5zIF9fQSBhbmQgX19CJ3MgZG90IHByb2R1Y3QgYWNjdW11bGF0ZWQgd2l0aCBfX0QuIEEgMCBtZWFucyAwLgovLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb21lcyBmcm9tICBEb3QgUHJvZHVjdCBvZgovLy8gIF9fQSwgX19CIGFuZCBfX0QKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfZHBiZjE2X3BzKF9fbW1hc2s4IF9fVSwgX19tMjU2IF9fRCwgX19tMjU2YmggX19BLCBfX20yNTZiaCBfX0IpIHsKICByZXR1cm4gKF9fbTI1NilfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX21tMjU2X2RwYmYxNl9wcyhfX0QsIF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX21tMjU2X3NldHplcm9fc2kyNTYoKSk7Cn0KCi8vLyBDb252ZXJ0IE9uZSBTaW5nbGUgZmxvYXQgRGF0YSB0byBPbmUgQkYxNiBEYXRhLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDVlRORVBTMkJGMTYgPC9jPiBpbnN0cnVjdGlvbnMuCi8vLwovLy8gXHBhcmFtIF9fQQovLy8gICAgQSBmbG9hdCBkYXRhLgovLy8gXHJldHVybnMgQSBiZjE2IGRhdGEgd2hvc2Ugc2lnbiBmaWVsZCBhbmQgZXhwb25lbnQgZmllbGQga2VlcCB1bmNoYW5nZWQsCi8vLyAgICBhbmQgZnJhY3Rpb24gZmllbGQgaXMgdHJ1bmNhdGVkIHRvIDcgYml0cy4Kc3RhdGljIF9faW5saW5lX18gX19iZmxvYXQxNiBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tX2N2dG5lc3Nfc2JoKGZsb2F0IF9fQSkgewogIF9fdjRzZiBfX1YgPSB7X19BLCAwLCAwLCAwfTsKICBfX3Y4aGkgX19SID0gX19idWlsdGluX2lhMzJfY3Z0bmVwczJiZjE2XzEyOF9tYXNrKAogICAgICAoX192NHNmKV9fViwgKF9fdjhoaSlfbW1fdW5kZWZpbmVkX3NpMTI4KCksIChfX21tYXNrOCktMSk7CiAgcmV0dXJuIF9fUlswXTsKfQoKLy8vIENvbnZlcnQgUGFja2VkIEJGMTYgRGF0YSB0byBQYWNrZWQgZmxvYXQgRGF0YS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gXHBhcmFtIF9fQQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGJmbG9hdF0uCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbWUgZnJvbSBjb252ZXJzaW9uIG9mIF9fQQpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9jdnRwYmhfcHMoX19tMTI4YmggX19BKSB7CiAgcmV0dXJuIF9tbV9jYXN0c2kxMjhfcHMoCiAgICAgIChfX20xMjhpKV9tbV9zbGxpX2VwaTMyKChfX20xMjhpKV9tbV9jdnRlcGkxNl9lcGkzMigoX19tMTI4aSlfX0EpLCAxNikpOwp9CgovLy8gQ29udmVydCBQYWNrZWQgQkYxNiBEYXRhIHRvIFBhY2tlZCBmbG9hdCBEYXRhLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBccGFyYW0gX19BCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggYmZsb2F0XS4KLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29tZSBmcm9tIGNvbnZlcnNpb24gb2YgX19BCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYgX21tMjU2X2N2dHBiaF9wcyhfX20xMjhiaCBfX0EpIHsKICByZXR1cm4gX21tMjU2X2Nhc3RzaTI1Nl9wcygoX19tMjU2aSlfbW0yNTZfc2xsaV9lcGkzMigKICAgICAgKF9fbTI1NmkpX21tMjU2X2N2dGVwaTE2X2VwaTMyKChfX20xMjhpKV9fQSksIDE2KSk7Cn0KCi8vLyBDb252ZXJ0IFBhY2tlZCBCRjE2IERhdGEgdG8gUGFja2VkIGZsb2F0IERhdGEgdXNpbmcgemVyb2luZyBtYXNrLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBccGFyYW0gX19VCi8vLyAgICBBIDQtYml0IG1hc2suIEVsZW1lbnRzIGFyZSB6ZXJvZWQgb3V0IHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgbWFzawovLy8gICAgYml0IGlzIG5vdCBzZXQuCi8vLyBccGFyYW0gX19BCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggYmZsb2F0XS4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29tZSBmcm9tIGNvbnZlcnNpb24gb2YgX19BCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2N2dHBiaF9wcyhfX21tYXNrOCBfX1UsIF9fbTEyOGJoIF9fQSkgewogIHJldHVybiBfbW1fY2FzdHNpMTI4X3BzKChfX20xMjhpKV9tbV9zbGxpX2VwaTMyKAogICAgICAoX19tMTI4aSlfbW1fbWFza3pfY3Z0ZXBpMTZfZXBpMzIoKF9fbW1hc2s4KV9fVSwgKF9fbTEyOGkpX19BKSwgMTYpKTsKfQoKLy8vIENvbnZlcnQgUGFja2VkIEJGMTYgRGF0YSB0byBQYWNrZWQgZmxvYXQgRGF0YSB1c2luZyB6ZXJvaW5nIG1hc2suCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFxwYXJhbSBfX1UKLy8vICAgIEEgOC1iaXQgbWFzay4gRWxlbWVudHMgYXJlIHplcm9lZCBvdXQgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBtYXNrCi8vLyAgICBiaXQgaXMgbm90IHNldC4KLy8vIFxwYXJhbSBfX0EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBiZmxvYXRdLgovLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb21lIGZyb20gY29udmVyc2lvbiBvZiBfX0EKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfY3Z0cGJoX3BzKF9fbW1hc2s4IF9fVSwgX19tMTI4YmggX19BKSB7CiAgcmV0dXJuIF9tbTI1Nl9jYXN0c2kyNTZfcHMoKF9fbTI1NmkpX21tMjU2X3NsbGlfZXBpMzIoCiAgICAgIChfX20yNTZpKV9tbTI1Nl9tYXNrel9jdnRlcGkxNl9lcGkzMigoX19tbWFzazgpX19VLCAoX19tMTI4aSlfX0EpLCAxNikpOwp9CgovLy8gQ29udmVydCBQYWNrZWQgQkYxNiBEYXRhIHRvIFBhY2tlZCBmbG9hdCBEYXRhIHVzaW5nIG1lcmdpbmcgbWFzay4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gXHBhcmFtIF9fUwovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gRWxlbWVudHMgYXJlIGNvcGllZCBmcm9tIF9fUyB3aGVuCi8vLyAgICAgdGhlIGNvcnJlc3BvbmRpbmcgbWFzayBiaXQgaXMgbm90IHNldC4KLy8vIFxwYXJhbSBfX1UKLy8vICAgIEEgNC1iaXQgbWFzay4gRWxlbWVudHMgYXJlIHplcm9lZCBvdXQgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBtYXNrCi8vLyAgICBiaXQgaXMgbm90IHNldC4KLy8vIFxwYXJhbSBfX0EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBiZmxvYXRdLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb21lIGZyb20gY29udmVyc2lvbiBvZiBfX0EKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19jdnRwYmhfcHMoX19tMTI4IF9fUywgX19tbWFzazggX19VLCBfX20xMjhiaCBfX0EpIHsKICByZXR1cm4gX21tX2Nhc3RzaTEyOF9wcygoX19tMTI4aSlfbW1fbWFza19zbGxpX2VwaTMyKAogICAgICAoX19tMTI4aSlfX1MsIChfX21tYXNrOClfX1UsIChfX20xMjhpKV9tbV9jdnRlcGkxNl9lcGkzMigoX19tMTI4aSlfX0EpLAogICAgICAxNikpOwp9CgovLy8gQ29udmVydCBQYWNrZWQgQkYxNiBEYXRhIHRvIFBhY2tlZCBmbG9hdCBEYXRhIHVzaW5nIG1lcmdpbmcgbWFzay4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gXHBhcmFtIF9fUwovLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4gRWxlbWVudHMgYXJlIGNvcGllZCBmcm9tIF9fUyB3aGVuCi8vLyAgICAgdGhlIGNvcnJlc3BvbmRpbmcgbWFzayBiaXQgaXMgbm90IHNldC4KLy8vIFxwYXJhbSBfX1UKLy8vICAgIEEgOC1iaXQgbWFzay4gRWxlbWVudHMgYXJlIHplcm9lZCBvdXQgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBtYXNrCi8vLyAgICBiaXQgaXMgbm90IHNldC4KLy8vIFxwYXJhbSBfX0EKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBiZmxvYXRdLgovLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb21lIGZyb20gY29udmVyc2lvbiBvZiBfX0EKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19jdnRwYmhfcHMoX19tMjU2IF9fUywgX19tbWFzazggX19VLCBfX20xMjhiaCBfX0EpIHsKICByZXR1cm4gX21tMjU2X2Nhc3RzaTI1Nl9wcygoX19tMjU2aSlfbW0yNTZfbWFza19zbGxpX2VwaTMyKAogICAgICAoX19tMjU2aSlfX1MsIChfX21tYXNrOClfX1UsIChfX20yNTZpKV9tbTI1Nl9jdnRlcGkxNl9lcGkzMigoX19tMTI4aSlfX0EpLAogICAgICAxNikpOwp9CgojdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTMTI4CiN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKCiNlbmRpZgoAYXZ4NTEydnBvcGNudGRxaW50cmluLmgAY2xkZW1vdGVpbnRyaW4uaAAvKj09PS0tLS0gZm1haW50cmluLmggLSBGTUEgaW50cmluc2ljcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqCiAqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCiAqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCgojaWZuZGVmIF9fSU1NSU5UUklOX0gKI2Vycm9yICJOZXZlciB1c2UgPGZtYWludHJpbi5oPiBkaXJlY3RseTsgaW5jbHVkZSA8aW1taW50cmluLmg+IGluc3RlYWQuIgojZW5kaWYKCiNpZm5kZWYgX19GTUFJTlRSSU5fSAojZGVmaW5lIF9fRk1BSU5UUklOX0gKCi8qIERlZmluZSB0aGUgZGVmYXVsdCBhdHRyaWJ1dGVzIGZvciB0aGUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZS4gKi8KI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJmbWEiKSwgX19taW5fdmVjdG9yX3dpZHRoX18oMTI4KSkpCiNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTMjU2IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygiZm1hIiksIF9fbWluX3ZlY3Rvcl93aWR0aF9fKDI1NikpKQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fZm1hZGRfcHMoX19tMTI4IF9fQSwgX19tMTI4IF9fQiwgX19tMTI4IF9fQykKewogIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBzKChfX3Y0c2YpX19BLCAoX192NHNmKV9fQiwgKF9fdjRzZilfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fZm1hZGRfcGQoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CLCBfX20xMjhkIF9fQykKewogIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl92Zm1hZGRwZCgoX192MmRmKV9fQSwgKF9fdjJkZilfX0IsIChfX3YyZGYpX19DKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fZm1hZGRfc3MoX19tMTI4IF9fQSwgX19tMTI4IF9fQiwgX19tMTI4IF9fQykKewogIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHNzMygoX192NHNmKV9fQSwgKF9fdjRzZilfX0IsIChfX3Y0c2YpX19DKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX2ZtYWRkX3NkKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQiwgX19tMTI4ZCBfX0MpCnsKICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfdmZtYWRkc2QzKChfX3YyZGYpX19BLCAoX192MmRmKV9fQiwgKF9fdjJkZilfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9mbXN1Yl9wcyhfX20xMjggX19BLCBfX20xMjggX19CLCBfX20xMjggX19DKQp7CiAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfdmZtYWRkcHMoKF9fdjRzZilfX0EsIChfX3Y0c2YpX19CLCAtKF9fdjRzZilfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fZm1zdWJfcGQoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CLCBfX20xMjhkIF9fQykKewogIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl92Zm1hZGRwZCgoX192MmRmKV9fQSwgKF9fdjJkZilfX0IsIC0oX192MmRmKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX2Ztc3ViX3NzKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IsIF9fbTEyOCBfX0MpCnsKICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl92Zm1hZGRzczMoKF9fdjRzZilfX0EsIChfX3Y0c2YpX19CLCAtKF9fdjRzZilfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fZm1zdWJfc2QoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CLCBfX20xMjhkIF9fQykKewogIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl92Zm1hZGRzZDMoKF9fdjJkZilfX0EsIChfX3YyZGYpX19CLCAtKF9fdjJkZilfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9mbm1hZGRfcHMoX19tMTI4IF9fQSwgX19tMTI4IF9fQiwgX19tMTI4IF9fQykKewogIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBzKC0oX192NHNmKV9fQSwgKF9fdjRzZilfX0IsIChfX3Y0c2YpX19DKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX2ZubWFkZF9wZChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IsIF9fbTEyOGQgX19DKQp7CiAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBkKC0oX192MmRmKV9fQSwgKF9fdjJkZilfX0IsIChfX3YyZGYpX19DKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fZm5tYWRkX3NzKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IsIF9fbTEyOCBfX0MpCnsKICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl92Zm1hZGRzczMoKF9fdjRzZilfX0EsIC0oX192NHNmKV9fQiwgKF9fdjRzZilfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fZm5tYWRkX3NkKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQiwgX19tMTI4ZCBfX0MpCnsKICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfdmZtYWRkc2QzKChfX3YyZGYpX19BLCAtKF9fdjJkZilfX0IsIChfX3YyZGYpX19DKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fZm5tc3ViX3BzKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IsIF9fbTEyOCBfX0MpCnsKICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl92Zm1hZGRwcygtKF9fdjRzZilfX0EsIChfX3Y0c2YpX19CLCAtKF9fdjRzZilfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fZm5tc3ViX3BkKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQiwgX19tMTI4ZCBfX0MpCnsKICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfdmZtYWRkcGQoLShfX3YyZGYpX19BLCAoX192MmRmKV9fQiwgLShfX3YyZGYpX19DKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fZm5tc3ViX3NzKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IsIF9fbTEyOCBfX0MpCnsKICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl92Zm1hZGRzczMoKF9fdjRzZilfX0EsIC0oX192NHNmKV9fQiwgLShfX3Y0c2YpX19DKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX2ZubXN1Yl9zZChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IsIF9fbTEyOGQgX19DKQp7CiAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHNkMygoX192MmRmKV9fQSwgLShfX3YyZGYpX19CLCAtKF9fdjJkZilfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9mbWFkZHN1Yl9wcyhfX20xMjggX19BLCBfX20xMjggX19CLCBfX20xMjggX19DKQp7CiAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfdmZtYWRkc3VicHMoKF9fdjRzZilfX0EsIChfX3Y0c2YpX19CLCAoX192NHNmKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9mbWFkZHN1Yl9wZChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IsIF9fbTEyOGQgX19DKQp7CiAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHN1YnBkKChfX3YyZGYpX19BLCAoX192MmRmKV9fQiwgKF9fdjJkZilfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9mbXN1YmFkZF9wcyhfX20xMjggX19BLCBfX20xMjggX19CLCBfX20xMjggX19DKQp7CiAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfdmZtYWRkc3VicHMoKF9fdjRzZilfX0EsIChfX3Y0c2YpX19CLCAtKF9fdjRzZilfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fZm1zdWJhZGRfcGQoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CLCBfX20xMjhkIF9fQykKewogIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl92Zm1hZGRzdWJwZCgoX192MmRmKV9fQSwgKF9fdjJkZilfX0IsIC0oX192MmRmKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2ZtYWRkX3BzKF9fbTI1NiBfX0EsIF9fbTI1NiBfX0IsIF9fbTI1NiBfX0MpCnsKICByZXR1cm4gKF9fbTI1NilfX2J1aWx0aW5faWEzMl92Zm1hZGRwczI1NigoX192OHNmKV9fQSwgKF9fdjhzZilfX0IsIChfX3Y4c2YpX19DKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2ZtYWRkX3BkKF9fbTI1NmQgX19BLCBfX20yNTZkIF9fQiwgX19tMjU2ZCBfX0MpCnsKICByZXR1cm4gKF9fbTI1NmQpX19idWlsdGluX2lhMzJfdmZtYWRkcGQyNTYoKF9fdjRkZilfX0EsIChfX3Y0ZGYpX19CLCAoX192NGRmKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2Ztc3ViX3BzKF9fbTI1NiBfX0EsIF9fbTI1NiBfX0IsIF9fbTI1NiBfX0MpCnsKICByZXR1cm4gKF9fbTI1NilfX2J1aWx0aW5faWEzMl92Zm1hZGRwczI1NigoX192OHNmKV9fQSwgKF9fdjhzZilfX0IsIC0oX192OHNmKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9mbXN1Yl9wZChfX20yNTZkIF9fQSwgX19tMjU2ZCBfX0IsIF9fbTI1NmQgX19DKQp7CiAgcmV0dXJuIChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBkMjU2KChfX3Y0ZGYpX19BLCAoX192NGRmKV9fQiwgLShfX3Y0ZGYpX19DKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfZm5tYWRkX3BzKF9fbTI1NiBfX0EsIF9fbTI1NiBfX0IsIF9fbTI1NiBfX0MpCnsKICByZXR1cm4gKF9fbTI1NilfX2J1aWx0aW5faWEzMl92Zm1hZGRwczI1NigtKF9fdjhzZilfX0EsIChfX3Y4c2YpX19CLCAoX192OHNmKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9mbm1hZGRfcGQoX19tMjU2ZCBfX0EsIF9fbTI1NmQgX19CLCBfX20yNTZkIF9fQykKewogIHJldHVybiAoX19tMjU2ZClfX2J1aWx0aW5faWEzMl92Zm1hZGRwZDI1NigtKF9fdjRkZilfX0EsIChfX3Y0ZGYpX19CLCAoX192NGRmKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2ZubXN1Yl9wcyhfX20yNTYgX19BLCBfX20yNTYgX19CLCBfX20yNTYgX19DKQp7CiAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2lhMzJfdmZtYWRkcHMyNTYoLShfX3Y4c2YpX19BLCAoX192OHNmKV9fQiwgLShfX3Y4c2YpX19DKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2ZubXN1Yl9wZChfX20yNTZkIF9fQSwgX19tMjU2ZCBfX0IsIF9fbTI1NmQgX19DKQp7CiAgcmV0dXJuIChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBkMjU2KC0oX192NGRmKV9fQSwgKF9fdjRkZilfX0IsIC0oX192NGRmKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2ZtYWRkc3ViX3BzKF9fbTI1NiBfX0EsIF9fbTI1NiBfX0IsIF9fbTI1NiBfX0MpCnsKICByZXR1cm4gKF9fbTI1NilfX2J1aWx0aW5faWEzMl92Zm1hZGRzdWJwczI1NigoX192OHNmKV9fQSwgKF9fdjhzZilfX0IsIChfX3Y4c2YpX19DKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2ZtYWRkc3ViX3BkKF9fbTI1NmQgX19BLCBfX20yNTZkIF9fQiwgX19tMjU2ZCBfX0MpCnsKICByZXR1cm4gKF9fbTI1NmQpX19idWlsdGluX2lhMzJfdmZtYWRkc3VicGQyNTYoKF9fdjRkZilfX0EsIChfX3Y0ZGYpX19CLCAoX192NGRmKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2Ztc3ViYWRkX3BzKF9fbTI1NiBfX0EsIF9fbTI1NiBfX0IsIF9fbTI1NiBfX0MpCnsKICByZXR1cm4gKF9fbTI1NilfX2J1aWx0aW5faWEzMl92Zm1hZGRzdWJwczI1NigoX192OHNmKV9fQSwgKF9fdjhzZilfX0IsIC0oX192OHNmKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9mbXN1YmFkZF9wZChfX20yNTZkIF9fQSwgX19tMjU2ZCBfX0IsIF9fbTI1NmQgX19DKQp7CiAgcmV0dXJuIChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHN1YnBkMjU2KChfX3Y0ZGYpX19BLCAoX192NGRmKV9fQiwgLShfX3Y0ZGYpX19DKTsKfQoKI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUzEyOAojdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2CgojZW5kaWYgLyogX19GTUFJTlRSSU5fSCAqLwoALy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KLy8KLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KLy8KLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KLy8gQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZmlsZSwgZG8gbm90IGVkaXQhCi8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCgoKCiNpZm5kZWYgX19IRVhBR09OX1BST1RPU19IXwojZGVmaW5lIF9fSEVYQUdPTl9QUk9UT1NfSF8gMQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPWFicyhSczMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2Fic19SKFdvcmQzMiBScykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2Fic19SIF9fYnVpbHRpbl9IRVhBR09OX0EyX2FicwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj1hYnMoUnNzMzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfYWJzX1AoV29yZDY0IFJzcykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX2Fic19QIF9fYnVpbHRpbl9IRVhBR09OX0EyX2Fic3AKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1hYnMoUnMzMik6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfYWJzX1Jfc2F0KFdvcmQzMiBScykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2Fic19SX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9BMl9hYnNzYXQKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1hZGQoUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2FkZF9SUihXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFUzMl8zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2FkZF9SUiBfX2J1aWx0aW5fSEVYQUdPTl9BMl9hZGQKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1hZGQoUnQzMi5oLFJzMzIuaCk6PDwxNgogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2FkZF9SaFJoX3MxNihXb3JkMzIgUnQsIFdvcmQzMiBScykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2FkZF9SaFJoX3MxNiBfX2J1aWx0aW5fSEVYQUdPTl9BMl9hZGRoX2gxNl9oaAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPWFkZChSdDMyLmgsUnMzMi5sKTo8PDE2CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfYWRkX1JoUmxfczE2KFdvcmQzMiBSdCwgV29yZDMyIFJzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfYWRkX1JoUmxfczE2IF9fYnVpbHRpbl9IRVhBR09OX0EyX2FkZGhfaDE2X2hsCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9YWRkKFJ0MzIubCxSczMyLmgpOjw8MTYKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9hZGRfUmxSaF9zMTYoV29yZDMyIFJ0LCBXb3JkMzIgUnMpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9hZGRfUmxSaF9zMTYgX19idWlsdGluX0hFWEFHT05fQTJfYWRkaF9oMTZfbGgKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1hZGQoUnQzMi5sLFJzMzIubCk6PDwxNgogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2FkZF9SbFJsX3MxNihXb3JkMzIgUnQsIFdvcmQzMiBScykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2FkZF9SbFJsX3MxNiBfX2J1aWx0aW5fSEVYQUdPTl9BMl9hZGRoX2gxNl9sbAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPWFkZChSdDMyLmgsUnMzMi5oKTpzYXQ6PDwxNgogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2FkZF9SaFJoX3NhdF9zMTYoV29yZDMyIFJ0LCBXb3JkMzIgUnMpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9hZGRfUmhSaF9zYXRfczE2IF9fYnVpbHRpbl9IRVhBR09OX0EyX2FkZGhfaDE2X3NhdF9oaAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPWFkZChSdDMyLmgsUnMzMi5sKTpzYXQ6PDwxNgogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2FkZF9SaFJsX3NhdF9zMTYoV29yZDMyIFJ0LCBXb3JkMzIgUnMpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9hZGRfUmhSbF9zYXRfczE2IF9fYnVpbHRpbl9IRVhBR09OX0EyX2FkZGhfaDE2X3NhdF9obAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPWFkZChSdDMyLmwsUnMzMi5oKTpzYXQ6PDwxNgogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2FkZF9SbFJoX3NhdF9zMTYoV29yZDMyIFJ0LCBXb3JkMzIgUnMpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9hZGRfUmxSaF9zYXRfczE2IF9fYnVpbHRpbl9IRVhBR09OX0EyX2FkZGhfaDE2X3NhdF9saAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPWFkZChSdDMyLmwsUnMzMi5sKTpzYXQ6PDwxNgogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2FkZF9SbFJsX3NhdF9zMTYoV29yZDMyIFJ0LCBXb3JkMzIgUnMpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9hZGRfUmxSbF9zYXRfczE2IF9fYnVpbHRpbl9IRVhBR09OX0EyX2FkZGhfaDE2X3NhdF9sbAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPWFkZChSdDMyLmwsUnMzMi5oKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2FkZF9SbFJoKFdvcmQzMiBSdCwgV29yZDMyIFJzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfYWRkX1JsUmggX19idWlsdGluX0hFWEFHT05fQTJfYWRkaF9sMTZfaGwKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1hZGQoUnQzMi5sLFJzMzIubCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9hZGRfUmxSbChXb3JkMzIgUnQsIFdvcmQzMiBScykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2FkZF9SbFJsIF9fYnVpbHRpbl9IRVhBR09OX0EyX2FkZGhfbDE2X2xsCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9YWRkKFJ0MzIubCxSczMyLmgpOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2FkZF9SbFJoX3NhdChXb3JkMzIgUnQsIFdvcmQzMiBScykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2FkZF9SbFJoX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9BMl9hZGRoX2wxNl9zYXRfaGwKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1hZGQoUnQzMi5sLFJzMzIubCk6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfYWRkX1JsUmxfc2F0KFdvcmQzMiBSdCwgV29yZDMyIFJzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfYWRkX1JsUmxfc2F0IF9fYnVpbHRpbl9IRVhBR09OX0EyX2FkZGhfbDE2X3NhdF9sbAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPWFkZChSczMyLCNzMTYpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfYWRkX1JJKFdvcmQzMiBScywgV29yZDMyIElzMTYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVMzJfQURESQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfYWRkX1JJIF9fYnVpbHRpbl9IRVhBR09OX0EyX2FkZGkKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9YWRkKFJzczMyLFJ0dDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX2FkZF9QUChXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfYWRkX1BQIF9fYnVpbHRpbl9IRVhBR09OX0EyX2FkZHAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9YWRkKFJzczMyLFJ0dDMyKTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9hZGRfUFBfc2F0KFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9hZGRfUFBfc2F0IF9fYnVpbHRpbl9IRVhBR09OX0EyX2FkZHBzYXQKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1hZGQoUnMzMixSdDMyKTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9hZGRfUlJfc2F0KFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTMyXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfYWRkX1JSX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9BMl9hZGRzYXQKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9YWRkKFJzMzIsUnR0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfYWRkX1JQKFdvcmQzMiBScywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfYWRkX1JQIF9fYnVpbHRpbl9IRVhBR09OX0EyX2FkZHNwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9YW5kKFJzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9hbmRfUlIoV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVMzJfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9hbmRfUlIgX19idWlsdGluX0hFWEFHT05fQTJfYW5kCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9YW5kKFJzMzIsI3MxMCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9hbmRfUkkoV29yZDMyIFJzLCBXb3JkMzIgSXMxMCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFUzMl8yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2FuZF9SSSBfX2J1aWx0aW5fSEVYQUdPTl9BMl9hbmRpcgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj1hbmQoUnNzMzIsUnR0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfYW5kX1BQKFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9hbmRfUFAgX19idWlsdGluX0hFWEFHT05fQTJfYW5kcAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPWFzbGgoUnMzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9hc2xoX1IoV29yZDMyIFJzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTMyXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfYXNsaF9SIF9fYnVpbHRpbl9IRVhBR09OX0EyX2FzbGgKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1hc3JoKFJzMzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfYXNyaF9SKFdvcmQzMiBScykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFUzMl8yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2FzcmhfUiBfX2J1aWx0aW5fSEVYQUdPTl9BMl9hc3JoCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9Y29tYmluZShSdDMyLmgsUnMzMi5oKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2NvbWJpbmVfUmhSaChXb3JkMzIgUnQsIFdvcmQzMiBScykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFUzMl8zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2NvbWJpbmVfUmhSaCBfX2J1aWx0aW5fSEVYQUdPTl9BMl9jb21iaW5lX2hoCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9Y29tYmluZShSdDMyLmgsUnMzMi5sKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2NvbWJpbmVfUmhSbChXb3JkMzIgUnQsIFdvcmQzMiBScykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFUzMl8zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2NvbWJpbmVfUmhSbCBfX2J1aWx0aW5fSEVYQUdPTl9BMl9jb21iaW5lX2hsCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9Y29tYmluZShSdDMyLmwsUnMzMi5oKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2NvbWJpbmVfUmxSaChXb3JkMzIgUnQsIFdvcmQzMiBScykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFUzMl8zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2NvbWJpbmVfUmxSaCBfX2J1aWx0aW5fSEVYQUdPTl9BMl9jb21iaW5lX2xoCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9Y29tYmluZShSdDMyLmwsUnMzMi5sKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2NvbWJpbmVfUmxSbChXb3JkMzIgUnQsIFdvcmQzMiBScykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFUzMl8zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2NvbWJpbmVfUmxSbCBfX2J1aWx0aW5fSEVYQUdPTl9BMl9jb21iaW5lX2xsCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPWNvbWJpbmUoI3M4LCNTOCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9jb21iaW5lX0lJKFdvcmQzMiBJczgsIFdvcmQzMiBJUzgpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVMzJfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9jb21iaW5lX0lJIF9fYnVpbHRpbl9IRVhBR09OX0EyX2NvbWJpbmVpaQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj1jb21iaW5lKFJzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9jb21iaW5lX1JSKFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTMyXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfY29tYmluZV9SUiBfX2J1aWx0aW5fSEVYQUdPTl9BMl9jb21iaW5ldwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPW1heChSczMyLFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfbWF4X1JSKFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfbWF4X1JSIF9fYnVpbHRpbl9IRVhBR09OX0EyX21heAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj1tYXgoUnNzMzIsUnR0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfbWF4X1BQKFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9tYXhfUFAgX19idWlsdGluX0hFWEFHT05fQTJfbWF4cAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPW1heHUoUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFVXb3JkMzIgUTZfUl9tYXh1X1JSKFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfbWF4dV9SUiBfX2J1aWx0aW5fSEVYQUdPTl9BMl9tYXh1CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPW1heHUoUnNzMzIsUnR0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogVVdvcmQ2NCBRNl9QX21heHVfUFAoV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX21heHVfUFAgX19idWlsdGluX0hFWEFHT05fQTJfbWF4dXAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1taW4oUnQzMixSczMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX21pbl9SUihXb3JkMzIgUnQsIFdvcmQzMiBScykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21pbl9SUiBfX2J1aWx0aW5fSEVYQUdPTl9BMl9taW4KCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9bWluKFJ0dDMyLFJzczMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX21pbl9QUChXb3JkNjQgUnR0LCBXb3JkNjQgUnNzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfbWluX1BQIF9fYnVpbHRpbl9IRVhBR09OX0EyX21pbnAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1taW51KFJ0MzIsUnMzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBVV29yZDMyIFE2X1JfbWludV9SUihXb3JkMzIgUnQsIFdvcmQzMiBScykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21pbnVfUlIgX19idWlsdGluX0hFWEFHT05fQTJfbWludQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj1taW51KFJ0dDMyLFJzczMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFVXb3JkNjQgUTZfUF9taW51X1BQKFdvcmQ2NCBSdHQsIFdvcmQ2NCBSc3MpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9taW51X1BQIF9fYnVpbHRpbl9IRVhBR09OX0EyX21pbnVwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9bmVnKFJzMzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfbmVnX1IoV29yZDMyIFJzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTMyXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfbmVnX1IgX19idWlsdGluX0hFWEFHT05fQTJfbmVnCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPW5lZyhSc3MzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9uZWdfUChXb3JkNjQgUnNzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfbmVnX1AgX19idWlsdGluX0hFWEFHT05fQTJfbmVncAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPW5lZyhSczMyKTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9uZWdfUl9zYXQoV29yZDMyIFJzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfbmVnX1Jfc2F0IF9fYnVpbHRpbl9IRVhBR09OX0EyX25lZ3NhdAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPW5vdChSczMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX25vdF9SKFdvcmQzMiBScykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFUzMl8yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX25vdF9SIF9fYnVpbHRpbl9IRVhBR09OX0EyX25vdAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj1ub3QoUnNzMzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1Bfbm90X1AoV29yZDY0IFJzcykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX25vdF9QIF9fYnVpbHRpbl9IRVhBR09OX0EyX25vdHAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1vcihSczMyLFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1Jfb3JfUlIoV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVMzJfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9vcl9SUiBfX2J1aWx0aW5fSEVYQUdPTl9BMl9vcgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPW9yKFJzMzIsI3MxMCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9vcl9SSShXb3JkMzIgUnMsIFdvcmQzMiBJczEwKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTMyXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Jfb3JfUkkgX19idWlsdGluX0hFWEFHT05fQTJfb3JpcgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj1vcihSc3MzMixSdHQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9vcl9QUChXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Bfb3JfUFAgX19idWlsdGluX0hFWEFHT05fQTJfb3JwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9cm91bmQoUnNzMzIpOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX3JvdW5kX1Bfc2F0KFdvcmQ2NCBSc3MpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9yb3VuZF9QX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9BMl9yb3VuZHNhdAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPXNhdChSc3MzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9zYXRfUChXb3JkNjQgUnNzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Jfc2F0X1AgX19idWlsdGluX0hFWEFHT05fQTJfc2F0CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9c2F0YihSczMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX3NhdGJfUihXb3JkMzIgUnMpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9zYXRiX1IgX19idWlsdGluX0hFWEFHT05fQTJfc2F0YgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPXNhdGgoUnMzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9zYXRoX1IoV29yZDMyIFJzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Jfc2F0aF9SIF9fYnVpbHRpbl9IRVhBR09OX0EyX3NhdGgKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1zYXR1YihSczMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX3NhdHViX1IoV29yZDMyIFJzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Jfc2F0dWJfUiBfX2J1aWx0aW5fSEVYQUdPTl9BMl9zYXR1YgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPXNhdHVoKFJzMzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1Jfc2F0dWhfUihXb3JkMzIgUnMpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9zYXR1aF9SIF9fYnVpbHRpbl9IRVhBR09OX0EyX3NhdHVoCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9c3ViKFJ0MzIsUnMzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9zdWJfUlIoV29yZDMyIFJ0LCBXb3JkMzIgUnMpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVMzJfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9zdWJfUlIgX19idWlsdGluX0hFWEFHT05fQTJfc3ViCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9c3ViKFJ0MzIuaCxSczMyLmgpOjw8MTYKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9zdWJfUmhSaF9zMTYoV29yZDMyIFJ0LCBXb3JkMzIgUnMpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9zdWJfUmhSaF9zMTYgX19idWlsdGluX0hFWEFHT05fQTJfc3ViaF9oMTZfaGgKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1zdWIoUnQzMi5oLFJzMzIubCk6PDwxNgogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX3N1Yl9SaFJsX3MxNihXb3JkMzIgUnQsIFdvcmQzMiBScykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX3N1Yl9SaFJsX3MxNiBfX2J1aWx0aW5fSEVYQUdPTl9BMl9zdWJoX2gxNl9obAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPXN1YihSdDMyLmwsUnMzMi5oKTo8PDE2CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1Jfc3ViX1JsUmhfczE2KFdvcmQzMiBSdCwgV29yZDMyIFJzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Jfc3ViX1JsUmhfczE2IF9fYnVpbHRpbl9IRVhBR09OX0EyX3N1YmhfaDE2X2xoCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9c3ViKFJ0MzIubCxSczMyLmwpOjw8MTYKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9zdWJfUmxSbF9zMTYoV29yZDMyIFJ0LCBXb3JkMzIgUnMpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9zdWJfUmxSbF9zMTYgX19idWlsdGluX0hFWEFHT05fQTJfc3ViaF9oMTZfbGwKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1zdWIoUnQzMi5oLFJzMzIuaCk6c2F0Ojw8MTYKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9zdWJfUmhSaF9zYXRfczE2KFdvcmQzMiBSdCwgV29yZDMyIFJzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Jfc3ViX1JoUmhfc2F0X3MxNiBfX2J1aWx0aW5fSEVYQUdPTl9BMl9zdWJoX2gxNl9zYXRfaGgKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1zdWIoUnQzMi5oLFJzMzIubCk6c2F0Ojw8MTYKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9zdWJfUmhSbF9zYXRfczE2KFdvcmQzMiBSdCwgV29yZDMyIFJzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Jfc3ViX1JoUmxfc2F0X3MxNiBfX2J1aWx0aW5fSEVYQUdPTl9BMl9zdWJoX2gxNl9zYXRfaGwKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1zdWIoUnQzMi5sLFJzMzIuaCk6c2F0Ojw8MTYKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9zdWJfUmxSaF9zYXRfczE2KFdvcmQzMiBSdCwgV29yZDMyIFJzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Jfc3ViX1JsUmhfc2F0X3MxNiBfX2J1aWx0aW5fSEVYQUdPTl9BMl9zdWJoX2gxNl9zYXRfbGgKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1zdWIoUnQzMi5sLFJzMzIubCk6c2F0Ojw8MTYKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9zdWJfUmxSbF9zYXRfczE2KFdvcmQzMiBSdCwgV29yZDMyIFJzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Jfc3ViX1JsUmxfc2F0X3MxNiBfX2J1aWx0aW5fSEVYQUdPTl9BMl9zdWJoX2gxNl9zYXRfbGwKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1zdWIoUnQzMi5sLFJzMzIuaCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9zdWJfUmxSaChXb3JkMzIgUnQsIFdvcmQzMiBScykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX3N1Yl9SbFJoIF9fYnVpbHRpbl9IRVhBR09OX0EyX3N1YmhfbDE2X2hsCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9c3ViKFJ0MzIubCxSczMyLmwpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1Jfc3ViX1JsUmwoV29yZDMyIFJ0LCBXb3JkMzIgUnMpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9zdWJfUmxSbCBfX2J1aWx0aW5fSEVYQUdPTl9BMl9zdWJoX2wxNl9sbAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPXN1YihSdDMyLmwsUnMzMi5oKTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9zdWJfUmxSaF9zYXQoV29yZDMyIFJ0LCBXb3JkMzIgUnMpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9zdWJfUmxSaF9zYXQgX19idWlsdGluX0hFWEFHT05fQTJfc3ViaF9sMTZfc2F0X2hsCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9c3ViKFJ0MzIubCxSczMyLmwpOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX3N1Yl9SbFJsX3NhdChXb3JkMzIgUnQsIFdvcmQzMiBScykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX3N1Yl9SbFJsX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9BMl9zdWJoX2wxNl9zYXRfbGwKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9c3ViKFJ0dDMyLFJzczMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3N1Yl9QUChXb3JkNjQgUnR0LCBXb3JkNjQgUnNzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Bfc3ViX1BQIF9fYnVpbHRpbl9IRVhBR09OX0EyX3N1YnAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1zdWIoI3MxMCxSczMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX3N1Yl9JUihXb3JkMzIgSXMxMCwgV29yZDMyIFJzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTMyXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Jfc3ViX0lSIF9fYnVpbHRpbl9IRVhBR09OX0EyX3N1YnJpCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9c3ViKFJ0MzIsUnMzMik6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1Jfc3ViX1JSX3NhdChXb3JkMzIgUnQsIFdvcmQzMiBScykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFUzMl8zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX3N1Yl9SUl9zYXQgX19idWlsdGluX0hFWEFHT05fQTJfc3Vic2F0CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9dmFkZGgoUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX3ZhZGRoX1JSKFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTMyXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfdmFkZGhfUlIgX19idWlsdGluX0hFWEFHT05fQTJfc3ZhZGRoCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9dmFkZGgoUnMzMixSdDMyKTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl92YWRkaF9SUl9zYXQoV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVMzJfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl92YWRkaF9SUl9zYXQgX19idWlsdGluX0hFWEFHT05fQTJfc3ZhZGRocwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPXZhZGR1aChSczMyLFJ0MzIpOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX3ZhZGR1aF9SUl9zYXQoV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVMzJfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl92YWRkdWhfUlJfc2F0IF9fYnVpbHRpbl9IRVhBR09OX0EyX3N2YWRkdWhzCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9dmF2Z2goUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX3ZhdmdoX1JSKFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTMyXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfdmF2Z2hfUlIgX19idWlsdGluX0hFWEFHT05fQTJfc3ZhdmdoCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9dmF2Z2goUnMzMixSdDMyKTpybmQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl92YXZnaF9SUl9ybmQoV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVMzJfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl92YXZnaF9SUl9ybmQgX19idWlsdGluX0hFWEFHT05fQTJfc3ZhdmdocwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPXZuYXZnaChSdDMyLFJzMzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1Jfdm5hdmdoX1JSKFdvcmQzMiBSdCwgV29yZDMyIFJzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTMyXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Jfdm5hdmdoX1JSIF9fYnVpbHRpbl9IRVhBR09OX0EyX3N2bmF2Z2gKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj12c3ViaChSdDMyLFJzMzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfdnN1YmhfUlIoV29yZDMyIFJ0LCBXb3JkMzIgUnMpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVMzJfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl92c3ViaF9SUiBfX2J1aWx0aW5fSEVYQUdPTl9BMl9zdnN1YmgKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj12c3ViaChSdDMyLFJzMzIpOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX3ZzdWJoX1JSX3NhdChXb3JkMzIgUnQsIFdvcmQzMiBScykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFUzMl8zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX3ZzdWJoX1JSX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9BMl9zdnN1YmhzCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9dnN1YnVoKFJ0MzIsUnMzMik6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfdnN1YnVoX1JSX3NhdChXb3JkMzIgUnQsIFdvcmQzMiBScykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFUzMl8zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX3ZzdWJ1aF9SUl9zYXQgX19idWlsdGluX0hFWEFHT05fQTJfc3ZzdWJ1aHMKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1zd2l6KFJzMzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1Jfc3dpel9SKFdvcmQzMiBScykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX3N3aXpfUiBfX2J1aWx0aW5fSEVYQUdPTl9BMl9zd2l6CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9c3h0YihSczMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX3N4dGJfUihXb3JkMzIgUnMpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVMzJfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9zeHRiX1IgX19idWlsdGluX0hFWEFHT05fQTJfc3h0YgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPXN4dGgoUnMzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9zeHRoX1IoV29yZDMyIFJzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTMyXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Jfc3h0aF9SIF9fYnVpbHRpbl9IRVhBR09OX0EyX3N4dGgKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9c3h0dyhSczMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3N4dHdfUihXb3JkMzIgUnMpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9zeHR3X1IgX19idWlsdGluX0hFWEFHT05fQTJfc3h0dwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPVJzMzIKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9lcXVhbHNfUihXb3JkMzIgUnMpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVMzJfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9lcXVhbHNfUiBfX2J1aWx0aW5fSEVYQUdPTl9BMl90ZnIKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUngzMi5oPSN1MTYKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUmhfZXF1YWxzX0koV29yZDMyIFJ4LCBXb3JkMzIgSXUxNikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFUzMl8yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SaF9lcXVhbHNfSSBfX2J1aWx0aW5fSEVYQUdPTl9BMl90ZnJpaAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeDMyLmw9I3UxNgogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SbF9lcXVhbHNfSShXb3JkMzIgUngsIFdvcmQzMiBJdTE2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTMyXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JsX2VxdWFsc19JIF9fYnVpbHRpbl9IRVhBR09OX0EyX3RmcmlsCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPVJzczMyCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfZXF1YWxzX1AoV29yZDY0IFJzcykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFUzMl8yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX2VxdWFsc19QIF9fYnVpbHRpbl9IRVhBR09OX0EyX3RmcnAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9I3M4CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfZXF1YWxzX0koV29yZDMyIElzOCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfZXF1YWxzX0kgX19idWlsdGluX0hFWEFHT05fQTJfdGZycGkKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj0jczE2CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfZXF1YWxzX0koV29yZDMyIElzMTYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVMzJfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9lcXVhbHNfSSBfX2J1aWx0aW5fSEVYQUdPTl9BMl90ZnJzaQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj12YWJzaChSc3MzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92YWJzaF9QKFdvcmQ2NCBSc3MpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92YWJzaF9QIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZhYnNoCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZhYnNoKFJzczMyKTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92YWJzaF9QX3NhdChXb3JkNjQgUnNzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdmFic2hfUF9zYXQgX19idWlsdGluX0hFWEFHT05fQTJfdmFic2hzYXQKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dmFic3coUnNzMzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfdmFic3dfUChXb3JkNjQgUnNzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdmFic3dfUCBfX2J1aWx0aW5fSEVYQUdPTl9BMl92YWJzdwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj12YWJzdyhSc3MzMik6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfdmFic3dfUF9zYXQoV29yZDY0IFJzcykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZhYnN3X1Bfc2F0IF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZhYnN3c2F0CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZhZGRiKFJzczMyLFJ0dDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZhZGRiX1BQKFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTUFQUElORwogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdmFkZGJfUFAgX19idWlsdGluX0hFWEFHT05fQTJfdmFkZGJfbWFwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZhZGRoKFJzczMyLFJ0dDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZhZGRoX1BQKFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92YWRkaF9QUCBfX2J1aWx0aW5fSEVYQUdPTl9BMl92YWRkaAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj12YWRkaChSc3MzMixSdHQzMik6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfdmFkZGhfUFBfc2F0KFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92YWRkaF9QUF9zYXQgX19idWlsdGluX0hFWEFHT05fQTJfdmFkZGhzCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZhZGR1YihSc3MzMixSdHQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92YWRkdWJfUFAoV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZhZGR1Yl9QUCBfX2J1aWx0aW5fSEVYQUdPTl9BMl92YWRkdWIKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dmFkZHViKFJzczMyLFJ0dDMyKTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92YWRkdWJfUFBfc2F0KFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92YWRkdWJfUFBfc2F0IF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZhZGR1YnMKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dmFkZHVoKFJzczMyLFJ0dDMyKTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92YWRkdWhfUFBfc2F0KFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92YWRkdWhfUFBfc2F0IF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZhZGR1aHMKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dmFkZHcoUnNzMzIsUnR0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfdmFkZHdfUFAoV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZhZGR3X1BQIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZhZGR3CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZhZGR3KFJzczMyLFJ0dDMyKTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92YWRkd19QUF9zYXQoV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZhZGR3X1BQX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9BMl92YWRkd3MKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dmF2Z2goUnNzMzIsUnR0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfdmF2Z2hfUFAoV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZhdmdoX1BQIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZhdmdoCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZhdmdoKFJzczMyLFJ0dDMyKTpjcm5kCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfdmF2Z2hfUFBfY3JuZChXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdmF2Z2hfUFBfY3JuZCBfX2J1aWx0aW5fSEVYQUdPTl9BMl92YXZnaGNyCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZhdmdoKFJzczMyLFJ0dDMyKTpybmQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92YXZnaF9QUF9ybmQoV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZhdmdoX1BQX3JuZCBfX2J1aWx0aW5fSEVYQUdPTl9BMl92YXZnaHIKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dmF2Z3ViKFJzczMyLFJ0dDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3Zhdmd1Yl9QUChXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdmF2Z3ViX1BQIF9fYnVpbHRpbl9IRVhBR09OX0EyX3Zhdmd1YgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj12YXZndWIoUnNzMzIsUnR0MzIpOnJuZAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3Zhdmd1Yl9QUF9ybmQoV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3Zhdmd1Yl9QUF9ybmQgX19idWlsdGluX0hFWEFHT05fQTJfdmF2Z3VicgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj12YXZndWgoUnNzMzIsUnR0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfdmF2Z3VoX1BQKFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92YXZndWhfUFAgX19idWlsdGluX0hFWEFHT05fQTJfdmF2Z3VoCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZhdmd1aChSc3MzMixSdHQzMik6cm5kCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfdmF2Z3VoX1BQX3JuZChXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdmF2Z3VoX1BQX3JuZCBfX2J1aWx0aW5fSEVYQUdPTl9BMl92YXZndWhyCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZhdmd1dyhSc3MzMixSdHQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92YXZndXdfUFAoV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3Zhdmd1d19QUCBfX2J1aWx0aW5fSEVYQUdPTl9BMl92YXZndXcKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dmF2Z3V3KFJzczMyLFJ0dDMyKTpybmQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92YXZndXdfUFBfcm5kKFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92YXZndXdfUFBfcm5kIF9fYnVpbHRpbl9IRVhBR09OX0EyX3Zhdmd1d3IKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dmF2Z3coUnNzMzIsUnR0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfdmF2Z3dfUFAoV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3Zhdmd3X1BQIF9fYnVpbHRpbl9IRVhBR09OX0EyX3Zhdmd3CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZhdmd3KFJzczMyLFJ0dDMyKTpjcm5kCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfdmF2Z3dfUFBfY3JuZChXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdmF2Z3dfUFBfY3JuZCBfX2J1aWx0aW5fSEVYQUdPTl9BMl92YXZnd2NyCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZhdmd3KFJzczMyLFJ0dDMyKTpybmQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92YXZnd19QUF9ybmQoV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3Zhdmd3X1BQX3JuZCBfX2J1aWx0aW5fSEVYQUdPTl9BMl92YXZnd3IKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUGQ0PXZjbXBiLmVxKFJzczMyLFJ0dDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEJ5dGUgUTZfcF92Y21wYl9lcV9QUChXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X3BfdmNtcGJfZXFfUFAgX19idWlsdGluX0hFWEFHT05fQTJfdmNtcGJlcQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBQZDQ9dmNtcGIuZ3R1KFJzczMyLFJ0dDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEJ5dGUgUTZfcF92Y21wYl9ndHVfUFAoV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9wX3ZjbXBiX2d0dV9QUCBfX2J1aWx0aW5fSEVYQUdPTl9BMl92Y21wYmd0dQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBQZDQ9dmNtcGguZXEoUnNzMzIsUnR0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogQnl0ZSBRNl9wX3ZjbXBoX2VxX1BQKFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfcF92Y21waF9lcV9QUCBfX2J1aWx0aW5fSEVYQUdPTl9BMl92Y21waGVxCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFBkND12Y21waC5ndChSc3MzMixSdHQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBCeXRlIFE2X3BfdmNtcGhfZ3RfUFAoV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9wX3ZjbXBoX2d0X1BQIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZjbXBoZ3QKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUGQ0PXZjbXBoLmd0dShSc3MzMixSdHQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBCeXRlIFE2X3BfdmNtcGhfZ3R1X1BQKFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfcF92Y21waF9ndHVfUFAgX19idWlsdGluX0hFWEFHT05fQTJfdmNtcGhndHUKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUGQ0PXZjbXB3LmVxKFJzczMyLFJ0dDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEJ5dGUgUTZfcF92Y21wd19lcV9QUChXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X3BfdmNtcHdfZXFfUFAgX19idWlsdGluX0hFWEFHT05fQTJfdmNtcHdlcQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBQZDQ9dmNtcHcuZ3QoUnNzMzIsUnR0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogQnl0ZSBRNl9wX3ZjbXB3X2d0X1BQKFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfcF92Y21wd19ndF9QUCBfX2J1aWx0aW5fSEVYQUdPTl9BMl92Y21wd2d0CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFBkND12Y21wdy5ndHUoUnNzMzIsUnR0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogQnl0ZSBRNl9wX3ZjbXB3X2d0dV9QUChXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X3BfdmNtcHdfZ3R1X1BQIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZjbXB3Z3R1CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZjb25qKFJzczMyKTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92Y29ual9QX3NhdChXb3JkNjQgUnNzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdmNvbmpfUF9zYXQgX19idWlsdGluX0hFWEFHT05fQTJfdmNvbmoKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dm1heGIoUnR0MzIsUnNzMzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1Bfdm1heGJfUFAoV29yZDY0IFJ0dCwgV29yZDY0IFJzcykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZtYXhiX1BQIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZtYXhiCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZtYXhoKFJ0dDMyLFJzczMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZtYXhoX1BQKFdvcmQ2NCBSdHQsIFdvcmQ2NCBSc3MpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92bWF4aF9QUCBfX2J1aWx0aW5fSEVYQUdPTl9BMl92bWF4aAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj12bWF4dWIoUnR0MzIsUnNzMzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1Bfdm1heHViX1BQKFdvcmQ2NCBSdHQsIFdvcmQ2NCBSc3MpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92bWF4dWJfUFAgX19idWlsdGluX0hFWEFHT05fQTJfdm1heHViCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZtYXh1aChSdHQzMixSc3MzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92bWF4dWhfUFAoV29yZDY0IFJ0dCwgV29yZDY0IFJzcykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZtYXh1aF9QUCBfX2J1aWx0aW5fSEVYQUdPTl9BMl92bWF4dWgKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dm1heHV3KFJ0dDMyLFJzczMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZtYXh1d19QUChXb3JkNjQgUnR0LCBXb3JkNjQgUnNzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Bfdm1heHV3X1BQIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZtYXh1dwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj12bWF4dyhSdHQzMixSc3MzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92bWF4d19QUChXb3JkNjQgUnR0LCBXb3JkNjQgUnNzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Bfdm1heHdfUFAgX19idWlsdGluX0hFWEFHT05fQTJfdm1heHcKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dm1pbmIoUnR0MzIsUnNzMzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1Bfdm1pbmJfUFAoV29yZDY0IFJ0dCwgV29yZDY0IFJzcykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZtaW5iX1BQIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZtaW5iCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZtaW5oKFJ0dDMyLFJzczMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZtaW5oX1BQKFdvcmQ2NCBSdHQsIFdvcmQ2NCBSc3MpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92bWluaF9QUCBfX2J1aWx0aW5fSEVYQUdPTl9BMl92bWluaAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj12bWludWIoUnR0MzIsUnNzMzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1Bfdm1pbnViX1BQKFdvcmQ2NCBSdHQsIFdvcmQ2NCBSc3MpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92bWludWJfUFAgX19idWlsdGluX0hFWEFHT05fQTJfdm1pbnViCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZtaW51aChSdHQzMixSc3MzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92bWludWhfUFAoV29yZDY0IFJ0dCwgV29yZDY0IFJzcykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZtaW51aF9QUCBfX2J1aWx0aW5fSEVYQUdPTl9BMl92bWludWgKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dm1pbnV3KFJ0dDMyLFJzczMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZtaW51d19QUChXb3JkNjQgUnR0LCBXb3JkNjQgUnNzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Bfdm1pbnV3X1BQIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZtaW51dwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj12bWludyhSdHQzMixSc3MzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92bWlud19QUChXb3JkNjQgUnR0LCBXb3JkNjQgUnNzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Bfdm1pbndfUFAgX19idWlsdGluX0hFWEFHT05fQTJfdm1pbncKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dm5hdmdoKFJ0dDMyLFJzczMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZuYXZnaF9QUChXb3JkNjQgUnR0LCBXb3JkNjQgUnNzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Bfdm5hdmdoX1BQIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZuYXZnaAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj12bmF2Z2goUnR0MzIsUnNzMzIpOmNybmQ6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1Bfdm5hdmdoX1BQX2NybmRfc2F0KFdvcmQ2NCBSdHQsIFdvcmQ2NCBSc3MpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92bmF2Z2hfUFBfY3JuZF9zYXQgX19idWlsdGluX0hFWEFHT05fQTJfdm5hdmdoY3IKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dm5hdmdoKFJ0dDMyLFJzczMyKTpybmQ6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1Bfdm5hdmdoX1BQX3JuZF9zYXQoV29yZDY0IFJ0dCwgV29yZDY0IFJzcykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZuYXZnaF9QUF9ybmRfc2F0IF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZuYXZnaHIKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dm5hdmd3KFJ0dDMyLFJzczMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZuYXZnd19QUChXb3JkNjQgUnR0LCBXb3JkNjQgUnNzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Bfdm5hdmd3X1BQIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZuYXZndwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj12bmF2Z3coUnR0MzIsUnNzMzIpOmNybmQ6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1Bfdm5hdmd3X1BQX2NybmRfc2F0KFdvcmQ2NCBSdHQsIFdvcmQ2NCBSc3MpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92bmF2Z3dfUFBfY3JuZF9zYXQgX19idWlsdGluX0hFWEFHT05fQTJfdm5hdmd3Y3IKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dm5hdmd3KFJ0dDMyLFJzczMyKTpybmQ6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1Bfdm5hdmd3X1BQX3JuZF9zYXQoV29yZDY0IFJ0dCwgV29yZDY0IFJzcykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZuYXZnd19QUF9ybmRfc2F0IF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZuYXZnd3IKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dnJhZGR1YihSc3MzMixSdHQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92cmFkZHViX1BQKFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZyYWRkdWJfUFAgX19idWlsdGluX0hFWEFHT05fQTJfdnJhZGR1YgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMis9dnJhZGR1YihSc3MzMixSdHQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92cmFkZHViYWNjX1BQKFdvcmQ2NCBSeHgsIFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZyYWRkdWJhY2NfUFAgX19idWlsdGluX0hFWEFHT05fQTJfdnJhZGR1Yl9hY2MKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dnJzYWR1YihSc3MzMixSdHQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92cnNhZHViX1BQKFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3Zyc2FkdWJfUFAgX19idWlsdGluX0hFWEFHT05fQTJfdnJzYWR1YgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMis9dnJzYWR1YihSc3MzMixSdHQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92cnNhZHViYWNjX1BQKFdvcmQ2NCBSeHgsIFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3Zyc2FkdWJhY2NfUFAgX19idWlsdGluX0hFWEFHT05fQTJfdnJzYWR1Yl9hY2MKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dnN1YmIoUnNzMzIsUnR0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfdnN1YmJfUFAoV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNQVBQSU5HCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92c3ViYl9QUCBfX2J1aWx0aW5fSEVYQUdPTl9BMl92c3ViYl9tYXAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dnN1YmgoUnR0MzIsUnNzMzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfdnN1YmhfUFAoV29yZDY0IFJ0dCwgV29yZDY0IFJzcykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZzdWJoX1BQIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZzdWJoCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZzdWJoKFJ0dDMyLFJzczMyKTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92c3ViaF9QUF9zYXQoV29yZDY0IFJ0dCwgV29yZDY0IFJzcykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZzdWJoX1BQX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9BMl92c3ViaHMKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dnN1YnViKFJ0dDMyLFJzczMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZzdWJ1Yl9QUChXb3JkNjQgUnR0LCBXb3JkNjQgUnNzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdnN1YnViX1BQIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZzdWJ1YgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj12c3VidWIoUnR0MzIsUnNzMzIpOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZzdWJ1Yl9QUF9zYXQoV29yZDY0IFJ0dCwgV29yZDY0IFJzcykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZzdWJ1Yl9QUF9zYXQgX19idWlsdGluX0hFWEFHT05fQTJfdnN1YnVicwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj12c3VidWgoUnR0MzIsUnNzMzIpOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZzdWJ1aF9QUF9zYXQoV29yZDY0IFJ0dCwgV29yZDY0IFJzcykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZzdWJ1aF9QUF9zYXQgX19idWlsdGluX0hFWEFHT05fQTJfdnN1YnVocwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj12c3VidyhSdHQzMixSc3MzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92c3Vid19QUChXb3JkNjQgUnR0LCBXb3JkNjQgUnNzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdnN1YndfUFAgX19idWlsdGluX0hFWEFHT05fQTJfdnN1YncKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dnN1YncoUnR0MzIsUnNzMzIpOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZzdWJ3X1BQX3NhdChXb3JkNjQgUnR0LCBXb3JkNjQgUnNzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdnN1YndfUFBfc2F0IF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZzdWJ3cwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPXhvcihSczMyLFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfeG9yX1JSKFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTMyXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfeG9yX1JSIF9fYnVpbHRpbl9IRVhBR09OX0EyX3hvcgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj14b3IoUnNzMzIsUnR0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfeG9yX1BQKFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF94b3JfUFAgX19idWlsdGluX0hFWEFHT05fQTJfeG9ycAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPXp4dGIoUnMzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl96eHRiX1IoV29yZDMyIFJzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTMyXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Jfenh0Yl9SIF9fYnVpbHRpbl9IRVhBR09OX0EyX3p4dGIKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj16eHRoKFJzMzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1Jfenh0aF9SKFdvcmQzMiBScykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFUzMl8yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX3p4dGhfUiBfX2J1aWx0aW5fSEVYQUdPTl9BMl96eHRoCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9YW5kKFJ0MzIsflJzMzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfYW5kX1JuUihXb3JkMzIgUnQsIFdvcmQzMiBScykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFUzMl8zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2FuZF9SblIgX19idWlsdGluX0hFWEFHT05fQTRfYW5kbgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj1hbmQoUnR0MzIsflJzczMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX2FuZF9QblAoV29yZDY0IFJ0dCwgV29yZDY0IFJzcykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX2FuZF9QblAgX19idWlsdGluX0hFWEFHT05fQTRfYW5kbnAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9Yml0c3BsaXQoUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX2JpdHNwbGl0X1JSKFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfYml0c3BsaXRfUlIgX19idWlsdGluX0hFWEFHT05fQTRfYml0c3BsaXQKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9Yml0c3BsaXQoUnMzMiwjdTUpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfYml0c3BsaXRfUkkoV29yZDMyIFJzLCBXb3JkMzIgSXU1KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfYml0c3BsaXRfUkkgX19idWlsdGluX0hFWEFHT05fQTRfYml0c3BsaXRpCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFBkND1ib3VuZHNjaGVjayhSczMyLFJ0dDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEJ5dGUgUTZfcF9ib3VuZHNjaGVja19SUChXb3JkMzIgUnMsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9wX2JvdW5kc2NoZWNrX1JQIF9fYnVpbHRpbl9IRVhBR09OX0E0X2JvdW5kc2NoZWNrCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFBkND1jbXBiLmVxKFJzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBCeXRlIFE2X3BfY21wYl9lcV9SUihXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9wX2NtcGJfZXFfUlIgX19idWlsdGluX0hFWEFHT05fQTRfY21wYmVxCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFBkND1jbXBiLmVxKFJzMzIsI3U4KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEJ5dGUgUTZfcF9jbXBiX2VxX1JJKFdvcmQzMiBScywgV29yZDMyIEl1OCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9wX2NtcGJfZXFfUkkgX19idWlsdGluX0hFWEFHT05fQTRfY21wYmVxaQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBQZDQ9Y21wYi5ndChSczMyLFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogQnl0ZSBRNl9wX2NtcGJfZ3RfUlIoV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfcF9jbXBiX2d0X1JSIF9fYnVpbHRpbl9IRVhBR09OX0E0X2NtcGJndAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBQZDQ9Y21wYi5ndChSczMyLCNzOCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBCeXRlIFE2X3BfY21wYl9ndF9SSShXb3JkMzIgUnMsIFdvcmQzMiBJczgpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfcF9jbXBiX2d0X1JJIF9fYnVpbHRpbl9IRVhBR09OX0E0X2NtcGJndGkKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUGQ0PWNtcGIuZ3R1KFJzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBCeXRlIFE2X3BfY21wYl9ndHVfUlIoV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfcF9jbXBiX2d0dV9SUiBfX2J1aWx0aW5fSEVYQUdPTl9BNF9jbXBiZ3R1CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFBkND1jbXBiLmd0dShSczMyLCN1NykKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBCeXRlIFE2X3BfY21wYl9ndHVfUkkoV29yZDMyIFJzLCBXb3JkMzIgSXU3KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X3BfY21wYl9ndHVfUkkgX19idWlsdGluX0hFWEFHT05fQTRfY21wYmd0dWkKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUGQ0PWNtcGguZXEoUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEJ5dGUgUTZfcF9jbXBoX2VxX1JSKFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X3BfY21waF9lcV9SUiBfX2J1aWx0aW5fSEVYQUdPTl9BNF9jbXBoZXEKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUGQ0PWNtcGguZXEoUnMzMiwjczgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogQnl0ZSBRNl9wX2NtcGhfZXFfUkkoV29yZDMyIFJzLCBXb3JkMzIgSXM4KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X3BfY21waF9lcV9SSSBfX2J1aWx0aW5fSEVYQUdPTl9BNF9jbXBoZXFpCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFBkND1jbXBoLmd0KFJzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBCeXRlIFE2X3BfY21waF9ndF9SUihXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9wX2NtcGhfZ3RfUlIgX19idWlsdGluX0hFWEFHT05fQTRfY21waGd0CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFBkND1jbXBoLmd0KFJzMzIsI3M4KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEJ5dGUgUTZfcF9jbXBoX2d0X1JJKFdvcmQzMiBScywgV29yZDMyIElzOCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9wX2NtcGhfZ3RfUkkgX19idWlsdGluX0hFWEFHT05fQTRfY21waGd0aQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBQZDQ9Y21waC5ndHUoUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEJ5dGUgUTZfcF9jbXBoX2d0dV9SUihXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9wX2NtcGhfZ3R1X1JSIF9fYnVpbHRpbl9IRVhBR09OX0E0X2NtcGhndHUKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUGQ0PWNtcGguZ3R1KFJzMzIsI3U3KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEJ5dGUgUTZfcF9jbXBoX2d0dV9SSShXb3JkMzIgUnMsIFdvcmQzMiBJdTcpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfcF9jbXBoX2d0dV9SSSBfX2J1aWx0aW5fSEVYQUdPTl9BNF9jbXBoZ3R1aQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj1jb21iaW5lKCNzOCxSczMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX2NvbWJpbmVfSVIoV29yZDMyIElzOCwgV29yZDMyIFJzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTMyXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfY29tYmluZV9JUiBfX2J1aWx0aW5fSEVYQUdPTl9BNF9jb21iaW5laXIKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9Y29tYmluZShSczMyLCNzOCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9jb21iaW5lX1JJKFdvcmQzMiBScywgV29yZDMyIElzOCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFUzMl8yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX2NvbWJpbmVfUkkgX19idWlsdGluX0hFWEFHT05fQTRfY29tYmluZXJpCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9Y3JvdW5kKFJzMzIsI3U1KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2Nyb3VuZF9SSShXb3JkMzIgUnMsIFdvcmQzMiBJdTUpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9jcm91bmRfUkkgX19idWlsdGluX0hFWEFHT05fQTRfY3JvdW5kX3JpCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9Y3JvdW5kKFJzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9jcm91bmRfUlIoV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9jcm91bmRfUlIgX19idWlsdGluX0hFWEFHT05fQTRfY3JvdW5kX3JyCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9bW9kd3JhcChSczMyLFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfbW9kd3JhcF9SUihXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21vZHdyYXBfUlIgX19idWlsdGluX0hFWEFHT05fQTRfbW9kd3JhcHUKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1vcihSdDMyLH5SczMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX29yX1JuUihXb3JkMzIgUnQsIFdvcmQzMiBScykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFUzMl8zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX29yX1JuUiBfX2J1aWx0aW5fSEVYQUdPTl9BNF9vcm4KCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9b3IoUnR0MzIsflJzczMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX29yX1BuUChXb3JkNjQgUnR0LCBXb3JkNjQgUnNzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Bfb3JfUG5QIF9fYnVpbHRpbl9IRVhBR09OX0E0X29ybnAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1jbXAuZXEoUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2NtcF9lcV9SUihXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFUzMl8zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2NtcF9lcV9SUiBfX2J1aWx0aW5fSEVYQUdPTl9BNF9yY21wZXEKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1jbXAuZXEoUnMzMiwjczgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfY21wX2VxX1JJKFdvcmQzMiBScywgV29yZDMyIElzOCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFUzMl8yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2NtcF9lcV9SSSBfX2J1aWx0aW5fSEVYQUdPTl9BNF9yY21wZXFpCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9IWNtcC5lcShSczMyLFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1Jfbm90X2NtcF9lcV9SUihXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFUzMl8zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX25vdF9jbXBfZXFfUlIgX19idWlsdGluX0hFWEFHT05fQTRfcmNtcG5lcQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPSFjbXAuZXEoUnMzMiwjczgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1Jfbm90X2NtcF9lcV9SSShXb3JkMzIgUnMsIFdvcmQzMiBJczgpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVMzJfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9ub3RfY21wX2VxX1JJIF9fYnVpbHRpbl9IRVhBR09OX0E0X3JjbXBuZXFpCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9cm91bmQoUnMzMiwjdTUpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1Jfcm91bmRfUkkoV29yZDMyIFJzLCBXb3JkMzIgSXU1KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Jfcm91bmRfUkkgX19idWlsdGluX0hFWEFHT05fQTRfcm91bmRfcmkKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1yb3VuZChSczMyLCN1NSk6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1Jfcm91bmRfUklfc2F0KFdvcmQzMiBScywgV29yZDMyIEl1NSkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX3JvdW5kX1JJX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9BNF9yb3VuZF9yaV9zYXQKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1yb3VuZChSczMyLFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1Jfcm91bmRfUlIoV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9yb3VuZF9SUiBfX2J1aWx0aW5fSEVYQUdPTl9BNF9yb3VuZF9ycgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPXJvdW5kKFJzMzIsUnQzMik6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1Jfcm91bmRfUlJfc2F0KFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Jfcm91bmRfUlJfc2F0IF9fYnVpbHRpbl9IRVhBR09OX0E0X3JvdW5kX3JyX3NhdAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBQZDQ9dGxibWF0Y2goUnNzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBCeXRlIFE2X3BfdGxibWF0Y2hfUFIoV29yZDY0IFJzcywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X3BfdGxibWF0Y2hfUFIgX19idWlsdGluX0hFWEFHT05fQTRfdGxibWF0Y2gKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUGQ0PWFueTgodmNtcGIuZXEoUnNzMzIsUnR0MzIpKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEJ5dGUgUTZfcF9hbnk4X3ZjbXBiX2VxX1BQKFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfcF9hbnk4X3ZjbXBiX2VxX1BQIF9fYnVpbHRpbl9IRVhBR09OX0E0X3ZjbXBiZXFfYW55CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFBkND12Y21wYi5lcShSc3MzMiwjdTgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogQnl0ZSBRNl9wX3ZjbXBiX2VxX1BJKFdvcmQ2NCBSc3MsIFdvcmQzMiBJdTgpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfcF92Y21wYl9lcV9QSSBfX2J1aWx0aW5fSEVYQUdPTl9BNF92Y21wYmVxaQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBQZDQ9dmNtcGIuZ3QoUnNzMzIsUnR0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogQnl0ZSBRNl9wX3ZjbXBiX2d0X1BQKFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfcF92Y21wYl9ndF9QUCBfX2J1aWx0aW5fSEVYQUdPTl9BNF92Y21wYmd0CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFBkND12Y21wYi5ndChSc3MzMiwjczgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogQnl0ZSBRNl9wX3ZjbXBiX2d0X1BJKFdvcmQ2NCBSc3MsIFdvcmQzMiBJczgpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfcF92Y21wYl9ndF9QSSBfX2J1aWx0aW5fSEVYQUdPTl9BNF92Y21wYmd0aQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBQZDQ9dmNtcGIuZ3R1KFJzczMyLCN1NykKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBCeXRlIFE2X3BfdmNtcGJfZ3R1X1BJKFdvcmQ2NCBSc3MsIFdvcmQzMiBJdTcpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfcF92Y21wYl9ndHVfUEkgX19idWlsdGluX0hFWEFHT05fQTRfdmNtcGJndHVpCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFBkND12Y21waC5lcShSc3MzMiwjczgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogQnl0ZSBRNl9wX3ZjbXBoX2VxX1BJKFdvcmQ2NCBSc3MsIFdvcmQzMiBJczgpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfcF92Y21waF9lcV9QSSBfX2J1aWx0aW5fSEVYQUdPTl9BNF92Y21waGVxaQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBQZDQ9dmNtcGguZ3QoUnNzMzIsI3M4KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEJ5dGUgUTZfcF92Y21waF9ndF9QSShXb3JkNjQgUnNzLCBXb3JkMzIgSXM4KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X3BfdmNtcGhfZ3RfUEkgX19idWlsdGluX0hFWEFHT05fQTRfdmNtcGhndGkKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUGQ0PXZjbXBoLmd0dShSc3MzMiwjdTcpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogQnl0ZSBRNl9wX3ZjbXBoX2d0dV9QSShXb3JkNjQgUnNzLCBXb3JkMzIgSXU3KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X3BfdmNtcGhfZ3R1X1BJIF9fYnVpbHRpbl9IRVhBR09OX0E0X3ZjbXBoZ3R1aQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBQZDQ9dmNtcHcuZXEoUnNzMzIsI3M4KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEJ5dGUgUTZfcF92Y21wd19lcV9QSShXb3JkNjQgUnNzLCBXb3JkMzIgSXM4KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X3BfdmNtcHdfZXFfUEkgX19idWlsdGluX0hFWEFHT05fQTRfdmNtcHdlcWkKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUGQ0PXZjbXB3Lmd0KFJzczMyLCNzOCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBCeXRlIFE2X3BfdmNtcHdfZ3RfUEkoV29yZDY0IFJzcywgV29yZDMyIElzOCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9wX3ZjbXB3X2d0X1BJIF9fYnVpbHRpbl9IRVhBR09OX0E0X3ZjbXB3Z3RpCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFBkND12Y21wdy5ndHUoUnNzMzIsI3U3KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEJ5dGUgUTZfcF92Y21wd19ndHVfUEkoV29yZDY0IFJzcywgV29yZDMyIEl1NykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9wX3ZjbXB3X2d0dV9QSSBfX2J1aWx0aW5fSEVYQUdPTl9BNF92Y21wd2d0dWkKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzI9dnJtYXhoKFJzczMyLFJ1MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfdnJtYXhoX1BSKFdvcmQ2NCBSeHgsIFdvcmQ2NCBSc3MsIFdvcmQzMiBSdSkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZybWF4aF9QUiBfX2J1aWx0aW5fSEVYQUdPTl9BNF92cm1heGgKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzI9dnJtYXh1aChSc3MzMixSdTMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZybWF4dWhfUFIoV29yZDY0IFJ4eCwgV29yZDY0IFJzcywgV29yZDMyIFJ1KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdnJtYXh1aF9QUiBfX2J1aWx0aW5fSEVYQUdPTl9BNF92cm1heHVoCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4eDMyPXZybWF4dXcoUnNzMzIsUnUzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92cm1heHV3X1BSKFdvcmQ2NCBSeHgsIFdvcmQ2NCBSc3MsIFdvcmQzMiBSdSkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZybWF4dXdfUFIgX19idWlsdGluX0hFWEFHT05fQTRfdnJtYXh1dwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMj12cm1heHcoUnNzMzIsUnUzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92cm1heHdfUFIoV29yZDY0IFJ4eCwgV29yZDY0IFJzcywgV29yZDMyIFJ1KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdnJtYXh3X1BSIF9fYnVpbHRpbl9IRVhBR09OX0E0X3ZybWF4dwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMj12cm1pbmgoUnNzMzIsUnUzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92cm1pbmhfUFIoV29yZDY0IFJ4eCwgV29yZDY0IFJzcywgV29yZDMyIFJ1KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdnJtaW5oX1BSIF9fYnVpbHRpbl9IRVhBR09OX0E0X3ZybWluaAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMj12cm1pbnVoKFJzczMyLFJ1MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfdnJtaW51aF9QUihXb3JkNjQgUnh4LCBXb3JkNjQgUnNzLCBXb3JkMzIgUnUpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92cm1pbnVoX1BSIF9fYnVpbHRpbl9IRVhBR09OX0E0X3ZybWludWgKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzI9dnJtaW51dyhSc3MzMixSdTMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZybWludXdfUFIoV29yZDY0IFJ4eCwgV29yZDY0IFJzcywgV29yZDMyIFJ1KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdnJtaW51d19QUiBfX2J1aWx0aW5fSEVYQUdPTl9BNF92cm1pbnV3CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4eDMyPXZybWludyhSc3MzMixSdTMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZybWlud19QUihXb3JkNjQgUnh4LCBXb3JkNjQgUnNzLCBXb3JkMzIgUnUpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92cm1pbndfUFIgX19idWlsdGluX0hFWEFHT05fQTRfdnJtaW53CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9dmFkZGh1YihSc3MzMixSdHQzMik6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfdmFkZGh1Yl9QUF9zYXQoV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX3ZhZGRodWJfUFBfc2F0IF9fYnVpbHRpbl9IRVhBR09OX0E1X3ZhZGRodWJzCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFBkND1hbGw4KFBzNCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBCeXRlIFE2X3BfYWxsOF9wKEJ5dGUgUHMpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1IKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfcF9hbGw4X3AgX19idWlsdGluX0hFWEFHT05fQzJfYWxsOAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBQZDQ9YW5kKFB0NCxQczQpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogQnl0ZSBRNl9wX2FuZF9wcChCeXRlIFB0LCBCeXRlIFBzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENSCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X3BfYW5kX3BwIF9fYnVpbHRpbl9IRVhBR09OX0MyX2FuZAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBQZDQ9YW5kKFB0NCwhUHM0KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEJ5dGUgUTZfcF9hbmRfcG5wKEJ5dGUgUHQsIEJ5dGUgUHMpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1IKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfcF9hbmRfcG5wIF9fYnVpbHRpbl9IRVhBR09OX0MyX2FuZG4KCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUGQ0PWFueTgoUHM0KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEJ5dGUgUTZfcF9hbnk4X3AoQnl0ZSBQcykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDUgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9wX2FueThfcCBfX2J1aWx0aW5fSEVYQUdPTl9DMl9hbnk4CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFBkND1iaXRzY2xyKFJzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBCeXRlIFE2X3BfYml0c2Nscl9SUihXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9wX2JpdHNjbHJfUlIgX19idWlsdGluX0hFWEFHT05fQzJfYml0c2NscgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBQZDQ9Yml0c2NscihSczMyLCN1NikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBCeXRlIFE2X3BfYml0c2Nscl9SSShXb3JkMzIgUnMsIFdvcmQzMiBJdTYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfcF9iaXRzY2xyX1JJIF9fYnVpbHRpbl9IRVhBR09OX0MyX2JpdHNjbHJpCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFBkND1iaXRzc2V0KFJzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBCeXRlIFE2X3BfYml0c3NldF9SUihXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9wX2JpdHNzZXRfUlIgX19idWlsdGluX0hFWEFHT05fQzJfYml0c3NldAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBQZDQ9Y21wLmVxKFJzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBCeXRlIFE2X3BfY21wX2VxX1JSKFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTMyXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X3BfY21wX2VxX1JSIF9fYnVpbHRpbl9IRVhBR09OX0MyX2NtcGVxCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFBkND1jbXAuZXEoUnMzMiwjczEwKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEJ5dGUgUTZfcF9jbXBfZXFfUkkoV29yZDMyIFJzLCBXb3JkMzIgSXMxMCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFUzMl8yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9wX2NtcF9lcV9SSSBfX2J1aWx0aW5fSEVYQUdPTl9DMl9jbXBlcWkKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUGQ0PWNtcC5lcShSc3MzMixSdHQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBCeXRlIFE2X3BfY21wX2VxX1BQKFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfcF9jbXBfZXFfUFAgX19idWlsdGluX0hFWEFHT05fQzJfY21wZXFwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFBkND1jbXAuZ2UoUnMzMiwjczgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogQnl0ZSBRNl9wX2NtcF9nZV9SSShXb3JkMzIgUnMsIFdvcmQzMiBJczgpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVMzJfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfcF9jbXBfZ2VfUkkgX19idWlsdGluX0hFWEFHT05fQzJfY21wZ2VpCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFBkND1jbXAuZ2V1KFJzMzIsI3U4KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEJ5dGUgUTZfcF9jbXBfZ2V1X1JJKFdvcmQzMiBScywgV29yZDMyIEl1OCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFUzMl8yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9wX2NtcF9nZXVfUkkgX19idWlsdGluX0hFWEFHT05fQzJfY21wZ2V1aQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBQZDQ9Y21wLmd0KFJzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBCeXRlIFE2X3BfY21wX2d0X1JSKFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTMyXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X3BfY21wX2d0X1JSIF9fYnVpbHRpbl9IRVhBR09OX0MyX2NtcGd0CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFBkND1jbXAuZ3QoUnMzMiwjczEwKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEJ5dGUgUTZfcF9jbXBfZ3RfUkkoV29yZDMyIFJzLCBXb3JkMzIgSXMxMCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFUzMl8yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9wX2NtcF9ndF9SSSBfX2J1aWx0aW5fSEVYQUdPTl9DMl9jbXBndGkKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUGQ0PWNtcC5ndChSc3MzMixSdHQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBCeXRlIFE2X3BfY21wX2d0X1BQKFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfcF9jbXBfZ3RfUFAgX19idWlsdGluX0hFWEFHT05fQzJfY21wZ3RwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFBkND1jbXAuZ3R1KFJzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBCeXRlIFE2X3BfY21wX2d0dV9SUihXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFUzMl8zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9wX2NtcF9ndHVfUlIgX19idWlsdGluX0hFWEFHT05fQzJfY21wZ3R1CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFBkND1jbXAuZ3R1KFJzMzIsI3U5KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEJ5dGUgUTZfcF9jbXBfZ3R1X1JJKFdvcmQzMiBScywgV29yZDMyIEl1OSkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFUzMl8yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9wX2NtcF9ndHVfUkkgX19idWlsdGluX0hFWEFHT05fQzJfY21wZ3R1aQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBQZDQ9Y21wLmd0dShSc3MzMixSdHQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBCeXRlIFE2X3BfY21wX2d0dV9QUChXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X3BfY21wX2d0dV9QUCBfX2J1aWx0aW5fSEVYQUdPTl9DMl9jbXBndHVwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFBkND1jbXAubHQoUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEJ5dGUgUTZfcF9jbXBfbHRfUlIoV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVMzJfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfcF9jbXBfbHRfUlIgX19idWlsdGluX0hFWEFHT05fQzJfY21wbHQKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUGQ0PWNtcC5sdHUoUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEJ5dGUgUTZfcF9jbXBfbHR1X1JSKFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTMyXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X3BfY21wX2x0dV9SUiBfX2J1aWx0aW5fSEVYQUdPTl9DMl9jbXBsdHUKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9bWFzayhQdDQpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfbWFza19wKEJ5dGUgUHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9tYXNrX3AgX19idWlsdGluX0hFWEFHT05fQzJfbWFzawoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPW11eChQdTQsUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX211eF9wUlIoQnl0ZSBQdSwgV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVMzJfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9tdXhfcFJSIF9fYnVpbHRpbl9IRVhBR09OX0MyX211eAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPW11eChQdTQsI3M4LCNTOCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9tdXhfcElJKEJ5dGUgUHUsIFdvcmQzMiBJczgsIFdvcmQzMiBJUzgpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVMzJfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9tdXhfcElJIF9fYnVpbHRpbl9IRVhBR09OX0MyX211eGlpCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9bXV4KFB1NCxSczMyLCNzOCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9tdXhfcFJJKEJ5dGUgUHUsIFdvcmQzMiBScywgV29yZDMyIElzOCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFUzMl8yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX211eF9wUkkgX19idWlsdGluX0hFWEFHT05fQzJfbXV4aXIKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1tdXgoUHU0LCNzOCxSczMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX211eF9wSVIoQnl0ZSBQdSwgV29yZDMyIElzOCwgV29yZDMyIFJzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTMyXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfbXV4X3BJUiBfX2J1aWx0aW5fSEVYQUdPTl9DMl9tdXhyaQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBQZDQ9bm90KFBzNCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBCeXRlIFE2X3Bfbm90X3AoQnl0ZSBQcykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDUgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9wX25vdF9wIF9fYnVpbHRpbl9IRVhBR09OX0MyX25vdAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBQZDQ9b3IoUHQ0LFBzNCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBCeXRlIFE2X3Bfb3JfcHAoQnl0ZSBQdCwgQnl0ZSBQcykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDUgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9wX29yX3BwIF9fYnVpbHRpbl9IRVhBR09OX0MyX29yCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFBkND1vcihQdDQsIVBzNCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBCeXRlIFE2X3Bfb3JfcG5wKEJ5dGUgUHQsIEJ5dGUgUHMpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1IKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfcF9vcl9wbnAgX19idWlsdGluX0hFWEFHT05fQzJfb3JuCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFBkND1QczQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBCeXRlIFE2X3BfZXF1YWxzX3AoQnl0ZSBQcykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNQVBQSU5HCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfcF9lcXVhbHNfcCBfX2J1aWx0aW5fSEVYQUdPTl9DMl9weGZlcl9tYXAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1QczQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9lcXVhbHNfcChCeXRlIFBzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfZXF1YWxzX3AgX19idWlsdGluX0hFWEFHT05fQzJfdGZycHIKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUGQ0PVJzMzIKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBCeXRlIFE2X3BfZXF1YWxzX1IoV29yZDMyIFJzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X3BfZXF1YWxzX1IgX19idWlsdGluX0hFWEFHT05fQzJfdGZycnAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj12aXRwYWNrKFBzNCxQdDQpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1Jfdml0cGFja19wcChCeXRlIFBzLCBCeXRlIFB0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Jfdml0cGFja19wcCBfX2J1aWx0aW5fSEVYQUdPTl9DMl92aXRwYWNrCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZtdXgoUHU0LFJzczMyLFJ0dDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZtdXhfcFBQKEJ5dGUgUHUsIFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92bXV4X3BQUCBfX2J1aWx0aW5fSEVYQUdPTl9DMl92bXV4CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFBkND14b3IoUHM0LFB0NCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBCeXRlIFE2X3BfeG9yX3BwKEJ5dGUgUHMsIEJ5dGUgUHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1IKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfcF94b3JfcHAgX19idWlsdGluX0hFWEFHT05fQzJfeG9yCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFBkND1hbmQoUHM0LGFuZChQdDQsUHU0KSkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBCeXRlIFE2X3BfYW5kX2FuZF9wcHAoQnl0ZSBQcywgQnl0ZSBQdCwgQnl0ZSBQdSkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDUgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9wX2FuZF9hbmRfcHBwIF9fYnVpbHRpbl9IRVhBR09OX0M0X2FuZF9hbmQKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUGQ0PWFuZChQczQsYW5kKFB0NCwhUHU0KSkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBCeXRlIFE2X3BfYW5kX2FuZF9wcG5wKEJ5dGUgUHMsIEJ5dGUgUHQsIEJ5dGUgUHUpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1IKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfcF9hbmRfYW5kX3BwbnAgX19idWlsdGluX0hFWEFHT05fQzRfYW5kX2FuZG4KCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUGQ0PWFuZChQczQsb3IoUHQ0LFB1NCkpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogQnl0ZSBRNl9wX2FuZF9vcl9wcHAoQnl0ZSBQcywgQnl0ZSBQdCwgQnl0ZSBQdSkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDUgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9wX2FuZF9vcl9wcHAgX19idWlsdGluX0hFWEFHT05fQzRfYW5kX29yCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFBkND1hbmQoUHM0LG9yKFB0NCwhUHU0KSkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBCeXRlIFE2X3BfYW5kX29yX3BwbnAoQnl0ZSBQcywgQnl0ZSBQdCwgQnl0ZSBQdSkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDUgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9wX2FuZF9vcl9wcG5wIF9fYnVpbHRpbl9IRVhBR09OX0M0X2FuZF9vcm4KCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUGQ0PSFjbXAuZ3QoUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEJ5dGUgUTZfcF9ub3RfY21wX2d0X1JSKFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTMyXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X3Bfbm90X2NtcF9ndF9SUiBfX2J1aWx0aW5fSEVYQUdPTl9DNF9jbXBsdGUKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUGQ0PSFjbXAuZ3QoUnMzMiwjczEwKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEJ5dGUgUTZfcF9ub3RfY21wX2d0X1JJKFdvcmQzMiBScywgV29yZDMyIElzMTApCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVMzJfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfcF9ub3RfY21wX2d0X1JJIF9fYnVpbHRpbl9IRVhBR09OX0M0X2NtcGx0ZWkKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUGQ0PSFjbXAuZ3R1KFJzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBCeXRlIFE2X3Bfbm90X2NtcF9ndHVfUlIoV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVMzJfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfcF9ub3RfY21wX2d0dV9SUiBfX2J1aWx0aW5fSEVYQUdPTl9DNF9jbXBsdGV1CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFBkND0hY21wLmd0dShSczMyLCN1OSkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBCeXRlIFE2X3Bfbm90X2NtcF9ndHVfUkkoV29yZDMyIFJzLCBXb3JkMzIgSXU5KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTMyXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X3Bfbm90X2NtcF9ndHVfUkkgX19idWlsdGluX0hFWEFHT05fQzRfY21wbHRldWkKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUGQ0PSFjbXAuZXEoUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEJ5dGUgUTZfcF9ub3RfY21wX2VxX1JSKFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTMyXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X3Bfbm90X2NtcF9lcV9SUiBfX2J1aWx0aW5fSEVYQUdPTl9DNF9jbXBuZXEKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUGQ0PSFjbXAuZXEoUnMzMiwjczEwKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEJ5dGUgUTZfcF9ub3RfY21wX2VxX1JJKFdvcmQzMiBScywgV29yZDMyIElzMTApCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVMzJfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfcF9ub3RfY21wX2VxX1JJIF9fYnVpbHRpbl9IRVhBR09OX0M0X2NtcG5lcWkKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUGQ0PWZhc3Rjb3JuZXI5KFBzNCxQdDQpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogQnl0ZSBRNl9wX2Zhc3Rjb3JuZXI5X3BwKEJ5dGUgUHMsIEJ5dGUgUHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1IKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfcF9mYXN0Y29ybmVyOV9wcCBfX2J1aWx0aW5fSEVYQUdPTl9DNF9mYXN0Y29ybmVyOQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBQZDQ9IWZhc3Rjb3JuZXI5KFBzNCxQdDQpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogQnl0ZSBRNl9wX25vdF9mYXN0Y29ybmVyOV9wcChCeXRlIFBzLCBCeXRlIFB0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENSCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X3Bfbm90X2Zhc3Rjb3JuZXI5X3BwIF9fYnVpbHRpbl9IRVhBR09OX0M0X2Zhc3Rjb3JuZXI5X25vdAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBQZDQ9IWJpdHNjbHIoUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEJ5dGUgUTZfcF9ub3RfYml0c2Nscl9SUihXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9wX25vdF9iaXRzY2xyX1JSIF9fYnVpbHRpbl9IRVhBR09OX0M0X25iaXRzY2xyCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFBkND0hYml0c2NscihSczMyLCN1NikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBCeXRlIFE2X3Bfbm90X2JpdHNjbHJfUkkoV29yZDMyIFJzLCBXb3JkMzIgSXU2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X3Bfbm90X2JpdHNjbHJfUkkgX19idWlsdGluX0hFWEFHT05fQzRfbmJpdHNjbHJpCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFBkND0hYml0c3NldChSczMyLFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogQnl0ZSBRNl9wX25vdF9iaXRzc2V0X1JSKFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X3Bfbm90X2JpdHNzZXRfUlIgX19idWlsdGluX0hFWEFHT05fQzRfbmJpdHNzZXQKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUGQ0PW9yKFBzNCxhbmQoUHQ0LFB1NCkpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogQnl0ZSBRNl9wX29yX2FuZF9wcHAoQnl0ZSBQcywgQnl0ZSBQdCwgQnl0ZSBQdSkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDUgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9wX29yX2FuZF9wcHAgX19idWlsdGluX0hFWEFHT05fQzRfb3JfYW5kCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFBkND1vcihQczQsYW5kKFB0NCwhUHU0KSkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBCeXRlIFE2X3Bfb3JfYW5kX3BwbnAoQnl0ZSBQcywgQnl0ZSBQdCwgQnl0ZSBQdSkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDUgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9wX29yX2FuZF9wcG5wIF9fYnVpbHRpbl9IRVhBR09OX0M0X29yX2FuZG4KCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUGQ0PW9yKFBzNCxvcihQdDQsUHU0KSkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBCeXRlIFE2X3Bfb3Jfb3JfcHBwKEJ5dGUgUHMsIEJ5dGUgUHQsIEJ5dGUgUHUpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1IKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfcF9vcl9vcl9wcHAgX19idWlsdGluX0hFWEFHT05fQzRfb3Jfb3IKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUGQ0PW9yKFBzNCxvcihQdDQsIVB1NCkpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogQnl0ZSBRNl9wX29yX29yX3BwbnAoQnl0ZSBQcywgQnl0ZSBQdCwgQnl0ZSBQdSkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDUgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9wX29yX29yX3BwbnAgX19idWlsdGluX0hFWEFHT05fQzRfb3Jfb3JuCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPWNvbnZlcnRfZDJkZihSc3MzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBGbG9hdDY0IFE2X1BfY29udmVydF9kMmRmX1AoV29yZDY0IFJzcykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX2NvbnZlcnRfZDJkZl9QIF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfZDJkZgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPWNvbnZlcnRfZDJzZihSc3MzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBGbG9hdDMyIFE2X1JfY29udmVydF9kMnNmX1AoV29yZDY0IFJzcykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2NvbnZlcnRfZDJzZl9QIF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfZDJzZgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj1jb252ZXJ0X2RmMmQoUnNzMzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfY29udmVydF9kZjJkX1AoRmxvYXQ2NCBSc3MpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9jb252ZXJ0X2RmMmRfUCBfX2J1aWx0aW5fSEVYQUdPTl9GMl9jb252X2RmMmQKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9Y29udmVydF9kZjJkKFJzczMyKTpjaG9wCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfY29udmVydF9kZjJkX1BfY2hvcChGbG9hdDY0IFJzcykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX2NvbnZlcnRfZGYyZF9QX2Nob3AgX19idWlsdGluX0hFWEFHT05fRjJfY29udl9kZjJkX2Nob3AKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1jb252ZXJ0X2RmMnNmKFJzczMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEZsb2F0MzIgUTZfUl9jb252ZXJ0X2RmMnNmX1AoRmxvYXQ2NCBSc3MpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9jb252ZXJ0X2RmMnNmX1AgX19idWlsdGluX0hFWEFHT05fRjJfY29udl9kZjJzZgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj1jb252ZXJ0X2RmMnVkKFJzczMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX2NvbnZlcnRfZGYydWRfUChGbG9hdDY0IFJzcykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX2NvbnZlcnRfZGYydWRfUCBfX2J1aWx0aW5fSEVYQUdPTl9GMl9jb252X2RmMnVkCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPWNvbnZlcnRfZGYydWQoUnNzMzIpOmNob3AKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9jb252ZXJ0X2RmMnVkX1BfY2hvcChGbG9hdDY0IFJzcykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX2NvbnZlcnRfZGYydWRfUF9jaG9wIF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfZGYydWRfY2hvcAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPWNvbnZlcnRfZGYydXcoUnNzMzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfY29udmVydF9kZjJ1d19QKEZsb2F0NjQgUnNzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfY29udmVydF9kZjJ1d19QIF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfZGYydXcKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1jb252ZXJ0X2RmMnV3KFJzczMyKTpjaG9wCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfY29udmVydF9kZjJ1d19QX2Nob3AoRmxvYXQ2NCBSc3MpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9jb252ZXJ0X2RmMnV3X1BfY2hvcCBfX2J1aWx0aW5fSEVYQUdPTl9GMl9jb252X2RmMnV3X2Nob3AKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1jb252ZXJ0X2RmMncoUnNzMzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfY29udmVydF9kZjJ3X1AoRmxvYXQ2NCBSc3MpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9jb252ZXJ0X2RmMndfUCBfX2J1aWx0aW5fSEVYQUdPTl9GMl9jb252X2RmMncKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1jb252ZXJ0X2RmMncoUnNzMzIpOmNob3AKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9jb252ZXJ0X2RmMndfUF9jaG9wKEZsb2F0NjQgUnNzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfY29udmVydF9kZjJ3X1BfY2hvcCBfX2J1aWx0aW5fSEVYQUdPTl9GMl9jb252X2RmMndfY2hvcAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj1jb252ZXJ0X3NmMmQoUnMzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9jb252ZXJ0X3NmMmRfUihGbG9hdDMyIFJzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfY29udmVydF9zZjJkX1IgX19idWlsdGluX0hFWEFHT05fRjJfY29udl9zZjJkCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPWNvbnZlcnRfc2YyZChSczMyKTpjaG9wCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfY29udmVydF9zZjJkX1JfY2hvcChGbG9hdDMyIFJzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfY29udmVydF9zZjJkX1JfY2hvcCBfX2J1aWx0aW5fSEVYQUdPTl9GMl9jb252X3NmMmRfY2hvcAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj1jb252ZXJ0X3NmMmRmKFJzMzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogRmxvYXQ2NCBRNl9QX2NvbnZlcnRfc2YyZGZfUihGbG9hdDMyIFJzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfY29udmVydF9zZjJkZl9SIF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfc2YyZGYKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9Y29udmVydF9zZjJ1ZChSczMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX2NvbnZlcnRfc2YydWRfUihGbG9hdDMyIFJzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfY29udmVydF9zZjJ1ZF9SIF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfc2YydWQKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9Y29udmVydF9zZjJ1ZChSczMyKTpjaG9wCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfY29udmVydF9zZjJ1ZF9SX2Nob3AoRmxvYXQzMiBScykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX2NvbnZlcnRfc2YydWRfUl9jaG9wIF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfc2YydWRfY2hvcAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPWNvbnZlcnRfc2YydXcoUnMzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9jb252ZXJ0X3NmMnV3X1IoRmxvYXQzMiBScykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2NvbnZlcnRfc2YydXdfUiBfX2J1aWx0aW5fSEVYQUdPTl9GMl9jb252X3NmMnV3CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9Y29udmVydF9zZjJ1dyhSczMyKTpjaG9wCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfY29udmVydF9zZjJ1d19SX2Nob3AoRmxvYXQzMiBScykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2NvbnZlcnRfc2YydXdfUl9jaG9wIF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfc2YydXdfY2hvcAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPWNvbnZlcnRfc2YydyhSczMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2NvbnZlcnRfc2Yyd19SKEZsb2F0MzIgUnMpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9jb252ZXJ0X3NmMndfUiBfX2J1aWx0aW5fSEVYQUdPTl9GMl9jb252X3NmMncKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1jb252ZXJ0X3NmMncoUnMzMik6Y2hvcAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2NvbnZlcnRfc2Yyd19SX2Nob3AoRmxvYXQzMiBScykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2NvbnZlcnRfc2Yyd19SX2Nob3AgX19idWlsdGluX0hFWEFHT05fRjJfY29udl9zZjJ3X2Nob3AKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9Y29udmVydF91ZDJkZihSc3MzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBGbG9hdDY0IFE2X1BfY29udmVydF91ZDJkZl9QKFdvcmQ2NCBSc3MpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9jb252ZXJ0X3VkMmRmX1AgX19idWlsdGluX0hFWEFHT05fRjJfY29udl91ZDJkZgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPWNvbnZlcnRfdWQyc2YoUnNzMzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogRmxvYXQzMiBRNl9SX2NvbnZlcnRfdWQyc2ZfUChXb3JkNjQgUnNzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfY29udmVydF91ZDJzZl9QIF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfdWQyc2YKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9Y29udmVydF91dzJkZihSczMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEZsb2F0NjQgUTZfUF9jb252ZXJ0X3V3MmRmX1IoV29yZDMyIFJzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfY29udmVydF91dzJkZl9SIF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfdXcyZGYKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1jb252ZXJ0X3V3MnNmKFJzMzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogRmxvYXQzMiBRNl9SX2NvbnZlcnRfdXcyc2ZfUihXb3JkMzIgUnMpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9jb252ZXJ0X3V3MnNmX1IgX19idWlsdGluX0hFWEFHT05fRjJfY29udl91dzJzZgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj1jb252ZXJ0X3cyZGYoUnMzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBGbG9hdDY0IFE2X1BfY29udmVydF93MmRmX1IoV29yZDMyIFJzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfY29udmVydF93MmRmX1IgX19idWlsdGluX0hFWEFHT05fRjJfY29udl93MmRmCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9Y29udmVydF93MnNmKFJzMzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogRmxvYXQzMiBRNl9SX2NvbnZlcnRfdzJzZl9SKFdvcmQzMiBScykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2NvbnZlcnRfdzJzZl9SIF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfdzJzZgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBQZDQ9ZGZjbGFzcyhSc3MzMiwjdTUpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogQnl0ZSBRNl9wX2RmY2xhc3NfUEkoRmxvYXQ2NCBSc3MsIFdvcmQzMiBJdTUpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfcF9kZmNsYXNzX1BJIF9fYnVpbHRpbl9IRVhBR09OX0YyX2RmY2xhc3MKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUGQ0PWRmY21wLmVxKFJzczMyLFJ0dDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEJ5dGUgUTZfcF9kZmNtcF9lcV9QUChGbG9hdDY0IFJzcywgRmxvYXQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfcF9kZmNtcF9lcV9QUCBfX2J1aWx0aW5fSEVYQUdPTl9GMl9kZmNtcGVxCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFBkND1kZmNtcC5nZShSc3MzMixSdHQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBCeXRlIFE2X3BfZGZjbXBfZ2VfUFAoRmxvYXQ2NCBSc3MsIEZsb2F0NjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X3BfZGZjbXBfZ2VfUFAgX19idWlsdGluX0hFWEFHT05fRjJfZGZjbXBnZQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBQZDQ9ZGZjbXAuZ3QoUnNzMzIsUnR0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogQnl0ZSBRNl9wX2RmY21wX2d0X1BQKEZsb2F0NjQgUnNzLCBGbG9hdDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9wX2RmY21wX2d0X1BQIF9fYnVpbHRpbl9IRVhBR09OX0YyX2RmY21wZ3QKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUGQ0PWRmY21wLnVvKFJzczMyLFJ0dDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEJ5dGUgUTZfcF9kZmNtcF91b19QUChGbG9hdDY0IFJzcywgRmxvYXQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfcF9kZmNtcF91b19QUCBfX2J1aWx0aW5fSEVYQUdPTl9GMl9kZmNtcHVvCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPWRmbWFrZSgjdTEwKTpuZWcKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBGbG9hdDY0IFE2X1BfZGZtYWtlX0lfbmVnKFdvcmQzMiBJdTEwKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfZGZtYWtlX0lfbmVnIF9fYnVpbHRpbl9IRVhBR09OX0YyX2RmaW1tX24KCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9ZGZtYWtlKCN1MTApOnBvcwogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEZsb2F0NjQgUTZfUF9kZm1ha2VfSV9wb3MoV29yZDMyIEl1MTApCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9kZm1ha2VfSV9wb3MgX19idWlsdGluX0hFWEFHT05fRjJfZGZpbW1fcAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPXNmYWRkKFJzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBGbG9hdDMyIFE2X1Jfc2ZhZGRfUlIoRmxvYXQzMiBScywgRmxvYXQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Jfc2ZhZGRfUlIgX19idWlsdGluX0hFWEFHT05fRjJfc2ZhZGQKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUGQ0PXNmY2xhc3MoUnMzMiwjdTUpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogQnl0ZSBRNl9wX3NmY2xhc3NfUkkoRmxvYXQzMiBScywgV29yZDMyIEl1NSkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9wX3NmY2xhc3NfUkkgX19idWlsdGluX0hFWEFHT05fRjJfc2ZjbGFzcwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBQZDQ9c2ZjbXAuZXEoUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEJ5dGUgUTZfcF9zZmNtcF9lcV9SUihGbG9hdDMyIFJzLCBGbG9hdDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X3Bfc2ZjbXBfZXFfUlIgX19idWlsdGluX0hFWEFHT05fRjJfc2ZjbXBlcQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBQZDQ9c2ZjbXAuZ2UoUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEJ5dGUgUTZfcF9zZmNtcF9nZV9SUihGbG9hdDMyIFJzLCBGbG9hdDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X3Bfc2ZjbXBfZ2VfUlIgX19idWlsdGluX0hFWEFHT05fRjJfc2ZjbXBnZQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBQZDQ9c2ZjbXAuZ3QoUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEJ5dGUgUTZfcF9zZmNtcF9ndF9SUihGbG9hdDMyIFJzLCBGbG9hdDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X3Bfc2ZjbXBfZ3RfUlIgX19idWlsdGluX0hFWEFHT05fRjJfc2ZjbXBndAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBQZDQ9c2ZjbXAudW8oUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEJ5dGUgUTZfcF9zZmNtcF91b19SUihGbG9hdDMyIFJzLCBGbG9hdDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X3Bfc2ZjbXBfdW9fUlIgX19idWlsdGluX0hFWEFHT05fRjJfc2ZjbXB1bwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPXNmZml4dXBkKFJzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBGbG9hdDMyIFE2X1Jfc2ZmaXh1cGRfUlIoRmxvYXQzMiBScywgRmxvYXQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Jfc2ZmaXh1cGRfUlIgX19idWlsdGluX0hFWEFHT05fRjJfc2ZmaXh1cGQKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1zZmZpeHVwbihSczMyLFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogRmxvYXQzMiBRNl9SX3NmZml4dXBuX1JSKEZsb2F0MzIgUnMsIEZsb2F0MzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX3NmZml4dXBuX1JSIF9fYnVpbHRpbl9IRVhBR09OX0YyX3NmZml4dXBuCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9c2ZmaXh1cHIoUnMzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBGbG9hdDMyIFE2X1Jfc2ZmaXh1cHJfUihGbG9hdDMyIFJzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Jfc2ZmaXh1cHJfUiBfX2J1aWx0aW5fSEVYQUdPTl9GMl9zZmZpeHVwcgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeDMyKz1zZm1weShSczMyLFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogRmxvYXQzMiBRNl9SX3NmbXB5YWNjX1JSKEZsb2F0MzIgUngsIEZsb2F0MzIgUnMsIEZsb2F0MzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX3NmbXB5YWNjX1JSIF9fYnVpbHRpbl9IRVhBR09OX0YyX3NmZm1hCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzIrPXNmbXB5KFJzMzIsUnQzMik6bGliCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogRmxvYXQzMiBRNl9SX3NmbXB5YWNjX1JSX2xpYihGbG9hdDMyIFJ4LCBGbG9hdDMyIFJzLCBGbG9hdDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9zZm1weWFjY19SUl9saWIgX19idWlsdGluX0hFWEFHT05fRjJfc2ZmbWFfbGliCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzIrPXNmbXB5KFJzMzIsUnQzMixQdTQpOnNjYWxlCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogRmxvYXQzMiBRNl9SX3NmbXB5YWNjX1JScF9zY2FsZShGbG9hdDMyIFJ4LCBGbG9hdDMyIFJzLCBGbG9hdDMyIFJ0LCBCeXRlIFB1KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9zZm1weWFjY19SUnBfc2NhbGUgX19idWlsdGluX0hFWEFHT05fRjJfc2ZmbWFfc2MKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUngzMi09c2ZtcHkoUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEZsb2F0MzIgUTZfUl9zZm1weW5hY19SUihGbG9hdDMyIFJ4LCBGbG9hdDMyIFJzLCBGbG9hdDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9zZm1weW5hY19SUiBfX2J1aWx0aW5fSEVYQUdPTl9GMl9zZmZtcwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeDMyLT1zZm1weShSczMyLFJ0MzIpOmxpYgogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEZsb2F0MzIgUTZfUl9zZm1weW5hY19SUl9saWIoRmxvYXQzMiBSeCwgRmxvYXQzMiBScywgRmxvYXQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Jfc2ZtcHluYWNfUlJfbGliIF9fYnVpbHRpbl9IRVhBR09OX0YyX3NmZm1zX2xpYgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPXNmbWFrZSgjdTEwKTpuZWcKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBGbG9hdDMyIFE2X1Jfc2ZtYWtlX0lfbmVnKFdvcmQzMiBJdTEwKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Jfc2ZtYWtlX0lfbmVnIF9fYnVpbHRpbl9IRVhBR09OX0YyX3NmaW1tX24KCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1zZm1ha2UoI3UxMCk6cG9zCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogRmxvYXQzMiBRNl9SX3NmbWFrZV9JX3BvcyhXb3JkMzIgSXUxMCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX3NmbWFrZV9JX3BvcyBfX2J1aWx0aW5fSEVYQUdPTl9GMl9zZmltbV9wCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9c2ZtYXgoUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEZsb2F0MzIgUTZfUl9zZm1heF9SUihGbG9hdDMyIFJzLCBGbG9hdDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9zZm1heF9SUiBfX2J1aWx0aW5fSEVYQUdPTl9GMl9zZm1heAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPXNmbWluKFJzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBGbG9hdDMyIFE2X1Jfc2ZtaW5fUlIoRmxvYXQzMiBScywgRmxvYXQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Jfc2ZtaW5fUlIgX19idWlsdGluX0hFWEFHT05fRjJfc2ZtaW4KCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1zZm1weShSczMyLFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogRmxvYXQzMiBRNl9SX3NmbXB5X1JSKEZsb2F0MzIgUnMsIEZsb2F0MzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX3NmbXB5X1JSIF9fYnVpbHRpbl9IRVhBR09OX0YyX3NmbXB5CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9c2ZzdWIoUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEZsb2F0MzIgUTZfUl9zZnN1Yl9SUihGbG9hdDMyIFJzLCBGbG9hdDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9zZnN1Yl9SUiBfX2J1aWx0aW5fSEVYQUdPTl9GMl9zZnN1YgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPW1lbWIoUngzMisrI3M0OjA6Y2lyYyhNdTIpKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX21lbWJfSU1fY2lyYyh2b2lkKiogUngsIFdvcmQzMiBJczRfMCwgV29yZDMyIE11LCB2b2lkKiBCYXNlQWRkcmVzcykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBMRAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21lbWJfSU1fY2lyYyBfX2J1aWx0aW5fSEVYQUdPTl9MMl9sb2FkcmJfcGNpCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9bWVtYihSeDMyKytJOmNpcmMoTXUyKSkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9tZW1iX01fY2lyYyh2b2lkKiogUngsIFdvcmQzMiBNdSwgdm9pZCogQmFzZUFkZHJlc3MpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTEQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9tZW1iX01fY2lyYyBfX2J1aWx0aW5fSEVYQUdPTl9MMl9sb2FkcmJfcGNyCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPW1lbWQoUngzMisrI3M0OjM6Y2lyYyhNdTIpKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX21lbWRfSU1fY2lyYyh2b2lkKiogUngsIFdvcmQzMiBJczRfMywgV29yZDMyIE11LCB2b2lkKiBCYXNlQWRkcmVzcykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBMRAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX21lbWRfSU1fY2lyYyBfX2J1aWx0aW5fSEVYQUdPTl9MMl9sb2FkcmRfcGNpCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPW1lbWQoUngzMisrSTpjaXJjKE11MikpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfbWVtZF9NX2NpcmModm9pZCoqIFJ4LCBXb3JkMzIgTXUsIHZvaWQqIEJhc2VBZGRyZXNzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIExECiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfbWVtZF9NX2NpcmMgX19idWlsdGluX0hFWEFHT05fTDJfbG9hZHJkX3BjcgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPW1lbWgoUngzMisrI3M0OjE6Y2lyYyhNdTIpKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX21lbWhfSU1fY2lyYyh2b2lkKiogUngsIFdvcmQzMiBJczRfMSwgV29yZDMyIE11LCB2b2lkKiBCYXNlQWRkcmVzcykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBMRAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21lbWhfSU1fY2lyYyBfX2J1aWx0aW5fSEVYQUdPTl9MMl9sb2FkcmhfcGNpCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9bWVtaChSeDMyKytJOmNpcmMoTXUyKSkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9tZW1oX01fY2lyYyh2b2lkKiogUngsIFdvcmQzMiBNdSwgdm9pZCogQmFzZUFkZHJlc3MpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTEQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9tZW1oX01fY2lyYyBfX2J1aWx0aW5fSEVYQUdPTl9MMl9sb2FkcmhfcGNyCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9bWVtdyhSeDMyKysjczQ6MjpjaXJjKE11MikpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfbWVtd19JTV9jaXJjKHZvaWQqKiBSeCwgV29yZDMyIElzNF8yLCBXb3JkMzIgTXUsIHZvaWQqIEJhc2VBZGRyZXNzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIExECiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfbWVtd19JTV9jaXJjIF9fYnVpbHRpbl9IRVhBR09OX0wyX2xvYWRyaV9wY2kKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1tZW13KFJ4MzIrK0k6Y2lyYyhNdTIpKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX21lbXdfTV9jaXJjKHZvaWQqKiBSeCwgV29yZDMyIE11LCB2b2lkKiBCYXNlQWRkcmVzcykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBMRAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21lbXdfTV9jaXJjIF9fYnVpbHRpbl9IRVhBR09OX0wyX2xvYWRyaV9wY3IKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1tZW11YihSeDMyKysjczQ6MDpjaXJjKE11MikpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfbWVtdWJfSU1fY2lyYyh2b2lkKiogUngsIFdvcmQzMiBJczRfMCwgV29yZDMyIE11LCB2b2lkKiBCYXNlQWRkcmVzcykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBMRAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21lbXViX0lNX2NpcmMgX19idWlsdGluX0hFWEFHT05fTDJfbG9hZHJ1Yl9wY2kKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1tZW11YihSeDMyKytJOmNpcmMoTXUyKSkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9tZW11Yl9NX2NpcmModm9pZCoqIFJ4LCBXb3JkMzIgTXUsIHZvaWQqIEJhc2VBZGRyZXNzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIExECiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfbWVtdWJfTV9jaXJjIF9fYnVpbHRpbl9IRVhBR09OX0wyX2xvYWRydWJfcGNyCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9bWVtdWgoUngzMisrI3M0OjE6Y2lyYyhNdTIpKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX21lbXVoX0lNX2NpcmModm9pZCoqIFJ4LCBXb3JkMzIgSXM0XzEsIFdvcmQzMiBNdSwgdm9pZCogQmFzZUFkZHJlc3MpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTEQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9tZW11aF9JTV9jaXJjIF9fYnVpbHRpbl9IRVhBR09OX0wyX2xvYWRydWhfcGNpCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9bWVtdWgoUngzMisrSTpjaXJjKE11MikpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfbWVtdWhfTV9jaXJjKHZvaWQqKiBSeCwgV29yZDMyIE11LCB2b2lkKiBCYXNlQWRkcmVzcykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBMRAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21lbXVoX01fY2lyYyBfX2J1aWx0aW5fSEVYQUdPTl9MMl9sb2FkcnVoX3BjcgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeDMyKz1hZGQoUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2FkZGFjY19SUihXb3JkMzIgUngsIFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9hZGRhY2NfUlIgX19idWlsdGluX0hFWEFHT05fTTJfYWNjaQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeDMyKz1hZGQoUnMzMiwjczgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfYWRkYWNjX1JJKFdvcmQzMiBSeCwgV29yZDMyIFJzLCBXb3JkMzIgSXM4KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9hZGRhY2NfUkkgX19idWlsdGluX0hFWEFHT05fTTJfYWNjaWkKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzIrPWNtcHlpKFJzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9jbXB5aWFjY19SUihXb3JkNjQgUnh4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfY21weWlhY2NfUlIgX19idWlsdGluX0hFWEFHT05fTTJfY21hY2lfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzIrPWNtcHlyKFJzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9jbXB5cmFjY19SUihXb3JkNjQgUnh4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfY21weXJhY2NfUlIgX19idWlsdGluX0hFWEFHT05fTTJfY21hY3JfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzIrPWNtcHkoUnMzMixSdDMyKTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9jbXB5YWNjX1JSX3NhdChXb3JkNjQgUnh4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfY21weWFjY19SUl9zYXQgX19idWlsdGluX0hFWEFHT05fTTJfY21hY3NfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzIrPWNtcHkoUnMzMixSdDMyKTo8PDE6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfY21weWFjY19SUl9zMV9zYXQoV29yZDY0IFJ4eCwgV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX2NtcHlhY2NfUlJfczFfc2F0IF9fYnVpbHRpbl9IRVhBR09OX00yX2NtYWNzX3MxCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4eDMyKz1jbXB5KFJzMzIsUnQzMiopOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX2NtcHlhY2NfUlJfY29ual9zYXQoV29yZDY0IFJ4eCwgV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX2NtcHlhY2NfUlJfY29ual9zYXQgX19idWlsdGluX0hFWEFHT05fTTJfY21hY3NjX3MwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4eDMyKz1jbXB5KFJzMzIsUnQzMiopOjw8MTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9jbXB5YWNjX1JSX2NvbmpfczFfc2F0KFdvcmQ2NCBSeHgsIFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9jbXB5YWNjX1JSX2NvbmpfczFfc2F0IF9fYnVpbHRpbl9IRVhBR09OX00yX2NtYWNzY19zMQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj1jbXB5aShSczMyLFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfY21weWlfUlIoV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX2NtcHlpX1JSIF9fYnVpbHRpbl9IRVhBR09OX00yX2NtcHlpX3MwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPWNtcHlyKFJzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9jbXB5cl9SUihXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfY21weXJfUlIgX19idWlsdGluX0hFWEFHT05fTTJfY21weXJfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1jbXB5KFJzMzIsUnQzMik6cm5kOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2NtcHlfUlJfcm5kX3NhdChXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfY21weV9SUl9ybmRfc2F0IF9fYnVpbHRpbl9IRVhBR09OX00yX2NtcHlyc19zMAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPWNtcHkoUnMzMixSdDMyKTo8PDE6cm5kOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2NtcHlfUlJfczFfcm5kX3NhdChXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfY21weV9SUl9zMV9ybmRfc2F0IF9fYnVpbHRpbl9IRVhBR09OX00yX2NtcHlyc19zMQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPWNtcHkoUnMzMixSdDMyKik6cm5kOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2NtcHlfUlJfY29ual9ybmRfc2F0KFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9jbXB5X1JSX2Nvbmpfcm5kX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9jbXB5cnNjX3MwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9Y21weShSczMyLFJ0MzIqKTo8PDE6cm5kOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2NtcHlfUlJfY29ual9zMV9ybmRfc2F0KFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9jbXB5X1JSX2NvbmpfczFfcm5kX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9jbXB5cnNjX3MxCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPWNtcHkoUnMzMixSdDMyKTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9jbXB5X1JSX3NhdChXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfY21weV9SUl9zYXQgX19idWlsdGluX0hFWEFHT05fTTJfY21weXNfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9Y21weShSczMyLFJ0MzIpOjw8MTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9jbXB5X1JSX3MxX3NhdChXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfY21weV9SUl9zMV9zYXQgX19idWlsdGluX0hFWEFHT05fTTJfY21weXNfczEKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9Y21weShSczMyLFJ0MzIqKTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9jbXB5X1JSX2Nvbmpfc2F0KFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9jbXB5X1JSX2Nvbmpfc2F0IF9fYnVpbHRpbl9IRVhBR09OX00yX2NtcHlzY19zMAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj1jbXB5KFJzMzIsUnQzMiopOjw8MTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9jbXB5X1JSX2NvbmpfczFfc2F0KFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9jbXB5X1JSX2NvbmpfczFfc2F0IF9fYnVpbHRpbl9IRVhBR09OX00yX2NtcHlzY19zMQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMi09Y21weShSczMyLFJ0MzIpOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX2NtcHluYWNfUlJfc2F0KFdvcmQ2NCBSeHgsIFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9jbXB5bmFjX1JSX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9jbmFjc19zMAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMi09Y21weShSczMyLFJ0MzIpOjw8MTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9jbXB5bmFjX1JSX3MxX3NhdChXb3JkNjQgUnh4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfY21weW5hY19SUl9zMV9zYXQgX19idWlsdGluX0hFWEFHT05fTTJfY25hY3NfczEKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzItPWNtcHkoUnMzMixSdDMyKik6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfY21weW5hY19SUl9jb25qX3NhdChXb3JkNjQgUnh4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfY21weW5hY19SUl9jb25qX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9jbmFjc2NfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzItPWNtcHkoUnMzMixSdDMyKik6PDwxOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX2NtcHluYWNfUlJfY29ual9zMV9zYXQoV29yZDY0IFJ4eCwgV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX2NtcHluYWNfUlJfY29ual9zMV9zYXQgX19idWlsdGluX0hFWEFHT05fTTJfY25hY3NjX3MxCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4eDMyKz1tcHkoUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX21weWFjY19SUihXb3JkNjQgUnh4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfbXB5YWNjX1JSIF9fYnVpbHRpbl9IRVhBR09OX00yX2RwbXB5c3NfYWNjX3MwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4eDMyLT1tcHkoUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX21weW5hY19SUihXb3JkNjQgUnh4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfbXB5bmFjX1JSIF9fYnVpbHRpbl9IRVhBR09OX00yX2RwbXB5c3NfbmFjX3MwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9bXB5KFJzMzIsUnQzMik6cm5kCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfbXB5X1JSX3JuZChXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfbXB5X1JSX3JuZCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9kcG1weXNzX3JuZF9zMAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj1tcHkoUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX21weV9SUihXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfbXB5X1JSIF9fYnVpbHRpbl9IRVhBR09OX00yX2RwbXB5c3NfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzIrPW1weXUoUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX21weXVhY2NfUlIoV29yZDY0IFJ4eCwgV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX21weXVhY2NfUlIgX19idWlsdGluX0hFWEFHT05fTTJfZHBtcHl1dV9hY2NfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzItPW1weXUoUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX21weXVuYWNfUlIoV29yZDY0IFJ4eCwgV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX21weXVuYWNfUlIgX19idWlsdGluX0hFWEFHT05fTTJfZHBtcHl1dV9uYWNfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9bXB5dShSczMyLFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogVVdvcmQ2NCBRNl9QX21weXVfUlIoV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX21weXVfUlIgX19idWlsdGluX0hFWEFHT05fTTJfZHBtcHl1dV9zMAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPW1weShSczMyLFJ0MzIuaCk6PDwxOnJuZDpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9tcHlfUlJoX3MxX3JuZF9zYXQoV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21weV9SUmhfczFfcm5kX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9obW1weWhfcnMxCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9bXB5KFJzMzIsUnQzMi5oKTo8PDE6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfbXB5X1JSaF9zMV9zYXQoV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21weV9SUmhfczFfc2F0IF9fYnVpbHRpbl9IRVhBR09OX00yX2htbXB5aF9zMQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPW1weShSczMyLFJ0MzIubCk6PDwxOnJuZDpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9tcHlfUlJsX3MxX3JuZF9zYXQoV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21weV9SUmxfczFfcm5kX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9obW1weWxfcnMxCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9bXB5KFJzMzIsUnQzMi5sKTo8PDE6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfbXB5X1JSbF9zMV9zYXQoV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21weV9SUmxfczFfc2F0IF9fYnVpbHRpbl9IRVhBR09OX00yX2htbXB5bF9zMQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeDMyKz1tcHlpKFJzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9tcHlpYWNjX1JSKFdvcmQzMiBSeCwgV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21weWlhY2NfUlIgX19idWlsdGluX0hFWEFHT05fTTJfbWFjaQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeDMyLT1tcHlpKFJzMzIsI3U4KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX21weWluYWNfUkkoV29yZDMyIFJ4LCBXb3JkMzIgUnMsIFdvcmQzMiBJdTgpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21weWluYWNfUkkgX19idWlsdGluX0hFWEFHT05fTTJfbWFjc2luCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzIrPW1weWkoUnMzMiwjdTgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfbXB5aWFjY19SSShXb3JkMzIgUngsIFdvcmQzMiBScywgV29yZDMyIEl1OCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfbXB5aWFjY19SSSBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tYWNzaXAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzIrPXZtcHl3b2goUnNzMzIsUnR0MzIpOnJuZDpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92bXB5d29oYWNjX1BQX3JuZF9zYXQoV29yZDY0IFJ4eCwgV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Bfdm1weXdvaGFjY19QUF9ybmRfc2F0IF9fYnVpbHRpbl9IRVhBR09OX00yX21tYWNoc19yczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzIrPXZtcHl3b2goUnNzMzIsUnR0MzIpOjw8MTpybmQ6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1Bfdm1weXdvaGFjY19QUF9zMV9ybmRfc2F0KFdvcmQ2NCBSeHgsIFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZtcHl3b2hhY2NfUFBfczFfcm5kX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbWFjaHNfcnMxCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4eDMyKz12bXB5d29oKFJzczMyLFJ0dDMyKTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92bXB5d29oYWNjX1BQX3NhdChXb3JkNjQgUnh4LCBXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92bXB5d29oYWNjX1BQX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbWFjaHNfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzIrPXZtcHl3b2goUnNzMzIsUnR0MzIpOjw8MTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92bXB5d29oYWNjX1BQX3MxX3NhdChXb3JkNjQgUnh4LCBXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92bXB5d29oYWNjX1BQX3MxX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbWFjaHNfczEKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzIrPXZtcHl3ZWgoUnNzMzIsUnR0MzIpOnJuZDpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92bXB5d2VoYWNjX1BQX3JuZF9zYXQoV29yZDY0IFJ4eCwgV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Bfdm1weXdlaGFjY19QUF9ybmRfc2F0IF9fYnVpbHRpbl9IRVhBR09OX00yX21tYWNsc19yczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzIrPXZtcHl3ZWgoUnNzMzIsUnR0MzIpOjw8MTpybmQ6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1Bfdm1weXdlaGFjY19QUF9zMV9ybmRfc2F0KFdvcmQ2NCBSeHgsIFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZtcHl3ZWhhY2NfUFBfczFfcm5kX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbWFjbHNfcnMxCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4eDMyKz12bXB5d2VoKFJzczMyLFJ0dDMyKTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92bXB5d2VoYWNjX1BQX3NhdChXb3JkNjQgUnh4LCBXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92bXB5d2VoYWNjX1BQX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbWFjbHNfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzIrPXZtcHl3ZWgoUnNzMzIsUnR0MzIpOjw8MTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92bXB5d2VoYWNjX1BQX3MxX3NhdChXb3JkNjQgUnh4LCBXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92bXB5d2VoYWNjX1BQX3MxX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbWFjbHNfczEKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzIrPXZtcHl3b3VoKFJzczMyLFJ0dDMyKTpybmQ6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1Bfdm1weXdvdWhhY2NfUFBfcm5kX3NhdChXb3JkNjQgUnh4LCBXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92bXB5d291aGFjY19QUF9ybmRfc2F0IF9fYnVpbHRpbl9IRVhBR09OX00yX21tYWN1aHNfcnMwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4eDMyKz12bXB5d291aChSc3MzMixSdHQzMik6PDwxOnJuZDpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92bXB5d291aGFjY19QUF9zMV9ybmRfc2F0KFdvcmQ2NCBSeHgsIFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZtcHl3b3VoYWNjX1BQX3MxX3JuZF9zYXQgX19idWlsdGluX0hFWEFHT05fTTJfbW1hY3Voc19yczEKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzIrPXZtcHl3b3VoKFJzczMyLFJ0dDMyKTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92bXB5d291aGFjY19QUF9zYXQoV29yZDY0IFJ4eCwgV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Bfdm1weXdvdWhhY2NfUFBfc2F0IF9fYnVpbHRpbl9IRVhBR09OX00yX21tYWN1aHNfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzIrPXZtcHl3b3VoKFJzczMyLFJ0dDMyKTo8PDE6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1Bfdm1weXdvdWhhY2NfUFBfczFfc2F0KFdvcmQ2NCBSeHgsIFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZtcHl3b3VoYWNjX1BQX3MxX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbWFjdWhzX3MxCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4eDMyKz12bXB5d2V1aChSc3MzMixSdHQzMik6cm5kOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZtcHl3ZXVoYWNjX1BQX3JuZF9zYXQoV29yZDY0IFJ4eCwgV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Bfdm1weXdldWhhY2NfUFBfcm5kX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbWFjdWxzX3JzMAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMis9dm1weXdldWgoUnNzMzIsUnR0MzIpOjw8MTpybmQ6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1Bfdm1weXdldWhhY2NfUFBfczFfcm5kX3NhdChXb3JkNjQgUnh4LCBXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92bXB5d2V1aGFjY19QUF9zMV9ybmRfc2F0IF9fYnVpbHRpbl9IRVhBR09OX00yX21tYWN1bHNfcnMxCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4eDMyKz12bXB5d2V1aChSc3MzMixSdHQzMik6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1Bfdm1weXdldWhhY2NfUFBfc2F0KFdvcmQ2NCBSeHgsIFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZtcHl3ZXVoYWNjX1BQX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbWFjdWxzX3MwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4eDMyKz12bXB5d2V1aChSc3MzMixSdHQzMik6PDwxOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZtcHl3ZXVoYWNjX1BQX3MxX3NhdChXb3JkNjQgUnh4LCBXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92bXB5d2V1aGFjY19QUF9zMV9zYXQgX19idWlsdGluX0hFWEFHT05fTTJfbW1hY3Vsc19zMQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj12bXB5d29oKFJzczMyLFJ0dDMyKTpybmQ6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1Bfdm1weXdvaF9QUF9ybmRfc2F0KFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZtcHl3b2hfUFBfcm5kX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbXB5aF9yczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dm1weXdvaChSc3MzMixSdHQzMik6PDwxOnJuZDpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92bXB5d29oX1BQX3MxX3JuZF9zYXQoV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Bfdm1weXdvaF9QUF9zMV9ybmRfc2F0IF9fYnVpbHRpbl9IRVhBR09OX00yX21tcHloX3JzMQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj12bXB5d29oKFJzczMyLFJ0dDMyKTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92bXB5d29oX1BQX3NhdChXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92bXB5d29oX1BQX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbXB5aF9zMAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj12bXB5d29oKFJzczMyLFJ0dDMyKTo8PDE6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1Bfdm1weXdvaF9QUF9zMV9zYXQoV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Bfdm1weXdvaF9QUF9zMV9zYXQgX19idWlsdGluX0hFWEFHT05fTTJfbW1weWhfczEKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dm1weXdlaChSc3MzMixSdHQzMik6cm5kOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZtcHl3ZWhfUFBfcm5kX3NhdChXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92bXB5d2VoX1BQX3JuZF9zYXQgX19idWlsdGluX0hFWEFHT05fTTJfbW1weWxfcnMwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZtcHl3ZWgoUnNzMzIsUnR0MzIpOjw8MTpybmQ6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1Bfdm1weXdlaF9QUF9zMV9ybmRfc2F0KFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZtcHl3ZWhfUFBfczFfcm5kX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbXB5bF9yczEKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dm1weXdlaChSc3MzMixSdHQzMik6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1Bfdm1weXdlaF9QUF9zYXQoV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Bfdm1weXdlaF9QUF9zYXQgX19idWlsdGluX0hFWEFHT05fTTJfbW1weWxfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dm1weXdlaChSc3MzMixSdHQzMik6PDwxOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZtcHl3ZWhfUFBfczFfc2F0KFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZtcHl3ZWhfUFBfczFfc2F0IF9fYnVpbHRpbl9IRVhBR09OX00yX21tcHlsX3MxCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZtcHl3b3VoKFJzczMyLFJ0dDMyKTpybmQ6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1Bfdm1weXdvdWhfUFBfcm5kX3NhdChXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92bXB5d291aF9QUF9ybmRfc2F0IF9fYnVpbHRpbl9IRVhBR09OX00yX21tcHl1aF9yczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dm1weXdvdWgoUnNzMzIsUnR0MzIpOjw8MTpybmQ6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1Bfdm1weXdvdWhfUFBfczFfcm5kX3NhdChXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92bXB5d291aF9QUF9zMV9ybmRfc2F0IF9fYnVpbHRpbl9IRVhBR09OX00yX21tcHl1aF9yczEKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dm1weXdvdWgoUnNzMzIsUnR0MzIpOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZtcHl3b3VoX1BQX3NhdChXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92bXB5d291aF9QUF9zYXQgX19idWlsdGluX0hFWEFHT05fTTJfbW1weXVoX3MwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZtcHl3b3VoKFJzczMyLFJ0dDMyKTo8PDE6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1Bfdm1weXdvdWhfUFBfczFfc2F0KFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZtcHl3b3VoX1BQX3MxX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbXB5dWhfczEKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dm1weXdldWgoUnNzMzIsUnR0MzIpOnJuZDpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92bXB5d2V1aF9QUF9ybmRfc2F0KFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZtcHl3ZXVoX1BQX3JuZF9zYXQgX19idWlsdGluX0hFWEFHT05fTTJfbW1weXVsX3JzMAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj12bXB5d2V1aChSc3MzMixSdHQzMik6PDwxOnJuZDpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92bXB5d2V1aF9QUF9zMV9ybmRfc2F0KFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZtcHl3ZXVoX1BQX3MxX3JuZF9zYXQgX19idWlsdGluX0hFWEFHT05fTTJfbW1weXVsX3JzMQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj12bXB5d2V1aChSc3MzMixSdHQzMik6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1Bfdm1weXdldWhfUFBfc2F0KFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZtcHl3ZXVoX1BQX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbXB5dWxfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dm1weXdldWgoUnNzMzIsUnR0MzIpOjw8MTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92bXB5d2V1aF9QUF9zMV9zYXQoV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Bfdm1weXdldWhfUFBfczFfc2F0IF9fYnVpbHRpbl9IRVhBR09OX00yX21tcHl1bF9zMQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeDMyKz1tcHkoUnMzMi5oLFJ0MzIuaCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9tcHlhY2NfUmhSaChXb3JkMzIgUngsIFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9tcHlhY2NfUmhSaCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfYWNjX2hoX3MwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzIrPW1weShSczMyLmgsUnQzMi5oKTo8PDEKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9tcHlhY2NfUmhSaF9zMShXb3JkMzIgUngsIFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9tcHlhY2NfUmhSaF9zMSBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfYWNjX2hoX3MxCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzIrPW1weShSczMyLmgsUnQzMi5sKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX21weWFjY19SaFJsKFdvcmQzMiBSeCwgV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21weWFjY19SaFJsIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9hY2NfaGxfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUngzMis9bXB5KFJzMzIuaCxSdDMyLmwpOjw8MQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX21weWFjY19SaFJsX3MxKFdvcmQzMiBSeCwgV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21weWFjY19SaFJsX3MxIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9hY2NfaGxfczEKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUngzMis9bXB5KFJzMzIubCxSdDMyLmgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfbXB5YWNjX1JsUmgoV29yZDMyIFJ4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfbXB5YWNjX1JsUmggX19idWlsdGluX0hFWEFHT05fTTJfbXB5X2FjY19saF9zMAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeDMyKz1tcHkoUnMzMi5sLFJ0MzIuaCk6PDwxCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfbXB5YWNjX1JsUmhfczEoV29yZDMyIFJ4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfbXB5YWNjX1JsUmhfczEgX19idWlsdGluX0hFWEFHT05fTTJfbXB5X2FjY19saF9zMQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeDMyKz1tcHkoUnMzMi5sLFJ0MzIubCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9tcHlhY2NfUmxSbChXb3JkMzIgUngsIFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9tcHlhY2NfUmxSbCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfYWNjX2xsX3MwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzIrPW1weShSczMyLmwsUnQzMi5sKTo8PDEKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9tcHlhY2NfUmxSbF9zMShXb3JkMzIgUngsIFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9tcHlhY2NfUmxSbF9zMSBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfYWNjX2xsX3MxCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzIrPW1weShSczMyLmgsUnQzMi5oKTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9tcHlhY2NfUmhSaF9zYXQoV29yZDMyIFJ4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfbXB5YWNjX1JoUmhfc2F0IF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9hY2Nfc2F0X2hoX3MwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzIrPW1weShSczMyLmgsUnQzMi5oKTo8PDE6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfbXB5YWNjX1JoUmhfczFfc2F0KFdvcmQzMiBSeCwgV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21weWFjY19SaFJoX3MxX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfYWNjX3NhdF9oaF9zMQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeDMyKz1tcHkoUnMzMi5oLFJ0MzIubCk6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfbXB5YWNjX1JoUmxfc2F0KFdvcmQzMiBSeCwgV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21weWFjY19SaFJsX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfYWNjX3NhdF9obF9zMAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeDMyKz1tcHkoUnMzMi5oLFJ0MzIubCk6PDwxOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX21weWFjY19SaFJsX3MxX3NhdChXb3JkMzIgUngsIFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9tcHlhY2NfUmhSbF9zMV9zYXQgX19idWlsdGluX0hFWEFHT05fTTJfbXB5X2FjY19zYXRfaGxfczEKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUngzMis9bXB5KFJzMzIubCxSdDMyLmgpOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX21weWFjY19SbFJoX3NhdChXb3JkMzIgUngsIFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9tcHlhY2NfUmxSaF9zYXQgX19idWlsdGluX0hFWEFHT05fTTJfbXB5X2FjY19zYXRfbGhfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUngzMis9bXB5KFJzMzIubCxSdDMyLmgpOjw8MTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9tcHlhY2NfUmxSaF9zMV9zYXQoV29yZDMyIFJ4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfbXB5YWNjX1JsUmhfczFfc2F0IF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9hY2Nfc2F0X2xoX3MxCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzIrPW1weShSczMyLmwsUnQzMi5sKTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9tcHlhY2NfUmxSbF9zYXQoV29yZDMyIFJ4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfbXB5YWNjX1JsUmxfc2F0IF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9hY2Nfc2F0X2xsX3MwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzIrPW1weShSczMyLmwsUnQzMi5sKTo8PDE6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfbXB5YWNjX1JsUmxfczFfc2F0KFdvcmQzMiBSeCwgV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21weWFjY19SbFJsX3MxX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfYWNjX3NhdF9sbF9zMQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPW1weShSczMyLmgsUnQzMi5oKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX21weV9SaFJoKFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9tcHlfUmhSaCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfaGhfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1tcHkoUnMzMi5oLFJ0MzIuaCk6PDwxCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfbXB5X1JoUmhfczEoV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21weV9SaFJoX3MxIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9oaF9zMQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPW1weShSczMyLmgsUnQzMi5sKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX21weV9SaFJsKFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9tcHlfUmhSbCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfaGxfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1tcHkoUnMzMi5oLFJ0MzIubCk6PDwxCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfbXB5X1JoUmxfczEoV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21weV9SaFJsX3MxIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9obF9zMQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPW1weShSczMyLmwsUnQzMi5oKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX21weV9SbFJoKFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9tcHlfUmxSaCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfbGhfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1tcHkoUnMzMi5sLFJ0MzIuaCk6PDwxCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfbXB5X1JsUmhfczEoV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21weV9SbFJoX3MxIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9saF9zMQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPW1weShSczMyLmwsUnQzMi5sKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX21weV9SbFJsKFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9tcHlfUmxSbCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfbGxfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1tcHkoUnMzMi5sLFJ0MzIubCk6PDwxCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfbXB5X1JsUmxfczEoV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21weV9SbFJsX3MxIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9sbF9zMQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeDMyLT1tcHkoUnMzMi5oLFJ0MzIuaCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9tcHluYWNfUmhSaChXb3JkMzIgUngsIFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9tcHluYWNfUmhSaCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfbmFjX2hoX3MwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzItPW1weShSczMyLmgsUnQzMi5oKTo8PDEKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9tcHluYWNfUmhSaF9zMShXb3JkMzIgUngsIFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9tcHluYWNfUmhSaF9zMSBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfbmFjX2hoX3MxCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzItPW1weShSczMyLmgsUnQzMi5sKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX21weW5hY19SaFJsKFdvcmQzMiBSeCwgV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21weW5hY19SaFJsIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9uYWNfaGxfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUngzMi09bXB5KFJzMzIuaCxSdDMyLmwpOjw8MQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX21weW5hY19SaFJsX3MxKFdvcmQzMiBSeCwgV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21weW5hY19SaFJsX3MxIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9uYWNfaGxfczEKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUngzMi09bXB5KFJzMzIubCxSdDMyLmgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfbXB5bmFjX1JsUmgoV29yZDMyIFJ4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfbXB5bmFjX1JsUmggX19idWlsdGluX0hFWEFHT05fTTJfbXB5X25hY19saF9zMAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeDMyLT1tcHkoUnMzMi5sLFJ0MzIuaCk6PDwxCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfbXB5bmFjX1JsUmhfczEoV29yZDMyIFJ4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfbXB5bmFjX1JsUmhfczEgX19idWlsdGluX0hFWEFHT05fTTJfbXB5X25hY19saF9zMQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeDMyLT1tcHkoUnMzMi5sLFJ0MzIubCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9tcHluYWNfUmxSbChXb3JkMzIgUngsIFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9tcHluYWNfUmxSbCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfbmFjX2xsX3MwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzItPW1weShSczMyLmwsUnQzMi5sKTo8PDEKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9tcHluYWNfUmxSbF9zMShXb3JkMzIgUngsIFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9tcHluYWNfUmxSbF9zMSBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfbmFjX2xsX3MxCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzItPW1weShSczMyLmgsUnQzMi5oKTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9tcHluYWNfUmhSaF9zYXQoV29yZDMyIFJ4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfbXB5bmFjX1JoUmhfc2F0IF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9uYWNfc2F0X2hoX3MwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzItPW1weShSczMyLmgsUnQzMi5oKTo8PDE6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfbXB5bmFjX1JoUmhfczFfc2F0KFdvcmQzMiBSeCwgV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21weW5hY19SaFJoX3MxX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfbmFjX3NhdF9oaF9zMQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeDMyLT1tcHkoUnMzMi5oLFJ0MzIubCk6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfbXB5bmFjX1JoUmxfc2F0KFdvcmQzMiBSeCwgV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21weW5hY19SaFJsX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfbmFjX3NhdF9obF9zMAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeDMyLT1tcHkoUnMzMi5oLFJ0MzIubCk6PDwxOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX21weW5hY19SaFJsX3MxX3NhdChXb3JkMzIgUngsIFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9tcHluYWNfUmhSbF9zMV9zYXQgX19idWlsdGluX0hFWEFHT05fTTJfbXB5X25hY19zYXRfaGxfczEKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUngzMi09bXB5KFJzMzIubCxSdDMyLmgpOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX21weW5hY19SbFJoX3NhdChXb3JkMzIgUngsIFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9tcHluYWNfUmxSaF9zYXQgX19idWlsdGluX0hFWEFHT05fTTJfbXB5X25hY19zYXRfbGhfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUngzMi09bXB5KFJzMzIubCxSdDMyLmgpOjw8MTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9tcHluYWNfUmxSaF9zMV9zYXQoV29yZDMyIFJ4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfbXB5bmFjX1JsUmhfczFfc2F0IF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9uYWNfc2F0X2xoX3MxCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzItPW1weShSczMyLmwsUnQzMi5sKTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9tcHluYWNfUmxSbF9zYXQoV29yZDMyIFJ4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfbXB5bmFjX1JsUmxfc2F0IF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9uYWNfc2F0X2xsX3MwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzItPW1weShSczMyLmwsUnQzMi5sKTo8PDE6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfbXB5bmFjX1JsUmxfczFfc2F0KFdvcmQzMiBSeCwgV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21weW5hY19SbFJsX3MxX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfbmFjX3NhdF9sbF9zMQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPW1weShSczMyLmgsUnQzMi5oKTpybmQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9tcHlfUmhSaF9ybmQoV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21weV9SaFJoX3JuZCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfcm5kX2hoX3MwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9bXB5KFJzMzIuaCxSdDMyLmgpOjw8MTpybmQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9tcHlfUmhSaF9zMV9ybmQoV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21weV9SaFJoX3MxX3JuZCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfcm5kX2hoX3MxCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9bXB5KFJzMzIuaCxSdDMyLmwpOnJuZAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX21weV9SaFJsX3JuZChXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfbXB5X1JoUmxfcm5kIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9ybmRfaGxfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1tcHkoUnMzMi5oLFJ0MzIubCk6PDwxOnJuZAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX21weV9SaFJsX3MxX3JuZChXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfbXB5X1JoUmxfczFfcm5kIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9ybmRfaGxfczEKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1tcHkoUnMzMi5sLFJ0MzIuaCk6cm5kCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfbXB5X1JsUmhfcm5kKFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9tcHlfUmxSaF9ybmQgX19idWlsdGluX0hFWEFHT05fTTJfbXB5X3JuZF9saF9zMAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPW1weShSczMyLmwsUnQzMi5oKTo8PDE6cm5kCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfbXB5X1JsUmhfczFfcm5kKFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9tcHlfUmxSaF9zMV9ybmQgX19idWlsdGluX0hFWEFHT05fTTJfbXB5X3JuZF9saF9zMQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPW1weShSczMyLmwsUnQzMi5sKTpybmQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9tcHlfUmxSbF9ybmQoV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21weV9SbFJsX3JuZCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfcm5kX2xsX3MwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9bXB5KFJzMzIubCxSdDMyLmwpOjw8MTpybmQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9tcHlfUmxSbF9zMV9ybmQoV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21weV9SbFJsX3MxX3JuZCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfcm5kX2xsX3MxCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9bXB5KFJzMzIuaCxSdDMyLmgpOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX21weV9SaFJoX3NhdChXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfbXB5X1JoUmhfc2F0IF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9zYXRfaGhfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1tcHkoUnMzMi5oLFJ0MzIuaCk6PDwxOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX21weV9SaFJoX3MxX3NhdChXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfbXB5X1JoUmhfczFfc2F0IF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9zYXRfaGhfczEKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1tcHkoUnMzMi5oLFJ0MzIubCk6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfbXB5X1JoUmxfc2F0KFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9tcHlfUmhSbF9zYXQgX19idWlsdGluX0hFWEFHT05fTTJfbXB5X3NhdF9obF9zMAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPW1weShSczMyLmgsUnQzMi5sKTo8PDE6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfbXB5X1JoUmxfczFfc2F0KFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9tcHlfUmhSbF9zMV9zYXQgX19idWlsdGluX0hFWEFHT05fTTJfbXB5X3NhdF9obF9zMQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPW1weShSczMyLmwsUnQzMi5oKTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9tcHlfUmxSaF9zYXQoV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21weV9SbFJoX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfc2F0X2xoX3MwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9bXB5KFJzMzIubCxSdDMyLmgpOjw8MTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9tcHlfUmxSaF9zMV9zYXQoV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21weV9SbFJoX3MxX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfc2F0X2xoX3MxCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9bXB5KFJzMzIubCxSdDMyLmwpOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX21weV9SbFJsX3NhdChXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfbXB5X1JsUmxfc2F0IF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9zYXRfbGxfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1tcHkoUnMzMi5sLFJ0MzIubCk6PDwxOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX21weV9SbFJsX3MxX3NhdChXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfbXB5X1JsUmxfczFfc2F0IF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9zYXRfbGxfczEKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1tcHkoUnMzMi5oLFJ0MzIuaCk6cm5kOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX21weV9SaFJoX3JuZF9zYXQoV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21weV9SaFJoX3JuZF9zYXQgX19idWlsdGluX0hFWEFHT05fTTJfbXB5X3NhdF9ybmRfaGhfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1tcHkoUnMzMi5oLFJ0MzIuaCk6PDwxOnJuZDpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9tcHlfUmhSaF9zMV9ybmRfc2F0KFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9tcHlfUmhSaF9zMV9ybmRfc2F0IF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9zYXRfcm5kX2hoX3MxCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9bXB5KFJzMzIuaCxSdDMyLmwpOnJuZDpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9tcHlfUmhSbF9ybmRfc2F0KFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9tcHlfUmhSbF9ybmRfc2F0IF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9zYXRfcm5kX2hsX3MwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9bXB5KFJzMzIuaCxSdDMyLmwpOjw8MTpybmQ6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfbXB5X1JoUmxfczFfcm5kX3NhdChXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfbXB5X1JoUmxfczFfcm5kX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfc2F0X3JuZF9obF9zMQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPW1weShSczMyLmwsUnQzMi5oKTpybmQ6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfbXB5X1JsUmhfcm5kX3NhdChXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfbXB5X1JsUmhfcm5kX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfc2F0X3JuZF9saF9zMAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPW1weShSczMyLmwsUnQzMi5oKTo8PDE6cm5kOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX21weV9SbFJoX3MxX3JuZF9zYXQoV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21weV9SbFJoX3MxX3JuZF9zYXQgX19idWlsdGluX0hFWEFHT05fTTJfbXB5X3NhdF9ybmRfbGhfczEKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1tcHkoUnMzMi5sLFJ0MzIubCk6cm5kOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX21weV9SbFJsX3JuZF9zYXQoV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21weV9SbFJsX3JuZF9zYXQgX19idWlsdGluX0hFWEFHT05fTTJfbXB5X3NhdF9ybmRfbGxfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1tcHkoUnMzMi5sLFJ0MzIubCk6PDwxOnJuZDpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9tcHlfUmxSbF9zMV9ybmRfc2F0KFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9tcHlfUmxSbF9zMV9ybmRfc2F0IF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9zYXRfcm5kX2xsX3MxCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9bXB5KFJzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9tcHlfUlIoV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21weV9SUiBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfdXAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1tcHkoUnMzMixSdDMyKTo8PDEKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9tcHlfUlJfczEoV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21weV9SUl9zMSBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfdXBfczEKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1tcHkoUnMzMixSdDMyKTo8PDE6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfbXB5X1JSX3MxX3NhdChXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfbXB5X1JSX3MxX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfdXBfczFfc2F0CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4eDMyKz1tcHkoUnMzMi5oLFJ0MzIuaCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9tcHlhY2NfUmhSaChXb3JkNjQgUnh4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfbXB5YWNjX1JoUmggX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9hY2NfaGhfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzIrPW1weShSczMyLmgsUnQzMi5oKTo8PDEKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9tcHlhY2NfUmhSaF9zMShXb3JkNjQgUnh4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfbXB5YWNjX1JoUmhfczEgX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9hY2NfaGhfczEKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzIrPW1weShSczMyLmgsUnQzMi5sKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX21weWFjY19SaFJsKFdvcmQ2NCBSeHgsIFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9tcHlhY2NfUmhSbCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlkX2FjY19obF9zMAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMis9bXB5KFJzMzIuaCxSdDMyLmwpOjw8MQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX21weWFjY19SaFJsX3MxKFdvcmQ2NCBSeHgsIFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9tcHlhY2NfUmhSbF9zMSBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlkX2FjY19obF9zMQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMis9bXB5KFJzMzIubCxSdDMyLmgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfbXB5YWNjX1JsUmgoV29yZDY0IFJ4eCwgV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX21weWFjY19SbFJoIF9fYnVpbHRpbl9IRVhBR09OX00yX21weWRfYWNjX2xoX3MwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4eDMyKz1tcHkoUnMzMi5sLFJ0MzIuaCk6PDwxCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfbXB5YWNjX1JsUmhfczEoV29yZDY0IFJ4eCwgV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX21weWFjY19SbFJoX3MxIF9fYnVpbHRpbl9IRVhBR09OX00yX21weWRfYWNjX2xoX3MxCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4eDMyKz1tcHkoUnMzMi5sLFJ0MzIubCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9tcHlhY2NfUmxSbChXb3JkNjQgUnh4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfbXB5YWNjX1JsUmwgX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9hY2NfbGxfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzIrPW1weShSczMyLmwsUnQzMi5sKTo8PDEKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9tcHlhY2NfUmxSbF9zMShXb3JkNjQgUnh4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfbXB5YWNjX1JsUmxfczEgX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9hY2NfbGxfczEKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9bXB5KFJzMzIuaCxSdDMyLmgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfbXB5X1JoUmgoV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX21weV9SaFJoIF9fYnVpbHRpbl9IRVhBR09OX00yX21weWRfaGhfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9bXB5KFJzMzIuaCxSdDMyLmgpOjw8MQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX21weV9SaFJoX3MxKFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9tcHlfUmhSaF9zMSBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlkX2hoX3MxCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPW1weShSczMyLmgsUnQzMi5sKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX21weV9SaFJsKFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9tcHlfUmhSbCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlkX2hsX3MwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPW1weShSczMyLmgsUnQzMi5sKTo8PDEKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9tcHlfUmhSbF9zMShXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfbXB5X1JoUmxfczEgX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9obF9zMQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj1tcHkoUnMzMi5sLFJ0MzIuaCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9tcHlfUmxSaChXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfbXB5X1JsUmggX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9saF9zMAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj1tcHkoUnMzMi5sLFJ0MzIuaCk6PDwxCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfbXB5X1JsUmhfczEoV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX21weV9SbFJoX3MxIF9fYnVpbHRpbl9IRVhBR09OX00yX21weWRfbGhfczEKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9bXB5KFJzMzIubCxSdDMyLmwpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfbXB5X1JsUmwoV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX21weV9SbFJsIF9fYnVpbHRpbl9IRVhBR09OX00yX21weWRfbGxfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9bXB5KFJzMzIubCxSdDMyLmwpOjw8MQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX21weV9SbFJsX3MxKFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9tcHlfUmxSbF9zMSBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlkX2xsX3MxCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4eDMyLT1tcHkoUnMzMi5oLFJ0MzIuaCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9tcHluYWNfUmhSaChXb3JkNjQgUnh4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfbXB5bmFjX1JoUmggX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9uYWNfaGhfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzItPW1weShSczMyLmgsUnQzMi5oKTo8PDEKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9tcHluYWNfUmhSaF9zMShXb3JkNjQgUnh4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfbXB5bmFjX1JoUmhfczEgX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9uYWNfaGhfczEKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzItPW1weShSczMyLmgsUnQzMi5sKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX21weW5hY19SaFJsKFdvcmQ2NCBSeHgsIFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9tcHluYWNfUmhSbCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlkX25hY19obF9zMAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMi09bXB5KFJzMzIuaCxSdDMyLmwpOjw8MQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX21weW5hY19SaFJsX3MxKFdvcmQ2NCBSeHgsIFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9tcHluYWNfUmhSbF9zMSBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlkX25hY19obF9zMQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMi09bXB5KFJzMzIubCxSdDMyLmgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfbXB5bmFjX1JsUmgoV29yZDY0IFJ4eCwgV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX21weW5hY19SbFJoIF9fYnVpbHRpbl9IRVhBR09OX00yX21weWRfbmFjX2xoX3MwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4eDMyLT1tcHkoUnMzMi5sLFJ0MzIuaCk6PDwxCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfbXB5bmFjX1JsUmhfczEoV29yZDY0IFJ4eCwgV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX21weW5hY19SbFJoX3MxIF9fYnVpbHRpbl9IRVhBR09OX00yX21weWRfbmFjX2xoX3MxCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4eDMyLT1tcHkoUnMzMi5sLFJ0MzIubCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9tcHluYWNfUmxSbChXb3JkNjQgUnh4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfbXB5bmFjX1JsUmwgX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9uYWNfbGxfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzItPW1weShSczMyLmwsUnQzMi5sKTo8PDEKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9tcHluYWNfUmxSbF9zMShXb3JkNjQgUnh4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfbXB5bmFjX1JsUmxfczEgX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9uYWNfbGxfczEKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9bXB5KFJzMzIuaCxSdDMyLmgpOnJuZAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX21weV9SaFJoX3JuZChXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfbXB5X1JoUmhfcm5kIF9fYnVpbHRpbl9IRVhBR09OX00yX21weWRfcm5kX2hoX3MwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPW1weShSczMyLmgsUnQzMi5oKTo8PDE6cm5kCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfbXB5X1JoUmhfczFfcm5kKFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9tcHlfUmhSaF9zMV9ybmQgX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9ybmRfaGhfczEKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9bXB5KFJzMzIuaCxSdDMyLmwpOnJuZAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX21weV9SaFJsX3JuZChXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfbXB5X1JoUmxfcm5kIF9fYnVpbHRpbl9IRVhBR09OX00yX21weWRfcm5kX2hsX3MwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPW1weShSczMyLmgsUnQzMi5sKTo8PDE6cm5kCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfbXB5X1JoUmxfczFfcm5kKFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9tcHlfUmhSbF9zMV9ybmQgX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9ybmRfaGxfczEKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9bXB5KFJzMzIubCxSdDMyLmgpOnJuZAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX21weV9SbFJoX3JuZChXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfbXB5X1JsUmhfcm5kIF9fYnVpbHRpbl9IRVhBR09OX00yX21weWRfcm5kX2xoX3MwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPW1weShSczMyLmwsUnQzMi5oKTo8PDE6cm5kCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfbXB5X1JsUmhfczFfcm5kKFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9tcHlfUmxSaF9zMV9ybmQgX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9ybmRfbGhfczEKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9bXB5KFJzMzIubCxSdDMyLmwpOnJuZAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX21weV9SbFJsX3JuZChXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfbXB5X1JsUmxfcm5kIF9fYnVpbHRpbl9IRVhBR09OX00yX21weWRfcm5kX2xsX3MwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPW1weShSczMyLmwsUnQzMi5sKTo8PDE6cm5kCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfbXB5X1JsUmxfczFfcm5kKFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9tcHlfUmxSbF9zMV9ybmQgX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9ybmRfbGxfczEKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1tcHlpKFJzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9tcHlpX1JSKFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9tcHlpX1JSIF9fYnVpbHRpbl9IRVhBR09OX00yX21weWkKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1tcHlpKFJzMzIsI205KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX21weWlfUkkoV29yZDMyIFJzLCBXb3JkMzIgSW05KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21weWlfUkkgX19idWlsdGluX0hFWEFHT05fTTJfbXB5c21pCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9bXB5c3UoUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX21weXN1X1JSKFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9tcHlzdV9SUiBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlzdV91cAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeDMyKz1tcHl1KFJzMzIuaCxSdDMyLmgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfbXB5dWFjY19SaFJoKFdvcmQzMiBSeCwgV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21weXVhY2NfUmhSaCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1X2FjY19oaF9zMAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeDMyKz1tcHl1KFJzMzIuaCxSdDMyLmgpOjw8MQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX21weXVhY2NfUmhSaF9zMShXb3JkMzIgUngsIFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9tcHl1YWNjX1JoUmhfczEgX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9hY2NfaGhfczEKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUngzMis9bXB5dShSczMyLmgsUnQzMi5sKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX21weXVhY2NfUmhSbChXb3JkMzIgUngsIFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9tcHl1YWNjX1JoUmwgX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9hY2NfaGxfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUngzMis9bXB5dShSczMyLmgsUnQzMi5sKTo8PDEKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9tcHl1YWNjX1JoUmxfczEoV29yZDMyIFJ4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfbXB5dWFjY19SaFJsX3MxIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVfYWNjX2hsX3MxCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzIrPW1weXUoUnMzMi5sLFJ0MzIuaCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9tcHl1YWNjX1JsUmgoV29yZDMyIFJ4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfbXB5dWFjY19SbFJoIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVfYWNjX2xoX3MwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzIrPW1weXUoUnMzMi5sLFJ0MzIuaCk6PDwxCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfbXB5dWFjY19SbFJoX3MxKFdvcmQzMiBSeCwgV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21weXVhY2NfUmxSaF9zMSBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1X2FjY19saF9zMQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeDMyKz1tcHl1KFJzMzIubCxSdDMyLmwpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfbXB5dWFjY19SbFJsKFdvcmQzMiBSeCwgV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21weXVhY2NfUmxSbCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1X2FjY19sbF9zMAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeDMyKz1tcHl1KFJzMzIubCxSdDMyLmwpOjw8MQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX21weXVhY2NfUmxSbF9zMShXb3JkMzIgUngsIFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9tcHl1YWNjX1JsUmxfczEgX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9hY2NfbGxfczEKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1tcHl1KFJzMzIuaCxSdDMyLmgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogVVdvcmQzMiBRNl9SX21weXVfUmhSaChXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfbXB5dV9SaFJoIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVfaGhfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1tcHl1KFJzMzIuaCxSdDMyLmgpOjw8MQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFVXb3JkMzIgUTZfUl9tcHl1X1JoUmhfczEoV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21weXVfUmhSaF9zMSBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1X2hoX3MxCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9bXB5dShSczMyLmgsUnQzMi5sKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFVXb3JkMzIgUTZfUl9tcHl1X1JoUmwoV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21weXVfUmhSbCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1X2hsX3MwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9bXB5dShSczMyLmgsUnQzMi5sKTo8PDEKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBVV29yZDMyIFE2X1JfbXB5dV9SaFJsX3MxKFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9tcHl1X1JoUmxfczEgX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9obF9zMQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPW1weXUoUnMzMi5sLFJ0MzIuaCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBVV29yZDMyIFE2X1JfbXB5dV9SbFJoKFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9tcHl1X1JsUmggX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9saF9zMAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPW1weXUoUnMzMi5sLFJ0MzIuaCk6PDwxCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogVVdvcmQzMiBRNl9SX21weXVfUmxSaF9zMShXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfbXB5dV9SbFJoX3MxIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVfbGhfczEKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1tcHl1KFJzMzIubCxSdDMyLmwpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogVVdvcmQzMiBRNl9SX21weXVfUmxSbChXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfbXB5dV9SbFJsIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVfbGxfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1tcHl1KFJzMzIubCxSdDMyLmwpOjw8MQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFVXb3JkMzIgUTZfUl9tcHl1X1JsUmxfczEoV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21weXVfUmxSbF9zMSBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1X2xsX3MxCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzItPW1weXUoUnMzMi5oLFJ0MzIuaCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9tcHl1bmFjX1JoUmgoV29yZDMyIFJ4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfbXB5dW5hY19SaFJoIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVfbmFjX2hoX3MwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzItPW1weXUoUnMzMi5oLFJ0MzIuaCk6PDwxCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfbXB5dW5hY19SaFJoX3MxKFdvcmQzMiBSeCwgV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21weXVuYWNfUmhSaF9zMSBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1X25hY19oaF9zMQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeDMyLT1tcHl1KFJzMzIuaCxSdDMyLmwpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfbXB5dW5hY19SaFJsKFdvcmQzMiBSeCwgV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21weXVuYWNfUmhSbCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1X25hY19obF9zMAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeDMyLT1tcHl1KFJzMzIuaCxSdDMyLmwpOjw8MQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX21weXVuYWNfUmhSbF9zMShXb3JkMzIgUngsIFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9tcHl1bmFjX1JoUmxfczEgX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9uYWNfaGxfczEKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUngzMi09bXB5dShSczMyLmwsUnQzMi5oKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX21weXVuYWNfUmxSaChXb3JkMzIgUngsIFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9tcHl1bmFjX1JsUmggX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9uYWNfbGhfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUngzMi09bXB5dShSczMyLmwsUnQzMi5oKTo8PDEKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9tcHl1bmFjX1JsUmhfczEoV29yZDMyIFJ4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfbXB5dW5hY19SbFJoX3MxIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVfbmFjX2xoX3MxCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzItPW1weXUoUnMzMi5sLFJ0MzIubCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9tcHl1bmFjX1JsUmwoV29yZDMyIFJ4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfbXB5dW5hY19SbFJsIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVfbmFjX2xsX3MwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzItPW1weXUoUnMzMi5sLFJ0MzIubCk6PDwxCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfbXB5dW5hY19SbFJsX3MxKFdvcmQzMiBSeCwgV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21weXVuYWNfUmxSbF9zMSBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1X25hY19sbF9zMQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPW1weXUoUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFVXb3JkMzIgUTZfUl9tcHl1X1JSKFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9tcHl1X1JSIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVfdXAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzIrPW1weXUoUnMzMi5oLFJ0MzIuaCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9tcHl1YWNjX1JoUmgoV29yZDY0IFJ4eCwgV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX21weXVhY2NfUmhSaCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1ZF9hY2NfaGhfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzIrPW1weXUoUnMzMi5oLFJ0MzIuaCk6PDwxCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfbXB5dWFjY19SaFJoX3MxKFdvcmQ2NCBSeHgsIFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9tcHl1YWNjX1JoUmhfczEgX19idWlsdGluX0hFWEFHT05fTTJfbXB5dWRfYWNjX2hoX3MxCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4eDMyKz1tcHl1KFJzMzIuaCxSdDMyLmwpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfbXB5dWFjY19SaFJsKFdvcmQ2NCBSeHgsIFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9tcHl1YWNjX1JoUmwgX19idWlsdGluX0hFWEFHT05fTTJfbXB5dWRfYWNjX2hsX3MwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4eDMyKz1tcHl1KFJzMzIuaCxSdDMyLmwpOjw8MQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX21weXVhY2NfUmhSbF9zMShXb3JkNjQgUnh4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfbXB5dWFjY19SaFJsX3MxIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX2FjY19obF9zMQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMis9bXB5dShSczMyLmwsUnQzMi5oKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX21weXVhY2NfUmxSaChXb3JkNjQgUnh4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfbXB5dWFjY19SbFJoIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX2FjY19saF9zMAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMis9bXB5dShSczMyLmwsUnQzMi5oKTo8PDEKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9tcHl1YWNjX1JsUmhfczEoV29yZDY0IFJ4eCwgV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX21weXVhY2NfUmxSaF9zMSBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1ZF9hY2NfbGhfczEKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzIrPW1weXUoUnMzMi5sLFJ0MzIubCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9tcHl1YWNjX1JsUmwoV29yZDY0IFJ4eCwgV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX21weXVhY2NfUmxSbCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1ZF9hY2NfbGxfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzIrPW1weXUoUnMzMi5sLFJ0MzIubCk6PDwxCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfbXB5dWFjY19SbFJsX3MxKFdvcmQ2NCBSeHgsIFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9tcHl1YWNjX1JsUmxfczEgX19idWlsdGluX0hFWEFHT05fTTJfbXB5dWRfYWNjX2xsX3MxCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPW1weXUoUnMzMi5oLFJ0MzIuaCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBVV29yZDY0IFE2X1BfbXB5dV9SaFJoKFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9tcHl1X1JoUmggX19idWlsdGluX0hFWEFHT05fTTJfbXB5dWRfaGhfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9bXB5dShSczMyLmgsUnQzMi5oKTo8PDEKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBVV29yZDY0IFE2X1BfbXB5dV9SaFJoX3MxKFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9tcHl1X1JoUmhfczEgX19idWlsdGluX0hFWEFHT05fTTJfbXB5dWRfaGhfczEKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9bXB5dShSczMyLmgsUnQzMi5sKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFVXb3JkNjQgUTZfUF9tcHl1X1JoUmwoV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX21weXVfUmhSbCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1ZF9obF9zMAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj1tcHl1KFJzMzIuaCxSdDMyLmwpOjw8MQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFVXb3JkNjQgUTZfUF9tcHl1X1JoUmxfczEoV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX21weXVfUmhSbF9zMSBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1ZF9obF9zMQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj1tcHl1KFJzMzIubCxSdDMyLmgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogVVdvcmQ2NCBRNl9QX21weXVfUmxSaChXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfbXB5dV9SbFJoIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX2xoX3MwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPW1weXUoUnMzMi5sLFJ0MzIuaCk6PDwxCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogVVdvcmQ2NCBRNl9QX21weXVfUmxSaF9zMShXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfbXB5dV9SbFJoX3MxIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX2xoX3MxCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPW1weXUoUnMzMi5sLFJ0MzIubCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBVV29yZDY0IFE2X1BfbXB5dV9SbFJsKFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9tcHl1X1JsUmwgX19idWlsdGluX0hFWEFHT05fTTJfbXB5dWRfbGxfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9bXB5dShSczMyLmwsUnQzMi5sKTo8PDEKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBVV29yZDY0IFE2X1BfbXB5dV9SbFJsX3MxKFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9tcHl1X1JsUmxfczEgX19idWlsdGluX0hFWEFHT05fTTJfbXB5dWRfbGxfczEKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzItPW1weXUoUnMzMi5oLFJ0MzIuaCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9tcHl1bmFjX1JoUmgoV29yZDY0IFJ4eCwgV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX21weXVuYWNfUmhSaCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1ZF9uYWNfaGhfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzItPW1weXUoUnMzMi5oLFJ0MzIuaCk6PDwxCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfbXB5dW5hY19SaFJoX3MxKFdvcmQ2NCBSeHgsIFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9tcHl1bmFjX1JoUmhfczEgX19idWlsdGluX0hFWEFHT05fTTJfbXB5dWRfbmFjX2hoX3MxCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4eDMyLT1tcHl1KFJzMzIuaCxSdDMyLmwpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfbXB5dW5hY19SaFJsKFdvcmQ2NCBSeHgsIFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9tcHl1bmFjX1JoUmwgX19idWlsdGluX0hFWEFHT05fTTJfbXB5dWRfbmFjX2hsX3MwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4eDMyLT1tcHl1KFJzMzIuaCxSdDMyLmwpOjw8MQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX21weXVuYWNfUmhSbF9zMShXb3JkNjQgUnh4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfbXB5dW5hY19SaFJsX3MxIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX25hY19obF9zMQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMi09bXB5dShSczMyLmwsUnQzMi5oKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX21weXVuYWNfUmxSaChXb3JkNjQgUnh4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfbXB5dW5hY19SbFJoIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX25hY19saF9zMAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMi09bXB5dShSczMyLmwsUnQzMi5oKTo8PDEKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9tcHl1bmFjX1JsUmhfczEoV29yZDY0IFJ4eCwgV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX21weXVuYWNfUmxSaF9zMSBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1ZF9uYWNfbGhfczEKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzItPW1weXUoUnMzMi5sLFJ0MzIubCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9tcHl1bmFjX1JsUmwoV29yZDY0IFJ4eCwgV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX21weXVuYWNfUmxSbCBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1ZF9uYWNfbGxfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzItPW1weXUoUnMzMi5sLFJ0MzIubCk6PDwxCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfbXB5dW5hY19SbFJsX3MxKFdvcmQ2NCBSeHgsIFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9tcHl1bmFjX1JsUmxfczEgX19idWlsdGluX0hFWEFHT05fTTJfbXB5dWRfbmFjX2xsX3MxCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9bXB5dWkoUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX21weXVpX1JSKFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX21weXVpX1JSIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVpCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzItPWFkZChSczMyLFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfYWRkbmFjX1JSKFdvcmQzMiBSeCwgV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2FkZG5hY19SUiBfX2J1aWx0aW5fSEVYQUdPTl9NMl9uYWNjaQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeDMyLT1hZGQoUnMzMiwjczgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfYWRkbmFjX1JJKFdvcmQzMiBSeCwgV29yZDMyIFJzLCBXb3JkMzIgSXM4KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9hZGRuYWNfUkkgX19idWlsdGluX0hFWEFHT05fTTJfbmFjY2lpCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzIrPXN1YihSdDMyLFJzMzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1Jfc3ViYWNjX1JSKFdvcmQzMiBSeCwgV29yZDMyIFJ0LCBXb3JkMzIgUnMpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX3N1YmFjY19SUiBfX2J1aWx0aW5fSEVYQUdPTl9NMl9zdWJhY2MKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dmFic2RpZmZoKFJ0dDMyLFJzczMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZhYnNkaWZmaF9QUChXb3JkNjQgUnR0LCBXb3JkNjQgUnNzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92YWJzZGlmZmhfUFAgX19idWlsdGluX0hFWEFHT05fTTJfdmFic2RpZmZoCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZhYnNkaWZmdyhSdHQzMixSc3MzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92YWJzZGlmZndfUFAoV29yZDY0IFJ0dCwgV29yZDY0IFJzcykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdmFic2RpZmZ3X1BQIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZhYnNkaWZmdwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMis9dmNtcHlpKFJzczMyLFJ0dDMyKTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92Y21weWlhY2NfUFBfc2F0KFdvcmQ2NCBSeHgsIFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZjbXB5aWFjY19QUF9zYXQgX19idWlsdGluX0hFWEFHT05fTTJfdmNtYWNfczBfc2F0X2kKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzIrPXZjbXB5cihSc3MzMixSdHQzMik6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfdmNtcHlyYWNjX1BQX3NhdChXb3JkNjQgUnh4LCBXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92Y21weXJhY2NfUFBfc2F0IF9fYnVpbHRpbl9IRVhBR09OX00yX3ZjbWFjX3MwX3NhdF9yCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZjbXB5aShSc3MzMixSdHQzMik6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfdmNtcHlpX1BQX3NhdChXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92Y21weWlfUFBfc2F0IF9fYnVpbHRpbl9IRVhBR09OX00yX3ZjbXB5X3MwX3NhdF9pCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZjbXB5cihSc3MzMixSdHQzMik6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfdmNtcHlyX1BQX3NhdChXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92Y21weXJfUFBfc2F0IF9fYnVpbHRpbl9IRVhBR09OX00yX3ZjbXB5X3MwX3NhdF9yCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZjbXB5aShSc3MzMixSdHQzMik6PDwxOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZjbXB5aV9QUF9zMV9zYXQoV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdmNtcHlpX1BQX3MxX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9NMl92Y21weV9zMV9zYXRfaQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj12Y21weXIoUnNzMzIsUnR0MzIpOjw8MTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92Y21weXJfUFBfczFfc2F0KFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZjbXB5cl9QUF9zMV9zYXQgX19idWlsdGluX0hFWEFHT05fTTJfdmNtcHlfczFfc2F0X3IKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzIrPXZkbXB5KFJzczMyLFJ0dDMyKTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92ZG1weWFjY19QUF9zYXQoV29yZDY0IFJ4eCwgV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdmRtcHlhY2NfUFBfc2F0IF9fYnVpbHRpbl9IRVhBR09OX00yX3ZkbWFjc19zMAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMis9dmRtcHkoUnNzMzIsUnR0MzIpOjw8MTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92ZG1weWFjY19QUF9zMV9zYXQoV29yZDY0IFJ4eCwgV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdmRtcHlhY2NfUFBfczFfc2F0IF9fYnVpbHRpbl9IRVhBR09OX00yX3ZkbWFjc19zMQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPXZkbXB5KFJzczMyLFJ0dDMyKTpybmQ6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfdmRtcHlfUFBfcm5kX3NhdChXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl92ZG1weV9QUF9ybmRfc2F0IF9fYnVpbHRpbl9IRVhBR09OX00yX3ZkbXB5cnNfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj12ZG1weShSc3MzMixSdHQzMik6PDwxOnJuZDpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl92ZG1weV9QUF9zMV9ybmRfc2F0KFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX3ZkbXB5X1BQX3MxX3JuZF9zYXQgX19idWlsdGluX0hFWEFHT05fTTJfdmRtcHlyc19zMQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj12ZG1weShSc3MzMixSdHQzMik6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfdmRtcHlfUFBfc2F0KFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZkbXB5X1BQX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9NMl92ZG1weXNfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dmRtcHkoUnNzMzIsUnR0MzIpOjw8MTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92ZG1weV9QUF9zMV9zYXQoV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdmRtcHlfUFBfczFfc2F0IF9fYnVpbHRpbl9IRVhBR09OX00yX3ZkbXB5c19zMQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMis9dm1weWgoUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZtcHloYWNjX1JSKFdvcmQ2NCBSeHgsIFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92bXB5aGFjY19SUiBfX2J1aWx0aW5fSEVYQUdPTl9NMl92bWFjMgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMis9dm1weWVoKFJzczMyLFJ0dDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZtcHllaGFjY19QUChXb3JkNjQgUnh4LCBXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92bXB5ZWhhY2NfUFAgX19idWlsdGluX0hFWEFHT05fTTJfdm1hYzJlcwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMis9dm1weWVoKFJzczMyLFJ0dDMyKTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92bXB5ZWhhY2NfUFBfc2F0KFdvcmQ2NCBSeHgsIFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZtcHllaGFjY19QUF9zYXQgX19idWlsdGluX0hFWEFHT05fTTJfdm1hYzJlc19zMAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMis9dm1weWVoKFJzczMyLFJ0dDMyKTo8PDE6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1Bfdm1weWVoYWNjX1BQX3MxX3NhdChXb3JkNjQgUnh4LCBXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92bXB5ZWhhY2NfUFBfczFfc2F0IF9fYnVpbHRpbl9IRVhBR09OX00yX3ZtYWMyZXNfczEKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzIrPXZtcHloKFJzMzIsUnQzMik6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1Bfdm1weWhhY2NfUlJfc2F0KFdvcmQ2NCBSeHgsIFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92bXB5aGFjY19SUl9zYXQgX19idWlsdGluX0hFWEFHT05fTTJfdm1hYzJzX3MwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4eDMyKz12bXB5aChSczMyLFJ0MzIpOjw8MTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92bXB5aGFjY19SUl9zMV9zYXQoV29yZDY0IFJ4eCwgV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZtcHloYWNjX1JSX3MxX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9NMl92bWFjMnNfczEKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzIrPXZtcHloc3UoUnMzMixSdDMyKTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92bXB5aHN1YWNjX1JSX3NhdChXb3JkNjQgUnh4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Bfdm1weWhzdWFjY19SUl9zYXQgX19idWlsdGluX0hFWEFHT05fTTJfdm1hYzJzdV9zMAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMis9dm1weWhzdShSczMyLFJ0MzIpOjw8MTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92bXB5aHN1YWNjX1JSX3MxX3NhdChXb3JkNjQgUnh4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Bfdm1weWhzdWFjY19SUl9zMV9zYXQgX19idWlsdGluX0hFWEFHT05fTTJfdm1hYzJzdV9zMQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj12bXB5ZWgoUnNzMzIsUnR0MzIpOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZtcHllaF9QUF9zYXQoV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Bfdm1weWVoX1BQX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9NMl92bXB5MmVzX3MwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZtcHllaChSc3MzMixSdHQzMik6PDwxOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZtcHllaF9QUF9zMV9zYXQoV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Bfdm1weWVoX1BQX3MxX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9NMl92bXB5MmVzX3MxCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZtcHloKFJzMzIsUnQzMik6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1Bfdm1weWhfUlJfc2F0KFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92bXB5aF9SUl9zYXQgX19idWlsdGluX0hFWEFHT05fTTJfdm1weTJzX3MwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9dm1weWgoUnMzMixSdDMyKTpybmQ6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1Jfdm1weWhfUlJfcm5kX3NhdChXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Jfdm1weWhfUlJfcm5kX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9NMl92bXB5MnNfczBwYWNrCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZtcHloKFJzMzIsUnQzMik6PDwxOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZtcHloX1JSX3MxX3NhdChXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Bfdm1weWhfUlJfczFfc2F0IF9fYnVpbHRpbl9IRVhBR09OX00yX3ZtcHkyc19zMQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPXZtcHloKFJzMzIsUnQzMik6PDwxOnJuZDpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl92bXB5aF9SUl9zMV9ybmRfc2F0KFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl92bXB5aF9SUl9zMV9ybmRfc2F0IF9fYnVpbHRpbl9IRVhBR09OX00yX3ZtcHkyc19zMXBhY2sKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dm1weWhzdShSczMyLFJ0MzIpOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZtcHloc3VfUlJfc2F0KFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92bXB5aHN1X1JSX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9NMl92bXB5MnN1X3MwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZtcHloc3UoUnMzMixSdDMyKTo8PDE6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1Bfdm1weWhzdV9SUl9zMV9zYXQoV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZtcHloc3VfUlJfczFfc2F0IF9fYnVpbHRpbl9IRVhBR09OX00yX3ZtcHkyc3VfczEKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj12cmFkZGgoUnNzMzIsUnR0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfdnJhZGRoX1BQKFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX3ZyYWRkaF9QUCBfX2J1aWx0aW5fSEVYQUdPTl9NMl92cmFkZGgKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj12cmFkZHVoKFJzczMyLFJ0dDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX3ZyYWRkdWhfUFAoV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfdnJhZGR1aF9QUCBfX2J1aWx0aW5fSEVYQUdPTl9NMl92cmFkZHVoCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4eDMyKz12cmNtcHlpKFJzczMyLFJ0dDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZyY21weWlhY2NfUFAoV29yZDY0IFJ4eCwgV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdnJjbXB5aWFjY19QUCBfX2J1aWx0aW5fSEVYQUdPTl9NMl92cmNtYWNpX3MwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4eDMyKz12cmNtcHlpKFJzczMyLFJ0dDMyKikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92cmNtcHlpYWNjX1BQX2NvbmooV29yZDY0IFJ4eCwgV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdnJjbXB5aWFjY19QUF9jb25qIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZyY21hY2lfczBjCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4eDMyKz12cmNtcHlyKFJzczMyLFJ0dDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZyY21weXJhY2NfUFAoV29yZDY0IFJ4eCwgV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdnJjbXB5cmFjY19QUCBfX2J1aWx0aW5fSEVYQUdPTl9NMl92cmNtYWNyX3MwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4eDMyKz12cmNtcHlyKFJzczMyLFJ0dDMyKikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92cmNtcHlyYWNjX1BQX2NvbmooV29yZDY0IFJ4eCwgV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdnJjbXB5cmFjY19QUF9jb25qIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZyY21hY3JfczBjCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZyY21weWkoUnNzMzIsUnR0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfdnJjbXB5aV9QUChXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92cmNtcHlpX1BQIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZyY21weWlfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dnJjbXB5aShSc3MzMixSdHQzMiopCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfdnJjbXB5aV9QUF9jb25qKFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZyY21weWlfUFBfY29uaiBfX2J1aWx0aW5fSEVYQUdPTl9NMl92cmNtcHlpX3MwYwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj12cmNtcHlyKFJzczMyLFJ0dDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZyY21weXJfUFAoV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdnJjbXB5cl9QUCBfX2J1aWx0aW5fSEVYQUdPTl9NMl92cmNtcHlyX3MwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZyY21weXIoUnNzMzIsUnR0MzIqKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZyY21weXJfUFBfY29uaihXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92cmNtcHlyX1BQX2NvbmogX19idWlsdGluX0hFWEFHT05fTTJfdnJjbXB5cl9zMGMKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzIrPXZyY21weXMoUnNzMzIsUnQzMik6PDwxOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZyY21weXNhY2NfUFJfczFfc2F0KFdvcmQ2NCBSeHgsIFdvcmQ2NCBSc3MsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92cmNtcHlzYWNjX1BSX3MxX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9NMl92cmNtcHlzX2FjY19zMQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj12cmNtcHlzKFJzczMyLFJ0MzIpOjw8MTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92cmNtcHlzX1BSX3MxX3NhdChXb3JkNjQgUnNzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdnJjbXB5c19QUl9zMV9zYXQgX19idWlsdGluX0hFWEFHT05fTTJfdnJjbXB5c19zMQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPXZyY21weXMoUnNzMzIsUnQzMik6PDwxOnJuZDpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl92cmNtcHlzX1BSX3MxX3JuZF9zYXQoV29yZDY0IFJzcywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX3ZyY21weXNfUFJfczFfcm5kX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9NMl92cmNtcHlzX3MxcnAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzIrPXZybXB5aChSc3MzMixSdHQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92cm1weWhhY2NfUFAoV29yZDY0IFJ4eCwgV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdnJtcHloYWNjX1BQIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZybWFjX3MwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZybXB5aChSc3MzMixSdHQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92cm1weWhfUFAoV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdnJtcHloX1BQIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZybXB5X3MwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzJePXhvcihSczMyLFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfeG9yeGFjY19SUihXb3JkMzIgUngsIFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl94b3J4YWNjX1JSIF9fYnVpbHRpbl9IRVhBR09OX00yX3hvcl94YWNjCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzImPWFuZChSczMyLFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfYW5kYW5kX1JSKFdvcmQzMiBSeCwgV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2FuZGFuZF9SUiBfX2J1aWx0aW5fSEVYQUdPTl9NNF9hbmRfYW5kCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzImPWFuZChSczMyLH5SdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2FuZGFuZF9SblIoV29yZDMyIFJ4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfYW5kYW5kX1JuUiBfX2J1aWx0aW5fSEVYQUdPTl9NNF9hbmRfYW5kbgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeDMyJj1vcihSczMyLFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1Jfb3JhbmRfUlIoV29yZDMyIFJ4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Jfb3JhbmRfUlIgX19idWlsdGluX0hFWEFHT05fTTRfYW5kX29yCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzImPXhvcihSczMyLFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfeG9yYW5kX1JSKFdvcmQzMiBSeCwgV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX3hvcmFuZF9SUiBfX2J1aWx0aW5fSEVYQUdPTl9NNF9hbmRfeG9yCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9Y21weWl3aChSc3MzMixSdDMyKTo8PDE6cm5kOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2NtcHlpd2hfUFJfczFfcm5kX3NhdChXb3JkNjQgUnNzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9jbXB5aXdoX1BSX3MxX3JuZF9zYXQgX19idWlsdGluX0hFWEFHT05fTTRfY21weWlfd2gKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1jbXB5aXdoKFJzczMyLFJ0MzIqKTo8PDE6cm5kOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2NtcHlpd2hfUFJfY29ual9zMV9ybmRfc2F0KFdvcmQ2NCBSc3MsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2NtcHlpd2hfUFJfY29ual9zMV9ybmRfc2F0IF9fYnVpbHRpbl9IRVhBR09OX000X2NtcHlpX3doYwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPWNtcHlyd2goUnNzMzIsUnQzMik6PDwxOnJuZDpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9jbXB5cndoX1BSX3MxX3JuZF9zYXQoV29yZDY0IFJzcywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfY21weXJ3aF9QUl9zMV9ybmRfc2F0IF9fYnVpbHRpbl9IRVhBR09OX000X2NtcHlyX3doCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9Y21weXJ3aChSc3MzMixSdDMyKik6PDwxOnJuZDpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9jbXB5cndoX1BSX2NvbmpfczFfcm5kX3NhdChXb3JkNjQgUnNzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9jbXB5cndoX1BSX2NvbmpfczFfcm5kX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9NNF9jbXB5cl93aGMKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUngzMis9bXB5KFJzMzIsUnQzMik6PDwxOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX21weWFjY19SUl9zMV9zYXQoV29yZDMyIFJ4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfbXB5YWNjX1JSX3MxX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9NNF9tYWNfdXBfczFfc2F0CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9YWRkKCN1NixtcHlpKFJzMzIsI1U2KSkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9hZGRfbXB5aV9JUkkoV29yZDMyIEl1NiwgV29yZDMyIFJzLCBXb3JkMzIgSVU2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfYWRkX21weWlfSVJJIF9fYnVpbHRpbl9IRVhBR09OX000X21weXJpX2FkZGkKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1hZGQoUnUzMixtcHlpKFJzMzIsI3U2KSkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9hZGRfbXB5aV9SUkkoV29yZDMyIFJ1LCBXb3JkMzIgUnMsIFdvcmQzMiBJdTYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9hZGRfbXB5aV9SUkkgX19idWlsdGluX0hFWEFHT05fTTRfbXB5cmlfYWRkcgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPWFkZChSdTMyLG1weWkoI3U2OjIsUnMzMikpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfYWRkX21weWlfUklSKFdvcmQzMiBSdSwgV29yZDMyIEl1Nl8yLCBXb3JkMzIgUnMpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9hZGRfbXB5aV9SSVIgX19idWlsdGluX0hFWEFHT05fTTRfbXB5cmlfYWRkcl91MgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPWFkZCgjdTYsbXB5aShSczMyLFJ0MzIpKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2FkZF9tcHlpX0lSUihXb3JkMzIgSXU2LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2FkZF9tcHlpX0lSUiBfX2J1aWx0aW5fSEVYQUdPTl9NNF9tcHlycl9hZGRpCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ5MzI9YWRkKFJ1MzIsbXB5aShSeTMyLFJzMzIpKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2FkZF9tcHlpX1JSUihXb3JkMzIgUnUsIFdvcmQzMiBSeSwgV29yZDMyIFJzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9hZGRfbXB5aV9SUlIgX19idWlsdGluX0hFWEFHT05fTTRfbXB5cnJfYWRkcgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeDMyLT1tcHkoUnMzMixSdDMyKTo8PDE6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfbXB5bmFjX1JSX3MxX3NhdChXb3JkMzIgUngsIFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9tcHluYWNfUlJfczFfc2F0IF9fYnVpbHRpbl9IRVhBR09OX000X25hY191cF9zMV9zYXQKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUngzMnw9YW5kKFJzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9hbmRvcl9SUihXb3JkMzIgUngsIFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9hbmRvcl9SUiBfX2J1aWx0aW5fSEVYQUdPTl9NNF9vcl9hbmQKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUngzMnw9YW5kKFJzMzIsflJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfYW5kb3JfUm5SKFdvcmQzMiBSeCwgV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2FuZG9yX1JuUiBfX2J1aWx0aW5fSEVYQUdPTl9NNF9vcl9hbmRuCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzJ8PW9yKFJzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9vcm9yX1JSKFdvcmQzMiBSeCwgV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX29yb3JfUlIgX19idWlsdGluX0hFWEFHT05fTTRfb3Jfb3IKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUngzMnw9eG9yKFJzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl94b3Jvcl9SUihXb3JkMzIgUngsIFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl94b3Jvcl9SUiBfX2J1aWx0aW5fSEVYQUdPTl9NNF9vcl94b3IKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9cG1weXcoUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3BtcHl3X1JSKFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9wbXB5d19SUiBfX2J1aWx0aW5fSEVYQUdPTl9NNF9wbXB5dwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMl49cG1weXcoUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3BtcHl3eGFjY19SUihXb3JkNjQgUnh4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfcG1weXd4YWNjX1JSIF9fYnVpbHRpbl9IRVhBR09OX000X3BtcHl3X2FjYwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj12cG1weWgoUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZwbXB5aF9SUihXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdnBtcHloX1JSIF9fYnVpbHRpbl9IRVhBR09OX000X3ZwbXB5aAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMl49dnBtcHloKFJzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92cG1weWh4YWNjX1JSKFdvcmQ2NCBSeHgsIFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92cG1weWh4YWNjX1JSIF9fYnVpbHRpbl9IRVhBR09OX000X3ZwbXB5aF9hY2MKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzIrPXZybXB5d2VoKFJzczMyLFJ0dDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZybXB5d2VoYWNjX1BQKFdvcmQ2NCBSeHgsIFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZybXB5d2VoYWNjX1BQIF9fYnVpbHRpbl9IRVhBR09OX000X3ZybXB5ZWhfYWNjX3MwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4eDMyKz12cm1weXdlaChSc3MzMixSdHQzMik6PDwxCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfdnJtcHl3ZWhhY2NfUFBfczEoV29yZDY0IFJ4eCwgV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdnJtcHl3ZWhhY2NfUFBfczEgX19idWlsdGluX0hFWEFHT05fTTRfdnJtcHllaF9hY2NfczEKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dnJtcHl3ZWgoUnNzMzIsUnR0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfdnJtcHl3ZWhfUFAoV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdnJtcHl3ZWhfUFAgX19idWlsdGluX0hFWEFHT05fTTRfdnJtcHllaF9zMAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj12cm1weXdlaChSc3MzMixSdHQzMik6PDwxCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfdnJtcHl3ZWhfUFBfczEoV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdnJtcHl3ZWhfUFBfczEgX19idWlsdGluX0hFWEFHT05fTTRfdnJtcHllaF9zMQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMis9dnJtcHl3b2goUnNzMzIsUnR0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfdnJtcHl3b2hhY2NfUFAoV29yZDY0IFJ4eCwgV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdnJtcHl3b2hhY2NfUFAgX19idWlsdGluX0hFWEFHT05fTTRfdnJtcHlvaF9hY2NfczAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzIrPXZybXB5d29oKFJzczMyLFJ0dDMyKTo8PDEKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92cm1weXdvaGFjY19QUF9zMShXb3JkNjQgUnh4LCBXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92cm1weXdvaGFjY19QUF9zMSBfX2J1aWx0aW5fSEVYQUdPTl9NNF92cm1weW9oX2FjY19zMQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj12cm1weXdvaChSc3MzMixSdHQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92cm1weXdvaF9QUChXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92cm1weXdvaF9QUCBfX2J1aWx0aW5fSEVYQUdPTl9NNF92cm1weW9oX3MwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZybXB5d29oKFJzczMyLFJ0dDMyKTo8PDEKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92cm1weXdvaF9QUF9zMShXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92cm1weXdvaF9QUF9zMSBfX2J1aWx0aW5fSEVYQUdPTl9NNF92cm1weW9oX3MxCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzJePWFuZChSczMyLFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfYW5keGFjY19SUihXb3JkMzIgUngsIFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9hbmR4YWNjX1JSIF9fYnVpbHRpbl9IRVhBR09OX000X3hvcl9hbmQKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUngzMl49YW5kKFJzMzIsflJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfYW5keGFjY19SblIoV29yZDMyIFJ4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfYW5keGFjY19SblIgX19idWlsdGluX0hFWEFHT05fTTRfeG9yX2FuZG4KCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUngzMl49b3IoUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX29yeGFjY19SUihXb3JkMzIgUngsIFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9vcnhhY2NfUlIgX19idWlsdGluX0hFWEFHT05fTTRfeG9yX29yCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4eDMyXj14b3IoUnNzMzIsUnR0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfeG9yeGFjY19QUChXb3JkNjQgUnh4LCBXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfeG9yeGFjY19QUCBfX2J1aWx0aW5fSEVYQUdPTl9NNF94b3JfeGFjYwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMis9dmRtcHlic3UoUnNzMzIsUnR0MzIpOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZkbXB5YnN1YWNjX1BQX3NhdChXb3JkNjQgUnh4LCBXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92ZG1weWJzdWFjY19QUF9zYXQgX19idWlsdGluX0hFWEFHT05fTTVfdmRtYWNic3UKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dmRtcHlic3UoUnNzMzIsUnR0MzIpOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZkbXB5YnN1X1BQX3NhdChXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92ZG1weWJzdV9QUF9zYXQgX19idWlsdGluX0hFWEFHT05fTTVfdmRtcHlic3UKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzIrPXZtcHlic3UoUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZtcHlic3VhY2NfUlIoV29yZDY0IFJ4eCwgV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZtcHlic3VhY2NfUlIgX19idWlsdGluX0hFWEFHT05fTTVfdm1hY2JzdQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMis9dm1weWJ1KFJzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92bXB5YnVhY2NfUlIoV29yZDY0IFJ4eCwgV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZtcHlidWFjY19SUiBfX2J1aWx0aW5fSEVYQUdPTl9NNV92bWFjYnV1CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZtcHlic3UoUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZtcHlic3VfUlIoV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZtcHlic3VfUlIgX19idWlsdGluX0hFWEFHT05fTTVfdm1weWJzdQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj12bXB5YnUoUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZtcHlidV9SUihXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Bfdm1weWJ1X1JSIF9fYnVpbHRpbl9IRVhBR09OX001X3ZtcHlidXUKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzIrPXZybXB5YnN1KFJzczMyLFJ0dDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZybXB5YnN1YWNjX1BQKFdvcmQ2NCBSeHgsIFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZybXB5YnN1YWNjX1BQIF9fYnVpbHRpbl9IRVhBR09OX001X3ZybWFjYnN1CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4eDMyKz12cm1weWJ1KFJzczMyLFJ0dDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZybXB5YnVhY2NfUFAoV29yZDY0IFJ4eCwgV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdnJtcHlidWFjY19QUCBfX2J1aWx0aW5fSEVYQUdPTl9NNV92cm1hY2J1dQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj12cm1weWJzdShSc3MzMixSdHQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92cm1weWJzdV9QUChXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92cm1weWJzdV9QUCBfX2J1aWx0aW5fSEVYQUdPTl9NNV92cm1weWJzdQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj12cm1weWJ1KFJzczMyLFJ0dDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZybXB5YnVfUFAoV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdnJtcHlidV9QUCBfX2J1aWx0aW5fSEVYQUdPTl9NNV92cm1weWJ1dQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPWFkZGFzbChSdDMyLFJzMzIsI3UzKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2FkZGFzbF9SUkkoV29yZDMyIFJ0LCBXb3JkMzIgUnMsIFdvcmQzMiBJdTMpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9hZGRhc2xfUlJJIF9fYnVpbHRpbl9IRVhBR09OX1MyX2FkZGFzbF9ycnJpCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPWFzbChSc3MzMiwjdTYpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfYXNsX1BJKFdvcmQ2NCBSc3MsIFdvcmQzMiBJdTYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9hc2xfUEkgX19idWlsdGluX0hFWEFHT05fUzJfYXNsX2lfcAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMis9YXNsKFJzczMyLCN1NikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9hc2xhY2NfUEkoV29yZDY0IFJ4eCwgV29yZDY0IFJzcywgV29yZDMyIEl1NikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX2FzbGFjY19QSSBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfaV9wX2FjYwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMiY9YXNsKFJzczMyLCN1NikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9hc2xhbmRfUEkoV29yZDY0IFJ4eCwgV29yZDY0IFJzcywgV29yZDMyIEl1NikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX2FzbGFuZF9QSSBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfaV9wX2FuZAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMi09YXNsKFJzczMyLCN1NikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9hc2xuYWNfUEkoV29yZDY0IFJ4eCwgV29yZDY0IFJzcywgV29yZDMyIEl1NikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX2FzbG5hY19QSSBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfaV9wX25hYwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMnw9YXNsKFJzczMyLCN1NikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9hc2xvcl9QSShXb3JkNjQgUnh4LCBXb3JkNjQgUnNzLCBXb3JkMzIgSXU2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfYXNsb3JfUEkgX19idWlsdGluX0hFWEFHT05fUzJfYXNsX2lfcF9vcgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMl49YXNsKFJzczMyLCN1NikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9hc2x4YWNjX1BJKFdvcmQ2NCBSeHgsIFdvcmQ2NCBSc3MsIFdvcmQzMiBJdTYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9hc2x4YWNjX1BJIF9fYnVpbHRpbl9IRVhBR09OX1MyX2FzbF9pX3BfeGFjYwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPWFzbChSczMyLCN1NSkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9hc2xfUkkoV29yZDMyIFJzLCBXb3JkMzIgSXU1KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfYXNsX1JJIF9fYnVpbHRpbl9IRVhBR09OX1MyX2FzbF9pX3IKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUngzMis9YXNsKFJzMzIsI3U1KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2FzbGFjY19SSShXb3JkMzIgUngsIFdvcmQzMiBScywgV29yZDMyIEl1NSkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2FzbGFjY19SSSBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfaV9yX2FjYwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeDMyJj1hc2woUnMzMiwjdTUpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfYXNsYW5kX1JJKFdvcmQzMiBSeCwgV29yZDMyIFJzLCBXb3JkMzIgSXU1KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfYXNsYW5kX1JJIF9fYnVpbHRpbl9IRVhBR09OX1MyX2FzbF9pX3JfYW5kCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzItPWFzbChSczMyLCN1NSkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9hc2xuYWNfUkkoV29yZDMyIFJ4LCBXb3JkMzIgUnMsIFdvcmQzMiBJdTUpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9hc2xuYWNfUkkgX19idWlsdGluX0hFWEFHT05fUzJfYXNsX2lfcl9uYWMKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUngzMnw9YXNsKFJzMzIsI3U1KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2FzbG9yX1JJKFdvcmQzMiBSeCwgV29yZDMyIFJzLCBXb3JkMzIgSXU1KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfYXNsb3JfUkkgX19idWlsdGluX0hFWEFHT05fUzJfYXNsX2lfcl9vcgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPWFzbChSczMyLCN1NSk6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfYXNsX1JJX3NhdChXb3JkMzIgUnMsIFdvcmQzMiBJdTUpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9hc2xfUklfc2F0IF9fYnVpbHRpbl9IRVhBR09OX1MyX2FzbF9pX3Jfc2F0CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzJePWFzbChSczMyLCN1NSkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9hc2x4YWNjX1JJKFdvcmQzMiBSeCwgV29yZDMyIFJzLCBXb3JkMzIgSXU1KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfYXNseGFjY19SSSBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfaV9yX3hhY2MKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dmFzbGgoUnNzMzIsI3U0KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3Zhc2xoX1BJKFdvcmQ2NCBSc3MsIFdvcmQzMiBJdTQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92YXNsaF9QSSBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfaV92aAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj12YXNsdyhSc3MzMiwjdTUpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfdmFzbHdfUEkoV29yZDY0IFJzcywgV29yZDMyIEl1NSkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3Zhc2x3X1BJIF9fYnVpbHRpbl9IRVhBR09OX1MyX2FzbF9pX3Z3CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPWFzbChSc3MzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX2FzbF9QUihXb3JkNjQgUnNzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9hc2xfUFIgX19idWlsdGluX0hFWEFHT05fUzJfYXNsX3JfcAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMis9YXNsKFJzczMyLFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfYXNsYWNjX1BSKFdvcmQ2NCBSeHgsIFdvcmQ2NCBSc3MsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX2FzbGFjY19QUiBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfcl9wX2FjYwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMiY9YXNsKFJzczMyLFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfYXNsYW5kX1BSKFdvcmQ2NCBSeHgsIFdvcmQ2NCBSc3MsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX2FzbGFuZF9QUiBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfcl9wX2FuZAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMi09YXNsKFJzczMyLFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfYXNsbmFjX1BSKFdvcmQ2NCBSeHgsIFdvcmQ2NCBSc3MsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX2FzbG5hY19QUiBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfcl9wX25hYwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMnw9YXNsKFJzczMyLFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfYXNsb3JfUFIoV29yZDY0IFJ4eCwgV29yZDY0IFJzcywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfYXNsb3JfUFIgX19idWlsdGluX0hFWEFHT05fUzJfYXNsX3JfcF9vcgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMl49YXNsKFJzczMyLFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfYXNseGFjY19QUihXb3JkNjQgUnh4LCBXb3JkNjQgUnNzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9hc2x4YWNjX1BSIF9fYnVpbHRpbl9IRVhBR09OX1MyX2FzbF9yX3BfeG9yCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9YXNsKFJzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9hc2xfUlIoV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9hc2xfUlIgX19idWlsdGluX0hFWEFHT05fUzJfYXNsX3JfcgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeDMyKz1hc2woUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2FzbGFjY19SUihXb3JkMzIgUngsIFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfYXNsYWNjX1JSIF9fYnVpbHRpbl9IRVhBR09OX1MyX2FzbF9yX3JfYWNjCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzImPWFzbChSczMyLFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfYXNsYW5kX1JSKFdvcmQzMiBSeCwgV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9hc2xhbmRfUlIgX19idWlsdGluX0hFWEFHT05fUzJfYXNsX3Jfcl9hbmQKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUngzMi09YXNsKFJzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9hc2xuYWNfUlIoV29yZDMyIFJ4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2FzbG5hY19SUiBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfcl9yX25hYwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeDMyfD1hc2woUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2FzbG9yX1JSKFdvcmQzMiBSeCwgV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9hc2xvcl9SUiBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfcl9yX29yCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9YXNsKFJzMzIsUnQzMik6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfYXNsX1JSX3NhdChXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2FzbF9SUl9zYXQgX19idWlsdGluX0hFWEFHT05fUzJfYXNsX3Jfcl9zYXQKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dmFzbGgoUnNzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92YXNsaF9QUihXb3JkNjQgUnNzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92YXNsaF9QUiBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfcl92aAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj12YXNsdyhSc3MzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3Zhc2x3X1BSKFdvcmQ2NCBSc3MsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3Zhc2x3X1BSIF9fYnVpbHRpbl9IRVhBR09OX1MyX2FzbF9yX3Z3CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPWFzcihSc3MzMiwjdTYpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfYXNyX1BJKFdvcmQ2NCBSc3MsIFdvcmQzMiBJdTYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9hc3JfUEkgX19idWlsdGluX0hFWEFHT05fUzJfYXNyX2lfcAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMis9YXNyKFJzczMyLCN1NikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9hc3JhY2NfUEkoV29yZDY0IFJ4eCwgV29yZDY0IFJzcywgV29yZDMyIEl1NikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX2FzcmFjY19QSSBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3JfaV9wX2FjYwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMiY9YXNyKFJzczMyLCN1NikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9hc3JhbmRfUEkoV29yZDY0IFJ4eCwgV29yZDY0IFJzcywgV29yZDMyIEl1NikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX2FzcmFuZF9QSSBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3JfaV9wX2FuZAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMi09YXNyKFJzczMyLCN1NikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9hc3JuYWNfUEkoV29yZDY0IFJ4eCwgV29yZDY0IFJzcywgV29yZDMyIEl1NikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX2Fzcm5hY19QSSBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3JfaV9wX25hYwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMnw9YXNyKFJzczMyLCN1NikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9hc3Jvcl9QSShXb3JkNjQgUnh4LCBXb3JkNjQgUnNzLCBXb3JkMzIgSXU2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfYXNyb3JfUEkgX19idWlsdGluX0hFWEFHT05fUzJfYXNyX2lfcF9vcgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj1hc3IoUnNzMzIsI3U2KTpybmQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9hc3JfUElfcm5kKFdvcmQ2NCBSc3MsIFdvcmQzMiBJdTYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9hc3JfUElfcm5kIF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9pX3Bfcm5kCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPWFzcnJuZChSc3MzMiwjdTYpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfYXNycm5kX1BJKFdvcmQ2NCBSc3MsIFdvcmQzMiBJdTYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX2FzcnJuZF9QSSBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3JfaV9wX3JuZF9nb29kc3ludGF4CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9YXNyKFJzMzIsI3U1KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2Fzcl9SSShXb3JkMzIgUnMsIFdvcmQzMiBJdTUpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9hc3JfUkkgX19idWlsdGluX0hFWEFHT05fUzJfYXNyX2lfcgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeDMyKz1hc3IoUnMzMiwjdTUpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfYXNyYWNjX1JJKFdvcmQzMiBSeCwgV29yZDMyIFJzLCBXb3JkMzIgSXU1KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfYXNyYWNjX1JJIF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9pX3JfYWNjCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzImPWFzcihSczMyLCN1NSkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9hc3JhbmRfUkkoV29yZDMyIFJ4LCBXb3JkMzIgUnMsIFdvcmQzMiBJdTUpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9hc3JhbmRfUkkgX19idWlsdGluX0hFWEFHT05fUzJfYXNyX2lfcl9hbmQKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUngzMi09YXNyKFJzMzIsI3U1KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2Fzcm5hY19SSShXb3JkMzIgUngsIFdvcmQzMiBScywgV29yZDMyIEl1NSkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2Fzcm5hY19SSSBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3JfaV9yX25hYwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeDMyfD1hc3IoUnMzMiwjdTUpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfYXNyb3JfUkkoV29yZDMyIFJ4LCBXb3JkMzIgUnMsIFdvcmQzMiBJdTUpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9hc3Jvcl9SSSBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3JfaV9yX29yCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9YXNyKFJzMzIsI3U1KTpybmQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9hc3JfUklfcm5kKFdvcmQzMiBScywgV29yZDMyIEl1NSkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2Fzcl9SSV9ybmQgX19idWlsdGluX0hFWEFHT05fUzJfYXNyX2lfcl9ybmQKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1hc3JybmQoUnMzMiwjdTUpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfYXNycm5kX1JJKFdvcmQzMiBScywgV29yZDMyIEl1NSkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfYXNycm5kX1JJIF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9pX3Jfcm5kX2dvb2RzeW50YXgKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj12YXNydyhSc3MzMiwjdTUpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfdmFzcndfUEkoV29yZDY0IFJzcywgV29yZDMyIEl1NSkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX3Zhc3J3X1BJIF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9pX3N2d190cnVuCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZhc3JoKFJzczMyLCN1NCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92YXNyaF9QSShXb3JkNjQgUnNzLCBXb3JkMzIgSXU0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdmFzcmhfUEkgX19idWlsdGluX0hFWEFHT05fUzJfYXNyX2lfdmgKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dmFzcncoUnNzMzIsI3U1KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3Zhc3J3X1BJKFdvcmQ2NCBSc3MsIFdvcmQzMiBJdTUpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92YXNyd19QSSBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3JfaV92dwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj1hc3IoUnNzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9hc3JfUFIoV29yZDY0IFJzcywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfYXNyX1BSIF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9yX3AKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzIrPWFzcihSc3MzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX2FzcmFjY19QUihXb3JkNjQgUnh4LCBXb3JkNjQgUnNzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9hc3JhY2NfUFIgX19idWlsdGluX0hFWEFHT05fUzJfYXNyX3JfcF9hY2MKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzImPWFzcihSc3MzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX2FzcmFuZF9QUihXb3JkNjQgUnh4LCBXb3JkNjQgUnNzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9hc3JhbmRfUFIgX19idWlsdGluX0hFWEFHT05fUzJfYXNyX3JfcF9hbmQKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzItPWFzcihSc3MzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX2Fzcm5hY19QUihXb3JkNjQgUnh4LCBXb3JkNjQgUnNzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9hc3JuYWNfUFIgX19idWlsdGluX0hFWEFHT05fUzJfYXNyX3JfcF9uYWMKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzJ8PWFzcihSc3MzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX2Fzcm9yX1BSKFdvcmQ2NCBSeHgsIFdvcmQ2NCBSc3MsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX2Fzcm9yX1BSIF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9yX3Bfb3IKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzJePWFzcihSc3MzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX2FzcnhhY2NfUFIoV29yZDY0IFJ4eCwgV29yZDY0IFJzcywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfYXNyeGFjY19QUiBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3Jfcl9wX3hvcgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPWFzcihSczMyLFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfYXNyX1JSKFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfYXNyX1JSIF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9yX3IKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUngzMis9YXNyKFJzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9hc3JhY2NfUlIoV29yZDMyIFJ4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2FzcmFjY19SUiBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3Jfcl9yX2FjYwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeDMyJj1hc3IoUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2FzcmFuZF9SUihXb3JkMzIgUngsIFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfYXNyYW5kX1JSIF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9yX3JfYW5kCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzItPWFzcihSczMyLFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfYXNybmFjX1JSKFdvcmQzMiBSeCwgV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9hc3JuYWNfUlIgX19idWlsdGluX0hFWEFHT05fUzJfYXNyX3Jfcl9uYWMKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUngzMnw9YXNyKFJzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9hc3Jvcl9SUihXb3JkMzIgUngsIFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfYXNyb3JfUlIgX19idWlsdGluX0hFWEFHT05fUzJfYXNyX3Jfcl9vcgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPWFzcihSczMyLFJ0MzIpOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2Fzcl9SUl9zYXQoV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9hc3JfUlJfc2F0IF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9yX3Jfc2F0CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9dmFzcncoUnNzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl92YXNyd19QUihXb3JkNjQgUnNzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl92YXNyd19QUiBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3Jfcl9zdndfdHJ1bgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj12YXNyaChSc3MzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3Zhc3JoX1BSKFdvcmQ2NCBSc3MsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3Zhc3JoX1BSIF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9yX3ZoCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZhc3J3KFJzczMyLFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfdmFzcndfUFIoV29yZDY0IFJzcywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdmFzcndfUFIgX19idWlsdGluX0hFWEFHT05fUzJfYXNyX3JfdncKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1icmV2KFJzMzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfYnJldl9SKFdvcmQzMiBScykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2JyZXZfUiBfX2J1aWx0aW5fSEVYQUdPTl9TMl9icmV2CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPWJyZXYoUnNzMzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfYnJldl9QKFdvcmQ2NCBSc3MpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9icmV2X1AgX19idWlsdGluX0hFWEFHT05fUzJfYnJldnAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1jbDAoUnMzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9jbDBfUihXb3JkMzIgUnMpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9jbDBfUiBfX2J1aWx0aW5fSEVYQUdPTl9TMl9jbDAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1jbDAoUnNzMzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfY2wwX1AoV29yZDY0IFJzcykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2NsMF9QIF9fYnVpbHRpbl9IRVhBR09OX1MyX2NsMHAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1jbDEoUnMzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9jbDFfUihXb3JkMzIgUnMpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9jbDFfUiBfX2J1aWx0aW5fSEVYQUdPTl9TMl9jbDEKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1jbDEoUnNzMzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfY2wxX1AoV29yZDY0IFJzcykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2NsMV9QIF9fYnVpbHRpbl9IRVhBR09OX1MyX2NsMXAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1jbGIoUnMzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9jbGJfUihXb3JkMzIgUnMpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9jbGJfUiBfX2J1aWx0aW5fSEVYQUdPTl9TMl9jbGIKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1ub3JtYW10KFJzMzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1Jfbm9ybWFtdF9SKFdvcmQzMiBScykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX25vcm1hbXRfUiBfX2J1aWx0aW5fSEVYQUdPTl9TMl9jbGJub3JtCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9Y2xiKFJzczMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2NsYl9QKFdvcmQ2NCBSc3MpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9jbGJfUCBfX2J1aWx0aW5fSEVYQUdPTl9TMl9jbGJwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9Y2xyYml0KFJzMzIsI3U1KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2NscmJpdF9SSShXb3JkMzIgUnMsIFdvcmQzMiBJdTUpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9jbHJiaXRfUkkgX19idWlsdGluX0hFWEFHT05fUzJfY2xyYml0X2kKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1jbHJiaXQoUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2NscmJpdF9SUihXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2NscmJpdF9SUiBfX2J1aWx0aW5fSEVYQUdPTl9TMl9jbHJiaXRfcgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPWN0MChSczMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2N0MF9SKFdvcmQzMiBScykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2N0MF9SIF9fYnVpbHRpbl9IRVhBR09OX1MyX2N0MAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPWN0MChSc3MzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9jdDBfUChXb3JkNjQgUnNzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfY3QwX1AgX19idWlsdGluX0hFWEFHT05fUzJfY3QwcAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPWN0MShSczMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2N0MV9SKFdvcmQzMiBScykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2N0MV9SIF9fYnVpbHRpbl9IRVhBR09OX1MyX2N0MQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPWN0MShSc3MzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9jdDFfUChXb3JkNjQgUnNzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfY3QxX1AgX19idWlsdGluX0hFWEFHT05fUzJfY3QxcAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj1kZWludGVybGVhdmUoUnNzMzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfZGVpbnRlcmxlYXZlX1AoV29yZDY0IFJzcykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX2RlaW50ZXJsZWF2ZV9QIF9fYnVpbHRpbl9IRVhBR09OX1MyX2RlaW50ZXJsZWF2ZQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPWV4dHJhY3R1KFJzMzIsI3U1LCNVNSkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9leHRyYWN0dV9SSUkoV29yZDMyIFJzLCBXb3JkMzIgSXU1LCBXb3JkMzIgSVU1KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfZXh0cmFjdHVfUklJIF9fYnVpbHRpbl9IRVhBR09OX1MyX2V4dHJhY3R1CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9ZXh0cmFjdHUoUnMzMixSdHQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9leHRyYWN0dV9SUChXb3JkMzIgUnMsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9leHRyYWN0dV9SUCBfX2J1aWx0aW5fSEVYQUdPTl9TMl9leHRyYWN0dV9ycAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj1leHRyYWN0dShSc3MzMiwjdTYsI1U2KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX2V4dHJhY3R1X1BJSShXb3JkNjQgUnNzLCBXb3JkMzIgSXU2LCBXb3JkMzIgSVU2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfZXh0cmFjdHVfUElJIF9fYnVpbHRpbl9IRVhBR09OX1MyX2V4dHJhY3R1cAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj1leHRyYWN0dShSc3MzMixSdHQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9leHRyYWN0dV9QUChXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfZXh0cmFjdHVfUFAgX19idWlsdGluX0hFWEFHT05fUzJfZXh0cmFjdHVwX3JwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzI9aW5zZXJ0KFJzMzIsI3U1LCNVNSkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9pbnNlcnRfUklJKFdvcmQzMiBSeCwgV29yZDMyIFJzLCBXb3JkMzIgSXU1LCBXb3JkMzIgSVU1KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfaW5zZXJ0X1JJSSBfX2J1aWx0aW5fSEVYQUdPTl9TMl9pbnNlcnQKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUngzMj1pbnNlcnQoUnMzMixSdHQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9pbnNlcnRfUlAoV29yZDMyIFJ4LCBXb3JkMzIgUnMsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9pbnNlcnRfUlAgX19idWlsdGluX0hFWEFHT05fUzJfaW5zZXJ0X3JwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4eDMyPWluc2VydChSc3MzMiwjdTYsI1U2KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX2luc2VydF9QSUkoV29yZDY0IFJ4eCwgV29yZDY0IFJzcywgV29yZDMyIEl1NiwgV29yZDMyIElVNikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX2luc2VydF9QSUkgX19idWlsdGluX0hFWEFHT05fUzJfaW5zZXJ0cAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMj1pbnNlcnQoUnNzMzIsUnR0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfaW5zZXJ0X1BQKFdvcmQ2NCBSeHgsIFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9pbnNlcnRfUFAgX19idWlsdGluX0hFWEFHT05fUzJfaW5zZXJ0cF9ycAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj1pbnRlcmxlYXZlKFJzczMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX2ludGVybGVhdmVfUChXb3JkNjQgUnNzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfaW50ZXJsZWF2ZV9QIF9fYnVpbHRpbl9IRVhBR09OX1MyX2ludGVybGVhdmUKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9bGZzKFJzczMyLFJ0dDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX2xmc19QUChXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfbGZzX1BQIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xmc3AKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9bHNsKFJzczMyLFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfbHNsX1BSKFdvcmQ2NCBSc3MsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX2xzbF9QUiBfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc2xfcl9wCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4eDMyKz1sc2woUnNzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9sc2xhY2NfUFIoV29yZDY0IFJ4eCwgV29yZDY0IFJzcywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfbHNsYWNjX1BSIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzbF9yX3BfYWNjCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4eDMyJj1sc2woUnNzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9sc2xhbmRfUFIoV29yZDY0IFJ4eCwgV29yZDY0IFJzcywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfbHNsYW5kX1BSIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzbF9yX3BfYW5kCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4eDMyLT1sc2woUnNzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9sc2xuYWNfUFIoV29yZDY0IFJ4eCwgV29yZDY0IFJzcywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfbHNsbmFjX1BSIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzbF9yX3BfbmFjCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4eDMyfD1sc2woUnNzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9sc2xvcl9QUihXb3JkNjQgUnh4LCBXb3JkNjQgUnNzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9sc2xvcl9QUiBfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc2xfcl9wX29yCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4eDMyXj1sc2woUnNzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9sc2x4YWNjX1BSKFdvcmQ2NCBSeHgsIFdvcmQ2NCBSc3MsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX2xzbHhhY2NfUFIgX19idWlsdGluX0hFWEFHT05fUzJfbHNsX3JfcF94b3IKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1sc2woUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2xzbF9SUihXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2xzbF9SUiBfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc2xfcl9yCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzIrPWxzbChSczMyLFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfbHNsYWNjX1JSKFdvcmQzMiBSeCwgV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9sc2xhY2NfUlIgX19idWlsdGluX0hFWEFHT05fUzJfbHNsX3Jfcl9hY2MKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUngzMiY9bHNsKFJzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9sc2xhbmRfUlIoV29yZDMyIFJ4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2xzbGFuZF9SUiBfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc2xfcl9yX2FuZAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeDMyLT1sc2woUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2xzbG5hY19SUihXb3JkMzIgUngsIFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfbHNsbmFjX1JSIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzbF9yX3JfbmFjCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzJ8PWxzbChSczMyLFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfbHNsb3JfUlIoV29yZDMyIFJ4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2xzbG9yX1JSIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzbF9yX3Jfb3IKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dmxzbGgoUnNzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92bHNsaF9QUihXb3JkNjQgUnNzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92bHNsaF9QUiBfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc2xfcl92aAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj12bHNsdyhSc3MzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3Zsc2x3X1BSKFdvcmQ2NCBSc3MsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3Zsc2x3X1BSIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzbF9yX3Z3CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPWxzcihSc3MzMiwjdTYpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfbHNyX1BJKFdvcmQ2NCBSc3MsIFdvcmQzMiBJdTYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9sc3JfUEkgX19idWlsdGluX0hFWEFHT05fUzJfbHNyX2lfcAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMis9bHNyKFJzczMyLCN1NikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9sc3JhY2NfUEkoV29yZDY0IFJ4eCwgV29yZDY0IFJzcywgV29yZDMyIEl1NikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX2xzcmFjY19QSSBfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc3JfaV9wX2FjYwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMiY9bHNyKFJzczMyLCN1NikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9sc3JhbmRfUEkoV29yZDY0IFJ4eCwgV29yZDY0IFJzcywgV29yZDMyIEl1NikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX2xzcmFuZF9QSSBfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc3JfaV9wX2FuZAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMi09bHNyKFJzczMyLCN1NikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9sc3JuYWNfUEkoV29yZDY0IFJ4eCwgV29yZDY0IFJzcywgV29yZDMyIEl1NikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX2xzcm5hY19QSSBfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc3JfaV9wX25hYwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMnw9bHNyKFJzczMyLCN1NikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9sc3Jvcl9QSShXb3JkNjQgUnh4LCBXb3JkNjQgUnNzLCBXb3JkMzIgSXU2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfbHNyb3JfUEkgX19idWlsdGluX0hFWEFHT05fUzJfbHNyX2lfcF9vcgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMl49bHNyKFJzczMyLCN1NikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9sc3J4YWNjX1BJKFdvcmQ2NCBSeHgsIFdvcmQ2NCBSc3MsIFdvcmQzMiBJdTYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9sc3J4YWNjX1BJIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzcl9pX3BfeGFjYwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPWxzcihSczMyLCN1NSkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9sc3JfUkkoV29yZDMyIFJzLCBXb3JkMzIgSXU1KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfbHNyX1JJIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzcl9pX3IKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUngzMis9bHNyKFJzMzIsI3U1KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2xzcmFjY19SSShXb3JkMzIgUngsIFdvcmQzMiBScywgV29yZDMyIEl1NSkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2xzcmFjY19SSSBfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc3JfaV9yX2FjYwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeDMyJj1sc3IoUnMzMiwjdTUpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfbHNyYW5kX1JJKFdvcmQzMiBSeCwgV29yZDMyIFJzLCBXb3JkMzIgSXU1KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfbHNyYW5kX1JJIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzcl9pX3JfYW5kCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzItPWxzcihSczMyLCN1NSkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9sc3JuYWNfUkkoV29yZDMyIFJ4LCBXb3JkMzIgUnMsIFdvcmQzMiBJdTUpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9sc3JuYWNfUkkgX19idWlsdGluX0hFWEFHT05fUzJfbHNyX2lfcl9uYWMKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUngzMnw9bHNyKFJzMzIsI3U1KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2xzcm9yX1JJKFdvcmQzMiBSeCwgV29yZDMyIFJzLCBXb3JkMzIgSXU1KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfbHNyb3JfUkkgX19idWlsdGluX0hFWEFHT05fUzJfbHNyX2lfcl9vcgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeDMyXj1sc3IoUnMzMiwjdTUpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfbHNyeGFjY19SSShXb3JkMzIgUngsIFdvcmQzMiBScywgV29yZDMyIEl1NSkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2xzcnhhY2NfUkkgX19idWlsdGluX0hFWEFHT05fUzJfbHNyX2lfcl94YWNjCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZsc3JoKFJzczMyLCN1NCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92bHNyaF9QSShXb3JkNjQgUnNzLCBXb3JkMzIgSXU0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdmxzcmhfUEkgX19idWlsdGluX0hFWEFHT05fUzJfbHNyX2lfdmgKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dmxzcncoUnNzMzIsI3U1KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3Zsc3J3X1BJKFdvcmQ2NCBSc3MsIFdvcmQzMiBJdTUpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92bHNyd19QSSBfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc3JfaV92dwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj1sc3IoUnNzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9sc3JfUFIoV29yZDY0IFJzcywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfbHNyX1BSIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzcl9yX3AKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzIrPWxzcihSc3MzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX2xzcmFjY19QUihXb3JkNjQgUnh4LCBXb3JkNjQgUnNzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9sc3JhY2NfUFIgX19idWlsdGluX0hFWEFHT05fUzJfbHNyX3JfcF9hY2MKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzImPWxzcihSc3MzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX2xzcmFuZF9QUihXb3JkNjQgUnh4LCBXb3JkNjQgUnNzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9sc3JhbmRfUFIgX19idWlsdGluX0hFWEFHT05fUzJfbHNyX3JfcF9hbmQKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzItPWxzcihSc3MzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX2xzcm5hY19QUihXb3JkNjQgUnh4LCBXb3JkNjQgUnNzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9sc3JuYWNfUFIgX19idWlsdGluX0hFWEFHT05fUzJfbHNyX3JfcF9uYWMKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzJ8PWxzcihSc3MzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX2xzcm9yX1BSKFdvcmQ2NCBSeHgsIFdvcmQ2NCBSc3MsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX2xzcm9yX1BSIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzcl9yX3Bfb3IKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzJePWxzcihSc3MzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX2xzcnhhY2NfUFIoV29yZDY0IFJ4eCwgV29yZDY0IFJzcywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfbHNyeGFjY19QUiBfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc3Jfcl9wX3hvcgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPWxzcihSczMyLFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfbHNyX1JSKFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfbHNyX1JSIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzcl9yX3IKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUngzMis9bHNyKFJzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9sc3JhY2NfUlIoV29yZDMyIFJ4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2xzcmFjY19SUiBfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc3Jfcl9yX2FjYwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeDMyJj1sc3IoUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2xzcmFuZF9SUihXb3JkMzIgUngsIFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfbHNyYW5kX1JSIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzcl9yX3JfYW5kCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzItPWxzcihSczMyLFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfbHNybmFjX1JSKFdvcmQzMiBSeCwgV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9sc3JuYWNfUlIgX19idWlsdGluX0hFWEFHT05fUzJfbHNyX3Jfcl9uYWMKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUngzMnw9bHNyKFJzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9sc3Jvcl9SUihXb3JkMzIgUngsIFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfbHNyb3JfUlIgX19idWlsdGluX0hFWEFHT05fUzJfbHNyX3Jfcl9vcgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj12bHNyaChSc3MzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3Zsc3JoX1BSKFdvcmQ2NCBSc3MsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3Zsc3JoX1BSIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzcl9yX3ZoCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZsc3J3KFJzczMyLFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfdmxzcndfUFIoV29yZDY0IFJzcywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdmxzcndfUFIgX19idWlsdGluX0hFWEFHT05fUzJfbHNyX3JfdncKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9cGFja2hsKFJzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9wYWNraGxfUlIoV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVMzJfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9wYWNraGxfUlIgX19idWlsdGluX0hFWEFHT05fUzJfcGFja2hsCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9cGFyaXR5KFJzczMyLFJ0dDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX3Bhcml0eV9QUChXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfcGFyaXR5X1BQIF9fYnVpbHRpbl9IRVhBR09OX1MyX3Bhcml0eXAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1zZXRiaXQoUnMzMiwjdTUpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1Jfc2V0Yml0X1JJKFdvcmQzMiBScywgV29yZDMyIEl1NSkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX3NldGJpdF9SSSBfX2J1aWx0aW5fSEVYQUdPTl9TMl9zZXRiaXRfaQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPXNldGJpdChSczMyLFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1Jfc2V0Yml0X1JSKFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Jfc2V0Yml0X1JSIF9fYnVpbHRpbl9IRVhBR09OX1MyX3NldGJpdF9yCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXNodWZmZWIoUnNzMzIsUnR0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1Bfc2h1ZmZlYl9QUChXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Bfc2h1ZmZlYl9QUCBfX2J1aWx0aW5fSEVYQUdPTl9TMl9zaHVmZmViCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXNodWZmZWgoUnNzMzIsUnR0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1Bfc2h1ZmZlaF9QUChXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Bfc2h1ZmZlaF9QUCBfX2J1aWx0aW5fSEVYQUdPTl9TMl9zaHVmZmVoCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXNodWZmb2IoUnR0MzIsUnNzMzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1Bfc2h1ZmZvYl9QUChXb3JkNjQgUnR0LCBXb3JkNjQgUnNzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Bfc2h1ZmZvYl9QUCBfX2J1aWx0aW5fSEVYQUdPTl9TMl9zaHVmZm9iCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXNodWZmb2goUnR0MzIsUnNzMzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1Bfc2h1ZmZvaF9QUChXb3JkNjQgUnR0LCBXb3JkNjQgUnNzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Bfc2h1ZmZvaF9QUCBfX2J1aWx0aW5fSEVYQUdPTl9TMl9zaHVmZm9oCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIG1lbWIoUngzMisrI3M0OjA6Y2lyYyhNdTIpKT1SdDMyCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogdm9pZCBRNl9tZW1iX0lNUl9jaXJjKHZvaWQqKiBSeCwgV29yZDMyIElzNF8wLCBXb3JkMzIgTXUsIFdvcmQzMiBSdCwgdm9pZCogQmFzZUFkZHJlc3MpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU1QKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfbWVtYl9JTVJfY2lyYyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9zdG9yZXJiX3BjaQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBtZW1iKFJ4MzIrK0k6Y2lyYyhNdTIpKT1SdDMyCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogdm9pZCBRNl9tZW1iX01SX2NpcmModm9pZCoqIFJ4LCBXb3JkMzIgTXUsIFdvcmQzMiBSdCwgdm9pZCogQmFzZUFkZHJlc3MpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU1QKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfbWVtYl9NUl9jaXJjIF9fYnVpbHRpbl9IRVhBR09OX1MyX3N0b3JlcmJfcGNyCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIG1lbWQoUngzMisrI3M0OjM6Y2lyYyhNdTIpKT1SdHQzMgogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IHZvaWQgUTZfbWVtZF9JTVBfY2lyYyh2b2lkKiogUngsIFdvcmQzMiBJczRfMywgV29yZDMyIE11LCBXb3JkNjQgUnR0LCB2b2lkKiBCYXNlQWRkcmVzcykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTVAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9tZW1kX0lNUF9jaXJjIF9fYnVpbHRpbl9IRVhBR09OX1MyX3N0b3JlcmRfcGNpCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIG1lbWQoUngzMisrSTpjaXJjKE11MikpPVJ0dDMyCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogdm9pZCBRNl9tZW1kX01QX2NpcmModm9pZCoqIFJ4LCBXb3JkMzIgTXUsIFdvcmQ2NCBSdHQsIHZvaWQqIEJhc2VBZGRyZXNzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNUCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X21lbWRfTVBfY2lyYyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9zdG9yZXJkX3BjcgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBtZW1oKFJ4MzIrKyNzNDoxOmNpcmMoTXUyKSk9UnQzMi5oCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogdm9pZCBRNl9tZW1oX0lNUmhfY2lyYyh2b2lkKiogUngsIFdvcmQzMiBJczRfMSwgV29yZDMyIE11LCBXb3JkMzIgUnQsIHZvaWQqIEJhc2VBZGRyZXNzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNUCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X21lbWhfSU1SaF9jaXJjIF9fYnVpbHRpbl9IRVhBR09OX1MyX3N0b3JlcmZfcGNpCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIG1lbWgoUngzMisrSTpjaXJjKE11MikpPVJ0MzIuaAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IHZvaWQgUTZfbWVtaF9NUmhfY2lyYyh2b2lkKiogUngsIFdvcmQzMiBNdSwgV29yZDMyIFJ0LCB2b2lkKiBCYXNlQWRkcmVzcykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTVAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9tZW1oX01SaF9jaXJjIF9fYnVpbHRpbl9IRVhBR09OX1MyX3N0b3JlcmZfcGNyCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIG1lbWgoUngzMisrI3M0OjE6Y2lyYyhNdTIpKT1SdDMyCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogdm9pZCBRNl9tZW1oX0lNUl9jaXJjKHZvaWQqKiBSeCwgV29yZDMyIElzNF8xLCBXb3JkMzIgTXUsIFdvcmQzMiBSdCwgdm9pZCogQmFzZUFkZHJlc3MpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU1QKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfbWVtaF9JTVJfY2lyYyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9zdG9yZXJoX3BjaQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBtZW1oKFJ4MzIrK0k6Y2lyYyhNdTIpKT1SdDMyCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogdm9pZCBRNl9tZW1oX01SX2NpcmModm9pZCoqIFJ4LCBXb3JkMzIgTXUsIFdvcmQzMiBSdCwgdm9pZCogQmFzZUFkZHJlc3MpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU1QKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfbWVtaF9NUl9jaXJjIF9fYnVpbHRpbl9IRVhBR09OX1MyX3N0b3JlcmhfcGNyCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIG1lbXcoUngzMisrI3M0OjI6Y2lyYyhNdTIpKT1SdDMyCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogdm9pZCBRNl9tZW13X0lNUl9jaXJjKHZvaWQqKiBSeCwgV29yZDMyIElzNF8yLCBXb3JkMzIgTXUsIFdvcmQzMiBSdCwgdm9pZCogQmFzZUFkZHJlc3MpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU1QKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfbWVtd19JTVJfY2lyYyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9zdG9yZXJpX3BjaQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBtZW13KFJ4MzIrK0k6Y2lyYyhNdTIpKT1SdDMyCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogdm9pZCBRNl9tZW13X01SX2NpcmModm9pZCoqIFJ4LCBXb3JkMzIgTXUsIFdvcmQzMiBSdCwgdm9pZCogQmFzZUFkZHJlc3MpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU1QKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfbWVtd19NUl9jaXJjIF9fYnVpbHRpbl9IRVhBR09OX1MyX3N0b3JlcmlfcGNyCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9dnNhdGhiKFJzMzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfdnNhdGhiX1IoV29yZDMyIFJzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfdnNhdGhiX1IgX19idWlsdGluX0hFWEFHT05fUzJfc3ZzYXRoYgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPXZzYXRodWIoUnMzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl92c2F0aHViX1IoV29yZDMyIFJzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfdnNhdGh1Yl9SIF9fYnVpbHRpbl9IRVhBR09OX1MyX3N2c2F0aHViCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzI9dGFibGVpZHhiKFJzMzIsI3U0LCNVNSkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl90YWJsZWlkeGJfUklJKFdvcmQzMiBSeCwgV29yZDMyIFJzLCBXb3JkMzIgSXU0LCBXb3JkMzIgSVU1KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl90YWJsZWlkeGJfUklJIF9fYnVpbHRpbl9IRVhBR09OX1MyX3RhYmxlaWR4Yl9nb29kc3ludGF4CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzI9dGFibGVpZHhkKFJzMzIsI3U0LCNVNSkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl90YWJsZWlkeGRfUklJKFdvcmQzMiBSeCwgV29yZDMyIFJzLCBXb3JkMzIgSXU0LCBXb3JkMzIgSVU1KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl90YWJsZWlkeGRfUklJIF9fYnVpbHRpbl9IRVhBR09OX1MyX3RhYmxlaWR4ZF9nb29kc3ludGF4CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzI9dGFibGVpZHhoKFJzMzIsI3U0LCNVNSkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl90YWJsZWlkeGhfUklJKFdvcmQzMiBSeCwgV29yZDMyIFJzLCBXb3JkMzIgSXU0LCBXb3JkMzIgSVU1KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl90YWJsZWlkeGhfUklJIF9fYnVpbHRpbl9IRVhBR09OX1MyX3RhYmxlaWR4aF9nb29kc3ludGF4CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzI9dGFibGVpZHh3KFJzMzIsI3U0LCNVNSkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl90YWJsZWlkeHdfUklJKFdvcmQzMiBSeCwgV29yZDMyIFJzLCBXb3JkMzIgSXU0LCBXb3JkMzIgSVU1KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl90YWJsZWlkeHdfUklJIF9fYnVpbHRpbl9IRVhBR09OX1MyX3RhYmxlaWR4d19nb29kc3ludGF4CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9dG9nZ2xlYml0KFJzMzIsI3U1KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX3RvZ2dsZWJpdF9SSShXb3JkMzIgUnMsIFdvcmQzMiBJdTUpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl90b2dnbGViaXRfUkkgX19idWlsdGluX0hFWEFHT05fUzJfdG9nZ2xlYml0X2kKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj10b2dnbGViaXQoUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX3RvZ2dsZWJpdF9SUihXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX3RvZ2dsZWJpdF9SUiBfX2J1aWx0aW5fSEVYQUdPTl9TMl90b2dnbGViaXRfcgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBQZDQ9dHN0Yml0KFJzMzIsI3U1KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEJ5dGUgUTZfcF90c3RiaXRfUkkoV29yZDMyIFJzLCBXb3JkMzIgSXU1KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X3BfdHN0Yml0X1JJIF9fYnVpbHRpbl9IRVhBR09OX1MyX3RzdGJpdF9pCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFBkND10c3RiaXQoUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEJ5dGUgUTZfcF90c3RiaXRfUlIoV29yZDMyIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfcF90c3RiaXRfUlIgX19idWlsdGluX0hFWEFHT05fUzJfdHN0Yml0X3IKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dmFsaWduYihSdHQzMixSc3MzMiwjdTMpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfdmFsaWduYl9QUEkoV29yZDY0IFJ0dCwgV29yZDY0IFJzcywgV29yZDMyIEl1MykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZhbGlnbmJfUFBJIF9fYnVpbHRpbl9IRVhBR09OX1MyX3ZhbGlnbmliCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZhbGlnbmIoUnR0MzIsUnNzMzIsUHU0KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZhbGlnbmJfUFBwKFdvcmQ2NCBSdHQsIFdvcmQ2NCBSc3MsIEJ5dGUgUHUpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92YWxpZ25iX1BQcCBfX2J1aWx0aW5fSEVYQUdPTl9TMl92YWxpZ25yYgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj12Y25lZ2goUnNzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92Y25lZ2hfUFIoV29yZDY0IFJzcywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdmNuZWdoX1BSIF9fYnVpbHRpbl9IRVhBR09OX1MyX3ZjbmVnaAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj12Y3JvdGF0ZShSc3MzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3Zjcm90YXRlX1BSKFdvcmQ2NCBSc3MsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3Zjcm90YXRlX1BSIF9fYnVpbHRpbl9IRVhBR09OX1MyX3Zjcm90YXRlCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4eDMyKz12cmNuZWdoKFJzczMyLFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfdnJjbmVnaGFjY19QUihXb3JkNjQgUnh4LCBXb3JkNjQgUnNzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92cmNuZWdoYWNjX1BSIF9fYnVpbHRpbl9IRVhBR09OX1MyX3ZyY25lZ2gKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj12cm5kd2goUnNzMzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfdnJuZHdoX1AoV29yZDY0IFJzcykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX3ZybmR3aF9QIF9fYnVpbHRpbl9IRVhBR09OX1MyX3ZybmRwYWNrd2gKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj12cm5kd2goUnNzMzIpOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX3ZybmR3aF9QX3NhdChXb3JkNjQgUnNzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfdnJuZHdoX1Bfc2F0IF9fYnVpbHRpbl9IRVhBR09OX1MyX3ZybmRwYWNrd2hzCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9dnNhdGhiKFJzczMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX3ZzYXRoYl9QKFdvcmQ2NCBSc3MpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl92c2F0aGJfUCBfX2J1aWx0aW5fSEVYQUdPTl9TMl92c2F0aGIKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dnNhdGhiKFJzczMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZzYXRoYl9QKFdvcmQ2NCBSc3MpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92c2F0aGJfUCBfX2J1aWx0aW5fSEVYQUdPTl9TMl92c2F0aGJfbm9wYWNrCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9dnNhdGh1YihSc3MzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl92c2F0aHViX1AoV29yZDY0IFJzcykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX3ZzYXRodWJfUCBfX2J1aWx0aW5fSEVYQUdPTl9TMl92c2F0aHViCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZzYXRodWIoUnNzMzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfdnNhdGh1Yl9QKFdvcmQ2NCBSc3MpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92c2F0aHViX1AgX19idWlsdGluX0hFWEFHT05fUzJfdnNhdGh1Yl9ub3BhY2sKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj12c2F0d2goUnNzMzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfdnNhdHdoX1AoV29yZDY0IFJzcykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX3ZzYXR3aF9QIF9fYnVpbHRpbl9IRVhBR09OX1MyX3ZzYXR3aAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj12c2F0d2goUnNzMzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfdnNhdHdoX1AoV29yZDY0IFJzcykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZzYXR3aF9QIF9fYnVpbHRpbl9IRVhBR09OX1MyX3ZzYXR3aF9ub3BhY2sKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj12c2F0d3VoKFJzczMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX3ZzYXR3dWhfUChXb3JkNjQgUnNzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfdnNhdHd1aF9QIF9fYnVpbHRpbl9IRVhBR09OX1MyX3ZzYXR3dWgKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dnNhdHd1aChSc3MzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92c2F0d3VoX1AoV29yZDY0IFJzcykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZzYXR3dWhfUCBfX2J1aWx0aW5fSEVYQUdPTl9TMl92c2F0d3VoX25vcGFjawoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPXZzcGxhdGIoUnMzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl92c3BsYXRiX1IoV29yZDMyIFJzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfdnNwbGF0Yl9SIF9fYnVpbHRpbl9IRVhBR09OX1MyX3ZzcGxhdHJiCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZzcGxhdGgoUnMzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92c3BsYXRoX1IoV29yZDMyIFJzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdnNwbGF0aF9SIF9fYnVpbHRpbl9IRVhBR09OX1MyX3ZzcGxhdHJoCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZzcGxpY2ViKFJzczMyLFJ0dDMyLCN1MykKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92c3BsaWNlYl9QUEkoV29yZDY0IFJzcywgV29yZDY0IFJ0dCwgV29yZDMyIEl1MykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZzcGxpY2ViX1BQSSBfX2J1aWx0aW5fSEVYQUdPTl9TMl92c3BsaWNlaWIKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dnNwbGljZWIoUnNzMzIsUnR0MzIsUHU0KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZzcGxpY2ViX1BQcChXb3JkNjQgUnNzLCBXb3JkNjQgUnR0LCBCeXRlIFB1KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdnNwbGljZWJfUFBwIF9fYnVpbHRpbl9IRVhBR09OX1MyX3ZzcGxpY2VyYgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj12c3h0YmgoUnMzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92c3h0YmhfUihXb3JkMzIgUnMpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92c3h0YmhfUiBfX2J1aWx0aW5fSEVYQUdPTl9TMl92c3h0YmgKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dnN4dGh3KFJzMzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfdnN4dGh3X1IoV29yZDMyIFJzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdnN4dGh3X1IgX19idWlsdGluX0hFWEFHT05fUzJfdnN4dGh3CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9dnRydW5laGIoUnNzMzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfdnRydW5laGJfUChXb3JkNjQgUnNzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfdnRydW5laGJfUCBfX2J1aWx0aW5fSEVYQUdPTl9TMl92dHJ1bmVoYgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj12dHJ1bmV3aChSc3MzMixSdHQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92dHJ1bmV3aF9QUChXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdnRydW5ld2hfUFAgX19idWlsdGluX0hFWEFHT05fUzJfdnRydW5ld2gKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj12dHJ1bm9oYihSc3MzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl92dHJ1bm9oYl9QKFdvcmQ2NCBSc3MpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl92dHJ1bm9oYl9QIF9fYnVpbHRpbl9IRVhBR09OX1MyX3Z0cnVub2hiCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZ0cnVub3doKFJzczMyLFJ0dDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3Z0cnVub3doX1BQKFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92dHJ1bm93aF9QUCBfX2J1aWx0aW5fSEVYQUdPTl9TMl92dHJ1bm93aAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj12enh0YmgoUnMzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92enh0YmhfUihXb3JkMzIgUnMpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92enh0YmhfUiBfX2J1aWx0aW5fSEVYQUdPTl9TMl92enh0YmgKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dnp4dGh3KFJzMzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1Bfdnp4dGh3X1IoV29yZDMyIFJzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Bfdnp4dGh3X1IgX19idWlsdGluX0hFWEFHT05fUzJfdnp4dGh3CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9YWRkKFJzMzIsYWRkKFJ1MzIsI3M2KSkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9hZGRfYWRkX1JSSShXb3JkMzIgUnMsIFdvcmQzMiBSdSwgV29yZDMyIElzNikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2FkZF9hZGRfUlJJIF9fYnVpbHRpbl9IRVhBR09OX1M0X2FkZGFkZGkKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUngzMj1hZGQoI3U4LGFzbChSeDMyLCNVNSkpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfYWRkX2FzbF9JUkkoV29yZDMyIEl1OCwgV29yZDMyIFJ4LCBXb3JkMzIgSVU1KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfYWRkX2FzbF9JUkkgX19idWlsdGluX0hFWEFHT05fUzRfYWRkaV9hc2xfcmkKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUngzMj1hZGQoI3U4LGxzcihSeDMyLCNVNSkpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfYWRkX2xzcl9JUkkoV29yZDMyIEl1OCwgV29yZDMyIFJ4LCBXb3JkMzIgSVU1KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfYWRkX2xzcl9JUkkgX19idWlsdGluX0hFWEFHT05fUzRfYWRkaV9sc3JfcmkKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUngzMj1hbmQoI3U4LGFzbChSeDMyLCNVNSkpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfYW5kX2FzbF9JUkkoV29yZDMyIEl1OCwgV29yZDMyIFJ4LCBXb3JkMzIgSVU1KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfYW5kX2FzbF9JUkkgX19idWlsdGluX0hFWEFHT05fUzRfYW5kaV9hc2xfcmkKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUngzMj1hbmQoI3U4LGxzcihSeDMyLCNVNSkpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfYW5kX2xzcl9JUkkoV29yZDMyIEl1OCwgV29yZDMyIFJ4LCBXb3JkMzIgSVU1KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfYW5kX2xzcl9JUkkgX19idWlsdGluX0hFWEFHT05fUzRfYW5kaV9sc3JfcmkKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1hZGQoY2xiKFJzMzIpLCNzNikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9hZGRfY2xiX1JJKFdvcmQzMiBScywgV29yZDMyIElzNikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2FkZF9jbGJfUkkgX19idWlsdGluX0hFWEFHT05fUzRfY2xiYWRkaQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPWFkZChjbGIoUnNzMzIpLCNzNikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9hZGRfY2xiX1BJKFdvcmQ2NCBSc3MsIFdvcmQzMiBJczYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9hZGRfY2xiX1BJIF9fYnVpbHRpbl9IRVhBR09OX1M0X2NsYnBhZGRpCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9bm9ybWFtdChSc3MzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9ub3JtYW10X1AoV29yZDY0IFJzcykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX25vcm1hbXRfUCBfX2J1aWx0aW5fSEVYQUdPTl9TNF9jbGJwbm9ybQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPWV4dHJhY3QoUnMzMiwjdTUsI1U1KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2V4dHJhY3RfUklJKFdvcmQzMiBScywgV29yZDMyIEl1NSwgV29yZDMyIElVNSkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2V4dHJhY3RfUklJIF9fYnVpbHRpbl9IRVhBR09OX1M0X2V4dHJhY3QKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1leHRyYWN0KFJzMzIsUnR0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfZXh0cmFjdF9SUChXb3JkMzIgUnMsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9leHRyYWN0X1JQIF9fYnVpbHRpbl9IRVhBR09OX1M0X2V4dHJhY3RfcnAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9ZXh0cmFjdChSc3MzMiwjdTYsI1U2KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX2V4dHJhY3RfUElJKFdvcmQ2NCBSc3MsIFdvcmQzMiBJdTYsIFdvcmQzMiBJVTYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9leHRyYWN0X1BJSSBfX2J1aWx0aW5fSEVYQUdPTl9TNF9leHRyYWN0cAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj1leHRyYWN0KFJzczMyLFJ0dDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX2V4dHJhY3RfUFAoV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX2V4dHJhY3RfUFAgX19idWlsdGluX0hFWEFHT05fUzRfZXh0cmFjdHBfcnAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1sc2woI3M2LFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfbHNsX0lSKFdvcmQzMiBJczYsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2xzbF9JUiBfX2J1aWx0aW5fSEVYQUdPTl9TNF9sc2xpCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFBkND0hdHN0Yml0KFJzMzIsI3U1KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEJ5dGUgUTZfcF9ub3RfdHN0Yml0X1JJKFdvcmQzMiBScywgV29yZDMyIEl1NSkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9wX25vdF90c3RiaXRfUkkgX19idWlsdGluX0hFWEFHT05fUzRfbnRzdGJpdF9pCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFBkND0hdHN0Yml0KFJzMzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBCeXRlIFE2X3Bfbm90X3RzdGJpdF9SUihXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9wX25vdF90c3RiaXRfUlIgX19idWlsdGluX0hFWEFHT05fUzRfbnRzdGJpdF9yCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzJ8PWFuZChSczMyLCNzMTApCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfYW5kb3JfUkkoV29yZDMyIFJ4LCBXb3JkMzIgUnMsIFdvcmQzMiBJczEwKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfYW5kb3JfUkkgX19idWlsdGluX0hFWEFHT05fUzRfb3JfYW5kaQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeDMyPW9yKFJ1MzIsYW5kKFJ4MzIsI3MxMCkpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1Jfb3JfYW5kX1JSSShXb3JkMzIgUnUsIFdvcmQzMiBSeCwgV29yZDMyIElzMTApCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9vcl9hbmRfUlJJIF9fYnVpbHRpbl9IRVhBR09OX1M0X29yX2FuZGl4CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzJ8PW9yKFJzMzIsI3MxMCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9vcm9yX1JJKFdvcmQzMiBSeCwgV29yZDMyIFJzLCBXb3JkMzIgSXMxMCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX29yb3JfUkkgX19idWlsdGluX0hFWEFHT05fUzRfb3Jfb3JpCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzI9b3IoI3U4LGFzbChSeDMyLCNVNSkpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1Jfb3JfYXNsX0lSSShXb3JkMzIgSXU4LCBXb3JkMzIgUngsIFdvcmQzMiBJVTUpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9vcl9hc2xfSVJJIF9fYnVpbHRpbl9IRVhBR09OX1M0X29yaV9hc2xfcmkKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUngzMj1vcigjdTgsbHNyKFJ4MzIsI1U1KSkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9vcl9sc3JfSVJJKFdvcmQzMiBJdTgsIFdvcmQzMiBSeCwgV29yZDMyIElVNSkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX29yX2xzcl9JUkkgX19idWlsdGluX0hFWEFHT05fUzRfb3JpX2xzcl9yaQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPXBhcml0eShSczMyLFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfcGFyaXR5X1JSKFdvcmQzMiBScywgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIEFMVTY0CiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfcGFyaXR5X1JSIF9fYnVpbHRpbl9IRVhBR09OX1M0X3Bhcml0eQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPWFkZChSczMyLHN1YigjczYsUnUzMikpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfYWRkX3N1Yl9SSVIoV29yZDMyIFJzLCBXb3JkMzIgSXM2LCBXb3JkMzIgUnUpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQUxVNjQKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9hZGRfc3ViX1JJUiBfX2J1aWx0aW5fSEVYQUdPTl9TNF9zdWJhZGRpCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzI9c3ViKCN1OCxhc2woUngzMiwjVTUpKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX3N1Yl9hc2xfSVJJKFdvcmQzMiBJdTgsIFdvcmQzMiBSeCwgV29yZDMyIElVNSkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX3N1Yl9hc2xfSVJJIF9fYnVpbHRpbl9IRVhBR09OX1M0X3N1YmlfYXNsX3JpCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzI9c3ViKCN1OCxsc3IoUngzMiwjVTUpKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX3N1Yl9sc3JfSVJJKFdvcmQzMiBJdTgsIFdvcmQzMiBSeCwgV29yZDMyIElVNSkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX3N1Yl9sc3JfSVJJIF9fYnVpbHRpbl9IRVhBR09OX1M0X3N1YmlfbHNyX3JpCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZyY3JvdGF0ZShSc3MzMixSdDMyLCN1MikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92cmNyb3RhdGVfUFJJKFdvcmQ2NCBSc3MsIFdvcmQzMiBSdCwgV29yZDMyIEl1MikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZyY3JvdGF0ZV9QUkkgX19idWlsdGluX0hFWEFHT05fUzRfdnJjcm90YXRlCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4eDMyKz12cmNyb3RhdGUoUnNzMzIsUnQzMiwjdTIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfdnJjcm90YXRlYWNjX1BSSShXb3JkNjQgUnh4LCBXb3JkNjQgUnNzLCBXb3JkMzIgUnQsIFdvcmQzMiBJdTIpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92cmNyb3RhdGVhY2NfUFJJIF9fYnVpbHRpbl9IRVhBR09OX1M0X3ZyY3JvdGF0ZV9hY2MKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dnhhZGRzdWJoKFJzczMyLFJ0dDMyKTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92eGFkZHN1YmhfUFBfc2F0KFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92eGFkZHN1YmhfUFBfc2F0IF9fYnVpbHRpbl9IRVhBR09OX1M0X3Z4YWRkc3ViaAoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj12eGFkZHN1YmgoUnNzMzIsUnR0MzIpOnJuZDo+PjE6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfdnhhZGRzdWJoX1BQX3JuZF9yczFfc2F0KFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92eGFkZHN1YmhfUFBfcm5kX3JzMV9zYXQgX19idWlsdGluX0hFWEFHT05fUzRfdnhhZGRzdWJocgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj12eGFkZHN1YncoUnNzMzIsUnR0MzIpOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3Z4YWRkc3Vid19QUF9zYXQoV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzNvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3Z4YWRkc3Vid19QUF9zYXQgX19idWlsdGluX0hFWEFHT05fUzRfdnhhZGRzdWJ3CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZ4c3ViYWRkaChSc3MzMixSdHQzMik6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfdnhzdWJhZGRoX1BQX3NhdChXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdnhzdWJhZGRoX1BQX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9TNF92eHN1YmFkZGgKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dnhzdWJhZGRoKFJzczMyLFJ0dDMyKTpybmQ6Pj4xOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3Z4c3ViYWRkaF9QUF9ybmRfcnMxX3NhdChXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdnhzdWJhZGRoX1BQX3JuZF9yczFfc2F0IF9fYnVpbHRpbl9IRVhBR09OX1M0X3Z4c3ViYWRkaHIKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dnhzdWJhZGR3KFJzczMyLFJ0dDMyKTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92eHN1YmFkZHdfUFBfc2F0KFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92eHN1YmFkZHdfUFBfc2F0IF9fYnVpbHRpbl9IRVhBR09OX1M0X3Z4c3ViYWRkdwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPXZhc3JodWIoUnNzMzIsI3U0KTpybmQ6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfdmFzcmh1Yl9QSV9ybmRfc2F0KFdvcmQ2NCBSc3MsIFdvcmQzMiBJdTQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX3Zhc3JodWJfUElfcm5kX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9TNV9hc3JodWJfcm5kX3NhdF9nb29kc3ludGF4CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9dmFzcmh1YihSc3MzMiwjdTQpOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX3Zhc3JodWJfUElfc2F0KFdvcmQ2NCBSc3MsIFdvcmQzMiBJdTQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl92YXNyaHViX1BJX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9TNV9hc3JodWJfc2F0CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9cG9wY291bnQoUnNzMzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfcG9wY291bnRfUChXb3JkNjQgUnNzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfcG9wY291bnRfUCBfX2J1aWx0aW5fSEVYQUdPTl9TNV9wb3Bjb3VudHAKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dmFzcmgoUnNzMzIsI3U0KTpybmQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92YXNyaF9QSV9ybmQoV29yZDY0IFJzcywgV29yZDMyIEl1NCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdmFzcmhfUElfcm5kIF9fYnVpbHRpbl9IRVhBR09OX1M1X3Zhc3Jocm5kX2dvb2RzeW50YXgKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgZGNjbGVhbmEoUnMzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiB2b2lkIFE2X2RjY2xlYW5hX0EoQWRkcmVzcyBScykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTVAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X2RjY2xlYW5hX0EgX19idWlsdGluX0hFWEFHT05fWTJfZGNjbGVhbmEKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgZGNjbGVhbmludmEoUnMzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiB2b2lkIFE2X2RjY2xlYW5pbnZhX0EoQWRkcmVzcyBScykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTVAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X2RjY2xlYW5pbnZhX0EgX19idWlsdGluX0hFWEFHT05fWTJfZGNjbGVhbmludmEKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgZGNmZXRjaChSczMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IHZvaWQgUTZfZGNmZXRjaF9BKEFkZHJlc3MgUnMpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTUFQUElORwogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X2RjZmV0Y2hfQSBfX2J1aWx0aW5fSEVYQUdPTl9ZMl9kY2ZldGNoCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIGRjaW52YShSczMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IHZvaWQgUTZfZGNpbnZhX0EoQWRkcmVzcyBScykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTVAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X2RjaW52YV9BIF9fYnVpbHRpbl9IRVhBR09OX1kyX2RjaW52YQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBkY3plcm9hKFJzMzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogdm9pZCBRNl9kY3plcm9hX0EoQWRkcmVzcyBScykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTVAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X2RjemVyb2FfQSBfX2J1aWx0aW5fSEVYQUdPTl9ZMl9kY3plcm9hCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIGwyZmV0Y2goUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IHZvaWQgUTZfbDJmZXRjaF9BUihBZGRyZXNzIFJzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU1QKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMAogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9sMmZldGNoX0FSIF9fYnVpbHRpbl9IRVhBR09OX1k0X2wyZmV0Y2gKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgbDJmZXRjaChSczMyLFJ0dDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IHZvaWQgUTZfbDJmZXRjaF9BUChBZGRyZXNzIFJzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNUCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfbDJmZXRjaF9BUCBfX2J1aWx0aW5fSEVYQUdPTl9ZNV9sMmZldGNoCgojaWYgX19IRVhBR09OX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXJvbChSc3MzMiwjdTYpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1Bfcm9sX1BJKFdvcmQ2NCBSc3MsIFdvcmQzMiBJdTYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9yb2xfUEkgX19idWlsdGluX0hFWEFHT05fUzZfcm9sX2lfcAojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hFWEFHT05fQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzIrPXJvbChSc3MzMiwjdTYpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1Bfcm9sYWNjX1BJKFdvcmQ2NCBSeHgsIFdvcmQ2NCBSc3MsIFdvcmQzMiBJdTYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9yb2xhY2NfUEkgX19idWlsdGluX0hFWEFHT05fUzZfcm9sX2lfcF9hY2MKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IRVhBR09OX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4eDMyJj1yb2woUnNzMzIsI3U2KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3JvbGFuZF9QSShXb3JkNjQgUnh4LCBXb3JkNjQgUnNzLCBXb3JkMzIgSXU2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Bfcm9sYW5kX1BJIF9fYnVpbHRpbl9IRVhBR09OX1M2X3JvbF9pX3BfYW5kCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSEVYQUdPTl9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMi09cm9sKFJzczMyLCN1NikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9yb2xuYWNfUEkoV29yZDY0IFJ4eCwgV29yZDY0IFJzcywgV29yZDMyIEl1NikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3JvbG5hY19QSSBfX2J1aWx0aW5fSEVYQUdPTl9TNl9yb2xfaV9wX25hYwojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hFWEFHT05fQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzJ8PXJvbChSc3MzMiwjdTYpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1Bfcm9sb3JfUEkoV29yZDY0IFJ4eCwgV29yZDY0IFJzcywgV29yZDMyIEl1NikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3JvbG9yX1BJIF9fYnVpbHRpbl9IRVhBR09OX1M2X3JvbF9pX3Bfb3IKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IRVhBR09OX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4eDMyXj1yb2woUnNzMzIsI3U2KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3JvbHhhY2NfUEkoV29yZDY0IFJ4eCwgV29yZDY0IFJzcywgV29yZDMyIEl1NikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3JvbHhhY2NfUEkgX19idWlsdGluX0hFWEFHT05fUzZfcm9sX2lfcF94YWNjCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSEVYQUdPTl9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPXJvbChSczMyLCN1NSkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9yb2xfUkkoV29yZDMyIFJzLCBXb3JkMzIgSXU1KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Jfcm9sX1JJIF9fYnVpbHRpbl9IRVhBR09OX1M2X3JvbF9pX3IKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IRVhBR09OX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzIrPXJvbChSczMyLCN1NSkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9yb2xhY2NfUkkoV29yZDMyIFJ4LCBXb3JkMzIgUnMsIFdvcmQzMiBJdTUpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9yb2xhY2NfUkkgX19idWlsdGluX0hFWEFHT05fUzZfcm9sX2lfcl9hY2MKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IRVhBR09OX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzImPXJvbChSczMyLCN1NSkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9yb2xhbmRfUkkoV29yZDMyIFJ4LCBXb3JkMzIgUnMsIFdvcmQzMiBJdTUpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9yb2xhbmRfUkkgX19idWlsdGluX0hFWEFHT05fUzZfcm9sX2lfcl9hbmQKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IRVhBR09OX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzItPXJvbChSczMyLCN1NSkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9yb2xuYWNfUkkoV29yZDMyIFJ4LCBXb3JkMzIgUnMsIFdvcmQzMiBJdTUpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9yb2xuYWNfUkkgX19idWlsdGluX0hFWEFHT05fUzZfcm9sX2lfcl9uYWMKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IRVhBR09OX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzJ8PXJvbChSczMyLCN1NSkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9yb2xvcl9SSShXb3JkMzIgUngsIFdvcmQzMiBScywgV29yZDMyIEl1NSkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX3JvbG9yX1JJIF9fYnVpbHRpbl9IRVhBR09OX1M2X3JvbF9pX3Jfb3IKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IRVhBR09OX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzJePXJvbChSczMyLCN1NSkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9yb2x4YWNjX1JJKFdvcmQzMiBSeCwgV29yZDMyIFJzLCBXb3JkMzIgSXU1KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Jfcm9seGFjY19SSSBfX2J1aWx0aW5fSEVYQUdPTl9TNl9yb2xfaV9yX3hhY2MKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IRVhBR09OX0FSQ0hfXyA+PSA2MgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZhYnNkaWZmYihSdHQzMixSc3MzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92YWJzZGlmZmJfUFAoV29yZDY0IFJ0dCwgV29yZDY0IFJzcykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdmFic2RpZmZiX1BQIF9fYnVpbHRpbl9IRVhBR09OX002X3ZhYnNkaWZmYgojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjIgKi8KCiNpZiBfX0hFWEFHT05fQVJDSF9fID49IDYyCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dmFic2RpZmZ1YihSdHQzMixSc3MzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92YWJzZGlmZnViX1BQKFdvcmQ2NCBSdHQsIFdvcmQ2NCBSc3MpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX3ZhYnNkaWZmdWJfUFAgX19idWlsdGluX0hFWEFHT05fTTZfdmFic2RpZmZ1YgojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjIgKi8KCiNpZiBfX0hFWEFHT05fQVJDSF9fID49IDYyCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9dnNwbGF0YihSczMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX3ZzcGxhdGJfUihXb3JkMzIgUnMpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92c3BsYXRiX1IgX19idWlsdGluX0hFWEFHT05fUzZfdnNwbGF0cmJwCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MiAqLwoKI2lmIF9fSEVYQUdPTl9BUkNIX18gPj0gNjIKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj12dHJ1bmVoYihSc3MzMixSdHQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92dHJ1bmVoYl9QUChXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdnRydW5laGJfUFAgX19idWlsdGluX0hFWEFHT05fUzZfdnRydW5laGJfcHBwCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MiAqLwoKI2lmIF9fSEVYQUdPTl9BUkNIX18gPj0gNjIKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj12dHJ1bm9oYihSc3MzMixSdHQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92dHJ1bm9oYl9QUChXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfM29wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdnRydW5vaGJfUFAgX19idWlsdGluX0hFWEFHT05fUzZfdnRydW5vaGJfcHBwCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MiAqLwoKI2lmIF9fSEVYQUdPTl9BUkNIX18gPj0gNjIKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyPXZtZW0oUnQzMik6bnQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1Zfdm1lbV9SX250KFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNQVBQSU5HCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVl92bWVtX1JfbnQgX19idWlsdGluX0hFWEFHT05fVjZfbGRudG50MAojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjIgKi8KCiNpZiBfX0hFWEFHT05fQVJDSF9fID49IDY1Ci8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUGQ0PSFhbnk4KHZjbXBiLmVxKFJzczMyLFJ0dDMyKSkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBCeXRlIFE2X3Bfbm90X2FueThfdmNtcGJfZXFfUFAoV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBBTFU2NAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9wX25vdF9hbnk4X3ZjbXBiX2VxX1BQIF9fYnVpbHRpbl9IRVhBR09OX0E2X3ZjbXBiZXFfbm90YW55CiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2NSAqLwoKI2lmIF9fSEVYQUdPTl9BUkNIX18gPj0gNjYKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj1kZmFkZChSc3MzMixSdHQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBGbG9hdDY0IFE2X1BfZGZhZGRfUFAoRmxvYXQ2NCBSc3MsIEZsb2F0NjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9kZmFkZF9QUCBfX2J1aWx0aW5fSEVYQUdPTl9GMl9kZmFkZAojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjYgKi8KCiNpZiBfX0hFWEFHT05fQVJDSF9fID49IDY2Ci8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9ZGZzdWIoUnNzMzIsUnR0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogRmxvYXQ2NCBRNl9QX2Rmc3ViX1BQKEZsb2F0NjQgUnNzLCBGbG9hdDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfZGZzdWJfUFAgX19idWlsdGluX0hFWEFHT05fRjJfZGZzdWIKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDY2ICovCgojaWYgX19IRVhBR09OX0FSQ0hfXyA+PSA2NgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4MzItPW1weWkoUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX21weWluYWNfUlIoV29yZDMyIFJ4LCBXb3JkMzIgUnMsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfbXB5aW5hY19SUiBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbmFjaQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjYgKi8KCiNpZiBfX0hFWEFHT05fQVJDSF9fID49IDY2Ci8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1tYXNrKCN1NSwjVTUpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfbWFza19JSShXb3JkMzIgSXU1LCBXb3JkMzIgSVU1KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfbWFza19JSSBfX2J1aWx0aW5fSEVYQUdPTl9TMl9tYXNrCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2NiAqLwoKI2lmIF9fSEVYQUdPTl9BUkNIX18gPj0gNjcgJiYgZGVmaW5lZCBfX0hFWEFHT05fQVVESU9fXwovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9Y2xpcChSczMyLCN1NSkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9jbGlwX1JJKFdvcmQzMiBScywgV29yZDMyIEl1NSkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTXzJvcAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2NsaXBfUkkgX19idWlsdGluX0hFWEFHT05fQTdfY2xpcAojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjcgICYmIGRlZmluZWQgX19IRVhBR09OX0FVRElPX18qLwoKI2lmIF9fSEVYQUdPTl9BUkNIX18gPj0gNjcgJiYgZGVmaW5lZCBfX0hFWEFHT05fQVVESU9fXwovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPWNyb3VuZChSc3MzMiwjdTYpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfY3JvdW5kX1BJKFdvcmQ2NCBSc3MsIFdvcmQzMiBJdTYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18yb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9jcm91bmRfUEkgX19idWlsdGluX0hFWEFHT05fQTdfY3JvdW5kZF9yaQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjcgICYmIGRlZmluZWQgX19IRVhBR09OX0FVRElPX18qLwoKI2lmIF9fSEVYQUdPTl9BUkNIX18gPj0gNjcgJiYgZGVmaW5lZCBfX0hFWEFHT05fQVVESU9fXwovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPWNyb3VuZChSc3MzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX2Nyb3VuZF9QUihXb3JkNjQgUnNzLCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU18zb3AKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9jcm91bmRfUFIgX19idWlsdGluX0hFWEFHT05fQTdfY3JvdW5kZF9ycgojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjcgICYmIGRlZmluZWQgX19IRVhBR09OX0FVRElPX18qLwoKI2lmIF9fSEVYQUdPTl9BUkNIX18gPj0gNjcgJiYgZGVmaW5lZCBfX0hFWEFHT05fQVVESU9fXwovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPXZjbGlwKFJzczMyLCN1NSkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92Y2xpcF9QSShXb3JkNjQgUnNzLCBXb3JkMzIgSXU1KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIFNfMm9wCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdmNsaXBfUEkgX19idWlsdGluX0hFWEFHT05fQTdfdmNsaXAKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDY3ICAmJiBkZWZpbmVkIF9fSEVYQUdPTl9BVURJT19fKi8KCiNpZiBfX0hFWEFHT05fQVJDSF9fID49IDY3Ci8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9ZGZtYXgoUnNzMzIsUnR0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogRmxvYXQ2NCBRNl9QX2RmbWF4X1BQKEZsb2F0NjQgUnNzLCBGbG9hdDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfZGZtYXhfUFAgX19idWlsdGluX0hFWEFHT05fRjJfZGZtYXgKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDY3ICovCgojaWYgX19IRVhBR09OX0FSQ0hfXyA+PSA2NwovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPWRmbWluKFJzczMyLFJ0dDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEZsb2F0NjQgUTZfUF9kZm1pbl9QUChGbG9hdDY0IFJzcywgRmxvYXQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX2RmbWluX1BQIF9fYnVpbHRpbl9IRVhBR09OX0YyX2RmbWluCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2NyAqLwoKI2lmIF9fSEVYQUdPTl9BUkNIX18gPj0gNjcKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj1kZm1weWZpeChSc3MzMixSdHQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBGbG9hdDY0IFE2X1BfZGZtcHlmaXhfUFAoRmxvYXQ2NCBSc3MsIEZsb2F0NjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9kZm1weWZpeF9QUCBfX2J1aWx0aW5fSEVYQUdPTl9GMl9kZm1weWZpeAojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjcgKi8KCiNpZiBfX0hFWEFHT05fQVJDSF9fID49IDY3Ci8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzIrPWRmbXB5aGgoUnNzMzIsUnR0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogRmxvYXQ2NCBRNl9QX2RmbXB5aGhhY2NfUFAoRmxvYXQ2NCBSeHgsIEZsb2F0NjQgUnNzLCBGbG9hdDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfZGZtcHloaGFjY19QUCBfX2J1aWx0aW5fSEVYQUdPTl9GMl9kZm1weWhoCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2NyAqLwoKI2lmIF9fSEVYQUdPTl9BUkNIX18gPj0gNjcKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMis9ZGZtcHlsaChSc3MzMixSdHQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBGbG9hdDY0IFE2X1BfZGZtcHlsaGFjY19QUChGbG9hdDY0IFJ4eCwgRmxvYXQ2NCBSc3MsIEZsb2F0NjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9kZm1weWxoYWNjX1BQIF9fYnVpbHRpbl9IRVhBR09OX0YyX2RmbXB5bGgKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDY3ICovCgojaWYgX19IRVhBR09OX0FSQ0hfXyA+PSA2NwovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPWRmbXB5bGwoUnNzMzIsUnR0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogRmxvYXQ2NCBRNl9QX2RmbXB5bGxfUFAoRmxvYXQ2NCBSc3MsIEZsb2F0NjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9kZm1weWxsX1BQIF9fYnVpbHRpbl9IRVhBR09OX0YyX2RmbXB5bGwKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDY3ICovCgojaWYgX19IRVhBR09OX0FSQ0hfXyA+PSA2NyAmJiBkZWZpbmVkIF9fSEVYQUdPTl9BVURJT19fCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9Y21weWl3KFJzczMyLFJ0dDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX2NtcHlpd19QUChXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX2NtcHlpd19QUCBfX2J1aWx0aW5fSEVYQUdPTl9NN19kY21weWl3CiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2NyAgJiYgZGVmaW5lZCBfX0hFWEFHT05fQVVESU9fXyovCgojaWYgX19IRVhBR09OX0FSQ0hfXyA+PSA2NyAmJiBkZWZpbmVkIF9fSEVYQUdPTl9BVURJT19fCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzIrPWNtcHlpdyhSc3MzMixSdHQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9jbXB5aXdhY2NfUFAoV29yZDY0IFJ4eCwgV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9jbXB5aXdhY2NfUFAgX19idWlsdGluX0hFWEFHT05fTTdfZGNtcHlpd19hY2MKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDY3ICAmJiBkZWZpbmVkIF9fSEVYQUdPTl9BVURJT19fKi8KCiNpZiBfX0hFWEFHT05fQVJDSF9fID49IDY3ICYmIGRlZmluZWQgX19IRVhBR09OX0FVRElPX18KLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj1jbXB5aXcoUnNzMzIsUnR0MzIqKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQ2NCBRNl9QX2NtcHlpd19QUF9jb25qKFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfY21weWl3X1BQX2NvbmogX19idWlsdGluX0hFWEFHT05fTTdfZGNtcHlpd2MKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDY3ICAmJiBkZWZpbmVkIF9fSEVYQUdPTl9BVURJT19fKi8KCiNpZiBfX0hFWEFHT05fQVJDSF9fID49IDY3ICYmIGRlZmluZWQgX19IRVhBR09OX0FVRElPX18KLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSeHgzMis9Y21weWl3KFJzczMyLFJ0dDMyKikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9jbXB5aXdhY2NfUFBfY29uaihXb3JkNjQgUnh4LCBXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX2NtcHlpd2FjY19QUF9jb25qIF9fYnVpbHRpbl9IRVhBR09OX003X2RjbXB5aXdjX2FjYwojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjcgICYmIGRlZmluZWQgX19IRVhBR09OX0FVRElPX18qLwoKI2lmIF9fSEVYQUdPTl9BUkNIX18gPj0gNjcgJiYgZGVmaW5lZCBfX0hFWEFHT05fQVVESU9fXwovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkZDMyPWNtcHlydyhSc3MzMixSdHQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9jbXB5cndfUFAoV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9jbXB5cndfUFAgX19idWlsdGluX0hFWEFHT05fTTdfZGNtcHlydwojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjcgICYmIGRlZmluZWQgX19IRVhBR09OX0FVRElPX18qLwoKI2lmIF9fSEVYQUdPTl9BUkNIX18gPj0gNjcgJiYgZGVmaW5lZCBfX0hFWEFHT05fQVVESU9fXwovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJ4eDMyKz1jbXB5cncoUnNzMzIsUnR0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfY21weXJ3YWNjX1BQKFdvcmQ2NCBSeHgsIFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfY21weXJ3YWNjX1BQIF9fYnVpbHRpbl9IRVhBR09OX003X2RjbXB5cndfYWNjCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2NyAgJiYgZGVmaW5lZCBfX0hFWEFHT05fQVVESU9fXyovCgojaWYgX19IRVhBR09OX0FSQ0hfXyA+PSA2NyAmJiBkZWZpbmVkIF9fSEVYQUdPTl9BVURJT19fCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmRkMzI9Y21weXJ3KFJzczMyLFJ0dDMyKikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF9jbXB5cndfUFBfY29uaihXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9QX2NtcHlyd19QUF9jb25qIF9fYnVpbHRpbl9IRVhBR09OX003X2RjbXB5cndjCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2NyAgJiYgZGVmaW5lZCBfX0hFWEFHT05fQVVESU9fXyovCgojaWYgX19IRVhBR09OX0FSQ0hfXyA+PSA2NyAmJiBkZWZpbmVkIF9fSEVYQUdPTl9BVURJT19fCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzIrPWNtcHlydyhSc3MzMixSdHQzMiopCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfY21weXJ3YWNjX1BQX2NvbmooV29yZDY0IFJ4eCwgV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF9jbXB5cndhY2NfUFBfY29uaiBfX2J1aWx0aW5fSEVYQUdPTl9NN19kY21weXJ3Y19hY2MKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDY3ICAmJiBkZWZpbmVkIF9fSEVYQUdPTl9BVURJT19fKi8KCiNpZiBfX0hFWEFHT05fQVJDSF9fID49IDY3ICYmIGRlZmluZWQgX19IRVhBR09OX0FVRElPX18KLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZGQzMj12ZG1weXcoUnNzMzIsUnR0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDY0IFE2X1BfdmRtcHl3X1BQKFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1BfdmRtcHl3X1BQIF9fYnVpbHRpbl9IRVhBR09OX003X3ZkbXB5CiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2NyAgJiYgZGVmaW5lZCBfX0hFWEFHT05fQVVESU9fXyovCgojaWYgX19IRVhBR09OX0FSQ0hfXyA+PSA2NyAmJiBkZWZpbmVkIF9fSEVYQUdPTl9BVURJT19fCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUnh4MzIrPXZkbXB5dyhSc3MzMixSdHQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkNjQgUTZfUF92ZG1weXdhY2NfUFAoV29yZDY0IFJ4eCwgV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUF92ZG1weXdhY2NfUFAgX19idWlsdGluX0hFWEFHT05fTTdfdmRtcHlfYWNjCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2NyAgJiYgZGVmaW5lZCBfX0hFWEFHT05fQVVESU9fXyovCgojaWYgX19IRVhBR09OX0FSQ0hfXyA+PSA2NyAmJiBkZWZpbmVkIF9fSEVYQUdPTl9BVURJT19fCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1jbXB5aXcoUnNzMzIsUnR0MzIpOjw8MTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9jbXB5aXdfUFBfczFfc2F0KFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfY21weWl3X1BQX3MxX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9NN193Y21weWl3CiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2NyAgJiYgZGVmaW5lZCBfX0hFWEFHT05fQVVESU9fXyovCgojaWYgX19IRVhBR09OX0FSQ0hfXyA+PSA2NyAmJiBkZWZpbmVkIF9fSEVYQUdPTl9BVURJT19fCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1jbXB5aXcoUnNzMzIsUnR0MzIpOjw8MTpybmQ6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfY21weWl3X1BQX3MxX3JuZF9zYXQoV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9jbXB5aXdfUFBfczFfcm5kX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9NN193Y21weWl3X3JuZAojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjcgICYmIGRlZmluZWQgX19IRVhBR09OX0FVRElPX18qLwoKI2lmIF9fSEVYQUdPTl9BUkNIX18gPj0gNjcgJiYgZGVmaW5lZCBfX0hFWEFHT05fQVVESU9fXwovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9Y21weWl3KFJzczMyLFJ0dDMyKik6PDwxOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2NtcHlpd19QUF9jb25qX3MxX3NhdChXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2NtcHlpd19QUF9jb25qX3MxX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9NN193Y21weWl3YwojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjcgICYmIGRlZmluZWQgX19IRVhBR09OX0FVRElPX18qLwoKI2lmIF9fSEVYQUdPTl9BUkNIX18gPj0gNjcgJiYgZGVmaW5lZCBfX0hFWEFHT05fQVVESU9fXwovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9Y21weWl3KFJzczMyLFJ0dDMyKik6PDwxOnJuZDpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9jbXB5aXdfUFBfY29ual9zMV9ybmRfc2F0KFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfY21weWl3X1BQX2NvbmpfczFfcm5kX3NhdCBfX2J1aWx0aW5fSEVYQUdPTl9NN193Y21weWl3Y19ybmQKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDY3ICAmJiBkZWZpbmVkIF9fSEVYQUdPTl9BVURJT19fKi8KCiNpZiBfX0hFWEFHT05fQVJDSF9fID49IDY3ICYmIGRlZmluZWQgX19IRVhBR09OX0FVRElPX18KLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPWNtcHlydyhSc3MzMixSdHQzMik6PDwxOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2NtcHlyd19QUF9zMV9zYXQoV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9jbXB5cndfUFBfczFfc2F0IF9fYnVpbHRpbl9IRVhBR09OX003X3djbXB5cncKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDY3ICAmJiBkZWZpbmVkIF9fSEVYQUdPTl9BVURJT19fKi8KCiNpZiBfX0hFWEFHT05fQVJDSF9fID49IDY3ICYmIGRlZmluZWQgX19IRVhBR09OX0FVRElPX18KLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPWNtcHlydyhSc3MzMixSdHQzMik6PDwxOnJuZDpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9jbXB5cndfUFBfczFfcm5kX3NhdChXb3JkNjQgUnNzLCBXb3JkNjQgUnR0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIE0KICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2NtcHlyd19QUF9zMV9ybmRfc2F0IF9fYnVpbHRpbl9IRVhBR09OX003X3djbXB5cndfcm5kCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2NyAgJiYgZGVmaW5lZCBfX0hFWEFHT05fQVVESU9fXyovCgojaWYgX19IRVhBR09OX0FSQ0hfXyA+PSA2NyAmJiBkZWZpbmVkIF9fSEVYQUdPTl9BVURJT19fCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1jbXB5cncoUnNzMzIsUnR0MzIqKTo8PDE6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogV29yZDMyIFE2X1JfY21weXJ3X1BQX2NvbmpfczFfc2F0KFdvcmQ2NCBSc3MsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfY21weXJ3X1BQX2NvbmpfczFfc2F0IF9fYnVpbHRpbl9IRVhBR09OX003X3djbXB5cndjCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2NyAgJiYgZGVmaW5lZCBfX0hFWEFHT05fQVVESU9fXyovCgojaWYgX19IRVhBR09OX0FSQ0hfXyA+PSA2NyAmJiBkZWZpbmVkIF9fSEVYQUdPTl9BVURJT19fCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUmQzMj1jbXB5cncoUnNzMzIsUnR0MzIqKTo8PDE6cm5kOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2NtcHlyd19QUF9jb25qX3MxX3JuZF9zYXQoV29yZDY0IFJzcywgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBNCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUl9jbXB5cndfUFBfY29ual9zMV9ybmRfc2F0IF9fYnVpbHRpbl9IRVhBR09OX003X3djbXB5cndjX3JuZAojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjcgICYmIGRlZmluZWQgX19IRVhBR09OX0FVRElPX18qLwoKI2lmIF9fSEVYQUdPTl9BUkNIX18gPj0gNjgKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBkbWxpbmsoUnMzMixSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IHZvaWQgUTZfZG1saW5rX0FBKEFkZHJlc3MgUnMsIEFkZHJlc3MgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU1QKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMAogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9kbWxpbmtfQUEgX19idWlsdGluX0hFWEFHT05fWTZfZG1saW5rCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2OCAqLwoKI2lmIF9fSEVYQUdPTl9BUkNIX18gPj0gNjgKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPWRtcGF1c2UKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBXb3JkMzIgUTZfUl9kbXBhdXNlKCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTVAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfZG1wYXVzZSBfX2J1aWx0aW5fSEVYQUdPTl9ZNl9kbXBhdXNlCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2OCAqLwoKI2lmIF9fSEVYQUdPTl9BUkNIX18gPj0gNjgKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPWRtcG9sbAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2RtcG9sbCgpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU1QKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMAogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2RtcG9sbCBfX2J1aWx0aW5fSEVYQUdPTl9ZNl9kbXBvbGwKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDY4ICovCgojaWYgX19IRVhBR09OX0FSQ0hfXyA+PSA2OAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIGRtcmVzdW1lKFJzMzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogdm9pZCBRNl9kbXJlc3VtZV9BKEFkZHJlc3MgUnMpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU1QKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMAogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9kbXJlc3VtZV9BIF9fYnVpbHRpbl9IRVhBR09OX1k2X2RtcmVzdW1lCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2OCAqLwoKI2lmIF9fSEVYQUdPTl9BUkNIX18gPj0gNjgKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBkbXN0YXJ0KFJzMzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogdm9pZCBRNl9kbXN0YXJ0X0EoQWRkcmVzcyBScykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBTVAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X2Rtc3RhcnRfQSBfX2J1aWx0aW5fSEVYQUdPTl9ZNl9kbXN0YXJ0CiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2OCAqLwoKI2lmIF9fSEVYQUdPTl9BUkNIX18gPj0gNjgKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBSZDMyPWRtd2FpdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX2Rtd2FpdCgpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgU1QKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMAogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9SX2Rtd2FpdCBfX2J1aWx0aW5fSEVYQUdPTl9ZNl9kbXdhaXQKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDY4ICovCgojaW5jbHVkZSA8aGV4YWdvbl9jaXJjX2JyZXZfaW50cmluc2ljcy5oPgojaWZkZWYgX19IVlhfXwojaW5jbHVkZSA8aHZ4X2hleGFnb25fcHJvdG9zLmg+CiNlbmRpZiAvKiBfX0hWWF9fICovCiNlbmRpZgoAcHBjX3dyYXBwZXJzL21taW50cmluLmgAc2FuaXRpemVyL2xzYW5faW50ZXJmYWNlLmgALy89PT0tLSBuZXRic2Rfc3lzY2FsbF9ob29rcy5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KLy8KLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KLy8KLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KLy8KLy8gVGhpcyBmaWxlIGlzIGEgcGFydCBvZiBwdWJsaWMgc2FuaXRpemVyIGludGVyZmFjZS4KLy8KLy8gU3lzdGVtIGNhbGwgaGFuZGxlcnMuCi8vCi8vIEludGVyZmFjZSBtZXRob2RzIGRlY2xhcmVkIGluIHRoaXMgaGVhZGVyIGltcGxlbWVudCBwcmUtIGFuZCBwb3N0LSBzeXNjYWxsCi8vIGFjdGlvbnMgZm9yIHRoZSBhY3RpdmUgc2FuaXRpemVyLgovLyBVc2FnZToKLy8gICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9nZXRmb28oLi4uYXJncy4uLik7Ci8vICAgbG9uZyBsb25nIHJlcyA9IHN5c2NhbGwoU1lTX2dldGZvbywgLi4uYXJncy4uLik7Ci8vICAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2dldGZvbyhyZXMsIC4uLmFyZ3MuLi4pOwovLwovLyBETyBOT1QgRURJVCEgVEhJUyBGSUxFIEhBUyBCRUVOIEdFTkVSQVRFRCEKLy8KLy8gR2VuZXJhdGVkIHdpdGg6IGdlbmVyYXRlX25ldGJzZF9zeXNjYWxscy5hd2sKLy8gR2VuZXJhdGVkIGRhdGU6IDIwMjAtMDktMTAKLy8gR2VuZXJhdGVkIGZyb206IHN5c2NhbGxzLm1hc3Rlcix2IDEuMzA2IDIwMjAvMDgvMTQgMDA6NTM6MTYgcmlhc3RyYWRoIEV4cAovLwovLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwojaWZuZGVmIFNBTklUSVpFUl9ORVRCU0RfU1lTQ0FMTF9IT09LU19ICiNkZWZpbmUgU0FOSVRJWkVSX05FVEJTRF9TWVNDQUxMX0hPT0tTX0gKCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfc3lzY2FsbChjb2RlLCBhcmcwLCBhcmcxLCBhcmcyLCBhcmczLCBhcmc0LCAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmc1LCBhcmc2LCBhcmc3KSAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zeXNjYWxsKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGNvZGUpLCAobG9uZyBsb25nKShhcmcwKSwgKGxvbmcgbG9uZykoYXJnMSksICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGFyZzIpLCAobG9uZyBsb25nKShhcmczKSwgKGxvbmcgbG9uZykoYXJnNCksICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGFyZzUpLCAobG9uZyBsb25nKShhcmc2KSwgKGxvbmcgbG9uZykoYXJnNykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3N5c2NhbGwocmVzLCBjb2RlLCBhcmcwLCBhcmcxLCBhcmcyLCBhcmczLCAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnNCwgYXJnNSwgYXJnNiwgYXJnNykgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc3lzY2FsbCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykoY29kZSksIChsb25nIGxvbmcpKGFyZzApLCAobG9uZyBsb25nKShhcmcxKSwgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGFyZzIpLCAobG9uZyBsb25nKShhcmczKSwgKGxvbmcgbG9uZykoYXJnNCksICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGFyZzUpLCAobG9uZyBsb25nKShhcmc2KSwgKGxvbmcgbG9uZykoYXJnNykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZXhpdChydmFsKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9leGl0KChsb25nIGxvbmcpKHJ2YWwpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9leGl0KHJlcywgcnZhbCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2V4aXQocmVzLCAobG9uZyBsb25nKShydmFsKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9mb3JrKCkgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9mb3JrKCkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZm9yayhyZXMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9mb3JrKHJlcykKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9yZWFkKGZkLCBidWYsIG5ieXRlKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3JlYWQoKGxvbmcgbG9uZykoZmQpLCAobG9uZyBsb25nKShidWYpLCAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykobmJ5dGUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9yZWFkKHJlcywgZmQsIGJ1ZiwgbmJ5dGUpICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3JlYWQocmVzLCAobG9uZyBsb25nKShmZCksIChsb25nIGxvbmcpKGJ1ZiksICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykobmJ5dGUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3dyaXRlKGZkLCBidWYsIG5ieXRlKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfd3JpdGUoKGxvbmcgbG9uZykoZmQpLCAobG9uZyBsb25nKShidWYpLCAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykobmJ5dGUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF93cml0ZShyZXMsIGZkLCBidWYsIG5ieXRlKSAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3dyaXRlKHJlcywgKGxvbmcgbG9uZykoZmQpLCAobG9uZyBsb25nKShidWYpLCAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKG5ieXRlKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9vcGVuKHBhdGgsIGZsYWdzLCBtb2RlKSAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX29wZW4oKGxvbmcgbG9uZykocGF0aCksIChsb25nIGxvbmcpKGZsYWdzKSwgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykobW9kZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X29wZW4ocmVzLCBwYXRoLCBmbGFncywgbW9kZSkgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfb3BlbihyZXMsIChsb25nIGxvbmcpKHBhdGgpLCAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShmbGFncyksIChsb25nIGxvbmcpKG1vZGUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2Nsb3NlKGZkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY2xvc2UoKGxvbmcgbG9uZykoZmQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jbG9zZShyZXMsIGZkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2Nsb3NlKHJlcywgKGxvbmcgbG9uZykoZmQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2NvbXBhdF81MF93YWl0NChwaWQsIHN0YXR1cywgb3B0aW9ucywgcnVzYWdlKSAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzUwX3dhaXQ0KCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShwaWQpLCAobG9uZyBsb25nKShzdGF0dXMpLCAobG9uZyBsb25nKShvcHRpb25zKSwgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShydXNhZ2UpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jb21wYXRfNTBfd2FpdDQocmVzLCBwaWQsIHN0YXR1cywgb3B0aW9ucywgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVzYWdlKSAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF81MF93YWl0NCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKHBpZCksIChsb25nIGxvbmcpKHN0YXR1cyksIChsb25nIGxvbmcpKG9wdGlvbnMpLCAgICAgICAgXAogICAgICAobG9uZyBsb25nKShydXNhZ2UpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2NvbXBhdF80M19vY3JlYXQocGF0aCwgbW9kZSkgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzQzX29jcmVhdCgobG9uZyBsb25nKShwYXRoKSwgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShtb2RlKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY29tcGF0XzQzX29jcmVhdChyZXMsIHBhdGgsIG1vZGUpICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfNDNfb2NyZWF0KHJlcywgKGxvbmcgbG9uZykocGF0aCksICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKG1vZGUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2xpbmsocGF0aCwgbGluaykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbGluaygobG9uZyBsb25nKShwYXRoKSwgKGxvbmcgbG9uZykobGluaykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2xpbmsocmVzLCBwYXRoLCBsaW5rKSAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbGluayhyZXMsIChsb25nIGxvbmcpKHBhdGgpLCAobG9uZyBsb25nKShsaW5rKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV91bmxpbmsocGF0aCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3VubGluaygobG9uZyBsb25nKShwYXRoKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfdW5saW5rKHJlcywgcGF0aCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF91bmxpbmsocmVzLCAobG9uZyBsb25nKShwYXRoKSkKLyogc3lzY2FsbCAxMSBoYXMgYmVlbiBza2lwcGVkICovCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY2hkaXIocGF0aCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jaGRpcigobG9uZyBsb25nKShwYXRoKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY2hkaXIocmVzLCBwYXRoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jaGRpcihyZXMsIChsb25nIGxvbmcpKHBhdGgpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ZjaGRpcihmZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZmNoZGlyKChsb25nIGxvbmcpKGZkKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZmNoZGlyKHJlcywgZmQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9mY2hkaXIocmVzLCAobG9uZyBsb25nKShmZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY29tcGF0XzUwX21rbm9kKHBhdGgsIG1vZGUsIGRldikgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfNTBfbWtub2QoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKHBhdGgpLCAobG9uZyBsb25nKShtb2RlKSwgKGxvbmcgbG9uZykoZGV2KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY29tcGF0XzUwX21rbm9kKHJlcywgcGF0aCwgbW9kZSwgZGV2KSAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfNTBfbWtub2QoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShwYXRoKSwgKGxvbmcgbG9uZykobW9kZSksIChsb25nIGxvbmcpKGRldikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY2htb2QocGF0aCwgbW9kZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jaG1vZCgobG9uZyBsb25nKShwYXRoKSwgKGxvbmcgbG9uZykobW9kZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NobW9kKHJlcywgcGF0aCwgbW9kZSkgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY2htb2QocmVzLCAobG9uZyBsb25nKShwYXRoKSwgKGxvbmcgbG9uZykobW9kZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY2hvd24ocGF0aCwgdWlkLCBnaWQpICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jaG93bigobG9uZyBsb25nKShwYXRoKSwgKGxvbmcgbG9uZykodWlkKSwgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShnaWQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jaG93bihyZXMsIHBhdGgsIHVpZCwgZ2lkKSAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2Nob3duKHJlcywgKGxvbmcgbG9uZykocGF0aCksICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHVpZCksIChsb25nIGxvbmcpKGdpZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfYnJlYWsobnNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9icmVhaygobG9uZyBsb25nKShuc2l6ZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2JyZWFrKHJlcywgbnNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfYnJlYWsocmVzLCAobG9uZyBsb25nKShuc2l6ZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY29tcGF0XzIwX2dldGZzc3RhdChidWYsIGJ1ZnNpemUsIGZsYWdzKSAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfMjBfZ2V0ZnNzdGF0KCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGJ1ZiksIChsb25nIGxvbmcpKGJ1ZnNpemUpLCAobG9uZyBsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF8yMF9nZXRmc3N0YXQocmVzLCBidWYsIGJ1ZnNpemUsIGZsYWdzKSBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzIwX2dldGZzc3RhdCggICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykoYnVmKSwgKGxvbmcgbG9uZykoYnVmc2l6ZSksIChsb25nIGxvbmcpKGZsYWdzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jb21wYXRfNDNfb2xzZWVrKGZkLCBvZmZzZXQsIHdoZW5jZSkgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF80M19vbHNlZWsoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykoZmQpLCAobG9uZyBsb25nKShvZmZzZXQpLCAobG9uZyBsb25nKSh3aGVuY2UpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jb21wYXRfNDNfb2xzZWVrKHJlcywgZmQsIG9mZnNldCwgd2hlbmNlKSAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF80M19vbHNlZWsoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKGZkKSwgKGxvbmcgbG9uZykob2Zmc2V0KSwgKGxvbmcgbG9uZykod2hlbmNlKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9nZXRwaWQoKSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2dldHBpZCgpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2dldHBpZChyZXMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZ2V0cGlkKHJlcykKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jb21wYXRfNDBfbW91bnQodHlwZSwgcGF0aCwgZmxhZ3MsIGRhdGEpICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF80MF9tb3VudCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykodHlwZSksIChsb25nIGxvbmcpKHBhdGgpLCAobG9uZyBsb25nKShmbGFncyksICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykoZGF0YSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF80MF9tb3VudChyZXMsIHR5cGUsIHBhdGgsIGZsYWdzLCBkYXRhKSBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzQwX21vdW50KCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykodHlwZSksIChsb25nIGxvbmcpKHBhdGgpLCAobG9uZyBsb25nKShmbGFncyksICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGRhdGEpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3VubW91bnQocGF0aCwgZmxhZ3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfdW5tb3VudCgobG9uZyBsb25nKShwYXRoKSwgKGxvbmcgbG9uZykoZmxhZ3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF91bm1vdW50KHJlcywgcGF0aCwgZmxhZ3MpICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3VubW91bnQocmVzLCAobG9uZyBsb25nKShwYXRoKSwgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoZmxhZ3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3NldHVpZCh1aWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2V0dWlkKChsb25nIGxvbmcpKHVpZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NldHVpZChyZXMsIHVpZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2V0dWlkKHJlcywgKGxvbmcgbG9uZykodWlkKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9nZXR1aWQoKSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2dldHVpZCgpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2dldHVpZChyZXMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZ2V0dWlkKHJlcykKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9nZXRldWlkKCkgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9nZXRldWlkKCkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZ2V0ZXVpZChyZXMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9nZXRldWlkKHJlcykKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9wdHJhY2UocmVxLCBwaWQsIGFkZHIsIGRhdGEpICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3B0cmFjZSgobG9uZyBsb25nKShyZXEpLCAobG9uZyBsb25nKShwaWQpLCAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShhZGRyKSwgKGxvbmcgbG9uZykoZGF0YSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3B0cmFjZShyZXMsIHJlcSwgcGlkLCBhZGRyLCBkYXRhKSAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcHRyYWNlKHJlcywgKGxvbmcgbG9uZykocmVxKSwgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHBpZCksIChsb25nIGxvbmcpKGFkZHIpLCAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGRhdGEpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3JlY3Ztc2cocywgbXNnLCBmbGFncykgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfcmVjdm1zZygobG9uZyBsb25nKShzKSwgKGxvbmcgbG9uZykobXNnKSwgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3JlY3Ztc2cocmVzLCBzLCBtc2csIGZsYWdzKSAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcmVjdm1zZyhyZXMsIChsb25nIGxvbmcpKHMpLCAobG9uZyBsb25nKShtc2cpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfc2VuZG1zZyhzLCBtc2csIGZsYWdzKSAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zZW5kbXNnKChsb25nIGxvbmcpKHMpLCAobG9uZyBsb25nKShtc2cpLCAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGZsYWdzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfc2VuZG1zZyhyZXMsIHMsIG1zZywgZmxhZ3MpICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZW5kbXNnKHJlcywgKGxvbmcgbG9uZykocyksIChsb25nIGxvbmcpKG1zZyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGZsYWdzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9yZWN2ZnJvbShzLCBidWYsIGxlbiwgZmxhZ3MsIGZyb20sICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tbGVuYWRkcikgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3JlY3Zmcm9tKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykocyksIChsb25nIGxvbmcpKGJ1ZiksIChsb25nIGxvbmcpKGxlbiksIChsb25nIGxvbmcpKGZsYWdzKSwgIFwKICAgICAgKGxvbmcgbG9uZykoZnJvbSksIChsb25nIGxvbmcpKGZyb21sZW5hZGRyKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfcmVjdmZyb20ocmVzLCBzLCBidWYsIGxlbiwgZmxhZ3MsIGZyb20sICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbWxlbmFkZHIpICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9yZWN2ZnJvbSggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShzKSwgKGxvbmcgbG9uZykoYnVmKSwgKGxvbmcgbG9uZykobGVuKSwgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykoZmxhZ3MpLCAobG9uZyBsb25nKShmcm9tKSwgKGxvbmcgbG9uZykoZnJvbWxlbmFkZHIpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2FjY2VwdChzLCBuYW1lLCBhbmFtZWxlbikgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfYWNjZXB0KChsb25nIGxvbmcpKHMpLCAobG9uZyBsb25nKShuYW1lKSwgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGFuYW1lbGVuKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfYWNjZXB0KHJlcywgcywgbmFtZSwgYW5hbWVsZW4pICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9hY2NlcHQocmVzLCAobG9uZyBsb25nKShzKSwgKGxvbmcgbG9uZykobmFtZSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoYW5hbWVsZW4pKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2dldHBlZXJuYW1lKGZkZXMsIGFzYSwgYWxlbikgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZ2V0cGVlcm5hbWUoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShmZGVzKSwgKGxvbmcgbG9uZykoYXNhKSwgKGxvbmcgbG9uZykoYWxlbikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2dldHBlZXJuYW1lKHJlcywgZmRlcywgYXNhLCBhbGVuKSAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZ2V0cGVlcm5hbWUoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykoZmRlcyksIChsb25nIGxvbmcpKGFzYSksIChsb25nIGxvbmcpKGFsZW4pKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2dldHNvY2tuYW1lKGZkZXMsIGFzYSwgYWxlbikgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZ2V0c29ja25hbWUoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShmZGVzKSwgKGxvbmcgbG9uZykoYXNhKSwgKGxvbmcgbG9uZykoYWxlbikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2dldHNvY2tuYW1lKHJlcywgZmRlcywgYXNhLCBhbGVuKSAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZ2V0c29ja25hbWUoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykoZmRlcyksIChsb25nIGxvbmcpKGFzYSksIChsb25nIGxvbmcpKGFsZW4pKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2FjY2VzcyhwYXRoLCBmbGFncykgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfYWNjZXNzKChsb25nIGxvbmcpKHBhdGgpLCAobG9uZyBsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2FjY2VzcyhyZXMsIHBhdGgsIGZsYWdzKSAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfYWNjZXNzKHJlcywgKGxvbmcgbG9uZykocGF0aCksICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGZsYWdzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jaGZsYWdzKHBhdGgsIGZsYWdzKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NoZmxhZ3MoKGxvbmcgbG9uZykocGF0aCksIChsb25nIGxvbmcpKGZsYWdzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY2hmbGFncyhyZXMsIHBhdGgsIGZsYWdzKSAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jaGZsYWdzKHJlcywgKGxvbmcgbG9uZykocGF0aCksICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGZsYWdzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9mY2hmbGFncyhmZCwgZmxhZ3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2ZjaGZsYWdzKChsb25nIGxvbmcpKGZkKSwgKGxvbmcgbG9uZykoZmxhZ3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9mY2hmbGFncyhyZXMsIGZkLCBmbGFncykgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2ZjaGZsYWdzKHJlcywgKGxvbmcgbG9uZykoZmQpLCAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGZsYWdzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zeW5jKCkgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zeW5jKCkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfc3luYyhyZXMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zeW5jKHJlcykKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9raWxsKHBpZCwgc2lnbnVtKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2tpbGwoKGxvbmcgbG9uZykocGlkKSwgKGxvbmcgbG9uZykoc2lnbnVtKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfa2lsbChyZXMsIHBpZCwgc2lnbnVtKSAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9raWxsKHJlcywgKGxvbmcgbG9uZykocGlkKSwgKGxvbmcgbG9uZykoc2lnbnVtKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jb21wYXRfNDNfc3RhdDQzKHBhdGgsIHViKSAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF80M19zdGF0NDMoKGxvbmcgbG9uZykocGF0aCksICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykodWIpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jb21wYXRfNDNfc3RhdDQzKHJlcywgcGF0aCwgdWIpICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF80M19zdGF0NDMocmVzLCAobG9uZyBsb25nKShwYXRoKSwgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykodWIpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2dldHBwaWQoKSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2dldHBwaWQoKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9nZXRwcGlkKHJlcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2dldHBwaWQocmVzKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2NvbXBhdF80M19sc3RhdDQzKHBhdGgsIHViKSAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzQzX2xzdGF0NDMoKGxvbmcgbG9uZykocGF0aCksICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykodWIpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jb21wYXRfNDNfbHN0YXQ0MyhyZXMsIHBhdGgsIHViKSAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF80M19sc3RhdDQzKHJlcywgKGxvbmcgbG9uZykocGF0aCksICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHViKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9kdXAoZmQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2R1cCgobG9uZyBsb25nKShmZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2R1cChyZXMsIGZkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZHVwKHJlcywgKGxvbmcgbG9uZykoZmQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3BpcGUoKSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3BpcGUoKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9waXBlKHJlcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3BpcGUocmVzKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2dldGVnaWQoKSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2dldGVnaWQoKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9nZXRlZ2lkKHJlcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2dldGVnaWQocmVzKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3Byb2ZpbChzYW1wbGVzLCBzaXplLCBvZmZzZXQsIHNjYWxlKSAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfcHJvZmlsKChsb25nIGxvbmcpKHNhbXBsZXMpLCAobG9uZyBsb25nKShzaXplKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKG9mZnNldCksIChsb25nIGxvbmcpKHNjYWxlKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfcHJvZmlsKHJlcywgc2FtcGxlcywgc2l6ZSwgb2Zmc2V0LCBzY2FsZSkgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9wcm9maWwocmVzLCAobG9uZyBsb25nKShzYW1wbGVzKSwgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoc2l6ZSksIChsb25nIGxvbmcpKG9mZnNldCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoc2NhbGUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2t0cmFjZShmbmFtZSwgb3BzLCBmYWNzLCBwaWQpICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfa3RyYWNlKChsb25nIGxvbmcpKGZuYW1lKSwgKGxvbmcgbG9uZykob3BzKSwgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGZhY3MpLCAobG9uZyBsb25nKShwaWQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9rdHJhY2UocmVzLCBmbmFtZSwgb3BzLCBmYWNzLCBwaWQpICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2t0cmFjZShyZXMsIChsb25nIGxvbmcpKGZuYW1lKSwgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShvcHMpLCAobG9uZyBsb25nKShmYWNzKSwgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShwaWQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2NvbXBhdF8xM19zaWdhY3Rpb24xMyhzaWdudW0sIG5zYSwgb3NhKSAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzEzX3NpZ2FjdGlvbjEzKCAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShzaWdudW0pLCAobG9uZyBsb25nKShuc2EpLCAobG9uZyBsb25nKShvc2EpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jb21wYXRfMTNfc2lnYWN0aW9uMTMocmVzLCBzaWdudW0sIG5zYSwgb3NhKSAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF8xM19zaWdhY3Rpb24xMyggICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKHNpZ251bSksIChsb25nIGxvbmcpKG5zYSksIChsb25nIGxvbmcpKG9zYSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZ2V0Z2lkKCkgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9nZXRnaWQoKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9nZXRnaWQocmVzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2dldGdpZChyZXMpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY29tcGF0XzEzX3NpZ3Byb2NtYXNrMTMoaG93LCBtYXNrKSAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfMTNfc2lncHJvY21hc2sxMygobG9uZyBsb25nKShob3cpLCAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShtYXNrKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY29tcGF0XzEzX3NpZ3Byb2NtYXNrMTMocmVzLCBob3csIG1hc2spICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfMTNfc2lncHJvY21hc2sxMyhyZXMsIChsb25nIGxvbmcpKGhvdyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShtYXNrKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9fX2dldGxvZ2luKG5hbWVidWYsIG5hbWVsZW4pICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fZ2V0bG9naW4oKGxvbmcgbG9uZykobmFtZWJ1ZiksICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykobmFtZWxlbikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X19fZ2V0bG9naW4ocmVzLCBuYW1lYnVmLCBuYW1lbGVuKSAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX19nZXRsb2dpbihyZXMsIChsb25nIGxvbmcpKG5hbWVidWYpLCAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShuYW1lbGVuKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9fX3NldGxvZ2luKG5hbWVidWYpICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fc2V0bG9naW4oKGxvbmcgbG9uZykobmFtZWJ1ZikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X19fc2V0bG9naW4ocmVzLCBuYW1lYnVmKSAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX19zZXRsb2dpbihyZXMsIChsb25nIGxvbmcpKG5hbWVidWYpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2FjY3QocGF0aCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfYWNjdCgobG9uZyBsb25nKShwYXRoKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfYWNjdChyZXMsIHBhdGgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9hY2N0KHJlcywgKGxvbmcgbG9uZykocGF0aCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY29tcGF0XzEzX3NpZ3BlbmRpbmcxMygpICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfMTNfc2lncGVuZGluZzEzKCkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY29tcGF0XzEzX3NpZ3BlbmRpbmcxMyhyZXMpICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfMTNfc2lncGVuZGluZzEzKHJlcykKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jb21wYXRfMTNfc2lnYWx0c3RhY2sxMyhuc3MsIG9zcykgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF8xM19zaWdhbHRzdGFjazEzKChsb25nIGxvbmcpKG5zcyksICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKG9zcykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF8xM19zaWdhbHRzdGFjazEzKHJlcywgbnNzLCBvc3MpICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzEzX3NpZ2FsdHN0YWNrMTMocmVzLCAobG9uZyBsb25nKShuc3MpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykob3NzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pb2N0bChmZCwgY29tLCBkYXRhKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2lvY3RsKChsb25nIGxvbmcpKGZkKSwgKGxvbmcgbG9uZykoY29tKSwgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGRhdGEpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pb2N0bChyZXMsIGZkLCBjb20sIGRhdGEpICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2lvY3RsKHJlcywgKGxvbmcgbG9uZykoZmQpLCAobG9uZyBsb25nKShjb20pLCAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGRhdGEpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2NvbXBhdF8xMl9vcmVib290KG9wdCkgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzEyX29yZWJvb3QoKGxvbmcgbG9uZykob3B0KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY29tcGF0XzEyX29yZWJvb3QocmVzLCBvcHQpICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfMTJfb3JlYm9vdChyZXMsIChsb25nIGxvbmcpKG9wdCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfcmV2b2tlKHBhdGgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9yZXZva2UoKGxvbmcgbG9uZykocGF0aCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3Jldm9rZShyZXMsIHBhdGgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcmV2b2tlKHJlcywgKGxvbmcgbG9uZykocGF0aCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfc3ltbGluayhwYXRoLCBsaW5rKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zeW1saW5rKChsb25nIGxvbmcpKHBhdGgpLCAobG9uZyBsb25nKShsaW5rKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfc3ltbGluayhyZXMsIHBhdGgsIGxpbmspICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zeW1saW5rKHJlcywgKGxvbmcgbG9uZykocGF0aCksICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGxpbmspKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3JlYWRsaW5rKHBhdGgsIGJ1ZiwgY291bnQpICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfcmVhZGxpbmsoKGxvbmcgbG9uZykocGF0aCksIChsb25nIGxvbmcpKGJ1ZiksICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoY291bnQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9yZWFkbGluayhyZXMsIHBhdGgsIGJ1ZiwgY291bnQpICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3JlYWRsaW5rKHJlcywgKGxvbmcgbG9uZykocGF0aCksICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGJ1ZiksIChsb25nIGxvbmcpKGNvdW50KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9leGVjdmUocGF0aCwgYXJncCwgZW52cCkgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2V4ZWN2ZSgobG9uZyBsb25nKShwYXRoKSwgKGxvbmcgbG9uZykoYXJncCksICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShlbnZwKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZXhlY3ZlKHJlcywgcGF0aCwgYXJncCwgZW52cCkgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9leGVjdmUocmVzLCAobG9uZyBsb25nKShwYXRoKSwgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoYXJncCksIChsb25nIGxvbmcpKGVudnApKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3VtYXNrKG5ld21hc2spICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfdW1hc2soKGxvbmcgbG9uZykobmV3bWFzaykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3VtYXNrKHJlcywgbmV3bWFzaykgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfdW1hc2socmVzLCAobG9uZyBsb25nKShuZXdtYXNrKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jaHJvb3QocGF0aCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2Nocm9vdCgobG9uZyBsb25nKShwYXRoKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY2hyb290KHJlcywgcGF0aCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jaHJvb3QocmVzLCAobG9uZyBsb25nKShwYXRoKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jb21wYXRfNDNfZnN0YXQ0MyhmZCwgc2IpICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF80M19mc3RhdDQzKChsb25nIGxvbmcpKGZkKSwgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHNiKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY29tcGF0XzQzX2ZzdGF0NDMocmVzLCBmZCwgc2IpICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfNDNfZnN0YXQ0MyhyZXMsIChsb25nIGxvbmcpKGZkKSwgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShzYikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY29tcGF0XzQzX29nZXRrZXJuaW5mbyhvcCwgd2hlcmUsIHNpemUsIGFyZykgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfNDNfb2dldGtlcm5pbmZvKCAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKG9wKSwgKGxvbmcgbG9uZykod2hlcmUpLCAobG9uZyBsb25nKShzaXplKSwgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGFyZykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF80M19vZ2V0a2VybmluZm8ocmVzLCBvcCwgd2hlcmUsIHNpemUsICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnKSAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzQzX29nZXRrZXJuaW5mbyggICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykob3ApLCAobG9uZyBsb25nKSh3aGVyZSksIChsb25nIGxvbmcpKHNpemUpLCAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGFyZykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY29tcGF0XzQzX29nZXRwYWdlc2l6ZSgpICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfNDNfb2dldHBhZ2VzaXplKCkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY29tcGF0XzQzX29nZXRwYWdlc2l6ZShyZXMpICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfNDNfb2dldHBhZ2VzaXplKHJlcykKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jb21wYXRfMTJfbXN5bmMoYWRkciwgbGVuKSAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF8xMl9tc3luYygobG9uZyBsb25nKShhZGRyKSwgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShsZW4pKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jb21wYXRfMTJfbXN5bmMocmVzLCBhZGRyLCBsZW4pICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF8xMl9tc3luYyhyZXMsIChsb25nIGxvbmcpKGFkZHIpLCAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShsZW4pKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3Zmb3JrKCkgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF92Zm9yaygpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3Zmb3JrKHJlcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfdmZvcmsocmVzKQovKiBzeXNjYWxsIDY3IGhhcyBiZWVuIHNraXBwZWQgKi8KLyogc3lzY2FsbCA2OCBoYXMgYmVlbiBza2lwcGVkICovCi8qIHN5c2NhbGwgNjkgaGFzIGJlZW4gc2tpcHBlZCAqLwovKiBzeXNjYWxsIDcwIGhhcyBiZWVuIHNraXBwZWQgKi8KI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jb21wYXRfNDNfb21tYXAoYWRkciwgbGVuLCBwcm90LCBmbGFncywgZmQsICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF80M19vbW1hcCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykoYWRkciksIChsb25nIGxvbmcpKGxlbiksIChsb25nIGxvbmcpKHByb3QpLCAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykoZmxhZ3MpLCAobG9uZyBsb25nKShmZCksIChsb25nIGxvbmcpKHBvcykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF80M19vbW1hcChyZXMsIGFkZHIsIGxlbiwgcHJvdCwgZmxhZ3MsICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZCwgcG9zKSAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzQzX29tbWFwKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykoYWRkciksIChsb25nIGxvbmcpKGxlbiksIChsb25nIGxvbmcpKHByb3QpLCAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGZsYWdzKSwgKGxvbmcgbG9uZykoZmQpLCAobG9uZyBsb25nKShwb3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3ZhZHZpc2UoYW5vbSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfdmFkdmlzZSgobG9uZyBsb25nKShhbm9tKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfdmFkdmlzZShyZXMsIGFub20pICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF92YWR2aXNlKHJlcywgKGxvbmcgbG9uZykoYW5vbSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfbXVubWFwKGFkZHIsIGxlbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9tdW5tYXAoKGxvbmcgbG9uZykoYWRkciksIChsb25nIGxvbmcpKGxlbikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X211bm1hcChyZXMsIGFkZHIsIGxlbikgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbXVubWFwKHJlcywgKGxvbmcgbG9uZykoYWRkciksIChsb25nIGxvbmcpKGxlbikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfbXByb3RlY3QoYWRkciwgbGVuLCBwcm90KSAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9tcHJvdGVjdCgobG9uZyBsb25nKShhZGRyKSwgKGxvbmcgbG9uZykobGVuKSwgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShwcm90KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfbXByb3RlY3QocmVzLCBhZGRyLCBsZW4sIHByb3QpICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9tcHJvdGVjdChyZXMsIChsb25nIGxvbmcpKGFkZHIpLCAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShsZW4pLCAobG9uZyBsb25nKShwcm90KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9tYWR2aXNlKGFkZHIsIGxlbiwgYmVoYXYpICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX21hZHZpc2UoKGxvbmcgbG9uZykoYWRkciksIChsb25nIGxvbmcpKGxlbiksICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoYmVoYXYpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9tYWR2aXNlKHJlcywgYWRkciwgbGVuLCBiZWhhdikgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX21hZHZpc2UocmVzLCAobG9uZyBsb25nKShhZGRyKSwgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykobGVuKSwgKGxvbmcgbG9uZykoYmVoYXYpKQovKiBzeXNjYWxsIDc2IGhhcyBiZWVuIHNraXBwZWQgKi8KLyogc3lzY2FsbCA3NyBoYXMgYmVlbiBza2lwcGVkICovCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfbWluY29yZShhZGRyLCBsZW4sIHZlYykgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9taW5jb3JlKChsb25nIGxvbmcpKGFkZHIpLCAobG9uZyBsb25nKShsZW4pLCAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHZlYykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X21pbmNvcmUocmVzLCBhZGRyLCBsZW4sIHZlYykgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbWluY29yZShyZXMsIChsb25nIGxvbmcpKGFkZHIpLCAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShsZW4pLCAobG9uZyBsb25nKSh2ZWMpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2dldGdyb3VwcyhnaWRzZXRzaXplLCBnaWRzZXQpICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZ2V0Z3JvdXBzKChsb25nIGxvbmcpKGdpZHNldHNpemUpLCAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGdpZHNldCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2dldGdyb3VwcyhyZXMsIGdpZHNldHNpemUsIGdpZHNldCkgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZ2V0Z3JvdXBzKHJlcywgKGxvbmcgbG9uZykoZ2lkc2V0c2l6ZSksICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGdpZHNldCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfc2V0Z3JvdXBzKGdpZHNldHNpemUsIGdpZHNldCkgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zZXRncm91cHMoKGxvbmcgbG9uZykoZ2lkc2V0c2l6ZSksICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoZ2lkc2V0KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfc2V0Z3JvdXBzKHJlcywgZ2lkc2V0c2l6ZSwgZ2lkc2V0KSAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZXRncm91cHMocmVzLCAobG9uZyBsb25nKShnaWRzZXRzaXplKSwgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoZ2lkc2V0KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9nZXRwZ3JwKCkgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9nZXRwZ3JwKCkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZ2V0cGdycChyZXMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9nZXRwZ3JwKHJlcykKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zZXRwZ2lkKHBpZCwgcGdpZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NldHBnaWQoKGxvbmcgbG9uZykocGlkKSwgKGxvbmcgbG9uZykocGdpZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NldHBnaWQocmVzLCBwaWQsIHBnaWQpICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2V0cGdpZChyZXMsIChsb25nIGxvbmcpKHBpZCksICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShwZ2lkKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jb21wYXRfNTBfc2V0aXRpbWVyKHdoaWNoLCBpdHYsIG9pdHYpICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF81MF9zZXRpdGltZXIoICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykod2hpY2gpLCAobG9uZyBsb25nKShpdHYpLCAobG9uZyBsb25nKShvaXR2KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY29tcGF0XzUwX3NldGl0aW1lcihyZXMsIHdoaWNoLCBpdHYsIG9pdHYpICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfNTBfc2V0aXRpbWVyKCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKSh3aGljaCksIChsb25nIGxvbmcpKGl0diksIChsb25nIGxvbmcpKG9pdHYpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2NvbXBhdF80M19vd2FpdCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzQzX293YWl0KCkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY29tcGF0XzQzX293YWl0KHJlcykgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfNDNfb3dhaXQocmVzKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2NvbXBhdF8xMl9vc3dhcG9uKG5hbWUpICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzEyX29zd2Fwb24oKGxvbmcgbG9uZykobmFtZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF8xMl9vc3dhcG9uKHJlcywgbmFtZSkgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzEyX29zd2Fwb24ocmVzLCAobG9uZyBsb25nKShuYW1lKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jb21wYXRfNTBfZ2V0aXRpbWVyKHdoaWNoLCBpdHYpICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF81MF9nZXRpdGltZXIoKGxvbmcgbG9uZykod2hpY2gpLCAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoaXR2KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY29tcGF0XzUwX2dldGl0aW1lcihyZXMsIHdoaWNoLCBpdHYpICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfNTBfZ2V0aXRpbWVyKHJlcywgKGxvbmcgbG9uZykod2hpY2gpLCAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGl0dikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY29tcGF0XzQzX29nZXRob3N0bmFtZShob3N0bmFtZSwgbGVuKSAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfNDNfb2dldGhvc3RuYW1lKChsb25nIGxvbmcpKGhvc3RuYW1lKSwgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGxlbikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF80M19vZ2V0aG9zdG5hbWUocmVzLCBob3N0bmFtZSwgbGVuKSAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzQzX29nZXRob3N0bmFtZSggICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykoaG9zdG5hbWUpLCAobG9uZyBsb25nKShsZW4pKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2NvbXBhdF80M19vc2V0aG9zdG5hbWUoaG9zdG5hbWUsIGxlbikgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzQzX29zZXRob3N0bmFtZSgobG9uZyBsb25nKShob3N0bmFtZSksICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShsZW4pKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jb21wYXRfNDNfb3NldGhvc3RuYW1lKHJlcywgaG9zdG5hbWUsIGxlbikgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF80M19vc2V0aG9zdG5hbWUoICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKGhvc3RuYW1lKSwgKGxvbmcgbG9uZykobGVuKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jb21wYXRfNDNfb2dldGR0YWJsZXNpemUoKSAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF80M19vZ2V0ZHRhYmxlc2l6ZSgpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF80M19vZ2V0ZHRhYmxlc2l6ZShyZXMpICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzQzX29nZXRkdGFibGVzaXplKHJlcykKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9kdXAyKGZyb20sIHRvKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2R1cDIoKGxvbmcgbG9uZykoZnJvbSksIChsb25nIGxvbmcpKHRvKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZHVwMihyZXMsIGZyb20sIHRvKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9kdXAyKHJlcywgKGxvbmcgbG9uZykoZnJvbSksIChsb25nIGxvbmcpKHRvKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9nZXRyYW5kb20oYnVmLCBidWZsZW4sIGZsYWdzKSAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2dldHJhbmRvbSggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykoYnVmKSwgKGxvbmcgbG9uZykoYnVmbGVuKSwgKGxvbmcgbG9uZykoZmxhZ3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9nZXRyYW5kb20ocmVzLCBidWYsIGJ1ZmxlbiwgZmxhZ3MpICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2dldHJhbmRvbSggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKGJ1ZiksIChsb25nIGxvbmcpKGJ1ZmxlbiksIChsb25nIGxvbmcpKGZsYWdzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9mY250bChmZCwgY21kLCBhcmcpICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2ZjbnRsKChsb25nIGxvbmcpKGZkKSwgKGxvbmcgbG9uZykoY21kKSwgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGFyZykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ZjbnRsKHJlcywgZmQsIGNtZCwgYXJnKSAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZmNudGwocmVzLCAobG9uZyBsb25nKShmZCksIChsb25nIGxvbmcpKGNtZCksICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoYXJnKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jb21wYXRfNTBfc2VsZWN0KG5kLCBpbiwgb3UsIGV4LCB0dikgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF81MF9zZWxlY3QoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykobmQpLCAobG9uZyBsb25nKShpbiksIChsb25nIGxvbmcpKG91KSwgKGxvbmcgbG9uZykoZXgpLCAgICAgIFwKICAgICAgKGxvbmcgbG9uZykodHYpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jb21wYXRfNTBfc2VsZWN0KHJlcywgbmQsIGluLCBvdSwgZXgsIHR2KSAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF81MF9zZWxlY3QoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKG5kKSwgKGxvbmcgbG9uZykoaW4pLCAobG9uZyBsb25nKShvdSksIChsb25nIGxvbmcpKGV4KSwgXAogICAgICAobG9uZyBsb25nKSh0dikpCi8qIHN5c2NhbGwgOTQgaGFzIGJlZW4gc2tpcHBlZCAqLwojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ZzeW5jKGZkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZnN5bmMoKGxvbmcgbG9uZykoZmQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9mc3luYyhyZXMsIGZkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2ZzeW5jKHJlcywgKGxvbmcgbG9uZykoZmQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3NldHByaW9yaXR5KHdoaWNoLCB3aG8sIHByaW8pICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2V0cHJpb3JpdHkoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKSh3aGljaCksIChsb25nIGxvbmcpKHdobyksIChsb25nIGxvbmcpKHByaW8pKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9zZXRwcmlvcml0eShyZXMsIHdoaWNoLCB3aG8sIHByaW8pICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NldHByaW9yaXR5KCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKHdoaWNoKSwgKGxvbmcgbG9uZykod2hvKSwgKGxvbmcgbG9uZykocHJpbykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY29tcGF0XzMwX3NvY2tldChkb21haW4sIHR5cGUsIHByb3RvY29sKSAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfMzBfc29ja2V0KCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGRvbWFpbiksIChsb25nIGxvbmcpKHR5cGUpLCAobG9uZyBsb25nKShwcm90b2NvbCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF8zMF9zb2NrZXQocmVzLCBkb21haW4sIHR5cGUsIHByb3RvY29sKSBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzMwX3NvY2tldCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykoZG9tYWluKSwgKGxvbmcgbG9uZykodHlwZSksIChsb25nIGxvbmcpKHByb3RvY29sKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jb25uZWN0KHMsIG5hbWUsIG5hbWVsZW4pICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2Nvbm5lY3QoKGxvbmcgbG9uZykocyksIChsb25nIGxvbmcpKG5hbWUpLCAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykobmFtZWxlbikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2Nvbm5lY3QocmVzLCBzLCBuYW1lLCBuYW1lbGVuKSAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29ubmVjdCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykocyksIChsb25nIGxvbmcpKG5hbWUpLCAobG9uZyBsb25nKShuYW1lbGVuKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jb21wYXRfNDNfb2FjY2VwdChzLCBuYW1lLCBhbmFtZWxlbikgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF80M19vYWNjZXB0KCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykocyksIChsb25nIGxvbmcpKG5hbWUpLCAobG9uZyBsb25nKShhbmFtZWxlbikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF80M19vYWNjZXB0KHJlcywgcywgbmFtZSwgYW5hbWVsZW4pICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzQzX29hY2NlcHQoICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykocyksIChsb25nIGxvbmcpKG5hbWUpLCAobG9uZyBsb25nKShhbmFtZWxlbikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZ2V0cHJpb3JpdHkod2hpY2gsIHdobykgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9nZXRwcmlvcml0eSgobG9uZyBsb25nKSh3aGljaCksIChsb25nIGxvbmcpKHdobykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2dldHByaW9yaXR5KHJlcywgd2hpY2gsIHdobykgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZ2V0cHJpb3JpdHkocmVzLCAobG9uZyBsb25nKSh3aGljaCksICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykod2hvKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jb21wYXRfNDNfb3NlbmQocywgYnVmLCBsZW4sIGZsYWdzKSAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF80M19vc2VuZCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykocyksIChsb25nIGxvbmcpKGJ1ZiksIChsb25nIGxvbmcpKGxlbiksIChsb25nIGxvbmcpKGZsYWdzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY29tcGF0XzQzX29zZW5kKHJlcywgcywgYnVmLCBsZW4sIGZsYWdzKSAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfNDNfb3NlbmQoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShzKSwgKGxvbmcgbG9uZykoYnVmKSwgKGxvbmcgbG9uZykobGVuKSwgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykoZmxhZ3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2NvbXBhdF80M19vcmVjdihzLCBidWYsIGxlbiwgZmxhZ3MpICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzQzX29yZWN2KCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShzKSwgKGxvbmcgbG9uZykoYnVmKSwgKGxvbmcgbG9uZykobGVuKSwgKGxvbmcgbG9uZykoZmxhZ3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jb21wYXRfNDNfb3JlY3YocmVzLCBzLCBidWYsIGxlbiwgZmxhZ3MpICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF80M19vcmVjdiggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKHMpLCAobG9uZyBsb25nKShidWYpLCAobG9uZyBsb25nKShsZW4pLCAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY29tcGF0XzEzX3NpZ3JldHVybjEzKHNpZ2NudHhwKSAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfMTNfc2lncmV0dXJuMTMoKGxvbmcgbG9uZykoc2lnY250eHApKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jb21wYXRfMTNfc2lncmV0dXJuMTMocmVzLCBzaWdjbnR4cCkgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF8xM19zaWdyZXR1cm4xMyhyZXMsICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShzaWdjbnR4cCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfYmluZChzLCBuYW1lLCBuYW1lbGVuKSAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9iaW5kKChsb25nIGxvbmcpKHMpLCAobG9uZyBsb25nKShuYW1lKSwgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKG5hbWVsZW4pKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9iaW5kKHJlcywgcywgbmFtZSwgbmFtZWxlbikgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2JpbmQocmVzLCAobG9uZyBsb25nKShzKSwgKGxvbmcgbG9uZykobmFtZSksICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykobmFtZWxlbikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfc2V0c29ja29wdChzLCBsZXZlbCwgbmFtZSwgdmFsLCB2YWxzaXplKSAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zZXRzb2Nrb3B0KChsb25nIGxvbmcpKHMpLCAobG9uZyBsb25nKShsZXZlbCksICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKG5hbWUpLCAobG9uZyBsb25nKSh2YWwpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHZhbHNpemUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9zZXRzb2Nrb3B0KHJlcywgcywgbGV2ZWwsIG5hbWUsIHZhbCwgdmFsc2l6ZSkgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NldHNvY2tvcHQoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKHMpLCAobG9uZyBsb25nKShsZXZlbCksIChsb25nIGxvbmcpKG5hbWUpLCAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKSh2YWwpLCAobG9uZyBsb25nKSh2YWxzaXplKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9saXN0ZW4ocywgYmFja2xvZykgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2xpc3RlbigobG9uZyBsb25nKShzKSwgKGxvbmcgbG9uZykoYmFja2xvZykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2xpc3RlbihyZXMsIHMsIGJhY2tsb2cpICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbGlzdGVuKHJlcywgKGxvbmcgbG9uZykocyksICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGJhY2tsb2cpKQovKiBzeXNjYWxsIDEwNyBoYXMgYmVlbiBza2lwcGVkICovCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY29tcGF0XzQzX29zaWd2ZWMoc2lnbnVtLCBuc3YsIG9zdikgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfNDNfb3NpZ3ZlYyggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKHNpZ251bSksIChsb25nIGxvbmcpKG5zdiksIChsb25nIGxvbmcpKG9zdikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF80M19vc2lndmVjKHJlcywgc2lnbnVtLCBuc3YsIG9zdikgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzQzX29zaWd2ZWMoICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykoc2lnbnVtKSwgKGxvbmcgbG9uZykobnN2KSwgKGxvbmcgbG9uZykob3N2KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jb21wYXRfNDNfb3NpZ2Jsb2NrKG1hc2spICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF80M19vc2lnYmxvY2soKGxvbmcgbG9uZykobWFzaykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF80M19vc2lnYmxvY2socmVzLCBtYXNrKSAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzQzX29zaWdibG9jayhyZXMsIChsb25nIGxvbmcpKG1hc2spKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2NvbXBhdF80M19vc2lnc2V0bWFzayhtYXNrKSAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzQzX29zaWdzZXRtYXNrKChsb25nIGxvbmcpKG1hc2spKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jb21wYXRfNDNfb3NpZ3NldG1hc2socmVzLCBtYXNrKSAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF80M19vc2lnc2V0bWFzayhyZXMsIChsb25nIGxvbmcpKG1hc2spKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2NvbXBhdF8xM19zaWdzdXNwZW5kMTMobWFzaykgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzEzX3NpZ3N1c3BlbmQxMygobG9uZyBsb25nKShtYXNrKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY29tcGF0XzEzX3NpZ3N1c3BlbmQxMyhyZXMsIG1hc2spICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfMTNfc2lnc3VzcGVuZDEzKHJlcywgKGxvbmcgbG9uZykobWFzaykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY29tcGF0XzQzX29zaWdzdGFjayhuc3MsIG9zcykgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfNDNfb3NpZ3N0YWNrKChsb25nIGxvbmcpKG5zcyksICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKG9zcykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF80M19vc2lnc3RhY2socmVzLCBuc3MsIG9zcykgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzQzX29zaWdzdGFjayhyZXMsIChsb25nIGxvbmcpKG5zcyksICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShvc3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2NvbXBhdF80M19vcmVjdm1zZyhzLCBtc2csIGZsYWdzKSAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzQzX29yZWN2bXNnKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShzKSwgKGxvbmcgbG9uZykobXNnKSwgKGxvbmcgbG9uZykoZmxhZ3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jb21wYXRfNDNfb3JlY3Ztc2cocmVzLCBzLCBtc2csIGZsYWdzKSAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF80M19vcmVjdm1zZyggICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKHMpLCAobG9uZyBsb25nKShtc2cpLCAobG9uZyBsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY29tcGF0XzQzX29zZW5kbXNnKHMsIG1zZywgZmxhZ3MpICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfNDNfb3NlbmRtc2coICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKHMpLCAobG9uZyBsb25nKShtc2cpLCAobG9uZyBsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF80M19vc2VuZG1zZyhyZXMsIHMsIG1zZywgZmxhZ3MpICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzQzX29zZW5kbXNnKCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykocyksIChsb25nIGxvbmcpKG1zZyksIChsb25nIGxvbmcpKGZsYWdzKSkKLyogc3lzY2FsbCAxMTUgaGFzIGJlZW4gc2tpcHBlZCAqLwojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2NvbXBhdF81MF9nZXR0aW1lb2ZkYXkodHAsIHR6cCkgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzUwX2dldHRpbWVvZmRheSgobG9uZyBsb25nKSh0cCksICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKSh0enApKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jb21wYXRfNTBfZ2V0dGltZW9mZGF5KHJlcywgdHAsIHR6cCkgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF81MF9nZXR0aW1lb2ZkYXkocmVzLCAobG9uZyBsb25nKSh0cCksICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykodHpwKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jb21wYXRfNTBfZ2V0cnVzYWdlKHdobywgcnVzYWdlKSAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF81MF9nZXRydXNhZ2UoKGxvbmcgbG9uZykod2hvKSwgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykocnVzYWdlKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY29tcGF0XzUwX2dldHJ1c2FnZShyZXMsIHdobywgcnVzYWdlKSAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfNTBfZ2V0cnVzYWdlKHJlcywgKGxvbmcgbG9uZykod2hvKSwgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHJ1c2FnZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZ2V0c29ja29wdChzLCBsZXZlbCwgbmFtZSwgdmFsLCBhdmFsc2l6ZSkgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9nZXRzb2Nrb3B0KChsb25nIGxvbmcpKHMpLCAobG9uZyBsb25nKShsZXZlbCksICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKG5hbWUpLCAobG9uZyBsb25nKSh2YWwpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGF2YWxzaXplKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZ2V0c29ja29wdChyZXMsIHMsIGxldmVsLCBuYW1lLCB2YWwsICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFsc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9nZXRzb2Nrb3B0KCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShzKSwgKGxvbmcgbG9uZykobGV2ZWwpLCAobG9uZyBsb25nKShuYW1lKSwgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykodmFsKSwgKGxvbmcgbG9uZykoYXZhbHNpemUpKQovKiBzeXNjYWxsIDExOSBoYXMgYmVlbiBza2lwcGVkICovCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfcmVhZHYoZmQsIGlvdnAsIGlvdmNudCkgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9yZWFkdigobG9uZyBsb25nKShmZCksIChsb25nIGxvbmcpKGlvdnApLCAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShpb3ZjbnQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9yZWFkdihyZXMsIGZkLCBpb3ZwLCBpb3ZjbnQpICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3JlYWR2KHJlcywgKGxvbmcgbG9uZykoZmQpLCAobG9uZyBsb25nKShpb3ZwKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGlvdmNudCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfd3JpdGV2KGZkLCBpb3ZwLCBpb3ZjbnQpICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF93cml0ZXYoKGxvbmcgbG9uZykoZmQpLCAobG9uZyBsb25nKShpb3ZwKSwgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoaW92Y250KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfd3JpdGV2KHJlcywgZmQsIGlvdnAsIGlvdmNudCkgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF93cml0ZXYocmVzLCAobG9uZyBsb25nKShmZCksICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoaW92cCksIChsb25nIGxvbmcpKGlvdmNudCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY29tcGF0XzUwX3NldHRpbWVvZmRheSh0diwgdHpwKSAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfNTBfc2V0dGltZW9mZGF5KChsb25nIGxvbmcpKHR2KSwgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHR6cCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF81MF9zZXR0aW1lb2ZkYXkocmVzLCB0diwgdHpwKSAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzUwX3NldHRpbWVvZmRheShyZXMsIChsb25nIGxvbmcpKHR2KSwgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKSh0enApKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ZjaG93bihmZCwgdWlkLCBnaWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZmNob3duKChsb25nIGxvbmcpKGZkKSwgKGxvbmcgbG9uZykodWlkKSwgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGdpZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ZjaG93bihyZXMsIGZkLCB1aWQsIGdpZCkgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZmNob3duKHJlcywgKGxvbmcgbG9uZykoZmQpLCAobG9uZyBsb25nKSh1aWQpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGdpZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZmNobW9kKGZkLCBtb2RlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9mY2htb2QoKGxvbmcgbG9uZykoZmQpLCAobG9uZyBsb25nKShtb2RlKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZmNobW9kKHJlcywgZmQsIG1vZGUpICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9mY2htb2QocmVzLCAobG9uZyBsb25nKShmZCksIChsb25nIGxvbmcpKG1vZGUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2NvbXBhdF80M19vcmVjdmZyb20ocywgYnVmLCBsZW4sIGZsYWdzLCBmcm9tLCAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbWxlbmFkZHIpICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzQzX29yZWN2ZnJvbSggICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShzKSwgKGxvbmcgbG9uZykoYnVmKSwgKGxvbmcgbG9uZykobGVuKSwgKGxvbmcgbG9uZykoZmxhZ3MpLCAgXAogICAgICAobG9uZyBsb25nKShmcm9tKSwgKGxvbmcgbG9uZykoZnJvbWxlbmFkZHIpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jb21wYXRfNDNfb3JlY3Zmcm9tKHJlcywgcywgYnVmLCBsZW4sIGZsYWdzLCAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20sIGZyb21sZW5hZGRyKSAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF80M19vcmVjdmZyb20oICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKHMpLCAobG9uZyBsb25nKShidWYpLCAobG9uZyBsb25nKShsZW4pLCAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShmbGFncyksIChsb25nIGxvbmcpKGZyb20pLCAobG9uZyBsb25nKShmcm9tbGVuYWRkcikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfc2V0cmV1aWQocnVpZCwgZXVpZCkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zZXRyZXVpZCgobG9uZyBsb25nKShydWlkKSwgKGxvbmcgbG9uZykoZXVpZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NldHJldWlkKHJlcywgcnVpZCwgZXVpZCkgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2V0cmV1aWQocmVzLCAobG9uZyBsb25nKShydWlkKSwgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoZXVpZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfc2V0cmVnaWQocmdpZCwgZWdpZCkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zZXRyZWdpZCgobG9uZyBsb25nKShyZ2lkKSwgKGxvbmcgbG9uZykoZWdpZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NldHJlZ2lkKHJlcywgcmdpZCwgZWdpZCkgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2V0cmVnaWQocmVzLCAobG9uZyBsb25nKShyZ2lkKSwgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoZWdpZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfcmVuYW1lKGZyb20sIHRvKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9yZW5hbWUoKGxvbmcgbG9uZykoZnJvbSksIChsb25nIGxvbmcpKHRvKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfcmVuYW1lKHJlcywgZnJvbSwgdG8pICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9yZW5hbWUocmVzLCAobG9uZyBsb25nKShmcm9tKSwgKGxvbmcgbG9uZykodG8pKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2NvbXBhdF80M19vdHJ1bmNhdGUocGF0aCwgbGVuZ3RoKSAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzQzX290cnVuY2F0ZSgobG9uZyBsb25nKShwYXRoKSwgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShsZW5ndGgpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jb21wYXRfNDNfb3RydW5jYXRlKHJlcywgcGF0aCwgbGVuZ3RoKSAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF80M19vdHJ1bmNhdGUocmVzLCAobG9uZyBsb25nKShwYXRoKSwgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykobGVuZ3RoKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jb21wYXRfNDNfb2Z0cnVuY2F0ZShmZCwgbGVuZ3RoKSAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF80M19vZnRydW5jYXRlKChsb25nIGxvbmcpKGZkKSwgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGxlbmd0aCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF80M19vZnRydW5jYXRlKHJlcywgZmQsIGxlbmd0aCkgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzQzX29mdHJ1bmNhdGUocmVzLCAobG9uZyBsb25nKShmZCksICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykobGVuZ3RoKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9mbG9jayhmZCwgaG93KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2Zsb2NrKChsb25nIGxvbmcpKGZkKSwgKGxvbmcgbG9uZykoaG93KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZmxvY2socmVzLCBmZCwgaG93KSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9mbG9jayhyZXMsIChsb25nIGxvbmcpKGZkKSwgKGxvbmcgbG9uZykoaG93KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9ta2ZpZm8ocGF0aCwgbW9kZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX21rZmlmbygobG9uZyBsb25nKShwYXRoKSwgKGxvbmcgbG9uZykobW9kZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X21rZmlmbyhyZXMsIHBhdGgsIG1vZGUpICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbWtmaWZvKHJlcywgKGxvbmcgbG9uZykocGF0aCksICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKG1vZGUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3NlbmR0byhzLCBidWYsIGxlbiwgZmxhZ3MsIHRvLCB0b2xlbikgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2VuZHRvKChsb25nIGxvbmcpKHMpLCAobG9uZyBsb25nKShidWYpLCAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGxlbiksIChsb25nIGxvbmcpKGZsYWdzKSwgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHRvKSwgKGxvbmcgbG9uZykodG9sZW4pKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9zZW5kdG8ocmVzLCBzLCBidWYsIGxlbiwgZmxhZ3MsIHRvLCB0b2xlbikgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NlbmR0byhyZXMsIChsb25nIGxvbmcpKHMpLCAobG9uZyBsb25nKShidWYpLCAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShsZW4pLCAobG9uZyBsb25nKShmbGFncyksICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKSh0byksIChsb25nIGxvbmcpKHRvbGVuKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zaHV0ZG93bihzLCBob3cpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NodXRkb3duKChsb25nIGxvbmcpKHMpLCAobG9uZyBsb25nKShob3cpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9zaHV0ZG93bihyZXMsIHMsIGhvdykgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NodXRkb3duKHJlcywgKGxvbmcgbG9uZykocyksIChsb25nIGxvbmcpKGhvdykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfc29ja2V0cGFpcihkb21haW4sIHR5cGUsIHByb3RvY29sLCByc3YpICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zb2NrZXRwYWlyKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGRvbWFpbiksIChsb25nIGxvbmcpKHR5cGUpLCAobG9uZyBsb25nKShwcm90b2NvbCksICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKHJzdikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NvY2tldHBhaXIocmVzLCBkb21haW4sIHR5cGUsIHByb3RvY29sLCByc3YpICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc29ja2V0cGFpciggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykoZG9tYWluKSwgKGxvbmcgbG9uZykodHlwZSksIChsb25nIGxvbmcpKHByb3RvY29sKSwgICAgICBcCiAgICAgIChsb25nIGxvbmcpKHJzdikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfbWtkaXIocGF0aCwgbW9kZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9ta2RpcigobG9uZyBsb25nKShwYXRoKSwgKGxvbmcgbG9uZykobW9kZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X21rZGlyKHJlcywgcGF0aCwgbW9kZSkgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbWtkaXIocmVzLCAobG9uZyBsb25nKShwYXRoKSwgKGxvbmcgbG9uZykobW9kZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfcm1kaXIocGF0aCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9ybWRpcigobG9uZyBsb25nKShwYXRoKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfcm1kaXIocmVzLCBwYXRoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9ybWRpcihyZXMsIChsb25nIGxvbmcpKHBhdGgpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2NvbXBhdF81MF91dGltZXMocGF0aCwgdHB0cikgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzUwX3V0aW1lcygobG9uZyBsb25nKShwYXRoKSwgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKSh0cHRyKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY29tcGF0XzUwX3V0aW1lcyhyZXMsIHBhdGgsIHRwdHIpICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfNTBfdXRpbWVzKHJlcywgKGxvbmcgbG9uZykocGF0aCksICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHRwdHIpKQovKiBzeXNjYWxsIDEzOSBoYXMgYmVlbiBza2lwcGVkICovCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY29tcGF0XzUwX2FkanRpbWUoZGVsdGEsIG9sZGRlbHRhKSAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfNTBfYWRqdGltZSgobG9uZyBsb25nKShkZWx0YSksICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShvbGRkZWx0YSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF81MF9hZGp0aW1lKHJlcywgZGVsdGEsIG9sZGRlbHRhKSAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzUwX2FkanRpbWUocmVzLCAobG9uZyBsb25nKShkZWx0YSksICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykob2xkZGVsdGEpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2NvbXBhdF80M19vZ2V0cGVlcm5hbWUoZmRlcywgYXNhLCBhbGVuKSAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzQzX29nZXRwZWVybmFtZSggICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShmZGVzKSwgKGxvbmcgbG9uZykoYXNhKSwgKGxvbmcgbG9uZykoYWxlbikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF80M19vZ2V0cGVlcm5hbWUocmVzLCBmZGVzLCBhc2EsIGFsZW4pICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzQzX29nZXRwZWVybmFtZSggICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykoZmRlcyksIChsb25nIGxvbmcpKGFzYSksIChsb25nIGxvbmcpKGFsZW4pKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2NvbXBhdF80M19vZ2V0aG9zdGlkKCkgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzQzX29nZXRob3N0aWQoKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jb21wYXRfNDNfb2dldGhvc3RpZChyZXMpICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF80M19vZ2V0aG9zdGlkKHJlcykKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jb21wYXRfNDNfb3NldGhvc3RpZChob3N0aWQpICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF80M19vc2V0aG9zdGlkKChsb25nIGxvbmcpKGhvc3RpZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF80M19vc2V0aG9zdGlkKHJlcywgaG9zdGlkKSAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzQzX29zZXRob3N0aWQocmVzLCAobG9uZyBsb25nKShob3N0aWQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2NvbXBhdF80M19vZ2V0cmxpbWl0KHdoaWNoLCBybHApICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzQzX29nZXRybGltaXQoKGxvbmcgbG9uZykod2hpY2gpLCAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykocmxwKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY29tcGF0XzQzX29nZXRybGltaXQocmVzLCB3aGljaCwgcmxwKSAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfNDNfb2dldHJsaW1pdChyZXMsIChsb25nIGxvbmcpKHdoaWNoKSwgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShybHApKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2NvbXBhdF80M19vc2V0cmxpbWl0KHdoaWNoLCBybHApICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzQzX29zZXRybGltaXQoKGxvbmcgbG9uZykod2hpY2gpLCAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykocmxwKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY29tcGF0XzQzX29zZXRybGltaXQocmVzLCB3aGljaCwgcmxwKSAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfNDNfb3NldHJsaW1pdChyZXMsIChsb25nIGxvbmcpKHdoaWNoKSwgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShybHApKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2NvbXBhdF80M19va2lsbHBnKHBnaWQsIHNpZ251bSkgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzQzX29raWxscGcoKGxvbmcgbG9uZykocGdpZCksICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoc2lnbnVtKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY29tcGF0XzQzX29raWxscGcocmVzLCBwZ2lkLCBzaWdudW0pICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfNDNfb2tpbGxwZyhyZXMsIChsb25nIGxvbmcpKHBnaWQpLCAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShzaWdudW0pKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3NldHNpZCgpIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2V0c2lkKCkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfc2V0c2lkKHJlcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZXRzaWQocmVzKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2NvbXBhdF81MF9xdW90YWN0bChwYXRoLCBjbWQsIHVpZCwgYXJnKSAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzUwX3F1b3RhY3RsKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShwYXRoKSwgKGxvbmcgbG9uZykoY21kKSwgKGxvbmcgbG9uZykodWlkKSwgKGxvbmcgbG9uZykoYXJnKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY29tcGF0XzUwX3F1b3RhY3RsKHJlcywgcGF0aCwgY21kLCB1aWQsIGFyZykgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfNTBfcXVvdGFjdGwoICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShwYXRoKSwgKGxvbmcgbG9uZykoY21kKSwgKGxvbmcgbG9uZykodWlkKSwgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykoYXJnKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jb21wYXRfNDNfb3F1b3RhKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF80M19vcXVvdGEoKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jb21wYXRfNDNfb3F1b3RhKHJlcykgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF80M19vcXVvdGEocmVzKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2NvbXBhdF80M19vZ2V0c29ja25hbWUoZmRlYywgYXNhLCBhbGVuKSAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzQzX29nZXRzb2NrbmFtZSggICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShmZGVjKSwgKGxvbmcgbG9uZykoYXNhKSwgKGxvbmcgbG9uZykoYWxlbikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF80M19vZ2V0c29ja25hbWUocmVzLCBmZGVjLCBhc2EsIGFsZW4pICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzQzX29nZXRzb2NrbmFtZSggICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykoZmRlYyksIChsb25nIGxvbmcpKGFzYSksIChsb25nIGxvbmcpKGFsZW4pKQovKiBzeXNjYWxsIDE1MSBoYXMgYmVlbiBza2lwcGVkICovCi8qIHN5c2NhbGwgMTUyIGhhcyBiZWVuIHNraXBwZWQgKi8KLyogc3lzY2FsbCAxNTMgaGFzIGJlZW4gc2tpcHBlZCAqLwovKiBzeXNjYWxsIDE1NCBoYXMgYmVlbiBza2lwcGVkICovCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfbmZzc3ZjKGZsYWcsIGFyZ3ApICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9uZnNzdmMoKGxvbmcgbG9uZykoZmxhZyksIChsb25nIGxvbmcpKGFyZ3ApKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9uZnNzdmMocmVzLCBmbGFnLCBhcmdwKSAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX25mc3N2YyhyZXMsIChsb25nIGxvbmcpKGZsYWcpLCAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShhcmdwKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jb21wYXRfNDNfb2dldGRpcmVudHJpZXMoZmQsIGJ1ZiwgY291bnQsICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZXApICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF80M19vZ2V0ZGlyZW50cmllcyggICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykoZmQpLCAobG9uZyBsb25nKShidWYpLCAobG9uZyBsb25nKShjb3VudCksICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykoYmFzZXApKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jb21wYXRfNDNfb2dldGRpcmVudHJpZXMocmVzLCBmZCwgYnVmLCBjb3VudCwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZXApICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF80M19vZ2V0ZGlyZW50cmllcyggICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKGZkKSwgKGxvbmcgbG9uZykoYnVmKSwgKGxvbmcgbG9uZykoY291bnQpLCAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShiYXNlcCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY29tcGF0XzIwX3N0YXRmcyhwYXRoLCBidWYpICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfMjBfc3RhdGZzKChsb25nIGxvbmcpKHBhdGgpLCAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGJ1ZikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF8yMF9zdGF0ZnMocmVzLCBwYXRoLCBidWYpICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzIwX3N0YXRmcyhyZXMsIChsb25nIGxvbmcpKHBhdGgpLCAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShidWYpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2NvbXBhdF8yMF9mc3RhdGZzKGZkLCBidWYpICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzIwX2ZzdGF0ZnMoKGxvbmcgbG9uZykoZmQpLCAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoYnVmKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY29tcGF0XzIwX2ZzdGF0ZnMocmVzLCBmZCwgYnVmKSAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfMjBfZnN0YXRmcyhyZXMsIChsb25nIGxvbmcpKGZkKSwgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShidWYpKQovKiBzeXNjYWxsIDE1OSBoYXMgYmVlbiBza2lwcGVkICovCi8qIHN5c2NhbGwgMTYwIGhhcyBiZWVuIHNraXBwZWQgKi8KI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jb21wYXRfMzBfZ2V0ZmgoZm5hbWUsIGZocCkgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF8zMF9nZXRmaCgobG9uZyBsb25nKShmbmFtZSksICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShmaHApKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jb21wYXRfMzBfZ2V0ZmgocmVzLCBmbmFtZSwgZmhwKSAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF8zMF9nZXRmaChyZXMsIChsb25nIGxvbmcpKGZuYW1lKSwgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShmaHApKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2NvbXBhdF8wOV9vZ2V0ZG9tYWlubmFtZShkb21haW5uYW1lLCBsZW4pICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzA5X29nZXRkb21haW5uYW1lKCAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShkb21haW5uYW1lKSwgKGxvbmcgbG9uZykobGVuKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY29tcGF0XzA5X29nZXRkb21haW5uYW1lKHJlcywgZG9tYWlubmFtZSwgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbikgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfMDlfb2dldGRvbWFpbm5hbWUoICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShkb21haW5uYW1lKSwgKGxvbmcgbG9uZykobGVuKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jb21wYXRfMDlfb3NldGRvbWFpbm5hbWUoZG9tYWlubmFtZSwgbGVuKSAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF8wOV9vc2V0ZG9tYWlubmFtZSggICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykoZG9tYWlubmFtZSksIChsb25nIGxvbmcpKGxlbikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF8wOV9vc2V0ZG9tYWlubmFtZShyZXMsIGRvbWFpbm5hbWUsICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4pICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzA5X29zZXRkb21haW5uYW1lKCAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykoZG9tYWlubmFtZSksIChsb25nIGxvbmcpKGxlbikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY29tcGF0XzA5X291bmFtZShuYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfMDlfb3VuYW1lKChsb25nIGxvbmcpKG5hbWUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jb21wYXRfMDlfb3VuYW1lKHJlcywgbmFtZSkgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF8wOV9vdW5hbWUocmVzLCAobG9uZyBsb25nKShuYW1lKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zeXNhcmNoKG9wLCBwYXJtcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3N5c2FyY2goKGxvbmcgbG9uZykob3ApLCAobG9uZyBsb25nKShwYXJtcykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3N5c2FyY2gocmVzLCBvcCwgcGFybXMpICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc3lzYXJjaChyZXMsIChsb25nIGxvbmcpKG9wKSwgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShwYXJtcykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfX19mdXRleCh1YWRkciwgb3AsIHZhbCwgdGltZW91dCwgdWFkZHIyLCB2YWwyLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX2Z1dGV4KChsb25nIGxvbmcpKHVhZGRyKSwgKGxvbmcgbG9uZykob3ApLCAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHZhbCksIChsb25nIGxvbmcpKHRpbWVvdXQpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHVhZGRyMiksIChsb25nIGxvbmcpKHZhbDIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHZhbDMpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9fX2Z1dGV4KHJlcywgdWFkZHIsIG9wLCB2YWwsIHRpbWVvdXQsIHVhZGRyMiwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbDIsIHZhbDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fZnV0ZXgoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKHVhZGRyKSwgKGxvbmcgbG9uZykob3ApLCAobG9uZyBsb25nKSh2YWwpLCAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKSh0aW1lb3V0KSwgKGxvbmcgbG9uZykodWFkZHIyKSwgKGxvbmcgbG9uZykodmFsMiksICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKSh2YWwzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9fX2Z1dGV4X3NldF9yb2J1c3RfbGlzdChoZWFkLCBsZW4pICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fZnV0ZXhfc2V0X3JvYnVzdF9saXN0KChsb25nIGxvbmcpKGhlYWQpLCAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGxlbikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X19fZnV0ZXhfc2V0X3JvYnVzdF9saXN0KHJlcywgaGVhZCwgbGVuKSAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX19mdXRleF9zZXRfcm9idXN0X2xpc3QoICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykoaGVhZCksIChsb25nIGxvbmcpKGxlbikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfX19mdXRleF9nZXRfcm9idXN0X2xpc3QobHdwaWQsIGhlYWRwLCBsZW5wKSAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX2Z1dGV4X2dldF9yb2J1c3RfbGlzdCggICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGx3cGlkKSwgKGxvbmcgbG9uZykoaGVhZHApLCAobG9uZyBsb25nKShsZW5wKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfX19mdXRleF9nZXRfcm9idXN0X2xpc3QocmVzLCBsd3BpZCwgaGVhZHAsICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVucCkgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX2Z1dGV4X2dldF9yb2J1c3RfbGlzdCggICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShsd3BpZCksIChsb25nIGxvbmcpKGhlYWRwKSwgKGxvbmcgbG9uZykobGVucCkpCiNpZiAhZGVmaW5lZChfTFA2NCkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jb21wYXRfMTBfb3NlbXN5cyh3aGljaCwgYTIsIGEzLCBhNCwgYTUpICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF8xMF9vc2Vtc3lzKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykod2hpY2gpLCAobG9uZyBsb25nKShhMiksIChsb25nIGxvbmcpKGEzKSwgKGxvbmcgbG9uZykoYTQpLCAgIFwKICAgICAgKGxvbmcgbG9uZykoYTUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jb21wYXRfMTBfb3NlbXN5cyhyZXMsIHdoaWNoLCBhMiwgYTMsIGE0LCBhNSkgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF8xMF9vc2Vtc3lzKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKHdoaWNoKSwgKGxvbmcgbG9uZykoYTIpLCAobG9uZyBsb25nKShhMyksICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShhNCksIChsb25nIGxvbmcpKGE1KSkKI2Vsc2UKLyogc3lzY2FsbCAxNjkgaGFzIGJlZW4gc2tpcHBlZCAqLwojZW5kaWYKI2lmICFkZWZpbmVkKF9MUDY0KQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2NvbXBhdF8xMF9vbXNnc3lzKHdoaWNoLCBhMiwgYTMsIGE0LCBhNSwgYTYpICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzEwX29tc2dzeXMoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKSh3aGljaCksIChsb25nIGxvbmcpKGEyKSwgKGxvbmcgbG9uZykoYTMpLCAobG9uZyBsb25nKShhNCksICAgXAogICAgICAobG9uZyBsb25nKShhNSksIChsb25nIGxvbmcpKGE2KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY29tcGF0XzEwX29tc2dzeXMocmVzLCB3aGljaCwgYTIsIGEzLCBhNCwgYTUsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYTYpICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfMTBfb21zZ3N5cyggICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKSh3aGljaCksIChsb25nIGxvbmcpKGEyKSwgKGxvbmcgbG9uZykoYTMpLCAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykoYTQpLCAobG9uZyBsb25nKShhNSksIChsb25nIGxvbmcpKGE2KSkKI2Vsc2UKLyogc3lzY2FsbCAxNzAgaGFzIGJlZW4gc2tpcHBlZCAqLwojZW5kaWYKI2lmICFkZWZpbmVkKF9MUDY0KQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2NvbXBhdF8xMF9vc2htc3lzKHdoaWNoLCBhMiwgYTMsIGE0KSAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzEwX29zaG1zeXMoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKSh3aGljaCksIChsb25nIGxvbmcpKGEyKSwgKGxvbmcgbG9uZykoYTMpLCAobG9uZyBsb25nKShhNCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF8xMF9vc2htc3lzKHJlcywgd2hpY2gsIGEyLCBhMywgYTQpICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzEwX29zaG1zeXMoICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykod2hpY2gpLCAobG9uZyBsb25nKShhMiksIChsb25nIGxvbmcpKGEzKSwgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGE0KSkKI2Vsc2UKLyogc3lzY2FsbCAxNzEgaGFzIGJlZW4gc2tpcHBlZCAqLwojZW5kaWYKLyogc3lzY2FsbCAxNzIgaGFzIGJlZW4gc2tpcHBlZCAqLwojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3ByZWFkKGZkLCBidWYsIG5ieXRlLCBQQUQsIG9mZnNldCkgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfcHJlYWQoKGxvbmcgbG9uZykoZmQpLCAobG9uZyBsb25nKShidWYpLCAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykobmJ5dGUpLCAobG9uZyBsb25nKShQQUQpLCAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykob2Zmc2V0KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfcHJlYWQocmVzLCBmZCwgYnVmLCBuYnl0ZSwgUEFELCBvZmZzZXQpICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9wcmVhZChyZXMsIChsb25nIGxvbmcpKGZkKSwgKGxvbmcgbG9uZykoYnVmKSwgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShuYnl0ZSksIChsb25nIGxvbmcpKFBBRCksICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShvZmZzZXQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3B3cml0ZShmZCwgYnVmLCBuYnl0ZSwgUEFELCBvZmZzZXQpICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfcHdyaXRlKChsb25nIGxvbmcpKGZkKSwgKGxvbmcgbG9uZykoYnVmKSwgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKG5ieXRlKSwgKGxvbmcgbG9uZykoUEFEKSwgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKG9mZnNldCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3B3cml0ZShyZXMsIGZkLCBidWYsIG5ieXRlLCBQQUQsIG9mZnNldCkgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcHdyaXRlKHJlcywgKGxvbmcgbG9uZykoZmQpLCAobG9uZyBsb25nKShidWYpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKG5ieXRlKSwgKGxvbmcgbG9uZykoUEFEKSwgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKG9mZnNldCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY29tcGF0XzMwX250cF9nZXR0aW1lKG50dnApICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfMzBfbnRwX2dldHRpbWUoKGxvbmcgbG9uZykobnR2cCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF8zMF9udHBfZ2V0dGltZShyZXMsIG50dnApICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzMwX250cF9nZXR0aW1lKHJlcywgKGxvbmcgbG9uZykobnR2cCkpCiNpZiBkZWZpbmVkKE5UUCkgfHwgIWRlZmluZWQoX0tFUk5FTF9PUFQpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfbnRwX2FkanRpbWUodHApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9udHBfYWRqdGltZSgobG9uZyBsb25nKSh0cCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X250cF9hZGp0aW1lKHJlcywgdHApICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbnRwX2FkanRpbWUocmVzLCAobG9uZyBsb25nKSh0cCkpCiNlbHNlCi8qIHN5c2NhbGwgMTc2IGhhcyBiZWVuIHNraXBwZWQgKi8KI2VuZGlmCi8qIHN5c2NhbGwgMTc3IGhhcyBiZWVuIHNraXBwZWQgKi8KLyogc3lzY2FsbCAxNzggaGFzIGJlZW4gc2tpcHBlZCAqLwovKiBzeXNjYWxsIDE3OSBoYXMgYmVlbiBza2lwcGVkICovCi8qIHN5c2NhbGwgMTgwIGhhcyBiZWVuIHNraXBwZWQgKi8KI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zZXRnaWQoZ2lkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NldGdpZCgobG9uZyBsb25nKShnaWQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9zZXRnaWQocmVzLCBnaWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NldGdpZChyZXMsIChsb25nIGxvbmcpKGdpZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfc2V0ZWdpZChlZ2lkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zZXRlZ2lkKChsb25nIGxvbmcpKGVnaWQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9zZXRlZ2lkKHJlcywgZWdpZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NldGVnaWQocmVzLCAobG9uZyBsb25nKShlZ2lkKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zZXRldWlkKGV1aWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NldGV1aWQoKGxvbmcgbG9uZykoZXVpZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NldGV1aWQocmVzLCBldWlkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2V0ZXVpZChyZXMsIChsb25nIGxvbmcpKGV1aWQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2xmc19ibWFwdihmc2lkcCwgYmxraW92LCBibGtjbnQpICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbGZzX2JtYXB2KCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShmc2lkcCksIChsb25nIGxvbmcpKGJsa2lvdiksIChsb25nIGxvbmcpKGJsa2NudCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2xmc19ibWFwdihyZXMsIGZzaWRwLCBibGtpb3YsIGJsa2NudCkgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbGZzX2JtYXB2KCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykoZnNpZHApLCAobG9uZyBsb25nKShibGtpb3YpLCAobG9uZyBsb25nKShibGtjbnQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2xmc19tYXJrdihmc2lkcCwgYmxraW92LCBibGtjbnQpICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbGZzX21hcmt2KCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShmc2lkcCksIChsb25nIGxvbmcpKGJsa2lvdiksIChsb25nIGxvbmcpKGJsa2NudCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2xmc19tYXJrdihyZXMsIGZzaWRwLCBibGtpb3YsIGJsa2NudCkgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbGZzX21hcmt2KCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykoZnNpZHApLCAobG9uZyBsb25nKShibGtpb3YpLCAobG9uZyBsb25nKShibGtjbnQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2xmc19zZWdjbGVhbihmc2lkcCwgc2VnbWVudCkgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbGZzX3NlZ2NsZWFuKChsb25nIGxvbmcpKGZzaWRwKSwgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHNlZ21lbnQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9sZnNfc2VnY2xlYW4ocmVzLCBmc2lkcCwgc2VnbWVudCkgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2xmc19zZWdjbGVhbihyZXMsIChsb25nIGxvbmcpKGZzaWRwKSwgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShzZWdtZW50KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jb21wYXRfNTBfbGZzX3NlZ3dhaXQoZnNpZHAsIHR2KSAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF81MF9sZnNfc2Vnd2FpdCgobG9uZyBsb25nKShmc2lkcCksICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKSh0dikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF81MF9sZnNfc2Vnd2FpdChyZXMsIGZzaWRwLCB0dikgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzUwX2xmc19zZWd3YWl0KHJlcywgKGxvbmcgbG9uZykoZnNpZHApLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHR2KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jb21wYXRfMTJfc3RhdDEyKHBhdGgsIHViKSAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF8xMl9zdGF0MTIoKGxvbmcgbG9uZykocGF0aCksICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykodWIpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jb21wYXRfMTJfc3RhdDEyKHJlcywgcGF0aCwgdWIpICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF8xMl9zdGF0MTIocmVzLCAobG9uZyBsb25nKShwYXRoKSwgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykodWIpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2NvbXBhdF8xMl9mc3RhdDEyKGZkLCBzYikgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzEyX2ZzdGF0MTIoKGxvbmcgbG9uZykoZmQpLCAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoc2IpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jb21wYXRfMTJfZnN0YXQxMihyZXMsIGZkLCBzYikgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF8xMl9mc3RhdDEyKHJlcywgKGxvbmcgbG9uZykoZmQpLCAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHNiKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jb21wYXRfMTJfbHN0YXQxMihwYXRoLCB1YikgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF8xMl9sc3RhdDEyKChsb25nIGxvbmcpKHBhdGgpLCAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHViKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY29tcGF0XzEyX2xzdGF0MTIocmVzLCBwYXRoLCB1YikgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfMTJfbHN0YXQxMihyZXMsIChsb25nIGxvbmcpKHBhdGgpLCAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKSh1YikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfcGF0aGNvbmYocGF0aCwgbmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9wYXRoY29uZigobG9uZyBsb25nKShwYXRoKSwgKGxvbmcgbG9uZykobmFtZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3BhdGhjb25mKHJlcywgcGF0aCwgbmFtZSkgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcGF0aGNvbmYocmVzLCAobG9uZyBsb25nKShwYXRoKSwgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykobmFtZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZnBhdGhjb25mKGZkLCBuYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9mcGF0aGNvbmYoKGxvbmcgbG9uZykoZmQpLCAobG9uZyBsb25nKShuYW1lKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZnBhdGhjb25mKHJlcywgZmQsIG5hbWUpICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9mcGF0aGNvbmYocmVzLCAobG9uZyBsb25nKShmZCksICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykobmFtZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZ2V0c29ja29wdDIocywgbGV2ZWwsIG5hbWUsIHZhbCwgYXZhbHNpemUpICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9nZXRzb2Nrb3B0MiggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKHMpLCAobG9uZyBsb25nKShsZXZlbCksIChsb25nIGxvbmcpKG5hbWUpLCAobG9uZyBsb25nKSh2YWwpLCBcCiAgICAgIChsb25nIGxvbmcpKGF2YWxzaXplKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZ2V0c29ja29wdDIocmVzLCBzLCBsZXZlbCwgbmFtZSwgdmFsLCAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhbHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9nZXRzb2Nrb3B0MiggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShzKSwgKGxvbmcgbG9uZykobGV2ZWwpLCAobG9uZyBsb25nKShuYW1lKSwgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykodmFsKSwgKGxvbmcgbG9uZykoYXZhbHNpemUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2dldHJsaW1pdCh3aGljaCwgcmxwKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZ2V0cmxpbWl0KChsb25nIGxvbmcpKHdoaWNoKSwgKGxvbmcgbG9uZykocmxwKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZ2V0cmxpbWl0KHJlcywgd2hpY2gsIHJscCkgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9nZXRybGltaXQocmVzLCAobG9uZyBsb25nKSh3aGljaCksICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykocmxwKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zZXRybGltaXQod2hpY2gsIHJscCkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NldHJsaW1pdCgobG9uZyBsb25nKSh3aGljaCksIChsb25nIGxvbmcpKHJscCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NldHJsaW1pdChyZXMsIHdoaWNoLCBybHApICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2V0cmxpbWl0KHJlcywgKGxvbmcgbG9uZykod2hpY2gpLCAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHJscCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY29tcGF0XzEyX2dldGRpcmVudHJpZXMoZmQsIGJ1ZiwgY291bnQsIGJhc2VwKSBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfMTJfZ2V0ZGlyZW50cmllcyggICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGZkKSwgKGxvbmcgbG9uZykoYnVmKSwgKGxvbmcgbG9uZykoY291bnQpLCAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGJhc2VwKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY29tcGF0XzEyX2dldGRpcmVudHJpZXMocmVzLCBmZCwgYnVmLCBjb3VudCwgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZXApICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfMTJfZ2V0ZGlyZW50cmllcyggICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShmZCksIChsb25nIGxvbmcpKGJ1ZiksIChsb25nIGxvbmcpKGNvdW50KSwgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykoYmFzZXApKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX21tYXAoYWRkciwgbGVuLCBwcm90LCBmbGFncywgZmQsIFBBRCwgcG9zKSAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbW1hcCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShhZGRyKSwgKGxvbmcgbG9uZykobGVuKSwgKGxvbmcgbG9uZykocHJvdCksICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShmbGFncyksIChsb25nIGxvbmcpKGZkKSwgKGxvbmcgbG9uZykoUEFEKSwgKGxvbmcgbG9uZykocG9zKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfbW1hcChyZXMsIGFkZHIsIGxlbiwgcHJvdCwgZmxhZ3MsIGZkLCBQQUQsICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9tbWFwKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShhZGRyKSwgKGxvbmcgbG9uZykobGVuKSwgKGxvbmcgbG9uZykocHJvdCksICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykoZmxhZ3MpLCAobG9uZyBsb25nKShmZCksIChsb25nIGxvbmcpKFBBRCksIChsb25nIGxvbmcpKHBvcykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfX19zeXNjYWxsKGNvZGUsIGFyZzAsIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZzUsIGFyZzYsIGFyZzcpICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX3N5c2NhbGwoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGNvZGUpLCAobG9uZyBsb25nKShhcmcwKSwgKGxvbmcgbG9uZykoYXJnMSksICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGFyZzIpLCAobG9uZyBsb25nKShhcmczKSwgKGxvbmcgbG9uZykoYXJnNCksICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGFyZzUpLCAobG9uZyBsb25nKShhcmc2KSwgKGxvbmcgbG9uZykoYXJnNykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X19fc3lzY2FsbChyZXMsIGNvZGUsIGFyZzAsIGFyZzEsIGFyZzIsIGFyZzMsICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmc0LCBhcmc1LCBhcmc2LCBhcmc3KSAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX19zeXNjYWxsKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykoY29kZSksIChsb25nIGxvbmcpKGFyZzApLCAobG9uZyBsb25nKShhcmcxKSwgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGFyZzIpLCAobG9uZyBsb25nKShhcmczKSwgKGxvbmcgbG9uZykoYXJnNCksICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGFyZzUpLCAobG9uZyBsb25nKShhcmc2KSwgKGxvbmcgbG9uZykoYXJnNykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfbHNlZWsoZmQsIFBBRCwgb2Zmc2V0LCB3aGVuY2UpICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9sc2VlaygobG9uZyBsb25nKShmZCksIChsb25nIGxvbmcpKFBBRCksICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShvZmZzZXQpLCAobG9uZyBsb25nKSh3aGVuY2UpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9sc2VlayhyZXMsIGZkLCBQQUQsIG9mZnNldCwgd2hlbmNlKSAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2xzZWVrKHJlcywgKGxvbmcgbG9uZykoZmQpLCAobG9uZyBsb25nKShQQUQpLCAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKG9mZnNldCksICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHdoZW5jZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfdHJ1bmNhdGUocGF0aCwgUEFELCBsZW5ndGgpICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF90cnVuY2F0ZSgobG9uZyBsb25nKShwYXRoKSwgKGxvbmcgbG9uZykoUEFEKSwgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShsZW5ndGgpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF90cnVuY2F0ZShyZXMsIHBhdGgsIFBBRCwgbGVuZ3RoKSAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3RydW5jYXRlKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKHBhdGgpLCAobG9uZyBsb25nKShQQUQpLCAobG9uZyBsb25nKShsZW5ndGgpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2Z0cnVuY2F0ZShmZCwgUEFELCBsZW5ndGgpICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZnRydW5jYXRlKChsb25nIGxvbmcpKGZkKSwgKGxvbmcgbG9uZykoUEFEKSwgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGxlbmd0aCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2Z0cnVuY2F0ZShyZXMsIGZkLCBQQUQsIGxlbmd0aCkgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZnRydW5jYXRlKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykoZmQpLCAobG9uZyBsb25nKShQQUQpLCAobG9uZyBsb25nKShsZW5ndGgpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX19fc3lzY3RsKG5hbWUsIG5hbWVsZW4sIG9sZHYsIG9sZGxlbnAsIG5ld3YsICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld2xlbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19zeXNjdGwoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShuYW1lKSwgKGxvbmcgbG9uZykobmFtZWxlbiksIChsb25nIGxvbmcpKG9sZHYpLCAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShvbGRsZW5wKSwgKGxvbmcgbG9uZykobmV3diksIChsb25nIGxvbmcpKG5ld2xlbikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X19fc3lzY3RsKHJlcywgbmFtZSwgbmFtZWxlbiwgb2xkdiwgb2xkbGVucCwgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld3YsIG5ld2xlbikgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX19zeXNjdGwoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykobmFtZSksIChsb25nIGxvbmcpKG5hbWVsZW4pLCAobG9uZyBsb25nKShvbGR2KSwgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKG9sZGxlbnApLCAobG9uZyBsb25nKShuZXd2KSwgKGxvbmcgbG9uZykobmV3bGVuKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9tbG9jayhhZGRyLCBsZW4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX21sb2NrKChsb25nIGxvbmcpKGFkZHIpLCAobG9uZyBsb25nKShsZW4pKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9tbG9jayhyZXMsIGFkZHIsIGxlbikgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX21sb2NrKHJlcywgKGxvbmcgbG9uZykoYWRkciksIChsb25nIGxvbmcpKGxlbikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfbXVubG9jayhhZGRyLCBsZW4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9tdW5sb2NrKChsb25nIGxvbmcpKGFkZHIpLCAobG9uZyBsb25nKShsZW4pKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9tdW5sb2NrKHJlcywgYWRkciwgbGVuKSAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX211bmxvY2socmVzLCAobG9uZyBsb25nKShhZGRyKSwgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykobGVuKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV91bmRlbGV0ZShwYXRoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3VuZGVsZXRlKChsb25nIGxvbmcpKHBhdGgpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF91bmRlbGV0ZShyZXMsIHBhdGgpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3VuZGVsZXRlKHJlcywgKGxvbmcgbG9uZykocGF0aCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY29tcGF0XzUwX2Z1dGltZXMoZmQsIHRwdHIpICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfNTBfZnV0aW1lcygobG9uZyBsb25nKShmZCksICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKSh0cHRyKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY29tcGF0XzUwX2Z1dGltZXMocmVzLCBmZCwgdHB0cikgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfNTBfZnV0aW1lcyhyZXMsIChsb25nIGxvbmcpKGZkKSwgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKSh0cHRyKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9nZXRwZ2lkKHBpZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2dldHBnaWQoKGxvbmcgbG9uZykocGlkKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZ2V0cGdpZChyZXMsIHBpZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9nZXRwZ2lkKHJlcywgKGxvbmcgbG9uZykocGlkKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9yZWJvb3Qob3B0LCBib290c3RyKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3JlYm9vdCgobG9uZyBsb25nKShvcHQpLCAobG9uZyBsb25nKShib290c3RyKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfcmVib290KHJlcywgb3B0LCBib290c3RyKSAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9yZWJvb3QocmVzLCAobG9uZyBsb25nKShvcHQpLCAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoYm9vdHN0cikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfcG9sbChmZHMsIG5mZHMsIHRpbWVvdXQpICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9wb2xsKChsb25nIGxvbmcpKGZkcyksIChsb25nIGxvbmcpKG5mZHMpLCAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHRpbWVvdXQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9wb2xsKHJlcywgZmRzLCBuZmRzLCB0aW1lb3V0KSAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3BvbGwocmVzLCAobG9uZyBsb25nKShmZHMpLCAobG9uZyBsb25nKShuZmRzKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykodGltZW91dCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfYWZzc3lzKGlkLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KSAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9hZnNzeXMoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGlkKSwgKGxvbmcgbG9uZykoYTEpLCAobG9uZyBsb25nKShhMiksIChsb25nIGxvbmcpKGEzKSwgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGE0KSwgKGxvbmcgbG9uZykoYTUpLCAobG9uZyBsb25nKShhNikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2Fmc3N5cyhyZXMsIGlkLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KSAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfYWZzc3lzKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykoaWQpLCAobG9uZyBsb25nKShhMSksIChsb25nIGxvbmcpKGEyKSwgKGxvbmcgbG9uZykoYTMpLCBcCiAgICAgIChsb25nIGxvbmcpKGE0KSwgKGxvbmcgbG9uZykoYTUpLCAobG9uZyBsb25nKShhNikpCi8qIHN5c2NhbGwgMjExIGhhcyBiZWVuIHNraXBwZWQgKi8KLyogc3lzY2FsbCAyMTIgaGFzIGJlZW4gc2tpcHBlZCAqLwovKiBzeXNjYWxsIDIxMyBoYXMgYmVlbiBza2lwcGVkICovCi8qIHN5c2NhbGwgMjE0IGhhcyBiZWVuIHNraXBwZWQgKi8KLyogc3lzY2FsbCAyMTUgaGFzIGJlZW4gc2tpcHBlZCAqLwovKiBzeXNjYWxsIDIxNiBoYXMgYmVlbiBza2lwcGVkICovCi8qIHN5c2NhbGwgMjE3IGhhcyBiZWVuIHNraXBwZWQgKi8KLyogc3lzY2FsbCAyMTggaGFzIGJlZW4gc2tpcHBlZCAqLwovKiBzeXNjYWxsIDIxOSBoYXMgYmVlbiBza2lwcGVkICovCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY29tcGF0XzE0X19fc2VtY3RsKHNlbWlkLCBzZW1udW0sIGNtZCwgYXJnKSAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfMTRfX19zZW1jdGwoICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKHNlbWlkKSwgKGxvbmcgbG9uZykoc2VtbnVtKSwgKGxvbmcgbG9uZykoY21kKSwgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGFyZykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF8xNF9fX3NlbWN0bChyZXMsIHNlbWlkLCBzZW1udW0sIGNtZCwgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcpICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzE0X19fc2VtY3RsKCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykoc2VtaWQpLCAobG9uZyBsb25nKShzZW1udW0pLCAobG9uZyBsb25nKShjbWQpLCAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGFyZykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfc2VtZ2V0KGtleSwgbnNlbXMsIHNlbWZsZykgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zZW1nZXQoKGxvbmcgbG9uZykoa2V5KSwgKGxvbmcgbG9uZykobnNlbXMpLCAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoc2VtZmxnKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfc2VtZ2V0KHJlcywga2V5LCBuc2Vtcywgc2VtZmxnKSAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZW1nZXQoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShrZXkpLCAobG9uZyBsb25nKShuc2VtcyksIChsb25nIGxvbmcpKHNlbWZsZykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfc2Vtb3Aoc2VtaWQsIHNvcHMsIG5zb3BzKSAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zZW1vcCgobG9uZyBsb25nKShzZW1pZCksIChsb25nIGxvbmcpKHNvcHMpLCAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShuc29wcykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NlbW9wKHJlcywgc2VtaWQsIHNvcHMsIG5zb3BzKSAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2Vtb3AocmVzLCAobG9uZyBsb25nKShzZW1pZCksICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoc29wcyksIChsb25nIGxvbmcpKG5zb3BzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zZW1jb25maWcoZmxhZykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NlbWNvbmZpZygobG9uZyBsb25nKShmbGFnKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfc2VtY29uZmlnKHJlcywgZmxhZykgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZW1jb25maWcocmVzLCAobG9uZyBsb25nKShmbGFnKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jb21wYXRfMTRfbXNnY3RsKG1zcWlkLCBjbWQsIGJ1ZikgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF8xNF9tc2djdGwoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykobXNxaWQpLCAobG9uZyBsb25nKShjbWQpLCAobG9uZyBsb25nKShidWYpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jb21wYXRfMTRfbXNnY3RsKHJlcywgbXNxaWQsIGNtZCwgYnVmKSAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF8xNF9tc2djdGwoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKG1zcWlkKSwgKGxvbmcgbG9uZykoY21kKSwgKGxvbmcgbG9uZykoYnVmKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9tc2dnZXQoa2V5LCBtc2dmbGcpICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX21zZ2dldCgobG9uZyBsb25nKShrZXkpLCAobG9uZyBsb25nKShtc2dmbGcpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9tc2dnZXQocmVzLCBrZXksIG1zZ2ZsZykgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX21zZ2dldChyZXMsIChsb25nIGxvbmcpKGtleSksICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShtc2dmbGcpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX21zZ3NuZChtc3FpZCwgbXNncCwgbXNnc3osIG1zZ2ZsZykgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbXNnc25kKChsb25nIGxvbmcpKG1zcWlkKSwgKGxvbmcgbG9uZykobXNncCksICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKG1zZ3N6KSwgKGxvbmcgbG9uZykobXNnZmxnKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfbXNnc25kKHJlcywgbXNxaWQsIG1zZ3AsIG1zZ3N6LCBtc2dmbGcpICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9tc2dzbmQocmVzLCAobG9uZyBsb25nKShtc3FpZCksICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykobXNncCksIChsb25nIGxvbmcpKG1zZ3N6KSwgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykobXNnZmxnKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9tc2dyY3YobXNxaWQsIG1zZ3AsIG1zZ3N6LCBtc2d0eXAsIG1zZ2ZsZykgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX21zZ3JjdigobG9uZyBsb25nKShtc3FpZCksIChsb25nIGxvbmcpKG1zZ3ApLCAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShtc2dzeiksIChsb25nIGxvbmcpKG1zZ3R5cCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShtc2dmbGcpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9tc2dyY3YocmVzLCBtc3FpZCwgbXNncCwgbXNnc3osIG1zZ3R5cCwgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnZmxnKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX21zZ3JjdiggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKG1zcWlkKSwgKGxvbmcgbG9uZykobXNncCksIChsb25nIGxvbmcpKG1zZ3N6KSwgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShtc2d0eXApLCAobG9uZyBsb25nKShtc2dmbGcpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3NobWF0KHNobWlkLCBzaG1hZGRyLCBzaG1mbGcpICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2htYXQoKGxvbmcgbG9uZykoc2htaWQpLCAobG9uZyBsb25nKShzaG1hZGRyKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoc2htZmxnKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfc2htYXQocmVzLCBzaG1pZCwgc2htYWRkciwgc2htZmxnKSAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zaG1hdCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShzaG1pZCksIChsb25nIGxvbmcpKHNobWFkZHIpLCAobG9uZyBsb25nKShzaG1mbGcpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2NvbXBhdF8xNF9zaG1jdGwoc2htaWQsIGNtZCwgYnVmKSAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzE0X3NobWN0bCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShzaG1pZCksIChsb25nIGxvbmcpKGNtZCksIChsb25nIGxvbmcpKGJ1ZikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF8xNF9zaG1jdGwocmVzLCBzaG1pZCwgY21kLCBidWYpICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzE0X3NobWN0bCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykoc2htaWQpLCAobG9uZyBsb25nKShjbWQpLCAobG9uZyBsb25nKShidWYpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3NobWR0KHNobWFkZHIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2htZHQoKGxvbmcgbG9uZykoc2htYWRkcikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NobWR0KHJlcywgc2htYWRkcikgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2htZHQocmVzLCAobG9uZyBsb25nKShzaG1hZGRyKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zaG1nZXQoa2V5LCBzaXplLCBzaG1mbGcpICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NobWdldCgobG9uZyBsb25nKShrZXkpLCAobG9uZyBsb25nKShzaXplKSwgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShzaG1mbGcpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9zaG1nZXQocmVzLCBrZXksIHNpemUsIHNobWZsZykgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NobWdldChyZXMsIChsb25nIGxvbmcpKGtleSksICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShzaXplKSwgKGxvbmcgbG9uZykoc2htZmxnKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jb21wYXRfNTBfY2xvY2tfZ2V0dGltZShjbG9ja19pZCwgdHApICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF81MF9jbG9ja19nZXR0aW1lKChsb25nIGxvbmcpKGNsb2NrX2lkKSwgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHRwKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY29tcGF0XzUwX2Nsb2NrX2dldHRpbWUocmVzLCBjbG9ja19pZCwgdHApICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfNTBfY2xvY2tfZ2V0dGltZSggICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShjbG9ja19pZCksIChsb25nIGxvbmcpKHRwKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jb21wYXRfNTBfY2xvY2tfc2V0dGltZShjbG9ja19pZCwgdHApICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF81MF9jbG9ja19zZXR0aW1lKChsb25nIGxvbmcpKGNsb2NrX2lkKSwgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHRwKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY29tcGF0XzUwX2Nsb2NrX3NldHRpbWUocmVzLCBjbG9ja19pZCwgdHApICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfNTBfY2xvY2tfc2V0dGltZSggICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShjbG9ja19pZCksIChsb25nIGxvbmcpKHRwKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jb21wYXRfNTBfY2xvY2tfZ2V0cmVzKGNsb2NrX2lkLCB0cCkgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF81MF9jbG9ja19nZXRyZXMoKGxvbmcgbG9uZykoY2xvY2tfaWQpLCAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykodHApKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jb21wYXRfNTBfY2xvY2tfZ2V0cmVzKHJlcywgY2xvY2tfaWQsIHRwKSAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF81MF9jbG9ja19nZXRyZXMoICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKGNsb2NrX2lkKSwgKGxvbmcgbG9uZykodHApKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3RpbWVyX2NyZWF0ZShjbG9ja19pZCwgZXZwLCB0aW1lcmlkKSAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfdGltZXJfY3JlYXRlKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShjbG9ja19pZCksIChsb25nIGxvbmcpKGV2cCksIChsb25nIGxvbmcpKHRpbWVyaWQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF90aW1lcl9jcmVhdGUocmVzLCBjbG9ja19pZCwgZXZwLCB0aW1lcmlkKSAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3RpbWVyX2NyZWF0ZSggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKGNsb2NrX2lkKSwgKGxvbmcgbG9uZykoZXZwKSwgKGxvbmcgbG9uZykodGltZXJpZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfdGltZXJfZGVsZXRlKHRpbWVyaWQpICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF90aW1lcl9kZWxldGUoKGxvbmcgbG9uZykodGltZXJpZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3RpbWVyX2RlbGV0ZShyZXMsIHRpbWVyaWQpICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfdGltZXJfZGVsZXRlKHJlcywgKGxvbmcgbG9uZykodGltZXJpZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY29tcGF0XzUwX3RpbWVyX3NldHRpbWUodGltZXJpZCwgZmxhZ3MsIHZhbHVlLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZhbHVlKSAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfNTBfdGltZXJfc2V0dGltZSggICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKHRpbWVyaWQpLCAobG9uZyBsb25nKShmbGFncyksIChsb25nIGxvbmcpKHZhbHVlKSwgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKG92YWx1ZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF81MF90aW1lcl9zZXR0aW1lKHJlcywgdGltZXJpZCwgZmxhZ3MsICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLCBvdmFsdWUpICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzUwX3RpbWVyX3NldHRpbWUoICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykodGltZXJpZCksIChsb25nIGxvbmcpKGZsYWdzKSwgKGxvbmcgbG9uZykodmFsdWUpLCAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKG92YWx1ZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY29tcGF0XzUwX3RpbWVyX2dldHRpbWUodGltZXJpZCwgdmFsdWUpICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfNTBfdGltZXJfZ2V0dGltZSgobG9uZyBsb25nKSh0aW1lcmlkKSwgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKSh2YWx1ZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF81MF90aW1lcl9nZXR0aW1lKHJlcywgdGltZXJpZCwgdmFsdWUpICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzUwX3RpbWVyX2dldHRpbWUoICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykodGltZXJpZCksIChsb25nIGxvbmcpKHZhbHVlKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV90aW1lcl9nZXRvdmVycnVuKHRpbWVyaWQpICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3RpbWVyX2dldG92ZXJydW4oKGxvbmcgbG9uZykodGltZXJpZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3RpbWVyX2dldG92ZXJydW4ocmVzLCB0aW1lcmlkKSAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfdGltZXJfZ2V0b3ZlcnJ1bihyZXMsIChsb25nIGxvbmcpKHRpbWVyaWQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2NvbXBhdF81MF9uYW5vc2xlZXAocnF0cCwgcm10cCkgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzUwX25hbm9zbGVlcCgobG9uZyBsb25nKShycXRwKSwgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShybXRwKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY29tcGF0XzUwX25hbm9zbGVlcChyZXMsIHJxdHAsIHJtdHApICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfNTBfbmFub3NsZWVwKHJlcywgKGxvbmcgbG9uZykocnF0cCksICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHJtdHApKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ZkYXRhc3luYyhmZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZmRhdGFzeW5jKChsb25nIGxvbmcpKGZkKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZmRhdGFzeW5jKHJlcywgZmQpICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9mZGF0YXN5bmMocmVzLCAobG9uZyBsb25nKShmZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfbWxvY2thbGwoZmxhZ3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9tbG9ja2FsbCgobG9uZyBsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X21sb2NrYWxsKHJlcywgZmxhZ3MpICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbWxvY2thbGwocmVzLCAobG9uZyBsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfbXVubG9ja2FsbCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9tdW5sb2NrYWxsKCkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfbXVubG9ja2FsbChyZXMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9tdW5sb2NrYWxsKHJlcykKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jb21wYXRfNTBfX19zaWd0aW1lZHdhaXQoc2V0LCBpbmZvLCB0aW1lb3V0KSAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF81MF9fX3NpZ3RpbWVkd2FpdCggICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykoc2V0KSwgKGxvbmcgbG9uZykoaW5mbyksIChsb25nIGxvbmcpKHRpbWVvdXQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jb21wYXRfNTBfX19zaWd0aW1lZHdhaXQocmVzLCBzZXQsIGluZm8sICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dCkgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF81MF9fX3NpZ3RpbWVkd2FpdCggICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKHNldCksIChsb25nIGxvbmcpKGluZm8pLCAobG9uZyBsb25nKSh0aW1lb3V0KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zaWdxdWV1ZWluZm8ocGlkLCBpbmZvKSAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NpZ3F1ZXVlaW5mbygobG9uZyBsb25nKShwaWQpLCAobG9uZyBsb25nKShpbmZvKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfc2lncXVldWVpbmZvKHJlcywgcGlkLCBpbmZvKSAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zaWdxdWV1ZWluZm8ocmVzLCAobG9uZyBsb25nKShwaWQpLCAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoaW5mbykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfbW9kY3RsKGNtZCwgYXJnKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9tb2RjdGwoKGxvbmcgbG9uZykoY21kKSwgKGxvbmcgbG9uZykoYXJnKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfbW9kY3RsKHJlcywgY21kLCBhcmcpICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9tb2RjdGwocmVzLCAobG9uZyBsb25nKShjbWQpLCAobG9uZyBsb25nKShhcmcpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX19rc2VtX2luaXQodmFsdWUsIGlkcCkgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX2tzZW1faW5pdCgobG9uZyBsb25nKSh2YWx1ZSksIChsb25nIGxvbmcpKGlkcCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X19rc2VtX2luaXQocmVzLCB2YWx1ZSwgaWRwKSAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX2tzZW1faW5pdChyZXMsIChsb25nIGxvbmcpKHZhbHVlKSwgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShpZHApKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX19rc2VtX29wZW4obmFtZSwgb2ZsYWcsIG1vZGUsIHZhbHVlLCBpZHApICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX2tzZW1fb3BlbiggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShuYW1lKSwgKGxvbmcgbG9uZykob2ZsYWcpLCAobG9uZyBsb25nKShtb2RlKSwgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKSh2YWx1ZSksIChsb25nIGxvbmcpKGlkcCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X19rc2VtX29wZW4ocmVzLCBuYW1lLCBvZmxhZywgbW9kZSwgdmFsdWUsICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX2tzZW1fb3BlbiggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykobmFtZSksIChsb25nIGxvbmcpKG9mbGFnKSwgKGxvbmcgbG9uZykobW9kZSksICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKHZhbHVlKSwgKGxvbmcgbG9uZykoaWRwKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9fa3NlbV91bmxpbmsobmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19rc2VtX3VubGluaygobG9uZyBsb25nKShuYW1lKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfX2tzZW1fdW5saW5rKHJlcywgbmFtZSkgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fa3NlbV91bmxpbmsocmVzLCAobG9uZyBsb25nKShuYW1lKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9fa3NlbV9jbG9zZShpZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19rc2VtX2Nsb3NlKChsb25nIGxvbmcpKGlkKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfX2tzZW1fY2xvc2UocmVzLCBpZCkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fa3NlbV9jbG9zZShyZXMsIChsb25nIGxvbmcpKGlkKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9fa3NlbV9wb3N0KGlkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19rc2VtX3Bvc3QoKGxvbmcgbG9uZykoaWQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9fa3NlbV9wb3N0KHJlcywgaWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19rc2VtX3Bvc3QocmVzLCAobG9uZyBsb25nKShpZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfX2tzZW1fd2FpdChpZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fa3NlbV93YWl0KChsb25nIGxvbmcpKGlkKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfX2tzZW1fd2FpdChyZXMsIGlkKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fa3NlbV93YWl0KHJlcywgKGxvbmcgbG9uZykoaWQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX19rc2VtX3RyeXdhaXQoaWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX2tzZW1fdHJ5d2FpdCgobG9uZyBsb25nKShpZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X19rc2VtX3RyeXdhaXQocmVzLCBpZCkgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX2tzZW1fdHJ5d2FpdChyZXMsIChsb25nIGxvbmcpKGlkKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9fa3NlbV9nZXR2YWx1ZShpZCwgdmFsdWUpICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19rc2VtX2dldHZhbHVlKChsb25nIGxvbmcpKGlkKSwgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHZhbHVlKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfX2tzZW1fZ2V0dmFsdWUocmVzLCBpZCwgdmFsdWUpICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fa3NlbV9nZXR2YWx1ZShyZXMsIChsb25nIGxvbmcpKGlkKSwgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKSh2YWx1ZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfX2tzZW1fZGVzdHJveShpZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fa3NlbV9kZXN0cm95KChsb25nIGxvbmcpKGlkKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfX2tzZW1fZGVzdHJveShyZXMsIGlkKSAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fa3NlbV9kZXN0cm95KHJlcywgKGxvbmcgbG9uZykoaWQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX19rc2VtX3RpbWVkd2FpdChpZCwgYWJzdGltZSkgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX2tzZW1fdGltZWR3YWl0KChsb25nIGxvbmcpKGlkKSwgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGFic3RpbWUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9fa3NlbV90aW1lZHdhaXQocmVzLCBpZCwgYWJzdGltZSkgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19rc2VtX3RpbWVkd2FpdChyZXMsIChsb25nIGxvbmcpKGlkKSwgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShhYnN0aW1lKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9tcV9vcGVuKG5hbWUsIG9mbGFnLCBtb2RlLCBhdHRyKSAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX21xX29wZW4oKGxvbmcgbG9uZykobmFtZSksIChsb25nIGxvbmcpKG9mbGFnKSwgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykobW9kZSksIChsb25nIGxvbmcpKGF0dHIpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9tcV9vcGVuKHJlcywgbmFtZSwgb2ZsYWcsIG1vZGUsIGF0dHIpICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX21xX29wZW4ocmVzLCAobG9uZyBsb25nKShuYW1lKSwgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykob2ZsYWcpLCAobG9uZyBsb25nKShtb2RlKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoYXR0cikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfbXFfY2xvc2UobXFkZXMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9tcV9jbG9zZSgobG9uZyBsb25nKShtcWRlcykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X21xX2Nsb3NlKHJlcywgbXFkZXMpICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbXFfY2xvc2UocmVzLCAobG9uZyBsb25nKShtcWRlcykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfbXFfdW5saW5rKG5hbWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9tcV91bmxpbmsoKGxvbmcgbG9uZykobmFtZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X21xX3VubGluayhyZXMsIG5hbWUpICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbXFfdW5saW5rKHJlcywgKGxvbmcgbG9uZykobmFtZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfbXFfZ2V0YXR0cihtcWRlcywgbXFzdGF0KSAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9tcV9nZXRhdHRyKChsb25nIGxvbmcpKG1xZGVzKSwgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKG1xc3RhdCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X21xX2dldGF0dHIocmVzLCBtcWRlcywgbXFzdGF0KSAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbXFfZ2V0YXR0cihyZXMsIChsb25nIGxvbmcpKG1xZGVzKSwgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShtcXN0YXQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX21xX3NldGF0dHIobXFkZXMsIG1xc3RhdCwgb21xc3RhdCkgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbXFfc2V0YXR0ciggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShtcWRlcyksIChsb25nIGxvbmcpKG1xc3RhdCksIChsb25nIGxvbmcpKG9tcXN0YXQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9tcV9zZXRhdHRyKHJlcywgbXFkZXMsIG1xc3RhdCwgb21xc3RhdCkgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX21xX3NldGF0dHIoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKG1xZGVzKSwgKGxvbmcgbG9uZykobXFzdGF0KSwgKGxvbmcgbG9uZykob21xc3RhdCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfbXFfbm90aWZ5KG1xZGVzLCBub3RpZmljYXRpb24pICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9tcV9ub3RpZnkoKGxvbmcgbG9uZykobXFkZXMpLCAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykobm90aWZpY2F0aW9uKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfbXFfbm90aWZ5KHJlcywgbXFkZXMsIG5vdGlmaWNhdGlvbikgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9tcV9ub3RpZnkocmVzLCAobG9uZyBsb25nKShtcWRlcyksICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykobm90aWZpY2F0aW9uKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9tcV9zZW5kKG1xZGVzLCBtc2dfcHRyLCBtc2dfbGVuLCBtc2dfcHJpbykgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX21xX3NlbmQoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykobXFkZXMpLCAobG9uZyBsb25nKShtc2dfcHRyKSwgKGxvbmcgbG9uZykobXNnX2xlbiksICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykobXNnX3ByaW8pKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9tcV9zZW5kKHJlcywgbXFkZXMsIG1zZ19wdHIsIG1zZ19sZW4sICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ19wcmlvKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX21xX3NlbmQoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKG1xZGVzKSwgKGxvbmcgbG9uZykobXNnX3B0ciksIChsb25nIGxvbmcpKG1zZ19sZW4pLCAgICAgXAogICAgICAobG9uZyBsb25nKShtc2dfcHJpbykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfbXFfcmVjZWl2ZShtcWRlcywgbXNnX3B0ciwgbXNnX2xlbiwgbXNnX3ByaW8pICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9tcV9yZWNlaXZlKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKG1xZGVzKSwgKGxvbmcgbG9uZykobXNnX3B0ciksIChsb25nIGxvbmcpKG1zZ19sZW4pLCAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKG1zZ19wcmlvKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfbXFfcmVjZWl2ZShyZXMsIG1xZGVzLCBtc2dfcHRyLCBtc2dfbGVuLCAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2dfcHJpbykgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9tcV9yZWNlaXZlKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShtcWRlcyksIChsb25nIGxvbmcpKG1zZ19wdHIpLCAobG9uZyBsb25nKShtc2dfbGVuKSwgICAgIFwKICAgICAgKGxvbmcgbG9uZykobXNnX3ByaW8pKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2NvbXBhdF81MF9tcV90aW1lZHNlbmQoICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgbXFkZXMsIG1zZ19wdHIsIG1zZ19sZW4sIG1zZ19wcmlvLCBhYnNfdGltZW91dCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzUwX21xX3RpbWVkc2VuZCggICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShtcWRlcyksIChsb25nIGxvbmcpKG1zZ19wdHIpLCAobG9uZyBsb25nKShtc2dfbGVuKSwgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShtc2dfcHJpbyksIChsb25nIGxvbmcpKGFic190aW1lb3V0KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY29tcGF0XzUwX21xX3RpbWVkc2VuZCggICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHJlcywgbXFkZXMsIG1zZ19wdHIsIG1zZ19sZW4sIG1zZ19wcmlvLCBhYnNfdGltZW91dCkgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfNTBfbXFfdGltZWRzZW5kKCAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShtcWRlcyksIChsb25nIGxvbmcpKG1zZ19wdHIpLCAobG9uZyBsb25nKShtc2dfbGVuKSwgICAgIFwKICAgICAgKGxvbmcgbG9uZykobXNnX3ByaW8pLCAobG9uZyBsb25nKShhYnNfdGltZW91dCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY29tcGF0XzUwX21xX3RpbWVkcmVjZWl2ZSggICAgICAgICAgICAgICAgICAgICBcCiAgICBtcWRlcywgbXNnX3B0ciwgbXNnX2xlbiwgbXNnX3ByaW8sIGFic190aW1lb3V0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfNTBfbXFfdGltZWRyZWNlaXZlKCAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKG1xZGVzKSwgKGxvbmcgbG9uZykobXNnX3B0ciksIChsb25nIGxvbmcpKG1zZ19sZW4pLCAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKG1zZ19wcmlvKSwgKGxvbmcgbG9uZykoYWJzX3RpbWVvdXQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jb21wYXRfNTBfbXFfdGltZWRyZWNlaXZlKCAgICAgICAgICAgICAgICAgICAgXAogICAgcmVzLCBtcWRlcywgbXNnX3B0ciwgbXNnX2xlbiwgbXNnX3ByaW8sIGFic190aW1lb3V0KSAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF81MF9tcV90aW1lZHJlY2VpdmUoICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKG1xZGVzKSwgKGxvbmcgbG9uZykobXNnX3B0ciksIChsb25nIGxvbmcpKG1zZ19sZW4pLCAgICAgXAogICAgICAobG9uZyBsb25nKShtc2dfcHJpbyksIChsb25nIGxvbmcpKGFic190aW1lb3V0KSkKLyogc3lzY2FsbCAyNjcgaGFzIGJlZW4gc2tpcHBlZCAqLwovKiBzeXNjYWxsIDI2OCBoYXMgYmVlbiBza2lwcGVkICovCi8qIHN5c2NhbGwgMjY5IGhhcyBiZWVuIHNraXBwZWQgKi8KI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9fX3Bvc2l4X3JlbmFtZShmcm9tLCB0bykgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fcG9zaXhfcmVuYW1lKChsb25nIGxvbmcpKGZyb20pLCAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHRvKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfX19wb3NpeF9yZW5hbWUocmVzLCBmcm9tLCB0bykgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX3Bvc2l4X3JlbmFtZShyZXMsIChsb25nIGxvbmcpKGZyb20pLCAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKSh0bykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfc3dhcGN0bChjbWQsIGFyZywgbWlzYykgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zd2FwY3RsKChsb25nIGxvbmcpKGNtZCksIChsb25nIGxvbmcpKGFyZyksICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKG1pc2MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9zd2FwY3RsKHJlcywgY21kLCBhcmcsIG1pc2MpICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3N3YXBjdGwocmVzLCAobG9uZyBsb25nKShjbWQpLCAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoYXJnKSwgKGxvbmcgbG9uZykobWlzYykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY29tcGF0XzMwX2dldGRlbnRzKGZkLCBidWYsIGNvdW50KSAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfMzBfZ2V0ZGVudHMoICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGZkKSwgKGxvbmcgbG9uZykoYnVmKSwgKGxvbmcgbG9uZykoY291bnQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jb21wYXRfMzBfZ2V0ZGVudHMocmVzLCBmZCwgYnVmLCBjb3VudCkgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF8zMF9nZXRkZW50cyggICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKGZkKSwgKGxvbmcgbG9uZykoYnVmKSwgKGxvbmcgbG9uZykoY291bnQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX21pbmhlcml0KGFkZHIsIGxlbiwgaW5oZXJpdCkgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbWluaGVyaXQoKGxvbmcgbG9uZykoYWRkciksIChsb25nIGxvbmcpKGxlbiksICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoaW5oZXJpdCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X21pbmhlcml0KHJlcywgYWRkciwgbGVuLCBpbmhlcml0KSAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbWluaGVyaXQoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykoYWRkciksIChsb25nIGxvbmcpKGxlbiksIChsb25nIGxvbmcpKGluaGVyaXQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2xjaG1vZChwYXRoLCBtb2RlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbGNobW9kKChsb25nIGxvbmcpKHBhdGgpLCAobG9uZyBsb25nKShtb2RlKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfbGNobW9kKHJlcywgcGF0aCwgbW9kZSkgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9sY2htb2QocmVzLCAobG9uZyBsb25nKShwYXRoKSwgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykobW9kZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfbGNob3duKHBhdGgsIHVpZCwgZ2lkKSAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9sY2hvd24oKGxvbmcgbG9uZykocGF0aCksIChsb25nIGxvbmcpKHVpZCksICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoZ2lkKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfbGNob3duKHJlcywgcGF0aCwgdWlkLCBnaWQpICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9sY2hvd24ocmVzLCAobG9uZyBsb25nKShwYXRoKSwgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykodWlkKSwgKGxvbmcgbG9uZykoZ2lkKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jb21wYXRfNTBfbHV0aW1lcyhwYXRoLCB0cHRyKSAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF81MF9sdXRpbWVzKChsb25nIGxvbmcpKHBhdGgpLCAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHRwdHIpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jb21wYXRfNTBfbHV0aW1lcyhyZXMsIHBhdGgsIHRwdHIpICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF81MF9sdXRpbWVzKHJlcywgKGxvbmcgbG9uZykocGF0aCksICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHRwdHIpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX19fbXN5bmMxMyhhZGRyLCBsZW4sIGZsYWdzKSAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19tc3luYzEzKChsb25nIGxvbmcpKGFkZHIpLCAobG9uZyBsb25nKShsZW4pLCAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGZsYWdzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfX19tc3luYzEzKHJlcywgYWRkciwgbGVuLCBmbGFncykgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX21zeW5jMTMoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShhZGRyKSwgKGxvbmcgbG9uZykobGVuKSwgKGxvbmcgbG9uZykoZmxhZ3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2NvbXBhdF8zMF9fX3N0YXQxMyhwYXRoLCB1YikgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzMwX19fc3RhdDEzKChsb25nIGxvbmcpKHBhdGgpLCAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHViKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY29tcGF0XzMwX19fc3RhdDEzKHJlcywgcGF0aCwgdWIpICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfMzBfX19zdGF0MTMocmVzLCAobG9uZyBsb25nKShwYXRoKSwgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykodWIpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2NvbXBhdF8zMF9fX2ZzdGF0MTMoZmQsIHNiKSAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzMwX19fZnN0YXQxMygobG9uZyBsb25nKShmZCksICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShzYikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF8zMF9fX2ZzdGF0MTMocmVzLCBmZCwgc2IpICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzMwX19fZnN0YXQxMyhyZXMsIChsb25nIGxvbmcpKGZkKSwgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShzYikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY29tcGF0XzMwX19fbHN0YXQxMyhwYXRoLCB1YikgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfMzBfX19sc3RhdDEzKChsb25nIGxvbmcpKHBhdGgpLCAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHViKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY29tcGF0XzMwX19fbHN0YXQxMyhyZXMsIHBhdGgsIHViKSAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfMzBfX19sc3RhdDEzKHJlcywgKGxvbmcgbG9uZykocGF0aCksICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHViKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9fX3NpZ2FsdHN0YWNrMTQobnNzLCBvc3MpICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fc2lnYWx0c3RhY2sxNCgobG9uZyBsb25nKShuc3MpLCAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShvc3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9fX3NpZ2FsdHN0YWNrMTQocmVzLCBuc3MsIG9zcykgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fc2lnYWx0c3RhY2sxNChyZXMsIChsb25nIGxvbmcpKG5zcyksICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShvc3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX19fdmZvcmsxNCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX192Zm9yazE0KCkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfX192Zm9yazE0KHJlcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX3Zmb3JrMTQocmVzKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX19fcG9zaXhfY2hvd24ocGF0aCwgdWlkLCBnaWQpICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19wb3NpeF9jaG93biggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShwYXRoKSwgKGxvbmcgbG9uZykodWlkKSwgKGxvbmcgbG9uZykoZ2lkKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfX19wb3NpeF9jaG93bihyZXMsIHBhdGgsIHVpZCwgZ2lkKSAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX3Bvc2l4X2Nob3duKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShwYXRoKSwgKGxvbmcgbG9uZykodWlkKSwgKGxvbmcgbG9uZykoZ2lkKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9fX3Bvc2l4X2ZjaG93bihmZCwgdWlkLCBnaWQpICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fcG9zaXhfZmNob3duKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykoZmQpLCAobG9uZyBsb25nKSh1aWQpLCAobG9uZyBsb25nKShnaWQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9fX3Bvc2l4X2ZjaG93bihyZXMsIGZkLCB1aWQsIGdpZCkgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fcG9zaXhfZmNob3duKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKGZkKSwgKGxvbmcgbG9uZykodWlkKSwgKGxvbmcgbG9uZykoZ2lkKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9fX3Bvc2l4X2xjaG93bihwYXRoLCB1aWQsIGdpZCkgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fcG9zaXhfbGNob3duKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykocGF0aCksIChsb25nIGxvbmcpKHVpZCksIChsb25nIGxvbmcpKGdpZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X19fcG9zaXhfbGNob3duKHJlcywgcGF0aCwgdWlkLCBnaWQpICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX19wb3NpeF9sY2hvd24oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykocGF0aCksIChsb25nIGxvbmcpKHVpZCksIChsb25nIGxvbmcpKGdpZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZ2V0c2lkKHBpZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9nZXRzaWQoKGxvbmcgbG9uZykocGlkKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZ2V0c2lkKHJlcywgcGlkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9nZXRzaWQocmVzLCAobG9uZyBsb25nKShwaWQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX19fY2xvbmUoZmxhZ3MsIHN0YWNrKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19jbG9uZSgobG9uZyBsb25nKShmbGFncyksIChsb25nIGxvbmcpKHN0YWNrKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfX19jbG9uZShyZXMsIGZsYWdzLCBzdGFjaykgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX2Nsb25lKHJlcywgKGxvbmcgbG9uZykoZmxhZ3MpLCAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHN0YWNrKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9ma3RyYWNlKGZkLCBvcHMsIGZhY3MsIHBpZCkgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2ZrdHJhY2UoKGxvbmcgbG9uZykoZmQpLCAobG9uZyBsb25nKShvcHMpLCAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoZmFjcyksIChsb25nIGxvbmcpKHBpZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ZrdHJhY2UocmVzLCBmZCwgb3BzLCBmYWNzLCBwaWQpICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZmt0cmFjZShyZXMsIChsb25nIGxvbmcpKGZkKSwgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShvcHMpLCAobG9uZyBsb25nKShmYWNzKSwgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShwaWQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3ByZWFkdihmZCwgaW92cCwgaW92Y250LCBQQUQsIG9mZnNldCkgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfcHJlYWR2KChsb25nIGxvbmcpKGZkKSwgKGxvbmcgbG9uZykoaW92cCksICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGlvdmNudCksIChsb25nIGxvbmcpKFBBRCksICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKG9mZnNldCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3ByZWFkdihyZXMsIGZkLCBpb3ZwLCBpb3ZjbnQsIFBBRCwgb2Zmc2V0KSAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcHJlYWR2KHJlcywgKGxvbmcgbG9uZykoZmQpLCAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGlvdnApLCAobG9uZyBsb25nKShpb3ZjbnQpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKFBBRCksIChsb25nIGxvbmcpKG9mZnNldCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfcHdyaXRldihmZCwgaW92cCwgaW92Y250LCBQQUQsIG9mZnNldCkgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9wd3JpdGV2KChsb25nIGxvbmcpKGZkKSwgKGxvbmcgbG9uZykoaW92cCksICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGlvdmNudCksIChsb25nIGxvbmcpKFBBRCksICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKG9mZnNldCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3B3cml0ZXYocmVzLCBmZCwgaW92cCwgaW92Y250LCBQQUQsIG9mZnNldCkgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcHdyaXRldiggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykoZmQpLCAobG9uZyBsb25nKShpb3ZwKSwgKGxvbmcgbG9uZykoaW92Y250KSwgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKFBBRCksIChsb25nIGxvbmcpKG9mZnNldCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY29tcGF0XzE2X19fc2lnYWN0aW9uMTQoc2lnbnVtLCBuc2EsIG9zYSkgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfMTZfX19zaWdhY3Rpb24xNCggICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKHNpZ251bSksIChsb25nIGxvbmcpKG5zYSksIChsb25nIGxvbmcpKG9zYSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF8xNl9fX3NpZ2FjdGlvbjE0KHJlcywgc2lnbnVtLCBuc2EsICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zYSkgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzE2X19fc2lnYWN0aW9uMTQoICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykoc2lnbnVtKSwgKGxvbmcgbG9uZykobnNhKSwgKGxvbmcgbG9uZykob3NhKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9fX3NpZ3BlbmRpbmcxNChzZXQpICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fc2lncGVuZGluZzE0KChsb25nIGxvbmcpKHNldCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X19fc2lncGVuZGluZzE0KHJlcywgc2V0KSAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX19zaWdwZW5kaW5nMTQocmVzLCAobG9uZyBsb25nKShzZXQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX19fc2lncHJvY21hc2sxNChob3csIHNldCwgb3NldCkgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19zaWdwcm9jbWFzazE0KCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShob3cpLCAobG9uZyBsb25nKShzZXQpLCAobG9uZyBsb25nKShvc2V0KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfX19zaWdwcm9jbWFzazE0KHJlcywgaG93LCBzZXQsIG9zZXQpICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX3NpZ3Byb2NtYXNrMTQoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShob3cpLCAobG9uZyBsb25nKShzZXQpLCAobG9uZyBsb25nKShvc2V0KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9fX3NpZ3N1c3BlbmQxNChzZXQpICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fc2lnc3VzcGVuZDE0KChsb25nIGxvbmcpKHNldCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X19fc2lnc3VzcGVuZDE0KHJlcywgc2V0KSAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX19zaWdzdXNwZW5kMTQocmVzLCAobG9uZyBsb25nKShzZXQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2NvbXBhdF8xNl9fX3NpZ3JldHVybjE0KHNpZ2NudHhwKSAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzE2X19fc2lncmV0dXJuMTQoKGxvbmcgbG9uZykoc2lnY250eHApKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jb21wYXRfMTZfX19zaWdyZXR1cm4xNChyZXMsIHNpZ2NudHhwKSAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF8xNl9fX3NpZ3JldHVybjE0KHJlcywgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHNpZ2NudHhwKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9fX2dldGN3ZChidWZwLCBsZW5ndGgpICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fZ2V0Y3dkKChsb25nIGxvbmcpKGJ1ZnApLCAobG9uZyBsb25nKShsZW5ndGgpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9fX2dldGN3ZChyZXMsIGJ1ZnAsIGxlbmd0aCkgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fZ2V0Y3dkKHJlcywgKGxvbmcgbG9uZykoYnVmcCksICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGxlbmd0aCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZmNocm9vdChmZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9mY2hyb290KChsb25nIGxvbmcpKGZkKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZmNocm9vdChyZXMsIGZkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9mY2hyb290KHJlcywgKGxvbmcgbG9uZykoZmQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2NvbXBhdF8zMF9maG9wZW4oZmhwLCBmbGFncykgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzMwX2Zob3BlbigobG9uZyBsb25nKShmaHApLCAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF8zMF9maG9wZW4ocmVzLCBmaHAsIGZsYWdzKSAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzMwX2Zob3BlbihyZXMsIChsb25nIGxvbmcpKGZocCksICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY29tcGF0XzMwX2Zoc3RhdChmaHAsIHNiKSAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfMzBfZmhzdGF0KChsb25nIGxvbmcpKGZocCksICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHNiKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY29tcGF0XzMwX2Zoc3RhdChyZXMsIGZocCwgc2IpICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfMzBfZmhzdGF0KHJlcywgKGxvbmcgbG9uZykoZmhwKSwgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHNiKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jb21wYXRfMjBfZmhzdGF0ZnMoZmhwLCBidWYpICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF8yMF9maHN0YXRmcygobG9uZyBsb25nKShmaHApLCAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShidWYpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jb21wYXRfMjBfZmhzdGF0ZnMocmVzLCBmaHAsIGJ1ZikgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF8yMF9maHN0YXRmcyhyZXMsIChsb25nIGxvbmcpKGZocCksICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShidWYpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2NvbXBhdF81MF9fX19fc2VtY3RsMTMoc2VtaWQsIHNlbW51bSwgY21kLCAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnKSAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzUwX19fX19zZW1jdGwxMyggICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShzZW1pZCksIChsb25nIGxvbmcpKHNlbW51bSksIChsb25nIGxvbmcpKGNtZCksICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShhcmcpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jb21wYXRfNTBfX19fX3NlbWN0bDEzKHJlcywgc2VtaWQsIHNlbW51bSwgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZCwgYXJnKSAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF81MF9fX19fc2VtY3RsMTMoICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKHNlbWlkKSwgKGxvbmcgbG9uZykoc2VtbnVtKSwgKGxvbmcgbG9uZykoY21kKSwgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShhcmcpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2NvbXBhdF81MF9fX21zZ2N0bDEzKG1zcWlkLCBjbWQsIGJ1ZikgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzUwX19fbXNnY3RsMTMoICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShtc3FpZCksIChsb25nIGxvbmcpKGNtZCksIChsb25nIGxvbmcpKGJ1ZikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF81MF9fX21zZ2N0bDEzKHJlcywgbXNxaWQsIGNtZCwgYnVmKSAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzUwX19fbXNnY3RsMTMoICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykobXNxaWQpLCAobG9uZyBsb25nKShjbWQpLCAobG9uZyBsb25nKShidWYpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2NvbXBhdF81MF9fX3NobWN0bDEzKHNobWlkLCBjbWQsIGJ1ZikgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzUwX19fc2htY3RsMTMoICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShzaG1pZCksIChsb25nIGxvbmcpKGNtZCksIChsb25nIGxvbmcpKGJ1ZikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF81MF9fX3NobWN0bDEzKHJlcywgc2htaWQsIGNtZCwgYnVmKSAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzUwX19fc2htY3RsMTMoICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykoc2htaWQpLCAobG9uZyBsb25nKShjbWQpLCAobG9uZyBsb25nKShidWYpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2xjaGZsYWdzKHBhdGgsIGZsYWdzKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbGNoZmxhZ3MoKGxvbmcgbG9uZykocGF0aCksIChsb25nIGxvbmcpKGZsYWdzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfbGNoZmxhZ3MocmVzLCBwYXRoLCBmbGFncykgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9sY2hmbGFncyhyZXMsIChsb25nIGxvbmcpKHBhdGgpLCAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaXNzZXR1Z2lkKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9pc3NldHVnaWQoKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pc3NldHVnaWQocmVzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2lzc2V0dWdpZChyZXMpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfdXRyYWNlKGxhYmVsLCBhZGRyLCBsZW4pICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF91dHJhY2UoKGxvbmcgbG9uZykobGFiZWwpLCAobG9uZyBsb25nKShhZGRyKSwgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykobGVuKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfdXRyYWNlKHJlcywgbGFiZWwsIGFkZHIsIGxlbikgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF91dHJhY2UocmVzLCAobG9uZyBsb25nKShsYWJlbCksICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoYWRkciksIChsb25nIGxvbmcpKGxlbikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZ2V0Y29udGV4dCh1Y3ApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9nZXRjb250ZXh0KChsb25nIGxvbmcpKHVjcCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2dldGNvbnRleHQocmVzLCB1Y3ApICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZ2V0Y29udGV4dChyZXMsIChsb25nIGxvbmcpKHVjcCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfc2V0Y29udGV4dCh1Y3ApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zZXRjb250ZXh0KChsb25nIGxvbmcpKHVjcCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NldGNvbnRleHQocmVzLCB1Y3ApICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2V0Y29udGV4dChyZXMsIChsb25nIGxvbmcpKHVjcCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfX2x3cF9jcmVhdGUodWNwLCBmbGFncywgbmV3X2x3cCkgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fbHdwX2NyZWF0ZSggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKHVjcCksIChsb25nIGxvbmcpKGZsYWdzKSwgKGxvbmcgbG9uZykobmV3X2x3cCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X19sd3BfY3JlYXRlKHJlcywgdWNwLCBmbGFncywgbmV3X2x3cCkgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX2x3cF9jcmVhdGUoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykodWNwKSwgKGxvbmcgbG9uZykoZmxhZ3MpLCAobG9uZyBsb25nKShuZXdfbHdwKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9fbHdwX2V4aXQoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19sd3BfZXhpdCgpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X19sd3BfZXhpdChyZXMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX2x3cF9leGl0KHJlcykKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9fbHdwX3NlbGYoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19sd3Bfc2VsZigpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X19sd3Bfc2VsZihyZXMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX2x3cF9zZWxmKHJlcykKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9fbHdwX3dhaXQod2FpdF9mb3IsIGRlcGFydGVkKSAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19sd3Bfd2FpdCgobG9uZyBsb25nKSh3YWl0X2ZvciksICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShkZXBhcnRlZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X19sd3Bfd2FpdChyZXMsIHdhaXRfZm9yLCBkZXBhcnRlZCkgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX2x3cF93YWl0KHJlcywgKGxvbmcgbG9uZykod2FpdF9mb3IpLCAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGRlcGFydGVkKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9fbHdwX3N1c3BlbmQodGFyZ2V0KSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19sd3Bfc3VzcGVuZCgobG9uZyBsb25nKSh0YXJnZXQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9fbHdwX3N1c3BlbmQocmVzLCB0YXJnZXQpICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19sd3Bfc3VzcGVuZChyZXMsIChsb25nIGxvbmcpKHRhcmdldCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfX2x3cF9jb250aW51ZSh0YXJnZXQpICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fbHdwX2NvbnRpbnVlKChsb25nIGxvbmcpKHRhcmdldCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X19sd3BfY29udGludWUocmVzLCB0YXJnZXQpICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX2x3cF9jb250aW51ZShyZXMsIChsb25nIGxvbmcpKHRhcmdldCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfX2x3cF93YWtldXAodGFyZ2V0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fbHdwX3dha2V1cCgobG9uZyBsb25nKSh0YXJnZXQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9fbHdwX3dha2V1cChyZXMsIHRhcmdldCkgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19sd3Bfd2FrZXVwKHJlcywgKGxvbmcgbG9uZykodGFyZ2V0KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9fbHdwX2dldHByaXZhdGUoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19sd3BfZ2V0cHJpdmF0ZSgpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X19sd3BfZ2V0cHJpdmF0ZShyZXMpICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX2x3cF9nZXRwcml2YXRlKHJlcykKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9fbHdwX3NldHByaXZhdGUocHRyKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19sd3Bfc2V0cHJpdmF0ZSgobG9uZyBsb25nKShwdHIpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9fbHdwX3NldHByaXZhdGUocmVzLCBwdHIpICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19sd3Bfc2V0cHJpdmF0ZShyZXMsIChsb25nIGxvbmcpKHB0cikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfX2x3cF9raWxsKHRhcmdldCwgc2lnbm8pICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fbHdwX2tpbGwoKGxvbmcgbG9uZykodGFyZ2V0KSwgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoc2lnbm8pKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9fbHdwX2tpbGwocmVzLCB0YXJnZXQsIHNpZ25vKSAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19sd3Bfa2lsbChyZXMsIChsb25nIGxvbmcpKHRhcmdldCksICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShzaWdubykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfX2x3cF9kZXRhY2godGFyZ2V0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fbHdwX2RldGFjaCgobG9uZyBsb25nKSh0YXJnZXQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9fbHdwX2RldGFjaChyZXMsIHRhcmdldCkgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19sd3BfZGV0YWNoKHJlcywgKGxvbmcgbG9uZykodGFyZ2V0KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jb21wYXRfNTBfX2x3cF9wYXJrKHRzLCB1bnBhcmssIGhpbnQsICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVucGFya2hpbnQpICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF81MF9fbHdwX3BhcmsoICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykodHMpLCAobG9uZyBsb25nKSh1bnBhcmspLCAobG9uZyBsb25nKShoaW50KSwgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykodW5wYXJraGludCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF81MF9fbHdwX3BhcmsocmVzLCB0cywgdW5wYXJrLCBoaW50LCAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5wYXJraGludCkgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzUwX19sd3BfcGFyayggICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykodHMpLCAobG9uZyBsb25nKSh1bnBhcmspLCAobG9uZyBsb25nKShoaW50KSwgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKHVucGFya2hpbnQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX19sd3BfdW5wYXJrKHRhcmdldCwgaGludCkgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX2x3cF91bnBhcmsoKGxvbmcgbG9uZykodGFyZ2V0KSwgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoaGludCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X19sd3BfdW5wYXJrKHJlcywgdGFyZ2V0LCBoaW50KSAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX2x3cF91bnBhcmsocmVzLCAobG9uZyBsb25nKSh0YXJnZXQpLCAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoaGludCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfX2x3cF91bnBhcmtfYWxsKHRhcmdldHMsIG50YXJnZXRzLCBoaW50KSAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fbHdwX3VucGFya19hbGwoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKHRhcmdldHMpLCAobG9uZyBsb25nKShudGFyZ2V0cyksIChsb25nIGxvbmcpKGhpbnQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9fbHdwX3VucGFya19hbGwocmVzLCB0YXJnZXRzLCBudGFyZ2V0cywgaGludCkgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19sd3BfdW5wYXJrX2FsbCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKHRhcmdldHMpLCAobG9uZyBsb25nKShudGFyZ2V0cyksIChsb25nIGxvbmcpKGhpbnQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX19sd3Bfc2V0bmFtZSh0YXJnZXQsIG5hbWUpICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX2x3cF9zZXRuYW1lKChsb25nIGxvbmcpKHRhcmdldCksICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKG5hbWUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9fbHdwX3NldG5hbWUocmVzLCB0YXJnZXQsIG5hbWUpICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19sd3Bfc2V0bmFtZShyZXMsIChsb25nIGxvbmcpKHRhcmdldCksICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShuYW1lKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9fbHdwX2dldG5hbWUodGFyZ2V0LCBuYW1lLCBsZW4pICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19sd3BfZ2V0bmFtZSggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykodGFyZ2V0KSwgKGxvbmcgbG9uZykobmFtZSksIChsb25nIGxvbmcpKGxlbikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X19sd3BfZ2V0bmFtZShyZXMsIHRhcmdldCwgbmFtZSwgbGVuKSAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX2x3cF9nZXRuYW1lKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykodGFyZ2V0KSwgKGxvbmcgbG9uZykobmFtZSksIChsb25nIGxvbmcpKGxlbikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfX2x3cF9jdGwoZmVhdHVyZXMsIGFkZHJlc3MpICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fbHdwX2N0bCgobG9uZyBsb25nKShmZWF0dXJlcyksICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShhZGRyZXNzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfX2x3cF9jdGwocmVzLCBmZWF0dXJlcywgYWRkcmVzcykgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fbHdwX2N0bChyZXMsIChsb25nIGxvbmcpKGZlYXR1cmVzKSwgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShhZGRyZXNzKSkKLyogc3lzY2FsbCAzMjYgaGFzIGJlZW4gc2tpcHBlZCAqLwovKiBzeXNjYWxsIDMyNyBoYXMgYmVlbiBza2lwcGVkICovCi8qIHN5c2NhbGwgMzI4IGhhcyBiZWVuIHNraXBwZWQgKi8KLyogc3lzY2FsbCAzMjkgaGFzIGJlZW4gc2tpcHBlZCAqLwojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2NvbXBhdF82MF9zYV9yZWdpc3RlcihuZXd2LCBvbGR2LCBmbGFncywgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja2luZm9fb2Zmc2V0KSAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzYwX3NhX3JlZ2lzdGVyKCAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShuZXd2KSwgKGxvbmcgbG9uZykob2xkdiksIChsb25nIGxvbmcpKGZsYWdzKSwgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShzdGFja2luZm9fb2Zmc2V0KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY29tcGF0XzYwX3NhX3JlZ2lzdGVyKHJlcywgbmV3diwgb2xkdiwgZmxhZ3MsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNraW5mb19vZmZzZXQpICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfNjBfc2FfcmVnaXN0ZXIoICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShuZXd2KSwgKGxvbmcgbG9uZykob2xkdiksIChsb25nIGxvbmcpKGZsYWdzKSwgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykoc3RhY2tpbmZvX29mZnNldCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY29tcGF0XzYwX3NhX3N0YWNrcyhudW0sIHN0YWNrcykgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfNjBfc2Ffc3RhY2tzKChsb25nIGxvbmcpKG51bSksICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHN0YWNrcykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF82MF9zYV9zdGFja3MocmVzLCBudW0sIHN0YWNrcykgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzYwX3NhX3N0YWNrcyhyZXMsIChsb25nIGxvbmcpKG51bSksICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShzdGFja3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2NvbXBhdF82MF9zYV9lbmFibGUoKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzYwX3NhX2VuYWJsZSgpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF82MF9zYV9lbmFibGUocmVzKSAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzYwX3NhX2VuYWJsZShyZXMpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY29tcGF0XzYwX3NhX3NldGNvbmN1cnJlbmN5KGNvbmN1cnJlbmN5KSAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfNjBfc2Ffc2V0Y29uY3VycmVuY3koICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGNvbmN1cnJlbmN5KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY29tcGF0XzYwX3NhX3NldGNvbmN1cnJlbmN5KHJlcywgY29uY3VycmVuY3kpIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfNjBfc2Ffc2V0Y29uY3VycmVuY3koICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShjb25jdXJyZW5jeSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY29tcGF0XzYwX3NhX3lpZWxkKCkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfNjBfc2FfeWllbGQoKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jb21wYXRfNjBfc2FfeWllbGQocmVzKSAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF82MF9zYV95aWVsZChyZXMpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY29tcGF0XzYwX3NhX3ByZWVtcHQoc2FfaWQpICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfNjBfc2FfcHJlZW1wdCgobG9uZyBsb25nKShzYV9pZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF82MF9zYV9wcmVlbXB0KHJlcywgc2FfaWQpICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzYwX3NhX3ByZWVtcHQocmVzLCAobG9uZyBsb25nKShzYV9pZCkpCi8qIHN5c2NhbGwgMzM2IGhhcyBiZWVuIHNraXBwZWQgKi8KLyogc3lzY2FsbCAzMzcgaGFzIGJlZW4gc2tpcHBlZCAqLwovKiBzeXNjYWxsIDMzOCBoYXMgYmVlbiBza2lwcGVkICovCi8qIHN5c2NhbGwgMzM5IGhhcyBiZWVuIHNraXBwZWQgKi8KI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9fX3NpZ2FjdGlvbl9zaWd0cmFtcChzaWdudW0sIG5zYSwgb3NhLCB0cmFtcCwgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzKSAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fc2lnYWN0aW9uX3NpZ3RyYW1wKCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykoc2lnbnVtKSwgKGxvbmcgbG9uZykobnNhKSwgKGxvbmcgbG9uZykob3NhKSwgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykodHJhbXApLCAobG9uZyBsb25nKSh2ZXJzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfX19zaWdhY3Rpb25fc2lndHJhbXAocmVzLCBzaWdudW0sIG5zYSwgb3NhLCAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbXAsIHZlcnMpICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX3NpZ2FjdGlvbl9zaWd0cmFtcCggICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShzaWdudW0pLCAobG9uZyBsb25nKShuc2EpLCAobG9uZyBsb25nKShvc2EpLCAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykodHJhbXApLCAobG9uZyBsb25nKSh2ZXJzKSkKLyogc3lzY2FsbCAzNDEgaGFzIGJlZW4gc2tpcHBlZCAqLwovKiBzeXNjYWxsIDM0MiBoYXMgYmVlbiBza2lwcGVkICovCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfcmFzY3RsKGFkZHIsIGxlbiwgb3ApICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9yYXNjdGwoKGxvbmcgbG9uZykoYWRkciksIChsb25nIGxvbmcpKGxlbiksICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykob3ApKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9yYXNjdGwocmVzLCBhZGRyLCBsZW4sIG9wKSAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3Jhc2N0bChyZXMsIChsb25nIGxvbmcpKGFkZHIpLCAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShsZW4pLCAobG9uZyBsb25nKShvcCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfa3F1ZXVlKCkgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9rcXVldWUoKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9rcXVldWUocmVzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2txdWV1ZShyZXMpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY29tcGF0XzUwX2tldmVudChmZCwgY2hhbmdlbGlzdCwgbmNoYW5nZXMsICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudGxpc3QsIG5ldmVudHMsIHRpbWVvdXQpICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfNTBfa2V2ZW50KCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGZkKSwgKGxvbmcgbG9uZykoY2hhbmdlbGlzdCksIChsb25nIGxvbmcpKG5jaGFuZ2VzKSwgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGV2ZW50bGlzdCksIChsb25nIGxvbmcpKG5ldmVudHMpLCAobG9uZyBsb25nKSh0aW1lb3V0KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY29tcGF0XzUwX2tldmVudCggICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHJlcywgZmQsIGNoYW5nZWxpc3QsIG5jaGFuZ2VzLCBldmVudGxpc3QsIG5ldmVudHMsIHRpbWVvdXQpICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfNTBfa2V2ZW50KCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShmZCksIChsb25nIGxvbmcpKGNoYW5nZWxpc3QpLCAobG9uZyBsb25nKShuY2hhbmdlcyksICAgIFwKICAgICAgKGxvbmcgbG9uZykoZXZlbnRsaXN0KSwgKGxvbmcgbG9uZykobmV2ZW50cyksIChsb25nIGxvbmcpKHRpbWVvdXQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX19zY2hlZF9zZXRwYXJhbShwaWQsIGxpZCwgcG9saWN5LCBwYXJhbXMpICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX3NjaGVkX3NldHBhcmFtKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShwaWQpLCAobG9uZyBsb25nKShsaWQpLCAobG9uZyBsb25nKShwb2xpY3kpLCAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShwYXJhbXMpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9fc2NoZWRfc2V0cGFyYW0ocmVzLCBwaWQsIGxpZCwgcG9saWN5LCAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zKSAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19zY2hlZF9zZXRwYXJhbSggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKHBpZCksIChsb25nIGxvbmcpKGxpZCksIChsb25nIGxvbmcpKHBvbGljeSksICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShwYXJhbXMpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX19zY2hlZF9nZXRwYXJhbShwaWQsIGxpZCwgcG9saWN5LCBwYXJhbXMpICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX3NjaGVkX2dldHBhcmFtKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShwaWQpLCAobG9uZyBsb25nKShsaWQpLCAobG9uZyBsb25nKShwb2xpY3kpLCAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShwYXJhbXMpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9fc2NoZWRfZ2V0cGFyYW0ocmVzLCBwaWQsIGxpZCwgcG9saWN5LCAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zKSAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19zY2hlZF9nZXRwYXJhbSggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKHBpZCksIChsb25nIGxvbmcpKGxpZCksIChsb25nIGxvbmcpKHBvbGljeSksICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShwYXJhbXMpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX19zY2hlZF9zZXRhZmZpbml0eShwaWQsIGxpZCwgc2l6ZSwgY3B1c2V0KSAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX3NjaGVkX3NldGFmZmluaXR5KCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShwaWQpLCAobG9uZyBsb25nKShsaWQpLCAobG9uZyBsb25nKShzaXplKSwgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShjcHVzZXQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9fc2NoZWRfc2V0YWZmaW5pdHkocmVzLCBwaWQsIGxpZCwgc2l6ZSwgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1c2V0KSAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19zY2hlZF9zZXRhZmZpbml0eSggICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKHBpZCksIChsb25nIGxvbmcpKGxpZCksIChsb25nIGxvbmcpKHNpemUpLCAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShjcHVzZXQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX19zY2hlZF9nZXRhZmZpbml0eShwaWQsIGxpZCwgc2l6ZSwgY3B1c2V0KSAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX3NjaGVkX2dldGFmZmluaXR5KCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShwaWQpLCAobG9uZyBsb25nKShsaWQpLCAobG9uZyBsb25nKShzaXplKSwgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShjcHVzZXQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9fc2NoZWRfZ2V0YWZmaW5pdHkocmVzLCBwaWQsIGxpZCwgc2l6ZSwgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1c2V0KSAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19zY2hlZF9nZXRhZmZpbml0eSggICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKHBpZCksIChsb25nIGxvbmcpKGxpZCksIChsb25nIGxvbmcpKHNpemUpLCAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShjcHVzZXQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3NjaGVkX3lpZWxkKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2NoZWRfeWllbGQoKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9zY2hlZF95aWVsZChyZXMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NjaGVkX3lpZWxkKHJlcykKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9fc2NoZWRfcHJvdGVjdChwcmlvcml0eSkgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19zY2hlZF9wcm90ZWN0KChsb25nIGxvbmcpKHByaW9yaXR5KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfX3NjaGVkX3Byb3RlY3QocmVzLCBwcmlvcml0eSkgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fc2NoZWRfcHJvdGVjdChyZXMsIChsb25nIGxvbmcpKHByaW9yaXR5KSkKLyogc3lzY2FsbCAzNTIgaGFzIGJlZW4gc2tpcHBlZCAqLwovKiBzeXNjYWxsIDM1MyBoYXMgYmVlbiBza2lwcGVkICovCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZnN5bmNfcmFuZ2UoZmQsIGZsYWdzLCBzdGFydCwgbGVuZ3RoKSAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9mc3luY19yYW5nZSggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGZkKSwgKGxvbmcgbG9uZykoZmxhZ3MpLCAobG9uZyBsb25nKShzdGFydCksICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGxlbmd0aCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ZzeW5jX3JhbmdlKHJlcywgZmQsIGZsYWdzLCBzdGFydCwgbGVuZ3RoKSAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZnN5bmNfcmFuZ2UoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykoZmQpLCAobG9uZyBsb25nKShmbGFncyksIChsb25nIGxvbmcpKHN0YXJ0KSwgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGxlbmd0aCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfdXVpZGdlbihzdG9yZSwgY291bnQpICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF91dWlkZ2VuKChsb25nIGxvbmcpKHN0b3JlKSwgKGxvbmcgbG9uZykoY291bnQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF91dWlkZ2VuKHJlcywgc3RvcmUsIGNvdW50KSAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3V1aWRnZW4ocmVzLCAobG9uZyBsb25nKShzdG9yZSksICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoY291bnQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2NvbXBhdF85MF9nZXR2ZnNzdGF0KGJ1ZiwgYnVmc2l6ZSwgZmxhZ3MpICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzkwX2dldHZmc3N0YXQoICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShidWYpLCAobG9uZyBsb25nKShidWZzaXplKSwgKGxvbmcgbG9uZykoZmxhZ3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jb21wYXRfOTBfZ2V0dmZzc3RhdChyZXMsIGJ1ZiwgYnVmc2l6ZSwgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF85MF9nZXR2ZnNzdGF0KCAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKGJ1ZiksIChsb25nIGxvbmcpKGJ1ZnNpemUpLCAobG9uZyBsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY29tcGF0XzkwX3N0YXR2ZnMxKHBhdGgsIGJ1ZiwgZmxhZ3MpICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfOTBfc3RhdHZmczEoICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKHBhdGgpLCAobG9uZyBsb25nKShidWYpLCAobG9uZyBsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF85MF9zdGF0dmZzMShyZXMsIHBhdGgsIGJ1ZiwgZmxhZ3MpICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzkwX3N0YXR2ZnMxKCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykocGF0aCksIChsb25nIGxvbmcpKGJ1ZiksIChsb25nIGxvbmcpKGZsYWdzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jb21wYXRfOTBfZnN0YXR2ZnMxKGZkLCBidWYsIGZsYWdzKSAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF85MF9mc3RhdHZmczEoICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykoZmQpLCAobG9uZyBsb25nKShidWYpLCAobG9uZyBsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF85MF9mc3RhdHZmczEocmVzLCBmZCwgYnVmLCBmbGFncykgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzkwX2ZzdGF0dmZzMSggICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykoZmQpLCAobG9uZyBsb25nKShidWYpLCAobG9uZyBsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY29tcGF0XzMwX2Zoc3RhdHZmczEoZmhwLCBidWYsIGZsYWdzKSAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfMzBfZmhzdGF0dmZzMSggICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGZocCksIChsb25nIGxvbmcpKGJ1ZiksIChsb25nIGxvbmcpKGZsYWdzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY29tcGF0XzMwX2Zoc3RhdHZmczEocmVzLCBmaHAsIGJ1ZiwgZmxhZ3MpICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfMzBfZmhzdGF0dmZzMSggICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShmaHApLCAobG9uZyBsb25nKShidWYpLCAobG9uZyBsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZXh0YXR0cmN0bChwYXRoLCBjbWQsIGZpbGVuYW1lLCBhdHRybmFtZXNwYWNlLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRybmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9leHRhdHRyY3RsKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKHBhdGgpLCAobG9uZyBsb25nKShjbWQpLCAobG9uZyBsb25nKShmaWxlbmFtZSksICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGF0dHJuYW1lc3BhY2UpLCAobG9uZyBsb25nKShhdHRybmFtZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2V4dGF0dHJjdGwocmVzLCBwYXRoLCBjbWQsIGZpbGVuYW1lLCAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cm5hbWVzcGFjZSwgYXR0cm5hbWUpICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZXh0YXR0cmN0bCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykocGF0aCksIChsb25nIGxvbmcpKGNtZCksIChsb25nIGxvbmcpKGZpbGVuYW1lKSwgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGF0dHJuYW1lc3BhY2UpLCAobG9uZyBsb25nKShhdHRybmFtZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZXh0YXR0cl9zZXRfZmlsZShwYXRoLCBhdHRybmFtZXNwYWNlLCAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRybmFtZSwgZGF0YSwgbmJ5dGVzKSAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9leHRhdHRyX3NldF9maWxlKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKHBhdGgpLCAobG9uZyBsb25nKShhdHRybmFtZXNwYWNlKSwgKGxvbmcgbG9uZykoYXR0cm5hbWUpLCAgICBcCiAgICAgIChsb25nIGxvbmcpKGRhdGEpLCAobG9uZyBsb25nKShuYnl0ZXMpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9leHRhdHRyX3NldF9maWxlKHJlcywgcGF0aCwgYXR0cm5hbWVzcGFjZSwgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJuYW1lLCBkYXRhLCBuYnl0ZXMpICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2V4dGF0dHJfc2V0X2ZpbGUoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKHBhdGgpLCAobG9uZyBsb25nKShhdHRybmFtZXNwYWNlKSwgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShhdHRybmFtZSksIChsb25nIGxvbmcpKGRhdGEpLCAobG9uZyBsb25nKShuYnl0ZXMpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2V4dGF0dHJfZ2V0X2ZpbGUocGF0aCwgYXR0cm5hbWVzcGFjZSwgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cm5hbWUsIGRhdGEsIG5ieXRlcykgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZXh0YXR0cl9nZXRfZmlsZSggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShwYXRoKSwgKGxvbmcgbG9uZykoYXR0cm5hbWVzcGFjZSksIChsb25nIGxvbmcpKGF0dHJuYW1lKSwgICAgXAogICAgICAobG9uZyBsb25nKShkYXRhKSwgKGxvbmcgbG9uZykobmJ5dGVzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZXh0YXR0cl9nZXRfZmlsZShyZXMsIHBhdGgsIGF0dHJuYW1lc3BhY2UsICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRybmFtZSwgZGF0YSwgbmJ5dGVzKSAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9leHRhdHRyX2dldF9maWxlKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShwYXRoKSwgKGxvbmcgbG9uZykoYXR0cm5hbWVzcGFjZSksICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykoYXR0cm5hbWUpLCAobG9uZyBsb25nKShkYXRhKSwgKGxvbmcgbG9uZykobmJ5dGVzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9leHRhdHRyX2RlbGV0ZV9maWxlKHBhdGgsIGF0dHJuYW1lc3BhY2UsICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJuYW1lKSAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2V4dGF0dHJfZGVsZXRlX2ZpbGUoICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykocGF0aCksIChsb25nIGxvbmcpKGF0dHJuYW1lc3BhY2UpLCAobG9uZyBsb25nKShhdHRybmFtZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2V4dGF0dHJfZGVsZXRlX2ZpbGUocmVzLCBwYXRoLCBhdHRybmFtZXNwYWNlLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cm5hbWUpICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZXh0YXR0cl9kZWxldGVfZmlsZSggICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykocGF0aCksIChsb25nIGxvbmcpKGF0dHJuYW1lc3BhY2UpLCAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGF0dHJuYW1lKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9leHRhdHRyX3NldF9mZChmZCwgYXR0cm5hbWVzcGFjZSwgYXR0cm5hbWUsICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLCBuYnl0ZXMpICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2V4dGF0dHJfc2V0X2ZkKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykoZmQpLCAobG9uZyBsb25nKShhdHRybmFtZXNwYWNlKSwgKGxvbmcgbG9uZykoYXR0cm5hbWUpLCAgICAgIFwKICAgICAgKGxvbmcgbG9uZykoZGF0YSksIChsb25nIGxvbmcpKG5ieXRlcykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2V4dGF0dHJfc2V0X2ZkKHJlcywgZmQsIGF0dHJuYW1lc3BhY2UsICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJuYW1lLCBkYXRhLCBuYnl0ZXMpICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZXh0YXR0cl9zZXRfZmQoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykoZmQpLCAobG9uZyBsb25nKShhdHRybmFtZXNwYWNlKSwgKGxvbmcgbG9uZykoYXR0cm5hbWUpLCBcCiAgICAgIChsb25nIGxvbmcpKGRhdGEpLCAobG9uZyBsb25nKShuYnl0ZXMpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2V4dGF0dHJfZ2V0X2ZkKGZkLCBhdHRybmFtZXNwYWNlLCBhdHRybmFtZSwgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEsIG5ieXRlcykgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZXh0YXR0cl9nZXRfZmQoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShmZCksIChsb25nIGxvbmcpKGF0dHJuYW1lc3BhY2UpLCAobG9uZyBsb25nKShhdHRybmFtZSksICAgICAgXAogICAgICAobG9uZyBsb25nKShkYXRhKSwgKGxvbmcgbG9uZykobmJ5dGVzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZXh0YXR0cl9nZXRfZmQocmVzLCBmZCwgYXR0cm5hbWVzcGFjZSwgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cm5hbWUsIGRhdGEsIG5ieXRlcykgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9leHRhdHRyX2dldF9mZCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShmZCksIChsb25nIGxvbmcpKGF0dHJuYW1lc3BhY2UpLCAobG9uZyBsb25nKShhdHRybmFtZSksIFwKICAgICAgKGxvbmcgbG9uZykoZGF0YSksIChsb25nIGxvbmcpKG5ieXRlcykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZXh0YXR0cl9kZWxldGVfZmQoZmQsIGF0dHJuYW1lc3BhY2UsIGF0dHJuYW1lKSBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9leHRhdHRyX2RlbGV0ZV9mZCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGZkKSwgKGxvbmcgbG9uZykoYXR0cm5hbWVzcGFjZSksIChsb25nIGxvbmcpKGF0dHJuYW1lKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZXh0YXR0cl9kZWxldGVfZmQocmVzLCBmZCwgYXR0cm5hbWVzcGFjZSwgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cm5hbWUpICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9leHRhdHRyX2RlbGV0ZV9mZCggICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShmZCksIChsb25nIGxvbmcpKGF0dHJuYW1lc3BhY2UpLCAobG9uZyBsb25nKShhdHRybmFtZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZXh0YXR0cl9zZXRfbGluayhwYXRoLCBhdHRybmFtZXNwYWNlLCAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRybmFtZSwgZGF0YSwgbmJ5dGVzKSAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9leHRhdHRyX3NldF9saW5rKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKHBhdGgpLCAobG9uZyBsb25nKShhdHRybmFtZXNwYWNlKSwgKGxvbmcgbG9uZykoYXR0cm5hbWUpLCAgICBcCiAgICAgIChsb25nIGxvbmcpKGRhdGEpLCAobG9uZyBsb25nKShuYnl0ZXMpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9leHRhdHRyX3NldF9saW5rKHJlcywgcGF0aCwgYXR0cm5hbWVzcGFjZSwgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJuYW1lLCBkYXRhLCBuYnl0ZXMpICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2V4dGF0dHJfc2V0X2xpbmsoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKHBhdGgpLCAobG9uZyBsb25nKShhdHRybmFtZXNwYWNlKSwgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShhdHRybmFtZSksIChsb25nIGxvbmcpKGRhdGEpLCAobG9uZyBsb25nKShuYnl0ZXMpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2V4dGF0dHJfZ2V0X2xpbmsocGF0aCwgYXR0cm5hbWVzcGFjZSwgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cm5hbWUsIGRhdGEsIG5ieXRlcykgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZXh0YXR0cl9nZXRfbGluayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShwYXRoKSwgKGxvbmcgbG9uZykoYXR0cm5hbWVzcGFjZSksIChsb25nIGxvbmcpKGF0dHJuYW1lKSwgICAgXAogICAgICAobG9uZyBsb25nKShkYXRhKSwgKGxvbmcgbG9uZykobmJ5dGVzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZXh0YXR0cl9nZXRfbGluayhyZXMsIHBhdGgsIGF0dHJuYW1lc3BhY2UsICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRybmFtZSwgZGF0YSwgbmJ5dGVzKSAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9leHRhdHRyX2dldF9saW5rKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShwYXRoKSwgKGxvbmcgbG9uZykoYXR0cm5hbWVzcGFjZSksICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykoYXR0cm5hbWUpLCAobG9uZyBsb25nKShkYXRhKSwgKGxvbmcgbG9uZykobmJ5dGVzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9leHRhdHRyX2RlbGV0ZV9saW5rKHBhdGgsIGF0dHJuYW1lc3BhY2UsICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJuYW1lKSAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2V4dGF0dHJfZGVsZXRlX2xpbmsoICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykocGF0aCksIChsb25nIGxvbmcpKGF0dHJuYW1lc3BhY2UpLCAobG9uZyBsb25nKShhdHRybmFtZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2V4dGF0dHJfZGVsZXRlX2xpbmsocmVzLCBwYXRoLCBhdHRybmFtZXNwYWNlLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cm5hbWUpICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZXh0YXR0cl9kZWxldGVfbGluayggICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykocGF0aCksIChsb25nIGxvbmcpKGF0dHJuYW1lc3BhY2UpLCAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGF0dHJuYW1lKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9leHRhdHRyX2xpc3RfZmQoZmQsIGF0dHJuYW1lc3BhY2UsIGRhdGEsICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmJ5dGVzKSAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2V4dGF0dHJfbGlzdF9mZCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykoZmQpLCAobG9uZyBsb25nKShhdHRybmFtZXNwYWNlKSwgKGxvbmcgbG9uZykoZGF0YSksICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykobmJ5dGVzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZXh0YXR0cl9saXN0X2ZkKHJlcywgZmQsIGF0dHJuYW1lc3BhY2UsIGRhdGEsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ieXRlcykgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9leHRhdHRyX2xpc3RfZmQoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShmZCksIChsb25nIGxvbmcpKGF0dHJuYW1lc3BhY2UpLCAobG9uZyBsb25nKShkYXRhKSwgICAgIFwKICAgICAgKGxvbmcgbG9uZykobmJ5dGVzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9leHRhdHRyX2xpc3RfZmlsZShwYXRoLCBhdHRybmFtZXNwYWNlLCBkYXRhLCAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYnl0ZXMpICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2V4dGF0dHJfbGlzdF9maWxlKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykocGF0aCksIChsb25nIGxvbmcpKGF0dHJuYW1lc3BhY2UpLCAobG9uZyBsb25nKShkYXRhKSwgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykobmJ5dGVzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZXh0YXR0cl9saXN0X2ZpbGUocmVzLCBwYXRoLCBhdHRybmFtZXNwYWNlLCAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSwgbmJ5dGVzKSAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9leHRhdHRyX2xpc3RfZmlsZSggICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShwYXRoKSwgKGxvbmcgbG9uZykoYXR0cm5hbWVzcGFjZSksIChsb25nIGxvbmcpKGRhdGEpLCAgIFwKICAgICAgKGxvbmcgbG9uZykobmJ5dGVzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9leHRhdHRyX2xpc3RfbGluayhwYXRoLCBhdHRybmFtZXNwYWNlLCBkYXRhLCAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYnl0ZXMpICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2V4dGF0dHJfbGlzdF9saW5rKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykocGF0aCksIChsb25nIGxvbmcpKGF0dHJuYW1lc3BhY2UpLCAobG9uZyBsb25nKShkYXRhKSwgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykobmJ5dGVzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZXh0YXR0cl9saXN0X2xpbmsocmVzLCBwYXRoLCBhdHRybmFtZXNwYWNlLCAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSwgbmJ5dGVzKSAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9leHRhdHRyX2xpc3RfbGluayggICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShwYXRoKSwgKGxvbmcgbG9uZykoYXR0cm5hbWVzcGFjZSksIChsb25nIGxvbmcpKGRhdGEpLCAgIFwKICAgICAgKGxvbmcgbG9uZykobmJ5dGVzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jb21wYXRfNTBfcHNlbGVjdChuZCwgaW4sIG91LCBleCwgdHMsIG1hc2spICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF81MF9wc2VsZWN0KCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykobmQpLCAobG9uZyBsb25nKShpbiksIChsb25nIGxvbmcpKG91KSwgKGxvbmcgbG9uZykoZXgpLCAgICAgIFwKICAgICAgKGxvbmcgbG9uZykodHMpLCAobG9uZyBsb25nKShtYXNrKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY29tcGF0XzUwX3BzZWxlY3QocmVzLCBuZCwgaW4sIG91LCBleCwgdHMsICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFzaykgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfNTBfcHNlbGVjdCggICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShuZCksIChsb25nIGxvbmcpKGluKSwgKGxvbmcgbG9uZykob3UpLCAobG9uZyBsb25nKShleCksIFwKICAgICAgKGxvbmcgbG9uZykodHMpLCAobG9uZyBsb25nKShtYXNrKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jb21wYXRfNTBfcG9sbHRzKGZkcywgbmZkcywgdHMsIG1hc2spICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF81MF9wb2xsdHMoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykoZmRzKSwgKGxvbmcgbG9uZykobmZkcyksIChsb25nIGxvbmcpKHRzKSwgKGxvbmcgbG9uZykobWFzaykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF81MF9wb2xsdHMocmVzLCBmZHMsIG5mZHMsIHRzLCBtYXNrKSAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzUwX3BvbGx0cyggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykoZmRzKSwgKGxvbmcgbG9uZykobmZkcyksIChsb25nIGxvbmcpKHRzKSwgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKG1hc2spKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3NldHhhdHRyKHBhdGgsIG5hbWUsIHZhbHVlLCBzaXplLCBmbGFncykgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2V0eGF0dHIoKGxvbmcgbG9uZykocGF0aCksIChsb25nIGxvbmcpKG5hbWUpLCAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykodmFsdWUpLCAobG9uZyBsb25nKShzaXplKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoZmxhZ3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9zZXR4YXR0cihyZXMsIHBhdGgsIG5hbWUsIHZhbHVlLCBzaXplLCBmbGFncykgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NldHhhdHRyKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKHBhdGgpLCAobG9uZyBsb25nKShuYW1lKSwgKGxvbmcgbG9uZykodmFsdWUpLCAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShzaXplKSwgKGxvbmcgbG9uZykoZmxhZ3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2xzZXR4YXR0cihwYXRoLCBuYW1lLCB2YWx1ZSwgc2l6ZSwgZmxhZ3MpICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbHNldHhhdHRyKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShwYXRoKSwgKGxvbmcgbG9uZykobmFtZSksIChsb25nIGxvbmcpKHZhbHVlKSwgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShzaXplKSwgKGxvbmcgbG9uZykoZmxhZ3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9sc2V0eGF0dHIocmVzLCBwYXRoLCBuYW1lLCB2YWx1ZSwgc2l6ZSwgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2xzZXR4YXR0ciggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKHBhdGgpLCAobG9uZyBsb25nKShuYW1lKSwgKGxvbmcgbG9uZykodmFsdWUpLCAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShzaXplKSwgKGxvbmcgbG9uZykoZmxhZ3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ZzZXR4YXR0cihmZCwgbmFtZSwgdmFsdWUsIHNpemUsIGZsYWdzKSAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZnNldHhhdHRyKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShmZCksIChsb25nIGxvbmcpKG5hbWUpLCAobG9uZyBsb25nKSh2YWx1ZSksICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShzaXplKSwgKGxvbmcgbG9uZykoZmxhZ3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9mc2V0eGF0dHIocmVzLCBmZCwgbmFtZSwgdmFsdWUsIHNpemUsIGZsYWdzKSAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2ZzZXR4YXR0ciggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKGZkKSwgKGxvbmcgbG9uZykobmFtZSksIChsb25nIGxvbmcpKHZhbHVlKSwgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShzaXplKSwgKGxvbmcgbG9uZykoZmxhZ3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2dldHhhdHRyKHBhdGgsIG5hbWUsIHZhbHVlLCBzaXplKSAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZ2V0eGF0dHIoKGxvbmcgbG9uZykocGF0aCksIChsb25nIGxvbmcpKG5hbWUpLCAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykodmFsdWUpLCAobG9uZyBsb25nKShzaXplKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZ2V0eGF0dHIocmVzLCBwYXRoLCBuYW1lLCB2YWx1ZSwgc2l6ZSkgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9nZXR4YXR0ciggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShwYXRoKSwgKGxvbmcgbG9uZykobmFtZSksIChsb25nIGxvbmcpKHZhbHVlKSwgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykoc2l6ZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfbGdldHhhdHRyKHBhdGgsIG5hbWUsIHZhbHVlLCBzaXplKSAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9sZ2V0eGF0dHIoKGxvbmcgbG9uZykocGF0aCksIChsb25nIGxvbmcpKG5hbWUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykodmFsdWUpLCAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoc2l6ZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2xnZXR4YXR0cihyZXMsIHBhdGgsIG5hbWUsIHZhbHVlLCBzaXplKSAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbGdldHhhdHRyKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykocGF0aCksIChsb25nIGxvbmcpKG5hbWUpLCAobG9uZyBsb25nKSh2YWx1ZSksICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKHNpemUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ZnZXR4YXR0cihmZCwgbmFtZSwgdmFsdWUsIHNpemUpICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZmdldHhhdHRyKChsb25nIGxvbmcpKGZkKSwgKGxvbmcgbG9uZykobmFtZSksICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHZhbHVlKSwgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHNpemUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9mZ2V0eGF0dHIocmVzLCBmZCwgbmFtZSwgdmFsdWUsIHNpemUpICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2ZnZXR4YXR0ciggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKGZkKSwgKGxvbmcgbG9uZykobmFtZSksIChsb25nIGxvbmcpKHZhbHVlKSwgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShzaXplKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9saXN0eGF0dHIocGF0aCwgbGlzdCwgc2l6ZSkgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2xpc3R4YXR0cigobG9uZyBsb25nKShwYXRoKSwgKGxvbmcgbG9uZykobGlzdCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShzaXplKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfbGlzdHhhdHRyKHJlcywgcGF0aCwgbGlzdCwgc2l6ZSkgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9saXN0eGF0dHIoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShwYXRoKSwgKGxvbmcgbG9uZykobGlzdCksIChsb25nIGxvbmcpKHNpemUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2xsaXN0eGF0dHIocGF0aCwgbGlzdCwgc2l6ZSkgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbGxpc3R4YXR0ciggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShwYXRoKSwgKGxvbmcgbG9uZykobGlzdCksIChsb25nIGxvbmcpKHNpemUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9sbGlzdHhhdHRyKHJlcywgcGF0aCwgbGlzdCwgc2l6ZSkgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2xsaXN0eGF0dHIoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKHBhdGgpLCAobG9uZyBsb25nKShsaXN0KSwgKGxvbmcgbG9uZykoc2l6ZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZmxpc3R4YXR0cihmZCwgbGlzdCwgc2l6ZSkgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9mbGlzdHhhdHRyKChsb25nIGxvbmcpKGZkKSwgKGxvbmcgbG9uZykobGlzdCksICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHNpemUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9mbGlzdHhhdHRyKHJlcywgZmQsIGxpc3QsIHNpemUpICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2ZsaXN0eGF0dHIoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKGZkKSwgKGxvbmcgbG9uZykobGlzdCksIChsb25nIGxvbmcpKHNpemUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3JlbW92ZXhhdHRyKHBhdGgsIG5hbWUpICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfcmVtb3ZleGF0dHIoKGxvbmcgbG9uZykocGF0aCksIChsb25nIGxvbmcpKG5hbWUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9yZW1vdmV4YXR0cihyZXMsIHBhdGgsIG5hbWUpICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3JlbW92ZXhhdHRyKHJlcywgKGxvbmcgbG9uZykocGF0aCksICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKG5hbWUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2xyZW1vdmV4YXR0cihwYXRoLCBuYW1lKSAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbHJlbW92ZXhhdHRyKChsb25nIGxvbmcpKHBhdGgpLCAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKG5hbWUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9scmVtb3ZleGF0dHIocmVzLCBwYXRoLCBuYW1lKSAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2xyZW1vdmV4YXR0cihyZXMsIChsb25nIGxvbmcpKHBhdGgpLCAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShuYW1lKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9mcmVtb3ZleGF0dHIoZmQsIG5hbWUpICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2ZyZW1vdmV4YXR0cigobG9uZyBsb25nKShmZCksIChsb25nIGxvbmcpKG5hbWUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9mcmVtb3ZleGF0dHIocmVzLCBmZCwgbmFtZSkgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2ZyZW1vdmV4YXR0cihyZXMsIChsb25nIGxvbmcpKGZkKSwgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShuYW1lKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jb21wYXRfNTBfX19zdGF0MzAocGF0aCwgdWIpICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF81MF9fX3N0YXQzMCgobG9uZyBsb25nKShwYXRoKSwgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKSh1YikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF81MF9fX3N0YXQzMChyZXMsIHBhdGgsIHViKSAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzUwX19fc3RhdDMwKHJlcywgKGxvbmcgbG9uZykocGF0aCksICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHViKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jb21wYXRfNTBfX19mc3RhdDMwKGZkLCBzYikgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF81MF9fX2ZzdGF0MzAoKGxvbmcgbG9uZykoZmQpLCAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoc2IpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jb21wYXRfNTBfX19mc3RhdDMwKHJlcywgZmQsIHNiKSAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF81MF9fX2ZzdGF0MzAocmVzLCAobG9uZyBsb25nKShmZCksICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoc2IpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2NvbXBhdF81MF9fX2xzdGF0MzAocGF0aCwgdWIpICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzUwX19fbHN0YXQzMCgobG9uZyBsb25nKShwYXRoKSwgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKSh1YikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF81MF9fX2xzdGF0MzAocmVzLCBwYXRoLCB1YikgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzUwX19fbHN0YXQzMChyZXMsIChsb25nIGxvbmcpKHBhdGgpLCAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKSh1YikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfX19nZXRkZW50czMwKGZkLCBidWYsIGNvdW50KSAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX2dldGRlbnRzMzAoKGxvbmcgbG9uZykoZmQpLCAobG9uZyBsb25nKShidWYpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoY291bnQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9fX2dldGRlbnRzMzAocmVzLCBmZCwgYnVmLCBjb3VudCkgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fZ2V0ZGVudHMzMCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKGZkKSwgKGxvbmcgbG9uZykoYnVmKSwgKGxvbmcgbG9uZykoY291bnQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3Bvc2l4X2ZhZHZpc2UoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfcG9zaXhfZmFkdmlzZSgobG9uZyBsb25nKSgpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9wb3NpeF9mYWR2aXNlKHJlcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3Bvc2l4X2ZhZHZpc2UocmVzLCAobG9uZyBsb25nKSgpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2NvbXBhdF8zMF9fX2Zoc3RhdDMwKGZocCwgc2IpICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzMwX19fZmhzdGF0MzAoKGxvbmcgbG9uZykoZmhwKSwgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoc2IpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jb21wYXRfMzBfX19maHN0YXQzMChyZXMsIGZocCwgc2IpICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF8zMF9fX2Zoc3RhdDMwKHJlcywgKGxvbmcgbG9uZykoZmhwKSwgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHNiKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jb21wYXRfNTBfX19udHBfZ2V0dGltZTMwKG50dnApICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF81MF9fX250cF9nZXR0aW1lMzAoKGxvbmcgbG9uZykobnR2cCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF81MF9fX250cF9nZXR0aW1lMzAocmVzLCBudHZwKSAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzUwX19fbnRwX2dldHRpbWUzMChyZXMsICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShudHZwKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9fX3NvY2tldDMwKGRvbWFpbiwgdHlwZSwgcHJvdG9jb2wpICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fc29ja2V0MzAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykoZG9tYWluKSwgKGxvbmcgbG9uZykodHlwZSksIChsb25nIGxvbmcpKHByb3RvY29sKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfX19zb2NrZXQzMChyZXMsIGRvbWFpbiwgdHlwZSwgcHJvdG9jb2wpICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX3NvY2tldDMwKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShkb21haW4pLCAobG9uZyBsb25nKSh0eXBlKSwgKGxvbmcgbG9uZykocHJvdG9jb2wpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX19fZ2V0ZmgzMChmbmFtZSwgZmhwLCBmaF9zaXplKSAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19nZXRmaDMwKChsb25nIGxvbmcpKGZuYW1lKSwgKGxvbmcgbG9uZykoZmhwKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGZoX3NpemUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9fX2dldGZoMzAocmVzLCBmbmFtZSwgZmhwLCBmaF9zaXplKSAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fZ2V0ZmgzMCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKGZuYW1lKSwgKGxvbmcgbG9uZykoZmhwKSwgKGxvbmcgbG9uZykoZmhfc2l6ZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfX19maG9wZW40MChmaHAsIGZoX3NpemUsIGZsYWdzKSAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX2Zob3BlbjQwKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGZocCksIChsb25nIGxvbmcpKGZoX3NpemUpLCAobG9uZyBsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X19fZmhvcGVuNDAocmVzLCBmaHAsIGZoX3NpemUsIGZsYWdzKSAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX19maG9wZW40MCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykoZmhwKSwgKGxvbmcgbG9uZykoZmhfc2l6ZSksIChsb25nIGxvbmcpKGZsYWdzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jb21wYXRfOTBfZmhzdGF0dmZzMShmaHAsIGZoX3NpemUsIGJ1ZiwgZmxhZ3MpIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF85MF9maHN0YXR2ZnMxKCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykoZmhwKSwgKGxvbmcgbG9uZykoZmhfc2l6ZSksIChsb25nIGxvbmcpKGJ1ZiksICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykoZmxhZ3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jb21wYXRfOTBfZmhzdGF0dmZzMShyZXMsIGZocCwgZmhfc2l6ZSwgYnVmLCAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF85MF9maHN0YXR2ZnMxKCAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKGZocCksIChsb25nIGxvbmcpKGZoX3NpemUpLCAobG9uZyBsb25nKShidWYpLCAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY29tcGF0XzUwX19fZmhzdGF0NDAoZmhwLCBmaF9zaXplLCBzYikgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfNTBfX19maHN0YXQ0MCggICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGZocCksIChsb25nIGxvbmcpKGZoX3NpemUpLCAobG9uZyBsb25nKShzYikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF81MF9fX2Zoc3RhdDQwKHJlcywgZmhwLCBmaF9zaXplLCBzYikgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzUwX19fZmhzdGF0NDAoICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykoZmhwKSwgKGxvbmcgbG9uZykoZmhfc2l6ZSksIChsb25nIGxvbmcpKHNiKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9haW9fY2FuY2VsKGZpbGRlcywgYWlvY2JwKSAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2Fpb19jYW5jZWwoKGxvbmcgbG9uZykoZmlsZGVzKSwgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoYWlvY2JwKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfYWlvX2NhbmNlbChyZXMsIGZpbGRlcywgYWlvY2JwKSAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9haW9fY2FuY2VsKHJlcywgKGxvbmcgbG9uZykoZmlsZGVzKSwgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGFpb2NicCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfYWlvX2Vycm9yKGFpb2NicCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9haW9fZXJyb3IoKGxvbmcgbG9uZykoYWlvY2JwKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfYWlvX2Vycm9yKHJlcywgYWlvY2JwKSAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9haW9fZXJyb3IocmVzLCAobG9uZyBsb25nKShhaW9jYnApKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2Fpb19mc3luYyhvcCwgYWlvY2JwKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfYWlvX2ZzeW5jKChsb25nIGxvbmcpKG9wKSwgKGxvbmcgbG9uZykoYWlvY2JwKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfYWlvX2ZzeW5jKHJlcywgb3AsIGFpb2NicCkgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9haW9fZnN5bmMocmVzLCAobG9uZyBsb25nKShvcCksICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoYWlvY2JwKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9haW9fcmVhZChhaW9jYnApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2Fpb19yZWFkKChsb25nIGxvbmcpKGFpb2NicCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2Fpb19yZWFkKHJlcywgYWlvY2JwKSAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfYWlvX3JlYWQocmVzLCAobG9uZyBsb25nKShhaW9jYnApKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2Fpb19yZXR1cm4oYWlvY2JwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfYWlvX3JldHVybigobG9uZyBsb25nKShhaW9jYnApKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9haW9fcmV0dXJuKHJlcywgYWlvY2JwKSAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2Fpb19yZXR1cm4ocmVzLCAobG9uZyBsb25nKShhaW9jYnApKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2NvbXBhdF81MF9haW9fc3VzcGVuZChsaXN0LCBuZW50LCB0aW1lb3V0KSAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzUwX2Fpb19zdXNwZW5kKCAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShsaXN0KSwgKGxvbmcgbG9uZykobmVudCksIChsb25nIGxvbmcpKHRpbWVvdXQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jb21wYXRfNTBfYWlvX3N1c3BlbmQocmVzLCBsaXN0LCBuZW50LCAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dCkgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF81MF9haW9fc3VzcGVuZCggICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKGxpc3QpLCAobG9uZyBsb25nKShuZW50KSwgKGxvbmcgbG9uZykodGltZW91dCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfYWlvX3dyaXRlKGFpb2NicCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9haW9fd3JpdGUoKGxvbmcgbG9uZykoYWlvY2JwKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfYWlvX3dyaXRlKHJlcywgYWlvY2JwKSAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9haW9fd3JpdGUocmVzLCAobG9uZyBsb25nKShhaW9jYnApKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2xpb19saXN0aW8obW9kZSwgbGlzdCwgbmVudCwgc2lnKSAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbGlvX2xpc3RpbygobG9uZyBsb25nKShtb2RlKSwgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShsaXN0KSwgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShuZW50KSwgKGxvbmcgbG9uZykoc2lnKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfbGlvX2xpc3RpbyhyZXMsIG1vZGUsIGxpc3QsIG5lbnQsIHNpZykgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9saW9fbGlzdGlvKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShtb2RlKSwgKGxvbmcgbG9uZykobGlzdCksIChsb25nIGxvbmcpKG5lbnQpLCAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykoc2lnKSkKLyogc3lzY2FsbCA0MDcgaGFzIGJlZW4gc2tpcHBlZCAqLwovKiBzeXNjYWxsIDQwOCBoYXMgYmVlbiBza2lwcGVkICovCi8qIHN5c2NhbGwgNDA5IGhhcyBiZWVuIHNraXBwZWQgKi8KI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9fX21vdW50NTAodHlwZSwgcGF0aCwgZmxhZ3MsIGRhdGEsIGRhdGFfbGVuKSAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fbW91bnQ1MCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykodHlwZSksIChsb25nIGxvbmcpKHBhdGgpLCAobG9uZyBsb25nKShmbGFncyksICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykoZGF0YSksIChsb25nIGxvbmcpKGRhdGFfbGVuKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfX19tb3VudDUwKHJlcywgdHlwZSwgcGF0aCwgZmxhZ3MsIGRhdGEsICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfbGVuKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX21vdW50NTAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKSh0eXBlKSwgKGxvbmcgbG9uZykocGF0aCksIChsb25nIGxvbmcpKGZsYWdzKSwgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykoZGF0YSksIChsb25nIGxvbmcpKGRhdGFfbGVuKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9tcmVtYXAob2xkX2FkZHJlc3MsIG9sZF9zaXplLCBuZXdfYWRkcmVzcywgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3NpemUsIGZsYWdzKSAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX21yZW1hcCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykob2xkX2FkZHJlc3MpLCAobG9uZyBsb25nKShvbGRfc2l6ZSksICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykobmV3X2FkZHJlc3MpLCAobG9uZyBsb25nKShuZXdfc2l6ZSksIChsb25nIGxvbmcpKGZsYWdzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfbXJlbWFwKHJlcywgb2xkX2FkZHJlc3MsIG9sZF9zaXplLCAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19hZGRyZXNzLCBuZXdfc2l6ZSwgZmxhZ3MpICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9tcmVtYXAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShvbGRfYWRkcmVzcyksIChsb25nIGxvbmcpKG9sZF9zaXplKSwgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykobmV3X2FkZHJlc3MpLCAobG9uZyBsb25nKShuZXdfc2l6ZSksIChsb25nIGxvbmcpKGZsYWdzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9wc2V0X2NyZWF0ZShwc2lkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3BzZXRfY3JlYXRlKChsb25nIGxvbmcpKHBzaWQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9wc2V0X2NyZWF0ZShyZXMsIHBzaWQpICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3BzZXRfY3JlYXRlKHJlcywgKGxvbmcgbG9uZykocHNpZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfcHNldF9kZXN0cm95KHBzaWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9wc2V0X2Rlc3Ryb3koKGxvbmcgbG9uZykocHNpZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3BzZXRfZGVzdHJveShyZXMsIHBzaWQpICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcHNldF9kZXN0cm95KHJlcywgKGxvbmcgbG9uZykocHNpZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfcHNldF9hc3NpZ24ocHNpZCwgY3B1aWQsIG9wc2lkKSAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9wc2V0X2Fzc2lnbiggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKHBzaWQpLCAobG9uZyBsb25nKShjcHVpZCksIChsb25nIGxvbmcpKG9wc2lkKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfcHNldF9hc3NpZ24ocmVzLCBwc2lkLCBjcHVpZCwgb3BzaWQpICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9wc2V0X2Fzc2lnbiggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShwc2lkKSwgKGxvbmcgbG9uZykoY3B1aWQpLCAobG9uZyBsb25nKShvcHNpZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfX3BzZXRfYmluZChpZHR5cGUsIGZpcnN0X2lkLCBzZWNvbmRfaWQsIHBzaWQsICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHNpZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fcHNldF9iaW5kKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGlkdHlwZSksIChsb25nIGxvbmcpKGZpcnN0X2lkKSwgKGxvbmcgbG9uZykoc2Vjb25kX2lkKSwgICAgICBcCiAgICAgIChsb25nIGxvbmcpKHBzaWQpLCAobG9uZyBsb25nKShvcHNpZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X19wc2V0X2JpbmQocmVzLCBpZHR5cGUsIGZpcnN0X2lkLCBzZWNvbmRfaWQsICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHNpZCwgb3BzaWQpICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX3BzZXRfYmluZCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykoaWR0eXBlKSwgKGxvbmcgbG9uZykoZmlyc3RfaWQpLCAobG9uZyBsb25nKShzZWNvbmRfaWQpLCBcCiAgICAgIChsb25nIGxvbmcpKHBzaWQpLCAobG9uZyBsb25nKShvcHNpZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfX19wb3NpeF9mYWR2aXNlNTAoZmQsIFBBRCwgb2Zmc2V0LCBsZW4sICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWR2aWNlKSAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX3Bvc2l4X2ZhZHZpc2U1MCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGZkKSwgKGxvbmcgbG9uZykoUEFEKSwgKGxvbmcgbG9uZykob2Zmc2V0KSwgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGxlbiksIChsb25nIGxvbmcpKGFkdmljZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X19fcG9zaXhfZmFkdmlzZTUwKHJlcywgZmQsIFBBRCwgb2Zmc2V0LCBsZW4sICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkdmljZSkgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX19wb3NpeF9mYWR2aXNlNTAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykoZmQpLCAobG9uZyBsb25nKShQQUQpLCAobG9uZyBsb25nKShvZmZzZXQpLCAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGxlbiksIChsb25nIGxvbmcpKGFkdmljZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfX19zZWxlY3Q1MChuZCwgaW4sIG91LCBleCwgdHYpICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX3NlbGVjdDUwKChsb25nIGxvbmcpKG5kKSwgKGxvbmcgbG9uZykoaW4pLCAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKG91KSwgKGxvbmcgbG9uZykoZXgpLCAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHR2KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfX19zZWxlY3Q1MChyZXMsIG5kLCBpbiwgb3UsIGV4LCB0dikgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX3NlbGVjdDUwKHJlcywgKGxvbmcgbG9uZykobmQpLCAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGluKSwgKGxvbmcgbG9uZykob3UpLCAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGV4KSwgKGxvbmcgbG9uZykodHYpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX19fZ2V0dGltZW9mZGF5NTAodHAsIHR6cCkgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19nZXR0aW1lb2ZkYXk1MCgobG9uZyBsb25nKSh0cCksICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKSh0enApKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9fX2dldHRpbWVvZmRheTUwKHJlcywgdHAsIHR6cCkgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fZ2V0dGltZW9mZGF5NTAocmVzLCAobG9uZyBsb25nKSh0cCksICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykodHpwKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9fX3NldHRpbWVvZmRheTUwKHR2LCB0enApICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fc2V0dGltZW9mZGF5NTAoKGxvbmcgbG9uZykodHYpLCAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykodHpwKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfX19zZXR0aW1lb2ZkYXk1MChyZXMsIHR2LCB0enApICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX3NldHRpbWVvZmRheTUwKHJlcywgKGxvbmcgbG9uZykodHYpLCAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHR6cCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfX191dGltZXM1MChwYXRoLCB0cHRyKSAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX3V0aW1lczUwKChsb25nIGxvbmcpKHBhdGgpLCAobG9uZyBsb25nKSh0cHRyKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfX191dGltZXM1MChyZXMsIHBhdGgsIHRwdHIpICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX3V0aW1lczUwKHJlcywgKGxvbmcgbG9uZykocGF0aCksICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHRwdHIpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX19fYWRqdGltZTUwKGRlbHRhLCBvbGRkZWx0YSkgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19hZGp0aW1lNTAoKGxvbmcgbG9uZykoZGVsdGEpLCAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykob2xkZGVsdGEpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9fX2FkanRpbWU1MChyZXMsIGRlbHRhLCBvbGRkZWx0YSkgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fYWRqdGltZTUwKHJlcywgKGxvbmcgbG9uZykoZGVsdGEpLCAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKG9sZGRlbHRhKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9fX2xmc19zZWd3YWl0NTAoZnNpZHAsIHR2KSAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fbGZzX3NlZ3dhaXQ1MCgobG9uZyBsb25nKShmc2lkcCksICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKSh0dikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X19fbGZzX3NlZ3dhaXQ1MChyZXMsIGZzaWRwLCB0dikgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX19sZnNfc2Vnd2FpdDUwKHJlcywgKGxvbmcgbG9uZykoZnNpZHApLCAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHR2KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9fX2Z1dGltZXM1MChmZCwgdHB0cikgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fZnV0aW1lczUwKChsb25nIGxvbmcpKGZkKSwgKGxvbmcgbG9uZykodHB0cikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X19fZnV0aW1lczUwKHJlcywgZmQsIHRwdHIpICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX19mdXRpbWVzNTAocmVzLCAobG9uZyBsb25nKShmZCksICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykodHB0cikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfX19sdXRpbWVzNTAocGF0aCwgdHB0cikgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX2x1dGltZXM1MCgobG9uZyBsb25nKShwYXRoKSwgKGxvbmcgbG9uZykodHB0cikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X19fbHV0aW1lczUwKHJlcywgcGF0aCwgdHB0cikgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX19sdXRpbWVzNTAocmVzLCAobG9uZyBsb25nKShwYXRoKSwgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykodHB0cikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfX19zZXRpdGltZXI1MCh3aGljaCwgaXR2LCBvaXR2KSAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX3NldGl0aW1lcjUwKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKHdoaWNoKSwgKGxvbmcgbG9uZykoaXR2KSwgKGxvbmcgbG9uZykob2l0dikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X19fc2V0aXRpbWVyNTAocmVzLCB3aGljaCwgaXR2LCBvaXR2KSAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX19zZXRpdGltZXI1MCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykod2hpY2gpLCAobG9uZyBsb25nKShpdHYpLCAobG9uZyBsb25nKShvaXR2KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9fX2dldGl0aW1lcjUwKHdoaWNoLCBpdHYpICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fZ2V0aXRpbWVyNTAoKGxvbmcgbG9uZykod2hpY2gpLCAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoaXR2KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfX19nZXRpdGltZXI1MChyZXMsIHdoaWNoLCBpdHYpICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX2dldGl0aW1lcjUwKHJlcywgKGxvbmcgbG9uZykod2hpY2gpLCAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGl0dikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfX19jbG9ja19nZXR0aW1lNTAoY2xvY2tfaWQsIHRwKSAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX2Nsb2NrX2dldHRpbWU1MCgobG9uZyBsb25nKShjbG9ja19pZCksICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKSh0cCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X19fY2xvY2tfZ2V0dGltZTUwKHJlcywgY2xvY2tfaWQsIHRwKSAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX19jbG9ja19nZXR0aW1lNTAocmVzLCAobG9uZyBsb25nKShjbG9ja19pZCksICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykodHApKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX19fY2xvY2tfc2V0dGltZTUwKGNsb2NrX2lkLCB0cCkgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19jbG9ja19zZXR0aW1lNTAoKGxvbmcgbG9uZykoY2xvY2tfaWQpLCAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykodHApKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9fX2Nsb2NrX3NldHRpbWU1MChyZXMsIGNsb2NrX2lkLCB0cCkgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fY2xvY2tfc2V0dGltZTUwKHJlcywgKGxvbmcgbG9uZykoY2xvY2tfaWQpLCAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHRwKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9fX2Nsb2NrX2dldHJlczUwKGNsb2NrX2lkLCB0cCkgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fY2xvY2tfZ2V0cmVzNTAoKGxvbmcgbG9uZykoY2xvY2tfaWQpLCAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykodHApKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9fX2Nsb2NrX2dldHJlczUwKHJlcywgY2xvY2tfaWQsIHRwKSAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fY2xvY2tfZ2V0cmVzNTAocmVzLCAobG9uZyBsb25nKShjbG9ja19pZCksICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykodHApKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX19fbmFub3NsZWVwNTAocnF0cCwgcm10cCkgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19uYW5vc2xlZXA1MCgobG9uZyBsb25nKShycXRwKSwgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShybXRwKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfX19uYW5vc2xlZXA1MChyZXMsIHJxdHAsIHJtdHApICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX25hbm9zbGVlcDUwKHJlcywgKGxvbmcgbG9uZykocnF0cCksICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHJtdHApKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX19fX19zaWd0aW1lZHdhaXQ1MChzZXQsIGluZm8sIHRpbWVvdXQpICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19fX3NpZ3RpbWVkd2FpdDUwKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShzZXQpLCAobG9uZyBsb25nKShpbmZvKSwgKGxvbmcgbG9uZykodGltZW91dCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X19fX19zaWd0aW1lZHdhaXQ1MChyZXMsIHNldCwgaW5mbywgdGltZW91dCkgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX19fX3NpZ3RpbWVkd2FpdDUwKCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykoc2V0KSwgKGxvbmcgbG9uZykoaW5mbyksIChsb25nIGxvbmcpKHRpbWVvdXQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX19fbXFfdGltZWRzZW5kNTAobXFkZXMsIG1zZ19wdHIsIG1zZ19sZW4sICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnX3ByaW8sIGFic190aW1lb3V0KSAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19tcV90aW1lZHNlbmQ1MCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShtcWRlcyksIChsb25nIGxvbmcpKG1zZ19wdHIpLCAobG9uZyBsb25nKShtc2dfbGVuKSwgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShtc2dfcHJpbyksIChsb25nIGxvbmcpKGFic190aW1lb3V0KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfX19tcV90aW1lZHNlbmQ1MCggICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHJlcywgbXFkZXMsIG1zZ19wdHIsIG1zZ19sZW4sIG1zZ19wcmlvLCBhYnNfdGltZW91dCkgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX21xX3RpbWVkc2VuZDUwKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShtcWRlcyksIChsb25nIGxvbmcpKG1zZ19wdHIpLCAobG9uZyBsb25nKShtc2dfbGVuKSwgICAgIFwKICAgICAgKGxvbmcgbG9uZykobXNnX3ByaW8pLCAobG9uZyBsb25nKShhYnNfdGltZW91dCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfX19tcV90aW1lZHJlY2VpdmU1MChtcWRlcywgbXNnX3B0ciwgbXNnX2xlbiwgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2dfcHJpbywgYWJzX3RpbWVvdXQpICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX21xX3RpbWVkcmVjZWl2ZTUwKCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKG1xZGVzKSwgKGxvbmcgbG9uZykobXNnX3B0ciksIChsb25nIGxvbmcpKG1zZ19sZW4pLCAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKG1zZ19wcmlvKSwgKGxvbmcgbG9uZykoYWJzX3RpbWVvdXQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9fX21xX3RpbWVkcmVjZWl2ZTUwKCAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgcmVzLCBtcWRlcywgbXNnX3B0ciwgbXNnX2xlbiwgbXNnX3ByaW8sIGFic190aW1lb3V0KSAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fbXFfdGltZWRyZWNlaXZlNTAoICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKG1xZGVzKSwgKGxvbmcgbG9uZykobXNnX3B0ciksIChsb25nIGxvbmcpKG1zZ19sZW4pLCAgICAgXAogICAgICAobG9uZyBsb25nKShtc2dfcHJpbyksIChsb25nIGxvbmcpKGFic190aW1lb3V0KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jb21wYXRfNjBfX2x3cF9wYXJrKHRzLCB1bnBhcmssIGhpbnQsICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVucGFya2hpbnQpICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF82MF9fbHdwX3BhcmsoICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykodHMpLCAobG9uZyBsb25nKSh1bnBhcmspLCAobG9uZyBsb25nKShoaW50KSwgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykodW5wYXJraGludCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF82MF9fbHdwX3BhcmsocmVzLCB0cywgdW5wYXJrLCBoaW50LCAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5wYXJraGludCkgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzYwX19sd3BfcGFyayggICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykodHMpLCAobG9uZyBsb25nKSh1bnBhcmspLCAobG9uZyBsb25nKShoaW50KSwgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKHVucGFya2hpbnQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX19fa2V2ZW50NTAoZmQsIGNoYW5nZWxpc3QsIG5jaGFuZ2VzLCAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRsaXN0LCBuZXZlbnRzLCB0aW1lb3V0KSAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19rZXZlbnQ1MCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShmZCksIChsb25nIGxvbmcpKGNoYW5nZWxpc3QpLCAobG9uZyBsb25nKShuY2hhbmdlcyksICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShldmVudGxpc3QpLCAobG9uZyBsb25nKShuZXZlbnRzKSwgKGxvbmcgbG9uZykodGltZW91dCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X19fa2V2ZW50NTAocmVzLCBmZCwgY2hhbmdlbGlzdCwgbmNoYW5nZXMsICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRsaXN0LCBuZXZlbnRzLCB0aW1lb3V0KSAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX19rZXZlbnQ1MCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykoZmQpLCAobG9uZyBsb25nKShjaGFuZ2VsaXN0KSwgKGxvbmcgbG9uZykobmNoYW5nZXMpLCAgICBcCiAgICAgIChsb25nIGxvbmcpKGV2ZW50bGlzdCksIChsb25nIGxvbmcpKG5ldmVudHMpLCAobG9uZyBsb25nKSh0aW1lb3V0KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9fX3BzZWxlY3Q1MChuZCwgaW4sIG91LCBleCwgdHMsIG1hc2spICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fcHNlbGVjdDUwKChsb25nIGxvbmcpKG5kKSwgKGxvbmcgbG9uZykoaW4pLCAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKG91KSwgKGxvbmcgbG9uZykoZXgpLCAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHRzKSwgKGxvbmcgbG9uZykobWFzaykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X19fcHNlbGVjdDUwKHJlcywgbmQsIGluLCBvdSwgZXgsIHRzLCBtYXNrKSAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX19wc2VsZWN0NTAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykobmQpLCAobG9uZyBsb25nKShpbiksIChsb25nIGxvbmcpKG91KSwgKGxvbmcgbG9uZykoZXgpLCBcCiAgICAgIChsb25nIGxvbmcpKHRzKSwgKGxvbmcgbG9uZykobWFzaykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfX19wb2xsdHM1MChmZHMsIG5mZHMsIHRzLCBtYXNrKSAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX3BvbGx0czUwKChsb25nIGxvbmcpKGZkcyksIChsb25nIGxvbmcpKG5mZHMpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHRzKSwgKGxvbmcgbG9uZykobWFzaykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X19fcG9sbHRzNTAocmVzLCBmZHMsIG5mZHMsIHRzLCBtYXNrKSAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX19wb2xsdHM1MChyZXMsIChsb25nIGxvbmcpKGZkcyksICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShuZmRzKSwgKGxvbmcgbG9uZykodHMpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShtYXNrKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9fX2Fpb19zdXNwZW5kNTAobGlzdCwgbmVudCwgdGltZW91dCkgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fYWlvX3N1c3BlbmQ1MCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykobGlzdCksIChsb25nIGxvbmcpKG5lbnQpLCAobG9uZyBsb25nKSh0aW1lb3V0KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfX19haW9fc3VzcGVuZDUwKHJlcywgbGlzdCwgbmVudCwgdGltZW91dCkgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX2Fpb19zdXNwZW5kNTAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShsaXN0KSwgKGxvbmcgbG9uZykobmVudCksIChsb25nIGxvbmcpKHRpbWVvdXQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX19fc3RhdDUwKHBhdGgsIHViKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19zdGF0NTAoKGxvbmcgbG9uZykocGF0aCksIChsb25nIGxvbmcpKHViKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfX19zdGF0NTAocmVzLCBwYXRoLCB1YikgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX3N0YXQ1MChyZXMsIChsb25nIGxvbmcpKHBhdGgpLCAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKSh1YikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfX19mc3RhdDUwKGZkLCBzYikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX2ZzdGF0NTAoKGxvbmcgbG9uZykoZmQpLCAobG9uZyBsb25nKShzYikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X19fZnN0YXQ1MChyZXMsIGZkLCBzYikgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX19mc3RhdDUwKHJlcywgKGxvbmcgbG9uZykoZmQpLCAobG9uZyBsb25nKShzYikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfX19sc3RhdDUwKHBhdGgsIHViKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX2xzdGF0NTAoKGxvbmcgbG9uZykocGF0aCksIChsb25nIGxvbmcpKHViKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfX19sc3RhdDUwKHJlcywgcGF0aCwgdWIpICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX2xzdGF0NTAocmVzLCAobG9uZyBsb25nKShwYXRoKSwgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykodWIpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX19fX19zZW1jdGw1MChzZW1pZCwgc2VtbnVtLCBjbWQsIGFyZykgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19fX3NlbWN0bDUwKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShzZW1pZCksIChsb25nIGxvbmcpKHNlbW51bSksIChsb25nIGxvbmcpKGNtZCksICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShhcmcpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9fX19fc2VtY3RsNTAocmVzLCBzZW1pZCwgc2VtbnVtLCBjbWQsIGFyZykgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fX19zZW1jdGw1MCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKHNlbWlkKSwgKGxvbmcgbG9uZykoc2VtbnVtKSwgKGxvbmcgbG9uZykoY21kKSwgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShhcmcpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX19fc2htY3RsNTAoc2htaWQsIGNtZCwgYnVmKSAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19zaG1jdGw1MCgobG9uZyBsb25nKShzaG1pZCksICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShjbWQpLCAobG9uZyBsb25nKShidWYpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9fX3NobWN0bDUwKHJlcywgc2htaWQsIGNtZCwgYnVmKSAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fc2htY3RsNTAocmVzLCAobG9uZyBsb25nKShzaG1pZCksICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoY21kKSwgKGxvbmcgbG9uZykoYnVmKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9fX21zZ2N0bDUwKG1zcWlkLCBjbWQsIGJ1ZikgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fbXNnY3RsNTAoKGxvbmcgbG9uZykobXNxaWQpLCAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoY21kKSwgKGxvbmcgbG9uZykoYnVmKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfX19tc2djdGw1MChyZXMsIG1zcWlkLCBjbWQsIGJ1ZikgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX21zZ2N0bDUwKHJlcywgKGxvbmcgbG9uZykobXNxaWQpLCAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGNtZCksIChsb25nIGxvbmcpKGJ1ZikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfX19nZXRydXNhZ2U1MCh3aG8sIHJ1c2FnZSkgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX2dldHJ1c2FnZTUwKChsb25nIGxvbmcpKHdobyksICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHJ1c2FnZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X19fZ2V0cnVzYWdlNTAocmVzLCB3aG8sIHJ1c2FnZSkgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX19nZXRydXNhZ2U1MChyZXMsIChsb25nIGxvbmcpKHdobyksICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShydXNhZ2UpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX19fdGltZXJfc2V0dGltZTUwKHRpbWVyaWQsIGZsYWdzLCB2YWx1ZSwgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92YWx1ZSkgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX190aW1lcl9zZXR0aW1lNTAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKSh0aW1lcmlkKSwgKGxvbmcgbG9uZykoZmxhZ3MpLCAobG9uZyBsb25nKSh2YWx1ZSksICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShvdmFsdWUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9fX3RpbWVyX3NldHRpbWU1MChyZXMsIHRpbWVyaWQsIGZsYWdzLCB2YWx1ZSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmFsdWUpICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fdGltZXJfc2V0dGltZTUwKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKHRpbWVyaWQpLCAobG9uZyBsb25nKShmbGFncyksIChsb25nIGxvbmcpKHZhbHVlKSwgICAgICAgXAogICAgICAobG9uZyBsb25nKShvdmFsdWUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX19fdGltZXJfZ2V0dGltZTUwKHRpbWVyaWQsIHZhbHVlKSAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX190aW1lcl9nZXR0aW1lNTAoKGxvbmcgbG9uZykodGltZXJpZCksICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykodmFsdWUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9fX3RpbWVyX2dldHRpbWU1MChyZXMsIHRpbWVyaWQsIHZhbHVlKSAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fdGltZXJfZ2V0dGltZTUwKHJlcywgKGxvbmcgbG9uZykodGltZXJpZCksICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHZhbHVlKSkKI2lmIGRlZmluZWQoTlRQKSB8fCAhZGVmaW5lZChfS0VSTkVMX09QVCkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9fX250cF9nZXR0aW1lNTAobnR2cCkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fbnRwX2dldHRpbWU1MCgobG9uZyBsb25nKShudHZwKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfX19udHBfZ2V0dGltZTUwKHJlcywgbnR2cCkgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX250cF9nZXR0aW1lNTAocmVzLCAobG9uZyBsb25nKShudHZwKSkKI2Vsc2UKLyogc3lzY2FsbCA0NDggaGFzIGJlZW4gc2tpcHBlZCAqLwojZW5kaWYKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9fX3dhaXQ0NTAocGlkLCBzdGF0dXMsIG9wdGlvbnMsIHJ1c2FnZSkgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fd2FpdDQ1MCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykocGlkKSwgKGxvbmcgbG9uZykoc3RhdHVzKSwgKGxvbmcgbG9uZykob3B0aW9ucyksICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykocnVzYWdlKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfX193YWl0NDUwKHJlcywgcGlkLCBzdGF0dXMsIG9wdGlvbnMsIHJ1c2FnZSkgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX3dhaXQ0NTAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShwaWQpLCAobG9uZyBsb25nKShzdGF0dXMpLCAobG9uZyBsb25nKShvcHRpb25zKSwgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykocnVzYWdlKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9fX21rbm9kNTAocGF0aCwgbW9kZSwgZGV2KSAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fbWtub2Q1MCgobG9uZyBsb25nKShwYXRoKSwgKGxvbmcgbG9uZykobW9kZSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShkZXYpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9fX21rbm9kNTAocmVzLCBwYXRoLCBtb2RlLCBkZXYpICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fbWtub2Q1MChyZXMsIChsb25nIGxvbmcpKHBhdGgpLCAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShtb2RlKSwgKGxvbmcgbG9uZykoZGV2KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9fX2Zoc3RhdDUwKGZocCwgZmhfc2l6ZSwgc2IpICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fZmhzdGF0NTAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykoZmhwKSwgKGxvbmcgbG9uZykoZmhfc2l6ZSksIChsb25nIGxvbmcpKHNiKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfX19maHN0YXQ1MChyZXMsIGZocCwgZmhfc2l6ZSwgc2IpICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX2Zoc3RhdDUwKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShmaHApLCAobG9uZyBsb25nKShmaF9zaXplKSwgKGxvbmcgbG9uZykoc2IpKQovKiBzeXNjYWxsIDQ1MiBoYXMgYmVlbiBza2lwcGVkICovCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfcGlwZTIoZmlsZGVzLCBmbGFncykgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9waXBlMigobG9uZyBsb25nKShmaWxkZXMpLCAobG9uZyBsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3BpcGUyKHJlcywgZmlsZGVzLCBmbGFncykgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcGlwZTIocmVzLCAobG9uZyBsb25nKShmaWxkZXMpLCAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoZmxhZ3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2R1cDMoZnJvbSwgdG8sIGZsYWdzKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZHVwMygobG9uZyBsb25nKShmcm9tKSwgKGxvbmcgbG9uZykodG8pLCAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2R1cDMocmVzLCBmcm9tLCB0bywgZmxhZ3MpICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZHVwMyhyZXMsIChsb25nIGxvbmcpKGZyb20pLCAobG9uZyBsb25nKSh0byksICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfa3F1ZXVlMShmbGFncykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9rcXVldWUxKChsb25nIGxvbmcpKGZsYWdzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfa3F1ZXVlMShyZXMsIGZsYWdzKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9rcXVldWUxKHJlcywgKGxvbmcgbG9uZykoZmxhZ3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3BhY2NlcHQocywgbmFtZSwgYW5hbWVsZW4sIG1hc2ssIGZsYWdzKSAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfcGFjY2VwdCgobG9uZyBsb25nKShzKSwgKGxvbmcgbG9uZykobmFtZSksICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShhbmFtZWxlbiksICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShtYXNrKSwgKGxvbmcgbG9uZykoZmxhZ3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9wYWNjZXB0KHJlcywgcywgbmFtZSwgYW5hbWVsZW4sIG1hc2ssIGZsYWdzKSAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3BhY2NlcHQoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKHMpLCAobG9uZyBsb25nKShuYW1lKSwgKGxvbmcgbG9uZykoYW5hbWVsZW4pLCAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShtYXNrKSwgKGxvbmcgbG9uZykoZmxhZ3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2xpbmthdChmZDEsIG5hbWUxLCBmZDIsIG5hbWUyLCBmbGFncykgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbGlua2F0KChsb25nIGxvbmcpKGZkMSksIChsb25nIGxvbmcpKG5hbWUxKSwgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGZkMiksIChsb25nIGxvbmcpKG5hbWUyKSwgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGZsYWdzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfbGlua2F0KHJlcywgZmQxLCBuYW1lMSwgZmQyLCBuYW1lMiwgZmxhZ3MpICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9saW5rYXQocmVzLCAobG9uZyBsb25nKShmZDEpLCAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykobmFtZTEpLCAobG9uZyBsb25nKShmZDIpLCAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykobmFtZTIpLCAobG9uZyBsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfcmVuYW1lYXQoZnJvbWZkLCBmcm9tLCB0b2ZkLCB0bykgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9yZW5hbWVhdCgobG9uZyBsb25nKShmcm9tZmQpLCAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShmcm9tKSwgKGxvbmcgbG9uZykodG9mZCksICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKSh0bykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3JlbmFtZWF0KHJlcywgZnJvbWZkLCBmcm9tLCB0b2ZkLCB0bykgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcmVuYW1lYXQocmVzLCAobG9uZyBsb25nKShmcm9tZmQpLCAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoZnJvbSksIChsb25nIGxvbmcpKHRvZmQpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykodG8pKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX21rZmlmb2F0KGZkLCBwYXRoLCBtb2RlKSAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbWtmaWZvYXQoKGxvbmcgbG9uZykoZmQpLCAobG9uZyBsb25nKShwYXRoKSwgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykobW9kZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X21rZmlmb2F0KHJlcywgZmQsIHBhdGgsIG1vZGUpICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbWtmaWZvYXQocmVzLCAobG9uZyBsb25nKShmZCksICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykocGF0aCksIChsb25nIGxvbmcpKG1vZGUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX21rbm9kYXQoZmQsIHBhdGgsIG1vZGUsIFBBRCwgZGV2KSAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbWtub2RhdCgobG9uZyBsb25nKShmZCksIChsb25nIGxvbmcpKHBhdGgpLCAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShtb2RlKSwgKGxvbmcgbG9uZykoUEFEKSwgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShkZXYpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9ta25vZGF0KHJlcywgZmQsIHBhdGgsIG1vZGUsIFBBRCwgZGV2KSAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX21rbm9kYXQocmVzLCAobG9uZyBsb25nKShmZCksICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykocGF0aCksIChsb25nIGxvbmcpKG1vZGUpLCAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoUEFEKSwgKGxvbmcgbG9uZykoZGV2KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9ta2RpcmF0KGZkLCBwYXRoLCBtb2RlKSAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX21rZGlyYXQoKGxvbmcgbG9uZykoZmQpLCAobG9uZyBsb25nKShwYXRoKSwgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykobW9kZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X21rZGlyYXQocmVzLCBmZCwgcGF0aCwgbW9kZSkgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbWtkaXJhdChyZXMsIChsb25nIGxvbmcpKGZkKSwgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShwYXRoKSwgKGxvbmcgbG9uZykobW9kZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZmFjY2Vzc2F0KGZkLCBwYXRoLCBhbW9kZSwgZmxhZykgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9mYWNjZXNzYXQoKGxvbmcgbG9uZykoZmQpLCAobG9uZyBsb25nKShwYXRoKSwgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoYW1vZGUpLCAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoZmxhZykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ZhY2Nlc3NhdChyZXMsIGZkLCBwYXRoLCBhbW9kZSwgZmxhZykgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZmFjY2Vzc2F0KCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykoZmQpLCAobG9uZyBsb25nKShwYXRoKSwgKGxvbmcgbG9uZykoYW1vZGUpLCAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGZsYWcpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ZjaG1vZGF0KGZkLCBwYXRoLCBtb2RlLCBmbGFnKSAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZmNobW9kYXQoKGxvbmcgbG9uZykoZmQpLCAobG9uZyBsb25nKShwYXRoKSwgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykobW9kZSksIChsb25nIGxvbmcpKGZsYWcpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9mY2htb2RhdChyZXMsIGZkLCBwYXRoLCBtb2RlLCBmbGFnKSAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2ZjaG1vZGF0KHJlcywgKGxvbmcgbG9uZykoZmQpLCAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHBhdGgpLCAobG9uZyBsb25nKShtb2RlKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGZsYWcpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ZjaG93bmF0KGZkLCBwYXRoLCBvd25lciwgZ3JvdXAsIGZsYWcpICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZmNob3duYXQoKGxvbmcgbG9uZykoZmQpLCAobG9uZyBsb25nKShwYXRoKSwgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykob3duZXIpLCAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoZ3JvdXApLCAobG9uZyBsb25nKShmbGFnKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZmNob3duYXQocmVzLCBmZCwgcGF0aCwgb3duZXIsIGdyb3VwLCBmbGFnKSAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9mY2hvd25hdCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShmZCksIChsb25nIGxvbmcpKHBhdGgpLCAobG9uZyBsb25nKShvd25lciksICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykoZ3JvdXApLCAobG9uZyBsb25nKShmbGFnKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9mZXhlY3ZlKGZkLCBhcmdwLCBlbnZwKSAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2ZleGVjdmUoKGxvbmcgbG9uZykoZmQpLCAobG9uZyBsb25nKShhcmdwKSwgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoZW52cCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ZleGVjdmUocmVzLCBmZCwgYXJncCwgZW52cCkgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZmV4ZWN2ZShyZXMsIChsb25nIGxvbmcpKGZkKSwgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShhcmdwKSwgKGxvbmcgbG9uZykoZW52cCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZnN0YXRhdChmZCwgcGF0aCwgYnVmLCBmbGFnKSAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9mc3RhdGF0KChsb25nIGxvbmcpKGZkKSwgKGxvbmcgbG9uZykocGF0aCksICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGJ1ZiksIChsb25nIGxvbmcpKGZsYWcpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9mc3RhdGF0KHJlcywgZmQsIHBhdGgsIGJ1ZiwgZmxhZykgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2ZzdGF0YXQocmVzLCAobG9uZyBsb25nKShmZCksICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykocGF0aCksIChsb25nIGxvbmcpKGJ1ZiksICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoZmxhZykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfdXRpbWVuc2F0KGZkLCBwYXRoLCB0cHRyLCBmbGFnKSAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF91dGltZW5zYXQoKGxvbmcgbG9uZykoZmQpLCAobG9uZyBsb25nKShwYXRoKSwgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykodHB0ciksIChsb25nIGxvbmcpKGZsYWcpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF91dGltZW5zYXQocmVzLCBmZCwgcGF0aCwgdHB0ciwgZmxhZykgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3V0aW1lbnNhdCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKGZkKSwgKGxvbmcgbG9uZykocGF0aCksIChsb25nIGxvbmcpKHRwdHIpLCAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShmbGFnKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9vcGVuYXQoZmQsIHBhdGgsIG9mbGFncywgbW9kZSkgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX29wZW5hdCgobG9uZyBsb25nKShmZCksIChsb25nIGxvbmcpKHBhdGgpLCAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShvZmxhZ3MpLCAobG9uZyBsb25nKShtb2RlKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfb3BlbmF0KHJlcywgZmQsIHBhdGgsIG9mbGFncywgbW9kZSkgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9vcGVuYXQocmVzLCAobG9uZyBsb25nKShmZCksICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykocGF0aCksIChsb25nIGxvbmcpKG9mbGFncyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykobW9kZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfcmVhZGxpbmthdChmZCwgcGF0aCwgYnVmLCBidWZzaXplKSAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9yZWFkbGlua2F0KChsb25nIGxvbmcpKGZkKSwgKGxvbmcgbG9uZykocGF0aCksICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGJ1ZiksICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGJ1ZnNpemUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9yZWFkbGlua2F0KHJlcywgZmQsIHBhdGgsIGJ1ZiwgYnVmc2l6ZSkgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3JlYWRsaW5rYXQoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKGZkKSwgKGxvbmcgbG9uZykocGF0aCksIChsb25nIGxvbmcpKGJ1ZiksICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShidWZzaXplKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zeW1saW5rYXQocGF0aDEsIGZkLCBwYXRoMikgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3N5bWxpbmthdCgobG9uZyBsb25nKShwYXRoMSksIChsb25nIGxvbmcpKGZkKSwgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShwYXRoMikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3N5bWxpbmthdChyZXMsIHBhdGgxLCBmZCwgcGF0aDIpICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc3ltbGlua2F0KHJlcywgKGxvbmcgbG9uZykocGF0aDEpLCAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKGZkKSwgKGxvbmcgbG9uZykocGF0aDIpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3VubGlua2F0KGZkLCBwYXRoLCBmbGFnKSAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfdW5saW5rYXQoKGxvbmcgbG9uZykoZmQpLCAobG9uZyBsb25nKShwYXRoKSwgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoZmxhZykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3VubGlua2F0KHJlcywgZmQsIHBhdGgsIGZsYWcpICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfdW5saW5rYXQocmVzLCAobG9uZyBsb25nKShmZCksICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykocGF0aCksIChsb25nIGxvbmcpKGZsYWcpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2Z1dGltZW5zKGZkLCB0cHRyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZnV0aW1lbnMoKGxvbmcgbG9uZykoZmQpLCAobG9uZyBsb25nKSh0cHRyKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZnV0aW1lbnMocmVzLCBmZCwgdHB0cikgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9mdXRpbWVucyhyZXMsIChsb25nIGxvbmcpKGZkKSwgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKSh0cHRyKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9fX3F1b3RhY3RsKHBhdGgsIGFyZ3MpICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fcXVvdGFjdGwoKGxvbmcgbG9uZykocGF0aCksIChsb25nIGxvbmcpKGFyZ3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9fX3F1b3RhY3RsKHJlcywgcGF0aCwgYXJncykgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fcXVvdGFjdGwocmVzLCAobG9uZyBsb25nKShwYXRoKSwgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoYXJncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfcG9zaXhfc3Bhd24ocGlkLCBwYXRoLCBmaWxlX2FjdGlvbnMsIGF0dHJwLCAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndiwgZW52cCkgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9wb3NpeF9zcGF3biggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKHBpZCksIChsb25nIGxvbmcpKHBhdGgpLCAobG9uZyBsb25nKShmaWxlX2FjdGlvbnMpLCAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGF0dHJwKSwgKGxvbmcgbG9uZykoYXJndiksIChsb25nIGxvbmcpKGVudnApKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9wb3NpeF9zcGF3bihyZXMsIHBpZCwgcGF0aCwgZmlsZV9hY3Rpb25zLCAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRycCwgYXJndiwgZW52cCkgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3Bvc2l4X3NwYXduKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKHBpZCksIChsb25nIGxvbmcpKHBhdGgpLCAobG9uZyBsb25nKShmaWxlX2FjdGlvbnMpLCAgICAgXAogICAgICAobG9uZyBsb25nKShhdHRycCksIChsb25nIGxvbmcpKGFyZ3YpLCAobG9uZyBsb25nKShlbnZwKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9yZWN2bW1zZyhzLCBtbXNnLCB2bGVuLCBmbGFncywgdGltZW91dCkgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3JlY3ZtbXNnKChsb25nIGxvbmcpKHMpLCAobG9uZyBsb25nKShtbXNnKSwgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHZsZW4pLCAobG9uZyBsb25nKShmbGFncyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHRpbWVvdXQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9yZWN2bW1zZyhyZXMsIHMsIG1tc2csIHZsZW4sIGZsYWdzLCB0aW1lb3V0KSAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3JlY3ZtbXNnKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKHMpLCAobG9uZyBsb25nKShtbXNnKSwgKGxvbmcgbG9uZykodmxlbiksICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShmbGFncyksIChsb25nIGxvbmcpKHRpbWVvdXQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3NlbmRtbXNnKHMsIG1tc2csIHZsZW4sIGZsYWdzKSAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2VuZG1tc2coKGxvbmcgbG9uZykocyksIChsb25nIGxvbmcpKG1tc2cpLCAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykodmxlbiksIChsb25nIGxvbmcpKGZsYWdzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfc2VuZG1tc2cocmVzLCBzLCBtbXNnLCB2bGVuLCBmbGFncykgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZW5kbW1zZyhyZXMsIChsb25nIGxvbmcpKHMpLCAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShtbXNnKSwgKGxvbmcgbG9uZykodmxlbiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY2xvY2tfbmFub3NsZWVwKGNsb2NrX2lkLCBmbGFncywgcnF0cCwgcm10cCkgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jbG9ja19uYW5vc2xlZXAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGNsb2NrX2lkKSwgKGxvbmcgbG9uZykoZmxhZ3MpLCAobG9uZyBsb25nKShycXRwKSwgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKHJtdHApKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jbG9ja19uYW5vc2xlZXAocmVzLCBjbG9ja19pZCwgZmxhZ3MsIHJxdHAsICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm10cCkgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2Nsb2NrX25hbm9zbGVlcCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKGNsb2NrX2lkKSwgKGxvbmcgbG9uZykoZmxhZ3MpLCAobG9uZyBsb25nKShycXRwKSwgICAgICAgXAogICAgICAobG9uZyBsb25nKShybXRwKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9fX19sd3BfcGFyazYwKGNsb2NrX2lkLCBmbGFncywgdHMsIHVucGFyaywgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpbnQsIHVucGFya2hpbnQpICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fX2x3cF9wYXJrNjAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykoY2xvY2tfaWQpLCAobG9uZyBsb25nKShmbGFncyksIChsb25nIGxvbmcpKHRzKSwgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykodW5wYXJrKSwgKGxvbmcgbG9uZykoaGludCksIChsb25nIGxvbmcpKHVucGFya2hpbnQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9fX19sd3BfcGFyazYwKHJlcywgY2xvY2tfaWQsIGZsYWdzLCB0cywgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVucGFyaywgaGludCwgdW5wYXJraGludCkgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fX2x3cF9wYXJrNjAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKGNsb2NrX2lkKSwgKGxvbmcgbG9uZykoZmxhZ3MpLCAobG9uZyBsb25nKSh0cyksICAgICAgICAgXAogICAgICAobG9uZyBsb25nKSh1bnBhcmspLCAobG9uZyBsb25nKShoaW50KSwgKGxvbmcgbG9uZykodW5wYXJraGludCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfcG9zaXhfZmFsbG9jYXRlKGZkLCBQQUQsIHBvcywgbGVuKSAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9wb3NpeF9mYWxsb2NhdGUoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGZkKSwgKGxvbmcgbG9uZykoUEFEKSwgKGxvbmcgbG9uZykocG9zKSwgKGxvbmcgbG9uZykobGVuKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfcG9zaXhfZmFsbG9jYXRlKHJlcywgZmQsIFBBRCwgcG9zLCBsZW4pICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9wb3NpeF9mYWxsb2NhdGUoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShmZCksIChsb25nIGxvbmcpKFBBRCksIChsb25nIGxvbmcpKHBvcyksICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykobGVuKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9mZGlzY2FyZChmZCwgUEFELCBwb3MsIGxlbikgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2ZkaXNjYXJkKChsb25nIGxvbmcpKGZkKSwgKGxvbmcgbG9uZykoUEFEKSwgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHBvcyksIChsb25nIGxvbmcpKGxlbikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ZkaXNjYXJkKHJlcywgZmQsIFBBRCwgcG9zLCBsZW4pICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZmRpc2NhcmQocmVzLCAobG9uZyBsb25nKShmZCksICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykoUEFEKSwgKGxvbmcgbG9uZykocG9zKSwgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykobGVuKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV93YWl0NihpZHR5cGUsIGlkLCBzdGF0dXMsIG9wdGlvbnMsIHdydSwgaW5mbykgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3dhaXQ2KCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykoaWR0eXBlKSwgKGxvbmcgbG9uZykoaWQpLCAobG9uZyBsb25nKShzdGF0dXMpLCAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykob3B0aW9ucyksIChsb25nIGxvbmcpKHdydSksIChsb25nIGxvbmcpKGluZm8pKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF93YWl0NihyZXMsIGlkdHlwZSwgaWQsIHN0YXR1cywgb3B0aW9ucywgd3J1LCAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3dhaXQ2KCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKGlkdHlwZSksIChsb25nIGxvbmcpKGlkKSwgKGxvbmcgbG9uZykoc3RhdHVzKSwgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShvcHRpb25zKSwgKGxvbmcgbG9uZykod3J1KSwgKGxvbmcgbG9uZykoaW5mbykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY2xvY2tfZ2V0Y3B1Y2xvY2tpZDIoaWR0eXBlLCBpZCwgY2xvY2tfaWQpICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jbG9ja19nZXRjcHVjbG9ja2lkMiggICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGlkdHlwZSksIChsb25nIGxvbmcpKGlkKSwgKGxvbmcgbG9uZykoY2xvY2tfaWQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jbG9ja19nZXRjcHVjbG9ja2lkMihyZXMsIGlkdHlwZSwgaWQsICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9ja19pZCkgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2Nsb2NrX2dldGNwdWNsb2NraWQyKCAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKGlkdHlwZSksIChsb25nIGxvbmcpKGlkKSwgKGxvbmcgbG9uZykoY2xvY2tfaWQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX19fZ2V0dmZzc3RhdDkwKGJ1ZiwgYnVmc2l6ZSwgZmxhZ3MpICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19nZXR2ZnNzdGF0OTAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShidWYpLCAobG9uZyBsb25nKShidWZzaXplKSwgKGxvbmcgbG9uZykoZmxhZ3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9fX2dldHZmc3N0YXQ5MChyZXMsIGJ1ZiwgYnVmc2l6ZSwgZmxhZ3MpICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fZ2V0dmZzc3RhdDkwKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKGJ1ZiksIChsb25nIGxvbmcpKGJ1ZnNpemUpLCAobG9uZyBsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfX19zdGF0dmZzMTkwKHBhdGgsIGJ1ZiwgZmxhZ3MpICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX3N0YXR2ZnMxOTAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKHBhdGgpLCAobG9uZyBsb25nKShidWYpLCAobG9uZyBsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X19fc3RhdHZmczE5MChyZXMsIHBhdGgsIGJ1ZiwgZmxhZ3MpICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX19zdGF0dmZzMTkwKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykocGF0aCksIChsb25nIGxvbmcpKGJ1ZiksIChsb25nIGxvbmcpKGZsYWdzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9fX2ZzdGF0dmZzMTkwKGZkLCBidWYsIGZsYWdzKSAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fZnN0YXR2ZnMxOTAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykoZmQpLCAobG9uZyBsb25nKShidWYpLCAobG9uZyBsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X19fZnN0YXR2ZnMxOTAocmVzLCBmZCwgYnVmLCBmbGFncykgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX19mc3RhdHZmczE5MCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykoZmQpLCAobG9uZyBsb25nKShidWYpLCAobG9uZyBsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfX19maHN0YXR2ZnMxOTAoZmhwLCBmaF9zaXplLCBidWYsIGZsYWdzKSAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX2Zoc3RhdHZmczE5MCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGZocCksIChsb25nIGxvbmcpKGZoX3NpemUpLCAobG9uZyBsb25nKShidWYpLCAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGZsYWdzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfX19maHN0YXR2ZnMxOTAocmVzLCBmaHAsIGZoX3NpemUsIGJ1ZiwgZmxhZ3MpIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX2Zoc3RhdHZmczE5MCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShmaHApLCAobG9uZyBsb25nKShmaF9zaXplKSwgKGxvbmcgbG9uZykoYnVmKSwgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykoZmxhZ3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX19fYWNsX2dldF9saW5rKHBhdGgsIHR5cGUsIGFjbHApICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19hY2xfZ2V0X2xpbmsoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShwYXRoKSwgKGxvbmcgbG9uZykodHlwZSksIChsb25nIGxvbmcpKGFjbHApKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9fX2FjbF9nZXRfbGluayhyZXMsIHBhdGgsIHR5cGUsIGFjbHApICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fYWNsX2dldF9saW5rKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKHBhdGgpLCAobG9uZyBsb25nKSh0eXBlKSwgKGxvbmcgbG9uZykoYWNscCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfX19hY2xfc2V0X2xpbmsocGF0aCwgdHlwZSwgYWNscCkgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX2FjbF9zZXRfbGluayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKHBhdGgpLCAobG9uZyBsb25nKSh0eXBlKSwgKGxvbmcgbG9uZykoYWNscCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X19fYWNsX3NldF9saW5rKHJlcywgcGF0aCwgdHlwZSwgYWNscCkgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX19hY2xfc2V0X2xpbmsoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykocGF0aCksIChsb25nIGxvbmcpKHR5cGUpLCAobG9uZyBsb25nKShhY2xwKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9fX2FjbF9kZWxldGVfbGluayhwYXRoLCB0eXBlKSAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fYWNsX2RlbGV0ZV9saW5rKChsb25nIGxvbmcpKHBhdGgpLCAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHR5cGUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9fX2FjbF9kZWxldGVfbGluayhyZXMsIHBhdGgsIHR5cGUpICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fYWNsX2RlbGV0ZV9saW5rKHJlcywgKGxvbmcgbG9uZykocGF0aCksICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHR5cGUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX19fYWNsX2FjbGNoZWNrX2xpbmsocGF0aCwgdHlwZSwgYWNscCkgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19hY2xfYWNsY2hlY2tfbGluayggICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShwYXRoKSwgKGxvbmcgbG9uZykodHlwZSksIChsb25nIGxvbmcpKGFjbHApKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9fX2FjbF9hY2xjaGVja19saW5rKHJlcywgcGF0aCwgdHlwZSwgYWNscCkgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fYWNsX2FjbGNoZWNrX2xpbmsoICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKHBhdGgpLCAobG9uZyBsb25nKSh0eXBlKSwgKGxvbmcgbG9uZykoYWNscCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfX19hY2xfZ2V0X2ZpbGUocGF0aCwgdHlwZSwgYWNscCkgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX2FjbF9nZXRfZmlsZSggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKHBhdGgpLCAobG9uZyBsb25nKSh0eXBlKSwgKGxvbmcgbG9uZykoYWNscCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X19fYWNsX2dldF9maWxlKHJlcywgcGF0aCwgdHlwZSwgYWNscCkgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX19hY2xfZ2V0X2ZpbGUoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykocGF0aCksIChsb25nIGxvbmcpKHR5cGUpLCAobG9uZyBsb25nKShhY2xwKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9fX2FjbF9zZXRfZmlsZShwYXRoLCB0eXBlLCBhY2xwKSAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fYWNsX3NldF9maWxlKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykocGF0aCksIChsb25nIGxvbmcpKHR5cGUpLCAobG9uZyBsb25nKShhY2xwKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfX19hY2xfc2V0X2ZpbGUocmVzLCBwYXRoLCB0eXBlLCBhY2xwKSAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX2FjbF9zZXRfZmlsZSggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShwYXRoKSwgKGxvbmcgbG9uZykodHlwZSksIChsb25nIGxvbmcpKGFjbHApKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX19fYWNsX2dldF9mZChmaWxlZGVzLCB0eXBlLCBhY2xwKSAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19hY2xfZ2V0X2ZkKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShmaWxlZGVzKSwgKGxvbmcgbG9uZykodHlwZSksIChsb25nIGxvbmcpKGFjbHApKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9fX2FjbF9nZXRfZmQocmVzLCBmaWxlZGVzLCB0eXBlLCBhY2xwKSAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fYWNsX2dldF9mZCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKGZpbGVkZXMpLCAobG9uZyBsb25nKSh0eXBlKSwgKGxvbmcgbG9uZykoYWNscCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfX19hY2xfc2V0X2ZkKGZpbGVkZXMsIHR5cGUsIGFjbHApICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX2FjbF9zZXRfZmQoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nIGxvbmcpKGZpbGVkZXMpLCAobG9uZyBsb25nKSh0eXBlKSwgKGxvbmcgbG9uZykoYWNscCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X19fYWNsX3NldF9mZChyZXMsIGZpbGVkZXMsIHR5cGUsIGFjbHApICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX19hY2xfc2V0X2ZkKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcgbG9uZykoZmlsZWRlcyksIChsb25nIGxvbmcpKHR5cGUpLCAobG9uZyBsb25nKShhY2xwKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9fX2FjbF9kZWxldGVfZmlsZShwYXRoLCB0eXBlKSAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fYWNsX2RlbGV0ZV9maWxlKChsb25nIGxvbmcpKHBhdGgpLCAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHR5cGUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9fX2FjbF9kZWxldGVfZmlsZShyZXMsIHBhdGgsIHR5cGUpICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fYWNsX2RlbGV0ZV9maWxlKHJlcywgKGxvbmcgbG9uZykocGF0aCksICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHR5cGUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX19fYWNsX2RlbGV0ZV9mZChmaWxlZGVzLCB0eXBlKSAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19hY2xfZGVsZXRlX2ZkKChsb25nIGxvbmcpKGZpbGVkZXMpLCAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKHR5cGUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9fX2FjbF9kZWxldGVfZmQocmVzLCBmaWxlZGVzLCB0eXBlKSAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fYWNsX2RlbGV0ZV9mZChyZXMsIChsb25nIGxvbmcpKGZpbGVkZXMpLCAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKSh0eXBlKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9fX2FjbF9hY2xjaGVja19maWxlKHBhdGgsIHR5cGUsIGFjbHApICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fYWNsX2FjbGNoZWNrX2ZpbGUoICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcgbG9uZykocGF0aCksIChsb25nIGxvbmcpKHR5cGUpLCAobG9uZyBsb25nKShhY2xwKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfX19hY2xfYWNsY2hlY2tfZmlsZShyZXMsIHBhdGgsIHR5cGUsIGFjbHApICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX2FjbF9hY2xjaGVja19maWxlKCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZyBsb25nKShwYXRoKSwgKGxvbmcgbG9uZykodHlwZSksIChsb25nIGxvbmcpKGFjbHApKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX19fYWNsX2FjbGNoZWNrX2ZkKGZpbGVkZXMsIHR5cGUsIGFjbHApICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19hY2xfYWNsY2hlY2tfZmQoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZyBsb25nKShmaWxlZGVzKSwgKGxvbmcgbG9uZykodHlwZSksIChsb25nIGxvbmcpKGFjbHApKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9fX2FjbF9hY2xjaGVja19mZChyZXMsIGZpbGVkZXMsIHR5cGUsIGFjbHApICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fYWNsX2FjbGNoZWNrX2ZkKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nIGxvbmcpKGZpbGVkZXMpLCAobG9uZyBsb25nKSh0eXBlKSwgKGxvbmcgbG9uZykoYWNscCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfbHBhdGhjb25mKHBhdGgsIG5hbWUpICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9scGF0aGNvbmYoKGxvbmcgbG9uZykocGF0aCksIChsb25nIGxvbmcpKG5hbWUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9scGF0aGNvbmYocmVzLCBwYXRoLCBuYW1lKSAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2xwYXRoY29uZihyZXMsIChsb25nIGxvbmcpKHBhdGgpLCAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShuYW1lKSkKCi8qIENvbXBhdCB3aXRoIG9sZGVyIHJlbGVhc2VzICovCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZ2V0dmZzc3RhdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY29tcGF0XzkwX2dldHZmc3N0YXQKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZ2V0dmZzc3RhdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY29tcGF0XzkwX2dldHZmc3N0YXQKCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfc3RhdHZmczEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY29tcGF0XzkwX3N0YXR2ZnMxCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3N0YXR2ZnMxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF85MF9zdGF0dmZzMQoKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9mc3RhdHZmczEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jb21wYXRfOTBfZnN0YXR2ZnMxCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ZzdGF0dmZzMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2NvbXBhdF85MF9mc3RhdHZmczEKCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfX19maHN0YXR2ZnMxNDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY29tcGF0XzkwX2Zoc3RhdHZmczEKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfX19maHN0YXR2ZnMxNDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY29tcGF0XzkwX2Zoc3RhdHZmczEKCiNpZmRlZiBfX2NwbHVzcGx1cwpleHRlcm4gIkMiIHsKI2VuZGlmCgovLyBQcml2YXRlIGRlY2xhcmF0aW9ucy4gRG8gbm90IGNhbGwgZGlyZWN0bHkgZnJvbSB1c2VyIGNvZGUuIFVzZSBtYWNyb3MgYWJvdmUuCgovLyBETyBOT1QgRURJVCEgVEhJUyBGSUxFIEhBUyBCRUVOIEdFTkVSQVRFRCEKCnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zeXNjYWxsKGxvbmcgbG9uZyBjb2RlLCBsb25nIGxvbmcgYXJnMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGFyZzEsIGxvbmcgbG9uZyBhcmcyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYXJnMywgbG9uZyBsb25nIGFyZzQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhcmc1LCBsb25nIGxvbmcgYXJnNiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGFyZzcpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3N5c2NhbGwobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIGNvZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYXJnMCwgbG9uZyBsb25nIGFyZzEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYXJnMiwgbG9uZyBsb25nIGFyZzMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYXJnNCwgbG9uZyBsb25nIGFyZzUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYXJnNiwgbG9uZyBsb25nIGFyZzcpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZXhpdChsb25nIGxvbmcgcnZhbCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZXhpdChsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgcnZhbCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9mb3JrKHZvaWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2ZvcmsobG9uZyBsb25nIHJlcyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9yZWFkKGxvbmcgbG9uZyBmZCwgbG9uZyBsb25nIGJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG5ieXRlKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9yZWFkKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBmZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBidWYsIGxvbmcgbG9uZyBuYnl0ZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF93cml0ZShsb25nIGxvbmcgZmQsIGxvbmcgbG9uZyBidWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbmJ5dGUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3dyaXRlKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBmZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYnVmLCBsb25nIGxvbmcgbmJ5dGUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfb3Blbihsb25nIGxvbmcgcGF0aCwgbG9uZyBsb25nIGZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbW9kZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfb3Blbihsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmbGFncywgbG9uZyBsb25nIG1vZGUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY2xvc2UobG9uZyBsb25nIGZkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jbG9zZShsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgZmQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzUwX3dhaXQ0KGxvbmcgbG9uZyBwaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHN0YXR1cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgb3B0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgcnVzYWdlKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfNTBfd2FpdDQobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIHBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHN0YXR1cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBydXNhZ2UpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzQzX29jcmVhdChsb25nIGxvbmcgcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG1vZGUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF80M19vY3JlYXQobG9uZyBsb25nIHJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG1vZGUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbGluayhsb25nIGxvbmcgcGF0aCwgbG9uZyBsb25nIGxpbmspOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2xpbmsobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbGluayk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF91bmxpbmsobG9uZyBsb25nIHBhdGgpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3VubGluayhsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgcGF0aCk7Ci8qIHN5c2NhbGwgMTEgaGFzIGJlZW4gc2tpcHBlZCAqLwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY2hkaXIobG9uZyBsb25nIHBhdGgpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NoZGlyKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBwYXRoKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2ZjaGRpcihsb25nIGxvbmcgZmQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2ZjaGRpcihsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgZmQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzUwX21rbm9kKGxvbmcgbG9uZyBwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBtb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBkZXYpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF81MF9ta25vZChsb25nIGxvbmcgcmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBkZXYpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY2htb2QobG9uZyBsb25nIHBhdGgsIGxvbmcgbG9uZyBtb2RlKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jaG1vZChsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbW9kZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jaG93bihsb25nIGxvbmcgcGF0aCwgbG9uZyBsb25nIHVpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBnaWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2Nob3duKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB1aWQsIGxvbmcgbG9uZyBnaWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfYnJlYWsobG9uZyBsb25nIG5zaXplKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9icmVhayhsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgbnNpemUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzIwX2dldGZzc3RhdChsb25nIGxvbmcgYnVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYnVmc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfMjBfZ2V0ZnNzdGF0KGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYnVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGJ1ZnNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZmxhZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzQzX29sc2Vlayhsb25nIGxvbmcgZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB3aGVuY2UpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF80M19vbHNlZWsobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIGZkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB3aGVuY2UpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZ2V0cGlkKHZvaWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2dldHBpZChsb25nIGxvbmcgcmVzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF80MF9tb3VudChsb25nIGxvbmcgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGRhdGEpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF80MF9tb3VudChsb25nIGxvbmcgcmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGRhdGEpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfdW5tb3VudChsb25nIGxvbmcgcGF0aCwgbG9uZyBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF91bm1vdW50KGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NldHVpZChsb25nIGxvbmcgdWlkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZXR1aWQobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIHVpZCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9nZXR1aWQodm9pZCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZ2V0dWlkKGxvbmcgbG9uZyByZXMpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZ2V0ZXVpZCh2b2lkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9nZXRldWlkKGxvbmcgbG9uZyByZXMpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfcHRyYWNlKGxvbmcgbG9uZyByZXEsIGxvbmcgbG9uZyBwaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGFkZHIsIGxvbmcgbG9uZyBkYXRhKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9wdHJhY2UobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIHJlcSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHBpZCwgbG9uZyBsb25nIGFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBkYXRhKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3JlY3Ztc2cobG9uZyBsb25nIHMsIGxvbmcgbG9uZyBtc2csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmbGFncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcmVjdm1zZyhsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBtc2csIGxvbmcgbG9uZyBmbGFncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zZW5kbXNnKGxvbmcgbG9uZyBzLCBsb25nIGxvbmcgbXNnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZmxhZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NlbmRtc2cobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbXNnLCBsb25nIGxvbmcgZmxhZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfcmVjdmZyb20obG9uZyBsb25nIHMsIGxvbmcgbG9uZyBidWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbGVuLCBsb25nIGxvbmcgZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZnJvbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmcm9tbGVuYWRkcik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcmVjdmZyb20obG9uZyBsb25nIHJlcywgbG9uZyBsb25nIHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGJ1ZiwgbG9uZyBsb25nIGxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZmxhZ3MsIGxvbmcgbG9uZyBmcm9tLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmcm9tbGVuYWRkcik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9hY2NlcHQobG9uZyBsb25nIHMsIGxvbmcgbG9uZyBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhbmFtZWxlbik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfYWNjZXB0KGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbmFtZSwgbG9uZyBsb25nIGFuYW1lbGVuKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2dldHBlZXJuYW1lKGxvbmcgbG9uZyBmZGVzLCBsb25nIGxvbmcgYXNhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGFsZW4pOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2dldHBlZXJuYW1lKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBmZGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhc2EsIGxvbmcgbG9uZyBhbGVuKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2dldHNvY2tuYW1lKGxvbmcgbG9uZyBmZGVzLCBsb25nIGxvbmcgYXNhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGFsZW4pOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2dldHNvY2tuYW1lKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBmZGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhc2EsIGxvbmcgbG9uZyBhbGVuKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2FjY2Vzcyhsb25nIGxvbmcgcGF0aCwgbG9uZyBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9hY2Nlc3MobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmbGFncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jaGZsYWdzKGxvbmcgbG9uZyBwYXRoLCBsb25nIGxvbmcgZmxhZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NoZmxhZ3MobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZmxhZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZmNoZmxhZ3MobG9uZyBsb25nIGZkLCBsb25nIGxvbmcgZmxhZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2ZjaGZsYWdzKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBmZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZmxhZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc3luYyh2b2lkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zeW5jKGxvbmcgbG9uZyByZXMpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfa2lsbChsb25nIGxvbmcgcGlkLCBsb25nIGxvbmcgc2lnbnVtKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9raWxsKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBwaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgc2lnbnVtKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF80M19zdGF0NDMobG9uZyBsb25nIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB1Yik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzQzX3N0YXQ0Myhsb25nIGxvbmcgcmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdWIpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZ2V0cHBpZCh2b2lkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9nZXRwcGlkKGxvbmcgbG9uZyByZXMpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzQzX2xzdGF0NDMobG9uZyBsb25nIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdWIpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF80M19sc3RhdDQzKGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHViKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2R1cChsb25nIGxvbmcgZmQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2R1cChsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgZmQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfcGlwZSh2b2lkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9waXBlKGxvbmcgbG9uZyByZXMpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZ2V0ZWdpZCh2b2lkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9nZXRlZ2lkKGxvbmcgbG9uZyByZXMpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfcHJvZmlsKGxvbmcgbG9uZyBzYW1wbGVzLCBsb25nIGxvbmcgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgc2NhbGUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3Byb2ZpbChsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgc2FtcGxlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHNpemUsIGxvbmcgbG9uZyBvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBzY2FsZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9rdHJhY2UobG9uZyBsb25nIGZuYW1lLCBsb25nIGxvbmcgb3BzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmYWNzLCBsb25nIGxvbmcgcGlkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9rdHJhY2UobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIGZuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgb3BzLCBsb25nIGxvbmcgZmFjcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHBpZCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfMTNfc2lnYWN0aW9uMTMobG9uZyBsb25nIHNpZ251bSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbnNhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBvc2EpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF8xM19zaWdhY3Rpb24xMyhsb25nIGxvbmcgcmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgc2lnbnVtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbnNhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgb3NhKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2dldGdpZCh2b2lkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9nZXRnaWQobG9uZyBsb25nIHJlcyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfMTNfc2lncHJvY21hc2sxMyhsb25nIGxvbmcgaG93LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG1hc2spOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF8xM19zaWdwcm9jbWFzazEzKGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGhvdywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbWFzayk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX2dldGxvZ2luKGxvbmcgbG9uZyBuYW1lYnVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbmFtZWxlbik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX19nZXRsb2dpbihsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgbmFtZWJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBuYW1lbGVuKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fc2V0bG9naW4obG9uZyBsb25nIG5hbWVidWYpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fc2V0bG9naW4obG9uZyBsb25nIHJlcywgbG9uZyBsb25nIG5hbWVidWYpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfYWNjdChsb25nIGxvbmcgcGF0aCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfYWNjdChsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgcGF0aCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfMTNfc2lncGVuZGluZzEzKHZvaWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF8xM19zaWdwZW5kaW5nMTMobG9uZyBsb25nIHJlcyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfMTNfc2lnYWx0c3RhY2sxMyhsb25nIGxvbmcgbnNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG9zcyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzEzX3NpZ2FsdHN0YWNrMTMobG9uZyBsb25nIHJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbnNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBvc3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfaW9jdGwobG9uZyBsb25nIGZkLCBsb25nIGxvbmcgY29tLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGRhdGEpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2lvY3RsKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBmZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgY29tLCBsb25nIGxvbmcgZGF0YSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfMTJfb3JlYm9vdChsb25nIGxvbmcgb3B0KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfMTJfb3JlYm9vdChsb25nIGxvbmcgcmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBvcHQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfcmV2b2tlKGxvbmcgbG9uZyBwYXRoKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9yZXZva2UobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIHBhdGgpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc3ltbGluayhsb25nIGxvbmcgcGF0aCwgbG9uZyBsb25nIGxpbmspOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3N5bWxpbmsobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbGluayk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9yZWFkbGluayhsb25nIGxvbmcgcGF0aCwgbG9uZyBsb25nIGJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBjb3VudCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcmVhZGxpbmsobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGJ1ZiwgbG9uZyBsb25nIGNvdW50KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2V4ZWN2ZShsb25nIGxvbmcgcGF0aCwgbG9uZyBsb25nIGFyZ3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGVudnApOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2V4ZWN2ZShsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGFyZ3AsIGxvbmcgbG9uZyBlbnZwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3VtYXNrKGxvbmcgbG9uZyBuZXdtYXNrKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF91bWFzayhsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgbmV3bWFzayk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jaHJvb3QobG9uZyBsb25nIHBhdGgpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2Nocm9vdChsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgcGF0aCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfNDNfZnN0YXQ0Myhsb25nIGxvbmcgZmQsIGxvbmcgbG9uZyBzYik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzQzX2ZzdGF0NDMobG9uZyBsb25nIHJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHNiKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF80M19vZ2V0a2VybmluZm8obG9uZyBsb25nIG9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgd2hlcmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYXJnKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfNDNfb2dldGtlcm5pbmZvKGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgb3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgd2hlcmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhcmcpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzQzX29nZXRwYWdlc2l6ZSh2b2lkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfNDNfb2dldHBhZ2VzaXplKGxvbmcgbG9uZyByZXMpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzEyX21zeW5jKGxvbmcgbG9uZyBhZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBsZW4pOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF8xMl9tc3luYyhsb25nIGxvbmcgcmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGxlbik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF92Zm9yayh2b2lkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF92Zm9yayhsb25nIGxvbmcgcmVzKTsKLyogc3lzY2FsbCA2NyBoYXMgYmVlbiBza2lwcGVkICovCi8qIHN5c2NhbGwgNjggaGFzIGJlZW4gc2tpcHBlZCAqLwovKiBzeXNjYWxsIDY5IGhhcyBiZWVuIHNraXBwZWQgKi8KLyogc3lzY2FsbCA3MCBoYXMgYmVlbiBza2lwcGVkICovCnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfNDNfb21tYXAobG9uZyBsb25nIGFkZHIsIGxvbmcgbG9uZyBsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHByb3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGZsYWdzLCBsb25nIGxvbmcgZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHBvcyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzQzX29tbWFwKAogICAgbG9uZyBsb25nIHJlcywgbG9uZyBsb25nIGFkZHIsIGxvbmcgbG9uZyBsZW4sIGxvbmcgbG9uZyBwcm90LAogICAgbG9uZyBsb25nIGZsYWdzLCBsb25nIGxvbmcgZmQsIGxvbmcgbG9uZyBwb3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfdmFkdmlzZShsb25nIGxvbmcgYW5vbSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfdmFkdmlzZShsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgYW5vbSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9tdW5tYXAobG9uZyBsb25nIGFkZHIsIGxvbmcgbG9uZyBsZW4pOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX211bm1hcChsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGxlbik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9tcHJvdGVjdChsb25nIGxvbmcgYWRkciwgbG9uZyBsb25nIGxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBwcm90KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9tcHJvdGVjdChsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbGVuLCBsb25nIGxvbmcgcHJvdCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9tYWR2aXNlKGxvbmcgbG9uZyBhZGRyLCBsb25nIGxvbmcgbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYmVoYXYpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX21hZHZpc2UobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIGFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbGVuLCBsb25nIGxvbmcgYmVoYXYpOwovKiBzeXNjYWxsIDc2IGhhcyBiZWVuIHNraXBwZWQgKi8KLyogc3lzY2FsbCA3NyBoYXMgYmVlbiBza2lwcGVkICovCnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9taW5jb3JlKGxvbmcgbG9uZyBhZGRyLCBsb25nIGxvbmcgbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdmVjKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9taW5jb3JlKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBhZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGxlbiwgbG9uZyBsb25nIHZlYyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9nZXRncm91cHMobG9uZyBsb25nIGdpZHNldHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGdpZHNldCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZ2V0Z3JvdXBzKGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBnaWRzZXRzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZ2lkc2V0KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NldGdyb3Vwcyhsb25nIGxvbmcgZ2lkc2V0c2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZ2lkc2V0KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZXRncm91cHMobG9uZyBsb25nIHJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGdpZHNldHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBnaWRzZXQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZ2V0cGdycCh2b2lkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9nZXRwZ3JwKGxvbmcgbG9uZyByZXMpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2V0cGdpZChsb25nIGxvbmcgcGlkLCBsb25nIGxvbmcgcGdpZCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2V0cGdpZChsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgcGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHBnaWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzUwX3NldGl0aW1lcihsb25nIGxvbmcgd2hpY2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBpdHYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBvaXR2KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfNTBfc2V0aXRpbWVyKGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgd2hpY2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgaXR2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG9pdHYpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzQzX293YWl0KHZvaWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF80M19vd2FpdChsb25nIGxvbmcgcmVzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF8xMl9vc3dhcG9uKGxvbmcgbG9uZyBuYW1lKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfMTJfb3N3YXBvbihsb25nIGxvbmcgcmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBuYW1lKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF81MF9nZXRpdGltZXIobG9uZyBsb25nIHdoaWNoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgaXR2KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfNTBfZ2V0aXRpbWVyKGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgd2hpY2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgaXR2KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF80M19vZ2V0aG9zdG5hbWUobG9uZyBsb25nIGhvc3RuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbGVuKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfNDNfb2dldGhvc3RuYW1lKGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgaG9zdG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbGVuKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF80M19vc2V0aG9zdG5hbWUobG9uZyBsb25nIGhvc3RuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbGVuKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfNDNfb3NldGhvc3RuYW1lKGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgaG9zdG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbGVuKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF80M19vZ2V0ZHRhYmxlc2l6ZSh2b2lkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfNDNfb2dldGR0YWJsZXNpemUobG9uZyBsb25nIHJlcyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9kdXAyKGxvbmcgbG9uZyBmcm9tLCBsb25nIGxvbmcgdG8pOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2R1cDIobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIGZyb20sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdG8pOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZ2V0cmFuZG9tKGxvbmcgbG9uZyBidWYsIGxvbmcgbG9uZyBidWZsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9nZXRyYW5kb20obG9uZyBsb25nIHJlcywgbG9uZyBsb25nIGJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGJ1ZmxlbiwgbG9uZyBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2ZjbnRsKGxvbmcgbG9uZyBmZCwgbG9uZyBsb25nIGNtZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhcmcpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2ZjbnRsKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBmZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgY21kLCBsb25nIGxvbmcgYXJnKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF81MF9zZWxlY3QobG9uZyBsb25nIG5kLCBsb25nIGxvbmcgaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBvdSwgbG9uZyBsb25nIGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdHYpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF81MF9zZWxlY3QobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIG5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGluLCBsb25nIGxvbmcgb3UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZXgsIGxvbmcgbG9uZyB0dik7Ci8qIHN5c2NhbGwgOTQgaGFzIGJlZW4gc2tpcHBlZCAqLwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZnN5bmMobG9uZyBsb25nIGZkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9mc3luYyhsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgZmQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2V0cHJpb3JpdHkobG9uZyBsb25nIHdoaWNoLCBsb25nIGxvbmcgd2hvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHByaW8pOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NldHByaW9yaXR5KGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyB3aGljaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgd2hvLCBsb25nIGxvbmcgcHJpbyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfMzBfc29ja2V0KGxvbmcgbG9uZyBkb21haW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgcHJvdG9jb2wpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF8zMF9zb2NrZXQobG9uZyBsb25nIHJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBkb21haW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBwcm90b2NvbCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb25uZWN0KGxvbmcgbG9uZyBzLCBsb25nIGxvbmcgbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG5hbWVsZW4pOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2Nvbm5lY3QobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbmFtZSwgbG9uZyBsb25nIG5hbWVsZW4pOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzQzX29hY2NlcHQobG9uZyBsb25nIHMsIGxvbmcgbG9uZyBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGFuYW1lbGVuKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfNDNfb2FjY2VwdChsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYW5hbWVsZW4pOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZ2V0cHJpb3JpdHkobG9uZyBsb25nIHdoaWNoLCBsb25nIGxvbmcgd2hvKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9nZXRwcmlvcml0eShsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgd2hpY2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHdobyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfNDNfb3NlbmQobG9uZyBsb25nIHMsIGxvbmcgbG9uZyBidWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZmxhZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF80M19vc2VuZChsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGJ1ZiwgbG9uZyBsb25nIGxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF80M19vcmVjdihsb25nIGxvbmcgcywgbG9uZyBsb25nIGJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmbGFncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzQzX29yZWN2KGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYnVmLCBsb25nIGxvbmcgbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZmxhZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzEzX3NpZ3JldHVybjEzKGxvbmcgbG9uZyBzaWdjbnR4cCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzEzX3NpZ3JldHVybjEzKGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBzaWdjbnR4cCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9iaW5kKGxvbmcgbG9uZyBzLCBsb25nIGxvbmcgbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG5hbWVsZW4pOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2JpbmQobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbmFtZSwgbG9uZyBsb25nIG5hbWVsZW4pOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2V0c29ja29wdChsb25nIGxvbmcgcywgbG9uZyBsb25nIGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbmFtZSwgbG9uZyBsb25nIHZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHZhbHNpemUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NldHNvY2tvcHQobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbGV2ZWwsIGxvbmcgbG9uZyBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHZhbCwgbG9uZyBsb25nIHZhbHNpemUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbGlzdGVuKGxvbmcgbG9uZyBzLCBsb25nIGxvbmcgYmFja2xvZyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbGlzdGVuKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYmFja2xvZyk7Ci8qIHN5c2NhbGwgMTA3IGhhcyBiZWVuIHNraXBwZWQgKi8Kdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF80M19vc2lndmVjKGxvbmcgbG9uZyBzaWdudW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbnN2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG9zdik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzQzX29zaWd2ZWMobG9uZyBsb25nIHJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgc2lnbnVtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBuc3YsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG9zdik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfNDNfb3NpZ2Jsb2NrKGxvbmcgbG9uZyBtYXNrKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfNDNfb3NpZ2Jsb2NrKGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbWFzayk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfNDNfb3NpZ3NldG1hc2sobG9uZyBsb25nIG1hc2spOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF80M19vc2lnc2V0bWFzayhsb25nIGxvbmcgcmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbWFzayk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfMTNfc2lnc3VzcGVuZDEzKGxvbmcgbG9uZyBtYXNrKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfMTNfc2lnc3VzcGVuZDEzKGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbWFzayk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfNDNfb3NpZ3N0YWNrKGxvbmcgbG9uZyBuc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBvc3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF80M19vc2lnc3RhY2sobG9uZyBsb25nIHJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBuc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgb3NzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF80M19vcmVjdm1zZyhsb25nIGxvbmcgcywgbG9uZyBsb25nIG1zZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZmxhZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF80M19vcmVjdm1zZyhsb25nIGxvbmcgcmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG1zZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF80M19vc2VuZG1zZyhsb25nIGxvbmcgcywgbG9uZyBsb25nIG1zZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZmxhZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF80M19vc2VuZG1zZyhsb25nIGxvbmcgcmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG1zZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGZsYWdzKTsKLyogc3lzY2FsbCAxMTUgaGFzIGJlZW4gc2tpcHBlZCAqLwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzUwX2dldHRpbWVvZmRheShsb25nIGxvbmcgdHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB0enApOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF81MF9nZXR0aW1lb2ZkYXkobG9uZyBsb25nIHJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB0cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB0enApOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzUwX2dldHJ1c2FnZShsb25nIGxvbmcgd2hvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgcnVzYWdlKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfNTBfZ2V0cnVzYWdlKGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgd2hvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHJ1c2FnZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9nZXRzb2Nrb3B0KGxvbmcgbG9uZyBzLCBsb25nIGxvbmcgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBuYW1lLCBsb25nIGxvbmcgdmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYXZhbHNpemUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2dldHNvY2tvcHQobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbGV2ZWwsIGxvbmcgbG9uZyBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhdmFsc2l6ZSk7Ci8qIHN5c2NhbGwgMTE5IGhhcyBiZWVuIHNraXBwZWQgKi8Kdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3JlYWR2KGxvbmcgbG9uZyBmZCwgbG9uZyBsb25nIGlvdnAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgaW92Y250KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9yZWFkdihsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGlvdnAsIGxvbmcgbG9uZyBpb3ZjbnQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfd3JpdGV2KGxvbmcgbG9uZyBmZCwgbG9uZyBsb25nIGlvdnAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGlvdmNudCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfd3JpdGV2KGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBmZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGlvdnAsIGxvbmcgbG9uZyBpb3ZjbnQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzUwX3NldHRpbWVvZmRheShsb25nIGxvbmcgdHYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB0enApOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF81MF9zZXR0aW1lb2ZkYXkobG9uZyBsb25nIHJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB0diwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB0enApOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZmNob3duKGxvbmcgbG9uZyBmZCwgbG9uZyBsb25nIHVpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZ2lkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9mY2hvd24obG9uZyBsb25nIHJlcywgbG9uZyBsb25nIGZkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdWlkLCBsb25nIGxvbmcgZ2lkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2ZjaG1vZChsb25nIGxvbmcgZmQsIGxvbmcgbG9uZyBtb2RlKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9mY2htb2QobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIGZkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbW9kZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfNDNfb3JlY3Zmcm9tKAogICAgbG9uZyBsb25nIHMsIGxvbmcgbG9uZyBidWYsIGxvbmcgbG9uZyBsZW4sIGxvbmcgbG9uZyBmbGFncywgbG9uZyBsb25nIGZyb20sCiAgICBsb25nIGxvbmcgZnJvbWxlbmFkZHIpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF80M19vcmVjdmZyb20oCiAgICBsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgcywgbG9uZyBsb25nIGJ1ZiwgbG9uZyBsb25nIGxlbiwgbG9uZyBsb25nIGZsYWdzLAogICAgbG9uZyBsb25nIGZyb20sIGxvbmcgbG9uZyBmcm9tbGVuYWRkcik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zZXRyZXVpZChsb25nIGxvbmcgcnVpZCwgbG9uZyBsb25nIGV1aWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NldHJldWlkKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBydWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBldWlkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NldHJlZ2lkKGxvbmcgbG9uZyByZ2lkLCBsb25nIGxvbmcgZWdpZCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2V0cmVnaWQobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIHJnaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGVnaWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfcmVuYW1lKGxvbmcgbG9uZyBmcm9tLCBsb25nIGxvbmcgdG8pOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3JlbmFtZShsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgZnJvbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHRvKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF80M19vdHJ1bmNhdGUobG9uZyBsb25nIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBsZW5ndGgpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF80M19vdHJ1bmNhdGUobG9uZyBsb25nIHJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGxlbmd0aCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfNDNfb2Z0cnVuY2F0ZShsb25nIGxvbmcgZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbGVuZ3RoKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfNDNfb2Z0cnVuY2F0ZShsb25nIGxvbmcgcmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbGVuZ3RoKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2Zsb2NrKGxvbmcgbG9uZyBmZCwgbG9uZyBsb25nIGhvdyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZmxvY2sobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIGZkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBob3cpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbWtmaWZvKGxvbmcgbG9uZyBwYXRoLCBsb25nIGxvbmcgbW9kZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbWtmaWZvKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbW9kZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zZW5kdG8obG9uZyBsb25nIHMsIGxvbmcgbG9uZyBidWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGxlbiwgbG9uZyBsb25nIGZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB0bywgbG9uZyBsb25nIHRvbGVuKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZW5kdG8obG9uZyBsb25nIHJlcywgbG9uZyBsb25nIHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBidWYsIGxvbmcgbG9uZyBsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmbGFncywgbG9uZyBsb25nIHRvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdG9sZW4pOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2h1dGRvd24obG9uZyBsb25nIHMsIGxvbmcgbG9uZyBob3cpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NodXRkb3duKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBob3cpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc29ja2V0cGFpcihsb25nIGxvbmcgZG9tYWluLCBsb25nIGxvbmcgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHByb3RvY29sLCBsb25nIGxvbmcgcnN2KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zb2NrZXRwYWlyKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBkb21haW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBwcm90b2NvbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyByc3YpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbWtkaXIobG9uZyBsb25nIHBhdGgsIGxvbmcgbG9uZyBtb2RlKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9ta2Rpcihsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbW9kZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9ybWRpcihsb25nIGxvbmcgcGF0aCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcm1kaXIobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIHBhdGgpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzUwX3V0aW1lcyhsb25nIGxvbmcgcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHRwdHIpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF81MF91dGltZXMobG9uZyBsb25nIHJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHRwdHIpOwovKiBzeXNjYWxsIDEzOSBoYXMgYmVlbiBza2lwcGVkICovCnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfNTBfYWRqdGltZShsb25nIGxvbmcgZGVsdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgb2xkZGVsdGEpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF81MF9hZGp0aW1lKGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGRlbHRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBvbGRkZWx0YSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfNDNfb2dldHBlZXJuYW1lKGxvbmcgbG9uZyBmZGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYXNhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYWxlbik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzQzX29nZXRwZWVybmFtZShsb25nIGxvbmcgcmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGZkZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYXNhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGFsZW4pOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzQzX29nZXRob3N0aWQodm9pZCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzQzX29nZXRob3N0aWQobG9uZyBsb25nIHJlcyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfNDNfb3NldGhvc3RpZChsb25nIGxvbmcgaG9zdGlkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfNDNfb3NldGhvc3RpZChsb25nIGxvbmcgcmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBob3N0aWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzQzX29nZXRybGltaXQobG9uZyBsb25nIHdoaWNoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHJscCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzQzX29nZXRybGltaXQobG9uZyBsb25nIHJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgd2hpY2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHJscCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfNDNfb3NldHJsaW1pdChsb25nIGxvbmcgd2hpY2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgcmxwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfNDNfb3NldHJsaW1pdChsb25nIGxvbmcgcmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB3aGljaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgcmxwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF80M19va2lsbHBnKGxvbmcgbG9uZyBwZ2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHNpZ251bSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzQzX29raWxscGcobG9uZyBsb25nIHJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgcGdpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgc2lnbnVtKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NldHNpZCh2b2lkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZXRzaWQobG9uZyBsb25nIHJlcyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfNTBfcXVvdGFjdGwobG9uZyBsb25nIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGNtZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhcmcpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF81MF9xdW90YWN0bCgKICAgIGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBwYXRoLCBsb25nIGxvbmcgY21kLCBsb25nIGxvbmcgdWlkLCBsb25nIGxvbmcgYXJnKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF80M19vcXVvdGEodm9pZCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzQzX29xdW90YShsb25nIGxvbmcgcmVzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF80M19vZ2V0c29ja25hbWUobG9uZyBsb25nIGZkZWMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhc2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhbGVuKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfNDNfb2dldHNvY2tuYW1lKGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZmRlYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhc2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYWxlbik7Ci8qIHN5c2NhbGwgMTUxIGhhcyBiZWVuIHNraXBwZWQgKi8KLyogc3lzY2FsbCAxNTIgaGFzIGJlZW4gc2tpcHBlZCAqLwovKiBzeXNjYWxsIDE1MyBoYXMgYmVlbiBza2lwcGVkICovCi8qIHN5c2NhbGwgMTU0IGhhcyBiZWVuIHNraXBwZWQgKi8Kdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX25mc3N2Yyhsb25nIGxvbmcgZmxhZywgbG9uZyBsb25nIGFyZ3ApOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX25mc3N2Yyhsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgZmxhZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGFyZ3ApOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzQzX29nZXRkaXJlbnRyaWVzKGxvbmcgbG9uZyBmZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYnVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYmFzZXApOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF80M19vZ2V0ZGlyZW50cmllcyhsb25nIGxvbmcgcmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBidWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGJhc2VwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF8yMF9zdGF0ZnMobG9uZyBsb25nIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBidWYpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF8yMF9zdGF0ZnMobG9uZyBsb25nIHJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGJ1Zik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfMjBfZnN0YXRmcyhsb25nIGxvbmcgZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYnVmKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfMjBfZnN0YXRmcyhsb25nIGxvbmcgcmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYnVmKTsKLyogc3lzY2FsbCAxNTkgaGFzIGJlZW4gc2tpcHBlZCAqLwovKiBzeXNjYWxsIDE2MCBoYXMgYmVlbiBza2lwcGVkICovCnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfMzBfZ2V0ZmgobG9uZyBsb25nIGZuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmaHApOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF8zMF9nZXRmaChsb25nIGxvbmcgcmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmaHApOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzA5X29nZXRkb21haW5uYW1lKGxvbmcgbG9uZyBkb21haW5uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBsZW4pOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF8wOV9vZ2V0ZG9tYWlubmFtZSgKICAgIGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBkb21haW5uYW1lLCBsb25nIGxvbmcgbGVuKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF8wOV9vc2V0ZG9tYWlubmFtZShsb25nIGxvbmcgZG9tYWlubmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbGVuKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfMDlfb3NldGRvbWFpbm5hbWUoCiAgICBsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgZG9tYWlubmFtZSwgbG9uZyBsb25nIGxlbik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfMDlfb3VuYW1lKGxvbmcgbG9uZyBuYW1lKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfMDlfb3VuYW1lKGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbmFtZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zeXNhcmNoKGxvbmcgbG9uZyBvcCwgbG9uZyBsb25nIHBhcm1zKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zeXNhcmNoKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBvcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBwYXJtcyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX2Z1dGV4KGxvbmcgbG9uZyB1YWRkciwgbG9uZyBsb25nIG9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdmFsLCBsb25nIGxvbmcgdGltZW91dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHVhZGRyMiwgbG9uZyBsb25nIHZhbDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB2YWwzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX2Z1dGV4KGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyB1YWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBvcCwgbG9uZyBsb25nIHZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB0aW1lb3V0LCBsb25nIGxvbmcgdWFkZHIyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHZhbDIsIGxvbmcgbG9uZyB2YWwzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fZnV0ZXhfc2V0X3JvYnVzdF9saXN0KGxvbmcgbG9uZyBoZWFkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGxlbik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX19mdXRleF9zZXRfcm9idXN0X2xpc3QobG9uZyBsb25nIHJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgaGVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbGVuKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fZnV0ZXhfZ2V0X3JvYnVzdF9saXN0KGxvbmcgbG9uZyBsd3BpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBoZWFkcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBsZW5wKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX2Z1dGV4X2dldF9yb2J1c3RfbGlzdChsb25nIGxvbmcgcmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBsd3BpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgaGVhZHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGxlbnApOwojaWYgIWRlZmluZWQoX0xQNjQpCnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfMTBfb3NlbXN5cyhsb25nIGxvbmcgd2hpY2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYTIsIGxvbmcgbG9uZyBhMywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhNCwgbG9uZyBsb25nIGE1KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfMTBfb3NlbXN5cyhsb25nIGxvbmcgcmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB3aGljaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYTIsIGxvbmcgbG9uZyBhMywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYTQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGE1KTsKI2Vsc2UKLyogc3lzY2FsbCAxNjkgaGFzIGJlZW4gc2tpcHBlZCAqLwojZW5kaWYKI2lmICFkZWZpbmVkKF9MUDY0KQp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzEwX29tc2dzeXMobG9uZyBsb25nIHdoaWNoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGEyLCBsb25nIGxvbmcgYTMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYTQsIGxvbmcgbG9uZyBhNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhNik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzEwX29tc2dzeXMobG9uZyBsb25nIHJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgd2hpY2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGEyLCBsb25nIGxvbmcgYTMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGE0LCBsb25nIGxvbmcgYTUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGE2KTsKI2Vsc2UKLyogc3lzY2FsbCAxNzAgaGFzIGJlZW4gc2tpcHBlZCAqLwojZW5kaWYKI2lmICFkZWZpbmVkKF9MUDY0KQp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzEwX29zaG1zeXMobG9uZyBsb25nIHdoaWNoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGEyLCBsb25nIGxvbmcgYTMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYTQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF8xMF9vc2htc3lzKGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHdoaWNoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhMiwgbG9uZyBsb25nIGEzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhNCk7CiNlbHNlCi8qIHN5c2NhbGwgMTcxIGhhcyBiZWVuIHNraXBwZWQgKi8KI2VuZGlmCi8qIHN5c2NhbGwgMTcyIGhhcyBiZWVuIHNraXBwZWQgKi8Kdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3ByZWFkKGxvbmcgbG9uZyBmZCwgbG9uZyBsb25nIGJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBuYnl0ZSwgbG9uZyBsb25nIFBBRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBvZmZzZXQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3ByZWFkKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBmZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYnVmLCBsb25nIGxvbmcgbmJ5dGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIFBBRCwgbG9uZyBsb25nIG9mZnNldCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9wd3JpdGUobG9uZyBsb25nIGZkLCBsb25nIGxvbmcgYnVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBuYnl0ZSwgbG9uZyBsb25nIFBBRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgb2Zmc2V0KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9wd3JpdGUobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIGZkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYnVmLCBsb25nIGxvbmcgbmJ5dGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBQQUQsIGxvbmcgbG9uZyBvZmZzZXQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzMwX250cF9nZXR0aW1lKGxvbmcgbG9uZyBudHZwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfMzBfbnRwX2dldHRpbWUobG9uZyBsb25nIHJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG50dnApOwojaWYgZGVmaW5lZChOVFApIHx8ICFkZWZpbmVkKF9LRVJORUxfT1BUKQp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbnRwX2FkanRpbWUobG9uZyBsb25nIHRwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9udHBfYWRqdGltZShsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgdHApOwojZWxzZQovKiBzeXNjYWxsIDE3NiBoYXMgYmVlbiBza2lwcGVkICovCiNlbmRpZgovKiBzeXNjYWxsIDE3NyBoYXMgYmVlbiBza2lwcGVkICovCi8qIHN5c2NhbGwgMTc4IGhhcyBiZWVuIHNraXBwZWQgKi8KLyogc3lzY2FsbCAxNzkgaGFzIGJlZW4gc2tpcHBlZCAqLwovKiBzeXNjYWxsIDE4MCBoYXMgYmVlbiBza2lwcGVkICovCnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zZXRnaWQobG9uZyBsb25nIGdpZCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2V0Z2lkKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBnaWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2V0ZWdpZChsb25nIGxvbmcgZWdpZCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2V0ZWdpZChsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgZWdpZCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zZXRldWlkKGxvbmcgbG9uZyBldWlkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZXRldWlkKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBldWlkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2xmc19ibWFwdihsb25nIGxvbmcgZnNpZHAsIGxvbmcgbG9uZyBibGtpb3YsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGJsa2NudCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbGZzX2JtYXB2KGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBmc2lkcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGJsa2lvdiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGJsa2NudCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9sZnNfbWFya3YobG9uZyBsb25nIGZzaWRwLCBsb25nIGxvbmcgYmxraW92LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBibGtjbnQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2xmc19tYXJrdihsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgZnNpZHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBibGtpb3YsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBibGtjbnQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbGZzX3NlZ2NsZWFuKGxvbmcgbG9uZyBmc2lkcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgc2VnbWVudCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbGZzX3NlZ2NsZWFuKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBmc2lkcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHNlZ21lbnQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzUwX2xmc19zZWd3YWl0KGxvbmcgbG9uZyBmc2lkcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdHYpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF81MF9sZnNfc2Vnd2FpdChsb25nIGxvbmcgcmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZnNpZHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB0dik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfMTJfc3RhdDEyKGxvbmcgbG9uZyBwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdWIpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF8xMl9zdGF0MTIobG9uZyBsb25nIHJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHViKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF8xMl9mc3RhdDEyKGxvbmcgbG9uZyBmZCwgbG9uZyBsb25nIHNiKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfMTJfZnN0YXQxMihsb25nIGxvbmcgcmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgc2IpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzEyX2xzdGF0MTIobG9uZyBsb25nIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdWIpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF8xMl9sc3RhdDEyKGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHViKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3BhdGhjb25mKGxvbmcgbG9uZyBwYXRoLCBsb25nIGxvbmcgbmFtZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcGF0aGNvbmYobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG5hbWUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZnBhdGhjb25mKGxvbmcgbG9uZyBmZCwgbG9uZyBsb25nIG5hbWUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2ZwYXRoY29uZihsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBuYW1lKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2dldHNvY2tvcHQyKGxvbmcgbG9uZyBzLCBsb25nIGxvbmcgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbmFtZSwgbG9uZyBsb25nIHZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhdmFsc2l6ZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZ2V0c29ja29wdDIobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGxldmVsLCBsb25nIGxvbmcgbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhdmFsc2l6ZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9nZXRybGltaXQobG9uZyBsb25nIHdoaWNoLCBsb25nIGxvbmcgcmxwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9nZXRybGltaXQobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIHdoaWNoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgcmxwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NldHJsaW1pdChsb25nIGxvbmcgd2hpY2gsIGxvbmcgbG9uZyBybHApOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NldHJsaW1pdChsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgd2hpY2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBybHApOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzEyX2dldGRpcmVudHJpZXMobG9uZyBsb25nIGZkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBiYXNlcCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzEyX2dldGRpcmVudHJpZXMobG9uZyBsb25nIHJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGJhc2VwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX21tYXAobG9uZyBsb25nIGFkZHIsIGxvbmcgbG9uZyBsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBwcm90LCBsb25nIGxvbmcgZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmZCwgbG9uZyBsb25nIFBBRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHBvcyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbW1hcChsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBsZW4sIGxvbmcgbG9uZyBwcm90LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGZsYWdzLCBsb25nIGxvbmcgZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgUEFELCBsb25nIGxvbmcgcG9zKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fc3lzY2FsbChsb25nIGxvbmcgY29kZSwgbG9uZyBsb25nIGFyZzAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGFyZzEsIGxvbmcgbG9uZyBhcmcyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhcmczLCBsb25nIGxvbmcgYXJnNCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYXJnNSwgbG9uZyBsb25nIGFyZzYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGFyZzcpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fc3lzY2FsbChsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgY29kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGFyZzAsIGxvbmcgbG9uZyBhcmcxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYXJnMiwgbG9uZyBsb25nIGFyZzMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhcmc0LCBsb25nIGxvbmcgYXJnNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGFyZzYsIGxvbmcgbG9uZyBhcmc3KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2xzZWVrKGxvbmcgbG9uZyBmZCwgbG9uZyBsb25nIFBBRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyB3aGVuY2UpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2xzZWVrKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBmZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgUEFELCBsb25nIGxvbmcgb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB3aGVuY2UpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfdHJ1bmNhdGUobG9uZyBsb25nIHBhdGgsIGxvbmcgbG9uZyBQQUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbGVuZ3RoKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF90cnVuY2F0ZShsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgUEFELCBsb25nIGxvbmcgbGVuZ3RoKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2Z0cnVuY2F0ZShsb25nIGxvbmcgZmQsIGxvbmcgbG9uZyBQQUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGxlbmd0aCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZnRydW5jYXRlKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBmZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIFBBRCwgbG9uZyBsb25nIGxlbmd0aCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX3N5c2N0bChsb25nIGxvbmcgbmFtZSwgbG9uZyBsb25nIG5hbWVsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgb2xkdiwgbG9uZyBsb25nIG9sZGxlbnAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbmV3diwgbG9uZyBsb25nIG5ld2xlbik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX19zeXNjdGwobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG5hbWVsZW4sIGxvbmcgbG9uZyBvbGR2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBvbGRsZW5wLCBsb25nIGxvbmcgbmV3diwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbmV3bGVuKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX21sb2NrKGxvbmcgbG9uZyBhZGRyLCBsb25nIGxvbmcgbGVuKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9tbG9jayhsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbGVuKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX211bmxvY2sobG9uZyBsb25nIGFkZHIsIGxvbmcgbG9uZyBsZW4pOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX211bmxvY2sobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIGFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbGVuKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3VuZGVsZXRlKGxvbmcgbG9uZyBwYXRoKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF91bmRlbGV0ZShsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgcGF0aCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfNTBfZnV0aW1lcyhsb25nIGxvbmcgZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdHB0cik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzUwX2Z1dGltZXMobG9uZyBsb25nIHJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHRwdHIpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZ2V0cGdpZChsb25nIGxvbmcgcGlkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9nZXRwZ2lkKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBwaWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfcmVib290KGxvbmcgbG9uZyBvcHQsIGxvbmcgbG9uZyBib290c3RyKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9yZWJvb3QobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIG9wdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGJvb3RzdHIpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfcG9sbChsb25nIGxvbmcgZmRzLCBsb25nIGxvbmcgbmZkcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHRpbWVvdXQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3BvbGwobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIGZkcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBuZmRzLCBsb25nIGxvbmcgdGltZW91dCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9hZnNzeXMobG9uZyBsb25nIGlkLCBsb25nIGxvbmcgYTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGEyLCBsb25nIGxvbmcgYTMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGE0LCBsb25nIGxvbmcgYTUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGE2KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9hZnNzeXMobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYTEsIGxvbmcgbG9uZyBhMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGEzLCBsb25nIGxvbmcgYTQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhNSwgbG9uZyBsb25nIGE2KTsKLyogc3lzY2FsbCAyMTEgaGFzIGJlZW4gc2tpcHBlZCAqLwovKiBzeXNjYWxsIDIxMiBoYXMgYmVlbiBza2lwcGVkICovCi8qIHN5c2NhbGwgMjEzIGhhcyBiZWVuIHNraXBwZWQgKi8KLyogc3lzY2FsbCAyMTQgaGFzIGJlZW4gc2tpcHBlZCAqLwovKiBzeXNjYWxsIDIxNSBoYXMgYmVlbiBza2lwcGVkICovCi8qIHN5c2NhbGwgMjE2IGhhcyBiZWVuIHNraXBwZWQgKi8KLyogc3lzY2FsbCAyMTcgaGFzIGJlZW4gc2tpcHBlZCAqLwovKiBzeXNjYWxsIDIxOCBoYXMgYmVlbiBza2lwcGVkICovCi8qIHN5c2NhbGwgMjE5IGhhcyBiZWVuIHNraXBwZWQgKi8Kdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF8xNF9fX3NlbWN0bChsb25nIGxvbmcgc2VtaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHNlbW51bSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgY21kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhcmcpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF8xNF9fX3NlbWN0bChsb25nIGxvbmcgcmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgc2VtaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBzZW1udW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBjbWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhcmcpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2VtZ2V0KGxvbmcgbG9uZyBrZXksIGxvbmcgbG9uZyBuc2VtcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgc2VtZmxnKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZW1nZXQobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIGtleSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG5zZW1zLCBsb25nIGxvbmcgc2VtZmxnKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NlbW9wKGxvbmcgbG9uZyBzZW1pZCwgbG9uZyBsb25nIHNvcHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbnNvcHMpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NlbW9wKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBzZW1pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgc29wcywgbG9uZyBsb25nIG5zb3BzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NlbWNvbmZpZyhsb25nIGxvbmcgZmxhZyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2VtY29uZmlnKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBmbGFnKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF8xNF9tc2djdGwobG9uZyBsb25nIG1zcWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgY21kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYnVmKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfMTRfbXNnY3RsKGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbXNxaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgY21kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGJ1Zik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9tc2dnZXQobG9uZyBsb25nIGtleSwgbG9uZyBsb25nIG1zZ2ZsZyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbXNnZ2V0KGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBrZXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBtc2dmbGcpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbXNnc25kKGxvbmcgbG9uZyBtc3FpZCwgbG9uZyBsb25nIG1zZ3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG1zZ3N6LCBsb25nIGxvbmcgbXNnZmxnKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9tc2dzbmQobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIG1zcWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbXNncCwgbG9uZyBsb25nIG1zZ3N6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbXNnZmxnKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX21zZ3Jjdihsb25nIGxvbmcgbXNxaWQsIGxvbmcgbG9uZyBtc2dwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBtc2dzeiwgbG9uZyBsb25nIG1zZ3R5cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbXNnZmxnKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9tc2dyY3YobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIG1zcWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbXNncCwgbG9uZyBsb25nIG1zZ3N6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbXNndHlwLCBsb25nIGxvbmcgbXNnZmxnKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NobWF0KGxvbmcgbG9uZyBzaG1pZCwgbG9uZyBsb25nIHNobWFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgc2htZmxnKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zaG1hdChsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgc2htaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHNobWFkZHIsIGxvbmcgbG9uZyBzaG1mbGcpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzE0X3NobWN0bChsb25nIGxvbmcgc2htaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBjbWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBidWYpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF8xNF9zaG1jdGwobG9uZyBsb25nIHJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBzaG1pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBjbWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYnVmKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NobWR0KGxvbmcgbG9uZyBzaG1hZGRyKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zaG1kdChsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgc2htYWRkcik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zaG1nZXQobG9uZyBsb25nIGtleSwgbG9uZyBsb25nIHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHNobWZsZyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2htZ2V0KGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBrZXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBzaXplLCBsb25nIGxvbmcgc2htZmxnKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF81MF9jbG9ja19nZXR0aW1lKGxvbmcgbG9uZyBjbG9ja19pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB0cCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzUwX2Nsb2NrX2dldHRpbWUobG9uZyBsb25nIHJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgY2xvY2tfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHRwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF81MF9jbG9ja19zZXR0aW1lKGxvbmcgbG9uZyBjbG9ja19pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB0cCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzUwX2Nsb2NrX3NldHRpbWUobG9uZyBsb25nIHJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgY2xvY2tfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHRwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF81MF9jbG9ja19nZXRyZXMobG9uZyBsb25nIGNsb2NrX2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdHApOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF81MF9jbG9ja19nZXRyZXMobG9uZyBsb25nIHJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBjbG9ja19pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB0cCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF90aW1lcl9jcmVhdGUobG9uZyBsb25nIGNsb2NrX2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBldnAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHRpbWVyaWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3RpbWVyX2NyZWF0ZShsb25nIGxvbmcgcmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgY2xvY2tfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBldnAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB0aW1lcmlkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3RpbWVyX2RlbGV0ZShsb25nIGxvbmcgdGltZXJpZCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfdGltZXJfZGVsZXRlKGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB0aW1lcmlkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF81MF90aW1lcl9zZXR0aW1lKGxvbmcgbG9uZyB0aW1lcmlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG92YWx1ZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzUwX3RpbWVyX3NldHRpbWUobG9uZyBsb25nIHJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdGltZXJpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBvdmFsdWUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzUwX3RpbWVyX2dldHRpbWUobG9uZyBsb25nIHRpbWVyaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdmFsdWUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF81MF90aW1lcl9nZXR0aW1lKGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHRpbWVyaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHZhbHVlKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3RpbWVyX2dldG92ZXJydW4obG9uZyBsb25nIHRpbWVyaWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3RpbWVyX2dldG92ZXJydW4obG9uZyBsb25nIHJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB0aW1lcmlkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF81MF9uYW5vc2xlZXAobG9uZyBsb25nIHJxdHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBybXRwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfNTBfbmFub3NsZWVwKGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgcnF0cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBybXRwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2ZkYXRhc3luYyhsb25nIGxvbmcgZmQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2ZkYXRhc3luYyhsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgZmQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbWxvY2thbGwobG9uZyBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9tbG9ja2FsbChsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgZmxhZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbXVubG9ja2FsbCh2b2lkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9tdW5sb2NrYWxsKGxvbmcgbG9uZyByZXMpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzUwX19fc2lndGltZWR3YWl0KGxvbmcgbG9uZyBzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHRpbWVvdXQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF81MF9fX3NpZ3RpbWVkd2FpdChsb25nIGxvbmcgcmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHRpbWVvdXQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2lncXVldWVpbmZvKGxvbmcgbG9uZyBwaWQsIGxvbmcgbG9uZyBpbmZvKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zaWdxdWV1ZWluZm8obG9uZyBsb25nIHJlcywgbG9uZyBsb25nIHBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGluZm8pOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbW9kY3RsKGxvbmcgbG9uZyBjbWQsIGxvbmcgbG9uZyBhcmcpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX21vZGN0bChsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgY21kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYXJnKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19rc2VtX2luaXQobG9uZyBsb25nIHZhbHVlLCBsb25nIGxvbmcgaWRwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fa3NlbV9pbml0KGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyB2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBpZHApOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX2tzZW1fb3Blbihsb25nIGxvbmcgbmFtZSwgbG9uZyBsb25nIG9mbGFnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbW9kZSwgbG9uZyBsb25nIHZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgaWRwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fa3NlbV9vcGVuKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG9mbGFnLCBsb25nIGxvbmcgbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB2YWx1ZSwgbG9uZyBsb25nIGlkcCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fa3NlbV91bmxpbmsobG9uZyBsb25nIG5hbWUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19rc2VtX3VubGluayhsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgbmFtZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fa3NlbV9jbG9zZShsb25nIGxvbmcgaWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19rc2VtX2Nsb3NlKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBpZCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fa3NlbV9wb3N0KGxvbmcgbG9uZyBpZCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX2tzZW1fcG9zdChsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgaWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX2tzZW1fd2FpdChsb25nIGxvbmcgaWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19rc2VtX3dhaXQobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIGlkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19rc2VtX3RyeXdhaXQobG9uZyBsb25nIGlkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fa3NlbV90cnl3YWl0KGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBpZCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fa3NlbV9nZXR2YWx1ZShsb25nIGxvbmcgaWQsIGxvbmcgbG9uZyB2YWx1ZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX2tzZW1fZ2V0dmFsdWUobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB2YWx1ZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fa3NlbV9kZXN0cm95KGxvbmcgbG9uZyBpZCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX2tzZW1fZGVzdHJveShsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgaWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX2tzZW1fdGltZWR3YWl0KGxvbmcgbG9uZyBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYWJzdGltZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX2tzZW1fdGltZWR3YWl0KGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGFic3RpbWUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbXFfb3Blbihsb25nIGxvbmcgbmFtZSwgbG9uZyBsb25nIG9mbGFnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbW9kZSwgbG9uZyBsb25nIGF0dHIpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX21xX29wZW4obG9uZyBsb25nIHJlcywgbG9uZyBsb25nIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgb2ZsYWcsIGxvbmcgbG9uZyBtb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGF0dHIpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbXFfY2xvc2UobG9uZyBsb25nIG1xZGVzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9tcV9jbG9zZShsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgbXFkZXMpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbXFfdW5saW5rKGxvbmcgbG9uZyBuYW1lKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9tcV91bmxpbmsobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIG5hbWUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbXFfZ2V0YXR0cihsb25nIGxvbmcgbXFkZXMsIGxvbmcgbG9uZyBtcXN0YXQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX21xX2dldGF0dHIobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIG1xZGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG1xc3RhdCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9tcV9zZXRhdHRyKGxvbmcgbG9uZyBtcWRlcywgbG9uZyBsb25nIG1xc3RhdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG9tcXN0YXQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX21xX3NldGF0dHIobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIG1xZGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG1xc3RhdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBvbXFzdGF0KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX21xX25vdGlmeShsb25nIGxvbmcgbXFkZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG5vdGlmaWNhdGlvbik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbXFfbm90aWZ5KGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBtcWRlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG5vdGlmaWNhdGlvbik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9tcV9zZW5kKGxvbmcgbG9uZyBtcWRlcywgbG9uZyBsb25nIG1zZ19wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBtc2dfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbXNnX3ByaW8pOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX21xX3NlbmQobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIG1xZGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG1zZ19wdHIsIGxvbmcgbG9uZyBtc2dfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG1zZ19wcmlvKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX21xX3JlY2VpdmUobG9uZyBsb25nIG1xZGVzLCBsb25nIGxvbmcgbXNnX3B0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG1zZ19sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBtc2dfcHJpbyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbXFfcmVjZWl2ZShsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgbXFkZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbXNnX3B0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBtc2dfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG1zZ19wcmlvKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF81MF9tcV90aW1lZHNlbmQobG9uZyBsb25nIG1xZGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbXNnX3B0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG1zZ19sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBtc2dfcHJpbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGFic190aW1lb3V0KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfNTBfbXFfdGltZWRzZW5kKAogICAgbG9uZyBsb25nIHJlcywgbG9uZyBsb25nIG1xZGVzLCBsb25nIGxvbmcgbXNnX3B0ciwgbG9uZyBsb25nIG1zZ19sZW4sCiAgICBsb25nIGxvbmcgbXNnX3ByaW8sIGxvbmcgbG9uZyBhYnNfdGltZW91dCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfNTBfbXFfdGltZWRyZWNlaXZlKAogICAgbG9uZyBsb25nIG1xZGVzLCBsb25nIGxvbmcgbXNnX3B0ciwgbG9uZyBsb25nIG1zZ19sZW4sIGxvbmcgbG9uZyBtc2dfcHJpbywKICAgIGxvbmcgbG9uZyBhYnNfdGltZW91dCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzUwX21xX3RpbWVkcmVjZWl2ZSgKICAgIGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBtcWRlcywgbG9uZyBsb25nIG1zZ19wdHIsIGxvbmcgbG9uZyBtc2dfbGVuLAogICAgbG9uZyBsb25nIG1zZ19wcmlvLCBsb25nIGxvbmcgYWJzX3RpbWVvdXQpOwovKiBzeXNjYWxsIDI2NyBoYXMgYmVlbiBza2lwcGVkICovCi8qIHN5c2NhbGwgMjY4IGhhcyBiZWVuIHNraXBwZWQgKi8KLyogc3lzY2FsbCAyNjkgaGFzIGJlZW4gc2tpcHBlZCAqLwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19wb3NpeF9yZW5hbWUobG9uZyBsb25nIGZyb20sIGxvbmcgbG9uZyB0byk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX19wb3NpeF9yZW5hbWUobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIGZyb20sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHRvKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3N3YXBjdGwobG9uZyBsb25nIGNtZCwgbG9uZyBsb25nIGFyZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG1pc2MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3N3YXBjdGwobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIGNtZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhcmcsIGxvbmcgbG9uZyBtaXNjKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF8zMF9nZXRkZW50cyhsb25nIGxvbmcgZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgY291bnQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF8zMF9nZXRkZW50cyhsb25nIGxvbmcgcmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBidWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBjb3VudCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9taW5oZXJpdChsb25nIGxvbmcgYWRkciwgbG9uZyBsb25nIGxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBpbmhlcml0KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9taW5oZXJpdChsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbGVuLCBsb25nIGxvbmcgaW5oZXJpdCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9sY2htb2QobG9uZyBsb25nIHBhdGgsIGxvbmcgbG9uZyBtb2RlKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9sY2htb2QobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBtb2RlKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2xjaG93bihsb25nIGxvbmcgcGF0aCwgbG9uZyBsb25nIHVpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZ2lkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9sY2hvd24obG9uZyBsb25nIHJlcywgbG9uZyBsb25nIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB1aWQsIGxvbmcgbG9uZyBnaWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzUwX2x1dGltZXMobG9uZyBsb25nIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdHB0cik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzUwX2x1dGltZXMobG9uZyBsb25nIHJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdHB0cik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX21zeW5jMTMobG9uZyBsb25nIGFkZHIsIGxvbmcgbG9uZyBsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX21zeW5jMTMobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIGFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBsZW4sIGxvbmcgbG9uZyBmbGFncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfMzBfX19zdGF0MTMobG9uZyBsb25nIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHViKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfMzBfX19zdGF0MTMobG9uZyBsb25nIHJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB1Yik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfMzBfX19mc3RhdDEzKGxvbmcgbG9uZyBmZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHNiKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfMzBfX19mc3RhdDEzKGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgc2IpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzMwX19fbHN0YXQxMyhsb25nIGxvbmcgcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHViKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfMzBfX19sc3RhdDEzKGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB1Yik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX3NpZ2FsdHN0YWNrMTQobG9uZyBsb25nIG5zcywgbG9uZyBsb25nIG9zcyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX19zaWdhbHRzdGFjazE0KGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBuc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBvc3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX192Zm9yazE0KHZvaWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fdmZvcmsxNChsb25nIGxvbmcgcmVzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fcG9zaXhfY2hvd24obG9uZyBsb25nIHBhdGgsIGxvbmcgbG9uZyB1aWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBnaWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fcG9zaXhfY2hvd24obG9uZyBsb25nIHJlcywgbG9uZyBsb25nIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdWlkLCBsb25nIGxvbmcgZ2lkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fcG9zaXhfZmNob3duKGxvbmcgbG9uZyBmZCwgbG9uZyBsb25nIHVpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBnaWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fcG9zaXhfZmNob3duKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBmZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdWlkLCBsb25nIGxvbmcgZ2lkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fcG9zaXhfbGNob3duKGxvbmcgbG9uZyBwYXRoLCBsb25nIGxvbmcgdWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGdpZCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX19wb3NpeF9sY2hvd24obG9uZyBsb25nIHJlcywgbG9uZyBsb25nIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHVpZCwgbG9uZyBsb25nIGdpZCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9nZXRzaWQobG9uZyBsb25nIHBpZCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZ2V0c2lkKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBwaWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19jbG9uZShsb25nIGxvbmcgZmxhZ3MsIGxvbmcgbG9uZyBzdGFjayk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX19jbG9uZShsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgc3RhY2spOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZmt0cmFjZShsb25nIGxvbmcgZmQsIGxvbmcgbG9uZyBvcHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmYWNzLCBsb25nIGxvbmcgcGlkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9ma3RyYWNlKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBmZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBvcHMsIGxvbmcgbG9uZyBmYWNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHBpZCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9wcmVhZHYobG9uZyBsb25nIGZkLCBsb25nIGxvbmcgaW92cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgaW92Y250LCBsb25nIGxvbmcgUEFELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBvZmZzZXQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3ByZWFkdihsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBpb3ZwLCBsb25nIGxvbmcgaW92Y250LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgUEFELCBsb25nIGxvbmcgb2Zmc2V0KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3B3cml0ZXYobG9uZyBsb25nIGZkLCBsb25nIGxvbmcgaW92cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGlvdmNudCwgbG9uZyBsb25nIFBBRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG9mZnNldCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcHdyaXRldihsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgaW92cCwgbG9uZyBsb25nIGlvdmNudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBQQUQsIGxvbmcgbG9uZyBvZmZzZXQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzE2X19fc2lnYWN0aW9uMTQobG9uZyBsb25nIHNpZ251bSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBuc2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgb3NhKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfMTZfX19zaWdhY3Rpb24xNChsb25nIGxvbmcgcmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBzaWdudW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG5zYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgb3NhKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fc2lncGVuZGluZzE0KGxvbmcgbG9uZyBzZXQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fc2lncGVuZGluZzE0KGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBzZXQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19zaWdwcm9jbWFzazE0KGxvbmcgbG9uZyBob3csIGxvbmcgbG9uZyBzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG9zZXQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fc2lncHJvY21hc2sxNChsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgaG93LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgb3NldCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX3NpZ3N1c3BlbmQxNChsb25nIGxvbmcgc2V0KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX3NpZ3N1c3BlbmQxNChsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgc2V0KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF8xNl9fX3NpZ3JldHVybjE0KGxvbmcgbG9uZyBzaWdjbnR4cCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzE2X19fc2lncmV0dXJuMTQobG9uZyBsb25nIHJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgc2lnY250eHApOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19nZXRjd2QobG9uZyBsb25nIGJ1ZnAsIGxvbmcgbG9uZyBsZW5ndGgpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fZ2V0Y3dkKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBidWZwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBsZW5ndGgpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZmNocm9vdChsb25nIGxvbmcgZmQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2ZjaHJvb3QobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIGZkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF8zMF9maG9wZW4obG9uZyBsb25nIGZocCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfMzBfZmhvcGVuKGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZmhwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF8zMF9maHN0YXQobG9uZyBsb25nIGZocCwgbG9uZyBsb25nIHNiKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfMzBfZmhzdGF0KGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZmhwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHNiKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF8yMF9maHN0YXRmcyhsb25nIGxvbmcgZmhwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBidWYpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF8yMF9maHN0YXRmcyhsb25nIGxvbmcgcmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZmhwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYnVmKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF81MF9fX19fc2VtY3RsMTMobG9uZyBsb25nIHNlbWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgc2VtbnVtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgY21kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYXJnKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfNTBfX19fX3NlbWN0bDEzKGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgc2VtaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgc2VtbnVtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGNtZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhcmcpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzUwX19fbXNnY3RsMTMobG9uZyBsb25nIG1zcWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGNtZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBidWYpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF81MF9fX21zZ2N0bDEzKGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG1zcWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBjbWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGJ1Zik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfNTBfX19zaG1jdGwxMyhsb25nIGxvbmcgc2htaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgY21kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGJ1Zik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzUwX19fc2htY3RsMTMobG9uZyBsb25nIHJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgc2htaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGNtZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYnVmKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2xjaGZsYWdzKGxvbmcgbG9uZyBwYXRoLCBsb25nIGxvbmcgZmxhZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2xjaGZsYWdzKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmbGFncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9pc3NldHVnaWQodm9pZCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfaXNzZXR1Z2lkKGxvbmcgbG9uZyByZXMpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfdXRyYWNlKGxvbmcgbG9uZyBsYWJlbCwgbG9uZyBsb25nIGFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGxlbik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfdXRyYWNlKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBsYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGFkZHIsIGxvbmcgbG9uZyBsZW4pOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZ2V0Y29udGV4dChsb25nIGxvbmcgdWNwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9nZXRjb250ZXh0KGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyB1Y3ApOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2V0Y29udGV4dChsb25nIGxvbmcgdWNwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZXRjb250ZXh0KGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyB1Y3ApOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX2x3cF9jcmVhdGUobG9uZyBsb25nIHVjcCwgbG9uZyBsb25nIGZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG5ld19sd3ApOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19sd3BfY3JlYXRlKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyB1Y3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBuZXdfbHdwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19sd3BfZXhpdCh2b2lkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fbHdwX2V4aXQobG9uZyBsb25nIHJlcyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fbHdwX3NlbGYodm9pZCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX2x3cF9zZWxmKGxvbmcgbG9uZyByZXMpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX2x3cF93YWl0KGxvbmcgbG9uZyB3YWl0X2ZvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZGVwYXJ0ZWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19sd3Bfd2FpdChsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgd2FpdF9mb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBkZXBhcnRlZCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fbHdwX3N1c3BlbmQobG9uZyBsb25nIHRhcmdldCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX2x3cF9zdXNwZW5kKGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB0YXJnZXQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX2x3cF9jb250aW51ZShsb25nIGxvbmcgdGFyZ2V0KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fbHdwX2NvbnRpbnVlKGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdGFyZ2V0KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19sd3Bfd2FrZXVwKGxvbmcgbG9uZyB0YXJnZXQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19sd3Bfd2FrZXVwKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyB0YXJnZXQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX2x3cF9nZXRwcml2YXRlKHZvaWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19sd3BfZ2V0cHJpdmF0ZShsb25nIGxvbmcgcmVzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19sd3Bfc2V0cHJpdmF0ZShsb25nIGxvbmcgcHRyKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fbHdwX3NldHByaXZhdGUobG9uZyBsb25nIHJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHB0cik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fbHdwX2tpbGwobG9uZyBsb25nIHRhcmdldCwgbG9uZyBsb25nIHNpZ25vKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fbHdwX2tpbGwobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHNpZ25vKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19sd3BfZGV0YWNoKGxvbmcgbG9uZyB0YXJnZXQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19sd3BfZGV0YWNoKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyB0YXJnZXQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzUwX19sd3BfcGFyayhsb25nIGxvbmcgdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB1bnBhcmssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBoaW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdW5wYXJraGludCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzUwX19sd3BfcGFyayhsb25nIGxvbmcgcmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHVucGFyaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBoaW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHVucGFya2hpbnQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX2x3cF91bnBhcmsobG9uZyBsb25nIHRhcmdldCwgbG9uZyBsb25nIGhpbnQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19sd3BfdW5wYXJrKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGhpbnQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX2x3cF91bnBhcmtfYWxsKGxvbmcgbG9uZyB0YXJnZXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBudGFyZ2V0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgaGludCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX2x3cF91bnBhcmtfYWxsKGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB0YXJnZXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbnRhcmdldHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBoaW50KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19sd3Bfc2V0bmFtZShsb25nIGxvbmcgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBuYW1lKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fbHdwX3NldG5hbWUobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG5hbWUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX2x3cF9nZXRuYW1lKGxvbmcgbG9uZyB0YXJnZXQsIGxvbmcgbG9uZyBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBsZW4pOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19sd3BfZ2V0bmFtZShsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbmFtZSwgbG9uZyBsb25nIGxlbik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fbHdwX2N0bChsb25nIGxvbmcgZmVhdHVyZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYWRkcmVzcyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX2x3cF9jdGwobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIGZlYXR1cmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhZGRyZXNzKTsKLyogc3lzY2FsbCAzMjYgaGFzIGJlZW4gc2tpcHBlZCAqLwovKiBzeXNjYWxsIDMyNyBoYXMgYmVlbiBza2lwcGVkICovCi8qIHN5c2NhbGwgMzI4IGhhcyBiZWVuIHNraXBwZWQgKi8KLyogc3lzY2FsbCAzMjkgaGFzIGJlZW4gc2tpcHBlZCAqLwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzYwX3NhX3JlZ2lzdGVyKAogICAgbG9uZyBsb25nIG5ld3YsIGxvbmcgbG9uZyBvbGR2LCBsb25nIGxvbmcgZmxhZ3MsCiAgICBsb25nIGxvbmcgc3RhY2tpbmZvX29mZnNldCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzYwX3NhX3JlZ2lzdGVyKAogICAgbG9uZyBsb25nIHJlcywgbG9uZyBsb25nIG5ld3YsIGxvbmcgbG9uZyBvbGR2LCBsb25nIGxvbmcgZmxhZ3MsCiAgICBsb25nIGxvbmcgc3RhY2tpbmZvX29mZnNldCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfNjBfc2Ffc3RhY2tzKGxvbmcgbG9uZyBudW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBzdGFja3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF82MF9zYV9zdGFja3MobG9uZyBsb25nIHJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBudW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgc3RhY2tzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF82MF9zYV9lbmFibGUodm9pZCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzYwX3NhX2VuYWJsZShsb25nIGxvbmcgcmVzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF82MF9zYV9zZXRjb25jdXJyZW5jeSgKICAgIGxvbmcgbG9uZyBjb25jdXJyZW5jeSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzYwX3NhX3NldGNvbmN1cnJlbmN5KAogICAgbG9uZyBsb25nIHJlcywgbG9uZyBsb25nIGNvbmN1cnJlbmN5KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF82MF9zYV95aWVsZCh2b2lkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfNjBfc2FfeWllbGQobG9uZyBsb25nIHJlcyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfNjBfc2FfcHJlZW1wdChsb25nIGxvbmcgc2FfaWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF82MF9zYV9wcmVlbXB0KGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHNhX2lkKTsKLyogc3lzY2FsbCAzMzYgaGFzIGJlZW4gc2tpcHBlZCAqLwovKiBzeXNjYWxsIDMzNyBoYXMgYmVlbiBza2lwcGVkICovCi8qIHN5c2NhbGwgMzM4IGhhcyBiZWVuIHNraXBwZWQgKi8KLyogc3lzY2FsbCAzMzkgaGFzIGJlZW4gc2tpcHBlZCAqLwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19zaWdhY3Rpb25fc2lndHJhbXAobG9uZyBsb25nIHNpZ251bSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBuc2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgb3NhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHRyYW1wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHZlcnMpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fc2lnYWN0aW9uX3NpZ3RyYW1wKAogICAgbG9uZyBsb25nIHJlcywgbG9uZyBsb25nIHNpZ251bSwgbG9uZyBsb25nIG5zYSwgbG9uZyBsb25nIG9zYSwKICAgIGxvbmcgbG9uZyB0cmFtcCwgbG9uZyBsb25nIHZlcnMpOwovKiBzeXNjYWxsIDM0MSBoYXMgYmVlbiBza2lwcGVkICovCi8qIHN5c2NhbGwgMzQyIGhhcyBiZWVuIHNraXBwZWQgKi8Kdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3Jhc2N0bChsb25nIGxvbmcgYWRkciwgbG9uZyBsb25nIGxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgb3ApOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3Jhc2N0bChsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGxlbiwgbG9uZyBsb25nIG9wKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2txdWV1ZSh2b2lkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9rcXVldWUobG9uZyBsb25nIHJlcyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfNTBfa2V2ZW50KAogICAgbG9uZyBsb25nIGZkLCBsb25nIGxvbmcgY2hhbmdlbGlzdCwgbG9uZyBsb25nIG5jaGFuZ2VzLCBsb25nIGxvbmcgZXZlbnRsaXN0LAogICAgbG9uZyBsb25nIG5ldmVudHMsIGxvbmcgbG9uZyB0aW1lb3V0KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfNTBfa2V2ZW50KAogICAgbG9uZyBsb25nIHJlcywgbG9uZyBsb25nIGZkLCBsb25nIGxvbmcgY2hhbmdlbGlzdCwgbG9uZyBsb25nIG5jaGFuZ2VzLAogICAgbG9uZyBsb25nIGV2ZW50bGlzdCwgbG9uZyBsb25nIG5ldmVudHMsIGxvbmcgbG9uZyB0aW1lb3V0KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19zY2hlZF9zZXRwYXJhbShsb25nIGxvbmcgcGlkLCBsb25nIGxvbmcgbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBwb2xpY3ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHBhcmFtcyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX3NjaGVkX3NldHBhcmFtKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBwaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBwb2xpY3ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBwYXJhbXMpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX3NjaGVkX2dldHBhcmFtKGxvbmcgbG9uZyBwaWQsIGxvbmcgbG9uZyBsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHBvbGljeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgcGFyYW1zKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fc2NoZWRfZ2V0cGFyYW0obG9uZyBsb25nIHJlcywgbG9uZyBsb25nIHBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHBvbGljeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHBhcmFtcyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fc2NoZWRfc2V0YWZmaW5pdHkobG9uZyBsb25nIHBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBjcHVzZXQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19zY2hlZF9zZXRhZmZpbml0eShsb25nIGxvbmcgcmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgcGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGNwdXNldCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fc2NoZWRfZ2V0YWZmaW5pdHkobG9uZyBsb25nIHBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBjcHVzZXQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19zY2hlZF9nZXRhZmZpbml0eShsb25nIGxvbmcgcmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgcGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGNwdXNldCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zY2hlZF95aWVsZCh2b2lkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zY2hlZF95aWVsZChsb25nIGxvbmcgcmVzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19zY2hlZF9wcm90ZWN0KGxvbmcgbG9uZyBwcmlvcml0eSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX3NjaGVkX3Byb3RlY3QobG9uZyBsb25nIHJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgcHJpb3JpdHkpOwovKiBzeXNjYWxsIDM1MiBoYXMgYmVlbiBza2lwcGVkICovCi8qIHN5c2NhbGwgMzUzIGhhcyBiZWVuIHNraXBwZWQgKi8Kdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2ZzeW5jX3JhbmdlKGxvbmcgbG9uZyBmZCwgbG9uZyBsb25nIGZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGxlbmd0aCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZnN5bmNfcmFuZ2UobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIGZkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmbGFncywgbG9uZyBsb25nIHN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBsZW5ndGgpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfdXVpZGdlbihsb25nIGxvbmcgc3RvcmUsIGxvbmcgbG9uZyBjb3VudCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfdXVpZGdlbihsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgc3RvcmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgY291bnQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzkwX2dldHZmc3N0YXQobG9uZyBsb25nIGJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBidWZzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfOTBfZ2V0dmZzc3RhdChsb25nIGxvbmcgcmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBidWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGJ1ZnNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF85MF9zdGF0dmZzMShsb25nIGxvbmcgcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYnVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmbGFncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzkwX3N0YXR2ZnMxKGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYnVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZmxhZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzkwX2ZzdGF0dmZzMShsb25nIGxvbmcgZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBidWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmbGFncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzkwX2ZzdGF0dmZzMShsb25nIGxvbmcgcmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGZkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmbGFncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfMzBfZmhzdGF0dmZzMShsb25nIGxvbmcgZmhwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmbGFncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzMwX2Zoc3RhdHZmczEobG9uZyBsb25nIHJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZmhwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBidWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2V4dGF0dHJjdGwobG9uZyBsb25nIHBhdGgsIGxvbmcgbG9uZyBjbWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmaWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGF0dHJuYW1lc3BhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhdHRybmFtZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZXh0YXR0cmN0bChsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBjbWQsIGxvbmcgbG9uZyBmaWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhdHRybmFtZXNwYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGF0dHJuYW1lKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2V4dGF0dHJfc2V0X2ZpbGUobG9uZyBsb25nIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhdHRybmFtZXNwYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYXR0cm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbmJ5dGVzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9leHRhdHRyX3NldF9maWxlKAogICAgbG9uZyBsb25nIHJlcywgbG9uZyBsb25nIHBhdGgsIGxvbmcgbG9uZyBhdHRybmFtZXNwYWNlLCBsb25nIGxvbmcgYXR0cm5hbWUsCiAgICBsb25nIGxvbmcgZGF0YSwgbG9uZyBsb25nIG5ieXRlcyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9leHRhdHRyX2dldF9maWxlKGxvbmcgbG9uZyBwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYXR0cm5hbWVzcGFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGF0dHJuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG5ieXRlcyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZXh0YXR0cl9nZXRfZmlsZSgKICAgIGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBwYXRoLCBsb25nIGxvbmcgYXR0cm5hbWVzcGFjZSwgbG9uZyBsb25nIGF0dHJuYW1lLAogICAgbG9uZyBsb25nIGRhdGEsIGxvbmcgbG9uZyBuYnl0ZXMpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZXh0YXR0cl9kZWxldGVfZmlsZShsb25nIGxvbmcgcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGF0dHJuYW1lc3BhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhdHRybmFtZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZXh0YXR0cl9kZWxldGVfZmlsZShsb25nIGxvbmcgcmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYXR0cm5hbWVzcGFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhdHRybmFtZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9leHRhdHRyX3NldF9mZChsb25nIGxvbmcgZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYXR0cm5hbWVzcGFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhdHRybmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG5ieXRlcyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZXh0YXR0cl9zZXRfZmQobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIGZkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhdHRybmFtZXNwYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhdHRybmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbmJ5dGVzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2V4dGF0dHJfZ2V0X2ZkKGxvbmcgbG9uZyBmZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhdHRybmFtZXNwYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGF0dHJuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbmJ5dGVzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9leHRhdHRyX2dldF9mZChsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGF0dHJuYW1lc3BhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGF0dHJuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBuYnl0ZXMpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZXh0YXR0cl9kZWxldGVfZmQobG9uZyBsb25nIGZkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGF0dHJuYW1lc3BhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYXR0cm5hbWUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2V4dGF0dHJfZGVsZXRlX2ZkKGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGZkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhdHRybmFtZXNwYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhdHRybmFtZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9leHRhdHRyX3NldF9saW5rKGxvbmcgbG9uZyBwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYXR0cm5hbWVzcGFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGF0dHJuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG5ieXRlcyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZXh0YXR0cl9zZXRfbGluaygKICAgIGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBwYXRoLCBsb25nIGxvbmcgYXR0cm5hbWVzcGFjZSwgbG9uZyBsb25nIGF0dHJuYW1lLAogICAgbG9uZyBsb25nIGRhdGEsIGxvbmcgbG9uZyBuYnl0ZXMpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZXh0YXR0cl9nZXRfbGluayhsb25nIGxvbmcgcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGF0dHJuYW1lc3BhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhdHRybmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBuYnl0ZXMpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2V4dGF0dHJfZ2V0X2xpbmsoCiAgICBsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgcGF0aCwgbG9uZyBsb25nIGF0dHJuYW1lc3BhY2UsIGxvbmcgbG9uZyBhdHRybmFtZSwKICAgIGxvbmcgbG9uZyBkYXRhLCBsb25nIGxvbmcgbmJ5dGVzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2V4dGF0dHJfZGVsZXRlX2xpbmsobG9uZyBsb25nIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhdHRybmFtZXNwYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYXR0cm5hbWUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2V4dGF0dHJfZGVsZXRlX2xpbmsobG9uZyBsb25nIHJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGF0dHJuYW1lc3BhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYXR0cm5hbWUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZXh0YXR0cl9saXN0X2ZkKGxvbmcgbG9uZyBmZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYXR0cm5hbWVzcGFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbmJ5dGVzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9leHRhdHRyX2xpc3RfZmQobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIGZkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYXR0cm5hbWVzcGFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBuYnl0ZXMpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZXh0YXR0cl9saXN0X2ZpbGUobG9uZyBsb25nIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYXR0cm5hbWVzcGFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG5ieXRlcyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZXh0YXR0cl9saXN0X2ZpbGUobG9uZyBsb25nIHJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYXR0cm5hbWVzcGFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbmJ5dGVzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2V4dGF0dHJfbGlzdF9saW5rKGxvbmcgbG9uZyBwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGF0dHJuYW1lc3BhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBuYnl0ZXMpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2V4dGF0dHJfbGlzdF9saW5rKGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGF0dHJuYW1lc3BhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG5ieXRlcyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfNTBfcHNlbGVjdChsb25nIGxvbmcgbmQsIGxvbmcgbG9uZyBpbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBvdSwgbG9uZyBsb25nIGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG1hc2spOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF81MF9wc2VsZWN0KGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG5kLCBsb25nIGxvbmcgaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG91LCBsb25nIGxvbmcgZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBtYXNrKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF81MF9wb2xsdHMobG9uZyBsb25nIGZkcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG5mZHMsIGxvbmcgbG9uZyB0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG1hc2spOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF81MF9wb2xsdHMoCiAgICBsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgZmRzLCBsb25nIGxvbmcgbmZkcywgbG9uZyBsb25nIHRzLCBsb25nIGxvbmcgbWFzayk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zZXR4YXR0cihsb25nIGxvbmcgcGF0aCwgbG9uZyBsb25nIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdmFsdWUsIGxvbmcgbG9uZyBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZXR4YXR0cihsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbmFtZSwgbG9uZyBsb25nIHZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBzaXplLCBsb25nIGxvbmcgZmxhZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbHNldHhhdHRyKGxvbmcgbG9uZyBwYXRoLCBsb25nIGxvbmcgbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdmFsdWUsIGxvbmcgbG9uZyBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmbGFncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbHNldHhhdHRyKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbmFtZSwgbG9uZyBsb25nIHZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgc2l6ZSwgbG9uZyBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2ZzZXR4YXR0cihsb25nIGxvbmcgZmQsIGxvbmcgbG9uZyBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB2YWx1ZSwgbG9uZyBsb25nIHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9mc2V0eGF0dHIobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIGZkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbmFtZSwgbG9uZyBsb25nIHZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgc2l6ZSwgbG9uZyBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2dldHhhdHRyKGxvbmcgbG9uZyBwYXRoLCBsb25nIGxvbmcgbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB2YWx1ZSwgbG9uZyBsb25nIHNpemUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2dldHhhdHRyKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBuYW1lLCBsb25nIGxvbmcgdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHNpemUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbGdldHhhdHRyKGxvbmcgbG9uZyBwYXRoLCBsb25nIGxvbmcgbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdmFsdWUsIGxvbmcgbG9uZyBzaXplKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9sZ2V0eGF0dHIobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBuYW1lLCBsb25nIGxvbmcgdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBzaXplKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2ZnZXR4YXR0cihsb25nIGxvbmcgZmQsIGxvbmcgbG9uZyBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB2YWx1ZSwgbG9uZyBsb25nIHNpemUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2ZnZXR4YXR0cihsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBuYW1lLCBsb25nIGxvbmcgdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBzaXplKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2xpc3R4YXR0cihsb25nIGxvbmcgcGF0aCwgbG9uZyBsb25nIGxpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHNpemUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2xpc3R4YXR0cihsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGxpc3QsIGxvbmcgbG9uZyBzaXplKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2xsaXN0eGF0dHIobG9uZyBsb25nIHBhdGgsIGxvbmcgbG9uZyBsaXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgc2l6ZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbGxpc3R4YXR0cihsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBsaXN0LCBsb25nIGxvbmcgc2l6ZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9mbGlzdHhhdHRyKGxvbmcgbG9uZyBmZCwgbG9uZyBsb25nIGxpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBzaXplKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9mbGlzdHhhdHRyKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBmZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBsaXN0LCBsb25nIGxvbmcgc2l6ZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9yZW1vdmV4YXR0cihsb25nIGxvbmcgcGF0aCwgbG9uZyBsb25nIG5hbWUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3JlbW92ZXhhdHRyKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBuYW1lKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2xyZW1vdmV4YXR0cihsb25nIGxvbmcgcGF0aCwgbG9uZyBsb25nIG5hbWUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2xyZW1vdmV4YXR0cihsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG5hbWUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZnJlbW92ZXhhdHRyKGxvbmcgbG9uZyBmZCwgbG9uZyBsb25nIG5hbWUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2ZyZW1vdmV4YXR0cihsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBuYW1lKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF81MF9fX3N0YXQzMChsb25nIGxvbmcgcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdWIpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF81MF9fX3N0YXQzMChsb25nIGxvbmcgcmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHViKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF81MF9fX2ZzdGF0MzAobG9uZyBsb25nIGZkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgc2IpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF81MF9fX2ZzdGF0MzAobG9uZyBsb25nIHJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBzYik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfNTBfX19sc3RhdDMwKGxvbmcgbG9uZyBwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdWIpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF81MF9fX2xzdGF0MzAobG9uZyBsb25nIHJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHViKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fZ2V0ZGVudHMzMChsb25nIGxvbmcgZmQsIGxvbmcgbG9uZyBidWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGNvdW50KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX2dldGRlbnRzMzAobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIGZkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYnVmLCBsb25nIGxvbmcgY291bnQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfcG9zaXhfZmFkdmlzZShsb25nIGxvbmcpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3Bvc2l4X2ZhZHZpc2UobG9uZyBsb25nIHJlcywgbG9uZyBsb25nKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF8zMF9fX2Zoc3RhdDMwKGxvbmcgbG9uZyBmaHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgc2IpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF8zMF9fX2Zoc3RhdDMwKGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGZocCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgc2IpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzUwX19fbnRwX2dldHRpbWUzMChsb25nIGxvbmcgbnR2cCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29tcGF0XzUwX19fbnRwX2dldHRpbWUzMChsb25nIGxvbmcgcmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG50dnApOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19zb2NrZXQzMChsb25nIGxvbmcgZG9tYWluLCBsb25nIGxvbmcgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHByb3RvY29sKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX3NvY2tldDMwKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBkb21haW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBwcm90b2NvbCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX2dldGZoMzAobG9uZyBsb25nIGZuYW1lLCBsb25nIGxvbmcgZmhwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmaF9zaXplKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX2dldGZoMzAobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIGZuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZmhwLCBsb25nIGxvbmcgZmhfc2l6ZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX2Zob3BlbjQwKGxvbmcgbG9uZyBmaHAsIGxvbmcgbG9uZyBmaF9zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZmxhZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fZmhvcGVuNDAobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIGZocCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmaF9zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF85MF9maHN0YXR2ZnMxKGxvbmcgbG9uZyBmaHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZmhfc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBidWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZmxhZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF85MF9maHN0YXR2ZnMxKGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGZocCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZmhfc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYnVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmbGFncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jb21wYXRfNTBfX19maHN0YXQ0MChsb25nIGxvbmcgZmhwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGZoX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgc2IpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF81MF9fX2Zoc3RhdDQwKGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGZocCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZmhfc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgc2IpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfYWlvX2NhbmNlbChsb25nIGxvbmcgZmlsZGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYWlvY2JwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9haW9fY2FuY2VsKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBmaWxkZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYWlvY2JwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2Fpb19lcnJvcihsb25nIGxvbmcgYWlvY2JwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9haW9fZXJyb3IobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIGFpb2NicCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9haW9fZnN5bmMobG9uZyBsb25nIG9wLCBsb25nIGxvbmcgYWlvY2JwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9haW9fZnN5bmMobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIG9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYWlvY2JwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2Fpb19yZWFkKGxvbmcgbG9uZyBhaW9jYnApOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2Fpb19yZWFkKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBhaW9jYnApOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfYWlvX3JldHVybihsb25nIGxvbmcgYWlvY2JwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9haW9fcmV0dXJuKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBhaW9jYnApOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29tcGF0XzUwX2Fpb19zdXNwZW5kKGxvbmcgbG9uZyBsaXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBuZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB0aW1lb3V0KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jb21wYXRfNTBfYWlvX3N1c3BlbmQobG9uZyBsb25nIHJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGxpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBuZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdGltZW91dCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9haW9fd3JpdGUobG9uZyBsb25nIGFpb2NicCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfYWlvX3dyaXRlKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBhaW9jYnApOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbGlvX2xpc3Rpbyhsb25nIGxvbmcgbW9kZSwgbG9uZyBsb25nIGxpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBuZW50LCBsb25nIGxvbmcgc2lnKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9saW9fbGlzdGlvKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBtb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGxpc3QsIGxvbmcgbG9uZyBuZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHNpZyk7Ci8qIHN5c2NhbGwgNDA3IGhhcyBiZWVuIHNraXBwZWQgKi8KLyogc3lzY2FsbCA0MDggaGFzIGJlZW4gc2tpcHBlZCAqLwovKiBzeXNjYWxsIDQwOSBoYXMgYmVlbiBza2lwcGVkICovCnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX21vdW50NTAobG9uZyBsb25nIHR5cGUsIGxvbmcgbG9uZyBwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmbGFncywgbG9uZyBsb25nIGRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGRhdGFfbGVuKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX21vdW50NTAobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBwYXRoLCBsb25nIGxvbmcgZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZGF0YV9sZW4pOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbXJlbWFwKGxvbmcgbG9uZyBvbGRfYWRkcmVzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgb2xkX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG5ld19hZGRyZXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBuZXdfc2l6ZSwgbG9uZyBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9tcmVtYXAobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIG9sZF9hZGRyZXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgb2xkX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBuZXdfYWRkcmVzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG5ld19zaXplLCBsb25nIGxvbmcgZmxhZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfcHNldF9jcmVhdGUobG9uZyBsb25nIHBzaWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3BzZXRfY3JlYXRlKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBwc2lkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3BzZXRfZGVzdHJveShsb25nIGxvbmcgcHNpZCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcHNldF9kZXN0cm95KGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBwc2lkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3BzZXRfYXNzaWduKGxvbmcgbG9uZyBwc2lkLCBsb25nIGxvbmcgY3B1aWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgb3BzaWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3BzZXRfYXNzaWduKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBwc2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBjcHVpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgb3BzaWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX3BzZXRfYmluZChsb25nIGxvbmcgaWR0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZmlyc3RfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBzZWNvbmRfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBwc2lkLCBsb25nIGxvbmcgb3BzaWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19wc2V0X2JpbmQobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIGlkdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmaXJzdF9pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBzZWNvbmRfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgcHNpZCwgbG9uZyBsb25nIG9wc2lkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fcG9zaXhfZmFkdmlzZTUwKGxvbmcgbG9uZyBmZCwgbG9uZyBsb25nIFBBRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGFkdmljZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX19wb3NpeF9mYWR2aXNlNTAoCiAgICBsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgZmQsIGxvbmcgbG9uZyBQQUQsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW4sCiAgICBsb25nIGxvbmcgYWR2aWNlKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fc2VsZWN0NTAobG9uZyBsb25nIG5kLCBsb25nIGxvbmcgaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBvdSwgbG9uZyBsb25nIGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdHYpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fc2VsZWN0NTAobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIG5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGluLCBsb25nIGxvbmcgb3UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZXgsIGxvbmcgbG9uZyB0dik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX2dldHRpbWVvZmRheTUwKGxvbmcgbG9uZyB0cCwgbG9uZyBsb25nIHR6cCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX19nZXR0aW1lb2ZkYXk1MChsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgdHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdHpwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fc2V0dGltZW9mZGF5NTAobG9uZyBsb25nIHR2LCBsb25nIGxvbmcgdHpwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX3NldHRpbWVvZmRheTUwKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyB0diwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB0enApOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX191dGltZXM1MChsb25nIGxvbmcgcGF0aCwgbG9uZyBsb25nIHRwdHIpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fdXRpbWVzNTAobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdHB0cik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX2FkanRpbWU1MChsb25nIGxvbmcgZGVsdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgb2xkZGVsdGEpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fYWRqdGltZTUwKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBkZWx0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgb2xkZGVsdGEpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19sZnNfc2Vnd2FpdDUwKGxvbmcgbG9uZyBmc2lkcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdHYpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fbGZzX3NlZ3dhaXQ1MChsb25nIGxvbmcgcmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZnNpZHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB0dik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX2Z1dGltZXM1MChsb25nIGxvbmcgZmQsIGxvbmcgbG9uZyB0cHRyKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX2Z1dGltZXM1MChsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHRwdHIpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19sdXRpbWVzNTAobG9uZyBsb25nIHBhdGgsIGxvbmcgbG9uZyB0cHRyKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX2x1dGltZXM1MChsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdHB0cik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX3NldGl0aW1lcjUwKGxvbmcgbG9uZyB3aGljaCwgbG9uZyBsb25nIGl0diwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG9pdHYpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fc2V0aXRpbWVyNTAobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIHdoaWNoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGl0diwgbG9uZyBsb25nIG9pdHYpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19nZXRpdGltZXI1MChsb25nIGxvbmcgd2hpY2gsIGxvbmcgbG9uZyBpdHYpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fZ2V0aXRpbWVyNTAobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIHdoaWNoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGl0dik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX2Nsb2NrX2dldHRpbWU1MChsb25nIGxvbmcgY2xvY2tfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdHApOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fY2xvY2tfZ2V0dGltZTUwKGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGNsb2NrX2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB0cCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX2Nsb2NrX3NldHRpbWU1MChsb25nIGxvbmcgY2xvY2tfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdHApOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fY2xvY2tfc2V0dGltZTUwKGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGNsb2NrX2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB0cCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX2Nsb2NrX2dldHJlczUwKGxvbmcgbG9uZyBjbG9ja19pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHRwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX2Nsb2NrX2dldHJlczUwKGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgY2xvY2tfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdHApOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19uYW5vc2xlZXA1MChsb25nIGxvbmcgcnF0cCwgbG9uZyBsb25nIHJtdHApOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fbmFub3NsZWVwNTAobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIHJxdHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgcm10cCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX19fc2lndGltZWR3YWl0NTAobG9uZyBsb25nIHNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdGltZW91dCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX19fX3NpZ3RpbWVkd2FpdDUwKGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdGltZW91dCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX21xX3RpbWVkc2VuZDUwKGxvbmcgbG9uZyBtcWRlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG1zZ19wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBtc2dfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbXNnX3ByaW8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhYnNfdGltZW91dCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX19tcV90aW1lZHNlbmQ1MCgKICAgIGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBtcWRlcywgbG9uZyBsb25nIG1zZ19wdHIsIGxvbmcgbG9uZyBtc2dfbGVuLAogICAgbG9uZyBsb25nIG1zZ19wcmlvLCBsb25nIGxvbmcgYWJzX3RpbWVvdXQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19tcV90aW1lZHJlY2VpdmU1MChsb25nIGxvbmcgbXFkZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBtc2dfcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbXNnX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG1zZ19wcmlvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYWJzX3RpbWVvdXQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fbXFfdGltZWRyZWNlaXZlNTAoCiAgICBsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgbXFkZXMsIGxvbmcgbG9uZyBtc2dfcHRyLCBsb25nIGxvbmcgbXNnX2xlbiwKICAgIGxvbmcgbG9uZyBtc2dfcHJpbywgbG9uZyBsb25nIGFic190aW1lb3V0KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NvbXBhdF82MF9fbHdwX3BhcmsobG9uZyBsb25nIHRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdW5wYXJrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgaGludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHVucGFya2hpbnQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NvbXBhdF82MF9fbHdwX3BhcmsobG9uZyBsb25nIHJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB1bnBhcmssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgaGludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB1bnBhcmtoaW50KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fa2V2ZW50NTAobG9uZyBsb25nIGZkLCBsb25nIGxvbmcgY2hhbmdlbGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG5jaGFuZ2VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZXZlbnRsaXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbmV2ZW50cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHRpbWVvdXQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fa2V2ZW50NTAoCiAgICBsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgZmQsIGxvbmcgbG9uZyBjaGFuZ2VsaXN0LCBsb25nIGxvbmcgbmNoYW5nZXMsCiAgICBsb25nIGxvbmcgZXZlbnRsaXN0LCBsb25nIGxvbmcgbmV2ZW50cywgbG9uZyBsb25nIHRpbWVvdXQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19wc2VsZWN0NTAobG9uZyBsb25nIG5kLCBsb25nIGxvbmcgaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgb3UsIGxvbmcgbG9uZyBleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB0cywgbG9uZyBsb25nIG1hc2spOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fcHNlbGVjdDUwKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBuZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgaW4sIGxvbmcgbG9uZyBvdSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZXgsIGxvbmcgbG9uZyB0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbWFzayk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX3BvbGx0czUwKGxvbmcgbG9uZyBmZHMsIGxvbmcgbG9uZyBuZmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdHMsIGxvbmcgbG9uZyBtYXNrKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX3BvbGx0czUwKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBmZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbmZkcywgbG9uZyBsb25nIHRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG1hc2spOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19haW9fc3VzcGVuZDUwKGxvbmcgbG9uZyBsaXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBuZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB0aW1lb3V0KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX2Fpb19zdXNwZW5kNTAobG9uZyBsb25nIHJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGxpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBuZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdGltZW91dCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX3N0YXQ1MChsb25nIGxvbmcgcGF0aCwgbG9uZyBsb25nIHViKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX3N0YXQ1MChsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdWIpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19mc3RhdDUwKGxvbmcgbG9uZyBmZCwgbG9uZyBsb25nIHNiKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX2ZzdGF0NTAobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIGZkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgc2IpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19sc3RhdDUwKGxvbmcgbG9uZyBwYXRoLCBsb25nIGxvbmcgdWIpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fbHN0YXQ1MChsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHViKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fX19zZW1jdGw1MChsb25nIGxvbmcgc2VtaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHNlbW51bSwgbG9uZyBsb25nIGNtZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYXJnKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX19fc2VtY3RsNTAobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIHNlbWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgc2VtbnVtLCBsb25nIGxvbmcgY21kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYXJnKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fc2htY3RsNTAobG9uZyBsb25nIHNobWlkLCBsb25nIGxvbmcgY21kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYnVmKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX3NobWN0bDUwKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBzaG1pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBjbWQsIGxvbmcgbG9uZyBidWYpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19tc2djdGw1MChsb25nIGxvbmcgbXNxaWQsIGxvbmcgbG9uZyBjbWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBidWYpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fbXNnY3RsNTAobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIG1zcWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGNtZCwgbG9uZyBsb25nIGJ1Zik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX2dldHJ1c2FnZTUwKGxvbmcgbG9uZyB3aG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBydXNhZ2UpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fZ2V0cnVzYWdlNTAobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIHdobywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBydXNhZ2UpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX190aW1lcl9zZXR0aW1lNTAobG9uZyBsb25nIHRpbWVyaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgb3ZhbHVlKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX3RpbWVyX3NldHRpbWU1MChsb25nIGxvbmcgcmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB0aW1lcmlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG92YWx1ZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX3RpbWVyX2dldHRpbWU1MChsb25nIGxvbmcgdGltZXJpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB2YWx1ZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX190aW1lcl9nZXR0aW1lNTAobG9uZyBsb25nIHJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdGltZXJpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdmFsdWUpOwojaWYgZGVmaW5lZChOVFApIHx8ICFkZWZpbmVkKF9LRVJORUxfT1BUKQp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19udHBfZ2V0dGltZTUwKGxvbmcgbG9uZyBudHZwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX250cF9nZXR0aW1lNTAobG9uZyBsb25nIHJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG50dnApOwojZWxzZQovKiBzeXNjYWxsIDQ0OCBoYXMgYmVlbiBza2lwcGVkICovCiNlbmRpZgp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX193YWl0NDUwKGxvbmcgbG9uZyBwaWQsIGxvbmcgbG9uZyBzdGF0dXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHJ1c2FnZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX193YWl0NDUwKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBwaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBzdGF0dXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBvcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgcnVzYWdlKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fbWtub2Q1MChsb25nIGxvbmcgcGF0aCwgbG9uZyBsb25nIG1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGRldik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX19ta25vZDUwKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbW9kZSwgbG9uZyBsb25nIGRldik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX2Zoc3RhdDUwKGxvbmcgbG9uZyBmaHAsIGxvbmcgbG9uZyBmaF9zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgc2IpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fZmhzdGF0NTAobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIGZocCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmaF9zaXplLCBsb25nIGxvbmcgc2IpOwovKiBzeXNjYWxsIDQ1MiBoYXMgYmVlbiBza2lwcGVkICovCnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9waXBlMihsb25nIGxvbmcgZmlsZGVzLCBsb25nIGxvbmcgZmxhZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3BpcGUyKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBmaWxkZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2R1cDMobG9uZyBsb25nIGZyb20sIGxvbmcgbG9uZyB0bywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9kdXAzKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBmcm9tLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHRvLCBsb25nIGxvbmcgZmxhZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfa3F1ZXVlMShsb25nIGxvbmcgZmxhZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2txdWV1ZTEobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3BhY2NlcHQobG9uZyBsb25nIHMsIGxvbmcgbG9uZyBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYW5hbWVsZW4sIGxvbmcgbG9uZyBtYXNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZmxhZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3BhY2NlcHQobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbmFtZSwgbG9uZyBsb25nIGFuYW1lbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG1hc2ssIGxvbmcgbG9uZyBmbGFncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9saW5rYXQobG9uZyBsb25nIGZkMSwgbG9uZyBsb25nIG5hbWUxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmZDIsIGxvbmcgbG9uZyBuYW1lMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZmxhZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2xpbmthdChsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgZmQxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbmFtZTEsIGxvbmcgbG9uZyBmZDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBuYW1lMiwgbG9uZyBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3JlbmFtZWF0KGxvbmcgbG9uZyBmcm9tZmQsIGxvbmcgbG9uZyBmcm9tLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHRvZmQsIGxvbmcgbG9uZyB0byk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcmVuYW1lYXQobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIGZyb21mZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZnJvbSwgbG9uZyBsb25nIHRvZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHRvKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX21rZmlmb2F0KGxvbmcgbG9uZyBmZCwgbG9uZyBsb25nIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbW9kZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbWtmaWZvYXQobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIGZkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBwYXRoLCBsb25nIGxvbmcgbW9kZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9ta25vZGF0KGxvbmcgbG9uZyBmZCwgbG9uZyBsb25nIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBtb2RlLCBsb25nIGxvbmcgUEFELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZGV2KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9ta25vZGF0KGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBmZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBwYXRoLCBsb25nIGxvbmcgbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBQQUQsIGxvbmcgbG9uZyBkZXYpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbWtkaXJhdChsb25nIGxvbmcgZmQsIGxvbmcgbG9uZyBwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbW9kZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbWtkaXJhdChsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgcGF0aCwgbG9uZyBsb25nIG1vZGUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZmFjY2Vzc2F0KGxvbmcgbG9uZyBmZCwgbG9uZyBsb25nIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGFtb2RlLCBsb25nIGxvbmcgZmxhZyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZmFjY2Vzc2F0KGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBmZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHBhdGgsIGxvbmcgbG9uZyBhbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGZsYWcpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZmNobW9kYXQobG9uZyBsb25nIGZkLCBsb25nIGxvbmcgcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBtb2RlLCBsb25nIGxvbmcgZmxhZyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZmNobW9kYXQobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIGZkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBwYXRoLCBsb25nIGxvbmcgbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZmxhZyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9mY2hvd25hdChsb25nIGxvbmcgZmQsIGxvbmcgbG9uZyBwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG93bmVyLCBsb25nIGxvbmcgZ3JvdXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZmxhZyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZmNob3duYXQobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIGZkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBwYXRoLCBsb25nIGxvbmcgb3duZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGdyb3VwLCBsb25nIGxvbmcgZmxhZyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9mZXhlY3ZlKGxvbmcgbG9uZyBmZCwgbG9uZyBsb25nIGFyZ3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBlbnZwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9mZXhlY3ZlKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBmZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhcmdwLCBsb25nIGxvbmcgZW52cCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9mc3RhdGF0KGxvbmcgbG9uZyBmZCwgbG9uZyBsb25nIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBidWYsIGxvbmcgbG9uZyBmbGFnKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9mc3RhdGF0KGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBmZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBwYXRoLCBsb25nIGxvbmcgYnVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGZsYWcpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfdXRpbWVuc2F0KGxvbmcgbG9uZyBmZCwgbG9uZyBsb25nIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHRwdHIsIGxvbmcgbG9uZyBmbGFnKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF91dGltZW5zYXQobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIGZkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgcGF0aCwgbG9uZyBsb25nIHRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmbGFnKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX29wZW5hdChsb25nIGxvbmcgZmQsIGxvbmcgbG9uZyBwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBvZmxhZ3MsIGxvbmcgbG9uZyBtb2RlKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9vcGVuYXQobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIGZkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgcGF0aCwgbG9uZyBsb25nIG9mbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG1vZGUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfcmVhZGxpbmthdChsb25nIGxvbmcgZmQsIGxvbmcgbG9uZyBwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYnVmLCBsb25nIGxvbmcgYnVmc2l6ZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcmVhZGxpbmthdChsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgcGF0aCwgbG9uZyBsb25nIGJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBidWZzaXplKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3N5bWxpbmthdChsb25nIGxvbmcgcGF0aDEsIGxvbmcgbG9uZyBmZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgcGF0aDIpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3N5bWxpbmthdChsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgcGF0aDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmZCwgbG9uZyBsb25nIHBhdGgyKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3VubGlua2F0KGxvbmcgbG9uZyBmZCwgbG9uZyBsb25nIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZmxhZyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfdW5saW5rYXQobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIGZkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBwYXRoLCBsb25nIGxvbmcgZmxhZyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9mdXRpbWVucyhsb25nIGxvbmcgZmQsIGxvbmcgbG9uZyB0cHRyKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9mdXRpbWVucyhsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHRwdHIpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19xdW90YWN0bChsb25nIGxvbmcgcGF0aCwgbG9uZyBsb25nIGFyZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fcXVvdGFjdGwobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYXJncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9wb3NpeF9zcGF3bihsb25nIGxvbmcgcGlkLCBsb25nIGxvbmcgcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmaWxlX2FjdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYXR0cnAsIGxvbmcgbG9uZyBhcmd2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGVudnApOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3Bvc2l4X3NwYXduKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBwaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGZpbGVfYWN0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYXR0cnAsIGxvbmcgbG9uZyBhcmd2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBlbnZwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3JlY3ZtbXNnKGxvbmcgbG9uZyBzLCBsb25nIGxvbmcgbW1zZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB2bGVuLCBsb25nIGxvbmcgZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdGltZW91dCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcmVjdm1tc2cobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG1tc2csIGxvbmcgbG9uZyB2bGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmbGFncywgbG9uZyBsb25nIHRpbWVvdXQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2VuZG1tc2cobG9uZyBsb25nIHMsIGxvbmcgbG9uZyBtbXNnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHZsZW4sIGxvbmcgbG9uZyBmbGFncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2VuZG1tc2cobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG1tc2csIGxvbmcgbG9uZyB2bGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmbGFncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jbG9ja19uYW5vc2xlZXAobG9uZyBsb25nIGNsb2NrX2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgcnF0cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgcm10cCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY2xvY2tfbmFub3NsZWVwKGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBjbG9ja19pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgcnF0cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHJtdHApOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19fbHdwX3Bhcms2MChsb25nIGxvbmcgY2xvY2tfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmbGFncywgbG9uZyBsb25nIHRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdW5wYXJrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgaGludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHVucGFya2hpbnQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fX2x3cF9wYXJrNjAoCiAgICBsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgY2xvY2tfaWQsIGxvbmcgbG9uZyBmbGFncywgbG9uZyBsb25nIHRzLAogICAgbG9uZyBsb25nIHVucGFyaywgbG9uZyBsb25nIGhpbnQsIGxvbmcgbG9uZyB1bnBhcmtoaW50KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3Bvc2l4X2ZhbGxvY2F0ZShsb25nIGxvbmcgZmQsIGxvbmcgbG9uZyBQQUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHBvcywgbG9uZyBsb25nIGxlbik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcG9zaXhfZmFsbG9jYXRlKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBmZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIFBBRCwgbG9uZyBsb25nIHBvcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGxlbik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9mZGlzY2FyZChsb25nIGxvbmcgZmQsIGxvbmcgbG9uZyBQQUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgcG9zLCBsb25nIGxvbmcgbGVuKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9mZGlzY2FyZChsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIFBBRCwgbG9uZyBsb25nIHBvcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgbGVuKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3dhaXQ2KGxvbmcgbG9uZyBpZHR5cGUsIGxvbmcgbG9uZyBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBzdGF0dXMsIGxvbmcgbG9uZyBvcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHdydSwgbG9uZyBsb25nIGluZm8pOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3dhaXQ2KGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBpZHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGlkLCBsb25nIGxvbmcgc3RhdHVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBvcHRpb25zLCBsb25nIGxvbmcgd3J1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBpbmZvKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2Nsb2NrX2dldGNwdWNsb2NraWQyKGxvbmcgbG9uZyBpZHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgY2xvY2tfaWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2Nsb2NrX2dldGNwdWNsb2NraWQyKGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGlkdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGNsb2NrX2lkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fZ2V0dmZzc3RhdDkwKGxvbmcgbG9uZyBidWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYnVmc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmbGFncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX19nZXR2ZnNzdGF0OTAobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIGJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYnVmc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZmxhZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19zdGF0dmZzMTkwKGxvbmcgbG9uZyBwYXRoLCBsb25nIGxvbmcgYnVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmbGFncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX19zdGF0dmZzMTkwKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYnVmLCBsb25nIGxvbmcgZmxhZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19mc3RhdHZmczE5MChsb25nIGxvbmcgZmQsIGxvbmcgbG9uZyBidWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmbGFncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX19mc3RhdHZmczE5MChsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYnVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fZmhzdGF0dmZzMTkwKGxvbmcgbG9uZyBmaHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZmhfc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBidWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZmxhZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fZmhzdGF0dmZzMTkwKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBmaHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGZoX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZmxhZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19hY2xfZ2V0X2xpbmsobG9uZyBsb25nIHBhdGgsIGxvbmcgbG9uZyB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGFjbHApOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fYWNsX2dldF9saW5rKGxvbmcgbG9uZyByZXMsIGxvbmcgbG9uZyBwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhY2xwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fYWNsX3NldF9saW5rKGxvbmcgbG9uZyBwYXRoLCBsb25nIGxvbmcgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhY2xwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX2FjbF9zZXRfbGluayhsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYWNscCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX2FjbF9kZWxldGVfbGluayhsb25nIGxvbmcgcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB0eXBlKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX2FjbF9kZWxldGVfbGluayhsb25nIGxvbmcgcmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB0eXBlKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fYWNsX2FjbGNoZWNrX2xpbmsobG9uZyBsb25nIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYWNscCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX19hY2xfYWNsY2hlY2tfbGluayhsb25nIGxvbmcgcmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhY2xwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX19fYWNsX2dldF9maWxlKGxvbmcgbG9uZyBwYXRoLCBsb25nIGxvbmcgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhY2xwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX2FjbF9nZXRfZmlsZShsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYWNscCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX2FjbF9zZXRfZmlsZShsb25nIGxvbmcgcGF0aCwgbG9uZyBsb25nIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgYWNscCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX19hY2xfc2V0X2ZpbGUobG9uZyBsb25nIHJlcywgbG9uZyBsb25nIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGFjbHApOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19hY2xfZ2V0X2ZkKGxvbmcgbG9uZyBmaWxlZGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB0eXBlLCBsb25nIGxvbmcgYWNscCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX19hY2xfZ2V0X2ZkKGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmaWxlZGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdHlwZSwgbG9uZyBsb25nIGFjbHApOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19hY2xfc2V0X2ZkKGxvbmcgbG9uZyBmaWxlZGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB0eXBlLCBsb25nIGxvbmcgYWNscCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX19hY2xfc2V0X2ZkKGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmaWxlZGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdHlwZSwgbG9uZyBsb25nIGFjbHApOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19hY2xfZGVsZXRlX2ZpbGUobG9uZyBsb25nIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdHlwZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfX19hY2xfZGVsZXRlX2ZpbGUobG9uZyBsb25nIHJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdHlwZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9fX2FjbF9kZWxldGVfZmQobG9uZyBsb25nIGZpbGVkZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHR5cGUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX19fYWNsX2RlbGV0ZV9mZChsb25nIGxvbmcgcmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgZmlsZWRlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHR5cGUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19hY2xfYWNsY2hlY2tfZmlsZShsb25nIGxvbmcgcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhY2xwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX2FjbF9hY2xjaGVja19maWxlKGxvbmcgbG9uZyByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGFjbHApOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfX19hY2xfYWNsY2hlY2tfZmQobG9uZyBsb25nIGZpbGVkZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhY2xwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9fX2FjbF9hY2xjaGVja19mZChsb25nIGxvbmcgcmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmaWxlZGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhY2xwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2xwYXRoY29uZihsb25nIGxvbmcgcGF0aCwgbG9uZyBsb25nIG5hbWUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2xwYXRoY29uZihsb25nIGxvbmcgcmVzLCBsb25nIGxvbmcgcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIG5hbWUpOwoKI2lmZGVmIF9fY3BsdXNwbHVzCn0gLy8gZXh0ZXJuICJDIgojZW5kaWYKCi8vIERPIE5PVCBFRElUISBUSElTIEZJTEUgSEFTIEJFRU4gR0VORVJBVEVEIQoKI2VuZGlmIC8vIFNBTklUSVpFUl9ORVRCU0RfU1lTQ0FMTF9IT09LU19ICgBleHRlcm5hbC9reXRoZS9reXRoZS9jeHgvY29tbW9uL2ZpbGVfdXRpbHMuY2MAQ2hlY2sgZmFpbGVkOiBoYW5kbGUgIT0gbnVsbHB0cgBreXRoZQAyACc6IABFcnJvciByZXZlcnNlIGNvbXBpbGluZyAnAEJhZCBoZXggZGlnaXQgAFs6YXNjaWk6XQAlZC4gJXMKAHx8AFN0YXRlU2F2ZXIgZmFpbGVkIHRvIHJlc3RvcmUgc3RhdGUuACBhcmcgAD9QPABCcmFobWkARG9ncmEASGFuAE0AUnVuaWMAY2xvY2tfZ2V0dGltZSgpIGZhaWxlZAAvcHJvYy9zZWxmL3Rhc2svJWQvbWFwcwBpbnRlcm5hbCBlcnJvcgA6OgB1bnNpZ25lZCBsb25nIGxvbmcAX19pbnQxMjgAcGwAPQBzegBleHRlcm5hbC9hYnNlaWwtY3BwL2Fic2wvc3RhdHVzL3N0YXR1cy5jYwBVbmtub3duIGVzY2FwZSBzZXF1ZW5jZTogXAAsIGxlbmd0aCA9IAAobmlsKQBuYW4AVHJ5TG9jayBzdWNjZWVkZWQgAC91c3Ivc2hhcmUvem9uZWluZm8Aa3l0aGUucHJvdG8uVk5hbWUubGFuZ3VhZ2UAa3l0aGUucHJvdG8uRW50cnkuZmFjdF9uYW1lAGt5dGhlLnByb3RvLlNjYW5SZXF1ZXN0LmVkZ2Vfa2luZABjKystY3BwLW91dHB1dABub19idWlsdGluAG5vX21hdGhfYnVpbHRpbgBPYmpDWFhTeXN0ZW0ALyo9PT0tLS0tLS0tLS0tLSBhdng1MTJmcDE2aW50cmluLmggLSBBVlg1MTItRlAxNiBpbnRyaW5zaWNzIC0tLS0tLS0tLS0tLS0tLT09PQogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwojaWZuZGVmIF9fSU1NSU5UUklOX0gKI2Vycm9yICJOZXZlciB1c2UgPGF2eDUxMmZwMTZpbnRyaW4uaD4gZGlyZWN0bHk7IGluY2x1ZGUgPGltbWludHJpbi5oPiBpbnN0ZWFkLiIKI2VuZGlmCgojaWZuZGVmIF9fQVZYNTEyRlAxNklOVFJJTl9ICiNkZWZpbmUgX19BVlg1MTJGUDE2SU5UUklOX0gKCi8qIERlZmluZSB0aGUgZGVmYXVsdCBhdHRyaWJ1dGVzIGZvciB0aGUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZS4gKi8KdHlwZWRlZiBfRmxvYXQxNiBfX3YzMmhmIF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXyg2NCksIF9fYWxpZ25lZF9fKDY0KSkpOwp0eXBlZGVmIF9GbG9hdDE2IF9fbTUxMmggX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDY0KSwgX19hbGlnbmVkX18oNjQpKSk7CnR5cGVkZWYgX0Zsb2F0MTYgX19tNTEyaF91IF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXyg2NCksIF9fYWxpZ25lZF9fKDEpKSk7CnR5cGVkZWYgX0Zsb2F0MTYgX192OGhmIF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXygxNiksIF9fYWxpZ25lZF9fKDE2KSkpOwp0eXBlZGVmIF9GbG9hdDE2IF9fbTEyOGggX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDE2KSwgX19hbGlnbmVkX18oMTYpKSk7CnR5cGVkZWYgX0Zsb2F0MTYgX19tMTI4aF91IF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXygxNiksIF9fYWxpZ25lZF9fKDEpKSk7CnR5cGVkZWYgX0Zsb2F0MTYgX192MTZoZiBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oMzIpLCBfX2FsaWduZWRfXygzMikpKTsKdHlwZWRlZiBfRmxvYXQxNiBfX20yNTZoIF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXygzMiksIF9fYWxpZ25lZF9fKDMyKSkpOwp0eXBlZGVmIF9GbG9hdDE2IF9fbTI1NmhfdSBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oMzIpLCBfX2FsaWduZWRfXygxKSkpOwoKLyogRGVmaW5lIHRoZSBkZWZhdWx0IGF0dHJpYnV0ZXMgZm9yIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlLiAqLwojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUzUxMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygiYXZ4NTEyZnAxNiIpLCAgICAgXAogICAgICAgICAgICAgICAgIF9fbWluX3ZlY3Rvcl93aWR0aF9fKDUxMikpKQojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUzI1NiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygiYXZ4NTEyZnAxNiIpLCAgICAgXAogICAgICAgICAgICAgICAgIF9fbWluX3ZlY3Rvcl93aWR0aF9fKDI1NikpKQojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUzEyOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygiYXZ4NTEyZnAxNiIpLCAgICAgXAogICAgICAgICAgICAgICAgIF9fbWluX3ZlY3Rvcl93aWR0aF9fKDEyOCkpKQoKc3RhdGljIF9faW5saW5lX18gX0Zsb2F0MTYgX19ERUZBVUxUX0ZOX0FUVFJTNTEyIF9tbTUxMl9jdnRzaF9oKF9fbTUxMmggX19hKSB7CiAgcmV0dXJuIF9fYVswXTsKfQoKc3RhdGljIF9faW5saW5lIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9zZXR6ZXJvX3BoKHZvaWQpIHsKICByZXR1cm4gKF9fbTEyOGgpezAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wfTsKfQoKc3RhdGljIF9faW5saW5lIF9fbTI1NmggX19ERUZBVUxUX0ZOX0FUVFJTMjU2IF9tbTI1Nl9zZXR6ZXJvX3BoKHZvaWQpIHsKICByZXR1cm4gKF9fbTI1NmgpezAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLAogICAgICAgICAgICAgICAgICAgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjB9Owp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZoIF9fREVGQVVMVF9GTl9BVFRSUzI1NiBfbW0yNTZfdW5kZWZpbmVkX3BoKHZvaWQpIHsKICByZXR1cm4gKF9fbTI1NmgpX19idWlsdGluX2lhMzJfdW5kZWYyNTYoKTsKfQoKc3RhdGljIF9faW5saW5lIF9fbTUxMmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyIF9tbTUxMl9zZXR6ZXJvX3BoKHZvaWQpIHsKICByZXR1cm4gKF9fbTUxMmgpezAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLAogICAgICAgICAgICAgICAgICAgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsCiAgICAgICAgICAgICAgICAgICAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjB9Owp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfbW1fdW5kZWZpbmVkX3BoKHZvaWQpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfdW5kZWYxMjgoKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIgX21tNTEyX3VuZGVmaW5lZF9waCh2b2lkKSB7CiAgcmV0dXJuIChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3VuZGVmNTEyKCk7Cn0KCnN0YXRpYyBfX2lubGluZSBfX201MTJoIF9fREVGQVVMVF9GTl9BVFRSUzUxMiBfbW01MTJfc2V0MV9waChfRmxvYXQxNiBfX2gpIHsKICByZXR1cm4gKF9fbTUxMmgpKF9fdjMyaGYpe19faCwgX19oLCBfX2gsIF9faCwgX19oLCBfX2gsIF9faCwgX19oLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX19oLCBfX2gsIF9faCwgX19oLCBfX2gsIF9faCwgX19oLCBfX2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2gsIF9faCwgX19oLCBfX2gsIF9faCwgX19oLCBfX2gsIF9faCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faCwgX19oLCBfX2gsIF9faCwgX19oLCBfX2gsIF9faCwgX19ofTsKfQoKc3RhdGljIF9faW5saW5lIF9fbTUxMmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9zZXRfcGgoX0Zsb2F0MTYgX19oMSwgX0Zsb2F0MTYgX19oMiwgX0Zsb2F0MTYgX19oMywgX0Zsb2F0MTYgX19oNCwKICAgICAgICAgICAgICBfRmxvYXQxNiBfX2g1LCBfRmxvYXQxNiBfX2g2LCBfRmxvYXQxNiBfX2g3LCBfRmxvYXQxNiBfX2g4LAogICAgICAgICAgICAgIF9GbG9hdDE2IF9faDksIF9GbG9hdDE2IF9faDEwLCBfRmxvYXQxNiBfX2gxMSwgX0Zsb2F0MTYgX19oMTIsCiAgICAgICAgICAgICAgX0Zsb2F0MTYgX19oMTMsIF9GbG9hdDE2IF9faDE0LCBfRmxvYXQxNiBfX2gxNSwgX0Zsb2F0MTYgX19oMTYsCiAgICAgICAgICAgICAgX0Zsb2F0MTYgX19oMTcsIF9GbG9hdDE2IF9faDE4LCBfRmxvYXQxNiBfX2gxOSwgX0Zsb2F0MTYgX19oMjAsCiAgICAgICAgICAgICAgX0Zsb2F0MTYgX19oMjEsIF9GbG9hdDE2IF9faDIyLCBfRmxvYXQxNiBfX2gyMywgX0Zsb2F0MTYgX19oMjQsCiAgICAgICAgICAgICAgX0Zsb2F0MTYgX19oMjUsIF9GbG9hdDE2IF9faDI2LCBfRmxvYXQxNiBfX2gyNywgX0Zsb2F0MTYgX19oMjgsCiAgICAgICAgICAgICAgX0Zsb2F0MTYgX19oMjksIF9GbG9hdDE2IF9faDMwLCBfRmxvYXQxNiBfX2gzMSwgX0Zsb2F0MTYgX19oMzIpIHsKICByZXR1cm4gKF9fbTUxMmgpKF9fdjMyaGYpe19faDMyLCBfX2gzMSwgX19oMzAsIF9faDI5LCBfX2gyOCwgX19oMjcsIF9faDI2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX19oMjUsIF9faDI0LCBfX2gyMywgX19oMjIsIF9faDIxLCBfX2gyMCwgX19oMTksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2gxOCwgX19oMTcsIF9faDE2LCBfX2gxNSwgX19oMTQsIF9faDEzLCBfX2gxMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faDExLCBfX2gxMCwgX19oOSwgIF9faDgsICBfX2g3LCAgX19oNiwgIF9faDUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2g0LCAgX19oMywgIF9faDIsICBfX2gxfTsKfQoKI2RlZmluZSBfbW01MTJfc2V0cl9waChoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBoNywgaDgsIGg5LCBoMTAsIGgxMSwgaDEyLCBoMTMsIFwKICAgICAgICAgICAgICAgICAgICAgICBoMTQsIGgxNSwgaDE2LCBoMTcsIGgxOCwgaDE5LCBoMjAsIGgyMSwgaDIyLCBoMjMsIGgyNCwgIFwKICAgICAgICAgICAgICAgICAgICAgICBoMjUsIGgyNiwgaDI3LCBoMjgsIGgyOSwgaDMwLCBoMzEsIGgzMikgICAgICAgICAgICAgICAgIFwKICBfbW01MTJfc2V0X3BoKChoMzIpLCAoaDMxKSwgKGgzMCksIChoMjkpLCAoaDI4KSwgKGgyNyksIChoMjYpLCAoaDI1KSwgKGgyNCksIFwKICAgICAgICAgICAgICAgIChoMjMpLCAoaDIyKSwgKGgyMSksIChoMjApLCAoaDE5KSwgKGgxOCksIChoMTcpLCAoaDE2KSwgKGgxNSksIFwKICAgICAgICAgICAgICAgIChoMTQpLCAoaDEzKSwgKGgxMiksIChoMTEpLCAoaDEwKSwgKGg5KSwgKGg4KSwgKGg3KSwgKGg2KSwgICAgIFwKICAgICAgICAgICAgICAgIChoNSksIChoNCksIChoMyksIChoMiksIChoMSkpCgpzdGF0aWMgX19pbmxpbmUgX19tNTEyaCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3NldDFfcGNoKF9GbG9hdDE2IF9Db21wbGV4IGgpIHsKICByZXR1cm4gKF9fbTUxMmgpX21tNTEyX3NldDFfcHMoX19idWlsdGluX2JpdF9jYXN0KGZsb2F0LCBoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tX2Nhc3RwaF9wcyhfX20xMjhoIF9fYSkgewogIHJldHVybiAoX19tMTI4KV9fYTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzI1NiBfbW0yNTZfY2FzdHBoX3BzKF9fbTI1NmggX19hKSB7CiAgcmV0dXJuIChfX20yNTYpX19hOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTIgX19ERUZBVUxUX0ZOX0FUVFJTNTEyIF9tbTUxMl9jYXN0cGhfcHMoX19tNTEyaCBfX2EpIHsKICByZXR1cm4gKF9fbTUxMilfX2E7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9jYXN0cGhfcGQoX19tMTI4aCBfX2EpIHsKICByZXR1cm4gKF9fbTEyOGQpX19hOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUzI1NiBfbW0yNTZfY2FzdHBoX3BkKF9fbTI1NmggX19hKSB7CiAgcmV0dXJuIChfX20yNTZkKV9fYTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIgX21tNTEyX2Nhc3RwaF9wZChfX201MTJoIF9fYSkgewogIHJldHVybiAoX19tNTEyZClfX2E7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9jYXN0cGhfc2kxMjgoX19tMTI4aCBfX2EpIHsKICByZXR1cm4gKF9fbTEyOGkpX19hOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfY2FzdHBoX3NpMjU2KF9fbTI1NmggX19hKSB7CiAgcmV0dXJuIChfX20yNTZpKV9fYTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2Nhc3RwaF9zaTUxMihfX201MTJoIF9fYSkgewogIHJldHVybiAoX19tNTEyaSlfX2E7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9jYXN0cHNfcGgoX19tMTI4IF9fYSkgewogIHJldHVybiAoX19tMTI4aClfX2E7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmggX19ERUZBVUxUX0ZOX0FUVFJTMjU2IF9tbTI1Nl9jYXN0cHNfcGgoX19tMjU2IF9fYSkgewogIHJldHVybiAoX19tMjU2aClfX2E7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyIF9tbTUxMl9jYXN0cHNfcGgoX19tNTEyIF9fYSkgewogIHJldHVybiAoX19tNTEyaClfX2E7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9jYXN0cGRfcGgoX19tMTI4ZCBfX2EpIHsKICByZXR1cm4gKF9fbTEyOGgpX19hOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZoIF9fREVGQVVMVF9GTl9BVFRSUzI1NiBfbW0yNTZfY2FzdHBkX3BoKF9fbTI1NmQgX19hKSB7CiAgcmV0dXJuIChfX20yNTZoKV9fYTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIgX21tNTEyX2Nhc3RwZF9waChfX201MTJkIF9fYSkgewogIHJldHVybiAoX19tNTEyaClfX2E7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9jYXN0c2kxMjhfcGgoX19tMTI4aSBfX2EpIHsKICByZXR1cm4gKF9fbTEyOGgpX19hOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZoIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfY2FzdHNpMjU2X3BoKF9fbTI1NmkgX19hKSB7CiAgcmV0dXJuIChfX20yNTZoKV9fYTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2Nhc3RzaTUxMl9waChfX201MTJpIF9fYSkgewogIHJldHVybiAoX19tNTEyaClfX2E7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9jYXN0cGgyNTZfcGgxMjgoX19tMjU2aCBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19hLCBfX2EsIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfY2FzdHBoNTEyX3BoMTI4KF9fbTUxMmggX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fYSwgX19hLCAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3KTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2Nhc3RwaDUxMl9waDI1NihfX201MTJoIF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX2EsIF9fYSwgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMiwgMTMsIDE0LCAxNSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmggX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9jYXN0cGgxMjhfcGgyNTYoX19tMTI4aCBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19hLCBfX2EsIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIC0xLCAtMSwgLTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLCAtMSwgLTEsIC0xLCAtMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9jYXN0cGgxMjhfcGg1MTIoX19tMTI4aCBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19hLCBfX2EsIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIC0xLCAtMSwgLTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJoIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfY2FzdHBoMjU2X3BoNTEyKF9fbTI1NmggX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fYSwgX19hLCAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLCAxMywgMTQsIDE1LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSk7Cn0KCi8vLyBDb25zdHJ1Y3RzIGEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzE2IHggaGFsZl0gZnJvbSBhCi8vLyAgICAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbOCB4IGhhbGZdLiBUaGUgbG93ZXIgMTI4IGJpdHMKLy8vICAgIGNvbnRhaW4gdGhlIHZhbHVlIG9mIHRoZSBzb3VyY2UgdmVjdG9yLiBUaGUgdXBwZXIgMzg0IGJpdHMgYXJlIHNldAovLy8gICAgdG8gemVyby4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgaGFzIG5vIGNvcnJlc3BvbmRpbmcgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGhhbGZdLgovLy8gXHJldHVybnMgQSA1MTItYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbMTYgeCBoYWxmXS4gVGhlIGxvd2VyIDEyOCBiaXRzCi8vLyAgICBjb250YWluIHRoZSB2YWx1ZSBvZiB0aGUgcGFyYW1ldGVyLiBUaGUgdXBwZXIgMzg0IGJpdHMgYXJlIHNldCB0byB6ZXJvLgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZoIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfemV4dHBoMTI4X3BoMjU2KF9fbTEyOGggX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fYSwgKF9fdjhoZilfbW1fc2V0emVyb19waCgpLCAwLCAxLCAyLCAzLCA0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1KTsKfQoKLy8vIENvbnN0cnVjdHMgYSA1MTItYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbMzIgeCBoYWxmXSBmcm9tIGEKLy8vICAgIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs4IHggaGFsZl0uIFRoZSBsb3dlciAxMjggYml0cwovLy8gICAgY29udGFpbiB0aGUgdmFsdWUgb2YgdGhlIHNvdXJjZSB2ZWN0b3IuIFRoZSB1cHBlciAzODQgYml0cyBhcmUgc2V0Ci8vLyAgICB0byB6ZXJvLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBoYXMgbm8gY29ycmVzcG9uZGluZyBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaGFsZl0uCi8vLyBccmV0dXJucyBBIDUxMi1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFszMiB4IGhhbGZdLiBUaGUgbG93ZXIgMTI4IGJpdHMKLy8vICAgIGNvbnRhaW4gdGhlIHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXIuIFRoZSB1cHBlciAzODQgYml0cyBhcmUgc2V0IHRvIHplcm8uCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl96ZXh0cGgxMjhfcGg1MTIoX19tMTI4aCBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoCiAgICAgIF9fYSwgKF9fdjhoZilfbW1fc2V0emVyb19waCgpLCAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLAogICAgICAxMywgMTQsIDE1LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1KTsKfQoKLy8vIENvbnN0cnVjdHMgYSA1MTItYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbMzIgeCBoYWxmXSBmcm9tIGEKLy8vICAgIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsxNiB4IGhhbGZdLiBUaGUgbG93ZXIgMjU2IGJpdHMKLy8vICAgIGNvbnRhaW4gdGhlIHZhbHVlIG9mIHRoZSBzb3VyY2UgdmVjdG9yLiBUaGUgdXBwZXIgMjU2IGJpdHMgYXJlIHNldAovLy8gICAgdG8gemVyby4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgaGFzIG5vIGNvcnJlc3BvbmRpbmcgaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fYQovLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbMTYgeCBoYWxmXS4KLy8vIFxyZXR1cm5zIEEgNTEyLWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzMyIHggaGFsZl0uIFRoZSBsb3dlciAyNTYgYml0cwovLy8gICAgY29udGFpbiB0aGUgdmFsdWUgb2YgdGhlIHBhcmFtZXRlci4gVGhlIHVwcGVyIDI1NiBiaXRzIGFyZSBzZXQgdG8gemVyby4Kc3RhdGljIF9faW5saW5lX18gX19tNTEyaCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3pleHRwaDI1Nl9waDUxMihfX20yNTZoIF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX2EsIChfX3YxNmhmKV9tbTI1Nl9zZXR6ZXJvX3BoKCksIDAsIDEsIDIsIDMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNywgMTgsIDE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyOSwgMzAsIDMxKTsKfQoKI2RlZmluZSBfbW1fY29taV9yb3VuZF9zaChBLCBCLCBQLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2J1aWx0aW5faWEzMl92Y29taXNoKChfX3Y4aGYpQSwgKF9fdjhoZilCLCAoaW50KShQKSwgKGludCkoUikpCgojZGVmaW5lIF9tbV9jb21pX3NoKEEsIEIsIHByZWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9tbV9jb21pX3JvdW5kX3NoKChBKSwgKEIpLCAocHJlZCksIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTikKCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tX2NvbWllcV9zaChfX20xMjhoIEEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIEIpIHsKICByZXR1cm4gX19idWlsdGluX2lhMzJfdmNvbWlzaCgoX192OGhmKUEsIChfX3Y4aGYpQiwgX0NNUF9FUV9PUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9jb21pbHRfc2goX19tMTI4aCBBLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBCKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Zjb21pc2goKF9fdjhoZilBLCAoX192OGhmKUIsIF9DTVBfTFRfT1MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfbW1fY29taWxlX3NoKF9fbTEyOGggQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGggQikgewogIHJldHVybiBfX2J1aWx0aW5faWEzMl92Y29taXNoKChfX3Y4aGYpQSwgKF9fdjhoZilCLCBfQ01QX0xFX09TLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tX2NvbWlndF9zaChfX20xMjhoIEEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIEIpIHsKICByZXR1cm4gX19idWlsdGluX2lhMzJfdmNvbWlzaCgoX192OGhmKUEsIChfX3Y4aGYpQiwgX0NNUF9HVF9PUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9jb21pZ2Vfc2goX19tMTI4aCBBLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBCKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Zjb21pc2goKF9fdjhoZilBLCAoX192OGhmKUIsIF9DTVBfR0VfT1MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfbW1fY29taW5lcV9zaChfX20xMjhoIEEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBCKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Zjb21pc2goKF9fdjhoZilBLCAoX192OGhmKUIsIF9DTVBfTkVRX1VTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tX3Vjb21pZXFfc2goX19tMTI4aCBBLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGggQikgewogIHJldHVybiBfX2J1aWx0aW5faWEzMl92Y29taXNoKChfX3Y4aGYpQSwgKF9fdjhoZilCLCBfQ01QX0VRX09RLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tX3Vjb21pbHRfc2goX19tMTI4aCBBLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGggQikgewogIHJldHVybiBfX2J1aWx0aW5faWEzMl92Y29taXNoKChfX3Y4aGYpQSwgKF9fdjhoZilCLCBfQ01QX0xUX09RLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tX3Vjb21pbGVfc2goX19tMTI4aCBBLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGggQikgewogIHJldHVybiBfX2J1aWx0aW5faWEzMl92Y29taXNoKChfX3Y4aGYpQSwgKF9fdjhoZilCLCBfQ01QX0xFX09RLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tX3Vjb21pZ3Rfc2goX19tMTI4aCBBLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGggQikgewogIHJldHVybiBfX2J1aWx0aW5faWEzMl92Y29taXNoKChfX3Y4aGYpQSwgKF9fdjhoZilCLCBfQ01QX0dUX09RLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tX3Vjb21pZ2Vfc2goX19tMTI4aCBBLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGggQikgewogIHJldHVybiBfX2J1aWx0aW5faWEzMl92Y29taXNoKChfX3Y4aGYpQSwgKF9fdjhoZilCLCBfQ01QX0dFX09RLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tX3Vjb21pbmVxX3NoKF9fbTEyOGggQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBCKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Zjb21pc2goKF9fdjhoZilBLCAoX192OGhmKUIsIF9DTVBfTkVRX1VRLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyIF9tbTUxMl9hZGRfcGgoX19tNTEyaCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tNTEyaCBfX0IpIHsKICByZXR1cm4gKF9fbTUxMmgpKChfX3YzMmhmKV9fQSArIChfX3YzMmhmKV9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2FkZF9waChfX201MTJoIF9fVywgX19tbWFzazMyIF9fVSwgX19tNTEyaCBfX0EsIF9fbTUxMmggX19CKSB7CiAgcmV0dXJuIChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBoXzUxMigKICAgICAgKF9fbW1hc2szMilfX1UsIChfX3YzMmhmKV9tbTUxMl9hZGRfcGgoX19BLCBfX0IpLCAoX192MzJoZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJoIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfYWRkX3BoKF9fbW1hc2szMiBfX1UsIF9fbTUxMmggX19BLCBfX201MTJoIF9fQikgewogIHJldHVybiAoX19tNTEyaClfX2J1aWx0aW5faWEzMl9zZWxlY3RwaF81MTIoKF9fbW1hc2szMilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoZilfbW01MTJfYWRkX3BoKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhmKV9tbTUxMl9zZXR6ZXJvX3BoKCkpOwp9CgojZGVmaW5lIF9tbTUxMl9hZGRfcm91bmRfcGgoQSwgQiwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tNTEyaClfX2J1aWx0aW5faWEzMl9hZGRwaDUxMigoX192MzJoZikoX19tNTEyaCkoQSksICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoZikoX19tNTEyaCkoQiksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfYWRkX3JvdW5kX3BoKFcsIFUsIEEsIEIsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBoXzUxMiggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX21tYXNrMzIpKFUpLCAoX192MzJoZilfbW01MTJfYWRkX3JvdW5kX3BoKChBKSwgKEIpLCAoUikpLCAgICAgICAgICAgICBcCiAgICAgIChfX3YzMmhmKShfX201MTJoKShXKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9hZGRfcm91bmRfcGgoVSwgQSwgQiwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tNTEyaClfX2J1aWx0aW5faWEzMl9zZWxlY3RwaF81MTIoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX19tbWFzazMyKShVKSwgKF9fdjMyaGYpX21tNTEyX2FkZF9yb3VuZF9waCgoQSksIChCKSwgKFIpKSwgICAgICAgICAgICAgXAogICAgICAoX192MzJoZilfbW01MTJfc2V0emVyb19waCgpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyIF9tbTUxMl9zdWJfcGgoX19tNTEyaCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tNTEyaCBfX0IpIHsKICByZXR1cm4gKF9fbTUxMmgpKChfX3YzMmhmKV9fQSAtIChfX3YzMmhmKV9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX3N1Yl9waChfX201MTJoIF9fVywgX19tbWFzazMyIF9fVSwgX19tNTEyaCBfX0EsIF9fbTUxMmggX19CKSB7CiAgcmV0dXJuIChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBoXzUxMigKICAgICAgKF9fbW1hc2szMilfX1UsIChfX3YzMmhmKV9tbTUxMl9zdWJfcGgoX19BLCBfX0IpLCAoX192MzJoZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJoIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfc3ViX3BoKF9fbW1hc2szMiBfX1UsIF9fbTUxMmggX19BLCBfX201MTJoIF9fQikgewogIHJldHVybiAoX19tNTEyaClfX2J1aWx0aW5faWEzMl9zZWxlY3RwaF81MTIoKF9fbW1hc2szMilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoZilfbW01MTJfc3ViX3BoKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhmKV9tbTUxMl9zZXR6ZXJvX3BoKCkpOwp9CgojZGVmaW5lIF9tbTUxMl9zdWJfcm91bmRfcGgoQSwgQiwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tNTEyaClfX2J1aWx0aW5faWEzMl9zdWJwaDUxMigoX192MzJoZikoX19tNTEyaCkoQSksICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoZikoX19tNTEyaCkoQiksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfc3ViX3JvdW5kX3BoKFcsIFUsIEEsIEIsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBoXzUxMiggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX21tYXNrMzIpKFUpLCAoX192MzJoZilfbW01MTJfc3ViX3JvdW5kX3BoKChBKSwgKEIpLCAoUikpLCAgICAgICAgICAgICBcCiAgICAgIChfX3YzMmhmKShfX201MTJoKShXKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9zdWJfcm91bmRfcGgoVSwgQSwgQiwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tNTEyaClfX2J1aWx0aW5faWEzMl9zZWxlY3RwaF81MTIoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX19tbWFzazMyKShVKSwgKF9fdjMyaGYpX21tNTEyX3N1Yl9yb3VuZF9waCgoQSksIChCKSwgKFIpKSwgICAgICAgICAgICAgXAogICAgICAoX192MzJoZilfbW01MTJfc2V0emVyb19waCgpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyIF9tbTUxMl9tdWxfcGgoX19tNTEyaCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tNTEyaCBfX0IpIHsKICByZXR1cm4gKF9fbTUxMmgpKChfX3YzMmhmKV9fQSAqIChfX3YzMmhmKV9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX211bF9waChfX201MTJoIF9fVywgX19tbWFzazMyIF9fVSwgX19tNTEyaCBfX0EsIF9fbTUxMmggX19CKSB7CiAgcmV0dXJuIChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBoXzUxMigKICAgICAgKF9fbW1hc2szMilfX1UsIChfX3YzMmhmKV9tbTUxMl9tdWxfcGgoX19BLCBfX0IpLCAoX192MzJoZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJoIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfbXVsX3BoKF9fbW1hc2szMiBfX1UsIF9fbTUxMmggX19BLCBfX201MTJoIF9fQikgewogIHJldHVybiAoX19tNTEyaClfX2J1aWx0aW5faWEzMl9zZWxlY3RwaF81MTIoKF9fbW1hc2szMilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoZilfbW01MTJfbXVsX3BoKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhmKV9tbTUxMl9zZXR6ZXJvX3BoKCkpOwp9CgojZGVmaW5lIF9tbTUxMl9tdWxfcm91bmRfcGgoQSwgQiwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tNTEyaClfX2J1aWx0aW5faWEzMl9tdWxwaDUxMigoX192MzJoZikoX19tNTEyaCkoQSksICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoZikoX19tNTEyaCkoQiksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfbXVsX3JvdW5kX3BoKFcsIFUsIEEsIEIsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBoXzUxMiggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX21tYXNrMzIpKFUpLCAoX192MzJoZilfbW01MTJfbXVsX3JvdW5kX3BoKChBKSwgKEIpLCAoUikpLCAgICAgICAgICAgICBcCiAgICAgIChfX3YzMmhmKShfX201MTJoKShXKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9tdWxfcm91bmRfcGgoVSwgQSwgQiwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tNTEyaClfX2J1aWx0aW5faWEzMl9zZWxlY3RwaF81MTIoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX19tbWFzazMyKShVKSwgKF9fdjMyaGYpX21tNTEyX211bF9yb3VuZF9waCgoQSksIChCKSwgKFIpKSwgICAgICAgICAgICAgXAogICAgICAoX192MzJoZilfbW01MTJfc2V0emVyb19waCgpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyIF9tbTUxMl9kaXZfcGgoX19tNTEyaCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tNTEyaCBfX0IpIHsKICByZXR1cm4gKF9fbTUxMmgpKChfX3YzMmhmKV9fQSAvIChfX3YzMmhmKV9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2Rpdl9waChfX201MTJoIF9fVywgX19tbWFzazMyIF9fVSwgX19tNTEyaCBfX0EsIF9fbTUxMmggX19CKSB7CiAgcmV0dXJuIChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBoXzUxMigKICAgICAgKF9fbW1hc2szMilfX1UsIChfX3YzMmhmKV9tbTUxMl9kaXZfcGgoX19BLCBfX0IpLCAoX192MzJoZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJoIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfZGl2X3BoKF9fbW1hc2szMiBfX1UsIF9fbTUxMmggX19BLCBfX201MTJoIF9fQikgewogIHJldHVybiAoX19tNTEyaClfX2J1aWx0aW5faWEzMl9zZWxlY3RwaF81MTIoKF9fbW1hc2szMilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoZilfbW01MTJfZGl2X3BoKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhmKV9tbTUxMl9zZXR6ZXJvX3BoKCkpOwp9CgojZGVmaW5lIF9tbTUxMl9kaXZfcm91bmRfcGgoQSwgQiwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tNTEyaClfX2J1aWx0aW5faWEzMl9kaXZwaDUxMigoX192MzJoZikoX19tNTEyaCkoQSksICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoZikoX19tNTEyaCkoQiksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfZGl2X3JvdW5kX3BoKFcsIFUsIEEsIEIsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBoXzUxMiggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX21tYXNrMzIpKFUpLCAoX192MzJoZilfbW01MTJfZGl2X3JvdW5kX3BoKChBKSwgKEIpLCAoUikpLCAgICAgICAgICAgICBcCiAgICAgIChfX3YzMmhmKShfX201MTJoKShXKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9kaXZfcm91bmRfcGgoVSwgQSwgQiwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tNTEyaClfX2J1aWx0aW5faWEzMl9zZWxlY3RwaF81MTIoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX19tbWFzazMyKShVKSwgKF9fdjMyaGYpX21tNTEyX2Rpdl9yb3VuZF9waCgoQSksIChCKSwgKFIpKSwgICAgICAgICAgICAgXAogICAgICAoX192MzJoZilfbW01MTJfc2V0emVyb19waCgpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyIF9tbTUxMl9taW5fcGgoX19tNTEyaCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tNTEyaCBfX0IpIHsKICByZXR1cm4gKF9fbTUxMmgpX19idWlsdGluX2lhMzJfbWlucGg1MTIoKF9fdjMyaGYpX19BLCAoX192MzJoZilfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX21pbl9waChfX201MTJoIF9fVywgX19tbWFzazMyIF9fVSwgX19tNTEyaCBfX0EsIF9fbTUxMmggX19CKSB7CiAgcmV0dXJuIChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBoXzUxMigKICAgICAgKF9fbW1hc2szMilfX1UsIChfX3YzMmhmKV9tbTUxMl9taW5fcGgoX19BLCBfX0IpLCAoX192MzJoZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJoIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfbWluX3BoKF9fbW1hc2szMiBfX1UsIF9fbTUxMmggX19BLCBfX201MTJoIF9fQikgewogIHJldHVybiAoX19tNTEyaClfX2J1aWx0aW5faWEzMl9zZWxlY3RwaF81MTIoKF9fbW1hc2szMilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoZilfbW01MTJfbWluX3BoKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhmKV9tbTUxMl9zZXR6ZXJvX3BoKCkpOwp9CgojZGVmaW5lIF9tbTUxMl9taW5fcm91bmRfcGgoQSwgQiwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tNTEyaClfX2J1aWx0aW5faWEzMl9taW5waDUxMigoX192MzJoZikoX19tNTEyaCkoQSksICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoZikoX19tNTEyaCkoQiksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfbWluX3JvdW5kX3BoKFcsIFUsIEEsIEIsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBoXzUxMiggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX21tYXNrMzIpKFUpLCAoX192MzJoZilfbW01MTJfbWluX3JvdW5kX3BoKChBKSwgKEIpLCAoUikpLCAgICAgICAgICAgICBcCiAgICAgIChfX3YzMmhmKShfX201MTJoKShXKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9taW5fcm91bmRfcGgoVSwgQSwgQiwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tNTEyaClfX2J1aWx0aW5faWEzMl9zZWxlY3RwaF81MTIoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX19tbWFzazMyKShVKSwgKF9fdjMyaGYpX21tNTEyX21pbl9yb3VuZF9waCgoQSksIChCKSwgKFIpKSwgICAgICAgICAgICAgXAogICAgICAoX192MzJoZilfbW01MTJfc2V0emVyb19waCgpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyIF9tbTUxMl9tYXhfcGgoX19tNTEyaCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tNTEyaCBfX0IpIHsKICByZXR1cm4gKF9fbTUxMmgpX19idWlsdGluX2lhMzJfbWF4cGg1MTIoKF9fdjMyaGYpX19BLCAoX192MzJoZilfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX21heF9waChfX201MTJoIF9fVywgX19tbWFzazMyIF9fVSwgX19tNTEyaCBfX0EsIF9fbTUxMmggX19CKSB7CiAgcmV0dXJuIChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBoXzUxMigKICAgICAgKF9fbW1hc2szMilfX1UsIChfX3YzMmhmKV9tbTUxMl9tYXhfcGgoX19BLCBfX0IpLCAoX192MzJoZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJoIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfbWF4X3BoKF9fbW1hc2szMiBfX1UsIF9fbTUxMmggX19BLCBfX201MTJoIF9fQikgewogIHJldHVybiAoX19tNTEyaClfX2J1aWx0aW5faWEzMl9zZWxlY3RwaF81MTIoKF9fbW1hc2szMilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoZilfbW01MTJfbWF4X3BoKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhmKV9tbTUxMl9zZXR6ZXJvX3BoKCkpOwp9CgojZGVmaW5lIF9tbTUxMl9tYXhfcm91bmRfcGgoQSwgQiwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tNTEyaClfX2J1aWx0aW5faWEzMl9tYXhwaDUxMigoX192MzJoZikoX19tNTEyaCkoQSksICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoZikoX19tNTEyaCkoQiksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfbWF4X3JvdW5kX3BoKFcsIFUsIEEsIEIsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBoXzUxMiggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX21tYXNrMzIpKFUpLCAoX192MzJoZilfbW01MTJfbWF4X3JvdW5kX3BoKChBKSwgKEIpLCAoUikpLCAgICAgICAgICAgICBcCiAgICAgIChfX3YzMmhmKShfX201MTJoKShXKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9tYXhfcm91bmRfcGgoVSwgQSwgQiwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tNTEyaClfX2J1aWx0aW5faWEzMl9zZWxlY3RwaF81MTIoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX19tbWFzazMyKShVKSwgKF9fdjMyaGYpX21tNTEyX21heF9yb3VuZF9waCgoQSksIChCKSwgKFIpKSwgICAgICAgICAgICAgXAogICAgICAoX192MzJoZilfbW01MTJfc2V0emVyb19waCgpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyIF9tbTUxMl9hYnNfcGgoX19tNTEyaCBfX0EpIHsKICByZXR1cm4gKF9fbTUxMmgpX21tNTEyX2FuZF9lcGkzMihfbW01MTJfc2V0MV9lcGkzMigweDdGRkY3RkZGKSwgKF9fbTUxMmkpX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIgX21tNTEyX2NvbmpfcGNoKF9fbTUxMmggX19BKSB7CiAgcmV0dXJuIChfX201MTJoKV9tbTUxMl94b3JfcHMoKF9fbTUxMilfX0EsIF9tbTUxMl9zZXQxX3BzKC0wLjBmKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2NvbmpfcGNoKF9fbTUxMmggX19XLCBfX21tYXNrMTYgX19VLCBfX201MTJoIF9fQSkgewogIHJldHVybiAoX19tNTEyaClfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc181MTIoCiAgICAgIChfX21tYXNrMTYpX19VLCAoX192MTZzZilfbW01MTJfY29ual9wY2goX19BKSwgKF9fdjE2c2YpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2NvbmpfcGNoKF9fbW1hc2sxNiBfX1UsIF9fbTUxMmggX19BKSB7CiAgcmV0dXJuIChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzUxMigoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl9jb25qX3BjaChfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX21tNTEyX3NldHplcm9fcHMoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9hZGRfc2goX19tMTI4aCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0IpIHsKICBfX0FbMF0gKz0gX19CWzBdOwogIHJldHVybiBfX0E7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9tYXNrX2FkZF9zaChfX20xMjhoIF9fVywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbW1hc2s4IF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGggX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0IpIHsKICBfX0EgPSBfbW1fYWRkX3NoKF9fQSwgX19CKTsKICByZXR1cm4gX19idWlsdGluX2lhMzJfc2VsZWN0c2hfMTI4KF9fVSwgX19BLCBfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfbW1fbWFza3pfYWRkX3NoKF9fbW1hc2s4IF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQikgewogIF9fQSA9IF9tbV9hZGRfc2goX19BLCBfX0IpOwogIHJldHVybiBfX2J1aWx0aW5faWEzMl9zZWxlY3RzaF8xMjgoX19VLCBfX0EsIF9tbV9zZXR6ZXJvX3BoKCkpOwp9CgojZGVmaW5lIF9tbV9hZGRfcm91bmRfc2goQSwgQiwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tMTI4aClfX2J1aWx0aW5faWEzMl9hZGRzaF9yb3VuZF9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192OGhmKShfX20xMjhoKShBKSwgKF9fdjhoZikoX19tMTI4aCkoQiksIChfX3Y4aGYpX21tX3NldHplcm9fcGgoKSwgICAgXAogICAgICAoX19tbWFzazgpLTEsIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX21hc2tfYWRkX3JvdW5kX3NoKFcsIFUsIEEsIEIsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX2FkZHNoX3JvdW5kX21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3Y4aGYpKF9fbTEyOGgpKEEpLCAoX192OGhmKShfX20xMjhoKShCKSwgKF9fdjhoZikoX19tMTI4aCkoVyksICAgICAgICBcCiAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX21hc2t6X2FkZF9yb3VuZF9zaChVLCBBLCBCLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX2FkZHNoX3JvdW5kX21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3Y4aGYpKF9fbTEyOGgpKEEpLCAoX192OGhmKShfX20xMjhoKShCKSwgKF9fdjhoZilfbW1fc2V0emVyb19waCgpLCAgICBcCiAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9zdWJfc2goX19tMTI4aCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0IpIHsKICBfX0FbMF0gLT0gX19CWzBdOwogIHJldHVybiBfX0E7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9tYXNrX3N1Yl9zaChfX20xMjhoIF9fVywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbW1hc2s4IF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGggX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0IpIHsKICBfX0EgPSBfbW1fc3ViX3NoKF9fQSwgX19CKTsKICByZXR1cm4gX19idWlsdGluX2lhMzJfc2VsZWN0c2hfMTI4KF9fVSwgX19BLCBfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfbW1fbWFza3pfc3ViX3NoKF9fbW1hc2s4IF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQikgewogIF9fQSA9IF9tbV9zdWJfc2goX19BLCBfX0IpOwogIHJldHVybiBfX2J1aWx0aW5faWEzMl9zZWxlY3RzaF8xMjgoX19VLCBfX0EsIF9tbV9zZXR6ZXJvX3BoKCkpOwp9CgojZGVmaW5lIF9tbV9zdWJfcm91bmRfc2goQSwgQiwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tMTI4aClfX2J1aWx0aW5faWEzMl9zdWJzaF9yb3VuZF9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192OGhmKShfX20xMjhoKShBKSwgKF9fdjhoZikoX19tMTI4aCkoQiksIChfX3Y4aGYpX21tX3NldHplcm9fcGgoKSwgICAgXAogICAgICAoX19tbWFzazgpLTEsIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX21hc2tfc3ViX3JvdW5kX3NoKFcsIFUsIEEsIEIsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3N1YnNoX3JvdW5kX21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3Y4aGYpKF9fbTEyOGgpKEEpLCAoX192OGhmKShfX20xMjhoKShCKSwgKF9fdjhoZikoX19tMTI4aCkoVyksICAgICAgICBcCiAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX21hc2t6X3N1Yl9yb3VuZF9zaChVLCBBLCBCLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3N1YnNoX3JvdW5kX21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3Y4aGYpKF9fbTEyOGgpKEEpLCAoX192OGhmKShfX20xMjhoKShCKSwgKF9fdjhoZilfbW1fc2V0emVyb19waCgpLCAgICBcCiAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9tdWxfc2goX19tMTI4aCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0IpIHsKICBfX0FbMF0gKj0gX19CWzBdOwogIHJldHVybiBfX0E7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9tYXNrX211bF9zaChfX20xMjhoIF9fVywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbW1hc2s4IF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGggX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0IpIHsKICBfX0EgPSBfbW1fbXVsX3NoKF9fQSwgX19CKTsKICByZXR1cm4gX19idWlsdGluX2lhMzJfc2VsZWN0c2hfMTI4KF9fVSwgX19BLCBfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfbW1fbWFza3pfbXVsX3NoKF9fbW1hc2s4IF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQikgewogIF9fQSA9IF9tbV9tdWxfc2goX19BLCBfX0IpOwogIHJldHVybiBfX2J1aWx0aW5faWEzMl9zZWxlY3RzaF8xMjgoX19VLCBfX0EsIF9tbV9zZXR6ZXJvX3BoKCkpOwp9CgojZGVmaW5lIF9tbV9tdWxfcm91bmRfc2goQSwgQiwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tMTI4aClfX2J1aWx0aW5faWEzMl9tdWxzaF9yb3VuZF9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192OGhmKShfX20xMjhoKShBKSwgKF9fdjhoZikoX19tMTI4aCkoQiksIChfX3Y4aGYpX21tX3NldHplcm9fcGgoKSwgICAgXAogICAgICAoX19tbWFzazgpLTEsIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX21hc2tfbXVsX3JvdW5kX3NoKFcsIFUsIEEsIEIsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX211bHNoX3JvdW5kX21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3Y4aGYpKF9fbTEyOGgpKEEpLCAoX192OGhmKShfX20xMjhoKShCKSwgKF9fdjhoZikoX19tMTI4aCkoVyksICAgICAgICBcCiAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX21hc2t6X211bF9yb3VuZF9zaChVLCBBLCBCLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX211bHNoX3JvdW5kX21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3Y4aGYpKF9fbTEyOGgpKEEpLCAoX192OGhmKShfX20xMjhoKShCKSwgKF9fdjhoZilfbW1fc2V0emVyb19waCgpLCAgICBcCiAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9kaXZfc2goX19tMTI4aCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0IpIHsKICBfX0FbMF0gLz0gX19CWzBdOwogIHJldHVybiBfX0E7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9tYXNrX2Rpdl9zaChfX20xMjhoIF9fVywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbW1hc2s4IF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGggX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0IpIHsKICBfX0EgPSBfbW1fZGl2X3NoKF9fQSwgX19CKTsKICByZXR1cm4gX19idWlsdGluX2lhMzJfc2VsZWN0c2hfMTI4KF9fVSwgX19BLCBfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfbW1fbWFza3pfZGl2X3NoKF9fbW1hc2s4IF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQikgewogIF9fQSA9IF9tbV9kaXZfc2goX19BLCBfX0IpOwogIHJldHVybiBfX2J1aWx0aW5faWEzMl9zZWxlY3RzaF8xMjgoX19VLCBfX0EsIF9tbV9zZXR6ZXJvX3BoKCkpOwp9CgojZGVmaW5lIF9tbV9kaXZfcm91bmRfc2goQSwgQiwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tMTI4aClfX2J1aWx0aW5faWEzMl9kaXZzaF9yb3VuZF9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192OGhmKShfX20xMjhoKShBKSwgKF9fdjhoZikoX19tMTI4aCkoQiksIChfX3Y4aGYpX21tX3NldHplcm9fcGgoKSwgICAgXAogICAgICAoX19tbWFzazgpLTEsIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX21hc2tfZGl2X3JvdW5kX3NoKFcsIFUsIEEsIEIsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX2RpdnNoX3JvdW5kX21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3Y4aGYpKF9fbTEyOGgpKEEpLCAoX192OGhmKShfX20xMjhoKShCKSwgKF9fdjhoZikoX19tMTI4aCkoVyksICAgICAgICBcCiAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX21hc2t6X2Rpdl9yb3VuZF9zaChVLCBBLCBCLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX2RpdnNoX3JvdW5kX21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3Y4aGYpKF9fbTEyOGgpKEEpLCAoX192OGhmKShfX20xMjhoKShCKSwgKF9fdjhoZilfbW1fc2V0emVyb19waCgpLCAgICBcCiAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9taW5fc2goX19tMTI4aCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0IpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfbWluc2hfcm91bmRfbWFzaygKICAgICAgKF9fdjhoZilfX0EsIChfX3Y4aGYpX19CLCAoX192OGhmKV9tbV9zZXR6ZXJvX3BoKCksIChfX21tYXNrOCktMSwKICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tX21hc2tfbWluX3NoKF9fbTEyOGggX19XLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tbWFzazggX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQikgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl9taW5zaF9yb3VuZF9tYXNrKChfX3Y4aGYpX19BLCAoX192OGhmKV9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhmKV9fVywgKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfbW1fbWFza3pfbWluX3NoKF9fbW1hc2s4IF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQikgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl9taW5zaF9yb3VuZF9tYXNrKAogICAgICAoX192OGhmKV9fQSwgKF9fdjhoZilfX0IsIChfX3Y4aGYpX21tX3NldHplcm9fcGgoKSwgKF9fbW1hc2s4KV9fVSwKICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW1fbWluX3JvdW5kX3NoKEEsIEIsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTEyOGgpX19idWlsdGluX2lhMzJfbWluc2hfcm91bmRfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjhoZikoX19tMTI4aCkoQSksIChfX3Y4aGYpKF9fbTEyOGgpKEIpLCAoX192OGhmKV9tbV9zZXR6ZXJvX3BoKCksICAgIFwKICAgICAgKF9fbW1hc2s4KS0xLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbV9tYXNrX21pbl9yb3VuZF9zaChXLCBVLCBBLCBCLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tMTI4aClfX2J1aWx0aW5faWEzMl9taW5zaF9yb3VuZF9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192OGhmKShfX20xMjhoKShBKSwgKF9fdjhoZikoX19tMTI4aCkoQiksIChfX3Y4aGYpKF9fbTEyOGgpKFcpLCAgICAgICAgXAogICAgICAoX19tbWFzazgpKFUpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbV9tYXNrel9taW5fcm91bmRfc2goVSwgQSwgQiwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tMTI4aClfX2J1aWx0aW5faWEzMl9taW5zaF9yb3VuZF9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192OGhmKShfX20xMjhoKShBKSwgKF9fdjhoZikoX19tMTI4aCkoQiksIChfX3Y4aGYpX21tX3NldHplcm9fcGgoKSwgICAgXAogICAgICAoX19tbWFzazgpKFUpLCAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfbW1fbWF4X3NoKF9fbTEyOGggX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGggX19CKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX21heHNoX3JvdW5kX21hc2soCiAgICAgIChfX3Y4aGYpX19BLCAoX192OGhmKV9fQiwgKF9fdjhoZilfbW1fc2V0emVyb19waCgpLCAoX19tbWFzazgpLTEsCiAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9tYXNrX21heF9zaChfX20xMjhoIF9fVywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbW1hc2s4IF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGggX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0IpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfbWF4c2hfcm91bmRfbWFzaygoX192OGhmKV9fQSwgKF9fdjhoZilfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoZilfX1csIChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tX21hc2t6X21heF9zaChfX21tYXNrOCBfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0IpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfbWF4c2hfcm91bmRfbWFzaygKICAgICAgKF9fdjhoZilfX0EsIChfX3Y4aGYpX19CLCAoX192OGhmKV9tbV9zZXR6ZXJvX3BoKCksIChfX21tYXNrOClfX1UsCiAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCiNkZWZpbmUgX21tX21heF9yb3VuZF9zaChBLCBCLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX21heHNoX3JvdW5kX21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3Y4aGYpKF9fbTEyOGgpKEEpLCAoX192OGhmKShfX20xMjhoKShCKSwgKF9fdjhoZilfbW1fc2V0emVyb19waCgpLCAgICBcCiAgICAgIChfX21tYXNrOCktMSwgKGludCkoUikpKQoKI2RlZmluZSBfbW1fbWFza19tYXhfcm91bmRfc2goVywgVSwgQSwgQiwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTEyOGgpX19idWlsdGluX2lhMzJfbWF4c2hfcm91bmRfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjhoZikoX19tMTI4aCkoQSksIChfX3Y4aGYpKF9fbTEyOGgpKEIpLCAoX192OGhmKShfX20xMjhoKShXKSwgICAgICAgIFwKICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW1fbWFza3pfbWF4X3JvdW5kX3NoKFUsIEEsIEIsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTEyOGgpX19idWlsdGluX2lhMzJfbWF4c2hfcm91bmRfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjhoZikoX19tMTI4aCkoQSksIChfX3Y4aGYpKF9fbTEyOGgpKEIpLCAoX192OGhmKV9tbV9zZXR6ZXJvX3BoKCksICAgIFwKICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfY21wX3JvdW5kX3BoX21hc2soQSwgQiwgUCwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbW1hc2szMilfX2J1aWx0aW5faWEzMl9jbXBwaDUxMl9tYXNrKChfX3YzMmhmKShfX201MTJoKShBKSwgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhmKShfX201MTJoKShCKSwgKGludCkoUCksICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMzIpLTEsIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfY21wX3JvdW5kX3BoX21hc2soVSwgQSwgQiwgUCwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX21tYXNrMzIpX19idWlsdGluX2lhMzJfY21wcGg1MTJfbWFzaygoX192MzJoZikoX19tNTEyaCkoQSksICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoZikoX19tNTEyaCkoQiksIChpbnQpKFApLCAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazMyKShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfY21wX3BoX21hc2soQSwgQiwgUCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfbW01MTJfY21wX3JvdW5kX3BoX21hc2soKEEpLCAoQiksIChQKSwgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKQoKI2RlZmluZSBfbW01MTJfbWFza19jbXBfcGhfbWFzayhVLCBBLCBCLCBQKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfbW01MTJfbWFza19jbXBfcm91bmRfcGhfbWFzaygoVSksIChBKSwgKEIpLCAoUCksIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTikKCiNkZWZpbmUgX21tX2NtcF9yb3VuZF9zaF9tYXNrKFgsIFksIFAsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX21tYXNrOClfX2J1aWx0aW5faWEzMl9jbXBzaF9tYXNrKChfX3Y4aGYpKF9fbTEyOGgpKFgpLCAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGYpKF9fbTEyOGgpKFkpLCAoaW50KShQKSwgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSwgKGludCkoUikpKQoKI2RlZmluZSBfbW1fbWFza19jbXBfcm91bmRfc2hfbWFzayhNLCBYLCBZLCBQLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbW1hc2s4KV9fYnVpbHRpbl9pYTMyX2NtcHNoX21hc2soKF9fdjhoZikoX19tMTI4aCkoWCksICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoZikoX19tMTI4aCkoWSksIChpbnQpKFApLCAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShNKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW1fY21wX3NoX21hc2soWCwgWSwgUCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbW1hc2s4KV9fYnVpbHRpbl9pYTMyX2NtcHNoX21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjhoZikoX19tMTI4aCkoWCksIChfX3Y4aGYpKF9fbTEyOGgpKFkpLCAoaW50KShQKSwgKF9fbW1hc2s4KS0xLCAgICAgIFwKICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKSkKCiNkZWZpbmUgX21tX21hc2tfY21wX3NoX21hc2soTSwgWCwgWSwgUCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX21tYXNrOClfX2J1aWx0aW5faWEzMl9jbXBzaF9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3Y4aGYpKF9fbTEyOGgpKFgpLCAoX192OGhmKShfX20xMjhoKShZKSwgKGludCkoUCksIChfX21tYXNrOCkoTSksICAgICBcCiAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTikpCi8vIGxvYWRzIHdpdGggdm1vdnNoOgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfbW1fbG9hZF9zaCh2b2lkIGNvbnN0ICpfX2RwKSB7CiAgc3RydWN0IF9fbW1fbG9hZF9zaF9zdHJ1Y3QgewogICAgX0Zsb2F0MTYgX191OwogIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOwogIF9GbG9hdDE2IF9fdSA9ICgoc3RydWN0IF9fbW1fbG9hZF9zaF9zdHJ1Y3QgKilfX2RwKS0+X191OwogIHJldHVybiAoX19tMTI4aCl7X191LCAwLCAwLCAwLCAwLCAwLCAwLCAwfTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfbG9hZF9zaChfX20xMjhoIF9fVywgX19tbWFzazggX19VLCBjb25zdCB2b2lkICpfX0EpIHsKICBfX20xMjhoIHNyYyA9IChfX3Y4aGYpX19idWlsdGluX3NodWZmbGV2ZWN0b3IoCiAgICAgIChfX3Y4aGYpX19XLCAoX192OGhmKV9tbV9zZXR6ZXJvX3BoKCksIDAsIDgsIDgsIDgsIDgsIDgsIDgsIDgpOwoKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfbG9hZHNoMTI4X21hc2soKF9fdjhoZiAqKV9fQSwgc3JjLCBfX1UgJiAxKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2xvYWRfc2goX19tbWFzazggX19VLCBjb25zdCB2b2lkICpfX0EpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfbG9hZHNoMTI4X21hc2soCiAgICAgIChfX3Y4aGYgKilfX0EsIChfX3Y4aGYpX21tX3NldHplcm9fcGgoKSwgX19VICYgMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9sb2FkX3BoKHZvaWQgY29uc3QgKl9fcCkgewogIHJldHVybiAqKGNvbnN0IF9fbTUxMmggKilfX3A7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmggX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9sb2FkX3BoKHZvaWQgY29uc3QgKl9fcCkgewogIHJldHVybiAqKGNvbnN0IF9fbTI1NmggKilfX3A7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9sb2FkX3BoKHZvaWQgY29uc3QgKl9fcCkgewogIHJldHVybiAqKGNvbnN0IF9fbTEyOGggKilfX3A7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9sb2FkdV9waCh2b2lkIGNvbnN0ICpfX3ApIHsKICBzdHJ1Y3QgX19sb2FkdV9waCB7CiAgICBfX201MTJoX3UgX192OwogIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOwogIHJldHVybiAoKGNvbnN0IHN0cnVjdCBfX2xvYWR1X3BoICopX19wKS0+X192Owp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZoIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbG9hZHVfcGgodm9pZCBjb25zdCAqX19wKSB7CiAgc3RydWN0IF9fbG9hZHVfcGggewogICAgX19tMjU2aF91IF9fdjsKICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsKICByZXR1cm4gKChjb25zdCBzdHJ1Y3QgX19sb2FkdV9waCAqKV9fcCktPl9fdjsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tX2xvYWR1X3BoKHZvaWQgY29uc3QgKl9fcCkgewogIHN0cnVjdCBfX2xvYWR1X3BoIHsKICAgIF9fbTEyOGhfdSBfX3Y7CiAgfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19fKSk7CiAgcmV0dXJuICgoY29uc3Qgc3RydWN0IF9fbG9hZHVfcGggKilfX3ApLT5fX3Y7Cn0KCi8vIHN0b3JlcyB3aXRoIHZtb3ZzaDoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tX3N0b3JlX3NoKHZvaWQgKl9fZHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fYSkgewogIHN0cnVjdCBfX21tX3N0b3JlX3NoX3N0cnVjdCB7CiAgICBfRmxvYXQxNiBfX3U7CiAgfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19fKSk7CiAgKChzdHJ1Y3QgX19tbV9zdG9yZV9zaF9zdHJ1Y3QgKilfX2RwKS0+X191ID0gX19hWzBdOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfbW1fbWFza19zdG9yZV9zaCh2b2lkICpfX1csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbW1hc2s4IF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0EpIHsKICBfX2J1aWx0aW5faWEzMl9zdG9yZXNoMTI4X21hc2soKF9fdjhoZiAqKV9fVywgX19BLCBfX1UgJiAxKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIgX21tNTEyX3N0b3JlX3BoKHZvaWQgKl9fUCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTUxMmggX19BKSB7CiAgKihfX201MTJoICopX19QID0gX19BOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzI1NiBfbW0yNTZfc3RvcmVfcGgodm9pZCAqX19QLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMjU2aCBfX0EpIHsKICAqKF9fbTI1NmggKilfX1AgPSBfX0E7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9zdG9yZV9waCh2b2lkICpfX1AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQSkgewogICooX19tMTI4aCAqKV9fUCA9IF9fQTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIgX21tNTEyX3N0b3JldV9waCh2b2lkICpfX1AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tNTEyaCBfX0EpIHsKICBzdHJ1Y3QgX19zdG9yZXVfcGggewogICAgX19tNTEyaF91IF9fdjsKICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsKICAoKHN0cnVjdCBfX3N0b3JldV9waCAqKV9fUCktPl9fdiA9IF9fQTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYgX21tMjU2X3N0b3JldV9waCh2b2lkICpfX1AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMjU2aCBfX0EpIHsKICBzdHJ1Y3QgX19zdG9yZXVfcGggewogICAgX19tMjU2aF91IF9fdjsKICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsKICAoKHN0cnVjdCBfX3N0b3JldV9waCAqKV9fUCktPl9fdiA9IF9fQTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tX3N0b3JldV9waCh2b2lkICpfX1AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0EpIHsKICBzdHJ1Y3QgX19zdG9yZXVfcGggewogICAgX19tMTI4aF91IF9fdjsKICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsKICAoKHN0cnVjdCBfX3N0b3JldV9waCAqKV9fUCktPl9fdiA9IF9fQTsKfQoKLy8gbW92ZXMgd2l0aCB2bW92c2g6CnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9tb3ZlX3NoKF9fbTEyOGggX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fYikgewogIF9fYVswXSA9IF9fYlswXTsKICByZXR1cm4gX19hOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfbW1fbWFza19tb3ZlX3NoKF9fbTEyOGggX19XLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbW1hc2s4IF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQikgewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9zZWxlY3RzaF8xMjgoX19VLCBfbW1fbW92ZV9zaChfX0EsIF9fQiksIF9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9tYXNrel9tb3ZlX3NoKF9fbW1hc2s4IF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGggX19CKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3NlbGVjdHNoXzEyOChfX1UsIF9tbV9tb3ZlX3NoKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9tbV9zZXR6ZXJvX3BoKCkpOwp9CgovLyB2bW92dzoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tX2N2dHNpMTZfc2kxMjgoc2hvcnQgX19hKSB7CiAgcmV0dXJuIChfX20xMjhpKShfX3Y4aGkpe19fYSwgMCwgMCwgMCwgMCwgMCwgMCwgMH07Cn0KCnN0YXRpYyBfX2lubGluZV9fIHNob3J0IF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfbW1fY3Z0c2kxMjhfc2kxNihfX20xMjhpIF9fYSkgewogIF9fdjhoaSBfX2IgPSAoX192OGhpKV9fYTsKICByZXR1cm4gX19iWzBdOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJoIF9fREVGQVVMVF9GTl9BVFRSUzUxMiBfbW01MTJfcmNwX3BoKF9fbTUxMmggX19BKSB7CiAgcmV0dXJuIChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3JjcHBoNTEyX21hc2soCiAgICAgIChfX3YzMmhmKV9fQSwgKF9fdjMyaGYpX21tNTEyX3VuZGVmaW5lZF9waCgpLCAoX19tbWFzazMyKS0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfcmNwX3BoKF9fbTUxMmggX19XLCBfX21tYXNrMzIgX19VLCBfX201MTJoIF9fQSkgewogIHJldHVybiAoX19tNTEyaClfX2J1aWx0aW5faWEzMl9yY3BwaDUxMl9tYXNrKChfX3YzMmhmKV9fQSwgKF9fdjMyaGYpX19XLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMzIpX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X3JjcF9waChfX21tYXNrMzIgX19VLCBfX201MTJoIF9fQSkgewogIHJldHVybiAoX19tNTEyaClfX2J1aWx0aW5faWEzMl9yY3BwaDUxMl9tYXNrKAogICAgICAoX192MzJoZilfX0EsIChfX3YzMmhmKV9tbTUxMl9zZXR6ZXJvX3BoKCksIChfX21tYXNrMzIpX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIgX21tNTEyX3JzcXJ0X3BoKF9fbTUxMmggX19BKSB7CiAgcmV0dXJuIChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3JzcXJ0cGg1MTJfbWFzaygKICAgICAgKF9fdjMyaGYpX19BLCAoX192MzJoZilfbW01MTJfdW5kZWZpbmVkX3BoKCksIChfX21tYXNrMzIpLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJoIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19yc3FydF9waChfX201MTJoIF9fVywgX19tbWFzazMyIF9fVSwgX19tNTEyaCBfX0EpIHsKICByZXR1cm4gKF9fbTUxMmgpX19idWlsdGluX2lhMzJfcnNxcnRwaDUxMl9tYXNrKChfX3YzMmhmKV9fQSwgKF9fdjMyaGYpX19XLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2szMilfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJoIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfcnNxcnRfcGgoX19tbWFzazMyIF9fVSwgX19tNTEyaCBfX0EpIHsKICByZXR1cm4gKF9fbTUxMmgpX19idWlsdGluX2lhMzJfcnNxcnRwaDUxMl9tYXNrKAogICAgICAoX192MzJoZilfX0EsIChfX3YzMmhmKV9tbTUxMl9zZXR6ZXJvX3BoKCksIChfX21tYXNrMzIpX19VKTsKfQoKI2RlZmluZSBfbW01MTJfZ2V0bWFudF9waChBLCBCLCBDKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTUxMmgpX19idWlsdGluX2lhMzJfZ2V0bWFudHBoNTEyX21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjMyaGYpKF9fbTUxMmgpKEEpLCAoaW50KSgoKEMpIDw8IDIpIHwgKEIpKSwgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjMyaGYpX21tNTEyX3VuZGVmaW5lZF9waCgpLCAoX19tbWFzazMyKS0xLCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfZ2V0bWFudF9waChXLCBVLCBBLCBCLCBDKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX201MTJoKV9fYnVpbHRpbl9pYTMyX2dldG1hbnRwaDUxMl9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3YzMmhmKShfX201MTJoKShBKSwgKGludCkoKChDKSA8PCAyKSB8IChCKSksIChfX3YzMmhmKShfX201MTJoKShXKSwgICBcCiAgICAgIChfX21tYXNrMzIpKFUpLCBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pKQoKI2RlZmluZSBfbW01MTJfbWFza3pfZ2V0bWFudF9waChVLCBBLCBCLCBDKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTUxMmgpX19idWlsdGluX2lhMzJfZ2V0bWFudHBoNTEyX21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjMyaGYpKF9fbTUxMmgpKEEpLCAoaW50KSgoKEMpIDw8IDIpIHwgKEIpKSwgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjMyaGYpX21tNTEyX3NldHplcm9fcGgoKSwgKF9fbW1hc2szMikoVSksIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTikpCgojZGVmaW5lIF9tbTUxMl9nZXRtYW50X3JvdW5kX3BoKEEsIEIsIEMsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tNTEyaClfX2J1aWx0aW5faWEzMl9nZXRtYW50cGg1MTJfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192MzJoZikoX19tNTEyaCkoQSksIChpbnQpKCgoQykgPDwgMikgfCAoQikpLCAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192MzJoZilfbW01MTJfdW5kZWZpbmVkX3BoKCksIChfX21tYXNrMzIpLTEsIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfZ2V0bWFudF9yb3VuZF9waChXLCBVLCBBLCBCLCBDLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX201MTJoKV9fYnVpbHRpbl9pYTMyX2dldG1hbnRwaDUxMl9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3YzMmhmKShfX201MTJoKShBKSwgKGludCkoKChDKSA8PCAyKSB8IChCKSksIChfX3YzMmhmKShfX201MTJoKShXKSwgICBcCiAgICAgIChfX21tYXNrMzIpKFUpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9nZXRtYW50X3JvdW5kX3BoKFUsIEEsIEIsIEMsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tNTEyaClfX2J1aWx0aW5faWEzMl9nZXRtYW50cGg1MTJfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192MzJoZikoX19tNTEyaCkoQSksIChpbnQpKCgoQykgPDwgMikgfCAoQikpLCAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192MzJoZilfbW01MTJfc2V0emVyb19waCgpLCAoX19tbWFzazMyKShVKSwgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIgX21tNTEyX2dldGV4cF9waChfX201MTJoIF9fQSkgewogIHJldHVybiAoX19tNTEyaClfX2J1aWx0aW5faWEzMl9nZXRleHBwaDUxMl9tYXNrKAogICAgICAoX192MzJoZilfX0EsIChfX3YzMmhmKV9tbTUxMl91bmRlZmluZWRfcGgoKSwgKF9fbW1hc2szMiktMSwKICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfZ2V0ZXhwX3BoKF9fbTUxMmggX19XLCBfX21tYXNrMzIgX19VLCBfX201MTJoIF9fQSkgewogIHJldHVybiAoX19tNTEyaClfX2J1aWx0aW5faWEzMl9nZXRleHBwaDUxMl9tYXNrKAogICAgICAoX192MzJoZilfX0EsIChfX3YzMmhmKV9fVywgKF9fbW1hc2szMilfX1UsIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9nZXRleHBfcGgoX19tbWFzazMyIF9fVSwgX19tNTEyaCBfX0EpIHsKICByZXR1cm4gKF9fbTUxMmgpX19idWlsdGluX2lhMzJfZ2V0ZXhwcGg1MTJfbWFzaygKICAgICAgKF9fdjMyaGYpX19BLCAoX192MzJoZilfbW01MTJfc2V0emVyb19waCgpLCAoX19tbWFzazMyKV9fVSwKICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW01MTJfZ2V0ZXhwX3JvdW5kX3BoKEEsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTUxMmgpX19idWlsdGluX2lhMzJfZ2V0ZXhwcGg1MTJfbWFzaygoX192MzJoZikoX19tNTEyaCkoQSksICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoZilfbW01MTJfdW5kZWZpbmVkX3BoKCksICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazMyKS0xLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX2dldGV4cF9yb3VuZF9waChXLCBVLCBBLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tNTEyaClfX2J1aWx0aW5faWEzMl9nZXRleHBwaDUxMl9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192MzJoZikoX19tNTEyaCkoQSksIChfX3YzMmhmKShfX201MTJoKShXKSwgKF9fbW1hc2szMikoVSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X2dldGV4cF9yb3VuZF9waChVLCBBLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX201MTJoKV9fYnVpbHRpbl9pYTMyX2dldGV4cHBoNTEyX21hc2soKF9fdjMyaGYpKF9fbTUxMmgpKEEpLCAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGYpX21tNTEyX3NldHplcm9fcGgoKSwgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2szMikoVSksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyIF9tbTUxMl9zY2FsZWZfcGgoX19tNTEyaCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tNTEyaCBfX0IpIHsKICByZXR1cm4gKF9fbTUxMmgpX19idWlsdGluX2lhMzJfc2NhbGVmcGg1MTJfbWFzaygKICAgICAgKF9fdjMyaGYpX19BLCAoX192MzJoZilfX0IsIChfX3YzMmhmKV9tbTUxMl91bmRlZmluZWRfcGgoKSwgKF9fbW1hc2szMiktMSwKICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfc2NhbGVmX3BoKF9fbTUxMmggX19XLCBfX21tYXNrMzIgX19VLCBfX201MTJoIF9fQSwgX19tNTEyaCBfX0IpIHsKICByZXR1cm4gKF9fbTUxMmgpX19idWlsdGluX2lhMzJfc2NhbGVmcGg1MTJfbWFzaygoX192MzJoZilfX0EsIChfX3YzMmhmKV9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoZilfX1csIChfX21tYXNrMzIpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9zY2FsZWZfcGgoX19tbWFzazMyIF9fVSwgX19tNTEyaCBfX0EsIF9fbTUxMmggX19CKSB7CiAgcmV0dXJuIChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3NjYWxlZnBoNTEyX21hc2soCiAgICAgIChfX3YzMmhmKV9fQSwgKF9fdjMyaGYpX19CLCAoX192MzJoZilfbW01MTJfc2V0emVyb19waCgpLCAoX19tbWFzazMyKV9fVSwKICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW01MTJfc2NhbGVmX3JvdW5kX3BoKEEsIEIsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTUxMmgpX19idWlsdGluX2lhMzJfc2NhbGVmcGg1MTJfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjMyaGYpKF9fbTUxMmgpKEEpLCAoX192MzJoZikoX19tNTEyaCkoQiksICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjMyaGYpX21tNTEyX3VuZGVmaW5lZF9waCgpLCAoX19tbWFzazMyKS0xLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX3NjYWxlZl9yb3VuZF9waChXLCBVLCBBLCBCLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tNTEyaClfX2J1aWx0aW5faWEzMl9zY2FsZWZwaDUxMl9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192MzJoZikoX19tNTEyaCkoQSksIChfX3YzMmhmKShfX201MTJoKShCKSwgKF9fdjMyaGYpKF9fbTUxMmgpKFcpLCAgICAgXAogICAgICAoX19tbWFzazMyKShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfc2NhbGVmX3JvdW5kX3BoKFUsIEEsIEIsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTUxMmgpX19idWlsdGluX2lhMzJfc2NhbGVmcGg1MTJfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjMyaGYpKF9fbTUxMmgpKEEpLCAoX192MzJoZikoX19tNTEyaCkoQiksICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjMyaGYpX21tNTEyX3NldHplcm9fcGgoKSwgKF9fbW1hc2szMikoVSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX3JvdW5kc2NhbGVfcGgoQSwgQikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3JuZHNjYWxlcGhfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3YzMmhmKShfX201MTJoKShBKSwgKGludCkoQiksIChfX3YzMmhmKShfX201MTJoKShBKSwgKF9fbW1hc2szMiktMSwgICBcCiAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTikpCgojZGVmaW5lIF9tbTUxMl9tYXNrX3JvdW5kc2NhbGVfcGgoQSwgQiwgQywgaW1tKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tNTEyaClfX2J1aWx0aW5faWEzMl9ybmRzY2FsZXBoX21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192MzJoZikoX19tNTEyaCkoQyksIChpbnQpKGltbSksIChfX3YzMmhmKShfX201MTJoKShBKSwgICAgICAgICAgICAgICAgXAogICAgICAoX19tbWFzazMyKShCKSwgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X3JvdW5kc2NhbGVfcGgoQSwgQiwgaW1tKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3JuZHNjYWxlcGhfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3YzMmhmKShfX201MTJoKShCKSwgKGludCkoaW1tKSwgKF9fdjMyaGYpX21tNTEyX3NldHplcm9fcGgoKSwgICAgICAgICBcCiAgICAgIChfX21tYXNrMzIpKEEpLCBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pKQoKI2RlZmluZSBfbW01MTJfbWFza19yb3VuZHNjYWxlX3JvdW5kX3BoKEEsIEIsIEMsIGltbSwgUikgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTUxMmgpX19idWlsdGluX2lhMzJfcm5kc2NhbGVwaF9tYXNrKChfX3YzMmhmKShfX201MTJoKShDKSwgKGludCkoaW1tKSwgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhmKShfX201MTJoKShBKSwgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMzIpKEIpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9yb3VuZHNjYWxlX3JvdW5kX3BoKEEsIEIsIGltbSwgUikgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tNTEyaClfX2J1aWx0aW5faWEzMl9ybmRzY2FsZXBoX21hc2soKF9fdjMyaGYpKF9fbTUxMmgpKEIpLCAoaW50KShpbW0pLCAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGYpX21tNTEyX3NldHplcm9fcGgoKSwgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2szMikoQSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX3JvdW5kc2NhbGVfcm91bmRfcGgoQSwgaW1tLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3JuZHNjYWxlcGhfbWFzaygoX192MzJoZikoX19tNTEyaCkoQSksIChpbnQpKGltbSksICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoZilfbW01MTJfdW5kZWZpbmVkX3BoKCksICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazMyKS0xLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9yZWR1Y2VfcGgoQSwgaW1tKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tNTEyaClfX2J1aWx0aW5faWEzMl9yZWR1Y2VwaDUxMl9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192MzJoZikoX19tNTEyaCkoQSksIChpbnQpKGltbSksIChfX3YzMmhmKV9tbTUxMl91bmRlZmluZWRfcGgoKSwgICAgICAgXAogICAgICAoX19tbWFzazMyKS0xLCBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pKQoKI2RlZmluZSBfbW01MTJfbWFza19yZWR1Y2VfcGgoVywgVSwgQSwgaW1tKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTUxMmgpX19idWlsdGluX2lhMzJfcmVkdWNlcGg1MTJfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjMyaGYpKF9fbTUxMmgpKEEpLCAoaW50KShpbW0pLCAoX192MzJoZikoX19tNTEyaCkoVyksICAgICAgICAgICAgICAgIFwKICAgICAgKF9fbW1hc2szMikoVSksIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTikpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9yZWR1Y2VfcGgoVSwgQSwgaW1tKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tNTEyaClfX2J1aWx0aW5faWEzMl9yZWR1Y2VwaDUxMl9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192MzJoZikoX19tNTEyaCkoQSksIChpbnQpKGltbSksIChfX3YzMmhmKV9tbTUxMl9zZXR6ZXJvX3BoKCksICAgICAgICAgXAogICAgICAoX19tbWFzazMyKShVKSwgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfcmVkdWNlX3JvdW5kX3BoKFcsIFUsIEEsIGltbSwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3JlZHVjZXBoNTEyX21hc2soKF9fdjMyaGYpKF9fbTUxMmgpKEEpLCAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGYpKF9fbTUxMmgpKFcpLCAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2szMikoVSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X3JlZHVjZV9yb3VuZF9waChVLCBBLCBpbW0sIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3JlZHVjZXBoNTEyX21hc2soKF9fdjMyaGYpKF9fbTUxMmgpKEEpLCAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGYpX21tNTEyX3NldHplcm9fcGgoKSwgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2szMikoVSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX3JlZHVjZV9yb3VuZF9waChBLCBpbW0sIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3JlZHVjZXBoNTEyX21hc2soKF9fdjMyaGYpKF9fbTUxMmgpKEEpLCAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGYpX21tNTEyX3VuZGVmaW5lZF9waCgpLCAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2szMiktMSwgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tX3JjcF9zaChfX20xMjhoIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQikgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl9yY3BzaF9tYXNrKAogICAgICAoX192OGhmKV9fQSwgKF9fdjhoZilfX0IsIChfX3Y4aGYpX21tX3NldHplcm9fcGgoKSwgKF9fbW1hc2s4KS0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tX21hc2tfcmNwX3NoKF9fbTEyOGggX19XLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tbWFzazggX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQikgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl9yY3BzaF9tYXNrKChfX3Y4aGYpX19BLCAoX192OGhmKV9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhmKV9fVywgKF9fbW1hc2s4KV9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9tYXNrel9yY3Bfc2goX19tbWFzazggX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGggX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGggX19CKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3JjcHNoX21hc2soCiAgICAgIChfX3Y4aGYpX19BLCAoX192OGhmKV9fQiwgKF9fdjhoZilfbW1fc2V0emVyb19waCgpLCAoX19tbWFzazgpX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tX3JzcXJ0X3NoKF9fbTEyOGggX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0IpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfcnNxcnRzaF9tYXNrKAogICAgICAoX192OGhmKV9fQSwgKF9fdjhoZilfX0IsIChfX3Y4aGYpX21tX3NldHplcm9fcGgoKSwgKF9fbW1hc2s4KS0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tX21hc2tfcnNxcnRfc2goX19tMTI4aCBfX1csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbW1hc2s4IF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGggX19CKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3JzcXJ0c2hfbWFzaygoX192OGhmKV9fQSwgKF9fdjhoZilfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhmKV9fVywgKF9fbW1hc2s4KV9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9yc3FydF9zaChfX21tYXNrOCBfX1UsIF9fbTEyOGggX19BLCBfX20xMjhoIF9fQikgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl9yc3FydHNoX21hc2soCiAgICAgIChfX3Y4aGYpX19BLCAoX192OGhmKV9fQiwgKF9fdjhoZilfbW1fc2V0emVyb19waCgpLCAoX19tbWFzazgpX19VKTsKfQoKI2RlZmluZSBfbW1fZ2V0bWFudF9yb3VuZF9zaChBLCBCLCBDLCBELCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTEyOGgpX19idWlsdGluX2lhMzJfZ2V0bWFudHNoX3JvdW5kX21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjhoZikoX19tMTI4aCkoQSksIChfX3Y4aGYpKF9fbTEyOGgpKEIpLCAoaW50KSgoKEQpIDw8IDIpIHwgKEMpKSwgICAgIFwKICAgICAgKF9fdjhoZilfbW1fc2V0emVyb19waCgpLCAoX19tbWFzazgpLTEsIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX2dldG1hbnRfc2goQSwgQiwgQywgRCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX2dldG1hbnRzaF9yb3VuZF9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3Y4aGYpKF9fbTEyOGgpKEEpLCAoX192OGhmKShfX20xMjhoKShCKSwgKGludCkoKChEKSA8PCAyKSB8IChDKSksICAgICBcCiAgICAgIChfX3Y4aGYpX21tX3NldHplcm9fcGgoKSwgKF9fbW1hc2s4KS0xLCBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pKQoKI2RlZmluZSBfbW1fbWFza19nZXRtYW50X3NoKFcsIFUsIEEsIEIsIEMsIEQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTEyOGgpX19idWlsdGluX2lhMzJfZ2V0bWFudHNoX3JvdW5kX21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjhoZikoX19tMTI4aCkoQSksIChfX3Y4aGYpKF9fbTEyOGgpKEIpLCAoaW50KSgoKEQpIDw8IDIpIHwgKEMpKSwgICAgIFwKICAgICAgKF9fdjhoZikoX19tMTI4aCkoVyksIChfX21tYXNrOCkoVSksIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTikpCgojZGVmaW5lIF9tbV9tYXNrX2dldG1hbnRfcm91bmRfc2goVywgVSwgQSwgQiwgQywgRCwgUikgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tMTI4aClfX2J1aWx0aW5faWEzMl9nZXRtYW50c2hfcm91bmRfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192OGhmKShfX20xMjhoKShBKSwgKF9fdjhoZikoX19tMTI4aCkoQiksIChpbnQpKCgoRCkgPDwgMikgfCAoQykpLCAgICAgXAogICAgICAoX192OGhmKShfX20xMjhoKShXKSwgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW1fbWFza3pfZ2V0bWFudF9zaChVLCBBLCBCLCBDLCBEKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTEyOGgpX19idWlsdGluX2lhMzJfZ2V0bWFudHNoX3JvdW5kX21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjhoZikoX19tMTI4aCkoQSksIChfX3Y4aGYpKF9fbTEyOGgpKEIpLCAoaW50KSgoKEQpIDw8IDIpIHwgKEMpKSwgICAgIFwKICAgICAgKF9fdjhoZilfbW1fc2V0emVyb19waCgpLCAoX19tbWFzazgpKFUpLCBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pKQoKI2RlZmluZSBfbW1fbWFza3pfZ2V0bWFudF9yb3VuZF9zaChVLCBBLCBCLCBDLCBELCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTEyOGgpX19idWlsdGluX2lhMzJfZ2V0bWFudHNoX3JvdW5kX21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjhoZikoX19tMTI4aCkoQSksIChfX3Y4aGYpKF9fbTEyOGgpKEIpLCAoaW50KSgoKEQpIDw8IDIpIHwgKEMpKSwgICAgIFwKICAgICAgKF9fdjhoZilfbW1fc2V0emVyb19waCgpLCAoX19tbWFzazgpKFUpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbV9nZXRleHBfcm91bmRfc2goQSwgQiwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tMTI4aClfX2J1aWx0aW5faWEzMl9nZXRleHBzaDEyOF9yb3VuZF9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192OGhmKShfX20xMjhoKShBKSwgKF9fdjhoZikoX19tMTI4aCkoQiksIChfX3Y4aGYpX21tX3NldHplcm9fcGgoKSwgICAgXAogICAgICAoX19tbWFzazgpLTEsIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9nZXRleHBfc2goX19tMTI4aCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0IpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfZ2V0ZXhwc2gxMjhfcm91bmRfbWFzaygKICAgICAgKF9fdjhoZilfX0EsIChfX3Y4aGYpX19CLCAoX192OGhmKV9tbV9zZXR6ZXJvX3BoKCksIChfX21tYXNrOCktMSwKICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfZ2V0ZXhwX3NoKF9fbTEyOGggX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGggX19BLCBfX20xMjhoIF9fQikgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl9nZXRleHBzaDEyOF9yb3VuZF9tYXNrKAogICAgICAoX192OGhmKV9fQSwgKF9fdjhoZilfX0IsIChfX3Y4aGYpX19XLCAoX19tbWFzazgpX19VLAogICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgojZGVmaW5lIF9tbV9tYXNrX2dldGV4cF9yb3VuZF9zaChXLCBVLCBBLCBCLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tMTI4aClfX2J1aWx0aW5faWEzMl9nZXRleHBzaDEyOF9yb3VuZF9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192OGhmKShfX20xMjhoKShBKSwgKF9fdjhoZikoX19tMTI4aCkoQiksIChfX3Y4aGYpKF9fbTEyOGgpKFcpLCAgICAgICAgXAogICAgICAoX19tbWFzazgpKFUpLCAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfZ2V0ZXhwX3NoKF9fbW1hc2s4IF9fVSwgX19tMTI4aCBfX0EsIF9fbTEyOGggX19CKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX2dldGV4cHNoMTI4X3JvdW5kX21hc2soCiAgICAgIChfX3Y4aGYpX19BLCAoX192OGhmKV9fQiwgKF9fdjhoZilfbW1fc2V0emVyb19waCgpLCAoX19tbWFzazgpX19VLAogICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgojZGVmaW5lIF9tbV9tYXNrel9nZXRleHBfcm91bmRfc2goVSwgQSwgQiwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tMTI4aClfX2J1aWx0aW5faWEzMl9nZXRleHBzaDEyOF9yb3VuZF9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192OGhmKShfX20xMjhoKShBKSwgKF9fdjhoZikoX19tMTI4aCkoQiksIChfX3Y4aGYpX21tX3NldHplcm9fcGgoKSwgICAgXAogICAgICAoX19tbWFzazgpKFUpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbV9zY2FsZWZfcm91bmRfc2goQSwgQiwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tMTI4aClfX2J1aWx0aW5faWEzMl9zY2FsZWZzaF9yb3VuZF9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192OGhmKShfX20xMjhoKShBKSwgKF9fdjhoZikoX19tMTI4aCkoQiksIChfX3Y4aGYpX21tX3NldHplcm9fcGgoKSwgICAgXAogICAgICAoX19tbWFzazgpLTEsIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9zY2FsZWZfc2goX19tMTI4aCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0IpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfc2NhbGVmc2hfcm91bmRfbWFzaygKICAgICAgKF9fdjhoZilfX0EsIChfX3Y4aGYpKF9fQiksIChfX3Y4aGYpX21tX3NldHplcm9fcGgoKSwgKF9fbW1hc2s4KS0xLAogICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19zY2FsZWZfc2goX19tMTI4aCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aCBfX0EsIF9fbTEyOGggX19CKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3NjYWxlZnNoX3JvdW5kX21hc2soKF9fdjhoZilfX0EsIChfX3Y4aGYpX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGYpX19XLCAoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCiNkZWZpbmUgX21tX21hc2tfc2NhbGVmX3JvdW5kX3NoKFcsIFUsIEEsIEIsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3NjYWxlZnNoX3JvdW5kX21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3Y4aGYpKF9fbTEyOGgpKEEpLCAoX192OGhmKShfX20xMjhoKShCKSwgKF9fdjhoZikoX19tMTI4aCkoVyksICAgICAgICBcCiAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9zY2FsZWZfc2goX19tbWFzazggX19VLCBfX20xMjhoIF9fQSwgX19tMTI4aCBfX0IpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfc2NhbGVmc2hfcm91bmRfbWFzaygKICAgICAgKF9fdjhoZilfX0EsIChfX3Y4aGYpX19CLCAoX192OGhmKV9tbV9zZXR6ZXJvX3BoKCksIChfX21tYXNrOClfX1UsCiAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCiNkZWZpbmUgX21tX21hc2t6X3NjYWxlZl9yb3VuZF9zaChVLCBBLCBCLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3NjYWxlZnNoX3JvdW5kX21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3Y4aGYpKF9fbTEyOGgpKEEpLCAoX192OGhmKShfX20xMjhoKShCKSwgKF9fdjhoZilfbW1fc2V0emVyb19waCgpLCAgICBcCiAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX3JvdW5kc2NhbGVfcm91bmRfc2goQSwgQiwgaW1tLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3JuZHNjYWxlc2hfcm91bmRfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3Y4aGYpKF9fbTEyOGgpKEEpLCAoX192OGhmKShfX20xMjhoKShCKSwgKF9fdjhoZilfbW1fc2V0emVyb19waCgpLCAgICBcCiAgICAgIChfX21tYXNrOCktMSwgKGludCkoaW1tKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW1fcm91bmRzY2FsZV9zaChBLCBCLCBpbW0pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTEyOGgpX19idWlsdGluX2lhMzJfcm5kc2NhbGVzaF9yb3VuZF9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjhoZikoX19tMTI4aCkoQSksIChfX3Y4aGYpKF9fbTEyOGgpKEIpLCAoX192OGhmKV9tbV9zZXR6ZXJvX3BoKCksICAgIFwKICAgICAgKF9fbW1hc2s4KS0xLCAoaW50KShpbW0pLCBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pKQoKI2RlZmluZSBfbW1fbWFza19yb3VuZHNjYWxlX3NoKFcsIFUsIEEsIEIsIEkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTEyOGgpX19idWlsdGluX2lhMzJfcm5kc2NhbGVzaF9yb3VuZF9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjhoZikoX19tMTI4aCkoQSksIChfX3Y4aGYpKF9fbTEyOGgpKEIpLCAoX192OGhmKShfX20xMjhoKShXKSwgICAgICAgIFwKICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoSSksIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTikpCgojZGVmaW5lIF9tbV9tYXNrX3JvdW5kc2NhbGVfcm91bmRfc2goVywgVSwgQSwgQiwgSSwgUikgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tMTI4aClfX2J1aWx0aW5faWEzMl9ybmRzY2FsZXNoX3JvdW5kX21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192OGhmKShfX20xMjhoKShBKSwgKF9fdjhoZikoX19tMTI4aCkoQiksIChfX3Y4aGYpKF9fbTEyOGgpKFcpLCAgICAgICAgXAogICAgICAoX19tbWFzazgpKFUpLCAoaW50KShJKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW1fbWFza3pfcm91bmRzY2FsZV9zaChVLCBBLCBCLCBJKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTEyOGgpX19idWlsdGluX2lhMzJfcm5kc2NhbGVzaF9yb3VuZF9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjhoZikoX19tMTI4aCkoQSksIChfX3Y4aGYpKF9fbTEyOGgpKEIpLCAoX192OGhmKV9tbV9zZXR6ZXJvX3BoKCksICAgIFwKICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoSSksIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTikpCgojZGVmaW5lIF9tbV9tYXNrel9yb3VuZHNjYWxlX3JvdW5kX3NoKFUsIEEsIEIsIEksIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tMTI4aClfX2J1aWx0aW5faWEzMl9ybmRzY2FsZXNoX3JvdW5kX21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192OGhmKShfX20xMjhoKShBKSwgKF9fdjhoZikoX19tMTI4aCkoQiksIChfX3Y4aGYpX21tX3NldHplcm9fcGgoKSwgICAgXAogICAgICAoX19tbWFzazgpKFUpLCAoaW50KShJKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW1fcmVkdWNlX3NoKEEsIEIsIEMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTEyOGgpX19idWlsdGluX2lhMzJfcmVkdWNlc2hfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjhoZikoX19tMTI4aCkoQSksIChfX3Y4aGYpKF9fbTEyOGgpKEIpLCAoX192OGhmKV9tbV9zZXR6ZXJvX3BoKCksICAgIFwKICAgICAgKF9fbW1hc2s4KS0xLCAoaW50KShDKSwgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKSkKCiNkZWZpbmUgX21tX21hc2tfcmVkdWNlX3NoKFcsIFUsIEEsIEIsIEMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3JlZHVjZXNoX21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3Y4aGYpKF9fbTEyOGgpKEEpLCAoX192OGhmKShfX20xMjhoKShCKSwgKF9fdjhoZikoX19tMTI4aCkoVyksICAgICAgICBcCiAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKEMpLCBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pKQoKI2RlZmluZSBfbW1fbWFza3pfcmVkdWNlX3NoKFUsIEEsIEIsIEMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTEyOGgpX19idWlsdGluX2lhMzJfcmVkdWNlc2hfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjhoZikoX19tMTI4aCkoQSksIChfX3Y4aGYpKF9fbTEyOGgpKEIpLCAoX192OGhmKV9tbV9zZXR6ZXJvX3BoKCksICAgIFwKICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoQyksIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTikpCgojZGVmaW5lIF9tbV9yZWR1Y2Vfcm91bmRfc2goQSwgQiwgQywgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tMTI4aClfX2J1aWx0aW5faWEzMl9yZWR1Y2VzaF9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192OGhmKShfX20xMjhoKShBKSwgKF9fdjhoZikoX19tMTI4aCkoQiksIChfX3Y4aGYpX21tX3NldHplcm9fcGgoKSwgICAgXAogICAgICAoX19tbWFzazgpLTEsIChpbnQpKEMpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbV9tYXNrX3JlZHVjZV9yb3VuZF9zaChXLCBVLCBBLCBCLCBDLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tMTI4aClfX2J1aWx0aW5faWEzMl9yZWR1Y2VzaF9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192OGhmKShfX20xMjhoKShBKSwgKF9fdjhoZikoX19tMTI4aCkoQiksIChfX3Y4aGYpKF9fbTEyOGgpKFcpLCAgICAgICAgXAogICAgICAoX19tbWFzazgpKFUpLCAoaW50KShDKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW1fbWFza3pfcmVkdWNlX3JvdW5kX3NoKFUsIEEsIEIsIEMsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTEyOGgpX19idWlsdGluX2lhMzJfcmVkdWNlc2hfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjhoZikoX19tMTI4aCkoQSksIChfX3Y4aGYpKF9fbTEyOGgpKEIpLCAoX192OGhmKV9tbV9zZXR6ZXJvX3BoKCksICAgIFwKICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoQyksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX3NxcnRfcm91bmRfcGgoQSwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3NxcnRwaDUxMigoX192MzJoZikoX19tNTEyaCkoQSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfc3FydF9yb3VuZF9waChXLCBVLCBBLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBoXzUxMiggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX21tYXNrMzIpKFUpLCAoX192MzJoZilfbW01MTJfc3FydF9yb3VuZF9waCgoQSksIChSKSksICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3YzMmhmKShfX201MTJoKShXKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9zcXJ0X3JvdW5kX3BoKFUsIEEsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tNTEyaClfX2J1aWx0aW5faWEzMl9zZWxlY3RwaF81MTIoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX19tbWFzazMyKShVKSwgKF9fdjMyaGYpX21tNTEyX3NxcnRfcm91bmRfcGgoKEEpLCAoUikpLCAgICAgICAgICAgICAgICAgXAogICAgICAoX192MzJoZilfbW01MTJfc2V0emVyb19waCgpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyIF9tbTUxMl9zcXJ0X3BoKF9fbTUxMmggX19BKSB7CiAgcmV0dXJuIChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3NxcnRwaDUxMigoX192MzJoZilfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJoIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19zcXJ0X3BoKF9fbTUxMmggX19XLCBfX21tYXNrMzIgX19VLCBfX201MTJoIF9fQSkgewogIHJldHVybiAoX19tNTEyaClfX2J1aWx0aW5faWEzMl9zZWxlY3RwaF81MTIoCiAgICAgIChfX21tYXNrMzIpKF9fVSksCiAgICAgIChfX3YzMmhmKV9fYnVpbHRpbl9pYTMyX3NxcnRwaDUxMigoX19BKSwgKF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTikpLAogICAgICAoX192MzJoZikoX19tNTEyaCkoX19XKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9zcXJ0X3BoKF9fbW1hc2szMiBfX1UsIF9fbTUxMmggX19BKSB7CiAgcmV0dXJuIChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBoXzUxMigKICAgICAgKF9fbW1hc2szMikoX19VKSwKICAgICAgKF9fdjMyaGYpX19idWlsdGluX2lhMzJfc3FydHBoNTEyKChfX0EpLCAoX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKSksCiAgICAgIChfX3YzMmhmKV9tbTUxMl9zZXR6ZXJvX3BoKCkpOwp9CgojZGVmaW5lIF9tbV9zcXJ0X3JvdW5kX3NoKEEsIEIsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tMTI4aClfX2J1aWx0aW5faWEzMl9zcXJ0c2hfcm91bmRfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192OGhmKShfX20xMjhoKShBKSwgKF9fdjhoZikoX19tMTI4aCkoQiksIChfX3Y4aGYpX21tX3NldHplcm9fcGgoKSwgICAgXAogICAgICAoX19tbWFzazgpLTEsIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX21hc2tfc3FydF9yb3VuZF9zaChXLCBVLCBBLCBCLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3NxcnRzaF9yb3VuZF9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3Y4aGYpKF9fbTEyOGgpKEEpLCAoX192OGhmKShfX20xMjhoKShCKSwgKF9fdjhoZikoX19tMTI4aCkoVyksICAgICAgICBcCiAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX21hc2t6X3NxcnRfcm91bmRfc2goVSwgQSwgQiwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3NxcnRzaF9yb3VuZF9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3Y4aGYpKF9fbTEyOGgpKEEpLCAoX192OGhmKShfX20xMjhoKShCKSwgKF9fdjhoZilfbW1fc2V0emVyb19waCgpLCAgICBcCiAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9zcXJ0X3NoKF9fbTEyOGggX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQikgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl9zcXJ0c2hfcm91bmRfbWFzaygKICAgICAgKF9fdjhoZikoX19tMTI4aCkoX19BKSwgKF9fdjhoZikoX19tMTI4aCkoX19CKSwgKF9fdjhoZilfbW1fc2V0emVyb19waCgpLAogICAgICAoX19tbWFzazgpLTEsIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9tYXNrX3NxcnRfc2goX19tMTI4aCBfX1csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tbWFzazMyIF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQikgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl9zcXJ0c2hfcm91bmRfbWFzaygKICAgICAgKF9fdjhoZikoX19tMTI4aCkoX19BKSwgKF9fdjhoZikoX19tMTI4aCkoX19CKSwgKF9fdjhoZikoX19tMTI4aCkoX19XKSwKICAgICAgKF9fbW1hc2s4KShfX1UpLCBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfbW1fbWFza3pfc3FydF9zaChfX21tYXNrMzIgX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0IpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfc3FydHNoX3JvdW5kX21hc2soCiAgICAgIChfX3Y4aGYpKF9fbTEyOGgpKF9fQSksIChfX3Y4aGYpKF9fbTEyOGgpKF9fQiksIChfX3Y4aGYpX21tX3NldHplcm9fcGgoKSwKICAgICAgKF9fbW1hc2s4KShfX1UpLCBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgojZGVmaW5lIF9tbTUxMl9tYXNrX2ZwY2xhc3NfcGhfbWFzayhVLCBBLCBpbW0pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tbWFzazMyKV9fYnVpbHRpbl9pYTMyX2ZwY2xhc3NwaDUxMl9tYXNrKChfX3YzMmhmKShfX201MTJoKShBKSwgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKGltbSksIChfX21tYXNrMzIpKFUpKSkKCiNkZWZpbmUgX21tNTEyX2ZwY2xhc3NfcGhfbWFzayhBLCBpbW0pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX21tYXNrMzIpX19idWlsdGluX2lhMzJfZnBjbGFzc3BoNTEyX21hc2soKF9fdjMyaGYpKF9fbTUxMmgpKEEpLCAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoaW1tKSwgKF9fbW1hc2szMiktMSkpCgojZGVmaW5lIF9tbV9mcGNsYXNzX3NoX21hc2soQSwgaW1tKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tbWFzazgpX19idWlsdGluX2lhMzJfZnBjbGFzc3NoX21hc2soKF9fdjhoZikoX19tMTI4aCkoQSksIChpbnQpKGltbSksICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xKSkKCiNkZWZpbmUgX21tX21hc2tfZnBjbGFzc19zaF9tYXNrKFUsIEEsIGltbSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX21tYXNrOClfX2J1aWx0aW5faWEzMl9mcGNsYXNzc2hfbWFzaygoX192OGhmKShfX20xMjhoKShBKSwgKGludCkoaW1tKSwgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpKSkKCiNkZWZpbmUgX21tNTEyX2N2dF9yb3VuZHBkX3BoKEEsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZjdnRwZDJwaDUxMl9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3Y4ZGYpKEEpLCAoX192OGhmKV9tbV91bmRlZmluZWRfcGgoKSwgKF9fbW1hc2s4KSgtMSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfY3Z0X3JvdW5kcGRfcGgoVywgVSwgQSwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZjdnRwZDJwaDUxMl9tYXNrKChfX3Y4ZGYpKEEpLCAoX192OGhmKShXKSwgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X2N2dF9yb3VuZHBkX3BoKFUsIEEsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZjdnRwZDJwaDUxMl9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3Y4ZGYpKEEpLCAoX192OGhmKV9tbV9zZXR6ZXJvX3BoKCksIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTNTEyIF9tbTUxMl9jdnRwZF9waChfX201MTJkIF9fQSkgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl92Y3Z0cGQycGg1MTJfbWFzaygKICAgICAgKF9fdjhkZilfX0EsIChfX3Y4aGYpX21tX3NldHplcm9fcGgoKSwgKF9fbW1hc2s4KS0xLAogICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19jdnRwZF9waChfX20xMjhoIF9fVywgX19tbWFzazggX19VLCBfX201MTJkIF9fQSkgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl92Y3Z0cGQycGg1MTJfbWFzaygKICAgICAgKF9fdjhkZilfX0EsIChfX3Y4aGYpX19XLCAoX19tbWFzazgpX19VLCBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfY3Z0cGRfcGgoX19tbWFzazggX19VLCBfX201MTJkIF9fQSkgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl92Y3Z0cGQycGg1MTJfbWFzaygKICAgICAgKF9fdjhkZilfX0EsIChfX3Y4aGYpX21tX3NldHplcm9fcGgoKSwgKF9fbW1hc2s4KV9fVSwKICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW01MTJfY3Z0X3JvdW5kcGhfcGQoQSwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTUxMmQpX19idWlsdGluX2lhMzJfdmN2dHBoMnBkNTEyX21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjhoZikoQSksIChfX3Y4ZGYpX21tNTEyX3VuZGVmaW5lZF9wZCgpLCAoX19tbWFzazgpKC0xKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza19jdnRfcm91bmRwaF9wZChXLCBVLCBBLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTUxMmQpX19idWlsdGluX2lhMzJfdmN2dHBoMnBkNTEyX21hc2soKF9fdjhoZikoQSksIChfX3Y4ZGYpKFcpLCAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfY3Z0X3JvdW5kcGhfcGQoVSwgQSwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTUxMmQpX19idWlsdGluX2lhMzJfdmN2dHBoMnBkNTEyX21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjhoZikoQSksIChfX3Y4ZGYpX21tNTEyX3NldHplcm9fcGQoKSwgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIgX21tNTEyX2N2dHBoX3BkKF9fbTEyOGggX19BKSB7CiAgcmV0dXJuIChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3ZjdnRwaDJwZDUxMl9tYXNrKAogICAgICAoX192OGhmKV9fQSwgKF9fdjhkZilfbW01MTJfc2V0emVyb19wZCgpLCAoX19tbWFzazgpLTEsCiAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2N2dHBoX3BkKF9fbTUxMmQgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGggX19BKSB7CiAgcmV0dXJuIChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3ZjdnRwaDJwZDUxMl9tYXNrKAogICAgICAoX192OGhmKV9fQSwgKF9fdjhkZilfX1csIChfX21tYXNrOClfX1UsIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9jdnRwaF9wZChfX21tYXNrOCBfX1UsIF9fbTEyOGggX19BKSB7CiAgcmV0dXJuIChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3ZjdnRwaDJwZDUxMl9tYXNrKAogICAgICAoX192OGhmKV9fQSwgKF9fdjhkZilfbW01MTJfc2V0emVyb19wZCgpLCAoX19tbWFzazgpX19VLAogICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgojZGVmaW5lIF9tbV9jdnRfcm91bmRzaF9zcyhBLCBCLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3ZjdnRzaDJzc19yb3VuZF9tYXNrKChfX3Y0c2YpKEEpLCAoX192OGhmKShCKSwgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX3VuZGVmaW5lZF9wcygpLCAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoLTEpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbV9tYXNrX2N2dF9yb3VuZHNoX3NzKFcsIFUsIEEsIEIsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3ZjdnRzaDJzc19yb3VuZF9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192NHNmKShBKSwgKF9fdjhoZikoQiksIChfX3Y0c2YpKFcpLCAoX19tbWFzazgpKFUpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbV9tYXNrel9jdnRfcm91bmRzaF9zcyhVLCBBLCBCLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3ZjdnRzaDJzc19yb3VuZF9tYXNrKChfX3Y0c2YpKEEpLCAoX192OGhmKShCKSwgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX3NldHplcm9fcHMoKSwgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tX2N2dHNoX3NzKF9fbTEyOCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGggX19CKSB7CiAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfdmN2dHNoMnNzX3JvdW5kX21hc2soCiAgICAgIChfX3Y0c2YpX19BLCAoX192OGhmKV9fQiwgKF9fdjRzZilfbW1fdW5kZWZpbmVkX3BzKCksIChfX21tYXNrOCktMSwKICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfbW1fbWFza19jdnRzaF9zcyhfX20xMjggX19XLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbW1hc2s4IF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjggX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGggX19CKSB7CiAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfdmN2dHNoMnNzX3JvdW5kX21hc2soKF9fdjRzZilfX0EsIChfX3Y4aGYpX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX19XLCAoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tX21hc2t6X2N2dHNoX3NzKF9fbW1hc2s4IF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4IF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0IpIHsKICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl92Y3Z0c2gyc3Nfcm91bmRfbWFzaygKICAgICAgKF9fdjRzZilfX0EsIChfX3Y4aGYpX19CLCAoX192NHNmKV9tbV9zZXR6ZXJvX3BzKCksIChfX21tYXNrOClfX1UsCiAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCiNkZWZpbmUgX21tX2N2dF9yb3VuZHNzX3NoKEEsIEIsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZjdnRzczJzaF9yb3VuZF9tYXNrKChfX3Y4aGYpKEEpLCAoX192NHNmKShCKSwgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGYpX21tX3VuZGVmaW5lZF9waCgpLCAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoLTEpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbV9tYXNrX2N2dF9yb3VuZHNzX3NoKFcsIFUsIEEsIEIsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tMTI4aClfX2J1aWx0aW5faWEzMl92Y3Z0c3Myc2hfcm91bmRfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192OGhmKShBKSwgKF9fdjRzZikoQiksIChfX3Y4aGYpKFcpLCAoX19tbWFzazgpKFUpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbV9tYXNrel9jdnRfcm91bmRzc19zaChVLCBBLCBCLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tMTI4aClfX2J1aWx0aW5faWEzMl92Y3Z0c3Myc2hfcm91bmRfbWFzaygoX192OGhmKShBKSwgKF9fdjRzZikoQiksICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhmKV9tbV9zZXR6ZXJvX3BoKCksICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpLCAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfbW1fY3Z0c3Nfc2goX19tMTI4aCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjggX19CKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZjdnRzczJzaF9yb3VuZF9tYXNrKAogICAgICAoX192OGhmKV9fQSwgKF9fdjRzZilfX0IsIChfX3Y4aGYpX21tX3VuZGVmaW5lZF9waCgpLCAoX19tbWFzazgpLTEsCiAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9tYXNrX2N2dHNzX3NoKF9fbTEyOGggX19XLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX21tYXNrOCBfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGggX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjggX19CKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZjdnRzczJzaF9yb3VuZF9tYXNrKAogICAgICAoX192OGhmKV9fQSwgKF9fdjRzZilfX0IsIChfX3Y4aGYpX19XLCAoX19tbWFzazgpX19VLAogICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfbW1fbWFza3pfY3Z0c3Nfc2goX19tbWFzazggX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjggX19CKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZjdnRzczJzaF9yb3VuZF9tYXNrKAogICAgICAoX192OGhmKV9fQSwgKF9fdjRzZilfX0IsIChfX3Y4aGYpX21tX3NldHplcm9fcGgoKSwgKF9fbW1hc2s4KV9fVSwKICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW1fY3Z0X3JvdW5kc2Rfc2goQSwgQiwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTEyOGgpX19idWlsdGluX2lhMzJfdmN2dHNkMnNoX3JvdW5kX21hc2soKF9fdjhoZikoQSksIChfX3YyZGYpKEIpLCAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoZilfbW1fdW5kZWZpbmVkX3BoKCksICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSgtMSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX21hc2tfY3Z0X3JvdW5kc2Rfc2goVywgVSwgQSwgQiwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZjdnRzZDJzaF9yb3VuZF9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3Y4aGYpKEEpLCAoX192MmRmKShCKSwgKF9fdjhoZikoVyksIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX21hc2t6X2N2dF9yb3VuZHNkX3NoKFUsIEEsIEIsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZjdnRzZDJzaF9yb3VuZF9tYXNrKChfX3Y4aGYpKEEpLCAoX192MmRmKShCKSwgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGYpX21tX3NldHplcm9fcGgoKSwgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9jdnRzZF9zaChfX20xMjhoIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGQgX19CKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZjdnRzZDJzaF9yb3VuZF9tYXNrKAogICAgICAoX192OGhmKV9fQSwgKF9fdjJkZilfX0IsIChfX3Y4aGYpX21tX3VuZGVmaW5lZF9waCgpLCAoX19tbWFzazgpLTEsCiAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9tYXNrX2N2dHNkX3NoKF9fbTEyOGggX19XLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX21tYXNrOCBfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGggX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhkIF9fQikgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl92Y3Z0c2Qyc2hfcm91bmRfbWFzaygKICAgICAgKF9fdjhoZilfX0EsIChfX3YyZGYpX19CLCAoX192OGhmKV9fVywgKF9fbW1hc2s4KV9fVSwKICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2N2dHNkX3NoKF9fbW1hc2s4IF9fVSwgX19tMTI4aCBfX0EsIF9fbTEyOGQgX19CKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZjdnRzZDJzaF9yb3VuZF9tYXNrKAogICAgICAoX192OGhmKV9fQSwgKF9fdjJkZilfX0IsIChfX3Y4aGYpX21tX3NldHplcm9fcGgoKSwgKF9fbW1hc2s4KV9fVSwKICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW1fY3Z0X3JvdW5kc2hfc2QoQSwgQiwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTEyOGQpX19idWlsdGluX2lhMzJfdmN2dHNoMnNkX3JvdW5kX21hc2soKF9fdjJkZikoQSksIChfX3Y4aGYpKEIpLCAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfbW1fdW5kZWZpbmVkX3BkKCksICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSgtMSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX21hc2tfY3Z0X3JvdW5kc2hfc2QoVywgVSwgQSwgQiwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3ZjdnRzaDJzZF9yb3VuZF9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3YyZGYpKEEpLCAoX192OGhmKShCKSwgKF9fdjJkZikoVyksIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX21hc2t6X2N2dF9yb3VuZHNoX3NkKFUsIEEsIEIsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3ZjdnRzaDJzZF9yb3VuZF9tYXNrKChfX3YyZGYpKEEpLCAoX192OGhmKShCKSwgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX3NldHplcm9fcGQoKSwgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9jdnRzaF9zZChfX20xMjhkIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGggX19CKSB7CiAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3ZjdnRzaDJzZF9yb3VuZF9tYXNrKAogICAgICAoX192MmRmKV9fQSwgKF9fdjhoZilfX0IsIChfX3YyZGYpX21tX3VuZGVmaW5lZF9wZCgpLCAoX19tbWFzazgpLTEsCiAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9tYXNrX2N2dHNoX3NkKF9fbTEyOGQgX19XLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX21tYXNrOCBfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGQgX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQikgewogIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl92Y3Z0c2gyc2Rfcm91bmRfbWFzaygKICAgICAgKF9fdjJkZilfX0EsIChfX3Y4aGYpX19CLCAoX192MmRmKV9fVywgKF9fbW1hc2s4KV9fVSwKICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2N2dHNoX3NkKF9fbW1hc2s4IF9fVSwgX19tMTI4ZCBfX0EsIF9fbTEyOGggX19CKSB7CiAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3ZjdnRzaDJzZF9yb3VuZF9tYXNrKAogICAgICAoX192MmRmKV9fQSwgKF9fdjhoZilfX0IsIChfX3YyZGYpX21tX3NldHplcm9fcGQoKSwgKF9fbW1hc2s4KV9fVSwKICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW01MTJfY3Z0X3JvdW5kcGhfZXBpMTYoQSwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfdmN2dHBoMnc1MTJfbWFzaygoX192MzJoZikoQSksICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoaSlfbW01MTJfdW5kZWZpbmVkX2VwaTMyKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazMyKSgtMSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfY3Z0X3JvdW5kcGhfZXBpMTYoVywgVSwgQSwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3ZjdnRwaDJ3NTEyX21hc2soKF9fdjMyaGYpKEEpLCAoX192MzJoaSkoVyksICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2szMikoVSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X2N2dF9yb3VuZHBoX2VwaTE2KFUsIEEsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3ZjdnRwaDJ3NTEyX21hc2soKF9fdjMyaGYpKEEpLCAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX21tNTEyX3NldHplcm9fZXBpMzIoKSwgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2szMikoVSksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9jdnRwaF9lcGkxNihfX201MTJoIF9fQSkgewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl92Y3Z0cGgydzUxMl9tYXNrKAogICAgICAoX192MzJoZilfX0EsIChfX3YzMmhpKV9tbTUxMl9zZXR6ZXJvX2VwaTMyKCksIChfX21tYXNrMzIpLTEsCiAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2N2dHBoX2VwaTE2KF9fbTUxMmkgX19XLCBfX21tYXNrMzIgX19VLCBfX201MTJoIF9fQSkgewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl92Y3Z0cGgydzUxMl9tYXNrKAogICAgICAoX192MzJoZilfX0EsIChfX3YzMmhpKV9fVywgKF9fbW1hc2szMilfX1UsIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9jdnRwaF9lcGkxNihfX21tYXNrMzIgX19VLCBfX201MTJoIF9fQSkgewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl92Y3Z0cGgydzUxMl9tYXNrKAogICAgICAoX192MzJoZilfX0EsIChfX3YzMmhpKV9tbTUxMl9zZXR6ZXJvX2VwaTMyKCksIChfX21tYXNrMzIpX19VLAogICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgojZGVmaW5lIF9tbTUxMl9jdnR0X3JvdW5kcGhfZXBpMTYoQSwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl92Y3Z0dHBoMnc1MTJfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192MzJoZikoQSksIChfX3YzMmhpKV9tbTUxMl91bmRlZmluZWRfZXBpMzIoKSwgKF9fbW1hc2szMikoLTEpLCAgICAgICAgXAogICAgICAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX2N2dHRfcm91bmRwaF9lcGkxNihXLCBVLCBBLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl92Y3Z0dHBoMnc1MTJfbWFzaygoX192MzJoZikoQSksIChfX3YzMmhpKShXKSwgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazMyKShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfY3Z0dF9yb3VuZHBoX2VwaTE2KFUsIEEsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfdmN2dHRwaDJ3NTEyX21hc2soKF9fdjMyaGYpKEEpLCAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGkpX21tNTEyX3NldHplcm9fZXBpMzIoKSwgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2szMikoVSksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9jdnR0cGhfZXBpMTYoX19tNTEyaCBfX0EpIHsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfdmN2dHRwaDJ3NTEyX21hc2soCiAgICAgIChfX3YzMmhmKV9fQSwgKF9fdjMyaGkpX21tNTEyX3NldHplcm9fZXBpMzIoKSwgKF9fbW1hc2szMiktMSwKICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfY3Z0dHBoX2VwaTE2KF9fbTUxMmkgX19XLCBfX21tYXNrMzIgX19VLCBfX201MTJoIF9fQSkgewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl92Y3Z0dHBoMnc1MTJfbWFzaygKICAgICAgKF9fdjMyaGYpX19BLCAoX192MzJoaSlfX1csIChfX21tYXNrMzIpX19VLCBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfY3Z0dHBoX2VwaTE2KF9fbW1hc2szMiBfX1UsIF9fbTUxMmggX19BKSB7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3ZjdnR0cGgydzUxMl9tYXNrKAogICAgICAoX192MzJoZilfX0EsIChfX3YzMmhpKV9tbTUxMl9zZXR6ZXJvX2VwaTMyKCksIChfX21tYXNrMzIpX19VLAogICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgojZGVmaW5lIF9tbTUxMl9jdnRfcm91bmRlcGkxNl9waChBLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tNTEyaClfX2J1aWx0aW5faWEzMl92Y3Z0dzJwaDUxMl9tYXNrKChfX3YzMmhpKShBKSwgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhmKV9tbTUxMl91bmRlZmluZWRfcGgoKSwgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMzIpKC0xKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza19jdnRfcm91bmRlcGkxNl9waChXLCBVLCBBLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTUxMmgpX19idWlsdGluX2lhMzJfdmN2dHcycGg1MTJfbWFzaygoX192MzJoaSkoQSksIChfX3YzMmhmKShXKSwgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazMyKShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfY3Z0X3JvdW5kZXBpMTZfcGgoVSwgQSwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTUxMmgpX19idWlsdGluX2lhMzJfdmN2dHcycGg1MTJfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjMyaGkpKEEpLCAoX192MzJoZilfbW01MTJfc2V0emVyb19waCgpLCAoX19tbWFzazMyKShVKSwgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2N2dGVwaTE2X3BoKF9fbTUxMmkgX19BKSB7CiAgcmV0dXJuIChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3ZjdnR3MnBoNTEyX21hc2soCiAgICAgIChfX3YzMmhpKV9fQSwgKF9fdjMyaGYpX21tNTEyX3NldHplcm9fcGgoKSwgKF9fbW1hc2szMiktMSwKICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfY3Z0ZXBpMTZfcGgoX19tNTEyaCBfX1csIF9fbW1hc2szMiBfX1UsIF9fbTUxMmkgX19BKSB7CiAgcmV0dXJuIChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3ZjdnR3MnBoNTEyX21hc2soCiAgICAgIChfX3YzMmhpKV9fQSwgKF9fdjMyaGYpX19XLCAoX19tbWFzazMyKV9fVSwgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2N2dGVwaTE2X3BoKF9fbW1hc2szMiBfX1UsIF9fbTUxMmkgX19BKSB7CiAgcmV0dXJuIChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3ZjdnR3MnBoNTEyX21hc2soCiAgICAgIChfX3YzMmhpKV9fQSwgKF9fdjMyaGYpX21tNTEyX3NldHplcm9fcGgoKSwgKF9fbW1hc2szMilfX1UsCiAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCiNkZWZpbmUgX21tNTEyX2N2dF9yb3VuZHBoX2VwdTE2KEEsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3ZjdnRwaDJ1dzUxMl9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3YzMmhmKShBKSwgKF9fdjMyaHUpX21tNTEyX3VuZGVmaW5lZF9lcGkzMigpLCAoX19tbWFzazMyKSgtMSksICAgICAgICBcCiAgICAgIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfY3Z0X3JvdW5kcGhfZXB1MTYoVywgVSwgQSwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3ZjdnRwaDJ1dzUxMl9tYXNrKChfX3YzMmhmKShBKSwgKF9fdjMyaHUpKFcpLCAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMzIpKFUpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9jdnRfcm91bmRwaF9lcHUxNihVLCBBLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl92Y3Z0cGgydXc1MTJfbWFzaygoX192MzJoZikoQSksICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJodSlfbW01MTJfc2V0emVyb19lcGkzMigpLCAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazMyKShVKSwgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2N2dHBoX2VwdTE2KF9fbTUxMmggX19BKSB7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3ZjdnRwaDJ1dzUxMl9tYXNrKAogICAgICAoX192MzJoZilfX0EsIChfX3YzMmh1KV9tbTUxMl9zZXR6ZXJvX2VwaTMyKCksIChfX21tYXNrMzIpLTEsCiAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2N2dHBoX2VwdTE2KF9fbTUxMmkgX19XLCBfX21tYXNrMzIgX19VLCBfX201MTJoIF9fQSkgewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl92Y3Z0cGgydXc1MTJfbWFzaygKICAgICAgKF9fdjMyaGYpX19BLCAoX192MzJodSlfX1csIChfX21tYXNrMzIpX19VLCBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfY3Z0cGhfZXB1MTYoX19tbWFzazMyIF9fVSwgX19tNTEyaCBfX0EpIHsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfdmN2dHBoMnV3NTEyX21hc2soCiAgICAgIChfX3YzMmhmKV9fQSwgKF9fdjMyaHUpX21tNTEyX3NldHplcm9fZXBpMzIoKSwgKF9fbW1hc2szMilfX1UsCiAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCiNkZWZpbmUgX21tNTEyX2N2dHRfcm91bmRwaF9lcHUxNihBLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3ZjdnR0cGgydXc1MTJfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3YzMmhmKShBKSwgKF9fdjMyaHUpX21tNTEyX3VuZGVmaW5lZF9lcGkzMigpLCAoX19tbWFzazMyKSgtMSksICAgICAgICBcCiAgICAgIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfY3Z0dF9yb3VuZHBoX2VwdTE2KFcsIFUsIEEsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3ZjdnR0cGgydXc1MTJfbWFzaygoX192MzJoZikoQSksIChfX3YzMmh1KShXKSwgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazMyKShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfY3Z0dF9yb3VuZHBoX2VwdTE2KFUsIEEsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfdmN2dHRwaDJ1dzUxMl9tYXNrKChfX3YzMmhmKShBKSwgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmh1KV9tbTUxMl9zZXR6ZXJvX2VwaTMyKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMzIpKFUpLCAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfY3Z0dHBoX2VwdTE2KF9fbTUxMmggX19BKSB7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3ZjdnR0cGgydXc1MTJfbWFzaygKICAgICAgKF9fdjMyaGYpX19BLCAoX192MzJodSlfbW01MTJfc2V0emVyb19lcGkzMigpLCAoX19tbWFzazMyKS0xLAogICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19jdnR0cGhfZXB1MTYoX19tNTEyaSBfX1csIF9fbW1hc2szMiBfX1UsIF9fbTUxMmggX19BKSB7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3ZjdnR0cGgydXc1MTJfbWFzaygKICAgICAgKF9fdjMyaGYpX19BLCAoX192MzJodSlfX1csIChfX21tYXNrMzIpX19VLCBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfY3Z0dHBoX2VwdTE2KF9fbW1hc2szMiBfX1UsIF9fbTUxMmggX19BKSB7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3ZjdnR0cGgydXc1MTJfbWFzaygKICAgICAgKF9fdjMyaGYpX19BLCAoX192MzJodSlfbW01MTJfc2V0emVyb19lcGkzMigpLCAoX19tbWFzazMyKV9fVSwKICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW01MTJfY3Z0X3JvdW5kZXB1MTZfcGgoQSwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTUxMmgpX19idWlsdGluX2lhMzJfdmN2dHV3MnBoNTEyX21hc2soKF9fdjMyaHUpKEEpLCAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGYpX21tNTEyX3VuZGVmaW5lZF9waCgpLCAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2szMikoLTEpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX2N2dF9yb3VuZGVwdTE2X3BoKFcsIFUsIEEsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tNTEyaClfX2J1aWx0aW5faWEzMl92Y3Z0dXcycGg1MTJfbWFzaygoX192MzJodSkoQSksIChfX3YzMmhmKShXKSwgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazMyKShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfY3Z0X3JvdW5kZXB1MTZfcGgoVSwgQSwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTUxMmgpX19idWlsdGluX2lhMzJfdmN2dHV3MnBoNTEyX21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjMyaHUpKEEpLCAoX192MzJoZilfbW01MTJfc2V0emVyb19waCgpLCAoX19tbWFzazMyKShVKSwgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2N2dGVwdTE2X3BoKF9fbTUxMmkgX19BKSB7CiAgcmV0dXJuIChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3ZjdnR1dzJwaDUxMl9tYXNrKAogICAgICAoX192MzJodSlfX0EsIChfX3YzMmhmKV9tbTUxMl9zZXR6ZXJvX3BoKCksIChfX21tYXNrMzIpLTEsCiAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2N2dGVwdTE2X3BoKF9fbTUxMmggX19XLCBfX21tYXNrMzIgX19VLCBfX201MTJpIF9fQSkgewogIHJldHVybiAoX19tNTEyaClfX2J1aWx0aW5faWEzMl92Y3Z0dXcycGg1MTJfbWFzaygKICAgICAgKF9fdjMyaHUpX19BLCAoX192MzJoZilfX1csIChfX21tYXNrMzIpX19VLCBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJoIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfY3Z0ZXB1MTZfcGgoX19tbWFzazMyIF9fVSwgX19tNTEyaSBfX0EpIHsKICByZXR1cm4gKF9fbTUxMmgpX19idWlsdGluX2lhMzJfdmN2dHV3MnBoNTEyX21hc2soCiAgICAgIChfX3YzMmh1KV9fQSwgKF9fdjMyaGYpX21tNTEyX3NldHplcm9fcGgoKSwgKF9fbW1hc2szMilfX1UsCiAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCiNkZWZpbmUgX21tNTEyX2N2dF9yb3VuZHBoX2VwaTMyKEEsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3ZjdnRwaDJkcTUxMl9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3YxNmhmKShBKSwgKF9fdjE2c2kpX21tNTEyX3VuZGVmaW5lZF9lcGkzMigpLCAoX19tbWFzazE2KSgtMSksICAgICAgICBcCiAgICAgIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfY3Z0X3JvdW5kcGhfZXBpMzIoVywgVSwgQSwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3ZjdnRwaDJkcTUxMl9tYXNrKChfX3YxNmhmKShBKSwgKF9fdjE2c2kpKFcpLCAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpKFUpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9jdnRfcm91bmRwaF9lcGkzMihVLCBBLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl92Y3Z0cGgyZHE1MTJfbWFzaygoX192MTZoZikoQSksICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfc2V0emVyb19lcGkzMigpLCAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KShVKSwgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2N2dHBoX2VwaTMyKF9fbTI1NmggX19BKSB7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3ZjdnRwaDJkcTUxMl9tYXNrKAogICAgICAoX192MTZoZilfX0EsIChfX3YxNnNpKV9tbTUxMl9zZXR6ZXJvX2VwaTMyKCksIChfX21tYXNrMTYpLTEsCiAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2N2dHBoX2VwaTMyKF9fbTUxMmkgX19XLCBfX21tYXNrMTYgX19VLCBfX20yNTZoIF9fQSkgewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl92Y3Z0cGgyZHE1MTJfbWFzaygKICAgICAgKF9fdjE2aGYpX19BLCAoX192MTZzaSlfX1csIChfX21tYXNrMTYpX19VLCBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfY3Z0cGhfZXBpMzIoX19tbWFzazE2IF9fVSwgX19tMjU2aCBfX0EpIHsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfdmN2dHBoMmRxNTEyX21hc2soCiAgICAgIChfX3YxNmhmKV9fQSwgKF9fdjE2c2kpX21tNTEyX3NldHplcm9fZXBpMzIoKSwgKF9fbW1hc2sxNilfX1UsCiAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCiNkZWZpbmUgX21tNTEyX2N2dF9yb3VuZHBoX2VwdTMyKEEsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3ZjdnRwaDJ1ZHE1MTJfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3YxNmhmKShBKSwgKF9fdjE2c3UpX21tNTEyX3VuZGVmaW5lZF9lcGkzMigpLCAoX19tbWFzazE2KSgtMSksICAgICAgICBcCiAgICAgIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfY3Z0X3JvdW5kcGhfZXB1MzIoVywgVSwgQSwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3ZjdnRwaDJ1ZHE1MTJfbWFzaygoX192MTZoZikoQSksIChfX3YxNnN1KShXKSwgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfY3Z0X3JvdW5kcGhfZXB1MzIoVSwgQSwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfdmN2dHBoMnVkcTUxMl9tYXNrKChfX3YxNmhmKShBKSwgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnN1KV9tbTUxMl9zZXR6ZXJvX2VwaTMyKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpKFUpLCAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfY3Z0cGhfZXB1MzIoX19tMjU2aCBfX0EpIHsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfdmN2dHBoMnVkcTUxMl9tYXNrKAogICAgICAoX192MTZoZilfX0EsIChfX3YxNnN1KV9tbTUxMl9zZXR6ZXJvX2VwaTMyKCksIChfX21tYXNrMTYpLTEsCiAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2N2dHBoX2VwdTMyKF9fbTUxMmkgX19XLCBfX21tYXNrMTYgX19VLCBfX20yNTZoIF9fQSkgewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl92Y3Z0cGgydWRxNTEyX21hc2soCiAgICAgIChfX3YxNmhmKV9fQSwgKF9fdjE2c3UpX19XLCAoX19tbWFzazE2KV9fVSwgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2N2dHBoX2VwdTMyKF9fbW1hc2sxNiBfX1UsIF9fbTI1NmggX19BKSB7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3ZjdnRwaDJ1ZHE1MTJfbWFzaygKICAgICAgKF9fdjE2aGYpX19BLCAoX192MTZzdSlfbW01MTJfc2V0emVyb19lcGkzMigpLCAoX19tbWFzazE2KV9fVSwKICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW01MTJfY3Z0X3JvdW5kZXBpMzJfcGgoQSwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTI1NmgpX19idWlsdGluX2lhMzJfdmN2dGRxMnBoNTEyX21hc2soKF9fdjE2c2kpKEEpLCAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGYpX21tMjU2X3VuZGVmaW5lZF9waCgpLCAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikoLTEpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX2N2dF9yb3VuZGVwaTMyX3BoKFcsIFUsIEEsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tMjU2aClfX2J1aWx0aW5faWEzMl92Y3Z0ZHEycGg1MTJfbWFzaygoX192MTZzaSkoQSksIChfX3YxNmhmKShXKSwgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfY3Z0X3JvdW5kZXBpMzJfcGgoVSwgQSwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTI1NmgpX19idWlsdGluX2lhMzJfdmN2dGRxMnBoNTEyX21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjE2c2kpKEEpLCAoX192MTZoZilfbW0yNTZfc2V0emVyb19waCgpLCAoX19tbWFzazE2KShVKSwgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2N2dGVwaTMyX3BoKF9fbTUxMmkgX19BKSB7CiAgcmV0dXJuIChfX20yNTZoKV9fYnVpbHRpbl9pYTMyX3ZjdnRkcTJwaDUxMl9tYXNrKAogICAgICAoX192MTZzaSlfX0EsIChfX3YxNmhmKV9tbTI1Nl9zZXR6ZXJvX3BoKCksIChfX21tYXNrMTYpLTEsCiAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2N2dGVwaTMyX3BoKF9fbTI1NmggX19XLCBfX21tYXNrMTYgX19VLCBfX201MTJpIF9fQSkgewogIHJldHVybiAoX19tMjU2aClfX2J1aWx0aW5faWEzMl92Y3Z0ZHEycGg1MTJfbWFzaygKICAgICAgKF9fdjE2c2kpX19BLCAoX192MTZoZilfX1csIChfX21tYXNrMTYpX19VLCBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZoIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfY3Z0ZXBpMzJfcGgoX19tbWFzazE2IF9fVSwgX19tNTEyaSBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmgpX19idWlsdGluX2lhMzJfdmN2dGRxMnBoNTEyX21hc2soCiAgICAgIChfX3YxNnNpKV9fQSwgKF9fdjE2aGYpX21tMjU2X3NldHplcm9fcGgoKSwgKF9fbW1hc2sxNilfX1UsCiAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCiNkZWZpbmUgX21tNTEyX2N2dF9yb3VuZGVwdTMyX3BoKEEsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX20yNTZoKV9fYnVpbHRpbl9pYTMyX3ZjdnR1ZHEycGg1MTJfbWFzaygoX192MTZzdSkoQSksICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoZilfbW0yNTZfdW5kZWZpbmVkX3BoKCksICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KSgtMSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfY3Z0X3JvdW5kZXB1MzJfcGgoVywgVSwgQSwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX20yNTZoKV9fYnVpbHRpbl9pYTMyX3ZjdnR1ZHEycGg1MTJfbWFzaygoX192MTZzdSkoQSksIChfX3YxNmhmKShXKSwgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfY3Z0X3JvdW5kZXB1MzJfcGgoVSwgQSwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTI1NmgpX19idWlsdGluX2lhMzJfdmN2dHVkcTJwaDUxMl9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjE2c3UpKEEpLCAoX192MTZoZilfbW0yNTZfc2V0emVyb19waCgpLCAoX19tbWFzazE2KShVKSwgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2N2dGVwdTMyX3BoKF9fbTUxMmkgX19BKSB7CiAgcmV0dXJuIChfX20yNTZoKV9fYnVpbHRpbl9pYTMyX3ZjdnR1ZHEycGg1MTJfbWFzaygKICAgICAgKF9fdjE2c3UpX19BLCAoX192MTZoZilfbW0yNTZfc2V0emVyb19waCgpLCAoX19tbWFzazE2KS0xLAogICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZoIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19jdnRlcHUzMl9waChfX20yNTZoIF9fVywgX19tbWFzazE2IF9fVSwgX19tNTEyaSBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmgpX19idWlsdGluX2lhMzJfdmN2dHVkcTJwaDUxMl9tYXNrKAogICAgICAoX192MTZzdSlfX0EsIChfX3YxNmhmKV9fVywgKF9fbW1hc2sxNilfX1UsIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9jdnRlcHUzMl9waChfX21tYXNrMTYgX19VLCBfX201MTJpIF9fQSkgewogIHJldHVybiAoX19tMjU2aClfX2J1aWx0aW5faWEzMl92Y3Z0dWRxMnBoNTEyX21hc2soCiAgICAgIChfX3YxNnN1KV9fQSwgKF9fdjE2aGYpX21tMjU2X3NldHplcm9fcGgoKSwgKF9fbW1hc2sxNilfX1UsCiAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCiNkZWZpbmUgX21tNTEyX2N2dHRfcm91bmRwaF9lcGkzMihBLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3ZjdnR0cGgyZHE1MTJfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3YxNmhmKShBKSwgKF9fdjE2c2kpX21tNTEyX3VuZGVmaW5lZF9lcGkzMigpLCAoX19tbWFzazE2KSgtMSksICAgICAgICBcCiAgICAgIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfY3Z0dF9yb3VuZHBoX2VwaTMyKFcsIFUsIEEsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3ZjdnR0cGgyZHE1MTJfbWFzaygoX192MTZoZikoQSksIChfX3YxNnNpKShXKSwgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfY3Z0dF9yb3VuZHBoX2VwaTMyKFUsIEEsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfdmN2dHRwaDJkcTUxMl9tYXNrKChfX3YxNmhmKShBKSwgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9zZXR6ZXJvX2VwaTMyKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpKFUpLCAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfY3Z0dHBoX2VwaTMyKF9fbTI1NmggX19BKSB7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3ZjdnR0cGgyZHE1MTJfbWFzaygKICAgICAgKF9fdjE2aGYpX19BLCAoX192MTZzaSlfbW01MTJfc2V0emVyb19lcGkzMigpLCAoX19tbWFzazE2KS0xLAogICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19jdnR0cGhfZXBpMzIoX19tNTEyaSBfX1csIF9fbW1hc2sxNiBfX1UsIF9fbTI1NmggX19BKSB7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3ZjdnR0cGgyZHE1MTJfbWFzaygKICAgICAgKF9fdjE2aGYpX19BLCAoX192MTZzaSlfX1csIChfX21tYXNrMTYpX19VLCBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfY3Z0dHBoX2VwaTMyKF9fbW1hc2sxNiBfX1UsIF9fbTI1NmggX19BKSB7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3ZjdnR0cGgyZHE1MTJfbWFzaygKICAgICAgKF9fdjE2aGYpX19BLCAoX192MTZzaSlfbW01MTJfc2V0emVyb19lcGkzMigpLCAoX19tbWFzazE2KV9fVSwKICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW01MTJfY3Z0dF9yb3VuZHBoX2VwdTMyKEEsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfdmN2dHRwaDJ1ZHE1MTJfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjE2aGYpKEEpLCAoX192MTZzdSlfbW01MTJfdW5kZWZpbmVkX2VwaTMyKCksIChfX21tYXNrMTYpKC0xKSwgICAgICAgIFwKICAgICAgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza19jdnR0X3JvdW5kcGhfZXB1MzIoVywgVSwgQSwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfdmN2dHRwaDJ1ZHE1MTJfbWFzaygoX192MTZoZikoQSksIChfX3YxNnN1KShXKSwgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfY3Z0dF9yb3VuZHBoX2VwdTMyKFUsIEEsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfdmN2dHRwaDJ1ZHE1MTJfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjE2aGYpKEEpLCAoX192MTZzdSlfbW01MTJfc2V0emVyb19lcGkzMigpLCAoX19tbWFzazE2KShVKSwgICAgICAgICAgIFwKICAgICAgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2N2dHRwaF9lcHUzMihfX20yNTZoIF9fQSkgewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl92Y3Z0dHBoMnVkcTUxMl9tYXNrKAogICAgICAoX192MTZoZilfX0EsIChfX3YxNnN1KV9tbTUxMl9zZXR6ZXJvX2VwaTMyKCksIChfX21tYXNrMTYpLTEsCiAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2N2dHRwaF9lcHUzMihfX201MTJpIF9fVywgX19tbWFzazE2IF9fVSwgX19tMjU2aCBfX0EpIHsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfdmN2dHRwaDJ1ZHE1MTJfbWFzaygKICAgICAgKF9fdjE2aGYpX19BLCAoX192MTZzdSlfX1csIChfX21tYXNrMTYpX19VLCBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfY3Z0dHBoX2VwdTMyKF9fbW1hc2sxNiBfX1UsIF9fbTI1NmggX19BKSB7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3ZjdnR0cGgydWRxNTEyX21hc2soCiAgICAgIChfX3YxNmhmKV9fQSwgKF9fdjE2c3UpX21tNTEyX3NldHplcm9fZXBpMzIoKSwgKF9fbW1hc2sxNilfX1UsCiAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCiNkZWZpbmUgX21tNTEyX2N2dF9yb3VuZGVwaTY0X3BoKEEsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZjdnRxcTJwaDUxMl9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3Y4ZGkpKEEpLCAoX192OGhmKV9tbV91bmRlZmluZWRfcGgoKSwgKF9fbW1hc2s4KSgtMSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfY3Z0X3JvdW5kZXBpNjRfcGgoVywgVSwgQSwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZjdnRxcTJwaDUxMl9tYXNrKChfX3Y4ZGkpKEEpLCAoX192OGhmKShXKSwgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X2N2dF9yb3VuZGVwaTY0X3BoKFUsIEEsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZjdnRxcTJwaDUxMl9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3Y4ZGkpKEEpLCAoX192OGhmKV9tbV9zZXR6ZXJvX3BoKCksIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9jdnRlcGk2NF9waChfX201MTJpIF9fQSkgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl92Y3Z0cXEycGg1MTJfbWFzaygKICAgICAgKF9fdjhkaSlfX0EsIChfX3Y4aGYpX21tX3NldHplcm9fcGgoKSwgKF9fbW1hc2s4KS0xLAogICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19jdnRlcGk2NF9waChfX20xMjhoIF9fVywgX19tbWFzazggX19VLCBfX201MTJpIF9fQSkgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl92Y3Z0cXEycGg1MTJfbWFzaygKICAgICAgKF9fdjhkaSlfX0EsIChfX3Y4aGYpX19XLCAoX19tbWFzazgpX19VLCBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfY3Z0ZXBpNjRfcGgoX19tbWFzazggX19VLCBfX201MTJpIF9fQSkgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl92Y3Z0cXEycGg1MTJfbWFzaygKICAgICAgKF9fdjhkaSlfX0EsIChfX3Y4aGYpX21tX3NldHplcm9fcGgoKSwgKF9fbW1hc2s4KV9fVSwKICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW01MTJfY3Z0X3JvdW5kcGhfZXBpNjQoQSwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfdmN2dHBoMnFxNTEyX21hc2soKF9fdjhoZikoQSksICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfdW5kZWZpbmVkX2VwaTMyKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSgtMSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfY3Z0X3JvdW5kcGhfZXBpNjQoVywgVSwgQSwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3ZjdnRwaDJxcTUxMl9tYXNrKChfX3Y4aGYpKEEpLCAoX192OGRpKShXKSwgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X2N2dF9yb3VuZHBoX2VwaTY0KFUsIEEsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3ZjdnRwaDJxcTUxMl9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3Y4aGYpKEEpLCAoX192OGRpKV9tbTUxMl9zZXR6ZXJvX2VwaTMyKCksIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9jdnRwaF9lcGk2NChfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl92Y3Z0cGgycXE1MTJfbWFzaygKICAgICAgKF9fdjhoZilfX0EsIChfX3Y4ZGkpX21tNTEyX3NldHplcm9fZXBpMzIoKSwgKF9fbW1hc2s4KS0xLAogICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19jdnRwaF9lcGk2NChfX201MTJpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl92Y3Z0cGgycXE1MTJfbWFzaygKICAgICAgKF9fdjhoZilfX0EsIChfX3Y4ZGkpX19XLCAoX19tbWFzazgpX19VLCBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfY3Z0cGhfZXBpNjQoX19tbWFzazggX19VLCBfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl92Y3Z0cGgycXE1MTJfbWFzaygKICAgICAgKF9fdjhoZilfX0EsIChfX3Y4ZGkpX21tNTEyX3NldHplcm9fZXBpMzIoKSwgKF9fbW1hc2s4KV9fVSwKICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW01MTJfY3Z0X3JvdW5kZXB1NjRfcGgoQSwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTEyOGgpX19idWlsdGluX2lhMzJfdmN2dHVxcTJwaDUxMl9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjhkdSkoQSksIChfX3Y4aGYpX21tX3VuZGVmaW5lZF9waCgpLCAoX19tbWFzazgpKC0xKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza19jdnRfcm91bmRlcHU2NF9waChXLCBVLCBBLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTEyOGgpX19idWlsdGluX2lhMzJfdmN2dHVxcTJwaDUxMl9tYXNrKChfX3Y4ZHUpKEEpLCAoX192OGhmKShXKSwgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X2N2dF9yb3VuZGVwdTY0X3BoKFUsIEEsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZjdnR1cXEycGg1MTJfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3Y4ZHUpKEEpLCAoX192OGhmKV9tbV9zZXR6ZXJvX3BoKCksIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9jdnRlcHU2NF9waChfX201MTJpIF9fQSkgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl92Y3Z0dXFxMnBoNTEyX21hc2soCiAgICAgIChfX3Y4ZHUpX19BLCAoX192OGhmKV9tbV9zZXR6ZXJvX3BoKCksIChfX21tYXNrOCktMSwKICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfY3Z0ZXB1NjRfcGgoX19tMTI4aCBfX1csIF9fbW1hc2s4IF9fVSwgX19tNTEyaSBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfdmN2dHVxcTJwaDUxMl9tYXNrKAogICAgICAoX192OGR1KV9fQSwgKF9fdjhoZilfX1csIChfX21tYXNrOClfX1UsIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9jdnRlcHU2NF9waChfX21tYXNrOCBfX1UsIF9fbTUxMmkgX19BKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZjdnR1cXEycGg1MTJfbWFzaygKICAgICAgKF9fdjhkdSlfX0EsIChfX3Y4aGYpX21tX3NldHplcm9fcGgoKSwgKF9fbW1hc2s4KV9fVSwKICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW01MTJfY3Z0X3JvdW5kcGhfZXB1NjQoQSwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfdmN2dHBoMnVxcTUxMl9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjhoZikoQSksIChfX3Y4ZHUpX21tNTEyX3VuZGVmaW5lZF9lcGkzMigpLCAoX19tbWFzazgpKC0xKSwgICAgICAgICAgIFwKICAgICAgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza19jdnRfcm91bmRwaF9lcHU2NChXLCBVLCBBLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfdmN2dHBoMnVxcTUxMl9tYXNrKChfX3Y4aGYpKEEpLCAoX192OGR1KShXKSwgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X2N2dF9yb3VuZHBoX2VwdTY0KFUsIEEsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3ZjdnRwaDJ1cXE1MTJfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3Y4aGYpKEEpLCAoX192OGR1KV9tbTUxMl9zZXR6ZXJvX2VwaTMyKCksIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9jdnRwaF9lcHU2NChfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl92Y3Z0cGgydXFxNTEyX21hc2soCiAgICAgIChfX3Y4aGYpX19BLCAoX192OGR1KV9tbTUxMl9zZXR6ZXJvX2VwaTMyKCksIChfX21tYXNrOCktMSwKICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfY3Z0cGhfZXB1NjQoX19tNTEyaSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aCBfX0EpIHsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfdmN2dHBoMnVxcTUxMl9tYXNrKAogICAgICAoX192OGhmKV9fQSwgKF9fdjhkdSlfX1csIChfX21tYXNrOClfX1UsIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9jdnRwaF9lcHU2NChfX21tYXNrOCBfX1UsIF9fbTEyOGggX19BKSB7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3ZjdnRwaDJ1cXE1MTJfbWFzaygKICAgICAgKF9fdjhoZilfX0EsIChfX3Y4ZHUpX21tNTEyX3NldHplcm9fZXBpMzIoKSwgKF9fbW1hc2s4KV9fVSwKICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW01MTJfY3Z0dF9yb3VuZHBoX2VwaTY0KEEsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfdmN2dHRwaDJxcTUxMl9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjhoZikoQSksIChfX3Y4ZGkpX21tNTEyX3VuZGVmaW5lZF9lcGkzMigpLCAoX19tbWFzazgpKC0xKSwgICAgICAgICAgIFwKICAgICAgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza19jdnR0X3JvdW5kcGhfZXBpNjQoVywgVSwgQSwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfdmN2dHRwaDJxcTUxMl9tYXNrKChfX3Y4aGYpKEEpLCAoX192OGRpKShXKSwgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X2N2dHRfcm91bmRwaF9lcGk2NChVLCBBLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3ZjdnR0cGgycXE1MTJfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3Y4aGYpKEEpLCAoX192OGRpKV9tbTUxMl9zZXR6ZXJvX2VwaTMyKCksIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9jdnR0cGhfZXBpNjQoX19tMTI4aCBfX0EpIHsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfdmN2dHRwaDJxcTUxMl9tYXNrKAogICAgICAoX192OGhmKV9fQSwgKF9fdjhkaSlfbW01MTJfc2V0emVyb19lcGkzMigpLCAoX19tbWFzazgpLTEsCiAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2N2dHRwaF9lcGk2NChfX201MTJpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhoIF9fQSkgewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl92Y3Z0dHBoMnFxNTEyX21hc2soCiAgICAgIChfX3Y4aGYpX19BLCAoX192OGRpKV9fVywgKF9fbW1hc2s4KV9fVSwgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2N2dHRwaF9lcGk2NChfX21tYXNrOCBfX1UsIF9fbTEyOGggX19BKSB7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3ZjdnR0cGgycXE1MTJfbWFzaygKICAgICAgKF9fdjhoZilfX0EsIChfX3Y4ZGkpX21tNTEyX3NldHplcm9fZXBpMzIoKSwgKF9fbW1hc2s4KV9fVSwKICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW01MTJfY3Z0dF9yb3VuZHBoX2VwdTY0KEEsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfdmN2dHRwaDJ1cXE1MTJfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjhoZikoQSksIChfX3Y4ZHUpX21tNTEyX3VuZGVmaW5lZF9lcGkzMigpLCAoX19tbWFzazgpKC0xKSwgICAgICAgICAgIFwKICAgICAgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza19jdnR0X3JvdW5kcGhfZXB1NjQoVywgVSwgQSwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfdmN2dHRwaDJ1cXE1MTJfbWFzaygoX192OGhmKShBKSwgKF9fdjhkdSkoVyksICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9jdnR0X3JvdW5kcGhfZXB1NjQoVSwgQSwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl92Y3Z0dHBoMnVxcTUxMl9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192OGhmKShBKSwgKF9fdjhkdSlfbW01MTJfc2V0emVyb19lcGkzMigpLCAoX19tbWFzazgpKFUpLCAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfY3Z0dHBoX2VwdTY0KF9fbTEyOGggX19BKSB7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3ZjdnR0cGgydXFxNTEyX21hc2soCiAgICAgIChfX3Y4aGYpX19BLCAoX192OGR1KV9tbTUxMl9zZXR6ZXJvX2VwaTMyKCksIChfX21tYXNrOCktMSwKICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfY3Z0dHBoX2VwdTY0KF9fbTUxMmkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGggX19BKSB7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3ZjdnR0cGgydXFxNTEyX21hc2soCiAgICAgIChfX3Y4aGYpX19BLCAoX192OGR1KV9fVywgKF9fbW1hc2s4KV9fVSwgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2N2dHRwaF9lcHU2NChfX21tYXNrOCBfX1UsIF9fbTEyOGggX19BKSB7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3ZjdnR0cGgydXFxNTEyX21hc2soCiAgICAgIChfX3Y4aGYpX19BLCAoX192OGR1KV9tbTUxMl9zZXR6ZXJvX2VwaTMyKCksIChfX21tYXNrOClfX1UsCiAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCiNkZWZpbmUgX21tX2N2dF9yb3VuZHNoX2kzMihBLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChpbnQpX19idWlsdGluX2lhMzJfdmN2dHNoMnNpMzIoKF9fdjhoZikoQSksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tX2N2dHNoX2kzMihfX20xMjhoIF9fQSkgewogIHJldHVybiAoaW50KV9fYnVpbHRpbl9pYTMyX3ZjdnRzaDJzaTMyKChfX3Y4aGYpX19BLCBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgojZGVmaW5lIF9tbV9jdnRfcm91bmRzaF91MzIoQSwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgodW5zaWduZWQgaW50KV9fYnVpbHRpbl9pYTMyX3ZjdnRzaDJ1c2kzMigoX192OGhmKShBKSwgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgaW50IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fY3Z0c2hfdTMyKF9fbTEyOGggX19BKSB7CiAgcmV0dXJuICh1bnNpZ25lZCBpbnQpX19idWlsdGluX2lhMzJfdmN2dHNoMnVzaTMyKChfX3Y4aGYpX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgojaWZkZWYgX194ODZfNjRfXwojZGVmaW5lIF9tbV9jdnRfcm91bmRzaF9pNjQoQSwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgobG9uZyBsb25nKV9fYnVpbHRpbl9pYTMyX3ZjdnRzaDJzaTY0KChfX3Y4aGYpKEEpLCAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBsb25nIGxvbmcgX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9jdnRzaF9pNjQoX19tMTI4aCBfX0EpIHsKICByZXR1cm4gKGxvbmcgbG9uZylfX2J1aWx0aW5faWEzMl92Y3Z0c2gyc2k2NCgoX192OGhmKV9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgojZGVmaW5lIF9tbV9jdnRfcm91bmRzaF91NjQoQSwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgodW5zaWduZWQgbG9uZyBsb25nKV9fYnVpbHRpbl9pYTMyX3ZjdnRzaDJ1c2k2NCgoX192OGhmKShBKSwgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgbG9uZyBsb25nIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fY3Z0c2hfdTY0KF9fbTEyOGggX19BKSB7CiAgcmV0dXJuICh1bnNpZ25lZCBsb25nIGxvbmcpX19idWlsdGluX2lhMzJfdmN2dHNoMnVzaTY0KAogICAgICAoX192OGhmKV9fQSwgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQojZW5kaWYgLy8gX194ODZfNjRfXwoKI2RlZmluZSBfbW1fY3Z0X3JvdW5kdTMyX3NoKEEsIEIsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTEyOGgpX19idWlsdGluX2lhMzJfdmN2dHVzaTJzaCgoX192OGhmKShBKSwgKHVuc2lnbmVkIGludCkoQiksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9jdnR1MzJfc2goX19tMTI4aCBfX0EsIHVuc2lnbmVkIGludCBfX0IpIHsKICBfX0FbMF0gPSBfX0I7CiAgcmV0dXJuIF9fQTsKfQoKI2lmZGVmIF9feDg2XzY0X18KI2RlZmluZSBfbW1fY3Z0X3JvdW5kdTY0X3NoKEEsIEIsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTEyOGgpX19idWlsdGluX2lhMzJfdmN2dHVzaTY0MnNoKChfX3Y4aGYpKEEpLCAodW5zaWduZWQgbG9uZyBsb25nKShCKSwgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9jdnR1NjRfc2goX19tMTI4aCBfX0EsIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0IpIHsKICBfX0FbMF0gPSBfX0I7CiAgcmV0dXJuIF9fQTsKfQojZW5kaWYKCiNkZWZpbmUgX21tX2N2dF9yb3VuZGkzMl9zaChBLCBCLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZjdnRzaTJzaCgoX192OGhmKShBKSwgKGludCkoQiksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9jdnRpMzJfc2goX19tMTI4aCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fQikgewogIF9fQVswXSA9IF9fQjsKICByZXR1cm4gX19BOwp9CgojaWZkZWYgX194ODZfNjRfXwojZGVmaW5lIF9tbV9jdnRfcm91bmRpNjRfc2goQSwgQiwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tMTI4aClfX2J1aWx0aW5faWEzMl92Y3Z0c2k2NDJzaCgoX192OGhmKShBKSwgKGxvbmcgbG9uZykoQiksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9jdnRpNjRfc2goX19tMTI4aCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIF9fQikgewogIF9fQVswXSA9IF9fQjsKICByZXR1cm4gX19BOwp9CiNlbmRpZgoKI2RlZmluZSBfbW1fY3Z0dF9yb3VuZHNoX2kzMihBLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKGludClfX2J1aWx0aW5faWEzMl92Y3Z0dHNoMnNpMzIoKF9fdjhoZikoQSksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tX2N2dHRzaF9pMzIoX19tMTI4aCBfX0EpIHsKICByZXR1cm4gKGludClfX2J1aWx0aW5faWEzMl92Y3Z0dHNoMnNpMzIoKF9fdjhoZilfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCiNpZmRlZiBfX3g4Nl82NF9fCiNkZWZpbmUgX21tX2N2dHRfcm91bmRzaF9pNjQoQSwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChsb25nIGxvbmcpX19idWlsdGluX2lhMzJfdmN2dHRzaDJzaTY0KChfX3Y4aGYpKEEpLCAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBsb25nIGxvbmcgX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9jdnR0c2hfaTY0KF9fbTEyOGggX19BKSB7CiAgcmV0dXJuIChsb25nIGxvbmcpX19idWlsdGluX2lhMzJfdmN2dHRzaDJzaTY0KChfX3Y4aGYpX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CiNlbmRpZgoKI2RlZmluZSBfbW1fY3Z0dF9yb3VuZHNoX3UzMihBLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKHVuc2lnbmVkIGludClfX2J1aWx0aW5faWEzMl92Y3Z0dHNoMnVzaTMyKChfX3Y4aGYpKEEpLCAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9jdnR0c2hfdTMyKF9fbTEyOGggX19BKSB7CiAgcmV0dXJuICh1bnNpZ25lZCBpbnQpX19idWlsdGluX2lhMzJfdmN2dHRzaDJ1c2kzMigoX192OGhmKV9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCiNpZmRlZiBfX3g4Nl82NF9fCiNkZWZpbmUgX21tX2N2dHRfcm91bmRzaF91NjQoQSwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKCh1bnNpZ25lZCBsb25nIGxvbmcpX19idWlsdGluX2lhMzJfdmN2dHRzaDJ1c2k2NCgoX192OGhmKShBKSwgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgbG9uZyBsb25nIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fY3Z0dHNoX3U2NChfX20xMjhoIF9fQSkgewogIHJldHVybiAodW5zaWduZWQgbG9uZyBsb25nKV9fYnVpbHRpbl9pYTMyX3ZjdnR0c2gydXNpNjQoCiAgICAgIChfX3Y4aGYpX19BLCBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CiNlbmRpZgoKI2RlZmluZSBfbW01MTJfY3Z0eF9yb3VuZHBoX3BzKEEsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTUxMilfX2J1aWx0aW5faWEzMl92Y3Z0cGgycHN4NTEyX21hc2soKF9fdjE2aGYpKEEpLCAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX21tNTEyX3VuZGVmaW5lZF9wcygpLCAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikoLTEpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX2N2dHhfcm91bmRwaF9wcyhXLCBVLCBBLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3ZjdnRwaDJwc3g1MTJfbWFzaygoX192MTZoZikoQSksIChfX3YxNnNmKShXKSwgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfY3Z0eF9yb3VuZHBoX3BzKFUsIEEsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTUxMilfX2J1aWx0aW5faWEzMl92Y3Z0cGgycHN4NTEyX21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjE2aGYpKEEpLCAoX192MTZzZilfbW01MTJfc2V0emVyb19wcygpLCAoX19tbWFzazE2KShVKSwgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMiBfbW01MTJfY3Z0eHBoX3BzKF9fbTI1NmggX19BKSB7CiAgcmV0dXJuIChfX201MTIpX19idWlsdGluX2lhMzJfdmN2dHBoMnBzeDUxMl9tYXNrKAogICAgICAoX192MTZoZilfX0EsIChfX3YxNnNmKV9tbTUxMl9zZXR6ZXJvX3BzKCksIChfX21tYXNrMTYpLTEsCiAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfY3Z0eHBoX3BzKF9fbTUxMiBfX1csIF9fbW1hc2sxNiBfX1UsIF9fbTI1NmggX19BKSB7CiAgcmV0dXJuIChfX201MTIpX19idWlsdGluX2lhMzJfdmN2dHBoMnBzeDUxMl9tYXNrKAogICAgICAoX192MTZoZilfX0EsIChfX3YxNnNmKV9fVywgKF9fbW1hc2sxNilfX1UsIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2N2dHhwaF9wcyhfX21tYXNrMTYgX19VLCBfX20yNTZoIF9fQSkgewogIHJldHVybiAoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3ZjdnRwaDJwc3g1MTJfbWFzaygKICAgICAgKF9fdjE2aGYpX19BLCAoX192MTZzZilfbW01MTJfc2V0emVyb19wcygpLCAoX19tbWFzazE2KV9fVSwKICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW01MTJfY3Z0eF9yb3VuZHBzX3BoKEEsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTI1NmgpX19idWlsdGluX2lhMzJfdmN2dHBzMnBoeDUxMl9tYXNrKChfX3YxNnNmKShBKSwgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhmKV9tbTI1Nl91bmRlZmluZWRfcGgoKSwgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpKC0xKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza19jdnR4X3JvdW5kcHNfcGgoVywgVSwgQSwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTI1NmgpX19idWlsdGluX2lhMzJfdmN2dHBzMnBoeDUxMl9tYXNrKChfX3YxNnNmKShBKSwgKF9fdjE2aGYpKFcpLCAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpKFUpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9jdnR4X3JvdW5kcHNfcGgoVSwgQSwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tMjU2aClfX2J1aWx0aW5faWEzMl92Y3Z0cHMycGh4NTEyX21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192MTZzZikoQSksIChfX3YxNmhmKV9tbTI1Nl9zZXR6ZXJvX3BoKCksIChfX21tYXNrMTYpKFUpLCAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZoIF9fREVGQVVMVF9GTl9BVFRSUzUxMiBfbW01MTJfY3Z0eHBzX3BoKF9fbTUxMiBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmgpX19idWlsdGluX2lhMzJfdmN2dHBzMnBoeDUxMl9tYXNrKAogICAgICAoX192MTZzZilfX0EsIChfX3YxNmhmKV9tbTI1Nl9zZXR6ZXJvX3BoKCksIChfX21tYXNrMTYpLTEsCiAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2N2dHhwc19waChfX20yNTZoIF9fVywgX19tbWFzazE2IF9fVSwgX19tNTEyIF9fQSkgewogIHJldHVybiAoX19tMjU2aClfX2J1aWx0aW5faWEzMl92Y3Z0cHMycGh4NTEyX21hc2soCiAgICAgIChfX3YxNnNmKV9fQSwgKF9fdjE2aGYpX19XLCAoX19tbWFzazE2KV9fVSwgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2N2dHhwc19waChfX21tYXNrMTYgX19VLCBfX201MTIgX19BKSB7CiAgcmV0dXJuIChfX20yNTZoKV9fYnVpbHRpbl9pYTMyX3ZjdnRwczJwaHg1MTJfbWFzaygKICAgICAgKF9fdjE2c2YpX19BLCAoX192MTZoZilfbW0yNTZfc2V0emVyb19waCgpLCAoX19tbWFzazE2KV9fVSwKICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW01MTJfZm1hZGRfcm91bmRfcGgoQSwgQiwgQywgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTUxMmgpX19idWlsdGluX2lhMzJfdmZtYWRkcGg1MTJfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjMyaGYpKF9fbTUxMmgpKEEpLCAoX192MzJoZikoX19tNTEyaCkoQiksIChfX3YzMmhmKShfX201MTJoKShDKSwgICAgIFwKICAgICAgKF9fbW1hc2szMiktMSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza19mbWFkZF9yb3VuZF9waChBLCBVLCBCLCBDLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTUxMmgpX19idWlsdGluX2lhMzJfdmZtYWRkcGg1MTJfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjMyaGYpKF9fbTUxMmgpKEEpLCAoX192MzJoZikoX19tNTEyaCkoQiksIChfX3YzMmhmKShfX201MTJoKShDKSwgICAgIFwKICAgICAgKF9fbW1hc2szMikoVSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2szX2ZtYWRkX3JvdW5kX3BoKEEsIEIsIEMsIFUsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBoNTEyX21hc2szKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3YzMmhmKShfX201MTJoKShBKSwgKF9fdjMyaGYpKF9fbTUxMmgpKEIpLCAoX192MzJoZikoX19tNTEyaCkoQyksICAgICBcCiAgICAgIChfX21tYXNrMzIpKFUpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9mbWFkZF9yb3VuZF9waChVLCBBLCBCLCBDLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tNTEyaClfX2J1aWx0aW5faWEzMl92Zm1hZGRwaDUxMl9tYXNreiggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192MzJoZikoX19tNTEyaCkoQSksIChfX3YzMmhmKShfX201MTJoKShCKSwgKF9fdjMyaGYpKF9fbTUxMmgpKEMpLCAgICAgXAogICAgICAoX19tbWFzazMyKShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfZm1zdWJfcm91bmRfcGgoQSwgQiwgQywgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTUxMmgpX19idWlsdGluX2lhMzJfdmZtYWRkcGg1MTJfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjMyaGYpKF9fbTUxMmgpKEEpLCAoX192MzJoZikoX19tNTEyaCkoQiksIC0oX192MzJoZikoX19tNTEyaCkoQyksICAgIFwKICAgICAgKF9fbW1hc2szMiktMSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza19mbXN1Yl9yb3VuZF9waChBLCBVLCBCLCBDLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTUxMmgpX19idWlsdGluX2lhMzJfdmZtYWRkcGg1MTJfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjMyaGYpKF9fbTUxMmgpKEEpLCAoX192MzJoZikoX19tNTEyaCkoQiksIC0oX192MzJoZikoX19tNTEyaCkoQyksICAgIFwKICAgICAgKF9fbW1hc2szMikoVSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X2Ztc3ViX3JvdW5kX3BoKFUsIEEsIEIsIEMsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBoNTEyX21hc2t6KCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3YzMmhmKShfX201MTJoKShBKSwgKF9fdjMyaGYpKF9fbTUxMmgpKEIpLCAtKF9fdjMyaGYpKF9fbTUxMmgpKEMpLCAgICBcCiAgICAgIChfX21tYXNrMzIpKFUpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9mbm1hZGRfcm91bmRfcGgoQSwgQiwgQywgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tNTEyaClfX2J1aWx0aW5faWEzMl92Zm1hZGRwaDUxMl9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192MzJoZikoX19tNTEyaCkoQSksIC0oX192MzJoZikoX19tNTEyaCkoQiksIChfX3YzMmhmKShfX201MTJoKShDKSwgICAgXAogICAgICAoX19tbWFzazMyKS0xLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrM19mbm1hZGRfcm91bmRfcGgoQSwgQiwgQywgVSwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tNTEyaClfX2J1aWx0aW5faWEzMl92Zm1hZGRwaDUxMl9tYXNrMyggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAtKF9fdjMyaGYpKF9fbTUxMmgpKEEpLCAoX192MzJoZikoX19tNTEyaCkoQiksIChfX3YzMmhmKShfX201MTJoKShDKSwgICAgXAogICAgICAoX19tbWFzazMyKShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfZm5tYWRkX3JvdW5kX3BoKFUsIEEsIEIsIEMsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTUxMmgpX19idWlsdGluX2lhMzJfdmZtYWRkcGg1MTJfbWFza3ooICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgLShfX3YzMmhmKShfX201MTJoKShBKSwgKF9fdjMyaGYpKF9fbTUxMmgpKEIpLCAoX192MzJoZikoX19tNTEyaCkoQyksICAgIFwKICAgICAgKF9fbW1hc2szMikoVSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX2ZubXN1Yl9yb3VuZF9waChBLCBCLCBDLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBoNTEyX21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3YzMmhmKShfX201MTJoKShBKSwgLShfX3YzMmhmKShfX201MTJoKShCKSwgLShfX3YzMmhmKShfX201MTJoKShDKSwgICBcCiAgICAgIChfX21tYXNrMzIpLTEsIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X2ZubXN1Yl9yb3VuZF9waChVLCBBLCBCLCBDLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBoNTEyX21hc2t6KCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIC0oX192MzJoZikoX19tNTEyaCkoQSksIChfX3YzMmhmKShfX201MTJoKShCKSwgLShfX3YzMmhmKShfX201MTJoKShDKSwgICBcCiAgICAgIChfX21tYXNrMzIpKFUpLCAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJoIF9fREVGQVVMVF9GTl9BVFRSUzUxMiBfbW01MTJfZm1hZGRfcGgoX19tNTEyaCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX201MTJoIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTUxMmggX19DKSB7CiAgcmV0dXJuIChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBoNTEyX21hc2soKF9fdjMyaGYpX19BLCAoX192MzJoZilfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGYpX19DLCAoX19tbWFzazMyKS0xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2ZtYWRkX3BoKF9fbTUxMmggX19BLCBfX21tYXNrMzIgX19VLCBfX201MTJoIF9fQiwgX19tNTEyaCBfX0MpIHsKICByZXR1cm4gKF9fbTUxMmgpX19idWlsdGluX2lhMzJfdmZtYWRkcGg1MTJfbWFzaygoX192MzJoZilfX0EsIChfX3YzMmhmKV9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoZilfX0MsIChfX21tYXNrMzIpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrM19mbWFkZF9waChfX201MTJoIF9fQSwgX19tNTEyaCBfX0IsIF9fbTUxMmggX19DLCBfX21tYXNrMzIgX19VKSB7CiAgcmV0dXJuIChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBoNTEyX21hc2szKChfX3YzMmhmKV9fQSwgKF9fdjMyaGYpX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoZilfX0MsIChfX21tYXNrMzIpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJoIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfZm1hZGRfcGgoX19tbWFzazMyIF9fVSwgX19tNTEyaCBfX0EsIF9fbTUxMmggX19CLCBfX201MTJoIF9fQykgewogIHJldHVybiAoX19tNTEyaClfX2J1aWx0aW5faWEzMl92Zm1hZGRwaDUxMl9tYXNreigoX192MzJoZilfX0EsIChfX3YzMmhmKV9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGYpX19DLCAoX19tbWFzazMyKV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIgX21tNTEyX2Ztc3ViX3BoKF9fbTUxMmggX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tNTEyaCBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX201MTJoIF9fQykgewogIHJldHVybiAoX19tNTEyaClfX2J1aWx0aW5faWEzMl92Zm1hZGRwaDUxMl9tYXNrKChfX3YzMmhmKV9fQSwgKF9fdjMyaGYpX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192MzJoZilfX0MsIChfX21tYXNrMzIpLTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfZm1zdWJfcGgoX19tNTEyaCBfX0EsIF9fbW1hc2szMiBfX1UsIF9fbTUxMmggX19CLCBfX201MTJoIF9fQykgewogIHJldHVybiAoX19tNTEyaClfX2J1aWx0aW5faWEzMl92Zm1hZGRwaDUxMl9tYXNrKChfX3YzMmhmKV9fQSwgKF9fdjMyaGYpX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192MzJoZilfX0MsIChfX21tYXNrMzIpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9mbXN1Yl9waChfX21tYXNrMzIgX19VLCBfX201MTJoIF9fQSwgX19tNTEyaCBfX0IsIF9fbTUxMmggX19DKSB7CiAgcmV0dXJuIChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBoNTEyX21hc2t6KAogICAgICAoX192MzJoZilfX0EsIChfX3YzMmhmKV9fQiwgLShfX3YzMmhmKV9fQywgKF9fbW1hc2szMilfX1UsCiAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyIF9tbTUxMl9mbm1hZGRfcGgoX19tNTEyaCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tNTEyaCBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tNTEyaCBfX0MpIHsKICByZXR1cm4gKF9fbTUxMmgpX19idWlsdGluX2lhMzJfdmZtYWRkcGg1MTJfbWFzaygoX192MzJoZilfX0EsIC0oX192MzJoZilfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGYpX19DLCAoX19tbWFzazMyKS0xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrM19mbm1hZGRfcGgoX19tNTEyaCBfX0EsIF9fbTUxMmggX19CLCBfX201MTJoIF9fQywgX19tbWFzazMyIF9fVSkgewogIHJldHVybiAoX19tNTEyaClfX2J1aWx0aW5faWEzMl92Zm1hZGRwaDUxMl9tYXNrMygtKF9fdjMyaGYpX19BLCAoX192MzJoZilfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhmKV9fQywgKF9fbW1hc2szMilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9mbm1hZGRfcGgoX19tbWFzazMyIF9fVSwgX19tNTEyaCBfX0EsIF9fbTUxMmggX19CLCBfX201MTJoIF9fQykgewogIHJldHVybiAoX19tNTEyaClfX2J1aWx0aW5faWEzMl92Zm1hZGRwaDUxMl9tYXNreigtKF9fdjMyaGYpX19BLCAoX192MzJoZilfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhmKV9fQywgKF9fbW1hc2szMilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyIF9tbTUxMl9mbm1zdWJfcGgoX19tNTEyaCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tNTEyaCBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tNTEyaCBfX0MpIHsKICByZXR1cm4gKF9fbTUxMmgpX19idWlsdGluX2lhMzJfdmZtYWRkcGg1MTJfbWFzaygoX192MzJoZilfX0EsIC0oX192MzJoZilfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3YzMmhmKV9fQywgKF9fbW1hc2szMiktMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJoIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfZm5tc3ViX3BoKF9fbW1hc2szMiBfX1UsIF9fbTUxMmggX19BLCBfX201MTJoIF9fQiwgX19tNTEyaCBfX0MpIHsKICByZXR1cm4gKF9fbTUxMmgpX19idWlsdGluX2lhMzJfdmZtYWRkcGg1MTJfbWFza3ooCiAgICAgIC0oX192MzJoZilfX0EsIChfX3YzMmhmKV9fQiwgLShfX3YzMmhmKV9fQywgKF9fbW1hc2szMilfX1UsCiAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCiNkZWZpbmUgX21tNTEyX2ZtYWRkc3ViX3JvdW5kX3BoKEEsIEIsIEMsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHN1YnBoNTEyX21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3YzMmhmKShfX201MTJoKShBKSwgKF9fdjMyaGYpKF9fbTUxMmgpKEIpLCAoX192MzJoZikoX19tNTEyaCkoQyksICAgICBcCiAgICAgIChfX21tYXNrMzIpLTEsIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfZm1hZGRzdWJfcm91bmRfcGgoQSwgVSwgQiwgQywgUikgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHN1YnBoNTEyX21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3YzMmhmKShfX201MTJoKShBKSwgKF9fdjMyaGYpKF9fbTUxMmgpKEIpLCAoX192MzJoZikoX19tNTEyaCkoQyksICAgICBcCiAgICAgIChfX21tYXNrMzIpKFUpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrM19mbWFkZHN1Yl9yb3VuZF9waChBLCBCLCBDLCBVLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tNTEyaClfX2J1aWx0aW5faWEzMl92Zm1hZGRzdWJwaDUxMl9tYXNrMyggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192MzJoZikoX19tNTEyaCkoQSksIChfX3YzMmhmKShfX201MTJoKShCKSwgKF9fdjMyaGYpKF9fbTUxMmgpKEMpLCAgICAgXAogICAgICAoX19tbWFzazMyKShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfZm1hZGRzdWJfcm91bmRfcGgoVSwgQSwgQiwgQywgUikgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTUxMmgpX19idWlsdGluX2lhMzJfdmZtYWRkc3VicGg1MTJfbWFza3ooICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjMyaGYpKF9fbTUxMmgpKEEpLCAoX192MzJoZikoX19tNTEyaCkoQiksIChfX3YzMmhmKShfX201MTJoKShDKSwgICAgIFwKICAgICAgKF9fbW1hc2szMikoVSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX2Ztc3ViYWRkX3JvdW5kX3BoKEEsIEIsIEMsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHN1YnBoNTEyX21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3YzMmhmKShfX201MTJoKShBKSwgKF9fdjMyaGYpKF9fbTUxMmgpKEIpLCAtKF9fdjMyaGYpKF9fbTUxMmgpKEMpLCAgICBcCiAgICAgIChfX21tYXNrMzIpLTEsIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfZm1zdWJhZGRfcm91bmRfcGgoQSwgVSwgQiwgQywgUikgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHN1YnBoNTEyX21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3YzMmhmKShfX201MTJoKShBKSwgKF9fdjMyaGYpKF9fbTUxMmgpKEIpLCAtKF9fdjMyaGYpKF9fbTUxMmgpKEMpLCAgICBcCiAgICAgIChfX21tYXNrMzIpKFUpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9mbXN1YmFkZF9yb3VuZF9waChVLCBBLCBCLCBDLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tNTEyaClfX2J1aWx0aW5faWEzMl92Zm1hZGRzdWJwaDUxMl9tYXNreiggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192MzJoZikoX19tNTEyaCkoQSksIChfX3YzMmhmKShfX201MTJoKShCKSwgLShfX3YzMmhmKShfX201MTJoKShDKSwgICAgXAogICAgICAoX19tbWFzazMyKShVKSwgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2ZtYWRkc3ViX3BoKF9fbTUxMmggX19BLCBfX201MTJoIF9fQiwgX19tNTEyaCBfX0MpIHsKICByZXR1cm4gKF9fbTUxMmgpX19idWlsdGluX2lhMzJfdmZtYWRkc3VicGg1MTJfbWFzaygKICAgICAgKF9fdjMyaGYpX19BLCAoX192MzJoZilfX0IsIChfX3YzMmhmKV9fQywgKF9fbW1hc2szMiktMSwKICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfZm1hZGRzdWJfcGgoX19tNTEyaCBfX0EsIF9fbW1hc2szMiBfX1UsIF9fbTUxMmggX19CLCBfX201MTJoIF9fQykgewogIHJldHVybiAoX19tNTEyaClfX2J1aWx0aW5faWEzMl92Zm1hZGRzdWJwaDUxMl9tYXNrKAogICAgICAoX192MzJoZilfX0EsIChfX3YzMmhmKV9fQiwgKF9fdjMyaGYpX19DLCAoX19tbWFzazMyKV9fVSwKICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2szX2ZtYWRkc3ViX3BoKF9fbTUxMmggX19BLCBfX201MTJoIF9fQiwgX19tNTEyaCBfX0MsIF9fbW1hc2szMiBfX1UpIHsKICByZXR1cm4gKF9fbTUxMmgpX19idWlsdGluX2lhMzJfdmZtYWRkc3VicGg1MTJfbWFzazMoCiAgICAgIChfX3YzMmhmKV9fQSwgKF9fdjMyaGYpX19CLCAoX192MzJoZilfX0MsIChfX21tYXNrMzIpX19VLAogICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJoIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfZm1hZGRzdWJfcGgoX19tbWFzazMyIF9fVSwgX19tNTEyaCBfX0EsIF9fbTUxMmggX19CLCBfX201MTJoIF9fQykgewogIHJldHVybiAoX19tNTEyaClfX2J1aWx0aW5faWEzMl92Zm1hZGRzdWJwaDUxMl9tYXNreigKICAgICAgKF9fdjMyaGYpX19BLCAoX192MzJoZilfX0IsIChfX3YzMmhmKV9fQywgKF9fbW1hc2szMilfX1UsCiAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9mbXN1YmFkZF9waChfX201MTJoIF9fQSwgX19tNTEyaCBfX0IsIF9fbTUxMmggX19DKSB7CiAgcmV0dXJuIChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHN1YnBoNTEyX21hc2soCiAgICAgIChfX3YzMmhmKV9fQSwgKF9fdjMyaGYpX19CLCAtKF9fdjMyaGYpX19DLCAoX19tbWFzazMyKS0xLAogICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJoIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19mbXN1YmFkZF9waChfX201MTJoIF9fQSwgX19tbWFzazMyIF9fVSwgX19tNTEyaCBfX0IsIF9fbTUxMmggX19DKSB7CiAgcmV0dXJuIChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHN1YnBoNTEyX21hc2soCiAgICAgIChfX3YzMmhmKV9fQSwgKF9fdjMyaGYpX19CLCAtKF9fdjMyaGYpX19DLCAoX19tbWFzazMyKV9fVSwKICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2Ztc3ViYWRkX3BoKF9fbW1hc2szMiBfX1UsIF9fbTUxMmggX19BLCBfX201MTJoIF9fQiwgX19tNTEyaCBfX0MpIHsKICByZXR1cm4gKF9fbTUxMmgpX19idWlsdGluX2lhMzJfdmZtYWRkc3VicGg1MTJfbWFza3ooCiAgICAgIChfX3YzMmhmKV9fQSwgKF9fdjMyaGYpX19CLCAtKF9fdjMyaGYpX19DLCAoX19tbWFzazMyKV9fVSwKICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW01MTJfbWFzazNfZm1zdWJfcm91bmRfcGgoQSwgQiwgQywgVSwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTUxMmgpX19idWlsdGluX2lhMzJfdmZtc3VicGg1MTJfbWFzazMoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjMyaGYpKF9fbTUxMmgpKEEpLCAoX192MzJoZikoX19tNTEyaCkoQiksIChfX3YzMmhmKShfX201MTJoKShDKSwgICAgIFwKICAgICAgKF9fbW1hc2szMikoVSksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrM19mbXN1Yl9waChfX201MTJoIF9fQSwgX19tNTEyaCBfX0IsIF9fbTUxMmggX19DLCBfX21tYXNrMzIgX19VKSB7CiAgcmV0dXJuIChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3ZmbXN1YnBoNTEyX21hc2szKChfX3YzMmhmKV9fQSwgKF9fdjMyaGYpX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJoZilfX0MsIChfX21tYXNrMzIpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgojZGVmaW5lIF9tbTUxMl9tYXNrM19mbXN1YmFkZF9yb3VuZF9waChBLCBCLCBDLCBVLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tNTEyaClfX2J1aWx0aW5faWEzMl92Zm1zdWJhZGRwaDUxMl9tYXNrMyggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192MzJoZikoX19tNTEyaCkoQSksIChfX3YzMmhmKShfX201MTJoKShCKSwgKF9fdjMyaGYpKF9fbTUxMmgpKEMpLCAgICAgXAogICAgICAoX19tbWFzazMyKShVKSwgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2szX2Ztc3ViYWRkX3BoKF9fbTUxMmggX19BLCBfX201MTJoIF9fQiwgX19tNTEyaCBfX0MsIF9fbW1hc2szMiBfX1UpIHsKICByZXR1cm4gKF9fbTUxMmgpX19idWlsdGluX2lhMzJfdmZtc3ViYWRkcGg1MTJfbWFzazMoCiAgICAgIChfX3YzMmhmKV9fQSwgKF9fdjMyaGYpX19CLCAoX192MzJoZilfX0MsIChfX21tYXNrMzIpX19VLAogICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgojZGVmaW5lIF9tbTUxMl9tYXNrX2ZubWFkZF9yb3VuZF9waChBLCBVLCBCLCBDLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tNTEyaClfX2J1aWx0aW5faWEzMl92Zm1hZGRwaDUxMl9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192MzJoZikoX19tNTEyaCkoQSksIC0oX192MzJoZikoX19tNTEyaCkoQiksIChfX3YzMmhmKShfX201MTJoKShDKSwgICAgXAogICAgICAoX19tbWFzazMyKShVKSwgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfZm5tYWRkX3BoKF9fbTUxMmggX19BLCBfX21tYXNrMzIgX19VLCBfX201MTJoIF9fQiwgX19tNTEyaCBfX0MpIHsKICByZXR1cm4gKF9fbTUxMmgpX19idWlsdGluX2lhMzJfdmZtYWRkcGg1MTJfbWFzaygoX192MzJoZilfX0EsIC0oX192MzJoZilfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGYpX19DLCAoX19tbWFzazMyKV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgojZGVmaW5lIF9tbTUxMl9tYXNrX2ZubXN1Yl9yb3VuZF9waChBLCBVLCBCLCBDLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tNTEyaClfX2J1aWx0aW5faWEzMl92Zm1hZGRwaDUxMl9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192MzJoZikoX19tNTEyaCkoQSksIC0oX192MzJoZikoX19tNTEyaCkoQiksIC0oX192MzJoZikoX19tNTEyaCkoQyksICAgXAogICAgICAoX19tbWFzazMyKShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFzazNfZm5tc3ViX3JvdW5kX3BoKEEsIEIsIEMsIFUsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTUxMmgpX19idWlsdGluX2lhMzJfdmZtc3VicGg1MTJfbWFzazMoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgLShfX3YzMmhmKShfX201MTJoKShBKSwgKF9fdjMyaGYpKF9fbTUxMmgpKEIpLCAoX192MzJoZikoX19tNTEyaCkoQyksICAgIFwKICAgICAgKF9fbW1hc2szMikoVSksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2ZubXN1Yl9waChfX201MTJoIF9fQSwgX19tbWFzazMyIF9fVSwgX19tNTEyaCBfX0IsIF9fbTUxMmggX19DKSB7CiAgcmV0dXJuIChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBoNTEyX21hc2soKF9fdjMyaGYpX19BLCAtKF9fdjMyaGYpX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192MzJoZilfX0MsIChfX21tYXNrMzIpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrM19mbm1zdWJfcGgoX19tNTEyaCBfX0EsIF9fbTUxMmggX19CLCBfX201MTJoIF9fQywgX19tbWFzazMyIF9fVSkgewogIHJldHVybiAoX19tNTEyaClfX2J1aWx0aW5faWEzMl92Zm1zdWJwaDUxMl9tYXNrMygtKF9fdjMyaGYpX19BLCAoX192MzJoZilfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhmKV9fQywgKF9fbW1hc2szMilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9mbWFkZF9zaChfX20xMjhoIF9fVywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGggX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0IpIHsKICByZXR1cm4gX19idWlsdGluX2lhMzJfdmZtYWRkc2gzX21hc2soKF9fdjhoZilfX1csIChfX3Y4aGYpX19BLCAoX192OGhmKV9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xLCBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfbW1fbWFza19mbWFkZF9zaChfX20xMjhoIF9fVywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tbWFzazggX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0IpIHsKICByZXR1cm4gX19idWlsdGluX2lhMzJfdmZtYWRkc2gzX21hc2soKF9fdjhoZilfX1csIChfX3Y4aGYpX19BLCAoX192OGhmKV9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KV9fVSwgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW1fZm1hZGRfcm91bmRfc2goQSwgQiwgQywgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTEyOGgpX19idWlsdGluX2lhMzJfdmZtYWRkc2gzX21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjhoZikoX19tMTI4aCkoQSksIChfX3Y4aGYpKF9fbTEyOGgpKEIpLCAoX192OGhmKShfX20xMjhoKShDKSwgICAgICAgIFwKICAgICAgKF9fbW1hc2s4KS0xLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbV9tYXNrX2ZtYWRkX3JvdW5kX3NoKFcsIFUsIEEsIEIsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tMTI4aClfX2J1aWx0aW5faWEzMl92Zm1hZGRzaDNfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192OGhmKShfX20xMjhoKShXKSwgKF9fdjhoZikoX19tMTI4aCkoQSksIChfX3Y4aGYpKF9fbTEyOGgpKEIpLCAgICAgICAgXAogICAgICAoX19tbWFzazgpKFUpLCAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfZm1hZGRfc2goX19tbWFzazggX19VLCBfX20xMjhoIF9fQSwgX19tMTI4aCBfX0IsIF9fbTEyOGggX19DKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHNoM19tYXNreigoX192OGhmKV9fQSwgKF9fdjhoZilfX0IsIChfX3Y4aGYpX19DLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCiNkZWZpbmUgX21tX21hc2t6X2ZtYWRkX3JvdW5kX3NoKFUsIEEsIEIsIEMsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHNoM19tYXNreiggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3Y4aGYpKF9fbTEyOGgpKEEpLCAoX192OGhmKShfX20xMjhoKShCKSwgKF9fdjhoZikoX19tMTI4aCkoQyksICAgICAgICBcCiAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrM19mbWFkZF9zaChfX20xMjhoIF9fVywgX19tMTI4aCBfX1gsIF9fbTEyOGggX19ZLCBfX21tYXNrOCBfX1UpIHsKICByZXR1cm4gX19idWlsdGluX2lhMzJfdmZtYWRkc2gzX21hc2szKChfX3Y4aGYpX19XLCAoX192OGhmKV9fWCwgKF9fdjhoZilfX1ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW1fbWFzazNfZm1hZGRfcm91bmRfc2goVywgWCwgWSwgVSwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTEyOGgpX19idWlsdGluX2lhMzJfdmZtYWRkc2gzX21hc2szKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjhoZikoX19tMTI4aCkoVyksIChfX3Y4aGYpKF9fbTEyOGgpKFgpLCAoX192OGhmKShfX20xMjhoKShZKSwgICAgICAgIFwKICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tX2Ztc3ViX3NoKF9fbTEyOGggX19XLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQikgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl92Zm1hZGRzaDNfbWFzaygoX192OGhmKV9fVywgKF9fdjhoZilfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oX192OGhmKV9fQiwgKF9fbW1hc2s4KS0xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfbW1fbWFza19mbXN1Yl9zaChfX20xMjhoIF9fVywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tbWFzazggX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0IpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfdmZtYWRkc2gzX21hc2soKF9fdjhoZilfX1csIChfX3Y4aGYpX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjhoZilfX0IsIChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCiNkZWZpbmUgX21tX2Ztc3ViX3JvdW5kX3NoKEEsIEIsIEMsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHNoM19tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3Y4aGYpKF9fbTEyOGgpKEEpLCAoX192OGhmKShfX20xMjhoKShCKSwgLShfX3Y4aGYpKF9fbTEyOGgpKEMpLCAgICAgICBcCiAgICAgIChfX21tYXNrOCktMSwgKGludCkoUikpKQoKI2RlZmluZSBfbW1fbWFza19mbXN1Yl9yb3VuZF9zaChXLCBVLCBBLCBCLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTEyOGgpX19idWlsdGluX2lhMzJfdmZtYWRkc2gzX21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjhoZikoX19tMTI4aCkoVyksIChfX3Y4aGYpKF9fbTEyOGgpKEEpLCAtKF9fdjhoZikoX19tMTI4aCkoQiksICAgICAgIFwKICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2Ztc3ViX3NoKF9fbW1hc2s4IF9fVSwgX19tMTI4aCBfX0EsIF9fbTEyOGggX19CLCBfX20xMjhoIF9fQykgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl92Zm1hZGRzaDNfbWFza3ooKF9fdjhoZilfX0EsIChfX3Y4aGYpX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3Y4aGYpX19DLCAoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW1fbWFza3pfZm1zdWJfcm91bmRfc2goVSwgQSwgQiwgQywgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTEyOGgpX19idWlsdGluX2lhMzJfdmZtYWRkc2gzX21hc2t6KCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjhoZikoX19tMTI4aCkoQSksIChfX3Y4aGYpKF9fbTEyOGgpKEIpLCAtKF9fdjhoZikoX19tMTI4aCkoQyksICAgICAgIFwKICAgICAgKF9fbW1hc2s4KShVKSwgKGludClSKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrM19mbXN1Yl9zaChfX20xMjhoIF9fVywgX19tMTI4aCBfX1gsIF9fbTEyOGggX19ZLCBfX21tYXNrOCBfX1UpIHsKICByZXR1cm4gX19idWlsdGluX2lhMzJfdmZtc3Vic2gzX21hc2szKChfX3Y4aGYpX19XLCAoX192OGhmKV9fWCwgKF9fdjhoZilfX1ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW1fbWFzazNfZm1zdWJfcm91bmRfc2goVywgWCwgWSwgVSwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTEyOGgpX19idWlsdGluX2lhMzJfdmZtc3Vic2gzX21hc2szKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjhoZikoX19tMTI4aCkoVyksIChfX3Y4aGYpKF9fbTEyOGgpKFgpLCAoX192OGhmKShfX20xMjhoKShZKSwgICAgICAgIFwKICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tX2ZubWFkZF9zaChfX20xMjhoIF9fVywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQikgewogIHJldHVybiBfX2J1aWx0aW5faWEzMl92Zm1hZGRzaDNfbWFzaygoX192OGhmKV9fVywgLShfX3Y4aGYpX19BLCAoX192OGhmKV9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xLCBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19mbm1hZGRfc2goX19tMTI4aCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aCBfX0EsIF9fbTEyOGggX19CKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHNoM19tYXNrKChfX3Y4aGYpX19XLCAtKF9fdjhoZilfX0EsIChfX3Y4aGYpX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpX19VLCBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgojZGVmaW5lIF9tbV9mbm1hZGRfcm91bmRfc2goQSwgQiwgQywgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tMTI4aClfX2J1aWx0aW5faWEzMl92Zm1hZGRzaDNfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192OGhmKShfX20xMjhoKShBKSwgLShfX3Y4aGYpKF9fbTEyOGgpKEIpLCAoX192OGhmKShfX20xMjhoKShDKSwgICAgICAgXAogICAgICAoX19tbWFzazgpLTEsIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX21hc2tfZm5tYWRkX3JvdW5kX3NoKFcsIFUsIEEsIEIsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHNoM19tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3Y4aGYpKF9fbTEyOGgpKFcpLCAtKF9fdjhoZikoX19tMTI4aCkoQSksIChfX3Y4aGYpKF9fbTEyOGgpKEIpLCAgICAgICBcCiAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9mbm1hZGRfc2goX19tbWFzazggX19VLCBfX20xMjhoIF9fQSwgX19tMTI4aCBfX0IsIF9fbTEyOGggX19DKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHNoM19tYXNreigoX192OGhmKV9fQSwgLShfX3Y4aGYpX19CLCAoX192OGhmKV9fQywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgojZGVmaW5lIF9tbV9tYXNrel9mbm1hZGRfcm91bmRfc2goVSwgQSwgQiwgQywgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tMTI4aClfX2J1aWx0aW5faWEzMl92Zm1hZGRzaDNfbWFza3ooICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192OGhmKShfX20xMjhoKShBKSwgLShfX3Y4aGYpKF9fbTEyOGgpKEIpLCAoX192OGhmKShfX20xMjhoKShDKSwgICAgICAgXAogICAgICAoX19tbWFzazgpKFUpLCAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFzazNfZm5tYWRkX3NoKF9fbTEyOGggX19XLCBfX20xMjhoIF9fWCwgX19tMTI4aCBfX1ksIF9fbW1hc2s4IF9fVSkgewogIHJldHVybiBfX2J1aWx0aW5faWEzMl92Zm1hZGRzaDNfbWFzazMoKF9fdjhoZilfX1csIC0oX192OGhmKV9fWCwgKF9fdjhoZilfX1ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW1fbWFzazNfZm5tYWRkX3JvdW5kX3NoKFcsIFgsIFksIFUsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTEyOGgpX19idWlsdGluX2lhMzJfdmZtYWRkc2gzX21hc2szKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjhoZikoX19tMTI4aCkoVyksIC0oX192OGhmKShfX20xMjhoKShYKSwgKF9fdjhoZikoX19tMTI4aCkoWSksICAgICAgIFwKICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tX2ZubXN1Yl9zaChfX20xMjhoIF9fVywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQikgewogIHJldHVybiBfX2J1aWx0aW5faWEzMl92Zm1hZGRzaDNfbWFzaygoX192OGhmKV9fVywgLShfX3Y4aGYpX19BLCAtKF9fdjhoZilfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSwgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfZm5tc3ViX3NoKF9fbTEyOGggX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGggX19BLCBfX20xMjhoIF9fQikgewogIHJldHVybiBfX2J1aWx0aW5faWEzMl92Zm1hZGRzaDNfbWFzaygoX192OGhmKV9fVywgLShfX3Y4aGYpX19BLCAtKF9fdjhoZilfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOClfX1UsIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCiNkZWZpbmUgX21tX2ZubXN1Yl9yb3VuZF9zaChBLCBCLCBDLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHNoM19tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3Y4aGYpKF9fbTEyOGgpKEEpLCAtKF9fdjhoZikoX19tMTI4aCkoQiksIC0oX192OGhmKShfX20xMjhoKShDKSwgICAgICBcCiAgICAgIChfX21tYXNrOCktMSwgKGludCkoUikpKQoKI2RlZmluZSBfbW1fbWFza19mbm1zdWJfcm91bmRfc2goVywgVSwgQSwgQiwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTEyOGgpX19idWlsdGluX2lhMzJfdmZtYWRkc2gzX21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjhoZikoX19tMTI4aCkoVyksIC0oX192OGhmKShfX20xMjhoKShBKSwgLShfX3Y4aGYpKF9fbTEyOGgpKEIpLCAgICAgIFwKICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2ZubXN1Yl9zaChfX21tYXNrOCBfX1UsIF9fbTEyOGggX19BLCBfX20xMjhoIF9fQiwgX19tMTI4aCBfX0MpIHsKICByZXR1cm4gX19idWlsdGluX2lhMzJfdmZtYWRkc2gzX21hc2t6KChfX3Y4aGYpX19BLCAtKF9fdjhoZilfX0IsIC0oX192OGhmKV9fQywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgojZGVmaW5lIF9tbV9tYXNrel9mbm1zdWJfcm91bmRfc2goVSwgQSwgQiwgQywgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tMTI4aClfX2J1aWx0aW5faWEzMl92Zm1hZGRzaDNfbWFza3ooICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192OGhmKShfX20xMjhoKShBKSwgLShfX3Y4aGYpKF9fbTEyOGgpKEIpLCAtKF9fdjhoZikoX19tMTI4aCkoQyksICAgICAgXAogICAgICAoX19tbWFzazgpKFUpLCAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFzazNfZm5tc3ViX3NoKF9fbTEyOGggX19XLCBfX20xMjhoIF9fWCwgX19tMTI4aCBfX1ksIF9fbW1hc2s4IF9fVSkgewogIHJldHVybiBfX2J1aWx0aW5faWEzMl92Zm1zdWJzaDNfbWFzazMoKF9fdjhoZilfX1csIC0oX192OGhmKV9fWCwgKF9fdjhoZilfX1ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW1fbWFzazNfZm5tc3ViX3JvdW5kX3NoKFcsIFgsIFksIFUsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTEyOGgpX19idWlsdGluX2lhMzJfdmZtc3Vic2gzX21hc2szKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjhoZikoX19tMTI4aCkoVyksIC0oX192OGhmKShfX20xMjhoKShYKSwgKF9fdjhoZikoX19tMTI4aCkoWSksICAgICAgIFwKICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tX2ZjbWFkZF9zY2goX19tMTI4aCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGggX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQykgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl92ZmNtYWRkY3NoX21hc2soKF9fdjRzZilfX0EsIChfX3Y0c2YpX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfX0MsIChfX21tYXNrOCktMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2ZjbWFkZF9zY2goX19tMTI4aCBfX0EsIF9fbW1hc2s4IF9fVSwgX19tMTI4aCBfX0IsIF9fbTEyOGggX19DKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZmY21hZGRjc2hfcm91bmRfbWFzaygKICAgICAgKF9fdjRzZilfX0EsIChfX3Y0c2YpKF9fQiksIChfX3Y0c2YpKF9fQyksIF9fVSwgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2ZjbWFkZF9zY2goX19tbWFzazggX19VLCBfX20xMjhoIF9fQSwgX19tMTI4aCBfX0IsIF9fbTEyOGggX19DKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZmY21hZGRjc2hfbWFza3ooKF9fdjRzZilfX0EsIChfX3Y0c2YpX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX19DLCAoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrM19mY21hZGRfc2NoKF9fbTEyOGggX19BLCBfX20xMjhoIF9fQiwgX19tMTI4aCBfX0MsIF9fbW1hc2s4IF9fVSkgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl92ZmNtYWRkY3NoX3JvdW5kX21hc2szKAogICAgICAoX192NHNmKV9fQSwgKF9fdjRzZilfX0IsIChfX3Y0c2YpX19DLCBfX1UsIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCiNkZWZpbmUgX21tX2ZjbWFkZF9yb3VuZF9zY2goQSwgQiwgQywgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZmY21hZGRjc2hfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3Y0c2YpKF9fbTEyOGgpKEEpLCAoX192NHNmKShfX20xMjhoKShCKSwgKF9fdjRzZikoX19tMTI4aCkoQyksICAgICAgICBcCiAgICAgIChfX21tYXNrOCktMSwgKGludCkoUikpKQoKI2RlZmluZSBfbW1fbWFza19mY21hZGRfcm91bmRfc2NoKEEsIFUsIEIsIEMsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTEyOGgpX19idWlsdGluX2lhMzJfdmZjbWFkZGNzaF9yb3VuZF9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjRzZikoX19tMTI4aCkoQSksIChfX3Y0c2YpKF9fbTEyOGgpKEIpLCAoX192NHNmKShfX20xMjhoKShDKSwgICAgICAgIFwKICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW1fbWFza3pfZmNtYWRkX3JvdW5kX3NjaChVLCBBLCBCLCBDLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTEyOGgpX19idWlsdGluX2lhMzJfdmZjbWFkZGNzaF9tYXNreiggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjRzZikoX19tMTI4aCkoQSksIChfX3Y0c2YpKF9fbTEyOGgpKEIpLCAoX192NHNmKShfX20xMjhoKShDKSwgICAgICAgIFwKICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW1fbWFzazNfZmNtYWRkX3JvdW5kX3NjaChBLCBCLCBDLCBVLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTEyOGgpX19idWlsdGluX2lhMzJfdmZjbWFkZGNzaF9yb3VuZF9tYXNrMyggICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjRzZikoX19tMTI4aCkoQSksIChfX3Y0c2YpKF9fbTEyOGgpKEIpLCAoX192NHNmKShfX20xMjhoKShDKSwgICAgICAgIFwKICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX21tX2ZtYWRkX3NjaChfX20xMjhoIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQykgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl92Zm1hZGRjc2hfbWFzaygoX192NHNmKV9fQSwgKF9fdjRzZilfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX19DLCAoX19tbWFzazgpLTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2ZtYWRkX3NjaChfX20xMjhoIF9fQSwgX19tbWFzazggX19VLCBfX20xMjhoIF9fQiwgX19tMTI4aCBfX0MpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfdmZtYWRkY3NoX3JvdW5kX21hc2soCiAgICAgIChfX3Y0c2YpX19BLCAoX192NHNmKShfX0IpLCAoX192NHNmKShfX0MpLCBfX1UsIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9mbWFkZF9zY2goX19tbWFzazggX19VLCBfX20xMjhoIF9fQSwgX19tMTI4aCBfX0IsIF9fbTEyOGggX19DKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZGNzaF9tYXNreigoX192NHNmKV9fQSwgKF9fdjRzZilfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9fQywgKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrM19mbWFkZF9zY2goX19tMTI4aCBfX0EsIF9fbTEyOGggX19CLCBfX20xMjhoIF9fQywgX19tbWFzazggX19VKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZGNzaF9yb3VuZF9tYXNrMygKICAgICAgKF9fdjRzZilfX0EsIChfX3Y0c2YpX19CLCAoX192NHNmKV9fQywgX19VLCBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgojZGVmaW5lIF9tbV9mbWFkZF9yb3VuZF9zY2goQSwgQiwgQywgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tMTI4aClfX2J1aWx0aW5faWEzMl92Zm1hZGRjc2hfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192NHNmKShfX20xMjhoKShBKSwgKF9fdjRzZikoX19tMTI4aCkoQiksIChfX3Y0c2YpKF9fbTEyOGgpKEMpLCAgICAgICAgXAogICAgICAoX19tbWFzazgpLTEsIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX21hc2tfZm1hZGRfcm91bmRfc2NoKEEsIFUsIEIsIEMsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZGNzaF9yb3VuZF9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3Y0c2YpKF9fbTEyOGgpKEEpLCAoX192NHNmKShfX20xMjhoKShCKSwgKF9fdjRzZikoX19tMTI4aCkoQyksICAgICAgICBcCiAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX21hc2t6X2ZtYWRkX3JvdW5kX3NjaChVLCBBLCBCLCBDLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZGNzaF9tYXNreiggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3Y0c2YpKF9fbTEyOGgpKEEpLCAoX192NHNmKShfX20xMjhoKShCKSwgKF9fdjRzZikoX19tMTI4aCkoQyksICAgICAgICBcCiAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX21hc2szX2ZtYWRkX3JvdW5kX3NjaChBLCBCLCBDLCBVLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZGNzaF9yb3VuZF9tYXNrMyggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3Y0c2YpKF9fbTEyOGgpKEEpLCAoX192NHNmKShfX20xMjhoKShCKSwgKF9fdjRzZikoX19tMTI4aCkoQyksICAgICAgICBcCiAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9mY211bF9zY2goX19tMTI4aCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aCBfX0IpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfdmZjbXVsY3NoX21hc2soCiAgICAgIChfX3Y0c2YpX19BLCAoX192NHNmKV9fQiwgKF9fdjRzZilfbW1fdW5kZWZpbmVkX3BoKCksIChfX21tYXNrOCktMSwKICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfZmNtdWxfc2NoKF9fbTEyOGggX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGggX19BLCBfX20xMjhoIF9fQikgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl92ZmNtdWxjc2hfbWFzaygoX192NHNmKV9fQSwgKF9fdjRzZilfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX19XLCAoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfZmNtdWxfc2NoKF9fbW1hc2s4IF9fVSwgX19tMTI4aCBfX0EsIF9fbTEyOGggX19CKSB7CiAgcmV0dXJuIChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZmY211bGNzaF9tYXNrKAogICAgICAoX192NHNmKV9fQSwgKF9fdjRzZilfX0IsIChfX3Y0c2YpX21tX3NldHplcm9fcGgoKSwgKF9fbW1hc2s4KV9fVSwKICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW1fZmNtdWxfcm91bmRfc2NoKEEsIEIsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTEyOGgpX19idWlsdGluX2lhMzJfdmZjbXVsY3NoX21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjRzZikoX19tMTI4aCkoQSksIChfX3Y0c2YpKF9fbTEyOGgpKEIpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjRzZikoX19tMTI4aClfbW1fdW5kZWZpbmVkX3BoKCksIChfX21tYXNrOCktMSwgKGludCkoUikpKQoKI2RlZmluZSBfbW1fbWFza19mY211bF9yb3VuZF9zY2goVywgVSwgQSwgQiwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTEyOGgpX19idWlsdGluX2lhMzJfdmZjbXVsY3NoX21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjRzZikoX19tMTI4aCkoQSksIChfX3Y0c2YpKF9fbTEyOGgpKEIpLCAoX192NHNmKShfX20xMjhoKShXKSwgICAgICAgIFwKICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW1fbWFza3pfZmNtdWxfcm91bmRfc2NoKFUsIEEsIEIsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTEyOGgpX19idWlsdGluX2lhMzJfdmZjbXVsY3NoX21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjRzZikoX19tMTI4aCkoQSksIChfX3Y0c2YpKF9fbTEyOGgpKEIpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjRzZikoX19tMTI4aClfbW1fc2V0emVyb19waCgpLCAoX19tbWFzazgpKFUpLCAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfbW1fZm11bF9zY2goX19tMTI4aCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQikgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl92Zm11bGNzaF9tYXNrKAogICAgICAoX192NHNmKV9fQSwgKF9fdjRzZilfX0IsIChfX3Y0c2YpX21tX3VuZGVmaW5lZF9waCgpLCAoX19tbWFzazgpLTEsCiAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGggX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9tbV9tYXNrX2ZtdWxfc2NoKF9fbTEyOGggX19XLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX21tYXNrOCBfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGggX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhoIF9fQikgewogIHJldHVybiAoX19tMTI4aClfX2J1aWx0aW5faWEzMl92Zm11bGNzaF9tYXNrKChfX3Y0c2YpX19BLCAoX192NHNmKV9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9fVywgKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhoIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfZm11bF9zY2goX19tbWFzazggX19VLCBfX20xMjhoIF9fQSwgX19tMTI4aCBfX0IpIHsKICByZXR1cm4gKF9fbTEyOGgpX19idWlsdGluX2lhMzJfdmZtdWxjc2hfbWFzaygKICAgICAgKF9fdjRzZilfX0EsIChfX3Y0c2YpX19CLCAoX192NHNmKV9tbV9zZXR6ZXJvX3BoKCksIChfX21tYXNrOClfX1UsCiAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCiNkZWZpbmUgX21tX2ZtdWxfcm91bmRfc2NoKEEsIEIsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZmbXVsY3NoX21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3Y0c2YpKF9fbTEyOGgpKEEpLCAoX192NHNmKShfX20xMjhoKShCKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3Y0c2YpKF9fbTEyOGgpX21tX3VuZGVmaW5lZF9waCgpLCAoX19tbWFzazgpLTEsIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX21hc2tfZm11bF9yb3VuZF9zY2goVywgVSwgQSwgQiwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZmbXVsY3NoX21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3Y0c2YpKF9fbTEyOGgpKEEpLCAoX192NHNmKShfX20xMjhoKShCKSwgKF9fdjRzZikoX19tMTI4aCkoVyksICAgICAgICBcCiAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX21hc2t6X2ZtdWxfcm91bmRfc2NoKFUsIEEsIEIsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX20xMjhoKV9fYnVpbHRpbl9pYTMyX3ZmbXVsY3NoX21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3Y0c2YpKF9fbTEyOGgpKEEpLCAoX192NHNmKShfX20xMjhoKShCKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3Y0c2YpKF9fbTEyOGgpX21tX3NldHplcm9fcGgoKSwgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIgX21tNTEyX2ZjbXVsX3BjaChfX201MTJoIF9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX201MTJoIF9fQikgewogIHJldHVybiAoX19tNTEyaClfX2J1aWx0aW5faWEzMl92ZmNtdWxjcGg1MTJfbWFzaygKICAgICAgKF9fdjE2c2YpX19BLCAoX192MTZzZilfX0IsIChfX3YxNnNmKV9tbTUxMl91bmRlZmluZWRfcGgoKSwgKF9fbW1hc2sxNiktMSwKICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfZmNtdWxfcGNoKF9fbTUxMmggX19XLCBfX21tYXNrMTYgX19VLCBfX201MTJoIF9fQSwgX19tNTEyaCBfX0IpIHsKICByZXR1cm4gKF9fbTUxMmgpX19idWlsdGluX2lhMzJfdmZjbXVsY3BoNTEyX21hc2soKF9fdjE2c2YpX19BLCAoX192MTZzZilfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9fVywgKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9mY211bF9wY2goX19tbWFzazE2IF9fVSwgX19tNTEyaCBfX0EsIF9fbTUxMmggX19CKSB7CiAgcmV0dXJuIChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3ZmY211bGNwaDUxMl9tYXNrKAogICAgICAoX192MTZzZilfX0EsIChfX3YxNnNmKV9fQiwgKF9fdjE2c2YpX21tNTEyX3NldHplcm9fcGgoKSwgKF9fbW1hc2sxNilfX1UsCiAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCiNkZWZpbmUgX21tNTEyX2ZjbXVsX3JvdW5kX3BjaChBLCBCLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3ZmY211bGNwaDUxMl9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3YxNnNmKShfX201MTJoKShBKSwgKF9fdjE2c2YpKF9fbTUxMmgpKEIpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3YxNnNmKShfX201MTJoKV9tbTUxMl91bmRlZmluZWRfcGgoKSwgKF9fbW1hc2sxNiktMSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza19mY211bF9yb3VuZF9wY2goVywgVSwgQSwgQiwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTUxMmgpX19idWlsdGluX2lhMzJfdmZjbXVsY3BoNTEyX21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjE2c2YpKF9fbTUxMmgpKEEpLCAoX192MTZzZikoX19tNTEyaCkoQiksIChfX3YxNnNmKShfX201MTJoKShXKSwgICAgIFwKICAgICAgKF9fbW1hc2sxNikoVSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X2ZjbXVsX3JvdW5kX3BjaChVLCBBLCBCLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3ZmY211bGNwaDUxMl9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3YxNnNmKShfX201MTJoKShBKSwgKF9fdjE2c2YpKF9fbTUxMmgpKEIpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3YxNnNmKShfX201MTJoKV9tbTUxMl9zZXR6ZXJvX3BoKCksIChfX21tYXNrMTYpKFUpLCAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJoIF9fREVGQVVMVF9GTl9BVFRSUzUxMiBfbW01MTJfZm11bF9wY2goX19tNTEyaCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX201MTJoIF9fQikgewogIHJldHVybiAoX19tNTEyaClfX2J1aWx0aW5faWEzMl92Zm11bGNwaDUxMl9tYXNrKAogICAgICAoX192MTZzZilfX0EsIChfX3YxNnNmKV9fQiwgKF9fdjE2c2YpX21tNTEyX3VuZGVmaW5lZF9waCgpLCAoX19tbWFzazE2KS0xLAogICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJoIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19mbXVsX3BjaChfX201MTJoIF9fVywgX19tbWFzazE2IF9fVSwgX19tNTEyaCBfX0EsIF9fbTUxMmggX19CKSB7CiAgcmV0dXJuIChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3ZmbXVsY3BoNTEyX21hc2soKF9fdjE2c2YpX19BLCAoX192MTZzZilfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX19XLCAoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJoIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfZm11bF9wY2goX19tbWFzazE2IF9fVSwgX19tNTEyaCBfX0EsIF9fbTUxMmggX19CKSB7CiAgcmV0dXJuIChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3ZmbXVsY3BoNTEyX21hc2soCiAgICAgIChfX3YxNnNmKV9fQSwgKF9fdjE2c2YpX19CLCAoX192MTZzZilfbW01MTJfc2V0emVyb19waCgpLCAoX19tbWFzazE2KV9fVSwKICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW01MTJfZm11bF9yb3VuZF9wY2goQSwgQiwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTUxMmgpX19idWlsdGluX2lhMzJfdmZtdWxjcGg1MTJfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjE2c2YpKF9fbTUxMmgpKEEpLCAoX192MTZzZikoX19tNTEyaCkoQiksICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjE2c2YpKF9fbTUxMmgpX21tNTEyX3VuZGVmaW5lZF9waCgpLCAoX19tbWFzazE2KS0xLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX2ZtdWxfcm91bmRfcGNoKFcsIFUsIEEsIEIsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tNTEyaClfX2J1aWx0aW5faWEzMl92Zm11bGNwaDUxMl9tYXNrKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192MTZzZikoX19tNTEyaCkoQSksIChfX3YxNnNmKShfX201MTJoKShCKSwgKF9fdjE2c2YpKF9fbTUxMmgpKFcpLCAgICAgXAogICAgICAoX19tbWFzazE2KShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfZm11bF9yb3VuZF9wY2goVSwgQSwgQiwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTUxMmgpX19idWlsdGluX2lhMzJfdmZtdWxjcGg1MTJfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjE2c2YpKF9fbTUxMmgpKEEpLCAoX192MTZzZikoX19tNTEyaCkoQiksICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjE2c2YpKF9fbTUxMmgpX21tNTEyX3NldHplcm9fcGgoKSwgKF9fbW1hc2sxNikoVSksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyIF9tbTUxMl9mY21hZGRfcGNoKF9fbTUxMmggX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX201MTJoIF9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tNTEyaCBfX0MpIHsKICByZXR1cm4gKF9fbTUxMmgpX19idWlsdGluX2lhMzJfdmZjbWFkZGNwaDUxMl9tYXNrMygKICAgICAgKF9fdjE2c2YpX19BLCAoX192MTZzZilfX0IsIChfX3YxNnNmKV9fQywgKF9fbW1hc2sxNiktMSwKICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfZmNtYWRkX3BjaChfX201MTJoIF9fQSwgX19tbWFzazE2IF9fVSwgX19tNTEyaCBfX0IsIF9fbTUxMmggX19DKSB7CiAgcmV0dXJuIChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3ZmY21hZGRjcGg1MTJfbWFzaygKICAgICAgKF9fdjE2c2YpX19BLCAoX192MTZzZilfX0IsIChfX3YxNnNmKV9fQywgKF9fbW1hc2sxNilfX1UsCiAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrM19mY21hZGRfcGNoKF9fbTUxMmggX19BLCBfX201MTJoIF9fQiwgX19tNTEyaCBfX0MsIF9fbW1hc2sxNiBfX1UpIHsKICByZXR1cm4gKF9fbTUxMmgpX19idWlsdGluX2lhMzJfdmZjbWFkZGNwaDUxMl9tYXNrMygKICAgICAgKF9fdjE2c2YpX19BLCAoX192MTZzZilfX0IsIChfX3YxNnNmKV9fQywgKF9fbW1hc2sxNilfX1UsCiAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9mY21hZGRfcGNoKF9fbW1hc2sxNiBfX1UsIF9fbTUxMmggX19BLCBfX201MTJoIF9fQiwgX19tNTEyaCBfX0MpIHsKICByZXR1cm4gKF9fbTUxMmgpX19idWlsdGluX2lhMzJfdmZjbWFkZGNwaDUxMl9tYXNreigKICAgICAgKF9fdjE2c2YpX19BLCAoX192MTZzZilfX0IsIChfX3YxNnNmKV9fQywgKF9fbW1hc2sxNilfX1UsCiAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCiNkZWZpbmUgX21tNTEyX2ZjbWFkZF9yb3VuZF9wY2goQSwgQiwgQywgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3ZmY21hZGRjcGg1MTJfbWFzazMoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3YxNnNmKShfX201MTJoKShBKSwgKF9fdjE2c2YpKF9fbTUxMmgpKEIpLCAoX192MTZzZikoX19tNTEyaCkoQyksICAgICBcCiAgICAgIChfX21tYXNrMTYpLTEsIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfZmNtYWRkX3JvdW5kX3BjaChBLCBVLCBCLCBDLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3ZmY21hZGRjcGg1MTJfbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3YxNnNmKShfX201MTJoKShBKSwgKF9fdjE2c2YpKF9fbTUxMmgpKEIpLCAoX192MTZzZikoX19tNTEyaCkoQyksICAgICBcCiAgICAgIChfX21tYXNrMTYpKFUpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrM19mY21hZGRfcm91bmRfcGNoKEEsIEIsIEMsIFUsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tNTEyaClfX2J1aWx0aW5faWEzMl92ZmNtYWRkY3BoNTEyX21hc2szKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192MTZzZikoX19tNTEyaCkoQSksIChfX3YxNnNmKShfX201MTJoKShCKSwgKF9fdjE2c2YpKF9fbTUxMmgpKEMpLCAgICAgXAogICAgICAoX19tbWFzazE2KShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfZmNtYWRkX3JvdW5kX3BjaChVLCBBLCBCLCBDLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTUxMmgpX19idWlsdGluX2lhMzJfdmZjbWFkZGNwaDUxMl9tYXNreiggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjE2c2YpKF9fbTUxMmgpKEEpLCAoX192MTZzZikoX19tNTEyaCkoQiksIChfX3YxNnNmKShfX201MTJoKShDKSwgICAgIFwKICAgICAgKF9fbW1hc2sxNikoVSksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyIF9tbTUxMl9mbWFkZF9wY2goX19tNTEyaCBfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tNTEyaCBfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tNTEyaCBfX0MpIHsKICByZXR1cm4gKF9fbTUxMmgpX19idWlsdGluX2lhMzJfdmZtYWRkY3BoNTEyX21hc2szKChfX3YxNnNmKV9fQSwgKF9fdjE2c2YpX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX19DLCAoX19tbWFzazE2KS0xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfZm1hZGRfcGNoKF9fbTUxMmggX19BLCBfX21tYXNrMTYgX19VLCBfX201MTJoIF9fQiwgX19tNTEyaCBfX0MpIHsKICByZXR1cm4gKF9fbTUxMmgpX19idWlsdGluX2lhMzJfdmZtYWRkY3BoNTEyX21hc2soKF9fdjE2c2YpX19BLCAoX192MTZzZilfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9fQywgKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrM19mbWFkZF9wY2goX19tNTEyaCBfX0EsIF9fbTUxMmggX19CLCBfX201MTJoIF9fQywgX19tbWFzazE2IF9fVSkgewogIHJldHVybiAoX19tNTEyaClfX2J1aWx0aW5faWEzMl92Zm1hZGRjcGg1MTJfbWFzazMoCiAgICAgIChfX3YxNnNmKV9fQSwgKF9fdjE2c2YpX19CLCAoX192MTZzZilfX0MsIChfX21tYXNrMTYpX19VLAogICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJoIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfZm1hZGRfcGNoKF9fbW1hc2sxNiBfX1UsIF9fbTUxMmggX19BLCBfX201MTJoIF9fQiwgX19tNTEyaCBfX0MpIHsKICByZXR1cm4gKF9fbTUxMmgpX19idWlsdGluX2lhMzJfdmZtYWRkY3BoNTEyX21hc2t6KAogICAgICAoX192MTZzZilfX0EsIChfX3YxNnNmKV9fQiwgKF9fdjE2c2YpX19DLCAoX19tbWFzazE2KV9fVSwKICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW01MTJfZm1hZGRfcm91bmRfcGNoKEEsIEIsIEMsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTUxMmgpX19idWlsdGluX2lhMzJfdmZtYWRkY3BoNTEyX21hc2szKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjE2c2YpKF9fbTUxMmgpKEEpLCAoX192MTZzZikoX19tNTEyaCkoQiksIChfX3YxNnNmKShfX201MTJoKShDKSwgICAgIFwKICAgICAgKF9fbW1hc2sxNiktMSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza19mbWFkZF9yb3VuZF9wY2goQSwgVSwgQiwgQywgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKF9fbTUxMmgpX19idWlsdGluX2lhMzJfdmZtYWRkY3BoNTEyX21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKF9fdjE2c2YpKF9fbTUxMmgpKEEpLCAoX192MTZzZikoX19tNTEyaCkoQiksIChfX3YxNnNmKShfX201MTJoKShDKSwgICAgIFwKICAgICAgKF9fbW1hc2sxNikoVSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2szX2ZtYWRkX3JvdW5kX3BjaChBLCBCLCBDLCBVLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZGNwaDUxMl9tYXNrMyggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChfX3YxNnNmKShfX201MTJoKShBKSwgKF9fdjE2c2YpKF9fbTUxMmgpKEIpLCAoX192MTZzZikoX19tNTEyaCkoQyksICAgICBcCiAgICAgIChfX21tYXNrMTYpKFUpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9mbWFkZF9yb3VuZF9wY2goVSwgQSwgQiwgQywgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoX19tNTEyaClfX2J1aWx0aW5faWEzMl92Zm1hZGRjcGg1MTJfbWFza3ooICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX192MTZzZikoX19tNTEyaCkoQSksIChfX3YxNnNmKShfX201MTJoKShCKSwgKF9fdjE2c2YpKF9fbTUxMmgpKEMpLCAgICAgXAogICAgICAoX19tbWFzazE2KShVKSwgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lX18gX0Zsb2F0MTYgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9yZWR1Y2VfYWRkX3BoKF9fbTUxMmggX19XKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3JlZHVjZV9mYWRkX3BoNTEyKC0wLjBmMTYsIF9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9GbG9hdDE2IF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfcmVkdWNlX211bF9waChfX201MTJoIF9fVykgewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9yZWR1Y2VfZm11bF9waDUxMigxLjBmMTYsIF9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9GbG9hdDE2IF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfcmVkdWNlX21heF9waChfX201MTJoIF9fVikgewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9yZWR1Y2VfZm1heF9waDUxMihfX1YpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfRmxvYXQxNiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3JlZHVjZV9taW5fcGgoX19tNTEyaCBfX1YpIHsKICByZXR1cm4gX19idWlsdGluX2lhMzJfcmVkdWNlX2ZtaW5fcGg1MTIoX19WKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfYmxlbmRfcGgoX19tbWFzazMyIF9fVSwgX19tNTEyaCBfX0EsIF9fbTUxMmggX19XKSB7CiAgcmV0dXJuIChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBoXzUxMigoX19tbWFzazMyKV9fVSwgKF9fdjMyaGYpX19XLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMyaGYpX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3Blcm11dGV4MnZhcl9waChfX201MTJoIF9fQSwgX19tNTEyaSBfX0ksIF9fbTUxMmggX19CKSB7CiAgcmV0dXJuIChfX201MTJoKV9fYnVpbHRpbl9pYTMyX3ZwZXJtaTJ2YXJoaTUxMigoX192MzJoaSlfX0EsIChfX3YzMmhpKV9fSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMmhpKV9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmggX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9wZXJtdXRleHZhcl9waChfX201MTJpIF9fQSwgX19tNTEyaCBfX0IpIHsKICByZXR1cm4gKF9fbTUxMmgpX19idWlsdGluX2lhMzJfcGVybXZhcmhpNTEyKChfX3YzMmhpKV9fQiwgKF9fdjMyaGkpX19BKTsKfQoKLy8gaW50cmluc2ljcyBiZWxvdyBhcmUgYWxpYXMgZm9yIGYqbXVsXypjaAojZGVmaW5lIF9tbTUxMl9tdWxfcGNoKEEsIEIpIF9tbTUxMl9mbXVsX3BjaChBLCBCKQojZGVmaW5lIF9tbTUxMl9tYXNrX211bF9wY2goVywgVSwgQSwgQikgX21tNTEyX21hc2tfZm11bF9wY2goVywgVSwgQSwgQikKI2RlZmluZSBfbW01MTJfbWFza3pfbXVsX3BjaChVLCBBLCBCKSBfbW01MTJfbWFza3pfZm11bF9wY2goVSwgQSwgQikKI2RlZmluZSBfbW01MTJfbXVsX3JvdW5kX3BjaChBLCBCLCBSKSBfbW01MTJfZm11bF9yb3VuZF9wY2goQSwgQiwgUikKI2RlZmluZSBfbW01MTJfbWFza19tdWxfcm91bmRfcGNoKFcsIFUsIEEsIEIsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfbW01MTJfbWFza19mbXVsX3JvdW5kX3BjaChXLCBVLCBBLCBCLCBSKQojZGVmaW5lIF9tbTUxMl9tYXNrel9tdWxfcm91bmRfcGNoKFUsIEEsIEIsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9tbTUxMl9tYXNrel9mbXVsX3JvdW5kX3BjaChVLCBBLCBCLCBSKQoKI2RlZmluZSBfbW01MTJfY211bF9wY2goQSwgQikgX21tNTEyX2ZjbXVsX3BjaChBLCBCKQojZGVmaW5lIF9tbTUxMl9tYXNrX2NtdWxfcGNoKFcsIFUsIEEsIEIpIF9tbTUxMl9tYXNrX2ZjbXVsX3BjaChXLCBVLCBBLCBCKQojZGVmaW5lIF9tbTUxMl9tYXNrel9jbXVsX3BjaChVLCBBLCBCKSBfbW01MTJfbWFza3pfZmNtdWxfcGNoKFUsIEEsIEIpCiNkZWZpbmUgX21tNTEyX2NtdWxfcm91bmRfcGNoKEEsIEIsIFIpIF9tbTUxMl9mY211bF9yb3VuZF9wY2goQSwgQiwgUikKI2RlZmluZSBfbW01MTJfbWFza19jbXVsX3JvdW5kX3BjaChXLCBVLCBBLCBCLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfbW01MTJfbWFza19mY211bF9yb3VuZF9wY2goVywgVSwgQSwgQiwgUikKI2RlZmluZSBfbW01MTJfbWFza3pfY211bF9yb3VuZF9wY2goVSwgQSwgQiwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfbW01MTJfbWFza3pfZmNtdWxfcm91bmRfcGNoKFUsIEEsIEIsIFIpCgojZGVmaW5lIF9tbV9tdWxfc2NoKEEsIEIpIF9tbV9mbXVsX3NjaChBLCBCKQojZGVmaW5lIF9tbV9tYXNrX211bF9zY2goVywgVSwgQSwgQikgX21tX21hc2tfZm11bF9zY2goVywgVSwgQSwgQikKI2RlZmluZSBfbW1fbWFza3pfbXVsX3NjaChVLCBBLCBCKSBfbW1fbWFza3pfZm11bF9zY2goVSwgQSwgQikKI2RlZmluZSBfbW1fbXVsX3JvdW5kX3NjaChBLCBCLCBSKSBfbW1fZm11bF9yb3VuZF9zY2goQSwgQiwgUikKI2RlZmluZSBfbW1fbWFza19tdWxfcm91bmRfc2NoKFcsIFUsIEEsIEIsIFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfbW1fbWFza19mbXVsX3JvdW5kX3NjaChXLCBVLCBBLCBCLCBSKQojZGVmaW5lIF9tbV9tYXNrel9tdWxfcm91bmRfc2NoKFUsIEEsIEIsIFIpIF9tbV9tYXNrel9mbXVsX3JvdW5kX3NjaChVLCBBLCBCLCBSKQoKI2RlZmluZSBfbW1fY211bF9zY2goQSwgQikgX21tX2ZjbXVsX3NjaChBLCBCKQojZGVmaW5lIF9tbV9tYXNrX2NtdWxfc2NoKFcsIFUsIEEsIEIpIF9tbV9tYXNrX2ZjbXVsX3NjaChXLCBVLCBBLCBCKQojZGVmaW5lIF9tbV9tYXNrel9jbXVsX3NjaChVLCBBLCBCKSBfbW1fbWFza3pfZmNtdWxfc2NoKFUsIEEsIEIpCiNkZWZpbmUgX21tX2NtdWxfcm91bmRfc2NoKEEsIEIsIFIpIF9tbV9mY211bF9yb3VuZF9zY2goQSwgQiwgUikKI2RlZmluZSBfbW1fbWFza19jbXVsX3JvdW5kX3NjaChXLCBVLCBBLCBCLCBSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfbW1fbWFza19mY211bF9yb3VuZF9zY2goVywgVSwgQSwgQiwgUikKI2RlZmluZSBfbW1fbWFza3pfY211bF9yb3VuZF9zY2goVSwgQSwgQiwgUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfbW1fbWFza3pfZmNtdWxfcm91bmRfc2NoKFUsIEEsIEIsIFIpCgojdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTMTI4CiN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUzUxMgoKI2VuZGlmCgAvKj09PS0tLS0tLS0gYXZ4NTEydnBpbnRlcnNlY3RpbnRyaW4uaCAtIFZQMklOVEVSU0VDVCBpbnRyaW5zaWNzIC0tLS0tLS0tLS0tLT09PQogKgogKgogKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAogKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKICoKICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCiAqCiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAogKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgogKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAogKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCiAqIFRIRSBTT0ZUV0FSRS4KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKi8KI2lmbmRlZiBfX0lNTUlOVFJJTl9ICiNlcnJvciAiTmV2ZXIgdXNlIDxhdng1MTJ2cDJpbnRlcnNlY3QuaD4gZGlyZWN0bHk7IGluY2x1ZGUgPGltbWludHJpbi5oPiBpbnN0ZWFkLiIKI2VuZGlmCgojaWZuZGVmIF9BVlg1MTJWUDJJTlRFUlNFQ1RfSAojZGVmaW5lIF9BVlg1MTJWUDJJTlRFUlNFQ1RfSAoKI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMgXAogIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgIF9fdGFyZ2V0X18oImF2eDUxMnZwMmludGVyc2VjdCIpLCBcCiAgICAgICAgICAgICAgICAgX19taW5fdmVjdG9yX3dpZHRoX18oNTEyKSkpCgovLy8gU3RvcmUsIGluIGFuIGV2ZW4vb2RkIHBhaXIgb2YgbWFzayByZWdpc3RlcnMsIHRoZSBpbmRpY2F0b3JzIG9mIHRoZQovLy8gbG9jYXRpb25zIG9mIHZhbHVlIG1hdGNoZXMgYmV0d2VlbiBkd29yZHMgaW4gb3BlcmFuZHMgX19hIGFuZCBfX2IuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlAySU5URVJTRUNURCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgNTEyLWJpdCB2ZWN0b3Igb2YgWzE2IHggaTMyXS4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgNTEyLWJpdCB2ZWN0b3Igb2YgWzE2IHggaTMyXQovLy8gXHBhcmFtIF9fbTAKLy8vICAgIEEgcG9pbnRlciBwb2ludCB0byAxNi1iaXQgbWFzawovLy8gXHBhcmFtIF9fbTEKLy8vICAgIEEgcG9pbnRlciBwb2ludCB0byAxNi1iaXQgbWFzawpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW01MTJfMmludGVyc2VjdF9lcGkzMihfX201MTJpIF9fYSwgX19tNTEyaSBfX2IsIF9fbW1hc2sxNiAqX19tMCwgX19tbWFzazE2ICpfX20xKSB7CiAgX19idWlsdGluX2lhMzJfdnAyaW50ZXJzZWN0X2RfNTEyKChfX3YxNnNpKV9fYSwgKF9fdjE2c2kpX19iLCBfX20wLCBfX20xKTsKfQoKLy8vIFN0b3JlLCBpbiBhbiBldmVuL29kZCBwYWlyIG9mIG1hc2sgcmVnaXN0ZXJzLCB0aGUgaW5kaWNhdG9ycyBvZiB0aGUKLy8vIGxvY2F0aW9ucyBvZiB2YWx1ZSBtYXRjaGVzIGJldHdlZW4gcXVhZHdvcmRzIGluIG9wZXJhbmRzIF9fYSBhbmQgX19iLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQMklOVEVSU0VDVFEgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDUxMi1iaXQgdmVjdG9yIG9mIFs4IHggaTY0XS4KLy8vIFxwYXJhbSBfX2IKLy8vICAgIEEgNTEyLWJpdCB2ZWN0b3Igb2YgWzggeCBpNjRdCi8vLyBccGFyYW0gX19tMAovLy8gICAgQSBwb2ludGVyIHBvaW50IHRvIDgtYml0IG1hc2sKLy8vIFxwYXJhbSBfX20xCi8vLyAgICBBIHBvaW50ZXIgcG9pbnQgdG8gOC1iaXQgbWFzawpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW01MTJfMmludGVyc2VjdF9lcGk2NChfX201MTJpIF9fYSwgX19tNTEyaSBfX2IsIF9fbW1hc2s4ICpfX20wLCBfX21tYXNrOCAqX19tMSkgewogIF9fYnVpbHRpbl9pYTMyX3ZwMmludGVyc2VjdF9xXzUxMigoX192OGRpKV9fYSwgKF9fdjhkaSlfX2IsIF9fbTAsIF9fbTEpOwp9CgojdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTCgojZW5kaWYKAGJtaTJpbnRyaW4uaAAvKj09PS0tLS0gZjE2Y2ludHJpbi5oIC0gRjE2QyBpbnRyaW5zaWNzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqCiAqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCiAqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCgojaWYgIWRlZmluZWQgX19JTU1JTlRSSU5fSAojZXJyb3IgIk5ldmVyIHVzZSA8ZjE2Y2ludHJpbi5oPiBkaXJlY3RseTsgaW5jbHVkZSA8aW1taW50cmluLmg+IGluc3RlYWQuIgojZW5kaWYKCiNpZm5kZWYgX19GMTZDSU5UUklOX0gKI2RlZmluZSBfX0YxNkNJTlRSSU5fSAoKLyogRGVmaW5lIHRoZSBkZWZhdWx0IGF0dHJpYnV0ZXMgZm9yIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlLiAqLwojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBcCiAgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJmMTZjIiksIF9fbWluX3ZlY3Rvcl93aWR0aF9fKDEyOCkpKQojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUzI1NiBcCiAgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJmMTZjIiksIF9fbWluX3ZlY3Rvcl93aWR0aF9fKDI1NikpKQoKLyogTk9URTogSW50ZWwgZG9jdW1lbnRzIHRoZSAxMjgtYml0IHZlcnNpb25zIG9mIHRoZXNlIGFzIGJlaW5nIGluIGVtbWludHJpbi5oLAogKiBidXQgdGhhdCdzIGJlY2F1c2UgaWNjIGNhbiBlbXVsYXRlIHRoZXNlIHdpdGhvdXQgZjE2YyB1c2luZyBhIGxpYnJhcnkgY2FsbC4KICogU2luY2Ugd2UgZG9uJ3QgZG8gdGhhdCBsZXQncyBsZWF2ZSB0aGVzZSBpbiBmMTZjaW50cmluLmguCiAqLwoKLy8vIENvbnZlcnRzIGEgMTYtYml0IGhhbGYtcHJlY2lzaW9uIGZsb2F0IHZhbHVlIGludG8gYSAzMi1iaXQgZmxvYXQKLy8vICAgIHZhbHVlLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDVlRQSDJQUyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX2EKLy8vICAgIEEgMTYtYml0IGhhbGYtcHJlY2lzaW9uIGZsb2F0IHZhbHVlLgovLy8gXHJldHVybnMgVGhlIGNvbnZlcnRlZCAzMi1iaXQgZmxvYXQgdmFsdWUuCnN0YXRpYyBfX2lubGluZSBmbG9hdCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX2N2dHNoX3NzKHVuc2lnbmVkIHNob3J0IF9fYSkKewogIF9fdjhoaSBfX3YgPSB7KHNob3J0KV9fYSwgMCwgMCwgMCwgMCwgMCwgMCwgMH07CiAgX192NHNmIF9fciA9IF9fYnVpbHRpbl9pYTMyX3ZjdnRwaDJwcyhfX3YpOwogIHJldHVybiBfX3JbMF07Cn0KCi8vLyBDb252ZXJ0cyBhIDMyLWJpdCBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0IHZhbHVlIHRvIGEgMTYtYml0Ci8vLyAgICBoYWxmLXByZWNpc2lvbiBmbG9hdCB2YWx1ZS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gXGNvZGUKLy8vIHVuc2lnbmVkIHNob3J0IF9jdnRzc19zaChmbG9hdCBhLCBjb25zdCBpbnQgaW1tKTsKLy8vIFxlbmRjb2RlCi8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ1ZUUFMyUEggPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gYQovLy8gICAgQSAzMi1iaXQgc2luZ2xlLXByZWNpc2lvbiBmbG9hdCB2YWx1ZSB0byBiZSBjb252ZXJ0ZWQgdG8gYSAxNi1iaXQKLy8vICAgIGhhbGYtcHJlY2lzaW9uIGZsb2F0IHZhbHVlLgovLy8gXHBhcmFtIGltbQovLy8gICAgQW4gaW1tZWRpYXRlIHZhbHVlIGNvbnRyb2xsaW5nIHJvdW5kaW5nIHVzaW5nIGJpdHMgWzI6MF06IFxuCi8vLyAgICAwMDA6IE5lYXJlc3QgXG4KLy8vICAgIDAwMTogRG93biBcbgovLy8gICAgMDEwOiBVcCBcbgovLy8gICAgMDExOiBUcnVuY2F0ZSBcbgovLy8gICAgMVhYOiBVc2UgTVhDU1IuUkMgZm9yIHJvdW5kaW5nCi8vLyBccmV0dXJucyBUaGUgY29udmVydGVkIDE2LWJpdCBoYWxmLXByZWNpc2lvbiBmbG9hdCB2YWx1ZS4KI2RlZmluZSBfY3Z0c3Nfc2goYSwgaW1tKSBcCiAgKCh1bnNpZ25lZCBzaG9ydCkoKChfX3Y4aGkpX19idWlsdGluX2lhMzJfdmN2dHBzMnBoKChfX3Y0c2Ype2EsIDAsIDAsIDB9LCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGltbSkpKVswXSkpCgovLy8gQ29udmVydHMgYSAxMjgtYml0IHZlY3RvciBjb250YWluaW5nIDMyLWJpdCBmbG9hdCB2YWx1ZXMgaW50byBhCi8vLyAgICAxMjgtYml0IHZlY3RvciBjb250YWluaW5nIDE2LWJpdCBoYWxmLXByZWNpc2lvbiBmbG9hdCB2YWx1ZXMuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFxjb2RlCi8vLyBfX20xMjhpIF9tbV9jdnRwc19waChfX20xMjggYSwgY29uc3QgaW50IGltbSk7Ci8vLyBcZW5kY29kZQovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNWVFBTMlBIIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIGEKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3IgY29udGFpbmluZyAzMi1iaXQgZmxvYXQgdmFsdWVzLgovLy8gXHBhcmFtIGltbQovLy8gICAgQW4gaW1tZWRpYXRlIHZhbHVlIGNvbnRyb2xsaW5nIHJvdW5kaW5nIHVzaW5nIGJpdHMgWzI6MF06IFxuCi8vLyAgICAwMDA6IE5lYXJlc3QgXG4KLy8vICAgIDAwMTogRG93biBcbgovLy8gICAgMDEwOiBVcCBcbgovLy8gICAgMDExOiBUcnVuY2F0ZSBcbgovLy8gICAgMVhYOiBVc2UgTVhDU1IuUkMgZm9yIHJvdW5kaW5nCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIGNvbnRhaW5pbmcgY29udmVydGVkIDE2LWJpdCBoYWxmLXByZWNpc2lvbiBmbG9hdAovLy8gICAgdmFsdWVzLiBUaGUgbG93ZXIgNjQgYml0cyBhcmUgdXNlZCB0byBzdG9yZSB0aGUgY29udmVydGVkIDE2LWJpdAovLy8gICAgaGFsZi1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWVzLgojZGVmaW5lIF9tbV9jdnRwc19waChhLCBpbW0pIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdmN2dHBzMnBoKChfX3Y0c2YpKF9fbTEyOCkoYSksIChpbW0pKSkKCi8vLyBDb252ZXJ0cyBhIDEyOC1iaXQgdmVjdG9yIGNvbnRhaW5pbmcgMTYtYml0IGhhbGYtcHJlY2lzaW9uIGZsb2F0Ci8vLyAgICB2YWx1ZXMgaW50byBhIDEyOC1iaXQgdmVjdG9yIGNvbnRhaW5pbmcgMzItYml0IGZsb2F0IHZhbHVlcy4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ1ZUUEgyUFMgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIGNvbnRhaW5pbmcgMTYtYml0IGhhbGYtcHJlY2lzaW9uIGZsb2F0IHZhbHVlcy4gVGhlIGxvd2VyCi8vLyAgICA2NCBiaXRzIGFyZSB1c2VkIGluIHRoZSBjb252ZXJzaW9uLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIGNvbnZlcnRlZCBmbG9hdCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZSBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9jdnRwaF9wcyhfX20xMjhpIF9fYSkKewogIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3ZjdnRwaDJwcygoX192OGhpKV9fYSk7Cn0KCi8vLyBDb252ZXJ0cyBhIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGludG8gYSAxMjgtYml0IHZlY3RvcgovLy8gICAgY29udGFpbmluZyAxNi1iaXQgaGFsZi1wcmVjaXNpb24gZmxvYXQgdmFsdWVzLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBcY29kZQovLy8gX19tMTI4aSBfbW0yNTZfY3Z0cHNfcGgoX19tMjU2IGEsIGNvbnN0IGludCBpbW0pOwovLy8gXGVuZGNvZGUKLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDVlRQUzJQSCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBhCi8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIGNvbnRhaW5pbmcgMzItYml0IHNpbmdsZS1wcmVjaXNpb24gZmxvYXQgdmFsdWVzIHRvIGJlCi8vLyAgICBjb252ZXJ0ZWQgdG8gMTYtYml0IGhhbGYtcHJlY2lzaW9uIGZsb2F0IHZhbHVlcy4KLy8vIFxwYXJhbSBpbW0KLy8vICAgIEFuIGltbWVkaWF0ZSB2YWx1ZSBjb250cm9sbGluZyByb3VuZGluZyB1c2luZyBiaXRzIFsyOjBdOiBcbgovLy8gICAgMDAwOiBOZWFyZXN0IFxuCi8vLyAgICAwMDE6IERvd24gXG4KLy8vICAgIDAxMDogVXAgXG4KLy8vICAgIDAxMTogVHJ1bmNhdGUgXG4KLy8vICAgIDFYWDogVXNlIE1YQ1NSLlJDIGZvciByb3VuZGluZwovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBjb250YWluaW5nIHRoZSBjb252ZXJ0ZWQgMTYtYml0IGhhbGYtcHJlY2lzaW9uCi8vLyAgICBmbG9hdCB2YWx1ZXMuCiNkZWZpbmUgX21tMjU2X2N2dHBzX3BoKGEsIGltbSkgXAogKChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3ZjdnRwczJwaDI1NigoX192OHNmKShfX20yNTYpKGEpLCAoaW1tKSkpCgovLy8gQ29udmVydHMgYSAxMjgtYml0IHZlY3RvciBjb250YWluaW5nIDE2LWJpdCBoYWxmLXByZWNpc2lvbiBmbG9hdAovLy8gICAgdmFsdWVzIGludG8gYSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ1ZUUEgyUFMgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19hCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIGNvbnRhaW5pbmcgMTYtYml0IGhhbGYtcHJlY2lzaW9uIGZsb2F0IHZhbHVlcyB0byBiZQovLy8gICAgY29udmVydGVkIHRvIDMyLWJpdCBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0IHZhbHVlcy4KLy8vIFxyZXR1cm5zIEEgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRlZCAzMi1iaXQKLy8vICAgIHNpbmdsZS1wcmVjaXNpb24gZmxvYXQgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfY3Z0cGhfcHMoX19tMTI4aSBfX2EpCnsKICByZXR1cm4gKF9fbTI1NilfX2J1aWx0aW5faWEzMl92Y3Z0cGgycHMyNTYoKF9fdjhoaSlfX2EpOwp9CgojdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTMTI4CiN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKCiNlbmRpZiAvKiBfX0YxNkNJTlRSSU5fSCAqLwoAaGV4YWdvbl9jaXJjX2JyZXZfaW50cmluc2ljcy5oAC8qPT09LS0tLSBzdGRhcmcuaCAtIFZhcmlhYmxlIGFyZ3VtZW50IGhhbmRsaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKi8KCiNpZm5kZWYgX19TVERBUkdfSAojZGVmaW5lIF9fU1REQVJHX0gKCiNpZm5kZWYgX1ZBX0xJU1QKdHlwZWRlZiBfX2J1aWx0aW5fdmFfbGlzdCB2YV9saXN0OwojZGVmaW5lIF9WQV9MSVNUCiNlbmRpZgojZGVmaW5lIHZhX3N0YXJ0KGFwLCBwYXJhbSkgX19idWlsdGluX3ZhX3N0YXJ0KGFwLCBwYXJhbSkKI2RlZmluZSB2YV9lbmQoYXApICAgICAgICAgIF9fYnVpbHRpbl92YV9lbmQoYXApCiNkZWZpbmUgdmFfYXJnKGFwLCB0eXBlKSAgICBfX2J1aWx0aW5fdmFfYXJnKGFwLCB0eXBlKQoKLyogR0NDIGFsd2F5cyBkZWZpbmVzIF9fdmFfY29weSwgYnV0IGRvZXMgbm90IGRlZmluZSB2YV9jb3B5IHVubGVzcyBpbiBjOTkgbW9kZQogKiBvciAtYW5zaSBpcyBub3Qgc3BlY2lmaWVkLCBzaW5jZSBpdCB3YXMgbm90IHBhcnQgb2YgQzkwLgogKi8KI2RlZmluZSBfX3ZhX2NvcHkoZCxzKSBfX2J1aWx0aW5fdmFfY29weShkLHMpCgojaWYgX19TVERDX1ZFUlNJT05fXyA+PSAxOTk5MDFMIHx8IF9fY3BsdXNwbHVzID49IDIwMTEwM0wgfHwgIWRlZmluZWQoX19TVFJJQ1RfQU5TSV9fKQojZGVmaW5lIHZhX2NvcHkoZGVzdCwgc3JjKSAgX19idWlsdGluX3ZhX2NvcHkoZGVzdCwgc3JjKQojZW5kaWYKCiNpZm5kZWYgX19HTlVDX1ZBX0xJU1QKI2RlZmluZSBfX0dOVUNfVkFfTElTVCAxCnR5cGVkZWYgX19idWlsdGluX3ZhX2xpc3QgX19nbnVjX3ZhX2xpc3Q7CiNlbmRpZgoKI2VuZGlmIC8qIF9fU1REQVJHX0ggKi8KAENvdWxkbid0IGNsb3NlIABNaXNzaW5nIGEgY29tbWEgb3IgJ10nIGFmdGVyIGFuIGFycmF5IGVsZW1lbnQuADogAHJvb3QvdW5pdHMvAFNlYXJjaE5GQSBpbmNvbnNpc3RlbmN5AFs6Xmxvd2VyOl0AZXh0ZXJuYWwvcmVnZXgtcmUyL3JlMi9vbmVwYXNzLmNjAGV4dGVybmFsL3JlZ2V4LXJlMi9yZTIvcmVnZXhwLmNjACsAXgBBcm1lbmlhbgBCYWxpbmVzZQBDeXByaW90AEdyZWVrAEhhbmd1bABLaGFyb3NodGhpAE9sZF9UdXJraWMAU2lkZGhhbQBTaW5oYWxhAG91dCBvZiBtZW1vcnkAYm9vbABtAG4AbwBEZQBEaABhZABkZQB8PQBudABwbQBBTFJFQURZX0VYSVNUUwBDaGVjayBub2RlLT5sZW5ndGggPT0gKG5vZGUtPmNvbmNhdCgpLT5sZWZ0LT5sZW5ndGggKyBub2RlLT5jb25jYXQoKS0+cmlnaHQtPmxlbmd0aCkgZmFpbGVkOiAAbGVuZ3RoIAAgYW5kIGVudHJ5IGxlbmd0aCAATkFOAHMtPndhaXRwICE9IG51bGxwdHIgfHwgcy0+c3VwcHJlc3NfZmF0YWxfZXJyb3JzAHB3IG5vdCB3J3MgcHJlZGVjZXNzb3IAdW5leHBlY3RlZCBlbXB0eSB3YWtlIGxpc3QAUmVhZGVyVHJ5TG9jayBzdWNjZWVkZWQgAExvY2sgYmxvY2tpbmcgAGJhZCBza2lwIGluIERlcXVldWVBbGxXYWtlYWJsZQBUWmlmADNERVMgRGVjcnlwdGlvbiBLQVQAQ1RSLURSQkcgZmFpbGVkLgoAVExTIEtERiBLQVQAZXJyb3I6JTA4eDolczpPUEVOU1NMX2ludGVybmFsOiVzAGt5dGhlLnByb3RvLkt6aXBJbmZvLmFic29sdXRlX3BhdGhzAGt5dGhlLnByb3RvLmNvbW1vbi5EaWFnbm9zdGljLm1lc3NhZ2UAa3l0aGUucHJvdG8uY29tbW9uLk1hcmtlZFNvdXJjZS5wb3N0X2NoaWxkX3RleHQAa3l0aGUucHJvdG8uVk5hbWUucm9vdABbXi1dLipcLihDfGNcK1wrfGNjfGNwfGNwcHxjeHh8Q1BQfGlpKQBFcnJvciBtYWtpbmcgcmVsYXRpdmUgcGF0aDogAEtZVEhFX0NPUlBVUwAsIGlucHV0cy5zaXplKCk9AEV4cGVjdGVkIHRvIHNlZSBvbmx5IG9uZSBUVTsgaW5zdGVhZCBzYXcgAFJlbGF0aXZlIHBhdGggd2FzIAAvKj09PS0tLS0gY3VkYV9idWlsdGluX3ZhcnMuaCAtIENVREEgYnVpbHQtaW4gdmFyaWFibGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwoKI2lmbmRlZiBfX0NVREFfQlVJTFRJTl9WQVJTX0gKI2RlZmluZSBfX0NVREFfQlVJTFRJTl9WQVJTX0gKCi8vIEZvcndhcmQgZGVjbGFyZXMgZnJvbSB2ZWN0b3JfdHlwZXMuaC4Kc3RydWN0IHVpbnQzOwpzdHJ1Y3QgZGltMzsKCi8vIFRoZSBmaWxlIGltcGxlbWVudHMgYnVpbHQtaW4gQ1VEQSB2YXJpYWJsZXMgdXNpbmcgX19kZWNsc3BlYyhwcm9wZXJ0eSkuCi8vIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkveWhmazB0aGQuYXNweAovLyBBbGwgcmVhZCBhY2Nlc3NlcyBvZiBidWlsdC1pbiB2YXJpYWJsZSBmaWVsZHMgZ2V0IGNvbnZlcnRlZCBpbnRvIGNhbGxzIHRvIGEKLy8gZ2V0dGVyIGZ1bmN0aW9uIHdoaWNoIGluIHR1cm4gY2FsbHMgdGhlIGFwcHJvcHJpYXRlIGJ1aWx0aW4gdG8gZmV0Y2ggdGhlCi8vIHZhbHVlLgovLwovLyBFeGFtcGxlOgovLyAgICBpbnQgeCA9IHRocmVhZElkeC54OwovLyBJUiBvdXRwdXQ6Ci8vICAlMCA9IGNhbGwgaTMyIEBsbHZtLm52dm0ucmVhZC5wdHguc3JlZy50aWQueCgpICMzCi8vIFBUWCBvdXRwdXQ6Ci8vICBtb3YudTMyICAgICAlcjIsICV0aWQueDsKCiNkZWZpbmUgX19DVURBX0RFVklDRV9CVUlMVElOKEZJRUxELCBJTlRSSU5TSUMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19kZWNsc3BlYyhwcm9wZXJ0eShnZXQgPSBfX2ZldGNoX2J1aWx0aW5fIyNGSUVMRCkpIHVuc2lnbmVkIGludCBGSUVMRDsgICAgICBcCiAgc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIF9fYXR0cmlidXRlX18oKGRldmljZSkpIHVuc2lnbmVkIGludCBfX2ZldGNoX2J1aWx0aW5fIyNGSUVMRCh2b2lkKSB7ICAgICBcCiAgICByZXR1cm4gSU5UUklOU0lDOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfQoKI2lmIF9fY3BsdXNwbHVzID49IDIwMTEwM0wKI2RlZmluZSBfX0RFTEVURSA9ZGVsZXRlCiNlbHNlCiNkZWZpbmUgX19ERUxFVEUKI2VuZGlmCgovLyBNYWtlIHN1cmUgbm9ib2R5IGNhbiBjcmVhdGUgaW5zdGFuY2VzIG9mIHRoZSBzcGVjaWFsIHZhcmlhYmxlIHR5cGVzLiAgbnZjYwovLyBhbHNvIGRpc2FsbG93cyB0YWtpbmcgYWRkcmVzcyBvZiBzcGVjaWFsIHZhcmlhYmxlcywgc28gd2UgZGlzYWJsZSBhZGRyZXNzLW9mCi8vIG9wZXJhdG9yIGFzIHdlbGwuCiNkZWZpbmUgX19DVURBX0RJU0FMTE9XX0JVSUxUSU5WQVJfQUNDRVNTKFR5cGVOYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19hdHRyaWJ1dGVfXygoZGV2aWNlKSkgVHlwZU5hbWUoKSBfX0RFTEVURTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19hdHRyaWJ1dGVfXygoZGV2aWNlKSkgVHlwZU5hbWUoY29uc3QgVHlwZU5hbWUgJikgX19ERUxFVEU7ICAgICAgICAgICAgICAgICBcCiAgX19hdHRyaWJ1dGVfXygoZGV2aWNlKSkgdm9pZCBvcGVyYXRvcj0oY29uc3QgVHlwZU5hbWUgJikgY29uc3QgX19ERUxFVEU7ICAgICBcCiAgX19hdHRyaWJ1dGVfXygoZGV2aWNlKSkgVHlwZU5hbWUgKm9wZXJhdG9yJigpIGNvbnN0IF9fREVMRVRFCgpzdHJ1Y3QgX19jdWRhX2J1aWx0aW5fdGhyZWFkSWR4X3QgewogIF9fQ1VEQV9ERVZJQ0VfQlVJTFRJTih4LF9fbnZ2bV9yZWFkX3B0eF9zcmVnX3RpZF94KCkpOwogIF9fQ1VEQV9ERVZJQ0VfQlVJTFRJTih5LF9fbnZ2bV9yZWFkX3B0eF9zcmVnX3RpZF95KCkpOwogIF9fQ1VEQV9ERVZJQ0VfQlVJTFRJTih6LF9fbnZ2bV9yZWFkX3B0eF9zcmVnX3RpZF96KCkpOwogIC8vIHRocmVhZElkeCBzaG91bGQgYmUgY29udmVydGlibGUgdG8gdWludDMgKGluIGZhY3QgaW4gbnZjYywgaXQgKmlzKiBhCiAgLy8gdWludDMpLiAgVGhpcyBmdW5jdGlvbiBpcyBkZWZpbmVkIGFmdGVyIHdlIHB1bGwgaW4gdmVjdG9yX3R5cGVzLmguCiAgX19hdHRyaWJ1dGVfXygoZGV2aWNlKSkgb3BlcmF0b3IgZGltMygpIGNvbnN0OwogIF9fYXR0cmlidXRlX18oKGRldmljZSkpIG9wZXJhdG9yIHVpbnQzKCkgY29uc3Q7Cgpwcml2YXRlOgogIF9fQ1VEQV9ESVNBTExPV19CVUlMVElOVkFSX0FDQ0VTUyhfX2N1ZGFfYnVpbHRpbl90aHJlYWRJZHhfdCk7Cn07CgpzdHJ1Y3QgX19jdWRhX2J1aWx0aW5fYmxvY2tJZHhfdCB7CiAgX19DVURBX0RFVklDRV9CVUlMVElOKHgsX19udnZtX3JlYWRfcHR4X3NyZWdfY3RhaWRfeCgpKTsKICBfX0NVREFfREVWSUNFX0JVSUxUSU4oeSxfX252dm1fcmVhZF9wdHhfc3JlZ19jdGFpZF95KCkpOwogIF9fQ1VEQV9ERVZJQ0VfQlVJTFRJTih6LF9fbnZ2bV9yZWFkX3B0eF9zcmVnX2N0YWlkX3ooKSk7CiAgLy8gYmxvY2tJZHggc2hvdWxkIGJlIGNvbnZlcnRpYmxlIHRvIHVpbnQzIChpbiBmYWN0IGluIG52Y2MsIGl0ICppcyogYQogIC8vIHVpbnQzKS4gIFRoaXMgZnVuY3Rpb24gaXMgZGVmaW5lZCBhZnRlciB3ZSBwdWxsIGluIHZlY3Rvcl90eXBlcy5oLgogIF9fYXR0cmlidXRlX18oKGRldmljZSkpIG9wZXJhdG9yIGRpbTMoKSBjb25zdDsKICBfX2F0dHJpYnV0ZV9fKChkZXZpY2UpKSBvcGVyYXRvciB1aW50MygpIGNvbnN0OwoKcHJpdmF0ZToKICBfX0NVREFfRElTQUxMT1dfQlVJTFRJTlZBUl9BQ0NFU1MoX19jdWRhX2J1aWx0aW5fYmxvY2tJZHhfdCk7Cn07CgpzdHJ1Y3QgX19jdWRhX2J1aWx0aW5fYmxvY2tEaW1fdCB7CiAgX19DVURBX0RFVklDRV9CVUlMVElOKHgsX19udnZtX3JlYWRfcHR4X3NyZWdfbnRpZF94KCkpOwogIF9fQ1VEQV9ERVZJQ0VfQlVJTFRJTih5LF9fbnZ2bV9yZWFkX3B0eF9zcmVnX250aWRfeSgpKTsKICBfX0NVREFfREVWSUNFX0JVSUxUSU4oeixfX252dm1fcmVhZF9wdHhfc3JlZ19udGlkX3ooKSk7CiAgLy8gYmxvY2tEaW0gc2hvdWxkIGJlIGNvbnZlcnRpYmxlIHRvIGRpbTMgKGluIGZhY3QgaW4gbnZjYywgaXQgKmlzKiBhCiAgLy8gZGltMykuICBUaGlzIGZ1bmN0aW9uIGlzIGRlZmluZWQgYWZ0ZXIgd2UgcHVsbCBpbiB2ZWN0b3JfdHlwZXMuaC4KICBfX2F0dHJpYnV0ZV9fKChkZXZpY2UpKSBvcGVyYXRvciBkaW0zKCkgY29uc3Q7CiAgX19hdHRyaWJ1dGVfXygoZGV2aWNlKSkgb3BlcmF0b3IgdWludDMoKSBjb25zdDsKCnByaXZhdGU6CiAgX19DVURBX0RJU0FMTE9XX0JVSUxUSU5WQVJfQUNDRVNTKF9fY3VkYV9idWlsdGluX2Jsb2NrRGltX3QpOwp9OwoKc3RydWN0IF9fY3VkYV9idWlsdGluX2dyaWREaW1fdCB7CiAgX19DVURBX0RFVklDRV9CVUlMVElOKHgsX19udnZtX3JlYWRfcHR4X3NyZWdfbmN0YWlkX3goKSk7CiAgX19DVURBX0RFVklDRV9CVUlMVElOKHksX19udnZtX3JlYWRfcHR4X3NyZWdfbmN0YWlkX3koKSk7CiAgX19DVURBX0RFVklDRV9CVUlMVElOKHosX19udnZtX3JlYWRfcHR4X3NyZWdfbmN0YWlkX3ooKSk7CiAgLy8gZ3JpZERpbSBzaG91bGQgYmUgY29udmVydGlibGUgdG8gZGltMyAoaW4gZmFjdCBpbiBudmNjLCBpdCAqaXMqIGEKICAvLyBkaW0zKS4gIFRoaXMgZnVuY3Rpb24gaXMgZGVmaW5lZCBhZnRlciB3ZSBwdWxsIGluIHZlY3Rvcl90eXBlcy5oLgogIF9fYXR0cmlidXRlX18oKGRldmljZSkpIG9wZXJhdG9yIGRpbTMoKSBjb25zdDsKICBfX2F0dHJpYnV0ZV9fKChkZXZpY2UpKSBvcGVyYXRvciB1aW50MygpIGNvbnN0OwoKcHJpdmF0ZToKICBfX0NVREFfRElTQUxMT1dfQlVJTFRJTlZBUl9BQ0NFU1MoX19jdWRhX2J1aWx0aW5fZ3JpZERpbV90KTsKfTsKCiNkZWZpbmUgX19DVURBX0JVSUxUSU5fVkFSICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgZXh0ZXJuIGNvbnN0IF9fYXR0cmlidXRlX18oKGRldmljZSkpIF9fYXR0cmlidXRlX18oKHdlYWspKQpfX0NVREFfQlVJTFRJTl9WQVIgX19jdWRhX2J1aWx0aW5fdGhyZWFkSWR4X3QgdGhyZWFkSWR4OwpfX0NVREFfQlVJTFRJTl9WQVIgX19jdWRhX2J1aWx0aW5fYmxvY2tJZHhfdCBibG9ja0lkeDsKX19DVURBX0JVSUxUSU5fVkFSIF9fY3VkYV9idWlsdGluX2Jsb2NrRGltX3QgYmxvY2tEaW07Cl9fQ1VEQV9CVUlMVElOX1ZBUiBfX2N1ZGFfYnVpbHRpbl9ncmlkRGltX3QgZ3JpZERpbTsKCi8vIHdhcnBTaXplIHNob3VsZCB0cmFuc2xhdGUgdG8gcmVhZCBvZiAlV0FSUF9TWiBidXQgdGhlcmUncyBjdXJyZW50bHkgbm8KLy8gYnVpbHRpbiB0byBkbyBzby4gQWNjb3JkaW5nIHRvIFBUWCB2NC4yIGRvY3MgJ3RvIGRhdGUsIGFsbCB0YXJnZXQKLy8gYXJjaGl0ZWN0dXJlcyBoYXZlIGEgV0FSUF9TWiB2YWx1ZSBvZiAzMicuCl9fYXR0cmlidXRlX18oKGRldmljZSkpIGNvbnN0IGludCB3YXJwU2l6ZSA9IDMyOwoKI3VuZGVmIF9fQ1VEQV9ERVZJQ0VfQlVJTFRJTgojdW5kZWYgX19DVURBX0JVSUxUSU5fVkFSCiN1bmRlZiBfX0NVREFfRElTQUxMT1dfQlVJTFRJTlZBUl9BQ0NFU1MKI3VuZGVmIF9fREVMRVRFCgojZW5kaWYgLyogX19DVURBX0JVSUxUSU5fVkFSU19IICovCgAvKj09PS0tLS0gX19zdGRkZWZfbWF4X2FsaWduX3QuaCAtIERlZmluaXRpb24gb2YgbWF4X2FsaWduX3QgZm9yIG1vZHVsZXMgLS0tPT09CiAqCiAqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCiAqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCgojaWZuZGVmIF9fQ0xBTkdfTUFYX0FMSUdOX1RfREVGSU5FRAojZGVmaW5lIF9fQ0xBTkdfTUFYX0FMSUdOX1RfREVGSU5FRAoKI2lmIGRlZmluZWQoX01TQ19WRVIpCnR5cGVkZWYgZG91YmxlIG1heF9hbGlnbl90OwojZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKdHlwZWRlZiBsb25nIGRvdWJsZSBtYXhfYWxpZ25fdDsKI2Vsc2UKLy8gRGVmaW5lICdtYXhfYWxpZ25fdCcgdG8gbWF0Y2ggdGhlIEdDQyBkZWZpbml0aW9uLgp0eXBlZGVmIHN0cnVjdCB7CiAgbG9uZyBsb25nIF9fY2xhbmdfbWF4X2FsaWduX25vbmNlMQogICAgICBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXyhfX2FsaWdub2ZfXyhsb25nIGxvbmcpKSkpOwogIGxvbmcgZG91YmxlIF9fY2xhbmdfbWF4X2FsaWduX25vbmNlMgogICAgICBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXyhfX2FsaWdub2ZfXyhsb25nIGRvdWJsZSkpKSk7Cn0gbWF4X2FsaWduX3Q7CiNlbmRpZgoKI2VuZGlmCgBhcm02NGludHIuaAAvKj09PS0tLS0gYXJtNjRpbnRyLmggLSBBUk02NCBXaW5kb3dzIGludHJpbnNpY3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwoKLyogT25seSBpbmNsdWRlIHRoaXMgaWYgd2UncmUgY29tcGlsaW5nIGZvciB0aGUgd2luZG93cyBwbGF0Zm9ybS4gKi8KI2lmbmRlZiBfTVNDX1ZFUgojaW5jbHVkZV9uZXh0IDxhcm02NGludHIuaD4KI2Vsc2UKCiNpZm5kZWYgX19BUk02NElOVFJfSAojZGVmaW5lIF9fQVJNNjRJTlRSX0gKCnR5cGVkZWYgZW51bQp7CiAgX0FSTTY0X0JBUlJJRVJfU1kgICAgPSAweEYsCiAgX0FSTTY0X0JBUlJJRVJfU1QgICAgPSAweEUsCiAgX0FSTTY0X0JBUlJJRVJfTEQgICAgPSAweEQsCiAgX0FSTTY0X0JBUlJJRVJfSVNIICAgPSAweEIsCiAgX0FSTTY0X0JBUlJJRVJfSVNIU1QgPSAweEEsCiAgX0FSTTY0X0JBUlJJRVJfSVNITEQgPSAweDksCiAgX0FSTTY0X0JBUlJJRVJfTlNIICAgPSAweDcsCiAgX0FSTTY0X0JBUlJJRVJfTlNIU1QgPSAweDYsCiAgX0FSTTY0X0JBUlJJRVJfTlNITEQgPSAweDUsCiAgX0FSTTY0X0JBUlJJRVJfT1NIICAgPSAweDMsCiAgX0FSTTY0X0JBUlJJRVJfT1NIU1QgPSAweDIsCiAgX0FSTTY0X0JBUlJJRVJfT1NITEQgPSAweDEKfSBfQVJNNjRJTlRSX0JBUlJJRVJfVFlQRTsKCiNlbmRpZiAvKiBfX0FSTTY0SU5UUl9IICovCiNlbmRpZiAvKiBfTVNDX1ZFUiAqLwoALyo9PT0tLS0tIGZ4c3JpbnRyaW4uaCAtIEZYU1IgaW50cmluc2ljIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwoKI2lmbmRlZiBfX0lNTUlOVFJJTl9ICiNlcnJvciAiTmV2ZXIgdXNlIDxmeHNyaW50cmluLmg+IGRpcmVjdGx5OyBpbmNsdWRlIDxpbW1pbnRyaW4uaD4gaW5zdGVhZC4iCiNlbmRpZgoKI2lmbmRlZiBfX0ZYU1JJTlRSSU5fSAojZGVmaW5lIF9fRlhTUklOVFJJTl9ICgojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUyBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sICBfX3RhcmdldF9fKCJmeHNyIikpKQoKLy8vIFNhdmVzIHRoZSBYTU0sIE1NWCwgTVhDU1IgYW5kIHg4NyBGUFUgcmVnaXN0ZXJzIGludG8gYSA1MTItYnl0ZQovLy8gICAgbWVtb3J5IHJlZ2lvbiBwb2ludGVkIHRvIGJ5IHRoZSBpbnB1dCBwYXJhbWV0ZXIgXGEgX19wLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IEZYU0FWRSA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX3AKLy8vICAgIEEgcG9pbnRlciB0byBhIDUxMi1ieXRlIG1lbW9yeSByZWdpb24uIFRoZSBiZWdpbm5pbmcgb2YgdGhpcyBtZW1vcnkKLy8vICAgIHJlZ2lvbiBzaG91bGQgYmUgYWxpZ25lZCBvbiBhIDE2LWJ5dGUgYm91bmRhcnkuCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTCl9meHNhdmUodm9pZCAqX19wKQp7CiAgX19idWlsdGluX2lhMzJfZnhzYXZlKF9fcCk7Cn0KCi8vLyBSZXN0b3JlcyB0aGUgWE1NLCBNTVgsIE1YQ1NSIGFuZCB4ODcgRlBVIHJlZ2lzdGVycyBmcm9tIHRoZSA1MTItYnl0ZQovLy8gICAgbWVtb3J5IHJlZ2lvbiBwb2ludGVkIHRvIGJ5IHRoZSBpbnB1dCBwYXJhbWV0ZXIgXGEgX19wLiBUaGUgY29udGVudHMgb2YKLy8vICAgIHRoaXMgbWVtb3J5IHJlZ2lvbiBzaG91bGQgaGF2ZSBiZWVuIHdyaXR0ZW4gdG8gYnkgYSBwcmV2aW91cyBcYyBfZnhzYXZlCi8vLyAgICBvciBcYyBfZnhzYXZlNjQgaW50cmluc2ljLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IEZYUlNUT1IgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19wCi8vLyAgICBBIHBvaW50ZXIgdG8gYSA1MTItYnl0ZSBtZW1vcnkgcmVnaW9uLiBUaGUgYmVnaW5uaW5nIG9mIHRoaXMgbWVtb3J5Ci8vLyAgICByZWdpb24gc2hvdWxkIGJlIGFsaWduZWQgb24gYSAxNi1ieXRlIGJvdW5kYXJ5LgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUwpfZnhyc3Rvcih2b2lkICpfX3ApCnsKICBfX2J1aWx0aW5faWEzMl9meHJzdG9yKF9fcCk7Cn0KCiNpZmRlZiBfX3g4Nl82NF9fCi8vLyBTYXZlcyB0aGUgWE1NLCBNTVgsIE1YQ1NSIGFuZCB4ODcgRlBVIHJlZ2lzdGVycyBpbnRvIGEgNTEyLWJ5dGUKLy8vICAgIG1lbW9yeSByZWdpb24gcG9pbnRlZCB0byBieSB0aGUgaW5wdXQgcGFyYW1ldGVyIFxhIF9fcC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBGWFNBVkU2NCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX3AKLy8vICAgIEEgcG9pbnRlciB0byBhIDUxMi1ieXRlIG1lbW9yeSByZWdpb24uIFRoZSBiZWdpbm5pbmcgb2YgdGhpcyBtZW1vcnkKLy8vICAgIHJlZ2lvbiBzaG91bGQgYmUgYWxpZ25lZCBvbiBhIDE2LWJ5dGUgYm91bmRhcnkuCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTCl9meHNhdmU2NCh2b2lkICpfX3ApCnsKICBfX2J1aWx0aW5faWEzMl9meHNhdmU2NChfX3ApOwp9CgovLy8gUmVzdG9yZXMgdGhlIFhNTSwgTU1YLCBNWENTUiBhbmQgeDg3IEZQVSByZWdpc3RlcnMgZnJvbSB0aGUgNTEyLWJ5dGUKLy8vICAgIG1lbW9yeSByZWdpb24gcG9pbnRlZCB0byBieSB0aGUgaW5wdXQgcGFyYW1ldGVyIFxhIF9fcC4gVGhlIGNvbnRlbnRzIG9mCi8vLyAgICB0aGlzIG1lbW9yeSByZWdpb24gc2hvdWxkIGhhdmUgYmVlbiB3cml0dGVuIHRvIGJ5IGEgcHJldmlvdXMgXGMgX2Z4c2F2ZQovLy8gICAgb3IgXGMgX2Z4c2F2ZTY0IGludHJpbnNpYy4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBGWFJTVE9SNjQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19wCi8vLyAgICBBIHBvaW50ZXIgdG8gYSA1MTItYnl0ZSBtZW1vcnkgcmVnaW9uLiBUaGUgYmVnaW5uaW5nIG9mIHRoaXMgbWVtb3J5Ci8vLyAgICByZWdpb24gc2hvdWxkIGJlIGFsaWduZWQgb24gYSAxNi1ieXRlIGJvdW5kYXJ5LgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUwpfZnhyc3RvcjY0KHZvaWQgKl9fcCkKewogIF9fYnVpbHRpbl9pYTMyX2Z4cnN0b3I2NChfX3ApOwp9CiNlbmRpZgoKI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUwoKI2VuZGlmCgAvKj09PS0tLS0gaW1taW50cmluLmggLSBJbnRlbCBpbnRyaW5zaWNzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqCiAqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCiAqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCgojaWZuZGVmIF9fSU1NSU5UUklOX0gKI2RlZmluZSBfX0lNTUlOVFJJTl9ICgojaWYgIWRlZmluZWQoX19pMzg2X18pICYmICFkZWZpbmVkKF9feDg2XzY0X18pCiNlcnJvciAiVGhpcyBoZWFkZXIgaXMgb25seSBtZWFudCB0byBiZSB1c2VkIG9uIHg4NiBhbmQgeDY0IGFyY2hpdGVjdHVyZSIKI2VuZGlmCgojaW5jbHVkZSA8eDg2Z3ByaW50cmluLmg+CgojaWYgIShkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fU0NFX18pKSB8fCBfX2hhc19mZWF0dXJlKG1vZHVsZXMpIHx8ICAgICAgXAogICAgZGVmaW5lZChfX01NWF9fKQojaW5jbHVkZSA8bW1pbnRyaW4uaD4KI2VuZGlmCgojaWYgIShkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fU0NFX18pKSB8fCBfX2hhc19mZWF0dXJlKG1vZHVsZXMpIHx8ICAgICAgXAogICAgZGVmaW5lZChfX1NTRV9fKQojaW5jbHVkZSA8eG1taW50cmluLmg+CiNlbmRpZgoKI2lmICEoZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX1NDRV9fKSkgfHwgX19oYXNfZmVhdHVyZShtb2R1bGVzKSB8fCAgICAgIFwKICAgIGRlZmluZWQoX19TU0UyX18pCiNpbmNsdWRlIDxlbW1pbnRyaW4uaD4KI2VuZGlmCgojaWYgIShkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fU0NFX18pKSB8fCBfX2hhc19mZWF0dXJlKG1vZHVsZXMpIHx8ICAgICAgXAogICAgZGVmaW5lZChfX1NTRTNfXykKI2luY2x1ZGUgPHBtbWludHJpbi5oPgojZW5kaWYKCiNpZiAhKGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19TQ0VfXykpIHx8IF9faGFzX2ZlYXR1cmUobW9kdWxlcykgfHwgICAgICBcCiAgICBkZWZpbmVkKF9fU1NTRTNfXykKI2luY2x1ZGUgPHRtbWludHJpbi5oPgojZW5kaWYKCiNpZiAhKGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19TQ0VfXykpIHx8IF9faGFzX2ZlYXR1cmUobW9kdWxlcykgfHwgICAgICBcCiAgICAoZGVmaW5lZChfX1NTRTRfMl9fKSB8fCBkZWZpbmVkKF9fU1NFNF8xX18pKQojaW5jbHVkZSA8c21taW50cmluLmg+CiNlbmRpZgoKI2lmICEoZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX1NDRV9fKSkgfHwgX19oYXNfZmVhdHVyZShtb2R1bGVzKSB8fCAgICAgIFwKICAgIChkZWZpbmVkKF9fQUVTX18pIHx8IGRlZmluZWQoX19QQ0xNVUxfXykpCiNpbmNsdWRlIDx3bW1pbnRyaW4uaD4KI2VuZGlmCgojaWYgIShkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fU0NFX18pKSB8fCBfX2hhc19mZWF0dXJlKG1vZHVsZXMpIHx8ICAgICAgXAogICAgZGVmaW5lZChfX0NMRkxVU0hPUFRfXykKI2luY2x1ZGUgPGNsZmx1c2hvcHRpbnRyaW4uaD4KI2VuZGlmCgojaWYgIShkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fU0NFX18pKSB8fCBfX2hhc19mZWF0dXJlKG1vZHVsZXMpIHx8ICAgICAgXAogICAgZGVmaW5lZChfX0NMV0JfXykKI2luY2x1ZGUgPGNsd2JpbnRyaW4uaD4KI2VuZGlmCgojaWYgIShkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fU0NFX18pKSB8fCBfX2hhc19mZWF0dXJlKG1vZHVsZXMpIHx8ICAgICAgXAogICAgZGVmaW5lZChfX0FWWF9fKQojaW5jbHVkZSA8YXZ4aW50cmluLmg+CiNlbmRpZgoKI2lmICEoZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX1NDRV9fKSkgfHwgX19oYXNfZmVhdHVyZShtb2R1bGVzKSB8fCAgICAgIFwKICAgIGRlZmluZWQoX19BVlgyX18pCiNpbmNsdWRlIDxhdngyaW50cmluLmg+CiNlbmRpZgoKI2lmICEoZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX1NDRV9fKSkgfHwgX19oYXNfZmVhdHVyZShtb2R1bGVzKSB8fCAgICAgIFwKICAgIGRlZmluZWQoX19GMTZDX18pCiNpbmNsdWRlIDxmMTZjaW50cmluLmg+CiNlbmRpZgoKLyogTm8gZmVhdHVyZSBjaGVjayBkZXNpcmVkIGR1ZSB0byBpbnRlcm5hbCBjaGVja3MgKi8KI2luY2x1ZGUgPGJtaWludHJpbi5oPgoKI2lmICEoZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX1NDRV9fKSkgfHwgX19oYXNfZmVhdHVyZShtb2R1bGVzKSB8fCAgICAgIFwKICAgIGRlZmluZWQoX19CTUkyX18pCiNpbmNsdWRlIDxibWkyaW50cmluLmg+CiNlbmRpZgoKI2lmICEoZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX1NDRV9fKSkgfHwgX19oYXNfZmVhdHVyZShtb2R1bGVzKSB8fCAgICAgIFwKICAgIGRlZmluZWQoX19MWkNOVF9fKQojaW5jbHVkZSA8bHpjbnRpbnRyaW4uaD4KI2VuZGlmCgojaWYgIShkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fU0NFX18pKSB8fCBfX2hhc19mZWF0dXJlKG1vZHVsZXMpIHx8ICAgICAgXAogICAgZGVmaW5lZChfX1BPUENOVF9fKQojaW5jbHVkZSA8cG9wY250aW50cmluLmg+CiNlbmRpZgoKI2lmICEoZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX1NDRV9fKSkgfHwgX19oYXNfZmVhdHVyZShtb2R1bGVzKSB8fCAgICAgIFwKICAgIGRlZmluZWQoX19GTUFfXykKI2luY2x1ZGUgPGZtYWludHJpbi5oPgojZW5kaWYKCiNpZiAhKGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19TQ0VfXykpIHx8IF9faGFzX2ZlYXR1cmUobW9kdWxlcykgfHwgICAgICBcCiAgICBkZWZpbmVkKF9fQVZYNTEyRl9fKQojaW5jbHVkZSA8YXZ4NTEyZmludHJpbi5oPgojZW5kaWYKCiNpZiAhKGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19TQ0VfXykpIHx8IF9faGFzX2ZlYXR1cmUobW9kdWxlcykgfHwgICAgICBcCiAgICBkZWZpbmVkKF9fQVZYNTEyVkxfXykKI2luY2x1ZGUgPGF2eDUxMnZsaW50cmluLmg+CiNlbmRpZgoKI2lmICEoZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX1NDRV9fKSkgfHwgX19oYXNfZmVhdHVyZShtb2R1bGVzKSB8fCAgICAgIFwKICAgIGRlZmluZWQoX19BVlg1MTJCV19fKQojaW5jbHVkZSA8YXZ4NTEyYndpbnRyaW4uaD4KI2VuZGlmCgojaWYgIShkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fU0NFX18pKSB8fCBfX2hhc19mZWF0dXJlKG1vZHVsZXMpIHx8ICAgICAgXAogICAgZGVmaW5lZChfX0FWWDUxMkJJVEFMR19fKQojaW5jbHVkZSA8YXZ4NTEyYml0YWxnaW50cmluLmg+CiNlbmRpZgoKI2lmICEoZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX1NDRV9fKSkgfHwgX19oYXNfZmVhdHVyZShtb2R1bGVzKSB8fCAgICAgIFwKICAgIGRlZmluZWQoX19BVlg1MTJDRF9fKQojaW5jbHVkZSA8YXZ4NTEyY2RpbnRyaW4uaD4KI2VuZGlmCgojaWYgIShkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fU0NFX18pKSB8fCBfX2hhc19mZWF0dXJlKG1vZHVsZXMpIHx8ICAgICAgXAogICAgZGVmaW5lZChfX0FWWDUxMlZQT1BDTlREUV9fKQojaW5jbHVkZSA8YXZ4NTEydnBvcGNudGRxaW50cmluLmg+CiNlbmRpZgoKI2lmICEoZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX1NDRV9fKSkgfHwgX19oYXNfZmVhdHVyZShtb2R1bGVzKSB8fCAgICAgIFwKICAgIChkZWZpbmVkKF9fQVZYNTEyVkxfXykgJiYgZGVmaW5lZChfX0FWWDUxMlZQT1BDTlREUV9fKSkKI2luY2x1ZGUgPGF2eDUxMnZwb3BjbnRkcXZsaW50cmluLmg+CiNlbmRpZgoKI2lmICEoZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX1NDRV9fKSkgfHwgX19oYXNfZmVhdHVyZShtb2R1bGVzKSB8fCAgICAgIFwKICAgIGRlZmluZWQoX19BVlg1MTJWTk5JX18pCiNpbmNsdWRlIDxhdng1MTJ2bm5paW50cmluLmg+CiNlbmRpZgoKI2lmICEoZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX1NDRV9fKSkgfHwgX19oYXNfZmVhdHVyZShtb2R1bGVzKSB8fCAgICAgIFwKICAgIChkZWZpbmVkKF9fQVZYNTEyVkxfXykgJiYgZGVmaW5lZChfX0FWWDUxMlZOTklfXykpCiNpbmNsdWRlIDxhdng1MTJ2bHZubmlpbnRyaW4uaD4KI2VuZGlmCgojaWYgIShkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fU0NFX18pKSB8fCBfX2hhc19mZWF0dXJlKG1vZHVsZXMpIHx8ICAgICAgXAogICAgZGVmaW5lZChfX0FWWFZOTklfXykKI2luY2x1ZGUgPGF2eHZubmlpbnRyaW4uaD4KI2VuZGlmCgojaWYgIShkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fU0NFX18pKSB8fCBfX2hhc19mZWF0dXJlKG1vZHVsZXMpIHx8ICAgICAgXAogICAgZGVmaW5lZChfX0FWWDUxMkRRX18pCiNpbmNsdWRlIDxhdng1MTJkcWludHJpbi5oPgojZW5kaWYKCiNpZiAhKGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19TQ0VfXykpIHx8IF9faGFzX2ZlYXR1cmUobW9kdWxlcykgfHwgICAgICBcCiAgICAoZGVmaW5lZChfX0FWWDUxMlZMX18pICYmIGRlZmluZWQoX19BVlg1MTJCSVRBTEdfXykpCiNpbmNsdWRlIDxhdng1MTJ2bGJpdGFsZ2ludHJpbi5oPgojZW5kaWYKCiNpZiAhKGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19TQ0VfXykpIHx8IF9faGFzX2ZlYXR1cmUobW9kdWxlcykgfHwgICAgICBcCiAgICAoZGVmaW5lZChfX0FWWDUxMlZMX18pICYmIGRlZmluZWQoX19BVlg1MTJCV19fKSkKI2luY2x1ZGUgPGF2eDUxMnZsYndpbnRyaW4uaD4KI2VuZGlmCgojaWYgIShkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fU0NFX18pKSB8fCBfX2hhc19mZWF0dXJlKG1vZHVsZXMpIHx8ICAgICAgXAogICAgKGRlZmluZWQoX19BVlg1MTJWTF9fKSAmJiBkZWZpbmVkKF9fQVZYNTEyQ0RfXykpCiNpbmNsdWRlIDxhdng1MTJ2bGNkaW50cmluLmg+CiNlbmRpZgoKI2lmICEoZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX1NDRV9fKSkgfHwgX19oYXNfZmVhdHVyZShtb2R1bGVzKSB8fCAgICAgIFwKICAgIChkZWZpbmVkKF9fQVZYNTEyVkxfXykgJiYgZGVmaW5lZChfX0FWWDUxMkRRX18pKQojaW5jbHVkZSA8YXZ4NTEydmxkcWludHJpbi5oPgojZW5kaWYKCiNpZiAhKGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19TQ0VfXykpIHx8IF9faGFzX2ZlYXR1cmUobW9kdWxlcykgfHwgICAgICBcCiAgICBkZWZpbmVkKF9fQVZYNTEyRVJfXykKI2luY2x1ZGUgPGF2eDUxMmVyaW50cmluLmg+CiNlbmRpZgoKI2lmICEoZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX1NDRV9fKSkgfHwgX19oYXNfZmVhdHVyZShtb2R1bGVzKSB8fCAgICAgIFwKICAgIGRlZmluZWQoX19BVlg1MTJJRk1BX18pCiNpbmNsdWRlIDxhdng1MTJpZm1haW50cmluLmg+CiNlbmRpZgoKI2lmICEoZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX1NDRV9fKSkgfHwgX19oYXNfZmVhdHVyZShtb2R1bGVzKSB8fCAgICAgIFwKICAgIChkZWZpbmVkKF9fQVZYNTEySUZNQV9fKSAmJiBkZWZpbmVkKF9fQVZYNTEyVkxfXykpCiNpbmNsdWRlIDxhdng1MTJpZm1hdmxpbnRyaW4uaD4KI2VuZGlmCgojaWYgIShkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fU0NFX18pKSB8fCBfX2hhc19mZWF0dXJlKG1vZHVsZXMpIHx8ICAgICAgXAogICAgZGVmaW5lZChfX0FWWDUxMlZCTUlfXykKI2luY2x1ZGUgPGF2eDUxMnZibWlpbnRyaW4uaD4KI2VuZGlmCgojaWYgIShkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fU0NFX18pKSB8fCBfX2hhc19mZWF0dXJlKG1vZHVsZXMpIHx8ICAgICAgXAogICAgKGRlZmluZWQoX19BVlg1MTJWQk1JX18pICYmIGRlZmluZWQoX19BVlg1MTJWTF9fKSkKI2luY2x1ZGUgPGF2eDUxMnZibWl2bGludHJpbi5oPgojZW5kaWYKCiNpZiAhKGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19TQ0VfXykpIHx8IF9faGFzX2ZlYXR1cmUobW9kdWxlcykgfHwgICAgICBcCiAgICBkZWZpbmVkKF9fQVZYNTEyVkJNSTJfXykKI2luY2x1ZGUgPGF2eDUxMnZibWkyaW50cmluLmg+CiNlbmRpZgoKI2lmICEoZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX1NDRV9fKSkgfHwgX19oYXNfZmVhdHVyZShtb2R1bGVzKSB8fCAgICAgIFwKICAgIChkZWZpbmVkKF9fQVZYNTEyVkJNSTJfXykgJiYgZGVmaW5lZChfX0FWWDUxMlZMX18pKQojaW5jbHVkZSA8YXZ4NTEydmx2Ym1pMmludHJpbi5oPgojZW5kaWYKCiNpZiAhKGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19TQ0VfXykpIHx8IF9faGFzX2ZlYXR1cmUobW9kdWxlcykgfHwgICAgICBcCiAgICBkZWZpbmVkKF9fQVZYNTEyUEZfXykKI2luY2x1ZGUgPGF2eDUxMnBmaW50cmluLmg+CiNlbmRpZgoKLyoKICogRklYTUU6IF9GbG9hdDE2IHR5cGUgaXMgbGVnYWwgb25seSB3aGVuIEhXIHN1cHBvcnQgZmxvYXQxNiBvcGVyYXRpb24uCiAqIFdlIHVzZSBfX0FWWDUxMkZQMTZfXyB0byBpZGVudGlmeSBpZiBmbG9hdDE2IGlzIHN1cHBvcnRlZCBvciBub3QsIHNvCiAqIHdoZW4gZmxvYXQxNiBpcyBub3Qgc3VwcG9ydGVkLCB0aGUgcmVsYXRlZCBoZWFkZXIgaXMgbm90IGluY2x1ZGVkLgogKgogKi8KI2lmIGRlZmluZWQoX19BVlg1MTJGUDE2X18pCiNpbmNsdWRlIDxhdng1MTJmcDE2aW50cmluLmg+CiNlbmRpZgoKI2lmIGRlZmluZWQoX19BVlg1MTJGUDE2X18pICYmIGRlZmluZWQoX19BVlg1MTJWTF9fKQojaW5jbHVkZSA8YXZ4NTEydmxmcDE2aW50cmluLmg+CiNlbmRpZgoKI2lmICEoZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX1NDRV9fKSkgfHwgX19oYXNfZmVhdHVyZShtb2R1bGVzKSB8fCAgICAgIFwKICAgIGRlZmluZWQoX19BVlg1MTJCRjE2X18pCiNpbmNsdWRlIDxhdng1MTJiZjE2aW50cmluLmg+CiNlbmRpZgoKI2lmICEoZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX1NDRV9fKSkgfHwgX19oYXNfZmVhdHVyZShtb2R1bGVzKSB8fCAgICAgIFwKICAgIChkZWZpbmVkKF9fQVZYNTEyVkxfXykgJiYgZGVmaW5lZChfX0FWWDUxMkJGMTZfXykpCiNpbmNsdWRlIDxhdng1MTJ2bGJmMTZpbnRyaW4uaD4KI2VuZGlmCgojaWYgIShkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fU0NFX18pKSB8fCBfX2hhc19mZWF0dXJlKG1vZHVsZXMpIHx8ICAgICAgXAogICAgZGVmaW5lZChfX1BLVV9fKQojaW5jbHVkZSA8cGt1aW50cmluLmg+CiNlbmRpZgoKI2lmICEoZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX1NDRV9fKSkgfHwgX19oYXNfZmVhdHVyZShtb2R1bGVzKSB8fCAgICAgIFwKICAgIGRlZmluZWQoX19WUENMTVVMUURRX18pCiNpbmNsdWRlIDx2cGNsbXVscWRxaW50cmluLmg+CiNlbmRpZgoKI2lmICEoZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX1NDRV9fKSkgfHwgX19oYXNfZmVhdHVyZShtb2R1bGVzKSB8fCAgICAgIFwKICAgIGRlZmluZWQoX19WQUVTX18pCiNpbmNsdWRlIDx2YWVzaW50cmluLmg+CiNlbmRpZgoKI2lmICEoZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX1NDRV9fKSkgfHwgX19oYXNfZmVhdHVyZShtb2R1bGVzKSB8fCAgICAgIFwKICAgIGRlZmluZWQoX19HRk5JX18pCiNpbmNsdWRlIDxnZm5paW50cmluLmg+CiNlbmRpZgoKI2lmICEoZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX1NDRV9fKSkgfHwgX19oYXNfZmVhdHVyZShtb2R1bGVzKSB8fCAgICAgIFwKICAgIGRlZmluZWQoX19SRFBJRF9fKQovLy8gUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIElBMzJfVFNDX0FVWCBNU1IgKDB4YzAwMDAxMDMpLgovLy8KLy8vIFxoZWFkZXJmaWxlIDxpbW1pbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFJEUElEIDwvYz4gaW5zdHJ1Y3Rpb24uCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGludCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oInJkcGlkIikpKQpfcmRwaWRfdTMyKHZvaWQpIHsKICByZXR1cm4gX19idWlsdGluX2lhMzJfcmRwaWQoKTsKfQojZW5kaWYgLy8gX19SRFBJRF9fCgojaWYgIShkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fU0NFX18pKSB8fCBfX2hhc19mZWF0dXJlKG1vZHVsZXMpIHx8ICAgICAgXAogICAgZGVmaW5lZChfX1JEUk5EX18pCnN0YXRpYyBfX2lubGluZV9fIGludCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oInJkcm5kIikpKQpfcmRyYW5kMTZfc3RlcCh1bnNpZ25lZCBzaG9ydCAqX19wKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3JkcmFuZDE2X3N0ZXAoX19wKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygicmRybmQiKSkpCl9yZHJhbmQzMl9zdGVwKHVuc2lnbmVkIGludCAqX19wKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3JkcmFuZDMyX3N0ZXAoX19wKTsKfQoKI2lmZGVmIF9feDg2XzY0X18Kc3RhdGljIF9faW5saW5lX18gaW50IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygicmRybmQiKSkpCl9yZHJhbmQ2NF9zdGVwKHVuc2lnbmVkIGxvbmcgbG9uZyAqX19wKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3JkcmFuZDY0X3N0ZXAoX19wKTsKfQojZW5kaWYKI2VuZGlmIC8qIF9fUkRSTkRfXyAqLwoKI2lmICEoZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX1NDRV9fKSkgfHwgX19oYXNfZmVhdHVyZShtb2R1bGVzKSB8fCAgICAgIFwKICAgIGRlZmluZWQoX19GU0dTQkFTRV9fKQojaWZkZWYgX194ODZfNjRfXwpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJmc2dzYmFzZSIpKSkKX3JlYWRmc2Jhc2VfdTMyKHZvaWQpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfcmRmc2Jhc2UzMigpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nIGxvbmcgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJmc2dzYmFzZSIpKSkKX3JlYWRmc2Jhc2VfdTY0KHZvaWQpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfcmRmc2Jhc2U2NCgpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJmc2dzYmFzZSIpKSkKX3JlYWRnc2Jhc2VfdTMyKHZvaWQpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfcmRnc2Jhc2UzMigpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nIGxvbmcgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJmc2dzYmFzZSIpKSkKX3JlYWRnc2Jhc2VfdTY0KHZvaWQpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfcmRnc2Jhc2U2NCgpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygiZnNnc2Jhc2UiKSkpCl93cml0ZWZzYmFzZV91MzIodW5zaWduZWQgaW50IF9fVikKewogIF9fYnVpbHRpbl9pYTMyX3dyZnNiYXNlMzIoX19WKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oImZzZ3NiYXNlIikpKQpfd3JpdGVmc2Jhc2VfdTY0KHVuc2lnbmVkIGxvbmcgbG9uZyBfX1YpCnsKICBfX2J1aWx0aW5faWEzMl93cmZzYmFzZTY0KF9fVik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJmc2dzYmFzZSIpKSkKX3dyaXRlZ3NiYXNlX3UzMih1bnNpZ25lZCBpbnQgX19WKQp7CiAgX19idWlsdGluX2lhMzJfd3Jnc2Jhc2UzMihfX1YpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygiZnNnc2Jhc2UiKSkpCl93cml0ZWdzYmFzZV91NjQodW5zaWduZWQgbG9uZyBsb25nIF9fVikKewogIF9fYnVpbHRpbl9pYTMyX3dyZ3NiYXNlNjQoX19WKTsKfQoKI2VuZGlmCiNlbmRpZiAvKiBfX0ZTR1NCQVNFX18gKi8KCiNpZiAhKGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19TQ0VfXykpIHx8IF9faGFzX2ZlYXR1cmUobW9kdWxlcykgfHwgICAgICBcCiAgICBkZWZpbmVkKF9fTU9WQkVfXykKCi8qIFRoZSBzdHJ1Y3RzIHVzZWQgYmVsb3cgYXJlIHRvIGZvcmNlIHRoZSBsb2FkL3N0b3JlIHRvIGJlIHVuYWxpZ25lZC4gVGhpcwogKiBpcyBhY2NvbXBsaXNoZWQgd2l0aCB0aGUgX19wYWNrZWRfXyBhdHRyaWJ1dGUuIFRoZSBfX21heV9hbGlhc19fIHByZXZlbnRzCiAqIHRiYWEgbWV0YWRhdGEgZnJvbSBiZWluZyBnZW5lcmF0ZWQgYmFzZWQgb24gdGhlIHN0cnVjdCBhbmQgdGhlIHR5cGUgb2YgdGhlCiAqIGZpZWxkIGluc2lkZSBvZiBpdC4KICovCgpzdGF0aWMgX19pbmxpbmVfXyBzaG9ydCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oIm1vdmJlIikpKQpfbG9hZGJlX2kxNih2b2lkIGNvbnN0ICogX19QKSB7CiAgc3RydWN0IF9fbG9hZHVfaTE2IHsKICAgIHNob3J0IF9fdjsKICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsKICByZXR1cm4gX19idWlsdGluX2Jzd2FwMTYoKChjb25zdCBzdHJ1Y3QgX19sb2FkdV9pMTYqKV9fUCktPl9fdik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJtb3ZiZSIpKSkKX3N0b3JlYmVfaTE2KHZvaWQgKiBfX1AsIHNob3J0IF9fRCkgewogIHN0cnVjdCBfX3N0b3JldV9pMTYgewogICAgc2hvcnQgX192OwogIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOwogICgoc3RydWN0IF9fc3RvcmV1X2kxNiopX19QKS0+X192ID0gX19idWlsdGluX2Jzd2FwMTYoX19EKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygibW92YmUiKSkpCl9sb2FkYmVfaTMyKHZvaWQgY29uc3QgKiBfX1ApIHsKICBzdHJ1Y3QgX19sb2FkdV9pMzIgewogICAgaW50IF9fdjsKICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsKICByZXR1cm4gX19idWlsdGluX2Jzd2FwMzIoKChjb25zdCBzdHJ1Y3QgX19sb2FkdV9pMzIqKV9fUCktPl9fdik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJtb3ZiZSIpKSkKX3N0b3JlYmVfaTMyKHZvaWQgKiBfX1AsIGludCBfX0QpIHsKICBzdHJ1Y3QgX19zdG9yZXVfaTMyIHsKICAgIGludCBfX3Y7CiAgfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19fKSk7CiAgKChzdHJ1Y3QgX19zdG9yZXVfaTMyKilfX1ApLT5fX3YgPSBfX2J1aWx0aW5fYnN3YXAzMihfX0QpOwp9CgojaWZkZWYgX194ODZfNjRfXwpzdGF0aWMgX19pbmxpbmVfXyBsb25nIGxvbmcgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJtb3ZiZSIpKSkKX2xvYWRiZV9pNjQodm9pZCBjb25zdCAqIF9fUCkgewogIHN0cnVjdCBfX2xvYWR1X2k2NCB7CiAgICBsb25nIGxvbmcgX192OwogIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOwogIHJldHVybiBfX2J1aWx0aW5fYnN3YXA2NCgoKGNvbnN0IHN0cnVjdCBfX2xvYWR1X2k2NCopX19QKS0+X192KTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oIm1vdmJlIikpKQpfc3RvcmViZV9pNjQodm9pZCAqIF9fUCwgbG9uZyBsb25nIF9fRCkgewogIHN0cnVjdCBfX3N0b3JldV9pNjQgewogICAgbG9uZyBsb25nIF9fdjsKICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsKICAoKHN0cnVjdCBfX3N0b3JldV9pNjQqKV9fUCktPl9fdiA9IF9fYnVpbHRpbl9ic3dhcDY0KF9fRCk7Cn0KI2VuZGlmCiNlbmRpZiAvKiBfX01PVkJFICovCgojaWYgIShkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fU0NFX18pKSB8fCBfX2hhc19mZWF0dXJlKG1vZHVsZXMpIHx8ICAgICAgXAogICAgZGVmaW5lZChfX1JUTV9fKQojaW5jbHVkZSA8cnRtaW50cmluLmg+CiNpbmNsdWRlIDx4dGVzdGludHJpbi5oPgojZW5kaWYKCiNpZiAhKGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19TQ0VfXykpIHx8IF9faGFzX2ZlYXR1cmUobW9kdWxlcykgfHwgICAgICBcCiAgICBkZWZpbmVkKF9fU0hBX18pCiNpbmNsdWRlIDxzaGFpbnRyaW4uaD4KI2VuZGlmCgojaWYgIShkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fU0NFX18pKSB8fCBfX2hhc19mZWF0dXJlKG1vZHVsZXMpIHx8ICAgICAgXAogICAgZGVmaW5lZChfX0ZYU1JfXykKI2luY2x1ZGUgPGZ4c3JpbnRyaW4uaD4KI2VuZGlmCgovKiBObyBmZWF0dXJlIGNoZWNrIGRlc2lyZWQgZHVlIHRvIGludGVybmFsIE1TQ19WRVIgY2hlY2tzICovCiNpbmNsdWRlIDx4c2F2ZWludHJpbi5oPgoKI2lmICEoZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX1NDRV9fKSkgfHwgX19oYXNfZmVhdHVyZShtb2R1bGVzKSB8fCAgICAgIFwKICAgIGRlZmluZWQoX19YU0FWRU9QVF9fKQojaW5jbHVkZSA8eHNhdmVvcHRpbnRyaW4uaD4KI2VuZGlmCgojaWYgIShkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fU0NFX18pKSB8fCBfX2hhc19mZWF0dXJlKG1vZHVsZXMpIHx8ICAgICAgXAogICAgZGVmaW5lZChfX1hTQVZFQ19fKQojaW5jbHVkZSA8eHNhdmVjaW50cmluLmg+CiNlbmRpZgoKI2lmICEoZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX1NDRV9fKSkgfHwgX19oYXNfZmVhdHVyZShtb2R1bGVzKSB8fCAgICAgIFwKICAgIGRlZmluZWQoX19YU0FWRVNfXykKI2luY2x1ZGUgPHhzYXZlc2ludHJpbi5oPgojZW5kaWYKCiNpZiAhKGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19TQ0VfXykpIHx8IF9faGFzX2ZlYXR1cmUobW9kdWxlcykgfHwgICAgICBcCiAgICBkZWZpbmVkKF9fU0hTVEtfXykKI2luY2x1ZGUgPGNldGludHJpbi5oPgojZW5kaWYKCi8qIFNvbWUgaW50cmluc2ljcyBpbnNpZGUgYWR4aW50cmluLmggYXJlIGF2YWlsYWJsZSBvbmx5IG9uIHByb2Nlc3NvcnMgd2l0aCBBRFgsCiAqIHdoZXJlYXMgb3RoZXJzIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBhbGwgdGltZXMuICovCiNpbmNsdWRlIDxhZHhpbnRyaW4uaD4KCiNpZiAhKGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19TQ0VfXykpIHx8IF9faGFzX2ZlYXR1cmUobW9kdWxlcykgfHwgICAgICBcCiAgICBkZWZpbmVkKF9fUkRTRUVEX18pCiNpbmNsdWRlIDxyZHNlZWRpbnRyaW4uaD4KI2VuZGlmCgojaWYgIShkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fU0NFX18pKSB8fCBfX2hhc19mZWF0dXJlKG1vZHVsZXMpIHx8ICAgICAgXAogICAgZGVmaW5lZChfX1dCTk9JTlZEX18pCiNpbmNsdWRlIDx3Ym5vaW52ZGludHJpbi5oPgojZW5kaWYKCiNpZiAhKGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19TQ0VfXykpIHx8IF9faGFzX2ZlYXR1cmUobW9kdWxlcykgfHwgICAgICBcCiAgICBkZWZpbmVkKF9fQ0xERU1PVEVfXykKI2luY2x1ZGUgPGNsZGVtb3RlaW50cmluLmg+CiNlbmRpZgoKI2lmICEoZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX1NDRV9fKSkgfHwgX19oYXNfZmVhdHVyZShtb2R1bGVzKSB8fCAgICAgIFwKICAgIGRlZmluZWQoX19XQUlUUEtHX18pCiNpbmNsdWRlIDx3YWl0cGtnaW50cmluLmg+CiNlbmRpZgoKI2lmICEoZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX1NDRV9fKSkgfHwgX19oYXNfZmVhdHVyZShtb2R1bGVzKSB8fCAgICAgIFwKICAgIGRlZmluZWQoX19NT1ZESVJJX18pIHx8IGRlZmluZWQoX19NT1ZESVI2NEJfXykKI2luY2x1ZGUgPG1vdmRpcmludHJpbi5oPgojZW5kaWYKCiNpZiAhKGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19TQ0VfXykpIHx8IF9faGFzX2ZlYXR1cmUobW9kdWxlcykgfHwgICAgICBcCiAgICBkZWZpbmVkKF9fUENPTkZJR19fKQojaW5jbHVkZSA8cGNvbmZpZ2ludHJpbi5oPgojZW5kaWYKCiNpZiAhKGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19TQ0VfXykpIHx8IF9faGFzX2ZlYXR1cmUobW9kdWxlcykgfHwgICAgICBcCiAgICBkZWZpbmVkKF9fU0dYX18pCiNpbmNsdWRlIDxzZ3hpbnRyaW4uaD4KI2VuZGlmCgojaWYgIShkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fU0NFX18pKSB8fCBfX2hhc19mZWF0dXJlKG1vZHVsZXMpIHx8ICAgICAgXAogICAgZGVmaW5lZChfX1BUV1JJVEVfXykKI2luY2x1ZGUgPHB0d3JpdGVpbnRyaW4uaD4KI2VuZGlmCgojaWYgIShkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fU0NFX18pKSB8fCBfX2hhc19mZWF0dXJlKG1vZHVsZXMpIHx8ICAgICAgXAogICAgZGVmaW5lZChfX0lOVlBDSURfXykKI2luY2x1ZGUgPGludnBjaWRpbnRyaW4uaD4KI2VuZGlmCgojaWYgIShkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fU0NFX18pKSB8fCBfX2hhc19mZWF0dXJlKG1vZHVsZXMpIHx8ICAgICAgXAogICAgZGVmaW5lZChfX0tMX18pIHx8IGRlZmluZWQoX19XSURFS0xfXykKI2luY2x1ZGUgPGtleWxvY2tlcmludHJpbi5oPgojZW5kaWYKCiNpZiAhKGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19TQ0VfXykpIHx8IF9faGFzX2ZlYXR1cmUobW9kdWxlcykgfHwgICAgICBcCiAgICBkZWZpbmVkKF9fQU1YVElMRV9fKSB8fCBkZWZpbmVkKF9fQU1YSU5UOF9fKSB8fCBkZWZpbmVkKF9fQU1YQkYxNl9fKQojaW5jbHVkZSA8YW14aW50cmluLmg+CiNlbmRpZgoKI2lmICEoZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX1NDRV9fKSkgfHwgX19oYXNfZmVhdHVyZShtb2R1bGVzKSB8fCAgICAgIFwKICAgIGRlZmluZWQoX19BVlg1MTJWUDJJTlRFUlNFQ1RfXykKI2luY2x1ZGUgPGF2eDUxMnZwMmludGVyc2VjdGludHJpbi5oPgojZW5kaWYKCiNpZiAhKGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19TQ0VfXykpIHx8IF9faGFzX2ZlYXR1cmUobW9kdWxlcykgfHwgICAgICBcCiAgICAoZGVmaW5lZChfX0FWWDUxMlZMX18pICYmIGRlZmluZWQoX19BVlg1MTJWUDJJTlRFUlNFQ1RfXykpCiNpbmNsdWRlIDxhdng1MTJ2bHZwMmludGVyc2VjdGludHJpbi5oPgojZW5kaWYKCiNpZiAhKGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19TQ0VfXykpIHx8IF9faGFzX2ZlYXR1cmUobW9kdWxlcykgfHwgICAgICBcCiAgICBkZWZpbmVkKF9fRU5RQ01EX18pCiNpbmNsdWRlIDxlbnFjbWRpbnRyaW4uaD4KI2VuZGlmCgojaWYgIShkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fU0NFX18pKSB8fCBfX2hhc19mZWF0dXJlKG1vZHVsZXMpIHx8ICAgICAgXAogICAgZGVmaW5lZChfX1NFUklBTElaRV9fKQojaW5jbHVkZSA8c2VyaWFsaXplaW50cmluLmg+CiNlbmRpZgoKI2lmICEoZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX1NDRV9fKSkgfHwgX19oYXNfZmVhdHVyZShtb2R1bGVzKSB8fCAgICAgIFwKICAgIGRlZmluZWQoX19UU1hMRFRSS19fKQojaW5jbHVkZSA8dHN4bGR0cmtpbnRyaW4uaD4KI2VuZGlmCgojaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgX19oYXNfZXh0ZW5zaW9uKGdudV9hc20pCi8qIERlZmluZSB0aGUgZGVmYXVsdCBhdHRyaWJ1dGVzIGZvciB0aGVzZSBpbnRyaW5zaWNzICovCiNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCiNpZmRlZiBfX2NwbHVzcGx1cwpleHRlcm4gIkMiIHsKI2VuZGlmCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcCnwqIEludGVybG9ja2VkIEV4Y2hhbmdlIEhMRQpcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwojaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKQpzdGF0aWMgX19pbmxpbmVfXyBsb25nIF9fREVGQVVMVF9GTl9BVFRSUwpfSW50ZXJsb2NrZWRFeGNoYW5nZV9ITEVBY3F1aXJlKGxvbmcgdm9sYXRpbGUgKl9UYXJnZXQsIGxvbmcgX1ZhbHVlKSB7CiAgX19hc21fXyBfX3ZvbGF0aWxlX18oIi5ieXRlIDB4ZjIgOyBsb2NrIDsgeGNoZyB7JTAsICUxfCUxLCAlMH0iCiAgICAgICAgICAgICAgICAgICAgICAgOiAiK3IiIChfVmFsdWUpLCAiK20iICgqX1RhcmdldCkgOjogIm1lbW9yeSIpOwogIHJldHVybiBfVmFsdWU7Cn0Kc3RhdGljIF9faW5saW5lX18gbG9uZyBfX0RFRkFVTFRfRk5fQVRUUlMKX0ludGVybG9ja2VkRXhjaGFuZ2VfSExFUmVsZWFzZShsb25nIHZvbGF0aWxlICpfVGFyZ2V0LCBsb25nIF9WYWx1ZSkgewogIF9fYXNtX18gX192b2xhdGlsZV9fKCIuYnl0ZSAweGYzIDsgbG9jayA7IHhjaGcgeyUwLCAlMXwlMSwgJTB9IgogICAgICAgICAgICAgICAgICAgICAgIDogIityIiAoX1ZhbHVlKSwgIittIiAoKl9UYXJnZXQpIDo6ICJtZW1vcnkiKTsKICByZXR1cm4gX1ZhbHVlOwp9CiNlbmRpZgojaWYgZGVmaW5lZChfX3g4Nl82NF9fKQpzdGF0aWMgX19pbmxpbmVfXyBfX2ludDY0IF9fREVGQVVMVF9GTl9BVFRSUwpfSW50ZXJsb2NrZWRFeGNoYW5nZTY0X0hMRUFjcXVpcmUoX19pbnQ2NCB2b2xhdGlsZSAqX1RhcmdldCwgX19pbnQ2NCBfVmFsdWUpIHsKICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiLmJ5dGUgMHhmMiA7IGxvY2sgOyB4Y2hnIHslMCwgJTF8JTEsICUwfSIKICAgICAgICAgICAgICAgICAgICAgICA6ICIrciIgKF9WYWx1ZSksICIrbSIgKCpfVGFyZ2V0KSA6OiAibWVtb3J5Iik7CiAgcmV0dXJuIF9WYWx1ZTsKfQpzdGF0aWMgX19pbmxpbmVfXyBfX2ludDY0IF9fREVGQVVMVF9GTl9BVFRSUwpfSW50ZXJsb2NrZWRFeGNoYW5nZTY0X0hMRVJlbGVhc2UoX19pbnQ2NCB2b2xhdGlsZSAqX1RhcmdldCwgX19pbnQ2NCBfVmFsdWUpIHsKICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiLmJ5dGUgMHhmMyA7IGxvY2sgOyB4Y2hnIHslMCwgJTF8JTEsICUwfSIKICAgICAgICAgICAgICAgICAgICAgICA6ICIrciIgKF9WYWx1ZSksICIrbSIgKCpfVGFyZ2V0KSA6OiAibWVtb3J5Iik7CiAgcmV0dXJuIF9WYWx1ZTsKfQojZW5kaWYKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlwKfCogSW50ZXJsb2NrZWQgQ29tcGFyZSBFeGNoYW5nZSBITEUKXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykKc3RhdGljIF9faW5saW5lX18gbG9uZyBfX0RFRkFVTFRfRk5fQVRUUlMKX0ludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlX0hMRUFjcXVpcmUobG9uZyB2b2xhdGlsZSAqX0Rlc3RpbmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIF9FeGNoYW5nZSwgbG9uZyBfQ29tcGFyYW5kKSB7CiAgX19hc21fXyBfX3ZvbGF0aWxlX18oIi5ieXRlIDB4ZjIgOyBsb2NrIDsgY21weGNoZyB7JTIsICUxfCUxLCAlMn0iCiAgICAgICAgICAgICAgICAgICAgICAgOiAiK2EiIChfQ29tcGFyYW5kKSwgIittIiAoKl9EZXN0aW5hdGlvbikKICAgICAgICAgICAgICAgICAgICAgICA6ICJyIiAoX0V4Y2hhbmdlKSA6ICJtZW1vcnkiKTsKICByZXR1cm4gX0NvbXBhcmFuZDsKfQpzdGF0aWMgX19pbmxpbmVfXyBsb25nIF9fREVGQVVMVF9GTl9BVFRSUwpfSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2VfSExFUmVsZWFzZShsb25nIHZvbGF0aWxlICpfRGVzdGluYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgX0V4Y2hhbmdlLCBsb25nIF9Db21wYXJhbmQpIHsKICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiLmJ5dGUgMHhmMyA7IGxvY2sgOyBjbXB4Y2hnIHslMiwgJTF8JTEsICUyfSIKICAgICAgICAgICAgICAgICAgICAgICA6ICIrYSIgKF9Db21wYXJhbmQpLCAiK20iICgqX0Rlc3RpbmF0aW9uKQogICAgICAgICAgICAgICAgICAgICAgIDogInIiIChfRXhjaGFuZ2UpIDogIm1lbW9yeSIpOwogIHJldHVybiBfQ29tcGFyYW5kOwp9CiNlbmRpZgojaWYgZGVmaW5lZChfX3g4Nl82NF9fKQpzdGF0aWMgX19pbmxpbmVfXyBfX2ludDY0IF9fREVGQVVMVF9GTl9BVFRSUwpfSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2U2NF9ITEVBY3F1aXJlKF9faW50NjQgdm9sYXRpbGUgKl9EZXN0aW5hdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19pbnQ2NCBfRXhjaGFuZ2UsIF9faW50NjQgX0NvbXBhcmFuZCkgewogIF9fYXNtX18gX192b2xhdGlsZV9fKCIuYnl0ZSAweGYyIDsgbG9jayA7IGNtcHhjaGcgeyUyLCAlMXwlMSwgJTJ9IgogICAgICAgICAgICAgICAgICAgICAgIDogIithIiAoX0NvbXBhcmFuZCksICIrbSIgKCpfRGVzdGluYXRpb24pCiAgICAgICAgICAgICAgICAgICAgICAgOiAiciIgKF9FeGNoYW5nZSkgOiAibWVtb3J5Iik7CiAgcmV0dXJuIF9Db21wYXJhbmQ7Cn0Kc3RhdGljIF9faW5saW5lX18gX19pbnQ2NCBfX0RFRkFVTFRfRk5fQVRUUlMKX0ludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlNjRfSExFUmVsZWFzZShfX2ludDY0IHZvbGF0aWxlICpfRGVzdGluYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faW50NjQgX0V4Y2hhbmdlLCBfX2ludDY0IF9Db21wYXJhbmQpIHsKICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiLmJ5dGUgMHhmMyA7IGxvY2sgOyBjbXB4Y2hnIHslMiwgJTF8JTEsICUyfSIKICAgICAgICAgICAgICAgICAgICAgICA6ICIrYSIgKF9Db21wYXJhbmQpLCAiK20iICgqX0Rlc3RpbmF0aW9uKQogICAgICAgICAgICAgICAgICAgICAgIDogInIiIChfRXhjaGFuZ2UpIDogIm1lbW9yeSIpOwogIHJldHVybiBfQ29tcGFyYW5kOwp9CiNlbmRpZgojaWZkZWYgX19jcGx1c3BsdXMKfQojZW5kaWYKCiN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlMKCiNlbmRpZiAvKiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBfX2hhc19leHRlbnNpb24oZ251X2FzbSkgKi8KCiNlbmRpZiAvKiBfX0lNTUlOVFJJTl9IICovCgAvKj09PS0tLS0gaW50dHlwZXMuaCAtIFN0YW5kYXJkIGhlYWRlciBmb3IgaW50ZWdlciBwcmludGYgbWFjcm9zIC0tLS0tLS0tLS09PT0qXAogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgpcKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0qLwoKI2lmbmRlZiBfX0NMQU5HX0lOVFRZUEVTX0gKLy8gQUlYIHN5c3RlbSBoZWFkZXJzIG5lZWQgaW50dHlwZXMuaCB0byBiZSByZS1lbnRlcmFibGUgd2hpbGUgX1NURF9UWVBFU19UCi8vIGlzIGRlZmluZWQgdW50aWwgYW4gaW5jbHVzaW9uIG9mIGl0IHdpdGhvdXQgX1NURF9UWVBFU19UIG9jY3VycywgaW4gd2hpY2gKLy8gY2FzZSB0aGUgaGVhZGVyIGd1YXJkIG1hY3JvIGlzIGRlZmluZWQuCiNpZiAhZGVmaW5lZChfQUlYKSB8fCAhZGVmaW5lZChfU1REX1RZUEVTX1QpCiNkZWZpbmUgX19DTEFOR19JTlRUWVBFU19ICiNlbmRpZgoKI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVSIDwgMTgwMAojZXJyb3IgTVNWQyBkb2VzIG5vdCBoYXZlIGludHR5cGVzLmggcHJpb3IgdG8gVmlzdWFsIFN0dWRpbyAyMDEzCiNlbmRpZgoKI2luY2x1ZGVfbmV4dCA8aW50dHlwZXMuaD4KCiNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZFUiA8IDE5MDAKLyogTVNWQyBoZWFkZXJzIGRlZmluZSBpbnQzMl90IGFzIGludCwgYnV0IFBSSXgzMiBhcyAibHgiIGluc3RlYWQgb2YgIngiLgogKiBUaGlzIHRyaWdnZXJzIGZvcm1hdCB3YXJuaW5ncywgc28gZml4IGl0IHVwIGhlcmUuICovCiN1bmRlZiBQUklkMzIKI3VuZGVmIFBSSWRMRUFTVDMyCiN1bmRlZiBQUklkRkFTVDMyCiN1bmRlZiBQUklpMzIKI3VuZGVmIFBSSWlMRUFTVDMyCiN1bmRlZiBQUklpRkFTVDMyCiN1bmRlZiBQUklvMzIKI3VuZGVmIFBSSW9MRUFTVDMyCiN1bmRlZiBQUklvRkFTVDMyCiN1bmRlZiBQUkl1MzIKI3VuZGVmIFBSSXVMRUFTVDMyCiN1bmRlZiBQUkl1RkFTVDMyCiN1bmRlZiBQUkl4MzIKI3VuZGVmIFBSSXhMRUFTVDMyCiN1bmRlZiBQUkl4RkFTVDMyCiN1bmRlZiBQUklYMzIKI3VuZGVmIFBSSVhMRUFTVDMyCiN1bmRlZiBQUklYRkFTVDMyCgojdW5kZWYgU0NOZDMyCiN1bmRlZiBTQ05kTEVBU1QzMgojdW5kZWYgU0NOZEZBU1QzMgojdW5kZWYgU0NOaTMyCiN1bmRlZiBTQ05pTEVBU1QzMgojdW5kZWYgU0NOaUZBU1QzMgojdW5kZWYgU0NObzMyCiN1bmRlZiBTQ05vTEVBU1QzMgojdW5kZWYgU0NOb0ZBU1QzMgojdW5kZWYgU0NOdTMyCiN1bmRlZiBTQ051TEVBU1QzMgojdW5kZWYgU0NOdUZBU1QzMgojdW5kZWYgU0NOeDMyCiN1bmRlZiBTQ054TEVBU1QzMgojdW5kZWYgU0NOeEZBU1QzMgoKI2RlZmluZSBQUklkMzIgImQiCiNkZWZpbmUgUFJJZExFQVNUMzIgImQiCiNkZWZpbmUgUFJJZEZBU1QzMiAiZCIKI2RlZmluZSBQUklpMzIgImkiCiNkZWZpbmUgUFJJaUxFQVNUMzIgImkiCiNkZWZpbmUgUFJJaUZBU1QzMiAiaSIKI2RlZmluZSBQUklvMzIgIm8iCiNkZWZpbmUgUFJJb0xFQVNUMzIgIm8iCiNkZWZpbmUgUFJJb0ZBU1QzMiAibyIKI2RlZmluZSBQUkl1MzIgInUiCiNkZWZpbmUgUFJJdUxFQVNUMzIgInUiCiNkZWZpbmUgUFJJdUZBU1QzMiAidSIKI2RlZmluZSBQUkl4MzIgIngiCiNkZWZpbmUgUFJJeExFQVNUMzIgIngiCiNkZWZpbmUgUFJJeEZBU1QzMiAieCIKI2RlZmluZSBQUklYMzIgIlgiCiNkZWZpbmUgUFJJWExFQVNUMzIgIlgiCiNkZWZpbmUgUFJJWEZBU1QzMiAiWCIKCiNkZWZpbmUgU0NOZDMyICJkIgojZGVmaW5lIFNDTmRMRUFTVDMyICJkIgojZGVmaW5lIFNDTmRGQVNUMzIgImQiCiNkZWZpbmUgU0NOaTMyICJpIgojZGVmaW5lIFNDTmlMRUFTVDMyICJpIgojZGVmaW5lIFNDTmlGQVNUMzIgImkiCiNkZWZpbmUgU0NObzMyICJvIgojZGVmaW5lIFNDTm9MRUFTVDMyICJvIgojZGVmaW5lIFNDTm9GQVNUMzIgIm8iCiNkZWZpbmUgU0NOdTMyICJ1IgojZGVmaW5lIFNDTnVMRUFTVDMyICJ1IgojZGVmaW5lIFNDTnVGQVNUMzIgInUiCiNkZWZpbmUgU0NOeDMyICJ4IgojZGVmaW5lIFNDTnhMRUFTVDMyICJ4IgojZGVmaW5lIFNDTnhGQVNUMzIgIngiCiNlbmRpZgoKI2VuZGlmIC8qIF9fQ0xBTkdfSU5UVFlQRVNfSCAqLwoALyoKICogaW5jbHVkZS9vbXAuaC52YXIKICovCgoKLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KLy8KLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KLy8KLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KCgojaWZuZGVmIF9fT01QX0gKIyAgIGRlZmluZSBfX09NUF9ICgojICAgaW5jbHVkZSA8c3RkbGliLmg+CiMgICBpbmNsdWRlIDxzdGRpbnQuaD4KCiMgICBkZWZpbmUgS01QX1ZFUlNJT05fTUFKT1IgICAgNQojICAgZGVmaW5lIEtNUF9WRVJTSU9OX01JTk9SICAgIDAKIyAgIGRlZmluZSBLTVBfVkVSU0lPTl9CVUlMRCAgICAyMDE0MDkyNgojICAgZGVmaW5lIEtNUF9CVUlMRF9EQVRFICAgICAgICJOb19UaW1lc3RhbXAiCgojICAgaWZkZWYgX19jcGx1c3BsdXMKICAgIGV4dGVybiAiQyIgewojICAgZW5kaWYKCiMgICBkZWZpbmUgb21wX3NldF9hZmZpbml0eV9mb3JtYXQgICBvbXBjX3NldF9hZmZpbml0eV9mb3JtYXQKIyAgIGRlZmluZSBvbXBfZ2V0X2FmZmluaXR5X2Zvcm1hdCAgIG9tcGNfZ2V0X2FmZmluaXR5X2Zvcm1hdAojICAgZGVmaW5lIG9tcF9kaXNwbGF5X2FmZmluaXR5ICAgICAgb21wY19kaXNwbGF5X2FmZmluaXR5CiMgICBkZWZpbmUgb21wX2NhcHR1cmVfYWZmaW5pdHkgICAgICBvbXBjX2NhcHR1cmVfYWZmaW5pdHkKCiMgICBpZiBkZWZpbmVkKF9XSU4zMikKIyAgICAgICBkZWZpbmUgX19LQUlfS01QQ19DT05WRU5USU9OIF9fY2RlY2wKIyAgICAgICBpZm5kZWYgX19LTVBfSU1QCiMgICAgICAgICAgIGRlZmluZSBfX0tNUF9JTVAgX19kZWNsc3BlYyhkbGxpbXBvcnQpCiMgICAgICAgZW5kaWYKIyAgIGVsc2UKIyAgICAgICBkZWZpbmUgX19LQUlfS01QQ19DT05WRU5USU9OCiMgICAgICAgaWZuZGVmIF9fS01QX0lNUAojICAgICAgICAgICBkZWZpbmUgX19LTVBfSU1QCiMgICAgICAgZW5kaWYKIyAgIGVuZGlmCgogICAgLyogc2NoZWR1bGUga2luZCBjb25zdGFudHMgKi8KICAgIHR5cGVkZWYgZW51bSBvbXBfc2NoZWRfdCB7CiAgICAgICAgb21wX3NjaGVkX3N0YXRpYyAgPSAxLAogICAgICAgIG9tcF9zY2hlZF9keW5hbWljID0gMiwKICAgICAgICBvbXBfc2NoZWRfZ3VpZGVkICA9IDMsCiAgICAgICAgb21wX3NjaGVkX2F1dG8gICAgPSA0LAogICAgICAgIG9tcF9zY2hlZF9tb25vdG9uaWMgPSAweDgwMDAwMDAwCiAgICB9IG9tcF9zY2hlZF90OwoKICAgIC8qIHNldCBBUEkgZnVuY3Rpb25zICovCiAgICBleHRlcm4gdm9pZCAgIF9fS0FJX0tNUENfQ09OVkVOVElPTiAgb21wX3NldF9udW1fdGhyZWFkcyAoaW50KTsKICAgIGV4dGVybiB2b2lkICAgX19LQUlfS01QQ19DT05WRU5USU9OICBvbXBfc2V0X2R5bmFtaWMgICAgIChpbnQpOwogICAgZXh0ZXJuIHZvaWQgICBfX0tBSV9LTVBDX0NPTlZFTlRJT04gIG9tcF9zZXRfbmVzdGVkICAgICAgKGludCk7CiAgICBleHRlcm4gdm9pZCAgIF9fS0FJX0tNUENfQ09OVkVOVElPTiAgb21wX3NldF9tYXhfYWN0aXZlX2xldmVscyAoaW50KTsKICAgIGV4dGVybiB2b2lkICAgX19LQUlfS01QQ19DT05WRU5USU9OICBvbXBfc2V0X3NjaGVkdWxlICAgICAgICAgIChvbXBfc2NoZWRfdCwgaW50KTsKCiAgICAvKiBxdWVyeSBBUEkgZnVuY3Rpb25zICovCiAgICBleHRlcm4gaW50ICAgIF9fS0FJX0tNUENfQ09OVkVOVElPTiAgb21wX2dldF9udW1fdGhyZWFkcyAgKHZvaWQpOwogICAgZXh0ZXJuIGludCAgICBfX0tBSV9LTVBDX0NPTlZFTlRJT04gIG9tcF9nZXRfZHluYW1pYyAgICAgICh2b2lkKTsKICAgIGV4dGVybiBpbnQgICAgX19LQUlfS01QQ19DT05WRU5USU9OICBvbXBfZ2V0X25lc3RlZCAgICAgICAodm9pZCk7CiAgICBleHRlcm4gaW50ICAgIF9fS0FJX0tNUENfQ09OVkVOVElPTiAgb21wX2dldF9tYXhfdGhyZWFkcyAgKHZvaWQpOwogICAgZXh0ZXJuIGludCAgICBfX0tBSV9LTVBDX0NPTlZFTlRJT04gIG9tcF9nZXRfdGhyZWFkX251bSAgICh2b2lkKTsKICAgIGV4dGVybiBpbnQgICAgX19LQUlfS01QQ19DT05WRU5USU9OICBvbXBfZ2V0X251bV9wcm9jcyAgICAodm9pZCk7CiAgICBleHRlcm4gaW50ICAgIF9fS0FJX0tNUENfQ09OVkVOVElPTiAgb21wX2luX3BhcmFsbGVsICAgICAgKHZvaWQpOwogICAgZXh0ZXJuIGludCAgICBfX0tBSV9LTVBDX0NPTlZFTlRJT04gIG9tcF9pbl9maW5hbCAgICAgICAgICh2b2lkKTsKICAgIGV4dGVybiBpbnQgICAgX19LQUlfS01QQ19DT05WRU5USU9OICBvbXBfZ2V0X2FjdGl2ZV9sZXZlbCAgICAgICAgKHZvaWQpOwogICAgZXh0ZXJuIGludCAgICBfX0tBSV9LTVBDX0NPTlZFTlRJT04gIG9tcF9nZXRfbGV2ZWwgICAgICAgICAgICAgICAodm9pZCk7CiAgICBleHRlcm4gaW50ICAgIF9fS0FJX0tNUENfQ09OVkVOVElPTiAgb21wX2dldF9hbmNlc3Rvcl90aHJlYWRfbnVtIChpbnQpOwogICAgZXh0ZXJuIGludCAgICBfX0tBSV9LTVBDX0NPTlZFTlRJT04gIG9tcF9nZXRfdGVhbV9zaXplICAgICAgICAgICAoaW50KTsKICAgIGV4dGVybiBpbnQgICAgX19LQUlfS01QQ19DT05WRU5USU9OICBvbXBfZ2V0X3RocmVhZF9saW1pdCAgICAgICAgKHZvaWQpOwogICAgZXh0ZXJuIGludCAgICBfX0tBSV9LTVBDX0NPTlZFTlRJT04gIG9tcF9nZXRfbWF4X2FjdGl2ZV9sZXZlbHMgICAodm9pZCk7CiAgICBleHRlcm4gdm9pZCAgIF9fS0FJX0tNUENfQ09OVkVOVElPTiAgb21wX2dldF9zY2hlZHVsZSAgICAgICAgICAgIChvbXBfc2NoZWRfdCAqLCBpbnQgKik7CiAgICBleHRlcm4gaW50ICAgIF9fS0FJX0tNUENfQ09OVkVOVElPTiAgb21wX2dldF9tYXhfdGFza19wcmlvcml0eSAgICh2b2lkKTsKCiAgICAvKiBsb2NrIEFQSSBmdW5jdGlvbnMgKi8KICAgIHR5cGVkZWYgc3RydWN0IG9tcF9sb2NrX3QgewogICAgICAgIHZvaWQgKiBfbGs7CiAgICB9IG9tcF9sb2NrX3Q7CgogICAgZXh0ZXJuIHZvaWQgICBfX0tBSV9LTVBDX0NPTlZFTlRJT04gIG9tcF9pbml0X2xvY2sgICAgKG9tcF9sb2NrX3QgKik7CiAgICBleHRlcm4gdm9pZCAgIF9fS0FJX0tNUENfQ09OVkVOVElPTiAgb21wX3NldF9sb2NrICAgICAob21wX2xvY2tfdCAqKTsKICAgIGV4dGVybiB2b2lkICAgX19LQUlfS01QQ19DT05WRU5USU9OICBvbXBfdW5zZXRfbG9jayAgIChvbXBfbG9ja190ICopOwogICAgZXh0ZXJuIHZvaWQgICBfX0tBSV9LTVBDX0NPTlZFTlRJT04gIG9tcF9kZXN0cm95X2xvY2sgKG9tcF9sb2NrX3QgKik7CiAgICBleHRlcm4gaW50ICAgIF9fS0FJX0tNUENfQ09OVkVOVElPTiAgb21wX3Rlc3RfbG9jayAgICAob21wX2xvY2tfdCAqKTsKCiAgICAvKiBuZXN0ZWQgbG9jayBBUEkgZnVuY3Rpb25zICovCiAgICB0eXBlZGVmIHN0cnVjdCBvbXBfbmVzdF9sb2NrX3QgewogICAgICAgIHZvaWQgKiBfbGs7CiAgICB9IG9tcF9uZXN0X2xvY2tfdDsKCiAgICBleHRlcm4gdm9pZCAgIF9fS0FJX0tNUENfQ09OVkVOVElPTiAgb21wX2luaXRfbmVzdF9sb2NrICAgIChvbXBfbmVzdF9sb2NrX3QgKik7CiAgICBleHRlcm4gdm9pZCAgIF9fS0FJX0tNUENfQ09OVkVOVElPTiAgb21wX3NldF9uZXN0X2xvY2sgICAgIChvbXBfbmVzdF9sb2NrX3QgKik7CiAgICBleHRlcm4gdm9pZCAgIF9fS0FJX0tNUENfQ09OVkVOVElPTiAgb21wX3Vuc2V0X25lc3RfbG9jayAgIChvbXBfbmVzdF9sb2NrX3QgKik7CiAgICBleHRlcm4gdm9pZCAgIF9fS0FJX0tNUENfQ09OVkVOVElPTiAgb21wX2Rlc3Ryb3lfbmVzdF9sb2NrIChvbXBfbmVzdF9sb2NrX3QgKik7CiAgICBleHRlcm4gaW50ICAgIF9fS0FJX0tNUENfQ09OVkVOVElPTiAgb21wX3Rlc3RfbmVzdF9sb2NrICAgIChvbXBfbmVzdF9sb2NrX3QgKik7CgogICAgLyogT3Blbk1QIDUuMCAgU3luY2hyb25pemF0aW9uIGhpbnRzKi8KICAgIHR5cGVkZWYgZW51bSBvbXBfc3luY19oaW50X3QgewogICAgICAgIG9tcF9zeW5jX2hpbnRfbm9uZSAgICAgICAgICAgPSAwLAogICAgICAgIG9tcF9sb2NrX2hpbnRfbm9uZSAgICAgICAgICAgPSBvbXBfc3luY19oaW50X25vbmUsCiAgICAgICAgb21wX3N5bmNfaGludF91bmNvbnRlbmRlZCAgICA9IDEsCiAgICAgICAgb21wX2xvY2tfaGludF91bmNvbnRlbmRlZCAgICA9IG9tcF9zeW5jX2hpbnRfdW5jb250ZW5kZWQsCiAgICAgICAgb21wX3N5bmNfaGludF9jb250ZW5kZWQgICAgICA9ICgxPDwxKSwKICAgICAgICBvbXBfbG9ja19oaW50X2NvbnRlbmRlZCAgICAgID0gb21wX3N5bmNfaGludF9jb250ZW5kZWQsCiAgICAgICAgb21wX3N5bmNfaGludF9ub25zcGVjdWxhdGl2ZSA9ICgxPDwyKSwKICAgICAgICBvbXBfbG9ja19oaW50X25vbnNwZWN1bGF0aXZlID0gb21wX3N5bmNfaGludF9ub25zcGVjdWxhdGl2ZSwKICAgICAgICBvbXBfc3luY19oaW50X3NwZWN1bGF0aXZlICAgID0gKDE8PDMpLAogICAgICAgIG9tcF9sb2NrX2hpbnRfc3BlY3VsYXRpdmUgICAgPSBvbXBfc3luY19oaW50X3NwZWN1bGF0aXZlLAogICAgICAgIGttcF9sb2NrX2hpbnRfaGxlICAgICAgICAgICAgPSAoMTw8MTYpLAogICAgICAgIGttcF9sb2NrX2hpbnRfcnRtICAgICAgICAgICAgPSAoMTw8MTcpLAogICAgICAgIGttcF9sb2NrX2hpbnRfYWRhcHRpdmUgICAgICAgPSAoMTw8MTgpCiAgICB9IG9tcF9zeW5jX2hpbnRfdDsKCiAgICAvKiBsb2NrIGhpbnQgdHlwZSBmb3IgZHluYW1pYyB1c2VyIGxvY2sgKi8KICAgIHR5cGVkZWYgb21wX3N5bmNfaGludF90IG9tcF9sb2NrX2hpbnRfdDsKCiAgICAvKiBoaW50ZWQgbG9jayBpbml0aWFsaXplcnMgKi8KICAgIGV4dGVybiB2b2lkIF9fS0FJX0tNUENfQ09OVkVOVElPTiBvbXBfaW5pdF9sb2NrX3dpdGhfaGludChvbXBfbG9ja190ICosIG9tcF9sb2NrX2hpbnRfdCk7CiAgICBleHRlcm4gdm9pZCBfX0tBSV9LTVBDX0NPTlZFTlRJT04gb21wX2luaXRfbmVzdF9sb2NrX3dpdGhfaGludChvbXBfbmVzdF9sb2NrX3QgKiwgb21wX2xvY2tfaGludF90KTsKCiAgICAvKiB0aW1lIEFQSSBmdW5jdGlvbnMgKi8KICAgIGV4dGVybiBkb3VibGUgX19LQUlfS01QQ19DT05WRU5USU9OICBvbXBfZ2V0X3d0aW1lICh2b2lkKTsKICAgIGV4dGVybiBkb3VibGUgX19LQUlfS01QQ19DT05WRU5USU9OICBvbXBfZ2V0X3d0aWNrICh2b2lkKTsKCiAgICAvKiBPcGVuTVAgNC4wICovCiAgICBleHRlcm4gaW50ICBfX0tBSV9LTVBDX0NPTlZFTlRJT04gIG9tcF9nZXRfZGVmYXVsdF9kZXZpY2UgKHZvaWQpOwogICAgZXh0ZXJuIHZvaWQgX19LQUlfS01QQ19DT05WRU5USU9OICBvbXBfc2V0X2RlZmF1bHRfZGV2aWNlIChpbnQpOwogICAgZXh0ZXJuIGludCAgX19LQUlfS01QQ19DT05WRU5USU9OICBvbXBfaXNfaW5pdGlhbF9kZXZpY2UgKHZvaWQpOwogICAgZXh0ZXJuIGludCAgX19LQUlfS01QQ19DT05WRU5USU9OICBvbXBfZ2V0X251bV9kZXZpY2VzICh2b2lkKTsKICAgIGV4dGVybiBpbnQgIF9fS0FJX0tNUENfQ09OVkVOVElPTiAgb21wX2dldF9udW1fdGVhbXMgKHZvaWQpOwogICAgZXh0ZXJuIGludCAgX19LQUlfS01QQ19DT05WRU5USU9OICBvbXBfZ2V0X3RlYW1fbnVtICh2b2lkKTsKICAgIGV4dGVybiBpbnQgIF9fS0FJX0tNUENfQ09OVkVOVElPTiAgb21wX2dldF9jYW5jZWxsYXRpb24gKHZvaWQpOwoKICAgIC8qIE9wZW5NUCA0LjUgKi8KICAgIGV4dGVybiBpbnQgICBfX0tBSV9LTVBDX0NPTlZFTlRJT04gIG9tcF9nZXRfaW5pdGlhbF9kZXZpY2UgKHZvaWQpOwogICAgZXh0ZXJuIHZvaWQqIF9fS0FJX0tNUENfQ09OVkVOVElPTiAgb21wX3RhcmdldF9hbGxvYyhzaXplX3QsIGludCk7CiAgICBleHRlcm4gdm9pZCAgX19LQUlfS01QQ19DT05WRU5USU9OICBvbXBfdGFyZ2V0X2ZyZWUodm9pZCAqLCBpbnQpOwogICAgZXh0ZXJuIGludCAgIF9fS0FJX0tNUENfQ09OVkVOVElPTiAgb21wX3RhcmdldF9pc19wcmVzZW50KGNvbnN0IHZvaWQgKiwgaW50KTsKICAgIGV4dGVybiBpbnQgICBfX0tBSV9LTVBDX0NPTlZFTlRJT04gIG9tcF90YXJnZXRfbWVtY3B5KHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QsIHNpemVfdCwgc2l6ZV90LCBpbnQsIGludCk7CiAgICBleHRlcm4gaW50ICAgX19LQUlfS01QQ19DT05WRU5USU9OICBvbXBfdGFyZ2V0X21lbWNweV9yZWN0KHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QsIGludCwgY29uc3Qgc2l6ZV90ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2l6ZV90ICosIGNvbnN0IHNpemVfdCAqLCBjb25zdCBzaXplX3QgKiwgY29uc3Qgc2l6ZV90ICosIGludCwgaW50KTsKICAgIGV4dGVybiBpbnQgICBfX0tBSV9LTVBDX0NPTlZFTlRJT04gIG9tcF90YXJnZXRfYXNzb2NpYXRlX3B0cihjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90LCBzaXplX3QsIGludCk7CiAgICBleHRlcm4gaW50ICAgX19LQUlfS01QQ19DT05WRU5USU9OICBvbXBfdGFyZ2V0X2Rpc2Fzc29jaWF0ZV9wdHIoY29uc3Qgdm9pZCAqLCBpbnQpOwoKICAgIC8qIE9wZW5NUCA1LjAgKi8KICAgIGV4dGVybiBpbnQgICBfX0tBSV9LTVBDX0NPTlZFTlRJT04gIG9tcF9nZXRfZGV2aWNlX251bSAodm9pZCk7CiAgICB0eXBlZGVmIHZvaWQgKiBvbXBfZGVwZW5kX3Q7CgogICAgLyogT3Blbk1QIDUuMSBpbnRlcm9wICovCiAgICB0eXBlZGVmIGludHB0cl90IG9tcF9pbnRwdHJfdDsKCiAgICAvKiAwLi5vbXBfZ2V0X251bV9pbnRlcm9wX3Byb3BlcnRpZXMoKS0xIGFyZSByZXNlcnZlZCBmb3IgaW1wbGVtZW50YXRpb24tZGVmaW5lZCBwcm9wZXJ0aWVzICovCiAgICB0eXBlZGVmIGVudW0gb21wX2ludGVyb3BfcHJvcGVydHkgewogICAgICAgIG9tcF9pcHJfZnJfaWQgPSAtMSwKICAgICAgICBvbXBfaXByX2ZyX25hbWUgPSAtMiwKICAgICAgICBvbXBfaXByX3ZlbmRvciA9IC0zLAogICAgICAgIG9tcF9pcHJfdmVuZG9yX25hbWUgPSAtNCwKICAgICAgICBvbXBfaXByX2RldmljZV9udW0gPSAtNSwKICAgICAgICBvbXBfaXByX3BsYXRmb3JtID0gLTYsCiAgICAgICAgb21wX2lwcl9kZXZpY2UgPSAtNywKICAgICAgICBvbXBfaXByX2RldmljZV9jb250ZXh0ID0gLTgsCiAgICAgICAgb21wX2lwcl90YXJnZXRzeW5jID0gLTksCiAgICAgICAgb21wX2lwcl9maXJzdCA9IC05CiAgICB9IG9tcF9pbnRlcm9wX3Byb3BlcnR5X3Q7CgogICAgI2RlZmluZSBvbXBfaW50ZXJvcF9ub25lIDAKCiAgICB0eXBlZGVmIGVudW0gb21wX2ludGVyb3BfcmMgewogICAgICAgIG9tcF9pcmNfbm9fdmFsdWUgPSAxLAogICAgICAgIG9tcF9pcmNfc3VjY2VzcyA9IDAsCiAgICAgICAgb21wX2lyY19lbXB0eSA9IC0xLAogICAgICAgIG9tcF9pcmNfb3V0X29mX3JhbmdlID0gLTIsCiAgICAgICAgb21wX2lyY190eXBlX2ludCA9IC0zLAogICAgICAgIG9tcF9pcmNfdHlwZV9wdHIgPSAtNCwKICAgICAgICBvbXBfaXJjX3R5cGVfc3RyID0gLTUsCiAgICAgICAgb21wX2lyY19vdGhlciA9IC02CiAgICB9IG9tcF9pbnRlcm9wX3JjX3Q7CgogICAgdHlwZWRlZiBlbnVtIG9tcF9pbnRlcm9wX2ZyIHsKICAgICAgICBvbXBfaWZyX2N1ZGEgPSAxLAogICAgICAgIG9tcF9pZnJfY3VkYV9kcml2ZXIgPSAyLAogICAgICAgIG9tcF9pZnJfb3BlbmNsID0gMywKICAgICAgICBvbXBfaWZyX3N5Y2wgPSA0LAogICAgICAgIG9tcF9pZnJfaGlwID0gNSwKICAgICAgICBvbXBfaWZyX2xldmVsX3plcm8gPSA2LAogICAgICAgIG9tcF9pZnJfbGFzdCA9IDcKICAgIH0gb21wX2ludGVyb3BfZnJfdDsKCiAgICB0eXBlZGVmIHZvaWQgKiBvbXBfaW50ZXJvcF90OwoKICAgIC8qIQogICAgICogVGhlIGBvbXBfZ2V0X251bV9pbnRlcm9wX3Byb3BlcnRpZXNgIHJvdXRpbmUgcmV0cmlldmVzIHRoZSBudW1iZXIgb2YgaW1wbGVtZW50YXRpb24tZGVmaW5lZCBwcm9wZXJ0aWVzIGF2YWlsYWJsZSBmb3IgYW4gYG9tcF9pbnRlcm9wX3RgIG9iamVjdC4KICAgICAqLwogICAgZXh0ZXJuIGludCAgICAgICAgICBfX0tBSV9LTVBDX0NPTlZFTlRJT04gIG9tcF9nZXRfbnVtX2ludGVyb3BfcHJvcGVydGllcyhjb25zdCBvbXBfaW50ZXJvcF90KTsKICAgIC8qIQogICAgICogVGhlIGBvbXBfZ2V0X2ludGVyb3BfaW50YCByb3V0aW5lIHJldHJpZXZlcyBhbiBpbnRlZ2VyIHByb3BlcnR5IGZyb20gYW4gYG9tcF9pbnRlcm9wX3RgIG9iamVjdC4KICAgICAqLwogICAgZXh0ZXJuIG9tcF9pbnRwdHJfdCBfX0tBSV9LTVBDX0NPTlZFTlRJT04gIG9tcF9nZXRfaW50ZXJvcF9pbnQoY29uc3Qgb21wX2ludGVyb3BfdCwgb21wX2ludGVyb3BfcHJvcGVydHlfdCwgaW50ICopOwogICAgLyohCiAgICAgKiBUaGUgYG9tcF9nZXRfaW50ZXJvcF9wdHJgIHJvdXRpbmUgcmV0cmlldmVzIGEgcG9pbnRlciBwcm9wZXJ0eSBmcm9tIGFuIGBvbXBfaW50ZXJvcF90YCBvYmplY3QuCiAgICAgKi8KICAgIGV4dGVybiB2b2lkICogICAgICAgX19LQUlfS01QQ19DT05WRU5USU9OICBvbXBfZ2V0X2ludGVyb3BfcHRyKGNvbnN0IG9tcF9pbnRlcm9wX3QsIG9tcF9pbnRlcm9wX3Byb3BlcnR5X3QsIGludCAqKTsKICAgIC8qIQogICAgICogVGhlIGBvbXBfZ2V0X2ludGVyb3Bfc3RyYCByb3V0aW5lIHJldHJpZXZlcyBhIHN0cmluZyBwcm9wZXJ0eSBmcm9tIGFuIGBvbXBfaW50ZXJvcF90YCBvYmplY3QuCiAgICAgKi8KICAgIGV4dGVybiBjb25zdCBjaGFyICogX19LQUlfS01QQ19DT05WRU5USU9OICBvbXBfZ2V0X2ludGVyb3Bfc3RyKGNvbnN0IG9tcF9pbnRlcm9wX3QsIG9tcF9pbnRlcm9wX3Byb3BlcnR5X3QsIGludCAqKTsKICAgIC8qIQogICAgICogVGhlIGBvbXBfZ2V0X2ludGVyb3BfbmFtZWAgcm91dGluZSByZXRyaWV2ZXMgYSBwcm9wZXJ0eSBuYW1lIGZyb20gYW4gYG9tcF9pbnRlcm9wX3RgIG9iamVjdC4KICAgICAqLwogICAgZXh0ZXJuIGNvbnN0IGNoYXIgKiBfX0tBSV9LTVBDX0NPTlZFTlRJT04gIG9tcF9nZXRfaW50ZXJvcF9uYW1lKGNvbnN0IG9tcF9pbnRlcm9wX3QsIG9tcF9pbnRlcm9wX3Byb3BlcnR5X3QpOwogICAgLyohCiAgICAgKiBUaGUgYG9tcF9nZXRfaW50ZXJvcF90eXBlX2Rlc2NgIHJvdXRpbmUgcmV0cmlldmVzIGEgZGVzY3JpcHRpb24gb2YgdGhlIHR5cGUgb2YgYSBwcm9wZXJ0eSBhc3NvY2lhdGVkIHdpdGggYW4gYG9tcF9pbnRlcm9wX3RgIG9iamVjdC4KICAgICAqLwogICAgZXh0ZXJuIGNvbnN0IGNoYXIgKiBfX0tBSV9LTVBDX0NPTlZFTlRJT04gIG9tcF9nZXRfaW50ZXJvcF90eXBlX2Rlc2MoY29uc3Qgb21wX2ludGVyb3BfdCwgb21wX2ludGVyb3BfcHJvcGVydHlfdCk7CiAgICAvKiEKICAgICAqIFRoZSBgb21wX2dldF9pbnRlcm9wX3JjX2Rlc2NgIHJvdXRpbmUgcmV0cmlldmVzIGEgZGVzY3JpcHRpb24gb2YgdGhlIHJldHVybiBjb2RlIGFzc29jaWF0ZWQgd2l0aCBhbiBgb21wX2ludGVyb3BfdGAgb2JqZWN0LgogICAgICovCiAgICBleHRlcm4gY29uc3QgY2hhciAqIF9fS0FJX0tNUENfQ09OVkVOVElPTiAgb21wX2dldF9pbnRlcm9wX3JjX2Rlc2MoY29uc3Qgb21wX2ludGVyb3BfdCwgb21wX2ludGVyb3BfcmNfdCk7CgogICAgLyogT3Blbk1QIDUuMSBkZXZpY2UgbWVtb3J5IHJvdXRpbmVzICovCgogICAgLyohCiAgICAgKiBUaGUgYG9tcF90YXJnZXRfbWVtY3B5X2FzeW5jYCByb3V0aW5lIGFzeW5jaHJvbm91c2x5IHBlcmZvcm1zIGEgY29weSBiZXR3ZWVuIGFueSBjb21iaW5hdGlvbiBvZiBob3N0IGFuZCBkZXZpY2UgcG9pbnRlcnMuCiAgICAgKi8KICAgIGV4dGVybiBpbnQgICAgX19LQUlfS01QQ19DT05WRU5USU9OICBvbXBfdGFyZ2V0X21lbWNweV9hc3luYyh2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90LCBzaXplX3QsIHNpemVfdCwgaW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQsIGludCwgb21wX2RlcGVuZF90ICopOwogICAgLyohCiAgICAgKiBUaGUgYG9tcF90YXJnZXRfbWVtY3B5X3JlY3RfYXN5bmNgIHJvdXRpbmUgYXN5bmNocm9ub3VzbHkgcGVyZm9ybXMgYSBjb3B5IGJldHdlZW4gYW55IGNvbWJpbmF0aW9uIG9mIGhvc3QgYW5kIGRldmljZSBwb2ludGVycy4KICAgICAqLwogICAgZXh0ZXJuIGludCAgICBfX0tBSV9LTVBDX0NPTlZFTlRJT04gIG9tcF90YXJnZXRfbWVtY3B5X3JlY3RfYXN5bmModm9pZCAqLCBjb25zdCB2b2lkICosIHNpemVfdCwgaW50LCBjb25zdCBzaXplX3QgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2l6ZV90ICosIGNvbnN0IHNpemVfdCAqLCBjb25zdCBzaXplX3QgKiwgY29uc3Qgc2l6ZV90ICosIGludCwgaW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQsIG9tcF9kZXBlbmRfdCAqKTsKICAgIC8qIQogICAgICogVGhlIGBvbXBfZ2V0X21hcHBlZF9wdHJgIHJvdXRpbmUgcmV0dXJucyB0aGUgZGV2aWNlIHBvaW50ZXIgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggYSBob3N0IHBvaW50ZXIgZm9yIGEgZ2l2ZW4gZGV2aWNlLgogICAgICovCiAgICBleHRlcm4gdm9pZCAqIF9fS0FJX0tNUENfQ09OVkVOVElPTiAgb21wX2dldF9tYXBwZWRfcHRyKGNvbnN0IHZvaWQgKiwgaW50KTsKICAgIGV4dGVybiBpbnQgICAgX19LQUlfS01QQ19DT05WRU5USU9OICBvbXBfdGFyZ2V0X2lzX2FjY2Vzc2libGUoY29uc3Qgdm9pZCAqLCBzaXplX3QsIGludCk7CgogICAgLyoga21wIEFQSSBmdW5jdGlvbnMgKi8KICAgIGV4dGVybiBpbnQgICAgX19LQUlfS01QQ19DT05WRU5USU9OICBrbXBfZ2V0X3N0YWNrc2l6ZSAgICAgICAgICAodm9pZCk7CiAgICBleHRlcm4gdm9pZCAgIF9fS0FJX0tNUENfQ09OVkVOVElPTiAga21wX3NldF9zdGFja3NpemUgICAgICAgICAgKGludCk7CiAgICBleHRlcm4gc2l6ZV90IF9fS0FJX0tNUENfQ09OVkVOVElPTiAga21wX2dldF9zdGFja3NpemVfcyAgICAgICAgKHZvaWQpOwogICAgZXh0ZXJuIHZvaWQgICBfX0tBSV9LTVBDX0NPTlZFTlRJT04gIGttcF9zZXRfc3RhY2tzaXplX3MgICAgICAgIChzaXplX3QpOwogICAgZXh0ZXJuIGludCAgICBfX0tBSV9LTVBDX0NPTlZFTlRJT04gIGttcF9nZXRfYmxvY2t0aW1lICAgICAgICAgICh2b2lkKTsKICAgIGV4dGVybiBpbnQgICAgX19LQUlfS01QQ19DT05WRU5USU9OICBrbXBfZ2V0X2xpYnJhcnkgICAgICAgICAgICAodm9pZCk7CiAgICBleHRlcm4gdm9pZCAgIF9fS0FJX0tNUENfQ09OVkVOVElPTiAga21wX3NldF9ibG9ja3RpbWUgICAgICAgICAgKGludCk7CiAgICBleHRlcm4gdm9pZCAgIF9fS0FJX0tNUENfQ09OVkVOVElPTiAga21wX3NldF9saWJyYXJ5ICAgICAgICAgICAgKGludCk7CiAgICBleHRlcm4gdm9pZCAgIF9fS0FJX0tNUENfQ09OVkVOVElPTiAga21wX3NldF9saWJyYXJ5X3NlcmlhbCAgICAgKHZvaWQpOwogICAgZXh0ZXJuIHZvaWQgICBfX0tBSV9LTVBDX0NPTlZFTlRJT04gIGttcF9zZXRfbGlicmFyeV90dXJuYXJvdW5kICh2b2lkKTsKICAgIGV4dGVybiB2b2lkICAgX19LQUlfS01QQ19DT05WRU5USU9OICBrbXBfc2V0X2xpYnJhcnlfdGhyb3VnaHB1dCAodm9pZCk7CiAgICBleHRlcm4gdm9pZCAgIF9fS0FJX0tNUENfQ09OVkVOVElPTiAga21wX3NldF9kZWZhdWx0cyAgICAgICAgICAgKGNoYXIgY29uc3QgKik7CiAgICBleHRlcm4gdm9pZCAgIF9fS0FJX0tNUENfQ09OVkVOVElPTiAga21wX3NldF9kaXNwX251bV9idWZmZXJzICAgKGludCk7CgogICAgLyogSW50ZWwgYWZmaW5pdHkgQVBJICovCiAgICB0eXBlZGVmIHZvaWQgKiBrbXBfYWZmaW5pdHlfbWFza190OwoKICAgIGV4dGVybiBpbnQgICAgX19LQUlfS01QQ19DT05WRU5USU9OICBrbXBfc2V0X2FmZmluaXR5ICAgICAgICAgICAgIChrbXBfYWZmaW5pdHlfbWFza190ICopOwogICAgZXh0ZXJuIGludCAgICBfX0tBSV9LTVBDX0NPTlZFTlRJT04gIGttcF9nZXRfYWZmaW5pdHkgICAgICAgICAgICAgKGttcF9hZmZpbml0eV9tYXNrX3QgKik7CiAgICBleHRlcm4gaW50ICAgIF9fS0FJX0tNUENfQ09OVkVOVElPTiAga21wX2dldF9hZmZpbml0eV9tYXhfcHJvYyAgICAodm9pZCk7CiAgICBleHRlcm4gdm9pZCAgIF9fS0FJX0tNUENfQ09OVkVOVElPTiAga21wX2NyZWF0ZV9hZmZpbml0eV9tYXNrICAgICAoa21wX2FmZmluaXR5X21hc2tfdCAqKTsKICAgIGV4dGVybiB2b2lkICAgX19LQUlfS01QQ19DT05WRU5USU9OICBrbXBfZGVzdHJveV9hZmZpbml0eV9tYXNrICAgIChrbXBfYWZmaW5pdHlfbWFza190ICopOwogICAgZXh0ZXJuIGludCAgICBfX0tBSV9LTVBDX0NPTlZFTlRJT04gIGttcF9zZXRfYWZmaW5pdHlfbWFza19wcm9jICAgKGludCwga21wX2FmZmluaXR5X21hc2tfdCAqKTsKICAgIGV4dGVybiBpbnQgICAgX19LQUlfS01QQ19DT05WRU5USU9OICBrbXBfdW5zZXRfYWZmaW5pdHlfbWFza19wcm9jIChpbnQsIGttcF9hZmZpbml0eV9tYXNrX3QgKik7CiAgICBleHRlcm4gaW50ICAgIF9fS0FJX0tNUENfQ09OVkVOVElPTiAga21wX2dldF9hZmZpbml0eV9tYXNrX3Byb2MgICAoaW50LCBrbXBfYWZmaW5pdHlfbWFza190ICopOwoKICAgIC8qIE9wZW5NUCA0LjAgYWZmaW5pdHkgQVBJICovCiAgICB0eXBlZGVmIGVudW0gb21wX3Byb2NfYmluZF90IHsKICAgICAgICBvbXBfcHJvY19iaW5kX2ZhbHNlID0gMCwKICAgICAgICBvbXBfcHJvY19iaW5kX3RydWUgPSAxLAogICAgICAgIG9tcF9wcm9jX2JpbmRfbWFzdGVyID0gMiwKICAgICAgICBvbXBfcHJvY19iaW5kX2Nsb3NlID0gMywKICAgICAgICBvbXBfcHJvY19iaW5kX3NwcmVhZCA9IDQKICAgIH0gb21wX3Byb2NfYmluZF90OwoKICAgIGV4dGVybiBvbXBfcHJvY19iaW5kX3QgX19LQUlfS01QQ19DT05WRU5USU9OIG9tcF9nZXRfcHJvY19iaW5kICh2b2lkKTsKCiAgICAvKiBPcGVuTVAgNC41IGFmZmluaXR5IEFQSSAqLwogICAgZXh0ZXJuIGludCAgX19LQUlfS01QQ19DT05WRU5USU9OIG9tcF9nZXRfbnVtX3BsYWNlcyAodm9pZCk7CiAgICBleHRlcm4gaW50ICBfX0tBSV9LTVBDX0NPTlZFTlRJT04gb21wX2dldF9wbGFjZV9udW1fcHJvY3MgKGludCk7CiAgICBleHRlcm4gdm9pZCBfX0tBSV9LTVBDX0NPTlZFTlRJT04gb21wX2dldF9wbGFjZV9wcm9jX2lkcyAoaW50LCBpbnQgKik7CiAgICBleHRlcm4gaW50ICBfX0tBSV9LTVBDX0NPTlZFTlRJT04gb21wX2dldF9wbGFjZV9udW0gKHZvaWQpOwogICAgZXh0ZXJuIGludCAgX19LQUlfS01QQ19DT05WRU5USU9OIG9tcF9nZXRfcGFydGl0aW9uX251bV9wbGFjZXMgKHZvaWQpOwogICAgZXh0ZXJuIHZvaWQgX19LQUlfS01QQ19DT05WRU5USU9OIG9tcF9nZXRfcGFydGl0aW9uX3BsYWNlX251bXMgKGludCAqKTsKCiAgICBleHRlcm4gdm9pZCAqIF9fS0FJX0tNUENfQ09OVkVOVElPTiAga21wX21hbGxvYyAgKHNpemVfdCk7CiAgICBleHRlcm4gdm9pZCAqIF9fS0FJX0tNUENfQ09OVkVOVElPTiAga21wX2FsaWduZWRfbWFsbG9jICAoc2l6ZV90LCBzaXplX3QpOwogICAgZXh0ZXJuIHZvaWQgKiBfX0tBSV9LTVBDX0NPTlZFTlRJT04gIGttcF9jYWxsb2MgIChzaXplX3QsIHNpemVfdCk7CiAgICBleHRlcm4gdm9pZCAqIF9fS0FJX0tNUENfQ09OVkVOVElPTiAga21wX3JlYWxsb2MgKHZvaWQgKiwgc2l6ZV90KTsKICAgIGV4dGVybiB2b2lkICAgX19LQUlfS01QQ19DT05WRU5USU9OICBrbXBfZnJlZSAgICAodm9pZCAqKTsKCiAgICBleHRlcm4gdm9pZCAgIF9fS0FJX0tNUENfQ09OVkVOVElPTiAga21wX3NldF93YXJuaW5nc19vbih2b2lkKTsKICAgIGV4dGVybiB2b2lkICAgX19LQUlfS01QQ19DT05WRU5USU9OICBrbXBfc2V0X3dhcm5pbmdzX29mZih2b2lkKTsKCiAgICAvKiBPcGVuTVAgNS4wIFRvb2wgQ29udHJvbCAqLwogICAgdHlwZWRlZiBlbnVtIG9tcF9jb250cm9sX3Rvb2xfcmVzdWx0X3QgewogICAgICAgIG9tcF9jb250cm9sX3Rvb2xfbm90b29sID0gLTIsCiAgICAgICAgb21wX2NvbnRyb2xfdG9vbF9ub2NhbGxiYWNrID0gLTEsCiAgICAgICAgb21wX2NvbnRyb2xfdG9vbF9zdWNjZXNzID0gMCwKICAgICAgICBvbXBfY29udHJvbF90b29sX2lnbm9yZWQgPSAxCiAgICB9IG9tcF9jb250cm9sX3Rvb2xfcmVzdWx0X3Q7CgogICAgdHlwZWRlZiBlbnVtIG9tcF9jb250cm9sX3Rvb2xfdCB7CiAgICAgICAgb21wX2NvbnRyb2xfdG9vbF9zdGFydCA9IDEsCiAgICAgICAgb21wX2NvbnRyb2xfdG9vbF9wYXVzZSA9IDIsCiAgICAgICAgb21wX2NvbnRyb2xfdG9vbF9mbHVzaCA9IDMsCiAgICAgICAgb21wX2NvbnRyb2xfdG9vbF9lbmQgPSA0CiAgICB9IG9tcF9jb250cm9sX3Rvb2xfdDsKCiAgICBleHRlcm4gaW50IF9fS0FJX0tNUENfQ09OVkVOVElPTiBvbXBfY29udHJvbF90b29sKGludCwgaW50LCB2b2lkKik7CgogICAgLyogT3Blbk1QIDUuMCBNZW1vcnkgTWFuYWdlbWVudCAqLwogICAgdHlwZWRlZiB1aW50cHRyX3Qgb21wX3VpbnRwdHJfdDsKCiAgICB0eXBlZGVmIGVudW0gewogICAgICAgIG9tcF9hdGtfc3luY19oaW50ID0gMSwKICAgICAgICBvbXBfYXRrX2FsaWdubWVudCA9IDIsCiAgICAgICAgb21wX2F0a19hY2Nlc3MgPSAzLAogICAgICAgIG9tcF9hdGtfcG9vbF9zaXplID0gNCwKICAgICAgICBvbXBfYXRrX2ZhbGxiYWNrID0gNSwKICAgICAgICBvbXBfYXRrX2ZiX2RhdGEgPSA2LAogICAgICAgIG9tcF9hdGtfcGlubmVkID0gNywKICAgICAgICBvbXBfYXRrX3BhcnRpdGlvbiA9IDgKICAgIH0gb21wX2FsbG9jdHJhaXRfa2V5X3Q7CgogICAgdHlwZWRlZiBlbnVtIHsKICAgICAgICBvbXBfYXR2X2ZhbHNlID0gMCwKICAgICAgICBvbXBfYXR2X3RydWUgPSAxLAogICAgICAgIG9tcF9hdHZfY29udGVuZGVkID0gMywKICAgICAgICBvbXBfYXR2X3VuY29udGVuZGVkID0gNCwKICAgICAgICBvbXBfYXR2X3NlcmlhbGl6ZWQgPSA1LAogICAgICAgIG9tcF9hdHZfc2VxdWVudGlhbCA9IG9tcF9hdHZfc2VyaWFsaXplZCwgLy8gKGRlcHJlY2F0ZWQpCiAgICAgICAgb21wX2F0dl9wcml2YXRlID0gNiwKICAgICAgICBvbXBfYXR2X2FsbCA9IDcsCiAgICAgICAgb21wX2F0dl90aHJlYWQgPSA4LAogICAgICAgIG9tcF9hdHZfcHRlYW0gPSA5LAogICAgICAgIG9tcF9hdHZfY2dyb3VwID0gMTAsCiAgICAgICAgb21wX2F0dl9kZWZhdWx0X21lbV9mYiA9IDExLAogICAgICAgIG9tcF9hdHZfbnVsbF9mYiA9IDEyLAogICAgICAgIG9tcF9hdHZfYWJvcnRfZmIgPSAxMywKICAgICAgICBvbXBfYXR2X2FsbG9jYXRvcl9mYiA9IDE0LAogICAgICAgIG9tcF9hdHZfZW52aXJvbm1lbnQgPSAxNSwKICAgICAgICBvbXBfYXR2X25lYXJlc3QgPSAxNiwKICAgICAgICBvbXBfYXR2X2Jsb2NrZWQgPSAxNywKICAgICAgICBvbXBfYXR2X2ludGVybGVhdmVkID0gMTgKICAgIH0gb21wX2FsbG9jdHJhaXRfdmFsdWVfdDsKICAgICNkZWZpbmUgb21wX2F0dl9kZWZhdWx0ICgob21wX3VpbnRwdHJfdCktMSkKCiAgICB0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgb21wX2FsbG9jdHJhaXRfa2V5X3Qga2V5OwogICAgICAgIG9tcF91aW50cHRyX3QgdmFsdWU7CiAgICB9IG9tcF9hbGxvY3RyYWl0X3Q7CgojICAgaWYgZGVmaW5lZChfV0lOMzIpCiAgICAvLyBPbiBXaW5kb3dzIGNsIGFuZCBpY2wgZG8gbm90IHN1cHBvcnQgNjQtYml0IGVudW0sIGxldCdzIHVzZSBpbnRlZ2VyIHRoZW4uCiAgICB0eXBlZGVmIG9tcF91aW50cHRyX3Qgb21wX2FsbG9jYXRvcl9oYW5kbGVfdDsKICAgIGV4dGVybiBfX0tNUF9JTVAgb21wX2FsbG9jYXRvcl9oYW5kbGVfdCBjb25zdCBvbXBfbnVsbF9hbGxvY2F0b3I7CiAgICBleHRlcm4gX19LTVBfSU1QIG9tcF9hbGxvY2F0b3JfaGFuZGxlX3QgY29uc3Qgb21wX2RlZmF1bHRfbWVtX2FsbG9jOwogICAgZXh0ZXJuIF9fS01QX0lNUCBvbXBfYWxsb2NhdG9yX2hhbmRsZV90IGNvbnN0IG9tcF9sYXJnZV9jYXBfbWVtX2FsbG9jOwogICAgZXh0ZXJuIF9fS01QX0lNUCBvbXBfYWxsb2NhdG9yX2hhbmRsZV90IGNvbnN0IG9tcF9jb25zdF9tZW1fYWxsb2M7CiAgICBleHRlcm4gX19LTVBfSU1QIG9tcF9hbGxvY2F0b3JfaGFuZGxlX3QgY29uc3Qgb21wX2hpZ2hfYndfbWVtX2FsbG9jOwogICAgZXh0ZXJuIF9fS01QX0lNUCBvbXBfYWxsb2NhdG9yX2hhbmRsZV90IGNvbnN0IG9tcF9sb3dfbGF0X21lbV9hbGxvYzsKICAgIGV4dGVybiBfX0tNUF9JTVAgb21wX2FsbG9jYXRvcl9oYW5kbGVfdCBjb25zdCBvbXBfY2dyb3VwX21lbV9hbGxvYzsKICAgIGV4dGVybiBfX0tNUF9JTVAgb21wX2FsbG9jYXRvcl9oYW5kbGVfdCBjb25zdCBvbXBfcHRlYW1fbWVtX2FsbG9jOwogICAgZXh0ZXJuIF9fS01QX0lNUCBvbXBfYWxsb2NhdG9yX2hhbmRsZV90IGNvbnN0IG9tcF90aHJlYWRfbWVtX2FsbG9jOwogICAgLyogUHJldmlldyBvZiB0YXJnZXQgbWVtb3J5IHN1cHBvcnQgKi8KICAgIGV4dGVybiBfX0tNUF9JTVAgb21wX2FsbG9jYXRvcl9oYW5kbGVfdCBjb25zdCBsbHZtX29tcF90YXJnZXRfaG9zdF9tZW1fYWxsb2M7CiAgICBleHRlcm4gX19LTVBfSU1QIG9tcF9hbGxvY2F0b3JfaGFuZGxlX3QgY29uc3QgbGx2bV9vbXBfdGFyZ2V0X3NoYXJlZF9tZW1fYWxsb2M7CiAgICBleHRlcm4gX19LTVBfSU1QIG9tcF9hbGxvY2F0b3JfaGFuZGxlX3QgY29uc3QgbGx2bV9vbXBfdGFyZ2V0X2RldmljZV9tZW1fYWxsb2M7CgogICAgdHlwZWRlZiBvbXBfdWludHB0cl90IG9tcF9tZW1zcGFjZV9oYW5kbGVfdDsKICAgIGV4dGVybiBfX0tNUF9JTVAgb21wX21lbXNwYWNlX2hhbmRsZV90IGNvbnN0IG9tcF9kZWZhdWx0X21lbV9zcGFjZTsKICAgIGV4dGVybiBfX0tNUF9JTVAgb21wX21lbXNwYWNlX2hhbmRsZV90IGNvbnN0IG9tcF9sYXJnZV9jYXBfbWVtX3NwYWNlOwogICAgZXh0ZXJuIF9fS01QX0lNUCBvbXBfbWVtc3BhY2VfaGFuZGxlX3QgY29uc3Qgb21wX2NvbnN0X21lbV9zcGFjZTsKICAgIGV4dGVybiBfX0tNUF9JTVAgb21wX21lbXNwYWNlX2hhbmRsZV90IGNvbnN0IG9tcF9oaWdoX2J3X21lbV9zcGFjZTsKICAgIGV4dGVybiBfX0tNUF9JTVAgb21wX21lbXNwYWNlX2hhbmRsZV90IGNvbnN0IG9tcF9sb3dfbGF0X21lbV9zcGFjZTsKICAgIC8qIFByZXZpZXcgb2YgdGFyZ2V0IG1lbW9yeSBzdXBwb3J0ICovCiAgICBleHRlcm4gX19LTVBfSU1QIG9tcF9tZW1zcGFjZV9oYW5kbGVfdCBjb25zdCBsbHZtX29tcF90YXJnZXRfaG9zdF9tZW1fc3BhY2U7CiAgICBleHRlcm4gX19LTVBfSU1QIG9tcF9tZW1zcGFjZV9oYW5kbGVfdCBjb25zdCBsbHZtX29tcF90YXJnZXRfc2hhcmVkX21lbV9zcGFjZTsKICAgIGV4dGVybiBfX0tNUF9JTVAgb21wX21lbXNwYWNlX2hhbmRsZV90IGNvbnN0IGxsdm1fb21wX3RhcmdldF9kZXZpY2VfbWVtX3NwYWNlOwojICAgZWxzZQojICAgICAgIGlmIF9fY3BsdXNwbHVzID49IDIwMTEwMwogICAgdHlwZWRlZiBlbnVtIG9tcF9hbGxvY2F0b3JfaGFuZGxlX3QgOiBvbXBfdWludHB0cl90CiMgICAgICAgZWxzZQogICAgdHlwZWRlZiBlbnVtIG9tcF9hbGxvY2F0b3JfaGFuZGxlX3QKIyAgICAgICBlbmRpZgogICAgewogICAgICBvbXBfbnVsbF9hbGxvY2F0b3IgPSAwLAogICAgICBvbXBfZGVmYXVsdF9tZW1fYWxsb2MgPSAxLAogICAgICBvbXBfbGFyZ2VfY2FwX21lbV9hbGxvYyA9IDIsCiAgICAgIG9tcF9jb25zdF9tZW1fYWxsb2MgPSAzLAogICAgICBvbXBfaGlnaF9id19tZW1fYWxsb2MgPSA0LAogICAgICBvbXBfbG93X2xhdF9tZW1fYWxsb2MgPSA1LAogICAgICBvbXBfY2dyb3VwX21lbV9hbGxvYyA9IDYsCiAgICAgIG9tcF9wdGVhbV9tZW1fYWxsb2MgPSA3LAogICAgICBvbXBfdGhyZWFkX21lbV9hbGxvYyA9IDgsCiAgICAgIC8qIFByZXZpZXcgb2YgdGFyZ2V0IG1lbW9yeSBzdXBwb3J0ICovCiAgICAgIGxsdm1fb21wX3RhcmdldF9ob3N0X21lbV9hbGxvYyA9IDEwMCwKICAgICAgbGx2bV9vbXBfdGFyZ2V0X3NoYXJlZF9tZW1fYWxsb2MgPSAxMDEsCiAgICAgIGxsdm1fb21wX3RhcmdldF9kZXZpY2VfbWVtX2FsbG9jID0gMTAyLAogICAgICBLTVBfQUxMT0NBVE9SX01BWF9IQU5ETEUgPSBVSU5UUFRSX01BWAogICAgfSBvbXBfYWxsb2NhdG9yX2hhbmRsZV90OwojICAgICAgIGlmIF9fY3BsdXNwbHVzID49IDIwMTEwMwogICAgdHlwZWRlZiBlbnVtIG9tcF9tZW1zcGFjZV9oYW5kbGVfdCA6IG9tcF91aW50cHRyX3QKIyAgICAgICBlbHNlCiAgICB0eXBlZGVmIGVudW0gb21wX21lbXNwYWNlX2hhbmRsZV90CiMgICAgICAgZW5kaWYKICAgIHsKICAgICAgb21wX2RlZmF1bHRfbWVtX3NwYWNlID0gMCwKICAgICAgb21wX2xhcmdlX2NhcF9tZW1fc3BhY2UgPSAxLAogICAgICBvbXBfY29uc3RfbWVtX3NwYWNlID0gMiwKICAgICAgb21wX2hpZ2hfYndfbWVtX3NwYWNlID0gMywKICAgICAgb21wX2xvd19sYXRfbWVtX3NwYWNlID0gNCwKICAgICAgLyogUHJldmlldyBvZiB0YXJnZXQgbWVtb3J5IHN1cHBvcnQgKi8KICAgICAgbGx2bV9vbXBfdGFyZ2V0X2hvc3RfbWVtX3NwYWNlID0gMTAwLAogICAgICBsbHZtX29tcF90YXJnZXRfc2hhcmVkX21lbV9zcGFjZSA9IDEwMSwKICAgICAgbGx2bV9vbXBfdGFyZ2V0X2RldmljZV9tZW1fc3BhY2UgPSAxMDIsCiAgICAgIEtNUF9NRU1TUEFDRV9NQVhfSEFORExFID0gVUlOVFBUUl9NQVgKICAgIH0gb21wX21lbXNwYWNlX2hhbmRsZV90OwojICAgZW5kaWYKICAgIGV4dGVybiBvbXBfYWxsb2NhdG9yX2hhbmRsZV90IF9fS0FJX0tNUENfQ09OVkVOVElPTiBvbXBfaW5pdF9hbGxvY2F0b3Iob21wX21lbXNwYWNlX2hhbmRsZV90IG0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnRyYWl0cywgb21wX2FsbG9jdHJhaXRfdCB0cmFpdHNbXSk7CiAgICBleHRlcm4gdm9pZCBfX0tBSV9LTVBDX0NPTlZFTlRJT04gb21wX2Rlc3Ryb3lfYWxsb2NhdG9yKG9tcF9hbGxvY2F0b3JfaGFuZGxlX3QgYWxsb2NhdG9yKTsKCiAgICBleHRlcm4gdm9pZCBfX0tBSV9LTVBDX0NPTlZFTlRJT04gb21wX3NldF9kZWZhdWx0X2FsbG9jYXRvcihvbXBfYWxsb2NhdG9yX2hhbmRsZV90IGEpOwogICAgZXh0ZXJuIG9tcF9hbGxvY2F0b3JfaGFuZGxlX3QgX19LQUlfS01QQ19DT05WRU5USU9OIG9tcF9nZXRfZGVmYXVsdF9hbGxvY2F0b3Iodm9pZCk7CiMgICBpZmRlZiBfX2NwbHVzcGx1cwogICAgZXh0ZXJuIHZvaWQgKl9fS0FJX0tNUENfQ09OVkVOVElPTiBvbXBfYWxsb2Moc2l6ZV90IHNpemUsIG9tcF9hbGxvY2F0b3JfaGFuZGxlX3QgYSA9IG9tcF9udWxsX2FsbG9jYXRvcik7CiAgICBleHRlcm4gdm9pZCAqX19LQUlfS01QQ19DT05WRU5USU9OIG9tcF9hbGlnbmVkX2FsbG9jKHNpemVfdCBhbGlnbiwgc2l6ZV90IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9tcF9hbGxvY2F0b3JfaGFuZGxlX3QgYSA9IG9tcF9udWxsX2FsbG9jYXRvcik7CiAgICBleHRlcm4gdm9pZCAqX19LQUlfS01QQ19DT05WRU5USU9OIG9tcF9jYWxsb2Moc2l6ZV90IG5tZW1iLCBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbXBfYWxsb2NhdG9yX2hhbmRsZV90IGEgPSBvbXBfbnVsbF9hbGxvY2F0b3IpOwogICAgZXh0ZXJuIHZvaWQgKl9fS0FJX0tNUENfQ09OVkVOVElPTiBvbXBfYWxpZ25lZF9jYWxsb2Moc2l6ZV90IGFsaWduLCBzaXplX3Qgbm1lbWIsIHNpemVfdCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb21wX2FsbG9jYXRvcl9oYW5kbGVfdCBhID0gb21wX251bGxfYWxsb2NhdG9yKTsKICAgIGV4dGVybiB2b2lkICpfX0tBSV9LTVBDX0NPTlZFTlRJT04gb21wX3JlYWxsb2Modm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb21wX2FsbG9jYXRvcl9oYW5kbGVfdCBhbGxvY2F0b3IgPSBvbXBfbnVsbF9hbGxvY2F0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9tcF9hbGxvY2F0b3JfaGFuZGxlX3QgZnJlZV9hbGxvY2F0b3IgPSBvbXBfbnVsbF9hbGxvY2F0b3IpOwogICAgZXh0ZXJuIHZvaWQgX19LQUlfS01QQ19DT05WRU5USU9OIG9tcF9mcmVlKHZvaWQgKiBwdHIsIG9tcF9hbGxvY2F0b3JfaGFuZGxlX3QgYSA9IG9tcF9udWxsX2FsbG9jYXRvcik7CiMgICBlbHNlCiAgICBleHRlcm4gdm9pZCAqX19LQUlfS01QQ19DT05WRU5USU9OIG9tcF9hbGxvYyhzaXplX3Qgc2l6ZSwgb21wX2FsbG9jYXRvcl9oYW5kbGVfdCBhKTsKICAgIGV4dGVybiB2b2lkICpfX0tBSV9LTVBDX0NPTlZFTlRJT04gb21wX2FsaWduZWRfYWxsb2Moc2l6ZV90IGFsaWduLCBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb21wX2FsbG9jYXRvcl9oYW5kbGVfdCBhKTsKICAgIGV4dGVybiB2b2lkICpfX0tBSV9LTVBDX0NPTlZFTlRJT04gb21wX2NhbGxvYyhzaXplX3Qgbm1lbWIsIHNpemVfdCBzaXplLCBvbXBfYWxsb2NhdG9yX2hhbmRsZV90IGEpOwogICAgZXh0ZXJuIHZvaWQgKl9fS0FJX0tNUENfQ09OVkVOVElPTiBvbXBfYWxpZ25lZF9jYWxsb2Moc2l6ZV90IGFsaWduLCBzaXplX3Qgbm1lbWIsIHNpemVfdCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb21wX2FsbG9jYXRvcl9oYW5kbGVfdCBhKTsKICAgIGV4dGVybiB2b2lkICpfX0tBSV9LTVBDX0NPTlZFTlRJT04gb21wX3JlYWxsb2Modm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSwgb21wX2FsbG9jYXRvcl9oYW5kbGVfdCBhbGxvY2F0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9tcF9hbGxvY2F0b3JfaGFuZGxlX3QgZnJlZV9hbGxvY2F0b3IpOwogICAgZXh0ZXJuIHZvaWQgX19LQUlfS01QQ19DT05WRU5USU9OIG9tcF9mcmVlKHZvaWQgKnB0ciwgb21wX2FsbG9jYXRvcl9oYW5kbGVfdCBhKTsKIyAgIGVuZGlmCgogICAgLyogT3Blbk1QIDUuMCBBZmZpbml0eSBGb3JtYXQgKi8KICAgIGV4dGVybiB2b2lkIF9fS0FJX0tNUENfQ09OVkVOVElPTiBvbXBfc2V0X2FmZmluaXR5X2Zvcm1hdChjaGFyIGNvbnN0ICopOwogICAgZXh0ZXJuIHNpemVfdCBfX0tBSV9LTVBDX0NPTlZFTlRJT04gb21wX2dldF9hZmZpbml0eV9mb3JtYXQoY2hhciAqLCBzaXplX3QpOwogICAgZXh0ZXJuIHZvaWQgX19LQUlfS01QQ19DT05WRU5USU9OIG9tcF9kaXNwbGF5X2FmZmluaXR5KGNoYXIgY29uc3QgKik7CiAgICBleHRlcm4gc2l6ZV90IF9fS0FJX0tNUENfQ09OVkVOVElPTiBvbXBfY2FwdHVyZV9hZmZpbml0eShjaGFyICosIHNpemVfdCwgY2hhciBjb25zdCAqKTsKCiAgICAvKiBPcGVuTVAgNS4wIGV2ZW50cyAqLwojICAgaWYgZGVmaW5lZChfV0lOMzIpCiAgICAvLyBPbiBXaW5kb3dzIGNsIGFuZCBpY2wgZG8gbm90IHN1cHBvcnQgNjQtYml0IGVudW0sIGxldCdzIHVzZSBpbnRlZ2VyIHRoZW4uCiAgICB0eXBlZGVmIG9tcF91aW50cHRyX3Qgb21wX2V2ZW50X2hhbmRsZV90OwojICAgZWxzZQogICAgdHlwZWRlZiBlbnVtIG9tcF9ldmVudF9oYW5kbGVfdCB7IEtNUF9FVkVOVF9NQVhfSEFORExFID0gVUlOVFBUUl9NQVggfSBvbXBfZXZlbnRfaGFuZGxlX3Q7CiMgICBlbmRpZgogICAgZXh0ZXJuIHZvaWQgX19LQUlfS01QQ19DT05WRU5USU9OIG9tcF9mdWxmaWxsX2V2ZW50ICggb21wX2V2ZW50X2hhbmRsZV90IGV2ZW50ICk7CgogICAgLyogT3Blbk1QIDUuMCBQYXVzZSBSZXNvdXJjZXMgKi8KICAgIHR5cGVkZWYgZW51bSBvbXBfcGF1c2VfcmVzb3VyY2VfdCB7CiAgICAgIG9tcF9wYXVzZV9yZXN1bWUgPSAwLAogICAgICBvbXBfcGF1c2Vfc29mdCA9IDEsCiAgICAgIG9tcF9wYXVzZV9oYXJkID0gMgogICAgfSBvbXBfcGF1c2VfcmVzb3VyY2VfdDsKICAgIGV4dGVybiBpbnQgX19LQUlfS01QQ19DT05WRU5USU9OIG9tcF9wYXVzZV9yZXNvdXJjZShvbXBfcGF1c2VfcmVzb3VyY2VfdCwgaW50KTsKICAgIGV4dGVybiBpbnQgX19LQUlfS01QQ19DT05WRU5USU9OIG9tcF9wYXVzZV9yZXNvdXJjZV9hbGwob21wX3BhdXNlX3Jlc291cmNlX3QpOwoKICAgIGV4dGVybiBpbnQgX19LQUlfS01QQ19DT05WRU5USU9OIG9tcF9nZXRfc3VwcG9ydGVkX2FjdGl2ZV9sZXZlbHModm9pZCk7CgogICAgLyogT3Blbk1QIDUuMSAqLwogICAgZXh0ZXJuIHZvaWQgX19LQUlfS01QQ19DT05WRU5USU9OIG9tcF9zZXRfbnVtX3RlYW1zKGludCBudW1fdGVhbXMpOwogICAgZXh0ZXJuIGludCBfX0tBSV9LTVBDX0NPTlZFTlRJT04gb21wX2dldF9tYXhfdGVhbXModm9pZCk7CiAgICBleHRlcm4gdm9pZCBfX0tBSV9LTVBDX0NPTlZFTlRJT04gb21wX3NldF90ZWFtc190aHJlYWRfbGltaXQoaW50IGxpbWl0KTsKICAgIGV4dGVybiBpbnQgX19LQUlfS01QQ19DT05WRU5USU9OIG9tcF9nZXRfdGVhbXNfdGhyZWFkX2xpbWl0KHZvaWQpOwoKICAgIC8qIE9wZW5NUCA1LjEgRGlzcGxheSBFbnZpcm9ubWVudCAqLwogICAgZXh0ZXJuIHZvaWQgb21wX2Rpc3BsYXlfZW52KGludCB2ZXJib3NlKTsKCiMgICBpZiBkZWZpbmVkKF9PUEVOTVApICYmIF9PUEVOTVAgPj0gMjAxODExCiAgICAjcHJhZ21hIG9tcCBiZWdpbiBkZWNsYXJlIHZhcmlhbnQgbWF0Y2goZGV2aWNlPXtraW5kKGhvc3QpfSkKICAgIHN0YXRpYyBpbmxpbmUgaW50IG9tcF9pc19pbml0aWFsX2RldmljZSh2b2lkKSB7IHJldHVybiAxOyB9CiAgICAjcHJhZ21hIG9tcCBlbmQgZGVjbGFyZSB2YXJpYW50CiAgICAjcHJhZ21hIG9tcCBiZWdpbiBkZWNsYXJlIHZhcmlhbnQgbWF0Y2goZGV2aWNlPXtraW5kKG5vaG9zdCl9KQogICAgc3RhdGljIGlubGluZSBpbnQgb21wX2lzX2luaXRpYWxfZGV2aWNlKHZvaWQpIHsgcmV0dXJuIDA7IH0KICAgICNwcmFnbWEgb21wIGVuZCBkZWNsYXJlIHZhcmlhbnQKIyAgIGVuZGlmCgojICAgdW5kZWYgX19LQUlfS01QQ19DT05WRU5USU9OCiMgICB1bmRlZiBfX0tNUF9JTVAKCiAgICAvKiBXYXJuaW5nOgogICAgICAgVGhlIGZvbGxvd2luZyB0eXBlZGVmcyBhcmUgbm90IHN0YW5kYXJkLCBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4KICAgICovCiAgICB0eXBlZGVmIGludCAgICAgb21wX2ludF90OwogICAgdHlwZWRlZiBkb3VibGUgIG9tcF93dGltZV90OwoKIyAgIGlmZGVmIF9fY3BsdXNwbHVzCiAgICB9CiMgICBlbmRpZgoKI2VuZGlmIC8qIF9fT01QX0ggKi8KAHN0ZGRlZi5oAHZhcmFyZ3MuaABwcGNfd3JhcHBlcnMvdG1taW50cmluLmgALy89PT0tLSBzYW5pdGl6ZXIvY29tbW9uX2ludGVyZmFjZV9kZWZzLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KLy8KLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KLy8KLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KLy8KLy8gQ29tbW9uIHBhcnQgb2YgdGhlIHB1YmxpYyBzYW5pdGl6ZXIgaW50ZXJmYWNlLgovLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwoKI2lmbmRlZiBTQU5JVElaRVJfQ09NTU9OX0lOVEVSRkFDRV9ERUZTX0gKI2RlZmluZSBTQU5JVElaRVJfQ09NTU9OX0lOVEVSRkFDRV9ERUZTX0gKCiNpbmNsdWRlIDxzdGRkZWYuaD4KI2luY2x1ZGUgPHN0ZGludC5oPgoKLy8gR0NDIGRvZXMgbm90IHVuZGVyc3RhbmQgX19oYXNfZmVhdHVyZS4KI2lmICFkZWZpbmVkKF9faGFzX2ZlYXR1cmUpCiNkZWZpbmUgX19oYXNfZmVhdHVyZSh4KSAwCiNlbmRpZgoKI2lmZGVmIF9fY3BsdXNwbHVzCmV4dGVybiAiQyIgewojZW5kaWYKLy8gQXJndW1lbnRzIGZvciBfX3Nhbml0aXplcl9zYW5kYm94X29uX25vdGlmeSgpIGJlbG93Lgp0eXBlZGVmIHN0cnVjdCB7CiAgLy8gRW5hYmxlIHNhbmRib3ggc3VwcG9ydCBpbiBzYW5pdGl6ZXIgY292ZXJhZ2UuCiAgaW50IGNvdmVyYWdlX3NhbmRib3hlZDsKICAvLyBGaWxlIGRlc2NyaXB0b3IgdG8gd3JpdGUgY292ZXJhZ2UgZGF0YSB0by4gSWYgLTEgaXMgcGFzc2VkLCBhIGZpbGUgd2lsbAogIC8vIGJlIHByZS1vcGVuZWQgYnkgX19zYW5pdGl6ZXJfc2FuZGJveF9vbl9ub3RpZnkoKS4gVGhpcyBmaWVsZCBoYXMgbm8KICAvLyBlZmZlY3QgaWYgY292ZXJhZ2Vfc2FuZGJveGVkID09IDAuCiAgaW50cHRyX3QgY292ZXJhZ2VfZmQ7CiAgLy8gSWYgbm9uLXplcm8sIHNwbGl0IHRoZSBjb3ZlcmFnZSBkYXRhIGludG8gd2VsbC1mb3JtZWQgYmxvY2tzLiBUaGlzIGlzCiAgLy8gdXNlZnVsIHdoZW4gY292ZXJhZ2VfZmQgaXMgYSBzb2NrZXQgZGVzY3JpcHRvci4gRWFjaCBibG9jayB3aWxsIGNvbnRhaW4KICAvLyBhIGhlYWRlciwgYWxsb3dpbmcgZGF0YSBmcm9tIG11bHRpcGxlIHByb2Nlc3NlcyB0byBiZSBzZW50IG92ZXIgdGhlIHNhbWUKICAvLyBzb2NrZXQuCiAgdW5zaWduZWQgaW50IGNvdmVyYWdlX21heF9ibG9ja19zaXplOwp9IF9fc2FuaXRpemVyX3NhbmRib3hfYXJndW1lbnRzOwoKLy8gVGVsbCB0aGUgdG9vbHMgdG8gd3JpdGUgdGhlaXIgcmVwb3J0cyB0byAicGF0aC48cGlkPiIgaW5zdGVhZCBvZiBzdGRlcnIuCnZvaWQgX19zYW5pdGl6ZXJfc2V0X3JlcG9ydF9wYXRoKGNvbnN0IGNoYXIgKnBhdGgpOwovLyBUZWxsIHRoZSB0b29scyB0byB3cml0ZSB0aGVpciByZXBvcnRzIHRvIHRoZSBwcm92aWRlZCBmaWxlIGRlc2NyaXB0b3IKLy8gKGNhc3RlZCB0byB2b2lkICopLgp2b2lkIF9fc2FuaXRpemVyX3NldF9yZXBvcnRfZmQodm9pZCAqZmQpOwovLyBHZXQgdGhlIGN1cnJlbnQgZnVsbCByZXBvcnQgZmlsZSBwYXRoLCBpZiBhIHBhdGggd2FzIHNwZWNpZmllZCBieQovLyBhbiBlYXJsaWVyIGNhbGwgdG8gX19zYW5pdGl6ZXJfc2V0X3JlcG9ydF9wYXRoLiBSZXR1cm5zIG51bGwgb3RoZXJ3aXNlLgpjb25zdCBjaGFyICpfX3Nhbml0aXplcl9nZXRfcmVwb3J0X3BhdGgoKTsKCi8vIE5vdGlmeSB0aGUgdG9vbHMgdGhhdCB0aGUgc2FuZGJveCBpcyBnb2luZyB0byBiZSB0dXJuZWQgb24uIFRoZSByZXNlcnZlZAovLyBwYXJhbWV0ZXIgd2lsbCBiZSB1c2VkIGluIHRoZSBmdXR1cmUgdG8gaG9sZCBhIHN0cnVjdHVyZSB3aXRoIGZ1bmN0aW9ucwovLyB0aGF0IHRoZSB0b29scyBtYXkgY2FsbCB0byBieXBhc3MgdGhlIHNhbmRib3guCnZvaWQgX19zYW5pdGl6ZXJfc2FuZGJveF9vbl9ub3RpZnkoX19zYW5pdGl6ZXJfc2FuZGJveF9hcmd1bWVudHMgKmFyZ3MpOwoKLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIHRvb2wgd2hlbiBpdCBoYXMganVzdCBmaW5pc2hlZCByZXBvcnRpbmcKLy8gYW4gZXJyb3IuICdlcnJvcl9zdW1tYXJ5JyBpcyBhIG9uZS1saW5lIHN0cmluZyB0aGF0IHN1bW1hcml6ZXMKLy8gdGhlIGVycm9yIG1lc3NhZ2UuIFRoaXMgZnVuY3Rpb24gY2FuIGJlIG92ZXJyaWRkZW4gYnkgdGhlIGNsaWVudC4Kdm9pZCBfX3Nhbml0aXplcl9yZXBvcnRfZXJyb3Jfc3VtbWFyeShjb25zdCBjaGFyICplcnJvcl9zdW1tYXJ5KTsKCi8vIFNvbWUgb2YgdGhlIHNhbml0aXplcnMgKGZvciBleGFtcGxlIEFTYW4vVFNhbikgY291bGQgbWlzcyBidWdzIHRoYXQgaGFwcGVuCi8vIGluIHVuYWxpZ25lZCBsb2Fkcy9zdG9yZXMuIFRvIGZpbmQgc3VjaCBidWdzIHJlbGlhYmx5LCB5b3UgbmVlZCB0byByZXBsYWNlCi8vIHBsYWluIHVuYWxpZ25lZCBsb2Fkcy9zdG9yZXMgd2l0aCB0aGVzZSBjYWxscy4KCi8vLyBMb2FkcyBhIDE2LWJpdCB1bmFsaWduZWQgdmFsdWUuCi8vLwovLy8gXHBhcmFtIHAgUG9pbnRlciB0byB1bmFsaWduZWQgbWVtb3J5LgovLy8KLy8vIFxyZXR1cm5zIExvYWRlZCB2YWx1ZS4KdWludDE2X3QgX19zYW5pdGl6ZXJfdW5hbGlnbmVkX2xvYWQxNihjb25zdCB2b2lkICpwKTsKCi8vLyBMb2FkcyBhIDMyLWJpdCB1bmFsaWduZWQgdmFsdWUuCi8vLwovLy8gXHBhcmFtIHAgUG9pbnRlciB0byB1bmFsaWduZWQgbWVtb3J5LgovLy8KLy8vIFxyZXR1cm5zIExvYWRlZCB2YWx1ZS4KdWludDMyX3QgX19zYW5pdGl6ZXJfdW5hbGlnbmVkX2xvYWQzMihjb25zdCB2b2lkICpwKTsKCi8vLyBMb2FkcyBhIDY0LWJpdCB1bmFsaWduZWQgdmFsdWUuCi8vLwovLy8gXHBhcmFtIHAgUG9pbnRlciB0byB1bmFsaWduZWQgbWVtb3J5LgovLy8KLy8vIFxyZXR1cm5zIExvYWRlZCB2YWx1ZS4KdWludDY0X3QgX19zYW5pdGl6ZXJfdW5hbGlnbmVkX2xvYWQ2NChjb25zdCB2b2lkICpwKTsKCi8vLyBTdG9yZXMgYSAxNi1iaXQgdW5hbGlnbmVkIHZhbHVlLgovLy8KLy8vIFxwYXJhbSBwIFBvaW50ZXIgdG8gdW5hbGlnbmVkIG1lbW9yeS4KLy8vIFxwYXJhbSB4IDE2LWJpdCB2YWx1ZSB0byBzdG9yZS4Kdm9pZCBfX3Nhbml0aXplcl91bmFsaWduZWRfc3RvcmUxNih2b2lkICpwLCB1aW50MTZfdCB4KTsKCi8vLyBTdG9yZXMgYSAzMi1iaXQgdW5hbGlnbmVkIHZhbHVlLgovLy8KLy8vIFxwYXJhbSBwIFBvaW50ZXIgdG8gdW5hbGlnbmVkIG1lbW9yeS4KLy8vIFxwYXJhbSB4IDMyLWJpdCB2YWx1ZSB0byBzdG9yZS4Kdm9pZCBfX3Nhbml0aXplcl91bmFsaWduZWRfc3RvcmUzMih2b2lkICpwLCB1aW50MzJfdCB4KTsKCi8vLyBTdG9yZXMgYSA2NC1iaXQgdW5hbGlnbmVkIHZhbHVlLgovLy8KLy8vIFxwYXJhbSBwIFBvaW50ZXIgdG8gdW5hbGlnbmVkIG1lbW9yeS4KLy8vIFxwYXJhbSB4IDY0LWJpdCB2YWx1ZSB0byBzdG9yZS4Kdm9pZCBfX3Nhbml0aXplcl91bmFsaWduZWRfc3RvcmU2NCh2b2lkICpwLCB1aW50NjRfdCB4KTsKCi8vIFJldHVybnMgMSBvbiB0aGUgZmlyc3QgY2FsbCwgdGhlbiByZXR1cm5zIDAgdGhlcmVhZnRlci4gIENhbGxlZCBieSB0aGUgdG9vbAovLyB0byBlbnN1cmUgb25seSBvbmUgcmVwb3J0IGlzIHByaW50ZWQgd2hlbiBtdWx0aXBsZSBlcnJvcnMgb2NjdXIKLy8gc2ltdWx0YW5lb3VzbHkuCmludCBfX3Nhbml0aXplcl9hY3F1aXJlX2NyYXNoX3N0YXRlKCk7CgovLy8gQW5ub3RhdGVzIHRoZSBjdXJyZW50IHN0YXRlIG9mIGEgY29udGlndW91cyBjb250YWluZXIsIHN1Y2ggYXMKLy8vIDxjPnN0ZDo6dmVjdG9yPC9jPiwgPGM+c3RkOjpzdHJpbmc8L2M+LCBvciBzaW1pbGFyLgovLy8KLy8vIEEgY29udGlndW91cyBjb250YWluZXIgaXMgYSBjb250YWluZXIgdGhhdCBrZWVwcyBhbGwgb2YgaXRzIGVsZW1lbnRzCi8vLyBpbiBhIGNvbnRpZ3VvdXMgcmVnaW9uIG9mIG1lbW9yeS4gVGhlIGNvbnRhaW5lciBvd25zIHRoZSByZWdpb24gb2YgbWVtb3J5Ci8vLyA8Yz5bYmVnLCBlbmQpPC9jPjsgdGhlIG1lbW9yeSA8Yz5bYmVnLCBtaWQpPC9jPiBpcyB1c2VkIHRvIHN0b3JlIHRoZQovLy8gY3VycmVudCBlbGVtZW50cywgYW5kIHRoZSBtZW1vcnkgPGM+W21pZCwgZW5kKTwvYz4gaXMgcmVzZXJ2ZWQgZm9yIGZ1dHVyZQovLy8gZWxlbWVudHMgKDxjPmJlZyA8PSBtaWQgPD0gZW5kPC9jPikuIEZvciBleGFtcGxlLCBpbgovLy8gPGM+c3RkOjp2ZWN0b3I8PiB2PC9jPjoKLy8vCi8vLyBcY29kZQovLy8gICBiZWcgPSAmdlswXTsKLy8vICAgZW5kID0gYmVnICsgdi5jYXBhY2l0eSgpICogc2l6ZW9mKHZbMF0pOwovLy8gICBtaWQgPSBiZWcgKyB2LnNpemUoKSAgICAgKiBzaXplb2YodlswXSk7Ci8vLyBcZW5kY29kZQovLy8KLy8vIFRoaXMgYW5ub3RhdGlvbiB0ZWxscyB0aGUgU2FuaXRpemVyIHRvb2wgYWJvdXQgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlCi8vLyBjb250YWluZXIgc28gdGhhdCB0aGUgdG9vbCBjYW4gcmVwb3J0IGVycm9ycyB3aGVuIG1lbW9yeSBmcm9tCi8vLyA8Yz5bbWlkLCBlbmQpPC9jPiBpcyBhY2Nlc3NlZC4gSW5zZXJ0IHRoaXMgYW5ub3RhdGlvbiBpbnRvIG1ldGhvZHMgbGlrZQovLy8gPGM+cHVzaF9iYWNrKCk8L2M+IG9yIDxjPnBvcF9iYWNrKCk8L2M+LiBTdXBwbHkgdGhlIG9sZCBhbmQgbmV3IHZhbHVlcyBvZgovLy8gPGM+bWlkPC9jPig8Yz48aT5vbGRfbWlkPC9pPjwvYz4gYW5kIDxjPjxpPm5ld19taWQ8L2k+PC9jPikuIEluIHRoZSBpbml0aWFsCi8vLyBzdGF0ZSA8Yz5taWQgPT0gZW5kPC9jPiwgc28gdGhhdCBzaG91bGQgYmUgdGhlIGZpbmFsIHN0YXRlIHdoZW4gdGhlCi8vLyBjb250YWluZXIgaXMgZGVzdHJveWVkIG9yIHdoZW4gdGhlIGNvbnRhaW5lciByZWFsbG9jYXRlcyB0aGUgc3RvcmFnZS4KLy8vCi8vLyBGb3IgQVNhbiwgPGM+PGk+YmVnPC9pPjwvYz4gc2hvdWxkIGJlIDgtYWxpZ25lZCBhbmQgPGM+PGk+ZW5kPC9pPjwvYz4KLy8vIHNob3VsZCBiZSBlaXRoZXIgOC1hbGlnbmVkIG9yIGl0IHNob3VsZCBwb2ludCB0byB0aGUgZW5kIG9mIGEgc2VwYXJhdGUKLy8vIGhlYXAtLCBzdGFjay0sIG9yIGdsb2JhbC1hbGxvY2F0ZWQgYnVmZmVyLiBTbyB0aGUgZm9sbG93aW5nIGV4YW1wbGUgd2lsbAovLy8gbm90IHdvcms6Ci8vLwovLy8gXGNvZGUKLy8vICAgaW50NjRfdCB4WzJdOyAvLyAxNiBieXRlcywgOC1hbGlnbmVkCi8vLyAgIGNoYXIgKmJlZyA9IChjaGFyICopJnhbMF07Ci8vLyAgIGNoYXIgKmVuZCA9IGJlZyArIDEyOyAvLyBOb3QgOC1hbGlnbmVkLCBub3QgdGhlIGVuZCBvZiB0aGUgYnVmZmVyCi8vLyBcZW5kY29kZQovLy8KLy8vIFRoZSBmb2xsb3dpbmcsIGhvd2V2ZXIsIHdpbGwgd29yazoKLy8vIFxjb2RlCi8vLyAgIGludDMyX3QgeFszXTsgLy8gMTIgYnl0ZXMsIGJ1dCA4LWFsaWduZWQgdW5kZXIgQVNhbi4KLy8vICAgY2hhciAqYmVnID0gKGNoYXIqKSZ4WzBdOwovLy8gICBjaGFyICplbmQgPSBiZWcgKyAxMjsgLy8gTm90IDgtYWxpZ25lZCwgYnV0IGlzIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlcgovLy8gXGVuZGNvZGUKLy8vCi8vLyBcbm90ZSAgVXNlIHRoaXMgZnVuY3Rpb24gd2l0aCBjYXV0aW9uIGFuZCBkbyBub3QgdXNlIGZvciBhbnl0aGluZyBvdGhlcgovLy8gdGhhbiB2ZWN0b3ItbGlrZSBjbGFzc2VzLgovLy8KLy8vIFxwYXJhbSBiZWcgQmVnaW5uaW5nIG9mIG1lbW9yeSByZWdpb24uCi8vLyBccGFyYW0gZW5kIEVuZCBvZiBtZW1vcnkgcmVnaW9uLgovLy8gXHBhcmFtIG9sZF9taWQgT2xkIG1pZGRsZSBvZiBtZW1vcnkgcmVnaW9uLgovLy8gXHBhcmFtIG5ld19taWQgTmV3IG1pZGRsZSBvZiBtZW1vcnkgcmVnaW9uLgp2b2lkIF9fc2FuaXRpemVyX2Fubm90YXRlX2NvbnRpZ3VvdXNfY29udGFpbmVyKGNvbnN0IHZvaWQgKmJlZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICplbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqb2xkX21pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpuZXdfbWlkKTsKCi8vLyBSZXR1cm5zIHRydWUgaWYgdGhlIGNvbnRpZ3VvdXMgY29udGFpbmVyIDxjPltiZWcsIGVuZCk8L2M+IGlzIHByb3Blcmx5Ci8vLyBwb2lzb25lZC4KLy8vCi8vLyBQcm9wZXIgcG9pc29uaW5nIGNvdWxkIG9jY3VyLCBmb3IgZXhhbXBsZSwgd2l0aAovLy8gPGM+X19zYW5pdGl6ZXJfYW5ub3RhdGVfY29udGlndW91c19jb250YWluZXI8L2M+KSwgdGhhdCBpcywgaWYKLy8vIDxjPltiZWcsIG1pZCk8L2M+IGlzIGFkZHJlc3NhYmxlIGFuZCA8Yz5bbWlkLCBlbmQpPC9jPiBpcyB1bmFkZHJlc3NhYmxlLgovLy8gRnVsbCB2ZXJpZmljYXRpb24gcmVxdWlyZXMgTyAoPGM+ZW5kIC0gYmVnPC9jPikgdGltZTsgdGhpcyBmdW5jdGlvbiB0cmllcwovLy8gdG8gYXZvaWQgc3VjaCBjb21wbGV4aXR5IGJ5IHRvdWNoaW5nIG9ubHkgcGFydHMgb2YgdGhlIGNvbnRhaW5lciBhcm91bmQKLy8vIDxjPjxpPmJlZzwvaT48L2M+LCA8Yz48aT5taWQ8L2k+PC9jPiwgYW5kIDxjPjxpPmVuZDwvaT48L2M+LgovLy8KLy8vIFxwYXJhbSBiZWcgQmVnaW5uaW5nIG9mIG1lbW9yeSByZWdpb24uCi8vLyBccGFyYW0gbWlkIE1pZGRsZSBvZiBtZW1vcnkgcmVnaW9uLgovLy8gXHBhcmFtIGVuZCBPbGQgZW5kIG9mIG1lbW9yeSByZWdpb24uCi8vLwovLy8gXHJldHVybnMgVHJ1ZSBpZiB0aGUgY29udGlndW91cyBjb250YWluZXIgPGM+W2JlZywgZW5kKTwvYz4gaXMgcHJvcGVybHkKLy8vICBwb2lzb25lZC4KaW50IF9fc2FuaXRpemVyX3ZlcmlmeV9jb250aWd1b3VzX2NvbnRhaW5lcihjb25zdCB2b2lkICpiZWcsIGNvbnN0IHZvaWQgKm1pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICplbmQpOwoKLy8vIFNpbWlsYXIgdG8gPGM+X19zYW5pdGl6ZXJfdmVyaWZ5X2NvbnRpZ3VvdXNfY29udGFpbmVyKCk8L2M+IGJ1dCBhbHNvCi8vLyByZXR1cm5zIHRoZSBhZGRyZXNzIG9mIHRoZSBmaXJzdCBpbXByb3Blcmx5IHBvaXNvbmVkIGJ5dGUuCi8vLwovLy8gUmV0dXJucyBOVUxMIGlmIHRoZSBhcmVhIGlzIHBvaXNvbmVkIHByb3Blcmx5LgovLy8KLy8vIFxwYXJhbSBiZWcgQmVnaW5uaW5nIG9mIG1lbW9yeSByZWdpb24uCi8vLyBccGFyYW0gbWlkIE1pZGRsZSBvZiBtZW1vcnkgcmVnaW9uLgovLy8gXHBhcmFtIGVuZCBPbGQgZW5kIG9mIG1lbW9yeSByZWdpb24uCi8vLwovLy8gXHJldHVybnMgVGhlIGJhZCBhZGRyZXNzIG9yIE5VTEwuCmNvbnN0IHZvaWQgKl9fc2FuaXRpemVyX2NvbnRpZ3VvdXNfY29udGFpbmVyX2ZpbmRfYmFkX2FkZHJlc3MoY29uc3Qgdm9pZCAqYmVnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKm1pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICplbmQpOwoKLy8vIFByaW50cyB0aGUgc3RhY2sgdHJhY2UgbGVhZGluZyB0byB0aGlzIGNhbGwgKHVzZWZ1bCBmb3IgY2FsbGluZyBmcm9tIHRoZQovLy8gZGVidWdnZXIpLgp2b2lkIF9fc2FuaXRpemVyX3ByaW50X3N0YWNrX3RyYWNlKHZvaWQpOwoKLy8gU3ltYm9saXplcyB0aGUgc3VwcGxpZWQgJ3BjJyB1c2luZyB0aGUgZm9ybWF0IHN0cmluZyAnZm10Jy4KLy8gT3V0cHV0cyBhdCBtb3N0ICdvdXRfYnVmX3NpemUnIGJ5dGVzIGludG8gJ291dF9idWYnLgovLyBJZiAnb3V0X2J1ZicgaXMgbm90IGVtcHR5IHRoZW4gb3V0cHV0IGlzIHplcm8gb3IgbW9yZSBub24gZW1wdHkgQyBzdHJpbmdzCi8vIGZvbGxvd2VkIGJ5IHNpbmdsZSBlbXB0eSBDIHN0cmluZy4gTXVsdGlwbGUgc3RyaW5ncyBjYW4gYmUgcmV0dXJuZWQgaWYgUEMKLy8gY29ycmVzcG9uZHMgdG8gaW5saW5lZCBmdW5jdGlvbi4gSW5saW5lZCBmcmFtZXMgYXJlIHByaW50ZWQgaW4gdGhlIG9yZGVyCi8vIGZyb20gIm1vc3QtaW5saW5lZCIgdG8gdGhlICJsZWFzdC1pbmxpbmVkIiwgc28gdGhlIGxhc3QgZnJhbWUgc2hvdWxkIGJlIHRoZQovLyBub3QgaW5saW5lZCBmdW5jdGlvbi4KLy8gSW5saW5lZCBmcmFtZXMgY2FuIGJlIHJlbW92ZWQgd2l0aCAnc3ltYm9saXplX2lubGluZV9mcmFtZXM9MCcuCi8vIFRoZSBmb3JtYXQgc3ludGF4IGlzIGRlc2NyaWJlZCBpbgovLyBsaWIvc2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJfc3RhY2t0cmFjZV9wcmludGVyLmguCnZvaWQgX19zYW5pdGl6ZXJfc3ltYm9saXplX3BjKHZvaWQgKnBjLCBjb25zdCBjaGFyICpmbXQsIGNoYXIgKm91dF9idWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRfYnVmX3NpemUpOwovLyBTYW1lIGFzIF9fc2FuaXRpemVyX3N5bWJvbGl6ZV9wYywgYnV0IGZvciBkYXRhIHNlY3Rpb24gKGkuZS4gZ2xvYmFscykuCnZvaWQgX19zYW5pdGl6ZXJfc3ltYm9saXplX2dsb2JhbCh2b2lkICpkYXRhX3B0ciwgY29uc3QgY2hhciAqZm10LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqb3V0X2J1Ziwgc2l6ZV90IG91dF9idWZfc2l6ZSk7CgovLy8gU2V0cyB0aGUgY2FsbGJhY2sgdG8gYmUgY2FsbGVkIGltbWVkaWF0ZWx5IGJlZm9yZSBkZWF0aCBvbiBlcnJvci4KLy8vCi8vLyBQYXNzaW5nIDAgd2lsbCB1bnNldCB0aGUgY2FsbGJhY2suCi8vLwovLy8gXHBhcmFtIGNhbGxiYWNrIFVzZXItcHJvdmlkZWQgY2FsbGJhY2suCnZvaWQgX19zYW5pdGl6ZXJfc2V0X2RlYXRoX2NhbGxiYWNrKHZvaWQgKCpjYWxsYmFjaykodm9pZCkpOwoKCi8vIEludGVyY2VwdG9yIGhvb2tzLgovLyBXaGVuZXZlciBhIGxpYmMgZnVuY3Rpb24gaW50ZXJjZXB0b3IgaXMgY2FsbGVkLCBpdCBjaGVja3MgaWYgdGhlCi8vIGNvcnJlc3BvbmRpbmcgd2VhayBob29rIGlzIGRlZmluZWQsIGFuZCBjYWxscyBpdCBpZiBpdCBpcyBpbmRlZWQgZGVmaW5lZC4KLy8gVGhlIHByaW1hcnkgdXNlLWNhc2UgaXMgZGF0YS1mbG93LWd1aWRlZCBmdXp6aW5nLCB3aGVyZSB0aGUgZnV6emVyIG5lZWRzCi8vIHRvIGtub3cgd2hhdCBpcyBiZWluZyBwYXNzZWQgdG8gbGliYyBmdW5jdGlvbnMgKGZvciBleGFtcGxlIG1lbWNtcCkuCi8vIEZJWE1FOiBpbXBsZW1lbnQgbW9yZSBob29rcy4KCi8vLyBJbnRlcmNlcHRvciBob29rIGZvciA8Yz5tZW1jbXAoKTwvYz4uCi8vLwovLy8gXHBhcmFtIGNhbGxlZF9wYyBQQyAocHJvZ3JhbSBjb3VudGVyKSBhZGRyZXNzIG9mIHRoZSBvcmlnaW5hbCBjYWxsLgovLy8gXHBhcmFtIHMxIFBvaW50ZXIgdG8gYmxvY2sgb2YgbWVtb3J5LgovLy8gXHBhcmFtIHMyIFBvaW50ZXIgdG8gYmxvY2sgb2YgbWVtb3J5LgovLy8gXHBhcmFtIG4gTnVtYmVyIG9mIGJ5dGVzIHRvIGNvbXBhcmUuCi8vLyBccGFyYW0gcmVzdWx0IFZhbHVlIHJldHVybmVkIGJ5IHRoZSBpbnRlcmNlcHRlZCBmdW5jdGlvbi4Kdm9pZCBfX3Nhbml0aXplcl93ZWFrX2hvb2tfbWVtY21wKHZvaWQgKmNhbGxlZF9wYywgY29uc3Qgdm9pZCAqczEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpzMiwgc2l6ZV90IG4sIGludCByZXN1bHQpOwoKLy8vIEludGVyY2VwdG9yIGhvb2sgZm9yIDxjPnN0cm5jbXAoKTwvYz4uCi8vLwovLy8gXHBhcmFtIGNhbGxlZF9wYyBQQyAocHJvZ3JhbSBjb3VudGVyKSBhZGRyZXNzIG9mIHRoZSBvcmlnaW5hbCBjYWxsLgovLy8gXHBhcmFtIHMxIFBvaW50ZXIgdG8gYmxvY2sgb2YgbWVtb3J5LgovLy8gXHBhcmFtIHMyIFBvaW50ZXIgdG8gYmxvY2sgb2YgbWVtb3J5LgovLy8gXHBhcmFtIG4gTnVtYmVyIG9mIGJ5dGVzIHRvIGNvbXBhcmUuCi8vLyBccGFyYW0gcmVzdWx0IFZhbHVlIHJldHVybmVkIGJ5IHRoZSBpbnRlcmNlcHRlZCBmdW5jdGlvbi4Kdm9pZCBfX3Nhbml0aXplcl93ZWFrX2hvb2tfc3RybmNtcCh2b2lkICpjYWxsZWRfcGMsIGNvbnN0IGNoYXIgKnMxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqczIsIHNpemVfdCBuLCBpbnQgcmVzdWx0KTsKCi8vLyBJbnRlcmNlcHRvciBob29rIGZvciA8Yz5zdHJuY2FzZWNtcCgpPC9jPi4KLy8vCi8vLyBccGFyYW0gY2FsbGVkX3BjIFBDIChwcm9ncmFtIGNvdW50ZXIpIGFkZHJlc3Mgb2YgdGhlIG9yaWdpbmFsIGNhbGwuCi8vLyBccGFyYW0gczEgUG9pbnRlciB0byBibG9jayBvZiBtZW1vcnkuCi8vLyBccGFyYW0gczIgUG9pbnRlciB0byBibG9jayBvZiBtZW1vcnkuCi8vLyBccGFyYW0gbiBOdW1iZXIgb2YgYnl0ZXMgdG8gY29tcGFyZS4KLy8vIFxwYXJhbSByZXN1bHQgVmFsdWUgcmV0dXJuZWQgYnkgdGhlIGludGVyY2VwdGVkIGZ1bmN0aW9uLgp2b2lkIF9fc2FuaXRpemVyX3dlYWtfaG9va19zdHJuY2FzZWNtcCh2b2lkICpjYWxsZWRfcGMsIGNvbnN0IGNoYXIgKnMxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzMiwgc2l6ZV90IG4sIGludCByZXN1bHQpOwoKLy8vIEludGVyY2VwdG9yIGhvb2sgZm9yIDxjPnN0cmNtcCgpPC9jPi4KLy8vCi8vLyBccGFyYW0gY2FsbGVkX3BjIFBDIChwcm9ncmFtIGNvdW50ZXIpIGFkZHJlc3Mgb2YgdGhlIG9yaWdpbmFsIGNhbGwuCi8vLyBccGFyYW0gczEgUG9pbnRlciB0byBibG9jayBvZiBtZW1vcnkuCi8vLyBccGFyYW0gczIgUG9pbnRlciB0byBibG9jayBvZiBtZW1vcnkuCi8vLyBccGFyYW0gcmVzdWx0IFZhbHVlIHJldHVybmVkIGJ5IHRoZSBpbnRlcmNlcHRlZCBmdW5jdGlvbi4Kdm9pZCBfX3Nhbml0aXplcl93ZWFrX2hvb2tfc3RyY21wKHZvaWQgKmNhbGxlZF9wYywgY29uc3QgY2hhciAqczEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzMiwgaW50IHJlc3VsdCk7CgovLy8gSW50ZXJjZXB0b3IgaG9vayBmb3IgPGM+c3RyY2FzZWNtcCgpPC9jPi4KLy8vCi8vLyBccGFyYW0gY2FsbGVkX3BjIFBDIChwcm9ncmFtIGNvdW50ZXIpIGFkZHJlc3Mgb2YgdGhlIG9yaWdpbmFsIGNhbGwuCi8vLyBccGFyYW0gczEgUG9pbnRlciB0byBibG9jayBvZiBtZW1vcnkuCi8vLyBccGFyYW0gczIgUG9pbnRlciB0byBibG9jayBvZiBtZW1vcnkuCi8vLyBccGFyYW0gcmVzdWx0IFZhbHVlIHJldHVybmVkIGJ5IHRoZSBpbnRlcmNlcHRlZCBmdW5jdGlvbi4Kdm9pZCBfX3Nhbml0aXplcl93ZWFrX2hvb2tfc3RyY2FzZWNtcCh2b2lkICpjYWxsZWRfcGMsIGNvbnN0IGNoYXIgKnMxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnMyLCBpbnQgcmVzdWx0KTsKCi8vLyBJbnRlcmNlcHRvciBob29rIGZvciA8Yz5zdHJzdHIoKTwvYz4uCi8vLwovLy8gXHBhcmFtIGNhbGxlZF9wYyBQQyAocHJvZ3JhbSBjb3VudGVyKSBhZGRyZXNzIG9mIHRoZSBvcmlnaW5hbCBjYWxsLgovLy8gXHBhcmFtIHMxIFBvaW50ZXIgdG8gYmxvY2sgb2YgbWVtb3J5LgovLy8gXHBhcmFtIHMyIFBvaW50ZXIgdG8gYmxvY2sgb2YgbWVtb3J5LgovLy8gXHBhcmFtIHJlc3VsdCBWYWx1ZSByZXR1cm5lZCBieSB0aGUgaW50ZXJjZXB0ZWQgZnVuY3Rpb24uCnZvaWQgX19zYW5pdGl6ZXJfd2Vha19ob29rX3N0cnN0cih2b2lkICpjYWxsZWRfcGMsIGNvbnN0IGNoYXIgKnMxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqczIsIGNoYXIgKnJlc3VsdCk7Cgp2b2lkIF9fc2FuaXRpemVyX3dlYWtfaG9va19zdHJjYXNlc3RyKHZvaWQgKmNhbGxlZF9wYywgY29uc3QgY2hhciAqczEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqczIsIGNoYXIgKnJlc3VsdCk7Cgp2b2lkIF9fc2FuaXRpemVyX3dlYWtfaG9va19tZW1tZW0odm9pZCAqY2FsbGVkX3BjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqczEsIHNpemVfdCBsZW4xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqczIsIHNpemVfdCBsZW4yLCB2b2lkICpyZXN1bHQpOwoKLy8gUHJpbnRzIHN0YWNrIHRyYWNlcyBmb3IgYWxsIGxpdmUgaGVhcCBhbGxvY2F0aW9ucyBvcmRlcmVkIGJ5IHRvdGFsCi8vIGFsbG9jYXRpb24gc2l6ZSB1bnRpbCB0b3BfcGVyY2VudCBvZiB0b3RhbCBsaXZlIGhlYXAgaXMgc2hvd24uIHRvcF9wZXJjZW50Ci8vIHNob3VsZCBiZSBiZXR3ZWVuIDEgYW5kIDEwMC4gQXQgbW9zdCBtYXhfbnVtYmVyX29mX2NvbnRleHRzIGNvbnRleHRzCi8vIChzdGFjayB0cmFjZXMpIGFyZSBwcmludGVkLgovLyBFeHBlcmltZW50YWwgZmVhdHVyZSBjdXJyZW50bHkgYXZhaWxhYmxlIG9ubHkgd2l0aCBBU2FuIG9uIExpbnV4L3g4Nl82NC4Kdm9pZCBfX3Nhbml0aXplcl9wcmludF9tZW1vcnlfcHJvZmlsZShzaXplX3QgdG9wX3BlcmNlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG1heF9udW1iZXJfb2ZfY29udGV4dHMpOwoKLy8vIE5vdGlmeSBBU2FuIHRoYXQgYSBmaWJlciBzd2l0Y2ggaGFzIHN0YXJ0ZWQgKHJlcXVpcmVkIG9ubHkgaWYgaW1wbGVtZW50aW5nCi8vLyB5b3VyIG93biBmaWJlciBsaWJyYXJ5KS4KLy8vCi8vLyBCZWZvcmUgc3dpdGNoaW5nIHRvIGEgZGlmZmVyZW50IHN0YWNrLCB5b3UgbXVzdCBjYWxsCi8vLyA8Yz5fX3Nhbml0aXplcl9zdGFydF9zd2l0Y2hfZmliZXIoKTwvYz4gd2l0aCBhIHBvaW50ZXIgdG8gdGhlIGJvdHRvbSBvZiB0aGUKLy8vIGRlc3RpbmF0aW9uIHN0YWNrIGFuZCB3aXRoIGl0cyBzaXplLiBXaGVuIGNvZGUgc3RhcnRzIHJ1bm5pbmcgb24gdGhlIG5ldwovLy8gc3RhY2ssIGl0IG11c3QgY2FsbCA8Yz5fX3Nhbml0aXplcl9maW5pc2hfc3dpdGNoX2ZpYmVyKCk8L2M+IHRvIGZpbmFsaXplCi8vLyB0aGUgc3dpdGNoLiBUaGUgPGM+X19zYW5pdGl6ZXJfc3RhcnRfc3dpdGNoX2ZpYmVyKCk8L2M+IGZ1bmN0aW9uIHRha2VzIGEKLy8vIDxjPnZvaWQqKjwvYz4gcG9pbnRlciBhcmd1bWVudCB0byBzdG9yZSB0aGUgY3VycmVudCBmYWtlIHN0YWNrIGlmIHRoZXJlIGlzCi8vLyBvbmUgKGl0IGlzIG5lY2Vzc2FyeSB3aGVuIHRoZSBydW50aW1lIG9wdGlvbgovLy8gPGM+ZGV0ZWN0X3N0YWNrX3VzZV9hZnRlcl9yZXR1cm48L2M+IGlzIGVuYWJsZWQpLgovLy8KLy8vIFdoZW4gcmVzdG9yaW5nIGEgc3RhY2ssIHRoaXMgPGM+dm9pZCoqPC9jPiBwb2ludGVyIG11c3QgYmUgZ2l2ZW4gdG8gdGhlCi8vLyA8Yz5fX3Nhbml0aXplcl9maW5pc2hfc3dpdGNoX2ZpYmVyKCk8L2M+IGZ1bmN0aW9uLiBJbiBtb3N0IGNhc2VzLCB0aGlzCi8vLyBwb2ludGVyIGNhbiBiZSBzdG9yZWQgb24gdGhlIHN0YWNrIGltbWVkaWF0ZWx5IGJlZm9yZSBzd2l0Y2hpbmcuIFdoZW4KLy8vIGxlYXZpbmcgYSBmaWJlciBkZWZpbml0ZWx5LCBOVUxMIG11c3QgYmUgcGFzc2VkIGFzIHRoZSBmaXJzdCBhcmd1bWVudCB0bwovLy8gdGhlIDxjPl9fc2FuaXRpemVyX3N0YXJ0X3N3aXRjaF9maWJlcigpPC9jPiBmdW5jdGlvbiBzbyB0aGF0IHRoZSBmYWtlIHN0YWNrCi8vLyBpcyBkZXN0cm95ZWQuIElmIHlvdXIgcHJvZ3JhbSBkb2VzIG5vdCBuZWVkIHN0YWNrIHVzZS1hZnRlci1yZXR1cm4KLy8vIGRldGVjdGlvbiwgeW91IGNhbiBhbHdheXMgcGFzcyBOVUxMIHRvIHRoZXNlIHR3byBmdW5jdGlvbnMuCi8vLwovLy8gXG5vdGUgVGhlIGZha2Ugc3RhY2sgbWVjaGFuaXNtIGlzIGRpc2FibGVkIGR1cmluZyBmaWJlciBzd2l0Y2gsIHNvIGlmIGEKLy8vIHNpZ25hbCBjYWxsYmFjayBydW5zIGR1cmluZyB0aGUgc3dpdGNoLCBpdCB3aWxsIG5vdCBiZW5lZml0IGZyb20gc3RhY2sKLy8vIHVzZS1hZnRlci1yZXR1cm4gZGV0ZWN0aW9uLgovLy8KLy8vIFxwYXJhbVtvdXRdIGZha2Vfc3RhY2tfc2F2ZSBGYWtlIHN0YWNrIHNhdmUgbG9jYXRpb24uCi8vLyBccGFyYW0gYm90dG9tIEJvdHRvbSBhZGRyZXNzIG9mIHN0YWNrLgovLy8gXHBhcmFtIHNpemUgU2l6ZSBvZiBzdGFjayBpbiBieXRlcy4Kdm9pZCBfX3Nhbml0aXplcl9zdGFydF9zd2l0Y2hfZmliZXIodm9pZCAqKmZha2Vfc3RhY2tfc2F2ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqYm90dG9tLCBzaXplX3Qgc2l6ZSk7CgovLy8gTm90aWZ5IEFTYW4gdGhhdCBhIGZpYmVyIHN3aXRjaCBoYXMgY29tcGxldGVkIChyZXF1aXJlZCBvbmx5IGlmCi8vLyBpbXBsZW1lbnRpbmcgeW91ciBvd24gZmliZXIgbGlicmFyeSkuCi8vLwovLy8gV2hlbiBjb2RlIHN0YXJ0cyBydW5uaW5nIG9uIHRoZSBuZXcgc3RhY2ssIGl0IG11c3QgY2FsbAovLy8gPGM+X19zYW5pdGl6ZXJfZmluaXNoX3N3aXRjaF9maWJlcigpPC9jPiB0byBmaW5hbGl6ZQovLy8gdGhlIHN3aXRjaC4gRm9yIHVzYWdlIGRldGFpbHMsIHNlZSB0aGUgZGVzY3JpcHRpb24gb2YKLy8vIDxjPl9fc2FuaXRpemVyX3N0YXJ0X3N3aXRjaF9maWJlcigpPC9jPi4KLy8vCi8vLyBccGFyYW0gZmFrZV9zdGFja19zYXZlIEZha2Ugc3RhY2sgc2F2ZSBsb2NhdGlvbi4KLy8vIFxwYXJhbVtvdXRdIGJvdHRvbV9vbGQgQm90dG9tIGFkZHJlc3Mgb2Ygb2xkIHN0YWNrLgovLy8gXHBhcmFtW291dF0gc2l6ZV9vbGQgU2l6ZSBvZiBvbGQgc3RhY2sgaW4gYnl0ZXMuCnZvaWQgX19zYW5pdGl6ZXJfZmluaXNoX3N3aXRjaF9maWJlcih2b2lkICpmYWtlX3N0YWNrX3NhdmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICoqYm90dG9tX29sZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqc2l6ZV9vbGQpOwoKLy8gR2V0IGZ1bGwgbW9kdWxlIG5hbWUgYW5kIGNhbGN1bGF0ZSBwYyBvZmZzZXQgd2l0aGluIGl0LgovLyBSZXR1cm5zIDEgaWYgcGMgYmVsb25ncyB0byBzb21lIG1vZHVsZSwgMCBpZiBtb2R1bGUgd2FzIG5vdCBmb3VuZC4KaW50IF9fc2FuaXRpemVyX2dldF9tb2R1bGVfYW5kX29mZnNldF9mb3JfcGModm9pZCAqcGMsIGNoYXIgKm1vZHVsZV9wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbW9kdWxlX3BhdGhfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICoqcGNfb2Zmc2V0KTsKCiNpZmRlZiBfX2NwbHVzcGx1cwp9ICAvLyBleHRlcm4gIkMiCiNlbmRpZgoKI2VuZGlmICAvLyBTQU5JVElaRVJfQ09NTU9OX0lOVEVSRkFDRV9ERUZTX0gKAC8vPT09LS0gdHNhbl9pbnRlcmZhY2VfYXRvbWljLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCi8vCi8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCi8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgovLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCi8vCi8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCi8vCi8vIFRoaXMgZmlsZSBpcyBhIHBhcnQgb2YgVGhyZWFkU2FuaXRpemVyIChUU2FuKSwgYSByYWNlIGRldGVjdG9yLgovLwovLyBQdWJsaWMgaW50ZXJmYWNlIGhlYWRlciBmb3IgVFNhbiBhdG9taWNzLgovLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwojaWZuZGVmIFRTQU5fSU5URVJGQUNFX0FUT01JQ19ICiNkZWZpbmUgVFNBTl9JTlRFUkZBQ0VfQVRPTUlDX0gKCiNpZmRlZiBfX2NwbHVzcGx1cwpleHRlcm4gIkMiIHsKI2VuZGlmCgp0eXBlZGVmIGNoYXIgX190c2FuX2F0b21pYzg7CnR5cGVkZWYgc2hvcnQgX190c2FuX2F0b21pYzE2Owp0eXBlZGVmIGludCBfX3RzYW5fYXRvbWljMzI7CnR5cGVkZWYgbG9uZyBfX3RzYW5fYXRvbWljNjQ7CiNpZiBkZWZpbmVkKF9fU0laRU9GX0lOVDEyOF9fKSBcCiAgICB8fCAoX19jbGFuZ19tYWpvcl9fICogMTAwICsgX19jbGFuZ19taW5vcl9fID49IDMwMikKX19leHRlbnNpb25fXyB0eXBlZGVmIF9faW50MTI4IF9fdHNhbl9hdG9taWMxMjg7CiMgZGVmaW5lIF9fVFNBTl9IQVNfSU5UMTI4IDEKI2Vsc2UKIyBkZWZpbmUgX19UU0FOX0hBU19JTlQxMjggMAojZW5kaWYKCi8vIFBhcnQgb2YgQUJJLCBkbyBub3QgY2hhbmdlLgovLyBodHRwczovL2dpdGh1Yi5jb20vbGx2bS9sbHZtLXByb2plY3QvYmxvYi9tYWluL2xpYmN4eC9pbmNsdWRlL2F0b21pYwp0eXBlZGVmIGVudW0gewogIF9fdHNhbl9tZW1vcnlfb3JkZXJfcmVsYXhlZCwKICBfX3RzYW5fbWVtb3J5X29yZGVyX2NvbnN1bWUsCiAgX190c2FuX21lbW9yeV9vcmRlcl9hY3F1aXJlLAogIF9fdHNhbl9tZW1vcnlfb3JkZXJfcmVsZWFzZSwKICBfX3RzYW5fbWVtb3J5X29yZGVyX2FjcV9yZWwsCiAgX190c2FuX21lbW9yeV9vcmRlcl9zZXFfY3N0Cn0gX190c2FuX21lbW9yeV9vcmRlcjsKCl9fdHNhbl9hdG9taWM4IF9fdHNhbl9hdG9taWM4X2xvYWQoY29uc3Qgdm9sYXRpbGUgX190c2FuX2F0b21pYzggKmEsCiAgICBfX3RzYW5fbWVtb3J5X29yZGVyIG1vKTsKX190c2FuX2F0b21pYzE2IF9fdHNhbl9hdG9taWMxNl9sb2FkKGNvbnN0IHZvbGF0aWxlIF9fdHNhbl9hdG9taWMxNiAqYSwKICAgIF9fdHNhbl9tZW1vcnlfb3JkZXIgbW8pOwpfX3RzYW5fYXRvbWljMzIgX190c2FuX2F0b21pYzMyX2xvYWQoY29uc3Qgdm9sYXRpbGUgX190c2FuX2F0b21pYzMyICphLAogICAgX190c2FuX21lbW9yeV9vcmRlciBtbyk7Cl9fdHNhbl9hdG9taWM2NCBfX3RzYW5fYXRvbWljNjRfbG9hZChjb25zdCB2b2xhdGlsZSBfX3RzYW5fYXRvbWljNjQgKmEsCiAgICBfX3RzYW5fbWVtb3J5X29yZGVyIG1vKTsKI2lmIF9fVFNBTl9IQVNfSU5UMTI4Cl9fdHNhbl9hdG9taWMxMjggX190c2FuX2F0b21pYzEyOF9sb2FkKGNvbnN0IHZvbGF0aWxlIF9fdHNhbl9hdG9taWMxMjggKmEsCiAgICBfX3RzYW5fbWVtb3J5X29yZGVyIG1vKTsKI2VuZGlmCgp2b2lkIF9fdHNhbl9hdG9taWM4X3N0b3JlKHZvbGF0aWxlIF9fdHNhbl9hdG9taWM4ICphLCBfX3RzYW5fYXRvbWljOCB2LAogICAgX190c2FuX21lbW9yeV9vcmRlciBtbyk7CnZvaWQgX190c2FuX2F0b21pYzE2X3N0b3JlKHZvbGF0aWxlIF9fdHNhbl9hdG9taWMxNiAqYSwgX190c2FuX2F0b21pYzE2IHYsCiAgICBfX3RzYW5fbWVtb3J5X29yZGVyIG1vKTsKdm9pZCBfX3RzYW5fYXRvbWljMzJfc3RvcmUodm9sYXRpbGUgX190c2FuX2F0b21pYzMyICphLCBfX3RzYW5fYXRvbWljMzIgdiwKICAgIF9fdHNhbl9tZW1vcnlfb3JkZXIgbW8pOwp2b2lkIF9fdHNhbl9hdG9taWM2NF9zdG9yZSh2b2xhdGlsZSBfX3RzYW5fYXRvbWljNjQgKmEsIF9fdHNhbl9hdG9taWM2NCB2LAogICAgX190c2FuX21lbW9yeV9vcmRlciBtbyk7CiNpZiBfX1RTQU5fSEFTX0lOVDEyOAp2b2lkIF9fdHNhbl9hdG9taWMxMjhfc3RvcmUodm9sYXRpbGUgX190c2FuX2F0b21pYzEyOCAqYSwgX190c2FuX2F0b21pYzEyOCB2LAogICAgX190c2FuX21lbW9yeV9vcmRlciBtbyk7CiNlbmRpZgoKX190c2FuX2F0b21pYzggX190c2FuX2F0b21pYzhfZXhjaGFuZ2Uodm9sYXRpbGUgX190c2FuX2F0b21pYzggKmEsCiAgICBfX3RzYW5fYXRvbWljOCB2LCBfX3RzYW5fbWVtb3J5X29yZGVyIG1vKTsKX190c2FuX2F0b21pYzE2IF9fdHNhbl9hdG9taWMxNl9leGNoYW5nZSh2b2xhdGlsZSBfX3RzYW5fYXRvbWljMTYgKmEsCiAgICBfX3RzYW5fYXRvbWljMTYgdiwgX190c2FuX21lbW9yeV9vcmRlciBtbyk7Cl9fdHNhbl9hdG9taWMzMiBfX3RzYW5fYXRvbWljMzJfZXhjaGFuZ2Uodm9sYXRpbGUgX190c2FuX2F0b21pYzMyICphLAogICAgX190c2FuX2F0b21pYzMyIHYsIF9fdHNhbl9tZW1vcnlfb3JkZXIgbW8pOwpfX3RzYW5fYXRvbWljNjQgX190c2FuX2F0b21pYzY0X2V4Y2hhbmdlKHZvbGF0aWxlIF9fdHNhbl9hdG9taWM2NCAqYSwKICAgIF9fdHNhbl9hdG9taWM2NCB2LCBfX3RzYW5fbWVtb3J5X29yZGVyIG1vKTsKI2lmIF9fVFNBTl9IQVNfSU5UMTI4Cl9fdHNhbl9hdG9taWMxMjggX190c2FuX2F0b21pYzEyOF9leGNoYW5nZSh2b2xhdGlsZSBfX3RzYW5fYXRvbWljMTI4ICphLAogICAgX190c2FuX2F0b21pYzEyOCB2LCBfX3RzYW5fbWVtb3J5X29yZGVyIG1vKTsKI2VuZGlmCgpfX3RzYW5fYXRvbWljOCBfX3RzYW5fYXRvbWljOF9mZXRjaF9hZGQodm9sYXRpbGUgX190c2FuX2F0b21pYzggKmEsCiAgICBfX3RzYW5fYXRvbWljOCB2LCBfX3RzYW5fbWVtb3J5X29yZGVyIG1vKTsKX190c2FuX2F0b21pYzE2IF9fdHNhbl9hdG9taWMxNl9mZXRjaF9hZGQodm9sYXRpbGUgX190c2FuX2F0b21pYzE2ICphLAogICAgX190c2FuX2F0b21pYzE2IHYsIF9fdHNhbl9tZW1vcnlfb3JkZXIgbW8pOwpfX3RzYW5fYXRvbWljMzIgX190c2FuX2F0b21pYzMyX2ZldGNoX2FkZCh2b2xhdGlsZSBfX3RzYW5fYXRvbWljMzIgKmEsCiAgICBfX3RzYW5fYXRvbWljMzIgdiwgX190c2FuX21lbW9yeV9vcmRlciBtbyk7Cl9fdHNhbl9hdG9taWM2NCBfX3RzYW5fYXRvbWljNjRfZmV0Y2hfYWRkKHZvbGF0aWxlIF9fdHNhbl9hdG9taWM2NCAqYSwKICAgIF9fdHNhbl9hdG9taWM2NCB2LCBfX3RzYW5fbWVtb3J5X29yZGVyIG1vKTsKI2lmIF9fVFNBTl9IQVNfSU5UMTI4Cl9fdHNhbl9hdG9taWMxMjggX190c2FuX2F0b21pYzEyOF9mZXRjaF9hZGQodm9sYXRpbGUgX190c2FuX2F0b21pYzEyOCAqYSwKICAgIF9fdHNhbl9hdG9taWMxMjggdiwgX190c2FuX21lbW9yeV9vcmRlciBtbyk7CiNlbmRpZgoKX190c2FuX2F0b21pYzggX190c2FuX2F0b21pYzhfZmV0Y2hfc3ViKHZvbGF0aWxlIF9fdHNhbl9hdG9taWM4ICphLAogICAgX190c2FuX2F0b21pYzggdiwgX190c2FuX21lbW9yeV9vcmRlciBtbyk7Cl9fdHNhbl9hdG9taWMxNiBfX3RzYW5fYXRvbWljMTZfZmV0Y2hfc3ViKHZvbGF0aWxlIF9fdHNhbl9hdG9taWMxNiAqYSwKICAgIF9fdHNhbl9hdG9taWMxNiB2LCBfX3RzYW5fbWVtb3J5X29yZGVyIG1vKTsKX190c2FuX2F0b21pYzMyIF9fdHNhbl9hdG9taWMzMl9mZXRjaF9zdWIodm9sYXRpbGUgX190c2FuX2F0b21pYzMyICphLAogICAgX190c2FuX2F0b21pYzMyIHYsIF9fdHNhbl9tZW1vcnlfb3JkZXIgbW8pOwpfX3RzYW5fYXRvbWljNjQgX190c2FuX2F0b21pYzY0X2ZldGNoX3N1Yih2b2xhdGlsZSBfX3RzYW5fYXRvbWljNjQgKmEsCiAgICBfX3RzYW5fYXRvbWljNjQgdiwgX190c2FuX21lbW9yeV9vcmRlciBtbyk7CiNpZiBfX1RTQU5fSEFTX0lOVDEyOApfX3RzYW5fYXRvbWljMTI4IF9fdHNhbl9hdG9taWMxMjhfZmV0Y2hfc3ViKHZvbGF0aWxlIF9fdHNhbl9hdG9taWMxMjggKmEsCiAgICBfX3RzYW5fYXRvbWljMTI4IHYsIF9fdHNhbl9tZW1vcnlfb3JkZXIgbW8pOwojZW5kaWYKCl9fdHNhbl9hdG9taWM4IF9fdHNhbl9hdG9taWM4X2ZldGNoX2FuZCh2b2xhdGlsZSBfX3RzYW5fYXRvbWljOCAqYSwKICAgIF9fdHNhbl9hdG9taWM4IHYsIF9fdHNhbl9tZW1vcnlfb3JkZXIgbW8pOwpfX3RzYW5fYXRvbWljMTYgX190c2FuX2F0b21pYzE2X2ZldGNoX2FuZCh2b2xhdGlsZSBfX3RzYW5fYXRvbWljMTYgKmEsCiAgICBfX3RzYW5fYXRvbWljMTYgdiwgX190c2FuX21lbW9yeV9vcmRlciBtbyk7Cl9fdHNhbl9hdG9taWMzMiBfX3RzYW5fYXRvbWljMzJfZmV0Y2hfYW5kKHZvbGF0aWxlIF9fdHNhbl9hdG9taWMzMiAqYSwKICAgIF9fdHNhbl9hdG9taWMzMiB2LCBfX3RzYW5fbWVtb3J5X29yZGVyIG1vKTsKX190c2FuX2F0b21pYzY0IF9fdHNhbl9hdG9taWM2NF9mZXRjaF9hbmQodm9sYXRpbGUgX190c2FuX2F0b21pYzY0ICphLAogICAgX190c2FuX2F0b21pYzY0IHYsIF9fdHNhbl9tZW1vcnlfb3JkZXIgbW8pOwojaWYgX19UU0FOX0hBU19JTlQxMjgKX190c2FuX2F0b21pYzEyOCBfX3RzYW5fYXRvbWljMTI4X2ZldGNoX2FuZCh2b2xhdGlsZSBfX3RzYW5fYXRvbWljMTI4ICphLAogICAgX190c2FuX2F0b21pYzEyOCB2LCBfX3RzYW5fbWVtb3J5X29yZGVyIG1vKTsKI2VuZGlmCgpfX3RzYW5fYXRvbWljOCBfX3RzYW5fYXRvbWljOF9mZXRjaF9vcih2b2xhdGlsZSBfX3RzYW5fYXRvbWljOCAqYSwKICAgIF9fdHNhbl9hdG9taWM4IHYsIF9fdHNhbl9tZW1vcnlfb3JkZXIgbW8pOwpfX3RzYW5fYXRvbWljMTYgX190c2FuX2F0b21pYzE2X2ZldGNoX29yKHZvbGF0aWxlIF9fdHNhbl9hdG9taWMxNiAqYSwKICAgIF9fdHNhbl9hdG9taWMxNiB2LCBfX3RzYW5fbWVtb3J5X29yZGVyIG1vKTsKX190c2FuX2F0b21pYzMyIF9fdHNhbl9hdG9taWMzMl9mZXRjaF9vcih2b2xhdGlsZSBfX3RzYW5fYXRvbWljMzIgKmEsCiAgICBfX3RzYW5fYXRvbWljMzIgdiwgX190c2FuX21lbW9yeV9vcmRlciBtbyk7Cl9fdHNhbl9hdG9taWM2NCBfX3RzYW5fYXRvbWljNjRfZmV0Y2hfb3Iodm9sYXRpbGUgX190c2FuX2F0b21pYzY0ICphLAogICAgX190c2FuX2F0b21pYzY0IHYsIF9fdHNhbl9tZW1vcnlfb3JkZXIgbW8pOwojaWYgX19UU0FOX0hBU19JTlQxMjgKX190c2FuX2F0b21pYzEyOCBfX3RzYW5fYXRvbWljMTI4X2ZldGNoX29yKHZvbGF0aWxlIF9fdHNhbl9hdG9taWMxMjggKmEsCiAgICBfX3RzYW5fYXRvbWljMTI4IHYsIF9fdHNhbl9tZW1vcnlfb3JkZXIgbW8pOwojZW5kaWYKCl9fdHNhbl9hdG9taWM4IF9fdHNhbl9hdG9taWM4X2ZldGNoX3hvcih2b2xhdGlsZSBfX3RzYW5fYXRvbWljOCAqYSwKICAgIF9fdHNhbl9hdG9taWM4IHYsIF9fdHNhbl9tZW1vcnlfb3JkZXIgbW8pOwpfX3RzYW5fYXRvbWljMTYgX190c2FuX2F0b21pYzE2X2ZldGNoX3hvcih2b2xhdGlsZSBfX3RzYW5fYXRvbWljMTYgKmEsCiAgICBfX3RzYW5fYXRvbWljMTYgdiwgX190c2FuX21lbW9yeV9vcmRlciBtbyk7Cl9fdHNhbl9hdG9taWMzMiBfX3RzYW5fYXRvbWljMzJfZmV0Y2hfeG9yKHZvbGF0aWxlIF9fdHNhbl9hdG9taWMzMiAqYSwKICAgIF9fdHNhbl9hdG9taWMzMiB2LCBfX3RzYW5fbWVtb3J5X29yZGVyIG1vKTsKX190c2FuX2F0b21pYzY0IF9fdHNhbl9hdG9taWM2NF9mZXRjaF94b3Iodm9sYXRpbGUgX190c2FuX2F0b21pYzY0ICphLAogICAgX190c2FuX2F0b21pYzY0IHYsIF9fdHNhbl9tZW1vcnlfb3JkZXIgbW8pOwojaWYgX19UU0FOX0hBU19JTlQxMjgKX190c2FuX2F0b21pYzEyOCBfX3RzYW5fYXRvbWljMTI4X2ZldGNoX3hvcih2b2xhdGlsZSBfX3RzYW5fYXRvbWljMTI4ICphLAogICAgX190c2FuX2F0b21pYzEyOCB2LCBfX3RzYW5fbWVtb3J5X29yZGVyIG1vKTsKI2VuZGlmCgpfX3RzYW5fYXRvbWljOCBfX3RzYW5fYXRvbWljOF9mZXRjaF9uYW5kKHZvbGF0aWxlIF9fdHNhbl9hdG9taWM4ICphLAogICAgX190c2FuX2F0b21pYzggdiwgX190c2FuX21lbW9yeV9vcmRlciBtbyk7Cl9fdHNhbl9hdG9taWMxNiBfX3RzYW5fYXRvbWljMTZfZmV0Y2hfbmFuZCh2b2xhdGlsZSBfX3RzYW5fYXRvbWljMTYgKmEsCiAgICBfX3RzYW5fYXRvbWljMTYgdiwgX190c2FuX21lbW9yeV9vcmRlciBtbyk7Cl9fdHNhbl9hdG9taWMzMiBfX3RzYW5fYXRvbWljMzJfZmV0Y2hfbmFuZCh2b2xhdGlsZSBfX3RzYW5fYXRvbWljMzIgKmEsCiAgICBfX3RzYW5fYXRvbWljMzIgdiwgX190c2FuX21lbW9yeV9vcmRlciBtbyk7Cl9fdHNhbl9hdG9taWM2NCBfX3RzYW5fYXRvbWljNjRfZmV0Y2hfbmFuZCh2b2xhdGlsZSBfX3RzYW5fYXRvbWljNjQgKmEsCiAgICBfX3RzYW5fYXRvbWljNjQgdiwgX190c2FuX21lbW9yeV9vcmRlciBtbyk7CiNpZiBfX1RTQU5fSEFTX0lOVDEyOApfX3RzYW5fYXRvbWljMTI4IF9fdHNhbl9hdG9taWMxMjhfZmV0Y2hfbmFuZCh2b2xhdGlsZSBfX3RzYW5fYXRvbWljMTI4ICphLAogICAgX190c2FuX2F0b21pYzEyOCB2LCBfX3RzYW5fbWVtb3J5X29yZGVyIG1vKTsKI2VuZGlmCgppbnQgX190c2FuX2F0b21pYzhfY29tcGFyZV9leGNoYW5nZV93ZWFrKHZvbGF0aWxlIF9fdHNhbl9hdG9taWM4ICphLAogICAgX190c2FuX2F0b21pYzggKmMsIF9fdHNhbl9hdG9taWM4IHYsIF9fdHNhbl9tZW1vcnlfb3JkZXIgbW8sCiAgICBfX3RzYW5fbWVtb3J5X29yZGVyIGZhaWxfbW8pOwppbnQgX190c2FuX2F0b21pYzE2X2NvbXBhcmVfZXhjaGFuZ2Vfd2Vhayh2b2xhdGlsZSBfX3RzYW5fYXRvbWljMTYgKmEsCiAgICBfX3RzYW5fYXRvbWljMTYgKmMsIF9fdHNhbl9hdG9taWMxNiB2LCBfX3RzYW5fbWVtb3J5X29yZGVyIG1vLAogICAgX190c2FuX21lbW9yeV9vcmRlciBmYWlsX21vKTsKaW50IF9fdHNhbl9hdG9taWMzMl9jb21wYXJlX2V4Y2hhbmdlX3dlYWsodm9sYXRpbGUgX190c2FuX2F0b21pYzMyICphLAogICAgX190c2FuX2F0b21pYzMyICpjLCBfX3RzYW5fYXRvbWljMzIgdiwgX190c2FuX21lbW9yeV9vcmRlciBtbywKICAgIF9fdHNhbl9tZW1vcnlfb3JkZXIgZmFpbF9tbyk7CmludCBfX3RzYW5fYXRvbWljNjRfY29tcGFyZV9leGNoYW5nZV93ZWFrKHZvbGF0aWxlIF9fdHNhbl9hdG9taWM2NCAqYSwKICAgIF9fdHNhbl9hdG9taWM2NCAqYywgX190c2FuX2F0b21pYzY0IHYsIF9fdHNhbl9tZW1vcnlfb3JkZXIgbW8sCiAgICBfX3RzYW5fbWVtb3J5X29yZGVyIGZhaWxfbW8pOwojaWYgX19UU0FOX0hBU19JTlQxMjgKaW50IF9fdHNhbl9hdG9taWMxMjhfY29tcGFyZV9leGNoYW5nZV93ZWFrKHZvbGF0aWxlIF9fdHNhbl9hdG9taWMxMjggKmEsCiAgICBfX3RzYW5fYXRvbWljMTI4ICpjLCBfX3RzYW5fYXRvbWljMTI4IHYsIF9fdHNhbl9tZW1vcnlfb3JkZXIgbW8sCiAgICBfX3RzYW5fbWVtb3J5X29yZGVyIGZhaWxfbW8pOwojZW5kaWYKCmludCBfX3RzYW5fYXRvbWljOF9jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZyh2b2xhdGlsZSBfX3RzYW5fYXRvbWljOCAqYSwKICAgIF9fdHNhbl9hdG9taWM4ICpjLCBfX3RzYW5fYXRvbWljOCB2LCBfX3RzYW5fbWVtb3J5X29yZGVyIG1vLAogICAgX190c2FuX21lbW9yeV9vcmRlciBmYWlsX21vKTsKaW50IF9fdHNhbl9hdG9taWMxNl9jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZyh2b2xhdGlsZSBfX3RzYW5fYXRvbWljMTYgKmEsCiAgICBfX3RzYW5fYXRvbWljMTYgKmMsIF9fdHNhbl9hdG9taWMxNiB2LCBfX3RzYW5fbWVtb3J5X29yZGVyIG1vLAogICAgX190c2FuX21lbW9yeV9vcmRlciBmYWlsX21vKTsKaW50IF9fdHNhbl9hdG9taWMzMl9jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZyh2b2xhdGlsZSBfX3RzYW5fYXRvbWljMzIgKmEsCiAgICBfX3RzYW5fYXRvbWljMzIgKmMsIF9fdHNhbl9hdG9taWMzMiB2LCBfX3RzYW5fbWVtb3J5X29yZGVyIG1vLAogICAgX190c2FuX21lbW9yeV9vcmRlciBmYWlsX21vKTsKaW50IF9fdHNhbl9hdG9taWM2NF9jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZyh2b2xhdGlsZSBfX3RzYW5fYXRvbWljNjQgKmEsCiAgICBfX3RzYW5fYXRvbWljNjQgKmMsIF9fdHNhbl9hdG9taWM2NCB2LCBfX3RzYW5fbWVtb3J5X29yZGVyIG1vLAogICAgX190c2FuX21lbW9yeV9vcmRlciBmYWlsX21vKTsKI2lmIF9fVFNBTl9IQVNfSU5UMTI4CmludCBfX3RzYW5fYXRvbWljMTI4X2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nKHZvbGF0aWxlIF9fdHNhbl9hdG9taWMxMjggKmEsCiAgICBfX3RzYW5fYXRvbWljMTI4ICpjLCBfX3RzYW5fYXRvbWljMTI4IHYsIF9fdHNhbl9tZW1vcnlfb3JkZXIgbW8sCiAgICBfX3RzYW5fbWVtb3J5X29yZGVyIGZhaWxfbW8pOwojZW5kaWYKCl9fdHNhbl9hdG9taWM4IF9fdHNhbl9hdG9taWM4X2NvbXBhcmVfZXhjaGFuZ2VfdmFsKAogICAgdm9sYXRpbGUgX190c2FuX2F0b21pYzggKmEsIF9fdHNhbl9hdG9taWM4IGMsIF9fdHNhbl9hdG9taWM4IHYsCiAgICBfX3RzYW5fbWVtb3J5X29yZGVyIG1vLCBfX3RzYW5fbWVtb3J5X29yZGVyIGZhaWxfbW8pOwpfX3RzYW5fYXRvbWljMTYgX190c2FuX2F0b21pYzE2X2NvbXBhcmVfZXhjaGFuZ2VfdmFsKAogICAgdm9sYXRpbGUgX190c2FuX2F0b21pYzE2ICphLCBfX3RzYW5fYXRvbWljMTYgYywgX190c2FuX2F0b21pYzE2IHYsCiAgICBfX3RzYW5fbWVtb3J5X29yZGVyIG1vLCBfX3RzYW5fbWVtb3J5X29yZGVyIGZhaWxfbW8pOwpfX3RzYW5fYXRvbWljMzIgX190c2FuX2F0b21pYzMyX2NvbXBhcmVfZXhjaGFuZ2VfdmFsKAogICAgdm9sYXRpbGUgX190c2FuX2F0b21pYzMyICphLCBfX3RzYW5fYXRvbWljMzIgYywgX190c2FuX2F0b21pYzMyIHYsCiAgICBfX3RzYW5fbWVtb3J5X29yZGVyIG1vLCBfX3RzYW5fbWVtb3J5X29yZGVyIGZhaWxfbW8pOwpfX3RzYW5fYXRvbWljNjQgX190c2FuX2F0b21pYzY0X2NvbXBhcmVfZXhjaGFuZ2VfdmFsKAogICAgdm9sYXRpbGUgX190c2FuX2F0b21pYzY0ICphLCBfX3RzYW5fYXRvbWljNjQgYywgX190c2FuX2F0b21pYzY0IHYsCiAgICBfX3RzYW5fbWVtb3J5X29yZGVyIG1vLCBfX3RzYW5fbWVtb3J5X29yZGVyIGZhaWxfbW8pOwojaWYgX19UU0FOX0hBU19JTlQxMjgKX190c2FuX2F0b21pYzEyOCBfX3RzYW5fYXRvbWljMTI4X2NvbXBhcmVfZXhjaGFuZ2VfdmFsKAogICAgdm9sYXRpbGUgX190c2FuX2F0b21pYzEyOCAqYSwgX190c2FuX2F0b21pYzEyOCBjLCBfX3RzYW5fYXRvbWljMTI4IHYsCiAgICBfX3RzYW5fbWVtb3J5X29yZGVyIG1vLCBfX3RzYW5fbWVtb3J5X29yZGVyIGZhaWxfbW8pOwojZW5kaWYKCnZvaWQgX190c2FuX2F0b21pY190aHJlYWRfZmVuY2UoX190c2FuX21lbW9yeV9vcmRlciBtbyk7CnZvaWQgX190c2FuX2F0b21pY19zaWduYWxfZmVuY2UoX190c2FuX21lbW9yeV9vcmRlciBtbyk7CgojaWZkZWYgX19jcGx1c3BsdXMKfSAgLy8gZXh0ZXJuICJDIgojZW5kaWYKCiNlbmRpZiAgLy8gVFNBTl9JTlRFUkZBQ0VfQVRPTUlDX0gKAFJvb3QgZWxlbWVudCBpbiBKU09OIHdhcyBub3QgYW4gYXJyYXkuAE1pc3NpbmcgYSBjbG9zaW5nIHF1b3RhdGlvbiBtYXJrIGluIHN0cmluZy4ASW52YWxpZCBlbmNvZGluZyBpbiBzdHJpbmcuAGNsZWFuLW9ubHkAV2FsayBOVUxMAFxkAFxEAFs6ZGlnaXQ6XQAoPyw/KQBCYWQgYXJnczogbnN1Ym1hdGNoPQBcdABCZW5nYWxpAE51c2h1AFRpcmh1dGEAU0lHSUxMAFNJR1RFUk0AJXM6IHRvbyBtYW55IGV4ZWN1dGFibGUgTE9BRCBzZWdtZW50cwBiYXNlICE9IGRlYnVnZ2luZ19pbnRlcm5hbDo6RWxmTWVtSW1hZ2U6OmtJbnZhbGlkQmFzZQBpIDwgcHJldi0+bGV2ZWxzAGEAZGVjaW1hbDY0AER1AG1sADw8PQBBbiBPSyBzdGF0dXMgaXMgbm90IGEgdmFsaWQgY29uc3RydWN0b3IgYXJndW1lbnQgdG8gU3RhdHVzT3I8VD4AaW52YWxpZCBzdXJyb2dhdGUgY2hhcmFjdGVyICgweEQ4MDAtREZGRik6IFwAdHJlZS0+YmVnaW4oKSA8IHRyZWUtPmNhcGFjaXR5KCkASXNEYXRhRWRnZShlZGdlKQBDb3JkUmVwQnRyZWU6OkNoZWNrVmFsaWQoKSBGQUlMRUQ6ICVzICE9ICVzICglcyB2cyAlcykAMHgAXS5jaGlsZCA9PSBudWxscHRyAHdhaXRwLT50aHJlYWQtPndhaXRwID09IG51bGxwdHIgfHwgd2FpdHAtPnRocmVhZC0+c3VwcHJlc3NfZmF0YWxfZXJyb3JzAE11dGV4OjpGZXIgd2hpbGUgd2FpdGluZyBvbiBDb25kaXRpb24AV2FpdABVbmxvY2sgAFdhaXQgdW5ibG9ja2VkIAByAGV4dGVybmFsL2JvcmluZ3NzbC9zcmMvY3J5cHRvL2ZpcHNtb2R1bGUvYm4vbXVsLmMAZXh0ZXJuYWwvYm9yaW5nc3NsL3NyYy9jcnlwdG8vZmlwc21vZHVsZS9lYy9lY19tb250Z29tZXJ5LmMAZXh0ZXJuYWwvYm9yaW5nc3NsL3NyYy9jcnlwdG8vZmlwc21vZHVsZS9lYy9mZWxlbS5jAE5JU1QgUC0zODQAZ2V0cmFuZG9tAGt5dGhlLnByb3RvLkFuYWx5c2lzUmVxdWVzdC5idWlsZF9pZABreXRoZS5wcm90by5Db21waWxhdGlvblVuaXQub3V0cHV0X2tleQBreXRoZS5wcm90by5CdWlsZERldGFpbHMucnVsZV90eXBlAGt5dGhlLnByb3RvLm1ldGFkYXRhLk1hcHBpbmdSdWxlLmVkZ2UAa3l0aGUvcHJvdG8vc3RvcmFnZS5wcm90bwAgIT0gAEtZVEhFX09VVFBVVF9GSUxFACkgZHVlIHRvIGl0cyBpbmNsdXNpb24gaW4gY29tcGlsZXIgYXJndW1lbnQ6IABwcmFnbWEAYXZ4NTEydmJtaWludHJpbi5oAGNsd2JpbnRyaW4uaABjcHVpZC5oAGludHR5cGVzLmgAaW52cGNpZGludHJpbi5oAG1tM2Rub3cuaAAvKj09PS0tLS0gbXNhLmggLSBNSVBTIE1TQSBpbnRyaW5zaWNzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqCiAqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCiAqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCgojaWZuZGVmIF9NU0FfSAojZGVmaW5lIF9NU0FfSCAxCgojaWYgZGVmaW5lZChfX21pcHNfbXNhKQp0eXBlZGVmIHNpZ25lZCBjaGFyIHYxNmk4IF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKDE2KSwgYWxpZ25lZCgxNikpKTsKdHlwZWRlZiBzaWduZWQgY2hhciB2MTZpOF9iIF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKDE2KSwgYWxpZ25lZCgxKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdjE2dTggX19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoMTYpLCBhbGlnbmVkKDE2KSkpOwp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdjE2dThfYiBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZSgxNiksIGFsaWduZWQoMSkpKTsKdHlwZWRlZiBzaG9ydCB2OGkxNiBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZSgxNiksIGFsaWduZWQoMTYpKSk7CnR5cGVkZWYgc2hvcnQgdjhpMTZfaCBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZSgxNiksIGFsaWduZWQoMikpKTsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB2OHUxNiBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZSgxNiksIGFsaWduZWQoMTYpKSk7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdjh1MTZfaCBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZSgxNiksIGFsaWduZWQoMikpKTsKdHlwZWRlZiBpbnQgdjRpMzIgX19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoMTYpLCBhbGlnbmVkKDE2KSkpOwp0eXBlZGVmIGludCB2NGkzMl93IF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKDE2KSwgYWxpZ25lZCg0KSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCB2NHUzMiBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZSgxNiksIGFsaWduZWQoMTYpKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IHY0dTMyX3cgX19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoMTYpLCBhbGlnbmVkKDQpKSk7CnR5cGVkZWYgbG9uZyBsb25nIHYyaTY0IF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKDE2KSwgYWxpZ25lZCgxNikpKTsKdHlwZWRlZiBsb25nIGxvbmcgdjJpNjRfZCBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZSgxNiksIGFsaWduZWQoOCkpKTsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdjJ1NjQgX19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoMTYpLCBhbGlnbmVkKDE2KSkpOwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB2MnU2NF9kIF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKDE2KSwgYWxpZ25lZCg4KSkpOwp0eXBlZGVmIGZsb2F0IHY0ZjMyIF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKDE2KSwgYWxpZ25lZCgxNikpKTsKdHlwZWRlZiBmbG9hdCB2NGYzMl93IF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKDE2KSwgYWxpZ25lZCg0KSkpOwp0eXBlZGVmIGRvdWJsZSB2MmY2NCBfX2F0dHJpYnV0ZV9fICgodmVjdG9yX3NpemUoMTYpLCBhbGlnbmVkKDE2KSkpOwp0eXBlZGVmIGRvdWJsZSB2MmY2NF9kIF9fYXR0cmlidXRlX18gKCh2ZWN0b3Jfc2l6ZSgxNiksIGFsaWduZWQoOCkpKTsKCiNkZWZpbmUgX19tc2Ffc2xsX2IgX19idWlsdGluX21zYV9zbGxfYgojZGVmaW5lIF9fbXNhX3NsbF9oIF9fYnVpbHRpbl9tc2Ffc2xsX2gKI2RlZmluZSBfX21zYV9zbGxfdyBfX2J1aWx0aW5fbXNhX3NsbF93CiNkZWZpbmUgX19tc2Ffc2xsX2QgX19idWlsdGluX21zYV9zbGxfZAojZGVmaW5lIF9fbXNhX3NsbGlfYiBfX2J1aWx0aW5fbXNhX3NsbGlfYgojZGVmaW5lIF9fbXNhX3NsbGlfaCBfX2J1aWx0aW5fbXNhX3NsbGlfaAojZGVmaW5lIF9fbXNhX3NsbGlfdyBfX2J1aWx0aW5fbXNhX3NsbGlfdwojZGVmaW5lIF9fbXNhX3NsbGlfZCBfX2J1aWx0aW5fbXNhX3NsbGlfZAojZGVmaW5lIF9fbXNhX3NyYV9iIF9fYnVpbHRpbl9tc2Ffc3JhX2IKI2RlZmluZSBfX21zYV9zcmFfaCBfX2J1aWx0aW5fbXNhX3NyYV9oCiNkZWZpbmUgX19tc2Ffc3JhX3cgX19idWlsdGluX21zYV9zcmFfdwojZGVmaW5lIF9fbXNhX3NyYV9kIF9fYnVpbHRpbl9tc2Ffc3JhX2QKI2RlZmluZSBfX21zYV9zcmFpX2IgX19idWlsdGluX21zYV9zcmFpX2IKI2RlZmluZSBfX21zYV9zcmFpX2ggX19idWlsdGluX21zYV9zcmFpX2gKI2RlZmluZSBfX21zYV9zcmFpX3cgX19idWlsdGluX21zYV9zcmFpX3cKI2RlZmluZSBfX21zYV9zcmFpX2QgX19idWlsdGluX21zYV9zcmFpX2QKI2RlZmluZSBfX21zYV9zcmFyX2IgX19idWlsdGluX21zYV9zcmFyX2IKI2RlZmluZSBfX21zYV9zcmFyX2ggX19idWlsdGluX21zYV9zcmFyX2gKI2RlZmluZSBfX21zYV9zcmFyX3cgX19idWlsdGluX21zYV9zcmFyX3cKI2RlZmluZSBfX21zYV9zcmFyX2QgX19idWlsdGluX21zYV9zcmFyX2QKI2RlZmluZSBfX21zYV9zcmFyaV9iIF9fYnVpbHRpbl9tc2Ffc3JhcmlfYgojZGVmaW5lIF9fbXNhX3NyYXJpX2ggX19idWlsdGluX21zYV9zcmFyaV9oCiNkZWZpbmUgX19tc2Ffc3JhcmlfdyBfX2J1aWx0aW5fbXNhX3NyYXJpX3cKI2RlZmluZSBfX21zYV9zcmFyaV9kIF9fYnVpbHRpbl9tc2Ffc3JhcmlfZAojZGVmaW5lIF9fbXNhX3NybF9iIF9fYnVpbHRpbl9tc2Ffc3JsX2IKI2RlZmluZSBfX21zYV9zcmxfaCBfX2J1aWx0aW5fbXNhX3NybF9oCiNkZWZpbmUgX19tc2Ffc3JsX3cgX19idWlsdGluX21zYV9zcmxfdwojZGVmaW5lIF9fbXNhX3NybF9kIF9fYnVpbHRpbl9tc2Ffc3JsX2QKI2RlZmluZSBfX21zYV9zcmxpX2IgX19idWlsdGluX21zYV9zcmxpX2IKI2RlZmluZSBfX21zYV9zcmxpX2ggX19idWlsdGluX21zYV9zcmxpX2gKI2RlZmluZSBfX21zYV9zcmxpX3cgX19idWlsdGluX21zYV9zcmxpX3cKI2RlZmluZSBfX21zYV9zcmxpX2QgX19idWlsdGluX21zYV9zcmxpX2QKI2RlZmluZSBfX21zYV9zcmxyX2IgX19idWlsdGluX21zYV9zcmxyX2IKI2RlZmluZSBfX21zYV9zcmxyX2ggX19idWlsdGluX21zYV9zcmxyX2gKI2RlZmluZSBfX21zYV9zcmxyX3cgX19idWlsdGluX21zYV9zcmxyX3cKI2RlZmluZSBfX21zYV9zcmxyX2QgX19idWlsdGluX21zYV9zcmxyX2QKI2RlZmluZSBfX21zYV9zcmxyaV9iIF9fYnVpbHRpbl9tc2Ffc3JscmlfYgojZGVmaW5lIF9fbXNhX3NybHJpX2ggX19idWlsdGluX21zYV9zcmxyaV9oCiNkZWZpbmUgX19tc2Ffc3JscmlfdyBfX2J1aWx0aW5fbXNhX3NybHJpX3cKI2RlZmluZSBfX21zYV9zcmxyaV9kIF9fYnVpbHRpbl9tc2Ffc3JscmlfZAojZGVmaW5lIF9fbXNhX2JjbHJfYiBfX2J1aWx0aW5fbXNhX2JjbHJfYgojZGVmaW5lIF9fbXNhX2JjbHJfaCBfX2J1aWx0aW5fbXNhX2JjbHJfaAojZGVmaW5lIF9fbXNhX2JjbHJfdyBfX2J1aWx0aW5fbXNhX2JjbHJfdwojZGVmaW5lIF9fbXNhX2JjbHJfZCBfX2J1aWx0aW5fbXNhX2JjbHJfZAojZGVmaW5lIF9fbXNhX2JjbHJpX2IgX19idWlsdGluX21zYV9iY2xyaV9iCiNkZWZpbmUgX19tc2FfYmNscmlfaCBfX2J1aWx0aW5fbXNhX2JjbHJpX2gKI2RlZmluZSBfX21zYV9iY2xyaV93IF9fYnVpbHRpbl9tc2FfYmNscmlfdwojZGVmaW5lIF9fbXNhX2JjbHJpX2QgX19idWlsdGluX21zYV9iY2xyaV9kCiNkZWZpbmUgX19tc2FfYnNldF9iIF9fYnVpbHRpbl9tc2FfYnNldF9iCiNkZWZpbmUgX19tc2FfYnNldF9oIF9fYnVpbHRpbl9tc2FfYnNldF9oCiNkZWZpbmUgX19tc2FfYnNldF93IF9fYnVpbHRpbl9tc2FfYnNldF93CiNkZWZpbmUgX19tc2FfYnNldF9kIF9fYnVpbHRpbl9tc2FfYnNldF9kCiNkZWZpbmUgX19tc2FfYnNldGlfYiBfX2J1aWx0aW5fbXNhX2JzZXRpX2IKI2RlZmluZSBfX21zYV9ic2V0aV9oIF9fYnVpbHRpbl9tc2FfYnNldGlfaAojZGVmaW5lIF9fbXNhX2JzZXRpX3cgX19idWlsdGluX21zYV9ic2V0aV93CiNkZWZpbmUgX19tc2FfYnNldGlfZCBfX2J1aWx0aW5fbXNhX2JzZXRpX2QKI2RlZmluZSBfX21zYV9ibmVnX2IgX19idWlsdGluX21zYV9ibmVnX2IKI2RlZmluZSBfX21zYV9ibmVnX2ggX19idWlsdGluX21zYV9ibmVnX2gKI2RlZmluZSBfX21zYV9ibmVnX3cgX19idWlsdGluX21zYV9ibmVnX3cKI2RlZmluZSBfX21zYV9ibmVnX2QgX19idWlsdGluX21zYV9ibmVnX2QKI2RlZmluZSBfX21zYV9ibmVnaV9iIF9fYnVpbHRpbl9tc2FfYm5lZ2lfYgojZGVmaW5lIF9fbXNhX2JuZWdpX2ggX19idWlsdGluX21zYV9ibmVnaV9oCiNkZWZpbmUgX19tc2FfYm5lZ2lfdyBfX2J1aWx0aW5fbXNhX2JuZWdpX3cKI2RlZmluZSBfX21zYV9ibmVnaV9kIF9fYnVpbHRpbl9tc2FfYm5lZ2lfZAojZGVmaW5lIF9fbXNhX2JpbnNsX2IgX19idWlsdGluX21zYV9iaW5zbF9iCiNkZWZpbmUgX19tc2FfYmluc2xfaCBfX2J1aWx0aW5fbXNhX2JpbnNsX2gKI2RlZmluZSBfX21zYV9iaW5zbF93IF9fYnVpbHRpbl9tc2FfYmluc2xfdwojZGVmaW5lIF9fbXNhX2JpbnNsX2QgX19idWlsdGluX21zYV9iaW5zbF9kCiNkZWZpbmUgX19tc2FfYmluc2xpX2IgX19idWlsdGluX21zYV9iaW5zbGlfYgojZGVmaW5lIF9fbXNhX2JpbnNsaV9oIF9fYnVpbHRpbl9tc2FfYmluc2xpX2gKI2RlZmluZSBfX21zYV9iaW5zbGlfdyBfX2J1aWx0aW5fbXNhX2JpbnNsaV93CiNkZWZpbmUgX19tc2FfYmluc2xpX2QgX19idWlsdGluX21zYV9iaW5zbGlfZAojZGVmaW5lIF9fbXNhX2JpbnNyX2IgX19idWlsdGluX21zYV9iaW5zcl9iCiNkZWZpbmUgX19tc2FfYmluc3JfaCBfX2J1aWx0aW5fbXNhX2JpbnNyX2gKI2RlZmluZSBfX21zYV9iaW5zcl93IF9fYnVpbHRpbl9tc2FfYmluc3JfdwojZGVmaW5lIF9fbXNhX2JpbnNyX2QgX19idWlsdGluX21zYV9iaW5zcl9kCiNkZWZpbmUgX19tc2FfYmluc3JpX2IgX19idWlsdGluX21zYV9iaW5zcmlfYgojZGVmaW5lIF9fbXNhX2JpbnNyaV9oIF9fYnVpbHRpbl9tc2FfYmluc3JpX2gKI2RlZmluZSBfX21zYV9iaW5zcmlfdyBfX2J1aWx0aW5fbXNhX2JpbnNyaV93CiNkZWZpbmUgX19tc2FfYmluc3JpX2QgX19idWlsdGluX21zYV9iaW5zcmlfZAojZGVmaW5lIF9fbXNhX2FkZHZfYiBfX2J1aWx0aW5fbXNhX2FkZHZfYgojZGVmaW5lIF9fbXNhX2FkZHZfaCBfX2J1aWx0aW5fbXNhX2FkZHZfaAojZGVmaW5lIF9fbXNhX2FkZHZfdyBfX2J1aWx0aW5fbXNhX2FkZHZfdwojZGVmaW5lIF9fbXNhX2FkZHZfZCBfX2J1aWx0aW5fbXNhX2FkZHZfZAojZGVmaW5lIF9fbXNhX2FkZHZpX2IgX19idWlsdGluX21zYV9hZGR2aV9iCiNkZWZpbmUgX19tc2FfYWRkdmlfaCBfX2J1aWx0aW5fbXNhX2FkZHZpX2gKI2RlZmluZSBfX21zYV9hZGR2aV93IF9fYnVpbHRpbl9tc2FfYWRkdmlfdwojZGVmaW5lIF9fbXNhX2FkZHZpX2QgX19idWlsdGluX21zYV9hZGR2aV9kCiNkZWZpbmUgX19tc2Ffc3Vidl9iIF9fYnVpbHRpbl9tc2Ffc3Vidl9iCiNkZWZpbmUgX19tc2Ffc3Vidl9oIF9fYnVpbHRpbl9tc2Ffc3Vidl9oCiNkZWZpbmUgX19tc2Ffc3Vidl93IF9fYnVpbHRpbl9tc2Ffc3Vidl93CiNkZWZpbmUgX19tc2Ffc3Vidl9kIF9fYnVpbHRpbl9tc2Ffc3Vidl9kCiNkZWZpbmUgX19tc2Ffc3VidmlfYiBfX2J1aWx0aW5fbXNhX3N1YnZpX2IKI2RlZmluZSBfX21zYV9zdWJ2aV9oIF9fYnVpbHRpbl9tc2Ffc3VidmlfaAojZGVmaW5lIF9fbXNhX3N1YnZpX3cgX19idWlsdGluX21zYV9zdWJ2aV93CiNkZWZpbmUgX19tc2Ffc3VidmlfZCBfX2J1aWx0aW5fbXNhX3N1YnZpX2QKI2RlZmluZSBfX21zYV9tYXhfc19iIF9fYnVpbHRpbl9tc2FfbWF4X3NfYgojZGVmaW5lIF9fbXNhX21heF9zX2ggX19idWlsdGluX21zYV9tYXhfc19oCiNkZWZpbmUgX19tc2FfbWF4X3NfdyBfX2J1aWx0aW5fbXNhX21heF9zX3cKI2RlZmluZSBfX21zYV9tYXhfc19kIF9fYnVpbHRpbl9tc2FfbWF4X3NfZAojZGVmaW5lIF9fbXNhX21heGlfc19iIF9fYnVpbHRpbl9tc2FfbWF4aV9zX2IKI2RlZmluZSBfX21zYV9tYXhpX3NfaCBfX2J1aWx0aW5fbXNhX21heGlfc19oCiNkZWZpbmUgX19tc2FfbWF4aV9zX3cgX19idWlsdGluX21zYV9tYXhpX3NfdwojZGVmaW5lIF9fbXNhX21heGlfc19kIF9fYnVpbHRpbl9tc2FfbWF4aV9zX2QKI2RlZmluZSBfX21zYV9tYXhfdV9iIF9fYnVpbHRpbl9tc2FfbWF4X3VfYgojZGVmaW5lIF9fbXNhX21heF91X2ggX19idWlsdGluX21zYV9tYXhfdV9oCiNkZWZpbmUgX19tc2FfbWF4X3VfdyBfX2J1aWx0aW5fbXNhX21heF91X3cKI2RlZmluZSBfX21zYV9tYXhfdV9kIF9fYnVpbHRpbl9tc2FfbWF4X3VfZAojZGVmaW5lIF9fbXNhX21heGlfdV9iIF9fYnVpbHRpbl9tc2FfbWF4aV91X2IKI2RlZmluZSBfX21zYV9tYXhpX3VfaCBfX2J1aWx0aW5fbXNhX21heGlfdV9oCiNkZWZpbmUgX19tc2FfbWF4aV91X3cgX19idWlsdGluX21zYV9tYXhpX3VfdwojZGVmaW5lIF9fbXNhX21heGlfdV9kIF9fYnVpbHRpbl9tc2FfbWF4aV91X2QKI2RlZmluZSBfX21zYV9taW5fc19iIF9fYnVpbHRpbl9tc2FfbWluX3NfYgojZGVmaW5lIF9fbXNhX21pbl9zX2ggX19idWlsdGluX21zYV9taW5fc19oCiNkZWZpbmUgX19tc2FfbWluX3NfdyBfX2J1aWx0aW5fbXNhX21pbl9zX3cKI2RlZmluZSBfX21zYV9taW5fc19kIF9fYnVpbHRpbl9tc2FfbWluX3NfZAojZGVmaW5lIF9fbXNhX21pbmlfc19iIF9fYnVpbHRpbl9tc2FfbWluaV9zX2IKI2RlZmluZSBfX21zYV9taW5pX3NfaCBfX2J1aWx0aW5fbXNhX21pbmlfc19oCiNkZWZpbmUgX19tc2FfbWluaV9zX3cgX19idWlsdGluX21zYV9taW5pX3NfdwojZGVmaW5lIF9fbXNhX21pbmlfc19kIF9fYnVpbHRpbl9tc2FfbWluaV9zX2QKI2RlZmluZSBfX21zYV9taW5fdV9iIF9fYnVpbHRpbl9tc2FfbWluX3VfYgojZGVmaW5lIF9fbXNhX21pbl91X2ggX19idWlsdGluX21zYV9taW5fdV9oCiNkZWZpbmUgX19tc2FfbWluX3VfdyBfX2J1aWx0aW5fbXNhX21pbl91X3cKI2RlZmluZSBfX21zYV9taW5fdV9kIF9fYnVpbHRpbl9tc2FfbWluX3VfZAojZGVmaW5lIF9fbXNhX21pbmlfdV9iIF9fYnVpbHRpbl9tc2FfbWluaV91X2IKI2RlZmluZSBfX21zYV9taW5pX3VfaCBfX2J1aWx0aW5fbXNhX21pbmlfdV9oCiNkZWZpbmUgX19tc2FfbWluaV91X3cgX19idWlsdGluX21zYV9taW5pX3VfdwojZGVmaW5lIF9fbXNhX21pbmlfdV9kIF9fYnVpbHRpbl9tc2FfbWluaV91X2QKI2RlZmluZSBfX21zYV9tYXhfYV9iIF9fYnVpbHRpbl9tc2FfbWF4X2FfYgojZGVmaW5lIF9fbXNhX21heF9hX2ggX19idWlsdGluX21zYV9tYXhfYV9oCiNkZWZpbmUgX19tc2FfbWF4X2FfdyBfX2J1aWx0aW5fbXNhX21heF9hX3cKI2RlZmluZSBfX21zYV9tYXhfYV9kIF9fYnVpbHRpbl9tc2FfbWF4X2FfZAojZGVmaW5lIF9fbXNhX21pbl9hX2IgX19idWlsdGluX21zYV9taW5fYV9iCiNkZWZpbmUgX19tc2FfbWluX2FfaCBfX2J1aWx0aW5fbXNhX21pbl9hX2gKI2RlZmluZSBfX21zYV9taW5fYV93IF9fYnVpbHRpbl9tc2FfbWluX2FfdwojZGVmaW5lIF9fbXNhX21pbl9hX2QgX19idWlsdGluX21zYV9taW5fYV9kCiNkZWZpbmUgX19tc2FfY2VxX2IgX19idWlsdGluX21zYV9jZXFfYgojZGVmaW5lIF9fbXNhX2NlcV9oIF9fYnVpbHRpbl9tc2FfY2VxX2gKI2RlZmluZSBfX21zYV9jZXFfdyBfX2J1aWx0aW5fbXNhX2NlcV93CiNkZWZpbmUgX19tc2FfY2VxX2QgX19idWlsdGluX21zYV9jZXFfZAojZGVmaW5lIF9fbXNhX2NlcWlfYiBfX2J1aWx0aW5fbXNhX2NlcWlfYgojZGVmaW5lIF9fbXNhX2NlcWlfaCBfX2J1aWx0aW5fbXNhX2NlcWlfaAojZGVmaW5lIF9fbXNhX2NlcWlfdyBfX2J1aWx0aW5fbXNhX2NlcWlfdwojZGVmaW5lIF9fbXNhX2NlcWlfZCBfX2J1aWx0aW5fbXNhX2NlcWlfZAojZGVmaW5lIF9fbXNhX2NsdF9zX2IgX19idWlsdGluX21zYV9jbHRfc19iCiNkZWZpbmUgX19tc2FfY2x0X3NfaCBfX2J1aWx0aW5fbXNhX2NsdF9zX2gKI2RlZmluZSBfX21zYV9jbHRfc193IF9fYnVpbHRpbl9tc2FfY2x0X3NfdwojZGVmaW5lIF9fbXNhX2NsdF9zX2QgX19idWlsdGluX21zYV9jbHRfc19kCiNkZWZpbmUgX19tc2FfY2x0aV9zX2IgX19idWlsdGluX21zYV9jbHRpX3NfYgojZGVmaW5lIF9fbXNhX2NsdGlfc19oIF9fYnVpbHRpbl9tc2FfY2x0aV9zX2gKI2RlZmluZSBfX21zYV9jbHRpX3NfdyBfX2J1aWx0aW5fbXNhX2NsdGlfc193CiNkZWZpbmUgX19tc2FfY2x0aV9zX2QgX19idWlsdGluX21zYV9jbHRpX3NfZAojZGVmaW5lIF9fbXNhX2NsdF91X2IgX19idWlsdGluX21zYV9jbHRfdV9iCiNkZWZpbmUgX19tc2FfY2x0X3VfaCBfX2J1aWx0aW5fbXNhX2NsdF91X2gKI2RlZmluZSBfX21zYV9jbHRfdV93IF9fYnVpbHRpbl9tc2FfY2x0X3VfdwojZGVmaW5lIF9fbXNhX2NsdF91X2QgX19idWlsdGluX21zYV9jbHRfdV9kCiNkZWZpbmUgX19tc2FfY2x0aV91X2IgX19idWlsdGluX21zYV9jbHRpX3VfYgojZGVmaW5lIF9fbXNhX2NsdGlfdV9oIF9fYnVpbHRpbl9tc2FfY2x0aV91X2gKI2RlZmluZSBfX21zYV9jbHRpX3VfdyBfX2J1aWx0aW5fbXNhX2NsdGlfdV93CiNkZWZpbmUgX19tc2FfY2x0aV91X2QgX19idWlsdGluX21zYV9jbHRpX3VfZAojZGVmaW5lIF9fbXNhX2NsZV9zX2IgX19idWlsdGluX21zYV9jbGVfc19iCiNkZWZpbmUgX19tc2FfY2xlX3NfaCBfX2J1aWx0aW5fbXNhX2NsZV9zX2gKI2RlZmluZSBfX21zYV9jbGVfc193IF9fYnVpbHRpbl9tc2FfY2xlX3NfdwojZGVmaW5lIF9fbXNhX2NsZV9zX2QgX19idWlsdGluX21zYV9jbGVfc19kCiNkZWZpbmUgX19tc2FfY2xlaV9zX2IgX19idWlsdGluX21zYV9jbGVpX3NfYgojZGVmaW5lIF9fbXNhX2NsZWlfc19oIF9fYnVpbHRpbl9tc2FfY2xlaV9zX2gKI2RlZmluZSBfX21zYV9jbGVpX3NfdyBfX2J1aWx0aW5fbXNhX2NsZWlfc193CiNkZWZpbmUgX19tc2FfY2xlaV9zX2QgX19idWlsdGluX21zYV9jbGVpX3NfZAojZGVmaW5lIF9fbXNhX2NsZV91X2IgX19idWlsdGluX21zYV9jbGVfdV9iCiNkZWZpbmUgX19tc2FfY2xlX3VfaCBfX2J1aWx0aW5fbXNhX2NsZV91X2gKI2RlZmluZSBfX21zYV9jbGVfdV93IF9fYnVpbHRpbl9tc2FfY2xlX3VfdwojZGVmaW5lIF9fbXNhX2NsZV91X2QgX19idWlsdGluX21zYV9jbGVfdV9kCiNkZWZpbmUgX19tc2FfY2xlaV91X2IgX19idWlsdGluX21zYV9jbGVpX3VfYgojZGVmaW5lIF9fbXNhX2NsZWlfdV9oIF9fYnVpbHRpbl9tc2FfY2xlaV91X2gKI2RlZmluZSBfX21zYV9jbGVpX3VfdyBfX2J1aWx0aW5fbXNhX2NsZWlfdV93CiNkZWZpbmUgX19tc2FfY2xlaV91X2QgX19idWlsdGluX21zYV9jbGVpX3VfZAojZGVmaW5lIF9fbXNhX2xkX2IgX19idWlsdGluX21zYV9sZF9iCiNkZWZpbmUgX19tc2FfbGRfaCBfX2J1aWx0aW5fbXNhX2xkX2gKI2RlZmluZSBfX21zYV9sZF93IF9fYnVpbHRpbl9tc2FfbGRfdwojZGVmaW5lIF9fbXNhX2xkX2QgX19idWlsdGluX21zYV9sZF9kCiNkZWZpbmUgX19tc2FfbGRyX2QgX19idWlsdGluX21zYV9sZHJfZAojZGVmaW5lIF9fbXNhX2xkcl93IF9fYnVpbHRpbl9tc2FfbGRycV93CiNkZWZpbmUgX19tc2Ffc3RfYiBfX2J1aWx0aW5fbXNhX3N0X2IKI2RlZmluZSBfX21zYV9zdF9oIF9fYnVpbHRpbl9tc2Ffc3RfaAojZGVmaW5lIF9fbXNhX3N0X3cgX19idWlsdGluX21zYV9zdF93CiNkZWZpbmUgX19tc2Ffc3RfZCBfX2J1aWx0aW5fbXNhX3N0X2QKI2RlZmluZSBfX21zYV9zdHJfZCBfX2J1aWx0aW5fbXNhX3N0cl9kCiNkZWZpbmUgX19tc2Ffc3RyX3cgX19idWlsdGluX21zYV9zdHJxX3cKI2RlZmluZSBfX21zYV9zYXRfc19iIF9fYnVpbHRpbl9tc2Ffc2F0X3NfYgojZGVmaW5lIF9fbXNhX3NhdF9zX2ggX19idWlsdGluX21zYV9zYXRfc19oCiNkZWZpbmUgX19tc2Ffc2F0X3NfdyBfX2J1aWx0aW5fbXNhX3NhdF9zX3cKI2RlZmluZSBfX21zYV9zYXRfc19kIF9fYnVpbHRpbl9tc2Ffc2F0X3NfZAojZGVmaW5lIF9fbXNhX3NhdF91X2IgX19idWlsdGluX21zYV9zYXRfdV9iCiNkZWZpbmUgX19tc2Ffc2F0X3VfaCBfX2J1aWx0aW5fbXNhX3NhdF91X2gKI2RlZmluZSBfX21zYV9zYXRfdV93IF9fYnVpbHRpbl9tc2Ffc2F0X3VfdwojZGVmaW5lIF9fbXNhX3NhdF91X2QgX19idWlsdGluX21zYV9zYXRfdV9kCiNkZWZpbmUgX19tc2FfYWRkX2FfYiBfX2J1aWx0aW5fbXNhX2FkZF9hX2IKI2RlZmluZSBfX21zYV9hZGRfYV9oIF9fYnVpbHRpbl9tc2FfYWRkX2FfaAojZGVmaW5lIF9fbXNhX2FkZF9hX3cgX19idWlsdGluX21zYV9hZGRfYV93CiNkZWZpbmUgX19tc2FfYWRkX2FfZCBfX2J1aWx0aW5fbXNhX2FkZF9hX2QKI2RlZmluZSBfX21zYV9hZGRzX2FfYiBfX2J1aWx0aW5fbXNhX2FkZHNfYV9iCiNkZWZpbmUgX19tc2FfYWRkc19hX2ggX19idWlsdGluX21zYV9hZGRzX2FfaAojZGVmaW5lIF9fbXNhX2FkZHNfYV93IF9fYnVpbHRpbl9tc2FfYWRkc19hX3cKI2RlZmluZSBfX21zYV9hZGRzX2FfZCBfX2J1aWx0aW5fbXNhX2FkZHNfYV9kCiNkZWZpbmUgX19tc2FfYWRkc19zX2IgX19idWlsdGluX21zYV9hZGRzX3NfYgojZGVmaW5lIF9fbXNhX2FkZHNfc19oIF9fYnVpbHRpbl9tc2FfYWRkc19zX2gKI2RlZmluZSBfX21zYV9hZGRzX3NfdyBfX2J1aWx0aW5fbXNhX2FkZHNfc193CiNkZWZpbmUgX19tc2FfYWRkc19zX2QgX19idWlsdGluX21zYV9hZGRzX3NfZAojZGVmaW5lIF9fbXNhX2FkZHNfdV9iIF9fYnVpbHRpbl9tc2FfYWRkc191X2IKI2RlZmluZSBfX21zYV9hZGRzX3VfaCBfX2J1aWx0aW5fbXNhX2FkZHNfdV9oCiNkZWZpbmUgX19tc2FfYWRkc191X3cgX19idWlsdGluX21zYV9hZGRzX3VfdwojZGVmaW5lIF9fbXNhX2FkZHNfdV9kIF9fYnVpbHRpbl9tc2FfYWRkc191X2QKI2RlZmluZSBfX21zYV9hdmVfc19iIF9fYnVpbHRpbl9tc2FfYXZlX3NfYgojZGVmaW5lIF9fbXNhX2F2ZV9zX2ggX19idWlsdGluX21zYV9hdmVfc19oCiNkZWZpbmUgX19tc2FfYXZlX3NfdyBfX2J1aWx0aW5fbXNhX2F2ZV9zX3cKI2RlZmluZSBfX21zYV9hdmVfc19kIF9fYnVpbHRpbl9tc2FfYXZlX3NfZAojZGVmaW5lIF9fbXNhX2F2ZV91X2IgX19idWlsdGluX21zYV9hdmVfdV9iCiNkZWZpbmUgX19tc2FfYXZlX3VfaCBfX2J1aWx0aW5fbXNhX2F2ZV91X2gKI2RlZmluZSBfX21zYV9hdmVfdV93IF9fYnVpbHRpbl9tc2FfYXZlX3VfdwojZGVmaW5lIF9fbXNhX2F2ZV91X2QgX19idWlsdGluX21zYV9hdmVfdV9kCiNkZWZpbmUgX19tc2FfYXZlcl9zX2IgX19idWlsdGluX21zYV9hdmVyX3NfYgojZGVmaW5lIF9fbXNhX2F2ZXJfc19oIF9fYnVpbHRpbl9tc2FfYXZlcl9zX2gKI2RlZmluZSBfX21zYV9hdmVyX3NfdyBfX2J1aWx0aW5fbXNhX2F2ZXJfc193CiNkZWZpbmUgX19tc2FfYXZlcl9zX2QgX19idWlsdGluX21zYV9hdmVyX3NfZAojZGVmaW5lIF9fbXNhX2F2ZXJfdV9iIF9fYnVpbHRpbl9tc2FfYXZlcl91X2IKI2RlZmluZSBfX21zYV9hdmVyX3VfaCBfX2J1aWx0aW5fbXNhX2F2ZXJfdV9oCiNkZWZpbmUgX19tc2FfYXZlcl91X3cgX19idWlsdGluX21zYV9hdmVyX3VfdwojZGVmaW5lIF9fbXNhX2F2ZXJfdV9kIF9fYnVpbHRpbl9tc2FfYXZlcl91X2QKI2RlZmluZSBfX21zYV9zdWJzX3NfYiBfX2J1aWx0aW5fbXNhX3N1YnNfc19iCiNkZWZpbmUgX19tc2Ffc3Vic19zX2ggX19idWlsdGluX21zYV9zdWJzX3NfaAojZGVmaW5lIF9fbXNhX3N1YnNfc193IF9fYnVpbHRpbl9tc2Ffc3Vic19zX3cKI2RlZmluZSBfX21zYV9zdWJzX3NfZCBfX2J1aWx0aW5fbXNhX3N1YnNfc19kCiNkZWZpbmUgX19tc2Ffc3Vic191X2IgX19idWlsdGluX21zYV9zdWJzX3VfYgojZGVmaW5lIF9fbXNhX3N1YnNfdV9oIF9fYnVpbHRpbl9tc2Ffc3Vic191X2gKI2RlZmluZSBfX21zYV9zdWJzX3VfdyBfX2J1aWx0aW5fbXNhX3N1YnNfdV93CiNkZWZpbmUgX19tc2Ffc3Vic191X2QgX19idWlsdGluX21zYV9zdWJzX3VfZAojZGVmaW5lIF9fbXNhX3N1YnN1dV9zX2IgX19idWlsdGluX21zYV9zdWJzdXVfc19iCiNkZWZpbmUgX19tc2Ffc3Vic3V1X3NfaCBfX2J1aWx0aW5fbXNhX3N1YnN1dV9zX2gKI2RlZmluZSBfX21zYV9zdWJzdXVfc193IF9fYnVpbHRpbl9tc2Ffc3Vic3V1X3NfdwojZGVmaW5lIF9fbXNhX3N1YnN1dV9zX2QgX19idWlsdGluX21zYV9zdWJzdXVfc19kCiNkZWZpbmUgX19tc2Ffc3Vic3VzX3VfYiBfX2J1aWx0aW5fbXNhX3N1YnN1c191X2IKI2RlZmluZSBfX21zYV9zdWJzdXNfdV9oIF9fYnVpbHRpbl9tc2Ffc3Vic3VzX3VfaAojZGVmaW5lIF9fbXNhX3N1YnN1c191X3cgX19idWlsdGluX21zYV9zdWJzdXNfdV93CiNkZWZpbmUgX19tc2Ffc3Vic3VzX3VfZCBfX2J1aWx0aW5fbXNhX3N1YnN1c191X2QKI2RlZmluZSBfX21zYV9hc3ViX3NfYiBfX2J1aWx0aW5fbXNhX2FzdWJfc19iCiNkZWZpbmUgX19tc2FfYXN1Yl9zX2ggX19idWlsdGluX21zYV9hc3ViX3NfaAojZGVmaW5lIF9fbXNhX2FzdWJfc193IF9fYnVpbHRpbl9tc2FfYXN1Yl9zX3cKI2RlZmluZSBfX21zYV9hc3ViX3NfZCBfX2J1aWx0aW5fbXNhX2FzdWJfc19kCiNkZWZpbmUgX19tc2FfYXN1Yl91X2IgX19idWlsdGluX21zYV9hc3ViX3VfYgojZGVmaW5lIF9fbXNhX2FzdWJfdV9oIF9fYnVpbHRpbl9tc2FfYXN1Yl91X2gKI2RlZmluZSBfX21zYV9hc3ViX3VfdyBfX2J1aWx0aW5fbXNhX2FzdWJfdV93CiNkZWZpbmUgX19tc2FfYXN1Yl91X2QgX19idWlsdGluX21zYV9hc3ViX3VfZAojZGVmaW5lIF9fbXNhX211bHZfYiBfX2J1aWx0aW5fbXNhX211bHZfYgojZGVmaW5lIF9fbXNhX211bHZfaCBfX2J1aWx0aW5fbXNhX211bHZfaAojZGVmaW5lIF9fbXNhX211bHZfdyBfX2J1aWx0aW5fbXNhX211bHZfdwojZGVmaW5lIF9fbXNhX211bHZfZCBfX2J1aWx0aW5fbXNhX211bHZfZAojZGVmaW5lIF9fbXNhX21hZGR2X2IgX19idWlsdGluX21zYV9tYWRkdl9iCiNkZWZpbmUgX19tc2FfbWFkZHZfaCBfX2J1aWx0aW5fbXNhX21hZGR2X2gKI2RlZmluZSBfX21zYV9tYWRkdl93IF9fYnVpbHRpbl9tc2FfbWFkZHZfdwojZGVmaW5lIF9fbXNhX21hZGR2X2QgX19idWlsdGluX21zYV9tYWRkdl9kCiNkZWZpbmUgX19tc2FfbXN1YnZfYiBfX2J1aWx0aW5fbXNhX21zdWJ2X2IKI2RlZmluZSBfX21zYV9tc3Vidl9oIF9fYnVpbHRpbl9tc2FfbXN1YnZfaAojZGVmaW5lIF9fbXNhX21zdWJ2X3cgX19idWlsdGluX21zYV9tc3Vidl93CiNkZWZpbmUgX19tc2FfbXN1YnZfZCBfX2J1aWx0aW5fbXNhX21zdWJ2X2QKI2RlZmluZSBfX21zYV9kaXZfc19iIF9fYnVpbHRpbl9tc2FfZGl2X3NfYgojZGVmaW5lIF9fbXNhX2Rpdl9zX2ggX19idWlsdGluX21zYV9kaXZfc19oCiNkZWZpbmUgX19tc2FfZGl2X3NfdyBfX2J1aWx0aW5fbXNhX2Rpdl9zX3cKI2RlZmluZSBfX21zYV9kaXZfc19kIF9fYnVpbHRpbl9tc2FfZGl2X3NfZAojZGVmaW5lIF9fbXNhX2Rpdl91X2IgX19idWlsdGluX21zYV9kaXZfdV9iCiNkZWZpbmUgX19tc2FfZGl2X3VfaCBfX2J1aWx0aW5fbXNhX2Rpdl91X2gKI2RlZmluZSBfX21zYV9kaXZfdV93IF9fYnVpbHRpbl9tc2FfZGl2X3VfdwojZGVmaW5lIF9fbXNhX2Rpdl91X2QgX19idWlsdGluX21zYV9kaXZfdV9kCiNkZWZpbmUgX19tc2FfaGFkZF9zX2ggX19idWlsdGluX21zYV9oYWRkX3NfaAojZGVmaW5lIF9fbXNhX2hhZGRfc193IF9fYnVpbHRpbl9tc2FfaGFkZF9zX3cKI2RlZmluZSBfX21zYV9oYWRkX3NfZCBfX2J1aWx0aW5fbXNhX2hhZGRfc19kCiNkZWZpbmUgX19tc2FfaGFkZF91X2ggX19idWlsdGluX21zYV9oYWRkX3VfaAojZGVmaW5lIF9fbXNhX2hhZGRfdV93IF9fYnVpbHRpbl9tc2FfaGFkZF91X3cKI2RlZmluZSBfX21zYV9oYWRkX3VfZCBfX2J1aWx0aW5fbXNhX2hhZGRfdV9kCiNkZWZpbmUgX19tc2FfaHN1Yl9zX2ggX19idWlsdGluX21zYV9oc3ViX3NfaAojZGVmaW5lIF9fbXNhX2hzdWJfc193IF9fYnVpbHRpbl9tc2FfaHN1Yl9zX3cKI2RlZmluZSBfX21zYV9oc3ViX3NfZCBfX2J1aWx0aW5fbXNhX2hzdWJfc19kCiNkZWZpbmUgX19tc2FfaHN1Yl91X2ggX19idWlsdGluX21zYV9oc3ViX3VfaAojZGVmaW5lIF9fbXNhX2hzdWJfdV93IF9fYnVpbHRpbl9tc2FfaHN1Yl91X3cKI2RlZmluZSBfX21zYV9oc3ViX3VfZCBfX2J1aWx0aW5fbXNhX2hzdWJfdV9kCiNkZWZpbmUgX19tc2FfbW9kX3NfYiBfX2J1aWx0aW5fbXNhX21vZF9zX2IKI2RlZmluZSBfX21zYV9tb2Rfc19oIF9fYnVpbHRpbl9tc2FfbW9kX3NfaAojZGVmaW5lIF9fbXNhX21vZF9zX3cgX19idWlsdGluX21zYV9tb2Rfc193CiNkZWZpbmUgX19tc2FfbW9kX3NfZCBfX2J1aWx0aW5fbXNhX21vZF9zX2QKI2RlZmluZSBfX21zYV9tb2RfdV9iIF9fYnVpbHRpbl9tc2FfbW9kX3VfYgojZGVmaW5lIF9fbXNhX21vZF91X2ggX19idWlsdGluX21zYV9tb2RfdV9oCiNkZWZpbmUgX19tc2FfbW9kX3VfdyBfX2J1aWx0aW5fbXNhX21vZF91X3cKI2RlZmluZSBfX21zYV9tb2RfdV9kIF9fYnVpbHRpbl9tc2FfbW9kX3VfZAojZGVmaW5lIF9fbXNhX2RvdHBfc19oIF9fYnVpbHRpbl9tc2FfZG90cF9zX2gKI2RlZmluZSBfX21zYV9kb3RwX3NfdyBfX2J1aWx0aW5fbXNhX2RvdHBfc193CiNkZWZpbmUgX19tc2FfZG90cF9zX2QgX19idWlsdGluX21zYV9kb3RwX3NfZAojZGVmaW5lIF9fbXNhX2RvdHBfdV9oIF9fYnVpbHRpbl9tc2FfZG90cF91X2gKI2RlZmluZSBfX21zYV9kb3RwX3VfdyBfX2J1aWx0aW5fbXNhX2RvdHBfdV93CiNkZWZpbmUgX19tc2FfZG90cF91X2QgX19idWlsdGluX21zYV9kb3RwX3VfZAojZGVmaW5lIF9fbXNhX2RwYWRkX3NfaCBfX2J1aWx0aW5fbXNhX2RwYWRkX3NfaAojZGVmaW5lIF9fbXNhX2RwYWRkX3NfdyBfX2J1aWx0aW5fbXNhX2RwYWRkX3NfdwojZGVmaW5lIF9fbXNhX2RwYWRkX3NfZCBfX2J1aWx0aW5fbXNhX2RwYWRkX3NfZAojZGVmaW5lIF9fbXNhX2RwYWRkX3VfaCBfX2J1aWx0aW5fbXNhX2RwYWRkX3VfaAojZGVmaW5lIF9fbXNhX2RwYWRkX3VfdyBfX2J1aWx0aW5fbXNhX2RwYWRkX3VfdwojZGVmaW5lIF9fbXNhX2RwYWRkX3VfZCBfX2J1aWx0aW5fbXNhX2RwYWRkX3VfZAojZGVmaW5lIF9fbXNhX2Rwc3ViX3NfaCBfX2J1aWx0aW5fbXNhX2Rwc3ViX3NfaAojZGVmaW5lIF9fbXNhX2Rwc3ViX3NfdyBfX2J1aWx0aW5fbXNhX2Rwc3ViX3NfdwojZGVmaW5lIF9fbXNhX2Rwc3ViX3NfZCBfX2J1aWx0aW5fbXNhX2Rwc3ViX3NfZAojZGVmaW5lIF9fbXNhX2Rwc3ViX3VfaCBfX2J1aWx0aW5fbXNhX2Rwc3ViX3VfaAojZGVmaW5lIF9fbXNhX2Rwc3ViX3VfdyBfX2J1aWx0aW5fbXNhX2Rwc3ViX3VfdwojZGVmaW5lIF9fbXNhX2Rwc3ViX3VfZCBfX2J1aWx0aW5fbXNhX2Rwc3ViX3VfZAojZGVmaW5lIF9fbXNhX3NsZF9iIF9fYnVpbHRpbl9tc2Ffc2xkX2IKI2RlZmluZSBfX21zYV9zbGRfaCBfX2J1aWx0aW5fbXNhX3NsZF9oCiNkZWZpbmUgX19tc2Ffc2xkX3cgX19idWlsdGluX21zYV9zbGRfdwojZGVmaW5lIF9fbXNhX3NsZF9kIF9fYnVpbHRpbl9tc2Ffc2xkX2QKI2RlZmluZSBfX21zYV9zbGRpX2IgX19idWlsdGluX21zYV9zbGRpX2IKI2RlZmluZSBfX21zYV9zbGRpX2ggX19idWlsdGluX21zYV9zbGRpX2gKI2RlZmluZSBfX21zYV9zbGRpX3cgX19idWlsdGluX21zYV9zbGRpX3cKI2RlZmluZSBfX21zYV9zbGRpX2QgX19idWlsdGluX21zYV9zbGRpX2QKI2RlZmluZSBfX21zYV9zcGxhdF9iIF9fYnVpbHRpbl9tc2Ffc3BsYXRfYgojZGVmaW5lIF9fbXNhX3NwbGF0X2ggX19idWlsdGluX21zYV9zcGxhdF9oCiNkZWZpbmUgX19tc2Ffc3BsYXRfdyBfX2J1aWx0aW5fbXNhX3NwbGF0X3cKI2RlZmluZSBfX21zYV9zcGxhdF9kIF9fYnVpbHRpbl9tc2Ffc3BsYXRfZAojZGVmaW5lIF9fbXNhX3NwbGF0aV9iIF9fYnVpbHRpbl9tc2Ffc3BsYXRpX2IKI2RlZmluZSBfX21zYV9zcGxhdGlfaCBfX2J1aWx0aW5fbXNhX3NwbGF0aV9oCiNkZWZpbmUgX19tc2Ffc3BsYXRpX3cgX19idWlsdGluX21zYV9zcGxhdGlfdwojZGVmaW5lIF9fbXNhX3NwbGF0aV9kIF9fYnVpbHRpbl9tc2Ffc3BsYXRpX2QKI2RlZmluZSBfX21zYV9wY2tldl9iIF9fYnVpbHRpbl9tc2FfcGNrZXZfYgojZGVmaW5lIF9fbXNhX3Bja2V2X2ggX19idWlsdGluX21zYV9wY2tldl9oCiNkZWZpbmUgX19tc2FfcGNrZXZfdyBfX2J1aWx0aW5fbXNhX3Bja2V2X3cKI2RlZmluZSBfX21zYV9wY2tldl9kIF9fYnVpbHRpbl9tc2FfcGNrZXZfZAojZGVmaW5lIF9fbXNhX3Bja29kX2IgX19idWlsdGluX21zYV9wY2tvZF9iCiNkZWZpbmUgX19tc2FfcGNrb2RfaCBfX2J1aWx0aW5fbXNhX3Bja29kX2gKI2RlZmluZSBfX21zYV9wY2tvZF93IF9fYnVpbHRpbl9tc2FfcGNrb2RfdwojZGVmaW5lIF9fbXNhX3Bja29kX2QgX19idWlsdGluX21zYV9wY2tvZF9kCiNkZWZpbmUgX19tc2FfaWx2bF9iIF9fYnVpbHRpbl9tc2FfaWx2bF9iCiNkZWZpbmUgX19tc2FfaWx2bF9oIF9fYnVpbHRpbl9tc2FfaWx2bF9oCiNkZWZpbmUgX19tc2FfaWx2bF93IF9fYnVpbHRpbl9tc2FfaWx2bF93CiNkZWZpbmUgX19tc2FfaWx2bF9kIF9fYnVpbHRpbl9tc2FfaWx2bF9kCiNkZWZpbmUgX19tc2FfaWx2cl9iIF9fYnVpbHRpbl9tc2FfaWx2cl9iCiNkZWZpbmUgX19tc2FfaWx2cl9oIF9fYnVpbHRpbl9tc2FfaWx2cl9oCiNkZWZpbmUgX19tc2FfaWx2cl93IF9fYnVpbHRpbl9tc2FfaWx2cl93CiNkZWZpbmUgX19tc2FfaWx2cl9kIF9fYnVpbHRpbl9tc2FfaWx2cl9kCiNkZWZpbmUgX19tc2FfaWx2ZXZfYiBfX2J1aWx0aW5fbXNhX2lsdmV2X2IKI2RlZmluZSBfX21zYV9pbHZldl9oIF9fYnVpbHRpbl9tc2FfaWx2ZXZfaAojZGVmaW5lIF9fbXNhX2lsdmV2X3cgX19idWlsdGluX21zYV9pbHZldl93CiNkZWZpbmUgX19tc2FfaWx2ZXZfZCBfX2J1aWx0aW5fbXNhX2lsdmV2X2QKI2RlZmluZSBfX21zYV9pbHZvZF9iIF9fYnVpbHRpbl9tc2FfaWx2b2RfYgojZGVmaW5lIF9fbXNhX2lsdm9kX2ggX19idWlsdGluX21zYV9pbHZvZF9oCiNkZWZpbmUgX19tc2FfaWx2b2RfdyBfX2J1aWx0aW5fbXNhX2lsdm9kX3cKI2RlZmluZSBfX21zYV9pbHZvZF9kIF9fYnVpbHRpbl9tc2FfaWx2b2RfZAojZGVmaW5lIF9fbXNhX3ZzaGZfYiBfX2J1aWx0aW5fbXNhX3ZzaGZfYgojZGVmaW5lIF9fbXNhX3ZzaGZfaCBfX2J1aWx0aW5fbXNhX3ZzaGZfaAojZGVmaW5lIF9fbXNhX3ZzaGZfdyBfX2J1aWx0aW5fbXNhX3ZzaGZfdwojZGVmaW5lIF9fbXNhX3ZzaGZfZCBfX2J1aWx0aW5fbXNhX3ZzaGZfZAojZGVmaW5lIF9fbXNhX2FuZF92IF9fYnVpbHRpbl9tc2FfYW5kX3YKI2RlZmluZSBfX21zYV9hbmRpX2IgX19idWlsdGluX21zYV9hbmRpX2IKI2RlZmluZSBfX21zYV9vcl92IF9fYnVpbHRpbl9tc2Ffb3JfdgojZGVmaW5lIF9fbXNhX29yaV9iIF9fYnVpbHRpbl9tc2Ffb3JpX2IKI2RlZmluZSBfX21zYV9ub3JfdiBfX2J1aWx0aW5fbXNhX25vcl92CiNkZWZpbmUgX19tc2Ffbm9yaV9iIF9fYnVpbHRpbl9tc2Ffbm9yaV9iCiNkZWZpbmUgX19tc2FfeG9yX3YgX19idWlsdGluX21zYV94b3JfdgojZGVmaW5lIF9fbXNhX3hvcmlfYiBfX2J1aWx0aW5fbXNhX3hvcmlfYgojZGVmaW5lIF9fbXNhX2JtbnpfdiBfX2J1aWx0aW5fbXNhX2JtbnpfdgojZGVmaW5lIF9fbXNhX2JtbnppX2IgX19idWlsdGluX21zYV9ibW56aV9iCiNkZWZpbmUgX19tc2FfYm16X3YgX19idWlsdGluX21zYV9ibXpfdgojZGVmaW5lIF9fbXNhX2JtemlfYiBfX2J1aWx0aW5fbXNhX2JtemlfYgojZGVmaW5lIF9fbXNhX2JzZWxfdiBfX2J1aWx0aW5fbXNhX2JzZWxfdgojZGVmaW5lIF9fbXNhX2JzZWxpX2IgX19idWlsdGluX21zYV9ic2VsaV9iCiNkZWZpbmUgX19tc2Ffc2hmX2IgX19idWlsdGluX21zYV9zaGZfYgojZGVmaW5lIF9fbXNhX3NoZl9oIF9fYnVpbHRpbl9tc2Ffc2hmX2gKI2RlZmluZSBfX21zYV9zaGZfdyBfX2J1aWx0aW5fbXNhX3NoZl93CiNkZWZpbmUgX19tc2FfdGVzdF9ibnpfdiBfX2J1aWx0aW5fbXNhX2Juel92CiNkZWZpbmUgX19tc2FfdGVzdF9iel92IF9fYnVpbHRpbl9tc2FfYnpfdgojZGVmaW5lIF9fbXNhX2ZpbGxfYiBfX2J1aWx0aW5fbXNhX2ZpbGxfYgojZGVmaW5lIF9fbXNhX2ZpbGxfaCBfX2J1aWx0aW5fbXNhX2ZpbGxfaAojZGVmaW5lIF9fbXNhX2ZpbGxfdyBfX2J1aWx0aW5fbXNhX2ZpbGxfdwojZGVmaW5lIF9fbXNhX2ZpbGxfZCBfX2J1aWx0aW5fbXNhX2ZpbGxfZAojZGVmaW5lIF9fbXNhX3BjbnRfYiBfX2J1aWx0aW5fbXNhX3BjbnRfYgojZGVmaW5lIF9fbXNhX3BjbnRfaCBfX2J1aWx0aW5fbXNhX3BjbnRfaAojZGVmaW5lIF9fbXNhX3BjbnRfdyBfX2J1aWx0aW5fbXNhX3BjbnRfdwojZGVmaW5lIF9fbXNhX3BjbnRfZCBfX2J1aWx0aW5fbXNhX3BjbnRfZAojZGVmaW5lIF9fbXNhX25sb2NfYiBfX2J1aWx0aW5fbXNhX25sb2NfYgojZGVmaW5lIF9fbXNhX25sb2NfaCBfX2J1aWx0aW5fbXNhX25sb2NfaAojZGVmaW5lIF9fbXNhX25sb2NfdyBfX2J1aWx0aW5fbXNhX25sb2NfdwojZGVmaW5lIF9fbXNhX25sb2NfZCBfX2J1aWx0aW5fbXNhX25sb2NfZAojZGVmaW5lIF9fbXNhX25semNfYiBfX2J1aWx0aW5fbXNhX25semNfYgojZGVmaW5lIF9fbXNhX25semNfaCBfX2J1aWx0aW5fbXNhX25semNfaAojZGVmaW5lIF9fbXNhX25semNfdyBfX2J1aWx0aW5fbXNhX25semNfdwojZGVmaW5lIF9fbXNhX25semNfZCBfX2J1aWx0aW5fbXNhX25semNfZAojZGVmaW5lIF9fbXNhX2NvcHlfc19iIF9fYnVpbHRpbl9tc2FfY29weV9zX2IKI2RlZmluZSBfX21zYV9jb3B5X3NfaCBfX2J1aWx0aW5fbXNhX2NvcHlfc19oCiNkZWZpbmUgX19tc2FfY29weV9zX3cgX19idWlsdGluX21zYV9jb3B5X3NfdwojZGVmaW5lIF9fbXNhX2NvcHlfc19kIF9fYnVpbHRpbl9tc2FfY29weV9zX2QKI2RlZmluZSBfX21zYV9jb3B5X3VfYiBfX2J1aWx0aW5fbXNhX2NvcHlfdV9iCiNkZWZpbmUgX19tc2FfY29weV91X2ggX19idWlsdGluX21zYV9jb3B5X3VfaAojZGVmaW5lIF9fbXNhX2NvcHlfdV93IF9fYnVpbHRpbl9tc2FfY29weV91X3cKI2RlZmluZSBfX21zYV9jb3B5X3VfZCBfX2J1aWx0aW5fbXNhX2NvcHlfdV9kCiNkZWZpbmUgX19tc2FfaW5zZXJ0X2IgX19idWlsdGluX21zYV9pbnNlcnRfYgojZGVmaW5lIF9fbXNhX2luc2VydF9oIF9fYnVpbHRpbl9tc2FfaW5zZXJ0X2gKI2RlZmluZSBfX21zYV9pbnNlcnRfdyBfX2J1aWx0aW5fbXNhX2luc2VydF93CiNkZWZpbmUgX19tc2FfaW5zZXJ0X2QgX19idWlsdGluX21zYV9pbnNlcnRfZAojZGVmaW5lIF9fbXNhX2luc3ZlX2IgX19idWlsdGluX21zYV9pbnN2ZV9iCiNkZWZpbmUgX19tc2FfaW5zdmVfaCBfX2J1aWx0aW5fbXNhX2luc3ZlX2gKI2RlZmluZSBfX21zYV9pbnN2ZV93IF9fYnVpbHRpbl9tc2FfaW5zdmVfdwojZGVmaW5lIF9fbXNhX2luc3ZlX2QgX19idWlsdGluX21zYV9pbnN2ZV9kCiNkZWZpbmUgX19tc2FfdGVzdF9ibnpfYiBfX2J1aWx0aW5fbXNhX2Juel9iCiNkZWZpbmUgX19tc2FfdGVzdF9ibnpfaCBfX2J1aWx0aW5fbXNhX2Juel9oCiNkZWZpbmUgX19tc2FfdGVzdF9ibnpfdyBfX2J1aWx0aW5fbXNhX2Juel93CiNkZWZpbmUgX19tc2FfdGVzdF9ibnpfZCBfX2J1aWx0aW5fbXNhX2Juel9kCiNkZWZpbmUgX19tc2FfdGVzdF9iel9iIF9fYnVpbHRpbl9tc2FfYnpfYgojZGVmaW5lIF9fbXNhX3Rlc3RfYnpfaCBfX2J1aWx0aW5fbXNhX2J6X2gKI2RlZmluZSBfX21zYV90ZXN0X2J6X3cgX19idWlsdGluX21zYV9iel93CiNkZWZpbmUgX19tc2FfdGVzdF9iel9kIF9fYnVpbHRpbl9tc2FfYnpfZAojZGVmaW5lIF9fbXNhX2xkaV9iIF9fYnVpbHRpbl9tc2FfbGRpX2IKI2RlZmluZSBfX21zYV9sZGlfaCBfX2J1aWx0aW5fbXNhX2xkaV9oCiNkZWZpbmUgX19tc2FfbGRpX3cgX19idWlsdGluX21zYV9sZGlfdwojZGVmaW5lIF9fbXNhX2xkaV9kIF9fYnVpbHRpbl9tc2FfbGRpX2QKI2RlZmluZSBfX21zYV9mY2FmX3cgX19idWlsdGluX21zYV9mY2FmX3cKI2RlZmluZSBfX21zYV9mY2FmX2QgX19idWlsdGluX21zYV9mY2FmX2QKI2RlZmluZSBfX21zYV9mY29yX3cgX19idWlsdGluX21zYV9mY29yX3cKI2RlZmluZSBfX21zYV9mY29yX2QgX19idWlsdGluX21zYV9mY29yX2QKI2RlZmluZSBfX21zYV9mY3VuX3cgX19idWlsdGluX21zYV9mY3VuX3cKI2RlZmluZSBfX21zYV9mY3VuX2QgX19idWlsdGluX21zYV9mY3VuX2QKI2RlZmluZSBfX21zYV9mY3VuZV93IF9fYnVpbHRpbl9tc2FfZmN1bmVfdwojZGVmaW5lIF9fbXNhX2ZjdW5lX2QgX19idWlsdGluX21zYV9mY3VuZV9kCiNkZWZpbmUgX19tc2FfZmN1ZXFfdyBfX2J1aWx0aW5fbXNhX2ZjdWVxX3cKI2RlZmluZSBfX21zYV9mY3VlcV9kIF9fYnVpbHRpbl9tc2FfZmN1ZXFfZAojZGVmaW5lIF9fbXNhX2ZjZXFfdyBfX2J1aWx0aW5fbXNhX2ZjZXFfdwojZGVmaW5lIF9fbXNhX2ZjZXFfZCBfX2J1aWx0aW5fbXNhX2ZjZXFfZAojZGVmaW5lIF9fbXNhX2ZjbmVfdyBfX2J1aWx0aW5fbXNhX2ZjbmVfdwojZGVmaW5lIF9fbXNhX2ZjbmVfZCBfX2J1aWx0aW5fbXNhX2ZjbmVfZAojZGVmaW5lIF9fbXNhX2ZjbHRfdyBfX2J1aWx0aW5fbXNhX2ZjbHRfdwojZGVmaW5lIF9fbXNhX2ZjbHRfZCBfX2J1aWx0aW5fbXNhX2ZjbHRfZAojZGVmaW5lIF9fbXNhX2ZjdWx0X3cgX19idWlsdGluX21zYV9mY3VsdF93CiNkZWZpbmUgX19tc2FfZmN1bHRfZCBfX2J1aWx0aW5fbXNhX2ZjdWx0X2QKI2RlZmluZSBfX21zYV9mY2xlX3cgX19idWlsdGluX21zYV9mY2xlX3cKI2RlZmluZSBfX21zYV9mY2xlX2QgX19idWlsdGluX21zYV9mY2xlX2QKI2RlZmluZSBfX21zYV9mY3VsZV93IF9fYnVpbHRpbl9tc2FfZmN1bGVfdwojZGVmaW5lIF9fbXNhX2ZjdWxlX2QgX19idWlsdGluX21zYV9mY3VsZV9kCiNkZWZpbmUgX19tc2FfZnNhZl93IF9fYnVpbHRpbl9tc2FfZnNhZl93CiNkZWZpbmUgX19tc2FfZnNhZl9kIF9fYnVpbHRpbl9tc2FfZnNhZl9kCiNkZWZpbmUgX19tc2FfZnNvcl93IF9fYnVpbHRpbl9tc2FfZnNvcl93CiNkZWZpbmUgX19tc2FfZnNvcl9kIF9fYnVpbHRpbl9tc2FfZnNvcl9kCiNkZWZpbmUgX19tc2FfZnN1bl93IF9fYnVpbHRpbl9tc2FfZnN1bl93CiNkZWZpbmUgX19tc2FfZnN1bl9kIF9fYnVpbHRpbl9tc2FfZnN1bl9kCiNkZWZpbmUgX19tc2FfZnN1bmVfdyBfX2J1aWx0aW5fbXNhX2ZzdW5lX3cKI2RlZmluZSBfX21zYV9mc3VuZV9kIF9fYnVpbHRpbl9tc2FfZnN1bmVfZAojZGVmaW5lIF9fbXNhX2ZzdWVxX3cgX19idWlsdGluX21zYV9mc3VlcV93CiNkZWZpbmUgX19tc2FfZnN1ZXFfZCBfX2J1aWx0aW5fbXNhX2ZzdWVxX2QKI2RlZmluZSBfX21zYV9mc2VxX3cgX19idWlsdGluX21zYV9mc2VxX3cKI2RlZmluZSBfX21zYV9mc2VxX2QgX19idWlsdGluX21zYV9mc2VxX2QKI2RlZmluZSBfX21zYV9mc25lX3cgX19idWlsdGluX21zYV9mc25lX3cKI2RlZmluZSBfX21zYV9mc25lX2QgX19idWlsdGluX21zYV9mc25lX2QKI2RlZmluZSBfX21zYV9mc2x0X3cgX19idWlsdGluX21zYV9mc2x0X3cKI2RlZmluZSBfX21zYV9mc2x0X2QgX19idWlsdGluX21zYV9mc2x0X2QKI2RlZmluZSBfX21zYV9mc3VsdF93IF9fYnVpbHRpbl9tc2FfZnN1bHRfdwojZGVmaW5lIF9fbXNhX2ZzdWx0X2QgX19idWlsdGluX21zYV9mc3VsdF9kCiNkZWZpbmUgX19tc2FfZnNsZV93IF9fYnVpbHRpbl9tc2FfZnNsZV93CiNkZWZpbmUgX19tc2FfZnNsZV9kIF9fYnVpbHRpbl9tc2FfZnNsZV9kCiNkZWZpbmUgX19tc2FfZnN1bGVfdyBfX2J1aWx0aW5fbXNhX2ZzdWxlX3cKI2RlZmluZSBfX21zYV9mc3VsZV9kIF9fYnVpbHRpbl9tc2FfZnN1bGVfZAojZGVmaW5lIF9fbXNhX2ZhZGRfdyBfX2J1aWx0aW5fbXNhX2ZhZGRfdwojZGVmaW5lIF9fbXNhX2ZhZGRfZCBfX2J1aWx0aW5fbXNhX2ZhZGRfZAojZGVmaW5lIF9fbXNhX2ZzdWJfdyBfX2J1aWx0aW5fbXNhX2ZzdWJfdwojZGVmaW5lIF9fbXNhX2ZzdWJfZCBfX2J1aWx0aW5fbXNhX2ZzdWJfZAojZGVmaW5lIF9fbXNhX2ZtdWxfdyBfX2J1aWx0aW5fbXNhX2ZtdWxfdwojZGVmaW5lIF9fbXNhX2ZtdWxfZCBfX2J1aWx0aW5fbXNhX2ZtdWxfZAojZGVmaW5lIF9fbXNhX2ZkaXZfdyBfX2J1aWx0aW5fbXNhX2ZkaXZfdwojZGVmaW5lIF9fbXNhX2ZkaXZfZCBfX2J1aWx0aW5fbXNhX2ZkaXZfZAojZGVmaW5lIF9fbXNhX2ZtYWRkX3cgX19idWlsdGluX21zYV9mbWFkZF93CiNkZWZpbmUgX19tc2FfZm1hZGRfZCBfX2J1aWx0aW5fbXNhX2ZtYWRkX2QKI2RlZmluZSBfX21zYV9mbXN1Yl93IF9fYnVpbHRpbl9tc2FfZm1zdWJfdwojZGVmaW5lIF9fbXNhX2Ztc3ViX2QgX19idWlsdGluX21zYV9mbXN1Yl9kCiNkZWZpbmUgX19tc2FfZmV4cDJfdyBfX2J1aWx0aW5fbXNhX2ZleHAyX3cKI2RlZmluZSBfX21zYV9mZXhwMl9kIF9fYnVpbHRpbl9tc2FfZmV4cDJfZAojZGVmaW5lIF9fbXNhX2ZleGRvX2ggX19idWlsdGluX21zYV9mZXhkb19oCiNkZWZpbmUgX19tc2FfZmV4ZG9fdyBfX2J1aWx0aW5fbXNhX2ZleGRvX3cKI2RlZmluZSBfX21zYV9mdHFfaCBfX2J1aWx0aW5fbXNhX2Z0cV9oCiNkZWZpbmUgX19tc2FfZnRxX3cgX19idWlsdGluX21zYV9mdHFfdwojZGVmaW5lIF9fbXNhX2ZtaW5fdyBfX2J1aWx0aW5fbXNhX2ZtaW5fdwojZGVmaW5lIF9fbXNhX2ZtaW5fZCBfX2J1aWx0aW5fbXNhX2ZtaW5fZAojZGVmaW5lIF9fbXNhX2ZtaW5fYV93IF9fYnVpbHRpbl9tc2FfZm1pbl9hX3cKI2RlZmluZSBfX21zYV9mbWluX2FfZCBfX2J1aWx0aW5fbXNhX2ZtaW5fYV9kCiNkZWZpbmUgX19tc2FfZm1heF93IF9fYnVpbHRpbl9tc2FfZm1heF93CiNkZWZpbmUgX19tc2FfZm1heF9kIF9fYnVpbHRpbl9tc2FfZm1heF9kCiNkZWZpbmUgX19tc2FfZm1heF9hX3cgX19idWlsdGluX21zYV9mbWF4X2FfdwojZGVmaW5lIF9fbXNhX2ZtYXhfYV9kIF9fYnVpbHRpbl9tc2FfZm1heF9hX2QKI2RlZmluZSBfX21zYV9tdWxfcV9oIF9fYnVpbHRpbl9tc2FfbXVsX3FfaAojZGVmaW5lIF9fbXNhX211bF9xX3cgX19idWlsdGluX21zYV9tdWxfcV93CiNkZWZpbmUgX19tc2FfbXVscl9xX2ggX19idWlsdGluX21zYV9tdWxyX3FfaAojZGVmaW5lIF9fbXNhX211bHJfcV93IF9fYnVpbHRpbl9tc2FfbXVscl9xX3cKI2RlZmluZSBfX21zYV9tYWRkX3FfaCBfX2J1aWx0aW5fbXNhX21hZGRfcV9oCiNkZWZpbmUgX19tc2FfbWFkZF9xX3cgX19idWlsdGluX21zYV9tYWRkX3FfdwojZGVmaW5lIF9fbXNhX21hZGRyX3FfaCBfX2J1aWx0aW5fbXNhX21hZGRyX3FfaAojZGVmaW5lIF9fbXNhX21hZGRyX3FfdyBfX2J1aWx0aW5fbXNhX21hZGRyX3FfdwojZGVmaW5lIF9fbXNhX21zdWJfcV9oIF9fYnVpbHRpbl9tc2FfbXN1Yl9xX2gKI2RlZmluZSBfX21zYV9tc3ViX3FfdyBfX2J1aWx0aW5fbXNhX21zdWJfcV93CiNkZWZpbmUgX19tc2FfbXN1YnJfcV9oIF9fYnVpbHRpbl9tc2FfbXN1YnJfcV9oCiNkZWZpbmUgX19tc2FfbXN1YnJfcV93IF9fYnVpbHRpbl9tc2FfbXN1YnJfcV93CiNkZWZpbmUgX19tc2FfZmNsYXNzX3cgX19idWlsdGluX21zYV9mY2xhc3NfdwojZGVmaW5lIF9fbXNhX2ZjbGFzc19kIF9fYnVpbHRpbl9tc2FfZmNsYXNzX2QKI2RlZmluZSBfX21zYV9mc3FydF93IF9fYnVpbHRpbl9tc2FfZnNxcnRfdwojZGVmaW5lIF9fbXNhX2ZzcXJ0X2QgX19idWlsdGluX21zYV9mc3FydF9kCiNkZWZpbmUgX19tc2FfZnJjcF93IF9fYnVpbHRpbl9tc2FfZnJjcF93CiNkZWZpbmUgX19tc2FfZnJjcF9kIF9fYnVpbHRpbl9tc2FfZnJjcF9kCiNkZWZpbmUgX19tc2FfZnJpbnRfdyBfX2J1aWx0aW5fbXNhX2ZyaW50X3cKI2RlZmluZSBfX21zYV9mcmludF9kIF9fYnVpbHRpbl9tc2FfZnJpbnRfZAojZGVmaW5lIF9fbXNhX2Zyc3FydF93IF9fYnVpbHRpbl9tc2FfZnJzcXJ0X3cKI2RlZmluZSBfX21zYV9mcnNxcnRfZCBfX2J1aWx0aW5fbXNhX2Zyc3FydF9kCiNkZWZpbmUgX19tc2FfZmxvZzJfdyBfX2J1aWx0aW5fbXNhX2Zsb2cyX3cKI2RlZmluZSBfX21zYV9mbG9nMl9kIF9fYnVpbHRpbl9tc2FfZmxvZzJfZAojZGVmaW5lIF9fbXNhX2ZleHVwbF93IF9fYnVpbHRpbl9tc2FfZmV4dXBsX3cKI2RlZmluZSBfX21zYV9mZXh1cGxfZCBfX2J1aWx0aW5fbXNhX2ZleHVwbF9kCiNkZWZpbmUgX19tc2FfZmV4dXByX3cgX19idWlsdGluX21zYV9mZXh1cHJfdwojZGVmaW5lIF9fbXNhX2ZleHVwcl9kIF9fYnVpbHRpbl9tc2FfZmV4dXByX2QKI2RlZmluZSBfX21zYV9mZnFsX3cgX19idWlsdGluX21zYV9mZnFsX3cKI2RlZmluZSBfX21zYV9mZnFsX2QgX19idWlsdGluX21zYV9mZnFsX2QKI2RlZmluZSBfX21zYV9mZnFyX3cgX19idWlsdGluX21zYV9mZnFyX3cKI2RlZmluZSBfX21zYV9mZnFyX2QgX19idWlsdGluX21zYV9mZnFyX2QKI2RlZmluZSBfX21zYV9mdGludF9zX3cgX19idWlsdGluX21zYV9mdGludF9zX3cKI2RlZmluZSBfX21zYV9mdGludF9zX2QgX19idWlsdGluX21zYV9mdGludF9zX2QKI2RlZmluZSBfX21zYV9mdGludF91X3cgX19idWlsdGluX21zYV9mdGludF91X3cKI2RlZmluZSBfX21zYV9mdGludF91X2QgX19idWlsdGluX21zYV9mdGludF91X2QKI2RlZmluZSBfX21zYV9mdHJ1bmNfc193IF9fYnVpbHRpbl9tc2FfZnRydW5jX3NfdwojZGVmaW5lIF9fbXNhX2Z0cnVuY19zX2QgX19idWlsdGluX21zYV9mdHJ1bmNfc19kCiNkZWZpbmUgX19tc2FfZnRydW5jX3VfdyBfX2J1aWx0aW5fbXNhX2Z0cnVuY191X3cKI2RlZmluZSBfX21zYV9mdHJ1bmNfdV9kIF9fYnVpbHRpbl9tc2FfZnRydW5jX3VfZAojZGVmaW5lIF9fbXNhX2ZmaW50X3NfdyBfX2J1aWx0aW5fbXNhX2ZmaW50X3NfdwojZGVmaW5lIF9fbXNhX2ZmaW50X3NfZCBfX2J1aWx0aW5fbXNhX2ZmaW50X3NfZAojZGVmaW5lIF9fbXNhX2ZmaW50X3VfdyBfX2J1aWx0aW5fbXNhX2ZmaW50X3VfdwojZGVmaW5lIF9fbXNhX2ZmaW50X3VfZCBfX2J1aWx0aW5fbXNhX2ZmaW50X3VfZAojZGVmaW5lIF9fbXNhX2NmY21zYSBfX2J1aWx0aW5fbXNhX2NmY21zYQojZGVmaW5lIF9fbXNhX21vdmVfdiBfX2J1aWx0aW5fbXNhX21vdmVfdgojZGVmaW5lIF9fbXNhX2Nhc3RfdG9fdmVjdG9yX2Zsb2F0IF9fYnVpbHRpbl9tc2FfY2FzdF90b192ZWN0b3JfZmxvYXQKI2RlZmluZSBfX21zYV9jYXN0X3RvX3ZlY3Rvcl9kb3VibGUgX19idWlsdGluX21zYV9jYXN0X3RvX3ZlY3Rvcl9kb3VibGUKI2RlZmluZSBfX21zYV9jYXN0X3RvX3NjYWxhcl9mbG9hdCBfX2J1aWx0aW5fbXNhX2Nhc3RfdG9fc2NhbGFyX2Zsb2F0CiNkZWZpbmUgX19tc2FfY2FzdF90b19zY2FsYXJfZG91YmxlIF9fYnVpbHRpbl9tc2FfY2FzdF90b19zY2FsYXJfZG91YmxlCiNlbmRpZiAvKiBkZWZpbmVkKF9fbWlwc19tc2EpICovCiNlbmRpZiAvKiBfTVNBX0ggKi8KAG5tbWludHJpbi5oAHBvcGNudGludHJpbi5oAC8qPT09LS0tLSBzbW1pbnRyaW4uaCAtIFNTRTQgaW50cmluc2ljcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKi8KCiNpZm5kZWYgX19TTU1JTlRSSU5fSAojZGVmaW5lIF9fU01NSU5UUklOX0gKCiNpZiAhZGVmaW5lZChfX2kzODZfXykgJiYgIWRlZmluZWQoX194ODZfNjRfXykKI2Vycm9yICJUaGlzIGhlYWRlciBpcyBvbmx5IG1lYW50IHRvIGJlIHVzZWQgb24geDg2IGFuZCB4NjQgYXJjaGl0ZWN0dXJlIgojZW5kaWYKCiNpbmNsdWRlIDx0bW1pbnRyaW4uaD4KCi8qIERlZmluZSB0aGUgZGVmYXVsdCBhdHRyaWJ1dGVzIGZvciB0aGUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZS4gKi8KI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJzc2U0LjEiKSwgX19taW5fdmVjdG9yX3dpZHRoX18oMTI4KSkpCgovKiBTU0U0IFJvdW5kaW5nIG1hY3Jvcy4gKi8KI2RlZmluZSBfTU1fRlJPVU5EX1RPX05FQVJFU1RfSU5UICAgIDB4MDAKI2RlZmluZSBfTU1fRlJPVU5EX1RPX05FR19JTkYgICAgICAgIDB4MDEKI2RlZmluZSBfTU1fRlJPVU5EX1RPX1BPU19JTkYgICAgICAgIDB4MDIKI2RlZmluZSBfTU1fRlJPVU5EX1RPX1pFUk8gICAgICAgICAgIDB4MDMKI2RlZmluZSBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04gICAgIDB4MDQKCiNkZWZpbmUgX01NX0ZST1VORF9SQUlTRV9FWEMgICAgICAgICAweDAwCiNkZWZpbmUgX01NX0ZST1VORF9OT19FWEMgICAgICAgICAgICAweDA4CgojZGVmaW5lIF9NTV9GUk9VTkRfTklOVCAgICAgIChfTU1fRlJPVU5EX1JBSVNFX0VYQyB8IF9NTV9GUk9VTkRfVE9fTkVBUkVTVF9JTlQpCiNkZWZpbmUgX01NX0ZST1VORF9GTE9PUiAgICAgKF9NTV9GUk9VTkRfUkFJU0VfRVhDIHwgX01NX0ZST1VORF9UT19ORUdfSU5GKQojZGVmaW5lIF9NTV9GUk9VTkRfQ0VJTCAgICAgIChfTU1fRlJPVU5EX1JBSVNFX0VYQyB8IF9NTV9GUk9VTkRfVE9fUE9TX0lORikKI2RlZmluZSBfTU1fRlJPVU5EX1RSVU5DICAgICAoX01NX0ZST1VORF9SQUlTRV9FWEMgfCBfTU1fRlJPVU5EX1RPX1pFUk8pCiNkZWZpbmUgX01NX0ZST1VORF9SSU5UICAgICAgKF9NTV9GUk9VTkRfUkFJU0VfRVhDIHwgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKQojZGVmaW5lIF9NTV9GUk9VTkRfTkVBUkJZSU5UIChfTU1fRlJPVU5EX05PX0VYQyB8IF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTikKCi8vLyBSb3VuZHMgdXAgZWFjaCBlbGVtZW50IG9mIHRoZSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSB0byBhbgovLy8gICAgaW50ZWdlciBhbmQgcmV0dXJucyB0aGUgcm91bmRlZCB2YWx1ZXMgaW4gYSAxMjgtYml0IHZlY3RvciBvZgovLy8gICAgWzQgeCBmbG9hdF0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFxjb2RlCi8vLyBfX20xMjggX21tX2NlaWxfcHMoX19tMTI4IFgpOwovLy8gXGVuZGNvZGUKLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZST1VORFBTIC8gUk9VTkRQUyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBYCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIHZhbHVlcyB0byBiZSByb3VuZGVkIHVwLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSByb3VuZGVkIHZhbHVlcy4KI2RlZmluZSBfbW1fY2VpbF9wcyhYKSAgICAgICBfbW1fcm91bmRfcHMoKFgpLCBfTU1fRlJPVU5EX0NFSUwpCgovLy8gUm91bmRzIHVwIGVhY2ggZWxlbWVudCBvZiB0aGUgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIHRvIGFuCi8vLyAgICBpbnRlZ2VyIGFuZCByZXR1cm5zIHRoZSByb3VuZGVkIHZhbHVlcyBpbiBhIDEyOC1iaXQgdmVjdG9yIG9mCi8vLyAgICBbMiB4IGRvdWJsZV0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFxjb2RlCi8vLyBfX20xMjhkIF9tbV9jZWlsX3BkKF9fbTEyOGQgWCk7Ci8vLyBcZW5kY29kZQovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlJPVU5EUEQgLyBST1VORFBEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIFgKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIHZhbHVlcyB0byBiZSByb3VuZGVkIHVwLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgcm91bmRlZCB2YWx1ZXMuCiNkZWZpbmUgX21tX2NlaWxfcGQoWCkgICAgICAgX21tX3JvdW5kX3BkKChYKSwgX01NX0ZST1VORF9DRUlMKQoKLy8vIENvcGllcyB0aHJlZSB1cHBlciBlbGVtZW50cyBvZiB0aGUgZmlyc3QgMTI4LWJpdCB2ZWN0b3Igb3BlcmFuZCB0bwovLy8gICAgdGhlIGNvcnJlc3BvbmRpbmcgdGhyZWUgdXBwZXIgZWxlbWVudHMgb2YgdGhlIDEyOC1iaXQgcmVzdWx0IHZlY3RvciBvZgovLy8gICAgWzQgeCBmbG9hdF0uIFJvdW5kcyB1cCB0aGUgbG93ZXN0IGVsZW1lbnQgb2YgdGhlIHNlY29uZCAxMjgtYml0IHZlY3RvcgovLy8gICAgb3BlcmFuZCB0byBhbiBpbnRlZ2VyIGFuZCBjb3BpZXMgaXQgdG8gdGhlIGxvd2VzdCBlbGVtZW50IG9mIHRoZSAxMjgtYml0Ci8vLyAgICByZXN1bHQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBcY29kZQovLy8gX19tMTI4IF9tbV9jZWlsX3NzKF9fbTEyOCBYLCBfX20xMjggWSk7Ci8vLyBcZW5kY29kZQovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlJPVU5EU1MgLyBST1VORFNTIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIFgKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSB2YWx1ZXMgc3RvcmVkIGluIGJpdHMgWzEyNzozMl0gYXJlCi8vLyAgICBjb3BpZWQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYml0cyBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIFkKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSB2YWx1ZSBzdG9yZWQgaW4gYml0cyBbMzE6MF0gaXMKLy8vICAgIHJvdW5kZWQgdXAgdG8gdGhlIG5lYXJlc3QgaW50ZWdlciBhbmQgY29waWVkIHRvIHRoZSBjb3JyZXNwb25kaW5nIGJpdHMKLy8vICAgIG9mIHRoZSByZXN1bHQuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvcGllZCBhbmQgcm91bmRlZAovLy8gICAgdmFsdWVzLgojZGVmaW5lIF9tbV9jZWlsX3NzKFgsIFkpICAgIF9tbV9yb3VuZF9zcygoWCksIChZKSwgX01NX0ZST1VORF9DRUlMKQoKLy8vIENvcGllcyB0aGUgdXBwZXIgZWxlbWVudCBvZiB0aGUgZmlyc3QgMTI4LWJpdCB2ZWN0b3Igb3BlcmFuZCB0byB0aGUKLy8vICAgIGNvcnJlc3BvbmRpbmcgdXBwZXIgZWxlbWVudCBvZiB0aGUgMTI4LWJpdCByZXN1bHQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4KLy8vICAgIFJvdW5kcyB1cCB0aGUgbG93ZXIgZWxlbWVudCBvZiB0aGUgc2Vjb25kIDEyOC1iaXQgdmVjdG9yIG9wZXJhbmQgdG8gYW4KLy8vICAgIGludGVnZXIgYW5kIGNvcGllcyBpdCB0byB0aGUgbG93ZXIgZWxlbWVudCBvZiB0aGUgMTI4LWJpdCByZXN1bHQgdmVjdG9yCi8vLyAgICBvZiBbMiB4IGRvdWJsZV0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFxjb2RlCi8vLyBfX20xMjhkIF9tbV9jZWlsX3NkKF9fbTEyOGQgWCwgX19tMTI4ZCBZKTsKLy8vIFxlbmRjb2RlCi8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUk9VTkRTRCAvIFJPVU5EU0QgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gWAovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSB2YWx1ZSBzdG9yZWQgaW4gYml0cyBbMTI3OjY0XSBpcwovLy8gICAgY29waWVkIHRvIHRoZSBjb3JyZXNwb25kaW5nIGJpdHMgb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBZCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIHZhbHVlIHN0b3JlZCBpbiBiaXRzIFs2MzowXSBpcwovLy8gICAgcm91bmRlZCB1cCB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyIGFuZCBjb3BpZWQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYml0cwovLy8gICAgb2YgdGhlIHJlc3VsdC4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGNvcGllZCBhbmQgcm91bmRlZAovLy8gICAgdmFsdWVzLgojZGVmaW5lIF9tbV9jZWlsX3NkKFgsIFkpICAgIF9tbV9yb3VuZF9zZCgoWCksIChZKSwgX01NX0ZST1VORF9DRUlMKQoKLy8vIFJvdW5kcyBkb3duIGVhY2ggZWxlbWVudCBvZiB0aGUgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gdG8gYW4KLy8vICAgIGFuIGludGVnZXIgYW5kIHJldHVybnMgdGhlIHJvdW5kZWQgdmFsdWVzIGluIGEgMTI4LWJpdCB2ZWN0b3Igb2YKLy8vICAgIFs0IHggZmxvYXRdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBcY29kZQovLy8gX19tMTI4IF9tbV9mbG9vcl9wcyhfX20xMjggWCk7Ci8vLyBcZW5kY29kZQovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlJPVU5EUFMgLyBST1VORFBTIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIFgKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gdmFsdWVzIHRvIGJlIHJvdW5kZWQgZG93bi4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgcm91bmRlZCB2YWx1ZXMuCiNkZWZpbmUgX21tX2Zsb29yX3BzKFgpICAgICAgX21tX3JvdW5kX3BzKChYKSwgX01NX0ZST1VORF9GTE9PUikKCi8vLyBSb3VuZHMgZG93biBlYWNoIGVsZW1lbnQgb2YgdGhlIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSB0byBhbgovLy8gICAgaW50ZWdlciBhbmQgcmV0dXJucyB0aGUgcm91bmRlZCB2YWx1ZXMgaW4gYSAxMjgtYml0IHZlY3RvciBvZgovLy8gICAgWzIgeCBkb3VibGVdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBcY29kZQovLy8gX19tMTI4ZCBfbW1fZmxvb3JfcGQoX19tMTI4ZCBYKTsKLy8vIFxlbmRjb2RlCi8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUk9VTkRQRCAvIFJPVU5EUEQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gWAovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSByb3VuZGVkIHZhbHVlcy4KI2RlZmluZSBfbW1fZmxvb3JfcGQoWCkgICAgICBfbW1fcm91bmRfcGQoKFgpLCBfTU1fRlJPVU5EX0ZMT09SKQoKLy8vIENvcGllcyB0aHJlZSB1cHBlciBlbGVtZW50cyBvZiB0aGUgZmlyc3QgMTI4LWJpdCB2ZWN0b3Igb3BlcmFuZCB0bwovLy8gICAgdGhlIGNvcnJlc3BvbmRpbmcgdGhyZWUgdXBwZXIgZWxlbWVudHMgb2YgdGhlIDEyOC1iaXQgcmVzdWx0IHZlY3RvciBvZgovLy8gICAgWzQgeCBmbG9hdF0uIFJvdW5kcyBkb3duIHRoZSBsb3dlc3QgZWxlbWVudCBvZiB0aGUgc2Vjb25kIDEyOC1iaXQgdmVjdG9yCi8vLyAgICBvcGVyYW5kIHRvIGFuIGludGVnZXIgYW5kIGNvcGllcyBpdCB0byB0aGUgbG93ZXN0IGVsZW1lbnQgb2YgdGhlIDEyOC1iaXQKLy8vICAgIHJlc3VsdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFxjb2RlCi8vLyBfX20xMjggX21tX2Zsb29yX3NzKF9fbTEyOCBYLCBfX20xMjggWSk7Ci8vLyBcZW5kY29kZQovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlJPVU5EU1MgLyBST1VORFNTIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIFgKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSB2YWx1ZXMgc3RvcmVkIGluIGJpdHMgWzEyNzozMl0gYXJlCi8vLyAgICBjb3BpZWQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYml0cyBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIFkKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSB2YWx1ZSBzdG9yZWQgaW4gYml0cyBbMzE6MF0gaXMKLy8vICAgIHJvdW5kZWQgZG93biB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyIGFuZCBjb3BpZWQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYml0cwovLy8gICAgb2YgdGhlIHJlc3VsdC4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29waWVkIGFuZCByb3VuZGVkCi8vLyAgICB2YWx1ZXMuCiNkZWZpbmUgX21tX2Zsb29yX3NzKFgsIFkpICAgX21tX3JvdW5kX3NzKChYKSwgKFkpLCBfTU1fRlJPVU5EX0ZMT09SKQoKLy8vIENvcGllcyB0aGUgdXBwZXIgZWxlbWVudCBvZiB0aGUgZmlyc3QgMTI4LWJpdCB2ZWN0b3Igb3BlcmFuZCB0byB0aGUKLy8vICAgIGNvcnJlc3BvbmRpbmcgdXBwZXIgZWxlbWVudCBvZiB0aGUgMTI4LWJpdCByZXN1bHQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4KLy8vICAgIFJvdW5kcyBkb3duIHRoZSBsb3dlciBlbGVtZW50IG9mIHRoZSBzZWNvbmQgMTI4LWJpdCB2ZWN0b3Igb3BlcmFuZCB0byBhbgovLy8gICAgaW50ZWdlciBhbmQgY29waWVzIGl0IHRvIHRoZSBsb3dlciBlbGVtZW50IG9mIHRoZSAxMjgtYml0IHJlc3VsdCB2ZWN0b3IKLy8vICAgIG9mIFsyIHggZG91YmxlXS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gXGNvZGUKLy8vIF9fbTEyOGQgX21tX2Zsb29yX3NkKF9fbTEyOGQgWCwgX19tMTI4ZCBZKTsKLy8vIFxlbmRjb2RlCi8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUk9VTkRTRCAvIFJPVU5EU0QgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gWAovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSB2YWx1ZSBzdG9yZWQgaW4gYml0cyBbMTI3OjY0XSBpcwovLy8gICAgY29waWVkIHRvIHRoZSBjb3JyZXNwb25kaW5nIGJpdHMgb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBZCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIHZhbHVlIHN0b3JlZCBpbiBiaXRzIFs2MzowXSBpcwovLy8gICAgcm91bmRlZCBkb3duIHRvIHRoZSBuZWFyZXN0IGludGVnZXIgYW5kIGNvcGllZCB0byB0aGUgY29ycmVzcG9uZGluZyBiaXRzCi8vLyAgICBvZiB0aGUgcmVzdWx0LgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgY29waWVkIGFuZCByb3VuZGVkCi8vLyAgICB2YWx1ZXMuCiNkZWZpbmUgX21tX2Zsb29yX3NkKFgsIFkpICAgX21tX3JvdW5kX3NkKChYKSwgKFkpLCBfTU1fRlJPVU5EX0ZMT09SKQoKLy8vIFJvdW5kcyBlYWNoIGVsZW1lbnQgb2YgdGhlIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIHRvIGFuCi8vLyAgICBpbnRlZ2VyIHZhbHVlIGFjY29yZGluZyB0byB0aGUgcm91bmRpbmcgY29udHJvbCBzcGVjaWZpZWQgYnkgdGhlIHNlY29uZAovLy8gICAgYXJndW1lbnQgYW5kIHJldHVybnMgdGhlIHJvdW5kZWQgdmFsdWVzIGluIGEgMTI4LWJpdCB2ZWN0b3Igb2YKLy8vICAgIFs0IHggZmxvYXRdLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBcY29kZQovLy8gX19tMTI4IF9tbV9yb3VuZF9wcyhfX20xMjggWCwgY29uc3QgaW50IE0pOwovLy8gXGVuZGNvZGUKLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZST1VORFBTIC8gUk9VTkRQUyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBYCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLgovLy8gXHBhcmFtIE0KLy8vICAgIEFuIGludGVnZXIgdmFsdWUgdGhhdCBzcGVjaWZpZXMgdGhlIHJvdW5kaW5nIG9wZXJhdGlvbi4gXG4KLy8vICAgIEJpdHMgWzc6NF0gYXJlIHJlc2VydmVkLiBcbgovLy8gICAgQml0IFszXSBpcyBhIHByZWNpc2lvbiBleGNlcHRpb24gdmFsdWU6IFxuCi8vLyAgICAgIDA6IEEgbm9ybWFsIFBFIGV4Y2VwdGlvbiBpcyB1c2VkIFxuCi8vLyAgICAgIDE6IFRoZSBQRSBmaWVsZCBpcyBub3QgdXBkYXRlZCBcbgovLy8gICAgQml0IFsyXSBpcyB0aGUgcm91bmRpbmcgY29udHJvbCBzb3VyY2U6IFxuCi8vLyAgICAgIDA6IFVzZSBiaXRzIFsxOjBdIG9mIFxhIE0gXG4KLy8vICAgICAgMTogVXNlIHRoZSBjdXJyZW50IE1YQ1NSIHNldHRpbmcgXG4KLy8vICAgIEJpdHMgWzE6MF0gY29udGFpbiB0aGUgcm91bmRpbmcgY29udHJvbCBkZWZpbml0aW9uOiBcbgovLy8gICAgICAwMDogTmVhcmVzdCBcbgovLy8gICAgICAwMTogRG93bndhcmQgKHRvd2FyZCBuZWdhdGl2ZSBpbmZpbml0eSkgXG4KLy8vICAgICAgMTA6IFVwd2FyZCAodG93YXJkIHBvc2l0aXZlIGluZmluaXR5KSBcbgovLy8gICAgICAxMTogVHJ1bmNhdGVkCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHJvdW5kZWQgdmFsdWVzLgojZGVmaW5lIF9tbV9yb3VuZF9wcyhYLCBNKSBcCiAgKChfX20xMjgpX19idWlsdGluX2lhMzJfcm91bmRwcygoX192NHNmKShfX20xMjgpKFgpLCAoTSkpKQoKLy8vIENvcGllcyB0aHJlZSB1cHBlciBlbGVtZW50cyBvZiB0aGUgZmlyc3QgMTI4LWJpdCB2ZWN0b3Igb3BlcmFuZCB0bwovLy8gICAgdGhlIGNvcnJlc3BvbmRpbmcgdGhyZWUgdXBwZXIgZWxlbWVudHMgb2YgdGhlIDEyOC1iaXQgcmVzdWx0IHZlY3RvciBvZgovLy8gICAgWzQgeCBmbG9hdF0uIFJvdW5kcyB0aGUgbG93ZXN0IGVsZW1lbnQgb2YgdGhlIHNlY29uZCAxMjgtYml0IHZlY3RvcgovLy8gICAgb3BlcmFuZCB0byBhbiBpbnRlZ2VyIHZhbHVlIGFjY29yZGluZyB0byB0aGUgcm91bmRpbmcgY29udHJvbCBzcGVjaWZpZWQKLy8vICAgIGJ5IHRoZSB0aGlyZCBhcmd1bWVudCBhbmQgY29waWVzIGl0IHRvIHRoZSBsb3dlc3QgZWxlbWVudCBvZiB0aGUgMTI4LWJpdAovLy8gICAgcmVzdWx0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gXGNvZGUKLy8vIF9fbTEyOCBfbW1fcm91bmRfc3MoX19tMTI4IFgsIF9fbTEyOCBZLCBjb25zdCBpbnQgTSk7Ci8vLyBcZW5kY29kZQovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlJPVU5EU1MgLyBST1VORFNTIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIFgKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSB2YWx1ZXMgc3RvcmVkIGluIGJpdHMgWzEyNzozMl0gYXJlCi8vLyAgICBjb3BpZWQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYml0cyBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIFkKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSB2YWx1ZSBzdG9yZWQgaW4gYml0cyBbMzE6MF0gaXMKLy8vICAgIHJvdW5kZWQgdG8gdGhlIG5lYXJlc3QgaW50ZWdlciB1c2luZyB0aGUgc3BlY2lmaWVkIHJvdW5kaW5nIGNvbnRyb2wgYW5kCi8vLyAgICBjb3BpZWQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYml0cyBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIE0KLy8vICAgIEFuIGludGVnZXIgdmFsdWUgdGhhdCBzcGVjaWZpZXMgdGhlIHJvdW5kaW5nIG9wZXJhdGlvbi4gXG4KLy8vICAgIEJpdHMgWzc6NF0gYXJlIHJlc2VydmVkLiBcbgovLy8gICAgQml0IFszXSBpcyBhIHByZWNpc2lvbiBleGNlcHRpb24gdmFsdWU6IFxuCi8vLyAgICAgIDA6IEEgbm9ybWFsIFBFIGV4Y2VwdGlvbiBpcyB1c2VkIFxuCi8vLyAgICAgIDE6IFRoZSBQRSBmaWVsZCBpcyBub3QgdXBkYXRlZCBcbgovLy8gICAgQml0IFsyXSBpcyB0aGUgcm91bmRpbmcgY29udHJvbCBzb3VyY2U6IFxuCi8vLyAgICAgIDA6IFVzZSBiaXRzIFsxOjBdIG9mIFxhIE0gXG4KLy8vICAgICAgMTogVXNlIHRoZSBjdXJyZW50IE1YQ1NSIHNldHRpbmcgXG4KLy8vICAgIEJpdHMgWzE6MF0gY29udGFpbiB0aGUgcm91bmRpbmcgY29udHJvbCBkZWZpbml0aW9uOiBcbgovLy8gICAgICAwMDogTmVhcmVzdCBcbgovLy8gICAgICAwMTogRG93bndhcmQgKHRvd2FyZCBuZWdhdGl2ZSBpbmZpbml0eSkgXG4KLy8vICAgICAgMTA6IFVwd2FyZCAodG93YXJkIHBvc2l0aXZlIGluZmluaXR5KSBcbgovLy8gICAgICAxMTogVHJ1bmNhdGVkCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvcGllZCBhbmQgcm91bmRlZAovLy8gICAgdmFsdWVzLgojZGVmaW5lIF9tbV9yb3VuZF9zcyhYLCBZLCBNKSBcCiAgKChfX20xMjgpX19idWlsdGluX2lhMzJfcm91bmRzcygoX192NHNmKShfX20xMjgpKFgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKFkpLCAoTSkpKQoKLy8vIFJvdW5kcyBlYWNoIGVsZW1lbnQgb2YgdGhlIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSB0byBhbgovLy8gICAgaW50ZWdlciB2YWx1ZSBhY2NvcmRpbmcgdG8gdGhlIHJvdW5kaW5nIGNvbnRyb2wgc3BlY2lmaWVkIGJ5IHRoZSBzZWNvbmQKLy8vICAgIGFyZ3VtZW50IGFuZCByZXR1cm5zIHRoZSByb3VuZGVkIHZhbHVlcyBpbiBhIDEyOC1iaXQgdmVjdG9yIG9mCi8vLyAgICBbMiB4IGRvdWJsZV0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFxjb2RlCi8vLyBfX20xMjhkIF9tbV9yb3VuZF9wZChfX20xMjhkIFgsIGNvbnN0IGludCBNKTsKLy8vIFxlbmRjb2RlCi8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUk9VTkRQRCAvIFJPVU5EUEQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gWAovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uCi8vLyBccGFyYW0gTQovLy8gICAgQW4gaW50ZWdlciB2YWx1ZSB0aGF0IHNwZWNpZmllcyB0aGUgcm91bmRpbmcgb3BlcmF0aW9uLiBcbgovLy8gICAgQml0cyBbNzo0XSBhcmUgcmVzZXJ2ZWQuIFxuCi8vLyAgICBCaXQgWzNdIGlzIGEgcHJlY2lzaW9uIGV4Y2VwdGlvbiB2YWx1ZTogXG4KLy8vICAgICAgMDogQSBub3JtYWwgUEUgZXhjZXB0aW9uIGlzIHVzZWQgXG4KLy8vICAgICAgMTogVGhlIFBFIGZpZWxkIGlzIG5vdCB1cGRhdGVkIFxuCi8vLyAgICBCaXQgWzJdIGlzIHRoZSByb3VuZGluZyBjb250cm9sIHNvdXJjZTogXG4KLy8vICAgICAgMDogVXNlIGJpdHMgWzE6MF0gb2YgXGEgTSBcbgovLy8gICAgICAxOiBVc2UgdGhlIGN1cnJlbnQgTVhDU1Igc2V0dGluZyBcbgovLy8gICAgQml0cyBbMTowXSBjb250YWluIHRoZSByb3VuZGluZyBjb250cm9sIGRlZmluaXRpb246IFxuCi8vLyAgICAgIDAwOiBOZWFyZXN0IFxuCi8vLyAgICAgIDAxOiBEb3dud2FyZCAodG93YXJkIG5lZ2F0aXZlIGluZmluaXR5KSBcbgovLy8gICAgICAxMDogVXB3YXJkICh0b3dhcmQgcG9zaXRpdmUgaW5maW5pdHkpIFxuCi8vLyAgICAgIDExOiBUcnVuY2F0ZWQKLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIHJvdW5kZWQgdmFsdWVzLgojZGVmaW5lIF9tbV9yb3VuZF9wZChYLCBNKSBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3JvdW5kcGQoKF9fdjJkZikoX19tMTI4ZCkoWCksIChNKSkpCgovLy8gQ29waWVzIHRoZSB1cHBlciBlbGVtZW50IG9mIHRoZSBmaXJzdCAxMjgtYml0IHZlY3RvciBvcGVyYW5kIHRvIHRoZQovLy8gICAgY29ycmVzcG9uZGluZyB1cHBlciBlbGVtZW50IG9mIHRoZSAxMjgtYml0IHJlc3VsdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLgovLy8gICAgUm91bmRzIHRoZSBsb3dlciBlbGVtZW50IG9mIHRoZSBzZWNvbmQgMTI4LWJpdCB2ZWN0b3Igb3BlcmFuZCB0byBhbgovLy8gICAgaW50ZWdlciB2YWx1ZSBhY2NvcmRpbmcgdG8gdGhlIHJvdW5kaW5nIGNvbnRyb2wgc3BlY2lmaWVkIGJ5IHRoZSB0aGlyZAovLy8gICAgYXJndW1lbnQgYW5kIGNvcGllcyBpdCB0byB0aGUgbG93ZXIgZWxlbWVudCBvZiB0aGUgMTI4LWJpdCByZXN1bHQgdmVjdG9yCi8vLyAgICBvZiBbMiB4IGRvdWJsZV0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFxjb2RlCi8vLyBfX20xMjhkIF9tbV9yb3VuZF9zZChfX20xMjhkIFgsIF9fbTEyOGQgWSwgY29uc3QgaW50IE0pOwovLy8gXGVuZGNvZGUKLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZST1VORFNEIC8gUk9VTkRTRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBYCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIHZhbHVlIHN0b3JlZCBpbiBiaXRzIFsxMjc6NjRdIGlzCi8vLyAgICBjb3BpZWQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYml0cyBvZiB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIFkKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgdmFsdWUgc3RvcmVkIGluIGJpdHMgWzYzOjBdIGlzCi8vLyAgICByb3VuZGVkIHRvIHRoZSBuZWFyZXN0IGludGVnZXIgdXNpbmcgdGhlIHNwZWNpZmllZCByb3VuZGluZyBjb250cm9sIGFuZAovLy8gICAgY29waWVkIHRvIHRoZSBjb3JyZXNwb25kaW5nIGJpdHMgb2YgdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBNCi8vLyAgICBBbiBpbnRlZ2VyIHZhbHVlIHRoYXQgc3BlY2lmaWVzIHRoZSByb3VuZGluZyBvcGVyYXRpb24uIFxuCi8vLyAgICBCaXRzIFs3OjRdIGFyZSByZXNlcnZlZC4gXG4KLy8vICAgIEJpdCBbM10gaXMgYSBwcmVjaXNpb24gZXhjZXB0aW9uIHZhbHVlOiBcbgovLy8gICAgICAwOiBBIG5vcm1hbCBQRSBleGNlcHRpb24gaXMgdXNlZCBcbgovLy8gICAgICAxOiBUaGUgUEUgZmllbGQgaXMgbm90IHVwZGF0ZWQgXG4KLy8vICAgIEJpdCBbMl0gaXMgdGhlIHJvdW5kaW5nIGNvbnRyb2wgc291cmNlOiBcbgovLy8gICAgICAwOiBVc2UgYml0cyBbMTowXSBvZiBcYSBNIFxuCi8vLyAgICAgIDE6IFVzZSB0aGUgY3VycmVudCBNWENTUiBzZXR0aW5nIFxuCi8vLyAgICBCaXRzIFsxOjBdIGNvbnRhaW4gdGhlIHJvdW5kaW5nIGNvbnRyb2wgZGVmaW5pdGlvbjogXG4KLy8vICAgICAgMDA6IE5lYXJlc3QgXG4KLy8vICAgICAgMDE6IERvd253YXJkICh0b3dhcmQgbmVnYXRpdmUgaW5maW5pdHkpIFxuCi8vLyAgICAgIDEwOiBVcHdhcmQgKHRvd2FyZCBwb3NpdGl2ZSBpbmZpbml0eSkgXG4KLy8vICAgICAgMTE6IFRydW5jYXRlZAovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgY29waWVkIGFuZCByb3VuZGVkCi8vLyAgICB2YWx1ZXMuCiNkZWZpbmUgX21tX3JvdW5kX3NkKFgsIFksIE0pIFwKICAoKF9fbTEyOGQpX19idWlsdGluX2lhMzJfcm91bmRzZCgoX192MmRmKShfX20xMjhkKShYKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKFkpLCAoTSkpKQoKLyogU1NFNCBQYWNrZWQgQmxlbmRpbmcgSW50cmluc2ljcy4gICovCi8vLyBSZXR1cm5zIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIHdoZXJlIHRoZSB2YWx1ZXMgYXJlCi8vLyAgICBzZWxlY3RlZCBmcm9tIGVpdGhlciB0aGUgZmlyc3Qgb3Igc2Vjb25kIG9wZXJhbmQgYXMgc3BlY2lmaWVkIGJ5IHRoZQovLy8gICAgdGhpcmQgb3BlcmFuZCwgdGhlIGNvbnRyb2wgbWFzay4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gXGNvZGUKLy8vIF9fbTEyOGQgX21tX2JsZW5kX3BkKF9fbTEyOGQgVjEsIF9fbTEyOGQgVjIsIGNvbnN0IGludCBNKTsKLy8vIFxlbmRjb2RlCi8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQkxFTkRQRCAvIEJMRU5EUEQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gVjEKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLgovLy8gXHBhcmFtIFYyCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4KLy8vIFxwYXJhbSBNCi8vLyAgICBBbiBpbW1lZGlhdGUgaW50ZWdlciBvcGVyYW5kLCB3aXRoIG1hc2sgYml0cyBbMTowXSBzcGVjaWZ5aW5nIGhvdyB0aGUKLy8vICAgIHZhbHVlcyBhcmUgdG8gYmUgY29waWVkLiBUaGUgcG9zaXRpb24gb2YgdGhlIG1hc2sgYml0IGNvcnJlc3BvbmRzIHRvIHRoZQovLy8gICAgaW5kZXggb2YgYSBjb3BpZWQgdmFsdWUuIFdoZW4gYSBtYXNrIGJpdCBpcyAwLCB0aGUgY29ycmVzcG9uZGluZyA2NC1iaXQKLy8vICAgIGVsZW1lbnQgaW4gb3BlcmFuZCBcYSBWMSBpcyBjb3BpZWQgdG8gdGhlIHNhbWUgcG9zaXRpb24gaW4gdGhlIHJlc3VsdC4KLy8vICAgIFdoZW4gYSBtYXNrIGJpdCBpcyAxLCB0aGUgY29ycmVzcG9uZGluZyA2NC1iaXQgZWxlbWVudCBpbiBvcGVyYW5kIFxhIFYyCi8vLyAgICBpcyBjb3BpZWQgdG8gdGhlIHNhbWUgcG9zaXRpb24gaW4gdGhlIHJlc3VsdC4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGNvcGllZCB2YWx1ZXMuCiNkZWZpbmUgX21tX2JsZW5kX3BkKFYxLCBWMiwgTSkgXAogICgoX19tMTI4ZCkgX19idWlsdGluX2lhMzJfYmxlbmRwZCAoKF9fdjJkZikoX19tMTI4ZCkoVjEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShWMiksIChpbnQpKE0pKSkKCi8vLyBSZXR1cm5zIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gd2hlcmUgdGhlIHZhbHVlcyBhcmUgc2VsZWN0ZWQKLy8vICAgIGZyb20gZWl0aGVyIHRoZSBmaXJzdCBvciBzZWNvbmQgb3BlcmFuZCBhcyBzcGVjaWZpZWQgYnkgdGhlIHRoaXJkCi8vLyAgICBvcGVyYW5kLCB0aGUgY29udHJvbCBtYXNrLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBcY29kZQovLy8gX19tMTI4IF9tbV9ibGVuZF9wcyhfX20xMjggVjEsIF9fbTEyOCBWMiwgY29uc3QgaW50IE0pOwovLy8gXGVuZGNvZGUKLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZCTEVORFBTIC8gQkxFTkRQUyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBWMQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4KLy8vIFxwYXJhbSBWMgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4KLy8vIFxwYXJhbSBNCi8vLyAgICBBbiBpbW1lZGlhdGUgaW50ZWdlciBvcGVyYW5kLCB3aXRoIG1hc2sgYml0cyBbMzowXSBzcGVjaWZ5aW5nIGhvdyB0aGUKLy8vICAgIHZhbHVlcyBhcmUgdG8gYmUgY29waWVkLiBUaGUgcG9zaXRpb24gb2YgdGhlIG1hc2sgYml0IGNvcnJlc3BvbmRzIHRvIHRoZQovLy8gICAgaW5kZXggb2YgYSBjb3BpZWQgdmFsdWUuIFdoZW4gYSBtYXNrIGJpdCBpcyAwLCB0aGUgY29ycmVzcG9uZGluZyAzMi1iaXQKLy8vICAgIGVsZW1lbnQgaW4gb3BlcmFuZCBcYSBWMSBpcyBjb3BpZWQgdG8gdGhlIHNhbWUgcG9zaXRpb24gaW4gdGhlIHJlc3VsdC4KLy8vICAgIFdoZW4gYSBtYXNrIGJpdCBpcyAxLCB0aGUgY29ycmVzcG9uZGluZyAzMi1iaXQgZWxlbWVudCBpbiBvcGVyYW5kIFxhIFYyCi8vLyAgICBpcyBjb3BpZWQgdG8gdGhlIHNhbWUgcG9zaXRpb24gaW4gdGhlIHJlc3VsdC4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29waWVkIHZhbHVlcy4KI2RlZmluZSBfbW1fYmxlbmRfcHMoVjEsIFYyLCBNKSBcCiAgKChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX2JsZW5kcHMgKChfX3Y0c2YpKF9fbTEyOCkoVjEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoVjIpLCAoaW50KShNKSkpCgovLy8gUmV0dXJucyBhIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSB3aGVyZSB0aGUgdmFsdWVzIGFyZQovLy8gICAgc2VsZWN0ZWQgZnJvbSBlaXRoZXIgdGhlIGZpcnN0IG9yIHNlY29uZCBvcGVyYW5kIGFzIHNwZWNpZmllZCBieSB0aGUKLy8vICAgIHRoaXJkIG9wZXJhbmQsIHRoZSBjb250cm9sIG1hc2suCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkJMRU5EVlBEIC8gQkxFTkRWUEQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19WMQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uCi8vLyBccGFyYW0gX19WMgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uCi8vLyBccGFyYW0gX19NCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9wZXJhbmQsIHdpdGggbWFzayBiaXRzIDEyNyBhbmQgNjMgc3BlY2lmeWluZyBob3cgdGhlCi8vLyAgICB2YWx1ZXMgYXJlIHRvIGJlIGNvcGllZC4gVGhlIHBvc2l0aW9uIG9mIHRoZSBtYXNrIGJpdCBjb3JyZXNwb25kcyB0byB0aGUKLy8vICAgIG1vc3Qgc2lnbmlmaWNhbnQgYml0IG9mIGEgY29waWVkIHZhbHVlLiBXaGVuIGEgbWFzayBiaXQgaXMgMCwgdGhlCi8vLyAgICBjb3JyZXNwb25kaW5nIDY0LWJpdCBlbGVtZW50IGluIG9wZXJhbmQgXGEgX19WMSBpcyBjb3BpZWQgdG8gdGhlIHNhbWUKLy8vICAgIHBvc2l0aW9uIGluIHRoZSByZXN1bHQuIFdoZW4gYSBtYXNrIGJpdCBpcyAxLCB0aGUgY29ycmVzcG9uZGluZyA2NC1iaXQKLy8vICAgIGVsZW1lbnQgaW4gb3BlcmFuZCBcYSBfX1YyIGlzIGNvcGllZCB0byB0aGUgc2FtZSBwb3NpdGlvbiBpbiB0aGUgcmVzdWx0LgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgY29waWVkIHZhbHVlcy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2JsZW5kdl9wZCAoX19tMTI4ZCBfX1YxLCBfX20xMjhkIF9fVjIsIF9fbTEyOGQgX19NKQp7CiAgcmV0dXJuIChfX20xMjhkKSBfX2J1aWx0aW5faWEzMl9ibGVuZHZwZCAoKF9fdjJkZilfX1YxLCAoX192MmRmKV9fVjIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfX00pOwp9CgovLy8gUmV0dXJucyBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIHdoZXJlIHRoZSB2YWx1ZXMgYXJlCi8vLyAgICBzZWxlY3RlZCBmcm9tIGVpdGhlciB0aGUgZmlyc3Qgb3Igc2Vjb25kIG9wZXJhbmQgYXMgc3BlY2lmaWVkIGJ5IHRoZQovLy8gICAgdGhpcmQgb3BlcmFuZCwgdGhlIGNvbnRyb2wgbWFzay4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQkxFTkRWUFMgLyBCTEVORFZQUyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX1YxCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLgovLy8gXHBhcmFtIF9fVjIKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uCi8vLyBccGFyYW0gX19NCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9wZXJhbmQsIHdpdGggbWFzayBiaXRzIDEyNywgOTUsIDYzLCBhbmQgMzEgc3BlY2lmeWluZwovLy8gICAgaG93IHRoZSB2YWx1ZXMgYXJlIHRvIGJlIGNvcGllZC4gVGhlIHBvc2l0aW9uIG9mIHRoZSBtYXNrIGJpdCBjb3JyZXNwb25kcwovLy8gICAgdG8gdGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0IG9mIGEgY29waWVkIHZhbHVlLiBXaGVuIGEgbWFzayBiaXQgaXMgMCwgdGhlCi8vLyAgICBjb3JyZXNwb25kaW5nIDMyLWJpdCBlbGVtZW50IGluIG9wZXJhbmQgXGEgX19WMSBpcyBjb3BpZWQgdG8gdGhlIHNhbWUKLy8vICAgIHBvc2l0aW9uIGluIHRoZSByZXN1bHQuIFdoZW4gYSBtYXNrIGJpdCBpcyAxLCB0aGUgY29ycmVzcG9uZGluZyAzMi1iaXQKLy8vICAgIGVsZW1lbnQgaW4gb3BlcmFuZCBcYSBfX1YyIGlzIGNvcGllZCB0byB0aGUgc2FtZSBwb3NpdGlvbiBpbiB0aGUgcmVzdWx0LgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb3BpZWQgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9ibGVuZHZfcHMgKF9fbTEyOCBfX1YxLCBfX20xMjggX19WMiwgX19tMTI4IF9fTSkKewogIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9ibGVuZHZwcyAoKF9fdjRzZilfX1YxLCAoX192NHNmKV9fVjIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9fTSk7Cn0KCi8vLyBSZXR1cm5zIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThdIHdoZXJlIHRoZSB2YWx1ZXMgYXJlIHNlbGVjdGVkCi8vLyAgICBmcm9tIGVpdGhlciBvZiB0aGUgZmlyc3Qgb3Igc2Vjb25kIG9wZXJhbmQgYXMgc3BlY2lmaWVkIGJ5IHRoZSB0aGlyZAovLy8gICAgb3BlcmFuZCwgdGhlIGNvbnRyb2wgbWFzay4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEJMRU5EVkIgLyBQQkxFTkRWQiA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX1YxCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XS4KLy8vIFxwYXJhbSBfX1YyCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XS4KLy8vIFxwYXJhbSBfX00KLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb3BlcmFuZCwgd2l0aCBtYXNrIGJpdHMgMTI3LCAxMTksIDExMS4uLjcgc3BlY2lmeWluZwovLy8gICAgaG93IHRoZSB2YWx1ZXMgYXJlIHRvIGJlIGNvcGllZC4gVGhlIHBvc2l0aW9uIG9mIHRoZSBtYXNrIGJpdCBjb3JyZXNwb25kcwovLy8gICAgdG8gdGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0IG9mIGEgY29waWVkIHZhbHVlLiBXaGVuIGEgbWFzayBiaXQgaXMgMCwgdGhlCi8vLyAgICBjb3JyZXNwb25kaW5nIDgtYml0IGVsZW1lbnQgaW4gb3BlcmFuZCBcYSBfX1YxIGlzIGNvcGllZCB0byB0aGUgc2FtZQovLy8gICAgcG9zaXRpb24gaW4gdGhlIHJlc3VsdC4gV2hlbiBhIG1hc2sgYml0IGlzIDEsIHRoZSBjb3JyZXNwb25kaW5nIDgtYml0Ci8vLyAgICBlbGVtZW50IGluIG9wZXJhbmQgXGEgX19WMiBpcyBjb3BpZWQgdG8gdGhlIHNhbWUgcG9zaXRpb24gaW4gdGhlIHJlc3VsdC4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThdIGNvbnRhaW5pbmcgdGhlIGNvcGllZCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9ibGVuZHZfZXBpOCAoX19tMTI4aSBfX1YxLCBfX20xMjhpIF9fVjIsIF9fbTEyOGkgX19NKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wYmxlbmR2YjEyOCAoKF9fdjE2cWkpX19WMSwgKF9fdjE2cWkpX19WMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZxaSlfX00pOwp9CgovLy8gUmV0dXJucyBhIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XSB3aGVyZSB0aGUgdmFsdWVzIGFyZSBzZWxlY3RlZAovLy8gICAgZnJvbSBlaXRoZXIgb2YgdGhlIGZpcnN0IG9yIHNlY29uZCBvcGVyYW5kIGFzIHNwZWNpZmllZCBieSB0aGUgdGhpcmQKLy8vICAgIG9wZXJhbmQsIHRoZSBjb250cm9sIG1hc2suCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFxjb2RlCi8vLyBfX20xMjhpIF9tbV9ibGVuZF9lcGkxNihfX20xMjhpIFYxLCBfX20xMjhpIFYyLCBjb25zdCBpbnQgTSk7Ci8vLyBcZW5kY29kZQovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBCTEVORFcgLyBQQkxFTkRXIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIFYxCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XS4KLy8vIFxwYXJhbSBWMgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGkxNl0uCi8vLyBccGFyYW0gTQovLy8gICAgQW4gaW1tZWRpYXRlIGludGVnZXIgb3BlcmFuZCwgd2l0aCBtYXNrIGJpdHMgWzc6MF0gc3BlY2lmeWluZyBob3cgdGhlCi8vLyAgICB2YWx1ZXMgYXJlIHRvIGJlIGNvcGllZC4gVGhlIHBvc2l0aW9uIG9mIHRoZSBtYXNrIGJpdCBjb3JyZXNwb25kcyB0byB0aGUKLy8vICAgIGluZGV4IG9mIGEgY29waWVkIHZhbHVlLiBXaGVuIGEgbWFzayBiaXQgaXMgMCwgdGhlIGNvcnJlc3BvbmRpbmcgMTYtYml0Ci8vLyAgICBlbGVtZW50IGluIG9wZXJhbmQgXGEgVjEgaXMgY29waWVkIHRvIHRoZSBzYW1lIHBvc2l0aW9uIGluIHRoZSByZXN1bHQuCi8vLyAgICBXaGVuIGEgbWFzayBiaXQgaXMgMSwgdGhlIGNvcnJlc3BvbmRpbmcgMTYtYml0IGVsZW1lbnQgaW4gb3BlcmFuZCBcYSBWMgovLy8gICAgaXMgY29waWVkIHRvIHRoZSBzYW1lIHBvc2l0aW9uIGluIHRoZSByZXN1bHQuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XSBjb250YWluaW5nIHRoZSBjb3BpZWQgdmFsdWVzLgojZGVmaW5lIF9tbV9ibGVuZF9lcGkxNihWMSwgVjIsIE0pIFwKICAoKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3BibGVuZHcxMjggKChfX3Y4aGkpKF9fbTEyOGkpKFYxKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSkoX19tMTI4aSkoVjIpLCAoaW50KShNKSkpCgovKiBTU0U0IER3b3JkIE11bHRpcGx5IEluc3RydWN0aW9ucy4gICovCi8vLyBNdWx0aXBsZXMgY29ycmVzcG9uZGluZyBlbGVtZW50cyBvZiB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mIFs0IHggaTMyXQovLy8gICAgYW5kIHJldHVybnMgdGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhlIGVhY2ggcHJvZHVjdCBpbiBhIDEyOC1iaXQgdmVjdG9yIG9mCi8vLyAgICBbNCB4IGkzMl0uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBNVUxMRCAvIFBNVUxMRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX1YxCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuCi8vLyBccGFyYW0gX19WMgovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yLgovLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHByb2R1Y3RzIG9mIGJvdGggb3BlcmFuZHMuCnN0YXRpYyBfX2lubGluZV9fICBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fbXVsbG9fZXBpMzIgKF9fbTEyOGkgX19WMSwgX19tMTI4aSBfX1YyKQp7CiAgcmV0dXJuIChfX20xMjhpKSAoKF9fdjRzdSlfX1YxICogKF9fdjRzdSlfX1YyKTsKfQoKLy8vIE11bHRpcGxpZXMgY29ycmVzcG9uZGluZyBldmVuLWluZGV4ZWQgZWxlbWVudHMgb2YgdHdvIDEyOC1iaXQKLy8vICAgIHZlY3RvcnMgb2YgWzQgeCBpMzJdIGFuZCByZXR1cm5zIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBpNjRdCi8vLyAgICBjb250YWluaW5nIHRoZSBwcm9kdWN0cy4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUE1VTERRIC8gUE1VTERRIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fVjEKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdLgovLy8gXHBhcmFtIF9fVjIKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0gY29udGFpbmluZyB0aGUgcHJvZHVjdHMgb2YgYm90aAovLy8gICAgb3BlcmFuZHMuCnN0YXRpYyBfX2lubGluZV9fICBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fbXVsX2VwaTMyIChfX20xMjhpIF9fVjEsIF9fbTEyOGkgX19WMikKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG11bGRxMTI4ICgoX192NHNpKV9fVjEsIChfX3Y0c2kpX19WMik7Cn0KCi8qIFNTRTQgRmxvYXRpbmcgUG9pbnQgRG90IFByb2R1Y3QgSW5zdHJ1Y3Rpb25zLiAgKi8KLy8vIENvbXB1dGVzIHRoZSBkb3QgcHJvZHVjdCBvZiB0aGUgdHdvIDEyOC1iaXQgdmVjdG9ycyBvZiBbNCB4IGZsb2F0XQovLy8gICAgYW5kIHJldHVybnMgaXQgaW4gdGhlIGVsZW1lbnRzIG9mIHRoZSAxMjgtYml0IHJlc3VsdCB2ZWN0b3Igb2YKLy8vICAgIFs0IHggZmxvYXRdLgovLy8KLy8vICAgIFRoZSBpbW1lZGlhdGUgaW50ZWdlciBvcGVyYW5kIGNvbnRyb2xzIHdoaWNoIGlucHV0IGVsZW1lbnRzCi8vLyAgICB3aWxsIGNvbnRyaWJ1dGUgdG8gdGhlIGRvdCBwcm9kdWN0LCBhbmQgd2hlcmUgdGhlIGZpbmFsIHJlc3VsdHMgYXJlCi8vLyAgICByZXR1cm5lZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gXGNvZGUKLy8vIF9fbTEyOCBfbW1fZHBfcHMoX19tMTI4IFgsIF9fbTEyOCBZLCBjb25zdCBpbnQgTSk7Ci8vLyBcZW5kY29kZQovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkRQUFMgLyBEUFBTIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIFgKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uCi8vLyBccGFyYW0gWQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4KLy8vIFxwYXJhbSBNCi8vLyAgICBBbiBpbW1lZGlhdGUgaW50ZWdlciBvcGVyYW5kLiBNYXNrIGJpdHMgWzc6NF0gZGV0ZXJtaW5lIHdoaWNoIGVsZW1lbnRzCi8vLyAgICBvZiB0aGUgaW5wdXQgdmVjdG9ycyBhcmUgdXNlZCwgd2l0aCBiaXQgWzRdIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGxvd2VzdAovLy8gICAgZWxlbWVudCBhbmQgYml0IFs3XSBjb3JyZXNwb25kaW5nIHRvIHRoZSBoaWdoZXN0IGVsZW1lbnQgb2YgZWFjaCBbNCB4Ci8vLyAgICBmbG9hdF0gdmVjdG9yLiBJZiBhIGJpdCBpcyBzZXQsIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIGZyb20gdGhlIHR3bwovLy8gICAgaW5wdXQgdmVjdG9ycyBhcmUgdXNlZCBhcyBhbiBpbnB1dCBmb3IgZG90IHByb2R1Y3Q7IG90aGVyd2lzZSB0aGF0IGlucHV0Ci8vLyAgICBpcyB0cmVhdGVkIGFzIHplcm8uIEJpdHMgWzM6MF0gZGV0ZXJtaW5lIHdoaWNoIGVsZW1lbnRzIG9mIHRoZSByZXN1bHQKLy8vICAgIHdpbGwgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGZpbmFsIGRvdCBwcm9kdWN0LCB3aXRoIGJpdCBbMF0gY29ycmVzcG9uZGluZwovLy8gICAgdG8gdGhlIGxvd2VzdCBlbGVtZW50IGFuZCBiaXQgWzNdIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGhpZ2hlc3QgZWxlbWVudCBvZgovLy8gICAgZWFjaCBbNCB4IGZsb2F0XSBzdWJ2ZWN0b3IuIElmIGEgYml0IGlzIHNldCwgdGhlIGRvdCBwcm9kdWN0IGlzIHJldHVybmVkCi8vLyAgICBpbiB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50OyBvdGhlcndpc2UgdGhhdCBlbGVtZW50IGlzIHNldCB0byB6ZXJvLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBkb3QgcHJvZHVjdC4KI2RlZmluZSBfbW1fZHBfcHMoWCwgWSwgTSkgXAogICgoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9kcHBzKChfX3Y0c2YpKF9fbTEyOCkoWCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKFkpLCAoTSkpKQoKLy8vIENvbXB1dGVzIHRoZSBkb3QgcHJvZHVjdCBvZiB0aGUgdHdvIDEyOC1iaXQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0KLy8vICAgIGFuZCByZXR1cm5zIGl0IGluIHRoZSBlbGVtZW50cyBvZiB0aGUgMTI4LWJpdCByZXN1bHQgdmVjdG9yIG9mCi8vLyAgICBbMiB4IGRvdWJsZV0uCi8vLwovLy8gICAgVGhlIGltbWVkaWF0ZSBpbnRlZ2VyIG9wZXJhbmQgY29udHJvbHMgd2hpY2ggaW5wdXQKLy8vICAgIGVsZW1lbnRzIHdpbGwgY29udHJpYnV0ZSB0byB0aGUgZG90IHByb2R1Y3QsIGFuZCB3aGVyZSB0aGUgZmluYWwgcmVzdWx0cwovLy8gICAgYXJlIHJldHVybmVkLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBcY29kZQovLy8gX19tMTI4ZCBfbW1fZHBfcGQoX19tMTI4ZCBYLCBfX20xMjhkIFksIGNvbnN0IGludCBNKTsKLy8vIFxlbmRjb2RlCi8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWRFBQRCAvIERQUEQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gWAovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uCi8vLyBccGFyYW0gWQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uCi8vLyBccGFyYW0gTQovLy8gICAgQW4gaW1tZWRpYXRlIGludGVnZXIgb3BlcmFuZC4gTWFzayBiaXRzIFs1OjRdIGRldGVybWluZSB3aGljaCBlbGVtZW50cwovLy8gICAgb2YgdGhlIGlucHV0IHZlY3RvcnMgYXJlIHVzZWQsIHdpdGggYml0IFs0XSBjb3JyZXNwb25kaW5nIHRvIHRoZSBsb3dlc3QKLy8vICAgIGVsZW1lbnQgYW5kIGJpdCBbNV0gY29ycmVzcG9uZGluZyB0byB0aGUgaGlnaGVzdCBlbGVtZW50IG9mIGVhY2ggb2YgWzIgeAovLy8gICAgZG91YmxlXSB2ZWN0b3IuIElmIGEgYml0IGlzIHNldCwgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgZnJvbSB0aGUgdHdvCi8vLyAgICBpbnB1dCB2ZWN0b3JzIGFyZSB1c2VkIGFzIGFuIGlucHV0IGZvciBkb3QgcHJvZHVjdDsgb3RoZXJ3aXNlIHRoYXQgaW5wdXQKLy8vICAgIGlzIHRyZWF0ZWQgYXMgemVyby4gQml0cyBbMTowXSBkZXRlcm1pbmUgd2hpY2ggZWxlbWVudHMgb2YgdGhlIHJlc3VsdAovLy8gICAgd2lsbCByZWNlaXZlIGEgY29weSBvZiB0aGUgZmluYWwgZG90IHByb2R1Y3QsIHdpdGggYml0IFswXSBjb3JyZXNwb25kaW5nCi8vLyAgICB0byB0aGUgbG93ZXN0IGVsZW1lbnQgYW5kIGJpdCBbMV0gY29ycmVzcG9uZGluZyB0byB0aGUgaGlnaGVzdCBlbGVtZW50IG9mCi8vLyAgICBlYWNoIFsyIHggZG91YmxlXSB2ZWN0b3IuIElmIGEgYml0IGlzIHNldCwgdGhlIGRvdCBwcm9kdWN0IGlzIHJldHVybmVkIGluCi8vLyAgICB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50OyBvdGhlcndpc2UgdGhhdCBlbGVtZW50IGlzIHNldCB0byB6ZXJvLgojZGVmaW5lIF9tbV9kcF9wZChYLCBZLCBNKSBcCiAgKChfX20xMjhkKSBfX2J1aWx0aW5faWEzMl9kcHBkKChfX3YyZGYpKF9fbTEyOGQpKFgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKFkpLCAoTSkpKQoKLyogU1NFNCBTdHJlYW1pbmcgTG9hZCBIaW50IEluc3RydWN0aW9uLiAgKi8KLy8vIExvYWRzIGludGVnZXIgdmFsdWVzIGZyb20gYSAxMjgtYml0IGFsaWduZWQgbWVtb3J5IGxvY2F0aW9uIHRvIGEKLy8vICAgIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVk5URFFBIC8gTU9WTlREUUEgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19WCi8vLyAgICBBIHBvaW50ZXIgdG8gYSAxMjgtYml0IGFsaWduZWQgbWVtb3J5IGxvY2F0aW9uIHRoYXQgY29udGFpbnMgdGhlIGludGVnZXIKLy8vICAgIHZhbHVlcy4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBkYXRhIHN0b3JlZCBhdCB0aGUKLy8vICAgIHNwZWNpZmllZCBtZW1vcnkgbG9jYXRpb24uCnN0YXRpYyBfX2lubGluZV9fICBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc3RyZWFtX2xvYWRfc2kxMjggKF9fbTEyOGkgY29uc3QgKl9fVikKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX25vbnRlbXBvcmFsX2xvYWQgKChjb25zdCBfX3YyZGkgKikgX19WKTsKfQoKLyogU1NFNCBQYWNrZWQgSW50ZWdlciBNaW4vTWF4IEluc3RydWN0aW9ucy4gICovCi8vLyBDb21wYXJlcyB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBvZiB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mCi8vLyAgICBbMTYgeCBpOF0gYW5kIHJldHVybnMgYSAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0gY29udGFpbmluZyB0aGUgbGVzc2VyCi8vLyAgICBvZiB0aGUgdHdvIHZhbHVlcy4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUE1JTlNCIC8gUE1JTlNCIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fVjEKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThdLgovLy8gXHBhcmFtIF9fVjIKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThdCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XSBjb250YWluaW5nIHRoZSBsZXNzZXIgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyAgX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX21pbl9lcGk4IChfX20xMjhpIF9fVjEsIF9fbTEyOGkgX19WMikKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1pbnNiMTI4ICgoX192MTZxaSkgX19WMSwgKF9fdjE2cWkpIF9fVjIpOwp9CgovLy8gQ29tcGFyZXMgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgb2YgdHdvIDEyOC1iaXQgdmVjdG9ycyBvZgovLy8gICAgWzE2IHggaThdIGFuZCByZXR1cm5zIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThdIGNvbnRhaW5pbmcgdGhlCi8vLyAgICBncmVhdGVyIHZhbHVlIG9mIHRoZSB0d28uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBNQVhTQiAvIFBNQVhTQiA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX1YxCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XS4KLy8vIFxwYXJhbSBfX1YyCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XS4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThdIGNvbnRhaW5pbmcgdGhlIGdyZWF0ZXIgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyAgX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX21heF9lcGk4IChfX20xMjhpIF9fVjEsIF9fbTEyOGkgX19WMikKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1heHNiMTI4ICgoX192MTZxaSkgX19WMSwgKF9fdjE2cWkpIF9fVjIpOwp9CgovLy8gQ29tcGFyZXMgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgb2YgdHdvIDEyOC1iaXQgdmVjdG9ycyBvZgovLy8gICAgWzggeCB1MTZdIGFuZCByZXR1cm5zIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCB1MTZdIGNvbnRhaW5pbmcgdGhlIGxlc3NlcgovLy8gICAgdmFsdWUgb2YgdGhlIHR3by4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUE1JTlVXIC8gUE1JTlVXIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fVjEKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCB1MTZdLgovLy8gXHBhcmFtIF9fVjIKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCB1MTZdLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IHUxNl0gY29udGFpbmluZyB0aGUgbGVzc2VyIHZhbHVlcy4Kc3RhdGljIF9faW5saW5lX18gIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9taW5fZXB1MTYgKF9fbTEyOGkgX19WMSwgX19tMTI4aSBfX1YyKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbWludXcxMjggKChfX3Y4aGkpIF9fVjEsIChfX3Y4aGkpIF9fVjIpOwp9CgovLy8gQ29tcGFyZXMgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgb2YgdHdvIDEyOC1iaXQgdmVjdG9ycyBvZgovLy8gICAgWzggeCB1MTZdIGFuZCByZXR1cm5zIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCB1MTZdIGNvbnRhaW5pbmcgdGhlCi8vLyAgICBncmVhdGVyIHZhbHVlIG9mIHRoZSB0d28uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBNQVhVVyAvIFBNQVhVVyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX1YxCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggdTE2XS4KLy8vIFxwYXJhbSBfX1YyCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggdTE2XS4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCB1MTZdIGNvbnRhaW5pbmcgdGhlIGdyZWF0ZXIgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyAgX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX21heF9lcHUxNiAoX19tMTI4aSBfX1YxLCBfX20xMjhpIF9fVjIpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3BtYXh1dzEyOCAoKF9fdjhoaSkgX19WMSwgKF9fdjhoaSkgX19WMik7Cn0KCi8vLyBDb21wYXJlcyB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBvZiB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mCi8vLyAgICBbNCB4IGkzMl0gYW5kIHJldHVybnMgYSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0gY29udGFpbmluZyB0aGUgbGVzc2VyCi8vLyAgICB2YWx1ZSBvZiB0aGUgdHdvLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQTUlOU0QgLyBQTUlOU0QgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19WMQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0uCi8vLyBccGFyYW0gX19WMgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0uCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXSBjb250YWluaW5nIHRoZSBsZXNzZXIgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyAgX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX21pbl9lcGkzMiAoX19tMTI4aSBfX1YxLCBfX20xMjhpIF9fVjIpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3BtaW5zZDEyOCAoKF9fdjRzaSkgX19WMSwgKF9fdjRzaSkgX19WMik7Cn0KCi8vLyBDb21wYXJlcyB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBvZiB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mCi8vLyAgICBbNCB4IGkzMl0gYW5kIHJldHVybnMgYSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0gY29udGFpbmluZyB0aGUKLy8vICAgIGdyZWF0ZXIgdmFsdWUgb2YgdGhlIHR3by4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUE1BWFNEIC8gUE1BWFNEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fVjEKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdLgovLy8gXHBhcmFtIF9fVjIKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0gY29udGFpbmluZyB0aGUgZ3JlYXRlciB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZV9fICBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fbWF4X2VwaTMyIChfX20xMjhpIF9fVjEsIF9fbTEyOGkgX19WMikKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1heHNkMTI4ICgoX192NHNpKSBfX1YxLCAoX192NHNpKSBfX1YyKTsKfQoKLy8vIENvbXBhcmVzIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIG9mIHR3byAxMjgtYml0IHZlY3RvcnMgb2YKLy8vICAgIFs0IHggdTMyXSBhbmQgcmV0dXJucyBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggdTMyXSBjb250YWluaW5nIHRoZSBsZXNzZXIKLy8vICAgIHZhbHVlIG9mIHRoZSB0d28uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBNSU5VRCAvIFBNSU5VRCA8L2M+ICBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19WMQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IHUzMl0uCi8vLyBccGFyYW0gX19WMgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IHUzMl0uCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggdTMyXSBjb250YWluaW5nIHRoZSBsZXNzZXIgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyAgX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX21pbl9lcHUzMiAoX19tMTI4aSBfX1YxLCBfX20xMjhpIF9fVjIpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3BtaW51ZDEyOCgoX192NHNpKSBfX1YxLCAoX192NHNpKSBfX1YyKTsKfQoKLy8vIENvbXBhcmVzIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIG9mIHR3byAxMjgtYml0IHZlY3RvcnMgb2YKLy8vICAgIFs0IHggdTMyXSBhbmQgcmV0dXJucyBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggdTMyXSBjb250YWluaW5nIHRoZQovLy8gICAgZ3JlYXRlciB2YWx1ZSBvZiB0aGUgdHdvLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQTUFYVUQgLyBQTUFYVUQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19WMQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IHUzMl0uCi8vLyBccGFyYW0gX19WMgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IHUzMl0uCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggdTMyXSBjb250YWluaW5nIHRoZSBncmVhdGVyIHZhbHVlcy4Kc3RhdGljIF9faW5saW5lX18gIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9tYXhfZXB1MzIgKF9fbTEyOGkgX19WMSwgX19tMTI4aSBfX1YyKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbWF4dWQxMjgoKF9fdjRzaSkgX19WMSwgKF9fdjRzaSkgX19WMik7Cn0KCi8qIFNTRTQgSW5zZXJ0aW9uIGFuZCBFeHRyYWN0aW9uIGZyb20gWE1NIFJlZ2lzdGVyIEluc3RydWN0aW9ucy4gICovCi8vLyBUYWtlcyB0aGUgZmlyc3QgYXJndW1lbnQgXGEgWCBhbmQgaW5zZXJ0cyBhbiBlbGVtZW50IGZyb20gdGhlIHNlY29uZAovLy8gICAgYXJndW1lbnQgXGEgWSBhcyBzZWxlY3RlZCBieSB0aGUgdGhpcmQgYXJndW1lbnQgXGEgTi4gVGhhdCByZXN1bHQgdGhlbgovLy8gICAgaGFzIGVsZW1lbnRzIHplcm9lZCBvdXQgYWxzbyBhcyBzZWxlY3RlZCBieSB0aGUgdGhpcmQgYXJndW1lbnQgXGEgTi4gVGhlCi8vLyAgICByZXN1bHRpbmcgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gaXMgdGhlbiByZXR1cm5lZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gXGNvZGUKLy8vIF9fbTEyOCBfbW1faW5zZXJ0X3BzKF9fbTEyOCBYLCBfX20xMjggWSwgY29uc3QgaW50IE4pOwovLy8gXGVuZGNvZGUKLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZJTlNFUlRQUyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBYCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIHNvdXJjZSBvcGVyYW5kIG9mIFs0IHggZmxvYXRdLiBXaXRoIHRoZSBleGNlcHRpb24gb2YKLy8vICAgIHRob3NlIGJpdHMgaW4gdGhlIHJlc3VsdCBjb3BpZWQgZnJvbSBwYXJhbWV0ZXIgXGEgWSBhbmQgemVyb2VkIGJ5IGJpdHMKLy8vICAgIFszOjBdIG9mIFxhIE4sIGFsbCBiaXRzIGZyb20gdGhpcyBwYXJhbWV0ZXIgYXJlIGNvcGllZCB0byB0aGUgcmVzdWx0LgovLy8gXHBhcmFtIFkKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igc291cmNlIG9wZXJhbmQgb2YgWzQgeCBmbG9hdF0uIE9uZSBzaW5nbGUtcHJlY2lzaW9uCi8vLyAgICBmbG9hdGluZy1wb2ludCBlbGVtZW50IGZyb20gdGhpcyBzb3VyY2UsIGFzIGRldGVybWluZWQgYnkgdGhlIGltbWVkaWF0ZQovLy8gICAgcGFyYW1ldGVyLCBpcyBjb3BpZWQgdG8gdGhlIHJlc3VsdC4KLy8vIFxwYXJhbSBOCi8vLyAgICBTcGVjaWZpZXMgd2hpY2ggYml0cyBmcm9tIG9wZXJhbmQgXGEgWSB3aWxsIGJlIGNvcGllZCwgd2hpY2ggYml0cyBpbiB0aGUKLy8vICAgIHJlc3VsdCB0aGV5IHdpbGwgYmUgYmUgY29waWVkIHRvLCBhbmQgd2hpY2ggYml0cyBpbiB0aGUgcmVzdWx0IHdpbGwgYmUKLy8vICAgIGNsZWFyZWQuIFRoZSBmb2xsb3dpbmcgYXNzaWdubWVudHMgYXJlIG1hZGU6IFxuCi8vLyAgICBCaXRzIFs3OjZdIHNwZWNpZnkgdGhlIGJpdHMgdG8gY29weSBmcm9tIG9wZXJhbmQgXGEgWTogXG4KLy8vICAgICAgMDA6IFNlbGVjdHMgYml0cyBbMzE6MF0gZnJvbSBvcGVyYW5kIFxhIFkuIFxuCi8vLyAgICAgIDAxOiBTZWxlY3RzIGJpdHMgWzYzOjMyXSBmcm9tIG9wZXJhbmQgXGEgWS4gXG4KLy8vICAgICAgMTA6IFNlbGVjdHMgYml0cyBbOTU6NjRdIGZyb20gb3BlcmFuZCBcYSBZLiBcbgovLy8gICAgICAxMTogU2VsZWN0cyBiaXRzIFsxMjc6OTZdIGZyb20gb3BlcmFuZCBcYSBZLiBcbgovLy8gICAgQml0cyBbNTo0XSBzcGVjaWZ5IHRoZSBiaXRzIGluIHRoZSByZXN1bHQgdG8gd2hpY2ggdGhlIHNlbGVjdGVkIGJpdHMKLy8vICAgIGZyb20gb3BlcmFuZCBcYSBZIGFyZSBjb3BpZWQ6IFxuCi8vLyAgICAgIDAwOiBDb3BpZXMgdGhlIHNlbGVjdGVkIGJpdHMgZnJvbSBcYSBZIHRvIHJlc3VsdCBiaXRzIFszMTowXS4gXG4KLy8vICAgICAgMDE6IENvcGllcyB0aGUgc2VsZWN0ZWQgYml0cyBmcm9tIFxhIFkgdG8gcmVzdWx0IGJpdHMgWzYzOjMyXS4gXG4KLy8vICAgICAgMTA6IENvcGllcyB0aGUgc2VsZWN0ZWQgYml0cyBmcm9tIFxhIFkgdG8gcmVzdWx0IGJpdHMgWzk1OjY0XS4gXG4KLy8vICAgICAgMTE6IENvcGllcyB0aGUgc2VsZWN0ZWQgYml0cyBmcm9tIFxhIFkgdG8gcmVzdWx0IGJpdHMgWzEyNzo5Nl0uIFxuCi8vLyAgICBCaXRzWzM6MF06IElmIGFueSBvZiB0aGVzZSBiaXRzIGFyZSBzZXQsIHRoZSBjb3JyZXNwb25kaW5nIHJlc3VsdAovLy8gICAgZWxlbWVudCBpcyBjbGVhcmVkLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb3BpZWQKLy8vICAgIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgZWxlbWVudHMgZnJvbSB0aGUgb3BlcmFuZHMuCiNkZWZpbmUgX21tX2luc2VydF9wcyhYLCBZLCBOKSBfX2J1aWx0aW5faWEzMl9pbnNlcnRwczEyOCgoWCksIChZKSwgKE4pKQoKLy8vIEV4dHJhY3RzIGEgMzItYml0IGludGVnZXIgZnJvbSBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGFuZAovLy8gICAgcmV0dXJucyBpdCwgdXNpbmcgdGhlIGltbWVkaWF0ZSB2YWx1ZSBwYXJhbWV0ZXIgXGEgTiBhcyBhIHNlbGVjdG9yLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBcY29kZQovLy8gaW50IF9tbV9leHRyYWN0X3BzKF9fbTEyOCBYLCBjb25zdCBpbnQgTik7Ci8vLyBcZW5kY29kZQovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkVYVFJBQ1RQUyAvIEVYVFJBQ1RQUyA8L2M+Ci8vLyBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gWAovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4KLy8vIFxwYXJhbSBOCi8vLyAgICBBbiBpbW1lZGlhdGUgdmFsdWUuIEJpdHMgWzE6MF0gZGV0ZXJtaW5lcyB3aGljaCBiaXRzIGZyb20gdGhlIGFyZ3VtZW50Ci8vLyAgICBcYSBYIGFyZSBleHRyYWN0ZWQgYW5kIHJldHVybmVkOiBcbgovLy8gICAgMDA6IEJpdHMgWzMxOjBdIG9mIHBhcmFtZXRlciBcYSBYIGFyZSByZXR1cm5lZC4gXG4KLy8vICAgIDAxOiBCaXRzIFs2MzozMl0gb2YgcGFyYW1ldGVyIFxhIFggYXJlIHJldHVybmVkLiBcbgovLy8gICAgMTA6IEJpdHMgWzk1OjY0XSBvZiBwYXJhbWV0ZXIgXGEgWCBhcmUgcmV0dXJuZWQuIFxuCi8vLyAgICAxMTogQml0cyBbMTI3Ojk2XSBvZiBwYXJhbWV0ZXIgXGEgWCBhcmUgcmV0dXJuZWQuCi8vLyBccmV0dXJucyBBIDMyLWJpdCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGV4dHJhY3RlZCAzMiBiaXRzIG9mIGZsb2F0IGRhdGEuCiNkZWZpbmUgX21tX2V4dHJhY3RfcHMoWCwgTikgXAogIF9fYnVpbHRpbl9iaXRfY2FzdChpbnQsIF9fYnVpbHRpbl9pYTMyX3ZlY19leHRfdjRzZigoX192NHNmKShfX20xMjgpKFgpLCAoaW50KShOKSkpCgovKiBNaXNjZWxsYW5lb3VzIGluc2VydCBhbmQgZXh0cmFjdCBtYWNyb3MuICAqLwovKiBFeHRyYWN0IGEgc2luZ2xlLXByZWNpc2lvbiBmbG9hdCBmcm9tIFggYXQgaW5kZXggTiBpbnRvIEQuICAqLwojZGVmaW5lIF9NTV9FWFRSQUNUX0ZMT0FUKEQsIFgsIE4pIFwKICBkbyB7IChEKSA9IF9fYnVpbHRpbl9pYTMyX3ZlY19leHRfdjRzZigoX192NHNmKShfX20xMjgpKFgpLCAoaW50KShOKSk7IH0gd2hpbGUgKDApCgovKiBPciB0b2dldGhlciAyIHNldHMgb2YgaW5kZXhlcyAoWCBhbmQgWSkgd2l0aCB0aGUgemVyb2luZyBiaXRzIChaKSB0byBjcmVhdGUKICAgYW4gaW5kZXggc3VpdGFibGUgZm9yIF9tbV9pbnNlcnRfcHMuICAqLwojZGVmaW5lIF9NTV9NS19JTlNFUlRQU19ORFgoWCwgWSwgWikgKCgoWCkgPDwgNikgfCAoKFkpIDw8IDQpIHwgKFopKQoKLyogRXh0cmFjdCBhIGZsb2F0IGZyb20gWCBhdCBpbmRleCBOIGludG8gdGhlIGZpcnN0IGluZGV4IG9mIHRoZSByZXR1cm4uICAqLwojZGVmaW5lIF9NTV9QSUNLX09VVF9QUyhYLCBOKSBfbW1faW5zZXJ0X3BzIChfbW1fc2V0emVyb19wcygpLCAoWCksICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fTUtfSU5TRVJUUFNfTkRYKChOKSwgMCwgMHgwZSkpCgovKiBJbnNlcnQgaW50IGludG8gcGFja2VkIGludGVnZXIgYXJyYXkgYXQgaW5kZXguICAqLwovLy8gQ29uc3RydWN0cyBhIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XSBieSBmaXJzdCBtYWtpbmcgYSBjb3B5IG9mCi8vLyAgICB0aGUgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBwYXJhbWV0ZXIsIGFuZCB0aGVuIGluc2VydGluZyB0aGUgbG93ZXIgOCBiaXRzCi8vLyAgICBvZiBhbiBpbnRlZ2VyIHBhcmFtZXRlciBcYSBJIGludG8gYW4gb2Zmc2V0IHNwZWNpZmllZCBieSB0aGUgaW1tZWRpYXRlCi8vLyAgICB2YWx1ZSBwYXJhbWV0ZXIgXGEgTi4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gXGNvZGUKLy8vIF9fbTEyOGkgX21tX2luc2VydF9lcGk4KF9fbTEyOGkgWCwgaW50IEksIGNvbnN0IGludCBOKTsKLy8vIFxlbmRjb2RlCi8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUElOU1JCIC8gUElOU1JCIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIFgKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMTYgeCBpOF0uIFRoaXMgdmVjdG9yIGlzIGNvcGllZCB0byB0aGUKLy8vICAgIHJlc3VsdCBhbmQgdGhlbiBvbmUgb2YgdGhlIHNpeHRlZW4gZWxlbWVudHMgaW4gdGhlIHJlc3VsdCB2ZWN0b3IgaXMKLy8vICAgIHJlcGxhY2VkIGJ5IHRoZSBsb3dlciA4IGJpdHMgb2YgXGEgSS4KLy8vIFxwYXJhbSBJCi8vLyAgICBBbiBpbnRlZ2VyLiBUaGUgbG93ZXIgOCBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUgd3JpdHRlbiB0byB0aGUgcmVzdWx0Ci8vLyAgICBiZWdpbm5pbmcgYXQgdGhlIG9mZnNldCBzcGVjaWZpZWQgYnkgXGEgTi4KLy8vIFxwYXJhbSBOCi8vLyAgICBBbiBpbW1lZGlhdGUgdmFsdWUuIEJpdHMgWzM6MF0gc3BlY2lmeSB0aGUgYml0IG9mZnNldCBpbiB0aGUgcmVzdWx0IGF0Ci8vLyAgICB3aGljaCB0aGUgbG93ZXIgOCBiaXRzIG9mIFxhIEkgYXJlIHdyaXR0ZW4uIFxuCi8vLyAgICAwMDAwOiBCaXRzIFs3OjBdIG9mIHRoZSByZXN1bHQgYXJlIHVzZWQgZm9yIGluc2VydGlvbi4gXG4KLy8vICAgIDAwMDE6IEJpdHMgWzE1OjhdIG9mIHRoZSByZXN1bHQgYXJlIHVzZWQgZm9yIGluc2VydGlvbi4gXG4KLy8vICAgIDAwMTA6IEJpdHMgWzIzOjE2XSBvZiB0aGUgcmVzdWx0IGFyZSB1c2VkIGZvciBpbnNlcnRpb24uIFxuCi8vLyAgICAwMDExOiBCaXRzIFszMToyNF0gb2YgdGhlIHJlc3VsdCBhcmUgdXNlZCBmb3IgaW5zZXJ0aW9uLiBcbgovLy8gICAgMDEwMDogQml0cyBbMzk6MzJdIG9mIHRoZSByZXN1bHQgYXJlIHVzZWQgZm9yIGluc2VydGlvbi4gXG4KLy8vICAgIDAxMDE6IEJpdHMgWzQ3OjQwXSBvZiB0aGUgcmVzdWx0IGFyZSB1c2VkIGZvciBpbnNlcnRpb24uIFxuCi8vLyAgICAwMTEwOiBCaXRzIFs1NTo0OF0gb2YgdGhlIHJlc3VsdCBhcmUgdXNlZCBmb3IgaW5zZXJ0aW9uLiBcbgovLy8gICAgMDExMTogQml0cyBbNjM6NTZdIG9mIHRoZSByZXN1bHQgYXJlIHVzZWQgZm9yIGluc2VydGlvbi4gXG4KLy8vICAgIDEwMDA6IEJpdHMgWzcxOjY0XSBvZiB0aGUgcmVzdWx0IGFyZSB1c2VkIGZvciBpbnNlcnRpb24uIFxuCi8vLyAgICAxMDAxOiBCaXRzIFs3OTo3Ml0gb2YgdGhlIHJlc3VsdCBhcmUgdXNlZCBmb3IgaW5zZXJ0aW9uLiBcbgovLy8gICAgMTAxMDogQml0cyBbODc6ODBdIG9mIHRoZSByZXN1bHQgYXJlIHVzZWQgZm9yIGluc2VydGlvbi4gXG4KLy8vICAgIDEwMTE6IEJpdHMgWzk1Ojg4XSBvZiB0aGUgcmVzdWx0IGFyZSB1c2VkIGZvciBpbnNlcnRpb24uIFxuCi8vLyAgICAxMTAwOiBCaXRzIFsxMDM6OTZdIG9mIHRoZSByZXN1bHQgYXJlIHVzZWQgZm9yIGluc2VydGlvbi4gXG4KLy8vICAgIDExMDE6IEJpdHMgWzExMToxMDRdIG9mIHRoZSByZXN1bHQgYXJlIHVzZWQgZm9yIGluc2VydGlvbi4gXG4KLy8vICAgIDExMTA6IEJpdHMgWzExOToxMTJdIG9mIHRoZSByZXN1bHQgYXJlIHVzZWQgZm9yIGluc2VydGlvbi4gXG4KLy8vICAgIDExMTE6IEJpdHMgWzEyNzoxMjBdIG9mIHRoZSByZXN1bHQgYXJlIHVzZWQgZm9yIGluc2VydGlvbi4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBjb25zdHJ1Y3RlZCB2YWx1ZXMuCiNkZWZpbmUgX21tX2luc2VydF9lcGk4KFgsIEksIE4pIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdmVjX3NldF92MTZxaSgoX192MTZxaSkoX19tMTI4aSkoWCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShJKSwgKGludCkoTikpKQoKLy8vIENvbnN0cnVjdHMgYSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0gYnkgZmlyc3QgbWFraW5nIGEgY29weSBvZgovLy8gICAgdGhlIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgcGFyYW1ldGVyLCBhbmQgdGhlbiBpbnNlcnRpbmcgdGhlIDMyLWJpdAovLy8gICAgaW50ZWdlciBwYXJhbWV0ZXIgXGEgSSBhdCB0aGUgb2Zmc2V0IHNwZWNpZmllZCBieSB0aGUgaW1tZWRpYXRlIHZhbHVlCi8vLyAgICBwYXJhbWV0ZXIgXGEgTi4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gXGNvZGUKLy8vIF9fbTEyOGkgX21tX2luc2VydF9lcGkzMihfX20xMjhpIFgsIGludCBJLCBjb25zdCBpbnQgTik7Ci8vLyBcZW5kY29kZQovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBJTlNSRCAvIFBJTlNSRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBYCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMzJdLiBUaGlzIHZlY3RvciBpcyBjb3BpZWQgdG8gdGhlCi8vLyAgICByZXN1bHQgYW5kIHRoZW4gb25lIG9mIHRoZSBmb3VyIGVsZW1lbnRzIGluIHRoZSByZXN1bHQgdmVjdG9yIGlzCi8vLyAgICByZXBsYWNlZCBieSBcYSBJLgovLy8gXHBhcmFtIEkKLy8vICAgIEEgMzItYml0IGludGVnZXIgdGhhdCBpcyB3cml0dGVuIHRvIHRoZSByZXN1bHQgYmVnaW5uaW5nIGF0IHRoZSBvZmZzZXQKLy8vICAgIHNwZWNpZmllZCBieSBcYSBOLgovLy8gXHBhcmFtIE4KLy8vICAgIEFuIGltbWVkaWF0ZSB2YWx1ZS4gQml0cyBbMTowXSBzcGVjaWZ5IHRoZSBiaXQgb2Zmc2V0IGluIHRoZSByZXN1bHQgYXQKLy8vICAgIHdoaWNoIHRoZSBpbnRlZ2VyIFxhIEkgaXMgd3JpdHRlbi4gXG4KLy8vICAgIDAwOiBCaXRzIFszMTowXSBvZiB0aGUgcmVzdWx0IGFyZSB1c2VkIGZvciBpbnNlcnRpb24uIFxuCi8vLyAgICAwMTogQml0cyBbNjM6MzJdIG9mIHRoZSByZXN1bHQgYXJlIHVzZWQgZm9yIGluc2VydGlvbi4gXG4KLy8vICAgIDEwOiBCaXRzIFs5NTo2NF0gb2YgdGhlIHJlc3VsdCBhcmUgdXNlZCBmb3IgaW5zZXJ0aW9uLiBcbgovLy8gICAgMTE6IEJpdHMgWzEyNzo5Nl0gb2YgdGhlIHJlc3VsdCBhcmUgdXNlZCBmb3IgaW5zZXJ0aW9uLgovLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbnN0cnVjdGVkIHZhbHVlcy4KI2RlZmluZSBfbW1faW5zZXJ0X2VwaTMyKFgsIEksIE4pIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdmVjX3NldF92NHNpKChfX3Y0c2kpKF9fbTEyOGkpKFgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShJKSwgKGludCkoTikpKQoKI2lmZGVmIF9feDg2XzY0X18KLy8vIENvbnN0cnVjdHMgYSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0gYnkgZmlyc3QgbWFraW5nIGEgY29weSBvZgovLy8gICAgdGhlIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgcGFyYW1ldGVyLCBhbmQgdGhlbiBpbnNlcnRpbmcgdGhlIDY0LWJpdAovLy8gICAgaW50ZWdlciBwYXJhbWV0ZXIgXGEgSSwgdXNpbmcgdGhlIGltbWVkaWF0ZSB2YWx1ZSBwYXJhbWV0ZXIgXGEgTiBhcyBhbgovLy8gICAgaW5zZXJ0aW9uIGxvY2F0aW9uIHNlbGVjdG9yLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBcY29kZQovLy8gX19tMTI4aSBfbW1faW5zZXJ0X2VwaTY0KF9fbTEyOGkgWCwgbG9uZyBsb25nIEksIGNvbnN0IGludCBOKTsKLy8vIFxlbmRjb2RlCi8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUElOU1JRIC8gUElOU1JRIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIFgKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGk2NF0uIFRoaXMgdmVjdG9yIGlzIGNvcGllZCB0byB0aGUKLy8vICAgIHJlc3VsdCBhbmQgdGhlbiBvbmUgb2YgdGhlIHR3byBlbGVtZW50cyBpbiB0aGUgcmVzdWx0IHZlY3RvciBpcyByZXBsYWNlZAovLy8gICAgYnkgXGEgSS4KLy8vIFxwYXJhbSBJCi8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHRoYXQgaXMgd3JpdHRlbiB0byB0aGUgcmVzdWx0IGJlZ2lubmluZyBhdCB0aGUgb2Zmc2V0Ci8vLyAgICBzcGVjaWZpZWQgYnkgXGEgTi4KLy8vIFxwYXJhbSBOCi8vLyAgICBBbiBpbW1lZGlhdGUgdmFsdWUuIEJpdCBbMF0gc3BlY2lmaWVzIHRoZSBiaXQgb2Zmc2V0IGluIHRoZSByZXN1bHQgYXQKLy8vICAgIHdoaWNoIHRoZSBpbnRlZ2VyIFxhIEkgaXMgd3JpdHRlbi4gXG4KLy8vICAgIDA6IEJpdHMgWzYzOjBdIG9mIHRoZSByZXN1bHQgYXJlIHVzZWQgZm9yIGluc2VydGlvbi4gXG4KLy8vICAgIDE6IEJpdHMgWzEyNzo2NF0gb2YgdGhlIHJlc3VsdCBhcmUgdXNlZCBmb3IgaW5zZXJ0aW9uLiBcbgovLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbnN0cnVjdGVkIHZhbHVlcy4KI2RlZmluZSBfbW1faW5zZXJ0X2VwaTY0KFgsIEksIE4pIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdmVjX3NldF92MmRpKChfX3YyZGkpKF9fbTEyOGkpKFgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShJKSwgKGludCkoTikpKQojZW5kaWYgLyogX194ODZfNjRfXyAqLwoKLyogRXh0cmFjdCBpbnQgZnJvbSBwYWNrZWQgaW50ZWdlciBhcnJheSBhdCBpbmRleC4gIFRoaXMgcmV0dXJucyB0aGUgZWxlbWVudAogKiBhcyBhIHplcm8gZXh0ZW5kZWQgdmFsdWUsIHNvIGl0IGlzIHVuc2lnbmVkLgogKi8KLy8vIEV4dHJhY3RzIGFuIDgtYml0IGVsZW1lbnQgZnJvbSB0aGUgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvZgovLy8gICAgWzE2IHggaThdLCB1c2luZyB0aGUgaW1tZWRpYXRlIHZhbHVlIHBhcmFtZXRlciBcYSBOIGFzIGEgc2VsZWN0b3IuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFxjb2RlCi8vLyBpbnQgX21tX2V4dHJhY3RfZXBpOChfX20xMjhpIFgsIGNvbnN0IGludCBOKTsKLy8vIFxlbmRjb2RlCi8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEVYVFJCIC8gUEVYVFJCIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIFgKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4KLy8vIFxwYXJhbSBOCi8vLyAgICBBbiBpbW1lZGlhdGUgdmFsdWUuIEJpdHMgWzM6MF0gc3BlY2lmeSB3aGljaCA4LWJpdCB2ZWN0b3IgZWxlbWVudCBmcm9tCi8vLyAgICB0aGUgYXJndW1lbnQgXGEgWCB0byBleHRyYWN0IGFuZCBjb3B5IHRvIHRoZSByZXN1bHQuIFxuCi8vLyAgICAwMDAwOiBCaXRzIFs3OjBdIG9mIHBhcmFtZXRlciBcYSBYIGFyZSBleHRyYWN0ZWQuIFxuCi8vLyAgICAwMDAxOiBCaXRzIFsxNTo4XSBvZiB0aGUgcGFyYW1ldGVyIFxhIFggYXJlIGV4dHJhY3RlZC4gXG4KLy8vICAgIDAwMTA6IEJpdHMgWzIzOjE2XSBvZiB0aGUgcGFyYW1ldGVyIFxhIFggYXJlIGV4dHJhY3RlZC4gXG4KLy8vICAgIDAwMTE6IEJpdHMgWzMxOjI0XSBvZiB0aGUgcGFyYW1ldGVyIFxhIFggYXJlIGV4dHJhY3RlZC4gXG4KLy8vICAgIDAxMDA6IEJpdHMgWzM5OjMyXSBvZiB0aGUgcGFyYW1ldGVyIFxhIFggYXJlIGV4dHJhY3RlZC4gXG4KLy8vICAgIDAxMDE6IEJpdHMgWzQ3OjQwXSBvZiB0aGUgcGFyYW1ldGVyIFxhIFggYXJlIGV4dHJhY3RlZC4gXG4KLy8vICAgIDAxMTA6IEJpdHMgWzU1OjQ4XSBvZiB0aGUgcGFyYW1ldGVyIFxhIFggYXJlIGV4dHJhY3RlZC4gXG4KLy8vICAgIDAxMTE6IEJpdHMgWzYzOjU2XSBvZiB0aGUgcGFyYW1ldGVyIFxhIFggYXJlIGV4dHJhY3RlZC4gXG4KLy8vICAgIDEwMDA6IEJpdHMgWzcxOjY0XSBvZiB0aGUgcGFyYW1ldGVyIFxhIFggYXJlIGV4dHJhY3RlZC4gXG4KLy8vICAgIDEwMDE6IEJpdHMgWzc5OjcyXSBvZiB0aGUgcGFyYW1ldGVyIFxhIFggYXJlIGV4dHJhY3RlZC4gXG4KLy8vICAgIDEwMTA6IEJpdHMgWzg3OjgwXSBvZiB0aGUgcGFyYW1ldGVyIFxhIFggYXJlIGV4dHJhY3RlZC4gXG4KLy8vICAgIDEwMTE6IEJpdHMgWzk1Ojg4XSBvZiB0aGUgcGFyYW1ldGVyIFxhIFggYXJlIGV4dHJhY3RlZC4gXG4KLy8vICAgIDExMDA6IEJpdHMgWzEwMzo5Nl0gb2YgdGhlIHBhcmFtZXRlciBcYSBYIGFyZSBleHRyYWN0ZWQuIFxuCi8vLyAgICAxMTAxOiBCaXRzIFsxMTE6MTA0XSBvZiB0aGUgcGFyYW1ldGVyIFxhIFggYXJlIGV4dHJhY3RlZC4gXG4KLy8vICAgIDExMTA6IEJpdHMgWzExOToxMTJdIG9mIHRoZSBwYXJhbWV0ZXIgXGEgWCBhcmUgZXh0cmFjdGVkLiBcbgovLy8gICAgMTExMTogQml0cyBbMTI3OjEyMF0gb2YgdGhlIHBhcmFtZXRlciBcYSBYIGFyZSBleHRyYWN0ZWQuCi8vLyBccmV0dXJucyAgQW4gdW5zaWduZWQgaW50ZWdlciwgd2hvc2UgbG93ZXIgOCBiaXRzIGFyZSBzZWxlY3RlZCBmcm9tIHRoZQovLy8gICAgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBwYXJhbWV0ZXIgYW5kIHRoZSByZW1haW5pbmcgYml0cyBhcmUgYXNzaWduZWQKLy8vICAgIHplcm9zLgojZGVmaW5lIF9tbV9leHRyYWN0X2VwaTgoWCwgTikgXAogICgoaW50KSh1bnNpZ25lZCBjaGFyKV9fYnVpbHRpbl9pYTMyX3ZlY19leHRfdjE2cWkoKF9fdjE2cWkpKF9fbTEyOGkpKFgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShOKSkpCgovLy8gRXh0cmFjdHMgYSAzMi1iaXQgZWxlbWVudCBmcm9tIHRoZSAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9mCi8vLyAgICBbNCB4IGkzMl0sIHVzaW5nIHRoZSBpbW1lZGlhdGUgdmFsdWUgcGFyYW1ldGVyIFxhIE4gYXMgYSBzZWxlY3Rvci4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gXGNvZGUKLy8vIGludCBfbW1fZXh0cmFjdF9lcGkzMihfX20xMjhpIFgsIGNvbnN0IGludCBOKTsKLy8vIFxlbmRjb2RlCi8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEVYVFJEIC8gUEVYVFJEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIFgKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4KLy8vIFxwYXJhbSBOCi8vLyAgICBBbiBpbW1lZGlhdGUgdmFsdWUuIEJpdHMgWzE6MF0gc3BlY2lmeSB3aGljaCAzMi1iaXQgdmVjdG9yIGVsZW1lbnQgZnJvbQovLy8gICAgdGhlIGFyZ3VtZW50IFxhIFggdG8gZXh0cmFjdCBhbmQgY29weSB0byB0aGUgcmVzdWx0LiBcbgovLy8gICAgMDA6IEJpdHMgWzMxOjBdIG9mIHRoZSBwYXJhbWV0ZXIgXGEgWCBhcmUgZXh0cmFjdGVkLiBcbgovLy8gICAgMDE6IEJpdHMgWzYzOjMyXSBvZiB0aGUgcGFyYW1ldGVyIFxhIFggYXJlIGV4dHJhY3RlZC4gXG4KLy8vICAgIDEwOiBCaXRzIFs5NTo2NF0gb2YgdGhlIHBhcmFtZXRlciBcYSBYIGFyZSBleHRyYWN0ZWQuIFxuCi8vLyAgICAxMTogQml0cyBbMTI3Ojk2XSBvZiB0aGUgcGFyYW1ldGVyIFxhIFggYXJlIGV4cmFjdGVkLgovLy8gXHJldHVybnMgIEFuIGludGVnZXIsIHdob3NlIGxvd2VyIDMyIGJpdHMgYXJlIHNlbGVjdGVkIGZyb20gdGhlIDEyOC1iaXQKLy8vICAgIGludGVnZXIgdmVjdG9yIHBhcmFtZXRlciBhbmQgdGhlIHJlbWFpbmluZyBiaXRzIGFyZSBhc3NpZ25lZCB6ZXJvcy4KI2RlZmluZSBfbW1fZXh0cmFjdF9lcGkzMihYLCBOKSBcCiAgKChpbnQpX19idWlsdGluX2lhMzJfdmVjX2V4dF92NHNpKChfX3Y0c2kpKF9fbTEyOGkpKFgpLCAoaW50KShOKSkpCgojaWZkZWYgX194ODZfNjRfXwovLy8gRXh0cmFjdHMgYSA2NC1iaXQgZWxlbWVudCBmcm9tIHRoZSAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9mCi8vLyAgICBbMiB4IGk2NF0sIHVzaW5nIHRoZSBpbW1lZGlhdGUgdmFsdWUgcGFyYW1ldGVyIFxhIE4gYXMgYSBzZWxlY3Rvci4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gXGNvZGUKLy8vIGxvbmcgbG9uZyBfbW1fZXh0cmFjdF9lcGk2NChfX20xMjhpIFgsIGNvbnN0IGludCBOKTsKLy8vIFxlbmRjb2RlCi8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEVYVFJRIC8gUEVYVFJRIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIFgKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4KLy8vIFxwYXJhbSBOCi8vLyAgICBBbiBpbW1lZGlhdGUgdmFsdWUuIEJpdCBbMF0gc3BlY2lmaWVzIHdoaWNoIDY0LWJpdCB2ZWN0b3IgZWxlbWVudCBmcm9tCi8vLyAgICB0aGUgYXJndW1lbnQgXGEgWCB0byByZXR1cm4uIFxuCi8vLyAgICAwOiBCaXRzIFs2MzowXSBhcmUgcmV0dXJuZWQuIFxuCi8vLyAgICAxOiBCaXRzIFsxMjc6NjRdIGFyZSByZXR1cm5lZC4gXG4KLy8vIFxyZXR1cm5zICBBIDY0LWJpdCBpbnRlZ2VyLgojZGVmaW5lIF9tbV9leHRyYWN0X2VwaTY0KFgsIE4pIFwKICAoKGxvbmcgbG9uZylfX2J1aWx0aW5faWEzMl92ZWNfZXh0X3YyZGkoKF9fdjJkaSkoX19tMTI4aSkoWCksIChpbnQpKE4pKSkKI2VuZGlmIC8qIF9feDg2XzY0ICovCgovKiBTU0U0IDEyOC1iaXQgUGFja2VkIEludGVnZXIgQ29tcGFyaXNvbnMuICAqLwovLy8gVGVzdHMgd2hldGhlciB0aGUgc3BlY2lmaWVkIGJpdHMgaW4gYSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGFyZSBhbGwKLy8vICAgIHplcm9zLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQVEVTVCAvIFBURVNUIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fTQovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGJpdHMgdG8gYmUgdGVzdGVkLgovLy8gXHBhcmFtIF9fVgovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIHNlbGVjdGluZyB3aGljaCBiaXRzIHRvIHRlc3QgaW4gb3BlcmFuZCBcYSBfX00uCi8vLyBccmV0dXJucyBUUlVFIGlmIHRoZSBzcGVjaWZpZWQgYml0cyBhcmUgYWxsIHplcm9zOyBGQUxTRSBvdGhlcndpc2UuCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3Rlc3R6X3NpMTI4KF9fbTEyOGkgX19NLCBfX20xMjhpIF9fVikKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9wdGVzdHoxMjgoKF9fdjJkaSlfX00sIChfX3YyZGkpX19WKTsKfQoKLy8vIFRlc3RzIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBiaXRzIGluIGEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBhcmUgYWxsCi8vLyAgICBvbmVzLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQVEVTVCAvIFBURVNUIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fTQovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGJpdHMgdG8gYmUgdGVzdGVkLgovLy8gXHBhcmFtIF9fVgovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIHNlbGVjdGluZyB3aGljaCBiaXRzIHRvIHRlc3QgaW4gb3BlcmFuZCBcYSBfX00uCi8vLyBccmV0dXJucyBUUlVFIGlmIHRoZSBzcGVjaWZpZWQgYml0cyBhcmUgYWxsIG9uZXM7IEZBTFNFIG90aGVyd2lzZS4Kc3RhdGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fdGVzdGNfc2kxMjgoX19tMTI4aSBfX00sIF9fbTEyOGkgX19WKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3B0ZXN0YzEyOCgoX192MmRpKV9fTSwgKF9fdjJkaSlfX1YpOwp9CgovLy8gVGVzdHMgd2hldGhlciB0aGUgc3BlY2lmaWVkIGJpdHMgaW4gYSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGFyZQovLy8gICAgbmVpdGhlciBhbGwgemVyb3Mgbm9yIGFsbCBvbmVzLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQVEVTVCAvIFBURVNUIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fTQovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGJpdHMgdG8gYmUgdGVzdGVkLgovLy8gXHBhcmFtIF9fVgovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIHNlbGVjdGluZyB3aGljaCBiaXRzIHRvIHRlc3QgaW4gb3BlcmFuZCBcYSBfX00uCi8vLyBccmV0dXJucyBUUlVFIGlmIHRoZSBzcGVjaWZpZWQgYml0cyBhcmUgbmVpdGhlciBhbGwgemVyb3Mgbm9yIGFsbCBvbmVzOwovLy8gICAgRkFMU0Ugb3RoZXJ3aXNlLgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV90ZXN0bnpjX3NpMTI4KF9fbTEyOGkgX19NLCBfX20xMjhpIF9fVikKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9wdGVzdG56YzEyOCgoX192MmRpKV9fTSwgKF9fdjJkaSlfX1YpOwp9CgovLy8gVGVzdHMgd2hldGhlciB0aGUgc3BlY2lmaWVkIGJpdHMgaW4gYSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGFyZSBhbGwKLy8vICAgIG9uZXMuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFxjb2RlCi8vLyBpbnQgX21tX3Rlc3RfYWxsX29uZXMoX19tMTI4aSBWKTsKLy8vIFxlbmRjb2RlCi8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFRFU1QgLyBQVEVTVCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBWCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgYml0cyB0byBiZSB0ZXN0ZWQuCi8vLyBccmV0dXJucyBUUlVFIGlmIHRoZSBiaXRzIHNwZWNpZmllZCBpbiB0aGUgb3BlcmFuZCBhcmUgYWxsIHNldCB0byAxOyBGQUxTRQovLy8gICAgb3RoZXJ3aXNlLgojZGVmaW5lIF9tbV90ZXN0X2FsbF9vbmVzKFYpIF9tbV90ZXN0Y19zaTEyOCgoViksIF9tbV9jbXBlcV9lcGkzMigoViksIChWKSkpCgovLy8gVGVzdHMgd2hldGhlciB0aGUgc3BlY2lmaWVkIGJpdHMgaW4gYSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGFyZQovLy8gICAgbmVpdGhlciBhbGwgemVyb3Mgbm9yIGFsbCBvbmVzLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBcY29kZQovLy8gaW50IF9tbV90ZXN0X21peF9vbmVzX3plcm9zKF9fbTEyOGkgTSwgX19tMTI4aSBWKTsKLy8vIFxlbmRjb2RlCi8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFRFU1QgLyBQVEVTVCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBNCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgYml0cyB0byBiZSB0ZXN0ZWQuCi8vLyBccGFyYW0gVgovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIHNlbGVjdGluZyB3aGljaCBiaXRzIHRvIHRlc3QgaW4gb3BlcmFuZCBcYSBNLgovLy8gXHJldHVybnMgVFJVRSBpZiB0aGUgc3BlY2lmaWVkIGJpdHMgYXJlIG5laXRoZXIgYWxsIHplcm9zIG5vciBhbGwgb25lczsKLy8vICAgIEZBTFNFIG90aGVyd2lzZS4KI2RlZmluZSBfbW1fdGVzdF9taXhfb25lc196ZXJvcyhNLCBWKSBfbW1fdGVzdG56Y19zaTEyOCgoTSksIChWKSkKCi8vLyBUZXN0cyB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgYml0cyBpbiBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgYXJlIGFsbAovLy8gICAgemVyb3MuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFxjb2RlCi8vLyBpbnQgX21tX3Rlc3RfYWxsX3plcm9zKF9fbTEyOGkgTSwgX19tMTI4aSBWKTsKLy8vIFxlbmRjb2RlCi8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFRFU1QgLyBQVEVTVCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBNCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgYml0cyB0byBiZSB0ZXN0ZWQuCi8vLyBccGFyYW0gVgovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIHNlbGVjdGluZyB3aGljaCBiaXRzIHRvIHRlc3QgaW4gb3BlcmFuZCBcYSBNLgovLy8gXHJldHVybnMgVFJVRSBpZiB0aGUgc3BlY2lmaWVkIGJpdHMgYXJlIGFsbCB6ZXJvczsgRkFMU0Ugb3RoZXJ3aXNlLgojZGVmaW5lIF9tbV90ZXN0X2FsbF96ZXJvcyhNLCBWKSBfbW1fdGVzdHpfc2kxMjggKChNKSwgKFYpKQoKLyogU1NFNCA2NC1iaXQgUGFja2VkIEludGVnZXIgQ29tcGFyaXNvbnMuICAqLwovLy8gQ29tcGFyZXMgZWFjaCBvZiB0aGUgY29ycmVzcG9uZGluZyA2NC1iaXQgdmFsdWVzIG9mIHRoZSAxMjgtYml0Ci8vLyAgICBpbnRlZ2VyIHZlY3RvcnMgZm9yIGVxdWFsaXR5LgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQ01QRVFRIC8gUENNUEVRUSA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX1YxCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuCi8vLyBccGFyYW0gX19WMgovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yLgovLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2NtcGVxX2VwaTY0KF9fbTEyOGkgX19WMSwgX19tMTI4aSBfX1YyKQp7CiAgcmV0dXJuIChfX20xMjhpKSgoX192MmRpKV9fVjEgPT0gKF9fdjJkaSlfX1YyKTsKfQoKLyogU1NFNCBQYWNrZWQgSW50ZWdlciBTaWduLUV4dGVuc2lvbi4gICovCi8vLyBTaWduLWV4dGVuZHMgZWFjaCBvZiB0aGUgbG93ZXIgZWlnaHQgOC1iaXQgaW50ZWdlciBlbGVtZW50cyBvZiBhCi8vLyAgICAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0gdG8gMTYtYml0IHZhbHVlcyBhbmQgcmV0dXJucyB0aGVtIGluIGEKLy8vICAgIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XS4gVGhlIHVwcGVyIGVpZ2h0IGVsZW1lbnRzIG9mIHRoZSBpbnB1dCB2ZWN0b3IKLy8vICAgIGFyZSB1bnVzZWQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBNT1ZTWEJXIC8gUE1PVlNYQlcgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19WCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XS4gVGhlIGxvd2VyIGVpZ2h0IDgtYml0IGVsZW1lbnRzIGFyZSBzaWduLQovLy8gICAgZXh0ZW5kZWQgdG8gMTYtYml0IHZhbHVlcy4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZdIGNvbnRhaW5pbmcgdGhlIHNpZ24tZXh0ZW5kZWQgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY3Z0ZXBpOF9lcGkxNihfX20xMjhpIF9fVikKewogIC8qIFRoaXMgZnVuY3Rpb24gYWx3YXlzIHBlcmZvcm1zIGEgc2lnbmVkIGV4dGVuc2lvbiwgYnV0IF9fdjE2cWkgaXMgYSBjaGFyCiAgICAgd2hpY2ggbWF5IGJlIHNpZ25lZCBvciB1bnNpZ25lZCwgc28gdXNlIF9fdjE2cXMuICovCiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3YxNnFzKV9fViwgKF9fdjE2cXMpX19WLCAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3KSwgX192OGhpKTsKfQoKLy8vIFNpZ24tZXh0ZW5kcyBlYWNoIG9mIHRoZSBsb3dlciBmb3VyIDgtYml0IGludGVnZXIgZWxlbWVudHMgb2YgYQovLy8gICAgMTI4LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThdIHRvIDMyLWJpdCB2YWx1ZXMgYW5kIHJldHVybnMgdGhlbSBpbiBhCi8vLyAgICAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0uIFRoZSB1cHBlciB0d2VsdmUgZWxlbWVudHMgb2YgdGhlIGlucHV0Ci8vLyAgICB2ZWN0b3IgYXJlIHVudXNlZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUE1PVlNYQkQgLyBQTU9WU1hCRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX1YKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThdLiBUaGUgbG93ZXIgZm91ciA4LWJpdCBlbGVtZW50cyBhcmUKLy8vICAgIHNpZ24tZXh0ZW5kZWQgdG8gMzItYml0IHZhbHVlcy4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdIGNvbnRhaW5pbmcgdGhlIHNpZ24tZXh0ZW5kZWQgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY3Z0ZXBpOF9lcGkzMihfX20xMjhpIF9fVikKewogIC8qIFRoaXMgZnVuY3Rpb24gYWx3YXlzIHBlcmZvcm1zIGEgc2lnbmVkIGV4dGVuc2lvbiwgYnV0IF9fdjE2cWkgaXMgYSBjaGFyCiAgICAgd2hpY2ggbWF5IGJlIHNpZ25lZCBvciB1bnNpZ25lZCwgc28gdXNlIF9fdjE2cXMuICovCiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3YxNnFzKV9fViwgKF9fdjE2cXMpX19WLCAwLCAxLCAyLCAzKSwgX192NHNpKTsKfQoKLy8vIFNpZ24tZXh0ZW5kcyBlYWNoIG9mIHRoZSBsb3dlciB0d28gOC1iaXQgaW50ZWdlciBlbGVtZW50cyBvZiBhCi8vLyAgICAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9mIFsxNiB4IGk4XSB0byA2NC1iaXQgdmFsdWVzIGFuZCByZXR1cm5zIHRoZW0gaW4KLy8vICAgIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBpNjRdLiBUaGUgdXBwZXIgZm91cnRlZW4gZWxlbWVudHMgb2YgdGhlIGlucHV0Ci8vLyAgICB2ZWN0b3IgYXJlIHVudXNlZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUE1PVlNYQlEgLyBQTU9WU1hCUSA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX1YKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThdLiBUaGUgbG93ZXIgdHdvIDgtYml0IGVsZW1lbnRzIGFyZQovLy8gICAgc2lnbi1leHRlbmRlZCB0byA2NC1iaXQgdmFsdWVzLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0gY29udGFpbmluZyB0aGUgc2lnbi1leHRlbmRlZCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jdnRlcGk4X2VwaTY0KF9fbTEyOGkgX19WKQp7CiAgLyogVGhpcyBmdW5jdGlvbiBhbHdheXMgcGVyZm9ybXMgYSBzaWduZWQgZXh0ZW5zaW9uLCBidXQgX192MTZxaSBpcyBhIGNoYXIKICAgICB3aGljaCBtYXkgYmUgc2lnbmVkIG9yIHVuc2lnbmVkLCBzbyB1c2UgX192MTZxcy4gKi8KICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjE2cXMpX19WLCAoX192MTZxcylfX1YsIDAsIDEpLCBfX3YyZGkpOwp9CgovLy8gU2lnbi1leHRlbmRzIGVhY2ggb2YgdGhlIGxvd2VyIGZvdXIgMTYtYml0IGludGVnZXIgZWxlbWVudHMgb2YgYQovLy8gICAgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGkxNl0gdG8gMzItYml0IHZhbHVlcyBhbmQgcmV0dXJucyB0aGVtIGluCi8vLyAgICBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXS4gVGhlIHVwcGVyIGZvdXIgZWxlbWVudHMgb2YgdGhlIGlucHV0Ci8vLyAgICB2ZWN0b3IgYXJlIHVudXNlZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUE1PVlNYV0QgLyBQTU9WU1hXRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX1YKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZdLiBUaGUgbG93ZXIgZm91ciAxNi1iaXQgZWxlbWVudHMgYXJlCi8vLyAgICBzaWduLWV4dGVuZGVkIHRvIDMyLWJpdCB2YWx1ZXMuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXSBjb250YWluaW5nIHRoZSBzaWduLWV4dGVuZGVkIHZhbHVlcy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2N2dGVwaTE2X2VwaTMyKF9fbTEyOGkgX19WKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y4aGkpX19WLCAoX192OGhpKV9fViwgMCwgMSwgMiwgMyksIF9fdjRzaSk7Cn0KCi8vLyBTaWduLWV4dGVuZHMgZWFjaCBvZiB0aGUgbG93ZXIgdHdvIDE2LWJpdCBpbnRlZ2VyIGVsZW1lbnRzIG9mIGEKLy8vICAgIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpMTZdIHRvIDY0LWJpdCB2YWx1ZXMgYW5kIHJldHVybnMgdGhlbSBpbgovLy8gICAgYSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0uIFRoZSB1cHBlciBzaXggZWxlbWVudHMgb2YgdGhlIGlucHV0Ci8vLyAgICB2ZWN0b3IgYXJlIHVudXNlZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUE1PVlNYV1EgLyBQTU9WU1hXUSA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX1YKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZdLiBUaGUgbG93ZXIgdHdvIDE2LWJpdCBlbGVtZW50cyBhcmUKLy8vICAgICBzaWduLWV4dGVuZGVkIHRvIDY0LWJpdCB2YWx1ZXMuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggaTY0XSBjb250YWluaW5nIHRoZSBzaWduLWV4dGVuZGVkIHZhbHVlcy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2N2dGVwaTE2X2VwaTY0KF9fbTEyOGkgX19WKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y4aGkpX19WLCAoX192OGhpKV9fViwgMCwgMSksIF9fdjJkaSk7Cn0KCi8vLyBTaWduLWV4dGVuZHMgZWFjaCBvZiB0aGUgbG93ZXIgdHdvIDMyLWJpdCBpbnRlZ2VyIGVsZW1lbnRzIG9mIGEKLy8vICAgIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMzJdIHRvIDY0LWJpdCB2YWx1ZXMgYW5kIHJldHVybnMgdGhlbSBpbgovLy8gICAgYSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0uIFRoZSB1cHBlciB0d28gZWxlbWVudHMgb2YgdGhlIGlucHV0IHZlY3RvcgovLy8gICAgYXJlIHVudXNlZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUE1PVlNYRFEgLyBQTU9WU1hEUSA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX1YKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdLiBUaGUgbG93ZXIgdHdvIDMyLWJpdCBlbGVtZW50cyBhcmUKLy8vICAgIHNpZ24tZXh0ZW5kZWQgdG8gNjQtYml0IHZhbHVlcy4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBpNjRdIGNvbnRhaW5pbmcgdGhlIHNpZ24tZXh0ZW5kZWQgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY3Z0ZXBpMzJfZXBpNjQoX19tMTI4aSBfX1YpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjRzaSlfX1YsIChfX3Y0c2kpX19WLCAwLCAxKSwgX192MmRpKTsKfQoKLyogU1NFNCBQYWNrZWQgSW50ZWdlciBaZXJvLUV4dGVuc2lvbi4gICovCi8vLyBaZXJvLWV4dGVuZHMgZWFjaCBvZiB0aGUgbG93ZXIgZWlnaHQgOC1iaXQgaW50ZWdlciBlbGVtZW50cyBvZiBhCi8vLyAgICAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0gdG8gMTYtYml0IHZhbHVlcyBhbmQgcmV0dXJucyB0aGVtIGluIGEKLy8vICAgIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XS4gVGhlIHVwcGVyIGVpZ2h0IGVsZW1lbnRzIG9mIHRoZSBpbnB1dCB2ZWN0b3IKLy8vICAgIGFyZSB1bnVzZWQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBNT1ZaWEJXIC8gUE1PVlpYQlcgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19WCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XS4gVGhlIGxvd2VyIGVpZ2h0IDgtYml0IGVsZW1lbnRzIGFyZQovLy8gICAgemVyby1leHRlbmRlZCB0byAxNi1iaXQgdmFsdWVzLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGkxNl0gY29udGFpbmluZyB0aGUgemVyby1leHRlbmRlZCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jdnRlcHU4X2VwaTE2KF9fbTEyOGkgX19WKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3YxNnF1KV9fViwgKF9fdjE2cXUpX19WLCAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3KSwgX192OGhpKTsKfQoKLy8vIFplcm8tZXh0ZW5kcyBlYWNoIG9mIHRoZSBsb3dlciBmb3VyIDgtYml0IGludGVnZXIgZWxlbWVudHMgb2YgYQovLy8gICAgMTI4LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThdIHRvIDMyLWJpdCB2YWx1ZXMgYW5kIHJldHVybnMgdGhlbSBpbiBhCi8vLyAgICAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0uIFRoZSB1cHBlciB0d2VsdmUgZWxlbWVudHMgb2YgdGhlIGlucHV0Ci8vLyAgICB2ZWN0b3IgYXJlIHVudXNlZC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUE1PVlpYQkQgLyBQTU9WWlhCRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX1YKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThdLiBUaGUgbG93ZXIgZm91ciA4LWJpdCBlbGVtZW50cyBhcmUKLy8vICAgIHplcm8tZXh0ZW5kZWQgdG8gMzItYml0IHZhbHVlcy4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdIGNvbnRhaW5pbmcgdGhlIHplcm8tZXh0ZW5kZWQgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY3Z0ZXB1OF9lcGkzMihfX20xMjhpIF9fVikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5fY29udmVydHZlY3RvcihfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192MTZxdSlfX1YsIChfX3YxNnF1KV9fViwgMCwgMSwgMiwgMyksIF9fdjRzaSk7Cn0KCi8vLyBaZXJvLWV4dGVuZHMgZWFjaCBvZiB0aGUgbG93ZXIgdHdvIDgtYml0IGludGVnZXIgZWxlbWVudHMgb2YgYQovLy8gICAgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMTYgeCBpOF0gdG8gNjQtYml0IHZhbHVlcyBhbmQgcmV0dXJucyB0aGVtIGluCi8vLyAgICBhIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggaTY0XS4gVGhlIHVwcGVyIGZvdXJ0ZWVuIGVsZW1lbnRzIG9mIHRoZSBpbnB1dAovLy8gICAgdmVjdG9yIGFyZSB1bnVzZWQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBNT1ZaWEJRIC8gUE1PVlpYQlEgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19WCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XS4gVGhlIGxvd2VyIHR3byA4LWJpdCBlbGVtZW50cyBhcmUKLy8vICAgIHplcm8tZXh0ZW5kZWQgdG8gNjQtYml0IHZhbHVlcy4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBpNjRdIGNvbnRhaW5pbmcgdGhlIHplcm8tZXh0ZW5kZWQgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY3Z0ZXB1OF9lcGk2NChfX20xMjhpIF9fVikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5fY29udmVydHZlY3RvcihfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192MTZxdSlfX1YsIChfX3YxNnF1KV9fViwgMCwgMSksIF9fdjJkaSk7Cn0KCi8vLyBaZXJvLWV4dGVuZHMgZWFjaCBvZiB0aGUgbG93ZXIgZm91ciAxNi1iaXQgaW50ZWdlciBlbGVtZW50cyBvZiBhCi8vLyAgICAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaTE2XSB0byAzMi1iaXQgdmFsdWVzIGFuZCByZXR1cm5zIHRoZW0gaW4KLy8vICAgIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdLiBUaGUgdXBwZXIgZm91ciBlbGVtZW50cyBvZiB0aGUgaW5wdXQKLy8vICAgIHZlY3RvciBhcmUgdW51c2VkLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQTU9WWlhXRCAvIFBNT1ZaWFdEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fVgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGkxNl0uIFRoZSBsb3dlciBmb3VyIDE2LWJpdCBlbGVtZW50cyBhcmUKLy8vICAgIHplcm8tZXh0ZW5kZWQgdG8gMzItYml0IHZhbHVlcy4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdIGNvbnRhaW5pbmcgdGhlIHplcm8tZXh0ZW5kZWQgdmFsdWVzLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY3Z0ZXB1MTZfZXBpMzIoX19tMTI4aSBfX1YpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjhodSlfX1YsIChfX3Y4aHUpX19WLCAwLCAxLCAyLCAzKSwgX192NHNpKTsKfQoKLy8vIFplcm8tZXh0ZW5kcyBlYWNoIG9mIHRoZSBsb3dlciB0d28gMTYtYml0IGludGVnZXIgZWxlbWVudHMgb2YgYQovLy8gICAgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGkxNl0gdG8gNjQtYml0IHZhbHVlcyBhbmQgcmV0dXJucyB0aGVtIGluCi8vLyAgICBhIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggaTY0XS4gVGhlIHVwcGVyIHNpeCBlbGVtZW50cyBvZiB0aGUgaW5wdXQgdmVjdG9yCi8vLyAgICBhcmUgdW51c2VkLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQTU9WWlhXUSAvIFBNT1ZaWFdRIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fVgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGkxNl0uIFRoZSBsb3dlciB0d28gMTYtYml0IGVsZW1lbnRzIGFyZQovLy8gICAgemVyby1leHRlbmRlZCB0byA2NC1iaXQgdmFsdWVzLgovLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0gY29udGFpbmluZyB0aGUgemVyby1leHRlbmRlZCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jdnRlcHUxNl9lcGk2NChfX20xMjhpIF9fVikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5fY29udmVydHZlY3RvcihfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192OGh1KV9fViwgKF9fdjhodSlfX1YsIDAsIDEpLCBfX3YyZGkpOwp9CgovLy8gWmVyby1leHRlbmRzIGVhY2ggb2YgdGhlIGxvd2VyIHR3byAzMi1iaXQgaW50ZWdlciBlbGVtZW50cyBvZiBhCi8vLyAgICAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTMyXSB0byA2NC1iaXQgdmFsdWVzIGFuZCByZXR1cm5zIHRoZW0gaW4KLy8vICAgIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBpNjRdLiBUaGUgdXBwZXIgdHdvIGVsZW1lbnRzIG9mIHRoZSBpbnB1dCB2ZWN0b3IKLy8vICAgIGFyZSB1bnVzZWQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBNT1ZaWERRIC8gUE1PVlpYRFEgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19WCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXS4gVGhlIGxvd2VyIHR3byAzMi1iaXQgZWxlbWVudHMgYXJlCi8vLyAgICB6ZXJvLWV4dGVuZGVkIHRvIDY0LWJpdCB2YWx1ZXMuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggaTY0XSBjb250YWluaW5nIHRoZSB6ZXJvLWV4dGVuZGVkIHZhbHVlcy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2N2dGVwdTMyX2VwaTY0KF9fbTEyOGkgX19WKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y0c3UpX19WLCAoX192NHN1KV9fViwgMCwgMSksIF9fdjJkaSk7Cn0KCi8qIFNTRTQgUGFjayB3aXRoIFVuc2lnbmVkIFNhdHVyYXRpb24uICAqLwovLy8gQ29udmVydHMgMzItYml0IHNpZ25lZCBpbnRlZ2VycyBmcm9tIGJvdGggMTI4LWJpdCBpbnRlZ2VyIHZlY3RvcgovLy8gICAgb3BlcmFuZHMgaW50byAxNi1iaXQgdW5zaWduZWQgaW50ZWdlcnMsIGFuZCByZXR1cm5zIHRoZSBwYWNrZWQgcmVzdWx0LgovLy8gICAgVmFsdWVzIGdyZWF0ZXIgdGhhbiAweEZGRkYgYXJlIHNhdHVyYXRlZCB0byAweEZGRkYuIFZhbHVlcyBsZXNzIHRoYW4KLy8vICAgIDB4MDAwMCBhcmUgc2F0dXJhdGVkIHRvIDB4MDAwMC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEFDS1VTRFcgLyBQQUNLVVNEVyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX1YxCi8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXS4gRWFjaCAzMi1iaXQgZWxlbWVudCBpcyB0cmVhdGVkIGFzIGEKLy8vICAgIHNpZ25lZCBpbnRlZ2VyIGFuZCBpcyBjb252ZXJ0ZWQgdG8gYSAxNi1iaXQgdW5zaWduZWQgaW50ZWdlciB3aXRoCi8vLyAgICBzYXR1cmF0aW9uLiBWYWx1ZXMgZ3JlYXRlciB0aGFuIDB4RkZGRiBhcmUgc2F0dXJhdGVkIHRvIDB4RkZGRi4gVmFsdWVzCi8vLyAgICBsZXNzIHRoYW4gMHgwMDAwIGFyZSBzYXR1cmF0ZWQgdG8gMHgwMDAwLiBUaGUgY29udmVydGVkIFs0IHggaTE2XSB2YWx1ZXMKLy8vICAgIGFyZSB3cml0dGVuIHRvIHRoZSBsb3dlciA2NCBiaXRzIG9mIHRoZSByZXN1bHQuCi8vLyBccGFyYW0gX19WMgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0uIEVhY2ggMzItYml0IGVsZW1lbnQgaXMgdHJlYXRlZCBhcyBhCi8vLyAgICBzaWduZWQgaW50ZWdlciBhbmQgaXMgY29udmVydGVkIHRvIGEgMTYtYml0IHVuc2lnbmVkIGludGVnZXIgd2l0aAovLy8gICAgc2F0dXJhdGlvbi4gVmFsdWVzIGdyZWF0ZXIgdGhhbiAweEZGRkYgYXJlIHNhdHVyYXRlZCB0byAweEZGRkYuIFZhbHVlcwovLy8gICAgbGVzcyB0aGFuIDB4MDAwMCBhcmUgc2F0dXJhdGVkIHRvIDB4MDAwMC4gVGhlIGNvbnZlcnRlZCBbNCB4IGkxNl0gdmFsdWVzCi8vLyAgICBhcmUgd3JpdHRlbiB0byB0aGUgaGlnaGVyIDY0IGJpdHMgb2YgdGhlIHJlc3VsdC4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZdIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRlZCB2YWx1ZXMuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9wYWNrdXNfZXBpMzIoX19tMTI4aSBfX1YxLCBfX20xMjhpIF9fVjIpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3BhY2t1c2R3MTI4KChfX3Y0c2kpX19WMSwgKF9fdjRzaSlfX1YyKTsKfQoKLyogU1NFNCBNdWx0aXBsZSBQYWNrZWQgU3VtcyBvZiBBYnNvbHV0ZSBEaWZmZXJlbmNlLiAgKi8KLy8vIFN1YnRyYWN0cyA4LWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlcyBhbmQgY29tcHV0ZXMgdGhlIGFic29sdXRlCi8vLyAgICB2YWx1ZXMgb2YgdGhlIGRpZmZlcmVuY2VzIHRvIHRoZSBjb3JyZXNwb25kaW5nIGJpdHMgaW4gdGhlIGRlc3RpbmF0aW9uLgovLy8gICAgVGhlbiBzdW1zIG9mIHRoZSBhYnNvbHV0ZSBkaWZmZXJlbmNlcyBhcmUgcmV0dXJuZWQgYWNjb3JkaW5nIHRvIHRoZSBiaXQKLy8vICAgIGZpZWxkcyBpbiB0aGUgaW1tZWRpYXRlIG9wZXJhbmQuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFxjb2RlCi8vLyBfX20xMjhpIF9tbV9tcHNhZGJ3X2VwdTgoX19tMTI4aSBYLCBfX20xMjhpIFksIGNvbnN0IGludCBNKTsKLy8vIFxlbmRjb2RlCi8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTVBTQURCVyAvIE1QU0FEQlcgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gWAovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0uCi8vLyBccGFyYW0gWQovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0uCi8vLyBccGFyYW0gTQovLy8gICAgQW4gOC1iaXQgaW1tZWRpYXRlIG9wZXJhbmQgc3BlY2lmeWluZyBob3cgdGhlIGFic29sdXRlIGRpZmZlcmVuY2VzIGFyZSB0bwovLy8gICAgYmUgY2FsY3VsYXRlZCwgYWNjb3JkaW5nIHRvIHRoZSBmb2xsb3dpbmcgYWxnb3JpdGhtOgovLy8gICAgXGNvZGUKLy8vICAgIC8vIE0yIHJlcHJlc2VudHMgYml0IDIgb2YgdGhlIGltbWVkaWF0ZSBvcGVyYW5kCi8vLyAgICAvLyBNMTAgcmVwcmVzZW50cyBiaXRzIFsxOjBdIG9mIHRoZSBpbW1lZGlhdGUgb3BlcmFuZAovLy8gICAgaSA9IE0yICogNDsKLy8vICAgIGogPSBNMTAgKiA0OwovLy8gICAgZm9yIChrID0gMDsgayA8IDg7IGsgPSBrICsgMSkgewovLy8gICAgICBkMCA9IGFicyhYW2kgKyBrICsgMF0gLSBZW2ogKyAwXSk7Ci8vLyAgICAgIGQxID0gYWJzKFhbaSArIGsgKyAxXSAtIFlbaiArIDFdKTsKLy8vICAgICAgZDIgPSBhYnMoWFtpICsgayArIDJdIC0gWVtqICsgMl0pOwovLy8gICAgICBkMyA9IGFicyhYW2kgKyBrICsgM10gLSBZW2ogKyAzXSk7Ci8vLyAgICAgIHJba10gPSBkMCArIGQxICsgZDIgKyBkMzsKLy8vICAgIH0KLy8vICAgIFxlbmRjb2RlCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgc3VtcyBvZiB0aGUgc2V0cyBvZgovLy8gICAgYWJzb2x1dGUgZGlmZmVyZW5jZXMgYmV0d2VlbiBib3RoIG9wZXJhbmRzLgojZGVmaW5lIF9tbV9tcHNhZGJ3X2VwdTgoWCwgWSwgTSkgXAogICgoX19tMTI4aSkgX19idWlsdGluX2lhMzJfbXBzYWRidzEyOCgoX192MTZxaSkoX19tMTI4aSkoWCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpKF9fbTEyOGkpKFkpLCAoTSkpKQoKLy8vIEZpbmRzIHRoZSBtaW5pbXVtIHVuc2lnbmVkIDE2LWJpdCBlbGVtZW50IGluIHRoZSBpbnB1dCAxMjgtYml0Ci8vLyAgICB2ZWN0b3Igb2YgWzggeCB1MTZdIGFuZCByZXR1cm5zIGl0IGFuZCBhbG9uZyB3aXRoIGl0cyBpbmRleC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEhNSU5QT1NVVyAvIFBITUlOUE9TVVcgPC9jPgovLy8gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fVgovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IHUxNl0uCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmFsdWUgd2hlcmUgYml0cyBbMTU6MF0gY29udGFpbiB0aGUgbWluaW11bSB2YWx1ZSBmb3VuZAovLy8gICAgaW4gcGFyYW1ldGVyIFxhIF9fViwgYml0cyBbMTg6MTZdIGNvbnRhaW4gdGhlIGluZGV4IG9mIHRoZSBtaW5pbXVtIHZhbHVlCi8vLyAgICBhbmQgdGhlIHJlbWFpbmluZyBiaXRzIGFyZSBzZXQgdG8gMC4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX21pbnBvc19lcHUxNihfX20xMjhpIF9fVikKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcGhtaW5wb3N1dzEyOCgoX192OGhpKV9fVik7Cn0KCi8qIEhhbmRsZSB0aGUgc3NlNC4yIGRlZmluaXRpb25zIGhlcmUuICovCgovKiBUaGVzZSBkZWZpbml0aW9ucyBhcmUgbm9ybWFsbHkgaW4gbm1taW50cmluLmgsIGJ1dCBnY2MgcHV0cyB0aGVtIGluIGhlcmUKICAgc28gd2UnbGwgZG8gdGhlIHNhbWUuICAqLwoKI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUwojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUyBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oInNzZTQuMiIpKSkKCi8qIFRoZXNlIHNwZWNpZnkgdGhlIHR5cGUgb2YgZGF0YSB0aGF0IHdlJ3JlIGNvbXBhcmluZy4gICovCiNkZWZpbmUgX1NJRERfVUJZVEVfT1BTICAgICAgICAgICAgICAgICAweDAwCiNkZWZpbmUgX1NJRERfVVdPUkRfT1BTICAgICAgICAgICAgICAgICAweDAxCiNkZWZpbmUgX1NJRERfU0JZVEVfT1BTICAgICAgICAgICAgICAgICAweDAyCiNkZWZpbmUgX1NJRERfU1dPUkRfT1BTICAgICAgICAgICAgICAgICAweDAzCgovKiBUaGVzZSBzcGVjaWZ5IHRoZSB0eXBlIG9mIGNvbXBhcmlzb24gb3BlcmF0aW9uLiAgKi8KI2RlZmluZSBfU0lERF9DTVBfRVFVQUxfQU5ZICAgICAgICAgICAgIDB4MDAKI2RlZmluZSBfU0lERF9DTVBfUkFOR0VTICAgICAgICAgICAgICAgIDB4MDQKI2RlZmluZSBfU0lERF9DTVBfRVFVQUxfRUFDSCAgICAgICAgICAgIDB4MDgKI2RlZmluZSBfU0lERF9DTVBfRVFVQUxfT1JERVJFRCAgICAgICAgIDB4MGMKCi8qIFRoZXNlIG1hY3JvcyBzcGVjaWZ5IHRoZSBwb2xhcml0eSBvZiB0aGUgb3BlcmF0aW9uLiAgKi8KI2RlZmluZSBfU0lERF9QT1NJVElWRV9QT0xBUklUWSAgICAgICAgIDB4MDAKI2RlZmluZSBfU0lERF9ORUdBVElWRV9QT0xBUklUWSAgICAgICAgIDB4MTAKI2RlZmluZSBfU0lERF9NQVNLRURfUE9TSVRJVkVfUE9MQVJJVFkgIDB4MjAKI2RlZmluZSBfU0lERF9NQVNLRURfTkVHQVRJVkVfUE9MQVJJVFkgIDB4MzAKCi8qIFRoZXNlIG1hY3JvcyBhcmUgdXNlZCBpbiBfbW1fY21wWHN0cmkoKSB0byBzcGVjaWZ5IHRoZSByZXR1cm4uICAqLwojZGVmaW5lIF9TSUREX0xFQVNUX1NJR05JRklDQU5UICAgICAgICAgMHgwMAojZGVmaW5lIF9TSUREX01PU1RfU0lHTklGSUNBTlQgICAgICAgICAgMHg0MAoKLyogVGhlc2UgbWFjcm9zIGFyZSB1c2VkIGluIF9tbV9jbXBYc3RyaSgpIHRvIHNwZWNpZnkgdGhlIHJldHVybi4gICovCiNkZWZpbmUgX1NJRERfQklUX01BU0sgICAgICAgICAgICAgICAgICAweDAwCiNkZWZpbmUgX1NJRERfVU5JVF9NQVNLICAgICAgICAgICAgICAgICAweDQwCgovKiBTU0U0LjIgUGFja2VkIENvbXBhcmlzb24gSW50cmluc2ljcy4gICovCi8vLyBVc2VzIHRoZSBpbW1lZGlhdGUgb3BlcmFuZCBcYSBNIHRvIHBlcmZvcm0gYSBjb21wYXJpc29uIG9mIHN0cmluZwovLy8gICAgZGF0YSB3aXRoIGltcGxpY2l0bHkgZGVmaW5lZCBsZW5ndGhzIHRoYXQgaXMgY29udGFpbmVkIGluIHNvdXJjZSBvcGVyYW5kcwovLy8gICAgXGEgQSBhbmQgXGEgQi4gUmV0dXJucyBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgcmVwcmVzZW50aW5nIHRoZSByZXN1bHQKLy8vICAgIG1hc2sgb2YgdGhlIGNvbXBhcmlzb24uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFxjb2RlCi8vLyBfX20xMjhpIF9tbV9jbXBpc3RybShfX20xMjhpIEEsIF9fbTEyOGkgQiwgY29uc3QgaW50IE0pOwovLy8gXGVuZGNvZGUKLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQ01QSVNUUk0gLyBQQ01QSVNUUk0gPC9jPgovLy8gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIEEKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzIHRvIGJlCi8vLyAgICBjb21wYXJlZC4KLy8vIFxwYXJhbSBCCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcyB0byBiZQovLy8gICAgY29tcGFyZWQuCi8vLyBccGFyYW0gTQovLy8gICAgQW4gOC1iaXQgaW1tZWRpYXRlIG9wZXJhbmQgc3BlY2lmeWluZyB3aGV0aGVyIHRoZSBjaGFyYWN0ZXJzIGFyZSBieXRlcyBvcgovLy8gICAgd29yZHMsIHRoZSB0eXBlIG9mIGNvbXBhcmlzb24gdG8gcGVyZm9ybSwgYW5kIHRoZSBmb3JtYXQgb2YgdGhlIHJldHVybgovLy8gICAgdmFsdWUuIFxuCi8vLyAgICBCaXRzIFsxOjBdOiBEZXRlcm1pbmUgc291cmNlIGRhdGEgZm9ybWF0LiBcbgovLy8gICAgICAwMDogMTYgdW5zaWduZWQgYnl0ZXMgXG4KLy8vICAgICAgMDE6IDggdW5zaWduZWQgd29yZHMgXG4KLy8vICAgICAgMTA6IDE2IHNpZ25lZCBieXRlcyBcbgovLy8gICAgICAxMTogOCBzaWduZWQgd29yZHMgXG4KLy8vICAgIEJpdHMgWzM6Ml06IERldGVybWluZSBjb21wYXJpc29uIHR5cGUgYW5kIGFnZ3JlZ2F0aW9uIG1ldGhvZC4gXG4KLy8vICAgICAgMDA6IFN1YnNldDogRWFjaCBjaGFyYWN0ZXIgaW4gXGEgQiBpcyBjb21wYXJlZCBmb3IgZXF1YWxpdHkgd2l0aCBhbGwKLy8vICAgICAgICAgIHRoZSBjaGFyYWN0ZXJzIGluIFxhIEEuIFxuCi8vLyAgICAgIDAxOiBSYW5nZXM6IEVhY2ggY2hhcmFjdGVyIGluIFxhIEIgaXMgY29tcGFyZWQgdG8gXGEgQS4gVGhlIGNvbXBhcmlzb24KLy8vICAgICAgICAgIGJhc2lzIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCBmb3IgZXZlbi1pbmRleGVkIGVsZW1lbnRzIGluIFxhIEEsCi8vLyAgICAgICAgICBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIGZvciBvZGQtaW5kZXhlZCBlbGVtZW50cyBpbiBcYSBBLiBcbgovLy8gICAgICAxMDogTWF0Y2g6IENvbXBhcmUgZWFjaCBwYWlyIG9mIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVycyBpbiBcYSBBIGFuZAovLy8gICAgICAgICAgXGEgQiBmb3IgZXF1YWxpdHkuIFxuCi8vLyAgICAgIDExOiBTdWJzdHJpbmc6IFNlYXJjaCBcYSBCIGZvciBzdWJzdHJpbmcgbWF0Y2hlcyBvZiBcYSBBLiBcbgovLy8gICAgQml0cyBbNTo0XTogRGV0ZXJtaW5lIHdoZXRoZXIgdG8gcGVyZm9ybSBhIG9uZSdzIGNvbXBsZW1lbnQgb24gdGhlIGJpdAovLy8gICAgICAgICAgICAgICAgbWFzayBvZiB0aGUgY29tcGFyaXNvbiByZXN1bHRzLiBcbgovLy8gICAgICAwMDogTm8gZWZmZWN0LiBcbgovLy8gICAgICAwMTogTmVnYXRlIHRoZSBiaXQgbWFzay4gXG4KLy8vICAgICAgMTA6IE5vIGVmZmVjdC4gXG4KLy8vICAgICAgMTE6IE5lZ2F0ZSB0aGUgYml0IG1hc2sgb25seSBmb3IgYml0cyB3aXRoIGFuIGluZGV4IGxlc3MgdGhhbiBvciBlcXVhbAovLy8gICAgICAgICAgdG8gdGhlIHNpemUgb2YgXGEgQSBvciBcYSBCLiBcbgovLy8gICAgQml0IFs2XTogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSByZXN1bHQgaXMgemVyby1leHRlbmRlZCBvciBleHBhbmRlZCB0byAxNgovLy8gICAgICAgICAgICAgYnl0ZXMuIFxuCi8vLyAgICAgIDA6IFRoZSByZXN1bHQgaXMgemVyby1leHRlbmRlZCB0byAxNiBieXRlcy4gXG4KLy8vICAgICAgMTogVGhlIHJlc3VsdCBpcyBleHBhbmRlZCB0byAxNiBieXRlcyAodGhpcyBleHBhbnNpb24gaXMgcGVyZm9ybWVkIGJ5Ci8vLyAgICAgICAgIHJlcGVhdGluZyBlYWNoIGJpdCA4IG9yIDE2IHRpbWVzKS4KLy8vIFxyZXR1cm5zIFJldHVybnMgYSAxMjgtYml0IGludGVnZXIgdmVjdG9yIHJlcHJlc2VudGluZyB0aGUgcmVzdWx0IG1hc2sgb2YKLy8vICAgIHRoZSBjb21wYXJpc29uLgojZGVmaW5lIF9tbV9jbXBpc3RybShBLCBCLCBNKSBcCiAgKChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BjbXBpc3RybTEyOCgoX192MTZxaSkoX19tMTI4aSkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKShfX20xMjhpKShCKSwgKGludCkoTSkpKQoKLy8vIFVzZXMgdGhlIGltbWVkaWF0ZSBvcGVyYW5kIFxhIE0gdG8gcGVyZm9ybSBhIGNvbXBhcmlzb24gb2Ygc3RyaW5nCi8vLyAgICBkYXRhIHdpdGggaW1wbGljaXRseSBkZWZpbmVkIGxlbmd0aHMgdGhhdCBpcyBjb250YWluZWQgaW4gc291cmNlIG9wZXJhbmRzCi8vLyAgICBcYSBBIGFuZCBcYSBCLiBSZXR1cm5zIGFuIGludGVnZXIgcmVwcmVzZW50aW5nIHRoZSByZXN1bHQgaW5kZXggb2YgdGhlCi8vLyAgICBjb21wYXJpc29uLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBcY29kZQovLy8gaW50IF9tbV9jbXBpc3RyaShfX20xMjhpIEEsIF9fbTEyOGkgQiwgY29uc3QgaW50IE0pOwovLy8gXGVuZGNvZGUKLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQ01QSVNUUkkgLyBQQ01QSVNUUkkgPC9jPgovLy8gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIEEKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzIHRvIGJlCi8vLyAgICBjb21wYXJlZC4KLy8vIFxwYXJhbSBCCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcyB0byBiZQovLy8gICAgY29tcGFyZWQuCi8vLyBccGFyYW0gTQovLy8gICAgQW4gOC1iaXQgaW1tZWRpYXRlIG9wZXJhbmQgc3BlY2lmeWluZyB3aGV0aGVyIHRoZSBjaGFyYWN0ZXJzIGFyZSBieXRlcyBvcgovLy8gICAgd29yZHMsIHRoZSB0eXBlIG9mIGNvbXBhcmlzb24gdG8gcGVyZm9ybSwgYW5kIHRoZSBmb3JtYXQgb2YgdGhlIHJldHVybgovLy8gICAgdmFsdWUuIFxuCi8vLyAgICBCaXRzIFsxOjBdOiBEZXRlcm1pbmUgc291cmNlIGRhdGEgZm9ybWF0LiBcbgovLy8gICAgICAwMDogMTYgdW5zaWduZWQgYnl0ZXMgXG4KLy8vICAgICAgMDE6IDggdW5zaWduZWQgd29yZHMgXG4KLy8vICAgICAgMTA6IDE2IHNpZ25lZCBieXRlcyBcbgovLy8gICAgICAxMTogOCBzaWduZWQgd29yZHMgXG4KLy8vICAgIEJpdHMgWzM6Ml06IERldGVybWluZSBjb21wYXJpc29uIHR5cGUgYW5kIGFnZ3JlZ2F0aW9uIG1ldGhvZC4gXG4KLy8vICAgICAgMDA6IFN1YnNldDogRWFjaCBjaGFyYWN0ZXIgaW4gXGEgQiBpcyBjb21wYXJlZCBmb3IgZXF1YWxpdHkgd2l0aCBhbGwKLy8vICAgICAgICAgIHRoZSBjaGFyYWN0ZXJzIGluIFxhIEEuIFxuCi8vLyAgICAgIDAxOiBSYW5nZXM6IEVhY2ggY2hhcmFjdGVyIGluIFxhIEIgaXMgY29tcGFyZWQgdG8gXGEgQS4gVGhlIGNvbXBhcmlzb24KLy8vICAgICAgICAgIGJhc2lzIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCBmb3IgZXZlbi1pbmRleGVkIGVsZW1lbnRzIGluIFxhIEEsCi8vLyAgICAgICAgICBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIGZvciBvZGQtaW5kZXhlZCBlbGVtZW50cyBpbiBcYSBBLiBcbgovLy8gICAgICAxMDogTWF0Y2g6IENvbXBhcmUgZWFjaCBwYWlyIG9mIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVycyBpbiBcYSBBIGFuZAovLy8gICAgICAgICAgXGEgQiBmb3IgZXF1YWxpdHkuIFxuCi8vLyAgICAgIDExOiBTdWJzdHJpbmc6IFNlYXJjaCBCIGZvciBzdWJzdHJpbmcgbWF0Y2hlcyBvZiBcYSBBLiBcbgovLy8gICAgQml0cyBbNTo0XTogRGV0ZXJtaW5lIHdoZXRoZXIgdG8gcGVyZm9ybSBhIG9uZSdzIGNvbXBsZW1lbnQgb24gdGhlIGJpdAovLy8gICAgICAgICAgICAgICAgbWFzayBvZiB0aGUgY29tcGFyaXNvbiByZXN1bHRzLiBcbgovLy8gICAgICAwMDogTm8gZWZmZWN0LiBcbgovLy8gICAgICAwMTogTmVnYXRlIHRoZSBiaXQgbWFzay4gXG4KLy8vICAgICAgMTA6IE5vIGVmZmVjdC4gXG4KLy8vICAgICAgMTE6IE5lZ2F0ZSB0aGUgYml0IG1hc2sgb25seSBmb3IgYml0cyB3aXRoIGFuIGluZGV4IGxlc3MgdGhhbiBvciBlcXVhbAovLy8gICAgICAgICAgdG8gdGhlIHNpemUgb2YgXGEgQSBvciBcYSBCLiBcbgovLy8gICAgQml0IFs2XTogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBpbmRleCBvZiB0aGUgbG93ZXN0IHNldCBiaXQgb3IgdGhlCi8vLyAgICAgICAgICAgICBoaWdoZXN0IHNldCBiaXQgaXMgcmV0dXJuZWQuIFxuCi8vLyAgICAgIDA6IFRoZSBpbmRleCBvZiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgc2V0IGJpdC4gXG4KLy8vICAgICAgMTogVGhlIGluZGV4IG9mIHRoZSBtb3N0IHNpZ25pZmljYW50IHNldCBiaXQuIFxuCi8vLyBccmV0dXJucyBSZXR1cm5zIGFuIGludGVnZXIgcmVwcmVzZW50aW5nIHRoZSByZXN1bHQgaW5kZXggb2YgdGhlIGNvbXBhcmlzb24uCiNkZWZpbmUgX21tX2NtcGlzdHJpKEEsIEIsIE0pIFwKICAoKGludClfX2J1aWx0aW5faWEzMl9wY21waXN0cmkxMjgoKF9fdjE2cWkpKF9fbTEyOGkpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpKF9fbTEyOGkpKEIpLCAoaW50KShNKSkpCgovLy8gVXNlcyB0aGUgaW1tZWRpYXRlIG9wZXJhbmQgXGEgTSB0byBwZXJmb3JtIGEgY29tcGFyaXNvbiBvZiBzdHJpbmcKLy8vICAgIGRhdGEgd2l0aCBleHBsaWNpdGx5IGRlZmluZWQgbGVuZ3RocyB0aGF0IGlzIGNvbnRhaW5lZCBpbiBzb3VyY2Ugb3BlcmFuZHMKLy8vICAgIFxhIEEgYW5kIFxhIEIuIFJldHVybnMgYSAxMjgtYml0IGludGVnZXIgdmVjdG9yIHJlcHJlc2VudGluZyB0aGUgcmVzdWx0Ci8vLyAgICBtYXNrIG9mIHRoZSBjb21wYXJpc29uLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBcY29kZQovLy8gX19tMTI4aSBfbW1fY21wZXN0cm0oX19tMTI4aSBBLCBpbnQgTEEsIF9fbTEyOGkgQiwgaW50IExCLCBjb25zdCBpbnQgTSk7Ci8vLyBcZW5kY29kZQovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBDTVBFU1RSTSAvIFBDTVBFU1RSTSA8L2M+Ci8vLyBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gQQovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMgdG8gYmUKLy8vICAgIGNvbXBhcmVkLgovLy8gXHBhcmFtIExBCi8vLyAgICBBbiBpbnRlZ2VyIHRoYXQgc3BlY2lmaWVzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBpbiBcYSBBLgovLy8gXHBhcmFtIEIKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzIHRvIGJlCi8vLyAgICBjb21wYXJlZC4KLy8vIFxwYXJhbSBMQgovLy8gICAgQW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgaW4gXGEgQi4KLy8vIFxwYXJhbSBNCi8vLyAgICBBbiA4LWJpdCBpbW1lZGlhdGUgb3BlcmFuZCBzcGVjaWZ5aW5nIHdoZXRoZXIgdGhlIGNoYXJhY3RlcnMgYXJlIGJ5dGVzIG9yCi8vLyAgICB3b3JkcywgdGhlIHR5cGUgb2YgY29tcGFyaXNvbiB0byBwZXJmb3JtLCBhbmQgdGhlIGZvcm1hdCBvZiB0aGUgcmV0dXJuCi8vLyAgICB2YWx1ZS4gXG4KLy8vICAgIEJpdHMgWzE6MF06IERldGVybWluZSBzb3VyY2UgZGF0YSBmb3JtYXQuIFxuCi8vLyAgICAgIDAwOiAxNiB1bnNpZ25lZCBieXRlcyBcbgovLy8gICAgICAwMTogOCB1bnNpZ25lZCB3b3JkcyBcbgovLy8gICAgICAxMDogMTYgc2lnbmVkIGJ5dGVzIFxuCi8vLyAgICAgIDExOiA4IHNpZ25lZCB3b3JkcyBcbgovLy8gICAgQml0cyBbMzoyXTogRGV0ZXJtaW5lIGNvbXBhcmlzb24gdHlwZSBhbmQgYWdncmVnYXRpb24gbWV0aG9kLiBcbgovLy8gICAgICAwMDogU3Vic2V0OiBFYWNoIGNoYXJhY3RlciBpbiBcYSBCIGlzIGNvbXBhcmVkIGZvciBlcXVhbGl0eSB3aXRoIGFsbAovLy8gICAgICAgICAgdGhlIGNoYXJhY3RlcnMgaW4gXGEgQS4gXG4KLy8vICAgICAgMDE6IFJhbmdlczogRWFjaCBjaGFyYWN0ZXIgaW4gXGEgQiBpcyBjb21wYXJlZCB0byBcYSBBLiBUaGUgY29tcGFyaXNvbgovLy8gICAgICAgICAgYmFzaXMgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIGZvciBldmVuLWluZGV4ZWQgZWxlbWVudHMgaW4gXGEgQSwKLy8vICAgICAgICAgIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgZm9yIG9kZC1pbmRleGVkIGVsZW1lbnRzIGluIFxhIEEuIFxuCi8vLyAgICAgIDEwOiBNYXRjaDogQ29tcGFyZSBlYWNoIHBhaXIgb2YgY29ycmVzcG9uZGluZyBjaGFyYWN0ZXJzIGluIFxhIEEgYW5kCi8vLyAgICAgICAgICBcYSBCIGZvciBlcXVhbGl0eS4gXG4KLy8vICAgICAgMTE6IFN1YnN0cmluZzogU2VhcmNoIFxhIEIgZm9yIHN1YnN0cmluZyBtYXRjaGVzIG9mIFxhIEEuIFxuCi8vLyAgICBCaXRzIFs1OjRdOiBEZXRlcm1pbmUgd2hldGhlciB0byBwZXJmb3JtIGEgb25lJ3MgY29tcGxlbWVudCBvbiB0aGUgYml0Ci8vLyAgICAgICAgICAgICAgICBtYXNrIG9mIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuIFxuCi8vLyAgICAgIDAwOiBObyBlZmZlY3QuIFxuCi8vLyAgICAgIDAxOiBOZWdhdGUgdGhlIGJpdCBtYXNrLiBcbgovLy8gICAgICAxMDogTm8gZWZmZWN0LiBcbgovLy8gICAgICAxMTogTmVnYXRlIHRoZSBiaXQgbWFzayBvbmx5IGZvciBiaXRzIHdpdGggYW4gaW5kZXggbGVzcyB0aGFuIG9yIGVxdWFsCi8vLyAgICAgICAgICB0byB0aGUgc2l6ZSBvZiBcYSBBIG9yIFxhIEIuIFxuCi8vLyAgICBCaXQgWzZdOiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHJlc3VsdCBpcyB6ZXJvLWV4dGVuZGVkIG9yIGV4cGFuZGVkIHRvIDE2Ci8vLyAgICAgICAgICAgICBieXRlcy4gXG4KLy8vICAgICAgMDogVGhlIHJlc3VsdCBpcyB6ZXJvLWV4dGVuZGVkIHRvIDE2IGJ5dGVzLiBcbgovLy8gICAgICAxOiBUaGUgcmVzdWx0IGlzIGV4cGFuZGVkIHRvIDE2IGJ5dGVzICh0aGlzIGV4cGFuc2lvbiBpcyBwZXJmb3JtZWQgYnkKLy8vICAgICAgICAgcmVwZWF0aW5nIGVhY2ggYml0IDggb3IgMTYgdGltZXMpLiBcbgovLy8gXHJldHVybnMgUmV0dXJucyBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgcmVwcmVzZW50aW5nIHRoZSByZXN1bHQgbWFzayBvZgovLy8gICAgdGhlIGNvbXBhcmlzb24uCiNkZWZpbmUgX21tX2NtcGVzdHJtKEEsIExBLCBCLCBMQiwgTSkgXAogICgoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wY21wZXN0cm0xMjgoKF9fdjE2cWkpKF9fbTEyOGkpKEEpLCAoaW50KShMQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKShfX20xMjhpKShCKSwgKGludCkoTEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShNKSkpCgovLy8gVXNlcyB0aGUgaW1tZWRpYXRlIG9wZXJhbmQgXGEgTSB0byBwZXJmb3JtIGEgY29tcGFyaXNvbiBvZiBzdHJpbmcKLy8vICAgIGRhdGEgd2l0aCBleHBsaWNpdGx5IGRlZmluZWQgbGVuZ3RocyB0aGF0IGlzIGNvbnRhaW5lZCBpbiBzb3VyY2Ugb3BlcmFuZHMKLy8vICAgIFxhIEEgYW5kIFxhIEIuIFJldHVybnMgYW4gaW50ZWdlciByZXByZXNlbnRpbmcgdGhlIHJlc3VsdCBpbmRleCBvZiB0aGUKLy8vICAgIGNvbXBhcmlzb24uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFxjb2RlCi8vLyBpbnQgX21tX2NtcGVzdHJpKF9fbTEyOGkgQSwgaW50IExBLCBfX20xMjhpIEIsIGludCBMQiwgY29uc3QgaW50IE0pOwovLy8gXGVuZGNvZGUKLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQ01QRVNUUkkgLyBQQ01QRVNUUkkgPC9jPgovLy8gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIEEKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzIHRvIGJlCi8vLyAgICBjb21wYXJlZC4KLy8vIFxwYXJhbSBMQQovLy8gICAgQW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgaW4gXGEgQS4KLy8vIFxwYXJhbSBCCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcyB0byBiZQovLy8gICAgY29tcGFyZWQuCi8vLyBccGFyYW0gTEIKLy8vICAgIEFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIGluIFxhIEIuCi8vLyBccGFyYW0gTQovLy8gICAgQW4gOC1iaXQgaW1tZWRpYXRlIG9wZXJhbmQgc3BlY2lmeWluZyB3aGV0aGVyIHRoZSBjaGFyYWN0ZXJzIGFyZSBieXRlcyBvcgovLy8gICAgd29yZHMsIHRoZSB0eXBlIG9mIGNvbXBhcmlzb24gdG8gcGVyZm9ybSwgYW5kIHRoZSBmb3JtYXQgb2YgdGhlIHJldHVybgovLy8gICAgdmFsdWUuIFxuCi8vLyAgICBCaXRzIFsxOjBdOiBEZXRlcm1pbmUgc291cmNlIGRhdGEgZm9ybWF0LiBcbgovLy8gICAgICAwMDogMTYgdW5zaWduZWQgYnl0ZXMgXG4KLy8vICAgICAgMDE6IDggdW5zaWduZWQgd29yZHMgXG4KLy8vICAgICAgMTA6IDE2IHNpZ25lZCBieXRlcyBcbgovLy8gICAgICAxMTogOCBzaWduZWQgd29yZHMgXG4KLy8vICAgIEJpdHMgWzM6Ml06IERldGVybWluZSBjb21wYXJpc29uIHR5cGUgYW5kIGFnZ3JlZ2F0aW9uIG1ldGhvZC4gXG4KLy8vICAgICAgMDA6IFN1YnNldDogRWFjaCBjaGFyYWN0ZXIgaW4gXGEgQiBpcyBjb21wYXJlZCBmb3IgZXF1YWxpdHkgd2l0aCBhbGwKLy8vICAgICAgICAgIHRoZSBjaGFyYWN0ZXJzIGluIFxhIEEuIFxuCi8vLyAgICAgIDAxOiBSYW5nZXM6IEVhY2ggY2hhcmFjdGVyIGluIFxhIEIgaXMgY29tcGFyZWQgdG8gXGEgQS4gVGhlIGNvbXBhcmlzb24KLy8vICAgICAgICAgIGJhc2lzIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCBmb3IgZXZlbi1pbmRleGVkIGVsZW1lbnRzIGluIFxhIEEsCi8vLyAgICAgICAgICBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIGZvciBvZGQtaW5kZXhlZCBlbGVtZW50cyBpbiBcYSBBLiBcbgovLy8gICAgICAxMDogTWF0Y2g6IENvbXBhcmUgZWFjaCBwYWlyIG9mIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVycyBpbiBcYSBBIGFuZAovLy8gICAgICAgICAgXGEgQiBmb3IgZXF1YWxpdHkuIFxuCi8vLyAgICAgIDExOiBTdWJzdHJpbmc6IFNlYXJjaCBCIGZvciBzdWJzdHJpbmcgbWF0Y2hlcyBvZiBcYSBBLiBcbgovLy8gICAgQml0cyBbNTo0XTogRGV0ZXJtaW5lIHdoZXRoZXIgdG8gcGVyZm9ybSBhIG9uZSdzIGNvbXBsZW1lbnQgb24gdGhlIGJpdAovLy8gICAgICAgICAgICAgICAgbWFzayBvZiB0aGUgY29tcGFyaXNvbiByZXN1bHRzLiBcbgovLy8gICAgICAwMDogTm8gZWZmZWN0LiBcbgovLy8gICAgICAwMTogTmVnYXRlIHRoZSBiaXQgbWFzay4gXG4KLy8vICAgICAgMTA6IE5vIGVmZmVjdC4gXG4KLy8vICAgICAgMTE6IE5lZ2F0ZSB0aGUgYml0IG1hc2sgb25seSBmb3IgYml0cyB3aXRoIGFuIGluZGV4IGxlc3MgdGhhbiBvciBlcXVhbAovLy8gICAgICAgICAgdG8gdGhlIHNpemUgb2YgXGEgQSBvciBcYSBCLiBcbgovLy8gICAgQml0IFs2XTogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBpbmRleCBvZiB0aGUgbG93ZXN0IHNldCBiaXQgb3IgdGhlCi8vLyAgICAgICAgICAgICBoaWdoZXN0IHNldCBiaXQgaXMgcmV0dXJuZWQuIFxuCi8vLyAgICAgIDA6IFRoZSBpbmRleCBvZiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgc2V0IGJpdC4gXG4KLy8vICAgICAgMTogVGhlIGluZGV4IG9mIHRoZSBtb3N0IHNpZ25pZmljYW50IHNldCBiaXQuIFxuCi8vLyBccmV0dXJucyBSZXR1cm5zIGFuIGludGVnZXIgcmVwcmVzZW50aW5nIHRoZSByZXN1bHQgaW5kZXggb2YgdGhlIGNvbXBhcmlzb24uCiNkZWZpbmUgX21tX2NtcGVzdHJpKEEsIExBLCBCLCBMQiwgTSkgXAogICgoaW50KV9fYnVpbHRpbl9pYTMyX3BjbXBlc3RyaTEyOCgoX192MTZxaSkoX19tMTI4aSkoQSksIChpbnQpKExBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZxaSkoX19tMTI4aSkoQiksIChpbnQpKExCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShNKSkpCgovKiBTU0U0LjIgUGFja2VkIENvbXBhcmlzb24gSW50cmluc2ljcyBhbmQgRUZsYWcgUmVhZGluZy4gICovCi8vLyBVc2VzIHRoZSBpbW1lZGlhdGUgb3BlcmFuZCBcYSBNIHRvIHBlcmZvcm0gYSBjb21wYXJpc29uIG9mIHN0cmluZwovLy8gICAgZGF0YSB3aXRoIGltcGxpY2l0bHkgZGVmaW5lZCBsZW5ndGhzIHRoYXQgaXMgY29udGFpbmVkIGluIHNvdXJjZSBvcGVyYW5kcwovLy8gICAgXGEgQSBhbmQgXGEgQi4gUmV0dXJucyAxIGlmIHRoZSBiaXQgbWFzayBpcyB6ZXJvIGFuZCB0aGUgbGVuZ3RoIG9mIHRoZQovLy8gICAgc3RyaW5nIGluIFxhIEIgaXMgdGhlIG1heGltdW0sIG90aGVyd2lzZSwgcmV0dXJucyAwLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBcY29kZQovLy8gaW50IF9tbV9jbXBpc3RyYShfX20xMjhpIEEsIF9fbTEyOGkgQiwgY29uc3QgaW50IE0pOwovLy8gXGVuZGNvZGUKLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQ01QSVNUUkkgLyBQQ01QSVNUUkkgPC9jPgovLy8gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIEEKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzIHRvIGJlCi8vLyAgICBjb21wYXJlZC4KLy8vIFxwYXJhbSBCCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcyB0byBiZQovLy8gICAgY29tcGFyZWQuCi8vLyBccGFyYW0gTQovLy8gICAgQW4gOC1iaXQgaW1tZWRpYXRlIG9wZXJhbmQgc3BlY2lmeWluZyB3aGV0aGVyIHRoZSBjaGFyYWN0ZXJzIGFyZSBieXRlcyBvcgovLy8gICAgd29yZHMgYW5kIHRoZSB0eXBlIG9mIGNvbXBhcmlzb24gdG8gcGVyZm9ybS4gXG4KLy8vICAgIEJpdHMgWzE6MF06IERldGVybWluZSBzb3VyY2UgZGF0YSBmb3JtYXQuIFxuCi8vLyAgICAgIDAwOiAxNiB1bnNpZ25lZCBieXRlcyBcbgovLy8gICAgICAwMTogOCB1bnNpZ25lZCB3b3JkcyBcbgovLy8gICAgICAxMDogMTYgc2lnbmVkIGJ5dGVzIFxuCi8vLyAgICAgIDExOiA4IHNpZ25lZCB3b3JkcyBcbgovLy8gICAgQml0cyBbMzoyXTogRGV0ZXJtaW5lIGNvbXBhcmlzb24gdHlwZSBhbmQgYWdncmVnYXRpb24gbWV0aG9kLiBcbgovLy8gICAgICAwMDogU3Vic2V0OiBFYWNoIGNoYXJhY3RlciBpbiBcYSBCIGlzIGNvbXBhcmVkIGZvciBlcXVhbGl0eSB3aXRoIGFsbAovLy8gICAgICAgICAgdGhlIGNoYXJhY3RlcnMgaW4gXGEgQS4gXG4KLy8vICAgICAgMDE6IFJhbmdlczogRWFjaCBjaGFyYWN0ZXIgaW4gXGEgQiBpcyBjb21wYXJlZCB0byBcYSBBLiBUaGUgY29tcGFyaXNvbgovLy8gICAgICAgICAgYmFzaXMgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIGZvciBldmVuLWluZGV4ZWQgZWxlbWVudHMgaW4gXGEgQSwKLy8vICAgICAgICAgIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgZm9yIG9kZC1pbmRleGVkIGVsZW1lbnRzIGluIFxhIEEuIFxuCi8vLyAgICAgIDEwOiBNYXRjaDogQ29tcGFyZSBlYWNoIHBhaXIgb2YgY29ycmVzcG9uZGluZyBjaGFyYWN0ZXJzIGluIFxhIEEgYW5kCi8vLyAgICAgICAgICBcYSBCIGZvciBlcXVhbGl0eS4gXG4KLy8vICAgICAgMTE6IFN1YnN0cmluZzogU2VhcmNoIFxhIEIgZm9yIHN1YnN0cmluZyBtYXRjaGVzIG9mIFxhIEEuIFxuCi8vLyAgICBCaXRzIFs1OjRdOiBEZXRlcm1pbmUgd2hldGhlciB0byBwZXJmb3JtIGEgb25lJ3MgY29tcGxlbWVudCBvbiB0aGUgYml0Ci8vLyAgICAgICAgICAgICAgICBtYXNrIG9mIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuIFxuCi8vLyAgICAgIDAwOiBObyBlZmZlY3QuIFxuCi8vLyAgICAgIDAxOiBOZWdhdGUgdGhlIGJpdCBtYXNrLiBcbgovLy8gICAgICAxMDogTm8gZWZmZWN0LiBcbgovLy8gICAgICAxMTogTmVnYXRlIHRoZSBiaXQgbWFzayBvbmx5IGZvciBiaXRzIHdpdGggYW4gaW5kZXggbGVzcyB0aGFuIG9yIGVxdWFsCi8vLyAgICAgICAgICB0byB0aGUgc2l6ZSBvZiBcYSBBIG9yIFxhIEIuIFxuCi8vLyBccmV0dXJucyBSZXR1cm5zIDEgaWYgdGhlIGJpdCBtYXNrIGlzIHplcm8gYW5kIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBpbgovLy8gICAgXGEgQiBpcyB0aGUgbWF4aW11bTsgb3RoZXJ3aXNlLCByZXR1cm5zIDAuCiNkZWZpbmUgX21tX2NtcGlzdHJhKEEsIEIsIE0pIFwKICAoKGludClfX2J1aWx0aW5faWEzMl9wY21waXN0cmlhMTI4KChfX3YxNnFpKShfX20xMjhpKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpKF9fbTEyOGkpKEIpLCAoaW50KShNKSkpCgovLy8gVXNlcyB0aGUgaW1tZWRpYXRlIG9wZXJhbmQgXGEgTSB0byBwZXJmb3JtIGEgY29tcGFyaXNvbiBvZiBzdHJpbmcKLy8vICAgIGRhdGEgd2l0aCBpbXBsaWNpdGx5IGRlZmluZWQgbGVuZ3RocyB0aGF0IGlzIGNvbnRhaW5lZCBpbiBzb3VyY2Ugb3BlcmFuZHMKLy8vICAgIFxhIEEgYW5kIFxhIEIuIFJldHVybnMgMSBpZiB0aGUgYml0IG1hc2sgaXMgbm9uLXplcm8sIG90aGVyd2lzZSwgcmV0dXJucwovLy8gICAgMC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gXGNvZGUKLy8vIGludCBfbW1fY21waXN0cmMoX19tMTI4aSBBLCBfX20xMjhpIEIsIGNvbnN0IGludCBNKTsKLy8vIFxlbmRjb2RlCi8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUENNUElTVFJJIC8gUENNUElTVFJJIDwvYz4KLy8vIGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBBCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcyB0byBiZQovLy8gICAgY29tcGFyZWQuCi8vLyBccGFyYW0gQgovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMgdG8gYmUKLy8vICAgIGNvbXBhcmVkLgovLy8gXHBhcmFtIE0KLy8vICAgIEFuIDgtYml0IGltbWVkaWF0ZSBvcGVyYW5kIHNwZWNpZnlpbmcgd2hldGhlciB0aGUgY2hhcmFjdGVycyBhcmUgYnl0ZXMgb3IKLy8vICAgIHdvcmRzIGFuZCB0aGUgdHlwZSBvZiBjb21wYXJpc29uIHRvIHBlcmZvcm0uIFxuCi8vLyAgICBCaXRzIFsxOjBdOiBEZXRlcm1pbmUgc291cmNlIGRhdGEgZm9ybWF0LiBcbgovLy8gICAgICAwMDogMTYgdW5zaWduZWQgYnl0ZXMgXG4KLy8vICAgICAgMDE6IDggdW5zaWduZWQgd29yZHMgXG4KLy8vICAgICAgMTA6IDE2IHNpZ25lZCBieXRlcyBcbgovLy8gICAgICAxMTogOCBzaWduZWQgd29yZHMgXG4KLy8vICAgIEJpdHMgWzM6Ml06IERldGVybWluZSBjb21wYXJpc29uIHR5cGUgYW5kIGFnZ3JlZ2F0aW9uIG1ldGhvZC4gXG4KLy8vICAgICAgMDA6IFN1YnNldDogRWFjaCBjaGFyYWN0ZXIgaW4gXGEgQiBpcyBjb21wYXJlZCBmb3IgZXF1YWxpdHkgd2l0aCBhbGwKLy8vICAgICAgICAgIHRoZSBjaGFyYWN0ZXJzIGluIFxhIEEuIFxuCi8vLyAgICAgIDAxOiBSYW5nZXM6IEVhY2ggY2hhcmFjdGVyIGluIFxhIEIgaXMgY29tcGFyZWQgdG8gXGEgQS4gVGhlIGNvbXBhcmlzb24KLy8vICAgICAgICAgIGJhc2lzIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCBmb3IgZXZlbi1pbmRleGVkIGVsZW1lbnRzIGluIFxhIEEsCi8vLyAgICAgICAgICBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIGZvciBvZGQtaW5kZXhlZCBlbGVtZW50cyBpbiBcYSBBLiBcbgovLy8gICAgICAxMDogTWF0Y2g6IENvbXBhcmUgZWFjaCBwYWlyIG9mIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVycyBpbiBcYSBBIGFuZAovLy8gICAgICAgICAgXGEgQiBmb3IgZXF1YWxpdHkuIFxuCi8vLyAgICAgIDExOiBTdWJzdHJpbmc6IFNlYXJjaCBCIGZvciBzdWJzdHJpbmcgbWF0Y2hlcyBvZiBcYSBBLiBcbgovLy8gICAgQml0cyBbNTo0XTogRGV0ZXJtaW5lIHdoZXRoZXIgdG8gcGVyZm9ybSBhIG9uZSdzIGNvbXBsZW1lbnQgb24gdGhlIGJpdAovLy8gICAgICAgICAgICAgICAgbWFzayBvZiB0aGUgY29tcGFyaXNvbiByZXN1bHRzLiBcbgovLy8gICAgICAwMDogTm8gZWZmZWN0LiBcbgovLy8gICAgICAwMTogTmVnYXRlIHRoZSBiaXQgbWFzay4gXG4KLy8vICAgICAgMTA6IE5vIGVmZmVjdC4gXG4KLy8vICAgICAgMTE6IE5lZ2F0ZSB0aGUgYml0IG1hc2sgb25seSBmb3IgYml0cyB3aXRoIGFuIGluZGV4IGxlc3MgdGhhbiBvciBlcXVhbAovLy8gICAgICAgICAgdG8gdGhlIHNpemUgb2YgXGEgQSBvciBcYSBCLgovLy8gXHJldHVybnMgUmV0dXJucyAxIGlmIHRoZSBiaXQgbWFzayBpcyBub24temVybywgb3RoZXJ3aXNlLCByZXR1cm5zIDAuCiNkZWZpbmUgX21tX2NtcGlzdHJjKEEsIEIsIE0pIFwKICAoKGludClfX2J1aWx0aW5faWEzMl9wY21waXN0cmljMTI4KChfX3YxNnFpKShfX20xMjhpKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpKF9fbTEyOGkpKEIpLCAoaW50KShNKSkpCgovLy8gVXNlcyB0aGUgaW1tZWRpYXRlIG9wZXJhbmQgXGEgTSB0byBwZXJmb3JtIGEgY29tcGFyaXNvbiBvZiBzdHJpbmcKLy8vICAgIGRhdGEgd2l0aCBpbXBsaWNpdGx5IGRlZmluZWQgbGVuZ3RocyB0aGF0IGlzIGNvbnRhaW5lZCBpbiBzb3VyY2Ugb3BlcmFuZHMKLy8vICAgIFxhIEEgYW5kIFxhIEIuIFJldHVybnMgYml0IDAgb2YgdGhlIHJlc3VsdGluZyBiaXQgbWFzay4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gXGNvZGUKLy8vIGludCBfbW1fY21waXN0cm8oX19tMTI4aSBBLCBfX20xMjhpIEIsIGNvbnN0IGludCBNKTsKLy8vIFxlbmRjb2RlCi8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUENNUElTVFJJIC8gUENNUElTVFJJIDwvYz4KLy8vIGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBBCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcyB0byBiZQovLy8gICAgY29tcGFyZWQuCi8vLyBccGFyYW0gQgovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMgdG8gYmUKLy8vICAgIGNvbXBhcmVkLgovLy8gXHBhcmFtIE0KLy8vICAgIEFuIDgtYml0IGltbWVkaWF0ZSBvcGVyYW5kIHNwZWNpZnlpbmcgd2hldGhlciB0aGUgY2hhcmFjdGVycyBhcmUgYnl0ZXMgb3IKLy8vICAgIHdvcmRzIGFuZCB0aGUgdHlwZSBvZiBjb21wYXJpc29uIHRvIHBlcmZvcm0uIFxuCi8vLyAgICBCaXRzIFsxOjBdOiBEZXRlcm1pbmUgc291cmNlIGRhdGEgZm9ybWF0LiBcbgovLy8gICAgICAwMDogMTYgdW5zaWduZWQgYnl0ZXMgXG4KLy8vICAgICAgMDE6IDggdW5zaWduZWQgd29yZHMgXG4KLy8vICAgICAgMTA6IDE2IHNpZ25lZCBieXRlcyBcbgovLy8gICAgICAxMTogOCBzaWduZWQgd29yZHMgXG4KLy8vICAgIEJpdHMgWzM6Ml06IERldGVybWluZSBjb21wYXJpc29uIHR5cGUgYW5kIGFnZ3JlZ2F0aW9uIG1ldGhvZC4gXG4KLy8vICAgICAgMDA6IFN1YnNldDogRWFjaCBjaGFyYWN0ZXIgaW4gXGEgQiBpcyBjb21wYXJlZCBmb3IgZXF1YWxpdHkgd2l0aCBhbGwKLy8vICAgICAgICAgIHRoZSBjaGFyYWN0ZXJzIGluIFxhIEEuIFxuCi8vLyAgICAgIDAxOiBSYW5nZXM6IEVhY2ggY2hhcmFjdGVyIGluIFxhIEIgaXMgY29tcGFyZWQgdG8gXGEgQS4gVGhlIGNvbXBhcmlzb24KLy8vICAgICAgICAgIGJhc2lzIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCBmb3IgZXZlbi1pbmRleGVkIGVsZW1lbnRzIGluIFxhIEEsCi8vLyAgICAgICAgICBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIGZvciBvZGQtaW5kZXhlZCBlbGVtZW50cyBpbiBcYSBBLiBcbgovLy8gICAgICAxMDogTWF0Y2g6IENvbXBhcmUgZWFjaCBwYWlyIG9mIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVycyBpbiBcYSBBIGFuZAovLy8gICAgICAgICAgXGEgQiBmb3IgZXF1YWxpdHkuIFxuCi8vLyAgICAgIDExOiBTdWJzdHJpbmc6IFNlYXJjaCBCIGZvciBzdWJzdHJpbmcgbWF0Y2hlcyBvZiBcYSBBLiBcbgovLy8gICAgQml0cyBbNTo0XTogRGV0ZXJtaW5lIHdoZXRoZXIgdG8gcGVyZm9ybSBhIG9uZSdzIGNvbXBsZW1lbnQgb24gdGhlIGJpdAovLy8gICAgICAgICAgICAgICAgbWFzayBvZiB0aGUgY29tcGFyaXNvbiByZXN1bHRzLiBcbgovLy8gICAgICAwMDogTm8gZWZmZWN0LiBcbgovLy8gICAgICAwMTogTmVnYXRlIHRoZSBiaXQgbWFzay4gXG4KLy8vICAgICAgMTA6IE5vIGVmZmVjdC4gXG4KLy8vICAgICAgMTE6IE5lZ2F0ZSB0aGUgYml0IG1hc2sgb25seSBmb3IgYml0cyB3aXRoIGFuIGluZGV4IGxlc3MgdGhhbiBvciBlcXVhbAovLy8gICAgICAgICAgdG8gdGhlIHNpemUgb2YgXGEgQSBvciBcYSBCLiBcbgovLy8gXHJldHVybnMgUmV0dXJucyBiaXQgMCBvZiB0aGUgcmVzdWx0aW5nIGJpdCBtYXNrLgojZGVmaW5lIF9tbV9jbXBpc3RybyhBLCBCLCBNKSBcCiAgKChpbnQpX19idWlsdGluX2lhMzJfcGNtcGlzdHJpbzEyOCgoX192MTZxaSkoX19tMTI4aSkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKShfX20xMjhpKShCKSwgKGludCkoTSkpKQoKLy8vIFVzZXMgdGhlIGltbWVkaWF0ZSBvcGVyYW5kIFxhIE0gdG8gcGVyZm9ybSBhIGNvbXBhcmlzb24gb2Ygc3RyaW5nCi8vLyAgICBkYXRhIHdpdGggaW1wbGljaXRseSBkZWZpbmVkIGxlbmd0aHMgdGhhdCBpcyBjb250YWluZWQgaW4gc291cmNlIG9wZXJhbmRzCi8vLyAgICBcYSBBIGFuZCBcYSBCLiBSZXR1cm5zIDEgaWYgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIGluIFxhIEEgaXMgbGVzcyB0aGFuCi8vLyAgICB0aGUgbWF4aW11bSwgb3RoZXJ3aXNlLCByZXR1cm5zIDAuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFxjb2RlCi8vLyBpbnQgX21tX2NtcGlzdHJzKF9fbTEyOGkgQSwgX19tMTI4aSBCLCBjb25zdCBpbnQgTSk7Ci8vLyBcZW5kY29kZQovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBDTVBJU1RSSSAvIFBDTVBJU1RSSSA8L2M+Ci8vLyBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gQQovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMgdG8gYmUKLy8vICAgIGNvbXBhcmVkLgovLy8gXHBhcmFtIEIKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzIHRvIGJlCi8vLyAgICBjb21wYXJlZC4KLy8vIFxwYXJhbSBNCi8vLyAgICBBbiA4LWJpdCBpbW1lZGlhdGUgb3BlcmFuZCBzcGVjaWZ5aW5nIHdoZXRoZXIgdGhlIGNoYXJhY3RlcnMgYXJlIGJ5dGVzIG9yCi8vLyAgICB3b3JkcyBhbmQgdGhlIHR5cGUgb2YgY29tcGFyaXNvbiB0byBwZXJmb3JtLiBcbgovLy8gICAgQml0cyBbMTowXTogRGV0ZXJtaW5lIHNvdXJjZSBkYXRhIGZvcm1hdC4gXG4KLy8vICAgICAgMDA6IDE2IHVuc2lnbmVkIGJ5dGVzIFxuCi8vLyAgICAgIDAxOiA4IHVuc2lnbmVkIHdvcmRzIFxuCi8vLyAgICAgIDEwOiAxNiBzaWduZWQgYnl0ZXMgXG4KLy8vICAgICAgMTE6IDggc2lnbmVkIHdvcmRzIFxuCi8vLyAgICBCaXRzIFszOjJdOiBEZXRlcm1pbmUgY29tcGFyaXNvbiB0eXBlIGFuZCBhZ2dyZWdhdGlvbiBtZXRob2QuIFxuCi8vLyAgICAgIDAwOiBTdWJzZXQ6IEVhY2ggY2hhcmFjdGVyIGluIFxhIEIgaXMgY29tcGFyZWQgZm9yIGVxdWFsaXR5IHdpdGggYWxsCi8vLyAgICAgICAgICB0aGUgY2hhcmFjdGVycyBpbiBcYSBBLiBcbgovLy8gICAgICAwMTogUmFuZ2VzOiBFYWNoIGNoYXJhY3RlciBpbiBcYSBCIGlzIGNvbXBhcmVkIHRvIFxhIEEuIFRoZSBjb21wYXJpc29uCi8vLyAgICAgICAgICBiYXNpcyBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgZm9yIGV2ZW4taW5kZXhlZCBlbGVtZW50cyBpbiBcYSBBLAovLy8gICAgICAgICAgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCBmb3Igb2RkLWluZGV4ZWQgZWxlbWVudHMgaW4gXGEgQS4gXG4KLy8vICAgICAgMTA6IE1hdGNoOiBDb21wYXJlIGVhY2ggcGFpciBvZiBjb3JyZXNwb25kaW5nIGNoYXJhY3RlcnMgaW4gXGEgQSBhbmQKLy8vICAgICAgICAgIFxhIEIgZm9yIGVxdWFsaXR5LiBcbgovLy8gICAgICAxMTogU3Vic3RyaW5nOiBTZWFyY2ggXGEgQiBmb3Igc3Vic3RyaW5nIG1hdGNoZXMgb2YgXGEgQS4gXG4KLy8vICAgIEJpdHMgWzU6NF06IERldGVybWluZSB3aGV0aGVyIHRvIHBlcmZvcm0gYSBvbmUncyBjb21wbGVtZW50IG9uIHRoZSBiaXQKLy8vICAgICAgICAgICAgICAgIG1hc2sgb2YgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4gXG4KLy8vICAgICAgMDA6IE5vIGVmZmVjdC4gXG4KLy8vICAgICAgMDE6IE5lZ2F0ZSB0aGUgYml0IG1hc2suIFxuCi8vLyAgICAgIDEwOiBObyBlZmZlY3QuIFxuCi8vLyAgICAgIDExOiBOZWdhdGUgdGhlIGJpdCBtYXNrIG9ubHkgZm9yIGJpdHMgd2l0aCBhbiBpbmRleCBsZXNzIHRoYW4gb3IgZXF1YWwKLy8vICAgICAgICAgIHRvIHRoZSBzaXplIG9mIFxhIEEgb3IgXGEgQi4gXG4KLy8vIFxyZXR1cm5zIFJldHVybnMgMSBpZiB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgaW4gXGEgQSBpcyBsZXNzIHRoYW4gdGhlCi8vLyAgICBtYXhpbXVtLCBvdGhlcndpc2UsIHJldHVybnMgMC4KI2RlZmluZSBfbW1fY21waXN0cnMoQSwgQiwgTSkgXAogICgoaW50KV9fYnVpbHRpbl9pYTMyX3BjbXBpc3RyaXMxMjgoKF9fdjE2cWkpKF9fbTEyOGkpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZxaSkoX19tMTI4aSkoQiksIChpbnQpKE0pKSkKCi8vLyBVc2VzIHRoZSBpbW1lZGlhdGUgb3BlcmFuZCBcYSBNIHRvIHBlcmZvcm0gYSBjb21wYXJpc29uIG9mIHN0cmluZwovLy8gICAgZGF0YSB3aXRoIGltcGxpY2l0bHkgZGVmaW5lZCBsZW5ndGhzIHRoYXQgaXMgY29udGFpbmVkIGluIHNvdXJjZSBvcGVyYW5kcwovLy8gICAgXGEgQSBhbmQgXGEgQi4gUmV0dXJucyAxIGlmIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBpbiBcYSBCIGlzIGxlc3MgdGhhbgovLy8gICAgdGhlIG1heGltdW0sIG90aGVyd2lzZSwgcmV0dXJucyAwLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBcY29kZQovLy8gaW50IF9tbV9jbXBpc3RyeihfX20xMjhpIEEsIF9fbTEyOGkgQiwgY29uc3QgaW50IE0pOwovLy8gXGVuZGNvZGUKLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQ01QSVNUUkkgLyBQQ01QSVNUUkkgPC9jPgovLy8gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIEEKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzIHRvIGJlCi8vLyAgICBjb21wYXJlZC4KLy8vIFxwYXJhbSBCCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcyB0byBiZQovLy8gICAgY29tcGFyZWQuCi8vLyBccGFyYW0gTQovLy8gICAgQW4gOC1iaXQgaW1tZWRpYXRlIG9wZXJhbmQgc3BlY2lmeWluZyB3aGV0aGVyIHRoZSBjaGFyYWN0ZXJzIGFyZSBieXRlcyBvcgovLy8gICAgd29yZHMgYW5kIHRoZSB0eXBlIG9mIGNvbXBhcmlzb24gdG8gcGVyZm9ybS4gXG4KLy8vICAgIEJpdHMgWzE6MF06IERldGVybWluZSBzb3VyY2UgZGF0YSBmb3JtYXQuIFxuCi8vLyAgICAgIDAwOiAxNiB1bnNpZ25lZCBieXRlcyBcbgovLy8gICAgICAwMTogOCB1bnNpZ25lZCB3b3JkcyBcbgovLy8gICAgICAxMDogMTYgc2lnbmVkIGJ5dGVzIFxuCi8vLyAgICAgIDExOiA4IHNpZ25lZCB3b3JkcyBcbgovLy8gICAgQml0cyBbMzoyXTogRGV0ZXJtaW5lIGNvbXBhcmlzb24gdHlwZSBhbmQgYWdncmVnYXRpb24gbWV0aG9kLiBcbgovLy8gICAgICAwMDogU3Vic2V0OiBFYWNoIGNoYXJhY3RlciBpbiBcYSBCIGlzIGNvbXBhcmVkIGZvciBlcXVhbGl0eSB3aXRoIGFsbAovLy8gICAgICAgICAgdGhlIGNoYXJhY3RlcnMgaW4gXGEgQS4gXG4KLy8vICAgICAgMDE6IFJhbmdlczogRWFjaCBjaGFyYWN0ZXIgaW4gXGEgQiBpcyBjb21wYXJlZCB0byBcYSBBLiBUaGUgY29tcGFyaXNvbgovLy8gICAgICAgICAgYmFzaXMgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIGZvciBldmVuLWluZGV4ZWQgZWxlbWVudHMgaW4gXGEgQSwKLy8vICAgICAgICAgIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgZm9yIG9kZC1pbmRleGVkIGVsZW1lbnRzIGluIFxhIEEuIFxuCi8vLyAgICAgIDEwOiBNYXRjaDogQ29tcGFyZSBlYWNoIHBhaXIgb2YgY29ycmVzcG9uZGluZyBjaGFyYWN0ZXJzIGluIFxhIEEgYW5kCi8vLyAgICAgICAgICBcYSBCIGZvciBlcXVhbGl0eS4gXG4KLy8vICAgICAgMTE6IFN1YnN0cmluZzogU2VhcmNoIFxhIEIgZm9yIHN1YnN0cmluZyBtYXRjaGVzIG9mIFxhIEEuIFxuCi8vLyAgICBCaXRzIFs1OjRdOiBEZXRlcm1pbmUgd2hldGhlciB0byBwZXJmb3JtIGEgb25lJ3MgY29tcGxlbWVudCBvbiB0aGUgYml0Ci8vLyAgICAgICAgICAgICAgICBtYXNrIG9mIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuIFxuCi8vLyAgICAgIDAwOiBObyBlZmZlY3QuIFxuCi8vLyAgICAgIDAxOiBOZWdhdGUgdGhlIGJpdCBtYXNrLiBcbgovLy8gICAgICAxMDogTm8gZWZmZWN0LiBcbgovLy8gICAgICAxMTogTmVnYXRlIHRoZSBiaXQgbWFzayBvbmx5IGZvciBiaXRzIHdpdGggYW4gaW5kZXggbGVzcyB0aGFuIG9yIGVxdWFsCi8vLyAgICAgICAgICB0byB0aGUgc2l6ZSBvZiBcYSBBIG9yIFxhIEIuCi8vLyBccmV0dXJucyBSZXR1cm5zIDEgaWYgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIGluIFxhIEIgaXMgbGVzcyB0aGFuIHRoZQovLy8gICAgbWF4aW11bSwgb3RoZXJ3aXNlLCByZXR1cm5zIDAuCiNkZWZpbmUgX21tX2NtcGlzdHJ6KEEsIEIsIE0pIFwKICAoKGludClfX2J1aWx0aW5faWEzMl9wY21waXN0cml6MTI4KChfX3YxNnFpKShfX20xMjhpKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpKF9fbTEyOGkpKEIpLCAoaW50KShNKSkpCgovLy8gVXNlcyB0aGUgaW1tZWRpYXRlIG9wZXJhbmQgXGEgTSB0byBwZXJmb3JtIGEgY29tcGFyaXNvbiBvZiBzdHJpbmcKLy8vICAgIGRhdGEgd2l0aCBleHBsaWNpdGx5IGRlZmluZWQgbGVuZ3RocyB0aGF0IGlzIGNvbnRhaW5lZCBpbiBzb3VyY2Ugb3BlcmFuZHMKLy8vICAgIFxhIEEgYW5kIFxhIEIuIFJldHVybnMgMSBpZiB0aGUgYml0IG1hc2sgaXMgemVybyBhbmQgdGhlIGxlbmd0aCBvZiB0aGUKLy8vICAgIHN0cmluZyBpbiBcYSBCIGlzIHRoZSBtYXhpbXVtLCBvdGhlcndpc2UsIHJldHVybnMgMC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gXGNvZGUKLy8vIGludCBfbW1fY21wZXN0cmEoX19tMTI4aSBBLCBpbnQgTEEsIF9fbTEyOGkgQiwgaW50IExCLCBjb25zdCBpbnQgTSk7Ci8vLyBcZW5kY29kZQovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBDTVBFU1RSSSAvIFBDTVBFU1RSSSA8L2M+Ci8vLyBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gQQovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMgdG8gYmUKLy8vICAgIGNvbXBhcmVkLgovLy8gXHBhcmFtIExBCi8vLyAgICBBbiBpbnRlZ2VyIHRoYXQgc3BlY2lmaWVzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBpbiBcYSBBLgovLy8gXHBhcmFtIEIKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzIHRvIGJlCi8vLyAgICBjb21wYXJlZC4KLy8vIFxwYXJhbSBMQgovLy8gICAgQW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgaW4gXGEgQi4KLy8vIFxwYXJhbSBNCi8vLyAgICBBbiA4LWJpdCBpbW1lZGlhdGUgb3BlcmFuZCBzcGVjaWZ5aW5nIHdoZXRoZXIgdGhlIGNoYXJhY3RlcnMgYXJlIGJ5dGVzIG9yCi8vLyAgICB3b3JkcyBhbmQgdGhlIHR5cGUgb2YgY29tcGFyaXNvbiB0byBwZXJmb3JtLiBcbgovLy8gICAgQml0cyBbMTowXTogRGV0ZXJtaW5lIHNvdXJjZSBkYXRhIGZvcm1hdC4gXG4KLy8vICAgICAgMDA6IDE2IHVuc2lnbmVkIGJ5dGVzIFxuCi8vLyAgICAgIDAxOiA4IHVuc2lnbmVkIHdvcmRzIFxuCi8vLyAgICAgIDEwOiAxNiBzaWduZWQgYnl0ZXMgXG4KLy8vICAgICAgMTE6IDggc2lnbmVkIHdvcmRzIFxuCi8vLyAgICBCaXRzIFszOjJdOiBEZXRlcm1pbmUgY29tcGFyaXNvbiB0eXBlIGFuZCBhZ2dyZWdhdGlvbiBtZXRob2QuIFxuCi8vLyAgICAgIDAwOiBTdWJzZXQ6IEVhY2ggY2hhcmFjdGVyIGluIFxhIEIgaXMgY29tcGFyZWQgZm9yIGVxdWFsaXR5IHdpdGggYWxsCi8vLyAgICAgICAgICB0aGUgY2hhcmFjdGVycyBpbiBcYSBBLiBcbgovLy8gICAgICAwMTogUmFuZ2VzOiBFYWNoIGNoYXJhY3RlciBpbiBcYSBCIGlzIGNvbXBhcmVkIHRvIFxhIEEuIFRoZSBjb21wYXJpc29uCi8vLyAgICAgICAgICBiYXNpcyBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgZm9yIGV2ZW4taW5kZXhlZCBlbGVtZW50cyBpbiBcYSBBLAovLy8gICAgICAgICAgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCBmb3Igb2RkLWluZGV4ZWQgZWxlbWVudHMgaW4gXGEgQS4gXG4KLy8vICAgICAgMTA6IE1hdGNoOiBDb21wYXJlIGVhY2ggcGFpciBvZiBjb3JyZXNwb25kaW5nIGNoYXJhY3RlcnMgaW4gXGEgQSBhbmQKLy8vICAgICAgICAgIFxhIEIgZm9yIGVxdWFsaXR5LiBcbgovLy8gICAgICAxMTogU3Vic3RyaW5nOiBTZWFyY2ggXGEgQiBmb3Igc3Vic3RyaW5nIG1hdGNoZXMgb2YgXGEgQS4gXG4KLy8vICAgIEJpdHMgWzU6NF06IERldGVybWluZSB3aGV0aGVyIHRvIHBlcmZvcm0gYSBvbmUncyBjb21wbGVtZW50IG9uIHRoZSBiaXQKLy8vICAgICAgICAgICAgICAgIG1hc2sgb2YgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4gXG4KLy8vICAgICAgMDA6IE5vIGVmZmVjdC4gXG4KLy8vICAgICAgMDE6IE5lZ2F0ZSB0aGUgYml0IG1hc2suIFxuCi8vLyAgICAgIDEwOiBObyBlZmZlY3QuIFxuCi8vLyAgICAgIDExOiBOZWdhdGUgdGhlIGJpdCBtYXNrIG9ubHkgZm9yIGJpdHMgd2l0aCBhbiBpbmRleCBsZXNzIHRoYW4gb3IgZXF1YWwKLy8vICAgICAgICAgIHRvIHRoZSBzaXplIG9mIFxhIEEgb3IgXGEgQi4KLy8vIFxyZXR1cm5zIFJldHVybnMgMSBpZiB0aGUgYml0IG1hc2sgaXMgemVybyBhbmQgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIGluCi8vLyAgICBcYSBCIGlzIHRoZSBtYXhpbXVtLCBvdGhlcndpc2UsIHJldHVybnMgMC4KI2RlZmluZSBfbW1fY21wZXN0cmEoQSwgTEEsIEIsIExCLCBNKSBcCiAgKChpbnQpX19idWlsdGluX2lhMzJfcGNtcGVzdHJpYTEyOCgoX192MTZxaSkoX19tMTI4aSkoQSksIChpbnQpKExBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpKF9fbTEyOGkpKEIpLCAoaW50KShMQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKE0pKSkKCi8vLyBVc2VzIHRoZSBpbW1lZGlhdGUgb3BlcmFuZCBcYSBNIHRvIHBlcmZvcm0gYSBjb21wYXJpc29uIG9mIHN0cmluZwovLy8gICAgZGF0YSB3aXRoIGV4cGxpY2l0bHkgZGVmaW5lZCBsZW5ndGhzIHRoYXQgaXMgY29udGFpbmVkIGluIHNvdXJjZSBvcGVyYW5kcwovLy8gICAgXGEgQSBhbmQgXGEgQi4gUmV0dXJucyAxIGlmIHRoZSByZXN1bHRpbmcgbWFzayBpcyBub24temVybywgb3RoZXJ3aXNlLAovLy8gICAgcmV0dXJucyAwLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBcY29kZQovLy8gaW50IF9tbV9jbXBlc3RyYyhfX20xMjhpIEEsIGludCBMQSwgX19tMTI4aSBCLCBpbnQgTEIsIGNvbnN0IGludCBNKTsKLy8vIFxlbmRjb2RlCi8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUENNUEVTVFJJIC8gUENNUEVTVFJJIDwvYz4KLy8vIGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBBCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcyB0byBiZQovLy8gICAgY29tcGFyZWQuCi8vLyBccGFyYW0gTEEKLy8vICAgIEFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIGluIFxhIEEuCi8vLyBccGFyYW0gQgovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMgdG8gYmUKLy8vICAgIGNvbXBhcmVkLgovLy8gXHBhcmFtIExCCi8vLyAgICBBbiBpbnRlZ2VyIHRoYXQgc3BlY2lmaWVzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBpbiBcYSBCLgovLy8gXHBhcmFtIE0KLy8vICAgIEFuIDgtYml0IGltbWVkaWF0ZSBvcGVyYW5kIHNwZWNpZnlpbmcgd2hldGhlciB0aGUgY2hhcmFjdGVycyBhcmUgYnl0ZXMgb3IKLy8vICAgIHdvcmRzIGFuZCB0aGUgdHlwZSBvZiBjb21wYXJpc29uIHRvIHBlcmZvcm0uIFxuCi8vLyAgICBCaXRzIFsxOjBdOiBEZXRlcm1pbmUgc291cmNlIGRhdGEgZm9ybWF0LiBcbgovLy8gICAgICAwMDogMTYgdW5zaWduZWQgYnl0ZXMgXG4KLy8vICAgICAgMDE6IDggdW5zaWduZWQgd29yZHMgXG4KLy8vICAgICAgMTA6IDE2IHNpZ25lZCBieXRlcyBcbgovLy8gICAgICAxMTogOCBzaWduZWQgd29yZHMgXG4KLy8vICAgIEJpdHMgWzM6Ml06IERldGVybWluZSBjb21wYXJpc29uIHR5cGUgYW5kIGFnZ3JlZ2F0aW9uIG1ldGhvZC4gXG4KLy8vICAgICAgMDA6IFN1YnNldDogRWFjaCBjaGFyYWN0ZXIgaW4gXGEgQiBpcyBjb21wYXJlZCBmb3IgZXF1YWxpdHkgd2l0aCBhbGwKLy8vICAgICAgICAgIHRoZSBjaGFyYWN0ZXJzIGluIFxhIEEuIFxuCi8vLyAgICAgIDAxOiBSYW5nZXM6IEVhY2ggY2hhcmFjdGVyIGluIFxhIEIgaXMgY29tcGFyZWQgdG8gXGEgQS4gVGhlIGNvbXBhcmlzb24KLy8vICAgICAgICAgIGJhc2lzIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCBmb3IgZXZlbi1pbmRleGVkIGVsZW1lbnRzIGluIFxhIEEsCi8vLyAgICAgICAgICBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIGZvciBvZGQtaW5kZXhlZCBlbGVtZW50cyBpbiBcYSBBLiBcbgovLy8gICAgICAxMDogTWF0Y2g6IENvbXBhcmUgZWFjaCBwYWlyIG9mIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVycyBpbiBcYSBBIGFuZAovLy8gICAgICAgICAgXGEgQiBmb3IgZXF1YWxpdHkuIFxuCi8vLyAgICAgIDExOiBTdWJzdHJpbmc6IFNlYXJjaCBcYSBCIGZvciBzdWJzdHJpbmcgbWF0Y2hlcyBvZiBcYSBBLiBcbgovLy8gICAgQml0cyBbNTo0XTogRGV0ZXJtaW5lIHdoZXRoZXIgdG8gcGVyZm9ybSBhIG9uZSdzIGNvbXBsZW1lbnQgb24gdGhlIGJpdAovLy8gICAgICAgICAgICAgICAgbWFzayBvZiB0aGUgY29tcGFyaXNvbiByZXN1bHRzLiBcbgovLy8gICAgICAwMDogTm8gZWZmZWN0LiBcbgovLy8gICAgICAwMTogTmVnYXRlIHRoZSBiaXQgbWFzay4gXG4KLy8vICAgICAgMTA6IE5vIGVmZmVjdC4gXG4KLy8vICAgICAgMTE6IE5lZ2F0ZSB0aGUgYml0IG1hc2sgb25seSBmb3IgYml0cyB3aXRoIGFuIGluZGV4IGxlc3MgdGhhbiBvciBlcXVhbAovLy8gICAgICAgICAgdG8gdGhlIHNpemUgb2YgXGEgQSBvciBcYSBCLiBcbgovLy8gXHJldHVybnMgUmV0dXJucyAxIGlmIHRoZSByZXN1bHRpbmcgbWFzayBpcyBub24temVybywgb3RoZXJ3aXNlLCByZXR1cm5zIDAuCiNkZWZpbmUgX21tX2NtcGVzdHJjKEEsIExBLCBCLCBMQiwgTSkgXAogICgoaW50KV9fYnVpbHRpbl9pYTMyX3BjbXBlc3RyaWMxMjgoKF9fdjE2cWkpKF9fbTEyOGkpKEEpLCAoaW50KShMQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKShfX20xMjhpKShCKSwgKGludCkoTEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShNKSkpCgovLy8gVXNlcyB0aGUgaW1tZWRpYXRlIG9wZXJhbmQgXGEgTSB0byBwZXJmb3JtIGEgY29tcGFyaXNvbiBvZiBzdHJpbmcKLy8vICAgIGRhdGEgd2l0aCBleHBsaWNpdGx5IGRlZmluZWQgbGVuZ3RocyB0aGF0IGlzIGNvbnRhaW5lZCBpbiBzb3VyY2Ugb3BlcmFuZHMKLy8vICAgIFxhIEEgYW5kIFxhIEIuIFJldHVybnMgYml0IDAgb2YgdGhlIHJlc3VsdGluZyBiaXQgbWFzay4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gXGNvZGUKLy8vIGludCBfbW1fY21wZXN0cm8oX19tMTI4aSBBLCBpbnQgTEEsIF9fbTEyOGkgQiwgaW50IExCLCBjb25zdCBpbnQgTSk7Ci8vLyBcZW5kY29kZQovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBDTVBFU1RSSSAvIFBDTVBFU1RSSSA8L2M+Ci8vLyBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gQQovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMgdG8gYmUKLy8vICAgIGNvbXBhcmVkLgovLy8gXHBhcmFtIExBCi8vLyAgICBBbiBpbnRlZ2VyIHRoYXQgc3BlY2lmaWVzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBpbiBcYSBBLgovLy8gXHBhcmFtIEIKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzIHRvIGJlCi8vLyAgICBjb21wYXJlZC4KLy8vIFxwYXJhbSBMQgovLy8gICAgQW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgaW4gXGEgQi4KLy8vIFxwYXJhbSBNCi8vLyAgICBBbiA4LWJpdCBpbW1lZGlhdGUgb3BlcmFuZCBzcGVjaWZ5aW5nIHdoZXRoZXIgdGhlIGNoYXJhY3RlcnMgYXJlIGJ5dGVzIG9yCi8vLyAgICB3b3JkcyBhbmQgdGhlIHR5cGUgb2YgY29tcGFyaXNvbiB0byBwZXJmb3JtLiBcbgovLy8gICAgQml0cyBbMTowXTogRGV0ZXJtaW5lIHNvdXJjZSBkYXRhIGZvcm1hdC4gXG4KLy8vICAgICAgMDA6IDE2IHVuc2lnbmVkIGJ5dGVzIFxuCi8vLyAgICAgIDAxOiA4IHVuc2lnbmVkIHdvcmRzIFxuCi8vLyAgICAgIDEwOiAxNiBzaWduZWQgYnl0ZXMgXG4KLy8vICAgICAgMTE6IDggc2lnbmVkIHdvcmRzIFxuCi8vLyAgICBCaXRzIFszOjJdOiBEZXRlcm1pbmUgY29tcGFyaXNvbiB0eXBlIGFuZCBhZ2dyZWdhdGlvbiBtZXRob2QuIFxuCi8vLyAgICAgIDAwOiBTdWJzZXQ6IEVhY2ggY2hhcmFjdGVyIGluIFxhIEIgaXMgY29tcGFyZWQgZm9yIGVxdWFsaXR5IHdpdGggYWxsCi8vLyAgICAgICAgICB0aGUgY2hhcmFjdGVycyBpbiBcYSBBLiBcbgovLy8gICAgICAwMTogUmFuZ2VzOiBFYWNoIGNoYXJhY3RlciBpbiBcYSBCIGlzIGNvbXBhcmVkIHRvIFxhIEEuIFRoZSBjb21wYXJpc29uCi8vLyAgICAgICAgICBiYXNpcyBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgZm9yIGV2ZW4taW5kZXhlZCBlbGVtZW50cyBpbiBcYSBBLAovLy8gICAgICAgICAgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCBmb3Igb2RkLWluZGV4ZWQgZWxlbWVudHMgaW4gXGEgQS4gXG4KLy8vICAgICAgMTA6IE1hdGNoOiBDb21wYXJlIGVhY2ggcGFpciBvZiBjb3JyZXNwb25kaW5nIGNoYXJhY3RlcnMgaW4gXGEgQSBhbmQKLy8vICAgICAgICAgIFxhIEIgZm9yIGVxdWFsaXR5LiBcbgovLy8gICAgICAxMTogU3Vic3RyaW5nOiBTZWFyY2ggXGEgQiBmb3Igc3Vic3RyaW5nIG1hdGNoZXMgb2YgXGEgQS4gXG4KLy8vICAgIEJpdHMgWzU6NF06IERldGVybWluZSB3aGV0aGVyIHRvIHBlcmZvcm0gYSBvbmUncyBjb21wbGVtZW50IG9uIHRoZSBiaXQKLy8vICAgICAgICAgICAgICAgIG1hc2sgb2YgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4gXG4KLy8vICAgICAgMDA6IE5vIGVmZmVjdC4gXG4KLy8vICAgICAgMDE6IE5lZ2F0ZSB0aGUgYml0IG1hc2suIFxuCi8vLyAgICAgIDEwOiBObyBlZmZlY3QuIFxuCi8vLyAgICAgIDExOiBOZWdhdGUgdGhlIGJpdCBtYXNrIG9ubHkgZm9yIGJpdHMgd2l0aCBhbiBpbmRleCBsZXNzIHRoYW4gb3IgZXF1YWwKLy8vICAgICAgICAgIHRvIHRoZSBzaXplIG9mIFxhIEEgb3IgXGEgQi4KLy8vIFxyZXR1cm5zIFJldHVybnMgYml0IDAgb2YgdGhlIHJlc3VsdGluZyBiaXQgbWFzay4KI2RlZmluZSBfbW1fY21wZXN0cm8oQSwgTEEsIEIsIExCLCBNKSBcCiAgKChpbnQpX19idWlsdGluX2lhMzJfcGNtcGVzdHJpbzEyOCgoX192MTZxaSkoX19tMTI4aSkoQSksIChpbnQpKExBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpKF9fbTEyOGkpKEIpLCAoaW50KShMQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKE0pKSkKCi8vLyBVc2VzIHRoZSBpbW1lZGlhdGUgb3BlcmFuZCBcYSBNIHRvIHBlcmZvcm0gYSBjb21wYXJpc29uIG9mIHN0cmluZwovLy8gICAgZGF0YSB3aXRoIGV4cGxpY2l0bHkgZGVmaW5lZCBsZW5ndGhzIHRoYXQgaXMgY29udGFpbmVkIGluIHNvdXJjZSBvcGVyYW5kcwovLy8gICAgXGEgQSBhbmQgXGEgQi4gUmV0dXJucyAxIGlmIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBpbiBcYSBBIGlzIGxlc3MgdGhhbgovLy8gICAgdGhlIG1heGltdW0sIG90aGVyd2lzZSwgcmV0dXJucyAwLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBcY29kZQovLy8gaW50IF9tbV9jbXBlc3RycyhfX20xMjhpIEEsIGludCBMQSwgX19tMTI4aSBCLCBpbnQgTEIsIGNvbnN0IGludCBNKTsKLy8vIFxlbmRjb2RlCi8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUENNUEVTVFJJIC8gUENNUEVTVFJJIDwvYz4KLy8vIGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBBCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcyB0byBiZQovLy8gICAgY29tcGFyZWQuCi8vLyBccGFyYW0gTEEKLy8vICAgIEFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIGluIFxhIEEuCi8vLyBccGFyYW0gQgovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMgdG8gYmUKLy8vICAgIGNvbXBhcmVkLgovLy8gXHBhcmFtIExCCi8vLyAgICBBbiBpbnRlZ2VyIHRoYXQgc3BlY2lmaWVzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBpbiBcYSBCLgovLy8gXHBhcmFtIE0KLy8vICAgIEFuIDgtYml0IGltbWVkaWF0ZSBvcGVyYW5kIHNwZWNpZnlpbmcgd2hldGhlciB0aGUgY2hhcmFjdGVycyBhcmUgYnl0ZXMgb3IKLy8vICAgIHdvcmRzIGFuZCB0aGUgdHlwZSBvZiBjb21wYXJpc29uIHRvIHBlcmZvcm0uIFxuCi8vLyAgICBCaXRzIFsxOjBdOiBEZXRlcm1pbmUgc291cmNlIGRhdGEgZm9ybWF0LiBcbgovLy8gICAgICAwMDogMTYgdW5zaWduZWQgYnl0ZXMgXG4KLy8vICAgICAgMDE6IDggdW5zaWduZWQgd29yZHMgXG4KLy8vICAgICAgMTA6IDE2IHNpZ25lZCBieXRlcyBcbgovLy8gICAgICAxMTogOCBzaWduZWQgd29yZHMgXG4KLy8vICAgIEJpdHMgWzM6Ml06IERldGVybWluZSBjb21wYXJpc29uIHR5cGUgYW5kIGFnZ3JlZ2F0aW9uIG1ldGhvZC4gXG4KLy8vICAgICAgMDA6IFN1YnNldDogRWFjaCBjaGFyYWN0ZXIgaW4gXGEgQiBpcyBjb21wYXJlZCBmb3IgZXF1YWxpdHkgd2l0aCBhbGwKLy8vICAgICAgICAgIHRoZSBjaGFyYWN0ZXJzIGluIFxhIEEuIFxuCi8vLyAgICAgIDAxOiBSYW5nZXM6IEVhY2ggY2hhcmFjdGVyIGluIFxhIEIgaXMgY29tcGFyZWQgdG8gXGEgQS4gVGhlIGNvbXBhcmlzb24KLy8vICAgICAgICAgIGJhc2lzIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCBmb3IgZXZlbi1pbmRleGVkIGVsZW1lbnRzIGluIFxhIEEsCi8vLyAgICAgICAgICBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIGZvciBvZGQtaW5kZXhlZCBlbGVtZW50cyBpbiBcYSBBLiBcbgovLy8gICAgICAxMDogTWF0Y2g6IENvbXBhcmUgZWFjaCBwYWlyIG9mIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVycyBpbiBcYSBBIGFuZAovLy8gICAgICAgICAgXGEgQiBmb3IgZXF1YWxpdHkuIFxuCi8vLyAgICAgIDExOiBTdWJzdHJpbmc6IFNlYXJjaCBcYSBCIGZvciBzdWJzdHJpbmcgbWF0Y2hlcyBvZiBcYSBBLiBcbgovLy8gICAgQml0cyBbNTo0XTogRGV0ZXJtaW5lIHdoZXRoZXIgdG8gcGVyZm9ybSBhIG9uZSdzIGNvbXBsZW1lbnQgaW4gdGhlIGJpdAovLy8gICAgICAgICAgICAgICAgbWFzayBvZiB0aGUgY29tcGFyaXNvbiByZXN1bHRzLiBcbgovLy8gICAgICAwMDogTm8gZWZmZWN0LiBcbgovLy8gICAgICAwMTogTmVnYXRlIHRoZSBiaXQgbWFzay4gXG4KLy8vICAgICAgMTA6IE5vIGVmZmVjdC4gXG4KLy8vICAgICAgMTE6IE5lZ2F0ZSB0aGUgYml0IG1hc2sgb25seSBmb3IgYml0cyB3aXRoIGFuIGluZGV4IGxlc3MgdGhhbiBvciBlcXVhbAovLy8gICAgICAgICAgdG8gdGhlIHNpemUgb2YgXGEgQSBvciBcYSBCLiBcbgovLy8gXHJldHVybnMgUmV0dXJucyAxIGlmIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBpbiBcYSBBIGlzIGxlc3MgdGhhbiB0aGUKLy8vICAgIG1heGltdW0sIG90aGVyd2lzZSwgcmV0dXJucyAwLgojZGVmaW5lIF9tbV9jbXBlc3RycyhBLCBMQSwgQiwgTEIsIE0pIFwKICAoKGludClfX2J1aWx0aW5faWEzMl9wY21wZXN0cmlzMTI4KChfX3YxNnFpKShfX20xMjhpKShBKSwgKGludCkoTEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZxaSkoX19tMTI4aSkoQiksIChpbnQpKExCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoTSkpKQoKLy8vIFVzZXMgdGhlIGltbWVkaWF0ZSBvcGVyYW5kIFxhIE0gdG8gcGVyZm9ybSBhIGNvbXBhcmlzb24gb2Ygc3RyaW5nCi8vLyAgICBkYXRhIHdpdGggZXhwbGljaXRseSBkZWZpbmVkIGxlbmd0aHMgdGhhdCBpcyBjb250YWluZWQgaW4gc291cmNlIG9wZXJhbmRzCi8vLyAgICBcYSBBIGFuZCBcYSBCLiBSZXR1cm5zIDEgaWYgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIGluIFxhIEIgaXMgbGVzcyB0aGFuCi8vLyAgICB0aGUgbWF4aW11bSwgb3RoZXJ3aXNlLCByZXR1cm5zIDAuCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFxjb2RlCi8vLyBpbnQgX21tX2NtcGVzdHJ6KF9fbTEyOGkgQSwgaW50IExBLCBfX20xMjhpIEIsIGludCBMQiwgY29uc3QgaW50IE0pOwovLy8gXGVuZGNvZGUKLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQ01QRVNUUkkgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gQQovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMgdG8gYmUKLy8vICAgIGNvbXBhcmVkLgovLy8gXHBhcmFtIExBCi8vLyAgICBBbiBpbnRlZ2VyIHRoYXQgc3BlY2lmaWVzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBpbiBcYSBBLgovLy8gXHBhcmFtIEIKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzIHRvIGJlCi8vLyAgICBjb21wYXJlZC4KLy8vIFxwYXJhbSBMQgovLy8gICAgQW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgaW4gXGEgQi4KLy8vIFxwYXJhbSBNCi8vLyAgICBBbiA4LWJpdCBpbW1lZGlhdGUgb3BlcmFuZCBzcGVjaWZ5aW5nIHdoZXRoZXIgdGhlIGNoYXJhY3RlcnMgYXJlIGJ5dGVzIG9yCi8vLyAgICB3b3JkcyBhbmQgdGhlIHR5cGUgb2YgY29tcGFyaXNvbiB0byBwZXJmb3JtLiBcbgovLy8gICAgQml0cyBbMTowXTogRGV0ZXJtaW5lIHNvdXJjZSBkYXRhIGZvcm1hdC4gXG4KLy8vICAgICAgMDA6IDE2IHVuc2lnbmVkIGJ5dGVzICBcbgovLy8gICAgICAwMTogOCB1bnNpZ25lZCB3b3JkcyBcbgovLy8gICAgICAxMDogMTYgc2lnbmVkIGJ5dGVzIFxuCi8vLyAgICAgIDExOiA4IHNpZ25lZCB3b3JkcyBcbgovLy8gICAgQml0cyBbMzoyXTogRGV0ZXJtaW5lIGNvbXBhcmlzb24gdHlwZSBhbmQgYWdncmVnYXRpb24gbWV0aG9kLiBcbgovLy8gICAgICAwMDogU3Vic2V0OiBFYWNoIGNoYXJhY3RlciBpbiBcYSBCIGlzIGNvbXBhcmVkIGZvciBlcXVhbGl0eSB3aXRoIGFsbAovLy8gICAgICAgICAgdGhlIGNoYXJhY3RlcnMgaW4gXGEgQS4gXG4KLy8vICAgICAgMDE6IFJhbmdlczogRWFjaCBjaGFyYWN0ZXIgaW4gXGEgQiBpcyBjb21wYXJlZCB0byBcYSBBLiBUaGUgY29tcGFyaXNvbgovLy8gICAgICAgICAgYmFzaXMgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIGZvciBldmVuLWluZGV4ZWQgZWxlbWVudHMgaW4gXGEgQSwKLy8vICAgICAgICAgIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgZm9yIG9kZC1pbmRleGVkIGVsZW1lbnRzIGluIFxhIEEuIFxuCi8vLyAgICAgIDEwOiBNYXRjaDogQ29tcGFyZSBlYWNoIHBhaXIgb2YgY29ycmVzcG9uZGluZyBjaGFyYWN0ZXJzIGluIFxhIEEgYW5kCi8vLyAgICAgICAgICBcYSBCIGZvciBlcXVhbGl0eS4gXG4KLy8vICAgICAgMTE6IFN1YnN0cmluZzogU2VhcmNoIFxhIEIgZm9yIHN1YnN0cmluZyBtYXRjaGVzIG9mIFxhIEEuIFxuCi8vLyAgICBCaXRzIFs1OjRdOiBEZXRlcm1pbmUgd2hldGhlciB0byBwZXJmb3JtIGEgb25lJ3MgY29tcGxlbWVudCBvbiB0aGUgYml0Ci8vLyAgICAgICAgICAgICAgICBtYXNrIG9mIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuIFxuCi8vLyAgICAgIDAwOiBObyBlZmZlY3QuIFxuCi8vLyAgICAgIDAxOiBOZWdhdGUgdGhlIGJpdCBtYXNrLiBcbgovLy8gICAgICAxMDogTm8gZWZmZWN0LiBcbgovLy8gICAgICAxMTogTmVnYXRlIHRoZSBiaXQgbWFzayBvbmx5IGZvciBiaXRzIHdpdGggYW4gaW5kZXggbGVzcyB0aGFuIG9yIGVxdWFsCi8vLyAgICAgICAgICB0byB0aGUgc2l6ZSBvZiBcYSBBIG9yIFxhIEIuCi8vLyBccmV0dXJucyBSZXR1cm5zIDEgaWYgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIGluIFxhIEIgaXMgbGVzcyB0aGFuIHRoZQovLy8gICAgbWF4aW11bSwgb3RoZXJ3aXNlLCByZXR1cm5zIDAuCiNkZWZpbmUgX21tX2NtcGVzdHJ6KEEsIExBLCBCLCBMQiwgTSkgXAogICgoaW50KV9fYnVpbHRpbl9pYTMyX3BjbXBlc3RyaXoxMjgoKF9fdjE2cWkpKF9fbTEyOGkpKEEpLCAoaW50KShMQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKShfX20xMjhpKShCKSwgKGludCkoTEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShNKSkpCgovKiBTU0U0LjIgQ29tcGFyZSBQYWNrZWQgRGF0YSAtLSBHcmVhdGVyIFRoYW4uICAqLwovLy8gQ29tcGFyZXMgZWFjaCBvZiB0aGUgY29ycmVzcG9uZGluZyA2NC1iaXQgdmFsdWVzIG9mIHRoZSAxMjgtYml0Ci8vLyAgICBpbnRlZ2VyIHZlY3RvcnMgdG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZXMgaW4gdGhlIGZpcnN0IG9wZXJhbmQgYXJlCi8vLyAgICBncmVhdGVyIHRoYW4gdGhvc2UgaW4gdGhlIHNlY29uZCBvcGVyYW5kLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQ01QR1RRIC8gUENNUEdUUSA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX1YxCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuCi8vLyBccGFyYW0gX19WMgovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yLgovLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2NtcGd0X2VwaTY0KF9fbTEyOGkgX19WMSwgX19tMTI4aSBfX1YyKQp7CiAgcmV0dXJuIChfX20xMjhpKSgoX192MmRpKV9fVjEgPiAoX192MmRpKV9fVjIpOwp9CgojdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTCgojaW5jbHVkZSA8cG9wY250aW50cmluLmg+CgojaW5jbHVkZSA8Y3JjMzJpbnRyaW4uaD4KCiNlbmRpZiAvKiBfX1NNTUlOVFJJTl9IICovCgAvKj09PS0tLS0geDg2aW50cmluLmggLSBYODYgaW50cmluc2ljcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqCiAqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCiAqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCgojaWZuZGVmIF9fWDg2SU5UUklOX0gKI2RlZmluZSBfX1g4NklOVFJJTl9ICgojaW5jbHVkZSA8aWEzMmludHJpbi5oPgoKI2luY2x1ZGUgPGltbWludHJpbi5oPgoKI2lmICEoZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX1NDRV9fKSkgfHwgX19oYXNfZmVhdHVyZShtb2R1bGVzKSB8fCAgICAgIFwKICAgIGRlZmluZWQoX18zZE5PV19fKQojaW5jbHVkZSA8bW0zZG5vdy5oPgojZW5kaWYKCiNpZiAhKGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19TQ0VfXykpIHx8IF9faGFzX2ZlYXR1cmUobW9kdWxlcykgfHwgICAgICBcCiAgICBkZWZpbmVkKF9fUFJGQ0hXX18pCiNpbmNsdWRlIDxwcmZjaHdpbnRyaW4uaD4KI2VuZGlmCgojaWYgIShkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fU0NFX18pKSB8fCBfX2hhc19mZWF0dXJlKG1vZHVsZXMpIHx8ICAgICAgXAogICAgZGVmaW5lZChfX1NTRTRBX18pCiNpbmNsdWRlIDxhbW1pbnRyaW4uaD4KI2VuZGlmCgojaWYgIShkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fU0NFX18pKSB8fCBfX2hhc19mZWF0dXJlKG1vZHVsZXMpIHx8ICAgICAgXAogICAgZGVmaW5lZChfX0ZNQTRfXykKI2luY2x1ZGUgPGZtYTRpbnRyaW4uaD4KI2VuZGlmCgojaWYgIShkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fU0NFX18pKSB8fCBfX2hhc19mZWF0dXJlKG1vZHVsZXMpIHx8ICAgICAgXAogICAgZGVmaW5lZChfX1hPUF9fKQojaW5jbHVkZSA8eG9waW50cmluLmg+CiNlbmRpZgoKI2lmICEoZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX1NDRV9fKSkgfHwgX19oYXNfZmVhdHVyZShtb2R1bGVzKSB8fCAgICAgIFwKICAgIGRlZmluZWQoX19UQk1fXykKI2luY2x1ZGUgPHRibWludHJpbi5oPgojZW5kaWYKCiNpZiAhKGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19TQ0VfXykpIHx8IF9faGFzX2ZlYXR1cmUobW9kdWxlcykgfHwgICAgICBcCiAgICBkZWZpbmVkKF9fTFdQX18pCiNpbmNsdWRlIDxsd3BpbnRyaW4uaD4KI2VuZGlmCgojaWYgIShkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fU0NFX18pKSB8fCBfX2hhc19mZWF0dXJlKG1vZHVsZXMpIHx8ICAgICAgXAogICAgZGVmaW5lZChfX01XQUlUWF9fKQojaW5jbHVkZSA8bXdhaXR4aW50cmluLmg+CiNlbmRpZgoKI2lmICEoZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX1NDRV9fKSkgfHwgX19oYXNfZmVhdHVyZShtb2R1bGVzKSB8fCAgICAgIFwKICAgIGRlZmluZWQoX19DTFpFUk9fXykKI2luY2x1ZGUgPGNsemVyb2ludHJpbi5oPgojZW5kaWYKCgojZW5kaWYgLyogX19YODZJTlRSSU5fSCAqLwoAeG1taW50cmluLmgAeG9waW50cmluLmgAeHRlc3RpbnRyaW4uaAAvLz09PS0tIGxpbnV4X3N5c2NhbGxfaG9va3MuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwovLwovLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgovLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgovLwovLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwovLwovLyBUaGlzIGZpbGUgaXMgYSBwYXJ0IG9mIHB1YmxpYyBzYW5pdGl6ZXIgaW50ZXJmYWNlLgovLwovLyBTeXN0ZW0gY2FsbCBoYW5kbGVycy4KLy8KLy8gSW50ZXJmYWNlIG1ldGhvZHMgZGVjbGFyZWQgaW4gdGhpcyBoZWFkZXIgaW1wbGVtZW50IHByZS0gYW5kIHBvc3QtIHN5c2NhbGwKLy8gYWN0aW9ucyBmb3IgdGhlIGFjdGl2ZSBzYW5pdGl6ZXIuCi8vIFVzYWdlOgovLyAgIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2dldGZvbyguLi5hcmdzLi4uKTsKLy8gICBsb25nIHJlcyA9IHN5c2NhbGwoX19OUl9nZXRmb28sIC4uLmFyZ3MuLi4pOwovLyAgIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9nZXRmb28ocmVzLCAuLi5hcmdzLi4uKTsKLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KI2lmbmRlZiBTQU5JVElaRVJfTElOVVhfU1lTQ0FMTF9IT09LU19ICiNkZWZpbmUgU0FOSVRJWkVSX0xJTlVYX1NZU0NBTExfSE9PS1NfSAoKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV90aW1lKHRsb2MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3RpbWUoKGxvbmcpKHRsb2MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF90aW1lKHJlcywgdGxvYykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3RpbWUocmVzLCAobG9uZykodGxvYykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfc3RpbWUodHB0cikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zdGltZSgobG9uZykodHB0cikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3N0aW1lKHJlcywgdHB0cikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc3RpbWUocmVzLCAobG9uZykodHB0cikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZ2V0dGltZW9mZGF5KHR2LCB0eikgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9nZXR0aW1lb2ZkYXkoKGxvbmcpKHR2KSwgKGxvbmcpKHR6KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZ2V0dGltZW9mZGF5KHJlcywgdHYsIHR6KSAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9nZXR0aW1lb2ZkYXkocmVzLCAobG9uZykodHYpLCAobG9uZykodHopKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3NldHRpbWVvZmRheSh0diwgdHopICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2V0dGltZW9mZGF5KChsb25nKSh0diksIChsb25nKSh0eikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NldHRpbWVvZmRheShyZXMsIHR2LCB0eikgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2V0dGltZW9mZGF5KHJlcywgKGxvbmcpKHR2KSwgKGxvbmcpKHR6KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9hZGp0aW1leCh0eGNfcCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2FkanRpbWV4KChsb25nKSh0eGNfcCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2FkanRpbWV4KHJlcywgdHhjX3ApICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfYWRqdGltZXgocmVzLCAobG9uZykodHhjX3ApKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3RpbWVzKHRidWYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfdGltZXMoKGxvbmcpKHRidWYpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF90aW1lcyhyZXMsIHRidWYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3RpbWVzKHJlcywgKGxvbmcpKHRidWYpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2dldHRpZCgpIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZ2V0dGlkKCkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZ2V0dGlkKHJlcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9nZXR0aWQocmVzKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX25hbm9zbGVlcChycXRwLCBybXRwKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbmFub3NsZWVwKChsb25nKShycXRwKSwgKGxvbmcpKHJtdHApKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9uYW5vc2xlZXAocmVzLCBycXRwLCBybXRwKSAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX25hbm9zbGVlcChyZXMsIChsb25nKShycXRwKSwgKGxvbmcpKHJtdHApKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2FsYXJtKHNlY29uZHMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfYWxhcm0oKGxvbmcpKHNlY29uZHMpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9hbGFybShyZXMsIHNlY29uZHMpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2FsYXJtKHJlcywgKGxvbmcpKHNlY29uZHMpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2dldHBpZCgpIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZ2V0cGlkKCkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZ2V0cGlkKHJlcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9nZXRwaWQocmVzKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2dldHBwaWQoKSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2dldHBwaWQoKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9nZXRwcGlkKHJlcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2dldHBwaWQocmVzKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2dldHVpZCgpIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZ2V0dWlkKCkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZ2V0dWlkKHJlcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9nZXR1aWQocmVzKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2dldGV1aWQoKSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2dldGV1aWQoKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9nZXRldWlkKHJlcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2dldGV1aWQocmVzKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2dldGdpZCgpIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZ2V0Z2lkKCkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZ2V0Z2lkKHJlcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9nZXRnaWQocmVzKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2dldGVnaWQoKSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2dldGVnaWQoKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9nZXRlZ2lkKHJlcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2dldGVnaWQocmVzKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2dldHJlc3VpZChydWlkLCBldWlkLCBzdWlkKSAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZ2V0cmVzdWlkKChsb25nKShydWlkKSwgKGxvbmcpKGV1aWQpLCAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShzdWlkKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZ2V0cmVzdWlkKHJlcywgcnVpZCwgZXVpZCwgc3VpZCkgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9nZXRyZXN1aWQocmVzLCAobG9uZykocnVpZCksIChsb25nKShldWlkKSwgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKHN1aWQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2dldHJlc2dpZChyZ2lkLCBlZ2lkLCBzZ2lkKSAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZ2V0cmVzZ2lkKChsb25nKShyZ2lkKSwgKGxvbmcpKGVnaWQpLCAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShzZ2lkKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZ2V0cmVzZ2lkKHJlcywgcmdpZCwgZWdpZCwgc2dpZCkgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9nZXRyZXNnaWQocmVzLCAobG9uZykocmdpZCksIChsb25nKShlZ2lkKSwgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKHNnaWQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2dldHBnaWQocGlkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZ2V0cGdpZCgobG9uZykocGlkKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZ2V0cGdpZChyZXMsIHBpZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9nZXRwZ2lkKHJlcywgKGxvbmcpKHBpZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZ2V0cGdycCgpIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZ2V0cGdycCgpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2dldHBncnAocmVzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZ2V0cGdycChyZXMpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZ2V0c2lkKHBpZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9nZXRzaWQoKGxvbmcpKHBpZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2dldHNpZChyZXMsIHBpZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZ2V0c2lkKHJlcywgKGxvbmcpKHBpZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZ2V0Z3JvdXBzKGdpZHNldHNpemUsIGdyb3VwbGlzdCkgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9nZXRncm91cHMoKGxvbmcpKGdpZHNldHNpemUpLCAobG9uZykoZ3JvdXBsaXN0KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZ2V0Z3JvdXBzKHJlcywgZ2lkc2V0c2l6ZSwgZ3JvdXBsaXN0KSAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9nZXRncm91cHMocmVzLCAobG9uZykoZ2lkc2V0c2l6ZSksICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKGdyb3VwbGlzdCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfc2V0cmVnaWQocmdpZCwgZWdpZCkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zZXRyZWdpZCgobG9uZykocmdpZCksIChsb25nKShlZ2lkKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfc2V0cmVnaWQocmVzLCByZ2lkLCBlZ2lkKSAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZXRyZWdpZChyZXMsIChsb25nKShyZ2lkKSwgKGxvbmcpKGVnaWQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3NldGdpZChnaWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2V0Z2lkKChsb25nKShnaWQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9zZXRnaWQocmVzLCBnaWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NldGdpZChyZXMsIChsb25nKShnaWQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3NldHJldWlkKHJ1aWQsIGV1aWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2V0cmV1aWQoKGxvbmcpKHJ1aWQpLCAobG9uZykoZXVpZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NldHJldWlkKHJlcywgcnVpZCwgZXVpZCkgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2V0cmV1aWQocmVzLCAobG9uZykocnVpZCksIChsb25nKShldWlkKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zZXR1aWQodWlkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NldHVpZCgobG9uZykodWlkKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfc2V0dWlkKHJlcywgdWlkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZXR1aWQocmVzLCAobG9uZykodWlkKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zZXRyZXN1aWQocnVpZCwgZXVpZCwgc3VpZCkgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NldHJlc3VpZCgobG9uZykocnVpZCksIChsb25nKShldWlkKSwgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoc3VpZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NldHJlc3VpZChyZXMsIHJ1aWQsIGV1aWQsIHN1aWQpICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2V0cmVzdWlkKHJlcywgKGxvbmcpKHJ1aWQpLCAobG9uZykoZXVpZCksICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShzdWlkKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zZXRyZXNnaWQocmdpZCwgZWdpZCwgc2dpZCkgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NldHJlc2dpZCgobG9uZykocmdpZCksIChsb25nKShlZ2lkKSwgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoc2dpZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NldHJlc2dpZChyZXMsIHJnaWQsIGVnaWQsIHNnaWQpICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2V0cmVzZ2lkKHJlcywgKGxvbmcpKHJnaWQpLCAobG9uZykoZWdpZCksICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShzZ2lkKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zZXRmc3VpZCh1aWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NldGZzdWlkKChsb25nKSh1aWQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9zZXRmc3VpZChyZXMsIHVpZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NldGZzdWlkKHJlcywgKGxvbmcpKHVpZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfc2V0ZnNnaWQoZ2lkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zZXRmc2dpZCgobG9uZykoZ2lkKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfc2V0ZnNnaWQocmVzLCBnaWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZXRmc2dpZChyZXMsIChsb25nKShnaWQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3NldHBnaWQocGlkLCBwZ2lkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2V0cGdpZCgobG9uZykocGlkKSwgKGxvbmcpKHBnaWQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9zZXRwZ2lkKHJlcywgcGlkLCBwZ2lkKSAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NldHBnaWQocmVzLCAobG9uZykocGlkKSwgKGxvbmcpKHBnaWQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3NldHNpZCgpIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2V0c2lkKCkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfc2V0c2lkKHJlcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZXRzaWQocmVzKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3NldGdyb3VwcyhnaWRzZXRzaXplLCBncm91cGxpc3QpICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2V0Z3JvdXBzKChsb25nKShnaWRzZXRzaXplKSwgKGxvbmcpKGdyb3VwbGlzdCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NldGdyb3VwcyhyZXMsIGdpZHNldHNpemUsIGdyb3VwbGlzdCkgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2V0Z3JvdXBzKHJlcywgKGxvbmcpKGdpZHNldHNpemUpLCAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShncm91cGxpc3QpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2FjY3QobmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfYWNjdCgobG9uZykobmFtZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2FjY3QocmVzLCBuYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfYWNjdChyZXMsIChsb25nKShuYW1lKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jYXBnZXQoaGVhZGVyLCBkYXRhcHRyKSAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NhcGdldCgobG9uZykoaGVhZGVyKSwgKGxvbmcpKGRhdGFwdHIpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jYXBnZXQocmVzLCBoZWFkZXIsIGRhdGFwdHIpICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NhcGdldChyZXMsIChsb25nKShoZWFkZXIpLCAobG9uZykoZGF0YXB0cikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY2Fwc2V0KGhlYWRlciwgZGF0YSkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jYXBzZXQoKGxvbmcpKGhlYWRlciksIChsb25nKShkYXRhKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY2Fwc2V0KHJlcywgaGVhZGVyLCBkYXRhKSAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jYXBzZXQocmVzLCAobG9uZykoaGVhZGVyKSwgKGxvbmcpKGRhdGEpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3BlcnNvbmFsaXR5KHBlcnNvbmFsaXR5KSAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfcGVyc29uYWxpdHkoKGxvbmcpKHBlcnNvbmFsaXR5KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfcGVyc29uYWxpdHkocmVzLCBwZXJzb25hbGl0eSkgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9wZXJzb25hbGl0eShyZXMsIChsb25nKShwZXJzb25hbGl0eSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfc2lncGVuZGluZyhzZXQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zaWdwZW5kaW5nKChsb25nKShzZXQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9zaWdwZW5kaW5nKHJlcywgc2V0KSAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NpZ3BlbmRpbmcocmVzLCAobG9uZykoc2V0KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zaWdwcm9jbWFzayhob3csIHNldCwgb3NldCkgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NpZ3Byb2NtYXNrKChsb25nKShob3cpLCAobG9uZykoc2V0KSwgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShvc2V0KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfc2lncHJvY21hc2socmVzLCBob3csIHNldCwgb3NldCkgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zaWdwcm9jbWFzayhyZXMsIChsb25nKShob3cpLCAobG9uZykoc2V0KSwgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykob3NldCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZ2V0aXRpbWVyKHdoaWNoLCB2YWx1ZSkgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9nZXRpdGltZXIoKGxvbmcpKHdoaWNoKSwgKGxvbmcpKHZhbHVlKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZ2V0aXRpbWVyKHJlcywgd2hpY2gsIHZhbHVlKSAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9nZXRpdGltZXIocmVzLCAobG9uZykod2hpY2gpLCAobG9uZykodmFsdWUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3NldGl0aW1lcih3aGljaCwgdmFsdWUsIG92YWx1ZSkgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2V0aXRpbWVyKChsb25nKSh3aGljaCksIChsb25nKSh2YWx1ZSksICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShvdmFsdWUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9zZXRpdGltZXIocmVzLCB3aGljaCwgdmFsdWUsIG92YWx1ZSkgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NldGl0aW1lcihyZXMsIChsb25nKSh3aGljaCksIChsb25nKSh2YWx1ZSksICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykob3ZhbHVlKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV90aW1lcl9jcmVhdGUod2hpY2hfY2xvY2ssIHRpbWVyX2V2ZW50X3NwZWMsICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZF90aW1lcl9pZCkgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3RpbWVyX2NyZWF0ZSggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcpKHdoaWNoX2Nsb2NrKSwgKGxvbmcpKHRpbWVyX2V2ZW50X3NwZWMpLCAobG9uZykoY3JlYXRlZF90aW1lcl9pZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3RpbWVyX2NyZWF0ZSggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICByZXMsIHdoaWNoX2Nsb2NrLCB0aW1lcl9ldmVudF9zcGVjLCBjcmVhdGVkX3RpbWVyX2lkKSAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfdGltZXJfY3JlYXRlKHJlcywgKGxvbmcpKHdoaWNoX2Nsb2NrKSwgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKSh0aW1lcl9ldmVudF9zcGVjKSwgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShjcmVhdGVkX3RpbWVyX2lkKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV90aW1lcl9nZXR0aW1lKHRpbWVyX2lkLCBzZXR0aW5nKSAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3RpbWVyX2dldHRpbWUoKGxvbmcpKHRpbWVyX2lkKSwgKGxvbmcpKHNldHRpbmcpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF90aW1lcl9nZXR0aW1lKHJlcywgdGltZXJfaWQsIHNldHRpbmcpICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3RpbWVyX2dldHRpbWUocmVzLCAobG9uZykodGltZXJfaWQpLCAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKHNldHRpbmcpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3RpbWVyX2dldG92ZXJydW4odGltZXJfaWQpICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfdGltZXJfZ2V0b3ZlcnJ1bigobG9uZykodGltZXJfaWQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF90aW1lcl9nZXRvdmVycnVuKHJlcywgdGltZXJfaWQpICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3RpbWVyX2dldG92ZXJydW4ocmVzLCAobG9uZykodGltZXJfaWQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3RpbWVyX3NldHRpbWUodGltZXJfaWQsIGZsYWdzLCBuZXdfc2V0dGluZywgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkX3NldHRpbmcpICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfdGltZXJfc2V0dGltZSgobG9uZykodGltZXJfaWQpLCAobG9uZykoZmxhZ3MpLCAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykobmV3X3NldHRpbmcpLCAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykob2xkX3NldHRpbmcpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF90aW1lcl9zZXR0aW1lKHJlcywgdGltZXJfaWQsIGZsYWdzLCAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19zZXR0aW5nLCBvbGRfc2V0dGluZykgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3RpbWVyX3NldHRpbWUoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nKSh0aW1lcl9pZCksIChsb25nKShmbGFncyksIChsb25nKShuZXdfc2V0dGluZyksICAgICAgICAgICAgICAgXAogICAgICAobG9uZykob2xkX3NldHRpbmcpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3RpbWVyX2RlbGV0ZSh0aW1lcl9pZCkgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfdGltZXJfZGVsZXRlKChsb25nKSh0aW1lcl9pZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3RpbWVyX2RlbGV0ZShyZXMsIHRpbWVyX2lkKSAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfdGltZXJfZGVsZXRlKHJlcywgKGxvbmcpKHRpbWVyX2lkKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jbG9ja19zZXR0aW1lKHdoaWNoX2Nsb2NrLCB0cCkgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2Nsb2NrX3NldHRpbWUoKGxvbmcpKHdoaWNoX2Nsb2NrKSwgKGxvbmcpKHRwKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY2xvY2tfc2V0dGltZShyZXMsIHdoaWNoX2Nsb2NrLCB0cCkgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jbG9ja19zZXR0aW1lKHJlcywgKGxvbmcpKHdoaWNoX2Nsb2NrKSwgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKSh0cCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY2xvY2tfZ2V0dGltZSh3aGljaF9jbG9jaywgdHApICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jbG9ja19nZXR0aW1lKChsb25nKSh3aGljaF9jbG9jayksIChsb25nKSh0cCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2Nsb2NrX2dldHRpbWUocmVzLCB3aGljaF9jbG9jaywgdHApICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY2xvY2tfZ2V0dGltZShyZXMsIChsb25nKSh3aGljaF9jbG9jayksICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykodHApKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2Nsb2NrX2FkanRpbWUod2hpY2hfY2xvY2ssIHR4KSAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY2xvY2tfYWRqdGltZSgobG9uZykod2hpY2hfY2xvY2spLCAobG9uZykodHgpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jbG9ja19hZGp0aW1lKHJlcywgd2hpY2hfY2xvY2ssIHR4KSAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2Nsb2NrX2FkanRpbWUocmVzLCAobG9uZykod2hpY2hfY2xvY2spLCAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKHR4KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jbG9ja19nZXRyZXMod2hpY2hfY2xvY2ssIHRwKSAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2Nsb2NrX2dldHJlcygobG9uZykod2hpY2hfY2xvY2spLCAobG9uZykodHApKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jbG9ja19nZXRyZXMocmVzLCB3aGljaF9jbG9jaywgdHApICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2Nsb2NrX2dldHJlcyhyZXMsIChsb25nKSh3aGljaF9jbG9jayksICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykodHApKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2Nsb2NrX25hbm9zbGVlcCh3aGljaF9jbG9jaywgZmxhZ3MsIHJxdHAsICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBybXRwKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY2xvY2tfbmFub3NsZWVwKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZykod2hpY2hfY2xvY2spLCAobG9uZykoZmxhZ3MpLCAobG9uZykocnF0cCksIChsb25nKShybXRwKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY2xvY2tfbmFub3NsZWVwKHJlcywgd2hpY2hfY2xvY2ssIGZsYWdzLCAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJxdHAsIHJtdHApICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jbG9ja19uYW5vc2xlZXAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZykod2hpY2hfY2xvY2spLCAobG9uZykoZmxhZ3MpLCAobG9uZykocnF0cCksIChsb25nKShybXRwKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9uaWNlKGluY3JlbWVudCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX25pY2UoKGxvbmcpKGluY3JlbWVudCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X25pY2UocmVzLCBpbmNyZW1lbnQpICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbmljZShyZXMsIChsb25nKShpbmNyZW1lbnQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3NjaGVkX3NldHNjaGVkdWxlcihwaWQsIHBvbGljeSwgcGFyYW0pICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2NoZWRfc2V0c2NoZWR1bGVyKChsb25nKShwaWQpLCAobG9uZykocG9saWN5KSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShwYXJhbSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NjaGVkX3NldHNjaGVkdWxlcihyZXMsIHBpZCwgcG9saWN5LCBwYXJhbSkgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2NoZWRfc2V0c2NoZWR1bGVyKCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcpKHBpZCksIChsb25nKShwb2xpY3kpLCAobG9uZykocGFyYW0pKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3NjaGVkX3NldHBhcmFtKHBpZCwgcGFyYW0pICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2NoZWRfc2V0cGFyYW0oKGxvbmcpKHBpZCksIChsb25nKShwYXJhbSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NjaGVkX3NldHBhcmFtKHJlcywgcGlkLCBwYXJhbSkgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2NoZWRfc2V0cGFyYW0ocmVzLCAobG9uZykocGlkKSwgKGxvbmcpKHBhcmFtKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zY2hlZF9nZXRzY2hlZHVsZXIocGlkKSAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NjaGVkX2dldHNjaGVkdWxlcigobG9uZykocGlkKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfc2NoZWRfZ2V0c2NoZWR1bGVyKHJlcywgcGlkKSAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zY2hlZF9nZXRzY2hlZHVsZXIocmVzLCAobG9uZykocGlkKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zY2hlZF9nZXRwYXJhbShwaWQsIHBhcmFtKSAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NjaGVkX2dldHBhcmFtKChsb25nKShwaWQpLCAobG9uZykocGFyYW0pKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9zY2hlZF9nZXRwYXJhbShyZXMsIHBpZCwgcGFyYW0pICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NjaGVkX2dldHBhcmFtKHJlcywgKGxvbmcpKHBpZCksIChsb25nKShwYXJhbSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfc2NoZWRfc2V0YWZmaW5pdHkocGlkLCBsZW4sIHVzZXJfbWFza19wdHIpICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zY2hlZF9zZXRhZmZpbml0eSgobG9uZykocGlkKSwgKGxvbmcpKGxlbiksICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykodXNlcl9tYXNrX3B0cikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NjaGVkX3NldGFmZmluaXR5KHJlcywgcGlkLCBsZW4sICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfbWFza19wdHIpICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2NoZWRfc2V0YWZmaW5pdHkoICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcpKHBpZCksIChsb25nKShsZW4pLCAobG9uZykodXNlcl9tYXNrX3B0cikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfc2NoZWRfZ2V0YWZmaW5pdHkocGlkLCBsZW4sIHVzZXJfbWFza19wdHIpICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zY2hlZF9nZXRhZmZpbml0eSgobG9uZykocGlkKSwgKGxvbmcpKGxlbiksICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykodXNlcl9tYXNrX3B0cikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NjaGVkX2dldGFmZmluaXR5KHJlcywgcGlkLCBsZW4sICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfbWFza19wdHIpICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2NoZWRfZ2V0YWZmaW5pdHkoICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcpKHBpZCksIChsb25nKShsZW4pLCAobG9uZykodXNlcl9tYXNrX3B0cikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfc2NoZWRfeWllbGQoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zY2hlZF95aWVsZCgpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NjaGVkX3lpZWxkKHJlcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2NoZWRfeWllbGQocmVzKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3NjaGVkX2dldF9wcmlvcml0eV9tYXgocG9saWN5KSAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2NoZWRfZ2V0X3ByaW9yaXR5X21heCgobG9uZykocG9saWN5KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfc2NoZWRfZ2V0X3ByaW9yaXR5X21heChyZXMsIHBvbGljeSkgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zY2hlZF9nZXRfcHJpb3JpdHlfbWF4KHJlcywgKGxvbmcpKHBvbGljeSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbihwb2xpY3kpICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zY2hlZF9nZXRfcHJpb3JpdHlfbWluKChsb25nKShwb2xpY3kpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9zY2hlZF9nZXRfcHJpb3JpdHlfbWluKHJlcywgcG9saWN5KSAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NjaGVkX2dldF9wcmlvcml0eV9taW4ocmVzLCAobG9uZykocG9saWN5KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zY2hlZF9ycl9nZXRfaW50ZXJ2YWwocGlkLCBpbnRlcnZhbCkgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NjaGVkX3JyX2dldF9pbnRlcnZhbCgobG9uZykocGlkKSwgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoaW50ZXJ2YWwpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9zY2hlZF9ycl9nZXRfaW50ZXJ2YWwocmVzLCBwaWQsIGludGVydmFsKSAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NjaGVkX3JyX2dldF9pbnRlcnZhbChyZXMsIChsb25nKShwaWQpLCAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoaW50ZXJ2YWwpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3NldHByaW9yaXR5KHdoaWNoLCB3aG8sIG5pY2V2YWwpICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2V0cHJpb3JpdHkoKGxvbmcpKHdoaWNoKSwgKGxvbmcpKHdobyksICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKG5pY2V2YWwpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9zZXRwcmlvcml0eShyZXMsIHdoaWNoLCB3aG8sIG5pY2V2YWwpICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NldHByaW9yaXR5KHJlcywgKGxvbmcpKHdoaWNoKSwgKGxvbmcpKHdobyksICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShuaWNldmFsKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9nZXRwcmlvcml0eSh3aGljaCwgd2hvKSAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2dldHByaW9yaXR5KChsb25nKSh3aGljaCksIChsb25nKSh3aG8pKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9nZXRwcmlvcml0eShyZXMsIHdoaWNoLCB3aG8pICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2dldHByaW9yaXR5KHJlcywgKGxvbmcpKHdoaWNoKSwgKGxvbmcpKHdobykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfc2h1dGRvd24oYXJnMCwgYXJnMSkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zaHV0ZG93bigobG9uZykoYXJnMCksIChsb25nKShhcmcxKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfc2h1dGRvd24ocmVzLCBhcmcwLCBhcmcxKSAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zaHV0ZG93bihyZXMsIChsb25nKShhcmcwKSwgKGxvbmcpKGFyZzEpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3JlYm9vdChtYWdpYzEsIG1hZ2ljMiwgY21kLCBhcmcpICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfcmVib290KChsb25nKShtYWdpYzEpLCAobG9uZykobWFnaWMyKSwgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShjbWQpLCAobG9uZykoYXJnKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfcmVib290KHJlcywgbWFnaWMxLCBtYWdpYzIsIGNtZCwgYXJnKSAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9yZWJvb3QocmVzLCAobG9uZykobWFnaWMxKSwgKGxvbmcpKG1hZ2ljMiksICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKGNtZCksIChsb25nKShhcmcpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3Jlc3RhcnRfc3lzY2FsbCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfcmVzdGFydF9zeXNjYWxsKCkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfcmVzdGFydF9zeXNjYWxsKHJlcykgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9yZXN0YXJ0X3N5c2NhbGwocmVzKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2tleGVjX2xvYWQoZW50cnksIG5yX3NlZ21lbnRzLCBzZWdtZW50cywgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfa2V4ZWNfbG9hZCgobG9uZykoZW50cnkpLCAobG9uZykobnJfc2VnbWVudHMpLCAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoc2VnbWVudHMpLCAobG9uZykoZmxhZ3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9rZXhlY19sb2FkKHJlcywgZW50cnksIG5yX3NlZ21lbnRzLCBzZWdtZW50cywgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2tleGVjX2xvYWQocmVzLCAobG9uZykoZW50cnkpLCAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKG5yX3NlZ21lbnRzKSwgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKHNlZ21lbnRzKSwgKGxvbmcpKGZsYWdzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9leGl0KGVycm9yX2NvZGUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2V4aXQoKGxvbmcpKGVycm9yX2NvZGUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9leGl0KHJlcywgZXJyb3JfY29kZSkgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2V4aXQocmVzLCAobG9uZykoZXJyb3JfY29kZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZXhpdF9ncm91cChlcnJvcl9jb2RlKSAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9leGl0X2dyb3VwKChsb25nKShlcnJvcl9jb2RlKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZXhpdF9ncm91cChyZXMsIGVycm9yX2NvZGUpICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9leGl0X2dyb3VwKHJlcywgKGxvbmcpKGVycm9yX2NvZGUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3dhaXQ0KHBpZCwgc3RhdF9hZGRyLCBvcHRpb25zLCBydSkgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfd2FpdDQoKGxvbmcpKHBpZCksIChsb25nKShzdGF0X2FkZHIpLCAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKG9wdGlvbnMpLCAobG9uZykocnUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF93YWl0NChyZXMsIHBpZCwgc3RhdF9hZGRyLCBvcHRpb25zLCBydSkgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3dhaXQ0KHJlcywgKGxvbmcpKHBpZCksIChsb25nKShzdGF0X2FkZHIpLCAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShvcHRpb25zKSwgKGxvbmcpKHJ1KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV93YWl0aWQod2hpY2gsIHBpZCwgaW5mb3AsIG9wdGlvbnMsIHJ1KSAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3dhaXRpZCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcpKHdoaWNoKSwgKGxvbmcpKHBpZCksIChsb25nKShpbmZvcCksIChsb25nKShvcHRpb25zKSwgKGxvbmcpKHJ1KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfd2FpdGlkKHJlcywgd2hpY2gsIHBpZCwgaW5mb3AsIG9wdGlvbnMsIHJ1KSAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF93YWl0aWQocmVzLCAobG9uZykod2hpY2gpLCAobG9uZykocGlkKSwgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKGluZm9wKSwgKGxvbmcpKG9wdGlvbnMpLCAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKHJ1KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV93YWl0cGlkKHBpZCwgc3RhdF9hZGRyLCBvcHRpb25zKSAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3dhaXRwaWQoKGxvbmcpKHBpZCksIChsb25nKShzdGF0X2FkZHIpLCAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKG9wdGlvbnMpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF93YWl0cGlkKHJlcywgcGlkLCBzdGF0X2FkZHIsIG9wdGlvbnMpICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3dhaXRwaWQocmVzLCAobG9uZykocGlkKSwgKGxvbmcpKHN0YXRfYWRkciksICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKG9wdGlvbnMpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3NldF90aWRfYWRkcmVzcyh0aWRwdHIpICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2V0X3RpZF9hZGRyZXNzKChsb25nKSh0aWRwdHIpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9zZXRfdGlkX2FkZHJlc3MocmVzLCB0aWRwdHIpICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NldF90aWRfYWRkcmVzcyhyZXMsIChsb25nKSh0aWRwdHIpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2luaXRfbW9kdWxlKHVtb2QsIGxlbiwgdWFyZ3MpICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfaW5pdF9tb2R1bGUoKGxvbmcpKHVtb2QpLCAobG9uZykobGVuKSwgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKHVhcmdzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW5pdF9tb2R1bGUocmVzLCB1bW9kLCBsZW4sIHVhcmdzKSAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9pbml0X21vZHVsZShyZXMsIChsb25nKSh1bW9kKSwgKGxvbmcpKGxlbiksICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykodWFyZ3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2RlbGV0ZV9tb2R1bGUobmFtZV91c2VyLCBmbGFncykgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZGVsZXRlX21vZHVsZSgobG9uZykobmFtZV91c2VyKSwgKGxvbmcpKGZsYWdzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZGVsZXRlX21vZHVsZShyZXMsIG5hbWVfdXNlciwgZmxhZ3MpICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9kZWxldGVfbW9kdWxlKHJlcywgKGxvbmcpKG5hbWVfdXNlciksICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfcnRfc2lncHJvY21hc2soaG93LCBzZXQsIG9zZXQsIHNpZ3NldHNpemUpICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9ydF9zaWdwcm9jbWFzayggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nKShob3cpLCAobG9uZykoc2V0KSwgKGxvbmcpKG9zZXQpLCAobG9uZykoc2lnc2V0c2l6ZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3J0X3NpZ3Byb2NtYXNrKHJlcywgaG93LCBzZXQsIG9zZXQsICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ3NldHNpemUpICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcnRfc2lncHJvY21hc2soICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcpKGhvdyksIChsb25nKShzZXQpLCAobG9uZykob3NldCksIChsb25nKShzaWdzZXRzaXplKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9ydF9zaWdwZW5kaW5nKHNldCwgc2lnc2V0c2l6ZSkgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3J0X3NpZ3BlbmRpbmcoKGxvbmcpKHNldCksIChsb25nKShzaWdzZXRzaXplKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfcnRfc2lncGVuZGluZyhyZXMsIHNldCwgc2lnc2V0c2l6ZSkgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9ydF9zaWdwZW5kaW5nKHJlcywgKGxvbmcpKHNldCksICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShzaWdzZXRzaXplKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9ydF9zaWd0aW1lZHdhaXQodXRoZXNlLCB1aW5mbywgdXRzLCAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnc2V0c2l6ZSkgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3J0X3NpZ3RpbWVkd2FpdCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcpKHV0aGVzZSksIChsb25nKSh1aW5mbyksIChsb25nKSh1dHMpLCAobG9uZykoc2lnc2V0c2l6ZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3J0X3NpZ3RpbWVkd2FpdChyZXMsIHV0aGVzZSwgdWluZm8sIHV0cywgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWdzZXRzaXplKSAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcnRfc2lndGltZWR3YWl0KCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcpKHV0aGVzZSksIChsb25nKSh1aW5mbyksIChsb25nKSh1dHMpLCAobG9uZykoc2lnc2V0c2l6ZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfcnRfdGdzaWdxdWV1ZWluZm8odGdpZCwgcGlkLCBzaWcsIHVpbmZvKSAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9ydF90Z3NpZ3F1ZXVlaW5mbygobG9uZykodGdpZCksIChsb25nKShwaWQpLCAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoc2lnKSwgKGxvbmcpKHVpbmZvKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfcnRfdGdzaWdxdWV1ZWluZm8ocmVzLCB0Z2lkLCBwaWQsIHNpZywgdWluZm8pIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9ydF90Z3NpZ3F1ZXVlaW5mbyggICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZykodGdpZCksIChsb25nKShwaWQpLCAobG9uZykoc2lnKSwgKGxvbmcpKHVpbmZvKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9raWxsKHBpZCwgc2lnKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2tpbGwoKGxvbmcpKHBpZCksIChsb25nKShzaWcpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9raWxsKHJlcywgcGlkLCBzaWcpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2tpbGwocmVzLCAobG9uZykocGlkKSwgKGxvbmcpKHNpZykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfdGdraWxsKHRnaWQsIHBpZCwgc2lnKSAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF90Z2tpbGwoKGxvbmcpKHRnaWQpLCAobG9uZykocGlkKSwgKGxvbmcpKHNpZykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3Rna2lsbChyZXMsIHRnaWQsIHBpZCwgc2lnKSAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfdGdraWxsKHJlcywgKGxvbmcpKHRnaWQpLCAobG9uZykocGlkKSwgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShzaWcpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3RraWxsKHBpZCwgc2lnKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfdGtpbGwoKGxvbmcpKHBpZCksIChsb25nKShzaWcpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF90a2lsbChyZXMsIHBpZCwgc2lnKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3RraWxsKHJlcywgKGxvbmcpKHBpZCksIChsb25nKShzaWcpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3J0X3NpZ3F1ZXVlaW5mbyhwaWQsIHNpZywgdWluZm8pICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfcnRfc2lncXVldWVpbmZvKChsb25nKShwaWQpLCAobG9uZykoc2lnKSwgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKSh1aW5mbykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3J0X3NpZ3F1ZXVlaW5mbyhyZXMsIHBpZCwgc2lnLCB1aW5mbykgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcnRfc2lncXVldWVpbmZvKHJlcywgKGxvbmcpKHBpZCksIChsb25nKShzaWcpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKSh1aW5mbykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfc2dldG1hc2soKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zZ2V0bWFzaygpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NnZXRtYXNrKHJlcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2dldG1hc2socmVzKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3NzZXRtYXNrKG5ld21hc2spICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc3NldG1hc2soKGxvbmcpKG5ld21hc2spKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9zc2V0bWFzayhyZXMsIG5ld21hc2spICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NzZXRtYXNrKHJlcywgKGxvbmcpKG5ld21hc2spKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3NpZ25hbChzaWcsIGhhbmRsZXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2lnbmFsKChsb25nKShzaWcpLCAobG9uZykoaGFuZGxlcikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NpZ25hbChyZXMsIHNpZywgaGFuZGxlcikgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2lnbmFsKHJlcywgKGxvbmcpKHNpZyksIChsb25nKShoYW5kbGVyKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9wYXVzZSgpIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfcGF1c2UoKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9wYXVzZShyZXMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3BhdXNlKHJlcykKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zeW5jKCkgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zeW5jKCkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfc3luYyhyZXMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zeW5jKHJlcykKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9mc3luYyhmZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2ZzeW5jKChsb25nKShmZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ZzeW5jKHJlcywgZmQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZnN5bmMocmVzLCAobG9uZykoZmQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ZkYXRhc3luYyhmZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZmRhdGFzeW5jKChsb25nKShmZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ZkYXRhc3luYyhyZXMsIGZkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZmRhdGFzeW5jKHJlcywgKGxvbmcpKGZkKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9iZGZsdXNoKGZ1bmMsIGRhdGEpICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2JkZmx1c2goKGxvbmcpKGZ1bmMpLCAobG9uZykoZGF0YSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2JkZmx1c2gocmVzLCBmdW5jLCBkYXRhKSAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfYmRmbHVzaChyZXMsIChsb25nKShmdW5jKSwgKGxvbmcpKGRhdGEpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX21vdW50KGRldl9uYW1lLCBkaXJfbmFtZSwgdHlwZSwgZmxhZ3MsIGRhdGEpICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbW91bnQoKGxvbmcpKGRldl9uYW1lKSwgKGxvbmcpKGRpcl9uYW1lKSwgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKHR5cGUpLCAobG9uZykoZmxhZ3MpLCAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKGRhdGEpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9tb3VudChyZXMsIGRldl9uYW1lLCBkaXJfbmFtZSwgdHlwZSwgZmxhZ3MsICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX21vdW50KHJlcywgKGxvbmcpKGRldl9uYW1lKSwgKGxvbmcpKGRpcl9uYW1lKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKSh0eXBlKSwgKGxvbmcpKGZsYWdzKSwgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShkYXRhKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV91bW91bnQobmFtZSwgZmxhZ3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3Vtb3VudCgobG9uZykobmFtZSksIChsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3Vtb3VudChyZXMsIG5hbWUsIGZsYWdzKSAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfdW1vdW50KHJlcywgKGxvbmcpKG5hbWUpLCAobG9uZykoZmxhZ3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX29sZHVtb3VudChuYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfb2xkdW1vdW50KChsb25nKShuYW1lKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfb2xkdW1vdW50KHJlcywgbmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9vbGR1bW91bnQocmVzLCAobG9uZykobmFtZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfdHJ1bmNhdGUocGF0aCwgbGVuZ3RoKSAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF90cnVuY2F0ZSgobG9uZykocGF0aCksIChsb25nKShsZW5ndGgpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF90cnVuY2F0ZShyZXMsIHBhdGgsIGxlbmd0aCkgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3RydW5jYXRlKHJlcywgKGxvbmcpKHBhdGgpLCAobG9uZykobGVuZ3RoKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9mdHJ1bmNhdGUoZmQsIGxlbmd0aCkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2Z0cnVuY2F0ZSgobG9uZykoZmQpLCAobG9uZykobGVuZ3RoKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZnRydW5jYXRlKHJlcywgZmQsIGxlbmd0aCkgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9mdHJ1bmNhdGUocmVzLCAobG9uZykoZmQpLCAobG9uZykobGVuZ3RoKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zdGF0KGZpbGVuYW1lLCBzdGF0YnVmKSAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3N0YXQoKGxvbmcpKGZpbGVuYW1lKSwgKGxvbmcpKHN0YXRidWYpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9zdGF0KHJlcywgZmlsZW5hbWUsIHN0YXRidWYpICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3N0YXQocmVzLCAobG9uZykoZmlsZW5hbWUpLCAobG9uZykoc3RhdGJ1ZikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfc3RhdGZzKHBhdGgsIGJ1ZikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zdGF0ZnMoKGxvbmcpKHBhdGgpLCAobG9uZykoYnVmKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfc3RhdGZzKHJlcywgcGF0aCwgYnVmKSAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zdGF0ZnMocmVzLCAobG9uZykocGF0aCksIChsb25nKShidWYpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3N0YXRmczY0KHBhdGgsIHN6LCBidWYpICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc3RhdGZzNjQoKGxvbmcpKHBhdGgpLCAobG9uZykoc3opLCAobG9uZykoYnVmKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfc3RhdGZzNjQocmVzLCBwYXRoLCBzeiwgYnVmKSAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zdGF0ZnM2NChyZXMsIChsb25nKShwYXRoKSwgKGxvbmcpKHN6KSwgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoYnVmKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9mc3RhdGZzKGZkLCBidWYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2ZzdGF0ZnMoKGxvbmcpKGZkKSwgKGxvbmcpKGJ1ZikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ZzdGF0ZnMocmVzLCBmZCwgYnVmKSAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZnN0YXRmcyhyZXMsIChsb25nKShmZCksIChsb25nKShidWYpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ZzdGF0ZnM2NChmZCwgc3osIGJ1ZikgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZnN0YXRmczY0KChsb25nKShmZCksIChsb25nKShzeiksIChsb25nKShidWYpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9mc3RhdGZzNjQocmVzLCBmZCwgc3osIGJ1ZikgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2ZzdGF0ZnM2NChyZXMsIChsb25nKShmZCksIChsb25nKShzeiksICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoYnVmKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9sc3RhdChmaWxlbmFtZSwgc3RhdGJ1ZikgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2xzdGF0KChsb25nKShmaWxlbmFtZSksIChsb25nKShzdGF0YnVmKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfbHN0YXQocmVzLCBmaWxlbmFtZSwgc3RhdGJ1ZikgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9sc3RhdChyZXMsIChsb25nKShmaWxlbmFtZSksIChsb25nKShzdGF0YnVmKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9mc3RhdChmZCwgc3RhdGJ1ZikgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2ZzdGF0KChsb25nKShmZCksIChsb25nKShzdGF0YnVmKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZnN0YXQocmVzLCBmZCwgc3RhdGJ1ZikgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9mc3RhdChyZXMsIChsb25nKShmZCksIChsb25nKShzdGF0YnVmKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9uZXdzdGF0KGZpbGVuYW1lLCBzdGF0YnVmKSAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX25ld3N0YXQoKGxvbmcpKGZpbGVuYW1lKSwgKGxvbmcpKHN0YXRidWYpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9uZXdzdGF0KHJlcywgZmlsZW5hbWUsIHN0YXRidWYpICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX25ld3N0YXQocmVzLCAobG9uZykoZmlsZW5hbWUpLCAobG9uZykoc3RhdGJ1ZikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfbmV3bHN0YXQoZmlsZW5hbWUsIHN0YXRidWYpICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9uZXdsc3RhdCgobG9uZykoZmlsZW5hbWUpLCAobG9uZykoc3RhdGJ1ZikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X25ld2xzdGF0KHJlcywgZmlsZW5hbWUsIHN0YXRidWYpICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbmV3bHN0YXQocmVzLCAobG9uZykoZmlsZW5hbWUpLCAobG9uZykoc3RhdGJ1ZikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfbmV3ZnN0YXQoZmQsIHN0YXRidWYpICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9uZXdmc3RhdCgobG9uZykoZmQpLCAobG9uZykoc3RhdGJ1ZikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X25ld2ZzdGF0KHJlcywgZmQsIHN0YXRidWYpICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbmV3ZnN0YXQocmVzLCAobG9uZykoZmQpLCAobG9uZykoc3RhdGJ1ZikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfdXN0YXQoZGV2LCB1YnVmKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF91c3RhdCgobG9uZykoZGV2KSwgKGxvbmcpKHVidWYpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF91c3RhdChyZXMsIGRldiwgdWJ1ZikgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3VzdGF0KHJlcywgKGxvbmcpKGRldiksIChsb25nKSh1YnVmKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zdGF0NjQoZmlsZW5hbWUsIHN0YXRidWYpICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3N0YXQ2NCgobG9uZykoZmlsZW5hbWUpLCAobG9uZykoc3RhdGJ1ZikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3N0YXQ2NChyZXMsIGZpbGVuYW1lLCBzdGF0YnVmKSAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc3RhdDY0KHJlcywgKGxvbmcpKGZpbGVuYW1lKSwgKGxvbmcpKHN0YXRidWYpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ZzdGF0NjQoZmQsIHN0YXRidWYpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZnN0YXQ2NCgobG9uZykoZmQpLCAobG9uZykoc3RhdGJ1ZikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ZzdGF0NjQocmVzLCBmZCwgc3RhdGJ1ZikgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZnN0YXQ2NChyZXMsIChsb25nKShmZCksIChsb25nKShzdGF0YnVmKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9sc3RhdDY0KGZpbGVuYW1lLCBzdGF0YnVmKSAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2xzdGF0NjQoKGxvbmcpKGZpbGVuYW1lKSwgKGxvbmcpKHN0YXRidWYpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9sc3RhdDY0KHJlcywgZmlsZW5hbWUsIHN0YXRidWYpICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2xzdGF0NjQocmVzLCAobG9uZykoZmlsZW5hbWUpLCAobG9uZykoc3RhdGJ1ZikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfc2V0eGF0dHIocGF0aCwgbmFtZSwgdmFsdWUsIHNpemUsIGZsYWdzKSAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zZXR4YXR0ciggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nKShwYXRoKSwgKGxvbmcpKG5hbWUpLCAobG9uZykodmFsdWUpLCAobG9uZykoc2l6ZSksIChsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NldHhhdHRyKHJlcywgcGF0aCwgbmFtZSwgdmFsdWUsIHNpemUsIGZsYWdzKSBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2V0eGF0dHIocmVzLCAobG9uZykocGF0aCksIChsb25nKShuYW1lKSwgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKHZhbHVlKSwgKGxvbmcpKHNpemUpLCAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKGZsYWdzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9sc2V0eGF0dHIocGF0aCwgbmFtZSwgdmFsdWUsIHNpemUsIGZsYWdzKSAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2xzZXR4YXR0ciggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcpKHBhdGgpLCAobG9uZykobmFtZSksIChsb25nKSh2YWx1ZSksIChsb25nKShzaXplKSwgKGxvbmcpKGZsYWdzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfbHNldHhhdHRyKHJlcywgcGF0aCwgbmFtZSwgdmFsdWUsIHNpemUsICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9sc2V0eGF0dHIocmVzLCAobG9uZykocGF0aCksIChsb25nKShuYW1lKSwgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKHZhbHVlKSwgKGxvbmcpKHNpemUpLCAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKGZsYWdzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9mc2V0eGF0dHIoZmQsIG5hbWUsIHZhbHVlLCBzaXplLCBmbGFncykgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2ZzZXR4YXR0ciggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcpKGZkKSwgKGxvbmcpKG5hbWUpLCAobG9uZykodmFsdWUpLCAobG9uZykoc2l6ZSksIChsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ZzZXR4YXR0cihyZXMsIGZkLCBuYW1lLCB2YWx1ZSwgc2l6ZSwgZmxhZ3MpICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZnNldHhhdHRyKHJlcywgKGxvbmcpKGZkKSwgKGxvbmcpKG5hbWUpLCAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKSh2YWx1ZSksIChsb25nKShzaXplKSwgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZ2V0eGF0dHIocGF0aCwgbmFtZSwgdmFsdWUsIHNpemUpICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9nZXR4YXR0cigobG9uZykocGF0aCksIChsb25nKShuYW1lKSwgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykodmFsdWUpLCAobG9uZykoc2l6ZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2dldHhhdHRyKHJlcywgcGF0aCwgbmFtZSwgdmFsdWUsIHNpemUpICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZ2V0eGF0dHIocmVzLCAobG9uZykocGF0aCksIChsb25nKShuYW1lKSwgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKHZhbHVlKSwgKGxvbmcpKHNpemUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2xnZXR4YXR0cihwYXRoLCBuYW1lLCB2YWx1ZSwgc2l6ZSkgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbGdldHhhdHRyKChsb25nKShwYXRoKSwgKGxvbmcpKG5hbWUpLCAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKSh2YWx1ZSksIChsb25nKShzaXplKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfbGdldHhhdHRyKHJlcywgcGF0aCwgbmFtZSwgdmFsdWUsIHNpemUpICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9sZ2V0eGF0dHIocmVzLCAobG9uZykocGF0aCksIChsb25nKShuYW1lKSwgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKHZhbHVlKSwgKGxvbmcpKHNpemUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ZnZXR4YXR0cihmZCwgbmFtZSwgdmFsdWUsIHNpemUpICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZmdldHhhdHRyKChsb25nKShmZCksIChsb25nKShuYW1lKSwgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKSh2YWx1ZSksIChsb25nKShzaXplKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZmdldHhhdHRyKHJlcywgZmQsIG5hbWUsIHZhbHVlLCBzaXplKSAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9mZ2V0eGF0dHIocmVzLCAobG9uZykoZmQpLCAobG9uZykobmFtZSksICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKHZhbHVlKSwgKGxvbmcpKHNpemUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2xpc3R4YXR0cihwYXRoLCBsaXN0LCBzaXplKSAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbGlzdHhhdHRyKChsb25nKShwYXRoKSwgKGxvbmcpKGxpc3QpLCAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShzaXplKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfbGlzdHhhdHRyKHJlcywgcGF0aCwgbGlzdCwgc2l6ZSkgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9saXN0eGF0dHIocmVzLCAobG9uZykocGF0aCksIChsb25nKShsaXN0KSwgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKHNpemUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2xsaXN0eGF0dHIocGF0aCwgbGlzdCwgc2l6ZSkgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbGxpc3R4YXR0cigobG9uZykocGF0aCksIChsb25nKShsaXN0KSwgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoc2l6ZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2xsaXN0eGF0dHIocmVzLCBwYXRoLCBsaXN0LCBzaXplKSAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbGxpc3R4YXR0cihyZXMsIChsb25nKShwYXRoKSwgKGxvbmcpKGxpc3QpLCAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoc2l6ZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZmxpc3R4YXR0cihmZCwgbGlzdCwgc2l6ZSkgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9mbGlzdHhhdHRyKChsb25nKShmZCksIChsb25nKShsaXN0KSwgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShzaXplKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZmxpc3R4YXR0cihyZXMsIGZkLCBsaXN0LCBzaXplKSAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9mbGlzdHhhdHRyKHJlcywgKGxvbmcpKGZkKSwgKGxvbmcpKGxpc3QpLCAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShzaXplKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9yZW1vdmV4YXR0cihwYXRoLCBuYW1lKSAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3JlbW92ZXhhdHRyKChsb25nKShwYXRoKSwgKGxvbmcpKG5hbWUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9yZW1vdmV4YXR0cihyZXMsIHBhdGgsIG5hbWUpICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3JlbW92ZXhhdHRyKHJlcywgKGxvbmcpKHBhdGgpLCAobG9uZykobmFtZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfbHJlbW92ZXhhdHRyKHBhdGgsIG5hbWUpICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9scmVtb3ZleGF0dHIoKGxvbmcpKHBhdGgpLCAobG9uZykobmFtZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2xyZW1vdmV4YXR0cihyZXMsIHBhdGgsIG5hbWUpICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbHJlbW92ZXhhdHRyKHJlcywgKGxvbmcpKHBhdGgpLCAobG9uZykobmFtZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZnJlbW92ZXhhdHRyKGZkLCBuYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9mcmVtb3ZleGF0dHIoKGxvbmcpKGZkKSwgKGxvbmcpKG5hbWUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9mcmVtb3ZleGF0dHIocmVzLCBmZCwgbmFtZSkgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2ZyZW1vdmV4YXR0cihyZXMsIChsb25nKShmZCksIChsb25nKShuYW1lKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9icmsoYnJrKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2JyaygobG9uZykoYnJrKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfYnJrKHJlcywgYnJrKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9icmsocmVzLCAobG9uZykoYnJrKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9tcHJvdGVjdChzdGFydCwgbGVuLCBwcm90KSAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX21wcm90ZWN0KChsb25nKShzdGFydCksIChsb25nKShsZW4pLCAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShwcm90KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfbXByb3RlY3QocmVzLCBzdGFydCwgbGVuLCBwcm90KSAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9tcHJvdGVjdChyZXMsIChsb25nKShzdGFydCksIChsb25nKShsZW4pLCAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykocHJvdCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfbXJlbWFwKGFkZHIsIG9sZF9sZW4sIG5ld19sZW4sIGZsYWdzLCAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19hZGRyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9tcmVtYXAoKGxvbmcpKGFkZHIpLCAobG9uZykob2xkX2xlbiksICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKG5ld19sZW4pLCAobG9uZykoZmxhZ3MpLCAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKG5ld19hZGRyKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfbXJlbWFwKHJlcywgYWRkciwgb2xkX2xlbiwgbmV3X2xlbiwgZmxhZ3MsICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19hZGRyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9tcmVtYXAocmVzLCAobG9uZykoYWRkciksIChsb25nKShvbGRfbGVuKSwgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKG5ld19sZW4pLCAobG9uZykoZmxhZ3MpLCAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKG5ld19hZGRyKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9yZW1hcF9maWxlX3BhZ2VzKHN0YXJ0LCBzaXplLCBwcm90LCBwZ29mZiwgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3JlbWFwX2ZpbGVfcGFnZXMoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcpKHN0YXJ0KSwgKGxvbmcpKHNpemUpLCAobG9uZykocHJvdCksIChsb25nKShwZ29mZiksIChsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3JlbWFwX2ZpbGVfcGFnZXMocmVzLCBzdGFydCwgc2l6ZSwgcHJvdCwgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdvZmYsIGZsYWdzKSAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcmVtYXBfZmlsZV9wYWdlcyhyZXMsIChsb25nKShzdGFydCksICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoc2l6ZSksIChsb25nKShwcm90KSwgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykocGdvZmYpLCAobG9uZykoZmxhZ3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX21zeW5jKHN0YXJ0LCBsZW4sIGZsYWdzKSAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbXN5bmMoKGxvbmcpKHN0YXJ0KSwgKGxvbmcpKGxlbiksIChsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X21zeW5jKHJlcywgc3RhcnQsIGxlbiwgZmxhZ3MpICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbXN5bmMocmVzLCAobG9uZykoc3RhcnQpLCAobG9uZykobGVuKSwgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKGZsYWdzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9tdW5tYXAoYWRkciwgbGVuKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX211bm1hcCgobG9uZykoYWRkciksIChsb25nKShsZW4pKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9tdW5tYXAocmVzLCBhZGRyLCBsZW4pICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX211bm1hcChyZXMsIChsb25nKShhZGRyKSwgKGxvbmcpKGxlbikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfbWxvY2soc3RhcnQsIGxlbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9tbG9jaygobG9uZykoc3RhcnQpLCAobG9uZykobGVuKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfbWxvY2socmVzLCBzdGFydCwgbGVuKSAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9tbG9jayhyZXMsIChsb25nKShzdGFydCksIChsb25nKShsZW4pKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX211bmxvY2soc3RhcnQsIGxlbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbXVubG9jaygobG9uZykoc3RhcnQpLCAobG9uZykobGVuKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfbXVubG9jayhyZXMsIHN0YXJ0LCBsZW4pICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9tdW5sb2NrKHJlcywgKGxvbmcpKHN0YXJ0KSwgKGxvbmcpKGxlbikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfbWxvY2thbGwoZmxhZ3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9tbG9ja2FsbCgobG9uZykoZmxhZ3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9tbG9ja2FsbChyZXMsIGZsYWdzKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX21sb2NrYWxsKHJlcywgKGxvbmcpKGZsYWdzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9tdW5sb2NrYWxsKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX211bmxvY2thbGwoKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9tdW5sb2NrYWxsKHJlcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX211bmxvY2thbGwocmVzKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX21hZHZpc2Uoc3RhcnQsIGxlbiwgYmVoYXZpb3IpICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbWFkdmlzZSgobG9uZykoc3RhcnQpLCAobG9uZykobGVuKSwgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoYmVoYXZpb3IpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9tYWR2aXNlKHJlcywgc3RhcnQsIGxlbiwgYmVoYXZpb3IpICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX21hZHZpc2UocmVzLCAobG9uZykoc3RhcnQpLCAobG9uZykobGVuKSwgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKGJlaGF2aW9yKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9taW5jb3JlKHN0YXJ0LCBsZW4sIHZlYykgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX21pbmNvcmUoKGxvbmcpKHN0YXJ0KSwgKGxvbmcpKGxlbiksIChsb25nKSh2ZWMpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9taW5jb3JlKHJlcywgc3RhcnQsIGxlbiwgdmVjKSAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX21pbmNvcmUocmVzLCAobG9uZykoc3RhcnQpLCAobG9uZykobGVuKSwgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKHZlYykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfcGl2b3Rfcm9vdChuZXdfcm9vdCwgcHV0X29sZCkgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9waXZvdF9yb290KChsb25nKShuZXdfcm9vdCksIChsb25nKShwdXRfb2xkKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfcGl2b3Rfcm9vdChyZXMsIG5ld19yb290LCBwdXRfb2xkKSAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9waXZvdF9yb290KHJlcywgKGxvbmcpKG5ld19yb290KSwgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShwdXRfb2xkKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jaHJvb3QoZmlsZW5hbWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2Nocm9vdCgobG9uZykoZmlsZW5hbWUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jaHJvb3QocmVzLCBmaWxlbmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2Nocm9vdChyZXMsIChsb25nKShmaWxlbmFtZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfbWtub2QoZmlsZW5hbWUsIG1vZGUsIGRldikgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9ta25vZCgobG9uZykoZmlsZW5hbWUpLCAobG9uZykobW9kZSksICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoZGV2KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfbWtub2QocmVzLCBmaWxlbmFtZSwgbW9kZSwgZGV2KSAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9ta25vZChyZXMsIChsb25nKShmaWxlbmFtZSksIChsb25nKShtb2RlKSwgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoZGV2KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9saW5rKG9sZG5hbWUsIG5ld25hbWUpICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2xpbmsoKGxvbmcpKG9sZG5hbWUpLCAobG9uZykobmV3bmFtZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2xpbmsocmVzLCBvbGRuYW1lLCBuZXduYW1lKSAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbGluayhyZXMsIChsb25nKShvbGRuYW1lKSwgKGxvbmcpKG5ld25hbWUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3N5bWxpbmsob2xkLCBuZXdfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc3ltbGluaygobG9uZykob2xkKSwgKGxvbmcpKG5ld18pKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9zeW1saW5rKHJlcywgb2xkLCBuZXdfKSAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3N5bWxpbmsocmVzLCAobG9uZykob2xkKSwgKGxvbmcpKG5ld18pKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3VubGluayhwYXRobmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfdW5saW5rKChsb25nKShwYXRobmFtZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3VubGluayhyZXMsIHBhdGhuYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfdW5saW5rKHJlcywgKGxvbmcpKHBhdGhuYW1lKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9yZW5hbWUob2xkbmFtZSwgbmV3bmFtZSkgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3JlbmFtZSgobG9uZykob2xkbmFtZSksIChsb25nKShuZXduYW1lKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfcmVuYW1lKHJlcywgb2xkbmFtZSwgbmV3bmFtZSkgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9yZW5hbWUocmVzLCAobG9uZykob2xkbmFtZSksIChsb25nKShuZXduYW1lKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jaG1vZChmaWxlbmFtZSwgbW9kZSkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NobW9kKChsb25nKShmaWxlbmFtZSksIChsb25nKShtb2RlKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY2htb2QocmVzLCBmaWxlbmFtZSwgbW9kZSkgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jaG1vZChyZXMsIChsb25nKShmaWxlbmFtZSksIChsb25nKShtb2RlKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9mY2htb2QoZmQsIG1vZGUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2ZjaG1vZCgobG9uZykoZmQpLCAobG9uZykobW9kZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ZjaG1vZChyZXMsIGZkLCBtb2RlKSAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZmNobW9kKHJlcywgKGxvbmcpKGZkKSwgKGxvbmcpKG1vZGUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ZjbnRsKGZkLCBjbWQsIGFyZykgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZmNudGwoKGxvbmcpKGZkKSwgKGxvbmcpKGNtZCksIChsb25nKShhcmcpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9mY250bChyZXMsIGZkLCBjbWQsIGFyZykgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2ZjbnRsKHJlcywgKGxvbmcpKGZkKSwgKGxvbmcpKGNtZCksIChsb25nKShhcmcpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ZjbnRsNjQoZmQsIGNtZCwgYXJnKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZmNudGw2NCgobG9uZykoZmQpLCAobG9uZykoY21kKSwgKGxvbmcpKGFyZykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ZjbnRsNjQocmVzLCBmZCwgY21kLCBhcmcpICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZmNudGw2NChyZXMsIChsb25nKShmZCksIChsb25nKShjbWQpLCAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoYXJnKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9waXBlKGZpbGRlcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3BpcGUoKGxvbmcpKGZpbGRlcykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3BpcGUocmVzLCBmaWxkZXMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcGlwZShyZXMsIChsb25nKShmaWxkZXMpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3BpcGUyKGZpbGRlcywgZmxhZ3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfcGlwZTIoKGxvbmcpKGZpbGRlcyksIChsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3BpcGUyKHJlcywgZmlsZGVzLCBmbGFncykgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcGlwZTIocmVzLCAobG9uZykoZmlsZGVzKSwgKGxvbmcpKGZsYWdzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9kdXAoZmlsZGVzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2R1cCgobG9uZykoZmlsZGVzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZHVwKHJlcywgZmlsZGVzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9kdXAocmVzLCAobG9uZykoZmlsZGVzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9kdXAyKG9sZGZkLCBuZXdmZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2R1cDIoKGxvbmcpKG9sZGZkKSwgKGxvbmcpKG5ld2ZkKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZHVwMihyZXMsIG9sZGZkLCBuZXdmZCkgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9kdXAyKHJlcywgKGxvbmcpKG9sZGZkKSwgKGxvbmcpKG5ld2ZkKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9kdXAzKG9sZGZkLCBuZXdmZCwgZmxhZ3MpICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2R1cDMoKGxvbmcpKG9sZGZkKSwgKGxvbmcpKG5ld2ZkKSwgKGxvbmcpKGZsYWdzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZHVwMyhyZXMsIG9sZGZkLCBuZXdmZCwgZmxhZ3MpICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9kdXAzKHJlcywgKGxvbmcpKG9sZGZkKSwgKGxvbmcpKG5ld2ZkKSwgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW9wZXJtKGZyb20sIG51bSwgb24pICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9pb3Blcm0oKGxvbmcpKGZyb20pLCAobG9uZykobnVtKSwgKGxvbmcpKG9uKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW9wZXJtKHJlcywgZnJvbSwgbnVtLCBvbikgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9pb3Blcm0ocmVzLCAobG9uZykoZnJvbSksIChsb25nKShudW0pLCAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKG9uKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pb2N0bChmZCwgY21kLCBhcmcpICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2lvY3RsKChsb25nKShmZCksIChsb25nKShjbWQpLCAobG9uZykoYXJnKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW9jdGwocmVzLCBmZCwgY21kLCBhcmcpICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9pb2N0bChyZXMsIChsb25nKShmZCksIChsb25nKShjbWQpLCAobG9uZykoYXJnKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9mbG9jayhmZCwgY21kKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2Zsb2NrKChsb25nKShmZCksIChsb25nKShjbWQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9mbG9jayhyZXMsIGZkLCBjbWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2Zsb2NrKHJlcywgKGxvbmcpKGZkKSwgKGxvbmcpKGNtZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW9fc2V0dXAobnJfcmVxcywgY3R4KSAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9pb19zZXR1cCgobG9uZykobnJfcmVxcyksIChsb25nKShjdHgpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pb19zZXR1cChyZXMsIG5yX3JlcXMsIGN0eCkgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2lvX3NldHVwKHJlcywgKGxvbmcpKG5yX3JlcXMpLCAobG9uZykoY3R4KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pb19kZXN0cm95KGN0eCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2lvX2Rlc3Ryb3koKGxvbmcpKGN0eCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2lvX2Rlc3Ryb3kocmVzLCBjdHgpICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfaW9fZGVzdHJveShyZXMsIChsb25nKShjdHgpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2lvX2dldGV2ZW50cyhjdHhfaWQsIG1pbl9uciwgbnIsIGV2ZW50cywgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0KSAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfaW9fZ2V0ZXZlbnRzKChsb25nKShjdHhfaWQpLCAobG9uZykobWluX25yKSwgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShuciksIChsb25nKShldmVudHMpLCAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKSh0aW1lb3V0KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW9fZ2V0ZXZlbnRzKHJlcywgY3R4X2lkLCBtaW5fbnIsIG5yLCBldmVudHMsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQpICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9pb19nZXRldmVudHMocmVzLCAobG9uZykoY3R4X2lkKSwgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKG1pbl9uciksIChsb25nKShuciksICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKGV2ZW50cyksIChsb25nKSh0aW1lb3V0KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pb19zdWJtaXQoY3R4X2lkLCBhcmcxLCBhcmcyKSAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2lvX3N1Ym1pdCgobG9uZykoY3R4X2lkKSwgKGxvbmcpKGFyZzEpLCAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoYXJnMikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2lvX3N1Ym1pdChyZXMsIGN0eF9pZCwgYXJnMSwgYXJnMikgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfaW9fc3VibWl0KHJlcywgKGxvbmcpKGN0eF9pZCksIChsb25nKShhcmcxKSwgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShhcmcyKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pb19jYW5jZWwoY3R4X2lkLCBpb2NiLCByZXN1bHQpICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2lvX2NhbmNlbCgobG9uZykoY3R4X2lkKSwgKGxvbmcpKGlvY2IpLCAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykocmVzdWx0KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW9fY2FuY2VsKHJlcywgY3R4X2lkLCBpb2NiLCByZXN1bHQpICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9pb19jYW5jZWwocmVzLCAobG9uZykoY3R4X2lkKSwgKGxvbmcpKGlvY2IpLCAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKHJlc3VsdCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfc2VuZGZpbGUob3V0X2ZkLCBpbl9mZCwgb2Zmc2V0LCBjb3VudCkgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zZW5kZmlsZSgobG9uZykob3V0X2ZkKSwgKGxvbmcpKGluX2ZkKSwgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykob2Zmc2V0KSwgKGxvbmcpKGNvdW50KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfc2VuZGZpbGUocmVzLCBvdXRfZmQsIGluX2ZkLCBvZmZzZXQsIGNvdW50KSAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZW5kZmlsZShyZXMsIChsb25nKShvdXRfZmQpLCAobG9uZykoaW5fZmQpLCAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykob2Zmc2V0KSwgKGxvbmcpKGNvdW50KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zZW5kZmlsZTY0KG91dF9mZCwgaW5fZmQsIG9mZnNldCwgY291bnQpICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NlbmRmaWxlNjQoKGxvbmcpKG91dF9mZCksIChsb25nKShpbl9mZCksICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKG9mZnNldCksIChsb25nKShjb3VudCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NlbmRmaWxlNjQocmVzLCBvdXRfZmQsIGluX2ZkLCBvZmZzZXQsIGNvdW50KSBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2VuZGZpbGU2NChyZXMsIChsb25nKShvdXRfZmQpLCAobG9uZykoaW5fZmQpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykob2Zmc2V0KSwgKGxvbmcpKGNvdW50KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9yZWFkbGluayhwYXRoLCBidWYsIGJ1ZnNpeikgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3JlYWRsaW5rKChsb25nKShwYXRoKSwgKGxvbmcpKGJ1ZiksICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShidWZzaXopKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9yZWFkbGluayhyZXMsIHBhdGgsIGJ1ZiwgYnVmc2l6KSAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3JlYWRsaW5rKHJlcywgKGxvbmcpKHBhdGgpLCAobG9uZykoYnVmKSwgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShidWZzaXopKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2NyZWF0KHBhdGhuYW1lLCBtb2RlKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY3JlYXQoKGxvbmcpKHBhdGhuYW1lKSwgKGxvbmcpKG1vZGUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jcmVhdChyZXMsIHBhdGhuYW1lLCBtb2RlKSAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NyZWF0KHJlcywgKGxvbmcpKHBhdGhuYW1lKSwgKGxvbmcpKG1vZGUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX29wZW4oZmlsZW5hbWUsIGZsYWdzLCBtb2RlKSAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfb3BlbigobG9uZykoZmlsZW5hbWUpLCAobG9uZykoZmxhZ3MpLCAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykobW9kZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X29wZW4ocmVzLCBmaWxlbmFtZSwgZmxhZ3MsIG1vZGUpICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfb3BlbihyZXMsIChsb25nKShmaWxlbmFtZSksIChsb25nKShmbGFncyksICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykobW9kZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY2xvc2UoZmQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jbG9zZSgobG9uZykoZmQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jbG9zZShyZXMsIGZkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2Nsb3NlKHJlcywgKGxvbmcpKGZkKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9hY2Nlc3MoZmlsZW5hbWUsIG1vZGUpICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2FjY2VzcygobG9uZykoZmlsZW5hbWUpLCAobG9uZykobW9kZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2FjY2VzcyhyZXMsIGZpbGVuYW1lLCBtb2RlKSAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfYWNjZXNzKHJlcywgKGxvbmcpKGZpbGVuYW1lKSwgKGxvbmcpKG1vZGUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3ZoYW5ndXAoKSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3ZoYW5ndXAoKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF92aGFuZ3VwKHJlcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3ZoYW5ndXAocmVzKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2Nob3duKGZpbGVuYW1lLCB1c2VyLCBncm91cCkgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY2hvd24oKGxvbmcpKGZpbGVuYW1lKSwgKGxvbmcpKHVzZXIpLCAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKGdyb3VwKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY2hvd24ocmVzLCBmaWxlbmFtZSwgdXNlciwgZ3JvdXApICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jaG93bihyZXMsIChsb25nKShmaWxlbmFtZSksIChsb25nKSh1c2VyKSwgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoZ3JvdXApKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2xjaG93bihmaWxlbmFtZSwgdXNlciwgZ3JvdXApICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbGNob3duKChsb25nKShmaWxlbmFtZSksIChsb25nKSh1c2VyKSwgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShncm91cCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2xjaG93bihyZXMsIGZpbGVuYW1lLCB1c2VyLCBncm91cCkgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbGNob3duKHJlcywgKGxvbmcpKGZpbGVuYW1lKSwgKGxvbmcpKHVzZXIpLCAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShncm91cCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZmNob3duKGZkLCB1c2VyLCBncm91cCkgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9mY2hvd24oKGxvbmcpKGZkKSwgKGxvbmcpKHVzZXIpLCAobG9uZykoZ3JvdXApKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9mY2hvd24ocmVzLCBmZCwgdXNlciwgZ3JvdXApICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2ZjaG93bihyZXMsIChsb25nKShmZCksIChsb25nKSh1c2VyKSwgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoZ3JvdXApKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2Nob3duMTYoZmlsZW5hbWUsIHVzZXIsIGdyb3VwKSAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY2hvd24xNigobG9uZykoZmlsZW5hbWUpLCAobG9uZyl1c2VyLCAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZylncm91cCkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfY2hvd24xNihyZXMsIGZpbGVuYW1lLCB1c2VyLCBncm91cCkgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jaG93bjE2KHJlcywgKGxvbmcpKGZpbGVuYW1lKSwgKGxvbmcpdXNlciwgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKWdyb3VwKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2xjaG93bjE2KGZpbGVuYW1lLCB1c2VyLCBncm91cCkgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbGNob3duMTYoKGxvbmcpKGZpbGVuYW1lKSwgKGxvbmcpdXNlciwgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpZ3JvdXApCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2xjaG93bjE2KHJlcywgZmlsZW5hbWUsIHVzZXIsIGdyb3VwKSAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbGNob3duMTYocmVzLCAobG9uZykoZmlsZW5hbWUpLCAobG9uZyl1c2VyLCAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpZ3JvdXApCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZmNob3duMTYoZmQsIHVzZXIsIGdyb3VwKSAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9mY2hvd24xNigobG9uZykoZmQpLCAobG9uZyl1c2VyLCAobG9uZylncm91cCkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZmNob3duMTYocmVzLCBmZCwgdXNlciwgZ3JvdXApICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9mY2hvd24xNihyZXMsIChsb25nKShmZCksIChsb25nKXVzZXIsICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZylncm91cCkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zZXRyZWdpZDE2KHJnaWQsIGVnaWQpICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NldHJlZ2lkMTYoKGxvbmcpcmdpZCwgKGxvbmcpZWdpZCkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfc2V0cmVnaWQxNihyZXMsIHJnaWQsIGVnaWQpICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZXRyZWdpZDE2KHJlcywgKGxvbmcpcmdpZCwgKGxvbmcpZWdpZCkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zZXRnaWQxNihnaWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NldGdpZDE2KChsb25nKWdpZCkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfc2V0Z2lkMTYocmVzLCBnaWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZXRnaWQxNihyZXMsIChsb25nKWdpZCkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zZXRyZXVpZDE2KHJ1aWQsIGV1aWQpICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NldHJldWlkMTYoKGxvbmcpcnVpZCwgKGxvbmcpZXVpZCkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfc2V0cmV1aWQxNihyZXMsIHJ1aWQsIGV1aWQpICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZXRyZXVpZDE2KHJlcywgKGxvbmcpcnVpZCwgKGxvbmcpZXVpZCkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zZXR1aWQxNih1aWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NldHVpZDE2KChsb25nKXVpZCkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfc2V0dWlkMTYocmVzLCB1aWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZXR1aWQxNihyZXMsIChsb25nKXVpZCkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zZXRyZXN1aWQxNihydWlkLCBldWlkLCBzdWlkKSAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NldHJlc3VpZDE2KChsb25nKXJ1aWQsIChsb25nKWV1aWQsIChsb25nKXN1aWQpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NldHJlc3VpZDE2KHJlcywgcnVpZCwgZXVpZCwgc3VpZCkgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2V0cmVzdWlkMTYocmVzLCAobG9uZylydWlkLCAobG9uZylldWlkLCAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpc3VpZCkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9nZXRyZXN1aWQxNihydWlkLCBldWlkLCBzdWlkKSAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2dldHJlc3VpZDE2KChsb25nKShydWlkKSwgKGxvbmcpKGV1aWQpLCAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShzdWlkKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZ2V0cmVzdWlkMTYocmVzLCBydWlkLCBldWlkLCBzdWlkKSAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9nZXRyZXN1aWQxNihyZXMsIChsb25nKShydWlkKSwgKGxvbmcpKGV1aWQpLCAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoc3VpZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfc2V0cmVzZ2lkMTYocmdpZCwgZWdpZCwgc2dpZCkgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zZXRyZXNnaWQxNigobG9uZylyZ2lkLCAobG9uZyllZ2lkLCAobG9uZylzZ2lkKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9zZXRyZXNnaWQxNihyZXMsIHJnaWQsIGVnaWQsIHNnaWQpICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NldHJlc2dpZDE2KHJlcywgKGxvbmcpcmdpZCwgKGxvbmcpZWdpZCwgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKXNnaWQpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZ2V0cmVzZ2lkMTYocmdpZCwgZWdpZCwgc2dpZCkgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9nZXRyZXNnaWQxNigobG9uZykocmdpZCksIChsb25nKShlZ2lkKSwgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoc2dpZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2dldHJlc2dpZDE2KHJlcywgcmdpZCwgZWdpZCwgc2dpZCkgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZ2V0cmVzZ2lkMTYocmVzLCAobG9uZykocmdpZCksIChsb25nKShlZ2lkKSwgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKHNnaWQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3NldGZzdWlkMTYodWlkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2V0ZnN1aWQxNigobG9uZyl1aWQpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NldGZzdWlkMTYocmVzLCB1aWQpICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2V0ZnN1aWQxNihyZXMsIChsb25nKXVpZCkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zZXRmc2dpZDE2KGdpZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NldGZzZ2lkMTYoKGxvbmcpZ2lkKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9zZXRmc2dpZDE2KHJlcywgZ2lkKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NldGZzZ2lkMTYocmVzLCAobG9uZylnaWQpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZ2V0Z3JvdXBzMTYoZ2lkc2V0c2l6ZSwgZ3JvdXBsaXN0KSAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9nZXRncm91cHMxNigobG9uZykoZ2lkc2V0c2l6ZSksICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoZ3JvdXBsaXN0KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZ2V0Z3JvdXBzMTYocmVzLCBnaWRzZXRzaXplLCBncm91cGxpc3QpICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9nZXRncm91cHMxNihyZXMsIChsb25nKShnaWRzZXRzaXplKSwgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoZ3JvdXBsaXN0KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zZXRncm91cHMxNihnaWRzZXRzaXplLCBncm91cGxpc3QpICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NldGdyb3VwczE2KChsb25nKShnaWRzZXRzaXplKSwgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShncm91cGxpc3QpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9zZXRncm91cHMxNihyZXMsIGdpZHNldHNpemUsIGdyb3VwbGlzdCkgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NldGdyb3VwczE2KHJlcywgKGxvbmcpKGdpZHNldHNpemUpLCAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShncm91cGxpc3QpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2dldHVpZDE2KCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZ2V0dWlkMTYoKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9nZXR1aWQxNihyZXMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2dldHVpZDE2KHJlcykKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9nZXRldWlkMTYoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2dldGV1aWQxNigpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2dldGV1aWQxNihyZXMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZ2V0ZXVpZDE2KHJlcykKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9nZXRnaWQxNigpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2dldGdpZDE2KCkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZ2V0Z2lkMTYocmVzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9nZXRnaWQxNihyZXMpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZ2V0ZWdpZDE2KCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9nZXRlZ2lkMTYoKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9nZXRlZ2lkMTYocmVzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2dldGVnaWQxNihyZXMpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfdXRpbWUoZmlsZW5hbWUsIHRpbWVzKSAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF91dGltZSgobG9uZykoZmlsZW5hbWUpLCAobG9uZykodGltZXMpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF91dGltZShyZXMsIGZpbGVuYW1lLCB0aW1lcykgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3V0aW1lKHJlcywgKGxvbmcpKGZpbGVuYW1lKSwgKGxvbmcpKHRpbWVzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV91dGltZXMoZmlsZW5hbWUsIHV0aW1lcykgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3V0aW1lcygobG9uZykoZmlsZW5hbWUpLCAobG9uZykodXRpbWVzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfdXRpbWVzKHJlcywgZmlsZW5hbWUsIHV0aW1lcykgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF91dGltZXMocmVzLCAobG9uZykoZmlsZW5hbWUpLCAobG9uZykodXRpbWVzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9sc2VlayhmZCwgb2Zmc2V0LCBvcmlnaW4pICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2xzZWVrKChsb25nKShmZCksIChsb25nKShvZmZzZXQpLCAobG9uZykob3JpZ2luKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfbHNlZWsocmVzLCBmZCwgb2Zmc2V0LCBvcmlnaW4pICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9sc2VlayhyZXMsIChsb25nKShmZCksIChsb25nKShvZmZzZXQpLCAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykob3JpZ2luKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9sbHNlZWsoZmQsIG9mZnNldF9oaWdoLCBvZmZzZXRfbG93LCByZXN1bHQsICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2xsc2VlaygobG9uZykoZmQpLCAobG9uZykob2Zmc2V0X2hpZ2gpLCAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykob2Zmc2V0X2xvdyksIChsb25nKShyZXN1bHQpLCAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykob3JpZ2luKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfbGxzZWVrKHJlcywgZmQsIG9mZnNldF9oaWdoLCBvZmZzZXRfbG93LCAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCwgb3JpZ2luKSAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9sbHNlZWsocmVzLCAobG9uZykoZmQpLCAobG9uZykob2Zmc2V0X2hpZ2gpLCAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKG9mZnNldF9sb3cpLCAobG9uZykocmVzdWx0KSwgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKG9yaWdpbikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfcmVhZChmZCwgYnVmLCBjb3VudCkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9yZWFkKChsb25nKShmZCksIChsb25nKShidWYpLCAobG9uZykoY291bnQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9yZWFkKHJlcywgZmQsIGJ1ZiwgY291bnQpICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3JlYWQocmVzLCAobG9uZykoZmQpLCAobG9uZykoYnVmKSwgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKGNvdW50KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9yZWFkdihmZCwgdmVjLCB2bGVuKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3JlYWR2KChsb25nKShmZCksIChsb25nKSh2ZWMpLCAobG9uZykodmxlbikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3JlYWR2KHJlcywgZmQsIHZlYywgdmxlbikgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcmVhZHYocmVzLCAobG9uZykoZmQpLCAobG9uZykodmVjKSwgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKHZsZW4pKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3dyaXRlKGZkLCBidWYsIGNvdW50KSAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfd3JpdGUoKGxvbmcpKGZkKSwgKGxvbmcpKGJ1ZiksIChsb25nKShjb3VudCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3dyaXRlKHJlcywgZmQsIGJ1ZiwgY291bnQpICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfd3JpdGUocmVzLCAobG9uZykoZmQpLCAobG9uZykoYnVmKSwgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKGNvdW50KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV93cml0ZXYoZmQsIHZlYywgdmxlbikgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3dyaXRldigobG9uZykoZmQpLCAobG9uZykodmVjKSwgKGxvbmcpKHZsZW4pKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF93cml0ZXYocmVzLCBmZCwgdmVjLCB2bGVuKSAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3dyaXRldihyZXMsIChsb25nKShmZCksIChsb25nKSh2ZWMpLCAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykodmxlbikpCgojaWZkZWYgX0xQNjQKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9wcmVhZDY0KGZkLCBidWYsIGNvdW50LCBwb3MpICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3ByZWFkNjQoKGxvbmcpKGZkKSwgKGxvbmcpKGJ1ZiksIChsb25nKShjb3VudCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKHBvcykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3ByZWFkNjQocmVzLCBmZCwgYnVmLCBjb3VudCwgcG9zKSAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcHJlYWQ2NChyZXMsIChsb25nKShmZCksIChsb25nKShidWYpLCAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoY291bnQpLCAobG9uZykocG9zKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9wd3JpdGU2NChmZCwgYnVmLCBjb3VudCwgcG9zKSAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3B3cml0ZTY0KChsb25nKShmZCksIChsb25nKShidWYpLCAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShjb3VudCksIChsb25nKShwb3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9wd3JpdGU2NChyZXMsIGZkLCBidWYsIGNvdW50LCBwb3MpICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3B3cml0ZTY0KHJlcywgKGxvbmcpKGZkKSwgKGxvbmcpKGJ1ZiksICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShjb3VudCksIChsb25nKShwb3MpKQojZWxzZQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3ByZWFkNjQoZmQsIGJ1ZiwgY291bnQsIHBvczAsIHBvczEpICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfcHJlYWQ2NCgobG9uZykoZmQpLCAobG9uZykoYnVmKSwgKGxvbmcpKGNvdW50KSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykocG9zMCksIChsb25nKShwb3MxKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfcHJlYWQ2NChyZXMsIGZkLCBidWYsIGNvdW50LCBwb3MwLCBwb3MxKSAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9wcmVhZDY0KCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZykoZmQpLCAobG9uZykoYnVmKSwgKGxvbmcpKGNvdW50KSwgKGxvbmcpKHBvczApLCAobG9uZykocG9zMSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfcHdyaXRlNjQoZmQsIGJ1ZiwgY291bnQsIHBvczAsIHBvczEpICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9wd3JpdGU2NCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nKShmZCksIChsb25nKShidWYpLCAobG9uZykoY291bnQpLCAobG9uZykocG9zMCksIChsb25nKShwb3MxKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfcHdyaXRlNjQocmVzLCBmZCwgYnVmLCBjb3VudCwgcG9zMCwgcG9zMSkgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9wd3JpdGU2NCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZykoZmQpLCAobG9uZykoYnVmKSwgKGxvbmcpKGNvdW50KSwgKGxvbmcpKHBvczApLCAobG9uZykocG9zMSkpCiNlbmRpZgoKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9wcmVhZHYoZmQsIHZlYywgdmxlbiwgcG9zX2wsIHBvc19oKSAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3ByZWFkdigobG9uZykoZmQpLCAobG9uZykodmVjKSwgKGxvbmcpKHZsZW4pLCAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykocG9zX2wpLCAobG9uZykocG9zX2gpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9wcmVhZHYocmVzLCBmZCwgdmVjLCB2bGVuLCBwb3NfbCwgcG9zX2gpICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3ByZWFkdihyZXMsIChsb25nKShmZCksIChsb25nKSh2ZWMpLCAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykodmxlbiksIChsb25nKShwb3NfbCksICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykocG9zX2gpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3B3cml0ZXYoZmQsIHZlYywgdmxlbiwgcG9zX2wsIHBvc19oKSAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfcHdyaXRldigobG9uZykoZmQpLCAobG9uZykodmVjKSwgKGxvbmcpKHZsZW4pLCAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykocG9zX2wpLCAobG9uZykocG9zX2gpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9wd3JpdGV2KHJlcywgZmQsIHZlYywgdmxlbiwgcG9zX2wsIHBvc19oKSAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3B3cml0ZXYocmVzLCAobG9uZykoZmQpLCAobG9uZykodmVjKSwgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKHZsZW4pLCAobG9uZykocG9zX2wpLCAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKHBvc19oKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9nZXRjd2QoYnVmLCBzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2dldGN3ZCgobG9uZykoYnVmKSwgKGxvbmcpKHNpemUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9nZXRjd2QocmVzLCBidWYsIHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2dldGN3ZChyZXMsIChsb25nKShidWYpLCAobG9uZykoc2l6ZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfbWtkaXIocGF0aG5hbWUsIG1vZGUpICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9ta2RpcigobG9uZykocGF0aG5hbWUpLCAobG9uZykobW9kZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X21rZGlyKHJlcywgcGF0aG5hbWUsIG1vZGUpICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbWtkaXIocmVzLCAobG9uZykocGF0aG5hbWUpLCAobG9uZykobW9kZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY2hkaXIoZmlsZW5hbWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jaGRpcigobG9uZykoZmlsZW5hbWUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jaGRpcihyZXMsIGZpbGVuYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NoZGlyKHJlcywgKGxvbmcpKGZpbGVuYW1lKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9mY2hkaXIoZmQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2ZjaGRpcigobG9uZykoZmQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9mY2hkaXIocmVzLCBmZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2ZjaGRpcihyZXMsIChsb25nKShmZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfcm1kaXIocGF0aG5hbWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9ybWRpcigobG9uZykocGF0aG5hbWUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9ybWRpcihyZXMsIHBhdGhuYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3JtZGlyKHJlcywgKGxvbmcpKHBhdGhuYW1lKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9sb29rdXBfZGNvb2tpZShjb29raWU2NCwgYnVmLCBsZW4pICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2xvb2t1cF9kY29va2llKChsb25nKShjb29raWU2NCksIChsb25nKShidWYpLCAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShsZW4pKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9sb29rdXBfZGNvb2tpZShyZXMsIGNvb2tpZTY0LCBidWYsIGxlbikgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2xvb2t1cF9kY29va2llKHJlcywgKGxvbmcpKGNvb2tpZTY0KSwgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShidWYpLCAobG9uZykobGVuKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9xdW90YWN0bChjbWQsIHNwZWNpYWwsIGlkLCBhZGRyKSAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3F1b3RhY3RsKChsb25nKShjbWQpLCAobG9uZykoc3BlY2lhbCksICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShpZCksIChsb25nKShhZGRyKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfcXVvdGFjdGwocmVzLCBjbWQsIHNwZWNpYWwsIGlkLCBhZGRyKSAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9xdW90YWN0bChyZXMsIChsb25nKShjbWQpLCAobG9uZykoc3BlY2lhbCksICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoaWQpLCAobG9uZykoYWRkcikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZ2V0ZGVudHMoZmQsIGRpcmVudCwgY291bnQpICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9nZXRkZW50cygobG9uZykoZmQpLCAobG9uZykoZGlyZW50KSwgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoY291bnQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9nZXRkZW50cyhyZXMsIGZkLCBkaXJlbnQsIGNvdW50KSAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2dldGRlbnRzKHJlcywgKGxvbmcpKGZkKSwgKGxvbmcpKGRpcmVudCksICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShjb3VudCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZ2V0ZGVudHM2NChmZCwgZGlyZW50LCBjb3VudCkgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9nZXRkZW50czY0KChsb25nKShmZCksIChsb25nKShkaXJlbnQpLCAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShjb3VudCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2dldGRlbnRzNjQocmVzLCBmZCwgZGlyZW50LCBjb3VudCkgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZ2V0ZGVudHM2NChyZXMsIChsb25nKShmZCksIChsb25nKShkaXJlbnQpLCAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoY291bnQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3NldHNvY2tvcHQoZmQsIGxldmVsLCBvcHRuYW1lLCBvcHR2YWwsIG9wdGxlbikgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2V0c29ja29wdCgobG9uZykoZmQpLCAobG9uZykobGV2ZWwpLCAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykob3B0bmFtZSksIChsb25nKShvcHR2YWwpLCAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykob3B0bGVuKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfc2V0c29ja29wdChyZXMsIGZkLCBsZXZlbCwgb3B0bmFtZSwgb3B0dmFsLCAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRsZW4pICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZXRzb2Nrb3B0KHJlcywgKGxvbmcpKGZkKSwgKGxvbmcpKGxldmVsKSwgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShvcHRuYW1lKSwgKGxvbmcpKG9wdHZhbCksICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShvcHRsZW4pKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2dldHNvY2tvcHQoZmQsIGxldmVsLCBvcHRuYW1lLCBvcHR2YWwsIG9wdGxlbikgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZ2V0c29ja29wdCgobG9uZykoZmQpLCAobG9uZykobGV2ZWwpLCAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykob3B0bmFtZSksIChsb25nKShvcHR2YWwpLCAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykob3B0bGVuKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZ2V0c29ja29wdChyZXMsIGZkLCBsZXZlbCwgb3B0bmFtZSwgb3B0dmFsLCAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRsZW4pICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9nZXRzb2Nrb3B0KHJlcywgKGxvbmcpKGZkKSwgKGxvbmcpKGxldmVsKSwgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShvcHRuYW1lKSwgKGxvbmcpKG9wdHZhbCksICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShvcHRsZW4pKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2JpbmQoYXJnMCwgYXJnMSwgYXJnMikgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfYmluZCgobG9uZykoYXJnMCksIChsb25nKShhcmcxKSwgKGxvbmcpKGFyZzIpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9iaW5kKHJlcywgYXJnMCwgYXJnMSwgYXJnMikgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2JpbmQocmVzLCAobG9uZykoYXJnMCksIChsb25nKShhcmcxKSwgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKGFyZzIpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2Nvbm5lY3QoYXJnMCwgYXJnMSwgYXJnMikgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY29ubmVjdCgobG9uZykoYXJnMCksIChsb25nKShhcmcxKSwgKGxvbmcpKGFyZzIpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jb25uZWN0KHJlcywgYXJnMCwgYXJnMSwgYXJnMikgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2Nvbm5lY3QocmVzLCAobG9uZykoYXJnMCksIChsb25nKShhcmcxKSwgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKGFyZzIpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2FjY2VwdChhcmcwLCBhcmcxLCBhcmcyKSAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfYWNjZXB0KChsb25nKShhcmcwKSwgKGxvbmcpKGFyZzEpLCAobG9uZykoYXJnMikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2FjY2VwdChyZXMsIGFyZzAsIGFyZzEsIGFyZzIpICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfYWNjZXB0KHJlcywgKGxvbmcpKGFyZzApLCAobG9uZykoYXJnMSksICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShhcmcyKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9hY2NlcHQ0KGFyZzAsIGFyZzEsIGFyZzIsIGFyZzMpICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2FjY2VwdDQoKGxvbmcpKGFyZzApLCAobG9uZykoYXJnMSksICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKGFyZzIpLCAobG9uZykoYXJnMykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2FjY2VwdDQocmVzLCBhcmcwLCBhcmcxLCBhcmcyLCBhcmczKSAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfYWNjZXB0NChyZXMsIChsb25nKShhcmcwKSwgKGxvbmcpKGFyZzEpLCAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoYXJnMiksIChsb25nKShhcmczKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9nZXRzb2NrbmFtZShhcmcwLCBhcmcxLCBhcmcyKSAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2dldHNvY2tuYW1lKChsb25nKShhcmcwKSwgKGxvbmcpKGFyZzEpLCAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShhcmcyKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZ2V0c29ja25hbWUocmVzLCBhcmcwLCBhcmcxLCBhcmcyKSAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9nZXRzb2NrbmFtZShyZXMsIChsb25nKShhcmcwKSwgKGxvbmcpKGFyZzEpLCAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoYXJnMikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZ2V0cGVlcm5hbWUoYXJnMCwgYXJnMSwgYXJnMikgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9nZXRwZWVybmFtZSgobG9uZykoYXJnMCksIChsb25nKShhcmcxKSwgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoYXJnMikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2dldHBlZXJuYW1lKHJlcywgYXJnMCwgYXJnMSwgYXJnMikgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZ2V0cGVlcm5hbWUocmVzLCAobG9uZykoYXJnMCksIChsb25nKShhcmcxKSwgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKGFyZzIpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3NlbmQoYXJnMCwgYXJnMSwgYXJnMiwgYXJnMykgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2VuZCgobG9uZykoYXJnMCksIChsb25nKShhcmcxKSwgKGxvbmcpKGFyZzIpLCAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoYXJnMykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NlbmQocmVzLCBhcmcwLCBhcmcxLCBhcmcyLCBhcmczKSAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2VuZChyZXMsIChsb25nKShhcmcwKSwgKGxvbmcpKGFyZzEpLCAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoYXJnMiksIChsb25nKShhcmczKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zZW5kdG8oYXJnMCwgYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwgYXJnNSkgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NlbmR0bygobG9uZykoYXJnMCksIChsb25nKShhcmcxKSwgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoYXJnMiksIChsb25nKShhcmczKSwgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoYXJnNCksIChsb25nKShhcmc1KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfc2VuZHRvKHJlcywgYXJnMCwgYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZzUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZW5kdG8ocmVzLCAobG9uZykoYXJnMCksIChsb25nKShhcmcxKSwgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKGFyZzIpLCAobG9uZykoYXJnMyksICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKGFyZzQpLCAobG9uZykoYXJnNSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfc2VuZG1zZyhmZCwgbXNnLCBmbGFncykgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zZW5kbXNnKChsb25nKShmZCksIChsb25nKShtc2cpLCAobG9uZykoZmxhZ3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9zZW5kbXNnKHJlcywgZmQsIG1zZywgZmxhZ3MpICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NlbmRtc2cocmVzLCAobG9uZykoZmQpLCAobG9uZykobXNnKSwgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKGZsYWdzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zZW5kbW1zZyhmZCwgbXNnLCB2bGVuLCBmbGFncykgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NlbmRtbXNnKChsb25nKShmZCksIChsb25nKShtc2cpLCAobG9uZykodmxlbiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NlbmRtbXNnKHJlcywgZmQsIG1zZywgdmxlbiwgZmxhZ3MpICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2VuZG1tc2cocmVzLCAobG9uZykoZmQpLCAobG9uZykobXNnKSwgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKHZsZW4pLCAobG9uZykoZmxhZ3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3JlY3YoYXJnMCwgYXJnMSwgYXJnMiwgYXJnMykgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfcmVjdigobG9uZykoYXJnMCksIChsb25nKShhcmcxKSwgKGxvbmcpKGFyZzIpLCAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoYXJnMykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3JlY3YocmVzLCBhcmcwLCBhcmcxLCBhcmcyLCBhcmczKSAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcmVjdihyZXMsIChsb25nKShhcmcwKSwgKGxvbmcpKGFyZzEpLCAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoYXJnMiksIChsb25nKShhcmczKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9yZWN2ZnJvbShhcmcwLCBhcmcxLCBhcmcyLCBhcmczLCBhcmc0LCBhcmc1KSAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3JlY3Zmcm9tKChsb25nKShhcmcwKSwgKGxvbmcpKGFyZzEpLCAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShhcmcyKSwgKGxvbmcpKGFyZzMpLCAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShhcmc0KSwgKGxvbmcpKGFyZzUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9yZWN2ZnJvbShyZXMsIGFyZzAsIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmc1KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3JlY3Zmcm9tKHJlcywgKGxvbmcpKGFyZzApLCAobG9uZykoYXJnMSksICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShhcmcyKSwgKGxvbmcpKGFyZzMpLCAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShhcmc0KSwgKGxvbmcpKGFyZzUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3JlY3Ztc2coZmQsIG1zZywgZmxhZ3MpICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfcmVjdm1zZygobG9uZykoZmQpLCAobG9uZykobXNnKSwgKGxvbmcpKGZsYWdzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfcmVjdm1zZyhyZXMsIGZkLCBtc2csIGZsYWdzKSAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9yZWN2bXNnKHJlcywgKGxvbmcpKGZkKSwgKGxvbmcpKG1zZyksICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfcmVjdm1tc2coZmQsIG1zZywgdmxlbiwgZmxhZ3MsIHRpbWVvdXQpICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9yZWN2bW1zZygobG9uZykoZmQpLCAobG9uZykobXNnKSwgKGxvbmcpKHZsZW4pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoZmxhZ3MpLCAobG9uZykodGltZW91dCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3JlY3ZtbXNnKHJlcywgZmQsIG1zZywgdmxlbiwgZmxhZ3MsIHRpbWVvdXQpICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcmVjdm1tc2cocmVzLCAobG9uZykoZmQpLCAobG9uZykobXNnKSwgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKHZsZW4pLCAobG9uZykoZmxhZ3MpLCAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKHRpbWVvdXQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3NvY2tldChhcmcwLCBhcmcxLCBhcmcyKSAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc29ja2V0KChsb25nKShhcmcwKSwgKGxvbmcpKGFyZzEpLCAobG9uZykoYXJnMikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NvY2tldChyZXMsIGFyZzAsIGFyZzEsIGFyZzIpICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc29ja2V0KHJlcywgKGxvbmcpKGFyZzApLCAobG9uZykoYXJnMSksICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShhcmcyKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zb2NrZXRwYWlyKGFyZzAsIGFyZzEsIGFyZzIsIGFyZzMpICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NvY2tldHBhaXIoKGxvbmcpKGFyZzApLCAobG9uZykoYXJnMSksICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKGFyZzIpLCAobG9uZykoYXJnMykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NvY2tldHBhaXIocmVzLCBhcmcwLCBhcmcxLCBhcmcyLCBhcmczKSAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc29ja2V0cGFpcihyZXMsIChsb25nKShhcmcwKSwgKGxvbmcpKGFyZzEpLCAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoYXJnMiksIChsb25nKShhcmczKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zb2NrZXRjYWxsKGNhbGwsIGFyZ3MpICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NvY2tldGNhbGwoKGxvbmcpKGNhbGwpLCAobG9uZykoYXJncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NvY2tldGNhbGwocmVzLCBjYWxsLCBhcmdzKSAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc29ja2V0Y2FsbChyZXMsIChsb25nKShjYWxsKSwgKGxvbmcpKGFyZ3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2xpc3RlbihhcmcwLCBhcmcxKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbGlzdGVuKChsb25nKShhcmcwKSwgKGxvbmcpKGFyZzEpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9saXN0ZW4ocmVzLCBhcmcwLCBhcmcxKSAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2xpc3RlbihyZXMsIChsb25nKShhcmcwKSwgKGxvbmcpKGFyZzEpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3BvbGwodWZkcywgbmZkcywgdGltZW91dCkgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfcG9sbCgobG9uZykodWZkcyksIChsb25nKShuZmRzKSwgKGxvbmcpKHRpbWVvdXQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9wb2xsKHJlcywgdWZkcywgbmZkcywgdGltZW91dCkgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3BvbGwocmVzLCAobG9uZykodWZkcyksIChsb25nKShuZmRzKSwgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKHRpbWVvdXQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3NlbGVjdChuLCBpbnAsIG91dHAsIGV4cCwgdHZwKSAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2VsZWN0KChsb25nKShuKSwgKGxvbmcpKGlucCksIChsb25nKShvdXRwKSwgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShleHApLCAobG9uZykodHZwKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfc2VsZWN0KHJlcywgbiwgaW5wLCBvdXRwLCBleHAsIHR2cCkgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZWxlY3QocmVzLCAobG9uZykobiksIChsb25nKShpbnApLCAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKG91dHApLCAobG9uZykoZXhwKSwgKGxvbmcpKHR2cCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfb2xkX3NlbGVjdChhcmcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9vbGRfc2VsZWN0KChsb25nKShhcmcpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9vbGRfc2VsZWN0KHJlcywgYXJnKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX29sZF9zZWxlY3QocmVzLCAobG9uZykoYXJnKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9lcG9sbF9jcmVhdGUoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2Vwb2xsX2NyZWF0ZSgobG9uZykoc2l6ZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2Vwb2xsX2NyZWF0ZShyZXMsIHNpemUpICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZXBvbGxfY3JlYXRlKHJlcywgKGxvbmcpKHNpemUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2Vwb2xsX2NyZWF0ZTEoZmxhZ3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZXBvbGxfY3JlYXRlMSgobG9uZykoZmxhZ3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9lcG9sbF9jcmVhdGUxKHJlcywgZmxhZ3MpICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2Vwb2xsX2NyZWF0ZTEocmVzLCAobG9uZykoZmxhZ3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2Vwb2xsX2N0bChlcGZkLCBvcCwgZmQsIGV2ZW50KSAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZXBvbGxfY3RsKChsb25nKShlcGZkKSwgKGxvbmcpKG9wKSwgKGxvbmcpKGZkKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShldmVudCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2Vwb2xsX2N0bChyZXMsIGVwZmQsIG9wLCBmZCwgZXZlbnQpICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZXBvbGxfY3RsKHJlcywgKGxvbmcpKGVwZmQpLCAobG9uZykob3ApLCAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShmZCksIChsb25nKShldmVudCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZXBvbGxfd2FpdChlcGZkLCBldmVudHMsIG1heGV2ZW50cywgdGltZW91dCkgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9lcG9sbF93YWl0KChsb25nKShlcGZkKSwgKGxvbmcpKGV2ZW50cyksICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShtYXhldmVudHMpLCAobG9uZykodGltZW91dCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2Vwb2xsX3dhaXQocmVzLCBlcGZkLCBldmVudHMsIG1heGV2ZW50cywgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dCkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZXBvbGxfd2FpdChyZXMsIChsb25nKShlcGZkKSwgKGxvbmcpKGV2ZW50cyksICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykobWF4ZXZlbnRzKSwgKGxvbmcpKHRpbWVvdXQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2Vwb2xsX3B3YWl0KGVwZmQsIGV2ZW50cywgbWF4ZXZlbnRzLCB0aW1lb3V0LCAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ21hc2ssIHNpZ3NldHNpemUpICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZXBvbGxfcHdhaXQoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZykoZXBmZCksIChsb25nKShldmVudHMpLCAobG9uZykobWF4ZXZlbnRzKSwgKGxvbmcpKHRpbWVvdXQpLCAgICAgICAgXAogICAgICAobG9uZykoc2lnbWFzayksIChsb25nKShzaWdzZXRzaXplKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZXBvbGxfcHdhaXQocmVzLCBlcGZkLCBldmVudHMsIG1heGV2ZW50cywgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dCwgc2lnbWFzaywgc2lnc2V0c2l6ZSkgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9lcG9sbF9wd2FpdCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZykoZXBmZCksIChsb25nKShldmVudHMpLCAobG9uZykobWF4ZXZlbnRzKSwgKGxvbmcpKHRpbWVvdXQpLCAgIFwKICAgICAgKGxvbmcpKHNpZ21hc2spLCAobG9uZykoc2lnc2V0c2l6ZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZXBvbGxfcHdhaXQyKGVwZmQsIGV2ZW50cywgbWF4ZXZlbnRzLCB0aW1lb3V0LCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ21hc2ssIHNpZ3NldHNpemUpICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9lcG9sbF9wd2FpdDIoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nKShlcGZkKSwgKGxvbmcpKGV2ZW50cyksIChsb25nKShtYXhldmVudHMpLCAobG9uZykodGltZW91dCksICAgICAgICBcCiAgICAgIChsb25nKShzaWdtYXNrKSwgKGxvbmcpKHNpZ3NldHNpemUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9lcG9sbF9wd2FpdDIocmVzLCBlcGZkLCBldmVudHMsIG1heGV2ZW50cywgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dCwgc2lnbWFzaywgc2lnc2V0c2l6ZSkgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2Vwb2xsX3B3YWl0MiggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nKShlcGZkKSwgKGxvbmcpKGV2ZW50cyksIChsb25nKShtYXhldmVudHMpLCAobG9uZykodGltZW91dCksICAgXAogICAgICAobG9uZykoc2lnbWFzayksIChsb25nKShzaWdzZXRzaXplKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9nZXRob3N0bmFtZShuYW1lLCBsZW4pICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2dldGhvc3RuYW1lKChsb25nKShuYW1lKSwgKGxvbmcpKGxlbikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2dldGhvc3RuYW1lKHJlcywgbmFtZSwgbGVuKSAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZ2V0aG9zdG5hbWUocmVzLCAobG9uZykobmFtZSksIChsb25nKShsZW4pKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3NldGhvc3RuYW1lKG5hbWUsIGxlbikgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2V0aG9zdG5hbWUoKGxvbmcpKG5hbWUpLCAobG9uZykobGVuKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfc2V0aG9zdG5hbWUocmVzLCBuYW1lLCBsZW4pICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZXRob3N0bmFtZShyZXMsIChsb25nKShuYW1lKSwgKGxvbmcpKGxlbikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfc2V0ZG9tYWlubmFtZShuYW1lLCBsZW4pICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zZXRkb21haW5uYW1lKChsb25nKShuYW1lKSwgKGxvbmcpKGxlbikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NldGRvbWFpbm5hbWUocmVzLCBuYW1lLCBsZW4pICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2V0ZG9tYWlubmFtZShyZXMsIChsb25nKShuYW1lKSwgKGxvbmcpKGxlbikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfbmV3dW5hbWUobmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9uZXd1bmFtZSgobG9uZykobmFtZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X25ld3VuYW1lKHJlcywgbmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbmV3dW5hbWUocmVzLCAobG9uZykobmFtZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfdW5hbWUoYXJnMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF91bmFtZSgobG9uZykoYXJnMCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3VuYW1lKHJlcywgYXJnMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfdW5hbWUocmVzLCAobG9uZykoYXJnMCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfb2xkdW5hbWUoYXJnMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9vbGR1bmFtZSgobG9uZykoYXJnMCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X29sZHVuYW1lKHJlcywgYXJnMCkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfb2xkdW5hbWUocmVzLCAobG9uZykoYXJnMCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZ2V0cmxpbWl0KHJlc291cmNlLCBybGltKSAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9nZXRybGltaXQoKGxvbmcpKHJlc291cmNlKSwgKGxvbmcpKHJsaW0pKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9nZXRybGltaXQocmVzLCByZXNvdXJjZSwgcmxpbSkgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2dldHJsaW1pdChyZXMsIChsb25nKShyZXNvdXJjZSksIChsb25nKShybGltKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9vbGRfZ2V0cmxpbWl0KHJlc291cmNlLCBybGltKSAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX29sZF9nZXRybGltaXQoKGxvbmcpKHJlc291cmNlKSwgKGxvbmcpKHJsaW0pKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9vbGRfZ2V0cmxpbWl0KHJlcywgcmVzb3VyY2UsIHJsaW0pICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX29sZF9nZXRybGltaXQocmVzLCAobG9uZykocmVzb3VyY2UpLCAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKHJsaW0pKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3NldHJsaW1pdChyZXNvdXJjZSwgcmxpbSkgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2V0cmxpbWl0KChsb25nKShyZXNvdXJjZSksIChsb25nKShybGltKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfc2V0cmxpbWl0KHJlcywgcmVzb3VyY2UsIHJsaW0pICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZXRybGltaXQocmVzLCAobG9uZykocmVzb3VyY2UpLCAobG9uZykocmxpbSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfcHJsaW1pdDY0KHBpZCwgcmVzb3VyY2UsIG5ld19ybGltLCBvbGRfcmxpbSkgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9wcmxpbWl0NjQoKGxvbmcpKHBpZCksIChsb25nKShyZXNvdXJjZSksICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKG5ld19ybGltKSwgKGxvbmcpKG9sZF9ybGltKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfcHJsaW1pdDY0KHJlcywgcGlkLCByZXNvdXJjZSwgbmV3X3JsaW0sICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZF9ybGltKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9wcmxpbWl0NjQocmVzLCAobG9uZykocGlkKSwgKGxvbmcpKHJlc291cmNlKSwgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKG5ld19ybGltKSwgKGxvbmcpKG9sZF9ybGltKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9nZXRydXNhZ2Uod2hvLCBydSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2dldHJ1c2FnZSgobG9uZykod2hvKSwgKGxvbmcpKHJ1KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZ2V0cnVzYWdlKHJlcywgd2hvLCBydSkgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9nZXRydXNhZ2UocmVzLCAobG9uZykod2hvKSwgKGxvbmcpKHJ1KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV91bWFzayhtYXNrKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3VtYXNrKChsb25nKShtYXNrKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfdW1hc2socmVzLCBtYXNrKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF91bWFzayhyZXMsIChsb25nKShtYXNrKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9tc2dnZXQoa2V5LCBtc2dmbGcpICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX21zZ2dldCgobG9uZykoa2V5KSwgKGxvbmcpKG1zZ2ZsZykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X21zZ2dldChyZXMsIGtleSwgbXNnZmxnKSAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbXNnZ2V0KHJlcywgKGxvbmcpKGtleSksIChsb25nKShtc2dmbGcpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX21zZ3NuZChtc3FpZCwgbXNncCwgbXNnc3osIG1zZ2ZsZykgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbXNnc25kKChsb25nKShtc3FpZCksIChsb25nKShtc2dwKSwgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShtc2dzeiksIChsb25nKShtc2dmbGcpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9tc2dzbmQocmVzLCBtc3FpZCwgbXNncCwgbXNnc3osIG1zZ2ZsZykgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX21zZ3NuZChyZXMsIChsb25nKShtc3FpZCksIChsb25nKShtc2dwKSwgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykobXNnc3opLCAobG9uZykobXNnZmxnKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9tc2dyY3YobXNxaWQsIG1zZ3AsIG1zZ3N6LCBtc2d0eXAsIG1zZ2ZsZykgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX21zZ3JjdigobG9uZykobXNxaWQpLCAobG9uZykobXNncCksICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykobXNnc3opLCAobG9uZykobXNndHlwKSwgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykobXNnZmxnKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfbXNncmN2KHJlcywgbXNxaWQsIG1zZ3AsIG1zZ3N6LCBtc2d0eXAsICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ2ZsZykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9tc2dyY3YocmVzLCAobG9uZykobXNxaWQpLCAobG9uZykobXNncCksICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKG1zZ3N6KSwgKGxvbmcpKG1zZ3R5cCksICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKG1zZ2ZsZykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfbXNnY3RsKG1zcWlkLCBjbWQsIGJ1ZikgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9tc2djdGwoKGxvbmcpKG1zcWlkKSwgKGxvbmcpKGNtZCksIChsb25nKShidWYpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9tc2djdGwocmVzLCBtc3FpZCwgY21kLCBidWYpICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX21zZ2N0bChyZXMsIChsb25nKShtc3FpZCksIChsb25nKShjbWQpLCAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoYnVmKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zZW1nZXQoa2V5LCBuc2Vtcywgc2VtZmxnKSAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NlbWdldCgobG9uZykoa2V5KSwgKGxvbmcpKG5zZW1zKSwgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoc2VtZmxnKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfc2VtZ2V0KHJlcywga2V5LCBuc2Vtcywgc2VtZmxnKSAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZW1nZXQocmVzLCAobG9uZykoa2V5KSwgKGxvbmcpKG5zZW1zKSwgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKHNlbWZsZykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfc2Vtb3Aoc2VtaWQsIHNvcHMsIG5zb3BzKSAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zZW1vcCgobG9uZykoc2VtaWQpLCAobG9uZykoc29wcyksIChsb25nKShuc29wcykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NlbW9wKHJlcywgc2VtaWQsIHNvcHMsIG5zb3BzKSAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2Vtb3AocmVzLCAobG9uZykoc2VtaWQpLCAobG9uZykoc29wcyksICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKG5zb3BzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zZW1jdGwoc2VtaWQsIHNlbW51bSwgY21kLCBhcmcpICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NlbWN0bCgobG9uZykoc2VtaWQpLCAobG9uZykoc2VtbnVtKSwgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoY21kKSwgKGxvbmcpKGFyZykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NlbWN0bChyZXMsIHNlbWlkLCBzZW1udW0sIGNtZCwgYXJnKSAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2VtY3RsKHJlcywgKGxvbmcpKHNlbWlkKSwgKGxvbmcpKHNlbW51bSksICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShjbWQpLCAobG9uZykoYXJnKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zZW10aW1lZG9wKHNlbWlkLCBzb3BzLCBuc29wcywgdGltZW91dCkgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NlbXRpbWVkb3AoKGxvbmcpKHNlbWlkKSwgKGxvbmcpKHNvcHMpLCAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKG5zb3BzKSwgKGxvbmcpKHRpbWVvdXQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9zZW10aW1lZG9wKHJlcywgc2VtaWQsIHNvcHMsIG5zb3BzLCB0aW1lb3V0KSAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NlbXRpbWVkb3AocmVzLCAobG9uZykoc2VtaWQpLCAobG9uZykoc29wcyksICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKG5zb3BzKSwgKGxvbmcpKHRpbWVvdXQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3NobWF0KHNobWlkLCBzaG1hZGRyLCBzaG1mbGcpICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2htYXQoKGxvbmcpKHNobWlkKSwgKGxvbmcpKHNobWFkZHIpLCAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKHNobWZsZykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NobWF0KHJlcywgc2htaWQsIHNobWFkZHIsIHNobWZsZykgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2htYXQocmVzLCAobG9uZykoc2htaWQpLCAobG9uZykoc2htYWRkciksICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKHNobWZsZykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfc2htZ2V0KGtleSwgc2l6ZSwgZmxhZykgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zaG1nZXQoKGxvbmcpKGtleSksIChsb25nKShzaXplKSwgKGxvbmcpKGZsYWcpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9zaG1nZXQocmVzLCBrZXksIHNpemUsIGZsYWcpICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NobWdldChyZXMsIChsb25nKShrZXkpLCAobG9uZykoc2l6ZSksICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoZmxhZykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfc2htZHQoc2htYWRkcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zaG1kdCgobG9uZykoc2htYWRkcikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NobWR0KHJlcywgc2htYWRkcikgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2htZHQocmVzLCAobG9uZykoc2htYWRkcikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfc2htY3RsKHNobWlkLCBjbWQsIGJ1ZikgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zaG1jdGwoKGxvbmcpKHNobWlkKSwgKGxvbmcpKGNtZCksIChsb25nKShidWYpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9zaG1jdGwocmVzLCBzaG1pZCwgY21kLCBidWYpICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NobWN0bChyZXMsIChsb25nKShzaG1pZCksIChsb25nKShjbWQpLCAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoYnVmKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pcGMoY2FsbCwgZmlyc3QsIHNlY29uZCwgdGhpcmQsIHB0ciwgZmlmdGgpICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2lwYygobG9uZykoY2FsbCksIChsb25nKShmaXJzdCksICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoc2Vjb25kKSwgKGxvbmcpKHRoaXJkKSwgKGxvbmcpKHB0ciksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoZmlmdGgpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pcGMocmVzLCBjYWxsLCBmaXJzdCwgc2Vjb25kLCB0aGlyZCwgcHRyLCAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlmdGgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2lwYyhyZXMsIChsb25nKShjYWxsKSwgKGxvbmcpKGZpcnN0KSwgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoc2Vjb25kKSwgKGxvbmcpKHRoaXJkKSwgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykocHRyKSwgKGxvbmcpKGZpZnRoKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9tcV9vcGVuKG5hbWUsIG9mbGFnLCBtb2RlLCBhdHRyKSAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX21xX29wZW4oKGxvbmcpKG5hbWUpLCAobG9uZykob2ZsYWcpLCAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKG1vZGUpLCAobG9uZykoYXR0cikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X21xX29wZW4ocmVzLCBuYW1lLCBvZmxhZywgbW9kZSwgYXR0cikgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbXFfb3BlbihyZXMsIChsb25nKShuYW1lKSwgKGxvbmcpKG9mbGFnKSwgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykobW9kZSksIChsb25nKShhdHRyKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9tcV91bmxpbmsobmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX21xX3VubGluaygobG9uZykobmFtZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X21xX3VubGluayhyZXMsIG5hbWUpICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbXFfdW5saW5rKHJlcywgKGxvbmcpKG5hbWUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX21xX3RpbWVkc2VuZChtcWRlcywgbXNnX3B0ciwgbXNnX2xlbiwgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2dfcHJpbywgYWJzX3RpbWVvdXQpICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbXFfdGltZWRzZW5kKChsb25nKShtcWRlcyksIChsb25nKShtc2dfcHRyKSwgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShtc2dfbGVuKSwgKGxvbmcpKG1zZ19wcmlvKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShhYnNfdGltZW91dCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X21xX3RpbWVkc2VuZChyZXMsIG1xZGVzLCBtc2dfcHRyLCBtc2dfbGVuLCAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2dfcHJpbywgYWJzX3RpbWVvdXQpICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbXFfdGltZWRzZW5kKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcpKG1xZGVzKSwgKGxvbmcpKG1zZ19wdHIpLCAobG9uZykobXNnX2xlbiksIChsb25nKShtc2dfcHJpbyksICBcCiAgICAgIChsb25nKShhYnNfdGltZW91dCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfbXFfdGltZWRyZWNlaXZlKG1xZGVzLCBtc2dfcHRyLCBtc2dfbGVuLCAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ19wcmlvLCBhYnNfdGltZW91dCkgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9tcV90aW1lZHJlY2VpdmUoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nKShtcWRlcyksIChsb25nKShtc2dfcHRyKSwgKGxvbmcpKG1zZ19sZW4pLCAobG9uZykobXNnX3ByaW8pLCAgICAgICBcCiAgICAgIChsb25nKShhYnNfdGltZW91dCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X21xX3RpbWVkcmVjZWl2ZShyZXMsIG1xZGVzLCBtc2dfcHRyLCBtc2dfbGVuLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2dfcHJpbywgYWJzX3RpbWVvdXQpICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbXFfdGltZWRyZWNlaXZlKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcpKG1xZGVzKSwgKGxvbmcpKG1zZ19wdHIpLCAobG9uZykobXNnX2xlbiksIChsb25nKShtc2dfcHJpbyksICBcCiAgICAgIChsb25nKShhYnNfdGltZW91dCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfbXFfbm90aWZ5KG1xZGVzLCBub3RpZmljYXRpb24pICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9tcV9ub3RpZnkoKGxvbmcpKG1xZGVzKSwgKGxvbmcpKG5vdGlmaWNhdGlvbikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X21xX25vdGlmeShyZXMsIG1xZGVzLCBub3RpZmljYXRpb24pICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbXFfbm90aWZ5KHJlcywgKGxvbmcpKG1xZGVzKSwgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShub3RpZmljYXRpb24pKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX21xX2dldHNldGF0dHIobXFkZXMsIG1xc3RhdCwgb21xc3RhdCkgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbXFfZ2V0c2V0YXR0cigobG9uZykobXFkZXMpLCAobG9uZykobXFzdGF0KSwgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykob21xc3RhdCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X21xX2dldHNldGF0dHIocmVzLCBtcWRlcywgbXFzdGF0LCBvbXFzdGF0KSAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbXFfZ2V0c2V0YXR0cihyZXMsIChsb25nKShtcWRlcyksICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykobXFzdGF0KSwgKGxvbmcpKG9tcXN0YXQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3BjaWNvbmZpZ19pb2Jhc2Uod2hpY2gsIGJ1cywgZGV2Zm4pICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfcGNpY29uZmlnX2lvYmFzZSgobG9uZykod2hpY2gpLCAobG9uZykoYnVzKSwgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoZGV2Zm4pKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9wY2ljb25maWdfaW9iYXNlKHJlcywgd2hpY2gsIGJ1cywgZGV2Zm4pICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3BjaWNvbmZpZ19pb2Jhc2UocmVzLCAobG9uZykod2hpY2gpLCAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKGJ1cyksIChsb25nKShkZXZmbikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfcGNpY29uZmlnX3JlYWQoYnVzLCBkZm4sIG9mZiwgbGVuLCBidWYpICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9wY2ljb25maWdfcmVhZCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nKShidXMpLCAobG9uZykoZGZuKSwgKGxvbmcpKG9mZiksIChsb25nKShsZW4pLCAobG9uZykoYnVmKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfcGNpY29uZmlnX3JlYWQocmVzLCBidXMsIGRmbiwgb2ZmLCBsZW4sIGJ1ZikgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9wY2ljb25maWdfcmVhZCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZykoYnVzKSwgKGxvbmcpKGRmbiksIChsb25nKShvZmYpLCAobG9uZykobGVuKSwgKGxvbmcpKGJ1ZikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfcGNpY29uZmlnX3dyaXRlKGJ1cywgZGZuLCBvZmYsIGxlbiwgYnVmKSAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9wY2ljb25maWdfd3JpdGUoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nKShidXMpLCAobG9uZykoZGZuKSwgKGxvbmcpKG9mZiksIChsb25nKShsZW4pLCAobG9uZykoYnVmKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfcGNpY29uZmlnX3dyaXRlKHJlcywgYnVzLCBkZm4sIG9mZiwgbGVuLCBidWYpIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9wY2ljb25maWdfd3JpdGUoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZykoYnVzKSwgKGxvbmcpKGRmbiksIChsb25nKShvZmYpLCAobG9uZykobGVuKSwgKGxvbmcpKGJ1ZikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfc3dhcG9uKHNwZWNpYWxmaWxlLCBzd2FwX2ZsYWdzKSAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zd2Fwb24oKGxvbmcpKHNwZWNpYWxmaWxlKSwgKGxvbmcpKHN3YXBfZmxhZ3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9zd2Fwb24ocmVzLCBzcGVjaWFsZmlsZSwgc3dhcF9mbGFncykgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3N3YXBvbihyZXMsIChsb25nKShzcGVjaWFsZmlsZSksICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoc3dhcF9mbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfc3dhcG9mZihzcGVjaWFsZmlsZSkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zd2Fwb2ZmKChsb25nKShzcGVjaWFsZmlsZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3N3YXBvZmYocmVzLCBzcGVjaWFsZmlsZSkgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc3dhcG9mZihyZXMsIChsb25nKShzcGVjaWFsZmlsZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfc3lzY3RsKGFyZ3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zeXNjdGwoKGxvbmcpKGFyZ3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9zeXNjdGwocmVzLCBhcmdzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3N5c2N0bChyZXMsIChsb25nKShhcmdzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zeXNpbmZvKGluZm8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3N5c2luZm8oKGxvbmcpKGluZm8pKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9zeXNpbmZvKHJlcywgaW5mbykgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3N5c2luZm8ocmVzLCAobG9uZykoaW5mbykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfc3lzZnMob3B0aW9uLCBhcmcxLCBhcmcyKSAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zeXNmcygobG9uZykob3B0aW9uKSwgKGxvbmcpKGFyZzEpLCAobG9uZykoYXJnMikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3N5c2ZzKHJlcywgb3B0aW9uLCBhcmcxLCBhcmcyKSAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc3lzZnMocmVzLCAobG9uZykob3B0aW9uKSwgKGxvbmcpKGFyZzEpLCAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKGFyZzIpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3N5c2xvZyh0eXBlLCBidWYsIGxlbikgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc3lzbG9nKChsb25nKSh0eXBlKSwgKGxvbmcpKGJ1ZiksIChsb25nKShsZW4pKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9zeXNsb2cocmVzLCB0eXBlLCBidWYsIGxlbikgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3N5c2xvZyhyZXMsIChsb25nKSh0eXBlKSwgKGxvbmcpKGJ1ZiksICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykobGVuKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV91c2VsaWIobGlicmFyeSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3VzZWxpYigobG9uZykobGlicmFyeSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3VzZWxpYihyZXMsIGxpYnJhcnkpICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfdXNlbGliKHJlcywgKGxvbmcpKGxpYnJhcnkpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX25pX3N5c2NhbGwoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbmlfc3lzY2FsbCgpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X25pX3N5c2NhbGwocmVzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbmlfc3lzY2FsbChyZXMpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfcHRyYWNlKHJlcXVlc3QsIHBpZCwgYWRkciwgZGF0YSkgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9wdHJhY2UoKGxvbmcpKHJlcXVlc3QpLCAobG9uZykocGlkKSwgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKGFkZHIpLCAobG9uZykoZGF0YSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3B0cmFjZShyZXMsIHJlcXVlc3QsIHBpZCwgYWRkciwgZGF0YSkgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcHRyYWNlKHJlcywgKGxvbmcpKHJlcXVlc3QpLCAobG9uZykocGlkKSwgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShhZGRyKSwgKGxvbmcpKGRhdGEpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2FkZF9rZXkoX3R5cGUsIF9kZXNjcmlwdGlvbiwgX3BheWxvYWQsIHBsZW4sICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdHJpbmdpZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfYWRkX2tleSgobG9uZykoX3R5cGUpLCAobG9uZykoX2Rlc2NyaXB0aW9uKSwgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoX3BheWxvYWQpLCAobG9uZykocGxlbiksICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoZGVzdHJpbmdpZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2FkZF9rZXkocmVzLCBfdHlwZSwgX2Rlc2NyaXB0aW9uLCBfcGF5bG9hZCwgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxlbiwgZGVzdHJpbmdpZCkgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfYWRkX2tleSggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcpKF90eXBlKSwgKGxvbmcpKF9kZXNjcmlwdGlvbiksIChsb25nKShfcGF5bG9hZCksICAgICAgICAgICAgICBcCiAgICAgIChsb25nKShwbGVuKSwgKGxvbmcpKGRlc3RyaW5naWQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3JlcXVlc3Rfa2V5KF90eXBlLCBfZGVzY3JpcHRpb24sICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jYWxsb3V0X2luZm8sIGRlc3RyaW5naWQpICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfcmVxdWVzdF9rZXkoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAobG9uZykoX3R5cGUpLCAobG9uZykoX2Rlc2NyaXB0aW9uKSwgKGxvbmcpKF9jYWxsb3V0X2luZm8pLCAgICAgICAgICAgICAgXAogICAgICAobG9uZykoZGVzdHJpbmdpZCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3JlcXVlc3Rfa2V5KHJlcywgX3R5cGUsIF9kZXNjcmlwdGlvbiwgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jYWxsb3V0X2luZm8sIGRlc3RyaW5naWQpICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcmVxdWVzdF9rZXkoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcpKF90eXBlKSwgKGxvbmcpKF9kZXNjcmlwdGlvbiksIChsb25nKShfY2FsbG91dF9pbmZvKSwgICAgICAgICBcCiAgICAgIChsb25nKShkZXN0cmluZ2lkKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9rZXljdGwoY21kLCBhcmcyLCBhcmczLCBhcmc0LCBhcmc1KSAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2tleWN0bCgobG9uZykoY21kKSwgKGxvbmcpKGFyZzIpLCAobG9uZykoYXJnMyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoYXJnNCksIChsb25nKShhcmc1KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfa2V5Y3RsKHJlcywgY21kLCBhcmcyLCBhcmczLCBhcmc0LCBhcmc1KSAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9rZXljdGwocmVzLCAobG9uZykoY21kKSwgKGxvbmcpKGFyZzIpLCAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKGFyZzMpLCAobG9uZykoYXJnNCksICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKGFyZzUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2lvcHJpb19zZXQod2hpY2gsIHdobywgaW9wcmlvKSAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfaW9wcmlvX3NldCgobG9uZykod2hpY2gpLCAobG9uZykod2hvKSwgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoaW9wcmlvKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW9wcmlvX3NldChyZXMsIHdoaWNoLCB3aG8sIGlvcHJpbykgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9pb3ByaW9fc2V0KHJlcywgKGxvbmcpKHdoaWNoKSwgKGxvbmcpKHdobyksICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShpb3ByaW8pKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2lvcHJpb19nZXQod2hpY2gsIHdobykgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfaW9wcmlvX2dldCgobG9uZykod2hpY2gpLCAobG9uZykod2hvKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW9wcmlvX2dldChyZXMsIHdoaWNoLCB3aG8pICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9pb3ByaW9fZ2V0KHJlcywgKGxvbmcpKHdoaWNoKSwgKGxvbmcpKHdobykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfc2V0X21lbXBvbGljeShtb2RlLCBubWFzaywgbWF4bm9kZSkgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zZXRfbWVtcG9saWN5KChsb25nKShtb2RlKSwgKGxvbmcpKG5tYXNrKSwgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShtYXhub2RlKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfc2V0X21lbXBvbGljeShyZXMsIG1vZGUsIG5tYXNrLCBtYXhub2RlKSAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZXRfbWVtcG9saWN5KHJlcywgKGxvbmcpKG1vZGUpLCAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShubWFzayksIChsb25nKShtYXhub2RlKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9taWdyYXRlX3BhZ2VzKHBpZCwgbWF4bm9kZSwgZnJvbSwgdG8pICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX21pZ3JhdGVfcGFnZXMoKGxvbmcpKHBpZCksIChsb25nKShtYXhub2RlKSwgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKGZyb20pLCAobG9uZykodG8pKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9taWdyYXRlX3BhZ2VzKHJlcywgcGlkLCBtYXhub2RlLCBmcm9tLCB0bykgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX21pZ3JhdGVfcGFnZXMoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nKShwaWQpLCAobG9uZykobWF4bm9kZSksIChsb25nKShmcm9tKSwgKGxvbmcpKHRvKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9tb3ZlX3BhZ2VzKHBpZCwgbnJfcGFnZXMsIHBhZ2VzLCBub2RlcywgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cywgZmxhZ3MpICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX21vdmVfcGFnZXMoKGxvbmcpKHBpZCksIChsb25nKShucl9wYWdlcyksICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKHBhZ2VzKSwgKGxvbmcpKG5vZGVzKSwgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKHN0YXR1cyksIChsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X21vdmVfcGFnZXMocmVzLCBwaWQsIG5yX3BhZ2VzLCBwYWdlcywgbm9kZXMsICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLCBmbGFncykgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbW92ZV9wYWdlcyhyZXMsIChsb25nKShwaWQpLCAobG9uZykobnJfcGFnZXMpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykocGFnZXMpLCAobG9uZykobm9kZXMpLCAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoc3RhdHVzKSwgKGxvbmcpKGZsYWdzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9tYmluZChzdGFydCwgbGVuLCBtb2RlLCBubWFzaywgbWF4bm9kZSwgZmxhZ3MpIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX21iaW5kKChsb25nKShzdGFydCksIChsb25nKShsZW4pLCAobG9uZykobW9kZSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShubWFzayksIChsb25nKShtYXhub2RlKSwgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X21iaW5kKHJlcywgc3RhcnQsIGxlbiwgbW9kZSwgbm1hc2ssIG1heG5vZGUsICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbWJpbmQocmVzLCAobG9uZykoc3RhcnQpLCAobG9uZykobGVuKSwgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKG1vZGUpLCAobG9uZykobm1hc2spLCAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKG1heG5vZGUpLCAobG9uZykoZmxhZ3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2dldF9tZW1wb2xpY3kocG9saWN5LCBubWFzaywgbWF4bm9kZSwgYWRkciwgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZ2V0X21lbXBvbGljeSgobG9uZykocG9saWN5KSwgKGxvbmcpKG5tYXNrKSwgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykobWF4bm9kZSksIChsb25nKShhZGRyKSwgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoZmxhZ3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9nZXRfbWVtcG9saWN5KHJlcywgcG9saWN5LCBubWFzaywgbWF4bm9kZSwgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHIsIGZsYWdzKSAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2dldF9tZW1wb2xpY3kocmVzLCAobG9uZykocG9saWN5KSwgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKG5tYXNrKSwgKGxvbmcpKG1heG5vZGUpLCAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKGFkZHIpLCAobG9uZykoZmxhZ3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2lub3RpZnlfaW5pdCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfaW5vdGlmeV9pbml0KCkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW5vdGlmeV9pbml0KHJlcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9pbm90aWZ5X2luaXQocmVzKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2lub3RpZnlfaW5pdDEoZmxhZ3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfaW5vdGlmeV9pbml0MSgobG9uZykoZmxhZ3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbm90aWZ5X2luaXQxKHJlcywgZmxhZ3MpICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2lub3RpZnlfaW5pdDEocmVzLCAobG9uZykoZmxhZ3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2lub3RpZnlfYWRkX3dhdGNoKGZkLCBwYXRoLCBtYXNrKSAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfaW5vdGlmeV9hZGRfd2F0Y2goKGxvbmcpKGZkKSwgKGxvbmcpKHBhdGgpLCAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKG1hc2spKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbm90aWZ5X2FkZF93YXRjaChyZXMsIGZkLCBwYXRoLCBtYXNrKSAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2lub3RpZnlfYWRkX3dhdGNoKHJlcywgKGxvbmcpKGZkKSwgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShwYXRoKSwgKGxvbmcpKG1hc2spKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2lub3RpZnlfcm1fd2F0Y2goZmQsIHdkKSAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfaW5vdGlmeV9ybV93YXRjaCgobG9uZykoZmQpLCAobG9uZykod2QpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbm90aWZ5X3JtX3dhdGNoKHJlcywgZmQsIHdkKSAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2lub3RpZnlfcm1fd2F0Y2gocmVzLCAobG9uZykoZmQpLCAobG9uZykod2QpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3NwdV9ydW4oZmQsIHVucGMsIHVzdGF0dXMpICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc3B1X3J1bigobG9uZykoZmQpLCAobG9uZykodW5wYyksICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykodXN0YXR1cykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NwdV9ydW4ocmVzLCBmZCwgdW5wYywgdXN0YXR1cykgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc3B1X3J1bihyZXMsIChsb25nKShmZCksIChsb25nKSh1bnBjKSwgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykodXN0YXR1cykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfc3B1X2NyZWF0ZShuYW1lLCBmbGFncywgbW9kZSwgZmQpICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zcHVfY3JlYXRlKChsb25nKShuYW1lKSwgKGxvbmcpKGZsYWdzKSwgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShtb2RlKSwgKGxvbmcpKGZkKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfc3B1X2NyZWF0ZShyZXMsIG5hbWUsIGZsYWdzLCBtb2RlLCBmZCkgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zcHVfY3JlYXRlKHJlcywgKGxvbmcpKG5hbWUpLCAobG9uZykoZmxhZ3MpLCAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShtb2RlKSwgKGxvbmcpKGZkKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9ta25vZGF0KGRmZCwgZmlsZW5hbWUsIG1vZGUsIGRldikgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX21rbm9kYXQoKGxvbmcpKGRmZCksIChsb25nKShmaWxlbmFtZSksICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKG1vZGUpLCAobG9uZykoZGV2KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfbWtub2RhdChyZXMsIGRmZCwgZmlsZW5hbWUsIG1vZGUsIGRldikgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9ta25vZGF0KHJlcywgKGxvbmcpKGRmZCksIChsb25nKShmaWxlbmFtZSksICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShtb2RlKSwgKGxvbmcpKGRldikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfbWtkaXJhdChkZmQsIHBhdGhuYW1lLCBtb2RlKSAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9ta2RpcmF0KChsb25nKShkZmQpLCAobG9uZykocGF0aG5hbWUpLCAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShtb2RlKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfbWtkaXJhdChyZXMsIGRmZCwgcGF0aG5hbWUsIG1vZGUpICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9ta2RpcmF0KHJlcywgKGxvbmcpKGRmZCksIChsb25nKShwYXRobmFtZSksICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShtb2RlKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV91bmxpbmthdChkZmQsIHBhdGhuYW1lLCBmbGFnKSAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3VubGlua2F0KChsb25nKShkZmQpLCAobG9uZykocGF0aG5hbWUpLCAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShmbGFnKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfdW5saW5rYXQocmVzLCBkZmQsIHBhdGhuYW1lLCBmbGFnKSAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF91bmxpbmthdChyZXMsIChsb25nKShkZmQpLCAobG9uZykocGF0aG5hbWUpLCAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoZmxhZykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfc3ltbGlua2F0KG9sZG5hbWUsIG5ld2RmZCwgbmV3bmFtZSkgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zeW1saW5rYXQoKGxvbmcpKG9sZG5hbWUpLCAobG9uZykobmV3ZGZkKSwgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKG5ld25hbWUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9zeW1saW5rYXQocmVzLCBvbGRuYW1lLCBuZXdkZmQsIG5ld25hbWUpICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3N5bWxpbmthdChyZXMsIChsb25nKShvbGRuYW1lKSwgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykobmV3ZGZkKSwgKGxvbmcpKG5ld25hbWUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2xpbmthdChvbGRkZmQsIG9sZG5hbWUsIG5ld2RmZCwgbmV3bmFtZSwgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbGlua2F0KChsb25nKShvbGRkZmQpLCAobG9uZykob2xkbmFtZSksICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShuZXdkZmQpLCAobG9uZykobmV3bmFtZSksICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2xpbmthdChyZXMsIG9sZGRmZCwgb2xkbmFtZSwgbmV3ZGZkLCBuZXduYW1lLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbGlua2F0KHJlcywgKGxvbmcpKG9sZGRmZCksIChsb25nKShvbGRuYW1lKSwgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShuZXdkZmQpLCAobG9uZykobmV3bmFtZSksICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfcmVuYW1lYXQob2xkZGZkLCBvbGRuYW1lLCBuZXdkZmQsIG5ld25hbWUpICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9yZW5hbWVhdCgobG9uZykob2xkZGZkKSwgKGxvbmcpKG9sZG5hbWUpLCAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykobmV3ZGZkKSwgKGxvbmcpKG5ld25hbWUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9yZW5hbWVhdChyZXMsIG9sZGRmZCwgb2xkbmFtZSwgbmV3ZGZkLCAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXduYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3JlbmFtZWF0KHJlcywgKGxvbmcpKG9sZGRmZCksIChsb25nKShvbGRuYW1lKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShuZXdkZmQpLCAobG9uZykobmV3bmFtZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZnV0aW1lc2F0KGRmZCwgZmlsZW5hbWUsIHV0aW1lcykgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9mdXRpbWVzYXQoKGxvbmcpKGRmZCksIChsb25nKShmaWxlbmFtZSksICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKHV0aW1lcykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2Z1dGltZXNhdChyZXMsIGRmZCwgZmlsZW5hbWUsIHV0aW1lcykgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZnV0aW1lc2F0KHJlcywgKGxvbmcpKGRmZCksIChsb25nKShmaWxlbmFtZSksICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKSh1dGltZXMpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ZhY2Nlc3NhdChkZmQsIGZpbGVuYW1lLCBtb2RlKSAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZmFjY2Vzc2F0KChsb25nKShkZmQpLCAobG9uZykoZmlsZW5hbWUpLCAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShtb2RlKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZmFjY2Vzc2F0KHJlcywgZGZkLCBmaWxlbmFtZSwgbW9kZSkgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9mYWNjZXNzYXQocmVzLCAobG9uZykoZGZkKSwgKGxvbmcpKGZpbGVuYW1lKSwgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKG1vZGUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ZjaG1vZGF0KGRmZCwgZmlsZW5hbWUsIG1vZGUpICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZmNobW9kYXQoKGxvbmcpKGRmZCksIChsb25nKShmaWxlbmFtZSksICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKG1vZGUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9mY2htb2RhdChyZXMsIGRmZCwgZmlsZW5hbWUsIG1vZGUpICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2ZjaG1vZGF0KHJlcywgKGxvbmcpKGRmZCksIChsb25nKShmaWxlbmFtZSksICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShtb2RlKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9mY2hvd25hdChkZmQsIGZpbGVuYW1lLCB1c2VyLCBncm91cCwgZmxhZykgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2ZjaG93bmF0KChsb25nKShkZmQpLCAobG9uZykoZmlsZW5hbWUpLCAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKSh1c2VyKSwgKGxvbmcpKGdyb3VwKSwgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShmbGFnKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZmNob3duYXQocmVzLCBkZmQsIGZpbGVuYW1lLCB1c2VyLCBncm91cCwgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9mY2hvd25hdChyZXMsIChsb25nKShkZmQpLCAobG9uZykoZmlsZW5hbWUpLCAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykodXNlciksIChsb25nKShncm91cCksICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoZmxhZykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfb3BlbmF0KGRmZCwgZmlsZW5hbWUsIGZsYWdzLCBtb2RlKSAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9vcGVuYXQoKGxvbmcpKGRmZCksIChsb25nKShmaWxlbmFtZSksICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKGZsYWdzKSwgKGxvbmcpKG1vZGUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9vcGVuYXQocmVzLCBkZmQsIGZpbGVuYW1lLCBmbGFncywgbW9kZSkgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX29wZW5hdChyZXMsIChsb25nKShkZmQpLCAobG9uZykoZmlsZW5hbWUpLCAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoZmxhZ3MpLCAobG9uZykobW9kZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfbmV3ZnN0YXRhdChkZmQsIGZpbGVuYW1lLCBzdGF0YnVmLCBmbGFnKSAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9uZXdmc3RhdGF0KChsb25nKShkZmQpLCAobG9uZykoZmlsZW5hbWUpLCAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShzdGF0YnVmKSwgKGxvbmcpKGZsYWcpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9uZXdmc3RhdGF0KHJlcywgZGZkLCBmaWxlbmFtZSwgc3RhdGJ1ZiwgZmxhZykgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX25ld2ZzdGF0YXQocmVzLCAobG9uZykoZGZkKSwgKGxvbmcpKGZpbGVuYW1lKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKHN0YXRidWYpLCAobG9uZykoZmxhZykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZnN0YXRhdDY0KGRmZCwgZmlsZW5hbWUsIHN0YXRidWYsIGZsYWcpICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9mc3RhdGF0NjQoKGxvbmcpKGRmZCksIChsb25nKShmaWxlbmFtZSksICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKHN0YXRidWYpLCAobG9uZykoZmxhZykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ZzdGF0YXQ2NChyZXMsIGRmZCwgZmlsZW5hbWUsIHN0YXRidWYsIGZsYWcpICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZnN0YXRhdDY0KHJlcywgKGxvbmcpKGRmZCksIChsb25nKShmaWxlbmFtZSksICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShzdGF0YnVmKSwgKGxvbmcpKGZsYWcpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3JlYWRsaW5rYXQoZGZkLCBwYXRoLCBidWYsIGJ1ZnNpeikgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfcmVhZGxpbmthdCgobG9uZykoZGZkKSwgKGxvbmcpKHBhdGgpLCAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoYnVmKSwgKGxvbmcpKGJ1ZnNpeikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3JlYWRsaW5rYXQocmVzLCBkZmQsIHBhdGgsIGJ1ZiwgYnVmc2l6KSAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcmVhZGxpbmthdChyZXMsIChsb25nKShkZmQpLCAobG9uZykocGF0aCksICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoYnVmKSwgKGxvbmcpKGJ1ZnNpeikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfdXRpbWVuc2F0KGRmZCwgZmlsZW5hbWUsIHV0aW1lcywgZmxhZ3MpICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF91dGltZW5zYXQoKGxvbmcpKGRmZCksIChsb25nKShmaWxlbmFtZSksICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKHV0aW1lcyksIChsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3V0aW1lbnNhdChyZXMsIGRmZCwgZmlsZW5hbWUsIHV0aW1lcywgZmxhZ3MpICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfdXRpbWVuc2F0KHJlcywgKGxvbmcpKGRmZCksIChsb25nKShmaWxlbmFtZSksICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKSh1dGltZXMpLCAobG9uZykoZmxhZ3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3Vuc2hhcmUodW5zaGFyZV9mbGFncykgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfdW5zaGFyZSgobG9uZykodW5zaGFyZV9mbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3Vuc2hhcmUocmVzLCB1bnNoYXJlX2ZsYWdzKSAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfdW5zaGFyZShyZXMsIChsb25nKSh1bnNoYXJlX2ZsYWdzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zcGxpY2UoZmRfaW4sIG9mZl9pbiwgZmRfb3V0LCBvZmZfb3V0LCBsZW4sICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NwbGljZSgobG9uZykoZmRfaW4pLCAobG9uZykob2ZmX2luKSwgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoZmRfb3V0KSwgKGxvbmcpKG9mZl9vdXQpLCAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykobGVuKSwgKGxvbmcpKGZsYWdzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfc3BsaWNlKHJlcywgZmRfaW4sIG9mZl9pbiwgZmRfb3V0LCBvZmZfb3V0LCAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbiwgZmxhZ3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zcGxpY2UocmVzLCAobG9uZykoZmRfaW4pLCAobG9uZykob2ZmX2luKSwgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKGZkX291dCksIChsb25nKShvZmZfb3V0KSwgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKGxlbiksIChsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfdm1zcGxpY2UoZmQsIGlvdiwgbnJfc2VncywgZmxhZ3MpICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF92bXNwbGljZSgobG9uZykoZmQpLCAobG9uZykoaW92KSwgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykobnJfc2VncyksIChsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3Ztc3BsaWNlKHJlcywgZmQsIGlvdiwgbnJfc2VncywgZmxhZ3MpICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfdm1zcGxpY2UocmVzLCAobG9uZykoZmQpLCAobG9uZykoaW92KSwgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKG5yX3NlZ3MpLCAobG9uZykoZmxhZ3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3RlZShmZGluLCBmZG91dCwgbGVuLCBmbGFncykgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfdGVlKChsb25nKShmZGluKSwgKGxvbmcpKGZkb3V0KSwgKGxvbmcpKGxlbiksICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3RlZShyZXMsIGZkaW4sIGZkb3V0LCBsZW4sIGZsYWdzKSAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfdGVlKHJlcywgKGxvbmcpKGZkaW4pLCAobG9uZykoZmRvdXQpLCAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShsZW4pLCAobG9uZykoZmxhZ3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2dldF9yb2J1c3RfbGlzdChwaWQsIGhlYWRfcHRyLCBsZW5fcHRyKSAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZ2V0X3JvYnVzdF9saXN0KChsb25nKShwaWQpLCAobG9uZykoaGVhZF9wdHIpLCAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShsZW5fcHRyKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZ2V0X3JvYnVzdF9saXN0KHJlcywgcGlkLCBoZWFkX3B0ciwgbGVuX3B0cikgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9nZXRfcm9idXN0X2xpc3QoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZykocGlkKSwgKGxvbmcpKGhlYWRfcHRyKSwgKGxvbmcpKGxlbl9wdHIpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3NldF9yb2J1c3RfbGlzdChoZWFkLCBsZW4pICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2V0X3JvYnVzdF9saXN0KChsb25nKShoZWFkKSwgKGxvbmcpKGxlbikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NldF9yb2J1c3RfbGlzdChyZXMsIGhlYWQsIGxlbikgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2V0X3JvYnVzdF9saXN0KHJlcywgKGxvbmcpKGhlYWQpLCAobG9uZykobGVuKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9nZXRjcHUoY3B1LCBub2RlLCBjYWNoZSkgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2dldGNwdSgobG9uZykoY3B1KSwgKGxvbmcpKG5vZGUpLCAobG9uZykoY2FjaGUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9nZXRjcHUocmVzLCBjcHUsIG5vZGUsIGNhY2hlKSAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2dldGNwdShyZXMsIChsb25nKShjcHUpLCAobG9uZykobm9kZSksICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoY2FjaGUpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3NpZ25hbGZkKHVmZCwgdXNlcl9tYXNrLCBzaXplbWFzaykgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2lnbmFsZmQoKGxvbmcpKHVmZCksIChsb25nKSh1c2VyX21hc2spLCAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKHNpemVtYXNrKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfc2lnbmFsZmQocmVzLCB1ZmQsIHVzZXJfbWFzaywgc2l6ZW1hc2spICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zaWduYWxmZChyZXMsIChsb25nKSh1ZmQpLCAobG9uZykodXNlcl9tYXNrKSwgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoc2l6ZW1hc2spKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3NpZ25hbGZkNCh1ZmQsIHVzZXJfbWFzaywgc2l6ZW1hc2ssIGZsYWdzKSAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2lnbmFsZmQ0KChsb25nKSh1ZmQpLCAobG9uZykodXNlcl9tYXNrKSwgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShzaXplbWFzayksIChsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NpZ25hbGZkNChyZXMsIHVmZCwgdXNlcl9tYXNrLCBzaXplbWFzaywgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2lnbmFsZmQ0KHJlcywgKGxvbmcpKHVmZCksIChsb25nKSh1c2VyX21hc2spLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShzaXplbWFzayksIChsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfdGltZXJmZF9jcmVhdGUoY2xvY2tpZCwgZmxhZ3MpICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF90aW1lcmZkX2NyZWF0ZSgobG9uZykoY2xvY2tpZCksIChsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3RpbWVyZmRfY3JlYXRlKHJlcywgY2xvY2tpZCwgZmxhZ3MpICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfdGltZXJmZF9jcmVhdGUocmVzLCAobG9uZykoY2xvY2tpZCksICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKGZsYWdzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV90aW1lcmZkX3NldHRpbWUodWZkLCBmbGFncywgdXRtciwgb3RtcikgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3RpbWVyZmRfc2V0dGltZSgobG9uZykodWZkKSwgKGxvbmcpKGZsYWdzKSwgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykodXRtciksIChsb25nKShvdG1yKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfdGltZXJmZF9zZXR0aW1lKHJlcywgdWZkLCBmbGFncywgdXRtciwgb3RtcikgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF90aW1lcmZkX3NldHRpbWUoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZykodWZkKSwgKGxvbmcpKGZsYWdzKSwgKGxvbmcpKHV0bXIpLCAobG9uZykob3RtcikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfdGltZXJmZF9nZXR0aW1lKHVmZCwgb3RtcikgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF90aW1lcmZkX2dldHRpbWUoKGxvbmcpKHVmZCksIChsb25nKShvdG1yKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfdGltZXJmZF9nZXR0aW1lKHJlcywgdWZkLCBvdG1yKSAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF90aW1lcmZkX2dldHRpbWUocmVzLCAobG9uZykodWZkKSwgKGxvbmcpKG90bXIpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2V2ZW50ZmQoY291bnQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZXZlbnRmZCgobG9uZykoY291bnQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9ldmVudGZkKHJlcywgY291bnQpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2V2ZW50ZmQocmVzLCAobG9uZykoY291bnQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2V2ZW50ZmQyKGNvdW50LCBmbGFncykgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZXZlbnRmZDIoKGxvbmcpKGNvdW50KSwgKGxvbmcpKGZsYWdzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZXZlbnRmZDIocmVzLCBjb3VudCwgZmxhZ3MpICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9ldmVudGZkMihyZXMsIChsb25nKShjb3VudCksIChsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfb2xkX3JlYWRkaXIoYXJnMCwgYXJnMSwgYXJnMikgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9vbGRfcmVhZGRpcigobG9uZykoYXJnMCksIChsb25nKShhcmcxKSwgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoYXJnMikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X29sZF9yZWFkZGlyKHJlcywgYXJnMCwgYXJnMSwgYXJnMikgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfb2xkX3JlYWRkaXIocmVzLCAobG9uZykoYXJnMCksIChsb25nKShhcmcxKSwgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKGFyZzIpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3BzZWxlY3Q2KGFyZzAsIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUpICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfcHNlbGVjdDYoKGxvbmcpKGFyZzApLCAobG9uZykoYXJnMSksICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKGFyZzIpLCAobG9uZykoYXJnMyksICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKGFyZzQpLCAobG9uZykoYXJnNSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3BzZWxlY3Q2KHJlcywgYXJnMCwgYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZzUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcHNlbGVjdDYocmVzLCAobG9uZykoYXJnMCksIChsb25nKShhcmcxKSwgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKGFyZzIpLCAobG9uZykoYXJnMyksICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKGFyZzQpLCAobG9uZykoYXJnNSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfcHBvbGwoYXJnMCwgYXJnMSwgYXJnMiwgYXJnMywgYXJnNCkgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9wcG9sbCgobG9uZykoYXJnMCksIChsb25nKShhcmcxKSwgKGxvbmcpKGFyZzIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoYXJnMyksIChsb25nKShhcmc0KSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfcHBvbGwocmVzLCBhcmcwLCBhcmcxLCBhcmcyLCBhcmczLCBhcmc0KSAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9wcG9sbChyZXMsIChsb25nKShhcmcwKSwgKGxvbmcpKGFyZzEpLCAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoYXJnMiksIChsb25nKShhcmczKSwgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoYXJnNCkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfc3luY2ZzKGZkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zeW5jZnMoKGxvbmcpKGZkKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfc3luY2ZzKHJlcywgZmQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zeW5jZnMocmVzLCAobG9uZykoZmQpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3BlcmZfZXZlbnRfb3BlbihhdHRyX3VwdHIsIHBpZCwgY3B1LCBncm91cF9mZCwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfcGVyZl9ldmVudF9vcGVuKChsb25nKShhdHRyX3VwdHIpLCAobG9uZykocGlkKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShjcHUpLCAobG9uZykoZ3JvdXBfZmQpLCAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3BlcmZfZXZlbnRfb3BlbihyZXMsIGF0dHJfdXB0ciwgcGlkLCBjcHUsICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cF9mZCwgZmxhZ3MpICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcGVyZl9ldmVudF9vcGVuKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcpKGF0dHJfdXB0ciksIChsb25nKShwaWQpLCAobG9uZykoY3B1KSwgKGxvbmcpKGdyb3VwX2ZkKSwgICAgICBcCiAgICAgIChsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfbW1hcF9wZ29mZihhZGRyLCBsZW4sIHByb3QsIGZsYWdzLCBmZCwgcGdvZmYpICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9tbWFwX3Bnb2ZmKChsb25nKShhZGRyKSwgKGxvbmcpKGxlbiksICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShwcm90KSwgKGxvbmcpKGZsYWdzKSwgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKShmZCksIChsb25nKShwZ29mZikpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X21tYXBfcGdvZmYocmVzLCBhZGRyLCBsZW4sIHByb3QsIGZsYWdzLCBmZCwgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdvZmYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbW1hcF9wZ29mZihyZXMsIChsb25nKShhZGRyKSwgKGxvbmcpKGxlbiksICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykocHJvdCksIChsb25nKShmbGFncyksICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoZmQpLCAobG9uZykocGdvZmYpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX29sZF9tbWFwKGFyZykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfb2xkX21tYXAoKGxvbmcpKGFyZykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X29sZF9tbWFwKHJlcywgYXJnKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfb2xkX21tYXAocmVzLCAobG9uZykoYXJnKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9uYW1lX3RvX2hhbmRsZV9hdChkZmQsIG5hbWUsIGhhbmRsZSwgbW50X2lkLCAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFnKSAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX25hbWVfdG9faGFuZGxlX2F0KCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcpKGRmZCksIChsb25nKShuYW1lKSwgKGxvbmcpKGhhbmRsZSksIChsb25nKShtbnRfaWQpLCAobG9uZykoZmxhZykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X25hbWVfdG9faGFuZGxlX2F0KHJlcywgZGZkLCBuYW1lLCBoYW5kbGUsICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1udF9pZCwgZmxhZykgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbmFtZV90b19oYW5kbGVfYXQoICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHJlcywgKGxvbmcpKGRmZCksIChsb25nKShuYW1lKSwgKGxvbmcpKGhhbmRsZSksIChsb25nKShtbnRfaWQpLCAgICAgICAgICBcCiAgICAgIChsb25nKShmbGFnKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9vcGVuX2J5X2hhbmRsZV9hdChtb3VudGRpcmZkLCBoYW5kbGUsIGZsYWdzKSAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX29wZW5fYnlfaGFuZGxlX2F0KCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcpKG1vdW50ZGlyZmQpLCAobG9uZykoaGFuZGxlKSwgKGxvbmcpKGZsYWdzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfb3Blbl9ieV9oYW5kbGVfYXQocmVzLCBtb3VudGRpcmZkLCBoYW5kbGUsICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpICAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9vcGVuX2J5X2hhbmRsZV9hdCggICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZykobW91bnRkaXJmZCksIChsb25nKShoYW5kbGUpLCAobG9uZykoZmxhZ3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3NldG5zKGZkLCBuc3R5cGUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2V0bnMoKGxvbmcpKGZkKSwgKGxvbmcpKG5zdHlwZSkpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NldG5zKHJlcywgZmQsIG5zdHlwZSkgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2V0bnMocmVzLCAobG9uZykoZmQpLCAobG9uZykobnN0eXBlKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9wcm9jZXNzX3ZtX3JlYWR2KHBpZCwgbHZlYywgbGlvdmNudCwgcnZlYywgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpb3ZjbnQsIGZsYWdzKSAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3Byb2Nlc3Nfdm1fcmVhZHYoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcpKHBpZCksIChsb25nKShsdmVjKSwgKGxvbmcpKGxpb3ZjbnQpLCAobG9uZykocnZlYyksICAgICAgICAgICAgICAgIFwKICAgICAgKGxvbmcpKHJpb3ZjbnQpLCAobG9uZykoZmxhZ3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9wcm9jZXNzX3ZtX3JlYWR2KHJlcywgcGlkLCBsdmVjLCBsaW92Y250LCAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ2ZWMsIHJpb3ZjbnQsIGZsYWdzKSAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3Byb2Nlc3Nfdm1fcmVhZHYoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICByZXMsIChsb25nKShwaWQpLCAobG9uZykobHZlYyksIChsb25nKShsaW92Y250KSwgKGxvbmcpKHJ2ZWMpLCAgICAgICAgICAgXAogICAgICAobG9uZykocmlvdmNudCksIChsb25nKShmbGFncykpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfcHJvY2Vzc192bV93cml0ZXYocGlkLCBsdmVjLCBsaW92Y250LCBydmVjLCAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlvdmNudCwgZmxhZ3MpICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9wcm9jZXNzX3ZtX3dyaXRldiggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nKShwaWQpLCAobG9uZykobHZlYyksIChsb25nKShsaW92Y250KSwgKGxvbmcpKHJ2ZWMpLCAgICAgICAgICAgICAgICBcCiAgICAgIChsb25nKShyaW92Y250KSwgKGxvbmcpKGZsYWdzKSkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfcHJvY2Vzc192bV93cml0ZXYocmVzLCBwaWQsIGx2ZWMsIGxpb3ZjbnQsICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnZlYywgcmlvdmNudCwgZmxhZ3MpICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9wcm9jZXNzX3ZtX3dyaXRldiggICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgcmVzLCAobG9uZykocGlkKSwgKGxvbmcpKGx2ZWMpLCAobG9uZykobGlvdmNudCksIChsb25nKShydmVjKSwgICAgICAgICAgIFwKICAgICAgKGxvbmcpKHJpb3ZjbnQpLCAobG9uZykoZmxhZ3MpKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ZvcmsoKSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2ZvcmsoKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9mb3JrKHJlcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2ZvcmsocmVzKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3Zmb3JrKCkgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF92Zm9yaygpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3Zmb3JrKHJlcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfdmZvcmsocmVzKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3NpZ2FjdGlvbihzaWdudW0sIGFjdCwgb2xkYWN0KSAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2lnYWN0aW9uKChsb25nKXNpZ251bSwgKGxvbmcpYWN0LCAobG9uZylvbGRhY3QpCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NpZ2FjdGlvbihyZXMsIHNpZ251bSwgYWN0LCBvbGRhY3QpICAgICAgICAgICBcCiAgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2lnYWN0aW9uKHJlcywgKGxvbmcpc2lnbnVtLCAobG9uZylhY3QsICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKW9sZGFjdCkKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9ydF9zaWdhY3Rpb24oc2lnbnVtLCBhY3QsIG9sZGFjdCwgc3opICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3J0X3NpZ2FjdGlvbigobG9uZylzaWdudW0sIChsb25nKWFjdCwgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZylvbGRhY3QsIChsb25nKXN6KQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9ydF9zaWdhY3Rpb24ocmVzLCBzaWdudW0sIGFjdCwgb2xkYWN0LCBzeikgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3J0X3NpZ2FjdGlvbihyZXMsIChsb25nKXNpZ251bSwgKGxvbmcpYWN0LCAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZylvbGRhY3QsIChsb25nKXN6KQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3NpZ2FsdHN0YWNrKHNzLCBvc3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2lnYWx0c3RhY2soKGxvbmcpc3MsIChsb25nKW9zcykKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfc2lnYWx0c3RhY2socmVzLCBzcywgb3NzKSAgICAgICAgICAgICAgICAgICAgIFwKICBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zaWdhbHRzdGFjayhyZXMsIChsb25nKXNzLCAobG9uZylvc3MpCgovLyBBbmQgbm93IGEgZmV3IHN5c2NhbGxzIHdlIGRvbid0IGhhbmRsZSB5ZXQuCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfYWZzX3N5c2NhbGwoLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2FyY2hfcHJjdGwoLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2JyZWFrKC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jaG93bjMyKC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9jbG9uZSguLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfY3JlYXRlX21vZHVsZSguLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZXBvbGxfY3RsX29sZCguLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZXBvbGxfd2FpdF9vbGQoLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2V4ZWN2ZSguLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZmFkdmlzZTY0KC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9mYWR2aXNlNjRfNjQoLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ZhbGxvY2F0ZSguLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZmFub3RpZnlfaW5pdCguLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZmFub3RpZnlfbWFyayguLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZmNob3duMzIoLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2Z0aW1lKC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9mdHJ1bmNhdGU2NCguLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZnV0ZXgoLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2dldGVnaWQzMiguLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZ2V0ZXVpZDMyKC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9nZXRnaWQzMiguLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZ2V0Z3JvdXBzMzIoLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2dldF9rZXJuZWxfc3ltcyguLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZ2V0cG1zZyguLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfZ2V0cmVzZ2lkMzIoLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2dldHJlc3VpZDMyKC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9nZXRfdGhyZWFkX2FyZWEoLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2dldHVpZDMyKC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9ndHR5KC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pZGxlKC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pb3BsKC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9sY2hvd24zMiguLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfX2xsc2VlayguLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfbG9jayguLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfbWFkdmlzZTEoLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX21tYXAoLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX21tYXAyKC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9tb2RpZnlfbGR0KC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9tcHgoLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX19uZXdzZWxlY3QoLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX25mc3NlcnZjdGwoLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX29sZGZzdGF0KC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9vbGRsc3RhdCguLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfb2xkb2xkdW5hbWUoLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX29sZHN0YXQoLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3ByY3RsKC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9wcm9mKC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9wcm9maWwoLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3B1dHBtc2coLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3F1ZXJ5X21vZHVsZSguLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfcmVhZGFoZWFkKC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9yZWFkZGlyKC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9ydF9zaWdyZXR1cm4oLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3J0X3NpZ3N1c3BlbmQoLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3NlY3VyaXR5KC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zZXRmc2dpZDMyKC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zZXRmc3VpZDMyKC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zZXRnaWQzMiguLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfc2V0Z3JvdXBzMzIoLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3NldHJlZ2lkMzIoLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3NldHJlc2dpZDMyKC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zZXRyZXN1aWQzMiguLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfc2V0cmV1aWQzMiguLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfc2V0X3RocmVhZF9hcmVhKC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zZXR1aWQzMiguLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfc2lncmV0dXJuKC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zaWdzdXNwZW5kKC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zdHR5KC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9zeW5jX2ZpbGVfcmFuZ2UoLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX19zeXNjdGwoLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3RydW5jYXRlNjQoLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3R1eGNhbGwoLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3VnZXRybGltaXQoLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX3VsaW1pdCguLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfdW1vdW50MiguLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfdm04NiguLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfdm04Nm9sZCguLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfdnNlcnZlciguLi4pCgojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9hZnNfc3lzY2FsbChyZXMsIC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfYXJjaF9wcmN0bChyZXMsIC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfYnJlYWsocmVzLCAuLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2Nob3duMzIocmVzLCAuLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2Nsb25lKHJlcywgLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9jcmVhdGVfbW9kdWxlKHJlcywgLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9lcG9sbF9jdGxfb2xkKHJlcywgLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9lcG9sbF93YWl0X29sZChyZXMsIC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZXhlY3ZlKHJlcywgLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9mYWR2aXNlNjQocmVzLCAuLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ZhZHZpc2U2NF82NChyZXMsIC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZmFsbG9jYXRlKHJlcywgLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9mYW5vdGlmeV9pbml0KHJlcywgLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9mYW5vdGlmeV9tYXJrKHJlcywgLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9mY2hvd24zMihyZXMsIC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZnRpbWUocmVzLCAuLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2Z0cnVuY2F0ZTY0KHJlcywgLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9mdXRleChyZXMsIC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZ2V0ZWdpZDMyKHJlcywgLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9nZXRldWlkMzIocmVzLCAuLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2dldGdpZDMyKHJlcywgLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9nZXRncm91cHMzMihyZXMsIC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZ2V0X2tlcm5lbF9zeW1zKHJlcywgLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9nZXRwbXNnKHJlcywgLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9nZXRyZXNnaWQzMihyZXMsIC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZ2V0cmVzdWlkMzIocmVzLCAuLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2dldF90aHJlYWRfYXJlYShyZXMsIC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfZ2V0dWlkMzIocmVzLCAuLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2d0dHkocmVzLCAuLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2lkbGUocmVzLCAuLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2lvcGwocmVzLCAuLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2xjaG93bjMyKHJlcywgLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9fbGxzZWVrKHJlcywgLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9sb2NrKHJlcywgLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9tYWR2aXNlMShyZXMsIC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfbW1hcDIocmVzLCAuLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X21tYXAocmVzLCAuLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X21vZGlmeV9sZHQocmVzLCAuLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X21weChyZXMsIC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfX25ld3NlbGVjdChyZXMsIC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfbmZzc2VydmN0bChyZXMsIC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfb2xkZnN0YXQocmVzLCAuLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X29sZGxzdGF0KHJlcywgLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9vbGRvbGR1bmFtZShyZXMsIC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfb2xkc3RhdChyZXMsIC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfcHJjdGwocmVzLCAuLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3Byb2ZpbChyZXMsIC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfcHJvZihyZXMsIC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfcHV0cG1zZyhyZXMsIC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfcXVlcnlfbW9kdWxlKHJlcywgLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9yZWFkYWhlYWQocmVzLCAuLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3JlYWRkaXIocmVzLCAuLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3J0X3NpZ3JldHVybihyZXMsIC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfcnRfc2lnc3VzcGVuZChyZXMsIC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfc2VjdXJpdHkocmVzLCAuLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NldGZzZ2lkMzIocmVzLCAuLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NldGZzdWlkMzIocmVzLCAuLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NldGdpZDMyKHJlcywgLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9zZXRncm91cHMzMihyZXMsIC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfc2V0cmVnaWQzMihyZXMsIC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3Rfc2V0cmVzZ2lkMzIocmVzLCAuLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NldHJlc3VpZDMyKHJlcywgLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9zZXRyZXVpZDMyKHJlcywgLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9zZXRfdGhyZWFkX2FyZWEocmVzLCAuLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NldHVpZDMyKHJlcywgLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9zaWdyZXR1cm4ocmVzLCAuLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3NpZ3N1c3BlbmQocmVzLCAuLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3N0dHkocmVzLCAuLi4pCiNkZWZpbmUgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X3N5bmNfZmlsZV9yYW5nZShyZXMsIC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfX3N5c2N0bChyZXMsIC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfdHJ1bmNhdGU2NChyZXMsIC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfdHV4Y2FsbChyZXMsIC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfdWdldHJsaW1pdChyZXMsIC4uLikKI2RlZmluZSBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfdWxpbWl0KHJlcywgLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF91bW91bnQyKHJlcywgLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF92bTg2b2xkKHJlcywgLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF92bTg2KHJlcywgLi4uKQojZGVmaW5lIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF92c2VydmVyKHJlcywgLi4uKQoKI2lmZGVmIF9fY3BsdXNwbHVzCmV4dGVybiAiQyIgewojZW5kaWYKCi8vIFByaXZhdGUgZGVjbGFyYXRpb25zLiBEbyBub3QgY2FsbCBkaXJlY3RseSBmcm9tIHVzZXIgY29kZS4gVXNlIG1hY3JvcyBhYm92ZS4Kdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3RpbWUobG9uZyB0bG9jKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF90aW1lKGxvbmcgcmVzLCBsb25nIHRsb2MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc3RpbWUobG9uZyB0cHRyKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zdGltZShsb25nIHJlcywgbG9uZyB0cHRyKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2dldHRpbWVvZmRheShsb25nIHR2LCBsb25nIHR6KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9nZXR0aW1lb2ZkYXkobG9uZyByZXMsIGxvbmcgdHYsIGxvbmcgdHopOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2V0dGltZW9mZGF5KGxvbmcgdHYsIGxvbmcgdHopOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NldHRpbWVvZmRheShsb25nIHJlcywgbG9uZyB0diwgbG9uZyB0eik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9hZGp0aW1leChsb25nIHR4Y19wKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9hZGp0aW1leChsb25nIHJlcywgbG9uZyB0eGNfcCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF90aW1lcyhsb25nIHRidWYpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3RpbWVzKGxvbmcgcmVzLCBsb25nIHRidWYpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZ2V0dGlkKCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZ2V0dGlkKGxvbmcgcmVzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX25hbm9zbGVlcChsb25nIHJxdHAsIGxvbmcgcm10cCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbmFub3NsZWVwKGxvbmcgcmVzLCBsb25nIHJxdHAsIGxvbmcgcm10cCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9hbGFybShsb25nIHNlY29uZHMpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2FsYXJtKGxvbmcgcmVzLCBsb25nIHNlY29uZHMpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZ2V0cGlkKCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZ2V0cGlkKGxvbmcgcmVzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2dldHBwaWQoKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9nZXRwcGlkKGxvbmcgcmVzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2dldHVpZCgpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2dldHVpZChsb25nIHJlcyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9nZXRldWlkKCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZ2V0ZXVpZChsb25nIHJlcyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9nZXRnaWQoKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9nZXRnaWQobG9uZyByZXMpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZ2V0ZWdpZCgpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2dldGVnaWQobG9uZyByZXMpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZ2V0cmVzdWlkKGxvbmcgcnVpZCwgbG9uZyBldWlkLCBsb25nIHN1aWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2dldHJlc3VpZChsb25nIHJlcywgbG9uZyBydWlkLCBsb25nIGV1aWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgc3VpZCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9nZXRyZXNnaWQobG9uZyByZ2lkLCBsb25nIGVnaWQsIGxvbmcgc2dpZCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZ2V0cmVzZ2lkKGxvbmcgcmVzLCBsb25nIHJnaWQsIGxvbmcgZWdpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBzZ2lkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2dldHBnaWQobG9uZyBwaWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2dldHBnaWQobG9uZyByZXMsIGxvbmcgcGlkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2dldHBncnAoKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9nZXRwZ3JwKGxvbmcgcmVzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2dldHNpZChsb25nIHBpZCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZ2V0c2lkKGxvbmcgcmVzLCBsb25nIHBpZCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9nZXRncm91cHMobG9uZyBnaWRzZXRzaXplLCBsb25nIGdyb3VwbGlzdCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZ2V0Z3JvdXBzKGxvbmcgcmVzLCBsb25nIGdpZHNldHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgZ3JvdXBsaXN0KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NldHJlZ2lkKGxvbmcgcmdpZCwgbG9uZyBlZ2lkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZXRyZWdpZChsb25nIHJlcywgbG9uZyByZ2lkLCBsb25nIGVnaWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2V0Z2lkKGxvbmcgZ2lkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZXRnaWQobG9uZyByZXMsIGxvbmcgZ2lkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NldHJldWlkKGxvbmcgcnVpZCwgbG9uZyBldWlkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZXRyZXVpZChsb25nIHJlcywgbG9uZyBydWlkLCBsb25nIGV1aWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2V0dWlkKGxvbmcgdWlkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZXR1aWQobG9uZyByZXMsIGxvbmcgdWlkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NldHJlc3VpZChsb25nIHJ1aWQsIGxvbmcgZXVpZCwgbG9uZyBzdWlkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZXRyZXN1aWQobG9uZyByZXMsIGxvbmcgcnVpZCwgbG9uZyBldWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHN1aWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2V0cmVzZ2lkKGxvbmcgcmdpZCwgbG9uZyBlZ2lkLCBsb25nIHNnaWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NldHJlc2dpZChsb25nIHJlcywgbG9uZyByZ2lkLCBsb25nIGVnaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgc2dpZCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zZXRmc3VpZChsb25nIHVpZCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2V0ZnN1aWQobG9uZyByZXMsIGxvbmcgdWlkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NldGZzZ2lkKGxvbmcgZ2lkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZXRmc2dpZChsb25nIHJlcywgbG9uZyBnaWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2V0cGdpZChsb25nIHBpZCwgbG9uZyBwZ2lkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZXRwZ2lkKGxvbmcgcmVzLCBsb25nIHBpZCwgbG9uZyBwZ2lkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NldHNpZCgpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NldHNpZChsb25nIHJlcyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zZXRncm91cHMobG9uZyBnaWRzZXRzaXplLCBsb25nIGdyb3VwbGlzdCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2V0Z3JvdXBzKGxvbmcgcmVzLCBsb25nIGdpZHNldHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgZ3JvdXBsaXN0KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2FjY3QobG9uZyBuYW1lKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9hY2N0KGxvbmcgcmVzLCBsb25nIG5hbWUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY2FwZ2V0KGxvbmcgaGVhZGVyLCBsb25nIGRhdGFwdHIpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NhcGdldChsb25nIHJlcywgbG9uZyBoZWFkZXIsIGxvbmcgZGF0YXB0cik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jYXBzZXQobG9uZyBoZWFkZXIsIGxvbmcgZGF0YSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY2Fwc2V0KGxvbmcgcmVzLCBsb25nIGhlYWRlciwgbG9uZyBkYXRhKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3BlcnNvbmFsaXR5KGxvbmcgcGVyc29uYWxpdHkpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3BlcnNvbmFsaXR5KGxvbmcgcmVzLCBsb25nIHBlcnNvbmFsaXR5KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NpZ3BlbmRpbmcobG9uZyBzZXQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NpZ3BlbmRpbmcobG9uZyByZXMsIGxvbmcgc2V0KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NpZ3Byb2NtYXNrKGxvbmcgaG93LCBsb25nIHNldCwgbG9uZyBvc2V0KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zaWdwcm9jbWFzayhsb25nIHJlcywgbG9uZyBob3csIGxvbmcgc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgb3NldCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9nZXRpdGltZXIobG9uZyB3aGljaCwgbG9uZyB2YWx1ZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZ2V0aXRpbWVyKGxvbmcgcmVzLCBsb25nIHdoaWNoLCBsb25nIHZhbHVlKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NldGl0aW1lcihsb25nIHdoaWNoLCBsb25nIHZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgb3ZhbHVlKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZXRpdGltZXIobG9uZyByZXMsIGxvbmcgd2hpY2gsIGxvbmcgdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgb3ZhbHVlKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3RpbWVyX2NyZWF0ZShsb25nIHdoaWNoX2Nsb2NrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgdGltZXJfZXZlbnRfc3BlYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGNyZWF0ZWRfdGltZXJfaWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3RpbWVyX2NyZWF0ZShsb25nIHJlcywgbG9uZyB3aGljaF9jbG9jaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyB0aW1lcl9ldmVudF9zcGVjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGNyZWF0ZWRfdGltZXJfaWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfdGltZXJfZ2V0dGltZShsb25nIHRpbWVyX2lkLCBsb25nIHNldHRpbmcpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3RpbWVyX2dldHRpbWUobG9uZyByZXMsIGxvbmcgdGltZXJfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHNldHRpbmcpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfdGltZXJfZ2V0b3ZlcnJ1bihsb25nIHRpbWVyX2lkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF90aW1lcl9nZXRvdmVycnVuKGxvbmcgcmVzLCBsb25nIHRpbWVyX2lkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3RpbWVyX3NldHRpbWUobG9uZyB0aW1lcl9pZCwgbG9uZyBmbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBuZXdfc2V0dGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBvbGRfc2V0dGluZyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfdGltZXJfc2V0dGltZShsb25nIHJlcywgbG9uZyB0aW1lcl9pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgZmxhZ3MsIGxvbmcgbmV3X3NldHRpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIG9sZF9zZXR0aW5nKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3RpbWVyX2RlbGV0ZShsb25nIHRpbWVyX2lkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF90aW1lcl9kZWxldGUobG9uZyByZXMsIGxvbmcgdGltZXJfaWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY2xvY2tfc2V0dGltZShsb25nIHdoaWNoX2Nsb2NrLCBsb25nIHRwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jbG9ja19zZXR0aW1lKGxvbmcgcmVzLCBsb25nIHdoaWNoX2Nsb2NrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyB0cCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jbG9ja19nZXR0aW1lKGxvbmcgd2hpY2hfY2xvY2ssIGxvbmcgdHApOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2Nsb2NrX2dldHRpbWUobG9uZyByZXMsIGxvbmcgd2hpY2hfY2xvY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHRwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2Nsb2NrX2FkanRpbWUobG9uZyB3aGljaF9jbG9jaywgbG9uZyB0eCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY2xvY2tfYWRqdGltZShsb25nIHJlcywgbG9uZyB3aGljaF9jbG9jaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgdHgpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY2xvY2tfZ2V0cmVzKGxvbmcgd2hpY2hfY2xvY2ssIGxvbmcgdHApOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2Nsb2NrX2dldHJlcyhsb25nIHJlcywgbG9uZyB3aGljaF9jbG9jaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyB0cCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jbG9ja19uYW5vc2xlZXAobG9uZyB3aGljaF9jbG9jaywgbG9uZyBmbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHJxdHAsIGxvbmcgcm10cCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY2xvY2tfbmFub3NsZWVwKGxvbmcgcmVzLCBsb25nIHdoaWNoX2Nsb2NrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGZsYWdzLCBsb25nIHJxdHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgcm10cCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9uaWNlKGxvbmcgaW5jcmVtZW50KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9uaWNlKGxvbmcgcmVzLCBsb25nIGluY3JlbWVudCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zY2hlZF9zZXRzY2hlZHVsZXIobG9uZyBwaWQsIGxvbmcgcG9saWN5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgcGFyYW0pOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NjaGVkX3NldHNjaGVkdWxlcihsb25nIHJlcywgbG9uZyBwaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgcG9saWN5LCBsb25nIHBhcmFtKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NjaGVkX3NldHBhcmFtKGxvbmcgcGlkLCBsb25nIHBhcmFtKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zY2hlZF9zZXRwYXJhbShsb25nIHJlcywgbG9uZyBwaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBwYXJhbSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zY2hlZF9nZXRzY2hlZHVsZXIobG9uZyBwaWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NjaGVkX2dldHNjaGVkdWxlcihsb25nIHJlcywgbG9uZyBwaWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2NoZWRfZ2V0cGFyYW0obG9uZyBwaWQsIGxvbmcgcGFyYW0pOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NjaGVkX2dldHBhcmFtKGxvbmcgcmVzLCBsb25nIHBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHBhcmFtKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NjaGVkX3NldGFmZmluaXR5KGxvbmcgcGlkLCBsb25nIGxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgdXNlcl9tYXNrX3B0cik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2NoZWRfc2V0YWZmaW5pdHkobG9uZyByZXMsIGxvbmcgcGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgdXNlcl9tYXNrX3B0cik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zY2hlZF9nZXRhZmZpbml0eShsb25nIHBpZCwgbG9uZyBsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHVzZXJfbWFza19wdHIpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NjaGVkX2dldGFmZmluaXR5KGxvbmcgcmVzLCBsb25nIHBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHVzZXJfbWFza19wdHIpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2NoZWRfeWllbGQoKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zY2hlZF95aWVsZChsb25nIHJlcyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zY2hlZF9nZXRfcHJpb3JpdHlfbWF4KGxvbmcgcG9saWN5KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zY2hlZF9nZXRfcHJpb3JpdHlfbWF4KGxvbmcgcmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBwb2xpY3kpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbihsb25nIHBvbGljeSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbihsb25nIHJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgcG9saWN5KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NjaGVkX3JyX2dldF9pbnRlcnZhbChsb25nIHBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGludGVydmFsKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zY2hlZF9ycl9nZXRfaW50ZXJ2YWwobG9uZyByZXMsIGxvbmcgcGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGludGVydmFsKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NldHByaW9yaXR5KGxvbmcgd2hpY2gsIGxvbmcgd2hvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBuaWNldmFsKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZXRwcmlvcml0eShsb25nIHJlcywgbG9uZyB3aGljaCwgbG9uZyB3aG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBuaWNldmFsKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2dldHByaW9yaXR5KGxvbmcgd2hpY2gsIGxvbmcgd2hvKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9nZXRwcmlvcml0eShsb25nIHJlcywgbG9uZyB3aGljaCwgbG9uZyB3aG8pOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2h1dGRvd24obG9uZyBhcmcwLCBsb25nIGFyZzEpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NodXRkb3duKGxvbmcgcmVzLCBsb25nIGFyZzAsIGxvbmcgYXJnMSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9yZWJvb3QobG9uZyBtYWdpYzEsIGxvbmcgbWFnaWMyLCBsb25nIGNtZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGFyZyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcmVib290KGxvbmcgcmVzLCBsb25nIG1hZ2ljMSwgbG9uZyBtYWdpYzIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgY21kLCBsb25nIGFyZyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9yZXN0YXJ0X3N5c2NhbGwoKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9yZXN0YXJ0X3N5c2NhbGwobG9uZyByZXMpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfa2V4ZWNfbG9hZChsb25nIGVudHJ5LCBsb25nIG5yX3NlZ21lbnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHNlZ21lbnRzLCBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9rZXhlY19sb2FkKGxvbmcgcmVzLCBsb25nIGVudHJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBucl9zZWdtZW50cywgbG9uZyBzZWdtZW50cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgZmxhZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZXhpdChsb25nIGVycm9yX2NvZGUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2V4aXQobG9uZyByZXMsIGxvbmcgZXJyb3JfY29kZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9leGl0X2dyb3VwKGxvbmcgZXJyb3JfY29kZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZXhpdF9ncm91cChsb25nIHJlcywgbG9uZyBlcnJvcl9jb2RlKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3dhaXQ0KGxvbmcgcGlkLCBsb25nIHN0YXRfYWRkciwgbG9uZyBvcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBydSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfd2FpdDQobG9uZyByZXMsIGxvbmcgcGlkLCBsb25nIHN0YXRfYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIG9wdGlvbnMsIGxvbmcgcnUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfd2FpdGlkKGxvbmcgd2hpY2gsIGxvbmcgcGlkLCBsb25nIGluZm9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgb3B0aW9ucywgbG9uZyBydSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfd2FpdGlkKGxvbmcgcmVzLCBsb25nIHdoaWNoLCBsb25nIHBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBpbmZvcCwgbG9uZyBvcHRpb25zLCBsb25nIHJ1KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3dhaXRwaWQobG9uZyBwaWQsIGxvbmcgc3RhdF9hZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIG9wdGlvbnMpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3dhaXRwaWQobG9uZyByZXMsIGxvbmcgcGlkLCBsb25nIHN0YXRfYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgb3B0aW9ucyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zZXRfdGlkX2FkZHJlc3MobG9uZyB0aWRwdHIpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NldF90aWRfYWRkcmVzcyhsb25nIHJlcywgbG9uZyB0aWRwdHIpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfaW5pdF9tb2R1bGUobG9uZyB1bW9kLCBsb25nIGxlbiwgbG9uZyB1YXJncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfaW5pdF9tb2R1bGUobG9uZyByZXMsIGxvbmcgdW1vZCwgbG9uZyBsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyB1YXJncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9kZWxldGVfbW9kdWxlKGxvbmcgbmFtZV91c2VyLCBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9kZWxldGVfbW9kdWxlKGxvbmcgcmVzLCBsb25nIG5hbWVfdXNlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgZmxhZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfcnRfc2lncHJvY21hc2sobG9uZyBob3csIGxvbmcgc2V0LCBsb25nIG9zZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHNpZ3NldHNpemUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3J0X3NpZ3Byb2NtYXNrKGxvbmcgcmVzLCBsb25nIGhvdywgbG9uZyBzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBvc2V0LCBsb25nIHNpZ3NldHNpemUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfcnRfc2lncGVuZGluZyhsb25nIHNldCwgbG9uZyBzaWdzZXRzaXplKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9ydF9zaWdwZW5kaW5nKGxvbmcgcmVzLCBsb25nIHNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgc2lnc2V0c2l6ZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9ydF9zaWd0aW1lZHdhaXQobG9uZyB1dGhlc2UsIGxvbmcgdWluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyB1dHMsIGxvbmcgc2lnc2V0c2l6ZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcnRfc2lndGltZWR3YWl0KGxvbmcgcmVzLCBsb25nIHV0aGVzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyB1aW5mbywgbG9uZyB1dHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgc2lnc2V0c2l6ZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9ydF90Z3NpZ3F1ZXVlaW5mbyhsb25nIHRnaWQsIGxvbmcgcGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBzaWcsIGxvbmcgdWluZm8pOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3J0X3Rnc2lncXVldWVpbmZvKGxvbmcgcmVzLCBsb25nIHRnaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBwaWQsIGxvbmcgc2lnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgdWluZm8pOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfa2lsbChsb25nIHBpZCwgbG9uZyBzaWcpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2tpbGwobG9uZyByZXMsIGxvbmcgcGlkLCBsb25nIHNpZyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF90Z2tpbGwobG9uZyB0Z2lkLCBsb25nIHBpZCwgbG9uZyBzaWcpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3Rna2lsbChsb25nIHJlcywgbG9uZyB0Z2lkLCBsb25nIHBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBzaWcpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfdGtpbGwobG9uZyBwaWQsIGxvbmcgc2lnKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF90a2lsbChsb25nIHJlcywgbG9uZyBwaWQsIGxvbmcgc2lnKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3J0X3NpZ3F1ZXVlaW5mbyhsb25nIHBpZCwgbG9uZyBzaWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyB1aW5mbyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcnRfc2lncXVldWVpbmZvKGxvbmcgcmVzLCBsb25nIHBpZCwgbG9uZyBzaWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgdWluZm8pOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2dldG1hc2soKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZ2V0bWFzayhsb25nIHJlcyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zc2V0bWFzayhsb25nIG5ld21hc2spOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NzZXRtYXNrKGxvbmcgcmVzLCBsb25nIG5ld21hc2spOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2lnbmFsKGxvbmcgc2lnLCBsb25nIGhhbmRsZXIpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NpZ25hbChsb25nIHJlcywgbG9uZyBzaWcsIGxvbmcgaGFuZGxlcik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9wYXVzZSgpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3BhdXNlKGxvbmcgcmVzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3N5bmMoKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zeW5jKGxvbmcgcmVzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2ZzeW5jKGxvbmcgZmQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2ZzeW5jKGxvbmcgcmVzLCBsb25nIGZkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2ZkYXRhc3luYyhsb25nIGZkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9mZGF0YXN5bmMobG9uZyByZXMsIGxvbmcgZmQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfYmRmbHVzaChsb25nIGZ1bmMsIGxvbmcgZGF0YSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfYmRmbHVzaChsb25nIHJlcywgbG9uZyBmdW5jLCBsb25nIGRhdGEpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbW91bnQobG9uZyBkZXZfbmFtZSwgbG9uZyBkaXJfbmFtZSwgbG9uZyB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBmbGFncywgbG9uZyBkYXRhKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9tb3VudChsb25nIHJlcywgbG9uZyBkZXZfbmFtZSwgbG9uZyBkaXJfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHR5cGUsIGxvbmcgZmxhZ3MsIGxvbmcgZGF0YSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF91bW91bnQobG9uZyBuYW1lLCBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF91bW91bnQobG9uZyByZXMsIGxvbmcgbmFtZSwgbG9uZyBmbGFncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9vbGR1bW91bnQobG9uZyBuYW1lKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9vbGR1bW91bnQobG9uZyByZXMsIGxvbmcgbmFtZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF90cnVuY2F0ZShsb25nIHBhdGgsIGxvbmcgbGVuZ3RoKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF90cnVuY2F0ZShsb25nIHJlcywgbG9uZyBwYXRoLCBsb25nIGxlbmd0aCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9mdHJ1bmNhdGUobG9uZyBmZCwgbG9uZyBsZW5ndGgpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2Z0cnVuY2F0ZShsb25nIHJlcywgbG9uZyBmZCwgbG9uZyBsZW5ndGgpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc3RhdChsb25nIGZpbGVuYW1lLCBsb25nIHN0YXRidWYpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3N0YXQobG9uZyByZXMsIGxvbmcgZmlsZW5hbWUsIGxvbmcgc3RhdGJ1Zik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zdGF0ZnMobG9uZyBwYXRoLCBsb25nIGJ1Zik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc3RhdGZzKGxvbmcgcmVzLCBsb25nIHBhdGgsIGxvbmcgYnVmKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3N0YXRmczY0KGxvbmcgcGF0aCwgbG9uZyBzeiwgbG9uZyBidWYpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3N0YXRmczY0KGxvbmcgcmVzLCBsb25nIHBhdGgsIGxvbmcgc3osCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBidWYpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZnN0YXRmcyhsb25nIGZkLCBsb25nIGJ1Zik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZnN0YXRmcyhsb25nIHJlcywgbG9uZyBmZCwgbG9uZyBidWYpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZnN0YXRmczY0KGxvbmcgZmQsIGxvbmcgc3osIGxvbmcgYnVmKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9mc3RhdGZzNjQobG9uZyByZXMsIGxvbmcgZmQsIGxvbmcgc3osCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgYnVmKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2xzdGF0KGxvbmcgZmlsZW5hbWUsIGxvbmcgc3RhdGJ1Zik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbHN0YXQobG9uZyByZXMsIGxvbmcgZmlsZW5hbWUsIGxvbmcgc3RhdGJ1Zik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9mc3RhdChsb25nIGZkLCBsb25nIHN0YXRidWYpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2ZzdGF0KGxvbmcgcmVzLCBsb25nIGZkLCBsb25nIHN0YXRidWYpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbmV3c3RhdChsb25nIGZpbGVuYW1lLCBsb25nIHN0YXRidWYpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX25ld3N0YXQobG9uZyByZXMsIGxvbmcgZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHN0YXRidWYpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbmV3bHN0YXQobG9uZyBmaWxlbmFtZSwgbG9uZyBzdGF0YnVmKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9uZXdsc3RhdChsb25nIHJlcywgbG9uZyBmaWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHN0YXRidWYpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbmV3ZnN0YXQobG9uZyBmZCwgbG9uZyBzdGF0YnVmKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9uZXdmc3RhdChsb25nIHJlcywgbG9uZyBmZCwgbG9uZyBzdGF0YnVmKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3VzdGF0KGxvbmcgZGV2LCBsb25nIHVidWYpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3VzdGF0KGxvbmcgcmVzLCBsb25nIGRldiwgbG9uZyB1YnVmKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3N0YXQ2NChsb25nIGZpbGVuYW1lLCBsb25nIHN0YXRidWYpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3N0YXQ2NChsb25nIHJlcywgbG9uZyBmaWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBzdGF0YnVmKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2ZzdGF0NjQobG9uZyBmZCwgbG9uZyBzdGF0YnVmKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9mc3RhdDY0KGxvbmcgcmVzLCBsb25nIGZkLCBsb25nIHN0YXRidWYpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbHN0YXQ2NChsb25nIGZpbGVuYW1lLCBsb25nIHN0YXRidWYpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2xzdGF0NjQobG9uZyByZXMsIGxvbmcgZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHN0YXRidWYpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2V0eGF0dHIobG9uZyBwYXRoLCBsb25nIG5hbWUsIGxvbmcgdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHNpemUsIGxvbmcgZmxhZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NldHhhdHRyKGxvbmcgcmVzLCBsb25nIHBhdGgsIGxvbmcgbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHZhbHVlLCBsb25nIHNpemUsIGxvbmcgZmxhZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbHNldHhhdHRyKGxvbmcgcGF0aCwgbG9uZyBuYW1lLCBsb25nIHZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgc2l6ZSwgbG9uZyBmbGFncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbHNldHhhdHRyKGxvbmcgcmVzLCBsb25nIHBhdGgsIGxvbmcgbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyB2YWx1ZSwgbG9uZyBzaXplLCBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2ZzZXR4YXR0cihsb25nIGZkLCBsb25nIG5hbWUsIGxvbmcgdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBzaXplLCBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9mc2V0eGF0dHIobG9uZyByZXMsIGxvbmcgZmQsIGxvbmcgbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyB2YWx1ZSwgbG9uZyBzaXplLCBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2dldHhhdHRyKGxvbmcgcGF0aCwgbG9uZyBuYW1lLCBsb25nIHZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBzaXplKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9nZXR4YXR0cihsb25nIHJlcywgbG9uZyBwYXRoLCBsb25nIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyB2YWx1ZSwgbG9uZyBzaXplKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2xnZXR4YXR0cihsb25nIHBhdGgsIGxvbmcgbmFtZSwgbG9uZyB2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHNpemUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2xnZXR4YXR0cihsb25nIHJlcywgbG9uZyBwYXRoLCBsb25nIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgdmFsdWUsIGxvbmcgc2l6ZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9mZ2V0eGF0dHIobG9uZyBmZCwgbG9uZyBuYW1lLCBsb25nIHZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgc2l6ZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZmdldHhhdHRyKGxvbmcgcmVzLCBsb25nIGZkLCBsb25nIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgdmFsdWUsIGxvbmcgc2l6ZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9saXN0eGF0dHIobG9uZyBwYXRoLCBsb25nIGxpc3QsIGxvbmcgc2l6ZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbGlzdHhhdHRyKGxvbmcgcmVzLCBsb25nIHBhdGgsIGxvbmcgbGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBzaXplKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2xsaXN0eGF0dHIobG9uZyBwYXRoLCBsb25nIGxpc3QsIGxvbmcgc2l6ZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbGxpc3R4YXR0cihsb25nIHJlcywgbG9uZyBwYXRoLCBsb25nIGxpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHNpemUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZmxpc3R4YXR0cihsb25nIGZkLCBsb25nIGxpc3QsIGxvbmcgc2l6ZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZmxpc3R4YXR0cihsb25nIHJlcywgbG9uZyBmZCwgbG9uZyBsaXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBzaXplKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3JlbW92ZXhhdHRyKGxvbmcgcGF0aCwgbG9uZyBuYW1lKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9yZW1vdmV4YXR0cihsb25nIHJlcywgbG9uZyBwYXRoLCBsb25nIG5hbWUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbHJlbW92ZXhhdHRyKGxvbmcgcGF0aCwgbG9uZyBuYW1lKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9scmVtb3ZleGF0dHIobG9uZyByZXMsIGxvbmcgcGF0aCwgbG9uZyBuYW1lKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2ZyZW1vdmV4YXR0cihsb25nIGZkLCBsb25nIG5hbWUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2ZyZW1vdmV4YXR0cihsb25nIHJlcywgbG9uZyBmZCwgbG9uZyBuYW1lKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2Jyayhsb25nIGJyayk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfYnJrKGxvbmcgcmVzLCBsb25nIGJyayk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9tcHJvdGVjdChsb25nIHN0YXJ0LCBsb25nIGxlbiwgbG9uZyBwcm90KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9tcHJvdGVjdChsb25nIHJlcywgbG9uZyBzdGFydCwgbG9uZyBsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBwcm90KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX21yZW1hcChsb25nIGFkZHIsIGxvbmcgb2xkX2xlbiwgbG9uZyBuZXdfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgZmxhZ3MsIGxvbmcgbmV3X2FkZHIpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX21yZW1hcChsb25nIHJlcywgbG9uZyBhZGRyLCBsb25nIG9sZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbmV3X2xlbiwgbG9uZyBmbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBuZXdfYWRkcik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9yZW1hcF9maWxlX3BhZ2VzKGxvbmcgc3RhcnQsIGxvbmcgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBwcm90LCBsb25nIHBnb2ZmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9yZW1hcF9maWxlX3BhZ2VzKGxvbmcgcmVzLCBsb25nIHN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBzaXplLCBsb25nIHByb3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHBnb2ZmLCBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX21zeW5jKGxvbmcgc3RhcnQsIGxvbmcgbGVuLCBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9tc3luYyhsb25nIHJlcywgbG9uZyBzdGFydCwgbG9uZyBsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBmbGFncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9tdW5tYXAobG9uZyBhZGRyLCBsb25nIGxlbik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbXVubWFwKGxvbmcgcmVzLCBsb25nIGFkZHIsIGxvbmcgbGVuKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX21sb2NrKGxvbmcgc3RhcnQsIGxvbmcgbGVuKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9tbG9jayhsb25nIHJlcywgbG9uZyBzdGFydCwgbG9uZyBsZW4pOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbXVubG9jayhsb25nIHN0YXJ0LCBsb25nIGxlbik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbXVubG9jayhsb25nIHJlcywgbG9uZyBzdGFydCwgbG9uZyBsZW4pOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbWxvY2thbGwobG9uZyBmbGFncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbWxvY2thbGwobG9uZyByZXMsIGxvbmcgZmxhZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbXVubG9ja2FsbCgpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX211bmxvY2thbGwobG9uZyByZXMpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbWFkdmlzZShsb25nIHN0YXJ0LCBsb25nIGxlbiwgbG9uZyBiZWhhdmlvcik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbWFkdmlzZShsb25nIHJlcywgbG9uZyBzdGFydCwgbG9uZyBsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGJlaGF2aW9yKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX21pbmNvcmUobG9uZyBzdGFydCwgbG9uZyBsZW4sIGxvbmcgdmVjKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9taW5jb3JlKGxvbmcgcmVzLCBsb25nIHN0YXJ0LCBsb25nIGxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgdmVjKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3Bpdm90X3Jvb3QobG9uZyBuZXdfcm9vdCwgbG9uZyBwdXRfb2xkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9waXZvdF9yb290KGxvbmcgcmVzLCBsb25nIG5ld19yb290LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBwdXRfb2xkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2Nocm9vdChsb25nIGZpbGVuYW1lKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jaHJvb3QobG9uZyByZXMsIGxvbmcgZmlsZW5hbWUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbWtub2QobG9uZyBmaWxlbmFtZSwgbG9uZyBtb2RlLCBsb25nIGRldik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbWtub2QobG9uZyByZXMsIGxvbmcgZmlsZW5hbWUsIGxvbmcgbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGRldik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9saW5rKGxvbmcgb2xkbmFtZSwgbG9uZyBuZXduYW1lKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9saW5rKGxvbmcgcmVzLCBsb25nIG9sZG5hbWUsIGxvbmcgbmV3bmFtZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zeW1saW5rKGxvbmcgb2xkLCBsb25nIG5ld18pOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3N5bWxpbmsobG9uZyByZXMsIGxvbmcgb2xkLCBsb25nIG5ld18pOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfdW5saW5rKGxvbmcgcGF0aG5hbWUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3VubGluayhsb25nIHJlcywgbG9uZyBwYXRobmFtZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9yZW5hbWUobG9uZyBvbGRuYW1lLCBsb25nIG5ld25hbWUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3JlbmFtZShsb25nIHJlcywgbG9uZyBvbGRuYW1lLCBsb25nIG5ld25hbWUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfY2htb2QobG9uZyBmaWxlbmFtZSwgbG9uZyBtb2RlKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jaG1vZChsb25nIHJlcywgbG9uZyBmaWxlbmFtZSwgbG9uZyBtb2RlKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2ZjaG1vZChsb25nIGZkLCBsb25nIG1vZGUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2ZjaG1vZChsb25nIHJlcywgbG9uZyBmZCwgbG9uZyBtb2RlKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2ZjbnRsKGxvbmcgZmQsIGxvbmcgY21kLCBsb25nIGFyZyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZmNudGwobG9uZyByZXMsIGxvbmcgZmQsIGxvbmcgY21kLCBsb25nIGFyZyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9mY250bDY0KGxvbmcgZmQsIGxvbmcgY21kLCBsb25nIGFyZyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZmNudGw2NChsb25nIHJlcywgbG9uZyBmZCwgbG9uZyBjbWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGFyZyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9waXBlKGxvbmcgZmlsZGVzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9waXBlKGxvbmcgcmVzLCBsb25nIGZpbGRlcyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9waXBlMihsb25nIGZpbGRlcywgbG9uZyBmbGFncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcGlwZTIobG9uZyByZXMsIGxvbmcgZmlsZGVzLCBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2R1cChsb25nIGZpbGRlcyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZHVwKGxvbmcgcmVzLCBsb25nIGZpbGRlcyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9kdXAyKGxvbmcgb2xkZmQsIGxvbmcgbmV3ZmQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2R1cDIobG9uZyByZXMsIGxvbmcgb2xkZmQsIGxvbmcgbmV3ZmQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZHVwMyhsb25nIG9sZGZkLCBsb25nIG5ld2ZkLCBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9kdXAzKGxvbmcgcmVzLCBsb25nIG9sZGZkLCBsb25nIG5ld2ZkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBmbGFncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9pb3Blcm0obG9uZyBmcm9tLCBsb25nIG51bSwgbG9uZyBvbik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfaW9wZXJtKGxvbmcgcmVzLCBsb25nIGZyb20sIGxvbmcgbnVtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIG9uKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2lvY3RsKGxvbmcgZmQsIGxvbmcgY21kLCBsb25nIGFyZyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfaW9jdGwobG9uZyByZXMsIGxvbmcgZmQsIGxvbmcgY21kLCBsb25nIGFyZyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9mbG9jayhsb25nIGZkLCBsb25nIGNtZCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZmxvY2sobG9uZyByZXMsIGxvbmcgZmQsIGxvbmcgY21kKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2lvX3NldHVwKGxvbmcgbnJfcmVxcywgbG9uZyBjdHgpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2lvX3NldHVwKGxvbmcgcmVzLCBsb25nIG5yX3JlcXMsIGxvbmcgY3R4KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2lvX2Rlc3Ryb3kobG9uZyBjdHgpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2lvX2Rlc3Ryb3kobG9uZyByZXMsIGxvbmcgY3R4KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2lvX2dldGV2ZW50cyhsb25nIGN0eF9pZCwgbG9uZyBtaW5fbnIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBuciwgbG9uZyBldmVudHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyB0aW1lb3V0KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9pb19nZXRldmVudHMobG9uZyByZXMsIGxvbmcgY3R4X2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIG1pbl9uciwgbG9uZyBuciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBldmVudHMsIGxvbmcgdGltZW91dCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9pb19zdWJtaXQobG9uZyBjdHhfaWQsIGxvbmcgYXJnMSwgbG9uZyBhcmcyKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9pb19zdWJtaXQobG9uZyByZXMsIGxvbmcgY3R4X2lkLCBsb25nIGFyZzEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgYXJnMik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9pb19jYW5jZWwobG9uZyBjdHhfaWQsIGxvbmcgaW9jYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHJlc3VsdCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfaW9fY2FuY2VsKGxvbmcgcmVzLCBsb25nIGN0eF9pZCwgbG9uZyBpb2NiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHJlc3VsdCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zZW5kZmlsZShsb25nIG91dF9mZCwgbG9uZyBpbl9mZCwgbG9uZyBvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGNvdW50KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZW5kZmlsZShsb25nIHJlcywgbG9uZyBvdXRfZmQsIGxvbmcgaW5fZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBvZmZzZXQsIGxvbmcgY291bnQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2VuZGZpbGU2NChsb25nIG91dF9mZCwgbG9uZyBpbl9mZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBvZmZzZXQsIGxvbmcgY291bnQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NlbmRmaWxlNjQobG9uZyByZXMsIGxvbmcgb3V0X2ZkLCBsb25nIGluX2ZkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBvZmZzZXQsIGxvbmcgY291bnQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfcmVhZGxpbmsobG9uZyBwYXRoLCBsb25nIGJ1ZiwgbG9uZyBidWZzaXopOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3JlYWRsaW5rKGxvbmcgcmVzLCBsb25nIHBhdGgsIGxvbmcgYnVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgYnVmc2l6KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NyZWF0KGxvbmcgcGF0aG5hbWUsIGxvbmcgbW9kZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY3JlYXQobG9uZyByZXMsIGxvbmcgcGF0aG5hbWUsIGxvbmcgbW9kZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9vcGVuKGxvbmcgZmlsZW5hbWUsIGxvbmcgZmxhZ3MsIGxvbmcgbW9kZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfb3Blbihsb25nIHJlcywgbG9uZyBmaWxlbmFtZSwgbG9uZyBmbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbW9kZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jbG9zZShsb25nIGZkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9jbG9zZShsb25nIHJlcywgbG9uZyBmZCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9hY2Nlc3MobG9uZyBmaWxlbmFtZSwgbG9uZyBtb2RlKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9hY2Nlc3MobG9uZyByZXMsIGxvbmcgZmlsZW5hbWUsIGxvbmcgbW9kZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF92aGFuZ3VwKCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfdmhhbmd1cChsb25nIHJlcyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jaG93bihsb25nIGZpbGVuYW1lLCBsb25nIHVzZXIsIGxvbmcgZ3JvdXApOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2Nob3duKGxvbmcgcmVzLCBsb25nIGZpbGVuYW1lLCBsb25nIHVzZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBncm91cCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9sY2hvd24obG9uZyBmaWxlbmFtZSwgbG9uZyB1c2VyLCBsb25nIGdyb3VwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9sY2hvd24obG9uZyByZXMsIGxvbmcgZmlsZW5hbWUsIGxvbmcgdXNlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBncm91cCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9mY2hvd24obG9uZyBmZCwgbG9uZyB1c2VyLCBsb25nIGdyb3VwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9mY2hvd24obG9uZyByZXMsIGxvbmcgZmQsIGxvbmcgdXNlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBncm91cCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9jaG93bjE2KGxvbmcgZmlsZW5hbWUsIGxvbmcgdXNlciwgbG9uZyBncm91cCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY2hvd24xNihsb25nIHJlcywgbG9uZyBmaWxlbmFtZSwgbG9uZyB1c2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBncm91cCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9sY2hvd24xNihsb25nIGZpbGVuYW1lLCBsb25nIHVzZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGdyb3VwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9sY2hvd24xNihsb25nIHJlcywgbG9uZyBmaWxlbmFtZSwgbG9uZyB1c2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgZ3JvdXApOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZmNob3duMTYobG9uZyBmZCwgbG9uZyB1c2VyLCBsb25nIGdyb3VwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9mY2hvd24xNihsb25nIHJlcywgbG9uZyBmZCwgbG9uZyB1c2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgZ3JvdXApOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2V0cmVnaWQxNihsb25nIHJnaWQsIGxvbmcgZWdpZCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2V0cmVnaWQxNihsb25nIHJlcywgbG9uZyByZ2lkLCBsb25nIGVnaWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2V0Z2lkMTYobG9uZyBnaWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NldGdpZDE2KGxvbmcgcmVzLCBsb25nIGdpZCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zZXRyZXVpZDE2KGxvbmcgcnVpZCwgbG9uZyBldWlkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZXRyZXVpZDE2KGxvbmcgcmVzLCBsb25nIHJ1aWQsIGxvbmcgZXVpZCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zZXR1aWQxNihsb25nIHVpZCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2V0dWlkMTYobG9uZyByZXMsIGxvbmcgdWlkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NldHJlc3VpZDE2KGxvbmcgcnVpZCwgbG9uZyBldWlkLCBsb25nIHN1aWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NldHJlc3VpZDE2KGxvbmcgcmVzLCBsb25nIHJ1aWQsIGxvbmcgZXVpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHN1aWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZ2V0cmVzdWlkMTYobG9uZyBydWlkLCBsb25nIGV1aWQsIGxvbmcgc3VpZCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZ2V0cmVzdWlkMTYobG9uZyByZXMsIGxvbmcgcnVpZCwgbG9uZyBldWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgc3VpZCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zZXRyZXNnaWQxNihsb25nIHJnaWQsIGxvbmcgZWdpZCwgbG9uZyBzZ2lkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZXRyZXNnaWQxNihsb25nIHJlcywgbG9uZyByZ2lkLCBsb25nIGVnaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBzZ2lkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2dldHJlc2dpZDE2KGxvbmcgcmdpZCwgbG9uZyBlZ2lkLCBsb25nIHNnaWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2dldHJlc2dpZDE2KGxvbmcgcmVzLCBsb25nIHJnaWQsIGxvbmcgZWdpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHNnaWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2V0ZnN1aWQxNihsb25nIHVpZCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2V0ZnN1aWQxNihsb25nIHJlcywgbG9uZyB1aWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2V0ZnNnaWQxNihsb25nIGdpZCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2V0ZnNnaWQxNihsb25nIHJlcywgbG9uZyBnaWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZ2V0Z3JvdXBzMTYobG9uZyBnaWRzZXRzaXplLCBsb25nIGdyb3VwbGlzdCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZ2V0Z3JvdXBzMTYobG9uZyByZXMsIGxvbmcgZ2lkc2V0c2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGdyb3VwbGlzdCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zZXRncm91cHMxNihsb25nIGdpZHNldHNpemUsIGxvbmcgZ3JvdXBsaXN0KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZXRncm91cHMxNihsb25nIHJlcywgbG9uZyBnaWRzZXRzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgZ3JvdXBsaXN0KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2dldHVpZDE2KCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZ2V0dWlkMTYobG9uZyByZXMpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZ2V0ZXVpZDE2KCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZ2V0ZXVpZDE2KGxvbmcgcmVzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2dldGdpZDE2KCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZ2V0Z2lkMTYobG9uZyByZXMpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZ2V0ZWdpZDE2KCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZ2V0ZWdpZDE2KGxvbmcgcmVzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3V0aW1lKGxvbmcgZmlsZW5hbWUsIGxvbmcgdGltZXMpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3V0aW1lKGxvbmcgcmVzLCBsb25nIGZpbGVuYW1lLCBsb25nIHRpbWVzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3V0aW1lcyhsb25nIGZpbGVuYW1lLCBsb25nIHV0aW1lcyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfdXRpbWVzKGxvbmcgcmVzLCBsb25nIGZpbGVuYW1lLCBsb25nIHV0aW1lcyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9sc2Vlayhsb25nIGZkLCBsb25nIG9mZnNldCwgbG9uZyBvcmlnaW4pOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2xzZWVrKGxvbmcgcmVzLCBsb25nIGZkLCBsb25nIG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIG9yaWdpbik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9sbHNlZWsobG9uZyBmZCwgbG9uZyBvZmZzZXRfaGlnaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIG9mZnNldF9sb3csIGxvbmcgcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgb3JpZ2luKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9sbHNlZWsobG9uZyByZXMsIGxvbmcgZmQsIGxvbmcgb2Zmc2V0X2hpZ2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgb2Zmc2V0X2xvdywgbG9uZyByZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgb3JpZ2luKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3JlYWQobG9uZyBmZCwgbG9uZyBidWYsIGxvbmcgY291bnQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3JlYWQobG9uZyByZXMsIGxvbmcgZmQsIGxvbmcgYnVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBjb3VudCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9yZWFkdihsb25nIGZkLCBsb25nIHZlYywgbG9uZyB2bGVuKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9yZWFkdihsb25nIHJlcywgbG9uZyBmZCwgbG9uZyB2ZWMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyB2bGVuKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3dyaXRlKGxvbmcgZmQsIGxvbmcgYnVmLCBsb25nIGNvdW50KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF93cml0ZShsb25nIHJlcywgbG9uZyBmZCwgbG9uZyBidWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBjb3VudCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF93cml0ZXYobG9uZyBmZCwgbG9uZyB2ZWMsIGxvbmcgdmxlbik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfd3JpdGV2KGxvbmcgcmVzLCBsb25nIGZkLCBsb25nIHZlYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyB2bGVuKTsKCiNpZmRlZiBfTFA2NAp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfcHJlYWQ2NChsb25nIGZkLCBsb25nIGJ1ZiwgbG9uZyBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBwb3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3ByZWFkNjQobG9uZyByZXMsIGxvbmcgZmQsIGxvbmcgYnVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBjb3VudCwgbG9uZyBwb3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfcHdyaXRlNjQobG9uZyBmZCwgbG9uZyBidWYsIGxvbmcgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHBvcyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcHdyaXRlNjQobG9uZyByZXMsIGxvbmcgZmQsIGxvbmcgYnVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgY291bnQsIGxvbmcgcG9zKTsKI2Vsc2UKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3ByZWFkNjQobG9uZyBmZCwgbG9uZyBidWYsIGxvbmcgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgcG9zMCwgbG9uZyBwb3MxKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9wcmVhZDY0KGxvbmcgcmVzLCBsb25nIGZkLCBsb25nIGJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgY291bnQsIGxvbmcgcG9zMCwgbG9uZyBwb3MxKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3B3cml0ZTY0KGxvbmcgZmQsIGxvbmcgYnVmLCBsb25nIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBwb3MwLCBsb25nIHBvczEpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3B3cml0ZTY0KGxvbmcgcmVzLCBsb25nIGZkLCBsb25nIGJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGNvdW50LCBsb25nIHBvczAsIGxvbmcgcG9zMSk7CiNlbmRpZgoKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3ByZWFkdihsb25nIGZkLCBsb25nIHZlYywgbG9uZyB2bGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgcG9zX2wsIGxvbmcgcG9zX2gpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3ByZWFkdihsb25nIHJlcywgbG9uZyBmZCwgbG9uZyB2ZWMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgdmxlbiwgbG9uZyBwb3NfbCwgbG9uZyBwb3NfaCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9wd3JpdGV2KGxvbmcgZmQsIGxvbmcgdmVjLCBsb25nIHZsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgcG9zX2wsIGxvbmcgcG9zX2gpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3B3cml0ZXYobG9uZyByZXMsIGxvbmcgZmQsIGxvbmcgdmVjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyB2bGVuLCBsb25nIHBvc19sLCBsb25nIHBvc19oKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2dldGN3ZChsb25nIGJ1ZiwgbG9uZyBzaXplKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9nZXRjd2QobG9uZyByZXMsIGxvbmcgYnVmLCBsb25nIHNpemUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbWtkaXIobG9uZyBwYXRobmFtZSwgbG9uZyBtb2RlKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9ta2Rpcihsb25nIHJlcywgbG9uZyBwYXRobmFtZSwgbG9uZyBtb2RlKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2NoZGlyKGxvbmcgZmlsZW5hbWUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2NoZGlyKGxvbmcgcmVzLCBsb25nIGZpbGVuYW1lKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2ZjaGRpcihsb25nIGZkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9mY2hkaXIobG9uZyByZXMsIGxvbmcgZmQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfcm1kaXIobG9uZyBwYXRobmFtZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcm1kaXIobG9uZyByZXMsIGxvbmcgcGF0aG5hbWUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbG9va3VwX2Rjb29raWUobG9uZyBjb29raWU2NCwgbG9uZyBidWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxlbik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbG9va3VwX2Rjb29raWUobG9uZyByZXMsIGxvbmcgY29va2llNjQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBidWYsIGxvbmcgbGVuKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3F1b3RhY3RsKGxvbmcgY21kLCBsb25nIHNwZWNpYWwsIGxvbmcgaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGFkZHIpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3F1b3RhY3RsKGxvbmcgcmVzLCBsb25nIGNtZCwgbG9uZyBzcGVjaWFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaWQsIGxvbmcgYWRkcik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9nZXRkZW50cyhsb25nIGZkLCBsb25nIGRpcmVudCwgbG9uZyBjb3VudCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZ2V0ZGVudHMobG9uZyByZXMsIGxvbmcgZmQsIGxvbmcgZGlyZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgY291bnQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZ2V0ZGVudHM2NChsb25nIGZkLCBsb25nIGRpcmVudCwgbG9uZyBjb3VudCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZ2V0ZGVudHM2NChsb25nIHJlcywgbG9uZyBmZCwgbG9uZyBkaXJlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGNvdW50KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NldHNvY2tvcHQobG9uZyBmZCwgbG9uZyBsZXZlbCwgbG9uZyBvcHRuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIG9wdHZhbCwgbG9uZyBvcHRsZW4pOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NldHNvY2tvcHQobG9uZyByZXMsIGxvbmcgZmQsIGxvbmcgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIG9wdG5hbWUsIGxvbmcgb3B0dmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBvcHRsZW4pOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZ2V0c29ja29wdChsb25nIGZkLCBsb25nIGxldmVsLCBsb25nIG9wdG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgb3B0dmFsLCBsb25nIG9wdGxlbik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZ2V0c29ja29wdChsb25nIHJlcywgbG9uZyBmZCwgbG9uZyBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgb3B0bmFtZSwgbG9uZyBvcHR2YWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIG9wdGxlbik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9iaW5kKGxvbmcgYXJnMCwgbG9uZyBhcmcxLCBsb25nIGFyZzIpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2JpbmQobG9uZyByZXMsIGxvbmcgYXJnMCwgbG9uZyBhcmcxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBhcmcyKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2Nvbm5lY3QobG9uZyBhcmcwLCBsb25nIGFyZzEsIGxvbmcgYXJnMik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfY29ubmVjdChsb25nIHJlcywgbG9uZyBhcmcwLCBsb25nIGFyZzEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGFyZzIpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfYWNjZXB0KGxvbmcgYXJnMCwgbG9uZyBhcmcxLCBsb25nIGFyZzIpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2FjY2VwdChsb25nIHJlcywgbG9uZyBhcmcwLCBsb25nIGFyZzEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgYXJnMik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9hY2NlcHQ0KGxvbmcgYXJnMCwgbG9uZyBhcmcxLCBsb25nIGFyZzIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgYXJnMyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfYWNjZXB0NChsb25nIHJlcywgbG9uZyBhcmcwLCBsb25nIGFyZzEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGFyZzIsIGxvbmcgYXJnMyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9nZXRzb2NrbmFtZShsb25nIGFyZzAsIGxvbmcgYXJnMSwgbG9uZyBhcmcyKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9nZXRzb2NrbmFtZShsb25nIHJlcywgbG9uZyBhcmcwLCBsb25nIGFyZzEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBhcmcyKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2dldHBlZXJuYW1lKGxvbmcgYXJnMCwgbG9uZyBhcmcxLCBsb25nIGFyZzIpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2dldHBlZXJuYW1lKGxvbmcgcmVzLCBsb25nIGFyZzAsIGxvbmcgYXJnMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGFyZzIpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2VuZChsb25nIGFyZzAsIGxvbmcgYXJnMSwgbG9uZyBhcmcyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGFyZzMpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NlbmQobG9uZyByZXMsIGxvbmcgYXJnMCwgbG9uZyBhcmcxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBhcmcyLCBsb25nIGFyZzMpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2VuZHRvKGxvbmcgYXJnMCwgbG9uZyBhcmcxLCBsb25nIGFyZzIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBhcmczLCBsb25nIGFyZzQsIGxvbmcgYXJnNSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2VuZHRvKGxvbmcgcmVzLCBsb25nIGFyZzAsIGxvbmcgYXJnMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBhcmcyLCBsb25nIGFyZzMsIGxvbmcgYXJnNCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBhcmc1KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NlbmRtc2cobG9uZyBmZCwgbG9uZyBtc2csIGxvbmcgZmxhZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NlbmRtc2cobG9uZyByZXMsIGxvbmcgZmQsIGxvbmcgbXNnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBmbGFncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zZW5kbW1zZyhsb25nIGZkLCBsb25nIG1zZywgbG9uZyB2bGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBmbGFncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2VuZG1tc2cobG9uZyByZXMsIGxvbmcgZmQsIGxvbmcgbXNnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgdmxlbiwgbG9uZyBmbGFncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9yZWN2KGxvbmcgYXJnMCwgbG9uZyBhcmcxLCBsb25nIGFyZzIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgYXJnMyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcmVjdihsb25nIHJlcywgbG9uZyBhcmcwLCBsb25nIGFyZzEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGFyZzIsIGxvbmcgYXJnMyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9yZWN2ZnJvbShsb25nIGFyZzAsIGxvbmcgYXJnMSwgbG9uZyBhcmcyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBhcmczLCBsb25nIGFyZzQsIGxvbmcgYXJnNSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcmVjdmZyb20obG9uZyByZXMsIGxvbmcgYXJnMCwgbG9uZyBhcmcxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgYXJnMiwgbG9uZyBhcmczLCBsb25nIGFyZzQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBhcmc1KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3JlY3Ztc2cobG9uZyBmZCwgbG9uZyBtc2csIGxvbmcgZmxhZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3JlY3Ztc2cobG9uZyByZXMsIGxvbmcgZmQsIGxvbmcgbXNnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBmbGFncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9yZWN2bW1zZyhsb25nIGZkLCBsb25nIG1zZywgbG9uZyB2bGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBmbGFncywgbG9uZyB0aW1lb3V0KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9yZWN2bW1zZyhsb25nIHJlcywgbG9uZyBmZCwgbG9uZyBtc2csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyB2bGVuLCBsb25nIGZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgdGltZW91dCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zb2NrZXQobG9uZyBhcmcwLCBsb25nIGFyZzEsIGxvbmcgYXJnMik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc29ja2V0KGxvbmcgcmVzLCBsb25nIGFyZzAsIGxvbmcgYXJnMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBhcmcyKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NvY2tldHBhaXIobG9uZyBhcmcwLCBsb25nIGFyZzEsIGxvbmcgYXJnMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBhcmczKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zb2NrZXRwYWlyKGxvbmcgcmVzLCBsb25nIGFyZzAsIGxvbmcgYXJnMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgYXJnMiwgbG9uZyBhcmczKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NvY2tldGNhbGwobG9uZyBjYWxsLCBsb25nIGFyZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NvY2tldGNhbGwobG9uZyByZXMsIGxvbmcgY2FsbCwgbG9uZyBhcmdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2xpc3Rlbihsb25nIGFyZzAsIGxvbmcgYXJnMSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbGlzdGVuKGxvbmcgcmVzLCBsb25nIGFyZzAsIGxvbmcgYXJnMSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9wb2xsKGxvbmcgdWZkcywgbG9uZyBuZmRzLCBsb25nIHRpbWVvdXQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3BvbGwobG9uZyByZXMsIGxvbmcgdWZkcywgbG9uZyBuZmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyB0aW1lb3V0KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NlbGVjdChsb25nIG4sIGxvbmcgaW5wLCBsb25nIG91dHAsIGxvbmcgZXhwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgdHZwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZWxlY3QobG9uZyByZXMsIGxvbmcgbiwgbG9uZyBpbnAsIGxvbmcgb3V0cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBleHAsIGxvbmcgdHZwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX29sZF9zZWxlY3QobG9uZyBhcmcpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX29sZF9zZWxlY3QobG9uZyByZXMsIGxvbmcgYXJnKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2Vwb2xsX2NyZWF0ZShsb25nIHNpemUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2Vwb2xsX2NyZWF0ZShsb25nIHJlcywgbG9uZyBzaXplKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2Vwb2xsX2NyZWF0ZTEobG9uZyBmbGFncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZXBvbGxfY3JlYXRlMShsb25nIHJlcywgbG9uZyBmbGFncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9lcG9sbF9jdGwobG9uZyBlcGZkLCBsb25nIG9wLCBsb25nIGZkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgZXZlbnQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2Vwb2xsX2N0bChsb25nIHJlcywgbG9uZyBlcGZkLCBsb25nIG9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGZkLCBsb25nIGV2ZW50KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2Vwb2xsX3dhaXQobG9uZyBlcGZkLCBsb25nIGV2ZW50cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBtYXhldmVudHMsIGxvbmcgdGltZW91dCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZXBvbGxfd2FpdChsb25nIHJlcywgbG9uZyBlcGZkLCBsb25nIGV2ZW50cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbWF4ZXZlbnRzLCBsb25nIHRpbWVvdXQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZXBvbGxfcHdhaXQobG9uZyBlcGZkLCBsb25nIGV2ZW50cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbWF4ZXZlbnRzLCBsb25nIHRpbWVvdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHNpZ21hc2ssIGxvbmcgc2lnc2V0c2l6ZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZXBvbGxfcHdhaXQobG9uZyByZXMsIGxvbmcgZXBmZCwgbG9uZyBldmVudHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBtYXhldmVudHMsIGxvbmcgdGltZW91dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHNpZ21hc2ssIGxvbmcgc2lnc2V0c2l6ZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9lcG9sbF9wd2FpdDIobG9uZyBlcGZkLCBsb25nIGV2ZW50cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIG1heGV2ZW50cywgbG9uZyB0aW1lb3V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgc2lnbWFzaywgbG9uZyBzaWdzZXRzaXplKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9lcG9sbF9wd2FpdDIobG9uZyByZXMsIGxvbmcgZXBmZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBldmVudHMsIGxvbmcgbWF4ZXZlbnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHRpbWVvdXQsIGxvbmcgc2lnbWFzaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBzaWdzZXRzaXplKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2dldGhvc3RuYW1lKGxvbmcgbmFtZSwgbG9uZyBsZW4pOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2dldGhvc3RuYW1lKGxvbmcgcmVzLCBsb25nIG5hbWUsIGxvbmcgbGVuKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NldGhvc3RuYW1lKGxvbmcgbmFtZSwgbG9uZyBsZW4pOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NldGhvc3RuYW1lKGxvbmcgcmVzLCBsb25nIG5hbWUsIGxvbmcgbGVuKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NldGRvbWFpbm5hbWUobG9uZyBuYW1lLCBsb25nIGxlbik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2V0ZG9tYWlubmFtZShsb25nIHJlcywgbG9uZyBuYW1lLCBsb25nIGxlbik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9uZXd1bmFtZShsb25nIG5hbWUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX25ld3VuYW1lKGxvbmcgcmVzLCBsb25nIG5hbWUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfdW5hbWUobG9uZyBhcmcwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF91bmFtZShsb25nIHJlcywgbG9uZyBhcmcwKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX29sZHVuYW1lKGxvbmcgYXJnMCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfb2xkdW5hbWUobG9uZyByZXMsIGxvbmcgYXJnMCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9nZXRybGltaXQobG9uZyByZXNvdXJjZSwgbG9uZyBybGltKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9nZXRybGltaXQobG9uZyByZXMsIGxvbmcgcmVzb3VyY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgcmxpbSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9vbGRfZ2V0cmxpbWl0KGxvbmcgcmVzb3VyY2UsIGxvbmcgcmxpbSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfb2xkX2dldHJsaW1pdChsb25nIHJlcywgbG9uZyByZXNvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgcmxpbSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zZXRybGltaXQobG9uZyByZXNvdXJjZSwgbG9uZyBybGltKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZXRybGltaXQobG9uZyByZXMsIGxvbmcgcmVzb3VyY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgcmxpbSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9wcmxpbWl0NjQobG9uZyBwaWQsIGxvbmcgcmVzb3VyY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBuZXdfcmxpbSwgbG9uZyBvbGRfcmxpbSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcHJsaW1pdDY0KGxvbmcgcmVzLCBsb25nIHBpZCwgbG9uZyByZXNvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBuZXdfcmxpbSwgbG9uZyBvbGRfcmxpbSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9nZXRydXNhZ2UobG9uZyB3aG8sIGxvbmcgcnUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2dldHJ1c2FnZShsb25nIHJlcywgbG9uZyB3aG8sIGxvbmcgcnUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfdW1hc2sobG9uZyBtYXNrKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF91bWFzayhsb25nIHJlcywgbG9uZyBtYXNrKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX21zZ2dldChsb25nIGtleSwgbG9uZyBtc2dmbGcpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX21zZ2dldChsb25nIHJlcywgbG9uZyBrZXksIGxvbmcgbXNnZmxnKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX21zZ3NuZChsb25nIG1zcWlkLCBsb25nIG1zZ3AsIGxvbmcgbXNnc3osCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBtc2dmbGcpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX21zZ3NuZChsb25nIHJlcywgbG9uZyBtc3FpZCwgbG9uZyBtc2dwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIG1zZ3N6LCBsb25nIG1zZ2ZsZyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9tc2dyY3YobG9uZyBtc3FpZCwgbG9uZyBtc2dwLCBsb25nIG1zZ3N6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbXNndHlwLCBsb25nIG1zZ2ZsZyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbXNncmN2KGxvbmcgcmVzLCBsb25nIG1zcWlkLCBsb25nIG1zZ3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbXNnc3osIGxvbmcgbXNndHlwLCBsb25nIG1zZ2ZsZyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9tc2djdGwobG9uZyBtc3FpZCwgbG9uZyBjbWQsIGxvbmcgYnVmKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9tc2djdGwobG9uZyByZXMsIGxvbmcgbXNxaWQsIGxvbmcgY21kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGJ1Zik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zZW1nZXQobG9uZyBrZXksIGxvbmcgbnNlbXMsIGxvbmcgc2VtZmxnKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZW1nZXQobG9uZyByZXMsIGxvbmcga2V5LCBsb25nIG5zZW1zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHNlbWZsZyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zZW1vcChsb25nIHNlbWlkLCBsb25nIHNvcHMsIGxvbmcgbnNvcHMpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NlbW9wKGxvbmcgcmVzLCBsb25nIHNlbWlkLCBsb25nIHNvcHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBuc29wcyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zZW1jdGwobG9uZyBzZW1pZCwgbG9uZyBzZW1udW0sIGxvbmcgY21kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgYXJnKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZW1jdGwobG9uZyByZXMsIGxvbmcgc2VtaWQsIGxvbmcgc2VtbnVtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGNtZCwgbG9uZyBhcmcpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2VtdGltZWRvcChsb25nIHNlbWlkLCBsb25nIHNvcHMsIGxvbmcgbnNvcHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgdGltZW91dCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2VtdGltZWRvcChsb25nIHJlcywgbG9uZyBzZW1pZCwgbG9uZyBzb3BzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBuc29wcywgbG9uZyB0aW1lb3V0KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NobWF0KGxvbmcgc2htaWQsIGxvbmcgc2htYWRkciwgbG9uZyBzaG1mbGcpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NobWF0KGxvbmcgcmVzLCBsb25nIHNobWlkLCBsb25nIHNobWFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBzaG1mbGcpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2htZ2V0KGxvbmcga2V5LCBsb25nIHNpemUsIGxvbmcgZmxhZyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2htZ2V0KGxvbmcgcmVzLCBsb25nIGtleSwgbG9uZyBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGZsYWcpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2htZHQobG9uZyBzaG1hZGRyKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zaG1kdChsb25nIHJlcywgbG9uZyBzaG1hZGRyKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NobWN0bChsb25nIHNobWlkLCBsb25nIGNtZCwgbG9uZyBidWYpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NobWN0bChsb25nIHJlcywgbG9uZyBzaG1pZCwgbG9uZyBjbWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgYnVmKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2lwYyhsb25nIGNhbGwsIGxvbmcgZmlyc3QsIGxvbmcgc2Vjb25kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgdGhpcmQsIGxvbmcgcHRyLCBsb25nIGZpZnRoKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9pcGMobG9uZyByZXMsIGxvbmcgY2FsbCwgbG9uZyBmaXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBzZWNvbmQsIGxvbmcgdGhpcmQsIGxvbmcgcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGZpZnRoKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX21xX29wZW4obG9uZyBuYW1lLCBsb25nIG9mbGFnLCBsb25nIG1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgYXR0cik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbXFfb3Blbihsb25nIHJlcywgbG9uZyBuYW1lLCBsb25nIG9mbGFnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBtb2RlLCBsb25nIGF0dHIpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbXFfdW5saW5rKGxvbmcgbmFtZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbXFfdW5saW5rKGxvbmcgcmVzLCBsb25nIG5hbWUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbXFfdGltZWRzZW5kKGxvbmcgbXFkZXMsIGxvbmcgbXNnX3B0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIG1zZ19sZW4sIGxvbmcgbXNnX3ByaW8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBhYnNfdGltZW91dCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbXFfdGltZWRzZW5kKGxvbmcgcmVzLCBsb25nIG1xZGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIG1zZ19wdHIsIGxvbmcgbXNnX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBtc2dfcHJpbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBhYnNfdGltZW91dCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9tcV90aW1lZHJlY2VpdmUobG9uZyBtcWRlcywgbG9uZyBtc2dfcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbXNnX2xlbiwgbG9uZyBtc2dfcHJpbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGFic190aW1lb3V0KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9tcV90aW1lZHJlY2VpdmUobG9uZyByZXMsIGxvbmcgbXFkZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbXNnX3B0ciwgbG9uZyBtc2dfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIG1zZ19wcmlvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGFic190aW1lb3V0KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX21xX25vdGlmeShsb25nIG1xZGVzLCBsb25nIG5vdGlmaWNhdGlvbik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbXFfbm90aWZ5KGxvbmcgcmVzLCBsb25nIG1xZGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIG5vdGlmaWNhdGlvbik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9tcV9nZXRzZXRhdHRyKGxvbmcgbXFkZXMsIGxvbmcgbXFzdGF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIG9tcXN0YXQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX21xX2dldHNldGF0dHIobG9uZyByZXMsIGxvbmcgbXFkZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIG1xc3RhdCwgbG9uZyBvbXFzdGF0KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3BjaWNvbmZpZ19pb2Jhc2UobG9uZyB3aGljaCwgbG9uZyBidXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgZGV2Zm4pOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3BjaWNvbmZpZ19pb2Jhc2UobG9uZyByZXMsIGxvbmcgd2hpY2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGJ1cywgbG9uZyBkZXZmbik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9wY2ljb25maWdfcmVhZChsb25nIGJ1cywgbG9uZyBkZm4sIGxvbmcgb2ZmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsZW4sIGxvbmcgYnVmKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9wY2ljb25maWdfcmVhZChsb25nIHJlcywgbG9uZyBidXMsIGxvbmcgZGZuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgb2ZmLCBsb25nIGxlbiwgbG9uZyBidWYpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfcGNpY29uZmlnX3dyaXRlKGxvbmcgYnVzLCBsb25nIGRmbiwgbG9uZyBvZmYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsZW4sIGxvbmcgYnVmKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9wY2ljb25maWdfd3JpdGUobG9uZyByZXMsIGxvbmcgYnVzLCBsb25nIGRmbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBvZmYsIGxvbmcgbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGJ1Zik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zd2Fwb24obG9uZyBzcGVjaWFsZmlsZSwgbG9uZyBzd2FwX2ZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zd2Fwb24obG9uZyByZXMsIGxvbmcgc3BlY2lhbGZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgc3dhcF9mbGFncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zd2Fwb2ZmKGxvbmcgc3BlY2lhbGZpbGUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3N3YXBvZmYobG9uZyByZXMsIGxvbmcgc3BlY2lhbGZpbGUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc3lzY3RsKGxvbmcgYXJncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc3lzY3RsKGxvbmcgcmVzLCBsb25nIGFyZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc3lzaW5mbyhsb25nIGluZm8pOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3N5c2luZm8obG9uZyByZXMsIGxvbmcgaW5mbyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zeXNmcyhsb25nIG9wdGlvbiwgbG9uZyBhcmcxLCBsb25nIGFyZzIpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3N5c2ZzKGxvbmcgcmVzLCBsb25nIG9wdGlvbiwgbG9uZyBhcmcxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgYXJnMik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zeXNsb2cobG9uZyB0eXBlLCBsb25nIGJ1ZiwgbG9uZyBsZW4pOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3N5c2xvZyhsb25nIHJlcywgbG9uZyB0eXBlLCBsb25nIGJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsZW4pOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfdXNlbGliKGxvbmcgbGlicmFyeSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfdXNlbGliKGxvbmcgcmVzLCBsb25nIGxpYnJhcnkpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbmlfc3lzY2FsbCgpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX25pX3N5c2NhbGwobG9uZyByZXMpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfcHRyYWNlKGxvbmcgcmVxdWVzdCwgbG9uZyBwaWQsIGxvbmcgYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGRhdGEpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3B0cmFjZShsb25nIHJlcywgbG9uZyByZXF1ZXN0LCBsb25nIHBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBhZGRyLCBsb25nIGRhdGEpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfYWRkX2tleShsb25nIF90eXBlLCBsb25nIF9kZXNjcmlwdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBfcGF5bG9hZCwgbG9uZyBwbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGRlc3RyaW5naWQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2FkZF9rZXkobG9uZyByZXMsIGxvbmcgX3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIF9kZXNjcmlwdGlvbiwgbG9uZyBfcGF5bG9hZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgcGxlbiwgbG9uZyBkZXN0cmluZ2lkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3JlcXVlc3Rfa2V5KGxvbmcgX3R5cGUsIGxvbmcgX2Rlc2NyaXB0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBfY2FsbG91dF9pbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBkZXN0cmluZ2lkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9yZXF1ZXN0X2tleShsb25nIHJlcywgbG9uZyBfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIF9kZXNjcmlwdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIF9jYWxsb3V0X2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBkZXN0cmluZ2lkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2tleWN0bChsb25nIGNtZCwgbG9uZyBhcmcyLCBsb25nIGFyZzMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBhcmc0LCBsb25nIGFyZzUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2tleWN0bChsb25nIHJlcywgbG9uZyBjbWQsIGxvbmcgYXJnMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBhcmczLCBsb25nIGFyZzQsIGxvbmcgYXJnNSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9pb3ByaW9fc2V0KGxvbmcgd2hpY2gsIGxvbmcgd2hvLCBsb25nIGlvcHJpbyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfaW9wcmlvX3NldChsb25nIHJlcywgbG9uZyB3aGljaCwgbG9uZyB3aG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGlvcHJpbyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9pb3ByaW9fZ2V0KGxvbmcgd2hpY2gsIGxvbmcgd2hvKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9pb3ByaW9fZ2V0KGxvbmcgcmVzLCBsb25nIHdoaWNoLCBsb25nIHdobyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zZXRfbWVtcG9saWN5KGxvbmcgbW9kZSwgbG9uZyBubWFzaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBtYXhub2RlKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zZXRfbWVtcG9saWN5KGxvbmcgcmVzLCBsb25nIG1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIG5tYXNrLCBsb25nIG1heG5vZGUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbWlncmF0ZV9wYWdlcyhsb25nIHBpZCwgbG9uZyBtYXhub2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGZyb20sIGxvbmcgdG8pOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX21pZ3JhdGVfcGFnZXMobG9uZyByZXMsIGxvbmcgcGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBtYXhub2RlLCBsb25nIGZyb20sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHRvKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX21vdmVfcGFnZXMobG9uZyBwaWQsIGxvbmcgbnJfcGFnZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgcGFnZXMsIGxvbmcgbm9kZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgc3RhdHVzLCBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9tb3ZlX3BhZ2VzKGxvbmcgcmVzLCBsb25nIHBpZCwgbG9uZyBucl9wYWdlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgcGFnZXMsIGxvbmcgbm9kZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHN0YXR1cywgbG9uZyBmbGFncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9tYmluZChsb25nIHN0YXJ0LCBsb25nIGxlbiwgbG9uZyBtb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBubWFzaywgbG9uZyBtYXhub2RlLCBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9tYmluZChsb25nIHJlcywgbG9uZyBzdGFydCwgbG9uZyBsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBtb2RlLCBsb25nIG5tYXNrLCBsb25nIG1heG5vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBmbGFncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9nZXRfbWVtcG9saWN5KGxvbmcgcG9saWN5LCBsb25nIG5tYXNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIG1heG5vZGUsIGxvbmcgYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBmbGFncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZ2V0X21lbXBvbGljeShsb25nIHJlcywgbG9uZyBwb2xpY3ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIG5tYXNrLCBsb25nIG1heG5vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGFkZHIsIGxvbmcgZmxhZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfaW5vdGlmeV9pbml0KCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfaW5vdGlmeV9pbml0KGxvbmcgcmVzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2lub3RpZnlfaW5pdDEobG9uZyBmbGFncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfaW5vdGlmeV9pbml0MShsb25nIHJlcywgbG9uZyBmbGFncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9pbm90aWZ5X2FkZF93YXRjaChsb25nIGZkLCBsb25nIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIG1hc2spOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2lub3RpZnlfYWRkX3dhdGNoKGxvbmcgcmVzLCBsb25nIGZkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgcGF0aCwgbG9uZyBtYXNrKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2lub3RpZnlfcm1fd2F0Y2gobG9uZyBmZCwgbG9uZyB3ZCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfaW5vdGlmeV9ybV93YXRjaChsb25nIHJlcywgbG9uZyBmZCwgbG9uZyB3ZCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zcHVfcnVuKGxvbmcgZmQsIGxvbmcgdW5wYywgbG9uZyB1c3RhdHVzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zcHVfcnVuKGxvbmcgcmVzLCBsb25nIGZkLCBsb25nIHVucGMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHVzdGF0dXMpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc3B1X2NyZWF0ZShsb25nIG5hbWUsIGxvbmcgZmxhZ3MsIGxvbmcgbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBmZCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc3B1X2NyZWF0ZShsb25nIHJlcywgbG9uZyBuYW1lLCBsb25nIGZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBtb2RlLCBsb25nIGZkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX21rbm9kYXQobG9uZyBkZmQsIGxvbmcgZmlsZW5hbWUsIGxvbmcgbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBkZXYpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX21rbm9kYXQobG9uZyByZXMsIGxvbmcgZGZkLCBsb25nIGZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBtb2RlLCBsb25nIGRldik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9ta2RpcmF0KGxvbmcgZGZkLCBsb25nIHBhdGhuYW1lLCBsb25nIG1vZGUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX21rZGlyYXQobG9uZyByZXMsIGxvbmcgZGZkLCBsb25nIHBhdGhuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBtb2RlKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3VubGlua2F0KGxvbmcgZGZkLCBsb25nIHBhdGhuYW1lLCBsb25nIGZsYWcpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3VubGlua2F0KGxvbmcgcmVzLCBsb25nIGRmZCwgbG9uZyBwYXRobmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGZsYWcpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc3ltbGlua2F0KGxvbmcgb2xkbmFtZSwgbG9uZyBuZXdkZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBuZXduYW1lKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zeW1saW5rYXQobG9uZyByZXMsIGxvbmcgb2xkbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBuZXdkZmQsIGxvbmcgbmV3bmFtZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9saW5rYXQobG9uZyBvbGRkZmQsIGxvbmcgb2xkbmFtZSwgbG9uZyBuZXdkZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBuZXduYW1lLCBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9saW5rYXQobG9uZyByZXMsIGxvbmcgb2xkZGZkLCBsb25nIG9sZG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbmV3ZGZkLCBsb25nIG5ld25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgZmxhZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfcmVuYW1lYXQobG9uZyBvbGRkZmQsIGxvbmcgb2xkbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbmV3ZGZkLCBsb25nIG5ld25hbWUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3JlbmFtZWF0KGxvbmcgcmVzLCBsb25nIG9sZGRmZCwgbG9uZyBvbGRuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbmV3ZGZkLCBsb25nIG5ld25hbWUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZnV0aW1lc2F0KGxvbmcgZGZkLCBsb25nIGZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgdXRpbWVzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9mdXRpbWVzYXQobG9uZyByZXMsIGxvbmcgZGZkLCBsb25nIGZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHV0aW1lcyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9mYWNjZXNzYXQobG9uZyBkZmQsIGxvbmcgZmlsZW5hbWUsIGxvbmcgbW9kZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZmFjY2Vzc2F0KGxvbmcgcmVzLCBsb25nIGRmZCwgbG9uZyBmaWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBtb2RlKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2ZjaG1vZGF0KGxvbmcgZGZkLCBsb25nIGZpbGVuYW1lLCBsb25nIG1vZGUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2ZjaG1vZGF0KGxvbmcgcmVzLCBsb25nIGRmZCwgbG9uZyBmaWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIG1vZGUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZmNob3duYXQobG9uZyBkZmQsIGxvbmcgZmlsZW5hbWUsIGxvbmcgdXNlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgZ3JvdXAsIGxvbmcgZmxhZyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZmNob3duYXQobG9uZyByZXMsIGxvbmcgZGZkLCBsb25nIGZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgdXNlciwgbG9uZyBncm91cCwgbG9uZyBmbGFnKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX29wZW5hdChsb25nIGRmZCwgbG9uZyBmaWxlbmFtZSwgbG9uZyBmbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIG1vZGUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX29wZW5hdChsb25nIHJlcywgbG9uZyBkZmQsIGxvbmcgZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgZmxhZ3MsIGxvbmcgbW9kZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9uZXdmc3RhdGF0KGxvbmcgZGZkLCBsb25nIGZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHN0YXRidWYsIGxvbmcgZmxhZyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbmV3ZnN0YXRhdChsb25nIHJlcywgbG9uZyBkZmQsIGxvbmcgZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHN0YXRidWYsIGxvbmcgZmxhZyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9mc3RhdGF0NjQobG9uZyBkZmQsIGxvbmcgZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBzdGF0YnVmLCBsb25nIGZsYWcpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2ZzdGF0YXQ2NChsb25nIHJlcywgbG9uZyBkZmQsIGxvbmcgZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgc3RhdGJ1ZiwgbG9uZyBmbGFnKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3JlYWRsaW5rYXQobG9uZyBkZmQsIGxvbmcgcGF0aCwgbG9uZyBidWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgYnVmc2l6KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9yZWFkbGlua2F0KGxvbmcgcmVzLCBsb25nIGRmZCwgbG9uZyBwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBidWYsIGxvbmcgYnVmc2l6KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3V0aW1lbnNhdChsb25nIGRmZCwgbG9uZyBmaWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHV0aW1lcywgbG9uZyBmbGFncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfdXRpbWVuc2F0KGxvbmcgcmVzLCBsb25nIGRmZCwgbG9uZyBmaWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyB1dGltZXMsIGxvbmcgZmxhZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfdW5zaGFyZShsb25nIHVuc2hhcmVfZmxhZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3Vuc2hhcmUobG9uZyByZXMsIGxvbmcgdW5zaGFyZV9mbGFncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zcGxpY2UobG9uZyBmZF9pbiwgbG9uZyBvZmZfaW4sIGxvbmcgZmRfb3V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgb2ZmX291dCwgbG9uZyBsZW4sIGxvbmcgZmxhZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NwbGljZShsb25nIHJlcywgbG9uZyBmZF9pbiwgbG9uZyBvZmZfaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgZmRfb3V0LCBsb25nIG9mZl9vdXQsIGxvbmcgbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3Ztc3BsaWNlKGxvbmcgZmQsIGxvbmcgaW92LCBsb25nIG5yX3NlZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF92bXNwbGljZShsb25nIHJlcywgbG9uZyBmZCwgbG9uZyBpb3YsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBucl9zZWdzLCBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3RlZShsb25nIGZkaW4sIGxvbmcgZmRvdXQsIGxvbmcgbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgZmxhZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3RlZShsb25nIHJlcywgbG9uZyBmZGluLCBsb25nIGZkb3V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxlbiwgbG9uZyBmbGFncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9nZXRfcm9idXN0X2xpc3QobG9uZyBwaWQsIGxvbmcgaGVhZF9wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsZW5fcHRyKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9nZXRfcm9idXN0X2xpc3QobG9uZyByZXMsIGxvbmcgcGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGhlYWRfcHRyLCBsb25nIGxlbl9wdHIpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2V0X3JvYnVzdF9saXN0KGxvbmcgaGVhZCwgbG9uZyBsZW4pOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NldF9yb2J1c3RfbGlzdChsb25nIHJlcywgbG9uZyBoZWFkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxlbik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9nZXRjcHUobG9uZyBjcHUsIGxvbmcgbm9kZSwgbG9uZyBjYWNoZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZ2V0Y3B1KGxvbmcgcmVzLCBsb25nIGNwdSwgbG9uZyBub2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGNhY2hlKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3NpZ25hbGZkKGxvbmcgdWZkLCBsb25nIHVzZXJfbWFzaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgc2l6ZW1hc2spOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NpZ25hbGZkKGxvbmcgcmVzLCBsb25nIHVmZCwgbG9uZyB1c2VyX21hc2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBzaXplbWFzayk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zaWduYWxmZDQobG9uZyB1ZmQsIGxvbmcgdXNlcl9tYXNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgc2l6ZW1hc2ssIGxvbmcgZmxhZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NpZ25hbGZkNChsb25nIHJlcywgbG9uZyB1ZmQsIGxvbmcgdXNlcl9tYXNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHNpemVtYXNrLCBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3RpbWVyZmRfY3JlYXRlKGxvbmcgY2xvY2tpZCwgbG9uZyBmbGFncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfdGltZXJmZF9jcmVhdGUobG9uZyByZXMsIGxvbmcgY2xvY2tpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3RpbWVyZmRfc2V0dGltZShsb25nIHVmZCwgbG9uZyBmbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHV0bXIsIGxvbmcgb3Rtcik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfdGltZXJmZF9zZXR0aW1lKGxvbmcgcmVzLCBsb25nIHVmZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBmbGFncywgbG9uZyB1dG1yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIG90bXIpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfdGltZXJmZF9nZXR0aW1lKGxvbmcgdWZkLCBsb25nIG90bXIpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3RpbWVyZmRfZ2V0dGltZShsb25nIHJlcywgbG9uZyB1ZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgb3Rtcik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9ldmVudGZkKGxvbmcgY291bnQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2V2ZW50ZmQobG9uZyByZXMsIGxvbmcgY291bnQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZXZlbnRmZDIobG9uZyBjb3VudCwgbG9uZyBmbGFncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfZXZlbnRmZDIobG9uZyByZXMsIGxvbmcgY291bnQsIGxvbmcgZmxhZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfb2xkX3JlYWRkaXIobG9uZyBhcmcwLCBsb25nIGFyZzEsIGxvbmcgYXJnMik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfb2xkX3JlYWRkaXIobG9uZyByZXMsIGxvbmcgYXJnMCwgbG9uZyBhcmcxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgYXJnMik7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9wc2VsZWN0Nihsb25nIGFyZzAsIGxvbmcgYXJnMSwgbG9uZyBhcmcyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBhcmczLCBsb25nIGFyZzQsIGxvbmcgYXJnNSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcHNlbGVjdDYobG9uZyByZXMsIGxvbmcgYXJnMCwgbG9uZyBhcmcxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgYXJnMiwgbG9uZyBhcmczLCBsb25nIGFyZzQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBhcmc1KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3Bwb2xsKGxvbmcgYXJnMCwgbG9uZyBhcmcxLCBsb25nIGFyZzIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGFyZzMsIGxvbmcgYXJnNCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcHBvbGwobG9uZyByZXMsIGxvbmcgYXJnMCwgbG9uZyBhcmcxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgYXJnMiwgbG9uZyBhcmczLCBsb25nIGFyZzQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZmFub3RpZnlfaW5pdChsb25nIGZsYWdzLCBsb25nIGV2ZW50X2ZfZmxhZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2Zhbm90aWZ5X2luaXQobG9uZyByZXMsIGxvbmcgZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGV2ZW50X2ZfZmxhZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfZmFub3RpZnlfbWFyayhsb25nIGZhbm90aWZ5X2ZkLCBsb25nIGZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIG1hc2ssIGxvbmcgZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgcGF0aG5hbWUpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX2Zhbm90aWZ5X21hcmsobG9uZyByZXMsIGxvbmcgZmFub3RpZnlfZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGZsYWdzLCBsb25nIG1hc2ssIGxvbmcgZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHBhdGhuYW1lKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3N5bmNmcyhsb25nIGZkKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9zeW5jZnMobG9uZyByZXMsIGxvbmcgZmQpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfcGVyZl9ldmVudF9vcGVuKGxvbmcgYXR0cl91cHRyLCBsb25nIHBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGNwdSwgbG9uZyBncm91cF9mZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9wZXJmX2V2ZW50X29wZW4obG9uZyByZXMsIGxvbmcgYXR0cl91cHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHBpZCwgbG9uZyBjcHUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgZ3JvdXBfZmQsIGxvbmcgZmxhZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbW1hcF9wZ29mZihsb25nIGFkZHIsIGxvbmcgbGVuLCBsb25nIHByb3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgZmxhZ3MsIGxvbmcgZmQsIGxvbmcgcGdvZmYpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX21tYXBfcGdvZmYobG9uZyByZXMsIGxvbmcgYWRkciwgbG9uZyBsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHByb3QsIGxvbmcgZmxhZ3MsIGxvbmcgZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHBnb2ZmKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX29sZF9tbWFwKGxvbmcgYXJnKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9vbGRfbW1hcChsb25nIHJlcywgbG9uZyBhcmcpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfbmFtZV90b19oYW5kbGVfYXQobG9uZyBkZmQsIGxvbmcgbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaGFuZGxlLCBsb25nIG1udF9pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgZmxhZyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfbmFtZV90b19oYW5kbGVfYXQobG9uZyByZXMsIGxvbmcgZGZkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbmFtZSwgbG9uZyBoYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBtbnRfaWQsIGxvbmcgZmxhZyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9vcGVuX2J5X2hhbmRsZV9hdChsb25nIG1vdW50ZGlyZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGhhbmRsZSwgbG9uZyBmbGFncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfb3Blbl9ieV9oYW5kbGVfYXQobG9uZyByZXMsIGxvbmcgbW91bnRkaXJmZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGhhbmRsZSwgbG9uZyBmbGFncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9zZXRucyhsb25nIGZkLCBsb25nIG5zdHlwZSk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfc2V0bnMobG9uZyByZXMsIGxvbmcgZmQsIGxvbmcgbnN0eXBlKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3Byb2Nlc3Nfdm1fcmVhZHYobG9uZyBwaWQsIGxvbmcgbHZlYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsaW92Y250LCBsb25nIHJ2ZWMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgcmlvdmNudCwgbG9uZyBmbGFncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfcHJvY2Vzc192bV9yZWFkdihsb25nIHJlcywgbG9uZyBwaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGx2ZWMsIGxvbmcgbGlvdmNudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgcnZlYywgbG9uZyByaW92Y250LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBmbGFncyk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9wcm9jZXNzX3ZtX3dyaXRldihsb25nIHBpZCwgbG9uZyBsdmVjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsaW92Y250LCBsb25nIHJ2ZWMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHJpb3ZjbnQsIGxvbmcgZmxhZ3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3Byb2Nlc3Nfdm1fd3JpdGV2KGxvbmcgcmVzLCBsb25nIHBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGx2ZWMsIGxvbmcgbGlvdmNudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHJ2ZWMsIGxvbmcgcmlvdmNudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGZsYWdzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX2ZvcmsoKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9mb3JrKGxvbmcgcmVzKTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3ByZV9pbXBsX3Zmb3JrKCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wb3N0X2ltcGxfdmZvcmsobG9uZyByZXMpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2lnYWN0aW9uKGxvbmcgc2lnbnVtLCBsb25nIGFjdCwgbG9uZyBvbGRhY3QpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NpZ2FjdGlvbihsb25nIHJlcywgbG9uZyBzaWdudW0sIGxvbmcgYWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIG9sZGFjdCk7CnZvaWQgX19zYW5pdGl6ZXJfc3lzY2FsbF9wcmVfaW1wbF9ydF9zaWdhY3Rpb24obG9uZyBzaWdudW0sIGxvbmcgYWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgb2xkYWN0LCBsb25nIHN6KTsKdm9pZCBfX3Nhbml0aXplcl9zeXNjYWxsX3Bvc3RfaW1wbF9ydF9zaWdhY3Rpb24obG9uZyByZXMsIGxvbmcgc2lnbnVtLCBsb25nIGFjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBvbGRhY3QsIGxvbmcgc3opOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcHJlX2ltcGxfc2lnYWx0c3RhY2sobG9uZyBzcywgbG9uZyBvc3MpOwp2b2lkIF9fc2FuaXRpemVyX3N5c2NhbGxfcG9zdF9pbXBsX3NpZ2FsdHN0YWNrKGxvbmcgcmVzLCBsb25nIHNzLCBsb25nIG9zcyk7CiNpZmRlZiBfX2NwbHVzcGx1cwp9IC8vIGV4dGVybiAiQyIKI2VuZGlmCgojZW5kaWYgLy8gU0FOSVRJWkVSX0xJTlVYX1NZU0NBTExfSE9PS1NfSAoALy89PT0tLSBtc2FuX2ludGVyZmFjZS5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KLy8KLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KLy8KLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KLy8KLy8gVGhpcyBmaWxlIGlzIGEgcGFydCBvZiBNZW1vcnlTYW5pdGl6ZXIuCi8vCi8vIFB1YmxpYyBpbnRlcmZhY2UgaGVhZGVyLgovLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwojaWZuZGVmIE1TQU5fSU5URVJGQUNFX0gKI2RlZmluZSBNU0FOX0lOVEVSRkFDRV9ICgojaW5jbHVkZSA8c2FuaXRpemVyL2NvbW1vbl9pbnRlcmZhY2VfZGVmcy5oPgoKI2lmZGVmIF9fY3BsdXNwbHVzCmV4dGVybiAiQyIgewojZW5kaWYKICAvKiBTZXQgcmF3IG9yaWdpbiBmb3IgdGhlIG1lbW9yeSByYW5nZS4gKi8KICB2b2lkIF9fbXNhbl9zZXRfb3JpZ2luKGNvbnN0IHZvbGF0aWxlIHZvaWQgKmEsIHNpemVfdCBzaXplLCB1aW50MzJfdCBvcmlnaW4pOwoKICAvKiBHZXQgcmF3IG9yaWdpbiBmb3IgYW4gYWRkcmVzcy4gKi8KICB1aW50MzJfdCBfX21zYW5fZ2V0X29yaWdpbihjb25zdCB2b2xhdGlsZSB2b2lkICphKTsKCiAgLyogVGVzdCB0aGF0IHRoaXNfaWQgaXMgYSBkZXNjZW5kYW50IG9mIHByZXZfaWQgKG9yIHRoZXkgYXJlIHNpbXBseSBlcXVhbCkuCiAgICogImRlc2NlbmRhbnQiIGhlcmUgbWVhbnMgdGhleSBhcmUgcGFydCBvZiB0aGUgc2FtZSBjaGFpbiwgY3JlYXRlZCB3aXRoCiAgICogX19tc2FuX2NoYWluX29yaWdpbi4gKi8KICBpbnQgX19tc2FuX29yaWdpbl9pc19kZXNjZW5kYW50X29yX3NhbWUodWludDMyX3QgdGhpc19pZCwgdWludDMyX3QgcHJldl9pZCk7CgogIC8qIFJldHVybnMgbm9uLXplcm8gaWYgdHJhY2tpbmcgb3JpZ2lucy4gKi8KICBpbnQgX19tc2FuX2dldF90cmFja19vcmlnaW5zKHZvaWQpOwoKICAvKiBSZXR1cm5zIHRoZSBvcmlnaW4gaWQgb2YgdGhlIGxhdGVzdCBVTVIgaW4gdGhlIGNhbGxpbmcgdGhyZWFkLiAqLwogIHVpbnQzMl90IF9fbXNhbl9nZXRfdW1yX29yaWdpbih2b2lkKTsKCiAgLyogTWFrZSBtZW1vcnkgcmVnaW9uIGZ1bGx5IGluaXRpYWxpemVkICh3aXRob3V0IGNoYW5naW5nIGl0cyBjb250ZW50cykuICovCiAgdm9pZCBfX21zYW5fdW5wb2lzb24oY29uc3Qgdm9sYXRpbGUgdm9pZCAqYSwgc2l6ZV90IHNpemUpOwoKICAvKiBNYWtlIGEgbnVsbC10ZXJtaW5hdGVkIHN0cmluZyBmdWxseSBpbml0aWFsaXplZCAod2l0aG91dCBjaGFuZ2luZyBpdHMKICAgICBjb250ZW50cykuICovCiAgdm9pZCBfX21zYW5fdW5wb2lzb25fc3RyaW5nKGNvbnN0IHZvbGF0aWxlIGNoYXIgKmEpOwoKICAvKiBNYWtlIGZpcnN0IG4gcGFyYW1ldGVycyBvZiB0aGUgbmV4dCBmdW5jdGlvbiBjYWxsIGZ1bGx5IGluaXRpYWxpemVkLiAqLwogIHZvaWQgX19tc2FuX3VucG9pc29uX3BhcmFtKHNpemVfdCBuKTsKCiAgLyogTWFrZSBtZW1vcnkgcmVnaW9uIGZ1bGx5IHVuaW5pdGlhbGl6ZWQgKHdpdGhvdXQgY2hhbmdpbmcgaXRzIGNvbnRlbnRzKS4KICAgICBUaGlzIGlzIGEgbGVnYWN5IGludGVyZmFjZSB0aGF0IGRvZXMgbm90IHVwZGF0ZSBvcmlnaW4gaW5mb3JtYXRpb24uIFVzZQogICAgIF9fbXNhbl9hbGxvY2F0ZWRfbWVtb3J5KCkgaW5zdGVhZC4gKi8KICB2b2lkIF9fbXNhbl9wb2lzb24oY29uc3Qgdm9sYXRpbGUgdm9pZCAqYSwgc2l6ZV90IHNpemUpOwoKICAvKiBNYWtlIG1lbW9yeSByZWdpb24gcGFydGlhbGx5IHVuaW5pdGlhbGl6ZWQgKHdpdGhvdXQgY2hhbmdpbmcgaXRzIGNvbnRlbnRzKS4KICAgKi8KICB2b2lkIF9fbXNhbl9wYXJ0aWFsX3BvaXNvbihjb25zdCB2b2xhdGlsZSB2b2lkICpkYXRhLCB2b2lkICpzaGFkb3csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUpOwoKICAvKiBSZXR1cm5zIHRoZSBvZmZzZXQgb2YgdGhlIGZpcnN0IChhdCBsZWFzdCBwYXJ0aWFsbHkpIHBvaXNvbmVkIGJ5dGUgaW4gdGhlCiAgICAgbWVtb3J5IHJhbmdlLCBvciAtMSBpZiB0aGUgd2hvbGUgcmFuZ2UgaXMgZ29vZC4gKi8KICBpbnRwdHJfdCBfX21zYW5fdGVzdF9zaGFkb3coY29uc3Qgdm9sYXRpbGUgdm9pZCAqeCwgc2l6ZV90IHNpemUpOwoKICAvKiBDaGVja3MgdGhhdCBtZW1vcnkgcmFuZ2UgaXMgZnVsbHkgaW5pdGlhbGl6ZWQsIGFuZCByZXBvcnRzIGFuIGVycm9yIGlmIGl0CiAgICogaXMgbm90LiAqLwogIHZvaWQgX19tc2FuX2NoZWNrX21lbV9pc19pbml0aWFsaXplZChjb25zdCB2b2xhdGlsZSB2b2lkICp4LCBzaXplX3Qgc2l6ZSk7CgogIC8qIEZvciB0ZXN0aW5nOgogICAgIF9fbXNhbl9zZXRfZXhwZWN0X3VtcigxKTsKICAgICAuLi4gc29tZSBidWdneSBjb2RlIC4uLgogICAgIF9fbXNhbl9zZXRfZXhwZWN0X3VtcigwKTsKICAgICBUaGUgbGFzdCBsaW5lIHdpbGwgdmVyaWZ5IHRoYXQgYSBVTVIgaGFwcGVuZWQuICovCiAgdm9pZCBfX21zYW5fc2V0X2V4cGVjdF91bXIoaW50IGV4cGVjdF91bXIpOwoKICAvKiBDaGFuZ2UgdGhlIHZhbHVlIG9mIGtlZXBfZ29pbmcgZmxhZy4gTm9uLXplcm8gdmFsdWUgbWVhbnMgZG9uJ3QgdGVybWluYXRlCiAgICAgcHJvZ3JhbSBleGVjdXRpb24gd2hlbiBhbiBlcnJvciBpcyBkZXRlY3RlZC4gVGhpcyB3aWxsIG5vdCBhZmZlY3QgZXJyb3IgaW4KICAgICBtb2R1bGVzIHRoYXQgd2VyZSBjb21waWxlZCB3aXRob3V0IHRoZSBjb3JyZXNwb25kaW5nIGNvbXBpbGVyIGZsYWcuICovCiAgdm9pZCBfX21zYW5fc2V0X2tlZXBfZ29pbmcoaW50IGtlZXBfZ29pbmcpOwoKICAvKiBQcmludCBzaGFkb3cgYW5kIG9yaWdpbiBmb3IgdGhlIG1lbW9yeSByYW5nZSB0byBzdGRlcnIgaW4gYSBodW1hbi1yZWFkYWJsZQogICAgIGZvcm1hdC4gKi8KICB2b2lkIF9fbXNhbl9wcmludF9zaGFkb3coY29uc3Qgdm9sYXRpbGUgdm9pZCAqeCwgc2l6ZV90IHNpemUpOwoKICAvKiBQcmludCBzaGFkb3cgZm9yIHRoZSBtZW1vcnkgcmFuZ2UgdG8gc3RkZXJyIGluIGEgbWluaW1hbGlzdGljCiAgICAgaHVtYW4tcmVhZGFibGUgZm9ybWF0LiAqLwogIHZvaWQgX19tc2FuX2R1bXBfc2hhZG93KGNvbnN0IHZvbGF0aWxlIHZvaWQgKngsIHNpemVfdCBzaXplKTsKCiAgLyogUmV0dXJucyB0cnVlIGlmIHJ1bm5pbmcgdW5kZXIgYSBkeW5hbWljIHRvb2wgKER5bmFtb1Jpby1iYXNlZCkuICovCiAgaW50ICBfX21zYW5faGFzX2R5bmFtaWNfY29tcG9uZW50KHZvaWQpOwoKICAvKiBUZWxsIE1TYW4gYWJvdXQgbmV3bHkgYWxsb2NhdGVkIG1lbW9yeSAoZXguOiBjdXN0b20gYWxsb2NhdG9yKS4KICAgICBNZW1vcnkgd2lsbCBiZSBtYXJrZWQgdW5pbml0aWFsaXplZCwgd2l0aCBvcmlnaW4gYXQgdGhlIGNhbGwgc2l0ZS4gKi8KICB2b2lkIF9fbXNhbl9hbGxvY2F0ZWRfbWVtb3J5KGNvbnN0IHZvbGF0aWxlIHZvaWQqIGRhdGEsIHNpemVfdCBzaXplKTsKCiAgLyogVGVsbCBNU2FuIGFib3V0IG5ld2x5IGRlc3Ryb3llZCBtZW1vcnkuIE1hcmsgbWVtb3J5IGFzIHVuaW5pdGlhbGl6ZWQuICovCiAgdm9pZCBfX3Nhbml0aXplcl9kdG9yX2NhbGxiYWNrKGNvbnN0IHZvbGF0aWxlIHZvaWQqIGRhdGEsIHNpemVfdCBzaXplKTsKCiAgLyogVGhpcyBmdW5jdGlvbiBtYXkgYmUgb3B0aW9uYWxseSBwcm92aWRlZCBieSB1c2VyIGFuZCBzaG91bGQgcmV0dXJuCiAgICAgYSBzdHJpbmcgY29udGFpbmluZyBNc2FuIHJ1bnRpbWUgb3B0aW9ucy4gU2VlIG1zYW5fZmxhZ3MuaCBmb3IgZGV0YWlscy4gKi8KICBjb25zdCBjaGFyKiBfX21zYW5fZGVmYXVsdF9vcHRpb25zKHZvaWQpOwoKICAvKiBEZXByZWNhdGVkLiBDYWxsIF9fc2FuaXRpemVyX3NldF9kZWF0aF9jYWxsYmFjayBpbnN0ZWFkLiAqLwogIHZvaWQgX19tc2FuX3NldF9kZWF0aF9jYWxsYmFjayh2b2lkICgqY2FsbGJhY2spKHZvaWQpKTsKCiAgLyogVXBkYXRlIHNoYWRvdyBmb3IgdGhlIGFwcGxpY2F0aW9uIGNvcHkgb2Ygc2l6ZSBieXRlcyBmcm9tIHNyYyB0byBkc3QuCiAgICAgU3JjIGFuZCBkc3QgYXJlIGFwcGxpY2F0aW9uIGFkZHJlc3Nlcy4gVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBjb3B5IHRoZQogICAgIGFjdHVhbCBhcHBsaWNhdGlvbiBtZW1vcnksIGl0IG9ubHkgdXBkYXRlcyBzaGFkb3cgYW5kIG9yaWdpbiBmb3Igc3VjaAogICAgIGNvcHkuIFNvdXJjZSBhbmQgZGVzdGluYXRpb24gcmVnaW9ucyBjYW4gb3ZlcmxhcC4gKi8KICB2b2lkIF9fbXNhbl9jb3B5X3NoYWRvdyhjb25zdCB2b2xhdGlsZSB2b2lkICpkc3QsIGNvbnN0IHZvbGF0aWxlIHZvaWQgKnNyYywKICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSk7CgogIC8qIERpc2FibGVzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGNoZWNrcyBpbiBpbnRlcmNlcHRvcnMuICovCiAgdm9pZCBfX21zYW5fc2NvcGVkX2Rpc2FibGVfaW50ZXJjZXB0b3JfY2hlY2tzKHZvaWQpOwoKICAvKiBSZS1lbmFibGVzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGNoZWNrcyBpbiBpbnRlcmNlcHRvcnMgYWZ0ZXIgYSBwcmV2aW91cwogICAgIGNhbGwgdG8gX19tc2FuX3Njb3BlZF9kaXNhYmxlX2ludGVyY2VwdG9yX2NoZWNrcy4gKi8KICB2b2lkIF9fbXNhbl9zY29wZWRfZW5hYmxlX2ludGVyY2VwdG9yX2NoZWNrcyh2b2lkKTsKCiAgdm9pZCBfX21zYW5fc3RhcnRfc3dpdGNoX2ZpYmVyKGNvbnN0IHZvaWQgKmJvdHRvbSwgc2l6ZV90IHNpemUpOwogIHZvaWQgX19tc2FuX2ZpbmlzaF9zd2l0Y2hfZmliZXIoY29uc3Qgdm9pZCAqKmJvdHRvbV9vbGQsIHNpemVfdCAqc2l6ZV9vbGQpOwoKI2lmZGVmIF9fY3BsdXNwbHVzCn0gIC8vIGV4dGVybiAiQyIKI2VuZGlmCgojZW5kaWYKACBpcyBub3QgYSBzdHJpbmcuAHByb3RvAFJld3JpdGUgc2NoZW1hIGVycm9yOiAnXCcgbXVzdCBiZSBmb2xsb3dlZCBieSBhIGRpZ2l0IG9yICdcJy4ALi4uAFs6Z3JhcGg6XQBCb3BvbW9mbwBHdW5qYWxhX0dvbmRpAFRha3JpACVzQCAlKnAgICU5ZAoAd3JvbmcgbnVtYmVyIG9mIGVudHJpZXMAcHJldiA8IG5leHQAcmVpbnRlcnByZXRfY2FzdDxjaGFyICo+KHByZXYpICsgcHJldi0+aGVhZGVyLnNpemUgPCByZWludGVycHJldF9jYXN0PGNoYXIgKj4obmV4dCkARGYALT4AaW9zdHJlYW0AaGVhZCAAd2FpdGluZyB3aGVuIHNob3VsZG4ndCBiZQAvc3lzdGVtL3Vzci9zaGFyZS96b25laW5mby90emRhdGEAZXh0ZXJuYWwvYm9yaW5nc3NsL3NyYy9jcnlwdG8vZmlwc21vZHVsZS9lYy9lY19rZXkuYwBleHRlcm5hbC9ib3Jpbmdzc2wvc3JjL2NyeXB0by9maXBzbW9kdWxlL2VjL3NjYWxhci5jAGV4dGVybmFsL2JvcmluZ3NzbC9zcmMvY3J5cHRvL2ZpcHNtb2R1bGUvcnNhL3BhZGRpbmcuYwBleHRlcm5hbC9ib3Jpbmdzc2wvc3JjL2NyeXB0by9maXBzbW9kdWxlL3JzYS9yc2EuYwBGSVBTIHNlbGYgdGVzdABGRkMgREgAT1BFTlNTTF9pYTMyY2FwAGt5dGhlLnByb3RvLkVudHJ5LmVkZ2Vfa2luZABjAHN0YXRfcGF0aAAxAEluZGV4SGVhZGVyTWFwACNpZgAjZWxpZgAvKj09PS0tIF9fY2xhbmdfY3VkYV9saWJkZXZpY2VfZGVjbGFyZXMuaCAtIGRlY2xzIGZvciBsaWJkZXZpY2UgZnVuY3Rpb25zIC0tPT09CiAqCiAqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCiAqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCgojaWZuZGVmIF9fQ0xBTkdfQ1VEQV9MSUJERVZJQ0VfREVDTEFSRVNfSF9fCiNkZWZpbmUgX19DTEFOR19DVURBX0xJQkRFVklDRV9ERUNMQVJFU19IX18KCiNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQpleHRlcm4gIkMiIHsKI2VuZGlmCgojaWYgZGVmaW5lZChfX09QRU5NUF9OVlBUWF9fKQojZGVmaW5lIF9fREVWSUNFX18KI3ByYWdtYSBvbXAgYmVnaW4gYXNzdW1lcyBleHRfc3BtZF9hbWVuYWJsZSBub19vcGVubXAKI2VsaWYgZGVmaW5lZChfX0NVREFfXykKI2RlZmluZSBfX0RFVklDRV9fIF9fZGV2aWNlX18KI2VuZGlmCgpfX0RFVklDRV9fIGludCBfX252X2FicyhpbnQgX19hKTsKX19ERVZJQ0VfXyBkb3VibGUgX19udl9hY29zKGRvdWJsZSBfX2EpOwpfX0RFVklDRV9fIGZsb2F0IF9fbnZfYWNvc2YoZmxvYXQgX19hKTsKX19ERVZJQ0VfXyBkb3VibGUgX19udl9hY29zaChkb3VibGUgX19hKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X2Fjb3NoZihmbG9hdCBfX2EpOwpfX0RFVklDRV9fIGRvdWJsZSBfX252X2FzaW4oZG91YmxlIF9fYSk7Cl9fREVWSUNFX18gZmxvYXQgX19udl9hc2luZihmbG9hdCBfX2EpOwpfX0RFVklDRV9fIGRvdWJsZSBfX252X2FzaW5oKGRvdWJsZSBfX2EpOwpfX0RFVklDRV9fIGZsb2F0IF9fbnZfYXNpbmhmKGZsb2F0IF9fYSk7Cl9fREVWSUNFX18gZG91YmxlIF9fbnZfYXRhbjIoZG91YmxlIF9fYSwgZG91YmxlIF9fYik7Cl9fREVWSUNFX18gZmxvYXQgX19udl9hdGFuMmYoZmxvYXQgX19hLCBmbG9hdCBfX2IpOwpfX0RFVklDRV9fIGRvdWJsZSBfX252X2F0YW4oZG91YmxlIF9fYSk7Cl9fREVWSUNFX18gZmxvYXQgX19udl9hdGFuZihmbG9hdCBfX2EpOwpfX0RFVklDRV9fIGRvdWJsZSBfX252X2F0YW5oKGRvdWJsZSBfX2EpOwpfX0RFVklDRV9fIGZsb2F0IF9fbnZfYXRhbmhmKGZsb2F0IF9fYSk7Cl9fREVWSUNFX18gaW50IF9fbnZfYnJldihpbnQgX19hKTsKX19ERVZJQ0VfXyBsb25nIGxvbmcgX19udl9icmV2bGwobG9uZyBsb25nIF9fYSk7Cl9fREVWSUNFX18gaW50IF9fbnZfYnl0ZV9wZXJtKGludCBfX2EsIGludCBfX2IsIGludCBfX2MpOwpfX0RFVklDRV9fIGRvdWJsZSBfX252X2NicnQoZG91YmxlIF9fYSk7Cl9fREVWSUNFX18gZmxvYXQgX19udl9jYnJ0ZihmbG9hdCBfX2EpOwpfX0RFVklDRV9fIGRvdWJsZSBfX252X2NlaWwoZG91YmxlIF9fYSk7Cl9fREVWSUNFX18gZmxvYXQgX19udl9jZWlsZihmbG9hdCBfX2EpOwpfX0RFVklDRV9fIGludCBfX252X2NseihpbnQgX19hKTsKX19ERVZJQ0VfXyBpbnQgX19udl9jbHpsbChsb25nIGxvbmcgX19hKTsKX19ERVZJQ0VfXyBkb3VibGUgX19udl9jb3B5c2lnbihkb3VibGUgX19hLCBkb3VibGUgX19iKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X2NvcHlzaWduZihmbG9hdCBfX2EsIGZsb2F0IF9fYik7Cl9fREVWSUNFX18gZG91YmxlIF9fbnZfY29zKGRvdWJsZSBfX2EpOwpfX0RFVklDRV9fIGZsb2F0IF9fbnZfY29zZihmbG9hdCBfX2EpOwpfX0RFVklDRV9fIGRvdWJsZSBfX252X2Nvc2goZG91YmxlIF9fYSk7Cl9fREVWSUNFX18gZmxvYXQgX19udl9jb3NoZihmbG9hdCBfX2EpOwpfX0RFVklDRV9fIGRvdWJsZSBfX252X2Nvc3BpKGRvdWJsZSBfX2EpOwpfX0RFVklDRV9fIGZsb2F0IF9fbnZfY29zcGlmKGZsb2F0IF9fYSk7Cl9fREVWSUNFX18gZG91YmxlIF9fbnZfY3lsX2Jlc3NlbF9pMChkb3VibGUgX19hKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X2N5bF9iZXNzZWxfaTBmKGZsb2F0IF9fYSk7Cl9fREVWSUNFX18gZG91YmxlIF9fbnZfY3lsX2Jlc3NlbF9pMShkb3VibGUgX19hKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X2N5bF9iZXNzZWxfaTFmKGZsb2F0IF9fYSk7Cl9fREVWSUNFX18gZG91YmxlIF9fbnZfZGFkZF9yZChkb3VibGUgX19hLCBkb3VibGUgX19iKTsKX19ERVZJQ0VfXyBkb3VibGUgX19udl9kYWRkX3JuKGRvdWJsZSBfX2EsIGRvdWJsZSBfX2IpOwpfX0RFVklDRV9fIGRvdWJsZSBfX252X2RhZGRfcnUoZG91YmxlIF9fYSwgZG91YmxlIF9fYik7Cl9fREVWSUNFX18gZG91YmxlIF9fbnZfZGFkZF9yeihkb3VibGUgX19hLCBkb3VibGUgX19iKTsKX19ERVZJQ0VfXyBkb3VibGUgX19udl9kZGl2X3JkKGRvdWJsZSBfX2EsIGRvdWJsZSBfX2IpOwpfX0RFVklDRV9fIGRvdWJsZSBfX252X2RkaXZfcm4oZG91YmxlIF9fYSwgZG91YmxlIF9fYik7Cl9fREVWSUNFX18gZG91YmxlIF9fbnZfZGRpdl9ydShkb3VibGUgX19hLCBkb3VibGUgX19iKTsKX19ERVZJQ0VfXyBkb3VibGUgX19udl9kZGl2X3J6KGRvdWJsZSBfX2EsIGRvdWJsZSBfX2IpOwpfX0RFVklDRV9fIGRvdWJsZSBfX252X2RtdWxfcmQoZG91YmxlIF9fYSwgZG91YmxlIF9fYik7Cl9fREVWSUNFX18gZG91YmxlIF9fbnZfZG11bF9ybihkb3VibGUgX19hLCBkb3VibGUgX19iKTsKX19ERVZJQ0VfXyBkb3VibGUgX19udl9kbXVsX3J1KGRvdWJsZSBfX2EsIGRvdWJsZSBfX2IpOwpfX0RFVklDRV9fIGRvdWJsZSBfX252X2RtdWxfcnooZG91YmxlIF9fYSwgZG91YmxlIF9fYik7Cl9fREVWSUNFX18gZmxvYXQgX19udl9kb3VibGUyZmxvYXRfcmQoZG91YmxlIF9fYSk7Cl9fREVWSUNFX18gZmxvYXQgX19udl9kb3VibGUyZmxvYXRfcm4oZG91YmxlIF9fYSk7Cl9fREVWSUNFX18gZmxvYXQgX19udl9kb3VibGUyZmxvYXRfcnUoZG91YmxlIF9fYSk7Cl9fREVWSUNFX18gZmxvYXQgX19udl9kb3VibGUyZmxvYXRfcnooZG91YmxlIF9fYSk7Cl9fREVWSUNFX18gaW50IF9fbnZfZG91YmxlMmhpaW50KGRvdWJsZSBfX2EpOwpfX0RFVklDRV9fIGludCBfX252X2RvdWJsZTJpbnRfcmQoZG91YmxlIF9fYSk7Cl9fREVWSUNFX18gaW50IF9fbnZfZG91YmxlMmludF9ybihkb3VibGUgX19hKTsKX19ERVZJQ0VfXyBpbnQgX19udl9kb3VibGUyaW50X3J1KGRvdWJsZSBfX2EpOwpfX0RFVklDRV9fIGludCBfX252X2RvdWJsZTJpbnRfcnooZG91YmxlIF9fYSk7Cl9fREVWSUNFX18gbG9uZyBsb25nIF9fbnZfZG91YmxlMmxsX3JkKGRvdWJsZSBfX2EpOwpfX0RFVklDRV9fIGxvbmcgbG9uZyBfX252X2RvdWJsZTJsbF9ybihkb3VibGUgX19hKTsKX19ERVZJQ0VfXyBsb25nIGxvbmcgX19udl9kb3VibGUybGxfcnUoZG91YmxlIF9fYSk7Cl9fREVWSUNFX18gbG9uZyBsb25nIF9fbnZfZG91YmxlMmxsX3J6KGRvdWJsZSBfX2EpOwpfX0RFVklDRV9fIGludCBfX252X2RvdWJsZTJsb2ludChkb3VibGUgX19hKTsKX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX19udl9kb3VibGUydWludF9yZChkb3VibGUgX19hKTsKX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX19udl9kb3VibGUydWludF9ybihkb3VibGUgX19hKTsKX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX19udl9kb3VibGUydWludF9ydShkb3VibGUgX19hKTsKX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX19udl9kb3VibGUydWludF9yeihkb3VibGUgX19hKTsKX19ERVZJQ0VfXyB1bnNpZ25lZCBsb25nIGxvbmcgX19udl9kb3VibGUydWxsX3JkKGRvdWJsZSBfX2EpOwpfX0RFVklDRV9fIHVuc2lnbmVkIGxvbmcgbG9uZyBfX252X2RvdWJsZTJ1bGxfcm4oZG91YmxlIF9fYSk7Cl9fREVWSUNFX18gdW5zaWduZWQgbG9uZyBsb25nIF9fbnZfZG91YmxlMnVsbF9ydShkb3VibGUgX19hKTsKX19ERVZJQ0VfXyB1bnNpZ25lZCBsb25nIGxvbmcgX19udl9kb3VibGUydWxsX3J6KGRvdWJsZSBfX2EpOwpfX0RFVklDRV9fIHVuc2lnbmVkIGxvbmcgbG9uZyBfX252X2RvdWJsZV9hc19sb25nbG9uZyhkb3VibGUgX19hKTsKX19ERVZJQ0VfXyBkb3VibGUgX19udl9kcmNwX3JkKGRvdWJsZSBfX2EpOwpfX0RFVklDRV9fIGRvdWJsZSBfX252X2RyY3Bfcm4oZG91YmxlIF9fYSk7Cl9fREVWSUNFX18gZG91YmxlIF9fbnZfZHJjcF9ydShkb3VibGUgX19hKTsKX19ERVZJQ0VfXyBkb3VibGUgX19udl9kcmNwX3J6KGRvdWJsZSBfX2EpOwpfX0RFVklDRV9fIGRvdWJsZSBfX252X2RzcXJ0X3JkKGRvdWJsZSBfX2EpOwpfX0RFVklDRV9fIGRvdWJsZSBfX252X2RzcXJ0X3JuKGRvdWJsZSBfX2EpOwpfX0RFVklDRV9fIGRvdWJsZSBfX252X2RzcXJ0X3J1KGRvdWJsZSBfX2EpOwpfX0RFVklDRV9fIGRvdWJsZSBfX252X2RzcXJ0X3J6KGRvdWJsZSBfX2EpOwpfX0RFVklDRV9fIGRvdWJsZSBfX252X2RzdWJfcmQoZG91YmxlIF9fYSwgZG91YmxlIF9fYik7Cl9fREVWSUNFX18gZG91YmxlIF9fbnZfZHN1Yl9ybihkb3VibGUgX19hLCBkb3VibGUgX19iKTsKX19ERVZJQ0VfXyBkb3VibGUgX19udl9kc3ViX3J1KGRvdWJsZSBfX2EsIGRvdWJsZSBfX2IpOwpfX0RFVklDRV9fIGRvdWJsZSBfX252X2RzdWJfcnooZG91YmxlIF9fYSwgZG91YmxlIF9fYik7Cl9fREVWSUNFX18gZG91YmxlIF9fbnZfZXJmYyhkb3VibGUgX19hKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X2VyZmNmKGZsb2F0IF9fYSk7Cl9fREVWSUNFX18gZG91YmxlIF9fbnZfZXJmY2ludihkb3VibGUgX19hKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X2VyZmNpbnZmKGZsb2F0IF9fYSk7Cl9fREVWSUNFX18gZG91YmxlIF9fbnZfZXJmY3goZG91YmxlIF9fYSk7Cl9fREVWSUNFX18gZmxvYXQgX19udl9lcmZjeGYoZmxvYXQgX19hKTsKX19ERVZJQ0VfXyBkb3VibGUgX19udl9lcmYoZG91YmxlIF9fYSk7Cl9fREVWSUNFX18gZmxvYXQgX19udl9lcmZmKGZsb2F0IF9fYSk7Cl9fREVWSUNFX18gZG91YmxlIF9fbnZfZXJmaW52KGRvdWJsZSBfX2EpOwpfX0RFVklDRV9fIGZsb2F0IF9fbnZfZXJmaW52ZihmbG9hdCBfX2EpOwpfX0RFVklDRV9fIGRvdWJsZSBfX252X2V4cDEwKGRvdWJsZSBfX2EpOwpfX0RFVklDRV9fIGZsb2F0IF9fbnZfZXhwMTBmKGZsb2F0IF9fYSk7Cl9fREVWSUNFX18gZG91YmxlIF9fbnZfZXhwMihkb3VibGUgX19hKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X2V4cDJmKGZsb2F0IF9fYSk7Cl9fREVWSUNFX18gZG91YmxlIF9fbnZfZXhwKGRvdWJsZSBfX2EpOwpfX0RFVklDRV9fIGZsb2F0IF9fbnZfZXhwZihmbG9hdCBfX2EpOwpfX0RFVklDRV9fIGRvdWJsZSBfX252X2V4cG0xKGRvdWJsZSBfX2EpOwpfX0RFVklDRV9fIGZsb2F0IF9fbnZfZXhwbTFmKGZsb2F0IF9fYSk7Cl9fREVWSUNFX18gZG91YmxlIF9fbnZfZmFicyhkb3VibGUgX19hKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X2ZhYnNmKGZsb2F0IF9fYSk7Cl9fREVWSUNFX18gZmxvYXQgX19udl9mYWRkX3JkKGZsb2F0IF9fYSwgZmxvYXQgX19iKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X2ZhZGRfcm4oZmxvYXQgX19hLCBmbG9hdCBfX2IpOwpfX0RFVklDRV9fIGZsb2F0IF9fbnZfZmFkZF9ydShmbG9hdCBfX2EsIGZsb2F0IF9fYik7Cl9fREVWSUNFX18gZmxvYXQgX19udl9mYWRkX3J6KGZsb2F0IF9fYSwgZmxvYXQgX19iKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X2Zhc3RfY29zZihmbG9hdCBfX2EpOwpfX0RFVklDRV9fIGZsb2F0IF9fbnZfZmFzdF9leHAxMGYoZmxvYXQgX19hKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X2Zhc3RfZXhwZihmbG9hdCBfX2EpOwpfX0RFVklDRV9fIGZsb2F0IF9fbnZfZmFzdF9mZGl2aWRlZihmbG9hdCBfX2EsIGZsb2F0IF9fYik7Cl9fREVWSUNFX18gZmxvYXQgX19udl9mYXN0X2xvZzEwZihmbG9hdCBfX2EpOwpfX0RFVklDRV9fIGZsb2F0IF9fbnZfZmFzdF9sb2cyZihmbG9hdCBfX2EpOwpfX0RFVklDRV9fIGZsb2F0IF9fbnZfZmFzdF9sb2dmKGZsb2F0IF9fYSk7Cl9fREVWSUNFX18gZmxvYXQgX19udl9mYXN0X3Bvd2YoZmxvYXQgX19hLCBmbG9hdCBfX2IpOwpfX0RFVklDRV9fIHZvaWQgX19udl9mYXN0X3NpbmNvc2YoZmxvYXQgX19hLCBmbG9hdCAqX19zLCBmbG9hdCAqX19jKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X2Zhc3Rfc2luZihmbG9hdCBfX2EpOwpfX0RFVklDRV9fIGZsb2F0IF9fbnZfZmFzdF90YW5mKGZsb2F0IF9fYSk7Cl9fREVWSUNFX18gZG91YmxlIF9fbnZfZmRpbShkb3VibGUgX19hLCBkb3VibGUgX19iKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X2ZkaW1mKGZsb2F0IF9fYSwgZmxvYXQgX19iKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X2ZkaXZfcmQoZmxvYXQgX19hLCBmbG9hdCBfX2IpOwpfX0RFVklDRV9fIGZsb2F0IF9fbnZfZmRpdl9ybihmbG9hdCBfX2EsIGZsb2F0IF9fYik7Cl9fREVWSUNFX18gZmxvYXQgX19udl9mZGl2X3J1KGZsb2F0IF9fYSwgZmxvYXQgX19iKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X2ZkaXZfcnooZmxvYXQgX19hLCBmbG9hdCBfX2IpOwpfX0RFVklDRV9fIGludCBfX252X2ZmcyhpbnQgX19hKTsKX19ERVZJQ0VfXyBpbnQgX19udl9mZnNsbChsb25nIGxvbmcgX19hKTsKX19ERVZJQ0VfXyBpbnQgX19udl9maW5pdGVmKGZsb2F0IF9fYSk7Cl9fREVWSUNFX18gdW5zaWduZWQgc2hvcnQgX19udl9mbG9hdDJoYWxmX3JuKGZsb2F0IF9fYSk7Cl9fREVWSUNFX18gaW50IF9fbnZfZmxvYXQyaW50X3JkKGZsb2F0IF9fYSk7Cl9fREVWSUNFX18gaW50IF9fbnZfZmxvYXQyaW50X3JuKGZsb2F0IF9fYSk7Cl9fREVWSUNFX18gaW50IF9fbnZfZmxvYXQyaW50X3J1KGZsb2F0IF9fYSk7Cl9fREVWSUNFX18gaW50IF9fbnZfZmxvYXQyaW50X3J6KGZsb2F0IF9fYSk7Cl9fREVWSUNFX18gbG9uZyBsb25nIF9fbnZfZmxvYXQybGxfcmQoZmxvYXQgX19hKTsKX19ERVZJQ0VfXyBsb25nIGxvbmcgX19udl9mbG9hdDJsbF9ybihmbG9hdCBfX2EpOwpfX0RFVklDRV9fIGxvbmcgbG9uZyBfX252X2Zsb2F0MmxsX3J1KGZsb2F0IF9fYSk7Cl9fREVWSUNFX18gbG9uZyBsb25nIF9fbnZfZmxvYXQybGxfcnooZmxvYXQgX19hKTsKX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX19udl9mbG9hdDJ1aW50X3JkKGZsb2F0IF9fYSk7Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fbnZfZmxvYXQydWludF9ybihmbG9hdCBfX2EpOwpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX252X2Zsb2F0MnVpbnRfcnUoZmxvYXQgX19hKTsKX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX19udl9mbG9hdDJ1aW50X3J6KGZsb2F0IF9fYSk7Cl9fREVWSUNFX18gdW5zaWduZWQgbG9uZyBsb25nIF9fbnZfZmxvYXQydWxsX3JkKGZsb2F0IF9fYSk7Cl9fREVWSUNFX18gdW5zaWduZWQgbG9uZyBsb25nIF9fbnZfZmxvYXQydWxsX3JuKGZsb2F0IF9fYSk7Cl9fREVWSUNFX18gdW5zaWduZWQgbG9uZyBsb25nIF9fbnZfZmxvYXQydWxsX3J1KGZsb2F0IF9fYSk7Cl9fREVWSUNFX18gdW5zaWduZWQgbG9uZyBsb25nIF9fbnZfZmxvYXQydWxsX3J6KGZsb2F0IF9fYSk7Cl9fREVWSUNFX18gaW50IF9fbnZfZmxvYXRfYXNfaW50KGZsb2F0IF9fYSk7Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fbnZfZmxvYXRfYXNfdWludChmbG9hdCBfX2EpOwpfX0RFVklDRV9fIGRvdWJsZSBfX252X2Zsb29yKGRvdWJsZSBfX2EpOwpfX0RFVklDRV9fIGZsb2F0IF9fbnZfZmxvb3JmKGZsb2F0IF9fYSk7Cl9fREVWSUNFX18gZG91YmxlIF9fbnZfZm1hKGRvdWJsZSBfX2EsIGRvdWJsZSBfX2IsIGRvdWJsZSBfX2MpOwpfX0RFVklDRV9fIGZsb2F0IF9fbnZfZm1hZihmbG9hdCBfX2EsIGZsb2F0IF9fYiwgZmxvYXQgX19jKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X2ZtYWZfaWVlZV9yZChmbG9hdCBfX2EsIGZsb2F0IF9fYiwgZmxvYXQgX19jKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X2ZtYWZfaWVlZV9ybihmbG9hdCBfX2EsIGZsb2F0IF9fYiwgZmxvYXQgX19jKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X2ZtYWZfaWVlZV9ydShmbG9hdCBfX2EsIGZsb2F0IF9fYiwgZmxvYXQgX19jKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X2ZtYWZfaWVlZV9yeihmbG9hdCBfX2EsIGZsb2F0IF9fYiwgZmxvYXQgX19jKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X2ZtYWZfcmQoZmxvYXQgX19hLCBmbG9hdCBfX2IsIGZsb2F0IF9fYyk7Cl9fREVWSUNFX18gZmxvYXQgX19udl9mbWFmX3JuKGZsb2F0IF9fYSwgZmxvYXQgX19iLCBmbG9hdCBfX2MpOwpfX0RFVklDRV9fIGZsb2F0IF9fbnZfZm1hZl9ydShmbG9hdCBfX2EsIGZsb2F0IF9fYiwgZmxvYXQgX19jKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X2ZtYWZfcnooZmxvYXQgX19hLCBmbG9hdCBfX2IsIGZsb2F0IF9fYyk7Cl9fREVWSUNFX18gZG91YmxlIF9fbnZfZm1hX3JkKGRvdWJsZSBfX2EsIGRvdWJsZSBfX2IsIGRvdWJsZSBfX2MpOwpfX0RFVklDRV9fIGRvdWJsZSBfX252X2ZtYV9ybihkb3VibGUgX19hLCBkb3VibGUgX19iLCBkb3VibGUgX19jKTsKX19ERVZJQ0VfXyBkb3VibGUgX19udl9mbWFfcnUoZG91YmxlIF9fYSwgZG91YmxlIF9fYiwgZG91YmxlIF9fYyk7Cl9fREVWSUNFX18gZG91YmxlIF9fbnZfZm1hX3J6KGRvdWJsZSBfX2EsIGRvdWJsZSBfX2IsIGRvdWJsZSBfX2MpOwpfX0RFVklDRV9fIGRvdWJsZSBfX252X2ZtYXgoZG91YmxlIF9fYSwgZG91YmxlIF9fYik7Cl9fREVWSUNFX18gZmxvYXQgX19udl9mbWF4ZihmbG9hdCBfX2EsIGZsb2F0IF9fYik7Cl9fREVWSUNFX18gZG91YmxlIF9fbnZfZm1pbihkb3VibGUgX19hLCBkb3VibGUgX19iKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X2ZtaW5mKGZsb2F0IF9fYSwgZmxvYXQgX19iKTsKX19ERVZJQ0VfXyBkb3VibGUgX19udl9mbW9kKGRvdWJsZSBfX2EsIGRvdWJsZSBfX2IpOwpfX0RFVklDRV9fIGZsb2F0IF9fbnZfZm1vZGYoZmxvYXQgX19hLCBmbG9hdCBfX2IpOwpfX0RFVklDRV9fIGZsb2F0IF9fbnZfZm11bF9yZChmbG9hdCBfX2EsIGZsb2F0IF9fYik7Cl9fREVWSUNFX18gZmxvYXQgX19udl9mbXVsX3JuKGZsb2F0IF9fYSwgZmxvYXQgX19iKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X2ZtdWxfcnUoZmxvYXQgX19hLCBmbG9hdCBfX2IpOwpfX0RFVklDRV9fIGZsb2F0IF9fbnZfZm11bF9yeihmbG9hdCBfX2EsIGZsb2F0IF9fYik7Cl9fREVWSUNFX18gZmxvYXQgX19udl9mcmNwX3JkKGZsb2F0IF9fYSk7Cl9fREVWSUNFX18gZmxvYXQgX19udl9mcmNwX3JuKGZsb2F0IF9fYSk7Cl9fREVWSUNFX18gZmxvYXQgX19udl9mcmNwX3J1KGZsb2F0IF9fYSk7Cl9fREVWSUNFX18gZmxvYXQgX19udl9mcmNwX3J6KGZsb2F0IF9fYSk7Cl9fREVWSUNFX18gZG91YmxlIF9fbnZfZnJleHAoZG91YmxlIF9fYSwgaW50ICpfX2IpOwpfX0RFVklDRV9fIGZsb2F0IF9fbnZfZnJleHBmKGZsb2F0IF9fYSwgaW50ICpfX2IpOwpfX0RFVklDRV9fIGZsb2F0IF9fbnZfZnJzcXJ0X3JuKGZsb2F0IF9fYSk7Cl9fREVWSUNFX18gZmxvYXQgX19udl9mc3FydF9yZChmbG9hdCBfX2EpOwpfX0RFVklDRV9fIGZsb2F0IF9fbnZfZnNxcnRfcm4oZmxvYXQgX19hKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X2ZzcXJ0X3J1KGZsb2F0IF9fYSk7Cl9fREVWSUNFX18gZmxvYXQgX19udl9mc3FydF9yeihmbG9hdCBfX2EpOwpfX0RFVklDRV9fIGZsb2F0IF9fbnZfZnN1Yl9yZChmbG9hdCBfX2EsIGZsb2F0IF9fYik7Cl9fREVWSUNFX18gZmxvYXQgX19udl9mc3ViX3JuKGZsb2F0IF9fYSwgZmxvYXQgX19iKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X2ZzdWJfcnUoZmxvYXQgX19hLCBmbG9hdCBfX2IpOwpfX0RFVklDRV9fIGZsb2F0IF9fbnZfZnN1Yl9yeihmbG9hdCBfX2EsIGZsb2F0IF9fYik7Cl9fREVWSUNFX18gaW50IF9fbnZfaGFkZChpbnQgX19hLCBpbnQgX19iKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X2hhbGYyZmxvYXQodW5zaWduZWQgc2hvcnQgX19oKTsKX19ERVZJQ0VfXyBkb3VibGUgX19udl9oaWxvaW50MmRvdWJsZShpbnQgX19hLCBpbnQgX19iKTsKX19ERVZJQ0VfXyBkb3VibGUgX19udl9oeXBvdChkb3VibGUgX19hLCBkb3VibGUgX19iKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X2h5cG90ZihmbG9hdCBfX2EsIGZsb2F0IF9fYik7Cl9fREVWSUNFX18gaW50IF9fbnZfaWxvZ2IoZG91YmxlIF9fYSk7Cl9fREVWSUNFX18gaW50IF9fbnZfaWxvZ2JmKGZsb2F0IF9fYSk7Cl9fREVWSUNFX18gZG91YmxlIF9fbnZfaW50MmRvdWJsZV9ybihpbnQgX19hKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X2ludDJmbG9hdF9yZChpbnQgX19hKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X2ludDJmbG9hdF9ybihpbnQgX19hKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X2ludDJmbG9hdF9ydShpbnQgX19hKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X2ludDJmbG9hdF9yeihpbnQgX19hKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X2ludF9hc19mbG9hdChpbnQgX19hKTsKX19ERVZJQ0VfXyBpbnQgX19udl9pc2Zpbml0ZWQoZG91YmxlIF9fYSk7Cl9fREVWSUNFX18gaW50IF9fbnZfaXNpbmZkKGRvdWJsZSBfX2EpOwpfX0RFVklDRV9fIGludCBfX252X2lzaW5mZihmbG9hdCBfX2EpOwpfX0RFVklDRV9fIGludCBfX252X2lzbmFuZChkb3VibGUgX19hKTsKX19ERVZJQ0VfXyBpbnQgX19udl9pc25hbmYoZmxvYXQgX19hKTsKX19ERVZJQ0VfXyBkb3VibGUgX19udl9qMChkb3VibGUgX19hKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X2owZihmbG9hdCBfX2EpOwpfX0RFVklDRV9fIGRvdWJsZSBfX252X2oxKGRvdWJsZSBfX2EpOwpfX0RFVklDRV9fIGZsb2F0IF9fbnZfajFmKGZsb2F0IF9fYSk7Cl9fREVWSUNFX18gZmxvYXQgX19udl9qbmYoaW50IF9fYSwgZmxvYXQgX19iKTsKX19ERVZJQ0VfXyBkb3VibGUgX19udl9qbihpbnQgX19hLCBkb3VibGUgX19iKTsKX19ERVZJQ0VfXyBkb3VibGUgX19udl9sZGV4cChkb3VibGUgX19hLCBpbnQgX19iKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X2xkZXhwZihmbG9hdCBfX2EsIGludCBfX2IpOwpfX0RFVklDRV9fIGRvdWJsZSBfX252X2xnYW1tYShkb3VibGUgX19hKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X2xnYW1tYWYoZmxvYXQgX19hKTsKX19ERVZJQ0VfXyBkb3VibGUgX19udl9sbDJkb3VibGVfcmQobG9uZyBsb25nIF9fYSk7Cl9fREVWSUNFX18gZG91YmxlIF9fbnZfbGwyZG91YmxlX3JuKGxvbmcgbG9uZyBfX2EpOwpfX0RFVklDRV9fIGRvdWJsZSBfX252X2xsMmRvdWJsZV9ydShsb25nIGxvbmcgX19hKTsKX19ERVZJQ0VfXyBkb3VibGUgX19udl9sbDJkb3VibGVfcnoobG9uZyBsb25nIF9fYSk7Cl9fREVWSUNFX18gZmxvYXQgX19udl9sbDJmbG9hdF9yZChsb25nIGxvbmcgX19hKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X2xsMmZsb2F0X3JuKGxvbmcgbG9uZyBfX2EpOwpfX0RFVklDRV9fIGZsb2F0IF9fbnZfbGwyZmxvYXRfcnUobG9uZyBsb25nIF9fYSk7Cl9fREVWSUNFX18gZmxvYXQgX19udl9sbDJmbG9hdF9yeihsb25nIGxvbmcgX19hKTsKX19ERVZJQ0VfXyBsb25nIGxvbmcgX19udl9sbGFicyhsb25nIGxvbmcgX19hKTsKX19ERVZJQ0VfXyBsb25nIGxvbmcgX19udl9sbG1heChsb25nIGxvbmcgX19hLCBsb25nIGxvbmcgX19iKTsKX19ERVZJQ0VfXyBsb25nIGxvbmcgX19udl9sbG1pbihsb25nIGxvbmcgX19hLCBsb25nIGxvbmcgX19iKTsKX19ERVZJQ0VfXyBsb25nIGxvbmcgX19udl9sbHJpbnQoZG91YmxlIF9fYSk7Cl9fREVWSUNFX18gbG9uZyBsb25nIF9fbnZfbGxyaW50ZihmbG9hdCBfX2EpOwpfX0RFVklDRV9fIGxvbmcgbG9uZyBfX252X2xscm91bmQoZG91YmxlIF9fYSk7Cl9fREVWSUNFX18gbG9uZyBsb25nIF9fbnZfbGxyb3VuZGYoZmxvYXQgX19hKTsKX19ERVZJQ0VfXyBkb3VibGUgX19udl9sb2cxMChkb3VibGUgX19hKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X2xvZzEwZihmbG9hdCBfX2EpOwpfX0RFVklDRV9fIGRvdWJsZSBfX252X2xvZzFwKGRvdWJsZSBfX2EpOwpfX0RFVklDRV9fIGZsb2F0IF9fbnZfbG9nMXBmKGZsb2F0IF9fYSk7Cl9fREVWSUNFX18gZG91YmxlIF9fbnZfbG9nMihkb3VibGUgX19hKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X2xvZzJmKGZsb2F0IF9fYSk7Cl9fREVWSUNFX18gZG91YmxlIF9fbnZfbG9nYihkb3VibGUgX19hKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X2xvZ2JmKGZsb2F0IF9fYSk7Cl9fREVWSUNFX18gZG91YmxlIF9fbnZfbG9nKGRvdWJsZSBfX2EpOwpfX0RFVklDRV9fIGZsb2F0IF9fbnZfbG9nZihmbG9hdCBfX2EpOwpfX0RFVklDRV9fIGRvdWJsZSBfX252X2xvbmdsb25nX2FzX2RvdWJsZShsb25nIGxvbmcgX19hKTsKX19ERVZJQ0VfXyBpbnQgX19udl9tYXgoaW50IF9fYSwgaW50IF9fYik7Cl9fREVWSUNFX18gaW50IF9fbnZfbWluKGludCBfX2EsIGludCBfX2IpOwpfX0RFVklDRV9fIGRvdWJsZSBfX252X21vZGYoZG91YmxlIF9fYSwgZG91YmxlICpfX2IpOwpfX0RFVklDRV9fIGZsb2F0IF9fbnZfbW9kZmYoZmxvYXQgX19hLCBmbG9hdCAqX19iKTsKX19ERVZJQ0VfXyBpbnQgX19udl9tdWwyNChpbnQgX19hLCBpbnQgX19iKTsKX19ERVZJQ0VfXyBsb25nIGxvbmcgX19udl9tdWw2NGhpKGxvbmcgbG9uZyBfX2EsIGxvbmcgbG9uZyBfX2IpOwpfX0RFVklDRV9fIGludCBfX252X211bGhpKGludCBfX2EsIGludCBfX2IpOwpfX0RFVklDRV9fIGRvdWJsZSBfX252X25hbihjb25zdCBzaWduZWQgY2hhciAqX19hKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X25hbmYoY29uc3Qgc2lnbmVkIGNoYXIgKl9fYSk7Cl9fREVWSUNFX18gZG91YmxlIF9fbnZfbmVhcmJ5aW50KGRvdWJsZSBfX2EpOwpfX0RFVklDRV9fIGZsb2F0IF9fbnZfbmVhcmJ5aW50ZihmbG9hdCBfX2EpOwpfX0RFVklDRV9fIGRvdWJsZSBfX252X25leHRhZnRlcihkb3VibGUgX19hLCBkb3VibGUgX19iKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X25leHRhZnRlcmYoZmxvYXQgX19hLCBmbG9hdCBfX2IpOwpfX0RFVklDRV9fIGRvdWJsZSBfX252X25vcm0zZChkb3VibGUgX19hLCBkb3VibGUgX19iLCBkb3VibGUgX19jKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X25vcm0zZGYoZmxvYXQgX19hLCBmbG9hdCBfX2IsIGZsb2F0IF9fYyk7Cl9fREVWSUNFX18gZG91YmxlIF9fbnZfbm9ybTRkKGRvdWJsZSBfX2EsIGRvdWJsZSBfX2IsIGRvdWJsZSBfX2MsIGRvdWJsZSBfX2QpOwpfX0RFVklDRV9fIGZsb2F0IF9fbnZfbm9ybTRkZihmbG9hdCBfX2EsIGZsb2F0IF9fYiwgZmxvYXQgX19jLCBmbG9hdCBfX2QpOwpfX0RFVklDRV9fIGRvdWJsZSBfX252X25vcm1jZGYoZG91YmxlIF9fYSk7Cl9fREVWSUNFX18gZmxvYXQgX19udl9ub3JtY2RmZihmbG9hdCBfX2EpOwpfX0RFVklDRV9fIGRvdWJsZSBfX252X25vcm1jZGZpbnYoZG91YmxlIF9fYSk7Cl9fREVWSUNFX18gZmxvYXQgX19udl9ub3JtY2RmaW52ZihmbG9hdCBfX2EpOwpfX0RFVklDRV9fIGZsb2F0IF9fbnZfbm9ybWYoaW50IF9fYSwgY29uc3QgZmxvYXQgKl9fYik7Cl9fREVWSUNFX18gZG91YmxlIF9fbnZfbm9ybShpbnQgX19hLCBjb25zdCBkb3VibGUgKl9fYik7Cl9fREVWSUNFX18gaW50IF9fbnZfcG9wYyhpbnQgX19hKTsKX19ERVZJQ0VfXyBpbnQgX19udl9wb3BjbGwobG9uZyBsb25nIF9fYSk7Cl9fREVWSUNFX18gZG91YmxlIF9fbnZfcG93KGRvdWJsZSBfX2EsIGRvdWJsZSBfX2IpOwpfX0RFVklDRV9fIGZsb2F0IF9fbnZfcG93ZihmbG9hdCBfX2EsIGZsb2F0IF9fYik7Cl9fREVWSUNFX18gZG91YmxlIF9fbnZfcG93aShkb3VibGUgX19hLCBpbnQgX19iKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X3Bvd2lmKGZsb2F0IF9fYSwgaW50IF9fYik7Cl9fREVWSUNFX18gZG91YmxlIF9fbnZfcmNicnQoZG91YmxlIF9fYSk7Cl9fREVWSUNFX18gZmxvYXQgX19udl9yY2JydGYoZmxvYXQgX19hKTsKX19ERVZJQ0VfXyBkb3VibGUgX19udl9yY3A2NGgoZG91YmxlIF9fYSk7Cl9fREVWSUNFX18gZG91YmxlIF9fbnZfcmVtYWluZGVyKGRvdWJsZSBfX2EsIGRvdWJsZSBfX2IpOwpfX0RFVklDRV9fIGZsb2F0IF9fbnZfcmVtYWluZGVyZihmbG9hdCBfX2EsIGZsb2F0IF9fYik7Cl9fREVWSUNFX18gZG91YmxlIF9fbnZfcmVtcXVvKGRvdWJsZSBfX2EsIGRvdWJsZSBfX2IsIGludCAqX19jKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X3JlbXF1b2YoZmxvYXQgX19hLCBmbG9hdCBfX2IsIGludCAqX19jKTsKX19ERVZJQ0VfXyBpbnQgX19udl9yaGFkZChpbnQgX19hLCBpbnQgX19iKTsKX19ERVZJQ0VfXyBkb3VibGUgX19udl9yaHlwb3QoZG91YmxlIF9fYSwgZG91YmxlIF9fYik7Cl9fREVWSUNFX18gZmxvYXQgX19udl9yaHlwb3RmKGZsb2F0IF9fYSwgZmxvYXQgX19iKTsKX19ERVZJQ0VfXyBkb3VibGUgX19udl9yaW50KGRvdWJsZSBfX2EpOwpfX0RFVklDRV9fIGZsb2F0IF9fbnZfcmludGYoZmxvYXQgX19hKTsKX19ERVZJQ0VfXyBkb3VibGUgX19udl9ybm9ybTNkKGRvdWJsZSBfX2EsIGRvdWJsZSBfX2IsIGRvdWJsZSBfX2MpOwpfX0RFVklDRV9fIGZsb2F0IF9fbnZfcm5vcm0zZGYoZmxvYXQgX19hLCBmbG9hdCBfX2IsIGZsb2F0IF9fYyk7Cl9fREVWSUNFX18gZG91YmxlIF9fbnZfcm5vcm00ZChkb3VibGUgX19hLCBkb3VibGUgX19iLCBkb3VibGUgX19jLCBkb3VibGUgX19kKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X3Jub3JtNGRmKGZsb2F0IF9fYSwgZmxvYXQgX19iLCBmbG9hdCBfX2MsIGZsb2F0IF9fZCk7Cl9fREVWSUNFX18gZmxvYXQgX19udl9ybm9ybWYoaW50IF9fYSwgY29uc3QgZmxvYXQgKl9fYik7Cl9fREVWSUNFX18gZG91YmxlIF9fbnZfcm5vcm0oaW50IF9fYSwgY29uc3QgZG91YmxlICpfX2IpOwpfX0RFVklDRV9fIGRvdWJsZSBfX252X3JvdW5kKGRvdWJsZSBfX2EpOwpfX0RFVklDRV9fIGZsb2F0IF9fbnZfcm91bmRmKGZsb2F0IF9fYSk7Cl9fREVWSUNFX18gZG91YmxlIF9fbnZfcnNxcnQoZG91YmxlIF9fYSk7Cl9fREVWSUNFX18gZmxvYXQgX19udl9yc3FydGYoZmxvYXQgX19hKTsKX19ERVZJQ0VfXyBpbnQgX19udl9zYWQoaW50IF9fYSwgaW50IF9fYiwgaW50IF9fYyk7Cl9fREVWSUNFX18gZmxvYXQgX19udl9zYXR1cmF0ZWYoZmxvYXQgX19hKTsKX19ERVZJQ0VfXyBkb3VibGUgX19udl9zY2FsYm4oZG91YmxlIF9fYSwgaW50IF9fYik7Cl9fREVWSUNFX18gZmxvYXQgX19udl9zY2FsYm5mKGZsb2F0IF9fYSwgaW50IF9fYik7Cl9fREVWSUNFX18gaW50IF9fbnZfc2lnbmJpdGQoZG91YmxlIF9fYSk7Cl9fREVWSUNFX18gaW50IF9fbnZfc2lnbmJpdGYoZmxvYXQgX19hKTsKX19ERVZJQ0VfXyB2b2lkIF9fbnZfc2luY29zKGRvdWJsZSBfX2EsIGRvdWJsZSAqX19iLCBkb3VibGUgKl9fYyk7Cl9fREVWSUNFX18gdm9pZCBfX252X3NpbmNvc2YoZmxvYXQgX19hLCBmbG9hdCAqX19iLCBmbG9hdCAqX19jKTsKX19ERVZJQ0VfXyB2b2lkIF9fbnZfc2luY29zcGkoZG91YmxlIF9fYSwgZG91YmxlICpfX2IsIGRvdWJsZSAqX19jKTsKX19ERVZJQ0VfXyB2b2lkIF9fbnZfc2luY29zcGlmKGZsb2F0IF9fYSwgZmxvYXQgKl9fYiwgZmxvYXQgKl9fYyk7Cl9fREVWSUNFX18gZG91YmxlIF9fbnZfc2luKGRvdWJsZSBfX2EpOwpfX0RFVklDRV9fIGZsb2F0IF9fbnZfc2luZihmbG9hdCBfX2EpOwpfX0RFVklDRV9fIGRvdWJsZSBfX252X3NpbmgoZG91YmxlIF9fYSk7Cl9fREVWSUNFX18gZmxvYXQgX19udl9zaW5oZihmbG9hdCBfX2EpOwpfX0RFVklDRV9fIGRvdWJsZSBfX252X3NpbnBpKGRvdWJsZSBfX2EpOwpfX0RFVklDRV9fIGZsb2F0IF9fbnZfc2lucGlmKGZsb2F0IF9fYSk7Cl9fREVWSUNFX18gZG91YmxlIF9fbnZfc3FydChkb3VibGUgX19hKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X3NxcnRmKGZsb2F0IF9fYSk7Cl9fREVWSUNFX18gZG91YmxlIF9fbnZfdGFuKGRvdWJsZSBfX2EpOwpfX0RFVklDRV9fIGZsb2F0IF9fbnZfdGFuZihmbG9hdCBfX2EpOwpfX0RFVklDRV9fIGRvdWJsZSBfX252X3RhbmgoZG91YmxlIF9fYSk7Cl9fREVWSUNFX18gZmxvYXQgX19udl90YW5oZihmbG9hdCBfX2EpOwpfX0RFVklDRV9fIGRvdWJsZSBfX252X3RnYW1tYShkb3VibGUgX19hKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X3RnYW1tYWYoZmxvYXQgX19hKTsKX19ERVZJQ0VfXyBkb3VibGUgX19udl90cnVuYyhkb3VibGUgX19hKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X3RydW5jZihmbG9hdCBfX2EpOwpfX0RFVklDRV9fIGludCBfX252X3VoYWRkKHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpOwpfX0RFVklDRV9fIGRvdWJsZSBfX252X3VpbnQyZG91YmxlX3JuKHVuc2lnbmVkIGludCBfX2kpOwpfX0RFVklDRV9fIGZsb2F0IF9fbnZfdWludDJmbG9hdF9yZCh1bnNpZ25lZCBpbnQgX19hKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X3VpbnQyZmxvYXRfcm4odW5zaWduZWQgaW50IF9fYSk7Cl9fREVWSUNFX18gZmxvYXQgX19udl91aW50MmZsb2F0X3J1KHVuc2lnbmVkIGludCBfX2EpOwpfX0RFVklDRV9fIGZsb2F0IF9fbnZfdWludDJmbG9hdF9yeih1bnNpZ25lZCBpbnQgX19hKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X3VpbnRfYXNfZmxvYXQodW5zaWduZWQgaW50IF9fYSk7Cl9fREVWSUNFX18gZG91YmxlIF9fbnZfdWxsMmRvdWJsZV9yZCh1bnNpZ25lZCBsb25nIGxvbmcgX19hKTsKX19ERVZJQ0VfXyBkb3VibGUgX19udl91bGwyZG91YmxlX3JuKHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EpOwpfX0RFVklDRV9fIGRvdWJsZSBfX252X3VsbDJkb3VibGVfcnUodW5zaWduZWQgbG9uZyBsb25nIF9fYSk7Cl9fREVWSUNFX18gZG91YmxlIF9fbnZfdWxsMmRvdWJsZV9yeih1bnNpZ25lZCBsb25nIGxvbmcgX19hKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X3VsbDJmbG9hdF9yZCh1bnNpZ25lZCBsb25nIGxvbmcgX19hKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X3VsbDJmbG9hdF9ybih1bnNpZ25lZCBsb25nIGxvbmcgX19hKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X3VsbDJmbG9hdF9ydSh1bnNpZ25lZCBsb25nIGxvbmcgX19hKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X3VsbDJmbG9hdF9yeih1bnNpZ25lZCBsb25nIGxvbmcgX19hKTsKX19ERVZJQ0VfXyB1bnNpZ25lZCBsb25nIGxvbmcgX19udl91bGxtYXgodW5zaWduZWQgbG9uZyBsb25nIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIF9fYik7Cl9fREVWSUNFX18gdW5zaWduZWQgbG9uZyBsb25nIF9fbnZfdWxsbWluKHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpOwpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX252X3VtYXgodW5zaWduZWQgaW50IF9fYSwgdW5zaWduZWQgaW50IF9fYik7Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fbnZfdW1pbih1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKTsKX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX19udl91bXVsMjQodW5zaWduZWQgaW50IF9fYSwgdW5zaWduZWQgaW50IF9fYik7Cl9fREVWSUNFX18gdW5zaWduZWQgbG9uZyBsb25nIF9fbnZfdW11bDY0aGkodW5zaWduZWQgbG9uZyBsb25nIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgX19iKTsKX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX19udl91bXVsaGkodW5zaWduZWQgaW50IF9fYSwgdW5zaWduZWQgaW50IF9fYik7Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fbnZfdXJoYWRkKHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpOwpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX252X3VzYWQodW5zaWduZWQgaW50IF9fYSwgdW5zaWduZWQgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX2MpOwojaWYgQ1VEQV9WRVJTSU9OID49IDkwMDAgJiYgQ1VEQV9WRVJTSU9OIDwgOTAyMApfX0RFVklDRV9fIGludCBfX252X3ZhYnMyKGludCBfX2EpOwpfX0RFVklDRV9fIGludCBfX252X3ZhYnM0KGludCBfX2EpOwpfX0RFVklDRV9fIGludCBfX252X3ZhYnNkaWZmczIoaW50IF9fYSwgaW50IF9fYik7Cl9fREVWSUNFX18gaW50IF9fbnZfdmFic2RpZmZzNChpbnQgX19hLCBpbnQgX19iKTsKX19ERVZJQ0VfXyBpbnQgX19udl92YWJzZGlmZnUyKGludCBfX2EsIGludCBfX2IpOwpfX0RFVklDRV9fIGludCBfX252X3ZhYnNkaWZmdTQoaW50IF9fYSwgaW50IF9fYik7Cl9fREVWSUNFX18gaW50IF9fbnZfdmFic3NzMihpbnQgX19hKTsKX19ERVZJQ0VfXyBpbnQgX19udl92YWJzc3M0KGludCBfX2EpOwpfX0RFVklDRV9fIGludCBfX252X3ZhZGQyKGludCBfX2EsIGludCBfX2IpOwpfX0RFVklDRV9fIGludCBfX252X3ZhZGQ0KGludCBfX2EsIGludCBfX2IpOwpfX0RFVklDRV9fIGludCBfX252X3ZhZGRzczIoaW50IF9fYSwgaW50IF9fYik7Cl9fREVWSUNFX18gaW50IF9fbnZfdmFkZHNzNChpbnQgX19hLCBpbnQgX19iKTsKX19ERVZJQ0VfXyBpbnQgX19udl92YWRkdXMyKGludCBfX2EsIGludCBfX2IpOwpfX0RFVklDRV9fIGludCBfX252X3ZhZGR1czQoaW50IF9fYSwgaW50IF9fYik7Cl9fREVWSUNFX18gaW50IF9fbnZfdmF2Z3MyKGludCBfX2EsIGludCBfX2IpOwpfX0RFVklDRV9fIGludCBfX252X3ZhdmdzNChpbnQgX19hLCBpbnQgX19iKTsKX19ERVZJQ0VfXyBpbnQgX19udl92YXZndTIoaW50IF9fYSwgaW50IF9fYik7Cl9fREVWSUNFX18gaW50IF9fbnZfdmF2Z3U0KGludCBfX2EsIGludCBfX2IpOwpfX0RFVklDRV9fIGludCBfX252X3ZjbXBlcTIoaW50IF9fYSwgaW50IF9fYik7Cl9fREVWSUNFX18gaW50IF9fbnZfdmNtcGVxNChpbnQgX19hLCBpbnQgX19iKTsKX19ERVZJQ0VfXyBpbnQgX19udl92Y21wZ2VzMihpbnQgX19hLCBpbnQgX19iKTsKX19ERVZJQ0VfXyBpbnQgX19udl92Y21wZ2VzNChpbnQgX19hLCBpbnQgX19iKTsKX19ERVZJQ0VfXyBpbnQgX19udl92Y21wZ2V1MihpbnQgX19hLCBpbnQgX19iKTsKX19ERVZJQ0VfXyBpbnQgX19udl92Y21wZ2V1NChpbnQgX19hLCBpbnQgX19iKTsKX19ERVZJQ0VfXyBpbnQgX19udl92Y21wZ3RzMihpbnQgX19hLCBpbnQgX19iKTsKX19ERVZJQ0VfXyBpbnQgX19udl92Y21wZ3RzNChpbnQgX19hLCBpbnQgX19iKTsKX19ERVZJQ0VfXyBpbnQgX19udl92Y21wZ3R1MihpbnQgX19hLCBpbnQgX19iKTsKX19ERVZJQ0VfXyBpbnQgX19udl92Y21wZ3R1NChpbnQgX19hLCBpbnQgX19iKTsKX19ERVZJQ0VfXyBpbnQgX19udl92Y21wbGVzMihpbnQgX19hLCBpbnQgX19iKTsKX19ERVZJQ0VfXyBpbnQgX19udl92Y21wbGVzNChpbnQgX19hLCBpbnQgX19iKTsKX19ERVZJQ0VfXyBpbnQgX19udl92Y21wbGV1MihpbnQgX19hLCBpbnQgX19iKTsKX19ERVZJQ0VfXyBpbnQgX19udl92Y21wbGV1NChpbnQgX19hLCBpbnQgX19iKTsKX19ERVZJQ0VfXyBpbnQgX19udl92Y21wbHRzMihpbnQgX19hLCBpbnQgX19iKTsKX19ERVZJQ0VfXyBpbnQgX19udl92Y21wbHRzNChpbnQgX19hLCBpbnQgX19iKTsKX19ERVZJQ0VfXyBpbnQgX19udl92Y21wbHR1MihpbnQgX19hLCBpbnQgX19iKTsKX19ERVZJQ0VfXyBpbnQgX19udl92Y21wbHR1NChpbnQgX19hLCBpbnQgX19iKTsKX19ERVZJQ0VfXyBpbnQgX19udl92Y21wbmUyKGludCBfX2EsIGludCBfX2IpOwpfX0RFVklDRV9fIGludCBfX252X3ZjbXBuZTQoaW50IF9fYSwgaW50IF9fYik7Cl9fREVWSUNFX18gaW50IF9fbnZfdmhhZGR1MihpbnQgX19hLCBpbnQgX19iKTsKX19ERVZJQ0VfXyBpbnQgX19udl92aGFkZHU0KGludCBfX2EsIGludCBfX2IpOwpfX0RFVklDRV9fIGludCBfX252X3ZtYXhzMihpbnQgX19hLCBpbnQgX19iKTsKX19ERVZJQ0VfXyBpbnQgX19udl92bWF4czQoaW50IF9fYSwgaW50IF9fYik7Cl9fREVWSUNFX18gaW50IF9fbnZfdm1heHUyKGludCBfX2EsIGludCBfX2IpOwpfX0RFVklDRV9fIGludCBfX252X3ZtYXh1NChpbnQgX19hLCBpbnQgX19iKTsKX19ERVZJQ0VfXyBpbnQgX19udl92bWluczIoaW50IF9fYSwgaW50IF9fYik7Cl9fREVWSUNFX18gaW50IF9fbnZfdm1pbnM0KGludCBfX2EsIGludCBfX2IpOwpfX0RFVklDRV9fIGludCBfX252X3ZtaW51MihpbnQgX19hLCBpbnQgX19iKTsKX19ERVZJQ0VfXyBpbnQgX19udl92bWludTQoaW50IF9fYSwgaW50IF9fYik7Cl9fREVWSUNFX18gaW50IF9fbnZfdm5lZzIoaW50IF9fYSk7Cl9fREVWSUNFX18gaW50IF9fbnZfdm5lZzQoaW50IF9fYSk7Cl9fREVWSUNFX18gaW50IF9fbnZfdm5lZ3NzMihpbnQgX19hKTsKX19ERVZJQ0VfXyBpbnQgX19udl92bmVnc3M0KGludCBfX2EpOwpfX0RFVklDRV9fIGludCBfX252X3ZzYWRzMihpbnQgX19hLCBpbnQgX19iKTsKX19ERVZJQ0VfXyBpbnQgX19udl92c2FkczQoaW50IF9fYSwgaW50IF9fYik7Cl9fREVWSUNFX18gaW50IF9fbnZfdnNhZHUyKGludCBfX2EsIGludCBfX2IpOwpfX0RFVklDRV9fIGludCBfX252X3ZzYWR1NChpbnQgX19hLCBpbnQgX19iKTsKX19ERVZJQ0VfXyBpbnQgX19udl92c2V0ZXEyKGludCBfX2EsIGludCBfX2IpOwpfX0RFVklDRV9fIGludCBfX252X3ZzZXRlcTQoaW50IF9fYSwgaW50IF9fYik7Cl9fREVWSUNFX18gaW50IF9fbnZfdnNldGdlczIoaW50IF9fYSwgaW50IF9fYik7Cl9fREVWSUNFX18gaW50IF9fbnZfdnNldGdlczQoaW50IF9fYSwgaW50IF9fYik7Cl9fREVWSUNFX18gaW50IF9fbnZfdnNldGdldTIoaW50IF9fYSwgaW50IF9fYik7Cl9fREVWSUNFX18gaW50IF9fbnZfdnNldGdldTQoaW50IF9fYSwgaW50IF9fYik7Cl9fREVWSUNFX18gaW50IF9fbnZfdnNldGd0czIoaW50IF9fYSwgaW50IF9fYik7Cl9fREVWSUNFX18gaW50IF9fbnZfdnNldGd0czQoaW50IF9fYSwgaW50IF9fYik7Cl9fREVWSUNFX18gaW50IF9fbnZfdnNldGd0dTIoaW50IF9fYSwgaW50IF9fYik7Cl9fREVWSUNFX18gaW50IF9fbnZfdnNldGd0dTQoaW50IF9fYSwgaW50IF9fYik7Cl9fREVWSUNFX18gaW50IF9fbnZfdnNldGxlczIoaW50IF9fYSwgaW50IF9fYik7Cl9fREVWSUNFX18gaW50IF9fbnZfdnNldGxlczQoaW50IF9fYSwgaW50IF9fYik7Cl9fREVWSUNFX18gaW50IF9fbnZfdnNldGxldTIoaW50IF9fYSwgaW50IF9fYik7Cl9fREVWSUNFX18gaW50IF9fbnZfdnNldGxldTQoaW50IF9fYSwgaW50IF9fYik7Cl9fREVWSUNFX18gaW50IF9fbnZfdnNldGx0czIoaW50IF9fYSwgaW50IF9fYik7Cl9fREVWSUNFX18gaW50IF9fbnZfdnNldGx0czQoaW50IF9fYSwgaW50IF9fYik7Cl9fREVWSUNFX18gaW50IF9fbnZfdnNldGx0dTIoaW50IF9fYSwgaW50IF9fYik7Cl9fREVWSUNFX18gaW50IF9fbnZfdnNldGx0dTQoaW50IF9fYSwgaW50IF9fYik7Cl9fREVWSUNFX18gaW50IF9fbnZfdnNldG5lMihpbnQgX19hLCBpbnQgX19iKTsKX19ERVZJQ0VfXyBpbnQgX19udl92c2V0bmU0KGludCBfX2EsIGludCBfX2IpOwpfX0RFVklDRV9fIGludCBfX252X3ZzdWIyKGludCBfX2EsIGludCBfX2IpOwpfX0RFVklDRV9fIGludCBfX252X3ZzdWI0KGludCBfX2EsIGludCBfX2IpOwpfX0RFVklDRV9fIGludCBfX252X3ZzdWJzczIoaW50IF9fYSwgaW50IF9fYik7Cl9fREVWSUNFX18gaW50IF9fbnZfdnN1YnNzNChpbnQgX19hLCBpbnQgX19iKTsKX19ERVZJQ0VfXyBpbnQgX19udl92c3VidXMyKGludCBfX2EsIGludCBfX2IpOwpfX0RFVklDRV9fIGludCBfX252X3ZzdWJ1czQoaW50IF9fYSwgaW50IF9fYik7CiNlbmRpZiAgLy8gQ1VEQV9WRVJTSU9OCl9fREVWSUNFX18gZG91YmxlIF9fbnZfeTAoZG91YmxlIF9fYSk7Cl9fREVWSUNFX18gZmxvYXQgX19udl95MGYoZmxvYXQgX19hKTsKX19ERVZJQ0VfXyBkb3VibGUgX19udl95MShkb3VibGUgX19hKTsKX19ERVZJQ0VfXyBmbG9hdCBfX252X3kxZihmbG9hdCBfX2EpOwpfX0RFVklDRV9fIGZsb2F0IF9fbnZfeW5mKGludCBfX2EsIGZsb2F0IF9fYik7Cl9fREVWSUNFX18gZG91YmxlIF9fbnZfeW4oaW50IF9fYSwgZG91YmxlIF9fYik7CgojaWYgZGVmaW5lZChfX09QRU5NUF9OVlBUWF9fKQojcHJhZ21hIG9tcCBlbmQgYXNzdW1lcyBleHRfc3BtZF9hbWVuYWJsZSBub19vcGVubXAKI2VuZGlmCgojaWYgZGVmaW5lZChfX2NwbHVzcGx1cykKfSAvLyBleHRlcm4gIkMiCiNlbmRpZgojZW5kaWYgLy8gX19DTEFOR19DVURBX0xJQkRFVklDRV9ERUNMQVJFU19IX18KAGFybV9jbXNlLmgAYXJtX3N2ZS5oAGF2eDUxMmJ3aW50cmluLmgAYXZ4NTEydmxpbnRyaW4uaABhdng1MTJ2bHZwMmludGVyc2VjdGludHJpbi5oAC8qPT09LS0tLS0tLS0tLS0tLS0tLS0tIGVucWNtZGludHJpbi5oIC0gZW5xY21kIGludHJpbnNpY3MgLS0tLS0tLS0tLS0tLS0tLS09PT0KICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKi8KCiNpZm5kZWYgX19JTU1JTlRSSU5fSAojZXJyb3IgIk5ldmVyIHVzZSA8ZW5xY21kaW50cmluLmg+IGRpcmVjdGx5OyBpbmNsdWRlIDxpbW1pbnRyaW4uaD4gaW5zdGVhZC4iCiNlbmRpZgoKI2lmbmRlZiBfX0VOUUNNRElOVFJJTl9ICiNkZWZpbmUgX19FTlFDTURJTlRSSU5fSAoKLyogRGVmaW5lIHRoZSBkZWZhdWx0IGF0dHJpYnV0ZXMgZm9yIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlICovCiNkZWZpbmUgX0RFRkFVTFRfRk5fQVRUUlMgXAogIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygiZW5xY21kIikpKQoKLy8vIFJlYWRzIDY0LWJ5dGUgY29tbWFuZCBwb2ludGVkIGJ5IFxhIF9fc3JjLCBmb3JtYXRzIDY0LWJ5dGUgZW5xdWV1ZSBzdG9yZQovLy8gICAgZGF0YSwgYW5kIHBlcmZvcm1zIDY0LWJ5dGUgZW5xdWV1ZSBzdG9yZSB0byBtZW1vcnkgcG9pbnRlZCBieSBcYSBfX2RzdC4KLy8vICAgIFRoaXMgaW50cmluc2ljcyBtYXkgb25seSBiZSB1c2VkIGluIFVzZXIgbW9kZS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWNzIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gRU5RQ01EIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fZHN0Ci8vLyAgICBQb2ludGVyIHRvIHRoZSBkZXN0aW5hdGlvbiBvZiB0aGUgZW5xdWV1ZSBzdG9yZS4KLy8vIFxwYXJhbSBfX3NyYwovLy8gICAgUG9pbnRlciB0byA2NC1ieXRlIGNvbW1hbmQgZGF0YS4KLy8vIFxyZXR1cm5zIElmIHRoZSBjb21tYW5kIGRhdGEgaXMgc3VjY2Vzc2Z1bGx5IHdyaXR0ZW4gdG8gXGEgX19kc3QgdGhlbiAwIGlzCi8vLyAgICByZXR1cm5lZC4gT3RoZXJ3aXNlIDEgaXMgcmV0dXJuZWQuCnN0YXRpYyBfX2lubGluZV9fIGludCBfREVGQVVMVF9GTl9BVFRSUwpfZW5xY21kICh2b2lkICpfX2RzdCwgY29uc3Qgdm9pZCAqX19zcmMpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfZW5xY21kKF9fZHN0LCBfX3NyYyk7Cn0KCi8vLyBSZWFkcyA2NC1ieXRlIGNvbW1hbmQgcG9pbnRlZCBieSBcYSBfX3NyYywgZm9ybWF0cyA2NC1ieXRlIGVucXVldWUgc3RvcmUKLy8vICAgIGRhdGEsIGFuZCBwZXJmb3JtcyA2NC1ieXRlIGVucXVldWUgc3RvcmUgdG8gbWVtb3J5IHBvaW50ZWQgYnkgXGEgX19kc3QKLy8vICAgIFRoaXMgaW50cmluc2ljIG1heSBvbmx5IGJlIHVzZWQgaW4gUHJpdmlsZWdlZCBtb2RlLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpY3MgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBFTlFDTURTIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fZHN0Ci8vLyAgICBQb2ludGVyIHRvIHRoZSBkZXN0aW5hdGlvbiBvZiB0aGUgZW5xdWV1ZSBzdG9yZS4KLy8vIFxwYXJhbSBfX3NyYwovLy8gICAgUG9pbnRlciB0byA2NC1ieXRlIGNvbW1hbmQgZGF0YS4KLy8vIFxyZXR1cm5zIElmIHRoZSBjb21tYW5kIGRhdGEgaXMgc3VjY2Vzc2Z1bGx5IHdyaXR0ZW4gdG8gXGEgX19kc3QgdGhlbiAwIGlzCi8vLyAgICByZXR1cm5lZC4gT3RoZXJ3aXNlIDEgaXMgcmV0dXJuZWQuCnN0YXRpYyBfX2lubGluZV9fIGludCBfREVGQVVMVF9GTl9BVFRSUwpfZW5xY21kcyAodm9pZCAqX19kc3QsIGNvbnN0IHZvaWQgKl9fc3JjKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2VucWNtZHMoX19kc3QsIF9fc3JjKTsKfQoKI3VuZGVmIF9ERUZBVUxUX0ZOX0FUVFJTCgojZW5kaWYgLyogX19FTlFDTURJTlRSSU5fSCAqLwoAaW50cmluLmgAc3RkYWxpZ24uaABzYW5pdGl6ZXIvaHdhc2FuX2ludGVyZmFjZS5oAHJvb3QAdGV4dCBzaXplOiAAWzpeYWxwaGE6XQBbOl5hc2NpaTpdAFs6XmdyYXBoOl0AWzpwcmludDpdAFs6c3BhY2U6XQBub3AgLT4gJWQAdW5leHBlY3RlZCBlcnJvcgAoP0hhdmVNYXRjaDolZCkAW11eLVwAQmFtdW0AQ2FyaWFuAE1lZGVmYWlkcmluAE1lcm9pdGljX0N1cnNpdmUAT3NtYW55YQBQc2FsdGVyX1BhaGxhdmkAU2sAU0lHU0VHVgBMSU5VWF8yLjYAbmV4dC0+aGVhZGVyLm1hZ2ljID09IE1hZ2ljKGtNYWdpY1VuYWxsb2NhdGVkLCAmbmV4dC0+aGVhZGVyKQBmbG9hdDE2AG1JADw8AFNzAEJhZCBTdGF0dXNPciBhY2Nlc3M6IABJbnZhbGlkIGxlbmd0aCAAMDEyMzQ1Njc4OUFCQ0RFRgBleHRlcm5hbC9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL211dGV4LmNjAGVucXVldWVfYWZ0ZXItPnNraXAgPT0gbnVsbHB0ciB8fCBNdUVxdWl2YWxlbnRXYWl0ZXIoZW5xdWV1ZV9hZnRlciwgcykATE9DQUxUSU1FAGV4dGVybmFsL2JvcmluZ3NzbC9zcmMvY3J5cHRvL2ZpcHNtb2R1bGUvYm4vYWRkLmMAcmVhc29uKCV1KQAlbHU6JXM6JXM6JWQ6JXMKAGt5dGhlLnByb3RvLkNvbXBpbGF0aW9uVW5pdC5hcmd1bWVudAAKAGt5dGhlLnByb3RvLmNvbW1vbi5GYWN0Lm5hbWUALS1uby13YXJuaW5ncwBLWVRIRV9ST09UX0RJUkVDVE9SWQBGYWlsZWQgdG8gb3BlbiBLemlwV3JpdGVyOiAAcmVxdWlyZWRfaW5wdXQAICgxPQBJbnZhcmlhbnQgYnJva2VuOiBvbmx5IG5vZGVzIHRoYXQgc3VwcG9ydCBtZW1vaXphdGlvbiBtYXkgYmUgdXNlZCBpbiB0aGUgcGFyZW50IG1hcC4AZ2ZuaWludHJpbi5oAC8qID09PS0tLS0tLS0tIHZhZGVmcy5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwoKLyogT25seSBpbmNsdWRlIHRoaXMgaWYgd2UgYXJlIGFpbWluZyBmb3IgTVNWQyBjb21wYXRpYmlsaXR5LiAqLwojaWZuZGVmIF9NU0NfVkVSCiNpbmNsdWRlX25leHQgPHZhZGVmcy5oPgojZWxzZQoKI2lmbmRlZiBfX2NsYW5nX3ZhZGVmc19oCiNkZWZpbmUgX19jbGFuZ192YWRlZnNfaAoKI2luY2x1ZGVfbmV4dCA8dmFkZWZzLmg+CgovKiBPdmVycmlkZSBtYWNyb3MgZnJvbSB2YWRlZnMuaCB3aXRoIGRlZmluaXRpb25zIHRoYXQgd29yayB3aXRoIENsYW5nLiAqLwojaWZkZWYgX2NydF92YV9zdGFydAojdW5kZWYgX2NydF92YV9zdGFydAojZGVmaW5lIF9jcnRfdmFfc3RhcnQoYXAsIHBhcmFtKSBfX2J1aWx0aW5fdmFfc3RhcnQoYXAsIHBhcmFtKQojZW5kaWYKI2lmZGVmIF9jcnRfdmFfZW5kCiN1bmRlZiBfY3J0X3ZhX2VuZAojZGVmaW5lIF9jcnRfdmFfZW5kKGFwKSAgICAgICAgICBfX2J1aWx0aW5fdmFfZW5kKGFwKQojZW5kaWYKI2lmZGVmIF9jcnRfdmFfYXJnCiN1bmRlZiBfY3J0X3ZhX2FyZwojZGVmaW5lIF9jcnRfdmFfYXJnKGFwLCB0eXBlKSAgICBfX2J1aWx0aW5fdmFfYXJnKGFwLCB0eXBlKQojZW5kaWYKCi8qIFZTIDIwMTUgc3dpdGNoZWQgdG8gZG91YmxlIHVuZGVyc2NvcmUgbmFtZXMsIHdoaWNoIGlzIGFuIGltcHJvdmVtZW50LCBidXQgbm93CiAqIHdlIGhhdmUgdG8gaW50ZXJjZXB0IHRob3NlIG5hbWVzIHRvby4KICovCiNpZmRlZiBfX2NydF92YV9zdGFydAojdW5kZWYgX19jcnRfdmFfc3RhcnQKI2RlZmluZSBfX2NydF92YV9zdGFydChhcCwgcGFyYW0pIF9fYnVpbHRpbl92YV9zdGFydChhcCwgcGFyYW0pCiNlbmRpZgojaWZkZWYgX19jcnRfdmFfZW5kCiN1bmRlZiBfX2NydF92YV9lbmQKI2RlZmluZSBfX2NydF92YV9lbmQoYXApICAgICAgICAgIF9fYnVpbHRpbl92YV9lbmQoYXApCiNlbmRpZgojaWZkZWYgX19jcnRfdmFfYXJnCiN1bmRlZiBfX2NydF92YV9hcmcKI2RlZmluZSBfX2NydF92YV9hcmcoYXAsIHR5cGUpICAgIF9fYnVpbHRpbl92YV9hcmcoYXAsIHR5cGUpCiNlbmRpZgoKI2VuZGlmCiNlbmRpZgoAeHNhdmVzaW50cmluLmgAYml0cy9zdGRhdG9taWMuaAAvKj09PS0tLS0gbW1fbWFsbG9jLmggLSBJbXBsZW1lbnRhdGlvbiBvZiBfbW1fbWFsbG9jIGFuZCBfbW1fZnJlZSAtLS0tLS0tLS0tPT09CiAqCiAqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCiAqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCgojaWZuZGVmIF9NTV9NQUxMT0NfSF9JTkNMVURFRAojZGVmaW5lIF9NTV9NQUxMT0NfSF9JTkNMVURFRAoKI2lmIGRlZmluZWQoX19wcGM2NF9fKSAmJiAoZGVmaW5lZChfX2xpbnV4X18pIHx8IGRlZmluZWQoX19GcmVlQlNEX18pKQoKI2luY2x1ZGUgPHN0ZGxpYi5oPgoKLyogV2UgY2FuJ3QgZGVwZW5kIG9uIDxzdGRsaWIuaD4gc2luY2UgdGhlIHByb3RvdHlwZSBvZiBwb3NpeF9tZW1hbGlnbgogICBtYXkgbm90IGJlIHZpc2libGUuICAqLwojaWZuZGVmIF9fY3BsdXNwbHVzCmV4dGVybiBpbnQgcG9zaXhfbWVtYWxpZ24gKHZvaWQgKiosIHNpemVfdCwgc2l6ZV90KTsKI2Vsc2UKZXh0ZXJuICJDIiBpbnQgcG9zaXhfbWVtYWxpZ24gKHZvaWQgKiosIHNpemVfdCwgc2l6ZV90KSB0aHJvdyAoKTsKI2VuZGlmCgpzdGF0aWMgX19pbmxpbmUgdm9pZCAqCl9tbV9tYWxsb2MgKHNpemVfdCBzaXplLCBzaXplX3QgYWxpZ25tZW50KQp7CiAgLyogUG93ZXJQQzY0IEVMRiBWMiBBQkkgcmVxdWlyZXMgcXVhZHdvcmQgYWxpZ25tZW50LiAgKi8KICBzaXplX3QgdmVjX2FsaWduID0gc2l6ZW9mIChfX3ZlY3RvciBmbG9hdCk7CiAgdm9pZCAqcHRyOwoKICBpZiAoYWxpZ25tZW50IDwgdmVjX2FsaWduKQogICAgYWxpZ25tZW50ID0gdmVjX2FsaWduOwogIGlmIChwb3NpeF9tZW1hbGlnbiAoJnB0ciwgYWxpZ25tZW50LCBzaXplKSA9PSAwKQogICAgcmV0dXJuIHB0cjsKICBlbHNlCiAgICByZXR1cm4gTlVMTDsKfQoKc3RhdGljIF9faW5saW5lIHZvaWQKX21tX2ZyZWUgKHZvaWQgKiBwdHIpCnsKICBmcmVlIChwdHIpOwp9CgojZWxzZQojaW5jbHVkZV9uZXh0IDxtbV9tYWxsb2MuaD4KI2VuZGlmCgojZW5kaWYgLyogX01NX01BTExPQ19IX0lOQ0xVREVEICovCgBwcGNfd3JhcHBlcnMvcG1taW50cmluLmgALy89PT0tLSBzYW5pdGl6ZXIvbHNhbl9pbnRlcmZhY2UuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KLy8KLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KLy8KLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KLy8KLy8gVGhpcyBmaWxlIGlzIGEgcGFydCBvZiBMZWFrU2FuaXRpemVyLgovLwovLyBQdWJsaWMgaW50ZXJmYWNlIGhlYWRlci4KLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KI2lmbmRlZiBTQU5JVElaRVJfTFNBTl9JTlRFUkZBQ0VfSAojZGVmaW5lIFNBTklUSVpFUl9MU0FOX0lOVEVSRkFDRV9ICgojaW5jbHVkZSA8c2FuaXRpemVyL2NvbW1vbl9pbnRlcmZhY2VfZGVmcy5oPgoKI2lmZGVmIF9fY3BsdXNwbHVzCmV4dGVybiAiQyIgewojZW5kaWYKICAvLyBBbGxvY2F0aW9ucyBtYWRlIGJldHdlZW4gY2FsbHMgdG8gX19sc2FuX2Rpc2FibGUoKSBhbmQgX19sc2FuX2VuYWJsZSgpIHdpbGwKICAvLyBiZSB0cmVhdGVkIGFzIG5vbi1sZWFrcy4gRGlzYWJsZS9lbmFibGUgcGFpcnMgbWF5IGJlIG5lc3RlZC4KICB2b2lkIF9fbHNhbl9kaXNhYmxlKHZvaWQpOwogIHZvaWQgX19sc2FuX2VuYWJsZSh2b2lkKTsKCiAgLy8gVGhlIGhlYXAgb2JqZWN0IGludG8gd2hpY2ggcCBwb2ludHMgd2lsbCBiZSB0cmVhdGVkIGFzIGEgbm9uLWxlYWsuCiAgdm9pZCBfX2xzYW5faWdub3JlX29iamVjdChjb25zdCB2b2lkICpwKTsKCiAgLy8gTWVtb3J5IHJlZ2lvbnMgcmVnaXN0ZXJlZCB0aHJvdWdoIHRoaXMgaW50ZXJmYWNlIHdpbGwgYmUgdHJlYXRlZCBhcyBzb3VyY2VzCiAgLy8gb2YgbGl2ZSBwb2ludGVycyBkdXJpbmcgbGVhayBjaGVja2luZy4gVXNlZnVsIGlmIHlvdSBzdG9yZSBwb2ludGVycyBpbgogIC8vIG1hcHBlZCBtZW1vcnkuCiAgLy8gUG9pbnRzIG9mIG5vdGU6CiAgLy8gLSBfX2xzYW5fdW5yZWdpc3Rlcl9yb290X3JlZ2lvbigpIG11c3QgYmUgY2FsbGVkIHdpdGggdGhlIHNhbWUgcG9pbnRlciBhbmQKICAvLyBzaXplIHRoYXQgaGF2ZSBlYXJsaWVyIGJlZW4gcGFzc2VkIHRvIF9fbHNhbl9yZWdpc3Rlcl9yb290X3JlZ2lvbigpCiAgLy8gLSBMU2FuIHdpbGwgc2tpcCBhbnkgaW5hY2Nlc3NpYmxlIG1lbW9yeSB3aGVuIHNjYW5uaW5nIGEgcm9vdCByZWdpb24uIEUuZy4sCiAgLy8gaWYgeW91IG1hcCBtZW1vcnkgd2l0aGluIGEgbGFyZ2VyIHJlZ2lvbiB0aGF0IHlvdSBoYXZlIG1wcm90ZWN0J2VkLCB5b3UgY2FuCiAgLy8gcmVnaXN0ZXIgdGhlIGVudGlyZSBsYXJnZSByZWdpb24uCiAgLy8gLSB0aGUgaW1wbGVtZW50YXRpb24gaXMgbm90IG9wdGltaXplZCBmb3IgcGVyZm9ybWFuY2UuIFRoaXMgaW50ZXJmYWNlIGlzCiAgLy8gaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgYSBzbWFsbCBudW1iZXIgb2YgcmVsYXRpdmVseSBzdGF0aWMgcmVnaW9ucy4KICB2b2lkIF9fbHNhbl9yZWdpc3Rlcl9yb290X3JlZ2lvbihjb25zdCB2b2lkICpwLCBzaXplX3Qgc2l6ZSk7CiAgdm9pZCBfX2xzYW5fdW5yZWdpc3Rlcl9yb290X3JlZ2lvbihjb25zdCB2b2lkICpwLCBzaXplX3Qgc2l6ZSk7CgogIC8vIENoZWNrIGZvciBsZWFrcyBub3cuIFRoaXMgZnVuY3Rpb24gYmVoYXZlcyBpZGVudGljYWxseSB0byB0aGUgZGVmYXVsdAogIC8vIGVuZC1vZi1wcm9jZXNzIGxlYWsgY2hlY2suIEluIHBhcnRpY3VsYXIsIGl0IHdpbGwgdGVybWluYXRlIHRoZSBwcm9jZXNzIGlmCiAgLy8gbGVha3MgYXJlIGZvdW5kIGFuZCB0aGUgZXhpdGNvZGUgcnVudGltZSBmbGFnIGlzIG5vbi16ZXJvLgogIC8vIFN1YnNlcXVlbnQgY2FsbHMgdG8gdGhpcyBmdW5jdGlvbiB3aWxsIGhhdmUgbm8gZWZmZWN0IGFuZCBlbmQtb2YtcHJvY2VzcwogIC8vIGxlYWsgY2hlY2sgd2lsbCBub3QgcnVuLiBFZmZlY3RpdmVseSwgZW5kLW9mLXByb2Nlc3MgbGVhayBjaGVjayBpcyBtb3ZlZCB0bwogIC8vIHRoZSB0aW1lIG9mIGZpcnN0IGludm9jYXRpb24gb2YgdGhpcyBmdW5jdGlvbi4KICAvLyBCeSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gZWFybHkgZHVyaW5nIHByb2Nlc3Mgc2h1dGRvd24sIHlvdSBjYW4gaW5zdHJ1Y3QKICAvLyBMU2FuIHRvIGlnbm9yZSBzaHV0ZG93bi1vbmx5IGxlYWtzIHdoaWNoIGhhcHBlbiBsYXRlciBvbi4KICB2b2lkIF9fbHNhbl9kb19sZWFrX2NoZWNrKHZvaWQpOwoKICAvLyBDaGVjayBmb3IgbGVha3Mgbm93LiBSZXR1cm5zIHplcm8gaWYgbm8gbGVha3MgaGF2ZSBiZWVuIGZvdW5kIG9yIGlmIGxlYWsKICAvLyBkZXRlY3Rpb24gaXMgZGlzYWJsZWQsIG5vbi16ZXJvIG90aGVyd2lzZS4KICAvLyBUaGlzIGZ1bmN0aW9uIG1heSBiZSBjYWxsZWQgcmVwZWF0ZWRseSwgZS5nLiB0byBwZXJpb2RpY2FsbHkgY2hlY2sgYQogIC8vIGxvbmctcnVubmluZyBwcm9jZXNzLiBJdCBwcmludHMgYSBsZWFrIHJlcG9ydCBpZiBhcHByb3ByaWF0ZSwgYnV0IGRvZXMgbm90CiAgLy8gdGVybWluYXRlIHRoZSBwcm9jZXNzLiBJdCBkb2VzIG5vdCBhZmZlY3QgdGhlIGJlaGF2aW9yIG9mCiAgLy8gX19sc2FuX2RvX2xlYWtfY2hlY2soKSBvciB0aGUgZW5kLW9mLXByb2Nlc3MgbGVhayBjaGVjaywgYW5kIGlzIG5vdAogIC8vIGFmZmVjdGVkIGJ5IHRoZW0uCiAgaW50IF9fbHNhbl9kb19yZWNvdmVyYWJsZV9sZWFrX2NoZWNrKHZvaWQpOwoKICAvLyBUaGUgdXNlciBtYXkgb3B0aW9uYWxseSBwcm92aWRlIHRoaXMgZnVuY3Rpb24gdG8gZGlzYWxsb3cgbGVhayBjaGVja2luZwogIC8vIGZvciB0aGUgcHJvZ3JhbSBpdCBpcyBsaW5rZWQgaW50byAoaWYgdGhlIHJldHVybiB2YWx1ZSBpcyBub24temVybykuIFRoaXMKICAvLyBmdW5jdGlvbiBtdXN0IGJlIGRlZmluZWQgYXMgcmV0dXJuaW5nIGEgY29uc3RhbnQgdmFsdWU7IGFueSBiZWhhdmlvciBiZXlvbmQKICAvLyB0aGF0IGlzIHVuc3VwcG9ydGVkLgogIC8vIFRvIGF2b2lkIGRlYWQgc3RyaXBwaW5nLCB5b3UgbWF5IG5lZWQgdG8gZGVmaW5lIHRoaXMgZnVuY3Rpb24gd2l0aAogIC8vIF9fYXR0cmlidXRlX18oKHVzZWQpKQogIGludCBfX2xzYW5faXNfdHVybmVkX29mZih2b2lkKTsKCiAgLy8gVGhpcyBmdW5jdGlvbiBtYXkgYmUgb3B0aW9uYWxseSBwcm92aWRlZCBieSB1c2VyIGFuZCBzaG91bGQgcmV0dXJuCiAgLy8gYSBzdHJpbmcgY29udGFpbmluZyBMU2FuIHJ1bnRpbWUgb3B0aW9ucy4gU2VlIGxzYW5fZmxhZ3MuaW5jIGZvciBkZXRhaWxzLgogIGNvbnN0IGNoYXIgKl9fbHNhbl9kZWZhdWx0X29wdGlvbnModm9pZCk7CgogIC8vIFRoaXMgZnVuY3Rpb24gbWF5IGJlIG9wdGlvbmFsbHkgcHJvdmlkZWQgYnkgdGhlIHVzZXIgYW5kIHNob3VsZCByZXR1cm4KICAvLyBhIHN0cmluZyBjb250YWluaW5nIExTYW4gc3VwcHJlc3Npb25zLgogIGNvbnN0IGNoYXIgKl9fbHNhbl9kZWZhdWx0X3N1cHByZXNzaW9ucyh2b2lkKTsKI2lmZGVmIF9fY3BsdXNwbHVzCn0gIC8vIGV4dGVybiAiQyIKCm5hbWVzcGFjZSBfX2xzYW4gewpjbGFzcyBTY29wZWREaXNhYmxlciB7CiBwdWJsaWM6CiAgU2NvcGVkRGlzYWJsZXIoKSB7IF9fbHNhbl9kaXNhYmxlKCk7IH0KICB+U2NvcGVkRGlzYWJsZXIoKSB7IF9fbHNhbl9lbmFibGUoKTsgfQp9Owp9ICAvLyBuYW1lc3BhY2UgX19sc2FuCiNlbmRpZgoKI2VuZGlmICAvLyBTQU5JVElaRVJfTFNBTl9JTlRFUkZBQ0VfSAoAZnNlZWsoaGFuZGxlLCAwLCAyKQAsIDA9ACAoZnNlZWsoaGFuZGxlLCAwLCAwKT0AIT0ATWlzc2luZyBhIGNvbG9uIGFmdGVyIGEgbmFtZSBvZiBvYmplY3QgbWVtYmVyLgBVbmtub3duIG5hbWVkIGNhcHR1cmU6IAAnLCB1c2luZyBKU09OAFx4MDAAWzpeeGRpZ2l0Ol0AIGluIHN0ZXAAR290aGljAEthbm5hZGEATWFuZGFpYwBTaWduV3JpdGluZwBUZWx1Z3UAWmFuYWJhemFyX1NxdWFyZQAlc0AgJSpwICAlOWQgICVzCgAocmVhZF9mZCA+PiAyNCkgPT0gMCAmJiAod3JpdGVfZmQgPj4gMjQpID09IDAAc2l6ZSAlIGFyZW5hLT5wYWdlc2l6ZSA9PSAwAHB0aHJlYWRfc2lnbWFzayBmYWlsZWQ6ICVkAGYtPmhlYWRlci5hcmVuYSA9PSBhcmVuYQBiAGRlbGV0ZVtdAHBzAHJTAENoZWNrIG5vZGUtPmNvbmNhdCgpLT5sZWZ0ICE9IG51bGxwdHIgZmFpbGVkOiAARmFpbGVkIHRvIGxvY2F0ZSBzdW0gbm9kZQAgZXhjZWVkcyAweGZmACwgY2hpbGQgACwgY2xlbiA9IABlbnRyeVsAVW5sb2NrU2xvdyBpcyBjb25mdXNlZAB3LT53YWl0cC0+Y3Zfd29yZCA9PSBudWxscHRyAE11dGV4IEVucXVldWUgZmFpbHVyZQBsaWJjOgBleHRlcm5hbC9ib3Jpbmdzc2wvc3JjL2NyeXB0by9maXBzbW9kdWxlL2RoL2RoLmMAZXh0ZXJuYWwvYm9yaW5nc3NsL3NyYy9jcnlwdG8vZmlwc21vZHVsZS9yc2EvcnNhX2ltcGwuYwBBRVMtQ0JDIERlY3J5cHRpb24gS0FUAGt5dGhlLnByb3RvLkt6aXBJbmZvLkNvcnB1c0luZm8uTGFuZ3VhZ2VTb3VyY2VzRW50cnkua2V5AE1hcEtleTo6dHlwZSBNYXBLZXkgaXMgbm90IGluaXRpYWxpemVkLiAAa3l0aGUucHJvdG8uQnVpbGREZXRhaWxzLmJ1aWxkX2NvbmZpZwBreXRoZS5wcm90by5jb21tb24uQ29ycHVzUGF0aC5wYXRoAGt5dGhlLnByb3RvLmNvbW1vbi5MaW5rLmRlZmluaXRpb24Ab3V0L3Nvb25nLy5pbnRlcm1lZGlhdGVzL2V4dGVybmFsL2t5dGhlL2N4eF9leHRyYWN0b3IvbGludXhfZ2xpYmNfeDg2XzY0L2dlbi9wcm90by9reXRoZS9wcm90by9jeHgucGIuY2MALS1hbmFseXplfC1DQz98LUV8LUwuKnwtTU0/RHwtTVtNR1BdP3wtU3wtV1thbF0sLip8LWN8LWYobm8tKT9kYXRhLXNlY3Rpb25zfC1mKG5vLSk/ZnVuY3Rpb24tc2VjdGlvbnN8LWYobm8tKT9vbWl0LWZyYW1lLXBvaW50ZXJ8LWYobm8tKT9wcm9maWxlLWFyY3N8LWYobm8tKT9zdGFjay1wcm90ZWN0b3IoLWFsbCk/fC1mKG5vLSk/c3RyaWN0LWFsaWFzaW5nfC1mKG5vLSk/dGVzdC1jb3ZlcmFnZXwtZihuby0pP3Vucm9sbC1sb29wc3wtZnN5bnRheC1vbmx5fC1nLit8LW5vc3RhcnRmaWxlc3wtc3wtc2hhcmVkAFdyb3RlIEZpbGVEYXRhIHdpdGggbWlzbWF0Y2hlZCBkaWdlc3RzOiAAT2JqQwBhdng1MTJlcmludHJpbi5oAC8qPT09LS0tLS0tLS0tLS0tLSBhdng1MTJ2bHZibWkyaW50cmluLmggLSBWQk1JMiBpbnRyaW5zaWNzIC0tLS0tLS0tLS0tLS0tLS0tPT09CiAqCiAqCiAqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCiAqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCiNpZm5kZWYgX19JTU1JTlRSSU5fSAojZXJyb3IgIk5ldmVyIHVzZSA8YXZ4NTEydmx2Ym1pMmludHJpbi5oPiBkaXJlY3RseTsgaW5jbHVkZSA8aW1taW50cmluLmg+IGluc3RlYWQuIgojZW5kaWYKCiNpZm5kZWYgX19BVlg1MTJWTFZCTUkySU5UUklOX0gKI2RlZmluZSBfX0FWWDUxMlZMVkJNSTJJTlRSSU5fSAoKLyogRGVmaW5lIHRoZSBkZWZhdWx0IGF0dHJpYnV0ZXMgZm9yIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlLiAqLwojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oImF2eDUxMnZsLGF2eDUxMnZibWkyIiksIF9fbWluX3ZlY3Rvcl93aWR0aF9fKDEyOCkpKQojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUzI1NiBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oImF2eDUxMnZsLGF2eDUxMnZibWkyIiksIF9fbWluX3ZlY3Rvcl93aWR0aF9fKDI1NikpKQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfY29tcHJlc3NfZXBpMTYoX19tMTI4aSBfX1MsIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0QpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX2NvbXByZXNzaGkxMjhfbWFzayAoKF9fdjhoaSkgX19ELAogICAgICAgICAgICAgIChfX3Y4aGkpIF9fUywKICAgICAgICAgICAgICBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfY29tcHJlc3NfZXBpMTYoX19tbWFzazggX19VLCBfX20xMjhpIF9fRCkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfY29tcHJlc3NoaTEyOF9tYXNrICgoX192OGhpKSBfX0QsCiAgICAgICAgICAgICAgKF9fdjhoaSkgX21tX3NldHplcm9fc2kxMjgoKSwKICAgICAgICAgICAgICBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19jb21wcmVzc19lcGk4KF9fbTEyOGkgX19TLCBfX21tYXNrMTYgX19VLCBfX20xMjhpIF9fRCkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfY29tcHJlc3NxaTEyOF9tYXNrICgoX192MTZxaSkgX19ELAogICAgICAgICAgICAgIChfX3YxNnFpKSBfX1MsCiAgICAgICAgICAgICAgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2NvbXByZXNzX2VwaTgoX19tbWFzazE2IF9fVSwgX19tMTI4aSBfX0QpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX2NvbXByZXNzcWkxMjhfbWFzayAoKF9fdjE2cWkpIF9fRCwKICAgICAgICAgICAgICAoX192MTZxaSkgX21tX3NldHplcm9fc2kxMjgoKSwKICAgICAgICAgICAgICBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19jb21wcmVzc3N0b3JldV9lcGkxNih2b2lkICpfX1AsIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0QpCnsKICBfX2J1aWx0aW5faWEzMl9jb21wcmVzc3N0b3JlaGkxMjhfbWFzayAoKF9fdjhoaSAqKSBfX1AsIChfX3Y4aGkpIF9fRCwKICAgICAgICAgICAgICBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19jb21wcmVzc3N0b3JldV9lcGk4KHZvaWQgKl9fUCwgX19tbWFzazE2IF9fVSwgX19tMTI4aSBfX0QpCnsKICBfX2J1aWx0aW5faWEzMl9jb21wcmVzc3N0b3JlcWkxMjhfbWFzayAoKF9fdjE2cWkgKikgX19QLCAoX192MTZxaSkgX19ELAogICAgICAgICAgICAgIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2V4cGFuZF9lcGkxNihfX20xMjhpIF9fUywgX19tbWFzazggX19VLCBfX20xMjhpIF9fRCkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfZXhwYW5kaGkxMjhfbWFzayAoKF9fdjhoaSkgX19ELAogICAgICAgICAgICAgIChfX3Y4aGkpIF9fUywKICAgICAgICAgICAgICBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfZXhwYW5kX2VwaTE2KF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0QpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX2V4cGFuZGhpMTI4X21hc2sgKChfX3Y4aGkpIF9fRCwKICAgICAgICAgICAgICAoX192OGhpKSBfbW1fc2V0emVyb19zaTEyOCgpLAogICAgICAgICAgICAgIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2V4cGFuZF9lcGk4KF9fbTEyOGkgX19TLCBfX21tYXNrMTYgX19VLCBfX20xMjhpIF9fRCkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfZXhwYW5kcWkxMjhfbWFzayAoKF9fdjE2cWkpIF9fRCwKICAgICAgICAgICAgICAoX192MTZxaSkgX19TLAogICAgICAgICAgICAgIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9leHBhbmRfZXBpOChfX21tYXNrMTYgX19VLCBfX20xMjhpIF9fRCkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfZXhwYW5kcWkxMjhfbWFzayAoKF9fdjE2cWkpIF9fRCwKICAgICAgICAgICAgICAoX192MTZxaSkgX21tX3NldHplcm9fc2kxMjgoKSwKICAgICAgICAgICAgICBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19leHBhbmRsb2FkdV9lcGkxNihfX20xMjhpIF9fUywgX19tbWFzazggX19VLCB2b2lkIGNvbnN0ICpfX1ApCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX2V4cGFuZGxvYWRoaTEyOF9tYXNrICgoY29uc3QgX192OGhpICopX19QLAogICAgICAgICAgICAgIChfX3Y4aGkpIF9fUywKICAgICAgICAgICAgICBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfZXhwYW5kbG9hZHVfZXBpMTYoX19tbWFzazggX19VLCB2b2lkIGNvbnN0ICpfX1ApCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX2V4cGFuZGxvYWRoaTEyOF9tYXNrICgoY29uc3QgX192OGhpICopX19QLAogICAgICAgICAgICAgIChfX3Y4aGkpIF9tbV9zZXR6ZXJvX3NpMTI4KCksCiAgICAgICAgICAgICAgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfZXhwYW5kbG9hZHVfZXBpOChfX20xMjhpIF9fUywgX19tbWFzazE2IF9fVSwgdm9pZCBjb25zdCAqX19QKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9leHBhbmRsb2FkcWkxMjhfbWFzayAoKGNvbnN0IF9fdjE2cWkgKilfX1AsCiAgICAgICAgICAgICAgKF9fdjE2cWkpIF9fUywKICAgICAgICAgICAgICBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfZXhwYW5kbG9hZHVfZXBpOChfX21tYXNrMTYgX19VLCB2b2lkIGNvbnN0ICpfX1ApCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX2V4cGFuZGxvYWRxaTEyOF9tYXNrICgoY29uc3QgX192MTZxaSAqKV9fUCwKICAgICAgICAgICAgICAoX192MTZxaSkgX21tX3NldHplcm9fc2kxMjgoKSwKICAgICAgICAgICAgICBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19jb21wcmVzc19lcGkxNihfX20yNTZpIF9fUywgX19tbWFzazE2IF9fVSwgX19tMjU2aSBfX0QpCnsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX2NvbXByZXNzaGkyNTZfbWFzayAoKF9fdjE2aGkpIF9fRCwKICAgICAgICAgICAgICAoX192MTZoaSkgX19TLAogICAgICAgICAgICAgIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9jb21wcmVzc19lcGkxNihfX21tYXNrMTYgX19VLCBfX20yNTZpIF9fRCkKewogIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfY29tcHJlc3NoaTI1Nl9tYXNrICgoX192MTZoaSkgX19ELAogICAgICAgICAgICAgIChfX3YxNmhpKSBfbW0yNTZfc2V0emVyb19zaTI1NigpLAogICAgICAgICAgICAgIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2NvbXByZXNzX2VwaTgoX19tMjU2aSBfX1MsIF9fbW1hc2szMiBfX1UsIF9fbTI1NmkgX19EKQp7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl9jb21wcmVzc3FpMjU2X21hc2sgKChfX3YzMnFpKSBfX0QsCiAgICAgICAgICAgICAgKF9fdjMycWkpIF9fUywKICAgICAgICAgICAgICBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfY29tcHJlc3NfZXBpOChfX21tYXNrMzIgX19VLCBfX20yNTZpIF9fRCkKewogIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfY29tcHJlc3NxaTI1Nl9tYXNrICgoX192MzJxaSkgX19ELAogICAgICAgICAgICAgIChfX3YzMnFpKSBfbW0yNTZfc2V0emVyb19zaTI1NigpLAogICAgICAgICAgICAgIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2NvbXByZXNzc3RvcmV1X2VwaTE2KHZvaWQgKl9fUCwgX19tbWFzazE2IF9fVSwgX19tMjU2aSBfX0QpCnsKICBfX2J1aWx0aW5faWEzMl9jb21wcmVzc3N0b3JlaGkyNTZfbWFzayAoKF9fdjE2aGkgKikgX19QLCAoX192MTZoaSkgX19ELAogICAgICAgICAgICAgIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2NvbXByZXNzc3RvcmV1X2VwaTgodm9pZCAqX19QLCBfX21tYXNrMzIgX19VLCBfX20yNTZpIF9fRCkKewogIF9fYnVpbHRpbl9pYTMyX2NvbXByZXNzc3RvcmVxaTI1Nl9tYXNrICgoX192MzJxaSAqKSBfX1AsIChfX3YzMnFpKSBfX0QsCiAgICAgICAgICAgICAgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfZXhwYW5kX2VwaTE2KF9fbTI1NmkgX19TLCBfX21tYXNrMTYgX19VLCBfX20yNTZpIF9fRCkKewogIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfZXhwYW5kaGkyNTZfbWFzayAoKF9fdjE2aGkpIF9fRCwKICAgICAgICAgICAgICAoX192MTZoaSkgX19TLAogICAgICAgICAgICAgIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9leHBhbmRfZXBpMTYoX19tbWFzazE2IF9fVSwgX19tMjU2aSBfX0QpCnsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX2V4cGFuZGhpMjU2X21hc2sgKChfX3YxNmhpKSBfX0QsCiAgICAgICAgICAgICAgKF9fdjE2aGkpIF9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCksCiAgICAgICAgICAgICAgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfZXhwYW5kX2VwaTgoX19tMjU2aSBfX1MsIF9fbW1hc2szMiBfX1UsIF9fbTI1NmkgX19EKQp7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl9leHBhbmRxaTI1Nl9tYXNrICgoX192MzJxaSkgX19ELAogICAgICAgICAgICAgIChfX3YzMnFpKSBfX1MsCiAgICAgICAgICAgICAgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2V4cGFuZF9lcGk4KF9fbW1hc2szMiBfX1UsIF9fbTI1NmkgX19EKQp7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl9leHBhbmRxaTI1Nl9tYXNrICgoX192MzJxaSkgX19ELAogICAgICAgICAgICAgIChfX3YzMnFpKSBfbW0yNTZfc2V0emVyb19zaTI1NigpLAogICAgICAgICAgICAgIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2V4cGFuZGxvYWR1X2VwaTE2KF9fbTI1NmkgX19TLCBfX21tYXNrMTYgX19VLCB2b2lkIGNvbnN0ICpfX1ApCnsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX2V4cGFuZGxvYWRoaTI1Nl9tYXNrICgoY29uc3QgX192MTZoaSAqKV9fUCwKICAgICAgICAgICAgICAoX192MTZoaSkgX19TLAogICAgICAgICAgICAgIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9leHBhbmRsb2FkdV9lcGkxNihfX21tYXNrMTYgX19VLCB2b2lkIGNvbnN0ICpfX1ApCnsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX2V4cGFuZGxvYWRoaTI1Nl9tYXNrICgoY29uc3QgX192MTZoaSAqKV9fUCwKICAgICAgICAgICAgICAoX192MTZoaSkgX21tMjU2X3NldHplcm9fc2kyNTYoKSwKICAgICAgICAgICAgICBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19leHBhbmRsb2FkdV9lcGk4KF9fbTI1NmkgX19TLCBfX21tYXNrMzIgX19VLCB2b2lkIGNvbnN0ICpfX1ApCnsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX2V4cGFuZGxvYWRxaTI1Nl9tYXNrICgoY29uc3QgX192MzJxaSAqKV9fUCwKICAgICAgICAgICAgICAoX192MzJxaSkgX19TLAogICAgICAgICAgICAgIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9leHBhbmRsb2FkdV9lcGk4KF9fbW1hc2szMiBfX1UsIHZvaWQgY29uc3QgKl9fUCkKewogIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfZXhwYW5kbG9hZHFpMjU2X21hc2sgKChjb25zdCBfX3YzMnFpICopX19QLAogICAgICAgICAgICAgIChfX3YzMnFpKSBfbW0yNTZfc2V0emVyb19zaTI1NigpLAogICAgICAgICAgICAgIF9fVSk7Cn0KCiNkZWZpbmUgX21tMjU2X3NobGRpX2VwaTY0KEEsIEIsIEkpIFwKICAoKF9fbTI1NmkpX19idWlsdGluX2lhMzJfdnBzaGxkcTI1NigoX192NGRpKShfX20yNTZpKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpKF9fbTI1NmkpKEIpLCAoaW50KShJKSkpCgojZGVmaW5lIF9tbTI1Nl9tYXNrX3NobGRpX2VwaTY0KFMsIFUsIEEsIEIsIEkpIFwKICAoKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8yNTYoKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfc2hsZGlfZXBpNjQoKEEpLCAoQiksIChJKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpKF9fbTI1NmkpKFMpKSkKCiNkZWZpbmUgX21tMjU2X21hc2t6X3NobGRpX2VwaTY0KFUsIEEsIEIsIEkpIFwKICAoKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8yNTYoKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfc2hsZGlfZXBpNjQoKEEpLCAoQiksIChJKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX21tMjU2X3NldHplcm9fc2kyNTYoKSkpCgojZGVmaW5lIF9tbV9zaGxkaV9lcGk2NChBLCBCLCBJKSBcCiAgKChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3Zwc2hsZHExMjgoKF9fdjJkaSkoX19tMTI4aSkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKShfX20xMjhpKShCKSwgKGludCkoSSkpKQoKI2RlZmluZSBfbW1fbWFza19zaGxkaV9lcGk2NChTLCBVLCBBLCBCLCBJKSBcCiAgKChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMTI4KChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfbW1fc2hsZGlfZXBpNjQoKEEpLCAoQiksIChJKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSkoX19tMTI4aSkoUykpKQoKI2RlZmluZSBfbW1fbWFza3pfc2hsZGlfZXBpNjQoVSwgQSwgQiwgSSkgXAogICgoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzEyOCgoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX21tX3NobGRpX2VwaTY0KChBKSwgKEIpLCAoSSkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX21tX3NldHplcm9fc2kxMjgoKSkpCgojZGVmaW5lIF9tbTI1Nl9zaGxkaV9lcGkzMihBLCBCLCBJKSBcCiAgKChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3Zwc2hsZGQyNTYoKF9fdjhzaSkoX19tMjU2aSkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKShfX20yNTZpKShCKSwgKGludCkoSSkpKQoKI2RlZmluZSBfbW0yNTZfbWFza19zaGxkaV9lcGkzMihTLCBVLCBBLCBCLCBJKSBcCiAgKChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMjU2KChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X3NobGRpX2VwaTMyKChBKSwgKEIpLCAoSSkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKShfX20yNTZpKShTKSkpCgojZGVmaW5lIF9tbTI1Nl9tYXNrel9zaGxkaV9lcGkzMihVLCBBLCBCLCBJKSBcCiAgKChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMjU2KChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X3NobGRpX2VwaTMyKChBKSwgKEIpLCAoSSkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpKQoKI2RlZmluZSBfbW1fc2hsZGlfZXBpMzIoQSwgQiwgSSkgXAogICgoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92cHNobGRkMTI4KChfX3Y0c2kpKF9fbTEyOGkpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSkoX19tMTI4aSkoQiksIChpbnQpKEkpKSkKCiNkZWZpbmUgX21tX21hc2tfc2hsZGlfZXBpMzIoUywgVSwgQSwgQiwgSSkgXAogICgoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzEyOCgoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX3NobGRpX2VwaTMyKChBKSwgKEIpLCAoSSkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpKF9fbTEyOGkpKFMpKSkKCiNkZWZpbmUgX21tX21hc2t6X3NobGRpX2VwaTMyKFUsIEEsIEIsIEkpIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8xMjgoKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9zaGxkaV9lcGkzMigoQSksIChCKSwgKEkpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpKQoKI2RlZmluZSBfbW0yNTZfc2hsZGlfZXBpMTYoQSwgQiwgSSkgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl92cHNobGR3MjU2KChfX3YxNmhpKShfX20yNTZpKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKShfX20yNTZpKShCKSwgKGludCkoSSkpKQoKI2RlZmluZSBfbW0yNTZfbWFza19zaGxkaV9lcGkxNihTLCBVLCBBLCBCLCBJKSBcCiAgKChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMjU2KChfX21tYXNrMTYpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKV9tbTI1Nl9zaGxkaV9lcGkxNigoQSksIChCKSwgKEkpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSkoX19tMjU2aSkoUykpKQoKI2RlZmluZSBfbW0yNTZfbWFza3pfc2hsZGlfZXBpMTYoVSwgQSwgQiwgSSkgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzI1NigoX19tbWFzazE2KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfc2hsZGlfZXBpMTYoKEEpLCAoQiksIChJKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX21tMjU2X3NldHplcm9fc2kyNTYoKSkpCgojZGVmaW5lIF9tbV9zaGxkaV9lcGkxNihBLCBCLCBJKSBcCiAgKChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3Zwc2hsZHcxMjgoKF9fdjhoaSkoX19tMTI4aSkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKShfX20xMjhpKShCKSwgKGludCkoSSkpKQoKI2RlZmluZSBfbW1fbWFza19zaGxkaV9lcGkxNihTLCBVLCBBLCBCLCBJKSBcCiAgKChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMTI4KChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfbW1fc2hsZGlfZXBpMTYoKEEpLCAoQiksIChJKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSkoX19tMTI4aSkoUykpKQoKI2RlZmluZSBfbW1fbWFza3pfc2hsZGlfZXBpMTYoVSwgQSwgQiwgSSkgXAogICgoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzEyOCgoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX3NobGRpX2VwaTE2KChBKSwgKEIpLCAoSSkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX3NldHplcm9fc2kxMjgoKSkpCgojZGVmaW5lIF9tbTI1Nl9zaHJkaV9lcGk2NChBLCBCLCBJKSBcCiAgKChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3Zwc2hyZHEyNTYoKF9fdjRkaSkoX19tMjU2aSkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKShfX20yNTZpKShCKSwgKGludCkoSSkpKQoKI2RlZmluZSBfbW0yNTZfbWFza19zaHJkaV9lcGk2NChTLCBVLCBBLCBCLCBJKSBcCiAgKChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMjU2KChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX21tMjU2X3NocmRpX2VwaTY0KChBKSwgKEIpLCAoSSkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKShfX20yNTZpKShTKSkpCgojZGVmaW5lIF9tbTI1Nl9tYXNrel9zaHJkaV9lcGk2NChVLCBBLCBCLCBJKSBcCiAgKChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMjU2KChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX21tMjU2X3NocmRpX2VwaTY0KChBKSwgKEIpLCAoSSkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpKQoKI2RlZmluZSBfbW1fc2hyZGlfZXBpNjQoQSwgQiwgSSkgXAogICgoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92cHNocmRxMTI4KChfX3YyZGkpKF9fbTEyOGkpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSkoX19tMTI4aSkoQiksIChpbnQpKEkpKSkKCiNkZWZpbmUgX21tX21hc2tfc2hyZGlfZXBpNjQoUywgVSwgQSwgQiwgSSkgXAogICgoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzEyOCgoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX21tX3NocmRpX2VwaTY0KChBKSwgKEIpLCAoSSkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpKF9fbTEyOGkpKFMpKSkKCiNkZWZpbmUgX21tX21hc2t6X3NocmRpX2VwaTY0KFUsIEEsIEIsIEkpIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8xMjgoKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9zaHJkaV9lcGk2NCgoQSksIChCKSwgKEkpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpKQoKI2RlZmluZSBfbW0yNTZfc2hyZGlfZXBpMzIoQSwgQiwgSSkgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl92cHNocmRkMjU2KChfX3Y4c2kpKF9fbTI1NmkpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSkoX19tMjU2aSkoQiksIChpbnQpKEkpKSkKCiNkZWZpbmUgX21tMjU2X21hc2tfc2hyZGlfZXBpMzIoUywgVSwgQSwgQiwgSSkgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzI1NigoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9zaHJkaV9lcGkzMigoQSksIChCKSwgKEkpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSkoX19tMjU2aSkoUykpKQoKI2RlZmluZSBfbW0yNTZfbWFza3pfc2hyZGlfZXBpMzIoVSwgQSwgQiwgSSkgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzI1NigoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9zaHJkaV9lcGkzMigoQSksIChCKSwgKEkpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKSkKCiNkZWZpbmUgX21tX3NocmRpX2VwaTMyKEEsIEIsIEkpIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdnBzaHJkZDEyOCgoX192NHNpKShfX20xMjhpKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpKF9fbTEyOGkpKEIpLCAoaW50KShJKSkpCgojZGVmaW5lIF9tbV9tYXNrX3NocmRpX2VwaTMyKFMsIFUsIEEsIEIsIEkpIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8xMjgoKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9zaHJkaV9lcGkzMigoQSksIChCKSwgKEkpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKShfX20xMjhpKShTKSkpCgojZGVmaW5lIF9tbV9tYXNrel9zaHJkaV9lcGkzMihVLCBBLCBCLCBJKSBcCiAgKChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMTI4KChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfbW1fc2hyZGlfZXBpMzIoKEEpLCAoQiksIChJKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfbW1fc2V0emVyb19zaTEyOCgpKSkKCiNkZWZpbmUgX21tMjU2X3NocmRpX2VwaTE2KEEsIEIsIEkpIFwKICAoKF9fbTI1NmkpX19idWlsdGluX2lhMzJfdnBzaHJkdzI1NigoX192MTZoaSkoX19tMjU2aSkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSkoX19tMjU2aSkoQiksIChpbnQpKEkpKSkKCiNkZWZpbmUgX21tMjU2X21hc2tfc2hyZGlfZXBpMTYoUywgVSwgQSwgQiwgSSkgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzI1NigoX19tbWFzazE2KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfc2hyZGlfZXBpMTYoKEEpLCAoQiksIChJKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpKF9fbTI1NmkpKFMpKSkKCiNkZWZpbmUgX21tMjU2X21hc2t6X3NocmRpX2VwaTE2KFUsIEEsIEIsIEkpIFwKICAoKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0d18yNTYoKF9fbW1hc2sxNikoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX21tMjU2X3NocmRpX2VwaTE2KChBKSwgKEIpLCAoSSkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpKQoKI2RlZmluZSBfbW1fc2hyZGlfZXBpMTYoQSwgQiwgSSkgXAogICgoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92cHNocmR3MTI4KChfX3Y4aGkpKF9fbTEyOGkpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSkoX19tMTI4aSkoQiksIChpbnQpKEkpKSkKCiNkZWZpbmUgX21tX21hc2tfc2hyZGlfZXBpMTYoUywgVSwgQSwgQiwgSSkgXAogICgoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzEyOCgoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX3NocmRpX2VwaTE2KChBKSwgKEIpLCAoSSkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpKF9fbTEyOGkpKFMpKSkKCiNkZWZpbmUgX21tX21hc2t6X3NocmRpX2VwaTE2KFUsIEEsIEIsIEkpIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0d18xMjgoKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9tbV9zaHJkaV9lcGkxNigoQSksIChCKSwgKEkpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpKQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X3NobGR2X2VwaTY0KF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQiwgX19tMjU2aSBfX0MpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfdnBzaGxkdnEyNTYoKF9fdjRkaSlfX0EsIChfX3Y0ZGkpX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX3NobGR2X2VwaTY0KF9fbTI1NmkgX19BLCBfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19CLCBfX20yNTZpIF9fQykKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzI1NihfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfc2hsZHZfZXBpNjQoX19BLCBfX0IsIF9fQyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfc2hsZHZfZXBpNjQoX19tbWFzazggX19VLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IsIF9fbTI1NmkgX19DKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMjU2KF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9zaGxkdl9lcGk2NChfX0EsIF9fQiwgX19DKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fc2hsZHZfZXBpNjQoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CLCBfX20xMjhpIF9fQykKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92cHNobGR2cTEyOCgoX192MmRpKV9fQSwgKF9fdjJkaSlfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX19DKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfc2hsZHZfZXBpNjQoX19tMTI4aSBfX0EsIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0IsIF9fbTEyOGkgX19DKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMTI4KF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9zaGxkdl9lcGk2NChfX0EsIF9fQiwgX19DKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9zaGxkdl9lcGk2NChfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQiwgX19tMTI4aSBfX0MpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8xMjgoX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX21tX3NobGR2X2VwaTY0KF9fQSwgX19CLCBfX0MpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX21tX3NldHplcm9fc2kxMjgoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9zaGxkdl9lcGkzMihfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IsIF9fbTI1NmkgX19DKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3Zwc2hsZHZkMjU2KChfX3Y4c2kpX19BLCAoX192OHNpKV9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19zaGxkdl9lcGkzMihfX20yNTZpIF9fQSwgX19tbWFzazggX19VLCBfX20yNTZpIF9fQiwgX19tMjU2aSBfX0MpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8yNTYoX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X3NobGR2X2VwaTMyKF9fQSwgX19CLCBfX0MpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X3NobGR2X2VwaTMyKF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CLCBfX20yNTZpIF9fQykKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzI1NihfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfc2hsZHZfZXBpMzIoX19BLCBfX0IsIF9fQyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX3NobGR2X2VwaTMyKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQiwgX19tMTI4aSBfX0MpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdnBzaGxkdmQxMjgoKF9fdjRzaSlfX0EsIChfX3Y0c2kpX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3NobGR2X2VwaTMyKF9fbTEyOGkgX19BLCBfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19CLCBfX20xMjhpIF9fQykKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzEyOChfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfbW1fc2hsZHZfZXBpMzIoX19BLCBfX0IsIF9fQyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfc2hsZHZfZXBpMzIoX19tbWFzazggX19VLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IsIF9fbTEyOGkgX19DKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMTI4KF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9zaGxkdl9lcGkzMihfX0EsIF9fQiwgX19DKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfc2hsZHZfZXBpMTYoX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CLCBfX20yNTZpIF9fQykKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl92cHNobGR2dzI1NigoX192MTZoaSlfX0EsIChfX3YxNmhpKV9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX19DKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfc2hsZHZfZXBpMTYoX19tMjU2aSBfX0EsIF9fbW1hc2sxNiBfX1UsIF9fbTI1NmkgX19CLCBfX20yNTZpIF9fQykKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzI1NihfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX21tMjU2X3NobGR2X2VwaTE2KF9fQSwgX19CLCBfX0MpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKV9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9zaGxkdl9lcGkxNihfX21tYXNrMTYgX19VLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IsIF9fbTI1NmkgX19DKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMjU2KF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfc2hsZHZfZXBpMTYoX19BLCBfX0IsIF9fQyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX21tMjU2X3NldHplcm9fc2kyNTYoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9zaGxkdl9lcGkxNihfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IsIF9fbTEyOGkgX19DKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3Zwc2hsZHZ3MTI4KChfX3Y4aGkpX19BLCAoX192OGhpKV9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19zaGxkdl9lcGkxNihfX20xMjhpIF9fQSwgX19tbWFzazggX19VLCBfX20xMjhpIF9fQiwgX19tMTI4aSBfX0MpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0d18xMjgoX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX21tX3NobGR2X2VwaTE2KF9fQSwgX19CLCBfX0MpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X3NobGR2X2VwaTE2KF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CLCBfX20xMjhpIF9fQykKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzEyOChfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfbW1fc2hsZHZfZXBpMTYoX19BLCBfX0IsIF9fQyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X3NocmR2X2VwaTY0KF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQiwgX19tMjU2aSBfX0MpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfdnBzaHJkdnEyNTYoKF9fdjRkaSlfX0EsIChfX3Y0ZGkpX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX3NocmR2X2VwaTY0KF9fbTI1NmkgX19BLCBfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19CLCBfX20yNTZpIF9fQykKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzI1NihfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfc2hyZHZfZXBpNjQoX19BLCBfX0IsIF9fQyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfc2hyZHZfZXBpNjQoX19tbWFzazggX19VLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IsIF9fbTI1NmkgX19DKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMjU2KF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9zaHJkdl9lcGk2NChfX0EsIF9fQiwgX19DKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fc2hyZHZfZXBpNjQoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CLCBfX20xMjhpIF9fQykKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92cHNocmR2cTEyOCgoX192MmRpKV9fQSwgKF9fdjJkaSlfX0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX19DKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfc2hyZHZfZXBpNjQoX19tMTI4aSBfX0EsIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0IsIF9fbTEyOGkgX19DKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMTI4KF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9zaHJkdl9lcGk2NChfX0EsIF9fQiwgX19DKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9zaHJkdl9lcGk2NChfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQiwgX19tMTI4aSBfX0MpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8xMjgoX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX21tX3NocmR2X2VwaTY0KF9fQSwgX19CLCBfX0MpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX21tX3NldHplcm9fc2kxMjgoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9zaHJkdl9lcGkzMihfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IsIF9fbTI1NmkgX19DKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3Zwc2hyZHZkMjU2KChfX3Y4c2kpX19BLCAoX192OHNpKV9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19zaHJkdl9lcGkzMihfX20yNTZpIF9fQSwgX19tbWFzazggX19VLCBfX20yNTZpIF9fQiwgX19tMjU2aSBfX0MpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8yNTYoX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X3NocmR2X2VwaTMyKF9fQSwgX19CLCBfX0MpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X3NocmR2X2VwaTMyKF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CLCBfX20yNTZpIF9fQykKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzI1NihfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfc2hyZHZfZXBpMzIoX19BLCBfX0IsIF9fQyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX3NocmR2X2VwaTMyKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQiwgX19tMTI4aSBfX0MpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdnBzaHJkdmQxMjgoKF9fdjRzaSlfX0EsIChfX3Y0c2kpX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3NocmR2X2VwaTMyKF9fbTEyOGkgX19BLCBfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19CLCBfX20xMjhpIF9fQykKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzEyOChfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfbW1fc2hyZHZfZXBpMzIoX19BLCBfX0IsIF9fQyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfc2hyZHZfZXBpMzIoX19tbWFzazggX19VLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IsIF9fbTEyOGkgX19DKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMTI4KF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9zaHJkdl9lcGkzMihfX0EsIF9fQiwgX19DKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfc2hyZHZfZXBpMTYoX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CLCBfX20yNTZpIF9fQykKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl92cHNocmR2dzI1NigoX192MTZoaSlfX0EsIChfX3YxNmhpKV9fQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2aGkpX19DKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfc2hyZHZfZXBpMTYoX19tMjU2aSBfX0EsIF9fbW1hc2sxNiBfX1UsIF9fbTI1NmkgX19CLCBfX20yNTZpIF9fQykKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzI1NihfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfc2hyZHZfZXBpMTYoX19BLCBfX0IsIF9fQyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfc2hyZHZfZXBpMTYoX19tbWFzazE2IF9fVSwgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CLCBfX20yNTZpIF9fQykKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzI1NihfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfc2hyZHZfZXBpMTYoX19BLCBfX0IsIF9fQyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZoaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX3NocmR2X2VwaTE2KF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQiwgX19tMTI4aSBfX0MpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdnBzaHJkdncxMjgoKF9fdjhoaSlfX0EsIChfX3Y4aGkpX19CLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3NocmR2X2VwaTE2KF9fbTEyOGkgX19BLCBfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19CLCBfX20xMjhpIF9fQykKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3R3XzEyOChfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfbW1fc2hyZHZfZXBpMTYoX19BLCBfX0IsIF9fQyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSlfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfc2hyZHZfZXBpMTYoX19tbWFzazggX19VLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IsIF9fbTEyOGkgX19DKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHdfMTI4KF9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9tbV9zaHJkdl9lcGkxNihfX0EsIF9fQiwgX19DKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgoKI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUzEyOAojdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2CgojZW5kaWYKAGF2eHZubmlpbnRyaW4uaABjZXRpbnRyaW4uaABjcmMzMmludHJpbi5oAC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qICAgKGMpIDIwMjAgUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gICAgICAgICAgICovCi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiNpZm5kZWYgSEVYQUdPTl9UWVBFU19ICiNkZWZpbmUgSEVYQUdPTl9UWVBFU19ICgojaW5jbHVkZSA8aGV4YWdvbl9wcm90b3MuaD4KCi8qIEhleGFnb24gbmFtZXMgKi8KI2RlZmluZSBIRVhBR09OX1ZlY3QgSEVYQUdPTl9WZWN0NjQKI2RlZmluZSBIRVhBR09OX1ZfR0VUX0QgSEVYQUdPTl9WNjRfR0VUX0QKI2RlZmluZSBIRVhBR09OX1ZfR0VUX1VEIEhFWEFHT05fVjY0X0dFVF9VRAojZGVmaW5lIEhFWEFHT05fVl9HRVRfVzAgSEVYQUdPTl9WNjRfR0VUX1cwCiNkZWZpbmUgSEVYQUdPTl9WX0dFVF9XMSBIRVhBR09OX1Y2NF9HRVRfVzEKI2RlZmluZSBIRVhBR09OX1ZfR0VUX1VXMCBIRVhBR09OX1Y2NF9HRVRfVVcwCiNkZWZpbmUgSEVYQUdPTl9WX0dFVF9VVzEgSEVYQUdPTl9WNjRfR0VUX1VXMQojZGVmaW5lIEhFWEFHT05fVl9HRVRfSDAgSEVYQUdPTl9WNjRfR0VUX0gwCiNkZWZpbmUgSEVYQUdPTl9WX0dFVF9IMSBIRVhBR09OX1Y2NF9HRVRfSDEKI2RlZmluZSBIRVhBR09OX1ZfR0VUX0gyIEhFWEFHT05fVjY0X0dFVF9IMgojZGVmaW5lIEhFWEFHT05fVl9HRVRfSDMgSEVYQUdPTl9WNjRfR0VUX0gzCiNkZWZpbmUgSEVYQUdPTl9WX0dFVF9VSDAgSEVYQUdPTl9WNjRfR0VUX1VIMAojZGVmaW5lIEhFWEFHT05fVl9HRVRfVUgxIEhFWEFHT05fVjY0X0dFVF9VSDEKI2RlZmluZSBIRVhBR09OX1ZfR0VUX1VIMiBIRVhBR09OX1Y2NF9HRVRfVUgyCiNkZWZpbmUgSEVYQUdPTl9WX0dFVF9VSDMgSEVYQUdPTl9WNjRfR0VUX1VIMwojZGVmaW5lIEhFWEFHT05fVl9HRVRfQjAgSEVYQUdPTl9WNjRfR0VUX0IwCiNkZWZpbmUgSEVYQUdPTl9WX0dFVF9CMSBIRVhBR09OX1Y2NF9HRVRfQjEKI2RlZmluZSBIRVhBR09OX1ZfR0VUX0IyIEhFWEFHT05fVjY0X0dFVF9CMgojZGVmaW5lIEhFWEFHT05fVl9HRVRfQjMgSEVYQUdPTl9WNjRfR0VUX0IzCiNkZWZpbmUgSEVYQUdPTl9WX0dFVF9CNCBIRVhBR09OX1Y2NF9HRVRfQjQKI2RlZmluZSBIRVhBR09OX1ZfR0VUX0I1IEhFWEFHT05fVjY0X0dFVF9CNQojZGVmaW5lIEhFWEFHT05fVl9HRVRfQjYgSEVYQUdPTl9WNjRfR0VUX0I2CiNkZWZpbmUgSEVYQUdPTl9WX0dFVF9CNyBIRVhBR09OX1Y2NF9HRVRfQjcKI2RlZmluZSBIRVhBR09OX1ZfR0VUX1VCMCBIRVhBR09OX1Y2NF9HRVRfVUIwCiNkZWZpbmUgSEVYQUdPTl9WX0dFVF9VQjEgSEVYQUdPTl9WNjRfR0VUX1VCMQojZGVmaW5lIEhFWEFHT05fVl9HRVRfVUIyIEhFWEFHT05fVjY0X0dFVF9VQjIKI2RlZmluZSBIRVhBR09OX1ZfR0VUX1VCMyBIRVhBR09OX1Y2NF9HRVRfVUIzCiNkZWZpbmUgSEVYQUdPTl9WX0dFVF9VQjQgSEVYQUdPTl9WNjRfR0VUX1VCNAojZGVmaW5lIEhFWEFHT05fVl9HRVRfVUI1IEhFWEFHT05fVjY0X0dFVF9VQjUKI2RlZmluZSBIRVhBR09OX1ZfR0VUX1VCNiBIRVhBR09OX1Y2NF9HRVRfVUI2CiNkZWZpbmUgSEVYQUdPTl9WX0dFVF9VQjcgSEVYQUdPTl9WNjRfR0VUX1VCNwojZGVmaW5lIEhFWEFHT05fVl9QVVRfRCBIRVhBR09OX1Y2NF9QVVRfRAojZGVmaW5lIEhFWEFHT05fVl9QVVRfVzAgSEVYQUdPTl9WNjRfUFVUX1cwCiNkZWZpbmUgSEVYQUdPTl9WX1BVVF9XMSBIRVhBR09OX1Y2NF9QVVRfVzEKI2RlZmluZSBIRVhBR09OX1ZfUFVUX0gwIEhFWEFHT05fVjY0X1BVVF9IMAojZGVmaW5lIEhFWEFHT05fVl9QVVRfSDEgSEVYQUdPTl9WNjRfUFVUX0gxCiNkZWZpbmUgSEVYQUdPTl9WX1BVVF9IMiBIRVhBR09OX1Y2NF9QVVRfSDIKI2RlZmluZSBIRVhBR09OX1ZfUFVUX0gzIEhFWEFHT05fVjY0X1BVVF9IMwojZGVmaW5lIEhFWEFHT05fVl9QVVRfQjAgSEVYQUdPTl9WNjRfUFVUX0IwCiNkZWZpbmUgSEVYQUdPTl9WX1BVVF9CMSBIRVhBR09OX1Y2NF9QVVRfQjEKI2RlZmluZSBIRVhBR09OX1ZfUFVUX0IyIEhFWEFHT05fVjY0X1BVVF9CMgojZGVmaW5lIEhFWEFHT05fVl9QVVRfQjMgSEVYQUdPTl9WNjRfUFVUX0IzCiNkZWZpbmUgSEVYQUdPTl9WX1BVVF9CNCBIRVhBR09OX1Y2NF9QVVRfQjQKI2RlZmluZSBIRVhBR09OX1ZfUFVUX0I1IEhFWEFHT05fVjY0X1BVVF9CNQojZGVmaW5lIEhFWEFHT05fVl9QVVRfQjYgSEVYQUdPTl9WNjRfUFVUX0I2CiNkZWZpbmUgSEVYQUdPTl9WX1BVVF9CNyBIRVhBR09OX1Y2NF9QVVRfQjcKI2RlZmluZSBIRVhBR09OX1ZfQ1JFQVRFX0QgSEVYQUdPTl9WNjRfQ1JFQVRFX0QKI2RlZmluZSBIRVhBR09OX1ZfQ1JFQVRFX1cgSEVYQUdPTl9WNjRfQ1JFQVRFX1cKI2RlZmluZSBIRVhBR09OX1ZfQ1JFQVRFX0ggSEVYQUdPTl9WNjRfQ1JFQVRFX0gKI2RlZmluZSBIRVhBR09OX1ZfQ1JFQVRFX0IgSEVYQUdPTl9WNjRfQ1JFQVRFX0IKCiNpZmRlZiBfX2NwbHVzcGx1cwojZGVmaW5lIEhFWEFHT05fVmVjdEMgSEVYQUdPTl9WZWN0NjRDCiNlbmRpZiAvKiBfX2NwbHVzcGx1cyAqLwoKLyogNjQgQml0IFZlY3RvcnMgKi8KCnR5cGVkZWYgbG9uZyBsb25nIF9fYXR0cmlidXRlX18oKF9fbWF5X2FsaWFzX18pKSBIRVhBR09OX1ZlY3Q2NDsKCi8qIEV4dHJhY3QgZG91Ymxld29yZCBtYWNyb3MgKi8KCiNkZWZpbmUgSEVYQUdPTl9WNjRfR0VUX0QodikgKHYpCiNkZWZpbmUgSEVYQUdPTl9WNjRfR0VUX1VEKHYpICgodW5zaWduZWQgbG9uZyBsb25nKSh2KSkKCi8qIEV4dHJhY3Qgd29yZCBtYWNyb3MgKi8KCiNkZWZpbmUgSEVYQUdPTl9WNjRfR0VUX1cwKHYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGxvbmcgbG9uZyBkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGludCB3WzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9IF9IRVhBR09OX1Y2NF9pbnRlcm5hbF91bmlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb24uZCA9ICh2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb24ud1swXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSkKI2RlZmluZSBIRVhBR09OX1Y2NF9HRVRfVzEodikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgbG9uZyBsb25nIGQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgaW50IHdbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1Y2NF9pbnRlcm5hbF91bmlvbi5kID0gKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1Y2NF9pbnRlcm5hbF91bmlvbi53WzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQojZGVmaW5lIEhFWEFHT05fVjY0X0dFVF9VVzAodikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBsb25nIGxvbmcgZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICB1bnNpZ25lZCBpbnQgdXdbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgfSBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLmQgPSAodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLnV3WzBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0pCiNkZWZpbmUgSEVYQUdPTl9WNjRfR0VUX1VXMSh2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGxvbmcgbG9uZyBkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHVuc2lnbmVkIGludCB1d1syXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9IF9IRVhBR09OX1Y2NF9pbnRlcm5hbF91bmlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb24uZCA9ICh2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb24udXdbMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSkKCi8qIEV4dHJhY3QgaGFsZiB3b3JkIG1hY3JvcyAqLwoKI2RlZmluZSBIRVhBR09OX1Y2NF9HRVRfSDAodikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgbG9uZyBsb25nIGQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgc2hvcnQgaFs0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1Y2NF9pbnRlcm5hbF91bmlvbi5kID0gKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1Y2NF9pbnRlcm5hbF91bmlvbi5oWzBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQojZGVmaW5lIEhFWEFHT05fVjY0X0dFVF9IMSh2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBsb25nIGxvbmcgZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBzaG9ydCBoWzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgfSBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLmQgPSAodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLmhbMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0pCiNkZWZpbmUgSEVYQUdPTl9WNjRfR0VUX0gyKHYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGxvbmcgbG9uZyBkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHNob3J0IGhbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9IF9IRVhBR09OX1Y2NF9pbnRlcm5hbF91bmlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb24uZCA9ICh2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb24uaFsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSkKI2RlZmluZSBIRVhBR09OX1Y2NF9HRVRfSDModikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgbG9uZyBsb25nIGQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgc2hvcnQgaFs0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1Y2NF9pbnRlcm5hbF91bmlvbi5kID0gKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1Y2NF9pbnRlcm5hbF91bmlvbi5oWzNdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQojZGVmaW5lIEhFWEFHT05fVjY0X0dFVF9VSDAodikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBsb25nIGxvbmcgZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICB1bnNpZ25lZCBzaG9ydCB1aFs0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgfSBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLmQgPSAodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLnVoWzBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0pCiNkZWZpbmUgSEVYQUdPTl9WNjRfR0VUX1VIMSh2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGxvbmcgbG9uZyBkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHVuc2lnbmVkIHNob3J0IHVoWzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9IF9IRVhBR09OX1Y2NF9pbnRlcm5hbF91bmlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb24uZCA9ICh2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb24udWhbMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSkKI2RlZmluZSBIRVhBR09OX1Y2NF9HRVRfVUgyKHYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgbG9uZyBsb25nIGQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgdW5zaWduZWQgc2hvcnQgdWhbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1Y2NF9pbnRlcm5hbF91bmlvbi5kID0gKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1Y2NF9pbnRlcm5hbF91bmlvbi51aFsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQojZGVmaW5lIEhFWEFHT05fVjY0X0dFVF9VSDModikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBsb25nIGxvbmcgZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICB1bnNpZ25lZCBzaG9ydCB1aFs0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgfSBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLmQgPSAodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLnVoWzNdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0pCgovKiBFeHRyYWN0IGJ5dGUgbWFjcm9zICovCgojZGVmaW5lIEhFWEFHT05fVjY0X0dFVF9CMCh2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBsb25nIGxvbmcgZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBzaWduZWQgY2hhciBiWzhdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgfSBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLmQgPSAodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLmJbMF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0pCiNkZWZpbmUgSEVYQUdPTl9WNjRfR0VUX0IxKHYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGxvbmcgbG9uZyBkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHNpZ25lZCBjaGFyIGJbOF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9IF9IRVhBR09OX1Y2NF9pbnRlcm5hbF91bmlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb24uZCA9ICh2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb24uYlsxXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSkKI2RlZmluZSBIRVhBR09OX1Y2NF9HRVRfQjIodikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgbG9uZyBsb25nIGQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgc2lnbmVkIGNoYXIgYls4XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1Y2NF9pbnRlcm5hbF91bmlvbi5kID0gKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1Y2NF9pbnRlcm5hbF91bmlvbi5iWzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQojZGVmaW5lIEhFWEFHT05fVjY0X0dFVF9CMyh2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBsb25nIGxvbmcgZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBzaWduZWQgY2hhciBiWzhdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgfSBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLmQgPSAodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLmJbM107ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0pCiNkZWZpbmUgSEVYQUdPTl9WNjRfR0VUX0I0KHYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGxvbmcgbG9uZyBkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHNpZ25lZCBjaGFyIGJbOF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9IF9IRVhBR09OX1Y2NF9pbnRlcm5hbF91bmlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb24uZCA9ICh2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb24uYls0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSkKI2RlZmluZSBIRVhBR09OX1Y2NF9HRVRfQjUodikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgbG9uZyBsb25nIGQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgc2lnbmVkIGNoYXIgYls4XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1Y2NF9pbnRlcm5hbF91bmlvbi5kID0gKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1Y2NF9pbnRlcm5hbF91bmlvbi5iWzVdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQojZGVmaW5lIEhFWEFHT05fVjY0X0dFVF9CNih2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBsb25nIGxvbmcgZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBzaWduZWQgY2hhciBiWzhdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgfSBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLmQgPSAodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLmJbNl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0pCiNkZWZpbmUgSEVYQUdPTl9WNjRfR0VUX0I3KHYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGxvbmcgbG9uZyBkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHNpZ25lZCBjaGFyIGJbOF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9IF9IRVhBR09OX1Y2NF9pbnRlcm5hbF91bmlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb24uZCA9ICh2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb24uYls3XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSkKI2RlZmluZSBIRVhBR09OX1Y2NF9HRVRfVUIwKHYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgbG9uZyBsb25nIGQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgdW5zaWduZWQgY2hhciB1Yls4XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1Y2NF9pbnRlcm5hbF91bmlvbi5kID0gKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1Y2NF9pbnRlcm5hbF91bmlvbi51YlswXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQojZGVmaW5lIEhFWEFHT05fVjY0X0dFVF9VQjEodikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBsb25nIGxvbmcgZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICB1bnNpZ25lZCBjaGFyIHViWzhdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgfSBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLmQgPSAodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLnViWzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0pCiNkZWZpbmUgSEVYQUdPTl9WNjRfR0VUX1VCMih2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGxvbmcgbG9uZyBkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHVuc2lnbmVkIGNoYXIgdWJbOF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9IF9IRVhBR09OX1Y2NF9pbnRlcm5hbF91bmlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb24uZCA9ICh2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb24udWJbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSkKI2RlZmluZSBIRVhBR09OX1Y2NF9HRVRfVUIzKHYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgbG9uZyBsb25nIGQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgdW5zaWduZWQgY2hhciB1Yls4XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1Y2NF9pbnRlcm5hbF91bmlvbi5kID0gKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1Y2NF9pbnRlcm5hbF91bmlvbi51YlszXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQojZGVmaW5lIEhFWEFHT05fVjY0X0dFVF9VQjQodikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBsb25nIGxvbmcgZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICB1bnNpZ25lZCBjaGFyIHViWzhdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgfSBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLmQgPSAodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLnViWzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0pCiNkZWZpbmUgSEVYQUdPTl9WNjRfR0VUX1VCNSh2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGxvbmcgbG9uZyBkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHVuc2lnbmVkIGNoYXIgdWJbOF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9IF9IRVhBR09OX1Y2NF9pbnRlcm5hbF91bmlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb24uZCA9ICh2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb24udWJbNV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSkKI2RlZmluZSBIRVhBR09OX1Y2NF9HRVRfVUI2KHYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgbG9uZyBsb25nIGQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgdW5zaWduZWQgY2hhciB1Yls4XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1Y2NF9pbnRlcm5hbF91bmlvbi5kID0gKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1Y2NF9pbnRlcm5hbF91bmlvbi51Yls2XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQojZGVmaW5lIEhFWEFHT05fVjY0X0dFVF9VQjcodikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBsb25nIGxvbmcgZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICB1bnNpZ25lZCBjaGFyIHViWzhdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgfSBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLmQgPSAodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLnViWzddOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0pCgovKiBOT1RFOiBBbGwgc2V0IG1hY3JvcyByZXR1cm4gYSBIRVhBR09OX1ZlY3Q2NCB0eXBlICovCgovKiBTZXQgZG91Ymxld29yZCBtYWNybyAqLwoKI2RlZmluZSBIRVhBR09OX1Y2NF9QVVRfRCh2LCBuZXcpIChuZXcpCgovKiBTZXQgd29yZCBtYWNyb3MgKi8KCiNpZmRlZiBfX2hleGFnb25fXwoKI2RlZmluZSBIRVhBR09OX1Y2NF9QVVRfVzAodiwgbmV3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgbG9uZyBsb25nIGQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgaW50IHdbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1Y2NF9pbnRlcm5hbF91bmlvbi5kID0gKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1Y2NF9pbnRlcm5hbF91bmlvbi53WzBdID0gKG5ldyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1Y2NF9pbnRlcm5hbF91bmlvbi5kOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQojZGVmaW5lIEhFWEFHT05fVjY0X1BVVF9XMSh2LCBuZXcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBsb25nIGxvbmcgZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBpbnQgd1syXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgfSBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLmQgPSAodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLndbMV0gPSAobmV3KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLmQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0pCgojZWxzZSAvKiAhX19oZXhhZ29uX18gKi8KCiNkZWZpbmUgSEVYQUdPTl9WNjRfUFVUX1cwKHYsIG5ldykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKCgodikgJiAweGZmZmZmZmZmMDAwMDAwMDBMTCkgfCAoKEhFWEFHT05fVmVjdDY0KSgodW5zaWduZWQgaW50KShuZXcpKSkpCiNkZWZpbmUgSEVYQUdPTl9WNjRfUFVUX1cxKHYsIG5ldykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKCgodikgJiAweDAwMDAwMDAwZmZmZmZmZmZMTCkgfCAoKChIRVhBR09OX1ZlY3Q2NCkobmV3KSkgPDwgMzJMTCkpCgojZW5kaWYgLyogIV9faGV4YWdvbl9fICovCgovKiBTZXQgaGFsZiB3b3JkIG1hY3JvcyAqLwoKI2lmZGVmIF9faGV4YWdvbl9fCgojZGVmaW5lIEhFWEFHT05fVjY0X1BVVF9IMCh2LCBuZXcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBsb25nIGxvbmcgZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBzaG9ydCBoWzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgfSBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLmQgPSAodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLmhbMF0gPSAobmV3KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLmQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0pCiNkZWZpbmUgSEVYQUdPTl9WNjRfUFVUX0gxKHYsIG5ldykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGxvbmcgbG9uZyBkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHNob3J0IGhbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9IF9IRVhBR09OX1Y2NF9pbnRlcm5hbF91bmlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb24uZCA9ICh2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb24uaFsxXSA9IChuZXcpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb24uZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSkKI2RlZmluZSBIRVhBR09OX1Y2NF9QVVRfSDIodiwgbmV3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgbG9uZyBsb25nIGQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgc2hvcnQgaFs0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1Y2NF9pbnRlcm5hbF91bmlvbi5kID0gKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1Y2NF9pbnRlcm5hbF91bmlvbi5oWzJdID0gKG5ldyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1Y2NF9pbnRlcm5hbF91bmlvbi5kOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQojZGVmaW5lIEhFWEFHT05fVjY0X1BVVF9IMyh2LCBuZXcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBsb25nIGxvbmcgZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBzaG9ydCBoWzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgfSBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLmQgPSAodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLmhbM10gPSAobmV3KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLmQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0pCgojZWxzZSAvKiAhX19oZXhhZ29uX18gKi8KCiNkZWZpbmUgSEVYQUdPTl9WNjRfUFVUX0gwKHYsIG5ldykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKCgodikgJiAweGZmZmZmZmZmZmZmZjAwMDBMTCkgfCAoKEhFWEFHT05fVmVjdDY0KSgodW5zaWduZWQgc2hvcnQpKG5ldykpKSkKI2RlZmluZSBIRVhBR09OX1Y2NF9QVVRfSDEodiwgbmV3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKCh2KSAmIDB4ZmZmZmZmZmYwMDAwZmZmZkxMKSB8ICgoKEhFWEFHT05fVmVjdDY0KSgodW5zaWduZWQgc2hvcnQpKG5ldykpKSA8PCAxNkxMKSkKI2RlZmluZSBIRVhBR09OX1Y2NF9QVVRfSDIodiwgbmV3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKCh2KSAmIDB4ZmZmZjAwMDBmZmZmZmZmZkxMKSB8ICgoKEhFWEFHT05fVmVjdDY0KSgodW5zaWduZWQgc2hvcnQpKG5ldykpKSA8PCAzMkxMKSkKI2RlZmluZSBIRVhBR09OX1Y2NF9QVVRfSDModiwgbmV3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKCh2KSAmIDB4MDAwMGZmZmZmZmZmZmZmZkxMKSB8ICgoKEhFWEFHT05fVmVjdDY0KShuZXcpKSA8PCA0OExMKSkKCiNlbmRpZiAvKiAhX19oZXhhZ29uX18gKi8KCi8qIFNldCBieXRlIG1hY3JvcyAqLwoKI2lmZGVmIF9faGV4YWdvbl9fCgojZGVmaW5lIEhFWEFHT05fVjY0X1BVVF9CMCh2LCBuZXcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBsb25nIGxvbmcgZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBjaGFyIGJbOF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgfSBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLmQgPSAodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLmJbMF0gPSAobmV3KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLmQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0pCiNkZWZpbmUgSEVYQUdPTl9WNjRfUFVUX0IxKHYsIG5ldykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGxvbmcgbG9uZyBkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGNoYXIgYls4XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9IF9IRVhBR09OX1Y2NF9pbnRlcm5hbF91bmlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb24uZCA9ICh2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb24uYlsxXSA9IChuZXcpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb24uZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSkKI2RlZmluZSBIRVhBR09OX1Y2NF9QVVRfQjIodiwgbmV3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgbG9uZyBsb25nIGQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgY2hhciBiWzhdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1Y2NF9pbnRlcm5hbF91bmlvbi5kID0gKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1Y2NF9pbnRlcm5hbF91bmlvbi5iWzJdID0gKG5ldyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1Y2NF9pbnRlcm5hbF91bmlvbi5kOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQojZGVmaW5lIEhFWEFHT05fVjY0X1BVVF9CMyh2LCBuZXcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBsb25nIGxvbmcgZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBjaGFyIGJbOF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgfSBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLmQgPSAodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLmJbM10gPSAobmV3KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLmQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0pCiNkZWZpbmUgSEVYQUdPTl9WNjRfUFVUX0I0KHYsIG5ldykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGxvbmcgbG9uZyBkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGNoYXIgYls4XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9IF9IRVhBR09OX1Y2NF9pbnRlcm5hbF91bmlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb24uZCA9ICh2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb24uYls0XSA9IChuZXcpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb24uZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSkKI2RlZmluZSBIRVhBR09OX1Y2NF9QVVRfQjUodiwgbmV3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgbG9uZyBsb25nIGQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgY2hhciBiWzhdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1Y2NF9pbnRlcm5hbF91bmlvbi5kID0gKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1Y2NF9pbnRlcm5hbF91bmlvbi5iWzVdID0gKG5ldyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1Y2NF9pbnRlcm5hbF91bmlvbi5kOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQojZGVmaW5lIEhFWEFHT05fVjY0X1BVVF9CNih2LCBuZXcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBsb25nIGxvbmcgZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBjaGFyIGJbOF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgfSBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLmQgPSAodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLmJbNl0gPSAobmV3KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLmQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0pCiNkZWZpbmUgSEVYQUdPTl9WNjRfUFVUX0I3KHYsIG5ldykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGxvbmcgbG9uZyBkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGNoYXIgYls4XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9IF9IRVhBR09OX1Y2NF9pbnRlcm5hbF91bmlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb24uZCA9ICh2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb24uYls3XSA9IChuZXcpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb24uZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSkKCiNlbHNlIC8qICFfX2hleGFnb25fXyAqLwoKI2RlZmluZSBIRVhBR09OX1Y2NF9QVVRfQjAodiwgbmV3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKCh2KSAmIDB4ZmZmZmZmZmZmZmZmZmYwMExMKSB8ICgoSEVYQUdPTl9WZWN0NjQpKCh1bnNpZ25lZCBjaGFyKShuZXcpKSkpCiNkZWZpbmUgSEVYQUdPTl9WNjRfUFVUX0IxKHYsIG5ldykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKCgodikgJiAweGZmZmZmZmZmZmZmZjAwZmZMTCkgfCAoKChIRVhBR09OX1ZlY3Q2NCkoKHVuc2lnbmVkIGNoYXIpKG5ldykpKSA8PCA4TEwpKQojZGVmaW5lIEhFWEFHT05fVjY0X1BVVF9CMih2LCBuZXcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoKHYpICYgMHhmZmZmZmZmZmZmMDBmZmZmTEwpIHwgKCgoSEVYQUdPTl9WZWN0NjQpKCh1bnNpZ25lZCBjaGFyKShuZXcpKSkgPDwgMTZMTCkpCiNkZWZpbmUgSEVYQUdPTl9WNjRfUFVUX0IzKHYsIG5ldykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKCgodikgJiAweGZmZmZmZmZmMDBmZmZmZmZMTCkgfCAoKChIRVhBR09OX1ZlY3Q2NCkoKHVuc2lnbmVkIGNoYXIpKG5ldykpKSA8PCAyNExMKSkKI2RlZmluZSBIRVhBR09OX1Y2NF9QVVRfQjQodiwgbmV3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKCh2KSAmIDB4ZmZmZmZmMDBmZmZmZmZmZkxMKSB8ICgoKEhFWEFHT05fVmVjdDY0KSgodW5zaWduZWQgY2hhcikobmV3KSkpIDw8IDMyTEwpKQojZGVmaW5lIEhFWEFHT05fVjY0X1BVVF9CNSh2LCBuZXcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoKHYpICYgMHhmZmZmMDBmZmZmZmZmZmZmTEwpIHwgKCgoSEVYQUdPTl9WZWN0NjQpKCh1bnNpZ25lZCBjaGFyKShuZXcpKSkgPDwgNDBMTCkpCiNkZWZpbmUgSEVYQUdPTl9WNjRfUFVUX0I2KHYsIG5ldykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKCgodikgJiAweGZmMDBmZmZmZmZmZmZmZmZMTCkgfCAoKChIRVhBR09OX1ZlY3Q2NCkoKHVuc2lnbmVkIGNoYXIpKG5ldykpKSA8PCA0OExMKSkKI2RlZmluZSBIRVhBR09OX1Y2NF9QVVRfQjcodiwgbmV3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKCh2KSAmIDB4MDBmZmZmZmZmZmZmZmZmZkxMKSB8ICgoKEhFWEFHT05fVmVjdDY0KShuZXcpKSA8PCA1NkxMKSkKCiNlbmRpZiAvKiAhX19oZXhhZ29uX18gKi8KCi8qIE5PVEU6IEFsbCBjcmVhdGUgbWFjcm9zIHJldHVybiBhIEhFWEFHT05fVmVjdDY0IHR5cGUgKi8KCi8qIENyZWF0ZSBmcm9tIGEgZG91Ymxld29yZCAqLwoKI2RlZmluZSBIRVhBR09OX1Y2NF9DUkVBVEVfRChkKSAoZCkKCi8qIENyZWF0ZSBmcm9tIHdvcmRzICovCgojaWZkZWYgX19oZXhhZ29uX18KCiNkZWZpbmUgSEVYQUdPTl9WNjRfQ1JFQVRFX1codzEsIHcwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGxvbmcgbG9uZyBkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGludCB3WzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9IF9IRVhBR09OX1Y2NF9pbnRlcm5hbF91bmlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb24ud1swXSA9ICh3MCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb24ud1sxXSA9ICh3MSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb24uZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSkKCiNlbHNlIC8qICFfX2hleGFnb25fXyAqLwoKI2RlZmluZSBIRVhBR09OX1Y2NF9DUkVBVEVfVyh3MSwgdzApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKCgoSEVYQUdPTl9WZWN0NjQpKHcxKSkgPDwgMzJMTCkgfCAoKEhFWEFHT05fVmVjdDY0KSgodzApICYgMHhmZmZmZmZmZikpKQoKI2VuZGlmIC8qICFfX2hleGFnb25fXyAqLwoKLyogQ3JlYXRlIGZyb20gaGFsZiB3b3JkcyAqLwoKI2lmZGVmIF9faGV4YWdvbl9fCgojZGVmaW5lIEhFWEFHT05fVjY0X0NSRUFURV9IKGgzLCBoMiwgaDEsIGgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBsb25nIGxvbmcgZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBzaG9ydCBoWzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgfSBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLmhbMF0gPSAoaDApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLmhbMV0gPSAoaDEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLmhbMl0gPSAoaDIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLmhbM10gPSAoaDMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLmQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0pCgojZWxzZSAvKiAhX19oZXhhZ29uX18gKi8KCiNkZWZpbmUgSEVYQUdPTl9WNjRfQ1JFQVRFX0goaDMsIGgyLCBoMSwgaDApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKCgoKEhFWEFHT05fVmVjdDY0KShoMykpIDw8IDQ4TEwpIHwgKCgoSEVYQUdPTl9WZWN0NjQpKChoMikgJiAweGZmZmYpKSA8PCAzMkxMKSB8ICAgICAgICBcCiAgICgoKEhFWEFHT05fVmVjdDY0KSgoaDEpICYgMHhmZmZmKSkgPDwgMTZMTCkgfCAoKEhFWEFHT05fVmVjdDY0KSgoaDApICYgMHhmZmZmKSkpCgojZW5kaWYgLyogIV9faGV4YWdvbl9fICovCgovKiBDcmVhdGUgZnJvbSBieXRlcyAqLwoKI2lmZGVmIF9faGV4YWdvbl9fCgojZGVmaW5lIEhFWEFHT05fVjY0X0NSRUFURV9CKGI3LCBiNiwgYjUsIGI0LCBiMywgYjIsIGIxLCBiMCkgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBsb25nIGxvbmcgZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBjaGFyIGJbOF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgfSBfSEVYQUdPTl9WNjRfaW50ZXJuYWxfdW5pb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLmJbMF0gPSAoYjApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLmJbMV0gPSAoYjEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLmJbMl0gPSAoYjIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLmJbM10gPSAoYjMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLmJbNF0gPSAoYjQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLmJbNV0gPSAoYjUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLmJbNl0gPSAoYjYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLmJbN10gPSAoYjcpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjY0X2ludGVybmFsX3VuaW9uLmQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0pCgojZWxzZSAvKiAhX19oZXhhZ29uX18gKi8KCiNkZWZpbmUgSEVYQUdPTl9WNjRfQ1JFQVRFX0IoYjcsIGI2LCBiNSwgYjQsIGIzLCBiMiwgYjEsIGIwKSAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKCgoKEhFWEFHT05fVmVjdDY0KShiNykpIDw8IDU2TEwpIHwgKCgoSEVYQUdPTl9WZWN0NjQpKChiNikgJiAweGZmKSkgPDwgNDhMTCkgfCAgICAgICAgICBcCiAgICgoKEhFWEFHT05fVmVjdDY0KSgoYjUpICYgMHhmZikpIDw8IDQwTEwpIHwgKCgoSEVYQUdPTl9WZWN0NjQpKChiNCkgJiAweGZmKSkgPDwgMzJMTCkgfCBcCiAgICgoKEhFWEFHT05fVmVjdDY0KSgoYjMpICYgMHhmZikpIDw8IDI0TEwpIHwgKCgoSEVYQUdPTl9WZWN0NjQpKChiMikgJiAweGZmKSkgPDwgMTZMTCkgfCBcCiAgICgoKEhFWEFHT05fVmVjdDY0KSgoYjEpICYgMHhmZikpIDw8IDhMTCkgfCAoKEhFWEFHT05fVmVjdDY0KSgoYjApICYgMHhmZikpKQoKI2VuZGlmIC8qICFfX2hleGFnb25fXyAqLwoKI2lmZGVmIF9fY3BsdXNwbHVzCgpjbGFzcyBIRVhBR09OX1ZlY3Q2NEMgewpwdWJsaWM6CiAgLy8gQ29uc3RydWN0b3JzCiAgSEVYQUdPTl9WZWN0NjRDKGxvbmcgbG9uZyBkID0gMCkgOiBkYXRhKGQpIHt9OwogIEhFWEFHT05fVmVjdDY0QyhpbnQgdzEsIGludCB3MCkgOiBkYXRhKEhFWEFHT05fVjY0X0NSRUFURV9XKHcxLCB3MCkpIHt9OwogIEhFWEFHT05fVmVjdDY0QyhzaG9ydCBoMywgc2hvcnQgaDIsIHNob3J0IGgxLCBzaG9ydCBoMCkKICAgICAgOiBkYXRhKEhFWEFHT05fVjY0X0NSRUFURV9IKGgzLCBoMiwgaDEsIGgwKSkge307CiAgSEVYQUdPTl9WZWN0NjRDKHNpZ25lZCBjaGFyIGI3LCBzaWduZWQgY2hhciBiNiwgc2lnbmVkIGNoYXIgYjUsIHNpZ25lZCBjaGFyIGI0LAogICAgICAgICAgICBzaWduZWQgY2hhciBiMywgc2lnbmVkIGNoYXIgYjIsIHNpZ25lZCBjaGFyIGIxLCBzaWduZWQgY2hhciBiMCkKICAgICAgOiBkYXRhKEhFWEFHT05fVjY0X0NSRUFURV9CKGI3LCBiNiwgYjUsIGI0LCBiMywgYjIsIGIxLCBiMCkpIHt9OwogIEhFWEFHT05fVmVjdDY0Qyhjb25zdCBIRVhBR09OX1ZlY3Q2NEMgJnYpIDogZGF0YSh2LmRhdGEpIHt9OwoKICBIRVhBR09OX1ZlY3Q2NEMgJm9wZXJhdG9yPShjb25zdCBIRVhBR09OX1ZlY3Q2NEMgJnYpIHsKICAgIGRhdGEgPSB2LmRhdGE7CiAgICByZXR1cm4gKnRoaXM7CiAgfTsKCiAgb3BlcmF0b3IgbG9uZyBsb25nKCkgewogICAgcmV0dXJuIGRhdGE7CiAgfTsKCiAgLy8gRXh0cmFjdCBkb3VibGV3b3JkIG1ldGhvZHMKICBsb25nIGxvbmcgRCh2b2lkKSB7CiAgICByZXR1cm4gSEVYQUdPTl9WNjRfR0VUX0QoZGF0YSk7CiAgfTsKICB1bnNpZ25lZCBsb25nIGxvbmcgVUQodm9pZCkgewogICAgcmV0dXJuIEhFWEFHT05fVjY0X0dFVF9VRChkYXRhKTsKICB9OwoKICAvLyBFeHRyYWN0IHdvcmQgbWV0aG9kcwogIGludCBXMCh2b2lkKSB7CiAgICByZXR1cm4gSEVYQUdPTl9WNjRfR0VUX1cwKGRhdGEpOwogIH07CiAgaW50IFcxKHZvaWQpIHsKICAgIHJldHVybiBIRVhBR09OX1Y2NF9HRVRfVzEoZGF0YSk7CiAgfTsKICB1bnNpZ25lZCBpbnQgVVcwKHZvaWQpIHsKICAgIHJldHVybiBIRVhBR09OX1Y2NF9HRVRfVVcwKGRhdGEpOwogIH07CiAgdW5zaWduZWQgaW50IFVXMSh2b2lkKSB7CiAgICByZXR1cm4gSEVYQUdPTl9WNjRfR0VUX1VXMShkYXRhKTsKICB9OwoKICAvLyBFeHRyYWN0IGhhbGYgd29yZCBtZXRob2RzCiAgc2hvcnQgSDAodm9pZCkgewogICAgcmV0dXJuIEhFWEFHT05fVjY0X0dFVF9IMChkYXRhKTsKICB9OwogIHNob3J0IEgxKHZvaWQpIHsKICAgIHJldHVybiBIRVhBR09OX1Y2NF9HRVRfSDEoZGF0YSk7CiAgfTsKICBzaG9ydCBIMih2b2lkKSB7CiAgICByZXR1cm4gSEVYQUdPTl9WNjRfR0VUX0gyKGRhdGEpOwogIH07CiAgc2hvcnQgSDModm9pZCkgewogICAgcmV0dXJuIEhFWEFHT05fVjY0X0dFVF9IMyhkYXRhKTsKICB9OwogIHVuc2lnbmVkIHNob3J0IFVIMCh2b2lkKSB7CiAgICByZXR1cm4gSEVYQUdPTl9WNjRfR0VUX1VIMChkYXRhKTsKICB9OwogIHVuc2lnbmVkIHNob3J0IFVIMSh2b2lkKSB7CiAgICByZXR1cm4gSEVYQUdPTl9WNjRfR0VUX1VIMShkYXRhKTsKICB9OwogIHVuc2lnbmVkIHNob3J0IFVIMih2b2lkKSB7CiAgICByZXR1cm4gSEVYQUdPTl9WNjRfR0VUX1VIMihkYXRhKTsKICB9OwogIHVuc2lnbmVkIHNob3J0IFVIMyh2b2lkKSB7CiAgICByZXR1cm4gSEVYQUdPTl9WNjRfR0VUX1VIMyhkYXRhKTsKICB9OwoKICAvLyBFeHRyYWN0IGJ5dGUgbWV0aG9kcwogIHNpZ25lZCBjaGFyIEIwKHZvaWQpIHsKICAgIHJldHVybiBIRVhBR09OX1Y2NF9HRVRfQjAoZGF0YSk7CiAgfTsKICBzaWduZWQgY2hhciBCMSh2b2lkKSB7CiAgICByZXR1cm4gSEVYQUdPTl9WNjRfR0VUX0IxKGRhdGEpOwogIH07CiAgc2lnbmVkIGNoYXIgQjIodm9pZCkgewogICAgcmV0dXJuIEhFWEFHT05fVjY0X0dFVF9CMihkYXRhKTsKICB9OwogIHNpZ25lZCBjaGFyIEIzKHZvaWQpIHsKICAgIHJldHVybiBIRVhBR09OX1Y2NF9HRVRfQjMoZGF0YSk7CiAgfTsKICBzaWduZWQgY2hhciBCNCh2b2lkKSB7CiAgICByZXR1cm4gSEVYQUdPTl9WNjRfR0VUX0I0KGRhdGEpOwogIH07CiAgc2lnbmVkIGNoYXIgQjUodm9pZCkgewogICAgcmV0dXJuIEhFWEFHT05fVjY0X0dFVF9CNShkYXRhKTsKICB9OwogIHNpZ25lZCBjaGFyIEI2KHZvaWQpIHsKICAgIHJldHVybiBIRVhBR09OX1Y2NF9HRVRfQjYoZGF0YSk7CiAgfTsKICBzaWduZWQgY2hhciBCNyh2b2lkKSB7CiAgICByZXR1cm4gSEVYQUdPTl9WNjRfR0VUX0I3KGRhdGEpOwogIH07CiAgdW5zaWduZWQgY2hhciBVQjAodm9pZCkgewogICAgcmV0dXJuIEhFWEFHT05fVjY0X0dFVF9VQjAoZGF0YSk7CiAgfTsKICB1bnNpZ25lZCBjaGFyIFVCMSh2b2lkKSB7CiAgICByZXR1cm4gSEVYQUdPTl9WNjRfR0VUX1VCMShkYXRhKTsKICB9OwogIHVuc2lnbmVkIGNoYXIgVUIyKHZvaWQpIHsKICAgIHJldHVybiBIRVhBR09OX1Y2NF9HRVRfVUIyKGRhdGEpOwogIH07CiAgdW5zaWduZWQgY2hhciBVQjModm9pZCkgewogICAgcmV0dXJuIEhFWEFHT05fVjY0X0dFVF9VQjMoZGF0YSk7CiAgfTsKICB1bnNpZ25lZCBjaGFyIFVCNCh2b2lkKSB7CiAgICByZXR1cm4gSEVYQUdPTl9WNjRfR0VUX1VCNChkYXRhKTsKICB9OwogIHVuc2lnbmVkIGNoYXIgVUI1KHZvaWQpIHsKICAgIHJldHVybiBIRVhBR09OX1Y2NF9HRVRfVUI1KGRhdGEpOwogIH07CiAgdW5zaWduZWQgY2hhciBVQjYodm9pZCkgewogICAgcmV0dXJuIEhFWEFHT05fVjY0X0dFVF9VQjYoZGF0YSk7CiAgfTsKICB1bnNpZ25lZCBjaGFyIFVCNyh2b2lkKSB7CiAgICByZXR1cm4gSEVYQUdPTl9WNjRfR0VUX1VCNyhkYXRhKTsKICB9OwoKICAvLyBOT1RFOiBBbGwgc2V0IG1ldGhvZHMgcmV0dXJuIGEgSEVYQUdPTl9WZWN0NjRDIHR5cGUKCiAgLy8gU2V0IGRvdWJsZXdvcmQgbWV0aG9kCiAgSEVYQUdPTl9WZWN0NjRDIEQobG9uZyBsb25nIGQpIHsKICAgIHJldHVybiBIRVhBR09OX1ZlY3Q2NEMoSEVYQUdPTl9WNjRfUFVUX0QoZGF0YSwgZCkpOwogIH07CgogIC8vIFNldCB3b3JkIG1ldGhvZHMKICBIRVhBR09OX1ZlY3Q2NEMgVzAoaW50IHcpIHsKICAgIHJldHVybiBIRVhBR09OX1ZlY3Q2NEMoSEVYQUdPTl9WNjRfUFVUX1cwKGRhdGEsIHcpKTsKICB9OwogIEhFWEFHT05fVmVjdDY0QyBXMShpbnQgdykgewogICAgcmV0dXJuIEhFWEFHT05fVmVjdDY0QyhIRVhBR09OX1Y2NF9QVVRfVzEoZGF0YSwgdykpOwogIH07CgogIC8vIFNldCBoYWxmIHdvcmQgbWV0aG9kcwogIEhFWEFHT05fVmVjdDY0QyBIMChzaG9ydCBoKSB7CiAgICByZXR1cm4gSEVYQUdPTl9WZWN0NjRDKEhFWEFHT05fVjY0X1BVVF9IMChkYXRhLCBoKSk7CiAgfTsKICBIRVhBR09OX1ZlY3Q2NEMgSDEoc2hvcnQgaCkgewogICAgcmV0dXJuIEhFWEFHT05fVmVjdDY0QyhIRVhBR09OX1Y2NF9QVVRfSDEoZGF0YSwgaCkpOwogIH07CiAgSEVYQUdPTl9WZWN0NjRDIEgyKHNob3J0IGgpIHsKICAgIHJldHVybiBIRVhBR09OX1ZlY3Q2NEMoSEVYQUdPTl9WNjRfUFVUX0gyKGRhdGEsIGgpKTsKICB9OwogIEhFWEFHT05fVmVjdDY0QyBIMyhzaG9ydCBoKSB7CiAgICByZXR1cm4gSEVYQUdPTl9WZWN0NjRDKEhFWEFHT05fVjY0X1BVVF9IMyhkYXRhLCBoKSk7CiAgfTsKCiAgLy8gU2V0IGJ5dGUgbWV0aG9kcwogIEhFWEFHT05fVmVjdDY0QyBCMChzaWduZWQgY2hhciBiKSB7CiAgICByZXR1cm4gSEVYQUdPTl9WZWN0NjRDKEhFWEFHT05fVjY0X1BVVF9CMChkYXRhLCBiKSk7CiAgfTsKICBIRVhBR09OX1ZlY3Q2NEMgQjEoc2lnbmVkIGNoYXIgYikgewogICAgcmV0dXJuIEhFWEFHT05fVmVjdDY0QyhIRVhBR09OX1Y2NF9QVVRfQjEoZGF0YSwgYikpOwogIH07CiAgSEVYQUdPTl9WZWN0NjRDIEIyKHNpZ25lZCBjaGFyIGIpIHsKICAgIHJldHVybiBIRVhBR09OX1ZlY3Q2NEMoSEVYQUdPTl9WNjRfUFVUX0IyKGRhdGEsIGIpKTsKICB9OwogIEhFWEFHT05fVmVjdDY0QyBCMyhzaWduZWQgY2hhciBiKSB7CiAgICByZXR1cm4gSEVYQUdPTl9WZWN0NjRDKEhFWEFHT05fVjY0X1BVVF9CMyhkYXRhLCBiKSk7CiAgfTsKICBIRVhBR09OX1ZlY3Q2NEMgQjQoc2lnbmVkIGNoYXIgYikgewogICAgcmV0dXJuIEhFWEFHT05fVmVjdDY0QyhIRVhBR09OX1Y2NF9QVVRfQjQoZGF0YSwgYikpOwogIH07CiAgSEVYQUdPTl9WZWN0NjRDIEI1KHNpZ25lZCBjaGFyIGIpIHsKICAgIHJldHVybiBIRVhBR09OX1ZlY3Q2NEMoSEVYQUdPTl9WNjRfUFVUX0I1KGRhdGEsIGIpKTsKICB9OwogIEhFWEFHT05fVmVjdDY0QyBCNihzaWduZWQgY2hhciBiKSB7CiAgICByZXR1cm4gSEVYQUdPTl9WZWN0NjRDKEhFWEFHT05fVjY0X1BVVF9CNihkYXRhLCBiKSk7CiAgfTsKICBIRVhBR09OX1ZlY3Q2NEMgQjcoc2lnbmVkIGNoYXIgYikgewogICAgcmV0dXJuIEhFWEFHT05fVmVjdDY0QyhIRVhBR09OX1Y2NF9QVVRfQjcoZGF0YSwgYikpOwogIH07Cgpwcml2YXRlOgogIGxvbmcgbG9uZyBkYXRhOwp9OwoKI2VuZGlmIC8qIF9fY3BsdXNwbHVzICovCgovKiAzMiBCaXQgVmVjdG9ycyAqLwoKdHlwZWRlZiBpbnQgSEVYQUdPTl9WZWN0MzI7CgovKiBFeHRyYWN0IHdvcmQgbWFjcm9zICovCgojZGVmaW5lIEhFWEFHT05fVjMyX0dFVF9XKHYpICh2KQojZGVmaW5lIEhFWEFHT05fVjMyX0dFVF9VVyh2KSAoKHVuc2lnbmVkIGludCkodikpCgovKiBFeHRyYWN0IGhhbGYgd29yZCBtYWNyb3MgKi8KCiNkZWZpbmUgSEVYQUdPTl9WMzJfR0VUX0gwKHYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGludCB3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHNob3J0IGhbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9IF9IRVhBR09OX1YzMl9pbnRlcm5hbF91bmlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WMzJfaW50ZXJuYWxfdW5pb24udyA9ICh2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WMzJfaW50ZXJuYWxfdW5pb24uaFswXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSkKI2RlZmluZSBIRVhBR09OX1YzMl9HRVRfSDEodikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgaW50IHc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgc2hvcnQgaFsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX0hFWEFHT05fVjMyX2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1YzMl9pbnRlcm5hbF91bmlvbi53ID0gKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1YzMl9pbnRlcm5hbF91bmlvbi5oWzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQojZGVmaW5lIEhFWEFHT05fVjMyX0dFVF9VSDAodikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBpbnQgdzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICB1bnNpZ25lZCBzaG9ydCB1aFsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgfSBfSEVYQUdPTl9WMzJfaW50ZXJuYWxfdW5pb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjMyX2ludGVybmFsX3VuaW9uLncgPSAodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjMyX2ludGVybmFsX3VuaW9uLnVoWzBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0pCiNkZWZpbmUgSEVYQUdPTl9WMzJfR0VUX1VIMSh2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGludCB3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHVuc2lnbmVkIHNob3J0IHVoWzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9IF9IRVhBR09OX1YzMl9pbnRlcm5hbF91bmlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WMzJfaW50ZXJuYWxfdW5pb24udyA9ICh2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WMzJfaW50ZXJuYWxfdW5pb24udWhbMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSkKCi8qIEV4dHJhY3QgYnl0ZSBtYWNyb3MgKi8KCiNkZWZpbmUgSEVYQUdPTl9WMzJfR0VUX0IwKHYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGludCB3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHNpZ25lZCBjaGFyIGJbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9IF9IRVhBR09OX1YzMl9pbnRlcm5hbF91bmlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WMzJfaW50ZXJuYWxfdW5pb24udyA9ICh2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WMzJfaW50ZXJuYWxfdW5pb24uYlswXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSkKI2RlZmluZSBIRVhBR09OX1YzMl9HRVRfQjEodikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgaW50IHc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgc2lnbmVkIGNoYXIgYls0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX0hFWEFHT05fVjMyX2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1YzMl9pbnRlcm5hbF91bmlvbi53ID0gKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1YzMl9pbnRlcm5hbF91bmlvbi5iWzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQojZGVmaW5lIEhFWEFHT05fVjMyX0dFVF9CMih2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBpbnQgdzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBzaWduZWQgY2hhciBiWzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgfSBfSEVYQUdPTl9WMzJfaW50ZXJuYWxfdW5pb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjMyX2ludGVybmFsX3VuaW9uLncgPSAodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjMyX2ludGVybmFsX3VuaW9uLmJbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0pCiNkZWZpbmUgSEVYQUdPTl9WMzJfR0VUX0IzKHYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGludCB3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHNpZ25lZCBjaGFyIGJbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9IF9IRVhBR09OX1YzMl9pbnRlcm5hbF91bmlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WMzJfaW50ZXJuYWxfdW5pb24udyA9ICh2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WMzJfaW50ZXJuYWxfdW5pb24uYlszXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSkKI2RlZmluZSBIRVhBR09OX1YzMl9HRVRfVUIwKHYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgaW50IHc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgdW5zaWduZWQgY2hhciB1Yls0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX0hFWEFHT05fVjMyX2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1YzMl9pbnRlcm5hbF91bmlvbi53ID0gKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1YzMl9pbnRlcm5hbF91bmlvbi51YlswXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQojZGVmaW5lIEhFWEFHT05fVjMyX0dFVF9VQjEodikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBpbnQgdzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICB1bnNpZ25lZCBjaGFyIHViWzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgfSBfSEVYQUdPTl9WMzJfaW50ZXJuYWxfdW5pb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjMyX2ludGVybmFsX3VuaW9uLncgPSAodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjMyX2ludGVybmFsX3VuaW9uLnViWzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0pCiNkZWZpbmUgSEVYQUdPTl9WMzJfR0VUX1VCMih2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGludCB3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHVuc2lnbmVkIGNoYXIgdWJbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9IF9IRVhBR09OX1YzMl9pbnRlcm5hbF91bmlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WMzJfaW50ZXJuYWxfdW5pb24udyA9ICh2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WMzJfaW50ZXJuYWxfdW5pb24udWJbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSkKI2RlZmluZSBIRVhBR09OX1YzMl9HRVRfVUIzKHYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgaW50IHc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgdW5zaWduZWQgY2hhciB1Yls0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX0hFWEFHT05fVjMyX2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1YzMl9pbnRlcm5hbF91bmlvbi53ID0gKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1YzMl9pbnRlcm5hbF91bmlvbi51YlszXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQoKLyogTk9URTogQWxsIHNldCBtYWNyb3MgcmV0dXJuIGEgSEVYQUdPTl9WZWN0MzIgdHlwZSAqLwoKLyogU2V0IHdvcmQgbWFjcm8gKi8KCiNkZWZpbmUgSEVYQUdPTl9WMzJfUFVUX1codiwgbmV3KSAobmV3KQoKLyogU2V0IGhhbGYgd29yZCBtYWNyb3MgKi8KCiNpZmRlZiBfX2hleGFnb25fXwoKI2RlZmluZSBIRVhBR09OX1YzMl9QVVRfSDAodiwgbmV3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgaW50IHc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgc2hvcnQgaFsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX0hFWEFHT05fVjMyX2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1YzMl9pbnRlcm5hbF91bmlvbi53ID0gKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1YzMl9pbnRlcm5hbF91bmlvbi5oWzBdID0gKG5ldyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1YzMl9pbnRlcm5hbF91bmlvbi53OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQojZGVmaW5lIEhFWEFHT05fVjMyX1BVVF9IMSh2LCBuZXcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBpbnQgdzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBzaG9ydCBoWzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgfSBfSEVYQUdPTl9WMzJfaW50ZXJuYWxfdW5pb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjMyX2ludGVybmFsX3VuaW9uLncgPSAodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjMyX2ludGVybmFsX3VuaW9uLmhbMV0gPSAobmV3KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjMyX2ludGVybmFsX3VuaW9uLnc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0pCgojZWxzZSAvKiAhX19oZXhhZ29uX18gKi8KCiNkZWZpbmUgSEVYQUdPTl9WMzJfUFVUX0gwKHYsIG5ldykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKCgodikgJiAweGZmZmYwMDAwKSB8ICgoSEVYQUdPTl9WZWN0MzIpKCh1bnNpZ25lZCBzaG9ydCkobmV3KSkpKQojZGVmaW5lIEhFWEFHT05fVjMyX1BVVF9IMSh2LCBuZXcpICgoKHYpICYgMHgwMDAwZmZmZikgfCAoKChIRVhBR09OX1ZlY3QzMikobmV3KSkgPDwgMTYpKQoKI2VuZGlmIC8qICFfX2hleGFnb25fXyAqLwoKLyogU2V0IGJ5dGUgbWFjcm9zICovCgojaWZkZWYgX19oZXhhZ29uX18KCiNkZWZpbmUgSEVYQUdPTl9WMzJfUFVUX0IwKHYsIG5ldykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGludCB3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGNoYXIgYls0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9IF9IRVhBR09OX1YzMl9pbnRlcm5hbF91bmlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WMzJfaW50ZXJuYWxfdW5pb24udyA9ICh2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WMzJfaW50ZXJuYWxfdW5pb24uYlswXSA9IChuZXcpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WMzJfaW50ZXJuYWxfdW5pb24udzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSkKI2RlZmluZSBIRVhBR09OX1YzMl9QVVRfQjEodiwgbmV3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgaW50IHc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgY2hhciBiWzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX0hFWEFHT05fVjMyX2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1YzMl9pbnRlcm5hbF91bmlvbi53ID0gKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1YzMl9pbnRlcm5hbF91bmlvbi5iWzFdID0gKG5ldyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1YzMl9pbnRlcm5hbF91bmlvbi53OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQojZGVmaW5lIEhFWEFHT05fVjMyX1BVVF9CMih2LCBuZXcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBpbnQgdzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBjaGFyIGJbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgfSBfSEVYQUdPTl9WMzJfaW50ZXJuYWxfdW5pb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjMyX2ludGVybmFsX3VuaW9uLncgPSAodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjMyX2ludGVybmFsX3VuaW9uLmJbMl0gPSAobmV3KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fVjMyX2ludGVybmFsX3VuaW9uLnc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0pCiNkZWZpbmUgSEVYQUdPTl9WMzJfUFVUX0IzKHYsIG5ldykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGludCB3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGNoYXIgYls0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9IF9IRVhBR09OX1YzMl9pbnRlcm5hbF91bmlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WMzJfaW50ZXJuYWxfdW5pb24udyA9ICh2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WMzJfaW50ZXJuYWxfdW5pb24uYlszXSA9IChuZXcpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WMzJfaW50ZXJuYWxfdW5pb24udzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSkKCiNlbHNlIC8qICFfX2hleGFnb25fXyAqLwoKI2RlZmluZSBIRVhBR09OX1YzMl9QVVRfQjAodiwgbmV3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKCh2KSAmIDB4ZmZmZmZmMDApIHwgKChIRVhBR09OX1ZlY3QzMikoKHVuc2lnbmVkIGNoYXIpKG5ldykpKSkKI2RlZmluZSBIRVhBR09OX1YzMl9QVVRfQjEodiwgbmV3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKCh2KSAmIDB4ZmZmZjAwZmYpIHwgKCgoSEVYQUdPTl9WZWN0MzIpKCh1bnNpZ25lZCBjaGFyKShuZXcpKSkgPDwgOCkpCiNkZWZpbmUgSEVYQUdPTl9WMzJfUFVUX0IyKHYsIG5ldykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKCgodikgJiAweGZmMDBmZmZmKSB8ICgoKEhFWEFHT05fVmVjdDMyKSgodW5zaWduZWQgY2hhcikobmV3KSkpIDw8IDE2KSkKI2RlZmluZSBIRVhBR09OX1YzMl9QVVRfQjModiwgbmV3KSAoKCh2KSAmIDB4MDBmZmZmZmYpIHwgKCgoSEVYQUdPTl9WZWN0MzIpKG5ldykpIDw8IDI0KSkKCiNlbmRpZiAvKiAhX19oZXhhZ29uX18gKi8KCi8qIE5PVEU6IEFsbCBjcmVhdGUgbWFjcm9zIHJldHVybiBhIEhFWEFHT05fVmVjdDMyIHR5cGUgKi8KCi8qIENyZWF0ZSBmcm9tIGEgd29yZCAqLwoKI2RlZmluZSBIRVhBR09OX1YzMl9DUkVBVEVfVyh3KSAodykKCi8qIENyZWF0ZSBmcm9tIGhhbGYgd29yZHMgKi8KCiNpZmRlZiBfX2hleGFnb25fXwoKI2RlZmluZSBIRVhBR09OX1YzMl9DUkVBVEVfSChoMSwgaDApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgbG9uZyBsb25nIGQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgc2hvcnQgaFsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX0hFWEFHT05fVjMyX2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1YzMl9pbnRlcm5hbF91bmlvbi5oWzBdID0gKGgwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1YzMl9pbnRlcm5hbF91bmlvbi5oWzFdID0gKGgxKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX1YzMl9pbnRlcm5hbF91bmlvbi5kOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQoKI2Vsc2UgLyogIV9faGV4YWdvbl9fICovCgojZGVmaW5lIEhFWEFHT05fVjMyX0NSRUFURV9IKGgxLCBoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoKChIRVhBR09OX1ZlY3QzMikoaDEpKSA8PCAxNikgfCAoKEhFWEFHT05fVmVjdDMyKSgoaDApICYgMHhmZmZmKSkpCgojZW5kaWYgLyogIV9faGV4YWdvbl9fICovCgovKiBDcmVhdGUgZnJvbSBieXRlcyAqLwojaWZkZWYgX19oZXhhZ29uX18KCiNkZWZpbmUgSEVYQUdPTl9WMzJfQ1JFQVRFX0IoYjMsIGIyLCBiMSwgYjApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGxvbmcgbG9uZyBkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGNoYXIgYls0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9IF9IRVhBR09OX1YzMl9pbnRlcm5hbF91bmlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WMzJfaW50ZXJuYWxfdW5pb24uYlswXSA9IChiMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WMzJfaW50ZXJuYWxfdW5pb24uYlsxXSA9IChiMSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WMzJfaW50ZXJuYWxfdW5pb24uYlsyXSA9IChiMik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WMzJfaW50ZXJuYWxfdW5pb24uYlszXSA9IChiMyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9WMzJfaW50ZXJuYWxfdW5pb24uZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSkKCiNlbHNlIC8qICFfX2hleGFnb25fXyAqLwoKI2RlZmluZSBIRVhBR09OX1YzMl9DUkVBVEVfQihiMywgYjIsIGIxLCBiMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKCgoSEVYQUdPTl9WZWN0MzIpKGIzKSkgPDwgMjQpIHwgKCgoSEVYQUdPTl9WZWN0MzIpKChiMikgJiAweGZmKSkgPDwgMTYpIHwgICAgICAgICAgICAgIFwKICAgKCgoSEVYQUdPTl9WZWN0MzIpKChiMSkgJiAweGZmKSkgPDwgOCkgfCAoKEhFWEFHT05fVmVjdDMyKSgoYjApICYgMHhmZikpKQoKI2VuZGlmIC8qICFfX2hleGFnb25fXyAqLwoKI2lmZGVmIF9fY3BsdXNwbHVzCgpjbGFzcyBIRVhBR09OX1ZlY3QzMkMgewpwdWJsaWM6CiAgLy8gQ29uc3RydWN0b3JzCiAgSEVYQUdPTl9WZWN0MzJDKGludCB3ID0gMCkgOiBkYXRhKHcpIHt9OwogIEhFWEFHT05fVmVjdDMyQyhzaG9ydCBoMSwgc2hvcnQgaDApIDogZGF0YShIRVhBR09OX1YzMl9DUkVBVEVfSChoMSwgaDApKSB7fTsKICBIRVhBR09OX1ZlY3QzMkMoc2lnbmVkIGNoYXIgYjMsIHNpZ25lZCBjaGFyIGIyLCBzaWduZWQgY2hhciBiMSwgc2lnbmVkIGNoYXIgYjApCiAgICAgIDogZGF0YShIRVhBR09OX1YzMl9DUkVBVEVfQihiMywgYjIsIGIxLCBiMCkpIHt9OwogIEhFWEFHT05fVmVjdDMyQyhjb25zdCBIRVhBR09OX1ZlY3QzMkMgJnYpIDogZGF0YSh2LmRhdGEpIHt9OwoKICBIRVhBR09OX1ZlY3QzMkMgJm9wZXJhdG9yPShjb25zdCBIRVhBR09OX1ZlY3QzMkMgJnYpIHsKICAgIGRhdGEgPSB2LmRhdGE7CiAgICByZXR1cm4gKnRoaXM7CiAgfTsKCiAgb3BlcmF0b3IgaW50KCkgewogICAgcmV0dXJuIGRhdGE7CiAgfTsKCiAgLy8gRXh0cmFjdCB3b3JkIG1ldGhvZHMKICBpbnQgVyh2b2lkKSB7CiAgICByZXR1cm4gSEVYQUdPTl9WMzJfR0VUX1coZGF0YSk7CiAgfTsKICB1bnNpZ25lZCBpbnQgVVcodm9pZCkgewogICAgcmV0dXJuIEhFWEFHT05fVjMyX0dFVF9VVyhkYXRhKTsKICB9OwoKICAvLyBFeHRyYWN0IGhhbGYgd29yZCBtZXRob2RzCiAgc2hvcnQgSDAodm9pZCkgewogICAgcmV0dXJuIEhFWEFHT05fVjMyX0dFVF9IMChkYXRhKTsKICB9OwogIHNob3J0IEgxKHZvaWQpIHsKICAgIHJldHVybiBIRVhBR09OX1YzMl9HRVRfSDEoZGF0YSk7CiAgfTsKICB1bnNpZ25lZCBzaG9ydCBVSDAodm9pZCkgewogICAgcmV0dXJuIEhFWEFHT05fVjMyX0dFVF9VSDAoZGF0YSk7CiAgfTsKICB1bnNpZ25lZCBzaG9ydCBVSDEodm9pZCkgewogICAgcmV0dXJuIEhFWEFHT05fVjMyX0dFVF9VSDEoZGF0YSk7CiAgfTsKCiAgLy8gRXh0cmFjdCBieXRlIG1ldGhvZHMKICBzaWduZWQgY2hhciBCMCh2b2lkKSB7CiAgICByZXR1cm4gSEVYQUdPTl9WMzJfR0VUX0IwKGRhdGEpOwogIH07CiAgc2lnbmVkIGNoYXIgQjEodm9pZCkgewogICAgcmV0dXJuIEhFWEFHT05fVjMyX0dFVF9CMShkYXRhKTsKICB9OwogIHNpZ25lZCBjaGFyIEIyKHZvaWQpIHsKICAgIHJldHVybiBIRVhBR09OX1YzMl9HRVRfQjIoZGF0YSk7CiAgfTsKICBzaWduZWQgY2hhciBCMyh2b2lkKSB7CiAgICByZXR1cm4gSEVYQUdPTl9WMzJfR0VUX0IzKGRhdGEpOwogIH07CiAgdW5zaWduZWQgY2hhciBVQjAodm9pZCkgewogICAgcmV0dXJuIEhFWEFHT05fVjMyX0dFVF9VQjAoZGF0YSk7CiAgfTsKICB1bnNpZ25lZCBjaGFyIFVCMSh2b2lkKSB7CiAgICByZXR1cm4gSEVYQUdPTl9WMzJfR0VUX1VCMShkYXRhKTsKICB9OwogIHVuc2lnbmVkIGNoYXIgVUIyKHZvaWQpIHsKICAgIHJldHVybiBIRVhBR09OX1YzMl9HRVRfVUIyKGRhdGEpOwogIH07CiAgdW5zaWduZWQgY2hhciBVQjModm9pZCkgewogICAgcmV0dXJuIEhFWEFHT05fVjMyX0dFVF9VQjMoZGF0YSk7CiAgfTsKCiAgLy8gTk9URTogQWxsIHNldCBtZXRob2RzIHJldHVybiBhIEhFWEFHT05fVmVjdDMyQyB0eXBlCgogIC8vIFNldCB3b3JkIG1ldGhvZAogIEhFWEFHT05fVmVjdDMyQyBXKGludCB3KSB7CiAgICByZXR1cm4gSEVYQUdPTl9WZWN0MzJDKEhFWEFHT05fVjMyX1BVVF9XKGRhdGEsIHcpKTsKICB9OwoKICAvLyBTZXQgaGFsZiB3b3JkIG1ldGhvZHMKICBIRVhBR09OX1ZlY3QzMkMgSDAoc2hvcnQgaCkgewogICAgcmV0dXJuIEhFWEFHT05fVmVjdDMyQyhIRVhBR09OX1YzMl9QVVRfSDAoZGF0YSwgaCkpOwogIH07CiAgSEVYQUdPTl9WZWN0MzJDIEgxKHNob3J0IGgpIHsKICAgIHJldHVybiBIRVhBR09OX1ZlY3QzMkMoSEVYQUdPTl9WMzJfUFVUX0gxKGRhdGEsIGgpKTsKICB9OwoKICAvLyBTZXQgYnl0ZSBtZXRob2RzCiAgSEVYQUdPTl9WZWN0MzJDIEIwKHNpZ25lZCBjaGFyIGIpIHsKICAgIHJldHVybiBIRVhBR09OX1ZlY3QzMkMoSEVYQUdPTl9WMzJfUFVUX0IwKGRhdGEsIGIpKTsKICB9OwogIEhFWEFHT05fVmVjdDMyQyBCMShzaWduZWQgY2hhciBiKSB7CiAgICByZXR1cm4gSEVYQUdPTl9WZWN0MzJDKEhFWEFHT05fVjMyX1BVVF9CMShkYXRhLCBiKSk7CiAgfTsKICBIRVhBR09OX1ZlY3QzMkMgQjIoc2lnbmVkIGNoYXIgYikgewogICAgcmV0dXJuIEhFWEFHT05fVmVjdDMyQyhIRVhBR09OX1YzMl9QVVRfQjIoZGF0YSwgYikpOwogIH07CiAgSEVYQUdPTl9WZWN0MzJDIEIzKHNpZ25lZCBjaGFyIGIpIHsKICAgIHJldHVybiBIRVhBR09OX1ZlY3QzMkMoSEVYQUdPTl9WMzJfUFVUX0IzKGRhdGEsIGIpKTsKICB9OwoKcHJpdmF0ZToKICBpbnQgZGF0YTsKfTsKCiNlbmRpZiAvKiBfX2NwbHVzcGx1cyAqLwoKLy8gVjY1IFNpbHZlciB0eXBlcwojaWYgX19RNlNfQVJDSF9fID49IDY1CiAgLy8gU2lsdmVyIHZlY3RvciB0eXBlcyBhcmUgMTI4IGJ5dGVzLCBhbmQgcGFpcnMgYXJlIDI1Ni4gVGhlIHZlY3RvciBwcmVkaWNhdGUKICAvLyB0eXBlcyBhcmUgMTYgYnl0ZXMgYW5kIDMyIGJ5dGVzIGZvciBwYWlycy4KICB0eXBlZGVmIGxvbmcgSEVYQUdPTl9WZWNQcmVkMTI4IF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXygxNikpKQogICAgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCgxMjgpKSk7CgogIHR5cGVkZWYgbG9uZyBIRVhBR09OX1ZlY1ByZWQyNTYgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDMyKSkpCiAgICBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDEyOCkpKTsKCiAgdHlwZWRlZiBsb25nIEhFWEFHT05fVmVjdDEwMjQgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDEyOCkpKQogICAgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCgxMjgpKSk7CgogIHR5cGVkZWYgbG9uZyBIRVhBR09OX1ZlY3QyMDQ4IF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXygyNTYpKSkKICAgIF9fYXR0cmlidXRlX18oKGFsaWduZWQoMjU2KSkpOwoKICB0eXBlZGVmIGxvbmcgSEVYQUdPTl9VVmVjdDEwMjQgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDEyOCkpKQogICAgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCg0KSkpOwoKICB0eXBlZGVmIGxvbmcgSEVYQUdPTl9VVmVjdDIwNDggX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDI1NikpKQogICAgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCg0KSkpOwoKICAjZGVmaW5lIFE2U19WZWN0b3JQcmVkUGFpciBIRVhBR09OX1ZlY1ByZWQyNTYKICAjZGVmaW5lIFE2U19WZWN0b3JQcmVkICAgICBIRVhBR09OX1ZlY1ByZWQxMjgKICAjZGVmaW5lIFE2U19WZWN0b3IgICAgICAgICBIRVhBR09OX1ZlY3QxMDI0CiAgI2RlZmluZSBRNlNfVmVjdG9yUGFpciAgICAgSEVYQUdPTl9WZWN0MjA0OAogICNkZWZpbmUgUTZTX1VWZWN0b3IgICAgICAgIEhFWEFHT05fVVZlY3QxMDI0CiAgI2RlZmluZSBRNlNfVVZlY3RvclBhaXIgICAgSEVYQUdPTl9VVmVjdDIwNDgKCiNlbHNlIC8qIF9fUTZTX0FSQ0hfXyA+PSA2NSAqLwoKLy8gVjY1IFZlY3RvciB0eXBlcwojaWYgX19IVlhfQVJDSF9fID49IDY1CiNpZiBkZWZpbmVkIF9fSFZYX18gJiYgKF9fSFZYX0xFTkdUSF9fID09IDEyOCkKICB0eXBlZGVmIGxvbmcgSEVYQUdPTl9WZWNQcmVkMTI4IF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXygxMjgpKSkKICAgIF9fYXR0cmlidXRlX18oKGFsaWduZWQoMTI4KSkpOwoKICB0eXBlZGVmIGxvbmcgSEVYQUdPTl9WZWN0MTAyNCBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oMTI4KSkpCiAgICBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDEyOCkpKTsKCiAgdHlwZWRlZiBsb25nIEhFWEFHT05fVmVjdDIwNDggX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDI1NikpKQogICAgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCgyNTYpKSk7CgogIHR5cGVkZWYgbG9uZyBIRVhBR09OX1VWZWN0MTAyNCBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oMTI4KSkpCiAgICBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDQpKSk7CgogIHR5cGVkZWYgbG9uZyBIRVhBR09OX1VWZWN0MjA0OCBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oMjU2KSkpCiAgICBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDQpKSk7CgogICNkZWZpbmUgSFZYX1ZlY3RvclByZWQgICAgIEhFWEFHT05fVmVjUHJlZDEyOAogICNkZWZpbmUgSFZYX1ZlY3RvciAgICAgICAgIEhFWEFHT05fVmVjdDEwMjQKICAjZGVmaW5lIEhWWF9WZWN0b3JQYWlyICAgICBIRVhBR09OX1ZlY3QyMDQ4CiAgI2RlZmluZSBIVlhfVVZlY3RvciAgICAgICAgSEVYQUdPTl9VVmVjdDEwMjQKICAjZGVmaW5lIEhWWF9VVmVjdG9yUGFpciAgICBIRVhBR09OX1VWZWN0MjA0OAojZWxzZSAvKiBkZWZpbmVkIF9fSFZYX18gJiYgKF9fSFZYX0xFTkdUSF9fID09IDEyOCkgKi8KI2lmIGRlZmluZWQgX19IVlhfXyAmJiAgKF9fSFZYX0xFTkdUSF9fID09IDY0KQogIHR5cGVkZWYgbG9uZyBIRVhBR09OX1ZlY1ByZWQ2NCBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oNjQpKSkKICAgIF9fYXR0cmlidXRlX18oKGFsaWduZWQoNjQpKSk7CgogIHR5cGVkZWYgbG9uZyBIRVhBR09OX1ZlY3Q1MTIgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDY0KSkpCiAgICBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDY0KSkpOwoKICB0eXBlZGVmIGxvbmcgSEVYQUdPTl9WZWN0MTAyNCBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oMTI4KSkpCiAgICBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDEyOCkpKTsKCiAgdHlwZWRlZiBsb25nIEhFWEFHT05fVVZlY3Q1MTIgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDY0KSkpCiAgICBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDQpKSk7CgogIHR5cGVkZWYgbG9uZyBIRVhBR09OX1VWZWN0MTAyNCBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oMTI4KSkpCiAgICBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDQpKSk7CgogICNkZWZpbmUgSFZYX1ZlY3RvclByZWQgICAgIEhFWEFHT05fVmVjUHJlZDY0CiAgI2RlZmluZSBIVlhfVmVjdG9yICAgICAgICAgSEVYQUdPTl9WZWN0NTEyCiAgI2RlZmluZSBIVlhfVmVjdG9yUGFpciAgICAgSEVYQUdPTl9WZWN0MTAyNAogICNkZWZpbmUgSFZYX1VWZWN0b3IgICAgICAgIEhFWEFHT05fVVZlY3Q1MTIKICAjZGVmaW5lIEhWWF9VVmVjdG9yUGFpciAgICBIRVhBR09OX1VWZWN0MTAyNAojZW5kaWYgLyogZGVmaW5lZCBfX0hWWF9fICYmICAoX19IVlhfTEVOR1RIX18gPT0gNjQpICovCiNlbmRpZiAvKiBkZWZpbmVkIF9fSFZYX18gJiYgKF9fSFZYX0xFTkdUSF9fID09IDEyOCkgKi8KI2VuZGlmIC8qIF9fSFZYX0FSQ0hfXyA+PSA2NSAqLwojZW5kaWYgLyogX19RNlNfQVJDSF9fID49IDY1ICovCgovKiBQcmVkaWNhdGVzICovCgp0eXBlZGVmIGludCBIRVhBR09OX1ByZWQ7CgovKioqCiAqKiogYmFja3dhcmQgY29tcGF0aWJpbGl0eSBhbGlhc2VzCiAqKiovCgovKiBPbGQgbmFtZXMgKi8KI2RlZmluZSBRNlZlY3QgUTZWZWN0NjQKI2RlZmluZSBRNlZfR0VUX0QgUTZWNjRfR0VUX0QKI2RlZmluZSBRNlZfR0VUX1VEIFE2VjY0X0dFVF9VRAojZGVmaW5lIFE2Vl9HRVRfVzAgUTZWNjRfR0VUX1cwCiNkZWZpbmUgUTZWX0dFVF9XMSBRNlY2NF9HRVRfVzEKI2RlZmluZSBRNlZfR0VUX1VXMCBRNlY2NF9HRVRfVVcwCiNkZWZpbmUgUTZWX0dFVF9VVzEgUTZWNjRfR0VUX1VXMQojZGVmaW5lIFE2Vl9HRVRfSDAgUTZWNjRfR0VUX0gwCiNkZWZpbmUgUTZWX0dFVF9IMSBRNlY2NF9HRVRfSDEKI2RlZmluZSBRNlZfR0VUX0gyIFE2VjY0X0dFVF9IMgojZGVmaW5lIFE2Vl9HRVRfSDMgUTZWNjRfR0VUX0gzCiNkZWZpbmUgUTZWX0dFVF9VSDAgUTZWNjRfR0VUX1VIMAojZGVmaW5lIFE2Vl9HRVRfVUgxIFE2VjY0X0dFVF9VSDEKI2RlZmluZSBRNlZfR0VUX1VIMiBRNlY2NF9HRVRfVUgyCiNkZWZpbmUgUTZWX0dFVF9VSDMgUTZWNjRfR0VUX1VIMwojZGVmaW5lIFE2Vl9HRVRfQjAgUTZWNjRfR0VUX0IwCiNkZWZpbmUgUTZWX0dFVF9CMSBRNlY2NF9HRVRfQjEKI2RlZmluZSBRNlZfR0VUX0IyIFE2VjY0X0dFVF9CMgojZGVmaW5lIFE2Vl9HRVRfQjMgUTZWNjRfR0VUX0IzCiNkZWZpbmUgUTZWX0dFVF9CNCBRNlY2NF9HRVRfQjQKI2RlZmluZSBRNlZfR0VUX0I1IFE2VjY0X0dFVF9CNQojZGVmaW5lIFE2Vl9HRVRfQjYgUTZWNjRfR0VUX0I2CiNkZWZpbmUgUTZWX0dFVF9CNyBRNlY2NF9HRVRfQjcKI2RlZmluZSBRNlZfR0VUX1VCMCBRNlY2NF9HRVRfVUIwCiNkZWZpbmUgUTZWX0dFVF9VQjEgUTZWNjRfR0VUX1VCMQojZGVmaW5lIFE2Vl9HRVRfVUIyIFE2VjY0X0dFVF9VQjIKI2RlZmluZSBRNlZfR0VUX1VCMyBRNlY2NF9HRVRfVUIzCiNkZWZpbmUgUTZWX0dFVF9VQjQgUTZWNjRfR0VUX1VCNAojZGVmaW5lIFE2Vl9HRVRfVUI1IFE2VjY0X0dFVF9VQjUKI2RlZmluZSBRNlZfR0VUX1VCNiBRNlY2NF9HRVRfVUI2CiNkZWZpbmUgUTZWX0dFVF9VQjcgUTZWNjRfR0VUX1VCNwojZGVmaW5lIFE2Vl9QVVRfRCBRNlY2NF9QVVRfRAojZGVmaW5lIFE2Vl9QVVRfVzAgUTZWNjRfUFVUX1cwCiNkZWZpbmUgUTZWX1BVVF9XMSBRNlY2NF9QVVRfVzEKI2RlZmluZSBRNlZfUFVUX0gwIFE2VjY0X1BVVF9IMAojZGVmaW5lIFE2Vl9QVVRfSDEgUTZWNjRfUFVUX0gxCiNkZWZpbmUgUTZWX1BVVF9IMiBRNlY2NF9QVVRfSDIKI2RlZmluZSBRNlZfUFVUX0gzIFE2VjY0X1BVVF9IMwojZGVmaW5lIFE2Vl9QVVRfQjAgUTZWNjRfUFVUX0IwCiNkZWZpbmUgUTZWX1BVVF9CMSBRNlY2NF9QVVRfQjEKI2RlZmluZSBRNlZfUFVUX0IyIFE2VjY0X1BVVF9CMgojZGVmaW5lIFE2Vl9QVVRfQjMgUTZWNjRfUFVUX0IzCiNkZWZpbmUgUTZWX1BVVF9CNCBRNlY2NF9QVVRfQjQKI2RlZmluZSBRNlZfUFVUX0I1IFE2VjY0X1BVVF9CNQojZGVmaW5lIFE2Vl9QVVRfQjYgUTZWNjRfUFVUX0I2CiNkZWZpbmUgUTZWX1BVVF9CNyBRNlY2NF9QVVRfQjcKI2RlZmluZSBRNlZfQ1JFQVRFX0QgUTZWNjRfQ1JFQVRFX0QKI2RlZmluZSBRNlZfQ1JFQVRFX1cgUTZWNjRfQ1JFQVRFX1cKI2RlZmluZSBRNlZfQ1JFQVRFX0ggUTZWNjRfQ1JFQVRFX0gKI2RlZmluZSBRNlZfQ1JFQVRFX0IgUTZWNjRfQ1JFQVRFX0IKCiNpZmRlZiBfX2NwbHVzcGx1cwojZGVmaW5lIFE2VmVjdEMgUTZWZWN0NjRDCiNlbmRpZiAvKiBfX2NwbHVzcGx1cyAqLwoKLyogNjQgQml0IFZlY3RvcnMgKi8KCnR5cGVkZWYgbG9uZyBsb25nIF9fYXR0cmlidXRlX18oKF9fbWF5X2FsaWFzX18pKSBRNlZlY3Q2NDsKCi8qIEV4dHJhY3QgZG91Ymxld29yZCBtYWNyb3MgKi8KCiNkZWZpbmUgUTZWNjRfR0VUX0QodikgKHYpCiNkZWZpbmUgUTZWNjRfR0VUX1VEKHYpICgodW5zaWduZWQgbG9uZyBsb25nKSh2KSkKCi8qIEV4dHJhY3Qgd29yZCBtYWNyb3MgKi8KCiNkZWZpbmUgUTZWNjRfR0VUX1cwKHYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGxvbmcgbG9uZyBkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGludCB3WzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9IF9RNlY2NF9pbnRlcm5hbF91bmlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWNjRfaW50ZXJuYWxfdW5pb24uZCA9ICh2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWNjRfaW50ZXJuYWxfdW5pb24ud1swXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSkKI2RlZmluZSBRNlY2NF9HRVRfVzEodikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgbG9uZyBsb25nIGQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgaW50IHdbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX1E2VjY0X2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi5kID0gKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi53WzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQojZGVmaW5lIFE2VjY0X0dFVF9VVzAodikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBsb25nIGxvbmcgZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICB1bnNpZ25lZCBpbnQgdXdbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgfSBfUTZWNjRfaW50ZXJuYWxfdW5pb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjY0X2ludGVybmFsX3VuaW9uLmQgPSAodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjY0X2ludGVybmFsX3VuaW9uLnV3WzBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0pCiNkZWZpbmUgUTZWNjRfR0VUX1VXMSh2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGxvbmcgbG9uZyBkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHVuc2lnbmVkIGludCB1d1syXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9IF9RNlY2NF9pbnRlcm5hbF91bmlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWNjRfaW50ZXJuYWxfdW5pb24uZCA9ICh2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWNjRfaW50ZXJuYWxfdW5pb24udXdbMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSkKCi8qIEV4dHJhY3QgaGFsZiB3b3JkIG1hY3JvcyAqLwoKI2RlZmluZSBRNlY2NF9HRVRfSDAodikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgbG9uZyBsb25nIGQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgc2hvcnQgaFs0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX1E2VjY0X2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi5kID0gKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi5oWzBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQojZGVmaW5lIFE2VjY0X0dFVF9IMSh2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBsb25nIGxvbmcgZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBzaG9ydCBoWzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgfSBfUTZWNjRfaW50ZXJuYWxfdW5pb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjY0X2ludGVybmFsX3VuaW9uLmQgPSAodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjY0X2ludGVybmFsX3VuaW9uLmhbMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0pCiNkZWZpbmUgUTZWNjRfR0VUX0gyKHYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGxvbmcgbG9uZyBkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHNob3J0IGhbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9IF9RNlY2NF9pbnRlcm5hbF91bmlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWNjRfaW50ZXJuYWxfdW5pb24uZCA9ICh2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWNjRfaW50ZXJuYWxfdW5pb24uaFsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSkKI2RlZmluZSBRNlY2NF9HRVRfSDModikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgbG9uZyBsb25nIGQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgc2hvcnQgaFs0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX1E2VjY0X2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi5kID0gKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi5oWzNdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQojZGVmaW5lIFE2VjY0X0dFVF9VSDAodikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBsb25nIGxvbmcgZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICB1bnNpZ25lZCBzaG9ydCB1aFs0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgfSBfUTZWNjRfaW50ZXJuYWxfdW5pb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjY0X2ludGVybmFsX3VuaW9uLmQgPSAodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjY0X2ludGVybmFsX3VuaW9uLnVoWzBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0pCiNkZWZpbmUgUTZWNjRfR0VUX1VIMSh2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGxvbmcgbG9uZyBkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHVuc2lnbmVkIHNob3J0IHVoWzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9IF9RNlY2NF9pbnRlcm5hbF91bmlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWNjRfaW50ZXJuYWxfdW5pb24uZCA9ICh2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWNjRfaW50ZXJuYWxfdW5pb24udWhbMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSkKI2RlZmluZSBRNlY2NF9HRVRfVUgyKHYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgbG9uZyBsb25nIGQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgdW5zaWduZWQgc2hvcnQgdWhbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX1E2VjY0X2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi5kID0gKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi51aFsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQojZGVmaW5lIFE2VjY0X0dFVF9VSDModikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBsb25nIGxvbmcgZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICB1bnNpZ25lZCBzaG9ydCB1aFs0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgfSBfUTZWNjRfaW50ZXJuYWxfdW5pb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjY0X2ludGVybmFsX3VuaW9uLmQgPSAodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjY0X2ludGVybmFsX3VuaW9uLnVoWzNdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0pCgovKiBFeHRyYWN0IGJ5dGUgbWFjcm9zICovCgojZGVmaW5lIFE2VjY0X0dFVF9CMCh2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBsb25nIGxvbmcgZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBzaWduZWQgY2hhciBiWzhdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgfSBfUTZWNjRfaW50ZXJuYWxfdW5pb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjY0X2ludGVybmFsX3VuaW9uLmQgPSAodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjY0X2ludGVybmFsX3VuaW9uLmJbMF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0pCiNkZWZpbmUgUTZWNjRfR0VUX0IxKHYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGxvbmcgbG9uZyBkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHNpZ25lZCBjaGFyIGJbOF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9IF9RNlY2NF9pbnRlcm5hbF91bmlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWNjRfaW50ZXJuYWxfdW5pb24uZCA9ICh2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWNjRfaW50ZXJuYWxfdW5pb24uYlsxXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSkKI2RlZmluZSBRNlY2NF9HRVRfQjIodikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgbG9uZyBsb25nIGQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgc2lnbmVkIGNoYXIgYls4XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX1E2VjY0X2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi5kID0gKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi5iWzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQojZGVmaW5lIFE2VjY0X0dFVF9CMyh2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBsb25nIGxvbmcgZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBzaWduZWQgY2hhciBiWzhdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgfSBfUTZWNjRfaW50ZXJuYWxfdW5pb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjY0X2ludGVybmFsX3VuaW9uLmQgPSAodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjY0X2ludGVybmFsX3VuaW9uLmJbM107ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0pCiNkZWZpbmUgUTZWNjRfR0VUX0I0KHYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGxvbmcgbG9uZyBkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHNpZ25lZCBjaGFyIGJbOF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9IF9RNlY2NF9pbnRlcm5hbF91bmlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWNjRfaW50ZXJuYWxfdW5pb24uZCA9ICh2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWNjRfaW50ZXJuYWxfdW5pb24uYls0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSkKI2RlZmluZSBRNlY2NF9HRVRfQjUodikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgbG9uZyBsb25nIGQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgc2lnbmVkIGNoYXIgYls4XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX1E2VjY0X2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi5kID0gKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi5iWzVdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQojZGVmaW5lIFE2VjY0X0dFVF9CNih2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBsb25nIGxvbmcgZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBzaWduZWQgY2hhciBiWzhdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgfSBfUTZWNjRfaW50ZXJuYWxfdW5pb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjY0X2ludGVybmFsX3VuaW9uLmQgPSAodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjY0X2ludGVybmFsX3VuaW9uLmJbNl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0pCiNkZWZpbmUgUTZWNjRfR0VUX0I3KHYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGxvbmcgbG9uZyBkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHNpZ25lZCBjaGFyIGJbOF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9IF9RNlY2NF9pbnRlcm5hbF91bmlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWNjRfaW50ZXJuYWxfdW5pb24uZCA9ICh2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWNjRfaW50ZXJuYWxfdW5pb24uYls3XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSkKI2RlZmluZSBRNlY2NF9HRVRfVUIwKHYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgbG9uZyBsb25nIGQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgdW5zaWduZWQgY2hhciB1Yls4XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX1E2VjY0X2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi5kID0gKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi51YlswXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQojZGVmaW5lIFE2VjY0X0dFVF9VQjEodikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBsb25nIGxvbmcgZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICB1bnNpZ25lZCBjaGFyIHViWzhdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgfSBfUTZWNjRfaW50ZXJuYWxfdW5pb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjY0X2ludGVybmFsX3VuaW9uLmQgPSAodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjY0X2ludGVybmFsX3VuaW9uLnViWzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0pCiNkZWZpbmUgUTZWNjRfR0VUX1VCMih2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGxvbmcgbG9uZyBkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHVuc2lnbmVkIGNoYXIgdWJbOF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9IF9RNlY2NF9pbnRlcm5hbF91bmlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWNjRfaW50ZXJuYWxfdW5pb24uZCA9ICh2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWNjRfaW50ZXJuYWxfdW5pb24udWJbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSkKI2RlZmluZSBRNlY2NF9HRVRfVUIzKHYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgbG9uZyBsb25nIGQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgdW5zaWduZWQgY2hhciB1Yls4XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX1E2VjY0X2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi5kID0gKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi51YlszXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQojZGVmaW5lIFE2VjY0X0dFVF9VQjQodikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBsb25nIGxvbmcgZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICB1bnNpZ25lZCBjaGFyIHViWzhdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgfSBfUTZWNjRfaW50ZXJuYWxfdW5pb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjY0X2ludGVybmFsX3VuaW9uLmQgPSAodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjY0X2ludGVybmFsX3VuaW9uLnViWzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0pCiNkZWZpbmUgUTZWNjRfR0VUX1VCNSh2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGxvbmcgbG9uZyBkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHVuc2lnbmVkIGNoYXIgdWJbOF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9IF9RNlY2NF9pbnRlcm5hbF91bmlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWNjRfaW50ZXJuYWxfdW5pb24uZCA9ICh2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWNjRfaW50ZXJuYWxfdW5pb24udWJbNV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSkKI2RlZmluZSBRNlY2NF9HRVRfVUI2KHYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgbG9uZyBsb25nIGQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgdW5zaWduZWQgY2hhciB1Yls4XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX1E2VjY0X2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi5kID0gKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi51Yls2XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQojZGVmaW5lIFE2VjY0X0dFVF9VQjcodikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBsb25nIGxvbmcgZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICB1bnNpZ25lZCBjaGFyIHViWzhdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgfSBfUTZWNjRfaW50ZXJuYWxfdW5pb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjY0X2ludGVybmFsX3VuaW9uLmQgPSAodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjY0X2ludGVybmFsX3VuaW9uLnViWzddOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0pCgovKiBOT1RFOiBBbGwgc2V0IG1hY3JvcyByZXR1cm4gYSBRNlZlY3Q2NCB0eXBlICovCgovKiBTZXQgZG91Ymxld29yZCBtYWNybyAqLwoKI2RlZmluZSBRNlY2NF9QVVRfRCh2LCBuZXcpIChuZXcpCgovKiBTZXQgd29yZCBtYWNyb3MgKi8KCiNpZmRlZiBfX3Fkc3A2X18KCiNkZWZpbmUgUTZWNjRfUFVUX1cwKHYsIG5ldykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGxvbmcgbG9uZyBkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGludCB3WzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9IF9RNlY2NF9pbnRlcm5hbF91bmlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWNjRfaW50ZXJuYWxfdW5pb24uZCA9ICh2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWNjRfaW50ZXJuYWxfdW5pb24ud1swXSA9IChuZXcpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWNjRfaW50ZXJuYWxfdW5pb24uZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSkKI2RlZmluZSBRNlY2NF9QVVRfVzEodiwgbmV3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgbG9uZyBsb25nIGQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgaW50IHdbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX1E2VjY0X2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi5kID0gKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi53WzFdID0gKG5ldyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi5kOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQoKI2Vsc2UgLyogIV9fcWRzcDZfXyAqLwoKI2RlZmluZSBRNlY2NF9QVVRfVzAodiwgbmV3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKCh2KSAmIDB4ZmZmZmZmZmYwMDAwMDAwMExMKSB8ICgoUTZWZWN0NjQpKCh1bnNpZ25lZCBpbnQpKG5ldykpKSkKI2RlZmluZSBRNlY2NF9QVVRfVzEodiwgbmV3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKCh2KSAmIDB4MDAwMDAwMDBmZmZmZmZmZkxMKSB8ICgoKFE2VmVjdDY0KShuZXcpKSA8PCAzMkxMKSkKCiNlbmRpZiAvKiAhX19xZHNwNl9fICovCgovKiBTZXQgaGFsZiB3b3JkIG1hY3JvcyAqLwoKI2lmZGVmIF9fcWRzcDZfXwoKI2RlZmluZSBRNlY2NF9QVVRfSDAodiwgbmV3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgbG9uZyBsb25nIGQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgc2hvcnQgaFs0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX1E2VjY0X2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi5kID0gKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi5oWzBdID0gKG5ldyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi5kOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQojZGVmaW5lIFE2VjY0X1BVVF9IMSh2LCBuZXcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBsb25nIGxvbmcgZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBzaG9ydCBoWzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgfSBfUTZWNjRfaW50ZXJuYWxfdW5pb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjY0X2ludGVybmFsX3VuaW9uLmQgPSAodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjY0X2ludGVybmFsX3VuaW9uLmhbMV0gPSAobmV3KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjY0X2ludGVybmFsX3VuaW9uLmQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0pCiNkZWZpbmUgUTZWNjRfUFVUX0gyKHYsIG5ldykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGxvbmcgbG9uZyBkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHNob3J0IGhbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9IF9RNlY2NF9pbnRlcm5hbF91bmlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWNjRfaW50ZXJuYWxfdW5pb24uZCA9ICh2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWNjRfaW50ZXJuYWxfdW5pb24uaFsyXSA9IChuZXcpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWNjRfaW50ZXJuYWxfdW5pb24uZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSkKI2RlZmluZSBRNlY2NF9QVVRfSDModiwgbmV3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgbG9uZyBsb25nIGQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgc2hvcnQgaFs0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX1E2VjY0X2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi5kID0gKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi5oWzNdID0gKG5ldyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi5kOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQoKI2Vsc2UgLyogIV9fcWRzcDZfXyAqLwoKI2RlZmluZSBRNlY2NF9QVVRfSDAodiwgbmV3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKCh2KSAmIDB4ZmZmZmZmZmZmZmZmMDAwMExMKSB8ICgoUTZWZWN0NjQpKCh1bnNpZ25lZCBzaG9ydCkobmV3KSkpKQojZGVmaW5lIFE2VjY0X1BVVF9IMSh2LCBuZXcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoKHYpICYgMHhmZmZmZmZmZjAwMDBmZmZmTEwpIHwgKCgoUTZWZWN0NjQpKCh1bnNpZ25lZCBzaG9ydCkobmV3KSkpIDw8IDE2TEwpKQojZGVmaW5lIFE2VjY0X1BVVF9IMih2LCBuZXcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoKHYpICYgMHhmZmZmMDAwMGZmZmZmZmZmTEwpIHwgKCgoUTZWZWN0NjQpKCh1bnNpZ25lZCBzaG9ydCkobmV3KSkpIDw8IDMyTEwpKQojZGVmaW5lIFE2VjY0X1BVVF9IMyh2LCBuZXcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoKHYpICYgMHgwMDAwZmZmZmZmZmZmZmZmTEwpIHwgKCgoUTZWZWN0NjQpKG5ldykpIDw8IDQ4TEwpKQoKI2VuZGlmIC8qICFfX3Fkc3A2X18gKi8KCi8qIFNldCBieXRlIG1hY3JvcyAqLwoKI2lmZGVmIF9fcWRzcDZfXwoKI2RlZmluZSBRNlY2NF9QVVRfQjAodiwgbmV3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgbG9uZyBsb25nIGQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgY2hhciBiWzhdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX1E2VjY0X2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi5kID0gKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi5iWzBdID0gKG5ldyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi5kOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQojZGVmaW5lIFE2VjY0X1BVVF9CMSh2LCBuZXcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBsb25nIGxvbmcgZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBjaGFyIGJbOF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgfSBfUTZWNjRfaW50ZXJuYWxfdW5pb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjY0X2ludGVybmFsX3VuaW9uLmQgPSAodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjY0X2ludGVybmFsX3VuaW9uLmJbMV0gPSAobmV3KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjY0X2ludGVybmFsX3VuaW9uLmQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0pCiNkZWZpbmUgUTZWNjRfUFVUX0IyKHYsIG5ldykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGxvbmcgbG9uZyBkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGNoYXIgYls4XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9IF9RNlY2NF9pbnRlcm5hbF91bmlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWNjRfaW50ZXJuYWxfdW5pb24uZCA9ICh2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWNjRfaW50ZXJuYWxfdW5pb24uYlsyXSA9IChuZXcpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWNjRfaW50ZXJuYWxfdW5pb24uZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSkKI2RlZmluZSBRNlY2NF9QVVRfQjModiwgbmV3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgbG9uZyBsb25nIGQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgY2hhciBiWzhdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX1E2VjY0X2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi5kID0gKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi5iWzNdID0gKG5ldyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi5kOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQojZGVmaW5lIFE2VjY0X1BVVF9CNCh2LCBuZXcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBsb25nIGxvbmcgZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBjaGFyIGJbOF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgfSBfUTZWNjRfaW50ZXJuYWxfdW5pb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjY0X2ludGVybmFsX3VuaW9uLmQgPSAodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjY0X2ludGVybmFsX3VuaW9uLmJbNF0gPSAobmV3KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjY0X2ludGVybmFsX3VuaW9uLmQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0pCiNkZWZpbmUgUTZWNjRfUFVUX0I1KHYsIG5ldykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGxvbmcgbG9uZyBkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGNoYXIgYls4XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9IF9RNlY2NF9pbnRlcm5hbF91bmlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWNjRfaW50ZXJuYWxfdW5pb24uZCA9ICh2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWNjRfaW50ZXJuYWxfdW5pb24uYls1XSA9IChuZXcpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWNjRfaW50ZXJuYWxfdW5pb24uZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSkKI2RlZmluZSBRNlY2NF9QVVRfQjYodiwgbmV3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgbG9uZyBsb25nIGQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgY2hhciBiWzhdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX1E2VjY0X2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi5kID0gKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi5iWzZdID0gKG5ldyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi5kOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQojZGVmaW5lIFE2VjY0X1BVVF9CNyh2LCBuZXcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBsb25nIGxvbmcgZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBjaGFyIGJbOF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgfSBfUTZWNjRfaW50ZXJuYWxfdW5pb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjY0X2ludGVybmFsX3VuaW9uLmQgPSAodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjY0X2ludGVybmFsX3VuaW9uLmJbN10gPSAobmV3KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjY0X2ludGVybmFsX3VuaW9uLmQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0pCgojZWxzZSAvKiAhX19xZHNwNl9fICovCgojZGVmaW5lIFE2VjY0X1BVVF9CMCh2LCBuZXcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoKHYpICYgMHhmZmZmZmZmZmZmZmZmZjAwTEwpIHwgKChRNlZlY3Q2NCkoKHVuc2lnbmVkIGNoYXIpKG5ldykpKSkKI2RlZmluZSBRNlY2NF9QVVRfQjEodiwgbmV3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKCh2KSAmIDB4ZmZmZmZmZmZmZmZmMDBmZkxMKSB8ICgoKFE2VmVjdDY0KSgodW5zaWduZWQgY2hhcikobmV3KSkpIDw8IDhMTCkpCiNkZWZpbmUgUTZWNjRfUFVUX0IyKHYsIG5ldykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKCgodikgJiAweGZmZmZmZmZmZmYwMGZmZmZMTCkgfCAoKChRNlZlY3Q2NCkoKHVuc2lnbmVkIGNoYXIpKG5ldykpKSA8PCAxNkxMKSkKI2RlZmluZSBRNlY2NF9QVVRfQjModiwgbmV3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKCh2KSAmIDB4ZmZmZmZmZmYwMGZmZmZmZkxMKSB8ICgoKFE2VmVjdDY0KSgodW5zaWduZWQgY2hhcikobmV3KSkpIDw8IDI0TEwpKQojZGVmaW5lIFE2VjY0X1BVVF9CNCh2LCBuZXcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoKHYpICYgMHhmZmZmZmYwMGZmZmZmZmZmTEwpIHwgKCgoUTZWZWN0NjQpKCh1bnNpZ25lZCBjaGFyKShuZXcpKSkgPDwgMzJMTCkpCiNkZWZpbmUgUTZWNjRfUFVUX0I1KHYsIG5ldykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKCgodikgJiAweGZmZmYwMGZmZmZmZmZmZmZMTCkgfCAoKChRNlZlY3Q2NCkoKHVuc2lnbmVkIGNoYXIpKG5ldykpKSA8PCA0MExMKSkKI2RlZmluZSBRNlY2NF9QVVRfQjYodiwgbmV3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKCh2KSAmIDB4ZmYwMGZmZmZmZmZmZmZmZkxMKSB8ICgoKFE2VmVjdDY0KSgodW5zaWduZWQgY2hhcikobmV3KSkpIDw8IDQ4TEwpKQojZGVmaW5lIFE2VjY0X1BVVF9CNyh2LCBuZXcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoKHYpICYgMHgwMGZmZmZmZmZmZmZmZmZmTEwpIHwgKCgoUTZWZWN0NjQpKG5ldykpIDw8IDU2TEwpKQoKI2VuZGlmIC8qICFfX3Fkc3A2X18gKi8KCi8qIE5PVEU6IEFsbCBjcmVhdGUgbWFjcm9zIHJldHVybiBhIFE2VmVjdDY0IHR5cGUgKi8KCi8qIENyZWF0ZSBmcm9tIGEgZG91Ymxld29yZCAqLwoKI2RlZmluZSBRNlY2NF9DUkVBVEVfRChkKSAoZCkKCi8qIENyZWF0ZSBmcm9tIHdvcmRzICovCgojaWZkZWYgX19xZHNwNl9fCgojZGVmaW5lIFE2VjY0X0NSRUFURV9XKHcxLCB3MCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBsb25nIGxvbmcgZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBpbnQgd1syXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgfSBfUTZWNjRfaW50ZXJuYWxfdW5pb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjY0X2ludGVybmFsX3VuaW9uLndbMF0gPSAodzApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjY0X2ludGVybmFsX3VuaW9uLndbMV0gPSAodzEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjY0X2ludGVybmFsX3VuaW9uLmQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0pCgojZWxzZSAvKiAhX19xZHNwNl9fICovCgojZGVmaW5lIFE2VjY0X0NSRUFURV9XKHcxLCB3MCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoKChRNlZlY3Q2NCkodzEpKSA8PCAzMkxMKSB8ICgoUTZWZWN0NjQpKCh3MCkgJiAweGZmZmZmZmZmKSkpCgojZW5kaWYgLyogIV9fcWRzcDZfXyAqLwoKLyogQ3JlYXRlIGZyb20gaGFsZiB3b3JkcyAqLwoKI2lmZGVmIF9fcWRzcDZfXwoKI2RlZmluZSBRNlY2NF9DUkVBVEVfSChoMywgaDIsIGgxLCBoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgbG9uZyBsb25nIGQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgc2hvcnQgaFs0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX1E2VjY0X2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi5oWzBdID0gKGgwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi5oWzFdID0gKGgxKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi5oWzJdID0gKGgyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi5oWzNdID0gKGgzKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi5kOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQoKI2Vsc2UgLyogIV9fcWRzcDZfXyAqLwoKI2RlZmluZSBRNlY2NF9DUkVBVEVfSChoMywgaDIsIGgxLCBoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKCgoUTZWZWN0NjQpKGgzKSkgPDwgNDhMTCkgfCAoKChRNlZlY3Q2NCkoKGgyKSAmIDB4ZmZmZikpIDw8IDMyTEwpIHwgICAgICAgIFwKICAgKCgoUTZWZWN0NjQpKChoMSkgJiAweGZmZmYpKSA8PCAxNkxMKSB8ICgoUTZWZWN0NjQpKChoMCkgJiAweGZmZmYpKSkKCiNlbmRpZiAvKiAhX19xZHNwNl9fICovCgovKiBDcmVhdGUgZnJvbSBieXRlcyAqLwoKI2lmZGVmIF9fcWRzcDZfXwoKI2RlZmluZSBRNlY2NF9DUkVBVEVfQihiNywgYjYsIGI1LCBiNCwgYjMsIGIyLCBiMSwgYjApICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgbG9uZyBsb25nIGQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgY2hhciBiWzhdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX1E2VjY0X2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi5iWzBdID0gKGIwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi5iWzFdID0gKGIxKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi5iWzJdID0gKGIyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi5iWzNdID0gKGIzKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi5iWzRdID0gKGI0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi5iWzVdID0gKGI1KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi5iWzZdID0gKGI2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi5iWzddID0gKGI3KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlY2NF9pbnRlcm5hbF91bmlvbi5kOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQoKI2Vsc2UgLyogIV9fcWRzcDZfXyAqLwoKI2RlZmluZSBRNlY2NF9DUkVBVEVfQihiNywgYjYsIGI1LCBiNCwgYjMsIGIyLCBiMSwgYjApICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKCgoUTZWZWN0NjQpKGI3KSkgPDwgNTZMTCkgfCAoKChRNlZlY3Q2NCkoKGI2KSAmIDB4ZmYpKSA8PCA0OExMKSB8ICAgICAgICAgIFwKICAgKCgoUTZWZWN0NjQpKChiNSkgJiAweGZmKSkgPDwgNDBMTCkgfCAoKChRNlZlY3Q2NCkoKGI0KSAmIDB4ZmYpKSA8PCAzMkxMKSB8IFwKICAgKCgoUTZWZWN0NjQpKChiMykgJiAweGZmKSkgPDwgMjRMTCkgfCAoKChRNlZlY3Q2NCkoKGIyKSAmIDB4ZmYpKSA8PCAxNkxMKSB8IFwKICAgKCgoUTZWZWN0NjQpKChiMSkgJiAweGZmKSkgPDwgOExMKSB8ICgoUTZWZWN0NjQpKChiMCkgJiAweGZmKSkpCgojZW5kaWYgLyogIV9fcWRzcDZfXyAqLwoKI2lmZGVmIF9fY3BsdXNwbHVzCgpjbGFzcyBRNlZlY3Q2NEMgewpwdWJsaWM6CiAgLy8gQ29uc3RydWN0b3JzCiAgUTZWZWN0NjRDKGxvbmcgbG9uZyBkID0gMCkgOiBkYXRhKGQpIHt9OwogIFE2VmVjdDY0QyhpbnQgdzEsIGludCB3MCkgOiBkYXRhKFE2VjY0X0NSRUFURV9XKHcxLCB3MCkpIHt9OwogIFE2VmVjdDY0QyhzaG9ydCBoMywgc2hvcnQgaDIsIHNob3J0IGgxLCBzaG9ydCBoMCkKICAgICAgOiBkYXRhKFE2VjY0X0NSRUFURV9IKGgzLCBoMiwgaDEsIGgwKSkge307CiAgUTZWZWN0NjRDKHNpZ25lZCBjaGFyIGI3LCBzaWduZWQgY2hhciBiNiwgc2lnbmVkIGNoYXIgYjUsIHNpZ25lZCBjaGFyIGI0LAogICAgICAgICAgICBzaWduZWQgY2hhciBiMywgc2lnbmVkIGNoYXIgYjIsIHNpZ25lZCBjaGFyIGIxLCBzaWduZWQgY2hhciBiMCkKICAgICAgOiBkYXRhKFE2VjY0X0NSRUFURV9CKGI3LCBiNiwgYjUsIGI0LCBiMywgYjIsIGIxLCBiMCkpIHt9OwogIFE2VmVjdDY0Qyhjb25zdCBRNlZlY3Q2NEMgJnYpIDogZGF0YSh2LmRhdGEpIHt9OwoKICBRNlZlY3Q2NEMgJm9wZXJhdG9yPShjb25zdCBRNlZlY3Q2NEMgJnYpIHsKICAgIGRhdGEgPSB2LmRhdGE7CiAgICByZXR1cm4gKnRoaXM7CiAgfTsKCiAgb3BlcmF0b3IgbG9uZyBsb25nKCkgewogICAgcmV0dXJuIGRhdGE7CiAgfTsKCiAgLy8gRXh0cmFjdCBkb3VibGV3b3JkIG1ldGhvZHMKICBsb25nIGxvbmcgRCh2b2lkKSB7CiAgICByZXR1cm4gUTZWNjRfR0VUX0QoZGF0YSk7CiAgfTsKICB1bnNpZ25lZCBsb25nIGxvbmcgVUQodm9pZCkgewogICAgcmV0dXJuIFE2VjY0X0dFVF9VRChkYXRhKTsKICB9OwoKICAvLyBFeHRyYWN0IHdvcmQgbWV0aG9kcwogIGludCBXMCh2b2lkKSB7CiAgICByZXR1cm4gUTZWNjRfR0VUX1cwKGRhdGEpOwogIH07CiAgaW50IFcxKHZvaWQpIHsKICAgIHJldHVybiBRNlY2NF9HRVRfVzEoZGF0YSk7CiAgfTsKICB1bnNpZ25lZCBpbnQgVVcwKHZvaWQpIHsKICAgIHJldHVybiBRNlY2NF9HRVRfVVcwKGRhdGEpOwogIH07CiAgdW5zaWduZWQgaW50IFVXMSh2b2lkKSB7CiAgICByZXR1cm4gUTZWNjRfR0VUX1VXMShkYXRhKTsKICB9OwoKICAvLyBFeHRyYWN0IGhhbGYgd29yZCBtZXRob2RzCiAgc2hvcnQgSDAodm9pZCkgewogICAgcmV0dXJuIFE2VjY0X0dFVF9IMChkYXRhKTsKICB9OwogIHNob3J0IEgxKHZvaWQpIHsKICAgIHJldHVybiBRNlY2NF9HRVRfSDEoZGF0YSk7CiAgfTsKICBzaG9ydCBIMih2b2lkKSB7CiAgICByZXR1cm4gUTZWNjRfR0VUX0gyKGRhdGEpOwogIH07CiAgc2hvcnQgSDModm9pZCkgewogICAgcmV0dXJuIFE2VjY0X0dFVF9IMyhkYXRhKTsKICB9OwogIHVuc2lnbmVkIHNob3J0IFVIMCh2b2lkKSB7CiAgICByZXR1cm4gUTZWNjRfR0VUX1VIMChkYXRhKTsKICB9OwogIHVuc2lnbmVkIHNob3J0IFVIMSh2b2lkKSB7CiAgICByZXR1cm4gUTZWNjRfR0VUX1VIMShkYXRhKTsKICB9OwogIHVuc2lnbmVkIHNob3J0IFVIMih2b2lkKSB7CiAgICByZXR1cm4gUTZWNjRfR0VUX1VIMihkYXRhKTsKICB9OwogIHVuc2lnbmVkIHNob3J0IFVIMyh2b2lkKSB7CiAgICByZXR1cm4gUTZWNjRfR0VUX1VIMyhkYXRhKTsKICB9OwoKICAvLyBFeHRyYWN0IGJ5dGUgbWV0aG9kcwogIHNpZ25lZCBjaGFyIEIwKHZvaWQpIHsKICAgIHJldHVybiBRNlY2NF9HRVRfQjAoZGF0YSk7CiAgfTsKICBzaWduZWQgY2hhciBCMSh2b2lkKSB7CiAgICByZXR1cm4gUTZWNjRfR0VUX0IxKGRhdGEpOwogIH07CiAgc2lnbmVkIGNoYXIgQjIodm9pZCkgewogICAgcmV0dXJuIFE2VjY0X0dFVF9CMihkYXRhKTsKICB9OwogIHNpZ25lZCBjaGFyIEIzKHZvaWQpIHsKICAgIHJldHVybiBRNlY2NF9HRVRfQjMoZGF0YSk7CiAgfTsKICBzaWduZWQgY2hhciBCNCh2b2lkKSB7CiAgICByZXR1cm4gUTZWNjRfR0VUX0I0KGRhdGEpOwogIH07CiAgc2lnbmVkIGNoYXIgQjUodm9pZCkgewogICAgcmV0dXJuIFE2VjY0X0dFVF9CNShkYXRhKTsKICB9OwogIHNpZ25lZCBjaGFyIEI2KHZvaWQpIHsKICAgIHJldHVybiBRNlY2NF9HRVRfQjYoZGF0YSk7CiAgfTsKICBzaWduZWQgY2hhciBCNyh2b2lkKSB7CiAgICByZXR1cm4gUTZWNjRfR0VUX0I3KGRhdGEpOwogIH07CiAgdW5zaWduZWQgY2hhciBVQjAodm9pZCkgewogICAgcmV0dXJuIFE2VjY0X0dFVF9VQjAoZGF0YSk7CiAgfTsKICB1bnNpZ25lZCBjaGFyIFVCMSh2b2lkKSB7CiAgICByZXR1cm4gUTZWNjRfR0VUX1VCMShkYXRhKTsKICB9OwogIHVuc2lnbmVkIGNoYXIgVUIyKHZvaWQpIHsKICAgIHJldHVybiBRNlY2NF9HRVRfVUIyKGRhdGEpOwogIH07CiAgdW5zaWduZWQgY2hhciBVQjModm9pZCkgewogICAgcmV0dXJuIFE2VjY0X0dFVF9VQjMoZGF0YSk7CiAgfTsKICB1bnNpZ25lZCBjaGFyIFVCNCh2b2lkKSB7CiAgICByZXR1cm4gUTZWNjRfR0VUX1VCNChkYXRhKTsKICB9OwogIHVuc2lnbmVkIGNoYXIgVUI1KHZvaWQpIHsKICAgIHJldHVybiBRNlY2NF9HRVRfVUI1KGRhdGEpOwogIH07CiAgdW5zaWduZWQgY2hhciBVQjYodm9pZCkgewogICAgcmV0dXJuIFE2VjY0X0dFVF9VQjYoZGF0YSk7CiAgfTsKICB1bnNpZ25lZCBjaGFyIFVCNyh2b2lkKSB7CiAgICByZXR1cm4gUTZWNjRfR0VUX1VCNyhkYXRhKTsKICB9OwoKICAvLyBOT1RFOiBBbGwgc2V0IG1ldGhvZHMgcmV0dXJuIGEgUTZWZWN0NjRDIHR5cGUKCiAgLy8gU2V0IGRvdWJsZXdvcmQgbWV0aG9kCiAgUTZWZWN0NjRDIEQobG9uZyBsb25nIGQpIHsKICAgIHJldHVybiBRNlZlY3Q2NEMoUTZWNjRfUFVUX0QoZGF0YSwgZCkpOwogIH07CgogIC8vIFNldCB3b3JkIG1ldGhvZHMKICBRNlZlY3Q2NEMgVzAoaW50IHcpIHsKICAgIHJldHVybiBRNlZlY3Q2NEMoUTZWNjRfUFVUX1cwKGRhdGEsIHcpKTsKICB9OwogIFE2VmVjdDY0QyBXMShpbnQgdykgewogICAgcmV0dXJuIFE2VmVjdDY0QyhRNlY2NF9QVVRfVzEoZGF0YSwgdykpOwogIH07CgogIC8vIFNldCBoYWxmIHdvcmQgbWV0aG9kcwogIFE2VmVjdDY0QyBIMChzaG9ydCBoKSB7CiAgICByZXR1cm4gUTZWZWN0NjRDKFE2VjY0X1BVVF9IMChkYXRhLCBoKSk7CiAgfTsKICBRNlZlY3Q2NEMgSDEoc2hvcnQgaCkgewogICAgcmV0dXJuIFE2VmVjdDY0QyhRNlY2NF9QVVRfSDEoZGF0YSwgaCkpOwogIH07CiAgUTZWZWN0NjRDIEgyKHNob3J0IGgpIHsKICAgIHJldHVybiBRNlZlY3Q2NEMoUTZWNjRfUFVUX0gyKGRhdGEsIGgpKTsKICB9OwogIFE2VmVjdDY0QyBIMyhzaG9ydCBoKSB7CiAgICByZXR1cm4gUTZWZWN0NjRDKFE2VjY0X1BVVF9IMyhkYXRhLCBoKSk7CiAgfTsKCiAgLy8gU2V0IGJ5dGUgbWV0aG9kcwogIFE2VmVjdDY0QyBCMChzaWduZWQgY2hhciBiKSB7CiAgICByZXR1cm4gUTZWZWN0NjRDKFE2VjY0X1BVVF9CMChkYXRhLCBiKSk7CiAgfTsKICBRNlZlY3Q2NEMgQjEoc2lnbmVkIGNoYXIgYikgewogICAgcmV0dXJuIFE2VmVjdDY0QyhRNlY2NF9QVVRfQjEoZGF0YSwgYikpOwogIH07CiAgUTZWZWN0NjRDIEIyKHNpZ25lZCBjaGFyIGIpIHsKICAgIHJldHVybiBRNlZlY3Q2NEMoUTZWNjRfUFVUX0IyKGRhdGEsIGIpKTsKICB9OwogIFE2VmVjdDY0QyBCMyhzaWduZWQgY2hhciBiKSB7CiAgICByZXR1cm4gUTZWZWN0NjRDKFE2VjY0X1BVVF9CMyhkYXRhLCBiKSk7CiAgfTsKICBRNlZlY3Q2NEMgQjQoc2lnbmVkIGNoYXIgYikgewogICAgcmV0dXJuIFE2VmVjdDY0QyhRNlY2NF9QVVRfQjQoZGF0YSwgYikpOwogIH07CiAgUTZWZWN0NjRDIEI1KHNpZ25lZCBjaGFyIGIpIHsKICAgIHJldHVybiBRNlZlY3Q2NEMoUTZWNjRfUFVUX0I1KGRhdGEsIGIpKTsKICB9OwogIFE2VmVjdDY0QyBCNihzaWduZWQgY2hhciBiKSB7CiAgICByZXR1cm4gUTZWZWN0NjRDKFE2VjY0X1BVVF9CNihkYXRhLCBiKSk7CiAgfTsKICBRNlZlY3Q2NEMgQjcoc2lnbmVkIGNoYXIgYikgewogICAgcmV0dXJuIFE2VmVjdDY0QyhRNlY2NF9QVVRfQjcoZGF0YSwgYikpOwogIH07Cgpwcml2YXRlOgogIGxvbmcgbG9uZyBkYXRhOwp9OwoKI2VuZGlmIC8qIF9fY3BsdXNwbHVzICovCgovKiAzMiBCaXQgVmVjdG9ycyAqLwoKdHlwZWRlZiBpbnQgUTZWZWN0MzI7CgovKiBFeHRyYWN0IHdvcmQgbWFjcm9zICovCgojZGVmaW5lIFE2VjMyX0dFVF9XKHYpICh2KQojZGVmaW5lIFE2VjMyX0dFVF9VVyh2KSAoKHVuc2lnbmVkIGludCkodikpCgovKiBFeHRyYWN0IGhhbGYgd29yZCBtYWNyb3MgKi8KCiNkZWZpbmUgUTZWMzJfR0VUX0gwKHYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGludCB3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHNob3J0IGhbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9IF9RNlYzMl9pbnRlcm5hbF91bmlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWMzJfaW50ZXJuYWxfdW5pb24udyA9ICh2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWMzJfaW50ZXJuYWxfdW5pb24uaFswXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSkKI2RlZmluZSBRNlYzMl9HRVRfSDEodikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgaW50IHc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgc2hvcnQgaFsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX1E2VjMyX2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlYzMl9pbnRlcm5hbF91bmlvbi53ID0gKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlYzMl9pbnRlcm5hbF91bmlvbi5oWzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQojZGVmaW5lIFE2VjMyX0dFVF9VSDAodikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBpbnQgdzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICB1bnNpZ25lZCBzaG9ydCB1aFsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgfSBfUTZWMzJfaW50ZXJuYWxfdW5pb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjMyX2ludGVybmFsX3VuaW9uLncgPSAodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjMyX2ludGVybmFsX3VuaW9uLnVoWzBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0pCiNkZWZpbmUgUTZWMzJfR0VUX1VIMSh2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGludCB3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHVuc2lnbmVkIHNob3J0IHVoWzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9IF9RNlYzMl9pbnRlcm5hbF91bmlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWMzJfaW50ZXJuYWxfdW5pb24udyA9ICh2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWMzJfaW50ZXJuYWxfdW5pb24udWhbMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSkKCi8qIEV4dHJhY3QgYnl0ZSBtYWNyb3MgKi8KCiNkZWZpbmUgUTZWMzJfR0VUX0IwKHYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGludCB3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHNpZ25lZCBjaGFyIGJbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9IF9RNlYzMl9pbnRlcm5hbF91bmlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWMzJfaW50ZXJuYWxfdW5pb24udyA9ICh2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWMzJfaW50ZXJuYWxfdW5pb24uYlswXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSkKI2RlZmluZSBRNlYzMl9HRVRfQjEodikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgaW50IHc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgc2lnbmVkIGNoYXIgYls0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX1E2VjMyX2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlYzMl9pbnRlcm5hbF91bmlvbi53ID0gKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlYzMl9pbnRlcm5hbF91bmlvbi5iWzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQojZGVmaW5lIFE2VjMyX0dFVF9CMih2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBpbnQgdzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBzaWduZWQgY2hhciBiWzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgfSBfUTZWMzJfaW50ZXJuYWxfdW5pb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjMyX2ludGVybmFsX3VuaW9uLncgPSAodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjMyX2ludGVybmFsX3VuaW9uLmJbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0pCiNkZWZpbmUgUTZWMzJfR0VUX0IzKHYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGludCB3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHNpZ25lZCBjaGFyIGJbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9IF9RNlYzMl9pbnRlcm5hbF91bmlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWMzJfaW50ZXJuYWxfdW5pb24udyA9ICh2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWMzJfaW50ZXJuYWxfdW5pb24uYlszXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSkKI2RlZmluZSBRNlYzMl9HRVRfVUIwKHYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgaW50IHc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgdW5zaWduZWQgY2hhciB1Yls0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX1E2VjMyX2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlYzMl9pbnRlcm5hbF91bmlvbi53ID0gKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlYzMl9pbnRlcm5hbF91bmlvbi51YlswXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQojZGVmaW5lIFE2VjMyX0dFVF9VQjEodikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBpbnQgdzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICB1bnNpZ25lZCBjaGFyIHViWzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgfSBfUTZWMzJfaW50ZXJuYWxfdW5pb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjMyX2ludGVybmFsX3VuaW9uLncgPSAodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjMyX2ludGVybmFsX3VuaW9uLnViWzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0pCiNkZWZpbmUgUTZWMzJfR0VUX1VCMih2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGludCB3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHVuc2lnbmVkIGNoYXIgdWJbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9IF9RNlYzMl9pbnRlcm5hbF91bmlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWMzJfaW50ZXJuYWxfdW5pb24udyA9ICh2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWMzJfaW50ZXJuYWxfdW5pb24udWJbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSkKI2RlZmluZSBRNlYzMl9HRVRfVUIzKHYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgaW50IHc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgdW5zaWduZWQgY2hhciB1Yls0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX1E2VjMyX2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlYzMl9pbnRlcm5hbF91bmlvbi53ID0gKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlYzMl9pbnRlcm5hbF91bmlvbi51YlszXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQoKLyogTk9URTogQWxsIHNldCBtYWNyb3MgcmV0dXJuIGEgUTZWZWN0MzIgdHlwZSAqLwoKLyogU2V0IHdvcmQgbWFjcm8gKi8KCiNkZWZpbmUgUTZWMzJfUFVUX1codiwgbmV3KSAobmV3KQoKLyogU2V0IGhhbGYgd29yZCBtYWNyb3MgKi8KCiNpZmRlZiBfX3Fkc3A2X18KCiNkZWZpbmUgUTZWMzJfUFVUX0gwKHYsIG5ldykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGludCB3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHNob3J0IGhbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9IF9RNlYzMl9pbnRlcm5hbF91bmlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWMzJfaW50ZXJuYWxfdW5pb24udyA9ICh2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWMzJfaW50ZXJuYWxfdW5pb24uaFswXSA9IChuZXcpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWMzJfaW50ZXJuYWxfdW5pb24udzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSkKI2RlZmluZSBRNlYzMl9QVVRfSDEodiwgbmV3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgaW50IHc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgc2hvcnQgaFsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX1E2VjMyX2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlYzMl9pbnRlcm5hbF91bmlvbi53ID0gKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlYzMl9pbnRlcm5hbF91bmlvbi5oWzFdID0gKG5ldyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlYzMl9pbnRlcm5hbF91bmlvbi53OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQoKI2Vsc2UgLyogIV9fcWRzcDZfXyAqLwoKI2RlZmluZSBRNlYzMl9QVVRfSDAodiwgbmV3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKCh2KSAmIDB4ZmZmZjAwMDApIHwgKChRNlZlY3QzMikoKHVuc2lnbmVkIHNob3J0KShuZXcpKSkpCiNkZWZpbmUgUTZWMzJfUFVUX0gxKHYsIG5ldykgKCgodikgJiAweDAwMDBmZmZmKSB8ICgoKFE2VmVjdDMyKShuZXcpKSA8PCAxNikpCgojZW5kaWYgLyogIV9fcWRzcDZfXyAqLwoKLyogU2V0IGJ5dGUgbWFjcm9zICovCgojaWZkZWYgX19xZHNwNl9fCgojZGVmaW5lIFE2VjMyX1BVVF9CMCh2LCBuZXcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBpbnQgdzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBjaGFyIGJbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgfSBfUTZWMzJfaW50ZXJuYWxfdW5pb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjMyX2ludGVybmFsX3VuaW9uLncgPSAodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjMyX2ludGVybmFsX3VuaW9uLmJbMF0gPSAobmV3KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjMyX2ludGVybmFsX3VuaW9uLnc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0pCiNkZWZpbmUgUTZWMzJfUFVUX0IxKHYsIG5ldykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGludCB3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGNoYXIgYls0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9IF9RNlYzMl9pbnRlcm5hbF91bmlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWMzJfaW50ZXJuYWxfdW5pb24udyA9ICh2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWMzJfaW50ZXJuYWxfdW5pb24uYlsxXSA9IChuZXcpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWMzJfaW50ZXJuYWxfdW5pb24udzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSkKI2RlZmluZSBRNlYzMl9QVVRfQjIodiwgbmV3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgaW50IHc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgY2hhciBiWzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX1E2VjMyX2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlYzMl9pbnRlcm5hbF91bmlvbi53ID0gKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlYzMl9pbnRlcm5hbF91bmlvbi5iWzJdID0gKG5ldyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9RNlYzMl9pbnRlcm5hbF91bmlvbi53OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQojZGVmaW5lIFE2VjMyX1BVVF9CMyh2LCBuZXcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBpbnQgdzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBjaGFyIGJbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgfSBfUTZWMzJfaW50ZXJuYWxfdW5pb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjMyX2ludGVybmFsX3VuaW9uLncgPSAodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjMyX2ludGVybmFsX3VuaW9uLmJbM10gPSAobmV3KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjMyX2ludGVybmFsX3VuaW9uLnc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0pCgojZWxzZSAvKiAhX19xZHNwNl9fICovCgojZGVmaW5lIFE2VjMyX1BVVF9CMCh2LCBuZXcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoKHYpICYgMHhmZmZmZmYwMCkgfCAoKFE2VmVjdDMyKSgodW5zaWduZWQgY2hhcikobmV3KSkpKQojZGVmaW5lIFE2VjMyX1BVVF9CMSh2LCBuZXcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoKHYpICYgMHhmZmZmMDBmZikgfCAoKChRNlZlY3QzMikoKHVuc2lnbmVkIGNoYXIpKG5ldykpKSA8PCA4KSkKI2RlZmluZSBRNlYzMl9QVVRfQjIodiwgbmV3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoKCh2KSAmIDB4ZmYwMGZmZmYpIHwgKCgoUTZWZWN0MzIpKCh1bnNpZ25lZCBjaGFyKShuZXcpKSkgPDwgMTYpKQojZGVmaW5lIFE2VjMyX1BVVF9CMyh2LCBuZXcpICgoKHYpICYgMHgwMGZmZmZmZikgfCAoKChRNlZlY3QzMikobmV3KSkgPDwgMjQpKQoKI2VuZGlmIC8qICFfX3Fkc3A2X18gKi8KCi8qIE5PVEU6IEFsbCBjcmVhdGUgbWFjcm9zIHJldHVybiBhIFE2VmVjdDMyIHR5cGUgKi8KCi8qIENyZWF0ZSBmcm9tIGEgd29yZCAqLwoKI2RlZmluZSBRNlYzMl9DUkVBVEVfVyh3KSAodykKCi8qIENyZWF0ZSBmcm9tIGhhbGYgd29yZHMgKi8KCiNpZmRlZiBfX3Fkc3A2X18KCiNkZWZpbmUgUTZWMzJfQ1JFQVRFX0goaDEsIGgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGxvbmcgbG9uZyBkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIHNob3J0IGhbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9IF9RNlYzMl9pbnRlcm5hbF91bmlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWMzJfaW50ZXJuYWxfdW5pb24uaFswXSA9IChoMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWMzJfaW50ZXJuYWxfdW5pb24uaFsxXSA9IChoMSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfUTZWMzJfaW50ZXJuYWxfdW5pb24uZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSkKCiNlbHNlIC8qICFfX3Fkc3A2X18gKi8KCiNkZWZpbmUgUTZWMzJfQ1JFQVRFX0goaDEsIGgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgKCgoKFE2VmVjdDMyKShoMSkpIDw8IDE2KSB8ICgoUTZWZWN0MzIpKChoMCkgJiAweGZmZmYpKSkKCiNlbmRpZiAvKiAhX19xZHNwNl9fICovCgovKiBDcmVhdGUgZnJvbSBieXRlcyAqLwojaWZkZWYgX19xZHNwNl9fCgojZGVmaW5lIFE2VjMyX0NSRUFURV9CKGIzLCBiMiwgYjEsIGIwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBsb25nIGxvbmcgZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBjaGFyIGJbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgfSBfUTZWMzJfaW50ZXJuYWxfdW5pb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjMyX2ludGVybmFsX3VuaW9uLmJbMF0gPSAoYjApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjMyX2ludGVybmFsX3VuaW9uLmJbMV0gPSAoYjEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjMyX2ludGVybmFsX3VuaW9uLmJbMl0gPSAoYjIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjMyX2ludGVybmFsX3VuaW9uLmJbM10gPSAoYjMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX1E2VjMyX2ludGVybmFsX3VuaW9uLmQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0pCgojZWxzZSAvKiAhX19xZHNwNl9fICovCgojZGVmaW5lIFE2VjMyX0NSRUFURV9CKGIzLCBiMiwgYjEsIGIwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICgoKChRNlZlY3QzMikoYjMpKSA8PCAyNCkgfCAoKChRNlZlY3QzMikoKGIyKSAmIDB4ZmYpKSA8PCAxNikgfCAgICAgICAgICAgICAgXAogICAoKChRNlZlY3QzMikoKGIxKSAmIDB4ZmYpKSA8PCA4KSB8ICgoUTZWZWN0MzIpKChiMCkgJiAweGZmKSkpCgojZW5kaWYgLyogIV9fcWRzcDZfXyAqLwoKI2lmZGVmIF9fY3BsdXNwbHVzCgpjbGFzcyBRNlZlY3QzMkMgewpwdWJsaWM6CiAgLy8gQ29uc3RydWN0b3JzCiAgUTZWZWN0MzJDKGludCB3ID0gMCkgOiBkYXRhKHcpIHt9OwogIFE2VmVjdDMyQyhzaG9ydCBoMSwgc2hvcnQgaDApIDogZGF0YShRNlYzMl9DUkVBVEVfSChoMSwgaDApKSB7fTsKICBRNlZlY3QzMkMoc2lnbmVkIGNoYXIgYjMsIHNpZ25lZCBjaGFyIGIyLCBzaWduZWQgY2hhciBiMSwgc2lnbmVkIGNoYXIgYjApCiAgICAgIDogZGF0YShRNlYzMl9DUkVBVEVfQihiMywgYjIsIGIxLCBiMCkpIHt9OwogIFE2VmVjdDMyQyhjb25zdCBRNlZlY3QzMkMgJnYpIDogZGF0YSh2LmRhdGEpIHt9OwoKICBRNlZlY3QzMkMgJm9wZXJhdG9yPShjb25zdCBRNlZlY3QzMkMgJnYpIHsKICAgIGRhdGEgPSB2LmRhdGE7CiAgICByZXR1cm4gKnRoaXM7CiAgfTsKCiAgb3BlcmF0b3IgaW50KCkgewogICAgcmV0dXJuIGRhdGE7CiAgfTsKCiAgLy8gRXh0cmFjdCB3b3JkIG1ldGhvZHMKICBpbnQgVyh2b2lkKSB7CiAgICByZXR1cm4gUTZWMzJfR0VUX1coZGF0YSk7CiAgfTsKICB1bnNpZ25lZCBpbnQgVVcodm9pZCkgewogICAgcmV0dXJuIFE2VjMyX0dFVF9VVyhkYXRhKTsKICB9OwoKICAvLyBFeHRyYWN0IGhhbGYgd29yZCBtZXRob2RzCiAgc2hvcnQgSDAodm9pZCkgewogICAgcmV0dXJuIFE2VjMyX0dFVF9IMChkYXRhKTsKICB9OwogIHNob3J0IEgxKHZvaWQpIHsKICAgIHJldHVybiBRNlYzMl9HRVRfSDEoZGF0YSk7CiAgfTsKICB1bnNpZ25lZCBzaG9ydCBVSDAodm9pZCkgewogICAgcmV0dXJuIFE2VjMyX0dFVF9VSDAoZGF0YSk7CiAgfTsKICB1bnNpZ25lZCBzaG9ydCBVSDEodm9pZCkgewogICAgcmV0dXJuIFE2VjMyX0dFVF9VSDEoZGF0YSk7CiAgfTsKCiAgLy8gRXh0cmFjdCBieXRlIG1ldGhvZHMKICBzaWduZWQgY2hhciBCMCh2b2lkKSB7CiAgICByZXR1cm4gUTZWMzJfR0VUX0IwKGRhdGEpOwogIH07CiAgc2lnbmVkIGNoYXIgQjEodm9pZCkgewogICAgcmV0dXJuIFE2VjMyX0dFVF9CMShkYXRhKTsKICB9OwogIHNpZ25lZCBjaGFyIEIyKHZvaWQpIHsKICAgIHJldHVybiBRNlYzMl9HRVRfQjIoZGF0YSk7CiAgfTsKICBzaWduZWQgY2hhciBCMyh2b2lkKSB7CiAgICByZXR1cm4gUTZWMzJfR0VUX0IzKGRhdGEpOwogIH07CiAgdW5zaWduZWQgY2hhciBVQjAodm9pZCkgewogICAgcmV0dXJuIFE2VjMyX0dFVF9VQjAoZGF0YSk7CiAgfTsKICB1bnNpZ25lZCBjaGFyIFVCMSh2b2lkKSB7CiAgICByZXR1cm4gUTZWMzJfR0VUX1VCMShkYXRhKTsKICB9OwogIHVuc2lnbmVkIGNoYXIgVUIyKHZvaWQpIHsKICAgIHJldHVybiBRNlYzMl9HRVRfVUIyKGRhdGEpOwogIH07CiAgdW5zaWduZWQgY2hhciBVQjModm9pZCkgewogICAgcmV0dXJuIFE2VjMyX0dFVF9VQjMoZGF0YSk7CiAgfTsKCiAgLy8gTk9URTogQWxsIHNldCBtZXRob2RzIHJldHVybiBhIFE2VmVjdDMyQyB0eXBlCgogIC8vIFNldCB3b3JkIG1ldGhvZAogIFE2VmVjdDMyQyBXKGludCB3KSB7CiAgICByZXR1cm4gUTZWZWN0MzJDKFE2VjMyX1BVVF9XKGRhdGEsIHcpKTsKICB9OwoKICAvLyBTZXQgaGFsZiB3b3JkIG1ldGhvZHMKICBRNlZlY3QzMkMgSDAoc2hvcnQgaCkgewogICAgcmV0dXJuIFE2VmVjdDMyQyhRNlYzMl9QVVRfSDAoZGF0YSwgaCkpOwogIH07CiAgUTZWZWN0MzJDIEgxKHNob3J0IGgpIHsKICAgIHJldHVybiBRNlZlY3QzMkMoUTZWMzJfUFVUX0gxKGRhdGEsIGgpKTsKICB9OwoKICAvLyBTZXQgYnl0ZSBtZXRob2RzCiAgUTZWZWN0MzJDIEIwKHNpZ25lZCBjaGFyIGIpIHsKICAgIHJldHVybiBRNlZlY3QzMkMoUTZWMzJfUFVUX0IwKGRhdGEsIGIpKTsKICB9OwogIFE2VmVjdDMyQyBCMShzaWduZWQgY2hhciBiKSB7CiAgICByZXR1cm4gUTZWZWN0MzJDKFE2VjMyX1BVVF9CMShkYXRhLCBiKSk7CiAgfTsKICBRNlZlY3QzMkMgQjIoc2lnbmVkIGNoYXIgYikgewogICAgcmV0dXJuIFE2VmVjdDMyQyhRNlYzMl9QVVRfQjIoZGF0YSwgYikpOwogIH07CiAgUTZWZWN0MzJDIEIzKHNpZ25lZCBjaGFyIGIpIHsKICAgIHJldHVybiBRNlZlY3QzMkMoUTZWMzJfUFVUX0IzKGRhdGEsIGIpKTsKICB9OwoKcHJpdmF0ZToKICBpbnQgZGF0YTsKfTsKCiNlbmRpZiAvKiBfX2NwbHVzcGx1cyAqLwoKLy8gVjY1IFZlY3RvciB0eXBlcwojaWYgX19IVlhfQVJDSF9fID49IDY1CiNpZiBkZWZpbmVkIF9fSFZYX18gJiYgKF9fSFZYX0xFTkdUSF9fID09IDEyOCkKdHlwZWRlZiBsb25nIFE2VmVjUHJlZDEyOCBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oMTI4KSkpCiAgICBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDEyOCkpKTsKCnR5cGVkZWYgbG9uZyBRNlZlY3QxMDI0IF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXygxMjgpKSkKICAgIF9fYXR0cmlidXRlX18oKGFsaWduZWQoMTI4KSkpOwoKdHlwZWRlZiBsb25nIFE2VmVjdDIwNDggX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDI1NikpKQogICAgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCgyNTYpKSk7CgojZWxzZSAvKiBkZWZpbmVkIF9fSFZYX18gJiYgKF9fSFZYX0xFTkdUSF9fID09IDEyOCkgKi8KI2lmIGRlZmluZWQgX19IVlhfXyAmJiAgKF9fSFZYX0xFTkdUSF9fID09IDY0KQp0eXBlZGVmIGxvbmcgUTZWZWNQcmVkNjQgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDY0KSkpCiAgICBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDY0KSkpOwoKdHlwZWRlZiBsb25nIFE2VmVjdDUxMiBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oNjQpKSkKICAgIF9fYXR0cmlidXRlX18oKGFsaWduZWQoNjQpKSk7Cgp0eXBlZGVmIGxvbmcgUTZWZWN0MTAyNCBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oMTI4KSkpCiAgICBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDEyOCkpKTsKCiNlbmRpZiAvKiBkZWZpbmVkIF9fSFZYX18gJiYgIChfX0hWWF9MRU5HVEhfXyA9PSA2NCkgKi8KI2VuZGlmIC8qIGRlZmluZWQgX19IVlhfXyAmJiAoX19IVlhfTEVOR1RIX18gPT0gMTI4KSAqLwojZW5kaWYgLyogX19IVlhfQVJDSF9fID49IDY1ICovCgovKiBQcmVkaWNhdGVzICovCgp0eXBlZGVmIGludCBRNlByZWQ7CgoKI2lmZGVmIF9fSFZYX18KCi8vIEV4dHJhY3QgSFZYIFZlY3RvclBhaXIgbWFjcm8uCiNkZWZpbmUgSEVYQUdPTl9IVlhfR0VUX1codikgKHYpCgovLyBFeHRyYWN0IEhWWCBWZWN0b3IgbWFjcm9zLgojZGVmaW5lIEhFWEFHT05fSFZYX0dFVF9WMCh2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBIVlhfVmVjdG9yUGFpciBXOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBIVlhfVmVjdG9yIFZbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgfSBfSEVYQUdPTl9IVlhfaW50ZXJuYWxfdW5pb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fSFZYX2ludGVybmFsX3VuaW9uLlcgPSAodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX0hFWEFHT05fSFZYX2ludGVybmFsX3VuaW9uLlZbMF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0pCiNkZWZpbmUgSEVYQUdPTl9IVlhfR0VUX1YxKHYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIEhWWF9WZWN0b3JQYWlyIFc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIEhWWF9WZWN0b3IgVlsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9IF9IRVhBR09OX0hWWF9pbnRlcm5hbF91bmlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9IVlhfaW50ZXJuYWxfdW5pb24uVyA9ICh2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9IVlhfaW50ZXJuYWxfdW5pb24uVlsxXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSkKI2RlZmluZSBIRVhBR09OX0hWWF9HRVRfUCh2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgSFZYX1ZlY3RvclBhaXIgVzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgSFZYX1ZlY3RvclByZWQgUFsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX0hFWEFHT05fSFZYX2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX0hWWF9pbnRlcm5hbF91bmlvbi5XID0gKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX0hWWF9pbnRlcm5hbF91bmlvbi5QWzBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQoKLy8gU2V0IEhWWCBWZWN0b3JQYWlyIG1hY3JvLgojZGVmaW5lIEhFWEFHT05fSFZYX1BVVF9XKHYsIG5ldykgKG5ldykKCi8vIFNldCBIVlggVmVjdG9yIG1hY3Jvcy4KI2RlZmluZSBIRVhBR09OX0hWWF9QVVRfVjAodiwgbmV3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgSFZYX1ZlY3RvclBhaXIgVzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgSFZYX1ZlY3RvciBWWzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX0hFWEFHT05fSFZYX2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX0hWWF9pbnRlcm5hbF91bmlvbi5XID0gKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX0hWWF9pbnRlcm5hbF91bmlvbi5WWzBdID0gKG5ldyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX0hWWF9pbnRlcm5hbF91bmlvbi5XOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQoKI2RlZmluZSBIRVhBR09OX0hWWF9QVVRfVjEodiwgbmV3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgSFZYX1ZlY3RvclBhaXIgVzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgSFZYX1ZlY3RvciBWWzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX0hFWEFHT05fSFZYX2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX0hWWF9pbnRlcm5hbF91bmlvbi5XID0gKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX0hWWF9pbnRlcm5hbF91bmlvbi5WWzFdID0gKG5ldyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX0hWWF9pbnRlcm5hbF91bmlvbi5XOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQoKI2RlZmluZSBIRVhBR09OX0hWWF9QVVRfUCh2LCBuZXcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgSFZYX1ZlY3RvclBhaXIgVzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgSFZYX1ZlY3RvclByZWQgUFsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH0gX0hFWEFHT05fSFZYX2ludGVybmFsX3VuaW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX0hWWF9pbnRlcm5hbF91bmlvbi5XID0gKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX0hWWF9pbnRlcm5hbF91bmlvbi5QWzBdID0gKG5ldyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9IRVhBR09OX0hWWF9pbnRlcm5hbF91bmlvbi5XOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9KQoKCiNkZWZpbmUgSEVYQUdPTl9IVlhfQ1JFQVRFX1codjEsIHYwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIEhWWF9WZWN0b3JQYWlyIFc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIEhWWF9WZWN0b3IgVlsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9IF9IRVhBR09OX0hWWF9pbnRlcm5hbF91bmlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9IVlhfaW50ZXJuYWxfdW5pb24uVlswXSA9ICh2MCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9IVlhfaW50ZXJuYWxfdW5pb24uVlsxXSA9ICh2MSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfSEVYQUdPTl9IVlhfaW50ZXJuYWxfdW5pb24uVzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSkKCiNpZmRlZiBfX2NwbHVzcGx1cwoKY2xhc3MgSFZYX1ZlY3QgewpwdWJsaWM6CiAgLy8gQ29uc3RydWN0b3JzLgogIC8vIERlZmF1bHQuCiAgSFZYX1ZlY3QoKSA6IGRhdGEoUTZfV192Y29tYmluZV9WVihRNl9WX3Z6ZXJvKCksIFE2X1Zfdnplcm8oKSkpe307CgogIC8vIEN1c3RvbSBjb25zdHJ1Y3RvcnMuCiAgSFZYX1ZlY3QoSFZYX1ZlY3RvclBhaXIgVykgOiBkYXRhKFcpe307CiAgSFZYX1ZlY3QoSFZYX1ZlY3RvciB2MSwgSFZYX1ZlY3RvciB2MCkgOiBkYXRhKEhFWEFHT05fSFZYX0NSRUFURV9XKHYxLCB2MCkpe307CgogIC8vIENvcHkgY29uc3RydWN0b3IuCiAgSFZYX1ZlY3QoY29uc3QgSFZYX1ZlY3QgJlcpID0gZGVmYXVsdDsKCiAgLy8gTW92ZSBjb25zdHJ1Y3Rvci4KICBIVlhfVmVjdChIVlhfVmVjdCAmJlcpID0gZGVmYXVsdDsKCiAgLy8gQXNzaWdubWVudCBvcGVyYXRvci4KICBIVlhfVmVjdCAmb3BlcmF0b3I9KGNvbnN0IEhWWF9WZWN0ICZXKSA9IGRlZmF1bHQ7CgogIG9wZXJhdG9yIEhWWF9WZWN0b3JQYWlyKCkgeyByZXR1cm4gZGF0YTsgfTsKCiAgLy8gRXh0cmFjdCBWZWN0b3JQYWlyIG1ldGhvZC4KICBIVlhfVmVjdG9yUGFpciBXKHZvaWQpIHsgcmV0dXJuIEhFWEFHT05fSFZYX0dFVF9XKGRhdGEpOyB9OwoKICAvLyBFeHRyYWN0IFZlY3RvciBtZXRob2RzLgogIEhWWF9WZWN0b3IgVjAodm9pZCkgeyByZXR1cm4gSEVYQUdPTl9IVlhfR0VUX1YwKGRhdGEpOyB9OwogIEhWWF9WZWN0b3IgVjEodm9pZCkgeyByZXR1cm4gSEVYQUdPTl9IVlhfR0VUX1YxKGRhdGEpOyB9OwogIEhWWF9WZWN0b3JQcmVkIFAodm9pZCkgeyByZXR1cm4gSEVYQUdPTl9IVlhfR0VUX1AoZGF0YSk7IH07CgogIC8vIE5PVEU6IEFsbCBzZXQgbWV0aG9kcyByZXR1cm4gYSBIVlhfVmVjdCB0eXBlLgogIC8vIFNldCBIVlggVmVjdG9yUGFpciBtZXRob2QuCiAgSFZYX1ZlY3QgVyhIVlhfVmVjdG9yUGFpciB3KSB7IHJldHVybiBIVlhfVmVjdChIRVhBR09OX0hWWF9QVVRfVyhkYXRhLCB3KSk7IH07CgogIC8vIFNldCBIVlggVmVjdG9yIG1ldGhvZHMuCiAgSFZYX1ZlY3QgVjAoSFZYX1ZlY3RvciB2KSB7IHJldHVybiBIVlhfVmVjdChIRVhBR09OX0hWWF9QVVRfVjAoZGF0YSwgdikpOyB9OwogIEhWWF9WZWN0IFYxKEhWWF9WZWN0b3IgdikgeyByZXR1cm4gSFZYX1ZlY3QoSEVYQUdPTl9IVlhfUFVUX1YxKGRhdGEsIHYpKTsgfTsKICBIVlhfVmVjdCBQKEhWWF9WZWN0b3JQcmVkIHApIHsgcmV0dXJuIEhWWF9WZWN0KEhFWEFHT05fSFZYX1BVVF9QKGRhdGEsIHApKTsgfTsKCnByaXZhdGU6CiAgSFZYX1ZlY3RvclBhaXIgZGF0YTsKfTsKCiNlbmRpZiAvKiBfX2NwbHVzcGx1cyAqLwojZW5kaWYgLyogX19IVlhfXyAqLwoKI2RlZmluZSBIRVhBR09OX1VETUFfRE0wX1NUQVRVU19JRExFICAgICAgICAgICAgIDB4MDAwMDAwMDAKI2RlZmluZSBIRVhBR09OX1VETUFfRE0wX1NUQVRVU19SVU4gICAgICAgICAgICAgIDB4MDAwMDAwMDEKI2RlZmluZSBIRVhBR09OX1VETUFfRE0wX1NUQVRVU19FUlJPUiAgICAgICAgICAgIDB4MDAwMDAwMDIKI2RlZmluZSBIRVhBR09OX1VETUFfREVTQ19EU1RBVEVfSU5DT01QTEVURSAgICAgIDAKI2RlZmluZSBIRVhBR09OX1VETUFfREVTQ19EU1RBVEVfQ09NUExFVEUgICAgICAgIDEKI2RlZmluZSBIRVhBR09OX1VETUFfREVTQ19PUkRFUl9OT09SREVSICAgICAgICAgIDAKI2RlZmluZSBIRVhBR09OX1VETUFfREVTQ19PUkRFUl9PUkRFUiAgICAgICAgICAgIDEKI2RlZmluZSBIRVhBR09OX1VETUFfREVTQ19CWVBBU1NfT0ZGICAgICAgICAgICAgIDAKI2RlZmluZSBIRVhBR09OX1VETUFfREVTQ19CWVBBU1NfT04gICAgICAgICAgICAgIDEKI2RlZmluZSBIRVhBR09OX1VETUFfREVTQ19DT01QX05PTkUgICAgICAgICAgICAgIDAKI2RlZmluZSBIRVhBR09OX1VETUFfREVTQ19DT01QX0RMQkMgICAgICAgICAgICAgIDEKI2RlZmluZSBIRVhBR09OX1VETUFfREVTQ19ERVNDVFlQRV9UWVBFMCAgICAgICAgIDAKI2RlZmluZSBIRVhBR09OX1VETUFfREVTQ19ERVNDVFlQRV9UWVBFMSAgICAgICAgIDEKCnR5cGVkZWYgc3RydWN0IGhleGFnb25fdWRtYV9kZXNjcmlwdG9yX3R5cGUwX3MKewogICAgdm9pZCAqbmV4dDsKICAgIHVuc2lnbmVkIGludCBsZW5ndGg6MjQ7CiAgICB1bnNpZ25lZCBpbnQgZGVzY3R5cGU6MjsKICAgIHVuc2lnbmVkIGludCBkc3Rjb21wOjE7CiAgICB1bnNpZ25lZCBpbnQgc3JjY29tcDoxOwogICAgdW5zaWduZWQgaW50IGRzdGJ5cGFzczoxOwogICAgdW5zaWduZWQgaW50IHNyY2J5cGFzczoxOwogICAgdW5zaWduZWQgaW50IG9yZGVyOjE7CiAgICB1bnNpZ25lZCBpbnQgZHN0YXRlOjE7CiAgICB2b2lkICpzcmM7CiAgICB2b2lkICpkc3Q7Cn0gaGV4YWdvbl91ZG1hX2Rlc2NyaXB0b3JfdHlwZTBfdDsKCnR5cGVkZWYgc3RydWN0IGhleGFnb25fdWRtYV9kZXNjcmlwdG9yX3R5cGUxX3MKewogICAgdm9pZCAqbmV4dDsKICAgIHVuc2lnbmVkIGludCBsZW5ndGg6MjQ7CiAgICB1bnNpZ25lZCBpbnQgZGVzY3R5cGU6MjsKICAgIHVuc2lnbmVkIGludCBkc3Rjb21wOjE7CiAgICB1bnNpZ25lZCBpbnQgc3JjY29tcDoxOwogICAgdW5zaWduZWQgaW50IGRzdGJ5cGFzczoxOwogICAgdW5zaWduZWQgaW50IHNyY2J5cGFzczoxOwogICAgdW5zaWduZWQgaW50IG9yZGVyOjE7CiAgICB1bnNpZ25lZCBpbnQgZHN0YXRlOjE7CiAgICB2b2lkICpzcmM7CiAgICB2b2lkICpkc3Q7CiAgICB1bnNpZ25lZCBpbnQgYWxsb2NhdGlvbjoyODsKICAgIHVuc2lnbmVkIGludCBwYWRkaW5nOjQ7CiAgICB1bnNpZ25lZCBpbnQgcm9pd2lkdGg6MTY7CiAgICB1bnNpZ25lZCBpbnQgcm9paGVpZ2h0OjE2OwogICAgdW5zaWduZWQgaW50IHNyY3N0cmlkZToxNjsKICAgIHVuc2lnbmVkIGludCBkc3RzdHJpZGU6MTY7CiAgICB1bnNpZ25lZCBpbnQgc3Jjd2lkdGhvZmZzZXQ6MTY7CiAgICB1bnNpZ25lZCBpbnQgZHN0d2lkdGhvZmZzZXQ6MTY7Cn0gaGV4YWdvbl91ZG1hX2Rlc2NyaXB0b3JfdHlwZTFfdDsKCiNlbmRpZiAvKiAhSEVYQUdPTl9UWVBFU19IICovCgBodG14bGludHJpbi5oAC8qPT09LS0tLSBzaGFpbnRyaW4uaCAtIFNIQSBpbnRyaW5zaWNzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKi8KCiNpZm5kZWYgX19JTU1JTlRSSU5fSAojZXJyb3IgIk5ldmVyIHVzZSA8c2hhaW50cmluLmg+IGRpcmVjdGx5OyBpbmNsdWRlIDxpbW1pbnRyaW4uaD4gaW5zdGVhZC4iCiNlbmRpZgoKI2lmbmRlZiBfX1NIQUlOVFJJTl9ICiNkZWZpbmUgX19TSEFJTlRSSU5fSAoKLyogRGVmaW5lIHRoZSBkZWZhdWx0IGF0dHJpYnV0ZXMgZm9yIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlLiAqLwojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUyBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oInNoYSIpLCBfX21pbl92ZWN0b3Jfd2lkdGhfXygxMjgpKSkKCiNkZWZpbmUgX21tX3NoYTFybmRzNF9lcHUzMihWMSwgVjIsIE0pIFwKICBfX2J1aWx0aW5faWEzMl9zaGExcm5kczQoKF9fdjRzaSkoX19tMTI4aSkoVjEpLCAoX192NHNpKShfX20xMjhpKShWMiksIChNKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zaGExbmV4dGVfZXB1MzIoX19tMTI4aSBfX1gsIF9fbTEyOGkgX19ZKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NoYTFuZXh0ZSgoX192NHNpKV9fWCwgKF9fdjRzaSlfX1kpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc2hhMW1zZzFfZXB1MzIoX19tMTI4aSBfX1gsIF9fbTEyOGkgX19ZKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NoYTFtc2cxKChfX3Y0c2kpX19YLCAoX192NHNpKV9fWSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zaGExbXNnMl9lcHUzMihfX20xMjhpIF9fWCwgX19tMTI4aSBfX1kpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2hhMW1zZzIoKF9fdjRzaSlfX1gsIChfX3Y0c2kpX19ZKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3NoYTI1NnJuZHMyX2VwdTMyKF9fbTEyOGkgX19YLCBfX20xMjhpIF9fWSwgX19tMTI4aSBfX1opCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2hhMjU2cm5kczIoKF9fdjRzaSlfX1gsIChfX3Y0c2kpX19ZLCAoX192NHNpKV9fWik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zaGEyNTZtc2cxX2VwdTMyKF9fbTEyOGkgX19YLCBfX20xMjhpIF9fWSkKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zaGEyNTZtc2cxKChfX3Y0c2kpX19YLCAoX192NHNpKV9fWSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zaGEyNTZtc2cyX2VwdTMyKF9fbTEyOGkgX19YLCBfX20xMjhpIF9fWSkKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zaGEyNTZtc2cyKChfX3Y0c2kpX19YLCAoX192NHNpKV9fWSk7Cn0KCiN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlMKCiNlbmRpZiAvKiBfX1NIQUlOVFJJTl9IICovCgB4ODZpbnRyaW4uaABzYW5pdGl6ZXIvYWxsb2NhdG9yX2ludGVyZmFjZS5oAHNhbml0aXplci9zY3Vkb19pbnRlcmZhY2UuaABJbnZhbGlkIGVzY2FwZSBjaGFyYWN0ZXIgaW4gc3RyaW5nLgByb290L3BidW5pdHMvAGVuZHBvczogAFNlYXJjaEJpdFN0YXRlIGluY29uc2lzdGVuY3kAUkUyOiB1bmV4cGVjdGVkIG9wOiAAZW1wdHl3aWR0aCAlI3ggLT4gJWQAaW52YWxpZCBjaGFyYWN0ZXIgY2xhc3MAQ29wdGljAExpbmVhcl9BAEx1AE11bHRhbmkAUGhhZ3NfUGEAU2hhcmFkYQBTb3lvbWJvAFNJR0ZQRQAlczogd3JvbmcgZWxmIHR5cGU6ICVkADAgPD0gaW5kZXggJiYgc3RhdGljX2Nhc3Q8c2l6ZV90PihpbmRleCkgPD0gdmVyZGVmbnVtXwBoYXZlbid0IGxlZnQgQXJlbmEgcmVnaW9uAGoAeABkb3VibGUAJT0AYU4AZXEAPD0AU2EAUHJlcGFyZVRvTW9kaWZ5IHNob3VsZG4ndCBiZSBjYWxsZWQgb24gT0sgc3RhdHVzLgBBdHRlbXB0aW5nIHRvIGZldGNoIHZhbHVlIGluc3RlYWQgb2YgaGFuZGxpbmcgZXJyb3IgAFZhbHVlIG9mIFwALCBjYXAgPSAAcHctPm5leHQgPT0gdwBGaXhlZC9VVEMAZW50cm9weSBmaWxsIGZhaWxlZABUTFMgS0RGIGZhaWxlZC4KAEVOR0lORSByb3V0aW5lcwBmdW5jdGlvbiBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQAa3l0aGUucHJvdG8uS3ppcEluZm8uY3JpdGljYWxfa3ppcF9lcnJvcnMAa3l0aGUucHJvdG8uY29tbW9uLkxhbmd1YWdlLmFuYWx5emVyX3ZlcnNpb24AQ291bGQgbm90IHBhcnNlIHZuYW1lIGdlbmVyYXRvciBjb25maWd1cmF0aW9uOiAAX19jbGFuZ19jdWRhX2J1aWx0aW5fdmFycy5oAF9fY2xhbmdfY3VkYV9pbnRyaW5zaWNzLmgAX19jbGFuZ19jdWRhX21hdGguaAAvKj09PS0tLS0gX193bW1pbnRyaW5fcGNsbXVsLmggLSBQQ01VTCBpbnRyaW5zaWNzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwoKI2lmbmRlZiBfX1dNTUlOVFJJTl9ICiNlcnJvciAiTmV2ZXIgdXNlIDxfX3dtbWludHJpbl9wY2xtdWwuaD4gZGlyZWN0bHk7IGluY2x1ZGUgPHdtbWludHJpbi5oPiBpbnN0ZWFkLiIKI2VuZGlmCgojaWZuZGVmIF9fV01NSU5UUklOX1BDTE1VTF9ICiNkZWZpbmUgX19XTU1JTlRSSU5fUENMTVVMX0gKCi8vLyBNdWx0aXBsaWVzIHR3byA2NC1iaXQgaW50ZWdlciB2YWx1ZXMsIHdoaWNoIGFyZSBzZWxlY3RlZCBmcm9tIHNvdXJjZQovLy8gICAgb3BlcmFuZHMgdXNpbmcgdGhlIGltbWVkaWF0ZS12YWx1ZSBvcGVyYW5kLiBUaGUgbXVsdGlwbGljYXRpb24gaXMgYQovLy8gICAgY2FycnktbGVzcyBtdWx0aXBsaWNhdGlvbiwgYW5kIHRoZSAxMjgtYml0IGludGVnZXIgcHJvZHVjdCBpcyBzdG9yZWQgaW4KLy8vICAgIHRoZSBkZXN0aW5hdGlvbi4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gXGNvZGUKLy8vIF9fbTEyOGkgX21tX2NsbXVsZXBpNjRfc2kxMjgoX19tMTI4aSBfX1gsIF9fbTEyOGkgX19ZLCBjb25zdCBpbnQgX19JKTsKLy8vIFxlbmRjb2RlCi8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUENMTVVMUURRIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fWAovLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4KLy8vIFxwYXJhbSBfX1kKLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBpNjRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuCi8vLyBccGFyYW0gX19JCi8vLyAgICBBbiBpbW1lZGlhdGUgdmFsdWUgc3BlY2lmeWluZyB3aGljaCA2NC1iaXQgdmFsdWVzIHRvIHNlbGVjdCBmcm9tIHRoZQovLy8gICAgb3BlcmFuZHMuIEJpdCAwIGlzIHVzZWQgdG8gc2VsZWN0IGEgdmFsdWUgZnJvbSBvcGVyYW5kIFxhIF9fWCwgYW5kIGJpdAovLy8gICAgNCBpcyB1c2VkIHRvIHNlbGVjdCBhIHZhbHVlIGZyb20gb3BlcmFuZCBcYSBfX1k6IFxuCi8vLyAgICBCaXRbMF09MCBpbmRpY2F0ZXMgdGhhdCBiaXRzWzYzOjBdIG9mIG9wZXJhbmQgXGEgX19YIGFyZSB1c2VkLiBcbgovLy8gICAgQml0WzBdPTEgaW5kaWNhdGVzIHRoYXQgYml0c1sxMjc6NjRdIG9mIG9wZXJhbmQgXGEgX19YIGFyZSB1c2VkLiBcbgovLy8gICAgQml0WzRdPTAgaW5kaWNhdGVzIHRoYXQgYml0c1s2MzowXSBvZiBvcGVyYW5kIFxhIF9fWSBhcmUgdXNlZC4gXG4KLy8vICAgIEJpdFs0XT0xIGluZGljYXRlcyB0aGF0IGJpdHNbMTI3OjY0XSBvZiBvcGVyYW5kIFxhIF9fWSBhcmUgdXNlZC4KLy8vIFxyZXR1cm5zIFRoZSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHJlc3VsdCBvZiB0aGUgY2FycnktbGVzcwovLy8gICAgbXVsdGlwbGljYXRpb24gb2YgdGhlIHNlbGVjdGVkIDY0LWJpdCB2YWx1ZXMuCiNkZWZpbmUgX21tX2NsbXVsZXBpNjRfc2kxMjgoWCwgWSwgSSkgXAogICgoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wY2xtdWxxZHExMjgoKF9fdjJkaSkoX19tMTI4aSkoWCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpKF9fbTEyOGkpKFkpLCAoY2hhcikoSSkpKQoKI2VuZGlmIC8qIF9fV01NSU5UUklOX1BDTE1VTF9IICovCgBhcm1fY2RlLmgALyo9PT0tLS0tIGF2eDJpbnRyaW4uaCAtIEFWWDIgaW50cmluc2ljcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwoKI2lmbmRlZiBfX0lNTUlOVFJJTl9ICiNlcnJvciAiTmV2ZXIgdXNlIDxhdngyaW50cmluLmg+IGRpcmVjdGx5OyBpbmNsdWRlIDxpbW1pbnRyaW4uaD4gaW5zdGVhZC4iCiNlbmRpZgoKI2lmbmRlZiBfX0FWWDJJTlRSSU5fSAojZGVmaW5lIF9fQVZYMklOVFJJTl9ICgovKiBEZWZpbmUgdGhlIGRlZmF1bHQgYXR0cmlidXRlcyBmb3IgdGhlIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUuICovCiNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTMjU2IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygiYXZ4MiIpLCBfX21pbl92ZWN0b3Jfd2lkdGhfXygyNTYpKSkKI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJhdngyIiksIF9fbWluX3ZlY3Rvcl93aWR0aF9fKDEyOCkpKQoKLyogU1NFNCBNdWx0aXBsZSBQYWNrZWQgU3VtcyBvZiBBYnNvbHV0ZSBEaWZmZXJlbmNlLiAgKi8KI2RlZmluZSBfbW0yNTZfbXBzYWRid19lcHU4KFgsIFksIE0pIFwKICAoKF9fbTI1NmkpX19idWlsdGluX2lhMzJfbXBzYWRidzI1NigoX192MzJxaSkoX19tMjU2aSkoWCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MzJxaSkoX19tMjU2aSkoWSksIChpbnQpKE0pKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9hYnNfZXBpOChfX20yNTZpIF9fYSkKewogICAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3BhYnNiMjU2KChfX3YzMnFpKV9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9hYnNfZXBpMTYoX19tMjU2aSBfX2EpCnsKICAgIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9wYWJzdzI1NigoX192MTZoaSlfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfYWJzX2VwaTMyKF9fbTI1NmkgX19hKQp7CiAgICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfcGFic2QyNTYoKF9fdjhzaSlfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfcGFja3NfZXBpMTYoX19tMjU2aSBfX2EsIF9fbTI1NmkgX19iKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3BhY2tzc3diMjU2KChfX3YxNmhpKV9fYSwgKF9fdjE2aGkpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X3BhY2tzX2VwaTMyKF9fbTI1NmkgX19hLCBfX20yNTZpIF9fYikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9wYWNrc3NkdzI1NigoX192OHNpKV9fYSwgKF9fdjhzaSlfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfcGFja3VzX2VwaTE2KF9fbTI1NmkgX19hLCBfX20yNTZpIF9fYikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9wYWNrdXN3YjI1NigoX192MTZoaSlfX2EsIChfX3YxNmhpKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9wYWNrdXNfZXBpMzIoX19tMjU2aSBfX1YxLCBfX20yNTZpIF9fVjIpCnsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX3BhY2t1c2R3MjU2KChfX3Y4c2kpX19WMSwgKF9fdjhzaSlfX1YyKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2FkZF9lcGk4KF9fbTI1NmkgX19hLCBfX20yNTZpIF9fYikKewogIHJldHVybiAoX19tMjU2aSkoKF9fdjMycXUpX19hICsgKF9fdjMycXUpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2FkZF9lcGkxNihfX20yNTZpIF9fYSwgX19tMjU2aSBfX2IpCnsKICByZXR1cm4gKF9fbTI1NmkpKChfX3YxNmh1KV9fYSArIChfX3YxNmh1KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9hZGRfZXBpMzIoX19tMjU2aSBfX2EsIF9fbTI1NmkgX19iKQp7CiAgcmV0dXJuIChfX20yNTZpKSgoX192OHN1KV9fYSArIChfX3Y4c3UpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2FkZF9lcGk2NChfX20yNTZpIF9fYSwgX19tMjU2aSBfX2IpCnsKICByZXR1cm4gKF9fbTI1NmkpKChfX3Y0ZHUpX19hICsgKF9fdjRkdSlfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfYWRkc19lcGk4KF9fbTI1NmkgX19hLCBfX20yNTZpIF9fYikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9wYWRkc2IyNTYoKF9fdjMycWkpX19hLCAoX192MzJxaSlfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfYWRkc19lcGkxNihfX20yNTZpIF9fYSwgX19tMjU2aSBfX2IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfcGFkZHN3MjU2KChfX3YxNmhpKV9fYSwgKF9fdjE2aGkpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2FkZHNfZXB1OChfX20yNTZpIF9fYSwgX19tMjU2aSBfX2IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfcGFkZHVzYjI1NigoX192MzJxaSlfX2EsIChfX3YzMnFpKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9hZGRzX2VwdTE2KF9fbTI1NmkgX19hLCBfX20yNTZpIF9fYikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9wYWRkdXN3MjU2KChfX3YxNmhpKV9fYSwgKF9fdjE2aGkpX19iKTsKfQoKI2RlZmluZSBfbW0yNTZfYWxpZ25yX2VwaTgoYSwgYiwgbikgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9wYWxpZ25yMjU2KChfX3YzMnFpKShfX20yNTZpKShhKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YzMnFpKShfX20yNTZpKShiKSwgKG4pKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9hbmRfc2kyNTYoX19tMjU2aSBfX2EsIF9fbTI1NmkgX19iKQp7CiAgcmV0dXJuIChfX20yNTZpKSgoX192NGR1KV9fYSAmIChfX3Y0ZHUpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2FuZG5vdF9zaTI1NihfX20yNTZpIF9fYSwgX19tMjU2aSBfX2IpCnsKICByZXR1cm4gKF9fbTI1NmkpKH4oX192NGR1KV9fYSAmIChfX3Y0ZHUpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2F2Z19lcHU4KF9fbTI1NmkgX19hLCBfX20yNTZpIF9fYikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9wYXZnYjI1NigoX192MzJxaSlfX2EsIChfX3YzMnFpKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9hdmdfZXB1MTYoX19tMjU2aSBfX2EsIF9fbTI1NmkgX19iKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3Bhdmd3MjU2KChfX3YxNmhpKV9fYSwgKF9fdjE2aGkpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2JsZW5kdl9lcGk4KF9fbTI1NmkgX19WMSwgX19tMjU2aSBfX1YyLCBfX20yNTZpIF9fTSkKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9wYmxlbmR2YjI1NigoX192MzJxaSlfX1YxLCAoX192MzJxaSlfX1YyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjMycWkpX19NKTsKfQoKI2RlZmluZSBfbW0yNTZfYmxlbmRfZXBpMTYoVjEsIFYyLCBNKSBcCiAgKChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3BibGVuZHcyNTYoKF9fdjE2aGkpKF9fbTI1NmkpKFYxKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNmhpKShfX20yNTZpKShWMiksIChpbnQpKE0pKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9jbXBlcV9lcGk4KF9fbTI1NmkgX19hLCBfX20yNTZpIF9fYikKewogIHJldHVybiAoX19tMjU2aSkoKF9fdjMycWkpX19hID09IChfX3YzMnFpKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9jbXBlcV9lcGkxNihfX20yNTZpIF9fYSwgX19tMjU2aSBfX2IpCnsKICByZXR1cm4gKF9fbTI1NmkpKChfX3YxNmhpKV9fYSA9PSAoX192MTZoaSlfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfY21wZXFfZXBpMzIoX19tMjU2aSBfX2EsIF9fbTI1NmkgX19iKQp7CiAgcmV0dXJuIChfX20yNTZpKSgoX192OHNpKV9fYSA9PSAoX192OHNpKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9jbXBlcV9lcGk2NChfX20yNTZpIF9fYSwgX19tMjU2aSBfX2IpCnsKICByZXR1cm4gKF9fbTI1NmkpKChfX3Y0ZGkpX19hID09IChfX3Y0ZGkpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2NtcGd0X2VwaTgoX19tMjU2aSBfX2EsIF9fbTI1NmkgX19iKQp7CiAgLyogVGhpcyBmdW5jdGlvbiBhbHdheXMgcGVyZm9ybXMgYSBzaWduZWQgY29tcGFyaXNvbiwgYnV0IF9fdjMycWkgaXMgYSBjaGFyCiAgICAgd2hpY2ggbWF5IGJlIHNpZ25lZCBvciB1bnNpZ25lZCwgc28gdXNlIF9fdjMycXMuICovCiAgcmV0dXJuIChfX20yNTZpKSgoX192MzJxcylfX2EgPiAoX192MzJxcylfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfY21wZ3RfZXBpMTYoX19tMjU2aSBfX2EsIF9fbTI1NmkgX19iKQp7CiAgcmV0dXJuIChfX20yNTZpKSgoX192MTZoaSlfX2EgPiAoX192MTZoaSlfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfY21wZ3RfZXBpMzIoX19tMjU2aSBfX2EsIF9fbTI1NmkgX19iKQp7CiAgcmV0dXJuIChfX20yNTZpKSgoX192OHNpKV9fYSA+IChfX3Y4c2kpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2NtcGd0X2VwaTY0KF9fbTI1NmkgX19hLCBfX20yNTZpIF9fYikKewogIHJldHVybiAoX19tMjU2aSkoKF9fdjRkaSlfX2EgPiAoX192NGRpKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9oYWRkX2VwaTE2KF9fbTI1NmkgX19hLCBfX20yNTZpIF9fYikKewogICAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3BoYWRkdzI1NigoX192MTZoaSlfX2EsIChfX3YxNmhpKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9oYWRkX2VwaTMyKF9fbTI1NmkgX19hLCBfX20yNTZpIF9fYikKewogICAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3BoYWRkZDI1NigoX192OHNpKV9fYSwgKF9fdjhzaSlfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfaGFkZHNfZXBpMTYoX19tMjU2aSBfX2EsIF9fbTI1NmkgX19iKQp7CiAgICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfcGhhZGRzdzI1NigoX192MTZoaSlfX2EsIChfX3YxNmhpKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9oc3ViX2VwaTE2KF9fbTI1NmkgX19hLCBfX20yNTZpIF9fYikKewogICAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3Boc3VidzI1NigoX192MTZoaSlfX2EsIChfX3YxNmhpKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9oc3ViX2VwaTMyKF9fbTI1NmkgX19hLCBfX20yNTZpIF9fYikKewogICAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3Boc3ViZDI1NigoX192OHNpKV9fYSwgKF9fdjhzaSlfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfaHN1YnNfZXBpMTYoX19tMjU2aSBfX2EsIF9fbTI1NmkgX19iKQp7CiAgICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfcGhzdWJzdzI1NigoX192MTZoaSlfX2EsIChfX3YxNmhpKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYWRkdWJzX2VwaTE2KF9fbTI1NmkgX19hLCBfX20yNTZpIF9fYikKewogICAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3BtYWRkdWJzdzI1NigoX192MzJxaSlfX2EsIChfX3YzMnFpKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYWRkX2VwaTE2KF9fbTI1NmkgX19hLCBfX20yNTZpIF9fYikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9wbWFkZHdkMjU2KChfX3YxNmhpKV9fYSwgKF9fdjE2aGkpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21heF9lcGk4KF9fbTI1NmkgX19hLCBfX20yNTZpIF9fYikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9wbWF4c2IyNTYoKF9fdjMycWkpX19hLCAoX192MzJxaSlfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWF4X2VwaTE2KF9fbTI1NmkgX19hLCBfX20yNTZpIF9fYikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9wbWF4c3cyNTYoKF9fdjE2aGkpX19hLCAoX192MTZoaSlfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWF4X2VwaTMyKF9fbTI1NmkgX19hLCBfX20yNTZpIF9fYikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9wbWF4c2QyNTYoKF9fdjhzaSlfX2EsIChfX3Y4c2kpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21heF9lcHU4KF9fbTI1NmkgX19hLCBfX20yNTZpIF9fYikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9wbWF4dWIyNTYoKF9fdjMycWkpX19hLCAoX192MzJxaSlfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWF4X2VwdTE2KF9fbTI1NmkgX19hLCBfX20yNTZpIF9fYikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9wbWF4dXcyNTYoKF9fdjE2aGkpX19hLCAoX192MTZoaSlfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWF4X2VwdTMyKF9fbTI1NmkgX19hLCBfX20yNTZpIF9fYikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9wbWF4dWQyNTYoKF9fdjhzaSlfX2EsIChfX3Y4c2kpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21pbl9lcGk4KF9fbTI1NmkgX19hLCBfX20yNTZpIF9fYikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9wbWluc2IyNTYoKF9fdjMycWkpX19hLCAoX192MzJxaSlfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWluX2VwaTE2KF9fbTI1NmkgX19hLCBfX20yNTZpIF9fYikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9wbWluc3cyNTYoKF9fdjE2aGkpX19hLCAoX192MTZoaSlfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWluX2VwaTMyKF9fbTI1NmkgX19hLCBfX20yNTZpIF9fYikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9wbWluc2QyNTYoKF9fdjhzaSlfX2EsIChfX3Y4c2kpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21pbl9lcHU4KF9fbTI1NmkgX19hLCBfX20yNTZpIF9fYikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9wbWludWIyNTYoKF9fdjMycWkpX19hLCAoX192MzJxaSlfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWluX2VwdTE2KF9fbTI1NmkgX19hLCBfX20yNTZpIF9fYikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9wbWludXcyNTYgKChfX3YxNmhpKV9fYSwgKF9fdjE2aGkpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21pbl9lcHUzMihfX20yNTZpIF9fYSwgX19tMjU2aSBfX2IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfcG1pbnVkMjU2KChfX3Y4c2kpX19hLCAoX192OHNpKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21vdmVtYXNrX2VwaTgoX19tMjU2aSBfX2EpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfcG1vdm1za2IyNTYoKF9fdjMycWkpX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2N2dGVwaThfZXBpMTYoX19tMTI4aSBfX1YpCnsKICAvKiBUaGlzIGZ1bmN0aW9uIGFsd2F5cyBwZXJmb3JtcyBhIHNpZ25lZCBleHRlbnNpb24sIGJ1dCBfX3YxNnFpIGlzIGEgY2hhcgogICAgIHdoaWNoIG1heSBiZSBzaWduZWQgb3IgdW5zaWduZWQsIHNvIHVzZSBfX3YxNnFzLiAqLwogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5fY29udmVydHZlY3RvcigoX192MTZxcylfX1YsIF9fdjE2aGkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfY3Z0ZXBpOF9lcGkzMihfX20xMjhpIF9fVikKewogIC8qIFRoaXMgZnVuY3Rpb24gYWx3YXlzIHBlcmZvcm1zIGEgc2lnbmVkIGV4dGVuc2lvbiwgYnV0IF9fdjE2cWkgaXMgYSBjaGFyCiAgICAgd2hpY2ggbWF5IGJlIHNpZ25lZCBvciB1bnNpZ25lZCwgc28gdXNlIF9fdjE2cXMuICovCiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3YxNnFzKV9fViwgKF9fdjE2cXMpX19WLCAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3KSwgX192OHNpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2N2dGVwaThfZXBpNjQoX19tMTI4aSBfX1YpCnsKICAvKiBUaGlzIGZ1bmN0aW9uIGFsd2F5cyBwZXJmb3JtcyBhIHNpZ25lZCBleHRlbnNpb24sIGJ1dCBfX3YxNnFpIGlzIGEgY2hhcgogICAgIHdoaWNoIG1heSBiZSBzaWduZWQgb3IgdW5zaWduZWQsIHNvIHVzZSBfX3YxNnFzLiAqLwogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5fY29udmVydHZlY3RvcihfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192MTZxcylfX1YsIChfX3YxNnFzKV9fViwgMCwgMSwgMiwgMyksIF9fdjRkaSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9jdnRlcGkxNl9lcGkzMihfX20xMjhpIF9fVikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5fY29udmVydHZlY3RvcigoX192OGhpKV9fViwgX192OHNpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2N2dGVwaTE2X2VwaTY0KF9fbTEyOGkgX19WKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y4aGkpX19WLCAoX192OGhpKV9fViwgMCwgMSwgMiwgMyksIF9fdjRkaSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9jdnRlcGkzMl9lcGk2NChfX20xMjhpIF9fVikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5fY29udmVydHZlY3RvcigoX192NHNpKV9fViwgX192NGRpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2N2dGVwdThfZXBpMTYoX19tMTI4aSBfX1YpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoKF9fdjE2cXUpX19WLCBfX3YxNmhpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2N2dGVwdThfZXBpMzIoX19tMTI4aSBfX1YpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjE2cXUpX19WLCAoX192MTZxdSlfX1YsIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcpLCBfX3Y4c2kpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfY3Z0ZXB1OF9lcGk2NChfX20xMjhpIF9fVikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5fY29udmVydHZlY3RvcihfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192MTZxdSlfX1YsIChfX3YxNnF1KV9fViwgMCwgMSwgMiwgMyksIF9fdjRkaSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9jdnRlcHUxNl9lcGkzMihfX20xMjhpIF9fVikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5fY29udmVydHZlY3RvcigoX192OGh1KV9fViwgX192OHNpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2N2dGVwdTE2X2VwaTY0KF9fbTEyOGkgX19WKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y4aHUpX19WLCAoX192OGh1KV9fViwgMCwgMSwgMiwgMyksIF9fdjRkaSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9jdnRlcHUzMl9lcGk2NChfX20xMjhpIF9fVikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5fY29udmVydHZlY3RvcigoX192NHN1KV9fViwgX192NGRpKTsKfQoKc3RhdGljIF9faW5saW5lX18gIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tdWxfZXBpMzIoX19tMjU2aSBfX2EsIF9fbTI1NmkgX19iKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3BtdWxkcTI1NigoX192OHNpKV9fYSwgKF9fdjhzaSlfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbXVsaHJzX2VwaTE2KF9fbTI1NmkgX19hLCBfX20yNTZpIF9fYikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9wbXVsaHJzdzI1NigoX192MTZoaSlfX2EsIChfX3YxNmhpKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tdWxoaV9lcHUxNihfX20yNTZpIF9fYSwgX19tMjU2aSBfX2IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfcG11bGh1dzI1NigoX192MTZoaSlfX2EsIChfX3YxNmhpKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tdWxoaV9lcGkxNihfX20yNTZpIF9fYSwgX19tMjU2aSBfX2IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfcG11bGh3MjU2KChfX3YxNmhpKV9fYSwgKF9fdjE2aGkpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X211bGxvX2VwaTE2KF9fbTI1NmkgX19hLCBfX20yNTZpIF9fYikKewogIHJldHVybiAoX19tMjU2aSkoKF9fdjE2aHUpX19hICogKF9fdjE2aHUpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tdWxsb19lcGkzMiAoX19tMjU2aSBfX2EsIF9fbTI1NmkgX19iKQp7CiAgcmV0dXJuIChfX20yNTZpKSgoX192OHN1KV9fYSAqIChfX3Y4c3UpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X211bF9lcHUzMihfX20yNTZpIF9fYSwgX19tMjU2aSBfX2IpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfcG11bHVkcTI1NigoX192OHNpKV9fYSwgKF9fdjhzaSlfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfb3Jfc2kyNTYoX19tMjU2aSBfX2EsIF9fbTI1NmkgX19iKQp7CiAgcmV0dXJuIChfX20yNTZpKSgoX192NGR1KV9fYSB8IChfX3Y0ZHUpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X3NhZF9lcHU4KF9fbTI1NmkgX19hLCBfX20yNTZpIF9fYikKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9wc2FkYncyNTYoKF9fdjMycWkpX19hLCAoX192MzJxaSlfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfc2h1ZmZsZV9lcGk4KF9fbTI1NmkgX19hLCBfX20yNTZpIF9fYikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9wc2h1ZmIyNTYoKF9fdjMycWkpX19hLCAoX192MzJxaSlfX2IpOwp9CgojZGVmaW5lIF9tbTI1Nl9zaHVmZmxlX2VwaTMyKGEsIGltbSkgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9wc2h1ZmQyNTYoKF9fdjhzaSkoX19tMjU2aSkoYSksIChpbnQpKGltbSkpKQoKI2RlZmluZSBfbW0yNTZfc2h1ZmZsZWhpX2VwaTE2KGEsIGltbSkgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9wc2h1Zmh3MjU2KChfX3YxNmhpKShfX20yNTZpKShhKSwgKGludCkoaW1tKSkpCgojZGVmaW5lIF9tbTI1Nl9zaHVmZmxlbG9fZXBpMTYoYSwgaW1tKSBcCiAgKChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3BzaHVmbHcyNTYoKF9fdjE2aGkpKF9fbTI1NmkpKGEpLCAoaW50KShpbW0pKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9zaWduX2VwaTgoX19tMjU2aSBfX2EsIF9fbTI1NmkgX19iKQp7CiAgICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfcHNpZ25iMjU2KChfX3YzMnFpKV9fYSwgKF9fdjMycWkpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X3NpZ25fZXBpMTYoX19tMjU2aSBfX2EsIF9fbTI1NmkgX19iKQp7CiAgICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfcHNpZ253MjU2KChfX3YxNmhpKV9fYSwgKF9fdjE2aGkpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X3NpZ25fZXBpMzIoX19tMjU2aSBfX2EsIF9fbTI1NmkgX19iKQp7CiAgICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfcHNpZ25kMjU2KChfX3Y4c2kpX19hLCAoX192OHNpKV9fYik7Cn0KCiNkZWZpbmUgX21tMjU2X3NsbGlfc2kyNTYoYSwgaW1tKSBcCiAgKChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3BzbGxkcWkyNTZfYnl0ZXNoaWZ0KChfX3Y0ZGkpKF9fbTI1NmkpKGEpLCAoaW50KShpbW0pKSkKCiNkZWZpbmUgX21tMjU2X2JzbGxpX2VwaTEyOChhLCBpbW0pIFwKICAoKF9fbTI1NmkpX19idWlsdGluX2lhMzJfcHNsbGRxaTI1Nl9ieXRlc2hpZnQoKF9fdjRkaSkoX19tMjU2aSkoYSksIChpbnQpKGltbSkpKQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X3NsbGlfZXBpMTYoX19tMjU2aSBfX2EsIGludCBfX2NvdW50KQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3BzbGx3aTI1NigoX192MTZoaSlfX2EsIF9fY291bnQpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfc2xsX2VwaTE2KF9fbTI1NmkgX19hLCBfX20xMjhpIF9fY291bnQpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfcHNsbHcyNTYoKF9fdjE2aGkpX19hLCAoX192OGhpKV9fY291bnQpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfc2xsaV9lcGkzMihfX20yNTZpIF9fYSwgaW50IF9fY291bnQpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfcHNsbGRpMjU2KChfX3Y4c2kpX19hLCBfX2NvdW50KTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X3NsbF9lcGkzMihfX20yNTZpIF9fYSwgX19tMTI4aSBfX2NvdW50KQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3BzbGxkMjU2KChfX3Y4c2kpX19hLCAoX192NHNpKV9fY291bnQpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfc2xsaV9lcGk2NChfX20yNTZpIF9fYSwgaW50IF9fY291bnQpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfcHNsbHFpMjU2KChfX3Y0ZGkpX19hLCBfX2NvdW50KTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X3NsbF9lcGk2NChfX20yNTZpIF9fYSwgX19tMTI4aSBfX2NvdW50KQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3BzbGxxMjU2KChfX3Y0ZGkpX19hLCBfX2NvdW50KTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X3NyYWlfZXBpMTYoX19tMjU2aSBfX2EsIGludCBfX2NvdW50KQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3BzcmF3aTI1NigoX192MTZoaSlfX2EsIF9fY291bnQpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfc3JhX2VwaTE2KF9fbTI1NmkgX19hLCBfX20xMjhpIF9fY291bnQpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfcHNyYXcyNTYoKF9fdjE2aGkpX19hLCAoX192OGhpKV9fY291bnQpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfc3JhaV9lcGkzMihfX20yNTZpIF9fYSwgaW50IF9fY291bnQpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfcHNyYWRpMjU2KChfX3Y4c2kpX19hLCBfX2NvdW50KTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X3NyYV9lcGkzMihfX20yNTZpIF9fYSwgX19tMTI4aSBfX2NvdW50KQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3BzcmFkMjU2KChfX3Y4c2kpX19hLCAoX192NHNpKV9fY291bnQpOwp9CgojZGVmaW5lIF9tbTI1Nl9zcmxpX3NpMjU2KGEsIGltbSkgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9wc3JsZHFpMjU2X2J5dGVzaGlmdCgoX19tMjU2aSkoYSksIChpbnQpKGltbSkpKQoKI2RlZmluZSBfbW0yNTZfYnNybGlfZXBpMTI4KGEsIGltbSkgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9wc3JsZHFpMjU2X2J5dGVzaGlmdCgoX19tMjU2aSkoYSksIChpbnQpKGltbSkpKQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X3NybGlfZXBpMTYoX19tMjU2aSBfX2EsIGludCBfX2NvdW50KQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3Bzcmx3aTI1NigoX192MTZoaSlfX2EsIF9fY291bnQpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfc3JsX2VwaTE2KF9fbTI1NmkgX19hLCBfX20xMjhpIF9fY291bnQpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfcHNybHcyNTYoKF9fdjE2aGkpX19hLCAoX192OGhpKV9fY291bnQpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfc3JsaV9lcGkzMihfX20yNTZpIF9fYSwgaW50IF9fY291bnQpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfcHNybGRpMjU2KChfX3Y4c2kpX19hLCBfX2NvdW50KTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X3NybF9lcGkzMihfX20yNTZpIF9fYSwgX19tMTI4aSBfX2NvdW50KQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3BzcmxkMjU2KChfX3Y4c2kpX19hLCAoX192NHNpKV9fY291bnQpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfc3JsaV9lcGk2NChfX20yNTZpIF9fYSwgaW50IF9fY291bnQpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfcHNybHFpMjU2KChfX3Y0ZGkpX19hLCBfX2NvdW50KTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X3NybF9lcGk2NChfX20yNTZpIF9fYSwgX19tMTI4aSBfX2NvdW50KQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3BzcmxxMjU2KChfX3Y0ZGkpX19hLCBfX2NvdW50KTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X3N1Yl9lcGk4KF9fbTI1NmkgX19hLCBfX20yNTZpIF9fYikKewogIHJldHVybiAoX19tMjU2aSkoKF9fdjMycXUpX19hIC0gKF9fdjMycXUpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X3N1Yl9lcGkxNihfX20yNTZpIF9fYSwgX19tMjU2aSBfX2IpCnsKICByZXR1cm4gKF9fbTI1NmkpKChfX3YxNmh1KV9fYSAtIChfX3YxNmh1KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9zdWJfZXBpMzIoX19tMjU2aSBfX2EsIF9fbTI1NmkgX19iKQp7CiAgcmV0dXJuIChfX20yNTZpKSgoX192OHN1KV9fYSAtIChfX3Y4c3UpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X3N1Yl9lcGk2NChfX20yNTZpIF9fYSwgX19tMjU2aSBfX2IpCnsKICByZXR1cm4gKF9fbTI1NmkpKChfX3Y0ZHUpX19hIC0gKF9fdjRkdSlfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfc3Vic19lcGk4KF9fbTI1NmkgX19hLCBfX20yNTZpIF9fYikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9wc3Vic2IyNTYoKF9fdjMycWkpX19hLCAoX192MzJxaSlfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfc3Vic19lcGkxNihfX20yNTZpIF9fYSwgX19tMjU2aSBfX2IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfcHN1YnN3MjU2KChfX3YxNmhpKV9fYSwgKF9fdjE2aGkpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X3N1YnNfZXB1OChfX20yNTZpIF9fYSwgX19tMjU2aSBfX2IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfcHN1YnVzYjI1NigoX192MzJxaSlfX2EsIChfX3YzMnFpKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9zdWJzX2VwdTE2KF9fbTI1NmkgX19hLCBfX20yNTZpIF9fYikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9wc3VidXN3MjU2KChfX3YxNmhpKV9fYSwgKF9fdjE2aGkpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X3VucGFja2hpX2VwaTgoX19tMjU2aSBfX2EsIF9fbTI1NmkgX19iKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3YzMnFpKV9fYSwgKF9fdjMycWkpX19iLCA4LCAzMis4LCA5LCAzMis5LCAxMCwgMzIrMTAsIDExLCAzMisxMSwgMTIsIDMyKzEyLCAxMywgMzIrMTMsIDE0LCAzMisxNCwgMTUsIDMyKzE1LCAyNCwgMzIrMjQsIDI1LCAzMisyNSwgMjYsIDMyKzI2LCAyNywgMzIrMjcsIDI4LCAzMisyOCwgMjksIDMyKzI5LCAzMCwgMzIrMzAsIDMxLCAzMiszMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl91bnBhY2toaV9lcGkxNihfX20yNTZpIF9fYSwgX19tMjU2aSBfX2IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjE2aGkpX19hLCAoX192MTZoaSlfX2IsIDQsIDE2KzQsIDUsIDE2KzUsIDYsIDE2KzYsIDcsIDE2KzcsIDEyLCAxNisxMiwgMTMsIDE2KzEzLCAxNCwgMTYrMTQsIDE1LCAxNisxNSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl91bnBhY2toaV9lcGkzMihfX20yNTZpIF9fYSwgX19tMjU2aSBfX2IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjhzaSlfX2EsIChfX3Y4c2kpX19iLCAyLCA4KzIsIDMsIDgrMywgNiwgOCs2LCA3LCA4KzcpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfdW5wYWNraGlfZXBpNjQoX19tMjU2aSBfX2EsIF9fbTI1NmkgX19iKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y0ZGkpX19hLCAoX192NGRpKV9fYiwgMSwgNCsxLCAzLCA0KzMpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfdW5wYWNrbG9fZXBpOChfX20yNTZpIF9fYSwgX19tMjU2aSBfX2IpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjMycWkpX19hLCAoX192MzJxaSlfX2IsIDAsIDMyKzAsIDEsIDMyKzEsIDIsIDMyKzIsIDMsIDMyKzMsIDQsIDMyKzQsIDUsIDMyKzUsIDYsIDMyKzYsIDcsIDMyKzcsIDE2LCAzMisxNiwgMTcsIDMyKzE3LCAxOCwgMzIrMTgsIDE5LCAzMisxOSwgMjAsIDMyKzIwLCAyMSwgMzIrMjEsIDIyLCAzMisyMiwgMjMsIDMyKzIzKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X3VucGFja2xvX2VwaTE2KF9fbTI1NmkgX19hLCBfX20yNTZpIF9fYikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192MTZoaSlfX2EsIChfX3YxNmhpKV9fYiwgMCwgMTYrMCwgMSwgMTYrMSwgMiwgMTYrMiwgMywgMTYrMywgOCwgMTYrOCwgOSwgMTYrOSwgMTAsIDE2KzEwLCAxMSwgMTYrMTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfdW5wYWNrbG9fZXBpMzIoX19tMjU2aSBfX2EsIF9fbTI1NmkgX19iKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y4c2kpX19hLCAoX192OHNpKV9fYiwgMCwgOCswLCAxLCA4KzEsIDQsIDgrNCwgNSwgOCs1KTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X3VucGFja2xvX2VwaTY0KF9fbTI1NmkgX19hLCBfX20yNTZpIF9fYikKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192NGRpKV9fYSwgKF9fdjRkaSlfX2IsIDAsIDQrMCwgMiwgNCsyKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X3hvcl9zaTI1NihfX20yNTZpIF9fYSwgX19tMjU2aSBfX2IpCnsKICByZXR1cm4gKF9fbTI1NmkpKChfX3Y0ZHUpX19hIF4gKF9fdjRkdSlfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfc3RyZWFtX2xvYWRfc2kyNTYoX19tMjU2aSBjb25zdCAqX19WKQp7CiAgdHlwZWRlZiBfX3Y0ZGkgX192NGRpX2FsaWduZWQgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCgzMikpKTsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX25vbnRlbXBvcmFsX2xvYWQoKGNvbnN0IF9fdjRkaV9hbGlnbmVkICopX19WKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fYnJvYWRjYXN0c3NfcHMoX19tMTI4IF9fWCkKewogIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y0c2YpX19YLCAoX192NHNmKV9fWCwgMCwgMCwgMCwgMCk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9icm9hZGNhc3RzZF9wZChfX20xMjhkIF9fYSkKewogIHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192MmRmKV9fYSwgKF9fdjJkZilfX2EsIDAsIDApOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9icm9hZGNhc3Rzc19wcyhfX20xMjggX19YKQp7CiAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjRzZilfX1gsIChfX3Y0c2YpX19YLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2Jyb2FkY2FzdHNkX3BkKF9fbTEyOGQgX19YKQp7CiAgcmV0dXJuIChfX20yNTZkKV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3YyZGYpX19YLCAoX192MmRmKV9fWCwgMCwgMCwgMCwgMCk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9icm9hZGNhc3RzaTEyOF9zaTI1NihfX20xMjhpIF9fWCkKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192MmRpKV9fWCwgKF9fdjJkaSlfX1gsIDAsIDEsIDAsIDEpOwp9CgojZGVmaW5lIF9tbV9icm9hZGNhc3RzaTEyOF9zaTI1NihYKSBfbW0yNTZfYnJvYWRjYXN0c2kxMjhfc2kyNTYoWCkKCiNkZWZpbmUgX21tX2JsZW5kX2VwaTMyKFYxLCBWMiwgTSkgXAogICgoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wYmxlbmRkMTI4KChfX3Y0c2kpKF9fbTEyOGkpKFYxKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpKF9fbTEyOGkpKFYyKSwgKGludCkoTSkpKQoKI2RlZmluZSBfbW0yNTZfYmxlbmRfZXBpMzIoVjEsIFYyLCBNKSBcCiAgKChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3BibGVuZGQyNTYoKF9fdjhzaSkoX19tMjU2aSkoVjEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSkoX19tMjU2aSkoVjIpLCAoaW50KShNKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfYnJvYWRjYXN0Yl9lcGk4KF9fbTEyOGkgX19YKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3YxNnFpKV9fWCwgKF9fdjE2cWkpX19YLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2Jyb2FkY2FzdHdfZXBpMTYoX19tMTI4aSBfX1gpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjhoaSlfX1gsIChfX3Y4aGkpX19YLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2Jyb2FkY2FzdGRfZXBpMzIoX19tMTI4aSBfX1gpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjRzaSlfX1gsIChfX3Y0c2kpX19YLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2Jyb2FkY2FzdHFfZXBpNjQoX19tMTI4aSBfX1gpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjJkaSlfX1gsIChfX3YyZGkpX19YLCAwLCAwLCAwLCAwKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX2Jyb2FkY2FzdGJfZXBpOChfX20xMjhpIF9fWCkKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192MTZxaSlfX1gsIChfX3YxNnFpKV9fWCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9icm9hZGNhc3R3X2VwaTE2KF9fbTEyOGkgX19YKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y4aGkpX19YLCAoX192OGhpKV9fWCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCk7Cn0KCgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fYnJvYWRjYXN0ZF9lcGkzMihfX20xMjhpIF9fWCkKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192NHNpKV9fWCwgKF9fdjRzaSlfX1gsIDAsIDAsIDAsIDApOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fYnJvYWRjYXN0cV9lcGk2NChfX20xMjhpIF9fWCkKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192MmRpKV9fWCwgKF9fdjJkaSlfX1gsIDAsIDApOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfcGVybXV0ZXZhcjh4MzJfZXBpMzIoX19tMjU2aSBfX2EsIF9fbTI1NmkgX19iKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3Blcm12YXJzaTI1NigoX192OHNpKV9fYSwgKF9fdjhzaSlfX2IpOwp9CgojZGVmaW5lIF9tbTI1Nl9wZXJtdXRlNHg2NF9wZChWLCBNKSBcCiAgKChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX3Blcm1kZjI1NigoX192NGRmKShfX20yNTZkKShWKSwgKGludCkoTSkpKQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfcGVybXV0ZXZhcjh4MzJfcHMoX19tMjU2IF9fYSwgX19tMjU2aSBfX2IpCnsKICByZXR1cm4gKF9fbTI1NilfX2J1aWx0aW5faWEzMl9wZXJtdmFyc2YyNTYoKF9fdjhzZilfX2EsIChfX3Y4c2kpX19iKTsKfQoKI2RlZmluZSBfbW0yNTZfcGVybXV0ZTR4NjRfZXBpNjQoViwgTSkgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9wZXJtZGkyNTYoKF9fdjRkaSkoX19tMjU2aSkoViksIChpbnQpKE0pKSkKCiNkZWZpbmUgX21tMjU2X3Blcm11dGUyeDEyOF9zaTI1NihWMSwgVjIsIE0pIFwKICAoKF9fbTI1NmkpX19idWlsdGluX2lhMzJfcGVybXRpMjU2KChfX20yNTZpKShWMSksIChfX20yNTZpKShWMiksIChpbnQpKE0pKSkKCiNkZWZpbmUgX21tMjU2X2V4dHJhY3RpMTI4X3NpMjU2KFYsIE0pIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfZXh0cmFjdDEyOGkyNTYoKF9fdjRkaSkoX19tMjU2aSkoViksIChpbnQpKE0pKSkKCiNkZWZpbmUgX21tMjU2X2luc2VydGkxMjhfc2kyNTYoVjEsIFYyLCBNKSBcCiAgKChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX2luc2VydDEyOGkyNTYoKF9fdjRkaSkoX19tMjU2aSkoVjEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSkoX19tMTI4aSkoVjIpLCAoaW50KShNKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza2xvYWRfZXBpMzIoaW50IGNvbnN0ICpfX1gsIF9fbTI1NmkgX19NKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX21hc2tsb2FkZDI1NigoY29uc3QgX192OHNpICopX19YLCAoX192OHNpKV9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrbG9hZF9lcGk2NChsb25nIGxvbmcgY29uc3QgKl9fWCwgX19tMjU2aSBfX00pCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfbWFza2xvYWRxMjU2KChjb25zdCBfX3Y0ZGkgKilfX1gsIChfX3Y0ZGkpX19NKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tsb2FkX2VwaTMyKGludCBjb25zdCAqX19YLCBfX20xMjhpIF9fTSkKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9tYXNrbG9hZGQoKGNvbnN0IF9fdjRzaSAqKV9fWCwgKF9fdjRzaSlfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza2xvYWRfZXBpNjQobG9uZyBsb25nIGNvbnN0ICpfX1gsIF9fbTEyOGkgX19NKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX21hc2tsb2FkcSgoY29uc3QgX192MmRpICopX19YLCAoX192MmRpKV9fTSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrc3RvcmVfZXBpMzIoaW50ICpfX1gsIF9fbTI1NmkgX19NLCBfX20yNTZpIF9fWSkKewogIF9fYnVpbHRpbl9pYTMyX21hc2tzdG9yZWQyNTYoKF9fdjhzaSAqKV9fWCwgKF9fdjhzaSlfX00sIChfX3Y4c2kpX19ZKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tzdG9yZV9lcGk2NChsb25nIGxvbmcgKl9fWCwgX19tMjU2aSBfX00sIF9fbTI1NmkgX19ZKQp7CiAgX19idWlsdGluX2lhMzJfbWFza3N0b3JlcTI1NigoX192NGRpICopX19YLCAoX192NGRpKV9fTSwgKF9fdjRkaSlfX1kpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3N0b3JlX2VwaTMyKGludCAqX19YLCBfX20xMjhpIF9fTSwgX19tMTI4aSBfX1kpCnsKICBfX2J1aWx0aW5faWEzMl9tYXNrc3RvcmVkKChfX3Y0c2kgKilfX1gsIChfX3Y0c2kpX19NLCAoX192NHNpKV9fWSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrc3RvcmVfZXBpNjQobG9uZyBsb25nICpfX1gsIF9fbTEyOGkgX19NLCBfX20xMjhpIF9fWSkKewogIF9fYnVpbHRpbl9pYTMyX21hc2tzdG9yZXEoKCBfX3YyZGkgKilfX1gsIChfX3YyZGkpX19NLCAoX192MmRpKV9fWSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9zbGx2X2VwaTMyKF9fbTI1NmkgX19YLCBfX20yNTZpIF9fWSkKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9wc2xsdjhzaSgoX192OHNpKV9fWCwgKF9fdjhzaSlfX1kpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fc2xsdl9lcGkzMihfX20xMjhpIF9fWCwgX19tMTI4aSBfX1kpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNsbHY0c2koKF9fdjRzaSlfX1gsIChfX3Y0c2kpX19ZKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X3NsbHZfZXBpNjQoX19tMjU2aSBfX1gsIF9fbTI1NmkgX19ZKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3BzbGx2NGRpKChfX3Y0ZGkpX19YLCAoX192NGRpKV9fWSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9zbGx2X2VwaTY0KF9fbTEyOGkgX19YLCBfX20xMjhpIF9fWSkKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wc2xsdjJkaSgoX192MmRpKV9fWCwgKF9fdjJkaSlfX1kpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfc3Jhdl9lcGkzMihfX20yNTZpIF9fWCwgX19tMjU2aSBfX1kpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfcHNyYXY4c2koKF9fdjhzaSlfX1gsIChfX3Y4c2kpX19ZKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX3NyYXZfZXBpMzIoX19tMTI4aSBfX1gsIF9fbTEyOGkgX19ZKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzcmF2NHNpKChfX3Y0c2kpX19YLCAoX192NHNpKV9fWSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9zcmx2X2VwaTMyKF9fbTI1NmkgX19YLCBfX20yNTZpIF9fWSkKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9wc3JsdjhzaSgoX192OHNpKV9fWCwgKF9fdjhzaSlfX1kpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fc3Jsdl9lcGkzMihfX20xMjhpIF9fWCwgX19tMTI4aSBfX1kpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNybHY0c2koKF9fdjRzaSlfX1gsIChfX3Y0c2kpX19ZKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X3NybHZfZXBpNjQoX19tMjU2aSBfX1gsIF9fbTI1NmkgX19ZKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3Bzcmx2NGRpKChfX3Y0ZGkpX19YLCAoX192NGRpKV9fWSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9zcmx2X2VwaTY0KF9fbTEyOGkgX19YLCBfX20xMjhpIF9fWSkKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wc3JsdjJkaSgoX192MmRpKV9fWCwgKF9fdjJkaSlfX1kpOwp9CgojZGVmaW5lIF9tbV9tYXNrX2kzMmdhdGhlcl9wZChhLCBtLCBpLCBtYXNrLCBzKSBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2dhdGhlcmRfcGQoKF9fdjJkZikoX19tMTI4aSkoYSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlIGNvbnN0ICopKG0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSkoX19tMTI4aSkoaSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShtYXNrKSwgKHMpKSkKCiNkZWZpbmUgX21tMjU2X21hc2tfaTMyZ2F0aGVyX3BkKGEsIG0sIGksIG1hc2ssIHMpIFwKICAoKF9fbTI1NmQpX19idWlsdGluX2lhMzJfZ2F0aGVyZF9wZDI1NigoX192NGRmKShfX20yNTZkKShhKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUgY29uc3QgKikobSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKShfX20xMjhpKShpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpKF9fbTI1NmQpKG1hc2spLCAocykpKQoKI2RlZmluZSBfbW1fbWFza19pNjRnYXRoZXJfcGQoYSwgbSwgaSwgbWFzaywgcykgXAogICgoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9nYXRoZXJxX3BkKChfX3YyZGYpKF9fbTEyOGQpKGEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSBjb25zdCAqKShtKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpKF9fbTEyOGkpKGkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikoX19tMTI4ZCkobWFzayksIChzKSkpCgojZGVmaW5lIF9tbTI1Nl9tYXNrX2k2NGdhdGhlcl9wZChhLCBtLCBpLCBtYXNrLCBzKSBcCiAgKChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX2dhdGhlcnFfcGQyNTYoKF9fdjRkZikoX19tMjU2ZCkoYSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlIGNvbnN0ICopKG0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSkoX19tMjU2aSkoaSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKShfX20yNTZkKShtYXNrKSwgKHMpKSkKCiNkZWZpbmUgX21tX21hc2tfaTMyZ2F0aGVyX3BzKGEsIG0sIGksIG1hc2ssIHMpIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl9nYXRoZXJkX3BzKChfX3Y0c2YpKF9fbTEyOCkoYSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmbG9hdCBjb25zdCAqKShtKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSkoX19tMTI4aSkoaSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkobWFzayksIChzKSkpCgojZGVmaW5lIF9tbTI1Nl9tYXNrX2kzMmdhdGhlcl9wcyhhLCBtLCBpLCBtYXNrLCBzKSBcCiAgKChfX20yNTYpX19idWlsdGluX2lhMzJfZ2F0aGVyZF9wczI1NigoX192OHNmKShfX20yNTYpKGEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmxvYXQgY29uc3QgKikobSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpKF9fbTI1NmkpKGkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKShfX20yNTYpKG1hc2spLCAocykpKQoKI2RlZmluZSBfbW1fbWFza19pNjRnYXRoZXJfcHMoYSwgbSwgaSwgbWFzaywgcykgXAogICgoX19tMTI4KV9fYnVpbHRpbl9pYTMyX2dhdGhlcnFfcHMoKF9fdjRzZikoX19tMTI4KShhKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZsb2F0IGNvbnN0ICopKG0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKShfX20xMjhpKShpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikoX19tMTI4KShtYXNrKSwgKHMpKSkKCiNkZWZpbmUgX21tMjU2X21hc2tfaTY0Z2F0aGVyX3BzKGEsIG0sIGksIG1hc2ssIHMpIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl9nYXRoZXJxX3BzMjU2KChfX3Y0c2YpKF9fbTEyOCkoYSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmbG9hdCBjb25zdCAqKShtKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSkoX19tMjU2aSkoaSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkobWFzayksIChzKSkpCgojZGVmaW5lIF9tbV9tYXNrX2kzMmdhdGhlcl9lcGkzMihhLCBtLCBpLCBtYXNrLCBzKSBcCiAgKChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX2dhdGhlcmRfZCgoX192NHNpKShfX20xMjhpKShhKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCBjb25zdCAqKShtKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSkoX19tMTI4aSkoaSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpKF9fbTEyOGkpKG1hc2spLCAocykpKQoKI2RlZmluZSBfbW0yNTZfbWFza19pMzJnYXRoZXJfZXBpMzIoYSwgbSwgaSwgbWFzaywgcykgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9nYXRoZXJkX2QyNTYoKF9fdjhzaSkoX19tMjU2aSkoYSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQgY29uc3QgKikobSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpKF9fbTI1NmkpKGkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKShfX20yNTZpKShtYXNrKSwgKHMpKSkKCiNkZWZpbmUgX21tX21hc2tfaTY0Z2F0aGVyX2VwaTMyKGEsIG0sIGksIG1hc2ssIHMpIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfZ2F0aGVycV9kKChfX3Y0c2kpKF9fbTEyOGkpKGEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50IGNvbnN0ICopKG0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKShfX20xMjhpKShpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSkoX19tMTI4aSkobWFzayksIChzKSkpCgojZGVmaW5lIF9tbTI1Nl9tYXNrX2k2NGdhdGhlcl9lcGkzMihhLCBtLCBpLCBtYXNrLCBzKSBcCiAgKChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX2dhdGhlcnFfZDI1NigoX192NHNpKShfX20xMjhpKShhKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCBjb25zdCAqKShtKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSkoX19tMjU2aSkoaSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpKF9fbTEyOGkpKG1hc2spLCAocykpKQoKI2RlZmluZSBfbW1fbWFza19pMzJnYXRoZXJfZXBpNjQoYSwgbSwgaSwgbWFzaywgcykgXAogICgoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9nYXRoZXJkX3EoKF9fdjJkaSkoX19tMTI4aSkoYSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcgY29uc3QgKikobSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpKF9fbTEyOGkpKGkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKShfX20xMjhpKShtYXNrKSwgKHMpKSkKCiNkZWZpbmUgX21tMjU2X21hc2tfaTMyZ2F0aGVyX2VwaTY0KGEsIG0sIGksIG1hc2ssIHMpIFwKICAoKF9fbTI1NmkpX19idWlsdGluX2lhMzJfZ2F0aGVyZF9xMjU2KChfX3Y0ZGkpKF9fbTI1NmkpKGEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nIGNvbnN0ICopKG0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKShfX20xMjhpKShpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSkoX19tMjU2aSkobWFzayksIChzKSkpCgojZGVmaW5lIF9tbV9tYXNrX2k2NGdhdGhlcl9lcGk2NChhLCBtLCBpLCBtYXNrLCBzKSBcCiAgKChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX2dhdGhlcnFfcSgoX192MmRpKShfX20xMjhpKShhKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZyBjb25zdCAqKShtKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSkoX19tMTI4aSkoaSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpKF9fbTEyOGkpKG1hc2spLCAocykpKQoKI2RlZmluZSBfbW0yNTZfbWFza19pNjRnYXRoZXJfZXBpNjQoYSwgbSwgaSwgbWFzaywgcykgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9nYXRoZXJxX3EyNTYoKF9fdjRkaSkoX19tMjU2aSkoYSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcgY29uc3QgKikobSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpKF9fbTI1NmkpKGkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKShfX20yNTZpKShtYXNrKSwgKHMpKSkKCiNkZWZpbmUgX21tX2kzMmdhdGhlcl9wZChtLCBpLCBzKSBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2dhdGhlcmRfcGQoKF9fdjJkZilfbW1fdW5kZWZpbmVkX3BkKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlIGNvbnN0ICopKG0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSkoX19tMTI4aSkoaSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9tbV9jbXBlcV9wZChfbW1fc2V0emVyb19wZCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX21tX3NldHplcm9fcGQoKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocykpKQoKI2RlZmluZSBfbW0yNTZfaTMyZ2F0aGVyX3BkKG0sIGksIHMpIFwKICAoKF9fbTI1NmQpX19idWlsdGluX2lhMzJfZ2F0aGVyZF9wZDI1NigoX192NGRmKV9tbTI1Nl91bmRlZmluZWRfcGQoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUgY29uc3QgKikobSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKShfX20xMjhpKShpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpX21tMjU2X2NtcF9wZChfbW0yNTZfc2V0emVyb19wZCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9tbTI1Nl9zZXR6ZXJvX3BkKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0NNUF9FUV9PUSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocykpKQoKI2RlZmluZSBfbW1faTY0Z2F0aGVyX3BkKG0sIGksIHMpIFwKICAoKF9fbTEyOGQpX19idWlsdGluX2lhMzJfZ2F0aGVycV9wZCgoX192MmRmKV9tbV91bmRlZmluZWRfcGQoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUgY29uc3QgKikobSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKShfX20xMjhpKShpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX2NtcGVxX3BkKF9tbV9zZXR6ZXJvX3BkKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbW1fc2V0emVyb19wZCgpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzKSkpCgojZGVmaW5lIF9tbTI1Nl9pNjRnYXRoZXJfcGQobSwgaSwgcykgXAogICgoX19tMjU2ZClfX2J1aWx0aW5faWEzMl9nYXRoZXJxX3BkMjU2KChfX3Y0ZGYpX21tMjU2X3VuZGVmaW5lZF9wZCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSBjb25zdCAqKShtKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpKF9fbTI1NmkpKGkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZilfbW0yNTZfY21wX3BkKF9tbTI1Nl9zZXR6ZXJvX3BkKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX21tMjU2X3NldHplcm9fcGQoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfQ01QX0VRX09RKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzKSkpCgojZGVmaW5lIF9tbV9pMzJnYXRoZXJfcHMobSwgaSwgcykgXAogICgoX19tMTI4KV9fYnVpbHRpbl9pYTMyX2dhdGhlcmRfcHMoKF9fdjRzZilfbW1fdW5kZWZpbmVkX3BzKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmbG9hdCBjb25zdCAqKShtKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSkoX19tMTI4aSkoaSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX2NtcGVxX3BzKF9tbV9zZXR6ZXJvX3BzKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9tbV9zZXR6ZXJvX3BzKCkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocykpKQoKI2RlZmluZSBfbW0yNTZfaTMyZ2F0aGVyX3BzKG0sIGksIHMpIFwKICAoKF9fbTI1NilfX2J1aWx0aW5faWEzMl9nYXRoZXJkX3BzMjU2KChfX3Y4c2YpX21tMjU2X3VuZGVmaW5lZF9wcygpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmxvYXQgY29uc3QgKikobSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpKF9fbTI1NmkpKGkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKV9tbTI1Nl9jbXBfcHMoX21tMjU2X3NldHplcm9fcHMoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9tbTI1Nl9zZXR6ZXJvX3BzKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfQ01QX0VRX09RKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHMpKSkKCiNkZWZpbmUgX21tX2k2NGdhdGhlcl9wcyhtLCBpLCBzKSBcCiAgKChfX20xMjgpX19idWlsdGluX2lhMzJfZ2F0aGVycV9wcygoX192NHNmKV9tbV91bmRlZmluZWRfcHMoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZsb2F0IGNvbnN0ICopKG0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKShfX20xMjhpKShpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfbW1fY21wZXFfcHMoX21tX3NldHplcm9fcHMoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX21tX3NldHplcm9fcHMoKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzKSkpCgojZGVmaW5lIF9tbTI1Nl9pNjRnYXRoZXJfcHMobSwgaSwgcykgXAogICgoX19tMTI4KV9fYnVpbHRpbl9pYTMyX2dhdGhlcnFfcHMyNTYoKF9fdjRzZilfbW1fdW5kZWZpbmVkX3BzKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmbG9hdCBjb25zdCAqKShtKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSkoX19tMjU2aSkoaSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX2NtcGVxX3BzKF9tbV9zZXR6ZXJvX3BzKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9tbV9zZXR6ZXJvX3BzKCkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocykpKQoKI2RlZmluZSBfbW1faTMyZ2F0aGVyX2VwaTMyKG0sIGksIHMpIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfZ2F0aGVyZF9kKChfX3Y0c2kpX21tX3VuZGVmaW5lZF9zaTEyOCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50IGNvbnN0ICopKG0pLCAoX192NHNpKShfX20xMjhpKShpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfbW1fc2V0MV9lcGkzMigtMSksIChzKSkpCgojZGVmaW5lIF9tbTI1Nl9pMzJnYXRoZXJfZXBpMzIobSwgaSwgcykgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9nYXRoZXJkX2QyNTYoKF9fdjhzaSlfbW0yNTZfdW5kZWZpbmVkX3NpMjU2KCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQgY29uc3QgKikobSksIChfX3Y4c2kpKF9fbTI1NmkpKGkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl9zZXQxX2VwaTMyKC0xKSwgKHMpKSkKCiNkZWZpbmUgX21tX2k2NGdhdGhlcl9lcGkzMihtLCBpLCBzKSBcCiAgKChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX2dhdGhlcnFfZCgoX192NHNpKV9tbV91bmRlZmluZWRfc2kxMjgoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCBjb25zdCAqKShtKSwgKF9fdjJkaSkoX19tMTI4aSkoaSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX3NldDFfZXBpMzIoLTEpLCAocykpKQoKI2RlZmluZSBfbW0yNTZfaTY0Z2F0aGVyX2VwaTMyKG0sIGksIHMpIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfZ2F0aGVycV9kMjU2KChfX3Y0c2kpX21tX3VuZGVmaW5lZF9zaTEyOCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50IGNvbnN0ICopKG0pLCAoX192NGRpKShfX20yNTZpKShpKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfbW1fc2V0MV9lcGkzMigtMSksIChzKSkpCgojZGVmaW5lIF9tbV9pMzJnYXRoZXJfZXBpNjQobSwgaSwgcykgXAogICgoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9nYXRoZXJkX3EoKF9fdjJkaSlfbW1fdW5kZWZpbmVkX3NpMTI4KCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcgY29uc3QgKikobSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpKF9fbTEyOGkpKGkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9zZXQxX2VwaTY0eCgtMSksIChzKSkpCgojZGVmaW5lIF9tbTI1Nl9pMzJnYXRoZXJfZXBpNjQobSwgaSwgcykgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9nYXRoZXJkX3EyNTYoKF9fdjRkaSlfbW0yNTZfdW5kZWZpbmVkX3NpMjU2KCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcgY29uc3QgKikobSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpKF9fbTEyOGkpKGkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9zZXQxX2VwaTY0eCgtMSksIChzKSkpCgojZGVmaW5lIF9tbV9pNjRnYXRoZXJfZXBpNjQobSwgaSwgcykgXAogICgoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9nYXRoZXJxX3EoKF9fdjJkaSlfbW1fdW5kZWZpbmVkX3NpMTI4KCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcgY29uc3QgKikobSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpKF9fbTEyOGkpKGkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9zZXQxX2VwaTY0eCgtMSksIChzKSkpCgojZGVmaW5lIF9tbTI1Nl9pNjRnYXRoZXJfZXBpNjQobSwgaSwgcykgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9nYXRoZXJxX3EyNTYoKF9fdjRkaSlfbW0yNTZfdW5kZWZpbmVkX3NpMjU2KCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcgY29uc3QgKikobSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpKF9fbTI1NmkpKGkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9zZXQxX2VwaTY0eCgtMSksIChzKSkpCgojdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2CiN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKCiNlbmRpZiAvKiBfX0FWWDJJTlRSSU5fSCAqLwoAYnVpbHRpbnMuaABmbWE0aW50cmluLmgAaHZ4X2hleGFnb25fcHJvdG9zLmgAbW1pbnRyaW4uaAAvKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gbW92ZGlyaW50cmluLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqCiAqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCiAqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCiNpZiAhZGVmaW5lZCBfX1g4NklOVFJJTl9IICYmICFkZWZpbmVkIF9fSU1NSU5UUklOX0gKI2Vycm9yICJOZXZlciB1c2UgPG1vdmRpcmludHJpbi5oPiBkaXJlY3RseTsgaW5jbHVkZSA8eDg2aW50cmluLmg+IGluc3RlYWQuIgojZW5kaWYKCiNpZm5kZWYgX01PVkRJUklOVFJJTl9ICiNkZWZpbmUgX01PVkRJUklOVFJJTl9ICgovKiBNb3ZlIGRvdWJsZXdvcmQgYXMgZGlyZWN0IHN0b3JlICovCnN0YXRpYyBfX2lubGluZV9fIHZvaWQKX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCAgX190YXJnZXRfXygibW92ZGlyaSIpKSkKX2RpcmVjdHN0b3JldV91MzIgKHZvaWQgKl9fZHN0LCB1bnNpZ25lZCBpbnQgIF9fdmFsdWUpCnsKICBfX2J1aWx0aW5faWEzMl9kaXJlY3RzdG9yZV91MzIoKHVuc2lnbmVkIGludCAqKV9fZHN0LCAodW5zaWduZWQgaW50KV9fdmFsdWUpOwp9CgojaWZkZWYgX194ODZfNjRfXwoKLyogTW92ZSBxdWFkd29yZCBhcyBkaXJlY3Qgc3RvcmUgKi8Kc3RhdGljIF9faW5saW5lX18gdm9pZApfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sICBfX3RhcmdldF9fKCJtb3ZkaXJpIikpKQpfZGlyZWN0c3RvcmV1X3U2NCAodm9pZCAqX19kc3QsIHVuc2lnbmVkIGxvbmcgX192YWx1ZSkKewogIF9fYnVpbHRpbl9pYTMyX2RpcmVjdHN0b3JlX3U2NCgodW5zaWduZWQgbG9uZyAqKV9fZHN0LCBfX3ZhbHVlKTsKfQoKI2VuZGlmIC8qIF9feDg2XzY0X18gKi8KCi8qCiAqIG1vdmRpcjY0YiAtIE1vdmUgNjQgYnl0ZXMgYXMgZGlyZWN0IHN0b3JlLgogKiBUaGUgZGVzdGluYXRpb24gbXVzdCBiZSA2NCBieXRlIGFsaWduZWQsIGFuZCB0aGUgc3RvcmUgaXMgYXRvbWljLgogKiBUaGUgc291cmNlIGFkZHJlc3MgaGFzIG5vIGFsaWdubWVudCByZXF1aXJlbWVudCwgYW5kIHRoZSBsb2FkIGZyb20KICogdGhlIHNvdXJjZSBhZGRyZXNzIGlzIG5vdCBhdG9taWMuCiAqLwpzdGF0aWMgX19pbmxpbmVfXyB2b2lkCl9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgIF9fdGFyZ2V0X18oIm1vdmRpcjY0YiIpKSkKX21vdmRpcjY0YiAodm9pZCAqX19kc3QgX19hdHRyaWJ1dGVfXygoYWxpZ25fdmFsdWUoNjQpKSksIGNvbnN0IHZvaWQgKl9fc3JjKQp7CiAgX19idWlsdGluX2lhMzJfbW92ZGlyNjRiKF9fZHN0LCBfX3NyYyk7Cn0KCiNlbmRpZiAvKiBfTU9WRElSSU5UUklOX0ggKi8KAHNneGludHJpbi5oAHN0ZGFyZy5oAEtZVEhFX0taSVBfRU5DT0RJTkcAanNvbgB1bmhhbmRsZWQgACglZCwlZCkAKABCYWQgZmluYWwgY2hhcjogAEJhdGFrAENvAENzAEN1bmVpZm9ybQBHZW9yZ2lhbgBLaHVkYXdhZGkATWVyb2l0aWNfSGllcm9nbHlwaHMATW4AVGFnYWxvZwBacABbJXMgOiAlZF0gUkFXOiAAaABEYwBkbABuZwBlbwBzaXplb2YAPD4AVU5BVkFJTEFCTEUAXFUgbXVzdCBiZSBmb2xsb3dlZCBieSA4IGhleCBkaWdpdHM6IFwAXCcARmxhdCwgbGVuID0gAE1heCBoZWlnaHQgZXhjZWVkZWQAdGhpcy0+TG9ja1Nsb3dXaXRoRGVhZGxpbmUoaG93LCBjb25kLCBLZXJuZWxUaW1lb3V0OjpOZXZlcigpLCBmbGFncykAIXctPndhaXRwLT50aW1lb3V0Lmhhc190aW1lb3V0KCkATG9jayByZXR1cm5pbmcgAFNpZ25hbEFsbCBvbiAAbXMAUlNBIHNpZ25pbmcgdGVzdCBmYWlsZWQuCgBaIENvbXB1dGF0aW9uIFJlc3VsdABaIENvbXB1dGF0aW9uIEtBVCBmYWlsZWQuCgBPUEVOU1NMRElSOiBuL2EAcHVibGljIGtleSByb3V0aW5lcwBvdXQvc29vbmcvLmludGVybWVkaWF0ZXMvZXh0ZXJuYWwva3l0aGUvY3h4X2V4dHJhY3Rvci9saW51eF9nbGliY194ODZfNjQvZ2VuL3Byb3RvL2t5dGhlL3Byb3RvL2J1aWxkaW5mby5wYi5jYwBreXRoZS5wcm90by5jb21tb24uT3JpZ2luLmxhbmd1YWdlAGY5NS1jcHAtaW5wdXQAQ2hlY2sgZmFpbGVkOiAhd3JpdGVyXy5oYXNfdmFsdWUoKQBreXRoZV9jbGFpbQBleHRlcm5hbC9reXRoZS9reXRoZS9jeHgvZXh0cmFjdG9yL2N4eF9leHRyYWN0b3JfbWFpbi5jYwAgCQoLDA0ALyo9PT0tLS0tIF9fY2xhbmdfY3VkYV9kZXZpY2VfZnVuY3Rpb25zLmggLSBDVURBIHJ1bnRpbWUgc3VwcG9ydCAtLS0tLS0tLS0tLT09PQogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwoKI2lmbmRlZiBfX0NMQU5HX0NVREFfREVWSUNFX0ZVTkNUSU9OU19IX18KI2RlZmluZSBfX0NMQU5HX0NVREFfREVWSUNFX0ZVTkNUSU9OU19IX18KCiNpZm5kZWYgX19PUEVOTVBfTlZQVFhfXwojaWYgQ1VEQV9WRVJTSU9OIDwgOTAwMAojZXJyb3IgVGhpcyBmaWxlIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgd2l0aCBDVURBLTkrIG9ubHkuCiNlbmRpZgojZW5kaWYKCi8vIF9fREVWSUNFX18gaXMgYSBoZWxwZXIgbWFjcm8gd2l0aCBjb21tb24gc2V0IG9mIGF0dHJpYnV0ZXMgZm9yIHRoZSB3cmFwcGVycwovLyB3ZSBpbXBsZW1lbnQgaW4gdGhpcyBmaWxlLiBXZSBuZWVkIHN0YXRpYyBpbiBvcmRlciB0byBhdm9pZCBlbWl0dGluZyB1bnVzZWQKLy8gZnVuY3Rpb25zIGFuZCBfX2ZvcmNlaW5saW5lX18gaGVscHMgaW5saW5pbmcgdGhlc2Ugd3JhcHBlcnMgYXQgLU8xLgojcHJhZ21hIHB1c2hfbWFjcm8oIl9fREVWSUNFX18iKQojaWZkZWYgX19PUEVOTVBfTlZQVFhfXwojZGVmaW5lIF9fREVWSUNFX18gc3RhdGljIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUsIG5vdGhyb3cpKQojZWxzZQojZGVmaW5lIF9fREVWSUNFX18gc3RhdGljIF9fZGV2aWNlX18gX19mb3JjZWlubGluZV9fCiNlbmRpZgoKX19ERVZJQ0VfXyBpbnQgX19hbGwoaW50IF9fYSkgeyByZXR1cm4gX19udnZtX3ZvdGVfYWxsKF9fYSk7IH0KX19ERVZJQ0VfXyBpbnQgX19hbnkoaW50IF9fYSkgeyByZXR1cm4gX19udnZtX3ZvdGVfYW55KF9fYSk7IH0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX19iYWxsb3QoaW50IF9fYSkgeyByZXR1cm4gX19udnZtX3ZvdGVfYmFsbG90KF9fYSk7IH0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX19icmV2KHVuc2lnbmVkIGludCBfX2EpIHsgcmV0dXJuIF9fbnZfYnJldihfX2EpOyB9Cl9fREVWSUNFX18gdW5zaWduZWQgbG9uZyBsb25nIF9fYnJldmxsKHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EpIHsKICByZXR1cm4gX19udl9icmV2bGwoX19hKTsKfQojaWYgZGVmaW5lZChfX2NwbHVzcGx1cykKX19ERVZJQ0VfXyB2b2lkIF9fYnJrcHQoKSB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJicmtwdDsiKTsgfQpfX0RFVklDRV9fIHZvaWQgX19icmtwdChpbnQgX19hKSB7IF9fYnJrcHQoKTsgfQojZWxzZQpfX0RFVklDRV9fIHZvaWQgX19hdHRyaWJ1dGVfXygob3ZlcmxvYWRhYmxlKSkgX19icmtwdCh2b2lkKSB7CiAgX19hc21fXyBfX3ZvbGF0aWxlX18oImJya3B0OyIpOwp9Cl9fREVWSUNFX18gdm9pZCBfX2F0dHJpYnV0ZV9fKChvdmVybG9hZGFibGUpKSBfX2Jya3B0KGludCBfX2EpIHsgX19icmtwdCgpOyB9CiNlbmRpZgpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX2J5dGVfcGVybSh1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19jKSB7CiAgcmV0dXJuIF9fbnZfYnl0ZV9wZXJtKF9fYSwgX19iLCBfX2MpOwp9Cl9fREVWSUNFX18gaW50IF9fY2x6KGludCBfX2EpIHsgcmV0dXJuIF9fbnZfY2x6KF9fYSk7IH0KX19ERVZJQ0VfXyBpbnQgX19jbHpsbChsb25nIGxvbmcgX19hKSB7IHJldHVybiBfX252X2NsemxsKF9fYSk7IH0KX19ERVZJQ0VfXyBmbG9hdCBfX2Nvc2YoZmxvYXQgX19hKSB7IHJldHVybiBfX252X2Zhc3RfY29zZihfX2EpOyB9Cl9fREVWSUNFX18gZG91YmxlIF9fZEF0b21pY0FkZChkb3VibGUgKl9fcCwgZG91YmxlIF9fdikgewogIHJldHVybiBfX252dm1fYXRvbV9hZGRfZ2VuX2QoX19wLCBfX3YpOwp9Cl9fREVWSUNFX18gZG91YmxlIF9fZEF0b21pY0FkZF9ibG9jayhkb3VibGUgKl9fcCwgZG91YmxlIF9fdikgewogIHJldHVybiBfX252dm1fYXRvbV9jdGFfYWRkX2dlbl9kKF9fcCwgX192KTsKfQpfX0RFVklDRV9fIGRvdWJsZSBfX2RBdG9taWNBZGRfc3lzdGVtKGRvdWJsZSAqX19wLCBkb3VibGUgX192KSB7CiAgcmV0dXJuIF9fbnZ2bV9hdG9tX3N5c19hZGRfZ2VuX2QoX19wLCBfX3YpOwp9Cl9fREVWSUNFX18gZG91YmxlIF9fZGFkZF9yZChkb3VibGUgX19hLCBkb3VibGUgX19iKSB7CiAgcmV0dXJuIF9fbnZfZGFkZF9yZChfX2EsIF9fYik7Cn0KX19ERVZJQ0VfXyBkb3VibGUgX19kYWRkX3JuKGRvdWJsZSBfX2EsIGRvdWJsZSBfX2IpIHsKICByZXR1cm4gX19udl9kYWRkX3JuKF9fYSwgX19iKTsKfQpfX0RFVklDRV9fIGRvdWJsZSBfX2RhZGRfcnUoZG91YmxlIF9fYSwgZG91YmxlIF9fYikgewogIHJldHVybiBfX252X2RhZGRfcnUoX19hLCBfX2IpOwp9Cl9fREVWSUNFX18gZG91YmxlIF9fZGFkZF9yeihkb3VibGUgX19hLCBkb3VibGUgX19iKSB7CiAgcmV0dXJuIF9fbnZfZGFkZF9yeihfX2EsIF9fYik7Cn0KX19ERVZJQ0VfXyBkb3VibGUgX19kZGl2X3JkKGRvdWJsZSBfX2EsIGRvdWJsZSBfX2IpIHsKICByZXR1cm4gX19udl9kZGl2X3JkKF9fYSwgX19iKTsKfQpfX0RFVklDRV9fIGRvdWJsZSBfX2RkaXZfcm4oZG91YmxlIF9fYSwgZG91YmxlIF9fYikgewogIHJldHVybiBfX252X2RkaXZfcm4oX19hLCBfX2IpOwp9Cl9fREVWSUNFX18gZG91YmxlIF9fZGRpdl9ydShkb3VibGUgX19hLCBkb3VibGUgX19iKSB7CiAgcmV0dXJuIF9fbnZfZGRpdl9ydShfX2EsIF9fYik7Cn0KX19ERVZJQ0VfXyBkb3VibGUgX19kZGl2X3J6KGRvdWJsZSBfX2EsIGRvdWJsZSBfX2IpIHsKICByZXR1cm4gX19udl9kZGl2X3J6KF9fYSwgX19iKTsKfQpfX0RFVklDRV9fIGRvdWJsZSBfX2RtdWxfcmQoZG91YmxlIF9fYSwgZG91YmxlIF9fYikgewogIHJldHVybiBfX252X2RtdWxfcmQoX19hLCBfX2IpOwp9Cl9fREVWSUNFX18gZG91YmxlIF9fZG11bF9ybihkb3VibGUgX19hLCBkb3VibGUgX19iKSB7CiAgcmV0dXJuIF9fbnZfZG11bF9ybihfX2EsIF9fYik7Cn0KX19ERVZJQ0VfXyBkb3VibGUgX19kbXVsX3J1KGRvdWJsZSBfX2EsIGRvdWJsZSBfX2IpIHsKICByZXR1cm4gX19udl9kbXVsX3J1KF9fYSwgX19iKTsKfQpfX0RFVklDRV9fIGRvdWJsZSBfX2RtdWxfcnooZG91YmxlIF9fYSwgZG91YmxlIF9fYikgewogIHJldHVybiBfX252X2RtdWxfcnooX19hLCBfX2IpOwp9Cl9fREVWSUNFX18gZmxvYXQgX19kb3VibGUyZmxvYXRfcmQoZG91YmxlIF9fYSkgewogIHJldHVybiBfX252X2RvdWJsZTJmbG9hdF9yZChfX2EpOwp9Cl9fREVWSUNFX18gZmxvYXQgX19kb3VibGUyZmxvYXRfcm4oZG91YmxlIF9fYSkgewogIHJldHVybiBfX252X2RvdWJsZTJmbG9hdF9ybihfX2EpOwp9Cl9fREVWSUNFX18gZmxvYXQgX19kb3VibGUyZmxvYXRfcnUoZG91YmxlIF9fYSkgewogIHJldHVybiBfX252X2RvdWJsZTJmbG9hdF9ydShfX2EpOwp9Cl9fREVWSUNFX18gZmxvYXQgX19kb3VibGUyZmxvYXRfcnooZG91YmxlIF9fYSkgewogIHJldHVybiBfX252X2RvdWJsZTJmbG9hdF9yeihfX2EpOwp9Cl9fREVWSUNFX18gaW50IF9fZG91YmxlMmhpaW50KGRvdWJsZSBfX2EpIHsgcmV0dXJuIF9fbnZfZG91YmxlMmhpaW50KF9fYSk7IH0KX19ERVZJQ0VfXyBpbnQgX19kb3VibGUyaW50X3JkKGRvdWJsZSBfX2EpIHsgcmV0dXJuIF9fbnZfZG91YmxlMmludF9yZChfX2EpOyB9Cl9fREVWSUNFX18gaW50IF9fZG91YmxlMmludF9ybihkb3VibGUgX19hKSB7IHJldHVybiBfX252X2RvdWJsZTJpbnRfcm4oX19hKTsgfQpfX0RFVklDRV9fIGludCBfX2RvdWJsZTJpbnRfcnUoZG91YmxlIF9fYSkgeyByZXR1cm4gX19udl9kb3VibGUyaW50X3J1KF9fYSk7IH0KX19ERVZJQ0VfXyBpbnQgX19kb3VibGUyaW50X3J6KGRvdWJsZSBfX2EpIHsgcmV0dXJuIF9fbnZfZG91YmxlMmludF9yeihfX2EpOyB9Cl9fREVWSUNFX18gbG9uZyBsb25nIF9fZG91YmxlMmxsX3JkKGRvdWJsZSBfX2EpIHsKICByZXR1cm4gX19udl9kb3VibGUybGxfcmQoX19hKTsKfQpfX0RFVklDRV9fIGxvbmcgbG9uZyBfX2RvdWJsZTJsbF9ybihkb3VibGUgX19hKSB7CiAgcmV0dXJuIF9fbnZfZG91YmxlMmxsX3JuKF9fYSk7Cn0KX19ERVZJQ0VfXyBsb25nIGxvbmcgX19kb3VibGUybGxfcnUoZG91YmxlIF9fYSkgewogIHJldHVybiBfX252X2RvdWJsZTJsbF9ydShfX2EpOwp9Cl9fREVWSUNFX18gbG9uZyBsb25nIF9fZG91YmxlMmxsX3J6KGRvdWJsZSBfX2EpIHsKICByZXR1cm4gX19udl9kb3VibGUybGxfcnooX19hKTsKfQpfX0RFVklDRV9fIGludCBfX2RvdWJsZTJsb2ludChkb3VibGUgX19hKSB7IHJldHVybiBfX252X2RvdWJsZTJsb2ludChfX2EpOyB9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fZG91YmxlMnVpbnRfcmQoZG91YmxlIF9fYSkgewogIHJldHVybiBfX252X2RvdWJsZTJ1aW50X3JkKF9fYSk7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX19kb3VibGUydWludF9ybihkb3VibGUgX19hKSB7CiAgcmV0dXJuIF9fbnZfZG91YmxlMnVpbnRfcm4oX19hKTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX2RvdWJsZTJ1aW50X3J1KGRvdWJsZSBfX2EpIHsKICByZXR1cm4gX19udl9kb3VibGUydWludF9ydShfX2EpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fZG91YmxlMnVpbnRfcnooZG91YmxlIF9fYSkgewogIHJldHVybiBfX252X2RvdWJsZTJ1aW50X3J6KF9fYSk7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBsb25nIGxvbmcgX19kb3VibGUydWxsX3JkKGRvdWJsZSBfX2EpIHsKICByZXR1cm4gX19udl9kb3VibGUydWxsX3JkKF9fYSk7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBsb25nIGxvbmcgX19kb3VibGUydWxsX3JuKGRvdWJsZSBfX2EpIHsKICByZXR1cm4gX19udl9kb3VibGUydWxsX3JuKF9fYSk7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBsb25nIGxvbmcgX19kb3VibGUydWxsX3J1KGRvdWJsZSBfX2EpIHsKICByZXR1cm4gX19udl9kb3VibGUydWxsX3J1KF9fYSk7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBsb25nIGxvbmcgX19kb3VibGUydWxsX3J6KGRvdWJsZSBfX2EpIHsKICByZXR1cm4gX19udl9kb3VibGUydWxsX3J6KF9fYSk7Cn0KX19ERVZJQ0VfXyBsb25nIGxvbmcgX19kb3VibGVfYXNfbG9uZ2xvbmcoZG91YmxlIF9fYSkgewogIHJldHVybiBfX252X2RvdWJsZV9hc19sb25nbG9uZyhfX2EpOwp9Cl9fREVWSUNFX18gZG91YmxlIF9fZHJjcF9yZChkb3VibGUgX19hKSB7IHJldHVybiBfX252X2RyY3BfcmQoX19hKTsgfQpfX0RFVklDRV9fIGRvdWJsZSBfX2RyY3Bfcm4oZG91YmxlIF9fYSkgeyByZXR1cm4gX19udl9kcmNwX3JuKF9fYSk7IH0KX19ERVZJQ0VfXyBkb3VibGUgX19kcmNwX3J1KGRvdWJsZSBfX2EpIHsgcmV0dXJuIF9fbnZfZHJjcF9ydShfX2EpOyB9Cl9fREVWSUNFX18gZG91YmxlIF9fZHJjcF9yeihkb3VibGUgX19hKSB7IHJldHVybiBfX252X2RyY3BfcnooX19hKTsgfQpfX0RFVklDRV9fIGRvdWJsZSBfX2RzcXJ0X3JkKGRvdWJsZSBfX2EpIHsgcmV0dXJuIF9fbnZfZHNxcnRfcmQoX19hKTsgfQpfX0RFVklDRV9fIGRvdWJsZSBfX2RzcXJ0X3JuKGRvdWJsZSBfX2EpIHsgcmV0dXJuIF9fbnZfZHNxcnRfcm4oX19hKTsgfQpfX0RFVklDRV9fIGRvdWJsZSBfX2RzcXJ0X3J1KGRvdWJsZSBfX2EpIHsgcmV0dXJuIF9fbnZfZHNxcnRfcnUoX19hKTsgfQpfX0RFVklDRV9fIGRvdWJsZSBfX2RzcXJ0X3J6KGRvdWJsZSBfX2EpIHsgcmV0dXJuIF9fbnZfZHNxcnRfcnooX19hKTsgfQpfX0RFVklDRV9fIGRvdWJsZSBfX2RzdWJfcmQoZG91YmxlIF9fYSwgZG91YmxlIF9fYikgewogIHJldHVybiBfX252X2RzdWJfcmQoX19hLCBfX2IpOwp9Cl9fREVWSUNFX18gZG91YmxlIF9fZHN1Yl9ybihkb3VibGUgX19hLCBkb3VibGUgX19iKSB7CiAgcmV0dXJuIF9fbnZfZHN1Yl9ybihfX2EsIF9fYik7Cn0KX19ERVZJQ0VfXyBkb3VibGUgX19kc3ViX3J1KGRvdWJsZSBfX2EsIGRvdWJsZSBfX2IpIHsKICByZXR1cm4gX19udl9kc3ViX3J1KF9fYSwgX19iKTsKfQpfX0RFVklDRV9fIGRvdWJsZSBfX2RzdWJfcnooZG91YmxlIF9fYSwgZG91YmxlIF9fYikgewogIHJldHVybiBfX252X2RzdWJfcnooX19hLCBfX2IpOwp9Cl9fREVWSUNFX18gZmxvYXQgX19leHAxMGYoZmxvYXQgX19hKSB7IHJldHVybiBfX252X2Zhc3RfZXhwMTBmKF9fYSk7IH0KX19ERVZJQ0VfXyBmbG9hdCBfX2V4cGYoZmxvYXQgX19hKSB7IHJldHVybiBfX252X2Zhc3RfZXhwZihfX2EpOyB9Cl9fREVWSUNFX18gZmxvYXQgX19mQXRvbWljQWRkKGZsb2F0ICpfX3AsIGZsb2F0IF9fdikgewogIHJldHVybiBfX252dm1fYXRvbV9hZGRfZ2VuX2YoX19wLCBfX3YpOwp9Cl9fREVWSUNFX18gZmxvYXQgX19mQXRvbWljQWRkX2Jsb2NrKGZsb2F0ICpfX3AsIGZsb2F0IF9fdikgewogIHJldHVybiBfX252dm1fYXRvbV9jdGFfYWRkX2dlbl9mKF9fcCwgX192KTsKfQpfX0RFVklDRV9fIGZsb2F0IF9fZkF0b21pY0FkZF9zeXN0ZW0oZmxvYXQgKl9fcCwgZmxvYXQgX192KSB7CiAgcmV0dXJuIF9fbnZ2bV9hdG9tX3N5c19hZGRfZ2VuX2YoX19wLCBfX3YpOwp9Cl9fREVWSUNFX18gZmxvYXQgX19mQXRvbWljRXhjaChmbG9hdCAqX19wLCBmbG9hdCBfX3YpIHsKICByZXR1cm4gX19udl9pbnRfYXNfZmxvYXQoCiAgICAgIF9fbnZ2bV9hdG9tX3hjaGdfZ2VuX2koKGludCAqKV9fcCwgX19udl9mbG9hdF9hc19pbnQoX192KSkpOwp9Cl9fREVWSUNFX18gZmxvYXQgX19mQXRvbWljRXhjaF9ibG9jayhmbG9hdCAqX19wLCBmbG9hdCBfX3YpIHsKICByZXR1cm4gX19udl9pbnRfYXNfZmxvYXQoCiAgICAgIF9fbnZ2bV9hdG9tX2N0YV94Y2hnX2dlbl9pKChpbnQgKilfX3AsIF9fbnZfZmxvYXRfYXNfaW50KF9fdikpKTsKfQpfX0RFVklDRV9fIGZsb2F0IF9fZkF0b21pY0V4Y2hfc3lzdGVtKGZsb2F0ICpfX3AsIGZsb2F0IF9fdikgewogIHJldHVybiBfX252X2ludF9hc19mbG9hdCgKICAgICAgX19udnZtX2F0b21fc3lzX3hjaGdfZ2VuX2koKGludCAqKV9fcCwgX19udl9mbG9hdF9hc19pbnQoX192KSkpOwp9Cl9fREVWSUNFX18gZmxvYXQgX19mYWRkX3JkKGZsb2F0IF9fYSwgZmxvYXQgX19iKSB7CiAgcmV0dXJuIF9fbnZfZmFkZF9yZChfX2EsIF9fYik7Cn0KX19ERVZJQ0VfXyBmbG9hdCBfX2ZhZGRfcm4oZmxvYXQgX19hLCBmbG9hdCBfX2IpIHsKICByZXR1cm4gX19udl9mYWRkX3JuKF9fYSwgX19iKTsKfQpfX0RFVklDRV9fIGZsb2F0IF9fZmFkZF9ydShmbG9hdCBfX2EsIGZsb2F0IF9fYikgewogIHJldHVybiBfX252X2ZhZGRfcnUoX19hLCBfX2IpOwp9Cl9fREVWSUNFX18gZmxvYXQgX19mYWRkX3J6KGZsb2F0IF9fYSwgZmxvYXQgX19iKSB7CiAgcmV0dXJuIF9fbnZfZmFkZF9yeihfX2EsIF9fYik7Cn0KX19ERVZJQ0VfXyBmbG9hdCBfX2ZkaXZfcmQoZmxvYXQgX19hLCBmbG9hdCBfX2IpIHsKICByZXR1cm4gX19udl9mZGl2X3JkKF9fYSwgX19iKTsKfQpfX0RFVklDRV9fIGZsb2F0IF9fZmRpdl9ybihmbG9hdCBfX2EsIGZsb2F0IF9fYikgewogIHJldHVybiBfX252X2ZkaXZfcm4oX19hLCBfX2IpOwp9Cl9fREVWSUNFX18gZmxvYXQgX19mZGl2X3J1KGZsb2F0IF9fYSwgZmxvYXQgX19iKSB7CiAgcmV0dXJuIF9fbnZfZmRpdl9ydShfX2EsIF9fYik7Cn0KX19ERVZJQ0VfXyBmbG9hdCBfX2ZkaXZfcnooZmxvYXQgX19hLCBmbG9hdCBfX2IpIHsKICByZXR1cm4gX19udl9mZGl2X3J6KF9fYSwgX19iKTsKfQpfX0RFVklDRV9fIGZsb2F0IF9fZmRpdmlkZWYoZmxvYXQgX19hLCBmbG9hdCBfX2IpIHsKICByZXR1cm4gX19udl9mYXN0X2ZkaXZpZGVmKF9fYSwgX19iKTsKfQpfX0RFVklDRV9fIGludCBfX2ZmcyhpbnQgX19hKSB7IHJldHVybiBfX252X2ZmcyhfX2EpOyB9Cl9fREVWSUNFX18gaW50IF9fZmZzbGwobG9uZyBsb25nIF9fYSkgeyByZXR1cm4gX19udl9mZnNsbChfX2EpOyB9Cl9fREVWSUNFX18gaW50IF9fZmluaXRlKGRvdWJsZSBfX2EpIHsgcmV0dXJuIF9fbnZfaXNmaW5pdGVkKF9fYSk7IH0KX19ERVZJQ0VfXyBpbnQgX19maW5pdGVmKGZsb2F0IF9fYSkgeyByZXR1cm4gX19udl9maW5pdGVmKF9fYSk7IH0KI2lmZGVmIF9NU0NfVkVSCl9fREVWSUNFX18gaW50IF9fZmluaXRlbChsb25nIGRvdWJsZSBfX2EpOwojZW5kaWYKX19ERVZJQ0VfXyBpbnQgX19mbG9hdDJpbnRfcmQoZmxvYXQgX19hKSB7IHJldHVybiBfX252X2Zsb2F0MmludF9yZChfX2EpOyB9Cl9fREVWSUNFX18gaW50IF9fZmxvYXQyaW50X3JuKGZsb2F0IF9fYSkgeyByZXR1cm4gX19udl9mbG9hdDJpbnRfcm4oX19hKTsgfQpfX0RFVklDRV9fIGludCBfX2Zsb2F0MmludF9ydShmbG9hdCBfX2EpIHsgcmV0dXJuIF9fbnZfZmxvYXQyaW50X3J1KF9fYSk7IH0KX19ERVZJQ0VfXyBpbnQgX19mbG9hdDJpbnRfcnooZmxvYXQgX19hKSB7IHJldHVybiBfX252X2Zsb2F0MmludF9yeihfX2EpOyB9Cl9fREVWSUNFX18gbG9uZyBsb25nIF9fZmxvYXQybGxfcmQoZmxvYXQgX19hKSB7IHJldHVybiBfX252X2Zsb2F0MmxsX3JkKF9fYSk7IH0KX19ERVZJQ0VfXyBsb25nIGxvbmcgX19mbG9hdDJsbF9ybihmbG9hdCBfX2EpIHsgcmV0dXJuIF9fbnZfZmxvYXQybGxfcm4oX19hKTsgfQpfX0RFVklDRV9fIGxvbmcgbG9uZyBfX2Zsb2F0MmxsX3J1KGZsb2F0IF9fYSkgeyByZXR1cm4gX19udl9mbG9hdDJsbF9ydShfX2EpOyB9Cl9fREVWSUNFX18gbG9uZyBsb25nIF9fZmxvYXQybGxfcnooZmxvYXQgX19hKSB7IHJldHVybiBfX252X2Zsb2F0MmxsX3J6KF9fYSk7IH0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX19mbG9hdDJ1aW50X3JkKGZsb2F0IF9fYSkgewogIHJldHVybiBfX252X2Zsb2F0MnVpbnRfcmQoX19hKTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX2Zsb2F0MnVpbnRfcm4oZmxvYXQgX19hKSB7CiAgcmV0dXJuIF9fbnZfZmxvYXQydWludF9ybihfX2EpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fZmxvYXQydWludF9ydShmbG9hdCBfX2EpIHsKICByZXR1cm4gX19udl9mbG9hdDJ1aW50X3J1KF9fYSk7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX19mbG9hdDJ1aW50X3J6KGZsb2F0IF9fYSkgewogIHJldHVybiBfX252X2Zsb2F0MnVpbnRfcnooX19hKTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2Zsb2F0MnVsbF9yZChmbG9hdCBfX2EpIHsKICByZXR1cm4gX19udl9mbG9hdDJ1bGxfcmQoX19hKTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2Zsb2F0MnVsbF9ybihmbG9hdCBfX2EpIHsKICByZXR1cm4gX19udl9mbG9hdDJ1bGxfcm4oX19hKTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2Zsb2F0MnVsbF9ydShmbG9hdCBfX2EpIHsKICByZXR1cm4gX19udl9mbG9hdDJ1bGxfcnUoX19hKTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2Zsb2F0MnVsbF9yeihmbG9hdCBfX2EpIHsKICByZXR1cm4gX19udl9mbG9hdDJ1bGxfcnooX19hKTsKfQpfX0RFVklDRV9fIGludCBfX2Zsb2F0X2FzX2ludChmbG9hdCBfX2EpIHsgcmV0dXJuIF9fbnZfZmxvYXRfYXNfaW50KF9fYSk7IH0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX19mbG9hdF9hc191aW50KGZsb2F0IF9fYSkgewogIHJldHVybiBfX252X2Zsb2F0X2FzX3VpbnQoX19hKTsKfQpfX0RFVklDRV9fIGRvdWJsZSBfX2ZtYV9yZChkb3VibGUgX19hLCBkb3VibGUgX19iLCBkb3VibGUgX19jKSB7CiAgcmV0dXJuIF9fbnZfZm1hX3JkKF9fYSwgX19iLCBfX2MpOwp9Cl9fREVWSUNFX18gZG91YmxlIF9fZm1hX3JuKGRvdWJsZSBfX2EsIGRvdWJsZSBfX2IsIGRvdWJsZSBfX2MpIHsKICByZXR1cm4gX19udl9mbWFfcm4oX19hLCBfX2IsIF9fYyk7Cn0KX19ERVZJQ0VfXyBkb3VibGUgX19mbWFfcnUoZG91YmxlIF9fYSwgZG91YmxlIF9fYiwgZG91YmxlIF9fYykgewogIHJldHVybiBfX252X2ZtYV9ydShfX2EsIF9fYiwgX19jKTsKfQpfX0RFVklDRV9fIGRvdWJsZSBfX2ZtYV9yeihkb3VibGUgX19hLCBkb3VibGUgX19iLCBkb3VibGUgX19jKSB7CiAgcmV0dXJuIF9fbnZfZm1hX3J6KF9fYSwgX19iLCBfX2MpOwp9Cl9fREVWSUNFX18gZmxvYXQgX19mbWFmX2llZWVfcmQoZmxvYXQgX19hLCBmbG9hdCBfX2IsIGZsb2F0IF9fYykgewogIHJldHVybiBfX252X2ZtYWZfaWVlZV9yZChfX2EsIF9fYiwgX19jKTsKfQpfX0RFVklDRV9fIGZsb2F0IF9fZm1hZl9pZWVlX3JuKGZsb2F0IF9fYSwgZmxvYXQgX19iLCBmbG9hdCBfX2MpIHsKICByZXR1cm4gX19udl9mbWFmX2llZWVfcm4oX19hLCBfX2IsIF9fYyk7Cn0KX19ERVZJQ0VfXyBmbG9hdCBfX2ZtYWZfaWVlZV9ydShmbG9hdCBfX2EsIGZsb2F0IF9fYiwgZmxvYXQgX19jKSB7CiAgcmV0dXJuIF9fbnZfZm1hZl9pZWVlX3J1KF9fYSwgX19iLCBfX2MpOwp9Cl9fREVWSUNFX18gZmxvYXQgX19mbWFmX2llZWVfcnooZmxvYXQgX19hLCBmbG9hdCBfX2IsIGZsb2F0IF9fYykgewogIHJldHVybiBfX252X2ZtYWZfaWVlZV9yeihfX2EsIF9fYiwgX19jKTsKfQpfX0RFVklDRV9fIGZsb2F0IF9fZm1hZl9yZChmbG9hdCBfX2EsIGZsb2F0IF9fYiwgZmxvYXQgX19jKSB7CiAgcmV0dXJuIF9fbnZfZm1hZl9yZChfX2EsIF9fYiwgX19jKTsKfQpfX0RFVklDRV9fIGZsb2F0IF9fZm1hZl9ybihmbG9hdCBfX2EsIGZsb2F0IF9fYiwgZmxvYXQgX19jKSB7CiAgcmV0dXJuIF9fbnZfZm1hZl9ybihfX2EsIF9fYiwgX19jKTsKfQpfX0RFVklDRV9fIGZsb2F0IF9fZm1hZl9ydShmbG9hdCBfX2EsIGZsb2F0IF9fYiwgZmxvYXQgX19jKSB7CiAgcmV0dXJuIF9fbnZfZm1hZl9ydShfX2EsIF9fYiwgX19jKTsKfQpfX0RFVklDRV9fIGZsb2F0IF9fZm1hZl9yeihmbG9hdCBfX2EsIGZsb2F0IF9fYiwgZmxvYXQgX19jKSB7CiAgcmV0dXJuIF9fbnZfZm1hZl9yeihfX2EsIF9fYiwgX19jKTsKfQpfX0RFVklDRV9fIGZsb2F0IF9fZm11bF9yZChmbG9hdCBfX2EsIGZsb2F0IF9fYikgewogIHJldHVybiBfX252X2ZtdWxfcmQoX19hLCBfX2IpOwp9Cl9fREVWSUNFX18gZmxvYXQgX19mbXVsX3JuKGZsb2F0IF9fYSwgZmxvYXQgX19iKSB7CiAgcmV0dXJuIF9fbnZfZm11bF9ybihfX2EsIF9fYik7Cn0KX19ERVZJQ0VfXyBmbG9hdCBfX2ZtdWxfcnUoZmxvYXQgX19hLCBmbG9hdCBfX2IpIHsKICByZXR1cm4gX19udl9mbXVsX3J1KF9fYSwgX19iKTsKfQpfX0RFVklDRV9fIGZsb2F0IF9fZm11bF9yeihmbG9hdCBfX2EsIGZsb2F0IF9fYikgewogIHJldHVybiBfX252X2ZtdWxfcnooX19hLCBfX2IpOwp9Cl9fREVWSUNFX18gZmxvYXQgX19mcmNwX3JkKGZsb2F0IF9fYSkgeyByZXR1cm4gX19udl9mcmNwX3JkKF9fYSk7IH0KX19ERVZJQ0VfXyBmbG9hdCBfX2ZyY3Bfcm4oZmxvYXQgX19hKSB7IHJldHVybiBfX252X2ZyY3Bfcm4oX19hKTsgfQpfX0RFVklDRV9fIGZsb2F0IF9fZnJjcF9ydShmbG9hdCBfX2EpIHsgcmV0dXJuIF9fbnZfZnJjcF9ydShfX2EpOyB9Cl9fREVWSUNFX18gZmxvYXQgX19mcmNwX3J6KGZsb2F0IF9fYSkgeyByZXR1cm4gX19udl9mcmNwX3J6KF9fYSk7IH0KX19ERVZJQ0VfXyBmbG9hdCBfX2Zyc3FydF9ybihmbG9hdCBfX2EpIHsgcmV0dXJuIF9fbnZfZnJzcXJ0X3JuKF9fYSk7IH0KX19ERVZJQ0VfXyBmbG9hdCBfX2ZzcXJ0X3JkKGZsb2F0IF9fYSkgeyByZXR1cm4gX19udl9mc3FydF9yZChfX2EpOyB9Cl9fREVWSUNFX18gZmxvYXQgX19mc3FydF9ybihmbG9hdCBfX2EpIHsgcmV0dXJuIF9fbnZfZnNxcnRfcm4oX19hKTsgfQpfX0RFVklDRV9fIGZsb2F0IF9fZnNxcnRfcnUoZmxvYXQgX19hKSB7IHJldHVybiBfX252X2ZzcXJ0X3J1KF9fYSk7IH0KX19ERVZJQ0VfXyBmbG9hdCBfX2ZzcXJ0X3J6KGZsb2F0IF9fYSkgeyByZXR1cm4gX19udl9mc3FydF9yeihfX2EpOyB9Cl9fREVWSUNFX18gZmxvYXQgX19mc3ViX3JkKGZsb2F0IF9fYSwgZmxvYXQgX19iKSB7CiAgcmV0dXJuIF9fbnZfZnN1Yl9yZChfX2EsIF9fYik7Cn0KX19ERVZJQ0VfXyBmbG9hdCBfX2ZzdWJfcm4oZmxvYXQgX19hLCBmbG9hdCBfX2IpIHsKICByZXR1cm4gX19udl9mc3ViX3JuKF9fYSwgX19iKTsKfQpfX0RFVklDRV9fIGZsb2F0IF9fZnN1Yl9ydShmbG9hdCBfX2EsIGZsb2F0IF9fYikgewogIHJldHVybiBfX252X2ZzdWJfcnUoX19hLCBfX2IpOwp9Cl9fREVWSUNFX18gZmxvYXQgX19mc3ViX3J6KGZsb2F0IF9fYSwgZmxvYXQgX19iKSB7CiAgcmV0dXJuIF9fbnZfZnN1Yl9yeihfX2EsIF9fYik7Cn0KX19ERVZJQ0VfXyBpbnQgX19oYWRkKGludCBfX2EsIGludCBfX2IpIHsgcmV0dXJuIF9fbnZfaGFkZChfX2EsIF9fYik7IH0KX19ERVZJQ0VfXyBkb3VibGUgX19oaWxvaW50MmRvdWJsZShpbnQgX19hLCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fbnZfaGlsb2ludDJkb3VibGUoX19hLCBfX2IpOwp9Cl9fREVWSUNFX18gaW50IF9faUF0b21pY0FkZChpbnQgKl9fcCwgaW50IF9fdikgewogIHJldHVybiBfX252dm1fYXRvbV9hZGRfZ2VuX2koX19wLCBfX3YpOwp9Cl9fREVWSUNFX18gaW50IF9faUF0b21pY0FkZF9ibG9jayhpbnQgKl9fcCwgaW50IF9fdikgewogIHJldHVybiBfX252dm1fYXRvbV9jdGFfYWRkX2dlbl9pKF9fcCwgX192KTsKfQpfX0RFVklDRV9fIGludCBfX2lBdG9taWNBZGRfc3lzdGVtKGludCAqX19wLCBpbnQgX192KSB7CiAgcmV0dXJuIF9fbnZ2bV9hdG9tX3N5c19hZGRfZ2VuX2koX19wLCBfX3YpOwp9Cl9fREVWSUNFX18gaW50IF9faUF0b21pY0FuZChpbnQgKl9fcCwgaW50IF9fdikgewogIHJldHVybiBfX252dm1fYXRvbV9hbmRfZ2VuX2koX19wLCBfX3YpOwp9Cl9fREVWSUNFX18gaW50IF9faUF0b21pY0FuZF9ibG9jayhpbnQgKl9fcCwgaW50IF9fdikgewogIHJldHVybiBfX252dm1fYXRvbV9jdGFfYW5kX2dlbl9pKF9fcCwgX192KTsKfQpfX0RFVklDRV9fIGludCBfX2lBdG9taWNBbmRfc3lzdGVtKGludCAqX19wLCBpbnQgX192KSB7CiAgcmV0dXJuIF9fbnZ2bV9hdG9tX3N5c19hbmRfZ2VuX2koX19wLCBfX3YpOwp9Cl9fREVWSUNFX18gaW50IF9faUF0b21pY0NBUyhpbnQgKl9fcCwgaW50IF9fY21wLCBpbnQgX192KSB7CiAgcmV0dXJuIF9fbnZ2bV9hdG9tX2Nhc19nZW5faShfX3AsIF9fY21wLCBfX3YpOwp9Cl9fREVWSUNFX18gaW50IF9faUF0b21pY0NBU19ibG9jayhpbnQgKl9fcCwgaW50IF9fY21wLCBpbnQgX192KSB7CiAgcmV0dXJuIF9fbnZ2bV9hdG9tX2N0YV9jYXNfZ2VuX2koX19wLCBfX2NtcCwgX192KTsKfQpfX0RFVklDRV9fIGludCBfX2lBdG9taWNDQVNfc3lzdGVtKGludCAqX19wLCBpbnQgX19jbXAsIGludCBfX3YpIHsKICByZXR1cm4gX19udnZtX2F0b21fc3lzX2Nhc19nZW5faShfX3AsIF9fY21wLCBfX3YpOwp9Cl9fREVWSUNFX18gaW50IF9faUF0b21pY0V4Y2goaW50ICpfX3AsIGludCBfX3YpIHsKICByZXR1cm4gX19udnZtX2F0b21feGNoZ19nZW5faShfX3AsIF9fdik7Cn0KX19ERVZJQ0VfXyBpbnQgX19pQXRvbWljRXhjaF9ibG9jayhpbnQgKl9fcCwgaW50IF9fdikgewogIHJldHVybiBfX252dm1fYXRvbV9jdGFfeGNoZ19nZW5faShfX3AsIF9fdik7Cn0KX19ERVZJQ0VfXyBpbnQgX19pQXRvbWljRXhjaF9zeXN0ZW0oaW50ICpfX3AsIGludCBfX3YpIHsKICByZXR1cm4gX19udnZtX2F0b21fc3lzX3hjaGdfZ2VuX2koX19wLCBfX3YpOwp9Cl9fREVWSUNFX18gaW50IF9faUF0b21pY01heChpbnQgKl9fcCwgaW50IF9fdikgewogIHJldHVybiBfX252dm1fYXRvbV9tYXhfZ2VuX2koX19wLCBfX3YpOwp9Cl9fREVWSUNFX18gaW50IF9faUF0b21pY01heF9ibG9jayhpbnQgKl9fcCwgaW50IF9fdikgewogIHJldHVybiBfX252dm1fYXRvbV9jdGFfbWF4X2dlbl9pKF9fcCwgX192KTsKfQpfX0RFVklDRV9fIGludCBfX2lBdG9taWNNYXhfc3lzdGVtKGludCAqX19wLCBpbnQgX192KSB7CiAgcmV0dXJuIF9fbnZ2bV9hdG9tX3N5c19tYXhfZ2VuX2koX19wLCBfX3YpOwp9Cl9fREVWSUNFX18gaW50IF9faUF0b21pY01pbihpbnQgKl9fcCwgaW50IF9fdikgewogIHJldHVybiBfX252dm1fYXRvbV9taW5fZ2VuX2koX19wLCBfX3YpOwp9Cl9fREVWSUNFX18gaW50IF9faUF0b21pY01pbl9ibG9jayhpbnQgKl9fcCwgaW50IF9fdikgewogIHJldHVybiBfX252dm1fYXRvbV9jdGFfbWluX2dlbl9pKF9fcCwgX192KTsKfQpfX0RFVklDRV9fIGludCBfX2lBdG9taWNNaW5fc3lzdGVtKGludCAqX19wLCBpbnQgX192KSB7CiAgcmV0dXJuIF9fbnZ2bV9hdG9tX3N5c19taW5fZ2VuX2koX19wLCBfX3YpOwp9Cl9fREVWSUNFX18gaW50IF9faUF0b21pY09yKGludCAqX19wLCBpbnQgX192KSB7CiAgcmV0dXJuIF9fbnZ2bV9hdG9tX29yX2dlbl9pKF9fcCwgX192KTsKfQpfX0RFVklDRV9fIGludCBfX2lBdG9taWNPcl9ibG9jayhpbnQgKl9fcCwgaW50IF9fdikgewogIHJldHVybiBfX252dm1fYXRvbV9jdGFfb3JfZ2VuX2koX19wLCBfX3YpOwp9Cl9fREVWSUNFX18gaW50IF9faUF0b21pY09yX3N5c3RlbShpbnQgKl9fcCwgaW50IF9fdikgewogIHJldHVybiBfX252dm1fYXRvbV9zeXNfb3JfZ2VuX2koX19wLCBfX3YpOwp9Cl9fREVWSUNFX18gaW50IF9faUF0b21pY1hvcihpbnQgKl9fcCwgaW50IF9fdikgewogIHJldHVybiBfX252dm1fYXRvbV94b3JfZ2VuX2koX19wLCBfX3YpOwp9Cl9fREVWSUNFX18gaW50IF9faUF0b21pY1hvcl9ibG9jayhpbnQgKl9fcCwgaW50IF9fdikgewogIHJldHVybiBfX252dm1fYXRvbV9jdGFfeG9yX2dlbl9pKF9fcCwgX192KTsKfQpfX0RFVklDRV9fIGludCBfX2lBdG9taWNYb3Jfc3lzdGVtKGludCAqX19wLCBpbnQgX192KSB7CiAgcmV0dXJuIF9fbnZ2bV9hdG9tX3N5c194b3JfZ2VuX2koX19wLCBfX3YpOwp9Cl9fREVWSUNFX18gbG9uZyBsb25nIF9faWxsQXRvbWljTWF4KGxvbmcgbG9uZyAqX19wLCBsb25nIGxvbmcgX192KSB7CiAgcmV0dXJuIF9fbnZ2bV9hdG9tX21heF9nZW5fbGwoX19wLCBfX3YpOwp9Cl9fREVWSUNFX18gbG9uZyBsb25nIF9faWxsQXRvbWljTWF4X2Jsb2NrKGxvbmcgbG9uZyAqX19wLCBsb25nIGxvbmcgX192KSB7CiAgcmV0dXJuIF9fbnZ2bV9hdG9tX2N0YV9tYXhfZ2VuX2xsKF9fcCwgX192KTsKfQpfX0RFVklDRV9fIGxvbmcgbG9uZyBfX2lsbEF0b21pY01heF9zeXN0ZW0obG9uZyBsb25nICpfX3AsIGxvbmcgbG9uZyBfX3YpIHsKICByZXR1cm4gX19udnZtX2F0b21fc3lzX21heF9nZW5fbGwoX19wLCBfX3YpOwp9Cl9fREVWSUNFX18gbG9uZyBsb25nIF9faWxsQXRvbWljTWluKGxvbmcgbG9uZyAqX19wLCBsb25nIGxvbmcgX192KSB7CiAgcmV0dXJuIF9fbnZ2bV9hdG9tX21pbl9nZW5fbGwoX19wLCBfX3YpOwp9Cl9fREVWSUNFX18gbG9uZyBsb25nIF9faWxsQXRvbWljTWluX2Jsb2NrKGxvbmcgbG9uZyAqX19wLCBsb25nIGxvbmcgX192KSB7CiAgcmV0dXJuIF9fbnZ2bV9hdG9tX2N0YV9taW5fZ2VuX2xsKF9fcCwgX192KTsKfQpfX0RFVklDRV9fIGxvbmcgbG9uZyBfX2lsbEF0b21pY01pbl9zeXN0ZW0obG9uZyBsb25nICpfX3AsIGxvbmcgbG9uZyBfX3YpIHsKICByZXR1cm4gX19udnZtX2F0b21fc3lzX21pbl9nZW5fbGwoX19wLCBfX3YpOwp9Cl9fREVWSUNFX18gZG91YmxlIF9faW50MmRvdWJsZV9ybihpbnQgX19hKSB7IHJldHVybiBfX252X2ludDJkb3VibGVfcm4oX19hKTsgfQpfX0RFVklDRV9fIGZsb2F0IF9faW50MmZsb2F0X3JkKGludCBfX2EpIHsgcmV0dXJuIF9fbnZfaW50MmZsb2F0X3JkKF9fYSk7IH0KX19ERVZJQ0VfXyBmbG9hdCBfX2ludDJmbG9hdF9ybihpbnQgX19hKSB7IHJldHVybiBfX252X2ludDJmbG9hdF9ybihfX2EpOyB9Cl9fREVWSUNFX18gZmxvYXQgX19pbnQyZmxvYXRfcnUoaW50IF9fYSkgeyByZXR1cm4gX19udl9pbnQyZmxvYXRfcnUoX19hKTsgfQpfX0RFVklDRV9fIGZsb2F0IF9faW50MmZsb2F0X3J6KGludCBfX2EpIHsgcmV0dXJuIF9fbnZfaW50MmZsb2F0X3J6KF9fYSk7IH0KX19ERVZJQ0VfXyBmbG9hdCBfX2ludF9hc19mbG9hdChpbnQgX19hKSB7IHJldHVybiBfX252X2ludF9hc19mbG9hdChfX2EpOyB9Cl9fREVWSUNFX18gaW50IF9faXNmaW5pdGVkKGRvdWJsZSBfX2EpIHsgcmV0dXJuIF9fbnZfaXNmaW5pdGVkKF9fYSk7IH0KX19ERVZJQ0VfXyBpbnQgX19pc2luZihkb3VibGUgX19hKSB7IHJldHVybiBfX252X2lzaW5mZChfX2EpOyB9Cl9fREVWSUNFX18gaW50IF9faXNpbmZmKGZsb2F0IF9fYSkgeyByZXR1cm4gX19udl9pc2luZmYoX19hKTsgfQojaWZkZWYgX01TQ19WRVIKX19ERVZJQ0VfXyBpbnQgX19pc2luZmwobG9uZyBkb3VibGUgX19hKTsKI2VuZGlmCl9fREVWSUNFX18gaW50IF9faXNuYW4oZG91YmxlIF9fYSkgeyByZXR1cm4gX19udl9pc25hbmQoX19hKTsgfQpfX0RFVklDRV9fIGludCBfX2lzbmFuZihmbG9hdCBfX2EpIHsgcmV0dXJuIF9fbnZfaXNuYW5mKF9fYSk7IH0KI2lmZGVmIF9NU0NfVkVSCl9fREVWSUNFX18gaW50IF9faXNuYW5sKGxvbmcgZG91YmxlIF9fYSk7CiNlbmRpZgpfX0RFVklDRV9fIGRvdWJsZSBfX2xsMmRvdWJsZV9yZChsb25nIGxvbmcgX19hKSB7CiAgcmV0dXJuIF9fbnZfbGwyZG91YmxlX3JkKF9fYSk7Cn0KX19ERVZJQ0VfXyBkb3VibGUgX19sbDJkb3VibGVfcm4obG9uZyBsb25nIF9fYSkgewogIHJldHVybiBfX252X2xsMmRvdWJsZV9ybihfX2EpOwp9Cl9fREVWSUNFX18gZG91YmxlIF9fbGwyZG91YmxlX3J1KGxvbmcgbG9uZyBfX2EpIHsKICByZXR1cm4gX19udl9sbDJkb3VibGVfcnUoX19hKTsKfQpfX0RFVklDRV9fIGRvdWJsZSBfX2xsMmRvdWJsZV9yeihsb25nIGxvbmcgX19hKSB7CiAgcmV0dXJuIF9fbnZfbGwyZG91YmxlX3J6KF9fYSk7Cn0KX19ERVZJQ0VfXyBmbG9hdCBfX2xsMmZsb2F0X3JkKGxvbmcgbG9uZyBfX2EpIHsgcmV0dXJuIF9fbnZfbGwyZmxvYXRfcmQoX19hKTsgfQpfX0RFVklDRV9fIGZsb2F0IF9fbGwyZmxvYXRfcm4obG9uZyBsb25nIF9fYSkgeyByZXR1cm4gX19udl9sbDJmbG9hdF9ybihfX2EpOyB9Cl9fREVWSUNFX18gZmxvYXQgX19sbDJmbG9hdF9ydShsb25nIGxvbmcgX19hKSB7IHJldHVybiBfX252X2xsMmZsb2F0X3J1KF9fYSk7IH0KX19ERVZJQ0VfXyBmbG9hdCBfX2xsMmZsb2F0X3J6KGxvbmcgbG9uZyBfX2EpIHsgcmV0dXJuIF9fbnZfbGwyZmxvYXRfcnooX19hKTsgfQpfX0RFVklDRV9fIGxvbmcgbG9uZyBfX2xsQXRvbWljQW5kKGxvbmcgbG9uZyAqX19wLCBsb25nIGxvbmcgX192KSB7CiAgcmV0dXJuIF9fbnZ2bV9hdG9tX2FuZF9nZW5fbGwoX19wLCBfX3YpOwp9Cl9fREVWSUNFX18gbG9uZyBsb25nIF9fbGxBdG9taWNBbmRfYmxvY2sobG9uZyBsb25nICpfX3AsIGxvbmcgbG9uZyBfX3YpIHsKICByZXR1cm4gX19udnZtX2F0b21fY3RhX2FuZF9nZW5fbGwoX19wLCBfX3YpOwp9Cl9fREVWSUNFX18gbG9uZyBsb25nIF9fbGxBdG9taWNBbmRfc3lzdGVtKGxvbmcgbG9uZyAqX19wLCBsb25nIGxvbmcgX192KSB7CiAgcmV0dXJuIF9fbnZ2bV9hdG9tX3N5c19hbmRfZ2VuX2xsKF9fcCwgX192KTsKfQpfX0RFVklDRV9fIGxvbmcgbG9uZyBfX2xsQXRvbWljT3IobG9uZyBsb25nICpfX3AsIGxvbmcgbG9uZyBfX3YpIHsKICByZXR1cm4gX19udnZtX2F0b21fb3JfZ2VuX2xsKF9fcCwgX192KTsKfQpfX0RFVklDRV9fIGxvbmcgbG9uZyBfX2xsQXRvbWljT3JfYmxvY2sobG9uZyBsb25nICpfX3AsIGxvbmcgbG9uZyBfX3YpIHsKICByZXR1cm4gX19udnZtX2F0b21fY3RhX29yX2dlbl9sbChfX3AsIF9fdik7Cn0KX19ERVZJQ0VfXyBsb25nIGxvbmcgX19sbEF0b21pY09yX3N5c3RlbShsb25nIGxvbmcgKl9fcCwgbG9uZyBsb25nIF9fdikgewogIHJldHVybiBfX252dm1fYXRvbV9zeXNfb3JfZ2VuX2xsKF9fcCwgX192KTsKfQpfX0RFVklDRV9fIGxvbmcgbG9uZyBfX2xsQXRvbWljWG9yKGxvbmcgbG9uZyAqX19wLCBsb25nIGxvbmcgX192KSB7CiAgcmV0dXJuIF9fbnZ2bV9hdG9tX3hvcl9nZW5fbGwoX19wLCBfX3YpOwp9Cl9fREVWSUNFX18gbG9uZyBsb25nIF9fbGxBdG9taWNYb3JfYmxvY2sobG9uZyBsb25nICpfX3AsIGxvbmcgbG9uZyBfX3YpIHsKICByZXR1cm4gX19udnZtX2F0b21fY3RhX3hvcl9nZW5fbGwoX19wLCBfX3YpOwp9Cl9fREVWSUNFX18gbG9uZyBsb25nIF9fbGxBdG9taWNYb3Jfc3lzdGVtKGxvbmcgbG9uZyAqX19wLCBsb25nIGxvbmcgX192KSB7CiAgcmV0dXJuIF9fbnZ2bV9hdG9tX3N5c194b3JfZ2VuX2xsKF9fcCwgX192KTsKfQpfX0RFVklDRV9fIGZsb2F0IF9fbG9nMTBmKGZsb2F0IF9fYSkgeyByZXR1cm4gX19udl9mYXN0X2xvZzEwZihfX2EpOyB9Cl9fREVWSUNFX18gZmxvYXQgX19sb2cyZihmbG9hdCBfX2EpIHsgcmV0dXJuIF9fbnZfZmFzdF9sb2cyZihfX2EpOyB9Cl9fREVWSUNFX18gZmxvYXQgX19sb2dmKGZsb2F0IF9fYSkgeyByZXR1cm4gX19udl9mYXN0X2xvZ2YoX19hKTsgfQpfX0RFVklDRV9fIGRvdWJsZSBfX2xvbmdsb25nX2FzX2RvdWJsZShsb25nIGxvbmcgX19hKSB7CiAgcmV0dXJuIF9fbnZfbG9uZ2xvbmdfYXNfZG91YmxlKF9fYSk7Cn0KX19ERVZJQ0VfXyBpbnQgX19tdWwyNChpbnQgX19hLCBpbnQgX19iKSB7IHJldHVybiBfX252X211bDI0KF9fYSwgX19iKTsgfQpfX0RFVklDRV9fIGxvbmcgbG9uZyBfX211bDY0aGkobG9uZyBsb25nIF9fYSwgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX252X211bDY0aGkoX19hLCBfX2IpOwp9Cl9fREVWSUNFX18gaW50IF9fbXVsaGkoaW50IF9fYSwgaW50IF9fYikgeyByZXR1cm4gX19udl9tdWxoaShfX2EsIF9fYik7IH0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX19wbTAodm9pZCkgeyByZXR1cm4gX19udnZtX3JlYWRfcHR4X3NyZWdfcG0wKCk7IH0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX19wbTEodm9pZCkgeyByZXR1cm4gX19udnZtX3JlYWRfcHR4X3NyZWdfcG0xKCk7IH0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX19wbTIodm9pZCkgeyByZXR1cm4gX19udnZtX3JlYWRfcHR4X3NyZWdfcG0yKCk7IH0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX19wbTModm9pZCkgeyByZXR1cm4gX19udnZtX3JlYWRfcHR4X3NyZWdfcG0zKCk7IH0KX19ERVZJQ0VfXyBpbnQgX19wb3BjKGludCBfX2EpIHsgcmV0dXJuIF9fbnZfcG9wYyhfX2EpOyB9Cl9fREVWSUNFX18gaW50IF9fcG9wY2xsKGxvbmcgbG9uZyBfX2EpIHsgcmV0dXJuIF9fbnZfcG9wY2xsKF9fYSk7IH0KX19ERVZJQ0VfXyBmbG9hdCBfX3Bvd2YoZmxvYXQgX19hLCBmbG9hdCBfX2IpIHsKICByZXR1cm4gX19udl9mYXN0X3Bvd2YoX19hLCBfX2IpOwp9CgovLyBQYXJhbWV0ZXIgbXVzdCBoYXZlIGEga25vd24gaW50ZWdlciB2YWx1ZS4KI2RlZmluZSBfX3Byb2ZfdHJpZ2dlcihfX2EpIF9fYXNtX18gX192b2xhdGlsZV9fKCJwbWV2ZW50IFx0JTA7IiA6OiJpIihfX2EpKQpfX0RFVklDRV9fIGludCBfX3JoYWRkKGludCBfX2EsIGludCBfX2IpIHsgcmV0dXJuIF9fbnZfcmhhZGQoX19hLCBfX2IpOyB9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fc2FkKGludCBfX2EsIGludCBfX2IsIHVuc2lnbmVkIGludCBfX2MpIHsKICByZXR1cm4gX19udl9zYWQoX19hLCBfX2IsIF9fYyk7Cn0KX19ERVZJQ0VfXyBmbG9hdCBfX3NhdHVyYXRlZihmbG9hdCBfX2EpIHsgcmV0dXJuIF9fbnZfc2F0dXJhdGVmKF9fYSk7IH0KX19ERVZJQ0VfXyBpbnQgX19zaWduYml0ZChkb3VibGUgX19hKSB7IHJldHVybiBfX252X3NpZ25iaXRkKF9fYSk7IH0KX19ERVZJQ0VfXyBpbnQgX19zaWduYml0ZihmbG9hdCBfX2EpIHsgcmV0dXJuIF9fbnZfc2lnbmJpdGYoX19hKTsgfQpfX0RFVklDRV9fIHZvaWQgX19zaW5jb3NmKGZsb2F0IF9fYSwgZmxvYXQgKl9fcywgZmxvYXQgKl9fYykgewogIHJldHVybiBfX252X2Zhc3Rfc2luY29zZihfX2EsIF9fcywgX19jKTsKfQpfX0RFVklDRV9fIGZsb2F0IF9fc2luZihmbG9hdCBfX2EpIHsgcmV0dXJuIF9fbnZfZmFzdF9zaW5mKF9fYSk7IH0KX19ERVZJQ0VfXyBpbnQgX19zeW5jdGhyZWFkc19hbmQoaW50IF9fYSkgeyByZXR1cm4gX19udnZtX2JhcjBfYW5kKF9fYSk7IH0KX19ERVZJQ0VfXyBpbnQgX19zeW5jdGhyZWFkc19jb3VudChpbnQgX19hKSB7IHJldHVybiBfX252dm1fYmFyMF9wb3BjKF9fYSk7IH0KX19ERVZJQ0VfXyBpbnQgX19zeW5jdGhyZWFkc19vcihpbnQgX19hKSB7IHJldHVybiBfX252dm1fYmFyMF9vcihfX2EpOyB9Cl9fREVWSUNFX18gZmxvYXQgX190YW5mKGZsb2F0IF9fYSkgeyByZXR1cm4gX19udl9mYXN0X3RhbmYoX19hKTsgfQpfX0RFVklDRV9fIHZvaWQgX190aHJlYWRmZW5jZSh2b2lkKSB7IF9fbnZ2bV9tZW1iYXJfZ2woKTsgfQpfX0RFVklDRV9fIHZvaWQgX190aHJlYWRmZW5jZV9ibG9jayh2b2lkKSB7IF9fbnZ2bV9tZW1iYXJfY3RhKCk7IH07Cl9fREVWSUNFX18gdm9pZCBfX3RocmVhZGZlbmNlX3N5c3RlbSh2b2lkKSB7IF9fbnZ2bV9tZW1iYXJfc3lzKCk7IH07Cl9fREVWSUNFX18gdm9pZCBfX3RyYXAodm9pZCkgeyBfX2FzbV9fIF9fdm9sYXRpbGVfXygidHJhcDsiKTsgfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3VBdG9taWNBZGQodW5zaWduZWQgaW50ICpfX3AsIHVuc2lnbmVkIGludCBfX3YpIHsKICByZXR1cm4gX19udnZtX2F0b21fYWRkX2dlbl9pKChpbnQgKilfX3AsIF9fdik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX191QXRvbWljQWRkX2Jsb2NrKHVuc2lnbmVkIGludCAqX19wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fdikgewogIHJldHVybiBfX252dm1fYXRvbV9jdGFfYWRkX2dlbl9pKChpbnQgKilfX3AsIF9fdik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX191QXRvbWljQWRkX3N5c3RlbSh1bnNpZ25lZCBpbnQgKl9fcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX192KSB7CiAgcmV0dXJuIF9fbnZ2bV9hdG9tX3N5c19hZGRfZ2VuX2koKGludCAqKV9fcCwgX192KTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3VBdG9taWNBbmQodW5zaWduZWQgaW50ICpfX3AsIHVuc2lnbmVkIGludCBfX3YpIHsKICByZXR1cm4gX19udnZtX2F0b21fYW5kX2dlbl9pKChpbnQgKilfX3AsIF9fdik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX191QXRvbWljQW5kX2Jsb2NrKHVuc2lnbmVkIGludCAqX19wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fdikgewogIHJldHVybiBfX252dm1fYXRvbV9jdGFfYW5kX2dlbl9pKChpbnQgKilfX3AsIF9fdik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX191QXRvbWljQW5kX3N5c3RlbSh1bnNpZ25lZCBpbnQgKl9fcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX192KSB7CiAgcmV0dXJuIF9fbnZ2bV9hdG9tX3N5c19hbmRfZ2VuX2koKGludCAqKV9fcCwgX192KTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3VBdG9taWNDQVModW5zaWduZWQgaW50ICpfX3AsIHVuc2lnbmVkIGludCBfX2NtcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3YpIHsKICByZXR1cm4gX19udnZtX2F0b21fY2FzX2dlbl9pKChpbnQgKilfX3AsIF9fY21wLCBfX3YpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50Cl9fdUF0b21pY0NBU19ibG9jayh1bnNpZ25lZCBpbnQgKl9fcCwgdW5zaWduZWQgaW50IF9fY21wLCB1bnNpZ25lZCBpbnQgX192KSB7CiAgcmV0dXJuIF9fbnZ2bV9hdG9tX2N0YV9jYXNfZ2VuX2koKGludCAqKV9fcCwgX19jbXAsIF9fdik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQKX191QXRvbWljQ0FTX3N5c3RlbSh1bnNpZ25lZCBpbnQgKl9fcCwgdW5zaWduZWQgaW50IF9fY21wLCB1bnNpZ25lZCBpbnQgX192KSB7CiAgcmV0dXJuIF9fbnZ2bV9hdG9tX3N5c19jYXNfZ2VuX2koKGludCAqKV9fcCwgX19jbXAsIF9fdik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX191QXRvbWljRGVjKHVuc2lnbmVkIGludCAqX19wLCB1bnNpZ25lZCBpbnQgX192KSB7CiAgcmV0dXJuIF9fbnZ2bV9hdG9tX2RlY19nZW5fdWkoX19wLCBfX3YpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdUF0b21pY0RlY19ibG9jayh1bnNpZ25lZCBpbnQgKl9fcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3YpIHsKICByZXR1cm4gX19udnZtX2F0b21fY3RhX2RlY19nZW5fdWkoX19wLCBfX3YpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdUF0b21pY0RlY19zeXN0ZW0odW5zaWduZWQgaW50ICpfX3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fdikgewogIHJldHVybiBfX252dm1fYXRvbV9zeXNfZGVjX2dlbl91aShfX3AsIF9fdik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX191QXRvbWljRXhjaCh1bnNpZ25lZCBpbnQgKl9fcCwgdW5zaWduZWQgaW50IF9fdikgewogIHJldHVybiBfX252dm1fYXRvbV94Y2hnX2dlbl9pKChpbnQgKilfX3AsIF9fdik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX191QXRvbWljRXhjaF9ibG9jayh1bnNpZ25lZCBpbnQgKl9fcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX192KSB7CiAgcmV0dXJuIF9fbnZ2bV9hdG9tX2N0YV94Y2hnX2dlbl9pKChpbnQgKilfX3AsIF9fdik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX191QXRvbWljRXhjaF9zeXN0ZW0odW5zaWduZWQgaW50ICpfX3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3YpIHsKICByZXR1cm4gX19udnZtX2F0b21fc3lzX3hjaGdfZ2VuX2koKGludCAqKV9fcCwgX192KTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3VBdG9taWNJbmModW5zaWduZWQgaW50ICpfX3AsIHVuc2lnbmVkIGludCBfX3YpIHsKICByZXR1cm4gX19udnZtX2F0b21faW5jX2dlbl91aShfX3AsIF9fdik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX191QXRvbWljSW5jX2Jsb2NrKHVuc2lnbmVkIGludCAqX19wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fdikgewogIHJldHVybiBfX252dm1fYXRvbV9jdGFfaW5jX2dlbl91aShfX3AsIF9fdik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX191QXRvbWljSW5jX3N5c3RlbSh1bnNpZ25lZCBpbnQgKl9fcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX192KSB7CiAgcmV0dXJuIF9fbnZ2bV9hdG9tX3N5c19pbmNfZ2VuX3VpKF9fcCwgX192KTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3VBdG9taWNNYXgodW5zaWduZWQgaW50ICpfX3AsIHVuc2lnbmVkIGludCBfX3YpIHsKICByZXR1cm4gX19udnZtX2F0b21fbWF4X2dlbl91aShfX3AsIF9fdik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX191QXRvbWljTWF4X2Jsb2NrKHVuc2lnbmVkIGludCAqX19wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fdikgewogIHJldHVybiBfX252dm1fYXRvbV9jdGFfbWF4X2dlbl91aShfX3AsIF9fdik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX191QXRvbWljTWF4X3N5c3RlbSh1bnNpZ25lZCBpbnQgKl9fcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX192KSB7CiAgcmV0dXJuIF9fbnZ2bV9hdG9tX3N5c19tYXhfZ2VuX3VpKF9fcCwgX192KTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3VBdG9taWNNaW4odW5zaWduZWQgaW50ICpfX3AsIHVuc2lnbmVkIGludCBfX3YpIHsKICByZXR1cm4gX19udnZtX2F0b21fbWluX2dlbl91aShfX3AsIF9fdik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX191QXRvbWljTWluX2Jsb2NrKHVuc2lnbmVkIGludCAqX19wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fdikgewogIHJldHVybiBfX252dm1fYXRvbV9jdGFfbWluX2dlbl91aShfX3AsIF9fdik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX191QXRvbWljTWluX3N5c3RlbSh1bnNpZ25lZCBpbnQgKl9fcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX192KSB7CiAgcmV0dXJuIF9fbnZ2bV9hdG9tX3N5c19taW5fZ2VuX3VpKF9fcCwgX192KTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3VBdG9taWNPcih1bnNpZ25lZCBpbnQgKl9fcCwgdW5zaWduZWQgaW50IF9fdikgewogIHJldHVybiBfX252dm1fYXRvbV9vcl9nZW5faSgoaW50ICopX19wLCBfX3YpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdUF0b21pY09yX2Jsb2NrKHVuc2lnbmVkIGludCAqX19wLCB1bnNpZ25lZCBpbnQgX192KSB7CiAgcmV0dXJuIF9fbnZ2bV9hdG9tX2N0YV9vcl9nZW5faSgoaW50ICopX19wLCBfX3YpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdUF0b21pY09yX3N5c3RlbSh1bnNpZ25lZCBpbnQgKl9fcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3YpIHsKICByZXR1cm4gX19udnZtX2F0b21fc3lzX29yX2dlbl9pKChpbnQgKilfX3AsIF9fdik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX191QXRvbWljWG9yKHVuc2lnbmVkIGludCAqX19wLCB1bnNpZ25lZCBpbnQgX192KSB7CiAgcmV0dXJuIF9fbnZ2bV9hdG9tX3hvcl9nZW5faSgoaW50ICopX19wLCBfX3YpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdUF0b21pY1hvcl9ibG9jayh1bnNpZ25lZCBpbnQgKl9fcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3YpIHsKICByZXR1cm4gX19udnZtX2F0b21fY3RhX3hvcl9nZW5faSgoaW50ICopX19wLCBfX3YpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdUF0b21pY1hvcl9zeXN0ZW0odW5zaWduZWQgaW50ICpfX3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fdikgewogIHJldHVybiBfX252dm1fYXRvbV9zeXNfeG9yX2dlbl9pKChpbnQgKilfX3AsIF9fdik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX191aGFkZCh1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fbnZfdWhhZGQoX19hLCBfX2IpOwp9Cl9fREVWSUNFX18gZG91YmxlIF9fdWludDJkb3VibGVfcm4odW5zaWduZWQgaW50IF9fYSkgewogIHJldHVybiBfX252X3VpbnQyZG91YmxlX3JuKF9fYSk7Cn0KX19ERVZJQ0VfXyBmbG9hdCBfX3VpbnQyZmxvYXRfcmQodW5zaWduZWQgaW50IF9fYSkgewogIHJldHVybiBfX252X3VpbnQyZmxvYXRfcmQoX19hKTsKfQpfX0RFVklDRV9fIGZsb2F0IF9fdWludDJmbG9hdF9ybih1bnNpZ25lZCBpbnQgX19hKSB7CiAgcmV0dXJuIF9fbnZfdWludDJmbG9hdF9ybihfX2EpOwp9Cl9fREVWSUNFX18gZmxvYXQgX191aW50MmZsb2F0X3J1KHVuc2lnbmVkIGludCBfX2EpIHsKICByZXR1cm4gX19udl91aW50MmZsb2F0X3J1KF9fYSk7Cn0KX19ERVZJQ0VfXyBmbG9hdCBfX3VpbnQyZmxvYXRfcnoodW5zaWduZWQgaW50IF9fYSkgewogIHJldHVybiBfX252X3VpbnQyZmxvYXRfcnooX19hKTsKfQpfX0RFVklDRV9fIGZsb2F0IF9fdWludF9hc19mbG9hdCh1bnNpZ25lZCBpbnQgX19hKSB7CiAgcmV0dXJuIF9fbnZfdWludF9hc19mbG9hdChfX2EpOwp9IC8vCl9fREVWSUNFX18gZG91YmxlIF9fdWxsMmRvdWJsZV9yZCh1bnNpZ25lZCBsb25nIGxvbmcgX19hKSB7CiAgcmV0dXJuIF9fbnZfdWxsMmRvdWJsZV9yZChfX2EpOwp9Cl9fREVWSUNFX18gZG91YmxlIF9fdWxsMmRvdWJsZV9ybih1bnNpZ25lZCBsb25nIGxvbmcgX19hKSB7CiAgcmV0dXJuIF9fbnZfdWxsMmRvdWJsZV9ybihfX2EpOwp9Cl9fREVWSUNFX18gZG91YmxlIF9fdWxsMmRvdWJsZV9ydSh1bnNpZ25lZCBsb25nIGxvbmcgX19hKSB7CiAgcmV0dXJuIF9fbnZfdWxsMmRvdWJsZV9ydShfX2EpOwp9Cl9fREVWSUNFX18gZG91YmxlIF9fdWxsMmRvdWJsZV9yeih1bnNpZ25lZCBsb25nIGxvbmcgX19hKSB7CiAgcmV0dXJuIF9fbnZfdWxsMmRvdWJsZV9yeihfX2EpOwp9Cl9fREVWSUNFX18gZmxvYXQgX191bGwyZmxvYXRfcmQodW5zaWduZWQgbG9uZyBsb25nIF9fYSkgewogIHJldHVybiBfX252X3VsbDJmbG9hdF9yZChfX2EpOwp9Cl9fREVWSUNFX18gZmxvYXQgX191bGwyZmxvYXRfcm4odW5zaWduZWQgbG9uZyBsb25nIF9fYSkgewogIHJldHVybiBfX252X3VsbDJmbG9hdF9ybihfX2EpOwp9Cl9fREVWSUNFX18gZmxvYXQgX191bGwyZmxvYXRfcnUodW5zaWduZWQgbG9uZyBsb25nIF9fYSkgewogIHJldHVybiBfX252X3VsbDJmbG9hdF9ydShfX2EpOwp9Cl9fREVWSUNFX18gZmxvYXQgX191bGwyZmxvYXRfcnoodW5zaWduZWQgbG9uZyBsb25nIF9fYSkgewogIHJldHVybiBfX252X3VsbDJmbG9hdF9yeihfX2EpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgbG9uZyBsb25nIF9fdWxsQXRvbWljQWRkKHVuc2lnbmVkIGxvbmcgbG9uZyAqX19wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgX192KSB7CiAgcmV0dXJuIF9fbnZ2bV9hdG9tX2FkZF9nZW5fbGwoKGxvbmcgbG9uZyAqKV9fcCwgX192KTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3VsbEF0b21pY0FkZF9ibG9jayh1bnNpZ25lZCBsb25nIGxvbmcgKl9fcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIF9fdikgewogIHJldHVybiBfX252dm1fYXRvbV9jdGFfYWRkX2dlbl9sbCgobG9uZyBsb25nICopX19wLCBfX3YpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgbG9uZyBsb25nIF9fdWxsQXRvbWljQWRkX3N5c3RlbSh1bnNpZ25lZCBsb25nIGxvbmcgKl9fcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3YpIHsKICByZXR1cm4gX19udnZtX2F0b21fc3lzX2FkZF9nZW5fbGwoKGxvbmcgbG9uZyAqKV9fcCwgX192KTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3VsbEF0b21pY0FuZCh1bnNpZ25lZCBsb25nIGxvbmcgKl9fcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIF9fdikgewogIHJldHVybiBfX252dm1fYXRvbV9hbmRfZ2VuX2xsKChsb25nIGxvbmcgKilfX3AsIF9fdik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBsb25nIGxvbmcgX191bGxBdG9taWNBbmRfYmxvY2sodW5zaWduZWQgbG9uZyBsb25nICpfX3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3YpIHsKICByZXR1cm4gX19udnZtX2F0b21fY3RhX2FuZF9nZW5fbGwoKGxvbmcgbG9uZyAqKV9fcCwgX192KTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3VsbEF0b21pY0FuZF9zeXN0ZW0odW5zaWduZWQgbG9uZyBsb25nICpfX3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgX192KSB7CiAgcmV0dXJuIF9fbnZ2bV9hdG9tX3N5c19hbmRfZ2VuX2xsKChsb25nIGxvbmcgKilfX3AsIF9fdik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBsb25nIGxvbmcgX191bGxBdG9taWNDQVModW5zaWduZWQgbG9uZyBsb25nICpfX3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2NtcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIF9fdikgewogIHJldHVybiBfX252dm1fYXRvbV9jYXNfZ2VuX2xsKChsb25nIGxvbmcgKilfX3AsIF9fY21wLCBfX3YpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgbG9uZyBsb25nIF9fdWxsQXRvbWljQ0FTX2Jsb2NrKHVuc2lnbmVkIGxvbmcgbG9uZyAqX19wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgX19jbXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3YpIHsKICByZXR1cm4gX19udnZtX2F0b21fY3RhX2Nhc19nZW5fbGwoKGxvbmcgbG9uZyAqKV9fcCwgX19jbXAsIF9fdik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBsb25nIGxvbmcgX191bGxBdG9taWNDQVNfc3lzdGVtKHVuc2lnbmVkIGxvbmcgbG9uZyAqX19wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIF9fY21wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIF9fdikgewogIHJldHVybiBfX252dm1fYXRvbV9zeXNfY2FzX2dlbl9sbCgobG9uZyBsb25nICopX19wLCBfX2NtcCwgX192KTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3VsbEF0b21pY0V4Y2godW5zaWduZWQgbG9uZyBsb25nICpfX3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgX192KSB7CiAgcmV0dXJuIF9fbnZ2bV9hdG9tX3hjaGdfZ2VuX2xsKChsb25nIGxvbmcgKilfX3AsIF9fdik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBsb25nIGxvbmcgX191bGxBdG9taWNFeGNoX2Jsb2NrKHVuc2lnbmVkIGxvbmcgbG9uZyAqX19wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIF9fdikgewogIHJldHVybiBfX252dm1fYXRvbV9jdGFfeGNoZ19nZW5fbGwoKGxvbmcgbG9uZyAqKV9fcCwgX192KTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3VsbEF0b21pY0V4Y2hfc3lzdGVtKHVuc2lnbmVkIGxvbmcgbG9uZyAqX19wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3YpIHsKICByZXR1cm4gX19udnZtX2F0b21fc3lzX3hjaGdfZ2VuX2xsKChsb25nIGxvbmcgKilfX3AsIF9fdik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBsb25nIGxvbmcgX191bGxBdG9taWNNYXgodW5zaWduZWQgbG9uZyBsb25nICpfX3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3YpIHsKICByZXR1cm4gX19udnZtX2F0b21fbWF4X2dlbl91bGwoX19wLCBfX3YpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgbG9uZyBsb25nIF9fdWxsQXRvbWljTWF4X2Jsb2NrKHVuc2lnbmVkIGxvbmcgbG9uZyAqX19wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgX192KSB7CiAgcmV0dXJuIF9fbnZ2bV9hdG9tX2N0YV9tYXhfZ2VuX3VsbChfX3AsIF9fdik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBsb25nIGxvbmcgX191bGxBdG9taWNNYXhfc3lzdGVtKHVuc2lnbmVkIGxvbmcgbG9uZyAqX19wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIF9fdikgewogIHJldHVybiBfX252dm1fYXRvbV9zeXNfbWF4X2dlbl91bGwoX19wLCBfX3YpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgbG9uZyBsb25nIF9fdWxsQXRvbWljTWluKHVuc2lnbmVkIGxvbmcgbG9uZyAqX19wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgX192KSB7CiAgcmV0dXJuIF9fbnZ2bV9hdG9tX21pbl9nZW5fdWxsKF9fcCwgX192KTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3VsbEF0b21pY01pbl9ibG9jayh1bnNpZ25lZCBsb25nIGxvbmcgKl9fcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIF9fdikgewogIHJldHVybiBfX252dm1fYXRvbV9jdGFfbWluX2dlbl91bGwoX19wLCBfX3YpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgbG9uZyBsb25nIF9fdWxsQXRvbWljTWluX3N5c3RlbSh1bnNpZ25lZCBsb25nIGxvbmcgKl9fcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3YpIHsKICByZXR1cm4gX19udnZtX2F0b21fc3lzX21pbl9nZW5fdWxsKF9fcCwgX192KTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3VsbEF0b21pY09yKHVuc2lnbmVkIGxvbmcgbG9uZyAqX19wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3YpIHsKICByZXR1cm4gX19udnZtX2F0b21fb3JfZ2VuX2xsKChsb25nIGxvbmcgKilfX3AsIF9fdik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBsb25nIGxvbmcgX191bGxBdG9taWNPcl9ibG9jayh1bnNpZ25lZCBsb25nIGxvbmcgKl9fcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgX192KSB7CiAgcmV0dXJuIF9fbnZ2bV9hdG9tX2N0YV9vcl9nZW5fbGwoKGxvbmcgbG9uZyAqKV9fcCwgX192KTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3VsbEF0b21pY09yX3N5c3RlbSh1bnNpZ25lZCBsb25nIGxvbmcgKl9fcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIF9fdikgewogIHJldHVybiBfX252dm1fYXRvbV9zeXNfb3JfZ2VuX2xsKChsb25nIGxvbmcgKilfX3AsIF9fdik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBsb25nIGxvbmcgX191bGxBdG9taWNYb3IodW5zaWduZWQgbG9uZyBsb25nICpfX3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3YpIHsKICByZXR1cm4gX19udnZtX2F0b21feG9yX2dlbl9sbCgobG9uZyBsb25nICopX19wLCBfX3YpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgbG9uZyBsb25nIF9fdWxsQXRvbWljWG9yX2Jsb2NrKHVuc2lnbmVkIGxvbmcgbG9uZyAqX19wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgX192KSB7CiAgcmV0dXJuIF9fbnZ2bV9hdG9tX2N0YV94b3JfZ2VuX2xsKChsb25nIGxvbmcgKilfX3AsIF9fdik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBsb25nIGxvbmcgX191bGxBdG9taWNYb3Jfc3lzdGVtKHVuc2lnbmVkIGxvbmcgbG9uZyAqX19wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIF9fdikgewogIHJldHVybiBfX252dm1fYXRvbV9zeXNfeG9yX2dlbl9sbCgobG9uZyBsb25nICopX19wLCBfX3YpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdW11bDI0KHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19udl91bXVsMjQoX19hLCBfX2IpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgbG9uZyBsb25nIF9fdW11bDY0aGkodW5zaWduZWQgbG9uZyBsb25nIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fbnZfdW11bDY0aGkoX19hLCBfX2IpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdW11bGhpKHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19udl91bXVsaGkoX19hLCBfX2IpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdXJoYWRkKHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19udl91cmhhZGQoX19hLCBfX2IpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdXNhZCh1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fYykgewogIHJldHVybiBfX252X3VzYWQoX19hLCBfX2IsIF9fYyk7Cn0KCiNpZiBDVURBX1ZFUlNJT04gPj0gOTAwMCAmJiBDVURBX1ZFUlNJT04gPCA5MDIwCl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdmFiczIodW5zaWduZWQgaW50IF9fYSkgeyByZXR1cm4gX19udl92YWJzMihfX2EpOyB9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdmFiczQodW5zaWduZWQgaW50IF9fYSkgeyByZXR1cm4gX19udl92YWJzNChfX2EpOyB9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdmFic2RpZmZzMih1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fbnZfdmFic2RpZmZzMihfX2EsIF9fYik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX192YWJzZGlmZnM0KHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19udl92YWJzZGlmZnM0KF9fYSwgX19iKTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZhYnNkaWZmdTIodW5zaWduZWQgaW50IF9fYSwgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX252X3ZhYnNkaWZmdTIoX19hLCBfX2IpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdmFic2RpZmZ1NCh1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fbnZfdmFic2RpZmZ1NChfX2EsIF9fYik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX192YWJzc3MyKHVuc2lnbmVkIGludCBfX2EpIHsKICByZXR1cm4gX19udl92YWJzc3MyKF9fYSk7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX192YWJzc3M0KHVuc2lnbmVkIGludCBfX2EpIHsKICByZXR1cm4gX19udl92YWJzc3M0KF9fYSk7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX192YWRkMih1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fbnZfdmFkZDIoX19hLCBfX2IpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdmFkZDQodW5zaWduZWQgaW50IF9fYSwgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX252X3ZhZGQ0KF9fYSwgX19iKTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZhZGRzczIodW5zaWduZWQgaW50IF9fYSwgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX252X3ZhZGRzczIoX19hLCBfX2IpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdmFkZHNzNCh1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fbnZfdmFkZHNzNChfX2EsIF9fYik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX192YWRkdXMyKHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19udl92YWRkdXMyKF9fYSwgX19iKTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZhZGR1czQodW5zaWduZWQgaW50IF9fYSwgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX252X3ZhZGR1czQoX19hLCBfX2IpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdmF2Z3MyKHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19udl92YXZnczIoX19hLCBfX2IpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdmF2Z3M0KHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19udl92YXZnczQoX19hLCBfX2IpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdmF2Z3UyKHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19udl92YXZndTIoX19hLCBfX2IpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdmF2Z3U0KHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19udl92YXZndTQoX19hLCBfX2IpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdmNtcGVxMih1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fbnZfdmNtcGVxMihfX2EsIF9fYik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX192Y21wZXE0KHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19udl92Y21wZXE0KF9fYSwgX19iKTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZjbXBnZXMyKHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19udl92Y21wZ2VzMihfX2EsIF9fYik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX192Y21wZ2VzNCh1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fbnZfdmNtcGdlczQoX19hLCBfX2IpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdmNtcGdldTIodW5zaWduZWQgaW50IF9fYSwgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX252X3ZjbXBnZXUyKF9fYSwgX19iKTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZjbXBnZXU0KHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19udl92Y21wZ2V1NChfX2EsIF9fYik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX192Y21wZ3RzMih1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fbnZfdmNtcGd0czIoX19hLCBfX2IpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdmNtcGd0czQodW5zaWduZWQgaW50IF9fYSwgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX252X3ZjbXBndHM0KF9fYSwgX19iKTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZjbXBndHUyKHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19udl92Y21wZ3R1MihfX2EsIF9fYik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX192Y21wZ3R1NCh1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fbnZfdmNtcGd0dTQoX19hLCBfX2IpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdmNtcGxlczIodW5zaWduZWQgaW50IF9fYSwgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX252X3ZjbXBsZXMyKF9fYSwgX19iKTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZjbXBsZXM0KHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19udl92Y21wbGVzNChfX2EsIF9fYik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX192Y21wbGV1Mih1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fbnZfdmNtcGxldTIoX19hLCBfX2IpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdmNtcGxldTQodW5zaWduZWQgaW50IF9fYSwgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX252X3ZjbXBsZXU0KF9fYSwgX19iKTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZjbXBsdHMyKHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19udl92Y21wbHRzMihfX2EsIF9fYik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX192Y21wbHRzNCh1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fbnZfdmNtcGx0czQoX19hLCBfX2IpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdmNtcGx0dTIodW5zaWduZWQgaW50IF9fYSwgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX252X3ZjbXBsdHUyKF9fYSwgX19iKTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZjbXBsdHU0KHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19udl92Y21wbHR1NChfX2EsIF9fYik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX192Y21wbmUyKHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19udl92Y21wbmUyKF9fYSwgX19iKTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZjbXBuZTQodW5zaWduZWQgaW50IF9fYSwgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX252X3ZjbXBuZTQoX19hLCBfX2IpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdmhhZGR1Mih1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fbnZfdmhhZGR1MihfX2EsIF9fYik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX192aGFkZHU0KHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19udl92aGFkZHU0KF9fYSwgX19iKTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZtYXhzMih1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fbnZfdm1heHMyKF9fYSwgX19iKTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZtYXhzNCh1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fbnZfdm1heHM0KF9fYSwgX19iKTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZtYXh1Mih1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fbnZfdm1heHUyKF9fYSwgX19iKTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZtYXh1NCh1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fbnZfdm1heHU0KF9fYSwgX19iKTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZtaW5zMih1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fbnZfdm1pbnMyKF9fYSwgX19iKTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZtaW5zNCh1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fbnZfdm1pbnM0KF9fYSwgX19iKTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZtaW51Mih1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fbnZfdm1pbnUyKF9fYSwgX19iKTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZtaW51NCh1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fbnZfdm1pbnU0KF9fYSwgX19iKTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZuZWcyKHVuc2lnbmVkIGludCBfX2EpIHsgcmV0dXJuIF9fbnZfdm5lZzIoX19hKTsgfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZuZWc0KHVuc2lnbmVkIGludCBfX2EpIHsgcmV0dXJuIF9fbnZfdm5lZzQoX19hKTsgfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZuZWdzczIodW5zaWduZWQgaW50IF9fYSkgewogIHJldHVybiBfX252X3ZuZWdzczIoX19hKTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZuZWdzczQodW5zaWduZWQgaW50IF9fYSkgewogIHJldHVybiBfX252X3ZuZWdzczQoX19hKTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZzYWRzMih1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fbnZfdnNhZHMyKF9fYSwgX19iKTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZzYWRzNCh1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fbnZfdnNhZHM0KF9fYSwgX19iKTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZzYWR1Mih1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fbnZfdnNhZHUyKF9fYSwgX19iKTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZzYWR1NCh1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fbnZfdnNhZHU0KF9fYSwgX19iKTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZzZXRlcTIodW5zaWduZWQgaW50IF9fYSwgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX252X3ZzZXRlcTIoX19hLCBfX2IpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdnNldGVxNCh1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fbnZfdnNldGVxNChfX2EsIF9fYik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX192c2V0Z2VzMih1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fbnZfdnNldGdlczIoX19hLCBfX2IpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdnNldGdlczQodW5zaWduZWQgaW50IF9fYSwgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX252X3ZzZXRnZXM0KF9fYSwgX19iKTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZzZXRnZXUyKHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19udl92c2V0Z2V1MihfX2EsIF9fYik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX192c2V0Z2V1NCh1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fbnZfdnNldGdldTQoX19hLCBfX2IpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdnNldGd0czIodW5zaWduZWQgaW50IF9fYSwgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX252X3ZzZXRndHMyKF9fYSwgX19iKTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZzZXRndHM0KHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19udl92c2V0Z3RzNChfX2EsIF9fYik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX192c2V0Z3R1Mih1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fbnZfdnNldGd0dTIoX19hLCBfX2IpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdnNldGd0dTQodW5zaWduZWQgaW50IF9fYSwgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX252X3ZzZXRndHU0KF9fYSwgX19iKTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZzZXRsZXMyKHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19udl92c2V0bGVzMihfX2EsIF9fYik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX192c2V0bGVzNCh1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fbnZfdnNldGxlczQoX19hLCBfX2IpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdnNldGxldTIodW5zaWduZWQgaW50IF9fYSwgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX252X3ZzZXRsZXUyKF9fYSwgX19iKTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZzZXRsZXU0KHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19udl92c2V0bGV1NChfX2EsIF9fYik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX192c2V0bHRzMih1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fbnZfdnNldGx0czIoX19hLCBfX2IpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdnNldGx0czQodW5zaWduZWQgaW50IF9fYSwgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX252X3ZzZXRsdHM0KF9fYSwgX19iKTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZzZXRsdHUyKHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19udl92c2V0bHR1MihfX2EsIF9fYik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX192c2V0bHR1NCh1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fbnZfdnNldGx0dTQoX19hLCBfX2IpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdnNldG5lMih1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fbnZfdnNldG5lMihfX2EsIF9fYik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX192c2V0bmU0KHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19udl92c2V0bmU0KF9fYSwgX19iKTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZzdWIyKHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19udl92c3ViMihfX2EsIF9fYik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX192c3ViNCh1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fbnZfdnN1YjQoX19hLCBfX2IpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdnN1YnNzMih1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fbnZfdnN1YnNzMihfX2EsIF9fYik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX192c3Vic3M0KHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19udl92c3Vic3M0KF9fYSwgX19iKTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZzdWJ1czIodW5zaWduZWQgaW50IF9fYSwgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX252X3ZzdWJ1czIoX19hLCBfX2IpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdnN1YnVzNCh1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fbnZfdnN1YnVzNChfX2EsIF9fYik7Cn0KI2Vsc2UgLy8gQ1VEQV9WRVJTSU9OID49IDkwMjAKLy8gQ1VEQSBubyBsb25nZXIgcHJvdmlkZXMgaW5saW5lIGFzc2VtYmx5IChvciBiaXRjb2RlKSBpbXBsZW1lbnRhdGlvbiBvZiB0aGVzZQovLyBmdW5jdGlvbnMsIHNvIHdlIGhhdmUgdG8gcmVpbXBsbWVudCB0aGVtLiBUaGUgaW1wbGVtZW50YXRpb24gaXMgbmFpdmUgYW5kIGlzCi8vIG5vdCBvcHRpbWl6ZWQgZm9yIHBlcmZvcm1hbmNlLgoKLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGNvbnZlcnQgTi1iaXQgYm9vbGVhbiBzdWJmaWVsZHMgaW50byBhbGwtMCBvciBhbGwtMS4KLy8gRS5nLiBfX2Jvb2wybWFzaygweDAxMDAwMTAwLDgpIC0+IDB4ZmYwMGZmMDAKLy8gICAgICBfX2Jvb2wybWFzaygweDAwMDEwMDAwLDE2KSAtPiAweGZmZmYwMDAwCl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fYm9vbDJtYXNrKHVuc2lnbmVkIGludCBfX2EsIGludCBzaGlmdCkgewogIHJldHVybiAoX19hIDw8IHNoaWZ0KSAtIF9fYTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZhYnMyKHVuc2lnbmVkIGludCBfX2EpIHsKICB1bnNpZ25lZCBpbnQgcjsKICBfX2FzbV9fKCJ2YWJzZGlmZjIuczMyLnMzMi5zMzIgJTAsJTEsJTIsJTM7IgogICAgICAgICAgOiAiPXIiKHIpCiAgICAgICAgICA6ICJyIihfX2EpLCAiciIoMCksICJyIigwKSk7CiAgcmV0dXJuIHI7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX192YWJzNCh1bnNpZ25lZCBpbnQgX19hKSB7CiAgdW5zaWduZWQgaW50IHI7CiAgX19hc21fXygidmFic2RpZmY0LnMzMi5zMzIuczMyICUwLCUxLCUyLCUzOyIKICAgICAgICAgIDogIj1yIihyKQogICAgICAgICAgOiAiciIoX19hKSwgInIiKDApLCAiciIoMCkpOwogIHJldHVybiByOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdmFic2RpZmZzMih1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgdW5zaWduZWQgaW50IHI7CiAgX19hc21fXygidmFic2RpZmYyLnMzMi5zMzIuczMyICUwLCUxLCUyLCUzOyIKICAgICAgICAgIDogIj1yIihyKQogICAgICAgICAgOiAiciIoX19hKSwgInIiKF9fYiksICJyIigwKSk7CiAgcmV0dXJuIHI7Cn0KCl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdmFic2RpZmZzNCh1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgdW5zaWduZWQgaW50IHI7CiAgX19hc21fXygidmFic2RpZmY0LnMzMi5zMzIuczMyICUwLCUxLCUyLCUzOyIKICAgICAgICAgIDogIj1yIihyKQogICAgICAgICAgOiAiciIoX19hKSwgInIiKF9fYiksICJyIigwKSk7CiAgcmV0dXJuIHI7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX192YWJzZGlmZnUyKHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICB1bnNpZ25lZCBpbnQgcjsKICBfX2FzbV9fKCJ2YWJzZGlmZjIudTMyLnUzMi51MzIgJTAsJTEsJTIsJTM7IgogICAgICAgICAgOiAiPXIiKHIpCiAgICAgICAgICA6ICJyIihfX2EpLCAiciIoX19iKSwgInIiKDApKTsKICByZXR1cm4gcjsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZhYnNkaWZmdTQodW5zaWduZWQgaW50IF9fYSwgdW5zaWduZWQgaW50IF9fYikgewogIHVuc2lnbmVkIGludCByOwogIF9fYXNtX18oInZhYnNkaWZmNC51MzIudTMyLnUzMiAlMCwlMSwlMiwlMzsiCiAgICAgICAgICA6ICI9ciIocikKICAgICAgICAgIDogInIiKF9fYSksICJyIihfX2IpLCAiciIoMCkpOwogIHJldHVybiByOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdmFic3NzMih1bnNpZ25lZCBpbnQgX19hKSB7CiAgdW5zaWduZWQgaW50IHI7CiAgX19hc21fXygidmFic2RpZmYyLnMzMi5zMzIuczMyLnNhdCAlMCwlMSwlMiwlMzsiCiAgICAgICAgICA6ICI9ciIocikKICAgICAgICAgIDogInIiKF9fYSksICJyIigwKSwgInIiKDApKTsKICByZXR1cm4gcjsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZhYnNzczQodW5zaWduZWQgaW50IF9fYSkgewogIHVuc2lnbmVkIGludCByOwogIF9fYXNtX18oInZhYnNkaWZmNC5zMzIuczMyLnMzMi5zYXQgJTAsJTEsJTIsJTM7IgogICAgICAgICAgOiAiPXIiKHIpCiAgICAgICAgICA6ICJyIihfX2EpLCAiciIoMCksICJyIigwKSk7CiAgcmV0dXJuIHI7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX192YWRkMih1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgdW5zaWduZWQgaW50IHI7CiAgX19hc21fXygidmFkZDIudTMyLnUzMi51MzIgJTAsJTEsJTIsJTM7IgogICAgICAgICAgOiAiPXIiKHIpCiAgICAgICAgICA6ICJyIihfX2EpLCAiciIoX19iKSwgInIiKDApKTsKICByZXR1cm4gcjsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZhZGQ0KHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICB1bnNpZ25lZCBpbnQgcjsKICBfX2FzbV9fKCJ2YWRkNC51MzIudTMyLnUzMiAlMCwlMSwlMiwlMzsiCiAgICAgICAgICA6ICI9ciIocikKICAgICAgICAgIDogInIiKF9fYSksICJyIihfX2IpLCAiciIoMCkpOwogIHJldHVybiByOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdmFkZHNzMih1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgdW5zaWduZWQgaW50IHI7CiAgX19hc21fXygidmFkZDIuczMyLnMzMi5zMzIuc2F0ICUwLCUxLCUyLCUzOyIKICAgICAgICAgIDogIj1yIihyKQogICAgICAgICAgOiAiciIoX19hKSwgInIiKF9fYiksICJyIigwKSk7CiAgcmV0dXJuIHI7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX192YWRkc3M0KHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICB1bnNpZ25lZCBpbnQgcjsKICBfX2FzbV9fKCJ2YWRkNC5zMzIuczMyLnMzMi5zYXQgJTAsJTEsJTIsJTM7IgogICAgICAgICAgOiAiPXIiKHIpCiAgICAgICAgICA6ICJyIihfX2EpLCAiciIoX19iKSwgInIiKDApKTsKICByZXR1cm4gcjsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZhZGR1czIodW5zaWduZWQgaW50IF9fYSwgdW5zaWduZWQgaW50IF9fYikgewogIHVuc2lnbmVkIGludCByOwogIF9fYXNtX18oInZhZGQyLnUzMi51MzIudTMyLnNhdCAlMCwlMSwlMiwlMzsiCiAgICAgICAgICA6ICI9ciIocikKICAgICAgICAgIDogInIiKF9fYSksICJyIihfX2IpLCAiciIoMCkpOwogIHJldHVybiByOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdmFkZHVzNCh1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgdW5zaWduZWQgaW50IHI7CiAgX19hc21fXygidmFkZDQudTMyLnUzMi51MzIuc2F0ICUwLCUxLCUyLCUzOyIKICAgICAgICAgIDogIj1yIihyKQogICAgICAgICAgOiAiciIoX19hKSwgInIiKF9fYiksICJyIigwKSk7CiAgcmV0dXJuIHI7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX192YXZnczIodW5zaWduZWQgaW50IF9fYSwgdW5zaWduZWQgaW50IF9fYikgewogIHVuc2lnbmVkIGludCByOwogIF9fYXNtX18oInZhdnJnMi5zMzIuczMyLnMzMiAlMCwlMSwlMiwlMzsiCiAgICAgICAgICA6ICI9ciIocikKICAgICAgICAgIDogInIiKF9fYSksICJyIihfX2IpLCAiciIoMCkpOwogIHJldHVybiByOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdmF2Z3M0KHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICB1bnNpZ25lZCBpbnQgcjsKICBfX2FzbV9fKCJ2YXZyZzQuczMyLnMzMi5zMzIgJTAsJTEsJTIsJTM7IgogICAgICAgICAgOiAiPXIiKHIpCiAgICAgICAgICA6ICJyIihfX2EpLCAiciIoX19iKSwgInIiKDApKTsKICByZXR1cm4gcjsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3Zhdmd1Mih1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgdW5zaWduZWQgaW50IHI7CiAgX19hc21fXygidmF2cmcyLnUzMi51MzIudTMyICUwLCUxLCUyLCUzOyIKICAgICAgICAgIDogIj1yIihyKQogICAgICAgICAgOiAiciIoX19hKSwgInIiKF9fYiksICJyIigwKSk7CiAgcmV0dXJuIHI7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX192YXZndTQodW5zaWduZWQgaW50IF9fYSwgdW5zaWduZWQgaW50IF9fYikgewogIHVuc2lnbmVkIGludCByOwogIF9fYXNtX18oInZhdnJnNC51MzIudTMyLnUzMiAlMCwlMSwlMiwlMzsiCiAgICAgICAgICA6ICI9ciIocikKICAgICAgICAgIDogInIiKF9fYSksICJyIihfX2IpLCAiciIoMCkpOwogIHJldHVybiByOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdnNldGVxMih1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgdW5zaWduZWQgaW50IHI7CiAgX19hc21fXygidnNldDIudTMyLnUzMi5lcSAlMCwlMSwlMiwlMzsiCiAgICAgICAgICA6ICI9ciIocikKICAgICAgICAgIDogInIiKF9fYSksICJyIihfX2IpLCAiciIoMCkpOwogIHJldHVybiByOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdmNtcGVxMih1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYm9vbDJtYXNrKF9fdnNldGVxMihfX2EsIF9fYiksIDE2KTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZzZXRlcTQodW5zaWduZWQgaW50IF9fYSwgdW5zaWduZWQgaW50IF9fYikgewogIHVuc2lnbmVkIGludCByOwogIF9fYXNtX18oInZzZXQ0LnUzMi51MzIuZXEgJTAsJTEsJTIsJTM7IgogICAgICAgICAgOiAiPXIiKHIpCiAgICAgICAgICA6ICJyIihfX2EpLCAiciIoX19iKSwgInIiKDApKTsKICByZXR1cm4gcjsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZjbXBlcTQodW5zaWduZWQgaW50IF9fYSwgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX2Jvb2wybWFzayhfX3ZzZXRlcTQoX19hLCBfX2IpLCA4KTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZzZXRnZXMyKHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICB1bnNpZ25lZCBpbnQgcjsKICBfX2FzbV9fKCJ2c2V0Mi5zMzIuczMyLmdlICUwLCUxLCUyLCUzOyIKICAgICAgICAgIDogIj1yIihyKQogICAgICAgICAgOiAiciIoX19hKSwgInIiKF9fYiksICJyIigwKSk7CiAgcmV0dXJuIHI7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX192Y21wZ2VzMih1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYm9vbDJtYXNrKF9fdnNldGdlczIoX19hLCBfX2IpLCAxNik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX192c2V0Z2VzNCh1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgdW5zaWduZWQgaW50IHI7CiAgX19hc21fXygidnNldDQuczMyLnMzMi5nZSAlMCwlMSwlMiwlMzsiCiAgICAgICAgICA6ICI9ciIocikKICAgICAgICAgIDogInIiKF9fYSksICJyIihfX2IpLCAiciIoMCkpOwogIHJldHVybiByOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdmNtcGdlczQodW5zaWduZWQgaW50IF9fYSwgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX2Jvb2wybWFzayhfX3ZzZXRnZXM0KF9fYSwgX19iKSwgOCk7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX192c2V0Z2V1Mih1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgdW5zaWduZWQgaW50IHI7CiAgX19hc21fXygidnNldDIudTMyLnUzMi5nZSAlMCwlMSwlMiwlMzsiCiAgICAgICAgICA6ICI9ciIocikKICAgICAgICAgIDogInIiKF9fYSksICJyIihfX2IpLCAiciIoMCkpOwogIHJldHVybiByOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdmNtcGdldTIodW5zaWduZWQgaW50IF9fYSwgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX2Jvb2wybWFzayhfX3ZzZXRnZXUyKF9fYSwgX19iKSwgMTYpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdnNldGdldTQodW5zaWduZWQgaW50IF9fYSwgdW5zaWduZWQgaW50IF9fYikgewogIHVuc2lnbmVkIGludCByOwogIF9fYXNtX18oInZzZXQ0LnUzMi51MzIuZ2UgJTAsJTEsJTIsJTM7IgogICAgICAgICAgOiAiPXIiKHIpCiAgICAgICAgICA6ICJyIihfX2EpLCAiciIoX19iKSwgInIiKDApKTsKICByZXR1cm4gcjsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZjbXBnZXU0KHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19ib29sMm1hc2soX192c2V0Z2V1NChfX2EsIF9fYiksIDgpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdnNldGd0czIodW5zaWduZWQgaW50IF9fYSwgdW5zaWduZWQgaW50IF9fYikgewogIHVuc2lnbmVkIGludCByOwogIF9fYXNtX18oInZzZXQyLnMzMi5zMzIuZ3QgJTAsJTEsJTIsJTM7IgogICAgICAgICAgOiAiPXIiKHIpCiAgICAgICAgICA6ICJyIihfX2EpLCAiciIoX19iKSwgInIiKDApKTsKICByZXR1cm4gcjsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZjbXBndHMyKHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19ib29sMm1hc2soX192c2V0Z3RzMihfX2EsIF9fYiksIDE2KTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZzZXRndHM0KHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICB1bnNpZ25lZCBpbnQgcjsKICBfX2FzbV9fKCJ2c2V0NC5zMzIuczMyLmd0ICUwLCUxLCUyLCUzOyIKICAgICAgICAgIDogIj1yIihyKQogICAgICAgICAgOiAiciIoX19hKSwgInIiKF9fYiksICJyIigwKSk7CiAgcmV0dXJuIHI7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX192Y21wZ3RzNCh1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYm9vbDJtYXNrKF9fdnNldGd0czQoX19hLCBfX2IpLCA4KTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZzZXRndHUyKHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICB1bnNpZ25lZCBpbnQgcjsKICBfX2FzbV9fKCJ2c2V0Mi51MzIudTMyLmd0ICUwLCUxLCUyLCUzOyIKICAgICAgICAgIDogIj1yIihyKQogICAgICAgICAgOiAiciIoX19hKSwgInIiKF9fYiksICJyIigwKSk7CiAgcmV0dXJuIHI7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX192Y21wZ3R1Mih1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYm9vbDJtYXNrKF9fdnNldGd0dTIoX19hLCBfX2IpLCAxNik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX192c2V0Z3R1NCh1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgdW5zaWduZWQgaW50IHI7CiAgX19hc21fXygidnNldDQudTMyLnUzMi5ndCAlMCwlMSwlMiwlMzsiCiAgICAgICAgICA6ICI9ciIocikKICAgICAgICAgIDogInIiKF9fYSksICJyIihfX2IpLCAiciIoMCkpOwogIHJldHVybiByOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdmNtcGd0dTQodW5zaWduZWQgaW50IF9fYSwgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX2Jvb2wybWFzayhfX3ZzZXRndHU0KF9fYSwgX19iKSwgOCk7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX192c2V0bGVzMih1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgdW5zaWduZWQgaW50IHI7CiAgX19hc21fXygidnNldDIuczMyLnMzMi5sZSAlMCwlMSwlMiwlMzsiCiAgICAgICAgICA6ICI9ciIocikKICAgICAgICAgIDogInIiKF9fYSksICJyIihfX2IpLCAiciIoMCkpOwogIHJldHVybiByOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdmNtcGxlczIodW5zaWduZWQgaW50IF9fYSwgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX2Jvb2wybWFzayhfX3ZzZXRsZXMyKF9fYSwgX19iKSwgMTYpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdnNldGxlczQodW5zaWduZWQgaW50IF9fYSwgdW5zaWduZWQgaW50IF9fYikgewogIHVuc2lnbmVkIGludCByOwogIF9fYXNtX18oInZzZXQ0LnMzMi5zMzIubGUgJTAsJTEsJTIsJTM7IgogICAgICAgICAgOiAiPXIiKHIpCiAgICAgICAgICA6ICJyIihfX2EpLCAiciIoX19iKSwgInIiKDApKTsKICByZXR1cm4gcjsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZjbXBsZXM0KHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19ib29sMm1hc2soX192c2V0bGVzNChfX2EsIF9fYiksIDgpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdnNldGxldTIodW5zaWduZWQgaW50IF9fYSwgdW5zaWduZWQgaW50IF9fYikgewogIHVuc2lnbmVkIGludCByOwogIF9fYXNtX18oInZzZXQyLnUzMi51MzIubGUgJTAsJTEsJTIsJTM7IgogICAgICAgICAgOiAiPXIiKHIpCiAgICAgICAgICA6ICJyIihfX2EpLCAiciIoX19iKSwgInIiKDApKTsKICByZXR1cm4gcjsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZjbXBsZXUyKHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19ib29sMm1hc2soX192c2V0bGV1MihfX2EsIF9fYiksIDE2KTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZzZXRsZXU0KHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICB1bnNpZ25lZCBpbnQgcjsKICBfX2FzbV9fKCJ2c2V0NC51MzIudTMyLmxlICUwLCUxLCUyLCUzOyIKICAgICAgICAgIDogIj1yIihyKQogICAgICAgICAgOiAiciIoX19hKSwgInIiKF9fYiksICJyIigwKSk7CiAgcmV0dXJuIHI7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX192Y21wbGV1NCh1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYm9vbDJtYXNrKF9fdnNldGxldTQoX19hLCBfX2IpLCA4KTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZzZXRsdHMyKHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICB1bnNpZ25lZCBpbnQgcjsKICBfX2FzbV9fKCJ2c2V0Mi5zMzIuczMyLmx0ICUwLCUxLCUyLCUzOyIKICAgICAgICAgIDogIj1yIihyKQogICAgICAgICAgOiAiciIoX19hKSwgInIiKF9fYiksICJyIigwKSk7CiAgcmV0dXJuIHI7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX192Y21wbHRzMih1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYm9vbDJtYXNrKF9fdnNldGx0czIoX19hLCBfX2IpLCAxNik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX192c2V0bHRzNCh1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgdW5zaWduZWQgaW50IHI7CiAgX19hc21fXygidnNldDQuczMyLnMzMi5sdCAlMCwlMSwlMiwlMzsiCiAgICAgICAgICA6ICI9ciIocikKICAgICAgICAgIDogInIiKF9fYSksICJyIihfX2IpLCAiciIoMCkpOwogIHJldHVybiByOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdmNtcGx0czQodW5zaWduZWQgaW50IF9fYSwgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX2Jvb2wybWFzayhfX3ZzZXRsdHM0KF9fYSwgX19iKSwgOCk7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX192c2V0bHR1Mih1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgdW5zaWduZWQgaW50IHI7CiAgX19hc21fXygidnNldDIudTMyLnUzMi5sdCAlMCwlMSwlMiwlMzsiCiAgICAgICAgICA6ICI9ciIocikKICAgICAgICAgIDogInIiKF9fYSksICJyIihfX2IpLCAiciIoMCkpOwogIHJldHVybiByOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdmNtcGx0dTIodW5zaWduZWQgaW50IF9fYSwgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX2Jvb2wybWFzayhfX3ZzZXRsdHUyKF9fYSwgX19iKSwgMTYpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdnNldGx0dTQodW5zaWduZWQgaW50IF9fYSwgdW5zaWduZWQgaW50IF9fYikgewogIHVuc2lnbmVkIGludCByOwogIF9fYXNtX18oInZzZXQ0LnUzMi51MzIubHQgJTAsJTEsJTIsJTM7IgogICAgICAgICAgOiAiPXIiKHIpCiAgICAgICAgICA6ICJyIihfX2EpLCAiciIoX19iKSwgInIiKDApKTsKICByZXR1cm4gcjsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZjbXBsdHU0KHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19ib29sMm1hc2soX192c2V0bHR1NChfX2EsIF9fYiksIDgpOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdnNldG5lMih1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgdW5zaWduZWQgaW50IHI7CiAgX19hc21fXygidnNldDIudTMyLnUzMi5uZSAlMCwlMSwlMiwlMzsiCiAgICAgICAgICA6ICI9ciIocikKICAgICAgICAgIDogInIiKF9fYSksICJyIihfX2IpLCAiciIoMCkpOwogIHJldHVybiByOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdmNtcG5lMih1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYm9vbDJtYXNrKF9fdnNldG5lMihfX2EsIF9fYiksIDE2KTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZzZXRuZTQodW5zaWduZWQgaW50IF9fYSwgdW5zaWduZWQgaW50IF9fYikgewogIHVuc2lnbmVkIGludCByOwogIF9fYXNtX18oInZzZXQ0LnUzMi51MzIubmUgJTAsJTEsJTIsJTM7IgogICAgICAgICAgOiAiPXIiKHIpCiAgICAgICAgICA6ICJyIihfX2EpLCAiciIoX19iKSwgInIiKDApKTsKICByZXR1cm4gcjsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZjbXBuZTQodW5zaWduZWQgaW50IF9fYSwgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX2Jvb2wybWFzayhfX3ZzZXRuZTQoX19hLCBfX2IpLCA4KTsKfQoKLy8gQmFzZWQgb24gSVRFTSAyMyBpbiBBSU0tMjM5OiBodHRwOi8vZHNwYWNlLm1pdC5lZHUvaGFuZGxlLzE3MjEuMS82MDg2Ci8vIChhICYgYikgKyAoYSB8IGIpID0gYSArIGIgPSAoYSBeIGIpICsgMiAqIChhICYgYikgPT4KLy8gKGEgKyBiKSAvIDIgPSAoKGEgXiBiKSA+PiAxKSArIChhICYgYikKLy8gVG8gb3BlcmF0ZSBvbiBtdWx0aXBsZSBzdWItZWxlbWVudHMgd2UgbmVlZCB0byBtYWtlIHN1cmUgdG8gbWFzayBvdXQgYml0cwovLyB0aGF0IGNyb3NzZWQgb3ZlciBpbnRvIGFkamFjZW50IGVsZW1lbnRzIGR1cmluZyB0aGUgc2hpZnQuCl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdmhhZGR1Mih1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuICgoKF9fYSBeIF9fYikgPj4gMSkgJiB+MHg4MDAwODAwMHUpICsgKF9fYSAmIF9fYik7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX192aGFkZHU0KHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKCgoX19hIF4gX19iKSA+PiAxKSAmIH4weDgwODA4MDgwdSkgKyAoX19hICYgX19iKTsKfQoKX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX192bWF4czIodW5zaWduZWQgaW50IF9fYSwgdW5zaWduZWQgaW50IF9fYikgewogIHVuc2lnbmVkIGludCByOwogIGlmICgoX19hICYgMHg4MDAwKSAmJiAoX19iICYgMHg4MDAwKSkgewogICAgLy8gV29yayBhcm91bmQgYSBidWcgaW4gcHR4YXMgd2hpY2ggcHJvZHVjZXMgaW52YWxpZCByZXN1bHQgaWYgbG93IGVsZW1lbnQKICAgIC8vIGlzIG5lZ2F0aXZlLgogICAgdW5zaWduZWQgbWFzayA9IF9fdmNtcGd0czIoX19hLCBfX2IpOwogICAgciA9IChfX2EgJiBtYXNrKSB8IChfX2IgJiB+bWFzayk7CiAgfSBlbHNlIHsKICAgIF9fYXNtX18oInZtYXgyLnMzMi5zMzIuczMyICUwLCUxLCUyLCUzOyIKICAgICAgICAgICAgOiAiPXIiKHIpCiAgICAgICAgICAgIDogInIiKF9fYSksICJyIihfX2IpLCAiciIoMCkpOwogIH0KICByZXR1cm4gcjsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZtYXhzNCh1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgdW5zaWduZWQgaW50IHI7CiAgX19hc21fXygidm1heDQuczMyLnMzMi5zMzIgJTAsJTEsJTIsJTM7IgogICAgICAgICAgOiAiPXIiKHIpCiAgICAgICAgICA6ICJyIihfX2EpLCAiciIoX19iKSwgInIiKDApKTsKICByZXR1cm4gcjsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZtYXh1Mih1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgdW5zaWduZWQgaW50IHI7CiAgX19hc21fXygidm1heDIudTMyLnUzMi51MzIgJTAsJTEsJTIsJTM7IgogICAgICAgICAgOiAiPXIiKHIpCiAgICAgICAgICA6ICJyIihfX2EpLCAiciIoX19iKSwgInIiKDApKTsKICByZXR1cm4gcjsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZtYXh1NCh1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgdW5zaWduZWQgaW50IHI7CiAgX19hc21fXygidm1heDQudTMyLnUzMi51MzIgJTAsJTEsJTIsJTM7IgogICAgICAgICAgOiAiPXIiKHIpCiAgICAgICAgICA6ICJyIihfX2EpLCAiciIoX19iKSwgInIiKDApKTsKICByZXR1cm4gcjsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZtaW5zMih1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgdW5zaWduZWQgaW50IHI7CiAgX19hc21fXygidm1pbjIuczMyLnMzMi5zMzIgJTAsJTEsJTIsJTM7IgogICAgICAgICAgOiAiPXIiKHIpCiAgICAgICAgICA6ICJyIihfX2EpLCAiciIoX19iKSwgInIiKDApKTsKICByZXR1cm4gcjsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZtaW5zNCh1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgdW5zaWduZWQgaW50IHI7CiAgX19hc21fXygidm1pbjQuczMyLnMzMi5zMzIgJTAsJTEsJTIsJTM7IgogICAgICAgICAgOiAiPXIiKHIpCiAgICAgICAgICA6ICJyIihfX2EpLCAiciIoX19iKSwgInIiKDApKTsKICByZXR1cm4gcjsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZtaW51Mih1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgdW5zaWduZWQgaW50IHI7CiAgX19hc21fXygidm1pbjIudTMyLnUzMi51MzIgJTAsJTEsJTIsJTM7IgogICAgICAgICAgOiAiPXIiKHIpCiAgICAgICAgICA6ICJyIihfX2EpLCAiciIoX19iKSwgInIiKDApKTsKICByZXR1cm4gcjsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZtaW51NCh1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgdW5zaWduZWQgaW50IHI7CiAgX19hc21fXygidm1pbjQudTMyLnUzMi51MzIgJTAsJTEsJTIsJTM7IgogICAgICAgICAgOiAiPXIiKHIpCiAgICAgICAgICA6ICJyIihfX2EpLCAiciIoX19iKSwgInIiKDApKTsKICByZXR1cm4gcjsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZzYWRzMih1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgdW5zaWduZWQgaW50IHI7CiAgX19hc21fXygidmFic2RpZmYyLnMzMi5zMzIuczMyLmFkZCAlMCwlMSwlMiwlMzsiCiAgICAgICAgICA6ICI9ciIocikKICAgICAgICAgIDogInIiKF9fYSksICJyIihfX2IpLCAiciIoMCkpOwogIHJldHVybiByOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdnNhZHM0KHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICB1bnNpZ25lZCBpbnQgcjsKICBfX2FzbV9fKCJ2YWJzZGlmZjQuczMyLnMzMi5zMzIuYWRkICUwLCUxLCUyLCUzOyIKICAgICAgICAgIDogIj1yIihyKQogICAgICAgICAgOiAiciIoX19hKSwgInIiKF9fYiksICJyIigwKSk7CiAgcmV0dXJuIHI7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX192c2FkdTIodW5zaWduZWQgaW50IF9fYSwgdW5zaWduZWQgaW50IF9fYikgewogIHVuc2lnbmVkIGludCByOwogIF9fYXNtX18oInZhYnNkaWZmMi51MzIudTMyLnUzMi5hZGQgJTAsJTEsJTIsJTM7IgogICAgICAgICAgOiAiPXIiKHIpCiAgICAgICAgICA6ICJyIihfX2EpLCAiciIoX19iKSwgInIiKDApKTsKICByZXR1cm4gcjsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZzYWR1NCh1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgdW5zaWduZWQgaW50IHI7CiAgX19hc21fXygidmFic2RpZmY0LnUzMi51MzIudTMyLmFkZCAlMCwlMSwlMiwlMzsiCiAgICAgICAgICA6ICI9ciIocikKICAgICAgICAgIDogInIiKF9fYSksICJyIihfX2IpLCAiciIoMCkpOwogIHJldHVybiByOwp9CgpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZzdWIyKHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICB1bnNpZ25lZCBpbnQgcjsKICBfX2FzbV9fKCJ2c3ViMi51MzIudTMyLnUzMiAlMCwlMSwlMiwlMzsiCiAgICAgICAgICA6ICI9ciIocikKICAgICAgICAgIDogInIiKF9fYSksICJyIihfX2IpLCAiciIoMCkpOwogIHJldHVybiByOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdm5lZzIodW5zaWduZWQgaW50IF9fYSkgeyByZXR1cm4gX192c3ViMigwLCBfX2EpOyB9CgpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZzdWI0KHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICB1bnNpZ25lZCBpbnQgcjsKICBfX2FzbV9fKCJ2c3ViNC51MzIudTMyLnUzMiAlMCwlMSwlMiwlMzsiCiAgICAgICAgICA6ICI9ciIocikKICAgICAgICAgIDogInIiKF9fYSksICJyIihfX2IpLCAiciIoMCkpOwogIHJldHVybiByOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdm5lZzQodW5zaWduZWQgaW50IF9fYSkgeyByZXR1cm4gX192c3ViNCgwLCBfX2EpOyB9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdnN1YnNzMih1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgdW5zaWduZWQgaW50IHI7CiAgX19hc21fXygidnN1YjIuczMyLnMzMi5zMzIuc2F0ICUwLCUxLCUyLCUzOyIKICAgICAgICAgIDogIj1yIihyKQogICAgICAgICAgOiAiciIoX19hKSwgInIiKF9fYiksICJyIigwKSk7CiAgcmV0dXJuIHI7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX192bmVnc3MyKHVuc2lnbmVkIGludCBfX2EpIHsKICByZXR1cm4gX192c3Vic3MyKDAsIF9fYSk7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX192c3Vic3M0KHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGludCBfX2IpIHsKICB1bnNpZ25lZCBpbnQgcjsKICBfX2FzbV9fKCJ2c3ViNC5zMzIuczMyLnMzMi5zYXQgJTAsJTEsJTIsJTM7IgogICAgICAgICAgOiAiPXIiKHIpCiAgICAgICAgICA6ICJyIihfX2EpLCAiciIoX19iKSwgInIiKDApKTsKICByZXR1cm4gcjsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZuZWdzczQodW5zaWduZWQgaW50IF9fYSkgewogIHJldHVybiBfX3ZzdWJzczQoMCwgX19hKTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX3ZzdWJ1czIodW5zaWduZWQgaW50IF9fYSwgdW5zaWduZWQgaW50IF9fYikgewogIHVuc2lnbmVkIGludCByOwogIF9fYXNtX18oInZzdWIyLnUzMi51MzIudTMyLnNhdCAlMCwlMSwlMiwlMzsiCiAgICAgICAgICA6ICI9ciIocikKICAgICAgICAgIDogInIiKF9fYSksICJyIihfX2IpLCAiciIoMCkpOwogIHJldHVybiByOwp9Cl9fREVWSUNFX18gdW5zaWduZWQgaW50IF9fdnN1YnVzNCh1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBpbnQgX19iKSB7CiAgdW5zaWduZWQgaW50IHI7CiAgX19hc21fXygidnN1YjQudTMyLnUzMi51MzIuc2F0ICUwLCUxLCUyLCUzOyIKICAgICAgICAgIDogIj1yIihyKQogICAgICAgICAgOiAiciIoX19hKSwgInIiKF9fYiksICJyIigwKSk7CiAgcmV0dXJuIHI7Cn0KI2VuZGlmIC8vIENVREFfVkVSU0lPTiA+PSA5MDIwCgovLyBGb3IgT3Blbk1QIHdlIHJlcXVpcmUgdGhlIHVzZXIgdG8gaW5jbHVkZSA8dGltZS5oPiBhcyB3ZSBuZWVkIHRvIGtub3cgd2hhdAovLyBjbG9ja190IGlzIG9uIHRoZSBzeXN0ZW0uCiNpZm5kZWYgX19PUEVOTVBfTlZQVFhfXwpfX0RFVklDRV9fIC8qIGNsb2NrX3Q9ICovIGludCBjbG9jaygpIHsgcmV0dXJuIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX2Nsb2NrKCk7IH0KI2VuZGlmCl9fREVWSUNFX18gbG9uZyBsb25nIGNsb2NrNjQoKSB7IHJldHVybiBfX252dm1fcmVhZF9wdHhfc3JlZ19jbG9jazY0KCk7IH0KCi8vIFRoZXNlIGZ1bmN0aW9ucyBzaG91bGRuJ3QgYmUgZGVjbGFyZWQgd2hlbiBpbmNsdWRpbmcgdGhpcyBoZWFkZXIKLy8gZm9yIG1hdGggZnVuY3Rpb24gcmVzb2x1dGlvbiBwdXJwb3Nlcy4KI2lmbmRlZiBfX09QRU5NUF9OVlBUWF9fCl9fREVWSUNFX18gdm9pZCAqbWVtY3B5KHZvaWQgKl9fYSwgY29uc3Qgdm9pZCAqX19iLCBzaXplX3QgX19jKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9tZW1jcHkoX19hLCBfX2IsIF9fYyk7Cn0KX19ERVZJQ0VfXyB2b2lkICptZW1zZXQodm9pZCAqX19hLCBpbnQgX19iLCBzaXplX3QgX19jKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9tZW1zZXQoX19hLCBfX2IsIF9fYyk7Cn0KI2VuZGlmCgojcHJhZ21hIHBvcF9tYWNybygiX19ERVZJQ0VfXyIpCiNlbmRpZiAvLyBfX0NMQU5HX0NVREFfREVWSUNFX0ZVTkNUSU9OU19IX18KAC8qPT09LS0tLSBfX2NsYW5nX2N1ZGFfcnVudGltZV93cmFwcGVyLmggLSBDVURBIHJ1bnRpbWUgc3VwcG9ydCAtLS0tLS0tLS0tLS0tPT09CiAqCiAqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCiAqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCgovKgogKiBXQVJOSU5HOiBUaGlzIGhlYWRlciBpcyBpbnRlbmRlZCB0byBiZSBkaXJlY3RseSAtaW5jbHVkZSdkIGJ5CiAqIHRoZSBjb21waWxlciBhbmQgaXMgbm90IHN1cHBvc2VkIHRvIGJlIGluY2x1ZGVkIGJ5IHVzZXJzLgogKgogKiBDVURBIGhlYWRlcnMgYXJlIGltcGxlbWVudGVkIGluIGEgd2F5IHRoYXQgY3VycmVudGx5IG1ha2VzIGl0CiAqIGltcG9zc2libGUgZm9yIHVzZXIgY29kZSB0byAjaW5jbHVkZSBkaXJlY3RseSB3aGVuIGNvbXBpbGluZyB3aXRoCiAqIENsYW5nLiBUaGV5IHByZXNlbnQgZGlmZmVyZW50IHZpZXcgb2YgQ1VEQS1zdXBwbGllZCBmdW5jdGlvbnMKICogZGVwZW5kaW5nIG9uIHdoZXJlIGluIE5WQ0MncyBjb21waWxhdGlvbiBwaXBlbGluZSB0aGUgaGVhZGVycyBhcmUKICogaW5jbHVkZWQuIE5laXRoZXIgb2YgdGhlc2UgbW9kZXMgcHJvdmlkZXMgZnVuY3Rpb24gZGVmaW5pdGlvbnMgd2l0aAogKiBjb3JyZWN0IGF0dHJpYnV0ZXMsIHNvIHdlIHVzZSBwcmVwcm9jZXNzb3IgdG8gZm9yY2UgdGhlIGhlYWRlcnMKICogaW50byBhIGZvcm0gdGhhdCBDbGFuZyBjYW4gdXNlLgogKgogKiBTaW1pbGFybHkgdG8gTlZDQyB3aGljaCAtaW5jbHVkZSdzIGN1ZGFfcnVudGltZS5oLCBDbGFuZyAtaW5jbHVkZSdzCiAqIHRoaXMgZmlsZSBkdXJpbmcgZXZlcnkgQ1VEQSBjb21waWxhdGlvbi4KICovCgojaWZuZGVmIF9fQ0xBTkdfQ1VEQV9SVU5USU1FX1dSQVBQRVJfSF9fCiNkZWZpbmUgX19DTEFOR19DVURBX1JVTlRJTUVfV1JBUFBFUl9IX18KCiNpZiBkZWZpbmVkKF9fQ1VEQV9fKSAmJiBkZWZpbmVkKF9fY2xhbmdfXykKCi8vIEluY2x1ZGUgc29tZSBmb3J3YXJkIGRlY2xhcmVzIHRoYXQgbXVzdCBjb21lIGJlZm9yZSBjbWF0aC4KI2luY2x1ZGUgPF9fY2xhbmdfY3VkYV9tYXRoX2ZvcndhcmRfZGVjbGFyZXMuaD4KCi8vIERlZmluZSBfX0NVREFDQ19fIGVhcmx5IGFzIGxpYnN0ZGMrKyBzdGFuZGFyZCBoZWFkZXJzIHdpdGggR05VIGV4dGVuc2lvbnMKLy8gZW5hYmxlZCBkZXBlbmQgb24gaXQgdG8gYXZvaWQgdXNpbmcgX19mbG9hdDEyOCwgd2hpY2ggaXMgdW5zdXBwb3J0ZWQgaW4KLy8gQ1VEQS4KI2RlZmluZSBfX0NVREFDQ19fCgovLyBJbmNsdWRlIHNvbWUgc3RhbmRhcmQgaGVhZGVycyB0byBhdm9pZCBDVURBIGhlYWRlcnMgaW5jbHVkaW5nIHRoZW0KLy8gd2hpbGUgc29tZSByZXF1aXJlZCBtYWNyb3MgKGxpa2UgX19USFJPVykgYXJlIGluIGEgd2VpcmQgc3RhdGUuCiNpbmNsdWRlIDxjbWF0aD4KI2luY2x1ZGUgPGNzdGRsaWI+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgojdW5kZWYgX19DVURBQ0NfXwoKLy8gUHJlc2VydmUgY29tbW9uIG1hY3JvcyB0aGF0IHdpbGwgYmUgY2hhbmdlZCBiZWxvdyBieSB1cyBvciBieSBDVURBCi8vIGhlYWRlcnMuCiNwcmFnbWEgcHVzaF9tYWNybygiX19USFJPVyIpCiNwcmFnbWEgcHVzaF9tYWNybygiX19DVURBX0FSQ0hfXyIpCgovLyBXQVJOSU5HOiBQcmVwcm9jZXNzb3IgaGFja3MgYmVsb3cgYXJlIGJhc2VkIG9uIHNwZWNpZmljIGRldGFpbHMgb2YKLy8gQ1VEQS03LnggaGVhZGVycyBhbmQgYXJlIG5vdCBleHBlY3RlZCB0byB3b3JrIHdpdGggYW55IG90aGVyCi8vIHZlcnNpb24gb2YgQ1VEQSBoZWFkZXJzLgojaW5jbHVkZSAiY3VkYS5oIgojaWYgIWRlZmluZWQoQ1VEQV9WRVJTSU9OKQojZXJyb3IgImN1ZGEuaCBkaWQgbm90IGRlZmluZSBDVURBX1ZFUlNJT04iCiNlbGlmIENVREFfVkVSU0lPTiA8IDcwMDAKI2Vycm9yICJVbnN1cHBvcnRlZCBDVURBIHZlcnNpb24hIgojZW5kaWYKCiNwcmFnbWEgcHVzaF9tYWNybygiX19DVURBX0lOQ0xVREVfQ09NUElMRVJfSU5URVJOQUxfSEVBREVSU19fIikKI2lmIENVREFfVkVSU0lPTiA+PSAxMDAwMAojZGVmaW5lIF9fQ1VEQV9JTkNMVURFX0NPTVBJTEVSX0lOVEVSTkFMX0hFQURFUlNfXwojZW5kaWYKCi8vIE1ha2UgbGFyZ2VzdCBzdWJzZXQgb2YgZGV2aWNlIGZ1bmN0aW9ucyBhdmFpbGFibGUgZHVyaW5nIGhvc3QKLy8gY29tcGlsYXRpb24uCiNpZm5kZWYgX19DVURBX0FSQ0hfXwojZGVmaW5lIF9fQ1VEQV9BUkNIX18gOTk5OQojZW5kaWYKCiNpbmNsdWRlICJfX2NsYW5nX2N1ZGFfYnVpbHRpbl92YXJzLmgiCgovLyBObyBuZWVkIGZvciBkZXZpY2VfbGF1bmNoX3BhcmFtZXRlcnMuaCBhcyBfX2NsYW5nX2N1ZGFfYnVpbHRpbl92YXJzLmggYWJvdmUKLy8gaGFzIHRha2VuIGNhcmUgb2YgYnVpbHRpbiB2YXJpYWJsZXMgZGVjbGFyZWQgaW4gdGhlIGZpbGUuCiNkZWZpbmUgX19ERVZJQ0VfTEFVTkNIX1BBUkFNRVRFUlNfSF9fCgovLyB7bWF0aCxkZXZpY2V9X2Z1bmN0aW9ucy5oIG9ubHkgaGF2ZSBkZWNsYXJhdGlvbnMgb2YgdGhlCi8vIGZ1bmN0aW9ucy4gV2UgZG9uJ3QgbmVlZCB0aGVtIGFzIHdlJ3JlIGdvaW5nIHRvIHB1bGwgaW4gdGhlaXIKLy8gZGVmaW5pdGlvbnMgZnJvbSAuaHBwIGZpbGVzLgojZGVmaW5lIF9fREVWSUNFX0ZVTkNUSU9OU19IX18KI2RlZmluZSBfX01BVEhfRlVOQ1RJT05TX0hfXwojZGVmaW5lIF9fQ09NTU9OX0ZVTkNUSU9OU19IX18KLy8gZGV2aWNlX2Z1bmN0aW9uc19kZWNscyBpcyByZXBsYWNlZCBieSBfX2NsYW5nX2N1ZGFfZGV2aWNlX2Z1bmN0aW9ucy5oCi8vIGluY2x1ZGVkIGJlbG93LgojZGVmaW5lIF9fREVWSUNFX0ZVTkNUSU9OU19ERUNMU19IX18KCiN1bmRlZiBfX0NVREFDQ19fCiNpZiBDVURBX1ZFUlNJT04gPCA5MDAwCiNkZWZpbmUgX19DVURBQkVfXwojZWxzZQojZGVmaW5lIF9fQ1VEQUNDX18KI2RlZmluZSBfX0NVREFfTElCREVWSUNFX18KI2VuZGlmCi8vIERpc2FibGVzIGRlZmluaXRpb25zIG9mIGRldmljZS1zaWRlIHJ1bnRpbWUgc3VwcG9ydCBzdHVicyBpbgovLyBjdWRhX2RldmljZV9ydW50aW1lX2FwaS5oCiNpbmNsdWRlICJob3N0X2RlZmluZXMuaCIKI3VuZGVmIF9fQ1VEQUNDX18KI2luY2x1ZGUgImRyaXZlcl90eXBlcy5oIgojaW5jbHVkZSAiaG9zdF9jb25maWcuaCIKCi8vIFRlbXBvcmFyaWx5IHJlcGxhY2UgIm52X3dlYWsiIHdpdGggd2Vhaywgc28gX19hdHRyaWJ1dGVfXygobnZfd2VhaykpIGluCi8vIGN1ZGFfZGV2aWNlX3J1bnRpbWVfYXBpLmggZW5kcyB1cCBiZWluZyBfX2F0dHJpYnV0ZV9fKCh3ZWFrKSkgd2hpY2ggaXMgdGhlCi8vIGZ1bmN0aW9uYWwgZXF1aXZhbGVudCBvZiB3aGF0IHdlIG5lZWQuCiNwcmFnbWEgcHVzaF9tYWNybygibnZfd2VhayIpCiNkZWZpbmUgbnZfd2VhayB3ZWFrCiN1bmRlZiBfX0NVREFCRV9fCiN1bmRlZiBfX0NVREFfTElCREVWSUNFX18KI2RlZmluZSBfX0NVREFDQ19fCiNpbmNsdWRlICJjdWRhX3J1bnRpbWUuaCIKCiNwcmFnbWEgcG9wX21hY3JvKCJudl93ZWFrIikKI3VuZGVmIF9fQ1VEQUNDX18KI2RlZmluZSBfX0NVREFCRV9fCgovLyBDVURBIGhlYWRlcnMgdXNlIF9fbnZ2bV9tZW1jcHkgYW5kIF9fbnZ2bV9tZW1zZXQgd2hpY2ggQ2xhbmcgZG9lcwovLyBub3QgaGF2ZSBhdCB0aGUgbW9tZW50LiBFbXVsYXRlIHRoZW0gd2l0aCBhIGJ1aWx0aW4gbWVtY3B5L21lbXNldC4KI2RlZmluZSBfX252dm1fbWVtY3B5KHMsIGQsIG4sIGEpIF9fYnVpbHRpbl9tZW1jcHkocywgZCwgbikKI2RlZmluZSBfX252dm1fbWVtc2V0KGQsIGMsIG4sIGEpIF9fYnVpbHRpbl9tZW1zZXQoZCwgYywgbikKCiNpZiBDVURBX1ZFUlNJT04gPCA5MDAwCiNpbmNsdWRlICJjcnQvZGV2aWNlX3J1bnRpbWUuaCIKI2VuZGlmCiNpbmNsdWRlICJjcnQvaG9zdF9ydW50aW1lLmgiCi8vIGRldmljZV9ydW50aW1lLmggZGVmaW5lcyBfX2N4YV8qIG1hY3JvcyB0aGF0IHdpbGwgY29uZmxpY3Qgd2l0aAovLyBjeHhhYmkuaC4KLy8gRklYTUU6IHJlZGVmaW5lIHRoZXNlIGFzIF9fZGV2aWNlX18gZnVuY3Rpb25zLgojdW5kZWYgX19jeGFfdmVjX2N0b3IKI3VuZGVmIF9fY3hhX3ZlY19jY3RvcgojdW5kZWYgX19jeGFfdmVjX2R0b3IKI3VuZGVmIF9fY3hhX3ZlY19uZXcKI3VuZGVmIF9fY3hhX3ZlY19uZXcyCiN1bmRlZiBfX2N4YV92ZWNfbmV3MwojdW5kZWYgX19jeGFfdmVjX2RlbGV0ZTIKI3VuZGVmIF9fY3hhX3ZlY19kZWxldGUKI3VuZGVmIF9fY3hhX3ZlY19kZWxldGUzCiN1bmRlZiBfX2N4YV9wdXJlX3ZpcnR1YWwKCi8vIG1hdGhfZnVuY3Rpb25zLmhwcCBleHBlY3RzIHRoaXMgaG9zdCBmdW5jdGlvbiBiZSBkZWZpbmVkIG9uIE1hY09TLCBidXQgaXQKLy8gZW5kcyB1cCBub3QgYmVpbmcgdGhlcmUgYmVjYXVzZSBvZiB0aGUgZ2FtZXMgd2UgcGxheSBoZXJlLiAgSnVzdCBkZWZpbmUgaXQKLy8gb3Vyc2VsdmVzOyBpdCdzIHNpbXBsZSBlbm91Z2guCiNpZmRlZiBfX0FQUExFX18KaW5saW5lIF9faG9zdF9fIGRvdWJsZSBfX3NpZ25iaXRkKGRvdWJsZSB4KSB7CiAgcmV0dXJuIHN0ZDo6c2lnbmJpdCh4KTsKfQojZW5kaWYKCi8vIENVREEgOS4xIG5vIGxvbmdlciBwcm92aWRlcyBkZWNsYXJhdGlvbnMgZm9yIGxpYmRldmljZSBmdW5jdGlvbnMsIHNvIHdlIG5lZWQKLy8gdG8gcHJvdmlkZSBvdXIgb3duLgojaW5jbHVkZSA8X19jbGFuZ19jdWRhX2xpYmRldmljZV9kZWNsYXJlcy5oPgoKLy8gV3JhcHBlcnMgZm9yIG1hbnkgZGV2aWNlLXNpZGUgc3RhbmRhcmQgbGlicmFyeSBmdW5jdGlvbnMsIGluY2wuIG1hdGgKLy8gZnVuY3Rpb25zLCBiZWNhbWUgY29tcGlsZXIgYnVpbHRpbnMgaW4gQ1VEQS05IGFuZCBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZQovLyBDVURBIGhlYWRlcnMuIENsYW5nIG5vdyBwcm92aWRlcyBpdHMgb3duIGltcGxlbWVudGF0aW9uIG9mIHRoZSB3cmFwcGVycy4KI2lmIENVREFfVkVSU0lPTiA+PSA5MDAwCiNpbmNsdWRlIDxfX2NsYW5nX2N1ZGFfZGV2aWNlX2Z1bmN0aW9ucy5oPgojaW5jbHVkZSA8X19jbGFuZ19jdWRhX21hdGguaD4KI2VuZGlmCgovLyBfX1RIUk9XIGlzIHJlZGVmaW5lZCB0byBiZSBlbXB0eSBieSBkZXZpY2VfZnVuY3Rpb25zX2RlY2xzLmggaW4gQ1VEQS4gQ2xhbmcncwovLyBjb3VudGVycGFydCBkb2VzIG5vdCBkbyBpdCwgc28gd2UgbmVlZCB0byBtYWtlIGl0IGVtcHR5IGhlcmUgdG8ga2VlcAovLyBmb2xsb3dpbmcgQ1VEQSBpbmNsdWRlcyBoYXBweS4KI3VuZGVmIF9fVEhST1cKI2RlZmluZSBfX1RIUk9XCgovLyBDVURBIDguMC40MSByZWxpZXMgb24gX19VU0VfRkFTVF9NQVRIX18gYW5kIF9fQ1VEQV9QUkVDX0RJVidzIHZhbHVlcy4KLy8gUHJldmlvdXMgdmVyc2lvbnMgdXNlZCB0byBjaGVjayB3aGV0aGVyIHRoZXkgYXJlIGRlZmluZWQgb3Igbm90LgovLyBDVV9ERVZJQ0VfSU5WQUxJRCBtYWNybyBpcyBvbmx5IGRlZmluZWQgaW4gOC4wLjQxLCBzbyB3ZSB1c2UgaXQKLy8gaGVyZSB0byBkZXRlY3QgdGhlIHN3aXRjaC4KCiNpZiBkZWZpbmVkKENVX0RFVklDRV9JTlZBTElEKQojaWYgIWRlZmluZWQoX19VU0VfRkFTVF9NQVRIX18pCiNkZWZpbmUgX19VU0VfRkFTVF9NQVRIX18gMAojZW5kaWYKCiNpZiAhZGVmaW5lZChfX0NVREFfUFJFQ19ESVYpCiNkZWZpbmUgX19DVURBX1BSRUNfRElWIDAKI2VuZGlmCiNlbmRpZgoKLy8gVGVtcG9yYXJpbHkgcG9pc29uIF9faG9zdF9fIG1hY3JvIHRvIGVuc3VyZSBpdCdzIG5vdCB1c2VkIGJ5IGFueSBvZgovLyB0aGUgaGVhZGVycyB3ZSdyZSBhYm91dCB0byBpbmNsdWRlLgojcHJhZ21hIHB1c2hfbWFjcm8oIl9faG9zdF9fIikKI2RlZmluZSBfX2hvc3RfXyBVTkVYUEVDVEVEX0hPU1RfQVRUUklCVVRFCgovLyBkZXZpY2VfZnVuY3Rpb25zLmhwcCBhbmQgbWF0aF9mdW5jdGlvbnMqLmhwcCB1c2UgJ3N0YXRpYwovLyBfX2ZvcmNlaW5saW5lX18nICh3aXRoIG5vIF9fZGV2aWNlX18pIGZvciBkZWZpbml0aW9ucyBvZiBkZXZpY2UKLy8gZnVuY3Rpb25zLiBUZW1wb3JhcmlseSByZWRlZmluZSBfX2ZvcmNlaW5saW5lX18gdG8gaW5jbHVkZQovLyBfX2RldmljZV9fLgojcHJhZ21hIHB1c2hfbWFjcm8oIl9fZm9yY2VpbmxpbmVfXyIpCiNkZWZpbmUgX19mb3JjZWlubGluZV9fIF9fZGV2aWNlX18gX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkKI2lmIENVREFfVkVSU0lPTiA8IDkwMDAKI2luY2x1ZGUgImRldmljZV9mdW5jdGlvbnMuaHBwIgojZW5kaWYKCi8vIG1hdGhfZnVuY3Rpb24uaHBwIHVzZXMgdGhlIF9fVVNFX0ZBU1RfTUFUSF9fIG1hY3JvIHRvIGRldGVybWluZSB3aGV0aGVyIHdlCi8vIGdldCB0aGUgc2xvdy1idXQtYWNjdXJhdGUgb3IgZmFzdC1idXQtaW5hY2N1cmF0ZSB2ZXJzaW9ucyBvZiBmdW5jdGlvbnMgbGlrZQovLyBzaW4gYW5kIGV4cC4gIFRoaXMgaXMgY29udHJvbGxlZCBpbiBjbGFuZyBieSAtZmN1ZGEtYXBwcm94LXRyYW5zY2VuZGVudGFscy4KLy8KLy8gZGV2aWNlX2Z1bmN0aW9ucy5ocHAgdXNlcyBfX1VTRV9GQVNUX01BVEhfXyBmb3IgYSBkaWZmZXJlbnQgcHVycG9zZSAoZmFzdCB2cy4KLy8gc2xvdyBkaXZpZGVzKSwgc28gd2UgbmVlZCB0byBzY29wZSBvdXIgZGVmaW5lIGNhcmVmdWxseSBoZXJlLgojcHJhZ21hIHB1c2hfbWFjcm8oIl9fVVNFX0ZBU1RfTUFUSF9fIikKI2lmIGRlZmluZWQoX19DTEFOR19DVURBX0FQUFJPWF9UUkFOU0NFTkRFTlRBTFNfXykKI2RlZmluZSBfX1VTRV9GQVNUX01BVEhfXyAxCiNlbmRpZgoKI2lmIENVREFfVkVSU0lPTiA+PSA5MDAwCiNpbmNsdWRlICJjcnQvbWF0aF9mdW5jdGlvbnMuaHBwIgojZWxzZQojaW5jbHVkZSAibWF0aF9mdW5jdGlvbnMuaHBwIgojZW5kaWYKCiNwcmFnbWEgcG9wX21hY3JvKCJfX1VTRV9GQVNUX01BVEhfXyIpCgojaWYgQ1VEQV9WRVJTSU9OIDwgOTAwMAojaW5jbHVkZSAibWF0aF9mdW5jdGlvbnNfZGJsX3B0eDMuaHBwIgojZW5kaWYKI3ByYWdtYSBwb3BfbWFjcm8oIl9fZm9yY2VpbmxpbmVfXyIpCgovLyBQdWxsIGluIGhvc3Qtb25seSBmdW5jdGlvbnMgdGhhdCBhcmUgb25seSBhdmFpbGFibGUgd2hlbiBuZWl0aGVyCi8vIF9fQ1VEQUNDX18gbm9yIF9fQ1VEQUJFX18gYXJlIGRlZmluZWQuCiN1bmRlZiBfX01BVEhfRlVOQ1RJT05TX0hQUF9fCiN1bmRlZiBfX0NVREFCRV9fCiNpZiBDVURBX1ZFUlNJT04gPCA5MDAwCiNpbmNsdWRlICJtYXRoX2Z1bmN0aW9ucy5ocHAiCiNlbmRpZgovLyBBbGFzLCBhZGRpdGlvbmFsIG92ZXJsb2FkcyBmb3IgdGhlc2UgZnVuY3Rpb25zIGFyZSBoYXJkIHRvIGdldCB0by4KLy8gQ29uc2lkZXJpbmcgdGhhdCB3ZSBvbmx5IG5lZWQgdGhlc2Ugb3ZlcmxvYWRzIGZvciBhIGZldyBmdW5jdGlvbnMsCi8vIHdlIGNhbiBwcm92aWRlIHRoZW0gaGVyZS4Kc3RhdGljIGlubGluZSBmbG9hdCByc3FydChmbG9hdCBfX2EpIHsgcmV0dXJuIHJzcXJ0ZihfX2EpOyB9CnN0YXRpYyBpbmxpbmUgZmxvYXQgcmNicnQoZmxvYXQgX19hKSB7IHJldHVybiByY2JydGYoX19hKTsgfQpzdGF0aWMgaW5saW5lIGZsb2F0IHNpbnBpKGZsb2F0IF9fYSkgeyByZXR1cm4gc2lucGlmKF9fYSk7IH0Kc3RhdGljIGlubGluZSBmbG9hdCBjb3NwaShmbG9hdCBfX2EpIHsgcmV0dXJuIGNvc3BpZihfX2EpOyB9CnN0YXRpYyBpbmxpbmUgdm9pZCBzaW5jb3NwaShmbG9hdCBfX2EsIGZsb2F0ICpfX2IsIGZsb2F0ICpfX2MpIHsKICByZXR1cm4gc2luY29zcGlmKF9fYSwgX19iLCBfX2MpOwp9CnN0YXRpYyBpbmxpbmUgZmxvYXQgZXJmY2ludihmbG9hdCBfX2EpIHsgcmV0dXJuIGVyZmNpbnZmKF9fYSk7IH0Kc3RhdGljIGlubGluZSBmbG9hdCBub3JtY2RmaW52KGZsb2F0IF9fYSkgeyByZXR1cm4gbm9ybWNkZmludmYoX19hKTsgfQpzdGF0aWMgaW5saW5lIGZsb2F0IG5vcm1jZGYoZmxvYXQgX19hKSB7IHJldHVybiBub3JtY2RmZihfX2EpOyB9CnN0YXRpYyBpbmxpbmUgZmxvYXQgZXJmY3goZmxvYXQgX19hKSB7IHJldHVybiBlcmZjeGYoX19hKTsgfQoKI2lmIENVREFfVkVSU0lPTiA8IDkwMDAKLy8gRm9yIHNvbWUgcmVhc29uIHNpbmdsZS1hcmd1bWVudCB2YXJpYW50IGlzIG5vdCBhbHdheXMgZGVjbGFyZWQgYnkKLy8gQ1VEQSBoZWFkZXJzLiBBbGFzLCBkZXZpY2VfZnVuY3Rpb25zLmhwcCBpbmNsdWRlZCBiZWxvdyBuZWVkcyBpdC4Kc3RhdGljIGlubGluZSBfX2RldmljZV9fIHZvaWQgX19icmtwdChpbnQgX19jKSB7IF9fYnJrcHQoKTsgfQojZW5kaWYKCi8vIE5vdyBpbmNsdWRlICouaHBwIHdpdGggZGVmaW5pdGlvbnMgb2YgdmFyaW91cyBHUFUgZnVuY3Rpb25zLiAgQWxhcywKLy8gYSBsb3Qgb2YgdGhpbnMgZ2V0IGRlY2xhcmVkL2RlZmluZWQgd2l0aCBfX2hvc3RfXyBhdHRyaWJ1dGUgd2hpY2gKLy8gd2UgZG9uJ3Qgd2FudCBhbmQgd2UgaGF2ZSB0byBkZWZpbmUgaXQgb3V0LiBXZSBhbHNvIGhhdmUgdG8gaW5jbHVkZQovLyB7ZGV2aWNlLG1hdGh9X2Z1bmN0aW9ucy5ocHAgYWdhaW4gaW4gb3JkZXIgdG8gZXh0cmFjdCB0aGUgb3RoZXIKLy8gYnJhbmNoIG9mICNpZi9lbHNlIGluc2lkZS4KI2RlZmluZSBfX2hvc3RfXwojdW5kZWYgX19DVURBQkVfXwojZGVmaW5lIF9fQ1VEQUNDX18KI2lmIENVREFfVkVSU0lPTiA+PSA5MDAwCi8vIFNvbWUgYXRvbWljIGZ1bmN0aW9ucyBiZWNhbWUgY29tcGlsZXIgYnVpbHRpbnMgaW4gQ1VEQS05ICwgc28gd2UgbmVlZCB0aGVpcgovLyBkZWNsYXJhdGlvbnMuCiNpbmNsdWRlICJkZXZpY2VfYXRvbWljX2Z1bmN0aW9ucy5oIgojZW5kaWYKI3VuZGVmIF9fREVWSUNFX0ZVTkNUSU9OU19IUFBfXwojaW5jbHVkZSAiZGV2aWNlX2F0b21pY19mdW5jdGlvbnMuaHBwIgojaWYgQ1VEQV9WRVJTSU9OID49IDkwMDAKI2luY2x1ZGUgImNydC9kZXZpY2VfZnVuY3Rpb25zLmhwcCIKI2luY2x1ZGUgImNydC9kZXZpY2VfZG91YmxlX2Z1bmN0aW9ucy5ocHAiCiNlbHNlCiNpbmNsdWRlICJkZXZpY2VfZnVuY3Rpb25zLmhwcCIKI2RlZmluZSBfX0NVREFCRV9fCiNpbmNsdWRlICJkZXZpY2VfZG91YmxlX2Z1bmN0aW9ucy5oIgojdW5kZWYgX19DVURBQkVfXwojZW5kaWYKI2luY2x1ZGUgInNtXzIwX2F0b21pY19mdW5jdGlvbnMuaHBwIgovLyBQcmVkaWNhdGUgZnVuY3Rpb25zIHVzZWQgaW4gYF9fYnVpbHRpbl9hc3N1bWVgIG5lZWQgdG8gaGF2ZSBubyBzaWRlIGVmZmVjdC4KLy8gSG93ZXZlciwgc21fMjBfaW50cmluc2ljcy5ocHAgZG9lc24ndCBkZWZpbmUgdGhlbSB3aXRoIG5laXRoZXIgcHVyZSBub3IKLy8gY29uc3QgYXR0cmlidXRlLiBSZW5hbWUgZGVmaW5pdGlvbnMgZnJvbSBzbV8yMF9pbnRyaW5zaWNzLmhwcCBhbmQgcmUtZGVmaW5lCi8vIHRoZW0gYXMgcHVyZSBvbmVzLgojcHJhZ21hIHB1c2hfbWFjcm8oIl9faXNHbG9iYWwiKQojcHJhZ21hIHB1c2hfbWFjcm8oIl9faXNTaGFyZWQiKQojcHJhZ21hIHB1c2hfbWFjcm8oIl9faXNDb25zdGFudCIpCiNwcmFnbWEgcHVzaF9tYWNybygiX19pc0xvY2FsIikKI2RlZmluZSBfX2lzR2xvYmFsIF9faWdub3JlZF9jdWRhX19faXNHbG9iYWwKI2RlZmluZSBfX2lzU2hhcmVkIF9faWdub3JlZF9jdWRhX19faXNTaGFyZWQKI2RlZmluZSBfX2lzQ29uc3RhbnQgX19pZ25vcmVkX2N1ZGFfX19pc0NvbnN0YW50CiNkZWZpbmUgX19pc0xvY2FsIF9faWdub3JlZF9jdWRhX19faXNMb2NhbAojaW5jbHVkZSAic21fMjBfaW50cmluc2ljcy5ocHAiCiNwcmFnbWEgcG9wX21hY3JvKCJfX2lzR2xvYmFsIikKI3ByYWdtYSBwb3BfbWFjcm8oIl9faXNTaGFyZWQiKQojcHJhZ21hIHBvcF9tYWNybygiX19pc0NvbnN0YW50IikKI3ByYWdtYSBwb3BfbWFjcm8oIl9faXNMb2NhbCIpCiNwcmFnbWEgcHVzaF9tYWNybygiX19ERVZJQ0VfXyIpCiNkZWZpbmUgX19ERVZJQ0VfXyBzdGF0aWMgX19kZXZpY2VfXyBfX2ZvcmNlaW5saW5lX18gX19hdHRyaWJ1dGVfXygoY29uc3QpKQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX2lzR2xvYmFsKGNvbnN0IHZvaWQgKnApIHsKICByZXR1cm4gX19udnZtX2lzc3BhY2VwX2dsb2JhbChwKTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX2lzU2hhcmVkKGNvbnN0IHZvaWQgKnApIHsKICByZXR1cm4gX19udnZtX2lzc3BhY2VwX3NoYXJlZChwKTsKfQpfX0RFVklDRV9fIHVuc2lnbmVkIGludCBfX2lzQ29uc3RhbnQoY29uc3Qgdm9pZCAqcCkgewogIHJldHVybiBfX252dm1faXNzcGFjZXBfY29uc3QocCk7Cn0KX19ERVZJQ0VfXyB1bnNpZ25lZCBpbnQgX19pc0xvY2FsKGNvbnN0IHZvaWQgKnApIHsKICByZXR1cm4gX19udnZtX2lzc3BhY2VwX2xvY2FsKHApOwp9CiNwcmFnbWEgcG9wX21hY3JvKCJfX0RFVklDRV9fIikKI2luY2x1ZGUgInNtXzMyX2F0b21pY19mdW5jdGlvbnMuaHBwIgoKLy8gRG9uJ3QgaW5jbHVkZSBzbV8zMF9pbnRyaW5zaWNzLmggYW5kIHNtXzMyX2ludHJpbnNpY3MuaC4gIFRoZXNlIGRlZmluZSB0aGUKLy8gX19zaGZsIGFuZCBfX2xkZyBpbnRyaW5zaWNzIHVzaW5nIGlubGluZSAodm9sYXRpbGUpIGFzbSwgYnV0IHdlIHdhbnQgdG8KLy8gZGVmaW5lIHRoZW0gdXNpbmcgYnVpbHRpbnMgc28gdGhhdCB0aGUgb3B0aW1pemVyIGNhbiByZWFzb24gYWJvdXQgYW5kIGFjcm9zcwovLyB0aGVzZSBpbnN0cnVjdGlvbnMuICBJbiBwYXJ0aWN1bGFyLCB1c2luZyBpbnRyaW5zaWNzIGZvciBsZGcgZ2V0cyB1cyB0aGUKLy8gW2FkZHIraW1tXSBhZGRyZXNzaW5nIG1vZGUsIHdoaWNoLCBhbHRob3VnaCBpdCBkb2Vzbid0IGFjdHVhbGx5IGV4aXN0IGluIHRoZQovLyBoYXJkd2FyZSwgc2VlbXMgdG8gZ2VuZXJhdGUgZmFzdGVyIG1hY2hpbmUgY29kZSBiZWNhdXNlIHB0eGFzIGNhbiBtb3JlIGVhc2lseQovLyByZWFzb24gYWJvdXQgb3VyIGNvZGUuCgojaWYgQ1VEQV9WRVJTSU9OID49IDgwMDAKI3ByYWdtYSBwdXNoX21hY3JvKCJfX0NVREFfQVJDSF9fIikKI3VuZGVmIF9fQ1VEQV9BUkNIX18KI2luY2x1ZGUgInNtXzYwX2F0b21pY19mdW5jdGlvbnMuaHBwIgojaW5jbHVkZSAic21fNjFfaW50cmluc2ljcy5ocHAiCiNwcmFnbWEgcG9wX21hY3JvKCJfX0NVREFfQVJDSF9fIikKI2VuZGlmCgojdW5kZWYgX19NQVRIX0ZVTkNUSU9OU19IUFBfXwoKLy8gbWF0aF9mdW5jdGlvbnMuaHBwIGRlZmluZXMgOjpzaWduYml0IGFzIGEgX19ob3N0X18gX19kZXZpY2VfXyBmdW5jdGlvbi4gIFRoaXMKLy8gY29uZmxpY3RzIHdpdGggbGlic3RkYysrJ3MgY29uc3RleHByIDo6c2lnbmJpdCwgc28gd2UgaGF2ZSB0byByZW5hbWUKLy8gbWF0aF9mdW5jdGlvbi5ocHAncyA6OnNpZ25iaXQuICBJdCdzIGd1YXJkZWQgYnkgI3VuZGVmIHNpZ25iaXQsIGJ1dCB0aGF0J3MKLy8gY29uZGl0aW9uYWwgb24gX19HTlVDX18uICA6KQojcHJhZ21hIHB1c2hfbWFjcm8oInNpZ25iaXQiKQojcHJhZ21hIHB1c2hfbWFjcm8oIl9fR05VQ19fIikKI3VuZGVmIF9fR05VQ19fCiNkZWZpbmUgc2lnbmJpdCBfX2lnbm9yZWRfY3VkYV9zaWduYml0CgovLyBDVURBLTkgb21pdHMgZGV2aWNlLXNpZGUgZGVmaW5pdGlvbnMgb2Ygc29tZSBtYXRoIGZ1bmN0aW9ucyBpZiBpdCBzZWVzCi8vIGluY2x1ZGUgZ3VhcmQgZnJvbSBtYXRoLmggd3JhcHBlciBmcm9tIGxpYnN0ZGMrKy4gV2UgaGF2ZSB0byB1bmRvIHRoZSBoZWFkZXIKLy8gZ3VhcmQgdGVtcG9yYXJpbHkgdG8gZ2V0IHRoZSBkZWZpbml0aW9ucyB3ZSBuZWVkLgojcHJhZ21hIHB1c2hfbWFjcm8oIl9HTElCQ1hYX01BVEhfSCIpCiNwcmFnbWEgcHVzaF9tYWNybygiX0xJQkNQUF9WRVJTSU9OIikKI2lmIENVREFfVkVSU0lPTiA+PSA5MDAwCiN1bmRlZiBfR0xJQkNYWF9NQVRIX0gKLy8gV2UgYWxzbyBuZWVkIHRvIHVuZG8gYW5vdGhlciBndWFyZCB0aGF0IGNoZWNrcyBmb3IgbGliYysrIDMuOCsKI2lmZGVmIF9MSUJDUFBfVkVSU0lPTgojZGVmaW5lIF9MSUJDUFBfVkVSU0lPTiAzNzAwCiNlbmRpZgojZW5kaWYKCiNpZiBDVURBX1ZFUlNJT04gPj0gOTAwMAojaW5jbHVkZSAiY3J0L21hdGhfZnVuY3Rpb25zLmhwcCIKI2Vsc2UKI2luY2x1ZGUgIm1hdGhfZnVuY3Rpb25zLmhwcCIKI2VuZGlmCiNwcmFnbWEgcG9wX21hY3JvKCJfR0xJQkNYWF9NQVRIX0giKQojcHJhZ21hIHBvcF9tYWNybygiX0xJQkNQUF9WRVJTSU9OIikKI3ByYWdtYSBwb3BfbWFjcm8oIl9fR05VQ19fIikKI3ByYWdtYSBwb3BfbWFjcm8oInNpZ25iaXQiKQoKI3ByYWdtYSBwb3BfbWFjcm8oIl9faG9zdF9fIikKCi8vIF9fY2xhbmdfY3VkYV90ZXh0dXJlX2ludHJpbnNpY3MuaCBtdXN0IGJlIGluY2x1ZGVkIGZpcnN0IGluIG9yZGVyIHRvIHByb3ZpZGUKLy8gaW1wbGVtZW50YXRpb24gZm9yIF9fbnZfdGV4X3N1cmZfaGFuZGxlciB0aGF0IENVREEncyBoZWFkZXJzIGRlcGVuZCBvbi4KLy8gVGhlIGltcGxlbWVudGF0aW9uIHJlcXVpcmVzIGMrKzExIGFuZCBvbmx5IHdvcmtzIHdpdGggQ1VEQS05IG9yIG5ld2VyLgojaWYgX19jcGx1c3BsdXMgPj0gMjAxMTAzTCAmJiBDVURBX1ZFUlNJT04gPj0gOTAwMAovLyBjbGFuZy1mb3JtYXQgb2ZmCiNpbmNsdWRlIDxfX2NsYW5nX2N1ZGFfdGV4dHVyZV9pbnRyaW5zaWNzLmg+Ci8vIGNsYW5nLWZvcm1hdCBvbgojZWxzZQojaWYgQ1VEQV9WRVJTSU9OID49IDkwMDAKLy8gUHJvdmlkZSBhIGhpbnQgdGhhdCB0ZXh0dXJlIHN1cHBvcnQgbmVlZHMgQysrMTEuCnRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgX19udl90ZXhfbmVlZHNfY3h4MTEgewogIGNvbnN0IHN0YXRpYyBib29sIHZhbHVlID0gZmFsc2U7Cn07CnRlbXBsYXRlIDxjbGFzcyBUPgpfX2hvc3RfXyBfX2RldmljZV9fIHZvaWQgX19udl90ZXhfc3VyZl9oYW5kbGVyKGNvbnN0IGNoYXIgKm5hbWUsIFQgKnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdWRhVGV4dHVyZU9iamVjdF90IG9iaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB4KSB7CiAgX1N0YXRpY19hc3NlcnQoX19udl90ZXhfbmVlZHNfY3h4MTE8VD46OnZhbHVlLAogICAgICAgICAgICAgICAgICJUZXh0dXJlIHN1cHBvcnQgcmVxdWlyZXMgQysrMTEiKTsKfQojZWxzZQovLyBUZXh0dXJlcyBpbiBDVURBLTggYW5kIG9sZGVyIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IGNsYW5nLlRoZXJlJ3Mgbm8KLy8gY29udmVuaWVudCB3YXkgdG8gaW50ZXJjZXB0IHRleHR1cmUgdXNlIGluIHRoZXNlIHZlcnNpb25zLCBzbyB3ZSBjYW4ndAovLyBwcm9kdWNlIGEgbWVhbmluZ2Z1bCBlcnJvci4gVGhlIHNvdXJjZSBjb2RlIHRoYXQgYXR0ZW1wdHMgdG8gdXNlIHRleHR1cmVzCi8vIHdpbGwgY29udGludWUgdG8gZmFpbCBhcyBpdCBkb2VzIG5vdy4KI2VuZGlmIC8vIENVREFfVkVSU0lPTgojZW5kaWYgLy8gX19jcGx1c3BsdXMgPj0gMjAxMTAzTCAmJiBDVURBX1ZFUlNJT04gPj0gOTAwMAojaW5jbHVkZSAidGV4dHVyZV9mZXRjaF9mdW5jdGlvbnMuaCIKI2luY2x1ZGUgInRleHR1cmVfaW5kaXJlY3RfZnVuY3Rpb25zLmgiCgovLyBSZXN0b3JlIHN0YXRlIG9mIF9fQ1VEQV9BUkNIX18gYW5kIF9fVEhST1cgd2UgaGFkIG9uIGVudHJ5LgojcHJhZ21hIHBvcF9tYWNybygiX19DVURBX0FSQ0hfXyIpCiNwcmFnbWEgcG9wX21hY3JvKCJfX1RIUk9XIikKCi8vIFNldCB1cCBjb21waWxlciBtYWNyb3MgZXhwZWN0ZWQgdG8gYmUgc2VlbiBkdXJpbmcgY29tcGlsYXRpb24uCiN1bmRlZiBfX0NVREFCRV9fCiNkZWZpbmUgX19DVURBQ0NfXwoKZXh0ZXJuICJDIiB7Ci8vIERldmljZS1zaWRlIENVREEgc3lzdGVtIGNhbGxzLgovLyBodHRwOi8vZG9jcy5udmlkaWEuY29tL2N1ZGEvcHR4LXdyaXRlcnMtZ3VpZGUtdG8taW50ZXJvcGVyYWJpbGl0eS9pbmRleC5odG1sI3N5c3RlbS1jYWxscwovLyBXZSBuZWVkIHRoZXNlIGRlY2xhcmF0aW9ucyBhbmQgd3JhcHBlcnMgZm9yIGRldmljZS1zaWRlCi8vIG1hbGxvYy9mcmVlL3ByaW50ZiBjYWxscyB0byB3b3JrIHdpdGhvdXQgcmVseWluZyBvbgovLyAtZmN1ZGEtZGlzYWJsZS10YXJnZXQtY2FsbC1jaGVja3Mgb3B0aW9uLgpfX2RldmljZV9fIGludCB2cHJpbnRmKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKX19kZXZpY2VfXyB2b2lkIGZyZWUodm9pZCAqKSBfX2F0dHJpYnV0ZSgobm90aHJvdykpOwpfX2RldmljZV9fIHZvaWQgKm1hbGxvYyhzaXplX3QpIF9fYXR0cmlidXRlKChub3Rocm93KSkgX19hdHRyaWJ1dGVfXygobWFsbG9jKSk7CgovLyBfX2Fzc2VydGZhaWwoKSB1c2VkIHRvIGhhdmUgYSBgbm9yZXR1cm5gIGF0dHJpYnV0ZS4gVW5mb3J0dW5hdGVseSB0aGF0Ci8vIGNvbnRyaWJ1dGVkIHRvIHRyaWdnZXJpbmcgdGhlIGxvbmdzdGFuZGluZyBidWcgaW4gcHR4YXMgd2hlbiBhc3NlcnQgd2FzIHVzZWQKLy8gaW4gc3VmZmljaWVudGx5IGNvbnZvbHV0ZWQgY29kZS4gU2VlCi8vIGh0dHBzOi8vYnVncy5sbHZtLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc3MzggZm9yIHRoZSBkZXRhaWxzLgpfX2RldmljZV9fIHZvaWQgX19hc3NlcnRmYWlsKGNvbnN0IGNoYXIgKl9fbWVzc2FnZSwgY29uc3QgY2hhciAqX19maWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIF9fbGluZSwgY29uc3QgY2hhciAqX19mdW5jdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19jaGFyU2l6ZSk7CgovLyBJbiBvcmRlciBmb3Igc3RhbmRhcmQgYXNzZXJ0KCkgbWFjcm8gb24gbGludXggdG8gd29yayB3ZSBuZWVkIHRvCi8vIHByb3ZpZGUgZGV2aWNlLXNpZGUgX19hc3NlcnRfZmFpbCgpCl9fZGV2aWNlX18gc3RhdGljIGlubGluZSB2b2lkIF9fYXNzZXJ0X2ZhaWwoY29uc3QgY2hhciAqX19tZXNzYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKl9fZmlsZSwgdW5zaWduZWQgX19saW5lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKl9fZnVuY3Rpb24pIHsKICBfX2Fzc2VydGZhaWwoX19tZXNzYWdlLCBfX2ZpbGUsIF9fbGluZSwgX19mdW5jdGlvbiwgc2l6ZW9mKGNoYXIpKTsKfQoKLy8gQ2xhbmcgd2lsbCBjb252ZXJ0IHByaW50ZiBpbnRvIHZwcmludGYsIGJ1dCB3ZSBzdGlsbCBuZWVkCi8vIGRldmljZS1zaWRlIGRlY2xhcmF0aW9uIGZvciBpdC4KX19kZXZpY2VfXyBpbnQgcHJpbnRmKGNvbnN0IGNoYXIgKiwgLi4uKTsKfSAvLyBleHRlcm4gIkMiCgovLyBXZSBhbHNvIG5lZWQgZGV2aWNlLXNpZGUgc3RkOjptYWxsb2MgYW5kIHN0ZDo6ZnJlZS4KbmFtZXNwYWNlIHN0ZCB7Cl9fZGV2aWNlX18gc3RhdGljIGlubGluZSB2b2lkIGZyZWUodm9pZCAqX19wdHIpIHsgOjpmcmVlKF9fcHRyKTsgfQpfX2RldmljZV9fIHN0YXRpYyBpbmxpbmUgdm9pZCAqbWFsbG9jKHNpemVfdCBfX3NpemUpIHsKICByZXR1cm4gOjptYWxsb2MoX19zaXplKTsKfQp9IC8vIG5hbWVzcGFjZSBzdGQKCi8vIE91dC1vZi1saW5lIGltcGxlbWVudGF0aW9ucyBmcm9tIF9fY2xhbmdfY3VkYV9idWlsdGluX3ZhcnMuaC4gIFRoZXNlIG5lZWQgdG8KLy8gY29tZSBhZnRlciB3ZSd2ZSBwdWxsZWQgaW4gdGhlIGRlZmluaXRpb24gb2YgdWludDMgYW5kIGRpbTMuCgpfX2RldmljZV9fIGlubGluZSBfX2N1ZGFfYnVpbHRpbl90aHJlYWRJZHhfdDo6b3BlcmF0b3IgZGltMygpIGNvbnN0IHsKICByZXR1cm4gZGltMyh4LCB5LCB6KTsKfQoKX19kZXZpY2VfXyBpbmxpbmUgX19jdWRhX2J1aWx0aW5fdGhyZWFkSWR4X3Q6Om9wZXJhdG9yIHVpbnQzKCkgY29uc3QgewogIHJldHVybiB7eCwgeSwgen07Cn0KCl9fZGV2aWNlX18gaW5saW5lIF9fY3VkYV9idWlsdGluX2Jsb2NrSWR4X3Q6Om9wZXJhdG9yIGRpbTMoKSBjb25zdCB7CiAgcmV0dXJuIGRpbTMoeCwgeSwgeik7Cn0KCl9fZGV2aWNlX18gaW5saW5lIF9fY3VkYV9idWlsdGluX2Jsb2NrSWR4X3Q6Om9wZXJhdG9yIHVpbnQzKCkgY29uc3QgewogIHJldHVybiB7eCwgeSwgen07Cn0KCl9fZGV2aWNlX18gaW5saW5lIF9fY3VkYV9idWlsdGluX2Jsb2NrRGltX3Q6Om9wZXJhdG9yIGRpbTMoKSBjb25zdCB7CiAgcmV0dXJuIGRpbTMoeCwgeSwgeik7Cn0KCl9fZGV2aWNlX18gaW5saW5lIF9fY3VkYV9idWlsdGluX2Jsb2NrRGltX3Q6Om9wZXJhdG9yIHVpbnQzKCkgY29uc3QgewogIHJldHVybiB7eCwgeSwgen07Cn0KCl9fZGV2aWNlX18gaW5saW5lIF9fY3VkYV9idWlsdGluX2dyaWREaW1fdDo6b3BlcmF0b3IgZGltMygpIGNvbnN0IHsKICByZXR1cm4gZGltMyh4LCB5LCB6KTsKfQoKX19kZXZpY2VfXyBpbmxpbmUgX19jdWRhX2J1aWx0aW5fZ3JpZERpbV90OjpvcGVyYXRvciB1aW50MygpIGNvbnN0IHsKICByZXR1cm4ge3gsIHksIHp9Owp9CgojaW5jbHVkZSA8X19jbGFuZ19jdWRhX2NtYXRoLmg+CiNpbmNsdWRlIDxfX2NsYW5nX2N1ZGFfaW50cmluc2ljcy5oPgojaW5jbHVkZSA8X19jbGFuZ19jdWRhX2NvbXBsZXhfYnVpbHRpbnMuaD4KCi8vIGN1cmFuZF9tdGdwMzJfa2VybmVsIGhlbHBmdWxseSByZWRlY2xhcmVzIGJsb2NrRGltIGFuZCB0aHJlYWRJZHggaW4gaG9zdAovLyBtb2RlLCBnaXZpbmcgdGhlbSB0aGVpciAicHJvcGVyIiB0eXBlcyBvZiBkaW0zIGFuZCB1aW50My4gIFRoaXMgaXMKLy8gaW5jb21wYXRpYmxlIHdpdGggdGhlIHR5cGVzIHdlIGdpdmUgaW4gX19jbGFuZ19jdWRhX2J1aWx0aW5fdmFycy5oLiAgQXMgYXMKLy8gaGFjaywgZm9yY2UtaW5jbHVkZSB0aGUgaGVhZGVyIChudmNjIGRvZXNuJ3QgaW5jbHVkZSBpdCBieSBkZWZhdWx0KSBidXQKLy8gcmVkZWZpbmUgZGltMyBhbmQgdWludDMgdG8gb3VyIGJ1aWx0aW4gdHlwZXMuICAoVGhhbmtmdWxseSBkaW0zIGFuZCB1aW50MyBhcmUKLy8gb25seSB1c2VkIGhlcmUgZm9yIHRoZSByZWRlY2xhcmF0aW9ucyBvZiBibG9ja0RpbSBhbmQgdGhyZWFkSWR4LikKI3ByYWdtYSBwdXNoX21hY3JvKCJkaW0zIikKI3ByYWdtYSBwdXNoX21hY3JvKCJ1aW50MyIpCiNkZWZpbmUgZGltMyBfX2N1ZGFfYnVpbHRpbl9ibG9ja0RpbV90CiNkZWZpbmUgdWludDMgX19jdWRhX2J1aWx0aW5fdGhyZWFkSWR4X3QKI2luY2x1ZGUgImN1cmFuZF9tdGdwMzJfa2VybmVsLmgiCiNwcmFnbWEgcG9wX21hY3JvKCJkaW0zIikKI3ByYWdtYSBwb3BfbWFjcm8oInVpbnQzIikKI3ByYWdtYSBwb3BfbWFjcm8oIl9fVVNFX0ZBU1RfTUFUSF9fIikKI3ByYWdtYSBwb3BfbWFjcm8oIl9fQ1VEQV9JTkNMVURFX0NPTVBJTEVSX0lOVEVSTkFMX0hFQURFUlNfXyIpCgovLyBDVURBIHJ1bnRpbWUgdXNlcyB0aGlzIHVuZG9jdW1lbnRlZCBmdW5jdGlvbiB0byBhY2Nlc3Mga2VybmVsIGxhdW5jaAovLyBjb25maWd1cmF0aW9uLiBUaGUgZGVjbGFyYXRpb24gaXMgaW4gY3J0L2RldmljZV9mdW5jdGlvbnMuaCBidXQgdGhhdCBmaWxlCi8vIGluY2x1ZGVzIGEgbG90IG9mIG90aGVyIHN0dWZmIHdlIGRvbid0IHdhbnQuIEluc3RlYWQsIHdlJ2xsIHByb3ZpZGUgb3VyIG93bgovLyBkZWNsYXJhdGlvbiBmb3IgaXQgaGVyZS4KI2lmIENVREFfVkVSU0lPTiA+PSA5MDIwCmV4dGVybiAiQyIgdW5zaWduZWQgX19jdWRhUHVzaENhbGxDb25maWd1cmF0aW9uKGRpbTMgZ3JpZERpbSwgZGltMyBibG9ja0RpbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNoYXJlZE1lbSA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnN0cmVhbSA9IDApOwojZW5kaWYKCiNlbmRpZiAvLyBfX0NVREFfXwojZW5kaWYgLy8gX19DTEFOR19DVURBX1JVTlRJTUVfV1JBUFBFUl9IX18KAGFybV9mcDE2LmgAcG1taW50cmluLmgAczM5MGludHJpbi5oAHN0ZGF0b21pYy5oAHN0ZGJvb2wuaAB1aW50cmludHJpbi5oAC8qPT09LS0tLSB2ZWNpbnRyaW4uaCAtIFZlY3RvciBpbnRyaW5zaWNzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKi8KCiNpZiBkZWZpbmVkKF9fczM5MHhfXykgJiYgZGVmaW5lZChfX1ZFQ19fKQoKI2RlZmluZSBfX0FUVFJTX2FpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKI2RlZmluZSBfX0FUVFJTX28gX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXykpCiNkZWZpbmUgX19BVFRSU19vX2FpIF9fYXR0cmlidXRlX18oKF9fb3ZlcmxvYWRhYmxlX18sIF9fYWx3YXlzX2lubGluZV9fKSkKCiNkZWZpbmUgX19jb25zdGFudChQQVJNKSBcCiAgX19hdHRyaWJ1dGVfXygoX19lbmFibGVfaWZfXyAoKFBBUk0pID09IChQQVJNKSwgXAogICAgICJhcmd1bWVudCBtdXN0IGJlIGEgY29uc3RhbnQgaW50ZWdlciIpKSkKI2RlZmluZSBfX2NvbnN0YW50X3JhbmdlKFBBUk0sIExPVywgSElHSCkgXAogIF9fYXR0cmlidXRlX18oKF9fZW5hYmxlX2lmX18gKChQQVJNKSA+PSAoTE9XKSAmJiAoUEFSTSkgPD0gKEhJR0gpLCBcCiAgICAgImFyZ3VtZW50IG11c3QgYmUgYSBjb25zdGFudCBpbnRlZ2VyIGZyb20gIiAjTE9XICIgdG8gIiAjSElHSCkpKQojZGVmaW5lIF9fY29uc3RhbnRfcG93Ml9yYW5nZShQQVJNLCBMT1csIEhJR0gpIFwKICBfX2F0dHJpYnV0ZV9fKChfX2VuYWJsZV9pZl9fICgoUEFSTSkgPj0gKExPVykgJiYgKFBBUk0pIDw9IChISUdIKSAmJiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQQVJNKSAmICgoUEFSTSkgLSAxKSkgPT0gMCwgXAogICAgICJhcmd1bWVudCBtdXN0IGJlIGEgY29uc3RhbnQgcG93ZXIgb2YgMiBmcm9tICIgI0xPVyAiIHRvICIgI0hJR0gpKSkKCi8qLS0gX19sY2JiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCmV4dGVybiBfX0FUVFJTX28gdW5zaWduZWQgaW50Cl9fbGNiYihjb25zdCB2b2lkICpfX3B0ciwgdW5zaWduZWQgc2hvcnQgX19sZW4pCiAgX19jb25zdGFudF9wb3cyX3JhbmdlKF9fbGVuLCA2NCwgNDA5Nik7CgojZGVmaW5lIF9fbGNiYihYLCBZKSAoKF9fdHlwZW9mX18oKF9fbGNiYikoKFgpLCAoWSkpKSkgXAogIF9fYnVpbHRpbl9zMzkwX2xjYmIoKFgpLCBfX2J1aWx0aW5fY29uc3RhbnRfcCgoWSkpPyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICgoWSkgPT0gNjQgPyAwIDogXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKFkpID09IDEyOCA/IDEgOiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoWSkgPT0gMjU2ID8gMiA6IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChZKSA9PSA1MTIgPyAzIDogXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKFkpID09IDEwMjQgPyA0IDogXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKFkpID09IDIwNDggPyA1IDogXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKFkpID09IDQwOTYgPyA2IDogMCkgOiAwKSkKCi8qLS0gdmVjX2V4dHJhY3QgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIHNpZ25lZCBjaGFyCnZlY19leHRyYWN0KF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fdmVjLCBpbnQgX19pbmRleCkgewogIHJldHVybiBfX3ZlY1tfX2luZGV4ICYgMTVdOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSB1bnNpZ25lZCBjaGFyCnZlY19leHRyYWN0KF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fdmVjLCBpbnQgX19pbmRleCkgewogIHJldHVybiBfX3ZlY1tfX2luZGV4ICYgMTVdOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSB1bnNpZ25lZCBjaGFyCnZlY19leHRyYWN0KF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX192ZWMsIGludCBfX2luZGV4KSB7CiAgcmV0dXJuIF9fdmVjW19faW5kZXggJiAxNV07Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIHNpZ25lZCBzaG9ydAp2ZWNfZXh0cmFjdChfX3ZlY3RvciBzaWduZWQgc2hvcnQgX192ZWMsIGludCBfX2luZGV4KSB7CiAgcmV0dXJuIF9fdmVjW19faW5kZXggJiA3XTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgdW5zaWduZWQgc2hvcnQKdmVjX2V4dHJhY3QoX192ZWN0b3IgX19ib29sIHNob3J0IF9fdmVjLCBpbnQgX19pbmRleCkgewogIHJldHVybiBfX3ZlY1tfX2luZGV4ICYgN107Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIHVuc2lnbmVkIHNob3J0CnZlY19leHRyYWN0KF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fdmVjLCBpbnQgX19pbmRleCkgewogIHJldHVybiBfX3ZlY1tfX2luZGV4ICYgN107Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIHNpZ25lZCBpbnQKdmVjX2V4dHJhY3QoX192ZWN0b3Igc2lnbmVkIGludCBfX3ZlYywgaW50IF9faW5kZXgpIHsKICByZXR1cm4gX192ZWNbX19pbmRleCAmIDNdOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSB1bnNpZ25lZCBpbnQKdmVjX2V4dHJhY3QoX192ZWN0b3IgX19ib29sIGludCBfX3ZlYywgaW50IF9faW5kZXgpIHsKICByZXR1cm4gX192ZWNbX19pbmRleCAmIDNdOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSB1bnNpZ25lZCBpbnQKdmVjX2V4dHJhY3QoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fdmVjLCBpbnQgX19pbmRleCkgewogIHJldHVybiBfX3ZlY1tfX2luZGV4ICYgM107Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIHNpZ25lZCBsb25nIGxvbmcKdmVjX2V4dHJhY3QoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX3ZlYywgaW50IF9faW5kZXgpIHsKICByZXR1cm4gX192ZWNbX19pbmRleCAmIDFdOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSB1bnNpZ25lZCBsb25nIGxvbmcKdmVjX2V4dHJhY3QoX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZyBfX3ZlYywgaW50IF9faW5kZXgpIHsKICByZXR1cm4gX192ZWNbX19pbmRleCAmIDFdOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSB1bnNpZ25lZCBsb25nIGxvbmcKdmVjX2V4dHJhY3QoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fdmVjLCBpbnQgX19pbmRleCkgewogIHJldHVybiBfX3ZlY1tfX2luZGV4ICYgMV07Cn0KCiNpZiBfX0FSQ0hfXyA+PSAxMgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBmbG9hdAp2ZWNfZXh0cmFjdChfX3ZlY3RvciBmbG9hdCBfX3ZlYywgaW50IF9faW5kZXgpIHsKICByZXR1cm4gX192ZWNbX19pbmRleCAmIDNdOwp9CiNlbmRpZgoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgZG91YmxlCnZlY19leHRyYWN0KF9fdmVjdG9yIGRvdWJsZSBfX3ZlYywgaW50IF9faW5kZXgpIHsKICByZXR1cm4gX192ZWNbX19pbmRleCAmIDFdOwp9CgovKi0tIHZlY19pbnNlcnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgY2hhcgp2ZWNfaW5zZXJ0KHNpZ25lZCBjaGFyIF9fc2NhbGFyLCBfX3ZlY3RvciBzaWduZWQgY2hhciBfX3ZlYywgaW50IF9faW5kZXgpIHsKICBfX3ZlY1tfX2luZGV4ICYgMTVdID0gX19zY2FsYXI7CiAgcmV0dXJuIF9fdmVjOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19pbnNlcnQodW5zaWduZWQgY2hhciBfX3NjYWxhciwgX192ZWN0b3IgX19ib29sIGNoYXIgX192ZWMsIGludCBfX2luZGV4KSB7CiAgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX25ld3ZlYyA9IChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fdmVjOwogIF9fbmV3dmVjW19faW5kZXggJiAxNV0gPSAodW5zaWduZWQgY2hhcilfX3NjYWxhcjsKICByZXR1cm4gX19uZXd2ZWM7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIKdmVjX2luc2VydCh1bnNpZ25lZCBjaGFyIF9fc2NhbGFyLCBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fdmVjLCBpbnQgX19pbmRleCkgewogIF9fdmVjW19faW5kZXggJiAxNV0gPSBfX3NjYWxhcjsKICByZXR1cm4gX192ZWM7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBzaG9ydAp2ZWNfaW5zZXJ0KHNpZ25lZCBzaG9ydCBfX3NjYWxhciwgX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fdmVjLCBpbnQgX19pbmRleCkgewogIF9fdmVjW19faW5kZXggJiA3XSA9IF9fc2NhbGFyOwogIHJldHVybiBfX3ZlYzsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX2luc2VydCh1bnNpZ25lZCBzaG9ydCBfX3NjYWxhciwgX192ZWN0b3IgX19ib29sIHNob3J0IF9fdmVjLAogICAgICAgICAgIGludCBfX2luZGV4KSB7CiAgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19uZXd2ZWMgPSAoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX192ZWM7CiAgX19uZXd2ZWNbX19pbmRleCAmIDddID0gKHVuc2lnbmVkIHNob3J0KV9fc2NhbGFyOwogIHJldHVybiBfX25ld3ZlYzsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX2luc2VydCh1bnNpZ25lZCBzaG9ydCBfX3NjYWxhciwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX192ZWMsCiAgICAgICAgICAgaW50IF9faW5kZXgpIHsKICBfX3ZlY1tfX2luZGV4ICYgN10gPSBfX3NjYWxhcjsKICByZXR1cm4gX192ZWM7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBpbnQKdmVjX2luc2VydChzaWduZWQgaW50IF9fc2NhbGFyLCBfX3ZlY3RvciBzaWduZWQgaW50IF9fdmVjLCBpbnQgX19pbmRleCkgewogIF9fdmVjW19faW5kZXggJiAzXSA9IF9fc2NhbGFyOwogIHJldHVybiBfX3ZlYzsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19pbnNlcnQodW5zaWduZWQgaW50IF9fc2NhbGFyLCBfX3ZlY3RvciBfX2Jvb2wgaW50IF9fdmVjLCBpbnQgX19pbmRleCkgewogIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX25ld3ZlYyA9IChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX192ZWM7CiAgX19uZXd2ZWNbX19pbmRleCAmIDNdID0gX19zY2FsYXI7CiAgcmV0dXJuIF9fbmV3dmVjOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBpbnQKdmVjX2luc2VydCh1bnNpZ25lZCBpbnQgX19zY2FsYXIsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX3ZlYywgaW50IF9faW5kZXgpIHsKICBfX3ZlY1tfX2luZGV4ICYgM10gPSBfX3NjYWxhcjsKICByZXR1cm4gX192ZWM7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcKdmVjX2luc2VydChzaWduZWQgbG9uZyBsb25nIF9fc2NhbGFyLCBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fdmVjLAogICAgICAgICAgIGludCBfX2luZGV4KSB7CiAgX192ZWNbX19pbmRleCAmIDFdID0gX19zY2FsYXI7CiAgcmV0dXJuIF9fdmVjOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcKdmVjX2luc2VydCh1bnNpZ25lZCBsb25nIGxvbmcgX19zY2FsYXIsIF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX192ZWMsCiAgICAgICAgICAgaW50IF9faW5kZXgpIHsKICBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19uZXd2ZWMgPSAoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fdmVjOwogIF9fbmV3dmVjW19faW5kZXggJiAxXSA9IF9fc2NhbGFyOwogIHJldHVybiBfX25ld3ZlYzsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nCnZlY19pbnNlcnQodW5zaWduZWQgbG9uZyBsb25nIF9fc2NhbGFyLCBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX192ZWMsCiAgICAgICAgICAgaW50IF9faW5kZXgpIHsKICBfX3ZlY1tfX2luZGV4ICYgMV0gPSBfX3NjYWxhcjsKICByZXR1cm4gX192ZWM7Cn0KCiNpZiBfX0FSQ0hfXyA+PSAxMgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBmbG9hdAp2ZWNfaW5zZXJ0KGZsb2F0IF9fc2NhbGFyLCBfX3ZlY3RvciBmbG9hdCBfX3ZlYywgaW50IF9faW5kZXgpIHsKICBfX3ZlY1tfX2luZGV4ICYgMV0gPSBfX3NjYWxhcjsKICByZXR1cm4gX192ZWM7Cn0KI2VuZGlmCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBkb3VibGUKdmVjX2luc2VydChkb3VibGUgX19zY2FsYXIsIF9fdmVjdG9yIGRvdWJsZSBfX3ZlYywgaW50IF9faW5kZXgpIHsKICBfX3ZlY1tfX2luZGV4ICYgMV0gPSBfX3NjYWxhcjsKICByZXR1cm4gX192ZWM7Cn0KCi8qLS0gdmVjX3Byb21vdGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBjaGFyCnZlY19wcm9tb3RlKHNpZ25lZCBjaGFyIF9fc2NhbGFyLCBpbnQgX19pbmRleCkgewogIGNvbnN0IF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9femVybyA9IChfX3ZlY3RvciBzaWduZWQgY2hhcikwOwogIF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fdmVjID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX196ZXJvLCBfX3plcm8sCiAgICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSk7CiAgX192ZWNbX19pbmRleCAmIDE1XSA9IF9fc2NhbGFyOwogIHJldHVybiBfX3ZlYzsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfcHJvbW90ZSh1bnNpZ25lZCBjaGFyIF9fc2NhbGFyLCBpbnQgX19pbmRleCkgewogIGNvbnN0IF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX196ZXJvID0gKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpMDsKICBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fdmVjID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX196ZXJvLCBfX3plcm8sCiAgICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSk7CiAgX192ZWNbX19pbmRleCAmIDE1XSA9IF9fc2NhbGFyOwogIHJldHVybiBfX3ZlYzsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIHNob3J0CnZlY19wcm9tb3RlKHNpZ25lZCBzaG9ydCBfX3NjYWxhciwgaW50IF9faW5kZXgpIHsKICBjb25zdCBfX3ZlY3RvciBzaWduZWQgc2hvcnQgX196ZXJvID0gKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCkwOwogIF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX3ZlYyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9femVybywgX196ZXJvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSk7CiAgX192ZWNbX19pbmRleCAmIDddID0gX19zY2FsYXI7CiAgcmV0dXJuIF9fdmVjOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydAp2ZWNfcHJvbW90ZSh1bnNpZ25lZCBzaG9ydCBfX3NjYWxhciwgaW50IF9faW5kZXgpIHsKICBjb25zdCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX3plcm8gPSAoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpMDsKICBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX3ZlYyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9femVybywgX196ZXJvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xKTsKICBfX3ZlY1tfX2luZGV4ICYgN10gPSBfX3NjYWxhcjsKICByZXR1cm4gX192ZWM7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBpbnQKdmVjX3Byb21vdGUoc2lnbmVkIGludCBfX3NjYWxhciwgaW50IF9faW5kZXgpIHsKICBjb25zdCBfX3ZlY3RvciBzaWduZWQgaW50IF9femVybyA9IChfX3ZlY3RvciBzaWduZWQgaW50KTA7CiAgX192ZWN0b3Igc2lnbmVkIGludCBfX3ZlYyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9femVybywgX196ZXJvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwgLTEsIC0xLCAtMSk7CiAgX192ZWNbX19pbmRleCAmIDNdID0gX19zY2FsYXI7CiAgcmV0dXJuIF9fdmVjOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBpbnQKdmVjX3Byb21vdGUodW5zaWduZWQgaW50IF9fc2NhbGFyLCBpbnQgX19pbmRleCkgewogIGNvbnN0IF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX3plcm8gPSAoX192ZWN0b3IgdW5zaWduZWQgaW50KTA7CiAgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fdmVjID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX196ZXJvLCBfX3plcm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsIC0xLCAtMSwgLTEpOwogIF9fdmVjW19faW5kZXggJiAzXSA9IF9fc2NhbGFyOwogIHJldHVybiBfX3ZlYzsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZwp2ZWNfcHJvbW90ZShzaWduZWQgbG9uZyBsb25nIF9fc2NhbGFyLCBpbnQgX19pbmRleCkgewogIGNvbnN0IF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX196ZXJvID0gKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpMDsKICBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fdmVjID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX196ZXJvLCBfX3plcm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLCAtMSk7CiAgX192ZWNbX19pbmRleCAmIDFdID0gX19zY2FsYXI7CiAgcmV0dXJuIF9fdmVjOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcKdmVjX3Byb21vdGUodW5zaWduZWQgbG9uZyBsb25nIF9fc2NhbGFyLCBpbnQgX19pbmRleCkgewogIGNvbnN0IF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3plcm8gPSAoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKTA7CiAgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fdmVjID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX196ZXJvLCBfX3plcm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsIC0xKTsKICBfX3ZlY1tfX2luZGV4ICYgMV0gPSBfX3NjYWxhcjsKICByZXR1cm4gX192ZWM7Cn0KCiNpZiBfX0FSQ0hfXyA+PSAxMgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBmbG9hdAp2ZWNfcHJvbW90ZShmbG9hdCBfX3NjYWxhciwgaW50IF9faW5kZXgpIHsKICBjb25zdCBfX3ZlY3RvciBmbG9hdCBfX3plcm8gPSAoX192ZWN0b3IgZmxvYXQpMC4wZjsKICBfX3ZlY3RvciBmbG9hdCBfX3ZlYyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9femVybywgX196ZXJvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsIC0xLCAtMSwgLTEpOwogIF9fdmVjW19faW5kZXggJiAzXSA9IF9fc2NhbGFyOwogIHJldHVybiBfX3ZlYzsKfQojZW5kaWYKCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIGRvdWJsZQp2ZWNfcHJvbW90ZShkb3VibGUgX19zY2FsYXIsIGludCBfX2luZGV4KSB7CiAgY29uc3QgX192ZWN0b3IgZG91YmxlIF9femVybyA9IChfX3ZlY3RvciBkb3VibGUpMC4wOwogIF9fdmVjdG9yIGRvdWJsZSBfX3ZlYyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9femVybywgX196ZXJvLCAtMSwgLTEpOwogIF9fdmVjW19faW5kZXggJiAxXSA9IF9fc2NhbGFyOwogIHJldHVybiBfX3ZlYzsKfQoKLyotLSB2ZWNfaW5zZXJ0X2FuZF96ZXJvIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGNoYXIKdmVjX2luc2VydF9hbmRfemVybyhjb25zdCBzaWduZWQgY2hhciAqX19wdHIpIHsKICBfX3ZlY3RvciBzaWduZWQgY2hhciBfX3ZlYyA9IChfX3ZlY3RvciBzaWduZWQgY2hhcikwOwogIF9fdmVjWzddID0gKl9fcHRyOwogIHJldHVybiBfX3ZlYzsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfaW5zZXJ0X2FuZF96ZXJvKGNvbnN0IHVuc2lnbmVkIGNoYXIgKl9fcHRyKSB7CiAgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX3ZlYyA9IChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKTA7CiAgX192ZWNbN10gPSAqX19wdHI7CiAgcmV0dXJuIF9fdmVjOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgc2hvcnQKdmVjX2luc2VydF9hbmRfemVybyhjb25zdCBzaWduZWQgc2hvcnQgKl9fcHRyKSB7CiAgX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fdmVjID0gKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCkwOwogIF9fdmVjWzNdID0gKl9fcHRyOwogIHJldHVybiBfX3ZlYzsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX2luc2VydF9hbmRfemVybyhjb25zdCB1bnNpZ25lZCBzaG9ydCAqX19wdHIpIHsKICBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX3ZlYyA9IChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCkwOwogIF9fdmVjWzNdID0gKl9fcHRyOwogIHJldHVybiBfX3ZlYzsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGludAp2ZWNfaW5zZXJ0X2FuZF96ZXJvKGNvbnN0IHNpZ25lZCBpbnQgKl9fcHRyKSB7CiAgX192ZWN0b3Igc2lnbmVkIGludCBfX3ZlYyA9IChfX3ZlY3RvciBzaWduZWQgaW50KTA7CiAgX192ZWNbMV0gPSAqX19wdHI7CiAgcmV0dXJuIF9fdmVjOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBpbnQKdmVjX2luc2VydF9hbmRfemVybyhjb25zdCB1bnNpZ25lZCBpbnQgKl9fcHRyKSB7CiAgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fdmVjID0gKF9fdmVjdG9yIHVuc2lnbmVkIGludCkwOwogIF9fdmVjWzFdID0gKl9fcHRyOwogIHJldHVybiBfX3ZlYzsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZwp2ZWNfaW5zZXJ0X2FuZF96ZXJvKGNvbnN0IHNpZ25lZCBsb25nIGxvbmcgKl9fcHRyKSB7CiAgX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX3ZlYyA9IChfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nKTA7CiAgX192ZWNbMF0gPSAqX19wdHI7CiAgcmV0dXJuIF9fdmVjOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcKdmVjX2luc2VydF9hbmRfemVybyhjb25zdCB1bnNpZ25lZCBsb25nIGxvbmcgKl9fcHRyKSB7CiAgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fdmVjID0gKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZykwOwogIF9fdmVjWzBdID0gKl9fcHRyOwogIHJldHVybiBfX3ZlYzsKfQoKI2lmIF9fQVJDSF9fID49IDEyCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIGZsb2F0CnZlY19pbnNlcnRfYW5kX3plcm8oY29uc3QgZmxvYXQgKl9fcHRyKSB7CiAgX192ZWN0b3IgZmxvYXQgX192ZWMgPSAoX192ZWN0b3IgZmxvYXQpMC4wZjsKICBfX3ZlY1sxXSA9ICpfX3B0cjsKICByZXR1cm4gX192ZWM7Cn0KI2VuZGlmCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBkb3VibGUKdmVjX2luc2VydF9hbmRfemVybyhjb25zdCBkb3VibGUgKl9fcHRyKSB7CiAgX192ZWN0b3IgZG91YmxlIF9fdmVjID0gKF9fdmVjdG9yIGRvdWJsZSkwLjA7CiAgX192ZWNbMF0gPSAqX19wdHI7CiAgcmV0dXJuIF9fdmVjOwp9CgovKi0tIHZlY19wZXJtIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgY2hhcgp2ZWNfcGVybShfX3ZlY3RvciBzaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYiwKICAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2MpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBjaGFyKV9fYnVpbHRpbl9zMzkwX3ZwZXJtKAogICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iLCBfX2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19wZXJtKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYiwKICAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2MpIHsKICByZXR1cm4gKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19idWlsdGluX3MzOTBfdnBlcm0oCiAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IsIF9fYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBjaGFyCnZlY19wZXJtKF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYSwgX192ZWN0b3IgX19ib29sIGNoYXIgX19iLAogICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYykgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIGNoYXIpX19idWlsdGluX3MzOTBfdnBlcm0oCiAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IsIF9fYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBzaG9ydAp2ZWNfcGVybShfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19iLAogICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYykgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIHNob3J0KV9fYnVpbHRpbl9zMzkwX3ZwZXJtKAogICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iLCBfX2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydAp2ZWNfcGVybShfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYiwKICAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2MpIHsKICByZXR1cm4gKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYnVpbHRpbl9zMzkwX3ZwZXJtKAogICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iLCBfX2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQKdmVjX3Blcm0oX192ZWN0b3IgX19ib29sIHNob3J0IF9fYSwgX192ZWN0b3IgX19ib29sIHNob3J0IF9fYiwKICAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2MpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBzaG9ydClfX2J1aWx0aW5fczM5MF92cGVybSgKICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYiwgX19jKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGludAp2ZWNfcGVybShfX3ZlY3RvciBzaWduZWQgaW50IF9fYSwgX192ZWN0b3Igc2lnbmVkIGludCBfX2IsCiAgICAgICAgIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19jKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgaW50KV9fYnVpbHRpbl9zMzkwX3ZwZXJtKAogICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iLCBfX2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBpbnQKdmVjX3Blcm0oX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYiwKICAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2MpIHsKICByZXR1cm4gKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2J1aWx0aW5fczM5MF92cGVybSgKICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYiwgX19jKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIGludAp2ZWNfcGVybShfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYSwgX192ZWN0b3IgX19ib29sIGludCBfX2IsCiAgICAgICAgIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19jKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBfX2Jvb2wgaW50KV9fYnVpbHRpbl9zMzkwX3ZwZXJtKAogICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iLCBfX2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nCnZlY19wZXJtKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYiwKICAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2MpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19idWlsdGluX3MzOTBfdnBlcm0oCiAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IsIF9fYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZwp2ZWNfcGVybShfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iLAogICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYykgewogIHJldHVybiAoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYnVpbHRpbl9zMzkwX3ZwZXJtKAogICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iLCBfX2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nCnZlY19wZXJtKF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIF9fYiwKICAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2MpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcpX19idWlsdGluX3MzOTBfdnBlcm0oCiAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IsIF9fYyk7Cn0KCiNpZiBfX0FSQ0hfXyA+PSAxMgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBmbG9hdAp2ZWNfcGVybShfX3ZlY3RvciBmbG9hdCBfX2EsIF9fdmVjdG9yIGZsb2F0IF9fYiwKICAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2MpIHsKICByZXR1cm4gKF9fdmVjdG9yIGZsb2F0KV9fYnVpbHRpbl9zMzkwX3ZwZXJtKAogICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iLCBfX2MpOwp9CiNlbmRpZgoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgZG91YmxlCnZlY19wZXJtKF9fdmVjdG9yIGRvdWJsZSBfX2EsIF9fdmVjdG9yIGRvdWJsZSBfX2IsCiAgICAgICAgIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19jKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBkb3VibGUpX19idWlsdGluX3MzOTBfdnBlcm0oCiAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IsIF9fYyk7Cn0KCi8qLS0gdmVjX3Blcm1pIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCmV4dGVybiBfX0FUVFJTX28gX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZwp2ZWNfcGVybWkoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iLAogICAgICAgICAgaW50IF9fYykKICBfX2NvbnN0YW50X3JhbmdlKF9fYywgMCwgMyk7CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpleHRlcm4gX19BVFRSU19vIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZwp2ZWNfcGVybWkoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYiwKICAgICAgICAgIGludCBfX2MpCiAgX19jb25zdGFudF9yYW5nZShfX2MsIDAsIDMpOwoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4KZXh0ZXJuIF9fQVRUUlNfbyBfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nCnZlY19wZXJtaShfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIF9fYSwgX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZyBfX2IsCiAgICAgICAgICBpbnQgX19jKQogIF9fY29uc3RhbnRfcmFuZ2UoX19jLCAwLCAzKTsKCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCmV4dGVybiBfX0FUVFJTX28gX192ZWN0b3IgZG91YmxlCnZlY19wZXJtaShfX3ZlY3RvciBkb3VibGUgX19hLCBfX3ZlY3RvciBkb3VibGUgX19iLCBpbnQgX19jKQogIF9fY29uc3RhbnRfcmFuZ2UoX19jLCAwLCAzKTsKCiNkZWZpbmUgdmVjX3Blcm1pKFgsIFksIFopICgoX190eXBlb2ZfXygodmVjX3Blcm1pKSgoWCksIChZKSwgKFopKSkpIFwKICBfX2J1aWx0aW5fczM5MF92cGRpKChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpKFgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKShZKSwgXAogICAgICAgICAgICAgICAgICAgICAgKCgoWikgJiAyKSA8PCAxKSB8ICgoWikgJiAxKSkpCgovKi0tIHZlY19icGVybV91MTI4IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgojaWYgX19BUkNIX18gPj0gMTIKc3RhdGljIGlubGluZSBfX0FUVFJTX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZwp2ZWNfYnBlcm1fdTEyOChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmJwZXJtKF9fYSwgX19iKTsKfQojZW5kaWYKCi8qLS0gdmVjX3JldmIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBzaG9ydAp2ZWNfcmV2YihfX3ZlY3RvciBzaWduZWQgc2hvcnQgX192ZWMpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCkKICAgICAgICAgX19idWlsdGluX3MzOTBfdmxicmgoKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fdmVjKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX3JldmIoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX192ZWMpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmxicmgoX192ZWMpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgaW50CnZlY19yZXZiKF9fdmVjdG9yIHNpZ25lZCBpbnQgX192ZWMpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBpbnQpCiAgICAgICAgIF9fYnVpbHRpbl9zMzkwX3ZsYnJmKChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX192ZWMpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBpbnQKdmVjX3JldmIoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fdmVjKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZsYnJmKF9fdmVjKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZwp2ZWNfcmV2YihfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fdmVjKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nKQogICAgICAgICBfX2J1aWx0aW5fczM5MF92bGJyZygoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fdmVjKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nCnZlY19yZXZiKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3ZlYykgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92bGJyZyhfX3ZlYyk7Cn0KCiNpZiBfX0FSQ0hfXyA+PSAxMgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBmbG9hdAp2ZWNfcmV2YihfX3ZlY3RvciBmbG9hdCBfX3ZlYykgewogIHJldHVybiAoX192ZWN0b3IgZmxvYXQpCiAgICAgICAgIF9fYnVpbHRpbl9zMzkwX3ZsYnJmKChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX192ZWMpOwp9CiNlbmRpZgoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgZG91YmxlCnZlY19yZXZiKF9fdmVjdG9yIGRvdWJsZSBfX3ZlYykgewogIHJldHVybiAoX192ZWN0b3IgZG91YmxlKQogICAgICAgICBfX2J1aWx0aW5fczM5MF92bGJyZygoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fdmVjKTsKfQoKLyotLSB2ZWNfcmV2ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGNoYXIKdmVjX3JldmUoX192ZWN0b3Igc2lnbmVkIGNoYXIgX192ZWMpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBjaGFyKSB7IF9fdmVjWzE1XSwgX192ZWNbMTRdLCBfX3ZlY1sxM10sIF9fdmVjWzEyXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fdmVjWzExXSwgX192ZWNbMTBdLCBfX3ZlY1s5XSwgX192ZWNbOF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3ZlY1s3XSwgX192ZWNbNl0sIF9fdmVjWzVdLCBfX3ZlY1s0XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fdmVjWzNdLCBfX3ZlY1syXSwgX192ZWNbMV0sIF9fdmVjWzBdIH07Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIKdmVjX3JldmUoX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX3ZlYykgewogIHJldHVybiAoX192ZWN0b3IgdW5zaWduZWQgY2hhcikgeyBfX3ZlY1sxNV0sIF9fdmVjWzE0XSwgX192ZWNbMTNdLCBfX3ZlY1sxMl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fdmVjWzExXSwgX192ZWNbMTBdLCBfX3ZlY1s5XSwgX192ZWNbOF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fdmVjWzddLCBfX3ZlY1s2XSwgX192ZWNbNV0sIF9fdmVjWzRdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3ZlY1szXSwgX192ZWNbMl0sIF9fdmVjWzFdLCBfX3ZlY1swXSB9Owp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgY2hhcgp2ZWNfcmV2ZShfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX3ZlYykgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIGNoYXIpIHsgX192ZWNbMTVdLCBfX3ZlY1sxNF0sIF9fdmVjWzEzXSwgX192ZWNbMTJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX192ZWNbMTFdLCBfX3ZlY1sxMF0sIF9fdmVjWzldLCBfX3ZlY1s4XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fdmVjWzddLCBfX3ZlY1s2XSwgX192ZWNbNV0sIF9fdmVjWzRdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX192ZWNbM10sIF9fdmVjWzJdLCBfX3ZlY1sxXSwgX192ZWNbMF0gfTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIHNob3J0CnZlY19yZXZlKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX3ZlYykgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIHNob3J0KSB7IF9fdmVjWzddLCBfX3ZlY1s2XSwgX192ZWNbNV0sIF9fdmVjWzRdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fdmVjWzNdLCBfX3ZlY1syXSwgX192ZWNbMV0sIF9fdmVjWzBdIH07Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0CnZlY19yZXZlKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fdmVjKSB7CiAgcmV0dXJuIChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCkgeyBfX3ZlY1s3XSwgX192ZWNbNl0sIF9fdmVjWzVdLCBfX3ZlY1s0XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fdmVjWzNdLCBfX3ZlY1syXSwgX192ZWNbMV0sIF9fdmVjWzBdIH07Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBzaG9ydAp2ZWNfcmV2ZShfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX192ZWMpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBzaG9ydCkgeyBfX3ZlY1s3XSwgX192ZWNbNl0sIF9fdmVjWzVdLCBfX3ZlY1s0XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3ZlY1szXSwgX192ZWNbMl0sIF9fdmVjWzFdLCBfX3ZlY1swXSB9Owp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgaW50CnZlY19yZXZlKF9fdmVjdG9yIHNpZ25lZCBpbnQgX192ZWMpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBpbnQpIHsgX192ZWNbM10sIF9fdmVjWzJdLCBfX3ZlY1sxXSwgX192ZWNbMF0gfTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19yZXZlKF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX3ZlYykgewogIHJldHVybiAoX192ZWN0b3IgdW5zaWduZWQgaW50KSB7IF9fdmVjWzNdLCBfX3ZlY1syXSwgX192ZWNbMV0sIF9fdmVjWzBdIH07Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBpbnQKdmVjX3JldmUoX192ZWN0b3IgX19ib29sIGludCBfX3ZlYykgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIGludCkgeyBfX3ZlY1szXSwgX192ZWNbMl0sIF9fdmVjWzFdLCBfX3ZlY1swXSB9Owp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nCnZlY19yZXZlKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX192ZWMpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpIHsgX192ZWNbMV0sIF9fdmVjWzBdIH07Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZwp2ZWNfcmV2ZShfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX192ZWMpIHsKICByZXR1cm4gKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZykgeyBfX3ZlY1sxXSwgX192ZWNbMF0gfTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZwp2ZWNfcmV2ZShfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIF9fdmVjKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nKSB7IF9fdmVjWzFdLCBfX3ZlY1swXSB9Owp9CgojaWYgX19BUkNIX18gPj0gMTIKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgZmxvYXQKdmVjX3JldmUoX192ZWN0b3IgZmxvYXQgX192ZWMpIHsKICByZXR1cm4gKF9fdmVjdG9yIGZsb2F0KSB7IF9fdmVjWzNdLCBfX3ZlY1syXSwgX192ZWNbMV0sIF9fdmVjWzBdIH07Cn0KI2VuZGlmCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBkb3VibGUKdmVjX3JldmUoX192ZWN0b3IgZG91YmxlIF9fdmVjKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBkb3VibGUpIHsgX192ZWNbMV0sIF9fdmVjWzBdIH07Cn0KCi8qLS0gdmVjX3NlbCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBjaGFyCnZlY19zZWwoX192ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciBzaWduZWQgY2hhciBfX2IsCiAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2MpIHsKICByZXR1cm4gKCgoX192ZWN0b3Igc2lnbmVkIGNoYXIpX19jICYgX19iKSB8CiAgICAgICAgICAofihfX3ZlY3RvciBzaWduZWQgY2hhcilfX2MgJiBfX2EpKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGNoYXIKdmVjX3NlbChfX3ZlY3RvciBzaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYiwKICAgICAgICBfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2MpIHsKICByZXR1cm4gKCgoX192ZWN0b3Igc2lnbmVkIGNoYXIpX19jICYgX19iKSB8CiAgICAgICAgICAofihfX3ZlY3RvciBzaWduZWQgY2hhcilfX2MgJiBfX2EpKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIGNoYXIKdmVjX3NlbChfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2EsIF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYiwKICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYykgewogIHJldHVybiAoKChfX3ZlY3RvciBfX2Jvb2wgY2hhcilfX2MgJiBfX2IpIHwKICAgICAgICAgICh+KF9fdmVjdG9yIF9fYm9vbCBjaGFyKV9fYyAmIF9fYSkpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgY2hhcgp2ZWNfc2VsKF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYSwgX192ZWN0b3IgX19ib29sIGNoYXIgX19iLAogICAgICAgIF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYykgewogIHJldHVybiAoX19jICYgX19iKSB8ICh+X19jICYgX19hKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfc2VsKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYiwKICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYykgewogIHJldHVybiAoX19jICYgX19iKSB8ICh+X19jICYgX19hKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfc2VsKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYiwKICAgICAgICBfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2MpIHsKICByZXR1cm4gKCgoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2MgJiBfX2IpIHwKICAgICAgICAgICh+KF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19jICYgX19hKSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBzaG9ydAp2ZWNfc2VsKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2IsCiAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19jKSB7CiAgcmV0dXJuICgoKF9fdmVjdG9yIHNpZ25lZCBzaG9ydClfX2MgJiBfX2IpIHwKICAgICAgICAgICh+KF9fdmVjdG9yIHNpZ25lZCBzaG9ydClfX2MgJiBfX2EpKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIHNob3J0CnZlY19zZWwoX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYiwKICAgICAgICBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19jKSB7CiAgcmV0dXJuICgoKF9fdmVjdG9yIHNpZ25lZCBzaG9ydClfX2MgJiBfX2IpIHwKICAgICAgICAgICh+KF9fdmVjdG9yIHNpZ25lZCBzaG9ydClfX2MgJiBfX2EpKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIHNob3J0CnZlY19zZWwoX192ZWN0b3IgX19ib29sIHNob3J0IF9fYSwgX192ZWN0b3IgX19ib29sIHNob3J0IF9fYiwKICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2MpIHsKICByZXR1cm4gKCgoX192ZWN0b3IgX19ib29sIHNob3J0KV9fYyAmIF9fYikgfAogICAgICAgICAgKH4oX192ZWN0b3IgX19ib29sIHNob3J0KV9fYyAmIF9fYSkpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQKdmVjX3NlbChfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19hLCBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19iLAogICAgICAgIF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2MpIHsKICByZXR1cm4gKF9fYyAmIF9fYikgfCAofl9fYyAmIF9fYSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0CnZlY19zZWwoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IsCiAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19jKSB7CiAgcmV0dXJuIChfX2MgJiBfX2IpIHwgKH5fX2MgJiBfX2EpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydAp2ZWNfc2VsKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iLAogICAgICAgIF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2MpIHsKICByZXR1cm4gKCgoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19jICYgX19iKSB8CiAgICAgICAgICAofihfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2MgJiBfX2EpKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGludAp2ZWNfc2VsKF9fdmVjdG9yIHNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciBzaWduZWQgaW50IF9fYiwKICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19jKSB7CiAgcmV0dXJuICgoKF9fdmVjdG9yIHNpZ25lZCBpbnQpX19jICYgX19iKSB8CiAgICAgICAgICAofihfX3ZlY3RvciBzaWduZWQgaW50KV9fYyAmIF9fYSkpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgaW50CnZlY19zZWwoX192ZWN0b3Igc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBpbnQgX19iLAogICAgICAgIF9fdmVjdG9yIF9fYm9vbCBpbnQgX19jKSB7CiAgcmV0dXJuICgoKF9fdmVjdG9yIHNpZ25lZCBpbnQpX19jICYgX19iKSB8CiAgICAgICAgICAofihfX3ZlY3RvciBzaWduZWQgaW50KV9fYyAmIF9fYSkpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgaW50CnZlY19zZWwoX192ZWN0b3IgX19ib29sIGludCBfX2EsIF9fdmVjdG9yIF9fYm9vbCBpbnQgX19iLAogICAgICAgIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2MpIHsKICByZXR1cm4gKCgoX192ZWN0b3IgX19ib29sIGludClfX2MgJiBfX2IpIHwKICAgICAgICAgICh+KF9fdmVjdG9yIF9fYm9vbCBpbnQpX19jICYgX19hKSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBpbnQKdmVjX3NlbChfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYSwgX192ZWN0b3IgX19ib29sIGludCBfX2IsCiAgICAgICAgX192ZWN0b3IgX19ib29sIGludCBfX2MpIHsKICByZXR1cm4gKF9fYyAmIF9fYikgfCAofl9fYyAmIF9fYSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGludAp2ZWNfc2VsKF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IsCiAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYykgewogIHJldHVybiAoX19jICYgX19iKSB8ICh+X19jICYgX19hKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19zZWwoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYiwKICAgICAgICBfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYykgewogIHJldHVybiAoKChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19jICYgX19iKSB8CiAgICAgICAgICAofihfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19jICYgX19hKSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcKdmVjX3NlbChfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2IsCiAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYykgewogIHJldHVybiAoKChfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYyAmIF9fYikgfAogICAgICAgICAgKH4oX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2MgJiBfX2EpKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZwp2ZWNfc2VsKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYiwKICAgICAgICBfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIF9fYykgewogIHJldHVybiAoKChfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYyAmIF9fYikgfAogICAgICAgICAgKH4oX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2MgJiBfX2EpKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZwp2ZWNfc2VsKF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIF9fYiwKICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19jKSB7CiAgcmV0dXJuICgoKF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcpX19jICYgX19iKSB8CiAgICAgICAgICAofihfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nKV9fYyAmIF9fYSkpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nCnZlY19zZWwoX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX19iLAogICAgICAgIF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX19jKSB7CiAgcmV0dXJuIChfX2MgJiBfX2IpIHwgKH5fX2MgJiBfX2EpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcKdmVjX3NlbChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iLAogICAgICAgIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2MpIHsKICByZXR1cm4gKF9fYyAmIF9fYikgfCAofl9fYyAmIF9fYSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZwp2ZWNfc2VsKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IsCiAgICAgICAgX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZyBfX2MpIHsKICByZXR1cm4gKCgoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYyAmIF9fYikgfAogICAgICAgICAgKH4oX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYyAmIF9fYSkpOwp9CgojaWYgX19BUkNIX18gPj0gMTIKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgZmxvYXQKdmVjX3NlbChfX3ZlY3RvciBmbG9hdCBfX2EsIF9fdmVjdG9yIGZsb2F0IF9fYiwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYykgewogIHJldHVybiAoX192ZWN0b3IgZmxvYXQpKChfX2MgJiAoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYikgfAogICAgICAgICAgICAgICAgICAgICAgICAgICh+X19jICYgKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2EpKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgZmxvYXQKdmVjX3NlbChfX3ZlY3RvciBmbG9hdCBfX2EsIF9fdmVjdG9yIGZsb2F0IF9fYiwgX192ZWN0b3IgX19ib29sIGludCBfX2MpIHsKICBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19hYyA9IChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19hOwogIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2JjID0gKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2I7CiAgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fY2MgPSAoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYzsKICByZXR1cm4gKF9fdmVjdG9yIGZsb2F0KSgoX19jYyAmIF9fYmMpIHwgKH5fX2NjICYgX19hYykpOwp9CiNlbmRpZgoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgZG91YmxlCnZlY19zZWwoX192ZWN0b3IgZG91YmxlIF9fYSwgX192ZWN0b3IgZG91YmxlIF9fYiwKICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19jKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBkb3VibGUpKChfX2MgJiAoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYikgfAogICAgICAgICAgICAgICAgICAgICAgICAgKH5fX2MgJiAoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYSkpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBkb3VibGUKdmVjX3NlbChfX3ZlY3RvciBkb3VibGUgX19hLCBfX3ZlY3RvciBkb3VibGUgX19iLAogICAgICAgIF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX19jKSB7CiAgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYWMgPSAoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYTsKICBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iYyA9IChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19iOwogIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2NjID0gKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2M7CiAgcmV0dXJuIChfX3ZlY3RvciBkb3VibGUpKChfX2NjICYgX19iYykgfCAofl9fY2MgJiBfX2FjKSk7Cn0KCi8qLS0gdmVjX2dhdGhlcl9lbGVtZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBpbnQKdmVjX2dhdGhlcl9lbGVtZW50KF9fdmVjdG9yIHNpZ25lZCBpbnQgX192ZWMsCiAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19vZmZzZXQsCiAgICAgICAgICAgICAgICAgICBjb25zdCBzaWduZWQgaW50ICpfX3B0ciwgaW50IF9faW5kZXgpCiAgX19jb25zdGFudF9yYW5nZShfX2luZGV4LCAwLCAzKSB7CiAgX192ZWNbX19pbmRleF0gPSAqKGNvbnN0IHNpZ25lZCBpbnQgKikoCiAgICAoY29uc3QgY2hhciAqKV9fcHRyICsgX19vZmZzZXRbX19pbmRleF0pOwogIHJldHVybiBfX3ZlYzsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIGludAp2ZWNfZ2F0aGVyX2VsZW1lbnQoX192ZWN0b3IgX19ib29sIGludCBfX3ZlYywKICAgICAgICAgICAgICAgICAgIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX29mZnNldCwKICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCAqX19wdHIsIGludCBfX2luZGV4KQogIF9fY29uc3RhbnRfcmFuZ2UoX19pbmRleCwgMCwgMykgewogIF9fdmVjW19faW5kZXhdID0gKihjb25zdCB1bnNpZ25lZCBpbnQgKikoCiAgICAoY29uc3QgY2hhciAqKV9fcHRyICsgX19vZmZzZXRbX19pbmRleF0pOwogIHJldHVybiBfX3ZlYzsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19nYXRoZXJfZWxlbWVudChfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX192ZWMsCiAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19vZmZzZXQsCiAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgKl9fcHRyLCBpbnQgX19pbmRleCkKICBfX2NvbnN0YW50X3JhbmdlKF9faW5kZXgsIDAsIDMpIHsKICBfX3ZlY1tfX2luZGV4XSA9ICooY29uc3QgdW5zaWduZWQgaW50ICopKAogICAgKGNvbnN0IGNoYXIgKilfX3B0ciArIF9fb2Zmc2V0W19faW5kZXhdKTsKICByZXR1cm4gX192ZWM7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcKdmVjX2dhdGhlcl9lbGVtZW50KF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX192ZWMsCiAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19vZmZzZXQsCiAgICAgICAgICAgICAgICAgICBjb25zdCBzaWduZWQgbG9uZyBsb25nICpfX3B0ciwgaW50IF9faW5kZXgpCiAgX19jb25zdGFudF9yYW5nZShfX2luZGV4LCAwLCAxKSB7CiAgX192ZWNbX19pbmRleF0gPSAqKGNvbnN0IHNpZ25lZCBsb25nIGxvbmcgKikoCiAgICAoY29uc3QgY2hhciAqKV9fcHRyICsgX19vZmZzZXRbX19pbmRleF0pOwogIHJldHVybiBfX3ZlYzsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZwp2ZWNfZ2F0aGVyX2VsZW1lbnQoX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZyBfX3ZlYywKICAgICAgICAgICAgICAgICAgIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX29mZnNldCwKICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyAqX19wdHIsIGludCBfX2luZGV4KQogIF9fY29uc3RhbnRfcmFuZ2UoX19pbmRleCwgMCwgMSkgewogIF9fdmVjW19faW5kZXhdID0gKihjb25zdCB1bnNpZ25lZCBsb25nIGxvbmcgKikoCiAgICAoY29uc3QgY2hhciAqKV9fcHRyICsgX19vZmZzZXRbX19pbmRleF0pOwogIHJldHVybiBfX3ZlYzsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nCnZlY19nYXRoZXJfZWxlbWVudChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX192ZWMsCiAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19vZmZzZXQsCiAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBsb25nIGxvbmcgKl9fcHRyLCBpbnQgX19pbmRleCkKICBfX2NvbnN0YW50X3JhbmdlKF9faW5kZXgsIDAsIDEpIHsKICBfX3ZlY1tfX2luZGV4XSA9ICooY29uc3QgdW5zaWduZWQgbG9uZyBsb25nICopKAogICAgKGNvbnN0IGNoYXIgKilfX3B0ciArIF9fb2Zmc2V0W19faW5kZXhdKTsKICByZXR1cm4gX192ZWM7Cn0KCiNpZiBfX0FSQ0hfXyA+PSAxMgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBmbG9hdAp2ZWNfZ2F0aGVyX2VsZW1lbnQoX192ZWN0b3IgZmxvYXQgX192ZWMsCiAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19vZmZzZXQsCiAgICAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCAqX19wdHIsIGludCBfX2luZGV4KQogIF9fY29uc3RhbnRfcmFuZ2UoX19pbmRleCwgMCwgMykgewogIF9fdmVjW19faW5kZXhdID0gKihjb25zdCBmbG9hdCAqKSgKICAgIChjb25zdCBjaGFyICopX19wdHIgKyBfX29mZnNldFtfX2luZGV4XSk7CiAgcmV0dXJuIF9fdmVjOwp9CiNlbmRpZgoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgZG91YmxlCnZlY19nYXRoZXJfZWxlbWVudChfX3ZlY3RvciBkb3VibGUgX192ZWMsCiAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19vZmZzZXQsCiAgICAgICAgICAgICAgICAgICBjb25zdCBkb3VibGUgKl9fcHRyLCBpbnQgX19pbmRleCkKICBfX2NvbnN0YW50X3JhbmdlKF9faW5kZXgsIDAsIDEpIHsKICBfX3ZlY1tfX2luZGV4XSA9ICooY29uc3QgZG91YmxlICopKAogICAgKGNvbnN0IGNoYXIgKilfX3B0ciArIF9fb2Zmc2V0W19faW5kZXhdKTsKICByZXR1cm4gX192ZWM7Cn0KCi8qLS0gdmVjX3NjYXR0ZXJfZWxlbWVudCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIHZvaWQKdmVjX3NjYXR0ZXJfZWxlbWVudChfX3ZlY3RvciBzaWduZWQgaW50IF9fdmVjLAogICAgICAgICAgICAgICAgICAgIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX29mZnNldCwKICAgICAgICAgICAgICAgICAgICBzaWduZWQgaW50ICpfX3B0ciwgaW50IF9faW5kZXgpCiAgX19jb25zdGFudF9yYW5nZShfX2luZGV4LCAwLCAzKSB7CiAgKihzaWduZWQgaW50ICopKChjaGFyICopX19wdHIgKyBfX29mZnNldFtfX2luZGV4XSkgPQogICAgX192ZWNbX19pbmRleF07Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIHZvaWQKdmVjX3NjYXR0ZXJfZWxlbWVudChfX3ZlY3RvciBfX2Jvb2wgaW50IF9fdmVjLAogICAgICAgICAgICAgICAgICAgIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX29mZnNldCwKICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKl9fcHRyLCBpbnQgX19pbmRleCkKICBfX2NvbnN0YW50X3JhbmdlKF9faW5kZXgsIDAsIDMpIHsKICAqKHVuc2lnbmVkIGludCAqKSgoY2hhciAqKV9fcHRyICsgX19vZmZzZXRbX19pbmRleF0pID0KICAgIF9fdmVjW19faW5kZXhdOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSB2b2lkCnZlY19zY2F0dGVyX2VsZW1lbnQoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fdmVjLAogICAgICAgICAgICAgICAgICAgIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX29mZnNldCwKICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKl9fcHRyLCBpbnQgX19pbmRleCkKICBfX2NvbnN0YW50X3JhbmdlKF9faW5kZXgsIDAsIDMpIHsKICAqKHVuc2lnbmVkIGludCAqKSgoY2hhciAqKV9fcHRyICsgX19vZmZzZXRbX19pbmRleF0pID0KICAgIF9fdmVjW19faW5kZXhdOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSB2b2lkCnZlY19zY2F0dGVyX2VsZW1lbnQoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX3ZlYywKICAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19vZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgc2lnbmVkIGxvbmcgbG9uZyAqX19wdHIsIGludCBfX2luZGV4KQogIF9fY29uc3RhbnRfcmFuZ2UoX19pbmRleCwgMCwgMSkgewogICooc2lnbmVkIGxvbmcgbG9uZyAqKSgoY2hhciAqKV9fcHRyICsgX19vZmZzZXRbX19pbmRleF0pID0KICAgIF9fdmVjW19faW5kZXhdOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSB2b2lkCnZlY19zY2F0dGVyX2VsZW1lbnQoX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZyBfX3ZlYywKICAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19vZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nICpfX3B0ciwgaW50IF9faW5kZXgpCiAgX19jb25zdGFudF9yYW5nZShfX2luZGV4LCAwLCAxKSB7CiAgKih1bnNpZ25lZCBsb25nIGxvbmcgKikoKGNoYXIgKilfX3B0ciArIF9fb2Zmc2V0W19faW5kZXhdKSA9CiAgICBfX3ZlY1tfX2luZGV4XTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgdm9pZAp2ZWNfc2NhdHRlcl9lbGVtZW50KF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3ZlYywKICAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19vZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nICpfX3B0ciwgaW50IF9faW5kZXgpCiAgX19jb25zdGFudF9yYW5nZShfX2luZGV4LCAwLCAxKSB7CiAgKih1bnNpZ25lZCBsb25nIGxvbmcgKikoKGNoYXIgKilfX3B0ciArIF9fb2Zmc2V0W19faW5kZXhdKSA9CiAgICBfX3ZlY1tfX2luZGV4XTsKfQoKI2lmIF9fQVJDSF9fID49IDEyCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIHZvaWQKdmVjX3NjYXR0ZXJfZWxlbWVudChfX3ZlY3RvciBmbG9hdCBfX3ZlYywKICAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19vZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgZmxvYXQgKl9fcHRyLCBpbnQgX19pbmRleCkKICBfX2NvbnN0YW50X3JhbmdlKF9faW5kZXgsIDAsIDMpIHsKICAqKGZsb2F0ICopKChjaGFyICopX19wdHIgKyBfX29mZnNldFtfX2luZGV4XSkgPQogICAgX192ZWNbX19pbmRleF07Cn0KI2VuZGlmCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSB2b2lkCnZlY19zY2F0dGVyX2VsZW1lbnQoX192ZWN0b3IgZG91YmxlIF9fdmVjLAogICAgICAgICAgICAgICAgICAgIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX29mZnNldCwKICAgICAgICAgICAgICAgICAgICBkb3VibGUgKl9fcHRyLCBpbnQgX19pbmRleCkKICBfX2NvbnN0YW50X3JhbmdlKF9faW5kZXgsIDAsIDEpIHsKICAqKGRvdWJsZSAqKSgoY2hhciAqKV9fcHRyICsgX19vZmZzZXRbX19pbmRleF0pID0KICAgIF9fdmVjW19faW5kZXhdOwp9CgovKi0tIHZlY194bCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgY2hhcgp2ZWNfeGwobG9uZyBfX29mZnNldCwgY29uc3Qgc2lnbmVkIGNoYXIgKl9fcHRyKSB7CiAgX192ZWN0b3Igc2lnbmVkIGNoYXIgVjsKICBfX2J1aWx0aW5fbWVtY3B5KCZWLCAoKGNvbnN0IGNoYXIgKilfX3B0ciArIF9fb2Zmc2V0KSwKICAgICAgICAgICAgICAgICAgIHNpemVvZihfX3ZlY3RvciBzaWduZWQgY2hhcikpOwogIHJldHVybiBWOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY194bChsb25nIF9fb2Zmc2V0LCBjb25zdCB1bnNpZ25lZCBjaGFyICpfX3B0cikgewogIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgVjsKICBfX2J1aWx0aW5fbWVtY3B5KCZWLCAoKGNvbnN0IGNoYXIgKilfX3B0ciArIF9fb2Zmc2V0KSwKICAgICAgICAgICAgICAgICAgIHNpemVvZihfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKSk7CiAgcmV0dXJuIFY7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBzaG9ydAp2ZWNfeGwobG9uZyBfX29mZnNldCwgY29uc3Qgc2lnbmVkIHNob3J0ICpfX3B0cikgewogIF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBWOwogIF9fYnVpbHRpbl9tZW1jcHkoJlYsICgoY29uc3QgY2hhciAqKV9fcHRyICsgX19vZmZzZXQpLAogICAgICAgICAgICAgICAgICAgc2l6ZW9mKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCkpOwogIHJldHVybiBWOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydAp2ZWNfeGwobG9uZyBfX29mZnNldCwgY29uc3QgdW5zaWduZWQgc2hvcnQgKl9fcHRyKSB7CiAgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgVjsKICBfX2J1aWx0aW5fbWVtY3B5KCZWLCAoKGNvbnN0IGNoYXIgKilfX3B0ciArIF9fb2Zmc2V0KSwKICAgICAgICAgICAgICAgICAgIHNpemVvZihfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCkpOwogIHJldHVybiBWOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgaW50CnZlY194bChsb25nIF9fb2Zmc2V0LCBjb25zdCBzaWduZWQgaW50ICpfX3B0cikgewogIF9fdmVjdG9yIHNpZ25lZCBpbnQgVjsKICBfX2J1aWx0aW5fbWVtY3B5KCZWLCAoKGNvbnN0IGNoYXIgKilfX3B0ciArIF9fb2Zmc2V0KSwKICAgICAgICAgICAgICAgICAgIHNpemVvZihfX3ZlY3RvciBzaWduZWQgaW50KSk7CiAgcmV0dXJuIFY7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGludAp2ZWNfeGwobG9uZyBfX29mZnNldCwgY29uc3QgdW5zaWduZWQgaW50ICpfX3B0cikgewogIF9fdmVjdG9yIHVuc2lnbmVkIGludCBWOwogIF9fYnVpbHRpbl9tZW1jcHkoJlYsICgoY29uc3QgY2hhciAqKV9fcHRyICsgX19vZmZzZXQpLAogICAgICAgICAgICAgICAgICAgc2l6ZW9mKF9fdmVjdG9yIHVuc2lnbmVkIGludCkpOwogIHJldHVybiBWOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nCnZlY194bChsb25nIF9fb2Zmc2V0LCBjb25zdCBzaWduZWQgbG9uZyBsb25nICpfX3B0cikgewogIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgVjsKICBfX2J1aWx0aW5fbWVtY3B5KCZWLCAoKGNvbnN0IGNoYXIgKilfX3B0ciArIF9fb2Zmc2V0KSwKICAgICAgICAgICAgICAgICAgIHNpemVvZihfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nKSk7CiAgcmV0dXJuIFY7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZwp2ZWNfeGwobG9uZyBfX29mZnNldCwgY29uc3QgdW5zaWduZWQgbG9uZyBsb25nICpfX3B0cikgewogIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBWOwogIF9fYnVpbHRpbl9tZW1jcHkoJlYsICgoY29uc3QgY2hhciAqKV9fcHRyICsgX19vZmZzZXQpLAogICAgICAgICAgICAgICAgICAgc2l6ZW9mKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZykpOwogIHJldHVybiBWOwp9CgojaWYgX19BUkNIX18gPj0gMTIKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgZmxvYXQKdmVjX3hsKGxvbmcgX19vZmZzZXQsIGNvbnN0IGZsb2F0ICpfX3B0cikgewogIF9fdmVjdG9yIGZsb2F0IFY7CiAgX19idWlsdGluX21lbWNweSgmViwgKChjb25zdCBjaGFyICopX19wdHIgKyBfX29mZnNldCksCiAgICAgICAgICAgICAgICAgICBzaXplb2YoX192ZWN0b3IgZmxvYXQpKTsKICByZXR1cm4gVjsKfQojZW5kaWYKCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIGRvdWJsZQp2ZWNfeGwobG9uZyBfX29mZnNldCwgY29uc3QgZG91YmxlICpfX3B0cikgewogIF9fdmVjdG9yIGRvdWJsZSBWOwogIF9fYnVpbHRpbl9tZW1jcHkoJlYsICgoY29uc3QgY2hhciAqKV9fcHRyICsgX19vZmZzZXQpLAogICAgICAgICAgICAgICAgICAgc2l6ZW9mKF9fdmVjdG9yIGRvdWJsZSkpOwogIHJldHVybiBWOwp9CgovKi0tIHZlY194bGQyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgY2hhcgp2ZWNfeGxkMihsb25nIF9fb2Zmc2V0LCBjb25zdCBzaWduZWQgY2hhciAqX19wdHIpIHsKICBfX3ZlY3RvciBzaWduZWQgY2hhciBWOwogIF9fYnVpbHRpbl9tZW1jcHkoJlYsICgoY29uc3QgY2hhciAqKV9fcHRyICsgX19vZmZzZXQpLAogICAgICAgICAgICAgICAgICAgc2l6ZW9mKF9fdmVjdG9yIHNpZ25lZCBjaGFyKSk7CiAgcmV0dXJuIFY7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIKdmVjX3hsZDIobG9uZyBfX29mZnNldCwgY29uc3QgdW5zaWduZWQgY2hhciAqX19wdHIpIHsKICBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIFY7CiAgX19idWlsdGluX21lbWNweSgmViwgKChjb25zdCBjaGFyICopX19wdHIgKyBfX29mZnNldCksCiAgICAgICAgICAgICAgICAgICBzaXplb2YoX192ZWN0b3IgdW5zaWduZWQgY2hhcikpOwogIHJldHVybiBWOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgc2hvcnQKdmVjX3hsZDIobG9uZyBfX29mZnNldCwgY29uc3Qgc2lnbmVkIHNob3J0ICpfX3B0cikgewogIF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBWOwogIF9fYnVpbHRpbl9tZW1jcHkoJlYsICgoY29uc3QgY2hhciAqKV9fcHRyICsgX19vZmZzZXQpLAogICAgICAgICAgICAgICAgICAgc2l6ZW9mKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCkpOwogIHJldHVybiBWOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydAp2ZWNfeGxkMihsb25nIF9fb2Zmc2V0LCBjb25zdCB1bnNpZ25lZCBzaG9ydCAqX19wdHIpIHsKICBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBWOwogIF9fYnVpbHRpbl9tZW1jcHkoJlYsICgoY29uc3QgY2hhciAqKV9fcHRyICsgX19vZmZzZXQpLAogICAgICAgICAgICAgICAgICAgc2l6ZW9mKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KSk7CiAgcmV0dXJuIFY7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBpbnQKdmVjX3hsZDIobG9uZyBfX29mZnNldCwgY29uc3Qgc2lnbmVkIGludCAqX19wdHIpIHsKICBfX3ZlY3RvciBzaWduZWQgaW50IFY7CiAgX19idWlsdGluX21lbWNweSgmViwgKChjb25zdCBjaGFyICopX19wdHIgKyBfX29mZnNldCksCiAgICAgICAgICAgICAgICAgICBzaXplb2YoX192ZWN0b3Igc2lnbmVkIGludCkpOwogIHJldHVybiBWOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBpbnQKdmVjX3hsZDIobG9uZyBfX29mZnNldCwgY29uc3QgdW5zaWduZWQgaW50ICpfX3B0cikgewogIF9fdmVjdG9yIHVuc2lnbmVkIGludCBWOwogIF9fYnVpbHRpbl9tZW1jcHkoJlYsICgoY29uc3QgY2hhciAqKV9fcHRyICsgX19vZmZzZXQpLAogICAgICAgICAgICAgICAgICAgc2l6ZW9mKF9fdmVjdG9yIHVuc2lnbmVkIGludCkpOwogIHJldHVybiBWOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nCnZlY194bGQyKGxvbmcgX19vZmZzZXQsIGNvbnN0IHNpZ25lZCBsb25nIGxvbmcgKl9fcHRyKSB7CiAgX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBWOwogIF9fYnVpbHRpbl9tZW1jcHkoJlYsICgoY29uc3QgY2hhciAqKV9fcHRyICsgX19vZmZzZXQpLAogICAgICAgICAgICAgICAgICAgc2l6ZW9mKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpKTsKICByZXR1cm4gVjsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nCnZlY194bGQyKGxvbmcgX19vZmZzZXQsIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyAqX19wdHIpIHsKICBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgVjsKICBfX2J1aWx0aW5fbWVtY3B5KCZWLCAoKGNvbnN0IGNoYXIgKilfX3B0ciArIF9fb2Zmc2V0KSwKICAgICAgICAgICAgICAgICAgIHNpemVvZihfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpKTsKICByZXR1cm4gVjsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgZG91YmxlCnZlY194bGQyKGxvbmcgX19vZmZzZXQsIGNvbnN0IGRvdWJsZSAqX19wdHIpIHsKICBfX3ZlY3RvciBkb3VibGUgVjsKICBfX2J1aWx0aW5fbWVtY3B5KCZWLCAoKGNvbnN0IGNoYXIgKilfX3B0ciArIF9fb2Zmc2V0KSwKICAgICAgICAgICAgICAgICAgIHNpemVvZihfX3ZlY3RvciBkb3VibGUpKTsKICByZXR1cm4gVjsKfQoKLyotLSB2ZWNfeGx3NCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGNoYXIKdmVjX3hsdzQobG9uZyBfX29mZnNldCwgY29uc3Qgc2lnbmVkIGNoYXIgKl9fcHRyKSB7CiAgX192ZWN0b3Igc2lnbmVkIGNoYXIgVjsKICBfX2J1aWx0aW5fbWVtY3B5KCZWLCAoKGNvbnN0IGNoYXIgKilfX3B0ciArIF9fb2Zmc2V0KSwKICAgICAgICAgICAgICAgICAgIHNpemVvZihfX3ZlY3RvciBzaWduZWQgY2hhcikpOwogIHJldHVybiBWOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY194bHc0KGxvbmcgX19vZmZzZXQsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKl9fcHRyKSB7CiAgX192ZWN0b3IgdW5zaWduZWQgY2hhciBWOwogIF9fYnVpbHRpbl9tZW1jcHkoJlYsICgoY29uc3QgY2hhciAqKV9fcHRyICsgX19vZmZzZXQpLAogICAgICAgICAgICAgICAgICAgc2l6ZW9mKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpKTsKICByZXR1cm4gVjsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIHNob3J0CnZlY194bHc0KGxvbmcgX19vZmZzZXQsIGNvbnN0IHNpZ25lZCBzaG9ydCAqX19wdHIpIHsKICBfX3ZlY3RvciBzaWduZWQgc2hvcnQgVjsKICBfX2J1aWx0aW5fbWVtY3B5KCZWLCAoKGNvbnN0IGNoYXIgKilfX3B0ciArIF9fb2Zmc2V0KSwKICAgICAgICAgICAgICAgICAgIHNpemVvZihfX3ZlY3RvciBzaWduZWQgc2hvcnQpKTsKICByZXR1cm4gVjsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX3hsdzQobG9uZyBfX29mZnNldCwgY29uc3QgdW5zaWduZWQgc2hvcnQgKl9fcHRyKSB7CiAgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgVjsKICBfX2J1aWx0aW5fbWVtY3B5KCZWLCAoKGNvbnN0IGNoYXIgKilfX3B0ciArIF9fb2Zmc2V0KSwKICAgICAgICAgICAgICAgICAgIHNpemVvZihfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCkpOwogIHJldHVybiBWOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgaW50CnZlY194bHc0KGxvbmcgX19vZmZzZXQsIGNvbnN0IHNpZ25lZCBpbnQgKl9fcHRyKSB7CiAgX192ZWN0b3Igc2lnbmVkIGludCBWOwogIF9fYnVpbHRpbl9tZW1jcHkoJlYsICgoY29uc3QgY2hhciAqKV9fcHRyICsgX19vZmZzZXQpLAogICAgICAgICAgICAgICAgICAgc2l6ZW9mKF9fdmVjdG9yIHNpZ25lZCBpbnQpKTsKICByZXR1cm4gVjsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY194bHc0KGxvbmcgX19vZmZzZXQsIGNvbnN0IHVuc2lnbmVkIGludCAqX19wdHIpIHsKICBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgVjsKICBfX2J1aWx0aW5fbWVtY3B5KCZWLCAoKGNvbnN0IGNoYXIgKilfX3B0ciArIF9fb2Zmc2V0KSwKICAgICAgICAgICAgICAgICAgIHNpemVvZihfX3ZlY3RvciB1bnNpZ25lZCBpbnQpKTsKICByZXR1cm4gVjsKfQoKLyotLSB2ZWNfeHN0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgdm9pZAp2ZWNfeHN0KF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fdmVjLCBsb25nIF9fb2Zmc2V0LCBzaWduZWQgY2hhciAqX19wdHIpIHsKICBfX3ZlY3RvciBzaWduZWQgY2hhciBWID0gX192ZWM7CiAgX19idWlsdGluX21lbWNweSgoKGNoYXIgKilfX3B0ciArIF9fb2Zmc2V0KSwgJlYsCiAgICAgICAgICAgICAgICAgICBzaXplb2YoX192ZWN0b3Igc2lnbmVkIGNoYXIpKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgdm9pZAp2ZWNfeHN0KF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX192ZWMsIGxvbmcgX19vZmZzZXQsIHVuc2lnbmVkIGNoYXIgKl9fcHRyKSB7CiAgX192ZWN0b3IgdW5zaWduZWQgY2hhciBWID0gX192ZWM7CiAgX19idWlsdGluX21lbWNweSgoKGNoYXIgKilfX3B0ciArIF9fb2Zmc2V0KSwgJlYsCiAgICAgICAgICAgICAgICAgICBzaXplb2YoX192ZWN0b3IgdW5zaWduZWQgY2hhcikpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSB2b2lkCnZlY194c3QoX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fdmVjLCBsb25nIF9fb2Zmc2V0LCBzaWduZWQgc2hvcnQgKl9fcHRyKSB7CiAgX192ZWN0b3Igc2lnbmVkIHNob3J0IFYgPSBfX3ZlYzsKICBfX2J1aWx0aW5fbWVtY3B5KCgoY2hhciAqKV9fcHRyICsgX19vZmZzZXQpLCAmViwKICAgICAgICAgICAgICAgICAgIHNpemVvZihfX3ZlY3RvciBzaWduZWQgc2hvcnQpKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgdm9pZAp2ZWNfeHN0KF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fdmVjLCBsb25nIF9fb2Zmc2V0LCB1bnNpZ25lZCBzaG9ydCAqX19wdHIpIHsKICBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBWID0gX192ZWM7CiAgX19idWlsdGluX21lbWNweSgoKGNoYXIgKilfX3B0ciArIF9fb2Zmc2V0KSwgJlYsCiAgICAgICAgICAgICAgICAgICBzaXplb2YoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgdm9pZAp2ZWNfeHN0KF9fdmVjdG9yIHNpZ25lZCBpbnQgX192ZWMsIGxvbmcgX19vZmZzZXQsIHNpZ25lZCBpbnQgKl9fcHRyKSB7CiAgX192ZWN0b3Igc2lnbmVkIGludCBWID0gX192ZWM7CiAgX19idWlsdGluX21lbWNweSgoKGNoYXIgKilfX3B0ciArIF9fb2Zmc2V0KSwgJlYsIHNpemVvZihfX3ZlY3RvciBzaWduZWQgaW50KSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIHZvaWQKdmVjX3hzdChfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX192ZWMsIGxvbmcgX19vZmZzZXQsIHVuc2lnbmVkIGludCAqX19wdHIpIHsKICBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgViA9IF9fdmVjOwogIF9fYnVpbHRpbl9tZW1jcHkoKChjaGFyICopX19wdHIgKyBfX29mZnNldCksICZWLAogICAgICAgICAgICAgICAgICAgc2l6ZW9mKF9fdmVjdG9yIHVuc2lnbmVkIGludCkpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSB2b2lkCnZlY194c3QoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX3ZlYywgbG9uZyBfX29mZnNldCwKICAgICAgICBzaWduZWQgbG9uZyBsb25nICpfX3B0cikgewogIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgViA9IF9fdmVjOwogIF9fYnVpbHRpbl9tZW1jcHkoKChjaGFyICopX19wdHIgKyBfX29mZnNldCksICZWLAogICAgICAgICAgICAgICAgICAgc2l6ZW9mKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgdm9pZAp2ZWNfeHN0KF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3ZlYywgbG9uZyBfX29mZnNldCwKICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgKl9fcHRyKSB7CiAgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIFYgPSBfX3ZlYzsKICBfX2J1aWx0aW5fbWVtY3B5KCgoY2hhciAqKV9fcHRyICsgX19vZmZzZXQpLCAmViwKICAgICAgICAgICAgICAgICAgIHNpemVvZihfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpKTsKfQoKI2lmIF9fQVJDSF9fID49IDEyCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIHZvaWQKdmVjX3hzdChfX3ZlY3RvciBmbG9hdCBfX3ZlYywgbG9uZyBfX29mZnNldCwgZmxvYXQgKl9fcHRyKSB7CiAgX192ZWN0b3IgZmxvYXQgViA9IF9fdmVjOwogIF9fYnVpbHRpbl9tZW1jcHkoKChjaGFyICopX19wdHIgKyBfX29mZnNldCksICZWLCBzaXplb2YoX192ZWN0b3IgZmxvYXQpKTsKfQojZW5kaWYKCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIHZvaWQKdmVjX3hzdChfX3ZlY3RvciBkb3VibGUgX192ZWMsIGxvbmcgX19vZmZzZXQsIGRvdWJsZSAqX19wdHIpIHsKICBfX3ZlY3RvciBkb3VibGUgViA9IF9fdmVjOwogIF9fYnVpbHRpbl9tZW1jcHkoKChjaGFyICopX19wdHIgKyBfX29mZnNldCksICZWLCBzaXplb2YoX192ZWN0b3IgZG91YmxlKSk7Cn0KCi8qLS0gdmVjX3hzdGQyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIHZvaWQKdmVjX3hzdGQyKF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fdmVjLCBsb25nIF9fb2Zmc2V0LCBzaWduZWQgY2hhciAqX19wdHIpIHsKICBfX3ZlY3RvciBzaWduZWQgY2hhciBWID0gX192ZWM7CiAgX19idWlsdGluX21lbWNweSgoKGNoYXIgKilfX3B0ciArIF9fb2Zmc2V0KSwgJlYsCiAgICAgICAgICAgICAgICAgICBzaXplb2YoX192ZWN0b3Igc2lnbmVkIGNoYXIpKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgdm9pZAp2ZWNfeHN0ZDIoX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX3ZlYywgbG9uZyBfX29mZnNldCwgdW5zaWduZWQgY2hhciAqX19wdHIpIHsKICBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIFYgPSBfX3ZlYzsKICBfX2J1aWx0aW5fbWVtY3B5KCgoY2hhciAqKV9fcHRyICsgX19vZmZzZXQpLCAmViwKICAgICAgICAgICAgICAgICAgIHNpemVvZihfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKSk7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIHZvaWQKdmVjX3hzdGQyKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX3ZlYywgbG9uZyBfX29mZnNldCwgc2lnbmVkIHNob3J0ICpfX3B0cikgewogIF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBWID0gX192ZWM7CiAgX19idWlsdGluX21lbWNweSgoKGNoYXIgKilfX3B0ciArIF9fb2Zmc2V0KSwgJlYsCiAgICAgICAgICAgICAgICAgICBzaXplb2YoX192ZWN0b3Igc2lnbmVkIHNob3J0KSk7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIHZvaWQKdmVjX3hzdGQyKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fdmVjLCBsb25nIF9fb2Zmc2V0LCB1bnNpZ25lZCBzaG9ydCAqX19wdHIpIHsKICBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBWID0gX192ZWM7CiAgX19idWlsdGluX21lbWNweSgoKGNoYXIgKilfX3B0ciArIF9fb2Zmc2V0KSwgJlYsCiAgICAgICAgICAgICAgICAgICBzaXplb2YoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgdm9pZAp2ZWNfeHN0ZDIoX192ZWN0b3Igc2lnbmVkIGludCBfX3ZlYywgbG9uZyBfX29mZnNldCwgc2lnbmVkIGludCAqX19wdHIpIHsKICBfX3ZlY3RvciBzaWduZWQgaW50IFYgPSBfX3ZlYzsKICBfX2J1aWx0aW5fbWVtY3B5KCgoY2hhciAqKV9fcHRyICsgX19vZmZzZXQpLCAmViwgc2l6ZW9mKF9fdmVjdG9yIHNpZ25lZCBpbnQpKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgdm9pZAp2ZWNfeHN0ZDIoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fdmVjLCBsb25nIF9fb2Zmc2V0LCB1bnNpZ25lZCBpbnQgKl9fcHRyKSB7CiAgX192ZWN0b3IgdW5zaWduZWQgaW50IFYgPSBfX3ZlYzsKICBfX2J1aWx0aW5fbWVtY3B5KCgoY2hhciAqKV9fcHRyICsgX19vZmZzZXQpLCAmViwKICAgICAgICAgICAgICAgICAgIHNpemVvZihfX3ZlY3RvciB1bnNpZ25lZCBpbnQpKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgdm9pZAp2ZWNfeHN0ZDIoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX3ZlYywgbG9uZyBfX29mZnNldCwKICAgICAgICAgIHNpZ25lZCBsb25nIGxvbmcgKl9fcHRyKSB7CiAgX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBWID0gX192ZWM7CiAgX19idWlsdGluX21lbWNweSgoKGNoYXIgKilfX3B0ciArIF9fb2Zmc2V0KSwgJlYsCiAgICAgICAgICAgICAgICAgICBzaXplb2YoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZykpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSB2b2lkCnZlY194c3RkMihfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX192ZWMsIGxvbmcgX19vZmZzZXQsCiAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgKl9fcHRyKSB7CiAgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIFYgPSBfX3ZlYzsKICBfX2J1aWx0aW5fbWVtY3B5KCgoY2hhciAqKV9fcHRyICsgX19vZmZzZXQpLCAmViwKICAgICAgICAgICAgICAgICAgIHNpemVvZihfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgdm9pZAp2ZWNfeHN0ZDIoX192ZWN0b3IgZG91YmxlIF9fdmVjLCBsb25nIF9fb2Zmc2V0LCBkb3VibGUgKl9fcHRyKSB7CiAgX192ZWN0b3IgZG91YmxlIFYgPSBfX3ZlYzsKICBfX2J1aWx0aW5fbWVtY3B5KCgoY2hhciAqKV9fcHRyICsgX19vZmZzZXQpLCAmViwgc2l6ZW9mKF9fdmVjdG9yIGRvdWJsZSkpOwp9CgovKi0tIHZlY194c3R3NCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSB2b2lkCnZlY194c3R3NChfX3ZlY3RvciBzaWduZWQgY2hhciBfX3ZlYywgbG9uZyBfX29mZnNldCwgc2lnbmVkIGNoYXIgKl9fcHRyKSB7CiAgX192ZWN0b3Igc2lnbmVkIGNoYXIgViA9IF9fdmVjOwogIF9fYnVpbHRpbl9tZW1jcHkoKChjaGFyICopX19wdHIgKyBfX29mZnNldCksICZWLAogICAgICAgICAgICAgICAgICAgc2l6ZW9mKF9fdmVjdG9yIHNpZ25lZCBjaGFyKSk7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIHZvaWQKdmVjX3hzdHc0KF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX192ZWMsIGxvbmcgX19vZmZzZXQsIHVuc2lnbmVkIGNoYXIgKl9fcHRyKSB7CiAgX192ZWN0b3IgdW5zaWduZWQgY2hhciBWID0gX192ZWM7CiAgX19idWlsdGluX21lbWNweSgoKGNoYXIgKilfX3B0ciArIF9fb2Zmc2V0KSwgJlYsCiAgICAgICAgICAgICAgICAgICBzaXplb2YoX192ZWN0b3IgdW5zaWduZWQgY2hhcikpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSB2b2lkCnZlY194c3R3NChfX3ZlY3RvciBzaWduZWQgc2hvcnQgX192ZWMsIGxvbmcgX19vZmZzZXQsIHNpZ25lZCBzaG9ydCAqX19wdHIpIHsKICBfX3ZlY3RvciBzaWduZWQgc2hvcnQgViA9IF9fdmVjOwogIF9fYnVpbHRpbl9tZW1jcHkoKChjaGFyICopX19wdHIgKyBfX29mZnNldCksICZWLAogICAgICAgICAgICAgICAgICAgc2l6ZW9mKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCkpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSB2b2lkCnZlY194c3R3NChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX3ZlYywgbG9uZyBfX29mZnNldCwgdW5zaWduZWQgc2hvcnQgKl9fcHRyKSB7CiAgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgViA9IF9fdmVjOwogIF9fYnVpbHRpbl9tZW1jcHkoKChjaGFyICopX19wdHIgKyBfX29mZnNldCksICZWLAogICAgICAgICAgICAgICAgICAgc2l6ZW9mKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KSk7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIHZvaWQKdmVjX3hzdHc0KF9fdmVjdG9yIHNpZ25lZCBpbnQgX192ZWMsIGxvbmcgX19vZmZzZXQsIHNpZ25lZCBpbnQgKl9fcHRyKSB7CiAgX192ZWN0b3Igc2lnbmVkIGludCBWID0gX192ZWM7CiAgX19idWlsdGluX21lbWNweSgoKGNoYXIgKilfX3B0ciArIF9fb2Zmc2V0KSwgJlYsIHNpemVvZihfX3ZlY3RvciBzaWduZWQgaW50KSk7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIHZvaWQKdmVjX3hzdHc0KF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX3ZlYywgbG9uZyBfX29mZnNldCwgdW5zaWduZWQgaW50ICpfX3B0cikgewogIF9fdmVjdG9yIHVuc2lnbmVkIGludCBWID0gX192ZWM7CiAgX19idWlsdGluX21lbWNweSgoKGNoYXIgKilfX3B0ciArIF9fb2Zmc2V0KSwgJlYsCiAgICAgICAgICAgICAgICAgICBzaXplb2YoX192ZWN0b3IgdW5zaWduZWQgaW50KSk7Cn0KCi8qLS0gdmVjX2xvYWRfYm5kcnkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCmV4dGVybiBfX0FUVFJTX28gX192ZWN0b3Igc2lnbmVkIGNoYXIKdmVjX2xvYWRfYm5kcnkoY29uc3Qgc2lnbmVkIGNoYXIgKl9fcHRyLCB1bnNpZ25lZCBzaG9ydCBfX2xlbikKICBfX2NvbnN0YW50X3BvdzJfcmFuZ2UoX19sZW4sIDY0LCA0MDk2KTsKCmV4dGVybiBfX0FUVFJTX28gX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfbG9hZF9ibmRyeShjb25zdCB1bnNpZ25lZCBjaGFyICpfX3B0ciwgdW5zaWduZWQgc2hvcnQgX19sZW4pCiAgX19jb25zdGFudF9wb3cyX3JhbmdlKF9fbGVuLCA2NCwgNDA5Nik7CgpleHRlcm4gX19BVFRSU19vIF9fdmVjdG9yIHNpZ25lZCBzaG9ydAp2ZWNfbG9hZF9ibmRyeShjb25zdCBzaWduZWQgc2hvcnQgKl9fcHRyLCB1bnNpZ25lZCBzaG9ydCBfX2xlbikKICBfX2NvbnN0YW50X3BvdzJfcmFuZ2UoX19sZW4sIDY0LCA0MDk2KTsKCmV4dGVybiBfX0FUVFJTX28gX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX2xvYWRfYm5kcnkoY29uc3QgdW5zaWduZWQgc2hvcnQgKl9fcHRyLCB1bnNpZ25lZCBzaG9ydCBfX2xlbikKICBfX2NvbnN0YW50X3BvdzJfcmFuZ2UoX19sZW4sIDY0LCA0MDk2KTsKCmV4dGVybiBfX0FUVFJTX28gX192ZWN0b3Igc2lnbmVkIGludAp2ZWNfbG9hZF9ibmRyeShjb25zdCBzaWduZWQgaW50ICpfX3B0ciwgdW5zaWduZWQgc2hvcnQgX19sZW4pCiAgX19jb25zdGFudF9wb3cyX3JhbmdlKF9fbGVuLCA2NCwgNDA5Nik7CgpleHRlcm4gX19BVFRSU19vIF9fdmVjdG9yIHVuc2lnbmVkIGludAp2ZWNfbG9hZF9ibmRyeShjb25zdCB1bnNpZ25lZCBpbnQgKl9fcHRyLCB1bnNpZ25lZCBzaG9ydCBfX2xlbikKICBfX2NvbnN0YW50X3BvdzJfcmFuZ2UoX19sZW4sIDY0LCA0MDk2KTsKCmV4dGVybiBfX0FUVFJTX28gX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZwp2ZWNfbG9hZF9ibmRyeShjb25zdCBzaWduZWQgbG9uZyBsb25nICpfX3B0ciwgdW5zaWduZWQgc2hvcnQgX19sZW4pCiAgX19jb25zdGFudF9wb3cyX3JhbmdlKF9fbGVuLCA2NCwgNDA5Nik7CgpleHRlcm4gX19BVFRSU19vIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZwp2ZWNfbG9hZF9ibmRyeShjb25zdCB1bnNpZ25lZCBsb25nIGxvbmcgKl9fcHRyLCB1bnNpZ25lZCBzaG9ydCBfX2xlbikKICBfX2NvbnN0YW50X3BvdzJfcmFuZ2UoX19sZW4sIDY0LCA0MDk2KTsKCiNpZiBfX0FSQ0hfXyA+PSAxMgpleHRlcm4gX19BVFRSU19vIF9fdmVjdG9yIGZsb2F0CnZlY19sb2FkX2JuZHJ5KGNvbnN0IGZsb2F0ICpfX3B0ciwgdW5zaWduZWQgc2hvcnQgX19sZW4pCiAgX19jb25zdGFudF9wb3cyX3JhbmdlKF9fbGVuLCA2NCwgNDA5Nik7CiNlbmRpZgoKZXh0ZXJuIF9fQVRUUlNfbyBfX3ZlY3RvciBkb3VibGUKdmVjX2xvYWRfYm5kcnkoY29uc3QgZG91YmxlICpfX3B0ciwgdW5zaWduZWQgc2hvcnQgX19sZW4pCiAgX19jb25zdGFudF9wb3cyX3JhbmdlKF9fbGVuLCA2NCwgNDA5Nik7CgojZGVmaW5lIHZlY19sb2FkX2JuZHJ5KFgsIFkpICgoX190eXBlb2ZfXygodmVjX2xvYWRfYm5kcnkpKChYKSwgKFkpKSkpIFwKICBfX2J1aWx0aW5fczM5MF92bGJiKChYKSwgKChZKSA9PSA2NCA/IDAgOiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoWSkgPT0gMTI4ID8gMSA6IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChZKSA9PSAyNTYgPyAyIDogXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKFkpID09IDUxMiA/IDMgOiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoWSkgPT0gMTAyNCA/IDQgOiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoWSkgPT0gMjA0OCA/IDUgOiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoWSkgPT0gNDA5NiA/IDYgOiAtMSkpKQoKLyotLSB2ZWNfbG9hZF9sZW4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGNoYXIKdmVjX2xvYWRfbGVuKGNvbnN0IHNpZ25lZCBjaGFyICpfX3B0ciwgdW5zaWduZWQgaW50IF9fbGVuKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgY2hhcilfX2J1aWx0aW5fczM5MF92bGwoX19sZW4sIF9fcHRyKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfbG9hZF9sZW4oY29uc3QgdW5zaWduZWQgY2hhciAqX19wdHIsIHVuc2lnbmVkIGludCBfX2xlbikgewogIHJldHVybiAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2J1aWx0aW5fczM5MF92bGwoX19sZW4sIF9fcHRyKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIHNob3J0CnZlY19sb2FkX2xlbihjb25zdCBzaWduZWQgc2hvcnQgKl9fcHRyLCB1bnNpZ25lZCBpbnQgX19sZW4pIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBzaG9ydClfX2J1aWx0aW5fczM5MF92bGwoX19sZW4sIF9fcHRyKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX2xvYWRfbGVuKGNvbnN0IHVuc2lnbmVkIHNob3J0ICpfX3B0ciwgdW5zaWduZWQgaW50IF9fbGVuKSB7CiAgcmV0dXJuIChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2J1aWx0aW5fczM5MF92bGwoX19sZW4sIF9fcHRyKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGludAp2ZWNfbG9hZF9sZW4oY29uc3Qgc2lnbmVkIGludCAqX19wdHIsIHVuc2lnbmVkIGludCBfX2xlbikgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIGludClfX2J1aWx0aW5fczM5MF92bGwoX19sZW4sIF9fcHRyKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19sb2FkX2xlbihjb25zdCB1bnNpZ25lZCBpbnQgKl9fcHRyLCB1bnNpZ25lZCBpbnQgX19sZW4pIHsKICByZXR1cm4gKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2J1aWx0aW5fczM5MF92bGwoX19sZW4sIF9fcHRyKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZwp2ZWNfbG9hZF9sZW4oY29uc3Qgc2lnbmVkIGxvbmcgbG9uZyAqX19wdHIsIHVuc2lnbmVkIGludCBfX2xlbikgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2J1aWx0aW5fczM5MF92bGwoX19sZW4sIF9fcHRyKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nCnZlY19sb2FkX2xlbihjb25zdCB1bnNpZ25lZCBsb25nIGxvbmcgKl9fcHRyLCB1bnNpZ25lZCBpbnQgX19sZW4pIHsKICByZXR1cm4gKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2J1aWx0aW5fczM5MF92bGwoX19sZW4sIF9fcHRyKTsKfQoKI2lmIF9fQVJDSF9fID49IDEyCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIGZsb2F0CnZlY19sb2FkX2xlbihjb25zdCBmbG9hdCAqX19wdHIsIHVuc2lnbmVkIGludCBfX2xlbikgewogIHJldHVybiAoX192ZWN0b3IgZmxvYXQpX19idWlsdGluX3MzOTBfdmxsKF9fbGVuLCBfX3B0cik7Cn0KI2VuZGlmCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBkb3VibGUKdmVjX2xvYWRfbGVuKGNvbnN0IGRvdWJsZSAqX19wdHIsIHVuc2lnbmVkIGludCBfX2xlbikgewogIHJldHVybiAoX192ZWN0b3IgZG91YmxlKV9fYnVpbHRpbl9zMzkwX3ZsbChfX2xlbiwgX19wdHIpOwp9CgovKi0tIHZlY19sb2FkX2xlbl9yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgojaWYgX19BUkNIX18gPj0gMTIKc3RhdGljIGlubGluZSBfX0FUVFJTX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIKdmVjX2xvYWRfbGVuX3IoY29uc3QgdW5zaWduZWQgY2hhciAqX19wdHIsIHVuc2lnbmVkIGludCBfX2xlbikgewogIHJldHVybiAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2J1aWx0aW5fczM5MF92bHJsKF9fbGVuLCBfX3B0cik7Cn0KI2VuZGlmCgovKi0tIHZlY19zdG9yZV9sZW4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSB2b2lkCnZlY19zdG9yZV9sZW4oX192ZWN0b3Igc2lnbmVkIGNoYXIgX192ZWMsIHNpZ25lZCBjaGFyICpfX3B0ciwKICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19sZW4pIHsKICBfX2J1aWx0aW5fczM5MF92c3RsKChfX3ZlY3RvciBzaWduZWQgY2hhcilfX3ZlYywgX19sZW4sIF9fcHRyKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgdm9pZAp2ZWNfc3RvcmVfbGVuKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX192ZWMsIHVuc2lnbmVkIGNoYXIgKl9fcHRyLAogICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX2xlbikgewogIF9fYnVpbHRpbl9zMzkwX3ZzdGwoKF9fdmVjdG9yIHNpZ25lZCBjaGFyKV9fdmVjLCBfX2xlbiwgX19wdHIpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSB2b2lkCnZlY19zdG9yZV9sZW4oX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fdmVjLCBzaWduZWQgc2hvcnQgKl9fcHRyLAogICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX2xlbikgewogIF9fYnVpbHRpbl9zMzkwX3ZzdGwoKF9fdmVjdG9yIHNpZ25lZCBjaGFyKV9fdmVjLCBfX2xlbiwgX19wdHIpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSB2b2lkCnZlY19zdG9yZV9sZW4oX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX192ZWMsIHVuc2lnbmVkIHNob3J0ICpfX3B0ciwKICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19sZW4pIHsKICBfX2J1aWx0aW5fczM5MF92c3RsKChfX3ZlY3RvciBzaWduZWQgY2hhcilfX3ZlYywgX19sZW4sIF9fcHRyKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgdm9pZAp2ZWNfc3RvcmVfbGVuKF9fdmVjdG9yIHNpZ25lZCBpbnQgX192ZWMsIHNpZ25lZCBpbnQgKl9fcHRyLAogICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX2xlbikgewogIF9fYnVpbHRpbl9zMzkwX3ZzdGwoKF9fdmVjdG9yIHNpZ25lZCBjaGFyKV9fdmVjLCBfX2xlbiwgX19wdHIpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSB2b2lkCnZlY19zdG9yZV9sZW4oX192ZWN0b3IgdW5zaWduZWQgaW50IF9fdmVjLCB1bnNpZ25lZCBpbnQgKl9fcHRyLAogICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX2xlbikgewogIF9fYnVpbHRpbl9zMzkwX3ZzdGwoKF9fdmVjdG9yIHNpZ25lZCBjaGFyKV9fdmVjLCBfX2xlbiwgX19wdHIpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSB2b2lkCnZlY19zdG9yZV9sZW4oX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX3ZlYywgc2lnbmVkIGxvbmcgbG9uZyAqX19wdHIsCiAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fbGVuKSB7CiAgX19idWlsdGluX3MzOTBfdnN0bCgoX192ZWN0b3Igc2lnbmVkIGNoYXIpX192ZWMsIF9fbGVuLCBfX3B0cik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIHZvaWQKdmVjX3N0b3JlX2xlbihfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX192ZWMsIHVuc2lnbmVkIGxvbmcgbG9uZyAqX19wdHIsCiAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fbGVuKSB7CiAgX19idWlsdGluX3MzOTBfdnN0bCgoX192ZWN0b3Igc2lnbmVkIGNoYXIpX192ZWMsIF9fbGVuLCBfX3B0cik7Cn0KCiNpZiBfX0FSQ0hfXyA+PSAxMgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSB2b2lkCnZlY19zdG9yZV9sZW4oX192ZWN0b3IgZmxvYXQgX192ZWMsIGZsb2F0ICpfX3B0ciwKICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19sZW4pIHsKICBfX2J1aWx0aW5fczM5MF92c3RsKChfX3ZlY3RvciBzaWduZWQgY2hhcilfX3ZlYywgX19sZW4sIF9fcHRyKTsKfQojZW5kaWYKCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIHZvaWQKdmVjX3N0b3JlX2xlbihfX3ZlY3RvciBkb3VibGUgX192ZWMsIGRvdWJsZSAqX19wdHIsCiAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fbGVuKSB7CiAgX19idWlsdGluX3MzOTBfdnN0bCgoX192ZWN0b3Igc2lnbmVkIGNoYXIpX192ZWMsIF9fbGVuLCBfX3B0cik7Cn0KCi8qLS0gdmVjX3N0b3JlX2xlbl9yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCiNpZiBfX0FSQ0hfXyA+PSAxMgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfYWkgdm9pZAp2ZWNfc3RvcmVfbGVuX3IoX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX3ZlYywgdW5zaWduZWQgY2hhciAqX19wdHIsCiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19sZW4pIHsKICBfX2J1aWx0aW5fczM5MF92c3RybCgoX192ZWN0b3Igc2lnbmVkIGNoYXIpX192ZWMsIF9fbGVuLCBfX3B0cik7Cn0KI2VuZGlmCgovKi0tIHZlY19sb2FkX3BhaXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nCnZlY19sb2FkX3BhaXIoc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nKShfX2EsIF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZwp2ZWNfbG9hZF9wYWlyKHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZykoX19hLCBfX2IpOwp9CgovKi0tIHZlY19nZW5tYXNrIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19nZW5tYXNrKHVuc2lnbmVkIHNob3J0IF9fbWFzaykKICBfX2NvbnN0YW50KF9fbWFzaykgewogIHJldHVybiAoX192ZWN0b3IgdW5zaWduZWQgY2hhcikoCiAgICBfX21hc2sgJiAweDgwMDAgPyAweGZmIDogMCwKICAgIF9fbWFzayAmIDB4NDAwMCA/IDB4ZmYgOiAwLAogICAgX19tYXNrICYgMHgyMDAwID8gMHhmZiA6IDAsCiAgICBfX21hc2sgJiAweDEwMDAgPyAweGZmIDogMCwKICAgIF9fbWFzayAmIDB4MDgwMCA/IDB4ZmYgOiAwLAogICAgX19tYXNrICYgMHgwNDAwID8gMHhmZiA6IDAsCiAgICBfX21hc2sgJiAweDAyMDAgPyAweGZmIDogMCwKICAgIF9fbWFzayAmIDB4MDEwMCA/IDB4ZmYgOiAwLAogICAgX19tYXNrICYgMHgwMDgwID8gMHhmZiA6IDAsCiAgICBfX21hc2sgJiAweDAwNDAgPyAweGZmIDogMCwKICAgIF9fbWFzayAmIDB4MDAyMCA/IDB4ZmYgOiAwLAogICAgX19tYXNrICYgMHgwMDEwID8gMHhmZiA6IDAsCiAgICBfX21hc2sgJiAweDAwMDggPyAweGZmIDogMCwKICAgIF9fbWFzayAmIDB4MDAwNCA/IDB4ZmYgOiAwLAogICAgX19tYXNrICYgMHgwMDAyID8gMHhmZiA6IDAsCiAgICBfX21hc2sgJiAweDAwMDEgPyAweGZmIDogMCk7Cn0KCi8qLS0gdmVjX2dlbm1hc2tzXyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIKdmVjX2dlbm1hc2tzXzgodW5zaWduZWQgY2hhciBfX2ZpcnN0LCB1bnNpZ25lZCBjaGFyIF9fbGFzdCkKICBfX2NvbnN0YW50KF9fZmlyc3QpIF9fY29uc3RhbnQoX19sYXN0KSB7CiAgdW5zaWduZWQgY2hhciBfX2JpdDEgPSBfX2ZpcnN0ICYgNzsKICB1bnNpZ25lZCBjaGFyIF9fYml0MiA9IF9fbGFzdCAmIDc7CiAgdW5zaWduZWQgY2hhciBfX21hc2sxID0gKHVuc2lnbmVkIGNoYXIpKDFVIDw8ICg3IC0gX19iaXQxKSA8PCAxKSAtIDE7CiAgdW5zaWduZWQgY2hhciBfX21hc2syID0gKHVuc2lnbmVkIGNoYXIpKDFVIDw8ICg3IC0gX19iaXQyKSkgLSAxOwogIHVuc2lnbmVkIGNoYXIgX192YWx1ZSA9IChfX2JpdDEgPD0gX19iaXQyID8KICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tYXNrMSAmIH5fX21hc2syIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tYXNrMSB8IH5fX21hc2syKTsKICByZXR1cm4gKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX192YWx1ZTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX2dlbm1hc2tzXzE2KHVuc2lnbmVkIGNoYXIgX19maXJzdCwgdW5zaWduZWQgY2hhciBfX2xhc3QpCiAgX19jb25zdGFudChfX2ZpcnN0KSBfX2NvbnN0YW50KF9fbGFzdCkgewogIHVuc2lnbmVkIGNoYXIgX19iaXQxID0gX19maXJzdCAmIDE1OwogIHVuc2lnbmVkIGNoYXIgX19iaXQyID0gX19sYXN0ICYgMTU7CiAgdW5zaWduZWQgc2hvcnQgX19tYXNrMSA9ICh1bnNpZ25lZCBzaG9ydCkoMVUgPDwgKDE1IC0gX19iaXQxKSA8PCAxKSAtIDE7CiAgdW5zaWduZWQgc2hvcnQgX19tYXNrMiA9ICh1bnNpZ25lZCBzaG9ydCkoMVUgPDwgKDE1IC0gX19iaXQyKSkgLSAxOwogIHVuc2lnbmVkIHNob3J0IF9fdmFsdWUgPSAoX19iaXQxIDw9IF9fYml0MiA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX21hc2sxICYgfl9fbWFzazIgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tYXNrMSB8IH5fX21hc2syKTsKICByZXR1cm4gKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fdmFsdWU7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGludAp2ZWNfZ2VubWFza3NfMzIodW5zaWduZWQgY2hhciBfX2ZpcnN0LCB1bnNpZ25lZCBjaGFyIF9fbGFzdCkKICBfX2NvbnN0YW50KF9fZmlyc3QpIF9fY29uc3RhbnQoX19sYXN0KSB7CiAgdW5zaWduZWQgY2hhciBfX2JpdDEgPSBfX2ZpcnN0ICYgMzE7CiAgdW5zaWduZWQgY2hhciBfX2JpdDIgPSBfX2xhc3QgJiAzMTsKICB1bnNpZ25lZCBpbnQgX19tYXNrMSA9ICgxVSA8PCAoMzEgLSBfX2JpdDEpIDw8IDEpIC0gMTsKICB1bnNpZ25lZCBpbnQgX19tYXNrMiA9ICgxVSA8PCAoMzEgLSBfX2JpdDIpKSAtIDE7CiAgdW5zaWduZWQgaW50IF9fdmFsdWUgPSAoX19iaXQxIDw9IF9fYml0MiA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgX19tYXNrMSAmIH5fX21hc2syIDoKICAgICAgICAgICAgICAgICAgICAgICAgICBfX21hc2sxIHwgfl9fbWFzazIpOwogIHJldHVybiAoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fdmFsdWU7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZwp2ZWNfZ2VubWFza3NfNjQodW5zaWduZWQgY2hhciBfX2ZpcnN0LCB1bnNpZ25lZCBjaGFyIF9fbGFzdCkKICBfX2NvbnN0YW50KF9fZmlyc3QpIF9fY29uc3RhbnQoX19sYXN0KSB7CiAgdW5zaWduZWQgY2hhciBfX2JpdDEgPSBfX2ZpcnN0ICYgNjM7CiAgdW5zaWduZWQgY2hhciBfX2JpdDIgPSBfX2xhc3QgJiA2MzsKICB1bnNpZ25lZCBsb25nIGxvbmcgX19tYXNrMSA9ICgxVUxMIDw8ICg2MyAtIF9fYml0MSkgPDwgMSkgLSAxOwogIHVuc2lnbmVkIGxvbmcgbG9uZyBfX21hc2syID0gKDFVTEwgPDwgKDYzIC0gX19iaXQyKSkgLSAxOwogIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3ZhbHVlID0gKF9fYml0MSA8PSBfX2JpdDIgPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbWFzazEgJiB+X19tYXNrMiA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tYXNrMSB8IH5fX21hc2syKTsKICByZXR1cm4gKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX3ZhbHVlOwp9CgovKi0tIHZlY19zcGxhdCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgY2hhcgp2ZWNfc3BsYXQoX192ZWN0b3Igc2lnbmVkIGNoYXIgX192ZWMsIGludCBfX2luZGV4KQogIF9fY29uc3RhbnRfcmFuZ2UoX19pbmRleCwgMCwgMTUpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBjaGFyKV9fdmVjW19faW5kZXhdOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgY2hhcgp2ZWNfc3BsYXQoX192ZWN0b3IgX19ib29sIGNoYXIgX192ZWMsIGludCBfX2luZGV4KQogIF9fY29uc3RhbnRfcmFuZ2UoX19pbmRleCwgMCwgMTUpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBjaGFyKShfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fdmVjW19faW5kZXhdOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19zcGxhdChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fdmVjLCBpbnQgX19pbmRleCkKICBfX2NvbnN0YW50X3JhbmdlKF9faW5kZXgsIDAsIDE1KSB7CiAgcmV0dXJuIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fdmVjW19faW5kZXhdOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgc2hvcnQKdmVjX3NwbGF0KF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX3ZlYywgaW50IF9faW5kZXgpCiAgX19jb25zdGFudF9yYW5nZShfX2luZGV4LCAwLCA3KSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgc2hvcnQpX192ZWNbX19pbmRleF07Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBzaG9ydAp2ZWNfc3BsYXQoX192ZWN0b3IgX19ib29sIHNob3J0IF9fdmVjLCBpbnQgX19pbmRleCkKICBfX2NvbnN0YW50X3JhbmdlKF9faW5kZXgsIDAsIDcpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBzaG9ydCkoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX192ZWNbX19pbmRleF07Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0CnZlY19zcGxhdChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX3ZlYywgaW50IF9faW5kZXgpCiAgX19jb25zdGFudF9yYW5nZShfX2luZGV4LCAwLCA3KSB7CiAgcmV0dXJuIChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX3ZlY1tfX2luZGV4XTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGludAp2ZWNfc3BsYXQoX192ZWN0b3Igc2lnbmVkIGludCBfX3ZlYywgaW50IF9faW5kZXgpCiAgX19jb25zdGFudF9yYW5nZShfX2luZGV4LCAwLCAzKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgaW50KV9fdmVjW19faW5kZXhdOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgaW50CnZlY19zcGxhdChfX3ZlY3RvciBfX2Jvb2wgaW50IF9fdmVjLCBpbnQgX19pbmRleCkKICBfX2NvbnN0YW50X3JhbmdlKF9faW5kZXgsIDAsIDMpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBpbnQpKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX3ZlY1tfX2luZGV4XTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19zcGxhdChfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX192ZWMsIGludCBfX2luZGV4KQogIF9fY29uc3RhbnRfcmFuZ2UoX19pbmRleCwgMCwgMykgewogIHJldHVybiAoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fdmVjW19faW5kZXhdOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nCnZlY19zcGxhdChfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fdmVjLCBpbnQgX19pbmRleCkKICBfX2NvbnN0YW50X3JhbmdlKF9faW5kZXgsIDAsIDEpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX192ZWNbX19pbmRleF07Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcKdmVjX3NwbGF0KF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX192ZWMsIGludCBfX2luZGV4KQogIF9fY29uc3RhbnRfcmFuZ2UoX19pbmRleCwgMCwgMSkgewogIHJldHVybiAoKF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcpCiAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fdmVjW19faW5kZXhdKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nCnZlY19zcGxhdChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX192ZWMsIGludCBfX2luZGV4KQogIF9fY29uc3RhbnRfcmFuZ2UoX19pbmRleCwgMCwgMSkgewogIHJldHVybiAoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fdmVjW19faW5kZXhdOwp9CgojaWYgX19BUkNIX18gPj0gMTIKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgZmxvYXQKdmVjX3NwbGF0KF9fdmVjdG9yIGZsb2F0IF9fdmVjLCBpbnQgX19pbmRleCkKICBfX2NvbnN0YW50X3JhbmdlKF9faW5kZXgsIDAsIDMpIHsKICByZXR1cm4gKF9fdmVjdG9yIGZsb2F0KV9fdmVjW19faW5kZXhdOwp9CiNlbmRpZgoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgZG91YmxlCnZlY19zcGxhdChfX3ZlY3RvciBkb3VibGUgX192ZWMsIGludCBfX2luZGV4KQogIF9fY29uc3RhbnRfcmFuZ2UoX19pbmRleCwgMCwgMSkgewogIHJldHVybiAoX192ZWN0b3IgZG91YmxlKV9fdmVjW19faW5kZXhdOwp9CgovKi0tIHZlY19zcGxhdF9zKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfYWkgX192ZWN0b3Igc2lnbmVkIGNoYXIKdmVjX3NwbGF0X3M4KHNpZ25lZCBjaGFyIF9fc2NhbGFyKQogIF9fY29uc3RhbnQoX19zY2FsYXIpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBjaGFyKV9fc2NhbGFyOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfYWkgX192ZWN0b3Igc2lnbmVkIHNob3J0CnZlY19zcGxhdF9zMTYoc2lnbmVkIHNob3J0IF9fc2NhbGFyKQogIF9fY29uc3RhbnQoX19zY2FsYXIpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBzaG9ydClfX3NjYWxhcjsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX2FpIF9fdmVjdG9yIHNpZ25lZCBpbnQKdmVjX3NwbGF0X3MzMihzaWduZWQgc2hvcnQgX19zY2FsYXIpCiAgX19jb25zdGFudChfX3NjYWxhcikgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIGludCkoc2lnbmVkIGludClfX3NjYWxhcjsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX2FpIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcKdmVjX3NwbGF0X3M2NChzaWduZWQgc2hvcnQgX19zY2FsYXIpCiAgX19jb25zdGFudChfX3NjYWxhcikgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZykoc2lnbmVkIGxvbmcpX19zY2FsYXI7Cn0KCi8qLS0gdmVjX3NwbGF0X3UqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19zcGxhdF91OCh1bnNpZ25lZCBjaGFyIF9fc2NhbGFyKQogIF9fY29uc3RhbnQoX19zY2FsYXIpIHsKICByZXR1cm4gKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19zY2FsYXI7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19haSBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydAp2ZWNfc3BsYXRfdTE2KHVuc2lnbmVkIHNob3J0IF9fc2NhbGFyKQogIF9fY29uc3RhbnQoX19zY2FsYXIpIHsKICByZXR1cm4gKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fc2NhbGFyOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19zcGxhdF91MzIoc2lnbmVkIHNob3J0IF9fc2NhbGFyKQogIF9fY29uc3RhbnQoX19zY2FsYXIpIHsKICByZXR1cm4gKF9fdmVjdG9yIHVuc2lnbmVkIGludCkoc2lnbmVkIGludClfX3NjYWxhcjsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZwp2ZWNfc3BsYXRfdTY0KHNpZ25lZCBzaG9ydCBfX3NjYWxhcikKICBfX2NvbnN0YW50KF9fc2NhbGFyKSB7CiAgcmV0dXJuIChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpKHNpZ25lZCBsb25nIGxvbmcpX19zY2FsYXI7Cn0KCi8qLS0gdmVjX3NwbGF0cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBjaGFyCnZlY19zcGxhdHMoc2lnbmVkIGNoYXIgX19zY2FsYXIpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBjaGFyKV9fc2NhbGFyOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19zcGxhdHModW5zaWduZWQgY2hhciBfX3NjYWxhcikgewogIHJldHVybiAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX3NjYWxhcjsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIHNob3J0CnZlY19zcGxhdHMoc2lnbmVkIHNob3J0IF9fc2NhbGFyKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgc2hvcnQpX19zY2FsYXI7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0CnZlY19zcGxhdHModW5zaWduZWQgc2hvcnQgX19zY2FsYXIpIHsKICByZXR1cm4gKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fc2NhbGFyOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgaW50CnZlY19zcGxhdHMoc2lnbmVkIGludCBfX3NjYWxhcikgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIGludClfX3NjYWxhcjsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19zcGxhdHModW5zaWduZWQgaW50IF9fc2NhbGFyKSB7CiAgcmV0dXJuIChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19zY2FsYXI7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcKdmVjX3NwbGF0cyhzaWduZWQgbG9uZyBsb25nIF9fc2NhbGFyKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fc2NhbGFyOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcKdmVjX3NwbGF0cyh1bnNpZ25lZCBsb25nIGxvbmcgX19zY2FsYXIpIHsKICByZXR1cm4gKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX3NjYWxhcjsKfQoKI2lmIF9fQVJDSF9fID49IDEyCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIGZsb2F0CnZlY19zcGxhdHMoZmxvYXQgX19zY2FsYXIpIHsKICByZXR1cm4gKF9fdmVjdG9yIGZsb2F0KV9fc2NhbGFyOwp9CiNlbmRpZgoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgZG91YmxlCnZlY19zcGxhdHMoZG91YmxlIF9fc2NhbGFyKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBkb3VibGUpX19zY2FsYXI7Cn0KCi8qLS0gdmVjX2V4dGVuZF9zNjQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcKdmVjX2V4dGVuZF9zNjQoX192ZWN0b3Igc2lnbmVkIGNoYXIgX19hKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nKShfX2FbN10sIF9fYVsxNV0pOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nCnZlY19leHRlbmRfczY0KF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpKF9fYVszXSwgX19hWzddKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZwp2ZWNfZXh0ZW5kX3M2NChfX3ZlY3RvciBzaWduZWQgaW50IF9fYSkgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZykoX19hWzFdLCBfX2FbM10pOwp9CgovKi0tIHZlY19tZXJnZWggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgY2hhcgp2ZWNfbWVyZ2VoKF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgY2hhcikoCiAgICBfX2FbMF0sIF9fYlswXSwgX19hWzFdLCBfX2JbMV0sIF9fYVsyXSwgX19iWzJdLCBfX2FbM10sIF9fYlszXSwKICAgIF9fYVs0XSwgX19iWzRdLCBfX2FbNV0sIF9fYls1XSwgX19hWzZdLCBfX2JbNl0sIF9fYVs3XSwgX19iWzddKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIGNoYXIKdmVjX21lcmdlaChfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2EsIF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYikgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIGNoYXIpKAogICAgX19hWzBdLCBfX2JbMF0sIF9fYVsxXSwgX19iWzFdLCBfX2FbMl0sIF9fYlsyXSwgX19hWzNdLCBfX2JbM10sCiAgICBfX2FbNF0sIF9fYls0XSwgX19hWzVdLCBfX2JbNV0sIF9fYVs2XSwgX19iWzZdLCBfX2FbN10sIF9fYls3XSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIKdmVjX21lcmdlaChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpKAogICAgX19hWzBdLCBfX2JbMF0sIF9fYVsxXSwgX19iWzFdLCBfX2FbMl0sIF9fYlsyXSwgX19hWzNdLCBfX2JbM10sCiAgICBfX2FbNF0sIF9fYls0XSwgX19hWzVdLCBfX2JbNV0sIF9fYVs2XSwgX19iWzZdLCBfX2FbN10sIF9fYls3XSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBzaG9ydAp2ZWNfbWVyZ2VoKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCkoCiAgICBfX2FbMF0sIF9fYlswXSwgX19hWzFdLCBfX2JbMV0sIF9fYVsyXSwgX19iWzJdLCBfX2FbM10sIF9fYlszXSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBzaG9ydAp2ZWNfbWVyZ2VoKF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2EsIF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBzaG9ydCkoCiAgICBfX2FbMF0sIF9fYlswXSwgX19hWzFdLCBfX2JbMV0sIF9fYVsyXSwgX19iWzJdLCBfX2FbM10sIF9fYlszXSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0CnZlY19tZXJnZWgoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KSgKICAgIF9fYVswXSwgX19iWzBdLCBfX2FbMV0sIF9fYlsxXSwgX19hWzJdLCBfX2JbMl0sIF9fYVszXSwgX19iWzNdKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGludAp2ZWNfbWVyZ2VoKF9fdmVjdG9yIHNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciBzaWduZWQgaW50IF9fYikgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIGludCkoX19hWzBdLCBfX2JbMF0sIF9fYVsxXSwgX19iWzFdKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIGludAp2ZWNfbWVyZ2VoKF9fdmVjdG9yIF9fYm9vbCBpbnQgX19hLCBfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYikgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIGludCkoX19hWzBdLCBfX2JbMF0sIF9fYVsxXSwgX19iWzFdKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19tZXJnZWgoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiAoX192ZWN0b3IgdW5zaWduZWQgaW50KShfX2FbMF0sIF9fYlswXSwgX19hWzFdLCBfX2JbMV0pOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nCnZlY19tZXJnZWgoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nKShfX2FbMF0sIF9fYlswXSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcKdmVjX21lcmdlaChfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIF9fYSwgX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcpKF9fYVswXSwgX19iWzBdKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nCnZlY19tZXJnZWgoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiAoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKShfX2FbMF0sIF9fYlswXSk7Cn0KCiNpZiBfX0FSQ0hfXyA+PSAxMgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBmbG9hdAp2ZWNfbWVyZ2VoKF9fdmVjdG9yIGZsb2F0IF9fYSwgX192ZWN0b3IgZmxvYXQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBmbG9hdCkoX19hWzBdLCBfX2JbMF0sIF9fYVsxXSwgX19iWzFdKTsKfQojZW5kaWYKCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIGRvdWJsZQp2ZWNfbWVyZ2VoKF9fdmVjdG9yIGRvdWJsZSBfX2EsIF9fdmVjdG9yIGRvdWJsZSBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIGRvdWJsZSkoX19hWzBdLCBfX2JbMF0pOwp9CgovKi0tIHZlY19tZXJnZWwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgY2hhcgp2ZWNfbWVyZ2VsKF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgY2hhcikoCiAgICBfX2FbOF0sIF9fYls4XSwgX19hWzldLCBfX2JbOV0sIF9fYVsxMF0sIF9fYlsxMF0sIF9fYVsxMV0sIF9fYlsxMV0sCiAgICBfX2FbMTJdLCBfX2JbMTJdLCBfX2FbMTNdLCBfX2JbMTNdLCBfX2FbMTRdLCBfX2JbMTRdLCBfX2FbMTVdLCBfX2JbMTVdKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIGNoYXIKdmVjX21lcmdlbChfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2EsIF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYikgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIGNoYXIpKAogICAgX19hWzhdLCBfX2JbOF0sIF9fYVs5XSwgX19iWzldLCBfX2FbMTBdLCBfX2JbMTBdLCBfX2FbMTFdLCBfX2JbMTFdLAogICAgX19hWzEyXSwgX19iWzEyXSwgX19hWzEzXSwgX19iWzEzXSwgX19hWzE0XSwgX19iWzE0XSwgX19hWzE1XSwgX19iWzE1XSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIKdmVjX21lcmdlbChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpKAogICAgX19hWzhdLCBfX2JbOF0sIF9fYVs5XSwgX19iWzldLCBfX2FbMTBdLCBfX2JbMTBdLCBfX2FbMTFdLCBfX2JbMTFdLAogICAgX19hWzEyXSwgX19iWzEyXSwgX19hWzEzXSwgX19iWzEzXSwgX19hWzE0XSwgX19iWzE0XSwgX19hWzE1XSwgX19iWzE1XSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBzaG9ydAp2ZWNfbWVyZ2VsKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCkoCiAgICBfX2FbNF0sIF9fYls0XSwgX19hWzVdLCBfX2JbNV0sIF9fYVs2XSwgX19iWzZdLCBfX2FbN10sIF9fYls3XSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBzaG9ydAp2ZWNfbWVyZ2VsKF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2EsIF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBzaG9ydCkoCiAgICBfX2FbNF0sIF9fYls0XSwgX19hWzVdLCBfX2JbNV0sIF9fYVs2XSwgX19iWzZdLCBfX2FbN10sIF9fYls3XSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0CnZlY19tZXJnZWwoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KSgKICAgIF9fYVs0XSwgX19iWzRdLCBfX2FbNV0sIF9fYls1XSwgX19hWzZdLCBfX2JbNl0sIF9fYVs3XSwgX19iWzddKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGludAp2ZWNfbWVyZ2VsKF9fdmVjdG9yIHNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciBzaWduZWQgaW50IF9fYikgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIGludCkoX19hWzJdLCBfX2JbMl0sIF9fYVszXSwgX19iWzNdKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIGludAp2ZWNfbWVyZ2VsKF9fdmVjdG9yIF9fYm9vbCBpbnQgX19hLCBfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYikgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIGludCkoX19hWzJdLCBfX2JbMl0sIF9fYVszXSwgX19iWzNdKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19tZXJnZWwoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiAoX192ZWN0b3IgdW5zaWduZWQgaW50KShfX2FbMl0sIF9fYlsyXSwgX19hWzNdLCBfX2JbM10pOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nCnZlY19tZXJnZWwoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nKShfX2FbMV0sIF9fYlsxXSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcKdmVjX21lcmdlbChfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIF9fYSwgX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcpKF9fYVsxXSwgX19iWzFdKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nCnZlY19tZXJnZWwoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiAoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKShfX2FbMV0sIF9fYlsxXSk7Cn0KCiNpZiBfX0FSQ0hfXyA+PSAxMgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBmbG9hdAp2ZWNfbWVyZ2VsKF9fdmVjdG9yIGZsb2F0IF9fYSwgX192ZWN0b3IgZmxvYXQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBmbG9hdCkoX19hWzJdLCBfX2JbMl0sIF9fYVszXSwgX19iWzNdKTsKfQojZW5kaWYKCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIGRvdWJsZQp2ZWNfbWVyZ2VsKF9fdmVjdG9yIGRvdWJsZSBfX2EsIF9fdmVjdG9yIGRvdWJsZSBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIGRvdWJsZSkoX19hWzFdLCBfX2JbMV0pOwp9CgovKi0tIHZlY19wYWNrIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgY2hhcgp2ZWNfcGFjayhfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19iKSB7CiAgX192ZWN0b3Igc2lnbmVkIGNoYXIgX19hYyA9IChfX3ZlY3RvciBzaWduZWQgY2hhcilfX2E7CiAgX192ZWN0b3Igc2lnbmVkIGNoYXIgX19iYyA9IChfX3ZlY3RvciBzaWduZWQgY2hhcilfX2I7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgY2hhcikoCiAgICBfX2FjWzFdLCBfX2FjWzNdLCBfX2FjWzVdLCBfX2FjWzddLCBfX2FjWzldLCBfX2FjWzExXSwgX19hY1sxM10sIF9fYWNbMTVdLAogICAgX19iY1sxXSwgX19iY1szXSwgX19iY1s1XSwgX19iY1s3XSwgX19iY1s5XSwgX19iY1sxMV0sIF9fYmNbMTNdLCBfX2JjWzE1XSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBjaGFyCnZlY19wYWNrKF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2EsIF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2IpIHsKICBfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2FjID0gKF9fdmVjdG9yIF9fYm9vbCBjaGFyKV9fYTsKICBfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2JjID0gKF9fdmVjdG9yIF9fYm9vbCBjaGFyKV9fYjsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBjaGFyKSgKICAgIF9fYWNbMV0sIF9fYWNbM10sIF9fYWNbNV0sIF9fYWNbN10sIF9fYWNbOV0sIF9fYWNbMTFdLCBfX2FjWzEzXSwgX19hY1sxNV0sCiAgICBfX2JjWzFdLCBfX2JjWzNdLCBfX2JjWzVdLCBfX2JjWzddLCBfX2JjWzldLCBfX2JjWzExXSwgX19iY1sxM10sIF9fYmNbMTVdKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfcGFjayhfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hYyA9IChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYTsKICBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYmMgPSAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2I7CiAgcmV0dXJuIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKSgKICAgIF9fYWNbMV0sIF9fYWNbM10sIF9fYWNbNV0sIF9fYWNbN10sIF9fYWNbOV0sIF9fYWNbMTFdLCBfX2FjWzEzXSwgX19hY1sxNV0sCiAgICBfX2JjWzFdLCBfX2JjWzNdLCBfX2JjWzVdLCBfX2JjWzddLCBfX2JjWzldLCBfX2JjWzExXSwgX19iY1sxM10sIF9fYmNbMTVdKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIHNob3J0CnZlY19wYWNrKF9fdmVjdG9yIHNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciBzaWduZWQgaW50IF9fYikgewogIF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2FjID0gKF9fdmVjdG9yIHNpZ25lZCBzaG9ydClfX2E7CiAgX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYmMgPSAoX192ZWN0b3Igc2lnbmVkIHNob3J0KV9fYjsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCkoCiAgICBfX2FjWzFdLCBfX2FjWzNdLCBfX2FjWzVdLCBfX2FjWzddLAogICAgX19iY1sxXSwgX19iY1szXSwgX19iY1s1XSwgX19iY1s3XSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBzaG9ydAp2ZWNfcGFjayhfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYSwgX192ZWN0b3IgX19ib29sIGludCBfX2IpIHsKICBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19hYyA9IChfX3ZlY3RvciBfX2Jvb2wgc2hvcnQpX19hOwogIF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2JjID0gKF9fdmVjdG9yIF9fYm9vbCBzaG9ydClfX2I7CiAgcmV0dXJuIChfX3ZlY3RvciBfX2Jvb2wgc2hvcnQpKAogICAgX19hY1sxXSwgX19hY1szXSwgX19hY1s1XSwgX19hY1s3XSwKICAgIF9fYmNbMV0sIF9fYmNbM10sIF9fYmNbNV0sIF9fYmNbN10pOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydAp2ZWNfcGFjayhfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hYyA9IChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2E7CiAgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iYyA9IChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2I7CiAgcmV0dXJuIChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCkoCiAgICBfX2FjWzFdLCBfX2FjWzNdLCBfX2FjWzVdLCBfX2FjWzddLAogICAgX19iY1sxXSwgX19iY1szXSwgX19iY1s1XSwgX19iY1s3XSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBpbnQKdmVjX3BhY2soX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgX192ZWN0b3Igc2lnbmVkIGludCBfX2FjID0gKF9fdmVjdG9yIHNpZ25lZCBpbnQpX19hOwogIF9fdmVjdG9yIHNpZ25lZCBpbnQgX19iYyA9IChfX3ZlY3RvciBzaWduZWQgaW50KV9fYjsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBpbnQpKF9fYWNbMV0sIF9fYWNbM10sIF9fYmNbMV0sIF9fYmNbM10pOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgaW50CnZlY19wYWNrKF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIF9fYikgewogIF9fdmVjdG9yIF9fYm9vbCBpbnQgX19hYyA9IChfX3ZlY3RvciBfX2Jvb2wgaW50KV9fYTsKICBfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYmMgPSAoX192ZWN0b3IgX19ib29sIGludClfX2I7CiAgcmV0dXJuIChfX3ZlY3RvciBfX2Jvb2wgaW50KShfX2FjWzFdLCBfX2FjWzNdLCBfX2JjWzFdLCBfX2JjWzNdKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19wYWNrKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19hYyA9IChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19hOwogIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2JjID0gKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2I7CiAgcmV0dXJuIChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpKF9fYWNbMV0sIF9fYWNbM10sIF9fYmNbMV0sIF9fYmNbM10pOwp9CgovKi0tIHZlY19wYWNrcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgY2hhcgp2ZWNfcGFja3MoX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92cGtzaChfX2EsIF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIKdmVjX3BhY2tzKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3Zwa2xzaChfX2EsIF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBzaG9ydAp2ZWNfcGFja3MoX192ZWN0b3Igc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3Zwa3NmKF9fYSwgX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX3BhY2tzKF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdnBrbHNmKF9fYSwgX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGludAp2ZWNfcGFja3MoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3Zwa3NnKF9fYSwgX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19wYWNrcyhfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3Zwa2xzZyhfX2EsIF9fYik7Cn0KCi8qLS0gdmVjX3BhY2tzX2NjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBjaGFyCnZlY19wYWNrc19jYyhfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19iLCBpbnQgKl9fY2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdnBrc2hzKF9fYSwgX19iLCBfX2NjKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfcGFja3NfY2MoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IsCiAgICAgICAgICAgICBpbnQgKl9fY2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdnBrbHNocyhfX2EsIF9fYiwgX19jYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBzaG9ydAp2ZWNfcGFja3NfY2MoX192ZWN0b3Igc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBpbnQgX19iLCBpbnQgKl9fY2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdnBrc2ZzKF9fYSwgX19iLCBfX2NjKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX3BhY2tzX2NjKF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IsIGludCAqX19jYykgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92cGtsc2ZzKF9fYSwgX19iLCBfX2NjKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGludAp2ZWNfcGFja3NfY2MoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iLAogICAgICAgICAgICAgaW50ICpfX2NjKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3Zwa3NncyhfX2EsIF9fYiwgX19jYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGludAp2ZWNfcGFja3NfY2MoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYiwKICAgICAgICAgICAgIGludCAqX19jYykgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92cGtsc2dzKF9fYSwgX19iLCBfX2NjKTsKfQoKLyotLSB2ZWNfcGFja3N1IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfcGFja3N1KF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2IpIHsKICBjb25zdCBfX3ZlY3RvciBzaWduZWQgc2hvcnQgX196ZXJvID0gKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCkwOwogIHJldHVybiBfX2J1aWx0aW5fczM5MF92cGtsc2goCiAgICAoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpKF9fYSA+PSBfX3plcm8pICYgKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYSwKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCkoX19iID49IF9femVybykgJiAoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfcGFja3N1KF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3Zwa2xzaChfX2EsIF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0CnZlY19wYWNrc3UoX192ZWN0b3Igc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBpbnQgX19iKSB7CiAgY29uc3QgX192ZWN0b3Igc2lnbmVkIGludCBfX3plcm8gPSAoX192ZWN0b3Igc2lnbmVkIGludCkwOwogIHJldHVybiBfX2J1aWx0aW5fczM5MF92cGtsc2YoCiAgICAoX192ZWN0b3IgdW5zaWduZWQgaW50KShfX2EgPj0gX196ZXJvKSAmIChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19hLAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGludCkoX19iID49IF9femVybykgJiAoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0CnZlY19wYWNrc3UoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92cGtsc2YoX19hLCBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBpbnQKdmVjX3BhY2tzdShfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICBjb25zdCBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9femVybyA9IChfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nKTA7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3Zwa2xzZygKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpKF9fYSA+PSBfX3plcm8pICYKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19hLAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZykoX19iID49IF9femVybykgJgogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBpbnQKdmVjX3BhY2tzdShfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3Zwa2xzZyhfX2EsIF9fYik7Cn0KCi8qLS0gdmVjX3BhY2tzdV9jYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIKdmVjX3BhY2tzdV9jYyhfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYiwKICAgICAgICAgICAgICBpbnQgKl9fY2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdnBrbHNocyhfX2EsIF9fYiwgX19jYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0CnZlY19wYWNrc3VfY2MoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYiwgaW50ICpfX2NjKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3Zwa2xzZnMoX19hLCBfX2IsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBpbnQKdmVjX3BhY2tzdV9jYyhfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iLAogICAgICAgICAgICAgIGludCAqX19jYykgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92cGtsc2dzKF9fYSwgX19iLCBfX2NjKTsKfQoKLyotLSB2ZWNfdW5wYWNraCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIHNob3J0CnZlY191bnBhY2toKF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92dXBoYihfX2EpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQKdmVjX3VucGFja2goX192ZWN0b3IgX19ib29sIGNoYXIgX19hKSB7CiAgcmV0dXJuICgoX192ZWN0b3IgX19ib29sIHNob3J0KQogICAgICAgICAgX19idWlsdGluX3MzOTBfdnVwaGIoKF9fdmVjdG9yIHNpZ25lZCBjaGFyKV9fYSkpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydAp2ZWNfdW5wYWNraChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92dXBsaGIoX19hKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGludAp2ZWNfdW5wYWNraChfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3Z1cGhoKF9fYSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBpbnQKdmVjX3VucGFja2goX192ZWN0b3IgX19ib29sIHNob3J0IF9fYSkgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIGludClfX2J1aWx0aW5fczM5MF92dXBoaCgoX192ZWN0b3Igc2lnbmVkIHNob3J0KV9fYSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGludAp2ZWNfdW5wYWNraChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdnVwbGhoKF9fYSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcKdmVjX3VucGFja2goX192ZWN0b3Igc2lnbmVkIGludCBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdnVwaGYoX19hKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZwp2ZWNfdW5wYWNraChfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYSkgewogIHJldHVybiAoKF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcpCiAgICAgICAgICBfX2J1aWx0aW5fczM5MF92dXBoZigoX192ZWN0b3Igc2lnbmVkIGludClfX2EpKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nCnZlY191bnBhY2toKF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdnVwbGhmKF9fYSk7Cn0KCi8qLS0gdmVjX3VucGFja2wgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBzaG9ydAp2ZWNfdW5wYWNrbChfX3ZlY3RvciBzaWduZWQgY2hhciBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdnVwbGIoX19hKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIHNob3J0CnZlY191bnBhY2tsKF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYSkgewogIHJldHVybiAoKF9fdmVjdG9yIF9fYm9vbCBzaG9ydCkKICAgICAgICAgIF9fYnVpbHRpbl9zMzkwX3Z1cGxiKChfX3ZlY3RvciBzaWduZWQgY2hhcilfX2EpKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX3VucGFja2woX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdnVwbGxiKF9fYSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBpbnQKdmVjX3VucGFja2woX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92dXBsaHcoX19hKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIGludAp2ZWNfdW5wYWNrbChfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19hKSB7CiAgcmV0dXJuICgoX192ZWN0b3IgX19ib29sIGludCkKICAgICAgICAgIF9fYnVpbHRpbl9zMzkwX3Z1cGxodygoX192ZWN0b3Igc2lnbmVkIHNob3J0KV9fYSkpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBpbnQKdmVjX3VucGFja2woX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3Z1cGxsaChfX2EpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nCnZlY191bnBhY2tsKF9fdmVjdG9yIHNpZ25lZCBpbnQgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3Z1cGxmKF9fYSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcKdmVjX3VucGFja2woX192ZWN0b3IgX19ib29sIGludCBfX2EpIHsKICByZXR1cm4gKChfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nKQogICAgICAgICAgX19idWlsdGluX3MzOTBfdnVwbGYoKF9fdmVjdG9yIHNpZ25lZCBpbnQpX19hKSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZwp2ZWNfdW5wYWNrbChfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3Z1cGxsZihfX2EpOwp9CgovKi0tIHZlY19jbXBlcSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgY2hhcgp2ZWNfY21wZXEoX192ZWN0b3IgX19ib29sIGNoYXIgX19hLCBfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBjaGFyKShfX2EgPT0gX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIGNoYXIKdmVjX2NtcGVxKF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBfX2Jvb2wgY2hhcikoX19hID09IF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBjaGFyCnZlY19jbXBlcShfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBjaGFyKShfX2EgPT0gX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIHNob3J0CnZlY19jbXBlcShfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19hLCBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBfX2Jvb2wgc2hvcnQpKF9fYSA9PSBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQKdmVjX2NtcGVxKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBzaG9ydCkoX19hID09IF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBzaG9ydAp2ZWNfY21wZXEoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBzaG9ydCkoX19hID09IF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBpbnQKdmVjX2NtcGVxKF9fdmVjdG9yIF9fYm9vbCBpbnQgX19hLCBfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYikgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIGludCkoX19hID09IF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBpbnQKdmVjX2NtcGVxKF9fdmVjdG9yIHNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciBzaWduZWQgaW50IF9fYikgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIGludCkoX19hID09IF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBpbnQKdmVjX2NtcGVxKF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBpbnQpKF9fYSA9PSBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nCnZlY19jbXBlcShfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIF9fYSwgX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcpKF9fYSA9PSBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nCnZlY19jbXBlcShfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcpKF9fYSA9PSBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nCnZlY19jbXBlcShfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nKShfX2EgPT0gX19iKTsKfQoKI2lmIF9fQVJDSF9fID49IDEyCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBpbnQKdmVjX2NtcGVxKF9fdmVjdG9yIGZsb2F0IF9fYSwgX192ZWN0b3IgZmxvYXQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBfX2Jvb2wgaW50KShfX2EgPT0gX19iKTsKfQojZW5kaWYKCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcKdmVjX2NtcGVxKF9fdmVjdG9yIGRvdWJsZSBfX2EsIF9fdmVjdG9yIGRvdWJsZSBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcpKF9fYSA9PSBfX2IpOwp9CgovKi0tIHZlY19jbXBnZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgY2hhcgp2ZWNfY21wZ2UoX192ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBjaGFyKShfX2EgPj0gX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIGNoYXIKdmVjX2NtcGdlKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIGNoYXIpKF9fYSA+PSBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQKdmVjX2NtcGdlKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBzaG9ydCkoX19hID49IF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBzaG9ydAp2ZWNfY21wZ2UoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBzaG9ydCkoX19hID49IF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBpbnQKdmVjX2NtcGdlKF9fdmVjdG9yIHNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciBzaWduZWQgaW50IF9fYikgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIGludCkoX19hID49IF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBpbnQKdmVjX2NtcGdlKF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBpbnQpKF9fYSA+PSBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nCnZlY19jbXBnZShfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcpKF9fYSA+PSBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nCnZlY19jbXBnZShfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nKShfX2EgPj0gX19iKTsKfQoKI2lmIF9fQVJDSF9fID49IDEyCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBpbnQKdmVjX2NtcGdlKF9fdmVjdG9yIGZsb2F0IF9fYSwgX192ZWN0b3IgZmxvYXQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBfX2Jvb2wgaW50KShfX2EgPj0gX19iKTsKfQojZW5kaWYKCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcKdmVjX2NtcGdlKF9fdmVjdG9yIGRvdWJsZSBfX2EsIF9fdmVjdG9yIGRvdWJsZSBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcpKF9fYSA+PSBfX2IpOwp9CgovKi0tIHZlY19jbXBndCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgY2hhcgp2ZWNfY21wZ3QoX192ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBjaGFyKShfX2EgPiBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgY2hhcgp2ZWNfY21wZ3QoX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBfX2Jvb2wgY2hhcikoX19hID4gX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIHNob3J0CnZlY19jbXBndChfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBfX2Jvb2wgc2hvcnQpKF9fYSA+IF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBzaG9ydAp2ZWNfY21wZ3QoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBzaG9ydCkoX19hID4gX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIGludAp2ZWNfY21wZ3QoX192ZWN0b3Igc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBfX2Jvb2wgaW50KShfX2EgPiBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgaW50CnZlY19jbXBndChfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBfX2Jvb2wgaW50KShfX2EgPiBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nCnZlY19jbXBndChfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcpKF9fYSA+IF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcKdmVjX2NtcGd0KF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcpKF9fYSA+IF9fYik7Cn0KCiNpZiBfX0FSQ0hfXyA+PSAxMgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgaW50CnZlY19jbXBndChfX3ZlY3RvciBmbG9hdCBfX2EsIF9fdmVjdG9yIGZsb2F0IF9fYikgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIGludCkoX19hID4gX19iKTsKfQojZW5kaWYKCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcKdmVjX2NtcGd0KF9fdmVjdG9yIGRvdWJsZSBfX2EsIF9fdmVjdG9yIGRvdWJsZSBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcpKF9fYSA+IF9fYik7Cn0KCi8qLS0gdmVjX2NtcGxlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBjaGFyCnZlY19jbXBsZShfX3ZlY3RvciBzaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIGNoYXIpKF9fYSA8PSBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgY2hhcgp2ZWNfY21wbGUoX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBfX2Jvb2wgY2hhcikoX19hIDw9IF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBzaG9ydAp2ZWNfY21wbGUoX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIHNob3J0KShfX2EgPD0gX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIHNob3J0CnZlY19jbXBsZShfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIHNob3J0KShfX2EgPD0gX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIGludAp2ZWNfY21wbGUoX192ZWN0b3Igc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBfX2Jvb2wgaW50KShfX2EgPD0gX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIGludAp2ZWNfY21wbGUoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIGludCkoX19hIDw9IF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcKdmVjX2NtcGxlKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZykoX19hIDw9IF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcKdmVjX2NtcGxlKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcpKF9fYSA8PSBfX2IpOwp9CgojaWYgX19BUkNIX18gPj0gMTIKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIGludAp2ZWNfY21wbGUoX192ZWN0b3IgZmxvYXQgX19hLCBfX3ZlY3RvciBmbG9hdCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBpbnQpKF9fYSA8PSBfX2IpOwp9CiNlbmRpZgoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZwp2ZWNfY21wbGUoX192ZWN0b3IgZG91YmxlIF9fYSwgX192ZWN0b3IgZG91YmxlIF9fYikgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZykoX19hIDw9IF9fYik7Cn0KCi8qLS0gdmVjX2NtcGx0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBjaGFyCnZlY19jbXBsdChfX3ZlY3RvciBzaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIGNoYXIpKF9fYSA8IF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBjaGFyCnZlY19jbXBsdChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBjaGFyKShfX2EgPCBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQKdmVjX2NtcGx0KF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBzaG9ydCkoX19hIDwgX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIHNob3J0CnZlY19jbXBsdChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIHNob3J0KShfX2EgPCBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgaW50CnZlY19jbXBsdChfX3ZlY3RvciBzaWduZWQgaW50IF9fYSwgX192ZWN0b3Igc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBpbnQpKF9fYSA8IF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBpbnQKdmVjX2NtcGx0KF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBpbnQpKF9fYSA8IF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcKdmVjX2NtcGx0KF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZykoX19hIDwgX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZwp2ZWNfY21wbHQoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZykoX19hIDwgX19iKTsKfQoKI2lmIF9fQVJDSF9fID49IDEyCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBpbnQKdmVjX2NtcGx0KF9fdmVjdG9yIGZsb2F0IF9fYSwgX192ZWN0b3IgZmxvYXQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBfX2Jvb2wgaW50KShfX2EgPCBfX2IpOwp9CiNlbmRpZgoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZwp2ZWNfY21wbHQoX192ZWN0b3IgZG91YmxlIF9fYSwgX192ZWN0b3IgZG91YmxlIF9fYikgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZykoX19hIDwgX19iKTsKfQoKLyotLSB2ZWNfYWxsX2VxIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfZXEoX192ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2VxYnMoX19hLCBfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAwOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9lcShfX3ZlY3RvciBzaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjZXFicyhfX2EsIChfX3ZlY3RvciBzaWduZWQgY2hhcilfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAwOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9lcShfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2EsIF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjZXFicygoX192ZWN0b3Igc2lnbmVkIGNoYXIpX19hLCBfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAwOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9lcShfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2VxYnMoKF9fdmVjdG9yIHNpZ25lZCBjaGFyKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHNpZ25lZCBjaGFyKV9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDA7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2VxKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2VxYnMoKF9fdmVjdG9yIHNpZ25lZCBjaGFyKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHNpZ25lZCBjaGFyKV9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDA7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2VxKF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2VxYnMoKF9fdmVjdG9yIHNpZ25lZCBjaGFyKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHNpZ25lZCBjaGFyKV9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDA7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2VxKF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYSwgX192ZWN0b3IgX19ib29sIGNoYXIgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNlcWJzKChfX3ZlY3RvciBzaWduZWQgY2hhcilfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciBzaWduZWQgY2hhcilfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAwOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9lcShfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNlcWhzKF9fYSwgX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMDsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfZXEoX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgX19ib29sIHNob3J0IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjZXFocyhfX2EsIChfX3ZlY3RvciBzaWduZWQgc2hvcnQpX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMDsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfZXEoX192ZWN0b3IgX19ib29sIHNob3J0IF9fYSwgX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjZXFocygoX192ZWN0b3Igc2lnbmVkIHNob3J0KV9fYSwgX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMDsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfZXEoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2VxaHMoKF9fdmVjdG9yIHNpZ25lZCBzaG9ydClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciBzaWduZWQgc2hvcnQpX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMDsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfZXEoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNlcWhzKChfX3ZlY3RvciBzaWduZWQgc2hvcnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3Igc2lnbmVkIHNob3J0KV9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDA7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2VxKF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjZXFocygoX192ZWN0b3Igc2lnbmVkIHNob3J0KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHNpZ25lZCBzaG9ydClfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAwOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9lcShfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19hLCBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNlcWhzKChfX3ZlY3RvciBzaWduZWQgc2hvcnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3Igc2lnbmVkIHNob3J0KV9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDA7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2VxKF9fdmVjdG9yIHNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciBzaWduZWQgaW50IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjZXFmcyhfX2EsIF9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDA7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2VxKF9fdmVjdG9yIHNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjZXFmcyhfX2EsIChfX3ZlY3RvciBzaWduZWQgaW50KV9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDA7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2VxKF9fdmVjdG9yIF9fYm9vbCBpbnQgX19hLCBfX3ZlY3RvciBzaWduZWQgaW50IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjZXFmcygoX192ZWN0b3Igc2lnbmVkIGludClfX2EsIF9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDA7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2VxKF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2VxZnMoKF9fdmVjdG9yIHNpZ25lZCBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3Igc2lnbmVkIGludClfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAwOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9lcShfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjZXFmcygoX192ZWN0b3Igc2lnbmVkIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciBzaWduZWQgaW50KV9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDA7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2VxKF9fdmVjdG9yIF9fYm9vbCBpbnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNlcWZzKChfX3ZlY3RvciBzaWduZWQgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHNpZ25lZCBpbnQpX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMDsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfZXEoX192ZWN0b3IgX19ib29sIGludCBfX2EsIF9fdmVjdG9yIF9fYm9vbCBpbnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNlcWZzKChfX3ZlY3RvciBzaWduZWQgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHNpZ25lZCBpbnQpX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMDsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfZXEoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNlcWdzKF9fYSwgX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMDsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfZXEoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNlcWdzKF9fYSwgKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMDsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfZXEoX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNlcWdzKChfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYSwgX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMDsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfZXEoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjZXFncygoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDA7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2VxKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNlcWdzKChfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMDsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfZXEoX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2VxZ3MoKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAwOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9lcShfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIF9fYSwgX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZyBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2VxZ3MoKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAwOwp9CgojaWYgX19BUkNIX18gPj0gMTIKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfZXEoX192ZWN0b3IgZmxvYXQgX19hLCBfX3ZlY3RvciBmbG9hdCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92ZmNlc2JzKF9fYSwgX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMDsKfQojZW5kaWYKCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2VxKF9fdmVjdG9yIGRvdWJsZSBfX2EsIF9fdmVjdG9yIGRvdWJsZSBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92ZmNlZGJzKF9fYSwgX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMDsKfQoKLyotLSB2ZWNfYWxsX25lIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfbmUoX192ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2VxYnMoX19hLCBfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAzOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9uZShfX3ZlY3RvciBzaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjZXFicyhfX2EsIChfX3ZlY3RvciBzaWduZWQgY2hhcilfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAzOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9uZShfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2EsIF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjZXFicygoX192ZWN0b3Igc2lnbmVkIGNoYXIpX19hLCBfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAzOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9uZShfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2VxYnMoKF9fdmVjdG9yIHNpZ25lZCBjaGFyKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHNpZ25lZCBjaGFyKV9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDM7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX25lKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2VxYnMoKF9fdmVjdG9yIHNpZ25lZCBjaGFyKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHNpZ25lZCBjaGFyKV9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDM7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX25lKF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2VxYnMoKF9fdmVjdG9yIHNpZ25lZCBjaGFyKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHNpZ25lZCBjaGFyKV9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDM7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX25lKF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYSwgX192ZWN0b3IgX19ib29sIGNoYXIgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNlcWJzKChfX3ZlY3RvciBzaWduZWQgY2hhcilfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciBzaWduZWQgY2hhcilfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAzOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9uZShfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNlcWhzKF9fYSwgX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMzsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfbmUoX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgX19ib29sIHNob3J0IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjZXFocyhfX2EsIChfX3ZlY3RvciBzaWduZWQgc2hvcnQpX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMzsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfbmUoX192ZWN0b3IgX19ib29sIHNob3J0IF9fYSwgX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjZXFocygoX192ZWN0b3Igc2lnbmVkIHNob3J0KV9fYSwgX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMzsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfbmUoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2VxaHMoKF9fdmVjdG9yIHNpZ25lZCBzaG9ydClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciBzaWduZWQgc2hvcnQpX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMzsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfbmUoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNlcWhzKChfX3ZlY3RvciBzaWduZWQgc2hvcnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3Igc2lnbmVkIHNob3J0KV9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDM7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX25lKF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjZXFocygoX192ZWN0b3Igc2lnbmVkIHNob3J0KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHNpZ25lZCBzaG9ydClfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAzOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9uZShfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19hLCBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNlcWhzKChfX3ZlY3RvciBzaWduZWQgc2hvcnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3Igc2lnbmVkIHNob3J0KV9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDM7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX25lKF9fdmVjdG9yIHNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciBzaWduZWQgaW50IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjZXFmcyhfX2EsIF9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDM7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX25lKF9fdmVjdG9yIHNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjZXFmcyhfX2EsIChfX3ZlY3RvciBzaWduZWQgaW50KV9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDM7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX25lKF9fdmVjdG9yIF9fYm9vbCBpbnQgX19hLCBfX3ZlY3RvciBzaWduZWQgaW50IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjZXFmcygoX192ZWN0b3Igc2lnbmVkIGludClfX2EsIF9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDM7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX25lKF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2VxZnMoKF9fdmVjdG9yIHNpZ25lZCBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3Igc2lnbmVkIGludClfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAzOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9uZShfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjZXFmcygoX192ZWN0b3Igc2lnbmVkIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciBzaWduZWQgaW50KV9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDM7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX25lKF9fdmVjdG9yIF9fYm9vbCBpbnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNlcWZzKChfX3ZlY3RvciBzaWduZWQgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHNpZ25lZCBpbnQpX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMzsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfbmUoX192ZWN0b3IgX19ib29sIGludCBfX2EsIF9fdmVjdG9yIF9fYm9vbCBpbnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNlcWZzKChfX3ZlY3RvciBzaWduZWQgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHNpZ25lZCBpbnQpX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMzsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfbmUoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNlcWdzKF9fYSwgX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMzsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfbmUoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNlcWdzKF9fYSwgKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMzsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfbmUoX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNlcWdzKChfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYSwgX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMzsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfbmUoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjZXFncygoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDM7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX25lKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNlcWdzKChfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMzsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfbmUoX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2VxZ3MoKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAzOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9uZShfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIF9fYSwgX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZyBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2VxZ3MoKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAzOwp9CgojaWYgX19BUkNIX18gPj0gMTIKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfbmUoX192ZWN0b3IgZmxvYXQgX19hLCBfX3ZlY3RvciBmbG9hdCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92ZmNlc2JzKF9fYSwgX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMzsKfQojZW5kaWYKCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX25lKF9fdmVjdG9yIGRvdWJsZSBfX2EsIF9fdmVjdG9yIGRvdWJsZSBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92ZmNlZGJzKF9fYSwgX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMzsKfQoKLyotLSB2ZWNfYWxsX2dlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfZ2UoX192ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hicyhfX2IsIF9fYSwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDM7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2dlKF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgX19ib29sIGNoYXIgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNoYnMoKF9fdmVjdG9yIHNpZ25lZCBjaGFyKV9fYiwgX19hLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMzsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfZ2UoX192ZWN0b3IgX19ib29sIGNoYXIgX19hLCBfX3ZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hicyhfX2IsIChfX3ZlY3RvciBzaWduZWQgY2hhcilfX2EsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAzOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9nZShfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hsYnMoX19iLCBfX2EsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAzOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9nZShfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgX19ib29sIGNoYXIgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNobGJzKChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYiwgX19hLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMzsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfZ2UoX192ZWN0b3IgX19ib29sIGNoYXIgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxicyhfX2IsIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDM7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2dlKF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYSwgX192ZWN0b3IgX19ib29sIGNoYXIgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNobGJzKChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMzsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfZ2UoX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGhzKF9fYiwgX19hLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMzsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfZ2UoX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgX19ib29sIHNob3J0IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGhzKChfX3ZlY3RvciBzaWduZWQgc2hvcnQpX19iLCBfX2EsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAzOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9nZShfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19hLCBfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNoaHMoX19iLCAoX192ZWN0b3Igc2lnbmVkIHNob3J0KV9fYSwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDM7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2dlKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNobGhzKF9fYiwgX19hLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMzsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfZ2UoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNobGhzKChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2IsIF9fYSwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDM7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2dlKF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxocyhfX2IsIChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2EsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAzOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9nZShfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19hLCBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNobGhzKChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2EsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAzOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9nZShfX3ZlY3RvciBzaWduZWQgaW50IF9fYSwgX192ZWN0b3Igc2lnbmVkIGludCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hmcyhfX2IsIF9fYSwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDM7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2dlKF9fdmVjdG9yIHNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGZzKChfX3ZlY3RvciBzaWduZWQgaW50KV9fYiwgX19hLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMzsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfZ2UoX192ZWN0b3IgX19ib29sIGludCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBpbnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNoZnMoX19iLCAoX192ZWN0b3Igc2lnbmVkIGludClfX2EsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAzOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9nZShfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNobGZzKF9fYiwgX19hLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMzsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfZ2UoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgX192ZWN0b3IgX19ib29sIGludCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hsZnMoKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2IsIF9fYSwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDM7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2dlKF9fdmVjdG9yIF9fYm9vbCBpbnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNobGZzKF9fYiwgKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2EsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAzOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9nZShfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYSwgX192ZWN0b3IgX19ib29sIGludCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hsZnMoKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19hLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMzsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfZ2UoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNoZ3MoX19iLCBfX2EsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAzOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9nZShfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZyBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hncygoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2IsIF9fYSwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDM7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2dlKF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGdzKF9fYiwgKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19hLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMzsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfZ2UoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxncyhfX2IsIF9fYSwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDM7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2dlKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNobGdzKChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19iLCBfX2EsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAzOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9nZShfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxncyhfX2IsIChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19hLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMzsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfZ2UoX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNobGdzKChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19iLAogICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYSwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDM7Cn0KCiNpZiBfX0FSQ0hfXyA+PSAxMgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9nZShfX3ZlY3RvciBmbG9hdCBfX2EsIF9fdmVjdG9yIGZsb2F0IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZmY2hlc2JzKF9fYSwgX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMDsKfQojZW5kaWYKCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2dlKF9fdmVjdG9yIGRvdWJsZSBfX2EsIF9fdmVjdG9yIGRvdWJsZSBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92ZmNoZWRicyhfX2EsIF9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDA7Cn0KCi8qLS0gdmVjX2FsbF9ndCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2d0KF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNoYnMoX19hLCBfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAwOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9ndChfX3ZlY3RvciBzaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGJzKF9fYSwgKF9fdmVjdG9yIHNpZ25lZCBjaGFyKV9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDA7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2d0KF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYSwgX192ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNoYnMoKF9fdmVjdG9yIHNpZ25lZCBjaGFyKV9fYSwgX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMDsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfZ3QoX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNobGJzKF9fYSwgX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMDsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfZ3QoX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxicyhfX2EsIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDA7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2d0KF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hsYnMoKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCBfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAwOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9ndChfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2EsIF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxicygoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDA7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2d0KF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hocyhfX2EsIF9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDA7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2d0KF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hocyhfX2EsIChfX3ZlY3RvciBzaWduZWQgc2hvcnQpX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMDsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfZ3QoX192ZWN0b3IgX19ib29sIHNob3J0IF9fYSwgX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGhzKChfX3ZlY3RvciBzaWduZWQgc2hvcnQpX19hLCBfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAwOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9ndChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxocyhfX2EsIF9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDA7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2d0KF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgX19ib29sIHNob3J0IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxocyhfX2EsIChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAwOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9ndChfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hsaHMoKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYSwgX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMDsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfZ3QoX192ZWN0b3IgX19ib29sIHNob3J0IF9fYSwgX192ZWN0b3IgX19ib29sIHNob3J0IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxocygoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMDsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfZ3QoX192ZWN0b3Igc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBpbnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNoZnMoX19hLCBfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAwOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9ndChfX3ZlY3RvciBzaWduZWQgaW50IF9fYSwgX192ZWN0b3IgX19ib29sIGludCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hmcyhfX2EsIChfX3ZlY3RvciBzaWduZWQgaW50KV9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDA7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2d0KF9fdmVjdG9yIF9fYm9vbCBpbnQgX19hLCBfX3ZlY3RvciBzaWduZWQgaW50IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGZzKChfX3ZlY3RvciBzaWduZWQgaW50KV9fYSwgX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMDsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfZ3QoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxmcyhfX2EsIF9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDA7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2d0KF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIF9fYm9vbCBpbnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNobGZzKF9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAwOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9ndChfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxmcygoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYSwgX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMDsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfZ3QoX192ZWN0b3IgX19ib29sIGludCBfX2EsIF9fdmVjdG9yIF9fYm9vbCBpbnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNobGZzKChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDA7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2d0KF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGdzKF9fYSwgX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMDsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfZ3QoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNoZ3MoX19hLCAoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAwOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9ndChfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIF9fYSwgX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hncygoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2EsIF9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDA7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2d0KF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hsZ3MoX19hLCBfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAwOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9ndChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxncyhfX2EsIChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMDsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfZ3QoX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hsZ3MoKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2EsIF9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDA7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2d0KF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxncygoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAwOwp9CgojaWYgX19BUkNIX18gPj0gMTIKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfZ3QoX192ZWN0b3IgZmxvYXQgX19hLCBfX3ZlY3RvciBmbG9hdCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92ZmNoc2JzKF9fYSwgX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMDsKfQojZW5kaWYKCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2d0KF9fdmVjdG9yIGRvdWJsZSBfX2EsIF9fdmVjdG9yIGRvdWJsZSBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92ZmNoZGJzKF9fYSwgX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMDsKfQoKLyotLSB2ZWNfYWxsX2xlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfbGUoX192ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hicyhfX2EsIF9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDM7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2xlKF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgX19ib29sIGNoYXIgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNoYnMoX19hLCAoX192ZWN0b3Igc2lnbmVkIGNoYXIpX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMzsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfbGUoX192ZWN0b3IgX19ib29sIGNoYXIgX19hLCBfX3ZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hicygoX192ZWN0b3Igc2lnbmVkIGNoYXIpX19hLCBfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAzOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9sZShfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hsYnMoX19hLCBfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAzOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9sZShfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgX19ib29sIGNoYXIgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNobGJzKF9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMzsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfbGUoX192ZWN0b3IgX19ib29sIGNoYXIgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxicygoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsIF9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDM7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2xlKF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYSwgX192ZWN0b3IgX19ib29sIGNoYXIgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNobGJzKChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMzsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfbGUoX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGhzKF9fYSwgX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMzsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfbGUoX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgX19ib29sIHNob3J0IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGhzKF9fYSwgKF9fdmVjdG9yIHNpZ25lZCBzaG9ydClfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAzOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9sZShfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19hLCBfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNoaHMoKF9fdmVjdG9yIHNpZ25lZCBzaG9ydClfX2EsIF9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDM7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2xlKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNobGhzKF9fYSwgX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMzsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfbGUoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNobGhzKF9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDM7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2xlKF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxocygoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19hLCBfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAzOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9sZShfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19hLCBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNobGhzKChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAzOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9sZShfX3ZlY3RvciBzaWduZWQgaW50IF9fYSwgX192ZWN0b3Igc2lnbmVkIGludCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hmcyhfX2EsIF9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDM7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2xlKF9fdmVjdG9yIHNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGZzKF9fYSwgKF9fdmVjdG9yIHNpZ25lZCBpbnQpX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMzsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfbGUoX192ZWN0b3IgX19ib29sIGludCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBpbnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNoZnMoKF9fdmVjdG9yIHNpZ25lZCBpbnQpX19hLCBfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAzOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9sZShfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNobGZzKF9fYSwgX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMzsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfbGUoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgX192ZWN0b3IgX19ib29sIGludCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hsZnMoX19hLCAoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDM7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2xlKF9fdmVjdG9yIF9fYm9vbCBpbnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNobGZzKChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19hLCBfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAzOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9sZShfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYSwgX192ZWN0b3IgX19ib29sIGludCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hsZnMoKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMzsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfbGUoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNoZ3MoX19hLCBfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAzOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9sZShfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZyBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hncyhfX2EsIChfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDM7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2xlKF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGdzKChfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYSwgX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMzsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfbGUoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxncyhfX2EsIF9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDM7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2xlKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNobGdzKF9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAzOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9sZShfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxncygoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYSwgX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMzsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfbGUoX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNobGdzKChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDM7Cn0KCiNpZiBfX0FSQ0hfXyA+PSAxMgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9sZShfX3ZlY3RvciBmbG9hdCBfX2EsIF9fdmVjdG9yIGZsb2F0IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZmY2hlc2JzKF9fYiwgX19hLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMDsKfQojZW5kaWYKCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2xlKF9fdmVjdG9yIGRvdWJsZSBfX2EsIF9fdmVjdG9yIGRvdWJsZSBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92ZmNoZWRicyhfX2IsIF9fYSwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDA7Cn0KCi8qLS0gdmVjX2FsbF9sdCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2x0KF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNoYnMoX19iLCBfX2EsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAwOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9sdChfX3ZlY3RvciBzaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGJzKChfX3ZlY3RvciBzaWduZWQgY2hhcilfX2IsIF9fYSwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDA7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2x0KF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYSwgX192ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNoYnMoX19iLCAoX192ZWN0b3Igc2lnbmVkIGNoYXIpX19hLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMDsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfbHQoX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNobGJzKF9fYiwgX19hLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMDsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfbHQoX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxicygoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IsIF9fYSwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDA7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2x0KF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hsYnMoX19iLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAwOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9sdChfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2EsIF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxicygoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDA7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2x0KF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hocyhfX2IsIF9fYSwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDA7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2x0KF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hocygoX192ZWN0b3Igc2lnbmVkIHNob3J0KV9fYiwgX19hLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMDsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfbHQoX192ZWN0b3IgX19ib29sIHNob3J0IF9fYSwgX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGhzKF9fYiwgKF9fdmVjdG9yIHNpZ25lZCBzaG9ydClfX2EsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAwOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9sdChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxocyhfX2IsIF9fYSwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDA7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2x0KF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgX19ib29sIHNob3J0IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxocygoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19iLCBfX2EsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAwOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9sdChfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hsaHMoX19iLCAoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19hLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMDsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfbHQoX192ZWN0b3IgX19ib29sIHNob3J0IF9fYSwgX192ZWN0b3IgX19ib29sIHNob3J0IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxocygoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19iLAogICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19hLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMDsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfbHQoX192ZWN0b3Igc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBpbnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNoZnMoX19iLCBfX2EsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAwOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9sdChfX3ZlY3RvciBzaWduZWQgaW50IF9fYSwgX192ZWN0b3IgX19ib29sIGludCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hmcygoX192ZWN0b3Igc2lnbmVkIGludClfX2IsIF9fYSwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDA7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2x0KF9fdmVjdG9yIF9fYm9vbCBpbnQgX19hLCBfX3ZlY3RvciBzaWduZWQgaW50IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGZzKF9fYiwgKF9fdmVjdG9yIHNpZ25lZCBpbnQpX19hLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMDsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfbHQoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxmcyhfX2IsIF9fYSwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDA7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2x0KF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIF9fYm9vbCBpbnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNobGZzKChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19iLCBfX2EsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAwOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9sdChfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxmcyhfX2IsIChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19hLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMDsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfbHQoX192ZWN0b3IgX19ib29sIGludCBfX2EsIF9fdmVjdG9yIF9fYm9vbCBpbnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNobGZzKChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19iLAogICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYSwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDA7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2x0KF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGdzKF9fYiwgX19hLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMDsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfbHQoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNoZ3MoKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19iLCBfX2EsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAwOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9sdChfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIF9fYSwgX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hncyhfX2IsIChfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYSwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDA7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2x0KF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hsZ3MoX19iLCBfX2EsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAwOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9sdChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxncygoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYiwgX19hLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMDsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfbHQoX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hsZ3MoX19iLCAoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYSwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDA7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2x0KF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxncygoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2EsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAwOwp9CgojaWYgX19BUkNIX18gPj0gMTIKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfbHQoX192ZWN0b3IgZmxvYXQgX19hLCBfX3ZlY3RvciBmbG9hdCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92ZmNoc2JzKF9fYiwgX19hLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMDsKfQojZW5kaWYKCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX2x0KF9fdmVjdG9yIGRvdWJsZSBfX2EsIF9fdmVjdG9yIGRvdWJsZSBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92ZmNoZGJzKF9fYiwgX19hLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMDsKfQoKLyotLSB2ZWNfYWxsX25nZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKI2lmIF9fQVJDSF9fID49IDEyCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX25nZShfX3ZlY3RvciBmbG9hdCBfX2EsIF9fdmVjdG9yIGZsb2F0IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZmY2hlc2JzKF9fYSwgX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMzsKfQojZW5kaWYKCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX25nZShfX3ZlY3RvciBkb3VibGUgX19hLCBfX3ZlY3RvciBkb3VibGUgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmZjaGVkYnMoX19hLCBfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAzOwp9CgovKi0tIHZlY19hbGxfbmd0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgojaWYgX19BUkNIX18gPj0gMTIKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfbmd0KF9fdmVjdG9yIGZsb2F0IF9fYSwgX192ZWN0b3IgZmxvYXQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmZjaHNicyhfX2EsIF9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDM7Cn0KI2VuZGlmCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9uZ3QoX192ZWN0b3IgZG91YmxlIF9fYSwgX192ZWN0b3IgZG91YmxlIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZmY2hkYnMoX19hLCBfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAzOwp9CgovKi0tIHZlY19hbGxfbmxlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgojaWYgX19BUkNIX18gPj0gMTIKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfbmxlKF9fdmVjdG9yIGZsb2F0IF9fYSwgX192ZWN0b3IgZmxvYXQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmZjaGVzYnMoX19iLCBfX2EsICZfX2NjKTsKICByZXR1cm4gX19jYyA9PSAzOwp9CiNlbmRpZgoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbGxfbmxlKF9fdmVjdG9yIGRvdWJsZSBfX2EsIF9fdmVjdG9yIGRvdWJsZSBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92ZmNoZWRicyhfX2IsIF9fYSwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDM7Cn0KCi8qLS0gdmVjX2FsbF9ubHQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCiNpZiBfX0FSQ0hfXyA+PSAxMgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9ubHQoX192ZWN0b3IgZmxvYXQgX19hLCBfX3ZlY3RvciBmbG9hdCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92ZmNoc2JzKF9fYiwgX19hLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMzsKfQojZW5kaWYKCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX25sdChfX3ZlY3RvciBkb3VibGUgX19hLCBfX3ZlY3RvciBkb3VibGUgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmZjaGRicyhfX2IsIF9fYSwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDM7Cn0KCi8qLS0gdmVjX2FsbF9uYW4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCiNpZiBfX0FSQ0hfXyA+PSAxMgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FsbF9uYW4oX192ZWN0b3IgZmxvYXQgX19hKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmZ0Y2lzYihfX2EsIDE1LCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMDsKfQojZW5kaWYKCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX25hbihfX3ZlY3RvciBkb3VibGUgX19hKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmZ0Y2lkYihfX2EsIDE1LCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMDsKfQoKLyotLSB2ZWNfYWxsX251bWVyaWMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKI2lmIF9fQVJDSF9fID49IDEyCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX251bWVyaWMoX192ZWN0b3IgZmxvYXQgX19hKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmZ0Y2lzYihfX2EsIDE1LCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPT0gMzsKfQojZW5kaWYKCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYWxsX251bWVyaWMoX192ZWN0b3IgZG91YmxlIF9fYSkgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZmdGNpZGIoX19hLCAxNSwgJl9fY2MpOwogIHJldHVybiBfX2NjID09IDM7Cn0KCi8qLS0gdmVjX2FueV9lcSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2VxKF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNlcWJzKF9fYSwgX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPD0gMTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfZXEoX192ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2VxYnMoX19hLCAoX192ZWN0b3Igc2lnbmVkIGNoYXIpX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPD0gMTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfZXEoX192ZWN0b3IgX19ib29sIGNoYXIgX19hLCBfX3ZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2VxYnMoKF9fdmVjdG9yIHNpZ25lZCBjaGFyKV9fYSwgX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPD0gMTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfZXEoX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNlcWJzKChfX3ZlY3RvciBzaWduZWQgY2hhcilfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciBzaWduZWQgY2hhcilfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA8PSAxOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9lcShfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgX19ib29sIGNoYXIgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNlcWJzKChfX3ZlY3RvciBzaWduZWQgY2hhcilfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciBzaWduZWQgY2hhcilfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA8PSAxOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9lcShfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNlcWJzKChfX3ZlY3RvciBzaWduZWQgY2hhcilfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciBzaWduZWQgY2hhcilfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA8PSAxOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9lcShfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2EsIF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjZXFicygoX192ZWN0b3Igc2lnbmVkIGNoYXIpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3Igc2lnbmVkIGNoYXIpX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPD0gMTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfZXEoX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjZXFocyhfX2EsIF9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjIDw9IDE7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2VxKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2VxaHMoX19hLCAoX192ZWN0b3Igc2lnbmVkIHNob3J0KV9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjIDw9IDE7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2VxKF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2VxaHMoKF9fdmVjdG9yIHNpZ25lZCBzaG9ydClfX2EsIF9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjIDw9IDE7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2VxKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNlcWhzKChfX3ZlY3RvciBzaWduZWQgc2hvcnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3Igc2lnbmVkIHNob3J0KV9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjIDw9IDE7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2VxKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgX19ib29sIHNob3J0IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjZXFocygoX192ZWN0b3Igc2lnbmVkIHNob3J0KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHNpZ25lZCBzaG9ydClfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA8PSAxOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9lcShfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2VxaHMoKF9fdmVjdG9yIHNpZ25lZCBzaG9ydClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciBzaWduZWQgc2hvcnQpX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPD0gMTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfZXEoX192ZWN0b3IgX19ib29sIHNob3J0IF9fYSwgX192ZWN0b3IgX19ib29sIHNob3J0IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjZXFocygoX192ZWN0b3Igc2lnbmVkIHNob3J0KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHNpZ25lZCBzaG9ydClfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA8PSAxOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9lcShfX3ZlY3RvciBzaWduZWQgaW50IF9fYSwgX192ZWN0b3Igc2lnbmVkIGludCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2VxZnMoX19hLCBfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA8PSAxOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9lcShfX3ZlY3RvciBzaWduZWQgaW50IF9fYSwgX192ZWN0b3IgX19ib29sIGludCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2VxZnMoX19hLCAoX192ZWN0b3Igc2lnbmVkIGludClfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA8PSAxOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9lcShfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYSwgX192ZWN0b3Igc2lnbmVkIGludCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2VxZnMoKF9fdmVjdG9yIHNpZ25lZCBpbnQpX19hLCBfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA8PSAxOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9lcShfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNlcWZzKChfX3ZlY3RvciBzaWduZWQgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHNpZ25lZCBpbnQpX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPD0gMTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfZXEoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgX192ZWN0b3IgX19ib29sIGludCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2VxZnMoKF9fdmVjdG9yIHNpZ25lZCBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3Igc2lnbmVkIGludClfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA8PSAxOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9lcShfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjZXFmcygoX192ZWN0b3Igc2lnbmVkIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciBzaWduZWQgaW50KV9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjIDw9IDE7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2VxKF9fdmVjdG9yIF9fYm9vbCBpbnQgX19hLCBfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjZXFmcygoX192ZWN0b3Igc2lnbmVkIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciBzaWduZWQgaW50KV9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjIDw9IDE7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2VxKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjZXFncyhfX2EsIF9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjIDw9IDE7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2VxKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjZXFncyhfX2EsIChfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjIDw9IDE7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2VxKF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjZXFncygoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2EsIF9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjIDw9IDE7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2VxKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2VxZ3MoKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA8PSAxOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9lcShfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjZXFncygoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjIDw9IDE7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2VxKF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNlcWdzKChfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPD0gMTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfZXEoX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNlcWdzKChfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPD0gMTsKfQoKI2lmIF9fQVJDSF9fID49IDEyCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2VxKF9fdmVjdG9yIGZsb2F0IF9fYSwgX192ZWN0b3IgZmxvYXQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmZjZXNicyhfX2EsIF9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjIDw9IDE7Cn0KI2VuZGlmCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9lcShfX3ZlY3RvciBkb3VibGUgX19hLCBfX3ZlY3RvciBkb3VibGUgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmZjZWRicyhfX2EsIF9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjIDw9IDE7Cn0KCi8qLS0gdmVjX2FueV9uZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X25lKF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNlcWJzKF9fYSwgX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgIT0gMDsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfbmUoX192ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2VxYnMoX19hLCAoX192ZWN0b3Igc2lnbmVkIGNoYXIpX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgIT0gMDsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfbmUoX192ZWN0b3IgX19ib29sIGNoYXIgX19hLCBfX3ZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2VxYnMoKF9fdmVjdG9yIHNpZ25lZCBjaGFyKV9fYSwgX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgIT0gMDsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfbmUoX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNlcWJzKChfX3ZlY3RvciBzaWduZWQgY2hhcilfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciBzaWduZWQgY2hhcilfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyAhPSAwOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9uZShfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgX19ib29sIGNoYXIgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNlcWJzKChfX3ZlY3RvciBzaWduZWQgY2hhcilfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciBzaWduZWQgY2hhcilfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyAhPSAwOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9uZShfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNlcWJzKChfX3ZlY3RvciBzaWduZWQgY2hhcilfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciBzaWduZWQgY2hhcilfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyAhPSAwOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9uZShfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2EsIF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjZXFicygoX192ZWN0b3Igc2lnbmVkIGNoYXIpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3Igc2lnbmVkIGNoYXIpX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgIT0gMDsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfbmUoX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjZXFocyhfX2EsIF9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjICE9IDA7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X25lKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2VxaHMoX19hLCAoX192ZWN0b3Igc2lnbmVkIHNob3J0KV9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjICE9IDA7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X25lKF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2VxaHMoKF9fdmVjdG9yIHNpZ25lZCBzaG9ydClfX2EsIF9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjICE9IDA7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X25lKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNlcWhzKChfX3ZlY3RvciBzaWduZWQgc2hvcnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3Igc2lnbmVkIHNob3J0KV9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjICE9IDA7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X25lKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgX19ib29sIHNob3J0IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjZXFocygoX192ZWN0b3Igc2lnbmVkIHNob3J0KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHNpZ25lZCBzaG9ydClfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyAhPSAwOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9uZShfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2VxaHMoKF9fdmVjdG9yIHNpZ25lZCBzaG9ydClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciBzaWduZWQgc2hvcnQpX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgIT0gMDsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfbmUoX192ZWN0b3IgX19ib29sIHNob3J0IF9fYSwgX192ZWN0b3IgX19ib29sIHNob3J0IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjZXFocygoX192ZWN0b3Igc2lnbmVkIHNob3J0KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHNpZ25lZCBzaG9ydClfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyAhPSAwOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9uZShfX3ZlY3RvciBzaWduZWQgaW50IF9fYSwgX192ZWN0b3Igc2lnbmVkIGludCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2VxZnMoX19hLCBfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyAhPSAwOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9uZShfX3ZlY3RvciBzaWduZWQgaW50IF9fYSwgX192ZWN0b3IgX19ib29sIGludCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2VxZnMoX19hLCAoX192ZWN0b3Igc2lnbmVkIGludClfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyAhPSAwOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9uZShfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYSwgX192ZWN0b3Igc2lnbmVkIGludCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2VxZnMoKF9fdmVjdG9yIHNpZ25lZCBpbnQpX19hLCBfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyAhPSAwOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9uZShfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNlcWZzKChfX3ZlY3RvciBzaWduZWQgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHNpZ25lZCBpbnQpX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgIT0gMDsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfbmUoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgX192ZWN0b3IgX19ib29sIGludCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2VxZnMoKF9fdmVjdG9yIHNpZ25lZCBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3Igc2lnbmVkIGludClfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyAhPSAwOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9uZShfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjZXFmcygoX192ZWN0b3Igc2lnbmVkIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciBzaWduZWQgaW50KV9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjICE9IDA7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X25lKF9fdmVjdG9yIF9fYm9vbCBpbnQgX19hLCBfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjZXFmcygoX192ZWN0b3Igc2lnbmVkIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciBzaWduZWQgaW50KV9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjICE9IDA7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X25lKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjZXFncyhfX2EsIF9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjICE9IDA7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X25lKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjZXFncyhfX2EsIChfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjICE9IDA7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X25lKF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjZXFncygoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2EsIF9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjICE9IDA7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X25lKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2VxZ3MoKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyAhPSAwOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9uZShfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjZXFncygoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjICE9IDA7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X25lKF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNlcWdzKChfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgIT0gMDsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfbmUoX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNlcWdzKChfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgIT0gMDsKfQoKI2lmIF9fQVJDSF9fID49IDEyCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X25lKF9fdmVjdG9yIGZsb2F0IF9fYSwgX192ZWN0b3IgZmxvYXQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmZjZXNicyhfX2EsIF9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjICE9IDA7Cn0KI2VuZGlmCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9uZShfX3ZlY3RvciBkb3VibGUgX19hLCBfX3ZlY3RvciBkb3VibGUgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmZjZWRicyhfX2EsIF9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjICE9IDA7Cn0KCi8qLS0gdmVjX2FueV9nZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2dlKF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNoYnMoX19iLCBfX2EsICZfX2NjKTsKICByZXR1cm4gX19jYyAhPSAwOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9nZShfX3ZlY3RvciBzaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGJzKChfX3ZlY3RvciBzaWduZWQgY2hhcilfX2IsIF9fYSwgJl9fY2MpOwogIHJldHVybiBfX2NjICE9IDA7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2dlKF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYSwgX192ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNoYnMoX19iLCAoX192ZWN0b3Igc2lnbmVkIGNoYXIpX19hLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgIT0gMDsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfZ2UoX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNobGJzKF9fYiwgX19hLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgIT0gMDsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfZ2UoX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxicygoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IsIF9fYSwgJl9fY2MpOwogIHJldHVybiBfX2NjICE9IDA7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2dlKF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hsYnMoX19iLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsICZfX2NjKTsKICByZXR1cm4gX19jYyAhPSAwOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9nZShfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2EsIF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxicygoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgJl9fY2MpOwogIHJldHVybiBfX2NjICE9IDA7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2dlKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hocyhfX2IsIF9fYSwgJl9fY2MpOwogIHJldHVybiBfX2NjICE9IDA7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2dlKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hocygoX192ZWN0b3Igc2lnbmVkIHNob3J0KV9fYiwgX19hLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgIT0gMDsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfZ2UoX192ZWN0b3IgX19ib29sIHNob3J0IF9fYSwgX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGhzKF9fYiwgKF9fdmVjdG9yIHNpZ25lZCBzaG9ydClfX2EsICZfX2NjKTsKICByZXR1cm4gX19jYyAhPSAwOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9nZShfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxocyhfX2IsIF9fYSwgJl9fY2MpOwogIHJldHVybiBfX2NjICE9IDA7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2dlKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgX19ib29sIHNob3J0IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxocygoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19iLCBfX2EsICZfX2NjKTsKICByZXR1cm4gX19jYyAhPSAwOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9nZShfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hsaHMoX19iLCAoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19hLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgIT0gMDsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfZ2UoX192ZWN0b3IgX19ib29sIHNob3J0IF9fYSwgX192ZWN0b3IgX19ib29sIHNob3J0IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxocygoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19iLAogICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19hLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgIT0gMDsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfZ2UoX192ZWN0b3Igc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBpbnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNoZnMoX19iLCBfX2EsICZfX2NjKTsKICByZXR1cm4gX19jYyAhPSAwOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9nZShfX3ZlY3RvciBzaWduZWQgaW50IF9fYSwgX192ZWN0b3IgX19ib29sIGludCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hmcygoX192ZWN0b3Igc2lnbmVkIGludClfX2IsIF9fYSwgJl9fY2MpOwogIHJldHVybiBfX2NjICE9IDA7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2dlKF9fdmVjdG9yIF9fYm9vbCBpbnQgX19hLCBfX3ZlY3RvciBzaWduZWQgaW50IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGZzKF9fYiwgKF9fdmVjdG9yIHNpZ25lZCBpbnQpX19hLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgIT0gMDsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfZ2UoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxmcyhfX2IsIF9fYSwgJl9fY2MpOwogIHJldHVybiBfX2NjICE9IDA7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2dlKF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIF9fYm9vbCBpbnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNobGZzKChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19iLCBfX2EsICZfX2NjKTsKICByZXR1cm4gX19jYyAhPSAwOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9nZShfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxmcyhfX2IsIChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19hLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgIT0gMDsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfZ2UoX192ZWN0b3IgX19ib29sIGludCBfX2EsIF9fdmVjdG9yIF9fYm9vbCBpbnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNobGZzKChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19iLAogICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYSwgJl9fY2MpOwogIHJldHVybiBfX2NjICE9IDA7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2dlKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGdzKF9fYiwgX19hLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgIT0gMDsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfZ2UoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNoZ3MoKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19iLCBfX2EsICZfX2NjKTsKICByZXR1cm4gX19jYyAhPSAwOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9nZShfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIF9fYSwgX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hncyhfX2IsIChfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYSwgJl9fY2MpOwogIHJldHVybiBfX2NjICE9IDA7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2dlKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hsZ3MoX19iLCBfX2EsICZfX2NjKTsKICByZXR1cm4gX19jYyAhPSAwOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9nZShfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxncygoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYiwgX19hLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgIT0gMDsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfZ2UoX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hsZ3MoX19iLCAoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYSwgJl9fY2MpOwogIHJldHVybiBfX2NjICE9IDA7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2dlKF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxncygoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2EsICZfX2NjKTsKICByZXR1cm4gX19jYyAhPSAwOwp9CgojaWYgX19BUkNIX18gPj0gMTIKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfZ2UoX192ZWN0b3IgZmxvYXQgX19hLCBfX3ZlY3RvciBmbG9hdCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92ZmNoZXNicyhfX2EsIF9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjIDw9IDE7Cn0KI2VuZGlmCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9nZShfX3ZlY3RvciBkb3VibGUgX19hLCBfX3ZlY3RvciBkb3VibGUgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmZjaGVkYnMoX19hLCBfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA8PSAxOwp9CgovKi0tIHZlY19hbnlfZ3QgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9ndChfX3ZlY3RvciBzaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGJzKF9fYSwgX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPD0gMTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfZ3QoX192ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hicyhfX2EsIChfX3ZlY3RvciBzaWduZWQgY2hhcilfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA8PSAxOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9ndChfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2EsIF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGJzKChfX3ZlY3RvciBzaWduZWQgY2hhcilfX2EsIF9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjIDw9IDE7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2d0KF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxicyhfX2EsIF9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjIDw9IDE7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2d0KF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hsYnMoX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA8PSAxOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9ndChfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNobGJzKChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPD0gMTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfZ3QoX192ZWN0b3IgX19ib29sIGNoYXIgX19hLCBfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hsYnMoKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA8PSAxOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9ndChfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNoaHMoX19hLCBfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA8PSAxOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9ndChfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNoaHMoX19hLCAoX192ZWN0b3Igc2lnbmVkIHNob3J0KV9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjIDw9IDE7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2d0KF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hocygoX192ZWN0b3Igc2lnbmVkIHNob3J0KV9fYSwgX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPD0gMTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfZ3QoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hsaHMoX19hLCBfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA8PSAxOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9ndChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hsaHMoX19hLCAoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPD0gMTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfZ3QoX192ZWN0b3IgX19ib29sIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNobGhzKChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2EsIF9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjIDw9IDE7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2d0KF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2EsIF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hsaHMoKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjIDw9IDE7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2d0KF9fdmVjdG9yIHNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciBzaWduZWQgaW50IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGZzKF9fYSwgX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPD0gMTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfZ3QoX192ZWN0b3Igc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIF9fYm9vbCBpbnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNoZnMoX19hLCAoX192ZWN0b3Igc2lnbmVkIGludClfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA8PSAxOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9ndChfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYSwgX192ZWN0b3Igc2lnbmVkIGludCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hmcygoX192ZWN0b3Igc2lnbmVkIGludClfX2EsIF9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjIDw9IDE7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2d0KF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hsZnMoX19hLCBfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA8PSAxOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9ndChfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxmcyhfX2EsIChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPD0gMTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfZ3QoX192ZWN0b3IgX19ib29sIGludCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hsZnMoKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2EsIF9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjIDw9IDE7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2d0KF9fdmVjdG9yIF9fYm9vbCBpbnQgX19hLCBfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxmcygoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA8PSAxOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9ndChfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hncyhfX2EsIF9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjIDw9IDE7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2d0KF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGdzKF9fYSwgKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPD0gMTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfZ3QoX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNoZ3MoKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19hLCBfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA8PSAxOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9ndChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNobGdzKF9fYSwgX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPD0gMTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfZ3QoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZyBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hsZ3MoX19hLCAoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjIDw9IDE7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2d0KF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNobGdzKChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19hLCBfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyA8PSAxOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9ndChfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIF9fYSwgX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZyBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hsZ3MoKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPD0gMTsKfQoKI2lmIF9fQVJDSF9fID49IDEyCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2d0KF9fdmVjdG9yIGZsb2F0IF9fYSwgX192ZWN0b3IgZmxvYXQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmZjaHNicyhfX2EsIF9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjIDw9IDE7Cn0KI2VuZGlmCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9ndChfX3ZlY3RvciBkb3VibGUgX19hLCBfX3ZlY3RvciBkb3VibGUgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmZjaGRicyhfX2EsIF9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjIDw9IDE7Cn0KCi8qLS0gdmVjX2FueV9sZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2xlKF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNoYnMoX19hLCBfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyAhPSAwOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9sZShfX3ZlY3RvciBzaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGJzKF9fYSwgKF9fdmVjdG9yIHNpZ25lZCBjaGFyKV9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjICE9IDA7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2xlKF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYSwgX192ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNoYnMoKF9fdmVjdG9yIHNpZ25lZCBjaGFyKV9fYSwgX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgIT0gMDsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfbGUoX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNobGJzKF9fYSwgX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgIT0gMDsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfbGUoX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxicyhfX2EsIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjICE9IDA7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2xlKF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hsYnMoKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCBfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyAhPSAwOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9sZShfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2EsIF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxicygoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjICE9IDA7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2xlKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hocyhfX2EsIF9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjICE9IDA7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2xlKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hocyhfX2EsIChfX3ZlY3RvciBzaWduZWQgc2hvcnQpX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgIT0gMDsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfbGUoX192ZWN0b3IgX19ib29sIHNob3J0IF9fYSwgX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGhzKChfX3ZlY3RvciBzaWduZWQgc2hvcnQpX19hLCBfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyAhPSAwOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9sZShfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxocyhfX2EsIF9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjICE9IDA7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2xlKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgX19ib29sIHNob3J0IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxocyhfX2EsIChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyAhPSAwOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9sZShfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hsaHMoKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYSwgX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgIT0gMDsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfbGUoX192ZWN0b3IgX19ib29sIHNob3J0IF9fYSwgX192ZWN0b3IgX19ib29sIHNob3J0IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxocygoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgIT0gMDsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfbGUoX192ZWN0b3Igc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBpbnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNoZnMoX19hLCBfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyAhPSAwOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9sZShfX3ZlY3RvciBzaWduZWQgaW50IF9fYSwgX192ZWN0b3IgX19ib29sIGludCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hmcyhfX2EsIChfX3ZlY3RvciBzaWduZWQgaW50KV9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjICE9IDA7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2xlKF9fdmVjdG9yIF9fYm9vbCBpbnQgX19hLCBfX3ZlY3RvciBzaWduZWQgaW50IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGZzKChfX3ZlY3RvciBzaWduZWQgaW50KV9fYSwgX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgIT0gMDsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfbGUoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxmcyhfX2EsIF9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjICE9IDA7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2xlKF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIF9fYm9vbCBpbnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNobGZzKF9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyAhPSAwOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9sZShfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxmcygoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYSwgX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgIT0gMDsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfbGUoX192ZWN0b3IgX19ib29sIGludCBfX2EsIF9fdmVjdG9yIF9fYm9vbCBpbnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNobGZzKChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjICE9IDA7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2xlKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGdzKF9fYSwgX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgIT0gMDsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfbGUoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNoZ3MoX19hLCAoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyAhPSAwOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9sZShfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIF9fYSwgX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hncygoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2EsIF9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjICE9IDA7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2xlKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hsZ3MoX19hLCBfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyAhPSAwOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9sZShfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxncyhfX2EsIChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgIT0gMDsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfbGUoX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hsZ3MoKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2EsIF9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjICE9IDA7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2xlKF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxncygoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyAhPSAwOwp9CgojaWYgX19BUkNIX18gPj0gMTIKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfbGUoX192ZWN0b3IgZmxvYXQgX19hLCBfX3ZlY3RvciBmbG9hdCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92ZmNoZXNicyhfX2IsIF9fYSwgJl9fY2MpOwogIHJldHVybiBfX2NjIDw9IDE7Cn0KI2VuZGlmCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9sZShfX3ZlY3RvciBkb3VibGUgX19hLCBfX3ZlY3RvciBkb3VibGUgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmZjaGVkYnMoX19iLCBfX2EsICZfX2NjKTsKICByZXR1cm4gX19jYyA8PSAxOwp9CgovKi0tIHZlY19hbnlfbHQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9sdChfX3ZlY3RvciBzaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGJzKF9fYiwgX19hLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPD0gMTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfbHQoX192ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hicygoX192ZWN0b3Igc2lnbmVkIGNoYXIpX19iLCBfX2EsICZfX2NjKTsKICByZXR1cm4gX19jYyA8PSAxOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9sdChfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2EsIF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGJzKF9fYiwgKF9fdmVjdG9yIHNpZ25lZCBjaGFyKV9fYSwgJl9fY2MpOwogIHJldHVybiBfX2NjIDw9IDE7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2x0KF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxicyhfX2IsIF9fYSwgJl9fY2MpOwogIHJldHVybiBfX2NjIDw9IDE7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2x0KF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hsYnMoKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iLCBfX2EsICZfX2NjKTsKICByZXR1cm4gX19jYyA8PSAxOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9sdChfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNobGJzKF9fYiwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPD0gMTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfbHQoX192ZWN0b3IgX19ib29sIGNoYXIgX19hLCBfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hsYnMoKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iLAogICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsICZfX2NjKTsKICByZXR1cm4gX19jYyA8PSAxOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9sdChfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNoaHMoX19iLCBfX2EsICZfX2NjKTsKICByZXR1cm4gX19jYyA8PSAxOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9sdChfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNoaHMoKF9fdmVjdG9yIHNpZ25lZCBzaG9ydClfX2IsIF9fYSwgJl9fY2MpOwogIHJldHVybiBfX2NjIDw9IDE7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2x0KF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hocyhfX2IsIChfX3ZlY3RvciBzaWduZWQgc2hvcnQpX19hLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPD0gMTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfbHQoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hsaHMoX19iLCBfX2EsICZfX2NjKTsKICByZXR1cm4gX19jYyA8PSAxOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9sdChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hsaHMoKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYiwgX19hLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPD0gMTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfbHQoX192ZWN0b3IgX19ib29sIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNobGhzKF9fYiwgKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYSwgJl9fY2MpOwogIHJldHVybiBfX2NjIDw9IDE7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2x0KF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2EsIF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hsaHMoKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYSwgJl9fY2MpOwogIHJldHVybiBfX2NjIDw9IDE7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2x0KF9fdmVjdG9yIHNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciBzaWduZWQgaW50IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGZzKF9fYiwgX19hLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPD0gMTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfbHQoX192ZWN0b3Igc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIF9fYm9vbCBpbnQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNoZnMoKF9fdmVjdG9yIHNpZ25lZCBpbnQpX19iLCBfX2EsICZfX2NjKTsKICByZXR1cm4gX19jYyA8PSAxOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9sdChfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYSwgX192ZWN0b3Igc2lnbmVkIGludCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hmcyhfX2IsIChfX3ZlY3RvciBzaWduZWQgaW50KV9fYSwgJl9fY2MpOwogIHJldHVybiBfX2NjIDw9IDE7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2x0KF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hsZnMoX19iLCBfX2EsICZfX2NjKTsKICByZXR1cm4gX19jYyA8PSAxOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9sdChfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxmcygoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYiwgX19hLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPD0gMTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfbHQoX192ZWN0b3IgX19ib29sIGludCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hsZnMoX19iLCAoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYSwgJl9fY2MpOwogIHJldHVybiBfX2NjIDw9IDE7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2x0KF9fdmVjdG9yIF9fYm9vbCBpbnQgX19hLCBfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGxmcygoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2EsICZfX2NjKTsKICByZXR1cm4gX19jYyA8PSAxOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9sdChfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hncyhfX2IsIF9fYSwgJl9fY2MpOwogIHJldHVybiBfX2NjIDw9IDE7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2x0KF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZjaGdzKChfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYiwgX19hLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPD0gMTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfbHQoX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNoZ3MoX19iLCAoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2EsICZfX2NjKTsKICByZXR1cm4gX19jYyA8PSAxOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9sdChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNobGdzKF9fYiwgX19hLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPD0gMTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfbHQoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZyBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hsZ3MoKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2IsIF9fYSwgJl9fY2MpOwogIHJldHVybiBfX2NjIDw9IDE7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2x0KF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmNobGdzKF9fYiwgKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2EsICZfX2NjKTsKICByZXR1cm4gX19jYyA8PSAxOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9sdChfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIF9fYSwgX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZyBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92Y2hsZ3MoKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19hLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgPD0gMTsKfQoKI2lmIF9fQVJDSF9fID49IDEyCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X2x0KF9fdmVjdG9yIGZsb2F0IF9fYSwgX192ZWN0b3IgZmxvYXQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmZjaHNicyhfX2IsIF9fYSwgJl9fY2MpOwogIHJldHVybiBfX2NjIDw9IDE7Cn0KI2VuZGlmCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9sdChfX3ZlY3RvciBkb3VibGUgX19hLCBfX3ZlY3RvciBkb3VibGUgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmZjaGRicyhfX2IsIF9fYSwgJl9fY2MpOwogIHJldHVybiBfX2NjIDw9IDE7Cn0KCi8qLS0gdmVjX2FueV9uZ2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCiNpZiBfX0FSQ0hfXyA+PSAxMgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9uZ2UoX192ZWN0b3IgZmxvYXQgX19hLCBfX3ZlY3RvciBmbG9hdCBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92ZmNoZXNicyhfX2EsIF9fYiwgJl9fY2MpOwogIHJldHVybiBfX2NjICE9IDA7Cn0KI2VuZGlmCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9uZ2UoX192ZWN0b3IgZG91YmxlIF9fYSwgX192ZWN0b3IgZG91YmxlIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZmY2hlZGJzKF9fYSwgX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgIT0gMDsKfQoKLyotLSB2ZWNfYW55X25ndCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKI2lmIF9fQVJDSF9fID49IDEyCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X25ndChfX3ZlY3RvciBmbG9hdCBfX2EsIF9fdmVjdG9yIGZsb2F0IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZmY2hzYnMoX19hLCBfX2IsICZfX2NjKTsKICByZXR1cm4gX19jYyAhPSAwOwp9CiNlbmRpZgoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfbmd0KF9fdmVjdG9yIGRvdWJsZSBfX2EsIF9fdmVjdG9yIGRvdWJsZSBfX2IpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92ZmNoZGJzKF9fYSwgX19iLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgIT0gMDsKfQoKLyotLSB2ZWNfYW55X25sZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKI2lmIF9fQVJDSF9fID49IDEyCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X25sZShfX3ZlY3RvciBmbG9hdCBfX2EsIF9fdmVjdG9yIGZsb2F0IF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZmY2hlc2JzKF9fYiwgX19hLCAmX19jYyk7CiAgcmV0dXJuIF9fY2MgIT0gMDsKfQojZW5kaWYKCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfYW55X25sZShfX3ZlY3RvciBkb3VibGUgX19hLCBfX3ZlY3RvciBkb3VibGUgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmZjaGVkYnMoX19iLCBfX2EsICZfX2NjKTsKICByZXR1cm4gX19jYyAhPSAwOwp9CgovKi0tIHZlY19hbnlfbmx0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgojaWYgX19BUkNIX18gPj0gMTIKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfbmx0KF9fdmVjdG9yIGZsb2F0IF9fYSwgX192ZWN0b3IgZmxvYXQgX19iKSB7CiAgaW50IF9fY2M7CiAgX19idWlsdGluX3MzOTBfdmZjaHNicyhfX2IsIF9fYSwgJl9fY2MpOwogIHJldHVybiBfX2NjICE9IDA7Cn0KI2VuZGlmCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9ubHQoX192ZWN0b3IgZG91YmxlIF9fYSwgX192ZWN0b3IgZG91YmxlIF9fYikgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZmY2hkYnMoX19iLCBfX2EsICZfX2NjKTsKICByZXR1cm4gX19jYyAhPSAwOwp9CgovKi0tIHZlY19hbnlfbmFuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgojaWYgX19BUkNIX18gPj0gMTIKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY19hbnlfbmFuKF9fdmVjdG9yIGZsb2F0IF9fYSkgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZmdGNpc2IoX19hLCAxNSwgJl9fY2MpOwogIHJldHVybiBfX2NjICE9IDM7Cn0KI2VuZGlmCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9uYW4oX192ZWN0b3IgZG91YmxlIF9fYSkgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZmdGNpZGIoX19hLCAxNSwgJl9fY2MpOwogIHJldHVybiBfX2NjICE9IDM7Cn0KCi8qLS0gdmVjX2FueV9udW1lcmljIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCiNpZiBfX0FSQ0hfXyA+PSAxMgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9udW1lcmljKF9fdmVjdG9yIGZsb2F0IF9fYSkgewogIGludCBfX2NjOwogIF9fYnVpbHRpbl9zMzkwX3ZmdGNpc2IoX19hLCAxNSwgJl9fY2MpOwogIHJldHVybiBfX2NjICE9IDA7Cn0KI2VuZGlmCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX2FueV9udW1lcmljKF9fdmVjdG9yIGRvdWJsZSBfX2EpIHsKICBpbnQgX19jYzsKICBfX2J1aWx0aW5fczM5MF92ZnRjaWRiKF9fYSwgMTUsICZfX2NjKTsKICByZXR1cm4gX19jYyAhPSAwOwp9CgovKi0tIHZlY19hbmRjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgY2hhcgp2ZWNfYW5kYyhfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2EsIF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYikgewogIHJldHVybiBfX2EgJiB+X19iOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgY2hhcgp2ZWNfYW5kYyhfX3ZlY3RvciBzaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2EgJiB+X19iOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgY2hhcgp2ZWNfYW5kYyhfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2EsIF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2EgJiB+X19iOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgY2hhcgp2ZWNfYW5kYyhfX3ZlY3RvciBzaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYikgewogIHJldHVybiBfX2EgJiB+X19iOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19hbmRjKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2EgJiB+X19iOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19hbmRjKF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19hICYgfl9fYjsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfYW5kYyhfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgX19ib29sIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYSAmIH5fX2I7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBzaG9ydAp2ZWNfYW5kYyhfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19hLCBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYSAmIH5fX2I7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBzaG9ydAp2ZWNfYW5kYyhfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYSAmIH5fX2I7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBzaG9ydAp2ZWNfYW5kYyhfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19hLCBfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYSAmIH5fX2I7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBzaG9ydAp2ZWNfYW5kYyhfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYSAmIH5fX2I7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0CnZlY19hbmRjKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYSAmIH5fX2I7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0CnZlY19hbmRjKF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiBfX2EgJiB+X19iOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydAp2ZWNfYW5kYyhfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19hICYgfl9fYjsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIGludAp2ZWNfYW5kYyhfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYSwgX192ZWN0b3IgX19ib29sIGludCBfX2IpIHsKICByZXR1cm4gX19hICYgfl9fYjsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGludAp2ZWNfYW5kYyhfX3ZlY3RvciBzaWduZWQgaW50IF9fYSwgX192ZWN0b3Igc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19hICYgfl9fYjsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGludAp2ZWNfYW5kYyhfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYSwgX192ZWN0b3Igc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19hICYgfl9fYjsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGludAp2ZWNfYW5kYyhfX3ZlY3RvciBzaWduZWQgaW50IF9fYSwgX192ZWN0b3IgX19ib29sIGludCBfX2IpIHsKICByZXR1cm4gX19hICYgfl9fYjsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19hbmRjKF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19hICYgfl9fYjsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19hbmRjKF9fdmVjdG9yIF9fYm9vbCBpbnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYSAmIH5fX2I7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGludAp2ZWNfYW5kYyhfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYikgewogIHJldHVybiBfX2EgJiB+X19iOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nCnZlY19hbmRjKF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2EgJiB+X19iOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nCnZlY19hbmRjKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2EgJiB+X19iOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nCnZlY19hbmRjKF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2EgJiB+X19iOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nCnZlY19hbmRjKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2EgJiB+X19iOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcKdmVjX2FuZGMoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2EgJiB+X19iOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcKdmVjX2FuZGMoX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19hICYgfl9fYjsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nCnZlY19hbmRjKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYSAmIH5fX2I7Cn0KCiNpZiBfX0FSQ0hfXyA+PSAxMgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBmbG9hdAp2ZWNfYW5kYyhfX3ZlY3RvciBmbG9hdCBfX2EsIF9fdmVjdG9yIGZsb2F0IF9fYikgewogIHJldHVybiAoX192ZWN0b3IgZmxvYXQpKChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19hICYKICAgICAgICAgICAgICAgICAgICAgICAgIH4oX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYik7Cn0KI2VuZGlmCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBkb3VibGUKdmVjX2FuZGMoX192ZWN0b3IgZG91YmxlIF9fYSwgX192ZWN0b3IgZG91YmxlIF9fYikgewogIHJldHVybiAoX192ZWN0b3IgZG91YmxlKSgoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYSAmCiAgICAgICAgICAgICAgICAgICAgICAgICB+KF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2IpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBkb3VibGUKdmVjX2FuZGMoX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIGRvdWJsZSBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIGRvdWJsZSkoKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2EgJgogICAgICAgICAgICAgICAgICAgICAgICAgfihfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgZG91YmxlCnZlY19hbmRjKF9fdmVjdG9yIGRvdWJsZSBfX2EsIF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBkb3VibGUpKChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19hICYKICAgICAgICAgICAgICAgICAgICAgICAgIH4oX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYik7Cn0KCi8qLS0gdmVjX25vciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBjaGFyCnZlY19ub3IoX192ZWN0b3IgX19ib29sIGNoYXIgX19hLCBfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gfihfX2EgfCBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgY2hhcgp2ZWNfbm9yKF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIH4oX19hIHwgX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGNoYXIKdmVjX25vcihfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2EsIF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiB+KF9fYSB8IF9fYik7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBjaGFyCnZlY19ub3IoX192ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gfihfX2EgfCBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19ub3IoX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIH4oX19hIHwgX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfbm9yKF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gfihfX2EgfCBfX2IpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19ub3IoX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYikgewogIHJldHVybiB+KF9fYSB8IF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBzaG9ydAp2ZWNfbm9yKF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2EsIF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2IpIHsKICByZXR1cm4gfihfX2EgfCBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgc2hvcnQKdmVjX25vcihfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIH4oX19hIHwgX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIHNob3J0CnZlY19ub3IoX192ZWN0b3IgX19ib29sIHNob3J0IF9fYSwgX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiB+KF9fYSB8IF9fYik7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBzaG9ydAp2ZWNfbm9yKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2IpIHsKICByZXR1cm4gfihfX2EgfCBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydAp2ZWNfbm9yKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIH4oX19hIHwgX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX25vcihfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gfihfX2EgfCBfX2IpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydAp2ZWNfbm9yKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgX19ib29sIHNob3J0IF9fYikgewogIHJldHVybiB+KF9fYSB8IF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBpbnQKdmVjX25vcihfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYSwgX192ZWN0b3IgX19ib29sIGludCBfX2IpIHsKICByZXR1cm4gfihfX2EgfCBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgaW50CnZlY19ub3IoX192ZWN0b3Igc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIH4oX19hIHwgX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGludAp2ZWNfbm9yKF9fdmVjdG9yIF9fYm9vbCBpbnQgX19hLCBfX3ZlY3RvciBzaWduZWQgaW50IF9fYikgewogIHJldHVybiB+KF9fYSB8IF9fYik7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBpbnQKdmVjX25vcihfX3ZlY3RvciBzaWduZWQgaW50IF9fYSwgX192ZWN0b3IgX19ib29sIGludCBfX2IpIHsKICByZXR1cm4gfihfX2EgfCBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBpbnQKdmVjX25vcihfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIH4oX19hIHwgX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19ub3IoX192ZWN0b3IgX19ib29sIGludCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gfihfX2EgfCBfX2IpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBpbnQKdmVjX25vcihfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYikgewogIHJldHVybiB+KF9fYSB8IF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcKdmVjX25vcihfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIF9fYSwgX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gfihfX2EgfCBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nCnZlY19ub3IoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIH4oX19hIHwgX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZwp2ZWNfbm9yKF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiB+KF9fYSB8IF9fYik7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcKdmVjX25vcihfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gfihfX2EgfCBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcKdmVjX25vcihfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIH4oX19hIHwgX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nCnZlY19ub3IoX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gfihfX2EgfCBfX2IpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcKdmVjX25vcihfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIF9fYikgewogIHJldHVybiB+KF9fYSB8IF9fYik7Cn0KCiNpZiBfX0FSQ0hfXyA+PSAxMgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBmbG9hdAp2ZWNfbm9yKF9fdmVjdG9yIGZsb2F0IF9fYSwgX192ZWN0b3IgZmxvYXQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBmbG9hdCl+KChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19hIHwKICAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19iKTsKfQojZW5kaWYKCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIGRvdWJsZQp2ZWNfbm9yKF9fdmVjdG9yIGRvdWJsZSBfX2EsIF9fdmVjdG9yIGRvdWJsZSBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIGRvdWJsZSl+KChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19hIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYik7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIGRvdWJsZQp2ZWNfbm9yKF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciBkb3VibGUgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBkb3VibGUpfigoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYSB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2IpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBkb3VibGUKdmVjX25vcihfX3ZlY3RvciBkb3VibGUgX19hLCBfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIF9fYikgewogIHJldHVybiAoX192ZWN0b3IgZG91YmxlKX4oKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2EgfAogICAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19iKTsKfQoKLyotLSB2ZWNfb3JjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKI2lmIF9fQVJDSF9fID49IDEyCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBjaGFyCnZlY19vcmMoX192ZWN0b3IgX19ib29sIGNoYXIgX19hLCBfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gX19hIHwgfl9fYjsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGNoYXIKdmVjX29yYyhfX3ZlY3RvciBzaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2EgfCB+X19iOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19vcmMoX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYSB8IH5fX2I7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBzaG9ydAp2ZWNfb3JjKF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2EsIF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19hIHwgfl9fYjsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIHNob3J0CnZlY19vcmMoX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiBfX2EgfCB+X19iOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydAp2ZWNfb3JjKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYSB8IH5fX2I7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBpbnQKdmVjX29yYyhfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYSwgX192ZWN0b3IgX19ib29sIGludCBfX2IpIHsKICByZXR1cm4gX19hIHwgfl9fYjsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGludAp2ZWNfb3JjKF9fdmVjdG9yIHNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciBzaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX2EgfCB+X19iOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBpbnQKdmVjX29yYyhfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYSB8IH5fX2I7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcKdmVjX29yYyhfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIF9fYSwgX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19hIHwgfl9fYjsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZwp2ZWNfb3JjKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2EgfCB+X19iOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcKdmVjX29yYyhfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYSB8IH5fX2I7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIGZsb2F0CnZlY19vcmMoX192ZWN0b3IgZmxvYXQgX19hLCBfX3ZlY3RvciBmbG9hdCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIGZsb2F0KSgoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYSB8CiAgICAgICAgICAgICAgICAgICAgICAgIH4oX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIGRvdWJsZQp2ZWNfb3JjKF9fdmVjdG9yIGRvdWJsZSBfX2EsIF9fdmVjdG9yIGRvdWJsZSBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIGRvdWJsZSkoKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2EgfAogICAgICAgICAgICAgICAgICAgICAgICAgfihfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19iKTsKfQojZW5kaWYKCi8qLS0gdmVjX25hbmQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCiNpZiBfX0FSQ0hfXyA+PSAxMgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgY2hhcgp2ZWNfbmFuZChfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2EsIF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYikgewogIHJldHVybiB+KF9fYSAmIF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBjaGFyCnZlY19uYW5kKF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIH4oX19hICYgX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfbmFuZChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gfihfX2EgJiBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQKdmVjX25hbmQoX192ZWN0b3IgX19ib29sIHNob3J0IF9fYSwgX192ZWN0b3IgX19ib29sIHNob3J0IF9fYikgewogIHJldHVybiB+KF9fYSAmIF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBzaG9ydAp2ZWNfbmFuZChfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIH4oX19hICYgX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX25hbmQoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gfihfX2EgJiBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgaW50CnZlY19uYW5kKF9fdmVjdG9yIF9fYm9vbCBpbnQgX19hLCBfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYikgewogIHJldHVybiB+KF9fYSAmIF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBpbnQKdmVjX25hbmQoX192ZWN0b3Igc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIH4oX19hICYgX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19uYW5kKF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gfihfX2EgJiBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nCnZlY19uYW5kKF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIF9fYikgewogIHJldHVybiB+KF9fYSAmIF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcKdmVjX25hbmQoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIH4oX19hICYgX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nCnZlY19uYW5kKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gfihfX2EgJiBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBmbG9hdAp2ZWNfbmFuZChfX3ZlY3RvciBmbG9hdCBfX2EsIF9fdmVjdG9yIGZsb2F0IF9fYikgewogIHJldHVybiAoX192ZWN0b3IgZmxvYXQpfigoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYSAmCiAgICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIGRvdWJsZQp2ZWNfbmFuZChfX3ZlY3RvciBkb3VibGUgX19hLCBfX3ZlY3RvciBkb3VibGUgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBkb3VibGUpfigoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYSAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2IpOwp9CiNlbmRpZgoKLyotLSB2ZWNfZXF2IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKI2lmIF9fQVJDSF9fID49IDEyCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBjaGFyCnZlY19lcXYoX192ZWN0b3IgX19ib29sIGNoYXIgX19hLCBfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gfihfX2EgXiBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgY2hhcgp2ZWNfZXF2KF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIH4oX19hIF4gX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfZXF2KF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiB+KF9fYSBeIF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBzaG9ydAp2ZWNfZXF2KF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2EsIF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2IpIHsKICByZXR1cm4gfihfX2EgXiBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgc2hvcnQKdmVjX2VxdihfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIH4oX19hIF4gX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX2VxdihfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiB+KF9fYSBeIF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBpbnQKdmVjX2VxdihfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYSwgX192ZWN0b3IgX19ib29sIGludCBfX2IpIHsKICByZXR1cm4gfihfX2EgXiBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgaW50CnZlY19lcXYoX192ZWN0b3Igc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIH4oX19hIF4gX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19lcXYoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiB+KF9fYSBeIF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcKdmVjX2VxdihfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIF9fYSwgX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gfihfX2EgXiBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nCnZlY19lcXYoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIH4oX19hIF4gX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nCnZlY19lcXYoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiB+KF9fYSBeIF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIGZsb2F0CnZlY19lcXYoX192ZWN0b3IgZmxvYXQgX19hLCBfX3ZlY3RvciBmbG9hdCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIGZsb2F0KX4oKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2EgXgogICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBkb3VibGUKdmVjX2VxdihfX3ZlY3RvciBkb3VibGUgX19hLCBfX3ZlY3RvciBkb3VibGUgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBkb3VibGUpfigoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYSBeCiAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2IpOwp9CiNlbmRpZgoKLyotLSB2ZWNfY250bHogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfY250bHooX192ZWN0b3Igc2lnbmVkIGNoYXIgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZjbHpiKChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIKdmVjX2NudGx6KF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZjbHpiKF9fYSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0CnZlY19jbnRseihfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZjbHpoKChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2EpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydAp2ZWNfY250bHooX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZjbHpoKF9fYSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGludAp2ZWNfY250bHooX192ZWN0b3Igc2lnbmVkIGludCBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmNsemYoKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2EpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBpbnQKdmVjX2NudGx6KF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmNsemYoX19hKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nCnZlY19jbnRseihfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92Y2x6ZygoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZwp2ZWNfY250bHooX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92Y2x6ZyhfX2EpOwp9CgovKi0tIHZlY19jbnR0eiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19jbnR0eihfX3ZlY3RvciBzaWduZWQgY2hhciBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmN0emIoKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfY250dHooX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmN0emIoX19hKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX2NudHR6KF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmN0emgoKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0CnZlY19jbnR0eihfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmN0emgoX19hKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19jbnR0eihfX3ZlY3RvciBzaWduZWQgaW50IF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92Y3R6ZigoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGludAp2ZWNfY250dHooX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92Y3R6ZihfX2EpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcKdmVjX2NudHR6KF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZjdHpnKChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19hKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nCnZlY19jbnR0eihfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZjdHpnKF9fYSk7Cn0KCi8qLS0gdmVjX3BvcGNudCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIKdmVjX3BvcGNudChfX3ZlY3RvciBzaWduZWQgY2hhciBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdnBvcGN0YigoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19wb3BjbnQoX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdnBvcGN0YihfX2EpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydAp2ZWNfcG9wY250KF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdnBvcGN0aCgoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19hKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX3BvcGNudChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdnBvcGN0aChfX2EpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBpbnQKdmVjX3BvcGNudChfX3ZlY3RvciBzaWduZWQgaW50IF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92cG9wY3RmKChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19hKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19wb3BjbnQoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92cG9wY3RmKF9fYSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZwp2ZWNfcG9wY250KF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3Zwb3BjdGcoKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2EpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcKdmVjX3BvcGNudChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3Zwb3BjdGcoX19hKTsKfQoKLyotLSB2ZWNfcmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGNoYXIKdmVjX3JsKF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBjaGFyKV9fYnVpbHRpbl9zMzkwX3ZlcmxsdmIoCiAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsIF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIKdmVjX3JsKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92ZXJsbHZiKF9fYSwgX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIHNob3J0CnZlY19ybChfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBzaG9ydClfX2J1aWx0aW5fczM5MF92ZXJsbHZoKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYSwgX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX3JsKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZlcmxsdmgoX19hLCBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgaW50CnZlY19ybChfX3ZlY3RvciBzaWduZWQgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIGludClfX2J1aWx0aW5fczM5MF92ZXJsbHZmKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2EsIF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGludAp2ZWNfcmwoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92ZXJsbHZmKF9fYSwgX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZwp2ZWNfcmwoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19idWlsdGluX3MzOTBfdmVybGx2ZygKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19hLCBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcKdmVjX3JsKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmVybGx2ZyhfX2EsIF9fYik7Cn0KCi8qLS0gdmVjX3JsaSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBjaGFyCnZlY19ybGkoX192ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCB1bnNpZ25lZCBsb25nIF9fYikgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIGNoYXIpX19idWlsdGluX3MzOTBfdmVybGxiKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoaW50KV9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIKdmVjX3JsaShfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgdW5zaWduZWQgbG9uZyBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmVybGxiKF9fYSwgKGludClfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgc2hvcnQKdmVjX3JsaShfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19hLCB1bnNpZ25lZCBsb25nIF9fYikgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIHNob3J0KV9fYnVpbHRpbl9zMzkwX3ZlcmxsaCgKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2EsIChpbnQpX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX3JsaShfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHVuc2lnbmVkIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZlcmxsaChfX2EsIChpbnQpX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGludAp2ZWNfcmxpKF9fdmVjdG9yIHNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBsb25nIF9fYikgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIGludClfX2J1aWx0aW5fczM5MF92ZXJsbGYoCiAgICAoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYSwgKGludClfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBpbnQKdmVjX3JsaShfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCB1bnNpZ25lZCBsb25nIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92ZXJsbGYoX19hLCAoaW50KV9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcKdmVjX3JsaShfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgdW5zaWduZWQgbG9uZyBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19idWlsdGluX3MzOTBfdmVybGxnKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2EsIChpbnQpX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nCnZlY19ybGkoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgdW5zaWduZWQgbG9uZyBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmVybGxnKF9fYSwgKGludClfX2IpOwp9CgovKi0tIHZlY19ybF9tYXNrIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgpleHRlcm4gX19BVFRSU19vIF9fdmVjdG9yIHNpZ25lZCBjaGFyCnZlY19ybF9tYXNrKF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IsCiAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgX19jKSBfX2NvbnN0YW50KF9fYyk7CgpleHRlcm4gX19BVFRSU19vIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIKdmVjX3JsX21hc2soX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iLAogICAgICAgICAgICB1bnNpZ25lZCBjaGFyIF9fYykgX19jb25zdGFudChfX2MpOwoKZXh0ZXJuIF9fQVRUUlNfbyBfX3ZlY3RvciBzaWduZWQgc2hvcnQKdmVjX3JsX21hc2soX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iLAogICAgICAgICAgICB1bnNpZ25lZCBjaGFyIF9fYykgX19jb25zdGFudChfX2MpOwoKZXh0ZXJuIF9fQVRUUlNfbyBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydAp2ZWNfcmxfbWFzayhfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYiwKICAgICAgICAgICAgdW5zaWduZWQgY2hhciBfX2MpIF9fY29uc3RhbnQoX19jKTsKCmV4dGVybiBfX0FUVFJTX28gX192ZWN0b3Igc2lnbmVkIGludAp2ZWNfcmxfbWFzayhfX3ZlY3RvciBzaWduZWQgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYiwKICAgICAgICAgICAgdW5zaWduZWQgY2hhciBfX2MpIF9fY29uc3RhbnQoX19jKTsKCmV4dGVybiBfX0FUVFJTX28gX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19ybF9tYXNrKF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IsCiAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgX19jKSBfX2NvbnN0YW50KF9fYyk7CgpleHRlcm4gX19BVFRSU19vIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcKdmVjX3JsX21hc2soX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IsCiAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgX19jKSBfX2NvbnN0YW50KF9fYyk7CgpleHRlcm4gX19BVFRSU19vIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZwp2ZWNfcmxfbWFzayhfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iLAogICAgICAgICAgICB1bnNpZ25lZCBjaGFyIF9fYykgX19jb25zdGFudChfX2MpOwoKI2RlZmluZSB2ZWNfcmxfbWFzayhYLCBZLCBaKSAoKF9fdHlwZW9mX18oKHZlY19ybF9tYXNrKSgoWCksIChZKSwgKFopKSkpIFwKICBfX2V4dGVuc2lvbl9fICh7IFwKICAgIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19yZXM7IFwKICAgIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX194ID0gKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpKFgpOyBcCiAgICBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9feSA9IChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKShZKTsgXAogICAgc3dpdGNoIChzaXplb2YgKChYKVswXSkpIHsgXAogICAgY2FzZSAxOiBfX3JlcyA9IChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKSBfX2J1aWx0aW5fczM5MF92ZXJpbWIoIFwKICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9feCwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX194LCBcCiAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX3ksIChaKSk7IGJyZWFrOyBcCiAgICBjYXNlIDI6IF9fcmVzID0gKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpIF9fYnVpbHRpbl9zMzkwX3ZlcmltaCggXAogICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9feCwgKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9feCwgXAogICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9feSwgKFopKTsgYnJlYWs7IFwKICAgIGNhc2UgNDogX19yZXMgPSAoX192ZWN0b3IgdW5zaWduZWQgY2hhcikgX19idWlsdGluX3MzOTBfdmVyaW1mKCBcCiAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgaW50KV9feCwgKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX3gsIFwKICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX195LCAoWikpOyBicmVhazsgXAogICAgZGVmYXVsdDogX19yZXMgPSAoX192ZWN0b3IgdW5zaWduZWQgY2hhcikgX19idWlsdGluX3MzOTBfdmVyaW1nKCBcCiAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9feCwgKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX3gsIFwKICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX195LCAoWikpOyBicmVhazsgXAogICAgfSBfX3JlczsgfSkpCgovKi0tIHZlY19zbGwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgY2hhcgp2ZWNfc2xsKF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBjaGFyKV9fYnVpbHRpbl9zMzkwX3ZzbCgKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGNoYXIKdmVjX3NsbChfX3ZlY3RvciBzaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIGNoYXIpX19idWlsdGluX3MzOTBfdnNsKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgY2hhcgp2ZWNfc2xsKF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIGNoYXIpX19idWlsdGluX3MzOTBfdnNsKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgY2hhcgp2ZWNfc2xsKF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBjaGFyKV9fYnVpbHRpbl9zMzkwX3ZzbCgKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIGNoYXIKdmVjX3NsbChfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIGNoYXIpX19idWlsdGluX3MzOTBfdnNsKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgY2hhcgp2ZWNfc2xsKF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIGNoYXIpX19idWlsdGluX3MzOTBfdnNsKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19zbGwoX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZzbChfX2EsIF9fYik7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIKdmVjX3NsbChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZzbChfX2EsIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYik7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIKdmVjX3NsbChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92c2woX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgc2hvcnQKdmVjX3NsbChfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIHNob3J0KV9fYnVpbHRpbl9zMzkwX3ZzbCgKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIHNob3J0CnZlY19zbGwoX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgc2hvcnQpX19idWlsdGluX3MzOTBfdnNsKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgc2hvcnQKdmVjX3NsbChfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgc2hvcnQpX19idWlsdGluX3MzOTBfdnNsKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQKdmVjX3NsbChfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIHNob3J0KV9fYnVpbHRpbl9zMzkwX3ZzbCgKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIHNob3J0CnZlY19zbGwoX192ZWN0b3IgX19ib29sIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBfX2Jvb2wgc2hvcnQpX19idWlsdGluX3MzOTBfdnNsKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQKdmVjX3NsbChfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBfX2Jvb2wgc2hvcnQpX19idWlsdGluX3MzOTBfdnNsKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydAp2ZWNfc2xsKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYnVpbHRpbl9zMzkwX3ZzbCgKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX3NsbChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiAoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19idWlsdGluX3MzOTBfdnNsKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydAp2ZWNfc2xsKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiAoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19idWlsdGluX3MzOTBfdnNsKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgaW50CnZlY19zbGwoX192ZWN0b3Igc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgaW50KV9fYnVpbHRpbl9zMzkwX3ZzbCgKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGludAp2ZWNfc2xsKF9fdmVjdG9yIHNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBpbnQpX19idWlsdGluX3MzOTBfdnNsKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgaW50CnZlY19zbGwoX192ZWN0b3Igc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBpbnQpX19idWlsdGluX3MzOTBfdnNsKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgaW50CnZlY19zbGwoX192ZWN0b3IgX19ib29sIGludCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBfX2Jvb2wgaW50KV9fYnVpbHRpbl9zMzkwX3ZzbCgKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIGludAp2ZWNfc2xsKF9fdmVjdG9yIF9fYm9vbCBpbnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBpbnQpX19idWlsdGluX3MzOTBfdnNsKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgaW50CnZlY19zbGwoX192ZWN0b3IgX19ib29sIGludCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBpbnQpX19idWlsdGluX3MzOTBfdnNsKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBpbnQKdmVjX3NsbChfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYnVpbHRpbl9zMzkwX3ZzbCgKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19zbGwoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19idWlsdGluX3MzOTBfdnNsKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBpbnQKdmVjX3NsbChfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19idWlsdGluX3MzOTBfdnNsKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nCnZlY19zbGwoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYnVpbHRpbl9zMzkwX3ZzbCgKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZwp2ZWNfc2xsKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19idWlsdGluX3MzOTBfdnNsKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nCnZlY19zbGwoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19idWlsdGluX3MzOTBfdnNsKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nCnZlY19zbGwoX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nKV9fYnVpbHRpbl9zMzkwX3ZzbCgKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZwp2ZWNfc2xsKF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcpX19idWlsdGluX3MzOTBfdnNsKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nCnZlY19zbGwoX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcpX19idWlsdGluX3MzOTBfdnNsKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcKdmVjX3NsbChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYnVpbHRpbl9zMzkwX3ZzbCgKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nCnZlY19zbGwoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19idWlsdGluX3MzOTBfdnNsKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcKdmVjX3NsbChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19idWlsdGluX3MzOTBfdnNsKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgovKi0tIHZlY19zbGIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgY2hhcgp2ZWNfc2xiKF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgY2hhcilfX2J1aWx0aW5fczM5MF92c2xiKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgY2hhcgp2ZWNfc2xiKF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBjaGFyKV9fYnVpbHRpbl9zMzkwX3ZzbGIoCiAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsIF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIKdmVjX3NsYihfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZzbGIoX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19zbGIoX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZzbGIoX19hLCBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgc2hvcnQKdmVjX3NsYihfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgc2hvcnQpX19idWlsdGluX3MzOTBfdnNsYigKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIHNob3J0CnZlY19zbGIoX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgc2hvcnQpX19idWlsdGluX3MzOTBfdnNsYigKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX3NsYihfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYnVpbHRpbl9zMzkwX3ZzbGIoCiAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0CnZlY19zbGIoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYnVpbHRpbl9zMzkwX3ZzbGIoCiAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBpbnQKdmVjX3NsYihfX3ZlY3RvciBzaWduZWQgaW50IF9fYSwgX192ZWN0b3Igc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBpbnQpX19idWlsdGluX3MzOTBfdnNsYigKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGludAp2ZWNfc2xiKF9fdmVjdG9yIHNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgaW50KV9fYnVpbHRpbl9zMzkwX3ZzbGIoCiAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGludAp2ZWNfc2xiKF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19idWlsdGluX3MzOTBfdnNsYigKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19zbGIoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiAoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYnVpbHRpbl9zMzkwX3ZzbGIoCiAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcKdmVjX3NsYihfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19idWlsdGluX3MzOTBfdnNsYigKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZwp2ZWNfc2xiKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYnVpbHRpbl9zMzkwX3ZzbGIoCiAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZwp2ZWNfc2xiKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19idWlsdGluX3MzOTBfdnNsYigKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nCnZlY19zbGIoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiAoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYnVpbHRpbl9zMzkwX3ZzbGIoCiAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYik7Cn0KCiNpZiBfX0FSQ0hfXyA+PSAxMgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBmbG9hdAp2ZWNfc2xiKF9fdmVjdG9yIGZsb2F0IF9fYSwgX192ZWN0b3Igc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIGZsb2F0KV9fYnVpbHRpbl9zMzkwX3ZzbGIoCiAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIGZsb2F0CnZlY19zbGIoX192ZWN0b3IgZmxvYXQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBmbG9hdClfX2J1aWx0aW5fczM5MF92c2xiKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CiNlbmRpZgoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgZG91YmxlCnZlY19zbGIoX192ZWN0b3IgZG91YmxlIF9fYSwgX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIGRvdWJsZSlfX2J1aWx0aW5fczM5MF92c2xiKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBkb3VibGUKdmVjX3NsYihfX3ZlY3RvciBkb3VibGUgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBkb3VibGUpX19idWlsdGluX3MzOTBfdnNsYigKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKLyotLSB2ZWNfc2xkIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKZXh0ZXJuIF9fQVRUUlNfbyBfX3ZlY3RvciBzaWduZWQgY2hhcgp2ZWNfc2xkKF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3Igc2lnbmVkIGNoYXIgX19iLCBpbnQgX19jKQogIF9fY29uc3RhbnRfcmFuZ2UoX19jLCAwLCAxNSk7CgpleHRlcm4gX19BVFRSU19vIF9fdmVjdG9yIF9fYm9vbCBjaGFyCnZlY19zbGQoX192ZWN0b3IgX19ib29sIGNoYXIgX19hLCBfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2IsIGludCBfX2MpCiAgX19jb25zdGFudF9yYW5nZShfX2MsIDAsIDE1KTsKCmV4dGVybiBfX0FUVFJTX28gX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfc2xkKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYiwgaW50IF9fYykKICBfX2NvbnN0YW50X3JhbmdlKF9fYywgMCwgMTUpOwoKZXh0ZXJuIF9fQVRUUlNfbyBfX3ZlY3RvciBzaWduZWQgc2hvcnQKdmVjX3NsZChfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19iLCBpbnQgX19jKQogIF9fY29uc3RhbnRfcmFuZ2UoX19jLCAwLCAxNSk7CgpleHRlcm4gX19BVFRSU19vIF9fdmVjdG9yIF9fYm9vbCBzaG9ydAp2ZWNfc2xkKF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2EsIF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2IsIGludCBfX2MpCiAgX19jb25zdGFudF9yYW5nZShfX2MsIDAsIDE1KTsKCmV4dGVybiBfX0FUVFJTX28gX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX3NsZChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYiwgaW50IF9fYykKICBfX2NvbnN0YW50X3JhbmdlKF9fYywgMCwgMTUpOwoKZXh0ZXJuIF9fQVRUUlNfbyBfX3ZlY3RvciBzaWduZWQgaW50CnZlY19zbGQoX192ZWN0b3Igc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBpbnQgX19iLCBpbnQgX19jKQogIF9fY29uc3RhbnRfcmFuZ2UoX19jLCAwLCAxNSk7CgpleHRlcm4gX19BVFRSU19vIF9fdmVjdG9yIF9fYm9vbCBpbnQKdmVjX3NsZChfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYSwgX192ZWN0b3IgX19ib29sIGludCBfX2IsIGludCBfX2MpCiAgX19jb25zdGFudF9yYW5nZShfX2MsIDAsIDE1KTsKCmV4dGVybiBfX0FUVFJTX28gX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19zbGQoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYiwgaW50IF9fYykKICBfX2NvbnN0YW50X3JhbmdlKF9fYywgMCwgMTUpOwoKZXh0ZXJuIF9fQVRUUlNfbyBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nCnZlY19zbGQoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iLCBpbnQgX19jKQogIF9fY29uc3RhbnRfcmFuZ2UoX19jLCAwLCAxNSk7CgpleHRlcm4gX19BVFRSU19vIF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcKdmVjX3NsZChfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIF9fYSwgX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZyBfX2IsIGludCBfX2MpCiAgX19jb25zdGFudF9yYW5nZShfX2MsIDAsIDE1KTsKCmV4dGVybiBfX0FUVFJTX28gX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nCnZlY19zbGQoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYiwKICAgICAgICBpbnQgX19jKQogIF9fY29uc3RhbnRfcmFuZ2UoX19jLCAwLCAxNSk7CgojaWYgX19BUkNIX18gPj0gMTIKZXh0ZXJuIF9fQVRUUlNfbyBfX3ZlY3RvciBmbG9hdAp2ZWNfc2xkKF9fdmVjdG9yIGZsb2F0IF9fYSwgX192ZWN0b3IgZmxvYXQgX19iLCBpbnQgX19jKQogIF9fY29uc3RhbnRfcmFuZ2UoX19jLCAwLCAxNSk7CiNlbmRpZgoKZXh0ZXJuIF9fQVRUUlNfbyBfX3ZlY3RvciBkb3VibGUKdmVjX3NsZChfX3ZlY3RvciBkb3VibGUgX19hLCBfX3ZlY3RvciBkb3VibGUgX19iLCBpbnQgX19jKQogIF9fY29uc3RhbnRfcmFuZ2UoX19jLCAwLCAxNSk7CgojZGVmaW5lIHZlY19zbGQoWCwgWSwgWikgKChfX3R5cGVvZl9fKCh2ZWNfc2xkKSgoWCksIChZKSwgKFopKSkpIFwKICBfX2J1aWx0aW5fczM5MF92c2xkYigoX192ZWN0b3IgdW5zaWduZWQgY2hhcikoWCksIFwKICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcikoWSksIChaKSkpCgovKi0tIHZlY19zbGR3IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgpleHRlcm4gX19BVFRSU19vIF9fdmVjdG9yIHNpZ25lZCBjaGFyCnZlY19zbGR3KF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3Igc2lnbmVkIGNoYXIgX19iLCBpbnQgX19jKQogIF9fY29uc3RhbnRfcmFuZ2UoX19jLCAwLCAzKTsKCmV4dGVybiBfX0FUVFJTX28gX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfc2xkdyhfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IsIGludCBfX2MpCiAgX19jb25zdGFudF9yYW5nZShfX2MsIDAsIDMpOwoKZXh0ZXJuIF9fQVRUUlNfbyBfX3ZlY3RvciBzaWduZWQgc2hvcnQKdmVjX3NsZHcoX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYiwgaW50IF9fYykKICBfX2NvbnN0YW50X3JhbmdlKF9fYywgMCwgMyk7CgpleHRlcm4gX19BVFRSU19vIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0CnZlY19zbGR3KF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iLCBpbnQgX19jKQogIF9fY29uc3RhbnRfcmFuZ2UoX19jLCAwLCAzKTsKCmV4dGVybiBfX0FUVFJTX28gX192ZWN0b3Igc2lnbmVkIGludAp2ZWNfc2xkdyhfX3ZlY3RvciBzaWduZWQgaW50IF9fYSwgX192ZWN0b3Igc2lnbmVkIGludCBfX2IsIGludCBfX2MpCiAgX19jb25zdGFudF9yYW5nZShfX2MsIDAsIDMpOwoKZXh0ZXJuIF9fQVRUUlNfbyBfX3ZlY3RvciB1bnNpZ25lZCBpbnQKdmVjX3NsZHcoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYiwgaW50IF9fYykKICBfX2NvbnN0YW50X3JhbmdlKF9fYywgMCwgMyk7CgpleHRlcm4gX19BVFRSU19vIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcKdmVjX3NsZHcoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iLCBpbnQgX19jKQogIF9fY29uc3RhbnRfcmFuZ2UoX19jLCAwLCAzKTsKCmV4dGVybiBfX0FUVFJTX28gX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nCnZlY19zbGR3KF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IsCiAgICAgICAgIGludCBfX2MpCiAgX19jb25zdGFudF9yYW5nZShfX2MsIDAsIDMpOwoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4KZXh0ZXJuIF9fQVRUUlNfbyBfX3ZlY3RvciBkb3VibGUKdmVjX3NsZHcoX192ZWN0b3IgZG91YmxlIF9fYSwgX192ZWN0b3IgZG91YmxlIF9fYiwgaW50IF9fYykKICBfX2NvbnN0YW50X3JhbmdlKF9fYywgMCwgMyk7CgojZGVmaW5lIHZlY19zbGR3KFgsIFksIFopICgoX190eXBlb2ZfXygodmVjX3NsZHcpKChYKSwgKFkpLCAoWikpKSkgXAogIF9fYnVpbHRpbl9zMzkwX3ZzbGRiKChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKShYKSwgXAogICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKShZKSwgKFopICogNCkpCgovKi0tIHZlY19zbGRiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgojaWYgX19BUkNIX18gPj0gMTMKCmV4dGVybiBfX0FUVFJTX28gX192ZWN0b3Igc2lnbmVkIGNoYXIKdmVjX3NsZGIoX192ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciBzaWduZWQgY2hhciBfX2IsIGludCBfX2MpCiAgX19jb25zdGFudF9yYW5nZShfX2MsIDAsIDcpOwoKZXh0ZXJuIF9fQVRUUlNfbyBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19zbGRiKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYiwgaW50IF9fYykKICBfX2NvbnN0YW50X3JhbmdlKF9fYywgMCwgNyk7CgpleHRlcm4gX19BVFRSU19vIF9fdmVjdG9yIHNpZ25lZCBzaG9ydAp2ZWNfc2xkYihfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19iLCBpbnQgX19jKQogIF9fY29uc3RhbnRfcmFuZ2UoX19jLCAwLCA3KTsKCmV4dGVybiBfX0FUVFJTX28gX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX3NsZGIoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IsIGludCBfX2MpCiAgX19jb25zdGFudF9yYW5nZShfX2MsIDAsIDcpOwoKZXh0ZXJuIF9fQVRUUlNfbyBfX3ZlY3RvciBzaWduZWQgaW50CnZlY19zbGRiKF9fdmVjdG9yIHNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciBzaWduZWQgaW50IF9fYiwgaW50IF9fYykKICBfX2NvbnN0YW50X3JhbmdlKF9fYywgMCwgNyk7CgpleHRlcm4gX19BVFRSU19vIF9fdmVjdG9yIHVuc2lnbmVkIGludAp2ZWNfc2xkYihfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iLCBpbnQgX19jKQogIF9fY29uc3RhbnRfcmFuZ2UoX19jLCAwLCA3KTsKCmV4dGVybiBfX0FUVFJTX28gX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZwp2ZWNfc2xkYihfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2IsIGludCBfX2MpCiAgX19jb25zdGFudF9yYW5nZShfX2MsIDAsIDcpOwoKZXh0ZXJuIF9fQVRUUlNfbyBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcKdmVjX3NsZGIoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYiwKICAgICAgICAgaW50IF9fYykKICBfX2NvbnN0YW50X3JhbmdlKF9fYywgMCwgNyk7CgpleHRlcm4gX19BVFRSU19vIF9fdmVjdG9yIGZsb2F0CnZlY19zbGRiKF9fdmVjdG9yIGZsb2F0IF9fYSwgX192ZWN0b3IgZmxvYXQgX19iLCBpbnQgX19jKQogIF9fY29uc3RhbnRfcmFuZ2UoX19jLCAwLCA3KTsKCmV4dGVybiBfX0FUVFJTX28gX192ZWN0b3IgZG91YmxlCnZlY19zbGRiKF9fdmVjdG9yIGRvdWJsZSBfX2EsIF9fdmVjdG9yIGRvdWJsZSBfX2IsIGludCBfX2MpCiAgX19jb25zdGFudF9yYW5nZShfX2MsIDAsIDcpOwoKI2RlZmluZSB2ZWNfc2xkYihYLCBZLCBaKSAoKF9fdHlwZW9mX18oKHZlY19zbGRiKSgoWCksIChZKSwgKFopKSkpIFwKICBfX2J1aWx0aW5fczM5MF92c2xkKChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKShYKSwgXAogICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpKFkpLCAoWikpKQoKI2VuZGlmCgovKi0tIHZlY19zcmFsIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgY2hhcgp2ZWNfc3JhbChfX3ZlY3RvciBzaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgY2hhcilfX2J1aWx0aW5fczM5MF92c3JhKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCBfX2IpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgY2hhcgp2ZWNfc3JhbChfX3ZlY3RvciBzaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIGNoYXIpX19idWlsdGluX3MzOTBfdnNyYSgKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGNoYXIKdmVjX3NyYWwoX192ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgY2hhcilfX2J1aWx0aW5fczM5MF92c3JhKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgY2hhcgp2ZWNfc3JhbChfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBfX2Jvb2wgY2hhcilfX2J1aWx0aW5fczM5MF92c3JhKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCBfX2IpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgY2hhcgp2ZWNfc3JhbChfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIGNoYXIpX19idWlsdGluX3MzOTBfdnNyYSgKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIGNoYXIKdmVjX3NyYWwoX192ZWN0b3IgX19ib29sIGNoYXIgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBfX2Jvb2wgY2hhcilfX2J1aWx0aW5fczM5MF92c3JhKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19zcmFsKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92c3JhKF9fYSwgX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfc3JhbChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZzcmEoX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19zcmFsKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZzcmEoX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgc2hvcnQKdmVjX3NyYWwoX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBzaG9ydClfX2J1aWx0aW5fczM5MF92c3JhKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCBfX2IpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgc2hvcnQKdmVjX3NyYWwoX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgc2hvcnQpX19idWlsdGluX3MzOTBfdnNyYSgKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIHNob3J0CnZlY19zcmFsKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBzaG9ydClfX2J1aWx0aW5fczM5MF92c3JhKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQKdmVjX3NyYWwoX192ZWN0b3IgX19ib29sIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBzaG9ydClfX2J1aWx0aW5fczM5MF92c3JhKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCBfX2IpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQKdmVjX3NyYWwoX192ZWN0b3IgX19ib29sIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBfX2Jvb2wgc2hvcnQpX19idWlsdGluX3MzOTBfdnNyYSgKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIHNob3J0CnZlY19zcmFsKF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBzaG9ydClfX2J1aWx0aW5fczM5MF92c3JhKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydAp2ZWNfc3JhbChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2J1aWx0aW5fczM5MF92c3JhKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCBfX2IpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydAp2ZWNfc3JhbChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiAoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19idWlsdGluX3MzOTBfdnNyYSgKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX3NyYWwoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2J1aWx0aW5fczM5MF92c3JhKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgaW50CnZlY19zcmFsKF9fdmVjdG9yIHNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIGludClfX2J1aWx0aW5fczM5MF92c3JhKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCBfX2IpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgaW50CnZlY19zcmFsKF9fdmVjdG9yIHNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBpbnQpX19idWlsdGluX3MzOTBfdnNyYSgKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGludAp2ZWNfc3JhbChfX3ZlY3RvciBzaWduZWQgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIGludClfX2J1aWx0aW5fczM5MF92c3JhKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgaW50CnZlY19zcmFsKF9fdmVjdG9yIF9fYm9vbCBpbnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIGludClfX2J1aWx0aW5fczM5MF92c3JhKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCBfX2IpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgaW50CnZlY19zcmFsKF9fdmVjdG9yIF9fYm9vbCBpbnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBpbnQpX19idWlsdGluX3MzOTBfdnNyYSgKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIGludAp2ZWNfc3JhbChfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIGludClfX2J1aWx0aW5fczM5MF92c3JhKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBpbnQKdmVjX3NyYWwoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2J1aWx0aW5fczM5MF92c3JhKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCBfX2IpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBpbnQKdmVjX3NyYWwoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19idWlsdGluX3MzOTBfdnNyYSgKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19zcmFsKF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2J1aWx0aW5fczM5MF92c3JhKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nCnZlY19zcmFsKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2J1aWx0aW5fczM5MF92c3JhKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCBfX2IpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nCnZlY19zcmFsKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19idWlsdGluX3MzOTBfdnNyYSgKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZwp2ZWNfc3JhbChfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2J1aWx0aW5fczM5MF92c3JhKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nCnZlY19zcmFsKF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZylfX2J1aWx0aW5fczM5MF92c3JhKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCBfX2IpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nCnZlY19zcmFsKF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcpX19idWlsdGluX3MzOTBfdnNyYSgKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZwp2ZWNfc3JhbChfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZylfX2J1aWx0aW5fczM5MF92c3JhKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcKdmVjX3NyYWwoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2J1aWx0aW5fczM5MF92c3JhKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCBfX2IpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcKdmVjX3NyYWwoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19idWlsdGluX3MzOTBfdnNyYSgKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nCnZlY19zcmFsKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2J1aWx0aW5fczM5MF92c3JhKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgovKi0tIHZlY19zcmFiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgY2hhcgp2ZWNfc3JhYihfX3ZlY3RvciBzaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIGNoYXIpX19idWlsdGluX3MzOTBfdnNyYWIoCiAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBjaGFyCnZlY19zcmFiKF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBjaGFyKV9fYnVpbHRpbl9zMzkwX3ZzcmFiKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19zcmFiKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdnNyYWIoX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19zcmFiKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92c3JhYihfX2EsIF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBzaG9ydAp2ZWNfc3JhYihfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgc2hvcnQpX19idWlsdGluX3MzOTBfdnNyYWIoCiAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBzaG9ydAp2ZWNfc3JhYihfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBzaG9ydClfX2J1aWx0aW5fczM5MF92c3JhYigKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX3NyYWIoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2J1aWx0aW5fczM5MF92c3JhYigKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX3NyYWIoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYnVpbHRpbl9zMzkwX3ZzcmFiKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgaW50CnZlY19zcmFiKF9fdmVjdG9yIHNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciBzaWduZWQgaW50IF9fYikgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIGludClfX2J1aWx0aW5fczM5MF92c3JhYigKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGludAp2ZWNfc3JhYihfX3ZlY3RvciBzaWduZWQgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIGludClfX2J1aWx0aW5fczM5MF92c3JhYigKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19zcmFiKF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19idWlsdGluX3MzOTBfdnNyYWIoCiAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGludAp2ZWNfc3JhYihfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19idWlsdGluX3MzOTBfdnNyYWIoCiAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcKdmVjX3NyYWIoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYnVpbHRpbl9zMzkwX3ZzcmFiKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nCnZlY19zcmFiKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYnVpbHRpbl9zMzkwX3ZzcmFiKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcKdmVjX3NyYWIoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2J1aWx0aW5fczM5MF92c3JhYigKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nCnZlY19zcmFiKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2J1aWx0aW5fczM5MF92c3JhYigKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKI2lmIF9fQVJDSF9fID49IDEyCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIGZsb2F0CnZlY19zcmFiKF9fdmVjdG9yIGZsb2F0IF9fYSwgX192ZWN0b3Igc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIGZsb2F0KV9fYnVpbHRpbl9zMzkwX3ZzcmFiKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBmbG9hdAp2ZWNfc3JhYihfX3ZlY3RvciBmbG9hdCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIGZsb2F0KV9fYnVpbHRpbl9zMzkwX3ZzcmFiKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CiNlbmRpZgoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgZG91YmxlCnZlY19zcmFiKF9fdmVjdG9yIGRvdWJsZSBfX2EsIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBkb3VibGUpX19idWlsdGluX3MzOTBfdnNyYWIoCiAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIGRvdWJsZQp2ZWNfc3JhYihfX3ZlY3RvciBkb3VibGUgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBkb3VibGUpX19idWlsdGluX3MzOTBfdnNyYWIoCiAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYik7Cn0KCi8qLS0gdmVjX3NybCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBjaGFyCnZlY19zcmwoX192ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIGNoYXIpX19idWlsdGluX3MzOTBfdnNybCgKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGNoYXIKdmVjX3NybChfX3ZlY3RvciBzaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIGNoYXIpX19idWlsdGluX3MzOTBfdnNybCgKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGNoYXIKdmVjX3NybChfX3ZlY3RvciBzaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBjaGFyKV9fYnVpbHRpbl9zMzkwX3ZzcmwoCiAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYik7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBjaGFyCnZlY19zcmwoX192ZWN0b3IgX19ib29sIGNoYXIgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIGNoYXIpX19idWlsdGluX3MzOTBfdnNybCgKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIGNoYXIKdmVjX3NybChfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIGNoYXIpX19idWlsdGluX3MzOTBfdnNybCgKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIGNoYXIKdmVjX3NybChfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBjaGFyKV9fYnVpbHRpbl9zMzkwX3ZzcmwoCiAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIKdmVjX3NybChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdnNybChfX2EsIF9fYik7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIKdmVjX3NybChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZzcmwoX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19zcmwoX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdnNybChfX2EsIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBzaG9ydAp2ZWNfc3JsKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgc2hvcnQpX19idWlsdGluX3MzOTBfdnNybCgKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIHNob3J0CnZlY19zcmwoX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgc2hvcnQpX19idWlsdGluX3MzOTBfdnNybCgKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIHNob3J0CnZlY19zcmwoX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIHNob3J0KV9fYnVpbHRpbl9zMzkwX3ZzcmwoCiAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYik7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBzaG9ydAp2ZWNfc3JsKF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBfX2Jvb2wgc2hvcnQpX19idWlsdGluX3MzOTBfdnNybCgKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIHNob3J0CnZlY19zcmwoX192ZWN0b3IgX19ib29sIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBfX2Jvb2wgc2hvcnQpX19idWlsdGluX3MzOTBfdnNybCgKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIHNob3J0CnZlY19zcmwoX192ZWN0b3IgX19ib29sIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIHNob3J0KV9fYnVpbHRpbl9zMzkwX3ZzcmwoCiAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0CnZlY19zcmwoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19idWlsdGluX3MzOTBfdnNybCgKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX3NybChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiAoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19idWlsdGluX3MzOTBfdnNybCgKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX3NybChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYnVpbHRpbl9zMzkwX3ZzcmwoCiAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBpbnQKdmVjX3NybChfX3ZlY3RvciBzaWduZWQgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBpbnQpX19idWlsdGluX3MzOTBfdnNybCgKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGludAp2ZWNfc3JsKF9fdmVjdG9yIHNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBpbnQpX19idWlsdGluX3MzOTBfdnNybCgKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGludAp2ZWNfc3JsKF9fdmVjdG9yIHNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgaW50KV9fYnVpbHRpbl9zMzkwX3ZzcmwoCiAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYik7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBpbnQKdmVjX3NybChfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBpbnQpX19idWlsdGluX3MzOTBfdnNybCgKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIGludAp2ZWNfc3JsKF9fdmVjdG9yIF9fYm9vbCBpbnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBpbnQpX19idWlsdGluX3MzOTBfdnNybCgKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIGludAp2ZWNfc3JsKF9fdmVjdG9yIF9fYm9vbCBpbnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBfX2Jvb2wgaW50KV9fYnVpbHRpbl9zMzkwX3ZzcmwoCiAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGludAp2ZWNfc3JsKF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19idWlsdGluX3MzOTBfdnNybCgKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19zcmwoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19idWlsdGluX3MzOTBfdnNybCgKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19zcmwoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiAoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYnVpbHRpbl9zMzkwX3ZzcmwoCiAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcKdmVjX3NybChfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19idWlsdGluX3MzOTBfdnNybCgKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZwp2ZWNfc3JsKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19idWlsdGluX3MzOTBfdnNybCgKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZwp2ZWNfc3JsKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYnVpbHRpbl9zMzkwX3ZzcmwoCiAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYik7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcKdmVjX3NybChfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcpX19idWlsdGluX3MzOTBfdnNybCgKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZwp2ZWNfc3JsKF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcpX19idWlsdGluX3MzOTBfdnNybCgKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZwp2ZWNfc3JsKF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nKV9fYnVpbHRpbl9zMzkwX3ZzcmwoCiAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZwp2ZWNfc3JsKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19idWlsdGluX3MzOTBfdnNybCgKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nCnZlY19zcmwoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19idWlsdGluX3MzOTBfdnNybCgKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nCnZlY19zcmwoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiAoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYnVpbHRpbl9zMzkwX3ZzcmwoCiAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYik7Cn0KCi8qLS0gdmVjX3NyYiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBjaGFyCnZlY19zcmIoX192ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBjaGFyKV9fYnVpbHRpbl9zMzkwX3ZzcmxiKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgY2hhcgp2ZWNfc3JiKF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBjaGFyKV9fYnVpbHRpbl9zMzkwX3ZzcmxiKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19zcmIoX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92c3JsYihfX2EsIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIKdmVjX3NyYihfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdnNybGIoX19hLCBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgc2hvcnQKdmVjX3NyYihfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgc2hvcnQpX19idWlsdGluX3MzOTBfdnNybGIoCiAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBzaG9ydAp2ZWNfc3JiKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIHNob3J0KV9fYnVpbHRpbl9zMzkwX3ZzcmxiKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydAp2ZWNfc3JiKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiAoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19idWlsdGluX3MzOTBfdnNybGIoCiAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0CnZlY19zcmIoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYnVpbHRpbl9zMzkwX3ZzcmxiKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgaW50CnZlY19zcmIoX192ZWN0b3Igc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgaW50KV9fYnVpbHRpbl9zMzkwX3ZzcmxiKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgaW50CnZlY19zcmIoX192ZWN0b3Igc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBpbnQpX19idWlsdGluX3MzOTBfdnNybGIoCiAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGludAp2ZWNfc3JiKF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19idWlsdGluX3MzOTBfdnNybGIoCiAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGludAp2ZWNfc3JiKF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2J1aWx0aW5fczM5MF92c3JsYigKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZwp2ZWNfc3JiKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2J1aWx0aW5fczM5MF92c3JsYigKICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZwp2ZWNfc3JiKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYnVpbHRpbl9zMzkwX3ZzcmxiKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcKdmVjX3NyYihfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiAoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYnVpbHRpbl9zMzkwX3ZzcmxiKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcKdmVjX3NyYihfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19idWlsdGluX3MzOTBfdnNybGIoCiAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYik7Cn0KCiNpZiBfX0FSQ0hfXyA+PSAxMgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBmbG9hdAp2ZWNfc3JiKF9fdmVjdG9yIGZsb2F0IF9fYSwgX192ZWN0b3Igc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIGZsb2F0KV9fYnVpbHRpbl9zMzkwX3ZzcmxiKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBmbG9hdAp2ZWNfc3JiKF9fdmVjdG9yIGZsb2F0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiAoX192ZWN0b3IgZmxvYXQpX19idWlsdGluX3MzOTBfdnNybGIoCiAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYik7Cn0KI2VuZGlmCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBkb3VibGUKdmVjX3NyYihfX3ZlY3RvciBkb3VibGUgX19hLCBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiAoX192ZWN0b3IgZG91YmxlKV9fYnVpbHRpbl9zMzkwX3ZzcmxiKAogICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBkb3VibGUKdmVjX3NyYihfX3ZlY3RvciBkb3VibGUgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBkb3VibGUpX19idWlsdGluX3MzOTBfdnNybGIoCiAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYik7Cn0KCi8qLS0gdmVjX3NyZGIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCiNpZiBfX0FSQ0hfXyA+PSAxMwoKZXh0ZXJuIF9fQVRUUlNfbyBfX3ZlY3RvciBzaWduZWQgY2hhcgp2ZWNfc3JkYihfX3ZlY3RvciBzaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYiwgaW50IF9fYykKICBfX2NvbnN0YW50X3JhbmdlKF9fYywgMCwgNyk7CgpleHRlcm4gX19BVFRSU19vIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIKdmVjX3NyZGIoX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iLCBpbnQgX19jKQogIF9fY29uc3RhbnRfcmFuZ2UoX19jLCAwLCA3KTsKCmV4dGVybiBfX0FUVFJTX28gX192ZWN0b3Igc2lnbmVkIHNob3J0CnZlY19zcmRiKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2IsIGludCBfX2MpCiAgX19jb25zdGFudF9yYW5nZShfX2MsIDAsIDcpOwoKZXh0ZXJuIF9fQVRUUlNfbyBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydAp2ZWNfc3JkYihfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYiwgaW50IF9fYykKICBfX2NvbnN0YW50X3JhbmdlKF9fYywgMCwgNyk7CgpleHRlcm4gX19BVFRSU19vIF9fdmVjdG9yIHNpZ25lZCBpbnQKdmVjX3NyZGIoX192ZWN0b3Igc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBpbnQgX19iLCBpbnQgX19jKQogIF9fY29uc3RhbnRfcmFuZ2UoX19jLCAwLCA3KTsKCmV4dGVybiBfX0FUVFJTX28gX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19zcmRiKF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IsIGludCBfX2MpCiAgX19jb25zdGFudF9yYW5nZShfX2MsIDAsIDcpOwoKZXh0ZXJuIF9fQVRUUlNfbyBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nCnZlY19zcmRiKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYiwgaW50IF9fYykKICBfX2NvbnN0YW50X3JhbmdlKF9fYywgMCwgNyk7CgpleHRlcm4gX19BVFRSU19vIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZwp2ZWNfc3JkYihfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iLAogICAgICAgICBpbnQgX19jKQogIF9fY29uc3RhbnRfcmFuZ2UoX19jLCAwLCA3KTsKCmV4dGVybiBfX0FUVFJTX28gX192ZWN0b3IgZmxvYXQKdmVjX3NyZGIoX192ZWN0b3IgZmxvYXQgX19hLCBfX3ZlY3RvciBmbG9hdCBfX2IsIGludCBfX2MpCiAgX19jb25zdGFudF9yYW5nZShfX2MsIDAsIDcpOwoKZXh0ZXJuIF9fQVRUUlNfbyBfX3ZlY3RvciBkb3VibGUKdmVjX3NyZGIoX192ZWN0b3IgZG91YmxlIF9fYSwgX192ZWN0b3IgZG91YmxlIF9fYiwgaW50IF9fYykKICBfX2NvbnN0YW50X3JhbmdlKF9fYywgMCwgNyk7CgojZGVmaW5lIHZlY19zcmRiKFgsIFksIFopICgoX190eXBlb2ZfXygodmVjX3NyZGIpKChYKSwgKFkpLCAoWikpKSkgXAogIF9fYnVpbHRpbl9zMzkwX3ZzcmQoKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpKFgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcikoWSksIChaKSkpCgojZW5kaWYKCi8qLS0gdmVjX2FicyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBjaGFyCnZlY19hYnMoX192ZWN0b3Igc2lnbmVkIGNoYXIgX19hKSB7CiAgcmV0dXJuIHZlY19zZWwoX19hLCAtX19hLCB2ZWNfY21wbHQoX19hLCAoX192ZWN0b3Igc2lnbmVkIGNoYXIpMCkpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgc2hvcnQKdmVjX2FicyhfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19hKSB7CiAgcmV0dXJuIHZlY19zZWwoX19hLCAtX19hLCB2ZWNfY21wbHQoX19hLCAoX192ZWN0b3Igc2lnbmVkIHNob3J0KTApKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGludAp2ZWNfYWJzKF9fdmVjdG9yIHNpZ25lZCBpbnQgX19hKSB7CiAgcmV0dXJuIHZlY19zZWwoX19hLCAtX19hLCB2ZWNfY21wbHQoX19hLCAoX192ZWN0b3Igc2lnbmVkIGludCkwKSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcKdmVjX2FicyhfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSkgewogIHJldHVybiB2ZWNfc2VsKF9fYSwgLV9fYSwgdmVjX2NtcGx0KF9fYSwgKF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpMCkpOwp9CgojaWYgX19BUkNIX18gPj0gMTIKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgZmxvYXQKdmVjX2FicyhfX3ZlY3RvciBmbG9hdCBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmZscHNiKF9fYSk7Cn0KI2VuZGlmCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBkb3VibGUKdmVjX2FicyhfX3ZlY3RvciBkb3VibGUgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZmbHBkYihfX2EpOwp9CgovKi0tIHZlY19uYWJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgojaWYgX19BUkNIX18gPj0gMTIKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgZmxvYXQKdmVjX25hYnMoX192ZWN0b3IgZmxvYXQgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZmbG5zYihfX2EpOwp9CiNlbmRpZgoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgZG91YmxlCnZlY19uYWJzKF9fdmVjdG9yIGRvdWJsZSBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmZsbmRiKF9fYSk7Cn0KCi8qLS0gdmVjX21heCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBjaGFyCnZlY19tYXgoX192ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gdmVjX3NlbChfX2IsIF9fYSwgdmVjX2NtcGd0KF9fYSwgX19iKSk7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBjaGFyCnZlY19tYXgoX192ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2IpIHsKICBfX3ZlY3RvciBzaWduZWQgY2hhciBfX2JjID0gKF9fdmVjdG9yIHNpZ25lZCBjaGFyKV9fYjsKICByZXR1cm4gdmVjX3NlbChfX2JjLCBfX2EsIHZlY19jbXBndChfX2EsIF9fYmMpKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGNoYXIKdmVjX21heChfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2EsIF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYWMgPSAoX192ZWN0b3Igc2lnbmVkIGNoYXIpX19hOwogIHJldHVybiB2ZWNfc2VsKF9fYiwgX19hYywgdmVjX2NtcGd0KF9fYWMsIF9fYikpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19tYXgoX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIHZlY19zZWwoX19iLCBfX2EsIHZlY19jbXBndChfX2EsIF9fYikpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19tYXgoX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYikgewogIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iYyA9IChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYjsKICByZXR1cm4gdmVjX3NlbChfX2JjLCBfX2EsIHZlY19jbXBndChfX2EsIF9fYmMpKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfbWF4KF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYWMgPSAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2E7CiAgcmV0dXJuIHZlY19zZWwoX19iLCBfX2FjLCB2ZWNfY21wZ3QoX19hYywgX19iKSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBzaG9ydAp2ZWNfbWF4KF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gdmVjX3NlbChfX2IsIF9fYSwgdmVjX2NtcGd0KF9fYSwgX19iKSk7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBzaG9ydAp2ZWNfbWF4KF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2IpIHsKICBfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19iYyA9IChfX3ZlY3RvciBzaWduZWQgc2hvcnQpX19iOwogIHJldHVybiB2ZWNfc2VsKF9fYmMsIF9fYSwgdmVjX2NtcGd0KF9fYSwgX19iYykpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgc2hvcnQKdmVjX21heChfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19hLCBfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19iKSB7CiAgX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYWMgPSAoX192ZWN0b3Igc2lnbmVkIHNob3J0KV9fYTsKICByZXR1cm4gdmVjX3NlbChfX2IsIF9fYWMsIHZlY19jbXBndChfX2FjLCBfX2IpKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX21heChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiB2ZWNfc2VsKF9fYiwgX19hLCB2ZWNfY21wZ3QoX19hLCBfX2IpKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX21heChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2IpIHsKICBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2JjID0gKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYjsKICByZXR1cm4gdmVjX3NlbChfX2JjLCBfX2EsIHZlY19jbXBndChfX2EsIF9fYmMpKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX21heChfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2FjID0gKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYTsKICByZXR1cm4gdmVjX3NlbChfX2IsIF9fYWMsIHZlY19jbXBndChfX2FjLCBfX2IpKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGludAp2ZWNfbWF4KF9fdmVjdG9yIHNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciBzaWduZWQgaW50IF9fYikgewogIHJldHVybiB2ZWNfc2VsKF9fYiwgX19hLCB2ZWNfY21wZ3QoX19hLCBfX2IpKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGludAp2ZWNfbWF4KF9fdmVjdG9yIHNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYikgewogIF9fdmVjdG9yIHNpZ25lZCBpbnQgX19iYyA9IChfX3ZlY3RvciBzaWduZWQgaW50KV9fYjsKICByZXR1cm4gdmVjX3NlbChfX2JjLCBfX2EsIHZlY19jbXBndChfX2EsIF9fYmMpKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGludAp2ZWNfbWF4KF9fdmVjdG9yIF9fYm9vbCBpbnQgX19hLCBfX3ZlY3RvciBzaWduZWQgaW50IF9fYikgewogIF9fdmVjdG9yIHNpZ25lZCBpbnQgX19hYyA9IChfX3ZlY3RvciBzaWduZWQgaW50KV9fYTsKICByZXR1cm4gdmVjX3NlbChfX2IsIF9fYWMsIHZlY19jbXBndChfX2FjLCBfX2IpKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19tYXgoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiB2ZWNfc2VsKF9fYiwgX19hLCB2ZWNfY21wZ3QoX19hLCBfX2IpKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19tYXgoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgX192ZWN0b3IgX19ib29sIGludCBfX2IpIHsKICBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iYyA9IChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19iOwogIHJldHVybiB2ZWNfc2VsKF9fYmMsIF9fYSwgdmVjX2NtcGd0KF9fYSwgX19iYykpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBpbnQKdmVjX21heChfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2FjID0gKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2E7CiAgcmV0dXJuIHZlY19zZWwoX19iLCBfX2FjLCB2ZWNfY21wZ3QoX19hYywgX19iKSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcKdmVjX21heChfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gdmVjX3NlbChfX2IsIF9fYSwgdmVjX2NtcGd0KF9fYSwgX19iKSk7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcKdmVjX21heChfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZyBfX2IpIHsKICBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYmMgPSAoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2I7CiAgcmV0dXJuIHZlY19zZWwoX19iYywgX19hLCB2ZWNfY21wZ3QoX19hLCBfX2JjKSk7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcKdmVjX21heChfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIF9fYSwgX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYWMgPSAoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2E7CiAgcmV0dXJuIHZlY19zZWwoX19iLCBfX2FjLCB2ZWNfY21wZ3QoX19hYywgX19iKSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZwp2ZWNfbWF4KF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gdmVjX3NlbChfX2IsIF9fYSwgdmVjX2NtcGd0KF9fYSwgX19iKSk7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZwp2ZWNfbWF4KF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYmMgPSAoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYjsKICByZXR1cm4gdmVjX3NlbChfX2JjLCBfX2EsIHZlY19jbXBndChfX2EsIF9fYmMpKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nCnZlY19tYXgoX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hYyA9IChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19hOwogIHJldHVybiB2ZWNfc2VsKF9fYiwgX19hYywgdmVjX2NtcGd0KF9fYWMsIF9fYikpOwp9CgojaWYgX19BUkNIX18gPj0gMTIKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgZmxvYXQKdmVjX21heChfX3ZlY3RvciBmbG9hdCBfX2EsIF9fdmVjdG9yIGZsb2F0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92Zm1heHNiKF9fYSwgX19iLCAwKTsKfQojZW5kaWYKCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIGRvdWJsZQp2ZWNfbWF4KF9fdmVjdG9yIGRvdWJsZSBfX2EsIF9fdmVjdG9yIGRvdWJsZSBfX2IpIHsKI2lmIF9fQVJDSF9fID49IDEyCiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZmbWF4ZGIoX19hLCBfX2IsIDApOwojZWxzZQogIHJldHVybiB2ZWNfc2VsKF9fYiwgX19hLCB2ZWNfY21wZ3QoX19hLCBfX2IpKTsKI2VuZGlmCn0KCi8qLS0gdmVjX21pbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBjaGFyCnZlY19taW4oX192ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gdmVjX3NlbChfX2EsIF9fYiwgdmVjX2NtcGd0KF9fYSwgX19iKSk7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBjaGFyCnZlY19taW4oX192ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2IpIHsKICBfX3ZlY3RvciBzaWduZWQgY2hhciBfX2JjID0gKF9fdmVjdG9yIHNpZ25lZCBjaGFyKV9fYjsKICByZXR1cm4gdmVjX3NlbChfX2EsIF9fYmMsIHZlY19jbXBndChfX2EsIF9fYmMpKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGNoYXIKdmVjX21pbihfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2EsIF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYWMgPSAoX192ZWN0b3Igc2lnbmVkIGNoYXIpX19hOwogIHJldHVybiB2ZWNfc2VsKF9fYWMsIF9fYiwgdmVjX2NtcGd0KF9fYWMsIF9fYikpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19taW4oX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIHZlY19zZWwoX19hLCBfX2IsIHZlY19jbXBndChfX2EsIF9fYikpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19taW4oX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYikgewogIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iYyA9IChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYjsKICByZXR1cm4gdmVjX3NlbChfX2EsIF9fYmMsIHZlY19jbXBndChfX2EsIF9fYmMpKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfbWluKF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYWMgPSAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2E7CiAgcmV0dXJuIHZlY19zZWwoX19hYywgX19iLCB2ZWNfY21wZ3QoX19hYywgX19iKSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBzaG9ydAp2ZWNfbWluKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gdmVjX3NlbChfX2EsIF9fYiwgdmVjX2NtcGd0KF9fYSwgX19iKSk7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBzaG9ydAp2ZWNfbWluKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2IpIHsKICBfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19iYyA9IChfX3ZlY3RvciBzaWduZWQgc2hvcnQpX19iOwogIHJldHVybiB2ZWNfc2VsKF9fYSwgX19iYywgdmVjX2NtcGd0KF9fYSwgX19iYykpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgc2hvcnQKdmVjX21pbihfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19hLCBfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19iKSB7CiAgX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYWMgPSAoX192ZWN0b3Igc2lnbmVkIHNob3J0KV9fYTsKICByZXR1cm4gdmVjX3NlbChfX2FjLCBfX2IsIHZlY19jbXBndChfX2FjLCBfX2IpKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX21pbihfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiB2ZWNfc2VsKF9fYSwgX19iLCB2ZWNfY21wZ3QoX19hLCBfX2IpKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX21pbihfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2IpIHsKICBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2JjID0gKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYjsKICByZXR1cm4gdmVjX3NlbChfX2EsIF9fYmMsIHZlY19jbXBndChfX2EsIF9fYmMpKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX21pbihfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2FjID0gKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYTsKICByZXR1cm4gdmVjX3NlbChfX2FjLCBfX2IsIHZlY19jbXBndChfX2FjLCBfX2IpKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGludAp2ZWNfbWluKF9fdmVjdG9yIHNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciBzaWduZWQgaW50IF9fYikgewogIHJldHVybiB2ZWNfc2VsKF9fYSwgX19iLCB2ZWNfY21wZ3QoX19hLCBfX2IpKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGludAp2ZWNfbWluKF9fdmVjdG9yIHNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYikgewogIF9fdmVjdG9yIHNpZ25lZCBpbnQgX19iYyA9IChfX3ZlY3RvciBzaWduZWQgaW50KV9fYjsKICByZXR1cm4gdmVjX3NlbChfX2EsIF9fYmMsIHZlY19jbXBndChfX2EsIF9fYmMpKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGludAp2ZWNfbWluKF9fdmVjdG9yIF9fYm9vbCBpbnQgX19hLCBfX3ZlY3RvciBzaWduZWQgaW50IF9fYikgewogIF9fdmVjdG9yIHNpZ25lZCBpbnQgX19hYyA9IChfX3ZlY3RvciBzaWduZWQgaW50KV9fYTsKICByZXR1cm4gdmVjX3NlbChfX2FjLCBfX2IsIHZlY19jbXBndChfX2FjLCBfX2IpKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19taW4oX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiB2ZWNfc2VsKF9fYSwgX19iLCB2ZWNfY21wZ3QoX19hLCBfX2IpKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19taW4oX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgX192ZWN0b3IgX19ib29sIGludCBfX2IpIHsKICBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iYyA9IChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19iOwogIHJldHVybiB2ZWNfc2VsKF9fYSwgX19iYywgdmVjX2NtcGd0KF9fYSwgX19iYykpOwp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBpbnQKdmVjX21pbihfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2FjID0gKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2E7CiAgcmV0dXJuIHZlY19zZWwoX19hYywgX19iLCB2ZWNfY21wZ3QoX19hYywgX19iKSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcKdmVjX21pbihfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gdmVjX3NlbChfX2EsIF9fYiwgdmVjX2NtcGd0KF9fYSwgX19iKSk7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcKdmVjX21pbihfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZyBfX2IpIHsKICBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYmMgPSAoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2I7CiAgcmV0dXJuIHZlY19zZWwoX19hLCBfX2JjLCB2ZWNfY21wZ3QoX19hLCBfX2JjKSk7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcKdmVjX21pbihfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIF9fYSwgX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYWMgPSAoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2E7CiAgcmV0dXJuIHZlY19zZWwoX19hYywgX19iLCB2ZWNfY21wZ3QoX19hYywgX19iKSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZwp2ZWNfbWluKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gdmVjX3NlbChfX2EsIF9fYiwgdmVjX2NtcGd0KF9fYSwgX19iKSk7Cn0KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZwp2ZWNfbWluKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYmMgPSAoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYjsKICByZXR1cm4gdmVjX3NlbChfX2EsIF9fYmMsIHZlY19jbXBndChfX2EsIF9fYmMpKTsKfQoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nCnZlY19taW4oX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hYyA9IChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19hOwogIHJldHVybiB2ZWNfc2VsKF9fYWMsIF9fYiwgdmVjX2NtcGd0KF9fYWMsIF9fYikpOwp9CgojaWYgX19BUkNIX18gPj0gMTIKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgZmxvYXQKdmVjX21pbihfX3ZlY3RvciBmbG9hdCBfX2EsIF9fdmVjdG9yIGZsb2F0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92Zm1pbnNiKF9fYSwgX19iLCAwKTsKfQojZW5kaWYKCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIGRvdWJsZQp2ZWNfbWluKF9fdmVjdG9yIGRvdWJsZSBfX2EsIF9fdmVjdG9yIGRvdWJsZSBfX2IpIHsKI2lmIF9fQVJDSF9fID49IDEyCiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZmbWluZGIoX19hLCBfX2IsIDApOwojZWxzZQogIHJldHVybiB2ZWNfc2VsKF9fYSwgX19iLCB2ZWNfY21wZ3QoX19hLCBfX2IpKTsKI2VuZGlmCn0KCi8qLS0gdmVjX2FkZF91MTI4IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19hZGRfdTEyOChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmFxKF9fYSwgX19iKTsKfQoKLyotLSB2ZWNfYWRkYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfYWRkYyhfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmFjY2IoX19hLCBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydAp2ZWNfYWRkYyhfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92YWNjaChfX2EsIF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGludAp2ZWNfYWRkYyhfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZhY2NmKF9fYSwgX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nCnZlY19hZGRjKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmFjY2coX19hLCBfX2IpOwp9CgovKi0tIHZlY19hZGRjX3UxMjggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfYWRkY191MTI4KF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92YWNjcShfX2EsIF9fYik7Cn0KCi8qLS0gdmVjX2FkZGVfdTEyOCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19hZGRlX3UxMjgoX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iLAogICAgICAgICAgICAgIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19jKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZhY3EoX19hLCBfX2IsIF9fYyk7Cn0KCi8qLS0gdmVjX2FkZGVjX3UxMjggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19hZGRlY191MTI4KF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYiwKICAgICAgICAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmFjY2NxKF9fYSwgX19iLCBfX2MpOwp9CgovKi0tIHZlY19hdmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgY2hhcgp2ZWNfYXZnKF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZhdmdiKF9fYSwgX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIHNob3J0CnZlY19hdmcoX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92YXZnaChfX2EsIF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBpbnQKdmVjX2F2ZyhfX3ZlY3RvciBzaWduZWQgaW50IF9fYSwgX192ZWN0b3Igc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmF2Z2YoX19hLCBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nCnZlY19hdmcoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZhdmdnKF9fYSwgX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfYXZnKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92YXZnbGIoX19hLCBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydAp2ZWNfYXZnKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZhdmdsaChfX2EsIF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGludAp2ZWNfYXZnKF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmF2Z2xmKF9fYSwgX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nCnZlY19hdmcoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92YXZnbGcoX19hLCBfX2IpOwp9CgovKi0tIHZlY19jaGVja3N1bSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19jaGVja3N1bShfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3Zja3NtKF9fYSwgX19iKTsKfQoKLyotLSB2ZWNfZ2Ztc3VtIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX2dmbXN1bShfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmdmbWIoX19hLCBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBpbnQKdmVjX2dmbXN1bShfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92Z2ZtaChfX2EsIF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZwp2ZWNfZ2Ztc3VtKF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmdmbWYoX19hLCBfX2IpOwp9CgovKi0tIHZlY19nZm1zdW1fMTI4IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19nZm1zdW1fMTI4KF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsCiAgICAgICAgICAgICAgIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmdmbWcoX19hLCBfX2IpOwp9CgovKi0tIHZlY19nZm1zdW1fYWNjdW0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydAp2ZWNfZ2Ztc3VtX2FjY3VtKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYiwKICAgICAgICAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmdmbWFiKF9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBpbnQKdmVjX2dmbXN1bV9hY2N1bShfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYiwKICAgICAgICAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19jKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZnZm1haChfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nCnZlY19nZm1zdW1fYWNjdW0oX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYiwKICAgICAgICAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19jKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZnZm1hZihfX2EsIF9fYiwgX19jKTsKfQoKLyotLSB2ZWNfZ2Ztc3VtX2FjY3VtXzEyOCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfZ2Ztc3VtX2FjY3VtXzEyOChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLAogICAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iLAogICAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92Z2ZtYWcoX19hLCBfX2IsIF9fYyk7Cn0KCi8qLS0gdmVjX21sYWRkIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBjaGFyCnZlY19tbGFkZChfX3ZlY3RvciBzaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYiwKICAgICAgICAgIF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYykgewogIHJldHVybiBfX2EgKiBfX2IgKyBfX2M7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBjaGFyCnZlY19tbGFkZChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3Igc2lnbmVkIGNoYXIgX19iLAogICAgICAgICAgX192ZWN0b3Igc2lnbmVkIGNoYXIgX19jKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgY2hhcilfX2EgKiBfX2IgKyBfX2M7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBjaGFyCnZlY19tbGFkZChfX3ZlY3RvciBzaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iLAogICAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2MpIHsKICByZXR1cm4gX19hICogKF9fdmVjdG9yIHNpZ25lZCBjaGFyKV9fYiArIChfX3ZlY3RvciBzaWduZWQgY2hhcilfX2M7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIKdmVjX21sYWRkKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYiwKICAgICAgICAgIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19jKSB7CiAgcmV0dXJuIF9fYSAqIF9fYiArIF9fYzsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIHNob3J0CnZlY19tbGFkZChfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19iLAogICAgICAgICAgX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYykgewogIHJldHVybiBfX2EgKiBfX2IgKyBfX2M7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBzaG9ydAp2ZWNfbWxhZGQoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19iLAogICAgICAgICAgX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYykgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIHNob3J0KV9fYSAqIF9fYiArIF9fYzsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIHNob3J0CnZlY19tbGFkZChfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IsCiAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2MpIHsKICByZXR1cm4gX19hICogKF9fdmVjdG9yIHNpZ25lZCBzaG9ydClfX2IgKyAoX192ZWN0b3Igc2lnbmVkIHNob3J0KV9fYzsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX21sYWRkKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iLAogICAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19jKSB7CiAgcmV0dXJuIF9fYSAqIF9fYiArIF9fYzsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGludAp2ZWNfbWxhZGQoX192ZWN0b3Igc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBpbnQgX19iLAogICAgICAgICAgX192ZWN0b3Igc2lnbmVkIGludCBfX2MpIHsKICByZXR1cm4gX19hICogX19iICsgX19jOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgaW50CnZlY19tbGFkZChfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciBzaWduZWQgaW50IF9fYiwKICAgICAgICAgIF9fdmVjdG9yIHNpZ25lZCBpbnQgX19jKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgaW50KV9fYSAqIF9fYiArIF9fYzsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGludAp2ZWNfbWxhZGQoX192ZWN0b3Igc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IsCiAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19jKSB7CiAgcmV0dXJuIF9fYSAqIChfX3ZlY3RvciBzaWduZWQgaW50KV9fYiArIChfX3ZlY3RvciBzaWduZWQgaW50KV9fYzsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19tbGFkZChfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iLAogICAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYykgewogIHJldHVybiBfX2EgKiBfX2IgKyBfX2M7Cn0KCi8qLS0gdmVjX21oYWRkIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBjaGFyCnZlY19taGFkZChfX3ZlY3RvciBzaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYiwKICAgICAgICAgIF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92bWFoYihfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfbWhhZGQoX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iLAogICAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdm1hbGhiKF9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgc2hvcnQKdmVjX21oYWRkKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2IsCiAgICAgICAgICBfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19jKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZtYWhoKF9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydAp2ZWNfbWhhZGQoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IsCiAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdm1hbGhoKF9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgaW50CnZlY19taGFkZChfX3ZlY3RvciBzaWduZWQgaW50IF9fYSwgX192ZWN0b3Igc2lnbmVkIGludCBfX2IsCiAgICAgICAgICBfX3ZlY3RvciBzaWduZWQgaW50IF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92bWFoZihfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19taGFkZChfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iLAogICAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92bWFsaGYoX19hLCBfX2IsIF9fYyk7Cn0KCi8qLS0gdmVjX21lYWRkIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBzaG9ydAp2ZWNfbWVhZGQoX192ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciBzaWduZWQgY2hhciBfX2IsCiAgICAgICAgICBfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19jKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZtYWViKF9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydAp2ZWNfbWVhZGQoX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iLAogICAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19jKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZtYWxlYihfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGludAp2ZWNfbWVhZGQoX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYiwKICAgICAgICAgIF9fdmVjdG9yIHNpZ25lZCBpbnQgX19jKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZtYWVoKF9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBpbnQKdmVjX21lYWRkKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iLAogICAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92bWFsZWgoX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcKdmVjX21lYWRkKF9fdmVjdG9yIHNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciBzaWduZWQgaW50IF9fYiwKICAgICAgICAgIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19jKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZtYWVmKF9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcKdmVjX21lYWRkKF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IsCiAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19jKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZtYWxlZihfX2EsIF9fYiwgX19jKTsKfQoKLyotLSB2ZWNfbW9hZGQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIHNob3J0CnZlY19tb2FkZChfX3ZlY3RvciBzaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYiwKICAgICAgICAgIF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdm1hb2IoX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0CnZlY19tb2FkZChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IsCiAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdm1hbG9iKF9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgaW50CnZlY19tb2FkZChfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19iLAogICAgICAgICAgX192ZWN0b3Igc2lnbmVkIGludCBfX2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdm1hb2goX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGludAp2ZWNfbW9hZGQoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IsCiAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19jKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZtYWxvaChfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZwp2ZWNfbW9hZGQoX192ZWN0b3Igc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBpbnQgX19iLAogICAgICAgICAgX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdm1hb2YoX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZwp2ZWNfbW9hZGQoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYiwKICAgICAgICAgIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdm1hbG9mKF9fYSwgX19iLCBfX2MpOwp9CgovKi0tIHZlY19tdWxoIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgY2hhcgp2ZWNfbXVsaChfX3ZlY3RvciBzaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92bWhiKF9fYSwgX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfbXVsaChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdm1saGIoX19hLCBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgc2hvcnQKdmVjX211bGgoX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92bWhoKF9fYSwgX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX211bGgoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdm1saGgoX19hLCBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgaW50CnZlY19tdWxoKF9fdmVjdG9yIHNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciBzaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92bWhmKF9fYSwgX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19tdWxoKF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdm1saGYoX19hLCBfX2IpOwp9CgovKi0tIHZlY19tdWxlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgc2hvcnQKdmVjX211bGUoX192ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdm1lYihfX2EsIF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0CnZlY19tdWxlKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92bWxlYihfX2EsIF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBpbnQKdmVjX211bGUoX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92bWVoKF9fYSwgX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19tdWxlKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZtbGVoKF9fYSwgX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZwp2ZWNfbXVsZShfX3ZlY3RvciBzaWduZWQgaW50IF9fYSwgX192ZWN0b3Igc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdm1lZihfX2EsIF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZwp2ZWNfbXVsZShfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZtbGVmKF9fYSwgX19iKTsKfQoKLyotLSB2ZWNfbXVsbyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIHNob3J0CnZlY19tdWxvKF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3Ztb2IoX19hLCBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydAp2ZWNfbXVsbyhfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdm1sb2IoX19hLCBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgaW50CnZlY19tdWxvKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdm1vaChfX2EsIF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGludAp2ZWNfbXVsbyhfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92bWxvaChfX2EsIF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcKdmVjX211bG8oX192ZWN0b3Igc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3Ztb2YoX19hLCBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcKdmVjX211bG8oX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92bWxvZihfX2EsIF9fYik7Cn0KCi8qLS0gdmVjX21zdW1fdTEyOCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCiNpZiBfX0FSQ0hfXyA+PSAxMgojZGVmaW5lIHZlY19tc3VtX3UxMjgoWCwgWSwgWiwgVykgXAogICgoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2J1aWx0aW5fczM5MF92bXNsZygoWCksIChZKSwgKFopLCAoVykpKTsKI2VuZGlmCgovKi0tIHZlY19zdWJfdTEyOCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfc3ViX3UxMjgoX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZzcShfX2EsIF9fYik7Cn0KCi8qLS0gdmVjX3N1YmMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIKdmVjX3N1YmMoX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZzY2JpYihfX2EsIF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0CnZlY19zdWJjKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZzY2JpaChfX2EsIF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGludAp2ZWNfc3ViYyhfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZzY2JpZihfX2EsIF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZwp2ZWNfc3ViYyhfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZzY2JpZyhfX2EsIF9fYik7Cn0KCi8qLS0gdmVjX3N1YmNfdTEyOCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19zdWJjX3UxMjgoX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZzY2JpcShfX2EsIF9fYik7Cn0KCi8qLS0gdmVjX3N1YmVfdTEyOCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19zdWJlX3UxMjgoX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iLAogICAgICAgICAgICAgIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19jKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZzYmlxKF9fYSwgX19iLCBfX2MpOwp9CgovKi0tIHZlY19zdWJlY191MTI4IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfc3ViZWNfdTEyOChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IsCiAgICAgICAgICAgICAgIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19jKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZzYmNiaXEoX19hLCBfX2IsIF9fYyk7Cn0KCi8qLS0gdmVjX3N1bTIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZwp2ZWNfc3VtMihfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92c3VtZ2goX19hLCBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcKdmVjX3N1bTIoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92c3VtZ2YoX19hLCBfX2IpOwp9CgovKi0tIHZlY19zdW1fdTEyOCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19zdW1fdTEyOChfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZzdW1xZihfX2EsIF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIKdmVjX3N1bV91MTI4KF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdnN1bXFnKF9fYSwgX19iKTsKfQoKLyotLSB2ZWNfc3VtNCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19zdW00KF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92c3VtYihfX2EsIF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGludAp2ZWNfc3VtNChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92c3VtaChfX2EsIF9fYik7Cn0KCi8qLS0gdmVjX3Rlc3RfbWFzayAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfdGVzdF9tYXNrKF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdnRtKChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfdGVzdF9tYXNrKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92dG0oX19hLCBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX3Rlc3RfbWFzayhfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdnRtKChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfdGVzdF9tYXNrKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3Z0bSgoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBpbnQKdmVjX3Rlc3RfbWFzayhfX3ZlY3RvciBzaWduZWQgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92dG0oKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY190ZXN0X21hc2soX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92dG0oKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgaW50CnZlY190ZXN0X21hc2soX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdnRtKChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfdGVzdF9tYXNrKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsCiAgICAgICAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92dG0oKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKI2lmIF9fQVJDSF9fID49IDEyCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfdGVzdF9tYXNrKF9fdmVjdG9yIGZsb2F0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92dG0oKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQojZW5kaWYKCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIGludAp2ZWNfdGVzdF9tYXNrKF9fdmVjdG9yIGRvdWJsZSBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdnRtKChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYik7Cn0KCi8qLS0gdmVjX21hZGQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCiNpZiBfX0FSQ0hfXyA+PSAxMgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBmbG9hdAp2ZWNfbWFkZChfX3ZlY3RvciBmbG9hdCBfX2EsIF9fdmVjdG9yIGZsb2F0IF9fYiwgX192ZWN0b3IgZmxvYXQgX19jKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZmbWFzYihfX2EsIF9fYiwgX19jKTsKfQojZW5kaWYKCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIGRvdWJsZQp2ZWNfbWFkZChfX3ZlY3RvciBkb3VibGUgX19hLCBfX3ZlY3RvciBkb3VibGUgX19iLCBfX3ZlY3RvciBkb3VibGUgX19jKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZmbWFkYihfX2EsIF9fYiwgX19jKTsKfQoKLyotLSB2ZWNfbXN1YiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKI2lmIF9fQVJDSF9fID49IDEyCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIGZsb2F0CnZlY19tc3ViKF9fdmVjdG9yIGZsb2F0IF9fYSwgX192ZWN0b3IgZmxvYXQgX19iLCBfX3ZlY3RvciBmbG9hdCBfX2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmZtc3NiKF9fYSwgX19iLCBfX2MpOwp9CiNlbmRpZgoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgZG91YmxlCnZlY19tc3ViKF9fdmVjdG9yIGRvdWJsZSBfX2EsIF9fdmVjdG9yIGRvdWJsZSBfX2IsIF9fdmVjdG9yIGRvdWJsZSBfX2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmZtc2RiKF9fYSwgX19iLCBfX2MpOwp9CgovKi0tIHZlY19ubWFkZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKI2lmIF9fQVJDSF9fID49IDEyCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIGZsb2F0CnZlY19ubWFkZChfX3ZlY3RvciBmbG9hdCBfX2EsIF9fdmVjdG9yIGZsb2F0IF9fYiwgX192ZWN0b3IgZmxvYXQgX19jKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3Zmbm1hc2IoX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIGRvdWJsZQp2ZWNfbm1hZGQoX192ZWN0b3IgZG91YmxlIF9fYSwgX192ZWN0b3IgZG91YmxlIF9fYiwgX192ZWN0b3IgZG91YmxlIF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92Zm5tYWRiKF9fYSwgX19iLCBfX2MpOwp9CiNlbmRpZgoKLyotLSB2ZWNfbm1zdWIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCiNpZiBfX0FSQ0hfXyA+PSAxMgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBmbG9hdAp2ZWNfbm1zdWIoX192ZWN0b3IgZmxvYXQgX19hLCBfX3ZlY3RvciBmbG9hdCBfX2IsIF9fdmVjdG9yIGZsb2F0IF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92Zm5tc3NiKF9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBkb3VibGUKdmVjX25tc3ViKF9fdmVjdG9yIGRvdWJsZSBfX2EsIF9fdmVjdG9yIGRvdWJsZSBfX2IsIF9fdmVjdG9yIGRvdWJsZSBfX2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmZubXNkYihfX2EsIF9fYiwgX19jKTsKfQojZW5kaWYKCi8qLS0gdmVjX3NxcnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCiNpZiBfX0FSQ0hfXyA+PSAxMgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBmbG9hdAp2ZWNfc3FydChfX3ZlY3RvciBmbG9hdCBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmZzcXNiKF9fYSk7Cn0KI2VuZGlmCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBkb3VibGUKdmVjX3NxcnQoX192ZWN0b3IgZG91YmxlIF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92ZnNxZGIoX19hKTsKfQoKLyotLSB2ZWNfbGQyZiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKLy8gVGhpcyBwcm90b3R5cGUgaXMgZGVwcmVjYXRlZC4Kc3RhdGljIGlubGluZSBfX0FUVFJTX2FpIF9fdmVjdG9yIGRvdWJsZQp2ZWNfbGQyZihjb25zdCBmbG9hdCAqX19wdHIpIHsKICB0eXBlZGVmIGZsb2F0IF9fdjJmMzIgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDgpKSk7CiAgcmV0dXJuIF9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKCooY29uc3QgX192MmYzMiAqKV9fcHRyLCBfX3ZlY3RvciBkb3VibGUpOwp9CgovKi0tIHZlY19zdDJmIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfYWkgdm9pZAp2ZWNfc3QyZihfX3ZlY3RvciBkb3VibGUgX19hLCBmbG9hdCAqX19wdHIpIHsKICB0eXBlZGVmIGZsb2F0IF9fdjJmMzIgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDgpKSk7CiAgKihfX3YyZjMyICopX19wdHIgPSBfX2J1aWx0aW5fY29udmVydHZlY3RvcihfX2EsIF9fdjJmMzIpOwp9CgovKi0tIHZlY19jdGQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBkb3VibGUKdmVjX2N0ZChfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgaW50IF9fYikKICBfX2NvbnN0YW50X3JhbmdlKF9fYiwgMCwgMzEpIHsKICBfX3ZlY3RvciBkb3VibGUgX19jb252ID0gX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoX19hLCBfX3ZlY3RvciBkb3VibGUpOwogIF9fY29udiAqPSAoKF9fdmVjdG9yIGRvdWJsZSkoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKQogICAgICAgICAgICAgKCgweDNmZlVMTCAtIF9fYikgPDwgNTIpKTsKICByZXR1cm4gX19jb252Owp9CgovLyBUaGlzIHByb3RvdHlwZSBpcyBkZXByZWNhdGVkLgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBkb3VibGUKdmVjX2N0ZChfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCBpbnQgX19iKQogIF9fY29uc3RhbnRfcmFuZ2UoX19iLCAwLCAzMSkgewogIF9fdmVjdG9yIGRvdWJsZSBfX2NvbnYgPSBfX2J1aWx0aW5fY29udmVydHZlY3RvcihfX2EsIF9fdmVjdG9yIGRvdWJsZSk7CiAgX19jb252ICo9ICgoX192ZWN0b3IgZG91YmxlKShfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpCiAgICAgICAgICAgICAoKDB4M2ZmVUxMIC0gX19iKSA8PCA1MikpOwogIHJldHVybiBfX2NvbnY7Cn0KCi8qLS0gdmVjX2N0c2wgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcKdmVjX2N0c2woX192ZWN0b3IgZG91YmxlIF9fYSwgaW50IF9fYikKICBfX2NvbnN0YW50X3JhbmdlKF9fYiwgMCwgMzEpIHsKICBfX2EgKj0gKChfX3ZlY3RvciBkb3VibGUpKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZykKICAgICAgICAgICgoMHgzZmZVTEwgKyBfX2IpIDw8IDUyKSk7CiAgcmV0dXJuIF9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKF9fYSwgX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyk7Cn0KCi8qLS0gdmVjX2N0dWwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi8vIFRoaXMgcHJvdG90eXBlIGlzIGRlcHJlY2F0ZWQuCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZwp2ZWNfY3R1bChfX3ZlY3RvciBkb3VibGUgX19hLCBpbnQgX19iKQogIF9fY29uc3RhbnRfcmFuZ2UoX19iLCAwLCAzMSkgewogIF9fYSAqPSAoKF9fdmVjdG9yIGRvdWJsZSkoX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKQogICAgICAgICAgKCgweDNmZlVMTCArIF9fYikgPDwgNTIpKTsKICByZXR1cm4gX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpOwp9CgovKi0tIHZlY19kb3VibGVlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgojaWYgX19BUkNIX18gPj0gMTIKc3RhdGljIGlubGluZSBfX0FUVFJTX2FpIF9fdmVjdG9yIGRvdWJsZQp2ZWNfZG91YmxlZShfX3ZlY3RvciBmbG9hdCBfX2EpIHsKICB0eXBlZGVmIGZsb2F0IF9fdjJmMzIgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDgpKSk7CiAgX192MmYzMiBfX3BhY2sgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX2EsIF9fYSwgMCwgMik7CiAgcmV0dXJuIF9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKF9fcGFjaywgX192ZWN0b3IgZG91YmxlKTsKfQojZW5kaWYKCi8qLS0gdmVjX2Zsb2F0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCiNpZiBfX0FSQ0hfXyA+PSAxMgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfYWkgX192ZWN0b3IgZmxvYXQKdmVjX2Zsb2F0ZShfX3ZlY3RvciBkb3VibGUgX19hKSB7CiAgdHlwZWRlZiBmbG9hdCBfX3YyZjMyIF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXyg4KSkpOwogIF9fdjJmMzIgX19wYWNrID0gX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoX19hLCBfX3YyZjMyKTsKICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wYWNrLCBfX3BhY2ssIDAsIC0xLCAxLCAtMSk7Cn0KI2VuZGlmCgovKi0tIHZlY19kb3VibGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBkb3VibGUKdmVjX2RvdWJsZShfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fY29udmVydHZlY3RvcihfX2EsIF9fdmVjdG9yIGRvdWJsZSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIGRvdWJsZQp2ZWNfZG91YmxlKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoX19hLCBfX3ZlY3RvciBkb3VibGUpOwp9CgovKi0tIHZlY19mbG9hdCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgojaWYgX19BUkNIX18gPj0gMTMKCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIGZsb2F0CnZlY19mbG9hdChfX3ZlY3RvciBzaWduZWQgaW50IF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fY29udmVydHZlY3RvcihfX2EsIF9fdmVjdG9yIGZsb2F0KTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgZmxvYXQKdmVjX2Zsb2F0KF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoX19hLCBfX3ZlY3RvciBmbG9hdCk7Cn0KCiNlbmRpZgoKLyotLSB2ZWNfc2lnbmVkIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZwp2ZWNfc2lnbmVkKF9fdmVjdG9yIGRvdWJsZSBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoX19hLCBfX3ZlY3RvciBzaWduZWQgbG9uZyBsb25nKTsKfQoKI2lmIF9fQVJDSF9fID49IDEzCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBpbnQKdmVjX3NpZ25lZChfX3ZlY3RvciBmbG9hdCBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoX19hLCBfX3ZlY3RvciBzaWduZWQgaW50KTsKfQojZW5kaWYKCi8qLS0gdmVjX3Vuc2lnbmVkIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZwp2ZWNfdW5zaWduZWQoX192ZWN0b3IgZG91YmxlIF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fY29udmVydHZlY3RvcihfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyk7Cn0KCiNpZiBfX0FSQ0hfXyA+PSAxMwpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBpbnQKdmVjX3Vuc2lnbmVkKF9fdmVjdG9yIGZsb2F0IF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fY29udmVydHZlY3RvcihfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCk7Cn0KI2VuZGlmCgovKi0tIHZlY19yb3VuZHAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgojaWYgX19BUkNIX18gPj0gMTIKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgZmxvYXQKdmVjX3JvdW5kcChfX3ZlY3RvciBmbG9hdCBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmZpc2IoX19hLCA0LCA2KTsKfQojZW5kaWYKCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIGRvdWJsZQp2ZWNfcm91bmRwKF9fdmVjdG9yIGRvdWJsZSBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmZpZGIoX19hLCA0LCA2KTsKfQoKLyotLSB2ZWNfY2VpbCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKI2lmIF9fQVJDSF9fID49IDEyCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIGZsb2F0CnZlY19jZWlsKF9fdmVjdG9yIGZsb2F0IF9fYSkgewogIC8vIE9uIHRoaXMgcGxhdGZvcm0sIHZlY19jZWlsIG5ldmVyIHRyaWdnZXJzIHRoZSBJRUVFLWluZXhhY3QgZXhjZXB0aW9uLgogIHJldHVybiBfX2J1aWx0aW5fczM5MF92ZmlzYihfX2EsIDQsIDYpOwp9CiNlbmRpZgoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgZG91YmxlCnZlY19jZWlsKF9fdmVjdG9yIGRvdWJsZSBfX2EpIHsKICAvLyBPbiB0aGlzIHBsYXRmb3JtLCB2ZWNfY2VpbCBuZXZlciB0cmlnZ2VycyB0aGUgSUVFRS1pbmV4YWN0IGV4Y2VwdGlvbi4KICByZXR1cm4gX19idWlsdGluX3MzOTBfdmZpZGIoX19hLCA0LCA2KTsKfQoKLyotLSB2ZWNfcm91bmRtIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKI2lmIF9fQVJDSF9fID49IDEyCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIGZsb2F0CnZlY19yb3VuZG0oX192ZWN0b3IgZmxvYXQgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZmaXNiKF9fYSwgNCwgNyk7Cn0KI2VuZGlmCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBkb3VibGUKdmVjX3JvdW5kbShfX3ZlY3RvciBkb3VibGUgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZmaWRiKF9fYSwgNCwgNyk7Cn0KCi8qLS0gdmVjX2Zsb29yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCiNpZiBfX0FSQ0hfXyA+PSAxMgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBmbG9hdAp2ZWNfZmxvb3IoX192ZWN0b3IgZmxvYXQgX19hKSB7CiAgLy8gT24gdGhpcyBwbGF0Zm9ybSwgdmVjX2Zsb29yIG5ldmVyIHRyaWdnZXJzIHRoZSBJRUVFLWluZXhhY3QgZXhjZXB0aW9uLgogIHJldHVybiBfX2J1aWx0aW5fczM5MF92ZmlzYihfX2EsIDQsIDcpOwp9CiNlbmRpZgoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgZG91YmxlCnZlY19mbG9vcihfX3ZlY3RvciBkb3VibGUgX19hKSB7CiAgLy8gT24gdGhpcyBwbGF0Zm9ybSwgdmVjX2Zsb29yIG5ldmVyIHRyaWdnZXJzIHRoZSBJRUVFLWluZXhhY3QgZXhjZXB0aW9uLgogIHJldHVybiBfX2J1aWx0aW5fczM5MF92ZmlkYihfX2EsIDQsIDcpOwp9CgovKi0tIHZlY19yb3VuZHogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgojaWYgX19BUkNIX18gPj0gMTIKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgZmxvYXQKdmVjX3JvdW5keihfX3ZlY3RvciBmbG9hdCBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmZpc2IoX19hLCA0LCA1KTsKfQojZW5kaWYKCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIGRvdWJsZQp2ZWNfcm91bmR6KF9fdmVjdG9yIGRvdWJsZSBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmZpZGIoX19hLCA0LCA1KTsKfQoKLyotLSB2ZWNfdHJ1bmMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKI2lmIF9fQVJDSF9fID49IDEyCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIGZsb2F0CnZlY190cnVuYyhfX3ZlY3RvciBmbG9hdCBfX2EpIHsKICAvLyBPbiB0aGlzIHBsYXRmb3JtLCB2ZWNfdHJ1bmMgbmV2ZXIgdHJpZ2dlcnMgdGhlIElFRUUtaW5leGFjdCBleGNlcHRpb24uCiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZmaXNiKF9fYSwgNCwgNSk7Cn0KI2VuZGlmCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBkb3VibGUKdmVjX3RydW5jKF9fdmVjdG9yIGRvdWJsZSBfX2EpIHsKICAvLyBPbiB0aGlzIHBsYXRmb3JtLCB2ZWNfdHJ1bmMgbmV2ZXIgdHJpZ2dlcnMgdGhlIElFRUUtaW5leGFjdCBleGNlcHRpb24uCiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZmaWRiKF9fYSwgNCwgNSk7Cn0KCi8qLS0gdmVjX3JvdW5kYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCiNpZiBfX0FSQ0hfXyA+PSAxMgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBmbG9hdAp2ZWNfcm91bmRjKF9fdmVjdG9yIGZsb2F0IF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92ZmlzYihfX2EsIDQsIDApOwp9CiNlbmRpZgoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgZG91YmxlCnZlY19yb3VuZGMoX192ZWN0b3IgZG91YmxlIF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92ZmlkYihfX2EsIDQsIDApOwp9CgovKi0tIHZlY19yaW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgojaWYgX19BUkNIX18gPj0gMTIKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgZmxvYXQKdmVjX3JpbnQoX192ZWN0b3IgZmxvYXQgX19hKSB7CiAgLy8gdmVjX3JpbnQgbWF5IHRyaWdnZXIgdGhlIElFRUUtaW5leGFjdCBleGNlcHRpb24uCiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZmaXNiKF9fYSwgMCwgMCk7Cn0KI2VuZGlmCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBkb3VibGUKdmVjX3JpbnQoX192ZWN0b3IgZG91YmxlIF9fYSkgewogIC8vIHZlY19yaW50IG1heSB0cmlnZ2VyIHRoZSBJRUVFLWluZXhhY3QgZXhjZXB0aW9uLgogIHJldHVybiBfX2J1aWx0aW5fczM5MF92ZmlkYihfX2EsIDAsIDApOwp9CgovKi0tIHZlY19yb3VuZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgojaWYgX19BUkNIX18gPj0gMTIKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgZmxvYXQKdmVjX3JvdW5kKF9fdmVjdG9yIGZsb2F0IF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92ZmlzYihfX2EsIDQsIDQpOwp9CiNlbmRpZgoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgZG91YmxlCnZlY19yb3VuZChfX3ZlY3RvciBkb3VibGUgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZmaWRiKF9fYSwgNCwgNCk7Cn0KCi8qLS0gdmVjX2ZwX3Rlc3RfZGF0YV9jbGFzcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCiNpZiBfX0FSQ0hfXyA+PSAxMgpleHRlcm4gX19BVFRSU19vIF9fdmVjdG9yIF9fYm9vbCBpbnQKdmVjX2ZwX3Rlc3RfZGF0YV9jbGFzcyhfX3ZlY3RvciBmbG9hdCBfX2EsIGludCBfX2IsIGludCAqX19jKQogIF9fY29uc3RhbnRfcmFuZ2UoX19iLCAwLCA0MDk1KTsKCmV4dGVybiBfX0FUVFJTX28gX192ZWN0b3IgX19ib29sIGxvbmcgbG9uZwp2ZWNfZnBfdGVzdF9kYXRhX2NsYXNzKF9fdmVjdG9yIGRvdWJsZSBfX2EsIGludCBfX2IsIGludCAqX19jKQogIF9fY29uc3RhbnRfcmFuZ2UoX19iLCAwLCA0MDk1KTsKCiNkZWZpbmUgdmVjX2ZwX3Rlc3RfZGF0YV9jbGFzcyhYLCBZLCBaKSBcCiAgKChfX3R5cGVvZl9fKCh2ZWNfZnBfdGVzdF9kYXRhX2NsYXNzKSgoWCksIChZKSwgKFopKSkpIFwKICAgX19leHRlbnNpb25fXyAoeyBcCiAgICAgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX3JlczsgXAogICAgIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX194ID0gKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpKFgpOyBcCiAgICAgaW50ICpfX3ogPSAoWik7IFwKICAgICBzd2l0Y2ggKHNpemVvZiAoKFgpWzBdKSkgeyBcCiAgICAgY2FzZSA0OiAgX19yZXMgPSAoX192ZWN0b3IgdW5zaWduZWQgY2hhcikgXAogICAgICAgICAgICAgICAgICAgICAgX19idWlsdGluX3MzOTBfdmZ0Y2lzYigoX192ZWN0b3IgZmxvYXQpX194LCAoWSksIF9feik7IFwKICAgICAgICAgICAgICBicmVhazsgXAogICAgIGRlZmF1bHQ6IF9fcmVzID0gKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpIFwKICAgICAgICAgICAgICAgICAgICAgIF9fYnVpbHRpbl9zMzkwX3ZmdGNpZGIoKF9fdmVjdG9yIGRvdWJsZSlfX3gsIChZKSwgX196KTsgXAogICAgICAgICAgICAgIGJyZWFrOyBcCiAgICAgfSBfX3JlczsgfSkpCiNlbHNlCiNkZWZpbmUgdmVjX2ZwX3Rlc3RfZGF0YV9jbGFzcyhYLCBZLCBaKSBcCiAgKChfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nKV9fYnVpbHRpbl9zMzkwX3ZmdGNpZGIoKFgpLCAoWSksIChaKSkpCiNlbmRpZgoKI2RlZmluZSBfX1ZFQ19DTEFTU19GUF9aRVJPX1AgKDEgPDwgMTEpCiNkZWZpbmUgX19WRUNfQ0xBU1NfRlBfWkVST19OICgxIDw8IDEwKQojZGVmaW5lIF9fVkVDX0NMQVNTX0ZQX1pFUk8gKF9fVkVDX0NMQVNTX0ZQX1pFUk9fUCB8IF9fVkVDX0NMQVNTX0ZQX1pFUk9fTikKI2RlZmluZSBfX1ZFQ19DTEFTU19GUF9OT1JNQUxfUCAoMSA8PCA5KQojZGVmaW5lIF9fVkVDX0NMQVNTX0ZQX05PUk1BTF9OICgxIDw8IDgpCiNkZWZpbmUgX19WRUNfQ0xBU1NfRlBfTk9STUFMIChfX1ZFQ19DTEFTU19GUF9OT1JNQUxfUCB8IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fVkVDX0NMQVNTX0ZQX05PUk1BTF9OKQojZGVmaW5lIF9fVkVDX0NMQVNTX0ZQX1NVQk5PUk1BTF9QICgxIDw8IDcpCiNkZWZpbmUgX19WRUNfQ0xBU1NfRlBfU1VCTk9STUFMX04gKDEgPDwgNikKI2RlZmluZSBfX1ZFQ19DTEFTU19GUF9TVUJOT1JNQUwgKF9fVkVDX0NMQVNTX0ZQX1NVQk5PUk1BTF9QIHwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19WRUNfQ0xBU1NfRlBfU1VCTk9STUFMX04pCiNkZWZpbmUgX19WRUNfQ0xBU1NfRlBfSU5GSU5JVFlfUCAoMSA8PCA1KQojZGVmaW5lIF9fVkVDX0NMQVNTX0ZQX0lORklOSVRZX04gKDEgPDwgNCkKI2RlZmluZSBfX1ZFQ19DTEFTU19GUF9JTkZJTklUWSAoX19WRUNfQ0xBU1NfRlBfSU5GSU5JVFlfUCB8IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19WRUNfQ0xBU1NfRlBfSU5GSU5JVFlfTikKI2RlZmluZSBfX1ZFQ19DTEFTU19GUF9RTkFOX1AgKDEgPDwgMykKI2RlZmluZSBfX1ZFQ19DTEFTU19GUF9RTkFOX04gKDEgPDwgMikKI2RlZmluZSBfX1ZFQ19DTEFTU19GUF9RTkFOIChfX1ZFQ19DTEFTU19GUF9RTkFOX1AgfCBfX1ZFQ19DTEFTU19GUF9RTkFOX04pCiNkZWZpbmUgX19WRUNfQ0xBU1NfRlBfU05BTl9QICgxIDw8IDEpCiNkZWZpbmUgX19WRUNfQ0xBU1NfRlBfU05BTl9OICgxIDw8IDApCiNkZWZpbmUgX19WRUNfQ0xBU1NfRlBfU05BTiAoX19WRUNfQ0xBU1NfRlBfU05BTl9QIHwgX19WRUNfQ0xBU1NfRlBfU05BTl9OKQojZGVmaW5lIF9fVkVDX0NMQVNTX0ZQX05BTiAoX19WRUNfQ0xBU1NfRlBfUU5BTiB8IF9fVkVDX0NMQVNTX0ZQX1NOQU4pCiNkZWZpbmUgX19WRUNfQ0xBU1NfRlBfTk9UX05PUk1BTCAoX19WRUNfQ0xBU1NfRlBfTkFOIHwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fVkVDX0NMQVNTX0ZQX1NVQk5PUk1BTCB8IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX1ZFQ19DTEFTU19GUF9aRVJPIHwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fVkVDX0NMQVNTX0ZQX0lORklOSVRZKQoKLyotLSB2ZWNfZXh0ZW5kX3RvX2ZwMzJfaGkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKI2lmIF9fQVJDSF9fID49IDE0CiNkZWZpbmUgdmVjX2V4dGVuZF90b19mcDMyX2hpKFgsIFcpIFwKICAoKF9fdmVjdG9yIGZsb2F0KV9fYnVpbHRpbl9zMzkwX3ZjbGZuaHMoKFgpLCAoVykpKTsKI2VuZGlmCgovKi0tIHZlY19leHRlbmRfdG9fZnAzMl9oaSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgojaWYgX19BUkNIX18gPj0gMTQKI2RlZmluZSB2ZWNfZXh0ZW5kX3RvX2ZwMzJfbG8oWCwgVykgXAogICgoX192ZWN0b3IgZmxvYXQpX19idWlsdGluX3MzOTBfdmNsZm5scygoWCksIChXKSkpOwojZW5kaWYKCi8qLS0gdmVjX3JvdW5kX2Zyb21fZnAzMiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCiNpZiBfX0FSQ0hfXyA+PSAxNAojZGVmaW5lIHZlY19yb3VuZF9mcm9tX2ZwMzIoWCwgWSwgVykgXAogICgoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19idWlsdGluX3MzOTBfdmNybmZzKChYKSwgKFkpLCAoVykpKTsKI2VuZGlmCgovKi0tIHZlY19jb252ZXJ0X3RvX2ZwMTYgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgojaWYgX19BUkNIX18gPj0gMTQKI2RlZmluZSB2ZWNfY29udmVydF90b19mcDE2KFgsIFcpIFwKICAoKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYnVpbHRpbl9zMzkwX3ZjZm4oKFgpLCAoVykpKTsKI2VuZGlmCgovKi0tIHZlY19jb252ZXJ0X2Zyb21fZnAxNiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgojaWYgX19BUkNIX18gPj0gMTQKI2RlZmluZSB2ZWNfY29udmVydF9mcm9tX2ZwMTYoWCwgVykgXAogICgoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19idWlsdGluX3MzOTBfdmNuZigoWCksIChXKSkpOwojZW5kaWYKCi8qLS0gdmVjX2NwX3VudGlsX3plcm8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBjaGFyCnZlY19jcF91bnRpbF96ZXJvKF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYSkgewogIHJldHVybiAoKF9fdmVjdG9yIHNpZ25lZCBjaGFyKQogICAgICAgICAgX19idWlsdGluX3MzOTBfdmlzdHJiKChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSkpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgY2hhcgp2ZWNfY3BfdW50aWxfemVybyhfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2EpIHsKICByZXR1cm4gKChfX3ZlY3RvciBfX2Jvb2wgY2hhcikKICAgICAgICAgIF9fYnVpbHRpbl9zMzkwX3Zpc3RyYigoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EpKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfY3BfdW50aWxfemVybyhfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92aXN0cmIoX19hKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIHNob3J0CnZlY19jcF91bnRpbF96ZXJvKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EpIHsKICByZXR1cm4gKChfX3ZlY3RvciBzaWduZWQgc2hvcnQpCiAgICAgICAgICBfX2J1aWx0aW5fczM5MF92aXN0cmgoKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYSkpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQKdmVjX2NwX3VudGlsX3plcm8oX192ZWN0b3IgX19ib29sIHNob3J0IF9fYSkgewogIHJldHVybiAoKF9fdmVjdG9yIF9fYm9vbCBzaG9ydCkKICAgICAgICAgIF9fYnVpbHRpbl9zMzkwX3Zpc3RyaCgoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19hKSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0CnZlY19jcF91bnRpbF96ZXJvKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92aXN0cmgoX19hKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGludAp2ZWNfY3BfdW50aWxfemVybyhfX3ZlY3RvciBzaWduZWQgaW50IF9fYSkgewogIHJldHVybiAoKF9fdmVjdG9yIHNpZ25lZCBpbnQpCiAgICAgICAgICBfX2J1aWx0aW5fczM5MF92aXN0cmYoKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2EpKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIGludAp2ZWNfY3BfdW50aWxfemVybyhfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYSkgewogIHJldHVybiAoKF9fdmVjdG9yIF9fYm9vbCBpbnQpCiAgICAgICAgICBfX2J1aWx0aW5fczM5MF92aXN0cmYoKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2EpKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19jcF91bnRpbF96ZXJvKF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmlzdHJmKF9fYSk7Cn0KCi8qLS0gdmVjX2NwX3VudGlsX3plcm9fY2MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBjaGFyCnZlY19jcF91bnRpbF96ZXJvX2NjKF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgaW50ICpfX2NjKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgY2hhcikKICAgIF9fYnVpbHRpbl9zMzkwX3Zpc3RyYnMoKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCBfX2NjKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIGNoYXIKdmVjX2NwX3VudGlsX3plcm9fY2MoX192ZWN0b3IgX19ib29sIGNoYXIgX19hLCBpbnQgKl9fY2MpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBjaGFyKQogICAgX19idWlsdGluX3MzOTBfdmlzdHJicygoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19jcF91bnRpbF96ZXJvX2NjKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCBpbnQgKl9fY2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmlzdHJicyhfX2EsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgc2hvcnQKdmVjX2NwX3VudGlsX3plcm9fY2MoX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSwgaW50ICpfX2NjKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgc2hvcnQpCiAgICBfX2J1aWx0aW5fczM5MF92aXN0cmhzKChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2EsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQKdmVjX2NwX3VudGlsX3plcm9fY2MoX192ZWN0b3IgX19ib29sIHNob3J0IF9fYSwgaW50ICpfX2NjKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBfX2Jvb2wgc2hvcnQpCiAgICBfX2J1aWx0aW5fczM5MF92aXN0cmhzKChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2EsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydAp2ZWNfY3BfdW50aWxfemVyb19jYyhfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIGludCAqX19jYykgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92aXN0cmhzKF9fYSwgX19jYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBpbnQKdmVjX2NwX3VudGlsX3plcm9fY2MoX192ZWN0b3Igc2lnbmVkIGludCBfX2EsIGludCAqX19jYykgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIGludCkKICAgIF9fYnVpbHRpbl9zMzkwX3Zpc3RyZnMoKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2EsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgaW50CnZlY19jcF91bnRpbF96ZXJvX2NjKF9fdmVjdG9yIF9fYm9vbCBpbnQgX19hLCBpbnQgKl9fY2MpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBpbnQpCiAgICBfX2J1aWx0aW5fczM5MF92aXN0cmZzKChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19hLCBfX2NjKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19jcF91bnRpbF96ZXJvX2NjKF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIGludCAqX19jYykgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92aXN0cmZzKF9fYSwgX19jYyk7Cn0KCi8qLS0gdmVjX2NtcGVxX2lkeCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBjaGFyCnZlY19jbXBlcV9pZHgoX192ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBjaGFyKQogICAgX19idWlsdGluX3MzOTBfdmZlZWIoKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfY21wZXFfaWR4KF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYSwgX192ZWN0b3IgX19ib29sIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZmZWViKChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfY21wZXFfaWR4KF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92ZmVlYihfX2EsIF9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBzaG9ydAp2ZWNfY21wZXFfaWR4KF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCkKICAgIF9fYnVpbHRpbl9zMzkwX3ZmZWVoKChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX2NtcGVxX2lkeChfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19hLCBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZmZWVoKChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydAp2ZWNfY21wZXFfaWR4KF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZmZWVoKF9fYSwgX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGludAp2ZWNfY21wZXFfaWR4KF9fdmVjdG9yIHNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciBzaWduZWQgaW50IF9fYikgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIGludCkKICAgIF9fYnVpbHRpbl9zMzkwX3ZmZWVmKChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBpbnQKdmVjX2NtcGVxX2lkeChfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYSwgX192ZWN0b3IgX19ib29sIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmZlZWYoKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19jbXBlcV9pZHgoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92ZmVlZihfX2EsIF9fYik7Cn0KCi8qLS0gdmVjX2NtcGVxX2lkeF9jYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBjaGFyCnZlY19jbXBlcV9pZHhfY2MoX192ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciBzaWduZWQgY2hhciBfX2IsIGludCAqX19jYykgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIGNoYXIpCiAgICBfX2J1aWx0aW5fczM5MF92ZmVlYnMoKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYiwgX19jYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIKdmVjX2NtcGVxX2lkeF9jYyhfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2EsIF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYiwgaW50ICpfX2NjKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZmZWVicygoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19jbXBlcV9pZHhfY2MoX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iLAogICAgICAgICAgICAgICAgIGludCAqX19jYykgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92ZmVlYnMoX19hLCBfX2IsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgc2hvcnQKdmVjX2NtcGVxX2lkeF9jYyhfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19iLAogICAgICAgICAgICAgICAgIGludCAqX19jYykgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIHNob3J0KQogICAgX19idWlsdGluX3MzOTBfdmZlZWhzKChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYiwgX19jYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0CnZlY19jbXBlcV9pZHhfY2MoX192ZWN0b3IgX19ib29sIHNob3J0IF9fYSwgX192ZWN0b3IgX19ib29sIHNob3J0IF9fYiwgaW50ICpfX2NjKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZmZWVocygoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYiwgX19jYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0CnZlY19jbXBlcV9pZHhfY2MoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IsCiAgICAgICAgICAgICAgICAgaW50ICpfX2NjKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZmZWVocyhfX2EsIF9fYiwgX19jYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBpbnQKdmVjX2NtcGVxX2lkeF9jYyhfX3ZlY3RvciBzaWduZWQgaW50IF9fYSwgX192ZWN0b3Igc2lnbmVkIGludCBfX2IsIGludCAqX19jYykgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIGludCkKICAgIF9fYnVpbHRpbl9zMzkwX3ZmZWVmcygoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYiwgX19jYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGludAp2ZWNfY21wZXFfaWR4X2NjKF9fdmVjdG9yIF9fYm9vbCBpbnQgX19hLCBfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYiwgaW50ICpfX2NjKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZmZWVmcygoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19iLCBfX2NjKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19jbXBlcV9pZHhfY2MoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYiwKICAgICAgICAgICAgICAgICBpbnQgKl9fY2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmZlZWZzKF9fYSwgX19iLCBfX2NjKTsKfQoKLyotLSB2ZWNfY21wZXFfb3JfMF9pZHggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGNoYXIKdmVjX2NtcGVxX29yXzBfaWR4KF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgY2hhcikKICAgIF9fYnVpbHRpbl9zMzkwX3ZmZWV6YigoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfY21wZXFfb3JfMF9pZHgoX192ZWN0b3IgX19ib29sIGNoYXIgX19hLCBfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmZlZXpiKChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIKdmVjX2NtcGVxX29yXzBfaWR4KF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92ZmVlemIoX19hLCBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgc2hvcnQKdmVjX2NtcGVxX29yXzBfaWR4KF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCkKICAgIF9fYnVpbHRpbl9zMzkwX3ZmZWV6aCgoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydAp2ZWNfY21wZXFfb3JfMF9pZHgoX192ZWN0b3IgX19ib29sIHNob3J0IF9fYSwgX192ZWN0b3IgX19ib29sIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92ZmVlemgoKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydAp2ZWNfY21wZXFfb3JfMF9pZHgoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmZlZXpoKF9fYSwgX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGludAp2ZWNfY21wZXFfb3JfMF9pZHgoX192ZWN0b3Igc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgaW50KQogICAgX19idWlsdGluX3MzOTBfdmZlZXpmKChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19jbXBlcV9vcl8wX2lkeChfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYSwgX192ZWN0b3IgX19ib29sIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmZlZXpmKChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBpbnQKdmVjX2NtcGVxX29yXzBfaWR4KF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmZlZXpmKF9fYSwgX19iKTsKfQoKLyotLSB2ZWNfY21wZXFfb3JfMF9pZHhfY2MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGNoYXIKdmVjX2NtcGVxX29yXzBfaWR4X2NjKF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3Igc2lnbmVkIGNoYXIgX19iLAogICAgICAgICAgICAgICAgICAgICAgaW50ICpfX2NjKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgY2hhcikKICAgIF9fYnVpbHRpbl9zMzkwX3ZmZWV6YnMoKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19jbXBlcV9vcl8wX2lkeF9jYyhfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2EsIF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYiwKICAgICAgICAgICAgICAgICAgICAgIGludCAqX19jYykgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92ZmVlemJzKChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19jbXBlcV9vcl8wX2lkeF9jYyhfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IsCiAgICAgICAgICAgICAgICAgICAgICBpbnQgKl9fY2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmZlZXpicyhfX2EsIF9fYiwgX19jYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBzaG9ydAp2ZWNfY21wZXFfb3JfMF9pZHhfY2MoX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYiwKICAgICAgICAgICAgICAgICAgICAgIGludCAqX19jYykgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIHNob3J0KQogICAgX19idWlsdGluX3MzOTBfdmZlZXpocygoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19iLCBfX2NjKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX2NtcGVxX29yXzBfaWR4X2NjKF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2EsIF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICBpbnQgKl9fY2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmZlZXpocygoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2IsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydAp2ZWNfY21wZXFfb3JfMF9pZHhfY2MoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICBpbnQgKl9fY2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmZlZXpocyhfX2EsIF9fYiwgX19jYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBpbnQKdmVjX2NtcGVxX29yXzBfaWR4X2NjKF9fdmVjdG9yIHNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciBzaWduZWQgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgIGludCAqX19jYykgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIGludCkKICAgIF9fYnVpbHRpbl9zMzkwX3ZmZWV6ZnMoKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19iLCBfX2NjKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19jbXBlcV9vcl8wX2lkeF9jYyhfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYSwgX192ZWN0b3IgX19ib29sIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICBpbnQgKl9fY2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmZlZXpmcygoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYiwgX19jYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGludAp2ZWNfY21wZXFfb3JfMF9pZHhfY2MoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgIGludCAqX19jYykgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92ZmVlemZzKF9fYSwgX19iLCBfX2NjKTsKfQoKLyotLSB2ZWNfY21wbmVfaWR4IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGNoYXIKdmVjX2NtcG5lX2lkeChfX3ZlY3RvciBzaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIGNoYXIpCiAgICBfX2J1aWx0aW5fczM5MF92ZmVuZWIoKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIKdmVjX2NtcG5lX2lkeChfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2EsIF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92ZmVuZWIoKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfY21wbmVfaWR4KF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92ZmVuZWIoX19hLCBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgc2hvcnQKdmVjX2NtcG5lX2lkeChfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgc2hvcnQpCiAgICBfX2J1aWx0aW5fczM5MF92ZmVuZWgoKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX2NtcG5lX2lkeChfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19hLCBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZmZW5laCgoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0CnZlY19jbXBuZV9pZHgoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmZlbmVoKF9fYSwgX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGludAp2ZWNfY21wbmVfaWR4KF9fdmVjdG9yIHNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciBzaWduZWQgaW50IF9fYikgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIGludCkKICAgIF9fYnVpbHRpbl9zMzkwX3ZmZW5lZigoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGludAp2ZWNfY21wbmVfaWR4KF9fdmVjdG9yIF9fYm9vbCBpbnQgX19hLCBfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92ZmVuZWYoKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGludAp2ZWNfY21wbmVfaWR4KF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmZlbmVmKF9fYSwgX19iKTsKfQoKLyotLSB2ZWNfY21wbmVfaWR4X2NjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGNoYXIKdmVjX2NtcG5lX2lkeF9jYyhfX3ZlY3RvciBzaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYiwgaW50ICpfX2NjKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgY2hhcikKICAgIF9fYnVpbHRpbl9zMzkwX3ZmZW5lYnMoKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19jbXBuZV9pZHhfY2MoX192ZWN0b3IgX19ib29sIGNoYXIgX19hLCBfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2IsIGludCAqX19jYykgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92ZmVuZWJzKChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19jbXBuZV9pZHhfY2MoX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iLAogICAgICAgICAgICAgICAgIGludCAqX19jYykgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92ZmVuZWJzKF9fYSwgX19iLCBfX2NjKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIHNob3J0CnZlY19jbXBuZV9pZHhfY2MoX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYiwKICAgICAgICAgICAgICAgICBpbnQgKl9fY2MpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCkKICAgIF9fYnVpbHRpbl9zMzkwX3ZmZW5laHMoKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYiwgX19jYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0CnZlY19jbXBuZV9pZHhfY2MoX192ZWN0b3IgX19ib29sIHNob3J0IF9fYSwgX192ZWN0b3IgX19ib29sIHNob3J0IF9fYiwKICAgICAgICAgICAgICAgICBpbnQgKl9fY2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmZlbmVocygoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2IsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydAp2ZWNfY21wbmVfaWR4X2NjKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iLAogICAgICAgICAgICAgICAgIGludCAqX19jYykgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92ZmVuZWhzKF9fYSwgX19iLCBfX2NjKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGludAp2ZWNfY21wbmVfaWR4X2NjKF9fdmVjdG9yIHNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciBzaWduZWQgaW50IF9fYiwgaW50ICpfX2NjKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgaW50KQogICAgX19idWlsdGluX3MzOTBfdmZlbmVmcygoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2IsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBpbnQKdmVjX2NtcG5lX2lkeF9jYyhfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYSwgX192ZWN0b3IgX19ib29sIGludCBfX2IsIGludCAqX19jYykgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92ZmVuZWZzKChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19iLCBfX2NjKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19jbXBuZV9pZHhfY2MoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYiwKICAgICAgICAgICAgICAgICBpbnQgKl9fY2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmZlbmVmcyhfX2EsIF9fYiwgX19jYyk7Cn0KCi8qLS0gdmVjX2NtcG5lX29yXzBfaWR4IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBjaGFyCnZlY19jbXBuZV9vcl8wX2lkeChfX3ZlY3RvciBzaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIGNoYXIpCiAgICBfX2J1aWx0aW5fczM5MF92ZmVuZXpiKChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfY21wbmVfb3JfMF9pZHgoX192ZWN0b3IgX19ib29sIGNoYXIgX19hLCBfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmZlbmV6YigoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfY21wbmVfb3JfMF9pZHgoX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZmZW5lemIoX19hLCBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgc2hvcnQKdmVjX2NtcG5lX29yXzBfaWR4KF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCkKICAgIF9fYnVpbHRpbl9zMzkwX3ZmZW5lemgoKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0CnZlY19jbXBuZV9vcl8wX2lkeChfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19hLCBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZmZW5lemgoKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19iKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX2NtcG5lX29yXzBfaWR4KF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZmZW5lemgoX19hLCBfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgaW50CnZlY19jbXBuZV9vcl8wX2lkeChfX3ZlY3RvciBzaWduZWQgaW50IF9fYSwgX192ZWN0b3Igc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBpbnQpCiAgICBfX2J1aWx0aW5fczM5MF92ZmVuZXpmKChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGludAp2ZWNfY21wbmVfb3JfMF9pZHgoX192ZWN0b3IgX19ib29sIGludCBfX2EsIF9fdmVjdG9yIF9fYm9vbCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZmZW5lemYoKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2IpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBpbnQKdmVjX2NtcG5lX29yXzBfaWR4KF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmZlbmV6ZihfX2EsIF9fYik7Cn0KCi8qLS0gdmVjX2NtcG5lX29yXzBfaWR4X2NjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBjaGFyCnZlY19jbXBuZV9vcl8wX2lkeF9jYyhfX3ZlY3RvciBzaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYiwKICAgICAgICAgICAgICAgICAgICAgIGludCAqX19jYykgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIGNoYXIpCiAgICBfX2J1aWx0aW5fczM5MF92ZmVuZXpicygoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19jbXBuZV9vcl8wX2lkeF9jYyhfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2EsIF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYiwKICAgICAgICAgICAgICAgICAgICAgIGludCAqX19jYykgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92ZmVuZXpicygoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYiwgX19jYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIKdmVjX2NtcG5lX29yXzBfaWR4X2NjKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYiwKICAgICAgICAgICAgICAgICAgICAgIGludCAqX19jYykgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92ZmVuZXpicyhfX2EsIF9fYiwgX19jYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBzaG9ydAp2ZWNfY21wbmVfb3JfMF9pZHhfY2MoX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYiwKICAgICAgICAgICAgICAgICAgICAgIGludCAqX19jYykgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIHNob3J0KQogICAgX19idWlsdGluX3MzOTBfdmZlbmV6aHMoKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2IsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydAp2ZWNfY21wbmVfb3JfMF9pZHhfY2MoX192ZWN0b3IgX19ib29sIHNob3J0IF9fYSwgX192ZWN0b3IgX19ib29sIHNob3J0IF9fYiwKICAgICAgICAgICAgICAgICAgICAgIGludCAqX19jYykgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92ZmVuZXpocygoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19iLCBfX2NjKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX2NtcG5lX29yXzBfaWR4X2NjKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgaW50ICpfX2NjKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZmZW5lemhzKF9fYSwgX19iLCBfX2NjKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGludAp2ZWNfY21wbmVfb3JfMF9pZHhfY2MoX192ZWN0b3Igc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgaW50ICpfX2NjKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgaW50KQogICAgX19idWlsdGluX3MzOTBfdmZlbmV6ZnMoKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYiwgX19jYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGludAp2ZWNfY21wbmVfb3JfMF9pZHhfY2MoX192ZWN0b3IgX19ib29sIGludCBfX2EsIF9fdmVjdG9yIF9fYm9vbCBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgaW50ICpfX2NjKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZmZW5lemZzKChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYiwgX19jYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGludAp2ZWNfY21wbmVfb3JfMF9pZHhfY2MoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgIGludCAqX19jYykgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92ZmVuZXpmcyhfX2EsIF9fYiwgX19jYyk7Cn0KCi8qLS0gdmVjX2NtcHJnIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBjaGFyCnZlY19jbXByZyhfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IsCiAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYykgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIGNoYXIpX19idWlsdGluX3MzOTBfdnN0cmNiKF9fYSwgX19iLCBfX2MsIDQpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQKdmVjX2NtcHJnKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iLAogICAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19jKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBfX2Jvb2wgc2hvcnQpX19idWlsdGluX3MzOTBfdnN0cmNoKF9fYSwgX19iLCBfX2MsIDQpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgaW50CnZlY19jbXByZyhfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iLAogICAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYykgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIGludClfX2J1aWx0aW5fczM5MF92c3RyY2YoX19hLCBfX2IsIF9fYywgNCk7Cn0KCi8qLS0gdmVjX2NtcHJnX2NjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBjaGFyCnZlY19jbXByZ19jYyhfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IsCiAgICAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYywgaW50ICpfX2NjKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBfX2Jvb2wgY2hhcilfX2J1aWx0aW5fczM5MF92c3RyY2JzKF9fYSwgX19iLCBfX2MsIDQsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQKdmVjX2NtcHJnX2NjKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iLAogICAgICAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19jLCBpbnQgKl9fY2MpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBzaG9ydClfX2J1aWx0aW5fczM5MF92c3RyY2hzKF9fYSwgX19iLCBfX2MsIDQsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgaW50CnZlY19jbXByZ19jYyhfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iLAogICAgICAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYywgaW50ICpfX2NjKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBfX2Jvb2wgaW50KV9fYnVpbHRpbl9zMzkwX3ZzdHJjZnMoX19hLCBfX2IsIF9fYywgNCwgX19jYyk7Cn0KCi8qLS0gdmVjX2NtcHJnX2lkeCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIKdmVjX2NtcHJnX2lkeChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IsCiAgICAgICAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdnN0cmNiKF9fYSwgX19iLCBfX2MsIDApOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydAp2ZWNfY21wcmdfaWR4KF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iLAogICAgICAgICAgICAgIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92c3RyY2goX19hLCBfX2IsIF9fYywgMCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGludAp2ZWNfY21wcmdfaWR4KF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IsCiAgICAgICAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92c3RyY2YoX19hLCBfX2IsIF9fYywgMCk7Cn0KCi8qLS0gdmVjX2NtcHJnX2lkeF9jYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIKdmVjX2NtcHJnX2lkeF9jYyhfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IsCiAgICAgICAgICAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2MsIGludCAqX19jYykgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92c3RyY2JzKF9fYSwgX19iLCBfX2MsIDAsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydAp2ZWNfY21wcmdfaWR4X2NjKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iLAogICAgICAgICAgICAgICAgIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYywgaW50ICpfX2NjKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZzdHJjaHMoX19hLCBfX2IsIF9fYywgMCwgX19jYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGludAp2ZWNfY21wcmdfaWR4X2NjKF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IsCiAgICAgICAgICAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYywgaW50ICpfX2NjKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZzdHJjZnMoX19hLCBfX2IsIF9fYywgMCwgX19jYyk7Cn0KCi8qLS0gdmVjX2NtcHJnX29yXzBfaWR4IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIKdmVjX2NtcHJnX29yXzBfaWR4KF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYiwKICAgICAgICAgICAgICAgICAgIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19jKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZzdHJjemIoX19hLCBfX2IsIF9fYywgMCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0CnZlY19jbXByZ19vcl8wX2lkeChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYiwKICAgICAgICAgICAgICAgICAgIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92c3RyY3poKF9fYSwgX19iLCBfX2MsIDApOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBpbnQKdmVjX2NtcHJnX29yXzBfaWR4KF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19jKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZzdHJjemYoX19hLCBfX2IsIF9fYywgMCk7Cn0KCi8qLS0gdmVjX2NtcHJnX29yXzBfaWR4X2NjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIKdmVjX2NtcHJnX29yXzBfaWR4X2NjKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYiwKICAgICAgICAgICAgICAgICAgICAgIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19jLCBpbnQgKl9fY2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdnN0cmN6YnMoX19hLCBfX2IsIF9fYywgMCwgX19jYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0CnZlY19jbXByZ19vcl8wX2lkeF9jYyhfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYiwKICAgICAgICAgICAgICAgICAgICAgIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYywgaW50ICpfX2NjKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZzdHJjemhzKF9fYSwgX19iLCBfX2MsIDAsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBpbnQKdmVjX2NtcHJnX29yXzBfaWR4X2NjKF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19jLCBpbnQgKl9fY2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdnN0cmN6ZnMoX19hLCBfX2IsIF9fYywgMCwgX19jYyk7Cn0KCi8qLS0gdmVjX2NtcG5yZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBjaGFyCnZlY19jbXBucmcoX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iLAogICAgICAgICAgIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19jKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBfX2Jvb2wgY2hhcilfX2J1aWx0aW5fczM5MF92c3RyY2IoX19hLCBfX2IsIF9fYywgMTIpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQKdmVjX2NtcG5yZyhfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYiwKICAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2MpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBzaG9ydClfX2J1aWx0aW5fczM5MF92c3RyY2goX19hLCBfX2IsIF9fYywgMTIpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgaW50CnZlY19jbXBucmcoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYiwKICAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19jKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBfX2Jvb2wgaW50KV9fYnVpbHRpbl9zMzkwX3ZzdHJjZihfX2EsIF9fYiwgX19jLCAxMik7Cn0KCi8qLS0gdmVjX2NtcG5yZ19jYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBjaGFyCnZlY19jbXBucmdfY2MoX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iLAogICAgICAgICAgICAgIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19jLCBpbnQgKl9fY2MpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBjaGFyKQogICAgX19idWlsdGluX3MzOTBfdnN0cmNicyhfX2EsIF9fYiwgX19jLCAxMiwgX19jYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBzaG9ydAp2ZWNfY21wbnJnX2NjKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iLAogICAgICAgICAgICAgIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYywgaW50ICpfX2NjKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBfX2Jvb2wgc2hvcnQpCiAgICBfX2J1aWx0aW5fczM5MF92c3RyY2hzKF9fYSwgX19iLCBfX2MsIDEyLCBfX2NjKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIGludAp2ZWNfY21wbnJnX2NjKF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IsCiAgICAgICAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYywgaW50ICpfX2NjKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBfX2Jvb2wgaW50KQogICAgX19idWlsdGluX3MzOTBfdnN0cmNmcyhfX2EsIF9fYiwgX19jLCAxMiwgX19jYyk7Cn0KCi8qLS0gdmVjX2NtcG5yZ19pZHggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIKdmVjX2NtcG5yZ19pZHgoX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iLAogICAgICAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92c3RyY2IoX19hLCBfX2IsIF9fYywgOCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0CnZlY19jbXBucmdfaWR4KF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iLAogICAgICAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdnN0cmNoKF9fYSwgX19iLCBfX2MsIDgpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBpbnQKdmVjX2NtcG5yZ19pZHgoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYiwKICAgICAgICAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92c3RyY2YoX19hLCBfX2IsIF9fYywgOCk7Cn0KCi8qLS0gdmVjX2NtcG5yZ19pZHhfY2MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIKdmVjX2NtcG5yZ19pZHhfY2MoX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iLAogICAgICAgICAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYywgaW50ICpfX2NjKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZzdHJjYnMoX19hLCBfX2IsIF9fYywgOCwgX19jYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0CnZlY19jbXBucmdfaWR4X2NjKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iLAogICAgICAgICAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2MsIGludCAqX19jYykgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92c3RyY2hzKF9fYSwgX19iLCBfX2MsIDgsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBpbnQKdmVjX2NtcG5yZ19pZHhfY2MoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYywgaW50ICpfX2NjKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZzdHJjZnMoX19hLCBfX2IsIF9fYywgOCwgX19jYyk7Cn0KCi8qLS0gdmVjX2NtcG5yZ19vcl8wX2lkeCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIKdmVjX2NtcG5yZ19vcl8wX2lkeChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IsCiAgICAgICAgICAgICAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdnN0cmN6YihfX2EsIF9fYiwgX19jLCA4KTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX2NtcG5yZ19vcl8wX2lkeChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYiwKICAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdnN0cmN6aChfX2EsIF9fYiwgX19jLCA4KTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19jbXBucmdfb3JfMF9pZHgoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19jKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZzdHJjemYoX19hLCBfX2IsIF9fYywgOCk7Cn0KCi8qLS0gdmVjX2NtcG5yZ19vcl8wX2lkeF9jYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIKdmVjX2NtcG5yZ19vcl8wX2lkeF9jYyhfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYiwKICAgICAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYywgaW50ICpfX2NjKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZzdHJjemJzKF9fYSwgX19iLCBfX2MsIDgsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydAp2ZWNfY21wbnJnX29yXzBfaWR4X2NjKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19jLCBpbnQgKl9fY2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdnN0cmN6aHMoX19hLCBfX2IsIF9fYywgOCwgX19jYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGludAp2ZWNfY21wbnJnX29yXzBfaWR4X2NjKF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19jLCBpbnQgKl9fY2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdnN0cmN6ZnMoX19hLCBfX2IsIF9fYywgOCwgX19jYyk7Cn0KCi8qLS0gdmVjX2ZpbmRfYW55X2VxIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBjaGFyCnZlY19maW5kX2FueV9lcShfX3ZlY3RvciBzaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIGNoYXIpCiAgICBfX2J1aWx0aW5fczM5MF92ZmFlYigoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IsIDQpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgY2hhcgp2ZWNfZmluZF9hbnlfZXEoX192ZWN0b3IgX19ib29sIGNoYXIgX19hLCBfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBjaGFyKQogICAgX19idWlsdGluX3MzOTBfdmZhZWIoKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iLCA0KTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIGNoYXIKdmVjX2ZpbmRfYW55X2VxKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIGNoYXIpX19idWlsdGluX3MzOTBfdmZhZWIoX19hLCBfX2IsIDQpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQKdmVjX2ZpbmRfYW55X2VxKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBzaG9ydCkKICAgIF9fYnVpbHRpbl9zMzkwX3ZmYWVoKChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19iLCA0KTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIHNob3J0CnZlY19maW5kX2FueV9lcShfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19hLCBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBfX2Jvb2wgc2hvcnQpCiAgICBfX2J1aWx0aW5fczM5MF92ZmFlaCgoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYiwgNCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBzaG9ydAp2ZWNfZmluZF9hbnlfZXEoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBzaG9ydClfX2J1aWx0aW5fczM5MF92ZmFlaChfX2EsIF9fYiwgNCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBpbnQKdmVjX2ZpbmRfYW55X2VxKF9fdmVjdG9yIHNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciBzaWduZWQgaW50IF9fYikgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIGludCkKICAgIF9fYnVpbHRpbl9zMzkwX3ZmYWVmKChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2IsIDQpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgaW50CnZlY19maW5kX2FueV9lcShfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYSwgX192ZWN0b3IgX19ib29sIGludCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBpbnQpCiAgICBfX2J1aWx0aW5fczM5MF92ZmFlZigoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19iLCA0KTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIGludAp2ZWNfZmluZF9hbnlfZXEoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIGludClfX2J1aWx0aW5fczM5MF92ZmFlZihfX2EsIF9fYiwgNCk7Cn0KCi8qLS0gdmVjX2ZpbmRfYW55X2VxX2NjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBjaGFyCnZlY19maW5kX2FueV9lcV9jYyhfX3ZlY3RvciBzaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYiwKICAgICAgICAgICAgICAgICAgIGludCAqX19jYykgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIGNoYXIpCiAgICBfX2J1aWx0aW5fczM5MF92ZmFlYnMoKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYiwgNCwgX19jYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBjaGFyCnZlY19maW5kX2FueV9lcV9jYyhfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2EsIF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYiwKICAgICAgICAgICAgICAgICAgIGludCAqX19jYykgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIGNoYXIpCiAgICBfX2J1aWx0aW5fczM5MF92ZmFlYnMoKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYiwgNCwgX19jYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBjaGFyCnZlY19maW5kX2FueV9lcV9jYyhfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9fY2MpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBjaGFyKV9fYnVpbHRpbl9zMzkwX3ZmYWVicyhfX2EsIF9fYiwgNCwgX19jYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBzaG9ydAp2ZWNfZmluZF9hbnlfZXFfY2MoX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYiwKICAgICAgICAgICAgICAgICAgIGludCAqX19jYykgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIHNob3J0KQogICAgX19idWlsdGluX3MzOTBfdmZhZWhzKChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYiwgNCwgX19jYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBzaG9ydAp2ZWNfZmluZF9hbnlfZXFfY2MoX192ZWN0b3IgX19ib29sIHNob3J0IF9fYSwgX192ZWN0b3IgX19ib29sIHNob3J0IF9fYiwKICAgICAgICAgICAgICAgICAgIGludCAqX19jYykgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIHNob3J0KQogICAgX19idWlsdGluX3MzOTBfdmZhZWhzKChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYiwgNCwgX19jYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBzaG9ydAp2ZWNfZmluZF9hbnlfZXFfY2MoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9fY2MpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBzaG9ydClfX2J1aWx0aW5fczM5MF92ZmFlaHMoX19hLCBfX2IsIDQsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgaW50CnZlY19maW5kX2FueV9lcV9jYyhfX3ZlY3RvciBzaWduZWQgaW50IF9fYSwgX192ZWN0b3Igc2lnbmVkIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9fY2MpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBpbnQpCiAgICBfX2J1aWx0aW5fczM5MF92ZmFlZnMoKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2IsIDQsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgaW50CnZlY19maW5kX2FueV9lcV9jYyhfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYSwgX192ZWN0b3IgX19ib29sIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9fY2MpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBpbnQpCiAgICBfX2J1aWx0aW5fczM5MF92ZmFlZnMoKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2IsIDQsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgaW50CnZlY19maW5kX2FueV9lcV9jYyhfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgaW50ICpfX2NjKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBfX2Jvb2wgaW50KV9fYnVpbHRpbl9zMzkwX3ZmYWVmcyhfX2EsIF9fYiwgNCwgX19jYyk7Cn0KCi8qLS0gdmVjX2ZpbmRfYW55X2VxX2lkeCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBjaGFyCnZlY19maW5kX2FueV9lcV9pZHgoX192ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBjaGFyKQogICAgX19idWlsdGluX3MzOTBfdmZhZWIoKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iLCAwKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfZmluZF9hbnlfZXFfaWR4KF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYSwgX192ZWN0b3IgX19ib29sIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZmYWViKChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iLCAwKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfZmluZF9hbnlfZXFfaWR4KF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92ZmFlYihfX2EsIF9fYiwgMCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBzaG9ydAp2ZWNfZmluZF9hbnlfZXFfaWR4KF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCkKICAgIF9fYnVpbHRpbl9zMzkwX3ZmYWVoKChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19iLCAwKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX2ZpbmRfYW55X2VxX2lkeChfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19hLCBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZmYWVoKChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2IsIDApOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydAp2ZWNfZmluZF9hbnlfZXFfaWR4KF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZmYWVoKF9fYSwgX19iLCAwKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGludAp2ZWNfZmluZF9hbnlfZXFfaWR4KF9fdmVjdG9yIHNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciBzaWduZWQgaW50IF9fYikgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIGludCkKICAgIF9fYnVpbHRpbl9zMzkwX3ZmYWVmKChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2IsIDApOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBpbnQKdmVjX2ZpbmRfYW55X2VxX2lkeChfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYSwgX192ZWN0b3IgX19ib29sIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmZhZWYoKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19iLCAwKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19maW5kX2FueV9lcV9pZHgoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92ZmFlZihfX2EsIF9fYiwgMCk7Cn0KCi8qLS0gdmVjX2ZpbmRfYW55X2VxX2lkeF9jYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBjaGFyCnZlY19maW5kX2FueV9lcV9pZHhfY2MoX192ZWN0b3Igc2lnbmVkIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgIF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYiwgaW50ICpfX2NjKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgY2hhcikKICAgIF9fYnVpbHRpbl9zMzkwX3ZmYWVicygoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iLCAwLCBfX2NjKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfZmluZF9hbnlfZXFfaWR4X2NjKF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2IsIGludCAqX19jYykgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92ZmFlYnMoKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iLCAwLCBfX2NjKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfZmluZF9hbnlfZXFfaWR4X2NjKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iLCBpbnQgKl9fY2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmZhZWJzKF9fYSwgX19iLCAwLCBfX2NjKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIHNob3J0CnZlY19maW5kX2FueV9lcV9pZHhfY2MoX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19iLCBpbnQgKl9fY2MpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCkKICAgIF9fYnVpbHRpbl9zMzkwX3ZmYWVocygoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2IsIDAsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydAp2ZWNfZmluZF9hbnlfZXFfaWR4X2NjKF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgX192ZWN0b3IgX19ib29sIHNob3J0IF9fYiwgaW50ICpfX2NjKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZmYWVocygoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYiwgMCwgX19jYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0CnZlY19maW5kX2FueV9lcV9pZHhfY2MoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYiwgaW50ICpfX2NjKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZmYWVocyhfX2EsIF9fYiwgMCwgX19jYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBpbnQKdmVjX2ZpbmRfYW55X2VxX2lkeF9jYyhfX3ZlY3RvciBzaWduZWQgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciBzaWduZWQgaW50IF9fYiwgaW50ICpfX2NjKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgaW50KQogICAgX19idWlsdGluX3MzOTBfdmZhZWZzKChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19iLCAwLCBfX2NjKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19maW5kX2FueV9lcV9pZHhfY2MoX192ZWN0b3IgX19ib29sIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgX192ZWN0b3IgX19ib29sIGludCBfX2IsIGludCAqX19jYykgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92ZmFlZnMoKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYiwgMCwgX19jYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGludAp2ZWNfZmluZF9hbnlfZXFfaWR4X2NjKF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYiwgaW50ICpfX2NjKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZmYWVmcyhfX2EsIF9fYiwgMCwgX19jYyk7Cn0KCi8qLS0gdmVjX2ZpbmRfYW55X2VxX29yXzBfaWR4IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBjaGFyCnZlY19maW5kX2FueV9lcV9vcl8wX2lkeChfX3ZlY3RvciBzaWduZWQgY2hhciBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBjaGFyKQogICAgX19idWlsdGluX3MzOTBfdmZhZXpiKChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IsIDApOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19maW5kX2FueV9lcV9vcl8wX2lkeChfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmZhZXpiKChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYiwgMCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIKdmVjX2ZpbmRfYW55X2VxX29yXzBfaWR4KF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmZhZXpiKF9fYSwgX19iLCAwKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIHNob3J0CnZlY19maW5kX2FueV9lcV9vcl8wX2lkeChfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIHNob3J0KQogICAgX19idWlsdGluX3MzOTBfdmZhZXpoKChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYiwgMCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0CnZlY19maW5kX2FueV9lcV9vcl8wX2lkeChfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgX192ZWN0b3IgX19ib29sIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92ZmFlemgoKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2IsIDApOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydAp2ZWNfZmluZF9hbnlfZXFfb3JfMF9pZHgoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZmYWV6aChfX2EsIF9fYiwgMCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBpbnQKdmVjX2ZpbmRfYW55X2VxX29yXzBfaWR4KF9fdmVjdG9yIHNpZ25lZCBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgX192ZWN0b3Igc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBpbnQpCiAgICBfX2J1aWx0aW5fczM5MF92ZmFlemYoKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2IsIDApOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBpbnQKdmVjX2ZpbmRfYW55X2VxX29yXzBfaWR4KF9fdmVjdG9yIF9fYm9vbCBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgX192ZWN0b3IgX19ib29sIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmZhZXpmKChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2IsIDApOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBpbnQKdmVjX2ZpbmRfYW55X2VxX29yXzBfaWR4KF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZmYWV6ZihfX2EsIF9fYiwgMCk7Cn0KCi8qLS0gdmVjX2ZpbmRfYW55X2VxX29yXzBfaWR4X2NjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBjaGFyCnZlY19maW5kX2FueV9lcV9vcl8wX2lkeF9jYyhfX3ZlY3RvciBzaWduZWQgY2hhciBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciBzaWduZWQgY2hhciBfX2IsIGludCAqX19jYykgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIGNoYXIpCiAgICBfX2J1aWx0aW5fczM5MF92ZmFlemJzKChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iLCAwLCBfX2NjKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfZmluZF9hbnlfZXFfb3JfMF9pZHhfY2MoX192ZWN0b3IgX19ib29sIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX192ZWN0b3IgX19ib29sIGNoYXIgX19iLCBpbnQgKl9fY2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmZhZXpicygoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iLCAwLCBfX2NjKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfZmluZF9hbnlfZXFfb3JfMF9pZHhfY2MoX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYiwgaW50ICpfX2NjKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZmYWV6YnMoX19hLCBfX2IsIDAsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgc2hvcnQKdmVjX2ZpbmRfYW55X2VxX29yXzBfaWR4X2NjKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19iLCBpbnQgKl9fY2MpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCkKICAgIF9fYnVpbHRpbl9zMzkwX3ZmYWV6aHMoKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYiwgMCwgX19jYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0CnZlY19maW5kX2FueV9lcV9vcl8wX2lkeF9jYyhfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX192ZWN0b3IgX19ib29sIHNob3J0IF9fYiwgaW50ICpfX2NjKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZmYWV6aHMoKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19iLCAwLCBfX2NjKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX2ZpbmRfYW55X2VxX29yXzBfaWR4X2NjKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYiwgaW50ICpfX2NjKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZmYWV6aHMoX19hLCBfX2IsIDAsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgaW50CnZlY19maW5kX2FueV9lcV9vcl8wX2lkeF9jYyhfX3ZlY3RvciBzaWduZWQgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fdmVjdG9yIHNpZ25lZCBpbnQgX19iLCBpbnQgKl9fY2MpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBpbnQpCiAgICBfX2J1aWx0aW5fczM5MF92ZmFlemZzKChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYiwgMCwgX19jYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGludAp2ZWNfZmluZF9hbnlfZXFfb3JfMF9pZHhfY2MoX192ZWN0b3IgX19ib29sIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYiwgaW50ICpfX2NjKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZmYWV6ZnMoKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2IsIDAsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBpbnQKdmVjX2ZpbmRfYW55X2VxX29yXzBfaWR4X2NjKF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iLCBpbnQgKl9fY2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmZhZXpmcyhfX2EsIF9fYiwgMCwgX19jYyk7Cn0KCi8qLS0gdmVjX2ZpbmRfYW55X25lIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBjaGFyCnZlY19maW5kX2FueV9uZShfX3ZlY3RvciBzaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIGNoYXIpCiAgICBfX2J1aWx0aW5fczM5MF92ZmFlYigoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IsIDEyKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIGNoYXIKdmVjX2ZpbmRfYW55X25lKF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYSwgX192ZWN0b3IgX19ib29sIGNoYXIgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBfX2Jvb2wgY2hhcikKICAgIF9fYnVpbHRpbl9zMzkwX3ZmYWViKChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYiwgMTIpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgY2hhcgp2ZWNfZmluZF9hbnlfbmUoX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBfX2Jvb2wgY2hhcilfX2J1aWx0aW5fczM5MF92ZmFlYihfX2EsIF9fYiwgMTIpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQKdmVjX2ZpbmRfYW55X25lKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBzaG9ydCkKICAgIF9fYnVpbHRpbl9zMzkwX3ZmYWVoKChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19iLCAxMik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBzaG9ydAp2ZWNfZmluZF9hbnlfbmUoX192ZWN0b3IgX19ib29sIHNob3J0IF9fYSwgX192ZWN0b3IgX19ib29sIHNob3J0IF9fYikgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIHNob3J0KQogICAgX19idWlsdGluX3MzOTBfdmZhZWgoKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2IsIDEyKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIHNob3J0CnZlY19maW5kX2FueV9uZShfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIHNob3J0KV9fYnVpbHRpbl9zMzkwX3ZmYWVoKF9fYSwgX19iLCAxMik7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBpbnQKdmVjX2ZpbmRfYW55X25lKF9fdmVjdG9yIHNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciBzaWduZWQgaW50IF9fYikgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIGludCkKICAgIF9fYnVpbHRpbl9zMzkwX3ZmYWVmKChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2IsIDEyKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIGludAp2ZWNfZmluZF9hbnlfbmUoX192ZWN0b3IgX19ib29sIGludCBfX2EsIF9fdmVjdG9yIF9fYm9vbCBpbnQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBfX2Jvb2wgaW50KQogICAgX19idWlsdGluX3MzOTBfdmZhZWYoKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYiwgMTIpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgaW50CnZlY19maW5kX2FueV9uZShfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBfX2Jvb2wgaW50KV9fYnVpbHRpbl9zMzkwX3ZmYWVmKF9fYSwgX19iLCAxMik7Cn0KCi8qLS0gdmVjX2ZpbmRfYW55X25lX2NjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBjaGFyCnZlY19maW5kX2FueV9uZV9jYyhfX3ZlY3RvciBzaWduZWQgY2hhciBfX2EsCiAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciBzaWduZWQgY2hhciBfX2IsIGludCAqX19jYykgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIGNoYXIpCiAgICBfX2J1aWx0aW5fczM5MF92ZmFlYnMoKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYiwgMTIsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgY2hhcgp2ZWNfZmluZF9hbnlfbmVfY2MoX192ZWN0b3IgX19ib29sIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgX192ZWN0b3IgX19ib29sIGNoYXIgX19iLCBpbnQgKl9fY2MpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBjaGFyKQogICAgX19idWlsdGluX3MzOTBfdmZhZWJzKChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IsIDEyLCBfX2NjKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIGNoYXIKdmVjX2ZpbmRfYW55X25lX2NjKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IsIGludCAqX19jYykgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIGNoYXIpX19idWlsdGluX3MzOTBfdmZhZWJzKF9fYSwgX19iLCAxMiwgX19jYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBzaG9ydAp2ZWNfZmluZF9hbnlfbmVfY2MoX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgIF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2IsIGludCAqX19jYykgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIHNob3J0KQogICAgX19idWlsdGluX3MzOTBfdmZhZWhzKChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYiwgMTIsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQKdmVjX2ZpbmRfYW55X25lX2NjKF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19iLCBpbnQgKl9fY2MpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBzaG9ydCkKICAgIF9fYnVpbHRpbl9zMzkwX3ZmYWVocygoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2IsIDEyLCBfX2NjKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIHNob3J0CnZlY19maW5kX2FueV9uZV9jYyhfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IsIGludCAqX19jYykgewogIHJldHVybiAoX192ZWN0b3IgX19ib29sIHNob3J0KV9fYnVpbHRpbl9zMzkwX3ZmYWVocyhfX2EsIF9fYiwgMTIsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBfX2Jvb2wgaW50CnZlY19maW5kX2FueV9uZV9jYyhfX3ZlY3RvciBzaWduZWQgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgIF9fdmVjdG9yIHNpZ25lZCBpbnQgX19iLCBpbnQgKl9fY2MpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBpbnQpCiAgICBfX2J1aWx0aW5fczM5MF92ZmFlZnMoKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2IsIDEyLCBfX2NjKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgX19ib29sIGludAp2ZWNfZmluZF9hbnlfbmVfY2MoX192ZWN0b3IgX19ib29sIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYiwgaW50ICpfX2NjKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBfX2Jvb2wgaW50KQogICAgX19idWlsdGluX3MzOTBfdmZhZWZzKChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19iLCAxMiwgX19jYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIF9fYm9vbCBpbnQKdmVjX2ZpbmRfYW55X25lX2NjKF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iLCBpbnQgKl9fY2MpIHsKICByZXR1cm4gKF9fdmVjdG9yIF9fYm9vbCBpbnQpX19idWlsdGluX3MzOTBfdmZhZWZzKF9fYSwgX19iLCAxMiwgX19jYyk7Cn0KCi8qLS0gdmVjX2ZpbmRfYW55X25lX2lkeCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBjaGFyCnZlY19maW5kX2FueV9uZV9pZHgoX192ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBjaGFyKQogICAgX19idWlsdGluX3MzOTBfdmZhZWIoKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iLCA4KTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfZmluZF9hbnlfbmVfaWR4KF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYSwgX192ZWN0b3IgX19ib29sIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZmYWViKChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iLCA4KTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfZmluZF9hbnlfbmVfaWR4KF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92ZmFlYihfX2EsIF9fYiwgOCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBzaG9ydAp2ZWNfZmluZF9hbnlfbmVfaWR4KF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCkKICAgIF9fYnVpbHRpbl9zMzkwX3ZmYWVoKChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19iLCA4KTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX2ZpbmRfYW55X25lX2lkeChfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19hLCBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZmYWVoKChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2IsIDgpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydAp2ZWNfZmluZF9hbnlfbmVfaWR4KF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZmYWVoKF9fYSwgX19iLCA4KTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGludAp2ZWNfZmluZF9hbnlfbmVfaWR4KF9fdmVjdG9yIHNpZ25lZCBpbnQgX19hLCBfX3ZlY3RvciBzaWduZWQgaW50IF9fYikgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIGludCkKICAgIF9fYnVpbHRpbl9zMzkwX3ZmYWVmKChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2IsIDgpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBpbnQKdmVjX2ZpbmRfYW55X25lX2lkeChfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYSwgX192ZWN0b3IgX19ib29sIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmZhZWYoKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19iLCA4KTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19maW5kX2FueV9uZV9pZHgoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92ZmFlZihfX2EsIF9fYiwgOCk7Cn0KCi8qLS0gdmVjX2ZpbmRfYW55X25lX2lkeF9jYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBjaGFyCnZlY19maW5kX2FueV9uZV9pZHhfY2MoX192ZWN0b3Igc2lnbmVkIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgIF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYiwgaW50ICpfX2NjKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgY2hhcikKICAgIF9fYnVpbHRpbl9zMzkwX3ZmYWVicygoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iLCA4LCBfX2NjKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfZmluZF9hbnlfbmVfaWR4X2NjKF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2IsIGludCAqX19jYykgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92ZmFlYnMoKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iLCA4LCBfX2NjKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfZmluZF9hbnlfbmVfaWR4X2NjKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iLAogICAgICAgICAgICAgICAgICAgICAgIGludCAqX19jYykgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92ZmFlYnMoX19hLCBfX2IsIDgsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgc2hvcnQKdmVjX2ZpbmRfYW55X25lX2lkeF9jYyhfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgIF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2IsIGludCAqX19jYykgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIHNob3J0KQogICAgX19idWlsdGluX3MzOTBfdmZhZWhzKChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYiwgOCwgX19jYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0CnZlY19maW5kX2FueV9uZV9pZHhfY2MoX192ZWN0b3IgX19ib29sIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19iLCBpbnQgKl9fY2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmZhZWhzKChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19iLCA4LCBfX2NjKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX2ZpbmRfYW55X25lX2lkeF9jYyhfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iLCBpbnQgKl9fY2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmZhZWhzKF9fYSwgX19iLCA4LCBfX2NjKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGludAp2ZWNfZmluZF9hbnlfbmVfaWR4X2NjKF9fdmVjdG9yIHNpZ25lZCBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgIF9fdmVjdG9yIHNpZ25lZCBpbnQgX19iLCBpbnQgKl9fY2MpIHsKICByZXR1cm4gKF9fdmVjdG9yIHNpZ25lZCBpbnQpCiAgICBfX2J1aWx0aW5fczM5MF92ZmFlZnMoKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2IsIDgsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBpbnQKdmVjX2ZpbmRfYW55X25lX2lkeF9jYyhfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYiwgaW50ICpfX2NjKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZmYWVmcygoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19iLCA4LCBfX2NjKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19maW5kX2FueV9uZV9pZHhfY2MoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iLCBpbnQgKl9fY2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmZhZWZzKF9fYSwgX19iLCA4LCBfX2NjKTsKfQoKLyotLSB2ZWNfZmluZF9hbnlfbmVfb3JfMF9pZHggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGNoYXIKdmVjX2ZpbmRfYW55X25lX29yXzBfaWR4KF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgIF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIGNoYXIpCiAgICBfX2J1aWx0aW5fczM5MF92ZmFlemIoKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYiwgOCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIKdmVjX2ZpbmRfYW55X25lX29yXzBfaWR4KF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgIF9fdmVjdG9yIF9fYm9vbCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92ZmFlemIoKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iLCA4KTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfZmluZF9hbnlfbmVfb3JfMF9pZHgoX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92ZmFlemIoX19hLCBfX2IsIDgpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciBzaWduZWQgc2hvcnQKdmVjX2ZpbmRfYW55X25lX29yXzBfaWR4KF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgc2hvcnQpCiAgICBfX2J1aWx0aW5fczM5MF92ZmFlemgoKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19iLCA4KTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX2ZpbmRfYW55X25lX29yXzBfaWR4KF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZmYWV6aCgoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYiwgOCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0CnZlY19maW5kX2FueV9uZV9vcl8wX2lkeChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmZhZXpoKF9fYSwgX19iLCA4KTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGludAp2ZWNfZmluZF9hbnlfbmVfb3JfMF9pZHgoX192ZWN0b3Igc2lnbmVkIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciBzaWduZWQgaW50IF9fYikgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIGludCkKICAgIF9fYnVpbHRpbl9zMzkwX3ZmYWV6ZigoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYiwgOCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGludAp2ZWNfZmluZF9hbnlfbmVfb3JfMF9pZHgoX192ZWN0b3IgX19ib29sIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92ZmFlemYoKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYiwgOCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGludAp2ZWNfZmluZF9hbnlfbmVfb3JfMF9pZHgoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmZhZXpmKF9fYSwgX19iLCA4KTsKfQoKLyotLSB2ZWNfZmluZF9hbnlfbmVfb3JfMF9pZHhfY2MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3Igc2lnbmVkIGNoYXIKdmVjX2ZpbmRfYW55X25lX29yXzBfaWR4X2NjKF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYiwgaW50ICpfX2NjKSB7CiAgcmV0dXJuIChfX3ZlY3RvciBzaWduZWQgY2hhcikKICAgIF9fYnVpbHRpbl9zMzkwX3ZmYWV6YnMoKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IsIDgsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19maW5kX2FueV9uZV9vcl8wX2lkeF9jYyhfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2IsIGludCAqX19jYykgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92ZmFlemJzKChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IsIDgsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19maW5kX2FueV9uZV9vcl8wX2lkeF9jYyhfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iLCBpbnQgKl9fY2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmZhZXpicyhfX2EsIF9fYiwgOCwgX19jYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBzaG9ydAp2ZWNfZmluZF9hbnlfbmVfb3JfMF9pZHhfY2MoX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2IsIGludCAqX19jYykgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIHNob3J0KQogICAgX19idWlsdGluX3MzOTBfdmZhZXpocygoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19iLCA4LCBfX2NjKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQKdmVjX2ZpbmRfYW55X25lX29yXzBfaWR4X2NjKF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19iLCBpbnQgKl9fY2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmZhZXpocygoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2IsIDgsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydAp2ZWNfZmluZF9hbnlfbmVfb3JfMF9pZHhfY2MoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iLCBpbnQgKl9fY2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmZhZXpocyhfX2EsIF9fYiwgOCwgX19jYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHNpZ25lZCBpbnQKdmVjX2ZpbmRfYW55X25lX29yXzBfaWR4X2NjKF9fdmVjdG9yIHNpZ25lZCBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX192ZWN0b3Igc2lnbmVkIGludCBfX2IsIGludCAqX19jYykgewogIHJldHVybiAoX192ZWN0b3Igc2lnbmVkIGludCkKICAgIF9fYnVpbHRpbl9zMzkwX3ZmYWV6ZnMoKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19iLCA4LCBfX2NjKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgaW50CnZlY19maW5kX2FueV9uZV9vcl8wX2lkeF9jYyhfX3ZlY3RvciBfX2Jvb2wgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fdmVjdG9yIF9fYm9vbCBpbnQgX19iLCBpbnQgKl9fY2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdmZhZXpmcygoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYiwgOCwgX19jYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGludAp2ZWNfZmluZF9hbnlfbmVfb3JfMF9pZHhfY2MoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IsIGludCAqX19jYykgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92ZmFlemZzKF9fYSwgX19iLCA4LCBfX2NjKTsKfQoKLyotLSB2ZWNfc2VhcmNoX3N0cmluZ19jYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKI2lmIF9fQVJDSF9fID49IDEzCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19zZWFyY2hfc3RyaW5nX2NjKF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3Igc2lnbmVkIGNoYXIgX19iLAogICAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYywgaW50ICpfX2NjKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZzdHJzYigoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IsIF9fYywgX19jYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIKdmVjX3NlYXJjaF9zdHJpbmdfY2MoX192ZWN0b3IgX19ib29sIGNoYXIgX19hLCBfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2IsCiAgICAgICAgICAgICAgICAgICAgIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19jLCBpbnQgKl9fY2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdnN0cnNiKChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYiwgX19jLCBfX2NjKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfc2VhcmNoX3N0cmluZ19jYyhfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IsCiAgICAgICAgICAgICAgICAgICAgIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19jLCBpbnQgKl9fY2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdnN0cnNiKF9fYSwgX19iLCBfX2MsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19zZWFyY2hfc3RyaW5nX2NjKF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIF9fdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2IsCiAgICAgICAgICAgICAgICAgICAgIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19jLCBpbnQgKl9fY2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdnN0cnNoKChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19iLCBfX2MsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19zZWFyY2hfc3RyaW5nX2NjKF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2EsIF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2IsCiAgICAgICAgICAgICAgICAgICAgIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19jLCBpbnQgKl9fY2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdnN0cnNoKChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19iLCBfX2MsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19zZWFyY2hfc3RyaW5nX2NjKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iLAogICAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYywgaW50ICpfX2NjKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZzdHJzaChfX2EsIF9fYiwgX19jLCBfX2NjKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfc2VhcmNoX3N0cmluZ19jYyhfX3ZlY3RvciBzaWduZWQgaW50IF9fYSwgX192ZWN0b3Igc2lnbmVkIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19jLCBpbnQgKl9fY2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdnN0cnNmKChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGludClfX2IsIF9fYywgX19jYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIKdmVjX3NlYXJjaF9zdHJpbmdfY2MoX192ZWN0b3IgX19ib29sIGludCBfX2EsIF9fdmVjdG9yIF9fYm9vbCBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYywgaW50ICpfX2NjKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zMzkwX3ZzdHJzZigoX192ZWN0b3IgdW5zaWduZWQgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19iLCBfX2MsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19zZWFyY2hfc3RyaW5nX2NjKF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19jLCBpbnQgKl9fY2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdnN0cnNmKF9fYSwgX19iLCBfX2MsIF9fY2MpOwp9CgojZW5kaWYKCi8qLS0gdmVjX3NlYXJjaF9zdHJpbmdfdW50aWxfemVyb19jYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCiNpZiBfX0FSQ0hfXyA+PSAxMwoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfc2VhcmNoX3N0cmluZ191bnRpbF96ZXJvX2NjKF9fdmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciBzaWduZWQgY2hhciBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2MsIGludCAqX19jYykgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92c3Ryc3piKChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IsIF9fYywgX19jYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIKdmVjX3NlYXJjaF9zdHJpbmdfdW50aWxfemVyb19jYyhfX3ZlY3RvciBfX2Jvb2wgY2hhciBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX192ZWN0b3IgX19ib29sIGNoYXIgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19jLCBpbnQgKl9fY2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdnN0cnN6YigoX192ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iLCBfX2MsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19zZWFyY2hfc3RyaW5nX3VudGlsX3plcm9fY2MoX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2MsIGludCAqX19jYykgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92c3Ryc3piKF9fYSwgX19iLCBfX2MsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19zZWFyY2hfc3RyaW5nX3VudGlsX3plcm9fY2MoX192ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciBzaWduZWQgc2hvcnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19jLCBpbnQgKl9fY2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdnN0cnN6aCgoX192ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2IsIF9fYywgX19jYyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIKdmVjX3NlYXJjaF9zdHJpbmdfdW50aWxfemVyb19jYyhfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2MsIGludCAqX19jYykgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92c3Ryc3poKChfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYiwgX19jLCBfX2NjKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgX192ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfc2VhcmNoX3N0cmluZ191bnRpbF96ZXJvX2NjKF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2MsIGludCAqX19jYykgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92c3Ryc3poKF9fYSwgX19iLCBfX2MsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19zZWFyY2hfc3RyaW5nX3VudGlsX3plcm9fY2MoX192ZWN0b3Igc2lnbmVkIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX192ZWN0b3Igc2lnbmVkIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2MsIGludCAqX19jYykgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92c3Ryc3pmKChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19iLCBfX2MsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19zZWFyY2hfc3RyaW5nX3VudGlsX3plcm9fY2MoX192ZWN0b3IgX19ib29sIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX192ZWN0b3IgX19ib29sIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX192ZWN0b3IgdW5zaWduZWQgY2hhciBfX2MsIGludCAqX19jYykgewogIHJldHVybiBfX2J1aWx0aW5fczM5MF92c3Ryc3pmKChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3ZlY3RvciB1bnNpZ25lZCBpbnQpX19iLCBfX2MsIF9fY2MpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY19zZWFyY2hfc3RyaW5nX3VudGlsX3plcm9fY2MoX192ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19jLCBpbnQgKl9fY2MpIHsKICByZXR1cm4gX19idWlsdGluX3MzOTBfdnN0cnN6ZihfX2EsIF9fYiwgX19jLCBfX2NjKTsKfQoKI2VuZGlmCgojdW5kZWYgX19jb25zdGFudF9wb3cyX3JhbmdlCiN1bmRlZiBfX2NvbnN0YW50X3JhbmdlCiN1bmRlZiBfX2NvbnN0YW50CiN1bmRlZiBfX0FUVFJTX28KI3VuZGVmIF9fQVRUUlNfb19haQojdW5kZWYgX19BVFRSU19haQoKI2Vsc2UKCiNlcnJvciAiVXNlIC1menZlY3RvciB0byBlbmFibGUgdmVjdG9yIGV4dGVuc2lvbnMiCgojZW5kaWYKAC8qPT09LS0tLSBzbW1pbnRyaW4uaCAtIEltcGxlbWVudGF0aW9uIG9mIFNTRTQgaW50cmluc2ljcyBvbiBQb3dlclBDIC0tLS0tLS09PT0KICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKi8KCi8qIEltcGxlbWVudGVkIGZyb20gdGhlIHNwZWNpZmljYXRpb24gaW5jbHVkZWQgaW4gdGhlIEludGVsIEMrKyBDb21waWxlcgogICBVc2VyIEd1aWRlIGFuZCBSZWZlcmVuY2UsIHZlcnNpb24gOS4wLgoKICAgTk9URTogVGhpcyBpcyBOT1QgYSBjb21wbGV0ZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU1NFNCBpbnRyaW5zaWNzISAgKi8KCiNpZm5kZWYgTk9fV0FSTl9YODZfSU5UUklOU0lDUwovKiBUaGlzIGhlYWRlciBpcyBkaXN0cmlidXRlZCB0byBzaW1wbGlmeSBwb3J0aW5nIHg4Nl82NCBjb2RlIHRoYXQKICAgbWFrZXMgZXhwbGljaXQgdXNlIG9mIEludGVsIGludHJpbnNpY3MgdG8gcG93ZXJwNjQvcG93ZXJwYzY0bGUuCgogICBJdCBpcyB0aGUgdXNlcidzIHJlc3BvbnNpYmlsaXR5IHRvIGRldGVybWluZSBpZiB0aGUgcmVzdWx0cyBhcmUKICAgYWNjZXB0YWJsZSBhbmQgbWFrZSBhZGRpdGlvbmFsIGNoYW5nZXMgYXMgbmVjZXNzYXJ5LgoKICAgTm90ZSB0aGF0IG11Y2ggY29kZSB0aGF0IHVzZXMgSW50ZWwgaW50cmluc2ljcyBjYW4gYmUgcmV3cml0dGVuIGluCiAgIHN0YW5kYXJkIEMgb3IgR05VIEMgZXh0ZW5zaW9ucywgd2hpY2ggYXJlIG1vcmUgcG9ydGFibGUgYW5kIGJldHRlcgogICBvcHRpbWl6ZWQgYWNyb3NzIG11bHRpcGxlIHRhcmdldHMuICAqLwojZXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIlBsZWFzZSByZWFkIGNvbW1lbnQgYWJvdmUuICBVc2UgLUROT19XQVJOX1g4Nl9JTlRSSU5TSUNTIHRvIGRpc2FibGUgdGhpcyBlcnJvci4iCiNlbmRpZgoKI2lmbmRlZiBTTU1JTlRSSU5fSF8KI2RlZmluZSBTTU1JTlRSSU5fSF8KCiNpZiBkZWZpbmVkKF9fcHBjNjRfXykgJiYgKGRlZmluZWQoX19saW51eF9fKSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9fKSkKCiNpbmNsdWRlIDxhbHRpdmVjLmg+CiNpbmNsdWRlIDx0bW1pbnRyaW4uaD4KCmV4dGVybiBfX2lubGluZSBpbnQKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21tX2V4dHJhY3RfZXBpOChfX20xMjhpIF9fWCwgY29uc3QgaW50IF9fTikgewogIHJldHVybiAodW5zaWduZWQgY2hhcikoKF9fdjE2cWkpX19YKVtfX04gJiAxNV07Cn0KCmV4dGVybiBfX2lubGluZSBpbnQKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21tX2V4dHJhY3RfZXBpMzIoX19tMTI4aSBfX1gsIGNvbnN0IGludCBfX04pIHsKICByZXR1cm4gKChfX3Y0c2kpX19YKVtfX04gJiAzXTsKfQoKZXh0ZXJuIF9faW5saW5lIGludAogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbW1fZXh0cmFjdF9lcGk2NChfX20xMjhpIF9fWCwgY29uc3QgaW50IF9fTikgewogIHJldHVybiAoKF9fdjJkaSlfX1gpW19fTiAmIDFdOwp9CgpleHRlcm4gX19pbmxpbmUgaW50CiAgICBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKICAgIF9tbV9leHRyYWN0X3BzKF9fbTEyOCBfX1gsIGNvbnN0IGludCBfX04pIHsKICByZXR1cm4gKChfX3Y0c2kpX19YKVtfX04gJiAzXTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGkKICAgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogICAgX21tX2JsZW5kX2VwaTE2KF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQiwgY29uc3QgaW50IF9faW1tOCkgewogIF9fdjE2cWkgX19jaGFybWFzayA9IHZlY19zcGxhdHMoKHNpZ25lZCBjaGFyKV9faW1tOCk7CiAgX19jaGFybWFzayA9IHZlY19nYihfX2NoYXJtYXNrKTsKICBfX3Y4aHUgX19zaG9ydG1hc2sgPSAoX192OGh1KXZlY191bnBhY2toKF9fY2hhcm1hc2spOwojaWZkZWYgX19CSUdfRU5ESUFOX18KICBfX3Nob3J0bWFzayA9IHZlY19yZXZlKF9fc2hvcnRtYXNrKTsKI2VuZGlmCiAgcmV0dXJuIChfX20xMjhpKXZlY19zZWwoKF9fdjhodSlfX0EsIChfX3Y4aHUpX19CLCBfX3Nob3J0bWFzayk7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhpCiAgICBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKICAgIF9tbV9ibGVuZHZfZXBpOChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IsIF9fbTEyOGkgX19tYXNrKSB7CiAgY29uc3QgX192MTZxdSBfX3NldmVuID0gdmVjX3NwbGF0cygodW5zaWduZWQgY2hhcikweDA3KTsKICBfX3YxNnF1IF9fbG1hc2sgPSB2ZWNfc3JhKChfX3YxNnF1KV9fbWFzaywgX19zZXZlbik7CiAgcmV0dXJuIChfX20xMjhpKXZlY19zZWwoKF9fdjE2cXUpX19BLCAoX192MTZxdSlfX0IsIF9fbG1hc2spOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4aQogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbW1faW5zZXJ0X2VwaTgoX19tMTI4aSBjb25zdCBfX0EsIGludCBjb25zdCBfX0QsIGludCBjb25zdCBfX04pIHsKICBfX3YxNnFpIHJlc3VsdCA9IChfX3YxNnFpKV9fQTsKICByZXN1bHRbX19OICYgMHhmXSA9IF9fRDsKICByZXR1cm4gKF9fbTEyOGkpcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4aQogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbW1faW5zZXJ0X2VwaTMyKF9fbTEyOGkgY29uc3QgX19BLCBpbnQgY29uc3QgX19ELCBpbnQgY29uc3QgX19OKSB7CiAgX192NHNpIHJlc3VsdCA9IChfX3Y0c2kpX19BOwogIHJlc3VsdFtfX04gJiAzXSA9IF9fRDsKICByZXR1cm4gKF9fbTEyOGkpcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4aQogICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiAgICBfbW1faW5zZXJ0X2VwaTY0KF9fbTEyOGkgY29uc3QgX19BLCBsb25nIGxvbmcgY29uc3QgX19ELCBpbnQgY29uc3QgX19OKSB7CiAgX192MmRpIHJlc3VsdCA9IChfX3YyZGkpX19BOwogIHJlc3VsdFtfX04gJiAxXSA9IF9fRDsKICByZXR1cm4gKF9fbTEyOGkpcmVzdWx0Owp9CgojZWxzZQojaW5jbHVkZV9uZXh0IDxzbW1pbnRyaW4uaD4KI2VuZGlmIC8qIGRlZmluZWQoX19wcGM2NF9fKSAmJiAoZGVmaW5lZChfX2xpbnV4X18pIHx8IGRlZmluZWQoX19GcmVlQlNEX18pKSAgIFwKICAgICAgICAqLwoKI2VuZGlmIC8qIF9TTU1JTlRSSU5fSF8gKi8KAC8vPT09LS0gc2FuaXRpemVyL2NvdmVyYWdlX2ludGVyZmFjZS5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCi8vCi8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCi8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgovLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCi8vCi8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCi8vCi8vIFB1YmxpYyBpbnRlcmZhY2UgZm9yIHNhbml0aXplciBjb3ZlcmFnZS4KLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KCiNpZm5kZWYgU0FOSVRJWkVSX0NPVkVSQUdfSU5URVJGQUNFX0gKI2RlZmluZSBTQU5JVElaRVJfQ09WRVJBR19JTlRFUkZBQ0VfSAoKI2luY2x1ZGUgPHNhbml0aXplci9jb21tb25faW50ZXJmYWNlX2RlZnMuaD4KCiNpZmRlZiBfX2NwbHVzcGx1cwpleHRlcm4gIkMiIHsKI2VuZGlmCgogIC8vIFJlY29yZCBhbmQgZHVtcCBjb3ZlcmFnZSBpbmZvLgogIHZvaWQgX19zYW5pdGl6ZXJfY292X2R1bXAodm9pZCk7CgogIC8vIENsZWFyIGNvbGxlY3RlZCBjb3ZlcmFnZSBpbmZvLgogIHZvaWQgX19zYW5pdGl6ZXJfY292X3Jlc2V0KHZvaWQpOwoKICAvLyBEdW1wIGNvbGxlY3RlZCBjb3ZlcmFnZSBpbmZvLiBTb3J0cyBwY3MgYnkgbW9kdWxlIGludG8gaW5kaXZpZHVhbCAuc2FuY292CiAgLy8gZmlsZXMuCiAgdm9pZCBfX3Nhbml0aXplcl9kdW1wX2NvdmVyYWdlKGNvbnN0IHVpbnRwdHJfdCAqcGNzLCB1aW50cHRyX3QgbGVuKTsKCiNpZmRlZiBfX2NwbHVzcGx1cwp9ICAvLyBleHRlcm4gIkMiCiNlbmRpZgoKI2VuZGlmICAvLyBTQU5JVElaRVJfQ09WRVJBR19JTlRFUkZBQ0VfSAoAc2FuaXRpemVyL25ldGJzZF9zeXNjYWxsX2hvb2tzLmgAIChmcmVhZCgmY29udGVudFswXSwgc2l6ZSwgMSwgaGFuZGxlKT0AcGF0dGVybgBDaGVjayBmYWlsZWQ6IGRvY3VtZW50WyJjb250ZW50Il0uQWNjZXB0KHdyaXRlcikAZXh0ZXJuYWwva3l0aGUva3l0aGUvY3h4L2NvbW1vbi9remlwX3dyaXRlcl9hb3NwLmNjAHBvbGljeSBub3Qgb25lIG9mOiBjbGVhbi1vbmx5LCBwcmVmZXItcmVsYXRpdmUsIHByZWZlci1yZWFsAGJ5dGVtYXAgcmFuZ2UgAHVua25vd24gcm91bmQ6IABbOl5kaWdpdDpdAFs6bG93ZXI6XQBbOnVwcGVyOl0AbWF0Y2ghICVkAHwAY29udGV4dCBkb2VzIG5vdCBjb250YWluIHRleHQAQW5hdG9saWFuX0hpZXJvZ2x5cGhzAEJhc3NhX1ZhaABIYW51bm9vAEtheWFoX0xpAEx5ZGlhbgBOYWJhdGFlYW4ATmV3X1RhaV9MdWUAUGYAVGliZXRhbgBacwBtbWFwKCkgZm9yIGFsdGVybmF0ZSBzaWduYWwgc3RhY2sgZmFpbGVkAGV4dGVybmFsL2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvYWRkcmVzc19pc19yZWFkYWJsZS5jYwBfX3Zkc29fZ2V0Y3B1AGltYWdlLT5Jc1ByZXNlbnQoKSB8fCBpbmNyZW1lbnQgPT0gMABzdW0gPj0gYQBEdgBkACYmAFNiAENoZWNrIHN1bSAhPSBudWxscHRyIGZhaWxlZDogAGNoaWxkX2xlbmd0aABdIGxlbmd0aCA9IAAsIHRhZyA9IABSZWFkZXJUcnlMb2NrIGZhaWxlZCAAQ2hlY2sgKHYgJiAoa011V2FpdCB8IGtNdVdyV2FpdCkpICE9IGtNdVdyV2FpdCBmYWlsZWQ6ICVzOiBNdXRleCBjb3JydXB0OiB3YWl0aW5nIHdyaXRlciB3aXRoIG5vIHdhaXRlcnM6ICVwACAjdHlwZXM9AFNIQS0yNTYgS0FUAE5JU1QgUC01MjEAb2JqZWN0IGlkZW50aWZpZXIgcm91dGluZXMAa3l0aGUucHJvdG8uY29tbW9uLk1hcmtlZFNvdXJjZS5wcmVfdGV4dABPcGVuSW5kZXgoKSBjYWxsZWQgdHdpY2UAIGRpZmZlcnMgZnJvbSB0aGUgY3VycmVudCBvbmUuCgBfX2NsYW5nX2N1ZGFfbGliZGV2aWNlX2RlY2xhcmVzLmgALyo9PT0tLS0gX19jbGFuZ19jdWRhX3RleHR1cmVfaW50cmluc2ljcy5oIC0gRGV2aWNlLXNpZGUgdGV4dHVyZSBzdXBwb3J0IC0tLT09PQogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqCiAqIFRoaXMgaGVhZGVyIHByb3ZpZGVzIGluLWhlYWRlciBpbXBsbWVudGF0aW9ucyBmb3IgTlZDQydzIGJ1aWx0LWluCiAqIF9fbnZfdGV4X3N1cmZfaGFuZGxlcigpIHdoaWNoIGlzIHVzZWQgYnkgQ1VEQSdzIHRleHR1cmUtcmVsYXRlZCBoZWFkZXJzLiAgVGhlCiAqIGJ1aWx0LWluIGlzIHVudXN1YWwgYXMgaXQncyBhY3R1YWxseSBhIHNldCBvZiBmdW5jdGlvbiBvdmVybG9hZHMgdGhhdCB1c2UgdGhlCiAqIGZpcnN0IHN0cmluZyBsaXRlcmFsIGFyZ3VtZW50IGFzIG9uZSBvZiB0aGUgb3ZlcmxvYWQgcGFyYW1ldGVycy4KICovCiNpZm5kZWYgX19DTEFOR19DVURBX1RFWFRVUkVfSU5UUklOU0lDU19IX18KI2RlZmluZSBfX0NMQU5HX0NVREFfVEVYVFVSRV9JTlRSSU5TSUNTX0hfXwojaWZuZGVmIF9fQ1VEQV9fCiNlcnJvciAiVGhpcyBmaWxlIGlzIGZvciBDVURBIGNvbXBpbGF0aW9uIG9ubHkuIgojZW5kaWYKCi8vIF9fbnZfdGV4X3N1cmZfaGFuZGxlcigpIHByb3ZpZGVkIGJ5IHRoaXMgaGVhZGVyIGFzIGEgbWFjcm8uCiNkZWZpbmUgX19udl90ZXhfc3VyZl9oYW5kbGVyKF9fb3AsIF9fcHRyLCAuLi4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgOjpfX2N1ZGFfdGV4OjpfX3RleF9mZXRjaDwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIDo6X19jdWRhX3RleDo6X19UYWc8OjpfX2N1ZGFfdGV4OjpfX3RleF9vcF9oYXNoKF9fb3ApPj4oX19wdHIsICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19WQV9BUkdTX18pCgojcHJhZ21hIHB1c2hfbWFjcm8oIl9fQVNNX09VVCIpCiNwcmFnbWEgcHVzaF9tYWNybygiX19BU01fT1VUUCIpCiNwcmFnbWEgcHVzaF9tYWNybygiX19BcmdzIikKI3ByYWdtYSBwdXNoX21hY3JvKCJfX0lEIikKI3ByYWdtYSBwdXNoX21hY3JvKCJfX0lEViIpCiNwcmFnbWEgcHVzaF9tYWNybygiX19JTVBMXzJER0FUSEVSIikKI3ByYWdtYSBwdXNoX21hY3JvKCJfX0lNUExfQUxJQVMiKQojcHJhZ21hIHB1c2hfbWFjcm8oIl9fSU1QTF9BTElBU0kiKQojcHJhZ21hIHB1c2hfbWFjcm8oIl9fSU1QTF9GMSIpCiNwcmFnbWEgcHVzaF9tYWNybygiX19JTVBMX0YzIikKI3ByYWdtYSBwdXNoX21hY3JvKCJfX0lNUExfRjNOIikKI3ByYWdtYSBwdXNoX21hY3JvKCJfX0lNUExfRjNTIikKI3ByYWdtYSBwdXNoX21hY3JvKCJfX0lNUExfUyIpCiNwcmFnbWEgcHVzaF9tYWNybygiX19JTVBMX1MzIikKI3ByYWdtYSBwdXNoX21hY3JvKCJfX0lNUExfUzNJIikKI3ByYWdtYSBwdXNoX21hY3JvKCJfX0lNUExfUzNOIikKI3ByYWdtYSBwdXNoX21hY3JvKCJfX0lNUExfUzNOSSIpCiNwcmFnbWEgcHVzaF9tYWNybygiX19JTVBMX1MzUyIpCiNwcmFnbWEgcHVzaF9tYWNybygiX19JTVBMX1MzU0kiKQojcHJhZ21hIHB1c2hfbWFjcm8oIl9fSU1QTF9TSSIpCiNwcmFnbWEgcHVzaF9tYWNybygiX19MIikKI3ByYWdtYSBwdXNoX21hY3JvKCJfX1NUUklQX1BBUkVOUyIpCgovLyBQdXQgYWxsIGZ1bmN0aW9ucyBpbnRvIGFub255bW91cyBuYW1lc3BhY2Ugc28gdGhleSBoYXZlIGludGVybmFsIGxpbmthZ2UuCi8vIFRoZSBkZXZpY2Utb25seSBmdW5jdGlvbiBoZXJlIG11c3QgYmUgaW50ZXJuYWwgaW4gb3JkZXIgdG8gYXZvaWQgT0RSCi8vIHZpb2xhdGlvbnMgaW4gY2FzZSB0aGV5IGFyZSB1c2VkIGZyb20gdGhlIGZpbGVzIGNvbXBpbGVkIHdpdGgKLy8gLWZncHUtcmRjLiBFLmcuIGEgbGlicmFyeSBhbmQgYW4gYXBwIHVzaW5nIGl0IG1heSBiZSBidWlsdCB3aXRoIGEgZGlmZmVyZW50Ci8vIHZlcnNpb24gb2YgdGhpcyBoZWFkZXIgZmlsZS4KbmFtZXNwYWNlIHsKCi8vIFB1dCB0aGUgaW1wbG1lbnRhdGlvbiBpbnRvIGl0cyBvd24gbmFtZXNwYWNlIHNvIHdlIGRvbid0IHBvbGx1dGUgdGhlIFRVLgpuYW1lc3BhY2UgX19jdWRhX3RleCB7CgovLyBGaXJzdCwgd2UgbmVlZCBhIHBlcmZlY3QgaGFzaCBmdW5jdGlvbiBhbmQgYSBmZXcgY29uc3RleHByIGhlbHBlciBmdW5jdGlvbnMKLy8gZm9yIGNvbnZlcnRpbmcgYSBzdHJpbmcgbGl0ZXJhbCBpbnRvIGEgbnVtZXJpYyB2YWx1ZSB3aGljaCBjYW4gYmUgdXNlZCB0bwovLyBwYXJhbWV0cml6ZSBhIHRlbXBsYXRlLiBXZSBjYW4gbm90IHVzZSBzdHJpbmcgbGl0ZXJhbHMgZm9yIHRoYXQgYXMgdGhhdCB3b3VsZAovLyByZXF1aXJlIEMrKzIwLgovLwovLyBUaGUgaGFzaCBmdW5jdGlvbiB3YXMgZ2VuZXJhdGVkIHdpdGggJ2dwZXJmJyBhbmQgdGhlbiBtYW51YWxseSBjb252ZXJ0ZWQgaW50bwovLyBpdHMgY29uc3RleHByIGVxdWl2YWxlbnQuCi8vCi8vIE5PVEU6IHRoZSBwZXJmZWN0IGhhc2hpbmcgc2NoZW1lIGNvbWVzIHdpdGggaW5oZXJlbnQgc2VsZi10ZXN0LiBJZiB0aGUgaGFzaAovLyBmdW5jdGlvbiBoYXMgYSBjb2xsaXNpb24gZm9yIGFueSBvZiB0aGUgdGV4dHVyZSBvcGVyYXRpb25zLCB0aGUgY29tcGlsYXRpb24KLy8gd2lsbCBmYWlsIGR1ZSB0byBhbiBhdHRlbXB0IHRvIHJlZGVmaW5lIGEgdGFnIHdpdGggdGhlIHNhbWUgdmFsdWUuIElmIHRoZQovLyBoZWFkZXIgY29tcGlsZXMsIHRoZW4gdGhlIGhhc2ggZnVuY3Rpb24gaXMgZ29vZCBlbm91Z2ggZm9yIHRoZSBqb2IuCgpjb25zdGV4cHIgaW50IF9fdGV4X2xlbihjb25zdCBjaGFyICpzKSB7CiAgcmV0dXJuIChzWzBdID09IDApICAgID8gMAogICAgICAgICA6IChzWzFdID09IDApICA/IDEKICAgICAgICAgOiAoc1syXSA9PSAwKSAgPyAyCiAgICAgICAgIDogKHNbM10gPT0gMCkgID8gMwogICAgICAgICA6IChzWzRdID09IDApICA/IDQKICAgICAgICAgOiAoc1s1XSA9PSAwKSAgPyA1CiAgICAgICAgIDogKHNbNl0gPT0gMCkgID8gNgogICAgICAgICA6IChzWzddID09IDApICA/IDcKICAgICAgICAgOiAoc1s4XSA9PSAwKSAgPyA4CiAgICAgICAgIDogKHNbOV0gPT0gMCkgID8gOQogICAgICAgICA6IChzWzEwXSA9PSAwKSA/IDEwCiAgICAgICAgIDogKHNbMTFdID09IDApID8gMTEKICAgICAgICAgOiAoc1sxMl0gPT0gMCkgPyAxMgogICAgICAgICA6IChzWzEzXSA9PSAwKSA/IDEzCiAgICAgICAgIDogKHNbMTRdID09IDApID8gMTQKICAgICAgICAgOiAoc1sxNV0gPT0gMCkgPyAxNQogICAgICAgICA6IChzWzE2XSA9PSAwKSA/IDE2CiAgICAgICAgIDogKHNbMTddID09IDApID8gMTcKICAgICAgICAgOiAoc1sxOF0gPT0gMCkgPyAxOAogICAgICAgICA6IChzWzE5XSA9PSAwKSA/IDE5CiAgICAgICAgIDogKHNbMjBdID09IDApID8gMjAKICAgICAgICAgOiAoc1syMV0gPT0gMCkgPyAyMQogICAgICAgICA6IChzWzIyXSA9PSAwKSA/IDIyCiAgICAgICAgIDogKHNbMjNdID09IDApID8gMjMKICAgICAgICAgOiAoc1syNF0gPT0gMCkgPyAyNAogICAgICAgICA6IChzWzI1XSA9PSAwKSA/IDI1CiAgICAgICAgIDogKHNbMjZdID09IDApID8gMjYKICAgICAgICAgOiAoc1syN10gPT0gMCkgPyAyNwogICAgICAgICA6IChzWzI4XSA9PSAwKSA/IDI4CiAgICAgICAgIDogKHNbMjldID09IDApID8gMjkKICAgICAgICAgOiAoc1szMF0gPT0gMCkgPyAzMAogICAgICAgICA6IChzWzMxXSA9PSAwKSA/IDMxCiAgICAgICAgICAgICAgICAgICAgICAgIDogMzI7Cn0KCmNvbnN0ZXhwciBpbnQgX190ZXhfaGFzaF9tYXAoaW50IGMpIHsKICByZXR1cm4gKGMgPT0gNDkpICAgID8gMTAKICAgICAgICAgOiAoYyA9PSA1MCkgID8gMAogICAgICAgICA6IChjID09IDUxKSAgPyAxMDAKICAgICAgICAgOiAoYyA9PSA1MikgID8gMzAKICAgICAgICAgOiAoYyA9PSA2NykgID8gMTAKICAgICAgICAgOiAoYyA9PSA2OCkgID8gMAogICAgICAgICA6IChjID09IDY5KSAgPyAyNQogICAgICAgICA6IChjID09IDcyKSAgPyA3MAogICAgICAgICA6IChjID09IDc3KSAgPyAwCiAgICAgICAgIDogKGMgPT0gOTYpICA/IDQ0CiAgICAgICAgIDogKGMgPT0gOTkpICA/IDEwCiAgICAgICAgIDogKGMgPT0gMTAwKSA/IDUKICAgICAgICAgOiAoYyA9PSAxMDEpID8gNjAKICAgICAgICAgOiAoYyA9PSAxMDIpID8gNDAKICAgICAgICAgOiAoYyA9PSAxMDMpID8gNzAKICAgICAgICAgOiAoYyA9PSAxMDQpID8gMjUKICAgICAgICAgOiAoYyA9PSAxMTIpID8gMAogICAgICAgICA6IChjID09IDExNCkgPyA0NQogICAgICAgICA6IChjID09IDExNykgPyA1CiAgICAgICAgIDogKGMgPT0gMTE4KSA/IDg1CiAgICAgICAgIDogKGMgPT0gMTIwKSA/IDIwCiAgICAgICAgICAgICAgICAgICAgICA6IDIyNTsKfQoKY29uc3RleHByIGludCBfX3RleF9vcF9oYXNoKGNvbnN0IGNoYXIgKnN0cikgewogIHJldHVybiBfX3RleF9sZW4oc3RyKSArIF9fdGV4X2hhc2hfbWFwKHN0cls3XSArIDEpICsgX190ZXhfaGFzaF9tYXAoc3RyWzZdKSArCiAgICAgICAgIF9fdGV4X2hhc2hfbWFwKHN0cls1XSkgKyBfX3RleF9oYXNoX21hcChzdHJbX190ZXhfbGVuKHN0cikgLSAxXSk7Cn0KCi8vIFRhZyB0eXBlIHRvIGlkZW50aWZ5IHBhcnRpY3VsYXIgdGV4dHVyZSBvcGVyYXRpb24uCnRlbXBsYXRlIDxpbnQgTj4gc3RydWN0IF9fVGFnOwojZGVmaW5lIF9fSUQoX19vcCkgX19UYWc8X190ZXhfb3BfaGFzaChfX29wKT4KLy8gVGFncyBmb3IgdmFyaWFudHMgb2YgcGFydGljdWxhciBvcGVyYXRpb24uIEUuZy4gdGV4MkRnYXRoZXIgY2FuIHRyYW5zbGF0ZQovLyBpbnRvIDQgZGlmZmVyZW50IGluc3RydWN0aW9ucy4KI2RlZmluZSBfX0lEVihfX29wLCBfX3ZhcmlhbnQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX1RhZzwxMDAwMCArIF9fdGV4X29wX2hhc2goX19vcCkgKiAxMDAgKyBfX3ZhcmlhbnQ+CgovLyBIZWxwZXIgY2xhc3NlcyBmb3IgZmlndXJpbmcgb3V0IGtleSBkYXRhIHR5cGVzIGZvciBkZXJpdmVkIHR5cGVzLgovLyBFLmcuIGNoYXIyIGhhcyBfX2Jhc2VfdCA9IGNoYXIsIF9fZmV0Y2hfdCA9IGNoYXI0CnRlbXBsYXRlIDxjbGFzcz4gc3RydWN0IF9fVHlwZUluZm9UOwovLyBUeXBlIGluZm8gZm9yIHRoZSBmdW5kYW1lbnRhbCB0eXBlcy4KdGVtcGxhdGUgPD4gc3RydWN0IF9fVHlwZUluZm9UPGZsb2F0PiB7CiAgdXNpbmcgX19iYXNlX3QgPSBmbG9hdDsKICB1c2luZyBfX2ZldGNoX3QgPSBmbG9hdDQ7Cn07CnRlbXBsYXRlIDw+IHN0cnVjdCBfX1R5cGVJbmZvVDxjaGFyPiB7CiAgdXNpbmcgX19iYXNlX3QgPSBjaGFyOwogIHVzaW5nIF9fZmV0Y2hfdCA9IGludDQ7Cn07CnRlbXBsYXRlIDw+IHN0cnVjdCBfX1R5cGVJbmZvVDxzaWduZWQgY2hhcj4gewogIHVzaW5nIF9fYmFzZV90ID0gc2lnbmVkIGNoYXI7CiAgdXNpbmcgX19mZXRjaF90ID0gaW50NDsKfTsKdGVtcGxhdGUgPD4gc3RydWN0IF9fVHlwZUluZm9UPHVuc2lnbmVkIGNoYXI+IHsKICB1c2luZyBfX2Jhc2VfdCA9IHVuc2lnbmVkIGNoYXI7CiAgdXNpbmcgX19mZXRjaF90ID0gdWludDQ7Cn07CnRlbXBsYXRlIDw+IHN0cnVjdCBfX1R5cGVJbmZvVDxzaG9ydD4gewogIHVzaW5nIF9fYmFzZV90ID0gc2hvcnQ7CiAgdXNpbmcgX19mZXRjaF90ID0gaW50NDsKfTsKdGVtcGxhdGUgPD4gc3RydWN0IF9fVHlwZUluZm9UPHVuc2lnbmVkIHNob3J0PiB7CiAgdXNpbmcgX19iYXNlX3QgPSB1bnNpZ25lZCBzaG9ydDsKICB1c2luZyBfX2ZldGNoX3QgPSB1aW50NDsKfTsKdGVtcGxhdGUgPD4gc3RydWN0IF9fVHlwZUluZm9UPGludD4gewogIHVzaW5nIF9fYmFzZV90ID0gaW50OwogIHVzaW5nIF9fZmV0Y2hfdCA9IGludDQ7Cn07CnRlbXBsYXRlIDw+IHN0cnVjdCBfX1R5cGVJbmZvVDx1bnNpZ25lZCBpbnQ+IHsKICB1c2luZyBfX2Jhc2VfdCA9IHVuc2lnbmVkIGludDsKICB1c2luZyBfX2ZldGNoX3QgPSB1aW50NDsKfTsKCi8vIERlcml2ZWQgYmFzZS9mZXRjaCB0eXBlcyBmb3IgTi1lbGVtZW50IHZlY3RvcnMuCnRlbXBsYXRlIDxjbGFzcyBfX1Q+IHN0cnVjdCBfX1R5cGVJbmZvVCB7CiAgdXNpbmcgX19iYXNlX3QgPSBkZWNsdHlwZShfX1Q6OngpOwogIHVzaW5nIF9fZmV0Y2hfdCA9IHR5cGVuYW1lIF9fVHlwZUluZm9UPF9fYmFzZV90Pjo6X19mZXRjaF90Owp9OwoKLy8gQ2xhc3NlcyB0aGF0IGltcGxlbWVudCBzcGVjaWZpYyB0ZXh0dXJlIG9wcy4KdGVtcGxhdGUgPGNsYXNzIF9fb3A+IHN0cnVjdCBfX3RleF9mZXRjaF92NDsKCi8vIEhlbHBlciBtYWNyb3MgdG8gc3RyaXAgcGFyZW5zIGZyb20gYSBtYWNybyBhcmd1bWVudC4KI2RlZmluZSBfX0FyZ3MoLi4uKSBfX1ZBX0FSR1NfXwojZGVmaW5lIF9fU1RSSVBfUEFSRU5TKF9fWCkgX19YCiNkZWZpbmUgX19MKF9fWCkgX19TVFJJUF9QQVJFTlMoX19BcmdzIF9fWCkKCi8vIENvbnN0cnVjdCBpbmxpbmUgYXNzZW1ibHkgb3V0cHV0IGFyZ3MuCi8vIFJlc3VsdHMgYXJlIHN0b3JlZCBpbiBhIHRlbXAgdmFyIF9fci4KLy8gaXNSZXNpZGVudCBib29sIGlzIHBvaW50ZWQgdG8gYnkgX19pcgovLyBBc20gYXJncyBmb3IgcmV0dXJuIHZhbHVlcy4gSXQncyBhIDQtZWxlbWVudCB2ZWN0b3IKI2RlZmluZSBfX0FTTV9PVVQoX190KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAoIj0iIF9fdChfX3IueCksICI9IiBfX3QoX19yLnkpLCAiPSIgX190KF9fci56KSwgIj0iIF9fdChfX3IudykpCi8vIC4uIHBvc3NpYmx5IGNvbWJpbmVkIHdpdGggYSBwcmVkaWNhdGUuCiNkZWZpbmUgX19BU01fT1VUUChfX3QpIChfX0woX19BU01fT1VUKF9fdCkpLCAiPWgiKCpfX2lyKSkKCi8vIEltcGxlbWVudHMgYSBzaW5nbGUgdmFyaWFudCBvZiB0ZXh0dXJlIGZldGNoIGluc3RydWN0aW9uLgojZGVmaW5lIF9fSU1QTF9GMShfX3J0LCBfX2R0LCBfX2FyZ3MsIF9fYXNtX29wLCBfX2FzbV9vdXRzLCBfX2FzbV9hcmdzKSAgICAgICAgXAogIHRlbXBsYXRlIDw+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fZGV2aWNlX18gX19ydCBfX3J1bjxfX2R0PihjdWRhVGV4dHVyZU9iamVjdF90IF9fb2JqLCBfX0woX19hcmdzKSkgeyAgICAgICAgXAogICAgX19ydCBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgYXNtKF9fYXNtX29wIDogX19MKF9fYXNtX291dHMpIDogImwiKF9fb2JqKSwgX19MKF9fYXNtX2FyZ3MpKTsgICAgICAgICAgICAgXAogICAgcmV0dXJuIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0KCi8vIEltcGxlbWVudHMgdGV4dHVyZSBmZXRjaCBpbnN0cnVjdGlvbnMgZm9yIGludDQvdWludDQvZmxvYXQ0IGRhdGEgdHlwZXMuCiNkZWZpbmUgX19JTVBMX0YzKF9fYXJncywgX19hc21fb3AsIF9fY3R5cGUsIF9fYXNtX29wX2FyZ3MsIF9fYXNtX2FyZ3MpICAgICAgICBcCiAgX19JTVBMX0YxKGludDQsIGludDQsIF9fYXJncywgX19hc21fb3AgIi5zMzIuIiBfX2N0eXBlICJcdCIgX19hc21fb3BfYXJncywgICBcCiAgICAgICAgICAgIF9fQVNNX09VVCgiciIpLCBfX2FzbV9hcmdzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19JTVBMX0YxKHVpbnQ0LCB1aW50NCwgX19hcmdzLCBfX2FzbV9vcCAiLnUzMi4iIF9fY3R5cGUgIlx0IiBfX2FzbV9vcF9hcmdzLCBcCiAgICAgICAgICAgIF9fQVNNX09VVCgiciIpLCBfX2FzbV9hcmdzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19JTVBMX0YxKGZsb2F0NCwgZmxvYXQ0LCBfX2FyZ3MsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgIF9fYXNtX29wICIuZjMyLiIgX19jdHlwZSAiXHQiIF9fYXNtX29wX2FyZ3MsIF9fQVNNX09VVCgiZiIpLCAgICAgICBcCiAgICAgICAgICAgIF9fYXNtX2FyZ3MpCi8vIEltcGxlbWVudHMgJ3NwYXJzZScgdGV4dHVyZSBmZXRjaCBpbnN0cnVjdGlvbnMgZm9yIGludDQvdWludDQvZmxvYXQ0IGRhdGEKLy8gdHlwZXMuIFNpbWlsYXIgdG8gYWJvdmUsIGJ1dCByZXR1cm5zIGEgYm9vbGVhbiAnaXNQcmVzZW50JyB2YWx1ZSBpbiBhZGRpdGlvbgovLyB0byB0ZXh0dXJlIGRhdGEsCiNkZWZpbmUgX19JTVBMX0YzUyhfX2FyZ3MsIF9fYXNtX29wLCBfX2N0eXBlLCBfX2FzbV9vcF9hcmdzLCBfX2FzbV9hcmdzKSAgICAgICBcCiAgX19JTVBMX0YxKGludDQsIGludDQsIF9fYXJncywgX19hc21fb3AgIi5zMzIuIiBfX2N0eXBlICJcdCIgX19hc21fb3BfYXJncywgICBcCiAgICAgICAgICAgIF9fQVNNX09VVFAoInIiKSwgX19hc21fYXJncykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19JTVBMX0YxKHVpbnQ0LCB1aW50NCwgX19hcmdzLCBfX2FzbV9vcCAiLnUzMi4iIF9fY3R5cGUgIlx0IiBfX2FzbV9vcF9hcmdzLCBcCiAgICAgICAgICAgIF9fQVNNX09VVFAoInIiKSwgX19hc21fYXJncykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19JTVBMX0YxKGZsb2F0NCwgZmxvYXQ0LCBfX2FyZ3MsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgIF9fYXNtX29wICIuZjMyLiIgX19jdHlwZSAiXHQiIF9fYXNtX29wX2FyZ3MsIF9fQVNNX09VVFAoImYiKSwgICAgICBcCiAgICAgICAgICAgIF9fYXNtX2FyZ3MpCgovLyBTaW1pbGFyIHRvIEYzLCBidXQgZm9yIGludGVnZXIgZGF0YSB3aGljaCBpcyByZXR1cm5lZCBhcyBub3JtYWxpemVkIGZsb2F0cy4KLy8gT25seSBpbnN0YW50aWF0ZXMgZmV0Y2ggZnVuY3Rpb25zIGZvciBpbnQ0L3VpbnQ0LgojZGVmaW5lIF9fSU1QTF9GM04oX19hcmdzLCBfX2FzbV9vcCwgX19jdHlwZSwgX19hc21fb3BfYXJncywgX19hc21fYXJncykgICAgICAgXAogIF9fSU1QTF9GMShmbG9hdDQsIGludDQsIF9fYXJncywgX19hc21fb3AgIi5zMzIuIiBfX2N0eXBlICJcdCIgX19hc21fb3BfYXJncywgXAogICAgICAgICAgICBfX0FTTV9PVVQoInIiKSwgX19hc21fYXJncykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fSU1QTF9GMShmbG9hdDQsIHVpbnQ0LCBfX2FyZ3MsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICBfX2FzbV9vcCAiLnUzMi4iIF9fY3R5cGUgIlx0IiBfX2FzbV9vcF9hcmdzLCBfX0FTTV9PVVQoInIiKSwgICAgICAgXAogICAgICAgICAgICBfX2FzbV9hcmdzKQoKLy8gSW5zdGFudGlhdGVzIF9fdGV4X2ZldGNoX3Y0IHdpdGggcmVndWxhciBmZXRjaCBmdW5jdGlvbnMuCiNkZWZpbmUgX19JTVBMX1MzSShfX29wLCBfX2FyZ3MsIF9fYXNtX29wLCBfX2N0eXBlLCBfX2FzbV9vcF9hcmdzLCBfX2FzbV9hcmdzKSBcCiAgdGVtcGxhdGUgPD4gc3RydWN0IF9fdGV4X2ZldGNoX3Y0PF9fb3A+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBfX2RldmljZV9fIHN0YXRpYyBUIF9fcnVuKGN1ZGFUZXh0dXJlT2JqZWN0X3QgX19vYmosIF9fTChfX2FyZ3MpKTsgICAgICAgICBcCiAgICBfX0lNUExfRjMoX19hcmdzLCBfX2FzbV9vcCwgX19jdHlwZSwgX19hc21fb3BfYXJncywgX19hc21fYXJncykgICAgICAgICAgICBcCiAgfQoKLy8gU2FtZSwgYnV0IGZvciBzcGFyc2Ugb3BzLiBPbmx5IGF2YWlsYWJsZSBvbiBzbV82MCsKI2lmICFkZWZpbmVkKF9fQ1VEQV9BUkNIX18pIHx8IChfX0NVREFfQVJDSF9fID49IDYwMCkKI2RlZmluZSBfX0lNUExfUzNTSShfX29wLCBfX2FyZ3MsIF9fYXNtX29wLCBfX2N0eXBlLCBfX2FzbV9vcF9hcmdzLCAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICBfX2FzbV9hcmdzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgX190ZXhfZmV0Y2hfdjQ8X19vcD4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHRlbXBsYXRlIDxjbGFzcyBUPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIF9fZGV2aWNlX18gc3RhdGljIFQgX19ydW4oY3VkYVRleHR1cmVPYmplY3RfdCBfX29iaiwgX19MKF9fYXJncykpOyAgICAgICAgIFwKICAgIF9fSU1QTF9GM1MoX19hcmdzLCBfX2FzbV9vcCwgX19jdHlwZSwgX19hc21fb3BfYXJncywgX19hc21fYXJncykgICAgICAgICAgIFwKICB9CiNlbHNlCiNkZWZpbmUgX19JTVBMX1MzU0koX19vcCwgX19hcmdzLCBfX2FzbV9vcCwgX19jdHlwZSwgX19hc21fb3BfYXJncywgX19hc21fYXJncykKI2VuZGlmCgovLyBTYW1lLCBidXQgZm9yIG5vcm1hbGl6ZWQgZmxvYXQgb3BzLgojZGVmaW5lIF9fSU1QTF9TM05JKF9fb3AsIF9fYXJncywgX19hc21fb3AsIF9fY3R5cGUsIF9fYXNtX29wX2FyZ3MsICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgIF9fYXNtX2FyZ3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIHRlbXBsYXRlIDw+IHN0cnVjdCBfX3RleF9mZXRjaF92NDxfX29wPiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgdGVtcGxhdGUgPGNsYXNzIFQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX19kZXZpY2VfXyBzdGF0aWMgZmxvYXQ0IF9fcnVuKGN1ZGFUZXh0dXJlT2JqZWN0X3QgX19vYmosIF9fTChfX2FyZ3MpKTsgICAgXAogICAgX19JTVBMX0YzTihfX2FyZ3MsIF9fYXNtX29wLCBfX2N0eXBlLCBfX2FzbV9vcF9hcmdzLCBfX2FzbV9hcmdzKSAgICAgICAgICAgXAogIH0KCi8vIFJlZ3VsYXIgYW5kIG5vcm1hbGl6ZWQgZmxvYXQgb3BzIHNoYXJlIGEgbG90IG9mIHNpbWlsYXJpdGllcy4gIFRoaXMgbWFjcm8KLy8gaW5zdGFudGlhdGVzIGJvdGggdmFyaWFudHMgLS0gbm9ybWFsIGZvciBfX29wIGFuZCBub3JtYWxpemVkIGZvciBfX29wbi4KI2RlZmluZSBfX0lNUExfU0koX19vcCwgX19vcG4sIF9fYXJncywgX19hc21fb3AsIF9fY3R5cGUsIF9fYXNtX29wX2FyZ3MsICAgICAgIFwKICAgICAgICAgICAgICAgICAgX19hc21fYXJncykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX0lNUExfUzNJKF9fb3AsIF9fYXJncywgX19hc21fb3AsIF9fY3R5cGUsIF9fYXNtX29wX2FyZ3MsIF9fYXNtX2FyZ3MpOyAgICAgIFwKICBfX0lNUExfUzNOSShfX29wbiwgX19hcmdzLCBfX2FzbV9vcCwgX19jdHlwZSwgX19hc21fb3BfYXJncywgX19hc21fYXJncykKCi8vIENvbnZlbmllbmNlIG1hY3JvcyB3aGljaCBjb252ZXJ0cyBzdHJpbmcgbGl0ZXJhbCBfX29wIGludG8gYSBfX1RhZywKI2RlZmluZSBfX0lNUExfUzMoX19vcCwgX19hcmdzLCBfX2FzbV9vcCwgX19jdHlwZSwgX19hc21fb3BfYXJncywgX19hc21fYXJncykgIFwKICBfX0lNUExfUzNJKF9fSUQoX19vcCksIF9fYXJncywgX19hc21fb3AsIF9fY3R5cGUsIF9fYXNtX29wX2FyZ3MsIF9fYXNtX2FyZ3MpCiNkZWZpbmUgX19JTVBMX1MzUyhfX29wLCBfX2FyZ3MsIF9fYXNtX29wLCBfX2N0eXBlLCBfX2FzbV9vcF9hcmdzLCBfX2FzbV9hcmdzKSBcCiAgX19JTVBMX1MzU0koX19JRChfX29wKSwgX19hcmdzLCBfX2FzbV9vcCwgX19jdHlwZSwgX19hc21fb3BfYXJncywgX19hc21fYXJncykKI2RlZmluZSBfX0lNUExfUzNOKF9fb3AsIF9fYXJncywgX19hc21fb3AsIF9fY3R5cGUsIF9fYXNtX29wX2FyZ3MsIF9fYXNtX2FyZ3MpIFwKICBfX0lNUExfUzNOSShfX0lEKF9fb3ApLCBfX2FyZ3MsIF9fYXNtX29wLCBfX2N0eXBlLCBfX2FzbV9vcF9hcmdzLCBfX2FzbV9hcmdzKQojZGVmaW5lIF9fSU1QTF9TKF9fb3AsIF9fb3BuLCBfX2FyZ3MsIF9fYXNtX29wLCBfX2N0eXBlLCBfX2FzbV9vcF9hcmdzLCAgICAgICAgXAogICAgICAgICAgICAgICAgIF9fYXNtX2FyZ3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fSU1QTF9TSShfX0lEKF9fb3ApLCBfX0lEKF9fb3BuKSwgX19hcmdzLCBfX2FzbV9vcCwgX19jdHlwZSwgX19hc21fb3BfYXJncywgXAogICAgICAgICAgICBfX2FzbV9hcmdzKQoKLy8gQ1VEQSBoZWFkZXJzIGhhdmUgc29tZSAnbGVnYWN5JyB0ZXh0dXJlIG9wcmVyYXRpb25zIHRoYXQgZHVwbGljYXRlCi8vIGZ1bmN0aW9uYWxpdHkuIFNvLCB3ZSBqdXN0IGluaGVyaXQgaXQsIGluc3RlYWQgb2YgcmVmaW5pbmcgYSBjb3B5LgojZGVmaW5lIF9fSU1QTF9BTElBU0koX19vcCwgX19vcG4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIHRlbXBsYXRlIDw+IHN0cnVjdCBfX3RleF9mZXRjaF92NDxfX29wPiA6IF9fdGV4X2ZldGNoX3Y0PF9fb3BuPiB7fQojZGVmaW5lIF9fSU1QTF9BTElBUyhfX29wLCBfX29wbikgX19JTVBMX0FMSUFTSShfX0lEKF9fb3ApLCBfX0lEKF9fb3BuKSkKCi8vIE5vdyB3ZSBjYW4gaW5zdGFudGlhdGUgZXZlcnl0aGluZyB3ZSBuZWVkIGZvciBlYWNoIHNwZWNpZmljIHRleHR1cmUgZmV0Y2gKLy8gdmFyaWFudC4KX19JTVBMX1MoIl9fdGV4MURfdjIiLCAiX190ZXgxRF9ybW5mX3YyIiwgKGZsb2F0IF9feCksICJ0ZXguMWQudjQiLCAiZjMyIiwKICAgICAgICAgInslMCwgJTEsICUyLCAlM30sIFslNCwgeyU1fV07IiwgKCJmIihfX3gpKSk7Cl9fSU1QTF9TKCJfX3RleDFEZmV0Y2hfdjIiLCAiX190ZXgxRGZldGNoX3JtbmZfdjIiLCAoaW50IF9feCksICJ0ZXguMWQudjQiLAogICAgICAgICAiczMyIiwgInslMCwgJTEsICUyLCAlM30sIFslNCwgeyU1fV07IiwgKCJyIihfX3gpKSk7Cl9fSU1QTF9BTElBUygiX19pdGV4MUQiLCAiX190ZXgxRF92MiIpOwpfX0lNUExfQUxJQVMoIl9faXRleDFEZmV0Y2giLCAiX190ZXgxRGZldGNoX3YyIik7CgpfX0lNUExfUygiX190ZXgxREdyYWRfdjIiLCAiX190ZXgxREdyYWRfcm1uZl92MiIsCiAgICAgICAgIChmbG9hdCBfX3gsIGZsb2F0IF9fZFBkeCwgZmxvYXQgX19kUGR5KSwgInRleC5ncmFkLjFkLnY0IiwgImYzMiIsCiAgICAgICAgICJ7JTAsICUxLCAlMiwgJTN9LCBbJTQsIHslNX1dLCB7JTZ9LCB7JTd9OyIsCiAgICAgICAgICgiZiIoX194KSwgImYiKF9fZFBkeCksICJmIihfX2RQZHkpKSk7Cl9fSU1QTF9BTElBUygiX19pdGV4MURHcmFkIiwgIl9fdGV4MURHcmFkX3YyIik7CgpfX0lNUExfUygiX190ZXgxRExheWVyZWRfdjIiLCAiX190ZXgxRExheWVyZWRfcm1uZl92MiIsCiAgICAgICAgIChmbG9hdCBfX3gsIGludCBfX2xheWVyKSwgInRleC5hMWQudjQiLCAiZjMyIiwKICAgICAgICAgInslMCwgJTEsICUyLCAlM30sIFslNCwgeyU1LCAlNn1dOyIsICgiciIoX19sYXllciksICJmIihfX3gpKSk7Cl9fSU1QTF9BTElBUygiX19pdGV4MURMYXllcmVkIiwgIl9fdGV4MURMYXllcmVkX3YyIik7CgpfX0lNUExfUygiX190ZXgxRExheWVyZWRHcmFkX3YyIiwgIl9fdGV4MURMYXllcmVkR3JhZF9ybW5mX3YyIiwKICAgICAgICAgKGZsb2F0IF9feCwgaW50IF9fbGF5ZXIsIGZsb2F0IF9fZFBkeCwgZmxvYXQgX19kUGR5KSwKICAgICAgICAgInRleC5ncmFkLmExZC52NCIsICJmMzIiLAogICAgICAgICAieyUwLCAlMSwgJTIsICUzfSwgWyU0LCB7JTUsICU2fV0sIHslN30sIHslOH07IiwKICAgICAgICAgKCJyIihfX2xheWVyKSwgImYiKF9feCksICJmIihfX2RQZHgpLCAiZiIoX19kUGR5KSkpOwpfX0lNUExfQUxJQVMoIl9faXRleDFETGF5ZXJlZEdyYWQiLCAiX190ZXgxRExheWVyZWRHcmFkX3YyIik7CgpfX0lNUExfUygiX190ZXgxRExheWVyZWRMb2RfdjIiLCAiX190ZXgxRExheWVyZWRMb2Rfcm1uZl92MiIsCiAgICAgICAgIChmbG9hdCBfX3gsIGludCBfX2xheWVyLCBmbG9hdCBfX2xldmVsKSwgInRleC5sZXZlbC5hMWQudjQiLCAiZjMyIiwKICAgICAgICAgInslMCwgJTEsICUyLCAlM30sIFslNCwgeyU1LCAlNn1dLCAlNzsiLAogICAgICAgICAoInIiKF9fbGF5ZXIpLCAiZiIoX194KSwgImYiKF9fbGV2ZWwpKSk7Cl9fSU1QTF9BTElBUygiX19pdGV4MURMYXllcmVkTG9kIiwgIl9fdGV4MURMYXllcmVkTG9kX3YyIik7CgpfX0lNUExfUygiX190ZXgxRExvZF92MiIsICJfX3RleDFETG9kX3JtbmZfdjIiLCAoZmxvYXQgX194LCBmbG9hdCBfX2xldmVsKSwKICAgICAgICAgInRleC5sZXZlbC4xZC52NCIsICJmMzIiLCAieyUwLCAlMSwgJTIsICUzfSwgWyU0LCB7JTV9XSwgJTY7IiwKICAgICAgICAgKCJmIihfX3gpLCAiZiIoX19sZXZlbCkpKTsKX19JTVBMX0FMSUFTKCJfX2l0ZXgxRExvZCIsICJfX3RleDFETG9kX3YyIik7CgovLyAyRApfX0lNUExfUygiX190ZXgyRF92MiIsICJfX3RleDJEX3JtbmZfdjIiLCAoZmxvYXQgX194LCBmbG9hdCBfX3kpLCAidGV4LjJkLnY0IiwKICAgICAgICAgImYzMiIsICJ7JTAsICUxLCAlMiwgJTN9LCBbJTQsIHslNSwgJTZ9XTsiLCAoImYiKF9feCksICJmIihfX3kpKSk7Cl9fSU1QTF9BTElBUygiX19pdGV4MkQiLCAiX190ZXgyRF92MiIpOwoKX19JTVBMX1MzUygiX19pdGV4MkRfc3BhcnNlIiwgKGZsb2F0IF9feCwgZmxvYXQgX195LCB1bnNpZ25lZCBjaGFyICpfX2lyKSwKICAgICAgICAgICAiey5yZWcgLnByZWQgJSVwMDtcblx0IgogICAgICAgICAgICJ0ZXguMmQudjQiLAogICAgICAgICAgICJmMzIiLAogICAgICAgICAgICJ7JTAsICUxLCAlMiwgJTN9fCUlcDAsIFslNSwgeyU2LCAlN31dO1xuXHQiCiAgICAgICAgICAgIiBzZWxwLnUxNiAlNCwgMSwgMCwgJSVwMDsgfSIsCiAgICAgICAgICAgKCJmIihfX3gpLCAiZiIoX195KSkpOwoKX19JTVBMX1MoIl9fdGV4MkRHcmFkX3YyIiwgIl9fdGV4MkRHcmFkX3JtbmZfdjIiLAogICAgICAgICAoZmxvYXQgX194LCBmbG9hdCBfX3ksIGNvbnN0IGZsb2F0MiAqX19kUGR4LCBjb25zdCBmbG9hdDIgKl9fZFBkeSksCiAgICAgICAgICJ0ZXguZ3JhZC4yZC52NCIsICJmMzIiLAogICAgICAgICAieyUwLCAlMSwgJTIsICUzfSwgWyU0LCB7JTUsICU2fV0sIHslNywgJTh9LCB7JTksICUxMH07IiwKICAgICAgICAgKCJmIihfX3gpLCAiZiIoX195KSwgImYiKF9fZFBkeC0+eCksICJmIihfX2RQZHgtPnkpLCAiZiIoX19kUGR5LT54KSwKICAgICAgICAgICJmIihfX2RQZHktPnkpKSk7Cl9fSU1QTF9BTElBUygiX19pdGV4MkRHcmFkX3YyIiwgIl9fdGV4MkRHcmFkX3YyIik7CgpfX0lNUExfUzNTKCJfX2l0ZXgyREdyYWRfc3BhcnNlIiwKICAgICAgICAgICAoZmxvYXQgX194LCBmbG9hdCBfX3ksIGNvbnN0IGZsb2F0MiAqX19kUGR4LCBjb25zdCBmbG9hdDIgKl9fZFBkeSwKICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqX19pciksCiAgICAgICAgICAgInsucmVnIC5wcmVkICUlcDA7XG5cdCIKICAgICAgICAgICAidGV4LmdyYWQuMmQudjQiLAogICAgICAgICAgICJmMzIiLAogICAgICAgICAgICJ7JTAsICUxLCAlMiwgJTN9fCUlcDAsIFslNSwgeyU2LCAlN31dLCB7JTgsICU5fSwgeyUxMCwgJTExfTtcblx0IgogICAgICAgICAgICJzZWxwLnUxNiAlNCwgMSwgMCwgJSVwMDsgfSIsCiAgICAgICAgICAgKCJmIihfX3gpLCAiZiIoX195KSwgImYiKF9fZFBkeC0+eCksICJmIihfX2RQZHgtPnkpLCAiZiIoX19kUGR5LT54KSwKICAgICAgICAgICAgImYiKF9fZFBkeS0+eSkpKTsKCl9fSU1QTF9TKCJfX3RleDJETGF5ZXJlZF92MiIsICJfX3RleDJETGF5ZXJlZF9ybW5mX3YyIiwKICAgICAgICAgKGZsb2F0IF9feCwgZmxvYXQgX195LCBpbnQgX19sYXllciksICJ0ZXguYTJkLnY0IiwgImYzMiIsCiAgICAgICAgICJ7JTAsICUxLCAlMiwgJTN9LCBbJTQsIHslNSwgJTYsICU3LCAlN31dOyIsCiAgICAgICAgICgiciIoX19sYXllciksICJmIihfX3gpLCAiZiIoX195KSkpOwpfX0lNUExfQUxJQVMoIl9faXRleDJETGF5ZXJlZCIsICJfX3RleDJETGF5ZXJlZF92MiIpOwoKX19JTVBMX1MzUygiX19pdGV4MkRMYXllcmVkX3NwYXJzZSIsCiAgICAgICAgICAgKGZsb2F0IF9feCwgZmxvYXQgX195LCBpbnQgX19sYXllciwgdW5zaWduZWQgY2hhciAqX19pciksCiAgICAgICAgICAgInsucmVnIC5wcmVkICUlcDA7XG5cdCIKICAgICAgICAgICAidGV4LmEyZC52NCIsCiAgICAgICAgICAgImYzMiIsCiAgICAgICAgICAgInslMCwgJTEsICUyLCAlM318JSVwMCwgWyU1LCB7JTYsICU3LCAlOCwgJTh9XTtcblx0IgogICAgICAgICAgICJzZWxwLnUxNiAlNCwgMSwgMCwgJSVwMDsgfSIsCiAgICAgICAgICAgKCJyIihfX2xheWVyKSwgImYiKF9feCksICJmIihfX3kpKSk7CgpfX0lNUExfUygiX190ZXgyRExheWVyZWRHcmFkX3YyIiwgIl9fdGV4MkRMYXllcmVkR3JhZF9ybW5mX3YyIiwKICAgICAgICAgKGZsb2F0IF9feCwgZmxvYXQgX195LCBpbnQgX19sYXllciwgY29uc3QgZmxvYXQyICpfX2RQZHgsCiAgICAgICAgICBjb25zdCBmbG9hdDIgKl9fZFBkeSksCiAgICAgICAgICJ0ZXguZ3JhZC5hMmQudjQiLCAiZjMyIiwKICAgICAgICAgInslMCwgJTEsICUyLCAlM30sIFslNCwgeyU1LCAlNiwgJTcsICU3fV0sIHslOCwgJTl9LCB7JTEwLCAlMTF9OyIsCiAgICAgICAgICgiciIoX19sYXllciksICJmIihfX3gpLCAiZiIoX195KSwgImYiKF9fZFBkeC0+eCksICJmIihfX2RQZHgtPnkpLAogICAgICAgICAgImYiKF9fZFBkeS0+eCksICJmIihfX2RQZHktPnkpKSk7Cl9fSU1QTF9BTElBUygiX19pdGV4MkRMYXllcmVkR3JhZF92MiIsICJfX3RleDJETGF5ZXJlZEdyYWRfdjIiKTsKCl9fSU1QTF9TM1MoCiAgICAiX19pdGV4MkRMYXllcmVkR3JhZF9zcGFyc2UiLAogICAgKGZsb2F0IF9feCwgZmxvYXQgX195LCBpbnQgX19sYXllciwgY29uc3QgZmxvYXQyICpfX2RQZHgsCiAgICAgY29uc3QgZmxvYXQyICpfX2RQZHksIHVuc2lnbmVkIGNoYXIgKl9faXIpLAogICAgInsucmVnIC5wcmVkICUlcDA7XG5cdCIKICAgICJ0ZXguZ3JhZC5hMmQudjQiLAogICAgImYzMiIsCiAgICAieyUwLCAlMSwgJTIsICUzfXwlJXAwLCBbJTUsIHslNiwgJTcsICU4LCAlOH1dLCB7JTksICUxMH0sIHslMTEsICUxMn07XG5cdCIKICAgICJzZWxwLnUxNiAlNCwgMSwgMCwgJSVwMDsgfSIsCiAgICAoInIiKF9fbGF5ZXIpLCAiZiIoX194KSwgImYiKF9feSksICJmIihfX2RQZHgtPngpLCAiZiIoX19kUGR4LT55KSwKICAgICAiZiIoX19kUGR5LT54KSwgImYiKF9fZFBkeS0+eSkpKTsKCl9fSU1QTF9TKCJfX3RleDJETGF5ZXJlZExvZF92MiIsICJfX3RleDJETGF5ZXJlZExvZF9ybW5mX3YyIiwKICAgICAgICAgKGZsb2F0IF9feCwgZmxvYXQgX195LCBpbnQgX19sYXllciwgZmxvYXQgX19sZXZlbCksICJ0ZXgubGV2ZWwuYTJkLnY0IiwKICAgICAgICAgImYzMiIsICJ7JTAsICUxLCAlMiwgJTN9LCBbJTQsIHslNSwgJTYsICU3LCAlN31dLCAlODsiLAogICAgICAgICAoInIiKF9fbGF5ZXIpLCAiZiIoX194KSwgImYiKF9feSksICJmIihfX2xldmVsKSkpOwpfX0lNUExfQUxJQVMoIl9faXRleDJETGF5ZXJlZExvZCIsICJfX3RleDJETGF5ZXJlZExvZF92MiIpOwoKX19JTVBMX1MzUygiX19pdGV4MkRMYXllcmVkTG9kX3NwYXJzZSIsCiAgICAgICAgICAgKGZsb2F0IF9feCwgZmxvYXQgX195LCBpbnQgX19sYXllciwgZmxvYXQgX19sZXZlbCwKICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqX19pciksCiAgICAgICAgICAgInsucmVnIC5wcmVkICUlcDA7XG5cdCIKICAgICAgICAgICAidGV4LmxldmVsLmEyZC52NCIsCiAgICAgICAgICAgImYzMiIsCiAgICAgICAgICAgInslMCwgJTEsICUyLCAlM318JSVwMCwgWyU1LCB7JTYsICU3LCAlOCwgJTh9XSwgJTk7XG5cdCIKICAgICAgICAgICAic2VscC51MTYgJTQsIDEsIDAsICUlcDA7IH0iLAogICAgICAgICAgICgiciIoX19sYXllciksICJmIihfX3gpLCAiZiIoX195KSwgImYiKF9fbGV2ZWwpKSk7CgpfX0lNUExfUygiX190ZXgyRExvZF92MiIsICJfX3RleDJETG9kX3JtbmZfdjIiLAogICAgICAgICAoZmxvYXQgX194LCBmbG9hdCBfX3ksIGZsb2F0IF9fbGV2ZWwpLCAidGV4LmxldmVsLjJkLnY0IiwgImYzMiIsCiAgICAgICAgICJ7JTAsICUxLCAlMiwgJTN9LCBbJTQsIHslNSwgJTZ9XSwgJTc7IiwKICAgICAgICAgKCJmIihfX3gpLCAiZiIoX195KSwgImYiKF9fbGV2ZWwpKSk7Cl9fSU1QTF9BTElBUygiX19pdGV4MkRMb2QiLCAiX190ZXgyRExvZF92MiIpOwoKX19JTVBMX1MzUygiX19pdGV4MkRMb2Rfc3BhcnNlIiwKICAgICAgICAgICAoZmxvYXQgX194LCBmbG9hdCBfX3ksIGZsb2F0IF9fbGV2ZWwsIHVuc2lnbmVkIGNoYXIgKl9faXIpLAogICAgICAgICAgICJ7LnJlZyAucHJlZCAlJXAwO1xuXHQiCiAgICAgICAgICAgInRleC5sZXZlbC4yZC52NCIsCiAgICAgICAgICAgImYzMiIsCiAgICAgICAgICAgInslMCwgJTEsICUyLCAlM318JSVwMCwgWyU1LCB7JTYsICU3fV0sICU4O1xuXHQiCiAgICAgICAgICAgInNlbHAudTE2ICU0LCAxLCAwLCAlJXAwOyB9IiwKICAgICAgICAgICAoImYiKF9feCksICJmIihfX3kpLCAiZiIoX19sZXZlbCkpKTsKCi8vIDJEIGdhdGhlciBpcyBzcGVjaWFsLiBVbmxpa2Ugb3RoZXIgdmFyaWFudHMgdGhhdCB0cmFuc2xhdGUgaW50byBleGFjdGx5IG9uZQovLyBhc20gaW5zdHJ1Y3Rpb24sIGl0IHVzZXMgb25lIG9mIHRoZSBmb3VyIGRpZmZlcmVudCBpbnN0cnVjdGlvbnMgc2VsZWN0ZWQgYnkKLy8gX19jb21wLiAgV2UgaW1wbGVtZW50IGVhY2ggaW5zdHJ1Y3Rpb24gdmFyaWFudCBzZXBhcmF0ZWx5LCBhbmQgZGlzcGF0Y2ggdGhlCi8vIHJpZ2h0IG9uZSBmcm9tIHRoZSBtYW51YWxseSBpbXBsZW1lbnRlZCAndW1icmVsbGEnIGZldGNoLgojZGVmaW5lIF9fSU1QTF8yREdBVEhFUih2YXJpYW50LCBpbnN0cikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fSU1QTF9TSShfX0lEVigiX190ZXgyRGdhdGhlcl92MiIsIHZhcmlhbnQpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICBfX0lEVigiX190ZXgyRGdhdGhlcl9ybW5mX3YyIiwgdmFyaWFudCksICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAoZmxvYXQgX194LCBmbG9hdCBfX3ksIGludCBfX2NvbXApLCBpbnN0ciwgImYzMiIsICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAieyUwLCAlMSwgJTIsICUzfSwgWyU0LCB7JTUsICU2fV07IiwgKCJmIihfX3gpLCAiZiIoX195KSkpOyAgICAgICAgXAogIF9fSU1QTF9BTElBU0koX19JRFYoIl9faXRleDJEZ2F0aGVyIiwgdmFyaWFudCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgX19JRFYoIl9fdGV4MkRnYXRoZXJfdjIiLCB2YXJpYW50KSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fSU1QTF9TM1NJKF9fSURWKCJfX2l0ZXgyRGdhdGhlcl9zcGFyc2UiLCB2YXJpYW50KSwgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgIChmbG9hdCBfX3gsIGZsb2F0IF9feSwgdW5zaWduZWQgY2hhciAqX19pciwgaW50IF9fY29tcCksICAgICAgICAgXAogICAgICAgICAgICAgICJ7LnJlZyAucHJlZCAlJXAwO1xuXHQiIGluc3RyLCAiZjMyIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICJ7JTAsICUxLCAlMiwgJTN9fCUlcDAsIFslNSwgeyU2LCAlN31dO1xuXHQiICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICJzZWxwLnUxNiAlNCwgMSwgMCwgJSVwMDsgfSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICgiZiIoX194KSwgImYiKF9feSkpKTsKX19JTVBMXzJER0FUSEVSKDAsICJ0bGQ0LnIuMmQudjQiKTsKX19JTVBMXzJER0FUSEVSKDEsICJ0bGQ0LmcuMmQudjQiKTsKX19JTVBMXzJER0FUSEVSKDIsICJ0bGQ0LmIuMmQudjQiKTsKX19JTVBMXzJER0FUSEVSKDMsICJ0bGQ0LmEuMmQudjQiKTsKCi8vIFVtYnJlbGxhIGRpc3BhdGNoZXIgLS0gY2FsbHMgaW50byBzcGVjaWZpYyAyRGdhdGhlciB2YXJpYW50Lgp0ZW1wbGF0ZSA8PiBzdHJ1Y3QgX190ZXhfZmV0Y2hfdjQ8X19JRCgiX190ZXgyRGdhdGhlcl92MiIpPiB7CiAgdGVtcGxhdGUgPGNsYXNzIF9fVD4KICBfX2RldmljZV9fIHN0YXRpYyBfX1QgX19ydW4oY3VkYVRleHR1cmVPYmplY3RfdCBfX29iaiwgZmxvYXQgX194LCBmbG9hdCBfX3ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2NvbXApIHsKICAgIHN3aXRjaCAoX19jb21wKSB7CiAgICBjYXNlIDA6CiAgICAgIHJldHVybiBfX3RleF9mZXRjaF92NDxfX0lEVigiX190ZXgyRGdhdGhlcl92MiIsIDApPjo6X19ydW48X19UPigKICAgICAgICAgIF9fb2JqLCBfX3gsIF9feSwgX19jb21wKTsKICAgIGNhc2UgMToKICAgICAgcmV0dXJuIF9fdGV4X2ZldGNoX3Y0PF9fSURWKCJfX3RleDJEZ2F0aGVyX3YyIiwgMSk+OjpfX3J1bjxfX1Q+KAogICAgICAgICAgX19vYmosIF9feCwgX195LCBfX2NvbXApOwogICAgY2FzZSAyOgogICAgICByZXR1cm4gX190ZXhfZmV0Y2hfdjQ8X19JRFYoIl9fdGV4MkRnYXRoZXJfdjIiLCAyKT46Ol9fcnVuPF9fVD4oCiAgICAgICAgICBfX29iaiwgX194LCBfX3ksIF9fY29tcCk7CiAgICBjYXNlIDM6CiAgICAgIHJldHVybiBfX3RleF9mZXRjaF92NDxfX0lEVigiX190ZXgyRGdhdGhlcl92MiIsIDMpPjo6X19ydW48X19UPigKICAgICAgICAgIF9fb2JqLCBfX3gsIF9feSwgX19jb21wKTsKICAgIH0KICB9Cn07Cl9fSU1QTF9BTElBUygiX19pdGV4MkRnYXRoZXIiLCAiX190ZXgyRGdhdGhlcl92MiIpOwoKdGVtcGxhdGUgPD4gc3RydWN0IF9fdGV4X2ZldGNoX3Y0PF9fSUQoIl9fdGV4MkRnYXRoZXJfcm1uZl92MiIpPiB7CiAgdGVtcGxhdGUgPGNsYXNzIF9fVD4KICBfX2RldmljZV9fIHN0YXRpYyBmbG9hdDQgX19ydW4oY3VkYVRleHR1cmVPYmplY3RfdCBfX29iaiwgZmxvYXQgX194LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBfX3ksIGludCBfX2NvbXApIHsKICAgIHN3aXRjaCAoX19jb21wKSB7CiAgICBjYXNlIDA6CiAgICAgIHJldHVybiBfX3RleF9mZXRjaF92NDxfX0lEVigiX190ZXgyRGdhdGhlcl9ybW5mX3YyIiwgMCk+OjpfX3J1bjxfX1Q+KAogICAgICAgICAgX19vYmosIF9feCwgX195LCBfX2NvbXApOwogICAgY2FzZSAxOgogICAgICByZXR1cm4gX190ZXhfZmV0Y2hfdjQ8X19JRFYoIl9fdGV4MkRnYXRoZXJfcm1uZl92MiIsIDEpPjo6X19ydW48X19UPigKICAgICAgICAgIF9fb2JqLCBfX3gsIF9feSwgX19jb21wKTsKICAgIGNhc2UgMjoKICAgICAgcmV0dXJuIF9fdGV4X2ZldGNoX3Y0PF9fSURWKCJfX3RleDJEZ2F0aGVyX3JtbmZfdjIiLCAyKT46Ol9fcnVuPF9fVD4oCiAgICAgICAgICBfX29iaiwgX194LCBfX3ksIF9fY29tcCk7CiAgICBjYXNlIDM6CiAgICAgIHJldHVybiBfX3RleF9mZXRjaF92NDxfX0lEVigiX190ZXgyRGdhdGhlcl9ybW5mX3YyIiwgMyk+OjpfX3J1bjxfX1Q+KAogICAgICAgICAgX19vYmosIF9feCwgX195LCBfX2NvbXApOwogICAgfQogIH0KfTsKCiNpZiAhZGVmaW5lZChfX0NVREFfQVJDSF9fKSB8fCAoX19DVURBX0FSQ0hfXyA+PSA2MDApCnRlbXBsYXRlIDw+IHN0cnVjdCBfX3RleF9mZXRjaF92NDxfX0lEKCJfX2l0ZXgyRGdhdGhlcl9zcGFyc2UiKT4gewogIHRlbXBsYXRlIDxjbGFzcyBfX1Q+CiAgX19kZXZpY2VfXyBzdGF0aWMgX19UIF9fcnVuKGN1ZGFUZXh0dXJlT2JqZWN0X3QgX19vYmosIGZsb2F0IF9feCwgZmxvYXQgX195LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpfX2lyLCBpbnQgX19jb21wKSB7CiAgICBzd2l0Y2ggKF9fY29tcCkgewogICAgY2FzZSAwOgogICAgICByZXR1cm4gX190ZXhfZmV0Y2hfdjQ8X19JRFYoIl9faXRleDJEZ2F0aGVyX3NwYXJzZSIsIDApPjo6X19ydW48X19UPigKICAgICAgICAgIF9fb2JqLCBfX3gsIF9feSwgX19pciwgX19jb21wKTsKICAgIGNhc2UgMToKICAgICAgcmV0dXJuIF9fdGV4X2ZldGNoX3Y0PF9fSURWKCJfX2l0ZXgyRGdhdGhlcl9zcGFyc2UiLCAxKT46Ol9fcnVuPF9fVD4oCiAgICAgICAgICBfX29iaiwgX194LCBfX3ksIF9faXIsIF9fY29tcCk7CiAgICBjYXNlIDI6CiAgICAgIHJldHVybiBfX3RleF9mZXRjaF92NDxfX0lEVigiX19pdGV4MkRnYXRoZXJfc3BhcnNlIiwgMik+OjpfX3J1bjxfX1Q+KAogICAgICAgICAgX19vYmosIF9feCwgX195LCBfX2lyLCBfX2NvbXApOwogICAgY2FzZSAzOgogICAgICByZXR1cm4gX190ZXhfZmV0Y2hfdjQ8X19JRFYoIl9faXRleDJEZ2F0aGVyX3NwYXJzZSIsIDMpPjo6X19ydW48X19UPigKICAgICAgICAgIF9fb2JqLCBfX3gsIF9feSwgX19pciwgX19jb21wKTsKICAgIH0KICB9Cn07CiNlbmRpZgoKLy8gM0QKX19JTVBMX1MoIl9fdGV4M0RfdjIiLCAiX190ZXgzRF9ybW5mX3YyIiwgKGZsb2F0IF9feCwgZmxvYXQgX195LCBmbG9hdCBfX3opLAogICAgICAgICAidGV4LjNkLnY0IiwgImYzMiIsICJ7JTAsICUxLCAlMiwgJTN9LCBbJTQsIHslNSwgJTYsICU3LCAlN31dOyIsCiAgICAgICAgICgiZiIoX194KSwgImYiKF9feSksICJmIihfX3opKSk7Cl9fSU1QTF9BTElBUygiX19pdGV4M0QiLCAiX190ZXgzRF92MiIpOwoKX19JTVBMX1MzUygiX19pdGV4M0Rfc3BhcnNlIiwKICAgICAgICAgICAoZmxvYXQgX194LCBmbG9hdCBfX3ksIGZsb2F0IF9feiwgdW5zaWduZWQgY2hhciAqX19pciksCiAgICAgICAgICAgInsucmVnIC5wcmVkICUlcDA7XG5cdCIKICAgICAgICAgICAidGV4LjNkLnY0IiwKICAgICAgICAgICAiZjMyIiwKICAgICAgICAgICAieyUwLCAlMSwgJTIsICUzfXwlJXAwLCBbJTUsIHslNiwgJTcsICU4LCAlOH1dO1xuXHQiCiAgICAgICAgICAgInNlbHAudTE2ICU0LCAxLCAwLCAlJXAwOyB9IiwKICAgICAgICAgICAoImYiKF9feCksICJmIihfX3kpLCAiZiIoX196KSkpOwoKX19JTVBMX1MoIl9fdGV4M0RHcmFkX3YyIiwgIl9fdGV4M0RHcmFkX3JtbmZfdjIiLAogICAgICAgICAoZmxvYXQgX194LCBmbG9hdCBfX3ksIGZsb2F0IF9feiwgY29uc3QgZmxvYXQ0ICpfX2RQZHgsCiAgICAgICAgICBjb25zdCBmbG9hdDQgKl9fZFBkeSksCiAgICAgICAgICJ0ZXguZ3JhZC4zZC52NCIsICJmMzIiLAogICAgICAgICAieyUwLCAlMSwgJTIsICUzfSwgWyU0LCB7JTUsICU2LCAlNywgJTd9XSwgIgogICAgICAgICAieyU4LCAlOSwgJTEwLCAlMTB9LCB7JTExLCAlMTIsICUxMywgJTEzfTsiLAogICAgICAgICAoImYiKF9feCksICJmIihfX3kpLCAiZiIoX196KSwgImYiKF9fZFBkeC0+eCksICJmIihfX2RQZHgtPnkpLAogICAgICAgICAgImYiKF9fZFBkeC0+eiksICJmIihfX2RQZHktPngpLCAiZiIoX19kUGR5LT55KSwgImYiKF9fZFBkeS0+eikpKTsKX19JTVBMX0FMSUFTKCJfX2l0ZXgzREdyYWRfdjIiLCAiX190ZXgzREdyYWRfdjIiKTsKCl9fSU1QTF9TM1MoIl9faXRleDNER3JhZF9zcGFyc2UiLAogICAgICAgICAgIChmbG9hdCBfX3gsIGZsb2F0IF9feSwgZmxvYXQgX196LCBjb25zdCBmbG9hdDQgKl9fZFBkeCwKICAgICAgICAgICAgY29uc3QgZmxvYXQ0ICpfX2RQZHksIHVuc2lnbmVkIGNoYXIgKl9faXIpLAogICAgICAgICAgICJ7LnJlZyAucHJlZCAlJXAwO1xuXHQiCiAgICAgICAgICAgInRleC5ncmFkLjNkLnY0IiwKICAgICAgICAgICAiZjMyIiwKICAgICAgICAgICAieyUwLCAlMSwgJTIsICUzfXwlJXAwLCBbJTUsIHslNiwgJTcsICU4LCAlOH1dLCAiCiAgICAgICAgICAgInslOSwgJTEwLCAlMTEsICUxMX0sIHslMTIsICUxMywgJTE0LCAlMTR9O1xuXHQiCiAgICAgICAgICAgInNlbHAudTE2ICU0LCAxLCAwLCAlJXAwOyB9IiwKICAgICAgICAgICAoImYiKF9feCksICJmIihfX3kpLCAiZiIoX196KSwgImYiKF9fZFBkeC0+eCksICJmIihfX2RQZHgtPnkpLAogICAgICAgICAgICAiZiIoX19kUGR4LT56KSwgImYiKF9fZFBkeS0+eCksICJmIihfX2RQZHktPnkpLCAiZiIoX19kUGR5LT56KSkpOwoKX19JTVBMX1MoIl9fdGV4M0RMb2RfdjIiLCAiX190ZXgzRExvZF9ybW5mX3YyIiwKICAgICAgICAgKGZsb2F0IF9feCwgZmxvYXQgX195LCBmbG9hdCBfX3osIGZsb2F0IF9fbGV2ZWwpLCAidGV4LmxldmVsLjNkLnY0IiwKICAgICAgICAgImYzMiIsICJ7JTAsICUxLCAlMiwgJTN9LCBbJTQsIHslNSwgJTYsICU3LCAlN31dLCAlODsiLAogICAgICAgICAoImYiKF9feCksICJmIihfX3kpLCAiZiIoX196KSwgImYiKF9fbGV2ZWwpKSk7Cl9fSU1QTF9BTElBUygiX19pdGV4M0RMb2QiLCAiX190ZXgzRExvZF92MiIpOwoKX19JTVBMX1MzUygiX19pdGV4M0RMb2Rfc3BhcnNlIiwKICAgICAgICAgICAoZmxvYXQgX194LCBmbG9hdCBfX3ksIGZsb2F0IF9feiwgZmxvYXQgX19sZXZlbCwKICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqX19pciksCiAgICAgICAgICAgInsucmVnIC5wcmVkICUlcDA7XG5cdCIKICAgICAgICAgICAidGV4LmxldmVsLjNkLnY0IiwKICAgICAgICAgICAiZjMyIiwKICAgICAgICAgICAieyUwLCAlMSwgJTIsICUzfXwlJXAwLCBbJTUsIHslNiwgJTcsICU4LCAlOH1dLCAlOTtcblx0IgogICAgICAgICAgICJzZWxwLnUxNiAlNCwgMSwgMCwgJSVwMDsgfSIsCiAgICAgICAgICAgKCJmIihfX3gpLCAiZiIoX195KSwgImYiKF9feiksICJmIihfX2xldmVsKSkpOwoKLy8gQ3ViZW1hcApfX0lNUExfUygiX190ZXhDdWJlbWFwX3YyIiwgIl9fdGV4Q3ViZW1hcF9ybW5mX3YyIiwKICAgICAgICAgKGZsb2F0IF9feCwgZmxvYXQgX195LCBmbG9hdCBfX3opLCAidGV4LmN1YmUudjQiLCAiZjMyIiwKICAgICAgICAgInslMCwgJTEsICUyLCAlM30sIFslNCwgeyU1LCAlNiwgJTcsICU3fV07IiwKICAgICAgICAgKCJmIihfX3gpLCAiZiIoX195KSwgImYiKF9feikpKTsKX19JTVBMX0FMSUFTKCJfX2l0ZXhDdWJlbWFwIiwgIl9fdGV4Q3ViZW1hcF92MiIpOwoKX19JTVBMX1MzUygiX19pdGV4Q3ViZW1hcF9zcGFyc2UiLAogICAgICAgICAgIChmbG9hdCBfX3gsIGZsb2F0IF9feSwgZmxvYXQgX196LCB1bnNpZ25lZCBjaGFyICpfX2lyKSwKICAgICAgICAgICAiey5yZWcgLnByZWQgJSVwMDtcblx0IgogICAgICAgICAgICJ0ZXguY3ViZS52NCIsCiAgICAgICAgICAgImYzMiIsCiAgICAgICAgICAgInslMCwgJTEsICUyLCAlM318JSVwMCwgWyU1LCB7JTYsICU3LCAlOCwgJTh9XTtcblx0IgogICAgICAgICAgICJzZWxwLnUxNiAlNCwgMSwgMCwgJSVwMDsgfSIsCiAgICAgICAgICAgKCJmIihfX3gpLCAiZiIoX195KSwgImYiKF9feikpKTsKCl9fSU1QTF9TKCJfX3RleEN1YmVtYXBHcmFkX3YyIiwgIl9fdGV4Q3ViZW1hcEdyYWRfcm1uZl92MiIsCiAgICAgICAgIChmbG9hdCBfX3gsIGZsb2F0IF9feSwgZmxvYXQgX196LCBjb25zdCBmbG9hdDQgKl9fZFBkeCwKICAgICAgICAgIGNvbnN0IGZsb2F0NCAqX19kUGR5KSwKICAgICAgICAgInRleC5ncmFkLmN1YmUudjQiLCAiZjMyIiwKICAgICAgICAgInslMCwgJTEsICUyLCAlM30sIFslNCwgeyU1LCAlNiwgJTcsICU3fV0sICIKICAgICAgICAgInslOCwgJTksICUxMCwgJTEwfSwgeyUxMSwgJTEyLCAlMTMsICUxM307IiwKICAgICAgICAgKCJmIihfX3gpLCAiZiIoX195KSwgImYiKF9feiksICJmIihfX2RQZHgtPngpLCAiZiIoX19kUGR4LT55KSwKICAgICAgICAgICJmIihfX2RQZHgtPnopLCAiZiIoX19kUGR5LT54KSwgImYiKF9fZFBkeS0+eSksICJmIihfX2RQZHktPnopKSk7Cl9fSU1QTF9BTElBUygiX19pdGV4Q3ViZW1hcEdyYWRfdjIiLCAiX190ZXhDdWJlbWFwR3JhZF92MiIpOwoKX19JTVBMX1MoIl9fdGV4Q3ViZW1hcExheWVyZWRfdjIiLCAiX190ZXhDdWJlbWFwTGF5ZXJlZF9ybW5mX3YyIiwKICAgICAgICAgKGZsb2F0IF9feCwgZmxvYXQgX195LCBmbG9hdCBfX3osIGludCBfX2xheWVyKSwgInRleC5hY3ViZS52NCIsICJmMzIiLAogICAgICAgICAieyUwLCAlMSwgJTIsICUzfSwgWyU0LCB7JTUsICU2LCAlNywgJTh9XTsiLAogICAgICAgICAoInIiKF9fbGF5ZXIpLCAiZiIoX194KSwgImYiKF9feSksICJmIihfX3opKSk7Cl9fSU1QTF9BTElBUygiX19pdGV4Q3ViZW1hcExheWVyZWQiLCAiX190ZXhDdWJlbWFwTGF5ZXJlZF92MiIpOwoKX19JTVBMX1MoIl9fdGV4Q3ViZW1hcExheWVyZWRHcmFkX3YyIiwgIl9fdGV4Q3ViZW1hcExheWVyZWRHcmFkX3JtbmZfdjIiLAogICAgICAgICAoZmxvYXQgX194LCBmbG9hdCBfX3ksIGZsb2F0IF9feiwgaW50IF9fbGF5ZXIsIGNvbnN0IGZsb2F0NCAqX19kUGR4LAogICAgICAgICAgY29uc3QgZmxvYXQ0ICpfX2RQZHkpLAogICAgICAgICAidGV4LmdyYWQuYWN1YmUudjQiLCAiZjMyIiwKICAgICAgICAgInslMCwgJTEsICUyLCAlM30sIFslNCwgeyU1LCAlNiwgJTcsICU4fV0sICIKICAgICAgICAgInslOSwgJTEwLCAlMTEsICUxMX0sIHslMTIsICUxMywgJTE0LCAlMTR9OyIsCiAgICAgICAgICgiciIoX19sYXllciksICJmIihfX3gpLCAiZiIoX195KSwgImYiKF9feiksICJmIihfX2RQZHgtPngpLAogICAgICAgICAgImYiKF9fZFBkeC0+eSksICJmIihfX2RQZHgtPnopLCAiZiIoX19kUGR5LT54KSwgImYiKF9fZFBkeS0+eSksCiAgICAgICAgICAiZiIoX19kUGR5LT56KSkpOwpfX0lNUExfQUxJQVMoIl9faXRleEN1YmVtYXBMYXllcmVkR3JhZF92MiIsICJfX3RleEN1YmVtYXBMYXllcmVkR3JhZF92MiIpOwoKX19JTVBMX1MoIl9fdGV4Q3ViZW1hcExheWVyZWRMb2RfdjIiLCAiX190ZXhDdWJlbWFwTGF5ZXJlZExvZF9ybW5mX3YyIiwKICAgICAgICAgKGZsb2F0IF9feCwgZmxvYXQgX195LCBmbG9hdCBfX3osIGludCBfX2xheWVyLCBmbG9hdCBfX2xldmVsKSwKICAgICAgICAgInRleC5sZXZlbC5hY3ViZS52NCIsICJmMzIiLAogICAgICAgICAieyUwLCAlMSwgJTIsICUzfSwgWyU0LCB7JTUsICU2LCAlNywgJTh9XSwgJTk7IiwKICAgICAgICAgKCJyIihfX2xheWVyKSwgImYiKF9feCksICJmIihfX3kpLCAiZiIoX196KSwgImYiKF9fbGV2ZWwpKSk7Cl9fSU1QTF9BTElBUygiX19pdGV4Q3ViZW1hcExheWVyZWRMb2QiLCAiX190ZXhDdWJlbWFwTGF5ZXJlZExvZF92MiIpOwoKX19JTVBMX1MoIl9fdGV4Q3ViZW1hcExvZF92MiIsICJfX3RleEN1YmVtYXBMb2Rfcm1uZl92MiIsCiAgICAgICAgIChmbG9hdCBfX3gsIGZsb2F0IF9feSwgZmxvYXQgX196LCBmbG9hdCBfX2xldmVsKSwgInRleC5sZXZlbC5jdWJlLnY0IiwKICAgICAgICAgImYzMiIsICJ7JTAsICUxLCAlMiwgJTN9LCBbJTQsIHslNSwgJTYsICU3LCAlN31dLCAlODsiLAogICAgICAgICAoImYiKF9feCksICJmIihfX3kpLCAiZiIoX196KSwgImYiKF9fbGV2ZWwpKSk7Cl9fSU1QTF9BTElBUygiX19pdGV4Q3ViZW1hcExvZCIsICJfX3RleEN1YmVtYXBMb2RfdjIiKTsKCi8vIEhlbHBlciBjbGFzcyBmb3IgZXh0cmFjdGluZyBzbGljZSBvZiBkYXRhIGZyb20gVjQgZmV0Y2ggcmVzdWx0cy4KdGVtcGxhdGUgPGNsYXNzIF9fRGVzdFQsIGNsYXNzIF9fU3JjVD4gc3RydWN0IF9fY29udmVydCB7CiAgdGVtcGxhdGUgPGludCBfX05FbGVtZW50cyA9IHNpemVvZihfX0Rlc3RUKSAvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih0eXBlbmFtZSBfX1R5cGVJbmZvVDxfX0Rlc3RUPjo6X19iYXNlX3QpPgogIF9fZGV2aWNlX18gc3RhdGljIF9fRGVzdFQgX19ydW4oX19TcmNUIF9fdik7CiAgdGVtcGxhdGUgPD4gX19kZXZpY2VfXyBzdGF0aWMgX19EZXN0VCBfX3J1bjwxPihfX1NyY1QgX192KSB7IHJldHVybiB7X192Lnh9OyB9CiAgdGVtcGxhdGUgPD4gX19kZXZpY2VfXyBzdGF0aWMgX19EZXN0VCBfX3J1bjwyPihfX1NyY1QgX192KSB7CiAgICByZXR1cm4ge19fdi54LCBfX3YueX07CiAgfQogIHRlbXBsYXRlIDw+IF9fZGV2aWNlX18gc3RhdGljIF9fRGVzdFQgX19ydW48Mz4oX19TcmNUIF9fdikgewogICAgcmV0dXJuIHtfX3YueCwgX192LnksIF9fdi56fTsKICB9CiAgdGVtcGxhdGUgPD4gX19kZXZpY2VfXyBzdGF0aWMgX19EZXN0VCBfX3J1bjw0PihfX1NyY1QgX192KSB7CiAgICByZXR1cm4ge19fdi54LCBfX3YueSwgX192LnosIF9fdi53fTsKICB9Cn07CgovLyBUaGVzZSBhcmUgdGhlIHRvcC1sZXZlbCBmdW5jdGlvbiBvdmVybG9hZHMgdGhlIF9fbnZfdGV4X3N1cmZfaGFuZGxlciBleHBhbmRzCi8vIHRvLiAgRWFjaCBvdmVybG9hZCBkZWFscyB3aXRoIG9uZSBvZiB0aGUgc2V2ZXJhbCB3YXlzIF9fbnZfdGV4X3N1cmZfaGFuZGxlcgovLyBpcyBjYWxsZWQgYnkgQ1VEQSBoZWFkZXJzLiBJbiB0aGUgZW5kLCBlYWNoIG9mIHRoZSBvdmVybG9hZHMgZG9lcyB0aGUgc2FtZQovLyBqb2IgLS0gaXQgZmlndXJlcyBvdXQgd2hpY2ggYF9fdGV4X2ZldGNoX3Y0OjpydW5gIHZhcmlhbnQgc2hvdWxkIGJlIHVzZWQgdG8KLy8gZmV0Y2ggdGV4dHVyZSBkYXRhIGFuZCB3aGljaCBgX19jb252ZXJ0OjpydW5gIGlzIG5lZWRlZCB0byBjb252ZXJ0IGl0IGludG8KLy8gYXBwcm9wcmlhdGUgcmV0dXJuIHR5cGUuCgovLyBfX252X3RleF9zdXJmX2hhbmRsZXIoIl9fdGV4Li4uIiwgJnJldCwgY3VkYVRleHR1cmVPYmplY3RfdCBoYW5kbGUsIGFyZ3MuLi4pOwovLyAgIERhdGEgdHlwZSBhbmQgcmV0dXJuIHR5cGUgYXJlIGJhc2VkIG9uIHJldC4KdGVtcGxhdGUgPGNsYXNzIF9fb3AsIGNsYXNzIF9fVCwgY2xhc3MuLi4gX19BcmdzPgpfX2RldmljZV9fIHN0YXRpYyB2b2lkIF9fdGV4X2ZldGNoKF9fVCAqX19wdHIsIGN1ZGFUZXh0dXJlT2JqZWN0X3QgX19oYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19BcmdzLi4uIF9fYXJncykgewogIHVzaW5nIF9fRmV0Y2hUID0gdHlwZW5hbWUgX19UeXBlSW5mb1Q8X19UPjo6X19mZXRjaF90OwogICpfX3B0ciA9IF9fY29udmVydDxfX1QsIF9fRmV0Y2hUPjo6X19ydW4oCiAgICAgIF9fdGV4X2ZldGNoX3Y0PF9fb3A+Ojp0ZW1wbGF0ZSBfX3J1bjxfX0ZldGNoVD4oX19oYW5kbGUsIF9fYXJncy4uLikpOwp9CgovLyB0ZXh0dXJlPD4gb2JqZWN0cyBnZXQgbWFnaWNhbGx5IGNvbnZlcnRlZCBpbnRvIGEgdGV4dHVyZSByZWZlcmVuY2UuICBIb3dldmVyLAovLyB0aGVyZSdzIG5vIHdheSB0byBjb252ZXJ0IHRoZW0gdG8gY3VkYVRleHR1cmVPYmplY3RfdCBvbiBDKysgbGV2ZWwuIFNvLCB3ZQovLyBjaGVhdCBhIGJpdCBhbmQgdXNlIGlubGluZSBhc3NlbWJseSB0byBkbyBpdC4gSXQgY29zdHMgdXMgYW4gZXh0cmEgcmVnaXN0ZXIKLy8gYW5kIGEgbW92ZSwgYnV0IHRoYXQgaXMgZWFzeSBmb3IgcHR4YXMgdG8gb3B0aW1pemUgYXdheS4KdGVtcGxhdGUgPGNsYXNzIF9fVD4KX19kZXZpY2VfXyBjdWRhVGV4dHVyZU9iamVjdF90IF9fdGV4X2hhbmRsZV90b19vYmooX19UIF9faGFuZGxlKSB7CiAgY3VkYVRleHR1cmVPYmplY3RfdCBfX29iajsKICBhc20oIm1vdi5iNjQgJTAsICUxOyAiIDogIj1sIihfX29iaikgOiAibCIoX19oYW5kbGUpKTsKICByZXR1cm4gX19vYmo7Cn0KCi8vIF9fbnZfdGV4X3N1cmZfaGFuZGxlciAoIl9fdGV4Li4uIiwgJnJldCwgdGV4dHVyZVJlZmVyZW5jZSwgYXJncy4uLik7Ci8vICAgRGF0YSB0eXBlIGFuZCByZXR1cm4gdHlwZSBpcyBiYXNlZCBvbiByZXQuCnRlbXBsYXRlIDxjbGFzcyBfX29wLCBjbGFzcyBfX1QsIGNsYXNzIF9fSGFuZGxlVCwgY2xhc3MuLi4gX19BcmdzPgpfX2RldmljZV9fIHN0YXRpYyB2b2lkIF9fdGV4X2ZldGNoKF9fVCAqX19wdHIsIF9fSGFuZGxlVCBfX2hhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0FyZ3MuLi4gX19hcmdzKSB7CiAgdXNpbmcgX19GZXRjaFQgPSB0eXBlbmFtZSBfX1R5cGVJbmZvVDxfX1Q+OjpfX2ZldGNoX3Q7CiAgKl9fcHRyID0gX19jb252ZXJ0PF9fVCwgX19GZXRjaFQ+OjpfX3J1bigKICAgICAgX190ZXhfZmV0Y2hfdjQ8X19vcD46OnRlbXBsYXRlIF9fcnVuPF9fRmV0Y2hUPigKICAgICAgICAgIF9fdGV4X2hhbmRsZV90b19vYmooX19oYW5kbGUpLCBfX2FyZ3MuLi4pKTsKfQoKLy8gX19udl90ZXhfc3VyZl9oYW5kbGVyICgiX190ZXguLi4iLCAmdHlwZV9kdW1teSwgJnJldCwgdGV4dHVyZTwuLi4+LCBhcmdzLi4uKTsKLy8gY3VkYVJlYWRNb2RlTm9ybWFsaXplZEZsb2F0IGZldGNoZXMgYWx3YXlzIHJldHVybiBmbG9hdDQuCnRlbXBsYXRlIDxjbGFzcyBfX29wLCBjbGFzcyBfX0RhdGFULCBjbGFzcyBfX1JldFQsIGludCBfX1RleFQsIGNsYXNzLi4uIF9fQXJncz4KX19kZXZpY2VfXyBzdGF0aWMgdm9pZApfX3RleF9mZXRjaChfX0RhdGFUICosIF9fUmV0VCAqX19wdHIsCiAgICAgICAgICAgIHRleHR1cmU8X19EYXRhVCwgX19UZXhULCBjdWRhUmVhZE1vZGVOb3JtYWxpemVkRmxvYXQ+IF9faGFuZGxlLAogICAgICAgICAgICBfX0FyZ3MuLi4gX19hcmdzKSB7CiAgdXNpbmcgX19GZXRjaFQgPSB0eXBlbmFtZSBfX1R5cGVJbmZvVDxfX0RhdGFUPjo6X19mZXRjaF90OwogICpfX3B0ciA9IF9fY29udmVydDxfX1JldFQsIGZsb2F0ND46Ol9fcnVuKAogICAgICBfX3RleF9mZXRjaF92NDxfX29wPjo6dGVtcGxhdGUgX19ydW48X19GZXRjaFQ+KAogICAgICAgICAgX190ZXhfaGFuZGxlX3RvX29iaihfX2hhbmRsZSksIF9fYXJncy4uLikpOwp9CgovLyBfX252X3RleF9zdXJmX2hhbmRsZXIgKCJfX3RleC4uLiIsICZ0eXBlX2R1bW15LCAmcmV0LCB0ZXh0dXJlPC4uLj4sIGFyZ3MuLi4pOwovLyBGb3IgY3VkYVJlYWRNb2RlRWxlbWVudFR5cGUgZmV0Y2ggcmV0dXJuIHR5cGUgaXMgYmFzZWQgb24gdHlwZV9kdW1teS4KdGVtcGxhdGUgPGNsYXNzIF9fb3AsIGNsYXNzIF9fRGF0YVQsIGNsYXNzIF9fUmV0VCwgaW50IF9fVGV4VCwgY2xhc3MuLi4gX19BcmdzPgpfX2RldmljZV9fIHN0YXRpYyB2b2lkCl9fdGV4X2ZldGNoKF9fRGF0YVQgKiwgX19SZXRUICpfX3B0ciwKICAgICAgICAgICAgdGV4dHVyZTxfX0RhdGFULCBfX1RleFQsIGN1ZGFSZWFkTW9kZUVsZW1lbnRUeXBlPiBfX2hhbmRsZSwKICAgICAgICAgICAgX19BcmdzLi4uIF9fYXJncykgewogIHVzaW5nIF9fRmV0Y2hUID0gdHlwZW5hbWUgX19UeXBlSW5mb1Q8X19EYXRhVD46Ol9fZmV0Y2hfdDsKICAqX19wdHIgPSBfX2NvbnZlcnQ8X19SZXRULCBfX0ZldGNoVD46Ol9fcnVuKAogICAgICBfX3RleF9mZXRjaF92NDxfX29wPjo6dGVtcGxhdGUgX19ydW48X19GZXRjaFQ+KAogICAgICAgICAgX190ZXhfaGFuZGxlX3RvX29iaihfX2hhbmRsZSksIF9fYXJncy4uLikpOwp9Cn0gLy8gbmFtZXNwYWNlIF9fY3VkYV90ZXgKfSAvLyBuYW1lc3BhY2UKI3ByYWdtYSBwb3BfbWFjcm8oIl9fQVNNX09VVCIpCiNwcmFnbWEgcG9wX21hY3JvKCJfX0FTTV9PVVRQIikKI3ByYWdtYSBwb3BfbWFjcm8oIl9fQXJncyIpCiNwcmFnbWEgcG9wX21hY3JvKCJfX0lEIikKI3ByYWdtYSBwb3BfbWFjcm8oIl9fSURWIikKI3ByYWdtYSBwb3BfbWFjcm8oIl9fSU1QTF8yREdBVEhFUiIpCiNwcmFnbWEgcG9wX21hY3JvKCJfX0lNUExfQUxJQVMiKQojcHJhZ21hIHBvcF9tYWNybygiX19JTVBMX0FMSUFTSSIpCiNwcmFnbWEgcG9wX21hY3JvKCJfX0lNUExfRjEiKQojcHJhZ21hIHBvcF9tYWNybygiX19JTVBMX0YzIikKI3ByYWdtYSBwb3BfbWFjcm8oIl9fSU1QTF9GM04iKQojcHJhZ21hIHBvcF9tYWNybygiX19JTVBMX0YzUyIpCiNwcmFnbWEgcG9wX21hY3JvKCJfX0lNUExfUyIpCiNwcmFnbWEgcG9wX21hY3JvKCJfX0lNUExfUzMiKQojcHJhZ21hIHBvcF9tYWNybygiX19JTVBMX1MzSSIpCiNwcmFnbWEgcG9wX21hY3JvKCJfX0lNUExfUzNOIikKI3ByYWdtYSBwb3BfbWFjcm8oIl9fSU1QTF9TM05JIikKI3ByYWdtYSBwb3BfbWFjcm8oIl9fSU1QTF9TM1MiKQojcHJhZ21hIHBvcF9tYWNybygiX19JTVBMX1MzU0kiKQojcHJhZ21hIHBvcF9tYWNybygiX19JTVBMX1NJIikKI3ByYWdtYSBwb3BfbWFjcm8oIl9fTCIpCiNwcmFnbWEgcG9wX21hY3JvKCJfX1NUUklQX1BBUkVOUyIpCiNlbmRpZiAvLyBfX0NMQU5HX0NVREFfVEVYVFVSRV9JTlRSSU5TSUNTX0hfXwoALyo9PT0tLS0tIGFsdGl2ZWMuaCAtIFN0YW5kYXJkIGhlYWRlciBmb3IgdHlwZSBnZW5lcmljIG1hdGggLS0tLS0tLS0tLS0tLS0tPT09KlwKICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKXCo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ki8KCiNpZm5kZWYgX19BTFRJVkVDX0gKI2RlZmluZSBfX0FMVElWRUNfSAoKI2lmbmRlZiBfX0FMVElWRUNfXwojZXJyb3IgIkFsdGlWZWMgc3VwcG9ydCBub3QgZW5hYmxlZCIKI2VuZGlmCgovKiBDb25zdGFudHMgZm9yIG1hcHBpbmcgQ1I2IGJpdHMgdG8gcHJlZGljYXRlIHJlc3VsdC4gKi8KCiNkZWZpbmUgX19DUjZfRVEgMAojZGVmaW5lIF9fQ1I2X0VRX1JFViAxCiNkZWZpbmUgX19DUjZfTFQgMgojZGVmaW5lIF9fQ1I2X0xUX1JFViAzCiNkZWZpbmUgX19DUjZfR1QgNAojZGVmaW5lIF9fQ1I2X0dUX1JFViA1CiNkZWZpbmUgX19DUjZfU08gNgojZGVmaW5lIF9fQ1I2X1NPX1JFViA3CgovKiBDb25zdGFudHMgZm9yIHZlY190ZXN0X2RhdGFfY2xhc3MgKi8KI2RlZmluZSBfX1ZFQ19DTEFTU19GUF9TVUJOT1JNQUxfTiAoMSA8PCAwKQojZGVmaW5lIF9fVkVDX0NMQVNTX0ZQX1NVQk5PUk1BTF9QICgxIDw8IDEpCiNkZWZpbmUgX19WRUNfQ0xBU1NfRlBfU1VCTk9STUFMIChfX1ZFQ19DTEFTU19GUF9TVUJOT1JNQUxfUCB8IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fVkVDX0NMQVNTX0ZQX1NVQk5PUk1BTF9OKQojZGVmaW5lIF9fVkVDX0NMQVNTX0ZQX1pFUk9fTiAoMTw8MikKI2RlZmluZSBfX1ZFQ19DTEFTU19GUF9aRVJPX1AgKDE8PDMpCiNkZWZpbmUgX19WRUNfQ0xBU1NfRlBfWkVSTyAoX19WRUNfQ0xBU1NfRlBfWkVST19QICAgICAgICAgICB8IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX1ZFQ19DTEFTU19GUF9aRVJPX04pCiNkZWZpbmUgX19WRUNfQ0xBU1NfRlBfSU5GSU5JVFlfTiAoMTw8NCkKI2RlZmluZSBfX1ZFQ19DTEFTU19GUF9JTkZJTklUWV9QICgxPDw1KQojZGVmaW5lIF9fVkVDX0NMQVNTX0ZQX0lORklOSVRZIChfX1ZFQ19DTEFTU19GUF9JTkZJTklUWV9QICAgfCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fVkVDX0NMQVNTX0ZQX0lORklOSVRZX04pCiNkZWZpbmUgX19WRUNfQ0xBU1NfRlBfTkFOICgxPDw2KQojZGVmaW5lIF9fVkVDX0NMQVNTX0ZQX05PVF9OT1JNQUwgKF9fVkVDX0NMQVNTX0ZQX05BTiAgICAgICAgfCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19WRUNfQ0xBU1NfRlBfU1VCTk9STUFMICB8IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX1ZFQ19DTEFTU19GUF9aRVJPICAgICAgIHwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fVkVDX0NMQVNTX0ZQX0lORklOSVRZKQoKI2RlZmluZSBfX0FUVFJTX29fYWkgX19hdHRyaWJ1dGVfXygoX19vdmVybG9hZGFibGVfXywgX19hbHdheXNfaW5saW5lX18pKQoKI2luY2x1ZGUgPHN0ZGRlZi5oPgoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haSB2ZWNfcGVybSgKICAgIHZlY3RvciBzaWduZWQgY2hhciBfX2EsIHZlY3RvciBzaWduZWQgY2hhciBfX2IsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYyk7CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3Blcm0odmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IsCiAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYyk7CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfcGVybSh2ZWN0b3IgYm9vbCBjaGFyIF9fYSwgdmVjdG9yIGJvb2wgY2hhciBfX2IsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYyk7CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY19wZXJtKHZlY3RvciBzaWduZWQgc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaWduZWQgc2hvcnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYyk7CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY19wZXJtKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IsCiAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYyk7CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBzaG9ydCBfX0FUVFJTX29fYWkgdmVjX3Blcm0oCiAgICB2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsIHZlY3RvciBib29sIHNob3J0IF9fYiwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19jKTsKCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBwaXhlbCBfX0FUVFJTX29fYWkgdmVjX3Blcm0odmVjdG9yIHBpeGVsIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgcGl4ZWwgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYyk7CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgaW50IF9fQVRUUlNfb19haSB2ZWNfcGVybSh2ZWN0b3Igc2lnbmVkIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaWduZWQgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19jKTsKCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpIHZlY19wZXJtKAogICAgdmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2MpOwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgaW50IF9fQVRUUlNfb19haQp2ZWNfcGVybSh2ZWN0b3IgYm9vbCBpbnQgX19hLCB2ZWN0b3IgYm9vbCBpbnQgX19iLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2MpOwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGZsb2F0IF9fQVRUUlNfb19haSB2ZWNfcGVybSh2ZWN0b3IgZmxvYXQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBmbG9hdCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19jKTsKCiNpZmRlZiBfX1ZTWF9fCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19wZXJtKHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iLAogICAgICAgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2MpOwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX3Blcm0odmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iLAogICAgICAgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2MpOwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfcGVybSh2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19iLAogICAgICAgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2MpOwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGRvdWJsZSBfX0FUVFJTX29fYWkgdmVjX3Blcm0odmVjdG9yIGRvdWJsZSBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBkb3VibGUgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2MpOwojZW5kaWYKCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfeG9yKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKTsKCi8qIHZlY19hYnMgKi8KCiNkZWZpbmUgX19idWlsdGluX2FsdGl2ZWNfYWJzX3YxNnFpIHZlY19hYnMKI2RlZmluZSBfX2J1aWx0aW5fYWx0aXZlY19hYnNfdjhoaSB2ZWNfYWJzCiNkZWZpbmUgX19idWlsdGluX2FsdGl2ZWNfYWJzX3Y0c2kgdmVjX2FicwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfYWJzKHZlY3RvciBzaWduZWQgY2hhciBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm1heHNiKF9fYSwgLV9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY19hYnModmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm1heHNoKF9fYSwgLV9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfYWJzKHZlY3RvciBzaWduZWQgaW50IF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bWF4c3coX19hLCAtX19hKTsKfQoKI2lmZGVmIF9fUE9XRVI4X1ZFQ1RPUl9fCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfYWJzKHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bWF4c2QoX19hLCAtX19hKTsKfQojZW5kaWYKCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkgdmVjX2Ficyh2ZWN0b3IgZmxvYXQgX19hKSB7CiNpZmRlZiBfX1ZTWF9fCiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfeHZhYnNzcChfX2EpOwojZWxzZQogIHZlY3RvciB1bnNpZ25lZCBpbnQgX19yZXMgPQogICAgICAodmVjdG9yIHVuc2lnbmVkIGludClfX2EgJiAodmVjdG9yIHVuc2lnbmVkIGludCkoMHg3RkZGRkZGRik7CiAgcmV0dXJuICh2ZWN0b3IgZmxvYXQpX19yZXM7CiNlbmRpZgp9CgojaWZkZWYgX19WU1hfXwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZG91YmxlIF9fQVRUUlNfb19haSB2ZWNfYWJzKHZlY3RvciBkb3VibGUgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfeHZhYnNkcChfX2EpOwp9CiNlbmRpZgoKLyogdmVjX2Fic3MgKi8KI2RlZmluZSBfX2J1aWx0aW5fYWx0aXZlY19hYnNzX3YxNnFpIHZlY19hYnNzCiNkZWZpbmUgX19idWlsdGluX2FsdGl2ZWNfYWJzc192OGhpIHZlY19hYnNzCiNkZWZpbmUgX19idWlsdGluX2FsdGl2ZWNfYWJzc192NHNpIHZlY19hYnNzCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19hYnNzKHZlY3RvciBzaWduZWQgY2hhciBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm1heHNiKAogICAgICBfX2EsIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdWJzYnMoKHZlY3RvciBzaWduZWQgY2hhcikoMCksIF9fYSkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfYWJzcyh2ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bWF4c2goCiAgICAgIF9fYSwgX19idWlsdGluX2FsdGl2ZWNfdnN1YnNocygodmVjdG9yIHNpZ25lZCBzaG9ydCkoMCksIF9fYSkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX2Fic3ModmVjdG9yIHNpZ25lZCBpbnQgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtYXhzdygKICAgICAgX19hLCBfX2J1aWx0aW5fYWx0aXZlY192c3Vic3dzKCh2ZWN0b3Igc2lnbmVkIGludCkoMCksIF9fYSkpOwp9CgovKiB2ZWNfYWJzZCAqLwojaWYgZGVmaW5lZChfX1BPV0VSOV9WRUNUT1JfXykKCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfYWJzZCh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192YWJzZHViKF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfYWJzZCh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZhYnNkdWgoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfYWJzZCh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZhYnNkdXcoX19hLCBfX2IpOwp9CgojZW5kaWYgLyogRW5kIF9fUE9XRVI5X1ZFQ1RPUl9fICovCgovKiB2ZWNfYWRkICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19hZGQodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2EgKyBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX2FkZCh2ZWN0b3IgYm9vbCBjaGFyIF9fYSwgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIHNpZ25lZCBjaGFyKV9fYSArIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfYWRkKHZlY3RvciBzaWduZWQgY2hhciBfX2EsIHZlY3RvciBib29sIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYSArICh2ZWN0b3Igc2lnbmVkIGNoYXIpX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX2FkZCh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2EgKyBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfYWRkKHZlY3RvciBib29sIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSArIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19hZGQodmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgYm9vbCBjaGFyIF9fYikgewogIHJldHVybiBfX2EgKyAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY19hZGQodmVjdG9yIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19hICsgX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY19hZGQodmVjdG9yIGJvb2wgc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNob3J0IF9fYikgewogIHJldHVybiAodmVjdG9yIHNob3J0KV9fYSArIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfYWRkKHZlY3RvciBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19hICsgKHZlY3RvciBzaG9ydClfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX2FkZCh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYSArIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfYWRkKHZlY3RvciBib29sIHNob3J0IF9fYSwgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYSArIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfYWRkKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciBib29sIHNob3J0IF9fYikgewogIHJldHVybiBfX2EgKyAodmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX2FkZCh2ZWN0b3IgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgaW50IF9fYikgewogIHJldHVybiBfX2EgKyBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY19hZGQodmVjdG9yIGJvb2wgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgaW50IF9fYikgewogIHJldHVybiAodmVjdG9yIGludClfX2EgKyBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY19hZGQodmVjdG9yIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgaW50IF9fYikgewogIHJldHVybiBfX2EgKyAodmVjdG9yIGludClfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19hZGQodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYSArIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX2FkZCh2ZWN0b3IgYm9vbCBpbnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGludClfX2EgKyBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19hZGQodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIHZlY3RvciBib29sIGludCBfX2IpIHsKICByZXR1cm4gX19hICsgKHZlY3RvciB1bnNpZ25lZCBpbnQpX19iOwp9CgojaWZkZWYgX19QT1dFUjhfVkVDVE9SX18Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19hZGQodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19hICsgX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfYWRkKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2EgKyBfX2I7Cn0KCiNpZmRlZiBfX1NJWkVPRl9JTlQxMjhfXwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fQVRUUlNfb19haQp2ZWNfYWRkKHZlY3RvciBzaWduZWQgX19pbnQxMjggX19hLCB2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fYikgewogIHJldHVybiBfX2EgKyBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCBfX0FUVFJTX29fYWkKdmVjX2FkZCh2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19hLCB2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19iKSB7CiAgcmV0dXJuIF9fYSArIF9fYjsKfQojZW5kaWYKCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKdmVjX2FkZF91MTI4KHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZhZGR1cW0oX19hLCBfX2IpOwp9CiNlbGlmIGRlZmluZWQoX19WU1hfXykKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19hZGQodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgLy8gTGl0dGxlIGVuZGlhbiBzeXN0ZW1zIG9uIENQVSdzIHByaW9yIHRvIFBvd2VyOCBkb24ndCByZWFsbHkgZXhpc3QKICAvLyBzbyBzY2FsYXJpemluZyBpcyBmaW5lLgogIHJldHVybiBfX2EgKyBfX2I7CiNlbHNlCiAgdmVjdG9yIHVuc2lnbmVkIGludCBfX3JlcyA9CiAgICAgICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYSArICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYjsKICB2ZWN0b3IgdW5zaWduZWQgaW50IF9fY2FycnkgPSBfX2J1aWx0aW5fYWx0aXZlY192YWRkY3V3KAogICAgICAodmVjdG9yIHVuc2lnbmVkIGludClfX2EsICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYik7CiAgX19jYXJyeSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKCh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2NhcnJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19jYXJyeSwgMCwgMCwgMCwgNywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUsIDAsIDAsIDAsIDApOwogIHJldHVybiAodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpKF9fcmVzICsgX19jYXJyeSk7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfYWRkKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyl2ZWNfYWRkKCh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYik7Cn0KI2VuZGlmIC8vIF9fUE9XRVI4X1ZFQ1RPUl9fCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpIHZlY19hZGQodmVjdG9yIGZsb2F0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBmbG9hdCBfX2IpIHsKICByZXR1cm4gX19hICsgX19iOwp9CgojaWZkZWYgX19WU1hfXwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZG91YmxlIF9fQVRUUlNfb19haSB2ZWNfYWRkKHZlY3RvciBkb3VibGUgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBkb3VibGUgX19iKSB7CiAgcmV0dXJuIF9fYSArIF9fYjsKfQojZW5kaWYgLy8gX19WU1hfXwoKLyogdmVjX2FkZGUgKi8KCiNpZmRlZiBfX1BPV0VSOF9WRUNUT1JfXwojaWZkZWYgX19TSVpFT0ZfSU5UMTI4X18Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBfX2ludDEyOCBfX0FUVFJTX29fYWkKdmVjX2FkZGUodmVjdG9yIHNpZ25lZCBfX2ludDEyOCBfX2EsIHZlY3RvciBzaWduZWQgX19pbnQxMjggX19iLAogICAgICAgICB2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192YWRkZXVxbShfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fQVRUUlNfb19haQp2ZWNfYWRkZSh2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19hLCB2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19iLAogICAgICAgICB2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19jKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZhZGRldXFtKF9fYSwgX19iLCBfX2MpOwp9CiNlbmRpZgoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQp2ZWNfYWRkZV91MTI4KHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iLAogICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYykgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19idWlsdGluX2FsdGl2ZWNfdmFkZGV1cW0oX19hLCBfX2IsIF9fYyk7Cn0KI2VuZGlmCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX2FkZGUodmVjdG9yIHNpZ25lZCBpbnQgX19hLCB2ZWN0b3Igc2lnbmVkIGludCBfX2IsCiAgICAgICAgIHZlY3RvciBzaWduZWQgaW50IF9fYykgewogIHZlY3RvciBzaWduZWQgaW50IF9fbWFzayA9IHsxLCAxLCAxLCAxfTsKICB2ZWN0b3Igc2lnbmVkIGludCBfX2NhcnJ5ID0gX19jICYgX19tYXNrOwogIHJldHVybiB2ZWNfYWRkKHZlY19hZGQoX19hLCBfX2IpLCBfX2NhcnJ5KTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX2FkZGUodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iLAogICAgICAgICB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYykgewogIHZlY3RvciB1bnNpZ25lZCBpbnQgX19tYXNrID0gezEsIDEsIDEsIDF9OwogIHZlY3RvciB1bnNpZ25lZCBpbnQgX19jYXJyeSA9IF9fYyAmIF9fbWFzazsKICByZXR1cm4gdmVjX2FkZCh2ZWNfYWRkKF9fYSwgX19iKSwgX19jYXJyeSk7Cn0KCi8qIHZlY19hZGRlYyAqLwoKI2lmZGVmIF9fUE9XRVI4X1ZFQ1RPUl9fCiNpZmRlZiBfX1NJWkVPRl9JTlQxMjhfXwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fQVRUUlNfb19haQp2ZWNfYWRkZWModmVjdG9yIHNpZ25lZCBfX2ludDEyOCBfX2EsIHZlY3RvciBzaWduZWQgX19pbnQxMjggX19iLAogICAgICAgICAgdmVjdG9yIHNpZ25lZCBfX2ludDEyOCBfX2MpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmFkZGVjdXEoX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCBfX0FUVFJTX29fYWkKdmVjX2FkZGVjKHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCBfX2EsIHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCBfX2IsCiAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19jKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZhZGRlY3VxKF9fYSwgX19iLCBfX2MpOwp9CiNlbmRpZgoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQp2ZWNfYWRkZWNfdTEyOCh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYiwKICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19jKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2J1aWx0aW5fYWx0aXZlY192YWRkZWN1cShfX2EsIF9fYiwgX19jKTsKfQoKI2lmZGVmIF9fcG93ZXJwYzY0X18Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19hZGRlYyh2ZWN0b3Igc2lnbmVkIGludCBfX2EsIHZlY3RvciBzaWduZWQgaW50IF9fYiwKICAgICAgICAgIHZlY3RvciBzaWduZWQgaW50IF9fYykgewoKICBzaWduZWQgaW50IF9fcmVzdWx0WzRdOwogIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgaSsrKSB7CiAgICB1bnNpZ25lZCBpbnQgX190ZW1wYSA9ICh1bnNpZ25lZCBpbnQpIF9fYVtpXTsKICAgIHVuc2lnbmVkIGludCBfX3RlbXBiID0gKHVuc2lnbmVkIGludCkgX19iW2ldOwogICAgdW5zaWduZWQgaW50IF9fdGVtcGMgPSAodW5zaWduZWQgaW50KSBfX2NbaV07CiAgICBfX3RlbXBjID0gX190ZW1wYyAmIDB4MDAwMDAwMDE7CiAgICB1bnNpZ25lZCBsb25nIGxvbmcgX19sb25nYSA9ICh1bnNpZ25lZCBsb25nIGxvbmcpIF9fdGVtcGE7CiAgICB1bnNpZ25lZCBsb25nIGxvbmcgX19sb25nYiA9ICh1bnNpZ25lZCBsb25nIGxvbmcpIF9fdGVtcGI7CiAgICB1bnNpZ25lZCBsb25nIGxvbmcgX19sb25nYyA9ICh1bnNpZ25lZCBsb25nIGxvbmcpIF9fdGVtcGM7CiAgICB1bnNpZ25lZCBsb25nIGxvbmcgX19zdW0gPSBfX2xvbmdhICsgX19sb25nYiArIF9fbG9uZ2M7CiAgICB1bnNpZ25lZCBsb25nIGxvbmcgX19yZXMgPSAoX19zdW0gPj4gMzIpICYgMHgwMTsKICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3RlbXByZXMgPSAodW5zaWduZWQgaW50KSBfX3JlczsKICAgIF9fcmVzdWx0W2ldID0gKHNpZ25lZCBpbnQpIF9fdGVtcHJlczsKICB9CgogIHZlY3RvciBzaWduZWQgaW50IHJldCA9IHsgX19yZXN1bHRbMF0sIF9fcmVzdWx0WzFdLCBfX3Jlc3VsdFsyXSwgX19yZXN1bHRbM10gfTsKICByZXR1cm4gcmV0Owp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfYWRkZWModmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iLAogICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGludCBfX2MpIHsKCiAgdW5zaWduZWQgaW50IF9fcmVzdWx0WzRdOwogIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgaSsrKSB7CiAgICB1bnNpZ25lZCBpbnQgX190ZW1wYyA9IF9fY1tpXSAmIDE7CiAgICB1bnNpZ25lZCBsb25nIGxvbmcgX19sb25nYSA9ICh1bnNpZ25lZCBsb25nIGxvbmcpIF9fYVtpXTsKICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2xvbmdiID0gKHVuc2lnbmVkIGxvbmcgbG9uZykgX19iW2ldOwogICAgdW5zaWduZWQgbG9uZyBsb25nIF9fbG9uZ2MgPSAodW5zaWduZWQgbG9uZyBsb25nKSBfX3RlbXBjOwogICAgdW5zaWduZWQgbG9uZyBsb25nIF9fc3VtID0gX19sb25nYSArIF9fbG9uZ2IgKyBfX2xvbmdjOwogICAgdW5zaWduZWQgbG9uZyBsb25nIF9fcmVzID0gKF9fc3VtID4+IDMyKSAmIDB4MDE7CiAgICB1bnNpZ25lZCBsb25nIGxvbmcgX190ZW1wcmVzID0gKHVuc2lnbmVkIGludCkgX19yZXM7CiAgICBfX3Jlc3VsdFtpXSA9IChzaWduZWQgaW50KSBfX3RlbXByZXM7CiAgfQoKICB2ZWN0b3IgdW5zaWduZWQgaW50IHJldCA9IHsgX19yZXN1bHRbMF0sIF9fcmVzdWx0WzFdLCBfX3Jlc3VsdFsyXSwgX19yZXN1bHRbM10gfTsKICByZXR1cm4gcmV0Owp9CiNlbmRpZiAvLyBfX3Bvd2VycGM2NF9fCiNlbmRpZiAvLyBfX1BPV0VSOF9WRUNUT1JfXwoKLyogdmVjX3ZhZGR1Ym0gKi8KCiNkZWZpbmUgX19idWlsdGluX2FsdGl2ZWNfdmFkZHVibSB2ZWNfdmFkZHVibQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfdmFkZHVibSh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYSArIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfdmFkZHVibSh2ZWN0b3IgYm9vbCBjaGFyIF9fYSwgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIHNpZ25lZCBjaGFyKV9fYSArIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfdmFkZHVibSh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgYm9vbCBjaGFyIF9fYikgewogIHJldHVybiBfX2EgKyAodmVjdG9yIHNpZ25lZCBjaGFyKV9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY192YWRkdWJtKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYSArIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY192YWRkdWJtKHZlY3RvciBib29sIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSArIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY192YWRkdWJtKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIGJvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gX19hICsgKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYjsKfQoKLyogdmVjX3ZhZGR1aG0gKi8KCiNkZWZpbmUgX19idWlsdGluX2FsdGl2ZWNfdmFkZHVobSB2ZWNfdmFkZHVobQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfdmFkZHVobSh2ZWN0b3Igc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19hICsgX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY192YWRkdWhtKHZlY3RvciBib29sIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2hvcnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3Igc2hvcnQpX19hICsgX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY192YWRkdWhtKHZlY3RvciBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYSArICh2ZWN0b3Igc2hvcnQpX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY192YWRkdWhtKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19hICsgX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY192YWRkdWhtKHZlY3RvciBib29sIHNob3J0IF9fYSwgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYSArIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfdmFkZHVobSh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgYm9vbCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19hICsgKHZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2I7Cn0KCi8qIHZlY192YWRkdXdtICovCgojZGVmaW5lIF9fYnVpbHRpbl9hbHRpdmVjX3ZhZGR1d20gdmVjX3ZhZGR1d20KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY192YWRkdXdtKHZlY3RvciBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgaW50IF9fYikgewogIHJldHVybiBfX2EgKyBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY192YWRkdXdtKHZlY3RvciBib29sIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBpbnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgaW50KV9fYSArIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX3ZhZGR1d20odmVjdG9yIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGludCBfX2IpIHsKICByZXR1cm4gX19hICsgKHZlY3RvciBpbnQpX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfdmFkZHV3bSh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19hICsgX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfdmFkZHV3bSh2ZWN0b3IgYm9vbCBpbnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGludClfX2EgKyBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY192YWRkdXdtKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCB2ZWN0b3IgYm9vbCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYSArICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYjsKfQoKLyogdmVjX3ZhZGRmcCAqLwoKI2RlZmluZSBfX2J1aWx0aW5fYWx0aXZlY192YWRkZnAgdmVjX3ZhZGRmcAoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGZsb2F0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKdmVjX3ZhZGRmcCh2ZWN0b3IgZmxvYXQgX19hLCB2ZWN0b3IgZmxvYXQgX19iKSB7CiAgcmV0dXJuIF9fYSArIF9fYjsKfQoKLyogdmVjX2FkZGMgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfYWRkYyh2ZWN0b3Igc2lnbmVkIGludCBfX2EsIHZlY3RvciBzaWduZWQgaW50IF9fYikgewogIHJldHVybiAodmVjdG9yIHNpZ25lZCBpbnQpX19idWlsdGluX2FsdGl2ZWNfdmFkZGN1dygodmVjdG9yIHVuc2lnbmVkIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19hZGRjKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192YWRkY3V3KF9fYSwgX19iKTsKfQoKI2lmZGVmIF9fUE9XRVI4X1ZFQ1RPUl9fCiNpZmRlZiBfX1NJWkVPRl9JTlQxMjhfXwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fQVRUUlNfb19haQp2ZWNfYWRkYyh2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fYSwgdmVjdG9yIHNpZ25lZCBfX2ludDEyOCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBzaWduZWQgX19pbnQxMjgpX19idWlsdGluX2FsdGl2ZWNfdmFkZGN1cSgKICAgICAgKHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOClfX2EsICh2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjgpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fQVRUUlNfb19haQp2ZWNfYWRkYyh2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19hLCB2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZhZGRjdXEoX19hLCBfX2IpOwp9CiNlbmRpZgoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQp2ZWNfYWRkY191MTI4KHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2J1aWx0aW5fYWx0aXZlY192YWRkY3VxKF9fYSwgX19iKTsKfQojZW5kaWYgLy8gZGVmaW5lZChfX1BPV0VSOF9WRUNUT1JfXykgJiYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQoKLyogdmVjX3ZhZGRjdXcgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQp2ZWNfdmFkZGN1dyh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmFkZGN1dyhfX2EsIF9fYik7Cn0KCi8qIHZlY19hZGRzICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19hZGRzKHZlY3RvciBzaWduZWQgY2hhciBfX2EsIHZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmFkZHNicyhfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX2FkZHModmVjdG9yIGJvb2wgY2hhciBfX2EsIHZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmFkZHNicygodmVjdG9yIHNpZ25lZCBjaGFyKV9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfYWRkcyh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgYm9vbCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192YWRkc2JzKF9fYSwgKHZlY3RvciBzaWduZWQgY2hhcilfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX2FkZHModmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmFkZHVicyhfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfYWRkcyh2ZWN0b3IgYm9vbCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZhZGR1YnMoKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19hZGRzKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIGJvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmFkZHVicyhfX2EsICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY19hZGRzKHZlY3RvciBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192YWRkc2hzKF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfYWRkcyh2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192YWRkc2hzKCh2ZWN0b3Igc2hvcnQpX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY19hZGRzKHZlY3RvciBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZhZGRzaHMoX19hLCAodmVjdG9yIHNob3J0KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX2FkZHModmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192YWRkdWhzKF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfYWRkcyh2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmFkZHVocygodmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfYWRkcyh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgYm9vbCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmFkZHVocyhfX2EsICh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX2FkZHModmVjdG9yIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZhZGRzd3MoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgaW50IF9fQVRUUlNfb19haSB2ZWNfYWRkcyh2ZWN0b3IgYm9vbCBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192YWRkc3dzKCh2ZWN0b3IgaW50KV9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX2FkZHModmVjdG9yIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmFkZHN3cyhfX2EsICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19hZGRzKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192YWRkdXdzKF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX2FkZHModmVjdG9yIGJvb2wgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmFkZHV3cygodmVjdG9yIHVuc2lnbmVkIGludClfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19hZGRzKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCB2ZWN0b3IgYm9vbCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZhZGR1d3MoX19hLCAodmVjdG9yIHVuc2lnbmVkIGludClfX2IpOwp9CgovKiB2ZWNfdmFkZHNicyAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfdmFkZHNicyh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZhZGRzYnMoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY192YWRkc2JzKHZlY3RvciBib29sIGNoYXIgX19hLCB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZhZGRzYnMoKHZlY3RvciBzaWduZWQgY2hhcilfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3ZhZGRzYnModmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIGJvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmFkZHNicyhfX2EsICh2ZWN0b3Igc2lnbmVkIGNoYXIpX19iKTsKfQoKLyogdmVjX3ZhZGR1YnMgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfdmFkZHVicyh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192YWRkdWJzKF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY192YWRkdWJzKHZlY3RvciBib29sIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmFkZHVicygodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3ZhZGR1YnModmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgYm9vbCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192YWRkdWJzKF9fYSwgKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYik7Cn0KCi8qIHZlY192YWRkc2hzICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY192YWRkc2hzKHZlY3RvciBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192YWRkc2hzKF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfdmFkZHNocyh2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192YWRkc2hzKCh2ZWN0b3Igc2hvcnQpX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY192YWRkc2hzKHZlY3RvciBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZhZGRzaHMoX19hLCAodmVjdG9yIHNob3J0KV9fYik7Cn0KCi8qIHZlY192YWRkdWhzICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY192YWRkdWhzKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmFkZHVocyhfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3ZhZGR1aHModmVjdG9yIGJvb2wgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZhZGR1aHMoKHZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3ZhZGR1aHModmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIGJvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZhZGR1aHMoX19hLCAodmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYik7Cn0KCi8qIHZlY192YWRkc3dzICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgaW50IF9fQVRUUlNfb19haSB2ZWNfdmFkZHN3cyh2ZWN0b3IgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmFkZHN3cyhfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY192YWRkc3dzKHZlY3RvciBib29sIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZhZGRzd3MoKHZlY3RvciBpbnQpX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgaW50IF9fQVRUUlNfb19haSB2ZWNfdmFkZHN3cyh2ZWN0b3IgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192YWRkc3dzKF9fYSwgKHZlY3RvciBpbnQpX19iKTsKfQoKLyogdmVjX3ZhZGR1d3MgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY192YWRkdXdzKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192YWRkdXdzKF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX3ZhZGR1d3ModmVjdG9yIGJvb2wgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmFkZHV3cygodmVjdG9yIHVuc2lnbmVkIGludClfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY192YWRkdXdzKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCB2ZWN0b3IgYm9vbCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZhZGR1d3MoX19hLCAodmVjdG9yIHVuc2lnbmVkIGludClfX2IpOwp9CgojaWYgZGVmaW5lZChfX1BPV0VSOF9WRUNUT1JfXykgJiYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKSAmJiAgICAgICAgICAgICAgICAgICAgXAogICAgZGVmaW5lZChfX1NJWkVPRl9JTlQxMjhfXykKLyogdmVjX3ZhZGR1cW0gKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgX19pbnQxMjggX19BVFRSU19vX2FpCnZlY192YWRkdXFtKHZlY3RvciBzaWduZWQgX19pbnQxMjggX19hLCB2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fYikgewogIHJldHVybiBfX2EgKyBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCBfX0FUVFJTX29fYWkKdmVjX3ZhZGR1cW0odmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fYSwgdmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fYikgewogIHJldHVybiBfX2EgKyBfX2I7Cn0KCi8qIHZlY192YWRkZXVxbSAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBfX2ludDEyOCBfX0FUVFJTX29fYWkKdmVjX3ZhZGRldXFtKHZlY3RvciBzaWduZWQgX19pbnQxMjggX19hLCB2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fYiwKICAgICAgICAgICAgIHZlY3RvciBzaWduZWQgX19pbnQxMjggX19jKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZhZGRldXFtKF9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19BVFRSU19vX2FpCnZlY192YWRkZXVxbSh2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19hLCB2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19iLAogICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192YWRkZXVxbShfX2EsIF9fYiwgX19jKTsKfQoKLyogdmVjX3ZhZGRjdXEgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgX19pbnQxMjggX19BVFRSU19vX2FpCnZlY192YWRkY3VxKHZlY3RvciBzaWduZWQgX19pbnQxMjggX19hLCB2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192YWRkY3VxKF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fQVRUUlNfb19haQp2ZWNfdmFkZGN1cSh2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19hLCB2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZhZGRjdXEoX19hLCBfX2IpOwp9CgovKiB2ZWNfdmFkZGVjdXEgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgX19pbnQxMjggX19BVFRSU19vX2FpCnZlY192YWRkZWN1cSh2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fYSwgdmVjdG9yIHNpZ25lZCBfX2ludDEyOCBfX2IsCiAgICAgICAgICAgICB2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192YWRkZWN1cShfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fQVRUUlNfb19haQp2ZWNfdmFkZGVjdXEodmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fYSwgdmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fYiwKICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCBfX2MpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmFkZGVjdXEoX19hLCBfX2IsIF9fYyk7Cn0KI2VuZGlmIC8vIGRlZmluZWQoX19QT1dFUjhfVkVDVE9SX18pICYmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKCi8qIHZlY19hbmQgKi8KCiNkZWZpbmUgX19idWlsdGluX2FsdGl2ZWNfdmFuZCB2ZWNfYW5kCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19hbmQodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2EgJiBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX2FuZCh2ZWN0b3IgYm9vbCBjaGFyIF9fYSwgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIHNpZ25lZCBjaGFyKV9fYSAmIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfYW5kKHZlY3RvciBzaWduZWQgY2hhciBfX2EsIHZlY3RvciBib29sIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYSAmICh2ZWN0b3Igc2lnbmVkIGNoYXIpX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX2FuZCh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2EgJiBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfYW5kKHZlY3RvciBib29sIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSAmIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19hbmQodmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgYm9vbCBjaGFyIF9fYikgewogIHJldHVybiBfX2EgJiAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBjaGFyIF9fQVRUUlNfb19haSB2ZWNfYW5kKHZlY3RvciBib29sIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYSAmIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfYW5kKHZlY3RvciBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYSAmIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfYW5kKHZlY3RvciBib29sIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaG9ydCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBzaG9ydClfX2EgJiBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaG9ydCBfX0FUVFJTX29fYWkgdmVjX2FuZCh2ZWN0b3Igc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYSAmICh2ZWN0b3Igc2hvcnQpX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY19hbmQodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiBfX2EgJiBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX2FuZCh2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2EgJiBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX2FuZCh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgYm9vbCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19hICYgKHZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfYW5kKHZlY3RvciBib29sIHNob3J0IF9fYSwgdmVjdG9yIGJvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYSAmIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX2FuZCh2ZWN0b3IgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgaW50IF9fYikgewogIHJldHVybiBfX2EgJiBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY19hbmQodmVjdG9yIGJvb2wgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgaW50IF9fYikgewogIHJldHVybiAodmVjdG9yIGludClfX2EgJiBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY19hbmQodmVjdG9yIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgaW50IF9fYikgewogIHJldHVybiBfX2EgJiAodmVjdG9yIGludClfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19hbmQodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYSAmIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX2FuZCh2ZWN0b3IgYm9vbCBpbnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGludClfX2EgJiBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19hbmQodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIHZlY3RvciBib29sIGludCBfX2IpIHsKICByZXR1cm4gX19hICYgKHZlY3RvciB1bnNpZ25lZCBpbnQpX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBpbnQgX19BVFRSU19vX2FpIHZlY19hbmQodmVjdG9yIGJvb2wgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGludCBfX2IpIHsKICByZXR1cm4gX19hICYgX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpIHZlY19hbmQodmVjdG9yIGZsb2F0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBmbG9hdCBfX2IpIHsKICB2ZWN0b3IgdW5zaWduZWQgaW50IF9fcmVzID0KICAgICAgKHZlY3RvciB1bnNpZ25lZCBpbnQpX19hICYgKHZlY3RvciB1bnNpZ25lZCBpbnQpX19iOwogIHJldHVybiAodmVjdG9yIGZsb2F0KV9fcmVzOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpIHZlY19hbmQodmVjdG9yIGJvb2wgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBmbG9hdCBfX2IpIHsKICB2ZWN0b3IgdW5zaWduZWQgaW50IF9fcmVzID0KICAgICAgKHZlY3RvciB1bnNpZ25lZCBpbnQpX19hICYgKHZlY3RvciB1bnNpZ25lZCBpbnQpX19iOwogIHJldHVybiAodmVjdG9yIGZsb2F0KV9fcmVzOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpIHZlY19hbmQodmVjdG9yIGZsb2F0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGludCBfX2IpIHsKICB2ZWN0b3IgdW5zaWduZWQgaW50IF9fcmVzID0KICAgICAgKHZlY3RvciB1bnNpZ25lZCBpbnQpX19hICYgKHZlY3RvciB1bnNpZ25lZCBpbnQpX19iOwogIHJldHVybiAodmVjdG9yIGZsb2F0KV9fcmVzOwp9CgojaWZkZWYgX19WU1hfXwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZG91YmxlIF9fQVRUUlNfb19haSB2ZWNfYW5kKHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGRvdWJsZSBfX2IpIHsKICB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fcmVzID0KICAgICAgKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19hICYgKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19iOwogIHJldHVybiAodmVjdG9yIGRvdWJsZSlfX3JlczsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGRvdWJsZSBfX0FUVFJTX29fYWkKdmVjX2FuZCh2ZWN0b3IgZG91YmxlIF9fYSwgdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYikgewogIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19yZXMgPQogICAgICAodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2EgJiAodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2I7CiAgcmV0dXJuICh2ZWN0b3IgZG91YmxlKV9fcmVzOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZG91YmxlIF9fQVRUUlNfb19haSB2ZWNfYW5kKHZlY3RvciBkb3VibGUgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBkb3VibGUgX19iKSB7CiAgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3JlcyA9CiAgICAgICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYSAmICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYjsKICByZXR1cm4gKHZlY3RvciBkb3VibGUpX19yZXM7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfYW5kKHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYSAmIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19hbmQodmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2EgJiBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfYW5kKHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2EgJiAodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfYW5kKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2EgJiBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19hbmQodmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19hICYgX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfYW5kKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYSAmICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfYW5kKHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2EsIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19hICYgX19iOwp9CiNlbmRpZgoKLyogdmVjX3ZhbmQgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3ZhbmQodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2EgJiBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3ZhbmQodmVjdG9yIGJvb2wgY2hhciBfX2EsIHZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBzaWduZWQgY2hhcilfX2EgJiBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3ZhbmQodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIGJvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gX19hICYgKHZlY3RvciBzaWduZWQgY2hhcilfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfdmFuZCh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2EgJiBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfdmFuZCh2ZWN0b3IgYm9vbCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EgJiBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfdmFuZCh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciBib29sIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYSAmICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGNoYXIgX19BVFRSU19vX2FpIHZlY192YW5kKHZlY3RvciBib29sIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBjaGFyIF9fYikgewogIHJldHVybiBfX2EgJiBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaG9ydCBfX0FUVFJTX29fYWkgdmVjX3ZhbmQodmVjdG9yIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYSAmIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfdmFuZCh2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNob3J0IF9fYikgewogIHJldHVybiAodmVjdG9yIHNob3J0KV9fYSAmIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfdmFuZCh2ZWN0b3Igc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIHNob3J0IF9fYikgewogIHJldHVybiBfX2EgJiAodmVjdG9yIHNob3J0KV9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfdmFuZCh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYSAmIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfdmFuZCh2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2EgJiBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3ZhbmQodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIGJvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYSAmICh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3ZhbmQodmVjdG9yIGJvb2wgc2hvcnQgX19hLCB2ZWN0b3IgYm9vbCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19hICYgX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgaW50IF9fQVRUUlNfb19haSB2ZWNfdmFuZCh2ZWN0b3IgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGludCBfX2IpIHsKICByZXR1cm4gX19hICYgX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgaW50IF9fQVRUUlNfb19haSB2ZWNfdmFuZCh2ZWN0b3IgYm9vbCBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgaW50IF9fYikgewogIHJldHVybiAodmVjdG9yIGludClfX2EgJiBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY192YW5kKHZlY3RvciBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYSAmICh2ZWN0b3IgaW50KV9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX3ZhbmQodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYSAmIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX3ZhbmQodmVjdG9yIGJvb2wgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBpbnQpX19hICYgX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfdmFuZCh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIGJvb2wgaW50IF9fYikgewogIHJldHVybiBfX2EgJiAodmVjdG9yIHVuc2lnbmVkIGludClfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGludCBfX0FUVFJTX29fYWkgdmVjX3ZhbmQodmVjdG9yIGJvb2wgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYSAmIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGZsb2F0IF9fQVRUUlNfb19haSB2ZWNfdmFuZCh2ZWN0b3IgZmxvYXQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBmbG9hdCBfX2IpIHsKICB2ZWN0b3IgdW5zaWduZWQgaW50IF9fcmVzID0KICAgICAgKHZlY3RvciB1bnNpZ25lZCBpbnQpX19hICYgKHZlY3RvciB1bnNpZ25lZCBpbnQpX19iOwogIHJldHVybiAodmVjdG9yIGZsb2F0KV9fcmVzOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpIHZlY192YW5kKHZlY3RvciBib29sIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGZsb2F0IF9fYikgewogIHZlY3RvciB1bnNpZ25lZCBpbnQgX19yZXMgPQogICAgICAodmVjdG9yIHVuc2lnbmVkIGludClfX2EgJiAodmVjdG9yIHVuc2lnbmVkIGludClfX2I7CiAgcmV0dXJuICh2ZWN0b3IgZmxvYXQpX19yZXM7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkgdmVjX3ZhbmQodmVjdG9yIGZsb2F0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBpbnQgX19iKSB7CiAgdmVjdG9yIHVuc2lnbmVkIGludCBfX3JlcyA9CiAgICAgICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYSAmICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYjsKICByZXR1cm4gKHZlY3RvciBmbG9hdClfX3JlczsKfQoKI2lmZGVmIF9fVlNYX18Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY192YW5kKHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYSAmIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY192YW5kKHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2EsIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiAodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19hICYgX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX3ZhbmQodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYSAmICh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY192YW5kKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2EgJiBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY192YW5kKHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2EsIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYSAmIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX3ZhbmQodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19hICYgKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY192YW5kKHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2EsIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19hICYgX19iOwp9CiNlbmRpZgoKLyogdmVjX2FuZGMgKi8KCiNkZWZpbmUgX19idWlsdGluX2FsdGl2ZWNfdmFuZGMgdmVjX2FuZGMKCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX2FuZGModmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2EgJiB+X19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19hbmRjKHZlY3RvciBib29sIGNoYXIgX19hLCB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3Igc2lnbmVkIGNoYXIpX19hICYgfl9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfYW5kYyh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgYm9vbCBjaGFyIF9fYikgewogIHJldHVybiBfX2EgJiB+KHZlY3RvciBzaWduZWQgY2hhcilfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfYW5kYyh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2EgJiB+X19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX2FuZGModmVjdG9yIGJvb2wgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hICYgfl9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19hbmRjKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIGJvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gX19hICYgfih2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGNoYXIgX19BVFRSU19vX2FpIHZlY19hbmRjKHZlY3RvciBib29sIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBjaGFyIF9fYikgewogIHJldHVybiBfX2EgJiB+X19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY19hbmRjKHZlY3RvciBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNob3J0IF9fYikgewogIHJldHVybiBfX2EgJiB+X19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY19hbmRjKHZlY3RvciBib29sIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2hvcnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3Igc2hvcnQpX19hICYgfl9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfYW5kYyh2ZWN0b3Igc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIHNob3J0IF9fYikgewogIHJldHVybiBfX2EgJiB+KHZlY3RvciBzaG9ydClfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX2FuZGModmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiBfX2EgJiB+X19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY19hbmRjKHZlY3RvciBib29sIHNob3J0IF9fYSwgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYSAmIH5fX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX2FuZGModmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIGJvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYSAmIH4odmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgc2hvcnQgX19BVFRSU19vX2FpCnZlY19hbmRjKHZlY3RvciBib29sIHNob3J0IF9fYSwgdmVjdG9yIGJvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYSAmIH5fX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY19hbmRjKHZlY3RvciBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgaW50IF9fYikgewogIHJldHVybiBfX2EgJiB+X19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgaW50IF9fQVRUUlNfb19haSB2ZWNfYW5kYyh2ZWN0b3IgYm9vbCBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgaW50IF9fYikgewogIHJldHVybiAodmVjdG9yIGludClfX2EgJiB+X19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgaW50IF9fQVRUUlNfb19haSB2ZWNfYW5kYyh2ZWN0b3IgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgaW50IF9fYikgewogIHJldHVybiBfX2EgJiB+KHZlY3RvciBpbnQpX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfYW5kYyh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19hICYgfl9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX2FuZGModmVjdG9yIGJvb2wgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBpbnQpX19hICYgfl9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX2FuZGModmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIHZlY3RvciBib29sIGludCBfX2IpIHsKICByZXR1cm4gX19hICYgfih2ZWN0b3IgdW5zaWduZWQgaW50KV9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgaW50IF9fQVRUUlNfb19haSB2ZWNfYW5kYyh2ZWN0b3IgYm9vbCBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGludCBfX2IpIHsKICByZXR1cm4gX19hICYgfl9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGZsb2F0IF9fQVRUUlNfb19haSB2ZWNfYW5kYyh2ZWN0b3IgZmxvYXQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBmbG9hdCBfX2IpIHsKICB2ZWN0b3IgdW5zaWduZWQgaW50IF9fcmVzID0KICAgICAgKHZlY3RvciB1bnNpZ25lZCBpbnQpX19hICYgfih2ZWN0b3IgdW5zaWduZWQgaW50KV9fYjsKICByZXR1cm4gKHZlY3RvciBmbG9hdClfX3JlczsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGZsb2F0IF9fQVRUUlNfb19haSB2ZWNfYW5kYyh2ZWN0b3IgYm9vbCBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBmbG9hdCBfX2IpIHsKICB2ZWN0b3IgdW5zaWduZWQgaW50IF9fcmVzID0KICAgICAgKHZlY3RvciB1bnNpZ25lZCBpbnQpX19hICYgfih2ZWN0b3IgdW5zaWduZWQgaW50KV9fYjsKICByZXR1cm4gKHZlY3RvciBmbG9hdClfX3JlczsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGZsb2F0IF9fQVRUUlNfb19haSB2ZWNfYW5kYyh2ZWN0b3IgZmxvYXQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGludCBfX2IpIHsKICB2ZWN0b3IgdW5zaWduZWQgaW50IF9fcmVzID0KICAgICAgKHZlY3RvciB1bnNpZ25lZCBpbnQpX19hICYgfih2ZWN0b3IgdW5zaWduZWQgaW50KV9fYjsKICByZXR1cm4gKHZlY3RvciBmbG9hdClfX3JlczsKfQoKI2lmZGVmIF9fVlNYX18Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGRvdWJsZSBfX0FUVFJTX29fYWkgdmVjX2FuZGModmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGRvdWJsZSBfX2IpIHsKICB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fcmVzID0KICAgICAgKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19hICYgfih2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYjsKICByZXR1cm4gKHZlY3RvciBkb3VibGUpX19yZXM7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBkb3VibGUgX19BVFRSU19vX2FpCnZlY19hbmRjKHZlY3RvciBkb3VibGUgX19hLCB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3JlcyA9CiAgICAgICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYSAmIH4odmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2I7CiAgcmV0dXJuICh2ZWN0b3IgZG91YmxlKV9fcmVzOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZG91YmxlIF9fQVRUUlNfb19haSB2ZWNfYW5kYyh2ZWN0b3IgZG91YmxlIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGRvdWJsZSBfX2IpIHsKICB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fcmVzID0KICAgICAgKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19hICYgfih2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYjsKICByZXR1cm4gKHZlY3RvciBkb3VibGUpX19yZXM7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfYW5kYyh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2EgJiB+X19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX2FuZGModmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2EgJiB+X19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX2FuZGModmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYSAmIH4odmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfYW5kYyh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19hICYgfl9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX2FuZGModmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19hICYgfl9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX2FuZGModmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19hICYgfih2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfYW5kYyh2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYSAmIH5fX2I7Cn0KI2VuZGlmCgovKiB2ZWNfdmFuZGMgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3ZhbmRjKHZlY3RvciBzaWduZWQgY2hhciBfX2EsIHZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19hICYgfl9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfdmFuZGModmVjdG9yIGJvb2wgY2hhciBfX2EsIHZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBzaWduZWQgY2hhcilfX2EgJiB+X19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY192YW5kYyh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgYm9vbCBjaGFyIF9fYikgewogIHJldHVybiBfX2EgJiB+KHZlY3RvciBzaWduZWQgY2hhcilfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfdmFuZGModmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19hICYgfl9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY192YW5kYyh2ZWN0b3IgYm9vbCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EgJiB+X19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3ZhbmRjKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIGJvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gX19hICYgfih2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGNoYXIgX19BVFRSU19vX2FpCnZlY192YW5kYyh2ZWN0b3IgYm9vbCBjaGFyIF9fYSwgdmVjdG9yIGJvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gX19hICYgfl9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfdmFuZGModmVjdG9yIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNob3J0IF9fYikgewogIHJldHVybiBfX2EgJiB+X19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY192YW5kYyh2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaG9ydCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBzaG9ydClfX2EgJiB+X19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY192YW5kYyh2ZWN0b3Igc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19hICYgfih2ZWN0b3Igc2hvcnQpX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY192YW5kYyh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYSAmIH5fX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3ZhbmRjKHZlY3RvciBib29sIHNob3J0IF9fYSwgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYSAmIH5fX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3ZhbmRjKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciBib29sIHNob3J0IF9fYikgewogIHJldHVybiBfX2EgJiB+KHZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfdmFuZGModmVjdG9yIGJvb2wgc2hvcnQgX19hLCB2ZWN0b3IgYm9vbCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19hICYgfl9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX3ZhbmRjKHZlY3RvciBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGludCBfX2IpIHsKICByZXR1cm4gX19hICYgfl9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX3ZhbmRjKHZlY3RvciBib29sIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgaW50IF9fYikgewogIHJldHVybiAodmVjdG9yIGludClfX2EgJiB+X19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgaW50IF9fQVRUUlNfb19haSB2ZWNfdmFuZGModmVjdG9yIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYSAmIH4odmVjdG9yIGludClfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY192YW5kYyh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19hICYgfl9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX3ZhbmRjKHZlY3RvciBib29sIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYSAmIH5fX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY192YW5kYyh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIGJvb2wgaW50IF9fYikgewogIHJldHVybiBfX2EgJiB+KHZlY3RvciB1bnNpZ25lZCBpbnQpX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBpbnQgX19BVFRSU19vX2FpIHZlY192YW5kYyh2ZWN0b3IgYm9vbCBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYSAmIH5fX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkgdmVjX3ZhbmRjKHZlY3RvciBmbG9hdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBmbG9hdCBfX2IpIHsKICB2ZWN0b3IgdW5zaWduZWQgaW50IF9fcmVzID0KICAgICAgKHZlY3RvciB1bnNpZ25lZCBpbnQpX19hICYgfih2ZWN0b3IgdW5zaWduZWQgaW50KV9fYjsKICByZXR1cm4gKHZlY3RvciBmbG9hdClfX3JlczsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGZsb2F0IF9fQVRUUlNfb19haSB2ZWNfdmFuZGModmVjdG9yIGJvb2wgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGZsb2F0IF9fYikgewogIHZlY3RvciB1bnNpZ25lZCBpbnQgX19yZXMgPQogICAgICAodmVjdG9yIHVuc2lnbmVkIGludClfX2EgJiB+KHZlY3RvciB1bnNpZ25lZCBpbnQpX19iOwogIHJldHVybiAodmVjdG9yIGZsb2F0KV9fcmVzOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpIHZlY192YW5kYyh2ZWN0b3IgZmxvYXQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBpbnQgX19iKSB7CiAgdmVjdG9yIHVuc2lnbmVkIGludCBfX3JlcyA9CiAgICAgICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYSAmIH4odmVjdG9yIHVuc2lnbmVkIGludClfX2I7CiAgcmV0dXJuICh2ZWN0b3IgZmxvYXQpX19yZXM7Cn0KCiNpZmRlZiBfX1ZTWF9fCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfdmFuZGModmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19hICYgfl9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY192YW5kYyh2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19hLCB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYSAmIH5fX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfdmFuZGModmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYSAmIH4odmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfdmFuZGModmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYSAmIH5fX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY192YW5kYyh2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2EgJiB+X19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfdmFuZGModmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19hICYgfih2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfdmFuZGModmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYSwgdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2EgJiB+X19iOwp9CiNlbmRpZgoKLyogdmVjX2F2ZyAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfYXZnKHZlY3RvciBzaWduZWQgY2hhciBfX2EsIHZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmF2Z3NiKF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19hdmcodmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmF2Z3ViKF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfYXZnKHZlY3RvciBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZhdmdzaChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX2F2Zyh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3Zhdmd1aChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY19hdmcodmVjdG9yIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmF2Z3N3KF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX2F2Zyh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmF2Z3V3KF9fYSwgX19iKTsKfQoKLyogdmVjX3ZhdmdzYiAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKdmVjX3ZhdmdzYih2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZhdmdzYihfX2EsIF9fYik7Cn0KCi8qIHZlY192YXZndWIgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKdmVjX3Zhdmd1Yih2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192YXZndWIoX19hLCBfX2IpOwp9CgovKiB2ZWNfdmF2Z3NoICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQp2ZWNfdmF2Z3NoKHZlY3RvciBzaG9ydCBfX2EsIHZlY3RvciBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmF2Z3NoKF9fYSwgX19iKTsKfQoKLyogdmVjX3Zhdmd1aCAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKdmVjX3Zhdmd1aCh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3Zhdmd1aChfX2EsIF9fYik7Cn0KCi8qIHZlY192YXZnc3cgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQp2ZWNfdmF2Z3N3KHZlY3RvciBpbnQgX19hLCB2ZWN0b3IgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192YXZnc3coX19hLCBfX2IpOwp9CgovKiB2ZWNfdmF2Z3V3ICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKdmVjX3Zhdmd1dyh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmF2Z3V3KF9fYSwgX19iKTsKfQoKLyogdmVjX2NlaWwgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkgdmVjX2NlaWwodmVjdG9yIGZsb2F0IF9fYSkgewojaWZkZWYgX19WU1hfXwogIHJldHVybiBfX2J1aWx0aW5fdnN4X3h2cnNwaXAoX19hKTsKI2Vsc2UKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnJmaXAoX19hKTsKI2VuZGlmCn0KCiNpZmRlZiBfX1ZTWF9fCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBkb3VibGUgX19BVFRSU19vX2FpIHZlY19jZWlsKHZlY3RvciBkb3VibGUgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfeHZyZHBpcChfX2EpOwp9CiNlbmRpZgoKLyogdmVjX3JvdW5kcCAqLwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpIHZlY19yb3VuZHAodmVjdG9yIGZsb2F0IF9fYSkgewogIHJldHVybiB2ZWNfY2VpbChfX2EpOwp9CgojaWZkZWYgX19WU1hfXwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZG91YmxlIF9fQVRUUlNfb19haSB2ZWNfcm91bmRwKHZlY3RvciBkb3VibGUgX19hKSB7CiAgcmV0dXJuIHZlY19jZWlsKF9fYSk7Cn0KI2VuZGlmCgovKiB2ZWNfdnJmaXAgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCnZlY192cmZpcCh2ZWN0b3IgZmxvYXQgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZyZmlwKF9fYSk7Cn0KCi8qIHZlY19jbXBiICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgaW50IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKdmVjX2NtcGIodmVjdG9yIGZsb2F0IF9fYSwgdmVjdG9yIGZsb2F0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wYmZwKF9fYSwgX19iKTsKfQoKLyogdmVjX3ZjbXBiZnAgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQp2ZWNfdmNtcGJmcCh2ZWN0b3IgZmxvYXQgX19hLCB2ZWN0b3IgZmxvYXQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBiZnAoX19hLCBfX2IpOwp9CgovKiB2ZWNfY21wZXEgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGNoYXIgX19BVFRSU19vX2FpCnZlY19jbXBlcSh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXViKCh2ZWN0b3IgY2hhcilfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgY2hhcilfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfY21wZXEodmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBib29sIGNoYXIpX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdWIoKHZlY3RvciBjaGFyKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBjaGFyKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGNoYXIgX19BVFRSU19vX2FpCnZlY19jbXBlcSh2ZWN0b3IgYm9vbCBjaGFyIF9fYSwgdmVjdG9yIGJvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBib29sIGNoYXIpX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdWIoKHZlY3RvciBjaGFyKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBjaGFyKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfY21wZXEodmVjdG9yIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2hvcnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBzaG9ydClfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1aChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfY21wZXEodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiAodmVjdG9yIGJvb2wgc2hvcnQpX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdWgoKHZlY3RvciBzaG9ydClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHNob3J0KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfY21wZXEodmVjdG9yIGJvb2wgc2hvcnQgX19hLCB2ZWN0b3IgYm9vbCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBib29sIHNob3J0KV9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXVoKCh2ZWN0b3Igc2hvcnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBzaG9ydClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBpbnQgX19BVFRSU19vX2FpIHZlY19jbXBlcSh2ZWN0b3IgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGludCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBib29sIGludClfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1dyhfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGludCBfX0FUVFJTX29fYWkKdmVjX2NtcGVxKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiAodmVjdG9yIGJvb2wgaW50KV9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXV3KCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBpbnQgX19BVFRSU19vX2FpIHZlY19jbXBlcSh2ZWN0b3IgYm9vbCBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBpbnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBpbnQpX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdXcoKHZlY3RvciBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgaW50KV9fYik7Cn0KCiNpZmRlZiBfX1BPV0VSOF9WRUNUT1JfXwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19jbXBlcSh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiAodmVjdG9yIGJvb2wgbG9uZyBsb25nKV9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXVkKF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfY21wZXEodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBsb25nIGxvbmcpX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdWQoCiAgICAgICh2ZWN0b3IgbG9uZyBsb25nKV9fYSwgKHZlY3RvciBsb25nIGxvbmcpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfY21wZXEodmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYSwgdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYikgewogIHJldHVybiAodmVjdG9yIGJvb2wgbG9uZyBsb25nKV9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXVkKAogICAgICAodmVjdG9yIGxvbmcgbG9uZylfX2EsICh2ZWN0b3IgbG9uZyBsb25nKV9fYik7Cn0KI2VsaWYgZGVmaW5lZChfX1ZTWF9fKQpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19jbXBlcSh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYikgewogIHZlY3RvciBib29sIGludCBfX3dvcmRjbXAgPQogICAgICB2ZWNfY21wZXEoKHZlY3RvciBzaWduZWQgaW50KV9fYSwgKHZlY3RvciBzaWduZWQgaW50KV9fYik7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIF9fd29yZGNtcCAmPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3dvcmRjbXAsIF9fd29yZGNtcCwgMywgMCwgMSwgMik7CiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBsb25nIGxvbmcpX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX193b3JkY21wLCBfX3dvcmRjbXAsIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgMywgMyk7CiNlbHNlCiAgX193b3JkY21wICY9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fd29yZGNtcCwgX193b3JkY21wLCAxLCAyLCAzLCAwKTsKICByZXR1cm4gKHZlY3RvciBib29sIGxvbmcgbG9uZylfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3dvcmRjbXAsIF9fd29yZGNtcCwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAyLCAyKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX2NtcGVxKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiB2ZWNfY21wZXEoKHZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYSwgKHZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX2NtcGVxKHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2EsIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gdmVjX2NtcGVxKCh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2EsICh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2IpOwp9CiNlbmRpZgoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgaW50IF9fQVRUUlNfb19haSB2ZWNfY21wZXEodmVjdG9yIGZsb2F0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGZsb2F0IF9fYikgewojaWZkZWYgX19WU1hfXwogIHJldHVybiAodmVjdG9yIGJvb2wgaW50KV9fYnVpbHRpbl92c3hfeHZjbXBlcXNwKF9fYSwgX19iKTsKI2Vsc2UKICByZXR1cm4gKHZlY3RvciBib29sIGludClfX2J1aWx0aW5fYWx0aXZlY192Y21wZXFmcChfX2EsIF9fYik7CiNlbmRpZgp9CgojaWZkZWYgX19WU1hfXwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19jbXBlcSh2ZWN0b3IgZG91YmxlIF9fYSwgdmVjdG9yIGRvdWJsZSBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBib29sIGxvbmcgbG9uZylfX2J1aWx0aW5fdnN4X3h2Y21wZXFkcChfX2EsIF9fYik7Cn0KI2VuZGlmCgojaWYgZGVmaW5lZChfX1BPV0VSMTBfVkVDVE9SX18pICYmIGRlZmluZWQoX19TSVpFT0ZfSU5UMTI4X18pCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIF9faW50MTI4IF9fQVRUUlNfb19haQp2ZWNfY21wZXEodmVjdG9yIHNpZ25lZCBfX2ludDEyOCBfX2EsIHZlY3RvciBzaWduZWQgX19pbnQxMjggX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBfX2ludDEyOClfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1cSgKICAgICAgKHZlY3RvciBib29sIF9faW50MTI4KV9fYSwgKHZlY3RvciBib29sIF9faW50MTI4KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIF9faW50MTI4IF9fQVRUUlNfb19haQp2ZWNfY21wZXEodmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fYSwgdmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fYikgewogIHJldHVybiAodmVjdG9yIGJvb2wgX19pbnQxMjgpX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdXEoCiAgICAgICh2ZWN0b3IgYm9vbCBfX2ludDEyOClfX2EsICh2ZWN0b3IgYm9vbCBfX2ludDEyOClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBfX2ludDEyOCBfX0FUVFJTX29fYWkKdmVjX2NtcGVxKHZlY3RvciBib29sIF9faW50MTI4IF9fYSwgdmVjdG9yIGJvb2wgIF9faW50MTI4IF9fYikgewogIHJldHVybiAodmVjdG9yIGJvb2wgX19pbnQxMjgpX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdXEoX19hLCBfX2IpOwp9CiNlbmRpZgoKI2lmZGVmIF9fUE9XRVI5X1ZFQ1RPUl9fCi8qIHZlY19jbXBuZSAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgY2hhciBfX0FUVFJTX29fYWkKdmVjX2NtcG5lKHZlY3RvciBib29sIGNoYXIgX19hLCB2ZWN0b3IgYm9vbCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIGJvb2wgY2hhcilfX2J1aWx0aW5fYWx0aXZlY192Y21wbmViKCh2ZWN0b3IgY2hhcilfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBjaGFyKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGNoYXIgX19BVFRSU19vX2FpCnZlY19jbXBuZSh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBuZWIoKHZlY3RvciBjaGFyKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGNoYXIpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgY2hhciBfX0FUVFJTX29fYWkKdmVjX2NtcG5lKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBuZWIoKHZlY3RvciBjaGFyKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGNoYXIpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgc2hvcnQgX19BVFRSU19vX2FpCnZlY19jbXBuZSh2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsIHZlY3RvciBib29sIHNob3J0IF9fYikgewogIHJldHVybiAodmVjdG9yIGJvb2wgc2hvcnQpX19idWlsdGluX2FsdGl2ZWNfdmNtcG5laCgodmVjdG9yIHNob3J0KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBzaG9ydClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX2NtcG5lKHZlY3RvciBzaWduZWQgc2hvcnQgX19hLCB2ZWN0b3Igc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiAodmVjdG9yIGJvb2wgc2hvcnQpX19idWlsdGluX2FsdGl2ZWNfdmNtcG5laCgodmVjdG9yIHNob3J0KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBzaG9ydClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX2NtcG5lKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBib29sIHNob3J0KV9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBuZWgoKHZlY3RvciBzaG9ydClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3Igc2hvcnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgaW50IF9fQVRUUlNfb19haQp2ZWNfY21wbmUodmVjdG9yIGJvb2wgaW50IF9fYSwgdmVjdG9yIGJvb2wgaW50IF9fYikgewogIHJldHVybiAodmVjdG9yIGJvb2wgaW50KV9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBuZXcoKHZlY3RvciBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgaW50IF9fQVRUUlNfb19haQp2ZWNfY21wbmUodmVjdG9yIHNpZ25lZCBpbnQgX19hLCB2ZWN0b3Igc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBib29sIGludClfX2J1aWx0aW5fYWx0aXZlY192Y21wbmV3KCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGludCBfX0FUVFJTX29fYWkKdmVjX2NtcG5lKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiAodmVjdG9yIGJvb2wgaW50KV9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBuZXcoKHZlY3RvciBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgaW50IF9fQVRUUlNfb19haQp2ZWNfY21wbmUodmVjdG9yIGZsb2F0IF9fYSwgdmVjdG9yIGZsb2F0IF9fYikgewogIHJldHVybiAodmVjdG9yIGJvb2wgaW50KV9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBuZXcoKHZlY3RvciBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKI2lmIGRlZmluZWQoX19QT1dFUjEwX1ZFQ1RPUl9fKSAmJiBkZWZpbmVkKF9fU0laRU9GX0lOVDEyOF9fKQpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBfX2ludDEyOCBfX0FUVFJTX29fYWkKdmVjX2NtcG5lKHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCBfX2EsIHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBib29sIF9faW50MTI4KSB+KF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXVxKAogICAgICAodmVjdG9yIGJvb2wgX19pbnQxMjgpX19hLCAodmVjdG9yIGJvb2wgX19pbnQxMjgpX19iKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIF9faW50MTI4IF9fQVRUUlNfb19haQp2ZWNfY21wbmUodmVjdG9yIHNpZ25lZCBfX2ludDEyOCBfX2EsIHZlY3RvciBzaWduZWQgX19pbnQxMjggX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBfX2ludDEyOCkgfihfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1cSgKICAgICAgKHZlY3RvciBib29sIF9faW50MTI4KV9fYSwgKHZlY3RvciBib29sIF9faW50MTI4KV9fYikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBfX2ludDEyOCBfX0FUVFJTX29fYWkKdmVjX2NtcG5lKHZlY3RvciBib29sIF9faW50MTI4IF9fYSwgdmVjdG9yIGJvb2wgX19pbnQxMjggX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBfX2ludDEyOCkgfihfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1cShfX2EsIF9fYikpOwp9CiNlbmRpZgoKLyogdmVjX2NtcG5leiAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgY2hhciBfX0FUVFJTX29fYWkKdmVjX2NtcG5leih2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBuZXpiKCh2ZWN0b3IgY2hhcilfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgY2hhcilfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfY21wbmV6KHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBuZXpiKCh2ZWN0b3IgY2hhcilfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgY2hhcilfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX2NtcG5leih2ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBib29sIHNob3J0KV9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBuZXpoKCh2ZWN0b3Igc2hvcnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBzaG9ydClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX2NtcG5leih2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBzaG9ydClfX2J1aWx0aW5fYWx0aXZlY192Y21wbmV6aCgodmVjdG9yIHNob3J0KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3Igc2hvcnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgaW50IF9fQVRUUlNfb19haQp2ZWNfY21wbmV6KHZlY3RvciBzaWduZWQgaW50IF9fYSwgdmVjdG9yIHNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBpbnQpX19idWlsdGluX2FsdGl2ZWNfdmNtcG5lencoKHZlY3RvciBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGludCBfX0FUVFJTX29fYWkKdmVjX2NtcG5leih2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBib29sIGludClfX2J1aWx0aW5fYWx0aXZlY192Y21wbmV6dygodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX2NudGx6X2xzYmIodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSkgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmN0emxzYmIoX19hKTsKI2Vsc2UKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNsemxzYmIoX19hKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19jbnRsel9sc2JiKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSkgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmN0emxzYmIoX19hKTsKI2Vsc2UKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNsemxzYmIoX19hKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19jbnR0el9sc2JiKHZlY3RvciBzaWduZWQgY2hhciBfX2EpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbHpsc2JiKF9fYSk7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjdHpsc2JiKF9fYSk7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyBzaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfY250dHpfbHNiYih2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbHpsc2JiKF9fYSk7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjdHpsc2JiKF9fYSk7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfcGFyaXR5X2xzYmIodmVjdG9yIHVuc2lnbmVkIGludCBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnBydHlidyhfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfcGFyaXR5X2xzYmIodmVjdG9yIHNpZ25lZCBpbnQgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZwcnR5YncoX19hKTsKfQoKI2lmZGVmIF9fU0laRU9GX0lOVDEyOF9fCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCBfX0FUVFJTX29fYWkKdmVjX3Bhcml0eV9sc2JiKHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnBydHlicShfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19BVFRSU19vX2FpCnZlY19wYXJpdHlfbHNiYih2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192cHJ0eWJxKF9fYSk7Cn0KI2VuZGlmCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfcGFyaXR5X2xzYmIodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnBydHliZChfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfcGFyaXR5X2xzYmIodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZwcnR5YmQoX19hKTsKfQoKI2Vsc2UKLyogdmVjX2NtcG5lICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfY21wbmUodmVjdG9yIGJvb2wgY2hhciBfX2EsIHZlY3RvciBib29sIGNoYXIgX19iKSB7CiAgcmV0dXJuIH4odmVjX2NtcGVxKF9fYSwgX19iKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGNoYXIgX19BVFRSU19vX2FpCnZlY19jbXBuZSh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIH4odmVjX2NtcGVxKF9fYSwgX19iKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGNoYXIgX19BVFRSU19vX2FpCnZlY19jbXBuZSh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiB+KHZlY19jbXBlcShfX2EsIF9fYikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX2NtcG5lKHZlY3RvciBib29sIHNob3J0IF9fYSwgdmVjdG9yIGJvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIH4odmVjX2NtcGVxKF9fYSwgX19iKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfY21wbmUodmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciBzaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIH4odmVjX2NtcGVxKF9fYSwgX19iKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfY21wbmUodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiB+KHZlY19jbXBlcShfX2EsIF9fYikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBpbnQgX19BVFRSU19vX2FpCnZlY19jbXBuZSh2ZWN0b3IgYm9vbCBpbnQgX19hLCB2ZWN0b3IgYm9vbCBpbnQgX19iKSB7CiAgcmV0dXJuIH4odmVjX2NtcGVxKF9fYSwgX19iKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGludCBfX0FUVFJTX29fYWkKdmVjX2NtcG5lKHZlY3RvciBzaWduZWQgaW50IF9fYSwgdmVjdG9yIHNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIH4odmVjX2NtcGVxKF9fYSwgX19iKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGludCBfX0FUVFJTX29fYWkKdmVjX2NtcG5lKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiB+KHZlY19jbXBlcShfX2EsIF9fYikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBpbnQgX19BVFRSU19vX2FpCnZlY19jbXBuZSh2ZWN0b3IgZmxvYXQgX19hLCB2ZWN0b3IgZmxvYXQgX19iKSB7CiAgcmV0dXJuIH4odmVjX2NtcGVxKF9fYSwgX19iKSk7Cn0KI2VuZGlmCgojaWZkZWYgX19QT1dFUjhfVkVDVE9SX18Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfY21wbmUodmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYSwgdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYikgewogIHJldHVybiAodmVjdG9yIGJvb2wgbG9uZyBsb25nKQogICAgfihfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1ZCgodmVjdG9yIGxvbmcgbG9uZylfX2EsICh2ZWN0b3IgbG9uZyBsb25nKV9fYikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19jbXBuZSh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiAodmVjdG9yIGJvb2wgbG9uZyBsb25nKQogICAgfihfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1ZCgodmVjdG9yIGxvbmcgbG9uZylfX2EsICh2ZWN0b3IgbG9uZyBsb25nKV9fYikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19jbXBuZSh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBib29sIGxvbmcgbG9uZykKICAgIH4oX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdWQoKHZlY3RvciBsb25nIGxvbmcpX19hLCAodmVjdG9yIGxvbmcgbG9uZylfX2IpKTsKfQojZWxpZiBkZWZpbmVkKF9fVlNYX18pCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX2NtcG5lKHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2EsIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBib29sIGxvbmcgbG9uZyl+KAogICAgICB2ZWNfY21wZXEoKHZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYSwgKHZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19jbXBuZSh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiAodmVjdG9yIGJvb2wgbG9uZyBsb25nKX4oCiAgICAgIHZlY19jbXBlcSgodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19hLCAodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19iKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX2NtcG5lKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiAodmVjdG9yIGJvb2wgbG9uZyBsb25nKX4oCiAgICAgIHZlY19jbXBlcSgodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19hLCAodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19iKSk7Cn0KI2VuZGlmCgojaWZkZWYgX19WU1hfXwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19jbXBuZSh2ZWN0b3IgZG91YmxlIF9fYSwgdmVjdG9yIGRvdWJsZSBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBib29sIGxvbmcgbG9uZykKICAgIH4oX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdWQoKHZlY3RvciBsb25nIGxvbmcpX19hLCAodmVjdG9yIGxvbmcgbG9uZylfX2IpKTsKfQojZW5kaWYKCi8qIHZlY19jbXBndCAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgY2hhciBfX0FUVFJTX29fYWkKdmVjX2NtcGd0KHZlY3RvciBzaWduZWQgY2hhciBfX2EsIHZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBib29sIGNoYXIpX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c2IoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfY21wZ3QodmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBib29sIGNoYXIpX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dWIoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBzaG9ydCBfX0FUVFJTX29fYWkgdmVjX2NtcGd0KHZlY3RvciBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNob3J0IF9fYikgewogIHJldHVybiAodmVjdG9yIGJvb2wgc2hvcnQpX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c2goX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX2NtcGd0KHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBib29sIHNob3J0KV9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHVoKF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgaW50IF9fQVRUUlNfb19haSB2ZWNfY21wZ3QodmVjdG9yIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBpbnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBpbnQpX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c3coX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBpbnQgX19BVFRSU19vX2FpCnZlY19jbXBndCh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBib29sIGludClfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1dyhfX2EsIF9fYik7Cn0KCiNpZmRlZiBfX1BPV0VSOF9WRUNUT1JfXwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19jbXBndCh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiAodmVjdG9yIGJvb2wgbG9uZyBsb25nKV9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHNkKF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfY21wZ3QodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBsb25nIGxvbmcpX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dWQoX19hLCBfX2IpOwp9CiNlbGlmIGRlZmluZWQoX19WU1hfXykKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfY21wZ3QodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICB2ZWN0b3Igc2lnbmVkIGludCBfX3NndHcgPSAodmVjdG9yIHNpZ25lZCBpbnQpdmVjX2NtcGd0KAogICAgICAodmVjdG9yIHNpZ25lZCBpbnQpX19hLCAodmVjdG9yIHNpZ25lZCBpbnQpX19iKTsKICB2ZWN0b3IgdW5zaWduZWQgaW50IF9fdWd0dyA9ICh2ZWN0b3IgdW5zaWduZWQgaW50KXZlY19jbXBndCgKICAgICAgKHZlY3RvciB1bnNpZ25lZCBpbnQpX19hLCAodmVjdG9yIHVuc2lnbmVkIGludClfX2IpOwogIHZlY3RvciB1bnNpZ25lZCBpbnQgX19lcXcgPSAodmVjdG9yIHVuc2lnbmVkIGludCl2ZWNfY21wZXEoCiAgICAgICh2ZWN0b3Igc2lnbmVkIGludClfX2EsICh2ZWN0b3Igc2lnbmVkIGludClfX2IpOwojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICBfX3VndHcgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3VndHcsIF9fdWd0dywgMywgMCwgMSwgMikgJiBfX2VxdzsKICBfX3NndHcgfD0gKHZlY3RvciBzaWduZWQgaW50KV9fdWd0dzsKICByZXR1cm4gKHZlY3RvciBib29sIGxvbmcgbG9uZylfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3NndHcsIF9fc2d0dywgMSwgMSwgMywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzKTsKI2Vsc2UKICBfX3VndHcgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3VndHcsIF9fdWd0dywgMSwgMiwgMywgMCkgJiBfX2VxdzsKICBfX3NndHcgfD0gKHZlY3RvciBzaWduZWQgaW50KV9fdWd0dzsKICByZXR1cm4gKHZlY3RvciBib29sIGxvbmcgbG9uZylfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3NndHcsIF9fc2d0dywgMCwgMCwgMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX2NtcGd0KHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIHZlY3RvciB1bnNpZ25lZCBpbnQgX191Z3R3ID0gKHZlY3RvciB1bnNpZ25lZCBpbnQpdmVjX2NtcGd0KAogICAgICAodmVjdG9yIHVuc2lnbmVkIGludClfX2EsICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYik7CiAgdmVjdG9yIHVuc2lnbmVkIGludCBfX2VxdyA9ICh2ZWN0b3IgdW5zaWduZWQgaW50KXZlY19jbXBlcSgKICAgICAgKHZlY3RvciBzaWduZWQgaW50KV9fYSwgKHZlY3RvciBzaWduZWQgaW50KV9fYik7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIF9fZXF3ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX191Z3R3LCBfX3VndHcsIDMsIDAsIDEsIDIpICYgX19lcXc7CiAgX191Z3R3IHw9IF9fZXF3OwogIHJldHVybiAodmVjdG9yIGJvb2wgbG9uZyBsb25nKV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fdWd0dywgX191Z3R3LCAxLCAxLCAzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMpOwojZWxzZQogIF9fZXF3ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX191Z3R3LCBfX3VndHcsIDEsIDIsIDMsIDApICYgX19lcXc7CiAgX191Z3R3IHw9IF9fZXF3OwogIHJldHVybiAodmVjdG9yIGJvb2wgbG9uZyBsb25nKV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fdWd0dywgX191Z3R3LCAwLCAwLCAyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIpOwojZW5kaWYKfQojZW5kaWYKCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGludCBfX0FUVFJTX29fYWkgdmVjX2NtcGd0KHZlY3RvciBmbG9hdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBmbG9hdCBfX2IpIHsKI2lmZGVmIF9fVlNYX18KICByZXR1cm4gKHZlY3RvciBib29sIGludClfX2J1aWx0aW5fdnN4X3h2Y21wZ3RzcChfX2EsIF9fYik7CiNlbHNlCiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBpbnQpX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0ZnAoX19hLCBfX2IpOwojZW5kaWYKfQoKI2lmZGVmIF9fVlNYX18Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfY21wZ3QodmVjdG9yIGRvdWJsZSBfX2EsIHZlY3RvciBkb3VibGUgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBsb25nIGxvbmcpX19idWlsdGluX3ZzeF94dmNtcGd0ZHAoX19hLCBfX2IpOwp9CiNlbmRpZgoKI2lmIGRlZmluZWQoX19QT1dFUjEwX1ZFQ1RPUl9fKSAmJiBkZWZpbmVkKF9fU0laRU9GX0lOVDEyOF9fKQpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBfX2ludDEyOCBfX0FUVFJTX29fYWkKdmVjX2NtcGd0KHZlY3RvciBzaWduZWQgX19pbnQxMjggX19hLCB2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fYikgewogIHJldHVybiAodmVjdG9yIGJvb2wgX19pbnQxMjgpX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c3EoCiAgICAgICh2ZWN0b3IgYm9vbCBfX2ludDEyOClfX2EsICh2ZWN0b3IgYm9vbCBfX2ludDEyOClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBfX2ludDEyOCBfX0FUVFJTX29fYWkKdmVjX2NtcGd0KHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCBfX2EsIHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBib29sIF9faW50MTI4KV9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHVxKAogICAgICAodmVjdG9yIGJvb2wgX19pbnQxMjgpX19hLCAodmVjdG9yIGJvb2wgX19pbnQxMjgpX19iKTsKfQojZW5kaWYKCi8qIHZlY19jbXBnZSAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgY2hhciBfX0FUVFJTX29fYWkKdmVjX2NtcGdlKHZlY3RvciBzaWduZWQgY2hhciBfX2EsIHZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gfih2ZWNfY21wZ3QoX19iLCBfX2EpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgY2hhciBfX0FUVFJTX29fYWkKdmVjX2NtcGdlKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIH4odmVjX2NtcGd0KF9fYiwgX19hKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfY21wZ2UodmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciBzaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIH4odmVjX2NtcGd0KF9fYiwgX19hKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfY21wZ2UodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiB+KHZlY19jbXBndChfX2IsIF9fYSkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBpbnQgX19BVFRSU19vX2FpCnZlY19jbXBnZSh2ZWN0b3Igc2lnbmVkIGludCBfX2EsIHZlY3RvciBzaWduZWQgaW50IF9fYikgewogIHJldHVybiB+KHZlY19jbXBndChfX2IsIF9fYSkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBpbnQgX19BVFRSU19vX2FpCnZlY19jbXBnZSh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gfih2ZWNfY21wZ3QoX19iLCBfX2EpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgaW50IF9fQVRUUlNfb19haSB2ZWNfY21wZ2UodmVjdG9yIGZsb2F0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGZsb2F0IF9fYikgewojaWZkZWYgX19WU1hfXwogIHJldHVybiAodmVjdG9yIGJvb2wgaW50KV9fYnVpbHRpbl92c3hfeHZjbXBnZXNwKF9fYSwgX19iKTsKI2Vsc2UKICByZXR1cm4gKHZlY3RvciBib29sIGludClfX2J1aWx0aW5fYWx0aXZlY192Y21wZ2VmcChfX2EsIF9fYik7CiNlbmRpZgp9CgojaWZkZWYgX19WU1hfXwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19jbXBnZSh2ZWN0b3IgZG91YmxlIF9fYSwgdmVjdG9yIGRvdWJsZSBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBib29sIGxvbmcgbG9uZylfX2J1aWx0aW5fdnN4X3h2Y21wZ2VkcChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX2NtcGdlKHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIH4odmVjX2NtcGd0KF9fYiwgX19hKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX2NtcGdlKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiB+KHZlY19jbXBndChfX2IsIF9fYSkpOwp9CiNlbmRpZgoKI2lmIGRlZmluZWQoX19QT1dFUjEwX1ZFQ1RPUl9fKSAmJiBkZWZpbmVkKF9fU0laRU9GX0lOVDEyOF9fKQpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBfX2ludDEyOCBfX0FUVFJTX29fYWkKdmVjX2NtcGdlKHZlY3RvciBzaWduZWQgX19pbnQxMjggX19hLCB2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fYikgewogIHJldHVybiB+KHZlY19jbXBndChfX2IsIF9fYSkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBfX2ludDEyOCBfX0FUVFJTX29fYWkKdmVjX2NtcGdlKHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCBfX2EsIHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCBfX2IpIHsKICByZXR1cm4gfih2ZWNfY21wZ3QoX19iLCBfX2EpKTsKfQojZW5kaWYKCi8qIHZlY192Y21wZ2VmcCAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgaW50IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKdmVjX3ZjbXBnZWZwKHZlY3RvciBmbG9hdCBfX2EsIHZlY3RvciBmbG9hdCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBib29sIGludClfX2J1aWx0aW5fYWx0aXZlY192Y21wZ2VmcChfX2EsIF9fYik7Cn0KCi8qIHZlY192Y21wZ3RzYiAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgY2hhciBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCnZlY192Y21wZ3RzYih2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHNiKF9fYSwgX19iKTsKfQoKLyogdmVjX3ZjbXBndHViICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBjaGFyIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKdmVjX3ZjbXBndHViKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHViKF9fYSwgX19iKTsKfQoKLyogdmVjX3ZjbXBndHNoICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBzaG9ydCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCnZlY192Y21wZ3RzaCh2ZWN0b3Igc2hvcnQgX19hLCB2ZWN0b3Igc2hvcnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBzaG9ydClfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3RzaChfX2EsIF9fYik7Cn0KCi8qIHZlY192Y21wZ3R1aCAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgc2hvcnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQp2ZWNfdmNtcGd0dWgodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiAodmVjdG9yIGJvb2wgc2hvcnQpX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dWgoX19hLCBfX2IpOwp9CgovKiB2ZWNfdmNtcGd0c3cgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGludCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCnZlY192Y21wZ3Rzdyh2ZWN0b3IgaW50IF9fYSwgdmVjdG9yIGludCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBib29sIGludClfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3RzdyhfX2EsIF9fYik7Cn0KCi8qIHZlY192Y21wZ3R1dyAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgaW50IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKdmVjX3ZjbXBndHV3KHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiAodmVjdG9yIGJvb2wgaW50KV9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHV3KF9fYSwgX19iKTsKfQoKLyogdmVjX3ZjbXBndGZwICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQp2ZWNfdmNtcGd0ZnAodmVjdG9yIGZsb2F0IF9fYSwgdmVjdG9yIGZsb2F0IF9fYikgewogIHJldHVybiAodmVjdG9yIGJvb2wgaW50KV9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndGZwKF9fYSwgX19iKTsKfQoKLyogdmVjX2NtcGxlICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfY21wbGUodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiB2ZWNfY21wZ2UoX19iLCBfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfY21wbGUodmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gdmVjX2NtcGdlKF9fYiwgX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgc2hvcnQgX19BVFRSU19vX2FpCnZlY19jbXBsZSh2ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gdmVjX2NtcGdlKF9fYiwgX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgc2hvcnQgX19BVFRSU19vX2FpCnZlY19jbXBsZSh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIHZlY19jbXBnZShfX2IsIF9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGludCBfX0FUVFJTX29fYWkKdmVjX2NtcGxlKHZlY3RvciBzaWduZWQgaW50IF9fYSwgdmVjdG9yIHNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIHZlY19jbXBnZShfX2IsIF9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGludCBfX0FUVFJTX29fYWkKdmVjX2NtcGxlKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiB2ZWNfY21wZ2UoX19iLCBfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBpbnQgX19BVFRSU19vX2FpIHZlY19jbXBsZSh2ZWN0b3IgZmxvYXQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgZmxvYXQgX19iKSB7CiAgcmV0dXJuIHZlY19jbXBnZShfX2IsIF9fYSk7Cn0KCiNpZmRlZiBfX1ZTWF9fCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX2NtcGxlKHZlY3RvciBkb3VibGUgX19hLCB2ZWN0b3IgZG91YmxlIF9fYikgewogIHJldHVybiB2ZWNfY21wZ2UoX19iLCBfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19jbXBsZSh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiB2ZWNfY21wZ2UoX19iLCBfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19jbXBsZSh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gdmVjX2NtcGdlKF9fYiwgX19hKTsKfQojZW5kaWYKCiNpZiBkZWZpbmVkKF9fUE9XRVIxMF9WRUNUT1JfXykgJiYgZGVmaW5lZChfX1NJWkVPRl9JTlQxMjhfXykKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgX19pbnQxMjggX19BVFRSU19vX2FpCnZlY19jbXBsZSh2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fYSwgdmVjdG9yIHNpZ25lZCBfX2ludDEyOCBfX2IpIHsKICByZXR1cm4gdmVjX2NtcGdlKF9fYiwgX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgX19pbnQxMjggX19BVFRSU19vX2FpCnZlY19jbXBsZSh2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19hLCB2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19iKSB7CiAgcmV0dXJuIHZlY19jbXBnZShfX2IsIF9fYSk7Cn0KI2VuZGlmCgovKiB2ZWNfY21wbHQgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGNoYXIgX19BVFRSU19vX2FpCnZlY19jbXBsdCh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIHZlY19jbXBndChfX2IsIF9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGNoYXIgX19BVFRSU19vX2FpCnZlY19jbXBsdCh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiB2ZWNfY21wZ3QoX19iLCBfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBzaG9ydCBfX0FUVFJTX29fYWkgdmVjX2NtcGx0KHZlY3RvciBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNob3J0IF9fYikgewogIHJldHVybiB2ZWNfY21wZ3QoX19iLCBfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX2NtcGx0KHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gdmVjX2NtcGd0KF9fYiwgX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgaW50IF9fQVRUUlNfb19haSB2ZWNfY21wbHQodmVjdG9yIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBpbnQgX19iKSB7CiAgcmV0dXJuIHZlY19jbXBndChfX2IsIF9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGludCBfX0FUVFJTX29fYWkKdmVjX2NtcGx0KHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiB2ZWNfY21wZ3QoX19iLCBfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBpbnQgX19BVFRSU19vX2FpIHZlY19jbXBsdCh2ZWN0b3IgZmxvYXQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgZmxvYXQgX19iKSB7CiAgcmV0dXJuIHZlY19jbXBndChfX2IsIF9fYSk7Cn0KCiNpZmRlZiBfX1ZTWF9fCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX2NtcGx0KHZlY3RvciBkb3VibGUgX19hLCB2ZWN0b3IgZG91YmxlIF9fYikgewogIHJldHVybiB2ZWNfY21wZ3QoX19iLCBfX2EpOwp9CiNlbmRpZgoKI2lmIGRlZmluZWQoX19QT1dFUjEwX1ZFQ1RPUl9fKSAmJiBkZWZpbmVkKF9fU0laRU9GX0lOVDEyOF9fKQpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBfX2ludDEyOCBfX0FUVFJTX29fYWkKdmVjX2NtcGx0KHZlY3RvciBzaWduZWQgX19pbnQxMjggX19hLCB2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fYikgewogIHJldHVybiB2ZWNfY21wZ3QoX19iLCBfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBfX2ludDEyOCBfX0FUVFJTX29fYWkKdmVjX2NtcGx0KHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCBfX2EsIHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCBfX2IpIHsKICByZXR1cm4gdmVjX2NtcGd0KF9fYiwgX19hKTsKfQojZW5kaWYKCiNpZmRlZiBfX1ZTWF9fCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX2NtcGx0KHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIHZlY19jbXBndChfX2IsIF9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX2NtcGx0KHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiB2ZWNfY21wZ3QoX19iLCBfX2EpOwp9CiNlbmRpZgoKI2lmZGVmIF9fUE9XRVI4X1ZFQ1RPUl9fCi8qIHZlY19wb3BjbnQgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfcG9wY250KHZlY3RvciBzaWduZWQgY2hhciBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnBvcGNudGIoX19hKTsKfQpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3BvcGNudCh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnBvcGNudGIoX19hKTsKfQpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY19wb3BjbnQodmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnBvcGNudGgoX19hKTsKfQpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY19wb3BjbnQodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192cG9wY250aChfX2EpOwp9CnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19wb3BjbnQodmVjdG9yIHNpZ25lZCBpbnQgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3Zwb3BjbnR3KF9fYSk7Cn0Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX3BvcGNudCh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192cG9wY250dyhfX2EpOwp9CnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19wb3BjbnQodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3Zwb3BjbnRkKF9fYSk7Cn0Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX3BvcGNudCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192cG9wY250ZChfX2EpOwp9CgojZGVmaW5lIHZlY192Y2x6IHZlY19jbnRsegovKiB2ZWNfY250bHogKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX2NudGx6KHZlY3RvciBzaWduZWQgY2hhciBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNsemIoX19hKTsKfQpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX2NudGx6KHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y2x6YihfX2EpOwp9CnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY19jbnRseih2ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y2x6aChfX2EpOwp9CnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX2NudGx6KHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNsemgoX19hKTsKfQpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX2NudGx6KHZlY3RvciBzaWduZWQgaW50IF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y2x6dyhfX2EpOwp9CnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19jbnRseih2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y2x6dyhfX2EpOwp9CnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfY250bHoodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbHpkKF9fYSk7Cn0Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX2NudGx6KHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbHpkKF9fYSk7Cn0KI2VuZGlmCgojaWZkZWYgX19QT1dFUjlfVkVDVE9SX18KCi8qIHZlY19jbnR0eiAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfY250dHoodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y3R6YihfX2EpOwp9CnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfY250dHoodmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjdHpiKF9fYSk7Cn0Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX2NudHR6KHZlY3RvciBzaWduZWQgc2hvcnQgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjdHpoKF9fYSk7Cn0Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfY250dHoodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y3R6aChfX2EpOwp9CnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfY250dHoodmVjdG9yIHNpZ25lZCBpbnQgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjdHp3KF9fYSk7Cn0Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX2NudHR6KHZlY3RvciB1bnNpZ25lZCBpbnQgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjdHp3KF9fYSk7Cn0Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19jbnR0eih2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmN0emQoX19hKTsKfQpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfY250dHoodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmN0emQoX19hKTsKfQoKLyogdmVjX2ZpcnN0X21hdGNoX2luZGV4ICovCgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBfX0FUVFJTX29fYWkKdmVjX2ZpcnN0X21hdGNoX2luZGV4KHZlY3RvciBzaWduZWQgY2hhciBfX2EsIHZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fcmVzID0KI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgICB2ZWNfY250dHooKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpdmVjX2NtcGVxKF9fYSwgX19iKSk7CiNlbHNlCiAgICB2ZWNfY250bHooKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpdmVjX2NtcGVxKF9fYSwgX19iKSk7CiNlbmRpZgogIGlmIChfX3Jlc1swXSA9PSA2NCkgewogICAgcmV0dXJuIChfX3Jlc1sxXSArIDY0KSA+PiAzOwogIH0KICByZXR1cm4gX19yZXNbMF0gPj4gMzsKfQoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgX19BVFRSU19vX2FpCnZlY19maXJzdF9tYXRjaF9pbmRleCh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19yZXMgPQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICAgIHZlY19jbnR0eigodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyl2ZWNfY21wZXEoX19hLCBfX2IpKTsKI2Vsc2UKICAgIHZlY19jbnRseigodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyl2ZWNfY21wZXEoX19hLCBfX2IpKTsKI2VuZGlmCiAgaWYgKF9fcmVzWzBdID09IDY0KSB7CiAgICByZXR1cm4gKF9fcmVzWzFdICsgNjQpID4+IDM7CiAgfQogIHJldHVybiBfX3Jlc1swXSA+PiAzOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBfX0FUVFJTX29fYWkKdmVjX2ZpcnN0X21hdGNoX2luZGV4KHZlY3RvciBzaWduZWQgc2hvcnQgX19hLCB2ZWN0b3Igc2lnbmVkIHNob3J0IF9fYikgewogIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19yZXMgPQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICAgIHZlY19jbnR0eigodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyl2ZWNfY21wZXEoX19hLCBfX2IpKTsKI2Vsc2UKICAgIHZlY19jbnRseigodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyl2ZWNfY21wZXEoX19hLCBfX2IpKTsKI2VuZGlmCiAgaWYgKF9fcmVzWzBdID09IDY0KSB7CiAgICByZXR1cm4gKF9fcmVzWzFdICsgNjQpID4+IDQ7CiAgfQogIHJldHVybiBfX3Jlc1swXSA+PiA0Owp9CgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBfX0FUVFJTX29fYWkKdmVjX2ZpcnN0X21hdGNoX2luZGV4KHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fcmVzID0KI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgICB2ZWNfY250dHooKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpdmVjX2NtcGVxKF9fYSwgX19iKSk7CiNlbHNlCiAgICB2ZWNfY250bHooKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpdmVjX2NtcGVxKF9fYSwgX19iKSk7CiNlbmRpZgogIGlmIChfX3Jlc1swXSA9PSA2NCkgewogICAgcmV0dXJuIChfX3Jlc1sxXSArIDY0KSA+PiA0OwogIH0KICByZXR1cm4gX19yZXNbMF0gPj4gNDsKfQoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgX19BVFRSU19vX2FpCnZlY19maXJzdF9tYXRjaF9pbmRleCh2ZWN0b3Igc2lnbmVkIGludCBfX2EsIHZlY3RvciBzaWduZWQgaW50IF9fYikgewogIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19yZXMgPQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICAgIHZlY19jbnR0eigodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyl2ZWNfY21wZXEoX19hLCBfX2IpKTsKI2Vsc2UKICAgIHZlY19jbnRseigodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyl2ZWNfY21wZXEoX19hLCBfX2IpKTsKI2VuZGlmCiAgaWYgKF9fcmVzWzBdID09IDY0KSB7CiAgICByZXR1cm4gKF9fcmVzWzFdICsgNjQpID4+IDU7CiAgfQogIHJldHVybiBfX3Jlc1swXSA+PiA1Owp9CgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBfX0FUVFJTX29fYWkKdmVjX2ZpcnN0X21hdGNoX2luZGV4KHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19yZXMgPQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICAgIHZlY19jbnR0eigodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyl2ZWNfY21wZXEoX19hLCBfX2IpKTsKI2Vsc2UKICAgIHZlY19jbnRseigodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyl2ZWNfY21wZXEoX19hLCBfX2IpKTsKI2VuZGlmCiAgaWYgKF9fcmVzWzBdID09IDY0KSB7CiAgICByZXR1cm4gKF9fcmVzWzFdICsgNjQpID4+IDU7CiAgfQogIHJldHVybiBfX3Jlc1swXSA+PiA1Owp9CgovKiB2ZWNfZmlyc3RfbWF0Y2hfb3JfZW9zX2luZGV4ICovCgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBfX0FUVFJTX29fYWkKdmVjX2ZpcnN0X21hdGNoX29yX2Vvc19pbmRleCh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgLyogQ29tcGFyZSB0aGUgcmVzdWx0IG9mIHRoZSBjb21wYXJpc29uIG9mIHR3byB2ZWN0b3JzIHdpdGggZWl0aGVyIGFuZCBPUiB0aGUKICAgICByZXN1bHQuIEVpdGhlciB0aGUgZWxlbWVudHMgYXJlIGVxdWFsIG9yIG9uZSB3aWxsIGVxdWFsIHRoZSBjb21wYXJpc29uCiAgICAgcmVzdWx0IGlmIGVpdGhlciBpcyB6ZXJvLgogICovCiAgdmVjdG9yIGJvb2wgY2hhciBfX3RtcDEgPSB2ZWNfY21wZXEoX19hLCBfX2IpOwogIHZlY3RvciBib29sIGNoYXIgX190bXAyID0gX190bXAxIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY19jbXBlcSgodmVjdG9yIHNpZ25lZCBjaGFyKV9fdG1wMSwgX19hKSB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWNfY21wZXEoKHZlY3RvciBzaWduZWQgY2hhcilfX3RtcDEsIF9fYik7CgogIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19yZXMgPQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICAgICAgdmVjX2NudHR6KCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fdG1wMik7CiNlbHNlCiAgICAgIHZlY19jbnRseigodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX3RtcDIpOwojZW5kaWYKICBpZiAoX19yZXNbMF0gPT0gNjQpIHsKICAgIHJldHVybiAoX19yZXNbMV0gKyA2NCkgPj4gMzsKICB9CiAgcmV0dXJuIF9fcmVzWzBdID4+IDM7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIF9fQVRUUlNfb19haQp2ZWNfZmlyc3RfbWF0Y2hfb3JfZW9zX2luZGV4KHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICB2ZWN0b3IgYm9vbCBjaGFyIF9fdG1wMSA9IHZlY19jbXBlcShfX2EsIF9fYik7CiAgdmVjdG9yIGJvb2wgY2hhciBfX3RtcDIgPSBfX3RtcDEgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjX2NtcGVxKCh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX3RtcDEsIF9fYSkgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjX2NtcGVxKCh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX3RtcDEsIF9fYik7CgogIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19yZXMgPQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICAgICAgdmVjX2NudHR6KCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fdG1wMik7CiNlbHNlCiAgICAgIHZlY19jbnRseigodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX3RtcDIpOwojZW5kaWYKICBpZiAoX19yZXNbMF0gPT0gNjQpIHsKICAgIHJldHVybiAoX19yZXNbMV0gKyA2NCkgPj4gMzsKICB9CiAgcmV0dXJuIF9fcmVzWzBdID4+IDM7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIF9fQVRUUlNfb19haQp2ZWNfZmlyc3RfbWF0Y2hfb3JfZW9zX2luZGV4KHZlY3RvciBzaWduZWQgc2hvcnQgX19hLCB2ZWN0b3Igc2lnbmVkIHNob3J0IF9fYikgewogIHZlY3RvciBib29sIHNob3J0IF9fdG1wMSA9IHZlY19jbXBlcShfX2EsIF9fYik7CiAgdmVjdG9yIGJvb2wgc2hvcnQgX190bXAyID0gX190bXAxIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWNfY21wZXEoKHZlY3RvciBzaWduZWQgc2hvcnQpX190bXAxLCBfX2EpIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWNfY21wZXEoKHZlY3RvciBzaWduZWQgc2hvcnQpX190bXAxLCBfX2IpOwoKICB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fcmVzID0KI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgICAgIHZlY19jbnR0eigodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX3RtcDIpOwojZWxzZQogICAgICB2ZWNfY250bHooKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX190bXAyKTsKI2VuZGlmCiAgaWYgKF9fcmVzWzBdID09IDY0KSB7CiAgICByZXR1cm4gKF9fcmVzWzFdICsgNjQpID4+IDQ7CiAgfQogIHJldHVybiBfX3Jlc1swXSA+PiA0Owp9CgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBfX0FUVFJTX29fYWkKdmVjX2ZpcnN0X21hdGNoX29yX2Vvc19pbmRleCh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICB2ZWN0b3IgYm9vbCBzaG9ydCBfX3RtcDEgPSB2ZWNfY21wZXEoX19hLCBfX2IpOwogIHZlY3RvciBib29sIHNob3J0IF9fdG1wMiA9IF9fdG1wMSB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjX2NtcGVxKCh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpX190bXAxLCBfX2EpIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWNfY21wZXEoKHZlY3RvciB1bnNpZ25lZCBzaG9ydClfX3RtcDEsIF9fYik7CgogIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19yZXMgPQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICAgICAgdmVjX2NudHR6KCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fdG1wMik7CiNlbHNlCiAgICAgIHZlY19jbnRseigodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX3RtcDIpOwojZW5kaWYKICBpZiAoX19yZXNbMF0gPT0gNjQpIHsKICAgIHJldHVybiAoX19yZXNbMV0gKyA2NCkgPj4gNDsKICB9CiAgcmV0dXJuIF9fcmVzWzBdID4+IDQ7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIF9fQVRUUlNfb19haQp2ZWNfZmlyc3RfbWF0Y2hfb3JfZW9zX2luZGV4KHZlY3RvciBzaWduZWQgaW50IF9fYSwgdmVjdG9yIHNpZ25lZCBpbnQgX19iKSB7CiAgdmVjdG9yIGJvb2wgaW50IF9fdG1wMSA9IHZlY19jbXBlcShfX2EsIF9fYik7CiAgdmVjdG9yIGJvb2wgaW50IF9fdG1wMiA9IF9fdG1wMSB8IHZlY19jbXBlcSgodmVjdG9yIHNpZ25lZCBpbnQpX190bXAxLCBfX2EpIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjX2NtcGVxKCh2ZWN0b3Igc2lnbmVkIGludClfX3RtcDEsIF9fYik7CgogIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19yZXMgPQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICAgICAgdmVjX2NudHR6KCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fdG1wMik7CiNlbHNlCiAgICAgIHZlY19jbnRseigodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX3RtcDIpOwojZW5kaWYKICBpZiAoX19yZXNbMF0gPT0gNjQpIHsKICAgIHJldHVybiAoX19yZXNbMV0gKyA2NCkgPj4gNTsKICB9CiAgcmV0dXJuIF9fcmVzWzBdID4+IDU7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIF9fQVRUUlNfb19haQp2ZWNfZmlyc3RfbWF0Y2hfb3JfZW9zX2luZGV4KHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHZlY3RvciBib29sIGludCBfX3RtcDEgPSB2ZWNfY21wZXEoX19hLCBfX2IpOwogIHZlY3RvciBib29sIGludCBfX3RtcDIgPSBfX3RtcDEgfAogICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWNfY21wZXEoKHZlY3RvciB1bnNpZ25lZCBpbnQpX190bXAxLCBfX2EpIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjX2NtcGVxKCh2ZWN0b3IgdW5zaWduZWQgaW50KV9fdG1wMSwgX19iKTsKCiAgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3JlcyA9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogICAgdmVjX2NudHR6KCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fdG1wMik7CiNlbHNlCiAgICB2ZWNfY250bHooKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX190bXAyKTsKI2VuZGlmCiAgaWYgKF9fcmVzWzBdID09IDY0KSB7CiAgICByZXR1cm4gKF9fcmVzWzFdICsgNjQpID4+IDU7CiAgfQogIHJldHVybiBfX3Jlc1swXSA+PiA1Owp9CgovKiB2ZWNfZmlyc3RfbWlzbWF0Y2hfaW5kZXggKi8KCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIF9fQVRUUlNfb19haQp2ZWNfZmlyc3RfbWlzbWF0Y2hfaW5kZXgodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19yZXMgPQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICAgIHZlY19jbnR0eigodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyl2ZWNfY21wbmUoX19hLCBfX2IpKTsKI2Vsc2UKICAgIHZlY19jbnRseigodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyl2ZWNfY21wbmUoX19hLCBfX2IpKTsKI2VuZGlmCiAgaWYgKF9fcmVzWzBdID09IDY0KSB7CiAgICByZXR1cm4gKF9fcmVzWzFdICsgNjQpID4+IDM7CiAgfQogIHJldHVybiBfX3Jlc1swXSA+PiAzOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBfX0FUVFJTX29fYWkKdmVjX2ZpcnN0X21pc21hdGNoX2luZGV4KHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3JlcyA9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogICAgdmVjX2NudHR6KCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKXZlY19jbXBuZShfX2EsIF9fYikpOwojZWxzZQogICAgdmVjX2NudGx6KCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKXZlY19jbXBuZShfX2EsIF9fYikpOwojZW5kaWYKICBpZiAoX19yZXNbMF0gPT0gNjQpIHsKICAgIHJldHVybiAoX19yZXNbMV0gKyA2NCkgPj4gMzsKICB9CiAgcmV0dXJuIF9fcmVzWzBdID4+IDM7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIF9fQVRUUlNfb19haQp2ZWNfZmlyc3RfbWlzbWF0Y2hfaW5kZXgodmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciBzaWduZWQgc2hvcnQgX19iKSB7CiAgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3JlcyA9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogICAgdmVjX2NudHR6KCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKXZlY19jbXBuZShfX2EsIF9fYikpOwojZWxzZQogICAgdmVjX2NudGx6KCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKXZlY19jbXBuZShfX2EsIF9fYikpOwojZW5kaWYKICBpZiAoX19yZXNbMF0gPT0gNjQpIHsKICAgIHJldHVybiAoX19yZXNbMV0gKyA2NCkgPj4gNDsKICB9CiAgcmV0dXJuIF9fcmVzWzBdID4+IDQ7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIF9fQVRUUlNfb19haQp2ZWNfZmlyc3RfbWlzbWF0Y2hfaW5kZXgodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19yZXMgPQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICAgIHZlY19jbnR0eigodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyl2ZWNfY21wbmUoX19hLCBfX2IpKTsKI2Vsc2UKICAgIHZlY19jbnRseigodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyl2ZWNfY21wbmUoX19hLCBfX2IpKTsKI2VuZGlmCiAgaWYgKF9fcmVzWzBdID09IDY0KSB7CiAgICByZXR1cm4gKF9fcmVzWzFdICsgNjQpID4+IDQ7CiAgfQogIHJldHVybiBfX3Jlc1swXSA+PiA0Owp9CgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBfX0FUVFJTX29fYWkKdmVjX2ZpcnN0X21pc21hdGNoX2luZGV4KHZlY3RvciBzaWduZWQgaW50IF9fYSwgdmVjdG9yIHNpZ25lZCBpbnQgX19iKSB7CiAgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3JlcyA9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogICAgdmVjX2NudHR6KCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKXZlY19jbXBuZShfX2EsIF9fYikpOwojZWxzZQogICAgdmVjX2NudGx6KCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKXZlY19jbXBuZShfX2EsIF9fYikpOwojZW5kaWYKICBpZiAoX19yZXNbMF0gPT0gNjQpIHsKICAgIHJldHVybiAoX19yZXNbMV0gKyA2NCkgPj4gNTsKICB9CiAgcmV0dXJuIF9fcmVzWzBdID4+IDU7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIF9fQVRUUlNfb19haQp2ZWNfZmlyc3RfbWlzbWF0Y2hfaW5kZXgodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3JlcyA9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogICAgdmVjX2NudHR6KCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKXZlY19jbXBuZShfX2EsIF9fYikpOwojZWxzZQogICAgdmVjX2NudGx6KCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKXZlY19jbXBuZShfX2EsIF9fYikpOwojZW5kaWYKICBpZiAoX19yZXNbMF0gPT0gNjQpIHsKICAgIHJldHVybiAoX19yZXNbMV0gKyA2NCkgPj4gNTsKICB9CiAgcmV0dXJuIF9fcmVzWzBdID4+IDU7Cn0KCi8qIHZlY19maXJzdF9taXNtYXRjaF9vcl9lb3NfaW5kZXggKi8KCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIF9fQVRUUlNfb19haQp2ZWNfZmlyc3RfbWlzbWF0Y2hfb3JfZW9zX2luZGV4KHZlY3RvciBzaWduZWQgY2hhciBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19yZXMgPQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICAgIHZlY19jbnR0eigodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyl2ZWNfY21wbmV6KF9fYSwgX19iKSk7CiNlbHNlCiAgICB2ZWNfY250bHooKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpdmVjX2NtcG5leihfX2EsIF9fYikpOwojZW5kaWYKICBpZiAoX19yZXNbMF0gPT0gNjQpIHsKICAgIHJldHVybiAoX19yZXNbMV0gKyA2NCkgPj4gMzsKICB9CiAgcmV0dXJuIF9fcmVzWzBdID4+IDM7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIF9fQVRUUlNfb19haQp2ZWNfZmlyc3RfbWlzbWF0Y2hfb3JfZW9zX2luZGV4KHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fcmVzID0KI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgICB2ZWNfY250dHooKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpdmVjX2NtcG5leihfX2EsIF9fYikpOwojZWxzZQogICAgdmVjX2NudGx6KCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKXZlY19jbXBuZXooX19hLCBfX2IpKTsKI2VuZGlmCiAgaWYgKF9fcmVzWzBdID09IDY0KSB7CiAgICByZXR1cm4gKF9fcmVzWzFdICsgNjQpID4+IDM7CiAgfQogIHJldHVybiBfX3Jlc1swXSA+PiAzOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBfX0FUVFJTX29fYWkKdmVjX2ZpcnN0X21pc21hdGNoX29yX2Vvc19pbmRleCh2ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2lnbmVkIHNob3J0IF9fYikgewogIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19yZXMgPQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICAgIHZlY19jbnR0eigodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyl2ZWNfY21wbmV6KF9fYSwgX19iKSk7CiNlbHNlCiAgICB2ZWNfY250bHooKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpdmVjX2NtcG5leihfX2EsIF9fYikpOwojZW5kaWYKICBpZiAoX19yZXNbMF0gPT0gNjQpIHsKICAgIHJldHVybiAoX19yZXNbMV0gKyA2NCkgPj4gNDsKICB9CiAgcmV0dXJuIF9fcmVzWzBdID4+IDQ7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIF9fQVRUUlNfb19haQp2ZWNfZmlyc3RfbWlzbWF0Y2hfb3JfZW9zX2luZGV4KHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19yZXMgPQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICAgIHZlY19jbnR0eigodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyl2ZWNfY21wbmV6KF9fYSwgX19iKSk7CiNlbHNlCiAgICB2ZWNfY250bHooKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpdmVjX2NtcG5leihfX2EsIF9fYikpOwojZW5kaWYKICBpZiAoX19yZXNbMF0gPT0gNjQpIHsKICAgIHJldHVybiAoX19yZXNbMV0gKyA2NCkgPj4gNDsKICB9CiAgcmV0dXJuIF9fcmVzWzBdID4+IDQ7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIF9fQVRUUlNfb19haQp2ZWNfZmlyc3RfbWlzbWF0Y2hfb3JfZW9zX2luZGV4KHZlY3RvciBzaWduZWQgaW50IF9fYSwgdmVjdG9yIHNpZ25lZCBpbnQgX19iKSB7CiAgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3JlcyA9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogICAgdmVjX2NudHR6KCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKXZlY19jbXBuZXooX19hLCBfX2IpKTsKI2Vsc2UKICAgIHZlY19jbnRseigodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyl2ZWNfY21wbmV6KF9fYSwgX19iKSk7CiNlbmRpZgogIGlmIChfX3Jlc1swXSA9PSA2NCkgewogICAgcmV0dXJuIChfX3Jlc1sxXSArIDY0KSA+PiA1OwogIH0KICByZXR1cm4gX19yZXNbMF0gPj4gNTsKfQoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgX19BVFRSU19vX2FpCnZlY19maXJzdF9taXNtYXRjaF9vcl9lb3NfaW5kZXgodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fcmVzID0KI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgICB2ZWNfY250dHooKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpdmVjX2NtcG5leihfX2EsIF9fYikpOwojZWxzZQogICAgdmVjX2NudGx6KCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKXZlY19jbXBuZXooX19hLCBfX2IpKTsKI2VuZGlmCiAgaWYgKF9fcmVzWzBdID09IDY0KSB7CiAgICByZXR1cm4gKF9fcmVzWzFdICsgNjQpID4+IDU7CiAgfQogIHJldHVybiBfX3Jlc1swXSA+PiA1Owp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZG91YmxlICBfX0FUVFJTX29fYWkKdmVjX2luc2VydF9leHAodmVjdG9yIGRvdWJsZSBfX2EsIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfeHZpZXhwZHAoKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19hLF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBkb3VibGUgIF9fQVRUUlNfb19haQp2ZWNfaW5zZXJ0X2V4cCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3ZzeF94dmlleHBkcChfX2EsX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGZsb2F0ICBfX0FUVFJTX29fYWkKdmVjX2luc2VydF9leHAodmVjdG9yIGZsb2F0IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3ZzeF94dmlleHBzcCgodmVjdG9yIHVuc2lnbmVkIGludClfX2EsX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGZsb2F0ICBfX0FUVFJTX29fYWkKdmVjX2luc2VydF9leHAodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfeHZpZXhwc3AoX19hLF9fYik7Cn0KCiNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkgdmVjX3hsX2xlbihjb25zdCBzaWduZWQgY2hhciAqX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fYikgewogIHJldHVybiAodmVjdG9yIHNpZ25lZCBjaGFyKV9fYnVpbHRpbl92c3hfbHh2bChfX2EsIChfX2IgPDwgNTYpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY194bF9sZW4oY29uc3QgdW5zaWduZWQgY2hhciAqX19hLCBzaXplX3QgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2J1aWx0aW5fdnN4X2x4dmwoX19hLCAoX19iIDw8IDU2KSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgc2hvcnQgX19BVFRSU19vX2FpIHZlY194bF9sZW4oY29uc3Qgc2lnbmVkIHNob3J0ICpfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fYikgewogIHJldHVybiAodmVjdG9yIHNpZ25lZCBzaG9ydClfX2J1aWx0aW5fdnN4X2x4dmwoX19hLCAoX19iIDw8IDU2KSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3hsX2xlbihjb25zdCB1bnNpZ25lZCBzaG9ydCAqX19hLCBzaXplX3QgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19idWlsdGluX3ZzeF9seHZsKF9fYSwgKF9fYiA8PCA1NikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGludCBfX0FUVFJTX29fYWkgdmVjX3hsX2xlbihjb25zdCBzaWduZWQgaW50ICpfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBzaWduZWQgaW50KV9fYnVpbHRpbl92c3hfbHh2bChfX2EsIChfX2IgPDwgNTYpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkgdmVjX3hsX2xlbihjb25zdCB1bnNpZ25lZCBpbnQgKl9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYnVpbHRpbl92c3hfbHh2bChfX2EsIChfX2IgPDwgNTYpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGZsb2F0IF9fQVRUUlNfb19haSB2ZWNfeGxfbGVuKGNvbnN0IGZsb2F0ICpfX2EsIHNpemVfdCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBmbG9hdClfX2J1aWx0aW5fdnN4X2x4dmwoX19hLCAoX19iIDw8IDU2KSk7Cn0KCiNpZmRlZiBfX1NJWkVPRl9JTlQxMjhfXwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fQVRUUlNfb19haQp2ZWNfeGxfbGVuKGNvbnN0IHNpZ25lZCBfX2ludDEyOCAqX19hLCBzaXplX3QgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3Igc2lnbmVkIF9faW50MTI4KV9fYnVpbHRpbl92c3hfbHh2bChfX2EsIChfX2IgPDwgNTYpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fQVRUUlNfb19haQp2ZWNfeGxfbGVuKGNvbnN0IHVuc2lnbmVkIF9faW50MTI4ICpfX2EsIHNpemVfdCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOClfX2J1aWx0aW5fdnN4X2x4dmwoX19hLCAoX19iIDw8IDU2KSk7Cn0KI2VuZGlmCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX3hsX2xlbihjb25zdCBzaWduZWQgbG9uZyBsb25nICpfX2EsIHNpemVfdCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYnVpbHRpbl92c3hfbHh2bChfX2EsIChfX2IgPDwgNTYpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX3hsX2xlbihjb25zdCB1bnNpZ25lZCBsb25nIGxvbmcgKl9fYSwgc2l6ZV90IF9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2J1aWx0aW5fdnN4X2x4dmwoX19hLCAoX19iIDw8IDU2KSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBkb3VibGUgX19BVFRSU19vX2FpIHZlY194bF9sZW4oY29uc3QgZG91YmxlICpfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fYikgewogIHJldHVybiAodmVjdG9yIGRvdWJsZSlfX2J1aWx0aW5fdnN4X2x4dmwoX19hLCAoX19iIDw8IDU2KSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfeGxfbGVuX3IoY29uc3QgdW5zaWduZWQgY2hhciAqX19hLCBzaXplX3QgX19iKSB7CiAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19yZXMgPQogICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19idWlsdGluX3ZzeF9seHZsbChfX2EsIChfX2IgPDwgNTYpKTsKICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX21hc2sgPQogICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19idWlsdGluX2FsdGl2ZWNfbHZzcigxNiAtIF9fYiwgKGludCAqKU5VTEwpOwogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19idWlsdGluX2FsdGl2ZWNfdnBlcm1fNHNpKAogICAgICAodmVjdG9yIGludClfX3JlcywgKHZlY3RvciBpbnQpX19yZXMsIF9fbWFzayk7Cn0KCi8vIHZlY194c3RfbGVuCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY194c3RfbGVuKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19jKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfc3R4dmwoKHZlY3RvciBpbnQpX19hLCBfX2IsIChfX2MgPDwgNTYpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3hzdF9sZW4odmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmVkIGNoYXIgKl9fYiwgc2l6ZV90IF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fdnN4X3N0eHZsKCh2ZWN0b3IgaW50KV9fYSwgX19iLCAoX19jIDw8IDU2KSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY194c3RfbGVuKHZlY3RvciBzaWduZWQgc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduZWQgc2hvcnQgKl9fYiwgc2l6ZV90IF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fdnN4X3N0eHZsKCh2ZWN0b3IgaW50KV9fYSwgX19iLCAoX19jIDw8IDU2KSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY194c3RfbGVuKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0ICpfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX2MpIHsKICByZXR1cm4gX19idWlsdGluX3ZzeF9zdHh2bCgodmVjdG9yIGludClfX2EsIF9fYiwgKF9fYyA8PCA1NikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfeHN0X2xlbih2ZWN0b3Igc2lnbmVkIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25lZCBpbnQgKl9fYiwgc2l6ZV90IF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fdnN4X3N0eHZsKCh2ZWN0b3IgaW50KV9fYSwgX19iLCAoX19jIDw8IDU2KSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY194c3RfbGVuKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKl9fYiwgc2l6ZV90IF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fdnN4X3N0eHZsKCh2ZWN0b3IgaW50KV9fYSwgX19iLCAoX19jIDw8IDU2KSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY194c3RfbGVuKHZlY3RvciBmbG9hdCBfX2EsIGZsb2F0ICpfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX2MpIHsKICByZXR1cm4gX19idWlsdGluX3ZzeF9zdHh2bCgodmVjdG9yIGludClfX2EsIF9fYiwgKF9fYyA8PCA1NikpOwp9CgojaWZkZWYgX19TSVpFT0ZfSU5UMTI4X18Kc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3hzdF9sZW4odmVjdG9yIHNpZ25lZCBfX2ludDEyOCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25lZCBfX2ludDEyOCAqX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19jKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfc3R4dmwoKHZlY3RvciBpbnQpX19hLCBfX2IsIChfX2MgPDwgNTYpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3hzdF9sZW4odmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgX19pbnQxMjggKl9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fdnN4X3N0eHZsKCh2ZWN0b3IgaW50KV9fYSwgX19iLCAoX19jIDw8IDU2KSk7Cn0KI2VuZGlmCgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfeHN0X2xlbih2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25lZCBsb25nIGxvbmcgKl9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fdnN4X3N0eHZsKCh2ZWN0b3IgaW50KV9fYSwgX19iLCAoX19jIDw8IDU2KSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY194c3RfbGVuKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgKl9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fdnN4X3N0eHZsKCh2ZWN0b3IgaW50KV9fYSwgX19iLCAoX19jIDw8IDU2KSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY194c3RfbGVuKHZlY3RvciBkb3VibGUgX19hLCBkb3VibGUgKl9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fdnN4X3N0eHZsKCh2ZWN0b3IgaW50KV9fYSwgX19iLCAoX19jIDw8IDU2KSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY194c3RfbGVuX3IodmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKl9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19jKSB7CiAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19tYXNrID0KICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX2x2c2woMTYgLSBfX2MsIChpbnQgKilOVUxMKTsKICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX3JlcyA9CiAgICAgIF9fYnVpbHRpbl9hbHRpdmVjX3ZwZXJtXzRzaSgodmVjdG9yIGludClfX2EsICh2ZWN0b3IgaW50KV9fYSwgX19tYXNrKTsKICByZXR1cm4gX19idWlsdGluX3ZzeF9zdHh2bGwoKHZlY3RvciBpbnQpX19yZXMsIF9fYiwgKF9fYyA8PCA1NikpOwp9CiNlbmRpZgojZW5kaWYKCiNpZiBkZWZpbmVkKF9fUE9XRVI5X1ZFQ1RPUl9fKSAmJiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCiNkZWZpbmUgX192ZWNfbGRybWIoUFRSLCBDTlQpIHZlY194bF9sZW5fcigoY29uc3QgdW5zaWduZWQgY2hhciAqKShQVFIpLCAoQ05UKSkKI2RlZmluZSBfX3ZlY19zdHJtYihQVFIsIENOVCwgVkFMKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB2ZWNfeHN0X2xlbl9yKChWQUwpLCAodW5zaWduZWQgY2hhciAqKShQVFIpLCAoQ05UKSkKI2Vsc2UKI2RlZmluZSBfX3ZlY19sZHJtYiBfX2J1aWx0aW5fdnN4X2xkcm1iCiNkZWZpbmUgX192ZWNfc3RybWIgX19idWlsdGluX3ZzeF9zdHJtYgojZW5kaWYKCi8qIHZlY19jcHNnbiAqLwoKI2lmZGVmIF9fVlNYX18Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGZsb2F0IF9fQVRUUlNfb19haSB2ZWNfY3BzZ24odmVjdG9yIGZsb2F0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGZsb2F0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fdnN4X3h2Y3BzZ25zcChfX2IsIF9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBkb3VibGUgX19BVFRSU19vX2FpIHZlY19jcHNnbih2ZWN0b3IgZG91YmxlIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBkb3VibGUgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfeHZjcHNnbmRwKF9fYiwgX19hKTsKfQojZW5kaWYKCi8qIHZlY19jdGYgKi8KCiNpZmRlZiBfX1ZTWF9fCi8vIFRoZXJlIGFyZSBzb21lIGZ1bmN0aW9ucyB0aGF0IGhhdmUgZGlmZmVyZW50IHNpZ25hdHVyZXMgd2l0aCB0aGUgWEwgY29tcGlsZXIKLy8gZnJvbSB0aG9zZSBpbiBDbGFuZy9HQ0MgYW5kIGRvY3VtZW50ZWQgaW4gdGhlIFBWSVBSLiBUaGlzIG1hY3JvIGVuc3VyZXMgdGhhdAovLyB0aGUgWEwtY29tcGF0aWJsZSBzaWduYXR1cmVzIGFyZSB1c2VkIGZvciB0aG9zZSBmdW5jdGlvbnMuCiNpZmRlZiBfX1hMX0NPTVBBVF9BTFRJVkVDX18KI2RlZmluZSB2ZWNfY3RmKF9fYSwgX19iKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfR2VuZXJpYygoX19hKSwgdmVjdG9yIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICA6ICh2ZWN0b3IgZmxvYXQpX19idWlsdGluX2FsdGl2ZWNfdmNmc3goKHZlY3RvciBpbnQpKF9fYSksIChfX2IpKSwgIFwKICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICA6ICh2ZWN0b3IgZmxvYXQpX19idWlsdGluX2FsdGl2ZWNfdmNmdXgoKHZlY3RvciB1bnNpZ25lZCBpbnQpKF9fYSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fYikpLCAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICA6IChfX2J1aWx0aW5fdnN4X3h2Y3Z1eGRzcCgodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZykoX19hKSkgKiAgICAgIFwKICAgICAgICAgICAgICAodmVjdG9yIGZsb2F0KSh2ZWN0b3IgdW5zaWduZWQpKCgweDdmIC0gKF9fYikpIDw8IDIzKSksICAgICAgICAgIFwKICAgICAgICAgICAgIHZlY3RvciBzaWduZWQgbG9uZyBsb25nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICA6IChfX2J1aWx0aW5fdnN4X3h2Y3ZzeGRzcCgodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpKF9fYSkpICogICAgICAgIFwKICAgICAgICAgICAgICAodmVjdG9yIGZsb2F0KSh2ZWN0b3IgdW5zaWduZWQpKCgweDdmIC0gKF9fYikpIDw8IDIzKSkpCiNlbHNlIC8vIF9fWExfQ09NUEFUX0FMVElWRUNfXwojZGVmaW5lIHZlY19jdGYoX19hLCBfX2IpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9HZW5lcmljKChfX2EpLCB2ZWN0b3IgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgIDogKHZlY3RvciBmbG9hdClfX2J1aWx0aW5fYWx0aXZlY192Y2ZzeCgodmVjdG9yIGludCkoX19hKSwgKF9fYikpLCAgXAogICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgIDogKHZlY3RvciBmbG9hdClfX2J1aWx0aW5fYWx0aXZlY192Y2Z1eCgodmVjdG9yIHVuc2lnbmVkIGludCkoX19hKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19iKSksICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgIDogKF9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKShfX2EpLCAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBkb3VibGUpICogICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICh2ZWN0b3IgZG91YmxlKSh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKSgoMHgzZmZVTEwgLSAoX19iKSkgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCA1MikpLCAgICAgICAgICAgICAgXAogICAgICAgICAgICAgdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgIDogKF9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKCh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZykoX19hKSwgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBkb3VibGUpICogICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICh2ZWN0b3IgZG91YmxlKSh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKSgoMHgzZmZVTEwgLSAoX19iKSkgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCA1MikpKQojZW5kaWYgLy8gX19YTF9DT01QQVRfQUxUSVZFQ19fCiNlbHNlCiNkZWZpbmUgdmVjX2N0ZihfX2EsIF9fYikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX0dlbmVyaWMoKF9fYSksIHZlY3RvciBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgOiAodmVjdG9yIGZsb2F0KV9fYnVpbHRpbl9hbHRpdmVjX3ZjZnN4KCh2ZWN0b3IgaW50KShfX2EpLCAoX19iKSksICBcCiAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgOiAodmVjdG9yIGZsb2F0KV9fYnVpbHRpbl9hbHRpdmVjX3ZjZnV4KCh2ZWN0b3IgdW5zaWduZWQgaW50KShfX2EpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX2IpKSkKI2VuZGlmCgovKiB2ZWNfY3RkICovCiNpZmRlZiBfX1ZTWF9fCiNkZWZpbmUgdmVjX2N0ZChfX2EsIF9fYikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX0dlbmVyaWMoKF9fYSksIHZlY3RvciBzaWduZWQgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgOiAodmVjX2RvdWJsZWUoKHZlY3RvciBzaWduZWQgaW50KShfX2EpKSAqICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgKHZlY3RvciBkb3VibGUpKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpKCgweDNmZlVMTCAtIChfX2IpKSAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IDUyKSksICAgICAgICAgICAgICBcCiAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgOiAodmVjX2RvdWJsZWUoKHZlY3RvciB1bnNpZ25lZCBpbnQpKF9fYSkpICogICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgKHZlY3RvciBkb3VibGUpKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpKCgweDNmZlVMTCAtIChfX2IpKSAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IDUyKSksICAgICAgICAgICAgICBcCiAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgOiAoX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpKF9fYSksICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGRvdWJsZSkgKiAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgKHZlY3RvciBkb3VibGUpKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpKCgweDNmZlVMTCAtIChfX2IpKSAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IDUyKSksICAgICAgICAgICAgICBcCiAgICAgICAgICAgICB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgOiAoX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoKHZlY3RvciBzaWduZWQgbG9uZyBsb25nKShfX2EpLCAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGRvdWJsZSkgKiAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgKHZlY3RvciBkb3VibGUpKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpKCgweDNmZlVMTCAtIChfX2IpKSAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IDUyKSkpCiNlbmRpZiAvLyBfX1ZTWF9fCgovKiB2ZWNfdmNmc3ggKi8KCiNkZWZpbmUgdmVjX3ZjZnV4IF9fYnVpbHRpbl9hbHRpdmVjX3ZjZnV4Ci8qIHZlY192Y2Z1eCAqLwoKI2RlZmluZSB2ZWNfdmNmc3goX19hLCBfX2IpIF9fYnVpbHRpbl9hbHRpdmVjX3ZjZnN4KCh2ZWN0b3IgaW50KShfX2EpLCAoX19iKSkKCi8qIHZlY19jdHMgKi8KCiNpZmRlZiBfX1ZTWF9fCiNpZmRlZiBfX1hMX0NPTVBBVF9BTFRJVkVDX18KI2RlZmluZSB2ZWNfY3RzKF9fYSwgX19iKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfR2VuZXJpYygoX19hKSwgdmVjdG9yIGZsb2F0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICA6IF9fYnVpbHRpbl9hbHRpdmVjX3ZjdHN4cygodmVjdG9yIGZsb2F0KShfX2EpLCAoX19iKSksICAgICAgICAgICAgIFwKICAgICAgICAgICAgIHZlY3RvciBkb3VibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICA6IF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIHZlY3RvciBkb3VibGUgX19yZXQgPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAodmVjdG9yIGRvdWJsZSkoX19hKSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAodmVjdG9yIGRvdWJsZSkodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZykoKDB4M2ZmVUxMICsgKF9fYikpIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgNTIpOyAgICAgICAgICAgIFwKICAgICAgICAgICAgIF9fYnVpbHRpbl92c3hfeHZjdmRwc3h3cyhfX3JldCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICB9KSkKI2Vsc2UgLy8gX19YTF9DT01QQVRfQUxUSVZFQ19fCiNkZWZpbmUgdmVjX2N0cyhfX2EsIF9fYikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX0dlbmVyaWMoKF9fYSksIHZlY3RvciBmbG9hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgOiBfX2J1aWx0aW5fYWx0aXZlY192Y3RzeHMoKHZlY3RvciBmbG9hdCkoX19hKSwgKF9fYikpLCAgICAgICAgICAgICBcCiAgICAgICAgICAgICB2ZWN0b3IgZG91YmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgOiBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICB2ZWN0b3IgZG91YmxlIF9fcmV0ID0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgKHZlY3RvciBkb3VibGUpKF9fYSkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgKHZlY3RvciBkb3VibGUpKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpKCgweDNmZlVMTCArIChfX2IpKSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IDUyKTsgICAgICAgICAgICBcCiAgICAgICAgICAgICBfX2J1aWx0aW5fY29udmVydHZlY3RvcihfX3JldCwgdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpOyAgICAgICAgICBcCiAgICAgICAgICAgfSkpCiNlbmRpZiAvLyBfX1hMX0NPTVBBVF9BTFRJVkVDX18KI2Vsc2UKI2RlZmluZSB2ZWNfY3RzIF9fYnVpbHRpbl9hbHRpdmVjX3ZjdHN4cwojZW5kaWYKCi8qIHZlY192Y3RzeHMgKi8KCiNkZWZpbmUgdmVjX3ZjdHN4cyBfX2J1aWx0aW5fYWx0aXZlY192Y3RzeHMKCi8qIHZlY19jdHUgKi8KCiNpZmRlZiBfX1ZTWF9fCiNpZmRlZiBfX1hMX0NPTVBBVF9BTFRJVkVDX18KI2RlZmluZSB2ZWNfY3R1KF9fYSwgX19iKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfR2VuZXJpYygoX19hKSwgdmVjdG9yIGZsb2F0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICA6IF9fYnVpbHRpbl9hbHRpdmVjX3ZjdHV4cygodmVjdG9yIGZsb2F0KShfX2EpLCAoX19iKSksICAgICAgICAgICAgIFwKICAgICAgICAgICAgIHZlY3RvciBkb3VibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICA6IF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIHZlY3RvciBkb3VibGUgX19yZXQgPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAodmVjdG9yIGRvdWJsZSkoX19hKSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAodmVjdG9yIGRvdWJsZSkodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZykoKDB4M2ZmVUxMICsgX19iKSAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgNTIpOyAgICAgICAgICAgIFwKICAgICAgICAgICAgIF9fYnVpbHRpbl92c3hfeHZjdmRwdXh3cyhfX3JldCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICB9KSkKI2Vsc2UgLy8gX19YTF9DT01QQVRfQUxUSVZFQ19fCiNkZWZpbmUgdmVjX2N0dShfX2EsIF9fYikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX0dlbmVyaWMoKF9fYSksIHZlY3RvciBmbG9hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgOiBfX2J1aWx0aW5fYWx0aXZlY192Y3R1eHMoKHZlY3RvciBmbG9hdCkoX19hKSwgKF9fYikpLCAgICAgICAgICAgICBcCiAgICAgICAgICAgICB2ZWN0b3IgZG91YmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgOiBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICB2ZWN0b3IgZG91YmxlIF9fcmV0ID0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgKHZlY3RvciBkb3VibGUpKF9fYSkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgKHZlY3RvciBkb3VibGUpKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpKCgweDNmZlVMTCArIF9fYikgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IDUyKTsgICAgICAgICAgICBcCiAgICAgICAgICAgICBfX2J1aWx0aW5fY29udmVydHZlY3RvcihfX3JldCwgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyk7ICAgICAgICBcCiAgICAgICAgICAgfSkpCiNlbmRpZiAvLyBfX1hMX0NPTVBBVF9BTFRJVkVDX18KI2Vsc2UKI2RlZmluZSB2ZWNfY3R1IF9fYnVpbHRpbl9hbHRpdmVjX3ZjdHV4cwojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwovKiB2ZWNfY3RzbCAqLwoKI2lmZGVmIF9fVlNYX18KI2RlZmluZSB2ZWNfY3RzbChfX2EsIF9fYikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfR2VuZXJpYygoX19hKSwgdmVjdG9yIGZsb2F0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICA6IF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgdmVjdG9yIGZsb2F0IF9fcmV0ID0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgZmxvYXQpKF9fYSkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgZmxvYXQpKHZlY3RvciB1bnNpZ25lZCkoKDB4N2YgKyAoX19iKSkgPDwgMjMpOyAgICAgIFwKICAgICAgICAgICAgICAgX19idWlsdGluX3ZzeF94dmN2c3BzeGRzKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgIF9fYnVpbHRpbl92c3hfeHhzbGR3aShfX3JldCwgX19yZXQsIDEpKTsgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIH0pLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIHZlY3RvciBkb3VibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICA6IF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIHZlY3RvciBkb3VibGUgX19yZXQgPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAodmVjdG9yIGRvdWJsZSkoX19hKSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAodmVjdG9yIGRvdWJsZSkodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZykoKDB4M2ZmVUxMICsgX19iKSAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgNTIpOyAgICAgICAgICAgIFwKICAgICAgICAgICAgIF9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKF9fcmV0LCB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyk7ICAgICAgICAgIFwKICAgICAgICAgICB9KSkKCi8qIHZlY19jdHVsICovCgojZGVmaW5lIHZlY19jdHVsKF9fYSwgX19iKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9HZW5lcmljKChfX2EpLCB2ZWN0b3IgZmxvYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgIDogX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICB2ZWN0b3IgZmxvYXQgX19yZXQgPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgKHZlY3RvciBmbG9hdCkoX19hKSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgKHZlY3RvciBmbG9hdCkodmVjdG9yIHVuc2lnbmVkKSgoMHg3ZiArIChfX2IpKSA8PCAyMyk7ICAgICAgXAogICAgICAgICAgICAgICBfX2J1aWx0aW5fdnN4X3h2Y3ZzcHV4ZHMoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgX19idWlsdGluX3ZzeF94eHNsZHdpKF9fcmV0LCBfX3JldCwgMSkpOyAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgfSksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgdmVjdG9yIGRvdWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgIDogX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgdmVjdG9yIGRvdWJsZSBfX3JldCA9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICh2ZWN0b3IgZG91YmxlKShfX2EpICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICh2ZWN0b3IgZG91YmxlKSh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKSgoMHgzZmZVTEwgKyBfX2IpICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCA1Mik7ICAgICAgICAgICAgXAogICAgICAgICAgICAgX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoX19yZXQsIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpOyAgICAgICAgXAogICAgICAgICAgIH0pKQojZW5kaWYKI2Vsc2UgLy8gX19MSVRUTEVfRU5ESUFOX18KLyogdmVjX2N0c2wgKi8KCiNpZmRlZiBfX1ZTWF9fCiNkZWZpbmUgdmVjX2N0c2woX19hLCBfX2IpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX0dlbmVyaWMoKF9fYSksIHZlY3RvciBmbG9hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgOiBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgIHZlY3RvciBmbG9hdCBfX3JldCA9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAodmVjdG9yIGZsb2F0KShfX2EpICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAodmVjdG9yIGZsb2F0KSh2ZWN0b3IgdW5zaWduZWQpKCgweDdmICsgKF9fYikpIDw8IDIzKTsgICAgICBcCiAgICAgICAgICAgICAgIF9fYnVpbHRpbl92c3hfeHZjdnNwc3hkcyhfX3JldCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICB9KSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICB2ZWN0b3IgZG91YmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgOiBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICB2ZWN0b3IgZG91YmxlIF9fcmV0ID0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgKHZlY3RvciBkb3VibGUpKF9fYSkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgKHZlY3RvciBkb3VibGUpKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpKCgweDNmZlVMTCArIF9fYikgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IDUyKTsgICAgICAgICAgICBcCiAgICAgICAgICAgICBfX2J1aWx0aW5fY29udmVydHZlY3RvcihfX3JldCwgdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpOyAgICAgICAgICBcCiAgICAgICAgICAgfSkpCgovKiB2ZWNfY3R1bCAqLwoKI2RlZmluZSB2ZWNfY3R1bChfX2EsIF9fYikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfR2VuZXJpYygoX19hKSwgdmVjdG9yIGZsb2F0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICA6IF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgdmVjdG9yIGZsb2F0IF9fcmV0ID0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgZmxvYXQpKF9fYSkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgZmxvYXQpKHZlY3RvciB1bnNpZ25lZCkoKDB4N2YgKyAoX19iKSkgPDwgMjMpOyAgICAgIFwKICAgICAgICAgICAgICAgX19idWlsdGluX3ZzeF94dmN2c3B1eGRzKF9fcmV0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIH0pLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIHZlY3RvciBkb3VibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICA6IF9fZXh0ZW5zaW9uX18oeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIHZlY3RvciBkb3VibGUgX19yZXQgPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAodmVjdG9yIGRvdWJsZSkoX19hKSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAodmVjdG9yIGRvdWJsZSkodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZykoKDB4M2ZmVUxMICsgX19iKSAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgNTIpOyAgICAgICAgICAgIFwKICAgICAgICAgICAgIF9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKF9fcmV0LCB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKTsgICAgICAgIFwKICAgICAgICAgICB9KSkKI2VuZGlmCiNlbmRpZiAvLyBfX0xJVFRMRV9FTkRJQU5fXwoKLyogdmVjX3ZjdHV4cyAqLwoKI2RlZmluZSB2ZWNfdmN0dXhzIF9fYnVpbHRpbl9hbHRpdmVjX3ZjdHV4cwoKLyogdmVjX3NpZ25leHQgKi8KCiNpZmRlZiBfX1BPV0VSOV9WRUNUT1JfXwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX3NpZ25leHRpKHZlY3RvciBzaWduZWQgY2hhciBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmV4dHNiMncoX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19zaWduZXh0aSh2ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192ZXh0c2gydyhfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX3NpZ25leHRsbCh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZleHRzYjJkKF9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfc2lnbmV4dGxsKHZlY3RvciBzaWduZWQgc2hvcnQgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZleHRzaDJkKF9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfc2lnbmV4dGxsKHZlY3RvciBzaWduZWQgaW50IF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192ZXh0c3cyZChfX2EpOwp9CiNlbmRpZgoKI2lmIGRlZmluZWQoX19QT1dFUjEwX1ZFQ1RPUl9fKSAmJiBkZWZpbmVkKF9fU0laRU9GX0lOVDEyOF9fKQpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fQVRUUlNfb19haQp2ZWNfc2lnbmV4dHEodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZleHRzZDJxKF9fYSk7Cn0KI2VuZGlmCgovKiB2ZWNfc2lnbmVkICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX3NsZCh2ZWN0b3Igc2lnbmVkIGludCwgdmVjdG9yIHNpZ25lZCBpbnQsIHVuc2lnbmVkIGNvbnN0IGludCBfX2MpOwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19zaWduZWQodmVjdG9yIGZsb2F0IF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fY29udmVydHZlY3RvcihfX2EsIHZlY3RvciBzaWduZWQgaW50KTsKfQoKI2lmZGVmIF9fVlNYX18Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19zaWduZWQodmVjdG9yIGRvdWJsZSBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoX19hLCB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgaW50IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKdmVjX3NpZ25lZDIodmVjdG9yIGRvdWJsZSBfX2EsIHZlY3RvciBkb3VibGUgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3Igc2lnbmVkIGludCkgeyBfX2FbMF0sIF9fYVsxXSwgX19iWzBdLCBfX2JbMV0gfTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19zaWduZWRlKHZlY3RvciBkb3VibGUgX19hKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHZlY3RvciBzaWduZWQgaW50IF9fcmV0ID0gX19idWlsdGluX3ZzeF94dmN2ZHBzeHdzKF9fYSk7CiAgcmV0dXJuIHZlY19zbGQoX19yZXQsIF9fcmV0LCAxMik7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfeHZjdmRwc3h3cyhfX2EpOwojZW5kaWYKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19zaWduZWRvKHZlY3RvciBkb3VibGUgX19hKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiBfX2J1aWx0aW5fdnN4X3h2Y3ZkcHN4d3MoX19hKTsKI2Vsc2UKICB2ZWN0b3Igc2lnbmVkIGludCBfX3JldCA9IF9fYnVpbHRpbl92c3hfeHZjdmRwc3h3cyhfX2EpOwogIHJldHVybiB2ZWNfc2xkKF9fcmV0LCBfX3JldCwgMTIpOwojZW5kaWYKfQojZW5kaWYKCi8qIHZlY191bnNpZ25lZCAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX3NsZCh2ZWN0b3IgdW5zaWduZWQgaW50LCB2ZWN0b3IgdW5zaWduZWQgaW50LCB1bnNpZ25lZCBjb25zdCBpbnQgX19jKTsKCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY191bnNpZ25lZCh2ZWN0b3IgZmxvYXQgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCk7Cn0KCiNpZmRlZiBfX1ZTWF9fCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY191bnNpZ25lZCh2ZWN0b3IgZG91YmxlIF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fY29udmVydHZlY3RvcihfX2EsIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKdmVjX3Vuc2lnbmVkMih2ZWN0b3IgZG91YmxlIF9fYSwgdmVjdG9yIGRvdWJsZSBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBpbnQpIHsgX19hWzBdLCBfX2FbMV0sIF9fYlswXSwgX19iWzFdIH07Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY191bnNpZ25lZGUodmVjdG9yIGRvdWJsZSBfX2EpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgdmVjdG9yIHVuc2lnbmVkIGludCBfX3JldCA9IF9fYnVpbHRpbl92c3hfeHZjdmRwdXh3cyhfX2EpOwogIHJldHVybiB2ZWNfc2xkKF9fcmV0LCBfX3JldCwgMTIpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fdnN4X3h2Y3ZkcHV4d3MoX19hKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY191bnNpZ25lZG8odmVjdG9yIGRvdWJsZSBfX2EpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfeHZjdmRwdXh3cyhfX2EpOwojZWxzZQogIHZlY3RvciB1bnNpZ25lZCBpbnQgX19yZXQgPSBfX2J1aWx0aW5fdnN4X3h2Y3ZkcHV4d3MoX19hKTsKICByZXR1cm4gdmVjX3NsZChfX3JldCwgX19yZXQsIDEyKTsKI2VuZGlmCn0KI2VuZGlmCgovKiB2ZWNfZmxvYXQgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkKdmVjX3NsZCh2ZWN0b3IgZmxvYXQsIHZlY3RvciBmbG9hdCwgdW5zaWduZWQgY29uc3QgaW50IF9fYyk7CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpCnZlY19mbG9hdCh2ZWN0b3Igc2lnbmVkIGludCBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoX19hLCB2ZWN0b3IgZmxvYXQpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpCnZlY19mbG9hdCh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fY29udmVydHZlY3RvcihfX2EsIHZlY3RvciBmbG9hdCk7Cn0KCiNpZmRlZiBfX1ZTWF9fCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkKdmVjX2Zsb2F0Mih2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiAodmVjdG9yIGZsb2F0KSB7IF9fYVswXSwgX19hWzFdLCBfX2JbMF0sIF9fYlsxXSB9Owp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpCnZlY19mbG9hdDIodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgZmxvYXQpIHsgX19hWzBdLCBfX2FbMV0sIF9fYlswXSwgX19iWzFdIH07Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkKdmVjX2Zsb2F0Mih2ZWN0b3IgZG91YmxlIF9fYSwgdmVjdG9yIGRvdWJsZSBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBmbG9hdCkgeyBfX2FbMF0sIF9fYVsxXSwgX19iWzBdLCBfX2JbMV0gfTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGZsb2F0IF9fQVRUUlNfb19haQp2ZWNfZmxvYXRlKHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSkgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICB2ZWN0b3IgZmxvYXQgX19yZXQgPSBfX2J1aWx0aW5fdnN4X3h2Y3ZzeGRzcChfX2EpOwogIHJldHVybiB2ZWNfc2xkKF9fcmV0LCBfX3JldCwgMTIpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fdnN4X3h2Y3ZzeGRzcChfX2EpOwojZW5kaWYKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGZsb2F0IF9fQVRUUlNfb19haQp2ZWNfZmxvYXRlKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHZlY3RvciBmbG9hdCBfX3JldCA9IF9fYnVpbHRpbl92c3hfeHZjdnV4ZHNwKF9fYSk7CiAgcmV0dXJuIHZlY19zbGQoX19yZXQsIF9fcmV0LCAxMik7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfeHZjdnV4ZHNwKF9fYSk7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpCnZlY19mbG9hdGUodmVjdG9yIGRvdWJsZSBfX2EpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgdmVjdG9yIGZsb2F0IF9fcmV0ID0gX19idWlsdGluX3ZzeF94dmN2ZHBzcChfX2EpOwogIHJldHVybiB2ZWNfc2xkKF9fcmV0LCBfX3JldCwgMTIpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fdnN4X3h2Y3ZkcHNwKF9fYSk7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpCnZlY19mbG9hdG8odmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiBfX2J1aWx0aW5fdnN4X3h2Y3ZzeGRzcChfX2EpOwojZWxzZQogIHZlY3RvciBmbG9hdCBfX3JldCA9IF9fYnVpbHRpbl92c3hfeHZjdnN4ZHNwKF9fYSk7CiAgcmV0dXJuIHZlY19zbGQoX19yZXQsIF9fcmV0LCAxMik7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpCnZlY19mbG9hdG8odmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfeHZjdnV4ZHNwKF9fYSk7CiNlbHNlCiAgdmVjdG9yIGZsb2F0IF9fcmV0ID0gX19idWlsdGluX3ZzeF94dmN2dXhkc3AoX19hKTsKICByZXR1cm4gdmVjX3NsZChfX3JldCwgX19yZXQsIDEyKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkKdmVjX2Zsb2F0byh2ZWN0b3IgZG91YmxlIF9fYSkgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gX19idWlsdGluX3ZzeF94dmN2ZHBzcChfX2EpOwojZWxzZQogIHZlY3RvciBmbG9hdCBfX3JldCA9IF9fYnVpbHRpbl92c3hfeHZjdmRwc3AoX19hKTsKICByZXR1cm4gdmVjX3NsZChfX3JldCwgX19yZXQsIDEyKTsKI2VuZGlmCn0KI2VuZGlmCgovKiB2ZWNfZG91YmxlICovCgojaWZkZWYgX19WU1hfXwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZG91YmxlIF9fQVRUUlNfb19haQp2ZWNfZG91YmxlKHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fY29udmVydHZlY3RvcihfX2EsIHZlY3RvciBkb3VibGUpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZG91YmxlIF9fQVRUUlNfb19haQp2ZWNfZG91YmxlKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKF9fYSwgdmVjdG9yIGRvdWJsZSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBkb3VibGUgX19BVFRSU19vX2FpCnZlY19kb3VibGVlKHZlY3RvciBzaWduZWQgaW50IF9fYSkgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gX19idWlsdGluX3ZzeF94dmN2c3h3ZHAodmVjX3NsZChfX2EsIF9fYSwgNCkpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fdnN4X3h2Y3ZzeHdkcChfX2EpOwojZW5kaWYKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGRvdWJsZSBfX0FUVFJTX29fYWkKdmVjX2RvdWJsZWUodmVjdG9yIHVuc2lnbmVkIGludCBfX2EpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfeHZjdnV4d2RwKHZlY19zbGQoX19hLCBfX2EsIDQpKTsKI2Vsc2UKICByZXR1cm4gX19idWlsdGluX3ZzeF94dmN2dXh3ZHAoX19hKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBkb3VibGUgX19BVFRSU19vX2FpCnZlY19kb3VibGVlKHZlY3RvciBmbG9hdCBfX2EpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfeHZjdnNwZHAodmVjX3NsZChfX2EsIF9fYSwgNCkpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fdnN4X3h2Y3ZzcGRwKF9fYSk7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZG91YmxlIF9fQVRUUlNfb19haQp2ZWNfZG91YmxlaCh2ZWN0b3Igc2lnbmVkIGludCBfX2EpIHsKICB2ZWN0b3IgZG91YmxlIF9fcmV0ID0ge19fYVswXSwgX19hWzFdfTsKICByZXR1cm4gX19yZXQ7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBkb3VibGUgX19BVFRSU19vX2FpCnZlY19kb3VibGVoKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hKSB7CiAgdmVjdG9yIGRvdWJsZSBfX3JldCA9IHtfX2FbMF0sIF9fYVsxXX07CiAgcmV0dXJuIF9fcmV0Owp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZG91YmxlIF9fQVRUUlNfb19haQp2ZWNfZG91YmxlaCh2ZWN0b3IgZmxvYXQgX19hKSB7CiAgdmVjdG9yIGRvdWJsZSBfX3JldCA9IHtfX2FbMF0sIF9fYVsxXX07CiAgcmV0dXJuIF9fcmV0Owp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZG91YmxlIF9fQVRUUlNfb19haQp2ZWNfZG91YmxlbCh2ZWN0b3Igc2lnbmVkIGludCBfX2EpIHsKICB2ZWN0b3IgZG91YmxlIF9fcmV0ID0ge19fYVsyXSwgX19hWzNdfTsKICByZXR1cm4gX19yZXQ7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBkb3VibGUgX19BVFRSU19vX2FpCnZlY19kb3VibGVsKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hKSB7CiAgdmVjdG9yIGRvdWJsZSBfX3JldCA9IHtfX2FbMl0sIF9fYVszXX07CiAgcmV0dXJuIF9fcmV0Owp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZG91YmxlIF9fQVRUUlNfb19haQp2ZWNfZG91YmxlbCh2ZWN0b3IgZmxvYXQgX19hKSB7CiAgdmVjdG9yIGRvdWJsZSBfX3JldCA9IHtfX2FbMl0sIF9fYVszXX07CiAgcmV0dXJuIF9fcmV0Owp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZG91YmxlIF9fQVRUUlNfb19haQp2ZWNfZG91Ymxlbyh2ZWN0b3Igc2lnbmVkIGludCBfX2EpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfeHZjdnN4d2RwKF9fYSk7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfeHZjdnN4d2RwKHZlY19zbGQoX19hLCBfX2EsIDQpKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBkb3VibGUgX19BVFRSU19vX2FpCnZlY19kb3VibGVvKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiBfX2J1aWx0aW5fdnN4X3h2Y3Z1eHdkcChfX2EpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fdnN4X3h2Y3Z1eHdkcCh2ZWNfc2xkKF9fYSwgX19hLCA0KSk7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZG91YmxlIF9fQVRUUlNfb19haQp2ZWNfZG91Ymxlbyh2ZWN0b3IgZmxvYXQgX19hKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiBfX2J1aWx0aW5fdnN4X3h2Y3ZzcGRwKF9fYSk7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfeHZjdnNwZHAodmVjX3NsZChfX2EsIF9fYSwgNCkpOwojZW5kaWYKfQoKLyogdmVjX2N2ZiAqLwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZG91YmxlIF9fQVRUUlNfb19haSB2ZWNfY3ZmKHZlY3RvciBmbG9hdCBfX2EpIHsKICByZXR1cm4gdmVjX2RvdWJsZWUoX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGZsb2F0IF9fQVRUUlNfb19haSB2ZWNfY3ZmKHZlY3RvciBkb3VibGUgX19hKSB7CiAgcmV0dXJuIHZlY19mbG9hdGUoX19hKTsKfQojZW5kaWYKCi8qIHZlY19kaXYgKi8KCi8qIEludGVnZXIgdmVjdG9yIGRpdmlkZXMgKHZlY3RvcnMgYXJlIHNjYWxhcml6ZWQsIGVsZW1lbnRzIGRpdmlkZWQKICAgYW5kIHRoZSB2ZWN0b3JzIHJlYXNzZW1ibGVkKS4KKi8Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfZGl2KHZlY3RvciBzaWduZWQgY2hhciBfX2EsIHZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19hIC8gX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX2Rpdih2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2EgLyBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY19kaXYodmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciBzaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYSAvIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfZGl2KHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19hIC8gX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX2Rpdih2ZWN0b3Igc2lnbmVkIGludCBfX2EsIHZlY3RvciBzaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX2EgLyBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19kaXYodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYSAvIF9fYjsKfQoKI2lmZGVmIF9fVlNYX18Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19kaXYodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19hIC8gX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfZGl2KHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2EgLyBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkgdmVjX2Rpdih2ZWN0b3IgZmxvYXQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGZsb2F0IF9fYikgewogIHJldHVybiBfX2EgLyBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBkb3VibGUgX19BVFRSU19vX2FpIHZlY19kaXYodmVjdG9yIGRvdWJsZSBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGRvdWJsZSBfX2IpIHsKICByZXR1cm4gX19hIC8gX19iOwp9CiNlbmRpZgoKLyogdmVjX2RpdmUgKi8KCiNpZmRlZiBfX1BPV0VSMTBfVkVDVE9SX18Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19kaXZlKHZlY3RvciBzaWduZWQgaW50IF9fYSwgdmVjdG9yIHNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZkaXZlc3coX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfZGl2ZSh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmRpdmV1dyhfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfZGl2ZSh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192ZGl2ZXNkKF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX2RpdmUodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZkaXZldWQoX19hLCBfX2IpOwp9CgojaWZkZWYgX19TSVpFT0ZfSU5UMTI4X18Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fQVRUUlNfb19haQp2ZWNfZGl2ZSh2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19hLCB2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZkaXZldXEoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fQVRUUlNfb19haQp2ZWNfZGl2ZSh2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fYSwgdmVjdG9yIHNpZ25lZCBfX2ludDEyOCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmRpdmVzcShfX2EsIF9fYik7Cn0KI2VuZGlmCiNlbmRpZgoKI2lmIGRlZmluZWQoX19QT1dFUjEwX1ZFQ1RPUl9fKSAmJiBkZWZpbmVkKF9fU0laRU9GX0lOVDEyOF9fKQpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19BVFRSU19vX2FpCnZlY19kaXYodmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fYSwgdmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fYikgewogIHJldHVybiBfX2EgLyBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgX19pbnQxMjggX19BVFRSU19vX2FpCnZlY19kaXYodmVjdG9yIHNpZ25lZCBfX2ludDEyOCBfX2EsIHZlY3RvciBzaWduZWQgX19pbnQxMjggX19iKSB7CiAgcmV0dXJuIF9fYSAvIF9fYjsKfQojZW5kaWYgLyogX19QT1dFUjEwX1ZFQ1RPUl9fICovCgovKiB2ZWNfeHZ0ZGl2ICovCgojaWZkZWYgX19WU1hfXwpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY190ZXN0X3N3ZGl2KHZlY3RvciBkb3VibGUgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBkb3VibGUgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfeHZ0ZGl2ZHAoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY190ZXN0X3N3ZGl2cyh2ZWN0b3IgZmxvYXQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgZmxvYXQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfeHZ0ZGl2c3AoX19hLCBfX2IpOwp9CiNlbmRpZgoKLyogdmVjX2RzcyAqLwoKI2RlZmluZSB2ZWNfZHNzIF9fYnVpbHRpbl9hbHRpdmVjX2RzcwoKLyogdmVjX2Rzc2FsbCAqLwoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZlY19kc3NhbGwodm9pZCkgewogIF9fYnVpbHRpbl9hbHRpdmVjX2Rzc2FsbCgpOwp9CgovKiB2ZWNfZHN0ICovCiNkZWZpbmUgdmVjX2RzdChfX1BUUiwgX19DVywgX19TVFIpIFwKICBfX2J1aWx0aW5fYWx0aXZlY19kc3QoKGNvbnN0IHZvaWQgKikoX19QVFIpLCAoX19DVyksIChfX1NUUikpCgovKiB2ZWNfZHN0c3QgKi8KI2RlZmluZSB2ZWNfZHN0c3QoX19QVFIsIF9fQ1csIF9fU1RSKSBcCiAgX19idWlsdGluX2FsdGl2ZWNfZHN0c3QoKGNvbnN0IHZvaWQgKikoX19QVFIpLCAoX19DVyksIChfX1NUUikpCgovKiB2ZWNfZHN0c3R0ICovCiNkZWZpbmUgdmVjX2RzdHN0dChfX1BUUiwgX19DVywgX19TVFIpIFwKICBfX2J1aWx0aW5fYWx0aXZlY19kc3RzdHQoKGNvbnN0IHZvaWQgKikoX19QVFIpLCAoX19DVyksIChfX1NUUikpCgovKiB2ZWNfZHN0dCAqLwojZGVmaW5lIHZlY19kc3R0KF9fUFRSLCBfX0NXLCBfX1NUUikgXAogIF9fYnVpbHRpbl9hbHRpdmVjX2RzdHQoKGNvbnN0IHZvaWQgKikoX19QVFIpLCAoX19DVyksIChfX1NUUikpCgovKiB2ZWNfZXF2ICovCgojaWZkZWYgX19QT1dFUjhfVkVDVE9SX18Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfZXF2KHZlY3RvciBzaWduZWQgY2hhciBfX2EsIHZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBzaWduZWQgY2hhcilfX2J1aWx0aW5fdnN4X3h4bGVxdigodmVjdG9yIHVuc2lnbmVkIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19lcXYodmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYnVpbHRpbl92c3hfeHhsZXF2KCh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGNoYXIgX19BVFRSU19vX2FpIHZlY19lcXYodmVjdG9yIGJvb2wgY2hhciBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBib29sIGNoYXIpX19idWlsdGluX3ZzeF94eGxlcXYoKHZlY3RvciB1bnNpZ25lZCBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfZXF2KHZlY3RvciBzaWduZWQgc2hvcnQgX19hLCB2ZWN0b3Igc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiAodmVjdG9yIHNpZ25lZCBzaG9ydClfX2J1aWx0aW5fdnN4X3h4bGVxdigodmVjdG9yIHVuc2lnbmVkIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX2Vxdih2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19idWlsdGluX3ZzeF94eGxlcXYoKHZlY3RvciB1bnNpZ25lZCBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfZXF2KHZlY3RvciBib29sIHNob3J0IF9fYSwgdmVjdG9yIGJvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBzaG9ydClfX2J1aWx0aW5fdnN4X3h4bGVxdigodmVjdG9yIHVuc2lnbmVkIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX2Vxdih2ZWN0b3Igc2lnbmVkIGludCBfX2EsIHZlY3RvciBzaWduZWQgaW50IF9fYikgewogIHJldHVybiAodmVjdG9yIHNpZ25lZCBpbnQpX19idWlsdGluX3ZzeF94eGxlcXYoKHZlY3RvciB1bnNpZ25lZCBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX2Vxdih2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3ZzeF94eGxlcXYoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBpbnQgX19BVFRSU19vX2FpIHZlY19lcXYodmVjdG9yIGJvb2wgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGludCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBib29sIGludClfX2J1aWx0aW5fdnN4X3h4bGVxdigodmVjdG9yIHVuc2lnbmVkIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19lcXYodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYnVpbHRpbl92c3hfeHhsZXF2KAogICAgICAodmVjdG9yIHVuc2lnbmVkIGludClfX2EsICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19lcXYodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYnVpbHRpbl92c3hfeHhsZXF2KAogICAgICAodmVjdG9yIHVuc2lnbmVkIGludClfX2EsICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX2Vxdih2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBsb25nIGxvbmcpX19idWlsdGluX3ZzeF94eGxlcXYoKHZlY3RvciB1bnNpZ25lZCBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkgdmVjX2Vxdih2ZWN0b3IgZmxvYXQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGZsb2F0IF9fYikgewogIHJldHVybiAodmVjdG9yIGZsb2F0KV9fYnVpbHRpbl92c3hfeHhsZXF2KCh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZG91YmxlIF9fQVRUUlNfb19haSB2ZWNfZXF2KHZlY3RvciBkb3VibGUgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBkb3VibGUgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgZG91YmxlKV9fYnVpbHRpbl92c3hfeHhsZXF2KCh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBpbnQpX19iKTsKfQojZW5kaWYKCi8qIHZlY19leHB0ZSAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGZsb2F0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKdmVjX2V4cHRlKHZlY3RvciBmbG9hdCBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmV4cHRlZnAoX19hKTsKfQoKLyogdmVjX3ZleHB0ZWZwICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQp2ZWNfdmV4cHRlZnAodmVjdG9yIGZsb2F0IF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192ZXhwdGVmcChfX2EpOwp9CgovKiB2ZWNfZmxvb3IgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkgdmVjX2Zsb29yKHZlY3RvciBmbG9hdCBfX2EpIHsKI2lmZGVmIF9fVlNYX18KICByZXR1cm4gX19idWlsdGluX3ZzeF94dnJzcGltKF9fYSk7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZyZmltKF9fYSk7CiNlbmRpZgp9CgojaWZkZWYgX19WU1hfXwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZG91YmxlIF9fQVRUUlNfb19haSB2ZWNfZmxvb3IodmVjdG9yIGRvdWJsZSBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX3ZzeF94dnJkcGltKF9fYSk7Cn0KI2VuZGlmCgovKiB2ZWNfcm91bmRtICovCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkgdmVjX3JvdW5kbSh2ZWN0b3IgZmxvYXQgX19hKSB7CiAgcmV0dXJuIHZlY19mbG9vcihfX2EpOwp9CgojaWZkZWYgX19WU1hfXwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZG91YmxlIF9fQVRUUlNfb19haSB2ZWNfcm91bmRtKHZlY3RvciBkb3VibGUgX19hKSB7CiAgcmV0dXJuIHZlY19mbG9vcihfX2EpOwp9CiNlbmRpZgoKLyogdmVjX3ZyZmltICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQp2ZWNfdnJmaW0odmVjdG9yIGZsb2F0IF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192cmZpbShfX2EpOwp9CgovKiB2ZWNfbGQgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX2xkKGxvbmcgX19hLCBjb25zdCB2ZWN0b3Igc2lnbmVkIGNoYXIgKl9fYikgewogIHJldHVybiAodmVjdG9yIHNpZ25lZCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX2x2eChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX2xkKGxvbmcgX19hLCBjb25zdCBzaWduZWQgY2hhciAqX19iKSB7CiAgcmV0dXJuICh2ZWN0b3Igc2lnbmVkIGNoYXIpX19idWlsdGluX2FsdGl2ZWNfbHZ4KF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19sZChsb25nIF9fYSwgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgKl9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19idWlsdGluX2FsdGl2ZWNfbHZ4KF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19sZChsb25nIF9fYSwgY29uc3QgdW5zaWduZWQgY2hhciAqX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2J1aWx0aW5fYWx0aXZlY19sdngoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfbGQobG9uZyBfX2EsIGNvbnN0IHZlY3RvciBib29sIGNoYXIgKl9fYikgewogIHJldHVybiAodmVjdG9yIGJvb2wgY2hhcilfX2J1aWx0aW5fYWx0aXZlY19sdngoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY19sZChsb25nIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVjdG9yIHNob3J0ICpfX2IpIHsKICByZXR1cm4gKHZlY3RvciBzaG9ydClfX2J1aWx0aW5fYWx0aXZlY19sdngoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY19sZChsb25nIF9fYSwgY29uc3Qgc2hvcnQgKl9fYikgewogIHJldHVybiAodmVjdG9yIHNob3J0KV9fYnVpbHRpbl9hbHRpdmVjX2x2eChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX2xkKGxvbmcgX19hLCBjb25zdCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgKl9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYnVpbHRpbl9hbHRpdmVjX2x2eChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX2xkKGxvbmcgX19hLCBjb25zdCB1bnNpZ25lZCBzaG9ydCAqX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19idWlsdGluX2FsdGl2ZWNfbHZ4KF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgc2hvcnQgX19BVFRSU19vX2FpCnZlY19sZChsb25nIF9fYSwgY29uc3QgdmVjdG9yIGJvb2wgc2hvcnQgKl9fYikgewogIHJldHVybiAodmVjdG9yIGJvb2wgc2hvcnQpX19idWlsdGluX2FsdGl2ZWNfbHZ4KF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHBpeGVsIF9fQVRUUlNfb19haSB2ZWNfbGQobG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZlY3RvciBwaXhlbCAqX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgcGl4ZWwpX19idWlsdGluX2FsdGl2ZWNfbHZ4KF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX2xkKGxvbmcgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVjdG9yIGludCAqX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgaW50KV9fYnVpbHRpbl9hbHRpdmVjX2x2eChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY19sZChsb25nIF9fYSwgY29uc3QgaW50ICpfX2IpIHsKICByZXR1cm4gKHZlY3RvciBpbnQpX19idWlsdGluX2FsdGl2ZWNfbHZ4KF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX2xkKGxvbmcgX19hLCBjb25zdCB2ZWN0b3IgdW5zaWduZWQgaW50ICpfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBpbnQpX19idWlsdGluX2FsdGl2ZWNfbHZ4KF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX2xkKGxvbmcgX19hLCBjb25zdCB1bnNpZ25lZCBpbnQgKl9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGludClfX2J1aWx0aW5fYWx0aXZlY19sdngoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBpbnQgX19BVFRSU19vX2FpCnZlY19sZChsb25nIF9fYSwgY29uc3QgdmVjdG9yIGJvb2wgaW50ICpfX2IpIHsKICByZXR1cm4gKHZlY3RvciBib29sIGludClfX2J1aWx0aW5fYWx0aXZlY19sdngoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpIHZlY19sZChsb25nIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVjdG9yIGZsb2F0ICpfX2IpIHsKICByZXR1cm4gKHZlY3RvciBmbG9hdClfX2J1aWx0aW5fYWx0aXZlY19sdngoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpIHZlY19sZChsb25nIF9fYSwgY29uc3QgZmxvYXQgKl9fYikgewogIHJldHVybiAodmVjdG9yIGZsb2F0KV9fYnVpbHRpbl9hbHRpdmVjX2x2eChfX2EsIF9fYik7Cn0KCi8qIHZlY19sdnggKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX2x2eChsb25nIF9fYSwgY29uc3QgdmVjdG9yIHNpZ25lZCBjaGFyICpfX2IpIHsKICByZXR1cm4gKHZlY3RvciBzaWduZWQgY2hhcilfX2J1aWx0aW5fYWx0aXZlY19sdngoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19sdngobG9uZyBfX2EsIGNvbnN0IHNpZ25lZCBjaGFyICpfX2IpIHsKICByZXR1cm4gKHZlY3RvciBzaWduZWQgY2hhcilfX2J1aWx0aW5fYWx0aXZlY19sdngoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX2x2eChsb25nIF9fYSwgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgKl9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19idWlsdGluX2FsdGl2ZWNfbHZ4KF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19sdngobG9uZyBfX2EsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKl9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19idWlsdGluX2FsdGl2ZWNfbHZ4KF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgY2hhciBfX0FUVFJTX29fYWkKdmVjX2x2eChsb25nIF9fYSwgY29uc3QgdmVjdG9yIGJvb2wgY2hhciAqX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX2x2eChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaG9ydCBfX0FUVFJTX29fYWkgdmVjX2x2eChsb25nIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZlY3RvciBzaG9ydCAqX19iKSB7CiAgcmV0dXJuICh2ZWN0b3Igc2hvcnQpX19idWlsdGluX2FsdGl2ZWNfbHZ4KF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfbHZ4KGxvbmcgX19hLCBjb25zdCBzaG9ydCAqX19iKSB7CiAgcmV0dXJuICh2ZWN0b3Igc2hvcnQpX19idWlsdGluX2FsdGl2ZWNfbHZ4KF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfbHZ4KGxvbmcgX19hLCBjb25zdCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgKl9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYnVpbHRpbl9hbHRpdmVjX2x2eChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX2x2eChsb25nIF9fYSwgY29uc3QgdW5zaWduZWQgc2hvcnQgKl9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYnVpbHRpbl9hbHRpdmVjX2x2eChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfbHZ4KGxvbmcgX19hLCBjb25zdCB2ZWN0b3IgYm9vbCBzaG9ydCAqX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBzaG9ydClfX2J1aWx0aW5fYWx0aXZlY19sdngoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgcGl4ZWwgX19BVFRSU19vX2FpIHZlY19sdngobG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2ZWN0b3IgcGl4ZWwgKl9fYikgewogIHJldHVybiAodmVjdG9yIHBpeGVsKV9fYnVpbHRpbl9hbHRpdmVjX2x2eChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY19sdngobG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVjdG9yIGludCAqX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgaW50KV9fYnVpbHRpbl9hbHRpdmVjX2x2eChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY19sdngobG9uZyBfX2EsIGNvbnN0IGludCAqX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgaW50KV9fYnVpbHRpbl9hbHRpdmVjX2x2eChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19sdngobG9uZyBfX2EsIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBpbnQgKl9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGludClfX2J1aWx0aW5fYWx0aXZlY19sdngoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfbHZ4KGxvbmcgX19hLCBjb25zdCB1bnNpZ25lZCBpbnQgKl9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGludClfX2J1aWx0aW5fYWx0aXZlY19sdngoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBpbnQgX19BVFRSU19vX2FpCnZlY19sdngobG9uZyBfX2EsIGNvbnN0IHZlY3RvciBib29sIGludCAqX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBpbnQpX19idWlsdGluX2FsdGl2ZWNfbHZ4KF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGZsb2F0IF9fQVRUUlNfb19haSB2ZWNfbHZ4KGxvbmcgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVjdG9yIGZsb2F0ICpfX2IpIHsKICByZXR1cm4gKHZlY3RvciBmbG9hdClfX2J1aWx0aW5fYWx0aXZlY19sdngoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpIHZlY19sdngobG9uZyBfX2EsIGNvbnN0IGZsb2F0ICpfX2IpIHsKICByZXR1cm4gKHZlY3RvciBmbG9hdClfX2J1aWx0aW5fYWx0aXZlY19sdngoX19hLCBfX2IpOwp9CgovKiB2ZWNfbGRlICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19sZGUobG9uZyBfX2EsIGNvbnN0IHNpZ25lZCBjaGFyICpfX2IpIHsKICByZXR1cm4gKHZlY3RvciBzaWduZWQgY2hhcilfX2J1aWx0aW5fYWx0aXZlY19sdmVieChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfbGRlKGxvbmcgX19hLCBjb25zdCB1bnNpZ25lZCBjaGFyICpfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX2x2ZWJ4KF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfbGRlKGxvbmcgX19hLCBjb25zdCBzaG9ydCAqX19iKSB7CiAgcmV0dXJuICh2ZWN0b3Igc2hvcnQpX19idWlsdGluX2FsdGl2ZWNfbHZlaHgoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY19sZGUobG9uZyBfX2EsIGNvbnN0IHVuc2lnbmVkIHNob3J0ICpfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2J1aWx0aW5fYWx0aXZlY19sdmVoeChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY19sZGUobG9uZyBfX2EsIGNvbnN0IGludCAqX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgaW50KV9fYnVpbHRpbl9hbHRpdmVjX2x2ZXd4KF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX2xkZShsb25nIF9fYSwgY29uc3QgdW5zaWduZWQgaW50ICpfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBpbnQpX19idWlsdGluX2FsdGl2ZWNfbHZld3goX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpIHZlY19sZGUobG9uZyBfX2EsIGNvbnN0IGZsb2F0ICpfX2IpIHsKICByZXR1cm4gKHZlY3RvciBmbG9hdClfX2J1aWx0aW5fYWx0aXZlY19sdmV3eChfX2EsIF9fYik7Cn0KCi8qIHZlY19sdmVieCAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfbHZlYngobG9uZyBfX2EsIGNvbnN0IHNpZ25lZCBjaGFyICpfX2IpIHsKICByZXR1cm4gKHZlY3RvciBzaWduZWQgY2hhcilfX2J1aWx0aW5fYWx0aXZlY19sdmVieChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfbHZlYngobG9uZyBfX2EsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKl9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19idWlsdGluX2FsdGl2ZWNfbHZlYngoX19hLCBfX2IpOwp9CgovKiB2ZWNfbHZlaHggKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaG9ydCBfX0FUVFJTX29fYWkgdmVjX2x2ZWh4KGxvbmcgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG9ydCAqX19iKSB7CiAgcmV0dXJuICh2ZWN0b3Igc2hvcnQpX19idWlsdGluX2FsdGl2ZWNfbHZlaHgoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY19sdmVoeChsb25nIF9fYSwgY29uc3QgdW5zaWduZWQgc2hvcnQgKl9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYnVpbHRpbl9hbHRpdmVjX2x2ZWh4KF9fYSwgX19iKTsKfQoKLyogdmVjX2x2ZXd4ICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgaW50IF9fQVRUUlNfb19haSB2ZWNfbHZld3gobG9uZyBfX2EsIGNvbnN0IGludCAqX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgaW50KV9fYnVpbHRpbl9hbHRpdmVjX2x2ZXd4KF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX2x2ZXd4KGxvbmcgX19hLCBjb25zdCB1bnNpZ25lZCBpbnQgKl9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGludClfX2J1aWx0aW5fYWx0aXZlY19sdmV3eChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkgdmVjX2x2ZXd4KGxvbmcgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCAqX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgZmxvYXQpX19idWlsdGluX2FsdGl2ZWNfbHZld3goX19hLCBfX2IpOwp9CgovKiB2ZWNfbGRsICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19sZGwobG9uZyBfX2EsIGNvbnN0IHZlY3RvciBzaWduZWQgY2hhciAqX19iKSB7CiAgcmV0dXJuICh2ZWN0b3Igc2lnbmVkIGNoYXIpX19idWlsdGluX2FsdGl2ZWNfbHZ4bChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX2xkbChsb25nIF9fYSwgY29uc3Qgc2lnbmVkIGNoYXIgKl9fYikgewogIHJldHVybiAodmVjdG9yIHNpZ25lZCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX2x2eGwoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX2xkbChsb25nIF9fYSwgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgKl9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19idWlsdGluX2FsdGl2ZWNfbHZ4bChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfbGRsKGxvbmcgX19hLCBjb25zdCB1bnNpZ25lZCBjaGFyICpfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX2x2eGwoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfbGRsKGxvbmcgX19hLCBjb25zdCB2ZWN0b3IgYm9vbCBjaGFyICpfX2IpIHsKICByZXR1cm4gKHZlY3RvciBib29sIGNoYXIpX19idWlsdGluX2FsdGl2ZWNfbHZ4bChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaG9ydCBfX0FUVFJTX29fYWkgdmVjX2xkbChsb25nIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZlY3RvciBzaG9ydCAqX19iKSB7CiAgcmV0dXJuICh2ZWN0b3Igc2hvcnQpX19idWlsdGluX2FsdGl2ZWNfbHZ4bChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaG9ydCBfX0FUVFJTX29fYWkgdmVjX2xkbChsb25nIF9fYSwgY29uc3Qgc2hvcnQgKl9fYikgewogIHJldHVybiAodmVjdG9yIHNob3J0KV9fYnVpbHRpbl9hbHRpdmVjX2x2eGwoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY19sZGwobG9uZyBfX2EsIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBzaG9ydCAqX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19idWlsdGluX2FsdGl2ZWNfbHZ4bChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX2xkbChsb25nIF9fYSwgY29uc3QgdW5zaWduZWQgc2hvcnQgKl9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYnVpbHRpbl9hbHRpdmVjX2x2eGwoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX2xkbChsb25nIF9fYSwgY29uc3QgdmVjdG9yIGJvb2wgc2hvcnQgKl9fYikgewogIHJldHVybiAodmVjdG9yIGJvb2wgc2hvcnQpX19idWlsdGluX2FsdGl2ZWNfbHZ4bChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBwaXhlbCBfX0FUVFJTX29fYWkgdmVjX2xkbChsb25nIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZlY3RvciBwaXhlbCAqX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgcGl4ZWwgc2hvcnQpX19idWlsdGluX2FsdGl2ZWNfbHZ4bChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY19sZGwobG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVjdG9yIGludCAqX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgaW50KV9fYnVpbHRpbl9hbHRpdmVjX2x2eGwoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgaW50IF9fQVRUUlNfb19haSB2ZWNfbGRsKGxvbmcgX19hLCBjb25zdCBpbnQgKl9fYikgewogIHJldHVybiAodmVjdG9yIGludClfX2J1aWx0aW5fYWx0aXZlY19sdnhsKF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX2xkbChsb25nIF9fYSwgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGludCAqX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYnVpbHRpbl9hbHRpdmVjX2x2eGwoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfbGRsKGxvbmcgX19hLCBjb25zdCB1bnNpZ25lZCBpbnQgKl9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGludClfX2J1aWx0aW5fYWx0aXZlY19sdnhsKF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgaW50IF9fQVRUUlNfb19haQp2ZWNfbGRsKGxvbmcgX19hLCBjb25zdCB2ZWN0b3IgYm9vbCBpbnQgKl9fYikgewogIHJldHVybiAodmVjdG9yIGJvb2wgaW50KV9fYnVpbHRpbl9hbHRpdmVjX2x2eGwoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpIHZlY19sZGwobG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2ZWN0b3IgZmxvYXQgKl9fYikgewogIHJldHVybiAodmVjdG9yIGZsb2F0KV9fYnVpbHRpbl9hbHRpdmVjX2x2eGwoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpIHZlY19sZGwobG9uZyBfX2EsIGNvbnN0IGZsb2F0ICpfX2IpIHsKICByZXR1cm4gKHZlY3RvciBmbG9hdClfX2J1aWx0aW5fYWx0aXZlY19sdnhsKF9fYSwgX19iKTsKfQoKLyogdmVjX2x2eGwgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX2x2eGwobG9uZyBfX2EsIGNvbnN0IHZlY3RvciBzaWduZWQgY2hhciAqX19iKSB7CiAgcmV0dXJuICh2ZWN0b3Igc2lnbmVkIGNoYXIpX19idWlsdGluX2FsdGl2ZWNfbHZ4bChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX2x2eGwobG9uZyBfX2EsIGNvbnN0IHNpZ25lZCBjaGFyICpfX2IpIHsKICByZXR1cm4gKHZlY3RvciBzaWduZWQgY2hhcilfX2J1aWx0aW5fYWx0aXZlY19sdnhsKF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19sdnhsKGxvbmcgX19hLCBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciAqX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2J1aWx0aW5fYWx0aXZlY19sdnhsKF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19sdnhsKGxvbmcgX19hLCBjb25zdCB1bnNpZ25lZCBjaGFyICpfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX2x2eGwoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfbHZ4bChsb25nIF9fYSwgY29uc3QgdmVjdG9yIGJvb2wgY2hhciAqX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX2x2eGwoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY19sdnhsKGxvbmcgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZlY3RvciBzaG9ydCAqX19iKSB7CiAgcmV0dXJuICh2ZWN0b3Igc2hvcnQpX19idWlsdGluX2FsdGl2ZWNfbHZ4bChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaG9ydCBfX0FUVFJTX29fYWkgdmVjX2x2eGwobG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvcnQgKl9fYikgewogIHJldHVybiAodmVjdG9yIHNob3J0KV9fYnVpbHRpbl9hbHRpdmVjX2x2eGwoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY19sdnhsKGxvbmcgX19hLCBjb25zdCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgKl9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYnVpbHRpbl9hbHRpdmVjX2x2eGwoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY19sdnhsKGxvbmcgX19hLCBjb25zdCB1bnNpZ25lZCBzaG9ydCAqX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19idWlsdGluX2FsdGl2ZWNfbHZ4bChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfbHZ4bChsb25nIF9fYSwgY29uc3QgdmVjdG9yIGJvb2wgc2hvcnQgKl9fYikgewogIHJldHVybiAodmVjdG9yIGJvb2wgc2hvcnQpX19idWlsdGluX2FsdGl2ZWNfbHZ4bChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBwaXhlbCBfX0FUVFJTX29fYWkgdmVjX2x2eGwobG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVjdG9yIHBpeGVsICpfX2IpIHsKICByZXR1cm4gKHZlY3RvciBwaXhlbClfX2J1aWx0aW5fYWx0aXZlY19sdnhsKF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX2x2eGwobG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZlY3RvciBpbnQgKl9fYikgewogIHJldHVybiAodmVjdG9yIGludClfX2J1aWx0aW5fYWx0aXZlY19sdnhsKF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX2x2eGwobG9uZyBfX2EsIGNvbnN0IGludCAqX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgaW50KV9fYnVpbHRpbl9hbHRpdmVjX2x2eGwoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfbHZ4bChsb25nIF9fYSwgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGludCAqX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYnVpbHRpbl9hbHRpdmVjX2x2eGwoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfbHZ4bChsb25nIF9fYSwgY29uc3QgdW5zaWduZWQgaW50ICpfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBpbnQpX19idWlsdGluX2FsdGl2ZWNfbHZ4bChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGludCBfX0FUVFJTX29fYWkKdmVjX2x2eGwobG9uZyBfX2EsIGNvbnN0IHZlY3RvciBib29sIGludCAqX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBpbnQpX19idWlsdGluX2FsdGl2ZWNfbHZ4bChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkgdmVjX2x2eGwobG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVjdG9yIGZsb2F0ICpfX2IpIHsKICByZXR1cm4gKHZlY3RvciBmbG9hdClfX2J1aWx0aW5fYWx0aXZlY19sdnhsKF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGZsb2F0IF9fQVRUUlNfb19haSB2ZWNfbHZ4bChsb25nIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCAqX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgZmxvYXQpX19idWlsdGluX2FsdGl2ZWNfbHZ4bChfX2EsIF9fYik7Cn0KCi8qIHZlY19sb2dlICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQp2ZWNfbG9nZSh2ZWN0b3IgZmxvYXQgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3Zsb2dlZnAoX19hKTsKfQoKLyogdmVjX3Zsb2dlZnAgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCnZlY192bG9nZWZwKHZlY3RvciBmbG9hdCBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmxvZ2VmcChfX2EpOwp9CgovKiB2ZWNfbHZzbCAqLwoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQogICAgX19hdHRyaWJ1dGVfXygoX19kZXByZWNhdGVkX18oInVzZSBhc3NpZ25tZW50IGZvciB1bmFsaWduZWQgbGl0dGxlIGVuZGlhbiBcCmxvYWRzL3N0b3JlcyIpKSkgdmVjX2x2c2woaW50IF9fYSwgY29uc3Qgc2lnbmVkIGNoYXIgKl9fYikgewogIHZlY3RvciB1bnNpZ25lZCBjaGFyIG1hc2sgPQogICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19idWlsdGluX2FsdGl2ZWNfbHZzbChfX2EsIF9fYik7CiAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgcmV2ZXJzZSA9IHsxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNywgIDYsICA1LCAgNCwgIDMsICAyLCAgMSwgMH07CiAgcmV0dXJuIHZlY19wZXJtKG1hc2ssIG1hc2ssIHJldmVyc2UpOwp9CiNlbHNlCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfbHZzbChpbnQgX19hLCBjb25zdCBzaWduZWQgY2hhciAqX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2J1aWx0aW5fYWx0aXZlY19sdnNsKF9fYSwgX19iKTsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKICAgIF9fYXR0cmlidXRlX18oKF9fZGVwcmVjYXRlZF9fKCJ1c2UgYXNzaWdubWVudCBmb3IgdW5hbGlnbmVkIGxpdHRsZSBlbmRpYW4gXApsb2Fkcy9zdG9yZXMiKSkpIHZlY19sdnNsKGludCBfX2EsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKl9fYikgewogIHZlY3RvciB1bnNpZ25lZCBjaGFyIG1hc2sgPQogICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19idWlsdGluX2FsdGl2ZWNfbHZzbChfX2EsIF9fYik7CiAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgcmV2ZXJzZSA9IHsxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNywgIDYsICA1LCAgNCwgIDMsICAyLCAgMSwgMH07CiAgcmV0dXJuIHZlY19wZXJtKG1hc2ssIG1hc2ssIHJldmVyc2UpOwp9CiNlbHNlCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfbHZzbChpbnQgX19hLCBjb25zdCB1bnNpZ25lZCBjaGFyICpfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX2x2c2woX19hLCBfX2IpOwp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQogICAgX19hdHRyaWJ1dGVfXygoX19kZXByZWNhdGVkX18oInVzZSBhc3NpZ25tZW50IGZvciB1bmFsaWduZWQgbGl0dGxlIGVuZGlhbiBcCmxvYWRzL3N0b3JlcyIpKSkgdmVjX2x2c2woaW50IF9fYSwgY29uc3Qgc2hvcnQgKl9fYikgewogIHZlY3RvciB1bnNpZ25lZCBjaGFyIG1hc2sgPQogICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19idWlsdGluX2FsdGl2ZWNfbHZzbChfX2EsIF9fYik7CiAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgcmV2ZXJzZSA9IHsxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNywgIDYsICA1LCAgNCwgIDMsICAyLCAgMSwgMH07CiAgcmV0dXJuIHZlY19wZXJtKG1hc2ssIG1hc2ssIHJldmVyc2UpOwp9CiNlbHNlCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haSB2ZWNfbHZzbChpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvcnQgKl9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19idWlsdGluX2FsdGl2ZWNfbHZzbChfX2EsIF9fYik7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCiAgICBfX2F0dHJpYnV0ZV9fKChfX2RlcHJlY2F0ZWRfXygidXNlIGFzc2lnbm1lbnQgZm9yIHVuYWxpZ25lZCBsaXR0bGUgZW5kaWFuIFwKbG9hZHMvc3RvcmVzIikpKSB2ZWNfbHZzbChpbnQgX19hLCBjb25zdCB1bnNpZ25lZCBzaG9ydCAqX19iKSB7CiAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgbWFzayA9CiAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2J1aWx0aW5fYWx0aXZlY19sdnNsKF9fYSwgX19iKTsKICB2ZWN0b3IgdW5zaWduZWQgY2hhciByZXZlcnNlID0gezE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LCAgNiwgIDUsICA0LCAgMywgIDIsICAxLCAwfTsKICByZXR1cm4gdmVjX3Blcm0obWFzaywgbWFzaywgcmV2ZXJzZSk7Cn0KI2Vsc2UKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19sdnNsKGludCBfX2EsIGNvbnN0IHVuc2lnbmVkIHNob3J0ICpfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX2x2c2woX19hLCBfX2IpOwp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQogICAgX19hdHRyaWJ1dGVfXygoX19kZXByZWNhdGVkX18oInVzZSBhc3NpZ25tZW50IGZvciB1bmFsaWduZWQgbGl0dGxlIGVuZGlhbiBcCmxvYWRzL3N0b3JlcyIpKSkgdmVjX2x2c2woaW50IF9fYSwgY29uc3QgaW50ICpfX2IpIHsKICB2ZWN0b3IgdW5zaWduZWQgY2hhciBtYXNrID0KICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX2x2c2woX19hLCBfX2IpOwogIHZlY3RvciB1bnNpZ25lZCBjaGFyIHJldmVyc2UgPSB7MTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcsICA2LCAgNSwgIDQsICAzLCAgMiwgIDEsIDB9OwogIHJldHVybiB2ZWNfcGVybShtYXNrLCBtYXNrLCByZXZlcnNlKTsKfQojZWxzZQpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkgdmVjX2x2c2woaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCAqX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2J1aWx0aW5fYWx0aXZlY19sdnNsKF9fYSwgX19iKTsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKICAgIF9fYXR0cmlidXRlX18oKF9fZGVwcmVjYXRlZF9fKCJ1c2UgYXNzaWdubWVudCBmb3IgdW5hbGlnbmVkIGxpdHRsZSBlbmRpYW4gXApsb2Fkcy9zdG9yZXMiKSkpIHZlY19sdnNsKGludCBfX2EsIGNvbnN0IHVuc2lnbmVkIGludCAqX19iKSB7CiAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgbWFzayA9CiAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2J1aWx0aW5fYWx0aXZlY19sdnNsKF9fYSwgX19iKTsKICB2ZWN0b3IgdW5zaWduZWQgY2hhciByZXZlcnNlID0gezE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LCAgNiwgIDUsICA0LCAgMywgIDIsICAxLCAwfTsKICByZXR1cm4gdmVjX3Blcm0obWFzaywgbWFzaywgcmV2ZXJzZSk7Cn0KI2Vsc2UKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19sdnNsKGludCBfX2EsIGNvbnN0IHVuc2lnbmVkIGludCAqX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2J1aWx0aW5fYWx0aXZlY19sdnNsKF9fYSwgX19iKTsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKICAgIF9fYXR0cmlidXRlX18oKF9fZGVwcmVjYXRlZF9fKCJ1c2UgYXNzaWdubWVudCBmb3IgdW5hbGlnbmVkIGxpdHRsZSBlbmRpYW4gXApsb2Fkcy9zdG9yZXMiKSkpIHZlY19sdnNsKGludCBfX2EsIGNvbnN0IGZsb2F0ICpfX2IpIHsKICB2ZWN0b3IgdW5zaWduZWQgY2hhciBtYXNrID0KICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX2x2c2woX19hLCBfX2IpOwogIHZlY3RvciB1bnNpZ25lZCBjaGFyIHJldmVyc2UgPSB7MTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcsICA2LCAgNSwgIDQsICAzLCAgMiwgIDEsIDB9OwogIHJldHVybiB2ZWNfcGVybShtYXNrLCBtYXNrLCByZXZlcnNlKTsKfQojZWxzZQpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkgdmVjX2x2c2woaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0ICpfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX2x2c2woX19hLCBfX2IpOwp9CiNlbmRpZgoKLyogdmVjX2x2c3IgKi8KCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKICAgIF9fYXR0cmlidXRlX18oKF9fZGVwcmVjYXRlZF9fKCJ1c2UgYXNzaWdubWVudCBmb3IgdW5hbGlnbmVkIGxpdHRsZSBlbmRpYW4gXApsb2Fkcy9zdG9yZXMiKSkpIHZlY19sdnNyKGludCBfX2EsIGNvbnN0IHNpZ25lZCBjaGFyICpfX2IpIHsKICB2ZWN0b3IgdW5zaWduZWQgY2hhciBtYXNrID0KICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX2x2c3IoX19hLCBfX2IpOwogIHZlY3RvciB1bnNpZ25lZCBjaGFyIHJldmVyc2UgPSB7MTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcsICA2LCAgNSwgIDQsICAzLCAgMiwgIDEsIDB9OwogIHJldHVybiB2ZWNfcGVybShtYXNrLCBtYXNrLCByZXZlcnNlKTsKfQojZWxzZQpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX2x2c3IoaW50IF9fYSwgY29uc3Qgc2lnbmVkIGNoYXIgKl9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19idWlsdGluX2FsdGl2ZWNfbHZzcihfX2EsIF9fYik7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCiAgICBfX2F0dHJpYnV0ZV9fKChfX2RlcHJlY2F0ZWRfXygidXNlIGFzc2lnbm1lbnQgZm9yIHVuYWxpZ25lZCBsaXR0bGUgZW5kaWFuIFwKbG9hZHMvc3RvcmVzIikpKSB2ZWNfbHZzcihpbnQgX19hLCBjb25zdCB1bnNpZ25lZCBjaGFyICpfX2IpIHsKICB2ZWN0b3IgdW5zaWduZWQgY2hhciBtYXNrID0KICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX2x2c3IoX19hLCBfX2IpOwogIHZlY3RvciB1bnNpZ25lZCBjaGFyIHJldmVyc2UgPSB7MTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcsICA2LCAgNSwgIDQsICAzLCAgMiwgIDEsIDB9OwogIHJldHVybiB2ZWNfcGVybShtYXNrLCBtYXNrLCByZXZlcnNlKTsKfQojZWxzZQpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX2x2c3IoaW50IF9fYSwgY29uc3QgdW5zaWduZWQgY2hhciAqX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2J1aWx0aW5fYWx0aXZlY19sdnNyKF9fYSwgX19iKTsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKICAgIF9fYXR0cmlidXRlX18oKF9fZGVwcmVjYXRlZF9fKCJ1c2UgYXNzaWdubWVudCBmb3IgdW5hbGlnbmVkIGxpdHRsZSBlbmRpYW4gXApsb2Fkcy9zdG9yZXMiKSkpIHZlY19sdnNyKGludCBfX2EsIGNvbnN0IHNob3J0ICpfX2IpIHsKICB2ZWN0b3IgdW5zaWduZWQgY2hhciBtYXNrID0KICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX2x2c3IoX19hLCBfX2IpOwogIHZlY3RvciB1bnNpZ25lZCBjaGFyIHJldmVyc2UgPSB7MTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcsICA2LCAgNSwgIDQsICAzLCAgMiwgIDEsIDB9OwogIHJldHVybiB2ZWNfcGVybShtYXNrLCBtYXNrLCByZXZlcnNlKTsKfQojZWxzZQpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkgdmVjX2x2c3IoaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNob3J0ICpfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX2x2c3IoX19hLCBfX2IpOwp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQogICAgX19hdHRyaWJ1dGVfXygoX19kZXByZWNhdGVkX18oInVzZSBhc3NpZ25tZW50IGZvciB1bmFsaWduZWQgbGl0dGxlIGVuZGlhbiBcCmxvYWRzL3N0b3JlcyIpKSkgdmVjX2x2c3IoaW50IF9fYSwgY29uc3QgdW5zaWduZWQgc2hvcnQgKl9fYikgewogIHZlY3RvciB1bnNpZ25lZCBjaGFyIG1hc2sgPQogICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19idWlsdGluX2FsdGl2ZWNfbHZzcihfX2EsIF9fYik7CiAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgcmV2ZXJzZSA9IHsxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNywgIDYsICA1LCAgNCwgIDMsICAyLCAgMSwgMH07CiAgcmV0dXJuIHZlY19wZXJtKG1hc2ssIG1hc2ssIHJldmVyc2UpOwp9CiNlbHNlCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfbHZzcihpbnQgX19hLCBjb25zdCB1bnNpZ25lZCBzaG9ydCAqX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2J1aWx0aW5fYWx0aXZlY19sdnNyKF9fYSwgX19iKTsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKICAgIF9fYXR0cmlidXRlX18oKF9fZGVwcmVjYXRlZF9fKCJ1c2UgYXNzaWdubWVudCBmb3IgdW5hbGlnbmVkIGxpdHRsZSBlbmRpYW4gXApsb2Fkcy9zdG9yZXMiKSkpIHZlY19sdnNyKGludCBfX2EsIGNvbnN0IGludCAqX19iKSB7CiAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgbWFzayA9CiAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2J1aWx0aW5fYWx0aXZlY19sdnNyKF9fYSwgX19iKTsKICB2ZWN0b3IgdW5zaWduZWQgY2hhciByZXZlcnNlID0gezE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LCAgNiwgIDUsICA0LCAgMywgIDIsICAxLCAwfTsKICByZXR1cm4gdmVjX3Blcm0obWFzaywgbWFzaywgcmV2ZXJzZSk7Cn0KI2Vsc2UKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpIHZlY19sdnNyKGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgKl9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19idWlsdGluX2FsdGl2ZWNfbHZzcihfX2EsIF9fYik7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCiAgICBfX2F0dHJpYnV0ZV9fKChfX2RlcHJlY2F0ZWRfXygidXNlIGFzc2lnbm1lbnQgZm9yIHVuYWxpZ25lZCBsaXR0bGUgZW5kaWFuIFwKbG9hZHMvc3RvcmVzIikpKSB2ZWNfbHZzcihpbnQgX19hLCBjb25zdCB1bnNpZ25lZCBpbnQgKl9fYikgewogIHZlY3RvciB1bnNpZ25lZCBjaGFyIG1hc2sgPQogICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19idWlsdGluX2FsdGl2ZWNfbHZzcihfX2EsIF9fYik7CiAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgcmV2ZXJzZSA9IHsxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNywgIDYsICA1LCAgNCwgIDMsICAyLCAgMSwgMH07CiAgcmV0dXJuIHZlY19wZXJtKG1hc2ssIG1hc2ssIHJldmVyc2UpOwp9CiNlbHNlCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfbHZzcihpbnQgX19hLCBjb25zdCB1bnNpZ25lZCBpbnQgKl9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19idWlsdGluX2FsdGl2ZWNfbHZzcihfX2EsIF9fYik7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCiAgICBfX2F0dHJpYnV0ZV9fKChfX2RlcHJlY2F0ZWRfXygidXNlIGFzc2lnbm1lbnQgZm9yIHVuYWxpZ25lZCBsaXR0bGUgZW5kaWFuIFwKbG9hZHMvc3RvcmVzIikpKSB2ZWNfbHZzcihpbnQgX19hLCBjb25zdCBmbG9hdCAqX19iKSB7CiAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgbWFzayA9CiAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2J1aWx0aW5fYWx0aXZlY19sdnNyKF9fYSwgX19iKTsKICB2ZWN0b3IgdW5zaWduZWQgY2hhciByZXZlcnNlID0gezE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LCAgNiwgIDUsICA0LCAgMywgIDIsICAxLCAwfTsKICByZXR1cm4gdmVjX3Blcm0obWFzaywgbWFzaywgcmV2ZXJzZSk7Cn0KI2Vsc2UKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpIHZlY19sdnNyKGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCAqX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2J1aWx0aW5fYWx0aXZlY19sdnNyKF9fYSwgX19iKTsKfQojZW5kaWYKCi8qIHZlY19tYWRkICovCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY19tbGFkZCh2ZWN0b3Igc2lnbmVkIHNob3J0LCB2ZWN0b3Igc2lnbmVkIHNob3J0LCB2ZWN0b3Igc2lnbmVkIHNob3J0KTsKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX21sYWRkKHZlY3RvciBzaWduZWQgc2hvcnQsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCwgdmVjdG9yIHVuc2lnbmVkIHNob3J0KTsKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX21sYWRkKHZlY3RvciB1bnNpZ25lZCBzaG9ydCwgdmVjdG9yIHNpZ25lZCBzaG9ydCwgdmVjdG9yIHNpZ25lZCBzaG9ydCk7CnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX21sYWRkKHZlY3RvciB1bnNpZ25lZCBzaG9ydCwgdmVjdG9yIHVuc2lnbmVkIHNob3J0LCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQpOwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkgdmVjX21hZGQoCiAgICB2ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2IsIHZlY3RvciBzaWduZWQgc2hvcnQgX19jKSB7CiAgcmV0dXJuIHZlY19tbGFkZChfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX21hZGQodmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IsCiAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2MpIHsKICByZXR1cm4gdmVjX21sYWRkKF9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfbWFkZCh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3Igc2lnbmVkIHNob3J0IF9fYiwKICAgICAgICAgdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2MpIHsKICByZXR1cm4gdmVjX21sYWRkKF9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY19tYWRkKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IsCiAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2MpIHsKICByZXR1cm4gdmVjX21sYWRkKF9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpIHZlY19tYWRkKHZlY3RvciBmbG9hdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGZsb2F0IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgZmxvYXQgX19jKSB7CiNpZmRlZiBfX1ZTWF9fCiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfeHZtYWRkYXNwKF9fYSwgX19iLCBfX2MpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bWFkZGZwKF9fYSwgX19iLCBfX2MpOwojZW5kaWYKfQoKI2lmZGVmIF9fVlNYX18Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGRvdWJsZSBfX0FUVFJTX29fYWkgdmVjX21hZGQodmVjdG9yIGRvdWJsZSBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBkb3VibGUgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgZG91YmxlIF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fdnN4X3h2bWFkZGFkcChfX2EsIF9fYiwgX19jKTsKfQojZW5kaWYKCi8qIHZlY192bWFkZGZwICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQp2ZWNfdm1hZGRmcCh2ZWN0b3IgZmxvYXQgX19hLCB2ZWN0b3IgZmxvYXQgX19iLCB2ZWN0b3IgZmxvYXQgX19jKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtYWRkZnAoX19hLCBfX2IsIF9fYyk7Cn0KCi8qIHZlY19tYWRkcyAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCnZlY19tYWRkcyh2ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2IsCiAgICAgICAgICB2ZWN0b3Igc2lnbmVkIHNob3J0IF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bWhhZGRzaHMoX19hLCBfX2IsIF9fYyk7Cn0KCi8qIHZlY192bWhhZGRzaHMgKi8Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCnZlY192bWhhZGRzaHModmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciBzaWduZWQgc2hvcnQgX19iLAogICAgICAgICAgICAgIHZlY3RvciBzaWduZWQgc2hvcnQgX19jKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtaGFkZHNocyhfX2EsIF9fYiwgX19jKTsKfQoKLyogdmVjX21zdWIgKi8KCiNpZmRlZiBfX1ZTWF9fCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkgdmVjX21zdWIodmVjdG9yIGZsb2F0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgZmxvYXQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBmbG9hdCBfX2MpIHsKICByZXR1cm4gX19idWlsdGluX3ZzeF94dm1zdWJhc3AoX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBkb3VibGUgX19BVFRSU19vX2FpIHZlY19tc3ViKHZlY3RvciBkb3VibGUgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgZG91YmxlIF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGRvdWJsZSBfX2MpIHsKICByZXR1cm4gX19idWlsdGluX3ZzeF94dm1zdWJhZHAoX19hLCBfX2IsIF9fYyk7Cn0KI2VuZGlmCgovKiB2ZWNfbWF4ICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19tYXgodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bWF4c2IoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19tYXgodmVjdG9yIGJvb2wgY2hhciBfX2EsIHZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm1heHNiKCh2ZWN0b3Igc2lnbmVkIGNoYXIpX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19tYXgodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIGJvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm1heHNiKF9fYSwgKHZlY3RvciBzaWduZWQgY2hhcilfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX21heCh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bWF4dWIoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX21heCh2ZWN0b3IgYm9vbCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtYXh1YigodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX21heCh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciBib29sIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtYXh1YihfX2EsICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY19tYXgodmVjdG9yIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm1heHNoKF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfbWF4KHZlY3RvciBib29sIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm1heHNoKCh2ZWN0b3Igc2hvcnQpX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY19tYXgodmVjdG9yIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bWF4c2goX19hLCAodmVjdG9yIHNob3J0KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX21heCh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtYXh1aChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX21heCh2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm1heHVoKCh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY19tYXgodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIGJvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtYXh1aChfX2EsICh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX21heCh2ZWN0b3IgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bWF4c3coX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgaW50IF9fQVRUUlNfb19haSB2ZWNfbWF4KHZlY3RvciBib29sIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm1heHN3KCh2ZWN0b3IgaW50KV9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX21heCh2ZWN0b3IgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtYXhzdyhfX2EsICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19tYXgodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtYXh1dyhfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19tYXgodmVjdG9yIGJvb2wgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm1heHV3KCh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX21heCh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIGJvb2wgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bWF4dXcoX19hLCAodmVjdG9yIHVuc2lnbmVkIGludClfX2IpOwp9CgojaWZkZWYgX19QT1dFUjhfVkVDVE9SX18Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19tYXgodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm1heHNkKF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19tYXgodmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtYXhzZCgodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX21heCh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm1heHNkKF9fYSwgKHZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19tYXgodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtYXh1ZChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19tYXgodmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm1heHVkKCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX21heCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bWF4dWQoX19hLCAodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2IpOwp9CiNlbmRpZgoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGZsb2F0IF9fQVRUUlNfb19haSB2ZWNfbWF4KHZlY3RvciBmbG9hdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgZmxvYXQgX19iKSB7CiNpZmRlZiBfX1ZTWF9fCiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfeHZtYXhzcChfX2EsIF9fYik7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtYXhmcChfX2EsIF9fYik7CiNlbmRpZgp9CgojaWZkZWYgX19WU1hfXwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZG91YmxlIF9fQVRUUlNfb19haSB2ZWNfbWF4KHZlY3RvciBkb3VibGUgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBkb3VibGUgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfeHZtYXhkcChfX2EsIF9fYik7Cn0KI2VuZGlmCgovKiB2ZWNfdm1heHNiICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY192bWF4c2IodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bWF4c2IoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY192bWF4c2IodmVjdG9yIGJvb2wgY2hhciBfX2EsIHZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm1heHNiKCh2ZWN0b3Igc2lnbmVkIGNoYXIpX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY192bWF4c2IodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIGJvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm1heHNiKF9fYSwgKHZlY3RvciBzaWduZWQgY2hhcilfX2IpOwp9CgovKiB2ZWNfdm1heHViICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3ZtYXh1Yih2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bWF4dWIoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3ZtYXh1Yih2ZWN0b3IgYm9vbCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtYXh1YigodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3ZtYXh1Yih2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciBib29sIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtYXh1YihfX2EsICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgovKiB2ZWNfdm1heHNoICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY192bWF4c2godmVjdG9yIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm1heHNoKF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfdm1heHNoKHZlY3RvciBib29sIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm1heHNoKCh2ZWN0b3Igc2hvcnQpX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY192bWF4c2godmVjdG9yIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bWF4c2goX19hLCAodmVjdG9yIHNob3J0KV9fYik7Cn0KCi8qIHZlY192bWF4dWggKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3ZtYXh1aCh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtYXh1aChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3ZtYXh1aCh2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm1heHVoKCh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY192bWF4dWgodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIGJvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtYXh1aChfX2EsICh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19iKTsKfQoKLyogdmVjX3ZtYXhzdyAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX3ZtYXhzdyh2ZWN0b3IgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bWF4c3coX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgaW50IF9fQVRUUlNfb19haSB2ZWNfdm1heHN3KHZlY3RvciBib29sIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm1heHN3KCh2ZWN0b3IgaW50KV9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX3ZtYXhzdyh2ZWN0b3IgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtYXhzdyhfX2EsICh2ZWN0b3IgaW50KV9fYik7Cn0KCi8qIHZlY192bWF4dXcgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY192bWF4dXcodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtYXh1dyhfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY192bWF4dXcodmVjdG9yIGJvb2wgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm1heHV3KCh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX3ZtYXh1dyh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIGJvb2wgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bWF4dXcoX19hLCAodmVjdG9yIHVuc2lnbmVkIGludClfX2IpOwp9CgovKiB2ZWNfdm1heGZwICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQp2ZWNfdm1heGZwKHZlY3RvciBmbG9hdCBfX2EsIHZlY3RvciBmbG9hdCBfX2IpIHsKI2lmZGVmIF9fVlNYX18KICByZXR1cm4gX19idWlsdGluX3ZzeF94dm1heHNwKF9fYSwgX19iKTsKI2Vsc2UKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm1heGZwKF9fYSwgX19iKTsKI2VuZGlmCn0KCi8qIHZlY19tZXJnZWggKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX21lcmdlaCh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIHZlY19wZXJtKF9fYSwgX19iLAogICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKDB4MDAsIDB4MTAsIDB4MDEsIDB4MTEsIDB4MDIsIDB4MTIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMywgMHgxMywgMHgwNCwgMHgxNCwgMHgwNSwgMHgxNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA2LCAweDE2LCAweDA3LCAweDE3KSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfbWVyZ2VoKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIHZlY19wZXJtKF9fYSwgX19iLAogICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKDB4MDAsIDB4MTAsIDB4MDEsIDB4MTEsIDB4MDIsIDB4MTIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMywgMHgxMywgMHgwNCwgMHgxNCwgMHgwNSwgMHgxNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA2LCAweDE2LCAweDA3LCAweDE3KSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGNoYXIgX19BVFRSU19vX2FpCnZlY19tZXJnZWgodmVjdG9yIGJvb2wgY2hhciBfX2EsIHZlY3RvciBib29sIGNoYXIgX19iKSB7CiAgcmV0dXJuIHZlY19wZXJtKF9fYSwgX19iLAogICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKDB4MDAsIDB4MTAsIDB4MDEsIDB4MTEsIDB4MDIsIDB4MTIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMywgMHgxMywgMHgwNCwgMHgxNCwgMHgwNSwgMHgxNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA2LCAweDE2LCAweDA3LCAweDE3KSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaG9ydCBfX0FUVFJTX29fYWkgdmVjX21lcmdlaCh2ZWN0b3Igc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNob3J0IF9fYikgewogIHJldHVybiB2ZWNfcGVybShfX2EsIF9fYiwKICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgweDAwLCAweDAxLCAweDEwLCAweDExLCAweDAyLCAweDAzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4MTMsIDB4MDQsIDB4MDUsIDB4MTQsIDB4MTUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwNiwgMHgwNywgMHgxNiwgMHgxNykpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY19tZXJnZWgodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiB2ZWNfcGVybShfX2EsIF9fYiwKICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgweDAwLCAweDAxLCAweDEwLCAweDExLCAweDAyLCAweDAzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4MTMsIDB4MDQsIDB4MDUsIDB4MTQsIDB4MTUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwNiwgMHgwNywgMHgxNiwgMHgxNykpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX21lcmdlaCh2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsIHZlY3RvciBib29sIHNob3J0IF9fYikgewogIHJldHVybiB2ZWNfcGVybShfX2EsIF9fYiwKICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgweDAwLCAweDAxLCAweDEwLCAweDExLCAweDAyLCAweDAzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4MTMsIDB4MDQsIDB4MDUsIDB4MTQsIDB4MTUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwNiwgMHgwNywgMHgxNiwgMHgxNykpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgcGl4ZWwgX19BVFRSU19vX2FpIHZlY19tZXJnZWgodmVjdG9yIHBpeGVsIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBwaXhlbCBfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0oX19hLCBfX2IsCiAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMHgwMCwgMHgwMSwgMHgxMCwgMHgxMSwgMHgwMiwgMHgwMywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweDEzLCAweDA0LCAweDA1LCAweDE0LCAweDE1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDYsIDB4MDcsIDB4MTYsIDB4MTcpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX21lcmdlaCh2ZWN0b3IgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgaW50IF9fYikgewogIHJldHVybiB2ZWNfcGVybShfX2EsIF9fYiwKICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgweDAwLCAweDAxLCAweDAyLCAweDAzLCAweDEwLCAweDExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4MTMsIDB4MDQsIDB4MDUsIDB4MDYsIDB4MDcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNCwgMHgxNSwgMHgxNiwgMHgxNykpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfbWVyZ2VoKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiB2ZWNfcGVybShfX2EsIF9fYiwKICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgweDAwLCAweDAxLCAweDAyLCAweDAzLCAweDEwLCAweDExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4MTMsIDB4MDQsIDB4MDUsIDB4MDYsIDB4MDcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNCwgMHgxNSwgMHgxNiwgMHgxNykpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBpbnQgX19BVFRSU19vX2FpIHZlY19tZXJnZWgodmVjdG9yIGJvb2wgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGludCBfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0oX19hLCBfX2IsCiAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMHgwMCwgMHgwMSwgMHgwMiwgMHgwMywgMHgxMCwgMHgxMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweDEzLCAweDA0LCAweDA1LCAweDA2LCAweDA3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTQsIDB4MTUsIDB4MTYsIDB4MTcpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGZsb2F0IF9fQVRUUlNfb19haSB2ZWNfbWVyZ2VoKHZlY3RvciBmbG9hdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgZmxvYXQgX19iKSB7CiAgcmV0dXJuIHZlY19wZXJtKF9fYSwgX19iLAogICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKDB4MDAsIDB4MDEsIDB4MDIsIDB4MDMsIDB4MTAsIDB4MTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHgxMywgMHgwNCwgMHgwNSwgMHgwNiwgMHgwNywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE0LCAweDE1LCAweDE2LCAweDE3KSk7Cn0KCiNpZmRlZiBfX1ZTWF9fCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfbWVyZ2VoKHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIHZlY19wZXJtKF9fYSwgX19iLAogICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKDB4MDAsIDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQsIDB4MDUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwNiwgMHgwNywgMHgxMCwgMHgxMSwgMHgxMiwgMHgxMywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE0LCAweDE1LCAweDE2LCAweDE3KSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfbWVyZ2VoKHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYikgewogIHJldHVybiB2ZWNfcGVybShfX2EsICh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2IsCiAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMHgwMCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCwgMHgwNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA2LCAweDA3LCAweDEwLCAweDExLCAweDEyLCAweDEzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTQsIDB4MTUsIDB4MTYsIDB4MTcpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19tZXJnZWgodmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIHZlY19wZXJtKCh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2EsIF9fYiwKICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgweDAwLCAweDAxLCAweDAyLCAweDAzLCAweDA0LCAweDA1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDYsIDB4MDcsIDB4MTAsIDB4MTEsIDB4MTIsIDB4MTMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNCwgMHgxNSwgMHgxNiwgMHgxNykpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfbWVyZ2VoKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiB2ZWNfcGVybShfX2EsIF9fYiwKICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgweDAwLCAweDAxLCAweDAyLCAweDAzLCAweDA0LCAweDA1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDYsIDB4MDcsIDB4MTAsIDB4MTEsIDB4MTIsIDB4MTMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNCwgMHgxNSwgMHgxNiwgMHgxNykpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfbWVyZ2VoKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIHZlY19wZXJtKF9fYSwgKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19iLAogICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKDB4MDAsIDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQsIDB4MDUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwNiwgMHgwNywgMHgxMCwgMHgxMSwgMHgxMiwgMHgxMywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE0LCAweDE1LCAweDE2LCAweDE3KSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19tZXJnZWgodmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0oKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19hLCBfX2IsCiAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMHgwMCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCwgMHgwNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA2LCAweDA3LCAweDEwLCAweDExLCAweDEyLCAweDEzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTQsIDB4MTUsIDB4MTYsIDB4MTcpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfbWVyZ2VoKHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2EsIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0oX19hLCBfX2IsCiAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMHgwMCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCwgMHgwNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA2LCAweDA3LCAweDEwLCAweDExLCAweDEyLCAweDEzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTQsIDB4MTUsIDB4MTYsIDB4MTcpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGRvdWJsZSBfX0FUVFJTX29fYWkgdmVjX21lcmdlaCh2ZWN0b3IgZG91YmxlIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgZG91YmxlIF9fYikgewogIHJldHVybiB2ZWNfcGVybShfX2EsIF9fYiwKICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgweDAwLCAweDAxLCAweDAyLCAweDAzLCAweDA0LCAweDA1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDYsIDB4MDcsIDB4MTAsIDB4MTEsIDB4MTIsIDB4MTMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNCwgMHgxNSwgMHgxNiwgMHgxNykpOwp9CnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBkb3VibGUgX19BVFRSU19vX2FpCnZlY19tZXJnZWgodmVjdG9yIGRvdWJsZSBfX2EsIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0oX19hLCAodmVjdG9yIGRvdWJsZSlfX2IsCiAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMHgwMCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCwgMHgwNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA2LCAweDA3LCAweDEwLCAweDExLCAweDEyLCAweDEzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTQsIDB4MTUsIDB4MTYsIDB4MTcpKTsKfQpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZG91YmxlIF9fQVRUUlNfb19haQp2ZWNfbWVyZ2VoKHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2EsIHZlY3RvciBkb3VibGUgX19iKSB7CiAgcmV0dXJuIHZlY19wZXJtKCh2ZWN0b3IgZG91YmxlKV9fYSwgX19iLAogICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKDB4MDAsIDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQsIDB4MDUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwNiwgMHgwNywgMHgxMCwgMHgxMSwgMHgxMiwgMHgxMywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE0LCAweDE1LCAweDE2LCAweDE3KSk7Cn0KI2VuZGlmCgovKiB2ZWNfdm1yZ2hiICovCgojZGVmaW5lIF9fYnVpbHRpbl9hbHRpdmVjX3ZtcmdoYiB2ZWNfdm1yZ2hiCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY192bXJnaGIodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiB2ZWNfcGVybShfX2EsIF9fYiwKICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgweDAwLCAweDEwLCAweDAxLCAweDExLCAweDAyLCAweDEyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDMsIDB4MTMsIDB4MDQsIDB4MTQsIDB4MDUsIDB4MTUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwNiwgMHgxNiwgMHgwNywgMHgxNykpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3ZtcmdoYih2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiB2ZWNfcGVybShfX2EsIF9fYiwKICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgweDAwLCAweDEwLCAweDAxLCAweDExLCAweDAyLCAweDEyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDMsIDB4MTMsIDB4MDQsIDB4MTQsIDB4MDUsIDB4MTUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwNiwgMHgxNiwgMHgwNywgMHgxNykpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfdm1yZ2hiKHZlY3RvciBib29sIGNoYXIgX19hLCB2ZWN0b3IgYm9vbCBjaGFyIF9fYikgewogIHJldHVybiB2ZWNfcGVybShfX2EsIF9fYiwKICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgweDAwLCAweDEwLCAweDAxLCAweDExLCAweDAyLCAweDEyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDMsIDB4MTMsIDB4MDQsIDB4MTQsIDB4MDUsIDB4MTUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwNiwgMHgxNiwgMHgwNywgMHgxNykpOwp9CgovKiB2ZWNfdm1yZ2hoICovCgojZGVmaW5lIF9fYnVpbHRpbl9hbHRpdmVjX3ZtcmdoaCB2ZWNfdm1yZ2hoCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY192bXJnaGgodmVjdG9yIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaG9ydCBfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0oX19hLCBfX2IsCiAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMHgwMCwgMHgwMSwgMHgxMCwgMHgxMSwgMHgwMiwgMHgwMywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweDEzLCAweDA0LCAweDA1LCAweDE0LCAweDE1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDYsIDB4MDcsIDB4MTYsIDB4MTcpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfdm1yZ2hoKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0oX19hLCBfX2IsCiAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMHgwMCwgMHgwMSwgMHgxMCwgMHgxMSwgMHgwMiwgMHgwMywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweDEzLCAweDA0LCAweDA1LCAweDE0LCAweDE1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDYsIDB4MDcsIDB4MTYsIDB4MTcpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgc2hvcnQgX19BVFRSU19vX2FpCnZlY192bXJnaGgodmVjdG9yIGJvb2wgc2hvcnQgX19hLCB2ZWN0b3IgYm9vbCBzaG9ydCBfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0oX19hLCBfX2IsCiAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMHgwMCwgMHgwMSwgMHgxMCwgMHgxMSwgMHgwMiwgMHgwMywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweDEzLCAweDA0LCAweDA1LCAweDE0LCAweDE1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDYsIDB4MDcsIDB4MTYsIDB4MTcpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHBpeGVsIF9fQVRUUlNfb19haSB2ZWNfdm1yZ2hoKHZlY3RvciBwaXhlbCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgcGl4ZWwgX19iKSB7CiAgcmV0dXJuIHZlY19wZXJtKF9fYSwgX19iLAogICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKDB4MDAsIDB4MDEsIDB4MTAsIDB4MTEsIDB4MDIsIDB4MDMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHgxMywgMHgwNCwgMHgwNSwgMHgxNCwgMHgxNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA2LCAweDA3LCAweDE2LCAweDE3KSk7Cn0KCi8qIHZlY192bXJnaHcgKi8KCiNkZWZpbmUgX19idWlsdGluX2FsdGl2ZWNfdm1yZ2h3IHZlY192bXJnaHcKCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY192bXJnaHcodmVjdG9yIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGludCBfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0oX19hLCBfX2IsCiAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMHgwMCwgMHgwMSwgMHgwMiwgMHgwMywgMHgxMCwgMHgxMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweDEzLCAweDA0LCAweDA1LCAweDA2LCAweDA3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTQsIDB4MTUsIDB4MTYsIDB4MTcpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX3Ztcmdodyh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0oX19hLCBfX2IsCiAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMHgwMCwgMHgwMSwgMHgwMiwgMHgwMywgMHgxMCwgMHgxMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweDEzLCAweDA0LCAweDA1LCAweDA2LCAweDA3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTQsIDB4MTUsIDB4MTYsIDB4MTcpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgaW50IF9fQVRUUlNfb19haSB2ZWNfdm1yZ2h3KHZlY3RvciBib29sIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBpbnQgX19iKSB7CiAgcmV0dXJuIHZlY19wZXJtKF9fYSwgX19iLAogICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKDB4MDAsIDB4MDEsIDB4MDIsIDB4MDMsIDB4MTAsIDB4MTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHgxMywgMHgwNCwgMHgwNSwgMHgwNiwgMHgwNywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE0LCAweDE1LCAweDE2LCAweDE3KSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkgdmVjX3Ztcmdodyh2ZWN0b3IgZmxvYXQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGZsb2F0IF9fYikgewogIHJldHVybiB2ZWNfcGVybShfX2EsIF9fYiwKICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgweDAwLCAweDAxLCAweDAyLCAweDAzLCAweDEwLCAweDExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4MTMsIDB4MDQsIDB4MDUsIDB4MDYsIDB4MDcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNCwgMHgxNSwgMHgxNiwgMHgxNykpOwp9CgovKiB2ZWNfbWVyZ2VsICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19tZXJnZWwodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiB2ZWNfcGVybShfX2EsIF9fYiwKICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgweDA4LCAweDE4LCAweDA5LCAweDE5LCAweDBBLCAweDFBLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEIsIDB4MUIsIDB4MEMsIDB4MUMsIDB4MEQsIDB4MUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwRSwgMHgxRSwgMHgwRiwgMHgxRikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX21lcmdlbCh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiB2ZWNfcGVybShfX2EsIF9fYiwKICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgweDA4LCAweDE4LCAweDA5LCAweDE5LCAweDBBLCAweDFBLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEIsIDB4MUIsIDB4MEMsIDB4MUMsIDB4MEQsIDB4MUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwRSwgMHgxRSwgMHgwRiwgMHgxRikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfbWVyZ2VsKHZlY3RvciBib29sIGNoYXIgX19hLCB2ZWN0b3IgYm9vbCBjaGFyIF9fYikgewogIHJldHVybiB2ZWNfcGVybShfX2EsIF9fYiwKICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgweDA4LCAweDE4LCAweDA5LCAweDE5LCAweDBBLCAweDFBLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEIsIDB4MUIsIDB4MEMsIDB4MUMsIDB4MEQsIDB4MUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwRSwgMHgxRSwgMHgwRiwgMHgxRikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY19tZXJnZWwodmVjdG9yIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaG9ydCBfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0oX19hLCBfX2IsCiAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMHgwOCwgMHgwOSwgMHgxOCwgMHgxOSwgMHgwQSwgMHgwQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFBLCAweDFCLCAweDBDLCAweDBELCAweDFDLCAweDFELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEUsIDB4MEYsIDB4MUUsIDB4MUYpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfbWVyZ2VsKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0oX19hLCBfX2IsCiAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMHgwOCwgMHgwOSwgMHgxOCwgMHgxOSwgMHgwQSwgMHgwQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFBLCAweDFCLCAweDBDLCAweDBELCAweDFDLCAweDFELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEUsIDB4MEYsIDB4MUUsIDB4MUYpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgc2hvcnQgX19BVFRSU19vX2FpCnZlY19tZXJnZWwodmVjdG9yIGJvb2wgc2hvcnQgX19hLCB2ZWN0b3IgYm9vbCBzaG9ydCBfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0oX19hLCBfX2IsCiAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMHgwOCwgMHgwOSwgMHgxOCwgMHgxOSwgMHgwQSwgMHgwQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFBLCAweDFCLCAweDBDLCAweDBELCAweDFDLCAweDFELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEUsIDB4MEYsIDB4MUUsIDB4MUYpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHBpeGVsIF9fQVRUUlNfb19haSB2ZWNfbWVyZ2VsKHZlY3RvciBwaXhlbCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgcGl4ZWwgX19iKSB7CiAgcmV0dXJuIHZlY19wZXJtKF9fYSwgX19iLAogICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKDB4MDgsIDB4MDksIDB4MTgsIDB4MTksIDB4MEEsIDB4MEIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxQSwgMHgxQiwgMHgwQywgMHgwRCwgMHgxQywgMHgxRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBFLCAweDBGLCAweDFFLCAweDFGKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY19tZXJnZWwodmVjdG9yIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGludCBfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0oX19hLCBfX2IsCiAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMHgwOCwgMHgwOSwgMHgwQSwgMHgwQiwgMHgxOCwgMHgxOSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFBLCAweDFCLCAweDBDLCAweDBELCAweDBFLCAweDBGLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MUMsIDB4MUQsIDB4MUUsIDB4MUYpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX21lcmdlbCh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0oX19hLCBfX2IsCiAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMHgwOCwgMHgwOSwgMHgwQSwgMHgwQiwgMHgxOCwgMHgxOSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFBLCAweDFCLCAweDBDLCAweDBELCAweDBFLCAweDBGLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MUMsIDB4MUQsIDB4MUUsIDB4MUYpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgaW50IF9fQVRUUlNfb19haSB2ZWNfbWVyZ2VsKHZlY3RvciBib29sIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBpbnQgX19iKSB7CiAgcmV0dXJuIHZlY19wZXJtKF9fYSwgX19iLAogICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKDB4MDgsIDB4MDksIDB4MEEsIDB4MEIsIDB4MTgsIDB4MTksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxQSwgMHgxQiwgMHgwQywgMHgwRCwgMHgwRSwgMHgwRiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFDLCAweDFELCAweDFFLCAweDFGKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkgdmVjX21lcmdlbCh2ZWN0b3IgZmxvYXQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGZsb2F0IF9fYikgewogIHJldHVybiB2ZWNfcGVybShfX2EsIF9fYiwKICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgweDA4LCAweDA5LCAweDBBLCAweDBCLCAweDE4LCAweDE5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MUEsIDB4MUIsIDB4MEMsIDB4MEQsIDB4MEUsIDB4MEYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxQywgMHgxRCwgMHgxRSwgMHgxRikpOwp9CgojaWZkZWYgX19WU1hfXwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX21lcmdlbCh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiB2ZWNfcGVybShfX2EsIF9fYiwKICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgweDA4LCAweDA5LCAweDBBLCAweDBCLCAweDBDLCAweDBELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEUsIDB4MEYsIDB4MTgsIDBYMTksIDB4MUEsIDB4MUIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxQywgMHgxRCwgMHgxRSwgMHgxRikpOwp9CnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfbWVyZ2VsKHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYikgewogIHJldHVybiB2ZWNfcGVybShfX2EsICh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2IsCiAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMHgwOCwgMHgwOSwgMHgwQSwgMHgwQiwgMHgwQywgMHgwRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBFLCAweDBGLCAweDE4LCAwWDE5LCAweDFBLCAweDFCLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MUMsIDB4MUQsIDB4MUUsIDB4MUYpKTsKfQpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX21lcmdlbCh2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19hLCB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0oKHZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYSwgX19iLAogICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKDB4MDgsIDB4MDksIDB4MEEsIDB4MEIsIDB4MEMsIDB4MEQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwRSwgMHgwRiwgMHgxOCwgMFgxOSwgMHgxQSwgMHgxQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFDLCAweDFELCAweDFFLCAweDFGKSk7Cn0Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX21lcmdlbCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0oX19hLCBfX2IsCiAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMHgwOCwgMHgwOSwgMHgwQSwgMHgwQiwgMHgwQywgMHgwRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBFLCAweDBGLCAweDE4LCAwWDE5LCAweDFBLCAweDFCLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MUMsIDB4MUQsIDB4MUUsIDB4MUYpKTsKfQpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfbWVyZ2VsKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIHZlY19wZXJtKF9fYSwgKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19iLAogICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKDB4MDgsIDB4MDksIDB4MEEsIDB4MEIsIDB4MEMsIDB4MEQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwRSwgMHgwRiwgMHgxOCwgMFgxOSwgMHgxQSwgMHgxQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFDLCAweDFELCAweDFFLCAweDFGKSk7Cn0Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX21lcmdlbCh2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiB2ZWNfcGVybSgodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2EsIF9fYiwKICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgweDA4LCAweDA5LCAweDBBLCAweDBCLCAweDBDLCAweDBELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEUsIDB4MEYsIDB4MTgsIDBYMTksIDB4MUEsIDB4MUIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxQywgMHgxRCwgMHgxRSwgMHgxRikpOwp9CnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX21lcmdlbCh2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIHZlY19wZXJtKF9fYSwgX19iLAogICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKDB4MDgsIDB4MDksIDB4MEEsIDB4MEIsIDB4MEMsIDB4MEQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwRSwgMHgwRiwgMHgxOCwgMFgxOSwgMHgxQSwgMHgxQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFDLCAweDFELCAweDFFLCAweDFGKSk7Cn0Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGRvdWJsZSBfX0FUVFJTX29fYWkgdmVjX21lcmdlbCh2ZWN0b3IgZG91YmxlIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgZG91YmxlIF9fYikgewogIHJldHVybiB2ZWNfcGVybShfX2EsIF9fYiwKICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgweDA4LCAweDA5LCAweDBBLCAweDBCLCAweDBDLCAweDBELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEUsIDB4MEYsIDB4MTgsIDBYMTksIDB4MUEsIDB4MUIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxQywgMHgxRCwgMHgxRSwgMHgxRikpOwp9CnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBkb3VibGUgX19BVFRSU19vX2FpCnZlY19tZXJnZWwodmVjdG9yIGRvdWJsZSBfX2EsIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0oX19hLCAodmVjdG9yIGRvdWJsZSlfX2IsCiAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMHgwOCwgMHgwOSwgMHgwQSwgMHgwQiwgMHgwQywgMHgwRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBFLCAweDBGLCAweDE4LCAwWDE5LCAweDFBLCAweDFCLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MUMsIDB4MUQsIDB4MUUsIDB4MUYpKTsKfQpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZG91YmxlIF9fQVRUUlNfb19haQp2ZWNfbWVyZ2VsKHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2EsIHZlY3RvciBkb3VibGUgX19iKSB7CiAgcmV0dXJuIHZlY19wZXJtKCh2ZWN0b3IgZG91YmxlKV9fYSwgX19iLAogICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKDB4MDgsIDB4MDksIDB4MEEsIDB4MEIsIDB4MEMsIDB4MEQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwRSwgMHgwRiwgMHgxOCwgMFgxOSwgMHgxQSwgMHgxQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFDLCAweDFELCAweDFFLCAweDFGKSk7Cn0KI2VuZGlmCgovKiB2ZWNfdm1yZ2xiICovCgojZGVmaW5lIF9fYnVpbHRpbl9hbHRpdmVjX3ZtcmdsYiB2ZWNfdm1yZ2xiCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY192bXJnbGIodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiB2ZWNfcGVybShfX2EsIF9fYiwKICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgweDA4LCAweDE4LCAweDA5LCAweDE5LCAweDBBLCAweDFBLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEIsIDB4MUIsIDB4MEMsIDB4MUMsIDB4MEQsIDB4MUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwRSwgMHgxRSwgMHgwRiwgMHgxRikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3ZtcmdsYih2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiB2ZWNfcGVybShfX2EsIF9fYiwKICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgweDA4LCAweDE4LCAweDA5LCAweDE5LCAweDBBLCAweDFBLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEIsIDB4MUIsIDB4MEMsIDB4MUMsIDB4MEQsIDB4MUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwRSwgMHgxRSwgMHgwRiwgMHgxRikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfdm1yZ2xiKHZlY3RvciBib29sIGNoYXIgX19hLCB2ZWN0b3IgYm9vbCBjaGFyIF9fYikgewogIHJldHVybiB2ZWNfcGVybShfX2EsIF9fYiwKICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgweDA4LCAweDE4LCAweDA5LCAweDE5LCAweDBBLCAweDFBLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEIsIDB4MUIsIDB4MEMsIDB4MUMsIDB4MEQsIDB4MUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwRSwgMHgxRSwgMHgwRiwgMHgxRikpOwp9CgovKiB2ZWNfdm1yZ2xoICovCgojZGVmaW5lIF9fYnVpbHRpbl9hbHRpdmVjX3ZtcmdsaCB2ZWNfdm1yZ2xoCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY192bXJnbGgodmVjdG9yIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaG9ydCBfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0oX19hLCBfX2IsCiAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMHgwOCwgMHgwOSwgMHgxOCwgMHgxOSwgMHgwQSwgMHgwQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFBLCAweDFCLCAweDBDLCAweDBELCAweDFDLCAweDFELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEUsIDB4MEYsIDB4MUUsIDB4MUYpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfdm1yZ2xoKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0oX19hLCBfX2IsCiAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMHgwOCwgMHgwOSwgMHgxOCwgMHgxOSwgMHgwQSwgMHgwQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFBLCAweDFCLCAweDBDLCAweDBELCAweDFDLCAweDFELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEUsIDB4MEYsIDB4MUUsIDB4MUYpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgc2hvcnQgX19BVFRSU19vX2FpCnZlY192bXJnbGgodmVjdG9yIGJvb2wgc2hvcnQgX19hLCB2ZWN0b3IgYm9vbCBzaG9ydCBfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0oX19hLCBfX2IsCiAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMHgwOCwgMHgwOSwgMHgxOCwgMHgxOSwgMHgwQSwgMHgwQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFBLCAweDFCLCAweDBDLCAweDBELCAweDFDLCAweDFELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEUsIDB4MEYsIDB4MUUsIDB4MUYpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHBpeGVsIF9fQVRUUlNfb19haSB2ZWNfdm1yZ2xoKHZlY3RvciBwaXhlbCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgcGl4ZWwgX19iKSB7CiAgcmV0dXJuIHZlY19wZXJtKF9fYSwgX19iLAogICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKDB4MDgsIDB4MDksIDB4MTgsIDB4MTksIDB4MEEsIDB4MEIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxQSwgMHgxQiwgMHgwQywgMHgwRCwgMHgxQywgMHgxRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBFLCAweDBGLCAweDFFLCAweDFGKSk7Cn0KCi8qIHZlY192bXJnbHcgKi8KCiNkZWZpbmUgX19idWlsdGluX2FsdGl2ZWNfdm1yZ2x3IHZlY192bXJnbHcKCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY192bXJnbHcodmVjdG9yIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGludCBfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0oX19hLCBfX2IsCiAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMHgwOCwgMHgwOSwgMHgwQSwgMHgwQiwgMHgxOCwgMHgxOSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFBLCAweDFCLCAweDBDLCAweDBELCAweDBFLCAweDBGLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MUMsIDB4MUQsIDB4MUUsIDB4MUYpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX3Ztcmdsdyh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0oX19hLCBfX2IsCiAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMHgwOCwgMHgwOSwgMHgwQSwgMHgwQiwgMHgxOCwgMHgxOSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFBLCAweDFCLCAweDBDLCAweDBELCAweDBFLCAweDBGLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MUMsIDB4MUQsIDB4MUUsIDB4MUYpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgaW50IF9fQVRUUlNfb19haSB2ZWNfdm1yZ2x3KHZlY3RvciBib29sIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBpbnQgX19iKSB7CiAgcmV0dXJuIHZlY19wZXJtKF9fYSwgX19iLAogICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKDB4MDgsIDB4MDksIDB4MEEsIDB4MEIsIDB4MTgsIDB4MTksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxQSwgMHgxQiwgMHgwQywgMHgwRCwgMHgwRSwgMHgwRiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFDLCAweDFELCAweDFFLCAweDFGKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkgdmVjX3Ztcmdsdyh2ZWN0b3IgZmxvYXQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGZsb2F0IF9fYikgewogIHJldHVybiB2ZWNfcGVybShfX2EsIF9fYiwKICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgweDA4LCAweDA5LCAweDBBLCAweDBCLCAweDE4LCAweDE5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MUEsIDB4MUIsIDB4MEMsIDB4MEQsIDB4MEUsIDB4MEYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxQywgMHgxRCwgMHgxRSwgMHgxRikpOwp9CgojaWZkZWYgX19QT1dFUjhfVkVDVE9SX18KLyogdmVjX21lcmdlZSAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgaW50IF9fQVRUUlNfb19haSB2ZWNfbWVyZ2VlKHZlY3RvciBib29sIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBpbnQgX19iKSB7CiAgcmV0dXJuIHZlY19wZXJtKF9fYSwgX19iLAogICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKDB4MDAsIDB4MDEsIDB4MDIsIDB4MDMsIDB4MTAsIDB4MTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHgxMywgMHgwOCwgMHgwOSwgMHgwQSwgMHgwQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4LCAweDE5LCAweDFBLCAweDFCKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfbWVyZ2VlKHZlY3RvciBzaWduZWQgaW50IF9fYSwgdmVjdG9yIHNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIHZlY19wZXJtKF9fYSwgX19iLAogICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKDB4MDAsIDB4MDEsIDB4MDIsIDB4MDMsIDB4MTAsIDB4MTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHgxMywgMHgwOCwgMHgwOSwgMHgwQSwgMHgwQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4LCAweDE5LCAweDFBLCAweDFCKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19tZXJnZWUodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIHZlY19wZXJtKF9fYSwgX19iLAogICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKDB4MDAsIDB4MDEsIDB4MDIsIDB4MDMsIDB4MTAsIDB4MTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHgxMywgMHgwOCwgMHgwOSwgMHgwQSwgMHgwQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4LCAweDE5LCAweDFBLCAweDFCKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX21lcmdlZSh2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIHZlY19tZXJnZWgoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX21lcmdlZSh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiB2ZWNfbWVyZ2VoKF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX21lcmdlZSh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gdmVjX21lcmdlaChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkKdmVjX21lcmdlZSh2ZWN0b3IgZmxvYXQgX19hLCB2ZWN0b3IgZmxvYXQgX19iKSB7CiAgcmV0dXJuIHZlY19wZXJtKF9fYSwgX19iLAogICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKDB4MDAsIDB4MDEsIDB4MDIsIDB4MDMsIDB4MTAsIDB4MTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHgxMywgMHgwOCwgMHgwOSwgMHgwQSwgMHgwQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4LCAweDE5LCAweDFBLCAweDFCKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBkb3VibGUgX19BVFRSU19vX2FpCnZlY19tZXJnZWUodmVjdG9yIGRvdWJsZSBfX2EsIHZlY3RvciBkb3VibGUgX19iKSB7CiAgcmV0dXJuIHZlY19tZXJnZWgoX19hLCBfX2IpOwp9CgovKiB2ZWNfbWVyZ2VvICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBpbnQgX19BVFRSU19vX2FpIHZlY19tZXJnZW8odmVjdG9yIGJvb2wgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGludCBfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0oX19hLCBfX2IsCiAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMHgwNCwgMHgwNSwgMHgwNiwgMHgwNywgMHgxNCwgMHgxNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweDE3LCAweDBDLCAweDBELCAweDBFLCAweDBGLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MUMsIDB4MUQsIDB4MUUsIDB4MUYpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19tZXJnZW8odmVjdG9yIHNpZ25lZCBpbnQgX19hLCB2ZWN0b3Igc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0oX19hLCBfX2IsCiAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMHgwNCwgMHgwNSwgMHgwNiwgMHgwNywgMHgxNCwgMHgxNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweDE3LCAweDBDLCAweDBELCAweDBFLCAweDBGLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MUMsIDB4MUQsIDB4MUUsIDB4MUYpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX21lcmdlbyh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0oX19hLCBfX2IsCiAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMHgwNCwgMHgwNSwgMHgwNiwgMHgwNywgMHgxNCwgMHgxNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweDE3LCAweDBDLCAweDBELCAweDBFLCAweDBGLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MUMsIDB4MUQsIDB4MUUsIDB4MUYpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfbWVyZ2VvKHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2EsIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gdmVjX21lcmdlbChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfbWVyZ2VvKHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIHZlY19tZXJnZWwoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfbWVyZ2VvKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiB2ZWNfbWVyZ2VsKF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGZsb2F0IF9fQVRUUlNfb19haQp2ZWNfbWVyZ2VvKHZlY3RvciBmbG9hdCBfX2EsIHZlY3RvciBmbG9hdCBfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0oX19hLCBfX2IsCiAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMHgwNCwgMHgwNSwgMHgwNiwgMHgwNywgMHgxNCwgMHgxNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweDE3LCAweDBDLCAweDBELCAweDBFLCAweDBGLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MUMsIDB4MUQsIDB4MUUsIDB4MUYpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGRvdWJsZSBfX0FUVFJTX29fYWkKdmVjX21lcmdlbyh2ZWN0b3IgZG91YmxlIF9fYSwgdmVjdG9yIGRvdWJsZSBfX2IpIHsKICByZXR1cm4gdmVjX21lcmdlbChfX2EsIF9fYik7Cn0KCiNlbmRpZgoKLyogdmVjX21mdnNjciAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKdmVjX21mdnNjcih2b2lkKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX21mdnNjcigpOwp9CgovKiB2ZWNfbWluICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19taW4odmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bWluc2IoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19taW4odmVjdG9yIGJvb2wgY2hhciBfX2EsIHZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm1pbnNiKCh2ZWN0b3Igc2lnbmVkIGNoYXIpX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19taW4odmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIGJvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm1pbnNiKF9fYSwgKHZlY3RvciBzaWduZWQgY2hhcilfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX21pbih2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bWludWIoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX21pbih2ZWN0b3IgYm9vbCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtaW51YigodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX21pbih2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciBib29sIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtaW51YihfX2EsICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY19taW4odmVjdG9yIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm1pbnNoKF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfbWluKHZlY3RvciBib29sIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm1pbnNoKCh2ZWN0b3Igc2hvcnQpX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY19taW4odmVjdG9yIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bWluc2goX19hLCAodmVjdG9yIHNob3J0KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX21pbih2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtaW51aChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX21pbih2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm1pbnVoKCh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY19taW4odmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIGJvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtaW51aChfX2EsICh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX21pbih2ZWN0b3IgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bWluc3coX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgaW50IF9fQVRUUlNfb19haSB2ZWNfbWluKHZlY3RvciBib29sIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm1pbnN3KCh2ZWN0b3IgaW50KV9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX21pbih2ZWN0b3IgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtaW5zdyhfX2EsICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19taW4odmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtaW51dyhfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19taW4odmVjdG9yIGJvb2wgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm1pbnV3KCh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX21pbih2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIGJvb2wgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bWludXcoX19hLCAodmVjdG9yIHVuc2lnbmVkIGludClfX2IpOwp9CgojaWZkZWYgX19QT1dFUjhfVkVDVE9SX18Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19taW4odmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm1pbnNkKF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19taW4odmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtaW5zZCgodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX21pbih2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm1pbnNkKF9fYSwgKHZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19taW4odmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtaW51ZChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19taW4odmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm1pbnVkKCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX21pbih2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bWludWQoX19hLCAodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2IpOwp9CiNlbmRpZgoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGZsb2F0IF9fQVRUUlNfb19haSB2ZWNfbWluKHZlY3RvciBmbG9hdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgZmxvYXQgX19iKSB7CiNpZmRlZiBfX1ZTWF9fCiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfeHZtaW5zcChfX2EsIF9fYik7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtaW5mcChfX2EsIF9fYik7CiNlbmRpZgp9CgojaWZkZWYgX19WU1hfXwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZG91YmxlIF9fQVRUUlNfb19haSB2ZWNfbWluKHZlY3RvciBkb3VibGUgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBkb3VibGUgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfeHZtaW5kcChfX2EsIF9fYik7Cn0KI2VuZGlmCgovKiB2ZWNfdm1pbnNiICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY192bWluc2IodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bWluc2IoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY192bWluc2IodmVjdG9yIGJvb2wgY2hhciBfX2EsIHZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm1pbnNiKCh2ZWN0b3Igc2lnbmVkIGNoYXIpX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY192bWluc2IodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIGJvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm1pbnNiKF9fYSwgKHZlY3RvciBzaWduZWQgY2hhcilfX2IpOwp9CgovKiB2ZWNfdm1pbnViICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3ZtaW51Yih2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bWludWIoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3ZtaW51Yih2ZWN0b3IgYm9vbCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtaW51YigodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3ZtaW51Yih2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciBib29sIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtaW51YihfX2EsICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgovKiB2ZWNfdm1pbnNoICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY192bWluc2godmVjdG9yIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm1pbnNoKF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfdm1pbnNoKHZlY3RvciBib29sIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm1pbnNoKCh2ZWN0b3Igc2hvcnQpX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY192bWluc2godmVjdG9yIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bWluc2goX19hLCAodmVjdG9yIHNob3J0KV9fYik7Cn0KCi8qIHZlY192bWludWggKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3ZtaW51aCh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtaW51aChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3ZtaW51aCh2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm1pbnVoKCh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY192bWludWgodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIGJvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtaW51aChfX2EsICh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19iKTsKfQoKLyogdmVjX3ZtaW5zdyAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX3ZtaW5zdyh2ZWN0b3IgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bWluc3coX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgaW50IF9fQVRUUlNfb19haSB2ZWNfdm1pbnN3KHZlY3RvciBib29sIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm1pbnN3KCh2ZWN0b3IgaW50KV9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX3ZtaW5zdyh2ZWN0b3IgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtaW5zdyhfX2EsICh2ZWN0b3IgaW50KV9fYik7Cn0KCi8qIHZlY192bWludXcgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY192bWludXcodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtaW51dyhfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY192bWludXcodmVjdG9yIGJvb2wgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm1pbnV3KCh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX3ZtaW51dyh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIGJvb2wgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bWludXcoX19hLCAodmVjdG9yIHVuc2lnbmVkIGludClfX2IpOwp9CgovKiB2ZWNfdm1pbmZwICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQp2ZWNfdm1pbmZwKHZlY3RvciBmbG9hdCBfX2EsIHZlY3RvciBmbG9hdCBfX2IpIHsKI2lmZGVmIF9fVlNYX18KICByZXR1cm4gX19idWlsdGluX3ZzeF94dm1pbnNwKF9fYSwgX19iKTsKI2Vsc2UKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm1pbmZwKF9fYSwgX19iKTsKI2VuZGlmCn0KCi8qIHZlY19tbGFkZCAqLwoKI2RlZmluZSBfX2J1aWx0aW5fYWx0aXZlY192bWxhZGR1aG0gdmVjX21sYWRkCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY19tbGFkZCh2ZWN0b3Igc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2hvcnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2hvcnQgX19jKSB7CiAgcmV0dXJuIF9fYSAqIF9fYiArIF9fYzsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfbWxhZGQoCiAgICB2ZWN0b3Igc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19jKSB7CiAgcmV0dXJuIF9fYSAqICh2ZWN0b3Igc2hvcnQpX19iICsgKHZlY3RvciBzaG9ydClfX2M7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaG9ydCBfX0FUVFJTX29fYWkgdmVjX21sYWRkKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaG9ydCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaG9ydCBfX2MpIHsKICByZXR1cm4gKHZlY3RvciBzaG9ydClfX2EgKiBfX2IgKyBfX2M7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX21sYWRkKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IsCiAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19jKSB7CiAgcmV0dXJuIF9fYSAqIF9fYiArIF9fYzsKfQoKLyogdmVjX3ZtbGFkZHVobSAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfdm1sYWRkdWhtKHZlY3RvciBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2hvcnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNob3J0IF9fYykgewogIHJldHVybiBfX2EgKiBfX2IgKyBfX2M7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaG9ydCBfX0FUVFJTX29fYWkgdmVjX3ZtbGFkZHVobSgKICAgIHZlY3RvciBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2MpIHsKICByZXR1cm4gX19hICogKHZlY3RvciBzaG9ydClfX2IgKyAodmVjdG9yIHNob3J0KV9fYzsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfdm1sYWRkdWhtKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciBzaG9ydCBfX2IsIHZlY3RvciBzaG9ydCBfX2MpIHsKICByZXR1cm4gKHZlY3RvciBzaG9ydClfX2EgKiBfX2IgKyBfX2M7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3ZtbGFkZHVobSh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iLAogICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2MpIHsKICByZXR1cm4gX19hICogX19iICsgX19jOwp9CgovKiB2ZWNfbXJhZGRzICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQp2ZWNfbXJhZGRzKHZlY3RvciBzaG9ydCBfX2EsIHZlY3RvciBzaG9ydCBfX2IsIHZlY3RvciBzaG9ydCBfX2MpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm1ocmFkZHNocyhfX2EsIF9fYiwgX19jKTsKfQoKLyogdmVjX3ZtaHJhZGRzaHMgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaG9ydCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCnZlY192bWhyYWRkc2hzKHZlY3RvciBzaG9ydCBfX2EsIHZlY3RvciBzaG9ydCBfX2IsIHZlY3RvciBzaG9ydCBfX2MpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm1ocmFkZHNocyhfX2EsIF9fYiwgX19jKTsKfQoKLyogdmVjX21zdW0gKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY19tc3VtKHZlY3RvciBzaWduZWQgY2hhciBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGludCBfX2MpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm1zdW1tYm0oX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19tc3VtKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iLAogICAgICAgICB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bXN1bXVibShfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX21zdW0odmVjdG9yIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNob3J0IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGludCBfX2MpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm1zdW1zaG0oX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19tc3VtKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IsCiAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBpbnQgX19jKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3Ztc3VtdWhtKF9fYSwgX19iLCBfX2MpOwp9CgovKiB2ZWNfbXN1bWMgKi8KCiNpZiBkZWZpbmVkKF9fUE9XRVIxMF9WRUNUT1JfXykgJiYgZGVmaW5lZChfX1NJWkVPRl9JTlQxMjhfXykKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fQVRUUlNfb19haQp2ZWNfbXN1bWModmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iLAogICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bXN1bWN1ZChfX2EsIF9fYiwgX19jKTsKfQojZW5kaWYKCi8qIHZlY192bXN1bW1ibSAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCnZlY192bXN1bW1ibSh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IsIHZlY3RvciBpbnQgX19jKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3Ztc3VtbWJtKF9fYSwgX19iLCBfX2MpOwp9CgovKiB2ZWNfdm1zdW11Ym0gKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQp2ZWNfdm1zdW11Ym0odmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IsCiAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bXN1bXVibShfX2EsIF9fYiwgX19jKTsKfQoKLyogdmVjX3Ztc3Vtc2htICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgaW50IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKdmVjX3Ztc3Vtc2htKHZlY3RvciBzaG9ydCBfX2EsIHZlY3RvciBzaG9ydCBfX2IsIHZlY3RvciBpbnQgX19jKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3Ztc3Vtc2htKF9fYSwgX19iLCBfX2MpOwp9CgovKiB2ZWNfdm1zdW11aG0gKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQp2ZWNfdm1zdW11aG0odmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYiwKICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBpbnQgX19jKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3Ztc3VtdWhtKF9fYSwgX19iLCBfX2MpOwp9CgovKiB2ZWNfbXN1bXMgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY19tc3Vtcyh2ZWN0b3Igc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNob3J0IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBpbnQgX19jKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3Ztc3Vtc2hzKF9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfbXN1bXModmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYiwKICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBpbnQgX19jKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3Ztc3VtdWhzKF9fYSwgX19iLCBfX2MpOwp9CgovKiB2ZWNfdm1zdW1zaHMgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQp2ZWNfdm1zdW1zaHModmVjdG9yIHNob3J0IF9fYSwgdmVjdG9yIHNob3J0IF9fYiwgdmVjdG9yIGludCBfX2MpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm1zdW1zaHMoX19hLCBfX2IsIF9fYyk7Cn0KCi8qIHZlY192bXN1bXVocyAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCnZlY192bXN1bXVocyh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iLAogICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGludCBfX2MpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm1zdW11aHMoX19hLCBfX2IsIF9fYyk7Cn0KCi8qIHZlY19tdHZzY3IgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19tdHZzY3IodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSkgewogIF9fYnVpbHRpbl9hbHRpdmVjX210dnNjcigodmVjdG9yIGludClfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfbXR2c2NyKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSkgewogIF9fYnVpbHRpbl9hbHRpdmVjX210dnNjcigodmVjdG9yIGludClfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfbXR2c2NyKHZlY3RvciBib29sIGNoYXIgX19hKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfbXR2c2NyKCh2ZWN0b3IgaW50KV9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19tdHZzY3IodmVjdG9yIHNob3J0IF9fYSkgewogIF9fYnVpbHRpbl9hbHRpdmVjX210dnNjcigodmVjdG9yIGludClfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfbXR2c2NyKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EpIHsKICBfX2J1aWx0aW5fYWx0aXZlY19tdHZzY3IoKHZlY3RvciBpbnQpX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX210dnNjcih2ZWN0b3IgYm9vbCBzaG9ydCBfX2EpIHsKICBfX2J1aWx0aW5fYWx0aXZlY19tdHZzY3IoKHZlY3RvciBpbnQpX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX210dnNjcih2ZWN0b3IgcGl4ZWwgX19hKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfbXR2c2NyKCh2ZWN0b3IgaW50KV9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19tdHZzY3IodmVjdG9yIGludCBfX2EpIHsKICBfX2J1aWx0aW5fYWx0aXZlY19tdHZzY3IoKHZlY3RvciBpbnQpX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX210dnNjcih2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSkgewogIF9fYnVpbHRpbl9hbHRpdmVjX210dnNjcigodmVjdG9yIGludClfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfbXR2c2NyKHZlY3RvciBib29sIGludCBfX2EpIHsKICBfX2J1aWx0aW5fYWx0aXZlY19tdHZzY3IoKHZlY3RvciBpbnQpX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX210dnNjcih2ZWN0b3IgZmxvYXQgX19hKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfbXR2c2NyKCh2ZWN0b3IgaW50KV9fYSk7Cn0KCi8qIHZlY19tdWwgKi8KCi8qIEludGVnZXIgdmVjdG9yIG11bHRpcGxpY2F0aW9uIHdpbGwgaW52b2x2ZSBtdWx0aXBsaWNhdGlvbiBvZiB0aGUgb2RkL2V2ZW4KICAgZWxlbWVudHMgc2VwYXJhdGVseSwgdGhlbiB0cnVuY2F0aW5nIHRoZSByZXN1bHRzIGFuZCBtb3ZpbmcgdG8gdGhlCiAgIHJlc3VsdCB2ZWN0b3IuCiovCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX211bCh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYSAqIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19tdWwodmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19hICogX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfbXVsKHZlY3RvciBzaWduZWQgc2hvcnQgX19hLCB2ZWN0b3Igc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiBfX2EgKiBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX211bCh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYSAqIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19tdWwodmVjdG9yIHNpZ25lZCBpbnQgX19hLCB2ZWN0b3Igc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19hICogX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfbXVsKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX2EgKiBfX2I7Cn0KCiNpZmRlZiBfX1ZTWF9fCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfbXVsKHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYSAqIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX211bCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19hICogX19iOwp9CiNlbmRpZgoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGZsb2F0IF9fQVRUUlNfb19haSB2ZWNfbXVsKHZlY3RvciBmbG9hdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgZmxvYXQgX19iKSB7CiAgcmV0dXJuIF9fYSAqIF9fYjsKfQoKI2lmZGVmIF9fVlNYX18Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGRvdWJsZSBfX0FUVFJTX29fYWkgdmVjX211bCh2ZWN0b3IgZG91YmxlIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgZG91YmxlIF9fYikgewogIHJldHVybiBfX2EgKiBfX2I7Cn0KI2VuZGlmCgovKiBUaGUgdm11bG9zKiBhbmQgdm11bGVzKiBpbnN0cnVjdGlvbnMgaGF2ZSBhIGJpZyBlbmRpYW4gYmlhcywgc28KICAgd2UgbXVzdCByZXZlcnNlIHRoZSBtZWFuaW5nIG9mICJldmVuIiBhbmQgIm9kZCIgZm9yIGxpdHRsZSBlbmRpYW4uICAqLwoKLyogdmVjX211bGUgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaG9ydCBfX0FUVFJTX29fYWkgdmVjX211bGUodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bXVsb3NiKF9fYSwgX19iKTsKI2Vsc2UKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm11bGVzYihfX2EsIF9fYik7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY19tdWxlKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bXVsb3ViKF9fYSwgX19iKTsKI2Vsc2UKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm11bGV1YihfX2EsIF9fYik7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgaW50IF9fQVRUUlNfb19haSB2ZWNfbXVsZSh2ZWN0b3Igc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2hvcnQgX19iKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bXVsb3NoKF9fYSwgX19iKTsKI2Vsc2UKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm11bGVzaChfX2EsIF9fYik7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfbXVsZSh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bXVsb3VoKF9fYSwgX19iKTsKI2Vsc2UKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm11bGV1aChfX2EsIF9fYik7CiNlbmRpZgp9CgojaWZkZWYgX19QT1dFUjhfVkVDVE9SX18Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19tdWxlKHZlY3RvciBzaWduZWQgaW50IF9fYSwgdmVjdG9yIHNpZ25lZCBpbnQgX19iKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bXVsb3N3KF9fYSwgX19iKTsKI2Vsc2UKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm11bGVzdyhfX2EsIF9fYik7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfbXVsZSh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtdWxvdXcoX19hLCBfX2IpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bXVsZXV3KF9fYSwgX19iKTsKI2VuZGlmCn0KI2VuZGlmCgojaWYgZGVmaW5lZChfX1BPV0VSMTBfVkVDVE9SX18pICYmIGRlZmluZWQoX19TSVpFT0ZfSU5UMTI4X18pCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgX19pbnQxMjggX19BVFRSU19vX2FpCnZlY19tdWxlKHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bXVsb3NkKF9fYSwgX19iKTsKI2Vsc2UKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm11bGVzZChfX2EsIF9fYik7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19BVFRSU19vX2FpCnZlY19tdWxlKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm11bG91ZChfX2EsIF9fYik7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtdWxldWQoX19hLCBfX2IpOwojZW5kaWYKfQojZW5kaWYKCi8qIHZlY192bXVsZXNiICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQp2ZWNfdm11bGVzYih2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bXVsb3NiKF9fYSwgX19iKTsKI2Vsc2UKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm11bGVzYihfX2EsIF9fYik7CiNlbmRpZgp9CgovKiB2ZWNfdm11bGV1YiAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKdmVjX3ZtdWxldWIodmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtdWxvdWIoX19hLCBfX2IpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bXVsZXViKF9fYSwgX19iKTsKI2VuZGlmCn0KCi8qIHZlY192bXVsZXNoICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgaW50IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKdmVjX3ZtdWxlc2godmVjdG9yIHNob3J0IF9fYSwgdmVjdG9yIHNob3J0IF9fYikgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm11bG9zaChfX2EsIF9fYik7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtdWxlc2goX19hLCBfX2IpOwojZW5kaWYKfQoKLyogdmVjX3ZtdWxldWggKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQp2ZWNfdm11bGV1aCh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bXVsb3VoKF9fYSwgX19iKTsKI2Vsc2UKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm11bGV1aChfX2EsIF9fYik7CiNlbmRpZgp9CgovKiB2ZWNfbXVsaCAqLwoKI2lmZGVmIF9fUE9XRVIxMF9WRUNUT1JfXwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX211bGgodmVjdG9yIHNpZ25lZCBpbnQgX19hLCB2ZWN0b3Igc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm11bGhzdyhfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19tdWxoKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bXVsaHV3KF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19tdWxoKHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtdWxoc2QoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfbXVsaCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm11bGh1ZChfX2EsIF9fYik7Cn0KI2VuZGlmCgovKiB2ZWNfbXVsbyAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfbXVsbyh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtdWxlc2IoX19hLCBfX2IpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bXVsb3NiKF9fYSwgX19iKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX211bG8odmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtdWxldWIoX19hLCBfX2IpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bXVsb3ViKF9fYSwgX19iKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY19tdWxvKHZlY3RvciBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaG9ydCBfX2IpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtdWxlc2goX19hLCBfX2IpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bXVsb3NoKF9fYSwgX19iKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19tdWxvKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtdWxldWgoX19hLCBfX2IpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bXVsb3VoKF9fYSwgX19iKTsKI2VuZGlmCn0KCiNpZmRlZiBfX1BPV0VSOF9WRUNUT1JfXwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX211bG8odmVjdG9yIHNpZ25lZCBpbnQgX19hLCB2ZWN0b3Igc2lnbmVkIGludCBfX2IpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtdWxlc3coX19hLCBfX2IpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bXVsb3N3KF9fYSwgX19iKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19tdWxvKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm11bGV1dyhfX2EsIF9fYik7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtdWxvdXcoX19hLCBfX2IpOwojZW5kaWYKfQojZW5kaWYKCiNpZiBkZWZpbmVkKF9fUE9XRVIxMF9WRUNUT1JfXykgJiYgZGVmaW5lZChfX1NJWkVPRl9JTlQxMjhfXykKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBfX2ludDEyOCBfX0FUVFJTX29fYWkKdmVjX211bG8odmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtdWxlc2QoX19hLCBfX2IpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bXVsb3NkKF9fYSwgX19iKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCBfX0FUVFJTX29fYWkKdmVjX211bG8odmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bXVsZXVkKF9fYSwgX19iKTsKI2Vsc2UKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm11bG91ZChfX2EsIF9fYik7CiNlbmRpZgp9CiNlbmRpZgoKLyogdmVjX3ZtdWxvc2IgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaG9ydCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCnZlY192bXVsb3NiKHZlY3RvciBzaWduZWQgY2hhciBfX2EsIHZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtdWxlc2IoX19hLCBfX2IpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bXVsb3NiKF9fYSwgX19iKTsKI2VuZGlmCn0KCi8qIHZlY192bXVsb3ViICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQp2ZWNfdm11bG91Yih2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm11bGV1YihfX2EsIF9fYik7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtdWxvdWIoX19hLCBfX2IpOwojZW5kaWYKfQoKLyogdmVjX3ZtdWxvc2ggKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQp2ZWNfdm11bG9zaCh2ZWN0b3Igc2hvcnQgX19hLCB2ZWN0b3Igc2hvcnQgX19iKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bXVsZXNoKF9fYSwgX19iKTsKI2Vsc2UKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm11bG9zaChfX2EsIF9fYik7CiNlbmRpZgp9CgovKiB2ZWNfdm11bG91aCAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCnZlY192bXVsb3VoKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtdWxldWgoX19hLCBfX2IpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bXVsb3VoKF9fYSwgX19iKTsKI2VuZGlmCn0KCi8qICB2ZWNfbmFuZCAqLwoKI2lmZGVmIF9fUE9XRVI4X1ZFQ1RPUl9fCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX25hbmQodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiB+KF9fYSAmIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX25hbmQodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIGJvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gfihfX2EgJiBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19uYW5kKHZlY3RvciBib29sIGNoYXIgX19hLCB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIH4oX19hICYgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19uYW5kKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIH4oX19hICYgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19uYW5kKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIGJvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gfihfX2EgJiBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX25hbmQodmVjdG9yIGJvb2wgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiB+KF9fYSAmIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGNoYXIgX19BVFRSU19vX2FpIHZlY19uYW5kKHZlY3RvciBib29sIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBjaGFyIF9fYikgewogIHJldHVybiB+KF9fYSAmIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY19uYW5kKHZlY3RvciBzaWduZWQgc2hvcnQgX19hLCB2ZWN0b3Igc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiB+KF9fYSAmIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY19uYW5kKHZlY3RvciBzaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgYm9vbCBzaG9ydCBfX2IpIHsKICByZXR1cm4gfihfX2EgJiBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfbmFuZCh2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsIHZlY3RvciBzaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIH4oX19hICYgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfbmFuZCh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIH4oX19hICYgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfbmFuZCh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgYm9vbCBzaG9ydCBfX2IpIHsKICByZXR1cm4gfihfX2EgJiBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX25hbmQodmVjdG9yIGJvb2wgc2hvcnQgX19hLCB2ZWN0b3IgYm9vbCBzaG9ydCBfX2IpIHsKICByZXR1cm4gfihfX2EgJiBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX25hbmQodmVjdG9yIHNpZ25lZCBpbnQgX19hLCB2ZWN0b3Igc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gfihfX2EgJiBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGludCBfX0FUVFJTX29fYWkgdmVjX25hbmQodmVjdG9yIHNpZ25lZCBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgaW50IF9fYikgewogIHJldHVybiB+KF9fYSAmIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfbmFuZCh2ZWN0b3IgYm9vbCBpbnQgX19hLCB2ZWN0b3Igc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gfihfX2EgJiBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfbmFuZCh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gfihfX2EgJiBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfbmFuZCh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIGJvb2wgaW50IF9fYikgewogIHJldHVybiB+KF9fYSAmIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19uYW5kKHZlY3RvciBib29sIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIH4oX19hICYgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgaW50IF9fQVRUUlNfb19haSB2ZWNfbmFuZCh2ZWN0b3IgYm9vbCBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGludCBfX2IpIHsKICByZXR1cm4gfihfX2EgJiBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpCnZlY19uYW5kKHZlY3RvciBmbG9hdCBfX2EsIHZlY3RvciBmbG9hdCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBmbG9hdCkofigodmVjdG9yIHVuc2lnbmVkIGludClfX2EgJgogICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX25hbmQodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gfihfX2EgJiBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX25hbmQodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIH4oX19hICYgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19uYW5kKHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2EsIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiB+KF9fYSAmIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19uYW5kKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiB+KF9fYSAmIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19uYW5kKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIH4oX19hICYgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX25hbmQodmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gfihfX2EgJiBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19uYW5kKHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2EsIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gfihfX2EgJiBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZG91YmxlIF9fQVRUUlNfb19haQp2ZWNfbmFuZCh2ZWN0b3IgZG91YmxlIF9fYSwgdmVjdG9yIGRvdWJsZSBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBkb3VibGUpKH4oKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19hICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19iKSk7Cn0KCiNlbmRpZgoKLyogdmVjX25tYWRkICovCgojaWZkZWYgX19WU1hfXwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpIHZlY19ubWFkZCh2ZWN0b3IgZmxvYXQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgZmxvYXQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgZmxvYXQgX19jKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfeHZubWFkZGFzcChfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGRvdWJsZSBfX0FUVFJTX29fYWkgdmVjX25tYWRkKHZlY3RvciBkb3VibGUgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGRvdWJsZSBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgZG91YmxlIF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fdnN4X3h2bm1hZGRhZHAoX19hLCBfX2IsIF9fYyk7Cn0KI2VuZGlmCgovKiB2ZWNfbm1zdWIgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkgdmVjX25tc3ViKHZlY3RvciBmbG9hdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBmbG9hdCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBmbG9hdCBfX2MpIHsKI2lmZGVmIF9fVlNYX18KICByZXR1cm4gX19idWlsdGluX3ZzeF94dm5tc3ViYXNwKF9fYSwgX19iLCBfX2MpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bm1zdWJmcChfX2EsIF9fYiwgX19jKTsKI2VuZGlmCn0KCiNpZmRlZiBfX1ZTWF9fCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBkb3VibGUgX19BVFRSU19vX2FpIHZlY19ubXN1Yih2ZWN0b3IgZG91YmxlIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBkb3VibGUgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGRvdWJsZSBfX2MpIHsKICByZXR1cm4gX19idWlsdGluX3ZzeF94dm5tc3ViYWRwKF9fYSwgX19iLCBfX2MpOwp9CiNlbmRpZgoKLyogdmVjX3ZubXN1YmZwICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQp2ZWNfdm5tc3ViZnAodmVjdG9yIGZsb2F0IF9fYSwgdmVjdG9yIGZsb2F0IF9fYiwgdmVjdG9yIGZsb2F0IF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bm1zdWJmcChfX2EsIF9fYiwgX19jKTsKfQoKLyogdmVjX25vciAqLwoKI2RlZmluZSBfX2J1aWx0aW5fYWx0aXZlY192bm9yIHZlY19ub3IKCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX25vcih2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIH4oX19hIHwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19ub3IodmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gfihfX2EgfCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBjaGFyIF9fQVRUUlNfb19haSB2ZWNfbm9yKHZlY3RvciBib29sIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGNoYXIgX19iKSB7CiAgcmV0dXJuIH4oX19hIHwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfbm9yKHZlY3RvciBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2hvcnQgX19iKSB7CiAgcmV0dXJuIH4oX19hIHwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfbm9yKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gfihfX2EgfCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX25vcih2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsIHZlY3RvciBib29sIHNob3J0IF9fYikgewogIHJldHVybiB+KF9fYSB8IF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY19ub3IodmVjdG9yIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGludCBfX2IpIHsKICByZXR1cm4gfihfX2EgfCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfbm9yKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiB+KF9fYSB8IF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGludCBfX0FUVFJTX29fYWkgdmVjX25vcih2ZWN0b3IgYm9vbCBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgaW50IF9fYikgewogIHJldHVybiB+KF9fYSB8IF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkgdmVjX25vcih2ZWN0b3IgZmxvYXQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGZsb2F0IF9fYikgewogIHZlY3RvciB1bnNpZ25lZCBpbnQgX19yZXMgPQogICAgICB+KCh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYSB8ICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYik7CiAgcmV0dXJuICh2ZWN0b3IgZmxvYXQpX19yZXM7Cn0KCiNpZmRlZiBfX1ZTWF9fCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBkb3VibGUgX19BVFRSU19vX2FpIHZlY19ub3IodmVjdG9yIGRvdWJsZSBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGRvdWJsZSBfX2IpIHsKICB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fcmVzID0KICAgICAgfigodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2EgfCAodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2IpOwogIHJldHVybiAodmVjdG9yIGRvdWJsZSlfX3JlczsKfQojZW5kaWYKCi8qIHZlY192bm9yICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY192bm9yKHZlY3RvciBzaWduZWQgY2hhciBfX2EsIHZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gfihfX2EgfCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3Zub3IodmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gfihfX2EgfCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBjaGFyIF9fQVRUUlNfb19haSB2ZWNfdm5vcih2ZWN0b3IgYm9vbCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gfihfX2EgfCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY192bm9yKHZlY3RvciBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNob3J0IF9fYikgewogIHJldHVybiB+KF9fYSB8IF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3Zub3IodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiB+KF9fYSB8IF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfdm5vcih2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsIHZlY3RvciBib29sIHNob3J0IF9fYikgewogIHJldHVybiB+KF9fYSB8IF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY192bm9yKHZlY3RvciBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgaW50IF9fYikgewogIHJldHVybiB+KF9fYSB8IF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY192bm9yKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiB+KF9fYSB8IF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGludCBfX0FUVFJTX29fYWkgdmVjX3Zub3IodmVjdG9yIGJvb2wgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBpbnQgX19iKSB7CiAgcmV0dXJuIH4oX19hIHwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGZsb2F0IF9fQVRUUlNfb19haSB2ZWNfdm5vcih2ZWN0b3IgZmxvYXQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBmbG9hdCBfX2IpIHsKICB2ZWN0b3IgdW5zaWduZWQgaW50IF9fcmVzID0KICAgICAgfigodmVjdG9yIHVuc2lnbmVkIGludClfX2EgfCAodmVjdG9yIHVuc2lnbmVkIGludClfX2IpOwogIHJldHVybiAodmVjdG9yIGZsb2F0KV9fcmVzOwp9CgojaWZkZWYgX19WU1hfXwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX25vcih2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiB+KF9fYSB8IF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19ub3IodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIH4oX19hIHwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfbm9yKHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2EsIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gfihfX2EgfCBfX2IpOwp9CiNlbmRpZgoKLyogdmVjX29yICovCgojZGVmaW5lIF9fYnVpbHRpbl9hbHRpdmVjX3ZvciB2ZWNfb3IKCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX29yKHZlY3RvciBzaWduZWQgY2hhciBfX2EsIHZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19hIHwgX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19vcih2ZWN0b3IgYm9vbCBjaGFyIF9fYSwgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIHNpZ25lZCBjaGFyKV9fYSB8IF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haSB2ZWNfb3IodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gX19hIHwgKHZlY3RvciBzaWduZWQgY2hhcilfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfb3IodmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19hIHwgX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX29yKHZlY3RvciBib29sIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSB8IF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19vcih2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciBib29sIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYSB8ICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGNoYXIgX19BVFRSU19vX2FpIHZlY19vcih2ZWN0b3IgYm9vbCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYSB8IF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfb3IodmVjdG9yIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNob3J0IF9fYikgewogIHJldHVybiBfX2EgfCBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaG9ydCBfX0FUVFJTX29fYWkgdmVjX29yKHZlY3RvciBib29sIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNob3J0IF9fYikgewogIHJldHVybiAodmVjdG9yIHNob3J0KV9fYSB8IF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfb3IodmVjdG9yIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYSB8ICh2ZWN0b3Igc2hvcnQpX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY19vcih2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYSB8IF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfb3IodmVjdG9yIGJvb2wgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19hIHwgX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY19vcih2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgYm9vbCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19hIHwgKHZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfb3IodmVjdG9yIGJvb2wgc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIHNob3J0IF9fYikgewogIHJldHVybiBfX2EgfCBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY19vcih2ZWN0b3IgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYSB8IF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX29yKHZlY3RvciBib29sIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgaW50IF9fYikgewogIHJldHVybiAodmVjdG9yIGludClfX2EgfCBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY19vcih2ZWN0b3IgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGludCBfX2IpIHsKICByZXR1cm4gX19hIHwgKHZlY3RvciBpbnQpX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfb3IodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYSB8IF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX29yKHZlY3RvciBib29sIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYSB8IF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX29yKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCB2ZWN0b3IgYm9vbCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYSB8ICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgaW50IF9fQVRUUlNfb19haSB2ZWNfb3IodmVjdG9yIGJvb2wgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgaW50IF9fYikgewogIHJldHVybiBfX2EgfCBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkgdmVjX29yKHZlY3RvciBmbG9hdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBmbG9hdCBfX2IpIHsKICB2ZWN0b3IgdW5zaWduZWQgaW50IF9fcmVzID0KICAgICAgKHZlY3RvciB1bnNpZ25lZCBpbnQpX19hIHwgKHZlY3RvciB1bnNpZ25lZCBpbnQpX19iOwogIHJldHVybiAodmVjdG9yIGZsb2F0KV9fcmVzOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpIHZlY19vcih2ZWN0b3IgYm9vbCBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgZmxvYXQgX19iKSB7CiAgdmVjdG9yIHVuc2lnbmVkIGludCBfX3JlcyA9CiAgICAgICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYSB8ICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYjsKICByZXR1cm4gKHZlY3RvciBmbG9hdClfX3JlczsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGZsb2F0IF9fQVRUUlNfb19haSB2ZWNfb3IodmVjdG9yIGZsb2F0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgaW50IF9fYikgewogIHZlY3RvciB1bnNpZ25lZCBpbnQgX19yZXMgPQogICAgICAodmVjdG9yIHVuc2lnbmVkIGludClfX2EgfCAodmVjdG9yIHVuc2lnbmVkIGludClfX2I7CiAgcmV0dXJuICh2ZWN0b3IgZmxvYXQpX19yZXM7Cn0KCiNpZmRlZiBfX1ZTWF9fCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBkb3VibGUgX19BVFRSU19vX2FpIHZlY19vcih2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGRvdWJsZSBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBkb3VibGUpKCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYSB8CiAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZG91YmxlIF9fQVRUUlNfb19haSB2ZWNfb3IodmVjdG9yIGRvdWJsZSBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgZG91YmxlKSgodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2EgfAogICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGRvdWJsZSBfX0FUVFJTX29fYWkgdmVjX29yKHZlY3RvciBkb3VibGUgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGRvdWJsZSBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBkb3VibGUpKCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYSB8CiAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX29yKHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYSB8IF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19vcih2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19hLCB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYSB8IF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19vcih2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19hIHwgKHZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX29yKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2EgfCBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19vcih2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2EgfCBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19vcih2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2EgfCAodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX29yKHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2EsIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19hIHwgX19iOwp9CiNlbmRpZgoKI2lmZGVmIF9fUE9XRVI4X1ZFQ1RPUl9fCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX29yYyh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYSB8IH5fX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX29yYyh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgYm9vbCBjaGFyIF9fYikgewogIHJldHVybiBfX2EgfCB+X19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19vcmModmVjdG9yIGJvb2wgY2hhciBfX2EsIHZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19hIHwgfl9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19vcmModmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19hIHwgfl9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19vcmModmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgYm9vbCBjaGFyIF9fYikgewogIHJldHVybiBfX2EgfCB+X19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX29yYyh2ZWN0b3IgYm9vbCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYSB8IH5fX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGNoYXIgX19BVFRSU19vX2FpIHZlY19vcmModmVjdG9yIGJvb2wgY2hhciBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gX19hIHwgfl9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX29yYyh2ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19hIHwgfl9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX29yYyh2ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIGJvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYSB8IH5fX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY19vcmModmVjdG9yIGJvb2wgc2hvcnQgX19hLCB2ZWN0b3Igc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiBfX2EgfCB+X19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY19vcmModmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiBfX2EgfCB+X19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY19vcmModmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIGJvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYSB8IH5fX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX29yYyh2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19hIHwgfl9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgc2hvcnQgX19BVFRSU19vX2FpCnZlY19vcmModmVjdG9yIGJvb2wgc2hvcnQgX19hLCB2ZWN0b3IgYm9vbCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19hIHwgfl9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19vcmModmVjdG9yIHNpZ25lZCBpbnQgX19hLCB2ZWN0b3Igc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19hIHwgfl9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBpbnQgX19BVFRSU19vX2FpIHZlY19vcmModmVjdG9yIHNpZ25lZCBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYSB8IH5fX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfb3JjKHZlY3RvciBib29sIGludCBfX2EsIHZlY3RvciBzaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX2EgfCB+X19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfb3JjKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX2EgfCB+X19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfb3JjKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCB2ZWN0b3IgYm9vbCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYSB8IH5fX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19vcmModmVjdG9yIGJvb2wgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19hIHwgfl9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgaW50IF9fQVRUUlNfb19haSB2ZWNfb3JjKHZlY3RvciBib29sIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYSB8IH5fX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkKdmVjX29yYyh2ZWN0b3IgYm9vbCBpbnQgX19hLCB2ZWN0b3IgZmxvYXQgX19iKSB7CiByZXR1cm4gKHZlY3RvciBmbG9hdCkoX19hIHwgfih2ZWN0b3IgdW5zaWduZWQgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkKdmVjX29yYyh2ZWN0b3IgZmxvYXQgX19hLCB2ZWN0b3IgYm9vbCBpbnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgZmxvYXQpKCh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYSB8IH5fX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpIHZlY19vcmModmVjdG9yIGZsb2F0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBmbG9hdCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBmbG9hdCkoKHZlY3RvciB1bnNpZ25lZCBpbnQpX19hIHwgfih2ZWN0b3IgdW5zaWduZWQgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfb3JjKHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYSB8IH5fX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfb3JjKHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2EgfCB+X19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX29yYyh2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19hLCB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19hIHwgfl9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX29yYyh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19hIHwgfl9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX29yYyh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2EgfCB+X19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfb3JjKHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2EsIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYSB8IH5fX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX29yYyh2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYSB8IH5fX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBkb3VibGUgX19BVFRSU19vX2FpCnZlY19vcmModmVjdG9yIGRvdWJsZSBfX2EsIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBkb3VibGUpKCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYSB8IH5fX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZG91YmxlIF9fQVRUUlNfb19haQp2ZWNfb3JjKHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2EsIHZlY3RvciBkb3VibGUgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgZG91YmxlKShfX2EgfCB+KHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGRvdWJsZSBfX0FUVFJTX29fYWkgdmVjX29yYyh2ZWN0b3IgZG91YmxlIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgZG91YmxlIF9fYikgewogIHJldHVybiAodmVjdG9yIGRvdWJsZSkoKHZlY3RvciBib29sIGxvbmcgbG9uZylfX2EgfAogICAgICAgICAgICAgICAgICAgICAgICAgfih2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYik7Cn0KI2VuZGlmCgovKiB2ZWNfdm9yICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY192b3IodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2EgfCBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3Zvcih2ZWN0b3IgYm9vbCBjaGFyIF9fYSwgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIHNpZ25lZCBjaGFyKV9fYSB8IF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfdm9yKHZlY3RvciBzaWduZWQgY2hhciBfX2EsIHZlY3RvciBib29sIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYSB8ICh2ZWN0b3Igc2lnbmVkIGNoYXIpX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3Zvcih2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2EgfCBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfdm9yKHZlY3RvciBib29sIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSB8IF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY192b3IodmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgYm9vbCBjaGFyIF9fYikgewogIHJldHVybiBfX2EgfCAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBjaGFyIF9fQVRUUlNfb19haSB2ZWNfdm9yKHZlY3RvciBib29sIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYSB8IF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfdm9yKHZlY3RvciBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYSB8IF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfdm9yKHZlY3RvciBib29sIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaG9ydCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBzaG9ydClfX2EgfCBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaG9ydCBfX0FUVFJTX29fYWkgdmVjX3Zvcih2ZWN0b3Igc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYSB8ICh2ZWN0b3Igc2hvcnQpX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY192b3IodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiBfX2EgfCBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3Zvcih2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2EgfCBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3Zvcih2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgYm9vbCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19hIHwgKHZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfdm9yKHZlY3RvciBib29sIHNob3J0IF9fYSwgdmVjdG9yIGJvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYSB8IF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX3Zvcih2ZWN0b3IgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgaW50IF9fYikgewogIHJldHVybiBfX2EgfCBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY192b3IodmVjdG9yIGJvb2wgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgaW50IF9fYikgewogIHJldHVybiAodmVjdG9yIGludClfX2EgfCBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY192b3IodmVjdG9yIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgaW50IF9fYikgewogIHJldHVybiBfX2EgfCAodmVjdG9yIGludClfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY192b3IodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYSB8IF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX3Zvcih2ZWN0b3IgYm9vbCBpbnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGludClfX2EgfCBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY192b3IodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIHZlY3RvciBib29sIGludCBfX2IpIHsKICByZXR1cm4gX19hIHwgKHZlY3RvciB1bnNpZ25lZCBpbnQpX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBpbnQgX19BVFRSU19vX2FpIHZlY192b3IodmVjdG9yIGJvb2wgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGludCBfX2IpIHsKICByZXR1cm4gX19hIHwgX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpIHZlY192b3IodmVjdG9yIGZsb2F0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBmbG9hdCBfX2IpIHsKICB2ZWN0b3IgdW5zaWduZWQgaW50IF9fcmVzID0KICAgICAgKHZlY3RvciB1bnNpZ25lZCBpbnQpX19hIHwgKHZlY3RvciB1bnNpZ25lZCBpbnQpX19iOwogIHJldHVybiAodmVjdG9yIGZsb2F0KV9fcmVzOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpIHZlY192b3IodmVjdG9yIGJvb2wgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBmbG9hdCBfX2IpIHsKICB2ZWN0b3IgdW5zaWduZWQgaW50IF9fcmVzID0KICAgICAgKHZlY3RvciB1bnNpZ25lZCBpbnQpX19hIHwgKHZlY3RvciB1bnNpZ25lZCBpbnQpX19iOwogIHJldHVybiAodmVjdG9yIGZsb2F0KV9fcmVzOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpIHZlY192b3IodmVjdG9yIGZsb2F0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGludCBfX2IpIHsKICB2ZWN0b3IgdW5zaWduZWQgaW50IF9fcmVzID0KICAgICAgKHZlY3RvciB1bnNpZ25lZCBpbnQpX19hIHwgKHZlY3RvciB1bnNpZ25lZCBpbnQpX19iOwogIHJldHVybiAodmVjdG9yIGZsb2F0KV9fcmVzOwp9CgojaWZkZWYgX19WU1hfXwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX3Zvcih2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2EgfCBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfdm9yKHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2EsIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiAodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19hIHwgX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX3Zvcih2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19hIHwgKHZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX3Zvcih2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19hIHwgX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfdm9yKHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2EsIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYSB8IF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX3Zvcih2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2EgfCAodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX3Zvcih2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYSB8IF9fYjsKfQojZW5kaWYKCi8qIHZlY19wYWNrICovCgovKiBUaGUgdmFyaW91cyB2ZWN0b3IgcGFjayBpbnN0cnVjdGlvbnMgaGF2ZSBhIGJpZy1lbmRpYW4gYmlhcywgc28gZm9yCiAgIGxpdHRsZSBlbmRpYW4gd2UgbXVzdCBoYW5kbGUgcmV2ZXJzZWQgZWxlbWVudCBudW1iZXJpbmcuICAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfcGFjayh2ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2IpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuICh2ZWN0b3Igc2lnbmVkIGNoYXIpdmVjX3Blcm0oCiAgICAgIF9fYSwgX19iLAogICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKDB4MDAsIDB4MDIsIDB4MDQsIDB4MDYsIDB4MDgsIDB4MEEsIDB4MEMsIDB4MEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMCwgMHgxMiwgMHgxNCwgMHgxNiwgMHgxOCwgMHgxQSwgMHgxQywgMHgxRSkpOwojZWxzZQogIHJldHVybiAodmVjdG9yIHNpZ25lZCBjaGFyKXZlY19wZXJtKAogICAgICBfX2EsIF9fYiwKICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgweDAxLCAweDAzLCAweDA1LCAweDA3LCAweDA5LCAweDBCLCAweDBELCAweDBGLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTEsIDB4MTMsIDB4MTUsIDB4MTcsIDB4MTksIDB4MUIsIDB4MUQsIDB4MUYpKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfcGFjayh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGNoYXIpdmVjX3Blcm0oCiAgICAgIF9fYSwgX19iLAogICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKDB4MDAsIDB4MDIsIDB4MDQsIDB4MDYsIDB4MDgsIDB4MEEsIDB4MEMsIDB4MEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMCwgMHgxMiwgMHgxNCwgMHgxNiwgMHgxOCwgMHgxQSwgMHgxQywgMHgxRSkpOwojZWxzZQogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGNoYXIpdmVjX3Blcm0oCiAgICAgIF9fYSwgX19iLAogICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKDB4MDEsIDB4MDMsIDB4MDUsIDB4MDcsIDB4MDksIDB4MEIsIDB4MEQsIDB4MEYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMSwgMHgxMywgMHgxNSwgMHgxNywgMHgxOSwgMHgxQiwgMHgxRCwgMHgxRikpOwojZW5kaWYKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgY2hhciBfX0FUVFJTX29fYWkKdmVjX3BhY2sodmVjdG9yIGJvb2wgc2hvcnQgX19hLCB2ZWN0b3IgYm9vbCBzaG9ydCBfX2IpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBjaGFyKXZlY19wZXJtKAogICAgICBfX2EsIF9fYiwKICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgweDAwLCAweDAyLCAweDA0LCAweDA2LCAweDA4LCAweDBBLCAweDBDLCAweDBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAsIDB4MTIsIDB4MTQsIDB4MTYsIDB4MTgsIDB4MUEsIDB4MUMsIDB4MUUpKTsKI2Vsc2UKICByZXR1cm4gKHZlY3RvciBib29sIGNoYXIpdmVjX3Blcm0oCiAgICAgIF9fYSwgX19iLAogICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKDB4MDEsIDB4MDMsIDB4MDUsIDB4MDcsIDB4MDksIDB4MEIsIDB4MEQsIDB4MEYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMSwgMHgxMywgMHgxNSwgMHgxNywgMHgxOSwgMHgxQiwgMHgxRCwgMHgxRikpOwojZW5kaWYKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfcGFjayh2ZWN0b3IgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgaW50IF9fYikgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gKHZlY3RvciBzaG9ydCl2ZWNfcGVybSgKICAgICAgX19hLCBfX2IsCiAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMHgwMCwgMHgwMSwgMHgwNCwgMHgwNSwgMHgwOCwgMHgwOSwgMHgwQywgMHgwRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwLCAweDExLCAweDE0LCAweDE1LCAweDE4LCAweDE5LCAweDFDLCAweDFEKSk7CiNlbHNlCiAgcmV0dXJuICh2ZWN0b3Igc2hvcnQpdmVjX3Blcm0oCiAgICAgIF9fYSwgX19iLAogICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKDB4MDIsIDB4MDMsIDB4MDYsIDB4MDcsIDB4MEEsIDB4MEIsIDB4MEUsIDB4MEYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHgxMywgMHgxNiwgMHgxNywgMHgxQSwgMHgxQiwgMHgxRSwgMHgxRikpOwojZW5kaWYKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfcGFjayh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpdmVjX3Blcm0oCiAgICAgIF9fYSwgX19iLAogICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKDB4MDAsIDB4MDEsIDB4MDQsIDB4MDUsIDB4MDgsIDB4MDksIDB4MEMsIDB4MEQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMCwgMHgxMSwgMHgxNCwgMHgxNSwgMHgxOCwgMHgxOSwgMHgxQywgMHgxRCkpOwojZWxzZQogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIHNob3J0KXZlY19wZXJtKAogICAgICBfX2EsIF9fYiwKICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgweDAyLCAweDAzLCAweDA2LCAweDA3LCAweDBBLCAweDBCLCAweDBFLCAweDBGLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4MTMsIDB4MTYsIDB4MTcsIDB4MUEsIDB4MUIsIDB4MUUsIDB4MUYpKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfcGFjayh2ZWN0b3IgYm9vbCBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgaW50IF9fYikgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gKHZlY3RvciBib29sIHNob3J0KXZlY19wZXJtKAogICAgICBfX2EsIF9fYiwKICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgweDAwLCAweDAxLCAweDA0LCAweDA1LCAweDA4LCAweDA5LCAweDBDLCAweDBELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAsIDB4MTEsIDB4MTQsIDB4MTUsIDB4MTgsIDB4MTksIDB4MUMsIDB4MUQpKTsKI2Vsc2UKICByZXR1cm4gKHZlY3RvciBib29sIHNob3J0KXZlY19wZXJtKAogICAgICBfX2EsIF9fYiwKICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgweDAyLCAweDAzLCAweDA2LCAweDA3LCAweDBBLCAweDBCLCAweDBFLCAweDBGLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4MTMsIDB4MTYsIDB4MTcsIDB4MUEsIDB4MUIsIDB4MUUsIDB4MUYpKTsKI2VuZGlmCn0KCiNpZmRlZiBfX1ZTWF9fCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfcGFjayh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYikgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gKHZlY3RvciBzaWduZWQgaW50KXZlY19wZXJtKAogICAgICBfX2EsIF9fYiwKICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgweDAwLCAweDAxLCAweDAyLCAweDAzLCAweDA4LCAweDA5LCAweDBBLCAweDBCLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAsIDB4MTEsIDB4MTIsIDB4MTMsIDB4MTgsIDB4MTksIDB4MUEsIDB4MUIpKTsKI2Vsc2UKICByZXR1cm4gKHZlY3RvciBzaWduZWQgaW50KXZlY19wZXJtKAogICAgICBfX2EsIF9fYiwKICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgweDA0LCAweDA1LCAweDA2LCAweDA3LCAweDBDLCAweDBELCAweDBFLCAweDBGLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTQsIDB4MTUsIDB4MTYsIDB4MTcsIDB4MUMsIDB4MUQsIDB4MUUsIDB4MUYpKTsKI2VuZGlmCn0Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX3BhY2sodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGludCl2ZWNfcGVybSgKICAgICAgX19hLCBfX2IsCiAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMHgwMCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwOCwgMHgwOSwgMHgwQSwgMHgwQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwLCAweDExLCAweDEyLCAweDEzLCAweDE4LCAweDE5LCAweDFBLCAweDFCKSk7CiNlbHNlCiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgaW50KXZlY19wZXJtKAogICAgICBfX2EsIF9fYiwKICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgweDA0LCAweDA1LCAweDA2LCAweDA3LCAweDBDLCAweDBELCAweDBFLCAweDBGLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTQsIDB4MTUsIDB4MTYsIDB4MTcsIDB4MUMsIDB4MUQsIDB4MUUsIDB4MUYpKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGludCBfX0FUVFJTX29fYWkKdmVjX3BhY2sodmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYSwgdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYikgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gKHZlY3RvciBib29sIGludCl2ZWNfcGVybSgKICAgICAgX19hLCBfX2IsCiAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMHgwMCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwOCwgMHgwOSwgMHgwQSwgMHgwQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwLCAweDExLCAweDEyLCAweDEzLCAweDE4LCAweDE5LCAweDFBLCAweDFCKSk7CiNlbHNlCiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBpbnQpdmVjX3Blcm0oCiAgICAgIF9fYSwgX19iLAogICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKDB4MDQsIDB4MDUsIDB4MDYsIDB4MDcsIDB4MEMsIDB4MEQsIDB4MEUsIDB4MEYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNCwgMHgxNSwgMHgxNiwgMHgxNywgMHgxQywgMHgxRCwgMHgxRSwgMHgxRikpOwojZW5kaWYKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGZsb2F0IF9fQVRUUlNfb19haQp2ZWNfcGFjayh2ZWN0b3IgZG91YmxlIF9fYSwgdmVjdG9yIGRvdWJsZSBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBmbG9hdCkgKF9fYVswXSwgX19hWzFdLCBfX2JbMF0sIF9fYlsxXSk7Cn0KI2VuZGlmCgojaWZkZWYgX19QT1dFUjlfVkVDVE9SX18Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfcGFja190b19zaG9ydF9mcDMyKHZlY3RvciBmbG9hdCBfX2EsIHZlY3RvciBmbG9hdCBfX2IpIHsKICB2ZWN0b3IgZmxvYXQgX19yZXNhID0gX19idWlsdGluX3ZzeF94dmN2c3BocChfX2EpOwogIHZlY3RvciBmbG9hdCBfX3Jlc2IgPSBfX2J1aWx0aW5fdnN4X3h2Y3ZzcGhwKF9fYik7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIHNob3J0KXZlY19tZXJnZWUoX19yZXNhLCBfX3Jlc2IpOwojZWxzZQogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIHNob3J0KXZlY19tZXJnZW8oX19yZXNhLCBfX3Jlc2IpOwojZW5kaWYKfQoKI2VuZGlmCi8qIHZlY192cGt1aHVtICovCgojZGVmaW5lIF9fYnVpbHRpbl9hbHRpdmVjX3Zwa3VodW0gdmVjX3Zwa3VodW0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3Zwa3VodW0odmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciBzaWduZWQgc2hvcnQgX19iKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiAodmVjdG9yIHNpZ25lZCBjaGFyKXZlY19wZXJtKAogICAgICBfX2EsIF9fYiwKICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgweDAwLCAweDAyLCAweDA0LCAweDA2LCAweDA4LCAweDBBLCAweDBDLCAweDBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAsIDB4MTIsIDB4MTQsIDB4MTYsIDB4MTgsIDB4MUEsIDB4MUMsIDB4MUUpKTsKI2Vsc2UKICByZXR1cm4gKHZlY3RvciBzaWduZWQgY2hhcil2ZWNfcGVybSgKICAgICAgX19hLCBfX2IsCiAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMHgwMSwgMHgwMywgMHgwNSwgMHgwNywgMHgwOSwgMHgwQiwgMHgwRCwgMHgwRiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDExLCAweDEzLCAweDE1LCAweDE3LCAweDE5LCAweDFCLCAweDFELCAweDFGKSk7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3Zwa3VodW0odmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBjaGFyKXZlY19wZXJtKAogICAgICBfX2EsIF9fYiwKICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgweDAwLCAweDAyLCAweDA0LCAweDA2LCAweDA4LCAweDBBLCAweDBDLCAweDBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAsIDB4MTIsIDB4MTQsIDB4MTYsIDB4MTgsIDB4MUEsIDB4MUMsIDB4MUUpKTsKI2Vsc2UKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBjaGFyKXZlY19wZXJtKAogICAgICBfX2EsIF9fYiwKICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgweDAxLCAweDAzLCAweDA1LCAweDA3LCAweDA5LCAweDBCLCAweDBELCAweDBGLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTEsIDB4MTMsIDB4MTUsIDB4MTcsIDB4MTksIDB4MUIsIDB4MUQsIDB4MUYpKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGNoYXIgX19BVFRSU19vX2FpCnZlY192cGt1aHVtKHZlY3RvciBib29sIHNob3J0IF9fYSwgdmVjdG9yIGJvb2wgc2hvcnQgX19iKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiAodmVjdG9yIGJvb2wgY2hhcil2ZWNfcGVybSgKICAgICAgX19hLCBfX2IsCiAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMHgwMCwgMHgwMiwgMHgwNCwgMHgwNiwgMHgwOCwgMHgwQSwgMHgwQywgMHgwRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwLCAweDEyLCAweDE0LCAweDE2LCAweDE4LCAweDFBLCAweDFDLCAweDFFKSk7CiNlbHNlCiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBjaGFyKXZlY19wZXJtKAogICAgICBfX2EsIF9fYiwKICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgweDAxLCAweDAzLCAweDA1LCAweDA3LCAweDA5LCAweDBCLCAweDBELCAweDBGLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTEsIDB4MTMsIDB4MTUsIDB4MTcsIDB4MTksIDB4MUIsIDB4MUQsIDB4MUYpKTsKI2VuZGlmCn0KCi8qIHZlY192cGt1d3VtICovCgojZGVmaW5lIF9fYnVpbHRpbl9hbHRpdmVjX3Zwa3V3dW0gdmVjX3Zwa3V3dW0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaG9ydCBfX0FUVFJTX29fYWkgdmVjX3Zwa3V3dW0odmVjdG9yIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGludCBfX2IpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuICh2ZWN0b3Igc2hvcnQpdmVjX3Blcm0oCiAgICAgIF9fYSwgX19iLAogICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKDB4MDAsIDB4MDEsIDB4MDQsIDB4MDUsIDB4MDgsIDB4MDksIDB4MEMsIDB4MEQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMCwgMHgxMSwgMHgxNCwgMHgxNSwgMHgxOCwgMHgxOSwgMHgxQywgMHgxRCkpOwojZWxzZQogIHJldHVybiAodmVjdG9yIHNob3J0KXZlY19wZXJtKAogICAgICBfX2EsIF9fYiwKICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgweDAyLCAweDAzLCAweDA2LCAweDA3LCAweDBBLCAweDBCLCAweDBFLCAweDBGLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4MTMsIDB4MTYsIDB4MTcsIDB4MUEsIDB4MUIsIDB4MUUsIDB4MUYpKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3Zwa3V3dW0odmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIHNob3J0KXZlY19wZXJtKAogICAgICBfX2EsIF9fYiwKICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgweDAwLCAweDAxLCAweDA0LCAweDA1LCAweDA4LCAweDA5LCAweDBDLCAweDBELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAsIDB4MTEsIDB4MTQsIDB4MTUsIDB4MTgsIDB4MTksIDB4MUMsIDB4MUQpKTsKI2Vsc2UKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBzaG9ydCl2ZWNfcGVybSgKICAgICAgX19hLCBfX2IsCiAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMHgwMiwgMHgwMywgMHgwNiwgMHgwNywgMHgwQSwgMHgwQiwgMHgwRSwgMHgwRiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweDEzLCAweDE2LCAweDE3LCAweDFBLCAweDFCLCAweDFFLCAweDFGKSk7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3Zwa3V3dW0odmVjdG9yIGJvb2wgaW50IF9fYSwgdmVjdG9yIGJvb2wgaW50IF9fYikgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gKHZlY3RvciBib29sIHNob3J0KXZlY19wZXJtKAogICAgICBfX2EsIF9fYiwKICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgweDAwLCAweDAxLCAweDA0LCAweDA1LCAweDA4LCAweDA5LCAweDBDLCAweDBELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAsIDB4MTEsIDB4MTQsIDB4MTUsIDB4MTgsIDB4MTksIDB4MUMsIDB4MUQpKTsKI2Vsc2UKICByZXR1cm4gKHZlY3RvciBib29sIHNob3J0KXZlY19wZXJtKAogICAgICBfX2EsIF9fYiwKICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgweDAyLCAweDAzLCAweDA2LCAweDA3LCAweDBBLCAweDBCLCAweDBFLCAweDBGLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4MTMsIDB4MTYsIDB4MTcsIDB4MUEsIDB4MUIsIDB4MUUsIDB4MUYpKTsKI2VuZGlmCn0KCi8qIHZlY192cGt1ZHVtICovCgojaWZkZWYgX19QT1dFUjhfVkVDVE9SX18KI2RlZmluZSBfX2J1aWx0aW5fYWx0aXZlY192cGt1ZHVtIHZlY192cGt1ZHVtCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgaW50IF9fQVRUUlNfb19haSB2ZWNfdnBrdWR1bSh2ZWN0b3IgbG9uZyBsb25nIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGxvbmcgbG9uZyBfX2IpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuICh2ZWN0b3IgaW50KXZlY19wZXJtKAogICAgICBfX2EsIF9fYiwKICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgweDAwLCAweDAxLCAweDAyLCAweDAzLCAweDA4LCAweDA5LCAweDBBLCAweDBCLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAsIDB4MTEsIDB4MTIsIDB4MTMsIDB4MTgsIDB4MTksIDB4MUEsIDB4MUIpKTsKI2Vsc2UKICByZXR1cm4gKHZlY3RvciBpbnQpdmVjX3Blcm0oCiAgICAgIF9fYSwgX19iLAogICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKDB4MDQsIDB4MDUsIDB4MDYsIDB4MDcsIDB4MEMsIDB4MEQsIDB4MEUsIDB4MEYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNCwgMHgxNSwgMHgxNiwgMHgxNywgMHgxQywgMHgxRCwgMHgxRSwgMHgxRikpOwojZW5kaWYKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX3Zwa3VkdW0odmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGludCl2ZWNfcGVybSgKICAgICAgX19hLCBfX2IsCiAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMHgwMCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwOCwgMHgwOSwgMHgwQSwgMHgwQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwLCAweDExLCAweDEyLCAweDEzLCAweDE4LCAweDE5LCAweDFBLCAweDFCKSk7CiNlbHNlCiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgaW50KXZlY19wZXJtKAogICAgICBfX2EsIF9fYiwKICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgweDA0LCAweDA1LCAweDA2LCAweDA3LCAweDBDLCAweDBELCAweDBFLCAweDBGLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTQsIDB4MTUsIDB4MTYsIDB4MTcsIDB4MUMsIDB4MUQsIDB4MUUsIDB4MUYpKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGludCBfX0FUVFJTX29fYWkKdmVjX3Zwa3VkdW0odmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYSwgdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYikgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gKHZlY3RvciBib29sIGludCl2ZWNfcGVybSgKICAgICAgKHZlY3RvciBsb25nIGxvbmcpX19hLCAodmVjdG9yIGxvbmcgbG9uZylfX2IsCiAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMHgwMCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwOCwgMHgwOSwgMHgwQSwgMHgwQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwLCAweDExLCAweDEyLCAweDEzLCAweDE4LCAweDE5LCAweDFBLCAweDFCKSk7CiNlbHNlCiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBpbnQpdmVjX3Blcm0oCiAgICAgICh2ZWN0b3IgbG9uZyBsb25nKV9fYSwgKHZlY3RvciBsb25nIGxvbmcpX19iLAogICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKDB4MDQsIDB4MDUsIDB4MDYsIDB4MDcsIDB4MEMsIDB4MEQsIDB4MEUsIDB4MEYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNCwgMHgxNSwgMHgxNiwgMHgxNywgMHgxQywgMHgxRCwgMHgxRSwgMHgxRikpOwojZW5kaWYKfQojZW5kaWYKCi8qIHZlY19wYWNrcHggKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBwaXhlbCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCnZlY19wYWNrcHgodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiAodmVjdG9yIHBpeGVsKV9fYnVpbHRpbl9hbHRpdmVjX3Zwa3B4KF9fYiwgX19hKTsKI2Vsc2UKICByZXR1cm4gKHZlY3RvciBwaXhlbClfX2J1aWx0aW5fYWx0aXZlY192cGtweChfX2EsIF9fYik7CiNlbmRpZgp9CgovKiB2ZWNfdnBrcHggKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBwaXhlbCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCnZlY192cGtweCh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuICh2ZWN0b3IgcGl4ZWwpX19idWlsdGluX2FsdGl2ZWNfdnBrcHgoX19iLCBfX2EpOwojZWxzZQogIHJldHVybiAodmVjdG9yIHBpeGVsKV9fYnVpbHRpbl9hbHRpdmVjX3Zwa3B4KF9fYSwgX19iKTsKI2VuZGlmCn0KCi8qIHZlY19wYWNrcyAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haSB2ZWNfcGFja3ModmVjdG9yIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNob3J0IF9fYikgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnBrc2hzcyhfX2IsIF9fYSk7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3Zwa3Noc3MoX19hLCBfX2IpOwojZW5kaWYKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19wYWNrcyh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192cGt1aHVzKF9fYiwgX19hKTsKI2Vsc2UKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnBrdWh1cyhfX2EsIF9fYik7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfcGFja3ModmVjdG9yIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgaW50IF9fYikgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnBrc3dzcyhfX2IsIF9fYSk7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3Zwa3N3c3MoX19hLCBfX2IpOwojZW5kaWYKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfcGFja3ModmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192cGt1d3VzKF9fYiwgX19hKTsKI2Vsc2UKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnBrdXd1cyhfX2EsIF9fYik7CiNlbmRpZgp9CgojaWZkZWYgX19QT1dFUjhfVkVDVE9SX18Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX3BhY2tzKHZlY3RvciBsb25nIGxvbmcgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGxvbmcgbG9uZyBfX2IpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3Zwa3Nkc3MoX19iLCBfX2EpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192cGtzZHNzKF9fYSwgX19iKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19wYWNrcyh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3Zwa3VkdXMoX19iLCBfX2EpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192cGt1ZHVzKF9fYSwgX19iKTsKI2VuZGlmCn0KI2VuZGlmCgovKiB2ZWNfdnBrc2hzcyAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKdmVjX3Zwa3Noc3ModmVjdG9yIHNob3J0IF9fYSwgdmVjdG9yIHNob3J0IF9fYikgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnBrc2hzcyhfX2IsIF9fYSk7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3Zwa3Noc3MoX19hLCBfX2IpOwojZW5kaWYKfQoKLyogdmVjX3Zwa3Nkc3MgKi8KCiNpZmRlZiBfX1BPV0VSOF9WRUNUT1JfXwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgaW50IF9fQVRUUlNfb19haSB2ZWNfdnBrc2Rzcyh2ZWN0b3IgbG9uZyBsb25nIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGxvbmcgbG9uZyBfX2IpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3Zwa3Nkc3MoX19iLCBfX2EpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192cGtzZHNzKF9fYSwgX19iKTsKI2VuZGlmCn0KI2VuZGlmCgovKiB2ZWNfdnBrdWh1cyAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQp2ZWNfdnBrdWh1cyh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192cGt1aHVzKF9fYiwgX19hKTsKI2Vsc2UKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnBrdWh1cyhfX2EsIF9fYik7CiNlbmRpZgp9CgovKiB2ZWNfdnBrdWR1cyAqLwoKI2lmZGVmIF9fUE9XRVI4X1ZFQ1RPUl9fCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQp2ZWNfdnBrdWR1cyh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3Zwa3VkdXMoX19iLCBfX2EpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192cGt1ZHVzKF9fYSwgX19iKTsKI2VuZGlmCn0KI2VuZGlmCgovKiB2ZWNfdnBrc3dzcyAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCnZlY192cGtzd3NzKHZlY3RvciBpbnQgX19hLCB2ZWN0b3IgaW50IF9fYikgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnBrc3dzcyhfX2IsIF9fYSk7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3Zwa3N3c3MoX19hLCBfX2IpOwojZW5kaWYKfQoKLyogdmVjX3Zwa3V3dXMgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCnZlY192cGt1d3VzKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnBrdXd1cyhfX2IsIF9fYSk7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3Zwa3V3dXMoX19hLCBfX2IpOwojZW5kaWYKfQoKLyogdmVjX3BhY2tzdSAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19wYWNrc3UodmVjdG9yIHNob3J0IF9fYSwgdmVjdG9yIHNob3J0IF9fYikgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnBrc2h1cyhfX2IsIF9fYSk7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3Zwa3NodXMoX19hLCBfX2IpOwojZW5kaWYKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19wYWNrc3UodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnBrdWh1cyhfX2IsIF9fYSk7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3Zwa3VodXMoX19hLCBfX2IpOwojZW5kaWYKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfcGFja3N1KHZlY3RvciBpbnQgX19hLCB2ZWN0b3IgaW50IF9fYikgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnBrc3d1cyhfX2IsIF9fYSk7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3Zwa3N3dXMoX19hLCBfX2IpOwojZW5kaWYKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfcGFja3N1KHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnBrdXd1cyhfX2IsIF9fYSk7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3Zwa3V3dXMoX19hLCBfX2IpOwojZW5kaWYKfQoKI2lmZGVmIF9fUE9XRVI4X1ZFQ1RPUl9fCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19wYWNrc3UodmVjdG9yIGxvbmcgbG9uZyBfX2EsIHZlY3RvciBsb25nIGxvbmcgX19iKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192cGtzZHVzKF9fYiwgX19hKTsKI2Vsc2UKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnBrc2R1cyhfX2EsIF9fYik7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfcGFja3N1KHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnBrdWR1cyhfX2IsIF9fYSk7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3Zwa3VkdXMoX19hLCBfX2IpOwojZW5kaWYKfQojZW5kaWYKCi8qIHZlY192cGtzaHVzICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3Zwa3NodXModmVjdG9yIHNob3J0IF9fYSwgdmVjdG9yIHNob3J0IF9fYikgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnBrc2h1cyhfX2IsIF9fYSk7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3Zwa3NodXMoX19hLCBfX2IpOwojZW5kaWYKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY192cGtzaHVzKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3Zwa3VodXMoX19iLCBfX2EpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192cGt1aHVzKF9fYSwgX19iKTsKI2VuZGlmCn0KCi8qIHZlY192cGtzd3VzICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY192cGtzd3VzKHZlY3RvciBpbnQgX19hLCB2ZWN0b3IgaW50IF9fYikgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnBrc3d1cyhfX2IsIF9fYSk7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3Zwa3N3dXMoX19hLCBfX2IpOwojZW5kaWYKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfdnBrc3d1cyh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3Zwa3V3dXMoX19iLCBfX2EpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192cGt1d3VzKF9fYSwgX19iKTsKI2VuZGlmCn0KCi8qIHZlY192cGtzZHVzICovCgojaWZkZWYgX19QT1dFUjhfVkVDVE9SX18Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX3Zwa3NkdXModmVjdG9yIGxvbmcgbG9uZyBfX2EsIHZlY3RvciBsb25nIGxvbmcgX19iKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192cGtzZHVzKF9fYiwgX19hKTsKI2Vsc2UKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnBrc2R1cyhfX2EsIF9fYik7CiNlbmRpZgp9CiNlbmRpZgoKLyogdmVjX3Blcm0gKi8KCi8vIFRoZSB2cGVybSBpbnN0cnVjdGlvbiBpcyBkZWZpbmVkIGFyY2hpdGVjdHVyYWxseSB3aXRoIGEgYmlnLWVuZGlhbiBiaWFzLgovLyBGb3IgbGl0dGxlIGVuZGlhbiwgd2Ugc3dhcCB0aGUgaW5wdXQgb3BlcmFuZHMgYW5kIGludmVydCB0aGUgcGVybXV0ZQovLyBjb250cm9sIHZlY3Rvci4gIE9ubHkgdGhlIHJpZ2h0bW9zdCA1IGJpdHMgbWF0dGVyLCBzbyB3ZSBjb3VsZCB1c2UKLy8gYSB2ZWN0b3Igb2YgYWxsIDMxcyBpbnN0ZWFkIG9mIGFsbCAyNTVzIHRvIHBlcmZvcm0gdGhlIGludmVyc2lvbi4KLy8gSG93ZXZlciwgd2hlbiB0aGUgUENWIGlzIG5vdCBhIGNvbnN0YW50LCB1c2luZyAyNTUgaGFzIGFuIGFkdmFudGFnZQovLyBpbiB0aGF0IHRoZSB2ZWNfeG9yIGNhbiBiZSByZWNvZ25pemVkIGFzIGEgdmVjX25vciAoYW5kIGZvciBQOCBhbmQKLy8gbGF0ZXIsIHBvc3NpYmx5IGEgdmVjX25hbmQpLgoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haSB2ZWNfcGVybSgKICAgIHZlY3RvciBzaWduZWQgY2hhciBfX2EsIHZlY3RvciBzaWduZWQgY2hhciBfX2IsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYykgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2QgPSB7MjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1fTsKICBfX2QgPSB2ZWNfeG9yKF9fYywgX19kKTsKICByZXR1cm4gKHZlY3RvciBzaWduZWQgY2hhcilfX2J1aWx0aW5fYWx0aXZlY192cGVybV80c2koKHZlY3RvciBpbnQpX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2EsIF9fZCk7CiNlbHNlCiAgcmV0dXJuICh2ZWN0b3Igc2lnbmVkIGNoYXIpX19idWlsdGluX2FsdGl2ZWNfdnBlcm1fNHNpKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iLCBfX2MpOwojZW5kaWYKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19wZXJtKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iLAogICAgICAgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2MpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19kID0gezI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NX07CiAgX19kID0gdmVjX3hvcihfX2MsIF9fZCk7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2J1aWx0aW5fYWx0aXZlY192cGVybV80c2koCiAgICAgICh2ZWN0b3IgaW50KV9fYiwgKHZlY3RvciBpbnQpX19hLCBfX2QpOwojZWxzZQogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19idWlsdGluX2FsdGl2ZWNfdnBlcm1fNHNpKAogICAgICAodmVjdG9yIGludClfX2EsICh2ZWN0b3IgaW50KV9fYiwgX19jKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGNoYXIgX19BVFRSU19vX2FpCnZlY19wZXJtKHZlY3RvciBib29sIGNoYXIgX19hLCB2ZWN0b3IgYm9vbCBjaGFyIF9fYiwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19jKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fZCA9IHsyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTV9OwogIF9fZCA9IHZlY194b3IoX19jLCBfX2QpOwogIHJldHVybiAodmVjdG9yIGJvb2wgY2hhcilfX2J1aWx0aW5fYWx0aXZlY192cGVybV80c2koKHZlY3RvciBpbnQpX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19hLCBfX2QpOwojZWxzZQogIHJldHVybiAodmVjdG9yIGJvb2wgY2hhcilfX2J1aWx0aW5fYWx0aXZlY192cGVybV80c2koKHZlY3RvciBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iLCBfX2MpOwojZW5kaWYKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfcGVybSh2ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2lnbmVkIHNob3J0IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2MpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19kID0gezI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NX07CiAgX19kID0gdmVjX3hvcihfX2MsIF9fZCk7CiAgcmV0dXJuICh2ZWN0b3Igc2lnbmVkIHNob3J0KV9fYnVpbHRpbl9hbHRpdmVjX3ZwZXJtXzRzaSgodmVjdG9yIGludClfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2EsIF9fZCk7CiNlbHNlCiAgcmV0dXJuICh2ZWN0b3Igc2lnbmVkIHNob3J0KV9fYnVpbHRpbl9hbHRpdmVjX3ZwZXJtXzRzaSgodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IsIF9fYyk7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY19wZXJtKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IsCiAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYykgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2QgPSB7MjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1fTsKICBfX2QgPSB2ZWNfeG9yKF9fYywgX19kKTsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2J1aWx0aW5fYWx0aXZlY192cGVybV80c2koCiAgICAgICh2ZWN0b3IgaW50KV9fYiwgKHZlY3RvciBpbnQpX19hLCBfX2QpOwojZWxzZQogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYnVpbHRpbl9hbHRpdmVjX3ZwZXJtXzRzaSgKICAgICAgKHZlY3RvciBpbnQpX19hLCAodmVjdG9yIGludClfX2IsIF9fYyk7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBzaG9ydCBfX0FUVFJTX29fYWkgdmVjX3Blcm0oCiAgICB2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsIHZlY3RvciBib29sIHNob3J0IF9fYiwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19jKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fZCA9IHsyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTV9OwogIF9fZCA9IHZlY194b3IoX19jLCBfX2QpOwogIHJldHVybiAodmVjdG9yIGJvb2wgc2hvcnQpX19idWlsdGluX2FsdGl2ZWNfdnBlcm1fNHNpKCh2ZWN0b3IgaW50KV9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2EsIF9fZCk7CiNlbHNlCiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBzaG9ydClfX2J1aWx0aW5fYWx0aXZlY192cGVybV80c2koKHZlY3RvciBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgaW50KV9fYiwgX19jKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBwaXhlbCBfX0FUVFJTX29fYWkgdmVjX3Blcm0odmVjdG9yIHBpeGVsIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgcGl4ZWwgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYykgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2QgPSB7MjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1fTsKICBfX2QgPSB2ZWNfeG9yKF9fYywgX19kKTsKICByZXR1cm4gKHZlY3RvciBwaXhlbClfX2J1aWx0aW5fYWx0aXZlY192cGVybV80c2koKHZlY3RvciBpbnQpX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2EsIF9fZCk7CiNlbHNlCiAgcmV0dXJuICh2ZWN0b3IgcGl4ZWwpX19idWlsdGluX2FsdGl2ZWNfdnBlcm1fNHNpKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iLCBfX2MpOwojZW5kaWYKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX3Blcm0odmVjdG9yIHNpZ25lZCBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2lnbmVkIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYykgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2QgPSB7MjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1fTsKICBfX2QgPSB2ZWNfeG9yKF9fYywgX19kKTsKICByZXR1cm4gKHZlY3RvciBzaWduZWQgaW50KV9fYnVpbHRpbl9hbHRpdmVjX3ZwZXJtXzRzaShfX2IsIF9fYSwgX19kKTsKI2Vsc2UKICByZXR1cm4gKHZlY3RvciBzaWduZWQgaW50KV9fYnVpbHRpbl9hbHRpdmVjX3ZwZXJtXzRzaShfX2EsIF9fYiwgX19jKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19wZXJtKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYiwKICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19jKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fZCA9IHsyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTV9OwogIF9fZCA9IHZlY194b3IoX19jLCBfX2QpOwogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGludClfX2J1aWx0aW5fYWx0aXZlY192cGVybV80c2koKHZlY3RvciBpbnQpX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19hLCBfX2QpOwojZWxzZQogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGludClfX2J1aWx0aW5fYWx0aXZlY192cGVybV80c2koKHZlY3RvciBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iLCBfX2MpOwojZW5kaWYKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgaW50IF9fQVRUUlNfb19haQp2ZWNfcGVybSh2ZWN0b3IgYm9vbCBpbnQgX19hLCB2ZWN0b3IgYm9vbCBpbnQgX19iLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2MpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19kID0gezI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NX07CiAgX19kID0gdmVjX3hvcihfX2MsIF9fZCk7CiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBpbnQpX19idWlsdGluX2FsdGl2ZWNfdnBlcm1fNHNpKCh2ZWN0b3IgaW50KV9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19hLCBfX2QpOwojZWxzZQogIHJldHVybiAodmVjdG9yIGJvb2wgaW50KV9fYnVpbHRpbl9hbHRpdmVjX3ZwZXJtXzRzaSgodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgaW50KV9fYiwgX19jKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkgdmVjX3Blcm0odmVjdG9yIGZsb2F0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgZmxvYXQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYykgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2QgPSB7MjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1fTsKICBfX2QgPSB2ZWNfeG9yKF9fYywgX19kKTsKICByZXR1cm4gKHZlY3RvciBmbG9hdClfX2J1aWx0aW5fYWx0aXZlY192cGVybV80c2koKHZlY3RvciBpbnQpX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2EsIF9fZCk7CiNlbHNlCiAgcmV0dXJuICh2ZWN0b3IgZmxvYXQpX19idWlsdGluX2FsdGl2ZWNfdnBlcm1fNHNpKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iLCBfX2MpOwojZW5kaWYKfQoKI2lmZGVmIF9fVlNYX18Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX3Blcm0odmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2IsCiAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYykgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2QgPSB7MjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1fTsKICBfX2QgPSB2ZWNfeG9yKF9fYywgX19kKTsKICByZXR1cm4gKHZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYnVpbHRpbl9hbHRpdmVjX3ZwZXJtXzRzaSgKICAgICAgKHZlY3RvciBpbnQpX19iLCAodmVjdG9yIGludClfX2EsIF9fZCk7CiNlbHNlCiAgcmV0dXJuICh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2J1aWx0aW5fYWx0aXZlY192cGVybV80c2koCiAgICAgICh2ZWN0b3IgaW50KV9fYSwgKHZlY3RvciBpbnQpX19iLCBfX2MpOwojZW5kaWYKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX3Blcm0odmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iLAogICAgICAgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2MpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19kID0gezI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NX07CiAgX19kID0gdmVjX3hvcihfX2MsIF9fZCk7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYnVpbHRpbl9hbHRpdmVjX3ZwZXJtXzRzaSgKICAgICAgKHZlY3RvciBpbnQpX19iLCAodmVjdG9yIGludClfX2EsIF9fZCk7CiNlbHNlCiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYnVpbHRpbl9hbHRpdmVjX3ZwZXJtXzRzaSgKICAgICAgKHZlY3RvciBpbnQpX19hLCAodmVjdG9yIGludClfX2IsIF9fYyk7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19wZXJtKHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2EsIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2IsCiAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYykgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2QgPSB7MjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1fTsKICBfX2QgPSB2ZWNfeG9yKF9fYywgX19kKTsKICByZXR1cm4gKHZlY3RvciBib29sIGxvbmcgbG9uZylfX2J1aWx0aW5fYWx0aXZlY192cGVybV80c2koCiAgICAgICh2ZWN0b3IgaW50KV9fYiwgKHZlY3RvciBpbnQpX19hLCBfX2QpOwojZWxzZQogIHJldHVybiAodmVjdG9yIGJvb2wgbG9uZyBsb25nKV9fYnVpbHRpbl9hbHRpdmVjX3ZwZXJtXzRzaSgKICAgICAgKHZlY3RvciBpbnQpX19hLCAodmVjdG9yIGludClfX2IsIF9fYyk7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZG91YmxlIF9fQVRUUlNfb19haQp2ZWNfcGVybSh2ZWN0b3IgZG91YmxlIF9fYSwgdmVjdG9yIGRvdWJsZSBfX2IsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYykgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2QgPSB7MjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1fTsKICBfX2QgPSB2ZWNfeG9yKF9fYywgX19kKTsKICByZXR1cm4gKHZlY3RvciBkb3VibGUpX19idWlsdGluX2FsdGl2ZWNfdnBlcm1fNHNpKCh2ZWN0b3IgaW50KV9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgaW50KV9fYSwgX19kKTsKI2Vsc2UKICByZXR1cm4gKHZlY3RvciBkb3VibGUpX19idWlsdGluX2FsdGl2ZWNfdnBlcm1fNHNpKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgaW50KV9fYiwgX19jKTsKI2VuZGlmCn0KI2VuZGlmCgovKiB2ZWNfdnBlcm0gKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkgdmVjX3ZwZXJtKAogICAgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYiwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19jKSB7CiAgcmV0dXJuIHZlY19wZXJtKF9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3ZwZXJtKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iLAogICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19jKSB7CiAgcmV0dXJuIHZlY19wZXJtKF9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBjaGFyIF9fQVRUUlNfb19haSB2ZWNfdnBlcm0oCiAgICB2ZWN0b3IgYm9vbCBjaGFyIF9fYSwgdmVjdG9yIGJvb2wgY2hhciBfX2IsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYykgewogIHJldHVybiB2ZWNfcGVybShfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfdnBlcm0odmVjdG9yIHNob3J0IF9fYSwgdmVjdG9yIHNob3J0IF9fYiwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19jKSB7CiAgcmV0dXJuIHZlY19wZXJtKF9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY192cGVybSh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iLAogICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19jKSB7CiAgcmV0dXJuIHZlY19wZXJtKF9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBzaG9ydCBfX0FUVFJTX29fYWkgdmVjX3ZwZXJtKAogICAgdmVjdG9yIGJvb2wgc2hvcnQgX19hLCB2ZWN0b3IgYm9vbCBzaG9ydCBfX2IsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYykgewogIHJldHVybiB2ZWNfcGVybShfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHBpeGVsIF9fQVRUUlNfb19haQp2ZWNfdnBlcm0odmVjdG9yIHBpeGVsIF9fYSwgdmVjdG9yIHBpeGVsIF9fYiwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19jKSB7CiAgcmV0dXJuIHZlY19wZXJtKF9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgaW50IF9fQVRUUlNfb19haSB2ZWNfdnBlcm0odmVjdG9yIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYykgewogIHJldHVybiB2ZWNfcGVybShfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX3ZwZXJtKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYiwKICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYykgewogIHJldHVybiB2ZWNfcGVybShfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgaW50IF9fQVRUUlNfb19haQp2ZWNfdnBlcm0odmVjdG9yIGJvb2wgaW50IF9fYSwgdmVjdG9yIGJvb2wgaW50IF9fYiwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19jKSB7CiAgcmV0dXJuIHZlY19wZXJtKF9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpCnZlY192cGVybSh2ZWN0b3IgZmxvYXQgX19hLCB2ZWN0b3IgZmxvYXQgX19iLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2MpIHsKICByZXR1cm4gdmVjX3Blcm0oX19hLCBfX2IsIF9fYyk7Cn0KCiNpZmRlZiBfX1ZTWF9fCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBsb25nIGxvbmcgX19BVFRSU19vX2FpIHZlY192cGVybSgKICAgIHZlY3RvciBsb25nIGxvbmcgX19hLCB2ZWN0b3IgbG9uZyBsb25nIF9fYiwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19jKSB7CiAgcmV0dXJuIHZlY19wZXJtKF9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfdnBlcm0odmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iLAogICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19jKSB7CiAgcmV0dXJuIHZlY19wZXJtKF9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZG91YmxlIF9fQVRUUlNfb19haQp2ZWNfdnBlcm0odmVjdG9yIGRvdWJsZSBfX2EsIHZlY3RvciBkb3VibGUgX19iLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2MpIHsKICByZXR1cm4gdmVjX3Blcm0oX19hLCBfX2IsIF9fYyk7Cn0KI2VuZGlmCgovKiB2ZWNfcmUgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkgdmVjX3JlKHZlY3RvciBmbG9hdCBfX2EpIHsKI2lmZGVmIF9fVlNYX18KICByZXR1cm4gX19idWlsdGluX3ZzeF94dnJlc3AoX19hKTsKI2Vsc2UKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnJlZnAoX19hKTsKI2VuZGlmCn0KCiNpZmRlZiBfX1ZTWF9fCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBkb3VibGUgX19BVFRSU19vX2FpIHZlY19yZSh2ZWN0b3IgZG91YmxlIF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fdnN4X3h2cmVkcChfX2EpOwp9CiNlbmRpZgoKLyogdmVjX3ZyZWZwICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQp2ZWNfdnJlZnAodmVjdG9yIGZsb2F0IF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192cmVmcChfX2EpOwp9CgovKiB2ZWNfcmwgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3JsKHZlY3RvciBzaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIHNpZ25lZCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX3ZybGIoKHZlY3RvciBjaGFyKV9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19ybCh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19idWlsdGluX2FsdGl2ZWNfdnJsYigodmVjdG9yIGNoYXIpX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY19ybCh2ZWN0b3Igc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZybGgoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY19ybCh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19idWlsdGluX2FsdGl2ZWNfdnJsaCgodmVjdG9yIHNob3J0KV9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX3JsKHZlY3RvciBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnJsdyhfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19ybCh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBpbnQpX19idWlsdGluX2FsdGl2ZWNfdnJsdygodmVjdG9yIGludClfX2EsIF9fYik7Cn0KCiNpZmRlZiBfX1BPV0VSOF9WRUNUT1JfXwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX3JsKHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnJsZChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19ybCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnJsZChfX2EsIF9fYik7Cn0KI2VuZGlmCgojaWYgZGVmaW5lZChfX1BPV0VSMTBfVkVDVE9SX18pICYmIGRlZmluZWQoX19TSVpFT0ZfSU5UMTI4X18pCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgX19pbnQxMjggX19BVFRSU19vX2FpCnZlY19ybCh2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fYSwgdmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fYikgewogIHJldHVybiAoX19iIDw8IF9fYSl8KF9fYiA+PiAoKF9fQ0hBUl9CSVRfXyAqIHNpemVvZih2ZWN0b3Igc2lnbmVkIF9faW50MTI4KSkgLSBfX2EpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fQVRUUlNfb19haQp2ZWNfcmwodmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fYSwgdmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fYikgewogIHJldHVybiAoX19iIDw8IF9fYSl8KF9fYiA+PiAoKF9fQ0hBUl9CSVRfXyAqIHNpemVvZih2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjgpKSAtIF9fYSkpOwp9CiNlbmRpZgoKLyogdmVjX3JsbWkgKi8KI2lmZGVmIF9fUE9XRVI5X1ZFQ1RPUl9fCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19ybG1pKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYiwKICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGludCBfX2MpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnJsd21pKF9fYSwgX19jLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfcmxtaSh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IsCiAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19jKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZybGRtaShfX2EsIF9fYywgX19iKTsKfQojZW5kaWYKCiNpZiBkZWZpbmVkKF9fUE9XRVIxMF9WRUNUT1JfXykgJiYgZGVmaW5lZChfX1NJWkVPRl9JTlQxMjhfXykKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fQVRUUlNfb19haQp2ZWNfcmxtaSh2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19hLCB2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19iLAogICAgICAgICB2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19jKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZybHFtaShfX2EsIF9fYywgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBfX2ludDEyOCBfX0FUVFJTX29fYWkKdmVjX3JsbWkodmVjdG9yIHNpZ25lZCBfX2ludDEyOCBfX2EsIHZlY3RvciBzaWduZWQgX19pbnQxMjggX19iLAogICAgICAgICB2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192cmxxbWkoX19hLCBfX2MsIF9fYik7Cn0KI2VuZGlmCgovKiB2ZWNfcmxubSAqLwojaWZkZWYgX19QT1dFUjlfVkVDVE9SX18Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX3Jsbm0odmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iLAogICAgICAgICB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYykgewogIHZlY3RvciB1bnNpZ25lZCBpbnQgT25lQnl0ZSA9IHsgMHg4LCAweDgsIDB4OCwgMHg4IH07CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZybHdubShfX2EsICgoX19jIDw8IE9uZUJ5dGUpIHwgX19iKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19ybG5tKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYiwKICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2MpIHsKICB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIE9uZUJ5dGUgPSB7IDB4OCwgMHg4IH07CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZybGRubShfX2EsICgoX19jIDw8IE9uZUJ5dGUpIHwgX19iKSk7Cn0KI2VuZGlmCgojaWYgZGVmaW5lZChfX1BPV0VSMTBfVkVDVE9SX18pICYmIGRlZmluZWQoX19TSVpFT0ZfSU5UMTI4X18pCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCBfX0FUVFJTX29fYWkKdmVjX3Jsbm0odmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fYSwgdmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fYiwKICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fYykgewogIC8vIE1lcmdlIF9fYiBhbmQgX19jIHVzaW5nIGFuIGFwcHJvcHJpYXRlIHNodWZmbGUuCiAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVG1wQiA9ICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2I7CiAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVG1wQyA9ICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2M7CiAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgTWFza0FuZFNoaWZ0ID0KI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgICAgIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKFRtcEIsIFRtcEMsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgMTYsIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIC0xLCAtMSwgLTEsIC0xLCAtMSk7CiNlbHNlCiAgICAgIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKFRtcEIsIFRtcEMsIC0xLCAtMSwgLTEsIC0xLCAtMSwgMzEsIDMwLCAxNSwgLTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xKTsKI2VuZGlmCiAgIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192cmxxbm0oX19hLCAodmVjdG9yIHVuc2lnbmVkIF9faW50MTI4KSBNYXNrQW5kU2hpZnQpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fQVRUUlNfb19haQp2ZWNfcmxubSh2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fYSwgdmVjdG9yIHNpZ25lZCBfX2ludDEyOCBfX2IsCiAgICAgICAgIHZlY3RvciBzaWduZWQgX19pbnQxMjggX19jKSB7CiAgLy8gTWVyZ2UgX19iIGFuZCBfX2MgdXNpbmcgYW4gYXBwcm9wcmlhdGUgc2h1ZmZsZS4KICB2ZWN0b3IgdW5zaWduZWQgY2hhciBUbXBCID0gKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYjsKICB2ZWN0b3IgdW5zaWduZWQgY2hhciBUbXBDID0gKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYzsKICB2ZWN0b3IgdW5zaWduZWQgY2hhciBNYXNrQW5kU2hpZnQgPQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICAgICAgX19idWlsdGluX3NodWZmbGV2ZWN0b3IoVG1wQiwgVG1wQywgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAxNiwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgLTEsIC0xLCAtMSwgLTEsIC0xKTsKI2Vsc2UKICAgICAgX19idWlsdGluX3NodWZmbGV2ZWN0b3IoVG1wQiwgVG1wQywgLTEsIC0xLCAtMSwgLTEsIC0xLCAzMSwgMzAsIDE1LCAtMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEpOwojZW5kaWYKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnJscW5tKF9fYSwgKHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCkgTWFza0FuZFNoaWZ0KTsKfQojZW5kaWYKCi8qIHZlY192cmxiICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY192cmxiKHZlY3RvciBzaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIHNpZ25lZCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX3ZybGIoKHZlY3RvciBjaGFyKV9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY192cmxiKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2J1aWx0aW5fYWx0aXZlY192cmxiKCh2ZWN0b3IgY2hhcilfX2EsIF9fYik7Cn0KCi8qIHZlY192cmxoICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpCnZlY192cmxoKHZlY3RvciBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnJsaChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3ZybGgodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYnVpbHRpbl9hbHRpdmVjX3ZybGgoKHZlY3RvciBzaG9ydClfX2EsIF9fYik7Cn0KCi8qIHZlY192cmx3ICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgaW50IF9fQVRUUlNfb19haSB2ZWNfdnJsdyh2ZWN0b3IgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnJsdyhfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY192cmx3KHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGludClfX2J1aWx0aW5fYWx0aXZlY192cmx3KCh2ZWN0b3IgaW50KV9fYSwgX19iKTsKfQoKLyogdmVjX3JvdW5kICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpIHZlY19yb3VuZCh2ZWN0b3IgZmxvYXQgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZyZmluKF9fYSk7Cn0KCiNpZmRlZiBfX1ZTWF9fCiNpZmRlZiBfX1hMX0NPTVBBVF9BTFRJVkVDX18Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGRvdWJsZSBfX0FUVFJTX29fYWkgdmVjX3JpbnQodmVjdG9yIGRvdWJsZSBfX2EpOwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZG91YmxlIF9fQVRUUlNfb19haSB2ZWNfcm91bmQodmVjdG9yIGRvdWJsZSBfX2EpIHsKICBkb3VibGUgX19mcHNjciA9IF9fYnVpbHRpbl9yZWFkZmxtKCk7CiAgX19idWlsdGluX3NldHJuZCgwKTsKICB2ZWN0b3IgZG91YmxlIF9fcm91bmRlZCA9IHZlY19yaW50KF9fYSk7CiAgX19idWlsdGluX3NldGZsbShfX2Zwc2NyKTsKICByZXR1cm4gX19yb3VuZGVkOwp9CiNlbHNlCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBkb3VibGUgX19BVFRSU19vX2FpIHZlY19yb3VuZCh2ZWN0b3IgZG91YmxlIF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fdnN4X3h2cmRwaShfX2EpOwp9CiNlbmRpZgoKLyogdmVjX3JpbnQgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkgdmVjX3JpbnQodmVjdG9yIGZsb2F0IF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fdnN4X3h2cnNwaWMoX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGRvdWJsZSBfX0FUVFJTX29fYWkgdmVjX3JpbnQodmVjdG9yIGRvdWJsZSBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX3ZzeF94dnJkcGljKF9fYSk7Cn0KCi8qIHZlY19yb3VuZGMgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkgdmVjX3JvdW5kYyh2ZWN0b3IgZmxvYXQgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfeHZyc3BpYyhfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZG91YmxlIF9fQVRUUlNfb19haSB2ZWNfcm91bmRjKHZlY3RvciBkb3VibGUgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfeHZyZHBpYyhfX2EpOwp9CgovKiB2ZWNfbmVhcmJ5aW50ICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpIHZlY19uZWFyYnlpbnQodmVjdG9yIGZsb2F0IF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fdnN4X3h2cnNwaShfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZG91YmxlIF9fQVRUUlNfb19haSB2ZWNfbmVhcmJ5aW50KHZlY3RvciBkb3VibGUgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfeHZyZHBpKF9fYSk7Cn0KI2VuZGlmCgovKiB2ZWNfdnJmaW4gKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCnZlY192cmZpbih2ZWN0b3IgZmxvYXQgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZyZmluKF9fYSk7Cn0KCi8qIHZlY19zcXJ0ICovCgojaWZkZWYgX19WU1hfXwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpIHZlY19zcXJ0KHZlY3RvciBmbG9hdCBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX3ZzeF94dnNxcnRzcChfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZG91YmxlIF9fQVRUUlNfb19haSB2ZWNfc3FydCh2ZWN0b3IgZG91YmxlIF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fdnN4X3h2c3FydGRwKF9fYSk7Cn0KI2VuZGlmCgovKiB2ZWNfcnNxcnRlICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpIHZlY19yc3FydGUodmVjdG9yIGZsb2F0IF9fYSkgewojaWZkZWYgX19WU1hfXwogIHJldHVybiBfX2J1aWx0aW5fdnN4X3h2cnNxcnRlc3AoX19hKTsKI2Vsc2UKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnJzcXJ0ZWZwKF9fYSk7CiNlbmRpZgp9CgojaWZkZWYgX19WU1hfXwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZG91YmxlIF9fQVRUUlNfb19haSB2ZWNfcnNxcnRlKHZlY3RvciBkb3VibGUgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfeHZyc3FydGVkcChfX2EpOwp9CiNlbmRpZgoKc3RhdGljIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkgdmVjX3JzcXJ0KHZlY3RvciBmbG9hdCBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX3BwY19yc3FydGYoX19hKTsKfQoKI2lmZGVmIF9fVlNYX18Kc3RhdGljIHZlY3RvciBkb3VibGUgX19BVFRSU19vX2FpIHZlY19yc3FydCh2ZWN0b3IgZG91YmxlIF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fcHBjX3JzcXJ0ZChfX2EpOwp9CiNlbmRpZgoKLyogdmVjX3Zyc3FydGVmcCAqLwoKc3RhdGljIF9faW5saW5lX18gX192ZWN0b3IgZmxvYXQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQp2ZWNfdnJzcXJ0ZWZwKHZlY3RvciBmbG9hdCBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnJzcXJ0ZWZwKF9fYSk7Cn0KCi8qIHZlY194dnRzcXJ0ICovCgojaWZkZWYgX19WU1hfXwpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY190ZXN0X3N3c3FydCh2ZWN0b3IgZG91YmxlIF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fdnN4X3h2dHNxcnRkcChfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY190ZXN0X3N3c3FydHModmVjdG9yIGZsb2F0IF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fdnN4X3h2dHNxcnRzcChfX2EpOwp9CiNlbmRpZgoKLyogdmVjX3NlbCAqLwoKI2RlZmluZSBfX2J1aWx0aW5fYWx0aXZlY192c2VsXzRzaSB2ZWNfc2VsCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpIHZlY19zZWwoCiAgICB2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2MpIHsKICByZXR1cm4gKF9fYSAmIH4odmVjdG9yIHNpZ25lZCBjaGFyKV9fYykgfCAoX19iICYgKHZlY3RvciBzaWduZWQgY2hhcilfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19zZWwodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYiwgdmVjdG9yIGJvb2wgY2hhciBfX2MpIHsKICByZXR1cm4gKF9fYSAmIH4odmVjdG9yIHNpZ25lZCBjaGFyKV9fYykgfCAoX19iICYgKHZlY3RvciBzaWduZWQgY2hhcilfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3NlbCh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYiwKICAgICAgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2MpIHsKICByZXR1cm4gKF9fYSAmIH5fX2MpIHwgKF9fYiAmIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haSB2ZWNfc2VsKAogICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IsIHZlY3RvciBib29sIGNoYXIgX19jKSB7CiAgcmV0dXJuIChfX2EgJiB+KHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYykgfCAoX19iICYgKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGNoYXIgX19BVFRSU19vX2FpCnZlY19zZWwodmVjdG9yIGJvb2wgY2hhciBfX2EsIHZlY3RvciBib29sIGNoYXIgX19iLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2MpIHsKICByZXR1cm4gKF9fYSAmIH4odmVjdG9yIGJvb2wgY2hhcilfX2MpIHwgKF9fYiAmICh2ZWN0b3IgYm9vbCBjaGFyKV9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGNoYXIgX19BVFRSU19vX2FpIHZlY19zZWwodmVjdG9yIGJvb2wgY2hhciBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgY2hhciBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgY2hhciBfX2MpIHsKICByZXR1cm4gKF9fYSAmIH5fX2MpIHwgKF9fYiAmIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaG9ydCBfX0FUVFJTX29fYWkgdmVjX3NlbCh2ZWN0b3Igc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNob3J0IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2MpIHsKICByZXR1cm4gKF9fYSAmIH4odmVjdG9yIHNob3J0KV9fYykgfCAoX19iICYgKHZlY3RvciBzaG9ydClfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY19zZWwodmVjdG9yIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaG9ydCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBzaG9ydCBfX2MpIHsKICByZXR1cm4gKF9fYSAmIH4odmVjdG9yIHNob3J0KV9fYykgfCAoX19iICYgKHZlY3RvciBzaG9ydClfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY19zZWwodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYiwKICAgICAgICB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19jKSB7CiAgcmV0dXJuIChfX2EgJiB+X19jKSB8IChfX2IgJiBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY19zZWwodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYiwKICAgICAgICB2ZWN0b3IgYm9vbCBzaG9ydCBfX2MpIHsKICByZXR1cm4gKF9fYSAmIH4odmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYykgfAogICAgICAgICAoX19iICYgKHZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBzaG9ydCBfX0FUVFJTX29fYWkgdmVjX3NlbCgKICAgIHZlY3RvciBib29sIHNob3J0IF9fYSwgdmVjdG9yIGJvb2wgc2hvcnQgX19iLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19jKSB7CiAgcmV0dXJuIChfX2EgJiB+KHZlY3RvciBib29sIHNob3J0KV9fYykgfCAoX19iICYgKHZlY3RvciBib29sIHNob3J0KV9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfc2VsKHZlY3RvciBib29sIHNob3J0IF9fYSwgdmVjdG9yIGJvb2wgc2hvcnQgX19iLCB2ZWN0b3IgYm9vbCBzaG9ydCBfX2MpIHsKICByZXR1cm4gKF9fYSAmIH5fX2MpIHwgKF9fYiAmIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY19zZWwodmVjdG9yIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGludCBfX2MpIHsKICByZXR1cm4gKF9fYSAmIH4odmVjdG9yIGludClfX2MpIHwgKF9fYiAmICh2ZWN0b3IgaW50KV9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY19zZWwodmVjdG9yIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgaW50IF9fYykgewogIHJldHVybiAoX19hICYgfih2ZWN0b3IgaW50KV9fYykgfCAoX19iICYgKHZlY3RvciBpbnQpX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkgdmVjX3NlbCgKICAgIHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYiwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2MpIHsKICByZXR1cm4gKF9fYSAmIH5fX2MpIHwgKF9fYiAmIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19zZWwodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iLCB2ZWN0b3IgYm9vbCBpbnQgX19jKSB7CiAgcmV0dXJuIChfX2EgJiB+KHZlY3RvciB1bnNpZ25lZCBpbnQpX19jKSB8IChfX2IgJiAodmVjdG9yIHVuc2lnbmVkIGludClfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBpbnQgX19BVFRSU19vX2FpCnZlY19zZWwodmVjdG9yIGJvb2wgaW50IF9fYSwgdmVjdG9yIGJvb2wgaW50IF9fYiwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2MpIHsKICByZXR1cm4gKF9fYSAmIH4odmVjdG9yIGJvb2wgaW50KV9fYykgfCAoX19iICYgKHZlY3RvciBib29sIGludClfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBpbnQgX19BVFRSU19vX2FpIHZlY19zZWwodmVjdG9yIGJvb2wgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBpbnQgX19jKSB7CiAgcmV0dXJuIChfX2EgJiB+X19jKSB8IChfX2IgJiBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpIHZlY19zZWwodmVjdG9yIGZsb2F0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBmbG9hdCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYykgewogIHZlY3RvciBpbnQgX19yZXMgPSAoKHZlY3RvciBpbnQpX19hICYgfih2ZWN0b3IgaW50KV9fYykgfAogICAgICAgICAgICAgICAgICAgICAoKHZlY3RvciBpbnQpX19iICYgKHZlY3RvciBpbnQpX19jKTsKICByZXR1cm4gKHZlY3RvciBmbG9hdClfX3JlczsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGZsb2F0IF9fQVRUUlNfb19haSB2ZWNfc2VsKHZlY3RvciBmbG9hdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgZmxvYXQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgaW50IF9fYykgewogIHZlY3RvciBpbnQgX19yZXMgPSAoKHZlY3RvciBpbnQpX19hICYgfih2ZWN0b3IgaW50KV9fYykgfAogICAgICAgICAgICAgICAgICAgICAoKHZlY3RvciBpbnQpX19iICYgKHZlY3RvciBpbnQpX19jKTsKICByZXR1cm4gKHZlY3RvciBmbG9hdClfX3JlczsKfQoKI2lmZGVmIF9fVlNYX18Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGRvdWJsZSBfX0FUVFJTX29fYWkKdmVjX3NlbCh2ZWN0b3IgZG91YmxlIF9fYSwgdmVjdG9yIGRvdWJsZSBfX2IsIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2MpIHsKICB2ZWN0b3IgbG9uZyBsb25nIF9fcmVzID0gKCh2ZWN0b3IgbG9uZyBsb25nKV9fYSAmIH4odmVjdG9yIGxvbmcgbG9uZylfX2MpIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh2ZWN0b3IgbG9uZyBsb25nKV9fYiAmICh2ZWN0b3IgbG9uZyBsb25nKV9fYyk7CiAgcmV0dXJuICh2ZWN0b3IgZG91YmxlKV9fcmVzOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZG91YmxlIF9fQVRUUlNfb19haQp2ZWNfc2VsKHZlY3RvciBkb3VibGUgX19hLCB2ZWN0b3IgZG91YmxlIF9fYiwgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2MpIHsKICB2ZWN0b3IgbG9uZyBsb25nIF9fcmVzID0gKCh2ZWN0b3IgbG9uZyBsb25nKV9fYSAmIH4odmVjdG9yIGxvbmcgbG9uZylfX2MpIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh2ZWN0b3IgbG9uZyBsb25nKV9fYiAmICh2ZWN0b3IgbG9uZyBsb25nKV9fYyk7CiAgcmV0dXJuICh2ZWN0b3IgZG91YmxlKV9fcmVzOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19zZWwodmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYSwgdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYiwKICAgICAgICB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19jKSB7CiAgcmV0dXJuIChfX2EgJiB+X19jKSB8IChfX2IgJiBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19zZWwodmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYSwgdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYiwKICAgICAgICB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYykgewogIHJldHVybiAoX19hICYgfih2ZWN0b3IgYm9vbCBsb25nIGxvbmcpX19jKSB8CiAgICAgICAgIChfX2IgJiAodmVjdG9yIGJvb2wgbG9uZyBsb25nKV9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfc2VsKHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iLAogICAgICAgIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2MpIHsKICByZXR1cm4gKF9fYSAmIH4odmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19jKSB8CiAgICAgICAgIChfX2IgJiAodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19zZWwodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2IsCiAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2MpIHsKICByZXR1cm4gKF9fYSAmIH4odmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19jKSB8CiAgICAgICAgIChfX2IgJiAodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX3NlbCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IsCiAgICAgICAgdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYykgewogIHJldHVybiAoX19hICYgfih2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYykgfAogICAgICAgICAoX19iICYgKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX3NlbCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IsCiAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2MpIHsKICByZXR1cm4gKF9fYSAmIH5fX2MpIHwgKF9fYiAmIF9fYyk7Cn0KI2VuZGlmCgovKiB2ZWNfdnNlbCAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haSB2ZWNfdnNlbCgKICAgIHZlY3RvciBzaWduZWQgY2hhciBfX2EsIHZlY3RvciBzaWduZWQgY2hhciBfX2IsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYykgewogIHJldHVybiAoX19hICYgfih2ZWN0b3Igc2lnbmVkIGNoYXIpX19jKSB8IChfX2IgJiAodmVjdG9yIHNpZ25lZCBjaGFyKV9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3ZzZWwodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYiwgdmVjdG9yIGJvb2wgY2hhciBfX2MpIHsKICByZXR1cm4gKF9fYSAmIH4odmVjdG9yIHNpZ25lZCBjaGFyKV9fYykgfCAoX19iICYgKHZlY3RvciBzaWduZWQgY2hhcilfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3ZzZWwodmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IsCiAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYykgewogIHJldHVybiAoX19hICYgfl9fYykgfCAoX19iICYgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpIHZlY192c2VsKAogICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IsIHZlY3RvciBib29sIGNoYXIgX19jKSB7CiAgcmV0dXJuIChfX2EgJiB+KHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYykgfCAoX19iICYgKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGNoYXIgX19BVFRSU19vX2FpCnZlY192c2VsKHZlY3RvciBib29sIGNoYXIgX19hLCB2ZWN0b3IgYm9vbCBjaGFyIF9fYiwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19jKSB7CiAgcmV0dXJuIChfX2EgJiB+KHZlY3RvciBib29sIGNoYXIpX19jKSB8IChfX2IgJiAodmVjdG9yIGJvb2wgY2hhcilfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBjaGFyIF9fQVRUUlNfb19haSB2ZWNfdnNlbCh2ZWN0b3IgYm9vbCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgY2hhciBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGNoYXIgX19jKSB7CiAgcmV0dXJuIChfX2EgJiB+X19jKSB8IChfX2IgJiBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpCnZlY192c2VsKHZlY3RvciBzaG9ydCBfX2EsIHZlY3RvciBzaG9ydCBfX2IsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2MpIHsKICByZXR1cm4gKF9fYSAmIH4odmVjdG9yIHNob3J0KV9fYykgfCAoX19iICYgKHZlY3RvciBzaG9ydClfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY192c2VsKHZlY3RvciBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNob3J0IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBzaG9ydCBfX2MpIHsKICByZXR1cm4gKF9fYSAmIH4odmVjdG9yIHNob3J0KV9fYykgfCAoX19iICYgKHZlY3RvciBzaG9ydClfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY192c2VsKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IsCiAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2MpIHsKICByZXR1cm4gKF9fYSAmIH5fX2MpIHwgKF9fYiAmIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3ZzZWwodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYiwKICAgICAgICAgdmVjdG9yIGJvb2wgc2hvcnQgX19jKSB7CiAgcmV0dXJuIChfX2EgJiB+KHZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2MpIHwKICAgICAgICAgKF9fYiAmICh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgc2hvcnQgX19BVFRSU19vX2FpIHZlY192c2VsKAogICAgdmVjdG9yIGJvb2wgc2hvcnQgX19hLCB2ZWN0b3IgYm9vbCBzaG9ydCBfX2IsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2MpIHsKICByZXR1cm4gKF9fYSAmIH4odmVjdG9yIGJvb2wgc2hvcnQpX19jKSB8IChfX2IgJiAodmVjdG9yIGJvb2wgc2hvcnQpX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgc2hvcnQgX19BVFRSU19vX2FpCnZlY192c2VsKHZlY3RvciBib29sIHNob3J0IF9fYSwgdmVjdG9yIGJvb2wgc2hvcnQgX19iLCB2ZWN0b3IgYm9vbCBzaG9ydCBfX2MpIHsKICByZXR1cm4gKF9fYSAmIH5fX2MpIHwgKF9fYiAmIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY192c2VsKHZlY3RvciBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGludCBfX2MpIHsKICByZXR1cm4gKF9fYSAmIH4odmVjdG9yIGludClfX2MpIHwgKF9fYiAmICh2ZWN0b3IgaW50KV9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY192c2VsKHZlY3RvciBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgaW50IF9fYykgewogIHJldHVybiAoX19hICYgfih2ZWN0b3IgaW50KV9fYykgfCAoX19iICYgKHZlY3RvciBpbnQpX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkgdmVjX3ZzZWwoCiAgICB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19jKSB7CiAgcmV0dXJuIChfX2EgJiB+X19jKSB8IChfX2IgJiBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haSB2ZWNfdnNlbCgKICAgIHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYiwgdmVjdG9yIGJvb2wgaW50IF9fYykgewogIHJldHVybiAoX19hICYgfih2ZWN0b3IgdW5zaWduZWQgaW50KV9fYykgfCAoX19iICYgKHZlY3RvciB1bnNpZ25lZCBpbnQpX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgaW50IF9fQVRUUlNfb19haQp2ZWNfdnNlbCh2ZWN0b3IgYm9vbCBpbnQgX19hLCB2ZWN0b3IgYm9vbCBpbnQgX19iLCB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYykgewogIHJldHVybiAoX19hICYgfih2ZWN0b3IgYm9vbCBpbnQpX19jKSB8IChfX2IgJiAodmVjdG9yIGJvb2wgaW50KV9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGludCBfX0FUVFJTX29fYWkgdmVjX3ZzZWwodmVjdG9yIGJvb2wgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGludCBfX2MpIHsKICByZXR1cm4gKF9fYSAmIH5fX2MpIHwgKF9fYiAmIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkgdmVjX3ZzZWwodmVjdG9yIGZsb2F0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgZmxvYXQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBpbnQgX19jKSB7CiAgdmVjdG9yIGludCBfX3JlcyA9ICgodmVjdG9yIGludClfX2EgJiB+KHZlY3RvciBpbnQpX19jKSB8CiAgICAgICAgICAgICAgICAgICAgICgodmVjdG9yIGludClfX2IgJiAodmVjdG9yIGludClfX2MpOwogIHJldHVybiAodmVjdG9yIGZsb2F0KV9fcmVzOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpIHZlY192c2VsKHZlY3RvciBmbG9hdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGZsb2F0IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBpbnQgX19jKSB7CiAgdmVjdG9yIGludCBfX3JlcyA9ICgodmVjdG9yIGludClfX2EgJiB+KHZlY3RvciBpbnQpX19jKSB8CiAgICAgICAgICAgICAgICAgICAgICgodmVjdG9yIGludClfX2IgJiAodmVjdG9yIGludClfX2MpOwogIHJldHVybiAodmVjdG9yIGZsb2F0KV9fcmVzOwp9CgovKiB2ZWNfc2wgKi8KCi8vIHZlY19zbCBkb2VzIG1vZHVsbyBhcml0aG1ldGljIG9uIF9fYiBmaXJzdCwgc28gX19iIGlzIGFsbG93ZWQgdG8gYmUgbW9yZQovLyB0aGFuIHRoZSBsZW5ndGggb2YgX19hLgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3NsKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYSA8PCAoX19iICUKICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKHNpemVvZih1bnNpZ25lZCBjaGFyKSAqIF9fQ0hBUl9CSVRfXykpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19zbCh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBzaWduZWQgY2hhcil2ZWNfc2woKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfc2wodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiBfX2EgPDwgKF9fYiAlICh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpKHNpemVvZih1bnNpZ25lZCBzaG9ydCkgKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fQ0hBUl9CSVRfXykpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY19zbCh2ZWN0b3Igc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3Igc2hvcnQpdmVjX3NsKCh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfc2wodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYSA8PCAoX19iICUKICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIGludCkoc2l6ZW9mKHVuc2lnbmVkIGludCkgKiBfX0NIQVJfQklUX18pKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX3NsKHZlY3RvciBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBpbnQpdmVjX3NsKCh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYSwgX19iKTsKfQoKI2lmZGVmIF9fUE9XRVI4X1ZFQ1RPUl9fCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19zbCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19hIDw8IChfX2IgJSAodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZykoc2l6ZW9mKHVuc2lnbmVkIGxvbmcgbG9uZykgKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0NIQVJfQklUX18pKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX3NsKHZlY3RvciBsb25nIGxvbmcgX19hLCB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiAodmVjdG9yIGxvbmcgbG9uZyl2ZWNfc2woKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19hLCBfX2IpOwp9CiNlbGlmIGRlZmluZWQoX19WU1hfXykKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY192c3BsdGIodmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCB1bnNpZ25lZCBjaGFyIF9fYik7CnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19zbCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICBfX2IgJT0gKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpKHNpemVvZih1bnNpZ25lZCBsb25nIGxvbmcpICogX19DSEFSX0JJVF9fKTsKCiAgLy8gQmlnIGVuZGlhbiBlbGVtZW50IG9uZSAodGhlIHJpZ2h0IGRvdWJsZXdvcmQpIGNhbiBiZSBsZWZ0IHNoaWZ0ZWQgYXMtaXMuCiAgLy8gVGhlIG90aGVyIGVsZW1lbnQgbmVlZHMgdG8gYmUgc3dhcHBlZCBpbnRvIHRoZSByaWdodCBkb3VibGV3b3JkIGFuZAogIC8vIHNoaWZ0ZWQuIFRoZW4gdGhlIHJpZ2h0IGRvdWJsZXdvcmRzIG9mIHRoZSB0d28gcmVzdWx0IHZlY3RvcnMgYXJlIG1lcmdlZC4KICB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX3JpZ2h0ZWx0ID0KICAgICAgKHZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYnVpbHRpbl9hbHRpdmVjX3ZzbG8oKHZlY3RvciBzaWduZWQgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBzaWduZWQgaW50KV9fYik7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIF9fcmlnaHRlbHQgPSAodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19idWlsdGluX2FsdGl2ZWNfdnNsKAogICAgICAodmVjdG9yIHNpZ25lZCBpbnQpX19yaWdodGVsdCwKICAgICAgKHZlY3RvciBzaWduZWQgaW50KXZlY192c3BsdGIoKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYiwgMCkpOwojZWxzZQogIF9fcmlnaHRlbHQgPSAodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19idWlsdGluX2FsdGl2ZWNfdnNsKAogICAgICAodmVjdG9yIHNpZ25lZCBpbnQpX19yaWdodGVsdCwKICAgICAgKHZlY3RvciBzaWduZWQgaW50KXZlY192c3BsdGIoKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYiwgMTUpKTsKI2VuZGlmCiAgX19hID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19hLCBfX2EsIDEsIDApOwogIF9fYiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fYiwgX19iLCAxLCAwKTsKICB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2xlZnRlbHQgPQogICAgICAodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19idWlsdGluX2FsdGl2ZWNfdnNsbygodmVjdG9yIHNpZ25lZCBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHNpZ25lZCBpbnQpX19iKTsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgX19sZWZ0ZWx0ID0gKHZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYnVpbHRpbl9hbHRpdmVjX3ZzbCgKICAgICAgKHZlY3RvciBzaWduZWQgaW50KV9fbGVmdGVsdCwKICAgICAgKHZlY3RvciBzaWduZWQgaW50KXZlY192c3BsdGIoKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYiwgMCkpOwogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JpZ2h0ZWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2xlZnRlbHQsIDAsIDIpOwojZWxzZQogIF9fbGVmdGVsdCA9ICh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2J1aWx0aW5fYWx0aXZlY192c2woCiAgICAgICh2ZWN0b3Igc2lnbmVkIGludClfX2xlZnRlbHQsCiAgICAgICh2ZWN0b3Igc2lnbmVkIGludCl2ZWNfdnNwbHRiKCh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IsIDE1KSk7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fbGVmdGVsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19yaWdodGVsdCwgMSwgMyk7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfc2wodmVjdG9yIGxvbmcgbG9uZyBfX2EsIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgbG9uZyBsb25nKXZlY19zbCgodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2EsIF9fYik7Cn0KI2VuZGlmIC8qIF9fVlNYX18gKi8KCi8qIHZlY192c2xiICovCgojZGVmaW5lIF9fYnVpbHRpbl9hbHRpdmVjX3ZzbGIgdmVjX3ZzbGIKCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3ZzbGIodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIHZlY19zbChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfdnNsYih2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiB2ZWNfc2woX19hLCBfX2IpOwp9CgovKiB2ZWNfdnNsaCAqLwoKI2RlZmluZSBfX2J1aWx0aW5fYWx0aXZlY192c2xoIHZlY192c2xoCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpCnZlY192c2xoKHZlY3RvciBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gdmVjX3NsKF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfdnNsaCh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIHZlY19zbChfX2EsIF9fYik7Cn0KCi8qIHZlY192c2x3ICovCgojZGVmaW5lIF9fYnVpbHRpbl9hbHRpdmVjX3ZzbHcgdmVjX3ZzbHcKCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY192c2x3KHZlY3RvciBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiB2ZWNfc2woX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfdnNsdyh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gdmVjX3NsKF9fYSwgX19iKTsKfQoKLyogdmVjX3NsZCAqLwoKI2RlZmluZSBfX2J1aWx0aW5fYWx0aXZlY192c2xkb2lfNHNpIHZlY19zbGQKCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkgdmVjX3NsZCgKICAgIHZlY3RvciBzaWduZWQgY2hhciBfX2EsIHZlY3RvciBzaWduZWQgY2hhciBfX2IsIHVuc2lnbmVkIGNvbnN0IGludCBfX2MpIHsKICB1bnNpZ25lZCBjaGFyIF9fZCA9IF9fYyAmIDB4MEY7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiB2ZWNfcGVybSgKICAgICAgX19iLCBfX2EsICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMTYgLSBfX2QsIDE3IC0gX19kLCAxOCAtIF9fZCwgMTkgLSBfX2QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwIC0gX19kLCAyMSAtIF9fZCwgMjIgLSBfX2QsIDIzIC0gX19kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNCAtIF9fZCwgMjUgLSBfX2QsIDI2IC0gX19kLCAyNyAtIF9fZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjggLSBfX2QsIDI5IC0gX19kLCAzMCAtIF9fZCwgMzEgLSBfX2QpKTsKI2Vsc2UKICByZXR1cm4gdmVjX3Blcm0oCiAgICAgIF9fYSwgX19iLAogICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKF9fZCwgX19kICsgMSwgX19kICsgMiwgX19kICsgMywgX19kICsgNCwgX19kICsgNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2QgKyA2LCBfX2QgKyA3LCBfX2QgKyA4LCBfX2QgKyA5LCBfX2QgKyAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2QgKyAxMSwgX19kICsgMTIsIF9fZCArIDEzLCBfX2QgKyAxNCwgX19kICsgMTUpKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfc2xkKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iLAogICAgICAgIHVuc2lnbmVkIGNvbnN0IGludCBfX2MpIHsKICB1bnNpZ25lZCBjaGFyIF9fZCA9IF9fYyAmIDB4MEY7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiB2ZWNfcGVybSgKICAgICAgX19iLCBfX2EsICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMTYgLSBfX2QsIDE3IC0gX19kLCAxOCAtIF9fZCwgMTkgLSBfX2QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwIC0gX19kLCAyMSAtIF9fZCwgMjIgLSBfX2QsIDIzIC0gX19kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNCAtIF9fZCwgMjUgLSBfX2QsIDI2IC0gX19kLCAyNyAtIF9fZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjggLSBfX2QsIDI5IC0gX19kLCAzMCAtIF9fZCwgMzEgLSBfX2QpKTsKI2Vsc2UKICByZXR1cm4gdmVjX3Blcm0oCiAgICAgIF9fYSwgX19iLAogICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKF9fZCwgX19kICsgMSwgX19kICsgMiwgX19kICsgMywgX19kICsgNCwgX19kICsgNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2QgKyA2LCBfX2QgKyA3LCBfX2QgKyA4LCBfX2QgKyA5LCBfX2QgKyAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2QgKyAxMSwgX19kICsgMTIsIF9fZCArIDEzLCBfX2QgKyAxNCwgX19kICsgMTUpKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGNoYXIgX19BVFRSU19vX2FpCnZlY19zbGQodmVjdG9yIGJvb2wgY2hhciBfX2EsIHZlY3RvciBib29sIGNoYXIgX19iLCB1bnNpZ25lZCBjb25zdCBpbnQgX19jKSB7CiAgdW5zaWduZWQgY2hhciBfX2QgPSBfX2MgJiAweDBGOwojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gdmVjX3Blcm0oCiAgICAgIF9fYiwgX19hLCAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKDE2IC0gX19kLCAxNyAtIF9fZCwgMTggLSBfX2QsIDE5IC0gX19kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMCAtIF9fZCwgMjEgLSBfX2QsIDIyIC0gX19kLCAyMyAtIF9fZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjQgLSBfX2QsIDI1IC0gX19kLCAyNiAtIF9fZCwgMjcgLSBfX2QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI4IC0gX19kLCAyOSAtIF9fZCwgMzAgLSBfX2QsIDMxIC0gX19kKSk7CiNlbHNlCiAgcmV0dXJuIHZlY19wZXJtKAogICAgICBfX2EsIF9fYiwKICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKShfX2QsIF9fZCArIDEsIF9fZCArIDIsIF9fZCArIDMsIF9fZCArIDQsIF9fZCArIDUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19kICsgNiwgX19kICsgNywgX19kICsgOCwgX19kICsgOSwgX19kICsgMTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19kICsgMTEsIF9fZCArIDEyLCBfX2QgKyAxMywgX19kICsgMTQsIF9fZCArIDE1KSk7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfc2xkKAogICAgdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciBzaWduZWQgc2hvcnQgX19iLCB1bnNpZ25lZCBjb25zdCBpbnQgX19jKSB7CiAgdW5zaWduZWQgY2hhciBfX2QgPSBfX2MgJiAweDBGOwojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gdmVjX3Blcm0oCiAgICAgIF9fYiwgX19hLCAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKDE2IC0gX19kLCAxNyAtIF9fZCwgMTggLSBfX2QsIDE5IC0gX19kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMCAtIF9fZCwgMjEgLSBfX2QsIDIyIC0gX19kLCAyMyAtIF9fZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjQgLSBfX2QsIDI1IC0gX19kLCAyNiAtIF9fZCwgMjcgLSBfX2QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI4IC0gX19kLCAyOSAtIF9fZCwgMzAgLSBfX2QsIDMxIC0gX19kKSk7CiNlbHNlCiAgcmV0dXJuIHZlY19wZXJtKAogICAgICBfX2EsIF9fYiwKICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKShfX2QsIF9fZCArIDEsIF9fZCArIDIsIF9fZCArIDMsIF9fZCArIDQsIF9fZCArIDUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19kICsgNiwgX19kICsgNywgX19kICsgOCwgX19kICsgOSwgX19kICsgMTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19kICsgMTEsIF9fZCArIDEyLCBfX2QgKyAxMywgX19kICsgMTQsIF9fZCArIDE1KSk7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY19zbGQodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYiwKICAgICAgICB1bnNpZ25lZCBjb25zdCBpbnQgX19jKSB7CiAgdW5zaWduZWQgY2hhciBfX2QgPSBfX2MgJiAweDBGOwojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gdmVjX3Blcm0oCiAgICAgIF9fYiwgX19hLCAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKDE2IC0gX19kLCAxNyAtIF9fZCwgMTggLSBfX2QsIDE5IC0gX19kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMCAtIF9fZCwgMjEgLSBfX2QsIDIyIC0gX19kLCAyMyAtIF9fZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjQgLSBfX2QsIDI1IC0gX19kLCAyNiAtIF9fZCwgMjcgLSBfX2QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI4IC0gX19kLCAyOSAtIF9fZCwgMzAgLSBfX2QsIDMxIC0gX19kKSk7CiNlbHNlCiAgcmV0dXJuIHZlY19wZXJtKAogICAgICBfX2EsIF9fYiwKICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKShfX2QsIF9fZCArIDEsIF9fZCArIDIsIF9fZCArIDMsIF9fZCArIDQsIF9fZCArIDUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19kICsgNiwgX19kICsgNywgX19kICsgOCwgX19kICsgOSwgX19kICsgMTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19kICsgMTEsIF9fZCArIDEyLCBfX2QgKyAxMywgX19kICsgMTQsIF9fZCArIDE1KSk7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3NsZCh2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsIHZlY3RvciBib29sIHNob3J0IF9fYiwgdW5zaWduZWQgY29uc3QgaW50IF9fYykgewogIHVuc2lnbmVkIGNoYXIgX19kID0gX19jICYgMHgwRjsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIHZlY19wZXJtKAogICAgICBfX2IsIF9fYSwgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgxNiAtIF9fZCwgMTcgLSBfX2QsIDE4IC0gX19kLCAxOSAtIF9fZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAgLSBfX2QsIDIxIC0gX19kLCAyMiAtIF9fZCwgMjMgLSBfX2QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0IC0gX19kLCAyNSAtIF9fZCwgMjYgLSBfX2QsIDI3IC0gX19kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyOCAtIF9fZCwgMjkgLSBfX2QsIDMwIC0gX19kLCAzMSAtIF9fZCkpOwojZWxzZQogIHJldHVybiB2ZWNfcGVybSgKICAgICAgX19hLCBfX2IsCiAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoX19kLCBfX2QgKyAxLCBfX2QgKyAyLCBfX2QgKyAzLCBfX2QgKyA0LCBfX2QgKyA1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZCArIDYsIF9fZCArIDcsIF9fZCArIDgsIF9fZCArIDksIF9fZCArIDEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZCArIDExLCBfX2QgKyAxMiwgX19kICsgMTMsIF9fZCArIDE0LCBfX2QgKyAxNSkpOwojZW5kaWYKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHBpeGVsIF9fQVRUUlNfb19haSB2ZWNfc2xkKHZlY3RvciBwaXhlbCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgcGl4ZWwgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY29uc3QgaW50IF9fYykgewogIHVuc2lnbmVkIGNoYXIgX19kID0gX19jICYgMHgwRjsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIHZlY19wZXJtKAogICAgICBfX2IsIF9fYSwgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgxNiAtIF9fZCwgMTcgLSBfX2QsIDE4IC0gX19kLCAxOSAtIF9fZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAgLSBfX2QsIDIxIC0gX19kLCAyMiAtIF9fZCwgMjMgLSBfX2QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0IC0gX19kLCAyNSAtIF9fZCwgMjYgLSBfX2QsIDI3IC0gX19kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyOCAtIF9fZCwgMjkgLSBfX2QsIDMwIC0gX19kLCAzMSAtIF9fZCkpOwojZWxzZQogIHJldHVybiB2ZWNfcGVybSgKICAgICAgX19hLCBfX2IsCiAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoX19kLCBfX2QgKyAxLCBfX2QgKyAyLCBfX2QgKyAzLCBfX2QgKyA0LCBfX2QgKyA1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZCArIDYsIF9fZCArIDcsIF9fZCArIDgsIF9fZCArIDksIF9fZCArIDEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZCArIDExLCBfX2QgKyAxMiwgX19kICsgMTMsIF9fZCArIDE0LCBfX2QgKyAxNSkpOwojZW5kaWYKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19zbGQodmVjdG9yIHNpZ25lZCBpbnQgX19hLCB2ZWN0b3Igc2lnbmVkIGludCBfX2IsIHVuc2lnbmVkIGNvbnN0IGludCBfX2MpIHsKICB1bnNpZ25lZCBjaGFyIF9fZCA9IF9fYyAmIDB4MEY7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiB2ZWNfcGVybSgKICAgICAgX19iLCBfX2EsICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMTYgLSBfX2QsIDE3IC0gX19kLCAxOCAtIF9fZCwgMTkgLSBfX2QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwIC0gX19kLCAyMSAtIF9fZCwgMjIgLSBfX2QsIDIzIC0gX19kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNCAtIF9fZCwgMjUgLSBfX2QsIDI2IC0gX19kLCAyNyAtIF9fZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjggLSBfX2QsIDI5IC0gX19kLCAzMCAtIF9fZCwgMzEgLSBfX2QpKTsKI2Vsc2UKICByZXR1cm4gdmVjX3Blcm0oCiAgICAgIF9fYSwgX19iLAogICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKF9fZCwgX19kICsgMSwgX19kICsgMiwgX19kICsgMywgX19kICsgNCwgX19kICsgNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2QgKyA2LCBfX2QgKyA3LCBfX2QgKyA4LCBfX2QgKyA5LCBfX2QgKyAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2QgKyAxMSwgX19kICsgMTIsIF9fZCArIDEzLCBfX2QgKyAxNCwgX19kICsgMTUpKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpIHZlY19zbGQoCiAgICB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IsIHVuc2lnbmVkIGNvbnN0IGludCBfX2MpIHsKICB1bnNpZ25lZCBjaGFyIF9fZCA9IF9fYyAmIDB4MEY7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiB2ZWNfcGVybSgKICAgICAgX19iLCBfX2EsICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMTYgLSBfX2QsIDE3IC0gX19kLCAxOCAtIF9fZCwgMTkgLSBfX2QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwIC0gX19kLCAyMSAtIF9fZCwgMjIgLSBfX2QsIDIzIC0gX19kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNCAtIF9fZCwgMjUgLSBfX2QsIDI2IC0gX19kLCAyNyAtIF9fZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjggLSBfX2QsIDI5IC0gX19kLCAzMCAtIF9fZCwgMzEgLSBfX2QpKTsKI2Vsc2UKICByZXR1cm4gdmVjX3Blcm0oCiAgICAgIF9fYSwgX19iLAogICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKF9fZCwgX19kICsgMSwgX19kICsgMiwgX19kICsgMywgX19kICsgNCwgX19kICsgNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2QgKyA2LCBfX2QgKyA3LCBfX2QgKyA4LCBfX2QgKyA5LCBfX2QgKyAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2QgKyAxMSwgX19kICsgMTIsIF9fZCArIDEzLCBfX2QgKyAxNCwgX19kICsgMTUpKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGludCBfX0FUVFJTX29fYWkgdmVjX3NsZCh2ZWN0b3IgYm9vbCBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNvbnN0IGludCBfX2MpIHsKICB1bnNpZ25lZCBjaGFyIF9fZCA9IF9fYyAmIDB4MEY7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiB2ZWNfcGVybSgKICAgICAgX19iLCBfX2EsICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMTYgLSBfX2QsIDE3IC0gX19kLCAxOCAtIF9fZCwgMTkgLSBfX2QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwIC0gX19kLCAyMSAtIF9fZCwgMjIgLSBfX2QsIDIzIC0gX19kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNCAtIF9fZCwgMjUgLSBfX2QsIDI2IC0gX19kLCAyNyAtIF9fZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjggLSBfX2QsIDI5IC0gX19kLCAzMCAtIF9fZCwgMzEgLSBfX2QpKTsKI2Vsc2UKICByZXR1cm4gdmVjX3Blcm0oCiAgICAgIF9fYSwgX19iLAogICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKF9fZCwgX19kICsgMSwgX19kICsgMiwgX19kICsgMywgX19kICsgNCwgX19kICsgNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2QgKyA2LCBfX2QgKyA3LCBfX2QgKyA4LCBfX2QgKyA5LCBfX2QgKyAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2QgKyAxMSwgX19kICsgMTIsIF9fZCArIDEzLCBfX2QgKyAxNCwgX19kICsgMTUpKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkgdmVjX3NsZCh2ZWN0b3IgZmxvYXQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGZsb2F0IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNvbnN0IGludCBfX2MpIHsKICB1bnNpZ25lZCBjaGFyIF9fZCA9IF9fYyAmIDB4MEY7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiB2ZWNfcGVybSgKICAgICAgX19iLCBfX2EsICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMTYgLSBfX2QsIDE3IC0gX19kLCAxOCAtIF9fZCwgMTkgLSBfX2QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwIC0gX19kLCAyMSAtIF9fZCwgMjIgLSBfX2QsIDIzIC0gX19kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNCAtIF9fZCwgMjUgLSBfX2QsIDI2IC0gX19kLCAyNyAtIF9fZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjggLSBfX2QsIDI5IC0gX19kLCAzMCAtIF9fZCwgMzEgLSBfX2QpKTsKI2Vsc2UKICByZXR1cm4gdmVjX3Blcm0oCiAgICAgIF9fYSwgX19iLAogICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKF9fZCwgX19kICsgMSwgX19kICsgMiwgX19kICsgMywgX19kICsgNCwgX19kICsgNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2QgKyA2LCBfX2QgKyA3LCBfX2QgKyA4LCBfX2QgKyA5LCBfX2QgKyAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2QgKyAxMSwgX19kICsgMTIsIF9fZCArIDEzLCBfX2QgKyAxNCwgX19kICsgMTUpKTsKI2VuZGlmCn0KCiNpZmRlZiBfX1ZTWF9fCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX3NsZCh2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19iLAogICAgICAgIHVuc2lnbmVkIGNvbnN0IGludCBfX2MpIHsKICB1bnNpZ25lZCBjaGFyIF9fZCA9IF9fYyAmIDB4MEY7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiB2ZWNfcGVybSgKICAgICAgX19iLCBfX2EsICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMTYgLSBfX2QsIDE3IC0gX19kLCAxOCAtIF9fZCwgMTkgLSBfX2QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwIC0gX19kLCAyMSAtIF9fZCwgMjIgLSBfX2QsIDIzIC0gX19kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNCAtIF9fZCwgMjUgLSBfX2QsIDI2IC0gX19kLCAyNyAtIF9fZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjggLSBfX2QsIDI5IC0gX19kLCAzMCAtIF9fZCwgMzEgLSBfX2QpKTsKI2Vsc2UKICByZXR1cm4gdmVjX3Blcm0oCiAgICAgIF9fYSwgX19iLAogICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKF9fZCwgX19kICsgMSwgX19kICsgMiwgX19kICsgMywgX19kICsgNCwgX19kICsgNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2QgKyA2LCBfX2QgKyA3LCBfX2QgKyA4LCBfX2QgKyA5LCBfX2QgKyAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2QgKyAxMSwgX19kICsgMTIsIF9fZCArIDEzLCBfX2QgKyAxNCwgX19kICsgMTUpKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfc2xkKHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iLAogICAgICAgIHVuc2lnbmVkIGNvbnN0IGludCBfX2MpIHsKICB1bnNpZ25lZCBjaGFyIF9fZCA9IF9fYyAmIDB4MEY7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiB2ZWNfcGVybSgKICAgICAgX19iLCBfX2EsICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMTYgLSBfX2QsIDE3IC0gX19kLCAxOCAtIF9fZCwgMTkgLSBfX2QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwIC0gX19kLCAyMSAtIF9fZCwgMjIgLSBfX2QsIDIzIC0gX19kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNCAtIF9fZCwgMjUgLSBfX2QsIDI2IC0gX19kLCAyNyAtIF9fZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjggLSBfX2QsIDI5IC0gX19kLCAzMCAtIF9fZCwgMzEgLSBfX2QpKTsKI2Vsc2UKICByZXR1cm4gdmVjX3Blcm0oCiAgICAgIF9fYSwgX19iLAogICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKF9fZCwgX19kICsgMSwgX19kICsgMiwgX19kICsgMywgX19kICsgNCwgX19kICsgNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2QgKyA2LCBfX2QgKyA3LCBfX2QgKyA4LCBfX2QgKyA5LCBfX2QgKyAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2QgKyAxMSwgX19kICsgMTIsIF9fZCArIDEzLCBfX2QgKyAxNCwgX19kICsgMTUpKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19zbGQodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iLAogICAgICAgIHVuc2lnbmVkIGNvbnN0IGludCBfX2MpIHsKICB1bnNpZ25lZCBjaGFyIF9fZCA9IF9fYyAmIDB4MEY7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiB2ZWNfcGVybSgKICAgICAgX19iLCBfX2EsICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMTYgLSBfX2QsIDE3IC0gX19kLCAxOCAtIF9fZCwgMTkgLSBfX2QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwIC0gX19kLCAyMSAtIF9fZCwgMjIgLSBfX2QsIDIzIC0gX19kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNCAtIF9fZCwgMjUgLSBfX2QsIDI2IC0gX19kLCAyNyAtIF9fZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjggLSBfX2QsIDI5IC0gX19kLCAzMCAtIF9fZCwgMzEgLSBfX2QpKTsKI2Vsc2UKICByZXR1cm4gdmVjX3Blcm0oCiAgICAgIF9fYSwgX19iLAogICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKF9fZCwgX19kICsgMSwgX19kICsgMiwgX19kICsgMywgX19kICsgNCwgX19kICsgNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2QgKyA2LCBfX2QgKyA3LCBfX2QgKyA4LCBfX2QgKyA5LCBfX2QgKyAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2QgKyAxMSwgX19kICsgMTIsIF9fZCArIDEzLCBfX2QgKyAxNCwgX19kICsgMTUpKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBkb3VibGUgX19BVFRSU19vX2FpIHZlY19zbGQodmVjdG9yIGRvdWJsZSBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGRvdWJsZSBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY29uc3QgaW50IF9fYykgewogIHVuc2lnbmVkIGNoYXIgX19kID0gX19jICYgMHgwRjsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIHZlY19wZXJtKAogICAgICBfX2IsIF9fYSwgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgxNiAtIF9fZCwgMTcgLSBfX2QsIDE4IC0gX19kLCAxOSAtIF9fZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAgLSBfX2QsIDIxIC0gX19kLCAyMiAtIF9fZCwgMjMgLSBfX2QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0IC0gX19kLCAyNSAtIF9fZCwgMjYgLSBfX2QsIDI3IC0gX19kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyOCAtIF9fZCwgMjkgLSBfX2QsIDMwIC0gX19kLCAzMSAtIF9fZCkpOwojZWxzZQogIHJldHVybiB2ZWNfcGVybSgKICAgICAgX19hLCBfX2IsCiAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoX19kLCBfX2QgKyAxLCBfX2QgKyAyLCBfX2QgKyAzLCBfX2QgKyA0LCBfX2QgKyA1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZCArIDYsIF9fZCArIDcsIF9fZCArIDgsIF9fZCArIDksIF9fZCArIDEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZCArIDExLCBfX2QgKyAxMiwgX19kICsgMTMsIF9fZCArIDE0LCBfX2QgKyAxNSkpOwojZW5kaWYKfQojZW5kaWYKCi8qIHZlY19zbGR3ICovCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkgdmVjX3NsZHcoCiAgICB2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iLCB1bnNpZ25lZCBjb25zdCBpbnQgX19jKSB7CiAgcmV0dXJuIHZlY19zbGQoX19hLCBfX2IsICgoX19jIDw8IDIpICYgMHgwRikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3NsZHcodmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IsCiAgICAgICAgIHVuc2lnbmVkIGNvbnN0IGludCBfX2MpIHsKICByZXR1cm4gdmVjX3NsZChfX2EsIF9fYiwgKChfX2MgPDwgMikgJiAweDBGKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgc2hvcnQgX19BVFRSU19vX2FpIHZlY19zbGR3KAogICAgdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciBzaWduZWQgc2hvcnQgX19iLCB1bnNpZ25lZCBjb25zdCBpbnQgX19jKSB7CiAgcmV0dXJuIHZlY19zbGQoX19hLCBfX2IsICgoX19jIDw8IDIpICYgMHgwRikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY19zbGR3KHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IsCiAgICAgICAgIHVuc2lnbmVkIGNvbnN0IGludCBfX2MpIHsKICByZXR1cm4gdmVjX3NsZChfX2EsIF9fYiwgKChfX2MgPDwgMikgJiAweDBGKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfc2xkdyh2ZWN0b3Igc2lnbmVkIGludCBfX2EsIHZlY3RvciBzaWduZWQgaW50IF9fYiwgdW5zaWduZWQgY29uc3QgaW50IF9fYykgewogIHJldHVybiB2ZWNfc2xkKF9fYSwgX19iLCAoKF9fYyA8PCAyKSAmIDB4MEYpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkgdmVjX3NsZHcoCiAgICB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IsIHVuc2lnbmVkIGNvbnN0IGludCBfX2MpIHsKICByZXR1cm4gdmVjX3NsZChfX2EsIF9fYiwgKChfX2MgPDwgMikgJiAweDBGKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkgdmVjX3NsZHcoCiAgICB2ZWN0b3IgZmxvYXQgX19hLCB2ZWN0b3IgZmxvYXQgX19iLCB1bnNpZ25lZCBjb25zdCBpbnQgX19jKSB7CiAgcmV0dXJuIHZlY19zbGQoX19hLCBfX2IsICgoX19jIDw8IDIpICYgMHgwRikpOwp9CgojaWZkZWYgX19WU1hfXwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX3NsZHcodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2IsCiAgICAgICAgIHVuc2lnbmVkIGNvbnN0IGludCBfX2MpIHsKICByZXR1cm4gdmVjX3NsZChfX2EsIF9fYiwgKChfX2MgPDwgMikgJiAweDBGKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19zbGR3KHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYiwKICAgICAgICAgdW5zaWduZWQgY29uc3QgaW50IF9fYykgewogIHJldHVybiB2ZWNfc2xkKF9fYSwgX19iLCAoKF9fYyA8PCAyKSAmIDB4MEYpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGRvdWJsZSBfX0FUVFJTX29fYWkgdmVjX3NsZHcoCiAgICB2ZWN0b3IgZG91YmxlIF9fYSwgdmVjdG9yIGRvdWJsZSBfX2IsIHVuc2lnbmVkIGNvbnN0IGludCBfX2MpIHsKICByZXR1cm4gdmVjX3NsZChfX2EsIF9fYiwgKChfX2MgPDwgMikgJiAweDBGKSk7Cn0KI2VuZGlmCgojaWZkZWYgX19QT1dFUjlfVkVDVE9SX18KLyogdmVjX3NsdiAqLwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3Nsdih2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192c2x2KF9fYSwgX19iKTsKfQoKLyogdmVjX3NydiAqLwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3Nydih2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192c3J2KF9fYSwgX19iKTsKfQojZW5kaWYKCi8qIHZlY192c2xkb2kgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3ZzbGRvaSh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iLCB1bnNpZ25lZCBjaGFyIF9fYykgewogIHVuc2lnbmVkIGNoYXIgX19kID0gX19jICYgMHgwRjsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIHZlY19wZXJtKAogICAgICBfX2IsIF9fYSwgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgxNiAtIF9fZCwgMTcgLSBfX2QsIDE4IC0gX19kLCAxOSAtIF9fZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAgLSBfX2QsIDIxIC0gX19kLCAyMiAtIF9fZCwgMjMgLSBfX2QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0IC0gX19kLCAyNSAtIF9fZCwgMjYgLSBfX2QsIDI3IC0gX19kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyOCAtIF9fZCwgMjkgLSBfX2QsIDMwIC0gX19kLCAzMSAtIF9fZCkpOwojZWxzZQogIHJldHVybiB2ZWNfcGVybSgKICAgICAgX19hLCBfX2IsCiAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoX19kLCBfX2QgKyAxLCBfX2QgKyAyLCBfX2QgKyAzLCBfX2QgKyA0LCBfX2QgKyA1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZCArIDYsIF9fZCArIDcsIF9fZCArIDgsIF9fZCArIDksIF9fZCArIDEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZCArIDExLCBfX2QgKyAxMiwgX19kICsgMTMsIF9fZCArIDE0LCBfX2QgKyAxNSkpOwojZW5kaWYKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpIHZlY192c2xkb2koCiAgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYiwgdW5zaWduZWQgY2hhciBfX2MpIHsKICB1bnNpZ25lZCBjaGFyIF9fZCA9IF9fYyAmIDB4MEY7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiB2ZWNfcGVybSgKICAgICAgX19iLCBfX2EsICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMTYgLSBfX2QsIDE3IC0gX19kLCAxOCAtIF9fZCwgMTkgLSBfX2QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwIC0gX19kLCAyMSAtIF9fZCwgMjIgLSBfX2QsIDIzIC0gX19kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNCAtIF9fZCwgMjUgLSBfX2QsIDI2IC0gX19kLCAyNyAtIF9fZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjggLSBfX2QsIDI5IC0gX19kLCAzMCAtIF9fZCwgMzEgLSBfX2QpKTsKI2Vsc2UKICByZXR1cm4gdmVjX3Blcm0oCiAgICAgIF9fYSwgX19iLAogICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKF9fZCwgX19kICsgMSwgX19kICsgMiwgX19kICsgMywgX19kICsgNCwgX19kICsgNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2QgKyA2LCBfX2QgKyA3LCBfX2QgKyA4LCBfX2QgKyA5LCBfX2QgKyAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2QgKyAxMSwgX19kICsgMTIsIF9fZCArIDEzLCBfX2QgKyAxNCwgX19kICsgMTUpKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaG9ydCBfX0FUVFJTX29fYWkgdmVjX3ZzbGRvaSh2ZWN0b3Igc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNob3J0IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgX19jKSB7CiAgdW5zaWduZWQgY2hhciBfX2QgPSBfX2MgJiAweDBGOwojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gdmVjX3Blcm0oCiAgICAgIF9fYiwgX19hLCAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKDE2IC0gX19kLCAxNyAtIF9fZCwgMTggLSBfX2QsIDE5IC0gX19kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMCAtIF9fZCwgMjEgLSBfX2QsIDIyIC0gX19kLCAyMyAtIF9fZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjQgLSBfX2QsIDI1IC0gX19kLCAyNiAtIF9fZCwgMjcgLSBfX2QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI4IC0gX19kLCAyOSAtIF9fZCwgMzAgLSBfX2QsIDMxIC0gX19kKSk7CiNlbHNlCiAgcmV0dXJuIHZlY19wZXJtKAogICAgICBfX2EsIF9fYiwKICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKShfX2QsIF9fZCArIDEsIF9fZCArIDIsIF9fZCArIDMsIF9fZCArIDQsIF9fZCArIDUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19kICsgNiwgX19kICsgNywgX19kICsgOCwgX19kICsgOSwgX19kICsgMTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19kICsgMTEsIF9fZCArIDEyLCBfX2QgKyAxMywgX19kICsgMTQsIF9fZCArIDE1KSk7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpIHZlY192c2xkb2koCiAgICB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iLCB1bnNpZ25lZCBjaGFyIF9fYykgewogIHVuc2lnbmVkIGNoYXIgX19kID0gX19jICYgMHgwRjsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIHZlY19wZXJtKAogICAgICBfX2IsIF9fYSwgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgxNiAtIF9fZCwgMTcgLSBfX2QsIDE4IC0gX19kLCAxOSAtIF9fZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAgLSBfX2QsIDIxIC0gX19kLCAyMiAtIF9fZCwgMjMgLSBfX2QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0IC0gX19kLCAyNSAtIF9fZCwgMjYgLSBfX2QsIDI3IC0gX19kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyOCAtIF9fZCwgMjkgLSBfX2QsIDMwIC0gX19kLCAzMSAtIF9fZCkpOwojZWxzZQogIHJldHVybiB2ZWNfcGVybSgKICAgICAgX19hLCBfX2IsCiAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoX19kLCBfX2QgKyAxLCBfX2QgKyAyLCBfX2QgKyAzLCBfX2QgKyA0LCBfX2QgKyA1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZCArIDYsIF9fZCArIDcsIF9fZCArIDgsIF9fZCArIDksIF9fZCArIDEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZCArIDExLCBfX2QgKyAxMiwgX19kICsgMTMsIF9fZCArIDE0LCBfX2QgKyAxNSkpOwojZW5kaWYKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHBpeGVsIF9fQVRUUlNfb19haSB2ZWNfdnNsZG9pKHZlY3RvciBwaXhlbCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgcGl4ZWwgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBfX2MpIHsKICB1bnNpZ25lZCBjaGFyIF9fZCA9IF9fYyAmIDB4MEY7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiB2ZWNfcGVybSgKICAgICAgX19iLCBfX2EsICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMTYgLSBfX2QsIDE3IC0gX19kLCAxOCAtIF9fZCwgMTkgLSBfX2QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwIC0gX19kLCAyMSAtIF9fZCwgMjIgLSBfX2QsIDIzIC0gX19kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNCAtIF9fZCwgMjUgLSBfX2QsIDI2IC0gX19kLCAyNyAtIF9fZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjggLSBfX2QsIDI5IC0gX19kLCAzMCAtIF9fZCwgMzEgLSBfX2QpKTsKI2Vsc2UKICByZXR1cm4gdmVjX3Blcm0oCiAgICAgIF9fYSwgX19iLAogICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKF9fZCwgX19kICsgMSwgX19kICsgMiwgX19kICsgMywgX19kICsgNCwgX19kICsgNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2QgKyA2LCBfX2QgKyA3LCBfX2QgKyA4LCBfX2QgKyA5LCBfX2QgKyAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2QgKyAxMSwgX19kICsgMTIsIF9fZCArIDEzLCBfX2QgKyAxNCwgX19kICsgMTUpKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY192c2xkb2kodmVjdG9yIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBfX2MpIHsKICB1bnNpZ25lZCBjaGFyIF9fZCA9IF9fYyAmIDB4MEY7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiB2ZWNfcGVybSgKICAgICAgX19iLCBfX2EsICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMTYgLSBfX2QsIDE3IC0gX19kLCAxOCAtIF9fZCwgMTkgLSBfX2QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwIC0gX19kLCAyMSAtIF9fZCwgMjIgLSBfX2QsIDIzIC0gX19kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNCAtIF9fZCwgMjUgLSBfX2QsIDI2IC0gX19kLCAyNyAtIF9fZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjggLSBfX2QsIDI5IC0gX19kLCAzMCAtIF9fZCwgMzEgLSBfX2QpKTsKI2Vsc2UKICByZXR1cm4gdmVjX3Blcm0oCiAgICAgIF9fYSwgX19iLAogICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKF9fZCwgX19kICsgMSwgX19kICsgMiwgX19kICsgMywgX19kICsgNCwgX19kICsgNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2QgKyA2LCBfX2QgKyA3LCBfX2QgKyA4LCBfX2QgKyA5LCBfX2QgKyAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2QgKyAxMSwgX19kICsgMTIsIF9fZCArIDEzLCBfX2QgKyAxNCwgX19kICsgMTUpKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpIHZlY192c2xkb2koCiAgICB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IsIHVuc2lnbmVkIGNoYXIgX19jKSB7CiAgdW5zaWduZWQgY2hhciBfX2QgPSBfX2MgJiAweDBGOwojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gdmVjX3Blcm0oCiAgICAgIF9fYiwgX19hLCAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKDE2IC0gX19kLCAxNyAtIF9fZCwgMTggLSBfX2QsIDE5IC0gX19kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMCAtIF9fZCwgMjEgLSBfX2QsIDIyIC0gX19kLCAyMyAtIF9fZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjQgLSBfX2QsIDI1IC0gX19kLCAyNiAtIF9fZCwgMjcgLSBfX2QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI4IC0gX19kLCAyOSAtIF9fZCwgMzAgLSBfX2QsIDMxIC0gX19kKSk7CiNlbHNlCiAgcmV0dXJuIHZlY19wZXJtKAogICAgICBfX2EsIF9fYiwKICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKShfX2QsIF9fZCArIDEsIF9fZCArIDIsIF9fZCArIDMsIF9fZCArIDQsIF9fZCArIDUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19kICsgNiwgX19kICsgNywgX19kICsgOCwgX19kICsgOSwgX19kICsgMTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19kICsgMTEsIF9fZCArIDEyLCBfX2QgKyAxMywgX19kICsgMTQsIF9fZCArIDE1KSk7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpIHZlY192c2xkb2kodmVjdG9yIGZsb2F0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBmbG9hdCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIF9fYykgewogIHVuc2lnbmVkIGNoYXIgX19kID0gX19jICYgMHgwRjsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIHZlY19wZXJtKAogICAgICBfX2IsIF9fYSwgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgxNiAtIF9fZCwgMTcgLSBfX2QsIDE4IC0gX19kLCAxOSAtIF9fZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAgLSBfX2QsIDIxIC0gX19kLCAyMiAtIF9fZCwgMjMgLSBfX2QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0IC0gX19kLCAyNSAtIF9fZCwgMjYgLSBfX2QsIDI3IC0gX19kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyOCAtIF9fZCwgMjkgLSBfX2QsIDMwIC0gX19kLCAzMSAtIF9fZCkpOwojZWxzZQogIHJldHVybiB2ZWNfcGVybSgKICAgICAgX19hLCBfX2IsCiAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoX19kLCBfX2QgKyAxLCBfX2QgKyAyLCBfX2QgKyAzLCBfX2QgKyA0LCBfX2QgKyA1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZCArIDYsIF9fZCArIDcsIF9fZCArIDgsIF9fZCArIDksIF9fZCArIDEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZCArIDExLCBfX2QgKyAxMiwgX19kICsgMTMsIF9fZCArIDE0LCBfX2QgKyAxNSkpOwojZW5kaWYKfQoKLyogdmVjX3NsbCAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfc2xsKHZlY3RvciBzaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIHNpZ25lZCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX3ZzbCgodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3NsbCh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3Igc2lnbmVkIGNoYXIpX19idWlsdGluX2FsdGl2ZWNfdnNsKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfc2xsKHZlY3RvciBzaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3Igc2lnbmVkIGNoYXIpX19idWlsdGluX2FsdGl2ZWNfdnNsKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19zbGwodmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX3ZzbCgodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19zbGwodmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2J1aWx0aW5fYWx0aXZlY192c2woKHZlY3RvciBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfc2xsKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX3ZzbCgodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgY2hhciBfX0FUVFJTX29fYWkKdmVjX3NsbCh2ZWN0b3IgYm9vbCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX3ZzbCgodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfc2xsKHZlY3RvciBib29sIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX3ZzbCgodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfc2xsKHZlY3RvciBib29sIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiAodmVjdG9yIGJvb2wgY2hhcilfX2J1aWx0aW5fYWx0aXZlY192c2woKHZlY3RvciBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfc2xsKHZlY3RvciBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBzaG9ydClfX2J1aWx0aW5fYWx0aXZlY192c2woKHZlY3RvciBpbnQpX19hLCAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY19zbGwodmVjdG9yIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBzaG9ydClfX2J1aWx0aW5fYWx0aXZlY192c2woKHZlY3RvciBpbnQpX19hLCAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY19zbGwodmVjdG9yIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3Igc2hvcnQpX19idWlsdGluX2FsdGl2ZWNfdnNsKCh2ZWN0b3IgaW50KV9fYSwgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfc2xsKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYnVpbHRpbl9hbHRpdmVjX3ZzbCgodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3NsbCh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19idWlsdGluX2FsdGl2ZWNfdnNsKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfc2xsKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19idWlsdGluX2FsdGl2ZWNfdnNsKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgc2hvcnQgX19BVFRSU19vX2FpCnZlY19zbGwodmVjdG9yIGJvb2wgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBib29sIHNob3J0KV9fYnVpbHRpbl9hbHRpdmVjX3ZzbCgodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgc2hvcnQgX19BVFRSU19vX2FpCnZlY19zbGwodmVjdG9yIGJvb2wgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBzaG9ydClfX2J1aWx0aW5fYWx0aXZlY192c2woKHZlY3RvciBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfc2xsKHZlY3RvciBib29sIHNob3J0IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBib29sIHNob3J0KV9fYnVpbHRpbl9hbHRpdmVjX3ZzbCgodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHBpeGVsIF9fQVRUUlNfb19haSB2ZWNfc2xsKHZlY3RvciBwaXhlbCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBwaXhlbClfX2J1aWx0aW5fYWx0aXZlY192c2woKHZlY3RvciBpbnQpX19hLCAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgcGl4ZWwgX19BVFRSU19vX2FpIHZlY19zbGwodmVjdG9yIHBpeGVsIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBwaXhlbClfX2J1aWx0aW5fYWx0aXZlY192c2woKHZlY3RvciBpbnQpX19hLCAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgcGl4ZWwgX19BVFRSU19vX2FpIHZlY19zbGwodmVjdG9yIHBpeGVsIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgcGl4ZWwpX19idWlsdGluX2FsdGl2ZWNfdnNsKCh2ZWN0b3IgaW50KV9fYSwgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX3NsbCh2ZWN0b3IgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBpbnQpX19idWlsdGluX2FsdGl2ZWNfdnNsKF9fYSwgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX3NsbCh2ZWN0b3IgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgaW50KV9fYnVpbHRpbl9hbHRpdmVjX3ZzbChfX2EsICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY19zbGwodmVjdG9yIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBpbnQpX19idWlsdGluX2FsdGl2ZWNfdnNsKF9fYSwgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX3NsbCh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYnVpbHRpbl9hbHRpdmVjX3ZzbCgodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfc2xsKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYnVpbHRpbl9hbHRpdmVjX3ZzbCgodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfc2xsKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGludClfX2J1aWx0aW5fYWx0aXZlY192c2woKHZlY3RvciBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgaW50IF9fQVRUUlNfb19haQp2ZWNfc2xsKHZlY3RvciBib29sIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIGJvb2wgaW50KV9fYnVpbHRpbl9hbHRpdmVjX3ZzbCgodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGludCBfX0FUVFJTX29fYWkKdmVjX3NsbCh2ZWN0b3IgYm9vbCBpbnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBpbnQpX19idWlsdGluX2FsdGl2ZWNfdnNsKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgaW50IF9fQVRUUlNfb19haQp2ZWNfc2xsKHZlY3RvciBib29sIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBpbnQpX19idWlsdGluX2FsdGl2ZWNfdnNsKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKI2lmZGVmIF9fVlNYX18Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19zbGwodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYnVpbHRpbl9hbHRpdmVjX3ZzbCgodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX3NsbCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYnVpbHRpbl9hbHRpdmVjX3ZzbCgodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CiNlbmRpZgoKLyogdmVjX3ZzbCAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfdnNsKHZlY3RvciBzaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIHNpZ25lZCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX3ZzbCgodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3ZzbCh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3Igc2lnbmVkIGNoYXIpX19idWlsdGluX2FsdGl2ZWNfdnNsKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfdnNsKHZlY3RvciBzaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3Igc2lnbmVkIGNoYXIpX19idWlsdGluX2FsdGl2ZWNfdnNsKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY192c2wodmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX3ZzbCgodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY192c2wodmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2J1aWx0aW5fYWx0aXZlY192c2woKHZlY3RvciBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfdnNsKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX3ZzbCgodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgY2hhciBfX0FUVFJTX29fYWkKdmVjX3ZzbCh2ZWN0b3IgYm9vbCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX3ZzbCgodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfdnNsKHZlY3RvciBib29sIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX3ZzbCgodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfdnNsKHZlY3RvciBib29sIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiAodmVjdG9yIGJvb2wgY2hhcilfX2J1aWx0aW5fYWx0aXZlY192c2woKHZlY3RvciBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfdnNsKHZlY3RvciBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBzaG9ydClfX2J1aWx0aW5fYWx0aXZlY192c2woKHZlY3RvciBpbnQpX19hLCAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY192c2wodmVjdG9yIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBzaG9ydClfX2J1aWx0aW5fYWx0aXZlY192c2woKHZlY3RvciBpbnQpX19hLCAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY192c2wodmVjdG9yIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3Igc2hvcnQpX19idWlsdGluX2FsdGl2ZWNfdnNsKCh2ZWN0b3IgaW50KV9fYSwgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfdnNsKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYnVpbHRpbl9hbHRpdmVjX3ZzbCgodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3ZzbCh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19idWlsdGluX2FsdGl2ZWNfdnNsKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfdnNsKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19idWlsdGluX2FsdGl2ZWNfdnNsKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgc2hvcnQgX19BVFRSU19vX2FpCnZlY192c2wodmVjdG9yIGJvb2wgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBib29sIHNob3J0KV9fYnVpbHRpbl9hbHRpdmVjX3ZzbCgodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgc2hvcnQgX19BVFRSU19vX2FpCnZlY192c2wodmVjdG9yIGJvb2wgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBzaG9ydClfX2J1aWx0aW5fYWx0aXZlY192c2woKHZlY3RvciBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfdnNsKHZlY3RvciBib29sIHNob3J0IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBib29sIHNob3J0KV9fYnVpbHRpbl9hbHRpdmVjX3ZzbCgodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHBpeGVsIF9fQVRUUlNfb19haSB2ZWNfdnNsKHZlY3RvciBwaXhlbCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBwaXhlbClfX2J1aWx0aW5fYWx0aXZlY192c2woKHZlY3RvciBpbnQpX19hLCAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgcGl4ZWwgX19BVFRSU19vX2FpIHZlY192c2wodmVjdG9yIHBpeGVsIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBwaXhlbClfX2J1aWx0aW5fYWx0aXZlY192c2woKHZlY3RvciBpbnQpX19hLCAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgcGl4ZWwgX19BVFRSU19vX2FpIHZlY192c2wodmVjdG9yIHBpeGVsIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgcGl4ZWwpX19idWlsdGluX2FsdGl2ZWNfdnNsKCh2ZWN0b3IgaW50KV9fYSwgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX3ZzbCh2ZWN0b3IgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBpbnQpX19idWlsdGluX2FsdGl2ZWNfdnNsKF9fYSwgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX3ZzbCh2ZWN0b3IgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgaW50KV9fYnVpbHRpbl9hbHRpdmVjX3ZzbChfX2EsICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY192c2wodmVjdG9yIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBpbnQpX19idWlsdGluX2FsdGl2ZWNfdnNsKF9fYSwgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX3ZzbCh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYnVpbHRpbl9hbHRpdmVjX3ZzbCgodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfdnNsKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYnVpbHRpbl9hbHRpdmVjX3ZzbCgodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfdnNsKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGludClfX2J1aWx0aW5fYWx0aXZlY192c2woKHZlY3RvciBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgaW50IF9fQVRUUlNfb19haQp2ZWNfdnNsKHZlY3RvciBib29sIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIGJvb2wgaW50KV9fYnVpbHRpbl9hbHRpdmVjX3ZzbCgodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGludCBfX0FUVFJTX29fYWkKdmVjX3ZzbCh2ZWN0b3IgYm9vbCBpbnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBpbnQpX19idWlsdGluX2FsdGl2ZWNfdnNsKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgaW50IF9fQVRUUlNfb19haQp2ZWNfdnNsKHZlY3RvciBib29sIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBpbnQpX19idWlsdGluX2FsdGl2ZWNfdnNsKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKLyogdmVjX3NsbyAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfc2xvKHZlY3RvciBzaWduZWQgY2hhciBfX2EsIHZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBzaWduZWQgY2hhcilfX2J1aWx0aW5fYWx0aXZlY192c2xvKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3Nsbyh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBzaWduZWQgY2hhcilfX2J1aWx0aW5fYWx0aXZlY192c2xvKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfc2xvKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19idWlsdGluX2FsdGl2ZWNfdnNsbygodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfc2xvKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2J1aWx0aW5fYWx0aXZlY192c2xvKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfc2xvKHZlY3RvciBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3Igc2hvcnQpX19idWlsdGluX2FsdGl2ZWNfdnNsbygodmVjdG9yIGludClfX2EsICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaG9ydCBfX0FUVFJTX29fYWkgdmVjX3Nsbyh2ZWN0b3Igc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3Igc2hvcnQpX19idWlsdGluX2FsdGl2ZWNfdnNsbygodmVjdG9yIGludClfX2EsICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3Nsbyh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19idWlsdGluX2FsdGl2ZWNfdnNsbygodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY19zbG8odmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19idWlsdGluX2FsdGl2ZWNfdnNsbygodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgcGl4ZWwgX19BVFRSU19vX2FpIHZlY19zbG8odmVjdG9yIHBpeGVsIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBwaXhlbClfX2J1aWx0aW5fYWx0aXZlY192c2xvKCh2ZWN0b3IgaW50KV9fYSwgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHBpeGVsIF9fQVRUUlNfb19haSB2ZWNfc2xvKHZlY3RvciBwaXhlbCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBwaXhlbClfX2J1aWx0aW5fYWx0aXZlY192c2xvKCh2ZWN0b3IgaW50KV9fYSwgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX3Nsbyh2ZWN0b3IgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgaW50KV9fYnVpbHRpbl9hbHRpdmVjX3ZzbG8oX19hLCAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgaW50IF9fQVRUUlNfb19haSB2ZWNfc2xvKHZlY3RvciBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIGludClfX2J1aWx0aW5fYWx0aXZlY192c2xvKF9fYSwgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX3Nsbyh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGludClfX2J1aWx0aW5fYWx0aXZlY192c2xvKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfc2xvKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBpbnQpX19idWlsdGluX2FsdGl2ZWNfdnNsbygodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGZsb2F0IF9fQVRUUlNfb19haSB2ZWNfc2xvKHZlY3RvciBmbG9hdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgZmxvYXQpX19idWlsdGluX2FsdGl2ZWNfdnNsbygodmVjdG9yIGludClfX2EsICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkgdmVjX3Nsbyh2ZWN0b3IgZmxvYXQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgZmxvYXQpX19idWlsdGluX2FsdGl2ZWNfdnNsbygodmVjdG9yIGludClfX2EsICh2ZWN0b3IgaW50KV9fYik7Cn0KCiNpZmRlZiBfX1ZTWF9fCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfc2xvKHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19idWlsdGluX2FsdGl2ZWNfdnNsbygodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfc2xvKHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2J1aWx0aW5fYWx0aXZlY192c2xvKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX3Nsbyh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2J1aWx0aW5fYWx0aXZlY192c2xvKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfc2xvKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19idWlsdGluX2FsdGl2ZWNfdnNsbygodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQojZW5kaWYKCi8qIHZlY192c2xvICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY192c2xvKHZlY3RvciBzaWduZWQgY2hhciBfX2EsIHZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBzaWduZWQgY2hhcilfX2J1aWx0aW5fYWx0aXZlY192c2xvKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3ZzbG8odmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3Igc2lnbmVkIGNoYXIpX19idWlsdGluX2FsdGl2ZWNfdnNsbygodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3ZzbG8odmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2J1aWx0aW5fYWx0aXZlY192c2xvKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY192c2xvKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2J1aWx0aW5fYWx0aXZlY192c2xvKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfdnNsbyh2ZWN0b3Igc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBzaG9ydClfX2J1aWx0aW5fYWx0aXZlY192c2xvKCh2ZWN0b3IgaW50KV9fYSwgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfdnNsbyh2ZWN0b3Igc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIHNob3J0KV9fYnVpbHRpbl9hbHRpdmVjX3ZzbG8oKHZlY3RvciBpbnQpX19hLCAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY192c2xvKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2J1aWx0aW5fYWx0aXZlY192c2xvKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3ZzbG8odmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19idWlsdGluX2FsdGl2ZWNfdnNsbygodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgcGl4ZWwgX19BVFRSU19vX2FpIHZlY192c2xvKHZlY3RvciBwaXhlbCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIHBpeGVsKV9fYnVpbHRpbl9hbHRpdmVjX3ZzbG8oKHZlY3RvciBpbnQpX19hLCAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgcGl4ZWwgX19BVFRSU19vX2FpIHZlY192c2xvKHZlY3RvciBwaXhlbCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgcGl4ZWwpX19idWlsdGluX2FsdGl2ZWNfdnNsbygodmVjdG9yIGludClfX2EsICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY192c2xvKHZlY3RvciBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgaW50KV9fYnVpbHRpbl9hbHRpdmVjX3ZzbG8oX19hLCAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgaW50IF9fQVRUUlNfb19haSB2ZWNfdnNsbyh2ZWN0b3IgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgaW50KV9fYnVpbHRpbl9hbHRpdmVjX3ZzbG8oX19hLCAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfdnNsbyh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGludClfX2J1aWx0aW5fYWx0aXZlY192c2xvKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfdnNsbyh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYnVpbHRpbl9hbHRpdmVjX3ZzbG8oKHZlY3RvciBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkgdmVjX3ZzbG8odmVjdG9yIGZsb2F0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgZmxvYXQpX19idWlsdGluX2FsdGl2ZWNfdnNsbygodmVjdG9yIGludClfX2EsICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkgdmVjX3ZzbG8odmVjdG9yIGZsb2F0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBmbG9hdClfX2J1aWx0aW5fYWx0aXZlY192c2xvKCh2ZWN0b3IgaW50KV9fYSwgKHZlY3RvciBpbnQpX19iKTsKfQoKLyogdmVjX3NwbGF0ICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19zcGxhdCh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCB1bnNpZ25lZCBjb25zdCBpbnQgX19iKSB7CiAgcmV0dXJuIHZlY19wZXJtKF9fYSwgX19hLCAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKF9fYiAmIDB4MEYpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19zcGxhdCh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHVuc2lnbmVkIGNvbnN0IGludCBfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0oX19hLCBfX2EsICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoX19iICYgMHgwRikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfc3BsYXQodmVjdG9yIGJvb2wgY2hhciBfX2EsIHVuc2lnbmVkIGNvbnN0IGludCBfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0oX19hLCBfX2EsICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoX19iICYgMHgwRikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfc3BsYXQodmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIHVuc2lnbmVkIGNvbnN0IGludCBfX2IpIHsKICB1bnNpZ25lZCBjaGFyIGIwID0gKF9fYiAmIDB4MDcpICogMjsKICB1bnNpZ25lZCBjaGFyIGIxID0gYjAgKyAxOwogIHJldHVybiB2ZWNfcGVybShfX2EsIF9fYSwKICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKShiMCwgYjEsIGIwLCBiMSwgYjAsIGIxLCBiMCwgYjEsIGIwLCBiMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiMCwgYjEsIGIwLCBiMSwgYjAsIGIxKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3NwbGF0KHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHVuc2lnbmVkIGNvbnN0IGludCBfX2IpIHsKICB1bnNpZ25lZCBjaGFyIGIwID0gKF9fYiAmIDB4MDcpICogMjsKICB1bnNpZ25lZCBjaGFyIGIxID0gYjAgKyAxOwogIHJldHVybiB2ZWNfcGVybShfX2EsIF9fYSwKICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKShiMCwgYjEsIGIwLCBiMSwgYjAsIGIxLCBiMCwgYjEsIGIwLCBiMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiMCwgYjEsIGIwLCBiMSwgYjAsIGIxKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfc3BsYXQodmVjdG9yIGJvb2wgc2hvcnQgX19hLCB1bnNpZ25lZCBjb25zdCBpbnQgX19iKSB7CiAgdW5zaWduZWQgY2hhciBiMCA9IChfX2IgJiAweDA3KSAqIDI7CiAgdW5zaWduZWQgY2hhciBiMSA9IGIwICsgMTsKICByZXR1cm4gdmVjX3Blcm0oX19hLCBfX2EsCiAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoYjAsIGIxLCBiMCwgYjEsIGIwLCBiMSwgYjAsIGIxLCBiMCwgYjEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYjAsIGIxLCBiMCwgYjEsIGIwLCBiMSkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgcGl4ZWwgX19BVFRSU19vX2FpIHZlY19zcGxhdCh2ZWN0b3IgcGl4ZWwgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjb25zdCBpbnQgX19iKSB7CiAgdW5zaWduZWQgY2hhciBiMCA9IChfX2IgJiAweDA3KSAqIDI7CiAgdW5zaWduZWQgY2hhciBiMSA9IGIwICsgMTsKICByZXR1cm4gdmVjX3Blcm0oX19hLCBfX2EsCiAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoYjAsIGIxLCBiMCwgYjEsIGIwLCBiMSwgYjAsIGIxLCBiMCwgYjEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYjAsIGIxLCBiMCwgYjEsIGIwLCBiMSkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX3NwbGF0KHZlY3RvciBzaWduZWQgaW50IF9fYSwgdW5zaWduZWQgY29uc3QgaW50IF9fYikgewogIHVuc2lnbmVkIGNoYXIgYjAgPSAoX19iICYgMHgwMykgKiA0OwogIHVuc2lnbmVkIGNoYXIgYjEgPSBiMCArIDEsIGIyID0gYjAgKyAyLCBiMyA9IGIwICsgMzsKICByZXR1cm4gdmVjX3Blcm0oX19hLCBfX2EsCiAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoYjAsIGIxLCBiMiwgYjMsIGIwLCBiMSwgYjIsIGIzLCBiMCwgYjEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYjIsIGIzLCBiMCwgYjEsIGIyLCBiMykpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfc3BsYXQodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGNvbnN0IGludCBfX2IpIHsKICB1bnNpZ25lZCBjaGFyIGIwID0gKF9fYiAmIDB4MDMpICogNDsKICB1bnNpZ25lZCBjaGFyIGIxID0gYjAgKyAxLCBiMiA9IGIwICsgMiwgYjMgPSBiMCArIDM7CiAgcmV0dXJuIHZlY19wZXJtKF9fYSwgX19hLAogICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKGIwLCBiMSwgYjIsIGIzLCBiMCwgYjEsIGIyLCBiMywgYjAsIGIxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIyLCBiMywgYjAsIGIxLCBiMiwgYjMpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgaW50IF9fQVRUUlNfb19haQp2ZWNfc3BsYXQodmVjdG9yIGJvb2wgaW50IF9fYSwgdW5zaWduZWQgY29uc3QgaW50IF9fYikgewogIHVuc2lnbmVkIGNoYXIgYjAgPSAoX19iICYgMHgwMykgKiA0OwogIHVuc2lnbmVkIGNoYXIgYjEgPSBiMCArIDEsIGIyID0gYjAgKyAyLCBiMyA9IGIwICsgMzsKICByZXR1cm4gdmVjX3Blcm0oX19hLCBfX2EsCiAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoYjAsIGIxLCBiMiwgYjMsIGIwLCBiMSwgYjIsIGIzLCBiMCwgYjEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYjIsIGIzLCBiMCwgYjEsIGIyLCBiMykpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpIHZlY19zcGxhdCh2ZWN0b3IgZmxvYXQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjb25zdCBpbnQgX19iKSB7CiAgdW5zaWduZWQgY2hhciBiMCA9IChfX2IgJiAweDAzKSAqIDQ7CiAgdW5zaWduZWQgY2hhciBiMSA9IGIwICsgMSwgYjIgPSBiMCArIDIsIGIzID0gYjAgKyAzOwogIHJldHVybiB2ZWNfcGVybShfX2EsIF9fYSwKICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKShiMCwgYjEsIGIyLCBiMywgYjAsIGIxLCBiMiwgYjMsIGIwLCBiMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiMiwgYjMsIGIwLCBiMSwgYjIsIGIzKSk7Cn0KCiNpZmRlZiBfX1ZTWF9fCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBkb3VibGUgX19BVFRSU19vX2FpIHZlY19zcGxhdCh2ZWN0b3IgZG91YmxlIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNvbnN0IGludCBfX2IpIHsKICB1bnNpZ25lZCBjaGFyIGIwID0gKF9fYiAmIDB4MDEpICogODsKICB1bnNpZ25lZCBjaGFyIGIxID0gYjAgKyAxLCBiMiA9IGIwICsgMiwgYjMgPSBiMCArIDMsIGI0ID0gYjAgKyA0LCBiNSA9IGIwICsgNSwKICAgICAgICAgICAgICAgIGI2ID0gYjAgKyA2LCBiNyA9IGIwICsgNzsKICByZXR1cm4gdmVjX3Blcm0oX19hLCBfX2EsCiAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoYjAsIGIxLCBiMiwgYjMsIGI0LCBiNSwgYjYsIGI3LCBiMCwgYjEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYjIsIGIzLCBiNCwgYjUsIGI2LCBiNykpOwp9CnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX3NwbGF0KHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2EsIHVuc2lnbmVkIGNvbnN0IGludCBfX2IpIHsKICB1bnNpZ25lZCBjaGFyIGIwID0gKF9fYiAmIDB4MDEpICogODsKICB1bnNpZ25lZCBjaGFyIGIxID0gYjAgKyAxLCBiMiA9IGIwICsgMiwgYjMgPSBiMCArIDMsIGI0ID0gYjAgKyA0LCBiNSA9IGIwICsgNSwKICAgICAgICAgICAgICAgIGI2ID0gYjAgKyA2LCBiNyA9IGIwICsgNzsKICByZXR1cm4gdmVjX3Blcm0oX19hLCBfX2EsCiAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoYjAsIGIxLCBiMiwgYjMsIGI0LCBiNSwgYjYsIGI3LCBiMCwgYjEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYjIsIGIzLCBiNCwgYjUsIGI2LCBiNykpOwp9CnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfc3BsYXQodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCB1bnNpZ25lZCBjb25zdCBpbnQgX19iKSB7CiAgdW5zaWduZWQgY2hhciBiMCA9IChfX2IgJiAweDAxKSAqIDg7CiAgdW5zaWduZWQgY2hhciBiMSA9IGIwICsgMSwgYjIgPSBiMCArIDIsIGIzID0gYjAgKyAzLCBiNCA9IGIwICsgNCwgYjUgPSBiMCArIDUsCiAgICAgICAgICAgICAgICBiNiA9IGIwICsgNiwgYjcgPSBiMCArIDc7CiAgcmV0dXJuIHZlY19wZXJtKF9fYSwgX19hLAogICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKGIwLCBiMSwgYjIsIGIzLCBiNCwgYjUsIGI2LCBiNywgYjAsIGIxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIyLCBiMywgYjQsIGI1LCBiNiwgYjcpKTsKfQpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfc3BsYXQodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHVuc2lnbmVkIGNvbnN0IGludCBfX2IpIHsKICB1bnNpZ25lZCBjaGFyIGIwID0gKF9fYiAmIDB4MDEpICogODsKICB1bnNpZ25lZCBjaGFyIGIxID0gYjAgKyAxLCBiMiA9IGIwICsgMiwgYjMgPSBiMCArIDMsIGI0ID0gYjAgKyA0LCBiNSA9IGIwICsgNSwKICAgICAgICAgICAgICAgIGI2ID0gYjAgKyA2LCBiNyA9IGIwICsgNzsKICByZXR1cm4gdmVjX3Blcm0oX19hLCBfX2EsCiAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoYjAsIGIxLCBiMiwgYjMsIGI0LCBiNSwgYjYsIGI3LCBiMCwgYjEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYjIsIGIzLCBiNCwgYjUsIGI2LCBiNykpOwp9CiNlbmRpZgoKLyogdmVjX3ZzcGx0YiAqLwoKI2RlZmluZSBfX2J1aWx0aW5fYWx0aXZlY192c3BsdGIgdmVjX3ZzcGx0YgoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfdnNwbHRiKHZlY3RvciBzaWduZWQgY2hhciBfX2EsIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIHZlY19wZXJtKF9fYSwgX19hLCAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKF9fYikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3ZzcGx0Yih2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIHZlY19wZXJtKF9fYSwgX19hLCAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKF9fYikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBjaGFyIF9fQVRUUlNfb19haSB2ZWNfdnNwbHRiKHZlY3RvciBib29sIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIHZlY19wZXJtKF9fYSwgX19hLCAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKF9fYikpOwp9CgovKiB2ZWNfdnNwbHRoICovCgojZGVmaW5lIF9fYnVpbHRpbl9hbHRpdmVjX3ZzcGx0aCB2ZWNfdnNwbHRoCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY192c3BsdGgodmVjdG9yIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgX19iICo9IDI7CiAgdW5zaWduZWQgY2hhciBiMSA9IF9fYiArIDE7CiAgcmV0dXJuIHZlY19wZXJtKF9fYSwgX19hLAogICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKF9fYiwgYjEsIF9fYiwgYjEsIF9fYiwgYjEsIF9fYiwgYjEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19iLCBiMSwgX19iLCBiMSwgX19iLCBiMSwgX19iLCBiMSkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY192c3BsdGgodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgdW5zaWduZWQgY2hhciBfX2IpIHsKICBfX2IgKj0gMjsKICB1bnNpZ25lZCBjaGFyIGIxID0gX19iICsgMTsKICByZXR1cm4gdmVjX3Blcm0oX19hLCBfX2EsCiAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoX19iLCBiMSwgX19iLCBiMSwgX19iLCBiMSwgX19iLCBiMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2IsIGIxLCBfX2IsIGIxLCBfX2IsIGIxLCBfX2IsIGIxKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfdnNwbHRoKHZlY3RvciBib29sIHNob3J0IF9fYSwgdW5zaWduZWQgY2hhciBfX2IpIHsKICBfX2IgKj0gMjsKICB1bnNpZ25lZCBjaGFyIGIxID0gX19iICsgMTsKICByZXR1cm4gdmVjX3Blcm0oX19hLCBfX2EsCiAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoX19iLCBiMSwgX19iLCBiMSwgX19iLCBiMSwgX19iLCBiMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2IsIGIxLCBfX2IsIGIxLCBfX2IsIGIxLCBfX2IsIGIxKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBwaXhlbCBfX0FUVFJTX29fYWkgdmVjX3ZzcGx0aCh2ZWN0b3IgcGl4ZWwgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBfX2IpIHsKICBfX2IgKj0gMjsKICB1bnNpZ25lZCBjaGFyIGIxID0gX19iICsgMTsKICByZXR1cm4gdmVjX3Blcm0oX19hLCBfX2EsCiAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoX19iLCBiMSwgX19iLCBiMSwgX19iLCBiMSwgX19iLCBiMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2IsIGIxLCBfX2IsIGIxLCBfX2IsIGIxLCBfX2IsIGIxKSk7Cn0KCi8qIHZlY192c3BsdHcgKi8KCiNkZWZpbmUgX19idWlsdGluX2FsdGl2ZWNfdnNwbHR3IHZlY192c3BsdHcKCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY192c3BsdHcodmVjdG9yIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBfX2IpIHsKICBfX2IgKj0gNDsKICB1bnNpZ25lZCBjaGFyIGIxID0gX19iICsgMSwgYjIgPSBfX2IgKyAyLCBiMyA9IF9fYiArIDM7CiAgcmV0dXJuIHZlY19wZXJtKF9fYSwgX19hLAogICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKF9fYiwgYjEsIGIyLCBiMywgX19iLCBiMSwgYjIsIGIzLCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYjEsIGIyLCBiMywgX19iLCBiMSwgYjIsIGIzKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY192c3BsdHcodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgX19iICo9IDQ7CiAgdW5zaWduZWQgY2hhciBiMSA9IF9fYiArIDEsIGIyID0gX19iICsgMiwgYjMgPSBfX2IgKyAzOwogIHJldHVybiB2ZWNfcGVybShfX2EsIF9fYSwKICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKShfX2IsIGIxLCBiMiwgYjMsIF9fYiwgYjEsIGIyLCBiMywgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIxLCBiMiwgYjMsIF9fYiwgYjEsIGIyLCBiMykpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBpbnQgX19BVFRSU19vX2FpIHZlY192c3BsdHcodmVjdG9yIGJvb2wgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgX19iICo9IDQ7CiAgdW5zaWduZWQgY2hhciBiMSA9IF9fYiArIDEsIGIyID0gX19iICsgMiwgYjMgPSBfX2IgKyAzOwogIHJldHVybiB2ZWNfcGVybShfX2EsIF9fYSwKICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKShfX2IsIGIxLCBiMiwgYjMsIF9fYiwgYjEsIGIyLCBiMywgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIxLCBiMiwgYjMsIF9fYiwgYjEsIGIyLCBiMykpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpIHZlY192c3BsdHcodmVjdG9yIGZsb2F0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgX19iICo9IDQ7CiAgdW5zaWduZWQgY2hhciBiMSA9IF9fYiArIDEsIGIyID0gX19iICsgMiwgYjMgPSBfX2IgKyAzOwogIHJldHVybiB2ZWNfcGVybShfX2EsIF9fYSwKICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKShfX2IsIGIxLCBiMiwgYjMsIF9fYiwgYjEsIGIyLCBiMywgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIxLCBiMiwgYjMsIF9fYiwgYjEsIGIyLCBiMykpOwp9CgovKiB2ZWNfc3BsYXRfczggKi8KCiNkZWZpbmUgX19idWlsdGluX2FsdGl2ZWNfdnNwbHRpc2IgdmVjX3NwbGF0X3M4CgovLyBGSVhNRTogcGFyYW1ldGVyIHNob3VsZCBiZSB0cmVhdGVkIGFzIDUtYml0IHNpZ25lZCBsaXRlcmFsCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3NwbGF0X3M4KHNpZ25lZCBjaGFyIF9fYSkgewogIHJldHVybiAodmVjdG9yIHNpZ25lZCBjaGFyKShfX2EpOwp9CgovKiB2ZWNfdnNwbHRpc2IgKi8KCi8vIEZJWE1FOiBwYXJhbWV0ZXIgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgNS1iaXQgc2lnbmVkIGxpdGVyYWwKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfdnNwbHRpc2Ioc2lnbmVkIGNoYXIgX19hKSB7CiAgcmV0dXJuICh2ZWN0b3Igc2lnbmVkIGNoYXIpKF9fYSk7Cn0KCi8qIHZlY19zcGxhdF9zMTYgKi8KCiNkZWZpbmUgX19idWlsdGluX2FsdGl2ZWNfdnNwbHRpc2ggdmVjX3NwbGF0X3MxNgoKLy8gRklYTUU6IHBhcmFtZXRlciBzaG91bGQgYmUgdHJlYXRlZCBhcyA1LWJpdCBzaWduZWQgbGl0ZXJhbApzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY19zcGxhdF9zMTYoc2lnbmVkIGNoYXIgX19hKSB7CiAgcmV0dXJuICh2ZWN0b3Igc2hvcnQpKF9fYSk7Cn0KCi8qIHZlY192c3BsdGlzaCAqLwoKLy8gRklYTUU6IHBhcmFtZXRlciBzaG91bGQgYmUgdHJlYXRlZCBhcyA1LWJpdCBzaWduZWQgbGl0ZXJhbApzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY192c3BsdGlzaChzaWduZWQgY2hhciBfX2EpIHsKICByZXR1cm4gKHZlY3RvciBzaG9ydCkoX19hKTsKfQoKLyogdmVjX3NwbGF0X3MzMiAqLwoKI2RlZmluZSBfX2J1aWx0aW5fYWx0aXZlY192c3BsdGlzdyB2ZWNfc3BsYXRfczMyCgovLyBGSVhNRTogcGFyYW1ldGVyIHNob3VsZCBiZSB0cmVhdGVkIGFzIDUtYml0IHNpZ25lZCBsaXRlcmFsCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY19zcGxhdF9zMzIoc2lnbmVkIGNoYXIgX19hKSB7CiAgcmV0dXJuICh2ZWN0b3IgaW50KShfX2EpOwp9CgovKiB2ZWNfdnNwbHRpc3cgKi8KCi8vIEZJWE1FOiBwYXJhbWV0ZXIgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgNS1iaXQgc2lnbmVkIGxpdGVyYWwKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX3ZzcGx0aXN3KHNpZ25lZCBjaGFyIF9fYSkgewogIHJldHVybiAodmVjdG9yIGludCkoX19hKTsKfQoKLyogdmVjX3NwbGF0X3U4ICovCgovLyBGSVhNRTogcGFyYW1ldGVyIHNob3VsZCBiZSB0cmVhdGVkIGFzIDUtYml0IHNpZ25lZCBsaXRlcmFsCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfc3BsYXRfdTgodW5zaWduZWQgY2hhciBfX2EpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBjaGFyKShfX2EpOwp9CgovKiB2ZWNfc3BsYXRfdTE2ICovCgovLyBGSVhNRTogcGFyYW1ldGVyIHNob3VsZCBiZSB0cmVhdGVkIGFzIDUtYml0IHNpZ25lZCBsaXRlcmFsCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3NwbGF0X3UxNihzaWduZWQgY2hhciBfX2EpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBzaG9ydCkoX19hKTsKfQoKLyogdmVjX3NwbGF0X3UzMiAqLwoKLy8gRklYTUU6IHBhcmFtZXRlciBzaG91bGQgYmUgdHJlYXRlZCBhcyA1LWJpdCBzaWduZWQgbGl0ZXJhbApzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfc3BsYXRfdTMyKHNpZ25lZCBjaGFyIF9fYSkgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGludCkoX19hKTsKfQoKLyogdmVjX3NyICovCgovLyB2ZWNfc3IgZG9lcyBtb2R1bG8gYXJpdGhtZXRpYyBvbiBfX2IgZmlyc3QsIHNvIF9fYiBpcyBhbGxvd2VkIHRvIGJlIG1vcmUKLy8gdGhhbiB0aGUgbGVuZ3RoIG9mIF9fYS4Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19zcih2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2EgPj4KICAgICAgICAgKF9fYiAlICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoc2l6ZW9mKHVuc2lnbmVkIGNoYXIpICogX19DSEFSX0JJVF9fKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3NyKHZlY3RvciBzaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIHNpZ25lZCBjaGFyKXZlY19zcigodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY19zcih2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYSA+PgogICAgICAgICAoX19iICUgKHZlY3RvciB1bnNpZ25lZCBzaG9ydCkoc2l6ZW9mKHVuc2lnbmVkIHNob3J0KSAqIF9fQ0hBUl9CSVRfXykpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY19zcih2ZWN0b3Igc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3Igc2hvcnQpdmVjX3NyKCh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfc3IodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYSA+PgogICAgICAgICAoX19iICUgKHZlY3RvciB1bnNpZ25lZCBpbnQpKHNpemVvZih1bnNpZ25lZCBpbnQpICogX19DSEFSX0JJVF9fKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY19zcih2ZWN0b3IgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgaW50KXZlY19zcigodmVjdG9yIHVuc2lnbmVkIGludClfX2EsIF9fYik7Cn0KCiNpZmRlZiBfX1BPV0VSOF9WRUNUT1JfXwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfc3IodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYSA+PiAoX19iICUgKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpKHNpemVvZih1bnNpZ25lZCBsb25nIGxvbmcpICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19DSEFSX0JJVF9fKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19zcih2ZWN0b3IgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBsb25nIGxvbmcpdmVjX3NyKCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYSwgX19iKTsKfQojZWxpZiBkZWZpbmVkKF9fVlNYX18pCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19zcih2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICBfX2IgJT0gKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpKHNpemVvZih1bnNpZ25lZCBsb25nIGxvbmcpICogX19DSEFSX0JJVF9fKTsKCiAgLy8gQmlnIGVuZGlhbiBlbGVtZW50IHplcm8gKHRoZSBsZWZ0IGRvdWJsZXdvcmQpIGNhbiBiZSByaWdodCBzaGlmdGVkIGFzLWlzLgogIC8vIEhvd2V2ZXIgdGhlIHNoaWZ0IGFtb3VudCBtdXN0IGJlIGluIHRoZSByaWdodCBkb3VibGV3b3JkLgogIC8vIFRoZSBvdGhlciBlbGVtZW50IG5lZWRzIHRvIGJlIHN3YXBwZWQgaW50byB0aGUgbGVmdCBkb3VibGV3b3JkIGFuZAogIC8vIHNoaWZ0ZWQuIFRoZW4gdGhlIGxlZnQgZG91Ymxld29yZHMgb2YgdGhlIHR3byByZXN1bHQgdmVjdG9ycyBhcmUgbWVyZ2VkLgogIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19zd2Fwc2hpZnQgPQogICAgICBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX2IsIF9fYiwgMSwgMCk7CiAgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2xlZnRlbHQgPQogICAgICAodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2J1aWx0aW5fYWx0aXZlY192c3JvKAogICAgICAgICAgKHZlY3RvciBzaWduZWQgaW50KV9fYSwgKHZlY3RvciBzaWduZWQgaW50KV9fc3dhcHNoaWZ0KTsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgX19sZWZ0ZWx0ID0gKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19idWlsdGluX2FsdGl2ZWNfdnNyKAogICAgICAodmVjdG9yIHNpZ25lZCBpbnQpX19sZWZ0ZWx0LAogICAgICAodmVjdG9yIHNpZ25lZCBpbnQpdmVjX3ZzcGx0YigodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19zd2Fwc2hpZnQsIDApKTsKI2Vsc2UKICBfX2xlZnRlbHQgPSAodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2J1aWx0aW5fYWx0aXZlY192c3IoCiAgICAgICh2ZWN0b3Igc2lnbmVkIGludClfX2xlZnRlbHQsCiAgICAgICh2ZWN0b3Igc2lnbmVkIGludCl2ZWNfdnNwbHRiKCh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX3N3YXBzaGlmdCwgMTUpKTsKI2VuZGlmCiAgX19hID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19hLCBfX2EsIDEsIDApOwogIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19yaWdodGVsdCA9CiAgICAgICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYnVpbHRpbl9hbHRpdmVjX3Zzcm8oKHZlY3RvciBzaWduZWQgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHNpZ25lZCBpbnQpX19iKTsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgX19yaWdodGVsdCA9ICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYnVpbHRpbl9hbHRpdmVjX3ZzcigKICAgICAgKHZlY3RvciBzaWduZWQgaW50KV9fcmlnaHRlbHQsCiAgICAgICh2ZWN0b3Igc2lnbmVkIGludCl2ZWNfdnNwbHRiKCh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IsIDApKTsKICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yaWdodGVsdCwgX19sZWZ0ZWx0LCAxLCAzKTsKI2Vsc2UKICBfX3JpZ2h0ZWx0ID0gKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19idWlsdGluX2FsdGl2ZWNfdnNyKAogICAgICAodmVjdG9yIHNpZ25lZCBpbnQpX19yaWdodGVsdCwKICAgICAgKHZlY3RvciBzaWduZWQgaW50KXZlY192c3BsdGIoKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYiwgMTUpKTsKICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19sZWZ0ZWx0LCBfX3JpZ2h0ZWx0LCAwLCAyKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19zcih2ZWN0b3IgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBsb25nIGxvbmcpdmVjX3NyKCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYSwgX19iKTsKfQojZW5kaWYgLyogX19WU1hfXyAqLwoKLyogdmVjX3ZzcmIgKi8KCiNkZWZpbmUgX19idWlsdGluX2FsdGl2ZWNfdnNyYiB2ZWNfdnNyYgoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfdnNyYih2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gdmVjX3NyKF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY192c3JiKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIHZlY19zcihfX2EsIF9fYik7Cn0KCi8qIHZlY192c3JoICovCgojZGVmaW5lIF9fYnVpbHRpbl9hbHRpdmVjX3ZzcmggdmVjX3ZzcmgKCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3ZzcmgodmVjdG9yIHNob3J0IF9fYSwgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiB2ZWNfc3IoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY192c3JoKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gdmVjX3NyKF9fYSwgX19iKTsKfQoKLyogdmVjX3ZzcncgKi8KCiNkZWZpbmUgX19idWlsdGluX2FsdGl2ZWNfdnNydyB2ZWNfdnNydwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX3ZzcncodmVjdG9yIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIHZlY19zcihfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY192c3J3KHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiB2ZWNfc3IoX19hLCBfX2IpOwp9CgovKiB2ZWNfc3JhICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19zcmEodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3Igc2lnbmVkIGNoYXIpX19idWlsdGluX2FsdGl2ZWNfdnNyYWIoKHZlY3RvciBjaGFyKV9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19zcmEodmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX3ZzcmFiKCh2ZWN0b3IgY2hhcilfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaG9ydCBfX0FUVFJTX29fYWkgdmVjX3NyYSh2ZWN0b3Igc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192c3JhaChfX2EsICh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfc3JhKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2J1aWx0aW5fYWx0aXZlY192c3JhaCgodmVjdG9yIHNob3J0KV9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX3NyYSh2ZWN0b3IgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192c3JhdyhfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19zcmEodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYnVpbHRpbl9hbHRpdmVjX3ZzcmF3KCh2ZWN0b3IgaW50KV9fYSwgX19iKTsKfQoKI2lmZGVmIF9fUE9XRVI4X1ZFQ1RPUl9fCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfc3JhKHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19hID4+IF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX3NyYSh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpKCh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2EgPj4gX19iKTsKfQojZWxpZiBkZWZpbmVkKF9fVlNYX18pCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfc3JhKHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICBfX2IgJT0gKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpKHNpemVvZih1bnNpZ25lZCBsb25nIGxvbmcpICogX19DSEFSX0JJVF9fKTsKICByZXR1cm4gX19hID4+IF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX3NyYSh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICBfX2IgJT0gKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpKHNpemVvZih1bnNpZ25lZCBsb25nIGxvbmcpICogX19DSEFSX0JJVF9fKTsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpKCh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2EgPj4gX19iKTsKfQojZW5kaWYgLyogX19WU1hfXyAqLwoKLyogdmVjX3ZzcmFiICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY192c3JhYih2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBzaWduZWQgY2hhcilfX2J1aWx0aW5fYWx0aXZlY192c3JhYigodmVjdG9yIGNoYXIpX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3ZzcmFiKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2J1aWx0aW5fYWx0aXZlY192c3JhYigodmVjdG9yIGNoYXIpX19hLCBfX2IpOwp9CgovKiB2ZWNfdnNyYWggKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3ZzcmFoKHZlY3RvciBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnNyYWgoX19hLCAodmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3ZzcmFoKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2J1aWx0aW5fYWx0aXZlY192c3JhaCgodmVjdG9yIHNob3J0KV9fYSwgX19iKTsKfQoKLyogdmVjX3ZzcmF3ICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgaW50IF9fQVRUUlNfb19haSB2ZWNfdnNyYXcodmVjdG9yIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192c3JhdyhfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY192c3Jhdyh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBpbnQpX19idWlsdGluX2FsdGl2ZWNfdnNyYXcoKHZlY3RvciBpbnQpX19hLCBfX2IpOwp9CgovKiB2ZWNfc3JsICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19zcmwodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3Igc2lnbmVkIGNoYXIpX19idWlsdGluX2FsdGl2ZWNfdnNyKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfc3JsKHZlY3RvciBzaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBzaWduZWQgY2hhcilfX2J1aWx0aW5fYWx0aXZlY192c3IoKHZlY3RvciBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19zcmwodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBzaWduZWQgY2hhcilfX2J1aWx0aW5fYWx0aXZlY192c3IoKHZlY3RvciBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3NybCh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19idWlsdGluX2FsdGl2ZWNfdnNyKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3NybCh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX3ZzcigodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19zcmwodmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19idWlsdGluX2FsdGl2ZWNfdnNyKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfc3JsKHZlY3RvciBib29sIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBib29sIGNoYXIpX19idWlsdGluX2FsdGl2ZWNfdnNyKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGNoYXIgX19BVFRSU19vX2FpCnZlY19zcmwodmVjdG9yIGJvb2wgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBib29sIGNoYXIpX19idWlsdGluX2FsdGl2ZWNfdnNyKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGNoYXIgX19BVFRSU19vX2FpCnZlY19zcmwodmVjdG9yIGJvb2wgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX3ZzcigodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY19zcmwodmVjdG9yIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIHNob3J0KV9fYnVpbHRpbl9hbHRpdmVjX3ZzcigodmVjdG9yIGludClfX2EsICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaG9ydCBfX0FUVFJTX29fYWkgdmVjX3NybCh2ZWN0b3Igc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiAodmVjdG9yIHNob3J0KV9fYnVpbHRpbl9hbHRpdmVjX3ZzcigodmVjdG9yIGludClfX2EsICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaG9ydCBfX0FUVFJTX29fYWkgdmVjX3NybCh2ZWN0b3Igc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBzaG9ydClfX2J1aWx0aW5fYWx0aXZlY192c3IoKHZlY3RvciBpbnQpX19hLCAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY19zcmwodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19idWlsdGluX2FsdGl2ZWNfdnNyKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfc3JsKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2J1aWx0aW5fYWx0aXZlY192c3IoKHZlY3RvciBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY19zcmwodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2J1aWx0aW5fYWx0aXZlY192c3IoKHZlY3RvciBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3NybCh2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIGJvb2wgc2hvcnQpX19idWlsdGluX2FsdGl2ZWNfdnNyKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3NybCh2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBib29sIHNob3J0KV9fYnVpbHRpbl9hbHRpdmVjX3ZzcigodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgc2hvcnQgX19BVFRSU19vX2FpCnZlY19zcmwodmVjdG9yIGJvb2wgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiAodmVjdG9yIGJvb2wgc2hvcnQpX19idWlsdGluX2FsdGl2ZWNfdnNyKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgcGl4ZWwgX19BVFRSU19vX2FpIHZlY19zcmwodmVjdG9yIHBpeGVsIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIHBpeGVsKV9fYnVpbHRpbl9hbHRpdmVjX3ZzcigodmVjdG9yIGludClfX2EsICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBwaXhlbCBfX0FUVFJTX29fYWkgdmVjX3NybCh2ZWN0b3IgcGl4ZWwgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiAodmVjdG9yIHBpeGVsKV9fYnVpbHRpbl9hbHRpdmVjX3ZzcigodmVjdG9yIGludClfX2EsICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBwaXhlbCBfX0FUVFJTX29fYWkgdmVjX3NybCh2ZWN0b3IgcGl4ZWwgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBwaXhlbClfX2J1aWx0aW5fYWx0aXZlY192c3IoKHZlY3RvciBpbnQpX19hLCAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgaW50IF9fQVRUUlNfb19haSB2ZWNfc3JsKHZlY3RvciBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIGludClfX2J1aWx0aW5fYWx0aXZlY192c3IoX19hLCAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgaW50IF9fQVRUUlNfb19haSB2ZWNfc3JsKHZlY3RvciBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBpbnQpX19idWlsdGluX2FsdGl2ZWNfdnNyKF9fYSwgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX3NybCh2ZWN0b3IgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiAodmVjdG9yIGludClfX2J1aWx0aW5fYWx0aXZlY192c3IoX19hLCAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfc3JsKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBpbnQpX19idWlsdGluX2FsdGl2ZWNfdnNyKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19zcmwodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBpbnQpX19idWlsdGluX2FsdGl2ZWNfdnNyKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19zcmwodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYnVpbHRpbl9hbHRpdmVjX3ZzcigodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBpbnQgX19BVFRSU19vX2FpCnZlY19zcmwodmVjdG9yIGJvb2wgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBpbnQpX19idWlsdGluX2FsdGl2ZWNfdnNyKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgaW50IF9fQVRUUlNfb19haQp2ZWNfc3JsKHZlY3RvciBib29sIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBib29sIGludClfX2J1aWx0aW5fYWx0aXZlY192c3IoKHZlY3RvciBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBpbnQgX19BVFRSU19vX2FpCnZlY19zcmwodmVjdG9yIGJvb2wgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBib29sIGludClfX2J1aWx0aW5fYWx0aXZlY192c3IoKHZlY3RvciBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgojaWZkZWYgX19WU1hfXwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX3NybCh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19idWlsdGluX2FsdGl2ZWNfdnNyKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfc3JsKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19idWlsdGluX2FsdGl2ZWNfdnNyKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgaW50KV9fYik7Cn0KI2VuZGlmCgovKiB2ZWNfdnNyICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY192c3IodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3Igc2lnbmVkIGNoYXIpX19idWlsdGluX2FsdGl2ZWNfdnNyKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfdnNyKHZlY3RvciBzaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBzaWduZWQgY2hhcilfX2J1aWx0aW5fYWx0aXZlY192c3IoKHZlY3RvciBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY192c3IodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBzaWduZWQgY2hhcilfX2J1aWx0aW5fYWx0aXZlY192c3IoKHZlY3RvciBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3Zzcih2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19idWlsdGluX2FsdGl2ZWNfdnNyKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3Zzcih2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX3ZzcigodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY192c3IodmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19idWlsdGluX2FsdGl2ZWNfdnNyKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfdnNyKHZlY3RvciBib29sIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBib29sIGNoYXIpX19idWlsdGluX2FsdGl2ZWNfdnNyKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGNoYXIgX19BVFRSU19vX2FpCnZlY192c3IodmVjdG9yIGJvb2wgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBib29sIGNoYXIpX19idWlsdGluX2FsdGl2ZWNfdnNyKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGNoYXIgX19BVFRSU19vX2FpCnZlY192c3IodmVjdG9yIGJvb2wgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX3ZzcigodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY192c3IodmVjdG9yIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIHNob3J0KV9fYnVpbHRpbl9hbHRpdmVjX3ZzcigodmVjdG9yIGludClfX2EsICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaG9ydCBfX0FUVFJTX29fYWkgdmVjX3Zzcih2ZWN0b3Igc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiAodmVjdG9yIHNob3J0KV9fYnVpbHRpbl9hbHRpdmVjX3ZzcigodmVjdG9yIGludClfX2EsICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaG9ydCBfX0FUVFJTX29fYWkgdmVjX3Zzcih2ZWN0b3Igc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBzaG9ydClfX2J1aWx0aW5fYWx0aXZlY192c3IoKHZlY3RvciBpbnQpX19hLCAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY192c3IodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19idWlsdGluX2FsdGl2ZWNfdnNyKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfdnNyKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2J1aWx0aW5fYWx0aXZlY192c3IoKHZlY3RvciBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY192c3IodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2J1aWx0aW5fYWx0aXZlY192c3IoKHZlY3RvciBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3Zzcih2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIGJvb2wgc2hvcnQpX19idWlsdGluX2FsdGl2ZWNfdnNyKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3Zzcih2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBib29sIHNob3J0KV9fYnVpbHRpbl9hbHRpdmVjX3ZzcigodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgc2hvcnQgX19BVFRSU19vX2FpCnZlY192c3IodmVjdG9yIGJvb2wgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiAodmVjdG9yIGJvb2wgc2hvcnQpX19idWlsdGluX2FsdGl2ZWNfdnNyKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgcGl4ZWwgX19BVFRSU19vX2FpIHZlY192c3IodmVjdG9yIHBpeGVsIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIHBpeGVsKV9fYnVpbHRpbl9hbHRpdmVjX3ZzcigodmVjdG9yIGludClfX2EsICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBwaXhlbCBfX0FUVFJTX29fYWkgdmVjX3Zzcih2ZWN0b3IgcGl4ZWwgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiAodmVjdG9yIHBpeGVsKV9fYnVpbHRpbl9hbHRpdmVjX3ZzcigodmVjdG9yIGludClfX2EsICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBwaXhlbCBfX0FUVFJTX29fYWkgdmVjX3Zzcih2ZWN0b3IgcGl4ZWwgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBwaXhlbClfX2J1aWx0aW5fYWx0aXZlY192c3IoKHZlY3RvciBpbnQpX19hLCAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgaW50IF9fQVRUUlNfb19haSB2ZWNfdnNyKHZlY3RvciBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIGludClfX2J1aWx0aW5fYWx0aXZlY192c3IoX19hLCAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgaW50IF9fQVRUUlNfb19haSB2ZWNfdnNyKHZlY3RvciBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBpbnQpX19idWlsdGluX2FsdGl2ZWNfdnNyKF9fYSwgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX3Zzcih2ZWN0b3IgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiAodmVjdG9yIGludClfX2J1aWx0aW5fYWx0aXZlY192c3IoX19hLCAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfdnNyKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBpbnQpX19idWlsdGluX2FsdGl2ZWNfdnNyKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY192c3IodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBpbnQpX19idWlsdGluX2FsdGl2ZWNfdnNyKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY192c3IodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYnVpbHRpbl9hbHRpdmVjX3ZzcigodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBpbnQgX19BVFRSU19vX2FpCnZlY192c3IodmVjdG9yIGJvb2wgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBpbnQpX19idWlsdGluX2FsdGl2ZWNfdnNyKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgaW50IF9fQVRUUlNfb19haQp2ZWNfdnNyKHZlY3RvciBib29sIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBib29sIGludClfX2J1aWx0aW5fYWx0aXZlY192c3IoKHZlY3RvciBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBpbnQgX19BVFRSU19vX2FpCnZlY192c3IodmVjdG9yIGJvb2wgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBib29sIGludClfX2J1aWx0aW5fYWx0aXZlY192c3IoKHZlY3RvciBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgovKiB2ZWNfc3JvICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19zcm8odmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIHNpZ25lZCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX3Zzcm8oKHZlY3RvciBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfc3JvKHZlY3RvciBzaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIHNpZ25lZCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX3Zzcm8oKHZlY3RvciBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19zcm8odmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2J1aWx0aW5fYWx0aXZlY192c3JvKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19zcm8odmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX3Zzcm8oKHZlY3RvciBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY19zcm8odmVjdG9yIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBzaG9ydClfX2J1aWx0aW5fYWx0aXZlY192c3JvKCh2ZWN0b3IgaW50KV9fYSwgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfc3JvKHZlY3RvciBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBzaG9ydClfX2J1aWx0aW5fYWx0aXZlY192c3JvKCh2ZWN0b3IgaW50KV9fYSwgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfc3JvKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2J1aWx0aW5fYWx0aXZlY192c3JvKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3Nybyh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2J1aWx0aW5fYWx0aXZlY192c3JvKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBwaXhlbCBfX0FUVFJTX29fYWkgdmVjX3Nybyh2ZWN0b3IgcGl4ZWwgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIHBpeGVsKV9fYnVpbHRpbl9hbHRpdmVjX3Zzcm8oKHZlY3RvciBpbnQpX19hLCAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgcGl4ZWwgX19BVFRSU19vX2FpIHZlY19zcm8odmVjdG9yIHBpeGVsIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIHBpeGVsKV9fYnVpbHRpbl9hbHRpdmVjX3Zzcm8oKHZlY3RvciBpbnQpX19hLCAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgaW50IF9fQVRUUlNfb19haSB2ZWNfc3JvKHZlY3RvciBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBpbnQpX19idWlsdGluX2FsdGl2ZWNfdnNybyhfX2EsICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY19zcm8odmVjdG9yIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgaW50KV9fYnVpbHRpbl9hbHRpdmVjX3Zzcm8oX19hLCAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfc3JvKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYnVpbHRpbl9hbHRpdmVjX3Zzcm8oKHZlY3RvciBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19zcm8odmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGludClfX2J1aWx0aW5fYWx0aXZlY192c3JvKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpIHZlY19zcm8odmVjdG9yIGZsb2F0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBmbG9hdClfX2J1aWx0aW5fYWx0aXZlY192c3JvKCh2ZWN0b3IgaW50KV9fYSwgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGZsb2F0IF9fQVRUUlNfb19haSB2ZWNfc3JvKHZlY3RvciBmbG9hdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBmbG9hdClfX2J1aWx0aW5fYWx0aXZlY192c3JvKCh2ZWN0b3IgaW50KV9fYSwgKHZlY3RvciBpbnQpX19iKTsKfQoKI2lmZGVmIF9fVlNYX18Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19zcm8odmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2J1aWx0aW5fYWx0aXZlY192c3JvKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19zcm8odmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYnVpbHRpbl9hbHRpdmVjX3Zzcm8oKHZlY3RvciBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfc3JvKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYnVpbHRpbl9hbHRpdmVjX3Zzcm8oKHZlY3RvciBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19zcm8odmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2J1aWx0aW5fYWx0aXZlY192c3JvKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CiNlbmRpZgoKLyogdmVjX3Zzcm8gKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3Zzcm8odmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIHNpZ25lZCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX3Zzcm8oKHZlY3RvciBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfdnNybyh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBzaWduZWQgY2hhcilfX2J1aWx0aW5fYWx0aXZlY192c3JvKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfdnNybyh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX3Zzcm8oKHZlY3RvciBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3Zzcm8odmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX3Zzcm8oKHZlY3RvciBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY192c3JvKHZlY3RvciBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIHNob3J0KV9fYnVpbHRpbl9hbHRpdmVjX3Zzcm8oKHZlY3RvciBpbnQpX19hLCAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY192c3JvKHZlY3RvciBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3Igc2hvcnQpX19idWlsdGluX2FsdGl2ZWNfdnNybygodmVjdG9yIGludClfX2EsICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3Zzcm8odmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYnVpbHRpbl9hbHRpdmVjX3Zzcm8oKHZlY3RvciBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfdnNybyh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2J1aWx0aW5fYWx0aXZlY192c3JvKCh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBwaXhlbCBfX0FUVFJTX29fYWkgdmVjX3Zzcm8odmVjdG9yIHBpeGVsIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgcGl4ZWwpX19idWlsdGluX2FsdGl2ZWNfdnNybygodmVjdG9yIGludClfX2EsICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBwaXhlbCBfX0FUVFJTX29fYWkgdmVjX3Zzcm8odmVjdG9yIHBpeGVsIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBwaXhlbClfX2J1aWx0aW5fYWx0aXZlY192c3JvKCh2ZWN0b3IgaW50KV9fYSwgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX3Zzcm8odmVjdG9yIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBpbnQpX19idWlsdGluX2FsdGl2ZWNfdnNybyhfX2EsICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY192c3JvKHZlY3RvciBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBpbnQpX19idWlsdGluX2FsdGl2ZWNfdnNybyhfX2EsICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY192c3JvKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYnVpbHRpbl9hbHRpdmVjX3Zzcm8oKHZlY3RvciBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY192c3JvKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBpbnQpX19idWlsdGluX2FsdGl2ZWNfdnNybygodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGZsb2F0IF9fQVRUUlNfb19haSB2ZWNfdnNybyh2ZWN0b3IgZmxvYXQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBmbG9hdClfX2J1aWx0aW5fYWx0aXZlY192c3JvKCh2ZWN0b3IgaW50KV9fYSwgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGZsb2F0IF9fQVRUUlNfb19haSB2ZWNfdnNybyh2ZWN0b3IgZmxvYXQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIGZsb2F0KV9fYnVpbHRpbl9hbHRpdmVjX3Zzcm8oKHZlY3RvciBpbnQpX19hLCAodmVjdG9yIGludClfX2IpOwp9CgovKiB2ZWNfc3QgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdCh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCBsb25nIF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaWduZWQgY2hhciAqX19jKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfc3R2eCgodmVjdG9yIGludClfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0KHZlY3RvciBzaWduZWQgY2hhciBfX2EsIGxvbmcgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmVkIGNoYXIgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dngoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdCh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIGxvbmcgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dngoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdCh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIGxvbmcgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqX19jKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfc3R2eCgodmVjdG9yIGludClfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0KHZlY3RvciBib29sIGNoYXIgX19hLCBsb25nIF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25lZCBjaGFyICpfX2MpIHsKICBfX2J1aWx0aW5fYWx0aXZlY19zdHZ4KCh2ZWN0b3IgaW50KV9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3QodmVjdG9yIGJvb2wgY2hhciBfX2EsIGxvbmcgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqX19jKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfc3R2eCgodmVjdG9yIGludClfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0KHZlY3RvciBib29sIGNoYXIgX19hLCBsb25nIF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGNoYXIgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dngoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdCh2ZWN0b3Igc2hvcnQgX19hLCBsb25nIF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaG9ydCAqX19jKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfc3R2eCgodmVjdG9yIGludClfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0KHZlY3RvciBzaG9ydCBfX2EsIGxvbmcgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnQgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dngoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdCh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCBsb25nIF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBzaG9ydCAqX19jKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfc3R2eCgodmVjdG9yIGludClfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0KHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIGxvbmcgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dngoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdCh2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsIGxvbmcgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnQgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dngoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdCh2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsIGxvbmcgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dngoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdCh2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsIGxvbmcgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgc2hvcnQgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dngoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdCh2ZWN0b3IgcGl4ZWwgX19hLCBsb25nIF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0ICpfX2MpIHsKICBfX2J1aWx0aW5fYWx0aXZlY19zdHZ4KCh2ZWN0b3IgaW50KV9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3QodmVjdG9yIHBpeGVsIF9fYSwgbG9uZyBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCAqX19jKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfc3R2eCgodmVjdG9yIGludClfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0KHZlY3RvciBwaXhlbCBfX2EsIGxvbmcgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHBpeGVsICpfX2MpIHsKICBfX2J1aWx0aW5fYWx0aXZlY19zdHZ4KCh2ZWN0b3IgaW50KV9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3QodmVjdG9yIGludCBfX2EsIGxvbmcgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGludCAqX19jKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfc3R2eChfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0KHZlY3RvciBpbnQgX19hLCBsb25nIF9fYiwgaW50ICpfX2MpIHsKICBfX2J1aWx0aW5fYWx0aXZlY19zdHZ4KF9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3QodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIGxvbmcgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGludCAqX19jKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfc3R2eCgodmVjdG9yIGludClfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0KHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCBsb25nIF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqX19jKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfc3R2eCgodmVjdG9yIGludClfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0KHZlY3RvciBib29sIGludCBfX2EsIGxvbmcgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpfX2MpIHsKICBfX2J1aWx0aW5fYWx0aXZlY19zdHZ4KCh2ZWN0b3IgaW50KV9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3QodmVjdG9yIGJvb2wgaW50IF9fYSwgbG9uZyBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dngoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdCh2ZWN0b3IgYm9vbCBpbnQgX19hLCBsb25nIF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGludCAqX19jKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfc3R2eCgodmVjdG9yIGludClfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0KHZlY3RvciBmbG9hdCBfX2EsIGxvbmcgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGZsb2F0ICpfX2MpIHsKICBfX2J1aWx0aW5fYWx0aXZlY19zdHZ4KCh2ZWN0b3IgaW50KV9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3QodmVjdG9yIGZsb2F0IF9fYSwgbG9uZyBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCAqX19jKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfc3R2eCgodmVjdG9yIGludClfX2EsIF9fYiwgX19jKTsKfQoKLyogdmVjX3N0dnggKi8KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZ4KHZlY3RvciBzaWduZWQgY2hhciBfX2EsIGxvbmcgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2lnbmVkIGNoYXIgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dngoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZ4KHZlY3RvciBzaWduZWQgY2hhciBfX2EsIGxvbmcgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduZWQgY2hhciAqX19jKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfc3R2eCgodmVjdG9yIGludClfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dngodmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCBsb25nIF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dngoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZ4KHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgbG9uZyBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dngoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZ4KHZlY3RvciBib29sIGNoYXIgX19hLCBsb25nIF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmVkIGNoYXIgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dngoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZ4KHZlY3RvciBib29sIGNoYXIgX19hLCBsb25nIF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqX19jKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfc3R2eCgodmVjdG9yIGludClfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dngodmVjdG9yIGJvb2wgY2hhciBfX2EsIGxvbmcgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBjaGFyICpfX2MpIHsKICBfX2J1aWx0aW5fYWx0aXZlY19zdHZ4KCh2ZWN0b3IgaW50KV9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3R2eCh2ZWN0b3Igc2hvcnQgX19hLCBsb25nIF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNob3J0ICpfX2MpIHsKICBfX2J1aWx0aW5fYWx0aXZlY19zdHZ4KCh2ZWN0b3IgaW50KV9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3R2eCh2ZWN0b3Igc2hvcnQgX19hLCBsb25nIF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnQgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dngoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZ4KHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIGxvbmcgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dngoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZ4KHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIGxvbmcgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCAqX19jKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfc3R2eCgodmVjdG9yIGludClfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dngodmVjdG9yIGJvb2wgc2hvcnQgX19hLCBsb25nIF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnQgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dngoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZ4KHZlY3RvciBib29sIHNob3J0IF9fYSwgbG9uZyBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0ICpfX2MpIHsKICBfX2J1aWx0aW5fYWx0aXZlY19zdHZ4KCh2ZWN0b3IgaW50KV9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3R2eCh2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsIGxvbmcgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBzaG9ydCAqX19jKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfc3R2eCgodmVjdG9yIGludClfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dngodmVjdG9yIHBpeGVsIF9fYSwgbG9uZyBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0ICpfX2MpIHsKICBfX2J1aWx0aW5fYWx0aXZlY19zdHZ4KCh2ZWN0b3IgaW50KV9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3R2eCh2ZWN0b3IgcGl4ZWwgX19hLCBsb25nIF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dngoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZ4KHZlY3RvciBwaXhlbCBfX2EsIGxvbmcgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgcGl4ZWwgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dngoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZ4KHZlY3RvciBpbnQgX19hLCBsb25nIF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGludCAqX19jKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfc3R2eChfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dngodmVjdG9yIGludCBfX2EsIGxvbmcgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dngoX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZ4KHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCBsb25nIF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGludCAqX19jKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfc3R2eCgodmVjdG9yIGludClfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dngodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIGxvbmcgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dngoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZ4KHZlY3RvciBib29sIGludCBfX2EsIGxvbmcgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dngoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZ4KHZlY3RvciBib29sIGludCBfX2EsIGxvbmcgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dngoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZ4KHZlY3RvciBib29sIGludCBfX2EsIGxvbmcgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBpbnQgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dngoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZ4KHZlY3RvciBmbG9hdCBfX2EsIGxvbmcgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgZmxvYXQgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dngoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZ4KHZlY3RvciBmbG9hdCBfX2EsIGxvbmcgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCAqX19jKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfc3R2eCgodmVjdG9yIGludClfX2EsIF9fYiwgX19jKTsKfQoKLyogdmVjX3N0ZSAqLwoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0ZSh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCBsb25nIF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduZWQgY2hhciAqX19jKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfc3R2ZWJ4KCh2ZWN0b3IgY2hhcilfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0ZSh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIGxvbmcgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dmVieCgodmVjdG9yIGNoYXIpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdGUodmVjdG9yIGJvb2wgY2hhciBfX2EsIGxvbmcgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25lZCBjaGFyICpfX2MpIHsKICBfX2J1aWx0aW5fYWx0aXZlY19zdHZlYngoKHZlY3RvciBjaGFyKV9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3RlKHZlY3RvciBib29sIGNoYXIgX19hLCBsb25nIF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpfX2MpIHsKICBfX2J1aWx0aW5fYWx0aXZlY19zdHZlYngoKHZlY3RvciBjaGFyKV9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3RlKHZlY3RvciBzaG9ydCBfX2EsIGxvbmcgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0ICpfX2MpIHsKICBfX2J1aWx0aW5fYWx0aXZlY19zdHZlaHgoX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdGUodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgbG9uZyBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dmVoeCgodmVjdG9yIHNob3J0KV9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3RlKHZlY3RvciBib29sIHNob3J0IF9fYSwgbG9uZyBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnQgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dmVoeCgodmVjdG9yIHNob3J0KV9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3RlKHZlY3RvciBib29sIHNob3J0IF9fYSwgbG9uZyBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dmVoeCgodmVjdG9yIHNob3J0KV9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3RlKHZlY3RvciBwaXhlbCBfX2EsIGxvbmcgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0ICpfX2MpIHsKICBfX2J1aWx0aW5fYWx0aXZlY19zdHZlaHgoKHZlY3RvciBzaG9ydClfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0ZSh2ZWN0b3IgcGl4ZWwgX19hLCBsb25nIF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCAqX19jKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfc3R2ZWh4KCh2ZWN0b3Igc2hvcnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdGUodmVjdG9yIGludCBfX2EsIGxvbmcgX19iLCBpbnQgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dmV3eChfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0ZSh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgbG9uZyBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICpfX2MpIHsKICBfX2J1aWx0aW5fYWx0aXZlY19zdHZld3goKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdGUodmVjdG9yIGJvb2wgaW50IF9fYSwgbG9uZyBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpfX2MpIHsKICBfX2J1aWx0aW5fYWx0aXZlY19zdHZld3goKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdGUodmVjdG9yIGJvb2wgaW50IF9fYSwgbG9uZyBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICpfX2MpIHsKICBfX2J1aWx0aW5fYWx0aXZlY19zdHZld3goKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdGUodmVjdG9yIGZsb2F0IF9fYSwgbG9uZyBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dmV3eCgodmVjdG9yIGludClfX2EsIF9fYiwgX19jKTsKfQoKLyogdmVjX3N0dmVieCAqLwoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dmVieCh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCBsb25nIF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduZWQgY2hhciAqX19jKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfc3R2ZWJ4KCh2ZWN0b3IgY2hhcilfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dmVieCh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBfX2IsIHVuc2lnbmVkIGNoYXIgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dmVieCgodmVjdG9yIGNoYXIpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZlYngodmVjdG9yIGJvb2wgY2hhciBfX2EsIGxvbmcgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25lZCBjaGFyICpfX2MpIHsKICBfX2J1aWx0aW5fYWx0aXZlY19zdHZlYngoKHZlY3RvciBjaGFyKV9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3R2ZWJ4KHZlY3RvciBib29sIGNoYXIgX19hLCBsb25nIF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpfX2MpIHsKICBfX2J1aWx0aW5fYWx0aXZlY19zdHZlYngoKHZlY3RvciBjaGFyKV9fYSwgX19iLCBfX2MpOwp9CgovKiB2ZWNfc3R2ZWh4ICovCgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3R2ZWh4KHZlY3RvciBzaG9ydCBfX2EsIGxvbmcgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0ICpfX2MpIHsKICBfX2J1aWx0aW5fYWx0aXZlY19zdHZlaHgoX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZlaHgodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIF9fYiwgdW5zaWduZWQgc2hvcnQgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dmVoeCgodmVjdG9yIHNob3J0KV9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3R2ZWh4KHZlY3RvciBib29sIHNob3J0IF9fYSwgbG9uZyBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnQgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dmVoeCgodmVjdG9yIHNob3J0KV9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3R2ZWh4KHZlY3RvciBib29sIHNob3J0IF9fYSwgbG9uZyBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dmVoeCgodmVjdG9yIHNob3J0KV9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3R2ZWh4KHZlY3RvciBwaXhlbCBfX2EsIGxvbmcgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0ICpfX2MpIHsKICBfX2J1aWx0aW5fYWx0aXZlY19zdHZlaHgoKHZlY3RvciBzaG9ydClfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dmVoeCh2ZWN0b3IgcGl4ZWwgX19hLCBsb25nIF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCAqX19jKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfc3R2ZWh4KCh2ZWN0b3Igc2hvcnQpX19hLCBfX2IsIF9fYyk7Cn0KCi8qIHZlY19zdHZld3ggKi8KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZld3godmVjdG9yIGludCBfX2EsIGxvbmcgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqX19jKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfc3R2ZXd4KF9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3R2ZXd4KHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCBsb25nIF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dmV3eCgodmVjdG9yIGludClfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dmV3eCh2ZWN0b3IgYm9vbCBpbnQgX19hLCBsb25nIF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dmV3eCgodmVjdG9yIGludClfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dmV3eCh2ZWN0b3IgYm9vbCBpbnQgX19hLCBsb25nIF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dmV3eCgodmVjdG9yIGludClfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dmV3eCh2ZWN0b3IgZmxvYXQgX19hLCBsb25nIF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCAqX19jKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfc3R2ZXd4KCh2ZWN0b3IgaW50KV9fYSwgX19iLCBfX2MpOwp9CgovKiB2ZWNfc3RsICovCgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3RsKHZlY3RvciBzaWduZWQgY2hhciBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNpZ25lZCBjaGFyICpfX2MpIHsKICBfX2J1aWx0aW5fYWx0aXZlY19zdHZ4bCgodmVjdG9yIGludClfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0bCh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25lZCBjaGFyICpfX2MpIHsKICBfX2J1aWx0aW5fYWx0aXZlY19zdHZ4bCgodmVjdG9yIGludClfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0bCh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dnhsKCh2ZWN0b3IgaW50KV9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3RsKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpfX2MpIHsKICBfX2J1aWx0aW5fYWx0aXZlY19zdHZ4bCgodmVjdG9yIGludClfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0bCh2ZWN0b3IgYm9vbCBjaGFyIF9fYSwgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduZWQgY2hhciAqX19jKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfc3R2eGwoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdGwodmVjdG9yIGJvb2wgY2hhciBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqX19jKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfc3R2eGwoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdGwodmVjdG9yIGJvb2wgY2hhciBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgY2hhciAqX19jKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfc3R2eGwoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdGwodmVjdG9yIHNob3J0IF9fYSwgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2hvcnQgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dnhsKCh2ZWN0b3IgaW50KV9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3RsKHZlY3RvciBzaG9ydCBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnQgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dnhsKCh2ZWN0b3IgaW50KV9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3RsKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIHNob3J0ICpfX2MpIHsKICBfX2J1aWx0aW5fYWx0aXZlY19zdHZ4bCgodmVjdG9yIGludClfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0bCh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0ICpfX2MpIHsKICBfX2J1aWx0aW5fYWx0aXZlY19zdHZ4bCgodmVjdG9yIGludClfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0bCh2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnQgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dnhsKCh2ZWN0b3IgaW50KV9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3RsKHZlY3RvciBib29sIHNob3J0IF9fYSwgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCAqX19jKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfc3R2eGwoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdGwodmVjdG9yIGJvb2wgc2hvcnQgX19hLCBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIHNob3J0ICpfX2MpIHsKICBfX2J1aWx0aW5fYWx0aXZlY19zdHZ4bCgodmVjdG9yIGludClfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0bCh2ZWN0b3IgcGl4ZWwgX19hLCBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0ICpfX2MpIHsKICBfX2J1aWx0aW5fYWx0aXZlY19zdHZ4bCgodmVjdG9yIGludClfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0bCh2ZWN0b3IgcGl4ZWwgX19hLCBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0ICpfX2MpIHsKICBfX2J1aWx0aW5fYWx0aXZlY19zdHZ4bCgodmVjdG9yIGludClfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0bCh2ZWN0b3IgcGl4ZWwgX19hLCBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBwaXhlbCAqX19jKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfc3R2eGwoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdGwodmVjdG9yIGludCBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGludCAqX19jKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfc3R2eGwoX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdGwodmVjdG9yIGludCBfX2EsIGludCBfX2IsIGludCAqX19jKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfc3R2eGwoX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdGwodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGludCAqX19jKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfc3R2eGwoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdGwodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICpfX2MpIHsKICBfX2J1aWx0aW5fYWx0aXZlY19zdHZ4bCgodmVjdG9yIGludClfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0bCh2ZWN0b3IgYm9vbCBpbnQgX19hLCBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqX19jKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfc3R2eGwoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdGwodmVjdG9yIGJvb2wgaW50IF9fYSwgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dnhsKCh2ZWN0b3IgaW50KV9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3RsKHZlY3RvciBib29sIGludCBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgaW50ICpfX2MpIHsKICBfX2J1aWx0aW5fYWx0aXZlY19zdHZ4bCgodmVjdG9yIGludClfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0bCh2ZWN0b3IgZmxvYXQgX19hLCBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBmbG9hdCAqX19jKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfc3R2eGwoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdGwodmVjdG9yIGZsb2F0IF9fYSwgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCAqX19jKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfc3R2eGwoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCi8qIHZlY19zdHZ4bCAqLwoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dnhsKHZlY3RvciBzaWduZWQgY2hhciBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2lnbmVkIGNoYXIgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dnhsKCh2ZWN0b3IgaW50KV9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3R2eGwodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25lZCBjaGFyICpfX2MpIHsKICBfX2J1aWx0aW5fYWx0aXZlY19zdHZ4bCgodmVjdG9yIGludClfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dnhsKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyICpfX2MpIHsKICBfX2J1aWx0aW5fYWx0aXZlY19zdHZ4bCgodmVjdG9yIGludClfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dnhsKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dnhsKCh2ZWN0b3IgaW50KV9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3R2eGwodmVjdG9yIGJvb2wgY2hhciBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduZWQgY2hhciAqX19jKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfc3R2eGwoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZ4bCh2ZWN0b3IgYm9vbCBjaGFyIF9fYSwgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dnhsKCh2ZWN0b3IgaW50KV9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3R2eGwodmVjdG9yIGJvb2wgY2hhciBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBjaGFyICpfX2MpIHsKICBfX2J1aWx0aW5fYWx0aXZlY19zdHZ4bCgodmVjdG9yIGludClfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dnhsKHZlY3RvciBzaG9ydCBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2hvcnQgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dnhsKCh2ZWN0b3IgaW50KV9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3R2eGwodmVjdG9yIHNob3J0IF9fYSwgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0ICpfX2MpIHsKICBfX2J1aWx0aW5fYWx0aXZlY19zdHZ4bCgodmVjdG9yIGludClfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dnhsKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIHNob3J0ICpfX2MpIHsKICBfX2J1aWx0aW5fYWx0aXZlY19zdHZ4bCgodmVjdG9yIGludClfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dnhsKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iLCB1bnNpZ25lZCBzaG9ydCAqX19jKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfc3R2eGwoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZ4bCh2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG9ydCAqX19jKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfc3R2eGwoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZ4bCh2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCAqX19jKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfc3R2eGwoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZ4bCh2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBzaG9ydCAqX19jKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfc3R2eGwoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZ4bCh2ZWN0b3IgcGl4ZWwgX19hLCBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnQgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dnhsKCh2ZWN0b3IgaW50KV9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3R2eGwodmVjdG9yIHBpeGVsIF9fYSwgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0ICpfX2MpIHsKICBfX2J1aWx0aW5fYWx0aXZlY19zdHZ4bCgodmVjdG9yIGludClfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dnhsKHZlY3RvciBwaXhlbCBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgcGl4ZWwgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dnhsKCh2ZWN0b3IgaW50KV9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3R2eGwodmVjdG9yIGludCBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgaW50ICpfX2MpIHsKICBfX2J1aWx0aW5fYWx0aXZlY19zdHZ4bChfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dnhsKHZlY3RvciBpbnQgX19hLCBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpfX2MpIHsKICBfX2J1aWx0aW5fYWx0aXZlY19zdHZ4bChfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dnhsKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGludCAqX19jKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfc3R2eGwoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZ4bCh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqX19jKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfc3R2eGwoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZ4bCh2ZWN0b3IgYm9vbCBpbnQgX19hLCBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpfX2MpIHsKICBfX2J1aWx0aW5fYWx0aXZlY19zdHZ4bCgodmVjdG9yIGludClfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dnhsKHZlY3RvciBib29sIGludCBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKl9fYykgewogIF9fYnVpbHRpbl9hbHRpdmVjX3N0dnhsKCh2ZWN0b3IgaW50KV9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3R2eGwodmVjdG9yIGJvb2wgaW50IF9fYSwgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGludCAqX19jKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfc3R2eGwoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZ4bCh2ZWN0b3IgZmxvYXQgX19hLCBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGZsb2F0ICpfX2MpIHsKICBfX2J1aWx0aW5fYWx0aXZlY19zdHZ4bCgodmVjdG9yIGludClfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dnhsKHZlY3RvciBmbG9hdCBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCAqX19jKSB7CiAgX19idWlsdGluX2FsdGl2ZWNfc3R2eGwoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCi8qIHZlY19zdWIgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3N1Yih2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYSAtIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfc3ViKHZlY3RvciBib29sIGNoYXIgX19hLCB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3Igc2lnbmVkIGNoYXIpX19hIC0gX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19zdWIodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIGJvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gX19hIC0gKHZlY3RvciBzaWduZWQgY2hhcilfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfc3ViKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYSAtIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19zdWIodmVjdG9yIGJvb2wgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hIC0gX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3N1Yih2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciBib29sIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYSAtICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaG9ydCBfX0FUVFJTX29fYWkgdmVjX3N1Yih2ZWN0b3Igc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNob3J0IF9fYikgewogIHJldHVybiBfX2EgLSBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaG9ydCBfX0FUVFJTX29fYWkgdmVjX3N1Yih2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2hvcnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3Igc2hvcnQpX19hIC0gX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY19zdWIodmVjdG9yIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIHNob3J0IF9fYikgewogIHJldHVybiBfX2EgLSAodmVjdG9yIHNob3J0KV9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfc3ViKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19hIC0gX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY19zdWIodmVjdG9yIGJvb2wgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19hIC0gX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY19zdWIodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIGJvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYSAtICh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgaW50IF9fQVRUUlNfb19haSB2ZWNfc3ViKHZlY3RvciBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYSAtIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX3N1Yih2ZWN0b3IgYm9vbCBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBpbnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgaW50KV9fYSAtIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX3N1Yih2ZWN0b3IgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYSAtICh2ZWN0b3IgaW50KV9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX3N1Yih2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19hIC0gX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfc3ViKHZlY3RvciBib29sIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYSAtIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX3N1Yih2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIGJvb2wgaW50IF9fYikgewogIHJldHVybiBfX2EgLSAodmVjdG9yIHVuc2lnbmVkIGludClfX2I7Cn0KCiNpZiBkZWZpbmVkKF9fUE9XRVI4X1ZFQ1RPUl9fKSAmJiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pICYmICAgICAgICAgICAgICAgICAgICBcCiAgICBkZWZpbmVkKF9fU0laRU9GX0lOVDEyOF9fKQpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fQVRUUlNfb19haQp2ZWNfc3ViKHZlY3RvciBzaWduZWQgX19pbnQxMjggX19hLCB2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fYikgewogIHJldHVybiBfX2EgLSBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCBfX0FUVFJTX29fYWkKdmVjX3N1Yih2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19hLCB2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19iKSB7CiAgcmV0dXJuIF9fYSAtIF9fYjsKfQojZW5kaWYgLy8gZGVmaW5lZChfX1BPV0VSOF9WRUNUT1JfXykgJiYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKSAmJgogICAgICAgLy8gZGVmaW5lZChfX1NJWkVPRl9JTlQxMjhfXykKCiNpZmRlZiBfX1ZTWF9fCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfc3ViKHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYSAtIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX3N1Yih2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19hIC0gX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZG91YmxlIF9fQVRUUlNfb19haSB2ZWNfc3ViKHZlY3RvciBkb3VibGUgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBkb3VibGUgX19iKSB7CiAgcmV0dXJuIF9fYSAtIF9fYjsKfQojZW5kaWYKCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkgdmVjX3N1Yih2ZWN0b3IgZmxvYXQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGZsb2F0IF9fYikgewogIHJldHVybiBfX2EgLSBfX2I7Cn0KCi8qIHZlY192c3VidWJtICovCgojZGVmaW5lIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdWJ1Ym0gdmVjX3ZzdWJ1Ym0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3ZzdWJ1Ym0odmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2EgLSBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3ZzdWJ1Ym0odmVjdG9yIGJvb2wgY2hhciBfX2EsIHZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBzaWduZWQgY2hhcilfX2EgLSBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3ZzdWJ1Ym0odmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIGJvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gX19hIC0gKHZlY3RvciBzaWduZWQgY2hhcilfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfdnN1YnVibSh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2EgLSBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfdnN1YnVibSh2ZWN0b3IgYm9vbCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EgLSBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfdnN1YnVibSh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciBib29sIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYSAtICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2I7Cn0KCi8qIHZlY192c3VidWhtICovCgojZGVmaW5lIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdWJ1aG0gdmVjX3ZzdWJ1aG0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaG9ydCBfX0FUVFJTX29fYWkgdmVjX3ZzdWJ1aG0odmVjdG9yIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYSAtIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfdnN1YnVobSh2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNob3J0IF9fYikgewogIHJldHVybiAodmVjdG9yIHNob3J0KV9fYSAtIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfdnN1YnVobSh2ZWN0b3Igc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIHNob3J0IF9fYikgewogIHJldHVybiBfX2EgLSAodmVjdG9yIHNob3J0KV9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfdnN1YnVobSh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYSAtIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfdnN1YnVobSh2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2EgLSBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3ZzdWJ1aG0odmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIGJvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYSAtICh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19iOwp9CgovKiB2ZWNfdnN1YnV3bSAqLwoKI2RlZmluZSBfX2J1aWx0aW5fYWx0aXZlY192c3VidXdtIHZlY192c3VidXdtCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgaW50IF9fQVRUUlNfb19haSB2ZWNfdnN1YnV3bSh2ZWN0b3IgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGludCBfX2IpIHsKICByZXR1cm4gX19hIC0gX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgaW50IF9fQVRUUlNfb19haSB2ZWNfdnN1YnV3bSh2ZWN0b3IgYm9vbCBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgaW50IF9fYikgewogIHJldHVybiAodmVjdG9yIGludClfX2EgLSBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY192c3VidXdtKHZlY3RvciBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYSAtICh2ZWN0b3IgaW50KV9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX3ZzdWJ1d20odmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYSAtIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX3ZzdWJ1d20odmVjdG9yIGJvb2wgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBpbnQpX19hIC0gX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfdnN1YnV3bSh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIGJvb2wgaW50IF9fYikgewogIHJldHVybiBfX2EgLSAodmVjdG9yIHVuc2lnbmVkIGludClfX2I7Cn0KCi8qIHZlY192c3ViZnAgKi8KCiNkZWZpbmUgX19idWlsdGluX2FsdGl2ZWNfdnN1YmZwIHZlY192c3ViZnAKCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCnZlY192c3ViZnAodmVjdG9yIGZsb2F0IF9fYSwgdmVjdG9yIGZsb2F0IF9fYikgewogIHJldHVybiBfX2EgLSBfX2I7Cn0KCi8qIHZlY19zdWJjICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX3N1YmModmVjdG9yIHNpZ25lZCBpbnQgX19hLCB2ZWN0b3Igc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gKHZlY3RvciBzaWduZWQgaW50KV9fYnVpbHRpbl9hbHRpdmVjX3ZzdWJjdXcoKHZlY3RvciB1bnNpZ25lZCBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIGludCkgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX3N1YmModmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdWJjdXcoX19hLCBfX2IpOwp9CgojaWZkZWYgX19QT1dFUjhfVkVDVE9SX18KI2lmZGVmIF9fU0laRU9GX0lOVDEyOF9fCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCBfX0FUVFJTX29fYWkKdmVjX3N1YmModmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fYSwgdmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192c3ViY3VxKF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBfX2ludDEyOCBfX0FUVFJTX29fYWkKdmVjX3N1YmModmVjdG9yIHNpZ25lZCBfX2ludDEyOCBfX2EsIHZlY3RvciBzaWduZWQgX19pbnQxMjggX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdWJjdXEoX19hLCBfX2IpOwp9CiNlbmRpZgoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQp2ZWNfc3ViY191MTI4KHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2J1aWx0aW5fYWx0aXZlY192c3ViY3VxKF9fYSwgX19iKTsKfQojZW5kaWYgLy8gX19QT1dFUjhfVkVDVE9SX18KCi8qIHZlY192c3ViY3V3ICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKdmVjX3ZzdWJjdXcodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdWJjdXcoX19hLCBfX2IpOwp9CgovKiB2ZWNfc3VicyAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfc3Vicyh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdWJzYnMoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19zdWJzKHZlY3RvciBib29sIGNoYXIgX19hLCB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdWJzYnMoKHZlY3RvciBzaWduZWQgY2hhcilfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3N1YnModmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIGJvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnN1YnNicyhfX2EsICh2ZWN0b3Igc2lnbmVkIGNoYXIpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19zdWJzKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdWJ1YnMoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3N1YnModmVjdG9yIGJvb2wgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192c3VidWJzKCh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfc3Vicyh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciBib29sIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdWJ1YnMoX19hLCAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfc3Vicyh2ZWN0b3Igc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnN1YnNocyhfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaG9ydCBfX0FUVFJTX29fYWkgdmVjX3N1YnModmVjdG9yIGJvb2wgc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnN1YnNocygodmVjdG9yIHNob3J0KV9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfc3Vicyh2ZWN0b3Igc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192c3Vic2hzKF9fYSwgKHZlY3RvciBzaG9ydClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY19zdWJzKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnN1YnVocyhfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3N1YnModmVjdG9yIGJvb2wgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdWJ1aHMoKHZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3N1YnModmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIGJvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdWJ1aHMoX19hLCAodmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY19zdWJzKHZlY3RvciBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192c3Vic3dzKF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX3N1YnModmVjdG9yIGJvb2wgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnN1YnN3cygodmVjdG9yIGludClfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY19zdWJzKHZlY3RvciBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdWJzd3MoX19hLCAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfc3Vicyh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnN1YnV3cyhfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19zdWJzKHZlY3RvciBib29sIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdWJ1d3MoKHZlY3RvciB1bnNpZ25lZCBpbnQpX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfc3Vicyh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIGJvb2wgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192c3VidXdzKF9fYSwgKHZlY3RvciB1bnNpZ25lZCBpbnQpX19iKTsKfQoKLyogdmVjX3ZzdWJzYnMgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3ZzdWJzYnModmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192c3Vic2JzKF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfdnN1YnNicyh2ZWN0b3IgYm9vbCBjaGFyIF9fYSwgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192c3Vic2JzKCh2ZWN0b3Igc2lnbmVkIGNoYXIpX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY192c3Vic2JzKHZlY3RvciBzaWduZWQgY2hhciBfX2EsIHZlY3RvciBib29sIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdWJzYnMoX19hLCAodmVjdG9yIHNpZ25lZCBjaGFyKV9fYik7Cn0KCi8qIHZlY192c3VidWJzICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3ZzdWJ1YnModmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnN1YnVicyhfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfdnN1YnVicyh2ZWN0b3IgYm9vbCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdWJ1YnMoKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY192c3VidWJzKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIGJvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnN1YnVicyhfX2EsICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgovKiB2ZWNfdnN1YnNocyAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfdnN1YnNocyh2ZWN0b3Igc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnN1YnNocyhfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaG9ydCBfX0FUVFJTX29fYWkgdmVjX3ZzdWJzaHModmVjdG9yIGJvb2wgc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnN1YnNocygodmVjdG9yIHNob3J0KV9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfdnN1YnNocyh2ZWN0b3Igc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192c3Vic2hzKF9fYSwgKHZlY3RvciBzaG9ydClfX2IpOwp9CgovKiB2ZWNfdnN1YnVocyAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfdnN1YnVocyh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdWJ1aHMoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY192c3VidWhzKHZlY3RvciBib29sIHNob3J0IF9fYSwgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192c3VidWhzKCh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY192c3VidWhzKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciBib29sIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192c3VidWhzKF9fYSwgKHZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2IpOwp9CgovKiB2ZWNfdnN1YnN3cyAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX3ZzdWJzd3ModmVjdG9yIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdWJzd3MoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgaW50IF9fQVRUUlNfb19haSB2ZWNfdnN1YnN3cyh2ZWN0b3IgYm9vbCBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192c3Vic3dzKCh2ZWN0b3IgaW50KV9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX3ZzdWJzd3ModmVjdG9yIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnN1YnN3cyhfX2EsICh2ZWN0b3IgaW50KV9fYik7Cn0KCi8qIHZlY192c3VidXdzICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfdnN1YnV3cyh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnN1YnV3cyhfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY192c3VidXdzKHZlY3RvciBib29sIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdWJ1d3MoKHZlY3RvciB1bnNpZ25lZCBpbnQpX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfdnN1YnV3cyh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIGJvb2wgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192c3VidXdzKF9fYSwgKHZlY3RvciB1bnNpZ25lZCBpbnQpX19iKTsKfQoKI2lmZGVmIF9fUE9XRVI4X1ZFQ1RPUl9fCi8qIHZlY192c3VidXFtICovCgojaWZkZWYgX19TSVpFT0ZfSU5UMTI4X18Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBfX2ludDEyOCBfX0FUVFJTX29fYWkKdmVjX3ZzdWJ1cW0odmVjdG9yIHNpZ25lZCBfX2ludDEyOCBfX2EsIHZlY3RvciBzaWduZWQgX19pbnQxMjggX19iKSB7CiAgcmV0dXJuIF9fYSAtIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fQVRUUlNfb19haQp2ZWNfdnN1YnVxbSh2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19hLCB2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19iKSB7CiAgcmV0dXJuIF9fYSAtIF9fYjsKfQojZW5kaWYKCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKdmVjX3N1Yl91MTI4KHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdWJ1cW0oX19hLCBfX2IpOwp9CgovKiB2ZWNfdnN1YmV1cW0gKi8KCiNpZmRlZiBfX1NJWkVPRl9JTlQxMjhfXwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fQVRUUlNfb19haQp2ZWNfdnN1YmV1cW0odmVjdG9yIHNpZ25lZCBfX2ludDEyOCBfX2EsIHZlY3RvciBzaWduZWQgX19pbnQxMjggX19iLAogICAgICAgICAgICAgdmVjdG9yIHNpZ25lZCBfX2ludDEyOCBfX2MpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnN1YmV1cW0oX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCBfX0FUVFJTX29fYWkKdmVjX3ZzdWJldXFtKHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCBfX2EsIHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCBfX2IsCiAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19jKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdWJldXFtKF9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fQVRUUlNfb19haQp2ZWNfc3ViZSh2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fYSwgdmVjdG9yIHNpZ25lZCBfX2ludDEyOCBfX2IsCiAgICAgICAgICAgICB2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192c3ViZXVxbShfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fQVRUUlNfb19haQp2ZWNfc3ViZSh2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19hLCB2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19iLAogICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192c3ViZXVxbShfX2EsIF9fYiwgX19jKTsKfQojZW5kaWYKCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKdmVjX3N1YmVfdTEyOCh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYiwKICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2MpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX3ZzdWJldXFtKF9fYSwgX19iLCBfX2MpOwp9CgovKiB2ZWNfdnN1YmN1cSAqLwoKI2lmZGVmIF9fU0laRU9GX0lOVDEyOF9fCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgX19pbnQxMjggX19BVFRSU19vX2FpCnZlY192c3ViY3VxKHZlY3RvciBzaWduZWQgX19pbnQxMjggX19hLCB2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192c3ViY3VxKF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fQVRUUlNfb19haQp2ZWNfdnN1YmN1cSh2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19hLCB2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdWJjdXEoX19hLCBfX2IpOwp9CgovKiB2ZWNfdnN1YmVjdXEgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgX19pbnQxMjggX19BVFRSU19vX2FpCnZlY192c3ViZWN1cSh2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fYSwgdmVjdG9yIHNpZ25lZCBfX2ludDEyOCBfX2IsCiAgICAgICAgICAgICB2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192c3ViZWN1cShfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fQVRUUlNfb19haQp2ZWNfdnN1YmVjdXEodmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fYSwgdmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fYiwKICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCBfX2MpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnN1YmVjdXEoX19hLCBfX2IsIF9fYyk7Cn0KI2VuZGlmCgojaWZkZWYgX19wb3dlcnBjNjRfXwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX3N1YmVjKHZlY3RvciBzaWduZWQgaW50IF9fYSwgdmVjdG9yIHNpZ25lZCBpbnQgX19iLAogICAgICAgICAgICAgdmVjdG9yIHNpZ25lZCBpbnQgX19jKSB7CiAgcmV0dXJuIHZlY19hZGRlYyhfX2EsIH5fX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19zdWJlYyh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IsCiAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYykgewogIHJldHVybiB2ZWNfYWRkZWMoX19hLCB+X19iLCBfX2MpOwp9CiNlbmRpZgoKI2lmZGVmIF9fU0laRU9GX0lOVDEyOF9fCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgX19pbnQxMjggX19BVFRSU19vX2FpCnZlY19zdWJlYyh2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fYSwgdmVjdG9yIHNpZ25lZCBfX2ludDEyOCBfX2IsCiAgICAgICAgICAgICB2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192c3ViZWN1cShfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fQVRUUlNfb19haQp2ZWNfc3ViZWModmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fYSwgdmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fYiwKICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCBfX2MpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnN1YmVjdXEoX19hLCBfX2IsIF9fYyk7Cn0KI2VuZGlmCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCnZlY19zdWJlY191MTI4KHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iLAogICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2MpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYnVpbHRpbl9hbHRpdmVjX3ZzdWJlY3VxKF9fYSwgX19iLCBfX2MpOwp9CiNlbmRpZiAvLyBfX1BPV0VSOF9WRUNUT1JfXwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19zdWJlKHZlY3RvciBzaWduZWQgaW50IF9fYSwgdmVjdG9yIHNpZ25lZCBpbnQgX19iLAogICAgICAgICB2ZWN0b3Igc2lnbmVkIGludCBfX2MpIHsKICB2ZWN0b3Igc2lnbmVkIGludCBfX21hc2sgPSB7MSwgMSwgMSwgMX07CiAgdmVjdG9yIHNpZ25lZCBpbnQgX19jYXJyeSA9IF9fYyAmIF9fbWFzazsKICByZXR1cm4gdmVjX2FkZGUoX19hLCB+X19iLCBfX2NhcnJ5KTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX3N1YmUodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iLAogICAgICAgICB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYykgewogIHZlY3RvciB1bnNpZ25lZCBpbnQgX19tYXNrID0gezEsIDEsIDEsIDF9OwogIHZlY3RvciB1bnNpZ25lZCBpbnQgX19jYXJyeSA9IF9fYyAmIF9fbWFzazsKICByZXR1cm4gdmVjX2FkZGUoX19hLCB+X19iLCBfX2NhcnJ5KTsKfQovKiB2ZWNfc3VtNHMgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY19zdW00cyh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnN1bTRzYnMoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfc3VtNHModmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192c3VtNHVicyhfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY19zdW00cyh2ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdW00c2hzKF9fYSwgX19iKTsKfQoKLyogdmVjX3ZzdW00c2JzICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgaW50IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKdmVjX3ZzdW00c2JzKHZlY3RvciBzaWduZWQgY2hhciBfX2EsIHZlY3RvciBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdW00c2JzKF9fYSwgX19iKTsKfQoKLyogdmVjX3ZzdW00dWJzICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKdmVjX3ZzdW00dWJzKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnN1bTR1YnMoX19hLCBfX2IpOwp9CgovKiB2ZWNfdnN1bTRzaHMgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQp2ZWNfdnN1bTRzaHModmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdW00c2hzKF9fYSwgX19iKTsKfQoKLyogdmVjX3N1bTJzICovCgovKiBUaGUgdnN1bTJzd3MgaW5zdHJ1Y3Rpb24gaGFzIGEgYmlnLWVuZGlhbiBiaWFzLCBzbyB0aGF0IHRoZSBzZWNvbmQKICAgaW5wdXQgdmVjdG9yIGFuZCB0aGUgcmVzdWx0IGFsd2F5cyByZWZlcmVuY2UgYmlnLWVuZGlhbiBlbGVtZW50cwogICAxIGFuZCAzIChsaXR0bGUtZW5kaWFuIGVsZW1lbnQgMCBhbmQgMikuICBGb3IgZWFzZSBvZiBwb3J0aW5nIHRoZQogICBwcm9ncmFtbWVyIHdhbnRzIGVsZW1lbnRzIDEgYW5kIDMgaW4gYm90aCBjYXNlcywgc28gZm9yIGxpdHRsZQogICBlbmRpYW4gd2UgbXVzdCBwZXJmb3JtIHNvbWUgcGVybXV0ZXMuICAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQp2ZWNfc3VtMnModmVjdG9yIGludCBfX2EsIHZlY3RvciBpbnQgX19iKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHZlY3RvciBpbnQgX19jID0gKHZlY3RvciBzaWduZWQgaW50KXZlY19wZXJtKAogICAgICBfX2IsIF9fYiwgKHZlY3RvciB1bnNpZ25lZCBjaGFyKSg0LCA1LCA2LCA3LCAwLCAxLCAyLCAzLCAxMiwgMTMsIDE0LCAxNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOCwgOSwgMTAsIDExKSk7CiAgX19jID0gX19idWlsdGluX2FsdGl2ZWNfdnN1bTJzd3MoX19hLCBfX2MpOwogIHJldHVybiAodmVjdG9yIHNpZ25lZCBpbnQpdmVjX3Blcm0oCiAgICAgIF9fYywgX19jLCAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKDQsIDUsIDYsIDcsIDAsIDEsIDIsIDMsIDEyLCAxMywgMTQsIDE1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LCA5LCAxMCwgMTEpKTsKI2Vsc2UKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnN1bTJzd3MoX19hLCBfX2IpOwojZW5kaWYKfQoKLyogdmVjX3ZzdW0yc3dzICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGludCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCnZlY192c3VtMnN3cyh2ZWN0b3IgaW50IF9fYSwgdmVjdG9yIGludCBfX2IpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgdmVjdG9yIGludCBfX2MgPSAodmVjdG9yIHNpZ25lZCBpbnQpdmVjX3Blcm0oCiAgICAgIF9fYiwgX19iLCAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKDQsIDUsIDYsIDcsIDAsIDEsIDIsIDMsIDEyLCAxMywgMTQsIDE1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LCA5LCAxMCwgMTEpKTsKICBfX2MgPSBfX2J1aWx0aW5fYWx0aXZlY192c3VtMnN3cyhfX2EsIF9fYyk7CiAgcmV0dXJuICh2ZWN0b3Igc2lnbmVkIGludCl2ZWNfcGVybSgKICAgICAgX19jLCBfX2MsICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoNCwgNSwgNiwgNywgMCwgMSwgMiwgMywgMTIsIDEzLCAxNCwgMTUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgsIDksIDEwLCAxMSkpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192c3VtMnN3cyhfX2EsIF9fYik7CiNlbmRpZgp9CgovKiB2ZWNfc3VtcyAqLwoKLyogVGhlIHZzdW1zd3MgaW5zdHJ1Y3Rpb24gaGFzIGEgYmlnLWVuZGlhbiBiaWFzLCBzbyB0aGF0IHRoZSBzZWNvbmQKICAgaW5wdXQgdmVjdG9yIGFuZCB0aGUgcmVzdWx0IGFsd2F5cyByZWZlcmVuY2UgYmlnLWVuZGlhbiBlbGVtZW50IDMKICAgKGxpdHRsZS1lbmRpYW4gZWxlbWVudCAwKS4gIEZvciBlYXNlIG9mIHBvcnRpbmcgdGhlIHByb2dyYW1tZXIKICAgd2FudHMgZWxlbWVudCAzIGluIGJvdGggY2FzZXMsIHNvIGZvciBsaXR0bGUgZW5kaWFuIHdlIG11c3QgcGVyZm9ybQogICBzb21lIHBlcm11dGVzLiAgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgaW50IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKdmVjX3N1bXModmVjdG9yIHNpZ25lZCBpbnQgX19hLCB2ZWN0b3Igc2lnbmVkIGludCBfX2IpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgX19iID0gKHZlY3RvciBzaWduZWQgaW50KXZlY19zcGxhdChfX2IsIDMpOwogIF9fYiA9IF9fYnVpbHRpbl9hbHRpdmVjX3ZzdW1zd3MoX19hLCBfX2IpOwogIHJldHVybiAodmVjdG9yIHNpZ25lZCBpbnQpKDAsIDAsIDAsIF9fYlswXSk7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdW1zd3MoX19hLCBfX2IpOwojZW5kaWYKfQoKLyogdmVjX3ZzdW1zd3MgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgaW50IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKdmVjX3ZzdW1zd3ModmVjdG9yIHNpZ25lZCBpbnQgX19hLCB2ZWN0b3Igc2lnbmVkIGludCBfX2IpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgX19iID0gKHZlY3RvciBzaWduZWQgaW50KXZlY19zcGxhdChfX2IsIDMpOwogIF9fYiA9IF9fYnVpbHRpbl9hbHRpdmVjX3ZzdW1zd3MoX19hLCBfX2IpOwogIHJldHVybiAodmVjdG9yIHNpZ25lZCBpbnQpKDAsIDAsIDAsIF9fYlswXSk7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdW1zd3MoX19hLCBfX2IpOwojZW5kaWYKfQoKLyogdmVjX3RydW5jICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpIHZlY190cnVuYyh2ZWN0b3IgZmxvYXQgX19hKSB7CiNpZmRlZiBfX1ZTWF9fCiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfeHZyc3BpeihfX2EpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192cmZpeihfX2EpOwojZW5kaWYKfQoKI2lmZGVmIF9fVlNYX18Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGRvdWJsZSBfX0FUVFJTX29fYWkgdmVjX3RydW5jKHZlY3RvciBkb3VibGUgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfeHZyZHBpeihfX2EpOwp9CiNlbmRpZgoKLyogdmVjX3JvdW5keiAqLwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpIHZlY19yb3VuZHoodmVjdG9yIGZsb2F0IF9fYSkgewogIHJldHVybiB2ZWNfdHJ1bmMoX19hKTsKfQoKI2lmZGVmIF9fVlNYX18Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGRvdWJsZSBfX0FUVFJTX29fYWkgdmVjX3JvdW5keih2ZWN0b3IgZG91YmxlIF9fYSkgewogIHJldHVybiB2ZWNfdHJ1bmMoX19hKTsKfQojZW5kaWYKCi8qIHZlY192cmZpeiAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGZsb2F0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKdmVjX3ZyZml6KHZlY3RvciBmbG9hdCBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnJmaXooX19hKTsKfQoKLyogdmVjX3VucGFja2ggKi8KCi8qIFRoZSB2ZWN0b3IgdW5wYWNrIGluc3RydWN0aW9ucyBhbGwgaGF2ZSBhIGJpZy1lbmRpYW4gYmlhcywgc28gZm9yCiAgIGxpdHRsZSBlbmRpYW4gd2UgbXVzdCByZXZlcnNlIHRoZSBtZWFuaW5ncyBvZiAiaGlnaCIgYW5kICJsb3cuIiAgKi8KI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmVjX3Z1cGtocHgoX19hKSBfX2J1aWx0aW5fYWx0aXZlY192dXBrbHB4KCh2ZWN0b3Igc2hvcnQpKF9fYSkpCiNkZWZpbmUgdmVjX3Z1cGtscHgoX19hKSBfX2J1aWx0aW5fYWx0aXZlY192dXBraHB4KCh2ZWN0b3Igc2hvcnQpKF9fYSkpCiNlbHNlCiNkZWZpbmUgdmVjX3Z1cGtocHgoX19hKSBfX2J1aWx0aW5fYWx0aXZlY192dXBraHB4KCh2ZWN0b3Igc2hvcnQpKF9fYSkpCiNkZWZpbmUgdmVjX3Z1cGtscHgoX19hKSBfX2J1aWx0aW5fYWx0aXZlY192dXBrbHB4KCh2ZWN0b3Igc2hvcnQpKF9fYSkpCiNlbmRpZgoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfdW5wYWNraCh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192dXBrbHNiKCh2ZWN0b3IgY2hhcilfX2EpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192dXBraHNiKCh2ZWN0b3IgY2hhcilfX2EpOwojZW5kaWYKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgc2hvcnQgX19BVFRSU19vX2FpCnZlY191bnBhY2toKHZlY3RvciBib29sIGNoYXIgX19hKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiAodmVjdG9yIGJvb2wgc2hvcnQpX19idWlsdGluX2FsdGl2ZWNfdnVwa2xzYigodmVjdG9yIGNoYXIpX19hKTsKI2Vsc2UKICByZXR1cm4gKHZlY3RvciBib29sIHNob3J0KV9fYnVpbHRpbl9hbHRpdmVjX3Z1cGtoc2IoKHZlY3RvciBjaGFyKV9fYSk7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgaW50IF9fQVRUUlNfb19haSB2ZWNfdW5wYWNraCh2ZWN0b3Igc2hvcnQgX19hKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192dXBrbHNoKF9fYSk7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3Z1cGtoc2goX19hKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGludCBfX0FUVFJTX29fYWkKdmVjX3VucGFja2godmVjdG9yIGJvb2wgc2hvcnQgX19hKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiAodmVjdG9yIGJvb2wgaW50KV9fYnVpbHRpbl9hbHRpdmVjX3Z1cGtsc2goKHZlY3RvciBzaG9ydClfX2EpOwojZWxzZQogIHJldHVybiAodmVjdG9yIGJvb2wgaW50KV9fYnVpbHRpbl9hbHRpdmVjX3Z1cGtoc2goKHZlY3RvciBzaG9ydClfX2EpOwojZW5kaWYKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX3VucGFja2godmVjdG9yIHBpeGVsIF9fYSkgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBpbnQpX19idWlsdGluX2FsdGl2ZWNfdnVwa2xweCgodmVjdG9yIHNob3J0KV9fYSk7CiNlbHNlCiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYnVpbHRpbl9hbHRpdmVjX3Z1cGtocHgoKHZlY3RvciBzaG9ydClfX2EpOwojZW5kaWYKfQoKI2lmZGVmIF9fUE9XRVI4X1ZFQ1RPUl9fCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBsb25nIGxvbmcgX19BVFRSU19vX2FpIHZlY191bnBhY2toKHZlY3RvciBpbnQgX19hKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192dXBrbHN3KF9fYSk7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3Z1cGtoc3coX19hKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX3VucGFja2godmVjdG9yIGJvb2wgaW50IF9fYSkgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gKHZlY3RvciBib29sIGxvbmcgbG9uZylfX2J1aWx0aW5fYWx0aXZlY192dXBrbHN3KCh2ZWN0b3IgaW50KV9fYSk7CiNlbHNlCiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBsb25nIGxvbmcpX19idWlsdGluX2FsdGl2ZWNfdnVwa2hzdygodmVjdG9yIGludClfX2EpOwojZW5kaWYKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGRvdWJsZSBfX0FUVFJTX29fYWkKdmVjX3VucGFja2godmVjdG9yIGZsb2F0IF9fYSkgewogIHJldHVybiAodmVjdG9yIGRvdWJsZSkoX19hWzBdLCBfX2FbMV0pOwp9CiNlbmRpZgoKLyogdmVjX3Z1cGtoc2IgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3Z1cGtoc2IodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSkgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnVwa2xzYigodmVjdG9yIGNoYXIpX19hKTsKI2Vsc2UKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnVwa2hzYigodmVjdG9yIGNoYXIpX19hKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfdnVwa2hzYih2ZWN0b3IgYm9vbCBjaGFyIF9fYSkgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gKHZlY3RvciBib29sIHNob3J0KV9fYnVpbHRpbl9hbHRpdmVjX3Z1cGtsc2IoKHZlY3RvciBjaGFyKV9fYSk7CiNlbHNlCiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBzaG9ydClfX2J1aWx0aW5fYWx0aXZlY192dXBraHNiKCh2ZWN0b3IgY2hhcilfX2EpOwojZW5kaWYKfQoKLyogdmVjX3Z1cGtoc2ggKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY192dXBraHNoKHZlY3RvciBzaG9ydCBfX2EpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3Z1cGtsc2goX19hKTsKI2Vsc2UKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnVwa2hzaChfX2EpOwojZW5kaWYKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgaW50IF9fQVRUUlNfb19haQp2ZWNfdnVwa2hzaCh2ZWN0b3IgYm9vbCBzaG9ydCBfX2EpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBpbnQpX19idWlsdGluX2FsdGl2ZWNfdnVwa2xzaCgodmVjdG9yIHNob3J0KV9fYSk7CiNlbHNlCiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBpbnQpX19idWlsdGluX2FsdGl2ZWNfdnVwa2hzaCgodmVjdG9yIHNob3J0KV9fYSk7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfdnVwa2hzaCh2ZWN0b3IgcGl4ZWwgX19hKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGludClfX2J1aWx0aW5fYWx0aXZlY192dXBrbHB4KCh2ZWN0b3Igc2hvcnQpX19hKTsKI2Vsc2UKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBpbnQpX19idWlsdGluX2FsdGl2ZWNfdnVwa2hweCgodmVjdG9yIHNob3J0KV9fYSk7CiNlbmRpZgp9CgovKiB2ZWNfdnVwa2hzdyAqLwoKI2lmZGVmIF9fUE9XRVI4X1ZFQ1RPUl9fCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBsb25nIGxvbmcgX19BVFRSU19vX2FpIHZlY192dXBraHN3KHZlY3RvciBpbnQgX19hKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192dXBrbHN3KF9fYSk7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3Z1cGtoc3coX19hKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX3Z1cGtoc3codmVjdG9yIGJvb2wgaW50IF9fYSkgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gKHZlY3RvciBib29sIGxvbmcgbG9uZylfX2J1aWx0aW5fYWx0aXZlY192dXBrbHN3KCh2ZWN0b3IgaW50KV9fYSk7CiNlbHNlCiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBsb25nIGxvbmcpX19idWlsdGluX2FsdGl2ZWNfdnVwa2hzdygodmVjdG9yIGludClfX2EpOwojZW5kaWYKfQojZW5kaWYKCi8qIHZlY191bnBhY2tsICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpCnZlY191bnBhY2tsKHZlY3RvciBzaWduZWQgY2hhciBfX2EpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3Z1cGtoc2IoKHZlY3RvciBjaGFyKV9fYSk7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3Z1cGtsc2IoKHZlY3RvciBjaGFyKV9fYSk7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3VucGFja2wodmVjdG9yIGJvb2wgY2hhciBfX2EpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBzaG9ydClfX2J1aWx0aW5fYWx0aXZlY192dXBraHNiKCh2ZWN0b3IgY2hhcilfX2EpOwojZWxzZQogIHJldHVybiAodmVjdG9yIGJvb2wgc2hvcnQpX19idWlsdGluX2FsdGl2ZWNfdnVwa2xzYigodmVjdG9yIGNoYXIpX19hKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY191bnBhY2tsKHZlY3RvciBzaG9ydCBfX2EpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3Z1cGtoc2goX19hKTsKI2Vsc2UKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnVwa2xzaChfX2EpOwojZW5kaWYKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgaW50IF9fQVRUUlNfb19haQp2ZWNfdW5wYWNrbCh2ZWN0b3IgYm9vbCBzaG9ydCBfX2EpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBpbnQpX19idWlsdGluX2FsdGl2ZWNfdnVwa2hzaCgodmVjdG9yIHNob3J0KV9fYSk7CiNlbHNlCiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBpbnQpX19idWlsdGluX2FsdGl2ZWNfdnVwa2xzaCgodmVjdG9yIHNob3J0KV9fYSk7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfdW5wYWNrbCh2ZWN0b3IgcGl4ZWwgX19hKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGludClfX2J1aWx0aW5fYWx0aXZlY192dXBraHB4KCh2ZWN0b3Igc2hvcnQpX19hKTsKI2Vsc2UKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBpbnQpX19idWlsdGluX2FsdGl2ZWNfdnVwa2xweCgodmVjdG9yIHNob3J0KV9fYSk7CiNlbmRpZgp9CgojaWZkZWYgX19QT1dFUjhfVkVDVE9SX18Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkgdmVjX3VucGFja2wodmVjdG9yIGludCBfX2EpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3Z1cGtoc3coX19hKTsKI2Vsc2UKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnVwa2xzdyhfX2EpOwojZW5kaWYKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfdW5wYWNrbCh2ZWN0b3IgYm9vbCBpbnQgX19hKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiAodmVjdG9yIGJvb2wgbG9uZyBsb25nKV9fYnVpbHRpbl9hbHRpdmVjX3Z1cGtoc3coKHZlY3RvciBpbnQpX19hKTsKI2Vsc2UKICByZXR1cm4gKHZlY3RvciBib29sIGxvbmcgbG9uZylfX2J1aWx0aW5fYWx0aXZlY192dXBrbHN3KCh2ZWN0b3IgaW50KV9fYSk7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZG91YmxlIF9fQVRUUlNfb19haQp2ZWNfdW5wYWNrbCh2ZWN0b3IgZmxvYXQgX19hKSB7CiAgcmV0dXJuICh2ZWN0b3IgZG91YmxlKShfX2FbMl0sIF9fYVszXSk7Cn0KI2VuZGlmCgovKiB2ZWNfdnVwa2xzYiAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfdnVwa2xzYih2ZWN0b3Igc2lnbmVkIGNoYXIgX19hKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192dXBraHNiKCh2ZWN0b3IgY2hhcilfX2EpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192dXBrbHNiKCh2ZWN0b3IgY2hhcilfX2EpOwojZW5kaWYKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgc2hvcnQgX19BVFRSU19vX2FpCnZlY192dXBrbHNiKHZlY3RvciBib29sIGNoYXIgX19hKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiAodmVjdG9yIGJvb2wgc2hvcnQpX19idWlsdGluX2FsdGl2ZWNfdnVwa2hzYigodmVjdG9yIGNoYXIpX19hKTsKI2Vsc2UKICByZXR1cm4gKHZlY3RvciBib29sIHNob3J0KV9fYnVpbHRpbl9hbHRpdmVjX3Z1cGtsc2IoKHZlY3RvciBjaGFyKV9fYSk7CiNlbmRpZgp9CgovKiB2ZWNfdnVwa2xzaCAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX3Z1cGtsc2godmVjdG9yIHNob3J0IF9fYSkgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnVwa2hzaChfX2EpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192dXBrbHNoKF9fYSk7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBpbnQgX19BVFRSU19vX2FpCnZlY192dXBrbHNoKHZlY3RvciBib29sIHNob3J0IF9fYSkgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gKHZlY3RvciBib29sIGludClfX2J1aWx0aW5fYWx0aXZlY192dXBraHNoKCh2ZWN0b3Igc2hvcnQpX19hKTsKI2Vsc2UKICByZXR1cm4gKHZlY3RvciBib29sIGludClfX2J1aWx0aW5fYWx0aXZlY192dXBrbHNoKCh2ZWN0b3Igc2hvcnQpX19hKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY192dXBrbHNoKHZlY3RvciBwaXhlbCBfX2EpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYnVpbHRpbl9hbHRpdmVjX3Z1cGtocHgoKHZlY3RvciBzaG9ydClfX2EpOwojZWxzZQogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGludClfX2J1aWx0aW5fYWx0aXZlY192dXBrbHB4KCh2ZWN0b3Igc2hvcnQpX19hKTsKI2VuZGlmCn0KCi8qIHZlY192dXBrbHN3ICovCgojaWZkZWYgX19QT1dFUjhfVkVDVE9SX18Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkgdmVjX3Z1cGtsc3codmVjdG9yIGludCBfX2EpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3Z1cGtoc3coX19hKTsKI2Vsc2UKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnVwa2xzdyhfX2EpOwojZW5kaWYKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfdnVwa2xzdyh2ZWN0b3IgYm9vbCBpbnQgX19hKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiAodmVjdG9yIGJvb2wgbG9uZyBsb25nKV9fYnVpbHRpbl9hbHRpdmVjX3Z1cGtoc3coKHZlY3RvciBpbnQpX19hKTsKI2Vsc2UKICByZXR1cm4gKHZlY3RvciBib29sIGxvbmcgbG9uZylfX2J1aWx0aW5fYWx0aXZlY192dXBrbHN3KCh2ZWN0b3IgaW50KV9fYSk7CiNlbmRpZgp9CiNlbmRpZgoKLyogdmVjX3ZzeF9sZCAqLwoKI2lmZGVmIF9fVlNYX18KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGludCBfX0FUVFJTX29fYWkKdmVjX3ZzeF9sZChpbnQgX19hLCBjb25zdCB2ZWN0b3IgYm9vbCBpbnQgKl9fYikgewogIHJldHVybiAodmVjdG9yIGJvb2wgaW50KV9fYnVpbHRpbl92c3hfbHh2dzR4KF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY192c3hfbGQoaW50IF9fYSwgY29uc3QgdmVjdG9yIHNpZ25lZCBpbnQgKl9fYikgewogIHJldHVybiAodmVjdG9yIHNpZ25lZCBpbnQpX19idWlsdGluX3ZzeF9seHZ3NHgoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX3ZzeF9sZChpbnQgX19hLCBjb25zdCBzaWduZWQgaW50ICpfX2IpIHsKICByZXR1cm4gKHZlY3RvciBzaWduZWQgaW50KV9fYnVpbHRpbl92c3hfbHh2dzR4KF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX3ZzeF9sZChpbnQgX19hLCBjb25zdCB2ZWN0b3IgdW5zaWduZWQgaW50ICpfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBpbnQpX19idWlsdGluX3ZzeF9seHZ3NHgoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfdnN4X2xkKGludCBfX2EsIGNvbnN0IHVuc2lnbmVkIGludCAqX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYnVpbHRpbl92c3hfbHh2dzR4KF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGZsb2F0IF9fQVRUUlNfb19haQp2ZWNfdnN4X2xkKGludCBfX2EsIGNvbnN0IHZlY3RvciBmbG9hdCAqX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgZmxvYXQpX19idWlsdGluX3ZzeF9seHZ3NHgoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpIHZlY192c3hfbGQoaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0ICpfX2IpIHsKICByZXR1cm4gKHZlY3RvciBmbG9hdClfX2J1aWx0aW5fdnN4X2x4dnc0eChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfdnN4X2xkKGludCBfX2EsIGNvbnN0IHZlY3RvciBzaWduZWQgbG9uZyBsb25nICpfX2IpIHsKICByZXR1cm4gKHZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYnVpbHRpbl92c3hfbHh2ZDJ4KF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX3ZzeF9sZChpbnQgX19hLCBjb25zdCB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nICpfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19idWlsdGluX3ZzeF9seHZkMngoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZG91YmxlIF9fQVRUUlNfb19haQp2ZWNfdnN4X2xkKGludCBfX2EsIGNvbnN0IHZlY3RvciBkb3VibGUgKl9fYikgewogIHJldHVybiAodmVjdG9yIGRvdWJsZSlfX2J1aWx0aW5fdnN4X2x4dmQyeChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBkb3VibGUgX19BVFRSU19vX2FpCnZlY192c3hfbGQoaW50IF9fYSwgY29uc3QgZG91YmxlICpfX2IpIHsKICByZXR1cm4gKHZlY3RvciBkb3VibGUpX19idWlsdGluX3ZzeF9seHZkMngoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3ZzeF9sZChpbnQgX19hLCBjb25zdCB2ZWN0b3IgYm9vbCBzaG9ydCAqX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBzaG9ydClfX2J1aWx0aW5fdnN4X2x4dnc0eChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY192c3hfbGQoaW50IF9fYSwgY29uc3QgdmVjdG9yIHNpZ25lZCBzaG9ydCAqX19iKSB7CiAgcmV0dXJuICh2ZWN0b3Igc2lnbmVkIHNob3J0KV9fYnVpbHRpbl92c3hfbHh2dzR4KF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3ZzeF9sZChpbnQgX19hLCBjb25zdCBzaWduZWQgc2hvcnQgKl9fYikgewogIHJldHVybiAodmVjdG9yIHNpZ25lZCBzaG9ydClfX2J1aWx0aW5fdnN4X2x4dnc0eChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3ZzeF9sZChpbnQgX19hLCBjb25zdCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgKl9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYnVpbHRpbl92c3hfbHh2dzR4KF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfdnN4X2xkKGludCBfX2EsIGNvbnN0IHVuc2lnbmVkIHNob3J0ICpfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2J1aWx0aW5fdnN4X2x4dnc0eChfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGNoYXIgX19BVFRSU19vX2FpCnZlY192c3hfbGQoaW50IF9fYSwgY29uc3QgdmVjdG9yIGJvb2wgY2hhciAqX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgYm9vbCBjaGFyKV9fYnVpbHRpbl92c3hfbHh2dzR4KF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfdnN4X2xkKGludCBfX2EsIGNvbnN0IHZlY3RvciBzaWduZWQgY2hhciAqX19iKSB7CiAgcmV0dXJuICh2ZWN0b3Igc2lnbmVkIGNoYXIpX19idWlsdGluX3ZzeF9seHZ3NHgoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY192c3hfbGQoaW50IF9fYSwgY29uc3Qgc2lnbmVkIGNoYXIgKl9fYikgewogIHJldHVybiAodmVjdG9yIHNpZ25lZCBjaGFyKV9fYnVpbHRpbl92c3hfbHh2dzR4KF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY192c3hfbGQoaW50IF9fYSwgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgKl9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19idWlsdGluX3ZzeF9seHZ3NHgoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3ZzeF9sZChpbnQgX19hLCBjb25zdCB1bnNpZ25lZCBjaGFyICpfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYnVpbHRpbl92c3hfbHh2dzR4KF9fYSwgX19iKTsKfQoKI2VuZGlmCgovKiB2ZWNfdnN4X3N0ICovCgojaWZkZWYgX19WU1hfXwoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3ZzeF9zdCh2ZWN0b3IgYm9vbCBpbnQgX19hLCBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGludCAqX19jKSB7CiAgX19idWlsdGluX3ZzeF9zdHh2dzR4KCh2ZWN0b3IgaW50KV9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfdnN4X3N0KHZlY3RvciBib29sIGludCBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmVkIGludCAqX19jKSB7CiAgX19idWlsdGluX3ZzeF9zdHh2dzR4KCh2ZWN0b3IgaW50KV9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfdnN4X3N0KHZlY3RvciBib29sIGludCBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICpfX2MpIHsKICBfX2J1aWx0aW5fdnN4X3N0eHZ3NHgoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY192c3hfc3QodmVjdG9yIHNpZ25lZCBpbnQgX19hLCBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaWduZWQgaW50ICpfX2MpIHsKICBfX2J1aWx0aW5fdnN4X3N0eHZ3NHgoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY192c3hfc3QodmVjdG9yIHNpZ25lZCBpbnQgX19hLCBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25lZCBpbnQgKl9fYykgewogIF9fYnVpbHRpbl92c3hfc3R4dnc0eCgodmVjdG9yIGludClfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3ZzeF9zdCh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgaW50ICpfX2MpIHsKICBfX2J1aWx0aW5fdnN4X3N0eHZ3NHgoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY192c3hfc3QodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICpfX2MpIHsKICBfX2J1aWx0aW5fdnN4X3N0eHZ3NHgoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY192c3hfc3QodmVjdG9yIGZsb2F0IF9fYSwgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgZmxvYXQgKl9fYykgewogIF9fYnVpbHRpbl92c3hfc3R4dnc0eCgodmVjdG9yIGludClfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3ZzeF9zdCh2ZWN0b3IgZmxvYXQgX19hLCBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0ICpfX2MpIHsKICBfX2J1aWx0aW5fdnN4X3N0eHZ3NHgoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY192c3hfc3QodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgKl9fYykgewogIF9fYnVpbHRpbl92c3hfc3R4dmQyeCgodmVjdG9yIGRvdWJsZSlfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3ZzeF9zdCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgKl9fYykgewogIF9fYnVpbHRpbl92c3hfc3R4dmQyeCgodmVjdG9yIGRvdWJsZSlfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3ZzeF9zdCh2ZWN0b3IgZG91YmxlIF9fYSwgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgZG91YmxlICpfX2MpIHsKICBfX2J1aWx0aW5fdnN4X3N0eHZkMngoKHZlY3RvciBkb3VibGUpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY192c3hfc3QodmVjdG9yIGRvdWJsZSBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlICpfX2MpIHsKICBfX2J1aWx0aW5fdnN4X3N0eHZkMngoKHZlY3RvciBkb3VibGUpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY192c3hfc3QodmVjdG9yIGJvb2wgc2hvcnQgX19hLCBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIHNob3J0ICpfX2MpIHsKICBfX2J1aWx0aW5fdnN4X3N0eHZ3NHgoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY192c3hfc3QodmVjdG9yIGJvb2wgc2hvcnQgX19hLCBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25lZCBzaG9ydCAqX19jKSB7CiAgX19idWlsdGluX3ZzeF9zdHh2dzR4KCh2ZWN0b3IgaW50KV9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfdnN4X3N0KHZlY3RvciBib29sIHNob3J0IF9fYSwgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCAqX19jKSB7CiAgX19idWlsdGluX3ZzeF9zdHh2dzR4KCh2ZWN0b3IgaW50KV9fYSwgX19iLCBfX2MpOwp9CnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY192c3hfc3QodmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNpZ25lZCBzaG9ydCAqX19jKSB7CiAgX19idWlsdGluX3ZzeF9zdHh2dzR4KCh2ZWN0b3IgaW50KV9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfdnN4X3N0KHZlY3RvciBzaWduZWQgc2hvcnQgX19hLCBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25lZCBzaG9ydCAqX19jKSB7CiAgX19idWlsdGluX3ZzeF9zdHh2dzR4KCh2ZWN0b3IgaW50KV9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfdnN4X3N0KHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgKl9fYykgewogIF9fYnVpbHRpbl92c3hfc3R4dnc0eCgodmVjdG9yIGludClfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3ZzeF9zdCh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2IsIHVuc2lnbmVkIHNob3J0ICpfX2MpIHsKICBfX2J1aWx0aW5fdnN4X3N0eHZ3NHgoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY192c3hfc3QodmVjdG9yIGJvb2wgY2hhciBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgY2hhciAqX19jKSB7CiAgX19idWlsdGluX3ZzeF9zdHh2dzR4KCh2ZWN0b3IgaW50KV9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfdnN4X3N0KHZlY3RvciBib29sIGNoYXIgX19hLCBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25lZCBjaGFyICpfX2MpIHsKICBfX2J1aWx0aW5fdnN4X3N0eHZ3NHgoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY192c3hfc3QodmVjdG9yIGJvb2wgY2hhciBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqX19jKSB7CiAgX19idWlsdGluX3ZzeF9zdHh2dzR4KCh2ZWN0b3IgaW50KV9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfdnN4X3N0KHZlY3RvciBzaWduZWQgY2hhciBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNpZ25lZCBjaGFyICpfX2MpIHsKICBfX2J1aWx0aW5fdnN4X3N0eHZ3NHgoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY192c3hfc3QodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduZWQgY2hhciAqX19jKSB7CiAgX19idWlsdGluX3ZzeF9zdHh2dzR4KCh2ZWN0b3IgaW50KV9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfdnN4X3N0KHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyICpfX2MpIHsKICBfX2J1aWx0aW5fdnN4X3N0eHZ3NHgoKHZlY3RvciBpbnQpX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY192c3hfc3QodmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2IsIHVuc2lnbmVkIGNoYXIgKl9fYykgewogIF9fYnVpbHRpbl92c3hfc3R4dnc0eCgodmVjdG9yIGludClfX2EsIF9fYiwgX19jKTsKfQoKI2VuZGlmCgojaWZkZWYgX19WU1hfXwojZGVmaW5lIHZlY194eHBlcm1kaSBfX2J1aWx0aW5fdnN4X3h4cGVybWRpCiNkZWZpbmUgdmVjX3h4c2xkd2kgX19idWlsdGluX3ZzeF94eHNsZHdpCiNkZWZpbmUgdmVjX3Blcm1pKF9fYSwgX19iLCBfX2MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX0dlbmVyaWMoKF9fYSksIHZlY3RvciBzaWduZWQgbG9uZyBsb25nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgOiBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX19hKSwgKF9fYiksICgoKF9fYykgPj4gMSkgJiAweDEpLCAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChfX2MpJjB4MSkgKyAyKSksICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgOiBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX19hKSwgKF9fYiksICgoKF9fYykgPj4gMSkgJiAweDEpLCAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChfX2MpJjB4MSkgKyAyKSksICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICB2ZWN0b3IgZG91YmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgOiBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX19hKSwgKF9fYiksICgoKF9fYykgPj4gMSkgJiAweDEpLCAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChfX2MpJjB4MSkgKyAyKSkpCiNlbmRpZgoKLyogdmVjX3hvciAqLwoKI2RlZmluZSBfX2J1aWx0aW5fYWx0aXZlY192eG9yIHZlY194b3IKCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3hvcih2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYSBeIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfeG9yKHZlY3RvciBib29sIGNoYXIgX19hLCB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3Igc2lnbmVkIGNoYXIpX19hIF4gX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY194b3IodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIGJvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gX19hIF4gKHZlY3RvciBzaWduZWQgY2hhcilfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfeG9yKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYSBeIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY194b3IodmVjdG9yIGJvb2wgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hIF4gX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3hvcih2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciBib29sIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYSBeICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGNoYXIgX19BVFRSU19vX2FpIHZlY194b3IodmVjdG9yIGJvb2wgY2hhciBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gX19hIF4gX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY194b3IodmVjdG9yIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19hIF4gX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY194b3IodmVjdG9yIGJvb2wgc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNob3J0IF9fYikgewogIHJldHVybiAodmVjdG9yIHNob3J0KV9fYSBeIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfeG9yKHZlY3RvciBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19hIF4gKHZlY3RvciBzaG9ydClfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3hvcih2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYSBeIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfeG9yKHZlY3RvciBib29sIHNob3J0IF9fYSwgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYSBeIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfeG9yKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciBib29sIHNob3J0IF9fYikgewogIHJldHVybiBfX2EgXiAodmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgc2hvcnQgX19BVFRSU19vX2FpCnZlY194b3IodmVjdG9yIGJvb2wgc2hvcnQgX19hLCB2ZWN0b3IgYm9vbCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19hIF4gX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgaW50IF9fQVRUUlNfb19haSB2ZWNfeG9yKHZlY3RvciBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYSBeIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX3hvcih2ZWN0b3IgYm9vbCBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBpbnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgaW50KV9fYSBeIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX3hvcih2ZWN0b3IgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYSBeICh2ZWN0b3IgaW50KV9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX3hvcih2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19hIF4gX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfeG9yKHZlY3RvciBib29sIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYSBeIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX3hvcih2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIGJvb2wgaW50IF9fYikgewogIHJldHVybiBfX2EgXiAodmVjdG9yIHVuc2lnbmVkIGludClfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGludCBfX0FUVFJTX29fYWkgdmVjX3hvcih2ZWN0b3IgYm9vbCBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgaW50IF9fYikgewogIHJldHVybiBfX2EgXiBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkgdmVjX3hvcih2ZWN0b3IgZmxvYXQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGZsb2F0IF9fYikgewogIHZlY3RvciB1bnNpZ25lZCBpbnQgX19yZXMgPQogICAgICAodmVjdG9yIHVuc2lnbmVkIGludClfX2EgXiAodmVjdG9yIHVuc2lnbmVkIGludClfX2I7CiAgcmV0dXJuICh2ZWN0b3IgZmxvYXQpX19yZXM7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkgdmVjX3hvcih2ZWN0b3IgYm9vbCBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGZsb2F0IF9fYikgewogIHZlY3RvciB1bnNpZ25lZCBpbnQgX19yZXMgPQogICAgICAodmVjdG9yIHVuc2lnbmVkIGludClfX2EgXiAodmVjdG9yIHVuc2lnbmVkIGludClfX2I7CiAgcmV0dXJuICh2ZWN0b3IgZmxvYXQpX19yZXM7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkgdmVjX3hvcih2ZWN0b3IgZmxvYXQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgaW50IF9fYikgewogIHZlY3RvciB1bnNpZ25lZCBpbnQgX19yZXMgPQogICAgICAodmVjdG9yIHVuc2lnbmVkIGludClfX2EgXiAodmVjdG9yIHVuc2lnbmVkIGludClfX2I7CiAgcmV0dXJuICh2ZWN0b3IgZmxvYXQpX19yZXM7Cn0KCiNpZmRlZiBfX1ZTWF9fCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfeG9yKHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYSBeIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY194b3IodmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2EgXiBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfeG9yKHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2EgXiAodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfeG9yKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2EgXiBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY194b3IodmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19hIF4gX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfeG9yKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYSBeICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfeG9yKHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2EsIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19hIF4gX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZG91YmxlIF9fQVRUUlNfb19haSB2ZWNfeG9yKHZlY3RvciBkb3VibGUgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBkb3VibGUgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgZG91YmxlKSgodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2EgXgogICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGRvdWJsZSBfX0FUVFJTX29fYWkKdmVjX3hvcih2ZWN0b3IgZG91YmxlIF9fYSwgdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYikgewogIHJldHVybiAodmVjdG9yIGRvdWJsZSkoKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19hIF4KICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBkb3VibGUgX19BVFRSU19vX2FpIHZlY194b3IodmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgZG91YmxlIF9fYikgewogIHJldHVybiAodmVjdG9yIGRvdWJsZSkoKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19hIF4KICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYik7Cn0KI2VuZGlmCgovKiB2ZWNfdnhvciAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfdnhvcih2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYSBeIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfdnhvcih2ZWN0b3IgYm9vbCBjaGFyIF9fYSwgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiAodmVjdG9yIHNpZ25lZCBjaGFyKV9fYSBeIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfdnhvcih2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgYm9vbCBjaGFyIF9fYikgewogIHJldHVybiBfX2EgXiAodmVjdG9yIHNpZ25lZCBjaGFyKV9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY192eG9yKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYSBeIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY192eG9yKHZlY3RvciBib29sIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSBeIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY192eG9yKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIGJvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gX19hIF4gKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgY2hhciBfX0FUVFJTX29fYWkgdmVjX3Z4b3IodmVjdG9yIGJvb2wgY2hhciBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYSBeIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfdnhvcih2ZWN0b3Igc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19hIF4gX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY192eG9yKHZlY3RvciBib29sIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2hvcnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3Igc2hvcnQpX19hIF4gX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY192eG9yKHZlY3RvciBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYSBeICh2ZWN0b3Igc2hvcnQpX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY192eG9yKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19hIF4gX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY192eG9yKHZlY3RvciBib29sIHNob3J0IF9fYSwgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYSBeIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfdnhvcih2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgYm9vbCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19hIF4gKHZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfdnhvcih2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsIHZlY3RvciBib29sIHNob3J0IF9fYikgewogIHJldHVybiBfX2EgXiBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY192eG9yKHZlY3RvciBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgaW50IF9fYikgewogIHJldHVybiBfX2EgXiBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY192eG9yKHZlY3RvciBib29sIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBpbnQgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3IgaW50KV9fYSBeIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX3Z4b3IodmVjdG9yIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGludCBfX2IpIHsKICByZXR1cm4gX19hIF4gKHZlY3RvciBpbnQpX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfdnhvcih2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19hIF4gX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfdnhvcih2ZWN0b3IgYm9vbCBpbnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGludClfX2EgXiBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY192eG9yKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCB2ZWN0b3IgYm9vbCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYSBeICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgaW50IF9fQVRUUlNfb19haSB2ZWNfdnhvcih2ZWN0b3IgYm9vbCBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGludCBfX2IpIHsKICByZXR1cm4gX19hIF4gX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpIHZlY192eG9yKHZlY3RvciBmbG9hdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGZsb2F0IF9fYikgewogIHZlY3RvciB1bnNpZ25lZCBpbnQgX19yZXMgPQogICAgICAodmVjdG9yIHVuc2lnbmVkIGludClfX2EgXiAodmVjdG9yIHVuc2lnbmVkIGludClfX2I7CiAgcmV0dXJuICh2ZWN0b3IgZmxvYXQpX19yZXM7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkgdmVjX3Z4b3IodmVjdG9yIGJvb2wgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgZmxvYXQgX19iKSB7CiAgdmVjdG9yIHVuc2lnbmVkIGludCBfX3JlcyA9CiAgICAgICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYSBeICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYjsKICByZXR1cm4gKHZlY3RvciBmbG9hdClfX3JlczsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGZsb2F0IF9fQVRUUlNfb19haSB2ZWNfdnhvcih2ZWN0b3IgZmxvYXQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGludCBfX2IpIHsKICB2ZWN0b3IgdW5zaWduZWQgaW50IF9fcmVzID0KICAgICAgKHZlY3RvciB1bnNpZ25lZCBpbnQpX19hIF4gKHZlY3RvciB1bnNpZ25lZCBpbnQpX19iOwogIHJldHVybiAodmVjdG9yIGZsb2F0KV9fcmVzOwp9CgojaWZkZWYgX19WU1hfXwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX3Z4b3IodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19hIF4gX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX3Z4b3IodmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuICh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2EgXiBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfdnhvcih2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19hIF4gKHZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX3Z4b3IodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYSBeIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX3Z4b3IodmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19hIF4gX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfdnhvcih2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2EgXiAodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX3Z4b3IodmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYSwgdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2EgXiBfX2I7Cn0KI2VuZGlmCgovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gZXh0ZW5zaW9ucyBmb3IgQ0JFQSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwoKLyogdmVjX2V4dHJhY3QgKi8KCnN0YXRpYyBfX2lubGluZV9fIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haSB2ZWNfZXh0cmFjdCh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19hW19fYiAmIDB4Zl07Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19leHRyYWN0KHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19hW19fYiAmIDB4Zl07Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpIHZlY19leHRyYWN0KHZlY3RvciBib29sIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX2FbX19iICYgMHhmXTsKfQoKc3RhdGljIF9faW5saW5lX18gc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfZXh0cmFjdCh2ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX2FbX19iICYgMHg3XTsKfQoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY19leHRyYWN0KHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYVtfX2IgJiAweDddOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkgdmVjX2V4dHJhY3QodmVjdG9yIGJvb2wgc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19hW19fYiAmIDB4N107Cn0KCnN0YXRpYyBfX2lubGluZV9fIHNpZ25lZCBpbnQgX19BVFRSU19vX2FpIHZlY19leHRyYWN0KHZlY3RvciBzaWduZWQgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19hW19fYiAmIDB4M107Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkgdmVjX2V4dHJhY3QodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19hW19fYiAmIDB4M107Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkgdmVjX2V4dHJhY3QodmVjdG9yIGJvb2wgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX2FbX19iICYgMHgzXTsKfQoKI2lmZGVmIF9fVlNYX18Kc3RhdGljIF9faW5saW5lX18gc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX2V4dHJhY3QodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLCBzaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX2FbX19iICYgMHgxXTsKfQoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfZXh0cmFjdCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19hW19fYiAmIDB4MV07Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX2V4dHJhY3QodmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYSwgc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19hW19fYiAmIDB4MV07Cn0KCnN0YXRpYyBfX2lubGluZV9fIGRvdWJsZSBfX0FUVFJTX29fYWkgdmVjX2V4dHJhY3QodmVjdG9yIGRvdWJsZSBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19hW19fYiAmIDB4MV07Cn0KI2VuZGlmCgpzdGF0aWMgX19pbmxpbmVfXyBmbG9hdCBfX0FUVFJTX29fYWkgdmVjX2V4dHJhY3QodmVjdG9yIGZsb2F0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYVtfX2IgJiAweDNdOwp9CgojaWZkZWYgX19QT1dFUjlfVkVDVE9SX18KCiNkZWZpbmUgdmVjX2luc2VydDRiIF9fYnVpbHRpbl92c3hfaW5zZXJ0d29yZAojZGVmaW5lIHZlY19leHRyYWN0NGIgX19idWlsdGluX3ZzeF9leHRyYWN0dXdvcmQKCi8qIHZlY19leHRyYWN0X2V4cCAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX2V4dHJhY3RfZXhwKHZlY3RvciBmbG9hdCBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX3ZzeF94dnhleHBzcChfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfZXh0cmFjdF9leHAodmVjdG9yIGRvdWJsZSBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX3ZzeF94dnhleHBkcChfX2EpOwp9CgovKiB2ZWNfZXh0cmFjdF9zaWcgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19leHRyYWN0X3NpZyh2ZWN0b3IgZmxvYXQgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfeHZ4c2lnc3AoX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX2V4dHJhY3Rfc2lnICh2ZWN0b3IgZG91YmxlIF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fdnN4X3h2eHNpZ2RwKF9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkKdmVjX2V4dHJhY3RfZnAzMl9mcm9tX3Nob3J0aCh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hKSB7CiAgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYiA9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogICAgICAgICAgICBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX2EsIF9fYSwgMCwgLTEsIDEsIC0xLCAyLCAtMSwgMywgLTEpOwojZWxzZQogICAgICAgICAgICBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX2EsIF9fYSwgLTEsIDAsIC0xLCAxLCAtMSwgMiwgLTEsIDMpOwojZW5kaWYKICByZXR1cm4gX19idWlsdGluX3ZzeF94dmN2aHBzcChfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpCnZlY19leHRyYWN0X2ZwMzJfZnJvbV9zaG9ydGwodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSkgewogIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IgPQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICAgICAgICAgICAgX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19hLCBfX2EsIDQsIC0xLCA1LCAtMSwgNiwgLTEsIDcsIC0xKTsKI2Vsc2UKICAgICAgICAgICAgX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19hLCBfX2EsIC0xLCA0LCAtMSwgNSwgLTEsIDYsIC0xLCA3KTsKI2VuZGlmCiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfeHZjdmhwc3AoX19iKTsKfQojZW5kaWYgLyogX19QT1dFUjlfVkVDVE9SX18gKi8KCi8qIHZlY19pbnNlcnQgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX2luc2VydChzaWduZWQgY2hhciBfX2EsIHZlY3RvciBzaWduZWQgY2hhciBfX2IsIGludCBfX2MpIHsKICBfX2JbX19jICYgMHhGXSA9IF9fYTsKICByZXR1cm4gX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX2luc2VydCh1bnNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iLCBpbnQgX19jKSB7CiAgX19iW19fYyAmIDB4Rl0gPSBfX2E7CiAgcmV0dXJuIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgY2hhciBfX0FUVFJTX29fYWkgdmVjX2luc2VydCh1bnNpZ25lZCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBjaGFyIF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19jKSB7CiAgX19iW19fYyAmIDB4Rl0gPSBfX2E7CiAgcmV0dXJuIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX2luc2VydChzaWduZWQgc2hvcnQgX19hLCB2ZWN0b3Igc2lnbmVkIHNob3J0IF9fYiwgaW50IF9fYykgewogIF9fYltfX2MgJiAweDddID0gX19hOwogIHJldHVybiBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX2luc2VydCh1bnNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IsIGludCBfX2MpIHsKICBfX2JbX19jICYgMHg3XSA9IF9fYTsKICByZXR1cm4gX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX2luc2VydCh1bnNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciBib29sIHNob3J0IF9fYiwgaW50IF9fYykgewogIF9fYltfX2MgJiAweDddID0gX19hOwogIHJldHVybiBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfaW5zZXJ0KHNpZ25lZCBpbnQgX19hLCB2ZWN0b3Igc2lnbmVkIGludCBfX2IsIGludCBfX2MpIHsKICBfX2JbX19jICYgMHgzXSA9IF9fYTsKICByZXR1cm4gX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfaW5zZXJ0KHVuc2lnbmVkIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iLCBpbnQgX19jKSB7CiAgX19iW19fYyAmIDB4M10gPSBfX2E7CiAgcmV0dXJuIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgaW50IF9fQVRUUlNfb19haSB2ZWNfaW5zZXJ0KHVuc2lnbmVkIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYykgewogIF9fYltfX2MgJiAweDNdID0gX19hOwogIHJldHVybiBfX2I7Cn0KCiNpZmRlZiBfX1ZTWF9fCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfaW5zZXJ0KHNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2IsIGludCBfX2MpIHsKICBfX2JbX19jICYgMHgxXSA9IF9fYTsKICByZXR1cm4gX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfaW5zZXJ0KHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iLCBpbnQgX19jKSB7CiAgX19iW19fYyAmIDB4MV0gPSBfX2E7CiAgcmV0dXJuIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfaW5zZXJ0KHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2IsIGludCBfX2MpIHsKICBfX2JbX19jICYgMHgxXSA9IF9fYTsKICByZXR1cm4gX19iOwp9CnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBkb3VibGUgX19BVFRSU19vX2FpIHZlY19pbnNlcnQoZG91YmxlIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgZG91YmxlIF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19jKSB7CiAgX19iW19fYyAmIDB4MV0gPSBfX2E7CiAgcmV0dXJuIF9fYjsKfQojZW5kaWYKCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkgdmVjX2luc2VydChmbG9hdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgZmxvYXQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYykgewogIF9fYltfX2MgJiAweDNdID0gX19hOwogIHJldHVybiBfX2I7Cn0KCi8qIHZlY19sdmx4ICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19sdmx4KGludCBfX2EsIGNvbnN0IHNpZ25lZCBjaGFyICpfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0odmVjX2xkKF9fYSwgX19iKSwgKHZlY3RvciBzaWduZWQgY2hhcikoMCksCiAgICAgICAgICAgICAgICAgIHZlY19sdnNsKF9fYSwgX19iKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX2x2bHgoaW50IF9fYSwgY29uc3QgdmVjdG9yIHNpZ25lZCBjaGFyICpfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0odmVjX2xkKF9fYSwgX19iKSwgKHZlY3RvciBzaWduZWQgY2hhcikoMCksCiAgICAgICAgICAgICAgICAgIHZlY19sdnNsKF9fYSwgKHVuc2lnbmVkIGNoYXIgKilfX2IpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19sdmx4KGludCBfX2EsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKl9fYikgewogIHJldHVybiB2ZWNfcGVybSh2ZWNfbGQoX19hLCBfX2IpLCAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKDApLAogICAgICAgICAgICAgICAgICB2ZWNfbHZzbChfX2EsIF9fYikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX2x2bHgoaW50IF9fYSwgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgKl9fYikgewogIHJldHVybiB2ZWNfcGVybSh2ZWNfbGQoX19hLCBfX2IpLCAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKDApLAogICAgICAgICAgICAgICAgICB2ZWNfbHZzbChfX2EsICh1bnNpZ25lZCBjaGFyICopX19iKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGNoYXIgX19BVFRSU19vX2FpCnZlY19sdmx4KGludCBfX2EsIGNvbnN0IHZlY3RvciBib29sIGNoYXIgKl9fYikgewogIHJldHVybiB2ZWNfcGVybSh2ZWNfbGQoX19hLCBfX2IpLCAodmVjdG9yIGJvb2wgY2hhcikoMCksCiAgICAgICAgICAgICAgICAgIHZlY19sdnNsKF9fYSwgKHVuc2lnbmVkIGNoYXIgKilfX2IpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfbHZseChpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNob3J0ICpfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0odmVjX2xkKF9fYSwgX19iKSwgKHZlY3RvciBzaG9ydCkoMCksIHZlY19sdnNsKF9fYSwgX19iKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaG9ydCBfX0FUVFJTX29fYWkgdmVjX2x2bHgoaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2ZWN0b3Igc2hvcnQgKl9fYikgewogIHJldHVybiB2ZWNfcGVybSh2ZWNfbGQoX19hLCBfX2IpLCAodmVjdG9yIHNob3J0KSgwKSwKICAgICAgICAgICAgICAgICAgdmVjX2x2c2woX19hLCAodW5zaWduZWQgY2hhciAqKV9fYikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY19sdmx4KGludCBfX2EsIGNvbnN0IHVuc2lnbmVkIHNob3J0ICpfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0odmVjX2xkKF9fYSwgX19iKSwgKHZlY3RvciB1bnNpZ25lZCBzaG9ydCkoMCksCiAgICAgICAgICAgICAgICAgIHZlY19sdnNsKF9fYSwgX19iKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX2x2bHgoaW50IF9fYSwgY29uc3QgdmVjdG9yIHVuc2lnbmVkIHNob3J0ICpfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0odmVjX2xkKF9fYSwgX19iKSwgKHZlY3RvciB1bnNpZ25lZCBzaG9ydCkoMCksCiAgICAgICAgICAgICAgICAgIHZlY19sdnNsKF9fYSwgKHVuc2lnbmVkIGNoYXIgKilfX2IpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgc2hvcnQgX19BVFRSU19vX2FpCnZlY19sdmx4KGludCBfX2EsIGNvbnN0IHZlY3RvciBib29sIHNob3J0ICpfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0odmVjX2xkKF9fYSwgX19iKSwgKHZlY3RvciBib29sIHNob3J0KSgwKSwKICAgICAgICAgICAgICAgICAgdmVjX2x2c2woX19hLCAodW5zaWduZWQgY2hhciAqKV9fYikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgcGl4ZWwgX19BVFRSU19vX2FpIHZlY19sdmx4KGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVjdG9yIHBpeGVsICpfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0odmVjX2xkKF9fYSwgX19iKSwgKHZlY3RvciBwaXhlbCkoMCksCiAgICAgICAgICAgICAgICAgIHZlY19sdnNsKF9fYSwgKHVuc2lnbmVkIGNoYXIgKilfX2IpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX2x2bHgoaW50IF9fYSwgY29uc3QgaW50ICpfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0odmVjX2xkKF9fYSwgX19iKSwgKHZlY3RvciBpbnQpKDApLCB2ZWNfbHZzbChfX2EsIF9fYikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgaW50IF9fQVRUUlNfb19haSB2ZWNfbHZseChpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2ZWN0b3IgaW50ICpfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0odmVjX2xkKF9fYSwgX19iKSwgKHZlY3RvciBpbnQpKDApLAogICAgICAgICAgICAgICAgICB2ZWNfbHZzbChfX2EsICh1bnNpZ25lZCBjaGFyICopX19iKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19sdmx4KGludCBfX2EsIGNvbnN0IHVuc2lnbmVkIGludCAqX19iKSB7CiAgcmV0dXJuIHZlY19wZXJtKHZlY19sZChfX2EsIF9fYiksICh2ZWN0b3IgdW5zaWduZWQgaW50KSgwKSwKICAgICAgICAgICAgICAgICAgdmVjX2x2c2woX19hLCBfX2IpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX2x2bHgoaW50IF9fYSwgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGludCAqX19iKSB7CiAgcmV0dXJuIHZlY19wZXJtKHZlY19sZChfX2EsIF9fYiksICh2ZWN0b3IgdW5zaWduZWQgaW50KSgwKSwKICAgICAgICAgICAgICAgICAgdmVjX2x2c2woX19hLCAodW5zaWduZWQgY2hhciAqKV9fYikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBpbnQgX19BVFRSU19vX2FpCnZlY19sdmx4KGludCBfX2EsIGNvbnN0IHZlY3RvciBib29sIGludCAqX19iKSB7CiAgcmV0dXJuIHZlY19wZXJtKHZlY19sZChfX2EsIF9fYiksICh2ZWN0b3IgYm9vbCBpbnQpKDApLAogICAgICAgICAgICAgICAgICB2ZWNfbHZzbChfX2EsICh1bnNpZ25lZCBjaGFyICopX19iKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkgdmVjX2x2bHgoaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCAqX19iKSB7CiAgcmV0dXJuIHZlY19wZXJtKHZlY19sZChfX2EsIF9fYiksICh2ZWN0b3IgZmxvYXQpKDApLCB2ZWNfbHZzbChfX2EsIF9fYikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpIHZlY19sdmx4KGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVjdG9yIGZsb2F0ICpfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0odmVjX2xkKF9fYSwgX19iKSwgKHZlY3RvciBmbG9hdCkoMCksCiAgICAgICAgICAgICAgICAgIHZlY19sdnNsKF9fYSwgKHVuc2lnbmVkIGNoYXIgKilfX2IpKTsKfQoKLyogdmVjX2x2bHhsICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19sdmx4bChpbnQgX19hLCBjb25zdCBzaWduZWQgY2hhciAqX19iKSB7CiAgcmV0dXJuIHZlY19wZXJtKHZlY19sZGwoX19hLCBfX2IpLCAodmVjdG9yIHNpZ25lZCBjaGFyKSgwKSwKICAgICAgICAgICAgICAgICAgdmVjX2x2c2woX19hLCBfX2IpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfbHZseGwoaW50IF9fYSwgY29uc3QgdmVjdG9yIHNpZ25lZCBjaGFyICpfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0odmVjX2xkbChfX2EsIF9fYiksICh2ZWN0b3Igc2lnbmVkIGNoYXIpKDApLAogICAgICAgICAgICAgICAgICB2ZWNfbHZzbChfX2EsICh1bnNpZ25lZCBjaGFyICopX19iKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfbHZseGwoaW50IF9fYSwgY29uc3QgdW5zaWduZWQgY2hhciAqX19iKSB7CiAgcmV0dXJuIHZlY19wZXJtKHZlY19sZGwoX19hLCBfX2IpLCAodmVjdG9yIHVuc2lnbmVkIGNoYXIpKDApLAogICAgICAgICAgICAgICAgICB2ZWNfbHZzbChfX2EsIF9fYikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX2x2bHhsKGludCBfX2EsIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyICpfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0odmVjX2xkbChfX2EsIF9fYiksICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMCksCiAgICAgICAgICAgICAgICAgIHZlY19sdnNsKF9fYSwgKHVuc2lnbmVkIGNoYXIgKilfX2IpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgY2hhciBfX0FUVFJTX29fYWkKdmVjX2x2bHhsKGludCBfX2EsIGNvbnN0IHZlY3RvciBib29sIGNoYXIgKl9fYikgewogIHJldHVybiB2ZWNfcGVybSh2ZWNfbGRsKF9fYSwgX19iKSwgKHZlY3RvciBib29sIGNoYXIpKDApLAogICAgICAgICAgICAgICAgICB2ZWNfbHZzbChfX2EsICh1bnNpZ25lZCBjaGFyICopX19iKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaG9ydCBfX0FUVFJTX29fYWkgdmVjX2x2bHhsKGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNob3J0ICpfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0odmVjX2xkbChfX2EsIF9fYiksICh2ZWN0b3Igc2hvcnQpKDApLCB2ZWNfbHZzbChfX2EsIF9fYikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY19sdmx4bChpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2ZWN0b3Igc2hvcnQgKl9fYikgewogIHJldHVybiB2ZWNfcGVybSh2ZWNfbGRsKF9fYSwgX19iKSwgKHZlY3RvciBzaG9ydCkoMCksCiAgICAgICAgICAgICAgICAgIHZlY19sdnNsKF9fYSwgKHVuc2lnbmVkIGNoYXIgKilfX2IpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfbHZseGwoaW50IF9fYSwgY29uc3QgdW5zaWduZWQgc2hvcnQgKl9fYikgewogIHJldHVybiB2ZWNfcGVybSh2ZWNfbGRsKF9fYSwgX19iKSwgKHZlY3RvciB1bnNpZ25lZCBzaG9ydCkoMCksCiAgICAgICAgICAgICAgICAgIHZlY19sdnNsKF9fYSwgX19iKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX2x2bHhsKGludCBfX2EsIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBzaG9ydCAqX19iKSB7CiAgcmV0dXJuIHZlY19wZXJtKHZlY19sZGwoX19hLCBfX2IpLCAodmVjdG9yIHVuc2lnbmVkIHNob3J0KSgwKSwKICAgICAgICAgICAgICAgICAgdmVjX2x2c2woX19hLCAodW5zaWduZWQgY2hhciAqKV9fYikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX2x2bHhsKGludCBfX2EsIGNvbnN0IHZlY3RvciBib29sIHNob3J0ICpfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0odmVjX2xkbChfX2EsIF9fYiksICh2ZWN0b3IgYm9vbCBzaG9ydCkoMCksCiAgICAgICAgICAgICAgICAgIHZlY19sdnNsKF9fYSwgKHVuc2lnbmVkIGNoYXIgKilfX2IpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHBpeGVsIF9fQVRUUlNfb19haSB2ZWNfbHZseGwoaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVjdG9yIHBpeGVsICpfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0odmVjX2xkbChfX2EsIF9fYiksICh2ZWN0b3IgcGl4ZWwpKDApLAogICAgICAgICAgICAgICAgICB2ZWNfbHZzbChfX2EsICh1bnNpZ25lZCBjaGFyICopX19iKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY19sdmx4bChpbnQgX19hLCBjb25zdCBpbnQgKl9fYikgewogIHJldHVybiB2ZWNfcGVybSh2ZWNfbGRsKF9fYSwgX19iKSwgKHZlY3RvciBpbnQpKDApLCB2ZWNfbHZzbChfX2EsIF9fYikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgaW50IF9fQVRUUlNfb19haSB2ZWNfbHZseGwoaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZlY3RvciBpbnQgKl9fYikgewogIHJldHVybiB2ZWNfcGVybSh2ZWNfbGRsKF9fYSwgX19iKSwgKHZlY3RvciBpbnQpKDApLAogICAgICAgICAgICAgICAgICB2ZWNfbHZzbChfX2EsICh1bnNpZ25lZCBjaGFyICopX19iKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19sdmx4bChpbnQgX19hLCBjb25zdCB1bnNpZ25lZCBpbnQgKl9fYikgewogIHJldHVybiB2ZWNfcGVybSh2ZWNfbGRsKF9fYSwgX19iKSwgKHZlY3RvciB1bnNpZ25lZCBpbnQpKDApLAogICAgICAgICAgICAgICAgICB2ZWNfbHZzbChfX2EsIF9fYikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfbHZseGwoaW50IF9fYSwgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGludCAqX19iKSB7CiAgcmV0dXJuIHZlY19wZXJtKHZlY19sZGwoX19hLCBfX2IpLCAodmVjdG9yIHVuc2lnbmVkIGludCkoMCksCiAgICAgICAgICAgICAgICAgIHZlY19sdnNsKF9fYSwgKHVuc2lnbmVkIGNoYXIgKilfX2IpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgaW50IF9fQVRUUlNfb19haQp2ZWNfbHZseGwoaW50IF9fYSwgY29uc3QgdmVjdG9yIGJvb2wgaW50ICpfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0odmVjX2xkbChfX2EsIF9fYiksICh2ZWN0b3IgYm9vbCBpbnQpKDApLAogICAgICAgICAgICAgICAgICB2ZWNfbHZzbChfX2EsICh1bnNpZ25lZCBjaGFyICopX19iKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkgdmVjX2x2bHhsKGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0ICpfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0odmVjX2xkbChfX2EsIF9fYiksICh2ZWN0b3IgZmxvYXQpKDApLCB2ZWNfbHZzbChfX2EsIF9fYikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpIHZlY19sdmx4bChpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgZmxvYXQgKl9fYikgewogIHJldHVybiB2ZWNfcGVybSh2ZWNfbGRsKF9fYSwgX19iKSwgKHZlY3RvciBmbG9hdCkoMCksCiAgICAgICAgICAgICAgICAgIHZlY19sdnNsKF9fYSwgKHVuc2lnbmVkIGNoYXIgKilfX2IpKTsKfQoKLyogdmVjX2x2cnggKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX2x2cngoaW50IF9fYSwgY29uc3Qgc2lnbmVkIGNoYXIgKl9fYikgewogIHJldHVybiB2ZWNfcGVybSgodmVjdG9yIHNpZ25lZCBjaGFyKSgwKSwgdmVjX2xkKF9fYSwgX19iKSwKICAgICAgICAgICAgICAgICAgdmVjX2x2c2woX19hLCBfX2IpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfbHZyeChpbnQgX19hLCBjb25zdCB2ZWN0b3Igc2lnbmVkIGNoYXIgKl9fYikgewogIHJldHVybiB2ZWNfcGVybSgodmVjdG9yIHNpZ25lZCBjaGFyKSgwKSwgdmVjX2xkKF9fYSwgX19iKSwKICAgICAgICAgICAgICAgICAgdmVjX2x2c2woX19hLCAodW5zaWduZWQgY2hhciAqKV9fYikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX2x2cngoaW50IF9fYSwgY29uc3QgdW5zaWduZWQgY2hhciAqX19iKSB7CiAgcmV0dXJuIHZlY19wZXJtKCh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMCksIHZlY19sZChfX2EsIF9fYiksCiAgICAgICAgICAgICAgICAgIHZlY19sdnNsKF9fYSwgX19iKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfbHZyeChpbnQgX19hLCBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciAqX19iKSB7CiAgcmV0dXJuIHZlY19wZXJtKCh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMCksIHZlY19sZChfX2EsIF9fYiksCiAgICAgICAgICAgICAgICAgIHZlY19sdnNsKF9fYSwgKHVuc2lnbmVkIGNoYXIgKilfX2IpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgY2hhciBfX0FUVFJTX29fYWkKdmVjX2x2cngoaW50IF9fYSwgY29uc3QgdmVjdG9yIGJvb2wgY2hhciAqX19iKSB7CiAgcmV0dXJuIHZlY19wZXJtKCh2ZWN0b3IgYm9vbCBjaGFyKSgwKSwgdmVjX2xkKF9fYSwgX19iKSwKICAgICAgICAgICAgICAgICAgdmVjX2x2c2woX19hLCAodW5zaWduZWQgY2hhciAqKV9fYikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2hvcnQgX19BVFRSU19vX2FpIHZlY19sdnJ4KGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvcnQgKl9fYikgewogIHJldHVybiB2ZWNfcGVybSgodmVjdG9yIHNob3J0KSgwKSwgdmVjX2xkKF9fYSwgX19iKSwgdmVjX2x2c2woX19hLCBfX2IpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfbHZyeChpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZlY3RvciBzaG9ydCAqX19iKSB7CiAgcmV0dXJuIHZlY19wZXJtKCh2ZWN0b3Igc2hvcnQpKDApLCB2ZWNfbGQoX19hLCBfX2IpLAogICAgICAgICAgICAgICAgICB2ZWNfbHZzbChfX2EsICh1bnNpZ25lZCBjaGFyICopX19iKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX2x2cngoaW50IF9fYSwgY29uc3QgdW5zaWduZWQgc2hvcnQgKl9fYikgewogIHJldHVybiB2ZWNfcGVybSgodmVjdG9yIHVuc2lnbmVkIHNob3J0KSgwKSwgdmVjX2xkKF9fYSwgX19iKSwKICAgICAgICAgICAgICAgICAgdmVjX2x2c2woX19hLCBfX2IpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfbHZyeChpbnQgX19hLCBjb25zdCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgKl9fYikgewogIHJldHVybiB2ZWNfcGVybSgodmVjdG9yIHVuc2lnbmVkIHNob3J0KSgwKSwgdmVjX2xkKF9fYSwgX19iKSwKICAgICAgICAgICAgICAgICAgdmVjX2x2c2woX19hLCAodW5zaWduZWQgY2hhciAqKV9fYikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX2x2cngoaW50IF9fYSwgY29uc3QgdmVjdG9yIGJvb2wgc2hvcnQgKl9fYikgewogIHJldHVybiB2ZWNfcGVybSgodmVjdG9yIGJvb2wgc2hvcnQpKDApLCB2ZWNfbGQoX19hLCBfX2IpLAogICAgICAgICAgICAgICAgICB2ZWNfbHZzbChfX2EsICh1bnNpZ25lZCBjaGFyICopX19iKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBwaXhlbCBfX0FUVFJTX29fYWkgdmVjX2x2cngoaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2ZWN0b3IgcGl4ZWwgKl9fYikgewogIHJldHVybiB2ZWNfcGVybSgodmVjdG9yIHBpeGVsKSgwKSwgdmVjX2xkKF9fYSwgX19iKSwKICAgICAgICAgICAgICAgICAgdmVjX2x2c2woX19hLCAodW5zaWduZWQgY2hhciAqKV9fYikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgaW50IF9fQVRUUlNfb19haSB2ZWNfbHZyeChpbnQgX19hLCBjb25zdCBpbnQgKl9fYikgewogIHJldHVybiB2ZWNfcGVybSgodmVjdG9yIGludCkoMCksIHZlY19sZChfX2EsIF9fYiksIHZlY19sdnNsKF9fYSwgX19iKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY19sdnJ4KGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZlY3RvciBpbnQgKl9fYikgewogIHJldHVybiB2ZWNfcGVybSgodmVjdG9yIGludCkoMCksIHZlY19sZChfX2EsIF9fYiksCiAgICAgICAgICAgICAgICAgIHZlY19sdnNsKF9fYSwgKHVuc2lnbmVkIGNoYXIgKilfX2IpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX2x2cngoaW50IF9fYSwgY29uc3QgdW5zaWduZWQgaW50ICpfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0oKHZlY3RvciB1bnNpZ25lZCBpbnQpKDApLCB2ZWNfbGQoX19hLCBfX2IpLAogICAgICAgICAgICAgICAgICB2ZWNfbHZzbChfX2EsIF9fYikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfbHZyeChpbnQgX19hLCBjb25zdCB2ZWN0b3IgdW5zaWduZWQgaW50ICpfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0oKHZlY3RvciB1bnNpZ25lZCBpbnQpKDApLCB2ZWNfbGQoX19hLCBfX2IpLAogICAgICAgICAgICAgICAgICB2ZWNfbHZzbChfX2EsICh1bnNpZ25lZCBjaGFyICopX19iKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIGludCBfX0FUVFJTX29fYWkKdmVjX2x2cngoaW50IF9fYSwgY29uc3QgdmVjdG9yIGJvb2wgaW50ICpfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0oKHZlY3RvciBib29sIGludCkoMCksIHZlY19sZChfX2EsIF9fYiksCiAgICAgICAgICAgICAgICAgIHZlY19sdnNsKF9fYSwgKHVuc2lnbmVkIGNoYXIgKilfX2IpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGZsb2F0IF9fQVRUUlNfb19haSB2ZWNfbHZyeChpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0ICpfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0oKHZlY3RvciBmbG9hdCkoMCksIHZlY19sZChfX2EsIF9fYiksIHZlY19sdnNsKF9fYSwgX19iKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkgdmVjX2x2cngoaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2ZWN0b3IgZmxvYXQgKl9fYikgewogIHJldHVybiB2ZWNfcGVybSgodmVjdG9yIGZsb2F0KSgwKSwgdmVjX2xkKF9fYSwgX19iKSwKICAgICAgICAgICAgICAgICAgdmVjX2x2c2woX19hLCAodW5zaWduZWQgY2hhciAqKV9fYikpOwp9CgovKiB2ZWNfbHZyeGwgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX2x2cnhsKGludCBfX2EsIGNvbnN0IHNpZ25lZCBjaGFyICpfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0oKHZlY3RvciBzaWduZWQgY2hhcikoMCksIHZlY19sZGwoX19hLCBfX2IpLAogICAgICAgICAgICAgICAgICB2ZWNfbHZzbChfX2EsIF9fYikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19sdnJ4bChpbnQgX19hLCBjb25zdCB2ZWN0b3Igc2lnbmVkIGNoYXIgKl9fYikgewogIHJldHVybiB2ZWNfcGVybSgodmVjdG9yIHNpZ25lZCBjaGFyKSgwKSwgdmVjX2xkbChfX2EsIF9fYiksCiAgICAgICAgICAgICAgICAgIHZlY19sdnNsKF9fYSwgKHVuc2lnbmVkIGNoYXIgKilfX2IpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19sdnJ4bChpbnQgX19hLCBjb25zdCB1bnNpZ25lZCBjaGFyICpfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0oKHZlY3RvciB1bnNpZ25lZCBjaGFyKSgwKSwgdmVjX2xkbChfX2EsIF9fYiksCiAgICAgICAgICAgICAgICAgIHZlY19sdnNsKF9fYSwgX19iKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfbHZyeGwoaW50IF9fYSwgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgKl9fYikgewogIHJldHVybiB2ZWNfcGVybSgodmVjdG9yIHVuc2lnbmVkIGNoYXIpKDApLCB2ZWNfbGRsKF9fYSwgX19iKSwKICAgICAgICAgICAgICAgICAgdmVjX2x2c2woX19hLCAodW5zaWduZWQgY2hhciAqKV9fYikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfbHZyeGwoaW50IF9fYSwgY29uc3QgdmVjdG9yIGJvb2wgY2hhciAqX19iKSB7CiAgcmV0dXJuIHZlY19wZXJtKCh2ZWN0b3IgYm9vbCBjaGFyKSgwKSwgdmVjX2xkbChfX2EsIF9fYiksCiAgICAgICAgICAgICAgICAgIHZlY19sdnNsKF9fYSwgKHVuc2lnbmVkIGNoYXIgKilfX2IpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfbHZyeGwoaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvcnQgKl9fYikgewogIHJldHVybiB2ZWNfcGVybSgodmVjdG9yIHNob3J0KSgwKSwgdmVjX2xkbChfX2EsIF9fYiksIHZlY19sdnNsKF9fYSwgX19iKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaG9ydCBfX0FUVFJTX29fYWkgdmVjX2x2cnhsKGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZlY3RvciBzaG9ydCAqX19iKSB7CiAgcmV0dXJuIHZlY19wZXJtKCh2ZWN0b3Igc2hvcnQpKDApLCB2ZWNfbGRsKF9fYSwgX19iKSwKICAgICAgICAgICAgICAgICAgdmVjX2x2c2woX19hLCAodW5zaWduZWQgY2hhciAqKV9fYikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY19sdnJ4bChpbnQgX19hLCBjb25zdCB1bnNpZ25lZCBzaG9ydCAqX19iKSB7CiAgcmV0dXJuIHZlY19wZXJtKCh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpKDApLCB2ZWNfbGRsKF9fYSwgX19iKSwKICAgICAgICAgICAgICAgICAgdmVjX2x2c2woX19hLCBfX2IpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfbHZyeGwoaW50IF9fYSwgY29uc3QgdmVjdG9yIHVuc2lnbmVkIHNob3J0ICpfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0oKHZlY3RvciB1bnNpZ25lZCBzaG9ydCkoMCksIHZlY19sZGwoX19hLCBfX2IpLAogICAgICAgICAgICAgICAgICB2ZWNfbHZzbChfX2EsICh1bnNpZ25lZCBjaGFyICopX19iKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBib29sIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfbHZyeGwoaW50IF9fYSwgY29uc3QgdmVjdG9yIGJvb2wgc2hvcnQgKl9fYikgewogIHJldHVybiB2ZWNfcGVybSgodmVjdG9yIGJvb2wgc2hvcnQpKDApLCB2ZWNfbGRsKF9fYSwgX19iKSwKICAgICAgICAgICAgICAgICAgdmVjX2x2c2woX19hLCAodW5zaWduZWQgY2hhciAqKV9fYikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgcGl4ZWwgX19BVFRSU19vX2FpIHZlY19sdnJ4bChpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2ZWN0b3IgcGl4ZWwgKl9fYikgewogIHJldHVybiB2ZWNfcGVybSgodmVjdG9yIHBpeGVsKSgwKSwgdmVjX2xkbChfX2EsIF9fYiksCiAgICAgICAgICAgICAgICAgIHZlY19sdnNsKF9fYSwgKHVuc2lnbmVkIGNoYXIgKilfX2IpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGludCBfX0FUVFJTX29fYWkgdmVjX2x2cnhsKGludCBfX2EsIGNvbnN0IGludCAqX19iKSB7CiAgcmV0dXJuIHZlY19wZXJtKCh2ZWN0b3IgaW50KSgwKSwgdmVjX2xkbChfX2EsIF9fYiksIHZlY19sdnNsKF9fYSwgX19iKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY19sdnJ4bChpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVjdG9yIGludCAqX19iKSB7CiAgcmV0dXJuIHZlY19wZXJtKCh2ZWN0b3IgaW50KSgwKSwgdmVjX2xkbChfX2EsIF9fYiksCiAgICAgICAgICAgICAgICAgIHZlY19sdnNsKF9fYSwgKHVuc2lnbmVkIGNoYXIgKilfX2IpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX2x2cnhsKGludCBfX2EsIGNvbnN0IHVuc2lnbmVkIGludCAqX19iKSB7CiAgcmV0dXJuIHZlY19wZXJtKCh2ZWN0b3IgdW5zaWduZWQgaW50KSgwKSwgdmVjX2xkbChfX2EsIF9fYiksCiAgICAgICAgICAgICAgICAgIHZlY19sdnNsKF9fYSwgX19iKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19sdnJ4bChpbnQgX19hLCBjb25zdCB2ZWN0b3IgdW5zaWduZWQgaW50ICpfX2IpIHsKICByZXR1cm4gdmVjX3Blcm0oKHZlY3RvciB1bnNpZ25lZCBpbnQpKDApLCB2ZWNfbGRsKF9fYSwgX19iKSwKICAgICAgICAgICAgICAgICAgdmVjX2x2c2woX19hLCAodW5zaWduZWQgY2hhciAqKV9fYikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBpbnQgX19BVFRSU19vX2FpCnZlY19sdnJ4bChpbnQgX19hLCBjb25zdCB2ZWN0b3IgYm9vbCBpbnQgKl9fYikgewogIHJldHVybiB2ZWNfcGVybSgodmVjdG9yIGJvb2wgaW50KSgwKSwgdmVjX2xkbChfX2EsIF9fYiksCiAgICAgICAgICAgICAgICAgIHZlY19sdnNsKF9fYSwgKHVuc2lnbmVkIGNoYXIgKilfX2IpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGZsb2F0IF9fQVRUUlNfb19haSB2ZWNfbHZyeGwoaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmxvYXQgKl9fYikgewogIHJldHVybiB2ZWNfcGVybSgodmVjdG9yIGZsb2F0KSgwKSwgdmVjX2xkbChfX2EsIF9fYiksIHZlY19sdnNsKF9fYSwgX19iKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkgdmVjX2x2cnhsKGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZlY3RvciBmbG9hdCAqX19iKSB7CiAgcmV0dXJuIHZlY19wZXJtKCh2ZWN0b3IgZmxvYXQpKDApLCB2ZWNfbGRsKF9fYSwgX19iKSwKICAgICAgICAgICAgICAgICAgdmVjX2x2c2woX19hLCAodW5zaWduZWQgY2hhciAqKV9fYikpOwp9CgovKiB2ZWNfc3R2bHggKi8KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZseCh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmVkIGNoYXIgKl9fYykgewogIHJldHVybiB2ZWNfc3QodmVjX3Blcm0odmVjX2x2cngoX19iLCBfX2MpLCBfX2EsIHZlY19sdnNyKF9fYiwgX19jKSksIF9fYiwKICAgICAgICAgICAgICAgIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZseCh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNpZ25lZCBjaGFyICpfX2MpIHsKICByZXR1cm4gdmVjX3N0KAogICAgICB2ZWNfcGVybSh2ZWNfbHZyeChfX2IsIF9fYyksIF9fYSwgdmVjX2x2c3IoX19iLCAodW5zaWduZWQgY2hhciAqKV9fYykpLAogICAgICBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZseCh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpfX2MpIHsKICByZXR1cm4gdmVjX3N0KHZlY19wZXJtKHZlY19sdnJ4KF9fYiwgX19jKSwgX19hLCB2ZWNfbHZzcihfX2IsIF9fYykpLCBfX2IsCiAgICAgICAgICAgICAgICBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3R2bHgodmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgKl9fYykgewogIHJldHVybiB2ZWNfc3QoCiAgICAgIHZlY19wZXJtKHZlY19sdnJ4KF9fYiwgX19jKSwgX19hLCB2ZWNfbHZzcihfX2IsICh1bnNpZ25lZCBjaGFyICopX19jKSksCiAgICAgIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dmx4KHZlY3RvciBib29sIGNoYXIgX19hLCBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgY2hhciAqX19jKSB7CiAgcmV0dXJuIHZlY19zdCgKICAgICAgdmVjX3Blcm0odmVjX2x2cngoX19iLCBfX2MpLCBfX2EsIHZlY19sdnNyKF9fYiwgKHVuc2lnbmVkIGNoYXIgKilfX2MpKSwKICAgICAgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3R2bHgodmVjdG9yIHNob3J0IF9fYSwgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0ICpfX2MpIHsKICByZXR1cm4gdmVjX3N0KHZlY19wZXJtKHZlY19sdnJ4KF9fYiwgX19jKSwgX19hLCB2ZWNfbHZzcihfX2IsIF9fYykpLCBfX2IsCiAgICAgICAgICAgICAgICBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3R2bHgodmVjdG9yIHNob3J0IF9fYSwgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaG9ydCAqX19jKSB7CiAgcmV0dXJuIHZlY19zdCgKICAgICAgdmVjX3Blcm0odmVjX2x2cngoX19iLCBfX2MpLCBfX2EsIHZlY19sdnNyKF9fYiwgKHVuc2lnbmVkIGNoYXIgKilfX2MpKSwKICAgICAgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3R2bHgodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2IsIHVuc2lnbmVkIHNob3J0ICpfX2MpIHsKICByZXR1cm4gdmVjX3N0KHZlY19wZXJtKHZlY19sdnJ4KF9fYiwgX19jKSwgX19hLCB2ZWNfbHZzcihfX2IsIF9fYykpLCBfX2IsCiAgICAgICAgICAgICAgICBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3R2bHgodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgKl9fYykgewogIHJldHVybiB2ZWNfc3QoCiAgICAgIHZlY19wZXJtKHZlY19sdnJ4KF9fYiwgX19jKSwgX19hLCB2ZWNfbHZzcihfX2IsICh1bnNpZ25lZCBjaGFyICopX19jKSksCiAgICAgIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dmx4KHZlY3RvciBib29sIHNob3J0IF9fYSwgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIHNob3J0ICpfX2MpIHsKICByZXR1cm4gdmVjX3N0KAogICAgICB2ZWNfcGVybSh2ZWNfbHZyeChfX2IsIF9fYyksIF9fYSwgdmVjX2x2c3IoX19iLCAodW5zaWduZWQgY2hhciAqKV9fYykpLAogICAgICBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZseCh2ZWN0b3IgcGl4ZWwgX19hLCBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHBpeGVsICpfX2MpIHsKICByZXR1cm4gdmVjX3N0KAogICAgICB2ZWNfcGVybSh2ZWNfbHZyeChfX2IsIF9fYyksIF9fYSwgdmVjX2x2c3IoX19iLCAodW5zaWduZWQgY2hhciAqKV9fYykpLAogICAgICBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZseCh2ZWN0b3IgaW50IF9fYSwgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqX19jKSB7CiAgcmV0dXJuIHZlY19zdCh2ZWNfcGVybSh2ZWNfbHZyeChfX2IsIF9fYyksIF9fYSwgdmVjX2x2c3IoX19iLCBfX2MpKSwgX19iLAogICAgICAgICAgICAgICAgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dmx4KHZlY3RvciBpbnQgX19hLCBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGludCAqX19jKSB7CiAgcmV0dXJuIHZlY19zdCgKICAgICAgdmVjX3Blcm0odmVjX2x2cngoX19iLCBfX2MpLCBfX2EsIHZlY19sdnNyKF9fYiwgKHVuc2lnbmVkIGNoYXIgKilfX2MpKSwKICAgICAgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3R2bHgodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKl9fYykgewogIHJldHVybiB2ZWNfc3QodmVjX3Blcm0odmVjX2x2cngoX19iLCBfX2MpLCBfX2EsIHZlY19sdnNyKF9fYiwgX19jKSksIF9fYiwKICAgICAgICAgICAgICAgIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZseCh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBpbnQgKl9fYykgewogIHJldHVybiB2ZWNfc3QoCiAgICAgIHZlY19wZXJtKHZlY19sdnJ4KF9fYiwgX19jKSwgX19hLCB2ZWNfbHZzcihfX2IsICh1bnNpZ25lZCBjaGFyICopX19jKSksCiAgICAgIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dmx4KHZlY3RvciBib29sIGludCBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBpbnQgKl9fYykgewogIHJldHVybiB2ZWNfc3QoCiAgICAgIHZlY19wZXJtKHZlY19sdnJ4KF9fYiwgX19jKSwgX19hLCB2ZWNfbHZzcihfX2IsICh1bnNpZ25lZCBjaGFyICopX19jKSksCiAgICAgIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dmx4KHZlY3RvciBmbG9hdCBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgZmxvYXQgKl9fYykgewogIHJldHVybiB2ZWNfc3QoCiAgICAgIHZlY19wZXJtKHZlY19sdnJ4KF9fYiwgX19jKSwgX19hLCB2ZWNfbHZzcihfX2IsICh1bnNpZ25lZCBjaGFyICopX19jKSksCiAgICAgIF9fYiwgX19jKTsKfQoKLyogdmVjX3N0dmx4bCAqLwoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dmx4bCh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25lZCBjaGFyICpfX2MpIHsKICByZXR1cm4gdmVjX3N0bCh2ZWNfcGVybSh2ZWNfbHZyeChfX2IsIF9fYyksIF9fYSwgdmVjX2x2c3IoX19iLCBfX2MpKSwgX19iLAogICAgICAgICAgICAgICAgIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZseGwodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2lnbmVkIGNoYXIgKl9fYykgewogIHJldHVybiB2ZWNfc3RsKAogICAgICB2ZWNfcGVybSh2ZWNfbHZyeChfX2IsIF9fYyksIF9fYSwgdmVjX2x2c3IoX19iLCAodW5zaWduZWQgY2hhciAqKV9fYykpLAogICAgICBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZseGwodmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2IsIHVuc2lnbmVkIGNoYXIgKl9fYykgewogIHJldHVybiB2ZWNfc3RsKHZlY19wZXJtKHZlY19sdnJ4KF9fYiwgX19jKSwgX19hLCB2ZWNfbHZzcihfX2IsIF9fYykpLCBfX2IsCiAgICAgICAgICAgICAgICAgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dmx4bCh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgY2hhciAqX19jKSB7CiAgcmV0dXJuIHZlY19zdGwoCiAgICAgIHZlY19wZXJtKHZlY19sdnJ4KF9fYiwgX19jKSwgX19hLCB2ZWNfbHZzcihfX2IsICh1bnNpZ25lZCBjaGFyICopX19jKSksCiAgICAgIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dmx4bCh2ZWN0b3IgYm9vbCBjaGFyIF9fYSwgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBjaGFyICpfX2MpIHsKICByZXR1cm4gdmVjX3N0bCgKICAgICAgdmVjX3Blcm0odmVjX2x2cngoX19iLCBfX2MpLCBfX2EsIHZlY19sdnNyKF9fYiwgKHVuc2lnbmVkIGNoYXIgKilfX2MpKSwKICAgICAgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3R2bHhsKHZlY3RvciBzaG9ydCBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnQgKl9fYykgewogIHJldHVybiB2ZWNfc3RsKHZlY19wZXJtKHZlY19sdnJ4KF9fYiwgX19jKSwgX19hLCB2ZWNfbHZzcihfX2IsIF9fYykpLCBfX2IsCiAgICAgICAgICAgICAgICAgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dmx4bCh2ZWN0b3Igc2hvcnQgX19hLCBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaG9ydCAqX19jKSB7CiAgcmV0dXJuIHZlY19zdGwoCiAgICAgIHZlY19wZXJtKHZlY19sdnJ4KF9fYiwgX19jKSwgX19hLCB2ZWNfbHZzcihfX2IsICh1bnNpZ25lZCBjaGFyICopX19jKSksCiAgICAgIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dmx4bCh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2IsIHVuc2lnbmVkIHNob3J0ICpfX2MpIHsKICByZXR1cm4gdmVjX3N0bCh2ZWNfcGVybSh2ZWNfbHZyeChfX2IsIF9fYyksIF9fYSwgdmVjX2x2c3IoX19iLCBfX2MpKSwgX19iLAogICAgICAgICAgICAgICAgIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZseGwodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBzaG9ydCAqX19jKSB7CiAgcmV0dXJuIHZlY19zdGwoCiAgICAgIHZlY19wZXJtKHZlY19sdnJ4KF9fYiwgX19jKSwgX19hLCB2ZWNfbHZzcihfX2IsICh1bnNpZ25lZCBjaGFyICopX19jKSksCiAgICAgIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dmx4bCh2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgc2hvcnQgKl9fYykgewogIHJldHVybiB2ZWNfc3RsKAogICAgICB2ZWNfcGVybSh2ZWNfbHZyeChfX2IsIF9fYyksIF9fYSwgdmVjX2x2c3IoX19iLCAodW5zaWduZWQgY2hhciAqKV9fYykpLAogICAgICBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZseGwodmVjdG9yIHBpeGVsIF9fYSwgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgcGl4ZWwgKl9fYykgewogIHJldHVybiB2ZWNfc3RsKAogICAgICB2ZWNfcGVybSh2ZWNfbHZyeChfX2IsIF9fYyksIF9fYSwgdmVjX2x2c3IoX19iLCAodW5zaWduZWQgY2hhciAqKV9fYykpLAogICAgICBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZseGwodmVjdG9yIGludCBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpfX2MpIHsKICByZXR1cm4gdmVjX3N0bCh2ZWNfcGVybSh2ZWNfbHZyeChfX2IsIF9fYyksIF9fYSwgdmVjX2x2c3IoX19iLCBfX2MpKSwgX19iLAogICAgICAgICAgICAgICAgIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZseGwodmVjdG9yIGludCBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGludCAqX19jKSB7CiAgcmV0dXJuIHZlY19zdGwoCiAgICAgIHZlY19wZXJtKHZlY19sdnJ4KF9fYiwgX19jKSwgX19hLCB2ZWNfbHZzcihfX2IsICh1bnNpZ25lZCBjaGFyICopX19jKSksCiAgICAgIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dmx4bCh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKl9fYykgewogIHJldHVybiB2ZWNfc3RsKHZlY19wZXJtKHZlY19sdnJ4KF9fYiwgX19jKSwgX19hLCB2ZWNfbHZzcihfX2IsIF9fYykpLCBfX2IsCiAgICAgICAgICAgICAgICAgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dmx4bCh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgaW50ICpfX2MpIHsKICByZXR1cm4gdmVjX3N0bCgKICAgICAgdmVjX3Blcm0odmVjX2x2cngoX19iLCBfX2MpLCBfX2EsIHZlY19sdnNyKF9fYiwgKHVuc2lnbmVkIGNoYXIgKilfX2MpKSwKICAgICAgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3R2bHhsKHZlY3RvciBib29sIGludCBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgaW50ICpfX2MpIHsKICByZXR1cm4gdmVjX3N0bCgKICAgICAgdmVjX3Blcm0odmVjX2x2cngoX19iLCBfX2MpLCBfX2EsIHZlY19sdnNyKF9fYiwgKHVuc2lnbmVkIGNoYXIgKilfX2MpKSwKICAgICAgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3R2bHhsKHZlY3RvciBmbG9hdCBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGZsb2F0ICpfX2MpIHsKICByZXR1cm4gdmVjX3N0bCgKICAgICAgdmVjX3Blcm0odmVjX2x2cngoX19iLCBfX2MpLCBfX2EsIHZlY19sdnNyKF9fYiwgKHVuc2lnbmVkIGNoYXIgKilfX2MpKSwKICAgICAgX19iLCBfX2MpOwp9CgovKiB2ZWNfc3R2cnggKi8KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZyeCh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmVkIGNoYXIgKl9fYykgewogIHJldHVybiB2ZWNfc3QodmVjX3Blcm0oX19hLCB2ZWNfbHZseChfX2IsIF9fYyksIHZlY19sdnNyKF9fYiwgX19jKSksIF9fYiwKICAgICAgICAgICAgICAgIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZyeCh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNpZ25lZCBjaGFyICpfX2MpIHsKICByZXR1cm4gdmVjX3N0KAogICAgICB2ZWNfcGVybShfX2EsIHZlY19sdmx4KF9fYiwgX19jKSwgdmVjX2x2c3IoX19iLCAodW5zaWduZWQgY2hhciAqKV9fYykpLAogICAgICBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZyeCh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpfX2MpIHsKICByZXR1cm4gdmVjX3N0KHZlY19wZXJtKF9fYSwgdmVjX2x2bHgoX19iLCBfX2MpLCB2ZWNfbHZzcihfX2IsIF9fYykpLCBfX2IsCiAgICAgICAgICAgICAgICBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3R2cngodmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgKl9fYykgewogIHJldHVybiB2ZWNfc3QoCiAgICAgIHZlY19wZXJtKF9fYSwgdmVjX2x2bHgoX19iLCBfX2MpLCB2ZWNfbHZzcihfX2IsICh1bnNpZ25lZCBjaGFyICopX19jKSksCiAgICAgIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dnJ4KHZlY3RvciBib29sIGNoYXIgX19hLCBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgY2hhciAqX19jKSB7CiAgcmV0dXJuIHZlY19zdCgKICAgICAgdmVjX3Blcm0oX19hLCB2ZWNfbHZseChfX2IsIF9fYyksIHZlY19sdnNyKF9fYiwgKHVuc2lnbmVkIGNoYXIgKilfX2MpKSwKICAgICAgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3R2cngodmVjdG9yIHNob3J0IF9fYSwgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0ICpfX2MpIHsKICByZXR1cm4gdmVjX3N0KHZlY19wZXJtKF9fYSwgdmVjX2x2bHgoX19iLCBfX2MpLCB2ZWNfbHZzcihfX2IsIF9fYykpLCBfX2IsCiAgICAgICAgICAgICAgICBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3R2cngodmVjdG9yIHNob3J0IF9fYSwgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaG9ydCAqX19jKSB7CiAgcmV0dXJuIHZlY19zdCgKICAgICAgdmVjX3Blcm0oX19hLCB2ZWNfbHZseChfX2IsIF9fYyksIHZlY19sdnNyKF9fYiwgKHVuc2lnbmVkIGNoYXIgKilfX2MpKSwKICAgICAgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3R2cngodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2IsIHVuc2lnbmVkIHNob3J0ICpfX2MpIHsKICByZXR1cm4gdmVjX3N0KHZlY19wZXJtKF9fYSwgdmVjX2x2bHgoX19iLCBfX2MpLCB2ZWNfbHZzcihfX2IsIF9fYykpLCBfX2IsCiAgICAgICAgICAgICAgICBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3R2cngodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgKl9fYykgewogIHJldHVybiB2ZWNfc3QoCiAgICAgIHZlY19wZXJtKF9fYSwgdmVjX2x2bHgoX19iLCBfX2MpLCB2ZWNfbHZzcihfX2IsICh1bnNpZ25lZCBjaGFyICopX19jKSksCiAgICAgIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dnJ4KHZlY3RvciBib29sIHNob3J0IF9fYSwgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIHNob3J0ICpfX2MpIHsKICByZXR1cm4gdmVjX3N0KAogICAgICB2ZWNfcGVybShfX2EsIHZlY19sdmx4KF9fYiwgX19jKSwgdmVjX2x2c3IoX19iLCAodW5zaWduZWQgY2hhciAqKV9fYykpLAogICAgICBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZyeCh2ZWN0b3IgcGl4ZWwgX19hLCBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHBpeGVsICpfX2MpIHsKICByZXR1cm4gdmVjX3N0KAogICAgICB2ZWNfcGVybShfX2EsIHZlY19sdmx4KF9fYiwgX19jKSwgdmVjX2x2c3IoX19iLCAodW5zaWduZWQgY2hhciAqKV9fYykpLAogICAgICBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZyeCh2ZWN0b3IgaW50IF9fYSwgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqX19jKSB7CiAgcmV0dXJuIHZlY19zdCh2ZWNfcGVybShfX2EsIHZlY19sdmx4KF9fYiwgX19jKSwgdmVjX2x2c3IoX19iLCBfX2MpKSwgX19iLAogICAgICAgICAgICAgICAgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dnJ4KHZlY3RvciBpbnQgX19hLCBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGludCAqX19jKSB7CiAgcmV0dXJuIHZlY19zdCgKICAgICAgdmVjX3Blcm0oX19hLCB2ZWNfbHZseChfX2IsIF9fYyksIHZlY19sdnNyKF9fYiwgKHVuc2lnbmVkIGNoYXIgKilfX2MpKSwKICAgICAgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3R2cngodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKl9fYykgewogIHJldHVybiB2ZWNfc3QodmVjX3Blcm0oX19hLCB2ZWNfbHZseChfX2IsIF9fYyksIHZlY19sdnNyKF9fYiwgX19jKSksIF9fYiwKICAgICAgICAgICAgICAgIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZyeCh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBpbnQgKl9fYykgewogIHJldHVybiB2ZWNfc3QoCiAgICAgIHZlY19wZXJtKF9fYSwgdmVjX2x2bHgoX19iLCBfX2MpLCB2ZWNfbHZzcihfX2IsICh1bnNpZ25lZCBjaGFyICopX19jKSksCiAgICAgIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dnJ4KHZlY3RvciBib29sIGludCBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBpbnQgKl9fYykgewogIHJldHVybiB2ZWNfc3QoCiAgICAgIHZlY19wZXJtKF9fYSwgdmVjX2x2bHgoX19iLCBfX2MpLCB2ZWNfbHZzcihfX2IsICh1bnNpZ25lZCBjaGFyICopX19jKSksCiAgICAgIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dnJ4KHZlY3RvciBmbG9hdCBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgZmxvYXQgKl9fYykgewogIHJldHVybiB2ZWNfc3QoCiAgICAgIHZlY19wZXJtKF9fYSwgdmVjX2x2bHgoX19iLCBfX2MpLCB2ZWNfbHZzcihfX2IsICh1bnNpZ25lZCBjaGFyICopX19jKSksCiAgICAgIF9fYiwgX19jKTsKfQoKLyogdmVjX3N0dnJ4bCAqLwoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dnJ4bCh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25lZCBjaGFyICpfX2MpIHsKICByZXR1cm4gdmVjX3N0bCh2ZWNfcGVybShfX2EsIHZlY19sdmx4KF9fYiwgX19jKSwgdmVjX2x2c3IoX19iLCBfX2MpKSwgX19iLAogICAgICAgICAgICAgICAgIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZyeGwodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2lnbmVkIGNoYXIgKl9fYykgewogIHJldHVybiB2ZWNfc3RsKAogICAgICB2ZWNfcGVybShfX2EsIHZlY19sdmx4KF9fYiwgX19jKSwgdmVjX2x2c3IoX19iLCAodW5zaWduZWQgY2hhciAqKV9fYykpLAogICAgICBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZyeGwodmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2IsIHVuc2lnbmVkIGNoYXIgKl9fYykgewogIHJldHVybiB2ZWNfc3RsKHZlY19wZXJtKF9fYSwgdmVjX2x2bHgoX19iLCBfX2MpLCB2ZWNfbHZzcihfX2IsIF9fYykpLCBfX2IsCiAgICAgICAgICAgICAgICAgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dnJ4bCh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgY2hhciAqX19jKSB7CiAgcmV0dXJuIHZlY19zdGwoCiAgICAgIHZlY19wZXJtKF9fYSwgdmVjX2x2bHgoX19iLCBfX2MpLCB2ZWNfbHZzcihfX2IsICh1bnNpZ25lZCBjaGFyICopX19jKSksCiAgICAgIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dnJ4bCh2ZWN0b3IgYm9vbCBjaGFyIF9fYSwgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBjaGFyICpfX2MpIHsKICByZXR1cm4gdmVjX3N0bCgKICAgICAgdmVjX3Blcm0oX19hLCB2ZWNfbHZseChfX2IsIF9fYyksIHZlY19sdnNyKF9fYiwgKHVuc2lnbmVkIGNoYXIgKilfX2MpKSwKICAgICAgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3R2cnhsKHZlY3RvciBzaG9ydCBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnQgKl9fYykgewogIHJldHVybiB2ZWNfc3RsKHZlY19wZXJtKF9fYSwgdmVjX2x2bHgoX19iLCBfX2MpLCB2ZWNfbHZzcihfX2IsIF9fYykpLCBfX2IsCiAgICAgICAgICAgICAgICAgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dnJ4bCh2ZWN0b3Igc2hvcnQgX19hLCBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaG9ydCAqX19jKSB7CiAgcmV0dXJuIHZlY19zdGwoCiAgICAgIHZlY19wZXJtKF9fYSwgdmVjX2x2bHgoX19iLCBfX2MpLCB2ZWNfbHZzcihfX2IsICh1bnNpZ25lZCBjaGFyICopX19jKSksCiAgICAgIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dnJ4bCh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2IsIHVuc2lnbmVkIHNob3J0ICpfX2MpIHsKICByZXR1cm4gdmVjX3N0bCh2ZWNfcGVybShfX2EsIHZlY19sdmx4KF9fYiwgX19jKSwgdmVjX2x2c3IoX19iLCBfX2MpKSwgX19iLAogICAgICAgICAgICAgICAgIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZyeGwodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBzaG9ydCAqX19jKSB7CiAgcmV0dXJuIHZlY19zdGwoCiAgICAgIHZlY19wZXJtKF9fYSwgdmVjX2x2bHgoX19iLCBfX2MpLCB2ZWNfbHZzcihfX2IsICh1bnNpZ25lZCBjaGFyICopX19jKSksCiAgICAgIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dnJ4bCh2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgc2hvcnQgKl9fYykgewogIHJldHVybiB2ZWNfc3RsKAogICAgICB2ZWNfcGVybShfX2EsIHZlY19sdmx4KF9fYiwgX19jKSwgdmVjX2x2c3IoX19iLCAodW5zaWduZWQgY2hhciAqKV9fYykpLAogICAgICBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZyeGwodmVjdG9yIHBpeGVsIF9fYSwgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgcGl4ZWwgKl9fYykgewogIHJldHVybiB2ZWNfc3RsKAogICAgICB2ZWNfcGVybShfX2EsIHZlY19sdmx4KF9fYiwgX19jKSwgdmVjX2x2c3IoX19iLCAodW5zaWduZWQgY2hhciAqKV9fYykpLAogICAgICBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZyeGwodmVjdG9yIGludCBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpfX2MpIHsKICByZXR1cm4gdmVjX3N0bCh2ZWNfcGVybShfX2EsIHZlY19sdmx4KF9fYiwgX19jKSwgdmVjX2x2c3IoX19iLCBfX2MpKSwgX19iLAogICAgICAgICAgICAgICAgIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY19zdHZyeGwodmVjdG9yIGludCBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGludCAqX19jKSB7CiAgcmV0dXJuIHZlY19zdGwoCiAgICAgIHZlY19wZXJtKF9fYSwgdmVjX2x2bHgoX19iLCBfX2MpLCB2ZWNfbHZzcihfX2IsICh1bnNpZ25lZCBjaGFyICopX19jKSksCiAgICAgIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dnJ4bCh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKl9fYykgewogIHJldHVybiB2ZWNfc3RsKHZlY19wZXJtKF9fYSwgdmVjX2x2bHgoX19iLCBfX2MpLCB2ZWNfbHZzcihfX2IsIF9fYykpLCBfX2IsCiAgICAgICAgICAgICAgICAgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3N0dnJ4bCh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgaW50IF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgaW50ICpfX2MpIHsKICByZXR1cm4gdmVjX3N0bCgKICAgICAgdmVjX3Blcm0oX19hLCB2ZWNfbHZseChfX2IsIF9fYyksIHZlY19sdnNyKF9fYiwgKHVuc2lnbmVkIGNoYXIgKilfX2MpKSwKICAgICAgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3R2cnhsKHZlY3RvciBib29sIGludCBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgaW50ICpfX2MpIHsKICByZXR1cm4gdmVjX3N0bCgKICAgICAgdmVjX3Blcm0oX19hLCB2ZWNfbHZseChfX2IsIF9fYyksIHZlY19sdnNyKF9fYiwgKHVuc2lnbmVkIGNoYXIgKilfX2MpKSwKICAgICAgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfc3R2cnhsKHZlY3RvciBmbG9hdCBfX2EsIGludCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGZsb2F0ICpfX2MpIHsKICByZXR1cm4gdmVjX3N0bCgKICAgICAgdmVjX3Blcm0oX19hLCB2ZWNfbHZseChfX2IsIF9fYyksIHZlY19sdnNyKF9fYiwgKHVuc2lnbmVkIGNoYXIgKilfX2MpKSwKICAgICAgX19iLCBfX2MpOwp9CgovKiB2ZWNfcHJvbW90ZSAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haSB2ZWNfcHJvbW90ZShzaWduZWQgY2hhciBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYikgewogIHZlY3RvciBzaWduZWQgY2hhciBfX3JlcyA9ICh2ZWN0b3Igc2lnbmVkIGNoYXIpKDApOwogIF9fcmVzW19fYiAmIDB4N10gPSBfX2E7CiAgcmV0dXJuIF9fcmVzOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3Byb21vdGUodW5zaWduZWQgY2hhciBfX2EsIGludCBfX2IpIHsKICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX3JlcyA9ICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoMCk7CiAgX19yZXNbX19iICYgMHg3XSA9IF9fYTsKICByZXR1cm4gX19yZXM7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaG9ydCBfX0FUVFJTX29fYWkgdmVjX3Byb21vdGUoc2hvcnQgX19hLCBpbnQgX19iKSB7CiAgdmVjdG9yIHNob3J0IF9fcmVzID0gKHZlY3RvciBzaG9ydCkoMCk7CiAgX19yZXNbX19iICYgMHg3XSA9IF9fYTsKICByZXR1cm4gX19yZXM7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3Byb21vdGUodW5zaWduZWQgc2hvcnQgX19hLCBpbnQgX19iKSB7CiAgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fcmVzID0gKHZlY3RvciB1bnNpZ25lZCBzaG9ydCkoMCk7CiAgX19yZXNbX19iICYgMHg3XSA9IF9fYTsKICByZXR1cm4gX19yZXM7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY19wcm9tb3RlKGludCBfX2EsIGludCBfX2IpIHsKICB2ZWN0b3IgaW50IF9fcmVzID0gKHZlY3RvciBpbnQpKDApOwogIF9fcmVzW19fYiAmIDB4M10gPSBfX2E7CiAgcmV0dXJuIF9fcmVzOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haSB2ZWNfcHJvbW90ZSh1bnNpZ25lZCBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iKSB7CiAgdmVjdG9yIHVuc2lnbmVkIGludCBfX3JlcyA9ICh2ZWN0b3IgdW5zaWduZWQgaW50KSgwKTsKICBfX3Jlc1tfX2IgJiAweDNdID0gX19hOwogIHJldHVybiBfX3JlczsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGZsb2F0IF9fQVRUUlNfb19haSB2ZWNfcHJvbW90ZShmbG9hdCBfX2EsIGludCBfX2IpIHsKICB2ZWN0b3IgZmxvYXQgX19yZXMgPSAodmVjdG9yIGZsb2F0KSgwKTsKICBfX3Jlc1tfX2IgJiAweDNdID0gX19hOwogIHJldHVybiBfX3JlczsKfQoKI2lmZGVmIF9fVlNYX18Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGRvdWJsZSBfX0FUVFJTX29fYWkgdmVjX3Byb21vdGUoZG91YmxlIF9fYSwgaW50IF9fYikgewogIHZlY3RvciBkb3VibGUgX19yZXMgPSAodmVjdG9yIGRvdWJsZSkoMCk7CiAgX19yZXNbX19iICYgMHgxXSA9IF9fYTsKICByZXR1cm4gX19yZXM7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfcHJvbW90ZShzaWduZWQgbG9uZyBsb25nIF9fYSwgaW50IF9fYikgewogIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fcmVzID0gKHZlY3RvciBzaWduZWQgbG9uZyBsb25nKSgwKTsKICBfX3Jlc1tfX2IgJiAweDFdID0gX19hOwogIHJldHVybiBfX3JlczsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX3Byb21vdGUodW5zaWduZWQgbG9uZyBsb25nIF9fYSwgaW50IF9fYikgewogIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19yZXMgPSAodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZykoMCk7CiAgX19yZXNbX19iICYgMHgxXSA9IF9fYTsKICByZXR1cm4gX19yZXM7Cn0KI2VuZGlmCgovKiB2ZWNfc3BsYXRzICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpIHZlY19zcGxhdHMoc2lnbmVkIGNoYXIgX19hKSB7CiAgcmV0dXJuICh2ZWN0b3Igc2lnbmVkIGNoYXIpKF9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfc3BsYXRzKHVuc2lnbmVkIGNoYXIgX19hKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgY2hhcikoX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfc3BsYXRzKHNob3J0IF9fYSkgewogIHJldHVybiAodmVjdG9yIHNob3J0KShfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY19zcGxhdHModW5zaWduZWQgc2hvcnQgX19hKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpKF9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBpbnQgX19BVFRSU19vX2FpIHZlY19zcGxhdHMoaW50IF9fYSkgewogIHJldHVybiAodmVjdG9yIGludCkoX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX3NwbGF0cyh1bnNpZ25lZCBpbnQgX19hKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgaW50KShfX2EpOwp9CgojaWZkZWYgX19WU1hfXwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX3NwbGF0cyhzaWduZWQgbG9uZyBsb25nIF9fYSkgewogIHJldHVybiAodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpKF9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19zcGxhdHModW5zaWduZWQgbG9uZyBsb25nIF9fYSkgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZykoX19hKTsKfQoKI2lmIGRlZmluZWQoX19QT1dFUjhfVkVDVE9SX18pICYmIGRlZmluZWQoX19wb3dlcnBjNjRfXykgJiYgICAgICAgICAgICAgICAgICAgIFwKICAgIGRlZmluZWQoX19TSVpFT0ZfSU5UMTI4X18pCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgX19pbnQxMjggX19BVFRSU19vX2FpCnZlY19zcGxhdHMoc2lnbmVkIF9faW50MTI4IF9fYSkgewogIHJldHVybiAodmVjdG9yIHNpZ25lZCBfX2ludDEyOCkoX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fQVRUUlNfb19haQp2ZWNfc3BsYXRzKHVuc2lnbmVkIF9faW50MTI4IF9fYSkgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIF9faW50MTI4KShfX2EpOwp9CgojZW5kaWYKCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBkb3VibGUgX19BVFRSU19vX2FpIHZlY19zcGxhdHMoZG91YmxlIF9fYSkgewogIHJldHVybiAodmVjdG9yIGRvdWJsZSkoX19hKTsKfQojZW5kaWYKCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkgdmVjX3NwbGF0cyhmbG9hdCBfX2EpIHsKICByZXR1cm4gKHZlY3RvciBmbG9hdCkoX19hKTsKfQoKLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gcHJlZGljYXRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KCi8qIHZlY19hbGxfZXEgKi8KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9lcSh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1Yl9wKF9fQ1I2X0xULCAodmVjdG9yIGNoYXIpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgY2hhcilfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfZXEodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXViX3AoX19DUjZfTFQsICh2ZWN0b3IgY2hhcilfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBjaGFyKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9lcSh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdWJfcChfX0NSNl9MVCwgKHZlY3RvciBjaGFyKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGNoYXIpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX2VxKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXViX3AoX19DUjZfTFQsICh2ZWN0b3IgY2hhcilfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBjaGFyKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9lcSh2ZWN0b3IgYm9vbCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdWJfcChfX0NSNl9MVCwgKHZlY3RvciBjaGFyKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGNoYXIpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX2VxKHZlY3RvciBib29sIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXViX3AoX19DUjZfTFQsICh2ZWN0b3IgY2hhcilfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBjaGFyKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9lcSh2ZWN0b3IgYm9vbCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXViX3AoX19DUjZfTFQsICh2ZWN0b3IgY2hhcilfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBjaGFyKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9lcSh2ZWN0b3Igc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1aF9wKF9fQ1I2X0xULCBfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9lcSh2ZWN0b3Igc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXVoX3AoX19DUjZfTFQsIF9fYSwgKHZlY3RvciBzaG9ydClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfZXEodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdWhfcChfX0NSNl9MVCwgKHZlY3RvciBzaG9ydClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBzaG9ydClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfZXEodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1aF9wKF9fQ1I2X0xULCAodmVjdG9yIHNob3J0KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHNob3J0KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9lcSh2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXVoX3AoX19DUjZfTFQsICh2ZWN0b3Igc2hvcnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3Igc2hvcnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX2VxKHZlY3RvciBib29sIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdWhfcChfX0NSNl9MVCwgKHZlY3RvciBzaG9ydClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBzaG9ydClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfZXEodmVjdG9yIGJvb2wgc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXVoX3AoX19DUjZfTFQsICh2ZWN0b3Igc2hvcnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3Igc2hvcnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX2VxKHZlY3RvciBwaXhlbCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgcGl4ZWwgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXVoX3AoX19DUjZfTFQsICh2ZWN0b3Igc2hvcnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3Igc2hvcnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX2VxKHZlY3RvciBpbnQgX19hLCB2ZWN0b3IgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1d19wKF9fQ1I2X0xULCBfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9lcSh2ZWN0b3IgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdXdfcChfX0NSNl9MVCwgX19hLCAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfZXEodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1d19wKF9fQ1I2X0xULCAodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX2VxKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1d19wKF9fQ1I2X0xULCAodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX2VxKHZlY3RvciBib29sIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1d19wKF9fQ1I2X0xULCAodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX2VxKHZlY3RvciBib29sIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1d19wKF9fQ1I2X0xULCAodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX2VxKHZlY3RvciBib29sIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXV3X3AoX19DUjZfTFQsICh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgojaWZkZWYgX19WU1hfXwpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfZXEodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiNpZmRlZiBfX1BPV0VSOF9WRUNUT1JfXwogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1ZF9wKF9fQ1I2X0xULCBfX2EsIF9fYik7CiNlbHNlCiAgLy8gTm8gdmNtcGVxdWQgb24gUG93ZXI3IHNvIHdlIHhvciB0aGUgdHdvIHZlY3RvcnMgYW5kIGNvbXBhcmUgYWdhaW5zdCB6ZXJvIGFzCiAgLy8gMzItYml0IGVsZW1lbnRzLgogIHJldHVybiB2ZWNfYWxsX2VxKCh2ZWN0b3Igc2lnbmVkIGludCl2ZWNfeG9yKF9fYSwgX19iKSwgKHZlY3RvciBzaWduZWQgaW50KTApOwojZW5kaWYKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX2VxKHZlY3RvciBsb25nIGxvbmcgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYikgewogIHJldHVybiB2ZWNfYWxsX2VxKCh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2EsICh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfZXEodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiB2ZWNfYWxsX2VxKCh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2EsICh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfZXEodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIHZlY19hbGxfZXEoKHZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYSwgKHZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9lcSh2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gdmVjX2FsbF9lcSgodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19hLCAodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX2VxKHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiB2ZWNfYWxsX2VxKCh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2EsICh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfZXEodmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gdmVjX2FsbF9lcSgodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19hLCAodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19iKTsKfQojZW5kaWYKCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9lcSh2ZWN0b3IgZmxvYXQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGZsb2F0IF9fYikgewojaWZkZWYgX19WU1hfXwogIHJldHVybiBfX2J1aWx0aW5fdnN4X3h2Y21wZXFzcF9wKF9fQ1I2X0xULCBfX2EsIF9fYik7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcWZwX3AoX19DUjZfTFQsIF9fYSwgX19iKTsKI2VuZGlmCn0KCiNpZmRlZiBfX1ZTWF9fCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9lcSh2ZWN0b3IgZG91YmxlIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBkb3VibGUgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfeHZjbXBlcWRwX3AoX19DUjZfTFQsIF9fYSwgX19iKTsKfQojZW5kaWYKCiNpZiBkZWZpbmVkKF9fUE9XRVIxMF9WRUNUT1JfXykgJiYgZGVmaW5lZChfX1NJWkVPRl9JTlQxMjhfXykKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX2VxKHZlY3RvciBzaWduZWQgX19pbnQxMjggX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNpZ25lZCBfX2ludDEyOCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdXFfcChfX0NSNl9MVCwgX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfZXEodmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdXFfcChfX0NSNl9MVCwgX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfZXEodmVjdG9yIGJvb2wgX19pbnQxMjggX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgX19pbnQxMjggX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXVxX3AoX19DUjZfTFQsIF9fYSwgX19iKTsKfQojZW5kaWYKCi8qIHZlY19hbGxfZ2UgKi8KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9nZSh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3RzYl9wKF9fQ1I2X0VRLCBfX2IsIF9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9nZSh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c2JfcChfX0NSNl9FUSwgKHZlY3RvciBzaWduZWQgY2hhcilfX2IsIF9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9nZSh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dWJfcChfX0NSNl9FUSwgX19iLCBfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfZ2UodmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dWJfcChfX0NSNl9FUSwgKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYiwgX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX2dlKHZlY3RvciBib29sIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3RzYl9wKF9fQ1I2X0VRLCBfX2IsICh2ZWN0b3Igc2lnbmVkIGNoYXIpX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX2dlKHZlY3RvciBib29sIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHViX3AoX19DUjZfRVEsIF9fYiwgKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9nZSh2ZWN0b3IgYm9vbCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHViX3AoX19DUjZfRVEsICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9nZSh2ZWN0b3Igc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3RzaF9wKF9fQ1I2X0VRLCBfX2IsIF9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9nZSh2ZWN0b3Igc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHNoX3AoX19DUjZfRVEsICh2ZWN0b3Igc2hvcnQpX19iLCBfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfZ2UodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dWhfcChfX0NSNl9FUSwgX19iLCBfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfZ2UodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1aF9wKF9fQ1I2X0VRLCAodmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfZ2UodmVjdG9yIGJvb2wgc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3RzaF9wKF9fQ1I2X0VRLCBfX2IsICh2ZWN0b3Igc2lnbmVkIHNob3J0KV9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9nZSh2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHVoX3AoX19DUjZfRVEsIF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9nZSh2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dWhfcChfX0NSNl9FUSwgKHZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfZ2UodmVjdG9yIGludCBfX2EsIHZlY3RvciBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHN3X3AoX19DUjZfRVEsIF9fYiwgX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX2dlKHZlY3RvciBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3Rzd19wKF9fQ1I2X0VRLCAodmVjdG9yIGludClfX2IsIF9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9nZSh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHV3X3AoX19DUjZfRVEsIF9fYiwgX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX2dlKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1d19wKF9fQ1I2X0VRLCAodmVjdG9yIHVuc2lnbmVkIGludClfX2IsIF9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9nZSh2ZWN0b3IgYm9vbCBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c3dfcChfX0NSNl9FUSwgX19iLCAodmVjdG9yIHNpZ25lZCBpbnQpX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX2dlKHZlY3RvciBib29sIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1d19wKF9fQ1I2X0VRLCBfX2IsICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9nZSh2ZWN0b3IgYm9vbCBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1d19wKF9fQ1I2X0VRLCAodmVjdG9yIHVuc2lnbmVkIGludClfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBpbnQpX19hKTsKfQoKI2lmZGVmIF9fVlNYX18Kc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX2dlKHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3RzZF9wKF9fQ1I2X0VRLCBfX2IsIF9fYSk7Cn0Kc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX2dlKHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c2RfcChfX0NSNl9FUSwgKHZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfZ2UodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1ZF9wKF9fQ1I2X0VRLCBfX2IsIF9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9nZSh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dWRfcChfX0NSNl9FUSwgKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9nZSh2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHNkX3AoX19DUjZfRVEsIF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX2dlKHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1ZF9wKF9fQ1I2X0VRLCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX2dlKHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHVkX3AoX19DUjZfRVEsICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2EpOwp9CiNlbmRpZgoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX2dlKHZlY3RvciBmbG9hdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgZmxvYXQgX19iKSB7CiNpZmRlZiBfX1ZTWF9fCiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfeHZjbXBnZXNwX3AoX19DUjZfTFQsIF9fYSwgX19iKTsKI2Vsc2UKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGdlZnBfcChfX0NSNl9MVCwgX19hLCBfX2IpOwojZW5kaWYKfQoKI2lmZGVmIF9fVlNYX18Kc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX2dlKHZlY3RvciBkb3VibGUgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGRvdWJsZSBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3ZzeF94dmNtcGdlZHBfcChfX0NSNl9MVCwgX19hLCBfX2IpOwp9CiNlbmRpZgoKI2lmIGRlZmluZWQoX19QT1dFUjEwX1ZFQ1RPUl9fKSAmJiBkZWZpbmVkKF9fU0laRU9GX0lOVDEyOF9fKQpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfZ2UodmVjdG9yIHNpZ25lZCBfX2ludDEyOCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3RzcV9wKF9fQ1I2X0VRLCBfX2IsIF9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9nZSh2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1cV9wKF9fQ1I2X0VRLCBfX2IsIF9fYSk7Cn0KI2VuZGlmCgovKiB2ZWNfYWxsX2d0ICovCgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfZ3QodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c2JfcChfX0NSNl9MVCwgX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfZ3QodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHNiX3AoX19DUjZfTFQsIF9fYSwgKHZlY3RvciBzaWduZWQgY2hhcilfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfZ3QodmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHViX3AoX19DUjZfTFQsIF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX2d0KHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHViX3AoX19DUjZfTFQsIF9fYSwgKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9ndCh2ZWN0b3IgYm9vbCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c2JfcChfX0NSNl9MVCwgKHZlY3RvciBzaWduZWQgY2hhcilfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9ndCh2ZWN0b3IgYm9vbCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1Yl9wKF9fQ1I2X0xULCAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfZ3QodmVjdG9yIGJvb2wgY2hhciBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1Yl9wKF9fQ1I2X0xULCAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfZ3QodmVjdG9yIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c2hfcChfX0NSNl9MVCwgX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfZ3QodmVjdG9yIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3RzaF9wKF9fQ1I2X0xULCBfX2EsICh2ZWN0b3Igc2hvcnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX2d0KHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHVoX3AoX19DUjZfTFQsIF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX2d0KHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dWhfcChfX0NSNl9MVCwgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX2d0KHZlY3RvciBib29sIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c2hfcChfX0NSNl9MVCwgKHZlY3RvciBzaWduZWQgc2hvcnQpX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfZ3QodmVjdG9yIGJvb2wgc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1aF9wKF9fQ1I2X0xULCAodmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfZ3QodmVjdG9yIGJvb2wgc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHVoX3AoX19DUjZfTFQsICh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX2d0KHZlY3RvciBpbnQgX19hLCB2ZWN0b3IgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3Rzd19wKF9fQ1I2X0xULCBfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9ndCh2ZWN0b3IgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c3dfcChfX0NSNl9MVCwgX19hLCAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfZ3QodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1d19wKF9fQ1I2X0xULCBfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9ndCh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dXdfcChfX0NSNl9MVCwgX19hLCAodmVjdG9yIHVuc2lnbmVkIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfZ3QodmVjdG9yIGJvb2wgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHN3X3AoX19DUjZfTFQsICh2ZWN0b3Igc2lnbmVkIGludClfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9ndCh2ZWN0b3IgYm9vbCBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dXdfcChfX0NSNl9MVCwgKHZlY3RvciB1bnNpZ25lZCBpbnQpX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfZ3QodmVjdG9yIGJvb2wgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dXdfcChfX0NSNl9MVCwgKHZlY3RvciB1bnNpZ25lZCBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYik7Cn0KCiNpZmRlZiBfX1ZTWF9fCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9ndCh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c2RfcChfX0NSNl9MVCwgX19hLCBfX2IpOwp9CnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9ndCh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHNkX3AoX19DUjZfTFQsIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX2d0KHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dWRfcChfX0NSNl9MVCwgX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfZ3QodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHVkX3AoX19DUjZfTFQsIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfZ3QodmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3RzZF9wKF9fQ1I2X0xULCAodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9ndCh2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dWRfcChfX0NSNl9MVCwgKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9ndCh2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1ZF9wKF9fQ1I2X0xULCAodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19iKTsKfQojZW5kaWYKCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9ndCh2ZWN0b3IgZmxvYXQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGZsb2F0IF9fYikgewojaWZkZWYgX19WU1hfXwogIHJldHVybiBfX2J1aWx0aW5fdnN4X3h2Y21wZ3RzcF9wKF9fQ1I2X0xULCBfX2EsIF9fYik7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndGZwX3AoX19DUjZfTFQsIF9fYSwgX19iKTsKI2VuZGlmCn0KCiNpZmRlZiBfX1ZTWF9fCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9ndCh2ZWN0b3IgZG91YmxlIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBkb3VibGUgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfeHZjbXBndGRwX3AoX19DUjZfTFQsIF9fYSwgX19iKTsKfQojZW5kaWYKCiNpZiBkZWZpbmVkKF9fUE9XRVIxMF9WRUNUT1JfXykgJiYgZGVmaW5lZChfX1NJWkVPRl9JTlQxMjhfXykKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX2d0KHZlY3RvciBzaWduZWQgX19pbnQxMjggX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNpZ25lZCBfX2ludDEyOCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c3FfcChfX0NSNl9MVCwgX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfZ3QodmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dXFfcChfX0NSNl9MVCwgX19hLCBfX2IpOwp9CiNlbmRpZgoKLyogdmVjX2FsbF9pbiAqLwoKc3RhdGljIF9faW5saW5lX18gaW50IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKdmVjX2FsbF9pbih2ZWN0b3IgZmxvYXQgX19hLCB2ZWN0b3IgZmxvYXQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBiZnBfcChfX0NSNl9FUSwgX19hLCBfX2IpOwp9CgovKiB2ZWNfYWxsX2xlICovCgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfbGUodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c2JfcChfX0NSNl9FUSwgX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfbGUodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHNiX3AoX19DUjZfRVEsIF9fYSwgKHZlY3RvciBzaWduZWQgY2hhcilfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfbGUodmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHViX3AoX19DUjZfRVEsIF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX2xlKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHViX3AoX19DUjZfRVEsIF9fYSwgKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9sZSh2ZWN0b3IgYm9vbCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c2JfcChfX0NSNl9FUSwgKHZlY3RvciBzaWduZWQgY2hhcilfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9sZSh2ZWN0b3IgYm9vbCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1Yl9wKF9fQ1I2X0VRLCAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfbGUodmVjdG9yIGJvb2wgY2hhciBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1Yl9wKF9fQ1I2X0VRLCAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfbGUodmVjdG9yIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c2hfcChfX0NSNl9FUSwgX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfbGUodmVjdG9yIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3RzaF9wKF9fQ1I2X0VRLCBfX2EsICh2ZWN0b3Igc2hvcnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX2xlKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHVoX3AoX19DUjZfRVEsIF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX2xlKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dWhfcChfX0NSNl9FUSwgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX2xlKHZlY3RvciBib29sIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c2hfcChfX0NSNl9FUSwgKHZlY3RvciBzaWduZWQgc2hvcnQpX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfbGUodmVjdG9yIGJvb2wgc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1aF9wKF9fQ1I2X0VRLCAodmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfbGUodmVjdG9yIGJvb2wgc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHVoX3AoX19DUjZfRVEsICh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX2xlKHZlY3RvciBpbnQgX19hLCB2ZWN0b3IgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3Rzd19wKF9fQ1I2X0VRLCBfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9sZSh2ZWN0b3IgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c3dfcChfX0NSNl9FUSwgX19hLCAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfbGUodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1d19wKF9fQ1I2X0VRLCBfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9sZSh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dXdfcChfX0NSNl9FUSwgX19hLCAodmVjdG9yIHVuc2lnbmVkIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfbGUodmVjdG9yIGJvb2wgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHN3X3AoX19DUjZfRVEsICh2ZWN0b3Igc2lnbmVkIGludClfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9sZSh2ZWN0b3IgYm9vbCBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dXdfcChfX0NSNl9FUSwgKHZlY3RvciB1bnNpZ25lZCBpbnQpX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfbGUodmVjdG9yIGJvb2wgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dXdfcChfX0NSNl9FUSwgKHZlY3RvciB1bnNpZ25lZCBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYik7Cn0KCiNpZmRlZiBfX1ZTWF9fCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9sZSh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c2RfcChfX0NSNl9FUSwgX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfbGUodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1ZF9wKF9fQ1I2X0VRLCBfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9sZSh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHNkX3AoX19DUjZfRVEsIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX2xlKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1ZF9wKF9fQ1I2X0VRLCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX2xlKHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c2RfcChfX0NSNl9FUSwgKHZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfbGUodmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHVkX3AoX19DUjZfRVEsICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfbGUodmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dWRfcChfX0NSNl9FUSwgKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYik7Cn0KI2VuZGlmCgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfbGUodmVjdG9yIGZsb2F0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBmbG9hdCBfX2IpIHsKI2lmZGVmIF9fVlNYX18KICByZXR1cm4gX19idWlsdGluX3ZzeF94dmNtcGdlc3BfcChfX0NSNl9MVCwgX19iLCBfX2EpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ2VmcF9wKF9fQ1I2X0xULCBfX2IsIF9fYSk7CiNlbmRpZgp9CgojaWZkZWYgX19WU1hfXwpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfbGUodmVjdG9yIGRvdWJsZSBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgZG91YmxlIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fdnN4X3h2Y21wZ2VkcF9wKF9fQ1I2X0xULCBfX2IsIF9fYSk7Cn0KI2VuZGlmCgojaWYgZGVmaW5lZChfX1BPV0VSMTBfVkVDVE9SX18pICYmIGRlZmluZWQoX19TSVpFT0ZfSU5UMTI4X18pCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9sZSh2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaWduZWQgX19pbnQxMjggX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHNxX3AoX19DUjZfRVEsIF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX2xlKHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHVxX3AoX19DUjZfRVEsIF9fYSwgX19iKTsKfQojZW5kaWYKCi8qIHZlY19hbGxfbHQgKi8KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9sdCh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3RzYl9wKF9fQ1I2X0xULCBfX2IsIF9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9sdCh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c2JfcChfX0NSNl9MVCwgKHZlY3RvciBzaWduZWQgY2hhcilfX2IsIF9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9sdCh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dWJfcChfX0NSNl9MVCwgX19iLCBfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfbHQodmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dWJfcChfX0NSNl9MVCwgKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYiwgX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX2x0KHZlY3RvciBib29sIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3RzYl9wKF9fQ1I2X0xULCBfX2IsICh2ZWN0b3Igc2lnbmVkIGNoYXIpX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX2x0KHZlY3RvciBib29sIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHViX3AoX19DUjZfTFQsIF9fYiwgKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9sdCh2ZWN0b3IgYm9vbCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHViX3AoX19DUjZfTFQsICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9sdCh2ZWN0b3Igc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3RzaF9wKF9fQ1I2X0xULCBfX2IsIF9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9sdCh2ZWN0b3Igc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHNoX3AoX19DUjZfTFQsICh2ZWN0b3Igc2hvcnQpX19iLCBfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfbHQodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dWhfcChfX0NSNl9MVCwgX19iLCBfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfbHQodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1aF9wKF9fQ1I2X0xULCAodmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfbHQodmVjdG9yIGJvb2wgc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3RzaF9wKF9fQ1I2X0xULCBfX2IsICh2ZWN0b3Igc2lnbmVkIHNob3J0KV9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9sdCh2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHVoX3AoX19DUjZfTFQsIF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9sdCh2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dWhfcChfX0NSNl9MVCwgKHZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfbHQodmVjdG9yIGludCBfX2EsIHZlY3RvciBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHN3X3AoX19DUjZfTFQsIF9fYiwgX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX2x0KHZlY3RvciBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3Rzd19wKF9fQ1I2X0xULCAodmVjdG9yIGludClfX2IsIF9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9sdCh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHV3X3AoX19DUjZfTFQsIF9fYiwgX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX2x0KHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1d19wKF9fQ1I2X0xULCAodmVjdG9yIHVuc2lnbmVkIGludClfX2IsIF9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9sdCh2ZWN0b3IgYm9vbCBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c3dfcChfX0NSNl9MVCwgX19iLCAodmVjdG9yIHNpZ25lZCBpbnQpX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX2x0KHZlY3RvciBib29sIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1d19wKF9fQ1I2X0xULCBfX2IsICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9sdCh2ZWN0b3IgYm9vbCBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1d19wKF9fQ1I2X0xULCAodmVjdG9yIHVuc2lnbmVkIGludClfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBpbnQpX19hKTsKfQoKI2lmZGVmIF9fVlNYX18Kc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX2x0KHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3RzZF9wKF9fQ1I2X0xULCBfX2IsIF9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9sdCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHVkX3AoX19DUjZfTFQsIF9fYiwgX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX2x0KHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c2RfcChfX0NSNl9MVCwgKHZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfbHQodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHVkX3AoX19DUjZfTFQsICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfbHQodmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3RzZF9wKF9fQ1I2X0xULCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9sdCh2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dWRfcChfX0NSNl9MVCwgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9sdCh2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1ZF9wKF9fQ1I2X0xULCAodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19hKTsKfQojZW5kaWYKCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9sdCh2ZWN0b3IgZmxvYXQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGZsb2F0IF9fYikgewojaWZkZWYgX19WU1hfXwogIHJldHVybiBfX2J1aWx0aW5fdnN4X3h2Y21wZ3RzcF9wKF9fQ1I2X0xULCBfX2IsIF9fYSk7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndGZwX3AoX19DUjZfTFQsIF9fYiwgX19hKTsKI2VuZGlmCn0KCiNpZmRlZiBfX1ZTWF9fCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9sdCh2ZWN0b3IgZG91YmxlIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBkb3VibGUgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfeHZjbXBndGRwX3AoX19DUjZfTFQsIF9fYiwgX19hKTsKfQojZW5kaWYKCiNpZiBkZWZpbmVkKF9fUE9XRVIxMF9WRUNUT1JfXykgJiYgZGVmaW5lZChfX1NJWkVPRl9JTlQxMjhfXykKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX2x0KHZlY3RvciBzaWduZWQgX19pbnQxMjggX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNpZ25lZCBfX2ludDEyOCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c3FfcChfX0NSNl9MVCwgX19iLCBfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfbHQodmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dXFfcChfX0NSNl9MVCwgX19iLCBfX2EpOwp9CiNlbmRpZgoKLyogdmVjX2FsbF9uYW4gKi8KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9uYW4odmVjdG9yIGZsb2F0IF9fYSkgewojaWZkZWYgX19WU1hfXwogIHJldHVybiBfX2J1aWx0aW5fdnN4X3h2Y21wZXFzcF9wKF9fQ1I2X0VRLCBfX2EsIF9fYSk7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcWZwX3AoX19DUjZfRVEsIF9fYSwgX19hKTsKI2VuZGlmCn0KCiNpZmRlZiBfX1ZTWF9fCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9uYW4odmVjdG9yIGRvdWJsZSBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX3ZzeF94dmNtcGVxZHBfcChfX0NSNl9FUSwgX19hLCBfX2EpOwp9CiNlbmRpZgoKLyogdmVjX2FsbF9uZSAqLwoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX25lKHZlY3RvciBzaWduZWQgY2hhciBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXViX3AoX19DUjZfRVEsICh2ZWN0b3IgY2hhcilfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBjaGFyKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9uZSh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdWJfcChfX0NSNl9FUSwgKHZlY3RvciBjaGFyKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGNoYXIpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX25lKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1Yl9wKF9fQ1I2X0VRLCAodmVjdG9yIGNoYXIpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgY2hhcilfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfbmUodmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdWJfcChfX0NSNl9FUSwgKHZlY3RvciBjaGFyKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGNoYXIpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX25lKHZlY3RvciBib29sIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1Yl9wKF9fQ1I2X0VRLCAodmVjdG9yIGNoYXIpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgY2hhcilfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfbmUodmVjdG9yIGJvb2wgY2hhciBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdWJfcChfX0NSNl9FUSwgKHZlY3RvciBjaGFyKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGNoYXIpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX25lKHZlY3RvciBib29sIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdWJfcChfX0NSNl9FUSwgKHZlY3RvciBjaGFyKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGNoYXIpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX25lKHZlY3RvciBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXVoX3AoX19DUjZfRVEsIF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX25lKHZlY3RvciBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdWhfcChfX0NSNl9FUSwgX19hLCAodmVjdG9yIHNob3J0KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9uZSh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1aF9wKF9fQ1I2X0VRLCAodmVjdG9yIHNob3J0KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHNob3J0KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9uZSh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXVoX3AoX19DUjZfRVEsICh2ZWN0b3Igc2hvcnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3Igc2hvcnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX25lKHZlY3RvciBib29sIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdWhfcChfX0NSNl9FUSwgKHZlY3RvciBzaG9ydClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBzaG9ydClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfbmUodmVjdG9yIGJvb2wgc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1aF9wKF9fQ1I2X0VRLCAodmVjdG9yIHNob3J0KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHNob3J0KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9uZSh2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdWhfcChfX0NSNl9FUSwgKHZlY3RvciBzaG9ydClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBzaG9ydClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfbmUodmVjdG9yIHBpeGVsIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBwaXhlbCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdWhfcChfX0NSNl9FUSwgKHZlY3RvciBzaG9ydClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBzaG9ydClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfbmUodmVjdG9yIGludCBfX2EsIHZlY3RvciBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXV3X3AoX19DUjZfRVEsIF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX25lKHZlY3RvciBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1d19wKF9fQ1I2X0VRLCBfX2EsICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9uZSh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXV3X3AoX19DUjZfRVEsICh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfbmUodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXV3X3AoX19DUjZfRVEsICh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfbmUodmVjdG9yIGJvb2wgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXV3X3AoX19DUjZfRVEsICh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfbmUodmVjdG9yIGJvb2wgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXV3X3AoX19DUjZfRVEsICh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfbmUodmVjdG9yIGJvb2wgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdXdfcChfX0NSNl9FUSwgKHZlY3RvciBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgaW50KV9fYik7Cn0KCiNpZmRlZiBfX1ZTWF9fCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9uZSh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdWRfcChfX0NSNl9FUSwgX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfbmUodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1ZF9wKF9fQ1I2X0VRLCAodmVjdG9yIGxvbmcgbG9uZylfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBsb25nIGxvbmcpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX25lKHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdWRfcChfX0NSNl9FUSwgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfbmUodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXVkX3AoX19DUjZfRVEsICh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9uZSh2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXVkX3AoX19DUjZfRVEsICh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9uZSh2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdWRfcChfX0NSNl9FUSwgKHZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX25lKHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXVkX3AoX19DUjZfRVEsICh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYik7Cn0KI2VuZGlmCgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfbmUodmVjdG9yIGZsb2F0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBmbG9hdCBfX2IpIHsKI2lmZGVmIF9fVlNYX18KICByZXR1cm4gX19idWlsdGluX3ZzeF94dmNtcGVxc3BfcChfX0NSNl9FUSwgX19hLCBfX2IpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZXFmcF9wKF9fQ1I2X0VRLCBfX2EsIF9fYik7CiNlbmRpZgp9CgojaWZkZWYgX19WU1hfXwpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfbmUodmVjdG9yIGRvdWJsZSBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgZG91YmxlIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fdnN4X3h2Y21wZXFkcF9wKF9fQ1I2X0VRLCBfX2EsIF9fYik7Cn0KI2VuZGlmCgojaWYgZGVmaW5lZChfX1BPV0VSMTBfVkVDVE9SX18pICYmIGRlZmluZWQoX19TSVpFT0ZfSU5UMTI4X18pCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9uZSh2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaWduZWQgX19pbnQxMjggX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXVxX3AoX19DUjZfRVEsIF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX25lKHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXVxX3AoX19DUjZfRVEsIF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX25lKHZlY3RvciBib29sIF9faW50MTI4IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIF9faW50MTI4IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1cV9wKF9fQ1I2X0VRLCBfX2EsIF9fYik7Cn0KI2VuZGlmCgovKiB2ZWNfYWxsX25nZSAqLwoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX25nZSh2ZWN0b3IgZmxvYXQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBmbG9hdCBfX2IpIHsKI2lmZGVmIF9fVlNYX18KICByZXR1cm4gX19idWlsdGluX3ZzeF94dmNtcGdlc3BfcChfX0NSNl9FUSwgX19hLCBfX2IpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ2VmcF9wKF9fQ1I2X0VRLCBfX2EsIF9fYik7CiNlbmRpZgp9CgojaWZkZWYgX19WU1hfXwpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfbmdlKHZlY3RvciBkb3VibGUgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBkb3VibGUgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfeHZjbXBnZWRwX3AoX19DUjZfRVEsIF9fYSwgX19iKTsKfQojZW5kaWYKCi8qIHZlY19hbGxfbmd0ICovCgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbGxfbmd0KHZlY3RvciBmbG9hdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGZsb2F0IF9fYikgewojaWZkZWYgX19WU1hfXwogIHJldHVybiBfX2J1aWx0aW5fdnN4X3h2Y21wZ3RzcF9wKF9fQ1I2X0VRLCBfX2EsIF9fYik7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndGZwX3AoX19DUjZfRVEsIF9fYSwgX19iKTsKI2VuZGlmCn0KCiNpZmRlZiBfX1ZTWF9fCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9uZ3QodmVjdG9yIGRvdWJsZSBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGRvdWJsZSBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3ZzeF94dmNtcGd0ZHBfcChfX0NSNl9FUSwgX19hLCBfX2IpOwp9CiNlbmRpZgoKLyogdmVjX2FsbF9ubGUgKi8KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkKdmVjX2FsbF9ubGUodmVjdG9yIGZsb2F0IF9fYSwgdmVjdG9yIGZsb2F0IF9fYikgewojaWZkZWYgX19WU1hfXwogIHJldHVybiBfX2J1aWx0aW5fdnN4X3h2Y21wZ2VzcF9wKF9fQ1I2X0VRLCBfX2IsIF9fYSk7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBnZWZwX3AoX19DUjZfRVEsIF9fYiwgX19hKTsKI2VuZGlmCn0KCiNpZmRlZiBfX1ZTWF9fCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9ubGUodmVjdG9yIGRvdWJsZSBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGRvdWJsZSBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3ZzeF94dmNtcGdlZHBfcChfX0NSNl9FUSwgX19iLCBfX2EpOwp9CiNlbmRpZgoKLyogdmVjX2FsbF9ubHQgKi8KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkKdmVjX2FsbF9ubHQodmVjdG9yIGZsb2F0IF9fYSwgdmVjdG9yIGZsb2F0IF9fYikgewojaWZkZWYgX19WU1hfXwogIHJldHVybiBfX2J1aWx0aW5fdnN4X3h2Y21wZ3RzcF9wKF9fQ1I2X0VRLCBfX2IsIF9fYSk7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndGZwX3AoX19DUjZfRVEsIF9fYiwgX19hKTsKI2VuZGlmCn0KCiNpZmRlZiBfX1ZTWF9fCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FsbF9ubHQodmVjdG9yIGRvdWJsZSBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGRvdWJsZSBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3ZzeF94dmNtcGd0ZHBfcChfX0NSNl9FUSwgX19iLCBfX2EpOwp9CiNlbmRpZgoKLyogdmVjX2FsbF9udW1lcmljICovCgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpCnZlY19hbGxfbnVtZXJpYyh2ZWN0b3IgZmxvYXQgX19hKSB7CiNpZmRlZiBfX1ZTWF9fCiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfeHZjbXBlcXNwX3AoX19DUjZfTFQsIF9fYSwgX19hKTsKI2Vsc2UKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxZnBfcChfX0NSNl9MVCwgX19hLCBfX2EpOwojZW5kaWYKfQoKI2lmZGVmIF9fVlNYX18Kc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYWxsX251bWVyaWModmVjdG9yIGRvdWJsZSBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX3ZzeF94dmNtcGVxZHBfcChfX0NSNl9MVCwgX19hLCBfX2EpOwp9CiNlbmRpZgoKLyogdmVjX2FueV9lcSAqLwoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2VxKHZlY3RvciBzaWduZWQgY2hhciBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXViX3AoX19DUjZfRVFfUkVWLCAodmVjdG9yIGNoYXIpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgY2hhcilfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfZXEodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXViX3AoX19DUjZfRVFfUkVWLCAodmVjdG9yIGNoYXIpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgY2hhcilfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfZXEodmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXViX3AoX19DUjZfRVFfUkVWLCAodmVjdG9yIGNoYXIpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgY2hhcilfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfZXEodmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdWJfcChfX0NSNl9FUV9SRVYsICh2ZWN0b3IgY2hhcilfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBjaGFyKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9lcSh2ZWN0b3IgYm9vbCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdWJfcChfX0NSNl9FUV9SRVYsICh2ZWN0b3IgY2hhcilfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBjaGFyKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9lcSh2ZWN0b3IgYm9vbCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1Yl9wKF9fQ1I2X0VRX1JFViwgKHZlY3RvciBjaGFyKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGNoYXIpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2VxKHZlY3RvciBib29sIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdWJfcChfX0NSNl9FUV9SRVYsICh2ZWN0b3IgY2hhcilfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBjaGFyKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9lcSh2ZWN0b3Igc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1aF9wKF9fQ1I2X0VRX1JFViwgX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfZXEodmVjdG9yIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1aF9wKF9fQ1I2X0VRX1JFViwgX19hLCAodmVjdG9yIHNob3J0KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9lcSh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1aF9wKF9fQ1I2X0VRX1JFViwgKHZlY3RvciBzaG9ydClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBzaG9ydClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfZXEodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1aF9wKF9fQ1I2X0VRX1JFViwgKHZlY3RvciBzaG9ydClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBzaG9ydClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfZXEodmVjdG9yIGJvb2wgc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1aF9wKF9fQ1I2X0VRX1JFViwgKHZlY3RvciBzaG9ydClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBzaG9ydClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfZXEodmVjdG9yIGJvb2wgc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1aF9wKF9fQ1I2X0VRX1JFViwgKHZlY3RvciBzaG9ydClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBzaG9ydClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfZXEodmVjdG9yIGJvb2wgc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXVoX3AoX19DUjZfRVFfUkVWLCAodmVjdG9yIHNob3J0KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHNob3J0KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9lcSh2ZWN0b3IgcGl4ZWwgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHBpeGVsIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1aF9wKF9fQ1I2X0VRX1JFViwgKHZlY3RvciBzaG9ydClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBzaG9ydClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfZXEodmVjdG9yIGludCBfX2EsIHZlY3RvciBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXV3X3AoX19DUjZfRVFfUkVWLCBfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9lcSh2ZWN0b3IgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdXdfcChfX0NSNl9FUV9SRVYsIF9fYSwgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2VxKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdXdfcChfX0NSNl9FUV9SRVYsICh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfZXEodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXV3X3AoX19DUjZfRVFfUkVWLCAodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2VxKHZlY3RvciBib29sIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1d19wKF9fQ1I2X0VRX1JFViwgKHZlY3RvciBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9lcSh2ZWN0b3IgYm9vbCBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdXdfcChfX0NSNl9FUV9SRVYsICh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfZXEodmVjdG9yIGJvb2wgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdXdfcChfX0NSNl9FUV9SRVYsICh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgojaWZkZWYgX19WU1hfXwpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfZXEodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXVkX3AoX19DUjZfRVFfUkVWLCBfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9lcSh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXVkX3AoX19DUjZfRVFfUkVWLCAodmVjdG9yIGxvbmcgbG9uZylfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBsb25nIGxvbmcpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2VxKHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdWRfcChfX0NSNl9FUV9SRVYsIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2VxKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1ZF9wKAogICAgICBfX0NSNl9FUV9SRVYsICh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2EsICh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfZXEodmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1ZF9wKAogICAgICBfX0NSNl9FUV9SRVYsICh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2EsICh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfZXEodmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXVkX3AoCiAgICAgIF9fQ1I2X0VRX1JFViwgKHZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYSwgKHZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9lcSh2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1ZF9wKAogICAgICBfX0NSNl9FUV9SRVYsICh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2EsICh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2IpOwp9CiNlbmRpZgoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2VxKHZlY3RvciBmbG9hdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgZmxvYXQgX19iKSB7CiNpZmRlZiBfX1ZTWF9fCiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfeHZjbXBlcXNwX3AoX19DUjZfRVFfUkVWLCBfX2EsIF9fYik7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcWZwX3AoX19DUjZfRVFfUkVWLCBfX2EsIF9fYik7CiNlbmRpZgp9CgojaWZkZWYgX19WU1hfXwpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfZXEodmVjdG9yIGRvdWJsZSBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgZG91YmxlIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fdnN4X3h2Y21wZXFkcF9wKF9fQ1I2X0VRX1JFViwgX19hLCBfX2IpOwp9CiNlbmRpZgoKI2lmIGRlZmluZWQoX19QT1dFUjEwX1ZFQ1RPUl9fKSAmJiBkZWZpbmVkKF9fU0laRU9GX0lOVDEyOF9fKQpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfZXEodmVjdG9yIHNpZ25lZCBfX2ludDEyOCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1cV9wKF9fQ1I2X0VRX1JFViwgX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfZXEodmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdXFfcChfX0NSNl9FUV9SRVYsIF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2VxKHZlY3RvciBib29sIF9faW50MTI4IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIF9faW50MTI4IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1cV9wKF9fQ1I2X0VRX1JFViwgX19hLCBfX2IpOwp9CiNlbmRpZgoKLyogdmVjX2FueV9nZSAqLwoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2dlKHZlY3RvciBzaWduZWQgY2hhciBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHNiX3AoX19DUjZfTFRfUkVWLCBfX2IsIF9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9nZSh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c2JfcChfX0NSNl9MVF9SRVYsICh2ZWN0b3Igc2lnbmVkIGNoYXIpX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9nZSh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dWJfcChfX0NSNl9MVF9SRVYsIF9fYiwgX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2dlKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHViX3AoX19DUjZfTFRfUkVWLCAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9nZSh2ZWN0b3IgYm9vbCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c2JfcChfX0NSNl9MVF9SRVYsIF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHNpZ25lZCBjaGFyKV9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9nZSh2ZWN0b3IgYm9vbCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1Yl9wKF9fQ1I2X0xUX1JFViwgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfZ2UodmVjdG9yIGJvb2wgY2hhciBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1Yl9wKF9fQ1I2X0xUX1JFViwgKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2dlKHZlY3RvciBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHNoX3AoX19DUjZfTFRfUkVWLCBfX2IsIF9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9nZSh2ZWN0b3Igc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHNoX3AoX19DUjZfTFRfUkVWLCAodmVjdG9yIHNob3J0KV9fYiwgX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2dlKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHVoX3AoX19DUjZfTFRfUkVWLCBfX2IsIF9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9nZSh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHVoX3AoX19DUjZfTFRfUkVWLCAodmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfZ2UodmVjdG9yIGJvb2wgc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3RzaF9wKF9fQ1I2X0xUX1JFViwgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3Igc2lnbmVkIHNob3J0KV9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9nZSh2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHVoX3AoX19DUjZfTFRfUkVWLCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfZ2UodmVjdG9yIGJvb2wgc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHVoX3AoX19DUjZfTFRfUkVWLCAodmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9nZSh2ZWN0b3IgaW50IF9fYSwgdmVjdG9yIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c3dfcChfX0NSNl9MVF9SRVYsIF9fYiwgX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2dlKHZlY3RvciBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3Rzd19wKF9fQ1I2X0xUX1JFViwgKHZlY3RvciBpbnQpX19iLCBfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfZ2UodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1d19wKF9fQ1I2X0xUX1JFViwgX19iLCBfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfZ2UodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHV3X3AoX19DUjZfTFRfUkVWLCAodmVjdG9yIHVuc2lnbmVkIGludClfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2dlKHZlY3RvciBib29sIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3Rzd19wKF9fQ1I2X0xUX1JFViwgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3Igc2lnbmVkIGludClfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfZ2UodmVjdG9yIGJvb2wgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHV3X3AoX19DUjZfTFRfUkVWLCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBpbnQpX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2dlKHZlY3RvciBib29sIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHV3X3AoX19DUjZfTFRfUkVWLCAodmVjdG9yIHVuc2lnbmVkIGludClfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBpbnQpX19hKTsKfQoKI2lmZGVmIF9fVlNYX18Kc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2dlKHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3RzZF9wKF9fQ1I2X0xUX1JFViwgX19iLCBfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfZ2UodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1ZF9wKF9fQ1I2X0xUX1JFViwgX19iLCBfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfZ2UodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3RzZF9wKF9fQ1I2X0xUX1JFViwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19iLCBfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfZ2UodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHVkX3AoX19DUjZfTFRfUkVWLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYiwgX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2dlKHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c2RfcChfX0NSNl9MVF9SRVYsIF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2dlKHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1ZF9wKF9fQ1I2X0xUX1JFViwgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9nZSh2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1ZF9wKF9fQ1I2X0xUX1JFViwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19hKTsKfQojZW5kaWYKCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9nZSh2ZWN0b3IgZmxvYXQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGZsb2F0IF9fYikgewojaWZkZWYgX19WU1hfXwogIHJldHVybiBfX2J1aWx0aW5fdnN4X3h2Y21wZ2VzcF9wKF9fQ1I2X0VRX1JFViwgX19hLCBfX2IpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ2VmcF9wKF9fQ1I2X0VRX1JFViwgX19hLCBfX2IpOwojZW5kaWYKfQoKI2lmZGVmIF9fVlNYX18Kc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2dlKHZlY3RvciBkb3VibGUgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGRvdWJsZSBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3ZzeF94dmNtcGdlZHBfcChfX0NSNl9FUV9SRVYsIF9fYSwgX19iKTsKfQojZW5kaWYKCiNpZiBkZWZpbmVkKF9fUE9XRVIxMF9WRUNUT1JfXykgJiYgZGVmaW5lZChfX1NJWkVPRl9JTlQxMjhfXykKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2dlKHZlY3RvciBzaWduZWQgX19pbnQxMjggX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNpZ25lZCBfX2ludDEyOCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c3FfcChfX0NSNl9MVF9SRVYsIF9fYiwgX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2dlKHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHVxX3AoX19DUjZfTFRfUkVWLCBfX2IsIF9fYSk7Cn0KI2VuZGlmCgovKiB2ZWNfYW55X2d0ICovCgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfZ3QodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c2JfcChfX0NSNl9FUV9SRVYsIF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2d0KHZlY3RvciBzaWduZWQgY2hhciBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3RzYl9wKF9fQ1I2X0VRX1JFViwgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3Igc2lnbmVkIGNoYXIpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2d0KHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1Yl9wKF9fQ1I2X0VRX1JFViwgX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfZ3QodmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dWJfcChfX0NSNl9FUV9SRVYsIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2d0KHZlY3RvciBib29sIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3RzYl9wKF9fQ1I2X0VRX1JFViwgKHZlY3RvciBzaWduZWQgY2hhcilfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2d0KHZlY3RvciBib29sIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHViX3AoX19DUjZfRVFfUkVWLCAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9ndCh2ZWN0b3IgYm9vbCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHViX3AoX19DUjZfRVFfUkVWLCAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfZ3QodmVjdG9yIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c2hfcChfX0NSNl9FUV9SRVYsIF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2d0KHZlY3RvciBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c2hfcChfX0NSNl9FUV9SRVYsIF9fYSwgKHZlY3RvciBzaG9ydClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfZ3QodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dWhfcChfX0NSNl9FUV9SRVYsIF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2d0KHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dWhfcChfX0NSNl9FUV9SRVYsIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9ndCh2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHNoX3AoX19DUjZfRVFfUkVWLCAodmVjdG9yIHNpZ25lZCBzaG9ydClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2d0KHZlY3RvciBib29sIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dWhfcChfX0NSNl9FUV9SRVYsICh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9ndCh2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dWhfcChfX0NSNl9FUV9SRVYsICh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2d0KHZlY3RvciBpbnQgX19hLCB2ZWN0b3IgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3Rzd19wKF9fQ1I2X0VRX1JFViwgX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfZ3QodmVjdG9yIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHN3X3AoX19DUjZfRVFfUkVWLCBfX2EsICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9ndCh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHV3X3AoX19DUjZfRVFfUkVWLCBfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9ndCh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dXdfcChfX0NSNl9FUV9SRVYsIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfZ3QodmVjdG9yIGJvb2wgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHN3X3AoX19DUjZfRVFfUkVWLCAodmVjdG9yIHNpZ25lZCBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9ndCh2ZWN0b3IgYm9vbCBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dXdfcChfX0NSNl9FUV9SRVYsICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfZ3QodmVjdG9yIGJvb2wgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dXdfcChfX0NSNl9FUV9SRVYsICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIGludClfX2IpOwp9CgojaWZkZWYgX19WU1hfXwpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfZ3QodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHNkX3AoX19DUjZfRVFfUkVWLCBfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9ndCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHVkX3AoX19DUjZfRVFfUkVWLCBfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9ndCh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHNkX3AoX19DUjZfRVFfUkVWLCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9ndCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dWRfcChfX0NSNl9FUV9SRVYsIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfZ3QodmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3RzZF9wKF9fQ1I2X0VRX1JFViwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfZ3QodmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHVkX3AoX19DUjZfRVFfUkVWLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2d0KHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHVkX3AoX19DUjZfRVFfUkVWLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2IpOwp9CiNlbmRpZgoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2d0KHZlY3RvciBmbG9hdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgZmxvYXQgX19iKSB7CiNpZmRlZiBfX1ZTWF9fCiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfeHZjbXBndHNwX3AoX19DUjZfRVFfUkVWLCBfX2EsIF9fYik7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndGZwX3AoX19DUjZfRVFfUkVWLCBfX2EsIF9fYik7CiNlbmRpZgp9CgojaWZkZWYgX19WU1hfXwpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfZ3QodmVjdG9yIGRvdWJsZSBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgZG91YmxlIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fdnN4X3h2Y21wZ3RkcF9wKF9fQ1I2X0VRX1JFViwgX19hLCBfX2IpOwp9CiNlbmRpZgoKI2lmIGRlZmluZWQoX19QT1dFUjEwX1ZFQ1RPUl9fKSAmJiBkZWZpbmVkKF9fU0laRU9GX0lOVDEyOF9fKQpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfZ3QodmVjdG9yIHNpZ25lZCBfX2ludDEyOCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3RzcV9wKF9fQ1I2X0VRX1JFViwgX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfZ3QodmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dXFfcChfX0NSNl9FUV9SRVYsIF9fYSwgX19iKTsKfQojZW5kaWYKCi8qIHZlY19hbnlfbGUgKi8KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9sZSh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3RzYl9wKF9fQ1I2X0xUX1JFViwgX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfbGUodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHNiX3AoX19DUjZfTFRfUkVWLCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBzaWduZWQgY2hhcilfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfbGUodmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHViX3AoX19DUjZfTFRfUkVWLCBfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9sZSh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1Yl9wKF9fQ1I2X0xUX1JFViwgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfbGUodmVjdG9yIGJvb2wgY2hhciBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHNiX3AoX19DUjZfTFRfUkVWLCAodmVjdG9yIHNpZ25lZCBjaGFyKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfbGUodmVjdG9yIGJvb2wgY2hhciBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dWJfcChfX0NSNl9MVF9SRVYsICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2xlKHZlY3RvciBib29sIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dWJfcChfX0NSNl9MVF9SRVYsICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9sZSh2ZWN0b3Igc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3RzaF9wKF9fQ1I2X0xUX1JFViwgX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfbGUodmVjdG9yIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3RzaF9wKF9fQ1I2X0xUX1JFViwgX19hLCAodmVjdG9yIHNob3J0KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9sZSh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1aF9wKF9fQ1I2X0xUX1JFViwgX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfbGUodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1aF9wKF9fQ1I2X0xUX1JFViwgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgc2hvcnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2xlKHZlY3RvciBib29sIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c2hfcChfX0NSNl9MVF9SRVYsICh2ZWN0b3Igc2lnbmVkIHNob3J0KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfbGUodmVjdG9yIGJvb2wgc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1aF9wKF9fQ1I2X0xUX1JFViwgKHZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2xlKHZlY3RvciBib29sIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1aF9wKF9fQ1I2X0xUX1JFViwgKHZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfbGUodmVjdG9yIGludCBfX2EsIHZlY3RvciBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHN3X3AoX19DUjZfTFRfUkVWLCBfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9sZSh2ZWN0b3IgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c3dfcChfX0NSNl9MVF9SRVYsIF9fYSwgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2xlKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dXdfcChfX0NSNl9MVF9SRVYsIF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2xlKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1d19wKF9fQ1I2X0xUX1JFViwgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9sZSh2ZWN0b3IgYm9vbCBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c3dfcChfX0NSNl9MVF9SRVYsICh2ZWN0b3Igc2lnbmVkIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2xlKHZlY3RvciBib29sIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1d19wKF9fQ1I2X0xUX1JFViwgKHZlY3RvciB1bnNpZ25lZCBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9sZSh2ZWN0b3IgYm9vbCBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1d19wKF9fQ1I2X0xUX1JFViwgKHZlY3RvciB1bnNpZ25lZCBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYik7Cn0KCiNpZmRlZiBfX1ZTWF9fCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9sZSh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c2RfcChfX0NSNl9MVF9SRVYsIF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2xlKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dWRfcChfX0NSNl9MVF9SRVYsIF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2xlKHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c2RfcChfX0NSNl9MVF9SRVYsIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2xlKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1ZF9wKF9fQ1I2X0xUX1JFViwgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9sZSh2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHNkX3AoX19DUjZfTFRfUkVWLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9sZSh2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dWRfcChfX0NSNl9MVF9SRVYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfbGUodmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dWRfcChfX0NSNl9MVF9SRVYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYik7Cn0KI2VuZGlmCgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfbGUodmVjdG9yIGZsb2F0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBmbG9hdCBfX2IpIHsKI2lmZGVmIF9fVlNYX18KICByZXR1cm4gX19idWlsdGluX3ZzeF94dmNtcGdlc3BfcChfX0NSNl9FUV9SRVYsIF9fYiwgX19hKTsKI2Vsc2UKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGdlZnBfcChfX0NSNl9FUV9SRVYsIF9fYiwgX19hKTsKI2VuZGlmCn0KCiNpZmRlZiBfX1ZTWF9fCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9sZSh2ZWN0b3IgZG91YmxlIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBkb3VibGUgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfeHZjbXBnZWRwX3AoX19DUjZfRVFfUkVWLCBfX2IsIF9fYSk7Cn0KI2VuZGlmCgojaWYgZGVmaW5lZChfX1BPV0VSMTBfVkVDVE9SX18pICYmIGRlZmluZWQoX19TSVpFT0ZfSU5UMTI4X18pCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9sZSh2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaWduZWQgX19pbnQxMjggX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHNxX3AoX19DUjZfTFRfUkVWLCBfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9sZSh2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1cV9wKF9fQ1I2X0xUX1JFViwgX19hLCBfX2IpOwp9CiNlbmRpZgoKLyogdmVjX2FueV9sdCAqLwoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2x0KHZlY3RvciBzaWduZWQgY2hhciBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHNiX3AoX19DUjZfRVFfUkVWLCBfX2IsIF9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9sdCh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c2JfcChfX0NSNl9FUV9SRVYsICh2ZWN0b3Igc2lnbmVkIGNoYXIpX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9sdCh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dWJfcChfX0NSNl9FUV9SRVYsIF9fYiwgX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2x0KHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHViX3AoX19DUjZfRVFfUkVWLCAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9sdCh2ZWN0b3IgYm9vbCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c2JfcChfX0NSNl9FUV9SRVYsIF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHNpZ25lZCBjaGFyKV9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9sdCh2ZWN0b3IgYm9vbCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1Yl9wKF9fQ1I2X0VRX1JFViwgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfbHQodmVjdG9yIGJvb2wgY2hhciBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1Yl9wKF9fQ1I2X0VRX1JFViwgKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2x0KHZlY3RvciBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHNoX3AoX19DUjZfRVFfUkVWLCBfX2IsIF9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9sdCh2ZWN0b3Igc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHNoX3AoX19DUjZfRVFfUkVWLCAodmVjdG9yIHNob3J0KV9fYiwgX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2x0KHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHVoX3AoX19DUjZfRVFfUkVWLCBfX2IsIF9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9sdCh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHVoX3AoX19DUjZfRVFfUkVWLCAodmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfbHQodmVjdG9yIGJvb2wgc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3RzaF9wKF9fQ1I2X0VRX1JFViwgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3Igc2lnbmVkIHNob3J0KV9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9sdCh2ZWN0b3IgYm9vbCBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHVoX3AoX19DUjZfRVFfUkVWLCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBzaG9ydClfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfbHQodmVjdG9yIGJvb2wgc2hvcnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgc2hvcnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHVoX3AoX19DUjZfRVFfUkVWLCAodmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9sdCh2ZWN0b3IgaW50IF9fYSwgdmVjdG9yIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c3dfcChfX0NSNl9FUV9SRVYsIF9fYiwgX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2x0KHZlY3RvciBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3Rzd19wKF9fQ1I2X0VRX1JFViwgKHZlY3RvciBpbnQpX19iLCBfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfbHQodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1d19wKF9fQ1I2X0VRX1JFViwgX19iLCBfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfbHQodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHV3X3AoX19DUjZfRVFfUkVWLCAodmVjdG9yIHVuc2lnbmVkIGludClfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2x0KHZlY3RvciBib29sIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3Rzd19wKF9fQ1I2X0VRX1JFViwgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3Igc2lnbmVkIGludClfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfbHQodmVjdG9yIGJvb2wgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHV3X3AoX19DUjZfRVFfUkVWLCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBpbnQpX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2x0KHZlY3RvciBib29sIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHV3X3AoX19DUjZfRVFfUkVWLCAodmVjdG9yIHVuc2lnbmVkIGludClfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBpbnQpX19hKTsKfQoKI2lmZGVmIF9fVlNYX18Kc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2x0KHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3RzZF9wKF9fQ1I2X0VRX1JFViwgX19iLCBfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfbHQodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1ZF9wKF9fQ1I2X0VRX1JFViwgX19iLCBfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfbHQodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3RzZF9wKF9fQ1I2X0VRX1JFViwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19iLCBfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfbHQodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHVkX3AoX19DUjZfRVFfUkVWLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYiwgX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2x0KHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c2RfcChfX0NSNl9FUV9SRVYsIF9fYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2x0KHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1ZF9wKF9fQ1I2X0VRX1JFViwgX19iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKV9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9sdCh2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1ZF9wKF9fQ1I2X0VRX1JFViwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZylfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19hKTsKfQojZW5kaWYKCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9sdCh2ZWN0b3IgZmxvYXQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGZsb2F0IF9fYikgewojaWZkZWYgX19WU1hfXwogIHJldHVybiBfX2J1aWx0aW5fdnN4X3h2Y21wZ3RzcF9wKF9fQ1I2X0VRX1JFViwgX19iLCBfX2EpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3RmcF9wKF9fQ1I2X0VRX1JFViwgX19iLCBfX2EpOwojZW5kaWYKfQoKI2lmZGVmIF9fVlNYX18Kc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2x0KHZlY3RvciBkb3VibGUgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGRvdWJsZSBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3ZzeF94dmNtcGd0ZHBfcChfX0NSNl9FUV9SRVYsIF9fYiwgX19hKTsKfQojZW5kaWYKCiNpZiBkZWZpbmVkKF9fUE9XRVIxMF9WRUNUT1JfXykgJiYgZGVmaW5lZChfX1NJWkVPRl9JTlQxMjhfXykKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2x0KHZlY3RvciBzaWduZWQgX19pbnQxMjggX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNpZ25lZCBfX2ludDEyOCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c3FfcChfX0NSNl9FUV9SRVYsIF9fYiwgX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X2x0KHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHVxX3AoX19DUjZfRVFfUkVWLCBfX2IsIF9fYSk7Cn0KI2VuZGlmCgovKiB2ZWNfYW55X25hbiAqLwoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X25hbih2ZWN0b3IgZmxvYXQgX19hKSB7CiNpZmRlZiBfX1ZTWF9fCiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfeHZjbXBlcXNwX3AoX19DUjZfTFRfUkVWLCBfX2EsIF9fYSk7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcWZwX3AoX19DUjZfTFRfUkVWLCBfX2EsIF9fYSk7CiNlbmRpZgp9CiNpZmRlZiBfX1ZTWF9fCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9uYW4odmVjdG9yIGRvdWJsZSBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX3ZzeF94dmNtcGVxZHBfcChfX0NSNl9MVF9SRVYsIF9fYSwgX19hKTsKfQojZW5kaWYKCi8qIHZlY19hbnlfbmUgKi8KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9uZSh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1Yl9wKF9fQ1I2X0xUX1JFViwgKHZlY3RvciBjaGFyKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGNoYXIpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X25lKHZlY3RvciBzaWduZWQgY2hhciBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1Yl9wKF9fQ1I2X0xUX1JFViwgKHZlY3RvciBjaGFyKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGNoYXIpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X25lKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1Yl9wKF9fQ1I2X0xUX1JFViwgKHZlY3RvciBjaGFyKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGNoYXIpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X25lKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXViX3AoX19DUjZfTFRfUkVWLCAodmVjdG9yIGNoYXIpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgY2hhcilfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfbmUodmVjdG9yIGJvb2wgY2hhciBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Igc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXViX3AoX19DUjZfTFRfUkVWLCAodmVjdG9yIGNoYXIpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgY2hhcilfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfbmUodmVjdG9yIGJvb2wgY2hhciBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdWJfcChfX0NSNl9MVF9SRVYsICh2ZWN0b3IgY2hhcilfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBjaGFyKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9uZSh2ZWN0b3IgYm9vbCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXViX3AoX19DUjZfTFRfUkVWLCAodmVjdG9yIGNoYXIpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgY2hhcilfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfbmUodmVjdG9yIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdWhfcChfX0NSNl9MVF9SRVYsIF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X25lKHZlY3RvciBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdWhfcChfX0NSNl9MVF9SRVYsIF9fYSwgKHZlY3RvciBzaG9ydClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfbmUodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdWhfcChfX0NSNl9MVF9SRVYsICh2ZWN0b3Igc2hvcnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3Igc2hvcnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X25lKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdWhfcChfX0NSNl9MVF9SRVYsICh2ZWN0b3Igc2hvcnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3Igc2hvcnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X25lKHZlY3RvciBib29sIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdWhfcChfX0NSNl9MVF9SRVYsICh2ZWN0b3Igc2hvcnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3Igc2hvcnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X25lKHZlY3RvciBib29sIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdWhfcChfX0NSNl9MVF9SRVYsICh2ZWN0b3Igc2hvcnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3Igc2hvcnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X25lKHZlY3RvciBib29sIHNob3J0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBib29sIHNob3J0IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1aF9wKF9fQ1I2X0xUX1JFViwgKHZlY3RvciBzaG9ydClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBzaG9ydClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfbmUodmVjdG9yIHBpeGVsIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBwaXhlbCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdWhfcChfX0NSNl9MVF9SRVYsICh2ZWN0b3Igc2hvcnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3Igc2hvcnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X25lKHZlY3RvciBpbnQgX19hLCB2ZWN0b3IgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1d19wKF9fQ1I2X0xUX1JFViwgX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfbmUodmVjdG9yIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXV3X3AoX19DUjZfTFRfUkVWLCBfX2EsICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9uZSh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXV3X3AoX19DUjZfTFRfUkVWLCAodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X25lKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgaW50IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1d19wKF9fQ1I2X0xUX1JFViwgKHZlY3RvciBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgaW50KV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9uZSh2ZWN0b3IgYm9vbCBpbnQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGludCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdXdfcChfX0NSNl9MVF9SRVYsICh2ZWN0b3IgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIGludClfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfbmUodmVjdG9yIGJvb2wgaW50IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXV3X3AoX19DUjZfTFRfUkVWLCAodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X25lKHZlY3RvciBib29sIGludCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXV3X3AoX19DUjZfTFRfUkVWLCAodmVjdG9yIGludClfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciBpbnQpX19iKTsKfQoKI2lmZGVmIF9fVlNYX18Kc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X25lKHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYikgewojaWZkZWYgX19QT1dFUjhfVkVDVE9SX18KICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdWRfcChfX0NSNl9MVF9SRVYsIF9fYSwgX19iKTsKI2Vsc2UKICAvLyBUYWtlIGFkdmFudGFnZSBvZiB0aGUgb3B0aW1pemVkIHNlcXVlbmNlIGZvciB2ZWNfYWxsX2VxIHdoZW4gdmNtcGVxdWQgaXMKICAvLyBub3QgYXZhaWxhYmxlLgogIHJldHVybiAhdmVjX2FsbF9lcShfX2EsIF9fYik7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfbmUodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiB2ZWNfYW55X25lKCh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2EsICh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfbmUodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgbG9uZyBsb25nIF9fYikgewogIHJldHVybiB2ZWNfYW55X25lKCh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2EsICh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfbmUodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIHZlY19hbnlfbmUoKHZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYSwgKHZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9uZSh2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIHZlY19hbnlfbmUoKHZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYSwgKHZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9uZSh2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gdmVjX2FueV9uZSgodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19hLCAodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcpX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X25lKHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIHZlY19hbnlfbmUoKHZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYSwgKHZlY3RvciBzaWduZWQgbG9uZyBsb25nKV9fYik7Cn0KI2VuZGlmCgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfbmUodmVjdG9yIGZsb2F0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBmbG9hdCBfX2IpIHsKI2lmZGVmIF9fVlNYX18KICByZXR1cm4gX19idWlsdGluX3ZzeF94dmNtcGVxc3BfcChfX0NSNl9MVF9SRVYsIF9fYSwgX19iKTsKI2Vsc2UKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxZnBfcChfX0NSNl9MVF9SRVYsIF9fYSwgX19iKTsKI2VuZGlmCn0KCiNpZmRlZiBfX1ZTWF9fCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9uZSh2ZWN0b3IgZG91YmxlIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBkb3VibGUgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfeHZjbXBlcWRwX3AoX19DUjZfTFRfUkVWLCBfX2EsIF9fYik7Cn0KI2VuZGlmCgojaWYgZGVmaW5lZChfX1BPV0VSMTBfVkVDVE9SX18pICYmIGRlZmluZWQoX19TSVpFT0ZfSU5UMTI4X18pCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9uZSh2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBzaWduZWQgX19pbnQxMjggX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXVxX3AoX19DUjZfTFRfUkVWLCBfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9uZSh2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1cV9wKF9fQ1I2X0xUX1JFViwgX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfbmUodmVjdG9yIGJvb2wgX19pbnQxMjggX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGJvb2wgX19pbnQxMjggX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXVxX3AoX19DUjZfTFRfUkVWLCBfX2EsIF9fYik7Cn0KI2VuZGlmCgovKiB2ZWNfYW55X25nZSAqLwoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X25nZSh2ZWN0b3IgZmxvYXQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBmbG9hdCBfX2IpIHsKI2lmZGVmIF9fVlNYX18KICByZXR1cm4gX19idWlsdGluX3ZzeF94dmNtcGdlc3BfcChfX0NSNl9MVF9SRVYsIF9fYSwgX19iKTsKI2Vsc2UKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGdlZnBfcChfX0NSNl9MVF9SRVYsIF9fYSwgX19iKTsKI2VuZGlmCn0KCiNpZmRlZiBfX1ZTWF9fCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9uZ2UodmVjdG9yIGRvdWJsZSBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGRvdWJsZSBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3ZzeF94dmNtcGdlZHBfcChfX0NSNl9MVF9SRVYsIF9fYSwgX19iKTsKfQojZW5kaWYKCi8qIHZlY19hbnlfbmd0ICovCgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfbmd0KHZlY3RvciBmbG9hdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGZsb2F0IF9fYikgewojaWZkZWYgX19WU1hfXwogIHJldHVybiBfX2J1aWx0aW5fdnN4X3h2Y21wZ3RzcF9wKF9fQ1I2X0xUX1JFViwgX19hLCBfX2IpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3RmcF9wKF9fQ1I2X0xUX1JFViwgX19hLCBfX2IpOwojZW5kaWYKfQoKI2lmZGVmIF9fVlNYX18Kc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X25ndCh2ZWN0b3IgZG91YmxlIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgZG91YmxlIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fdnN4X3h2Y21wZ3RkcF9wKF9fQ1I2X0xUX1JFViwgX19hLCBfX2IpOwp9CiNlbmRpZgoKLyogdmVjX2FueV9ubGUgKi8KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9ubGUodmVjdG9yIGZsb2F0IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgZmxvYXQgX19iKSB7CiNpZmRlZiBfX1ZTWF9fCiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfeHZjbXBnZXNwX3AoX19DUjZfTFRfUkVWLCBfX2IsIF9fYSk7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBnZWZwX3AoX19DUjZfTFRfUkVWLCBfX2IsIF9fYSk7CiNlbmRpZgp9CgojaWZkZWYgX19WU1hfXwpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19hbnlfbmxlKHZlY3RvciBkb3VibGUgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBkb3VibGUgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfeHZjbXBnZWRwX3AoX19DUjZfTFRfUkVWLCBfX2IsIF9fYSk7Cn0KI2VuZGlmCgovKiB2ZWNfYW55X25sdCAqLwoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X25sdCh2ZWN0b3IgZmxvYXQgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciBmbG9hdCBfX2IpIHsKI2lmZGVmIF9fVlNYX18KICByZXR1cm4gX19idWlsdGluX3ZzeF94dmNtcGd0c3BfcChfX0NSNl9MVF9SRVYsIF9fYiwgX19hKTsKI2Vsc2UKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0ZnBfcChfX0NSNl9MVF9SRVYsIF9fYiwgX19hKTsKI2VuZGlmCn0KCiNpZmRlZiBfX1ZTWF9fCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX2FueV9ubHQodmVjdG9yIGRvdWJsZSBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIGRvdWJsZSBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3ZzeF94dmNtcGd0ZHBfcChfX0NSNl9MVF9SRVYsIF9fYiwgX19hKTsKfQojZW5kaWYKCi8qIHZlY19hbnlfbnVtZXJpYyAqLwoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X251bWVyaWModmVjdG9yIGZsb2F0IF9fYSkgewojaWZkZWYgX19WU1hfXwogIHJldHVybiBfX2J1aWx0aW5fdnN4X3h2Y21wZXFzcF9wKF9fQ1I2X0VRX1JFViwgX19hLCBfX2EpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y21wZXFmcF9wKF9fQ1I2X0VRX1JFViwgX19hLCBfX2EpOwojZW5kaWYKfQoKI2lmZGVmIF9fVlNYX18Kc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfYW55X251bWVyaWModmVjdG9yIGRvdWJsZSBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX3ZzeF94dmNtcGVxZHBfcChfX0NSNl9FUV9SRVYsIF9fYSwgX19hKTsKfQojZW5kaWYKCi8qIHZlY19hbnlfb3V0ICovCgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQp2ZWNfYW55X291dCh2ZWN0b3IgZmxvYXQgX19hLCB2ZWN0b3IgZmxvYXQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBiZnBfcChfX0NSNl9FUV9SRVYsIF9fYSwgX19iKTsKfQoKLyogUG93ZXIgOCBDcnlwdG8gZnVuY3Rpb25zCk5vdGU6IFdlIGRpdmVyZ2UgZnJvbSB0aGUgY3VycmVudCBHQ0MgaW1wbGVtZW50YXRpb24gd2l0aCByZWdhcmQKdG8gY3J5cHRvZ3JhcGh5IGFuZCByZWxhdGVkIGZ1bmN0aW9ucyBhcyBmb2xsb3dzOgotIE9ubHkgdGhlIFNIQSBhbmQgQUVTIGluc3RydWN0aW9ucyBhbmQgYnVpbHRpbnMgYXJlIGRpc2FibGVkIGJ5IC1tbm8tY3J5cHRvCi0gVGhlIHJlbWFpbmluZyBvbmVzIGFyZSBvbmx5IGF2YWlsYWJsZSBvbiBQb3dlcjggYW5kIHVwIHNvCiAgcmVxdWlyZSAtbXBvd2VyOC12ZWN0b3IKVGhlIGp1c3RpZmljYXRpb24gZm9yIHRoaXMgaXMgdGhhdCBleHBvcnQgcmVxdWlyZW1lbnRzIHJlcXVpcmUgdGhhdApDYXRlZ29yeTpWZWN0b3IuQ3J5cHRvIGlzIG9wdGlvbmFsIChpLmUuIGNvbXBsaWFudCBoYXJkd2FyZSBtYXkgbm90IHByb3ZpZGUKc3VwcG9ydCkuIEFzIGEgcmVzdWx0LCB3ZSBuZWVkIHRvIGJlIGFibGUgdG8gdHVybiBvZmYgc3VwcG9ydCBmb3IgdGhvc2UuClRoZSByZW1haW5pbmcgb25lcyAoY3VycmVudGx5IGNvbnRyb2xsZWQgYnkgLW1jcnlwdG8gZm9yIEdDQykgc3RpbGwKbmVlZCB0byBiZSBwcm92aWRlZCBvbiBjb21wbGlhbnQgaGFyZHdhcmUgZXZlbiBpZiBWZWN0b3IuQ3J5cHRvIGlzIG5vdApwcm92aWRlZC4KKi8KI2lmZGVmIF9fQ1JZUFRPX18KI2RlZmluZSB2ZWNfc2JveF9iZSBfX2J1aWx0aW5fYWx0aXZlY19jcnlwdG9fdnNib3gKI2RlZmluZSB2ZWNfY2lwaGVyX2JlIF9fYnVpbHRpbl9hbHRpdmVjX2NyeXB0b192Y2lwaGVyCiNkZWZpbmUgdmVjX2NpcGhlcmxhc3RfYmUgX19idWlsdGluX2FsdGl2ZWNfY3J5cHRvX3ZjaXBoZXJsYXN0CiNkZWZpbmUgdmVjX25jaXBoZXJfYmUgX19idWlsdGluX2FsdGl2ZWNfY3J5cHRvX3ZuY2lwaGVyCiNkZWZpbmUgdmVjX25jaXBoZXJsYXN0X2JlIF9fYnVpbHRpbl9hbHRpdmVjX2NyeXB0b192bmNpcGhlcmxhc3QKCiNpZmRlZiBfX1ZTWF9fCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQpfX2J1aWx0aW5fY3J5cHRvX3ZzYm94KHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX2NyeXB0b192c2JveChfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKX19idWlsdGluX2NyeXB0b192Y2lwaGVyKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfY3J5cHRvX3ZjaXBoZXIoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKX19idWlsdGluX2NyeXB0b192Y2lwaGVybGFzdCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY19jcnlwdG9fdmNpcGhlcmxhc3QoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKX19idWlsdGluX2NyeXB0b192bmNpcGhlcih2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY19jcnlwdG9fdm5jaXBoZXIoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKX19idWlsdGluX2NyeXB0b192bmNpcGhlcmxhc3QodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX2NyeXB0b192bmNpcGhlcmxhc3QoX19hLCBfX2IpOwp9CiNlbmRpZiAvKiBfX1ZTWF9fICovCgojZGVmaW5lIF9fYnVpbHRpbl9jcnlwdG9fdnNoYXNpZ21hZCBfX2J1aWx0aW5fYWx0aXZlY19jcnlwdG9fdnNoYXNpZ21hZAojZGVmaW5lIF9fYnVpbHRpbl9jcnlwdG9fdnNoYXNpZ21hdyBfX2J1aWx0aW5fYWx0aXZlY19jcnlwdG9fdnNoYXNpZ21hdwoKI2RlZmluZSB2ZWNfc2hhc2lnbWFfYmUoWCwgWSwgWikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfR2VuZXJpYygoWCksIHZlY3RvciB1bnNpZ25lZCBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICA6IF9fYnVpbHRpbl9jcnlwdG9fdnNoYXNpZ21hdywgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyAgICAgICAgICAgIFwKICAgICAgICAgICA6IF9fYnVpbHRpbl9jcnlwdG9fdnNoYXNpZ21hZCkoKFgpLCAoWSksIChaKSkKI2VuZGlmCgojaWZkZWYgX19QT1dFUjhfVkVDVE9SX18Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgY2hhciBfX0FUVFJTX29fYWkKdmVjX3Blcm14b3IodmVjdG9yIGJvb2wgY2hhciBfX2EsIHZlY3RvciBib29sIGNoYXIgX19iLAogICAgICAgICAgICB2ZWN0b3IgYm9vbCBjaGFyIF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY19jcnlwdG9fdnBlcm14b3IoX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3Blcm14b3IodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYiwKICAgICAgICAgICAgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY19jcnlwdG9fdnBlcm14b3IoX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfcGVybXhvcih2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYiwKICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19jKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX2NyeXB0b192cGVybXhvcihfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCl9fYnVpbHRpbl9jcnlwdG9fdnBlcm14b3IodmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19jKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX2NyeXB0b192cGVybXhvcihfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQpfX2J1aWx0aW5fY3J5cHRvX3ZwZXJteG9yKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYykgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYnVpbHRpbl9hbHRpdmVjX2NyeXB0b192cGVybXhvcigKICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYiwKICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpIF9fYnVpbHRpbl9jcnlwdG9fdnBlcm14b3IoCiAgICB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19jKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgaW50KV9fYnVpbHRpbl9hbHRpdmVjX2NyeXB0b192cGVybXhvcigKICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwgKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYiwKICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCl9fYnVpbHRpbl9jcnlwdG9fdnBlcm14b3IodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2MpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19idWlsdGluX2FsdGl2ZWNfY3J5cHRvX3ZwZXJteG9yKAogICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hLCAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iLAogICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCl9fYnVpbHRpbl9jcnlwdG9fdnBtc3VtYih2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY19jcnlwdG9fdnBtc3VtYihfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKX19idWlsdGluX2NyeXB0b192cG1zdW1iKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfY3J5cHRvX3ZwbXN1bWgoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQpfX2J1aWx0aW5fY3J5cHRvX3ZwbXN1bWIodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX2NyeXB0b192cG1zdW13KF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKX19idWlsdGluX2NyeXB0b192cG1zdW1iKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfY3J5cHRvX3ZwbXN1bWQoX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY192Z2JiZCh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZnYmJkKCh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EpOwp9CgojZGVmaW5lIHZlY19wbXN1bV9iZSBfX2J1aWx0aW5fY3J5cHRvX3ZwbXN1bWIKI2RlZmluZSB2ZWNfZ2IgX19idWlsdGluX2FsdGl2ZWNfdmdiYmQKCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfdmdiYmQodmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZnYmJkKF9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfZ2JiKHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Z2JiZCgodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX2diYih2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Z2JiZCgodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX3ZicGVybXEodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192YnBlcm1xKCh2ZWN0b3IgdW5zaWduZWQgY2hhcilfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY192YnBlcm1xKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZicGVybXEoX19hLCBfX2IpOwp9CgojaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKSAmJiBkZWZpbmVkKF9fU0laRU9GX0lOVDEyOF9fKQpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfYnBlcm0odmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZicGVybXEoKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIGNoYXIpX19iKTsKfQojZW5kaWYKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19icGVybSh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192YnBlcm1xKF9fYSwgX19iKTsKfQojZW5kaWYgLy8gX19QT1dFUjhfVkVDVE9SX18KI2lmZGVmIF9fUE9XRVI5X1ZFQ1RPUl9fCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19icGVybSh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZicGVybWQoX19hLCBfX2IpOwp9CiNlbmRpZgoKCi8qIHZlY19yZXZlICovCgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSB2ZWN0b3IgYm9vbCBjaGFyIHZlY19yZXZlKHZlY3RvciBib29sIGNoYXIgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fYSwgX19hLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LCA0LCAzLCAyLCAxLCAwKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgdmVjdG9yIHNpZ25lZCBjaGFyIHZlY19yZXZlKHZlY3RvciBzaWduZWQgY2hhciBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19hLCBfX2EsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUsIDQsIDMsIDIsIDEsIDApOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSB2ZWN0b3IgdW5zaWduZWQgY2hhcgp2ZWNfcmV2ZSh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19hLCBfX2EsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUsIDQsIDMsIDIsIDEsIDApOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSB2ZWN0b3IgYm9vbCBpbnQgdmVjX3JldmUodmVjdG9yIGJvb2wgaW50IF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX2EsIF9fYSwgMywgMiwgMSwgMCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIHZlY3RvciBzaWduZWQgaW50IHZlY19yZXZlKHZlY3RvciBzaWduZWQgaW50IF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX2EsIF9fYSwgMywgMiwgMSwgMCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIHZlY3RvciB1bnNpZ25lZCBpbnQKdmVjX3JldmUodmVjdG9yIHVuc2lnbmVkIGludCBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19hLCBfX2EsIDMsIDIsIDEsIDApOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSB2ZWN0b3IgYm9vbCBzaG9ydCB2ZWNfcmV2ZSh2ZWN0b3IgYm9vbCBzaG9ydCBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19hLCBfX2EsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSB2ZWN0b3Igc2lnbmVkIHNob3J0CnZlY19yZXZlKHZlY3RvciBzaWduZWQgc2hvcnQgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fYSwgX19hLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgdmVjdG9yIHVuc2lnbmVkIHNob3J0CnZlY19yZXZlKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19hLCBfX2EsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSB2ZWN0b3IgZmxvYXQgdmVjX3JldmUodmVjdG9yIGZsb2F0IF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX2EsIF9fYSwgMywgMiwgMSwgMCk7Cn0KCiNpZmRlZiBfX1ZTWF9fCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIHZlY3RvciBib29sIGxvbmcgbG9uZwp2ZWNfcmV2ZSh2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fYSwgX19hLCAxLCAwKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcKdmVjX3JldmUodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fYSwgX19hLCAxLCAwKTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZwp2ZWNfcmV2ZSh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX2EsIF9fYSwgMSwgMCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIHZlY3RvciBkb3VibGUgdmVjX3JldmUodmVjdG9yIGRvdWJsZSBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19hLCBfX2EsIDEsIDApOwp9CiNlbmRpZgoKLyogdmVjX3JldmIgKi8Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgY2hhciBfX0FUVFJTX29fYWkKdmVjX3JldmIodmVjdG9yIGJvb2wgY2hhciBfX2EpIHsKICByZXR1cm4gX19hOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19yZXZiKHZlY3RvciBzaWduZWQgY2hhciBfX2EpIHsKICByZXR1cm4gX19hOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3JldmIodmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hKSB7CiAgcmV0dXJuIF9fYTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGJvb2wgc2hvcnQgX19BVFRSU19vX2FpCnZlY19yZXZiKHZlY3RvciBib29sIHNob3J0IF9fYSkgewogIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9faW5kaWNlcyA9CiAgICAgIHsgMSwgMCwgMywgMiwgNSwgNCwgNywgNiwgOSwgOCwgMTEsIDEwLCAxMywgMTIsIDE1LCAxNCB9OwogIHJldHVybiB2ZWNfcGVybShfX2EsIF9fYSwgX19pbmRpY2VzKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3JldmIodmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EpIHsKICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2luZGljZXMgPQogICAgICB7IDEsIDAsIDMsIDIsIDUsIDQsIDcsIDYsIDksIDgsIDExLCAxMCwgMTMsIDEyLCAxNSwgMTQgfTsKICByZXR1cm4gdmVjX3Blcm0oX19hLCBfX2EsIF9faW5kaWNlcyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3JldmIodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSkgewogIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9faW5kaWNlcyA9CiAgICAgeyAxLCAwLCAzLCAyLCA1LCA0LCA3LCA2LCA5LCA4LCAxMSwgMTAsIDEzLCAxMiwgMTUsIDE0IH07CiAgcmV0dXJuIHZlY19wZXJtKF9fYSwgX19hLCBfX2luZGljZXMpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBpbnQgX19BVFRSU19vX2FpCnZlY19yZXZiKHZlY3RvciBib29sIGludCBfX2EpIHsKICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2luZGljZXMgPQogICAgICB7IDMsIDIsIDEsIDAsIDcsIDYsIDUsIDQsIDExLCAxMCwgOSwgOCwgMTUsIDE0LCAxMywgMTIgfTsKICByZXR1cm4gdmVjX3Blcm0oX19hLCBfX2EsIF9faW5kaWNlcyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfcmV2Yih2ZWN0b3Igc2lnbmVkIGludCBfX2EpIHsKICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2luZGljZXMgPQogICAgICB7IDMsIDIsIDEsIDAsIDcsIDYsIDUsIDQsIDExLCAxMCwgOSwgOCwgMTUsIDE0LCAxMywgMTIgfTsKICByZXR1cm4gdmVjX3Blcm0oX19hLCBfX2EsIF9faW5kaWNlcyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19yZXZiKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hKSB7CiAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19pbmRpY2VzID0KICAgICAgeyAzLCAyLCAxLCAwLCA3LCA2LCA1LCA0LCAxMSwgMTAsIDksIDgsIDE1LCAxNCwgMTMsIDEyIH07CiAgcmV0dXJuIHZlY19wZXJtKF9fYSwgX19hLCBfX2luZGljZXMpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpCnZlY19yZXZiKHZlY3RvciBmbG9hdCBfX2EpIHsKIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9faW5kaWNlcyA9CiAgICAgIHsgMywgMiwgMSwgMCwgNywgNiwgNSwgNCwgMTEsIDEwLCA5LCA4LCAxNSwgMTQsIDEzLCAxMiB9OwogcmV0dXJuIHZlY19wZXJtKF9fYSwgX19hLCBfX2luZGljZXMpOwp9CgojaWZkZWYgX19WU1hfXwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgYm9vbCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19yZXZiKHZlY3RvciBib29sIGxvbmcgbG9uZyBfX2EpIHsKICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2luZGljZXMgPQogICAgICB7IDcsIDYsIDUsIDQsIDMsIDIsIDEsIDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDggfTsKICByZXR1cm4gdmVjX3Blcm0oX19hLCBfX2EsIF9faW5kaWNlcyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfcmV2Yih2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EpIHsKICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2luZGljZXMgPQogICAgICB7IDcsIDYsIDUsIDQsIDMsIDIsIDEsIDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDggfTsKICByZXR1cm4gdmVjX3Blcm0oX19hLCBfX2EsIF9faW5kaWNlcyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19yZXZiKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hKSB7CiAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19pbmRpY2VzID0KICAgICAgeyA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4IH07CiAgcmV0dXJuIHZlY19wZXJtKF9fYSwgX19hLCBfX2luZGljZXMpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZG91YmxlIF9fQVRUUlNfb19haQp2ZWNfcmV2Yih2ZWN0b3IgZG91YmxlIF9fYSkgewogIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9faW5kaWNlcyA9CiAgICAgIHsgNywgNiwgNSwgNCwgMywgMiwgMSwgMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCB9OwogIHJldHVybiB2ZWNfcGVybShfX2EsIF9fYSwgX19pbmRpY2VzKTsKfQojZW5kaWYgLyogRW5kIF9fVlNYX18gKi8KCiNpZiBkZWZpbmVkKF9fUE9XRVI4X1ZFQ1RPUl9fKSAmJiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pICYmICAgICAgICAgICAgICAgICAgICBcCiAgICBkZWZpbmVkKF9fU0laRU9GX0lOVDEyOF9fKQpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fQVRUUlNfb19haQp2ZWNfcmV2Yih2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fYSkgewogIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9faW5kaWNlcyA9CiAgICAgIHsgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCB9OwogIHJldHVybiAodmVjdG9yIHNpZ25lZCBfX2ludDEyOCl2ZWNfcGVybSgodmVjdG9yIHNpZ25lZCBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHNpZ25lZCBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19pbmRpY2VzKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fQVRUUlNfb19haQp2ZWNfcmV2Yih2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19hKSB7CiAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19pbmRpY2VzID0KICAgICAgeyAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwIH07CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjgpdmVjX3Blcm0oKHZlY3RvciBzaWduZWQgaW50KV9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHNpZ25lZCBpbnQpX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2luZGljZXMpOwp9CiNlbmRpZiAvKiBFTkQgX19QT1dFUjhfVkVDVE9SX18gJiYgX19wb3dlcnBjNjRfXyAqLwoKLyogdmVjX3hsICovCgojZGVmaW5lIHZlY194bGQyIHZlY194bAojZGVmaW5lIHZlY194bHc0IHZlY194bAp0eXBlZGVmIHZlY3RvciBzaWduZWQgY2hhciB1bmFsaWduZWRfdmVjX3NjaGFyIF9fYXR0cmlidXRlX18oKGFsaWduZWQoMSkpKTsKdHlwZWRlZiB2ZWN0b3IgdW5zaWduZWQgY2hhciB1bmFsaWduZWRfdmVjX3VjaGFyIF9fYXR0cmlidXRlX18oKGFsaWduZWQoMSkpKTsKdHlwZWRlZiB2ZWN0b3Igc2lnbmVkIHNob3J0IHVuYWxpZ25lZF92ZWNfc3Nob3J0IF9fYXR0cmlidXRlX18oKGFsaWduZWQoMSkpKTsKdHlwZWRlZiB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgdW5hbGlnbmVkX3ZlY191c2hvcnQgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCgxKSkpOwp0eXBlZGVmIHZlY3RvciBzaWduZWQgaW50IHVuYWxpZ25lZF92ZWNfc2ludCBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDEpKSk7CnR5cGVkZWYgdmVjdG9yIHVuc2lnbmVkIGludCB1bmFsaWduZWRfdmVjX3VpbnQgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCgxKSkpOwp0eXBlZGVmIHZlY3RvciBmbG9hdCB1bmFsaWduZWRfdmVjX2Zsb2F0IF9fYXR0cmlidXRlX18oKGFsaWduZWQoMSkpKTsKCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIHZlY3RvciBzaWduZWQgY2hhciB2ZWNfeGwocHRyZGlmZl90IF9fb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNpZ25lZCBjaGFyICpfX3B0cikgewogIHJldHVybiAqKHVuYWxpZ25lZF92ZWNfc2NoYXIgKikoX19wdHIgKyBfX29mZnNldCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIHZlY3RvciB1bnNpZ25lZCBjaGFyCnZlY194bChwdHJkaWZmX3QgX19vZmZzZXQsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKl9fcHRyKSB7CiAgcmV0dXJuICoodW5hbGlnbmVkX3ZlY191Y2hhciopKF9fcHRyICsgX19vZmZzZXQpOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSB2ZWN0b3Igc2lnbmVkIHNob3J0CnZlY194bChwdHJkaWZmX3QgX19vZmZzZXQsIGNvbnN0IHNpZ25lZCBzaG9ydCAqX19wdHIpIHsKICBzaWduZWQgY2hhciAqX19hZGRyID0gKHNpZ25lZCBjaGFyICopX19wdHIgKyBfX29mZnNldDsKICByZXR1cm4gKih1bmFsaWduZWRfdmVjX3NzaG9ydCAqKV9fYWRkcjsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgdmVjdG9yIHVuc2lnbmVkIHNob3J0CnZlY194bChwdHJkaWZmX3QgX19vZmZzZXQsIGNvbnN0IHVuc2lnbmVkIHNob3J0ICpfX3B0cikgewogIHNpZ25lZCBjaGFyICpfX2FkZHIgPSAoc2lnbmVkIGNoYXIgKilfX3B0ciArIF9fb2Zmc2V0OwogIHJldHVybiAqKHVuYWxpZ25lZF92ZWNfdXNob3J0ICopX19hZGRyOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSB2ZWN0b3Igc2lnbmVkIGludCB2ZWNfeGwocHRyZGlmZl90IF9fb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2lnbmVkIGludCAqX19wdHIpIHsKICBzaWduZWQgY2hhciAqX19hZGRyID0gKHNpZ25lZCBjaGFyICopX19wdHIgKyBfX29mZnNldDsKICByZXR1cm4gKih1bmFsaWduZWRfdmVjX3NpbnQgKilfX2FkZHI7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIHZlY3RvciB1bnNpZ25lZCBpbnQKdmVjX3hsKHB0cmRpZmZfdCBfX29mZnNldCwgY29uc3QgdW5zaWduZWQgaW50ICpfX3B0cikgewogIHNpZ25lZCBjaGFyICpfX2FkZHIgPSAoc2lnbmVkIGNoYXIgKilfX3B0ciArIF9fb2Zmc2V0OwogIHJldHVybiAqKHVuYWxpZ25lZF92ZWNfdWludCAqKV9fYWRkcjsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgdmVjdG9yIGZsb2F0IHZlY194bChwdHJkaWZmX3QgX19vZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmxvYXQgKl9fcHRyKSB7CiAgc2lnbmVkIGNoYXIgKl9fYWRkciA9IChzaWduZWQgY2hhciAqKV9fcHRyICsgX19vZmZzZXQ7CiAgcmV0dXJuICoodW5hbGlnbmVkX3ZlY19mbG9hdCAqKV9fYWRkcjsKfQoKI2lmZGVmIF9fVlNYX18KdHlwZWRlZiB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyB1bmFsaWduZWRfdmVjX3NsbCBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDEpKSk7CnR5cGVkZWYgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyB1bmFsaWduZWRfdmVjX3VsbCBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDEpKSk7CnR5cGVkZWYgdmVjdG9yIGRvdWJsZSB1bmFsaWduZWRfdmVjX2RvdWJsZSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDEpKSk7CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZwp2ZWNfeGwocHRyZGlmZl90IF9fb2Zmc2V0LCBjb25zdCBzaWduZWQgbG9uZyBsb25nICpfX3B0cikgewogIHNpZ25lZCBjaGFyICpfX2FkZHIgPSAoc2lnbmVkIGNoYXIgKilfX3B0ciArIF9fb2Zmc2V0OwogIHJldHVybiAqKHVuYWxpZ25lZF92ZWNfc2xsICopX19hZGRyOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nCnZlY194bChwdHJkaWZmX3QgX19vZmZzZXQsIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyAqX19wdHIpIHsKICBzaWduZWQgY2hhciAqX19hZGRyID0gKHNpZ25lZCBjaGFyICopX19wdHIgKyBfX29mZnNldDsKICByZXR1cm4gKih1bmFsaWduZWRfdmVjX3VsbCAqKV9fYWRkcjsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgdmVjdG9yIGRvdWJsZSB2ZWNfeGwocHRyZGlmZl90IF9fb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkb3VibGUgKl9fcHRyKSB7CiAgc2lnbmVkIGNoYXIgKl9fYWRkciA9IChzaWduZWQgY2hhciAqKV9fcHRyICsgX19vZmZzZXQ7CiAgcmV0dXJuICoodW5hbGlnbmVkX3ZlY19kb3VibGUgKilfX2FkZHI7Cn0KI2VuZGlmCgojaWYgZGVmaW5lZChfX1BPV0VSOF9WRUNUT1JfXykgJiYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKSAmJiAgICAgICAgICAgICAgICAgICAgXAogICAgZGVmaW5lZChfX1NJWkVPRl9JTlQxMjhfXykKdHlwZWRlZiB2ZWN0b3Igc2lnbmVkIF9faW50MTI4IHVuYWxpZ25lZF92ZWNfc2kxMjggX19hdHRyaWJ1dGVfXygoYWxpZ25lZCgxKSkpOwp0eXBlZGVmIHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCB1bmFsaWduZWRfdmVjX3VpMTI4CiAgICBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDEpKSk7CnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIHZlY3RvciBzaWduZWQgX19pbnQxMjgKdmVjX3hsKHB0cmRpZmZfdCBfX29mZnNldCwgY29uc3Qgc2lnbmVkIF9faW50MTI4ICpfX3B0cikgewogIHNpZ25lZCBjaGFyICpfX2FkZHIgPSAoc2lnbmVkIGNoYXIgKilfX3B0ciArIF9fb2Zmc2V0OwogIHJldHVybiAqKHVuYWxpZ25lZF92ZWNfc2kxMjggKilfX2FkZHI7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOAp2ZWNfeGwocHRyZGlmZl90IF9fb2Zmc2V0LCBjb25zdCB1bnNpZ25lZCBfX2ludDEyOCAqX19wdHIpIHsKICBzaWduZWQgY2hhciAqX19hZGRyID0gKHNpZ25lZCBjaGFyICopX19wdHIgKyBfX29mZnNldDsKICByZXR1cm4gKih1bmFsaWduZWRfdmVjX3VpMTI4ICopX19hZGRyOwp9CiNlbmRpZgoKLyogdmVjX3hsX2JlICovCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfeGxfYmUocHRyZGlmZl90IF9fb2Zmc2V0LCBjb25zdCBzaWduZWQgY2hhciAqX19wdHIpIHsKICB2ZWN0b3Igc2lnbmVkIGNoYXIgX192ZWMgPSAodmVjdG9yIHNpZ25lZCBjaGFyKV9fYnVpbHRpbl92c3hfbHh2ZDJ4X2JlKF9fb2Zmc2V0LCBfX3B0cik7CiAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fdmVjLCBfX3ZlYywgNywgNiwgNSwgNCwgMywgMiwgMSwgMCwgMTUsIDE0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMywgMTIsIDExLCAxMCwgOSwgOCk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfeGxfYmUocHRyZGlmZl90IF9fb2Zmc2V0LCBjb25zdCB1bnNpZ25lZCBjaGFyICpfX3B0cikgewogIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fdmVjID0gKHZlY3RvciB1bnNpZ25lZCBjaGFyKV9fYnVpbHRpbl92c3hfbHh2ZDJ4X2JlKF9fb2Zmc2V0LCBfX3B0cik7CiAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fdmVjLCBfX3ZlYywgNywgNiwgNSwgNCwgMywgMiwgMSwgMCwgMTUsIDE0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMywgMTIsIDExLCAxMCwgOSwgOCk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY194bF9iZShwdHJkaWZmX3QgX19vZmZzZXQsIGNvbnN0IHNpZ25lZCBzaG9ydCAqX19wdHIpIHsKICB2ZWN0b3Igc2lnbmVkIHNob3J0IF9fdmVjID0gKHZlY3RvciBzaWduZWQgc2hvcnQpX19idWlsdGluX3ZzeF9seHZkMnhfYmUoX19vZmZzZXQsIF9fcHRyKTsKICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX192ZWMsIF9fdmVjLCAzLCAyLCAxLCAwLCA3LCA2LCA1LCA0KTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfeGxfYmUocHRyZGlmZl90IF9fb2Zmc2V0LCBjb25zdCB1bnNpZ25lZCBzaG9ydCAqX19wdHIpIHsKICB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX192ZWMgPSAodmVjdG9yIHVuc2lnbmVkIHNob3J0KV9fYnVpbHRpbl92c3hfbHh2ZDJ4X2JlKF9fb2Zmc2V0LCBfX3B0cik7CiAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fdmVjLCBfX3ZlYywgMywgMiwgMSwgMCwgNywgNiwgNSwgNCk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfeGxfYmUoc2lnbmVkIGxvbmcgbG9uZyAgX19vZmZzZXQsIGNvbnN0IHNpZ25lZCBpbnQgKl9fcHRyKSB7CiAgcmV0dXJuICh2ZWN0b3Igc2lnbmVkIGludClfX2J1aWx0aW5fdnN4X2x4dnc0eF9iZShfX29mZnNldCwgX19wdHIpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfeGxfYmUoc2lnbmVkIGxvbmcgbG9uZyAgX19vZmZzZXQsIGNvbnN0IHVuc2lnbmVkIGludCAqX19wdHIpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBpbnQpX19idWlsdGluX3ZzeF9seHZ3NHhfYmUoX19vZmZzZXQsIF9fcHRyKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGZsb2F0IF9fQVRUUlNfb19haQp2ZWNfeGxfYmUoc2lnbmVkIGxvbmcgbG9uZyAgX19vZmZzZXQsIGNvbnN0IGZsb2F0ICpfX3B0cikgewogIHJldHVybiAodmVjdG9yIGZsb2F0KV9fYnVpbHRpbl92c3hfbHh2dzR4X2JlKF9fb2Zmc2V0LCBfX3B0cik7Cn0KCiNpZmRlZiBfX1ZTWF9fCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfeGxfYmUoc2lnbmVkIGxvbmcgbG9uZyAgX19vZmZzZXQsIGNvbnN0IHNpZ25lZCBsb25nIGxvbmcgKl9fcHRyKSB7CiAgcmV0dXJuICh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZylfX2J1aWx0aW5fdnN4X2x4dmQyeF9iZShfX29mZnNldCwgX19wdHIpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfeGxfYmUoc2lnbmVkIGxvbmcgbG9uZyAgX19vZmZzZXQsIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyAqX19wdHIpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcpX19idWlsdGluX3ZzeF9seHZkMnhfYmUoX19vZmZzZXQsIF9fcHRyKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGRvdWJsZSBfX0FUVFJTX29fYWkKdmVjX3hsX2JlKHNpZ25lZCBsb25nIGxvbmcgIF9fb2Zmc2V0LCBjb25zdCBkb3VibGUgKl9fcHRyKSB7CiAgcmV0dXJuICh2ZWN0b3IgZG91YmxlKV9fYnVpbHRpbl92c3hfbHh2ZDJ4X2JlKF9fb2Zmc2V0LCBfX3B0cik7Cn0KI2VuZGlmCgojaWYgZGVmaW5lZChfX1BPV0VSOF9WRUNUT1JfXykgJiYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKSAmJiAgICAgICAgICAgICAgICAgICAgXAogICAgZGVmaW5lZChfX1NJWkVPRl9JTlQxMjhfXykKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBfX2ludDEyOCBfX0FUVFJTX29fYWkKdmVjX3hsX2JlKHNpZ25lZCBsb25nIGxvbmcgIF9fb2Zmc2V0LCBjb25zdCBzaWduZWQgX19pbnQxMjggKl9fcHRyKSB7CiAgcmV0dXJuIHZlY194bChfX29mZnNldCwgX19wdHIpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19BVFRSU19vX2FpCnZlY194bF9iZShzaWduZWQgbG9uZyBsb25nICBfX29mZnNldCwgY29uc3QgdW5zaWduZWQgX19pbnQxMjggKl9fcHRyKSB7CiAgcmV0dXJuIHZlY194bChfX29mZnNldCwgX19wdHIpOwp9CiNlbmRpZgojZWxzZQogICNkZWZpbmUgdmVjX3hsX2JlIHZlY194bAojZW5kaWYKCiNpZiBkZWZpbmVkKF9fUE9XRVIxMF9WRUNUT1JfXykgJiYgZGVmaW5lZChfX1ZTWF9fKSAmJiAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBkZWZpbmVkKF9fU0laRU9GX0lOVDEyOF9fKQoKLyogdmVjdF94bF9zZXh0ICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19BVFRSU19vX2FpCnZlY194bF9zZXh0KHB0cmRpZmZfdCBfX29mZnNldCwgY29uc3Qgc2lnbmVkIGNoYXIgKl9fcG9pbnRlcikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIF9faW50MTI4KSooX19wb2ludGVyICsgX19vZmZzZXQpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19BVFRSU19vX2FpCnZlY194bF9zZXh0KHB0cmRpZmZfdCBfX29mZnNldCwgY29uc3Qgc2lnbmVkIHNob3J0ICpfX3BvaW50ZXIpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCkqKF9fcG9pbnRlciArIF9fb2Zmc2V0KTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fQVRUUlNfb19haQp2ZWNfeGxfc2V4dChwdHJkaWZmX3QgX19vZmZzZXQsIGNvbnN0IHNpZ25lZCBpbnQgKl9fcG9pbnRlcikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIF9faW50MTI4KSooX19wb2ludGVyICsgX19vZmZzZXQpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19BVFRSU19vX2FpCnZlY194bF9zZXh0KHB0cmRpZmZfdCBfX29mZnNldCwgY29uc3Qgc2lnbmVkIGxvbmcgbG9uZyAqX19wb2ludGVyKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjgpKihfX3BvaW50ZXIgKyBfX29mZnNldCk7Cn0KCi8qIHZlY194bF96ZXh0ICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19BVFRSU19vX2FpCnZlY194bF96ZXh0KHB0cmRpZmZfdCBfX29mZnNldCwgY29uc3QgdW5zaWduZWQgY2hhciAqX19wb2ludGVyKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjgpKihfX3BvaW50ZXIgKyBfX29mZnNldCk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCBfX0FUVFJTX29fYWkKdmVjX3hsX3pleHQocHRyZGlmZl90IF9fb2Zmc2V0LCBjb25zdCB1bnNpZ25lZCBzaG9ydCAqX19wb2ludGVyKSB7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjgpKihfX3BvaW50ZXIgKyBfX29mZnNldCk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCBfX0FUVFJTX29fYWkKdmVjX3hsX3pleHQocHRyZGlmZl90IF9fb2Zmc2V0LCBjb25zdCB1bnNpZ25lZCBpbnQgKl9fcG9pbnRlcikgewogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIF9faW50MTI4KSooX19wb2ludGVyICsgX19vZmZzZXQpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19BVFRSU19vX2FpCnZlY194bF96ZXh0KHB0cmRpZmZfdCBfX29mZnNldCwgY29uc3QgdW5zaWduZWQgbG9uZyBsb25nICpfX3BvaW50ZXIpIHsKICByZXR1cm4gKHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCkqKF9fcG9pbnRlciArIF9fb2Zmc2V0KTsKfQoKI2VuZGlmCgovKiB2ZWNfeGxkcyAqLwojaWZkZWYgX19WU1hfXwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX3hsZHMocHRyZGlmZl90IF9fb2Zmc2V0LCBjb25zdCBzaWduZWQgbG9uZyBsb25nICpfX3B0cikgewogIHNpZ25lZCBsb25nIGxvbmcgKl9fYWRkciA9IChzaWduZWQgbG9uZyBsb25nKikoKHNpZ25lZCBjaGFyICopX19wdHIgKyBfX29mZnNldCk7CiAgcmV0dXJuICh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZykgKl9fYWRkcjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX3hsZHMocHRyZGlmZl90IF9fb2Zmc2V0LCBjb25zdCB1bnNpZ25lZCBsb25nIGxvbmcgKl9fcHRyKSB7CiAgdW5zaWduZWQgbG9uZyBsb25nICpfX2FkZHIgPSAodW5zaWduZWQgbG9uZyBsb25nICopKChzaWduZWQgY2hhciAqKV9fcHRyICsgX19vZmZzZXQpOwogIHJldHVybiAodW5hbGlnbmVkX3ZlY191bGwpICpfX2FkZHI7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBkb3VibGUgX19BVFRSU19vX2FpIHZlY194bGRzKHB0cmRpZmZfdCBfX29mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG91YmxlICpfX3B0cikgewogIGRvdWJsZSAqX19hZGRyID0gKGRvdWJsZSopKChzaWduZWQgY2hhciAqKV9fcHRyICsgX19vZmZzZXQpOwogIHJldHVybiAodW5hbGlnbmVkX3ZlY19kb3VibGUpICpfX2FkZHI7Cn0KCi8qIHZlY19sb2FkX3NwbGF0cyAqLwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX2xvYWRfc3BsYXRzKHNpZ25lZCBsb25nIGxvbmcgX19vZmZzZXQsIGNvbnN0IHNpZ25lZCBpbnQgKl9fcHRyKSB7CiAgc2lnbmVkIGludCAqX19hZGRyID0gKHNpZ25lZCBpbnQqKSgoc2lnbmVkIGNoYXIgKilfX3B0ciArIF9fb2Zmc2V0KTsKICByZXR1cm4gKHZlY3RvciBzaWduZWQgaW50KSpfX2FkZHI7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfbG9hZF9zcGxhdHModW5zaWduZWQgbG9uZyBsb25nIF9fb2Zmc2V0LCBjb25zdCBzaWduZWQgaW50ICpfX3B0cikgewogIHNpZ25lZCBpbnQgKl9fYWRkciA9IChzaWduZWQgaW50KikoKHNpZ25lZCBjaGFyICopX19wdHIgKyBfX29mZnNldCk7CiAgcmV0dXJuICh2ZWN0b3Igc2lnbmVkIGludCkqX19hZGRyOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfbG9hZF9zcGxhdHMoc2lnbmVkIGxvbmcgbG9uZyBfX29mZnNldCwgY29uc3QgdW5zaWduZWQgaW50ICpfX3B0cikgewogIHVuc2lnbmVkIGludCAqX19hZGRyID0gKHVuc2lnbmVkIGludCopKChzaWduZWQgY2hhciAqKV9fcHRyICsgX19vZmZzZXQpOwogIHJldHVybiAodmVjdG9yIHVuc2lnbmVkIGludCkqX19hZGRyOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfbG9hZF9zcGxhdHModW5zaWduZWQgbG9uZyBsb25nIF9fb2Zmc2V0LCBjb25zdCB1bnNpZ25lZCBpbnQgKl9fcHRyKSB7CiAgdW5zaWduZWQgaW50ICpfX2FkZHIgPSAodW5zaWduZWQgaW50KikoKHNpZ25lZCBjaGFyICopX19wdHIgKyBfX29mZnNldCk7CiAgcmV0dXJuICh2ZWN0b3IgdW5zaWduZWQgaW50KSpfX2FkZHI7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkKdmVjX2xvYWRfc3BsYXRzKHNpZ25lZCBsb25nIGxvbmcgX19vZmZzZXQsIGNvbnN0IGZsb2F0ICpfX3B0cikgewogIGZsb2F0ICpfX2FkZHIgPSAoZmxvYXQqKSgoc2lnbmVkIGNoYXIgKilfX3B0ciArIF9fb2Zmc2V0KTsKICByZXR1cm4gKHZlY3RvciBmbG9hdCkqX19hZGRyOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpCnZlY19sb2FkX3NwbGF0cyh1bnNpZ25lZCBsb25nIGxvbmcgX19vZmZzZXQsIGNvbnN0IGZsb2F0ICpfX3B0cikgewogIGZsb2F0ICpfX2FkZHIgPSAoZmxvYXQqKSgoc2lnbmVkIGNoYXIgKilfX3B0ciArIF9fb2Zmc2V0KTsKICByZXR1cm4gKHZlY3RvciBmbG9hdCkqX19hZGRyOwp9CiNlbmRpZgoKLyogdmVjX3hzdCAqLwoKI2RlZmluZSB2ZWNfeHN0ZDIgdmVjX3hzdAojZGVmaW5lIHZlY194c3R3NCB2ZWNfeHN0CnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIHZvaWQKdmVjX3hzdCh2ZWN0b3Igc2lnbmVkIGNoYXIgX192ZWMsIHB0cmRpZmZfdCBfX29mZnNldCwgc2lnbmVkIGNoYXIgKl9fcHRyKSB7CiAgKih1bmFsaWduZWRfdmVjX3NjaGFyICopKF9fcHRyICsgX19vZmZzZXQpID0gX192ZWM7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIHZvaWQKdmVjX3hzdCh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX3ZlYywgcHRyZGlmZl90IF9fb2Zmc2V0LCB1bnNpZ25lZCBjaGFyICpfX3B0cikgewogICoodW5hbGlnbmVkX3ZlY191Y2hhciAqKShfX3B0ciArIF9fb2Zmc2V0KSA9IF9fdmVjOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSB2b2lkCnZlY194c3QodmVjdG9yIHNpZ25lZCBzaG9ydCBfX3ZlYywgcHRyZGlmZl90IF9fb2Zmc2V0LCBzaWduZWQgc2hvcnQgKl9fcHRyKSB7CiAgc2lnbmVkIGNoYXIgKl9fYWRkciA9IChzaWduZWQgY2hhciAqKV9fcHRyICsgX19vZmZzZXQ7CiAgKih1bmFsaWduZWRfdmVjX3NzaG9ydCAqKV9fYWRkciA9IF9fdmVjOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSB2b2lkIHZlY194c3QodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fdmVjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IF9fb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgKl9fcHRyKSB7CiAgc2lnbmVkIGNoYXIgKl9fYWRkciA9IChzaWduZWQgY2hhciAqKV9fcHRyICsgX19vZmZzZXQ7CiAgKih1bmFsaWduZWRfdmVjX3VzaG9ydCAqKV9fYWRkciA9IF9fdmVjOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSB2b2lkIHZlY194c3QodmVjdG9yIHNpZ25lZCBpbnQgX192ZWMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3QgX19vZmZzZXQsIHNpZ25lZCBpbnQgKl9fcHRyKSB7CiAgc2lnbmVkIGNoYXIgKl9fYWRkciA9IChzaWduZWQgY2hhciAqKV9fcHRyICsgX19vZmZzZXQ7CiAgKih1bmFsaWduZWRfdmVjX3NpbnQgKilfX2FkZHIgPSBfX3ZlYzsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgdm9pZAp2ZWNfeHN0KHZlY3RvciB1bnNpZ25lZCBpbnQgX192ZWMsIHB0cmRpZmZfdCBfX29mZnNldCwgdW5zaWduZWQgaW50ICpfX3B0cikgewogIHNpZ25lZCBjaGFyICpfX2FkZHIgPSAoc2lnbmVkIGNoYXIgKilfX3B0ciArIF9fb2Zmc2V0OwogICoodW5hbGlnbmVkX3ZlY191aW50ICopX19hZGRyID0gX192ZWM7Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIHZvaWQgdmVjX3hzdCh2ZWN0b3IgZmxvYXQgX192ZWMsIHB0cmRpZmZfdCBfX29mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0ICpfX3B0cikgewogIHNpZ25lZCBjaGFyICpfX2FkZHIgPSAoc2lnbmVkIGNoYXIgKilfX3B0ciArIF9fb2Zmc2V0OwogICoodW5hbGlnbmVkX3ZlY19mbG9hdCAqKV9fYWRkciA9IF9fdmVjOwp9CgojaWZkZWYgX19WU1hfXwpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSB2b2lkIHZlY194c3QodmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX192ZWMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3QgX19vZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduZWQgbG9uZyBsb25nICpfX3B0cikgewogIHNpZ25lZCBjaGFyICpfX2FkZHIgPSAoc2lnbmVkIGNoYXIgKilfX3B0ciArIF9fb2Zmc2V0OwogICoodW5hbGlnbmVkX3ZlY19zbGwgKilfX2FkZHIgPSBfX3ZlYzsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgdm9pZCB2ZWNfeHN0KHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX192ZWMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3QgX19vZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgKl9fcHRyKSB7CiAgc2lnbmVkIGNoYXIgKl9fYWRkciA9IChzaWduZWQgY2hhciAqKV9fcHRyICsgX19vZmZzZXQ7CiAgKih1bmFsaWduZWRfdmVjX3VsbCAqKV9fYWRkciA9IF9fdmVjOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSB2b2lkIHZlY194c3QodmVjdG9yIGRvdWJsZSBfX3ZlYywgcHRyZGlmZl90IF9fb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlICpfX3B0cikgewogIHNpZ25lZCBjaGFyICpfX2FkZHIgPSAoc2lnbmVkIGNoYXIgKilfX3B0ciArIF9fb2Zmc2V0OwogICoodW5hbGlnbmVkX3ZlY19kb3VibGUgKilfX2FkZHIgPSBfX3ZlYzsKfQojZW5kaWYKCiNpZiBkZWZpbmVkKF9fUE9XRVI4X1ZFQ1RPUl9fKSAmJiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pICYmICAgICAgICAgICAgICAgICAgICBcCiAgICBkZWZpbmVkKF9fU0laRU9GX0lOVDEyOF9fKQpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSB2b2lkIHZlY194c3QodmVjdG9yIHNpZ25lZCBfX2ludDEyOCBfX3ZlYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBfX29mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25lZCBfX2ludDEyOCAqX19wdHIpIHsKICBzaWduZWQgY2hhciAqX19hZGRyID0gKHNpZ25lZCBjaGFyICopX19wdHIgKyBfX29mZnNldDsKICAqKHVuYWxpZ25lZF92ZWNfc2kxMjggKilfX2FkZHIgPSBfX3ZlYzsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgdm9pZCB2ZWNfeHN0KHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCBfX3ZlYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBfX29mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIF9faW50MTI4ICpfX3B0cikgewogIHNpZ25lZCBjaGFyICpfX2FkZHIgPSAoc2lnbmVkIGNoYXIgKilfX3B0ciArIF9fb2Zmc2V0OwogICoodW5hbGlnbmVkX3ZlY191aTEyOCAqKV9fYWRkciA9IF9fdmVjOwp9CiNlbmRpZgoKLyogdmVjX3hzdF90cnVuYyAqLwoKI2lmIGRlZmluZWQoX19QT1dFUjEwX1ZFQ1RPUl9fKSAmJiBkZWZpbmVkKF9fVlNYX18pICYmICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIGRlZmluZWQoX19TSVpFT0ZfSU5UMTI4X18pCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIHZvaWQgdmVjX3hzdF90cnVuYyh2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fdmVjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IF9fb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmVkIGNoYXIgKl9fcHRyKSB7CiAgKihfX3B0ciArIF9fb2Zmc2V0KSA9IChzaWduZWQgY2hhcilfX3ZlY1swXTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgdm9pZCB2ZWNfeHN0X3RydW5jKHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCBfX3ZlYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBfX29mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKl9fcHRyKSB7CiAgKihfX3B0ciArIF9fb2Zmc2V0KSA9ICh1bnNpZ25lZCBjaGFyKV9fdmVjWzBdOwp9CgpzdGF0aWMgaW5saW5lIF9fQVRUUlNfb19haSB2b2lkIHZlY194c3RfdHJ1bmModmVjdG9yIHNpZ25lZCBfX2ludDEyOCBfX3ZlYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBfX29mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25lZCBzaG9ydCAqX19wdHIpIHsKICAqKF9fcHRyICsgX19vZmZzZXQpID0gKHNpZ25lZCBzaG9ydClfX3ZlY1swXTsKfQoKc3RhdGljIGlubGluZSBfX0FUVFJTX29fYWkgdm9pZCB2ZWNfeHN0X3RydW5jKHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCBfX3ZlYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBfX29mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0ICpfX3B0cikgewogICooX19wdHIgKyBfX29mZnNldCkgPSAodW5zaWduZWQgc2hvcnQpX192ZWNbMF07Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIHZvaWQgdmVjX3hzdF90cnVuYyh2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fdmVjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IF9fb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmVkIGludCAqX19wdHIpIHsKICAqKF9fcHRyICsgX19vZmZzZXQpID0gKHNpZ25lZCBpbnQpX192ZWNbMF07Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIHZvaWQgdmVjX3hzdF90cnVuYyh2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX192ZWMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3QgX19vZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKl9fcHRyKSB7CiAgKihfX3B0ciArIF9fb2Zmc2V0KSA9ICh1bnNpZ25lZCBpbnQpX192ZWNbMF07Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIHZvaWQgdmVjX3hzdF90cnVuYyh2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fdmVjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IF9fb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmVkIGxvbmcgbG9uZyAqX19wdHIpIHsKICAqKF9fcHRyICsgX19vZmZzZXQpID0gKHNpZ25lZCBsb25nIGxvbmcpX192ZWNbMF07Cn0KCnN0YXRpYyBpbmxpbmUgX19BVFRSU19vX2FpIHZvaWQgdmVjX3hzdF90cnVuYyh2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX192ZWMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3QgX19vZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgKl9fcHRyKSB7CiAgKihfX3B0ciArIF9fb2Zmc2V0KSA9ICh1bnNpZ25lZCBsb25nIGxvbmcpX192ZWNbMF07Cn0KI2VuZGlmCgovKiB2ZWNfeHN0X2JlICovCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18Kc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3hzdF9iZSh2ZWN0b3Igc2lnbmVkIGNoYXIgX192ZWMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmVkIGxvbmcgbG9uZyAgX19vZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmVkIGNoYXIgKl9fcHRyKSB7CiAgdmVjdG9yIHNpZ25lZCBjaGFyIF9fdG1wID0KICAgICBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3ZlYywgX192ZWMsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDAsIDE1LCAxNCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMywgMTIsIDExLCAxMCwgOSwgOCk7CiAgdHlwZWRlZiBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZShzaXplb2YoX190bXApKSkpIGRvdWJsZSBfX3ZlY3Rvcl9kb3VibGU7CiAgX19idWlsdGluX3ZzeF9zdHh2ZDJ4X2JlKChfX3ZlY3Rvcl9kb3VibGUpX190bXAsIF9fb2Zmc2V0LCBfX3B0cik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY194c3RfYmUodmVjdG9yIHVuc2lnbmVkIGNoYXIgX192ZWMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmVkIGxvbmcgbG9uZyAgX19vZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqX19wdHIpIHsKICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX3RtcCA9CiAgICAgX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX192ZWMsIF9fdmVjLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwLCAxNSwgMTQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMsIDEyLCAxMSwgMTAsIDksIDgpOwogIHR5cGVkZWYgX19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoc2l6ZW9mKF9fdG1wKSkpKSBkb3VibGUgX192ZWN0b3JfZG91YmxlOwogIF9fYnVpbHRpbl92c3hfc3R4dmQyeF9iZSgoX192ZWN0b3JfZG91YmxlKV9fdG1wLCBfX29mZnNldCwgX19wdHIpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fQVRUUlNfb19haSB2ZWNfeHN0X2JlKHZlY3RvciBzaWduZWQgc2hvcnQgX192ZWMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmVkIGxvbmcgbG9uZyAgX19vZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmVkIHNob3J0ICpfX3B0cikgewogIHZlY3RvciBzaWduZWQgc2hvcnQgX190bXAgPQogICAgIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fdmVjLCBfX3ZlYywgMywgMiwgMSwgMCwgNywgNiwgNSwgNCk7CiAgdHlwZWRlZiBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZShzaXplb2YoX190bXApKSkpIGRvdWJsZSBfX3ZlY3Rvcl9kb3VibGU7CiAgX19idWlsdGluX3ZzeF9zdHh2ZDJ4X2JlKChfX3ZlY3Rvcl9kb3VibGUpX190bXAsIF9fb2Zmc2V0LCBfX3B0cik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY194c3RfYmUodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fdmVjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25lZCBsb25nIGxvbmcgIF9fb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0ICpfX3B0cikgewogIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX3RtcCA9CiAgICAgX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX192ZWMsIF9fdmVjLCAzLCAyLCAxLCAwLCA3LCA2LCA1LCA0KTsKICB0eXBlZGVmIF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKHNpemVvZihfX3RtcCkpKSkgZG91YmxlIF9fdmVjdG9yX2RvdWJsZTsKICBfX2J1aWx0aW5fdnN4X3N0eHZkMnhfYmUoKF9fdmVjdG9yX2RvdWJsZSlfX3RtcCwgX19vZmZzZXQsIF9fcHRyKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3hzdF9iZSh2ZWN0b3Igc2lnbmVkIGludCBfX3ZlYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduZWQgbG9uZyBsb25nICBfX29mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduZWQgaW50ICpfX3B0cikgewogIF9fYnVpbHRpbl92c3hfc3R4dnc0eF9iZShfX3ZlYywgX19vZmZzZXQsIF9fcHRyKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3hzdF9iZSh2ZWN0b3IgdW5zaWduZWQgaW50IF9fdmVjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25lZCBsb25nIGxvbmcgIF9fb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqX19wdHIpIHsKICBfX2J1aWx0aW5fdnN4X3N0eHZ3NHhfYmUoKHZlY3RvciBpbnQpX192ZWMsIF9fb2Zmc2V0LCBfX3B0cik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY194c3RfYmUodmVjdG9yIGZsb2F0IF9fdmVjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25lZCBsb25nIGxvbmcgIF9fb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0ICpfX3B0cikgewogIF9fYnVpbHRpbl92c3hfc3R4dnc0eF9iZSgodmVjdG9yIGludClfX3ZlYywgX19vZmZzZXQsIF9fcHRyKTsKfQoKI2lmZGVmIF9fVlNYX18Kc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3hzdF9iZSh2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX3ZlYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduZWQgbG9uZyBsb25nICBfX29mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduZWQgbG9uZyBsb25nICpfX3B0cikgewogIF9fYnVpbHRpbl92c3hfc3R4dmQyeF9iZSgodmVjdG9yIGRvdWJsZSlfX3ZlYywgX19vZmZzZXQsIF9fcHRyKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3hzdF9iZSh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fdmVjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25lZCBsb25nIGxvbmcgIF9fb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyAqX19wdHIpIHsKICBfX2J1aWx0aW5fdnN4X3N0eHZkMnhfYmUoKHZlY3RvciBkb3VibGUpX192ZWMsIF9fb2Zmc2V0LCBfX3B0cik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY194c3RfYmUodmVjdG9yIGRvdWJsZSBfX3ZlYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduZWQgbG9uZyBsb25nICBfX29mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgKl9fcHRyKSB7CiAgX19idWlsdGluX3ZzeF9zdHh2ZDJ4X2JlKCh2ZWN0b3IgZG91YmxlKV9fdmVjLCBfX29mZnNldCwgX19wdHIpOwp9CiNlbmRpZgoKI2lmIGRlZmluZWQoX19QT1dFUjhfVkVDVE9SX18pICYmIGRlZmluZWQoX19wb3dlcnBjNjRfXykgJiYgICAgICAgICAgICAgICAgICAgIFwKICAgIGRlZmluZWQoX19TSVpFT0ZfSU5UMTI4X18pCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19BVFRSU19vX2FpIHZlY194c3RfYmUodmVjdG9yIHNpZ25lZCBfX2ludDEyOCBfX3ZlYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduZWQgbG9uZyBsb25nICBfX29mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduZWQgX19pbnQxMjggKl9fcHRyKSB7CiAgdmVjX3hzdChfX3ZlYywgX19vZmZzZXQsIF9fcHRyKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0FUVFJTX29fYWkgdmVjX3hzdF9iZSh2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX192ZWMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmVkIGxvbmcgbG9uZyAgX19vZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgX19pbnQxMjggKl9fcHRyKSB7CiAgdmVjX3hzdChfX3ZlYywgX19vZmZzZXQsIF9fcHRyKTsKfQojZW5kaWYKI2Vsc2UKICAjZGVmaW5lIHZlY194c3RfYmUgdmVjX3hzdAojZW5kaWYKCiNpZmRlZiBfX1BPV0VSOV9WRUNUT1JfXwojZGVmaW5lIHZlY190ZXN0X2RhdGFfY2xhc3MoX19hLCBfX2IpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9HZW5lcmljKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoX19hKSwgdmVjdG9yIGZsb2F0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICA6ICh2ZWN0b3IgYm9vbCBpbnQpX19idWlsdGluX3ZzeF94dnRzdGRjc3AoKHZlY3RvciBmbG9hdCkoX19hKSwgKF9fYikpLCAgXAogICAgICAgIHZlY3RvciBkb3VibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICA6ICh2ZWN0b3IgYm9vbCBsb25nIGxvbmcpX19idWlsdGluX3ZzeF94dnRzdGRjZHAoKHZlY3RvciBkb3VibGUpKF9fYSksICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fYikpKQoKI2VuZGlmIC8qICNpZmRlZiBfX1BPV0VSOV9WRUNUT1JfXyAqLwoKc3RhdGljIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkgdmVjX25lZyh2ZWN0b3IgZmxvYXQgX19hKSB7CiAgcmV0dXJuIC1fX2E7Cn0KCiNpZmRlZiBfX1ZTWF9fCnN0YXRpYyB2ZWN0b3IgZG91YmxlIF9fQVRUUlNfb19haSB2ZWNfbmVnKHZlY3RvciBkb3VibGUgX19hKSB7CiAgcmV0dXJuIC1fX2E7Cn0KCiNlbmRpZgoKI2lmZGVmIF9fVlNYX18Kc3RhdGljIHZlY3RvciBsb25nIGxvbmcgX19BVFRSU19vX2FpIHZlY19uZWcodmVjdG9yIGxvbmcgbG9uZyBfX2EpIHsKICByZXR1cm4gLV9fYTsKfQojZW5kaWYKCnN0YXRpYyB2ZWN0b3Igc2lnbmVkIGludCBfX0FUVFJTX29fYWkgdmVjX25lZyh2ZWN0b3Igc2lnbmVkIGludCBfX2EpIHsKICByZXR1cm4gLV9fYTsKfQoKc3RhdGljIHZlY3RvciBzaWduZWQgc2hvcnQgX19BVFRSU19vX2FpIHZlY19uZWcodmVjdG9yIHNpZ25lZCBzaG9ydCBfX2EpIHsKICByZXR1cm4gLV9fYTsKfQoKc3RhdGljIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkgdmVjX25lZyh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hKSB7CiAgcmV0dXJuIC1fX2E7Cn0KCnN0YXRpYyB2ZWN0b3IgZmxvYXQgX19BVFRSU19vX2FpIHZlY19uYWJzKHZlY3RvciBmbG9hdCBfX2EpIHsKICByZXR1cm4gLSB2ZWNfYWJzKF9fYSk7Cn0KCiNpZmRlZiBfX1ZTWF9fCnN0YXRpYyB2ZWN0b3IgZG91YmxlIF9fQVRUUlNfb19haSB2ZWNfbmFicyh2ZWN0b3IgZG91YmxlIF9fYSkgewogIHJldHVybiAtIHZlY19hYnMoX19hKTsKfQoKI2VuZGlmCgojaWZkZWYgX19QT1dFUjhfVkVDVE9SX18Kc3RhdGljIHZlY3RvciBsb25nIGxvbmcgX19BVFRSU19vX2FpIHZlY19uYWJzKHZlY3RvciBsb25nIGxvbmcgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZtaW5zZChfX2EsIC1fX2EpOwp9CiNlbmRpZgoKc3RhdGljIHZlY3RvciBzaWduZWQgaW50IF9fQVRUUlNfb19haSB2ZWNfbmFicyh2ZWN0b3Igc2lnbmVkIGludCBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdm1pbnN3KF9fYSwgLV9fYSk7Cn0KCnN0YXRpYyB2ZWN0b3Igc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haSB2ZWNfbmFicyh2ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bWluc2goX19hLCAtX19hKTsKfQoKc3RhdGljIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkgdmVjX25hYnModmVjdG9yIHNpZ25lZCBjaGFyIF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192bWluc2IoX19hLCAtX19hKTsKfQoKc3RhdGljIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkgdmVjX3JlY2lwZGl2KHZlY3RvciBmbG9hdCBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgZmxvYXQgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9wcGNfcmVjaXBkaXZmKF9fYSwgX19iKTsKfQoKI2lmZGVmIF9fVlNYX18Kc3RhdGljIHZlY3RvciBkb3VibGUgX19BVFRSU19vX2FpIHZlY19yZWNpcGRpdih2ZWN0b3IgZG91YmxlIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgZG91YmxlIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fcHBjX3JlY2lwZGl2ZChfX2EsIF9fYik7Cn0KI2VuZGlmCgojaWZkZWYgX19QT1dFUjEwX1ZFQ1RPUl9fCgovKiB2ZWNfZXh0cmFjdG0gKi8KCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX2V4dHJhY3RtKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192ZXh0cmFjdGJtKF9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX2V4dHJhY3RtKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmV4dHJhY3RobShfX2EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19leHRyYWN0bSh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192ZXh0cmFjdHdtKF9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX2V4dHJhY3RtKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZleHRyYWN0ZG0oX19hKTsKfQoKI2lmZGVmIF9fU0laRU9GX0lOVDEyOF9fCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX2V4dHJhY3RtKHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmV4dHJhY3RxbShfX2EpOwp9CiNlbmRpZgoKLyogdmVjX2V4cGFuZG0gKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfZXhwYW5kbSh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmV4cGFuZGJtKF9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX2V4cGFuZG0odmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192ZXhwYW5kaG0oX19hKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX2V4cGFuZG0odmVjdG9yIHVuc2lnbmVkIGludCBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmV4cGFuZHdtKF9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19leHBhbmRtKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZleHBhbmRkbShfX2EpOwp9CgojaWZkZWYgX19TSVpFT0ZfSU5UMTI4X18Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fQVRUUlNfb19haQp2ZWNfZXhwYW5kbSh2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19hKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZleHBhbmRxbShfX2EpOwp9CiNlbmRpZgoKLyogdmVjX2NudG0gKi8KCiNkZWZpbmUgdmVjX2NudG0oX19hLCBfX21wKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX0dlbmVyaWMoKF9fYSksIHZlY3RvciB1bnNpZ25lZCBjaGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgOiBfX2J1aWx0aW5fYWx0aXZlY192Y250bWJiKChfX2EpLCAodW5zaWduZWQgY2hhcikoX19tcCkpLCAgICAgICAgICBcCiAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgOiBfX2J1aWx0aW5fYWx0aXZlY192Y250bWJoKChfX2EpLCAodW5zaWduZWQgY2hhcikoX19tcCkpLCAgICAgICAgICBcCiAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgOiBfX2J1aWx0aW5fYWx0aXZlY192Y250bWJ3KChfX2EpLCAodW5zaWduZWQgY2hhcikoX19tcCkpLCAgICAgICAgICBcCiAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgOiBfX2J1aWx0aW5fYWx0aXZlY192Y250bWJkKChfX2EpLCAodW5zaWduZWQgY2hhcikoX19tcCkpKQoKLyogdmVjX2dlbltifGh8d3xkfHFdbSAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19nZW5ibSh1bnNpZ25lZCBsb25nIGxvbmcgX19ibSkgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY19tdHZzcmJtKF9fYm0pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY19nZW5obSh1bnNpZ25lZCBsb25nIGxvbmcgX19ibSkgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY19tdHZzcmhtKF9fYm0pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfZ2Vud20odW5zaWduZWQgbG9uZyBsb25nIF9fYm0pIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfbXR2c3J3bShfX2JtKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX2dlbmRtKHVuc2lnbmVkIGxvbmcgbG9uZyBfX2JtKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX210dnNyZG0oX19ibSk7Cn0KCiNpZmRlZiBfX1NJWkVPRl9JTlQxMjhfXwpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19BVFRSU19vX2FpCnZlY19nZW5xbSh1bnNpZ25lZCBsb25nIGxvbmcgX19ibSkgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY19tdHZzcnFtKF9fYm0pOwp9CiNlbmRpZgoKLyogdmVjX3BkZXAgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19wZGVwKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192cGRlcGQoX19hLCBfX2IpOwp9CgovKiB2ZWNfcGV4dCAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX3BleHQodmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZwZXh0ZChfX2EsIF9fYik7Cn0KCi8qIHZlY19jZnVnZSAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX2NmdWdlKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y2Z1Z2VkKF9fYSwgX19iKTsKfQoKLyogdmVjX2duYiAqLwoKI2RlZmluZSB2ZWNfZ25iKF9fYSwgX19iKSBfX2J1aWx0aW5fYWx0aXZlY192Z25iKF9fYSwgX19iKQoKLyogdmVjX3Rlcm5hcnlsb2dpYyAqLwojaWZkZWYgX19WU1hfXwojaWZkZWYgX19TSVpFT0ZfSU5UMTI4X18KI2RlZmluZSB2ZWNfdGVybmFyeWxvZ2ljKF9fYSwgX19iLCBfX2MsIF9faW1tKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfR2VuZXJpYygoX19hKSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICA6IF9fYnVpbHRpbl92c3hfeHhldmFsKCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKShfX2EpLCAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKShfX2IpLCAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKShfX2MpLCAoX19pbW0pKSwgIFwKICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBzaG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICA6IF9fYnVpbHRpbl92c3hfeHhldmFsKCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKShfX2EpLCAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKShfX2IpLCAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKShfX2MpLCAoX19pbW0pKSwgIFwKICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICA6IF9fYnVpbHRpbl92c3hfeHhldmFsKCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKShfX2EpLCAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKShfX2IpLCAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKShfX2MpLCAoX19pbW0pKSwgIFwKICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICA6IF9fYnVpbHRpbl92c3hfeHhldmFsKCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKShfX2EpLCAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKShfX2IpLCAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKShfX2MpLCAoX19pbW0pKSwgIFwKICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICA6IF9fYnVpbHRpbl92c3hfeHhldmFsKCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKShfX2EpLCAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKShfX2IpLCAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKShfX2MpLCAoX19pbW0pKSkKI2Vsc2UKI2RlZmluZSB2ZWNfdGVybmFyeWxvZ2ljKF9fYSwgX19iLCBfX2MsIF9faW1tKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfR2VuZXJpYygoX19hKSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICA6IF9fYnVpbHRpbl92c3hfeHhldmFsKCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKShfX2EpLCAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKShfX2IpLCAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKShfX2MpLCAoX19pbW0pKSwgIFwKICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBzaG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICA6IF9fYnVpbHRpbl92c3hfeHhldmFsKCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKShfX2EpLCAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKShfX2IpLCAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKShfX2MpLCAoX19pbW0pKSwgIFwKICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICA6IF9fYnVpbHRpbl92c3hfeHhldmFsKCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKShfX2EpLCAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKShfX2IpLCAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKShfX2MpLCAoX19pbW0pKSwgIFwKICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICA6IF9fYnVpbHRpbl92c3hfeHhldmFsKCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKShfX2EpLCAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKShfX2IpLCAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nKShfX2MpLCAoX19pbW0pKSkKI2VuZGlmIC8qIF9fU0laRU9GX0lOVDEyOF9fICovCiNlbmRpZiAvKiBfX1ZTWF9fICovCgovKiB2ZWNfZ2VucGN2bSAqLwoKI2lmZGVmIF9fVlNYX18KI2RlZmluZSB2ZWNfZ2VucGN2bShfX2EsIF9faW1tKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfR2VuZXJpYygoX19hKSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICA6IF9fYnVpbHRpbl92c3hfeHhnZW5wY3ZibSgoX19hKSwgKGludCkoX19pbW0pKSwgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBzaG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICA6IF9fYnVpbHRpbl92c3hfeHhnZW5wY3ZobSgoX19hKSwgKGludCkoX19pbW0pKSwgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICA6IF9fYnVpbHRpbl92c3hfeHhnZW5wY3Z3bSgoX19hKSwgKGludCkoX19pbW0pKSwgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICA6IF9fYnVpbHRpbl92c3hfeHhnZW5wY3ZkbSgoX19hKSwgKGludCkoX19pbW0pKSkKI2VuZGlmIC8qIF9fVlNYX18gKi8KCi8qIHZlY19jbHJfZmlyc3QgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX2Nscl9maXJzdCh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hLCB1bnNpZ25lZCBpbnQgX19uKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y2xycmIoX19hLCBfX24pOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y2xybGIoIF9fYSwgX19uKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfY2xyX2ZpcnN0KHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgdW5zaWduZWQgaW50IF9fbikgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNscnJiKCh2ZWN0b3Igc2lnbmVkIGNoYXIpX19hLCBfX24pOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192Y2xybGIoKHZlY3RvciBzaWduZWQgY2hhcilfX2EsIF9fbik7CiNlbmRpZgp9CgovKiB2ZWNfY2xyX2xhc3QgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX2Nscl9sYXN0KHZlY3RvciBzaWduZWQgY2hhciBfX2EsIHVuc2lnbmVkIGludCBfX24pIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbHJsYihfX2EsIF9fbik7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbHJyYiggX19hLCBfX24pOwojZW5kaWYKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19jbHJfbGFzdCh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHVuc2lnbmVkIGludCBfX24pIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbHJsYigodmVjdG9yIHNpZ25lZCBjaGFyKV9fYSwgX19uKTsKI2Vsc2UKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNscnJiKCh2ZWN0b3Igc2lnbmVkIGNoYXIpX19hLCBfX24pOwojZW5kaWYKfQoKLyogdmVjX2NudGx6bSAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX2NudGx6bSh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmNsemRtKF9fYSwgX19iKTsKfQoKLyogdmVjX2NudHR6bSAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX2NudHR6bSh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmN0emRtKF9fYSwgX19iKTsKfQoKLyogdmVjX21vZCAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19tb2QodmVjdG9yIHNpZ25lZCBpbnQgX19hLCB2ZWN0b3Igc2lnbmVkIGludCBfX2IpIHsKICByZXR1cm4gX19hICUgX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfbW9kKHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYikgewogIHJldHVybiBfX2EgJSBfX2I7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfbW9kKHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHNpZ25lZCBsb25nIGxvbmcgX19iKSB7CiAgcmV0dXJuIF9fYSAlIF9fYjsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX21vZCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IpIHsKICByZXR1cm4gX19hICUgX19iOwp9CgojaWZkZWYgX19TSVpFT0ZfSU5UMTI4X18Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBfX2ludDEyOCBfX0FUVFJTX29fYWkKdmVjX21vZCh2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fYSwgdmVjdG9yIHNpZ25lZCBfX2ludDEyOCBfX2IpIHsKICByZXR1cm4gX19hICUgX19iOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19BVFRSU19vX2FpCnZlY19tb2QodmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fYSwgdmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fYikgewogIHJldHVybiAgX19hICUgX19iOwp9CiNlbmRpZgoKLyogdmVjX3NsZGJpICovCgojZGVmaW5lIHZlY19zbGRiKF9fYSwgX19iLCBfX2MpIF9fYnVpbHRpbl9hbHRpdmVjX3ZzbGRiaShfX2EsIF9fYiwgKF9fYyAmIDB4NykpCgovKiB2ZWNfc3JkYmkgKi8KCiNkZWZpbmUgdmVjX3NyZGIoX19hLCBfX2IsIF9fYykgX19idWlsdGluX2FsdGl2ZWNfdnNyZGJpKF9fYSwgX19iLCAoX19jICYgMHg3KSkKCi8qIHZlY19pbnNlcnRsICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX2luc2VydGwodW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYiwgdW5zaWduZWQgaW50IF9fYykgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmluc2JyeChfX2IsIF9fYywgX19hKTsKI2Vsc2UKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmluc2JseChfX2IsIF9fYywgX19hKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX2luc2VydGwodW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iLCB1bnNpZ25lZCBpbnQgX19jKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192aW5zaHJ4KF9fYiwgX19jLCBfX2EpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192aW5zaGx4KF9fYiwgX19jLCBfX2EpOwojZW5kaWYKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX2luc2VydGwodW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IsIHVuc2lnbmVkIGludCBfX2MpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZpbnN3cngoX19iLCBfX2MsIF9fYSk7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZpbnN3bHgoX19iLCBfX2MsIF9fYSk7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfaW5zZXJ0bCh1bnNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYiwKICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fYykgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmluc2RyeChfX2IsIF9fYywgX19hKTsKI2Vsc2UKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmluc2RseChfX2IsIF9fYywgX19hKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfaW5zZXJ0bCh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYiwKICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fYykgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmluc2J2cngoX19iLCBfX2MsIF9fYSk7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZpbnNidmx4KF9fYiwgX19jLCBfX2EpOwojZW5kaWYKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfaW5zZXJ0bCh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iLAogICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19jKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192aW5zaHZyeChfX2IsIF9fYywgX19hKTsKI2Vsc2UKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmluc2h2bHgoX19iLCBfX2MsIF9fYSk7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfaW5zZXJ0bCh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IsCiAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX2MpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZpbnN3dnJ4KF9fYiwgX19jLCBfX2EpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192aW5zd3ZseChfX2IsIF9fYywgX19hKTsKI2VuZGlmCn0KCi8qIHZlY19pbnNlcnRoICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX2luc2VydGgodW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYiwgdW5zaWduZWQgaW50IF9fYykgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmluc2JseChfX2IsIF9fYywgX19hKTsKI2Vsc2UKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmluc2JyeChfX2IsIF9fYywgX19hKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX2luc2VydGgodW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iLCB1bnNpZ25lZCBpbnQgX19jKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192aW5zaGx4KF9fYiwgX19jLCBfX2EpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192aW5zaHJ4KF9fYiwgX19jLCBfX2EpOwojZW5kaWYKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkKdmVjX2luc2VydGgodW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IsIHVuc2lnbmVkIGludCBfX2MpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZpbnN3bHgoX19iLCBfX2MsIF9fYSk7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZpbnN3cngoX19iLCBfX2MsIF9fYSk7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haQp2ZWNfaW5zZXJ0aCh1bnNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYiwKICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fYykgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmluc2RseChfX2IsIF9fYywgX19hKTsKI2Vsc2UKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmluc2RyeChfX2IsIF9fYywgX19hKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfaW5zZXJ0aCh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYiwKICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fYykgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmluc2J2bHgoX19iLCBfX2MsIF9fYSk7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZpbnNidnJ4KF9fYiwgX19jLCBfX2EpOwojZW5kaWYKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfaW5zZXJ0aCh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iLAogICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19jKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192aW5zaHZseChfX2IsIF9fYywgX19hKTsKI2Vsc2UKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmluc2h2cngoX19iLCBfX2MsIF9fYSk7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgaW50IF9fQVRUUlNfb19haQp2ZWNfaW5zZXJ0aCh2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IsCiAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX2MpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZpbnN3dmx4KF9fYiwgX19jLCBfX2EpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192aW5zd3ZyeChfX2IsIF9fYywgX19hKTsKI2VuZGlmCn0KCi8qIHZlY19leHRyYWN0bCAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkgdmVjX2V4dHJhY3RsKAogICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLCB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IsIHVuc2lnbmVkIGludCBfX2MpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZleHRkdWJ2cngoX19hLCBfX2IsIF9fYyk7CiNlbHNlCiAgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3JldCA9IF9fYnVpbHRpbl9hbHRpdmVjX3ZleHRkdWJ2bHgoX19hLCBfX2IsIF9fYyk7CiAgcmV0dXJuIHZlY19zbGQoX19yZXQsIF9fcmV0LCA4KTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpIHZlY19leHRyYWN0bCgKICAgIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IsIHVuc2lnbmVkIGludCBfX2MpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZleHRkdWh2cngoX19hLCBfX2IsIF9fYyk7CiNlbHNlCiAgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3JldCA9IF9fYnVpbHRpbl9hbHRpdmVjX3ZleHRkdWh2bHgoX19hLCBfX2IsIF9fYyk7CiAgcmV0dXJuIHZlY19zbGQoX19yZXQsIF9fcmV0LCA4KTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpIHZlY19leHRyYWN0bCgKICAgIHZlY3RvciB1bnNpZ25lZCBpbnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYiwgdW5zaWduZWQgaW50IF9fYykgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdmV4dGR1d3ZyeChfX2EsIF9fYiwgX19jKTsKI2Vsc2UKICB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fcmV0ID0gX19idWlsdGluX2FsdGl2ZWNfdmV4dGR1d3ZseChfX2EsIF9fYiwgX19jKTsKICByZXR1cm4gdmVjX3NsZChfX3JldCwgX19yZXQsIDgpOwojZW5kaWYKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX2V4dHJhY3RsKHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19hLCB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYiwKICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX2MpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZleHRkZHZyeChfX2EsIF9fYiwgX19jKTsKI2Vsc2UKICB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fcmV0ID0gX19idWlsdGluX2FsdGl2ZWNfdmV4dGRkdmx4KF9fYSwgX19iLCBfX2MpOwogIHJldHVybiB2ZWNfc2xkKF9fcmV0LCBfX3JldCwgOCk7CiNlbmRpZgp9CgovKiB2ZWNfZXh0cmFjdGggKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpIHZlY19leHRyYWN0aCgKICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iLCB1bnNpZ25lZCBpbnQgX19jKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192ZXh0ZHVidmx4KF9fYSwgX19iLCBfX2MpOwojZWxzZQogIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19yZXQgPSBfX2J1aWx0aW5fYWx0aXZlY192ZXh0ZHVidnJ4KF9fYSwgX19iLCBfX2MpOwogIHJldHVybiB2ZWNfc2xkKF9fcmV0LCBfX3JldCwgOCk7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haSB2ZWNfZXh0cmFjdGgoCiAgICB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hLCB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19iLCB1bnNpZ25lZCBpbnQgX19jKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192ZXh0ZHVodmx4KF9fYSwgX19iLCBfX2MpOwojZWxzZQogIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19yZXQgPSBfX2J1aWx0aW5fYWx0aXZlY192ZXh0ZHVodnJ4KF9fYSwgX19iLCBfX2MpOwogIHJldHVybiB2ZWNfc2xkKF9fcmV0LCBfX3JldCwgOCk7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fQVRUUlNfb19haSB2ZWNfZXh0cmFjdGgoCiAgICB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgdmVjdG9yIHVuc2lnbmVkIGludCBfX2IsIHVuc2lnbmVkIGludCBfX2MpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZleHRkdXd2bHgoX19hLCBfX2IsIF9fYyk7CiNlbHNlCiAgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3JldCA9IF9fYnVpbHRpbl9hbHRpdmVjX3ZleHRkdXd2cngoX19hLCBfX2IsIF9fYyk7CiAgcmV0dXJuIHZlY19zbGQoX19yZXQsIF9fcmV0LCA4KTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgX19BVFRSU19vX2FpCnZlY19leHRyYWN0aCh2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IsCiAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19jKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192ZXh0ZGR2bHgoX19hLCBfX2IsIF9fYyk7CiNlbHNlCiAgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3JldCA9IF9fYnVpbHRpbl9hbHRpdmVjX3ZleHRkZHZyeChfX2EsIF9fYiwgX19jKTsKICByZXR1cm4gdmVjX3NsZChfX3JldCwgX19yZXQsIDgpOwojZW5kaWYKfQoKI2lmZGVmIF9fVlNYX18KCi8qIHZlY19wZXJteCAqLwoKI2RlZmluZSB2ZWNfcGVybXgoX19hLCBfX2IsIF9fYywgX19kKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2J1aWx0aW5fdnN4X3h4cGVybXgoKF9fYSksIChfX2IpLCAoX19jKSwgKF9fZCkpCgovKiB2ZWNfYmxlbmR2ICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19ibGVuZHYodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHNpZ25lZCBjaGFyIF9fYiwKICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2MpIHsKICByZXR1cm4gX19idWlsdGluX3ZzeF94eGJsZW5kdmIoX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfYmxlbmR2KHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iLAogICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fdnN4X3h4YmxlbmR2YihfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX2JsZW5kdih2ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSwgdmVjdG9yIHNpZ25lZCBzaG9ydCBfX2IsCiAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fdnN4X3h4YmxlbmR2aChfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fQVRUUlNfb19haQp2ZWNfYmxlbmR2KHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EsIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2IsCiAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fdnN4X3h4YmxlbmR2aChfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19ibGVuZHYodmVjdG9yIHNpZ25lZCBpbnQgX19hLCB2ZWN0b3Igc2lnbmVkIGludCBfX2IsCiAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGludCBfX2MpIHsKICByZXR1cm4gX19idWlsdGluX3ZzeF94eGJsZW5kdncoX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBpbnQgX19BVFRSU19vX2FpCnZlY19ibGVuZHYodmVjdG9yIHVuc2lnbmVkIGludCBfX2EsIHZlY3RvciB1bnNpZ25lZCBpbnQgX19iLAogICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBpbnQgX19jKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl92c3hfeHhibGVuZHZ3KF9fYSwgX19iLCBfX2MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX2JsZW5kdih2ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZyBfX2EsIHZlY3RvciBzaWduZWQgbG9uZyBsb25nIF9fYiwKICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fdnN4X3h4YmxlbmR2ZChfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0FUVFJTX29fYWkKdmVjX2JsZW5kdih2ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fYSwgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2IsCiAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2MpIHsKICByZXR1cm4gX19idWlsdGluX3ZzeF94eGJsZW5kdmQoX19hLCBfX2IsIF9fYyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBmbG9hdCBfX0FUVFJTX29fYWkKdmVjX2JsZW5kdih2ZWN0b3IgZmxvYXQgX19hLCB2ZWN0b3IgZmxvYXQgX19iLCB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYykgewogIHJldHVybiBfX2J1aWx0aW5fdnN4X3h4YmxlbmR2dyhfX2EsIF9fYiwgX19jKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGRvdWJsZSBfX0FUVFJTX29fYWkKdmVjX2JsZW5kdih2ZWN0b3IgZG91YmxlIF9fYSwgdmVjdG9yIGRvdWJsZSBfX2IsCiAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2MpIHsKICByZXR1cm4gX19idWlsdGluX3ZzeF94eGJsZW5kdmQoX19hLCBfX2IsIF9fYyk7Cn0KCi8qIHZlY19yZXBsYWNlX2VsdCAqLwoKI2RlZmluZSB2ZWNfcmVwbGFjZV9lbHQgX19idWlsdGluX2FsdGl2ZWNfdmVjX3JlcGxhY2VfZWx0CgovKiB2ZWNfcmVwbGFjZV91bmFsaWduZWQgKi8KCiNkZWZpbmUgdmVjX3JlcGxhY2VfdW5hbGlnbmVkIF9fYnVpbHRpbl9hbHRpdmVjX3ZlY19yZXBsYWNlX3VuYWxpZ25lZAoKLyogdmVjX3NwbGF0aSAqLwoKI2RlZmluZSB2ZWNfc3BsYXRpKF9fYSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfR2VuZXJpYygoX19hKSwgc2lnbmVkIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICA6ICgodmVjdG9yIHNpZ25lZCBpbnQpX19hKSwgdW5zaWduZWQgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICA6ICgodmVjdG9yIHVuc2lnbmVkIGludClfX2EpLCBmbG9hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICA6ICgodmVjdG9yIGZsb2F0KV9fYSkpCgovKiB2ZWNfc3BhdGlkICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgZG91YmxlIF9fQVRUUlNfb19haSB2ZWNfc3BsYXRpZChjb25zdCBmbG9hdCBfX2EpIHsKICByZXR1cm4gKCh2ZWN0b3IgZG91YmxlKSgoZG91YmxlKV9fYSkpOwp9CgovKiB2ZWNfc3BsYXRpX2lucyAqLwoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBpbnQgX19BVFRSU19vX2FpIHZlY19zcGxhdGlfaW5zKAogICAgdmVjdG9yIHNpZ25lZCBpbnQgX19hLCBjb25zdCB1bnNpZ25lZCBpbnQgX19iLCBjb25zdCBzaWduZWQgaW50IF9fYykgewogIGNvbnN0IHVuc2lnbmVkIGludCBfX2QgPSBfX2IgJiAweDAxOwojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICBfX2FbMSAtIF9fZF0gPSBfX2M7CiAgX19hWzMgLSBfX2RdID0gX19jOwojZWxzZQogIF9fYVtfX2RdID0gX19jOwogIF9fYVsyICsgX19kXSA9IF9fYzsKI2VuZGlmCiAgcmV0dXJuIF9fYTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIGludCBfX0FUVFJTX29fYWkgdmVjX3NwbGF0aV9pbnMoCiAgICB2ZWN0b3IgdW5zaWduZWQgaW50IF9fYSwgY29uc3QgdW5zaWduZWQgaW50IF9fYiwgY29uc3QgdW5zaWduZWQgaW50IF9fYykgewogIGNvbnN0IHVuc2lnbmVkIGludCBfX2QgPSBfX2IgJiAweDAxOwojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICBfX2FbMSAtIF9fZF0gPSBfX2M7CiAgX19hWzMgLSBfX2RdID0gX19jOwojZWxzZQogIF9fYVtfX2RdID0gX19jOwogIF9fYVsyICsgX19kXSA9IF9fYzsKI2VuZGlmCiAgcmV0dXJuIF9fYTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIGZsb2F0IF9fQVRUUlNfb19haQp2ZWNfc3BsYXRpX2lucyh2ZWN0b3IgZmxvYXQgX19hLCBjb25zdCB1bnNpZ25lZCBpbnQgX19iLCBjb25zdCBmbG9hdCBfX2MpIHsKICBjb25zdCB1bnNpZ25lZCBpbnQgX19kID0gX19iICYgMHgwMTsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgX19hWzEgLSBfX2RdID0gX19jOwogIF9fYVszIC0gX19kXSA9IF9fYzsKI2Vsc2UKICBfX2FbX19kXSA9IF9fYzsKICBfX2FbMiArIF9fZF0gPSBfX2M7CiNlbmRpZgogIHJldHVybiBfX2E7Cn0KCi8qIHZlY190ZXN0X2xzYmJfYWxsX29uZXMgKi8KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkKdmVjX3Rlc3RfbHNiYl9hbGxfb25lcyh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EpIHsKICByZXR1cm4gX19idWlsdGluX3ZzeF94dnRsc2JiKF9fYSwgMSk7Cn0KCi8qIHZlY190ZXN0X2xzYmJfYWxsX3plcm9zICovCgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpCnZlY190ZXN0X2xzYmJfYWxsX3plcm9zKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fdnN4X3h2dGxzYmIoX19hLCAwKTsKfQojZW5kaWYgLyogX19WU1hfXyAqLwoKLyogdmVjX3N0cmlsICovCgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX0FUVFJTX29fYWkKdmVjX3N0cmlsKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSkgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnN0cmlicigodmVjdG9yIHNpZ25lZCBjaGFyKV9fYSk7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdHJpYmwoKHZlY3RvciBzaWduZWQgY2hhcilfX2EpOwojZW5kaWYKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfc3RyaWwodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSkgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnN0cmlicihfX2EpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192c3RyaWJsKF9fYSk7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY19zdHJpbCh2ZWN0b3IgdW5zaWduZWQgc2hvcnQgX19hKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192c3RyaWhyKCh2ZWN0b3Igc2lnbmVkIHNob3J0KV9fYSk7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdHJpaGwoKHZlY3RvciBzaWduZWQgc2hvcnQpX19hKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgc2hvcnQgX19BVFRSU19vX2FpCnZlY19zdHJpbCh2ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSkgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnN0cmlocihfX2EpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192c3RyaWhsKF9fYSk7CiNlbmRpZgp9CgovKiB2ZWNfc3RyaWxfcCAqLwoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfc3RyaWxfcCh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdHJpYnJfcChfX0NSNl9FUSwgKHZlY3RvciBzaWduZWQgY2hhcilfX2EpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192c3RyaWJsX3AoX19DUjZfRVEsICh2ZWN0b3Igc2lnbmVkIGNoYXIpX19hKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX3N0cmlsX3AodmVjdG9yIHNpZ25lZCBjaGFyIF9fYSkgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnN0cmlicl9wKF9fQ1I2X0VRLCBfX2EpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192c3RyaWJsX3AoX19DUjZfRVEsIF9fYSk7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19zdHJpbF9wKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdHJpaHJfcChfX0NSNl9FUSwgKHZlY3RvciBzaWduZWQgc2hvcnQpX19hKTsKI2Vsc2UKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnN0cmlobF9wKF9fQ1I2X0VRLCAodmVjdG9yIHNpZ25lZCBzaG9ydClfX2EpOwojZW5kaWYKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfc3RyaWxfcCh2ZWN0b3Igc2lnbmVkIHNob3J0IF9fYSkgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnN0cmlocl9wKF9fQ1I2X0VRLCBfX2EpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192c3RyaWhsX3AoX19DUjZfRVEsIF9fYSk7CiNlbmRpZgp9CgovKiB2ZWNfc3RyaXIgKi8KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fQVRUUlNfb19haQp2ZWNfc3RyaXIodmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192c3RyaWJsKCh2ZWN0b3Igc2lnbmVkIGNoYXIpX19hKTsKI2Vsc2UKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnN0cmlicigodmVjdG9yIHNpZ25lZCBjaGFyKV9fYSk7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIGNoYXIgX19BVFRSU19vX2FpCnZlY19zdHJpcih2ZWN0b3Igc2lnbmVkIGNoYXIgX19hKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192c3RyaWJsKF9fYSk7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdHJpYnIoX19hKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3N0cmlyKHZlY3RvciB1bnNpZ25lZCBzaG9ydCBfX2EpIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdHJpaGwoKHZlY3RvciBzaWduZWQgc2hvcnQpX19hKTsKI2Vsc2UKICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnN0cmlocigodmVjdG9yIHNpZ25lZCBzaG9ydClfX2EpOwojZW5kaWYKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHNpZ25lZCBzaG9ydCBfX0FUVFJTX29fYWkKdmVjX3N0cmlyKHZlY3RvciBzaWduZWQgc2hvcnQgX19hKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192c3RyaWhsKF9fYSk7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdHJpaHIoX19hKTsKI2VuZGlmCn0KCi8qIHZlY19zdHJpcl9wICovCgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19zdHJpcl9wKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSkgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnN0cmlibF9wKF9fQ1I2X0VRLCAodmVjdG9yIHNpZ25lZCBjaGFyKV9fYSk7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdHJpYnJfcChfX0NSNl9FUSwgKHZlY3RvciBzaWduZWQgY2hhcilfX2EpOwojZW5kaWYKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fQVRUUlNfb19haSB2ZWNfc3RyaXJfcCh2ZWN0b3Igc2lnbmVkIGNoYXIgX19hKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192c3RyaWJsX3AoX19DUjZfRVEsIF9fYSk7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdHJpYnJfcChfX0NSNl9FUSwgX19hKTsKI2VuZGlmCn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0FUVFJTX29fYWkgdmVjX3N0cmlyX3AodmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fYSkgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByZXR1cm4gX19idWlsdGluX2FsdGl2ZWNfdnN0cmlobF9wKF9fQ1I2X0VRLCAodmVjdG9yIHNpZ25lZCBzaG9ydClfX2EpOwojZWxzZQogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192c3RyaWhyX3AoX19DUjZfRVEsICh2ZWN0b3Igc2lnbmVkIHNob3J0KV9fYSk7CiNlbmRpZgp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19BVFRSU19vX2FpIHZlY19zdHJpcl9wKHZlY3RvciBzaWduZWQgc2hvcnQgX19hKSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiBfX2J1aWx0aW5fYWx0aXZlY192c3RyaWhsX3AoX19DUjZfRVEsIF9fYSk7CiNlbHNlCiAgcmV0dXJuIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdHJpaHJfcChfX0NSNl9FUSwgX19hKTsKI2VuZGlmCn0KCi8qIHZzW2wgfCByIHwgcmFdICovCgojaWZkZWYgX19TSVpFT0ZfSU5UMTI4X18Kc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fQVRUUlNfb19haQp2ZWNfc2wodmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fYSwgdmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fYikgewogIHJldHVybiBfX2EgPDwgKF9fYiAlICh2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjgpKHNpemVvZih1bnNpZ25lZCBfX2ludDEyOCkgKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fQ0hBUl9CSVRfXykpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fQVRUUlNfb19haQp2ZWNfc2wodmVjdG9yIHNpZ25lZCBfX2ludDEyOCBfX2EsIHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCBfX2IpIHsKICByZXR1cm4gX19hIDw8IChfX2IgJSAodmVjdG9yIHVuc2lnbmVkIF9faW50MTI4KShzaXplb2YodW5zaWduZWQgX19pbnQxMjgpICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0NIQVJfQklUX18pKTsKfQoKc3RhdGljIF9faW5saW5lX18gdmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fQVRUUlNfb19haQp2ZWNfc3IodmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fYSwgdmVjdG9yIHVuc2lnbmVkIF9faW50MTI4IF9fYikgewogIHJldHVybiBfX2EgPj4gKF9fYiAlICh2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjgpKHNpemVvZih1bnNpZ25lZCBfX2ludDEyOCkgKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fQ0hBUl9CSVRfXykpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2ZWN0b3Igc2lnbmVkIF9faW50MTI4IF9fQVRUUlNfb19haQp2ZWNfc3IodmVjdG9yIHNpZ25lZCBfX2ludDEyOCBfX2EsIHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCBfX2IpIHsKICByZXR1cm4gKAogICAgICB2ZWN0b3Igc2lnbmVkIF9faW50MTI4KSgoKHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOClfX2EpID4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX2IgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCkoc2l6ZW9mKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIF9faW50MTI4KSAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0NIQVJfQklUX18pKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCBfX0FUVFJTX29fYWkKdmVjX3NyYSh2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19hLCB2ZWN0b3IgdW5zaWduZWQgX19pbnQxMjggX19iKSB7CiAgcmV0dXJuICgKICAgICAgdmVjdG9yIHVuc2lnbmVkIF9faW50MTI4KSgoKHZlY3RvciBzaWduZWQgX19pbnQxMjgpX19hKSA+PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX2IgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yIHVuc2lnbmVkIF9faW50MTI4KShzaXplb2YoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBfX2ludDEyOCkgKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0NIQVJfQklUX18pKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZlY3RvciBzaWduZWQgX19pbnQxMjggX19BVFRSU19vX2FpCnZlY19zcmEodmVjdG9yIHNpZ25lZCBfX2ludDEyOCBfX2EsIHZlY3RvciB1bnNpZ25lZCBfX2ludDEyOCBfX2IpIHsKICByZXR1cm4gX19hID4+IChfX2IgJSAodmVjdG9yIHVuc2lnbmVkIF9faW50MTI4KShzaXplb2YodW5zaWduZWQgX19pbnQxMjgpICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0NIQVJfQklUX18pKTsKfQoKI2VuZGlmIC8qIF9fU0laRU9GX0lOVDEyOF9fICovCiNlbmRpZiAvKiBfX1BPV0VSMTBfVkVDVE9SX18gKi8KCiNpZmRlZiBfX1BPV0VSOF9WRUNUT1JfXwojZGVmaW5lIF9fYmNkYWRkKF9fYSwgX19iLCBfX3BzKSBfX2J1aWx0aW5fcHBjX2JjZGFkZCgoX19hKSwgKF9fYiksIChfX3BzKSkKI2RlZmluZSBfX2JjZHN1YihfX2EsIF9fYiwgX19wcykgX19idWlsdGluX3BwY19iY2RzdWIoKF9fYSksIChfX2IpLCAoX19wcykpCgpzdGF0aWMgX19pbmxpbmVfXyBsb25nIF9fYmNkYWRkX29mbCh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fcHBjX2JjZGFkZF9wKF9fQ1I2X1NPLCBfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGxvbmcgX19iY2RzdWJfb2ZsKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9wcGNfYmNkc3ViX3AoX19DUjZfU08sIF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gbG9uZyBfX2JjZF9pbnZhbGlkKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSkgewogIHJldHVybiBfX2J1aWx0aW5fcHBjX2JjZHN1Yl9wKF9fQ1I2X1NPLCBfX2EsIF9fYSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGxvbmcgX19iY2RjbXBlcSh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3BwY19iY2RzdWJfcChfX0NSNl9FUSwgX19hLCBfX2IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBsb25nIF9fYmNkY21wbHQodmVjdG9yIHVuc2lnbmVkIGNoYXIgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgX19iKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9wcGNfYmNkc3ViX3AoX19DUjZfTFQsIF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gbG9uZyBfX2JjZGNtcGd0KHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fcHBjX2JjZHN1Yl9wKF9fQ1I2X0dULCBfX2EsIF9fYik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGxvbmcgX19iY2RjbXBsZSh2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBfX2IpIHsKICByZXR1cm4gX19idWlsdGluX3BwY19iY2RzdWJfcChfX0NSNl9HVF9SRVYsIF9fYSwgX19iKTsKfQoKc3RhdGljIF9faW5saW5lX18gbG9uZyBfX2JjZGNtcGdlKHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIF9fYikgewogIHJldHVybiBfX2J1aWx0aW5fcHBjX2JjZHN1Yl9wKF9fQ1I2X0xUX1JFViwgX19hLCBfX2IpOwp9CgojZW5kaWYgLy8gX19QT1dFUjhfVkVDVE9SX18KCiN1bmRlZiBfX0FUVFJTX29fYWkKCiNlbmRpZiAvKiBfX0FMVElWRUNfSCAqLwoALyo9PT0tLS0tLS0tLS0tLS0tLS0gYW14aW50cmluLmggLSBBTVggaW50cmluc2ljcyAtKi0gQy9DKysgLSotLS0tLS0tLS0tLS0tLS09PT0KICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCgojaWZuZGVmIF9fSU1NSU5UUklOX0gKI2Vycm9yICJOZXZlciB1c2UgPGFteGludHJpbi5oPiBkaXJlY3RseTsgaW5jbHVkZSA8aW1taW50cmluLmg+IGluc3RlYWQuIgojZW5kaWYgLyogX19JTU1JTlRSSU5fSCAqLwoKI2lmbmRlZiBfX0FNWElOVFJJTl9ICiNkZWZpbmUgX19BTVhJTlRSSU5fSAojaWZkZWYgX194ODZfNjRfXwoKLyogRGVmaW5lIHRoZSBkZWZhdWx0IGF0dHJpYnV0ZXMgZm9yIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlLiAqLwojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSU19USUxFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygiYW14LXRpbGUiKSkpCiNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTX0lOVDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJhbXgtaW50OCIpKSkKI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlNfQkYxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oImFteC1iZjE2IikpKQoKLy8vIExvYWQgdGlsZSBjb25maWd1cmF0aW9uIGZyb20gYSA2NC1ieXRlIG1lbW9yeSBsb2NhdGlvbiBzcGVjaWZpZWQgYnkKLy8vICJtZW1fYWRkciIuIFRoZSB0aWxlIGNvbmZpZ3VyYXRpb24gaW5jbHVkZXMgdGhlIHRpbGUgdHlwZSBwYWxldHRlLCB0aGUKLy8vIG51bWJlciBvZiBieXRlcyBwZXIgcm93LCBhbmQgdGhlIG51bWJlciBvZiByb3dzLiBJZiB0aGUgc3BlY2lmaWVkCi8vLyBwYWxldHRlX2lkIGlzIHplcm8sIHRoYXQgc2lnbmlmaWVzIHRoZSBpbml0IHN0YXRlIGZvciBib3RoIHRoZSB0aWxlCi8vLyBjb25maWcgYW5kIHRoZSB0aWxlIGRhdGEsIGFuZCB0aGUgdGlsZXMgYXJlIHplcm9lZC4gQW55IGludmFsaWQKLy8vIGNvbmZpZ3VyYXRpb25zIHdpbGwgcmVzdWx0IGluICNHUCBmYXVsdC4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8aW1taW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBMRFRJTEVDRkcgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19jb25maWcKLy8vICAgIEEgcG9pbnRlciB0byA1MTItYml0cyBjb25maWd1cmF0aW9uCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTX1RJTEUKX3RpbGVfbG9hZGNvbmZpZyhjb25zdCB2b2lkICpfX2NvbmZpZykgewogIF9fYnVpbHRpbl9pYTMyX3RpbGVfbG9hZGNvbmZpZyhfX2NvbmZpZyk7Cn0KCi8vLyBTdG9yZXMgdGhlIGN1cnJlbnQgdGlsZSBjb25maWd1cmF0aW9uIHRvIGEgNjQtYnl0ZSBtZW1vcnkgbG9jYXRpb24KLy8vIHNwZWNpZmllZCBieSAibWVtX2FkZHIiLiBUaGUgdGlsZSBjb25maWd1cmF0aW9uIGluY2x1ZGVzIHRoZSB0aWxlIHR5cGUKLy8vIHBhbGV0dGUsIHRoZSBudW1iZXIgb2YgYnl0ZXMgcGVyIHJvdywgYW5kIHRoZSBudW1iZXIgb2Ygcm93cy4gSWYgdGlsZXMKLy8vIGFyZSBub3QgY29uZmlndXJlZCwgYWxsIHplcm9lcyB3aWxsIGJlIHN0b3JlZCB0byBtZW1vcnkuCi8vLwovLy8gXGhlYWRlcmZpbGUgPGltbWludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gU1RUSUxFQ0ZHIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fY29uZmlnCi8vLyAgICBBIHBvaW50ZXIgdG8gNTEyLWJpdHMgY29uZmlndXJhdGlvbgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSU19USUxFCl90aWxlX3N0b3JlY29uZmlnKHZvaWQgKl9fY29uZmlnKSB7CiAgX19idWlsdGluX2lhMzJfdGlsZV9zdG9yZWNvbmZpZyhfX2NvbmZpZyk7Cn0KCi8vLyBSZWxlYXNlIHRoZSB0aWxlIGNvbmZpZ3VyYXRpb24gdG8gcmV0dXJuIHRvIHRoZSBpbml0IHN0YXRlLCB3aGljaAovLy8gcmVsZWFzZXMgYWxsIHN0b3JhZ2UgaXQgY3VycmVudGx5IGhvbGRzLgovLy8KLy8vIFxoZWFkZXJmaWxlIDxpbW1pbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFRJTEVSRUxFQVNFIDwvYz4gaW5zdHJ1Y3Rpb24uCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTX1RJTEUgX3RpbGVfcmVsZWFzZSh2b2lkKSB7CiAgX19idWlsdGluX2lhMzJfdGlsZXJlbGVhc2UoKTsKfQoKLy8vIExvYWQgdGlsZSByb3dzIGZyb20gbWVtb3J5IHNwZWNpZmllaWQgYnkgImJhc2UiIGFkZHJlc3MgYW5kICJzdHJpZGUiIGludG8KLy8vIGRlc3RpbmF0aW9uIHRpbGUgImRzdCIgdXNpbmcgdGhlIHRpbGUgY29uZmlndXJhdGlvbiBwcmV2aW91c2x5IGNvbmZpZ3VyZWQKLy8vIHZpYSAiX3RpbGVfbG9hZGNvbmZpZyIuCi8vLwovLy8gXGhlYWRlcmZpbGUgPGltbWludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVElMRUxPQUREIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIGRzdAovLy8gICAgQSBkZXN0aW5hdGlvbiB0aWxlLiBNYXggc2l6ZSBpcyAxMDI0IEJ5dGVzLgovLy8gXHBhcmFtIGJhc2UKLy8vICAgIEEgcG9pbnRlciB0byBiYXNlIGFkZHJlc3MuCi8vLyBccGFyYW0gc3RyaWRlCi8vLyAgICBUaGUgc3RyaWRlIGJldHdlZW4gdGhlIHJvd3MnIGRhdGEgdG8gYmUgbG9hZGVkIGluIG1lbW9yeS4KI2RlZmluZSBfdGlsZV9sb2FkZChkc3QsIGJhc2UsIHN0cmlkZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2J1aWx0aW5faWEzMl90aWxlbG9hZGQ2NCgoZHN0KSwgKChjb25zdCB2b2lkICopKGJhc2UpKSwgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19TSVpFX1RZUEVfXykoc3RyaWRlKSkKCi8vLyBMb2FkIHRpbGUgcm93cyBmcm9tIG1lbW9yeSBzcGVjaWZpZWlkIGJ5ICJiYXNlIiBhZGRyZXNzIGFuZCAic3RyaWRlIiBpbnRvCi8vLyBkZXN0aW5hdGlvbiB0aWxlICJkc3QiIHVzaW5nIHRoZSB0aWxlIGNvbmZpZ3VyYXRpb24gcHJldmlvdXNseSBjb25maWd1cmVkCi8vLyB2aWEgIl90aWxlX2xvYWRjb25maWciLiBUaGlzIGludHJpbnNpYyBwcm92aWRlcyBhIGhpbnQgdG8gdGhlIGltcGxlbWVudGF0aW9uCi8vLyB0aGF0IHRoZSBkYXRhIHdpbGwgbGlrZWx5IG5vdCBiZSByZXVzZWQgaW4gdGhlIG5lYXIgZnV0dXJlIGFuZCB0aGUgZGF0YQovLy8gY2FjaGluZyBjYW4gYmUgb3B0aW1pemVkIGFjY29yZGluZ2x5LgovLy8KLy8vIFxoZWFkZXJmaWxlIDxpbW1pbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFRJTEVMT0FERFQxIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIGRzdAovLy8gICAgQSBkZXN0aW5hdGlvbiB0aWxlLiBNYXggc2l6ZSBpcyAxMDI0IEJ5dGVzLgovLy8gXHBhcmFtIGJhc2UKLy8vICAgIEEgcG9pbnRlciB0byBiYXNlIGFkZHJlc3MuCi8vLyBccGFyYW0gc3RyaWRlCi8vLyAgICBUaGUgc3RyaWRlIGJldHdlZW4gdGhlIHJvd3MnIGRhdGEgdG8gYmUgbG9hZGVkIGluIG1lbW9yeS4KI2RlZmluZSBfdGlsZV9zdHJlYW1fbG9hZGQoZHN0LCBiYXNlLCBzdHJpZGUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2J1aWx0aW5faWEzMl90aWxlbG9hZGR0MTY0KChkc3QpLCAoKGNvbnN0IHZvaWQgKikoYmFzZSkpLCAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX1NJWkVfVFlQRV9fKShzdHJpZGUpKQoKLy8vIFN0b3JlIHRoZSB0aWxlIHNwZWNpZmllZCBieSAic3JjIiB0byBtZW1vcnkgc3BlY2lmaWVpZCBieSAiYmFzZSIgYWRkcmVzcyBhbmQKLy8vICJzdHJpZGUiIHVzaW5nIHRoZSB0aWxlIGNvbmZpZ3VyYXRpb24gcHJldmlvdXNseSBjb25maWd1cmVkIHZpYQovLy8gIl90aWxlX2xvYWRjb25maWciLgovLy8KLy8vIFxoZWFkZXJmaWxlIDxpbW1pbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFRJTEVTVE9SRUQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gZHN0Ci8vLyAgICBBIGRlc3RpbmF0aW9uIHRpbGUuIE1heCBzaXplIGlzIDEwMjQgQnl0ZXMuCi8vLyBccGFyYW0gYmFzZQovLy8gICAgQSBwb2ludGVyIHRvIGJhc2UgYWRkcmVzcy4KLy8vIFxwYXJhbSBzdHJpZGUKLy8vICAgIFRoZSBzdHJpZGUgYmV0d2VlbiB0aGUgcm93cycgZGF0YSB0byBiZSBzdG9yZWQgaW4gbWVtb3J5LgojZGVmaW5lIF90aWxlX3N0b3JlZChkc3QsIGJhc2UsIHN0cmlkZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fYnVpbHRpbl9pYTMyX3RpbGVzdG9yZWQ2NCgoZHN0KSwgKCh2b2lkICopKGJhc2UpKSwgKF9fU0laRV9UWVBFX18pKHN0cmlkZSkpCgovLy8gWmVybyB0aGUgdGlsZSBzcGVjaWZpZWQgYnkgInRkZXN0Ii4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8aW1taW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBUSUxFWkVSTyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSB0aWxlCi8vLyAgICBUaGUgZGVzdGluYXRpb24gdGlsZSB0byBiZSB6ZXJvLiBNYXggc2l6ZSBpcyAxMDI0IEJ5dGVzLgojZGVmaW5lIF90aWxlX3plcm8odGlsZSkgX19idWlsdGluX2lhMzJfdGlsZXplcm8oKHRpbGUpKQoKLy8vIENvbXB1dGUgZG90LXByb2R1Y3Qgb2YgYnl0ZXMgaW4gdGlsZXMgd2l0aCBhIHNvdXJjZS9kZXN0aW5hdGlvbiBhY2N1bXVsYXRvci4KLy8vIE11bHRpcGx5IGdyb3VwcyBvZiA0IGFkamFjZW50IHBhaXJzIG9mIHNpZ25lZCA4LWJpdCBpbnRlZ2VycyBpbiBzcmMwIHdpdGgKLy8vIGNvcnJlc3BvbmRpbmcgc2lnbmVkIDgtYml0IGludGVnZXJzIGluIHNyYzEsIHByb2R1Y2luZyA0IGludGVybWVkaWF0ZSAzMi1iaXQKLy8vIHJlc3VsdHMuIFN1bSB0aGVzZSA0IHJlc3VsdHMgd2l0aCB0aGUgY29ycmVzcG9uZGluZyAzMi1iaXQgaW50ZWdlciBpbiAiZHN0IiwKLy8vIGFuZCBzdG9yZSB0aGUgMzItYml0IHJlc3VsdCBiYWNrIHRvIHRpbGUgImRzdCIuCi8vLwovLy8gXGhlYWRlcmZpbGUgPGltbWludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVERQQlNTRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBkc3QKLy8vICAgIFRoZSBkZXN0aW5hdGlvbiB0aWxlLiBNYXggc2l6ZSBpcyAxMDI0IEJ5dGVzLgovLy8gXHBhcmFtIHNyYzAKLy8vICAgIFRoZSAxc3Qgc291cmNlIHRpbGUuIE1heCBzaXplIGlzIDEwMjQgQnl0ZXMuCi8vLyBccGFyYW0gc3JjMQovLy8gICAgVGhlIDJuZCBzb3VyY2UgdGlsZS4gTWF4IHNpemUgaXMgMTAyNCBCeXRlcy4KI2RlZmluZSBfdGlsZV9kcGJzc2QoZHN0LCBzcmMwLCBzcmMxKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2J1aWx0aW5faWEzMl90ZHBic3NkKChkc3QpLCAoc3JjMCksIChzcmMxKSkKCi8vLyBDb21wdXRlIGRvdC1wcm9kdWN0IG9mIGJ5dGVzIGluIHRpbGVzIHdpdGggYSBzb3VyY2UvZGVzdGluYXRpb24gYWNjdW11bGF0b3IuCi8vLyBNdWx0aXBseSBncm91cHMgb2YgNCBhZGphY2VudCBwYWlycyBvZiBzaWduZWQgOC1iaXQgaW50ZWdlcnMgaW4gc3JjMCB3aXRoCi8vLyBjb3JyZXNwb25kaW5nIHVuc2lnbmVkIDgtYml0IGludGVnZXJzIGluIHNyYzEsIHByb2R1Y2luZyA0IGludGVybWVkaWF0ZQovLy8gMzItYml0IHJlc3VsdHMuIFN1bSB0aGVzZSA0IHJlc3VsdHMgd2l0aCB0aGUgY29ycmVzcG9uZGluZyAzMi1iaXQgaW50ZWdlcgovLy8gaW4gImRzdCIsIGFuZCBzdG9yZSB0aGUgMzItYml0IHJlc3VsdCBiYWNrIHRvIHRpbGUgImRzdCIuCi8vLwovLy8gXGhlYWRlcmZpbGUgPGltbWludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVERQQlNVRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBkc3QKLy8vICAgIFRoZSBkZXN0aW5hdGlvbiB0aWxlLiBNYXggc2l6ZSBpcyAxMDI0IEJ5dGVzLgovLy8gXHBhcmFtIHNyYzAKLy8vICAgIFRoZSAxc3Qgc291cmNlIHRpbGUuIE1heCBzaXplIGlzIDEwMjQgQnl0ZXMuCi8vLyBccGFyYW0gc3JjMQovLy8gICAgVGhlIDJuZCBzb3VyY2UgdGlsZS4gTWF4IHNpemUgaXMgMTAyNCBCeXRlcy4KI2RlZmluZSBfdGlsZV9kcGJzdWQoZHN0LCBzcmMwLCBzcmMxKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2J1aWx0aW5faWEzMl90ZHBic3VkKChkc3QpLCAoc3JjMCksIChzcmMxKSkKCi8vLyBDb21wdXRlIGRvdC1wcm9kdWN0IG9mIGJ5dGVzIGluIHRpbGVzIHdpdGggYSBzb3VyY2UvZGVzdGluYXRpb24gYWNjdW11bGF0b3IuCi8vLyBNdWx0aXBseSBncm91cHMgb2YgNCBhZGphY2VudCBwYWlycyBvZiB1bnNpZ25lZCA4LWJpdCBpbnRlZ2VycyBpbiBzcmMwIHdpdGgKLy8vIGNvcnJlc3BvbmRpbmcgc2lnbmVkIDgtYml0IGludGVnZXJzIGluIHNyYzEsIHByb2R1Y2luZyA0IGludGVybWVkaWF0ZSAzMi1iaXQKLy8vIHJlc3VsdHMuIFN1bSB0aGVzZSA0IHJlc3VsdHMgd2l0aCB0aGUgY29ycmVzcG9uZGluZyAzMi1iaXQgaW50ZWdlciBpbiAiZHN0IiwKLy8vIGFuZCBzdG9yZSB0aGUgMzItYml0IHJlc3VsdCBiYWNrIHRvIHRpbGUgImRzdCIuCi8vLwovLy8gXGhlYWRlcmZpbGUgPGltbWludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVERQQlVTRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBkc3QKLy8vICAgIFRoZSBkZXN0aW5hdGlvbiB0aWxlLiBNYXggc2l6ZSBpcyAxMDI0IEJ5dGVzLgovLy8gXHBhcmFtIHNyYzAKLy8vICAgIFRoZSAxc3Qgc291cmNlIHRpbGUuIE1heCBzaXplIGlzIDEwMjQgQnl0ZXMuCi8vLyBccGFyYW0gc3JjMQovLy8gICAgVGhlIDJuZCBzb3VyY2UgdGlsZS4gTWF4IHNpemUgaXMgMTAyNCBCeXRlcy4KI2RlZmluZSBfdGlsZV9kcGJ1c2QoZHN0LCBzcmMwLCBzcmMxKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX2J1aWx0aW5faWEzMl90ZHBidXNkKChkc3QpLCAoc3JjMCksIChzcmMxKSkKCi8vLyBDb21wdXRlIGRvdC1wcm9kdWN0IG9mIGJ5dGVzIGluIHRpbGVzIHdpdGggYSBzb3VyY2UvZGVzdGluYXRpb24gYWNjdW11bGF0b3IuCi8vLyBNdWx0aXBseSBncm91cHMgb2YgNCBhZGphY2VudCBwYWlycyBvZiB1bnNpZ25lZCA4LWJpdCBpbnRlZ2VycyBpbiBzcmMwIHdpdGgKLy8vIGNvcnJlc3BvbmRpbmcgdW5zaWduZWQgOC1iaXQgaW50ZWdlcnMgaW4gc3JjMSwgcHJvZHVjaW5nIDQgaW50ZXJtZWRpYXRlCi8vLyAzMi1iaXQgcmVzdWx0cy4gU3VtIHRoZXNlIDQgcmVzdWx0cyB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIDMyLWJpdCBpbnRlZ2VyIGluCi8vLyAiZHN0IiwgYW5kIHN0b3JlIHRoZSAzMi1iaXQgcmVzdWx0IGJhY2sgdG8gdGlsZSAiZHN0Ii4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8aW1taW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBURFBCVVVEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIGRzdAovLy8gICAgVGhlIGRlc3RpbmF0aW9uIHRpbGUuIE1heCBzaXplIGlzIDEwMjQgQnl0ZXMuCi8vLyBccGFyYW0gc3JjMAovLy8gICAgVGhlIDFzdCBzb3VyY2UgdGlsZS4gTWF4IHNpemUgaXMgMTAyNCBCeXRlcy4KLy8vIFxwYXJhbSBzcmMxCi8vLyAgICBUaGUgMm5kIHNvdXJjZSB0aWxlLiBNYXggc2l6ZSBpcyAxMDI0IEJ5dGVzLgojZGVmaW5lIF90aWxlX2RwYnV1ZChkc3QsIHNyYzAsIHNyYzEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fYnVpbHRpbl9pYTMyX3RkcGJ1dWQoKGRzdCksIChzcmMwKSwgKHNyYzEpKQoKLy8vIENvbXB1dGUgZG90LXByb2R1Y3Qgb2YgQkYxNiAoMTYtYml0KSBmbG9hdGluZy1wb2ludCBwYWlycyBpbiB0aWxlcyBzcmMwIGFuZAovLy8gc3JjMSwgYWNjdW11bGF0aW5nIHRoZSBpbnRlcm1lZGlhdGUgc2luZ2xlLXByZWNpc2lvbiAoMzItYml0KSBmbG9hdGluZy1wb2ludAovLy8gZWxlbWVudHMgd2l0aCBlbGVtZW50cyBpbiAiZHN0IiwgYW5kIHN0b3JlIHRoZSAzMi1iaXQgcmVzdWx0IGJhY2sgdG8gdGlsZQovLy8gImRzdCIuCi8vLwovLy8gXGhlYWRlcmZpbGUgPGltbWludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVERQQkYxNlBTIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIGRzdAovLy8gICAgVGhlIGRlc3RpbmF0aW9uIHRpbGUuIE1heCBzaXplIGlzIDEwMjQgQnl0ZXMuCi8vLyBccGFyYW0gc3JjMAovLy8gICAgVGhlIDFzdCBzb3VyY2UgdGlsZS4gTWF4IHNpemUgaXMgMTAyNCBCeXRlcy4KLy8vIFxwYXJhbSBzcmMxCi8vLyAgICBUaGUgMm5kIHNvdXJjZSB0aWxlLiBNYXggc2l6ZSBpcyAxMDI0IEJ5dGVzLgojZGVmaW5lIF90aWxlX2RwYmYxNnBzKGRzdCwgc3JjMCwgc3JjMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fYnVpbHRpbl9pYTMyX3RkcGJmMTZwcygoZHN0KSwgKHNyYzApLCAoc3JjMSkpCgovLy8gQU1YIHRpbGUgcmVnaXN0ZXIgc2l6ZSBjYW4gYmUgY29uZmlndXJlZCwgdGhlIG1heGltdW0gc2l6ZSBpcyAxNng2ND0xMDI0Ci8vLyBieXRlcy4gU2luY2UgdGhlcmUgaXMgbm8gMkQgdHlwZSBpbiBsbHZtIElSLCB3ZSB1c2UgdmVjdG9yIHR5cGUgdG8KLy8vIHJlcHJlc2VudCAyRCB0aWxlIGFuZCB0aGUgZml4ZWQgc2l6ZSBpcyBtYXhpbXVtIGFteCB0aWxlIHJlZ2lzdGVyIHNpemUuCnR5cGVkZWYgaW50IF90aWxlMTAyNGkgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDEwMjQpLCBfX2FsaWduZWRfXyg2NCkpKTsKCi8vLyBUaGlzIGlzIGludGVybmFsIGludHJpbnNpYy4gQy9DKysgdXNlciBzaG91bGQgYXZvaWQgY2FsbGluZyBpdCBkaXJlY3RseS4Kc3RhdGljIF9faW5saW5lX18gX3RpbGUxMDI0aSBfX0RFRkFVTFRfRk5fQVRUUlNfSU5UOApfdGlsZV9sb2FkZF9pbnRlcm5hbCh1bnNpZ25lZCBzaG9ydCBtLCB1bnNpZ25lZCBzaG9ydCBuLCBjb25zdCB2b2lkICpiYXNlLAogICAgICAgICAgICAgICAgICAgICBfX1NJWkVfVFlQRV9fIHN0cmlkZSkgewogIHJldHVybiBfX2J1aWx0aW5faWEzMl90aWxlbG9hZGQ2NF9pbnRlcm5hbChtLCBuLCBiYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19TSVpFX1RZUEVfXykoc3RyaWRlKSk7Cn0KCi8vLyBUaGlzIGlzIGludGVybmFsIGludHJpbnNpYy4gQy9DKysgdXNlciBzaG91bGQgYXZvaWQgY2FsbGluZyBpdCBkaXJlY3RseS4Kc3RhdGljIF9faW5saW5lX18gX3RpbGUxMDI0aSBfX0RFRkFVTFRfRk5fQVRUUlNfSU5UOApfdGlsZV9sb2FkZHQxX2ludGVybmFsKHVuc2lnbmVkIHNob3J0IG0sIHVuc2lnbmVkIHNob3J0IG4sIGNvbnN0IHZvaWQgKmJhc2UsCiAgICAgICAgICAgICAgICAgICAgICAgX19TSVpFX1RZUEVfXyBzdHJpZGUpIHsKICByZXR1cm4gX19idWlsdGluX2lhMzJfdGlsZWxvYWRkdDE2NF9pbnRlcm5hbChtLCBuLCBiYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX1NJWkVfVFlQRV9fKShzdHJpZGUpKTsKfQoKLy8vIFRoaXMgaXMgaW50ZXJuYWwgaW50cmluc2ljLiBDL0MrKyB1c2VyIHNob3VsZCBhdm9pZCBjYWxsaW5nIGl0IGRpcmVjdGx5LgpzdGF0aWMgX19pbmxpbmVfXyBfdGlsZTEwMjRpIF9fREVGQVVMVF9GTl9BVFRSU19JTlQ4Cl90aWxlX2RwYnNzZF9pbnRlcm5hbCh1bnNpZ25lZCBzaG9ydCBtLCB1bnNpZ25lZCBzaG9ydCBuLCB1bnNpZ25lZCBzaG9ydCBrLAogICAgICAgICAgICAgICAgICAgICAgX3RpbGUxMDI0aSBkc3QsIF90aWxlMTAyNGkgc3JjMSwgX3RpbGUxMDI0aSBzcmMyKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3RkcGJzc2RfaW50ZXJuYWwobSwgbiwgaywgZHN0LCBzcmMxLCBzcmMyKTsKfQoKLy8vIFRoaXMgaXMgaW50ZXJuYWwgaW50cmluc2ljLiBDL0MrKyB1c2VyIHNob3VsZCBhdm9pZCBjYWxsaW5nIGl0IGRpcmVjdGx5LgpzdGF0aWMgX19pbmxpbmVfXyBfdGlsZTEwMjRpIF9fREVGQVVMVF9GTl9BVFRSU19JTlQ4Cl90aWxlX2RwYnN1ZF9pbnRlcm5hbCh1bnNpZ25lZCBzaG9ydCBtLCB1bnNpZ25lZCBzaG9ydCBuLCB1bnNpZ25lZCBzaG9ydCBrLAogICAgICAgICAgICAgICAgICAgICAgX3RpbGUxMDI0aSBkc3QsIF90aWxlMTAyNGkgc3JjMSwgX3RpbGUxMDI0aSBzcmMyKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3RkcGJzdWRfaW50ZXJuYWwobSwgbiwgaywgZHN0LCBzcmMxLCBzcmMyKTsKfQoKLy8vIFRoaXMgaXMgaW50ZXJuYWwgaW50cmluc2ljLiBDL0MrKyB1c2VyIHNob3VsZCBhdm9pZCBjYWxsaW5nIGl0IGRpcmVjdGx5LgpzdGF0aWMgX19pbmxpbmVfXyBfdGlsZTEwMjRpIF9fREVGQVVMVF9GTl9BVFRSU19JTlQ4Cl90aWxlX2RwYnVzZF9pbnRlcm5hbCh1bnNpZ25lZCBzaG9ydCBtLCB1bnNpZ25lZCBzaG9ydCBuLCB1bnNpZ25lZCBzaG9ydCBrLAogICAgICAgICAgICAgICAgICAgICAgX3RpbGUxMDI0aSBkc3QsIF90aWxlMTAyNGkgc3JjMSwgX3RpbGUxMDI0aSBzcmMyKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3RkcGJ1c2RfaW50ZXJuYWwobSwgbiwgaywgZHN0LCBzcmMxLCBzcmMyKTsKfQoKLy8vIFRoaXMgaXMgaW50ZXJuYWwgaW50cmluc2ljLiBDL0MrKyB1c2VyIHNob3VsZCBhdm9pZCBjYWxsaW5nIGl0IGRpcmVjdGx5LgpzdGF0aWMgX19pbmxpbmVfXyBfdGlsZTEwMjRpIF9fREVGQVVMVF9GTl9BVFRSU19JTlQ4Cl90aWxlX2RwYnV1ZF9pbnRlcm5hbCh1bnNpZ25lZCBzaG9ydCBtLCB1bnNpZ25lZCBzaG9ydCBuLCB1bnNpZ25lZCBzaG9ydCBrLAogICAgICAgICAgICAgICAgICAgICAgX3RpbGUxMDI0aSBkc3QsIF90aWxlMTAyNGkgc3JjMSwgX3RpbGUxMDI0aSBzcmMyKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3RkcGJ1dWRfaW50ZXJuYWwobSwgbiwgaywgZHN0LCBzcmMxLCBzcmMyKTsKfQoKLy8vIFRoaXMgaXMgaW50ZXJuYWwgaW50cmluc2ljLiBDL0MrKyB1c2VyIHNob3VsZCBhdm9pZCBjYWxsaW5nIGl0IGRpcmVjdGx5LgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSU19JTlQ4Cl90aWxlX3N0b3JlZF9pbnRlcm5hbCh1bnNpZ25lZCBzaG9ydCBtLCB1bnNpZ25lZCBzaG9ydCBuLCB2b2lkICpiYXNlLAogICAgICAgICAgICAgICAgICAgICAgX19TSVpFX1RZUEVfXyBzdHJpZGUsIF90aWxlMTAyNGkgdGlsZSkgewogIHJldHVybiBfX2J1aWx0aW5faWEzMl90aWxlc3RvcmVkNjRfaW50ZXJuYWwobSwgbiwgYmFzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX1NJWkVfVFlQRV9fKShzdHJpZGUpLCB0aWxlKTsKfQoKLy8vIFRoaXMgaXMgaW50ZXJuYWwgaW50cmluc2ljLiBDL0MrKyB1c2VyIHNob3VsZCBhdm9pZCBjYWxsaW5nIGl0IGRpcmVjdGx5LgpzdGF0aWMgX19pbmxpbmVfXyBfdGlsZTEwMjRpIF9fREVGQVVMVF9GTl9BVFRSU19CRjE2Cl90aWxlX2RwYmYxNnBzX2ludGVybmFsKHVuc2lnbmVkIHNob3J0IG0sIHVuc2lnbmVkIHNob3J0IG4sIHVuc2lnbmVkIHNob3J0IGssCiAgICAgICAgICAgICAgICAgICAgICAgIF90aWxlMTAyNGkgZHN0LCBfdGlsZTEwMjRpIHNyYzEsIF90aWxlMTAyNGkgc3JjMikgewogIHJldHVybiBfX2J1aWx0aW5faWEzMl90ZHBiZjE2cHNfaW50ZXJuYWwobSwgbiwgaywgZHN0LCBzcmMxLCBzcmMyKTsKfQoKLy8vIFRoaXMgc3RydWN0IHBhY2sgdGhlIHNoYXBlIGFuZCB0aWxlIGRhdGEgdG9nZXRoZXIgZm9yIHVzZXIuIFdlIHN1Z2dlc3QKLy8vIGluaXRpYWxpemluZyB0aGUgc3RydWN0IGFzIGVhcmx5IGFzIHBvc3NpYmxlLCBiZWNhdXNlIGNvbXBpbGVyIGRlcGVuZHMKLy8vIG9uIHRoZSBzaGFwZSBpbmZvcm1hdGlvbiB0byBkbyBjb25maWd1cmUuIFRoZSBjb25zdGFudCB2YWx1ZSBpcyBwcmVmZXJyZWQKLy8vIGZvciBvcHRpbWl6YXRpb24gYnkgY29tcGlsZXIuCnR5cGVkZWYgc3RydWN0IF9fdGlsZTEwMjRpX3N0ciB7CiAgY29uc3QgdW5zaWduZWQgc2hvcnQgcm93OwogIGNvbnN0IHVuc2lnbmVkIHNob3J0IGNvbDsKICBfdGlsZTEwMjRpIHRpbGU7Cn0gX190aWxlMTAyNGk7CgovLy8gTG9hZCB0aWxlIHJvd3MgZnJvbSBtZW1vcnkgc3BlY2lmaWVpZCBieSAiYmFzZSIgYWRkcmVzcyBhbmQgInN0cmlkZSIgaW50bwovLy8gZGVzdGluYXRpb24gdGlsZSAiZHN0Ii4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8aW1taW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBUSUxFTE9BREQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gZHN0Ci8vLyAgICBBIGRlc3RpbmF0aW9uIHRpbGUuIE1heCBzaXplIGlzIDEwMjQgQnl0ZXMuCi8vLyBccGFyYW0gYmFzZQovLy8gICAgQSBwb2ludGVyIHRvIGJhc2UgYWRkcmVzcy4KLy8vIFxwYXJhbSBzdHJpZGUKLy8vICAgIFRoZSBzdHJpZGUgYmV0d2VlbiB0aGUgcm93cycgZGF0YSB0byBiZSBsb2FkZWQgaW4gbWVtb3J5LgpfX0RFRkFVTFRfRk5fQVRUUlNfVElMRQpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fdGlsZV9sb2FkZChfX3RpbGUxMDI0aSAqZHN0LCBjb25zdCB2b2lkICpiYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX1NJWkVfVFlQRV9fIHN0cmlkZSkgewogIGRzdC0+dGlsZSA9IF90aWxlX2xvYWRkX2ludGVybmFsKGRzdC0+cm93LCBkc3QtPmNvbCwgYmFzZSwgc3RyaWRlKTsKfQoKLy8vIExvYWQgdGlsZSByb3dzIGZyb20gbWVtb3J5IHNwZWNpZmllaWQgYnkgImJhc2UiIGFkZHJlc3MgYW5kICJzdHJpZGUiIGludG8KLy8vIGRlc3RpbmF0aW9uIHRpbGUgImRzdCIuIFRoaXMgaW50cmluc2ljIHByb3ZpZGVzIGEgaGludCB0byB0aGUgaW1wbGVtZW50YXRpb24KLy8vIHRoYXQgdGhlIGRhdGEgd2lsbCBsaWtlbHkgbm90IGJlIHJldXNlZCBpbiB0aGUgbmVhciBmdXR1cmUgYW5kIHRoZSBkYXRhCi8vLyBjYWNoaW5nIGNhbiBiZSBvcHRpbWl6ZWQgYWNjb3JkaW5nbHkuCi8vLwovLy8gXGhlYWRlcmZpbGUgPGltbWludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVElMRUxPQUREVDEgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gZHN0Ci8vLyAgICBBIGRlc3RpbmF0aW9uIHRpbGUuIE1heCBzaXplIGlzIDEwMjQgQnl0ZXMuCi8vLyBccGFyYW0gYmFzZQovLy8gICAgQSBwb2ludGVyIHRvIGJhc2UgYWRkcmVzcy4KLy8vIFxwYXJhbSBzdHJpZGUKLy8vICAgIFRoZSBzdHJpZGUgYmV0d2VlbiB0aGUgcm93cycgZGF0YSB0byBiZSBsb2FkZWQgaW4gbWVtb3J5LgpfX0RFRkFVTFRfRk5fQVRUUlNfVElMRQpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fdGlsZV9zdHJlYW1fbG9hZGQoX190aWxlMTAyNGkgKmRzdCwgY29uc3Qgdm9pZCAqYmFzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fU0laRV9UWVBFX18gc3RyaWRlKSB7CiAgZHN0LT50aWxlID0gX3RpbGVfbG9hZGR0MV9pbnRlcm5hbChkc3QtPnJvdywgZHN0LT5jb2wsIGJhc2UsIHN0cmlkZSk7Cn0KCi8vLyBDb21wdXRlIGRvdC1wcm9kdWN0IG9mIGJ5dGVzIGluIHRpbGVzIHdpdGggYSBzb3VyY2UvZGVzdGluYXRpb24gYWNjdW11bGF0b3IuCi8vLyBNdWx0aXBseSBncm91cHMgb2YgNCBhZGphY2VudCBwYWlycyBvZiBzaWduZWQgOC1iaXQgaW50ZWdlcnMgaW4gc3JjMCB3aXRoCi8vLyBjb3JyZXNwb25kaW5nIHNpZ25lZCA4LWJpdCBpbnRlZ2VycyBpbiBzcmMxLCBwcm9kdWNpbmcgNCBpbnRlcm1lZGlhdGUgMzItYml0Ci8vLyByZXN1bHRzLiBTdW0gdGhlc2UgNCByZXN1bHRzIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgMzItYml0IGludGVnZXIgaW4gImRzdCIsCi8vLyBhbmQgc3RvcmUgdGhlIDMyLWJpdCByZXN1bHQgYmFjayB0byB0aWxlICJkc3QiLgovLy8KLy8vIFxoZWFkZXJmaWxlIDxpbW1pbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFREUEJTU0QgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gZHN0Ci8vLyAgICBUaGUgZGVzdGluYXRpb24gdGlsZS4gTWF4IHNpemUgaXMgMTAyNCBCeXRlcy4KLy8vIFxwYXJhbSBzcmMwCi8vLyAgICBUaGUgMXN0IHNvdXJjZSB0aWxlLiBNYXggc2l6ZSBpcyAxMDI0IEJ5dGVzLgovLy8gXHBhcmFtIHNyYzEKLy8vICAgIFRoZSAybmQgc291cmNlIHRpbGUuIE1heCBzaXplIGlzIDEwMjQgQnl0ZXMuCl9fREVGQVVMVF9GTl9BVFRSU19JTlQ4CnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX190aWxlX2RwYnNzZChfX3RpbGUxMDI0aSAqZHN0LCBfX3RpbGUxMDI0aSBzcmMwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX190aWxlMTAyNGkgc3JjMSkgewogIGRzdC0+dGlsZSA9IF90aWxlX2RwYnNzZF9pbnRlcm5hbChzcmMwLnJvdywgc3JjMS5jb2wsIHNyYzAuY29sLCBkc3QtPnRpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzAudGlsZSwgc3JjMS50aWxlKTsKfQoKLy8vIENvbXB1dGUgZG90LXByb2R1Y3Qgb2YgYnl0ZXMgaW4gdGlsZXMgd2l0aCBhIHNvdXJjZS9kZXN0aW5hdGlvbiBhY2N1bXVsYXRvci4KLy8vIE11bHRpcGx5IGdyb3VwcyBvZiA0IGFkamFjZW50IHBhaXJzIG9mIHNpZ25lZCA4LWJpdCBpbnRlZ2VycyBpbiBzcmMwIHdpdGgKLy8vIGNvcnJlc3BvbmRpbmcgdW5zaWduZWQgOC1iaXQgaW50ZWdlcnMgaW4gc3JjMSwgcHJvZHVjaW5nIDQgaW50ZXJtZWRpYXRlCi8vLyAzMi1iaXQgcmVzdWx0cy4gU3VtIHRoZXNlIDQgcmVzdWx0cyB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIDMyLWJpdCBpbnRlZ2VyCi8vLyBpbiAiZHN0IiwgYW5kIHN0b3JlIHRoZSAzMi1iaXQgcmVzdWx0IGJhY2sgdG8gdGlsZSAiZHN0Ii4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8aW1taW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBURFBCU1VEIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIGRzdAovLy8gICAgVGhlIGRlc3RpbmF0aW9uIHRpbGUuIE1heCBzaXplIGlzIDEwMjQgQnl0ZXMuCi8vLyBccGFyYW0gc3JjMAovLy8gICAgVGhlIDFzdCBzb3VyY2UgdGlsZS4gTWF4IHNpemUgaXMgMTAyNCBCeXRlcy4KLy8vIFxwYXJhbSBzcmMxCi8vLyAgICBUaGUgMm5kIHNvdXJjZSB0aWxlLiBNYXggc2l6ZSBpcyAxMDI0IEJ5dGVzLgpfX0RFRkFVTFRfRk5fQVRUUlNfSU5UOApzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fdGlsZV9kcGJzdWQoX190aWxlMTAyNGkgKmRzdCwgX190aWxlMTAyNGkgc3JjMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fdGlsZTEwMjRpIHNyYzEpIHsKICBkc3QtPnRpbGUgPSBfdGlsZV9kcGJzdWRfaW50ZXJuYWwoc3JjMC5yb3csIHNyYzEuY29sLCBzcmMwLmNvbCwgZHN0LT50aWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMwLnRpbGUsIHNyYzEudGlsZSk7Cn0KCi8vLyBDb21wdXRlIGRvdC1wcm9kdWN0IG9mIGJ5dGVzIGluIHRpbGVzIHdpdGggYSBzb3VyY2UvZGVzdGluYXRpb24gYWNjdW11bGF0b3IuCi8vLyBNdWx0aXBseSBncm91cHMgb2YgNCBhZGphY2VudCBwYWlycyBvZiB1bnNpZ25lZCA4LWJpdCBpbnRlZ2VycyBpbiBzcmMwIHdpdGgKLy8vIGNvcnJlc3BvbmRpbmcgc2lnbmVkIDgtYml0IGludGVnZXJzIGluIHNyYzEsIHByb2R1Y2luZyA0IGludGVybWVkaWF0ZSAzMi1iaXQKLy8vIHJlc3VsdHMuIFN1bSB0aGVzZSA0IHJlc3VsdHMgd2l0aCB0aGUgY29ycmVzcG9uZGluZyAzMi1iaXQgaW50ZWdlciBpbiAiZHN0IiwKLy8vIGFuZCBzdG9yZSB0aGUgMzItYml0IHJlc3VsdCBiYWNrIHRvIHRpbGUgImRzdCIuCi8vLwovLy8gXGhlYWRlcmZpbGUgPGltbWludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVERQQlVTRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBkc3QKLy8vICAgIFRoZSBkZXN0aW5hdGlvbiB0aWxlLiBNYXggc2l6ZSBpcyAxMDI0IEJ5dGVzLgovLy8gXHBhcmFtIHNyYzAKLy8vICAgIFRoZSAxc3Qgc291cmNlIHRpbGUuIE1heCBzaXplIGlzIDEwMjQgQnl0ZXMuCi8vLyBccGFyYW0gc3JjMQovLy8gICAgVGhlIDJuZCBzb3VyY2UgdGlsZS4gTWF4IHNpemUgaXMgMTAyNCBCeXRlcy4KX19ERUZBVUxUX0ZOX0FUVFJTX0lOVDgKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX3RpbGVfZHBidXNkKF9fdGlsZTEwMjRpICpkc3QsIF9fdGlsZTEwMjRpIHNyYzAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3RpbGUxMDI0aSBzcmMxKSB7CiAgZHN0LT50aWxlID0gX3RpbGVfZHBidXNkX2ludGVybmFsKHNyYzAucm93LCBzcmMxLmNvbCwgc3JjMC5jb2wsIGRzdC0+dGlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjMC50aWxlLCBzcmMxLnRpbGUpOwp9CgovLy8gQ29tcHV0ZSBkb3QtcHJvZHVjdCBvZiBieXRlcyBpbiB0aWxlcyB3aXRoIGEgc291cmNlL2Rlc3RpbmF0aW9uIGFjY3VtdWxhdG9yLgovLy8gTXVsdGlwbHkgZ3JvdXBzIG9mIDQgYWRqYWNlbnQgcGFpcnMgb2YgdW5zaWduZWQgOC1iaXQgaW50ZWdlcnMgaW4gc3JjMCB3aXRoCi8vLyBjb3JyZXNwb25kaW5nIHVuc2lnbmVkIDgtYml0IGludGVnZXJzIGluIHNyYzEsIHByb2R1Y2luZyA0IGludGVybWVkaWF0ZQovLy8gMzItYml0IHJlc3VsdHMuIFN1bSB0aGVzZSA0IHJlc3VsdHMgd2l0aCB0aGUgY29ycmVzcG9uZGluZyAzMi1iaXQgaW50ZWdlciBpbgovLy8gImRzdCIsIGFuZCBzdG9yZSB0aGUgMzItYml0IHJlc3VsdCBiYWNrIHRvIHRpbGUgImRzdCIuCi8vLwovLy8gXGhlYWRlcmZpbGUgPGltbWludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVERQQlVVRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBkc3QKLy8vICAgIFRoZSBkZXN0aW5hdGlvbiB0aWxlLiBNYXggc2l6ZSBpcyAxMDI0IEJ5dGVzLgovLy8gXHBhcmFtIHNyYzAKLy8vICAgIFRoZSAxc3Qgc291cmNlIHRpbGUuIE1heCBzaXplIGlzIDEwMjQgQnl0ZXMuCi8vLyBccGFyYW0gc3JjMQovLy8gICAgVGhlIDJuZCBzb3VyY2UgdGlsZS4gTWF4IHNpemUgaXMgMTAyNCBCeXRlcy4KX19ERUZBVUxUX0ZOX0FUVFJTX0lOVDgKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX3RpbGVfZHBidXVkKF9fdGlsZTEwMjRpICpkc3QsIF9fdGlsZTEwMjRpIHNyYzAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3RpbGUxMDI0aSBzcmMxKSB7CiAgZHN0LT50aWxlID0gX3RpbGVfZHBidXVkX2ludGVybmFsKHNyYzAucm93LCBzcmMxLmNvbCwgc3JjMC5jb2wsIGRzdC0+dGlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjMC50aWxlLCBzcmMxLnRpbGUpOwp9CgovLy8gU3RvcmUgdGhlIHRpbGUgc3BlY2lmaWVkIGJ5ICJzcmMiIHRvIG1lbW9yeSBzcGVjaWZpZWlkIGJ5ICJiYXNlIiBhZGRyZXNzIGFuZAovLy8gInN0cmlkZSIuCi8vLwovLy8gXGhlYWRlcmZpbGUgPGltbWludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVElMRVNUT1JFRCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBkc3QKLy8vICAgIEEgZGVzdGluYXRpb24gdGlsZS4gTWF4IHNpemUgaXMgMTAyNCBCeXRlcy4KLy8vIFxwYXJhbSBiYXNlCi8vLyAgICBBIHBvaW50ZXIgdG8gYmFzZSBhZGRyZXNzLgovLy8gXHBhcmFtIHN0cmlkZQovLy8gICAgVGhlIHN0cmlkZSBiZXR3ZWVuIHRoZSByb3dzJyBkYXRhIHRvIGJlIHN0b3JlZCBpbiBtZW1vcnkuCl9fREVGQVVMVF9GTl9BVFRSU19USUxFCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX190aWxlX3N0b3JlZCh2b2lkICpiYXNlLCBfX1NJWkVfVFlQRV9fIHN0cmlkZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fdGlsZTEwMjRpIHNyYykgewogIF90aWxlX3N0b3JlZF9pbnRlcm5hbChzcmMucm93LCBzcmMuY29sLCBiYXNlLCBzdHJpZGUsIHNyYy50aWxlKTsKfQoKLy8vIFplcm8gdGhlIHRpbGUgc3BlY2lmaWVkIGJ5ICJkc3QiLgovLy8KLy8vIFxoZWFkZXJmaWxlIDxpbW1pbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFRJTEVaRVJPIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIGRzdAovLy8gICAgVGhlIGRlc3RpbmF0aW9uIHRpbGUgdG8gYmUgemVyby4gTWF4IHNpemUgaXMgMTAyNCBCeXRlcy4KX19ERUZBVUxUX0ZOX0FUVFJTX1RJTEUKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX3RpbGVfemVybyhfX3RpbGUxMDI0aSAqZHN0KSB7CiAgZHN0LT50aWxlID0gX19idWlsdGluX2lhMzJfdGlsZXplcm9faW50ZXJuYWwoZHN0LT5yb3csIGRzdC0+Y29sKTsKfQoKLy8vIENvbXB1dGUgZG90LXByb2R1Y3Qgb2YgQkYxNiAoMTYtYml0KSBmbG9hdGluZy1wb2ludCBwYWlycyBpbiB0aWxlcyBzcmMwIGFuZAovLy8gc3JjMSwgYWNjdW11bGF0aW5nIHRoZSBpbnRlcm1lZGlhdGUgc2luZ2xlLXByZWNpc2lvbiAoMzItYml0KSBmbG9hdGluZy1wb2ludAovLy8gZWxlbWVudHMgd2l0aCBlbGVtZW50cyBpbiAiZHN0IiwgYW5kIHN0b3JlIHRoZSAzMi1iaXQgcmVzdWx0IGJhY2sgdG8gdGlsZQovLy8gImRzdCIuCi8vLwovLy8gXGhlYWRlcmZpbGUgPGltbWludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVERQQkYxNlBTIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIGRzdAovLy8gICAgVGhlIGRlc3RpbmF0aW9uIHRpbGUuIE1heCBzaXplIGlzIDEwMjQgQnl0ZXMuCi8vLyBccGFyYW0gc3JjMAovLy8gICAgVGhlIDFzdCBzb3VyY2UgdGlsZS4gTWF4IHNpemUgaXMgMTAyNCBCeXRlcy4KLy8vIFxwYXJhbSBzcmMxCi8vLyAgICBUaGUgMm5kIHNvdXJjZSB0aWxlLiBNYXggc2l6ZSBpcyAxMDI0IEJ5dGVzLgpfX0RFRkFVTFRfRk5fQVRUUlNfQkYxNgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fdGlsZV9kcGJmMTZwcyhfX3RpbGUxMDI0aSAqZHN0LCBfX3RpbGUxMDI0aSBzcmMwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3RpbGUxMDI0aSBzcmMxKSB7CiAgZHN0LT50aWxlID0gX3RpbGVfZHBiZjE2cHNfaW50ZXJuYWwoc3JjMC5yb3csIHNyYzEuY29sLCBzcmMwLmNvbCwgZHN0LT50aWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzAudGlsZSwgc3JjMS50aWxlKTsKfQoKI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSU19USUxFCiN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlNfSU5UOAojdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTX0JGMTYKCiNlbmRpZiAvKiBfX3g4Nl82NF9fICovCiNlbmRpZiAvKiBfX0FNWElOVFJJTl9IICovCgAvKj09PS0tLS0gYXZ4NTEyZHFpbnRyaW4uaCAtIEFWWDUxMkRRIGludHJpbnNpY3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqCiAqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCiAqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCgojaWZuZGVmIF9fSU1NSU5UUklOX0gKI2Vycm9yICJOZXZlciB1c2UgPGF2eDUxMmRxaW50cmluLmg+IGRpcmVjdGx5OyBpbmNsdWRlIDxpbW1pbnRyaW4uaD4gaW5zdGVhZC4iCiNlbmRpZgoKI2lmbmRlZiBfX0FWWDUxMkRRSU5UUklOX0gKI2RlZmluZSBfX0FWWDUxMkRRSU5UUklOX0gKCi8qIERlZmluZSB0aGUgZGVmYXVsdCBhdHRyaWJ1dGVzIGZvciB0aGUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZS4gKi8KI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJhdng1MTJkcSIpLCBfX21pbl92ZWN0b3Jfd2lkdGhfXyg1MTIpKSkKI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJhdng1MTJkcSIpKSkKCnN0YXRpYyBfX2lubGluZSBfX21tYXNrOCBfX0RFRkFVTFRfRk5fQVRUUlMKX2tub3RfbWFzazgoX19tbWFzazggX19NKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2tub3RxaShfX00pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX21tYXNrOCBfX0RFRkFVTFRfRk5fQVRUUlMKX2thbmRfbWFzazgoX19tbWFzazggX19BLCBfX21tYXNrOCBfX0IpCnsKICByZXR1cm4gKF9fbW1hc2s4KV9fYnVpbHRpbl9pYTMyX2thbmRxaSgoX19tbWFzazgpX19BLCAoX19tbWFzazgpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tbWFzazggX19ERUZBVUxUX0ZOX0FUVFJTCl9rYW5kbl9tYXNrOChfX21tYXNrOCBfX0EsIF9fbW1hc2s4IF9fQikKewogIHJldHVybiAoX19tbWFzazgpX19idWlsdGluX2lhMzJfa2FuZG5xaSgoX19tbWFzazgpX19BLCAoX19tbWFzazgpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tbWFzazggX19ERUZBVUxUX0ZOX0FUVFJTCl9rb3JfbWFzazgoX19tbWFzazggX19BLCBfX21tYXNrOCBfX0IpCnsKICByZXR1cm4gKF9fbW1hc2s4KV9fYnVpbHRpbl9pYTMyX2tvcnFpKChfX21tYXNrOClfX0EsIChfX21tYXNrOClfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX21tYXNrOCBfX0RFRkFVTFRfRk5fQVRUUlMKX2t4bm9yX21hc2s4KF9fbW1hc2s4IF9fQSwgX19tbWFzazggX19CKQp7CiAgcmV0dXJuIChfX21tYXNrOClfX2J1aWx0aW5faWEzMl9reG5vcnFpKChfX21tYXNrOClfX0EsIChfX21tYXNrOClfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX21tYXNrOCBfX0RFRkFVTFRfRk5fQVRUUlMKX2t4b3JfbWFzazgoX19tbWFzazggX19BLCBfX21tYXNrOCBfX0IpCnsKICByZXR1cm4gKF9fbW1hc2s4KV9fYnVpbHRpbl9pYTMyX2t4b3JxaSgoX19tbWFzazgpX19BLCAoX19tbWFzazgpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgY2hhciBfX0RFRkFVTFRfRk5fQVRUUlMKX2tvcnRlc3RjX21hc2s4X3U4KF9fbW1hc2s4IF9fQSwgX19tbWFzazggX19CKQp7CiAgcmV0dXJuICh1bnNpZ25lZCBjaGFyKV9fYnVpbHRpbl9pYTMyX2tvcnRlc3RjcWkoX19BLCBfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBjaGFyIF9fREVGQVVMVF9GTl9BVFRSUwpfa29ydGVzdHpfbWFzazhfdTgoX19tbWFzazggX19BLCBfX21tYXNrOCBfX0IpCnsKICByZXR1cm4gKHVuc2lnbmVkIGNoYXIpX19idWlsdGluX2lhMzJfa29ydGVzdHpxaShfX0EsIF9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGNoYXIgX19ERUZBVUxUX0ZOX0FUVFJTCl9rb3J0ZXN0X21hc2s4X3U4KF9fbW1hc2s4IF9fQSwgX19tbWFzazggX19CLCB1bnNpZ25lZCBjaGFyICpfX0MpIHsKICAqX19DID0gKHVuc2lnbmVkIGNoYXIpX19idWlsdGluX2lhMzJfa29ydGVzdGNxaShfX0EsIF9fQik7CiAgcmV0dXJuICh1bnNpZ25lZCBjaGFyKV9fYnVpbHRpbl9pYTMyX2tvcnRlc3R6cWkoX19BLCBfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBjaGFyIF9fREVGQVVMVF9GTl9BVFRSUwpfa3Rlc3RjX21hc2s4X3U4KF9fbW1hc2s4IF9fQSwgX19tbWFzazggX19CKQp7CiAgcmV0dXJuICh1bnNpZ25lZCBjaGFyKV9fYnVpbHRpbl9pYTMyX2t0ZXN0Y3FpKF9fQSwgX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgY2hhciBfX0RFRkFVTFRfRk5fQVRUUlMKX2t0ZXN0el9tYXNrOF91OChfX21tYXNrOCBfX0EsIF9fbW1hc2s4IF9fQikKewogIHJldHVybiAodW5zaWduZWQgY2hhcilfX2J1aWx0aW5faWEzMl9rdGVzdHpxaShfX0EsIF9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGNoYXIgX19ERUZBVUxUX0ZOX0FUVFJTCl9rdGVzdF9tYXNrOF91OChfX21tYXNrOCBfX0EsIF9fbW1hc2s4IF9fQiwgdW5zaWduZWQgY2hhciAqX19DKSB7CiAgKl9fQyA9ICh1bnNpZ25lZCBjaGFyKV9fYnVpbHRpbl9pYTMyX2t0ZXN0Y3FpKF9fQSwgX19CKTsKICByZXR1cm4gKHVuc2lnbmVkIGNoYXIpX19idWlsdGluX2lhMzJfa3Rlc3R6cWkoX19BLCBfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBjaGFyIF9fREVGQVVMVF9GTl9BVFRSUwpfa3Rlc3RjX21hc2sxNl91OChfX21tYXNrMTYgX19BLCBfX21tYXNrMTYgX19CKQp7CiAgcmV0dXJuICh1bnNpZ25lZCBjaGFyKV9fYnVpbHRpbl9pYTMyX2t0ZXN0Y2hpKF9fQSwgX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgY2hhciBfX0RFRkFVTFRfRk5fQVRUUlMKX2t0ZXN0el9tYXNrMTZfdTgoX19tbWFzazE2IF9fQSwgX19tbWFzazE2IF9fQikKewogIHJldHVybiAodW5zaWduZWQgY2hhcilfX2J1aWx0aW5faWEzMl9rdGVzdHpoaShfX0EsIF9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGNoYXIgX19ERUZBVUxUX0ZOX0FUVFJTCl9rdGVzdF9tYXNrMTZfdTgoX19tbWFzazE2IF9fQSwgX19tbWFzazE2IF9fQiwgdW5zaWduZWQgY2hhciAqX19DKSB7CiAgKl9fQyA9ICh1bnNpZ25lZCBjaGFyKV9fYnVpbHRpbl9pYTMyX2t0ZXN0Y2hpKF9fQSwgX19CKTsKICByZXR1cm4gKHVuc2lnbmVkIGNoYXIpX19idWlsdGluX2lhMzJfa3Rlc3R6aGkoX19BLCBfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX21tYXNrOCBfX0RFRkFVTFRfRk5fQVRUUlMKX2thZGRfbWFzazgoX19tbWFzazggX19BLCBfX21tYXNrOCBfX0IpCnsKICByZXR1cm4gKF9fbW1hc2s4KV9fYnVpbHRpbl9pYTMyX2thZGRxaSgoX19tbWFzazgpX19BLCAoX19tbWFzazgpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tbWFzazE2IF9fREVGQVVMVF9GTl9BVFRSUwpfa2FkZF9tYXNrMTYoX19tbWFzazE2IF9fQSwgX19tbWFzazE2IF9fQikKewogIHJldHVybiAoX19tbWFzazE2KV9fYnVpbHRpbl9pYTMyX2thZGRoaSgoX19tbWFzazE2KV9fQSwgKF9fbW1hc2sxNilfX0IpOwp9CgojZGVmaW5lIF9rc2hpZnRsaV9tYXNrOChBLCBJKSBcCiAgKChfX21tYXNrOClfX2J1aWx0aW5faWEzMl9rc2hpZnRsaXFpKChfX21tYXNrOCkoQSksICh1bnNpZ25lZCBpbnQpKEkpKSkKCiNkZWZpbmUgX2tzaGlmdHJpX21hc2s4KEEsIEkpIFwKICAoKF9fbW1hc2s4KV9fYnVpbHRpbl9pYTMyX2tzaGlmdHJpcWkoKF9fbW1hc2s4KShBKSwgKHVuc2lnbmVkIGludCkoSSkpKQoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgaW50IF9fREVGQVVMVF9GTl9BVFRSUwpfY3Z0bWFzazhfdTMyKF9fbW1hc2s4IF9fQSkgewogIHJldHVybiAodW5zaWduZWQgaW50KV9fYnVpbHRpbl9pYTMyX2ttb3ZiKChfX21tYXNrOClfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX21tYXNrOCBfX0RFRkFVTFRfRk5fQVRUUlMKX2N2dHUzMl9tYXNrOCh1bnNpZ25lZCBpbnQgX19BKSB7CiAgcmV0dXJuIChfX21tYXNrOClfX2J1aWx0aW5faWEzMl9rbW92YigoX19tbWFzazgpX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tbWFzazggX19ERUZBVUxUX0ZOX0FUVFJTCl9sb2FkX21hc2s4KF9fbW1hc2s4ICpfX0EpIHsKICByZXR1cm4gKF9fbW1hc2s4KV9fYnVpbHRpbl9pYTMyX2ttb3ZiKCooX19tbWFzazggKilfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUwpfc3RvcmVfbWFzazgoX19tbWFzazggKl9fQSwgX19tbWFzazggX19CKSB7CiAgKihfX21tYXNrOCAqKV9fQSA9IF9fYnVpbHRpbl9pYTMyX2ttb3ZiKChfX21tYXNrOClfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbXVsbG9fZXBpNjQgKF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikgewogIHJldHVybiAoX19tNTEyaSkgKChfX3Y4ZHUpIF9fQSAqIChfX3Y4ZHUpIF9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX211bGxvX2VwaTY0KF9fbTUxMmkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikgewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzUxMigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9tdWxsb19lcGk2NChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X211bGxvX2VwaTY0KF9fbW1hc2s4IF9fVSwgX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKSB7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfNTEyKChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX211bGxvX2VwaTY0KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfc2V0emVyb19zaTUxMigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX3hvcl9wZChfX201MTJkIF9fQSwgX19tNTEyZCBfX0IpIHsKICByZXR1cm4gKF9fbTUxMmQpKChfX3Y4ZHUpX19BIF4gKF9fdjhkdSlfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza194b3JfcGQoX19tNTEyZCBfX1csIF9fbW1hc2s4IF9fVSwgX19tNTEyZCBfX0EsIF9fbTUxMmQgX19CKSB7CiAgcmV0dXJuIChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzUxMigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfbW01MTJfeG9yX3BkKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X3hvcl9wZChfX21tYXNrOCBfX1UsIF9fbTUxMmQgX19BLCBfX201MTJkIF9fQikgewogIHJldHVybiAoX19tNTEyZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF81MTIoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX3hvcl9wZChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl9zZXR6ZXJvX3BkKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTIgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl94b3JfcHMgKF9fbTUxMiBfX0EsIF9fbTUxMiBfX0IpIHsKICByZXR1cm4gKF9fbTUxMikoKF9fdjE2c3UpX19BIF4gKF9fdjE2c3UpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza194b3JfcHMoX19tNTEyIF9fVywgX19tbWFzazE2IF9fVSwgX19tNTEyIF9fQSwgX19tNTEyIF9fQikgewogIHJldHVybiAoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzUxMigoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX21tNTEyX3hvcl9wcyhfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X3hvcl9wcyhfX21tYXNrMTYgX19VLCBfX201MTIgX19BLCBfX201MTIgX19CKSB7CiAgcmV0dXJuIChfX201MTIpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfNTEyKChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfeG9yX3BzKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX21tNTEyX3NldHplcm9fcHMoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9vcl9wZChfX201MTJkIF9fQSwgX19tNTEyZCBfX0IpIHsKICByZXR1cm4gKF9fbTUxMmQpKChfX3Y4ZHUpX19BIHwgKF9fdjhkdSlfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19vcl9wZChfX201MTJkIF9fVywgX19tbWFzazggX19VLCBfX201MTJkIF9fQSwgX19tNTEyZCBfX0IpIHsKICByZXR1cm4gKF9fbTUxMmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfNTEyKChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl9vcl9wZChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9vcl9wZChfX21tYXNrOCBfX1UsIF9fbTUxMmQgX19BLCBfX201MTJkIF9fQikgewogIHJldHVybiAoX19tNTEyZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF81MTIoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX29yX3BkKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX3NldHplcm9fcGQoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX29yX3BzKF9fbTUxMiBfX0EsIF9fbTUxMiBfX0IpIHsKICByZXR1cm4gKF9fbTUxMikoKF9fdjE2c3UpX19BIHwgKF9fdjE2c3UpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19vcl9wcyhfX201MTIgX19XLCBfX21tYXNrMTYgX19VLCBfX201MTIgX19BLCBfX201MTIgX19CKSB7CiAgcmV0dXJuIChfX201MTIpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfNTEyKChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfb3JfcHMoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTIgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9vcl9wcyhfX21tYXNrMTYgX19VLCBfX201MTIgX19BLCBfX201MTIgX19CKSB7CiAgcmV0dXJuIChfX201MTIpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfNTEyKChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfb3JfcHMoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfc2V0emVyb19wcygpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2FuZF9wZChfX201MTJkIF9fQSwgX19tNTEyZCBfX0IpIHsKICByZXR1cm4gKF9fbTUxMmQpKChfX3Y4ZHUpX19BICYgKF9fdjhkdSlfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19hbmRfcGQoX19tNTEyZCBfX1csIF9fbW1hc2s4IF9fVSwgX19tNTEyZCBfX0EsIF9fbTUxMmQgX19CKSB7CiAgcmV0dXJuIChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzUxMigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfbW01MTJfYW5kX3BkKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2FuZF9wZChfX21tYXNrOCBfX1UsIF9fbTUxMmQgX19BLCBfX201MTJkIF9fQikgewogIHJldHVybiAoX19tNTEyZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF81MTIoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX2FuZF9wZChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl9zZXR6ZXJvX3BkKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTIgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9hbmRfcHMoX19tNTEyIF9fQSwgX19tNTEyIF9fQikgewogIHJldHVybiAoX19tNTEyKSgoX192MTZzdSlfX0EgJiAoX192MTZzdSlfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTIgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2FuZF9wcyhfX201MTIgX19XLCBfX21tYXNrMTYgX19VLCBfX201MTIgX19BLCBfX201MTIgX19CKSB7CiAgcmV0dXJuIChfX201MTIpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfNTEyKChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfYW5kX3BzKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfYW5kX3BzKF9fbW1hc2sxNiBfX1UsIF9fbTUxMiBfX0EsIF9fbTUxMiBfX0IpIHsKICByZXR1cm4gKF9fbTUxMilfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc181MTIoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl9hbmRfcHMoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfc2V0emVyb19wcygpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2FuZG5vdF9wZChfX201MTJkIF9fQSwgX19tNTEyZCBfX0IpIHsKICByZXR1cm4gKF9fbTUxMmQpKH4oX192OGR1KV9fQSAmIChfX3Y4ZHUpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfYW5kbm90X3BkKF9fbTUxMmQgX19XLCBfX21tYXNrOCBfX1UsIF9fbTUxMmQgX19BLCBfX201MTJkIF9fQikgewogIHJldHVybiAoX19tNTEyZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF81MTIoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX2FuZG5vdF9wZChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9hbmRub3RfcGQoX19tbWFzazggX19VLCBfX201MTJkIF9fQSwgX19tNTEyZCBfX0IpIHsKICByZXR1cm4gKF9fbTUxMmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfNTEyKChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl9hbmRub3RfcGQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfbW01MTJfc2V0emVyb19wZCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfYW5kbm90X3BzKF9fbTUxMiBfX0EsIF9fbTUxMiBfX0IpIHsKICByZXR1cm4gKF9fbTUxMikofihfX3YxNnN1KV9fQSAmIChfX3YxNnN1KV9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfYW5kbm90X3BzKF9fbTUxMiBfX1csIF9fbW1hc2sxNiBfX1UsIF9fbTUxMiBfX0EsIF9fbTUxMiBfX0IpIHsKICByZXR1cm4gKF9fbTUxMilfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc181MTIoKF9fbW1hc2sxNilfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl9hbmRub3RfcHMoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTIgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9hbmRub3RfcHMoX19tbWFzazE2IF9fVSwgX19tNTEyIF9fQSwgX19tNTEyIF9fQikgewogIHJldHVybiAoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzUxMigoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX21tNTEyX2FuZG5vdF9wcyhfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl9zZXR6ZXJvX3BzKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfY3Z0cGRfZXBpNjQgKF9fbTUxMmQgX19BKSB7CiAgcmV0dXJuIChfX201MTJpKSBfX2J1aWx0aW5faWEzMl9jdnRwZDJxcTUxMl9tYXNrICgoX192OGRmKSBfX0EsCiAgICAgICAgICAgICAgICAoX192OGRpKSBfbW01MTJfc2V0emVyb19zaTUxMigpLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSAtMSwKICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2N2dHBkX2VwaTY0IChfX201MTJpIF9fVywgX19tbWFzazggX19VLCBfX201MTJkIF9fQSkgewogIHJldHVybiAoX19tNTEyaSkgX19idWlsdGluX2lhMzJfY3Z0cGQycXE1MTJfbWFzayAoKF9fdjhkZikgX19BLAogICAgICAgICAgICAgICAgKF9fdjhkaSkgX19XLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfY3Z0cGRfZXBpNjQgKF9fbW1hc2s4IF9fVSwgX19tNTEyZCBfX0EpIHsKICByZXR1cm4gKF9fbTUxMmkpIF9fYnVpbHRpbl9pYTMyX2N2dHBkMnFxNTEyX21hc2sgKChfX3Y4ZGYpIF9fQSwKICAgICAgICAgICAgICAgIChfX3Y4ZGkpIF9tbTUxMl9zZXR6ZXJvX3NpNTEyKCksCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCiNkZWZpbmUgX21tNTEyX2N2dF9yb3VuZHBkX2VwaTY0KEEsIFIpIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfY3Z0cGQycXE1MTJfbWFzaygoX192OGRmKShfX201MTJkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX3NldHplcm9fc2k1MTIoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza19jdnRfcm91bmRwZF9lcGk2NChXLCBVLCBBLCBSKSBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX2N2dHBkMnFxNTEyX21hc2soKF9fdjhkZikoX19tNTEyZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKShfX201MTJpKShXKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X2N2dF9yb3VuZHBkX2VwaTY0KFUsIEEsIFIpIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfY3Z0cGQycXE1MTJfbWFzaygoX192OGRmKShfX201MTJkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX3NldHplcm9fc2k1MTIoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9jdnRwZF9lcHU2NCAoX19tNTEyZCBfX0EpIHsKICByZXR1cm4gKF9fbTUxMmkpIF9fYnVpbHRpbl9pYTMyX2N2dHBkMnVxcTUxMl9tYXNrICgoX192OGRmKSBfX0EsCiAgICAgICAgICAgICAgICAgKF9fdjhkaSkgX21tNTEyX3NldHplcm9fc2k1MTIoKSwKICAgICAgICAgICAgICAgICAoX19tbWFzazgpIC0xLAogICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2N2dHBkX2VwdTY0IChfX201MTJpIF9fVywgX19tbWFzazggX19VLCBfX201MTJkIF9fQSkgewogIHJldHVybiAoX19tNTEyaSkgX19idWlsdGluX2lhMzJfY3Z0cGQydXFxNTEyX21hc2sgKChfX3Y4ZGYpIF9fQSwKICAgICAgICAgICAgICAgICAoX192OGRpKSBfX1csCiAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2N2dHBkX2VwdTY0IChfX21tYXNrOCBfX1UsIF9fbTUxMmQgX19BKSB7CiAgcmV0dXJuIChfX201MTJpKSBfX2J1aWx0aW5faWEzMl9jdnRwZDJ1cXE1MTJfbWFzayAoKF9fdjhkZikgX19BLAogICAgICAgICAgICAgICAgIChfX3Y4ZGkpIF9tbTUxMl9zZXR6ZXJvX3NpNTEyKCksCiAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW01MTJfY3Z0X3JvdW5kcGRfZXB1NjQoQSwgUikgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9jdnRwZDJ1cXE1MTJfbWFzaygoX192OGRmKShfX201MTJkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX2N2dF9yb3VuZHBkX2VwdTY0KFcsIFUsIEEsIFIpIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfY3Z0cGQydXFxNTEyX21hc2soKF9fdjhkZikoX19tNTEyZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSkoX19tNTEyaSkoVyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfY3Z0X3JvdW5kcGRfZXB1NjQoVSwgQSwgUikgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9jdnRwZDJ1cXE1MTJfbWFzaygoX192OGRmKShfX201MTJkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2N2dHBzX2VwaTY0IChfX20yNTYgX19BKSB7CiAgcmV0dXJuIChfX201MTJpKSBfX2J1aWx0aW5faWEzMl9jdnRwczJxcTUxMl9tYXNrICgoX192OHNmKSBfX0EsCiAgICAgICAgICAgICAgICAoX192OGRpKSBfbW01MTJfc2V0emVyb19zaTUxMigpLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSAtMSwKICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2N2dHBzX2VwaTY0IChfX201MTJpIF9fVywgX19tbWFzazggX19VLCBfX20yNTYgX19BKSB7CiAgcmV0dXJuIChfX201MTJpKSBfX2J1aWx0aW5faWEzMl9jdnRwczJxcTUxMl9tYXNrICgoX192OHNmKSBfX0EsCiAgICAgICAgICAgICAgICAoX192OGRpKSBfX1csCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9jdnRwc19lcGk2NCAoX19tbWFzazggX19VLCBfX20yNTYgX19BKSB7CiAgcmV0dXJuIChfX201MTJpKSBfX2J1aWx0aW5faWEzMl9jdnRwczJxcTUxMl9tYXNrICgoX192OHNmKSBfX0EsCiAgICAgICAgICAgICAgICAoX192OGRpKSBfbW01MTJfc2V0emVyb19zaTUxMigpLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgojZGVmaW5lIF9tbTUxMl9jdnRfcm91bmRwc19lcGk2NChBLCBSKSBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX2N2dHBzMnFxNTEyX21hc2soKF9fdjhzZikoX19tMjU2KShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX3NldHplcm9fc2k1MTIoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza19jdnRfcm91bmRwc19lcGk2NChXLCBVLCBBLCBSKSBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX2N2dHBzMnFxNTEyX21hc2soKF9fdjhzZikoX19tMjU2KShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpKF9fbTUxMmkpKFcpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfY3Z0X3JvdW5kcHNfZXBpNjQoVSwgQSwgUikgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9jdnRwczJxcTUxMl9tYXNrKChfX3Y4c2YpKF9fbTI1NikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpLCAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfY3Z0cHNfZXB1NjQgKF9fbTI1NiBfX0EpIHsKICByZXR1cm4gKF9fbTUxMmkpIF9fYnVpbHRpbl9pYTMyX2N2dHBzMnVxcTUxMl9tYXNrICgoX192OHNmKSBfX0EsCiAgICAgICAgICAgICAgICAgKF9fdjhkaSkgX21tNTEyX3NldHplcm9fc2k1MTIoKSwKICAgICAgICAgICAgICAgICAoX19tbWFzazgpIC0xLAogICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2N2dHBzX2VwdTY0IChfX201MTJpIF9fVywgX19tbWFzazggX19VLCBfX20yNTYgX19BKSB7CiAgcmV0dXJuIChfX201MTJpKSBfX2J1aWx0aW5faWEzMl9jdnRwczJ1cXE1MTJfbWFzayAoKF9fdjhzZikgX19BLAogICAgICAgICAgICAgICAgIChfX3Y4ZGkpIF9fVywKICAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfY3Z0cHNfZXB1NjQgKF9fbW1hc2s4IF9fVSwgX19tMjU2IF9fQSkgewogIHJldHVybiAoX19tNTEyaSkgX19idWlsdGluX2lhMzJfY3Z0cHMydXFxNTEyX21hc2sgKChfX3Y4c2YpIF9fQSwKICAgICAgICAgICAgICAgICAoX192OGRpKSBfbW01MTJfc2V0emVyb19zaTUxMigpLAogICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCiNkZWZpbmUgX21tNTEyX2N2dF9yb3VuZHBzX2VwdTY0KEEsIFIpIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfY3Z0cHMydXFxNTEyX21hc2soKF9fdjhzZikoX19tMjU2KShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX2N2dF9yb3VuZHBzX2VwdTY0KFcsIFUsIEEsIFIpIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfY3Z0cHMydXFxNTEyX21hc2soKF9fdjhzZikoX19tMjU2KShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKShfX201MTJpKShXKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9jdnRfcm91bmRwc19lcHU2NChVLCBBLCBSKSBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX2N2dHBzMnVxcTUxMl9tYXNrKChfX3Y4c2YpKF9fbTI1NikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfc2V0emVyb19zaTUxMigpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfY3Z0ZXBpNjRfcGQgKF9fbTUxMmkgX19BKSB7CiAgcmV0dXJuIChfX201MTJkKV9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKChfX3Y4ZGkpX19BLCBfX3Y4ZGYpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19jdnRlcGk2NF9wZCAoX19tNTEyZCBfX1csIF9fbW1hc2s4IF9fVSwgX19tNTEyaSBfX0EpIHsKICByZXR1cm4gKF9fbTUxMmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfNTEyKChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl9jdnRlcGk2NF9wZChfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJkIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfY3Z0ZXBpNjRfcGQgKF9fbW1hc2s4IF9fVSwgX19tNTEyaSBfX0EpIHsKICByZXR1cm4gKF9fbTUxMmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfNTEyKChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl9jdnRlcGk2NF9wZChfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfbW01MTJfc2V0emVyb19wZCgpKTsKfQoKI2RlZmluZSBfbW01MTJfY3Z0X3JvdW5kZXBpNjRfcGQoQSwgUikgXAogICgoX19tNTEyZClfX2J1aWx0aW5faWEzMl9jdnRxcTJwZDUxMl9tYXNrKChfX3Y4ZGkpKF9fbTUxMmkpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfbW01MTJfc2V0emVyb19wZCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX2N2dF9yb3VuZGVwaTY0X3BkKFcsIFUsIEEsIFIpIFwKICAoKF9fbTUxMmQpX19idWlsdGluX2lhMzJfY3Z0cXEycGQ1MTJfbWFzaygoX192OGRpKShfX201MTJpKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpKF9fbTUxMmQpKFcpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfY3Z0X3JvdW5kZXBpNjRfcGQoVSwgQSwgUikgXAogICgoX19tNTEyZClfX2J1aWx0aW5faWEzMl9jdnRxcTJwZDUxMl9tYXNrKChfX3Y4ZGkpKF9fbTUxMmkpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfbW01MTJfc2V0emVyb19wZCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfY3Z0ZXBpNjRfcHMgKF9fbTUxMmkgX19BKSB7CiAgcmV0dXJuIChfX20yNTYpIF9fYnVpbHRpbl9pYTMyX2N2dHFxMnBzNTEyX21hc2sgKChfX3Y4ZGkpIF9fQSwKICAgICAgICAgICAgICAgKF9fdjhzZikgX21tMjU2X3NldHplcm9fcHMoKSwKICAgICAgICAgICAgICAgKF9fbW1hc2s4KSAtMSwKICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19jdnRlcGk2NF9wcyAoX19tMjU2IF9fVywgX19tbWFzazggX19VLCBfX201MTJpIF9fQSkgewogIHJldHVybiAoX19tMjU2KSBfX2J1aWx0aW5faWEzMl9jdnRxcTJwczUxMl9tYXNrICgoX192OGRpKSBfX0EsCiAgICAgICAgICAgICAgIChfX3Y4c2YpIF9fVywKICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2N2dGVwaTY0X3BzIChfX21tYXNrOCBfX1UsIF9fbTUxMmkgX19BKSB7CiAgcmV0dXJuIChfX20yNTYpIF9fYnVpbHRpbl9pYTMyX2N2dHFxMnBzNTEyX21hc2sgKChfX3Y4ZGkpIF9fQSwKICAgICAgICAgICAgICAgKF9fdjhzZikgX21tMjU2X3NldHplcm9fcHMoKSwKICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCiNkZWZpbmUgX21tNTEyX2N2dF9yb3VuZGVwaTY0X3BzKEEsIFIpIFwKICAoKF9fbTI1NilfX2J1aWx0aW5faWEzMl9jdnRxcTJwczUxMl9tYXNrKChfX3Y4ZGkpKF9fbTUxMmkpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKV9tbTI1Nl9zZXR6ZXJvX3BzKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza19jdnRfcm91bmRlcGk2NF9wcyhXLCBVLCBBLCBSKSBcCiAgKChfX20yNTYpX19idWlsdGluX2lhMzJfY3Z0cXEycHM1MTJfbWFzaygoX192OGRpKShfX201MTJpKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZikoX19tMjU2KShXKSwgKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfY3Z0X3JvdW5kZXBpNjRfcHMoVSwgQSwgUikgXAogICgoX19tMjU2KV9fYnVpbHRpbl9pYTMyX2N2dHFxMnBzNTEyX21hc2soKF9fdjhkaSkoX19tNTEyaSkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX21tMjU2X3NldHplcm9fcHMoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9jdnR0cGRfZXBpNjQgKF9fbTUxMmQgX19BKSB7CiAgcmV0dXJuIChfX201MTJpKSBfX2J1aWx0aW5faWEzMl9jdnR0cGQycXE1MTJfbWFzayAoKF9fdjhkZikgX19BLAogICAgICAgICAgICAgICAgIChfX3Y4ZGkpIF9tbTUxMl9zZXR6ZXJvX3NpNTEyKCksCiAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSAtMSwKICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19jdnR0cGRfZXBpNjQgKF9fbTUxMmkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTUxMmQgX19BKSB7CiAgcmV0dXJuIChfX201MTJpKSBfX2J1aWx0aW5faWEzMl9jdnR0cGQycXE1MTJfbWFzayAoKF9fdjhkZikgX19BLAogICAgICAgICAgICAgICAgIChfX3Y4ZGkpIF9fVywKICAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfY3Z0dHBkX2VwaTY0IChfX21tYXNrOCBfX1UsIF9fbTUxMmQgX19BKSB7CiAgcmV0dXJuIChfX201MTJpKSBfX2J1aWx0aW5faWEzMl9jdnR0cGQycXE1MTJfbWFzayAoKF9fdjhkZikgX19BLAogICAgICAgICAgICAgICAgIChfX3Y4ZGkpIF9tbTUxMl9zZXR6ZXJvX3NpNTEyKCksCiAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UsCiAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW01MTJfY3Z0dF9yb3VuZHBkX2VwaTY0KEEsIFIpIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfY3Z0dHBkMnFxNTEyX21hc2soKF9fdjhkZikoX19tNTEyZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfc2V0emVyb19zaTUxMigpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza19jdnR0X3JvdW5kcGRfZXBpNjQoVywgVSwgQSwgUikgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9jdnR0cGQycXE1MTJfbWFzaygoX192OGRmKShfX201MTJkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKShfX201MTJpKShXKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9jdnR0X3JvdW5kcGRfZXBpNjQoVSwgQSwgUikgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9jdnR0cGQycXE1MTJfbWFzaygoX192OGRmKShfX201MTJkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2N2dHRwZF9lcHU2NCAoX19tNTEyZCBfX0EpIHsKICByZXR1cm4gKF9fbTUxMmkpIF9fYnVpbHRpbl9pYTMyX2N2dHRwZDJ1cXE1MTJfbWFzayAoKF9fdjhkZikgX19BLAogICAgICAgICAgICAgICAgICAoX192OGRpKSBfbW01MTJfc2V0emVyb19zaTUxMigpLAogICAgICAgICAgICAgICAgICAoX19tbWFzazgpIC0xLAogICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19jdnR0cGRfZXB1NjQgKF9fbTUxMmkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTUxMmQgX19BKSB7CiAgcmV0dXJuIChfX201MTJpKSBfX2J1aWx0aW5faWEzMl9jdnR0cGQydXFxNTEyX21hc2sgKChfX3Y4ZGYpIF9fQSwKICAgICAgICAgICAgICAgICAgKF9fdjhkaSkgX19XLAogICAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2N2dHRwZF9lcHU2NCAoX19tbWFzazggX19VLCBfX201MTJkIF9fQSkgewogIHJldHVybiAoX19tNTEyaSkgX19idWlsdGluX2lhMzJfY3Z0dHBkMnVxcTUxMl9tYXNrICgoX192OGRmKSBfX0EsCiAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpIF9tbTUxMl9zZXR6ZXJvX3NpNTEyKCksCiAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgojZGVmaW5lIF9tbTUxMl9jdnR0X3JvdW5kcGRfZXB1NjQoQSwgUikgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9jdnR0cGQydXFxNTEyX21hc2soKF9fdjhkZikoX19tNTEyZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX3NldHplcm9fc2k1MTIoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX2N2dHRfcm91bmRwZF9lcHU2NChXLCBVLCBBLCBSKSBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX2N2dHRwZDJ1cXE1MTJfbWFzaygoX192OGRmKShfX201MTJkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSkoX19tNTEyaSkoVyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X2N2dHRfcm91bmRwZF9lcHU2NChVLCBBLCBSKSBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX2N2dHRwZDJ1cXE1MTJfbWFzaygoX192OGRmKShfX201MTJkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfc2V0emVyb19zaTUxMigpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpLCAoaW50KShSKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfY3Z0dHBzX2VwaTY0IChfX20yNTYgX19BKSB7CiAgcmV0dXJuIChfX201MTJpKSBfX2J1aWx0aW5faWEzMl9jdnR0cHMycXE1MTJfbWFzayAoKF9fdjhzZikgX19BLAogICAgICAgICAgICAgICAgIChfX3Y4ZGkpIF9tbTUxMl9zZXR6ZXJvX3NpNTEyKCksCiAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSAtMSwKICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19jdnR0cHNfZXBpNjQgKF9fbTUxMmkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NiBfX0EpIHsKICByZXR1cm4gKF9fbTUxMmkpIF9fYnVpbHRpbl9pYTMyX2N2dHRwczJxcTUxMl9tYXNrICgoX192OHNmKSBfX0EsCiAgICAgICAgICAgICAgICAgKF9fdjhkaSkgX19XLAogICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9jdnR0cHNfZXBpNjQgKF9fbW1hc2s4IF9fVSwgX19tMjU2IF9fQSkgewogIHJldHVybiAoX19tNTEyaSkgX19idWlsdGluX2lhMzJfY3Z0dHBzMnFxNTEyX21hc2sgKChfX3Y4c2YpIF9fQSwKICAgICAgICAgICAgICAgICAoX192OGRpKSBfbW01MTJfc2V0emVyb19zaTUxMigpLAogICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCiNkZWZpbmUgX21tNTEyX2N2dHRfcm91bmRwc19lcGk2NChBLCBSKSBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX2N2dHRwczJxcTUxMl9tYXNrKChfX3Y4c2YpKF9fbTI1NikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfc2V0emVyb19zaTUxMigpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza19jdnR0X3JvdW5kcHNfZXBpNjQoVywgVSwgQSwgUikgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9jdnR0cHMycXE1MTJfbWFzaygoX192OHNmKShfX20yNTYpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpKF9fbTUxMmkpKFcpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X2N2dHRfcm91bmRwc19lcGk2NChVLCBBLCBSKSBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX2N2dHRwczJxcTUxMl9tYXNrKChfX3Y4c2YpKF9fbTI1NikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfc2V0emVyb19zaTUxMigpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9jdnR0cHNfZXB1NjQgKF9fbTI1NiBfX0EpIHsKICByZXR1cm4gKF9fbTUxMmkpIF9fYnVpbHRpbl9pYTMyX2N2dHRwczJ1cXE1MTJfbWFzayAoKF9fdjhzZikgX19BLAogICAgICAgICAgICAgICAgICAoX192OGRpKSBfbW01MTJfc2V0emVyb19zaTUxMigpLAogICAgICAgICAgICAgICAgICAoX19tbWFzazgpIC0xLAogICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19jdnR0cHNfZXB1NjQgKF9fbTUxMmkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NiBfX0EpIHsKICByZXR1cm4gKF9fbTUxMmkpIF9fYnVpbHRpbl9pYTMyX2N2dHRwczJ1cXE1MTJfbWFzayAoKF9fdjhzZikgX19BLAogICAgICAgICAgICAgICAgICAoX192OGRpKSBfX1csCiAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfY3Z0dHBzX2VwdTY0IChfX21tYXNrOCBfX1UsIF9fbTI1NiBfX0EpIHsKICByZXR1cm4gKF9fbTUxMmkpIF9fYnVpbHRpbl9pYTMyX2N2dHRwczJ1cXE1MTJfbWFzayAoKF9fdjhzZikgX19BLAogICAgICAgICAgICAgICAgICAoX192OGRpKSBfbW01MTJfc2V0emVyb19zaTUxMigpLAogICAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKI2RlZmluZSBfbW01MTJfY3Z0dF9yb3VuZHBzX2VwdTY0KEEsIFIpIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfY3Z0dHBzMnVxcTUxMl9tYXNrKChfX3Y4c2YpKF9fbTI1NikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX3NldHplcm9fc2k1MTIoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX2N2dHRfcm91bmRwc19lcHU2NChXLCBVLCBBLCBSKSBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX2N2dHRwczJ1cXE1MTJfbWFzaygoX192OHNmKShfX20yNTYpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKShfX201MTJpKShXKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfY3Z0dF9yb3VuZHBzX2VwdTY0KFUsIEEsIFIpIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfY3Z0dHBzMnVxcTUxMl9tYXNrKChfX3Y4c2YpKF9fbTI1NikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX3NldHplcm9fc2k1MTIoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX2N2dGVwdTY0X3BkIChfX201MTJpIF9fQSkgewogIHJldHVybiAoX19tNTEyZClfX2J1aWx0aW5fY29udmVydHZlY3RvcigoX192OGR1KV9fQSwgX192OGRmKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfY3Z0ZXB1NjRfcGQgKF9fbTUxMmQgX19XLCBfX21tYXNrOCBfX1UsIF9fbTUxMmkgX19BKSB7CiAgcmV0dXJuIChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzUxMigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfbW01MTJfY3Z0ZXB1NjRfcGQoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2N2dGVwdTY0X3BkIChfX21tYXNrOCBfX1UsIF9fbTUxMmkgX19BKSB7CiAgcmV0dXJuIChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzUxMigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfbW01MTJfY3Z0ZXB1NjRfcGQoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX3NldHplcm9fcGQoKSk7Cn0KCiNkZWZpbmUgX21tNTEyX2N2dF9yb3VuZGVwdTY0X3BkKEEsIFIpIFwKICAoKF9fbTUxMmQpX19idWlsdGluX2lhMzJfY3Z0dXFxMnBkNTEyX21hc2soKF9fdjhkaSkoX19tNTEyaSkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfbW01MTJfc2V0emVyb19wZCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza19jdnRfcm91bmRlcHU2NF9wZChXLCBVLCBBLCBSKSBcCiAgKChfX201MTJkKV9fYnVpbHRpbl9pYTMyX2N2dHVxcTJwZDUxMl9tYXNrKChfX3Y4ZGkpKF9fbTUxMmkpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpKF9fbTUxMmQpKFcpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCgojZGVmaW5lIF9tbTUxMl9tYXNrel9jdnRfcm91bmRlcHU2NF9wZChVLCBBLCBSKSBcCiAgKChfX201MTJkKV9fYnVpbHRpbl9pYTMyX2N2dHVxcTJwZDUxMl9tYXNrKChfX3Y4ZGkpKF9fbTUxMmkpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX3NldHplcm9fcGQoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpLCAoaW50KShSKSkpCgoKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfY3Z0ZXB1NjRfcHMgKF9fbTUxMmkgX19BKSB7CiAgcmV0dXJuIChfX20yNTYpIF9fYnVpbHRpbl9pYTMyX2N2dHVxcTJwczUxMl9tYXNrICgoX192OGRpKSBfX0EsCiAgICAgICAgICAgICAgICAoX192OHNmKSBfbW0yNTZfc2V0emVyb19wcygpLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSAtMSwKICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfY3Z0ZXB1NjRfcHMgKF9fbTI1NiBfX1csIF9fbW1hc2s4IF9fVSwgX19tNTEyaSBfX0EpIHsKICByZXR1cm4gKF9fbTI1NikgX19idWlsdGluX2lhMzJfY3Z0dXFxMnBzNTEyX21hc2sgKChfX3Y4ZGkpIF9fQSwKICAgICAgICAgICAgICAgIChfX3Y4c2YpIF9fVywKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VLAogICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfY3Z0ZXB1NjRfcHMgKF9fbW1hc2s4IF9fVSwgX19tNTEyaSBfX0EpIHsKICByZXR1cm4gKF9fbTI1NikgX19idWlsdGluX2lhMzJfY3Z0dXFxMnBzNTEyX21hc2sgKChfX3Y4ZGkpIF9fQSwKICAgICAgICAgICAgICAgIChfX3Y4c2YpIF9tbTI1Nl9zZXR6ZXJvX3BzKCksCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSwKICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTik7Cn0KCiNkZWZpbmUgX21tNTEyX2N2dF9yb3VuZGVwdTY0X3BzKEEsIFIpIFwKICAoKF9fbTI1NilfX2J1aWx0aW5faWEzMl9jdnR1cXEycHM1MTJfbWFzaygoX192OGRpKShfX201MTJpKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX21tMjU2X3NldHplcm9fcHMoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza19jdnRfcm91bmRlcHU2NF9wcyhXLCBVLCBBLCBSKSBcCiAgKChfX20yNTYpX19idWlsdGluX2lhMzJfY3Z0dXFxMnBzNTEyX21hc2soKF9fdjhkaSkoX19tNTEyaSkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKShfX20yNTYpKFcpLCAoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfY3Z0X3JvdW5kZXB1NjRfcHMoVSwgQSwgUikgXAogICgoX19tMjU2KV9fYnVpbHRpbl9pYTMyX2N2dHVxcTJwczUxMl9tYXNrKChfX3Y4ZGkpKF9fbTUxMmkpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZilfbW0yNTZfc2V0emVyb19wcygpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfcmFuZ2VfcGQoQSwgQiwgQykgXAogICgoX19tNTEyZClfX2J1aWx0aW5faWEzMl9yYW5nZXBkNTEyX21hc2soKF9fdjhkZikoX19tNTEyZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpKF9fbTUxMmQpKEIpLCAoaW50KShDKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfbW01MTJfc2V0emVyb19wZCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTikpCgojZGVmaW5lIF9tbTUxMl9tYXNrX3JhbmdlX3BkKFcsIFUsIEEsIEIsIEMpIFwKICAoKF9fbTUxMmQpX19idWlsdGluX2lhMzJfcmFuZ2VwZDUxMl9tYXNrKChfX3Y4ZGYpKF9fbTUxMmQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKShfX201MTJkKShCKSwgKGludCkoQyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpKF9fbTUxMmQpKFcpLCAoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pKQoKI2RlZmluZSBfbW01MTJfbWFza3pfcmFuZ2VfcGQoVSwgQSwgQiwgQykgXAogICgoX19tNTEyZClfX2J1aWx0aW5faWEzMl9yYW5nZXBkNTEyX21hc2soKF9fdjhkZikoX19tNTEyZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpKF9fbTUxMmQpKEIpLCAoaW50KShDKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfbW01MTJfc2V0emVyb19wZCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pKQoKI2RlZmluZSBfbW01MTJfcmFuZ2Vfcm91bmRfcGQoQSwgQiwgQywgUikgXAogICgoX19tNTEyZClfX2J1aWx0aW5faWEzMl9yYW5nZXBkNTEyX21hc2soKF9fdjhkZikoX19tNTEyZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpKF9fbTUxMmQpKEIpLCAoaW50KShDKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfbW01MTJfc2V0emVyb19wZCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEsIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfcmFuZ2Vfcm91bmRfcGQoVywgVSwgQSwgQiwgQywgUikgXAogICgoX19tNTEyZClfX2J1aWx0aW5faWEzMl9yYW5nZXBkNTEyX21hc2soKF9fdjhkZikoX19tNTEyZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpKF9fbTUxMmQpKEIpLCAoaW50KShDKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikoX19tNTEyZCkoVyksIChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X3JhbmdlX3JvdW5kX3BkKFUsIEEsIEIsIEMsIFIpIFwKICAoKF9fbTUxMmQpX19idWlsdGluX2lhMzJfcmFuZ2VwZDUxMl9tYXNrKChfX3Y4ZGYpKF9fbTUxMmQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKShfX201MTJkKShCKSwgKGludCkoQyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX3NldHplcm9fcGQoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW01MTJfcmFuZ2VfcHMoQSwgQiwgQykgXAogICgoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3JhbmdlcHM1MTJfbWFzaygoX192MTZzZikoX19tNTEyKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikoX19tNTEyKShCKSwgKGludCkoQyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX21tNTEyX3NldHplcm9fcHMoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KS0xLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTikpCgojZGVmaW5lIF9tbTUxMl9tYXNrX3JhbmdlX3BzKFcsIFUsIEEsIEIsIEMpIFwKICAoKF9fbTUxMilfX2J1aWx0aW5faWEzMl9yYW5nZXBzNTEyX21hc2soKF9fdjE2c2YpKF9fbTUxMikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpKF9fbTUxMikoQiksIChpbnQpKEMpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKShfX201MTIpKFcpLCAoX19tbWFzazE2KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pKQoKI2RlZmluZSBfbW01MTJfbWFza3pfcmFuZ2VfcHMoVSwgQSwgQiwgQykgXAogICgoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3JhbmdlcHM1MTJfbWFzaygoX192MTZzZikoX19tNTEyKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikoX19tNTEyKShCKSwgKGludCkoQyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX21tNTEyX3NldHplcm9fcHMoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pKQoKI2RlZmluZSBfbW01MTJfcmFuZ2Vfcm91bmRfcHMoQSwgQiwgQywgUikgXAogICgoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3JhbmdlcHM1MTJfbWFzaygoX192MTZzZikoX19tNTEyKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikoX19tNTEyKShCKSwgKGludCkoQyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX21tNTEyX3NldHplcm9fcHMoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KS0xLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX3JhbmdlX3JvdW5kX3BzKFcsIFUsIEEsIEIsIEMsIFIpIFwKICAoKF9fbTUxMilfX2J1aWx0aW5faWEzMl9yYW5nZXBzNTEyX21hc2soKF9fdjE2c2YpKF9fbTUxMikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpKF9fbTUxMikoQiksIChpbnQpKEMpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKShfX201MTIpKFcpLCAoX19tbWFzazE2KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9yYW5nZV9yb3VuZF9wcyhVLCBBLCBCLCBDLCBSKSBcCiAgKChfX201MTIpX19idWlsdGluX2lhMzJfcmFuZ2VwczUxMl9tYXNrKChfX3YxNnNmKShfX201MTIpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKShfX201MTIpKEIpLCAoaW50KShDKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfc2V0emVyb19wcygpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpKFUpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbV9yYW5nZV9yb3VuZF9zcyhBLCBCLCBDLCBSKSBcCiAgKChfX20xMjgpX19idWlsdGluX2lhMzJfcmFuZ2VzczEyOF9yb3VuZF9tYXNrKChfX3Y0c2YpKF9fbTEyOCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikoX19tMTI4KShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9tbV9zZXR6ZXJvX3BzKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KSAtMSwgKGludCkoQyksXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShSKSkpCgojZGVmaW5lIF9tbV9yYW5nZV9zcyhBICxCICwgQykgX21tX3JhbmdlX3JvdW5kX3NzKEEsIEIsIEMgLF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTikKCiNkZWZpbmUgX21tX21hc2tfcmFuZ2Vfcm91bmRfc3MoVywgVSwgQSwgQiwgQywgUikgXAogICgoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3Jhbmdlc3MxMjhfcm91bmRfbWFzaygoX192NHNmKShfX20xMjgpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikoX19tMTI4KShXKSxcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKEMpLFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoUikpKQoKI2RlZmluZSBfbW1fbWFza19yYW5nZV9zcyhXICwgVSwgQSwgQiwgQykgX21tX21hc2tfcmFuZ2Vfcm91bmRfc3MoVywgVSwgQSwgQiwgQyAsIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTikKCiNkZWZpbmUgX21tX21hc2t6X3JhbmdlX3JvdW5kX3NzKFUsIEEsIEIsIEMsIFIpIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl9yYW5nZXNzMTI4X3JvdW5kX21hc2soKF9fdjRzZikoX19tMTI4KShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX3NldHplcm9fcHMoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpLCAoaW50KShDKSxcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX21hc2t6X3JhbmdlX3NzKFUsIEEgLEIgLCBDKSBfbW1fbWFza3pfcmFuZ2Vfcm91bmRfc3MoVSwgQSwgQiwgQyAsX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKQoKI2RlZmluZSBfbW1fcmFuZ2Vfcm91bmRfc2QoQSwgQiwgQywgUikgXAogICgoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9yYW5nZXNkMTI4X3JvdW5kX21hc2soKF9fdjJkZikoX19tMTI4ZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9tbV9zZXR6ZXJvX3BkKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkgLTEsIChpbnQpKEMpLFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX3JhbmdlX3NkKEEgLEIgLCBDKSBfbW1fcmFuZ2Vfcm91bmRfc2QoQSwgQiwgQyAsX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKQoKI2RlZmluZSBfbW1fbWFza19yYW5nZV9yb3VuZF9zZChXLCBVLCBBLCBCLCBDLCBSKSBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3Jhbmdlc2QxMjhfcm91bmRfbWFzaygoX192MmRmKShfX20xMjhkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikoX19tMTI4ZCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKFcpLFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKEMpLFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX21hc2tfcmFuZ2Vfc2QoVywgVSwgQSwgQiwgQykgX21tX21hc2tfcmFuZ2Vfcm91bmRfc2QoVywgVSwgQSwgQiwgQyAsX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKQoKI2RlZmluZSBfbW1fbWFza3pfcmFuZ2Vfcm91bmRfc2QoVSwgQSwgQiwgQywgUikgXAogICgoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9yYW5nZXNkMTI4X3JvdW5kX21hc2soKF9fdjJkZikoX19tMTI4ZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9tbV9zZXR6ZXJvX3BkKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKEMpLFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX21hc2t6X3JhbmdlX3NkKFUsIEEsIEIsIEMpIF9tbV9tYXNrel9yYW5nZV9yb3VuZF9zZChVLCBBLCBCLCBDICxfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pCgojZGVmaW5lIF9tbTUxMl9yZWR1Y2VfcGQoQSwgQikgXAogICgoX19tNTEyZClfX2J1aWx0aW5faWEzMl9yZWR1Y2VwZDUxMl9tYXNrKChfX3Y4ZGYpKF9fbTUxMmQpKEEpLCAoaW50KShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX3NldHplcm9fcGQoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTikpCgojZGVmaW5lIF9tbTUxMl9tYXNrX3JlZHVjZV9wZChXLCBVLCBBLCBCKSBcCiAgKChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3JlZHVjZXBkNTEyX21hc2soKF9fdjhkZikoX19tNTEyZCkoQSksIChpbnQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikoX19tNTEyZCkoVyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X3JlZHVjZV9wZChVLCBBLCBCKSBcCiAgKChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3JlZHVjZXBkNTEyX21hc2soKF9fdjhkZikoX19tNTEyZCkoQSksIChpbnQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfbW01MTJfc2V0emVyb19wZCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTikpCgojZGVmaW5lIF9tbTUxMl9yZWR1Y2VfcHMoQSwgQikgXAogICgoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3JlZHVjZXBzNTEyX21hc2soKF9fdjE2c2YpKF9fbTUxMikoQSksIChpbnQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfc2V0emVyb19wcygpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KS0xLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pKQoKI2RlZmluZSBfbW01MTJfbWFza19yZWR1Y2VfcHMoVywgVSwgQSwgQikgXAogICgoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3JlZHVjZXBzNTEyX21hc2soKF9fdjE2c2YpKF9fbTUxMikoQSksIChpbnQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZikoX19tNTEyKShXKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2sxNikoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTikpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9yZWR1Y2VfcHMoVSwgQSwgQikgXAogICgoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3JlZHVjZXBzNTEyX21hc2soKF9fdjE2c2YpKF9fbTUxMikoQSksIChpbnQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfc2V0emVyb19wcygpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKSkKCiNkZWZpbmUgX21tNTEyX3JlZHVjZV9yb3VuZF9wZChBLCBCLCBSKSBcCiAgKChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3JlZHVjZXBkNTEyX21hc2soKF9fdjhkZikoX19tNTEyZCkoQSksIChpbnQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZilfbW01MTJfc2V0emVyb19wZCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX3JlZHVjZV9yb3VuZF9wZChXLCBVLCBBLCBCLCBSKSBcCiAgKChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3JlZHVjZXBkNTEyX21hc2soKF9fdjhkZikoX19tNTEyZCkoQSksIChpbnQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkZikoX19tNTEyZCkoVyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9yZWR1Y2Vfcm91bmRfcGQoVSwgQSwgQiwgUikgXAogICgoX19tNTEyZClfX2J1aWx0aW5faWEzMl9yZWR1Y2VwZDUxMl9tYXNrKChfX3Y4ZGYpKF9fbTUxMmQpKEEpLCAoaW50KShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX3NldHplcm9fcGQoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX3JlZHVjZV9yb3VuZF9wcyhBLCBCLCBSKSBcCiAgKChfX201MTIpX19idWlsdGluX2lhMzJfcmVkdWNlcHM1MTJfbWFzaygoX192MTZzZikoX19tNTEyKShBKSwgKGludCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl9zZXR6ZXJvX3BzKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpLTEsIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfcmVkdWNlX3JvdW5kX3BzKFcsIFUsIEEsIEIsIFIpIFwKICAoKF9fbTUxMilfX2J1aWx0aW5faWEzMl9yZWR1Y2VwczUxMl9tYXNrKChfX3YxNnNmKShfX201MTIpKEEpLCAoaW50KShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpKF9fbTUxMikoVyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrMTYpKFUpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9yZWR1Y2Vfcm91bmRfcHMoVSwgQSwgQiwgUikgXAogICgoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3JlZHVjZXBzNTEyX21hc2soKF9fdjE2c2YpKF9fbTUxMikoQSksIChpbnQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfc2V0emVyb19wcygpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazE2KShVKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW1fcmVkdWNlX3NzKEEsIEIsIEMpIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl9yZWR1Y2Vzc19tYXNrKChfX3Y0c2YpKF9fbTEyOCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX3NldHplcm9fcHMoKSwgKF9fbW1hc2s4KS0xLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShDKSwgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKSkKCiNkZWZpbmUgX21tX21hc2tfcmVkdWNlX3NzKFcsIFUsIEEsIEIsIEMpIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl9yZWR1Y2Vzc19tYXNrKChfX3Y0c2YpKF9fbTEyOCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoVyksIChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKEMpLCBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pKQoKI2RlZmluZSBfbW1fbWFza3pfcmVkdWNlX3NzKFUsIEEsIEIsIEMpIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl9yZWR1Y2Vzc19tYXNrKChfX3Y0c2YpKF9fbTEyOCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX3NldHplcm9fcHMoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoQyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTikpCgojZGVmaW5lIF9tbV9yZWR1Y2Vfcm91bmRfc3MoQSwgQiwgQywgUikgXAogICgoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3JlZHVjZXNzX21hc2soKF9fdjRzZikoX19tMTI4KShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikoX19tMTI4KShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfbW1fc2V0emVyb19wcygpLCAoX19tbWFzazgpLTEsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKEMpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbV9tYXNrX3JlZHVjZV9yb3VuZF9zcyhXLCBVLCBBLCBCLCBDLCBSKSBcCiAgKChfX20xMjgpX19idWlsdGluX2lhMzJfcmVkdWNlc3NfbWFzaygoX192NHNmKShfX20xMjgpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKFcpLCAoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShDKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW1fbWFza3pfcmVkdWNlX3JvdW5kX3NzKFUsIEEsIEIsIEMsIFIpIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl9yZWR1Y2Vzc19tYXNrKChfX3Y0c2YpKF9fbTEyOCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX3NldHplcm9fcHMoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoQyksIChpbnQpKFIpKSkKCiNkZWZpbmUgX21tX3JlZHVjZV9zZChBLCBCLCBDKSBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3JlZHVjZXNkX21hc2soKF9fdjJkZikoX19tMTI4ZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX3NldHplcm9fcGQoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSwgKGludCkoQyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pKQoKI2RlZmluZSBfbW1fbWFza19yZWR1Y2Vfc2QoVywgVSwgQSwgQiwgQykgXAogICgoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9yZWR1Y2VzZF9tYXNrKChfX3YyZGYpKF9fbTEyOGQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikoX19tMTI4ZCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShXKSwgKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKEMpLCBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pKQoKI2RlZmluZSBfbW1fbWFza3pfcmVkdWNlX3NkKFUsIEEsIEIsIEMpIFwKICAoKF9fbTEyOGQpX19idWlsdGluX2lhMzJfcmVkdWNlc2RfbWFzaygoX192MmRmKShfX20xMjhkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfbW1fc2V0emVyb19wZCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSwgKGludCkoQyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04pKQoKI2RlZmluZSBfbW1fcmVkdWNlX3JvdW5kX3NkKEEsIEIsIEMsIFIpIFwKICAoKF9fbTEyOGQpX19idWlsdGluX2lhMzJfcmVkdWNlc2RfbWFzaygoX192MmRmKShfX20xMjhkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfbW1fc2V0emVyb19wZCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xLCAoaW50KShDKSwgKGludCkoUikpKQoKI2RlZmluZSBfbW1fbWFza19yZWR1Y2Vfcm91bmRfc2QoVywgVSwgQSwgQiwgQywgUikgXAogICgoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9yZWR1Y2VzZF9tYXNrKChfX3YyZGYpKF9fbTEyOGQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikoX19tMTI4ZCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShXKSwgKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKEMpLCAoaW50KShSKSkpCgojZGVmaW5lIF9tbV9tYXNrel9yZWR1Y2Vfcm91bmRfc2QoVSwgQSwgQiwgQywgUikgXAogICgoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9yZWR1Y2VzZF9tYXNrKChfX3YyZGYpKF9fbTEyOGQpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikoX19tMTI4ZCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9tbV9zZXR6ZXJvX3BkKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpLCAoaW50KShDKSwgKGludCkoUikpKQoKc3RhdGljIF9faW5saW5lX18gX19tbWFzazE2IF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbW92ZXBpMzJfbWFzayAoX19tNTEyaSBfX0EpCnsKICByZXR1cm4gKF9fbW1hc2sxNikgX19idWlsdGluX2lhMzJfY3Z0ZDJtYXNrNTEyICgoX192MTZzaSkgX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21vdm1fZXBpMzIgKF9fbW1hc2sxNiBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmkpIF9fYnVpbHRpbl9pYTMyX2N2dG1hc2syZDUxMiAoX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21vdm1fZXBpNjQgKF9fbW1hc2s4IF9fQSkKewogIHJldHVybiAoX19tNTEyaSkgX19idWlsdGluX2lhMzJfY3Z0bWFzazJxNTEyIChfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX21tYXNrOCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21vdmVwaTY0X21hc2sgKF9fbTUxMmkgX19BKQp7CiAgcmV0dXJuIChfX21tYXNrOCkgX19idWlsdGluX2lhMzJfY3Z0cTJtYXNrNTEyICgoX192OGRpKSBfX0EpOwp9CgoKc3RhdGljIF9faW5saW5lX18gX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfYnJvYWRjYXN0X2YzMngyIChfX20xMjggX19BKQp7CiAgcmV0dXJuIChfX201MTIpX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjRzZilfX0EsIChfX3Y0c2YpX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDEsIDAsIDEsIDAsIDEsIDAsIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMSwgMCwgMSwgMCwgMSwgMCwgMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfYnJvYWRjYXN0X2YzMngyIChfX201MTIgX19PLCBfX21tYXNrMTYgX19NLCBfX20xMjggX19BKQp7CiAgcmV0dXJuIChfX201MTIpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfNTEyKChfX21tYXNrMTYpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfYnJvYWRjYXN0X2YzMngyKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9fTyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2Jyb2FkY2FzdF9mMzJ4MiAoX19tbWFzazE2IF9fTSwgX19tMTI4IF9fQSkKewogIHJldHVybiAoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzUxMigoX19tbWFzazE2KV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX21tNTEyX2Jyb2FkY2FzdF9mMzJ4MihfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfc2V0emVyb19wcygpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfYnJvYWRjYXN0X2YzMng4KF9fbTI1NiBfX0EpCnsKICByZXR1cm4gKF9fbTUxMilfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192OHNmKV9fQSwgKF9fdjhzZilfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3KTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza19icm9hZGNhc3RfZjMyeDgoX19tNTEyIF9fTywgX19tbWFzazE2IF9fTSwgX19tMjU2IF9fQSkKewogIHJldHVybiAoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzUxMigoX19tbWFzazE2KV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl9icm9hZGNhc3RfZjMyeDgoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9fTyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMiBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2Jyb2FkY2FzdF9mMzJ4OChfX21tYXNrMTYgX19NLCBfX20yNTYgX19BKQp7CiAgcmV0dXJuIChfX201MTIpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfNTEyKChfX21tYXNrMTYpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX21tNTEyX2Jyb2FkY2FzdF9mMzJ4OChfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2YpX21tNTEyX3NldHplcm9fcHMoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmQgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9icm9hZGNhc3RfZjY0eDIoX19tMTI4ZCBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmQpX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjJkZilfX0EsIChfX3YyZGYpX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfYnJvYWRjYXN0X2Y2NHgyKF9fbTUxMmQgX19PLCBfX21tYXNrOCBfX00sIF9fbTEyOGQgX19BKQp7CiAgcmV0dXJuIChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzUxMigoX19tbWFzazgpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX2Jyb2FkY2FzdF9mNjR4MihfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX19PKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyZCBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2t6X2Jyb2FkY2FzdF9mNjR4MihfX21tYXNrOCBfX00sIF9fbTEyOGQgX19BKQp7CiAgcmV0dXJuIChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzUxMigoX19tbWFzazgpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX2Jyb2FkY2FzdF9mNjR4MihfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX3NldHplcm9fcGQoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9icm9hZGNhc3RfaTMyeDIgKF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y0c2kpX19BLCAoX192NHNpKV9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMSwgMCwgMSwgMCwgMSwgMCwgMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMSwgMCwgMSwgMCwgMSwgMCwgMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2Jyb2FkY2FzdF9pMzJ4MiAoX19tNTEyaSBfX08sIF9fbW1hc2sxNiBfX00sIF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfNTEyKChfX21tYXNrMTYpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfYnJvYWRjYXN0X2kzMngyKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9fTyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrel9icm9hZGNhc3RfaTMyeDIgKF9fbW1hc2sxNiBfX00sIF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfNTEyKChfX21tYXNrMTYpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfYnJvYWRjYXN0X2kzMngyKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfYnJvYWRjYXN0X2kzMng4KF9fbTI1NmkgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y4c2kpX19BLCAoX192OHNpKV9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMSwgMiwgMywgNCwgNSwgNiwgNyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9tYXNrX2Jyb2FkY2FzdF9pMzJ4OChfX201MTJpIF9fTywgX19tbWFzazE2IF9fTSwgX19tMjU2aSBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF81MTIoKF9fbW1hc2sxNilfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfYnJvYWRjYXN0X2kzMng4KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfX08pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfYnJvYWRjYXN0X2kzMng4KF9fbW1hc2sxNiBfX00sIF9fbTI1NmkgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfNTEyKChfX21tYXNrMTYpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX21tNTEyX2Jyb2FkY2FzdF9pMzJ4OChfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX21tNTEyX3NldHplcm9fc2k1MTIoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTNTEyCl9tbTUxMl9icm9hZGNhc3RfaTY0eDIoX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjJkaSlfX0EsIChfX3YyZGkpX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlM1MTIKX21tNTEyX21hc2tfYnJvYWRjYXN0X2k2NHgyKF9fbTUxMmkgX19PLCBfX21tYXNrOCBfX00sIF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfNTEyKChfX21tYXNrOClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfYnJvYWRjYXN0X2k2NHgyKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfX08pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUzUxMgpfbW01MTJfbWFza3pfYnJvYWRjYXN0X2k2NHgyKF9fbW1hc2s4IF9fTSwgX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV81MTIoKF9fbW1hc2s4KV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9icm9hZGNhc3RfaTY0eDIoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgojZGVmaW5lIF9tbTUxMl9leHRyYWN0ZjMyeDhfcHMoQSwgaW1tKSBcCiAgKChfX20yNTYpX19idWlsdGluX2lhMzJfZXh0cmFjdGYzMng4X21hc2soKF9fdjE2c2YpKF9fbTUxMikoQSksIChpbnQpKGltbSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKV9tbTI1Nl91bmRlZmluZWRfcHMoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX2V4dHJhY3RmMzJ4OF9wcyhXLCBVLCBBLCBpbW0pIFwKICAoKF9fbTI1NilfX2J1aWx0aW5faWEzMl9leHRyYWN0ZjMyeDhfbWFzaygoX192MTZzZikoX19tNTEyKShBKSwgKGludCkoaW1tKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpKF9fbTI1NikoVyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X2V4dHJhY3RmMzJ4OF9wcyhVLCBBLCBpbW0pIFwKICAoKF9fbTI1NilfX2J1aWx0aW5faWEzMl9leHRyYWN0ZjMyeDhfbWFzaygoX192MTZzZikoX19tNTEyKShBKSwgKGludCkoaW1tKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX21tMjU2X3NldHplcm9fcHMoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSkpKQoKI2RlZmluZSBfbW01MTJfZXh0cmFjdGY2NHgyX3BkKEEsIGltbSkgXAogICgoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9leHRyYWN0ZjY0eDJfNTEyX21hc2soKF9fdjhkZikoX19tNTEyZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKGltbSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX3VuZGVmaW5lZF9wZCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEpKQoKI2RlZmluZSBfbW01MTJfbWFza19leHRyYWN0ZjY0eDJfcGQoVywgVSwgQSwgaW1tKSBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2V4dHJhY3RmNjR4Ml81MTJfbWFzaygoX192OGRmKShfX201MTJkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoaW1tKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikoX19tMTI4ZCkoVyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSkpKQoKI2RlZmluZSBfbW01MTJfbWFza3pfZXh0cmFjdGY2NHgyX3BkKFUsIEEsIGltbSkgXAogICgoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9leHRyYWN0ZjY0eDJfNTEyX21hc2soKF9fdjhkZikoX19tNTEyZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKGltbSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX3NldHplcm9fcGQoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSkpCgojZGVmaW5lIF9tbTUxMl9leHRyYWN0aTMyeDhfZXBpMzIoQSwgaW1tKSBcCiAgKChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX2V4dHJhY3RpMzJ4OF9tYXNrKChfX3YxNnNpKShfX201MTJpKShBKSwgKGludCkoaW1tKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9tbTI1Nl91bmRlZmluZWRfc2kyNTYoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEpKQoKI2RlZmluZSBfbW01MTJfbWFza19leHRyYWN0aTMyeDhfZXBpMzIoVywgVSwgQSwgaW1tKSBcCiAgKChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX2V4dHJhY3RpMzJ4OF9tYXNrKChfX3YxNnNpKShfX201MTJpKShBKSwgKGludCkoaW1tKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKShfX20yNTZpKShXKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X2V4dHJhY3RpMzJ4OF9lcGkzMihVLCBBLCBpbW0pIFwKICAoKF9fbTI1NmkpX19idWlsdGluX2lhMzJfZXh0cmFjdGkzMng4X21hc2soKF9fdjE2c2kpKF9fbTUxMmkpKEEpLCAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X3NldHplcm9fc2kyNTYoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpKSkKCiNkZWZpbmUgX21tNTEyX2V4dHJhY3RpNjR4Ml9lcGk2NChBLCBpbW0pIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfZXh0cmFjdGk2NHgyXzUxMl9tYXNrKChfX3Y4ZGkpKF9fbTUxMmkpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKGltbSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfbW1fdW5kZWZpbmVkX3NpMTI4KCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfZXh0cmFjdGk2NHgyX2VwaTY0KFcsIFUsIEEsIGltbSkgXAogICgoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9leHRyYWN0aTY0eDJfNTEyX21hc2soKF9fdjhkaSkoX19tNTEyaSkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKGltbSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpKF9fbTEyOGkpKFcpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X2V4dHJhY3RpNjR4Ml9lcGk2NChVLCBBLCBpbW0pIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfZXh0cmFjdGk2NHgyXzUxMl9tYXNrKChfX3Y4ZGkpKF9fbTUxMmkpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9zZXR6ZXJvX3NpMTI4KCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSkpKQoKI2RlZmluZSBfbW01MTJfaW5zZXJ0ZjMyeDgoQSwgQiwgaW1tKSBcCiAgKChfX201MTIpX19idWlsdGluX2lhMzJfaW5zZXJ0ZjMyeDgoKF9fdjE2c2YpKF9fbTUxMikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKShfX20yNTYpKEIpLCAoaW50KShpbW0pKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfaW5zZXJ0ZjMyeDgoVywgVSwgQSwgQiwgaW1tKSBcCiAgKChfX201MTIpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfNTEyKChfX21tYXNrMTYpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKV9tbTUxMl9pbnNlcnRmMzJ4OCgoQSksIChCKSwgKGltbSkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNmKShfX201MTIpKFcpKSkKCiNkZWZpbmUgX21tNTEyX21hc2t6X2luc2VydGYzMng4KFUsIEEsIEIsIGltbSkgXAogICgoX19tNTEyKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzUxMigoX19tbWFzazE2KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfaW5zZXJ0ZjMyeDgoKEEpLCAoQiksIChpbW0pKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzZilfbW01MTJfc2V0emVyb19wcygpKSkKCiNkZWZpbmUgX21tNTEyX2luc2VydGY2NHgyKEEsIEIsIGltbSkgXAogICgoX19tNTEyZClfX2J1aWx0aW5faWEzMl9pbnNlcnRmNjR4Ml81MTIoKF9fdjhkZikoX19tNTEyZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKEIpLCAoaW50KShpbW0pKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfaW5zZXJ0ZjY0eDIoVywgVSwgQSwgQiwgaW1tKSBcCiAgKChfX201MTJkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzUxMigoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKV9tbTUxMl9pbnNlcnRmNjR4MigoQSksIChCKSwgKGltbSkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRmKShfX201MTJkKShXKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9pbnNlcnRmNjR4MihVLCBBLCBCLCBpbW0pIFwKICAoKF9fbTUxMmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfNTEyKChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX2luc2VydGY2NHgyKChBKSwgKEIpLCAoaW1tKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGYpX21tNTEyX3NldHplcm9fcGQoKSkpCgojZGVmaW5lIF9tbTUxMl9pbnNlcnRpMzJ4OChBLCBCLCBpbW0pIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfaW5zZXJ0aTMyeDgoKF9fdjE2c2kpKF9fbTUxMmkpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpKF9fbTI1NmkpKEIpLCAoaW50KShpbW0pKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfaW5zZXJ0aTMyeDgoVywgVSwgQSwgQiwgaW1tKSBcCiAgKChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfNTEyKChfX21tYXNrMTYpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9pbnNlcnRpMzJ4OCgoQSksIChCKSwgKGltbSkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKShfX201MTJpKShXKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9pbnNlcnRpMzJ4OChVLCBBLCBCLCBpbW0pIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF81MTIoKF9fbW1hc2sxNikoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX21tNTEyX2luc2VydGkzMng4KChBKSwgKEIpLCAoaW1tKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX21tNTEyX3NldHplcm9fc2k1MTIoKSkpCgojZGVmaW5lIF9tbTUxMl9pbnNlcnRpNjR4MihBLCBCLCBpbW0pIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfaW5zZXJ0aTY0eDJfNTEyKChfX3Y4ZGkpKF9fbTUxMmkpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKShfX20xMjhpKShCKSwgKGludCkoaW1tKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX2luc2VydGk2NHgyKFcsIFUsIEEsIEIsIGltbSkgXAogICgoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzUxMigoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9pbnNlcnRpNjR4MigoQSksIChCKSwgKGltbSkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKShfX201MTJpKShXKSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrel9pbnNlcnRpNjR4MihVLCBBLCBCLCBpbW0pIFwKICAoKF9fbTUxMmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV81MTIoKF9fbW1hc2s4KShVKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfaW5zZXJ0aTY0eDIoKEEpLCAoQiksIChpbW0pKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhkaSlfbW01MTJfc2V0emVyb19zaTUxMigpKSkKCiNkZWZpbmUgX21tNTEyX21hc2tfZnBjbGFzc19wc19tYXNrKFUsIEEsIGltbSkgXAogICgoX19tbWFzazE2KV9fYnVpbHRpbl9pYTMyX2ZwY2xhc3NwczUxMl9tYXNrKChfX3YxNnNmKShfX201MTIpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoaW1tKSwgKF9fbW1hc2sxNikoVSkpKQoKI2RlZmluZSBfbW01MTJfZnBjbGFzc19wc19tYXNrKEEsIGltbSkgXAogICgoX19tbWFzazE2KV9fYnVpbHRpbl9pYTMyX2ZwY2xhc3NwczUxMl9tYXNrKChfX3YxNnNmKShfX201MTIpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoaW1tKSwgKF9fbW1hc2sxNiktMSkpCgojZGVmaW5lIF9tbTUxMl9tYXNrX2ZwY2xhc3NfcGRfbWFzayhVLCBBLCBpbW0pIFwKICAoKF9fbW1hc2s4KV9fYnVpbHRpbl9pYTMyX2ZwY2xhc3NwZDUxMl9tYXNrKChfX3Y4ZGYpKF9fbTUxMmQpKEEpLCAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpKSkKCiNkZWZpbmUgX21tNTEyX2ZwY2xhc3NfcGRfbWFzayhBLCBpbW0pIFwKICAoKF9fbW1hc2s4KV9fYnVpbHRpbl9pYTMyX2ZwY2xhc3NwZDUxMl9tYXNrKChfX3Y4ZGYpKF9fbTUxMmQpKEEpLCAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEpKQoKI2RlZmluZSBfbW1fZnBjbGFzc19zZF9tYXNrKEEsIGltbSkgXAogICgoX19tbWFzazgpX19idWlsdGluX2lhMzJfZnBjbGFzc3NkX21hc2soKF9fdjJkZikoX19tMTI4ZCkoQSksIChpbnQpKGltbSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSkpCgojZGVmaW5lIF9tbV9tYXNrX2ZwY2xhc3Nfc2RfbWFzayhVLCBBLCBpbW0pIFwKICAoKF9fbW1hc2s4KV9fYnVpbHRpbl9pYTMyX2ZwY2xhc3NzZF9tYXNrKChfX3YyZGYpKF9fbTEyOGQpKEEpLCAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpKSkKCiNkZWZpbmUgX21tX2ZwY2xhc3Nfc3NfbWFzayhBLCBpbW0pIFwKICAoKF9fbW1hc2s4KV9fYnVpbHRpbl9pYTMyX2ZwY2xhc3Nzc19tYXNrKChfX3Y0c2YpKF9fbTEyOCkoQSksIChpbnQpKGltbSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSkpCgojZGVmaW5lIF9tbV9tYXNrX2ZwY2xhc3Nfc3NfbWFzayhVLCBBLCBpbW0pIFwKICAoKF9fbW1hc2s4KV9fYnVpbHRpbl9pYTMyX2ZwY2xhc3Nzc19tYXNrKChfX3Y0c2YpKF9fbTEyOCkoQSksIChpbnQpKGltbSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSkpKQoKI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUzUxMgojdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTCgojZW5kaWYKAGh0bWludHJpbi5oAC8qID09PS0tLS0tLS0tIGludHJpbi5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwoKLyogT25seSBpbmNsdWRlIHRoaXMgaWYgd2UncmUgY29tcGlsaW5nIGZvciB0aGUgd2luZG93cyBwbGF0Zm9ybS4gKi8KI2lmbmRlZiBfTVNDX1ZFUgojaW5jbHVkZV9uZXh0IDxpbnRyaW4uaD4KI2Vsc2UKCiNpZm5kZWYgX19JTlRSSU5fSAojZGVmaW5lIF9fSU5UUklOX0gKCi8qIEZpcnN0IGluY2x1ZGUgdGhlIHN0YW5kYXJkIGludHJpbnNpY3MuICovCiNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pCiNpbmNsdWRlIDx4ODZpbnRyaW4uaD4KI2VuZGlmCgojaWYgZGVmaW5lZChfX2FybV9fKQojaW5jbHVkZSA8YXJtaW50ci5oPgojZW5kaWYKCiNpZiBkZWZpbmVkKF9fYWFyY2g2NF9fKQojaW5jbHVkZSA8YXJtNjRpbnRyLmg+CiNlbmRpZgoKLyogRm9yIHRoZSBkZWZpbml0aW9uIG9mIGptcF9idWYuICovCiNpZiBfX1NURENfSE9TVEVEX18KI2luY2x1ZGUgPHNldGptcC5oPgojZW5kaWYKCi8qIERlZmluZSB0aGUgZGVmYXVsdCBhdHRyaWJ1dGVzIGZvciB0aGUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZS4gKi8KI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCiNpZiBfX3g4Nl82NF9fCiNkZWZpbmUgX19MUFRSSU5UX1RZUEVfXyBfX2ludDY0CiNlbHNlCiNkZWZpbmUgX19MUFRSSU5UX1RZUEVfXyBsb25nCiNlbmRpZgoKI2lmZGVmIF9fY3BsdXNwbHVzCmV4dGVybiAiQyIgewojZW5kaWYKCiNpZiBkZWZpbmVkKF9fTU1YX18pCi8qIEFuZCB0aGUgcmFuZG9tIG9uZXMgdGhhdCBhcmVuJ3QgaW4gdGhvc2UgZmlsZXMuICovCl9fbTY0IF9tX2Zyb21fZmxvYXQoZmxvYXQpOwpmbG9hdCBfbV90b19mbG9hdChfX202NCk7CiNlbmRpZgoKLyogT3RoZXIgYXNzb3J0ZWQgaW5zdHJ1Y3Rpb24gaW50cmluc2ljcy4gKi8Kdm9pZCBfX2FkZGZzYnl0ZSh1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBjaGFyKTsKdm9pZCBfX2FkZGZzZHdvcmQodW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZyk7CnZvaWQgX19hZGRmc3dvcmQodW5zaWduZWQgbG9uZywgdW5zaWduZWQgc2hvcnQpOwp2b2lkIF9fY29kZV9zZWcoY29uc3QgY2hhciAqKTsKdm9pZCBfX2NwdWlkKGludFs0XSwgaW50KTsKdm9pZCBfX2NwdWlkZXgoaW50WzRdLCBpbnQsIGludCk7Cl9faW50NjQgX19lbXVsKGludCwgaW50KTsKdW5zaWduZWQgX19pbnQ2NCBfX2VtdWx1KHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50KTsKdW5zaWduZWQgaW50IF9fZ2V0Y2FsbGVyc2VmbGFncyh2b2lkKTsKdm9pZCBfX2hhbHQodm9pZCk7CnVuc2lnbmVkIGNoYXIgX19pbmJ5dGUodW5zaWduZWQgc2hvcnQpOwp2b2lkIF9faW5ieXRlc3RyaW5nKHVuc2lnbmVkIHNob3J0LCB1bnNpZ25lZCBjaGFyICosIHVuc2lnbmVkIGxvbmcpOwp2b2lkIF9faW5jZnNieXRlKHVuc2lnbmVkIGxvbmcpOwp2b2lkIF9faW5jZnNkd29yZCh1bnNpZ25lZCBsb25nKTsKdm9pZCBfX2luY2Zzd29yZCh1bnNpZ25lZCBsb25nKTsKdW5zaWduZWQgbG9uZyBfX2luZHdvcmQodW5zaWduZWQgc2hvcnQpOwp2b2lkIF9faW5kd29yZHN0cmluZyh1bnNpZ25lZCBzaG9ydCwgdW5zaWduZWQgbG9uZyAqLCB1bnNpZ25lZCBsb25nKTsKdm9pZCBfX2ludDJjKHZvaWQpOwp2b2lkIF9faW52bHBnKHZvaWQgKik7CnVuc2lnbmVkIHNob3J0IF9faW53b3JkKHVuc2lnbmVkIHNob3J0KTsKdm9pZCBfX2lud29yZHN0cmluZyh1bnNpZ25lZCBzaG9ydCwgdW5zaWduZWQgc2hvcnQgKiwgdW5zaWduZWQgbG9uZyk7CnZvaWQgX19saWR0KHZvaWQgKik7CnVuc2lnbmVkIF9faW50NjQgX19sbF9sc2hpZnQodW5zaWduZWQgX19pbnQ2NCwgaW50KTsKX19pbnQ2NCBfX2xsX3JzaGlmdChfX2ludDY0LCBpbnQpOwp2b2lkIF9fbW92c2IodW5zaWduZWQgY2hhciAqLCB1bnNpZ25lZCBjaGFyIGNvbnN0ICosIHNpemVfdCk7CnZvaWQgX19tb3ZzZCh1bnNpZ25lZCBsb25nICosIHVuc2lnbmVkIGxvbmcgY29uc3QgKiwgc2l6ZV90KTsKdm9pZCBfX21vdnN3KHVuc2lnbmVkIHNob3J0ICosIHVuc2lnbmVkIHNob3J0IGNvbnN0ICosIHNpemVfdCk7CnZvaWQgX19ub3Aodm9pZCk7CnZvaWQgX19udnJlZ19yZXN0b3JlX2ZlbmNlKHZvaWQpOwp2b2lkIF9fbnZyZWdfc2F2ZV9mZW5jZSh2b2lkKTsKdm9pZCBfX291dGJ5dGUodW5zaWduZWQgc2hvcnQsIHVuc2lnbmVkIGNoYXIpOwp2b2lkIF9fb3V0Ynl0ZXN0cmluZyh1bnNpZ25lZCBzaG9ydCwgdW5zaWduZWQgY2hhciAqLCB1bnNpZ25lZCBsb25nKTsKdm9pZCBfX291dGR3b3JkKHVuc2lnbmVkIHNob3J0LCB1bnNpZ25lZCBsb25nKTsKdm9pZCBfX291dGR3b3Jkc3RyaW5nKHVuc2lnbmVkIHNob3J0LCB1bnNpZ25lZCBsb25nICosIHVuc2lnbmVkIGxvbmcpOwp2b2lkIF9fb3V0d29yZCh1bnNpZ25lZCBzaG9ydCwgdW5zaWduZWQgc2hvcnQpOwp2b2lkIF9fb3V0d29yZHN0cmluZyh1bnNpZ25lZCBzaG9ydCwgdW5zaWduZWQgc2hvcnQgKiwgdW5zaWduZWQgbG9uZyk7CnVuc2lnbmVkIGxvbmcgX19yZWFkY3IwKHZvaWQpOwp1bnNpZ25lZCBsb25nIF9fcmVhZGNyMih2b2lkKTsKdW5zaWduZWQgX19MUFRSSU5UX1RZUEVfXyBfX3JlYWRjcjModm9pZCk7CnVuc2lnbmVkIGxvbmcgX19yZWFkY3I0KHZvaWQpOwp1bnNpZ25lZCBsb25nIF9fcmVhZGNyOCh2b2lkKTsKdW5zaWduZWQgaW50IF9fcmVhZGRyKHVuc2lnbmVkIGludCk7CiNpZmRlZiBfX2kzODZfXwp1bnNpZ25lZCBjaGFyIF9fcmVhZGZzYnl0ZSh1bnNpZ25lZCBsb25nKTsKdW5zaWduZWQgc2hvcnQgX19yZWFkZnN3b3JkKHVuc2lnbmVkIGxvbmcpOwp1bnNpZ25lZCBsb25nIF9fcmVhZGZzZHdvcmQodW5zaWduZWQgbG9uZyk7CnVuc2lnbmVkIF9faW50NjQgX19yZWFkZnNxd29yZCh1bnNpZ25lZCBsb25nKTsKI2VuZGlmCnVuc2lnbmVkIF9faW50NjQgX19yZWFkbXNyKHVuc2lnbmVkIGxvbmcpOwp1bnNpZ25lZCBfX2ludDY0IF9fcmVhZHBtYyh1bnNpZ25lZCBsb25nKTsKdW5zaWduZWQgbG9uZyBfX3NlZ21lbnRsaW1pdCh1bnNpZ25lZCBsb25nKTsKdm9pZCBfX3NpZHQodm9pZCAqKTsKdm9pZCBfX3N0b3NiKHVuc2lnbmVkIGNoYXIgKiwgdW5zaWduZWQgY2hhciwgc2l6ZV90KTsKdm9pZCBfX3N0b3NkKHVuc2lnbmVkIGxvbmcgKiwgdW5zaWduZWQgbG9uZywgc2l6ZV90KTsKdm9pZCBfX3N0b3N3KHVuc2lnbmVkIHNob3J0ICosIHVuc2lnbmVkIHNob3J0LCBzaXplX3QpOwp2b2lkIF9fc3ZtX2NsZ2kodm9pZCk7CnZvaWQgX19zdm1faW52bHBnYSh2b2lkICosIGludCk7CnZvaWQgX19zdm1fc2tpbml0KGludCk7CnZvaWQgX19zdm1fc3RnaSh2b2lkKTsKdm9pZCBfX3N2bV92bWxvYWQoc2l6ZV90KTsKdm9pZCBfX3N2bV92bXJ1bihzaXplX3QpOwp2b2lkIF9fc3ZtX3Ztc2F2ZShzaXplX3QpOwp2b2lkIF9fdWQyKHZvaWQpOwp1bnNpZ25lZCBfX2ludDY0IF9fdWxsX3JzaGlmdCh1bnNpZ25lZCBfX2ludDY0LCBpbnQpOwp2b2lkIF9fdm14X29mZih2b2lkKTsKdm9pZCBfX3ZteF92bXB0cnN0KHVuc2lnbmVkIF9faW50NjQgKik7CnZvaWQgX193YmludmQodm9pZCk7CnZvaWQgX193cml0ZWNyMCh1bnNpZ25lZCBpbnQpOwp2b2lkIF9fd3JpdGVjcjModW5zaWduZWQgX19JTlRQVFJfVFlQRV9fKTsKdm9pZCBfX3dyaXRlY3I0KHVuc2lnbmVkIGludCk7CnZvaWQgX193cml0ZWNyOCh1bnNpZ25lZCBpbnQpOwp2b2lkIF9fd3JpdGVkcih1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCk7CnZvaWQgX193cml0ZWZzYnl0ZSh1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBjaGFyKTsKdm9pZCBfX3dyaXRlZnNkd29yZCh1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKTsKdm9pZCBfX3dyaXRlZnNxd29yZCh1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBfX2ludDY0KTsKdm9pZCBfX3dyaXRlZnN3b3JkKHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIHNob3J0KTsKdm9pZCBfX3dyaXRlbXNyKHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIF9faW50NjQpOwp2b2lkICpfQWRkcmVzc09mUmV0dXJuQWRkcmVzcyh2b2lkKTsKdW5zaWduZWQgY2hhciBfQml0U2NhbkZvcndhcmQodW5zaWduZWQgbG9uZyAqX0luZGV4LCB1bnNpZ25lZCBsb25nIF9NYXNrKTsKdW5zaWduZWQgY2hhciBfQml0U2NhblJldmVyc2UodW5zaWduZWQgbG9uZyAqX0luZGV4LCB1bnNpZ25lZCBsb25nIF9NYXNrKTsKdW5zaWduZWQgY2hhciBfYml0dGVzdChsb25nIGNvbnN0ICosIGxvbmcpOwp1bnNpZ25lZCBjaGFyIF9iaXR0ZXN0YW5kY29tcGxlbWVudChsb25nICosIGxvbmcpOwp1bnNpZ25lZCBjaGFyIF9iaXR0ZXN0YW5kcmVzZXQobG9uZyAqLCBsb25nKTsKdW5zaWduZWQgY2hhciBfYml0dGVzdGFuZHNldChsb25nICosIGxvbmcpOwp2b2lkIF9fY2RlY2wgX2Rpc2FibGUodm9pZCk7CnZvaWQgX19jZGVjbCBfZW5hYmxlKHZvaWQpOwpsb25nIF9JbnRlcmxvY2tlZEFkZExhcmdlU3RhdGlzdGljKF9faW50NjQgdm9sYXRpbGUgKl9BZGRlbmQsIGxvbmcgX1ZhbHVlKTsKdW5zaWduZWQgY2hhciBfaW50ZXJsb2NrZWRiaXR0ZXN0YW5kcmVzZXQobG9uZyB2b2xhdGlsZSAqLCBsb25nKTsKdW5zaWduZWQgY2hhciBfaW50ZXJsb2NrZWRiaXR0ZXN0YW5kc2V0KGxvbmcgdm9sYXRpbGUgKiwgbG9uZyk7CnZvaWQgKl9JbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZVBvaW50ZXJfSExFQWNxdWlyZSh2b2lkICp2b2xhdGlsZSAqLCB2b2lkICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICopOwp2b2lkICpfSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2VQb2ludGVyX0hMRVJlbGVhc2Uodm9pZCAqdm9sYXRpbGUgKiwgdm9pZCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqKTsKbG9uZyBfSW50ZXJsb2NrZWRFeGNoYW5nZUFkZF9ITEVBY3F1aXJlKGxvbmcgdm9sYXRpbGUgKiwgbG9uZyk7CmxvbmcgX0ludGVybG9ja2VkRXhjaGFuZ2VBZGRfSExFUmVsZWFzZShsb25nIHZvbGF0aWxlICosIGxvbmcpOwpfX2ludDY0IF9JbnRlcmxvY2tlZEV4Y2hhbmdlQWRkNjRfSExFQWNxdWlyZShfX2ludDY0IHZvbGF0aWxlICosIF9faW50NjQpOwpfX2ludDY0IF9JbnRlcmxvY2tlZEV4Y2hhbmdlQWRkNjRfSExFUmVsZWFzZShfX2ludDY0IHZvbGF0aWxlICosIF9faW50NjQpOwp2b2lkIF9SZWFkQmFycmllcih2b2lkKTsKdm9pZCBfUmVhZFdyaXRlQmFycmllcih2b2lkKTsKdW5zaWduZWQgaW50IF9yb3J4X3UzMih1bnNpZ25lZCBpbnQsIGNvbnN0IHVuc2lnbmVkIGludCk7CmludCBfc2FyeF9pMzIoaW50LCB1bnNpZ25lZCBpbnQpOwojaWYgX19TVERDX0hPU1RFRF9fCmludCBfX2NkZWNsIF9zZXRqbXAoam1wX2J1Zik7CiNlbmRpZgp1bnNpZ25lZCBpbnQgX3NobHhfdTMyKHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50KTsKdW5zaWduZWQgaW50IF9zaHJ4X3UzMih1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCk7CnZvaWQgX1N0b3JlX0hMRVJlbGVhc2UobG9uZyB2b2xhdGlsZSAqLCBsb25nKTsKdm9pZCBfU3RvcmU2NF9ITEVSZWxlYXNlKF9faW50NjQgdm9sYXRpbGUgKiwgX19pbnQ2NCk7CnZvaWQgX1N0b3JlUG9pbnRlcl9ITEVSZWxlYXNlKHZvaWQgKnZvbGF0aWxlICosIHZvaWQgKik7CnZvaWQgX1dyaXRlQmFycmllcih2b2lkKTsKdW5zaWduZWQgX19pbnQzMiB4YmVnaW4odm9pZCk7CnZvaWQgX3hlbmQodm9pZCk7CgovKiBUaGVzZSBhZGRpdGlvbmFsIGludHJpbnNpY3MgYXJlIHR1cm5lZCBvbiBpbiB4NjQvYW1kNjQveDg2XzY0IG1vZGUuICovCiNpZmRlZiBfX3g4Nl82NF9fCnZvaWQgX19hZGRnc2J5dGUodW5zaWduZWQgbG9uZywgdW5zaWduZWQgY2hhcik7CnZvaWQgX19hZGRnc2R3b3JkKHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOwp2b2lkIF9fYWRkZ3Nxd29yZCh1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBfX2ludDY0KTsKdm9pZCBfX2FkZGdzd29yZCh1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBzaG9ydCk7CnZvaWQgX19mYXN0c3RvcmVmZW5jZSh2b2lkKTsKdm9pZCBfX2luY2dzYnl0ZSh1bnNpZ25lZCBsb25nKTsKdm9pZCBfX2luY2dzZHdvcmQodW5zaWduZWQgbG9uZyk7CnZvaWQgX19pbmNnc3F3b3JkKHVuc2lnbmVkIGxvbmcpOwp2b2lkIF9faW5jZ3N3b3JkKHVuc2lnbmVkIGxvbmcpOwp2b2lkIF9fbW92c3EodW5zaWduZWQgbG9uZyBsb25nICosIHVuc2lnbmVkIGxvbmcgbG9uZyBjb25zdCAqLCBzaXplX3QpOwp1bnNpZ25lZCBjaGFyIF9fcmVhZGdzYnl0ZSh1bnNpZ25lZCBsb25nKTsKdW5zaWduZWQgbG9uZyBfX3JlYWRnc2R3b3JkKHVuc2lnbmVkIGxvbmcpOwp1bnNpZ25lZCBfX2ludDY0IF9fcmVhZGdzcXdvcmQodW5zaWduZWQgbG9uZyk7CnVuc2lnbmVkIHNob3J0IF9fcmVhZGdzd29yZCh1bnNpZ25lZCBsb25nKTsKdW5zaWduZWQgX19pbnQ2NCBfX3NoaWZ0bGVmdDEyOCh1bnNpZ25lZCBfX2ludDY0IF9Mb3dQYXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIF9faW50NjQgX0hpZ2hQYXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgX1NoaWZ0KTsKdW5zaWduZWQgX19pbnQ2NCBfX3NoaWZ0cmlnaHQxMjgodW5zaWduZWQgX19pbnQ2NCBfTG93UGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgX19pbnQ2NCBfSGlnaFBhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgX1NoaWZ0KTsKdm9pZCBfX3N0b3NxKHVuc2lnbmVkIF9faW50NjQgKiwgdW5zaWduZWQgX19pbnQ2NCwgc2l6ZV90KTsKdW5zaWduZWQgY2hhciBfX3ZteF9vbih1bnNpZ25lZCBfX2ludDY0ICopOwp1bnNpZ25lZCBjaGFyIF9fdm14X3ZtY2xlYXIodW5zaWduZWQgX19pbnQ2NCAqKTsKdW5zaWduZWQgY2hhciBfX3ZteF92bWxhdW5jaCh2b2lkKTsKdW5zaWduZWQgY2hhciBfX3ZteF92bXB0cmxkKHVuc2lnbmVkIF9faW50NjQgKik7CnVuc2lnbmVkIGNoYXIgX192bXhfdm1yZWFkKHNpemVfdCwgc2l6ZV90ICopOwp1bnNpZ25lZCBjaGFyIF9fdm14X3ZtcmVzdW1lKHZvaWQpOwp1bnNpZ25lZCBjaGFyIF9fdm14X3Ztd3JpdGUoc2l6ZV90LCBzaXplX3QpOwp2b2lkIF9fd3JpdGVnc2J5dGUodW5zaWduZWQgbG9uZywgdW5zaWduZWQgY2hhcik7CnZvaWQgX193cml0ZWdzZHdvcmQodW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZyk7CnZvaWQgX193cml0ZWdzcXdvcmQodW5zaWduZWQgbG9uZywgdW5zaWduZWQgX19pbnQ2NCk7CnZvaWQgX193cml0ZWdzd29yZCh1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBzaG9ydCk7CnVuc2lnbmVkIGNoYXIgX2JpdHRlc3Q2NChfX2ludDY0IGNvbnN0ICosIF9faW50NjQpOwp1bnNpZ25lZCBjaGFyIF9iaXR0ZXN0YW5kY29tcGxlbWVudDY0KF9faW50NjQgKiwgX19pbnQ2NCk7CnVuc2lnbmVkIGNoYXIgX2JpdHRlc3RhbmRyZXNldDY0KF9faW50NjQgKiwgX19pbnQ2NCk7CnVuc2lnbmVkIGNoYXIgX2JpdHRlc3RhbmRzZXQ2NChfX2ludDY0ICosIF9faW50NjQpOwpsb25nIF9JbnRlcmxvY2tlZEFuZF9ucChsb25nIHZvbGF0aWxlICpfVmFsdWUsIGxvbmcgX01hc2spOwpzaG9ydCBfSW50ZXJsb2NrZWRBbmQxNl9ucChzaG9ydCB2b2xhdGlsZSAqX1ZhbHVlLCBzaG9ydCBfTWFzayk7Cl9faW50NjQgX0ludGVybG9ja2VkQW5kNjRfbnAoX19pbnQ2NCB2b2xhdGlsZSAqX1ZhbHVlLCBfX2ludDY0IF9NYXNrKTsKY2hhciBfSW50ZXJsb2NrZWRBbmQ4X25wKGNoYXIgdm9sYXRpbGUgKl9WYWx1ZSwgY2hhciBfTWFzayk7CnVuc2lnbmVkIGNoYXIgX2ludGVybG9ja2VkYml0dGVzdGFuZHJlc2V0NjQoX19pbnQ2NCB2b2xhdGlsZSAqLCBfX2ludDY0KTsKdW5zaWduZWQgY2hhciBfaW50ZXJsb2NrZWRiaXR0ZXN0YW5kc2V0NjQoX19pbnQ2NCB2b2xhdGlsZSAqLCBfX2ludDY0KTsKbG9uZyBfSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2VfbnAobG9uZyB2b2xhdGlsZSAqX0Rlc3RpbmF0aW9uLCBsb25nIF9FeGNoYW5nZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBfQ29tcGFyYW5kKTsKdW5zaWduZWQgY2hhciBfSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UxMjhfbnAoX19pbnQ2NCB2b2xhdGlsZSAqX0Rlc3RpbmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2ludDY0IF9FeGNoYW5nZUhpZ2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faW50NjQgX0V4Y2hhbmdlTG93LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2ludDY0ICpfQ29tcGFyYW5kUmVzdWx0KTsKc2hvcnQgX0ludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlMTZfbnAoc2hvcnQgdm9sYXRpbGUgKl9EZXN0aW5hdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnQgX0V4Y2hhbmdlLCBzaG9ydCBfQ29tcGFyYW5kKTsKX19pbnQ2NCBfSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2U2NF9ucChfX2ludDY0IHZvbGF0aWxlICpfRGVzdGluYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19pbnQ2NCBfRXhjaGFuZ2UsIF9faW50NjQgX0NvbXBhcmFuZCk7CnZvaWQgKl9JbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZVBvaW50ZXJfbnAodm9pZCAqdm9sYXRpbGUgKl9EZXN0aW5hdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpfRXhjaGFuZ2UsIHZvaWQgKl9Db21wYXJhbmQpOwpsb25nIF9JbnRlcmxvY2tlZE9yX25wKGxvbmcgdm9sYXRpbGUgKl9WYWx1ZSwgbG9uZyBfTWFzayk7CnNob3J0IF9JbnRlcmxvY2tlZE9yMTZfbnAoc2hvcnQgdm9sYXRpbGUgKl9WYWx1ZSwgc2hvcnQgX01hc2spOwpfX2ludDY0IF9JbnRlcmxvY2tlZE9yNjRfbnAoX19pbnQ2NCB2b2xhdGlsZSAqX1ZhbHVlLCBfX2ludDY0IF9NYXNrKTsKY2hhciBfSW50ZXJsb2NrZWRPcjhfbnAoY2hhciB2b2xhdGlsZSAqX1ZhbHVlLCBjaGFyIF9NYXNrKTsKbG9uZyBfSW50ZXJsb2NrZWRYb3JfbnAobG9uZyB2b2xhdGlsZSAqX1ZhbHVlLCBsb25nIF9NYXNrKTsKc2hvcnQgX0ludGVybG9ja2VkWG9yMTZfbnAoc2hvcnQgdm9sYXRpbGUgKl9WYWx1ZSwgc2hvcnQgX01hc2spOwpfX2ludDY0IF9JbnRlcmxvY2tlZFhvcjY0X25wKF9faW50NjQgdm9sYXRpbGUgKl9WYWx1ZSwgX19pbnQ2NCBfTWFzayk7CmNoYXIgX0ludGVybG9ja2VkWG9yOF9ucChjaGFyIHZvbGF0aWxlICpfVmFsdWUsIGNoYXIgX01hc2spOwp1bnNpZ25lZCBfX2ludDY0IF9yb3J4X3U2NCh1bnNpZ25lZCBfX2ludDY0LCBjb25zdCB1bnNpZ25lZCBpbnQpOwpfX2ludDY0IF9zYXJ4X2k2NChfX2ludDY0LCB1bnNpZ25lZCBpbnQpOwp1bnNpZ25lZCBfX2ludDY0IF9zaGx4X3U2NCh1bnNpZ25lZCBfX2ludDY0LCB1bnNpZ25lZCBpbnQpOwp1bnNpZ25lZCBfX2ludDY0IF9zaHJ4X3U2NCh1bnNpZ25lZCBfX2ludDY0LCB1bnNpZ25lZCBpbnQpOwpfX2ludDY0IF9fbXVsaChfX2ludDY0LCBfX2ludDY0KTsKdW5zaWduZWQgX19pbnQ2NCBfX3VtdWxoKHVuc2lnbmVkIF9faW50NjQsIHVuc2lnbmVkIF9faW50NjQpOwpfX2ludDY0IF9tdWwxMjgoX19pbnQ2NCwgX19pbnQ2NCwgX19pbnQ2NCopOwp1bnNpZ25lZCBfX2ludDY0IF91bXVsMTI4KHVuc2lnbmVkIF9faW50NjQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgX19pbnQ2NCwKICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBfX2ludDY0Kik7CgojZW5kaWYgLyogX194ODZfNjRfXyAqLwoKI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fYWFyY2g2NF9fKQoKdW5zaWduZWQgY2hhciBfQml0U2NhbkZvcndhcmQ2NCh1bnNpZ25lZCBsb25nICpfSW5kZXgsIHVuc2lnbmVkIF9faW50NjQgX01hc2spOwp1bnNpZ25lZCBjaGFyIF9CaXRTY2FuUmV2ZXJzZTY0KHVuc2lnbmVkIGxvbmcgKl9JbmRleCwgdW5zaWduZWQgX19pbnQ2NCBfTWFzayk7CgojZW5kaWYKCiNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykKX19pbnQ2NCBfSW50ZXJsb2NrZWREZWNyZW1lbnQ2NChfX2ludDY0IHZvbGF0aWxlICpfQWRkZW5kKTsKX19pbnQ2NCBfSW50ZXJsb2NrZWRFeGNoYW5nZTY0KF9faW50NjQgdm9sYXRpbGUgKl9UYXJnZXQsIF9faW50NjQgX1ZhbHVlKTsKX19pbnQ2NCBfSW50ZXJsb2NrZWRFeGNoYW5nZUFkZDY0KF9faW50NjQgdm9sYXRpbGUgKl9BZGRlbmQsIF9faW50NjQgX1ZhbHVlKTsKX19pbnQ2NCBfSW50ZXJsb2NrZWRFeGNoYW5nZVN1YjY0KF9faW50NjQgdm9sYXRpbGUgKl9TdWJlbmQsIF9faW50NjQgX1ZhbHVlKTsKX19pbnQ2NCBfSW50ZXJsb2NrZWRJbmNyZW1lbnQ2NChfX2ludDY0IHZvbGF0aWxlICpfQWRkZW5kKTsKX19pbnQ2NCBfSW50ZXJsb2NrZWRPcjY0KF9faW50NjQgdm9sYXRpbGUgKl9WYWx1ZSwgX19pbnQ2NCBfTWFzayk7Cl9faW50NjQgX0ludGVybG9ja2VkWG9yNjQoX19pbnQ2NCB2b2xhdGlsZSAqX1ZhbHVlLCBfX2ludDY0IF9NYXNrKTsKX19pbnQ2NCBfSW50ZXJsb2NrZWRBbmQ2NChfX2ludDY0IHZvbGF0aWxlICpfVmFsdWUsIF9faW50NjQgX01hc2spOwoKI2VuZGlmCgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXAp8KiBJbnRlcmxvY2tlZCBFeGNoYW5nZSBBZGQKXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KI2lmIGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykKY2hhciBfSW50ZXJsb2NrZWRFeGNoYW5nZUFkZDhfYWNxKGNoYXIgdm9sYXRpbGUgKl9BZGRlbmQsIGNoYXIgX1ZhbHVlKTsKY2hhciBfSW50ZXJsb2NrZWRFeGNoYW5nZUFkZDhfbmYoY2hhciB2b2xhdGlsZSAqX0FkZGVuZCwgY2hhciBfVmFsdWUpOwpjaGFyIF9JbnRlcmxvY2tlZEV4Y2hhbmdlQWRkOF9yZWwoY2hhciB2b2xhdGlsZSAqX0FkZGVuZCwgY2hhciBfVmFsdWUpOwpzaG9ydCBfSW50ZXJsb2NrZWRFeGNoYW5nZUFkZDE2X2FjcShzaG9ydCB2b2xhdGlsZSAqX0FkZGVuZCwgc2hvcnQgX1ZhbHVlKTsKc2hvcnQgX0ludGVybG9ja2VkRXhjaGFuZ2VBZGQxNl9uZihzaG9ydCB2b2xhdGlsZSAqX0FkZGVuZCwgc2hvcnQgX1ZhbHVlKTsKc2hvcnQgX0ludGVybG9ja2VkRXhjaGFuZ2VBZGQxNl9yZWwoc2hvcnQgdm9sYXRpbGUgKl9BZGRlbmQsIHNob3J0IF9WYWx1ZSk7CmxvbmcgX0ludGVybG9ja2VkRXhjaGFuZ2VBZGRfYWNxKGxvbmcgdm9sYXRpbGUgKl9BZGRlbmQsIGxvbmcgX1ZhbHVlKTsKbG9uZyBfSW50ZXJsb2NrZWRFeGNoYW5nZUFkZF9uZihsb25nIHZvbGF0aWxlICpfQWRkZW5kLCBsb25nIF9WYWx1ZSk7CmxvbmcgX0ludGVybG9ja2VkRXhjaGFuZ2VBZGRfcmVsKGxvbmcgdm9sYXRpbGUgKl9BZGRlbmQsIGxvbmcgX1ZhbHVlKTsKX19pbnQ2NCBfSW50ZXJsb2NrZWRFeGNoYW5nZUFkZDY0X2FjcShfX2ludDY0IHZvbGF0aWxlICpfQWRkZW5kLCBfX2ludDY0IF9WYWx1ZSk7Cl9faW50NjQgX0ludGVybG9ja2VkRXhjaGFuZ2VBZGQ2NF9uZihfX2ludDY0IHZvbGF0aWxlICpfQWRkZW5kLCBfX2ludDY0IF9WYWx1ZSk7Cl9faW50NjQgX0ludGVybG9ja2VkRXhjaGFuZ2VBZGQ2NF9yZWwoX19pbnQ2NCB2b2xhdGlsZSAqX0FkZGVuZCwgX19pbnQ2NCBfVmFsdWUpOwojZW5kaWYKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlwKfCogSW50ZXJsb2NrZWQgSW5jcmVtZW50ClwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiNpZiBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19hYXJjaDY0X18pCnNob3J0IF9JbnRlcmxvY2tlZEluY3JlbWVudDE2X2FjcShzaG9ydCB2b2xhdGlsZSAqX1ZhbHVlKTsKc2hvcnQgX0ludGVybG9ja2VkSW5jcmVtZW50MTZfbmYoc2hvcnQgdm9sYXRpbGUgKl9WYWx1ZSk7CnNob3J0IF9JbnRlcmxvY2tlZEluY3JlbWVudDE2X3JlbChzaG9ydCB2b2xhdGlsZSAqX1ZhbHVlKTsKbG9uZyBfSW50ZXJsb2NrZWRJbmNyZW1lbnRfYWNxKGxvbmcgdm9sYXRpbGUgKl9WYWx1ZSk7CmxvbmcgX0ludGVybG9ja2VkSW5jcmVtZW50X25mKGxvbmcgdm9sYXRpbGUgKl9WYWx1ZSk7CmxvbmcgX0ludGVybG9ja2VkSW5jcmVtZW50X3JlbChsb25nIHZvbGF0aWxlICpfVmFsdWUpOwpfX2ludDY0IF9JbnRlcmxvY2tlZEluY3JlbWVudDY0X2FjcShfX2ludDY0IHZvbGF0aWxlICpfVmFsdWUpOwpfX2ludDY0IF9JbnRlcmxvY2tlZEluY3JlbWVudDY0X25mKF9faW50NjQgdm9sYXRpbGUgKl9WYWx1ZSk7Cl9faW50NjQgX0ludGVybG9ja2VkSW5jcmVtZW50NjRfcmVsKF9faW50NjQgdm9sYXRpbGUgKl9WYWx1ZSk7CiNlbmRpZgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXAp8KiBJbnRlcmxvY2tlZCBEZWNyZW1lbnQKXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KI2lmIGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykKc2hvcnQgX0ludGVybG9ja2VkRGVjcmVtZW50MTZfYWNxKHNob3J0IHZvbGF0aWxlICpfVmFsdWUpOwpzaG9ydCBfSW50ZXJsb2NrZWREZWNyZW1lbnQxNl9uZihzaG9ydCB2b2xhdGlsZSAqX1ZhbHVlKTsKc2hvcnQgX0ludGVybG9ja2VkRGVjcmVtZW50MTZfcmVsKHNob3J0IHZvbGF0aWxlICpfVmFsdWUpOwpsb25nIF9JbnRlcmxvY2tlZERlY3JlbWVudF9hY3EobG9uZyB2b2xhdGlsZSAqX1ZhbHVlKTsKbG9uZyBfSW50ZXJsb2NrZWREZWNyZW1lbnRfbmYobG9uZyB2b2xhdGlsZSAqX1ZhbHVlKTsKbG9uZyBfSW50ZXJsb2NrZWREZWNyZW1lbnRfcmVsKGxvbmcgdm9sYXRpbGUgKl9WYWx1ZSk7Cl9faW50NjQgX0ludGVybG9ja2VkRGVjcmVtZW50NjRfYWNxKF9faW50NjQgdm9sYXRpbGUgKl9WYWx1ZSk7Cl9faW50NjQgX0ludGVybG9ja2VkRGVjcmVtZW50NjRfbmYoX19pbnQ2NCB2b2xhdGlsZSAqX1ZhbHVlKTsKX19pbnQ2NCBfSW50ZXJsb2NrZWREZWNyZW1lbnQ2NF9yZWwoX19pbnQ2NCB2b2xhdGlsZSAqX1ZhbHVlKTsKI2VuZGlmCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcCnwqIEludGVybG9ja2VkIEFuZApcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwojaWYgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fYWFyY2g2NF9fKQpjaGFyIF9JbnRlcmxvY2tlZEFuZDhfYWNxKGNoYXIgdm9sYXRpbGUgKl9WYWx1ZSwgY2hhciBfTWFzayk7CmNoYXIgX0ludGVybG9ja2VkQW5kOF9uZihjaGFyIHZvbGF0aWxlICpfVmFsdWUsIGNoYXIgX01hc2spOwpjaGFyIF9JbnRlcmxvY2tlZEFuZDhfcmVsKGNoYXIgdm9sYXRpbGUgKl9WYWx1ZSwgY2hhciBfTWFzayk7CnNob3J0IF9JbnRlcmxvY2tlZEFuZDE2X2FjcShzaG9ydCB2b2xhdGlsZSAqX1ZhbHVlLCBzaG9ydCBfTWFzayk7CnNob3J0IF9JbnRlcmxvY2tlZEFuZDE2X25mKHNob3J0IHZvbGF0aWxlICpfVmFsdWUsIHNob3J0IF9NYXNrKTsKc2hvcnQgX0ludGVybG9ja2VkQW5kMTZfcmVsKHNob3J0IHZvbGF0aWxlICpfVmFsdWUsIHNob3J0IF9NYXNrKTsKbG9uZyBfSW50ZXJsb2NrZWRBbmRfYWNxKGxvbmcgdm9sYXRpbGUgKl9WYWx1ZSwgbG9uZyBfTWFzayk7CmxvbmcgX0ludGVybG9ja2VkQW5kX25mKGxvbmcgdm9sYXRpbGUgKl9WYWx1ZSwgbG9uZyBfTWFzayk7CmxvbmcgX0ludGVybG9ja2VkQW5kX3JlbChsb25nIHZvbGF0aWxlICpfVmFsdWUsIGxvbmcgX01hc2spOwpfX2ludDY0IF9JbnRlcmxvY2tlZEFuZDY0X2FjcShfX2ludDY0IHZvbGF0aWxlICpfVmFsdWUsIF9faW50NjQgX01hc2spOwpfX2ludDY0IF9JbnRlcmxvY2tlZEFuZDY0X25mKF9faW50NjQgdm9sYXRpbGUgKl9WYWx1ZSwgX19pbnQ2NCBfTWFzayk7Cl9faW50NjQgX0ludGVybG9ja2VkQW5kNjRfcmVsKF9faW50NjQgdm9sYXRpbGUgKl9WYWx1ZSwgX19pbnQ2NCBfTWFzayk7CiNlbmRpZgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXAp8KiBCaXQgQ291bnRpbmcgYW5kIFRlc3RpbmcKXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KI2lmIGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykKdW5zaWduZWQgY2hhciBfaW50ZXJsb2NrZWRiaXR0ZXN0YW5kc2V0X2FjcShsb25nIHZvbGF0aWxlICpfQml0QmFzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIF9CaXRQb3MpOwp1bnNpZ25lZCBjaGFyIF9pbnRlcmxvY2tlZGJpdHRlc3RhbmRzZXRfbmYobG9uZyB2b2xhdGlsZSAqX0JpdEJhc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIF9CaXRQb3MpOwp1bnNpZ25lZCBjaGFyIF9pbnRlcmxvY2tlZGJpdHRlc3RhbmRzZXRfcmVsKGxvbmcgdm9sYXRpbGUgKl9CaXRCYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgX0JpdFBvcyk7CnVuc2lnbmVkIGNoYXIgX2ludGVybG9ja2VkYml0dGVzdGFuZHJlc2V0X2FjcShsb25nIHZvbGF0aWxlICpfQml0QmFzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgX0JpdFBvcyk7CnVuc2lnbmVkIGNoYXIgX2ludGVybG9ja2VkYml0dGVzdGFuZHJlc2V0X25mKGxvbmcgdm9sYXRpbGUgKl9CaXRCYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIF9CaXRQb3MpOwp1bnNpZ25lZCBjaGFyIF9pbnRlcmxvY2tlZGJpdHRlc3RhbmRyZXNldF9yZWwobG9uZyB2b2xhdGlsZSAqX0JpdEJhc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIF9CaXRQb3MpOwojZW5kaWYKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlwKfCogSW50ZXJsb2NrZWQgT3IKXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KI2lmIGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykKY2hhciBfSW50ZXJsb2NrZWRPcjhfYWNxKGNoYXIgdm9sYXRpbGUgKl9WYWx1ZSwgY2hhciBfTWFzayk7CmNoYXIgX0ludGVybG9ja2VkT3I4X25mKGNoYXIgdm9sYXRpbGUgKl9WYWx1ZSwgY2hhciBfTWFzayk7CmNoYXIgX0ludGVybG9ja2VkT3I4X3JlbChjaGFyIHZvbGF0aWxlICpfVmFsdWUsIGNoYXIgX01hc2spOwpzaG9ydCBfSW50ZXJsb2NrZWRPcjE2X2FjcShzaG9ydCB2b2xhdGlsZSAqX1ZhbHVlLCBzaG9ydCBfTWFzayk7CnNob3J0IF9JbnRlcmxvY2tlZE9yMTZfbmYoc2hvcnQgdm9sYXRpbGUgKl9WYWx1ZSwgc2hvcnQgX01hc2spOwpzaG9ydCBfSW50ZXJsb2NrZWRPcjE2X3JlbChzaG9ydCB2b2xhdGlsZSAqX1ZhbHVlLCBzaG9ydCBfTWFzayk7CmxvbmcgX0ludGVybG9ja2VkT3JfYWNxKGxvbmcgdm9sYXRpbGUgKl9WYWx1ZSwgbG9uZyBfTWFzayk7CmxvbmcgX0ludGVybG9ja2VkT3JfbmYobG9uZyB2b2xhdGlsZSAqX1ZhbHVlLCBsb25nIF9NYXNrKTsKbG9uZyBfSW50ZXJsb2NrZWRPcl9yZWwobG9uZyB2b2xhdGlsZSAqX1ZhbHVlLCBsb25nIF9NYXNrKTsKX19pbnQ2NCBfSW50ZXJsb2NrZWRPcjY0X2FjcShfX2ludDY0IHZvbGF0aWxlICpfVmFsdWUsIF9faW50NjQgX01hc2spOwpfX2ludDY0IF9JbnRlcmxvY2tlZE9yNjRfbmYoX19pbnQ2NCB2b2xhdGlsZSAqX1ZhbHVlLCBfX2ludDY0IF9NYXNrKTsKX19pbnQ2NCBfSW50ZXJsb2NrZWRPcjY0X3JlbChfX2ludDY0IHZvbGF0aWxlICpfVmFsdWUsIF9faW50NjQgX01hc2spOwojZW5kaWYKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlwKfCogSW50ZXJsb2NrZWQgWG9yClwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiNpZiBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19hYXJjaDY0X18pCmNoYXIgX0ludGVybG9ja2VkWG9yOF9hY3EoY2hhciB2b2xhdGlsZSAqX1ZhbHVlLCBjaGFyIF9NYXNrKTsKY2hhciBfSW50ZXJsb2NrZWRYb3I4X25mKGNoYXIgdm9sYXRpbGUgKl9WYWx1ZSwgY2hhciBfTWFzayk7CmNoYXIgX0ludGVybG9ja2VkWG9yOF9yZWwoY2hhciB2b2xhdGlsZSAqX1ZhbHVlLCBjaGFyIF9NYXNrKTsKc2hvcnQgX0ludGVybG9ja2VkWG9yMTZfYWNxKHNob3J0IHZvbGF0aWxlICpfVmFsdWUsIHNob3J0IF9NYXNrKTsKc2hvcnQgX0ludGVybG9ja2VkWG9yMTZfbmYoc2hvcnQgdm9sYXRpbGUgKl9WYWx1ZSwgc2hvcnQgX01hc2spOwpzaG9ydCBfSW50ZXJsb2NrZWRYb3IxNl9yZWwoc2hvcnQgdm9sYXRpbGUgKl9WYWx1ZSwgc2hvcnQgX01hc2spOwpsb25nIF9JbnRlcmxvY2tlZFhvcl9hY3EobG9uZyB2b2xhdGlsZSAqX1ZhbHVlLCBsb25nIF9NYXNrKTsKbG9uZyBfSW50ZXJsb2NrZWRYb3JfbmYobG9uZyB2b2xhdGlsZSAqX1ZhbHVlLCBsb25nIF9NYXNrKTsKbG9uZyBfSW50ZXJsb2NrZWRYb3JfcmVsKGxvbmcgdm9sYXRpbGUgKl9WYWx1ZSwgbG9uZyBfTWFzayk7Cl9faW50NjQgX0ludGVybG9ja2VkWG9yNjRfYWNxKF9faW50NjQgdm9sYXRpbGUgKl9WYWx1ZSwgX19pbnQ2NCBfTWFzayk7Cl9faW50NjQgX0ludGVybG9ja2VkWG9yNjRfbmYoX19pbnQ2NCB2b2xhdGlsZSAqX1ZhbHVlLCBfX2ludDY0IF9NYXNrKTsKX19pbnQ2NCBfSW50ZXJsb2NrZWRYb3I2NF9yZWwoX19pbnQ2NCB2b2xhdGlsZSAqX1ZhbHVlLCBfX2ludDY0IF9NYXNrKTsKI2VuZGlmCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcCnwqIEludGVybG9ja2VkIEV4Y2hhbmdlClwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiNpZiBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19hYXJjaDY0X18pCmNoYXIgX0ludGVybG9ja2VkRXhjaGFuZ2U4X2FjcShjaGFyIHZvbGF0aWxlICpfVGFyZ2V0LCBjaGFyIF9WYWx1ZSk7CmNoYXIgX0ludGVybG9ja2VkRXhjaGFuZ2U4X25mKGNoYXIgdm9sYXRpbGUgKl9UYXJnZXQsIGNoYXIgX1ZhbHVlKTsKY2hhciBfSW50ZXJsb2NrZWRFeGNoYW5nZThfcmVsKGNoYXIgdm9sYXRpbGUgKl9UYXJnZXQsIGNoYXIgX1ZhbHVlKTsKc2hvcnQgX0ludGVybG9ja2VkRXhjaGFuZ2UxNl9hY3Eoc2hvcnQgdm9sYXRpbGUgKl9UYXJnZXQsIHNob3J0IF9WYWx1ZSk7CnNob3J0IF9JbnRlcmxvY2tlZEV4Y2hhbmdlMTZfbmYoc2hvcnQgdm9sYXRpbGUgKl9UYXJnZXQsIHNob3J0IF9WYWx1ZSk7CnNob3J0IF9JbnRlcmxvY2tlZEV4Y2hhbmdlMTZfcmVsKHNob3J0IHZvbGF0aWxlICpfVGFyZ2V0LCBzaG9ydCBfVmFsdWUpOwpsb25nIF9JbnRlcmxvY2tlZEV4Y2hhbmdlX2FjcShsb25nIHZvbGF0aWxlICpfVGFyZ2V0LCBsb25nIF9WYWx1ZSk7CmxvbmcgX0ludGVybG9ja2VkRXhjaGFuZ2VfbmYobG9uZyB2b2xhdGlsZSAqX1RhcmdldCwgbG9uZyBfVmFsdWUpOwpsb25nIF9JbnRlcmxvY2tlZEV4Y2hhbmdlX3JlbChsb25nIHZvbGF0aWxlICpfVGFyZ2V0LCBsb25nIF9WYWx1ZSk7Cl9faW50NjQgX0ludGVybG9ja2VkRXhjaGFuZ2U2NF9hY3EoX19pbnQ2NCB2b2xhdGlsZSAqX1RhcmdldCwgX19pbnQ2NCBfVmFsdWUpOwpfX2ludDY0IF9JbnRlcmxvY2tlZEV4Y2hhbmdlNjRfbmYoX19pbnQ2NCB2b2xhdGlsZSAqX1RhcmdldCwgX19pbnQ2NCBfVmFsdWUpOwpfX2ludDY0IF9JbnRlcmxvY2tlZEV4Y2hhbmdlNjRfcmVsKF9faW50NjQgdm9sYXRpbGUgKl9UYXJnZXQsIF9faW50NjQgX1ZhbHVlKTsKI2VuZGlmCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcCnwqIEludGVybG9ja2VkIENvbXBhcmUgRXhjaGFuZ2UKXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KI2lmIGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykKY2hhciBfSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2U4X2FjcShjaGFyIHZvbGF0aWxlICpfRGVzdGluYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBfRXhjaGFuZ2UsIGNoYXIgX0NvbXBhcmFuZCk7CmNoYXIgX0ludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlOF9uZihjaGFyIHZvbGF0aWxlICpfRGVzdGluYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBfRXhjaGFuZ2UsIGNoYXIgX0NvbXBhcmFuZCk7CmNoYXIgX0ludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlOF9yZWwoY2hhciB2b2xhdGlsZSAqX0Rlc3RpbmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgX0V4Y2hhbmdlLCBjaGFyIF9Db21wYXJhbmQpOwpzaG9ydCBfSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UxNl9hY3Eoc2hvcnQgdm9sYXRpbGUgKl9EZXN0aW5hdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnQgX0V4Y2hhbmdlLCBzaG9ydCBfQ29tcGFyYW5kKTsKc2hvcnQgX0ludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlMTZfbmYoc2hvcnQgdm9sYXRpbGUgKl9EZXN0aW5hdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnQgX0V4Y2hhbmdlLCBzaG9ydCBfQ29tcGFyYW5kKTsKc2hvcnQgX0ludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlMTZfcmVsKHNob3J0IHZvbGF0aWxlICpfRGVzdGluYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0IF9FeGNoYW5nZSwgc2hvcnQgX0NvbXBhcmFuZCk7CmxvbmcgX0ludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlX2FjcShsb25nIHZvbGF0aWxlICpfRGVzdGluYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgX0V4Y2hhbmdlLCBsb25nIF9Db21wYXJhbmQpOwpsb25nIF9JbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZV9uZihsb25nIHZvbGF0aWxlICpfRGVzdGluYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgX0V4Y2hhbmdlLCBsb25nIF9Db21wYXJhbmQpOwpsb25nIF9JbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZV9yZWwobG9uZyB2b2xhdGlsZSAqX0Rlc3RpbmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIF9FeGNoYW5nZSwgbG9uZyBfQ29tcGFyYW5kKTsKX19pbnQ2NCBfSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2U2NF9hY3EoX19pbnQ2NCB2b2xhdGlsZSAqX0Rlc3RpbmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2ludDY0IF9FeGNoYW5nZSwgX19pbnQ2NCBfQ29tcGFyYW5kKTsKX19pbnQ2NCBfSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2U2NF9uZihfX2ludDY0IHZvbGF0aWxlICpfRGVzdGluYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faW50NjQgX0V4Y2hhbmdlLCBfX2ludDY0IF9Db21wYXJhbmQpOwpfX2ludDY0IF9JbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZTY0X3JlbChfX2ludDY0IHZvbGF0aWxlICpfRGVzdGluYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faW50NjQgX0V4Y2hhbmdlLCBfX2ludDY0IF9Db21wYXJhbmQpOwojZW5kaWYKI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykKdW5zaWduZWQgY2hhciBfSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UxMjgoX19pbnQ2NCB2b2xhdGlsZSAqX0Rlc3RpbmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2ludDY0IF9FeGNoYW5nZUhpZ2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faW50NjQgX0V4Y2hhbmdlTG93LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2ludDY0ICpfQ29tcGFyYW5kUmVzdWx0KTsKI2VuZGlmCiNpZiBkZWZpbmVkKF9fYWFyY2g2NF9fKQp1bnNpZ25lZCBjaGFyIF9JbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZTEyOF9hY3EoX19pbnQ2NCB2b2xhdGlsZSAqX0Rlc3RpbmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19pbnQ2NCBfRXhjaGFuZ2VIaWdoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19pbnQ2NCBfRXhjaGFuZ2VMb3csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2ludDY0ICpfQ29tcGFyYW5kUmVzdWx0KTsKdW5zaWduZWQgY2hhciBfSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UxMjhfbmYoX19pbnQ2NCB2b2xhdGlsZSAqX0Rlc3RpbmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2ludDY0IF9FeGNoYW5nZUhpZ2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faW50NjQgX0V4Y2hhbmdlTG93LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2ludDY0ICpfQ29tcGFyYW5kUmVzdWx0KTsKdW5zaWduZWQgY2hhciBfSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UxMjhfcmVsKF9faW50NjQgdm9sYXRpbGUgKl9EZXN0aW5hdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faW50NjQgX0V4Y2hhbmdlSGlnaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faW50NjQgX0V4Y2hhbmdlTG93LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19pbnQ2NCAqX0NvbXBhcmFuZFJlc3VsdCk7CiNlbmRpZgoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlwKfCogbW92cywgc3RvcwpcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwojaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKQpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUyBfX21vdnNiKHVuc2lnbmVkIGNoYXIgKl9fZHN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgY29uc3QgKl9fc3JjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24pIHsKI2lmIGRlZmluZWQoX194ODZfNjRfXykKICBfX2FzbV9fIF9fdm9sYXRpbGVfXygicmVwIG1vdnNiIgogICAgICAgICAgICAgICAgICAgICAgIDogIitEIihfX2RzdCksICIrUyIoX19zcmMpLCAiK2MiKF9fbikKICAgICAgICAgICAgICAgICAgICAgICA6CiAgICAgICAgICAgICAgICAgICAgICAgOiAibWVtb3J5Iik7CiNlbHNlCiAgX19hc21fXyBfX3ZvbGF0aWxlX18oInhjaGcgeyUlZXNpLCAlMXwlMSwgZXNpfVxuIgogICAgICAgICAgICAgICAgICAgICAgICJyZXAgbW92c2JcbiIKICAgICAgICAgICAgICAgICAgICAgICAieGNoZyB7JSVlc2ksICUxfCUxLCBlc2l9IgogICAgICAgICAgICAgICAgICAgICAgIDogIitEIihfX2RzdCksICIrciIoX19zcmMpLCAiK2MiKF9fbikKICAgICAgICAgICAgICAgICAgICAgICA6CiAgICAgICAgICAgICAgICAgICAgICAgOiAibWVtb3J5Iik7CiNlbmRpZgp9CnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTIF9fbW92c2QodW5zaWduZWQgbG9uZyAqX19kc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBjb25zdCAqX19zcmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbikgewojaWYgZGVmaW5lZChfX3g4Nl82NF9fKQogIF9fYXNtX18gX192b2xhdGlsZV9fKCJyZXAgbW92c3tsfGR9IgogICAgICAgICAgICAgICAgICAgICAgIDogIitEIihfX2RzdCksICIrUyIoX19zcmMpLCAiK2MiKF9fbikKICAgICAgICAgICAgICAgICAgICAgICA6CiAgICAgICAgICAgICAgICAgICAgICAgOiAibWVtb3J5Iik7CiNlbHNlCiAgX19hc21fXyBfX3ZvbGF0aWxlX18oInhjaGcgeyUlZXNpLCAlMXwlMSwgZXNpfVxuIgogICAgICAgICAgICAgICAgICAgICAgICJyZXAgbW92c3tsfGR9XG4iCiAgICAgICAgICAgICAgICAgICAgICAgInhjaGcgeyUlZXNpLCAlMXwlMSwgZXNpfSIKICAgICAgICAgICAgICAgICAgICAgICA6ICIrRCIoX19kc3QpLCAiK3IiKF9fc3JjKSwgIitjIihfX24pCiAgICAgICAgICAgICAgICAgICAgICAgOgogICAgICAgICAgICAgICAgICAgICAgIDogIm1lbW9yeSIpOwojZW5kaWYKfQpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUyBfX21vdnN3KHVuc2lnbmVkIHNob3J0ICpfX2RzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCBjb25zdCAqX19zcmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbikgewojaWYgZGVmaW5lZChfX3g4Nl82NF9fKQogIF9fYXNtX18gX192b2xhdGlsZV9fKCJyZXAgbW92c3ciCiAgICAgICAgICAgICAgICAgICAgICAgOiAiK0QiKF9fZHN0KSwgIitTIihfX3NyYyksICIrYyIoX19uKQogICAgICAgICAgICAgICAgICAgICAgIDoKICAgICAgICAgICAgICAgICAgICAgICA6ICJtZW1vcnkiKTsKI2Vsc2UKICBfX2FzbV9fIF9fdm9sYXRpbGVfXygieGNoZyB7JSVlc2ksICUxfCUxLCBlc2l9XG4iCiAgICAgICAgICAgICAgICAgICAgICAgInJlcCBtb3Zzd1xuIgogICAgICAgICAgICAgICAgICAgICAgICJ4Y2hnIHslJWVzaSwgJTF8JTEsIGVzaX0iCiAgICAgICAgICAgICAgICAgICAgICAgOiAiK0QiKF9fZHN0KSwgIityIihfX3NyYyksICIrYyIoX19uKQogICAgICAgICAgICAgICAgICAgICAgIDoKICAgICAgICAgICAgICAgICAgICAgICA6ICJtZW1vcnkiKTsKI2VuZGlmCn0Kc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMgX19zdG9zZCh1bnNpZ25lZCBsb25nICpfX2RzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIF9feCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uKSB7CiAgX19hc21fXyBfX3ZvbGF0aWxlX18oInJlcCBzdG9ze2x8ZH0iCiAgICAgICAgICAgICAgICAgICAgICAgOiAiK0QiKF9fZHN0KSwgIitjIihfX24pCiAgICAgICAgICAgICAgICAgICAgICAgOiAiYSIoX194KQogICAgICAgICAgICAgICAgICAgICAgIDogIm1lbW9yeSIpOwp9CnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTIF9fc3Rvc3codW5zaWduZWQgc2hvcnQgKl9fZHN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0IF9feCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uKSB7CiAgX19hc21fXyBfX3ZvbGF0aWxlX18oInJlcCBzdG9zdyIKICAgICAgICAgICAgICAgICAgICAgICA6ICIrRCIoX19kc3QpLCAiK2MiKF9fbikKICAgICAgICAgICAgICAgICAgICAgICA6ICJhIihfX3gpCiAgICAgICAgICAgICAgICAgICAgICAgOiAibWVtb3J5Iik7Cn0KI2VuZGlmCiNpZmRlZiBfX3g4Nl82NF9fCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTIF9fbW92c3EoCiAgICB1bnNpZ25lZCBsb25nIGxvbmcgKl9fZHN0LCB1bnNpZ25lZCBsb25nIGxvbmcgY29uc3QgKl9fc3JjLCBzaXplX3QgX19uKSB7CiAgX19hc21fXyBfX3ZvbGF0aWxlX18oInJlcCBtb3ZzcSIKICAgICAgICAgICAgICAgICAgICAgICA6ICIrRCIoX19kc3QpLCAiK1MiKF9fc3JjKSwgIitjIihfX24pCiAgICAgICAgICAgICAgICAgICAgICAgOgogICAgICAgICAgICAgICAgICAgICAgIDogIm1lbW9yeSIpOwp9CnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTIF9fc3Rvc3EodW5zaWduZWQgX19pbnQ2NCAqX19kc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgX19pbnQ2NCBfX3gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbikgewogIF9fYXNtX18gX192b2xhdGlsZV9fKCJyZXAgc3Rvc3EiIDogIitEIihfX2RzdCksICIrYyIoX19uKSA6ICJhIihfX3gpCiAgICAgICAgICAgICAgICAgICAgICAgOiAibWVtb3J5Iik7Cn0KI2VuZGlmCgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXAp8KiBNaXNjClwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pCiNpZiBkZWZpbmVkKF9faTM4Nl9fKQojZGVmaW5lIF9fY3B1aWRfY291bnQoX19sZWFmLCBfX2NvdW50LCBfX2VheCwgX19lYngsIF9fZWN4LCBfX2VkeCkgICAgICAgICAgICAgXAogIF9fYXNtKCJjcHVpZCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgIDogIj1hIihfX2VheCksICI9YiIoX19lYngpLCAiPWMiKF9fZWN4KSwgIj1kIihfX2VkeCkgICAgICAgICAgICAgICAgICAgXAogICAgICAgIDogIjAiKF9fbGVhZiksICIyIihfX2NvdW50KSkKI2Vsc2UKLyogeDg2LTY0IHVzZXMgJXJieCBhcyB0aGUgYmFzZSByZWdpc3Rlciwgc28gcHJlc2VydmUgaXQuICovCiNkZWZpbmUgX19jcHVpZF9jb3VudChfX2xlYWYsIF9fY291bnQsIF9fZWF4LCBfX2VieCwgX19lY3gsIF9fZWR4KSAgICAgICAgICAgICBcCiAgX19hc20oInhjaGd7cX0geyUlcmJ4LCAlcTF8JXExLCByYnh9XG4iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgImNwdWlkXG4iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgInhjaGd7cX0geyUlcmJ4LCAlcTF8JXExLCByYnh9IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgOiAiPWEiKF9fZWF4KSwgIj1yIihfX2VieCksICI9YyIoX19lY3gpLCAiPWQiKF9fZWR4KSAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgOiAiMCIoX19sZWFmKSwgIjIiKF9fY291bnQpKQojZW5kaWYKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMgX19jcHVpZChpbnQgX19pbmZvWzRdLCBpbnQgX19sZXZlbCkgewogIF9fY3B1aWRfY291bnQoX19sZXZlbCwgMCwgX19pbmZvWzBdLCBfX2luZm9bMV0sIF9faW5mb1syXSwgX19pbmZvWzNdKTsKfQpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUyBfX2NwdWlkZXgoaW50IF9faW5mb1s0XSwgaW50IF9fbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19lY3gpIHsKICBfX2NwdWlkX2NvdW50KF9fbGV2ZWwsIF9fZWN4LCBfX2luZm9bMF0sIF9faW5mb1sxXSwgX19pbmZvWzJdLCBfX2luZm9bM10pOwp9CnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTIF9faGFsdCh2b2lkKSB7CiAgX19hc21fXyB2b2xhdGlsZSgiaGx0Iik7Cn0KI2VuZGlmCgojaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYWFyY2g2NF9fKQpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUyBfX25vcCh2b2lkKSB7CiAgX19hc21fXyB2b2xhdGlsZSgibm9wIik7Cn0KI2VuZGlmCgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXAp8KiBNUyBBQXJjaDY0IHNwZWNpZmljClwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiNpZiBkZWZpbmVkKF9fYWFyY2g2NF9fKQp1bnNpZ25lZCBfX2ludDY0IF9fZ2V0UmVnKGludCk7CmxvbmcgX0ludGVybG9ja2VkQWRkKGxvbmcgdm9sYXRpbGUgKkFkZGVuZCwgbG9uZyBWYWx1ZSk7Cl9faW50NjQgX1JlYWRTdGF0dXNSZWcoaW50KTsKdm9pZCBfV3JpdGVTdGF0dXNSZWcoaW50LCBfX2ludDY0KTsKCnVuc2lnbmVkIHNob3J0IF9fY2RlY2wgX2J5dGVzd2FwX3VzaG9ydCh1bnNpZ25lZCBzaG9ydCB2YWwpOwp1bnNpZ25lZCBsb25nIF9fY2RlY2wgX2J5dGVzd2FwX3Vsb25nICh1bnNpZ25lZCBsb25nIHZhbCk7CnVuc2lnbmVkIF9faW50NjQgX19jZGVjbCBfYnl0ZXN3YXBfdWludDY0KHVuc2lnbmVkIF9faW50NjQgdmFsKTsKCl9faW50NjQgX19tdWxoKF9faW50NjQgX19hLCBfX2ludDY0IF9fYik7CnVuc2lnbmVkIF9faW50NjQgX191bXVsaCh1bnNpZ25lZCBfX2ludDY0IF9fYSwgdW5zaWduZWQgX19pbnQ2NCBfX2IpOwojZW5kaWYKCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcCnwqIFByaXZpbGVnZWQgaW50cmluc2ljcwpcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwojaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKQpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBfX2ludDY0IF9fREVGQVVMVF9GTl9BVFRSUwpfX3JlYWRtc3IodW5zaWduZWQgbG9uZyBfX3JlZ2lzdGVyKSB7CiAgLy8gTG9hZHMgdGhlIGNvbnRlbnRzIG9mIGEgNjQtYml0IG1vZGVsIHNwZWNpZmljIHJlZ2lzdGVyIChNU1IpIHNwZWNpZmllZCBpbgogIC8vIHRoZSBFQ1ggcmVnaXN0ZXIgaW50byByZWdpc3RlcnMgRURYOkVBWC4gVGhlIEVEWCByZWdpc3RlciBpcyBsb2FkZWQgd2l0aAogIC8vIHRoZSBoaWdoLW9yZGVyIDMyIGJpdHMgb2YgdGhlIE1TUiBhbmQgdGhlIEVBWCByZWdpc3RlciBpcyBsb2FkZWQgd2l0aCB0aGUKICAvLyBsb3ctb3JkZXIgMzIgYml0cy4gSWYgbGVzcyB0aGFuIDY0IGJpdHMgYXJlIGltcGxlbWVudGVkIGluIHRoZSBNU1IgYmVpbmcKICAvLyByZWFkLCB0aGUgdmFsdWVzIHJldHVybmVkIHRvIEVEWDpFQVggaW4gdW5pbXBsZW1lbnRlZCBiaXQgbG9jYXRpb25zIGFyZQogIC8vIHVuZGVmaW5lZC4KICB1bnNpZ25lZCBsb25nIF9fZWR4OwogIHVuc2lnbmVkIGxvbmcgX19lYXg7CiAgX19hc21fXyAoInJkbXNyIiA6ICI9ZCIoX19lZHgpLCAiPWEiKF9fZWF4KSA6ICJjIihfX3JlZ2lzdGVyKSk7CiAgcmV0dXJuICgoKHVuc2lnbmVkIF9faW50NjQpX19lZHgpIDw8IDMyKSB8ICh1bnNpZ25lZCBfX2ludDY0KV9fZWF4Owp9CiNlbmRpZgoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgX19MUFRSSU5UX1RZUEVfXyBfX0RFRkFVTFRfRk5fQVRUUlMgX19yZWFkY3IzKHZvaWQpIHsKICB1bnNpZ25lZCBfX0xQVFJJTlRfVFlQRV9fIF9fY3IzX3ZhbDsKICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAgICAgICAgICAgICAibW92IHslJWNyMywgJTB8JTAsIGNyM30iCiAgICAgICAgICAgICAgICAgICAgICAgOiAiPXIiKF9fY3IzX3ZhbCkKICAgICAgICAgICAgICAgICAgICAgICA6CiAgICAgICAgICAgICAgICAgICAgICAgOiAibWVtb3J5Iik7CiAgcmV0dXJuIF9fY3IzX3ZhbDsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMKX193cml0ZWNyMyh1bnNpZ25lZCBfX0lOVFBUUl9UWVBFX18gX19jcjNfdmFsKSB7CiAgX19hc21fXyAoIm1vdiB7JTAsICUlY3IzfGNyMywgJTB9IiA6IDogInIiKF9fY3IzX3ZhbCkgOiAibWVtb3J5Iik7Cn0KCiNpZmRlZiBfX2NwbHVzcGx1cwp9CiNlbmRpZgoKI3VuZGVmIF9fTFBUUklOVF9UWVBFX18KCiN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlMKCiNlbmRpZiAvKiBfX0lOVFJJTl9IICovCiNlbmRpZiAvKiBfTVNDX1ZFUiAqLwoAbXNhLmgALyo9PT0tLS0tIHBvcGNudGludHJpbi5oIC0gUE9QQ05UIGludHJpbnNpY3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwoKI2lmbmRlZiBfX1BPUENOVElOVFJJTl9ICiNkZWZpbmUgX19QT1BDTlRJTlRSSU5fSAoKLyogRGVmaW5lIHRoZSBkZWZhdWx0IGF0dHJpYnV0ZXMgZm9yIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlLiAqLwojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUyBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oInBvcGNudCIpKSkKCiNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKSAmJiAoX19jcGx1c3BsdXMgPj0gMjAxMTAzTCkKI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlNfQ09OU1RFWFBSIF9fREVGQVVMVF9GTl9BVFRSUyBjb25zdGV4cHIKI2Vsc2UKI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlNfQ09OU1RFWFBSIF9fREVGQVVMVF9GTl9BVFRSUwojZW5kaWYKCi8vLyBDb3VudHMgdGhlIG51bWJlciBvZiBiaXRzIGluIHRoZSBzb3VyY2Ugb3BlcmFuZCBoYXZpbmcgYSB2YWx1ZSBvZiAxLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBPUENOVCA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX0EKLy8vICAgIEFuIHVuc2lnbmVkIDMyLWJpdCBpbnRlZ2VyIG9wZXJhbmQuCi8vLyBccmV0dXJucyBBIDMyLWJpdCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIG51bWJlciBvZiBiaXRzIHdpdGggdmFsdWUgMSBpbiB0aGUKLy8vICAgIHNvdXJjZSBvcGVyYW5kLgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTX0NPTlNURVhQUgpfbW1fcG9wY250X3UzMih1bnNpZ25lZCBpbnQgX19BKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9wb3Bjb3VudChfX0EpOwp9CgojaWZkZWYgX194ODZfNjRfXwovLy8gQ291bnRzIHRoZSBudW1iZXIgb2YgYml0cyBpbiB0aGUgc291cmNlIG9wZXJhbmQgaGF2aW5nIGEgdmFsdWUgb2YgMS4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQT1BDTlQgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19BCi8vLyAgICBBbiB1bnNpZ25lZCA2NC1iaXQgaW50ZWdlciBvcGVyYW5kLgovLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciBjb250YWluaW5nIHRoZSBudW1iZXIgb2YgYml0cyB3aXRoIHZhbHVlIDEgaW4gdGhlCi8vLyAgICBzb3VyY2Ugb3BlcmFuZC4Kc3RhdGljIF9faW5saW5lX18gbG9uZyBsb25nIF9fREVGQVVMVF9GTl9BVFRSU19DT05TVEVYUFIKX21tX3BvcGNudF91NjQodW5zaWduZWQgbG9uZyBsb25nIF9fQSkKewogIHJldHVybiBfX2J1aWx0aW5fcG9wY291bnRsbChfX0EpOwp9CiNlbmRpZiAvKiBfX3g4Nl82NF9fICovCgojdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTCiN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlNfQ09OU1RFWFBSCgojZW5kaWYgLyogX19QT1BDTlRJTlRSSU5fSCAqLwoAc2VyaWFsaXplaW50cmluLmgAdGdtYXRoLmgALy89PT0tLSBzYW5pdGl6ZXIvdWJzYW5faW50ZXJmYWNlLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KLy8KLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KLy8KLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KLy8KLy8gVGhpcyBmaWxlIGlzIGEgcGFydCBvZiBVQlNhbml0aXplciAoVUJTYW4pLgovLwovLyBQdWJsaWMgaW50ZXJmYWNlIGhlYWRlci4KLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KI2lmbmRlZiBTQU5JVElaRVJfVUJTQU5fSU5URVJGQUNFX0gKI2RlZmluZSBTQU5JVElaRVJfVUJTQU5fSU5URVJGQUNFX0gKCiNpZmRlZiBfX2NwbHVzcGx1cwpleHRlcm4gIkMiIHsKI2VuZGlmCi8vLyBVc2VyLXByb3ZpZGVkIGRlZmF1bHQgb3B0aW9uIHNldHRpbmdzLgovLy8KLy8vIFlvdSBjYW4gcHJvdmlkZSB5b3VyIG93biBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uIHRvIHJldHVybiBhIHN0cmluZwovLy8gY29udGFpbmluZyBVQlNhbiBydW50aW1lIG9wdGlvbnMgKGZvciBleGFtcGxlLAovLy8gPGM+dmVyYm9zaXR5PTE6aGFsdF9vbl9lcnJvcj0wPC9jPikuCi8vLwovLy8gXHJldHVybnMgRGVmYXVsdCBvcHRpb25zIHN0cmluZy4KY29uc3QgY2hhciogX191YnNhbl9kZWZhdWx0X29wdGlvbnModm9pZCk7CgojaWZkZWYgX19jcGx1c3BsdXMKfSAgLy8gZXh0ZXJuICJDIgojZW5kaWYKCiNlbmRpZiAgLy8gU0FOSVRJWkVSX1VCU0FOX0lOVEVSRkFDRV9ICgBNaXNzIGZyYWN0aW9uIHBhcnQgaW4gbnVtYmVyLgBVbnNwZWNpZmljIHN5bnRheCBlcnJvci4Ad2IALCAAWzped29yZDpdAHNob3VsZCBuZXZlciBoYXBwZW4ATm8gcmFuZ2VzIGluIGNoYXIgY2xhc3MAYnl0ZSVzIFslMDJ4LSUwMnhdIC0+ICVkACVzJWQARG9Db2FsZXNjZSBmYWlsZWQ6IHIyLT5vcCgpIGlzIABDZgBDeXJpbGxpYwBHdXJtdWtoaQBPbF9DaGlraQBkc3QgIT0gbnVsbHB0cgBEdXBsaWNhdGUgYWRkciAweCVseDogJXMgPC0+IDB4JWx4OiAlcwAlczogbm8gZXhlY3V0YWJsZSBMT0FEIHNlZ21lbnRzAGxldmVsID49IDEAYmxvY2sgbm90IGJpZyBlbm91Z2ggZm9yIGV2ZW4gb25lIGxldmVsAGwAZwBEcwAmAH4AQUJPUlRFRABUaGlzIGNhbid0IGhhcHBlbjsgYmFzZTY0IGRlY29kZXIgc3RhdGUgPSAlZABOVUxMCgAsIGJlZ2luX3Bvc18gPSAALCBvZmZzZXQgPSAAXSBoYXMgb2Zmc2V0IAB3YWl0cC0+dGhyZWFkLT53YWl0cCA9PSBudWxscHRyADpsb2NhbHRpbWUAIHNwZWM9JwBleHRlcm5hbC9ib3Jpbmdzc2wvc3JjL2NyeXB0by9maXBzbW9kdWxlL2JuL2djZF9leHRyYS5jAFJTQSBWZXJpZnkgS0FUIGZhaWxlZC4KAEVDRFNBIFIAa3l0aGUucHJvdG8uQW5hbHlzaXNSZXF1ZXN0LmZpbGVfZGF0YV9zZXJ2aWNlACAgQWN0dWFsICAgOiAAQ0hFQ0sgZmFpbGVkOiB0aGlzLT5NYXBGaWVsZEJhc2U6OnJlcGVhdGVkX2ZpZWxkXyAhPSBOVUxMOiAAYysrLWhlYWRlcgAtc2hhcmVkAEVycm9yIGFkZGluZyBjb21waWxhdGlvbjogAAApIGFzIHdlIHdlcmUgdW5hYmxlIHRvIGZpbmQgYSBzdGFibGUgdW5pcXVlIHJvb3QuAENTeXN0ZW0AI2lmZGVmACNpZm5kZWYALyo9PT0tLS0tIF9fY2xhbmdfaGlwX21hdGguaCAtIERldmljZS1zaWRlIEhJUCBtYXRoIHN1cHBvcnQgLS0tLS0tLS0tLS0tLS0tLT09PQogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwojaWZuZGVmIF9fQ0xBTkdfSElQX01BVEhfSF9fCiNkZWZpbmUgX19DTEFOR19ISVBfTUFUSF9IX18KCiNpZiAhZGVmaW5lZChfX0hJUF9fKSAmJiAhZGVmaW5lZChfX09QRU5NUF9BTURHQ05fXykKI2Vycm9yICJUaGlzIGZpbGUgaXMgZm9yIEhJUCBhbmQgT3Blbk1QIEFNREdDTiBkZXZpY2UgY29tcGlsYXRpb24gb25seS4iCiNlbmRpZgoKI2lmICFkZWZpbmVkKF9fSElQQ0NfUlRDX18pCiNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQojaW5jbHVkZSA8YWxnb3JpdGhtPgojZW5kaWYKI2luY2x1ZGUgPGxpbWl0cy5oPgojaW5jbHVkZSA8c3RkaW50Lmg+CiNpZmRlZiBfX09QRU5NUF9BTURHQ05fXwojaW5jbHVkZSA8b21wLmg+CiNlbmRpZgojZW5kaWYgLy8gIWRlZmluZWQoX19ISVBDQ19SVENfXykKCiNwcmFnbWEgcHVzaF9tYWNybygiX19ERVZJQ0VfXyIpCgojaWZkZWYgX19PUEVOTVBfQU1ER0NOX18KI2RlZmluZSBfX0RFVklDRV9fIHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSwgbm90aHJvdykpCiNlbHNlCiNkZWZpbmUgX19ERVZJQ0VfXyBzdGF0aWMgX19kZXZpY2VfXyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpCiNlbmRpZgoKLy8gQSBmZXcgZnVuY3Rpb25zIHJldHVybiBib29sIHR5cGUgc3RhcnRpbmcgb25seSBpbiBDKysxMS4KI3ByYWdtYSBwdXNoX21hY3JvKCJfX1JFVFVSTl9UWVBFIikKI2lmZGVmIF9fT1BFTk1QX0FNREdDTl9fCiNkZWZpbmUgX19SRVRVUk5fVFlQRSBpbnQKI2Vsc2UKI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpCiNkZWZpbmUgX19SRVRVUk5fVFlQRSBib29sCiNlbHNlCiNkZWZpbmUgX19SRVRVUk5fVFlQRSBpbnQKI2VuZGlmCiNlbmRpZiAvLyBfX09QRU5NUF9BTURHQ05fXwoKI2lmIGRlZmluZWQgKF9fY3BsdXNwbHVzKSAmJiBfX2NwbHVzcGx1cyA8IDIwMTEwM0wKLy8gZW11bGF0ZSBzdGF0aWNfYXNzZXJ0IG9uIHR5cGUgc2l6ZXMKdGVtcGxhdGU8Ym9vbD4Kc3RydWN0IF9fY29tcGFyZV9yZXN1bHR7fTsKdGVtcGxhdGU8PgpzdHJ1Y3QgX19jb21wYXJlX3Jlc3VsdDx0cnVlPiB7CiAgc3RhdGljIGNvbnN0IF9fZGV2aWNlX18gYm9vbCB2YWxpZDsKfTsKCl9fREVWSUNFX18Kdm9pZCBfX3N1cHByZXNzX3VudXNlZF93YXJuaW5nKGJvb2wgYil7fTsKdGVtcGxhdGUgPHVuc2lnbmVkIGludCBTLCB1bnNpZ25lZCBpbnQgVD4KX19ERVZJQ0VfXyB2b2lkIF9fc3RhdGljX2Fzc2VydF9lcXVhbF9zaXplKCkgewogIF9fc3VwcHJlc3NfdW51c2VkX3dhcm5pbmcoX19jb21wYXJlX3Jlc3VsdDxTID09IFQ+Ojp2YWxpZCk7Cn0KCiNkZWZpbmUgX19zdGF0aWNfYXNzZXJ0X3R5cGVfc2l6ZV9lcXVhbChBLCBCKSBcCiAgX19zdGF0aWNfYXNzZXJ0X2VxdWFsX3NpemU8QSxCPigpCgojZWxzZQojZGVmaW5lIF9fc3RhdGljX2Fzc2VydF90eXBlX3NpemVfZXF1YWwoQSxCKSBcCiAgc3RhdGljX2Fzc2VydCgoQSkgPT0gKEIpLCAiIikKCiNlbmRpZgoKX19ERVZJQ0VfXwp1aW50NjRfdCBfX21ha2VfbWFudGlzc2FfYmFzZTgoY29uc3QgY2hhciAqX190YWdwKSB7CiAgdWludDY0X3QgX19yID0gMDsKICB3aGlsZSAoX190YWdwKSB7CiAgICBjaGFyIF9fdG1wID0gKl9fdGFncDsKCiAgICBpZiAoX190bXAgPj0gJzAnICYmIF9fdG1wIDw9ICc3JykKICAgICAgX19yID0gKF9fciAqIDh1KSArIF9fdG1wIC0gJzAnOwogICAgZWxzZQogICAgICByZXR1cm4gMDsKCiAgICArK19fdGFncDsKICB9CgogIHJldHVybiBfX3I7Cn0KCl9fREVWSUNFX18KdWludDY0X3QgX19tYWtlX21hbnRpc3NhX2Jhc2UxMChjb25zdCBjaGFyICpfX3RhZ3ApIHsKICB1aW50NjRfdCBfX3IgPSAwOwogIHdoaWxlIChfX3RhZ3ApIHsKICAgIGNoYXIgX190bXAgPSAqX190YWdwOwoKICAgIGlmIChfX3RtcCA+PSAnMCcgJiYgX190bXAgPD0gJzknKQogICAgICBfX3IgPSAoX19yICogMTB1KSArIF9fdG1wIC0gJzAnOwogICAgZWxzZQogICAgICByZXR1cm4gMDsKCiAgICArK19fdGFncDsKICB9CgogIHJldHVybiBfX3I7Cn0KCl9fREVWSUNFX18KdWludDY0X3QgX19tYWtlX21hbnRpc3NhX2Jhc2UxNihjb25zdCBjaGFyICpfX3RhZ3ApIHsKICB1aW50NjRfdCBfX3IgPSAwOwogIHdoaWxlIChfX3RhZ3ApIHsKICAgIGNoYXIgX190bXAgPSAqX190YWdwOwoKICAgIGlmIChfX3RtcCA+PSAnMCcgJiYgX190bXAgPD0gJzknKQogICAgICBfX3IgPSAoX19yICogMTZ1KSArIF9fdG1wIC0gJzAnOwogICAgZWxzZSBpZiAoX190bXAgPj0gJ2EnICYmIF9fdG1wIDw9ICdmJykKICAgICAgX19yID0gKF9fciAqIDE2dSkgKyBfX3RtcCAtICdhJyArIDEwOwogICAgZWxzZSBpZiAoX190bXAgPj0gJ0EnICYmIF9fdG1wIDw9ICdGJykKICAgICAgX19yID0gKF9fciAqIDE2dSkgKyBfX3RtcCAtICdBJyArIDEwOwogICAgZWxzZQogICAgICByZXR1cm4gMDsKCiAgICArK19fdGFncDsKICB9CgogIHJldHVybiBfX3I7Cn0KCl9fREVWSUNFX18KdWludDY0X3QgX19tYWtlX21hbnRpc3NhKGNvbnN0IGNoYXIgKl9fdGFncCkgewogIGlmICghX190YWdwKQogICAgcmV0dXJuIDB1OwoKICBpZiAoKl9fdGFncCA9PSAnMCcpIHsKICAgICsrX190YWdwOwoKICAgIGlmICgqX190YWdwID09ICd4JyB8fCAqX190YWdwID09ICdYJykKICAgICAgcmV0dXJuIF9fbWFrZV9tYW50aXNzYV9iYXNlMTYoX190YWdwKTsKICAgIGVsc2UKICAgICAgcmV0dXJuIF9fbWFrZV9tYW50aXNzYV9iYXNlOChfX3RhZ3ApOwogIH0KCiAgcmV0dXJuIF9fbWFrZV9tYW50aXNzYV9iYXNlMTAoX190YWdwKTsKfQoKLy8gQkVHSU4gRkxPQVQKI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpCl9fREVWSUNFX18KaW50IGFicyhpbnQgX194KSB7CiAgaW50IF9fc2duID0gX194ID4+IChzaXplb2YoaW50KSAqIENIQVJfQklUIC0gMSk7CiAgcmV0dXJuIChfX3ggXiBfX3NnbikgLSBfX3NnbjsKfQpfX0RFVklDRV9fCmxvbmcgbGFicyhsb25nIF9feCkgewogIGxvbmcgX19zZ24gPSBfX3ggPj4gKHNpemVvZihsb25nKSAqIENIQVJfQklUIC0gMSk7CiAgcmV0dXJuIChfX3ggXiBfX3NnbikgLSBfX3NnbjsKfQpfX0RFVklDRV9fCmxvbmcgbG9uZyBsbGFicyhsb25nIGxvbmcgX194KSB7CiAgbG9uZyBsb25nIF9fc2duID0gX194ID4+IChzaXplb2YobG9uZyBsb25nKSAqIENIQVJfQklUIC0gMSk7CiAgcmV0dXJuIChfX3ggXiBfX3NnbikgLSBfX3NnbjsKfQojZW5kaWYKCl9fREVWSUNFX18KZmxvYXQgYWNvc2YoZmxvYXQgX194KSB7IHJldHVybiBfX29jbWxfYWNvc19mMzIoX194KTsgfQoKX19ERVZJQ0VfXwpmbG9hdCBhY29zaGYoZmxvYXQgX194KSB7IHJldHVybiBfX29jbWxfYWNvc2hfZjMyKF9feCk7IH0KCl9fREVWSUNFX18KZmxvYXQgYXNpbmYoZmxvYXQgX194KSB7IHJldHVybiBfX29jbWxfYXNpbl9mMzIoX194KTsgfQoKX19ERVZJQ0VfXwpmbG9hdCBhc2luaGYoZmxvYXQgX194KSB7IHJldHVybiBfX29jbWxfYXNpbmhfZjMyKF9feCk7IH0KCl9fREVWSUNFX18KZmxvYXQgYXRhbjJmKGZsb2F0IF9feCwgZmxvYXQgX195KSB7IHJldHVybiBfX29jbWxfYXRhbjJfZjMyKF9feCwgX195KTsgfQoKX19ERVZJQ0VfXwpmbG9hdCBhdGFuZihmbG9hdCBfX3gpIHsgcmV0dXJuIF9fb2NtbF9hdGFuX2YzMihfX3gpOyB9CgpfX0RFVklDRV9fCmZsb2F0IGF0YW5oZihmbG9hdCBfX3gpIHsgcmV0dXJuIF9fb2NtbF9hdGFuaF9mMzIoX194KTsgfQoKX19ERVZJQ0VfXwpmbG9hdCBjYnJ0ZihmbG9hdCBfX3gpIHsgcmV0dXJuIF9fb2NtbF9jYnJ0X2YzMihfX3gpOyB9CgpfX0RFVklDRV9fCmZsb2F0IGNlaWxmKGZsb2F0IF9feCkgeyByZXR1cm4gX19vY21sX2NlaWxfZjMyKF9feCk7IH0KCl9fREVWSUNFX18KZmxvYXQgY29weXNpZ25mKGZsb2F0IF9feCwgZmxvYXQgX195KSB7IHJldHVybiBfX29jbWxfY29weXNpZ25fZjMyKF9feCwgX195KTsgfQoKX19ERVZJQ0VfXwpmbG9hdCBjb3NmKGZsb2F0IF9feCkgeyByZXR1cm4gX19vY21sX2Nvc19mMzIoX194KTsgfQoKX19ERVZJQ0VfXwpmbG9hdCBjb3NoZihmbG9hdCBfX3gpIHsgcmV0dXJuIF9fb2NtbF9jb3NoX2YzMihfX3gpOyB9CgpfX0RFVklDRV9fCmZsb2F0IGNvc3BpZihmbG9hdCBfX3gpIHsgcmV0dXJuIF9fb2NtbF9jb3NwaV9mMzIoX194KTsgfQoKX19ERVZJQ0VfXwpmbG9hdCBjeWxfYmVzc2VsX2kwZihmbG9hdCBfX3gpIHsgcmV0dXJuIF9fb2NtbF9pMF9mMzIoX194KTsgfQoKX19ERVZJQ0VfXwpmbG9hdCBjeWxfYmVzc2VsX2kxZihmbG9hdCBfX3gpIHsgcmV0dXJuIF9fb2NtbF9pMV9mMzIoX194KTsgfQoKX19ERVZJQ0VfXwpmbG9hdCBlcmZjZihmbG9hdCBfX3gpIHsgcmV0dXJuIF9fb2NtbF9lcmZjX2YzMihfX3gpOyB9CgpfX0RFVklDRV9fCmZsb2F0IGVyZmNpbnZmKGZsb2F0IF9feCkgeyByZXR1cm4gX19vY21sX2VyZmNpbnZfZjMyKF9feCk7IH0KCl9fREVWSUNFX18KZmxvYXQgZXJmY3hmKGZsb2F0IF9feCkgeyByZXR1cm4gX19vY21sX2VyZmN4X2YzMihfX3gpOyB9CgpfX0RFVklDRV9fCmZsb2F0IGVyZmYoZmxvYXQgX194KSB7IHJldHVybiBfX29jbWxfZXJmX2YzMihfX3gpOyB9CgpfX0RFVklDRV9fCmZsb2F0IGVyZmludmYoZmxvYXQgX194KSB7IHJldHVybiBfX29jbWxfZXJmaW52X2YzMihfX3gpOyB9CgpfX0RFVklDRV9fCmZsb2F0IGV4cDEwZihmbG9hdCBfX3gpIHsgcmV0dXJuIF9fb2NtbF9leHAxMF9mMzIoX194KTsgfQoKX19ERVZJQ0VfXwpmbG9hdCBleHAyZihmbG9hdCBfX3gpIHsgcmV0dXJuIF9fb2NtbF9leHAyX2YzMihfX3gpOyB9CgpfX0RFVklDRV9fCmZsb2F0IGV4cGYoZmxvYXQgX194KSB7IHJldHVybiBfX29jbWxfZXhwX2YzMihfX3gpOyB9CgpfX0RFVklDRV9fCmZsb2F0IGV4cG0xZihmbG9hdCBfX3gpIHsgcmV0dXJuIF9fb2NtbF9leHBtMV9mMzIoX194KTsgfQoKX19ERVZJQ0VfXwpmbG9hdCBmYWJzZihmbG9hdCBfX3gpIHsgcmV0dXJuIF9fb2NtbF9mYWJzX2YzMihfX3gpOyB9CgpfX0RFVklDRV9fCmZsb2F0IGZkaW1mKGZsb2F0IF9feCwgZmxvYXQgX195KSB7IHJldHVybiBfX29jbWxfZmRpbV9mMzIoX194LCBfX3kpOyB9CgpfX0RFVklDRV9fCmZsb2F0IGZkaXZpZGVmKGZsb2F0IF9feCwgZmxvYXQgX195KSB7IHJldHVybiBfX3ggLyBfX3k7IH0KCl9fREVWSUNFX18KZmxvYXQgZmxvb3JmKGZsb2F0IF9feCkgeyByZXR1cm4gX19vY21sX2Zsb29yX2YzMihfX3gpOyB9CgpfX0RFVklDRV9fCmZsb2F0IGZtYWYoZmxvYXQgX194LCBmbG9hdCBfX3ksIGZsb2F0IF9feikgewogIHJldHVybiBfX29jbWxfZm1hX2YzMihfX3gsIF9feSwgX196KTsKfQoKX19ERVZJQ0VfXwpmbG9hdCBmbWF4ZihmbG9hdCBfX3gsIGZsb2F0IF9feSkgeyByZXR1cm4gX19vY21sX2ZtYXhfZjMyKF9feCwgX195KTsgfQoKX19ERVZJQ0VfXwpmbG9hdCBmbWluZihmbG9hdCBfX3gsIGZsb2F0IF9feSkgeyByZXR1cm4gX19vY21sX2ZtaW5fZjMyKF9feCwgX195KTsgfQoKX19ERVZJQ0VfXwpmbG9hdCBmbW9kZihmbG9hdCBfX3gsIGZsb2F0IF9feSkgeyByZXR1cm4gX19vY21sX2Ztb2RfZjMyKF9feCwgX195KTsgfQoKX19ERVZJQ0VfXwpmbG9hdCBmcmV4cGYoZmxvYXQgX194LCBpbnQgKl9fbnB0cikgewogIGludCBfX3RtcDsKI2lmZGVmIF9fT1BFTk1QX0FNREdDTl9fCiNwcmFnbWEgb21wIGFsbG9jYXRlKF9fdG1wKSBhbGxvY2F0b3Iob21wX3RocmVhZF9tZW1fYWxsb2MpCiNlbmRpZgogIGZsb2F0IF9fciA9CiAgICAgIF9fb2NtbF9mcmV4cF9mMzIoX194LCAoX19hdHRyaWJ1dGVfXygoYWRkcmVzc19zcGFjZSg1KSkpIGludCAqKSZfX3RtcCk7CiAgKl9fbnB0ciA9IF9fdG1wOwoKICByZXR1cm4gX19yOwp9CgpfX0RFVklDRV9fCmZsb2F0IGh5cG90ZihmbG9hdCBfX3gsIGZsb2F0IF9feSkgeyByZXR1cm4gX19vY21sX2h5cG90X2YzMihfX3gsIF9feSk7IH0KCl9fREVWSUNFX18KaW50IGlsb2diZihmbG9hdCBfX3gpIHsgcmV0dXJuIF9fb2NtbF9pbG9nYl9mMzIoX194KTsgfQoKX19ERVZJQ0VfXwpfX1JFVFVSTl9UWVBFIF9fZmluaXRlZihmbG9hdCBfX3gpIHsgcmV0dXJuIF9fb2NtbF9pc2Zpbml0ZV9mMzIoX194KTsgfQoKX19ERVZJQ0VfXwpfX1JFVFVSTl9UWVBFIF9faXNpbmZmKGZsb2F0IF9feCkgeyByZXR1cm4gX19vY21sX2lzaW5mX2YzMihfX3gpOyB9CgpfX0RFVklDRV9fCl9fUkVUVVJOX1RZUEUgX19pc25hbmYoZmxvYXQgX194KSB7IHJldHVybiBfX29jbWxfaXNuYW5fZjMyKF9feCk7IH0KCl9fREVWSUNFX18KZmxvYXQgajBmKGZsb2F0IF9feCkgeyByZXR1cm4gX19vY21sX2owX2YzMihfX3gpOyB9CgpfX0RFVklDRV9fCmZsb2F0IGoxZihmbG9hdCBfX3gpIHsgcmV0dXJuIF9fb2NtbF9qMV9mMzIoX194KTsgfQoKX19ERVZJQ0VfXwpmbG9hdCBqbmYoaW50IF9fbiwgZmxvYXQgX194KSB7IC8vIFRPRE86IHdlIGNvdWxkIHVzZSBBaG1lcyBtdWx0aXBsaWNhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCB0aGUgTWlsbGVyICYgQnJvd24gYWxnb3JpdGhtCiAgLy8gICAgICAgZm9yIGxpbmVhciByZWN1cnJlbmNlcyB0byBnZXQgTyhsb2cgbikgc3RlcHMsIGJ1dCBpdCdzIHVuY2xlYXIgaWYKICAvLyAgICAgICBpdCdkIGJlIGJlbmVmaWNpYWwgaW4gdGhpcyBjYXNlLgogIGlmIChfX24gPT0gMCkKICAgIHJldHVybiBqMGYoX194KTsKICBpZiAoX19uID09IDEpCiAgICByZXR1cm4gajFmKF9feCk7CgogIGZsb2F0IF9feDAgPSBqMGYoX194KTsKICBmbG9hdCBfX3gxID0gajFmKF9feCk7CiAgZm9yIChpbnQgX19pID0gMTsgX19pIDwgX19uOyArK19faSkgewogICAgZmxvYXQgX194MiA9ICgyICogX19pKSAvIF9feCAqIF9feDEgLSBfX3gwOwogICAgX194MCA9IF9feDE7CiAgICBfX3gxID0gX194MjsKICB9CgogIHJldHVybiBfX3gxOwp9CgpfX0RFVklDRV9fCmZsb2F0IGxkZXhwZihmbG9hdCBfX3gsIGludCBfX2UpIHsgcmV0dXJuIF9fb2NtbF9sZGV4cF9mMzIoX194LCBfX2UpOyB9CgpfX0RFVklDRV9fCmZsb2F0IGxnYW1tYWYoZmxvYXQgX194KSB7IHJldHVybiBfX29jbWxfbGdhbW1hX2YzMihfX3gpOyB9CgpfX0RFVklDRV9fCmxvbmcgbG9uZyBpbnQgbGxyaW50ZihmbG9hdCBfX3gpIHsgcmV0dXJuIF9fb2NtbF9yaW50X2YzMihfX3gpOyB9CgpfX0RFVklDRV9fCmxvbmcgbG9uZyBpbnQgbGxyb3VuZGYoZmxvYXQgX194KSB7IHJldHVybiBfX29jbWxfcm91bmRfZjMyKF9feCk7IH0KCl9fREVWSUNFX18KZmxvYXQgbG9nMTBmKGZsb2F0IF9feCkgeyByZXR1cm4gX19vY21sX2xvZzEwX2YzMihfX3gpOyB9CgpfX0RFVklDRV9fCmZsb2F0IGxvZzFwZihmbG9hdCBfX3gpIHsgcmV0dXJuIF9fb2NtbF9sb2cxcF9mMzIoX194KTsgfQoKX19ERVZJQ0VfXwpmbG9hdCBsb2cyZihmbG9hdCBfX3gpIHsgcmV0dXJuIF9fb2NtbF9sb2cyX2YzMihfX3gpOyB9CgpfX0RFVklDRV9fCmZsb2F0IGxvZ2JmKGZsb2F0IF9feCkgeyByZXR1cm4gX19vY21sX2xvZ2JfZjMyKF9feCk7IH0KCl9fREVWSUNFX18KZmxvYXQgbG9nZihmbG9hdCBfX3gpIHsgcmV0dXJuIF9fb2NtbF9sb2dfZjMyKF9feCk7IH0KCl9fREVWSUNFX18KbG9uZyBpbnQgbHJpbnRmKGZsb2F0IF9feCkgeyByZXR1cm4gX19vY21sX3JpbnRfZjMyKF9feCk7IH0KCl9fREVWSUNFX18KbG9uZyBpbnQgbHJvdW5kZihmbG9hdCBfX3gpIHsgcmV0dXJuIF9fb2NtbF9yb3VuZF9mMzIoX194KTsgfQoKX19ERVZJQ0VfXwpmbG9hdCBtb2RmZihmbG9hdCBfX3gsIGZsb2F0ICpfX2lwdHIpIHsKICBmbG9hdCBfX3RtcDsKI2lmZGVmIF9fT1BFTk1QX0FNREdDTl9fCiNwcmFnbWEgb21wIGFsbG9jYXRlKF9fdG1wKSBhbGxvY2F0b3Iob21wX3RocmVhZF9tZW1fYWxsb2MpCiNlbmRpZgogIGZsb2F0IF9fciA9CiAgICAgIF9fb2NtbF9tb2RmX2YzMihfX3gsIChfX2F0dHJpYnV0ZV9fKChhZGRyZXNzX3NwYWNlKDUpKSkgZmxvYXQgKikmX190bXApOwogICpfX2lwdHIgPSBfX3RtcDsKICByZXR1cm4gX19yOwp9CgpfX0RFVklDRV9fCmZsb2F0IG5hbmYoY29uc3QgY2hhciAqX190YWdwKSB7CiAgdW5pb24gewogICAgZmxvYXQgdmFsOwogICAgc3RydWN0IGllZWVfZmxvYXQgewogICAgICB1bnNpZ25lZCBpbnQgbWFudGlzc2EgOiAyMjsKICAgICAgdW5zaWduZWQgaW50IHF1aWV0IDogMTsKICAgICAgdW5zaWduZWQgaW50IGV4cG9uZW50IDogODsKICAgICAgdW5zaWduZWQgaW50IHNpZ24gOiAxOwogICAgfSBiaXRzOwogIH0gX190bXA7CiAgX19zdGF0aWNfYXNzZXJ0X3R5cGVfc2l6ZV9lcXVhbChzaXplb2YoX190bXAudmFsKSwgc2l6ZW9mKF9fdG1wLmJpdHMpKTsKCiAgX190bXAuYml0cy5zaWduID0gMHU7CiAgX190bXAuYml0cy5leHBvbmVudCA9IH4wdTsKICBfX3RtcC5iaXRzLnF1aWV0ID0gMXU7CiAgX190bXAuYml0cy5tYW50aXNzYSA9IF9fbWFrZV9tYW50aXNzYShfX3RhZ3ApOwoKICByZXR1cm4gX190bXAudmFsOwp9CgpfX0RFVklDRV9fCmZsb2F0IG5lYXJieWludGYoZmxvYXQgX194KSB7IHJldHVybiBfX29jbWxfbmVhcmJ5aW50X2YzMihfX3gpOyB9CgpfX0RFVklDRV9fCmZsb2F0IG5leHRhZnRlcmYoZmxvYXQgX194LCBmbG9hdCBfX3kpIHsKICByZXR1cm4gX19vY21sX25leHRhZnRlcl9mMzIoX194LCBfX3kpOwp9CgpfX0RFVklDRV9fCmZsb2F0IG5vcm0zZGYoZmxvYXQgX194LCBmbG9hdCBfX3ksIGZsb2F0IF9feikgewogIHJldHVybiBfX29jbWxfbGVuM19mMzIoX194LCBfX3ksIF9feik7Cn0KCl9fREVWSUNFX18KZmxvYXQgbm9ybTRkZihmbG9hdCBfX3gsIGZsb2F0IF9feSwgZmxvYXQgX196LCBmbG9hdCBfX3cpIHsKICByZXR1cm4gX19vY21sX2xlbjRfZjMyKF9feCwgX195LCBfX3osIF9fdyk7Cn0KCl9fREVWSUNFX18KZmxvYXQgbm9ybWNkZmYoZmxvYXQgX194KSB7IHJldHVybiBfX29jbWxfbmNkZl9mMzIoX194KTsgfQoKX19ERVZJQ0VfXwpmbG9hdCBub3JtY2RmaW52ZihmbG9hdCBfX3gpIHsgcmV0dXJuIF9fb2NtbF9uY2RmaW52X2YzMihfX3gpOyB9CgpfX0RFVklDRV9fCmZsb2F0IG5vcm1mKGludCBfX2RpbSwKICAgICAgICAgICAgY29uc3QgZmxvYXQgKl9fYSkgeyAvLyBUT0RPOiBwbGFjZWhvbGRlciB1bnRpbCBPQ01MIGFkZHMgc3VwcG9ydC4KICBmbG9hdCBfX3IgPSAwOwogIHdoaWxlIChfX2RpbS0tKSB7CiAgICBfX3IgKz0gX19hWzBdICogX19hWzBdOwogICAgKytfX2E7CiAgfQoKICByZXR1cm4gX19vY21sX3NxcnRfZjMyKF9fcik7Cn0KCl9fREVWSUNFX18KZmxvYXQgcG93ZihmbG9hdCBfX3gsIGZsb2F0IF9feSkgeyByZXR1cm4gX19vY21sX3Bvd19mMzIoX194LCBfX3kpOyB9CgpfX0RFVklDRV9fCmZsb2F0IHBvd2lmKGZsb2F0IF9feCwgaW50IF9feSkgeyByZXR1cm4gX19vY21sX3Bvd25fZjMyKF9feCwgX195KTsgfQoKX19ERVZJQ0VfXwpmbG9hdCByY2JydGYoZmxvYXQgX194KSB7IHJldHVybiBfX29jbWxfcmNicnRfZjMyKF9feCk7IH0KCl9fREVWSUNFX18KZmxvYXQgcmVtYWluZGVyZihmbG9hdCBfX3gsIGZsb2F0IF9feSkgewogIHJldHVybiBfX29jbWxfcmVtYWluZGVyX2YzMihfX3gsIF9feSk7Cn0KCl9fREVWSUNFX18KZmxvYXQgcmVtcXVvZihmbG9hdCBfX3gsIGZsb2F0IF9feSwgaW50ICpfX3F1bykgewogIGludCBfX3RtcDsKI2lmZGVmIF9fT1BFTk1QX0FNREdDTl9fCiNwcmFnbWEgb21wIGFsbG9jYXRlKF9fdG1wKSBhbGxvY2F0b3Iob21wX3RocmVhZF9tZW1fYWxsb2MpCiNlbmRpZgogIGZsb2F0IF9fciA9IF9fb2NtbF9yZW1xdW9fZjMyKAogICAgICBfX3gsIF9feSwgKF9fYXR0cmlidXRlX18oKGFkZHJlc3Nfc3BhY2UoNSkpKSBpbnQgKikmX190bXApOwogICpfX3F1byA9IF9fdG1wOwoKICByZXR1cm4gX19yOwp9CgpfX0RFVklDRV9fCmZsb2F0IHJoeXBvdGYoZmxvYXQgX194LCBmbG9hdCBfX3kpIHsgcmV0dXJuIF9fb2NtbF9yaHlwb3RfZjMyKF9feCwgX195KTsgfQoKX19ERVZJQ0VfXwpmbG9hdCByaW50ZihmbG9hdCBfX3gpIHsgcmV0dXJuIF9fb2NtbF9yaW50X2YzMihfX3gpOyB9CgpfX0RFVklDRV9fCmZsb2F0IHJub3JtM2RmKGZsb2F0IF9feCwgZmxvYXQgX195LCBmbG9hdCBfX3opIHsKICByZXR1cm4gX19vY21sX3JsZW4zX2YzMihfX3gsIF9feSwgX196KTsKfQoKX19ERVZJQ0VfXwpmbG9hdCBybm9ybTRkZihmbG9hdCBfX3gsIGZsb2F0IF9feSwgZmxvYXQgX196LCBmbG9hdCBfX3cpIHsKICByZXR1cm4gX19vY21sX3JsZW40X2YzMihfX3gsIF9feSwgX196LCBfX3cpOwp9CgpfX0RFVklDRV9fCmZsb2F0IHJub3JtZihpbnQgX19kaW0sCiAgICAgICAgICAgICBjb25zdCBmbG9hdCAqX19hKSB7IC8vIFRPRE86IHBsYWNlaG9sZGVyIHVudGlsIE9DTUwgYWRkcyBzdXBwb3J0LgogIGZsb2F0IF9fciA9IDA7CiAgd2hpbGUgKF9fZGltLS0pIHsKICAgIF9fciArPSBfX2FbMF0gKiBfX2FbMF07CiAgICArK19fYTsKICB9CgogIHJldHVybiBfX29jbWxfcnNxcnRfZjMyKF9fcik7Cn0KCl9fREVWSUNFX18KZmxvYXQgcm91bmRmKGZsb2F0IF9feCkgeyByZXR1cm4gX19vY21sX3JvdW5kX2YzMihfX3gpOyB9CgpfX0RFVklDRV9fCmZsb2F0IHJzcXJ0ZihmbG9hdCBfX3gpIHsgcmV0dXJuIF9fb2NtbF9yc3FydF9mMzIoX194KTsgfQoKX19ERVZJQ0VfXwpmbG9hdCBzY2FsYmxuZihmbG9hdCBfX3gsIGxvbmcgaW50IF9fbikgewogIHJldHVybiAoX19uIDwgSU5UX01BWCkgPyBfX29jbWxfc2NhbGJuX2YzMihfX3gsIF9fbikKICAgICAgICAgICAgICAgICAgICAgICAgIDogX19vY21sX3NjYWxiX2YzMihfX3gsIF9fbik7Cn0KCl9fREVWSUNFX18KZmxvYXQgc2NhbGJuZihmbG9hdCBfX3gsIGludCBfX24pIHsgcmV0dXJuIF9fb2NtbF9zY2FsYm5fZjMyKF9feCwgX19uKTsgfQoKX19ERVZJQ0VfXwpfX1JFVFVSTl9UWVBFIF9fc2lnbmJpdGYoZmxvYXQgX194KSB7IHJldHVybiBfX29jbWxfc2lnbmJpdF9mMzIoX194KTsgfQoKX19ERVZJQ0VfXwp2b2lkIHNpbmNvc2YoZmxvYXQgX194LCBmbG9hdCAqX19zaW5wdHIsIGZsb2F0ICpfX2Nvc3B0cikgewogIGZsb2F0IF9fdG1wOwojaWZkZWYgX19PUEVOTVBfQU1ER0NOX18KI3ByYWdtYSBvbXAgYWxsb2NhdGUoX190bXApIGFsbG9jYXRvcihvbXBfdGhyZWFkX21lbV9hbGxvYykKI2VuZGlmCiAgKl9fc2lucHRyID0KICAgICAgX19vY21sX3NpbmNvc19mMzIoX194LCAoX19hdHRyaWJ1dGVfXygoYWRkcmVzc19zcGFjZSg1KSkpIGZsb2F0ICopJl9fdG1wKTsKICAqX19jb3NwdHIgPSBfX3RtcDsKfQoKX19ERVZJQ0VfXwp2b2lkIHNpbmNvc3BpZihmbG9hdCBfX3gsIGZsb2F0ICpfX3NpbnB0ciwgZmxvYXQgKl9fY29zcHRyKSB7CiAgZmxvYXQgX190bXA7CiNpZmRlZiBfX09QRU5NUF9BTURHQ05fXwojcHJhZ21hIG9tcCBhbGxvY2F0ZShfX3RtcCkgYWxsb2NhdG9yKG9tcF90aHJlYWRfbWVtX2FsbG9jKQojZW5kaWYKICAqX19zaW5wdHIgPSBfX29jbWxfc2luY29zcGlfZjMyKAogICAgICBfX3gsIChfX2F0dHJpYnV0ZV9fKChhZGRyZXNzX3NwYWNlKDUpKSkgZmxvYXQgKikmX190bXApOwogICpfX2Nvc3B0ciA9IF9fdG1wOwp9CgpfX0RFVklDRV9fCmZsb2F0IHNpbmYoZmxvYXQgX194KSB7IHJldHVybiBfX29jbWxfc2luX2YzMihfX3gpOyB9CgpfX0RFVklDRV9fCmZsb2F0IHNpbmhmKGZsb2F0IF9feCkgeyByZXR1cm4gX19vY21sX3NpbmhfZjMyKF9feCk7IH0KCl9fREVWSUNFX18KZmxvYXQgc2lucGlmKGZsb2F0IF9feCkgeyByZXR1cm4gX19vY21sX3NpbnBpX2YzMihfX3gpOyB9CgpfX0RFVklDRV9fCmZsb2F0IHNxcnRmKGZsb2F0IF9feCkgeyByZXR1cm4gX19vY21sX3NxcnRfZjMyKF9feCk7IH0KCl9fREVWSUNFX18KZmxvYXQgdGFuZihmbG9hdCBfX3gpIHsgcmV0dXJuIF9fb2NtbF90YW5fZjMyKF9feCk7IH0KCl9fREVWSUNFX18KZmxvYXQgdGFuaGYoZmxvYXQgX194KSB7IHJldHVybiBfX29jbWxfdGFuaF9mMzIoX194KTsgfQoKX19ERVZJQ0VfXwpmbG9hdCB0Z2FtbWFmKGZsb2F0IF9feCkgeyByZXR1cm4gX19vY21sX3RnYW1tYV9mMzIoX194KTsgfQoKX19ERVZJQ0VfXwpmbG9hdCB0cnVuY2YoZmxvYXQgX194KSB7IHJldHVybiBfX29jbWxfdHJ1bmNfZjMyKF9feCk7IH0KCl9fREVWSUNFX18KZmxvYXQgeTBmKGZsb2F0IF9feCkgeyByZXR1cm4gX19vY21sX3kwX2YzMihfX3gpOyB9CgpfX0RFVklDRV9fCmZsb2F0IHkxZihmbG9hdCBfX3gpIHsgcmV0dXJuIF9fb2NtbF95MV9mMzIoX194KTsgfQoKX19ERVZJQ0VfXwpmbG9hdCB5bmYoaW50IF9fbiwgZmxvYXQgX194KSB7IC8vIFRPRE86IHdlIGNvdWxkIHVzZSBBaG1lcyBtdWx0aXBsaWNhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCB0aGUgTWlsbGVyICYgQnJvd24gYWxnb3JpdGhtCiAgLy8gICAgICAgZm9yIGxpbmVhciByZWN1cnJlbmNlcyB0byBnZXQgTyhsb2cgbikgc3RlcHMsIGJ1dCBpdCdzIHVuY2xlYXIgaWYKICAvLyAgICAgICBpdCdkIGJlIGJlbmVmaWNpYWwgaW4gdGhpcyBjYXNlLiBQbGFjZWhvbGRlciB1bnRpbCBPQ01MIGFkZHMKICAvLyAgICAgICBzdXBwb3J0LgogIGlmIChfX24gPT0gMCkKICAgIHJldHVybiB5MGYoX194KTsKICBpZiAoX19uID09IDEpCiAgICByZXR1cm4geTFmKF9feCk7CgogIGZsb2F0IF9feDAgPSB5MGYoX194KTsKICBmbG9hdCBfX3gxID0geTFmKF9feCk7CiAgZm9yIChpbnQgX19pID0gMTsgX19pIDwgX19uOyArK19faSkgewogICAgZmxvYXQgX194MiA9ICgyICogX19pKSAvIF9feCAqIF9feDEgLSBfX3gwOwogICAgX194MCA9IF9feDE7CiAgICBfX3gxID0gX194MjsKICB9CgogIHJldHVybiBfX3gxOwp9CgovLyBCRUdJTiBJTlRSSU5TSUNTCgpfX0RFVklDRV9fCmZsb2F0IF9fY29zZihmbG9hdCBfX3gpIHsgcmV0dXJuIF9fb2NtbF9uYXRpdmVfY29zX2YzMihfX3gpOyB9CgpfX0RFVklDRV9fCmZsb2F0IF9fZXhwMTBmKGZsb2F0IF9feCkgeyByZXR1cm4gX19vY21sX25hdGl2ZV9leHAxMF9mMzIoX194KTsgfQoKX19ERVZJQ0VfXwpmbG9hdCBfX2V4cGYoZmxvYXQgX194KSB7IHJldHVybiBfX29jbWxfbmF0aXZlX2V4cF9mMzIoX194KTsgfQoKI2lmIGRlZmluZWQgT0NNTF9CQVNJQ19ST1VOREVEX09QRVJBVElPTlMKX19ERVZJQ0VfXwpmbG9hdCBfX2ZhZGRfcmQoZmxvYXQgX194LCBmbG9hdCBfX3kpIHsgcmV0dXJuIF9fb2NtbF9hZGRfcnRuX2YzMihfX3gsIF9feSk7IH0KX19ERVZJQ0VfXwpmbG9hdCBfX2ZhZGRfcm4oZmxvYXQgX194LCBmbG9hdCBfX3kpIHsgcmV0dXJuIF9fb2NtbF9hZGRfcnRlX2YzMihfX3gsIF9feSk7IH0KX19ERVZJQ0VfXwpmbG9hdCBfX2ZhZGRfcnUoZmxvYXQgX194LCBmbG9hdCBfX3kpIHsgcmV0dXJuIF9fb2NtbF9hZGRfcnRwX2YzMihfX3gsIF9feSk7IH0KX19ERVZJQ0VfXwpmbG9hdCBfX2ZhZGRfcnooZmxvYXQgX194LCBmbG9hdCBfX3kpIHsgcmV0dXJuIF9fb2NtbF9hZGRfcnR6X2YzMihfX3gsIF9feSk7IH0KI2Vsc2UKX19ERVZJQ0VfXwpmbG9hdCBfX2ZhZGRfcm4oZmxvYXQgX194LCBmbG9hdCBfX3kpIHsgcmV0dXJuIF9feCArIF9feTsgfQojZW5kaWYKCiNpZiBkZWZpbmVkIE9DTUxfQkFTSUNfUk9VTkRFRF9PUEVSQVRJT05TCl9fREVWSUNFX18KZmxvYXQgX19mZGl2X3JkKGZsb2F0IF9feCwgZmxvYXQgX195KSB7IHJldHVybiBfX29jbWxfZGl2X3J0bl9mMzIoX194LCBfX3kpOyB9Cl9fREVWSUNFX18KZmxvYXQgX19mZGl2X3JuKGZsb2F0IF9feCwgZmxvYXQgX195KSB7IHJldHVybiBfX29jbWxfZGl2X3J0ZV9mMzIoX194LCBfX3kpOyB9Cl9fREVWSUNFX18KZmxvYXQgX19mZGl2X3J1KGZsb2F0IF9feCwgZmxvYXQgX195KSB7IHJldHVybiBfX29jbWxfZGl2X3J0cF9mMzIoX194LCBfX3kpOyB9Cl9fREVWSUNFX18KZmxvYXQgX19mZGl2X3J6KGZsb2F0IF9feCwgZmxvYXQgX195KSB7IHJldHVybiBfX29jbWxfZGl2X3J0el9mMzIoX194LCBfX3kpOyB9CiNlbHNlCl9fREVWSUNFX18KZmxvYXQgX19mZGl2X3JuKGZsb2F0IF9feCwgZmxvYXQgX195KSB7IHJldHVybiBfX3ggLyBfX3k7IH0KI2VuZGlmCgpfX0RFVklDRV9fCmZsb2F0IF9fZmRpdmlkZWYoZmxvYXQgX194LCBmbG9hdCBfX3kpIHsgcmV0dXJuIF9feCAvIF9feTsgfQoKI2lmIGRlZmluZWQgT0NNTF9CQVNJQ19ST1VOREVEX09QRVJBVElPTlMKX19ERVZJQ0VfXwpmbG9hdCBfX2ZtYWZfcmQoZmxvYXQgX194LCBmbG9hdCBfX3ksIGZsb2F0IF9feikgewogIHJldHVybiBfX29jbWxfZm1hX3J0bl9mMzIoX194LCBfX3ksIF9feik7Cn0KX19ERVZJQ0VfXwpmbG9hdCBfX2ZtYWZfcm4oZmxvYXQgX194LCBmbG9hdCBfX3ksIGZsb2F0IF9feikgewogIHJldHVybiBfX29jbWxfZm1hX3J0ZV9mMzIoX194LCBfX3ksIF9feik7Cn0KX19ERVZJQ0VfXwpmbG9hdCBfX2ZtYWZfcnUoZmxvYXQgX194LCBmbG9hdCBfX3ksIGZsb2F0IF9feikgewogIHJldHVybiBfX29jbWxfZm1hX3J0cF9mMzIoX194LCBfX3ksIF9feik7Cn0KX19ERVZJQ0VfXwpmbG9hdCBfX2ZtYWZfcnooZmxvYXQgX194LCBmbG9hdCBfX3ksIGZsb2F0IF9feikgewogIHJldHVybiBfX29jbWxfZm1hX3J0el9mMzIoX194LCBfX3ksIF9feik7Cn0KI2Vsc2UKX19ERVZJQ0VfXwpmbG9hdCBfX2ZtYWZfcm4oZmxvYXQgX194LCBmbG9hdCBfX3ksIGZsb2F0IF9feikgewogIHJldHVybiBfX29jbWxfZm1hX2YzMihfX3gsIF9feSwgX196KTsKfQojZW5kaWYKCiNpZiBkZWZpbmVkIE9DTUxfQkFTSUNfUk9VTkRFRF9PUEVSQVRJT05TCl9fREVWSUNFX18KZmxvYXQgX19mbXVsX3JkKGZsb2F0IF9feCwgZmxvYXQgX195KSB7IHJldHVybiBfX29jbWxfbXVsX3J0bl9mMzIoX194LCBfX3kpOyB9Cl9fREVWSUNFX18KZmxvYXQgX19mbXVsX3JuKGZsb2F0IF9feCwgZmxvYXQgX195KSB7IHJldHVybiBfX29jbWxfbXVsX3J0ZV9mMzIoX194LCBfX3kpOyB9Cl9fREVWSUNFX18KZmxvYXQgX19mbXVsX3J1KGZsb2F0IF9feCwgZmxvYXQgX195KSB7IHJldHVybiBfX29jbWxfbXVsX3J0cF9mMzIoX194LCBfX3kpOyB9Cl9fREVWSUNFX18KZmxvYXQgX19mbXVsX3J6KGZsb2F0IF9feCwgZmxvYXQgX195KSB7IHJldHVybiBfX29jbWxfbXVsX3J0el9mMzIoX194LCBfX3kpOyB9CiNlbHNlCl9fREVWSUNFX18KZmxvYXQgX19mbXVsX3JuKGZsb2F0IF9feCwgZmxvYXQgX195KSB7IHJldHVybiBfX3ggKiBfX3k7IH0KI2VuZGlmCgojaWYgZGVmaW5lZCBPQ01MX0JBU0lDX1JPVU5ERURfT1BFUkFUSU9OUwpfX0RFVklDRV9fCmZsb2F0IF9fZnJjcF9yZChmbG9hdCBfX3gpIHsgcmV0dXJuIF9fb2NtbF9kaXZfcnRuX2YzMigxLjBmLCBfX3gpOyB9Cl9fREVWSUNFX18KZmxvYXQgX19mcmNwX3JuKGZsb2F0IF9feCkgeyByZXR1cm4gX19vY21sX2Rpdl9ydGVfZjMyKDEuMGYsIF9feCk7IH0KX19ERVZJQ0VfXwpmbG9hdCBfX2ZyY3BfcnUoZmxvYXQgX194KSB7IHJldHVybiBfX29jbWxfZGl2X3J0cF9mMzIoMS4wZiwgX194KTsgfQpfX0RFVklDRV9fCmZsb2F0IF9fZnJjcF9yeihmbG9hdCBfX3gpIHsgcmV0dXJuIF9fb2NtbF9kaXZfcnR6X2YzMigxLjBmLCBfX3gpOyB9CiNlbHNlCl9fREVWSUNFX18KZmxvYXQgX19mcmNwX3JuKGZsb2F0IF9feCkgeyByZXR1cm4gMS4wZiAvIF9feDsgfQojZW5kaWYKCl9fREVWSUNFX18KZmxvYXQgX19mcnNxcnRfcm4oZmxvYXQgX194KSB7IHJldHVybiBfX2xsdm1fYW1kZ2NuX3JzcV9mMzIoX194KTsgfQoKI2lmIGRlZmluZWQgT0NNTF9CQVNJQ19ST1VOREVEX09QRVJBVElPTlMKX19ERVZJQ0VfXwpmbG9hdCBfX2ZzcXJ0X3JkKGZsb2F0IF9feCkgeyByZXR1cm4gX19vY21sX3NxcnRfcnRuX2YzMihfX3gpOyB9Cl9fREVWSUNFX18KZmxvYXQgX19mc3FydF9ybihmbG9hdCBfX3gpIHsgcmV0dXJuIF9fb2NtbF9zcXJ0X3J0ZV9mMzIoX194KTsgfQpfX0RFVklDRV9fCmZsb2F0IF9fZnNxcnRfcnUoZmxvYXQgX194KSB7IHJldHVybiBfX29jbWxfc3FydF9ydHBfZjMyKF9feCk7IH0KX19ERVZJQ0VfXwpmbG9hdCBfX2ZzcXJ0X3J6KGZsb2F0IF9feCkgeyByZXR1cm4gX19vY21sX3NxcnRfcnR6X2YzMihfX3gpOyB9CiNlbHNlCl9fREVWSUNFX18KZmxvYXQgX19mc3FydF9ybihmbG9hdCBfX3gpIHsgcmV0dXJuIF9fb2NtbF9uYXRpdmVfc3FydF9mMzIoX194KTsgfQojZW5kaWYKCiNpZiBkZWZpbmVkIE9DTUxfQkFTSUNfUk9VTkRFRF9PUEVSQVRJT05TCl9fREVWSUNFX18KZmxvYXQgX19mc3ViX3JkKGZsb2F0IF9feCwgZmxvYXQgX195KSB7IHJldHVybiBfX29jbWxfc3ViX3J0bl9mMzIoX194LCBfX3kpOyB9Cl9fREVWSUNFX18KZmxvYXQgX19mc3ViX3JuKGZsb2F0IF9feCwgZmxvYXQgX195KSB7IHJldHVybiBfX29jbWxfc3ViX3J0ZV9mMzIoX194LCBfX3kpOyB9Cl9fREVWSUNFX18KZmxvYXQgX19mc3ViX3J1KGZsb2F0IF9feCwgZmxvYXQgX195KSB7IHJldHVybiBfX29jbWxfc3ViX3J0cF9mMzIoX194LCBfX3kpOyB9Cl9fREVWSUNFX18KZmxvYXQgX19mc3ViX3J6KGZsb2F0IF9feCwgZmxvYXQgX195KSB7IHJldHVybiBfX29jbWxfc3ViX3J0el9mMzIoX194LCBfX3kpOyB9CiNlbHNlCl9fREVWSUNFX18KZmxvYXQgX19mc3ViX3JuKGZsb2F0IF9feCwgZmxvYXQgX195KSB7IHJldHVybiBfX3ggLSBfX3k7IH0KI2VuZGlmCgpfX0RFVklDRV9fCmZsb2F0IF9fbG9nMTBmKGZsb2F0IF9feCkgeyByZXR1cm4gX19vY21sX25hdGl2ZV9sb2cxMF9mMzIoX194KTsgfQoKX19ERVZJQ0VfXwpmbG9hdCBfX2xvZzJmKGZsb2F0IF9feCkgeyByZXR1cm4gX19vY21sX25hdGl2ZV9sb2cyX2YzMihfX3gpOyB9CgpfX0RFVklDRV9fCmZsb2F0IF9fbG9nZihmbG9hdCBfX3gpIHsgcmV0dXJuIF9fb2NtbF9uYXRpdmVfbG9nX2YzMihfX3gpOyB9CgpfX0RFVklDRV9fCmZsb2F0IF9fcG93ZihmbG9hdCBfX3gsIGZsb2F0IF9feSkgeyByZXR1cm4gX19vY21sX3Bvd19mMzIoX194LCBfX3kpOyB9CgpfX0RFVklDRV9fCmZsb2F0IF9fc2F0dXJhdGVmKGZsb2F0IF9feCkgeyByZXR1cm4gKF9feCA8IDApID8gMCA6ICgoX194ID4gMSkgPyAxIDogX194KTsgfQoKX19ERVZJQ0VfXwp2b2lkIF9fc2luY29zZihmbG9hdCBfX3gsIGZsb2F0ICpfX3NpbnB0ciwgZmxvYXQgKl9fY29zcHRyKSB7CiAgKl9fc2lucHRyID0gX19vY21sX25hdGl2ZV9zaW5fZjMyKF9feCk7CiAgKl9fY29zcHRyID0gX19vY21sX25hdGl2ZV9jb3NfZjMyKF9feCk7Cn0KCl9fREVWSUNFX18KZmxvYXQgX19zaW5mKGZsb2F0IF9feCkgeyByZXR1cm4gX19vY21sX25hdGl2ZV9zaW5fZjMyKF9feCk7IH0KCl9fREVWSUNFX18KZmxvYXQgX190YW5mKGZsb2F0IF9feCkgeyByZXR1cm4gX19vY21sX3Rhbl9mMzIoX194KTsgfQovLyBFTkQgSU5UUklOU0lDUwovLyBFTkQgRkxPQVQKCi8vIEJFR0lOIERPVUJMRQpfX0RFVklDRV9fCmRvdWJsZSBhY29zKGRvdWJsZSBfX3gpIHsgcmV0dXJuIF9fb2NtbF9hY29zX2Y2NChfX3gpOyB9CgpfX0RFVklDRV9fCmRvdWJsZSBhY29zaChkb3VibGUgX194KSB7IHJldHVybiBfX29jbWxfYWNvc2hfZjY0KF9feCk7IH0KCl9fREVWSUNFX18KZG91YmxlIGFzaW4oZG91YmxlIF9feCkgeyByZXR1cm4gX19vY21sX2FzaW5fZjY0KF9feCk7IH0KCl9fREVWSUNFX18KZG91YmxlIGFzaW5oKGRvdWJsZSBfX3gpIHsgcmV0dXJuIF9fb2NtbF9hc2luaF9mNjQoX194KTsgfQoKX19ERVZJQ0VfXwpkb3VibGUgYXRhbihkb3VibGUgX194KSB7IHJldHVybiBfX29jbWxfYXRhbl9mNjQoX194KTsgfQoKX19ERVZJQ0VfXwpkb3VibGUgYXRhbjIoZG91YmxlIF9feCwgZG91YmxlIF9feSkgeyByZXR1cm4gX19vY21sX2F0YW4yX2Y2NChfX3gsIF9feSk7IH0KCl9fREVWSUNFX18KZG91YmxlIGF0YW5oKGRvdWJsZSBfX3gpIHsgcmV0dXJuIF9fb2NtbF9hdGFuaF9mNjQoX194KTsgfQoKX19ERVZJQ0VfXwpkb3VibGUgY2JydChkb3VibGUgX194KSB7IHJldHVybiBfX29jbWxfY2JydF9mNjQoX194KTsgfQoKX19ERVZJQ0VfXwpkb3VibGUgY2VpbChkb3VibGUgX194KSB7IHJldHVybiBfX29jbWxfY2VpbF9mNjQoX194KTsgfQoKX19ERVZJQ0VfXwpkb3VibGUgY29weXNpZ24oZG91YmxlIF9feCwgZG91YmxlIF9feSkgewogIHJldHVybiBfX29jbWxfY29weXNpZ25fZjY0KF9feCwgX195KTsKfQoKX19ERVZJQ0VfXwpkb3VibGUgY29zKGRvdWJsZSBfX3gpIHsgcmV0dXJuIF9fb2NtbF9jb3NfZjY0KF9feCk7IH0KCl9fREVWSUNFX18KZG91YmxlIGNvc2goZG91YmxlIF9feCkgeyByZXR1cm4gX19vY21sX2Nvc2hfZjY0KF9feCk7IH0KCl9fREVWSUNFX18KZG91YmxlIGNvc3BpKGRvdWJsZSBfX3gpIHsgcmV0dXJuIF9fb2NtbF9jb3NwaV9mNjQoX194KTsgfQoKX19ERVZJQ0VfXwpkb3VibGUgY3lsX2Jlc3NlbF9pMChkb3VibGUgX194KSB7IHJldHVybiBfX29jbWxfaTBfZjY0KF9feCk7IH0KCl9fREVWSUNFX18KZG91YmxlIGN5bF9iZXNzZWxfaTEoZG91YmxlIF9feCkgeyByZXR1cm4gX19vY21sX2kxX2Y2NChfX3gpOyB9CgpfX0RFVklDRV9fCmRvdWJsZSBlcmYoZG91YmxlIF9feCkgeyByZXR1cm4gX19vY21sX2VyZl9mNjQoX194KTsgfQoKX19ERVZJQ0VfXwpkb3VibGUgZXJmYyhkb3VibGUgX194KSB7IHJldHVybiBfX29jbWxfZXJmY19mNjQoX194KTsgfQoKX19ERVZJQ0VfXwpkb3VibGUgZXJmY2ludihkb3VibGUgX194KSB7IHJldHVybiBfX29jbWxfZXJmY2ludl9mNjQoX194KTsgfQoKX19ERVZJQ0VfXwpkb3VibGUgZXJmY3goZG91YmxlIF9feCkgeyByZXR1cm4gX19vY21sX2VyZmN4X2Y2NChfX3gpOyB9CgpfX0RFVklDRV9fCmRvdWJsZSBlcmZpbnYoZG91YmxlIF9feCkgeyByZXR1cm4gX19vY21sX2VyZmludl9mNjQoX194KTsgfQoKX19ERVZJQ0VfXwpkb3VibGUgZXhwKGRvdWJsZSBfX3gpIHsgcmV0dXJuIF9fb2NtbF9leHBfZjY0KF9feCk7IH0KCl9fREVWSUNFX18KZG91YmxlIGV4cDEwKGRvdWJsZSBfX3gpIHsgcmV0dXJuIF9fb2NtbF9leHAxMF9mNjQoX194KTsgfQoKX19ERVZJQ0VfXwpkb3VibGUgZXhwMihkb3VibGUgX194KSB7IHJldHVybiBfX29jbWxfZXhwMl9mNjQoX194KTsgfQoKX19ERVZJQ0VfXwpkb3VibGUgZXhwbTEoZG91YmxlIF9feCkgeyByZXR1cm4gX19vY21sX2V4cG0xX2Y2NChfX3gpOyB9CgpfX0RFVklDRV9fCmRvdWJsZSBmYWJzKGRvdWJsZSBfX3gpIHsgcmV0dXJuIF9fb2NtbF9mYWJzX2Y2NChfX3gpOyB9CgpfX0RFVklDRV9fCmRvdWJsZSBmZGltKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHsgcmV0dXJuIF9fb2NtbF9mZGltX2Y2NChfX3gsIF9feSk7IH0KCl9fREVWSUNFX18KZG91YmxlIGZsb29yKGRvdWJsZSBfX3gpIHsgcmV0dXJuIF9fb2NtbF9mbG9vcl9mNjQoX194KTsgfQoKX19ERVZJQ0VfXwpkb3VibGUgZm1hKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3ksIGRvdWJsZSBfX3opIHsKICByZXR1cm4gX19vY21sX2ZtYV9mNjQoX194LCBfX3ksIF9feik7Cn0KCl9fREVWSUNFX18KZG91YmxlIGZtYXgoZG91YmxlIF9feCwgZG91YmxlIF9feSkgeyByZXR1cm4gX19vY21sX2ZtYXhfZjY0KF9feCwgX195KTsgfQoKX19ERVZJQ0VfXwpkb3VibGUgZm1pbihkb3VibGUgX194LCBkb3VibGUgX195KSB7IHJldHVybiBfX29jbWxfZm1pbl9mNjQoX194LCBfX3kpOyB9CgpfX0RFVklDRV9fCmRvdWJsZSBmbW9kKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHsgcmV0dXJuIF9fb2NtbF9mbW9kX2Y2NChfX3gsIF9feSk7IH0KCl9fREVWSUNFX18KZG91YmxlIGZyZXhwKGRvdWJsZSBfX3gsIGludCAqX19ucHRyKSB7CiAgaW50IF9fdG1wOwojaWZkZWYgX19PUEVOTVBfQU1ER0NOX18KI3ByYWdtYSBvbXAgYWxsb2NhdGUoX190bXApIGFsbG9jYXRvcihvbXBfdGhyZWFkX21lbV9hbGxvYykKI2VuZGlmCiAgZG91YmxlIF9fciA9CiAgICAgIF9fb2NtbF9mcmV4cF9mNjQoX194LCAoX19hdHRyaWJ1dGVfXygoYWRkcmVzc19zcGFjZSg1KSkpIGludCAqKSZfX3RtcCk7CiAgKl9fbnB0ciA9IF9fdG1wOwogIHJldHVybiBfX3I7Cn0KCl9fREVWSUNFX18KZG91YmxlIGh5cG90KGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHsgcmV0dXJuIF9fb2NtbF9oeXBvdF9mNjQoX194LCBfX3kpOyB9CgpfX0RFVklDRV9fCmludCBpbG9nYihkb3VibGUgX194KSB7IHJldHVybiBfX29jbWxfaWxvZ2JfZjY0KF9feCk7IH0KCl9fREVWSUNFX18KX19SRVRVUk5fVFlQRSBfX2Zpbml0ZShkb3VibGUgX194KSB7IHJldHVybiBfX29jbWxfaXNmaW5pdGVfZjY0KF9feCk7IH0KCl9fREVWSUNFX18KX19SRVRVUk5fVFlQRSBfX2lzaW5mKGRvdWJsZSBfX3gpIHsgcmV0dXJuIF9fb2NtbF9pc2luZl9mNjQoX194KTsgfQoKX19ERVZJQ0VfXwpfX1JFVFVSTl9UWVBFIF9faXNuYW4oZG91YmxlIF9feCkgeyByZXR1cm4gX19vY21sX2lzbmFuX2Y2NChfX3gpOyB9CgpfX0RFVklDRV9fCmRvdWJsZSBqMChkb3VibGUgX194KSB7IHJldHVybiBfX29jbWxfajBfZjY0KF9feCk7IH0KCl9fREVWSUNFX18KZG91YmxlIGoxKGRvdWJsZSBfX3gpIHsgcmV0dXJuIF9fb2NtbF9qMV9mNjQoX194KTsgfQoKX19ERVZJQ0VfXwpkb3VibGUgam4oaW50IF9fbiwgZG91YmxlIF9feCkgeyAvLyBUT0RPOiB3ZSBjb3VsZCB1c2UgQWhtZXMgbXVsdGlwbGljYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIHRoZSBNaWxsZXIgJiBCcm93biBhbGdvcml0aG0KICAvLyAgICAgICBmb3IgbGluZWFyIHJlY3VycmVuY2VzIHRvIGdldCBPKGxvZyBuKSBzdGVwcywgYnV0IGl0J3MgdW5jbGVhciBpZgogIC8vICAgICAgIGl0J2QgYmUgYmVuZWZpY2lhbCBpbiB0aGlzIGNhc2UuIFBsYWNlaG9sZGVyIHVudGlsIE9DTUwgYWRkcwogIC8vICAgICAgIHN1cHBvcnQuCiAgaWYgKF9fbiA9PSAwKQogICAgcmV0dXJuIGowKF9feCk7CiAgaWYgKF9fbiA9PSAxKQogICAgcmV0dXJuIGoxKF9feCk7CgogIGRvdWJsZSBfX3gwID0gajAoX194KTsKICBkb3VibGUgX194MSA9IGoxKF9feCk7CiAgZm9yIChpbnQgX19pID0gMTsgX19pIDwgX19uOyArK19faSkgewogICAgZG91YmxlIF9feDIgPSAoMiAqIF9faSkgLyBfX3ggKiBfX3gxIC0gX194MDsKICAgIF9feDAgPSBfX3gxOwogICAgX194MSA9IF9feDI7CiAgfQogIHJldHVybiBfX3gxOwp9CgpfX0RFVklDRV9fCmRvdWJsZSBsZGV4cChkb3VibGUgX194LCBpbnQgX19lKSB7IHJldHVybiBfX29jbWxfbGRleHBfZjY0KF9feCwgX19lKTsgfQoKX19ERVZJQ0VfXwpkb3VibGUgbGdhbW1hKGRvdWJsZSBfX3gpIHsgcmV0dXJuIF9fb2NtbF9sZ2FtbWFfZjY0KF9feCk7IH0KCl9fREVWSUNFX18KbG9uZyBsb25nIGludCBsbHJpbnQoZG91YmxlIF9feCkgeyByZXR1cm4gX19vY21sX3JpbnRfZjY0KF9feCk7IH0KCl9fREVWSUNFX18KbG9uZyBsb25nIGludCBsbHJvdW5kKGRvdWJsZSBfX3gpIHsgcmV0dXJuIF9fb2NtbF9yb3VuZF9mNjQoX194KTsgfQoKX19ERVZJQ0VfXwpkb3VibGUgbG9nKGRvdWJsZSBfX3gpIHsgcmV0dXJuIF9fb2NtbF9sb2dfZjY0KF9feCk7IH0KCl9fREVWSUNFX18KZG91YmxlIGxvZzEwKGRvdWJsZSBfX3gpIHsgcmV0dXJuIF9fb2NtbF9sb2cxMF9mNjQoX194KTsgfQoKX19ERVZJQ0VfXwpkb3VibGUgbG9nMXAoZG91YmxlIF9feCkgeyByZXR1cm4gX19vY21sX2xvZzFwX2Y2NChfX3gpOyB9CgpfX0RFVklDRV9fCmRvdWJsZSBsb2cyKGRvdWJsZSBfX3gpIHsgcmV0dXJuIF9fb2NtbF9sb2cyX2Y2NChfX3gpOyB9CgpfX0RFVklDRV9fCmRvdWJsZSBsb2diKGRvdWJsZSBfX3gpIHsgcmV0dXJuIF9fb2NtbF9sb2diX2Y2NChfX3gpOyB9CgpfX0RFVklDRV9fCmxvbmcgaW50IGxyaW50KGRvdWJsZSBfX3gpIHsgcmV0dXJuIF9fb2NtbF9yaW50X2Y2NChfX3gpOyB9CgpfX0RFVklDRV9fCmxvbmcgaW50IGxyb3VuZChkb3VibGUgX194KSB7IHJldHVybiBfX29jbWxfcm91bmRfZjY0KF9feCk7IH0KCl9fREVWSUNFX18KZG91YmxlIG1vZGYoZG91YmxlIF9feCwgZG91YmxlICpfX2lwdHIpIHsKICBkb3VibGUgX190bXA7CiNpZmRlZiBfX09QRU5NUF9BTURHQ05fXwojcHJhZ21hIG9tcCBhbGxvY2F0ZShfX3RtcCkgYWxsb2NhdG9yKG9tcF90aHJlYWRfbWVtX2FsbG9jKQojZW5kaWYKICBkb3VibGUgX19yID0KICAgICAgX19vY21sX21vZGZfZjY0KF9feCwgKF9fYXR0cmlidXRlX18oKGFkZHJlc3Nfc3BhY2UoNSkpKSBkb3VibGUgKikmX190bXApOwogICpfX2lwdHIgPSBfX3RtcDsKCiAgcmV0dXJuIF9fcjsKfQoKX19ERVZJQ0VfXwpkb3VibGUgbmFuKGNvbnN0IGNoYXIgKl9fdGFncCkgewojaWYgIV9XSU4zMgogIHVuaW9uIHsKICAgIGRvdWJsZSB2YWw7CiAgICBzdHJ1Y3QgaWVlZV9kb3VibGUgewogICAgICB1aW50NjRfdCBtYW50aXNzYSA6IDUxOwogICAgICB1aW50MzJfdCBxdWlldCA6IDE7CiAgICAgIHVpbnQzMl90IGV4cG9uZW50IDogMTE7CiAgICAgIHVpbnQzMl90IHNpZ24gOiAxOwogICAgfSBiaXRzOwogIH0gX190bXA7CiAgX19zdGF0aWNfYXNzZXJ0X3R5cGVfc2l6ZV9lcXVhbChzaXplb2YoX190bXAudmFsKSwgc2l6ZW9mKF9fdG1wLmJpdHMpKTsKCiAgX190bXAuYml0cy5zaWduID0gMHU7CiAgX190bXAuYml0cy5leHBvbmVudCA9IH4wdTsKICBfX3RtcC5iaXRzLnF1aWV0ID0gMXU7CiAgX190bXAuYml0cy5tYW50aXNzYSA9IF9fbWFrZV9tYW50aXNzYShfX3RhZ3ApOwoKICByZXR1cm4gX190bXAudmFsOwojZWxzZQogIF9fc3RhdGljX2Fzc2VydF90eXBlX3NpemVfZXF1YWwoc2l6ZW9mKHVpbnQ2NF90KSwgc2l6ZW9mKGRvdWJsZSkpOwogIHVpbnQ2NF90IF9fdmFsID0gX19tYWtlX21hbnRpc3NhKF9fdGFncCk7CiAgX192YWwgfD0gMHhGRkYgPDwgNTE7CiAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PGRvdWJsZSAqPigmX192YWwpOwojZW5kaWYKfQoKX19ERVZJQ0VfXwpkb3VibGUgbmVhcmJ5aW50KGRvdWJsZSBfX3gpIHsgcmV0dXJuIF9fb2NtbF9uZWFyYnlpbnRfZjY0KF9feCk7IH0KCl9fREVWSUNFX18KZG91YmxlIG5leHRhZnRlcihkb3VibGUgX194LCBkb3VibGUgX195KSB7CiAgcmV0dXJuIF9fb2NtbF9uZXh0YWZ0ZXJfZjY0KF9feCwgX195KTsKfQoKX19ERVZJQ0VfXwpkb3VibGUgbm9ybShpbnQgX19kaW0sCiAgICAgICAgICAgIGNvbnN0IGRvdWJsZSAqX19hKSB7IC8vIFRPRE86IHBsYWNlaG9sZGVyIHVudGlsIE9DTUwgYWRkcyBzdXBwb3J0LgogIGRvdWJsZSBfX3IgPSAwOwogIHdoaWxlIChfX2RpbS0tKSB7CiAgICBfX3IgKz0gX19hWzBdICogX19hWzBdOwogICAgKytfX2E7CiAgfQoKICByZXR1cm4gX19vY21sX3NxcnRfZjY0KF9fcik7Cn0KCl9fREVWSUNFX18KZG91YmxlIG5vcm0zZChkb3VibGUgX194LCBkb3VibGUgX195LCBkb3VibGUgX196KSB7CiAgcmV0dXJuIF9fb2NtbF9sZW4zX2Y2NChfX3gsIF9feSwgX196KTsKfQoKX19ERVZJQ0VfXwpkb3VibGUgbm9ybTRkKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3ksIGRvdWJsZSBfX3osIGRvdWJsZSBfX3cpIHsKICByZXR1cm4gX19vY21sX2xlbjRfZjY0KF9feCwgX195LCBfX3osIF9fdyk7Cn0KCl9fREVWSUNFX18KZG91YmxlIG5vcm1jZGYoZG91YmxlIF9feCkgeyByZXR1cm4gX19vY21sX25jZGZfZjY0KF9feCk7IH0KCl9fREVWSUNFX18KZG91YmxlIG5vcm1jZGZpbnYoZG91YmxlIF9feCkgeyByZXR1cm4gX19vY21sX25jZGZpbnZfZjY0KF9feCk7IH0KCl9fREVWSUNFX18KZG91YmxlIHBvdyhkb3VibGUgX194LCBkb3VibGUgX195KSB7IHJldHVybiBfX29jbWxfcG93X2Y2NChfX3gsIF9feSk7IH0KCl9fREVWSUNFX18KZG91YmxlIHBvd2koZG91YmxlIF9feCwgaW50IF9feSkgeyByZXR1cm4gX19vY21sX3Bvd25fZjY0KF9feCwgX195KTsgfQoKX19ERVZJQ0VfXwpkb3VibGUgcmNicnQoZG91YmxlIF9feCkgeyByZXR1cm4gX19vY21sX3JjYnJ0X2Y2NChfX3gpOyB9CgpfX0RFVklDRV9fCmRvdWJsZSByZW1haW5kZXIoZG91YmxlIF9feCwgZG91YmxlIF9feSkgewogIHJldHVybiBfX29jbWxfcmVtYWluZGVyX2Y2NChfX3gsIF9feSk7Cn0KCl9fREVWSUNFX18KZG91YmxlIHJlbXF1byhkb3VibGUgX194LCBkb3VibGUgX195LCBpbnQgKl9fcXVvKSB7CiAgaW50IF9fdG1wOwojaWZkZWYgX19PUEVOTVBfQU1ER0NOX18KI3ByYWdtYSBvbXAgYWxsb2NhdGUoX190bXApIGFsbG9jYXRvcihvbXBfdGhyZWFkX21lbV9hbGxvYykKI2VuZGlmCiAgZG91YmxlIF9fciA9IF9fb2NtbF9yZW1xdW9fZjY0KAogICAgICBfX3gsIF9feSwgKF9fYXR0cmlidXRlX18oKGFkZHJlc3Nfc3BhY2UoNSkpKSBpbnQgKikmX190bXApOwogICpfX3F1byA9IF9fdG1wOwoKICByZXR1cm4gX19yOwp9CgpfX0RFVklDRV9fCmRvdWJsZSByaHlwb3QoZG91YmxlIF9feCwgZG91YmxlIF9feSkgeyByZXR1cm4gX19vY21sX3JoeXBvdF9mNjQoX194LCBfX3kpOyB9CgpfX0RFVklDRV9fCmRvdWJsZSByaW50KGRvdWJsZSBfX3gpIHsgcmV0dXJuIF9fb2NtbF9yaW50X2Y2NChfX3gpOyB9CgpfX0RFVklDRV9fCmRvdWJsZSBybm9ybShpbnQgX19kaW0sCiAgICAgICAgICAgICBjb25zdCBkb3VibGUgKl9fYSkgeyAvLyBUT0RPOiBwbGFjZWhvbGRlciB1bnRpbCBPQ01MIGFkZHMgc3VwcG9ydC4KICBkb3VibGUgX19yID0gMDsKICB3aGlsZSAoX19kaW0tLSkgewogICAgX19yICs9IF9fYVswXSAqIF9fYVswXTsKICAgICsrX19hOwogIH0KCiAgcmV0dXJuIF9fb2NtbF9yc3FydF9mNjQoX19yKTsKfQoKX19ERVZJQ0VfXwpkb3VibGUgcm5vcm0zZChkb3VibGUgX194LCBkb3VibGUgX195LCBkb3VibGUgX196KSB7CiAgcmV0dXJuIF9fb2NtbF9ybGVuM19mNjQoX194LCBfX3ksIF9feik7Cn0KCl9fREVWSUNFX18KZG91YmxlIHJub3JtNGQoZG91YmxlIF9feCwgZG91YmxlIF9feSwgZG91YmxlIF9feiwgZG91YmxlIF9fdykgewogIHJldHVybiBfX29jbWxfcmxlbjRfZjY0KF9feCwgX195LCBfX3osIF9fdyk7Cn0KCl9fREVWSUNFX18KZG91YmxlIHJvdW5kKGRvdWJsZSBfX3gpIHsgcmV0dXJuIF9fb2NtbF9yb3VuZF9mNjQoX194KTsgfQoKX19ERVZJQ0VfXwpkb3VibGUgcnNxcnQoZG91YmxlIF9feCkgeyByZXR1cm4gX19vY21sX3JzcXJ0X2Y2NChfX3gpOyB9CgpfX0RFVklDRV9fCmRvdWJsZSBzY2FsYmxuKGRvdWJsZSBfX3gsIGxvbmcgaW50IF9fbikgewogIHJldHVybiAoX19uIDwgSU5UX01BWCkgPyBfX29jbWxfc2NhbGJuX2Y2NChfX3gsIF9fbikKICAgICAgICAgICAgICAgICAgICAgICAgIDogX19vY21sX3NjYWxiX2Y2NChfX3gsIF9fbik7Cn0KX19ERVZJQ0VfXwpkb3VibGUgc2NhbGJuKGRvdWJsZSBfX3gsIGludCBfX24pIHsgcmV0dXJuIF9fb2NtbF9zY2FsYm5fZjY0KF9feCwgX19uKTsgfQoKX19ERVZJQ0VfXwpfX1JFVFVSTl9UWVBFIF9fc2lnbmJpdChkb3VibGUgX194KSB7IHJldHVybiBfX29jbWxfc2lnbmJpdF9mNjQoX194KTsgfQoKX19ERVZJQ0VfXwpkb3VibGUgc2luKGRvdWJsZSBfX3gpIHsgcmV0dXJuIF9fb2NtbF9zaW5fZjY0KF9feCk7IH0KCl9fREVWSUNFX18Kdm9pZCBzaW5jb3MoZG91YmxlIF9feCwgZG91YmxlICpfX3NpbnB0ciwgZG91YmxlICpfX2Nvc3B0cikgewogIGRvdWJsZSBfX3RtcDsKI2lmZGVmIF9fT1BFTk1QX0FNREdDTl9fCiNwcmFnbWEgb21wIGFsbG9jYXRlKF9fdG1wKSBhbGxvY2F0b3Iob21wX3RocmVhZF9tZW1fYWxsb2MpCiNlbmRpZgogICpfX3NpbnB0ciA9IF9fb2NtbF9zaW5jb3NfZjY0KAogICAgICBfX3gsIChfX2F0dHJpYnV0ZV9fKChhZGRyZXNzX3NwYWNlKDUpKSkgZG91YmxlICopJl9fdG1wKTsKICAqX19jb3NwdHIgPSBfX3RtcDsKfQoKX19ERVZJQ0VfXwp2b2lkIHNpbmNvc3BpKGRvdWJsZSBfX3gsIGRvdWJsZSAqX19zaW5wdHIsIGRvdWJsZSAqX19jb3NwdHIpIHsKICBkb3VibGUgX190bXA7CiNpZmRlZiBfX09QRU5NUF9BTURHQ05fXwojcHJhZ21hIG9tcCBhbGxvY2F0ZShfX3RtcCkgYWxsb2NhdG9yKG9tcF90aHJlYWRfbWVtX2FsbG9jKQojZW5kaWYKICAqX19zaW5wdHIgPSBfX29jbWxfc2luY29zcGlfZjY0KAogICAgICBfX3gsIChfX2F0dHJpYnV0ZV9fKChhZGRyZXNzX3NwYWNlKDUpKSkgZG91YmxlICopJl9fdG1wKTsKICAqX19jb3NwdHIgPSBfX3RtcDsKfQoKX19ERVZJQ0VfXwpkb3VibGUgc2luaChkb3VibGUgX194KSB7IHJldHVybiBfX29jbWxfc2luaF9mNjQoX194KTsgfQoKX19ERVZJQ0VfXwpkb3VibGUgc2lucGkoZG91YmxlIF9feCkgeyByZXR1cm4gX19vY21sX3NpbnBpX2Y2NChfX3gpOyB9CgpfX0RFVklDRV9fCmRvdWJsZSBzcXJ0KGRvdWJsZSBfX3gpIHsgcmV0dXJuIF9fb2NtbF9zcXJ0X2Y2NChfX3gpOyB9CgpfX0RFVklDRV9fCmRvdWJsZSB0YW4oZG91YmxlIF9feCkgeyByZXR1cm4gX19vY21sX3Rhbl9mNjQoX194KTsgfQoKX19ERVZJQ0VfXwpkb3VibGUgdGFuaChkb3VibGUgX194KSB7IHJldHVybiBfX29jbWxfdGFuaF9mNjQoX194KTsgfQoKX19ERVZJQ0VfXwpkb3VibGUgdGdhbW1hKGRvdWJsZSBfX3gpIHsgcmV0dXJuIF9fb2NtbF90Z2FtbWFfZjY0KF9feCk7IH0KCl9fREVWSUNFX18KZG91YmxlIHRydW5jKGRvdWJsZSBfX3gpIHsgcmV0dXJuIF9fb2NtbF90cnVuY19mNjQoX194KTsgfQoKX19ERVZJQ0VfXwpkb3VibGUgeTAoZG91YmxlIF9feCkgeyByZXR1cm4gX19vY21sX3kwX2Y2NChfX3gpOyB9CgpfX0RFVklDRV9fCmRvdWJsZSB5MShkb3VibGUgX194KSB7IHJldHVybiBfX29jbWxfeTFfZjY0KF9feCk7IH0KCl9fREVWSUNFX18KZG91YmxlIHluKGludCBfX24sIGRvdWJsZSBfX3gpIHsgLy8gVE9ETzogd2UgY291bGQgdXNlIEFobWVzIG11bHRpcGxpY2F0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCB0aGUgTWlsbGVyICYgQnJvd24gYWxnb3JpdGhtCiAgLy8gICAgICAgZm9yIGxpbmVhciByZWN1cnJlbmNlcyB0byBnZXQgTyhsb2cgbikgc3RlcHMsIGJ1dCBpdCdzIHVuY2xlYXIgaWYKICAvLyAgICAgICBpdCdkIGJlIGJlbmVmaWNpYWwgaW4gdGhpcyBjYXNlLiBQbGFjZWhvbGRlciB1bnRpbCBPQ01MIGFkZHMKICAvLyAgICAgICBzdXBwb3J0LgogIGlmIChfX24gPT0gMCkKICAgIHJldHVybiB5MChfX3gpOwogIGlmIChfX24gPT0gMSkKICAgIHJldHVybiB5MShfX3gpOwoKICBkb3VibGUgX194MCA9IHkwKF9feCk7CiAgZG91YmxlIF9feDEgPSB5MShfX3gpOwogIGZvciAoaW50IF9faSA9IDE7IF9faSA8IF9fbjsgKytfX2kpIHsKICAgIGRvdWJsZSBfX3gyID0gKDIgKiBfX2kpIC8gX194ICogX194MSAtIF9feDA7CiAgICBfX3gwID0gX194MTsKICAgIF9feDEgPSBfX3gyOwogIH0KCiAgcmV0dXJuIF9feDE7Cn0KCi8vIEJFR0lOIElOVFJJTlNJQ1MKI2lmIGRlZmluZWQgT0NNTF9CQVNJQ19ST1VOREVEX09QRVJBVElPTlMKX19ERVZJQ0VfXwpkb3VibGUgX19kYWRkX3JkKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHsKICByZXR1cm4gX19vY21sX2FkZF9ydG5fZjY0KF9feCwgX195KTsKfQpfX0RFVklDRV9fCmRvdWJsZSBfX2RhZGRfcm4oZG91YmxlIF9feCwgZG91YmxlIF9feSkgewogIHJldHVybiBfX29jbWxfYWRkX3J0ZV9mNjQoX194LCBfX3kpOwp9Cl9fREVWSUNFX18KZG91YmxlIF9fZGFkZF9ydShkb3VibGUgX194LCBkb3VibGUgX195KSB7CiAgcmV0dXJuIF9fb2NtbF9hZGRfcnRwX2Y2NChfX3gsIF9feSk7Cn0KX19ERVZJQ0VfXwpkb3VibGUgX19kYWRkX3J6KGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHsKICByZXR1cm4gX19vY21sX2FkZF9ydHpfZjY0KF9feCwgX195KTsKfQojZWxzZQpfX0RFVklDRV9fCmRvdWJsZSBfX2RhZGRfcm4oZG91YmxlIF9feCwgZG91YmxlIF9feSkgeyByZXR1cm4gX194ICsgX195OyB9CiNlbmRpZgoKI2lmIGRlZmluZWQgT0NNTF9CQVNJQ19ST1VOREVEX09QRVJBVElPTlMKX19ERVZJQ0VfXwpkb3VibGUgX19kZGl2X3JkKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHsKICByZXR1cm4gX19vY21sX2Rpdl9ydG5fZjY0KF9feCwgX195KTsKfQpfX0RFVklDRV9fCmRvdWJsZSBfX2RkaXZfcm4oZG91YmxlIF9feCwgZG91YmxlIF9feSkgewogIHJldHVybiBfX29jbWxfZGl2X3J0ZV9mNjQoX194LCBfX3kpOwp9Cl9fREVWSUNFX18KZG91YmxlIF9fZGRpdl9ydShkb3VibGUgX194LCBkb3VibGUgX195KSB7CiAgcmV0dXJuIF9fb2NtbF9kaXZfcnRwX2Y2NChfX3gsIF9feSk7Cn0KX19ERVZJQ0VfXwpkb3VibGUgX19kZGl2X3J6KGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHsKICByZXR1cm4gX19vY21sX2Rpdl9ydHpfZjY0KF9feCwgX195KTsKfQojZWxzZQpfX0RFVklDRV9fCmRvdWJsZSBfX2RkaXZfcm4oZG91YmxlIF9feCwgZG91YmxlIF9feSkgeyByZXR1cm4gX194IC8gX195OyB9CiNlbmRpZgoKI2lmIGRlZmluZWQgT0NNTF9CQVNJQ19ST1VOREVEX09QRVJBVElPTlMKX19ERVZJQ0VfXwpkb3VibGUgX19kbXVsX3JkKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHsKICByZXR1cm4gX19vY21sX211bF9ydG5fZjY0KF9feCwgX195KTsKfQpfX0RFVklDRV9fCmRvdWJsZSBfX2RtdWxfcm4oZG91YmxlIF9feCwgZG91YmxlIF9feSkgewogIHJldHVybiBfX29jbWxfbXVsX3J0ZV9mNjQoX194LCBfX3kpOwp9Cl9fREVWSUNFX18KZG91YmxlIF9fZG11bF9ydShkb3VibGUgX194LCBkb3VibGUgX195KSB7CiAgcmV0dXJuIF9fb2NtbF9tdWxfcnRwX2Y2NChfX3gsIF9feSk7Cn0KX19ERVZJQ0VfXwpkb3VibGUgX19kbXVsX3J6KGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHsKICByZXR1cm4gX19vY21sX211bF9ydHpfZjY0KF9feCwgX195KTsKfQojZWxzZQpfX0RFVklDRV9fCmRvdWJsZSBfX2RtdWxfcm4oZG91YmxlIF9feCwgZG91YmxlIF9feSkgeyByZXR1cm4gX194ICogX195OyB9CiNlbmRpZgoKI2lmIGRlZmluZWQgT0NNTF9CQVNJQ19ST1VOREVEX09QRVJBVElPTlMKX19ERVZJQ0VfXwpkb3VibGUgX19kcmNwX3JkKGRvdWJsZSBfX3gpIHsgcmV0dXJuIF9fb2NtbF9kaXZfcnRuX2Y2NCgxLjAsIF9feCk7IH0KX19ERVZJQ0VfXwpkb3VibGUgX19kcmNwX3JuKGRvdWJsZSBfX3gpIHsgcmV0dXJuIF9fb2NtbF9kaXZfcnRlX2Y2NCgxLjAsIF9feCk7IH0KX19ERVZJQ0VfXwpkb3VibGUgX19kcmNwX3J1KGRvdWJsZSBfX3gpIHsgcmV0dXJuIF9fb2NtbF9kaXZfcnRwX2Y2NCgxLjAsIF9feCk7IH0KX19ERVZJQ0VfXwpkb3VibGUgX19kcmNwX3J6KGRvdWJsZSBfX3gpIHsgcmV0dXJuIF9fb2NtbF9kaXZfcnR6X2Y2NCgxLjAsIF9feCk7IH0KI2Vsc2UKX19ERVZJQ0VfXwpkb3VibGUgX19kcmNwX3JuKGRvdWJsZSBfX3gpIHsgcmV0dXJuIDEuMCAvIF9feDsgfQojZW5kaWYKCiNpZiBkZWZpbmVkIE9DTUxfQkFTSUNfUk9VTkRFRF9PUEVSQVRJT05TCl9fREVWSUNFX18KZG91YmxlIF9fZHNxcnRfcmQoZG91YmxlIF9feCkgeyByZXR1cm4gX19vY21sX3NxcnRfcnRuX2Y2NChfX3gpOyB9Cl9fREVWSUNFX18KZG91YmxlIF9fZHNxcnRfcm4oZG91YmxlIF9feCkgeyByZXR1cm4gX19vY21sX3NxcnRfcnRlX2Y2NChfX3gpOyB9Cl9fREVWSUNFX18KZG91YmxlIF9fZHNxcnRfcnUoZG91YmxlIF9feCkgeyByZXR1cm4gX19vY21sX3NxcnRfcnRwX2Y2NChfX3gpOyB9Cl9fREVWSUNFX18KZG91YmxlIF9fZHNxcnRfcnooZG91YmxlIF9feCkgeyByZXR1cm4gX19vY21sX3NxcnRfcnR6X2Y2NChfX3gpOyB9CiNlbHNlCl9fREVWSUNFX18KZG91YmxlIF9fZHNxcnRfcm4oZG91YmxlIF9feCkgeyByZXR1cm4gX19vY21sX3NxcnRfZjY0KF9feCk7IH0KI2VuZGlmCgojaWYgZGVmaW5lZCBPQ01MX0JBU0lDX1JPVU5ERURfT1BFUkFUSU9OUwpfX0RFVklDRV9fCmRvdWJsZSBfX2RzdWJfcmQoZG91YmxlIF9feCwgZG91YmxlIF9feSkgewogIHJldHVybiBfX29jbWxfc3ViX3J0bl9mNjQoX194LCBfX3kpOwp9Cl9fREVWSUNFX18KZG91YmxlIF9fZHN1Yl9ybihkb3VibGUgX194LCBkb3VibGUgX195KSB7CiAgcmV0dXJuIF9fb2NtbF9zdWJfcnRlX2Y2NChfX3gsIF9feSk7Cn0KX19ERVZJQ0VfXwpkb3VibGUgX19kc3ViX3J1KGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHsKICByZXR1cm4gX19vY21sX3N1Yl9ydHBfZjY0KF9feCwgX195KTsKfQpfX0RFVklDRV9fCmRvdWJsZSBfX2RzdWJfcnooZG91YmxlIF9feCwgZG91YmxlIF9feSkgewogIHJldHVybiBfX29jbWxfc3ViX3J0el9mNjQoX194LCBfX3kpOwp9CiNlbHNlCl9fREVWSUNFX18KZG91YmxlIF9fZHN1Yl9ybihkb3VibGUgX194LCBkb3VibGUgX195KSB7IHJldHVybiBfX3ggLSBfX3k7IH0KI2VuZGlmCgojaWYgZGVmaW5lZCBPQ01MX0JBU0lDX1JPVU5ERURfT1BFUkFUSU9OUwpfX0RFVklDRV9fCmRvdWJsZSBfX2ZtYV9yZChkb3VibGUgX194LCBkb3VibGUgX195LCBkb3VibGUgX196KSB7CiAgcmV0dXJuIF9fb2NtbF9mbWFfcnRuX2Y2NChfX3gsIF9feSwgX196KTsKfQpfX0RFVklDRV9fCmRvdWJsZSBfX2ZtYV9ybihkb3VibGUgX194LCBkb3VibGUgX195LCBkb3VibGUgX196KSB7CiAgcmV0dXJuIF9fb2NtbF9mbWFfcnRlX2Y2NChfX3gsIF9feSwgX196KTsKfQpfX0RFVklDRV9fCmRvdWJsZSBfX2ZtYV9ydShkb3VibGUgX194LCBkb3VibGUgX195LCBkb3VibGUgX196KSB7CiAgcmV0dXJuIF9fb2NtbF9mbWFfcnRwX2Y2NChfX3gsIF9feSwgX196KTsKfQpfX0RFVklDRV9fCmRvdWJsZSBfX2ZtYV9yeihkb3VibGUgX194LCBkb3VibGUgX195LCBkb3VibGUgX196KSB7CiAgcmV0dXJuIF9fb2NtbF9mbWFfcnR6X2Y2NChfX3gsIF9feSwgX196KTsKfQojZWxzZQpfX0RFVklDRV9fCmRvdWJsZSBfX2ZtYV9ybihkb3VibGUgX194LCBkb3VibGUgX195LCBkb3VibGUgX196KSB7CiAgcmV0dXJuIF9fb2NtbF9mbWFfZjY0KF9feCwgX195LCBfX3opOwp9CiNlbmRpZgovLyBFTkQgSU5UUklOU0lDUwovLyBFTkQgRE9VQkxFCgovLyBDIG9ubHkgbWFjcm9zCiNpZiAhZGVmaW5lZChfX2NwbHVzcGx1cykgJiYgX19TVERDX1ZFUlNJT05fXyA+PSAyMDExMTJMCiNkZWZpbmUgaXNmaW5pdGUoX194KSBfR2VuZXJpYygoX194KSwgZmxvYXQgOiBfX2Zpbml0ZWYsIGRvdWJsZSA6IF9fZmluaXRlKShfX3gpCiNkZWZpbmUgaXNpbmYoX194KSBfR2VuZXJpYygoX194KSwgZmxvYXQgOiBfX2lzaW5mZiwgZG91YmxlIDogX19pc2luZikoX194KQojZGVmaW5lIGlzbmFuKF9feCkgX0dlbmVyaWMoKF9feCksIGZsb2F0IDogX19pc25hbmYsIGRvdWJsZSA6IF9faXNuYW4pKF9feCkKI2RlZmluZSBzaWduYml0KF9feCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfR2VuZXJpYygoX194KSwgZmxvYXQgOiBfX3NpZ25iaXRmLCBkb3VibGUgOiBfX3NpZ25iaXQpKF9feCkKI2VuZGlmIC8vICFkZWZpbmVkKF9fY3BsdXNwbHVzKSAmJiBfX1NURENfVkVSU0lPTl9fID49IDIwMTExMkwKCiNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQp0ZW1wbGF0ZSA8Y2xhc3MgVD4gX19ERVZJQ0VfXyBUIG1pbihUIF9fYXJnMSwgVCBfX2FyZzIpIHsKICByZXR1cm4gKF9fYXJnMSA8IF9fYXJnMikgPyBfX2FyZzEgOiBfX2FyZzI7Cn0KCnRlbXBsYXRlIDxjbGFzcyBUPiBfX0RFVklDRV9fIFQgbWF4KFQgX19hcmcxLCBUIF9fYXJnMikgewogIHJldHVybiAoX19hcmcxID4gX19hcmcyKSA/IF9fYXJnMSA6IF9fYXJnMjsKfQoKX19ERVZJQ0VfXyBpbnQgbWluKGludCBfX2FyZzEsIGludCBfX2FyZzIpIHsKICByZXR1cm4gKF9fYXJnMSA8IF9fYXJnMikgPyBfX2FyZzEgOiBfX2FyZzI7Cn0KX19ERVZJQ0VfXyBpbnQgbWF4KGludCBfX2FyZzEsIGludCBfX2FyZzIpIHsKICByZXR1cm4gKF9fYXJnMSA+IF9fYXJnMikgPyBfX2FyZzEgOiBfX2FyZzI7Cn0KCl9fREVWSUNFX18KZmxvYXQgbWF4KGZsb2F0IF9feCwgZmxvYXQgX195KSB7IHJldHVybiBmbWF4ZihfX3gsIF9feSk7IH0KCl9fREVWSUNFX18KZG91YmxlIG1heChkb3VibGUgX194LCBkb3VibGUgX195KSB7IHJldHVybiBmbWF4KF9feCwgX195KTsgfQoKX19ERVZJQ0VfXwpmbG9hdCBtaW4oZmxvYXQgX194LCBmbG9hdCBfX3kpIHsgcmV0dXJuIGZtaW5mKF9feCwgX195KTsgfQoKX19ERVZJQ0VfXwpkb3VibGUgbWluKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHsgcmV0dXJuIGZtaW4oX194LCBfX3kpOyB9CgojaWYgIWRlZmluZWQoX19ISVBDQ19SVENfXykgJiYgIWRlZmluZWQoX19PUEVOTVBfQU1ER0NOX18pCl9faG9zdF9fIGlubGluZSBzdGF0aWMgaW50IG1pbihpbnQgX19hcmcxLCBpbnQgX19hcmcyKSB7CiAgcmV0dXJuIHN0ZDo6bWluKF9fYXJnMSwgX19hcmcyKTsKfQoKX19ob3N0X18gaW5saW5lIHN0YXRpYyBpbnQgbWF4KGludCBfX2FyZzEsIGludCBfX2FyZzIpIHsKICByZXR1cm4gc3RkOjptYXgoX19hcmcxLCBfX2FyZzIpOwp9CiNlbmRpZiAvLyAhZGVmaW5lZChfX0hJUENDX1JUQ19fKSAmJiAhZGVmaW5lZChfX09QRU5NUF9BTURHQ05fXykKI2VuZGlmCgojcHJhZ21hIHBvcF9tYWNybygiX19ERVZJQ0VfXyIpCiNwcmFnbWEgcG9wX21hY3JvKCJfX1JFVFVSTl9UWVBFIikKCiNlbmRpZiAvLyBfX0NMQU5HX0hJUF9NQVRIX0hfXwoALyo9PT0tLS0tIF9fd21taW50cmluX2Flcy5oIC0gQUVTIGludHJpbnNpY3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwoKI2lmbmRlZiBfX1dNTUlOVFJJTl9ICiNlcnJvciAiTmV2ZXIgdXNlIDxfX3dtbWludHJpbl9hZXMuaD4gZGlyZWN0bHk7IGluY2x1ZGUgPHdtbWludHJpbi5oPiBpbnN0ZWFkLiIKI2VuZGlmCgojaWZuZGVmIF9fV01NSU5UUklOX0FFU19ICiNkZWZpbmUgX19XTU1JTlRSSU5fQUVTX0gKCi8qIERlZmluZSB0aGUgZGVmYXVsdCBhdHRyaWJ1dGVzIGZvciB0aGUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZS4gKi8KI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJhZXMiKSwgX19taW5fdmVjdG9yX3dpZHRoX18oMTI4KSkpCgovLy8gUGVyZm9ybXMgYSBzaW5nbGUgcm91bmQgb2YgQUVTIGVuY3J5cHRpb24gdXNpbmcgdGhlIEVxdWl2YWxlbnQKLy8vICAgIEludmVyc2UgQ2lwaGVyLCB0cmFuc2Zvcm1pbmcgdGhlIHN0YXRlIHZhbHVlIGZyb20gdGhlIGZpcnN0IHNvdXJjZQovLy8gICAgb3BlcmFuZCB1c2luZyBhIDEyOC1iaXQgcm91bmQga2V5IHZhbHVlIGNvbnRhaW5lZCBpbiB0aGUgc2Vjb25kIHNvdXJjZQovLy8gICAgb3BlcmFuZCwgYW5kIHdyaXRlcyB0aGUgcmVzdWx0IHRvIHRoZSBkZXN0aW5hdGlvbi4KLy8vCi8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+Ci8vLwovLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQUVTRU5DIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fVgovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHN0YXRlIHZhbHVlLgovLy8gXHBhcmFtIF9fUgovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHJvdW5kIGtleSB2YWx1ZS4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBlbmNyeXB0ZWQgdmFsdWUuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9hZXNlbmNfc2kxMjgoX19tMTI4aSBfX1YsIF9fbTEyOGkgX19SKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX2Flc2VuYzEyOCgoX192MmRpKV9fViwgKF9fdjJkaSlfX1IpOwp9CgovLy8gUGVyZm9ybXMgdGhlIGZpbmFsIHJvdW5kIG9mIEFFUyBlbmNyeXB0aW9uIHVzaW5nIHRoZSBFcXVpdmFsZW50Ci8vLyAgICBJbnZlcnNlIENpcGhlciwgdHJhbnNmb3JtaW5nIHRoZSBzdGF0ZSB2YWx1ZSBmcm9tIHRoZSBmaXJzdCBzb3VyY2UKLy8vICAgIG9wZXJhbmQgdXNpbmcgYSAxMjgtYml0IHJvdW5kIGtleSB2YWx1ZSBjb250YWluZWQgaW4gdGhlIHNlY29uZCBzb3VyY2UKLy8vICAgIG9wZXJhbmQsIGFuZCB3cml0ZXMgdGhlIHJlc3VsdCB0byB0aGUgZGVzdGluYXRpb24uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkFFU0VOQ0xBU1QgPC9jPiBpbnN0cnVjdGlvbi4KLy8vCi8vLyBccGFyYW0gX19WCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgc3RhdGUgdmFsdWUuCi8vLyBccGFyYW0gX19SCi8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgcm91bmQga2V5IHZhbHVlLgovLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGVuY3J5cHRlZCB2YWx1ZS4Kc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2Flc2VuY2xhc3Rfc2kxMjgoX19tMTI4aSBfX1YsIF9fbTEyOGkgX19SKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX2Flc2VuY2xhc3QxMjgoKF9fdjJkaSlfX1YsIChfX3YyZGkpX19SKTsKfQoKLy8vIFBlcmZvcm1zIGEgc2luZ2xlIHJvdW5kIG9mIEFFUyBkZWNyeXB0aW9uIHVzaW5nIHRoZSBFcXVpdmFsZW50Ci8vLyAgICBJbnZlcnNlIENpcGhlciwgdHJhbnNmb3JtaW5nIHRoZSBzdGF0ZSB2YWx1ZSBmcm9tIHRoZSBmaXJzdCBzb3VyY2UKLy8vICAgIG9wZXJhbmQgdXNpbmcgYSAxMjgtYml0IHJvdW5kIGtleSB2YWx1ZSBjb250YWluZWQgaW4gdGhlIHNlY29uZCBzb3VyY2UKLy8vICAgIG9wZXJhbmQsIGFuZCB3cml0ZXMgdGhlIHJlc3VsdCB0byB0aGUgZGVzdGluYXRpb24uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkFFU0RFQyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX1YKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBzdGF0ZSB2YWx1ZS4KLy8vIFxwYXJhbSBfX1IKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSByb3VuZCBrZXkgdmFsdWUuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgZGVjcnlwdGVkIHZhbHVlLgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fYWVzZGVjX3NpMTI4KF9fbTEyOGkgX19WLCBfX20xMjhpIF9fUikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9hZXNkZWMxMjgoKF9fdjJkaSlfX1YsIChfX3YyZGkpX19SKTsKfQoKLy8vIFBlcmZvcm1zIHRoZSBmaW5hbCByb3VuZCBvZiBBRVMgZGVjcnlwdGlvbiB1c2luZyB0aGUgRXF1aXZhbGVudAovLy8gICAgSW52ZXJzZSBDaXBoZXIsIHRyYW5zZm9ybWluZyB0aGUgc3RhdGUgdmFsdWUgZnJvbSB0aGUgZmlyc3Qgc291cmNlCi8vLyAgICBvcGVyYW5kIHVzaW5nIGEgMTI4LWJpdCByb3VuZCBrZXkgdmFsdWUgY29udGFpbmVkIGluIHRoZSBzZWNvbmQgc291cmNlCi8vLyAgICBvcGVyYW5kLCBhbmQgd3JpdGVzIHRoZSByZXN1bHQgdG8gdGhlIGRlc3RpbmF0aW9uLgovLy8KLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLy8vCi8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZBRVNERUNMQVNUIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIF9fVgovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHN0YXRlIHZhbHVlLgovLy8gXHBhcmFtIF9fUgovLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHJvdW5kIGtleSB2YWx1ZS4KLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBkZWNyeXB0ZWQgdmFsdWUuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9hZXNkZWNsYXN0X3NpMTI4KF9fbTEyOGkgX19WLCBfX20xMjhpIF9fUikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9hZXNkZWNsYXN0MTI4KChfX3YyZGkpX19WLCAoX192MmRpKV9fUik7Cn0KCi8vLyBBcHBsaWVzIHRoZSBBRVMgSW52TWl4Q29sdW1ucygpIHRyYW5zZm9ybWF0aW9uIHRvIGFuIGV4cGFuZGVkIGtleQovLy8gICAgY29udGFpbmVkIGluIHRoZSBzb3VyY2Ugb3BlcmFuZCwgYW5kIHdyaXRlcyB0aGUgcmVzdWx0IHRvIHRoZQovLy8gICAgZGVzdGluYXRpb24uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkFFU0lNQyA8L2M+IGluc3RydWN0aW9uLgovLy8KLy8vIFxwYXJhbSBfX1YKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBleHBhbmRlZCBrZXkuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgdHJhbnNmb3JtZWQgdmFsdWUuCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9hZXNpbWNfc2kxMjgoX19tMTI4aSBfX1YpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfYWVzaW1jMTI4KChfX3YyZGkpX19WKTsKfQoKLy8vIEdlbmVyYXRlcyBhIHJvdW5kIGtleSBmb3IgQUVTIGVuY3J5cHRpb24sIG9wZXJhdGluZyBvbiAxMjgtYml0IGRhdGEKLy8vICAgIHNwZWNpZmllZCBpbiB0aGUgZmlyc3Qgc291cmNlIG9wZXJhbmQgYW5kIHVzaW5nIGFuIDgtYml0IHJvdW5kIGNvbnN0YW50Ci8vLyAgICBzcGVjaWZpZWQgYnkgdGhlIHNlY29uZCBzb3VyY2Ugb3BlcmFuZCwgYW5kIHdyaXRlcyB0aGUgcmVzdWx0IHRvIHRoZQovLy8gICAgZGVzdGluYXRpb24uCi8vLwovLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgovLy8KLy8vIFxjb2RlCi8vLyBfX20xMjhpIF9tbV9hZXNrZXlnZW5hc3Npc3Rfc2kxMjgoX19tMTI4aSBDLCBjb25zdCBpbnQgUik7Ci8vLyBcZW5kY29kZQovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gQUVTS0VZR0VOQVNTSVNUIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXHBhcmFtIEMKLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciB0aGF0IGlzIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIEFFUyBlbmNyeXB0aW9uIGtleS4KLy8vIFxwYXJhbSBSCi8vLyAgICBBbiA4LWJpdCByb3VuZCBjb25zdGFudCB1c2VkIHRvIGdlbmVyYXRlIHRoZSBBRVMgZW5jcnlwdGlvbiBrZXkuCi8vLyBccmV0dXJucyBBIDEyOC1iaXQgcm91bmQga2V5IGZvciBBRVMgZW5jcnlwdGlvbi4KI2RlZmluZSBfbW1fYWVza2V5Z2VuYXNzaXN0X3NpMTI4KEMsIFIpIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfYWVza2V5Z2VuYXNzaXN0MTI4KChfX3YyZGkpKF9fbTEyOGkpKEMpLCAoaW50KShSKSkpCgojdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTCgojZW5kaWYgIC8qIF9fV01NSU5UUklOX0FFU19IICovCgAvKj09PS0tLS0tLS0tLS0tLS0gYXZ4NTEyY2RpbnRyaW4uaCAtIEFWWDUxMkNEIGludHJpbnNpY3MgLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqCiAqCiAqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCiAqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCiNpZm5kZWYgX19JTU1JTlRSSU5fSAojZXJyb3IgIk5ldmVyIHVzZSA8YXZ4NTEyY2RpbnRyaW4uaD4gZGlyZWN0bHk7IGluY2x1ZGUgPGltbWludHJpbi5oPiBpbnN0ZWFkLiIKI2VuZGlmCgojaWZuZGVmIF9fQVZYNTEyQ0RJTlRSSU5fSAojZGVmaW5lIF9fQVZYNTEyQ0RJTlRSSU5fSAoKLyogRGVmaW5lIHRoZSBkZWZhdWx0IGF0dHJpYnV0ZXMgZm9yIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlLiAqLwojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUyBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oImF2eDUxMmNkIiksIF9fbWluX3ZlY3Rvcl93aWR0aF9fKDUxMikpKQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tNTEyX2NvbmZsaWN0X2VwaTY0IChfX201MTJpIF9fQSkKewogIHJldHVybiAoX19tNTEyaSkgX19idWlsdGluX2lhMzJfdnBjb25mbGljdGRpXzUxMiAoKF9fdjhkaSkgX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tNTEyX21hc2tfY29uZmxpY3RfZXBpNjQgKF9fbTUxMmkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTUxMmkgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfNTEyKChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX2NvbmZsaWN0X2VwaTY0KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tNTEyX21hc2t6X2NvbmZsaWN0X2VwaTY0IChfX21tYXNrOCBfX1UsIF9fbTUxMmkgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfNTEyKChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX2NvbmZsaWN0X2VwaTY0KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4ZGkpX21tNTEyX3NldHplcm9fc2k1MTIgKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW01MTJfY29uZmxpY3RfZXBpMzIgKF9fbTUxMmkgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKSBfX2J1aWx0aW5faWEzMl92cGNvbmZsaWN0c2lfNTEyICgoX192MTZzaSkgX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tNTEyX21hc2tfY29uZmxpY3RfZXBpMzIgKF9fbTUxMmkgX19XLCBfX21tYXNrMTYgX19VLCBfX201MTJpIF9fQSkKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzUxMigoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfY29uZmxpY3RfZXBpMzIoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW01MTJfbWFza3pfY29uZmxpY3RfZXBpMzIgKF9fbW1hc2sxNiBfX1UsIF9fbTUxMmkgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfNTEyKChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9jb25mbGljdF9lcGkzMihfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW01MTJfbHpjbnRfZXBpMzIgKF9fbTUxMmkgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKSBfX2J1aWx0aW5faWEzMl92cGx6Y250ZF81MTIgKChfX3YxNnNpKSBfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW01MTJfbWFza19semNudF9lcGkzMiAoX19tNTEyaSBfX1csIF9fbW1hc2sxNiBfX1UsIF9fbTUxMmkgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfNTEyKChfX21tYXNrMTYpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZzaSlfbW01MTJfbHpjbnRfZXBpMzIoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tNTEyX21hc2t6X2x6Y250X2VwaTMyIChfX21tYXNrMTYgX19VLCBfX201MTJpIF9fQSkKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzUxMigoX19tbWFzazE2KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2c2kpX21tNTEyX2x6Y250X2VwaTMyKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnNpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW01MTJfbHpjbnRfZXBpNjQgKF9fbTUxMmkgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKSBfX2J1aWx0aW5faWEzMl92cGx6Y250cV81MTIgKChfX3Y4ZGkpIF9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTUxMl9tYXNrX2x6Y250X2VwaTY0IChfX201MTJpIF9fVywgX19tbWFzazggX19VLCBfX201MTJpIF9fQSkKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzUxMigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9semNudF9lcGk2NChfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTUxMl9tYXNrel9semNudF9lcGk2NCAoX19tbWFzazggX19VLCBfX201MTJpIF9fQSkKewogIHJldHVybiAoX19tNTEyaSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzUxMigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9semNudF9lcGk2NChfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGRpKV9tbTUxMl9zZXR6ZXJvX3NpNTEyKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW01MTJfYnJvYWRjYXN0bWJfZXBpNjQgKF9fbW1hc2s4IF9fQSkKewogIHJldHVybiAoX19tNTEyaSkgX21tNTEyX3NldDFfZXBpNjQoKGxvbmcgbG9uZykgX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tNTEyX2Jyb2FkY2FzdG13X2VwaTMyIChfX21tYXNrMTYgX19BKQp7CiAgcmV0dXJuIChfX201MTJpKSBfbW01MTJfc2V0MV9lcGkzMigoaW50KSBfX0EpOwoKfQoKI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUwoKI2VuZGlmCgBhdng1MTJ2bGJmMTZpbnRyaW4uaAAvKj09PS0tLS0tLS0tLS0tLS0tLS0gaHJlc2V0aW50cmluLmggLSBIUkVTRVQgaW50cmluc2ljcyAtLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqCiAqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCiAqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCiNpZm5kZWYgX19YODZHUFJJTlRSSU5fSAojZXJyb3IgIk5ldmVyIHVzZSA8aHJlc2V0aW50cmluLmg+IGRpcmVjdGx5OyBpbmNsdWRlIDx4ODZncHJpbnRyaW4uaD4gaW5zdGVhZC4iCiNlbmRpZgoKI2lmbmRlZiBfX0hSRVNFVElOVFJJTl9ICiNkZWZpbmUgX19IUkVTRVRJTlRSSU5fSAoKI2lmIF9faGFzX2V4dGVuc2lvbihnbnVfYXNtKQoKLyogRGVmaW5lIHRoZSBkZWZhdWx0IGF0dHJpYnV0ZXMgZm9yIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlLiAqLwojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUyBcCiAgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJocmVzZXQiKSkpCgovLy8gUHJvdmlkZXMgYSBoaW50IHRvIHRoZSBwcm9jZXNzb3IgdG8gc2VsZWN0aXZlbHkgcmVzZXQgdGhlIHByZWRpY3Rpb24KLy8vICAgIGhpc3Rvcnkgb2YgdGhlIGN1cnJlbnQgbG9naWNhbCBwcm9jZXNzb3Igc3BlY2lmaWVkIGJ5IGEgMzItYml0IGludGVnZXIKLy8vICAgIHZhbHVlIFxhIF9fZWF4LgovLy8KLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gSFJFU0VUIDwvYz4gaW5zdHJ1Y3Rpb24uCi8vLwovLy8gXG9wZXJhdGlvbgovLy8gICAgSUYgX19lYXggPT0gMAovLy8gICAgICAvLyBub3AKLy8vICAgIEVMU0UKLy8vICAgICAgRk9SIGkgOj0gMCB0byAzMQovLy8gICAgICAgIElGIF9fZWF4W2ldCi8vLyAgICAgICAgICBSZXNldFByZWRpY3Rpb25GZWF0dXJlKGkpCi8vLyAgICAgICAgRkkKLy8vICAgICAgRU5ERk9SCi8vLyAgICBGSQovLy8gXGVuZG9wZXJhdGlvbgpzdGF0aWMgX19pbmxpbmUgdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMKX2hyZXNldChpbnQgX19lYXgpCnsKICBfX2FzbV9fICgiaHJlc2V0ICQwIiA6OiAiYSIoX19lYXgpKTsKfQoKI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUwoKI2VuZGlmIC8qIF9faGFzX2V4dGVuc2lvbihnbnVfYXNtKSAqLwoKI2VuZGlmIC8qIF9fSFJFU0VUSU5UUklOX0ggKi8KAGlzbzY0Ni5oAGxpbWl0cy5oAG9tcC5oAC8qPT09LS0tLSBlbW1pbnRyaW4uaCAtIEltcGxlbWVudGF0aW9uIG9mIFNTRTIgaW50cmluc2ljcyBvbiBQb3dlclBDIC0tLS0tLS09PT0KICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKi8KCi8qIEltcGxlbWVudGVkIGZyb20gdGhlIHNwZWNpZmljYXRpb24gaW5jbHVkZWQgaW4gdGhlIEludGVsIEMrKyBDb21waWxlcgogICBVc2VyIEd1aWRlIGFuZCBSZWZlcmVuY2UsIHZlcnNpb24gOS4wLiAgKi8KCiNpZm5kZWYgTk9fV0FSTl9YODZfSU5UUklOU0lDUwovKiBUaGlzIGhlYWRlciBmaWxlIGlzIHRvIGhlbHAgcG9ydGluZyBjb2RlIHVzaW5nIEludGVsIGludHJpbnNpY3MKICAgZXhwbGljaXRseSBmcm9tIHg4Nl82NCB0byBwb3dlcnBjNjQvcG93ZXJwYzY0bGUuCgogICBTaW5jZSBYODYgU1NFMiBpbnRyaW5zaWNzIG1haW5seSBoYW5kbGVzIF9fbTEyOGkgYW5kIF9fbTEyOGQgdHlwZSwKICAgUG93ZXJQQyBWTVgvVlNYIElTQSBpcyBhIGdvb2QgbWF0Y2ggZm9yIHZlY3RvciBmbG9hdCBTSU1EIG9wZXJhdGlvbnMuCiAgIEhvd2V2ZXIgc2NhbGFyIGZsb2F0IG9wZXJhdGlvbnMgaW4gdmVjdG9yIChYTU0pIHJlZ2lzdGVycyByZXF1aXJlCiAgIHRoZSBQT1dFUjggVlNYIElTQSAoMi4wNykgbGV2ZWwuIFRoZXJlIGFyZSBkaWZmZXJlbmNlcyBmb3IgZGF0YQogICBmb3JtYXQgYW5kIHBsYWNlbWVudCBvZiBmbG9hdCBzY2FsYXJzIGluIHRoZSB2ZWN0b3IgcmVnaXN0ZXIsIHdoaWNoCiAgIHJlcXVpcmUgZXh0cmEgc3RlcHMgdG8gbWF0Y2ggU1NFMiBzY2FsYXIgZmxvYXQgc2VtYW50aWNzIG9uIFBPV0VSLgoKICAgSXQgc2hvdWxkIGJlIG5vdGVkIHRoYXQgdGhlcmUncyBtdWNoIGRpZmZlcmVuY2UgYmV0d2VlbiBYODZfNjQncwogICBNWFNDUiBhbmQgUG93ZXJJU0EncyBGUFNDUi9WU0NSIHJlZ2lzdGVycy4gSXQncyByZWNvbW1lbmRlZCB0byB1c2UKICAgcG9ydGFibGUgPGZlbnYuaD4gaW5zdGVhZCBvZiBhY2Nlc3MgTVhTQ1IgZGlyZWN0bHkuCgogICBNb3N0IFNTRTIgc2NhbGFyIGZsb2F0IGludHJpbnNpYyBvcGVyYXRpb25zIGNhbiBiZSBwZXJmb3JtZWQgbW9yZQogICBlZmZpY2llbnRseSBhcyBDIGxhbmd1YWdlIGZsb2F0IHNjYWxhciBvcGVyYXRpb25zIG9yIG9wdGltaXplZCB0bwogICB1c2UgdmVjdG9yIFNJTUQgb3BlcmF0aW9ucy4gV2UgcmVjb21tZW5kIHRoaXMgZm9yIG5ldyBhcHBsaWNhdGlvbnMuCiovCiNlcnJvciAiUGxlYXNlIHJlYWQgY29tbWVudCBhYm92ZS4gIFVzZSAtRE5PX1dBUk5fWDg2X0lOVFJJTlNJQ1MgdG8gZGlzYWJsZSB0aGlzIGVycm9yLiIKI2VuZGlmCgojaWZuZGVmIEVNTUlOVFJJTl9IXwojZGVmaW5lIEVNTUlOVFJJTl9IXwoKI2lmIGRlZmluZWQoX19wcGM2NF9fKSAmJiAoZGVmaW5lZChfX2xpbnV4X18pIHx8IGRlZmluZWQoX19GcmVlQlNEX18pKQoKI2luY2x1ZGUgPGFsdGl2ZWMuaD4KCi8qIFdlIG5lZWQgZGVmaW5pdGlvbnMgZnJvbSB0aGUgU1NFIGhlYWRlciBmaWxlcy4gICovCiNpbmNsdWRlIDx4bW1pbnRyaW4uaD4KCi8qIFNTRTIgKi8KdHlwZWRlZiBfX3ZlY3RvciBkb3VibGUgX192MmRmOwp0eXBlZGVmIF9fdmVjdG9yIGxvbmcgbG9uZyBfX3YyZGk7CnR5cGVkZWYgX192ZWN0b3IgdW5zaWduZWQgbG9uZyBsb25nIF9fdjJkdTsKdHlwZWRlZiBfX3ZlY3RvciBpbnQgX192NHNpOwp0eXBlZGVmIF9fdmVjdG9yIHVuc2lnbmVkIGludCBfX3Y0c3U7CnR5cGVkZWYgX192ZWN0b3Igc2hvcnQgX192OGhpOwp0eXBlZGVmIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IF9fdjhodTsKdHlwZWRlZiBfX3ZlY3RvciBzaWduZWQgY2hhciBfX3YxNnFpOwp0eXBlZGVmIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgX192MTZxdTsKCi8qIFRoZSBJbnRlbCBBUEkgaXMgZmxleGlibGUgZW5vdWdoIHRoYXQgd2UgbXVzdCBhbGxvdyBhbGlhc2luZyB3aXRoIG90aGVyCiAgIHZlY3RvciB0eXBlcywgYW5kIHRoZWlyIHNjYWxhciBjb21wb25lbnRzLiAgKi8KdHlwZWRlZiBsb25nIGxvbmcgX19tMTI4aSBfX2F0dHJpYnV0ZV9fICgoX192ZWN0b3Jfc2l6ZV9fICgxNiksIF9fbWF5X2FsaWFzX18pKTsKdHlwZWRlZiBkb3VibGUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fICgoX192ZWN0b3Jfc2l6ZV9fICgxNiksIF9fbWF5X2FsaWFzX18pKTsKCi8qIFVuYWxpZ25lZCB2ZXJzaW9uIG9mIHRoZSBzYW1lIHR5cGVzLiAgKi8KdHlwZWRlZiBsb25nIGxvbmcgX19tMTI4aV91IF9fYXR0cmlidXRlX18gKChfX3ZlY3Rvcl9zaXplX18gKDE2KSwgX19tYXlfYWxpYXNfXywgX19hbGlnbmVkX18gKDEpKSk7CnR5cGVkZWYgZG91YmxlIF9fbTEyOGRfdSBfX2F0dHJpYnV0ZV9fICgoX192ZWN0b3Jfc2l6ZV9fICgxNiksIF9fbWF5X2FsaWFzX18sIF9fYWxpZ25lZF9fICgxKSkpOwoKLyogRGVmaW5lIHR3byB2YWx1ZSBwZXJtdXRlIG1hc2suICAqLwojZGVmaW5lIF9NTV9TSFVGRkxFMih4LHkpICgoKHgpIDw8IDEpIHwgKHkpKQoKLyogQ3JlYXRlIGEgdmVjdG9yIHdpdGggZWxlbWVudCAwIGFzIEYgYW5kIHRoZSByZXN0IHplcm8uICAqLwpleHRlcm4gX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX3NldF9zZCAoZG91YmxlIF9fRikKewogIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjhkKXsgX19GLCAwLjAgfTsKfQoKLyogQ3JlYXRlIGEgdmVjdG9yIHdpdGggYm90aCBlbGVtZW50cyBlcXVhbCB0byBGLiAgKi8KZXh0ZXJuIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9zZXQxX3BkIChkb3VibGUgX19GKQp7CiAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOGQpeyBfX0YsIF9fRiB9Owp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX3NldF9wZDEgKGRvdWJsZSBfX0YpCnsKICByZXR1cm4gX21tX3NldDFfcGQgKF9fRik7Cn0KCi8qIENyZWF0ZSBhIHZlY3RvciB3aXRoIHRoZSBsb3dlciB2YWx1ZSBYIGFuZCB1cHBlciB2YWx1ZSBXLiAgKi8KZXh0ZXJuIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9zZXRfcGQgKGRvdWJsZSBfX1csIGRvdWJsZSBfX1gpCnsKICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMTI4ZCl7IF9fWCwgX19XIH07Cn0KCi8qIENyZWF0ZSBhIHZlY3RvciB3aXRoIHRoZSBsb3dlciB2YWx1ZSBXIGFuZCB1cHBlciB2YWx1ZSBYLiAgKi8KZXh0ZXJuIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9zZXRyX3BkIChkb3VibGUgX19XLCBkb3VibGUgX19YKQp7CiAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOGQpeyBfX1csIF9fWCB9Owp9CgovKiBDcmVhdGUgYW4gdW5kZWZpbmVkIHZlY3Rvci4gICovCmV4dGVybiBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fdW5kZWZpbmVkX3BkICh2b2lkKQp7CiAgX19tMTI4ZCBfX1kgPSBfX1k7CiAgcmV0dXJuIF9fWTsKfQoKLyogQ3JlYXRlIGEgdmVjdG9yIG9mIHplcm9zLiAgKi8KZXh0ZXJuIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9zZXR6ZXJvX3BkICh2b2lkKQp7CiAgcmV0dXJuIChfX20xMjhkKSB2ZWNfc3BsYXRzICgwKTsKfQoKLyogU2V0cyB0aGUgbG93IERQRlAgdmFsdWUgb2YgQSBmcm9tIHRoZSBsb3cgdmFsdWUgb2YgQi4gICovCmV4dGVybiBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fbW92ZV9zZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQp7CiAgX192MmRmIHJlc3VsdCA9IChfX3YyZGYpIF9fQTsKICByZXN1bHQgWzBdID0gKChfX3YyZGYpIF9fQilbMF07CiAgcmV0dXJuIChfX20xMjhkKSByZXN1bHQ7Cn0KCi8qIExvYWQgdHdvIERQRlAgdmFsdWVzIGZyb20gUC4gIFRoZSBhZGRyZXNzIG11c3QgYmUgMTYtYnl0ZSBhbGlnbmVkLiAgKi8KZXh0ZXJuIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9sb2FkX3BkIChkb3VibGUgY29uc3QgKl9fUCkKewogIHJldHVybiAoKF9fbTEyOGQpdmVjX2xkKDAsIChfX3YxNnF1KilfX1ApKTsKfQoKLyogTG9hZCB0d28gRFBGUCB2YWx1ZXMgZnJvbSBQLiAgVGhlIGFkZHJlc3MgbmVlZCBub3QgYmUgMTYtYnl0ZSBhbGlnbmVkLiAgKi8KZXh0ZXJuIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9sb2FkdV9wZCAoZG91YmxlIGNvbnN0ICpfX1ApCnsKICByZXR1cm4gKHZlY192c3hfbGQoMCwgX19QKSk7Cn0KCi8qIENyZWF0ZSBhIHZlY3RvciB3aXRoIGFsbCB0d28gZWxlbWVudHMgZXF1YWwgdG8gKlAuICAqLwpleHRlcm4gX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2xvYWQxX3BkIChkb3VibGUgY29uc3QgKl9fUCkKewogIHJldHVybiAodmVjX3NwbGF0cyAoKl9fUCkpOwp9CgovKiBDcmVhdGUgYSB2ZWN0b3Igd2l0aCBlbGVtZW50IDAgYXMgKlAgYW5kIHRoZSByZXN0IHplcm8uICAqLwpleHRlcm4gX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2xvYWRfc2QgKGRvdWJsZSBjb25zdCAqX19QKQp7CiAgcmV0dXJuIF9tbV9zZXRfc2QgKCpfX1ApOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2xvYWRfcGQxIChkb3VibGUgY29uc3QgKl9fUCkKewogIHJldHVybiBfbW1fbG9hZDFfcGQgKF9fUCk7Cn0KCi8qIExvYWQgdHdvIERQRlAgdmFsdWVzIGluIHJldmVyc2Ugb3JkZXIuICBUaGUgYWRkcmVzcyBtdXN0IGJlIGFsaWduZWQuICAqLwpleHRlcm4gX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2xvYWRyX3BkIChkb3VibGUgY29uc3QgKl9fUCkKewogIF9fdjJkZiBfX3RtcCA9IF9tbV9sb2FkX3BkIChfX1ApOwogIHJldHVybiAoX19tMTI4ZCl2ZWNfeHhwZXJtZGkgKF9fdG1wLCBfX3RtcCwgMik7Cn0KCi8qIFN0b3JlIHR3byBEUEZQIHZhbHVlcy4gIFRoZSBhZGRyZXNzIG11c3QgYmUgMTYtYnl0ZSBhbGlnbmVkLiAgKi8KZXh0ZXJuIF9faW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9zdG9yZV9wZCAoZG91YmxlICpfX1AsIF9fbTEyOGQgX19BKQp7CiAgdmVjX3N0KChfX3YxNnF1KV9fQSwgMCwgKF9fdjE2cXUqKV9fUCk7Cn0KCi8qIFN0b3JlIHR3byBEUEZQIHZhbHVlcy4gIFRoZSBhZGRyZXNzIG5lZWQgbm90IGJlIDE2LWJ5dGUgYWxpZ25lZC4gICovCmV4dGVybiBfX2lubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fc3RvcmV1X3BkIChkb3VibGUgKl9fUCwgX19tMTI4ZCBfX0EpCnsKICAqKF9fbTEyOGRfdSAqKV9fUCA9IF9fQTsKfQoKLyogU3RvcmVzIHRoZSBsb3dlciBEUEZQIHZhbHVlLiAgKi8KZXh0ZXJuIF9faW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9zdG9yZV9zZCAoZG91YmxlICpfX1AsIF9fbTEyOGQgX19BKQp7CiAgKl9fUCA9ICgoX192MmRmKV9fQSlbMF07Cn0KCmV4dGVybiBfX2lubGluZSBkb3VibGUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9jdnRzZF9mNjQgKF9fbTEyOGQgX19BKQp7CiAgcmV0dXJuICgoX192MmRmKV9fQSlbMF07Cn0KCmV4dGVybiBfX2lubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fc3RvcmVsX3BkIChkb3VibGUgKl9fUCwgX19tMTI4ZCBfX0EpCnsKICBfbW1fc3RvcmVfc2QgKF9fUCwgX19BKTsKfQoKLyogU3RvcmVzIHRoZSB1cHBlciBEUEZQIHZhbHVlLiAgKi8KZXh0ZXJuIF9faW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9zdG9yZWhfcGQgKGRvdWJsZSAqX19QLCBfX20xMjhkIF9fQSkKewogICpfX1AgPSAoKF9fdjJkZilfX0EpWzFdOwp9Ci8qIFN0b3JlIHRoZSBsb3dlciBEUEZQIHZhbHVlIGFjcm9zcyB0d28gd29yZHMuCiAgIFRoZSBhZGRyZXNzIG11c3QgYmUgMTYtYnl0ZSBhbGlnbmVkLiAgKi8KZXh0ZXJuIF9faW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9zdG9yZTFfcGQgKGRvdWJsZSAqX19QLCBfX20xMjhkIF9fQSkKewogIF9tbV9zdG9yZV9wZCAoX19QLCB2ZWNfc3BsYXQgKF9fQSwgMCkpOwp9CgpleHRlcm4gX19pbmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX3N0b3JlX3BkMSAoZG91YmxlICpfX1AsIF9fbTEyOGQgX19BKQp7CiAgX21tX3N0b3JlMV9wZCAoX19QLCBfX0EpOwp9CgovKiBTdG9yZSB0d28gRFBGUCB2YWx1ZXMgaW4gcmV2ZXJzZSBvcmRlci4gIFRoZSBhZGRyZXNzIG11c3QgYmUgYWxpZ25lZC4gICovCmV4dGVybiBfX2lubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fc3RvcmVyX3BkIChkb3VibGUgKl9fUCwgX19tMTI4ZCBfX0EpCnsKICBfbW1fc3RvcmVfcGQgKF9fUCwgdmVjX3h4cGVybWRpIChfX0EsIF9fQSwgMikpOwp9CgovKiBJbnRlbCBpbnRyaW5zaWMuICAqLwpleHRlcm4gX19pbmxpbmUgbG9uZyBsb25nIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fY3Z0c2kxMjhfc2k2NCAoX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKChfX3YyZGkpX19BKVswXTsKfQoKLyogTWljcm9zb2Z0IGludHJpbnNpYy4gICovCmV4dGVybiBfX2lubGluZSBsb25nIGxvbmcgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9jdnRzaTEyOF9zaTY0eCAoX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKChfX3YyZGkpX19BKVswXTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9hZGRfcGQgKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikKewogIHJldHVybiAoX19tMTI4ZCkgKChfX3YyZGYpX19BICsgKF9fdjJkZilfX0IpOwp9CgovKiBBZGQgdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gKDY0LWJpdCkgZmxvYXRpbmctcG9pbnQgZWxlbWVudCBpbgogICBhIGFuZCBiLCBzdG9yZSB0aGUgcmVzdWx0IGluIHRoZSBsb3dlciBlbGVtZW50IG9mIGRzdCwgYW5kIGNvcHkKICAgdGhlIHVwcGVyIGVsZW1lbnQgZnJvbSBhIHRvIHRoZSB1cHBlciBlbGVtZW50IG9mIGRzdC4gKi8KZXh0ZXJuIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9hZGRfc2QgKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikKewogIF9fQVswXSA9IF9fQVswXSArIF9fQlswXTsKICByZXR1cm4gKF9fQSk7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fc3ViX3BkIChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGQpICgoX192MmRmKV9fQSAtIChfX3YyZGYpX19CKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9zdWJfc2QgKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikKewogIF9fQVswXSA9IF9fQVswXSAtIF9fQlswXTsKICByZXR1cm4gKF9fQSk7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fbXVsX3BkIChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGQpICgoX192MmRmKV9fQSAqIChfX3YyZGYpX19CKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9tdWxfc2QgKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikKewogIF9fQVswXSA9IF9fQVswXSAqIF9fQlswXTsKICByZXR1cm4gKF9fQSk7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fZGl2X3BkIChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGQpICgoX192MmRmKV9fQSAvIChfX3YyZGYpX19CKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9kaXZfc2QgKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikKewogIF9fQVswXSA9IF9fQVswXSAvIF9fQlswXTsKICByZXR1cm4gKF9fQSk7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fc3FydF9wZCAoX19tMTI4ZCBfX0EpCnsKICByZXR1cm4gKHZlY19zcXJ0IChfX0EpKTsKfQoKLyogUmV0dXJuIHBhaXIge3NxcnQgKEJbMF0pLCBBWzFdfS4gICovCmV4dGVybiBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fc3FydF9zZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQp7CiAgX192MmRmIGM7CiAgYyA9IHZlY19zcXJ0ICgoX192MmRmKSBfbW1fc2V0MV9wZCAoX19CWzBdKSk7CiAgcmV0dXJuIChfX20xMjhkKSBfbW1fc2V0cl9wZCAoY1swXSwgX19BWzFdKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9taW5fcGQgKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikKewogIHJldHVybiAodmVjX21pbiAoX19BLCBfX0IpKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9taW5fc2QgKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikKewogIF9fdjJkZiBhLCBiLCBjOwogIGEgPSB2ZWNfc3BsYXRzIChfX0FbMF0pOwogIGIgPSB2ZWNfc3BsYXRzIChfX0JbMF0pOwogIGMgPSB2ZWNfbWluIChhLCBiKTsKICByZXR1cm4gKF9fbTEyOGQpIF9tbV9zZXRyX3BkIChjWzBdLCBfX0FbMV0pOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX21heF9wZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQp7CiAgcmV0dXJuICh2ZWNfbWF4IChfX0EsIF9fQikpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX21heF9zZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQp7CiAgX192MmRmIGEsIGIsIGM7CiAgYSA9IHZlY19zcGxhdHMgKF9fQVswXSk7CiAgYiA9IHZlY19zcGxhdHMgKF9fQlswXSk7CiAgYyA9IHZlY19tYXggKGEsIGIpOwogIHJldHVybiAoX19tMTI4ZCkgX21tX3NldHJfcGQgKGNbMF0sIF9fQVsxXSk7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fY21wZXFfcGQgKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikKewogIHJldHVybiAoKF9fbTEyOGQpdmVjX2NtcGVxICgoX192MmRmKSBfX0EsIChfX3YyZGYpIF9fQikpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2NtcGx0X3BkIChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpCnsKICByZXR1cm4gKChfX20xMjhkKXZlY19jbXBsdCAoKF9fdjJkZikgX19BLCAoX192MmRmKSBfX0IpKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9jbXBsZV9wZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQp7CiAgcmV0dXJuICgoX19tMTI4ZCl2ZWNfY21wbGUgKChfX3YyZGYpIF9fQSwgKF9fdjJkZikgX19CKSk7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fY21wZ3RfcGQgKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikKewogIHJldHVybiAoKF9fbTEyOGQpdmVjX2NtcGd0ICgoX192MmRmKSBfX0EsIChfX3YyZGYpIF9fQikpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2NtcGdlX3BkIChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpCnsKICByZXR1cm4gKChfX20xMjhkKXZlY19jbXBnZSAoKF9fdjJkZikgX19BLChfX3YyZGYpIF9fQikpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2NtcG5lcV9wZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQp7CiAgX192MmRmIHRlbXAgPSAoX192MmRmKSB2ZWNfY21wZXEgKChfX3YyZGYpIF9fQSwgKF9fdjJkZilfX0IpOwogIHJldHVybiAoKF9fbTEyOGQpdmVjX25vciAodGVtcCwgdGVtcCkpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2NtcG5sdF9wZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQp7CiAgcmV0dXJuICgoX19tMTI4ZCl2ZWNfY21wZ2UgKChfX3YyZGYpIF9fQSwgKF9fdjJkZikgX19CKSk7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fY21wbmxlX3BkIChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpCnsKICByZXR1cm4gKChfX20xMjhkKXZlY19jbXBndCAoKF9fdjJkZikgX19BLCAoX192MmRmKSBfX0IpKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9jbXBuZ3RfcGQgKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikKewogIHJldHVybiAoKF9fbTEyOGQpdmVjX2NtcGxlICgoX192MmRmKSBfX0EsIChfX3YyZGYpIF9fQikpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2NtcG5nZV9wZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQp7CiAgcmV0dXJuICgoX19tMTI4ZCl2ZWNfY21wbHQgKChfX3YyZGYpIF9fQSwgKF9fdjJkZikgX19CKSk7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fY21wb3JkX3BkIChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpCnsKI2lmIF9BUkNIX1BXUjgKICBfX3YyZHUgYywgZDsKICAvKiBDb21wYXJlIGFnYWluc3Qgc2VsZiB3aWxsIHJldHVybiBmYWxzZSAoMCdzKSBpZiBOQU4uICAqLwogIGMgPSAoX192MmR1KXZlY19jbXBlcSAoX19BLCBfX0EpOwogIGQgPSAoX192MmR1KXZlY19jbXBlcSAoX19CLCBfX0IpOwojZWxzZQogIF9fdjJkdSBhLCBiOwogIF9fdjJkdSBjLCBkOwogIGNvbnN0IF9fdjJkdSBkb3VibGVfZXhwX21hc2sgID0gezB4N2ZmMDAwMDAwMDAwMDAwMCwgMHg3ZmYwMDAwMDAwMDAwMDAwfTsKICBhID0gKF9fdjJkdSl2ZWNfYWJzICgoX192MmRmKV9fQSk7CiAgYiA9IChfX3YyZHUpdmVjX2FicyAoKF9fdjJkZilfX0IpOwogIGMgPSAoX192MmR1KXZlY19jbXBndCAoZG91YmxlX2V4cF9tYXNrLCBhKTsKICBkID0gKF9fdjJkdSl2ZWNfY21wZ3QgKGRvdWJsZV9leHBfbWFzaywgYik7CiNlbmRpZgogIC8qIEEgIT0gTkFOIGFuZCBCICE9IE5BTi4gICovCiAgcmV0dXJuICgoX19tMTI4ZCl2ZWNfYW5kKGMsIGQpKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9jbXB1bm9yZF9wZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQp7CiNpZiBfQVJDSF9QV1I4CiAgX192MmR1IGMsIGQ7CiAgLyogQ29tcGFyZSBhZ2FpbnN0IHNlbGYgd2lsbCByZXR1cm4gZmFsc2UgKDAncykgaWYgTkFOLiAgKi8KICBjID0gKF9fdjJkdSl2ZWNfY21wZXEgKChfX3YyZGYpX19BLCAoX192MmRmKV9fQSk7CiAgZCA9IChfX3YyZHUpdmVjX2NtcGVxICgoX192MmRmKV9fQiwgKF9fdjJkZilfX0IpOwogIC8qIEEgPT0gTkFOIE9SIEIgPT0gTkFOIGNvbnZlcnRzIHRvbzoKICAgICBOT1QoQSAhPSBOQU4pIE9SIE5PVChCICE9IE5BTikuICAqLwogIGMgPSB2ZWNfbm9yIChjLCBjKTsKICByZXR1cm4gKChfX20xMjhkKXZlY19vcmMoYywgZCkpOwojZWxzZQogIF9fdjJkdSBjLCBkOwogIC8qIENvbXBhcmUgYWdhaW5zdCBzZWxmIHdpbGwgcmV0dXJuIGZhbHNlICgwJ3MpIGlmIE5BTi4gICovCiAgYyA9IChfX3YyZHUpdmVjX2NtcGVxICgoX192MmRmKV9fQSwgKF9fdjJkZilfX0EpOwogIGQgPSAoX192MmR1KXZlY19jbXBlcSAoKF9fdjJkZilfX0IsIChfX3YyZGYpX19CKTsKICAvKiBDb252ZXJ0IHRoZSB0cnVlICgnMSdzKSBpcyBOQU4uICAqLwogIGMgPSB2ZWNfbm9yIChjLCBjKTsKICBkID0gdmVjX25vciAoZCwgZCk7CiAgcmV0dXJuICgoX19tMTI4ZCl2ZWNfb3IoYywgZCkpOwojZW5kaWYKfQoKZXh0ZXJuIF9faW5saW5lICBfX20xMjhkICBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2NtcGVxX3NkKF9fbTEyOGQgIF9fQSwgX19tMTI4ZCAgX19CKQp7CiAgX192MmRmIGEsIGIsIGM7CiAgLyogUG93ZXJJU0EgVlNYIGRvZXMgbm90IGFsbG93IHBhcnRpYWwgKGZvciBqdXN0IGxvd2VyIGRvdWJsZSkKICAgICByZXN1bHRzLiBTbyB0byBpbnN1cmUgd2UgZG9uJ3QgZ2VuZXJhdGUgc3B1cmlvdXMgZXhjZXB0aW9ucwogICAgIChmcm9tIHRoZSB1cHBlciBkb3VibGUgdmFsdWVzKSB3ZSBzcGxhdCB0aGUgbG93ZXIgZG91YmxlCiAgICAgYmVmb3JlIHdlIGRvIHRoZSBvcGVyYXRpb24uICovCiAgYSA9IHZlY19zcGxhdHMgKF9fQVswXSk7CiAgYiA9IHZlY19zcGxhdHMgKF9fQlswXSk7CiAgYyA9IChfX3YyZGYpIHZlY19jbXBlcShhLCBiKTsKICAvKiBUaGVuIHdlIG1lcmdlIHRoZSBsb3dlciBkb3VibGUgcmVzdWx0IHdpdGggdGhlIG9yaWdpbmFsIHVwcGVyCiAgICAgZG91YmxlIGZyb20gX19BLiAgKi8KICByZXR1cm4gKF9fbTEyOGQpIF9tbV9zZXRyX3BkIChjWzBdLCBfX0FbMV0pOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2NtcGx0X3NkIChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpCnsKICBfX3YyZGYgYSwgYiwgYzsKICBhID0gdmVjX3NwbGF0cyAoX19BWzBdKTsKICBiID0gdmVjX3NwbGF0cyAoX19CWzBdKTsKICBjID0gKF9fdjJkZikgdmVjX2NtcGx0KGEsIGIpOwogIHJldHVybiAoX19tMTI4ZCkgX21tX3NldHJfcGQgKGNbMF0sIF9fQVsxXSk7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fY21wbGVfc2QgKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikKewogIF9fdjJkZiBhLCBiLCBjOwogIGEgPSB2ZWNfc3BsYXRzIChfX0FbMF0pOwogIGIgPSB2ZWNfc3BsYXRzIChfX0JbMF0pOwogIGMgPSAoX192MmRmKSB2ZWNfY21wbGUoYSwgYik7CiAgcmV0dXJuIChfX20xMjhkKSBfbW1fc2V0cl9wZCAoY1swXSwgX19BWzFdKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9jbXBndF9zZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQp7CiAgX192MmRmIGEsIGIsIGM7CiAgYSA9IHZlY19zcGxhdHMgKF9fQVswXSk7CiAgYiA9IHZlY19zcGxhdHMgKF9fQlswXSk7CiAgYyA9IChfX3YyZGYpIHZlY19jbXBndChhLCBiKTsKICByZXR1cm4gKF9fbTEyOGQpIF9tbV9zZXRyX3BkIChjWzBdLCBfX0FbMV0pOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2NtcGdlX3NkIChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpCnsKICBfX3YyZGYgYSwgYiwgYzsKICBhID0gdmVjX3NwbGF0cyAoX19BWzBdKTsKICBiID0gdmVjX3NwbGF0cyAoX19CWzBdKTsKICBjID0gKF9fdjJkZikgdmVjX2NtcGdlKGEsIGIpOwogIHJldHVybiAoX19tMTI4ZCkgX21tX3NldHJfcGQgKGNbMF0sIF9fQVsxXSk7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fY21wbmVxX3NkIChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpCnsKICBfX3YyZGYgYSwgYiwgYzsKICBhID0gdmVjX3NwbGF0cyAoX19BWzBdKTsKICBiID0gdmVjX3NwbGF0cyAoX19CWzBdKTsKICBjID0gKF9fdjJkZikgdmVjX2NtcGVxKGEsIGIpOwogIGMgPSB2ZWNfbm9yIChjLCBjKTsKICByZXR1cm4gKF9fbTEyOGQpIF9tbV9zZXRyX3BkIChjWzBdLCBfX0FbMV0pOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2NtcG5sdF9zZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQp7CiAgX192MmRmIGEsIGIsIGM7CiAgYSA9IHZlY19zcGxhdHMgKF9fQVswXSk7CiAgYiA9IHZlY19zcGxhdHMgKF9fQlswXSk7CiAgLyogTm90IGxlc3MgdGhhbiBpcyBqdXN0IGdyZWF0ZXIgdGhhbiBvciBlcXVhbC4gICovCiAgYyA9IChfX3YyZGYpIHZlY19jbXBnZShhLCBiKTsKICByZXR1cm4gKF9fbTEyOGQpIF9tbV9zZXRyX3BkIChjWzBdLCBfX0FbMV0pOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2NtcG5sZV9zZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQp7CiAgX192MmRmIGEsIGIsIGM7CiAgYSA9IHZlY19zcGxhdHMgKF9fQVswXSk7CiAgYiA9IHZlY19zcGxhdHMgKF9fQlswXSk7CiAgLyogTm90IGxlc3MgdGhhbiBvciBlcXVhbCBpcyBqdXN0IGdyZWF0ZXIgdGhhbi4gICovCiAgYyA9IChfX3YyZGYpIHZlY19jbXBnZShhLCBiKTsKICByZXR1cm4gKF9fbTEyOGQpIF9tbV9zZXRyX3BkIChjWzBdLCBfX0FbMV0pOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2NtcG5ndF9zZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQp7CiAgX192MmRmIGEsIGIsIGM7CiAgYSA9IHZlY19zcGxhdHMgKF9fQVswXSk7CiAgYiA9IHZlY19zcGxhdHMgKF9fQlswXSk7CiAgLyogTm90IGdyZWF0ZXIgdGhhbiBpcyBqdXN0IGxlc3MgdGhhbiBvciBlcXVhbC4gICovCiAgYyA9IChfX3YyZGYpIHZlY19jbXBsZShhLCBiKTsKICByZXR1cm4gKF9fbTEyOGQpIF9tbV9zZXRyX3BkIChjWzBdLCBfX0FbMV0pOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2NtcG5nZV9zZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQp7CiAgX192MmRmIGEsIGIsIGM7CiAgYSA9IHZlY19zcGxhdHMgKF9fQVswXSk7CiAgYiA9IHZlY19zcGxhdHMgKF9fQlswXSk7CiAgLyogTm90IGdyZWF0ZXIgdGhhbiBvciBlcXVhbCBpcyBqdXN0IGxlc3MgdGhhbi4gICovCiAgYyA9IChfX3YyZGYpIHZlY19jbXBsdChhLCBiKTsKICByZXR1cm4gKF9fbTEyOGQpIF9tbV9zZXRyX3BkIChjWzBdLCBfX0FbMV0pOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2NtcG9yZF9zZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQp7CiAgX192MmRmIHI7CiAgciA9IChfX3YyZGYpX21tX2NtcG9yZF9wZCAodmVjX3NwbGF0cyAoX19BWzBdKSwgdmVjX3NwbGF0cyAoX19CWzBdKSk7CiAgcmV0dXJuIChfX20xMjhkKSBfbW1fc2V0cl9wZCAoclswXSwgKChfX3YyZGYpX19BKVsxXSk7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fY21wdW5vcmRfc2QgKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikKewogIF9fdjJkZiByOwogIHIgPSBfbW1fY21wdW5vcmRfcGQgKHZlY19zcGxhdHMgKF9fQVswXSksIHZlY19zcGxhdHMgKF9fQlswXSkpOwogIHJldHVybiAoX19tMTI4ZCkgX21tX3NldHJfcGQgKHJbMF0sIF9fQVsxXSk7Cn0KCi8qIEZJWE1FCiAgIFRoZSBfX21tX2NvbWk/P19zZCBhbmQgX19tbV91Y29taT8/X3NkIGltcGxlbWVudGF0aW9ucyBiZWxvdyBhcmUKICAgZXhhY3RseSB0aGUgc2FtZSBiZWNhdXNlIEdDQyBmb3IgUG93ZXJQQyBvbmx5IGdlbmVyYXRlcyB1bm9yZGVyZWQKICAgY29tcGFyZXMgKHNjYWxhciBhbmQgdmVjdG9yKS4KICAgVGVjaG5pY2FsbHkgX19tbV9jb21pZXFfc3AgZXQgYWxsIHNob3VsZCBiZSB1c2luZyB0aGUgb3JkZXJlZAogICBjb21wYXJlIGFuZCBzaWduYWwgZm9yIFFOYU5zLiAgVGhlIF9fbW1fdWNvbWllcV9zZCBldCBhbGwgc2hvdWxkCiAgIGJlIE9LLiAgICovCmV4dGVybiBfX2lubGluZSBpbnQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9jb21pZXFfc2QgKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikKewogIHJldHVybiAoX19BWzBdID09IF9fQlswXSk7Cn0KCmV4dGVybiBfX2lubGluZSBpbnQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9jb21pbHRfc2QgKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikKewogIHJldHVybiAoX19BWzBdIDwgX19CWzBdKTsKfQoKZXh0ZXJuIF9faW5saW5lIGludCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2NvbWlsZV9zZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQp7CiAgcmV0dXJuIChfX0FbMF0gPD0gX19CWzBdKTsKfQoKZXh0ZXJuIF9faW5saW5lIGludCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2NvbWlndF9zZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQp7CiAgcmV0dXJuIChfX0FbMF0gPiBfX0JbMF0pOwp9CgpleHRlcm4gX19pbmxpbmUgaW50IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fY29taWdlX3NkIChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpCnsKICByZXR1cm4gKF9fQVswXSA+PSBfX0JbMF0pOwp9CgpleHRlcm4gX19pbmxpbmUgaW50IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fY29taW5lcV9zZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQp7CiAgcmV0dXJuIChfX0FbMF0gIT0gX19CWzBdKTsKfQoKZXh0ZXJuIF9faW5saW5lIGludCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX3Vjb21pZXFfc2QgKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikKewoJcmV0dXJuIChfX0FbMF0gPT0gX19CWzBdKTsKfQoKZXh0ZXJuIF9faW5saW5lIGludCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX3Vjb21pbHRfc2QgKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikKewoJcmV0dXJuIChfX0FbMF0gPCBfX0JbMF0pOwp9CgpleHRlcm4gX19pbmxpbmUgaW50IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fdWNvbWlsZV9zZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQp7CglyZXR1cm4gKF9fQVswXSA8PSBfX0JbMF0pOwp9CgpleHRlcm4gX19pbmxpbmUgaW50IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fdWNvbWlndF9zZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQp7CglyZXR1cm4gKF9fQVswXSA+IF9fQlswXSk7Cn0KCmV4dGVybiBfX2lubGluZSBpbnQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV91Y29taWdlX3NkIChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpCnsKCXJldHVybiAoX19BWzBdID49IF9fQlswXSk7Cn0KCmV4dGVybiBfX2lubGluZSBpbnQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV91Y29taW5lcV9zZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQp7CiAgcmV0dXJuIChfX0FbMF0gIT0gX19CWzBdKTsKfQoKLyogQ3JlYXRlIGEgdmVjdG9yIG9mIFFpLCB3aGVyZSBpIGlzIHRoZSBlbGVtZW50IG51bWJlci4gICovCmV4dGVybiBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fc2V0X2VwaTY0eCAobG9uZyBsb25nIF9fcTEsIGxvbmcgbG9uZyBfX3EwKQp7CiAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOGkpKF9fdjJkaSl7IF9fcTAsIF9fcTEgfTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9zZXRfZXBpNjQgKF9fbTY0IF9fcTEsICBfX202NCBfX3EwKQp7CiAgcmV0dXJuIF9tbV9zZXRfZXBpNjR4ICgobG9uZyBsb25nKV9fcTEsIChsb25nIGxvbmcpX19xMCk7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fc2V0X2VwaTMyIChpbnQgX19xMywgaW50IF9fcTIsIGludCBfX3ExLCBpbnQgX19xMCkKewogIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjhpKShfX3Y0c2kpeyBfX3EwLCBfX3ExLCBfX3EyLCBfX3EzIH07Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fc2V0X2VwaTE2IChzaG9ydCBfX3E3LCBzaG9ydCBfX3E2LCBzaG9ydCBfX3E1LCBzaG9ydCBfX3E0LAoJICAgICAgIHNob3J0IF9fcTMsIHNob3J0IF9fcTIsIHNob3J0IF9fcTEsIHNob3J0IF9fcTApCnsKICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMTI4aSkoX192OGhpKXsKICAgIF9fcTAsIF9fcTEsIF9fcTIsIF9fcTMsIF9fcTQsIF9fcTUsIF9fcTYsIF9fcTcgfTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9zZXRfZXBpOCAoY2hhciBfX3ExNSwgY2hhciBfX3ExNCwgY2hhciBfX3ExMywgY2hhciBfX3ExMiwKCSAgICAgIGNoYXIgX19xMTEsIGNoYXIgX19xMTAsIGNoYXIgX19xMDksIGNoYXIgX19xMDgsCgkgICAgICBjaGFyIF9fcTA3LCBjaGFyIF9fcTA2LCBjaGFyIF9fcTA1LCBjaGFyIF9fcTA0LAoJICAgICAgY2hhciBfX3EwMywgY2hhciBfX3EwMiwgY2hhciBfX3EwMSwgY2hhciBfX3EwMCkKewogIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjhpKShfX3YxNnFpKXsKICAgIF9fcTAwLCBfX3EwMSwgX19xMDIsIF9fcTAzLCBfX3EwNCwgX19xMDUsIF9fcTA2LCBfX3EwNywKICAgIF9fcTA4LCBfX3EwOSwgX19xMTAsIF9fcTExLCBfX3ExMiwgX19xMTMsIF9fcTE0LCBfX3ExNQogIH07Cn0KCi8qIFNldCBhbGwgb2YgdGhlIGVsZW1lbnRzIG9mIHRoZSB2ZWN0b3IgdG8gQS4gICovCmV4dGVybiBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fc2V0MV9lcGk2NHggKGxvbmcgbG9uZyBfX0EpCnsKICByZXR1cm4gX21tX3NldF9lcGk2NHggKF9fQSwgX19BKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9zZXQxX2VwaTY0IChfX202NCBfX0EpCnsKICByZXR1cm4gX21tX3NldF9lcGk2NCAoX19BLCBfX0EpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX3NldDFfZXBpMzIgKGludCBfX0EpCnsKICByZXR1cm4gX21tX3NldF9lcGkzMiAoX19BLCBfX0EsIF9fQSwgX19BKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9zZXQxX2VwaTE2IChzaG9ydCBfX0EpCnsKICByZXR1cm4gX21tX3NldF9lcGkxNiAoX19BLCBfX0EsIF9fQSwgX19BLCBfX0EsIF9fQSwgX19BLCBfX0EpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX3NldDFfZXBpOCAoY2hhciBfX0EpCnsKICByZXR1cm4gX21tX3NldF9lcGk4IChfX0EsIF9fQSwgX19BLCBfX0EsIF9fQSwgX19BLCBfX0EsIF9fQSwKCQkgICAgICAgX19BLCBfX0EsIF9fQSwgX19BLCBfX0EsIF9fQSwgX19BLCBfX0EpOwp9CgovKiBDcmVhdGUgYSB2ZWN0b3Igb2YgUWksIHdoZXJlIGkgaXMgdGhlIGVsZW1lbnQgbnVtYmVyLgogICBUaGUgcGFyYW1ldGVyIG9yZGVyIGlzIHJldmVyc2VkIGZyb20gdGhlIF9tbV9zZXRfZXBpKiBmdW5jdGlvbnMuICAqLwpleHRlcm4gX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX3NldHJfZXBpNjQgKF9fbTY0IF9fcTAsIF9fbTY0IF9fcTEpCnsKICByZXR1cm4gX21tX3NldF9lcGk2NCAoX19xMSwgX19xMCk7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fc2V0cl9lcGkzMiAoaW50IF9fcTAsIGludCBfX3ExLCBpbnQgX19xMiwgaW50IF9fcTMpCnsKICByZXR1cm4gX21tX3NldF9lcGkzMiAoX19xMywgX19xMiwgX19xMSwgX19xMCk7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fc2V0cl9lcGkxNiAoc2hvcnQgX19xMCwgc2hvcnQgX19xMSwgc2hvcnQgX19xMiwgc2hvcnQgX19xMywKCSAgICAgICAgc2hvcnQgX19xNCwgc2hvcnQgX19xNSwgc2hvcnQgX19xNiwgc2hvcnQgX19xNykKewogIHJldHVybiBfbW1fc2V0X2VwaTE2IChfX3E3LCBfX3E2LCBfX3E1LCBfX3E0LCBfX3EzLCBfX3EyLCBfX3ExLCBfX3EwKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9zZXRyX2VwaTggKGNoYXIgX19xMDAsIGNoYXIgX19xMDEsIGNoYXIgX19xMDIsIGNoYXIgX19xMDMsCgkgICAgICAgY2hhciBfX3EwNCwgY2hhciBfX3EwNSwgY2hhciBfX3EwNiwgY2hhciBfX3EwNywKCSAgICAgICBjaGFyIF9fcTA4LCBjaGFyIF9fcTA5LCBjaGFyIF9fcTEwLCBjaGFyIF9fcTExLAoJICAgICAgIGNoYXIgX19xMTIsIGNoYXIgX19xMTMsIGNoYXIgX19xMTQsIGNoYXIgX19xMTUpCnsKICByZXR1cm4gX21tX3NldF9lcGk4IChfX3ExNSwgX19xMTQsIF9fcTEzLCBfX3ExMiwgX19xMTEsIF9fcTEwLCBfX3EwOSwgX19xMDgsCgkJICAgICAgIF9fcTA3LCBfX3EwNiwgX19xMDUsIF9fcTA0LCBfX3EwMywgX19xMDIsIF9fcTAxLCBfX3EwMCk7Cn0KCi8qIENyZWF0ZSBhIHZlY3RvciB3aXRoIGVsZW1lbnQgMCBhcyAqUCBhbmQgdGhlIHJlc3QgemVyby4gICovCmV4dGVybiBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fbG9hZF9zaTEyOCAoX19tMTI4aSBjb25zdCAqX19QKQp7CiAgcmV0dXJuICpfX1A7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fbG9hZHVfc2kxMjggKF9fbTEyOGlfdSBjb25zdCAqX19QKQp7CiAgcmV0dXJuIChfX20xMjhpKSAodmVjX3ZzeF9sZCgwLCAoc2lnbmVkIGludCBjb25zdCAqKV9fUCkpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2xvYWRsX2VwaTY0IChfX20xMjhpX3UgY29uc3QgKl9fUCkKewogIHJldHVybiBfbW1fc2V0X2VwaTY0ICgoX19tNjQpMExMLCAqKF9fbTY0ICopX19QKTsKfQoKZXh0ZXJuIF9faW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9zdG9yZV9zaTEyOCAoX19tMTI4aSAqX19QLCBfX20xMjhpIF9fQikKewogIHZlY19zdCAoKF9fdjE2cXUpIF9fQiwgMCwgKF9fdjE2cXUqKV9fUCk7Cn0KCmV4dGVybiBfX2lubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fc3RvcmV1X3NpMTI4IChfX20xMjhpX3UgKl9fUCwgX19tMTI4aSBfX0IpCnsKICAqX19QID0gX19COwp9CgpleHRlcm4gX19pbmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX3N0b3JlbF9lcGk2NCAoX19tMTI4aV91ICpfX1AsIF9fbTEyOGkgX19CKQp7CiAgKihsb25nIGxvbmcgKilfX1AgPSAoKF9fdjJkaSlfX0IpWzBdOwp9CgpleHRlcm4gX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9tb3ZlcGk2NF9waTY0IChfX20xMjhpX3UgX19CKQp7CiAgcmV0dXJuIChfX202NCkgKChfX3YyZGkpX19CKVswXTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9tb3ZwaTY0X2VwaTY0IChfX202NCBfX0EpCnsKICByZXR1cm4gX21tX3NldF9lcGk2NCAoKF9fbTY0KTBMTCwgX19BKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9tb3ZlX2VwaTY0IChfX20xMjhpIF9fQSkKewogIHJldHVybiBfbW1fc2V0X2VwaTY0ICgoX19tNjQpMExMLCAoX19tNjQpX19BWzBdKTsKfQoKLyogQ3JlYXRlIGFuIHVuZGVmaW5lZCB2ZWN0b3IuICAqLwpleHRlcm4gX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX3VuZGVmaW5lZF9zaTEyOCAodm9pZCkKewogIF9fbTEyOGkgX19ZID0gX19ZOwogIHJldHVybiBfX1k7Cn0KCi8qIENyZWF0ZSBhIHZlY3RvciBvZiB6ZXJvcy4gICovCmV4dGVybiBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fc2V0emVyb19zaTEyOCAodm9pZCkKewogIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjhpKShfX3Y0c2kpeyAwLCAwLCAwLCAwIH07Cn0KCiNpZmRlZiBfQVJDSF9QV1I4CmV4dGVybiBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fY3Z0ZXBpMzJfcGQgKF9fbTEyOGkgX19BKQp7CiAgX192MmRpIHZhbDsKICAvKiBGb3IgTEUgbmVlZCB0byBnZW5lcmF0ZSBWZWN0b3IgVW5wYWNrIExvdyBTaWduZWQgV29yZC4KICAgICBXaGljaCBpcyBnZW5lcmF0ZWQgZnJvbSB1bnBhY2toLiAgKi8KICB2YWwgPSAoX192MmRpKXZlY191bnBhY2toICgoX192NHNpKV9fQSk7CgogIHJldHVybiAoX19tMTI4ZCl2ZWNfY3RmICh2YWwsIDApOwp9CiNlbmRpZgoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2N2dGVwaTMyX3BzIChfX20xMjhpIF9fQSkKewogIHJldHVybiAoKF9fbTEyOCl2ZWNfY3RmKChfX3Y0c2kpX19BLCAwKSk7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fY3Z0cGRfZXBpMzIgKF9fbTEyOGQgX19BKQp7CiAgX192MmRmIHJvdW5kZWQgPSB2ZWNfcmludCAoX19BKTsKICBfX3Y0c2kgcmVzdWx0LCB0ZW1wOwogIGNvbnN0IF9fdjRzaSB2emVybyA9CiAgICB7IDAsIDAsIDAsIDAgfTsKCiAgLyogVlNYIFZlY3RvciB0cnVuY2F0ZSBEb3VibGUtUHJlY2lzaW9uIHRvIGludGVnZXIgYW5kIENvbnZlcnQgdG8KICAgU2lnbmVkIEludGVnZXIgV29yZCBmb3JtYXQgd2l0aCBTYXR1cmF0ZS4gICovCiAgX19hc21fXygKICAgICAgInh2Y3ZkcHN4d3MgJXgwLCV4MSIKICAgICAgOiAiPXdhIiAodGVtcCkKICAgICAgOiAid2EiIChyb3VuZGVkKQogICAgICA6ICk7CgojaWZkZWYgX0FSQ0hfUFdSOAogIHRlbXAgPSB2ZWNfbWVyZ2VvICh0ZW1wLCB0ZW1wKTsKICByZXN1bHQgPSAoX192NHNpKSB2ZWNfdnBrdWR1bSAoKF9fdmVjdG9yIGxvbmcgbG9uZykgdGVtcCwKCQkJCSAoX192ZWN0b3IgbG9uZyBsb25nKSB2emVybyk7CiNlbHNlCiAgewogICAgY29uc3QgX192MTZxdSBwa3Blcm0gPSB7MHgwMCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwOCwgMHgwOSwgMHgwYSwgMHgwYiwKCTB4MTQsIDB4MTUsIDB4MTYsIDB4MTcsIDB4MWMsIDB4MWQsIDB4MWUsIDB4MWYgfTsKICAgIHJlc3VsdCA9IChfX3Y0c2kpIHZlY19wZXJtICgoX192MTZxdSkgdGVtcCwgKF9fdjE2cXUpIHZ6ZXJvLCBwa3Blcm0pOwogIH0KI2VuZGlmCiAgcmV0dXJuIChfX20xMjhpKSByZXN1bHQ7Cn0KCmV4dGVybiBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2N2dHBkX3BpMzIgKF9fbTEyOGQgX19BKQp7CiAgX19tMTI4aSByZXN1bHQgPSBfbW1fY3Z0cGRfZXBpMzIoX19BKTsKCiAgcmV0dXJuIChfX202NCkgcmVzdWx0WzBdOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fY3Z0cGRfcHMgKF9fbTEyOGQgX19BKQp7CiAgX192NHNmIHJlc3VsdDsKICBfX3Y0c2kgdGVtcDsKICBjb25zdCBfX3Y0c2kgdnplcm8gPSB7IDAsIDAsIDAsIDAgfTsKCiAgX19hc21fXygKICAgICAgInh2Y3ZkcHNwICV4MCwleDEiCiAgICAgIDogIj13YSIgKHRlbXApCiAgICAgIDogIndhIiAoX19BKQogICAgICA6ICk7CgojaWZkZWYgX0FSQ0hfUFdSOAogIHRlbXAgPSB2ZWNfbWVyZ2VvICh0ZW1wLCB0ZW1wKTsKICByZXN1bHQgPSAoX192NHNmKSB2ZWNfdnBrdWR1bSAoKF9fdmVjdG9yIGxvbmcgbG9uZykgdGVtcCwKCQkJCSAoX192ZWN0b3IgbG9uZyBsb25nKSB2emVybyk7CiNlbHNlCiAgewogICAgY29uc3QgX192MTZxdSBwa3Blcm0gPSB7MHgwMCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwOCwgMHgwOSwgMHgwYSwgMHgwYiwKCTB4MTQsIDB4MTUsIDB4MTYsIDB4MTcsIDB4MWMsIDB4MWQsIDB4MWUsIDB4MWYgfTsKICAgIHJlc3VsdCA9IChfX3Y0c2YpIHZlY19wZXJtICgoX192MTZxdSkgdGVtcCwgKF9fdjE2cXUpIHZ6ZXJvLCBwa3Blcm0pOwogIH0KI2VuZGlmCiAgcmV0dXJuICgoX19tMTI4KXJlc3VsdCk7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fY3Z0dHBkX2VwaTMyIChfX20xMjhkIF9fQSkKewogIF9fdjRzaSByZXN1bHQ7CiAgX192NHNpIHRlbXA7CiAgY29uc3QgX192NHNpIHZ6ZXJvID0geyAwLCAwLCAwLCAwIH07CgogIC8qIFZTWCBWZWN0b3IgdHJ1bmNhdGUgRG91YmxlLVByZWNpc2lvbiB0byBpbnRlZ2VyIGFuZCBDb252ZXJ0IHRvCiAgIFNpZ25lZCBJbnRlZ2VyIFdvcmQgZm9ybWF0IHdpdGggU2F0dXJhdGUuICAqLwogIF9fYXNtX18oCiAgICAgICJ4dmN2ZHBzeHdzICV4MCwleDEiCiAgICAgIDogIj13YSIgKHRlbXApCiAgICAgIDogIndhIiAoX19BKQogICAgICA6ICk7CgojaWZkZWYgX0FSQ0hfUFdSOAogIHRlbXAgPSB2ZWNfbWVyZ2VvICh0ZW1wLCB0ZW1wKTsKICByZXN1bHQgPSAoX192NHNpKSB2ZWNfdnBrdWR1bSAoKF9fdmVjdG9yIGxvbmcgbG9uZykgdGVtcCwKCQkJCSAoX192ZWN0b3IgbG9uZyBsb25nKSB2emVybyk7CiNlbHNlCiAgewogICAgY29uc3QgX192MTZxdSBwa3Blcm0gPSB7MHgwMCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwOCwgMHgwOSwgMHgwYSwgMHgwYiwKCTB4MTQsIDB4MTUsIDB4MTYsIDB4MTcsIDB4MWMsIDB4MWQsIDB4MWUsIDB4MWYgfTsKICAgIHJlc3VsdCA9IChfX3Y0c2kpIHZlY19wZXJtICgoX192MTZxdSkgdGVtcCwgKF9fdjE2cXUpIHZ6ZXJvLCBwa3Blcm0pOwogIH0KI2VuZGlmCgogIHJldHVybiAoKF9fbTEyOGkpIHJlc3VsdCk7Cn0KCmV4dGVybiBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2N2dHRwZF9waTMyIChfX20xMjhkIF9fQSkKewogIF9fbTEyOGkgcmVzdWx0ID0gX21tX2N2dHRwZF9lcGkzMiAoX19BKTsKCiAgcmV0dXJuIChfX202NCkgcmVzdWx0WzBdOwp9CgpleHRlcm4gX19pbmxpbmUgaW50IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fY3Z0c2kxMjhfc2kzMiAoX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKChfX3Y0c2kpX19BKVswXTsKfQoKI2lmZGVmIF9BUkNIX1BXUjgKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9jdnRwaTMyX3BkIChfX202NCBfX0EpCnsKICBfX3Y0c2kgdGVtcDsKICBfX3YyZGkgdG1wMjsKICBfX3YyZGYgcmVzdWx0OwoKICB0ZW1wID0gKF9fdjRzaSl2ZWNfc3BsYXRzIChfX0EpOwogIHRtcDIgPSAoX192MmRpKXZlY191bnBhY2tsICh0ZW1wKTsKICByZXN1bHQgPSB2ZWNfY3RmICgoX192ZWN0b3Igc2lnbmVkIGxvbmcgbG9uZykgdG1wMiwgMCk7CiAgcmV0dXJuIChfX20xMjhkKXJlc3VsdDsKfQojZW5kaWYKCmV4dGVybiBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fY3Z0cHNfZXBpMzIgKF9fbTEyOCBfX0EpCnsKICBfX3Y0c2Ygcm91bmRlZDsKICBfX3Y0c2kgcmVzdWx0OwoKICByb3VuZGVkID0gdmVjX3JpbnQoKF9fdjRzZikgX19BKTsKICByZXN1bHQgPSB2ZWNfY3RzIChyb3VuZGVkLCAwKTsKICByZXR1cm4gKF9fbTEyOGkpIHJlc3VsdDsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9jdnR0cHNfZXBpMzIgKF9fbTEyOCBfX0EpCnsKICBfX3Y0c2kgcmVzdWx0OwoKICByZXN1bHQgPSB2ZWNfY3RzICgoX192NHNmKSBfX0EsIDApOwogIHJldHVybiAoX19tMTI4aSkgcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2N2dHBzX3BkIChfX20xMjggX19BKQp7CiAgLyogQ2hlY2sgaWYgdmVjX2RvdWJsZWggaXMgZGVmaW5lZCBieSA8YWx0aXZlYy5oPi4gSWYgc28gdXNlIHRoYXQuICovCiNpZmRlZiB2ZWNfZG91YmxlaAogIHJldHVybiAoX19tMTI4ZCkgdmVjX2RvdWJsZWggKChfX3Y0c2YpX19BKTsKI2Vsc2UKICAvKiBPdGhlcndpc2UgdGhlIGNvbXBpbGVyIGlzIG5vdCBjdXJyZW50IGFuZCBzbyBuZWVkIHRvIGdlbmVyYXRlIHRoZQogICAgIGVxdWl2YWxlbnQgY29kZS4gICovCiAgX192NHNmIGEgPSAoX192NHNmKV9fQTsKICBfX3Y0c2YgdGVtcDsKICBfX3YyZGYgcmVzdWx0OwojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICAvKiBUaGUgaW5wdXQgZmxvYXQgdmFsdWVzIGFyZSBpbiBlbGVtZW50cyB7WzBdLCBbMV19IGJ1dCB0aGUgY29udmVydAogICAgIGluc3RydWN0aW9uIG5lZWRzIHRoZW0gaW4gZWxlbWVudHMge1sxXSwgWzNdfSwgU28gd2UgdXNlIHR3bwogICAgIHNoaWZ0IGxlZnQgZG91YmxlIHZlY3RvciB3b3JkIGltbWVkaWF0ZXMgdG8gZ2V0IHRoZSBlbGVtZW50cwogICAgIGxpbmVkIHVwLiAgKi8KICB0ZW1wID0gX19idWlsdGluX3ZzeF94eHNsZHdpIChhLCBhLCAzKTsKICB0ZW1wID0gX19idWlsdGluX3ZzeF94eHNsZHdpIChhLCB0ZW1wLCAyKTsKI2Vsc2UKICAvKiBUaGUgaW5wdXQgZmxvYXQgdmFsdWVzIGFyZSBpbiBlbGVtZW50cyB7WzBdLCBbMV19IGJ1dCB0aGUgY29udmVydAogICAgIGluc3RydWN0aW9uIG5lZWRzIHRoZW0gaW4gZWxlbWVudHMge1swXSwgWzJdfSwgU28gd2UgdXNlIHR3bwogICAgIHNoaWZ0IGxlZnQgZG91YmxlIHZlY3RvciB3b3JkIGltbWVkaWF0ZXMgdG8gZ2V0IHRoZSBlbGVtZW50cwogICAgIGxpbmVkIHVwLiAgKi8KICB0ZW1wID0gdmVjX3ZtcmdodyAoYSwgYSk7CiNlbmRpZgogIF9fYXNtX18oCiAgICAgICIgeHZjdnNwZHAgJXgwLCV4MSIKICAgICAgOiAiPXdhIiAocmVzdWx0KQogICAgICA6ICJ3YSIgKHRlbXApCiAgICAgIDogKTsKICByZXR1cm4gKF9fbTEyOGQpIHJlc3VsdDsKI2VuZGlmCn0KCmV4dGVybiBfX2lubGluZSBpbnQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9jdnRzZF9zaTMyIChfX20xMjhkIF9fQSkKewogIF9fdjJkZiByb3VuZGVkID0gdmVjX3JpbnQoKF9fdjJkZikgX19BKTsKICBpbnQgcmVzdWx0ID0gKChfX3YyZGYpcm91bmRlZClbMF07CgogIHJldHVybiByZXN1bHQ7Cn0KLyogSW50ZWwgaW50cmluc2ljLiAgKi8KZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2N2dHNkX3NpNjQgKF9fbTEyOGQgX19BKQp7CiAgX192MmRmIHJvdW5kZWQgPSB2ZWNfcmludCAoKF9fdjJkZikgX19BICk7CiAgbG9uZyBsb25nIHJlc3VsdCA9ICgoX192MmRmKSByb3VuZGVkKVswXTsKCiAgcmV0dXJuIHJlc3VsdDsKfQoKLyogTWljcm9zb2Z0IGludHJpbnNpYy4gICovCmV4dGVybiBfX2lubGluZSBsb25nIGxvbmcgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9jdnRzZF9zaTY0eCAoX19tMTI4ZCBfX0EpCnsKICByZXR1cm4gX21tX2N2dHNkX3NpNjQgKChfX3YyZGYpX19BKTsKfQoKZXh0ZXJuIF9faW5saW5lIGludCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2N2dHRzZF9zaTMyIChfX20xMjhkIF9fQSkKewogIGludCByZXN1bHQgPSAoKF9fdjJkZilfX0EpWzBdOwoKICByZXR1cm4gcmVzdWx0Owp9CgovKiBJbnRlbCBpbnRyaW5zaWMuICAqLwpleHRlcm4gX19pbmxpbmUgbG9uZyBsb25nIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fY3Z0dHNkX3NpNjQgKF9fbTEyOGQgX19BKQp7CiAgbG9uZyBsb25nIHJlc3VsdCA9ICgoX192MmRmKV9fQSlbMF07CgogIHJldHVybiByZXN1bHQ7Cn0KCi8qIE1pY3Jvc29mdCBpbnRyaW5zaWMuICAqLwpleHRlcm4gX19pbmxpbmUgbG9uZyBsb25nIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fY3Z0dHNkX3NpNjR4IChfX20xMjhkIF9fQSkKewogIHJldHVybiBfbW1fY3Z0dHNkX3NpNjQgKF9fQSk7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9jdnRzZF9zcyAoX19tMTI4IF9fQSwgX19tMTI4ZCBfX0IpCnsKICBfX3Y0c2YgcmVzdWx0ID0gKF9fdjRzZilfX0E7CgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICBfX3Y0c2YgdGVtcF9zOwogIC8qIENvcHkgZG91YmxlIGVsZW1lbnRbMF0gdG8gZWxlbWVudCBbMV0gZm9yIGNvbnZlcnNpb24uICAqLwogIF9fdjJkZiB0ZW1wX2IgPSB2ZWNfc3BsYXQoKF9fdjJkZilfX0IsIDApOwoKICAvKiBQcmUtcm90YXRlIF9fQSBsZWZ0IDMgKGxvZ2ljYWxseSByaWdodCAxKSBlbGVtZW50cy4gICovCiAgcmVzdWx0ID0gX19idWlsdGluX3ZzeF94eHNsZHdpIChyZXN1bHQsIHJlc3VsdCwgMyk7CiAgLyogQ29udmVydCBkb3VibGUgdG8gc2luZ2xlIGZsb2F0IHNjYWxhciBpbiBhIHZlY3Rvci4gICovCiAgX19hc21fXygKICAgICAgInhzY3ZkcHNwICV4MCwleDEiCiAgICAgIDogIj13YSIgKHRlbXBfcykKICAgICAgOiAid2EiICh0ZW1wX2IpCiAgICAgIDogKTsKICAvKiBTaGlmdCB0aGUgcmVzdWx0aW5nIHNjYWxhciBpbnRvIHZlY3RvciBlbGVtZW50IFswXS4gICovCiAgcmVzdWx0ID0gX19idWlsdGluX3ZzeF94eHNsZHdpIChyZXN1bHQsIHRlbXBfcywgMSk7CiNlbHNlCiAgcmVzdWx0IFswXSA9ICgoX192MmRmKV9fQilbMF07CiNlbmRpZgogIHJldHVybiAoX19tMTI4KSByZXN1bHQ7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fY3Z0c2kzMl9zZCAoX19tMTI4ZCBfX0EsIGludCBfX0IpCnsKICBfX3YyZGYgcmVzdWx0ID0gKF9fdjJkZilfX0E7CiAgZG91YmxlIGRiID0gX19COwogIHJlc3VsdCBbMF0gPSBkYjsKICByZXR1cm4gKF9fbTEyOGQpcmVzdWx0Owp9CgovKiBJbnRlbCBpbnRyaW5zaWMuICAqLwpleHRlcm4gX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2N2dHNpNjRfc2QgKF9fbTEyOGQgX19BLCBsb25nIGxvbmcgX19CKQp7CiAgX192MmRmIHJlc3VsdCA9IChfX3YyZGYpX19BOwogIGRvdWJsZSBkYiA9IF9fQjsKICByZXN1bHQgWzBdID0gZGI7CiAgcmV0dXJuIChfX20xMjhkKXJlc3VsdDsKfQoKLyogTWljcm9zb2Z0IGludHJpbnNpYy4gICovCmV4dGVybiBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fY3Z0c2k2NHhfc2QgKF9fbTEyOGQgX19BLCBsb25nIGxvbmcgX19CKQp7CiAgcmV0dXJuIF9tbV9jdnRzaTY0X3NkIChfX0EsIF9fQik7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fY3Z0c3Nfc2QgKF9fbTEyOGQgX19BLCBfX20xMjggX19CKQp7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIC8qIFVzZSBzcGxhdCB0byBtb3ZlIGVsZW1lbnQgWzBdIGludG8gcG9zaXRpb24gZm9yIHRoZSBjb252ZXJ0LiAqLwogIF9fdjRzZiB0ZW1wID0gdmVjX3NwbGF0ICgoX192NHNmKV9fQiwgMCk7CiAgX192MmRmIHJlczsKICAvKiBDb252ZXJ0IHNpbmdsZSBmbG9hdCBzY2FsYXIgdG8gZG91YmxlIGluIGEgdmVjdG9yLiAgKi8KICBfX2FzbV9fKAogICAgICAieHNjdnNwZHAgJXgwLCV4MSIKICAgICAgOiAiPXdhIiAocmVzKQogICAgICA6ICJ3YSIgKHRlbXApCiAgICAgIDogKTsKICByZXR1cm4gKF9fbTEyOGQpIHZlY19tZXJnZWwgKHJlcywgKF9fdjJkZilfX0EpOwojZWxzZQogIF9fdjJkZiByZXMgPSAoX192MmRmKV9fQTsKICByZXMgWzBdID0gKChfX3Y0c2YpX19CKSBbMF07CiAgcmV0dXJuIChfX20xMjhkKSByZXM7CiNlbmRpZgp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX3NodWZmbGVfcGQoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CLCBjb25zdCBpbnQgX19tYXNrKQp7CiAgX192ZWN0b3IgZG91YmxlIHJlc3VsdDsKICBjb25zdCBpbnQgbGl0bXNrID0gX19tYXNrICYgMHgzOwoKICBpZiAobGl0bXNrID09IDApCiAgICByZXN1bHQgPSB2ZWNfbWVyZ2VoIChfX0EsIF9fQik7CiNpZiBfX0dOVUNfXyA8IDYKICBlbHNlIGlmIChsaXRtc2sgPT0gMSkKICAgIHJlc3VsdCA9IHZlY194eHBlcm1kaSAoX19CLCBfX0EsIDIpOwogIGVsc2UgaWYgKGxpdG1zayA9PSAyKQogICAgcmVzdWx0ID0gdmVjX3h4cGVybWRpIChfX0IsIF9fQSwgMSk7CiNlbHNlCiAgZWxzZSBpZiAobGl0bXNrID09IDEpCiAgICByZXN1bHQgPSB2ZWNfeHhwZXJtZGkgKF9fQSwgX19CLCAyKTsKICBlbHNlIGlmIChsaXRtc2sgPT0gMikKICAgIHJlc3VsdCA9IHZlY194eHBlcm1kaSAoX19BLCBfX0IsIDEpOwojZW5kaWYKICBlbHNlCiAgICByZXN1bHQgPSB2ZWNfbWVyZ2VsIChfX0EsIF9fQik7CgogIHJldHVybiByZXN1bHQ7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fdW5wYWNraGlfcGQgKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikKewogIHJldHVybiAoX19tMTI4ZCkgdmVjX21lcmdlbCAoKF9fdjJkZilfX0EsIChfX3YyZGYpX19CKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV91bnBhY2tsb19wZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQp7CiAgcmV0dXJuIChfX20xMjhkKSB2ZWNfbWVyZ2VoICgoX192MmRmKV9fQSwgKF9fdjJkZilfX0IpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2xvYWRoX3BkIChfX20xMjhkIF9fQSwgZG91YmxlIGNvbnN0ICpfX0IpCnsKICBfX3YyZGYgcmVzdWx0ID0gKF9fdjJkZilfX0E7CiAgcmVzdWx0IFsxXSA9ICpfX0I7CiAgcmV0dXJuIChfX20xMjhkKXJlc3VsdDsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9sb2FkbF9wZCAoX19tMTI4ZCBfX0EsIGRvdWJsZSBjb25zdCAqX19CKQp7CiAgX192MmRmIHJlc3VsdCA9IChfX3YyZGYpX19BOwogIHJlc3VsdCBbMF0gPSAqX19COwogIHJldHVybiAoX19tMTI4ZClyZXN1bHQ7Cn0KCiNpZmRlZiBfQVJDSF9QV1I4Ci8qIEludHJpbnNpYyBmdW5jdGlvbnMgdGhhdCByZXF1aXJlIFBvd2VySVNBIDIuMDcgbWluaW11bS4gICovCgovKiBDcmVhdGVzIGEgMi1iaXQgbWFzayBmcm9tIHRoZSBtb3N0IHNpZ25pZmljYW50IGJpdHMgb2YgdGhlIERQRlAgdmFsdWVzLiAgKi8KZXh0ZXJuIF9faW5saW5lIGludCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX21vdmVtYXNrX3BkIChfX20xMjhkICBfX0EpCnsKICBfX3ZlY3RvciB1bnNpZ25lZCBsb25nIGxvbmcgcmVzdWx0OwogIHN0YXRpYyBjb25zdCBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgcGVybV9tYXNrID0KICAgIHsKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCgkweDgwODAwMDQwLCAweDgwODA4MDgwLCAweDgwODA4MDgwLCAweDgwODA4MDgwCiNlbHNlCiAgICAgIDB4ODA4MDgwODAsIDB4ODA4MDgwODAsIDB4ODA4MDgwODAsIDB4ODA4MDQwMDAKI2VuZGlmCiAgICB9OwoKICByZXN1bHQgPSAoKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZykKCSAgICB2ZWNfdmJwZXJtcSAoKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpIF9fQSwKCQkJIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKSBwZXJtX21hc2spKTsKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiByZXN1bHRbMV07CiNlbHNlCiAgcmV0dXJuIHJlc3VsdFswXTsKI2VuZGlmCn0KI2VuZGlmIC8qIF9BUkNIX1BXUjggKi8KCmV4dGVybiBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fcGFja3NfZXBpMTYgKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSkgdmVjX3BhY2tzICgoX192OGhpKSBfX0EsIChfX3Y4aGkpX19CKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9wYWNrc19lcGkzMiAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKSB2ZWNfcGFja3MgKChfX3Y0c2kpX19BLCAoX192NHNpKV9fQik7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fcGFja3VzX2VwaTE2IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpIHZlY19wYWNrc3UgKChfX3Y4aGkpIF9fQSwgKF9fdjhoaSlfX0IpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX3VucGFja2hpX2VwaTggKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSkgdmVjX21lcmdlbCAoKF9fdjE2cXUpX19BLCAoX192MTZxdSlfX0IpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX3VucGFja2hpX2VwaTE2IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpIHZlY19tZXJnZWwgKChfX3Y4aHUpX19BLCAoX192OGh1KV9fQik7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fdW5wYWNraGlfZXBpMzIgKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSkgdmVjX21lcmdlbCAoKF9fdjRzdSlfX0EsIChfX3Y0c3UpX19CKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV91bnBhY2toaV9lcGk2NCAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKSB2ZWNfbWVyZ2VsICgoX192ZWN0b3IgbG9uZyBsb25nKSBfX0EsCgkJCSAgICAgICAoX192ZWN0b3IgbG9uZyBsb25nKSBfX0IpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX3VucGFja2xvX2VwaTggKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSkgdmVjX21lcmdlaCAoKF9fdjE2cXUpX19BLCAoX192MTZxdSlfX0IpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX3VucGFja2xvX2VwaTE2IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpIHZlY19tZXJnZWggKChfX3Y4aGkpX19BLCAoX192OGhpKV9fQik7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fdW5wYWNrbG9fZXBpMzIgKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSkgdmVjX21lcmdlaCAoKF9fdjRzaSlfX0EsIChfX3Y0c2kpX19CKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV91bnBhY2tsb19lcGk2NCAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKSB2ZWNfbWVyZ2VoICgoX192ZWN0b3IgbG9uZyBsb25nKSBfX0EsCgkJCSAgICAgICAoX192ZWN0b3IgbG9uZyBsb25nKSBfX0IpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2FkZF9lcGk4IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpICgoX192MTZxdSlfX0EgKyAoX192MTZxdSlfX0IpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2FkZF9lcGkxNiAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKSAoKF9fdjhodSlfX0EgKyAoX192OGh1KV9fQik7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fYWRkX2VwaTMyIChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpICgoX192NHN1KV9fQSArIChfX3Y0c3UpX19CKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9hZGRfZXBpNjQgKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSkgKChfX3YyZHUpX19BICsgKF9fdjJkdSlfX0IpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2FkZHNfZXBpOCAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKSB2ZWNfYWRkcyAoKF9fdjE2cWkpX19BLCAoX192MTZxaSlfX0IpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2FkZHNfZXBpMTYgKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSkgdmVjX2FkZHMgKChfX3Y4aGkpX19BLCAoX192OGhpKV9fQik7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fYWRkc19lcHU4IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpIHZlY19hZGRzICgoX192MTZxdSlfX0EsIChfX3YxNnF1KV9fQik7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fYWRkc19lcHUxNiAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKSB2ZWNfYWRkcyAoKF9fdjhodSlfX0EsIChfX3Y4aHUpX19CKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9zdWJfZXBpOCAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKSAoKF9fdjE2cXUpX19BIC0gKF9fdjE2cXUpX19CKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9zdWJfZXBpMTYgKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSkgKChfX3Y4aHUpX19BIC0gKF9fdjhodSlfX0IpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX3N1Yl9lcGkzMiAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKSAoKF9fdjRzdSlfX0EgLSAoX192NHN1KV9fQik7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fc3ViX2VwaTY0IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpICgoX192MmR1KV9fQSAtIChfX3YyZHUpX19CKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9zdWJzX2VwaTggKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSkgdmVjX3N1YnMgKChfX3YxNnFpKV9fQSwgKF9fdjE2cWkpX19CKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9zdWJzX2VwaTE2IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpIHZlY19zdWJzICgoX192OGhpKV9fQSwgKF9fdjhoaSlfX0IpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX3N1YnNfZXB1OCAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKSB2ZWNfc3VicyAoKF9fdjE2cXUpX19BLCAoX192MTZxdSlfX0IpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX3N1YnNfZXB1MTYgKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSkgdmVjX3N1YnMgKChfX3Y4aHUpX19BLCAoX192OGh1KV9fQik7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fbWFkZF9lcGkxNiAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgX192ZWN0b3Igc2lnbmVkIGludCB6ZXJvID0gezAsIDAsIDAsIDB9OwoKICByZXR1cm4gKF9fbTEyOGkpIHZlY192bXN1bXNobSAoKF9fdjhoaSlfX0EsIChfX3Y4aGkpX19CLCB6ZXJvKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9tdWxoaV9lcGkxNiAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgX192ZWN0b3Igc2lnbmVkIGludCB3MCwgdzE7CgogIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgeGZvcm0xID0gewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICAgICAgMHgwMiwgMHgwMywgMHgxMiwgMHgxMywgIDB4MDYsIDB4MDcsIDB4MTYsIDB4MTcsCiAgICAgIDB4MEEsIDB4MEIsIDB4MUEsIDB4MUIsICAweDBFLCAweDBGLCAweDFFLCAweDFGCiNlbHNlCiAgICAgIDB4MDAsIDB4MDEsIDB4MTAsIDB4MTEsICAweDA0LCAweDA1LCAweDE0LCAweDE1LAogICAgICAweDA4LCAweDA5LCAweDE4LCAweDE5LCAgMHgwQywgMHgwRCwgMHgxQywgMHgxRAojZW5kaWYKICAgIH07CgogIHcwID0gdmVjX3ZtdWxlc2ggKChfX3Y4aGkpX19BLCAoX192OGhpKV9fQik7CiAgdzEgPSB2ZWNfdm11bG9zaCAoKF9fdjhoaSlfX0EsIChfX3Y4aGkpX19CKTsKICByZXR1cm4gKF9fbTEyOGkpIHZlY19wZXJtICh3MCwgdzEsIHhmb3JtMSk7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fbXVsbG9fZXBpMTYgKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogICAgcmV0dXJuIChfX20xMjhpKSAoKF9fdjhoaSlfX0EgKiAoX192OGhpKV9fQik7Cn0KCmV4dGVybiBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX211bF9zdTMyIChfX202NCBfX0EsIF9fbTY0IF9fQikKewogIHVuc2lnbmVkIGludCBhID0gX19BOwogIHVuc2lnbmVkIGludCBiID0gX19COwoKICByZXR1cm4gKChfX202NClhICogKF9fbTY0KWIpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX211bF9lcHUzMiAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiNpZiBfX0dOVUNfXyA8IDgKICBfX3YyZHUgcmVzdWx0OwoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgLyogVk1YIFZlY3RvciBNdWx0aXBseSBPZGQgVW5zaWduZWQgV29yZC4gICovCiAgX19hc21fXygKICAgICAgInZtdWxvdXcgJTAsJTEsJTIiCiAgICAgIDogIj12IiAocmVzdWx0KQogICAgICA6ICJ2IiAoX19BKSwgInYiIChfX0IpCiAgICAgIDogKTsKI2Vsc2UKICAvKiBWTVggVmVjdG9yIE11bHRpcGx5IEV2ZW4gVW5zaWduZWQgV29yZC4gICovCiAgX19hc21fXygKICAgICAgInZtdWxldXcgJTAsJTEsJTIiCiAgICAgIDogIj12IiAocmVzdWx0KQogICAgICA6ICJ2IiAoX19BKSwgInYiIChfX0IpCiAgICAgIDogKTsKI2VuZGlmCiAgcmV0dXJuIChfX20xMjhpKSByZXN1bHQ7CiNlbHNlCiAgcmV0dXJuIChfX20xMjhpKSB2ZWNfbXVsZSAoKF9fdjRzdSlfX0EsIChfX3Y0c3UpX19CKTsKI2VuZGlmCn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fc2xsaV9lcGkxNiAoX19tMTI4aSBfX0EsIGludCBfX0IpCnsKICBfX3Y4aHUgbHNoaWZ0OwogIF9fdjhoaSByZXN1bHQgPSB7IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAgfTsKCiAgaWYgKF9fQiA+PSAwICYmIF9fQiA8IDE2KQogICAgewogICAgICBpZiAoX19idWlsdGluX2NvbnN0YW50X3AoX19CKSkKCWxzaGlmdCA9IChfX3Y4aHUpIHZlY19zcGxhdF9zMTYoX19CKTsKICAgICAgZWxzZQoJbHNoaWZ0ID0gdmVjX3NwbGF0cyAoKHVuc2lnbmVkIHNob3J0KSBfX0IpOwoKICAgICAgcmVzdWx0ID0gdmVjX3NsICgoX192OGhpKSBfX0EsIGxzaGlmdCk7CiAgICB9CgogIHJldHVybiAoX19tMTI4aSkgcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX3NsbGlfZXBpMzIgKF9fbTEyOGkgX19BLCBpbnQgX19CKQp7CiAgX192NHN1IGxzaGlmdDsKICBfX3Y0c2kgcmVzdWx0ID0geyAwLCAwLCAwLCAwIH07CgogIGlmIChfX0IgPj0gMCAmJiBfX0IgPCAzMikKICAgIHsKICAgICAgaWYgKF9fYnVpbHRpbl9jb25zdGFudF9wKF9fQikgJiYgX19CIDwgMTYpCglsc2hpZnQgPSAoX192NHN1KSB2ZWNfc3BsYXRfczMyKF9fQik7CiAgICAgIGVsc2UKCWxzaGlmdCA9IHZlY19zcGxhdHMgKCh1bnNpZ25lZCBpbnQpIF9fQik7CgogICAgICByZXN1bHQgPSB2ZWNfc2wgKChfX3Y0c2kpIF9fQSwgbHNoaWZ0KTsKICAgIH0KCiAgcmV0dXJuIChfX20xMjhpKSByZXN1bHQ7Cn0KCiNpZmRlZiBfQVJDSF9QV1I4CmV4dGVybiBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fc2xsaV9lcGk2NCAoX19tMTI4aSBfX0EsIGludCBfX0IpCnsKICBfX3YyZHUgbHNoaWZ0OwogIF9fdjJkaSByZXN1bHQgPSB7IDAsIDAgfTsKCiAgaWYgKF9fQiA+PSAwICYmIF9fQiA8IDY0KQogICAgewogICAgICBpZiAoX19idWlsdGluX2NvbnN0YW50X3AoX19CKSAmJiBfX0IgPCAxNikKCWxzaGlmdCA9IChfX3YyZHUpIHZlY19zcGxhdF9zMzIoX19CKTsKICAgICAgZWxzZQoJbHNoaWZ0ID0gKF9fdjJkdSkgdmVjX3NwbGF0cyAoKHVuc2lnbmVkIGludCkgX19CKTsKCiAgICAgIHJlc3VsdCA9IHZlY19zbCAoKF9fdjJkaSkgX19BLCBsc2hpZnQpOwogICAgfQoKICByZXR1cm4gKF9fbTEyOGkpIHJlc3VsdDsKfQojZW5kaWYKCmV4dGVybiBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fc3JhaV9lcGkxNiAoX19tMTI4aSBfX0EsIGludCBfX0IpCnsKICBfX3Y4aHUgcnNoaWZ0ID0geyAxNSwgMTUsIDE1LCAxNSwgMTUsIDE1LCAxNSwgMTUgfTsKICBfX3Y4aGkgcmVzdWx0OwoKICBpZiAoX19CIDwgMTYpCiAgICB7CiAgICAgIGlmIChfX2J1aWx0aW5fY29uc3RhbnRfcChfX0IpKQoJcnNoaWZ0ID0gKF9fdjhodSkgdmVjX3NwbGF0X3MxNihfX0IpOwogICAgICBlbHNlCglyc2hpZnQgPSB2ZWNfc3BsYXRzICgodW5zaWduZWQgc2hvcnQpIF9fQik7CiAgICB9CiAgcmVzdWx0ID0gdmVjX3NyYSAoKF9fdjhoaSkgX19BLCByc2hpZnQpOwoKICByZXR1cm4gKF9fbTEyOGkpIHJlc3VsdDsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9zcmFpX2VwaTMyIChfX20xMjhpIF9fQSwgaW50IF9fQikKewogIF9fdjRzdSByc2hpZnQgPSB7IDMxLCAzMSwgMzEsIDMxIH07CiAgX192NHNpIHJlc3VsdDsKCiAgaWYgKF9fQiA8IDMyKQogICAgewogICAgICBpZiAoX19idWlsdGluX2NvbnN0YW50X3AoX19CKSkKCXsKCSAgaWYgKF9fQiA8IDE2KQoJICAgICAgcnNoaWZ0ID0gKF9fdjRzdSkgdmVjX3NwbGF0X3MzMihfX0IpOwoJICAgIGVsc2UKCSAgICAgIHJzaGlmdCA9IChfX3Y0c3UpIHZlY19zcGxhdHMoKHVuc2lnbmVkIGludClfX0IpOwoJfQogICAgICBlbHNlCglyc2hpZnQgPSB2ZWNfc3BsYXRzICgodW5zaWduZWQgaW50KSBfX0IpOwogICAgfQogIHJlc3VsdCA9IHZlY19zcmEgKChfX3Y0c2kpIF9fQSwgcnNoaWZ0KTsKCiAgcmV0dXJuIChfX20xMjhpKSByZXN1bHQ7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fYnNsbGlfc2kxMjggKF9fbTEyOGkgX19BLCBjb25zdCBpbnQgX19OKQp7CiAgX192MTZxdSByZXN1bHQ7CiAgY29uc3QgX192MTZxdSB6ZXJvcyA9IHsgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCB9OwoKICBpZiAoX19OIDwgMTYpCiAgICByZXN1bHQgPSB2ZWNfc2xkICgoX192MTZxdSkgX19BLCB6ZXJvcywgX19OKTsKICBlbHNlCiAgICByZXN1bHQgPSB6ZXJvczsKCiAgcmV0dXJuIChfX20xMjhpKSByZXN1bHQ7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fYnNybGlfc2kxMjggKF9fbTEyOGkgX19BLCBjb25zdCBpbnQgX19OKQp7CiAgX192MTZxdSByZXN1bHQ7CiAgY29uc3QgX192MTZxdSB6ZXJvcyA9IHsgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCB9OwoKICBpZiAoX19OIDwgMTYpCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogICAgaWYgKF9fYnVpbHRpbl9jb25zdGFudF9wKF9fTikpCiAgICAgIC8qIFdvdWxkIGxpa2UgdG8gdXNlIFZlY3RvciBTaGlmdCBMZWZ0IERvdWJsZSBieSBPY3RldAoJIEltbWVkaWF0ZSBoZXJlIHRvIHVzZSB0aGUgaW1tZWRpYXRlIGZvcm0gYW5kIGF2b2lkCgkgbG9hZCBvZiBfX04gKiA4IHZhbHVlIGludG8gYSBzZXBhcmF0ZSBWUi4gICovCiAgICAgIHJlc3VsdCA9IHZlY19zbGQgKHplcm9zLCAoX192MTZxdSkgX19BLCAoMTYgLSBfX04pKTsKICAgIGVsc2UKI2VuZGlmCiAgICAgIHsKCV9fdjE2cXUgc2hpZnQgPSB2ZWNfc3BsYXRzKCh1bnNpZ25lZCBjaGFyKShfX04qOCkpOwojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KCXJlc3VsdCA9IHZlY19zcm8gKChfX3YxNnF1KV9fQSwgc2hpZnQpOwojZWxzZQoJcmVzdWx0ID0gdmVjX3NsbyAoKF9fdjE2cXUpX19BLCBzaGlmdCk7CiNlbmRpZgogICAgICB9CiAgZWxzZQogICAgcmVzdWx0ID0gemVyb3M7CgogIHJldHVybiAoX19tMTI4aSkgcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX3NybGlfc2kxMjggKF9fbTEyOGkgX19BLCBjb25zdCBpbnQgX19OKQp7CiAgcmV0dXJuIF9tbV9ic3JsaV9zaTEyOCAoX19BLCBfX04pOwp9CgpleHRlcm4gX19pbmxpbmUgIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9zbGxpX3NpMTI4IChfX20xMjhpIF9fQSwgY29uc3QgaW50IF9pbW01KQp7CiAgX192MTZxdSByZXN1bHQ7CiAgY29uc3QgX192MTZxdSB6ZXJvcyA9IHsgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCB9OwoKICBpZiAoX2ltbTUgPCAxNikKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgICByZXN1bHQgPSB2ZWNfc2xkICgoX192MTZxdSkgX19BLCB6ZXJvcywgX2ltbTUpOwojZWxzZQogICAgcmVzdWx0ID0gdmVjX3NsZCAoemVyb3MsIChfX3YxNnF1KSBfX0EsICgxNiAtIF9pbW01KSk7CiNlbmRpZgogIGVsc2UKICAgIHJlc3VsdCA9IHplcm9zOwoKICByZXR1cm4gKF9fbTEyOGkpIHJlc3VsdDsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCgpfbW1fc3JsaV9lcGkxNiAoX19tMTI4aSAgX19BLCBpbnQgX19CKQp7CiAgX192OGh1IHJzaGlmdDsKICBfX3Y4aGkgcmVzdWx0ID0geyAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwIH07CgogIGlmIChfX0IgPCAxNikKICAgIHsKICAgICAgaWYgKF9fYnVpbHRpbl9jb25zdGFudF9wKF9fQikpCglyc2hpZnQgPSAoX192OGh1KSB2ZWNfc3BsYXRfczE2KF9fQik7CiAgICAgIGVsc2UKCXJzaGlmdCA9IHZlY19zcGxhdHMgKCh1bnNpZ25lZCBzaG9ydCkgX19CKTsKCiAgICAgIHJlc3VsdCA9IHZlY19zciAoKF9fdjhoaSkgX19BLCByc2hpZnQpOwogICAgfQoKICByZXR1cm4gKF9fbTEyOGkpIHJlc3VsdDsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9zcmxpX2VwaTMyIChfX20xMjhpIF9fQSwgaW50IF9fQikKewogIF9fdjRzdSByc2hpZnQ7CiAgX192NHNpIHJlc3VsdCA9IHsgMCwgMCwgMCwgMCB9OwoKICBpZiAoX19CIDwgMzIpCiAgICB7CiAgICAgIGlmIChfX2J1aWx0aW5fY29uc3RhbnRfcChfX0IpKQoJewoJICBpZiAoX19CIDwgMTYpCgkgICAgICByc2hpZnQgPSAoX192NHN1KSB2ZWNfc3BsYXRfczMyKF9fQik7CgkgICAgZWxzZQoJICAgICAgcnNoaWZ0ID0gKF9fdjRzdSkgdmVjX3NwbGF0cygodW5zaWduZWQgaW50KV9fQik7Cgl9CiAgICAgIGVsc2UKCXJzaGlmdCA9IHZlY19zcGxhdHMgKCh1bnNpZ25lZCBpbnQpIF9fQik7CgogICAgICByZXN1bHQgPSB2ZWNfc3IgKChfX3Y0c2kpIF9fQSwgcnNoaWZ0KTsKICAgIH0KCiAgcmV0dXJuIChfX20xMjhpKSByZXN1bHQ7Cn0KCiNpZmRlZiBfQVJDSF9QV1I4CmV4dGVybiBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fc3JsaV9lcGk2NCAoX19tMTI4aSBfX0EsIGludCBfX0IpCnsKICBfX3YyZHUgcnNoaWZ0OwogIF9fdjJkaSByZXN1bHQgPSB7IDAsIDAgfTsKCiAgaWYgKF9fQiA8IDY0KQogICAgewogICAgICBpZiAoX19idWlsdGluX2NvbnN0YW50X3AoX19CKSkKCXsKCSAgaWYgKF9fQiA8IDE2KQoJICAgICAgcnNoaWZ0ID0gKF9fdjJkdSkgdmVjX3NwbGF0X3MzMihfX0IpOwoJICAgIGVsc2UKCSAgICAgIHJzaGlmdCA9IChfX3YyZHUpIHZlY19zcGxhdHMoKHVuc2lnbmVkIGxvbmcgbG9uZylfX0IpOwoJfQogICAgICBlbHNlCglyc2hpZnQgPSAoX192MmR1KSB2ZWNfc3BsYXRzICgodW5zaWduZWQgaW50KSBfX0IpOwoKICAgICAgcmVzdWx0ID0gdmVjX3NyICgoX192MmRpKSBfX0EsIHJzaGlmdCk7CiAgICB9CgogIHJldHVybiAoX19tMTI4aSkgcmVzdWx0Owp9CiNlbmRpZgoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9zbGxfZXBpMTYgKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIF9fdjhodSBsc2hpZnQ7CiAgX192ZWN0b3IgX19ib29sIHNob3J0IHNobWFzazsKICBjb25zdCBfX3Y4aHUgc2htYXggPSB7IDE1LCAxNSwgMTUsIDE1LCAxNSwgMTUsIDE1LCAxNSB9OwogIF9fdjhodSByZXN1bHQ7CgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICBsc2hpZnQgPSB2ZWNfc3BsYXQgKChfX3Y4aHUpIF9fQiwgMCk7CiNlbHNlCiAgbHNoaWZ0ID0gdmVjX3NwbGF0ICgoX192OGh1KSBfX0IsIDMpOwojZW5kaWYKICBzaG1hc2sgPSB2ZWNfY21wbGUgKGxzaGlmdCwgc2htYXgpOwogIHJlc3VsdCA9IHZlY19zbCAoKF9fdjhodSkgX19BLCBsc2hpZnQpOwogIHJlc3VsdCA9IHZlY19zZWwgKChfX3Y4aHUpIHNobWFzaywgcmVzdWx0LCBzaG1hc2spOwoKICByZXR1cm4gKF9fbTEyOGkpIHJlc3VsdDsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9zbGxfZXBpMzIgKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIF9fdjRzdSBsc2hpZnQ7CiAgX192ZWN0b3IgX19ib29sIGludCBzaG1hc2s7CiAgY29uc3QgX192NHN1IHNobWF4ID0geyAzMiwgMzIsIDMyLCAzMiB9OwogIF9fdjRzdSByZXN1bHQ7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIGxzaGlmdCA9IHZlY19zcGxhdCAoKF9fdjRzdSkgX19CLCAwKTsKI2Vsc2UKICBsc2hpZnQgPSB2ZWNfc3BsYXQgKChfX3Y0c3UpIF9fQiwgMSk7CiNlbmRpZgogIHNobWFzayA9IHZlY19jbXBsdCAobHNoaWZ0LCBzaG1heCk7CiAgcmVzdWx0ID0gdmVjX3NsICgoX192NHN1KSBfX0EsIGxzaGlmdCk7CiAgcmVzdWx0ID0gdmVjX3NlbCAoKF9fdjRzdSkgc2htYXNrLCByZXN1bHQsIHNobWFzayk7CgogIHJldHVybiAoX19tMTI4aSkgcmVzdWx0Owp9CgojaWZkZWYgX0FSQ0hfUFdSOApleHRlcm4gX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX3NsbF9lcGk2NCAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgX192MmR1IGxzaGlmdDsKICBfX3ZlY3RvciBfX2Jvb2wgbG9uZyBsb25nIHNobWFzazsKICBjb25zdCBfX3YyZHUgc2htYXggPSB7IDY0LCA2NCB9OwogIF9fdjJkdSByZXN1bHQ7CgogIGxzaGlmdCA9IHZlY19zcGxhdCAoKF9fdjJkdSkgX19CLCAwKTsKICBzaG1hc2sgPSB2ZWNfY21wbHQgKGxzaGlmdCwgc2htYXgpOwogIHJlc3VsdCA9IHZlY19zbCAoKF9fdjJkdSkgX19BLCBsc2hpZnQpOwogIHJlc3VsdCA9IChfX3YyZHUpdmVjX3NlbCAoKF9fdjJkZikgc2htYXNrLCAoX192MmRmKXJlc3VsdCwgc2htYXNrKTsKCiAgcmV0dXJuIChfX20xMjhpKSByZXN1bHQ7Cn0KI2VuZGlmCgpleHRlcm4gX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX3NyYV9lcGkxNiAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgY29uc3QgX192OGh1IHJzaG1heCA9IHsgMTUsIDE1LCAxNSwgMTUsIDE1LCAxNSwgMTUsIDE1IH07CiAgX192OGh1IHJzaGlmdDsKICBfX3Y4aGkgcmVzdWx0OwoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcnNoaWZ0ID0gdmVjX3NwbGF0ICgoX192OGh1KV9fQiwgMCk7CiNlbHNlCiAgcnNoaWZ0ID0gdmVjX3NwbGF0ICgoX192OGh1KV9fQiwgMyk7CiNlbmRpZgogIHJzaGlmdCA9IHZlY19taW4gKHJzaGlmdCwgcnNobWF4KTsKICByZXN1bHQgPSB2ZWNfc3JhICgoX192OGhpKSBfX0EsIHJzaGlmdCk7CgogIHJldHVybiAoX19tMTI4aSkgcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX3NyYV9lcGkzMiAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgY29uc3QgX192NHN1IHJzaG1heCA9IHsgMzEsIDMxLCAzMSwgMzEgfTsKICBfX3Y0c3UgcnNoaWZ0OwogIF9fdjRzaSByZXN1bHQ7CgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICByc2hpZnQgPSB2ZWNfc3BsYXQgKChfX3Y0c3UpX19CLCAwKTsKI2Vsc2UKICByc2hpZnQgPSB2ZWNfc3BsYXQgKChfX3Y0c3UpX19CLCAxKTsKI2VuZGlmCiAgcnNoaWZ0ID0gdmVjX21pbiAocnNoaWZ0LCByc2htYXgpOwogIHJlc3VsdCA9IHZlY19zcmEgKChfX3Y0c2kpIF9fQSwgcnNoaWZ0KTsKCiAgcmV0dXJuIChfX20xMjhpKSByZXN1bHQ7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fc3JsX2VwaTE2IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICBfX3Y4aHUgcnNoaWZ0OwogIF9fdmVjdG9yIF9fYm9vbCBzaG9ydCBzaG1hc2s7CiAgY29uc3QgX192OGh1IHNobWF4ID0geyAxNSwgMTUsIDE1LCAxNSwgMTUsIDE1LCAxNSwgMTUgfTsKICBfX3Y4aHUgcmVzdWx0OwoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcnNoaWZ0ID0gdmVjX3NwbGF0ICgoX192OGh1KSBfX0IsIDApOwojZWxzZQogIHJzaGlmdCA9IHZlY19zcGxhdCAoKF9fdjhodSkgX19CLCAzKTsKI2VuZGlmCiAgc2htYXNrID0gdmVjX2NtcGxlIChyc2hpZnQsIHNobWF4KTsKICByZXN1bHQgPSB2ZWNfc3IgKChfX3Y4aHUpIF9fQSwgcnNoaWZ0KTsKICByZXN1bHQgPSB2ZWNfc2VsICgoX192OGh1KSBzaG1hc2ssIHJlc3VsdCwgc2htYXNrKTsKCiAgcmV0dXJuIChfX20xMjhpKSByZXN1bHQ7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fc3JsX2VwaTMyIChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICBfX3Y0c3UgcnNoaWZ0OwogIF9fdmVjdG9yIF9fYm9vbCBpbnQgc2htYXNrOwogIGNvbnN0IF9fdjRzdSBzaG1heCA9IHsgMzIsIDMyLCAzMiwgMzIgfTsKICBfX3Y0c3UgcmVzdWx0OwoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiAgcnNoaWZ0ID0gdmVjX3NwbGF0ICgoX192NHN1KSBfX0IsIDApOwojZWxzZQogIHJzaGlmdCA9IHZlY19zcGxhdCAoKF9fdjRzdSkgX19CLCAxKTsKI2VuZGlmCiAgc2htYXNrID0gdmVjX2NtcGx0IChyc2hpZnQsIHNobWF4KTsKICByZXN1bHQgPSB2ZWNfc3IgKChfX3Y0c3UpIF9fQSwgcnNoaWZ0KTsKICByZXN1bHQgPSB2ZWNfc2VsICgoX192NHN1KSBzaG1hc2ssIHJlc3VsdCwgc2htYXNrKTsKCiAgcmV0dXJuIChfX20xMjhpKSByZXN1bHQ7Cn0KCiNpZmRlZiBfQVJDSF9QV1I4CmV4dGVybiBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fc3JsX2VwaTY0IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICBfX3YyZHUgcnNoaWZ0OwogIF9fdmVjdG9yIF9fYm9vbCBsb25nIGxvbmcgc2htYXNrOwogIGNvbnN0IF9fdjJkdSBzaG1heCA9IHsgNjQsIDY0IH07CiAgX192MmR1IHJlc3VsdDsKCiAgcnNoaWZ0ID0gdmVjX3NwbGF0ICgoX192MmR1KSBfX0IsIDApOwogIHNobWFzayA9IHZlY19jbXBsdCAocnNoaWZ0LCBzaG1heCk7CiAgcmVzdWx0ID0gdmVjX3NyICgoX192MmR1KSBfX0EsIHJzaGlmdCk7CiAgcmVzdWx0ID0gKF9fdjJkdSl2ZWNfc2VsICgoX192MmRmKSBzaG1hc2ssIChfX3YyZGYpcmVzdWx0LCBzaG1hc2spOwoKICByZXR1cm4gKF9fbTEyOGkpIHJlc3VsdDsKfQojZW5kaWYKCmV4dGVybiBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fYW5kX3BkIChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpCnsKICByZXR1cm4gKHZlY19hbmQgKChfX3YyZGYpIF9fQSwgKF9fdjJkZikgX19CKSk7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fYW5kbm90X3BkIChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpCnsKICByZXR1cm4gKHZlY19hbmRjICgoX192MmRmKSBfX0IsIChfX3YyZGYpIF9fQSkpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX29yX3BkIChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpCnsKICByZXR1cm4gKHZlY19vciAoKF9fdjJkZikgX19BLCAoX192MmRmKSBfX0IpKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV94b3JfcGQgKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikKewogIHJldHVybiAodmVjX3hvciAoKF9fdjJkZikgX19BLCAoX192MmRmKSBfX0IpKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9hbmRfc2kxMjggKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSl2ZWNfYW5kICgoX192MmRpKSBfX0EsIChfX3YyZGkpIF9fQik7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fYW5kbm90X3NpMTI4IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpdmVjX2FuZGMgKChfX3YyZGkpIF9fQiwgKF9fdjJkaSkgX19BKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9vcl9zaTEyOCAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKXZlY19vciAoKF9fdjJkaSkgX19BLCAoX192MmRpKSBfX0IpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX3hvcl9zaTEyOCAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKXZlY194b3IgKChfX3YyZGkpIF9fQSwgKF9fdjJkaSkgX19CKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9jbXBlcV9lcGk4IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpIHZlY19jbXBlcSAoKF9fdjE2cWkpIF9fQSwgKF9fdjE2cWkpX19CKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9jbXBlcV9lcGkxNiAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKSB2ZWNfY21wZXEgKChfX3Y4aGkpIF9fQSwgKF9fdjhoaSlfX0IpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2NtcGVxX2VwaTMyIChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpIHZlY19jbXBlcSAoKF9fdjRzaSkgX19BLCAoX192NHNpKV9fQik7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fY21wbHRfZXBpOCAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKSB2ZWNfY21wbHQgKChfX3YxNnFpKSBfX0EsIChfX3YxNnFpKV9fQik7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fY21wbHRfZXBpMTYgKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSkgdmVjX2NtcGx0ICgoX192OGhpKSBfX0EsIChfX3Y4aGkpX19CKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9jbXBsdF9lcGkzMiAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKSB2ZWNfY21wbHQgKChfX3Y0c2kpIF9fQSwgKF9fdjRzaSlfX0IpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2NtcGd0X2VwaTggKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSkgdmVjX2NtcGd0ICgoX192MTZxaSkgX19BLCAoX192MTZxaSlfX0IpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2NtcGd0X2VwaTE2IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpIHZlY19jbXBndCAoKF9fdjhoaSkgX19BLCAoX192OGhpKV9fQik7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fY21wZ3RfZXBpMzIgKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSkgdmVjX2NtcGd0ICgoX192NHNpKSBfX0EsIChfX3Y0c2kpX19CKTsKfQoKZXh0ZXJuIF9faW5saW5lIGludCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2V4dHJhY3RfZXBpMTYgKF9fbTEyOGkgY29uc3QgX19BLCBpbnQgY29uc3QgX19OKQp7CiAgcmV0dXJuICh1bnNpZ25lZCBzaG9ydCkgKChfX3Y4aGkpX19BKVtfX04gJiA3XTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9pbnNlcnRfZXBpMTYgKF9fbTEyOGkgY29uc3QgX19BLCBpbnQgY29uc3QgX19ELCBpbnQgY29uc3QgX19OKQp7CiAgX192OGhpIHJlc3VsdCA9IChfX3Y4aGkpX19BOwoKICByZXN1bHQgWyhfX04gJiA3KV0gPSBfX0Q7CgogIHJldHVybiAoX19tMTI4aSkgcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX21heF9lcGkxNiAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKSB2ZWNfbWF4ICgoX192OGhpKV9fQSwgKF9fdjhoaSlfX0IpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX21heF9lcHU4IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpIHZlY19tYXggKChfX3YxNnF1KSBfX0EsIChfX3YxNnF1KV9fQik7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fbWluX2VwaTE2IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpIHZlY19taW4gKChfX3Y4aGkpIF9fQSwgKF9fdjhoaSlfX0IpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX21pbl9lcHU4IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpIHZlY19taW4gKChfX3YxNnF1KSBfX0EsIChfX3YxNnF1KV9fQik7Cn0KCgojaWZkZWYgX0FSQ0hfUFdSOAovKiBJbnRyaW5zaWMgZnVuY3Rpb25zIHRoYXQgcmVxdWlyZSBQb3dlcklTQSAyLjA3IG1pbmltdW0uICAqLwoKLyogQ3JlYXRlcyBhIDQtYml0IG1hc2sgZnJvbSB0aGUgbW9zdCBzaWduaWZpY2FudCBiaXRzIG9mIHRoZSBTUEZQIHZhbHVlcy4gICovCmV4dGVybiBfX2lubGluZSBpbnQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9tb3ZlbWFza19lcGk4IChfX20xMjhpIF9fQSkKewogIF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZyByZXN1bHQ7CiAgc3RhdGljIGNvbnN0IF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgcGVybV9tYXNrID0KICAgIHsKCTB4NzgsIDB4NzAsIDB4NjgsIDB4NjAsIDB4NTgsIDB4NTAsIDB4NDgsIDB4NDAsCgkweDM4LCAweDMwLCAweDI4LCAweDIwLCAweDE4LCAweDEwLCAweDA4LCAweDAwCiAgICB9OwoKICByZXN1bHQgPSAoKF9fdmVjdG9yIHVuc2lnbmVkIGxvbmcgbG9uZykKCSAgICB2ZWNfdmJwZXJtcSAoKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpIF9fQSwKCQkJIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKSBwZXJtX21hc2spKTsKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJldHVybiByZXN1bHRbMV07CiNlbHNlCiAgcmV0dXJuIHJlc3VsdFswXTsKI2VuZGlmCn0KI2VuZGlmIC8qIF9BUkNIX1BXUjggKi8KCmV4dGVybiBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fbXVsaGlfZXB1MTYgKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIF9fdjRzdSB3MCwgdzE7CiAgX192MTZxdSB4Zm9ybTEgPSB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogICAgICAweDAyLCAweDAzLCAweDEyLCAweDEzLCAgMHgwNiwgMHgwNywgMHgxNiwgMHgxNywKICAgICAgMHgwQSwgMHgwQiwgMHgxQSwgMHgxQiwgIDB4MEUsIDB4MEYsIDB4MUUsIDB4MUYKI2Vsc2UKICAgICAgMHgwMCwgMHgwMSwgMHgxMCwgMHgxMSwgIDB4MDQsIDB4MDUsIDB4MTQsIDB4MTUsCiAgICAgIDB4MDgsIDB4MDksIDB4MTgsIDB4MTksICAweDBDLCAweDBELCAweDFDLCAweDFECiNlbmRpZgogICAgfTsKCiAgdzAgPSB2ZWNfdm11bGV1aCAoKF9fdjhodSlfX0EsIChfX3Y4aHUpX19CKTsKICB3MSA9IHZlY192bXVsb3VoICgoX192OGh1KV9fQSwgKF9fdjhodSlfX0IpOwogIHJldHVybiAoX19tMTI4aSkgdmVjX3Blcm0gKHcwLCB3MSwgeGZvcm0xKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9zaHVmZmxlaGlfZXBpMTYgKF9fbTEyOGkgX19BLCBjb25zdCBpbnQgX19tYXNrKQp7CiAgdW5zaWduZWQgbG9uZyBlbGVtZW50X3NlbGVjdG9yXzk4ID0gX19tYXNrICYgMHgwMzsKICB1bnNpZ25lZCBsb25nIGVsZW1lbnRfc2VsZWN0b3JfQkEgPSAoX19tYXNrID4+IDIpICYgMHgwMzsKICB1bnNpZ25lZCBsb25nIGVsZW1lbnRfc2VsZWN0b3JfREMgPSAoX19tYXNrID4+IDQpICYgMHgwMzsKICB1bnNpZ25lZCBsb25nIGVsZW1lbnRfc2VsZWN0b3JfRkUgPSAoX19tYXNrID4+IDYpICYgMHgwMzsKICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgcGVybXV0ZV9zZWxlY3RvcnNbNF0gPQogICAgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KCSAgICAgIDB4MDkwOCwgMHgwQjBBLCAweDBEMEMsIDB4MEYwRQojZWxzZQoJICAgICAgMHgwODA5LCAweDBBMEIsIDB4MEMwRCwgMHgwRTBGCiNlbmRpZgogICAgfTsKICBfX3YyZHUgcG1hc2sgPQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KICAgICAgeyAweDE3MTYxNTE0MTMxMjExMTBVTCwgIDBVTH07CiNlbHNlCiAgICAgIHsgMHgxMDExMTIxMzE0MTUxNjE3VUwsICAwVUx9OwojZW5kaWYKICBfX202NF91bmlvbiB0OwogIF9fdjJkdSBhLCByOwoKICB0LmFzX3Nob3J0WzBdID0gcGVybXV0ZV9zZWxlY3RvcnNbZWxlbWVudF9zZWxlY3Rvcl85OF07CiAgdC5hc19zaG9ydFsxXSA9IHBlcm11dGVfc2VsZWN0b3JzW2VsZW1lbnRfc2VsZWN0b3JfQkFdOwogIHQuYXNfc2hvcnRbMl0gPSBwZXJtdXRlX3NlbGVjdG9yc1tlbGVtZW50X3NlbGVjdG9yX0RDXTsKICB0LmFzX3Nob3J0WzNdID0gcGVybXV0ZV9zZWxlY3RvcnNbZWxlbWVudF9zZWxlY3Rvcl9GRV07CiAgcG1hc2tbMV0gPSB0LmFzX202NDsKICBhID0gKF9fdjJkdSlfX0E7CiAgciA9IHZlY19wZXJtIChhLCBhLCAoX192ZWN0b3IgdW5zaWduZWQgY2hhcilwbWFzayk7CiAgcmV0dXJuIChfX20xMjhpKSByOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX3NodWZmbGVsb19lcGkxNiAoX19tMTI4aSBfX0EsIGNvbnN0IGludCBfX21hc2spCnsKICB1bnNpZ25lZCBsb25nIGVsZW1lbnRfc2VsZWN0b3JfMTAgPSBfX21hc2sgJiAweDAzOwogIHVuc2lnbmVkIGxvbmcgZWxlbWVudF9zZWxlY3Rvcl8zMiA9IChfX21hc2sgPj4gMikgJiAweDAzOwogIHVuc2lnbmVkIGxvbmcgZWxlbWVudF9zZWxlY3Rvcl81NCA9IChfX21hc2sgPj4gNCkgJiAweDAzOwogIHVuc2lnbmVkIGxvbmcgZWxlbWVudF9zZWxlY3Rvcl83NiA9IChfX21hc2sgPj4gNikgJiAweDAzOwogIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBwZXJtdXRlX3NlbGVjdG9yc1s0XSA9CiAgICB7CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwoJICAgICAgMHgwMTAwLCAweDAzMDIsIDB4MDUwNCwgMHgwNzA2CiNlbHNlCgkgICAgICAweDAwMDEsIDB4MDIwMywgMHgwNDA1LCAweDA2MDcKI2VuZGlmCiAgICB9OwogIF9fdjJkdSBwbWFzayA9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogICAgICAgICAgICAgICAgIHsgMFVMLCAgMHgxZjFlMWQxYzFiMWExOTE4VUx9OwojZWxzZQogICAgICAgICAgICAgICAgIHsgMFVMLCAgMHgxODE5MWExYjFjMWQxZTFmVUx9OwojZW5kaWYKICBfX202NF91bmlvbiB0OwogIF9fdjJkdSBhLCByOwogIHQuYXNfc2hvcnRbMF0gPSBwZXJtdXRlX3NlbGVjdG9yc1tlbGVtZW50X3NlbGVjdG9yXzEwXTsKICB0LmFzX3Nob3J0WzFdID0gcGVybXV0ZV9zZWxlY3RvcnNbZWxlbWVudF9zZWxlY3Rvcl8zMl07CiAgdC5hc19zaG9ydFsyXSA9IHBlcm11dGVfc2VsZWN0b3JzW2VsZW1lbnRfc2VsZWN0b3JfNTRdOwogIHQuYXNfc2hvcnRbM10gPSBwZXJtdXRlX3NlbGVjdG9yc1tlbGVtZW50X3NlbGVjdG9yXzc2XTsKICBwbWFza1swXSA9IHQuYXNfbTY0OwogIGEgPSAoX192MmR1KV9fQTsKICByID0gdmVjX3Blcm0gKGEsIGEsIChfX3ZlY3RvciB1bnNpZ25lZCBjaGFyKXBtYXNrKTsKICByZXR1cm4gKF9fbTEyOGkpIHI7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fc2h1ZmZsZV9lcGkzMiAoX19tMTI4aSBfX0EsIGNvbnN0IGludCBfX21hc2spCnsKICB1bnNpZ25lZCBsb25nIGVsZW1lbnRfc2VsZWN0b3JfMTAgPSBfX21hc2sgJiAweDAzOwogIHVuc2lnbmVkIGxvbmcgZWxlbWVudF9zZWxlY3Rvcl8zMiA9IChfX21hc2sgPj4gMikgJiAweDAzOwogIHVuc2lnbmVkIGxvbmcgZWxlbWVudF9zZWxlY3Rvcl81NCA9IChfX21hc2sgPj4gNCkgJiAweDAzOwogIHVuc2lnbmVkIGxvbmcgZWxlbWVudF9zZWxlY3Rvcl83NiA9IChfX21hc2sgPj4gNikgJiAweDAzOwogIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgcGVybXV0ZV9zZWxlY3RvcnNbNF0gPQogICAgewojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KCTB4MDMwMjAxMDAsIDB4MDcwNjA1MDQsIDB4MEIwQTA5MDgsIDB4MEYwRTBEMEMKI2Vsc2UKICAgICAgMHgwMDAxMDIwMywgMHgwNDA1MDYwNywgMHgwODA5MEEwQiwgMHgwQzBEMEUwRgojZW5kaWYKICAgIH07CiAgX192NHN1IHQ7CgogIHRbMF0gPSBwZXJtdXRlX3NlbGVjdG9yc1tlbGVtZW50X3NlbGVjdG9yXzEwXTsKICB0WzFdID0gcGVybXV0ZV9zZWxlY3RvcnNbZWxlbWVudF9zZWxlY3Rvcl8zMl07CiAgdFsyXSA9IHBlcm11dGVfc2VsZWN0b3JzW2VsZW1lbnRfc2VsZWN0b3JfNTRdICsgMHgxMDEwMTAxMDsKICB0WzNdID0gcGVybXV0ZV9zZWxlY3RvcnNbZWxlbWVudF9zZWxlY3Rvcl83Nl0gKyAweDEwMTAxMDEwOwogIHJldHVybiAoX19tMTI4aSl2ZWNfcGVybSAoKF9fdjRzaSkgX19BLCAoX192NHNpKV9fQSwgKF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIpdCk7Cn0KCmV4dGVybiBfX2lubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fbWFza21vdmV1X3NpMTI4IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IsIGNoYXIgKl9fQykKewogIF9fdjJkdSBoaWJpdCA9IHsgMHg3ZjdmN2Y3ZjdmN2Y3ZjdmVUwsIDB4N2Y3ZjdmN2Y3ZjdmN2Y3ZlVMfTsKICBfX3YxNnF1IG1hc2ssIHRtcDsKICBfX20xMjhpX3UgKnAgPSAoX19tMTI4aV91KilfX0M7CgogIHRtcCA9IChfX3YxNnF1KV9tbV9sb2FkdV9zaTEyOChwKTsKICBtYXNrID0gKF9fdjE2cXUpdmVjX2NtcGd0ICgoX192MTZxdSlfX0IsIChfX3YxNnF1KWhpYml0KTsKICB0bXAgPSB2ZWNfc2VsICh0bXAsIChfX3YxNnF1KV9fQSwgbWFzayk7CiAgX21tX3N0b3JldV9zaTEyOCAocCwgKF9fbTEyOGkpdG1wKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9hdmdfZXB1OCAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKSB2ZWNfYXZnICgoX192MTZxdSlfX0EsIChfX3YxNnF1KV9fQik7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fYXZnX2VwdTE2IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpIHZlY19hdmcgKChfX3Y4aHUpX19BLCAoX192OGh1KV9fQik7Cn0KCgpleHRlcm4gX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX3NhZF9lcHU4IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICBfX3YxNnF1IGEsIGI7CiAgX192MTZxdSB2bWluLCB2bWF4LCB2YWJzZGlmZjsKICBfX3Y0c2kgdnN1bTsKICBjb25zdCBfX3Y0c3UgemVybyA9IHsgMCwgMCwgMCwgMCB9OwogIF9fdjRzaSByZXN1bHQ7CgogIGEgPSAoX192MTZxdSkgX19BOwogIGIgPSAoX192MTZxdSkgX19COwogIHZtaW4gPSB2ZWNfbWluIChhLCBiKTsKICB2bWF4ID0gdmVjX21heCAoYSwgYik7CiAgdmFic2RpZmYgPSB2ZWNfc3ViICh2bWF4LCB2bWluKTsKICAvKiBTdW0gZm91ciBncm91cHMgb2YgYnl0ZXMgaW50byBpbnRlZ2Vycy4gICovCiAgdnN1bSA9IChfX3ZlY3RvciBzaWduZWQgaW50KSB2ZWNfc3VtNHMgKHZhYnNkaWZmLCB6ZXJvKTsKICAvKiBTdW0gYWNyb3NzIGZvdXIgaW50ZWdlcnMgd2l0aCB0d28gaW50ZWdlciByZXN1bHRzLiAgKi8KICByZXN1bHQgPSB2ZWNfc3VtMnMgKHZzdW0sIChfX3ZlY3RvciBzaWduZWQgaW50KSB6ZXJvKTsKICAvKiBSb3RhdGUgdGhlIHN1bXMgaW50byB0aGUgY29ycmVjdCBwb3NpdGlvbi4gICovCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwogIHJlc3VsdCA9IHZlY19zbGQgKHJlc3VsdCwgcmVzdWx0LCA0KTsKI2Vsc2UKICByZXN1bHQgPSB2ZWNfc2xkIChyZXN1bHQsIHJlc3VsdCwgNik7CiNlbmRpZgogIC8qIFJvdGF0ZSB0aGUgc3VtcyBpbnRvIHRoZSBjb3JyZWN0IHBvc2l0aW9uLiAgKi8KICByZXR1cm4gKF9fbTEyOGkpIHJlc3VsdDsKfQoKZXh0ZXJuIF9faW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9zdHJlYW1fc2kzMiAoaW50ICpfX0EsIGludCBfX0IpCnsKICAvKiBVc2UgdGhlIGRhdGEgY2FjaGUgYmxvY2sgdG91Y2ggZm9yIHN0b3JlIHRyYW5zaWVudC4gICovCiAgX19hc21fXyAoCiAgICAiZGNidHN0dCAwLCUwIgogICAgOgogICAgOiAiYiIgKF9fQSkKICAgIDogIm1lbW9yeSIKICApOwogICpfX0EgPSBfX0I7Cn0KCmV4dGVybiBfX2lubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fc3RyZWFtX3NpNjQgKGxvbmcgbG9uZyBpbnQgKl9fQSwgbG9uZyBsb25nIGludCBfX0IpCnsKICAvKiBVc2UgdGhlIGRhdGEgY2FjaGUgYmxvY2sgdG91Y2ggZm9yIHN0b3JlIHRyYW5zaWVudC4gICovCiAgX19hc21fXyAoCiAgICAiCWRjYnRzdHQJMCwlMCIKICAgIDoKICAgIDogImIiIChfX0EpCiAgICA6ICJtZW1vcnkiCiAgKTsKICAqX19BID0gX19COwp9CgpleHRlcm4gX19pbmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX3N0cmVhbV9zaTEyOCAoX19tMTI4aSAqX19BLCBfX20xMjhpIF9fQikKewogIC8qIFVzZSB0aGUgZGF0YSBjYWNoZSBibG9jayB0b3VjaCBmb3Igc3RvcmUgdHJhbnNpZW50LiAgKi8KICBfX2FzbV9fICgKICAgICJkY2J0c3R0IDAsJTAiCiAgICA6CiAgICA6ICJiIiAoX19BKQogICAgOiAibWVtb3J5IgogICk7CiAgKl9fQSA9IF9fQjsKfQoKZXh0ZXJuIF9faW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9zdHJlYW1fcGQgKGRvdWJsZSAqX19BLCBfX20xMjhkIF9fQikKewogIC8qIFVzZSB0aGUgZGF0YSBjYWNoZSBibG9jayB0b3VjaCBmb3Igc3RvcmUgdHJhbnNpZW50LiAgKi8KICBfX2FzbV9fICgKICAgICJkY2J0c3R0IDAsJTAiCiAgICA6CiAgICA6ICJiIiAoX19BKQogICAgOiAibWVtb3J5IgogICk7CiAgKihfX20xMjhkKilfX0EgPSBfX0I7Cn0KCmV4dGVybiBfX2lubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fY2xmbHVzaCAodm9pZCBjb25zdCAqX19BKQp7CiAgLyogVXNlIHRoZSBkYXRhIGNhY2hlIGJsb2NrIGZsdXNoLiAgKi8KICBfX2FzbV9fICgKICAgICJkY2JmIDAsJTAiCiAgICA6CiAgICA6ICJiIiAoX19BKQogICAgOiAibWVtb3J5IgogICk7Cn0KCmV4dGVybiBfX2lubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fbGZlbmNlICh2b2lkKQp7CiAgLyogVXNlIGxpZ2h0IHdlaWdodCBzeW5jIGZvciBsb2FkIHRvIGxvYWQgb3JkZXJpbmcuICAqLwogIF9fYXRvbWljX3RocmVhZF9mZW5jZSAoX19BVE9NSUNfUkVMRUFTRSk7Cn0KCmV4dGVybiBfX2lubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fbWZlbmNlICh2b2lkKQp7CiAgLyogVXNlIGhlYXZ5IHdlaWdodCBzeW5jIGZvciBhbnkgdG8gYW55IG9yZGVyaW5nLiAgKi8KICBfX2F0b21pY190aHJlYWRfZmVuY2UgKF9fQVRPTUlDX1NFUV9DU1QpOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2N2dHNpMzJfc2kxMjggKGludCBfX0EpCnsKICByZXR1cm4gX21tX3NldF9lcGkzMiAoMCwgMCwgMCwgX19BKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9jdnRzaTY0X3NpMTI4IChsb25nIGxvbmcgX19BKQp7CiAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOGkpKF9fdjJkaSl7IF9fQSwgMExMIH07Cn0KCi8qIE1pY3Jvc29mdCBpbnRyaW5zaWMuICAqLwpleHRlcm4gX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2N2dHNpNjR4X3NpMTI4IChsb25nIGxvbmcgX19BKQp7CiAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOGkpKF9fdjJkaSl7IF9fQSwgMExMIH07Cn0KCi8qIENhc3RzIGJldHdlZW4gdmFyaW91cyBTUCwgRFAsIElOVCB2ZWN0b3IgdHlwZXMuICBOb3RlIHRoYXQgdGhlc2UgZG8gbm8KICAgY29udmVyc2lvbiBvZiB2YWx1ZXMsIHRoZXkganVzdCBjaGFuZ2UgdGhlIHR5cGUuICAqLwpleHRlcm4gX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpfbW1fY2FzdHBkX3BzKF9fbTEyOGQgX19BKQp7CiAgcmV0dXJuIChfX20xMjgpIF9fQTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9jYXN0cGRfc2kxMjgoX19tMTI4ZCBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fQTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9jYXN0cHNfcGQoX19tMTI4IF9fQSkKewogIHJldHVybiAoX19tMTI4ZCkgX19BOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2Nhc3Rwc19zaTEyOChfX20xMjggX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX0E7Cn0KCmV4dGVybiBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCl9tbV9jYXN0c2kxMjhfcHMoX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOCkgX19BOwp9CgpleHRlcm4gX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKX21tX2Nhc3RzaTEyOF9wZChfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMTI4ZCkgX19BOwp9CgojZWxzZQojaW5jbHVkZV9uZXh0IDxlbW1pbnRyaW4uaD4KI2VuZGlmIC8qIGRlZmluZWQoX19wcGM2NF9fKSAmJiAoZGVmaW5lZChfX2xpbnV4X18pIHx8IGRlZmluZWQoX19GcmVlQlNEX18pKSAgIFwKICAgICAgICAqLwoKI2VuZGlmIC8qIEVNTUlOVFJJTl9IXyAqLwoAQ291bGRuJ3QgcmVhZCAAIChmY2xvc2UoaGFuZGxlKT0ARmFpbHVyZSBzZXJpYWxpemluZyBjb21waWxhdGlvbiB1bml0AHJvb3QvAC4uAHN0YXJ0cG9zOiAATnVtQ2FwdHVyZXNXYWxrZXI6OlNob3J0VmlzaXQgY2FsbGVkACg/OgAoPzopAEhlYnJldwBMAExvAFN5bG90aV9OYWdyaQB/RUxGAGFyZW5hICE9IG51bGxwdHIgJiYgYXJlbmEgIT0gRGVmYXVsdEFyZW5hKCkgJiYgYXJlbmEgIT0gVW5ob29rZWRBcmVuYSgpAHJlZ2lvbi0+aGVhZGVyLm1hZ2ljID09IE1hZ2ljKGtNYWdpY1VuYWxsb2NhdGVkLCAmcmVnaW9uLT5oZWFkZXIpAG5vdGhpbmcgaW4gYXJlbmEgdG8gZnJlZQB2b2lkAGZsb2F0AGRlY2ltYWwxMjgAb3BlcmF0b3IgAGJhc2ljX3N0cmluZwBDaGVjayBub2RlLT5sZW5ndGggIT0gMHUgZmFpbGVkOiAAdHJlZS0+YmVnaW4oKSA8PSB0cmVlLT5lbmQoKQBlZGdlLT5Jc0J0cmVlKCkAIGZyb20gYmVnaW5fcG9zIABuZgAvZXRjL2xvY2FsdGltZQBleHRlcm5hbC9ib3Jpbmdzc2wvc3JjL2NyeXB0by9maXBzbW9kdWxlL2RpZ2VzdC9kaWdlc3QuYwBleHRlcm5hbC9ib3Jpbmdzc2wvc3JjL2NyeXB0by9maXBzbW9kdWxlL2VjL2VjLmMAbm90IGF2YWlsYWJsZQAlbHUAa3l0aGUucHJvdG8uQW5hbHlzaXNSZXN1bHQuc3VtbWFyeQBreXRoZS5wcm90by5jb21tb24uTm9kZUluZm8uRmFjdHNFbnRyeS5rZXkAa3l0aGUucHJvdG8uY29tbW9uLk9yaWdpbi5jb3JwdXMAb3V0L3Nvb25nLy5pbnRlcm1lZGlhdGVzL2V4dGVybmFsL2t5dGhlL2N4eF9leHRyYWN0b3IvbGludXhfZ2xpYmNfeDg2XzY0L2dlbi9wcm90by9reXRoZS9wcm90by9tZXRhZGF0YS5wYi5jYwBreXRoZS5wcm90by5WTmFtZS5zaWduYXR1cmUAa3l0aGUucHJvdG8uVk5hbWUucGF0aABreXRoZS5wcm90by5SZWFkUmVxdWVzdC5lZGdlX2tpbmQALXN0YXRpYwA8c3RkaW4+AENoZWNrIGZhaWxlZDogYWJzbDo6RW5kc1dpdGgob3V0cHV0X2ZpbGVfLCAiLmt6aXAiKQBDWFhTeXN0ZW0AKQBfX2NsYW5nX2hpcF9ydW50aW1lX3dyYXBwZXIuaABhcm1fbmVvbi5oAC8qPT09LS0tLSBhcm1fbmVvbi5oIC0gQVJNIE5lb24gaW50cmluc2ljcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICoKICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQogKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAogKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CiAqCiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCiAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgogKgogKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgogKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgogKiBUSEUgU09GVFdBUkUuCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCgojaWZuZGVmIF9fQVJNX05FT05fSAojZGVmaW5lIF9fQVJNX05FT05fSAoKI2lmbmRlZiBfX0FSTV9GUAojZXJyb3IgIk5FT04gaW50cmluc2ljcyBub3QgYXZhaWxhYmxlIHdpdGggdGhlIHNvZnQtZmxvYXQgQUJJLiBQbGVhc2UgdXNlIC1tZmxvYXQtYWJpPXNvZnRmcCBvciAtbWZsb2F0LWFiaT1oYXJkIgojZWxzZQoKI2lmICFkZWZpbmVkKF9fQVJNX05FT04pCiNlcnJvciAiTkVPTiBzdXBwb3J0IG5vdCBlbmFibGVkIgojZWxzZQoKI2luY2x1ZGUgPHN0ZGludC5oPgoKI2lmZGVmIF9fQVJNX0ZFQVRVUkVfQkYxNgojaW5jbHVkZSA8YXJtX2JmMTYuaD4KdHlwZWRlZiBfX2JmMTYgYmZsb2F0MTZfdDsKI2VuZGlmCgp0eXBlZGVmIGZsb2F0IGZsb2F0MzJfdDsKdHlwZWRlZiBfX2ZwMTYgZmxvYXQxNl90OwojaWZkZWYgX19hYXJjaDY0X18KdHlwZWRlZiBkb3VibGUgZmxvYXQ2NF90OwojZW5kaWYKCiNpZmRlZiBfX2FhcmNoNjRfXwp0eXBlZGVmIHVpbnQ4X3QgcG9seThfdDsKdHlwZWRlZiB1aW50MTZfdCBwb2x5MTZfdDsKdHlwZWRlZiB1aW50NjRfdCBwb2x5NjRfdDsKdHlwZWRlZiBfX3VpbnQxMjhfdCBwb2x5MTI4X3Q7CiNlbHNlCnR5cGVkZWYgaW50OF90IHBvbHk4X3Q7CnR5cGVkZWYgaW50MTZfdCBwb2x5MTZfdDsKdHlwZWRlZiBpbnQ2NF90IHBvbHk2NF90OwojZW5kaWYKdHlwZWRlZiBfX2F0dHJpYnV0ZV9fKChuZW9uX3ZlY3Rvcl90eXBlKDgpKSkgaW50OF90IGludDh4OF90Owp0eXBlZGVmIF9fYXR0cmlidXRlX18oKG5lb25fdmVjdG9yX3R5cGUoMTYpKSkgaW50OF90IGludDh4MTZfdDsKdHlwZWRlZiBfX2F0dHJpYnV0ZV9fKChuZW9uX3ZlY3Rvcl90eXBlKDQpKSkgaW50MTZfdCBpbnQxNng0X3Q7CnR5cGVkZWYgX19hdHRyaWJ1dGVfXygobmVvbl92ZWN0b3JfdHlwZSg4KSkpIGludDE2X3QgaW50MTZ4OF90Owp0eXBlZGVmIF9fYXR0cmlidXRlX18oKG5lb25fdmVjdG9yX3R5cGUoMikpKSBpbnQzMl90IGludDMyeDJfdDsKdHlwZWRlZiBfX2F0dHJpYnV0ZV9fKChuZW9uX3ZlY3Rvcl90eXBlKDQpKSkgaW50MzJfdCBpbnQzMng0X3Q7CnR5cGVkZWYgX19hdHRyaWJ1dGVfXygobmVvbl92ZWN0b3JfdHlwZSgxKSkpIGludDY0X3QgaW50NjR4MV90Owp0eXBlZGVmIF9fYXR0cmlidXRlX18oKG5lb25fdmVjdG9yX3R5cGUoMikpKSBpbnQ2NF90IGludDY0eDJfdDsKdHlwZWRlZiBfX2F0dHJpYnV0ZV9fKChuZW9uX3ZlY3Rvcl90eXBlKDgpKSkgdWludDhfdCB1aW50OHg4X3Q7CnR5cGVkZWYgX19hdHRyaWJ1dGVfXygobmVvbl92ZWN0b3JfdHlwZSgxNikpKSB1aW50OF90IHVpbnQ4eDE2X3Q7CnR5cGVkZWYgX19hdHRyaWJ1dGVfXygobmVvbl92ZWN0b3JfdHlwZSg0KSkpIHVpbnQxNl90IHVpbnQxNng0X3Q7CnR5cGVkZWYgX19hdHRyaWJ1dGVfXygobmVvbl92ZWN0b3JfdHlwZSg4KSkpIHVpbnQxNl90IHVpbnQxNng4X3Q7CnR5cGVkZWYgX19hdHRyaWJ1dGVfXygobmVvbl92ZWN0b3JfdHlwZSgyKSkpIHVpbnQzMl90IHVpbnQzMngyX3Q7CnR5cGVkZWYgX19hdHRyaWJ1dGVfXygobmVvbl92ZWN0b3JfdHlwZSg0KSkpIHVpbnQzMl90IHVpbnQzMng0X3Q7CnR5cGVkZWYgX19hdHRyaWJ1dGVfXygobmVvbl92ZWN0b3JfdHlwZSgxKSkpIHVpbnQ2NF90IHVpbnQ2NHgxX3Q7CnR5cGVkZWYgX19hdHRyaWJ1dGVfXygobmVvbl92ZWN0b3JfdHlwZSgyKSkpIHVpbnQ2NF90IHVpbnQ2NHgyX3Q7CnR5cGVkZWYgX19hdHRyaWJ1dGVfXygobmVvbl92ZWN0b3JfdHlwZSg0KSkpIGZsb2F0MTZfdCBmbG9hdDE2eDRfdDsKdHlwZWRlZiBfX2F0dHJpYnV0ZV9fKChuZW9uX3ZlY3Rvcl90eXBlKDgpKSkgZmxvYXQxNl90IGZsb2F0MTZ4OF90Owp0eXBlZGVmIF9fYXR0cmlidXRlX18oKG5lb25fdmVjdG9yX3R5cGUoMikpKSBmbG9hdDMyX3QgZmxvYXQzMngyX3Q7CnR5cGVkZWYgX19hdHRyaWJ1dGVfXygobmVvbl92ZWN0b3JfdHlwZSg0KSkpIGZsb2F0MzJfdCBmbG9hdDMyeDRfdDsKI2lmZGVmIF9fYWFyY2g2NF9fCnR5cGVkZWYgX19hdHRyaWJ1dGVfXygobmVvbl92ZWN0b3JfdHlwZSgxKSkpIGZsb2F0NjRfdCBmbG9hdDY0eDFfdDsKdHlwZWRlZiBfX2F0dHJpYnV0ZV9fKChuZW9uX3ZlY3Rvcl90eXBlKDIpKSkgZmxvYXQ2NF90IGZsb2F0NjR4Ml90OwojZW5kaWYKdHlwZWRlZiBfX2F0dHJpYnV0ZV9fKChuZW9uX3BvbHl2ZWN0b3JfdHlwZSg4KSkpIHBvbHk4X3QgcG9seTh4OF90Owp0eXBlZGVmIF9fYXR0cmlidXRlX18oKG5lb25fcG9seXZlY3Rvcl90eXBlKDE2KSkpIHBvbHk4X3QgcG9seTh4MTZfdDsKdHlwZWRlZiBfX2F0dHJpYnV0ZV9fKChuZW9uX3BvbHl2ZWN0b3JfdHlwZSg0KSkpIHBvbHkxNl90IHBvbHkxNng0X3Q7CnR5cGVkZWYgX19hdHRyaWJ1dGVfXygobmVvbl9wb2x5dmVjdG9yX3R5cGUoOCkpKSBwb2x5MTZfdCBwb2x5MTZ4OF90Owp0eXBlZGVmIF9fYXR0cmlidXRlX18oKG5lb25fcG9seXZlY3Rvcl90eXBlKDEpKSkgcG9seTY0X3QgcG9seTY0eDFfdDsKdHlwZWRlZiBfX2F0dHJpYnV0ZV9fKChuZW9uX3BvbHl2ZWN0b3JfdHlwZSgyKSkpIHBvbHk2NF90IHBvbHk2NHgyX3Q7Cgp0eXBlZGVmIHN0cnVjdCBpbnQ4eDh4Ml90IHsKICBpbnQ4eDhfdCB2YWxbMl07Cn0gaW50OHg4eDJfdDsKCnR5cGVkZWYgc3RydWN0IGludDh4MTZ4Ml90IHsKICBpbnQ4eDE2X3QgdmFsWzJdOwp9IGludDh4MTZ4Ml90OwoKdHlwZWRlZiBzdHJ1Y3QgaW50MTZ4NHgyX3QgewogIGludDE2eDRfdCB2YWxbMl07Cn0gaW50MTZ4NHgyX3Q7Cgp0eXBlZGVmIHN0cnVjdCBpbnQxNng4eDJfdCB7CiAgaW50MTZ4OF90IHZhbFsyXTsKfSBpbnQxNng4eDJfdDsKCnR5cGVkZWYgc3RydWN0IGludDMyeDJ4Ml90IHsKICBpbnQzMngyX3QgdmFsWzJdOwp9IGludDMyeDJ4Ml90OwoKdHlwZWRlZiBzdHJ1Y3QgaW50MzJ4NHgyX3QgewogIGludDMyeDRfdCB2YWxbMl07Cn0gaW50MzJ4NHgyX3Q7Cgp0eXBlZGVmIHN0cnVjdCBpbnQ2NHgxeDJfdCB7CiAgaW50NjR4MV90IHZhbFsyXTsKfSBpbnQ2NHgxeDJfdDsKCnR5cGVkZWYgc3RydWN0IGludDY0eDJ4Ml90IHsKICBpbnQ2NHgyX3QgdmFsWzJdOwp9IGludDY0eDJ4Ml90OwoKdHlwZWRlZiBzdHJ1Y3QgdWludDh4OHgyX3QgewogIHVpbnQ4eDhfdCB2YWxbMl07Cn0gdWludDh4OHgyX3Q7Cgp0eXBlZGVmIHN0cnVjdCB1aW50OHgxNngyX3QgewogIHVpbnQ4eDE2X3QgdmFsWzJdOwp9IHVpbnQ4eDE2eDJfdDsKCnR5cGVkZWYgc3RydWN0IHVpbnQxNng0eDJfdCB7CiAgdWludDE2eDRfdCB2YWxbMl07Cn0gdWludDE2eDR4Ml90OwoKdHlwZWRlZiBzdHJ1Y3QgdWludDE2eDh4Ml90IHsKICB1aW50MTZ4OF90IHZhbFsyXTsKfSB1aW50MTZ4OHgyX3Q7Cgp0eXBlZGVmIHN0cnVjdCB1aW50MzJ4MngyX3QgewogIHVpbnQzMngyX3QgdmFsWzJdOwp9IHVpbnQzMngyeDJfdDsKCnR5cGVkZWYgc3RydWN0IHVpbnQzMng0eDJfdCB7CiAgdWludDMyeDRfdCB2YWxbMl07Cn0gdWludDMyeDR4Ml90OwoKdHlwZWRlZiBzdHJ1Y3QgdWludDY0eDF4Ml90IHsKICB1aW50NjR4MV90IHZhbFsyXTsKfSB1aW50NjR4MXgyX3Q7Cgp0eXBlZGVmIHN0cnVjdCB1aW50NjR4MngyX3QgewogIHVpbnQ2NHgyX3QgdmFsWzJdOwp9IHVpbnQ2NHgyeDJfdDsKCnR5cGVkZWYgc3RydWN0IGZsb2F0MTZ4NHgyX3QgewogIGZsb2F0MTZ4NF90IHZhbFsyXTsKfSBmbG9hdDE2eDR4Ml90OwoKdHlwZWRlZiBzdHJ1Y3QgZmxvYXQxNng4eDJfdCB7CiAgZmxvYXQxNng4X3QgdmFsWzJdOwp9IGZsb2F0MTZ4OHgyX3Q7Cgp0eXBlZGVmIHN0cnVjdCBmbG9hdDMyeDJ4Ml90IHsKICBmbG9hdDMyeDJfdCB2YWxbMl07Cn0gZmxvYXQzMngyeDJfdDsKCnR5cGVkZWYgc3RydWN0IGZsb2F0MzJ4NHgyX3QgewogIGZsb2F0MzJ4NF90IHZhbFsyXTsKfSBmbG9hdDMyeDR4Ml90OwoKI2lmZGVmIF9fYWFyY2g2NF9fCnR5cGVkZWYgc3RydWN0IGZsb2F0NjR4MXgyX3QgewogIGZsb2F0NjR4MV90IHZhbFsyXTsKfSBmbG9hdDY0eDF4Ml90OwoKdHlwZWRlZiBzdHJ1Y3QgZmxvYXQ2NHgyeDJfdCB7CiAgZmxvYXQ2NHgyX3QgdmFsWzJdOwp9IGZsb2F0NjR4MngyX3Q7CgojZW5kaWYKdHlwZWRlZiBzdHJ1Y3QgcG9seTh4OHgyX3QgewogIHBvbHk4eDhfdCB2YWxbMl07Cn0gcG9seTh4OHgyX3Q7Cgp0eXBlZGVmIHN0cnVjdCBwb2x5OHgxNngyX3QgewogIHBvbHk4eDE2X3QgdmFsWzJdOwp9IHBvbHk4eDE2eDJfdDsKCnR5cGVkZWYgc3RydWN0IHBvbHkxNng0eDJfdCB7CiAgcG9seTE2eDRfdCB2YWxbMl07Cn0gcG9seTE2eDR4Ml90OwoKdHlwZWRlZiBzdHJ1Y3QgcG9seTE2eDh4Ml90IHsKICBwb2x5MTZ4OF90IHZhbFsyXTsKfSBwb2x5MTZ4OHgyX3Q7Cgp0eXBlZGVmIHN0cnVjdCBwb2x5NjR4MXgyX3QgewogIHBvbHk2NHgxX3QgdmFsWzJdOwp9IHBvbHk2NHgxeDJfdDsKCnR5cGVkZWYgc3RydWN0IHBvbHk2NHgyeDJfdCB7CiAgcG9seTY0eDJfdCB2YWxbMl07Cn0gcG9seTY0eDJ4Ml90OwoKdHlwZWRlZiBzdHJ1Y3QgaW50OHg4eDNfdCB7CiAgaW50OHg4X3QgdmFsWzNdOwp9IGludDh4OHgzX3Q7Cgp0eXBlZGVmIHN0cnVjdCBpbnQ4eDE2eDNfdCB7CiAgaW50OHgxNl90IHZhbFszXTsKfSBpbnQ4eDE2eDNfdDsKCnR5cGVkZWYgc3RydWN0IGludDE2eDR4M190IHsKICBpbnQxNng0X3QgdmFsWzNdOwp9IGludDE2eDR4M190OwoKdHlwZWRlZiBzdHJ1Y3QgaW50MTZ4OHgzX3QgewogIGludDE2eDhfdCB2YWxbM107Cn0gaW50MTZ4OHgzX3Q7Cgp0eXBlZGVmIHN0cnVjdCBpbnQzMngyeDNfdCB7CiAgaW50MzJ4Ml90IHZhbFszXTsKfSBpbnQzMngyeDNfdDsKCnR5cGVkZWYgc3RydWN0IGludDMyeDR4M190IHsKICBpbnQzMng0X3QgdmFsWzNdOwp9IGludDMyeDR4M190OwoKdHlwZWRlZiBzdHJ1Y3QgaW50NjR4MXgzX3QgewogIGludDY0eDFfdCB2YWxbM107Cn0gaW50NjR4MXgzX3Q7Cgp0eXBlZGVmIHN0cnVjdCBpbnQ2NHgyeDNfdCB7CiAgaW50NjR4Ml90IHZhbFszXTsKfSBpbnQ2NHgyeDNfdDsKCnR5cGVkZWYgc3RydWN0IHVpbnQ4eDh4M190IHsKICB1aW50OHg4X3QgdmFsWzNdOwp9IHVpbnQ4eDh4M190OwoKdHlwZWRlZiBzdHJ1Y3QgdWludDh4MTZ4M190IHsKICB1aW50OHgxNl90IHZhbFszXTsKfSB1aW50OHgxNngzX3Q7Cgp0eXBlZGVmIHN0cnVjdCB1aW50MTZ4NHgzX3QgewogIHVpbnQxNng0X3QgdmFsWzNdOwp9IHVpbnQxNng0eDNfdDsKCnR5cGVkZWYgc3RydWN0IHVpbnQxNng4eDNfdCB7CiAgdWludDE2eDhfdCB2YWxbM107Cn0gdWludDE2eDh4M190OwoKdHlwZWRlZiBzdHJ1Y3QgdWludDMyeDJ4M190IHsKICB1aW50MzJ4Ml90IHZhbFszXTsKfSB1aW50MzJ4MngzX3Q7Cgp0eXBlZGVmIHN0cnVjdCB1aW50MzJ4NHgzX3QgewogIHVpbnQzMng0X3QgdmFsWzNdOwp9IHVpbnQzMng0eDNfdDsKCnR5cGVkZWYgc3RydWN0IHVpbnQ2NHgxeDNfdCB7CiAgdWludDY0eDFfdCB2YWxbM107Cn0gdWludDY0eDF4M190OwoKdHlwZWRlZiBzdHJ1Y3QgdWludDY0eDJ4M190IHsKICB1aW50NjR4Ml90IHZhbFszXTsKfSB1aW50NjR4MngzX3Q7Cgp0eXBlZGVmIHN0cnVjdCBmbG9hdDE2eDR4M190IHsKICBmbG9hdDE2eDRfdCB2YWxbM107Cn0gZmxvYXQxNng0eDNfdDsKCnR5cGVkZWYgc3RydWN0IGZsb2F0MTZ4OHgzX3QgewogIGZsb2F0MTZ4OF90IHZhbFszXTsKfSBmbG9hdDE2eDh4M190OwoKdHlwZWRlZiBzdHJ1Y3QgZmxvYXQzMngyeDNfdCB7CiAgZmxvYXQzMngyX3QgdmFsWzNdOwp9IGZsb2F0MzJ4MngzX3Q7Cgp0eXBlZGVmIHN0cnVjdCBmbG9hdDMyeDR4M190IHsKICBmbG9hdDMyeDRfdCB2YWxbM107Cn0gZmxvYXQzMng0eDNfdDsKCiNpZmRlZiBfX2FhcmNoNjRfXwp0eXBlZGVmIHN0cnVjdCBmbG9hdDY0eDF4M190IHsKICBmbG9hdDY0eDFfdCB2YWxbM107Cn0gZmxvYXQ2NHgxeDNfdDsKCnR5cGVkZWYgc3RydWN0IGZsb2F0NjR4MngzX3QgewogIGZsb2F0NjR4Ml90IHZhbFszXTsKfSBmbG9hdDY0eDJ4M190OwoKI2VuZGlmCnR5cGVkZWYgc3RydWN0IHBvbHk4eDh4M190IHsKICBwb2x5OHg4X3QgdmFsWzNdOwp9IHBvbHk4eDh4M190OwoKdHlwZWRlZiBzdHJ1Y3QgcG9seTh4MTZ4M190IHsKICBwb2x5OHgxNl90IHZhbFszXTsKfSBwb2x5OHgxNngzX3Q7Cgp0eXBlZGVmIHN0cnVjdCBwb2x5MTZ4NHgzX3QgewogIHBvbHkxNng0X3QgdmFsWzNdOwp9IHBvbHkxNng0eDNfdDsKCnR5cGVkZWYgc3RydWN0IHBvbHkxNng4eDNfdCB7CiAgcG9seTE2eDhfdCB2YWxbM107Cn0gcG9seTE2eDh4M190OwoKdHlwZWRlZiBzdHJ1Y3QgcG9seTY0eDF4M190IHsKICBwb2x5NjR4MV90IHZhbFszXTsKfSBwb2x5NjR4MXgzX3Q7Cgp0eXBlZGVmIHN0cnVjdCBwb2x5NjR4MngzX3QgewogIHBvbHk2NHgyX3QgdmFsWzNdOwp9IHBvbHk2NHgyeDNfdDsKCnR5cGVkZWYgc3RydWN0IGludDh4OHg0X3QgewogIGludDh4OF90IHZhbFs0XTsKfSBpbnQ4eDh4NF90OwoKdHlwZWRlZiBzdHJ1Y3QgaW50OHgxNng0X3QgewogIGludDh4MTZfdCB2YWxbNF07Cn0gaW50OHgxNng0X3Q7Cgp0eXBlZGVmIHN0cnVjdCBpbnQxNng0eDRfdCB7CiAgaW50MTZ4NF90IHZhbFs0XTsKfSBpbnQxNng0eDRfdDsKCnR5cGVkZWYgc3RydWN0IGludDE2eDh4NF90IHsKICBpbnQxNng4X3QgdmFsWzRdOwp9IGludDE2eDh4NF90OwoKdHlwZWRlZiBzdHJ1Y3QgaW50MzJ4Mng0X3QgewogIGludDMyeDJfdCB2YWxbNF07Cn0gaW50MzJ4Mng0X3Q7Cgp0eXBlZGVmIHN0cnVjdCBpbnQzMng0eDRfdCB7CiAgaW50MzJ4NF90IHZhbFs0XTsKfSBpbnQzMng0eDRfdDsKCnR5cGVkZWYgc3RydWN0IGludDY0eDF4NF90IHsKICBpbnQ2NHgxX3QgdmFsWzRdOwp9IGludDY0eDF4NF90OwoKdHlwZWRlZiBzdHJ1Y3QgaW50NjR4Mng0X3QgewogIGludDY0eDJfdCB2YWxbNF07Cn0gaW50NjR4Mng0X3Q7Cgp0eXBlZGVmIHN0cnVjdCB1aW50OHg4eDRfdCB7CiAgdWludDh4OF90IHZhbFs0XTsKfSB1aW50OHg4eDRfdDsKCnR5cGVkZWYgc3RydWN0IHVpbnQ4eDE2eDRfdCB7CiAgdWludDh4MTZfdCB2YWxbNF07Cn0gdWludDh4MTZ4NF90OwoKdHlwZWRlZiBzdHJ1Y3QgdWludDE2eDR4NF90IHsKICB1aW50MTZ4NF90IHZhbFs0XTsKfSB1aW50MTZ4NHg0X3Q7Cgp0eXBlZGVmIHN0cnVjdCB1aW50MTZ4OHg0X3QgewogIHVpbnQxNng4X3QgdmFsWzRdOwp9IHVpbnQxNng4eDRfdDsKCnR5cGVkZWYgc3RydWN0IHVpbnQzMngyeDRfdCB7CiAgdWludDMyeDJfdCB2YWxbNF07Cn0gdWludDMyeDJ4NF90OwoKdHlwZWRlZiBzdHJ1Y3QgdWludDMyeDR4NF90IHsKICB1aW50MzJ4NF90IHZhbFs0XTsKfSB1aW50MzJ4NHg0X3Q7Cgp0eXBlZGVmIHN0cnVjdCB1aW50NjR4MXg0X3QgewogIHVpbnQ2NHgxX3QgdmFsWzRdOwp9IHVpbnQ2NHgxeDRfdDsKCnR5cGVkZWYgc3RydWN0IHVpbnQ2NHgyeDRfdCB7CiAgdWludDY0eDJfdCB2YWxbNF07Cn0gdWludDY0eDJ4NF90OwoKdHlwZWRlZiBzdHJ1Y3QgZmxvYXQxNng0eDRfdCB7CiAgZmxvYXQxNng0X3QgdmFsWzRdOwp9IGZsb2F0MTZ4NHg0X3Q7Cgp0eXBlZGVmIHN0cnVjdCBmbG9hdDE2eDh4NF90IHsKICBmbG9hdDE2eDhfdCB2YWxbNF07Cn0gZmxvYXQxNng4eDRfdDsKCnR5cGVkZWYgc3RydWN0IGZsb2F0MzJ4Mng0X3QgewogIGZsb2F0MzJ4Ml90IHZhbFs0XTsKfSBmbG9hdDMyeDJ4NF90OwoKdHlwZWRlZiBzdHJ1Y3QgZmxvYXQzMng0eDRfdCB7CiAgZmxvYXQzMng0X3QgdmFsWzRdOwp9IGZsb2F0MzJ4NHg0X3Q7CgojaWZkZWYgX19hYXJjaDY0X18KdHlwZWRlZiBzdHJ1Y3QgZmxvYXQ2NHgxeDRfdCB7CiAgZmxvYXQ2NHgxX3QgdmFsWzRdOwp9IGZsb2F0NjR4MXg0X3Q7Cgp0eXBlZGVmIHN0cnVjdCBmbG9hdDY0eDJ4NF90IHsKICBmbG9hdDY0eDJfdCB2YWxbNF07Cn0gZmxvYXQ2NHgyeDRfdDsKCiNlbmRpZgp0eXBlZGVmIHN0cnVjdCBwb2x5OHg4eDRfdCB7CiAgcG9seTh4OF90IHZhbFs0XTsKfSBwb2x5OHg4eDRfdDsKCnR5cGVkZWYgc3RydWN0IHBvbHk4eDE2eDRfdCB7CiAgcG9seTh4MTZfdCB2YWxbNF07Cn0gcG9seTh4MTZ4NF90OwoKdHlwZWRlZiBzdHJ1Y3QgcG9seTE2eDR4NF90IHsKICBwb2x5MTZ4NF90IHZhbFs0XTsKfSBwb2x5MTZ4NHg0X3Q7Cgp0eXBlZGVmIHN0cnVjdCBwb2x5MTZ4OHg0X3QgewogIHBvbHkxNng4X3QgdmFsWzRdOwp9IHBvbHkxNng4eDRfdDsKCnR5cGVkZWYgc3RydWN0IHBvbHk2NHgxeDRfdCB7CiAgcG9seTY0eDFfdCB2YWxbNF07Cn0gcG9seTY0eDF4NF90OwoKdHlwZWRlZiBzdHJ1Y3QgcG9seTY0eDJ4NF90IHsKICBwb2x5NjR4Ml90IHZhbFs0XTsKfSBwb2x5NjR4Mng0X3Q7CgojaWZkZWYgX19BUk1fRkVBVFVSRV9CRjE2CnR5cGVkZWYgX19hdHRyaWJ1dGVfXygobmVvbl92ZWN0b3JfdHlwZSg0KSkpIGJmbG9hdDE2X3QgYmZsb2F0MTZ4NF90Owp0eXBlZGVmIF9fYXR0cmlidXRlX18oKG5lb25fdmVjdG9yX3R5cGUoOCkpKSBiZmxvYXQxNl90IGJmbG9hdDE2eDhfdDsKCnR5cGVkZWYgc3RydWN0IGJmbG9hdDE2eDR4Ml90IHsKICBiZmxvYXQxNng0X3QgdmFsWzJdOwp9IGJmbG9hdDE2eDR4Ml90OwoKdHlwZWRlZiBzdHJ1Y3QgYmZsb2F0MTZ4OHgyX3QgewogIGJmbG9hdDE2eDhfdCB2YWxbMl07Cn0gYmZsb2F0MTZ4OHgyX3Q7Cgp0eXBlZGVmIHN0cnVjdCBiZmxvYXQxNng0eDNfdCB7CiAgYmZsb2F0MTZ4NF90IHZhbFszXTsKfSBiZmxvYXQxNng0eDNfdDsKCnR5cGVkZWYgc3RydWN0IGJmbG9hdDE2eDh4M190IHsKICBiZmxvYXQxNng4X3QgdmFsWzNdOwp9IGJmbG9hdDE2eDh4M190OwoKdHlwZWRlZiBzdHJ1Y3QgYmZsb2F0MTZ4NHg0X3QgewogIGJmbG9hdDE2eDRfdCB2YWxbNF07Cn0gYmZsb2F0MTZ4NHg0X3Q7Cgp0eXBlZGVmIHN0cnVjdCBiZmxvYXQxNng4eDRfdCB7CiAgYmZsb2F0MTZ4OF90IHZhbFs0XTsKfSBiZmxvYXQxNng4eDRfdDsKCiNlbmRpZgoKI2RlZmluZSBfX2FpIHN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSBzcGxhdF9sYW5lX3A4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4eDhfdCBfX3MwID0gX19wMDsgXAogIHBvbHk4eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHBvbHk4eDhfdCkgX19idWlsdGluX25lb25fc3BsYXRfbGFuZV92KChpbnQ4eDhfdClfX3MwLCBfX3AxLCA0KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgc3BsYXRfbGFuZV9wOChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHg4X3QgX19zMCA9IF9fcDA7IFwKICBwb2x5OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBwb2x5OHg4X3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0X2xhbmVfdigoaW50OHg4X3QpX19yZXYwLCBfX3AxLCA0KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgX19ub3N3YXBfc3BsYXRfbGFuZV9wOChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHg4X3QgX19zMCA9IF9fcDA7IFwKICBwb2x5OHg4X3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0X2xhbmVfdigoaW50OHg4X3QpX19zMCwgX19wMSwgNCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNkZWZpbmUgc3BsYXRfbGFuZV9wNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTY0eDFfdCBfX3MwID0gX19wMDsgXAogIHBvbHk2NHgxX3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5NjR4MV90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdF9sYW5lX3YoKGludDh4OF90KV9fczAsIF9fcDEsIDYpOyBcCiAgX19yZXQ7IFwKfSkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgc3BsYXRfbGFuZV9wMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDRfdCBfX3MwID0gX19wMDsgXAogIHBvbHkxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdF9sYW5lX3YoKGludDh4OF90KV9fczAsIF9fcDEsIDUpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSBzcGxhdF9sYW5lX3AxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4NF90IF9fczAgPSBfX3AwOyBcCiAgcG9seTE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAzLCAyLCAxLCAwKTsgXAogIHBvbHkxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdF9sYW5lX3YoKGludDh4OF90KV9fcmV2MCwgX19wMSwgNSk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3NwbGF0X2xhbmVfcDE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng0X3QgX19zMCA9IF9fcDA7IFwKICBwb2x5MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAocG9seTE2eDRfdCkgX19idWlsdGluX25lb25fc3BsYXRfbGFuZV92KChpbnQ4eDhfdClfX3MwLCBfX3AxLCA1KTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgc3BsYXRxX2xhbmVfcDgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4OF90IF9fczAgPSBfX3AwOyBcCiAgcG9seTh4MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKHBvbHk4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0cV9sYW5lX3YoKGludDh4OF90KV9fczAsIF9fcDEsIDQpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSBzcGxhdHFfbGFuZV9wOChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHg4X3QgX19zMCA9IF9fcDA7IFwKICBwb2x5OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBwb2x5OHgxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAocG9seTh4MTZfdCkgX19idWlsdGluX25lb25fc3BsYXRxX2xhbmVfdigoaW50OHg4X3QpX19yZXYwLCBfX3AxLCA0KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgX19ub3N3YXBfc3BsYXRxX2xhbmVfcDgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4OF90IF9fczAgPSBfX3AwOyBcCiAgcG9seTh4MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKHBvbHk4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0cV9sYW5lX3YoKGludDh4OF90KV9fczAsIF9fcDEsIDQpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSBzcGxhdHFfbGFuZV9wNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTY0eDFfdCBfX3MwID0gX19wMDsgXAogIHBvbHk2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdHFfbGFuZV92KChpbnQ4eDhfdClfX3MwLCBfX3AxLCA2KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgc3BsYXRxX2xhbmVfcDY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk2NHgxX3QgX19zMCA9IF9fcDA7IFwKICBwb2x5NjR4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAocG9seTY0eDJfdCkgX19idWlsdGluX25lb25fc3BsYXRxX2xhbmVfdigoaW50OHg4X3QpX19zMCwgX19wMSwgNik7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3NwbGF0cV9sYW5lX3A2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5NjR4MV90IF9fczAgPSBfX3AwOyBcCiAgcG9seTY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKHBvbHk2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0cV9sYW5lX3YoKGludDh4OF90KV9fczAsIF9fcDEsIDYpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSBzcGxhdHFfbGFuZV9wMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDRfdCBfX3MwID0gX19wMDsgXAogIHBvbHkxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdHFfbGFuZV92KChpbnQ4eDhfdClfX3MwLCBfX3AxLCA1KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgc3BsYXRxX2xhbmVfcDE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng0X3QgX19zMCA9IF9fcDA7IFwKICBwb2x5MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDMsIDIsIDEsIDApOyBcCiAgcG9seTE2eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHBvbHkxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0cV9sYW5lX3YoKGludDh4OF90KV9fcmV2MCwgX19wMSwgNSk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3NwbGF0cV9sYW5lX3AxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4NF90IF9fczAgPSBfX3AwOyBcCiAgcG9seTE2eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHBvbHkxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0cV9sYW5lX3YoKGludDh4OF90KV9fczAsIF9fcDEsIDUpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSBzcGxhdHFfbGFuZV91OChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHg4X3QgX19zMCA9IF9fcDA7IFwKICB1aW50OHgxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDh4MTZfdCkgX19idWlsdGluX25lb25fc3BsYXRxX2xhbmVfdigoaW50OHg4X3QpX19zMCwgX19wMSwgMTYpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSBzcGxhdHFfbGFuZV91OChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHg4X3QgX19zMCA9IF9fcDA7IFwKICB1aW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50OHgxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDh4MTZfdCkgX19idWlsdGluX25lb25fc3BsYXRxX2xhbmVfdigoaW50OHg4X3QpX19yZXYwLCBfX3AxLCAxNik7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3NwbGF0cV9sYW5lX3U4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDhfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ4eDE2X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdHFfbGFuZV92KChpbnQ4eDhfdClfX3MwLCBfX3AxLCAxNik7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHNwbGF0cV9sYW5lX3UzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4Ml90IF9fczAgPSBfX3AwOyBcCiAgdWludDMyeDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0cV9sYW5lX3YoKGludDh4OF90KV9fczAsIF9fcDEsIDE4KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgc3BsYXRxX2xhbmVfdTMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMngyX3QgX19zMCA9IF9fcDA7IFwKICB1aW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDEsIDApOyBcCiAgdWludDMyeDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0cV9sYW5lX3YoKGludDh4OF90KV9fcmV2MCwgX19wMSwgMTgpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF9zcGxhdHFfbGFuZV91MzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDJfdCBfX3MwID0gX19wMDsgXAogIHVpbnQzMng0X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdHFfbGFuZV92KChpbnQ4eDhfdClfX3MwLCBfX3AxLCAxOCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHNwbGF0cV9sYW5lX3U2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4MV90IF9fczAgPSBfX3AwOyBcCiAgdWludDY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0cV9sYW5lX3YoKGludDh4OF90KV9fczAsIF9fcDEsIDE5KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgc3BsYXRxX2xhbmVfdTY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgxX3QgX19zMCA9IF9fcDA7IFwKICB1aW50NjR4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDY0eDJfdCkgX19idWlsdGluX25lb25fc3BsYXRxX2xhbmVfdigoaW50OHg4X3QpX19zMCwgX19wMSwgMTkpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF9zcGxhdHFfbGFuZV91NjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDFfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdHFfbGFuZV92KChpbnQ4eDhfdClfX3MwLCBfX3AxLCAxOSk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHNwbGF0cV9sYW5lX3UxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4NF90IF9fczAgPSBfX3AwOyBcCiAgdWludDE2eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0cV9sYW5lX3YoKGludDh4OF90KV9fczAsIF9fcDEsIDE3KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgc3BsYXRxX2xhbmVfdTE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng0X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0cV9sYW5lX3YoKGludDh4OF90KV9fcmV2MCwgX19wMSwgMTcpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF9zcGxhdHFfbGFuZV91MTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDRfdCBfX3MwID0gX19wMDsgXAogIHVpbnQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdHFfbGFuZV92KChpbnQ4eDhfdClfX3MwLCBfX3AxLCAxNyk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHNwbGF0cV9sYW5lX3M4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4OF90IF9fczAgPSBfX3AwOyBcCiAgaW50OHgxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdHFfbGFuZV92KChpbnQ4eDhfdClfX3MwLCBfX3AxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgc3BsYXRxX2xhbmVfczgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHg4X3QgX19zMCA9IF9fcDA7IFwKICBpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDh4MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDh4MTZfdCkgX19idWlsdGluX25lb25fc3BsYXRxX2xhbmVfdigoaW50OHg4X3QpX19yZXYwLCBfX3AxLCAwKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgX19ub3N3YXBfc3BsYXRxX2xhbmVfczgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHg4X3QgX19zMCA9IF9fcDA7IFwKICBpbnQ4eDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0cV9sYW5lX3YoKGludDh4OF90KV9fczAsIF9fcDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSBzcGxhdHFfbGFuZV9mNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgxX3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdHFfbGFuZV92KChpbnQ4eDhfdClfX3MwLCBfX3AxLCAxMCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHNwbGF0cV9sYW5lX2Y2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDFfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0NjR4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0cV9sYW5lX3YoKGludDh4OF90KV9fczAsIF9fcDEsIDEwKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgX19ub3N3YXBfc3BsYXRxX2xhbmVfZjY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4MV90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQ2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDY0eDJfdCkgX19idWlsdGluX25lb25fc3BsYXRxX2xhbmVfdigoaW50OHg4X3QpX19zMCwgX19wMSwgMTApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSBzcGxhdHFfbGFuZV9mMzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMngyX3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDMyeDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdHFfbGFuZV92KChpbnQ4eDhfdClfX3MwLCBfX3AxLCA5KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgc3BsYXRxX2xhbmVfZjMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4Ml90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMSwgMCk7IFwKICBmbG9hdDMyeDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdHFfbGFuZV92KChpbnQ4eDhfdClfX3JldjAsIF9fcDEsIDkpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF9zcGxhdHFfbGFuZV9mMzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMngyX3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDMyeDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdHFfbGFuZV92KChpbnQ4eDhfdClfX3MwLCBfX3AxLCA5KTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgc3BsYXRxX2xhbmVfZjE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4NF90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDE2eDhfdCkgX19idWlsdGluX25lb25fc3BsYXRxX2xhbmVfdigoaW50OHg4X3QpX19zMCwgX19wMSwgOCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHNwbGF0cV9sYW5lX2YxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDRfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDE2eDhfdCkgX19idWlsdGluX25lb25fc3BsYXRxX2xhbmVfdigoaW50OHg4X3QpX19yZXYwLCBfX3AxLCA4KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgX19ub3N3YXBfc3BsYXRxX2xhbmVfZjE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4NF90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDE2eDhfdCkgX19idWlsdGluX25lb25fc3BsYXRxX2xhbmVfdigoaW50OHg4X3QpX19zMCwgX19wMSwgOCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHNwbGF0cV9sYW5lX3MzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMngyX3QgX19zMCA9IF9fcDA7IFwKICBpbnQzMng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0cV9sYW5lX3YoKGludDh4OF90KV9fczAsIF9fcDEsIDIpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSBzcGxhdHFfbGFuZV9zMzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Ml90IF9fczAgPSBfX3AwOyBcCiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDEsIDApOyBcCiAgaW50MzJ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdHFfbGFuZV92KChpbnQ4eDhfdClfX3JldjAsIF9fcDEsIDIpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF9zcGxhdHFfbGFuZV9zMzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Ml90IF9fczAgPSBfX3AwOyBcCiAgaW50MzJ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdHFfbGFuZV92KChpbnQ4eDhfdClfX3MwLCBfX3AxLCAyKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgc3BsYXRxX2xhbmVfczY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDFfdCBfX3MwID0gX19wMDsgXAogIGludDY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDY0eDJfdCkgX19idWlsdGluX25lb25fc3BsYXRxX2xhbmVfdigoaW50OHg4X3QpX19zMCwgX19wMSwgMyk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHNwbGF0cV9sYW5lX3M2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgxX3QgX19zMCA9IF9fcDA7IFwKICBpbnQ2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0cV9sYW5lX3YoKGludDh4OF90KV9fczAsIF9fcDEsIDMpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF9zcGxhdHFfbGFuZV9zNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4MV90IF9fczAgPSBfX3AwOyBcCiAgaW50NjR4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdHFfbGFuZV92KChpbnQ4eDhfdClfX3MwLCBfX3AxLCAzKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgc3BsYXRxX2xhbmVfczE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDRfdCBfX3MwID0gX19wMDsgXAogIGludDE2eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDE2eDhfdCkgX19idWlsdGluX25lb25fc3BsYXRxX2xhbmVfdigoaW50OHg4X3QpX19zMCwgX19wMSwgMSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHNwbGF0cV9sYW5lX3MxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0cV9sYW5lX3YoKGludDh4OF90KV9fcmV2MCwgX19wMSwgMSk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3NwbGF0cV9sYW5lX3MxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0cV9sYW5lX3YoKGludDh4OF90KV9fczAsIF9fcDEsIDEpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSBzcGxhdF9sYW5lX3U4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDhfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ4eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fc3BsYXRfbGFuZV92KChpbnQ4eDhfdClfX3MwLCBfX3AxLCAxNik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHNwbGF0X2xhbmVfdTgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4OF90IF9fczAgPSBfX3AwOyBcCiAgdWludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDh4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDh4OF90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdF9sYW5lX3YoKGludDh4OF90KV9fcmV2MCwgX19wMSwgMTYpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF9zcGxhdF9sYW5lX3U4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDhfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ4eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fc3BsYXRfbGFuZV92KChpbnQ4eDhfdClfX3MwLCBfX3AxLCAxNik7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHNwbGF0X2xhbmVfdTMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMngyX3QgX19zMCA9IF9fcDA7IFwKICB1aW50MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fc3BsYXRfbGFuZV92KChpbnQ4eDhfdClfX3MwLCBfX3AxLCAxOCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHNwbGF0X2xhbmVfdTMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMngyX3QgX19zMCA9IF9fcDA7IFwKICB1aW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDEsIDApOyBcCiAgdWludDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0X2xhbmVfdigoaW50OHg4X3QpX19yZXYwLCBfX3AxLCAxOCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3NwbGF0X2xhbmVfdTMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMngyX3QgX19zMCA9IF9fcDA7IFwKICB1aW50MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fc3BsYXRfbGFuZV92KChpbnQ4eDhfdClfX3MwLCBfX3AxLCAxOCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNkZWZpbmUgc3BsYXRfbGFuZV91NjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDFfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ2NHgxX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50NjR4MV90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdF9sYW5lX3YoKGludDh4OF90KV9fczAsIF9fcDEsIDE5KTsgXAogIF9fcmV0OyBcCn0pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHNwbGF0X2xhbmVfdTE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng0X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fc3BsYXRfbGFuZV92KChpbnQ4eDhfdClfX3MwLCBfX3AxLCAxNyk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHNwbGF0X2xhbmVfdTE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng0X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0X2xhbmVfdigoaW50OHg4X3QpX19yZXYwLCBfX3AxLCAxNyk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3NwbGF0X2xhbmVfdTE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng0X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fc3BsYXRfbGFuZV92KChpbnQ4eDhfdClfX3MwLCBfX3AxLCAxNyk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHNwbGF0X2xhbmVfczgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHg4X3QgX19zMCA9IF9fcDA7IFwKICBpbnQ4eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDh4OF90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdF9sYW5lX3YoKGludDh4OF90KV9fczAsIF9fcDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSBzcGxhdF9sYW5lX3M4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4OF90IF9fczAgPSBfX3AwOyBcCiAgaW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQ4eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDh4OF90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdF9sYW5lX3YoKGludDh4OF90KV9fcmV2MCwgX19wMSwgMCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3NwbGF0X2xhbmVfczgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHg4X3QgX19zMCA9IF9fcDA7IFwKICBpbnQ4eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDh4OF90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdF9sYW5lX3YoKGludDh4OF90KV9fczAsIF9fcDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojZGVmaW5lIHNwbGF0X2xhbmVfZjY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4MV90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQ2NHgxX3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDY0eDFfdCkgX19idWlsdGluX25lb25fc3BsYXRfbGFuZV92KChpbnQ4eDhfdClfX3MwLCBfX3AxLCAxMCk7IFwKICBfX3JldDsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSBzcGxhdF9sYW5lX2YzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0X2xhbmVfdigoaW50OHg4X3QpX19zMCwgX19wMSwgOSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHNwbGF0X2xhbmVfZjMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4Ml90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMSwgMCk7IFwKICBmbG9hdDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdF9sYW5lX3YoKGludDh4OF90KV9fcmV2MCwgX19wMSwgOSk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3NwbGF0X2xhbmVfZjMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4Ml90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQzMngyX3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fc3BsYXRfbGFuZV92KChpbnQ4eDhfdClfX3MwLCBfX3AxLCA5KTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgc3BsYXRfbGFuZV9mMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng0X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdF9sYW5lX3YoKGludDh4OF90KV9fczAsIF9fcDEsIDgpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSBzcGxhdF9sYW5lX2YxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDRfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDE2eDRfdCkgX19idWlsdGluX25lb25fc3BsYXRfbGFuZV92KChpbnQ4eDhfdClfX3JldjAsIF9fcDEsIDgpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF9zcGxhdF9sYW5lX2YxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDRfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0X2xhbmVfdigoaW50OHg4X3QpX19zMCwgX19wMSwgOCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHNwbGF0X2xhbmVfczMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJfdCBfX3MwID0gX19wMDsgXAogIGludDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fc3BsYXRfbGFuZV92KChpbnQ4eDhfdClfX3MwLCBfX3AxLCAyKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgc3BsYXRfbGFuZV9zMzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Ml90IF9fczAgPSBfX3AwOyBcCiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDEsIDApOyBcCiAgaW50MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdF9sYW5lX3YoKGludDh4OF90KV9fcmV2MCwgX19wMSwgMik7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3NwbGF0X2xhbmVfczMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJfdCBfX3MwID0gX19wMDsgXAogIGludDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fc3BsYXRfbGFuZV92KChpbnQ4eDhfdClfX3MwLCBfX3AxLCAyKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2RlZmluZSBzcGxhdF9sYW5lX3M2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgxX3QgX19zMCA9IF9fcDA7IFwKICBpbnQ2NHgxX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0X2xhbmVfdigoaW50OHg4X3QpX19zMCwgX19wMSwgMyk7IFwKICBfX3JldDsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSBzcGxhdF9sYW5lX3MxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0X2xhbmVfdigoaW50OHg4X3QpX19zMCwgX19wMSwgMSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHNwbGF0X2xhbmVfczE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDRfdCBfX3MwID0gX19wMDsgXAogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fc3BsYXRfbGFuZV92KChpbnQ4eDhfdClfX3JldjAsIF9fcDEsIDEpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF9zcGxhdF9sYW5lX3MxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0X2xhbmVfdigoaW50OHg4X3QpX19zMCwgX19wMSwgMSk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHNwbGF0X2xhbmVxX3A4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4eDE2X3QgX19zMCA9IF9fcDA7IFwKICBwb2x5OHg4X3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0X2xhbmVxX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCAzNik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHNwbGF0X2xhbmVxX3A4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4eDE2X3QgX19zMCA9IF9fcDA7IFwKICBwb2x5OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgcG9seTh4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAocG9seTh4OF90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdF9sYW5lcV92KChpbnQ4eDE2X3QpX19yZXYwLCBfX3AxLCAzNik7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3NwbGF0X2xhbmVxX3A4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4eDE2X3QgX19zMCA9IF9fcDA7IFwKICBwb2x5OHg4X3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0X2xhbmVxX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCAzNik7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHNwbGF0X2xhbmVxX3A2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5NjR4Ml90IF9fczAgPSBfX3AwOyBcCiAgcG9seTY0eDFfdCBfX3JldDsgXAogIF9fcmV0ID0gKHBvbHk2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0X2xhbmVxX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCAzOCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHNwbGF0X2xhbmVxX3A2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5NjR4Ml90IF9fczAgPSBfX3AwOyBcCiAgcG9seTY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAxLCAwKTsgXAogIHBvbHk2NHgxX3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5NjR4MV90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdF9sYW5lcV92KChpbnQ4eDE2X3QpX19yZXYwLCBfX3AxLCAzOCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3NwbGF0X2xhbmVxX3A2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5NjR4Ml90IF9fczAgPSBfX3AwOyBcCiAgcG9seTY0eDFfdCBfX3JldDsgXAogIF9fcmV0ID0gKHBvbHk2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0X2xhbmVxX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCAzOCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHNwbGF0X2xhbmVxX3AxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgcG9seTE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHBvbHkxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0X2xhbmVxX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCAzNyk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHNwbGF0X2xhbmVxX3AxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgcG9seTE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHBvbHkxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdF9sYW5lcV92KChpbnQ4eDE2X3QpX19yZXYwLCBfX3AxLCAzNyk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3NwbGF0X2xhbmVxX3AxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgcG9seTE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHBvbHkxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0X2xhbmVxX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCAzNyk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHNwbGF0cV9sYW5lcV9wOChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHgxNl90IF9fczAgPSBfX3AwOyBcCiAgcG9seTh4MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKHBvbHk4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0cV9sYW5lcV92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgMzYpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSBzcGxhdHFfbGFuZXFfcDgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4MTZfdCBfX3MwID0gX19wMDsgXAogIHBvbHk4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBwb2x5OHgxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAocG9seTh4MTZfdCkgX19idWlsdGluX25lb25fc3BsYXRxX2xhbmVxX3YoKGludDh4MTZfdClfX3JldjAsIF9fcDEsIDM2KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgX19ub3N3YXBfc3BsYXRxX2xhbmVxX3A4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4eDE2X3QgX19zMCA9IF9fcDA7IFwKICBwb2x5OHgxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAocG9seTh4MTZfdCkgX19idWlsdGluX25lb25fc3BsYXRxX2xhbmVxX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCAzNik7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHNwbGF0cV9sYW5lcV9wNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTY0eDJfdCBfX3MwID0gX19wMDsgXAogIHBvbHk2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdHFfbGFuZXFfdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDM4KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgc3BsYXRxX2xhbmVxX3A2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5NjR4Ml90IF9fczAgPSBfX3AwOyBcCiAgcG9seTY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAxLCAwKTsgXAogIHBvbHk2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdHFfbGFuZXFfdigoaW50OHgxNl90KV9fcmV2MCwgX19wMSwgMzgpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF9zcGxhdHFfbGFuZXFfcDY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk2NHgyX3QgX19zMCA9IF9fcDA7IFwKICBwb2x5NjR4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAocG9seTY0eDJfdCkgX19idWlsdGluX25lb25fc3BsYXRxX2xhbmVxX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCAzOCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHNwbGF0cV9sYW5lcV9wMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDhfdCBfX3MwID0gX19wMDsgXAogIHBvbHkxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdHFfbGFuZXFfdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDM3KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgc3BsYXRxX2xhbmVxX3AxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgcG9seTE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHBvbHkxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdHFfbGFuZXFfdigoaW50OHgxNl90KV9fcmV2MCwgX19wMSwgMzcpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF9zcGxhdHFfbGFuZXFfcDE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng4X3QgX19zMCA9IF9fcDA7IFwKICBwb2x5MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAocG9seTE2eDhfdCkgX19idWlsdGluX25lb25fc3BsYXRxX2xhbmVxX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCAzNyk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHNwbGF0cV9sYW5lcV91OChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHgxNl90IF9fczAgPSBfX3AwOyBcCiAgdWludDh4MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0cV9sYW5lcV92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgNDgpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSBzcGxhdHFfbGFuZXFfdTgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4MTZfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50OHgxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDh4MTZfdCkgX19idWlsdGluX25lb25fc3BsYXRxX2xhbmVxX3YoKGludDh4MTZfdClfX3JldjAsIF9fcDEsIDQ4KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgX19ub3N3YXBfc3BsYXRxX2xhbmVxX3U4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDE2X3QgX19zMCA9IF9fcDA7IFwKICB1aW50OHgxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDh4MTZfdCkgX19idWlsdGluX25lb25fc3BsYXRxX2xhbmVxX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCA0OCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHNwbGF0cV9sYW5lcV91MzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDRfdCBfX3MwID0gX19wMDsgXAogIHVpbnQzMng0X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdHFfbGFuZXFfdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDUwKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgc3BsYXRxX2xhbmVxX3UzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NF90IF9fczAgPSBfX3AwOyBcCiAgdWludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAzLCAyLCAxLCAwKTsgXAogIHVpbnQzMng0X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdHFfbGFuZXFfdigoaW50OHgxNl90KV9fcmV2MCwgX19wMSwgNTApOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF9zcGxhdHFfbGFuZXFfdTMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MzJ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fc3BsYXRxX2xhbmVxX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCA1MCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHNwbGF0cV9sYW5lcV91NjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDJfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdHFfbGFuZXFfdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDUxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgc3BsYXRxX2xhbmVxX3U2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4Ml90IF9fczAgPSBfX3AwOyBcCiAgdWludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAxLCAwKTsgXAogIHVpbnQ2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdHFfbGFuZXFfdigoaW50OHgxNl90KV9fcmV2MCwgX19wMSwgNTEpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF9zcGxhdHFfbGFuZXFfdTY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyX3QgX19zMCA9IF9fcDA7IFwKICB1aW50NjR4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDY0eDJfdCkgX19idWlsdGluX25lb25fc3BsYXRxX2xhbmVxX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCA1MSk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHNwbGF0cV9sYW5lcV91MTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDhfdCBfX3MwID0gX19wMDsgXAogIHVpbnQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdHFfbGFuZXFfdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDQ5KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgc3BsYXRxX2xhbmVxX3UxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgdWludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdHFfbGFuZXFfdigoaW50OHgxNl90KV9fcmV2MCwgX19wMSwgNDkpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF9zcGxhdHFfbGFuZXFfdTE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng4X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDE2eDhfdCkgX19idWlsdGluX25lb25fc3BsYXRxX2xhbmVxX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCA0OSk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHNwbGF0cV9sYW5lcV9zOChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDE2X3QgX19zMCA9IF9fcDA7IFwKICBpbnQ4eDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0cV9sYW5lcV92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgMzIpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSBzcGxhdHFfbGFuZXFfczgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHgxNl90IF9fczAgPSBfX3AwOyBcCiAgaW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50OHgxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdHFfbGFuZXFfdigoaW50OHgxNl90KV9fcmV2MCwgX19wMSwgMzIpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF9zcGxhdHFfbGFuZXFfczgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHgxNl90IF9fczAgPSBfX3AwOyBcCiAgaW50OHgxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdHFfbGFuZXFfdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDMyKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgc3BsYXRxX2xhbmVxX2Y2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDJfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0NjR4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0cV9sYW5lcV92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgNDIpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSBzcGxhdHFfbGFuZXFfZjY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4Ml90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMSwgMCk7IFwKICBmbG9hdDY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdHFfbGFuZXFfdigoaW50OHgxNl90KV9fcmV2MCwgX19wMSwgNDIpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF9zcGxhdHFfbGFuZXFfZjY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4Ml90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQ2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDY0eDJfdCkgX19idWlsdGluX25lb25fc3BsYXRxX2xhbmVxX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCA0Mik7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHNwbGF0cV9sYW5lcV9mMzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDMyeDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdHFfbGFuZXFfdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDQxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgc3BsYXRxX2xhbmVxX2YzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDRfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQzMng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fc3BsYXRxX2xhbmVxX3YoKGludDh4MTZfdClfX3JldjAsIF9fcDEsIDQxKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgX19ub3N3YXBfc3BsYXRxX2xhbmVxX2YzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDRfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MzJ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0cV9sYW5lcV92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgNDEpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSBzcGxhdHFfbGFuZXFfZjE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDE2eDhfdCkgX19idWlsdGluX25lb25fc3BsYXRxX2xhbmVxX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCA0MCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHNwbGF0cV9sYW5lcV9mMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0cV9sYW5lcV92KChpbnQ4eDE2X3QpX19yZXYwLCBfX3AxLCA0MCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3NwbGF0cV9sYW5lcV9mMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdHFfbGFuZXFfdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDQwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgc3BsYXRxX2xhbmVxX3MzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQzMng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0cV9sYW5lcV92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgMzQpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSBzcGxhdHFfbGFuZXFfczMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDRfdCBfX3MwID0gX19wMDsgXAogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDMyeDRfdCkgX19idWlsdGluX25lb25fc3BsYXRxX2xhbmVxX3YoKGludDh4MTZfdClfX3JldjAsIF9fcDEsIDM0KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgX19ub3N3YXBfc3BsYXRxX2xhbmVxX3MzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQzMng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0cV9sYW5lcV92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgMzQpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSBzcGxhdHFfbGFuZXFfczY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJfdCBfX3MwID0gX19wMDsgXAogIGludDY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDY0eDJfdCkgX19idWlsdGluX25lb25fc3BsYXRxX2xhbmVxX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCAzNSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHNwbGF0cV9sYW5lcV9zNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4Ml90IF9fczAgPSBfX3AwOyBcCiAgaW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDEsIDApOyBcCiAgaW50NjR4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdHFfbGFuZXFfdigoaW50OHgxNl90KV9fcmV2MCwgX19wMSwgMzUpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF9zcGxhdHFfbGFuZXFfczY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJfdCBfX3MwID0gX19wMDsgXAogIGludDY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDY0eDJfdCkgX19idWlsdGluX25lb25fc3BsYXRxX2xhbmVxX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCAzNSk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHNwbGF0cV9sYW5lcV9zMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgaW50MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdHFfbGFuZXFfdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDMzKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgc3BsYXRxX2xhbmVxX3MxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4X3QgX19zMCA9IF9fcDA7IFwKICBpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0cV9sYW5lcV92KChpbnQ4eDE2X3QpX19yZXYwLCBfX3AxLCAzMyk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3NwbGF0cV9sYW5lcV9zMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgaW50MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdHFfbGFuZXFfdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDMzKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgc3BsYXRfbGFuZXFfdTgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4MTZfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ4eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fc3BsYXRfbGFuZXFfdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDQ4KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgc3BsYXRfbGFuZXFfdTgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4MTZfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50OHg4X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0X2xhbmVxX3YoKGludDh4MTZfdClfX3JldjAsIF9fcDEsIDQ4KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgX19ub3N3YXBfc3BsYXRfbGFuZXFfdTgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4MTZfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ4eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fc3BsYXRfbGFuZXFfdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDQ4KTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgc3BsYXRfbGFuZXFfdTMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fc3BsYXRfbGFuZXFfdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDUwKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgc3BsYXRfbGFuZXFfdTMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDMsIDIsIDEsIDApOyBcCiAgdWludDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0X2xhbmVxX3YoKGludDh4MTZfdClfX3JldjAsIF9fcDEsIDUwKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgX19ub3N3YXBfc3BsYXRfbGFuZXFfdTMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fc3BsYXRfbGFuZXFfdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDUwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgc3BsYXRfbGFuZXFfdTY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyX3QgX19zMCA9IF9fcDA7IFwKICB1aW50NjR4MV90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDY0eDFfdCkgX19idWlsdGluX25lb25fc3BsYXRfbGFuZXFfdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDUxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgc3BsYXRfbGFuZXFfdTY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyX3QgX19zMCA9IF9fcDA7IFwKICB1aW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDEsIDApOyBcCiAgdWludDY0eDFfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0X2xhbmVxX3YoKGludDh4MTZfdClfX3JldjAsIF9fcDEsIDUxKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgX19ub3N3YXBfc3BsYXRfbGFuZXFfdTY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyX3QgX19zMCA9IF9fcDA7IFwKICB1aW50NjR4MV90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDY0eDFfdCkgX19idWlsdGluX25lb25fc3BsYXRfbGFuZXFfdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDUxKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgc3BsYXRfbGFuZXFfdTE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng4X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fc3BsYXRfbGFuZXFfdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDQ5KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgc3BsYXRfbGFuZXFfdTE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng4X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0X2xhbmVxX3YoKGludDh4MTZfdClfX3JldjAsIF9fcDEsIDQ5KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgX19ub3N3YXBfc3BsYXRfbGFuZXFfdTE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng4X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fc3BsYXRfbGFuZXFfdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDQ5KTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgc3BsYXRfbGFuZXFfczgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHgxNl90IF9fczAgPSBfX3AwOyBcCiAgaW50OHg4X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fc3BsYXRfbGFuZXFfdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDMyKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgc3BsYXRfbGFuZXFfczgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHgxNl90IF9fczAgPSBfX3AwOyBcCiAgaW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50OHg4X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fc3BsYXRfbGFuZXFfdigoaW50OHgxNl90KV9fcmV2MCwgX19wMSwgMzIpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF9zcGxhdF9sYW5lcV9zOChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDE2X3QgX19zMCA9IF9fcDA7IFwKICBpbnQ4eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDh4OF90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdF9sYW5lcV92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgMzIpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSBzcGxhdF9sYW5lcV9mNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgyX3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDY0eDFfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0NjR4MV90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdF9sYW5lcV92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgNDIpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSBzcGxhdF9sYW5lcV9mNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgyX3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAxLCAwKTsgXAogIGZsb2F0NjR4MV90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0X2xhbmVxX3YoKGludDh4MTZfdClfX3JldjAsIF9fcDEsIDQyKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgX19ub3N3YXBfc3BsYXRfbGFuZXFfZjY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4Ml90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQ2NHgxX3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDY0eDFfdCkgX19idWlsdGluX25lb25fc3BsYXRfbGFuZXFfdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDQyKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgc3BsYXRfbGFuZXFfZjMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NF90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQzMngyX3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fc3BsYXRfbGFuZXFfdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDQxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgc3BsYXRfbGFuZXFfZjMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NF90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdF9sYW5lcV92KChpbnQ4eDE2X3QpX19yZXYwLCBfX3AxLCA0MSk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3NwbGF0X2xhbmVxX2YzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDRfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0X2xhbmVxX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCA0MSk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHNwbGF0X2xhbmVxX2YxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDhfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0X2xhbmVxX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCA0MCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHNwbGF0X2xhbmVxX2YxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDhfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDE2eDRfdCkgX19idWlsdGluX25lb25fc3BsYXRfbGFuZXFfdigoaW50OHgxNl90KV9fcmV2MCwgX19wMSwgNDApOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF9zcGxhdF9sYW5lcV9mMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdF9sYW5lcV92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgNDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSBzcGxhdF9sYW5lcV9zMzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczAgPSBfX3AwOyBcCiAgaW50MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdF9sYW5lcV92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgMzQpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSBzcGxhdF9sYW5lcV9zMzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczAgPSBfX3AwOyBcCiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDMsIDIsIDEsIDApOyBcCiAgaW50MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdF9sYW5lcV92KChpbnQ4eDE2X3QpX19yZXYwLCBfX3AxLCAzNCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3NwbGF0X2xhbmVxX3MzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQzMngyX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0X2xhbmVxX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCAzNCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHNwbGF0X2xhbmVxX3M2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgyX3QgX19zMCA9IF9fcDA7IFwKICBpbnQ2NHgxX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0X2xhbmVxX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCAzNSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHNwbGF0X2xhbmVxX3M2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgyX3QgX19zMCA9IF9fcDA7IFwKICBpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMSwgMCk7IFwKICBpbnQ2NHgxX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0X2xhbmVxX3YoKGludDh4MTZfdClfX3JldjAsIF9fcDEsIDM1KTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgX19ub3N3YXBfc3BsYXRfbGFuZXFfczY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJfdCBfX3MwID0gX19wMDsgXAogIGludDY0eDFfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDY0eDFfdCkgX19idWlsdGluX25lb25fc3BsYXRfbGFuZXFfdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDM1KTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgc3BsYXRfbGFuZXFfczE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDhfdCBfX3MwID0gX19wMDsgXAogIGludDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fc3BsYXRfbGFuZXFfdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDMzKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgc3BsYXRfbGFuZXFfczE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDhfdCBfX3MwID0gX19wMDsgXAogIGludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fc3BsYXRfbGFuZXFfdigoaW50OHgxNl90KV9fcmV2MCwgX19wMSwgMzMpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF9zcGxhdF9sYW5lcV9zMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgaW50MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdF9sYW5lcV92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgMzMpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHgxNl90IHZhYmRxX3U4KHVpbnQ4eDE2X3QgX19wMCwgdWludDh4MTZfdCBfX3AxKSB7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92YWJkcV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA0OCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4MTZfdCB2YWJkcV91OCh1aW50OHgxNl90IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSkgewogIHVpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZhYmRxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA0OCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ4eDE2X3QgX19ub3N3YXBfdmFiZHFfdTgodWludDh4MTZfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEpIHsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZhYmRxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDQ4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZhYmRxX3UzMih1aW50MzJ4NF90IF9fcDAsIHVpbnQzMng0X3QgX19wMSkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdmFiZHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNTApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMng0X3QgdmFiZHFfdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxKSB7CiAgdWludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdmFiZHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDUwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDMyeDRfdCBfX25vc3dhcF92YWJkcV91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZhYmRxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDUwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4OF90IHZhYmRxX3UxNih1aW50MTZ4OF90IF9fcDAsIHVpbnQxNng4X3QgX19wMSkgewogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkgX19idWlsdGluX25lb25fdmFiZHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNDkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng4X3QgdmFiZHFfdTE2KHVpbnQxNng4X3QgX19wMCwgdWludDE2eDhfdCBfX3AxKSB7CiAgdWludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkgX19idWlsdGluX25lb25fdmFiZHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDQ5KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDE2eDhfdCBfX25vc3dhcF92YWJkcV91MTYodWludDE2eDhfdCBfX3AwLCB1aW50MTZ4OF90IF9fcDEpIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZhYmRxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDQ5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDE2X3QgdmFiZHFfczgoaW50OHgxNl90IF9fcDAsIGludDh4MTZfdCBfX3AxKSB7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4MTZfdCkgX19idWlsdGluX25lb25fdmFiZHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgMzIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4MTZfdCB2YWJkcV9zOChpbnQ4eDE2X3QgX19wMCwgaW50OHgxNl90IF9fcDEpIHsKICBpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZhYmRxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAzMik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDh4MTZfdCBfX25vc3dhcF92YWJkcV9zOChpbnQ4eDE2X3QgX19wMCwgaW50OHgxNl90IF9fcDEpIHsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92YWJkcV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAzMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMng0X3QgdmFiZHFfZjMyKGZsb2F0MzJ4NF90IF9fcDAsIGZsb2F0MzJ4NF90IF9fcDEpIHsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdmFiZHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4NF90IHZhYmRxX2YzMihmbG9hdDMyeDRfdCBfX3AwLCBmbG9hdDMyeDRfdCBfX3AxKSB7CiAgZmxvYXQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZhYmRxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA0MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDRfdCB2YWJkcV9zMzIoaW50MzJ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkgX19idWlsdGluX25lb25fdmFiZHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgMzQpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDRfdCB2YWJkcV9zMzIoaW50MzJ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxKSB7CiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92YWJkcV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgMzQpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQzMng0X3QgX19ub3N3YXBfdmFiZHFfczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZhYmRxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDM0KTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng4X3QgdmFiZHFfczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZhYmRxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDMzKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng4X3QgdmFiZHFfczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDhfdCkgX19idWlsdGluX25lb25fdmFiZHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDMzKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MTZ4OF90IF9fbm9zd2FwX3ZhYmRxX3MxNihpbnQxNng4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEpIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92YWJkcV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAzMyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4OF90IHZhYmRfdTgodWludDh4OF90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxKSB7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdmFiZF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMTYpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDhfdCB2YWJkX3U4KHVpbnQ4eDhfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIHVpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdmFiZF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDE2KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDh4OF90IF9fbm9zd2FwX3ZhYmRfdTgodWludDh4OF90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxKSB7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdmFiZF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMTYpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMngyX3QgdmFiZF91MzIodWludDMyeDJfdCBfX3AwLCB1aW50MzJ4Ml90IF9fcDEpIHsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZhYmRfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDE4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4Ml90IHZhYmRfdTMyKHVpbnQzMngyX3QgX19wMCwgdWludDMyeDJfdCBfX3AxKSB7CiAgdWludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdmFiZF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDE4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDMyeDJfdCBfX25vc3dhcF92YWJkX3UzMih1aW50MzJ4Ml90IF9fcDAsIHVpbnQzMngyX3QgX19wMSkgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdmFiZF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMTgpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng0X3QgdmFiZF91MTYodWludDE2eDRfdCBfX3AwLCB1aW50MTZ4NF90IF9fcDEpIHsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZhYmRfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDE3KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4NF90IHZhYmRfdTE2KHVpbnQxNng0X3QgX19wMCwgdWludDE2eDRfdCBfX3AxKSB7CiAgdWludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdmFiZF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDE3KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDE2eDRfdCBfX25vc3dhcF92YWJkX3UxNih1aW50MTZ4NF90IF9fcDAsIHVpbnQxNng0X3QgX19wMSkgewogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdmFiZF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMTcpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4OF90IHZhYmRfczgoaW50OHg4X3QgX19wMCwgaW50OHg4X3QgX19wMSkgewogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92YWJkX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ4eDhfdCB2YWJkX3M4KGludDh4OF90IF9fcDAsIGludDh4OF90IF9fcDEpIHsKICBpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdmFiZF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQ4eDhfdCBfX25vc3dhcF92YWJkX3M4KGludDh4OF90IF9fcDAsIGludDh4OF90IF9fcDEpIHsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdmFiZF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMngyX3QgdmFiZF9mMzIoZmxvYXQzMngyX3QgX19wMCwgZmxvYXQzMngyX3QgX19wMSkgewogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92YWJkX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCA5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDJfdCB2YWJkX2YzMihmbG9hdDMyeDJfdCBfX3AwLCBmbG9hdDMyeDJfdCBfX3AxKSB7CiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZhYmRfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCA5KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4Ml90IHZhYmRfczMyKGludDMyeDJfdCBfX3AwLCBpbnQzMngyX3QgX19wMSkgewogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZhYmRfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDJfdCB2YWJkX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEpIHsKICBpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZhYmRfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MzJ4Ml90IF9fbm9zd2FwX3ZhYmRfczMyKGludDMyeDJfdCBfX3AwLCBpbnQzMngyX3QgX19wMSkgewogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZhYmRfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDIpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDRfdCB2YWJkX3MxNihpbnQxNng0X3QgX19wMCwgaW50MTZ4NF90IF9fcDEpIHsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92YWJkX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng0X3QgdmFiZF9zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxKSB7CiAgaW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92YWJkX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDE2eDRfdCBfX25vc3dhcF92YWJkX3MxNihpbnQxNng0X3QgX19wMCwgaW50MTZ4NF90IF9fcDEpIHsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92YWJkX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDE2X3QgdmFic3FfczgoaW50OHgxNl90IF9fcDApIHsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92YWJzcV92KChpbnQ4eDE2X3QpX19wMCwgMzIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4MTZfdCB2YWJzcV9zOChpbnQ4eDE2X3QgX19wMCkgewogIGludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92YWJzcV92KChpbnQ4eDE2X3QpX19yZXYwLCAzMik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4NF90IHZhYnNxX2YzMihmbG9hdDMyeDRfdCBfX3AwKSB7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZhYnNxX3YoKGludDh4MTZfdClfX3AwLCA0MSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMng0X3QgdmFic3FfZjMyKGZsb2F0MzJ4NF90IF9fcDApIHsKICBmbG9hdDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdmFic3FfdigoaW50OHgxNl90KV9fcmV2MCwgNDEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMng0X3QgdmFic3FfczMyKGludDMyeDRfdCBfX3AwKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkgX19idWlsdGluX25lb25fdmFic3FfdigoaW50OHgxNl90KV9fcDAsIDM0KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMng0X3QgdmFic3FfczMyKGludDMyeDRfdCBfX3AwKSB7CiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZhYnNxX3YoKGludDh4MTZfdClfX3JldjAsIDM0KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZ4OF90IHZhYnNxX3MxNihpbnQxNng4X3QgX19wMCkgewogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZhYnNxX3YoKGludDh4MTZfdClfX3AwLCAzMyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4OF90IHZhYnNxX3MxNihpbnQxNng4X3QgX19wMCkgewogIGludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92YWJzcV92KChpbnQ4eDE2X3QpX19yZXYwLCAzMyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4OF90IHZhYnNfczgoaW50OHg4X3QgX19wMCkgewogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92YWJzX3YoKGludDh4OF90KV9fcDAsIDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4OF90IHZhYnNfczgoaW50OHg4X3QgX19wMCkgewogIGludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92YWJzX3YoKGludDh4OF90KV9fcmV2MCwgMCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4Ml90IHZhYnNfZjMyKGZsb2F0MzJ4Ml90IF9fcDApIHsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdmFic192KChpbnQ4eDhfdClfX3AwLCA5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDJfdCB2YWJzX2YzMihmbG9hdDMyeDJfdCBfX3AwKSB7CiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZhYnNfdigoaW50OHg4X3QpX19yZXYwLCA5KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4Ml90IHZhYnNfczMyKGludDMyeDJfdCBfX3AwKSB7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdmFic192KChpbnQ4eDhfdClfX3AwLCAyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMngyX3QgdmFic19zMzIoaW50MzJ4Ml90IF9fcDApIHsKICBpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdmFic192KChpbnQ4eDhfdClfX3JldjAsIDIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng0X3QgdmFic19zMTYoaW50MTZ4NF90IF9fcDApIHsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92YWJzX3YoKGludDh4OF90KV9fcDAsIDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDRfdCB2YWJzX3MxNihpbnQxNng0X3QgX19wMCkgewogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92YWJzX3YoKGludDh4OF90KV9fcmV2MCwgMSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDE2X3QgdmFkZHFfdTgodWludDh4MTZfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEpIHsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19wMCArIF9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4MTZfdCB2YWRkcV91OCh1aW50OHgxNl90IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSkgewogIHVpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICsgX19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZhZGRxX3UzMih1aW50MzJ4NF90IF9fcDAsIHVpbnQzMng0X3QgX19wMSkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICsgX19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4NF90IHZhZGRxX3UzMih1aW50MzJ4NF90IF9fcDAsIHVpbnQzMng0X3QgX19wMSkgewogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICsgX19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50NjR4Ml90IHZhZGRxX3U2NCh1aW50NjR4Ml90IF9fcDAsIHVpbnQ2NHgyX3QgX19wMSkgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICsgX19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50NjR4Ml90IHZhZGRxX3U2NCh1aW50NjR4Ml90IF9fcDAsIHVpbnQ2NHgyX3QgX19wMSkgewogIHVpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICsgX19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4OF90IHZhZGRxX3UxNih1aW50MTZ4OF90IF9fcDAsIHVpbnQxNng4X3QgX19wMSkgewogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICsgX19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4OF90IHZhZGRxX3UxNih1aW50MTZ4OF90IF9fcDAsIHVpbnQxNng4X3QgX19wMSkgewogIHVpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICsgX19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDE2X3QgdmFkZHFfczgoaW50OHgxNl90IF9fcDAsIGludDh4MTZfdCBfX3AxKSB7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19wMCArIF9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OHgxNl90IHZhZGRxX3M4KGludDh4MTZfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSkgewogIGludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICsgX19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDRfdCB2YWRkcV9mMzIoZmxvYXQzMng0X3QgX19wMCwgZmxvYXQzMng0X3QgX19wMSkgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCArIF9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMng0X3QgdmFkZHFfZjMyKGZsb2F0MzJ4NF90IF9fcDAsIGZsb2F0MzJ4NF90IF9fcDEpIHsKICBmbG9hdDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCArIF9fcmV2MTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4NF90IHZhZGRxX3MzMihpbnQzMng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEpIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICsgX19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMng0X3QgdmFkZHFfczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICsgX19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ2NHgyX3QgdmFkZHFfczY0KGludDY0eDJfdCBfX3AwLCBpbnQ2NHgyX3QgX19wMSkgewogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgKyBfX3AxOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDY0eDJfdCB2YWRkcV9zNjQoaW50NjR4Ml90IF9fcDAsIGludDY0eDJfdCBfX3AxKSB7CiAgaW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgKyBfX3JldjE7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDhfdCB2YWRkcV9zMTYoaW50MTZ4OF90IF9fcDAsIGludDE2eDhfdCBfX3AxKSB7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCArIF9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4OF90IHZhZGRxX3MxNihpbnQxNng4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEpIHsKICBpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCArIF9fcmV2MTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4OF90IHZhZGRfdTgodWludDh4OF90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxKSB7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCArIF9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4OF90IHZhZGRfdTgodWludDh4OF90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxKSB7CiAgdWludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgKyBfX3JldjE7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMngyX3QgdmFkZF91MzIodWludDMyeDJfdCBfX3AwLCB1aW50MzJ4Ml90IF9fcDEpIHsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19wMCArIF9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDJfdCB2YWRkX3UzMih1aW50MzJ4Ml90IF9fcDAsIHVpbnQzMngyX3QgX19wMSkgewogIHVpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICsgX19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgpfX2FpIHVpbnQ2NHgxX3QgdmFkZF91NjQodWludDY0eDFfdCBfX3AwLCB1aW50NjR4MV90IF9fcDEpIHsKICB1aW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gX19wMCArIF9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng0X3QgdmFkZF91MTYodWludDE2eDRfdCBfX3AwLCB1aW50MTZ4NF90IF9fcDEpIHsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCArIF9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDRfdCB2YWRkX3UxNih1aW50MTZ4NF90IF9fcDAsIHVpbnQxNng0X3QgX19wMSkgewogIHVpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICsgX19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDhfdCB2YWRkX3M4KGludDh4OF90IF9fcDAsIGludDh4OF90IF9fcDEpIHsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgKyBfX3AxOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4OF90IHZhZGRfczgoaW50OHg4X3QgX19wMCwgaW50OHg4X3QgX19wMSkgewogIGludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICsgX19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDJfdCB2YWRkX2YzMihmbG9hdDMyeDJfdCBfX3AwLCBmbG9hdDMyeDJfdCBfX3AxKSB7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICsgX19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDJfdCB2YWRkX2YzMihmbG9hdDMyeDJfdCBfX3AwLCBmbG9hdDMyeDJfdCBfX3AxKSB7CiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgKyBfX3JldjE7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDJfdCB2YWRkX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEpIHsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICsgX19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMngyX3QgdmFkZF9zMzIoaW50MzJ4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxKSB7CiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgKyBfX3JldjE7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCl9fYWkgaW50NjR4MV90IHZhZGRfczY0KGludDY0eDFfdCBfX3AwLCBpbnQ2NHgxX3QgX19wMSkgewogIGludDY0eDFfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgKyBfX3AxOwogIHJldHVybiBfX3JldDsKfQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng0X3QgdmFkZF9zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxKSB7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCArIF9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4NF90IHZhZGRfczE2KGludDE2eDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSkgewogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICsgX19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBwb2x5OHg4X3QgdmFkZF9wOChwb2x5OHg4X3QgX19wMCwgcG9seTh4OF90IF9fcDEpIHsKICBwb2x5OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTh4OF90KSBfX2J1aWx0aW5fbmVvbl92YWRkX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCA0KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBwb2x5OHg4X3QgdmFkZF9wOChwb2x5OHg4X3QgX19wMCwgcG9seTh4OF90IF9fcDEpIHsKICBwb2x5OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHBvbHk4eDhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZhZGRfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCA0KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKX19haSBwb2x5NjR4MV90IHZhZGRfcDY0KHBvbHk2NHgxX3QgX19wMCwgcG9seTY0eDFfdCBfX3AxKSB7CiAgcG9seTY0eDFfdCBfX3JldDsKICBfX3JldCA9IChwb2x5NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92YWRkX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCA2KTsKICByZXR1cm4gX19yZXQ7Cn0KI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgcG9seTE2eDRfdCB2YWRkX3AxNihwb2x5MTZ4NF90IF9fcDAsIHBvbHkxNng0X3QgX19wMSkgewogIHBvbHkxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTE2eDRfdCkgX19idWlsdGluX25lb25fdmFkZF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgNSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgcG9seTE2eDRfdCB2YWRkX3AxNihwb2x5MTZ4NF90IF9fcDAsIHBvbHkxNng0X3QgX19wMSkgewogIHBvbHkxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgcG9seTE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBwb2x5MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHkxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZhZGRfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCA1KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgcG9seTh4MTZfdCB2YWRkcV9wOChwb2x5OHgxNl90IF9fcDAsIHBvbHk4eDE2X3QgX19wMSkgewogIHBvbHk4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTh4MTZfdCkgX19idWlsdGluX25lb25fdmFkZHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgMzYpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHBvbHk4eDE2X3QgdmFkZHFfcDgocG9seTh4MTZfdCBfX3AwLCBwb2x5OHgxNl90IF9fcDEpIHsKICBwb2x5OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHBvbHk4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTh4MTZfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92YWRkcV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgMzYpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBwb2x5NjR4Ml90IHZhZGRxX3A2NChwb2x5NjR4Ml90IF9fcDAsIHBvbHk2NHgyX3QgX19wMSkgewogIHBvbHk2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTY0eDJfdCkgX19idWlsdGluX25lb25fdmFkZHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgMzgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHBvbHk2NHgyX3QgdmFkZHFfcDY0KHBvbHk2NHgyX3QgX19wMCwgcG9seTY0eDJfdCBfX3AxKSB7CiAgcG9seTY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBwb2x5NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHBvbHk2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTY0eDJfdCkgX19idWlsdGluX25lb25fdmFkZHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDM4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgcG9seTE2eDhfdCB2YWRkcV9wMTYocG9seTE2eDhfdCBfX3AwLCBwb2x5MTZ4OF90IF9fcDEpIHsKICBwb2x5MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHkxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZhZGRxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDM3KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBwb2x5MTZ4OF90IHZhZGRxX3AxNihwb2x5MTZ4OF90IF9fcDAsIHBvbHkxNng4X3QgX19wMSkgewogIHBvbHkxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBwb2x5MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHkxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZhZGRxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAzNyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng0X3QgdmFkZGhuX3UzMih1aW50MzJ4NF90IF9fcDAsIHVpbnQzMng0X3QgX19wMSkgewogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdmFkZGhuX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDE3KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4NF90IHZhZGRobl91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92YWRkaG5fdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDE3KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDE2eDRfdCBfX25vc3dhcF92YWRkaG5fdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92YWRkaG5fdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgMTcpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMngyX3QgdmFkZGhuX3U2NCh1aW50NjR4Ml90IF9fcDAsIHVpbnQ2NHgyX3QgX19wMSkgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdmFkZGhuX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDE4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4Ml90IHZhZGRobl91NjQodWludDY0eDJfdCBfX3AwLCB1aW50NjR4Ml90IF9fcDEpIHsKICB1aW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92YWRkaG5fdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDE4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDMyeDJfdCBfX25vc3dhcF92YWRkaG5fdTY0KHVpbnQ2NHgyX3QgX19wMCwgdWludDY0eDJfdCBfX3AxKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92YWRkaG5fdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgMTgpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDhfdCB2YWRkaG5fdTE2KHVpbnQxNng4X3QgX19wMCwgdWludDE2eDhfdCBfX3AxKSB7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdmFkZGhuX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDE2KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHg4X3QgdmFkZGhuX3UxNih1aW50MTZ4OF90IF9fcDAsIHVpbnQxNng4X3QgX19wMSkgewogIHVpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92YWRkaG5fdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDE2KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDh4OF90IF9fbm9zd2FwX3ZhZGRobl91MTYodWludDE2eDhfdCBfX3AwLCB1aW50MTZ4OF90IF9fcDEpIHsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92YWRkaG5fdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgMTYpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDRfdCB2YWRkaG5fczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZhZGRobl92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng0X3QgdmFkZGhuX3MzMihpbnQzMng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEpIHsKICBpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZhZGRobl92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgMSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDE2eDRfdCBfX25vc3dhcF92YWRkaG5fczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZhZGRobl92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMngyX3QgdmFkZGhuX3M2NChpbnQ2NHgyX3QgX19wMCwgaW50NjR4Ml90IF9fcDEpIHsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92YWRkaG5fdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4Ml90IHZhZGRobl9zNjQoaW50NjR4Ml90IF9fcDAsIGludDY0eDJfdCBfX3AxKSB7CiAgaW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92YWRkaG5fdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQzMngyX3QgX19ub3N3YXBfdmFkZGhuX3M2NChpbnQ2NHgyX3QgX19wMCwgaW50NjR4Ml90IF9fcDEpIHsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92YWRkaG5fdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHg4X3QgdmFkZGhuX3MxNihpbnQxNng4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEpIHsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdmFkZGhuX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4OF90IHZhZGRobl9zMTYoaW50MTZ4OF90IF9fcDAsIGludDE2eDhfdCBfX3AxKSB7CiAgaW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdmFkZGhuX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50OHg4X3QgX19ub3N3YXBfdmFkZGhuX3MxNihpbnQxNng4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEpIHsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdmFkZGhuX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDE2X3QgdmFuZHFfdTgodWludDh4MTZfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEpIHsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAmIF9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4MTZfdCB2YW5kcV91OCh1aW50OHgxNl90IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSkgewogIHVpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICYgX19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZhbmRxX3UzMih1aW50MzJ4NF90IF9fcDAsIHVpbnQzMng0X3QgX19wMSkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICYgX19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4NF90IHZhbmRxX3UzMih1aW50MzJ4NF90IF9fcDAsIHVpbnQzMng0X3QgX19wMSkgewogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICYgX19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50NjR4Ml90IHZhbmRxX3U2NCh1aW50NjR4Ml90IF9fcDAsIHVpbnQ2NHgyX3QgX19wMSkgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICYgX19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50NjR4Ml90IHZhbmRxX3U2NCh1aW50NjR4Ml90IF9fcDAsIHVpbnQ2NHgyX3QgX19wMSkgewogIHVpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICYgX19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4OF90IHZhbmRxX3UxNih1aW50MTZ4OF90IF9fcDAsIHVpbnQxNng4X3QgX19wMSkgewogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICYgX19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4OF90IHZhbmRxX3UxNih1aW50MTZ4OF90IF9fcDAsIHVpbnQxNng4X3QgX19wMSkgewogIHVpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICYgX19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDE2X3QgdmFuZHFfczgoaW50OHgxNl90IF9fcDAsIGludDh4MTZfdCBfX3AxKSB7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAmIF9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OHgxNl90IHZhbmRxX3M4KGludDh4MTZfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSkgewogIGludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICYgX19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMng0X3QgdmFuZHFfczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgJiBfX3AxOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDRfdCB2YW5kcV9zMzIoaW50MzJ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxKSB7CiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgJiBfX3JldjE7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDY0eDJfdCB2YW5kcV9zNjQoaW50NjR4Ml90IF9fcDAsIGludDY0eDJfdCBfX3AxKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAmIF9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50NjR4Ml90IHZhbmRxX3M2NChpbnQ2NHgyX3QgX19wMCwgaW50NjR4Ml90IF9fcDEpIHsKICBpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCAmIF9fcmV2MTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZ4OF90IHZhbmRxX3MxNihpbnQxNng4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEpIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICYgX19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng4X3QgdmFuZHFfczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICYgX19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHg4X3QgdmFuZF91OCh1aW50OHg4X3QgX19wMCwgdWludDh4OF90IF9fcDEpIHsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICYgX19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHg4X3QgdmFuZF91OCh1aW50OHg4X3QgX19wMCwgdWludDh4OF90IF9fcDEpIHsKICB1aW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCAmIF9fcmV2MTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDJfdCB2YW5kX3UzMih1aW50MzJ4Ml90IF9fcDAsIHVpbnQzMngyX3QgX19wMSkgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICYgX19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4Ml90IHZhbmRfdTMyKHVpbnQzMngyX3QgX19wMCwgdWludDMyeDJfdCBfX3AxKSB7CiAgdWludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgJiBfX3JldjE7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCl9fYWkgdWludDY0eDFfdCB2YW5kX3U2NCh1aW50NjR4MV90IF9fcDAsIHVpbnQ2NHgxX3QgX19wMSkgewogIHVpbnQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICYgX19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDRfdCB2YW5kX3UxNih1aW50MTZ4NF90IF9fcDAsIHVpbnQxNng0X3QgX19wMSkgewogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICYgX19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4NF90IHZhbmRfdTE2KHVpbnQxNng0X3QgX19wMCwgdWludDE2eDRfdCBfX3AxKSB7CiAgdWludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgJiBfX3JldjE7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4OF90IHZhbmRfczgoaW50OHg4X3QgX19wMCwgaW50OHg4X3QgX19wMSkgewogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAmIF9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OHg4X3QgdmFuZF9zOChpbnQ4eDhfdCBfX3AwLCBpbnQ4eDhfdCBfX3AxKSB7CiAgaW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgJiBfX3JldjE7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDJfdCB2YW5kX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEpIHsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICYgX19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMngyX3QgdmFuZF9zMzIoaW50MzJ4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxKSB7CiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgJiBfX3JldjE7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCl9fYWkgaW50NjR4MV90IHZhbmRfczY0KGludDY0eDFfdCBfX3AwLCBpbnQ2NHgxX3QgX19wMSkgewogIGludDY0eDFfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgJiBfX3AxOwogIHJldHVybiBfX3JldDsKfQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng0X3QgdmFuZF9zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxKSB7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAmIF9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4NF90IHZhbmRfczE2KGludDE2eDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSkgewogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICYgX19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHgxNl90IHZiaWNxX3U4KHVpbnQ4eDE2X3QgX19wMCwgdWludDh4MTZfdCBfX3AxKSB7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgJiB+X19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHgxNl90IHZiaWNxX3U4KHVpbnQ4eDE2X3QgX19wMCwgdWludDh4MTZfdCBfX3AxKSB7CiAgdWludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgJiB+X19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZiaWNxX3UzMih1aW50MzJ4NF90IF9fcDAsIHVpbnQzMng0X3QgX19wMSkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICYgfl9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2YmljcV91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCAmIH5fX3JldjE7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ2NHgyX3QgdmJpY3FfdTY0KHVpbnQ2NHgyX3QgX19wMCwgdWludDY0eDJfdCBfX3AxKSB7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgJiB+X19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50NjR4Ml90IHZiaWNxX3U2NCh1aW50NjR4Ml90IF9fcDAsIHVpbnQ2NHgyX3QgX19wMSkgewogIHVpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICYgfl9fcmV2MTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDhfdCB2YmljcV91MTYodWludDE2eDhfdCBfX3AwLCB1aW50MTZ4OF90IF9fcDEpIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAmIH5fX3AxOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng4X3QgdmJpY3FfdTE2KHVpbnQxNng4X3QgX19wMCwgdWludDE2eDhfdCBfX3AxKSB7CiAgdWludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgJiB+X19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDE2X3QgdmJpY3FfczgoaW50OHgxNl90IF9fcDAsIGludDh4MTZfdCBfX3AxKSB7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAmIH5fX3AxOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4MTZfdCB2YmljcV9zOChpbnQ4eDE2X3QgX19wMCwgaW50OHgxNl90IF9fcDEpIHsKICBpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCAmIH5fX3JldjE7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDRfdCB2YmljcV9zMzIoaW50MzJ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAmIH5fX3AxOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDRfdCB2YmljcV9zMzIoaW50MzJ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxKSB7CiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgJiB+X19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ2NHgyX3QgdmJpY3FfczY0KGludDY0eDJfdCBfX3AwLCBpbnQ2NHgyX3QgX19wMSkgewogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgJiB+X19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ2NHgyX3QgdmJpY3FfczY0KGludDY0eDJfdCBfX3AwLCBpbnQ2NHgyX3QgX19wMSkgewogIGludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBpbnQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICYgfl9fcmV2MTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZ4OF90IHZiaWNxX3MxNihpbnQxNng4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEpIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICYgfl9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4OF90IHZiaWNxX3MxNihpbnQxNng4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEpIHsKICBpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCAmIH5fX3JldjE7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDhfdCB2YmljX3U4KHVpbnQ4eDhfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgJiB+X19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHg4X3QgdmJpY191OCh1aW50OHg4X3QgX19wMCwgdWludDh4OF90IF9fcDEpIHsKICB1aW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCAmIH5fX3JldjE7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMngyX3QgdmJpY191MzIodWludDMyeDJfdCBfX3AwLCB1aW50MzJ4Ml90IF9fcDEpIHsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAmIH5fX3AxOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMngyX3QgdmJpY191MzIodWludDMyeDJfdCBfX3AwLCB1aW50MzJ4Ml90IF9fcDEpIHsKICB1aW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCAmIH5fX3JldjE7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCl9fYWkgdWludDY0eDFfdCB2YmljX3U2NCh1aW50NjR4MV90IF9fcDAsIHVpbnQ2NHgxX3QgX19wMSkgewogIHVpbnQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICYgfl9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng0X3QgdmJpY191MTYodWludDE2eDRfdCBfX3AwLCB1aW50MTZ4NF90IF9fcDEpIHsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAmIH5fX3AxOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng0X3QgdmJpY191MTYodWludDE2eDRfdCBfX3AwLCB1aW50MTZ4NF90IF9fcDEpIHsKICB1aW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCAmIH5fX3JldjE7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4OF90IHZiaWNfczgoaW50OHg4X3QgX19wMCwgaW50OHg4X3QgX19wMSkgewogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAmIH5fX3AxOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4OF90IHZiaWNfczgoaW50OHg4X3QgX19wMCwgaW50OHg4X3QgX19wMSkgewogIGludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICYgfl9fcmV2MTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4Ml90IHZiaWNfczMyKGludDMyeDJfdCBfX3AwLCBpbnQzMngyX3QgX19wMSkgewogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgJiB+X19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMngyX3QgdmJpY19zMzIoaW50MzJ4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxKSB7CiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgJiB+X19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgpfX2FpIGludDY0eDFfdCB2YmljX3M2NChpbnQ2NHgxX3QgX19wMCwgaW50NjR4MV90IF9fcDEpIHsKICBpbnQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICYgfl9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDRfdCB2YmljX3MxNihpbnQxNng0X3QgX19wMCwgaW50MTZ4NF90IF9fcDEpIHsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICYgfl9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4NF90IHZiaWNfczE2KGludDE2eDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSkgewogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICYgfl9fcmV2MTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgcG9seTh4OF90IHZic2xfcDgodWludDh4OF90IF9fcDAsIHBvbHk4eDhfdCBfX3AxLCBwb2x5OHg4X3QgX19wMikgewogIHBvbHk4eDhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3Zic2xfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIChpbnQ4eDhfdClfX3AyLCA0KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBwb2x5OHg4X3QgdmJzbF9wOCh1aW50OHg4X3QgX19wMCwgcG9seTh4OF90IF9fcDEsIHBvbHk4eDhfdCBfX3AyKSB7CiAgdWludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHBvbHk4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBwb2x5OHg4X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk4eDhfdCkgX19idWlsdGluX25lb25fdmJzbF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIChpbnQ4eDhfdClfX3JldjIsIDQpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBwb2x5MTZ4NF90IHZic2xfcDE2KHVpbnQxNng0X3QgX19wMCwgcG9seTE2eDRfdCBfX3AxLCBwb2x5MTZ4NF90IF9fcDIpIHsKICBwb2x5MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHkxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3Zic2xfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIChpbnQ4eDhfdClfX3AyLCA1KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBwb2x5MTZ4NF90IHZic2xfcDE2KHVpbnQxNng0X3QgX19wMCwgcG9seTE2eDRfdCBfX3AxLCBwb2x5MTZ4NF90IF9fcDIpIHsKICB1aW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHBvbHkxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgcG9seTE2eDRfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAzLCAyLCAxLCAwKTsKICBwb2x5MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHkxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3Zic2xfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAoaW50OHg4X3QpX19yZXYyLCA1KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgcG9seTh4MTZfdCB2YnNscV9wOCh1aW50OHgxNl90IF9fcDAsIHBvbHk4eDE2X3QgX19wMSwgcG9seTh4MTZfdCBfX3AyKSB7CiAgcG9seTh4MTZfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92YnNscV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAoaW50OHgxNl90KV9fcDIsIDM2KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBwb2x5OHgxNl90IHZic2xxX3A4KHVpbnQ4eDE2X3QgX19wMCwgcG9seTh4MTZfdCBfX3AxLCBwb2x5OHgxNl90IF9fcDIpIHsKICB1aW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHBvbHk4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTh4MTZfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBwb2x5OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3Zic2xxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAoaW50OHgxNl90KV9fcmV2MiwgMzYpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBwb2x5MTZ4OF90IHZic2xxX3AxNih1aW50MTZ4OF90IF9fcDAsIHBvbHkxNng4X3QgX19wMSwgcG9seTE2eDhfdCBfX3AyKSB7CiAgcG9seTE2eDhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92YnNscV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAoaW50OHgxNl90KV9fcDIsIDM3KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBwb2x5MTZ4OF90IHZic2xxX3AxNih1aW50MTZ4OF90IF9fcDAsIHBvbHkxNng4X3QgX19wMSwgcG9seTE2eDhfdCBfX3AyKSB7CiAgdWludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBwb2x5MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHBvbHkxNng4X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTE2eDhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92YnNscV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgKGludDh4MTZfdClfX3JldjIsIDM3KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4MTZfdCB2YnNscV91OCh1aW50OHgxNl90IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSwgdWludDh4MTZfdCBfX3AyKSB7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92YnNscV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAoaW50OHgxNl90KV9fcDIsIDQ4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHgxNl90IHZic2xxX3U4KHVpbnQ4eDE2X3QgX19wMCwgdWludDh4MTZfdCBfX3AxLCB1aW50OHgxNl90IF9fcDIpIHsKICB1aW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3Zic2xxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAoaW50OHgxNl90KV9fcmV2MiwgNDgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZic2xxX3UzMih1aW50MzJ4NF90IF9fcDAsIHVpbnQzMng0X3QgX19wMSwgdWludDMyeDRfdCBfX3AyKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92YnNscV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAoaW50OHgxNl90KV9fcDIsIDUwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4NF90IHZic2xxX3UzMih1aW50MzJ4NF90IF9fcDAsIHVpbnQzMng0X3QgX19wMSwgdWludDMyeDRfdCBfX3AyKSB7CiAgdWludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92YnNscV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgKGludDh4MTZfdClfX3JldjIsIDUwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDY0eDJfdCB2YnNscV91NjQodWludDY0eDJfdCBfX3AwLCB1aW50NjR4Ml90IF9fcDEsIHVpbnQ2NHgyX3QgX19wMikgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkgX19idWlsdGluX25lb25fdmJzbHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgKGludDh4MTZfdClfX3AyLCA1MSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDY0eDJfdCB2YnNscV91NjQodWludDY0eDJfdCBfX3AwLCB1aW50NjR4Ml90IF9fcDEsIHVpbnQ2NHgyX3QgX19wMikgewogIHVpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkgX19idWlsdGluX25lb25fdmJzbHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIChpbnQ4eDE2X3QpX19yZXYyLCA1MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng4X3QgdmJzbHFfdTE2KHVpbnQxNng4X3QgX19wMCwgdWludDE2eDhfdCBfX3AxLCB1aW50MTZ4OF90IF9fcDIpIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3Zic2xxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIChpbnQ4eDE2X3QpX19wMiwgNDkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng4X3QgdmJzbHFfdTE2KHVpbnQxNng4X3QgX19wMCwgdWludDE2eDhfdCBfX3AxLCB1aW50MTZ4OF90IF9fcDIpIHsKICB1aW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3Zic2xxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAoaW50OHgxNl90KV9fcmV2MiwgNDkpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDE2X3QgdmJzbHFfczgodWludDh4MTZfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSwgaW50OHgxNl90IF9fcDIpIHsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92YnNscV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAoaW50OHgxNl90KV9fcDIsIDMyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ4eDE2X3QgdmJzbHFfczgodWludDh4MTZfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSwgaW50OHgxNl90IF9fcDIpIHsKICB1aW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4MTZfdCkgX19idWlsdGluX25lb25fdmJzbHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIChpbnQ4eDE2X3QpX19yZXYyLCAzMik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4NF90IHZic2xxX2YzMih1aW50MzJ4NF90IF9fcDAsIGZsb2F0MzJ4NF90IF9fcDEsIGZsb2F0MzJ4NF90IF9fcDIpIHsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdmJzbHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgKGludDh4MTZfdClfX3AyLCA0MSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMng0X3QgdmJzbHFfZjMyKHVpbnQzMng0X3QgX19wMCwgZmxvYXQzMng0X3QgX19wMSwgZmxvYXQzMng0X3QgX19wMikgewogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMng0X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3Zic2xxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAoaW50OHgxNl90KV9fcmV2MiwgNDEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMng0X3QgdmJzbHFfczMyKHVpbnQzMng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEsIGludDMyeDRfdCBfX3AyKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkgX19idWlsdGluX25lb25fdmJzbHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgKGludDh4MTZfdClfX3AyLCAzNCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4NF90IHZic2xxX3MzMih1aW50MzJ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxLCBpbnQzMng0X3QgX19wMikgewogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92YnNscV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgKGludDh4MTZfdClfX3JldjIsIDM0KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50NjR4Ml90IHZic2xxX3M2NCh1aW50NjR4Ml90IF9fcDAsIGludDY0eDJfdCBfX3AxLCBpbnQ2NHgyX3QgX19wMikgewogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3Zic2xxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIChpbnQ4eDE2X3QpX19wMiwgMzUpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDY0eDJfdCB2YnNscV9zNjQodWludDY0eDJfdCBfX3AwLCBpbnQ2NHgyX3QgX19wMSwgaW50NjR4Ml90IF9fcDIpIHsKICB1aW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBpbnQ2NHgyX3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMSwgMCk7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDJfdCkgX19idWlsdGluX25lb25fdmJzbHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIChpbnQ4eDE2X3QpX19yZXYyLCAzNSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDhfdCB2YnNscV9zMTYodWludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSwgaW50MTZ4OF90IF9fcDIpIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92YnNscV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAoaW50OHgxNl90KV9fcDIsIDMzKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng4X3QgdmJzbHFfczE2KHVpbnQxNng4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEsIGludDE2eDhfdCBfX3AyKSB7CiAgdWludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3Zic2xxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAoaW50OHgxNl90KV9fcmV2MiwgMzMpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHg4X3QgdmJzbF91OCh1aW50OHg4X3QgX19wMCwgdWludDh4OF90IF9fcDEsIHVpbnQ4eDhfdCBfX3AyKSB7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdmJzbF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgKGludDh4OF90KV9fcDIsIDE2KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHg4X3QgdmJzbF91OCh1aW50OHg4X3QgX19wMCwgdWludDh4OF90IF9fcDEsIHVpbnQ4eDhfdCBfX3AyKSB7CiAgdWludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdmJzbF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIChpbnQ4eDhfdClfX3JldjIsIDE2KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDJfdCB2YnNsX3UzMih1aW50MzJ4Ml90IF9fcDAsIHVpbnQzMngyX3QgX19wMSwgdWludDMyeDJfdCBfX3AyKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92YnNsX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAoaW50OHg4X3QpX19wMiwgMTgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMngyX3QgdmJzbF91MzIodWludDMyeDJfdCBfX3AwLCB1aW50MzJ4Ml90IF9fcDEsIHVpbnQzMngyX3QgX19wMikgewogIHVpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdmJzbF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIChpbnQ4eDhfdClfX3JldjIsIDE4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKX19haSB1aW50NjR4MV90IHZic2xfdTY0KHVpbnQ2NHgxX3QgX19wMCwgdWludDY0eDFfdCBfX3AxLCB1aW50NjR4MV90IF9fcDIpIHsKICB1aW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3Zic2xfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIChpbnQ4eDhfdClfX3AyLCAxOSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng0X3QgdmJzbF91MTYodWludDE2eDRfdCBfX3AwLCB1aW50MTZ4NF90IF9fcDEsIHVpbnQxNng0X3QgX19wMikgewogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdmJzbF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgKGludDh4OF90KV9fcDIsIDE3KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4NF90IHZic2xfdTE2KHVpbnQxNng0X3QgX19wMCwgdWludDE2eDRfdCBfX3AxLCB1aW50MTZ4NF90IF9fcDIpIHsKICB1aW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3Zic2xfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAoaW50OHg4X3QpX19yZXYyLCAxNyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4OF90IHZic2xfczgodWludDh4OF90IF9fcDAsIGludDh4OF90IF9fcDEsIGludDh4OF90IF9fcDIpIHsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdmJzbF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgKGludDh4OF90KV9fcDIsIDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4OF90IHZic2xfczgodWludDh4OF90IF9fcDAsIGludDh4OF90IF9fcDEsIGludDh4OF90IF9fcDIpIHsKICB1aW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3Zic2xfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAoaW50OHg4X3QpX19yZXYyLCAwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMngyX3QgdmJzbF9mMzIodWludDMyeDJfdCBfX3AwLCBmbG9hdDMyeDJfdCBfX3AxLCBmbG9hdDMyeDJfdCBfX3AyKSB7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3Zic2xfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIChpbnQ4eDhfdClfX3AyLCA5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDJfdCB2YnNsX2YzMih1aW50MzJ4Ml90IF9fcDAsIGZsb2F0MzJ4Ml90IF9fcDEsIGZsb2F0MzJ4Ml90IF9fcDIpIHsKICB1aW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGZsb2F0MzJ4Ml90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDEsIDApOwogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92YnNsX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgKGludDh4OF90KV9fcmV2MiwgOSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDJfdCB2YnNsX3MzMih1aW50MzJ4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxLCBpbnQzMngyX3QgX19wMikgewogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3Zic2xfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIChpbnQ4eDhfdClfX3AyLCAyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMngyX3QgdmJzbF9zMzIodWludDMyeDJfdCBfX3AwLCBpbnQzMngyX3QgX19wMSwgaW50MzJ4Ml90IF9fcDIpIHsKICB1aW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMSwgMCk7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdmJzbF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIChpbnQ4eDhfdClfX3JldjIsIDIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgpfX2FpIGludDY0eDFfdCB2YnNsX3M2NCh1aW50NjR4MV90IF9fcDAsIGludDY0eDFfdCBfX3AxLCBpbnQ2NHgxX3QgX19wMikgewogIGludDY0eDFfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3Zic2xfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIChpbnQ4eDhfdClfX3AyLCAzKTsKICByZXR1cm4gX19yZXQ7Cn0KI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZ4NF90IHZic2xfczE2KHVpbnQxNng0X3QgX19wMCwgaW50MTZ4NF90IF9fcDEsIGludDE2eDRfdCBfX3AyKSB7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdmJzbF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgKGludDh4OF90KV9fcDIsIDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDRfdCB2YnNsX3MxNih1aW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxLCBpbnQxNng0X3QgX19wMikgewogIHVpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGludDE2eDRfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92YnNsX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgKGludDh4OF90KV9fcmV2MiwgMSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMng0X3QgdmNhZ2VxX2YzMihmbG9hdDMyeDRfdCBfX3AwLCBmbG9hdDMyeDRfdCBfX3AxKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y2FnZXFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNTApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMng0X3QgdmNhZ2VxX2YzMihmbG9hdDMyeDRfdCBfX3AwLCBmbG9hdDMyeDRfdCBfX3AxKSB7CiAgZmxvYXQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y2FnZXFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDUwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDJfdCB2Y2FnZV9mMzIoZmxvYXQzMngyX3QgX19wMCwgZmxvYXQzMngyX3QgX19wMSkgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdmNhZ2VfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDE4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4Ml90IHZjYWdlX2YzMihmbG9hdDMyeDJfdCBfX3AwLCBmbG9hdDMyeDJfdCBfX3AxKSB7CiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y2FnZV92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDE4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDRfdCB2Y2FndHFfZjMyKGZsb2F0MzJ4NF90IF9fcDAsIGZsb2F0MzJ4NF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjYWd0cV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA1MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2Y2FndHFfZjMyKGZsb2F0MzJ4NF90IF9fcDAsIGZsb2F0MzJ4NF90IF9fcDEpIHsKICBmbG9hdDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjYWd0cV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNTApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4Ml90IHZjYWd0X2YzMihmbG9hdDMyeDJfdCBfX3AwLCBmbG9hdDMyeDJfdCBfX3AxKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y2FndF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMTgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMngyX3QgdmNhZ3RfZjMyKGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0MzJ4Ml90IF9fcDEpIHsKICBmbG9hdDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjYWd0X3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMTgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZjYWxlcV9mMzIoZmxvYXQzMng0X3QgX19wMCwgZmxvYXQzMng0X3QgX19wMSkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdmNhbGVxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDUwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4NF90IHZjYWxlcV9mMzIoZmxvYXQzMng0X3QgX19wMCwgZmxvYXQzMng0X3QgX19wMSkgewogIGZsb2F0MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdmNhbGVxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA1MCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMngyX3QgdmNhbGVfZjMyKGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0MzJ4Ml90IF9fcDEpIHsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjYWxlX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAxOCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDJfdCB2Y2FsZV9mMzIoZmxvYXQzMngyX3QgX19wMCwgZmxvYXQzMngyX3QgX19wMSkgewogIGZsb2F0MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdmNhbGVfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAxOCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMng0X3QgdmNhbHRxX2YzMihmbG9hdDMyeDRfdCBfX3AwLCBmbG9hdDMyeDRfdCBfX3AxKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y2FsdHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNTApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMng0X3QgdmNhbHRxX2YzMihmbG9hdDMyeDRfdCBfX3AwLCBmbG9hdDMyeDRfdCBfX3AxKSB7CiAgZmxvYXQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y2FsdHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDUwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDJfdCB2Y2FsdF9mMzIoZmxvYXQzMngyX3QgX19wMCwgZmxvYXQzMngyX3QgX19wMSkgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdmNhbHRfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDE4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4Ml90IHZjYWx0X2YzMihmbG9hdDMyeDJfdCBfX3AwLCBmbG9hdDMyeDJfdCBfX3AxKSB7CiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y2FsdF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDE4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4OF90IHZjZXFfcDgocG9seTh4OF90IF9fcDAsIHBvbHk4eDhfdCBfX3AxKSB7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkoX19wMCA9PSBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHg4X3QgdmNlcV9wOChwb2x5OHg4X3QgX19wMCwgcG9seTh4OF90IF9fcDEpIHsKICBwb2x5OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpKF9fcmV2MCA9PSBfX3JldjEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHgxNl90IHZjZXFxX3A4KHBvbHk4eDE2X3QgX19wMCwgcG9seTh4MTZfdCBfX3AxKSB7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHgxNl90KShfX3AwID09IF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDE2X3QgdmNlcXFfcDgocG9seTh4MTZfdCBfX3AwLCBwb2x5OHgxNl90IF9fcDEpIHsKICBwb2x5OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHBvbHk4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHgxNl90KShfX3JldjAgPT0gX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4MTZfdCB2Y2VxcV91OCh1aW50OHgxNl90IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSkgewogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkoX19wMCA9PSBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHgxNl90IHZjZXFxX3U4KHVpbnQ4eDE2X3QgX19wMCwgdWludDh4MTZfdCBfX3AxKSB7CiAgdWludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkoX19yZXYwID09IF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMng0X3QgdmNlcXFfdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KShfX3AwID09IF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMng0X3QgdmNlcXFfdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxKSB7CiAgdWludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkoX19yZXYwID09IF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng4X3QgdmNlcXFfdTE2KHVpbnQxNng4X3QgX19wMCwgdWludDE2eDhfdCBfX3AxKSB7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KShfX3AwID09IF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng4X3QgdmNlcXFfdTE2KHVpbnQxNng4X3QgX19wMCwgdWludDE2eDhfdCBfX3AxKSB7CiAgdWludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkoX19yZXYwID09IF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDE2X3QgdmNlcXFfczgoaW50OHgxNl90IF9fcDAsIGludDh4MTZfdCBfX3AxKSB7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHgxNl90KShfX3AwID09IF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDE2X3QgdmNlcXFfczgoaW50OHgxNl90IF9fcDAsIGludDh4MTZfdCBfX3AxKSB7CiAgaW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpKF9fcmV2MCA9PSBfX3JldjEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZjZXFxX2YzMihmbG9hdDMyeDRfdCBfX3AwLCBmbG9hdDMyeDRfdCBfX3AxKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KShfX3AwID09IF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMng0X3QgdmNlcXFfZjMyKGZsb2F0MzJ4NF90IF9fcDAsIGZsb2F0MzJ4NF90IF9fcDEpIHsKICBmbG9hdDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpKF9fcmV2MCA9PSBfX3JldjEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZjZXFxX3MzMihpbnQzMng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpKF9fcDAgPT0gX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2Y2VxcV9zMzIoaW50MzJ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxKSB7CiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpKF9fcmV2MCA9PSBfX3JldjEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4OF90IHZjZXFxX3MxNihpbnQxNng4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEpIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpKF9fcDAgPT0gX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDhfdCB2Y2VxcV9zMTYoaW50MTZ4OF90IF9fcDAsIGludDE2eDhfdCBfX3AxKSB7CiAgaW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpKF9fcmV2MCA9PSBfX3JldjEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHg4X3QgdmNlcV91OCh1aW50OHg4X3QgX19wMCwgdWludDh4OF90IF9fcDEpIHsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KShfX3AwID09IF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDhfdCB2Y2VxX3U4KHVpbnQ4eDhfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIHVpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkoX19yZXYwID09IF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMngyX3QgdmNlcV91MzIodWludDMyeDJfdCBfX3AwLCB1aW50MzJ4Ml90IF9fcDEpIHsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMngyX3QpKF9fcDAgPT0gX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDJfdCB2Y2VxX3UzMih1aW50MzJ4Ml90IF9fcDAsIHVpbnQzMngyX3QgX19wMSkgewogIHVpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMngyX3QpKF9fcmV2MCA9PSBfX3JldjEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4NF90IHZjZXFfdTE2KHVpbnQxNng0X3QgX19wMCwgdWludDE2eDRfdCBfX3AxKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KShfX3AwID09IF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng0X3QgdmNlcV91MTYodWludDE2eDRfdCBfX3AwLCB1aW50MTZ4NF90IF9fcDEpIHsKICB1aW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KShfX3JldjAgPT0gX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4OF90IHZjZXFfczgoaW50OHg4X3QgX19wMCwgaW50OHg4X3QgX19wMSkgewogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpKF9fcDAgPT0gX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4OF90IHZjZXFfczgoaW50OHg4X3QgX19wMCwgaW50OHg4X3QgX19wMSkgewogIGludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpKF9fcmV2MCA9PSBfX3JldjEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4Ml90IHZjZXFfZjMyKGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0MzJ4Ml90IF9fcDEpIHsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMngyX3QpKF9fcDAgPT0gX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDJfdCB2Y2VxX2YzMihmbG9hdDMyeDJfdCBfX3AwLCBmbG9hdDMyeDJfdCBfX3AxKSB7CiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KShfX3JldjAgPT0gX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDJfdCB2Y2VxX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEpIHsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMngyX3QpKF9fcDAgPT0gX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDJfdCB2Y2VxX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEpIHsKICBpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkoX19yZXYwID09IF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng0X3QgdmNlcV9zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KShfX3AwID09IF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng0X3QgdmNlcV9zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxKSB7CiAgaW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpKF9fcmV2MCA9PSBfX3JldjEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHgxNl90IHZjZ2VxX3U4KHVpbnQ4eDE2X3QgX19wMCwgdWludDh4MTZfdCBfX3AxKSB7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHgxNl90KShfX3AwID49IF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDE2X3QgdmNnZXFfdTgodWludDh4MTZfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEpIHsKICB1aW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHgxNl90KShfX3JldjAgPj0gX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDRfdCB2Y2dlcV91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpKF9fcDAgPj0gX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2Y2dlcV91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KShfX3JldjAgPj0gX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDhfdCB2Y2dlcV91MTYodWludDE2eDhfdCBfX3AwLCB1aW50MTZ4OF90IF9fcDEpIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpKF9fcDAgPj0gX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDhfdCB2Y2dlcV91MTYodWludDE2eDhfdCBfX3AwLCB1aW50MTZ4OF90IF9fcDEpIHsKICB1aW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KShfX3JldjAgPj0gX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4MTZfdCB2Y2dlcV9zOChpbnQ4eDE2X3QgX19wMCwgaW50OHgxNl90IF9fcDEpIHsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpKF9fcDAgPj0gX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4MTZfdCB2Y2dlcV9zOChpbnQ4eDE2X3QgX19wMCwgaW50OHgxNl90IF9fcDEpIHsKICBpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkoX19yZXYwID49IF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMng0X3QgdmNnZXFfZjMyKGZsb2F0MzJ4NF90IF9fcDAsIGZsb2F0MzJ4NF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpKF9fcDAgPj0gX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2Y2dlcV9mMzIoZmxvYXQzMng0X3QgX19wMCwgZmxvYXQzMng0X3QgX19wMSkgewogIGZsb2F0MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkoX19yZXYwID49IF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMng0X3QgdmNnZXFfczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkoX19wMCA+PSBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4NF90IHZjZ2VxX3MzMihpbnQzMng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEpIHsKICBpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkoX19yZXYwID49IF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng4X3QgdmNnZXFfczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkoX19wMCA+PSBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4OF90IHZjZ2VxX3MxNihpbnQxNng4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEpIHsKICBpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkoX19yZXYwID49IF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDhfdCB2Y2dlX3U4KHVpbnQ4eDhfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpKF9fcDAgPj0gX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4OF90IHZjZ2VfdTgodWludDh4OF90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxKSB7CiAgdWludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KShfX3JldjAgPj0gX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDJfdCB2Y2dlX3UzMih1aW50MzJ4Ml90IF9fcDAsIHVpbnQzMngyX3QgX19wMSkgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkoX19wMCA+PSBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4Ml90IHZjZ2VfdTMyKHVpbnQzMngyX3QgX19wMCwgdWludDMyeDJfdCBfX3AxKSB7CiAgdWludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkoX19yZXYwID49IF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng0X3QgdmNnZV91MTYodWludDE2eDRfdCBfX3AwLCB1aW50MTZ4NF90IF9fcDEpIHsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpKF9fcDAgPj0gX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDRfdCB2Y2dlX3UxNih1aW50MTZ4NF90IF9fcDAsIHVpbnQxNng0X3QgX19wMSkgewogIHVpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpKF9fcmV2MCA+PSBfX3JldjEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHg4X3QgdmNnZV9zOChpbnQ4eDhfdCBfX3AwLCBpbnQ4eDhfdCBfX3AxKSB7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkoX19wMCA+PSBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHg4X3QgdmNnZV9zOChpbnQ4eDhfdCBfX3AwLCBpbnQ4eDhfdCBfX3AxKSB7CiAgaW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkoX19yZXYwID49IF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMngyX3QgdmNnZV9mMzIoZmxvYXQzMngyX3QgX19wMCwgZmxvYXQzMngyX3QgX19wMSkgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkoX19wMCA+PSBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4Ml90IHZjZ2VfZjMyKGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0MzJ4Ml90IF9fcDEpIHsKICBmbG9hdDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMngyX3QpKF9fcmV2MCA+PSBfX3JldjEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4Ml90IHZjZ2VfczMyKGludDMyeDJfdCBfX3AwLCBpbnQzMngyX3QgX19wMSkgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkoX19wMCA+PSBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4Ml90IHZjZ2VfczMyKGludDMyeDJfdCBfX3AwLCBpbnQzMngyX3QgX19wMSkgewogIGludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KShfX3JldjAgPj0gX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDRfdCB2Y2dlX3MxNihpbnQxNng0X3QgX19wMCwgaW50MTZ4NF90IF9fcDEpIHsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpKF9fcDAgPj0gX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDRfdCB2Y2dlX3MxNihpbnQxNng0X3QgX19wMCwgaW50MTZ4NF90IF9fcDEpIHsKICBpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkoX19yZXYwID49IF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDE2X3QgdmNndHFfdTgodWludDh4MTZfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEpIHsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpKF9fcDAgPiBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHgxNl90IHZjZ3RxX3U4KHVpbnQ4eDE2X3QgX19wMCwgdWludDh4MTZfdCBfX3AxKSB7CiAgdWludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkoX19yZXYwID4gX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDRfdCB2Y2d0cV91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpKF9fcDAgPiBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4NF90IHZjZ3RxX3UzMih1aW50MzJ4NF90IF9fcDAsIHVpbnQzMng0X3QgX19wMSkgewogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpKF9fcmV2MCA+IF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng4X3QgdmNndHFfdTE2KHVpbnQxNng4X3QgX19wMCwgdWludDE2eDhfdCBfX3AxKSB7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KShfX3AwID4gX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDhfdCB2Y2d0cV91MTYodWludDE2eDhfdCBfX3AwLCB1aW50MTZ4OF90IF9fcDEpIHsKICB1aW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KShfX3JldjAgPiBfX3JldjEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHgxNl90IHZjZ3RxX3M4KGludDh4MTZfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSkgewogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkoX19wMCA+IF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDE2X3QgdmNndHFfczgoaW50OHgxNl90IF9fcDAsIGludDh4MTZfdCBfX3AxKSB7CiAgaW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpKF9fcmV2MCA+IF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMng0X3QgdmNndHFfZjMyKGZsb2F0MzJ4NF90IF9fcDAsIGZsb2F0MzJ4NF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpKF9fcDAgPiBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4NF90IHZjZ3RxX2YzMihmbG9hdDMyeDRfdCBfX3AwLCBmbG9hdDMyeDRfdCBfX3AxKSB7CiAgZmxvYXQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KShfX3JldjAgPiBfX3JldjEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZjZ3RxX3MzMihpbnQzMng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpKF9fcDAgPiBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4NF90IHZjZ3RxX3MzMihpbnQzMng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEpIHsKICBpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkoX19yZXYwID4gX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDhfdCB2Y2d0cV9zMTYoaW50MTZ4OF90IF9fcDAsIGludDE2eDhfdCBfX3AxKSB7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KShfX3AwID4gX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDhfdCB2Y2d0cV9zMTYoaW50MTZ4OF90IF9fcDAsIGludDE2eDhfdCBfX3AxKSB7CiAgaW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpKF9fcmV2MCA+IF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDhfdCB2Y2d0X3U4KHVpbnQ4eDhfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpKF9fcDAgPiBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHg4X3QgdmNndF91OCh1aW50OHg4X3QgX19wMCwgdWludDh4OF90IF9fcDEpIHsKICB1aW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpKF9fcmV2MCA+IF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMngyX3QgdmNndF91MzIodWludDMyeDJfdCBfX3AwLCB1aW50MzJ4Ml90IF9fcDEpIHsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMngyX3QpKF9fcDAgPiBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4Ml90IHZjZ3RfdTMyKHVpbnQzMngyX3QgX19wMCwgdWludDMyeDJfdCBfX3AxKSB7CiAgdWludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkoX19yZXYwID4gX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDRfdCB2Y2d0X3UxNih1aW50MTZ4NF90IF9fcDAsIHVpbnQxNng0X3QgX19wMSkgewogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkoX19wMCA+IF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng0X3QgdmNndF91MTYodWludDE2eDRfdCBfX3AwLCB1aW50MTZ4NF90IF9fcDEpIHsKICB1aW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KShfX3JldjAgPiBfX3JldjEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHg4X3QgdmNndF9zOChpbnQ4eDhfdCBfX3AwLCBpbnQ4eDhfdCBfX3AxKSB7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkoX19wMCA+IF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDhfdCB2Y2d0X3M4KGludDh4OF90IF9fcDAsIGludDh4OF90IF9fcDEpIHsKICBpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KShfX3JldjAgPiBfX3JldjEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4Ml90IHZjZ3RfZjMyKGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0MzJ4Ml90IF9fcDEpIHsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMngyX3QpKF9fcDAgPiBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4Ml90IHZjZ3RfZjMyKGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0MzJ4Ml90IF9fcDEpIHsKICBmbG9hdDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMngyX3QpKF9fcmV2MCA+IF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMngyX3QgdmNndF9zMzIoaW50MzJ4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KShfX3AwID4gX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDJfdCB2Y2d0X3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEpIHsKICBpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkoX19yZXYwID4gX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDRfdCB2Y2d0X3MxNihpbnQxNng0X3QgX19wMCwgaW50MTZ4NF90IF9fcDEpIHsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpKF9fcDAgPiBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4NF90IHZjZ3RfczE2KGludDE2eDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSkgewogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KShfX3JldjAgPiBfX3JldjEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHgxNl90IHZjbGVxX3U4KHVpbnQ4eDE2X3QgX19wMCwgdWludDh4MTZfdCBfX3AxKSB7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHgxNl90KShfX3AwIDw9IF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDE2X3QgdmNsZXFfdTgodWludDh4MTZfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEpIHsKICB1aW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHgxNl90KShfX3JldjAgPD0gX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDRfdCB2Y2xlcV91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpKF9fcDAgPD0gX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2Y2xlcV91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KShfX3JldjAgPD0gX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDhfdCB2Y2xlcV91MTYodWludDE2eDhfdCBfX3AwLCB1aW50MTZ4OF90IF9fcDEpIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpKF9fcDAgPD0gX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDhfdCB2Y2xlcV91MTYodWludDE2eDhfdCBfX3AwLCB1aW50MTZ4OF90IF9fcDEpIHsKICB1aW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KShfX3JldjAgPD0gX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4MTZfdCB2Y2xlcV9zOChpbnQ4eDE2X3QgX19wMCwgaW50OHgxNl90IF9fcDEpIHsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpKF9fcDAgPD0gX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4MTZfdCB2Y2xlcV9zOChpbnQ4eDE2X3QgX19wMCwgaW50OHgxNl90IF9fcDEpIHsKICBpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkoX19yZXYwIDw9IF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMng0X3QgdmNsZXFfZjMyKGZsb2F0MzJ4NF90IF9fcDAsIGZsb2F0MzJ4NF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpKF9fcDAgPD0gX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2Y2xlcV9mMzIoZmxvYXQzMng0X3QgX19wMCwgZmxvYXQzMng0X3QgX19wMSkgewogIGZsb2F0MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkoX19yZXYwIDw9IF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMng0X3QgdmNsZXFfczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkoX19wMCA8PSBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4NF90IHZjbGVxX3MzMihpbnQzMng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEpIHsKICBpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkoX19yZXYwIDw9IF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng4X3QgdmNsZXFfczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkoX19wMCA8PSBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4OF90IHZjbGVxX3MxNihpbnQxNng4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEpIHsKICBpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkoX19yZXYwIDw9IF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDhfdCB2Y2xlX3U4KHVpbnQ4eDhfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpKF9fcDAgPD0gX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4OF90IHZjbGVfdTgodWludDh4OF90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxKSB7CiAgdWludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KShfX3JldjAgPD0gX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDJfdCB2Y2xlX3UzMih1aW50MzJ4Ml90IF9fcDAsIHVpbnQzMngyX3QgX19wMSkgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkoX19wMCA8PSBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4Ml90IHZjbGVfdTMyKHVpbnQzMngyX3QgX19wMCwgdWludDMyeDJfdCBfX3AxKSB7CiAgdWludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkoX19yZXYwIDw9IF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng0X3QgdmNsZV91MTYodWludDE2eDRfdCBfX3AwLCB1aW50MTZ4NF90IF9fcDEpIHsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpKF9fcDAgPD0gX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDRfdCB2Y2xlX3UxNih1aW50MTZ4NF90IF9fcDAsIHVpbnQxNng0X3QgX19wMSkgewogIHVpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpKF9fcmV2MCA8PSBfX3JldjEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHg4X3QgdmNsZV9zOChpbnQ4eDhfdCBfX3AwLCBpbnQ4eDhfdCBfX3AxKSB7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkoX19wMCA8PSBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHg4X3QgdmNsZV9zOChpbnQ4eDhfdCBfX3AwLCBpbnQ4eDhfdCBfX3AxKSB7CiAgaW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkoX19yZXYwIDw9IF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMngyX3QgdmNsZV9mMzIoZmxvYXQzMngyX3QgX19wMCwgZmxvYXQzMngyX3QgX19wMSkgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkoX19wMCA8PSBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4Ml90IHZjbGVfZjMyKGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0MzJ4Ml90IF9fcDEpIHsKICBmbG9hdDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMngyX3QpKF9fcmV2MCA8PSBfX3JldjEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4Ml90IHZjbGVfczMyKGludDMyeDJfdCBfX3AwLCBpbnQzMngyX3QgX19wMSkgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkoX19wMCA8PSBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4Ml90IHZjbGVfczMyKGludDMyeDJfdCBfX3AwLCBpbnQzMngyX3QgX19wMSkgewogIGludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KShfX3JldjAgPD0gX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDRfdCB2Y2xlX3MxNihpbnQxNng0X3QgX19wMCwgaW50MTZ4NF90IF9fcDEpIHsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpKF9fcDAgPD0gX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDRfdCB2Y2xlX3MxNihpbnQxNng0X3QgX19wMCwgaW50MTZ4NF90IF9fcDEpIHsKICBpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkoX19yZXYwIDw9IF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4MTZfdCB2Y2xzcV91OCh1aW50OHgxNl90IF9fcDApIHsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92Y2xzcV92KChpbnQ4eDE2X3QpX19wMCwgMzIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4MTZfdCB2Y2xzcV91OCh1aW50OHgxNl90IF9fcDApIHsKICB1aW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbHNxX3YoKGludDh4MTZfdClfX3JldjAsIDMyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4NF90IHZjbHNxX3UzMih1aW50MzJ4NF90IF9fcDApIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y2xzcV92KChpbnQ4eDE2X3QpX19wMCwgMzQpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDRfdCB2Y2xzcV91MzIodWludDMyeDRfdCBfX3AwKSB7CiAgdWludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y2xzcV92KChpbnQ4eDE2X3QpX19yZXYwLCAzNCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDhfdCB2Y2xzcV91MTYodWludDE2eDhfdCBfX3AwKSB7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDhfdCkgX19idWlsdGluX25lb25fdmNsc3FfdigoaW50OHgxNl90KV9fcDAsIDMzKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng4X3QgdmNsc3FfdTE2KHVpbnQxNng4X3QgX19wMCkgewogIHVpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDhfdCkgX19idWlsdGluX25lb25fdmNsc3FfdigoaW50OHgxNl90KV9fcmV2MCwgMzMpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDE2X3QgdmNsc3FfczgoaW50OHgxNl90IF9fcDApIHsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92Y2xzcV92KChpbnQ4eDE2X3QpX19wMCwgMzIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4MTZfdCB2Y2xzcV9zOChpbnQ4eDE2X3QgX19wMCkgewogIGludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92Y2xzcV92KChpbnQ4eDE2X3QpX19yZXYwLCAzMik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDRfdCB2Y2xzcV9zMzIoaW50MzJ4NF90IF9fcDApIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y2xzcV92KChpbnQ4eDE2X3QpX19wMCwgMzQpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDRfdCB2Y2xzcV9zMzIoaW50MzJ4NF90IF9fcDApIHsKICBpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkgX19idWlsdGluX25lb25fdmNsc3FfdigoaW50OHgxNl90KV9fcmV2MCwgMzQpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng4X3QgdmNsc3FfczE2KGludDE2eDhfdCBfX3AwKSB7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDhfdCkgX19idWlsdGluX25lb25fdmNsc3FfdigoaW50OHgxNl90KV9fcDAsIDMzKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng4X3QgdmNsc3FfczE2KGludDE2eDhfdCBfX3AwKSB7CiAgaW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbHNxX3YoKGludDh4MTZfdClfX3JldjAsIDMzKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHg4X3QgdmNsc191OCh1aW50OHg4X3QgX19wMCkgewogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92Y2xzX3YoKGludDh4OF90KV9fcDAsIDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4OF90IHZjbHNfdTgodWludDh4OF90IF9fcDApIHsKICB1aW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbHNfdigoaW50OHg4X3QpX19yZXYwLCAwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4Ml90IHZjbHNfdTMyKHVpbnQzMngyX3QgX19wMCkgewogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjbHNfdigoaW50OHg4X3QpX19wMCwgMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4Ml90IHZjbHNfdTMyKHVpbnQzMngyX3QgX19wMCkgewogIHVpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdmNsc192KChpbnQ4eDhfdClfX3JldjAsIDIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng0X3QgdmNsc191MTYodWludDE2eDRfdCBfX3AwKSB7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdmNsc192KChpbnQ4eDhfdClfX3AwLCAxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng0X3QgdmNsc191MTYodWludDE2eDRfdCBfX3AwKSB7CiAgdWludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y2xzX3YoKGludDh4OF90KV9fcmV2MCwgMSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4OF90IHZjbHNfczgoaW50OHg4X3QgX19wMCkgewogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92Y2xzX3YoKGludDh4OF90KV9fcDAsIDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4OF90IHZjbHNfczgoaW50OHg4X3QgX19wMCkgewogIGludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92Y2xzX3YoKGludDh4OF90KV9fcmV2MCwgMCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDJfdCB2Y2xzX3MzMihpbnQzMngyX3QgX19wMCkgewogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjbHNfdigoaW50OHg4X3QpX19wMCwgMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4Ml90IHZjbHNfczMyKGludDMyeDJfdCBfX3AwKSB7CiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjbHNfdigoaW50OHg4X3QpX19yZXYwLCAyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZ4NF90IHZjbHNfczE2KGludDE2eDRfdCBfX3AwKSB7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdmNsc192KChpbnQ4eDhfdClfX3AwLCAxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng0X3QgdmNsc19zMTYoaW50MTZ4NF90IF9fcDApIHsKICBpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdmNsc192KChpbnQ4eDhfdClfX3JldjAsIDEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHgxNl90IHZjbHRxX3U4KHVpbnQ4eDE2X3QgX19wMCwgdWludDh4MTZfdCBfX3AxKSB7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHgxNl90KShfX3AwIDwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4MTZfdCB2Y2x0cV91OCh1aW50OHgxNl90IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSkgewogIHVpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpKF9fcmV2MCA8IF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMng0X3QgdmNsdHFfdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KShfX3AwIDwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2Y2x0cV91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KShfX3JldjAgPCBfX3JldjEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4OF90IHZjbHRxX3UxNih1aW50MTZ4OF90IF9fcDAsIHVpbnQxNng4X3QgX19wMSkgewogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkoX19wMCA8IF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng4X3QgdmNsdHFfdTE2KHVpbnQxNng4X3QgX19wMCwgdWludDE2eDhfdCBfX3AxKSB7CiAgdWludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkoX19yZXYwIDwgX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4MTZfdCB2Y2x0cV9zOChpbnQ4eDE2X3QgX19wMCwgaW50OHgxNl90IF9fcDEpIHsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpKF9fcDAgPCBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHgxNl90IHZjbHRxX3M4KGludDh4MTZfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSkgewogIGludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHgxNl90KShfX3JldjAgPCBfX3JldjEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZjbHRxX2YzMihmbG9hdDMyeDRfdCBfX3AwLCBmbG9hdDMyeDRfdCBfX3AxKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KShfX3AwIDwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2Y2x0cV9mMzIoZmxvYXQzMng0X3QgX19wMCwgZmxvYXQzMng0X3QgX19wMSkgewogIGZsb2F0MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkoX19yZXYwIDwgX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDRfdCB2Y2x0cV9zMzIoaW50MzJ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KShfX3AwIDwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2Y2x0cV9zMzIoaW50MzJ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxKSB7CiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpKF9fcmV2MCA8IF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng4X3QgdmNsdHFfczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkoX19wMCA8IF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng4X3QgdmNsdHFfczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KShfX3JldjAgPCBfX3JldjEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHg4X3QgdmNsdF91OCh1aW50OHg4X3QgX19wMCwgdWludDh4OF90IF9fcDEpIHsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KShfX3AwIDwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4OF90IHZjbHRfdTgodWludDh4OF90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxKSB7CiAgdWludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KShfX3JldjAgPCBfX3JldjEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4Ml90IHZjbHRfdTMyKHVpbnQzMngyX3QgX19wMCwgdWludDMyeDJfdCBfX3AxKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KShfX3AwIDwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDJfdCB2Y2x0X3UzMih1aW50MzJ4Ml90IF9fcDAsIHVpbnQzMngyX3QgX19wMSkgewogIHVpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMngyX3QpKF9fcmV2MCA8IF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng0X3QgdmNsdF91MTYodWludDE2eDRfdCBfX3AwLCB1aW50MTZ4NF90IF9fcDEpIHsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpKF9fcDAgPCBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4NF90IHZjbHRfdTE2KHVpbnQxNng0X3QgX19wMCwgdWludDE2eDRfdCBfX3AxKSB7CiAgdWludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkoX19yZXYwIDwgX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4OF90IHZjbHRfczgoaW50OHg4X3QgX19wMCwgaW50OHg4X3QgX19wMSkgewogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpKF9fcDAgPCBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHg4X3QgdmNsdF9zOChpbnQ4eDhfdCBfX3AwLCBpbnQ4eDhfdCBfX3AxKSB7CiAgaW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkoX19yZXYwIDwgX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDJfdCB2Y2x0X2YzMihmbG9hdDMyeDJfdCBfX3AwLCBmbG9hdDMyeDJfdCBfX3AxKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KShfX3AwIDwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDJfdCB2Y2x0X2YzMihmbG9hdDMyeDJfdCBfX3AwLCBmbG9hdDMyeDJfdCBfX3AxKSB7CiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KShfX3JldjAgPCBfX3JldjEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4Ml90IHZjbHRfczMyKGludDMyeDJfdCBfX3AwLCBpbnQzMngyX3QgX19wMSkgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkoX19wMCA8IF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMngyX3QgdmNsdF9zMzIoaW50MzJ4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxKSB7CiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMngyX3QpKF9fcmV2MCA8IF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng0X3QgdmNsdF9zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KShfX3AwIDwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDRfdCB2Y2x0X3MxNihpbnQxNng0X3QgX19wMCwgaW50MTZ4NF90IF9fcDEpIHsKICBpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkoX19yZXYwIDwgX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4MTZfdCB2Y2x6cV91OCh1aW50OHgxNl90IF9fcDApIHsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbHpxX3YoKGludDh4MTZfdClfX3AwLCA0OCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4MTZfdCB2Y2x6cV91OCh1aW50OHgxNl90IF9fcDApIHsKICB1aW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkgX19idWlsdGluX25lb25fdmNsenFfdigoaW50OHgxNl90KV9fcmV2MCwgNDgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZjbHpxX3UzMih1aW50MzJ4NF90IF9fcDApIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbHpxX3YoKGludDh4MTZfdClfX3AwLCA1MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2Y2x6cV91MzIodWludDMyeDRfdCBfX3AwKSB7CiAgdWludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbHpxX3YoKGludDh4MTZfdClfX3JldjAsIDUwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDhfdCB2Y2x6cV91MTYodWludDE2eDhfdCBfX3AwKSB7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92Y2x6cV92KChpbnQ4eDE2X3QpX19wMCwgNDkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng4X3QgdmNsenFfdTE2KHVpbnQxNng4X3QgX19wMCkgewogIHVpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92Y2x6cV92KChpbnQ4eDE2X3QpX19yZXYwLCA0OSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4MTZfdCB2Y2x6cV9zOChpbnQ4eDE2X3QgX19wMCkgewogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbHpxX3YoKGludDh4MTZfdClfX3AwLCAzMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OHgxNl90IHZjbHpxX3M4KGludDh4MTZfdCBfX3AwKSB7CiAgaW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbHpxX3YoKGludDh4MTZfdClfX3JldjAsIDMyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4NF90IHZjbHpxX3MzMihpbnQzMng0X3QgX19wMCkgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbHpxX3YoKGludDh4MTZfdClfX3AwLCAzNCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4NF90IHZjbHpxX3MzMihpbnQzMng0X3QgX19wMCkgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y2x6cV92KChpbnQ4eDE2X3QpX19yZXYwLCAzNCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDhfdCB2Y2x6cV9zMTYoaW50MTZ4OF90IF9fcDApIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92Y2x6cV92KChpbnQ4eDE2X3QpX19wMCwgMzMpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDhfdCB2Y2x6cV9zMTYoaW50MTZ4OF90IF9fcDApIHsKICBpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDhfdCkgX19idWlsdGluX25lb25fdmNsenFfdigoaW50OHgxNl90KV9fcmV2MCwgMzMpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHg4X3QgdmNsel91OCh1aW50OHg4X3QgX19wMCkgewogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbHpfdigoaW50OHg4X3QpX19wMCwgMTYpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDhfdCB2Y2x6X3U4KHVpbnQ4eDhfdCBfX3AwKSB7CiAgdWludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbHpfdigoaW50OHg4X3QpX19yZXYwLCAxNik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMngyX3QgdmNsel91MzIodWludDMyeDJfdCBfX3AwKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y2x6X3YoKGludDh4OF90KV9fcDAsIDE4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4Ml90IHZjbHpfdTMyKHVpbnQzMngyX3QgX19wMCkgewogIHVpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y2x6X3YoKGludDh4OF90KV9fcmV2MCwgMTgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4NF90IHZjbHpfdTE2KHVpbnQxNng0X3QgX19wMCkgewogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdmNsel92KChpbnQ4eDhfdClfX3AwLCAxNyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDRfdCB2Y2x6X3UxNih1aW50MTZ4NF90IF9fcDApIHsKICB1aW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdmNsel92KChpbnQ4eDhfdClfX3JldjAsIDE3KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHg4X3QgdmNsel9zOChpbnQ4eDhfdCBfX3AwKSB7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbHpfdigoaW50OHg4X3QpX19wMCwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OHg4X3QgdmNsel9zOChpbnQ4eDhfdCBfX3AwKSB7CiAgaW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbHpfdigoaW50OHg4X3QpX19yZXYwLCAwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4Ml90IHZjbHpfczMyKGludDMyeDJfdCBfX3AwKSB7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdmNsel92KChpbnQ4eDhfdClfX3AwLCAyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMngyX3QgdmNsel9zMzIoaW50MzJ4Ml90IF9fcDApIHsKICBpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdmNsel92KChpbnQ4eDhfdClfX3JldjAsIDIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng0X3QgdmNsel9zMTYoaW50MTZ4NF90IF9fcDApIHsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y2x6X3YoKGludDh4OF90KV9fcDAsIDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDRfdCB2Y2x6X3MxNihpbnQxNng0X3QgX19wMCkgewogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y2x6X3YoKGludDh4OF90KV9fcmV2MCwgMSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHBvbHk4eDhfdCB2Y250X3A4KHBvbHk4eDhfdCBfX3AwKSB7CiAgcG9seTh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk4eDhfdCkgX19idWlsdGluX25lb25fdmNudF92KChpbnQ4eDhfdClfX3AwLCA0KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBwb2x5OHg4X3QgdmNudF9wOChwb2x5OHg4X3QgX19wMCkgewogIHBvbHk4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBwb2x5OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTh4OF90KSBfX2J1aWx0aW5fbmVvbl92Y250X3YoKGludDh4OF90KV9fcmV2MCwgNCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHBvbHk4eDE2X3QgdmNudHFfcDgocG9seTh4MTZfdCBfX3AwKSB7CiAgcG9seTh4MTZfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92Y250cV92KChpbnQ4eDE2X3QpX19wMCwgMzYpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHBvbHk4eDE2X3QgdmNudHFfcDgocG9seTh4MTZfdCBfX3AwKSB7CiAgcG9seTh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBwb2x5OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbnRxX3YoKGludDh4MTZfdClfX3JldjAsIDM2KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4MTZfdCB2Y250cV91OCh1aW50OHgxNl90IF9fcDApIHsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbnRxX3YoKGludDh4MTZfdClfX3AwLCA0OCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4MTZfdCB2Y250cV91OCh1aW50OHgxNl90IF9fcDApIHsKICB1aW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkgX19idWlsdGluX25lb25fdmNudHFfdigoaW50OHgxNl90KV9fcmV2MCwgNDgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDE2X3QgdmNudHFfczgoaW50OHgxNl90IF9fcDApIHsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92Y250cV92KChpbnQ4eDE2X3QpX19wMCwgMzIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4MTZfdCB2Y250cV9zOChpbnQ4eDE2X3QgX19wMCkgewogIGludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92Y250cV92KChpbnQ4eDE2X3QpX19yZXYwLCAzMik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDhfdCB2Y250X3U4KHVpbnQ4eDhfdCBfX3AwKSB7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdmNudF92KChpbnQ4eDhfdClfX3AwLCAxNik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4OF90IHZjbnRfdTgodWludDh4OF90IF9fcDApIHsKICB1aW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdmNudF92KChpbnQ4eDhfdClfX3JldjAsIDE2KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHg4X3QgdmNudF9zOChpbnQ4eDhfdCBfX3AwKSB7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbnRfdigoaW50OHg4X3QpX19wMCwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OHg4X3QgdmNudF9zOChpbnQ4eDhfdCBfX3AwKSB7CiAgaW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbnRfdigoaW50OHg4X3QpX19yZXYwLCAwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgcG9seTh4MTZfdCB2Y29tYmluZV9wOChwb2x5OHg4X3QgX19wMCwgcG9seTh4OF90IF9fcDEpIHsKICBwb2x5OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgcG9seTh4MTZfdCB2Y29tYmluZV9wOChwb2x5OHg4X3QgX19wMCwgcG9seTh4OF90IF9fcDEpIHsKICBwb2x5OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHBvbHk4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHBvbHkxNng4X3QgdmNvbWJpbmVfcDE2KHBvbHkxNng0X3QgX19wMCwgcG9seTE2eDRfdCBfX3AxKSB7CiAgcG9seTE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHBvbHkxNng4X3QgdmNvbWJpbmVfcDE2KHBvbHkxNng0X3QgX19wMCwgcG9seTE2eDRfdCBfX3AxKSB7CiAgcG9seTE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBwb2x5MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHBvbHkxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMCwgMSwgMiwgMywgNCwgNSwgNiwgNyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDE2X3QgdmNvbWJpbmVfdTgodWludDh4OF90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxKSB7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDE2X3QgdmNvbWJpbmVfdTgodWludDh4OF90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxKSB7CiAgdWludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50OHgxNl90IF9fbm9zd2FwX3Zjb21iaW5lX3U4KHVpbnQ4eDhfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1KTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZjb21iaW5lX3UzMih1aW50MzJ4Ml90IF9fcDAsIHVpbnQzMngyX3QgX19wMSkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAwLCAxLCAyLCAzKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4NF90IHZjb21iaW5lX3UzMih1aW50MzJ4Ml90IF9fcDAsIHVpbnQzMngyX3QgX19wMSkgewogIHVpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDAsIDEsIDIsIDMpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MzJ4NF90IF9fbm9zd2FwX3Zjb21iaW5lX3UzMih1aW50MzJ4Ml90IF9fcDAsIHVpbnQzMngyX3QgX19wMSkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAwLCAxLCAyLCAzKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50NjR4Ml90IHZjb21iaW5lX3U2NCh1aW50NjR4MV90IF9fcDAsIHVpbnQ2NHgxX3QgX19wMSkgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAwLCAxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50NjR4Ml90IHZjb21iaW5lX3U2NCh1aW50NjR4MV90IF9fcDAsIHVpbnQ2NHgxX3QgX19wMSkgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAwLCAxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDhfdCB2Y29tYmluZV91MTYodWludDE2eDRfdCBfX3AwLCB1aW50MTZ4NF90IF9fcDEpIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMCwgMSwgMiwgMywgNCwgNSwgNiwgNyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDhfdCB2Y29tYmluZV91MTYodWludDE2eDRfdCBfX3AwLCB1aW50MTZ4NF90IF9fcDEpIHsKICB1aW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDE2eDhfdCBfX25vc3dhcF92Y29tYmluZV91MTYodWludDE2eDRfdCBfX3AwLCB1aW50MTZ4NF90IF9fcDEpIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMCwgMSwgMiwgMywgNCwgNSwgNiwgNyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHgxNl90IHZjb21iaW5lX3M4KGludDh4OF90IF9fcDAsIGludDh4OF90IF9fcDEpIHsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ4eDE2X3QgdmNvbWJpbmVfczgoaW50OHg4X3QgX19wMCwgaW50OHg4X3QgX19wMSkgewogIGludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50OHgxNl90IF9fbm9zd2FwX3Zjb21iaW5lX3M4KGludDh4OF90IF9fcDAsIGludDh4OF90IF9fcDEpIHsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1KTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDRfdCB2Y29tYmluZV9mMzIoZmxvYXQzMngyX3QgX19wMCwgZmxvYXQzMngyX3QgX19wMSkgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMCwgMSwgMiwgMyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMng0X3QgdmNvbWJpbmVfZjMyKGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0MzJ4Ml90IF9fcDEpIHsKICBmbG9hdDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAwLCAxLCAyLCAzKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQzMng0X3QgX19ub3N3YXBfdmNvbWJpbmVfZjMyKGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0MzJ4Ml90IF9fcDEpIHsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDAsIDEsIDIsIDMpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MTZ4OF90IHZjb21iaW5lX2YxNihmbG9hdDE2eDRfdCBfX3AwLCBmbG9hdDE2eDRfdCBfX3AxKSB7CiAgZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDE2eDhfdCB2Y29tYmluZV9mMTYoZmxvYXQxNng0X3QgX19wMCwgZmxvYXQxNng0X3QgX19wMSkgewogIGZsb2F0MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDE2eDhfdCBfX25vc3dhcF92Y29tYmluZV9mMTYoZmxvYXQxNng0X3QgX19wMCwgZmxvYXQxNng0X3QgX19wMSkgewogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMCwgMSwgMiwgMywgNCwgNSwgNiwgNyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4NF90IHZjb21iaW5lX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEpIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAwLCAxLCAyLCAzKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMng0X3QgdmNvbWJpbmVfczMyKGludDMyeDJfdCBfX3AwLCBpbnQzMngyX3QgX19wMSkgewogIGludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDAsIDEsIDIsIDMpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQzMng0X3QgX19ub3N3YXBfdmNvbWJpbmVfczMyKGludDMyeDJfdCBfX3AwLCBpbnQzMngyX3QgX19wMSkgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDAsIDEsIDIsIDMpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDY0eDJfdCB2Y29tYmluZV9zNjQoaW50NjR4MV90IF9fcDAsIGludDY0eDFfdCBfX3AxKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMCwgMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50NjR4Ml90IHZjb21iaW5lX3M2NChpbnQ2NHgxX3QgX19wMCwgaW50NjR4MV90IF9fcDEpIHsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAwLCAxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZ4OF90IHZjb21iaW5lX3MxNihpbnQxNng0X3QgX19wMCwgaW50MTZ4NF90IF9fcDEpIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng4X3QgdmNvbWJpbmVfczE2KGludDE2eDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSkgewogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQxNng4X3QgX19ub3N3YXBfdmNvbWJpbmVfczE2KGludDE2eDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNkZWZpbmUgdmNyZWF0ZV9wOChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHg4X3QgX19yZXQ7IFwKICB1aW50NjRfdCBfX3Byb21vdGUgPSBfX3AwOyBcCiAgX19yZXQgPSAocG9seTh4OF90KShfX3Byb21vdGUpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2Y3JlYXRlX3AxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4NF90IF9fcmV0OyBcCiAgdWludDY0X3QgX19wcm9tb3RlID0gX19wMDsgXAogIF9fcmV0ID0gKHBvbHkxNng0X3QpKF9fcHJvbW90ZSk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZjcmVhdGVfdTgoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4OF90IF9fcmV0OyBcCiAgdWludDY0X3QgX19wcm9tb3RlID0gX19wMDsgXAogIF9fcmV0ID0gKHVpbnQ4eDhfdCkoX19wcm9tb3RlKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdmNyZWF0ZV91MzIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDJfdCBfX3JldDsgXAogIHVpbnQ2NF90IF9fcHJvbW90ZSA9IF9fcDA7IFwKICBfX3JldCA9ICh1aW50MzJ4Ml90KShfX3Byb21vdGUpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2Y3JlYXRlX3U2NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4MV90IF9fcmV0OyBcCiAgdWludDY0X3QgX19wcm9tb3RlID0gX19wMDsgXAogIF9fcmV0ID0gKHVpbnQ2NHgxX3QpKF9fcHJvbW90ZSk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZjcmVhdGVfdTE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng0X3QgX19yZXQ7IFwKICB1aW50NjRfdCBfX3Byb21vdGUgPSBfX3AwOyBcCiAgX19yZXQgPSAodWludDE2eDRfdCkoX19wcm9tb3RlKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdmNyZWF0ZV9zOChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDhfdCBfX3JldDsgXAogIHVpbnQ2NF90IF9fcHJvbW90ZSA9IF9fcDA7IFwKICBfX3JldCA9IChpbnQ4eDhfdCkoX19wcm9tb3RlKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdmNyZWF0ZV9mMzIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMngyX3QgX19yZXQ7IFwKICB1aW50NjRfdCBfX3Byb21vdGUgPSBfX3AwOyBcCiAgX19yZXQgPSAoZmxvYXQzMngyX3QpKF9fcHJvbW90ZSk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZjcmVhdGVfZjE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4NF90IF9fcmV0OyBcCiAgdWludDY0X3QgX19wcm9tb3RlID0gX19wMDsgXAogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KShfX3Byb21vdGUpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2Y3JlYXRlX3MzMihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMngyX3QgX19yZXQ7IFwKICB1aW50NjRfdCBfX3Byb21vdGUgPSBfX3AwOyBcCiAgX19yZXQgPSAoaW50MzJ4Ml90KShfX3Byb21vdGUpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2Y3JlYXRlX3M2NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgxX3QgX19yZXQ7IFwKICB1aW50NjRfdCBfX3Byb21vdGUgPSBfX3AwOyBcCiAgX19yZXQgPSAoaW50NjR4MV90KShfX3Byb21vdGUpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2Y3JlYXRlX3MxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng0X3QgX19yZXQ7IFwKICB1aW50NjRfdCBfX3Byb21vdGUgPSBfX3AwOyBcCiAgX19yZXQgPSAoaW50MTZ4NF90KShfX3Byb21vdGUpOyBcCiAgX19yZXQ7IFwKfSkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMng0X3QgdmN2dHFfZjMyX3UzMih1aW50MzJ4NF90IF9fcDApIHsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdmN2dHFfZjMyX3YoKGludDh4MTZfdClfX3AwLCA1MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMng0X3QgdmN2dHFfZjMyX3UzMih1aW50MzJ4NF90IF9fcDApIHsKICB1aW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0cV9mMzJfdigoaW50OHgxNl90KV9fcmV2MCwgNTApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDRfdCB2Y3Z0cV9mMzJfczMyKGludDMyeDRfdCBfX3AwKSB7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRxX2YzMl92KChpbnQ4eDE2X3QpX19wMCwgMzQpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4NF90IHZjdnRxX2YzMl9zMzIoaW50MzJ4NF90IF9fcDApIHsKICBpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRxX2YzMl92KChpbnQ4eDE2X3QpX19yZXYwLCAzNCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4Ml90IHZjdnRfZjMyX3UzMih1aW50MzJ4Ml90IF9fcDApIHsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdmN2dF9mMzJfdigoaW50OHg4X3QpX19wMCwgMTgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4Ml90IHZjdnRfZjMyX3UzMih1aW50MzJ4Ml90IF9fcDApIHsKICB1aW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0X2YzMl92KChpbnQ4eDhfdClfX3JldjAsIDE4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMngyX3QgdmN2dF9mMzJfczMyKGludDMyeDJfdCBfX3AwKSB7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRfZjMyX3YoKGludDh4OF90KV9fcDAsIDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4Ml90IHZjdnRfZjMyX3MzMihpbnQzMngyX3QgX19wMCkgewogIGludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdmN2dF9mMzJfdigoaW50OHg4X3QpX19yZXYwLCAyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmN2dHFfbl9mMzJfdTMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDMyeDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0cV9uX2YzMl92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgNTApOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Y3Z0cV9uX2YzMl91MzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDRfdCBfX3MwID0gX19wMDsgXAogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDMyeDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0cV9uX2YzMl92KChpbnQ4eDE2X3QpX19yZXYwLCBfX3AxLCA1MCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZjdnRxX25fZjMyX3MzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDMyeDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0cV9uX2YzMl92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgMzQpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Y3Z0cV9uX2YzMl9zMzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczAgPSBfX3AwOyBcCiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQzMng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdmN2dHFfbl9mMzJfdigoaW50OHgxNl90KV9fcmV2MCwgX19wMSwgMzQpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Y3Z0X25fZjMyX3UzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4Ml90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQzMngyX3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdmN2dF9uX2YzMl92KChpbnQ4eDhfdClfX3MwLCBfX3AxLCAxOCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZjdnRfbl9mMzJfdTMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMngyX3QgX19zMCA9IF9fcDA7IFwKICB1aW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDEsIDApOyBcCiAgZmxvYXQzMngyX3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdmN2dF9uX2YzMl92KChpbnQ4eDhfdClfX3JldjAsIF9fcDEsIDE4KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmN2dF9uX2YzMl9zMzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Ml90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQzMngyX3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdmN2dF9uX2YzMl92KChpbnQ4eDhfdClfX3MwLCBfX3AxLCAyKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmN2dF9uX2YzMl9zMzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Ml90IF9fczAgPSBfX3AwOyBcCiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDEsIDApOyBcCiAgZmxvYXQzMngyX3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdmN2dF9uX2YzMl92KChpbnQ4eDhfdClfX3JldjAsIF9fcDEsIDIpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Y3Z0cV9uX3MzMl9mMzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQzMng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRxX25fczMyX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCAzNCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZjdnRxX25fczMyX2YzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDRfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDMsIDIsIDEsIDApOyBcCiAgaW50MzJ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0cV9uX3MzMl92KChpbnQ4eDE2X3QpX19yZXYwLCBfX3AxLCAzNCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZjdnRfbl9zMzJfZjMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4Ml90IF9fczAgPSBfX3AwOyBcCiAgaW50MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0X25fczMyX3YoKGludDh4OF90KV9fczAsIF9fcDEsIDIpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Y3Z0X25fczMyX2YzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDEsIDApOyBcCiAgaW50MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0X25fczMyX3YoKGludDh4OF90KV9fcmV2MCwgX19wMSwgMik7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZjdnRxX25fdTMyX2YzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDRfdCBfX3MwID0gX19wMDsgXAogIHVpbnQzMng0X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0cV9uX3UzMl92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgNTApOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Y3Z0cV9uX3UzMl9mMzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAzLCAyLCAxLCAwKTsgXAogIHVpbnQzMng0X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0cV9uX3UzMl92KChpbnQ4eDE2X3QpX19yZXYwLCBfX3AxLCA1MCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZjdnRfbl91MzJfZjMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4Ml90IF9fczAgPSBfX3AwOyBcCiAgdWludDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRfbl91MzJfdigoaW50OHg4X3QpX19zMCwgX19wMSwgMTgpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Y3Z0X25fdTMyX2YzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDEsIDApOyBcCiAgdWludDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRfbl91MzJfdigoaW50OHg4X3QpX19yZXYwLCBfX3AxLCAxOCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDRfdCB2Y3Z0cV9zMzJfZjMyKGZsb2F0MzJ4NF90IF9fcDApIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0cV9zMzJfdigoaW50OHgxNl90KV9fcDAsIDM0KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMng0X3QgdmN2dHFfczMyX2YzMihmbG9hdDMyeDRfdCBfX3AwKSB7CiAgZmxvYXQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkgX19idWlsdGluX25lb25fdmN2dHFfczMyX3YoKGludDh4MTZfdClfX3JldjAsIDM0KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4Ml90IHZjdnRfczMyX2YzMihmbG9hdDMyeDJfdCBfX3AwKSB7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdmN2dF9zMzJfdigoaW50OHg4X3QpX19wMCwgMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4Ml90IHZjdnRfczMyX2YzMihmbG9hdDMyeDJfdCBfX3AwKSB7CiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdmN2dF9zMzJfdigoaW50OHg4X3QpX19yZXYwLCAyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDRfdCB2Y3Z0cV91MzJfZjMyKGZsb2F0MzJ4NF90IF9fcDApIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRxX3UzMl92KChpbnQ4eDE2X3QpX19wMCwgNTApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMng0X3QgdmN2dHFfdTMyX2YzMihmbG9hdDMyeDRfdCBfX3AwKSB7CiAgZmxvYXQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0cV91MzJfdigoaW50OHgxNl90KV9fcmV2MCwgNTApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4Ml90IHZjdnRfdTMyX2YzMihmbG9hdDMyeDJfdCBfX3AwKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0X3UzMl92KChpbnQ4eDhfdClfX3AwLCAxOCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDJfdCB2Y3Z0X3UzMl9mMzIoZmxvYXQzMngyX3QgX19wMCkgewogIGZsb2F0MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdmN2dF91MzJfdigoaW50OHg4X3QpX19yZXYwLCAxOCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZkdXBfbGFuZV9wOChfX3AwXzAsIF9fcDFfMCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4OF90IF9fczBfMCA9IF9fcDBfMDsgXAogIHBvbHk4eDhfdCBfX3JldF8wOyBcCiAgX19yZXRfMCA9IHNwbGF0X2xhbmVfcDgoX19zMF8wLCBfX3AxXzApOyBcCiAgX19yZXRfMDsgXAp9KQojZWxzZQojZGVmaW5lIHZkdXBfbGFuZV9wOChfX3AwXzEsIF9fcDFfMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4OF90IF9fczBfMSA9IF9fcDBfMTsgXAogIHBvbHk4eDhfdCBfX3JldjBfMTsgIF9fcmV2MF8xID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8xLCBfX3MwXzEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgcG9seTh4OF90IF9fcmV0XzE7IFwKICBfX3JldF8xID0gX19ub3N3YXBfc3BsYXRfbGFuZV9wOChfX3JldjBfMSwgX19wMV8xKTsgXAogIF9fcmV0XzEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8xLCBfX3JldF8xLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzE7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2ZHVwX2xhbmVfcDE2KF9fcDBfMiwgX19wMV8yKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4NF90IF9fczBfMiA9IF9fcDBfMjsgXAogIHBvbHkxNng0X3QgX19yZXRfMjsgXAogIF9fcmV0XzIgPSBzcGxhdF9sYW5lX3AxNihfX3MwXzIsIF9fcDFfMik7IFwKICBfX3JldF8yOyBcCn0pCiNlbHNlCiNkZWZpbmUgdmR1cF9sYW5lX3AxNihfX3AwXzMsIF9fcDFfMykgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDRfdCBfX3MwXzMgPSBfX3AwXzM7IFwKICBwb2x5MTZ4NF90IF9fcmV2MF8zOyAgX19yZXYwXzMgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzMsIF9fczBfMywgMywgMiwgMSwgMCk7IFwKICBwb2x5MTZ4NF90IF9fcmV0XzM7IFwKICBfX3JldF8zID0gX19ub3N3YXBfc3BsYXRfbGFuZV9wMTYoX19yZXYwXzMsIF9fcDFfMyk7IFwKICBfX3JldF8zID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMywgX19yZXRfMywgMywgMiwgMSwgMCk7IFwKICBfX3JldF8zOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmR1cHFfbGFuZV9wOChfX3AwXzQsIF9fcDFfNCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4OF90IF9fczBfNCA9IF9fcDBfNDsgXAogIHBvbHk4eDE2X3QgX19yZXRfNDsgXAogIF9fcmV0XzQgPSBzcGxhdHFfbGFuZV9wOChfX3MwXzQsIF9fcDFfNCk7IFwKICBfX3JldF80OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmR1cHFfbGFuZV9wOChfX3AwXzUsIF9fcDFfNSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4OF90IF9fczBfNSA9IF9fcDBfNTsgXAogIHBvbHk4eDhfdCBfX3JldjBfNTsgIF9fcmV2MF81ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF81LCBfX3MwXzUsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgcG9seTh4MTZfdCBfX3JldF81OyBcCiAgX19yZXRfNSA9IF9fbm9zd2FwX3NwbGF0cV9sYW5lX3A4KF9fcmV2MF81LCBfX3AxXzUpOyBcCiAgX19yZXRfNSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzUsIF9fcmV0XzUsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfNTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZkdXBxX2xhbmVfcDE2KF9fcDBfNiwgX19wMV82KSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4NF90IF9fczBfNiA9IF9fcDBfNjsgXAogIHBvbHkxNng4X3QgX19yZXRfNjsgXAogIF9fcmV0XzYgPSBzcGxhdHFfbGFuZV9wMTYoX19zMF82LCBfX3AxXzYpOyBcCiAgX19yZXRfNjsgXAp9KQojZWxzZQojZGVmaW5lIHZkdXBxX2xhbmVfcDE2KF9fcDBfNywgX19wMV83KSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4NF90IF9fczBfNyA9IF9fcDBfNzsgXAogIHBvbHkxNng0X3QgX19yZXYwXzc7ICBfX3JldjBfNyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNywgX19zMF83LCAzLCAyLCAxLCAwKTsgXAogIHBvbHkxNng4X3QgX19yZXRfNzsgXAogIF9fcmV0XzcgPSBfX25vc3dhcF9zcGxhdHFfbGFuZV9wMTYoX19yZXYwXzcsIF9fcDFfNyk7IFwKICBfX3JldF83ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNywgX19yZXRfNywgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF83OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmR1cHFfbGFuZV91OChfX3AwXzgsIF9fcDFfOCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4OF90IF9fczBfOCA9IF9fcDBfODsgXAogIHVpbnQ4eDE2X3QgX19yZXRfODsgXAogIF9fcmV0XzggPSBzcGxhdHFfbGFuZV91OChfX3MwXzgsIF9fcDFfOCk7IFwKICBfX3JldF84OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmR1cHFfbGFuZV91OChfX3AwXzksIF9fcDFfOSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4OF90IF9fczBfOSA9IF9fcDBfOTsgXAogIHVpbnQ4eDhfdCBfX3JldjBfOTsgIF9fcmV2MF85ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF85LCBfX3MwXzksIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDh4MTZfdCBfX3JldF85OyBcCiAgX19yZXRfOSA9IF9fbm9zd2FwX3NwbGF0cV9sYW5lX3U4KF9fcmV2MF85LCBfX3AxXzkpOyBcCiAgX19yZXRfOSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzksIF9fcmV0XzksIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfOTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZkdXBxX2xhbmVfdTMyKF9fcDBfMTAsIF9fcDFfMTApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMngyX3QgX19zMF8xMCA9IF9fcDBfMTA7IFwKICB1aW50MzJ4NF90IF9fcmV0XzEwOyBcCiAgX19yZXRfMTAgPSBzcGxhdHFfbGFuZV91MzIoX19zMF8xMCwgX19wMV8xMCk7IFwKICBfX3JldF8xMDsgXAp9KQojZWxzZQojZGVmaW5lIHZkdXBxX2xhbmVfdTMyKF9fcDBfMTEsIF9fcDFfMTEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMngyX3QgX19zMF8xMSA9IF9fcDBfMTE7IFwKICB1aW50MzJ4Ml90IF9fcmV2MF8xMTsgIF9fcmV2MF8xMSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfMTEsIF9fczBfMTEsIDEsIDApOyBcCiAgdWludDMyeDRfdCBfX3JldF8xMTsgXAogIF9fcmV0XzExID0gX19ub3N3YXBfc3BsYXRxX2xhbmVfdTMyKF9fcmV2MF8xMSwgX19wMV8xMSk7IFwKICBfX3JldF8xMSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzExLCBfX3JldF8xMSwgMywgMiwgMSwgMCk7IFwKICBfX3JldF8xMTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZkdXBxX2xhbmVfdTY0KF9fcDBfMTIsIF9fcDFfMTIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgxX3QgX19zMF8xMiA9IF9fcDBfMTI7IFwKICB1aW50NjR4Ml90IF9fcmV0XzEyOyBcCiAgX19yZXRfMTIgPSBzcGxhdHFfbGFuZV91NjQoX19zMF8xMiwgX19wMV8xMik7IFwKICBfX3JldF8xMjsgXAp9KQojZWxzZQojZGVmaW5lIHZkdXBxX2xhbmVfdTY0KF9fcDBfMTMsIF9fcDFfMTMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgxX3QgX19zMF8xMyA9IF9fcDBfMTM7IFwKICB1aW50NjR4Ml90IF9fcmV0XzEzOyBcCiAgX19yZXRfMTMgPSBfX25vc3dhcF9zcGxhdHFfbGFuZV91NjQoX19zMF8xMywgX19wMV8xMyk7IFwKICBfX3JldF8xMyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzEzLCBfX3JldF8xMywgMSwgMCk7IFwKICBfX3JldF8xMzsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZkdXBxX2xhbmVfdTE2KF9fcDBfMTQsIF9fcDFfMTQpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng0X3QgX19zMF8xNCA9IF9fcDBfMTQ7IFwKICB1aW50MTZ4OF90IF9fcmV0XzE0OyBcCiAgX19yZXRfMTQgPSBzcGxhdHFfbGFuZV91MTYoX19zMF8xNCwgX19wMV8xNCk7IFwKICBfX3JldF8xNDsgXAp9KQojZWxzZQojZGVmaW5lIHZkdXBxX2xhbmVfdTE2KF9fcDBfMTUsIF9fcDFfMTUpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng0X3QgX19zMF8xNSA9IF9fcDBfMTU7IFwKICB1aW50MTZ4NF90IF9fcmV2MF8xNTsgIF9fcmV2MF8xNSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfMTUsIF9fczBfMTUsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDhfdCBfX3JldF8xNTsgXAogIF9fcmV0XzE1ID0gX19ub3N3YXBfc3BsYXRxX2xhbmVfdTE2KF9fcmV2MF8xNSwgX19wMV8xNSk7IFwKICBfX3JldF8xNSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzE1LCBfX3JldF8xNSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF8xNTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZkdXBxX2xhbmVfczgoX19wMF8xNiwgX19wMV8xNikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHg4X3QgX19zMF8xNiA9IF9fcDBfMTY7IFwKICBpbnQ4eDE2X3QgX19yZXRfMTY7IFwKICBfX3JldF8xNiA9IHNwbGF0cV9sYW5lX3M4KF9fczBfMTYsIF9fcDFfMTYpOyBcCiAgX19yZXRfMTY7IFwKfSkKI2Vsc2UKI2RlZmluZSB2ZHVwcV9sYW5lX3M4KF9fcDBfMTcsIF9fcDFfMTcpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4OF90IF9fczBfMTcgPSBfX3AwXzE3OyBcCiAgaW50OHg4X3QgX19yZXYwXzE3OyAgX19yZXYwXzE3ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8xNywgX19zMF8xNywgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQ4eDE2X3QgX19yZXRfMTc7IFwKICBfX3JldF8xNyA9IF9fbm9zd2FwX3NwbGF0cV9sYW5lX3M4KF9fcmV2MF8xNywgX19wMV8xNyk7IFwKICBfX3JldF8xNyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzE3LCBfX3JldF8xNywgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF8xNzsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZkdXBxX2xhbmVfZjMyKF9fcDBfMTgsIF9fcDFfMTgpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4Ml90IF9fczBfMTggPSBfX3AwXzE4OyBcCiAgZmxvYXQzMng0X3QgX19yZXRfMTg7IFwKICBfX3JldF8xOCA9IHNwbGF0cV9sYW5lX2YzMihfX3MwXzE4LCBfX3AxXzE4KTsgXAogIF9fcmV0XzE4OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmR1cHFfbGFuZV9mMzIoX19wMF8xOSwgX19wMV8xOSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMngyX3QgX19zMF8xOSA9IF9fcDBfMTk7IFwKICBmbG9hdDMyeDJfdCBfX3JldjBfMTk7ICBfX3JldjBfMTkgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzE5LCBfX3MwXzE5LCAxLCAwKTsgXAogIGZsb2F0MzJ4NF90IF9fcmV0XzE5OyBcCiAgX19yZXRfMTkgPSBfX25vc3dhcF9zcGxhdHFfbGFuZV9mMzIoX19yZXYwXzE5LCBfX3AxXzE5KTsgXAogIF9fcmV0XzE5ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMTksIF9fcmV0XzE5LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzE5OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmR1cHFfbGFuZV9zMzIoX19wMF8yMCwgX19wMV8yMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Ml90IF9fczBfMjAgPSBfX3AwXzIwOyBcCiAgaW50MzJ4NF90IF9fcmV0XzIwOyBcCiAgX19yZXRfMjAgPSBzcGxhdHFfbGFuZV9zMzIoX19zMF8yMCwgX19wMV8yMCk7IFwKICBfX3JldF8yMDsgXAp9KQojZWxzZQojZGVmaW5lIHZkdXBxX2xhbmVfczMyKF9fcDBfMjEsIF9fcDFfMjEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJfdCBfX3MwXzIxID0gX19wMF8yMTsgXAogIGludDMyeDJfdCBfX3JldjBfMjE7ICBfX3JldjBfMjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzIxLCBfX3MwXzIxLCAxLCAwKTsgXAogIGludDMyeDRfdCBfX3JldF8yMTsgXAogIF9fcmV0XzIxID0gX19ub3N3YXBfc3BsYXRxX2xhbmVfczMyKF9fcmV2MF8yMSwgX19wMV8yMSk7IFwKICBfX3JldF8yMSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzIxLCBfX3JldF8yMSwgMywgMiwgMSwgMCk7IFwKICBfX3JldF8yMTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZkdXBxX2xhbmVfczY0KF9fcDBfMjIsIF9fcDFfMjIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDFfdCBfX3MwXzIyID0gX19wMF8yMjsgXAogIGludDY0eDJfdCBfX3JldF8yMjsgXAogIF9fcmV0XzIyID0gc3BsYXRxX2xhbmVfczY0KF9fczBfMjIsIF9fcDFfMjIpOyBcCiAgX19yZXRfMjI7IFwKfSkKI2Vsc2UKI2RlZmluZSB2ZHVwcV9sYW5lX3M2NChfX3AwXzIzLCBfX3AxXzIzKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgxX3QgX19zMF8yMyA9IF9fcDBfMjM7IFwKICBpbnQ2NHgyX3QgX19yZXRfMjM7IFwKICBfX3JldF8yMyA9IF9fbm9zd2FwX3NwbGF0cV9sYW5lX3M2NChfX3MwXzIzLCBfX3AxXzIzKTsgXAogIF9fcmV0XzIzID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMjMsIF9fcmV0XzIzLCAxLCAwKTsgXAogIF9fcmV0XzIzOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmR1cHFfbGFuZV9zMTYoX19wMF8yNCwgX19wMV8yNCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NF90IF9fczBfMjQgPSBfX3AwXzI0OyBcCiAgaW50MTZ4OF90IF9fcmV0XzI0OyBcCiAgX19yZXRfMjQgPSBzcGxhdHFfbGFuZV9zMTYoX19zMF8yNCwgX19wMV8yNCk7IFwKICBfX3JldF8yNDsgXAp9KQojZWxzZQojZGVmaW5lIHZkdXBxX2xhbmVfczE2KF9fcDBfMjUsIF9fcDFfMjUpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDRfdCBfX3MwXzI1ID0gX19wMF8yNTsgXAogIGludDE2eDRfdCBfX3JldjBfMjU7ICBfX3JldjBfMjUgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzI1LCBfX3MwXzI1LCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDhfdCBfX3JldF8yNTsgXAogIF9fcmV0XzI1ID0gX19ub3N3YXBfc3BsYXRxX2xhbmVfczE2KF9fcmV2MF8yNSwgX19wMV8yNSk7IFwKICBfX3JldF8yNSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzI1LCBfX3JldF8yNSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF8yNTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZkdXBfbGFuZV91OChfX3AwXzI2LCBfX3AxXzI2KSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHg4X3QgX19zMF8yNiA9IF9fcDBfMjY7IFwKICB1aW50OHg4X3QgX19yZXRfMjY7IFwKICBfX3JldF8yNiA9IHNwbGF0X2xhbmVfdTgoX19zMF8yNiwgX19wMV8yNik7IFwKICBfX3JldF8yNjsgXAp9KQojZWxzZQojZGVmaW5lIHZkdXBfbGFuZV91OChfX3AwXzI3LCBfX3AxXzI3KSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHg4X3QgX19zMF8yNyA9IF9fcDBfMjc7IFwKICB1aW50OHg4X3QgX19yZXYwXzI3OyAgX19yZXYwXzI3ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8yNywgX19zMF8yNywgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50OHg4X3QgX19yZXRfMjc7IFwKICBfX3JldF8yNyA9IF9fbm9zd2FwX3NwbGF0X2xhbmVfdTgoX19yZXYwXzI3LCBfX3AxXzI3KTsgXAogIF9fcmV0XzI3ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMjcsIF9fcmV0XzI3LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzI3OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmR1cF9sYW5lX3UzMihfX3AwXzI4LCBfX3AxXzI4KSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4Ml90IF9fczBfMjggPSBfX3AwXzI4OyBcCiAgdWludDMyeDJfdCBfX3JldF8yODsgXAogIF9fcmV0XzI4ID0gc3BsYXRfbGFuZV91MzIoX19zMF8yOCwgX19wMV8yOCk7IFwKICBfX3JldF8yODsgXAp9KQojZWxzZQojZGVmaW5lIHZkdXBfbGFuZV91MzIoX19wMF8yOSwgX19wMV8yOSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDJfdCBfX3MwXzI5ID0gX19wMF8yOTsgXAogIHVpbnQzMngyX3QgX19yZXYwXzI5OyAgX19yZXYwXzI5ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8yOSwgX19zMF8yOSwgMSwgMCk7IFwKICB1aW50MzJ4Ml90IF9fcmV0XzI5OyBcCiAgX19yZXRfMjkgPSBfX25vc3dhcF9zcGxhdF9sYW5lX3UzMihfX3JldjBfMjksIF9fcDFfMjkpOyBcCiAgX19yZXRfMjkgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8yOSwgX19yZXRfMjksIDEsIDApOyBcCiAgX19yZXRfMjk7IFwKfSkKI2VuZGlmCgojZGVmaW5lIHZkdXBfbGFuZV91NjQoX19wMF8zMCwgX19wMV8zMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDFfdCBfX3MwXzMwID0gX19wMF8zMDsgXAogIHVpbnQ2NHgxX3QgX19yZXRfMzA7IFwKICBfX3JldF8zMCA9IHNwbGF0X2xhbmVfdTY0KF9fczBfMzAsIF9fcDFfMzApOyBcCiAgX19yZXRfMzA7IFwKfSkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmR1cF9sYW5lX3UxNihfX3AwXzMxLCBfX3AxXzMxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4NF90IF9fczBfMzEgPSBfX3AwXzMxOyBcCiAgdWludDE2eDRfdCBfX3JldF8zMTsgXAogIF9fcmV0XzMxID0gc3BsYXRfbGFuZV91MTYoX19zMF8zMSwgX19wMV8zMSk7IFwKICBfX3JldF8zMTsgXAp9KQojZWxzZQojZGVmaW5lIHZkdXBfbGFuZV91MTYoX19wMF8zMiwgX19wMV8zMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDRfdCBfX3MwXzMyID0gX19wMF8zMjsgXAogIHVpbnQxNng0X3QgX19yZXYwXzMyOyAgX19yZXYwXzMyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8zMiwgX19zMF8zMiwgMywgMiwgMSwgMCk7IFwKICB1aW50MTZ4NF90IF9fcmV0XzMyOyBcCiAgX19yZXRfMzIgPSBfX25vc3dhcF9zcGxhdF9sYW5lX3UxNihfX3JldjBfMzIsIF9fcDFfMzIpOyBcCiAgX19yZXRfMzIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8zMiwgX19yZXRfMzIsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfMzI7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2ZHVwX2xhbmVfczgoX19wMF8zMywgX19wMV8zMykgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHg4X3QgX19zMF8zMyA9IF9fcDBfMzM7IFwKICBpbnQ4eDhfdCBfX3JldF8zMzsgXAogIF9fcmV0XzMzID0gc3BsYXRfbGFuZV9zOChfX3MwXzMzLCBfX3AxXzMzKTsgXAogIF9fcmV0XzMzOyBcCn0pCiNlbHNlCiNkZWZpbmUgdmR1cF9sYW5lX3M4KF9fcDBfMzQsIF9fcDFfMzQpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4OF90IF9fczBfMzQgPSBfX3AwXzM0OyBcCiAgaW50OHg4X3QgX19yZXYwXzM0OyAgX19yZXYwXzM0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8zNCwgX19zMF8zNCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQ4eDhfdCBfX3JldF8zNDsgXAogIF9fcmV0XzM0ID0gX19ub3N3YXBfc3BsYXRfbGFuZV9zOChfX3JldjBfMzQsIF9fcDFfMzQpOyBcCiAgX19yZXRfMzQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8zNCwgX19yZXRfMzQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfMzQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2ZHVwX2xhbmVfZjMyKF9fcDBfMzUsIF9fcDFfMzUpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4Ml90IF9fczBfMzUgPSBfX3AwXzM1OyBcCiAgZmxvYXQzMngyX3QgX19yZXRfMzU7IFwKICBfX3JldF8zNSA9IHNwbGF0X2xhbmVfZjMyKF9fczBfMzUsIF9fcDFfMzUpOyBcCiAgX19yZXRfMzU7IFwKfSkKI2Vsc2UKI2RlZmluZSB2ZHVwX2xhbmVfZjMyKF9fcDBfMzYsIF9fcDFfMzYpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4Ml90IF9fczBfMzYgPSBfX3AwXzM2OyBcCiAgZmxvYXQzMngyX3QgX19yZXYwXzM2OyAgX19yZXYwXzM2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8zNiwgX19zMF8zNiwgMSwgMCk7IFwKICBmbG9hdDMyeDJfdCBfX3JldF8zNjsgXAogIF9fcmV0XzM2ID0gX19ub3N3YXBfc3BsYXRfbGFuZV9mMzIoX19yZXYwXzM2LCBfX3AxXzM2KTsgXAogIF9fcmV0XzM2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMzYsIF9fcmV0XzM2LCAxLCAwKTsgXAogIF9fcmV0XzM2OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmR1cF9sYW5lX3MzMihfX3AwXzM3LCBfX3AxXzM3KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMngyX3QgX19zMF8zNyA9IF9fcDBfMzc7IFwKICBpbnQzMngyX3QgX19yZXRfMzc7IFwKICBfX3JldF8zNyA9IHNwbGF0X2xhbmVfczMyKF9fczBfMzcsIF9fcDFfMzcpOyBcCiAgX19yZXRfMzc7IFwKfSkKI2Vsc2UKI2RlZmluZSB2ZHVwX2xhbmVfczMyKF9fcDBfMzgsIF9fcDFfMzgpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJfdCBfX3MwXzM4ID0gX19wMF8zODsgXAogIGludDMyeDJfdCBfX3JldjBfMzg7ICBfX3JldjBfMzggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzM4LCBfX3MwXzM4LCAxLCAwKTsgXAogIGludDMyeDJfdCBfX3JldF8zODsgXAogIF9fcmV0XzM4ID0gX19ub3N3YXBfc3BsYXRfbGFuZV9zMzIoX19yZXYwXzM4LCBfX3AxXzM4KTsgXAogIF9fcmV0XzM4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMzgsIF9fcmV0XzM4LCAxLCAwKTsgXAogIF9fcmV0XzM4OyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2ZHVwX2xhbmVfczY0KF9fcDBfMzksIF9fcDFfMzkpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDFfdCBfX3MwXzM5ID0gX19wMF8zOTsgXAogIGludDY0eDFfdCBfX3JldF8zOTsgXAogIF9fcmV0XzM5ID0gc3BsYXRfbGFuZV9zNjQoX19zMF8zOSwgX19wMV8zOSk7IFwKICBfX3JldF8zOTsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2ZHVwX2xhbmVfczE2KF9fcDBfNDAsIF9fcDFfNDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDRfdCBfX3MwXzQwID0gX19wMF80MDsgXAogIGludDE2eDRfdCBfX3JldF80MDsgXAogIF9fcmV0XzQwID0gc3BsYXRfbGFuZV9zMTYoX19zMF80MCwgX19wMV80MCk7IFwKICBfX3JldF80MDsgXAp9KQojZWxzZQojZGVmaW5lIHZkdXBfbGFuZV9zMTYoX19wMF80MSwgX19wMV80MSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NF90IF9fczBfNDEgPSBfX3AwXzQxOyBcCiAgaW50MTZ4NF90IF9fcmV2MF80MTsgIF9fcmV2MF80MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNDEsIF9fczBfNDEsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4NF90IF9fcmV0XzQxOyBcCiAgX19yZXRfNDEgPSBfX25vc3dhcF9zcGxhdF9sYW5lX3MxNihfX3JldjBfNDEsIF9fcDFfNDEpOyBcCiAgX19yZXRfNDEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF80MSwgX19yZXRfNDEsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfNDE7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBwb2x5OHg4X3QgdmR1cF9uX3A4KHBvbHk4X3QgX19wMCkgewogIHBvbHk4eDhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHg4X3QpIHtfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwfTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBwb2x5OHg4X3QgdmR1cF9uX3A4KHBvbHk4X3QgX19wMCkgewogIHBvbHk4eDhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHg4X3QpIHtfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwfTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgcG9seTE2eDRfdCB2ZHVwX25fcDE2KHBvbHkxNl90IF9fcDApIHsKICBwb2x5MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHkxNng0X3QpIHtfX3AwLCBfX3AwLCBfX3AwLCBfX3AwfTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBwb2x5MTZ4NF90IHZkdXBfbl9wMTYocG9seTE2X3QgX19wMCkgewogIHBvbHkxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTE2eDRfdCkge19fcDAsIF9fcDAsIF9fcDAsIF9fcDB9OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBwb2x5OHgxNl90IHZkdXBxX25fcDgocG9seThfdCBfX3AwKSB7CiAgcG9seTh4MTZfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHgxNl90KSB7X19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMH07CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgcG9seTh4MTZfdCB2ZHVwcV9uX3A4KHBvbHk4X3QgX19wMCkgewogIHBvbHk4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTh4MTZfdCkge19fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDB9OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBwb2x5MTZ4OF90IHZkdXBxX25fcDE2KHBvbHkxNl90IF9fcDApIHsKICBwb2x5MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHkxNng4X3QpIHtfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwfTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBwb2x5MTZ4OF90IHZkdXBxX25fcDE2KHBvbHkxNl90IF9fcDApIHsKICBwb2x5MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHkxNng4X3QpIHtfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwfTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4MTZfdCB2ZHVwcV9uX3U4KHVpbnQ4X3QgX19wMCkgewogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkge19fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDB9OwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDE2X3QgdmR1cHFfbl91OCh1aW50OF90IF9fcDApIHsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpIHtfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwfTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDRfdCB2ZHVwcV9uX3UzMih1aW50MzJfdCBfX3AwKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KSB7X19wMCwgX19wMCwgX19wMCwgX19wMH07CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2ZHVwcV9uX3UzMih1aW50MzJfdCBfX3AwKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KSB7X19wMCwgX19wMCwgX19wMCwgX19wMH07CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ2NHgyX3QgdmR1cHFfbl91NjQodWludDY0X3QgX19wMCkgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkge19fcDAsIF9fcDB9OwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ2NHgyX3QgdmR1cHFfbl91NjQodWludDY0X3QgX19wMCkgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkge19fcDAsIF9fcDB9OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4OF90IHZkdXBxX25fdTE2KHVpbnQxNl90IF9fcDApIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpIHtfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwfTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4OF90IHZkdXBxX25fdTE2KHVpbnQxNl90IF9fcDApIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpIHtfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwfTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHgxNl90IHZkdXBxX25fczgoaW50OF90IF9fcDApIHsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHgxNl90KSB7X19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMH07CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OHgxNl90IHZkdXBxX25fczgoaW50OF90IF9fcDApIHsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHgxNl90KSB7X19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMH07CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4NF90IHZkdXBxX25fZjMyKGZsb2F0MzJfdCBfX3AwKSB7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMng0X3QpIHtfX3AwLCBfX3AwLCBfX3AwLCBfX3AwfTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDRfdCB2ZHVwcV9uX2YzMihmbG9hdDMyX3QgX19wMCkgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSB7X19wMCwgX19wMCwgX19wMCwgX19wMH07CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZkdXBxX25fZjE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQxNng4X3QpIHtfX3MwLCBfX3MwLCBfX3MwLCBfX3MwLCBfX3MwLCBfX3MwLCBfX3MwLCBfX3MwfTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmR1cHFfbl9mMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNl90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDE2eDhfdCkge19fczAsIF9fczAsIF9fczAsIF9fczAsIF9fczAsIF9fczAsIF9fczAsIF9fczB9OyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMng0X3QgdmR1cHFfbl9zMzIoaW50MzJfdCBfX3AwKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkge19fcDAsIF9fcDAsIF9fcDAsIF9fcDB9OwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDRfdCB2ZHVwcV9uX3MzMihpbnQzMl90IF9fcDApIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4NF90KSB7X19wMCwgX19wMCwgX19wMCwgX19wMH07CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDY0eDJfdCB2ZHVwcV9uX3M2NChpbnQ2NF90IF9fcDApIHsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50NjR4Ml90KSB7X19wMCwgX19wMH07CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50NjR4Ml90IHZkdXBxX25fczY0KGludDY0X3QgX19wMCkgewogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NHgyX3QpIHtfX3AwLCBfX3AwfTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZ4OF90IHZkdXBxX25fczE2KGludDE2X3QgX19wMCkgewogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng4X3QpIHtfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwfTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng4X3QgdmR1cHFfbl9zMTYoaW50MTZfdCBfX3AwKSB7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDhfdCkge19fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDB9OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHg4X3QgdmR1cF9uX3U4KHVpbnQ4X3QgX19wMCkgewogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpIHtfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwfTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHg4X3QgdmR1cF9uX3U4KHVpbnQ4X3QgX19wMCkgewogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpIHtfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwfTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDJfdCB2ZHVwX25fdTMyKHVpbnQzMl90IF9fcDApIHsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMngyX3QpIHtfX3AwLCBfX3AwfTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4Ml90IHZkdXBfbl91MzIodWludDMyX3QgX19wMCkgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkge19fcDAsIF9fcDB9OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgpfX2FpIHVpbnQ2NHgxX3QgdmR1cF9uX3U2NCh1aW50NjRfdCBfX3AwKSB7CiAgdWludDY0eDFfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4MV90KSB7X19wMH07CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng0X3QgdmR1cF9uX3UxNih1aW50MTZfdCBfX3AwKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KSB7X19wMCwgX19wMCwgX19wMCwgX19wMH07CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDRfdCB2ZHVwX25fdTE2KHVpbnQxNl90IF9fcDApIHsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpIHtfX3AwLCBfX3AwLCBfX3AwLCBfX3AwfTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHg4X3QgdmR1cF9uX3M4KGludDhfdCBfX3AwKSB7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpIHtfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwfTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ4eDhfdCB2ZHVwX25fczgoaW50OF90IF9fcDApIHsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkge19fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDB9OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDJfdCB2ZHVwX25fZjMyKGZsb2F0MzJfdCBfX3AwKSB7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIHtfX3AwLCBfX3AwfTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDJfdCB2ZHVwX25fZjMyKGZsb2F0MzJfdCBfX3AwKSB7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIHtfX3AwLCBfX3AwfTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmR1cF9uX2YxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KSB7X19zMCwgX19zMCwgX19zMCwgX19zMH07IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZkdXBfbl9mMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNl90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDE2eDRfdCkge19fczAsIF9fczAsIF9fczAsIF9fczB9OyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMngyX3QgdmR1cF9uX3MzMihpbnQzMl90IF9fcDApIHsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KSB7X19wMCwgX19wMH07CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4Ml90IHZkdXBfbl9zMzIoaW50MzJfdCBfX3AwKSB7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDJfdCkge19fcDAsIF9fcDB9OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgpfX2FpIGludDY0eDFfdCB2ZHVwX25fczY0KGludDY0X3QgX19wMCkgewogIGludDY0eDFfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NHgxX3QpIHtfX3AwfTsKICByZXR1cm4gX19yZXQ7Cn0KI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZ4NF90IHZkdXBfbl9zMTYoaW50MTZfdCBfX3AwKSB7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDRfdCkge19fcDAsIF9fcDAsIF9fcDAsIF9fcDB9OwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDRfdCB2ZHVwX25fczE2KGludDE2X3QgX19wMCkgewogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng0X3QpIHtfX3AwLCBfX3AwLCBfX3AwLCBfX3AwfTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4MTZfdCB2ZW9ycV91OCh1aW50OHgxNl90IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSkgewogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwIF4gX19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHgxNl90IHZlb3JxX3U4KHVpbnQ4eDE2X3QgX19wMCwgdWludDh4MTZfdCBfX3AxKSB7CiAgdWludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgXiBfX3JldjE7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMng0X3QgdmVvcnFfdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgXiBfX3AxOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMng0X3QgdmVvcnFfdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxKSB7CiAgdWludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgXiBfX3JldjE7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ2NHgyX3QgdmVvcnFfdTY0KHVpbnQ2NHgyX3QgX19wMCwgdWludDY0eDJfdCBfX3AxKSB7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgXiBfX3AxOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ2NHgyX3QgdmVvcnFfdTY0KHVpbnQ2NHgyX3QgX19wMCwgdWludDY0eDJfdCBfX3AxKSB7CiAgdWludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgXiBfX3JldjE7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng4X3QgdmVvcnFfdTE2KHVpbnQxNng4X3QgX19wMCwgdWludDE2eDhfdCBfX3AxKSB7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgXiBfX3AxOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng4X3QgdmVvcnFfdTE2KHVpbnQxNng4X3QgX19wMCwgdWludDE2eDhfdCBfX3AxKSB7CiAgdWludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgXiBfX3JldjE7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4MTZfdCB2ZW9ycV9zOChpbnQ4eDE2X3QgX19wMCwgaW50OHgxNl90IF9fcDEpIHsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwIF4gX19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ4eDE2X3QgdmVvcnFfczgoaW50OHgxNl90IF9fcDAsIGludDh4MTZfdCBfX3AxKSB7CiAgaW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgXiBfX3JldjE7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDRfdCB2ZW9ycV9zMzIoaW50MzJ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCBeIF9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4NF90IHZlb3JxX3MzMihpbnQzMng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEpIHsKICBpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCBeIF9fcmV2MTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50NjR4Ml90IHZlb3JxX3M2NChpbnQ2NHgyX3QgX19wMCwgaW50NjR4Ml90IF9fcDEpIHsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwIF4gX19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ2NHgyX3QgdmVvcnFfczY0KGludDY0eDJfdCBfX3AwLCBpbnQ2NHgyX3QgX19wMSkgewogIGludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBpbnQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwIF4gX19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng4X3QgdmVvcnFfczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgXiBfX3AxOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDhfdCB2ZW9ycV9zMTYoaW50MTZ4OF90IF9fcDAsIGludDE2eDhfdCBfX3AxKSB7CiAgaW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgXiBfX3JldjE7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDhfdCB2ZW9yX3U4KHVpbnQ4eDhfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgXiBfX3AxOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDhfdCB2ZW9yX3U4KHVpbnQ4eDhfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIHVpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwIF4gX19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4Ml90IHZlb3JfdTMyKHVpbnQzMngyX3QgX19wMCwgdWludDMyeDJfdCBfX3AxKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgXiBfX3AxOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMngyX3QgdmVvcl91MzIodWludDMyeDJfdCBfX3AwLCB1aW50MzJ4Ml90IF9fcDEpIHsKICB1aW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCBeIF9fcmV2MTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKX19haSB1aW50NjR4MV90IHZlb3JfdTY0KHVpbnQ2NHgxX3QgX19wMCwgdWludDY0eDFfdCBfX3AxKSB7CiAgdWludDY0eDFfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgXiBfX3AxOwogIHJldHVybiBfX3JldDsKfQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4NF90IHZlb3JfdTE2KHVpbnQxNng0X3QgX19wMCwgdWludDE2eDRfdCBfX3AxKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgXiBfX3AxOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng0X3QgdmVvcl91MTYodWludDE2eDRfdCBfX3AwLCB1aW50MTZ4NF90IF9fcDEpIHsKICB1aW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCBeIF9fcmV2MTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHg4X3QgdmVvcl9zOChpbnQ4eDhfdCBfX3AwLCBpbnQ4eDhfdCBfX3AxKSB7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwIF4gX19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ4eDhfdCB2ZW9yX3M4KGludDh4OF90IF9fcDAsIGludDh4OF90IF9fcDEpIHsKICBpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCBeIF9fcmV2MTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4Ml90IHZlb3JfczMyKGludDMyeDJfdCBfX3AwLCBpbnQzMngyX3QgX19wMSkgewogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgXiBfX3AxOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDJfdCB2ZW9yX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEpIHsKICBpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCBeIF9fcmV2MTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKX19haSBpbnQ2NHgxX3QgdmVvcl9zNjQoaW50NjR4MV90IF9fcDAsIGludDY0eDFfdCBfX3AxKSB7CiAgaW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gX19wMCBeIF9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDRfdCB2ZW9yX3MxNihpbnQxNng0X3QgX19wMCwgaW50MTZ4NF90IF9fcDEpIHsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwIF4gX19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng0X3QgdmVvcl9zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxKSB7CiAgaW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgXiBfX3JldjE7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZleHRfcDgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4OF90IF9fczAgPSBfX3AwOyBcCiAgcG9seTh4OF90IF9fczEgPSBfX3AxOyBcCiAgcG9seTh4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAocG9seTh4OF90KSBfX2J1aWx0aW5fbmVvbl92ZXh0X3YoKGludDh4OF90KV9fczAsIChpbnQ4eDhfdClfX3MxLCBfX3AyLCA0KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmV4dF9wOChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHg4X3QgX19zMCA9IF9fcDA7IFwKICBwb2x5OHg4X3QgX19zMSA9IF9fcDE7IFwKICBwb2x5OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBwb2x5OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBwb2x5OHg4X3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZleHRfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCBfX3AyLCA0KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmV4dF9wMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDRfdCBfX3MwID0gX19wMDsgXAogIHBvbHkxNng0X3QgX19zMSA9IF9fcDE7IFwKICBwb2x5MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAocG9seTE2eDRfdCkgX19idWlsdGluX25lb25fdmV4dF92KChpbnQ4eDhfdClfX3MwLCAoaW50OHg4X3QpX19zMSwgX19wMiwgNSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZleHRfcDE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng0X3QgX19zMCA9IF9fcDA7IFwKICBwb2x5MTZ4NF90IF9fczEgPSBfX3AxOyBcCiAgcG9seTE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAzLCAyLCAxLCAwKTsgXAogIHBvbHkxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMywgMiwgMSwgMCk7IFwKICBwb2x5MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAocG9seTE2eDRfdCkgX19idWlsdGluX25lb25fdmV4dF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIF9fcDIsIDUpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2ZXh0cV9wOChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHgxNl90IF9fczAgPSBfX3AwOyBcCiAgcG9seTh4MTZfdCBfX3MxID0gX19wMTsgXAogIHBvbHk4eDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92ZXh0cV92KChpbnQ4eDE2X3QpX19zMCwgKGludDh4MTZfdClfX3MxLCBfX3AyLCAzNik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZleHRxX3A4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4eDE2X3QgX19zMCA9IF9fcDA7IFwKICBwb2x5OHgxNl90IF9fczEgPSBfX3AxOyBcCiAgcG9seTh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHBvbHk4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBwb2x5OHgxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAocG9seTh4MTZfdCkgX19idWlsdGluX25lb25fdmV4dHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIF9fcDIsIDM2KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmV4dHFfcDE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng4X3QgX19zMCA9IF9fcDA7IFwKICBwb2x5MTZ4OF90IF9fczEgPSBfX3AxOyBcCiAgcG9seTE2eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHBvbHkxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZleHRxX3YoKGludDh4MTZfdClfX3MwLCAoaW50OHgxNl90KV9fczEsIF9fcDIsIDM3KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmV4dHFfcDE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng4X3QgX19zMCA9IF9fcDA7IFwKICBwb2x5MTZ4OF90IF9fczEgPSBfX3AxOyBcCiAgcG9seTE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHBvbHkxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBwb2x5MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAocG9seTE2eDhfdCkgX19idWlsdGluX25lb25fdmV4dHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIF9fcDIsIDM3KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmV4dHFfdTgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4MTZfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ4eDE2X3QgX19zMSA9IF9fcDE7IFwKICB1aW50OHgxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDh4MTZfdCkgX19idWlsdGluX25lb25fdmV4dHFfdigoaW50OHgxNl90KV9fczAsIChpbnQ4eDE2X3QpX19zMSwgX19wMiwgNDgpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2ZXh0cV91OChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHgxNl90IF9fczAgPSBfX3AwOyBcCiAgdWludDh4MTZfdCBfX3MxID0gX19wMTsgXAogIHVpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDh4MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZleHRxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCBfX3AyLCA0OCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZleHRxX3UzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NF90IF9fczAgPSBfX3AwOyBcCiAgdWludDMyeDRfdCBfX3MxID0gX19wMTsgXAogIHVpbnQzMng0X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92ZXh0cV92KChpbnQ4eDE2X3QpX19zMCwgKGludDh4MTZfdClfX3MxLCBfX3AyLCA1MCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZleHRxX3UzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NF90IF9fczAgPSBfX3AwOyBcCiAgdWludDMyeDRfdCBfX3MxID0gX19wMTsgXAogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMywgMiwgMSwgMCk7IFwKICB1aW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDMsIDIsIDEsIDApOyBcCiAgdWludDMyeDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZleHRxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCBfX3AyLCA1MCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZleHRxX3U2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4Ml90IF9fczAgPSBfX3AwOyBcCiAgdWludDY0eDJfdCBfX3MxID0gX19wMTsgXAogIHVpbnQ2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92ZXh0cV92KChpbnQ4eDE2X3QpX19zMCwgKGludDh4MTZfdClfX3MxLCBfX3AyLCA1MSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZleHRxX3U2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4Ml90IF9fczAgPSBfX3AwOyBcCiAgdWludDY0eDJfdCBfX3MxID0gX19wMTsgXAogIHVpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMSwgMCk7IFwKICB1aW50NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDEsIDApOyBcCiAgdWludDY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZleHRxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCBfX3AyLCA1MSk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZleHRxX3UxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgdWludDE2eDhfdCBfX3MxID0gX19wMTsgXAogIHVpbnQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92ZXh0cV92KChpbnQ4eDE2X3QpX19zMCwgKGludDh4MTZfdClfX3MxLCBfX3AyLCA0OSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZleHRxX3UxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgdWludDE2eDhfdCBfX3MxID0gX19wMTsgXAogIHVpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZleHRxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCBfX3AyLCA0OSk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZleHRxX3M4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4MTZfdCBfX3MwID0gX19wMDsgXAogIGludDh4MTZfdCBfX3MxID0gX19wMTsgXAogIGludDh4MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDh4MTZfdCkgX19idWlsdGluX25lb25fdmV4dHFfdigoaW50OHgxNl90KV9fczAsIChpbnQ4eDE2X3QpX19zMSwgX19wMiwgMzIpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2ZXh0cV9zOChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDE2X3QgX19zMCA9IF9fcDA7IFwKICBpbnQ4eDE2X3QgX19zMSA9IF9fcDE7IFwKICBpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQ4eDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZleHRxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCBfX3AyLCAzMik7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZleHRxX2YzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDRfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MzJ4NF90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQzMng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdmV4dHFfdigoaW50OHgxNl90KV9fczAsIChpbnQ4eDE2X3QpX19zMSwgX19wMiwgNDEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2ZXh0cV9mMzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDMyeDRfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDMyeDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92ZXh0cV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgX19wMiwgNDEpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2ZXh0cV9zMzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczAgPSBfX3AwOyBcCiAgaW50MzJ4NF90IF9fczEgPSBfX3AxOyBcCiAgaW50MzJ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92ZXh0cV92KChpbnQ4eDE2X3QpX19zMCwgKGludDh4MTZfdClfX3MxLCBfX3AyLCAzNCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZleHRxX3MzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQzMng0X3QgX19zMSA9IF9fcDE7IFwKICBpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMywgMiwgMSwgMCk7IFwKICBpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMywgMiwgMSwgMCk7IFwKICBpbnQzMng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZleHRxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCBfX3AyLCAzNCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZleHRxX3M2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgyX3QgX19zMCA9IF9fcDA7IFwKICBpbnQ2NHgyX3QgX19zMSA9IF9fcDE7IFwKICBpbnQ2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZleHRxX3YoKGludDh4MTZfdClfX3MwLCAoaW50OHgxNl90KV9fczEsIF9fcDIsIDM1KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmV4dHFfczY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJfdCBfX3MwID0gX19wMDsgXAogIGludDY0eDJfdCBfX3MxID0gX19wMTsgXAogIGludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAxLCAwKTsgXAogIGludDY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAxLCAwKTsgXAogIGludDY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDY0eDJfdCkgX19idWlsdGluX25lb25fdmV4dHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIF9fcDIsIDM1KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmV4dHFfczE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDhfdCBfX3MwID0gX19wMDsgXAogIGludDE2eDhfdCBfX3MxID0gX19wMTsgXAogIGludDE2eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDE2eDhfdCkgX19idWlsdGluX25lb25fdmV4dHFfdigoaW50OHgxNl90KV9fczAsIChpbnQ4eDE2X3QpX19zMSwgX19wMiwgMzMpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2ZXh0cV9zMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgaW50MTZ4OF90IF9fczEgPSBfX3AxOyBcCiAgaW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92ZXh0cV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgX19wMiwgMzMpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2ZXh0X3U4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDhfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ4eDhfdCBfX3MxID0gX19wMTsgXAogIHVpbnQ4eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdmV4dF92KChpbnQ4eDhfdClfX3MwLCAoaW50OHg4X3QpX19zMSwgX19wMiwgMTYpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2ZXh0X3U4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDhfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ4eDhfdCBfX3MxID0gX19wMTsgXAogIHVpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQ4eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdmV4dF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIF9fcDIsIDE2KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmV4dF91MzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDJfdCBfX3MwID0gX19wMDsgXAogIHVpbnQzMngyX3QgX19zMSA9IF9fcDE7IFwKICB1aW50MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdmV4dF92KChpbnQ4eDhfdClfX3MwLCAoaW50OHg4X3QpX19zMSwgX19wMiwgMTgpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2ZXh0X3UzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4Ml90IF9fczAgPSBfX3AwOyBcCiAgdWludDMyeDJfdCBfX3MxID0gX19wMTsgXAogIHVpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMSwgMCk7IFwKICB1aW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDEsIDApOyBcCiAgdWludDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZleHRfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCBfX3AyLCAxOCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNkZWZpbmUgdmV4dF91NjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDFfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ2NHgxX3QgX19zMSA9IF9fcDE7IFwKICB1aW50NjR4MV90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDY0eDFfdCkgX19idWlsdGluX25lb25fdmV4dF92KChpbnQ4eDhfdClfX3MwLCAoaW50OHg4X3QpX19zMSwgX19wMiwgMTkpOyBcCiAgX19yZXQ7IFwKfSkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmV4dF91MTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDRfdCBfX3MwID0gX19wMDsgXAogIHVpbnQxNng0X3QgX19zMSA9IF9fcDE7IFwKICB1aW50MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdmV4dF92KChpbnQ4eDhfdClfX3MwLCAoaW50OHg4X3QpX19zMSwgX19wMiwgMTcpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2ZXh0X3UxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4NF90IF9fczAgPSBfX3AwOyBcCiAgdWludDE2eDRfdCBfX3MxID0gX19wMTsgXAogIHVpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMywgMiwgMSwgMCk7IFwKICB1aW50MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZleHRfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCBfX3AyLCAxNyk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZleHRfczgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHg4X3QgX19zMCA9IF9fcDA7IFwKICBpbnQ4eDhfdCBfX3MxID0gX19wMTsgXAogIGludDh4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZleHRfdigoaW50OHg4X3QpX19zMCwgKGludDh4OF90KV9fczEsIF9fcDIsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2ZXh0X3M4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4OF90IF9fczAgPSBfX3AwOyBcCiAgaW50OHg4X3QgX19zMSA9IF9fcDE7IFwKICBpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50OHg4X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdmV4dF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIF9fcDIsIDApOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2ZXh0X2YzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MzJ4Ml90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQzMngyX3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdmV4dF92KChpbnQ4eDhfdClfX3MwLCAoaW50OHg4X3QpX19zMSwgX19wMiwgOSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZleHRfZjMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4Ml90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQzMngyX3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAxLCAwKTsgXAogIGZsb2F0MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDEsIDApOyBcCiAgZmxvYXQzMngyX3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdmV4dF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIF9fcDIsIDkpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2ZXh0X3MzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMngyX3QgX19zMCA9IF9fcDA7IFwKICBpbnQzMngyX3QgX19zMSA9IF9fcDE7IFwKICBpbnQzMngyX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZleHRfdigoaW50OHg4X3QpX19zMCwgKGludDh4OF90KV9fczEsIF9fcDIsIDIpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2ZXh0X3MzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMngyX3QgX19zMCA9IF9fcDA7IFwKICBpbnQzMngyX3QgX19zMSA9IF9fcDE7IFwKICBpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMSwgMCk7IFwKICBpbnQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMSwgMCk7IFwKICBpbnQzMngyX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZleHRfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCBfX3AyLCAyKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2ZXh0X3M2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgxX3QgX19zMCA9IF9fcDA7IFwKICBpbnQ2NHgxX3QgX19zMSA9IF9fcDE7IFwKICBpbnQ2NHgxX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3ZleHRfdigoaW50OHg4X3QpX19zMCwgKGludDh4OF90KV9fczEsIF9fcDIsIDMpOyBcCiAgX19yZXQ7IFwKfSkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmV4dF9zMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NF90IF9fczAgPSBfX3AwOyBcCiAgaW50MTZ4NF90IF9fczEgPSBfX3AxOyBcCiAgaW50MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92ZXh0X3YoKGludDh4OF90KV9fczAsIChpbnQ4eDhfdClfX3MxLCBfX3AyLCAxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmV4dF9zMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NF90IF9fczAgPSBfX3AwOyBcCiAgaW50MTZ4NF90IF9fczEgPSBfX3AxOyBcCiAgaW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92ZXh0X3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgX19wMiwgMSk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHBvbHk4eDhfdCB2Z2V0X2hpZ2hfcDgocG9seTh4MTZfdCBfX3AwKSB7CiAgcG9seTh4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgcG9seTh4OF90IHZnZXRfaGlnaF9wOChwb2x5OHgxNl90IF9fcDApIHsKICBwb2x5OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHBvbHk4eDhfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYwLCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTh4OF90IF9fbm9zd2FwX3ZnZXRfaGlnaF9wOChwb2x5OHgxNl90IF9fcDApIHsKICBwb2x5OHg4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1KTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBwb2x5MTZ4NF90IHZnZXRfaGlnaF9wMTYocG9seTE2eDhfdCBfX3AwKSB7CiAgcG9seTE2eDRfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDQsIDUsIDYsIDcpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHBvbHkxNng0X3QgdmdldF9oaWdoX3AxNihwb2x5MTZ4OF90IF9fcDApIHsKICBwb2x5MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHBvbHkxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MCwgNCwgNSwgNiwgNyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDhfdCB2Z2V0X2hpZ2hfdTgodWludDh4MTZfdCBfX3AwKSB7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4OF90IHZnZXRfaGlnaF91OCh1aW50OHgxNl90IF9fcDApIHsKICB1aW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYwLCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDh4OF90IF9fbm9zd2FwX3ZnZXRfaGlnaF91OCh1aW50OHgxNl90IF9fcDApIHsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1KTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4Ml90IHZnZXRfaGlnaF91MzIodWludDMyeDRfdCBfX3AwKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDIsIDMpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMngyX3QgdmdldF9oaWdoX3UzMih1aW50MzJ4NF90IF9fcDApIHsKICB1aW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MCwgMiwgMyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQzMngyX3QgX19ub3N3YXBfdmdldF9oaWdoX3UzMih1aW50MzJ4NF90IF9fcDApIHsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMiwgMyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDY0eDFfdCB2Z2V0X2hpZ2hfdTY0KHVpbnQ2NHgyX3QgX19wMCkgewogIHVpbnQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50NjR4MV90IHZnZXRfaGlnaF91NjQodWludDY0eDJfdCBfX3AwKSB7CiAgdWludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjAsIDEpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng0X3QgdmdldF9oaWdoX3UxNih1aW50MTZ4OF90IF9fcDApIHsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNCwgNSwgNiwgNyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDRfdCB2Z2V0X2hpZ2hfdTE2KHVpbnQxNng4X3QgX19wMCkgewogIHVpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYwLCA0LCA1LCA2LCA3KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDE2eDRfdCBfX25vc3dhcF92Z2V0X2hpZ2hfdTE2KHVpbnQxNng4X3QgX19wMCkgewogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA0LCA1LCA2LCA3KTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDhfdCB2Z2V0X2hpZ2hfczgoaW50OHgxNl90IF9fcDApIHsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4OF90IHZnZXRfaGlnaF9zOChpbnQ4eDE2X3QgX19wMCkgewogIGludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYwLCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50OHg4X3QgX19ub3N3YXBfdmdldF9oaWdoX3M4KGludDh4MTZfdCBfX3AwKSB7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1KTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDJfdCB2Z2V0X2hpZ2hfZjMyKGZsb2F0MzJ4NF90IF9fcDApIHsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDIsIDMpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4Ml90IHZnZXRfaGlnaF9mMzIoZmxvYXQzMng0X3QgX19wMCkgewogIGZsb2F0MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjAsIDIsIDMpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDMyeDJfdCBfX25vc3dhcF92Z2V0X2hpZ2hfZjMyKGZsb2F0MzJ4NF90IF9fcDApIHsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDIsIDMpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MTZ4NF90IHZnZXRfaGlnaF9mMTYoZmxvYXQxNng4X3QgX19wMCkgewogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNCwgNSwgNiwgNyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQxNng0X3QgdmdldF9oaWdoX2YxNihmbG9hdDE2eDhfdCBfX3AwKSB7CiAgZmxvYXQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MCwgNCwgNSwgNiwgNyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MTZ4NF90IF9fbm9zd2FwX3ZnZXRfaGlnaF9mMTYoZmxvYXQxNng4X3QgX19wMCkgewogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNCwgNSwgNiwgNyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4Ml90IHZnZXRfaGlnaF9zMzIoaW50MzJ4NF90IF9fcDApIHsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAyLCAzKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMngyX3QgdmdldF9oaWdoX3MzMihpbnQzMng0X3QgX19wMCkgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MCwgMiwgMyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDMyeDJfdCBfX25vc3dhcF92Z2V0X2hpZ2hfczMyKGludDMyeDRfdCBfX3AwKSB7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMiwgMyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50NjR4MV90IHZnZXRfaGlnaF9zNjQoaW50NjR4Ml90IF9fcDApIHsKICBpbnQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ2NHgxX3QgdmdldF9oaWdoX3M2NChpbnQ2NHgyX3QgX19wMCkgewogIGludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBpbnQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MCwgMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZ4NF90IHZnZXRfaGlnaF9zMTYoaW50MTZ4OF90IF9fcDApIHsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA0LCA1LCA2LCA3KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng0X3QgdmdldF9oaWdoX3MxNihpbnQxNng4X3QgX19wMCkgewogIGludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MCwgNCwgNSwgNiwgNyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDE2eDRfdCBfX25vc3dhcF92Z2V0X2hpZ2hfczE2KGludDE2eDhfdCBfX3AwKSB7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNCwgNSwgNiwgNyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmdldF9sYW5lX3A4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4eDhfdCBfX3MwID0gX19wMDsgXAogIHBvbHk4X3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5OF90KSBfX2J1aWx0aW5fbmVvbl92Z2V0X2xhbmVfaTgoKHBvbHk4eDhfdClfX3MwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmdldF9sYW5lX3A4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4eDhfdCBfX3MwID0gX19wMDsgXAogIHBvbHk4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHBvbHk4X3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5OF90KSBfX2J1aWx0aW5fbmVvbl92Z2V0X2xhbmVfaTgoKHBvbHk4eDhfdClfX3JldjAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF92Z2V0X2xhbmVfcDgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4OF90IF9fczAgPSBfX3AwOyBcCiAgcG9seThfdCBfX3JldDsgXAogIF9fcmV0ID0gKHBvbHk4X3QpIF9fYnVpbHRpbl9uZW9uX3ZnZXRfbGFuZV9pOCgocG9seTh4OF90KV9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Z2V0X2xhbmVfcDE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng0X3QgX19zMCA9IF9fcDA7IFwKICBwb2x5MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKHBvbHkxNl90KSBfX2J1aWx0aW5fbmVvbl92Z2V0X2xhbmVfaTE2KChwb2x5MTZ4NF90KV9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Z2V0X2xhbmVfcDE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng0X3QgX19zMCA9IF9fcDA7IFwKICBwb2x5MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDMsIDIsIDEsIDApOyBcCiAgcG9seTE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5MTZfdCkgX19idWlsdGluX25lb25fdmdldF9sYW5lX2kxNigocG9seTE2eDRfdClfX3JldjAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF92Z2V0X2xhbmVfcDE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng0X3QgX19zMCA9IF9fcDA7IFwKICBwb2x5MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKHBvbHkxNl90KSBfX2J1aWx0aW5fbmVvbl92Z2V0X2xhbmVfaTE2KChwb2x5MTZ4NF90KV9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Z2V0cV9sYW5lX3A4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4eDE2X3QgX19zMCA9IF9fcDA7IFwKICBwb2x5OF90IF9fcmV0OyBcCiAgX19yZXQgPSAocG9seThfdCkgX19idWlsdGluX25lb25fdmdldHFfbGFuZV9pOCgocG9seTh4MTZfdClfX3MwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmdldHFfbGFuZV9wOChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHgxNl90IF9fczAgPSBfX3AwOyBcCiAgcG9seTh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHBvbHk4X3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5OF90KSBfX2J1aWx0aW5fbmVvbl92Z2V0cV9sYW5lX2k4KChwb2x5OHgxNl90KV9fcmV2MCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3ZnZXRxX2xhbmVfcDgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4MTZfdCBfX3MwID0gX19wMDsgXAogIHBvbHk4X3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5OF90KSBfX2J1aWx0aW5fbmVvbl92Z2V0cV9sYW5lX2k4KChwb2x5OHgxNl90KV9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Z2V0cV9sYW5lX3AxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgcG9seTE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5MTZfdCkgX19idWlsdGluX25lb25fdmdldHFfbGFuZV9pMTYoKHBvbHkxNng4X3QpX19zMCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZnZXRxX2xhbmVfcDE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng4X3QgX19zMCA9IF9fcDA7IFwKICBwb2x5MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgcG9seTE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5MTZfdCkgX19idWlsdGluX25lb25fdmdldHFfbGFuZV9pMTYoKHBvbHkxNng4X3QpX19yZXYwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgX19ub3N3YXBfdmdldHFfbGFuZV9wMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDhfdCBfX3MwID0gX19wMDsgXAogIHBvbHkxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAocG9seTE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZnZXRxX2xhbmVfaTE2KChwb2x5MTZ4OF90KV9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Z2V0cV9sYW5lX3U4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDE2X3QgX19zMCA9IF9fcDA7IFwKICB1aW50OF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDhfdCkgX19idWlsdGluX25lb25fdmdldHFfbGFuZV9pOCgoaW50OHgxNl90KV9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Z2V0cV9sYW5lX3U4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDE2X3QgX19zMCA9IF9fcDA7IFwKICB1aW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ4X3QpIF9fYnVpbHRpbl9uZW9uX3ZnZXRxX2xhbmVfaTgoKGludDh4MTZfdClfX3JldjAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF92Z2V0cV9sYW5lX3U4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDE2X3QgX19zMCA9IF9fcDA7IFwKICB1aW50OF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDhfdCkgX19idWlsdGluX25lb25fdmdldHFfbGFuZV9pOCgoaW50OHgxNl90KV9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Z2V0cV9sYW5lX3UzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NF90IF9fczAgPSBfX3AwOyBcCiAgdWludDMyX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MzJfdCkgX19idWlsdGluX25lb25fdmdldHFfbGFuZV9pMzIoKGludDMyeDRfdClfX3MwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmdldHFfbGFuZV91MzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDRfdCBfX3MwID0gX19wMDsgXAogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMywgMiwgMSwgMCk7IFwKICB1aW50MzJfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQzMl90KSBfX2J1aWx0aW5fbmVvbl92Z2V0cV9sYW5lX2kzMigoaW50MzJ4NF90KV9fcmV2MCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3ZnZXRxX2xhbmVfdTMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MzJfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQzMl90KSBfX2J1aWx0aW5fbmVvbl92Z2V0cV9sYW5lX2kzMigoaW50MzJ4NF90KV9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Z2V0cV9sYW5lX3U2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4Ml90IF9fczAgPSBfX3AwOyBcCiAgdWludDY0X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50NjRfdCkgX19idWlsdGluX25lb25fdmdldHFfbGFuZV9pNjQoKGludDY0eDJfdClfX3MwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmdldHFfbGFuZV91NjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDJfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMSwgMCk7IFwKICB1aW50NjRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ2NF90KSBfX2J1aWx0aW5fbmVvbl92Z2V0cV9sYW5lX2k2NCgoaW50NjR4Ml90KV9fcmV2MCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3ZnZXRxX2xhbmVfdTY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyX3QgX19zMCA9IF9fcDA7IFwKICB1aW50NjRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ2NF90KSBfX2J1aWx0aW5fbmVvbl92Z2V0cV9sYW5lX2k2NCgoaW50NjR4Ml90KV9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Z2V0cV9sYW5lX3UxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgdWludDE2X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MTZfdCkgX19idWlsdGluX25lb25fdmdldHFfbGFuZV9pMTYoKGludDE2eDhfdClfX3MwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmdldHFfbGFuZV91MTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDhfdCBfX3MwID0gX19wMDsgXAogIHVpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQxNl90KSBfX2J1aWx0aW5fbmVvbl92Z2V0cV9sYW5lX2kxNigoaW50MTZ4OF90KV9fcmV2MCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3ZnZXRxX2xhbmVfdTE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng4X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQxNl90KSBfX2J1aWx0aW5fbmVvbl92Z2V0cV9sYW5lX2kxNigoaW50MTZ4OF90KV9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Z2V0cV9sYW5lX3M4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4MTZfdCBfX3MwID0gX19wMDsgXAogIGludDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDhfdCkgX19idWlsdGluX25lb25fdmdldHFfbGFuZV9pOCgoaW50OHgxNl90KV9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Z2V0cV9sYW5lX3M4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4MTZfdCBfX3MwID0gX19wMDsgXAogIGludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDhfdCkgX19idWlsdGluX25lb25fdmdldHFfbGFuZV9pOCgoaW50OHgxNl90KV9fcmV2MCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3ZnZXRxX2xhbmVfczgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHgxNl90IF9fczAgPSBfX3AwOyBcCiAgaW50OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50OF90KSBfX2J1aWx0aW5fbmVvbl92Z2V0cV9sYW5lX2k4KChpbnQ4eDE2X3QpX19zMCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZnZXRxX2xhbmVfZjMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NF90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQzMl90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQzMl90KSBfX2J1aWx0aW5fbmVvbl92Z2V0cV9sYW5lX2YzMigoZmxvYXQzMng0X3QpX19zMCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZnZXRxX2xhbmVfZjMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NF90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDMyX3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZnZXRxX2xhbmVfZjMyKChmbG9hdDMyeDRfdClfX3JldjAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF92Z2V0cV9sYW5lX2YzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDRfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MzJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MzJfdCkgX19idWlsdGluX25lb25fdmdldHFfbGFuZV9mMzIoKGZsb2F0MzJ4NF90KV9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Z2V0cV9sYW5lX3MzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQzMl90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJfdCkgX19idWlsdGluX25lb25fdmdldHFfbGFuZV9pMzIoKGludDMyeDRfdClfX3MwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmdldHFfbGFuZV9zMzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczAgPSBfX3AwOyBcCiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDMsIDIsIDEsIDApOyBcCiAgaW50MzJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZnZXRxX2xhbmVfaTMyKChpbnQzMng0X3QpX19yZXYwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgX19ub3N3YXBfdmdldHFfbGFuZV9zMzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczAgPSBfX3AwOyBcCiAgaW50MzJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZnZXRxX2xhbmVfaTMyKChpbnQzMng0X3QpX19zMCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZnZXRxX2xhbmVfczY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJfdCBfX3MwID0gX19wMDsgXAogIGludDY0X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ2NF90KSBfX2J1aWx0aW5fbmVvbl92Z2V0cV9sYW5lX2k2NCgoaW50NjR4Ml90KV9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Z2V0cV9sYW5lX3M2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgyX3QgX19zMCA9IF9fcDA7IFwKICBpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMSwgMCk7IFwKICBpbnQ2NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50NjRfdCkgX19idWlsdGluX25lb25fdmdldHFfbGFuZV9pNjQoKGludDY0eDJfdClfX3JldjAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF92Z2V0cV9sYW5lX3M2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgyX3QgX19zMCA9IF9fcDA7IFwKICBpbnQ2NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50NjRfdCkgX19idWlsdGluX25lb25fdmdldHFfbGFuZV9pNjQoKGludDY0eDJfdClfX3MwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmdldHFfbGFuZV9zMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgaW50MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZnZXRxX2xhbmVfaTE2KChpbnQxNng4X3QpX19zMCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZnZXRxX2xhbmVfczE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDhfdCBfX3MwID0gX19wMDsgXAogIGludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQxNl90KSBfX2J1aWx0aW5fbmVvbl92Z2V0cV9sYW5lX2kxNigoaW50MTZ4OF90KV9fcmV2MCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3ZnZXRxX2xhbmVfczE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDhfdCBfX3MwID0gX19wMDsgXAogIGludDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQxNl90KSBfX2J1aWx0aW5fbmVvbl92Z2V0cV9sYW5lX2kxNigoaW50MTZ4OF90KV9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Z2V0X2xhbmVfdTgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4OF90IF9fczAgPSBfX3AwOyBcCiAgdWludDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ4X3QpIF9fYnVpbHRpbl9uZW9uX3ZnZXRfbGFuZV9pOCgoaW50OHg4X3QpX19zMCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZnZXRfbGFuZV91OChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHg4X3QgX19zMCA9IF9fcDA7IFwKICB1aW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50OF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDhfdCkgX19idWlsdGluX25lb25fdmdldF9sYW5lX2k4KChpbnQ4eDhfdClfX3JldjAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF92Z2V0X2xhbmVfdTgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4OF90IF9fczAgPSBfX3AwOyBcCiAgdWludDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ4X3QpIF9fYnVpbHRpbl9uZW9uX3ZnZXRfbGFuZV9pOCgoaW50OHg4X3QpX19zMCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZnZXRfbGFuZV91MzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDJfdCBfX3MwID0gX19wMDsgXAogIHVpbnQzMl90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZnZXRfbGFuZV9pMzIoKGludDMyeDJfdClfX3MwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmdldF9sYW5lX3UzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4Ml90IF9fczAgPSBfX3AwOyBcCiAgdWludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAxLCAwKTsgXAogIHVpbnQzMl90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZnZXRfbGFuZV9pMzIoKGludDMyeDJfdClfX3JldjAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF92Z2V0X2xhbmVfdTMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMngyX3QgX19zMCA9IF9fcDA7IFwKICB1aW50MzJfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQzMl90KSBfX2J1aWx0aW5fbmVvbl92Z2V0X2xhbmVfaTMyKChpbnQzMngyX3QpX19zMCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNkZWZpbmUgdmdldF9sYW5lX3U2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4MV90IF9fczAgPSBfX3AwOyBcCiAgdWludDY0X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50NjRfdCkgX19idWlsdGluX25lb25fdmdldF9sYW5lX2k2NCgoaW50NjR4MV90KV9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmdldF9sYW5lX3UxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4NF90IF9fczAgPSBfX3AwOyBcCiAgdWludDE2X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MTZfdCkgX19idWlsdGluX25lb25fdmdldF9sYW5lX2kxNigoaW50MTZ4NF90KV9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Z2V0X2xhbmVfdTE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng0X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MTZfdCkgX19idWlsdGluX25lb25fdmdldF9sYW5lX2kxNigoaW50MTZ4NF90KV9fcmV2MCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3ZnZXRfbGFuZV91MTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDRfdCBfX3MwID0gX19wMDsgXAogIHVpbnQxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZnZXRfbGFuZV9pMTYoKGludDE2eDRfdClfX3MwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmdldF9sYW5lX3M4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4OF90IF9fczAgPSBfX3AwOyBcCiAgaW50OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50OF90KSBfX2J1aWx0aW5fbmVvbl92Z2V0X2xhbmVfaTgoKGludDh4OF90KV9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Z2V0X2xhbmVfczgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHg4X3QgX19zMCA9IF9fcDA7IFwKICBpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDhfdCkgX19idWlsdGluX25lb25fdmdldF9sYW5lX2k4KChpbnQ4eDhfdClfX3JldjAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF92Z2V0X2xhbmVfczgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHg4X3QgX19zMCA9IF9fcDA7IFwKICBpbnQ4X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ4X3QpIF9fYnVpbHRpbl9uZW9uX3ZnZXRfbGFuZV9pOCgoaW50OHg4X3QpX19zMCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZnZXRfbGFuZV9mMzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMngyX3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDMyX3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZnZXRfbGFuZV9mMzIoKGZsb2F0MzJ4Ml90KV9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Z2V0X2xhbmVfZjMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4Ml90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMSwgMCk7IFwKICBmbG9hdDMyX3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZnZXRfbGFuZV9mMzIoKGZsb2F0MzJ4Ml90KV9fcmV2MCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3ZnZXRfbGFuZV9mMzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMngyX3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDMyX3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZnZXRfbGFuZV9mMzIoKGZsb2F0MzJ4Ml90KV9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Z2V0X2xhbmVfczMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJfdCBfX3MwID0gX19wMDsgXAogIGludDMyX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQzMl90KSBfX2J1aWx0aW5fbmVvbl92Z2V0X2xhbmVfaTMyKChpbnQzMngyX3QpX19zMCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZnZXRfbGFuZV9zMzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Ml90IF9fczAgPSBfX3AwOyBcCiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDEsIDApOyBcCiAgaW50MzJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZnZXRfbGFuZV9pMzIoKGludDMyeDJfdClfX3JldjAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF92Z2V0X2xhbmVfczMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJfdCBfX3MwID0gX19wMDsgXAogIGludDMyX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQzMl90KSBfX2J1aWx0aW5fbmVvbl92Z2V0X2xhbmVfaTMyKChpbnQzMngyX3QpX19zMCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNkZWZpbmUgdmdldF9sYW5lX3M2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgxX3QgX19zMCA9IF9fcDA7IFwKICBpbnQ2NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50NjRfdCkgX19idWlsdGluX25lb25fdmdldF9sYW5lX2k2NCgoaW50NjR4MV90KV9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmdldF9sYW5lX3MxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MTZfdCkgX19idWlsdGluX25lb25fdmdldF9sYW5lX2kxNigoaW50MTZ4NF90KV9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Z2V0X2xhbmVfczE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDRfdCBfX3MwID0gX19wMDsgXAogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAzLCAyLCAxLCAwKTsgXAogIGludDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQxNl90KSBfX2J1aWx0aW5fbmVvbl92Z2V0X2xhbmVfaTE2KChpbnQxNng0X3QpX19yZXYwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgX19ub3N3YXBfdmdldF9sYW5lX3MxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MTZfdCkgX19idWlsdGluX25lb25fdmdldF9sYW5lX2kxNigoaW50MTZ4NF90KV9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBwb2x5OHg4X3QgdmdldF9sb3dfcDgocG9seTh4MTZfdCBfX3AwKSB7CiAgcG9seTh4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMCwgMSwgMiwgMywgNCwgNSwgNiwgNyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgcG9seTh4OF90IHZnZXRfbG93X3A4KHBvbHk4eDE2X3QgX19wMCkgewogIHBvbHk4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTh4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjAsIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBwb2x5MTZ4NF90IHZnZXRfbG93X3AxNihwb2x5MTZ4OF90IF9fcDApIHsKICBwb2x5MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMCwgMSwgMiwgMyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgcG9seTE2eDRfdCB2Z2V0X2xvd19wMTYocG9seTE2eDhfdCBfX3AwKSB7CiAgcG9seTE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBwb2x5MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjAsIDAsIDEsIDIsIDMpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHg4X3QgdmdldF9sb3dfdTgodWludDh4MTZfdCBfX3AwKSB7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMCwgMSwgMiwgMywgNCwgNSwgNiwgNyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4OF90IHZnZXRfbG93X3U4KHVpbnQ4eDE2X3QgX19wMCkgewogIHVpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjAsIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4Ml90IHZnZXRfbG93X3UzMih1aW50MzJ4NF90IF9fcDApIHsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMCwgMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDJfdCB2Z2V0X2xvd191MzIodWludDMyeDRfdCBfX3AwKSB7CiAgdWludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjAsIDAsIDEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50NjR4MV90IHZnZXRfbG93X3U2NCh1aW50NjR4Ml90IF9fcDApIHsKICB1aW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDY0eDFfdCB2Z2V0X2xvd191NjQodWludDY0eDJfdCBfX3AwKSB7CiAgdWludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjAsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng0X3QgdmdldF9sb3dfdTE2KHVpbnQxNng4X3QgX19wMCkgewogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAwLCAxLCAyLCAzKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4NF90IHZnZXRfbG93X3UxNih1aW50MTZ4OF90IF9fcDApIHsKICB1aW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MCwgMCwgMSwgMiwgMyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4OF90IHZnZXRfbG93X3M4KGludDh4MTZfdCBfX3AwKSB7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ4eDhfdCB2Z2V0X2xvd19zOChpbnQ4eDE2X3QgX19wMCkgewogIGludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYwLCAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMngyX3QgdmdldF9sb3dfZjMyKGZsb2F0MzJ4NF90IF9fcDApIHsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDAsIDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4Ml90IHZnZXRfbG93X2YzMihmbG9hdDMyeDRfdCBfX3AwKSB7CiAgZmxvYXQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MCwgMCwgMSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MTZ4NF90IHZnZXRfbG93X2YxNihmbG9hdDE2eDhfdCBfX3AwKSB7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAwLCAxLCAyLCAzKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDE2eDRfdCB2Z2V0X2xvd19mMTYoZmxvYXQxNng4X3QgX19wMCkgewogIGZsb2F0MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjAsIDAsIDEsIDIsIDMpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMngyX3QgdmdldF9sb3dfczMyKGludDMyeDRfdCBfX3AwKSB7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMCwgMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4Ml90IHZnZXRfbG93X3MzMihpbnQzMng0X3QgX19wMCkgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MCwgMCwgMSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDY0eDFfdCB2Z2V0X2xvd19zNjQoaW50NjR4Ml90IF9fcDApIHsKICBpbnQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ2NHgxX3QgdmdldF9sb3dfczY0KGludDY0eDJfdCBfX3AwKSB7CiAgaW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDY0eDFfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYwLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng0X3QgdmdldF9sb3dfczE2KGludDE2eDhfdCBfX3AwKSB7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMCwgMSwgMiwgMyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4NF90IHZnZXRfbG93X3MxNihpbnQxNng4X3QgX19wMCkgewogIGludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MCwgMCwgMSwgMiwgMyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDE2X3QgdmhhZGRxX3U4KHVpbnQ4eDE2X3QgX19wMCwgdWludDh4MTZfdCBfX3AxKSB7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92aGFkZHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNDgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDE2X3QgdmhhZGRxX3U4KHVpbnQ4eDE2X3QgX19wMCwgdWludDh4MTZfdCBfX3AxKSB7CiAgdWludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkgX19idWlsdGluX25lb25fdmhhZGRxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA0OCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMng0X3QgdmhhZGRxX3UzMih1aW50MzJ4NF90IF9fcDAsIHVpbnQzMng0X3QgX19wMSkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdmhhZGRxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDUwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4NF90IHZoYWRkcV91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92aGFkZHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDUwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDhfdCB2aGFkZHFfdTE2KHVpbnQxNng4X3QgX19wMCwgdWludDE2eDhfdCBfX3AxKSB7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92aGFkZHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNDkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng4X3QgdmhhZGRxX3UxNih1aW50MTZ4OF90IF9fcDAsIHVpbnQxNng4X3QgX19wMSkgewogIHVpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZoYWRkcV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNDkpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDE2X3QgdmhhZGRxX3M4KGludDh4MTZfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSkgewogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZoYWRkcV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAzMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OHgxNl90IHZoYWRkcV9zOChpbnQ4eDE2X3QgX19wMCwgaW50OHgxNl90IF9fcDEpIHsKICBpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZoYWRkcV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgMzIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMng0X3QgdmhhZGRxX3MzMihpbnQzMng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEpIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92aGFkZHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgMzQpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDRfdCB2aGFkZHFfczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkgX19idWlsdGluX25lb25fdmhhZGRxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAzNCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDhfdCB2aGFkZHFfczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZoYWRkcV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAzMyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4OF90IHZoYWRkcV9zMTYoaW50MTZ4OF90IF9fcDAsIGludDE2eDhfdCBfX3AxKSB7CiAgaW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92aGFkZHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDMzKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4OF90IHZoYWRkX3U4KHVpbnQ4eDhfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZoYWRkX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAxNik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4OF90IHZoYWRkX3U4KHVpbnQ4eDhfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIHVpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdmhhZGRfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAxNik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMngyX3QgdmhhZGRfdTMyKHVpbnQzMngyX3QgX19wMCwgdWludDMyeDJfdCBfX3AxKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92aGFkZF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMTgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMngyX3QgdmhhZGRfdTMyKHVpbnQzMngyX3QgX19wMCwgdWludDMyeDJfdCBfX3AxKSB7CiAgdWludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdmhhZGRfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAxOCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng0X3QgdmhhZGRfdTE2KHVpbnQxNng0X3QgX19wMCwgdWludDE2eDRfdCBfX3AxKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92aGFkZF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMTcpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng0X3QgdmhhZGRfdTE2KHVpbnQxNng0X3QgX19wMCwgdWludDE2eDRfdCBfX3AxKSB7CiAgdWludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdmhhZGRfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAxNyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4OF90IHZoYWRkX3M4KGludDh4OF90IF9fcDAsIGludDh4OF90IF9fcDEpIHsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdmhhZGRfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4OF90IHZoYWRkX3M4KGludDh4OF90IF9fcDAsIGludDh4OF90IF9fcDEpIHsKICBpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdmhhZGRfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4Ml90IHZoYWRkX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEpIHsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92aGFkZF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4Ml90IHZoYWRkX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEpIHsKICBpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZoYWRkX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDRfdCB2aGFkZF9zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxKSB7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdmhhZGRfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDRfdCB2aGFkZF9zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxKSB7CiAgaW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92aGFkZF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHgxNl90IHZoc3VicV91OCh1aW50OHgxNl90IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSkgewogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkgX19idWlsdGluX25lb25fdmhzdWJxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDQ4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHgxNl90IHZoc3VicV91OCh1aW50OHgxNl90IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSkgewogIHVpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3Zoc3VicV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNDgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZoc3VicV91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3Zoc3VicV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA1MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2aHN1YnFfdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxKSB7CiAgdWludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdmhzdWJxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA1MCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng4X3QgdmhzdWJxX3UxNih1aW50MTZ4OF90IF9fcDAsIHVpbnQxNng4X3QgX19wMSkgewogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkgX19idWlsdGluX25lb25fdmhzdWJxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDQ5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4OF90IHZoc3VicV91MTYodWludDE2eDhfdCBfX3AwLCB1aW50MTZ4OF90IF9fcDEpIHsKICB1aW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92aHN1YnFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDQ5KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHgxNl90IHZoc3VicV9zOChpbnQ4eDE2X3QgX19wMCwgaW50OHgxNl90IF9fcDEpIHsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92aHN1YnFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgMzIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4MTZfdCB2aHN1YnFfczgoaW50OHgxNl90IF9fcDAsIGludDh4MTZfdCBfX3AxKSB7CiAgaW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92aHN1YnFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDMyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4NF90IHZoc3VicV9zMzIoaW50MzJ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkgX19idWlsdGluX25lb25fdmhzdWJxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDM0KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMng0X3QgdmhzdWJxX3MzMihpbnQzMng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEpIHsKICBpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3Zoc3VicV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgMzQpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng4X3QgdmhzdWJxX3MxNihpbnQxNng4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEpIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92aHN1YnFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgMzMpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDhfdCB2aHN1YnFfczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDhfdCkgX19idWlsdGluX25lb25fdmhzdWJxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAzMyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDhfdCB2aHN1Yl91OCh1aW50OHg4X3QgX19wMCwgdWludDh4OF90IF9fcDEpIHsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92aHN1Yl92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMTYpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDhfdCB2aHN1Yl91OCh1aW50OHg4X3QgX19wMCwgdWludDh4OF90IF9fcDEpIHsKICB1aW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3Zoc3ViX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMTYpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4Ml90IHZoc3ViX3UzMih1aW50MzJ4Ml90IF9fcDAsIHVpbnQzMngyX3QgX19wMSkgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdmhzdWJfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDE4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4Ml90IHZoc3ViX3UzMih1aW50MzJ4Ml90IF9fcDAsIHVpbnQzMngyX3QgX19wMSkgewogIHVpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3Zoc3ViX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMTgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4NF90IHZoc3ViX3UxNih1aW50MTZ4NF90IF9fcDAsIHVpbnQxNng0X3QgX19wMSkgewogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdmhzdWJfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDE3KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4NF90IHZoc3ViX3UxNih1aW50MTZ4NF90IF9fcDAsIHVpbnQxNng0X3QgX19wMSkgewogIHVpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3Zoc3ViX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMTcpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDhfdCB2aHN1Yl9zOChpbnQ4eDhfdCBfX3AwLCBpbnQ4eDhfdCBfX3AxKSB7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3Zoc3ViX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ4eDhfdCB2aHN1Yl9zOChpbnQ4eDhfdCBfX3AwLCBpbnQ4eDhfdCBfX3AxKSB7CiAgaW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3Zoc3ViX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDJfdCB2aHN1Yl9zMzIoaW50MzJ4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxKSB7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdmhzdWJfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDJfdCB2aHN1Yl9zMzIoaW50MzJ4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxKSB7CiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92aHN1Yl92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng0X3QgdmhzdWJfczE2KGludDE2eDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSkgewogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3Zoc3ViX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng0X3QgdmhzdWJfczE2KGludDE2eDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSkgewogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdmhzdWJfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMV9wOChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHg4X3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFfdihfX3AwLCA0KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMV9wOChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHg4X3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFfdihfX3AwLCA0KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMV9wMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHBvbHkxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFfdihfX3AwLCA1KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMV9wMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHBvbHkxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFfdihfX3AwLCA1KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMXFfcDgoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKHBvbHk4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3YoX19wMCwgMzYpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxcV9wOChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHgxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAocG9seTh4MTZfdCkgX19idWlsdGluX25lb25fdmxkMXFfdihfX3AwLCAzNik7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFxX3AxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAocG9seTE2eDhfdCkgX19idWlsdGluX25lb25fdmxkMXFfdihfX3AwLCAzNyk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFxX3AxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAocG9seTE2eDhfdCkgX19idWlsdGluX25lb25fdmxkMXFfdihfX3AwLCAzNyk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFxX3U4KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDE2X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92bGQxcV92KF9fcDAsIDQ4KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMXFfdTgoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3YoX19wMCwgNDgpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxcV91MzIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3YoX19wMCwgNTApOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxcV91MzIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3YoX19wMCwgNTApOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxcV91NjQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3YoX19wMCwgNTEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxcV91NjQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3YoX19wMCwgNTEpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxcV91MTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3YoX19wMCwgNDkpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxcV91MTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3YoX19wMCwgNDkpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxcV9zOChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3YoX19wMCwgMzIpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxcV9zOChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3YoX19wMCwgMzIpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxcV9mMzIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdmxkMXFfdihfX3AwLCA0MSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFxX2YzMihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92bGQxcV92KF9fcDAsIDQxKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMXFfczMyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDMyeDRfdCkgX19idWlsdGluX25lb25fdmxkMXFfdihfX3AwLCAzNCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFxX3MzMihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3YoX19wMCwgMzQpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxcV9zNjQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92bGQxcV92KF9fcDAsIDM1KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMXFfczY0KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDY0eDJfdCkgX19idWlsdGluX25lb25fdmxkMXFfdihfX3AwLCAzNSk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFxX3MxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3YoX19wMCwgMzMpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxcV9zMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92bGQxcV92KF9fcDAsIDMzKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMV91OChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHg4X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFfdihfX3AwLCAxNik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFfdTgoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92bGQxX3YoX19wMCwgMTYpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxX3UzMihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdmxkMV92KF9fcDAsIDE4KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMV91MzIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFfdihfX3AwLCAxOCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNkZWZpbmUgdmxkMV91NjQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDFfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFfdihfX3AwLCAxOSk7IFwKICBfX3JldDsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxX3UxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdmxkMV92KF9fcDAsIDE3KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMV91MTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFfdihfX3AwLCAxNyk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFfczgoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHg4X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdmxkMV92KF9fcDAsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxX3M4KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFfdihfX3AwLCAwKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMV9mMzIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMngyX3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdmxkMV92KF9fcDAsIDkpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxX2YzMihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92bGQxX3YoX19wMCwgOSk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFfczMyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdmxkMV92KF9fcDAsIDIpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxX3MzMihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMngyX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFfdihfX3AwLCAyKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2bGQxX3M2NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgxX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFfdihfX3AwLCAzKTsgXAogIF9fcmV0OyBcCn0pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFfczE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdmxkMV92KF9fcDAsIDEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxX3MxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFfdihfX3AwLCAxKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMV9kdXBfcDgoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAocG9seTh4OF90KSBfX2J1aWx0aW5fbmVvbl92bGQxX2R1cF92KF9fcDAsIDQpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxX2R1cF9wOChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHg4X3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFfZHVwX3YoX19wMCwgNCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFfZHVwX3AxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAocG9seTE2eDRfdCkgX19idWlsdGluX25lb25fdmxkMV9kdXBfdihfX3AwLCA1KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMV9kdXBfcDE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92bGQxX2R1cF92KF9fcDAsIDUpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxcV9kdXBfcDgoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKHBvbHk4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX2R1cF92KF9fcDAsIDM2KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMXFfZHVwX3A4KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4eDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92bGQxcV9kdXBfdihfX3AwLCAzNik7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFxX2R1cF9wMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHBvbHkxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX2R1cF92KF9fcDAsIDM3KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMXFfZHVwX3AxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAocG9seTE2eDhfdCkgX19idWlsdGluX25lb25fdmxkMXFfZHVwX3YoX19wMCwgMzcpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxcV9kdXBfdTgoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX2R1cF92KF9fcDAsIDQ4KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMXFfZHVwX3U4KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDE2X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92bGQxcV9kdXBfdihfX3AwLCA0OCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFxX2R1cF91MzIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX2R1cF92KF9fcDAsIDUwKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMXFfZHVwX3UzMihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdmxkMXFfZHVwX3YoX19wMCwgNTApOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxcV9kdXBfdTY0KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92bGQxcV9kdXBfdihfX3AwLCA1MSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFxX2R1cF91NjQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX2R1cF92KF9fcDAsIDUxKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMXFfZHVwX3UxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDE2eDhfdCkgX19idWlsdGluX25lb25fdmxkMXFfZHVwX3YoX19wMCwgNDkpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxcV9kdXBfdTE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92bGQxcV9kdXBfdihfX3AwLCA0OSk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFxX2R1cF9zOChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX2R1cF92KF9fcDAsIDMyKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMXFfZHVwX3M4KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDh4MTZfdCkgX19idWlsdGluX25lb25fdmxkMXFfZHVwX3YoX19wMCwgMzIpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxcV9kdXBfZjMyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX2R1cF92KF9fcDAsIDQxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMXFfZHVwX2YzMihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92bGQxcV9kdXBfdihfX3AwLCA0MSk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFxX2R1cF9zMzIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92bGQxcV9kdXBfdihfX3AwLCAzNCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFxX2R1cF9zMzIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92bGQxcV9kdXBfdihfX3AwLCAzNCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFxX2R1cF9zNjQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92bGQxcV9kdXBfdihfX3AwLCAzNSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFxX2R1cF9zNjQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92bGQxcV9kdXBfdihfX3AwLCAzNSk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFxX2R1cF9zMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92bGQxcV9kdXBfdihfX3AwLCAzMyk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFxX2R1cF9zMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92bGQxcV9kdXBfdihfX3AwLCAzMyk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFfZHVwX3U4KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdmxkMV9kdXBfdihfX3AwLCAxNik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFfZHVwX3U4KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdmxkMV9kdXBfdihfX3AwLCAxNik7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFfZHVwX3UzMihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdmxkMV9kdXBfdihfX3AwLCAxOCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFfZHVwX3UzMihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdmxkMV9kdXBfdihfX3AwLCAxOCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNkZWZpbmUgdmxkMV9kdXBfdTY0KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgxX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92bGQxX2R1cF92KF9fcDAsIDE5KTsgXAogIF9fcmV0OyBcCn0pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFfZHVwX3UxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdmxkMV9kdXBfdihfX3AwLCAxNyk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFfZHVwX3UxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdmxkMV9kdXBfdihfX3AwLCAxNyk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFfZHVwX3M4KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFfZHVwX3YoX19wMCwgMCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFfZHVwX3M4KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFfZHVwX3YoX19wMCwgMCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFfZHVwX2YzMihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92bGQxX2R1cF92KF9fcDAsIDkpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxX2R1cF9mMzIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMngyX3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdmxkMV9kdXBfdihfX3AwLCA5KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMV9kdXBfczMyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdmxkMV9kdXBfdihfX3AwLCAyKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMV9kdXBfczMyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdmxkMV9kdXBfdihfX3AwLCAyKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2bGQxX2R1cF9zNjQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4MV90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92bGQxX2R1cF92KF9fcDAsIDMpOyBcCiAgX19yZXQ7IFwKfSkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMV9kdXBfczE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdmxkMV9kdXBfdihfX3AwLCAxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMV9kdXBfczE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdmxkMV9kdXBfdihfX3AwLCAxKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMV9sYW5lX3A4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4eDhfdCBfX3MxID0gX19wMTsgXAogIHBvbHk4eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHBvbHk4eDhfdCkgX19idWlsdGluX25lb25fdmxkMV9sYW5lX3YoX19wMCwgKGludDh4OF90KV9fczEsIF9fcDIsIDQpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxX2xhbmVfcDgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4OF90IF9fczEgPSBfX3AxOyBcCiAgcG9seTh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgcG9seTh4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAocG9seTh4OF90KSBfX2J1aWx0aW5fbmVvbl92bGQxX2xhbmVfdihfX3AwLCAoaW50OHg4X3QpX19yZXYxLCBfX3AyLCA0KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMV9sYW5lX3AxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4NF90IF9fczEgPSBfX3AxOyBcCiAgcG9seTE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHBvbHkxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFfbGFuZV92KF9fcDAsIChpbnQ4eDhfdClfX3MxLCBfX3AyLCA1KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMV9sYW5lX3AxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4NF90IF9fczEgPSBfX3AxOyBcCiAgcG9seTE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAzLCAyLCAxLCAwKTsgXAogIHBvbHkxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92bGQxX2xhbmVfdihfX3AwLCAoaW50OHg4X3QpX19yZXYxLCBfX3AyLCA1KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMXFfbGFuZV9wOChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHgxNl90IF9fczEgPSBfX3AxOyBcCiAgcG9seTh4MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKHBvbHk4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX2xhbmVfdihfX3AwLCAoaW50OHgxNl90KV9fczEsIF9fcDIsIDM2KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMXFfbGFuZV9wOChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHgxNl90IF9fczEgPSBfX3AxOyBcCiAgcG9seTh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHBvbHk4eDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92bGQxcV9sYW5lX3YoX19wMCwgKGludDh4MTZfdClfX3JldjEsIF9fcDIsIDM2KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMXFfbGFuZV9wMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDhfdCBfX3MxID0gX19wMTsgXAogIHBvbHkxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92bGQxcV9sYW5lX3YoX19wMCwgKGludDh4MTZfdClfX3MxLCBfX3AyLCAzNyk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFxX2xhbmVfcDE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng4X3QgX19zMSA9IF9fcDE7IFwKICBwb2x5MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgcG9seTE2eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHBvbHkxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX2xhbmVfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MSwgX19wMiwgMzcpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxcV9sYW5lX3U4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDE2X3QgX19zMSA9IF9fcDE7IFwKICB1aW50OHgxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDh4MTZfdCkgX19idWlsdGluX25lb25fdmxkMXFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19zMSwgX19wMiwgNDgpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxcV9sYW5lX3U4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDE2X3QgX19zMSA9IF9fcDE7IFwKICB1aW50OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDh4MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX2xhbmVfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MSwgX19wMiwgNDgpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxcV9sYW5lX3UzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NF90IF9fczEgPSBfX3AxOyBcCiAgdWludDMyeDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX2xhbmVfdihfX3AwLCAoaW50OHgxNl90KV9fczEsIF9fcDIsIDUwKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMXFfbGFuZV91MzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDRfdCBfX3MxID0gX19wMTsgXAogIHVpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMywgMiwgMSwgMCk7IFwKICB1aW50MzJ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdmxkMXFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLCBfX3AyLCA1MCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFxX2xhbmVfdTY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyX3QgX19zMSA9IF9fcDE7IFwKICB1aW50NjR4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDY0eDJfdCkgX19idWlsdGluX25lb25fdmxkMXFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19zMSwgX19wMiwgNTEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxcV9sYW5lX3U2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4Ml90IF9fczEgPSBfX3AxOyBcCiAgdWludDY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAxLCAwKTsgXAogIHVpbnQ2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92bGQxcV9sYW5lX3YoX19wMCwgKGludDh4MTZfdClfX3JldjEsIF9fcDIsIDUxKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMXFfbGFuZV91MTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDhfdCBfX3MxID0gX19wMTsgXAogIHVpbnQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92bGQxcV9sYW5lX3YoX19wMCwgKGludDh4MTZfdClfX3MxLCBfX3AyLCA0OSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFxX2xhbmVfdTE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng4X3QgX19zMSA9IF9fcDE7IFwKICB1aW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX2xhbmVfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MSwgX19wMiwgNDkpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxcV9sYW5lX3M4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4MTZfdCBfX3MxID0gX19wMTsgXAogIGludDh4MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDh4MTZfdCkgX19idWlsdGluX25lb25fdmxkMXFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19zMSwgX19wMiwgMzIpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxcV9sYW5lX3M4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4MTZfdCBfX3MxID0gX19wMTsgXAogIGludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDh4MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDh4MTZfdCkgX19idWlsdGluX25lb25fdmxkMXFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLCBfX3AyLCAzMik7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFxX2xhbmVfZjMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NF90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQzMng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdmxkMXFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19zMSwgX19wMiwgNDEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxcV9sYW5lX2YzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDRfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQzMng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdmxkMXFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLCBfX3AyLCA0MSk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFxX2xhbmVfczMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDRfdCBfX3MxID0gX19wMTsgXAogIGludDMyeDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDMyeDRfdCkgX19idWlsdGluX25lb25fdmxkMXFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19zMSwgX19wMiwgMzQpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxcV9sYW5lX3MzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMSA9IF9fcDE7IFwKICBpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMywgMiwgMSwgMCk7IFwKICBpbnQzMng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX2xhbmVfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MSwgX19wMiwgMzQpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxcV9sYW5lX3M2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgyX3QgX19zMSA9IF9fcDE7IFwKICBpbnQ2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX2xhbmVfdihfX3AwLCAoaW50OHgxNl90KV9fczEsIF9fcDIsIDM1KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMXFfbGFuZV9zNjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4Ml90IF9fczEgPSBfX3AxOyBcCiAgaW50NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDEsIDApOyBcCiAgaW50NjR4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92bGQxcV9sYW5lX3YoX19wMCwgKGludDh4MTZfdClfX3JldjEsIF9fcDIsIDM1KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMXFfbGFuZV9zMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OF90IF9fczEgPSBfX3AxOyBcCiAgaW50MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92bGQxcV9sYW5lX3YoX19wMCwgKGludDh4MTZfdClfX3MxLCBfX3AyLCAzMyk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFxX2xhbmVfczE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDhfdCBfX3MxID0gX19wMTsgXAogIGludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDE2eDhfdCkgX19idWlsdGluX25lb25fdmxkMXFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLCBfX3AyLCAzMyk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFfbGFuZV91OChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHg4X3QgX19zMSA9IF9fcDE7IFwKICB1aW50OHg4X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFfbGFuZV92KF9fcDAsIChpbnQ4eDhfdClfX3MxLCBfX3AyLCAxNik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFfbGFuZV91OChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHg4X3QgX19zMSA9IF9fcDE7IFwKICB1aW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50OHg4X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFfbGFuZV92KF9fcDAsIChpbnQ4eDhfdClfX3JldjEsIF9fcDIsIDE2KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMV9sYW5lX3UzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4Ml90IF9fczEgPSBfX3AxOyBcCiAgdWludDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFfbGFuZV92KF9fcDAsIChpbnQ4eDhfdClfX3MxLCBfX3AyLCAxOCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFfbGFuZV91MzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDJfdCBfX3MxID0gX19wMTsgXAogIHVpbnQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMSwgMCk7IFwKICB1aW50MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdmxkMV9sYW5lX3YoX19wMCwgKGludDh4OF90KV9fcmV2MSwgX19wMiwgMTgpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojZGVmaW5lIHZsZDFfbGFuZV91NjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDFfdCBfX3MxID0gX19wMTsgXAogIHVpbnQ2NHgxX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92bGQxX2xhbmVfdihfX3AwLCAoaW50OHg4X3QpX19zMSwgX19wMiwgMTkpOyBcCiAgX19yZXQ7IFwKfSkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMV9sYW5lX3UxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4NF90IF9fczEgPSBfX3AxOyBcCiAgdWludDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFfbGFuZV92KF9fcDAsIChpbnQ4eDhfdClfX3MxLCBfX3AyLCAxNyk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFfbGFuZV91MTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDRfdCBfX3MxID0gX19wMTsgXAogIHVpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMywgMiwgMSwgMCk7IFwKICB1aW50MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdmxkMV9sYW5lX3YoX19wMCwgKGludDh4OF90KV9fcmV2MSwgX19wMiwgMTcpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxX2xhbmVfczgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHg4X3QgX19zMSA9IF9fcDE7IFwKICBpbnQ4eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92bGQxX2xhbmVfdihfX3AwLCAoaW50OHg4X3QpX19zMSwgX19wMiwgMCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFfbGFuZV9zOChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDhfdCBfX3MxID0gX19wMTsgXAogIGludDh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50OHg4X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdmxkMV9sYW5lX3YoX19wMCwgKGludDh4OF90KV9fcmV2MSwgX19wMiwgMCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFfbGFuZV9mMzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMngyX3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92bGQxX2xhbmVfdihfX3AwLCAoaW50OHg4X3QpX19zMSwgX19wMiwgOSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFfbGFuZV9mMzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMngyX3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAxLCAwKTsgXAogIGZsb2F0MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFfbGFuZV92KF9fcDAsIChpbnQ4eDhfdClfX3JldjEsIF9fcDIsIDkpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxX2xhbmVfczMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJfdCBfX3MxID0gX19wMTsgXAogIGludDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdmxkMV9sYW5lX3YoX19wMCwgKGludDh4OF90KV9fczEsIF9fcDIsIDIpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxX2xhbmVfczMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJfdCBfX3MxID0gX19wMTsgXAogIGludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAxLCAwKTsgXAogIGludDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdmxkMV9sYW5lX3YoX19wMCwgKGludDh4OF90KV9fcmV2MSwgX19wMiwgMik7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNkZWZpbmUgdmxkMV9sYW5lX3M2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgxX3QgX19zMSA9IF9fcDE7IFwKICBpbnQ2NHgxX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFfbGFuZV92KF9fcDAsIChpbnQ4eDhfdClfX3MxLCBfX3AyLCAzKTsgXAogIF9fcmV0OyBcCn0pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFfbGFuZV9zMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NF90IF9fczEgPSBfX3AxOyBcCiAgaW50MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92bGQxX2xhbmVfdihfX3AwLCAoaW50OHg4X3QpX19zMSwgX19wMiwgMSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFfbGFuZV9zMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NF90IF9fczEgPSBfX3AxOyBcCiAgaW50MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92bGQxX2xhbmVfdihfX3AwLCAoaW50OHg4X3QpX19yZXYxLCBfX3AyLCAxKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMV9wOF94MihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHg4eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFfeDJfdigmX19yZXQsIF9fcDAsIDQpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxX3A4X3gyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4eDh4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMV94Ml92KCZfX3JldCwgX19wMCwgNCk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFfcDE2X3gyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng0eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFfeDJfdigmX19yZXQsIF9fcDAsIDUpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxX3AxNl94MihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4NHgyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxX3gyX3YoJl9fcmV0LCBfX3AwLCA1KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMXFfcDhfeDIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4MTZ4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMXFfeDJfdigmX19yZXQsIF9fcDAsIDM2KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMXFfcDhfeDIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4MTZ4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMXFfeDJfdigmX19yZXQsIF9fcDAsIDM2KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMXFfcDE2X3gyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng4eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3gyX3YoJl9fcmV0LCBfX3AwLCAzNyk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFxX3AxNl94MihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4OHgyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxcV94Ml92KCZfX3JldCwgX19wMCwgMzcpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxcV91OF94MihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHgxNngyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxcV94Ml92KCZfX3JldCwgX19wMCwgNDgpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxcV91OF94MihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHgxNngyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxcV94Ml92KCZfX3JldCwgX19wMCwgNDgpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxcV91MzJfeDIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDR4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMXFfeDJfdigmX19yZXQsIF9fcDAsIDUwKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMXFfdTMyX3gyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3gyX3YoJl9fcmV0LCBfX3AwLCA1MCk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFxX3U2NF94MihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4MngyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxcV94Ml92KCZfX3JldCwgX19wMCwgNTEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxcV91NjRfeDIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDJ4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMXFfeDJfdigmX19yZXQsIF9fcDAsIDUxKTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMXFfdTE2X3gyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng4eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3gyX3YoJl9fcmV0LCBfX3AwLCA0OSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFxX3UxNl94MihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4OHgyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxcV94Ml92KCZfX3JldCwgX19wMCwgNDkpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxcV9zOF94MihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDE2eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3gyX3YoJl9fcmV0LCBfX3AwLCAzMik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFxX3M4X3gyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4MTZ4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMXFfeDJfdigmX19yZXQsIF9fcDAsIDMyKTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMXFfZjMyX3gyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NHgyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxcV94Ml92KCZfX3JldCwgX19wMCwgNDEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxcV9mMzJfeDIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3gyX3YoJl9fcmV0LCBfX3AwLCA0MSk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFxX3MzMl94MihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3gyX3YoJl9fcmV0LCBfX3AwLCAzNCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFxX3MzMl94MihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3gyX3YoJl9fcmV0LCBfX3AwLCAzNCk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFxX3M2NF94MihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgyeDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3gyX3YoJl9fcmV0LCBfX3AwLCAzNSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFxX3M2NF94MihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgyeDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3gyX3YoJl9fcmV0LCBfX3AwLCAzNSk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFxX3MxNl94MihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3gyX3YoJl9fcmV0LCBfX3AwLCAzMyk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFxX3MxNl94MihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3gyX3YoJl9fcmV0LCBfX3AwLCAzMyk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFfdThfeDIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4OHgyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxX3gyX3YoJl9fcmV0LCBfX3AwLCAxNik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFfdThfeDIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4OHgyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxX3gyX3YoJl9fcmV0LCBfX3AwLCAxNik7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFfdTMyX3gyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMngyeDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFfeDJfdigmX19yZXQsIF9fcDAsIDE4KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMV91MzJfeDIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDJ4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMV94Ml92KCZfX3JldCwgX19wMCwgMTgpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojZGVmaW5lIHZsZDFfdTY0X3gyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgxeDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFfeDJfdigmX19yZXQsIF9fcDAsIDE5KTsgXAogIF9fcmV0OyBcCn0pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFfdTE2X3gyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng0eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFfeDJfdigmX19yZXQsIF9fcDAsIDE3KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMV91MTZfeDIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDR4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMV94Ml92KCZfX3JldCwgX19wMCwgMTcpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxX3M4X3gyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4OHgyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxX3gyX3YoJl9fcmV0LCBfX3AwLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMV9zOF94MihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDh4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMV94Ml92KCZfX3JldCwgX19wMCwgMCk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFfZjMyX3gyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4MngyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxX3gyX3YoJl9fcmV0LCBfX3AwLCA5KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMV9mMzJfeDIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMngyeDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFfeDJfdigmX19yZXQsIF9fcDAsIDkpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxX3MzMl94MihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMngyeDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFfeDJfdigmX19yZXQsIF9fcDAsIDIpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxX3MzMl94MihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMngyeDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFfeDJfdigmX19yZXQsIF9fcDAsIDIpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojZGVmaW5lIHZsZDFfczY0X3gyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDF4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMV94Ml92KCZfX3JldCwgX19wMCwgMyk7IFwKICBfX3JldDsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxX3MxNl94MihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng0eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFfeDJfdigmX19yZXQsIF9fcDAsIDEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxX3MxNl94MihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng0eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFfeDJfdigmX19yZXQsIF9fcDAsIDEpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxX3A4X3gzKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4eDh4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMV94M192KCZfX3JldCwgX19wMCwgNCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFfcDhfeDMoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4OHgzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxX3gzX3YoJl9fcmV0LCBfX3AwLCA0KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMV9wMTZfeDMoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDR4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMV94M192KCZfX3JldCwgX19wMCwgNSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFfcDE2X3gzKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng0eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFfeDNfdigmX19yZXQsIF9fcDAsIDUpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxcV9wOF94MyhfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHgxNngzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxcV94M192KCZfX3JldCwgX19wMCwgMzYpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxcV9wOF94MyhfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHgxNngzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxcV94M192KCZfX3JldCwgX19wMCwgMzYpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxcV9wMTZfeDMoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDh4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMXFfeDNfdigmX19yZXQsIF9fcDAsIDM3KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMXFfcDE2X3gzKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng4eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3gzX3YoJl9fcmV0LCBfX3AwLCAzNyk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFxX3U4X3gzKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDE2eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3gzX3YoJl9fcmV0LCBfX3AwLCA0OCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFxX3U4X3gzKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDE2eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3gzX3YoJl9fcmV0LCBfX3AwLCA0OCk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFxX3UzMl94MyhfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NHgzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxcV94M192KCZfX3JldCwgX19wMCwgNTApOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxcV91MzJfeDMoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDR4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMXFfeDNfdigmX19yZXQsIF9fcDAsIDUwKTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMXFfdTY0X3gzKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyeDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3gzX3YoJl9fcmV0LCBfX3AwLCA1MSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFxX3U2NF94MyhfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4MngzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxcV94M192KCZfX3JldCwgX19wMCwgNTEpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxcV91MTZfeDMoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDh4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMXFfeDNfdigmX19yZXQsIF9fcDAsIDQ5KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMXFfdTE2X3gzKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng4eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3gzX3YoJl9fcmV0LCBfX3AwLCA0OSk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFxX3M4X3gzKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4MTZ4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMXFfeDNfdigmX19yZXQsIF9fcDAsIDMyKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMXFfczhfeDMoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHgxNngzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxcV94M192KCZfX3JldCwgX19wMCwgMzIpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxcV9mMzJfeDMoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3gzX3YoJl9fcmV0LCBfX3AwLCA0MSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFxX2YzMl94MyhfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDR4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMXFfeDNfdigmX19yZXQsIF9fcDAsIDQxKTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMXFfczMyX3gzKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDR4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMXFfeDNfdigmX19yZXQsIF9fcDAsIDM0KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMXFfczMyX3gzKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDR4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMXFfeDNfdigmX19yZXQsIF9fcDAsIDM0KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMXFfczY0X3gzKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJ4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMXFfeDNfdigmX19yZXQsIF9fcDAsIDM1KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMXFfczY0X3gzKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJ4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMXFfeDNfdigmX19yZXQsIF9fcDAsIDM1KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMXFfczE2X3gzKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDh4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMXFfeDNfdigmX19yZXQsIF9fcDAsIDMzKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMXFfczE2X3gzKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDh4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMXFfeDNfdigmX19yZXQsIF9fcDAsIDMzKTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMV91OF94MyhfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHg4eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFfeDNfdigmX19yZXQsIF9fcDAsIDE2KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMV91OF94MyhfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHg4eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFfeDNfdigmX19yZXQsIF9fcDAsIDE2KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMV91MzJfeDMoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDJ4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMV94M192KCZfX3JldCwgX19wMCwgMTgpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxX3UzMl94MyhfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4MngzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxX3gzX3YoJl9fcmV0LCBfX3AwLCAxOCk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNkZWZpbmUgdmxkMV91NjRfeDMoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDF4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMV94M192KCZfX3JldCwgX19wMCwgMTkpOyBcCiAgX19yZXQ7IFwKfSkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMV91MTZfeDMoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDR4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMV94M192KCZfX3JldCwgX19wMCwgMTcpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxX3UxNl94MyhfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4NHgzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxX3gzX3YoJl9fcmV0LCBfX3AwLCAxNyk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFfczhfeDMoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHg4eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFfeDNfdigmX19yZXQsIF9fcDAsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxX3M4X3gzKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4OHgzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxX3gzX3YoJl9fcmV0LCBfX3AwLCAwKTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMV9mMzJfeDMoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMngyeDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFfeDNfdigmX19yZXQsIF9fcDAsIDkpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxX2YzMl94MyhfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJ4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMV94M192KCZfX3JldCwgX19wMCwgOSk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFfczMyX3gzKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJ4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMV94M192KCZfX3JldCwgX19wMCwgMik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFfczMyX3gzKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJ4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMV94M192KCZfX3JldCwgX19wMCwgMik7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNkZWZpbmUgdmxkMV9zNjRfeDMoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4MXgzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxX3gzX3YoJl9fcmV0LCBfX3AwLCAzKTsgXAogIF9fcmV0OyBcCn0pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFfczE2X3gzKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDR4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMV94M192KCZfX3JldCwgX19wMCwgMSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFfczE2X3gzKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDR4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMV94M192KCZfX3JldCwgX19wMCwgMSk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFfcDhfeDQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4OHg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxX3g0X3YoJl9fcmV0LCBfX3AwLCA0KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMV9wOF94NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHg4eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFfeDRfdigmX19yZXQsIF9fcDAsIDQpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzNdLCBfX3JldC52YWxbM10sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxX3AxNl94NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4NHg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxX3g0X3YoJl9fcmV0LCBfX3AwLCA1KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMV9wMTZfeDQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDR4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMV94NF92KCZfX3JldCwgX19wMCwgNSk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbM10sIF9fcmV0LnZhbFszXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFxX3A4X3g0KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4eDE2eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3g0X3YoJl9fcmV0LCBfX3AwLCAzNik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFxX3A4X3g0KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4eDE2eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3g0X3YoJl9fcmV0LCBfX3AwLCAzNik7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbM10sIF9fcmV0LnZhbFszXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFxX3AxNl94NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4OHg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxcV94NF92KCZfX3JldCwgX19wMCwgMzcpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxcV9wMTZfeDQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDh4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMXFfeDRfdigmX19yZXQsIF9fcDAsIDM3KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFszXSwgX19yZXQudmFsWzNdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMXFfdThfeDQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4MTZ4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMXFfeDRfdigmX19yZXQsIF9fcDAsIDQ4KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMXFfdThfeDQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4MTZ4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMXFfeDRfdigmX19yZXQsIF9fcDAsIDQ4KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFszXSwgX19yZXQudmFsWzNdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMXFfdTMyX3g0KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3g0X3YoJl9fcmV0LCBfX3AwLCA1MCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFxX3UzMl94NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NHg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxcV94NF92KCZfX3JldCwgX19wMCwgNTApOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzNdLCBfX3JldC52YWxbM10sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxcV91NjRfeDQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDJ4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMXFfeDRfdigmX19yZXQsIF9fcDAsIDUxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMXFfdTY0X3g0KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyeDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3g0X3YoJl9fcmV0LCBfX3AwLCA1MSk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMSwgMCk7IFwKICBfX3JldC52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbM10sIF9fcmV0LnZhbFszXSwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFxX3UxNl94NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4OHg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxcV94NF92KCZfX3JldCwgX19wMCwgNDkpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxcV91MTZfeDQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDh4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMXFfeDRfdigmX19yZXQsIF9fcDAsIDQ5KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFszXSwgX19yZXQudmFsWzNdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMXFfczhfeDQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHgxNng0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxcV94NF92KCZfX3JldCwgX19wMCwgMzIpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxcV9zOF94NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDE2eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3g0X3YoJl9fcmV0LCBfX3AwLCAzMik7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbM10sIF9fcmV0LnZhbFszXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFxX2YzMl94NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDR4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMXFfeDRfdigmX19yZXQsIF9fcDAsIDQxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMXFfZjMyX3g0KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NHg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxcV94NF92KCZfX3JldCwgX19wMCwgNDEpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzNdLCBfX3JldC52YWxbM10sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxcV9zMzJfeDQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NHg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxcV94NF92KCZfX3JldCwgX19wMCwgMzQpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxcV9zMzJfeDQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NHg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxcV94NF92KCZfX3JldCwgX19wMCwgMzQpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzNdLCBfX3JldC52YWxbM10sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxcV9zNjRfeDQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4Mng0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxcV94NF92KCZfX3JldCwgX19wMCwgMzUpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxcV9zNjRfeDQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4Mng0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxcV94NF92KCZfX3JldCwgX19wMCwgMzUpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDEsIDApOyBcCiAgX19yZXQudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzNdLCBfX3JldC52YWxbM10sIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxcV9zMTZfeDQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OHg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxcV94NF92KCZfX3JldCwgX19wMCwgMzMpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxcV9zMTZfeDQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OHg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxcV94NF92KCZfX3JldCwgX19wMCwgMzMpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzNdLCBfX3JldC52YWxbM10sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxX3U4X3g0KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDh4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMV94NF92KCZfX3JldCwgX19wMCwgMTYpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxX3U4X3g0KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDh4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMV94NF92KCZfX3JldCwgX19wMCwgMTYpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzNdLCBfX3JldC52YWxbM10sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxX3UzMl94NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4Mng0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxX3g0X3YoJl9fcmV0LCBfX3AwLCAxOCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFfdTMyX3g0KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMngyeDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFfeDRfdigmX19yZXQsIF9fcDAsIDE4KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFszXSwgX19yZXQudmFsWzNdLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2bGQxX3U2NF94NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4MXg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxX3g0X3YoJl9fcmV0LCBfX3AwLCAxOSk7IFwKICBfX3JldDsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxX3UxNl94NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4NHg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxX3g0X3YoJl9fcmV0LCBfX3AwLCAxNyk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFfdTE2X3g0KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng0eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFfeDRfdigmX19yZXQsIF9fcDAsIDE3KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFszXSwgX19yZXQudmFsWzNdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMV9zOF94NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDh4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMV94NF92KCZfX3JldCwgX19wMCwgMCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFfczhfeDQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHg4eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFfeDRfdigmX19yZXQsIF9fcDAsIDApOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzNdLCBfX3JldC52YWxbM10sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxX2YzMl94NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJ4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMV94NF92KCZfX3JldCwgX19wMCwgOSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFfZjMyX3g0KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4Mng0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxX3g0X3YoJl9fcmV0LCBfX3AwLCA5KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFszXSwgX19yZXQudmFsWzNdLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMV9zMzJfeDQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Mng0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxX3g0X3YoJl9fcmV0LCBfX3AwLCAyKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMV9zMzJfeDQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Mng0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxX3g0X3YoJl9fcmV0LCBfX3AwLCAyKTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFszXSwgX19yZXQudmFsWzNdLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2bGQxX3M2NF94NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgxeDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFfeDRfdigmX19yZXQsIF9fcDAsIDMpOyBcCiAgX19yZXQ7IFwKfSkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMV9zMTZfeDQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NHg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxX3g0X3YoJl9fcmV0LCBfX3AwLCAxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMV9zMTZfeDQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NHg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxX3g0X3YoJl9fcmV0LCBfX3AwLCAxKTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFszXSwgX19yZXQudmFsWzNdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMl9wOChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHg4eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJfdigmX19yZXQsIF9fcDAsIDQpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQyX3A4KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4eDh4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMl92KCZfX3JldCwgX19wMCwgNCk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDJfcDE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng0eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJfdigmX19yZXQsIF9fcDAsIDUpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQyX3AxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4NHgyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQyX3YoJl9fcmV0LCBfX3AwLCA1KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMnFfcDgoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4MTZ4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMnFfdigmX19yZXQsIF9fcDAsIDM2KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMnFfcDgoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4MTZ4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMnFfdigmX19yZXQsIF9fcDAsIDM2KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMnFfcDE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng4eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJxX3YoJl9fcmV0LCBfX3AwLCAzNyk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDJxX3AxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4OHgyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQycV92KCZfX3JldCwgX19wMCwgMzcpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQycV91OChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHgxNngyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQycV92KCZfX3JldCwgX19wMCwgNDgpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQycV91OChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHgxNngyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQycV92KCZfX3JldCwgX19wMCwgNDgpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQycV91MzIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDR4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMnFfdigmX19yZXQsIF9fcDAsIDUwKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMnFfdTMyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJxX3YoJl9fcmV0LCBfX3AwLCA1MCk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDJxX3UxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4OHgyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQycV92KCZfX3JldCwgX19wMCwgNDkpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQycV91MTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDh4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMnFfdigmX19yZXQsIF9fcDAsIDQ5KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMnFfczgoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHgxNngyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQycV92KCZfX3JldCwgX19wMCwgMzIpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQycV9zOChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDE2eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJxX3YoJl9fcmV0LCBfX3AwLCAzMik7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDJxX2YzMihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDR4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMnFfdigmX19yZXQsIF9fcDAsIDQxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMnFfZjMyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NHgyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQycV92KCZfX3JldCwgX19wMCwgNDEpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQycV9zMzIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NHgyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQycV92KCZfX3JldCwgX19wMCwgMzQpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQycV9zMzIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NHgyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQycV92KCZfX3JldCwgX19wMCwgMzQpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQycV9zMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OHgyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQycV92KCZfX3JldCwgX19wMCwgMzMpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQycV9zMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OHgyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQycV92KCZfX3JldCwgX19wMCwgMzMpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQyX3U4KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDh4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMl92KCZfX3JldCwgX19wMCwgMTYpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQyX3U4KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDh4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMl92KCZfX3JldCwgX19wMCwgMTYpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQyX3UzMihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4MngyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQyX3YoJl9fcmV0LCBfX3AwLCAxOCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDJfdTMyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMngyeDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJfdigmX19yZXQsIF9fcDAsIDE4KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2bGQyX3U2NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4MXgyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQyX3YoJl9fcmV0LCBfX3AwLCAxOSk7IFwKICBfX3JldDsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQyX3UxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4NHgyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQyX3YoJl9fcmV0LCBfX3AwLCAxNyk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDJfdTE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng0eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJfdigmX19yZXQsIF9fcDAsIDE3KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMl9zOChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDh4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMl92KCZfX3JldCwgX19wMCwgMCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDJfczgoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHg4eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJfdigmX19yZXQsIF9fcDAsIDApOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQyX2YzMihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJ4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMl92KCZfX3JldCwgX19wMCwgOSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDJfZjMyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4MngyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQyX3YoJl9fcmV0LCBfX3AwLCA5KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMl9zMzIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4MngyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQyX3YoJl9fcmV0LCBfX3AwLCAyKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMl9zMzIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4MngyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQyX3YoJl9fcmV0LCBfX3AwLCAyKTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2bGQyX3M2NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgxeDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJfdigmX19yZXQsIF9fcDAsIDMpOyBcCiAgX19yZXQ7IFwKfSkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMl9zMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NHgyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQyX3YoJl9fcmV0LCBfX3AwLCAxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMl9zMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NHgyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQyX3YoJl9fcmV0LCBfX3AwLCAxKTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMl9kdXBfcDgoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4OHgyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQyX2R1cF92KCZfX3JldCwgX19wMCwgNCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDJfZHVwX3A4KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4eDh4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMl9kdXBfdigmX19yZXQsIF9fcDAsIDQpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQyX2R1cF9wMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDR4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMl9kdXBfdigmX19yZXQsIF9fcDAsIDUpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQyX2R1cF9wMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDR4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMl9kdXBfdigmX19yZXQsIF9fcDAsIDUpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQycV9kdXBfcDgoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4MTZ4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMnFfZHVwX3YoJl9fcmV0LCBfX3AwLCAzNik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDJxX2R1cF9wOChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHgxNngyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQycV9kdXBfdigmX19yZXQsIF9fcDAsIDM2KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMnFfZHVwX3AxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4OHgyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQycV9kdXBfdigmX19yZXQsIF9fcDAsIDM3KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMnFfZHVwX3AxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4OHgyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQycV9kdXBfdigmX19yZXQsIF9fcDAsIDM3KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMnFfZHVwX3U4KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDE2eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJxX2R1cF92KCZfX3JldCwgX19wMCwgNDgpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQycV9kdXBfdTgoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4MTZ4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMnFfZHVwX3YoJl9fcmV0LCBfX3AwLCA0OCk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDJxX2R1cF91MzIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDR4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMnFfZHVwX3YoJl9fcmV0LCBfX3AwLCA1MCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDJxX2R1cF91MzIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDR4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMnFfZHVwX3YoJl9fcmV0LCBfX3AwLCA1MCk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDJxX2R1cF91NjQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDJ4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMnFfZHVwX3YoJl9fcmV0LCBfX3AwLCA1MSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDJxX2R1cF91NjQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDJ4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMnFfZHVwX3YoJl9fcmV0LCBfX3AwLCA1MSk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDJxX2R1cF91MTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDh4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMnFfZHVwX3YoJl9fcmV0LCBfX3AwLCA0OSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDJxX2R1cF91MTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDh4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMnFfZHVwX3YoJl9fcmV0LCBfX3AwLCA0OSk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDJxX2R1cF9zOChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDE2eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJxX2R1cF92KCZfX3JldCwgX19wMCwgMzIpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQycV9kdXBfczgoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHgxNngyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQycV9kdXBfdigmX19yZXQsIF9fcDAsIDMyKTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMnFfZHVwX2YzMihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDR4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMnFfZHVwX3YoJl9fcmV0LCBfX3AwLCA0MSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDJxX2R1cF9mMzIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJxX2R1cF92KCZfX3JldCwgX19wMCwgNDEpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQycV9kdXBfczMyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDR4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMnFfZHVwX3YoJl9fcmV0LCBfX3AwLCAzNCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDJxX2R1cF9zMzIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NHgyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQycV9kdXBfdigmX19yZXQsIF9fcDAsIDM0KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMnFfZHVwX3M2NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgyeDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJxX2R1cF92KCZfX3JldCwgX19wMCwgMzUpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQycV9kdXBfczY0KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJ4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMnFfZHVwX3YoJl9fcmV0LCBfX3AwLCAzNSk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDJxX2R1cF9zMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OHgyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQycV9kdXBfdigmX19yZXQsIF9fcDAsIDMzKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMnFfZHVwX3MxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJxX2R1cF92KCZfX3JldCwgX19wMCwgMzMpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQyX2R1cF91OChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHg4eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJfZHVwX3YoJl9fcmV0LCBfX3AwLCAxNik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDJfZHVwX3U4KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDh4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMl9kdXBfdigmX19yZXQsIF9fcDAsIDE2KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMl9kdXBfdTMyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMngyeDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJfZHVwX3YoJl9fcmV0LCBfX3AwLCAxOCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDJfZHVwX3UzMihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4MngyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQyX2R1cF92KCZfX3JldCwgX19wMCwgMTgpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojZGVmaW5lIHZsZDJfZHVwX3U2NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4MXgyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQyX2R1cF92KCZfX3JldCwgX19wMCwgMTkpOyBcCiAgX19yZXQ7IFwKfSkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMl9kdXBfdTE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng0eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJfZHVwX3YoJl9fcmV0LCBfX3AwLCAxNyk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDJfZHVwX3UxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4NHgyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQyX2R1cF92KCZfX3JldCwgX19wMCwgMTcpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQyX2R1cF9zOChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDh4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMl9kdXBfdigmX19yZXQsIF9fcDAsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQyX2R1cF9zOChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDh4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMl9kdXBfdigmX19yZXQsIF9fcDAsIDApOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQyX2R1cF9mMzIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMngyeDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJfZHVwX3YoJl9fcmV0LCBfX3AwLCA5KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMl9kdXBfZjMyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4MngyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQyX2R1cF92KCZfX3JldCwgX19wMCwgOSk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDJfZHVwX3MzMihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMngyeDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJfZHVwX3YoJl9fcmV0LCBfX3AwLCAyKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMl9kdXBfczMyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJ4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMl9kdXBfdigmX19yZXQsIF9fcDAsIDIpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojZGVmaW5lIHZsZDJfZHVwX3M2NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgxeDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJfZHVwX3YoJl9fcmV0LCBfX3AwLCAzKTsgXAogIF9fcmV0OyBcCn0pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDJfZHVwX3MxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng0eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJfZHVwX3YoJl9fcmV0LCBfX3AwLCAxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMl9kdXBfczE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDR4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMl9kdXBfdigmX19yZXQsIF9fcDAsIDEpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQyX2xhbmVfcDgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4OHgyX3QgX19zMSA9IF9fcDE7IFwKICBwb2x5OHg4eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIF9fcDIsIDQpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQyX2xhbmVfcDgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4OHgyX3QgX19zMSA9IF9fcDE7IFwKICBwb2x5OHg4eDJfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgcG9seTh4OHgyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQyX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgX19wMiwgNCk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDJfbGFuZV9wMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDR4Ml90IF9fczEgPSBfX3AxOyBcCiAgcG9seTE2eDR4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMl9sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgX19wMiwgNSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDJfbGFuZV9wMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDR4Ml90IF9fczEgPSBfX3AxOyBcCiAgcG9seTE2eDR4Ml90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBwb2x5MTZ4NHgyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQyX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgX19wMiwgNSk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDJxX2xhbmVfcDE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng4eDJfdCBfX3MxID0gX19wMTsgXAogIHBvbHkxNng4eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJxX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIF9fcDIsIDM3KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMnFfbGFuZV9wMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDh4Ml90IF9fczEgPSBfX3AxOyBcCiAgcG9seTE2eDh4Ml90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBwb2x5MTZ4OHgyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQycV9sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgX19wMiwgMzcpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQycV9sYW5lX3UzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NHgyX3QgX19zMSA9IF9fcDE7IFwKICB1aW50MzJ4NHgyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQycV9sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCBfX3AyLCA1MCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDJxX2xhbmVfdTMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0eDJfdCBfX3MxID0gX19wMTsgXAogIHVpbnQzMng0eDJfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgdWludDMyeDR4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMnFfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIF9fcDIsIDUwKTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMnFfbGFuZV91MTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDh4Ml90IF9fczEgPSBfX3AxOyBcCiAgdWludDE2eDh4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMnFfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgX19wMiwgNDkpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQycV9sYW5lX3UxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4OHgyX3QgX19zMSA9IF9fcDE7IFwKICB1aW50MTZ4OHgyX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQxNng4eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJxX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCBfX3AyLCA0OSk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDJxX2xhbmVfZjMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NHgyX3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDMyeDR4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMnFfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgX19wMiwgNDEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQycV9sYW5lX2YzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDR4Ml90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQzMng0eDJfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQzMng0eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJxX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCBfX3AyLCA0MSk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDJxX2xhbmVfczMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDR4Ml90IF9fczEgPSBfX3AxOyBcCiAgaW50MzJ4NHgyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQycV9sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCBfX3AyLCAzNCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDJxX2xhbmVfczMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDR4Ml90IF9fczEgPSBfX3AxOyBcCiAgaW50MzJ4NHgyX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDR4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMnFfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIF9fcDIsIDM0KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMnFfbGFuZV9zMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OHgyX3QgX19zMSA9IF9fcDE7IFwKICBpbnQxNng4eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJxX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIF9fcDIsIDMzKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMnFfbGFuZV9zMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OHgyX3QgX19zMSA9IF9fcDE7IFwKICBpbnQxNng4eDJfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4OHgyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQycV9sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgX19wMiwgMzMpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQyX2xhbmVfdTgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4OHgyX3QgX19zMSA9IF9fcDE7IFwKICB1aW50OHg4eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIF9fcDIsIDE2KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMl9sYW5lX3U4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDh4Ml90IF9fczEgPSBfX3AxOyBcCiAgdWludDh4OHgyX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQ4eDh4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMl9sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHg4X3QpX19yZXYxLnZhbFswXSwgKGludDh4OF90KV9fcmV2MS52YWxbMV0sIF9fcDIsIDE2KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMl9sYW5lX3UzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4MngyX3QgX19zMSA9IF9fcDE7IFwKICB1aW50MzJ4MngyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQyX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCBfX3AyLCAxOCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDJfbGFuZV91MzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDJ4Ml90IF9fczEgPSBfX3AxOyBcCiAgdWludDMyeDJ4Ml90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMSwgMCk7IFwKICB1aW50MzJ4MngyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQyX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgX19wMiwgMTgpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQyX2xhbmVfdTE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng0eDJfdCBfX3MxID0gX19wMTsgXAogIHVpbnQxNng0eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIF9fcDIsIDE3KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMl9sYW5lX3UxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4NHgyX3QgX19zMSA9IF9fcDE7IFwKICB1aW50MTZ4NHgyX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIHVpbnQxNng0eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCBfX3AyLCAxNyk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDJfbGFuZV9zOChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDh4Ml90IF9fczEgPSBfX3AxOyBcCiAgaW50OHg4eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIF9fcDIsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQyX2xhbmVfczgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHg4eDJfdCBfX3MxID0gX19wMTsgXAogIGludDh4OHgyX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDh4OHgyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQyX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgX19wMiwgMCk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDJfbGFuZV9mMzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMngyeDJfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MzJ4MngyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQyX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCBfX3AyLCA5KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMl9sYW5lX2YzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJ4Ml90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQzMngyeDJfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDEsIDApOyBcCiAgZmxvYXQzMngyeDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCBfX3AyLCA5KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMl9sYW5lX3MzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMngyeDJfdCBfX3MxID0gX19wMTsgXAogIGludDMyeDJ4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMl9sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgX19wMiwgMik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDJfbGFuZV9zMzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4MngyX3QgX19zMSA9IF9fcDE7IFwKICBpbnQzMngyeDJfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDEsIDApOyBcCiAgaW50MzJ4MngyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQyX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgX19wMiwgMik7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDJfbGFuZV9zMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NHgyX3QgX19zMSA9IF9fcDE7IFwKICBpbnQxNng0eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIF9fcDIsIDEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQyX2xhbmVfczE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDR4Ml90IF9fczEgPSBfX3AxOyBcCiAgaW50MTZ4NHgyX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDR4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMl9sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHg4X3QpX19yZXYxLnZhbFswXSwgKGludDh4OF90KV9fcmV2MS52YWxbMV0sIF9fcDIsIDEpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQzX3A4KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4eDh4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM192KCZfX3JldCwgX19wMCwgNCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDNfcDgoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4OHgzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzX3YoJl9fcmV0LCBfX3AwLCA0KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkM19wMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDR4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM192KCZfX3JldCwgX19wMCwgNSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDNfcDE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng0eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNfdigmX19yZXQsIF9fcDAsIDUpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQzcV9wOChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHgxNngzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzcV92KCZfX3JldCwgX19wMCwgMzYpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQzcV9wOChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHgxNngzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzcV92KCZfX3JldCwgX19wMCwgMzYpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQzcV9wMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDh4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM3FfdigmX19yZXQsIF9fcDAsIDM3KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkM3FfcDE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng4eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNxX3YoJl9fcmV0LCBfX3AwLCAzNyk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDNxX3U4KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDE2eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNxX3YoJl9fcmV0LCBfX3AwLCA0OCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDNxX3U4KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDE2eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNxX3YoJl9fcmV0LCBfX3AwLCA0OCk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDNxX3UzMihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NHgzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzcV92KCZfX3JldCwgX19wMCwgNTApOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQzcV91MzIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDR4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM3FfdigmX19yZXQsIF9fcDAsIDUwKTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkM3FfdTE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng4eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNxX3YoJl9fcmV0LCBfX3AwLCA0OSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDNxX3UxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4OHgzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzcV92KCZfX3JldCwgX19wMCwgNDkpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQzcV9zOChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDE2eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNxX3YoJl9fcmV0LCBfX3AwLCAzMik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDNxX3M4KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4MTZ4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM3FfdigmX19yZXQsIF9fcDAsIDMyKTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkM3FfZjMyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NHgzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzcV92KCZfX3JldCwgX19wMCwgNDEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQzcV9mMzIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNxX3YoJl9fcmV0LCBfX3AwLCA0MSk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDNxX3MzMihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNxX3YoJl9fcmV0LCBfX3AwLCAzNCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDNxX3MzMihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNxX3YoJl9fcmV0LCBfX3AwLCAzNCk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDNxX3MxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNxX3YoJl9fcmV0LCBfX3AwLCAzMyk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDNxX3MxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNxX3YoJl9fcmV0LCBfX3AwLCAzMyk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDNfdTgoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4OHgzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzX3YoJl9fcmV0LCBfX3AwLCAxNik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDNfdTgoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4OHgzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzX3YoJl9fcmV0LCBfX3AwLCAxNik7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDNfdTMyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMngyeDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNfdigmX19yZXQsIF9fcDAsIDE4KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkM191MzIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDJ4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM192KCZfX3JldCwgX19wMCwgMTgpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojZGVmaW5lIHZsZDNfdTY0KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgxeDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNfdigmX19yZXQsIF9fcDAsIDE5KTsgXAogIF9fcmV0OyBcCn0pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDNfdTE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng0eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNfdigmX19yZXQsIF9fcDAsIDE3KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkM191MTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDR4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM192KCZfX3JldCwgX19wMCwgMTcpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQzX3M4KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4OHgzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzX3YoJl9fcmV0LCBfX3AwLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkM19zOChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDh4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM192KCZfX3JldCwgX19wMCwgMCk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDNfZjMyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4MngzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzX3YoJl9fcmV0LCBfX3AwLCA5KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkM19mMzIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMngyeDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNfdigmX19yZXQsIF9fcDAsIDkpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQzX3MzMihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMngyeDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNfdigmX19yZXQsIF9fcDAsIDIpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQzX3MzMihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMngyeDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNfdigmX19yZXQsIF9fcDAsIDIpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojZGVmaW5lIHZsZDNfczY0KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDF4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM192KCZfX3JldCwgX19wMCwgMyk7IFwKICBfX3JldDsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQzX3MxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng0eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNfdigmX19yZXQsIF9fcDAsIDEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQzX3MxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng0eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNfdigmX19yZXQsIF9fcDAsIDEpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQzX2R1cF9wOChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHg4eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNfZHVwX3YoJl9fcmV0LCBfX3AwLCA0KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkM19kdXBfcDgoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4OHgzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzX2R1cF92KCZfX3JldCwgX19wMCwgNCk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDNfZHVwX3AxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4NHgzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzX2R1cF92KCZfX3JldCwgX19wMCwgNSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDNfZHVwX3AxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4NHgzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzX2R1cF92KCZfX3JldCwgX19wMCwgNSk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDNxX2R1cF9wOChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHgxNngzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzcV9kdXBfdigmX19yZXQsIF9fcDAsIDM2KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkM3FfZHVwX3A4KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4eDE2eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNxX2R1cF92KCZfX3JldCwgX19wMCwgMzYpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQzcV9kdXBfcDE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng4eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNxX2R1cF92KCZfX3JldCwgX19wMCwgMzcpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQzcV9kdXBfcDE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng4eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNxX2R1cF92KCZfX3JldCwgX19wMCwgMzcpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQzcV9kdXBfdTgoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4MTZ4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM3FfZHVwX3YoJl9fcmV0LCBfX3AwLCA0OCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDNxX2R1cF91OChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHgxNngzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzcV9kdXBfdigmX19yZXQsIF9fcDAsIDQ4KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkM3FfZHVwX3UzMihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NHgzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzcV9kdXBfdigmX19yZXQsIF9fcDAsIDUwKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkM3FfZHVwX3UzMihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NHgzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzcV9kdXBfdigmX19yZXQsIF9fcDAsIDUwKTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkM3FfZHVwX3U2NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4MngzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzcV9kdXBfdigmX19yZXQsIF9fcDAsIDUxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkM3FfZHVwX3U2NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4MngzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzcV9kdXBfdigmX19yZXQsIF9fcDAsIDUxKTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkM3FfZHVwX3UxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4OHgzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzcV9kdXBfdigmX19yZXQsIF9fcDAsIDQ5KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkM3FfZHVwX3UxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4OHgzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzcV9kdXBfdigmX19yZXQsIF9fcDAsIDQ5KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkM3FfZHVwX3M4KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4MTZ4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM3FfZHVwX3YoJl9fcmV0LCBfX3AwLCAzMik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDNxX2R1cF9zOChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDE2eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNxX2R1cF92KCZfX3JldCwgX19wMCwgMzIpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQzcV9kdXBfZjMyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NHgzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzcV9kdXBfdigmX19yZXQsIF9fcDAsIDQxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkM3FfZHVwX2YzMihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDR4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM3FfZHVwX3YoJl9fcmV0LCBfX3AwLCA0MSk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDNxX2R1cF9zMzIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NHgzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzcV9kdXBfdigmX19yZXQsIF9fcDAsIDM0KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkM3FfZHVwX3MzMihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNxX2R1cF92KCZfX3JldCwgX19wMCwgMzQpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQzcV9kdXBfczY0KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJ4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM3FfZHVwX3YoJl9fcmV0LCBfX3AwLCAzNSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDNxX2R1cF9zNjQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4MngzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzcV9kdXBfdigmX19yZXQsIF9fcDAsIDM1KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkM3FfZHVwX3MxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNxX2R1cF92KCZfX3JldCwgX19wMCwgMzMpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQzcV9kdXBfczE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDh4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM3FfZHVwX3YoJl9fcmV0LCBfX3AwLCAzMyk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDNfZHVwX3U4KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDh4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM19kdXBfdigmX19yZXQsIF9fcDAsIDE2KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkM19kdXBfdTgoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4OHgzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzX2R1cF92KCZfX3JldCwgX19wMCwgMTYpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQzX2R1cF91MzIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDJ4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM19kdXBfdigmX19yZXQsIF9fcDAsIDE4KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkM19kdXBfdTMyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMngyeDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNfZHVwX3YoJl9fcmV0LCBfX3AwLCAxOCk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNkZWZpbmUgdmxkM19kdXBfdTY0KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgxeDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNfZHVwX3YoJl9fcmV0LCBfX3AwLCAxOSk7IFwKICBfX3JldDsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQzX2R1cF91MTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDR4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM19kdXBfdigmX19yZXQsIF9fcDAsIDE3KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkM19kdXBfdTE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng0eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNfZHVwX3YoJl9fcmV0LCBfX3AwLCAxNyk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDNfZHVwX3M4KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4OHgzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzX2R1cF92KCZfX3JldCwgX19wMCwgMCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDNfZHVwX3M4KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4OHgzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzX2R1cF92KCZfX3JldCwgX19wMCwgMCk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDNfZHVwX2YzMihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJ4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM19kdXBfdigmX19yZXQsIF9fcDAsIDkpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQzX2R1cF9mMzIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMngyeDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNfZHVwX3YoJl9fcmV0LCBfX3AwLCA5KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkM19kdXBfczMyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJ4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM19kdXBfdigmX19yZXQsIF9fcDAsIDIpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQzX2R1cF9zMzIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4MngzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzX2R1cF92KCZfX3JldCwgX19wMCwgMik7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNkZWZpbmUgdmxkM19kdXBfczY0KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDF4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM19kdXBfdigmX19yZXQsIF9fcDAsIDMpOyBcCiAgX19yZXQ7IFwKfSkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkM19kdXBfczE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDR4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM19kdXBfdigmX19yZXQsIF9fcDAsIDEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQzX2R1cF9zMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NHgzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzX2R1cF92KCZfX3JldCwgX19wMCwgMSk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDNfbGFuZV9wOChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHg4eDNfdCBfX3MxID0gX19wMTsgXAogIHBvbHk4eDh4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM19sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgKGludDh4OF90KV9fczEudmFsWzJdLCBfX3AyLCA0KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkM19sYW5lX3A4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4eDh4M190IF9fczEgPSBfX3AxOyBcCiAgcG9seTh4OHgzX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgcG9seTh4OHgzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgKGludDh4OF90KV9fcmV2MS52YWxbMl0sIF9fcDIsIDQpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQzX2xhbmVfcDE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng0eDNfdCBfX3MxID0gX19wMTsgXAogIHBvbHkxNng0eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIChpbnQ4eDhfdClfX3MxLnZhbFsyXSwgX19wMiwgNSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDNfbGFuZV9wMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDR4M190IF9fczEgPSBfX3AxOyBcCiAgcG9seTE2eDR4M190IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCAzLCAyLCAxLCAwKTsgXAogIHBvbHkxNng0eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsyXSwgX19wMiwgNSk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDNxX2xhbmVfcDE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng4eDNfdCBfX3MxID0gX19wMTsgXAogIHBvbHkxNng4eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNxX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIChpbnQ4eDE2X3QpX19zMS52YWxbMl0sIF9fcDIsIDM3KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkM3FfbGFuZV9wMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDh4M190IF9fczEgPSBfX3AxOyBcCiAgcG9seTE2eDh4M190IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHBvbHkxNng4eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNxX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMl0sIF9fcDIsIDM3KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkM3FfbGFuZV91MzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDR4M190IF9fczEgPSBfX3AxOyBcCiAgdWludDMyeDR4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM3FfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgKGludDh4MTZfdClfX3MxLnZhbFsyXSwgX19wMiwgNTApOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQzcV9sYW5lX3UzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NHgzX3QgX19zMSA9IF9fcDE7IFwKICB1aW50MzJ4NHgzX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDMsIDIsIDEsIDApOyBcCiAgdWludDMyeDR4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM3FfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgX19wMiwgNTApOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQzcV9sYW5lX3UxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4OHgzX3QgX19zMSA9IF9fcDE7IFwKICB1aW50MTZ4OHgzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzcV9sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCBfX3AyLCA0OSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDNxX2xhbmVfdTE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng4eDNfdCBfX3MxID0gX19wMTsgXAogIHVpbnQxNng4eDNfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50MTZ4OHgzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzcV9sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgKGludDh4MTZfdClfX3JldjEudmFsWzJdLCBfX3AyLCA0OSk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDNxX2xhbmVfZjMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NHgzX3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDMyeDR4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM3FfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgKGludDh4MTZfdClfX3MxLnZhbFsyXSwgX19wMiwgNDEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQzcV9sYW5lX2YzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDR4M190IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQzMng0eDNfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDMyeDR4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM3FfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgX19wMiwgNDEpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQzcV9sYW5lX3MzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0eDNfdCBfX3MxID0gX19wMTsgXAogIGludDMyeDR4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM3FfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgKGludDh4MTZfdClfX3MxLnZhbFsyXSwgX19wMiwgMzQpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQzcV9sYW5lX3MzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0eDNfdCBfX3MxID0gX19wMTsgXAogIGludDMyeDR4M190IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDR4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM3FfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgX19wMiwgMzQpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQzcV9sYW5lX3MxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4eDNfdCBfX3MxID0gX19wMTsgXAogIGludDE2eDh4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM3FfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgKGludDh4MTZfdClfX3MxLnZhbFsyXSwgX19wMiwgMzMpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQzcV9sYW5lX3MxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4eDNfdCBfX3MxID0gX19wMTsgXAogIGludDE2eDh4M190IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDh4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM3FfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgX19wMiwgMzMpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQzX2xhbmVfdTgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4OHgzX3QgX19zMSA9IF9fcDE7IFwKICB1aW50OHg4eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIChpbnQ4eDhfdClfX3MxLnZhbFsyXSwgX19wMiwgMTYpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQzX2xhbmVfdTgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4OHgzX3QgX19zMSA9IF9fcDE7IFwKICB1aW50OHg4eDNfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50OHg4eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsyXSwgX19wMiwgMTYpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQzX2xhbmVfdTMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMngyeDNfdCBfX3MxID0gX19wMTsgXAogIHVpbnQzMngyeDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIChpbnQ4eDhfdClfX3MxLnZhbFsyXSwgX19wMiwgMTgpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQzX2xhbmVfdTMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMngyeDNfdCBfX3MxID0gX19wMTsgXAogIHVpbnQzMngyeDNfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgMSwgMCk7IFwKICB1aW50MzJ4MngzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgKGludDh4OF90KV9fcmV2MS52YWxbMl0sIF9fcDIsIDE4KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkM19sYW5lX3UxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4NHgzX3QgX19zMSA9IF9fcDE7IFwKICB1aW50MTZ4NHgzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCAoaW50OHg4X3QpX19zMS52YWxbMl0sIF9fcDIsIDE3KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkM19sYW5lX3UxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4NHgzX3QgX19zMSA9IF9fcDE7IFwKICB1aW50MTZ4NHgzX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDR4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM19sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHg4X3QpX19yZXYxLnZhbFswXSwgKGludDh4OF90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDhfdClfX3JldjEudmFsWzJdLCBfX3AyLCAxNyk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDNfbGFuZV9zOChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDh4M190IF9fczEgPSBfX3AxOyBcCiAgaW50OHg4eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIChpbnQ4eDhfdClfX3MxLnZhbFsyXSwgX19wMiwgMCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDNfbGFuZV9zOChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDh4M190IF9fczEgPSBfX3AxOyBcCiAgaW50OHg4eDNfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQ4eDh4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM19sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHg4X3QpX19yZXYxLnZhbFswXSwgKGludDh4OF90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDhfdClfX3JldjEudmFsWzJdLCBfX3AyLCAwKTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkM19sYW5lX2YzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJ4M190IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQzMngyeDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIChpbnQ4eDhfdClfX3MxLnZhbFsyXSwgX19wMiwgOSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDNfbGFuZV9mMzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMngyeDNfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MzJ4MngzX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDEsIDApOyBcCiAgZmxvYXQzMngyeDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsyXSwgX19wMiwgOSk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDNfbGFuZV9zMzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4MngzX3QgX19zMSA9IF9fcDE7IFwKICBpbnQzMngyeDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIChpbnQ4eDhfdClfX3MxLnZhbFsyXSwgX19wMiwgMik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDNfbGFuZV9zMzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4MngzX3QgX19zMSA9IF9fcDE7IFwKICBpbnQzMngyeDNfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgMSwgMCk7IFwKICBpbnQzMngyeDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsyXSwgX19wMiwgMik7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDNfbGFuZV9zMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NHgzX3QgX19zMSA9IF9fcDE7IFwKICBpbnQxNng0eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIChpbnQ4eDhfdClfX3MxLnZhbFsyXSwgX19wMiwgMSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDNfbGFuZV9zMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NHgzX3QgX19zMSA9IF9fcDE7IFwKICBpbnQxNng0eDNfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng0eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsyXSwgX19wMiwgMSk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDRfcDgoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4OHg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0X3YoJl9fcmV0LCBfX3AwLCA0KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkNF9wOChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHg4eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRfdigmX19yZXQsIF9fcDAsIDQpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzNdLCBfX3JldC52YWxbM10sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQ0X3AxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4NHg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0X3YoJl9fcmV0LCBfX3AwLCA1KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkNF9wMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDR4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNF92KCZfX3JldCwgX19wMCwgNSk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbM10sIF9fcmV0LnZhbFszXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDRxX3A4KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4eDE2eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRxX3YoJl9fcmV0LCBfX3AwLCAzNik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDRxX3A4KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4eDE2eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRxX3YoJl9fcmV0LCBfX3AwLCAzNik7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbM10sIF9fcmV0LnZhbFszXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDRxX3AxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4OHg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0cV92KCZfX3JldCwgX19wMCwgMzcpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQ0cV9wMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDh4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNHFfdigmX19yZXQsIF9fcDAsIDM3KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFszXSwgX19yZXQudmFsWzNdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkNHFfdTgoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4MTZ4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNHFfdigmX19yZXQsIF9fcDAsIDQ4KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkNHFfdTgoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4MTZ4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNHFfdigmX19yZXQsIF9fcDAsIDQ4KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFszXSwgX19yZXQudmFsWzNdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkNHFfdTMyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRxX3YoJl9fcmV0LCBfX3AwLCA1MCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDRxX3UzMihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NHg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0cV92KCZfX3JldCwgX19wMCwgNTApOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzNdLCBfX3JldC52YWxbM10sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQ0cV91MTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDh4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNHFfdigmX19yZXQsIF9fcDAsIDQ5KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkNHFfdTE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng4eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRxX3YoJl9fcmV0LCBfX3AwLCA0OSk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbM10sIF9fcmV0LnZhbFszXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDRxX3M4KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4MTZ4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNHFfdigmX19yZXQsIF9fcDAsIDMyKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkNHFfczgoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHgxNng0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0cV92KCZfX3JldCwgX19wMCwgMzIpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzNdLCBfX3JldC52YWxbM10sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQ0cV9mMzIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRxX3YoJl9fcmV0LCBfX3AwLCA0MSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDRxX2YzMihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDR4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNHFfdigmX19yZXQsIF9fcDAsIDQxKTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFszXSwgX19yZXQudmFsWzNdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkNHFfczMyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDR4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNHFfdigmX19yZXQsIF9fcDAsIDM0KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkNHFfczMyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDR4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNHFfdigmX19yZXQsIF9fcDAsIDM0KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFszXSwgX19yZXQudmFsWzNdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkNHFfczE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDh4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNHFfdigmX19yZXQsIF9fcDAsIDMzKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkNHFfczE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDh4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNHFfdigmX19yZXQsIF9fcDAsIDMzKTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFszXSwgX19yZXQudmFsWzNdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkNF91OChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHg4eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRfdigmX19yZXQsIF9fcDAsIDE2KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkNF91OChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHg4eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRfdigmX19yZXQsIF9fcDAsIDE2KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFszXSwgX19yZXQudmFsWzNdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkNF91MzIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDJ4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNF92KCZfX3JldCwgX19wMCwgMTgpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQ0X3UzMihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4Mng0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0X3YoJl9fcmV0LCBfX3AwLCAxOCk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMSwgMCk7IFwKICBfX3JldC52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbM10sIF9fcmV0LnZhbFszXSwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNkZWZpbmUgdmxkNF91NjQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDF4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNF92KCZfX3JldCwgX19wMCwgMTkpOyBcCiAgX19yZXQ7IFwKfSkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkNF91MTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDR4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNF92KCZfX3JldCwgX19wMCwgMTcpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQ0X3UxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4NHg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0X3YoJl9fcmV0LCBfX3AwLCAxNyk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbM10sIF9fcmV0LnZhbFszXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDRfczgoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHg4eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRfdigmX19yZXQsIF9fcDAsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQ0X3M4KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4OHg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0X3YoJl9fcmV0LCBfX3AwLCAwKTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFszXSwgX19yZXQudmFsWzNdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkNF9mMzIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMngyeDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRfdigmX19yZXQsIF9fcDAsIDkpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQ0X2YzMihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJ4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNF92KCZfX3JldCwgX19wMCwgOSk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMSwgMCk7IFwKICBfX3JldC52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbM10sIF9fcmV0LnZhbFszXSwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDRfczMyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJ4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNF92KCZfX3JldCwgX19wMCwgMik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDRfczMyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJ4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNF92KCZfX3JldCwgX19wMCwgMik7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMSwgMCk7IFwKICBfX3JldC52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbM10sIF9fcmV0LnZhbFszXSwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNkZWZpbmUgdmxkNF9zNjQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4MXg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0X3YoJl9fcmV0LCBfX3AwLCAzKTsgXAogIF9fcmV0OyBcCn0pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDRfczE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDR4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNF92KCZfX3JldCwgX19wMCwgMSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDRfczE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDR4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNF92KCZfX3JldCwgX19wMCwgMSk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbM10sIF9fcmV0LnZhbFszXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDRfZHVwX3A4KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4eDh4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNF9kdXBfdigmX19yZXQsIF9fcDAsIDQpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQ0X2R1cF9wOChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHg4eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRfZHVwX3YoJl9fcmV0LCBfX3AwLCA0KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFszXSwgX19yZXQudmFsWzNdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkNF9kdXBfcDE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng0eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRfZHVwX3YoJl9fcmV0LCBfX3AwLCA1KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkNF9kdXBfcDE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng0eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRfZHVwX3YoJl9fcmV0LCBfX3AwLCA1KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFszXSwgX19yZXQudmFsWzNdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkNHFfZHVwX3A4KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4eDE2eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRxX2R1cF92KCZfX3JldCwgX19wMCwgMzYpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQ0cV9kdXBfcDgoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4MTZ4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNHFfZHVwX3YoJl9fcmV0LCBfX3AwLCAzNik7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbM10sIF9fcmV0LnZhbFszXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDRxX2R1cF9wMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDh4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNHFfZHVwX3YoJl9fcmV0LCBfX3AwLCAzNyk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDRxX2R1cF9wMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDh4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNHFfZHVwX3YoJl9fcmV0LCBfX3AwLCAzNyk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbM10sIF9fcmV0LnZhbFszXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDRxX2R1cF91OChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHgxNng0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0cV9kdXBfdigmX19yZXQsIF9fcDAsIDQ4KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkNHFfZHVwX3U4KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDE2eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRxX2R1cF92KCZfX3JldCwgX19wMCwgNDgpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzNdLCBfX3JldC52YWxbM10sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQ0cV9kdXBfdTMyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRxX2R1cF92KCZfX3JldCwgX19wMCwgNTApOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQ0cV9kdXBfdTMyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRxX2R1cF92KCZfX3JldCwgX19wMCwgNTApOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzNdLCBfX3JldC52YWxbM10sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQ0cV9kdXBfdTY0KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyeDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRxX2R1cF92KCZfX3JldCwgX19wMCwgNTEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQ0cV9kdXBfdTY0KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyeDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRxX2R1cF92KCZfX3JldCwgX19wMCwgNTEpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDEsIDApOyBcCiAgX19yZXQudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzNdLCBfX3JldC52YWxbM10sIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQ0cV9kdXBfdTE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng4eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRxX2R1cF92KCZfX3JldCwgX19wMCwgNDkpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQ0cV9kdXBfdTE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng4eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRxX2R1cF92KCZfX3JldCwgX19wMCwgNDkpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzNdLCBfX3JldC52YWxbM10sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQ0cV9kdXBfczgoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHgxNng0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0cV9kdXBfdigmX19yZXQsIF9fcDAsIDMyKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkNHFfZHVwX3M4KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4MTZ4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNHFfZHVwX3YoJl9fcmV0LCBfX3AwLCAzMik7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbM10sIF9fcmV0LnZhbFszXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDRxX2R1cF9mMzIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRxX2R1cF92KCZfX3JldCwgX19wMCwgNDEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQ0cV9kdXBfZjMyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NHg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0cV9kdXBfdigmX19yZXQsIF9fcDAsIDQxKTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFszXSwgX19yZXQudmFsWzNdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkNHFfZHVwX3MzMihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRxX2R1cF92KCZfX3JldCwgX19wMCwgMzQpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQ0cV9kdXBfczMyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDR4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNHFfZHVwX3YoJl9fcmV0LCBfX3AwLCAzNCk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbM10sIF9fcmV0LnZhbFszXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDRxX2R1cF9zNjQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4Mng0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0cV9kdXBfdigmX19yZXQsIF9fcDAsIDM1KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkNHFfZHVwX3M2NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgyeDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRxX2R1cF92KCZfX3JldCwgX19wMCwgMzUpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDEsIDApOyBcCiAgX19yZXQudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzNdLCBfX3JldC52YWxbM10sIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQ0cV9kdXBfczE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDh4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNHFfZHVwX3YoJl9fcmV0LCBfX3AwLCAzMyk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDRxX2R1cF9zMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OHg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0cV9kdXBfdigmX19yZXQsIF9fcDAsIDMzKTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFszXSwgX19yZXQudmFsWzNdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkNF9kdXBfdTgoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4OHg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0X2R1cF92KCZfX3JldCwgX19wMCwgMTYpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQ0X2R1cF91OChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHg4eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRfZHVwX3YoJl9fcmV0LCBfX3AwLCAxNik7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbM10sIF9fcmV0LnZhbFszXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDRfZHVwX3UzMihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4Mng0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0X2R1cF92KCZfX3JldCwgX19wMCwgMTgpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQ0X2R1cF91MzIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDJ4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNF9kdXBfdigmX19yZXQsIF9fcDAsIDE4KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFszXSwgX19yZXQudmFsWzNdLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2bGQ0X2R1cF91NjQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDF4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNF9kdXBfdigmX19yZXQsIF9fcDAsIDE5KTsgXAogIF9fcmV0OyBcCn0pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDRfZHVwX3UxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4NHg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0X2R1cF92KCZfX3JldCwgX19wMCwgMTcpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQ0X2R1cF91MTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDR4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNF9kdXBfdigmX19yZXQsIF9fcDAsIDE3KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFszXSwgX19yZXQudmFsWzNdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkNF9kdXBfczgoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHg4eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRfZHVwX3YoJl9fcmV0LCBfX3AwLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkNF9kdXBfczgoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHg4eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRfZHVwX3YoJl9fcmV0LCBfX3AwLCAwKTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFszXSwgX19yZXQudmFsWzNdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkNF9kdXBfZjMyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4Mng0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0X2R1cF92KCZfX3JldCwgX19wMCwgOSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDRfZHVwX2YzMihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJ4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNF9kdXBfdigmX19yZXQsIF9fcDAsIDkpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDEsIDApOyBcCiAgX19yZXQudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzNdLCBfX3JldC52YWxbM10sIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQ0X2R1cF9zMzIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Mng0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0X2R1cF92KCZfX3JldCwgX19wMCwgMik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDRfZHVwX3MzMihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMngyeDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRfZHVwX3YoJl9fcmV0LCBfX3AwLCAyKTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFszXSwgX19yZXQudmFsWzNdLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2bGQ0X2R1cF9zNjQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4MXg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0X2R1cF92KCZfX3JldCwgX19wMCwgMyk7IFwKICBfX3JldDsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQ0X2R1cF9zMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NHg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0X2R1cF92KCZfX3JldCwgX19wMCwgMSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDRfZHVwX3MxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng0eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRfZHVwX3YoJl9fcmV0LCBfX3AwLCAxKTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFszXSwgX19yZXQudmFsWzNdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkNF9sYW5lX3A4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4eDh4NF90IF9fczEgPSBfX3AxOyBcCiAgcG9seTh4OHg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0X2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCAoaW50OHg4X3QpX19zMS52YWxbMl0sIChpbnQ4eDhfdClfX3MxLnZhbFszXSwgX19wMiwgNCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDRfbGFuZV9wOChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHg4eDRfdCBfX3MxID0gX19wMTsgXAogIHBvbHk4eDh4NF90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFszXSwgX19zMS52YWxbM10sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgcG9seTh4OHg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0X2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgKGludDh4OF90KV9fcmV2MS52YWxbMl0sIChpbnQ4eDhfdClfX3JldjEudmFsWzNdLCBfX3AyLCA0KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFszXSwgX19yZXQudmFsWzNdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkNF9sYW5lX3AxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4NHg0X3QgX19zMSA9IF9fcDE7IFwKICBwb2x5MTZ4NHg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0X2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCAoaW50OHg4X3QpX19zMS52YWxbMl0sIChpbnQ4eDhfdClfX3MxLnZhbFszXSwgX19wMiwgNSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDRfbGFuZV9wMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDR4NF90IF9fczEgPSBfX3AxOyBcCiAgcG9seTE2eDR4NF90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFszXSwgX19zMS52YWxbM10sIDMsIDIsIDEsIDApOyBcCiAgcG9seTE2eDR4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNF9sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHg4X3QpX19yZXYxLnZhbFswXSwgKGludDh4OF90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDhfdClfX3JldjEudmFsWzJdLCAoaW50OHg4X3QpX19yZXYxLnZhbFszXSwgX19wMiwgNSk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbM10sIF9fcmV0LnZhbFszXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDRxX2xhbmVfcDE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng4eDRfdCBfX3MxID0gX19wMTsgXAogIHBvbHkxNng4eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRxX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIChpbnQ4eDE2X3QpX19zMS52YWxbMl0sIChpbnQ4eDE2X3QpX19zMS52YWxbM10sIF9fcDIsIDM3KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkNHFfbGFuZV9wMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDh4NF90IF9fczEgPSBfX3AxOyBcCiAgcG9seTE2eDh4NF90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFszXSwgX19zMS52YWxbM10sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgcG9seTE2eDh4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNHFfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgKGludDh4MTZfdClfX3JldjEudmFsWzNdLCBfX3AyLCAzNyk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbM10sIF9fcmV0LnZhbFszXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDRxX2xhbmVfdTMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0eDRfdCBfX3MxID0gX19wMTsgXAogIHVpbnQzMng0eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRxX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIChpbnQ4eDE2X3QpX19zMS52YWxbMl0sIChpbnQ4eDE2X3QpX19zMS52YWxbM10sIF9fcDIsIDUwKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkNHFfbGFuZV91MzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDR4NF90IF9fczEgPSBfX3AxOyBcCiAgdWludDMyeDR4NF90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFszXSwgX19zMS52YWxbM10sIDMsIDIsIDEsIDApOyBcCiAgdWludDMyeDR4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNHFfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgKGludDh4MTZfdClfX3JldjEudmFsWzNdLCBfX3AyLCA1MCk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbM10sIF9fcmV0LnZhbFszXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDRxX2xhbmVfdTE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng4eDRfdCBfX3MxID0gX19wMTsgXAogIHVpbnQxNng4eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRxX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIChpbnQ4eDE2X3QpX19zMS52YWxbMl0sIChpbnQ4eDE2X3QpX19zMS52YWxbM10sIF9fcDIsIDQ5KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkNHFfbGFuZV91MTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDh4NF90IF9fczEgPSBfX3AxOyBcCiAgdWludDE2eDh4NF90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFszXSwgX19zMS52YWxbM10sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDh4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNHFfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgKGludDh4MTZfdClfX3JldjEudmFsWzNdLCBfX3AyLCA0OSk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbM10sIF9fcmV0LnZhbFszXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDRxX2xhbmVfZjMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NHg0X3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDMyeDR4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNHFfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgKGludDh4MTZfdClfX3MxLnZhbFsyXSwgKGludDh4MTZfdClfX3MxLnZhbFszXSwgX19wMiwgNDEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQ0cV9sYW5lX2YzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDR4NF90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQzMng0eDRfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbM10sIF9fczEudmFsWzNdLCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MzJ4NHg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0cV9sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgKGludDh4MTZfdClfX3JldjEudmFsWzJdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbM10sIF9fcDIsIDQxKTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFszXSwgX19yZXQudmFsWzNdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkNHFfbGFuZV9zMzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NHg0X3QgX19zMSA9IF9fcDE7IFwKICBpbnQzMng0eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRxX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIChpbnQ4eDE2X3QpX19zMS52YWxbMl0sIChpbnQ4eDE2X3QpX19zMS52YWxbM10sIF9fcDIsIDM0KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkNHFfbGFuZV9zMzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NHg0X3QgX19zMSA9IF9fcDE7IFwKICBpbnQzMng0eDRfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbM10sIF9fczEudmFsWzNdLCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDR4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNHFfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgKGludDh4MTZfdClfX3JldjEudmFsWzNdLCBfX3AyLCAzNCk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbM10sIF9fcmV0LnZhbFszXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDRxX2xhbmVfczE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDh4NF90IF9fczEgPSBfX3AxOyBcCiAgaW50MTZ4OHg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0cV9sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCAoaW50OHgxNl90KV9fczEudmFsWzNdLCBfX3AyLCAzMyk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDRxX2xhbmVfczE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDh4NF90IF9fczEgPSBfX3AxOyBcCiAgaW50MTZ4OHg0X3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzNdLCBfX3MxLnZhbFszXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng4eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRxX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMl0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFszXSwgX19wMiwgMzMpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzNdLCBfX3JldC52YWxbM10sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQ0X2xhbmVfdTgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4OHg0X3QgX19zMSA9IF9fcDE7IFwKICB1aW50OHg4eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIChpbnQ4eDhfdClfX3MxLnZhbFsyXSwgKGludDh4OF90KV9fczEudmFsWzNdLCBfX3AyLCAxNik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDRfbGFuZV91OChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHg4eDRfdCBfX3MxID0gX19wMTsgXAogIHVpbnQ4eDh4NF90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFszXSwgX19zMS52YWxbM10sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDh4OHg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0X2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgKGludDh4OF90KV9fcmV2MS52YWxbMl0sIChpbnQ4eDhfdClfX3JldjEudmFsWzNdLCBfX3AyLCAxNik7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbM10sIF9fcmV0LnZhbFszXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDRfbGFuZV91MzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDJ4NF90IF9fczEgPSBfX3AxOyBcCiAgdWludDMyeDJ4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNF9sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgKGludDh4OF90KV9fczEudmFsWzJdLCAoaW50OHg4X3QpX19zMS52YWxbM10sIF9fcDIsIDE4KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkNF9sYW5lX3UzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4Mng0X3QgX19zMSA9IF9fcDE7IFwKICB1aW50MzJ4Mng0X3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzNdLCBfX3MxLnZhbFszXSwgMSwgMCk7IFwKICB1aW50MzJ4Mng0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0X2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgKGludDh4OF90KV9fcmV2MS52YWxbMl0sIChpbnQ4eDhfdClfX3JldjEudmFsWzNdLCBfX3AyLCAxOCk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMSwgMCk7IFwKICBfX3JldC52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbM10sIF9fcmV0LnZhbFszXSwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDRfbGFuZV91MTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDR4NF90IF9fczEgPSBfX3AxOyBcCiAgdWludDE2eDR4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNF9sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgKGludDh4OF90KV9fczEudmFsWzJdLCAoaW50OHg4X3QpX19zMS52YWxbM10sIF9fcDIsIDE3KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkNF9sYW5lX3UxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4NHg0X3QgX19zMSA9IF9fcDE7IFwKICB1aW50MTZ4NHg0X3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzNdLCBfX3MxLnZhbFszXSwgMywgMiwgMSwgMCk7IFwKICB1aW50MTZ4NHg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0X2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgKGludDh4OF90KV9fcmV2MS52YWxbMl0sIChpbnQ4eDhfdClfX3JldjEudmFsWzNdLCBfX3AyLCAxNyk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbM10sIF9fcmV0LnZhbFszXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDRfbGFuZV9zOChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDh4NF90IF9fczEgPSBfX3AxOyBcCiAgaW50OHg4eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIChpbnQ4eDhfdClfX3MxLnZhbFsyXSwgKGludDh4OF90KV9fczEudmFsWzNdLCBfX3AyLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkNF9sYW5lX3M4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4OHg0X3QgX19zMSA9IF9fcDE7IFwKICBpbnQ4eDh4NF90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFszXSwgX19zMS52YWxbM10sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50OHg4eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsyXSwgKGludDh4OF90KV9fcmV2MS52YWxbM10sIF9fcDIsIDApOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzNdLCBfX3JldC52YWxbM10sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQ0X2xhbmVfZjMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4Mng0X3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDMyeDJ4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNF9sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgKGludDh4OF90KV9fczEudmFsWzJdLCAoaW50OHg4X3QpX19zMS52YWxbM10sIF9fcDIsIDkpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQ0X2xhbmVfZjMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4Mng0X3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDMyeDJ4NF90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFszXSwgX19zMS52YWxbM10sIDEsIDApOyBcCiAgZmxvYXQzMngyeDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsyXSwgKGludDh4OF90KV9fcmV2MS52YWxbM10sIF9fcDIsIDkpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDEsIDApOyBcCiAgX19yZXQudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzNdLCBfX3JldC52YWxbM10sIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQ0X2xhbmVfczMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJ4NF90IF9fczEgPSBfX3AxOyBcCiAgaW50MzJ4Mng0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0X2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCAoaW50OHg4X3QpX19zMS52YWxbMl0sIChpbnQ4eDhfdClfX3MxLnZhbFszXSwgX19wMiwgMik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDRfbGFuZV9zMzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Mng0X3QgX19zMSA9IF9fcDE7IFwKICBpbnQzMngyeDRfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbM10sIF9fczEudmFsWzNdLCAxLCAwKTsgXAogIGludDMyeDJ4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNF9sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHg4X3QpX19yZXYxLnZhbFswXSwgKGludDh4OF90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDhfdClfX3JldjEudmFsWzJdLCAoaW50OHg4X3QpX19yZXYxLnZhbFszXSwgX19wMiwgMik7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMSwgMCk7IFwKICBfX3JldC52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbM10sIF9fcmV0LnZhbFszXSwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDRfbGFuZV9zMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NHg0X3QgX19zMSA9IF9fcDE7IFwKICBpbnQxNng0eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIChpbnQ4eDhfdClfX3MxLnZhbFsyXSwgKGludDh4OF90KV9fczEudmFsWzNdLCBfX3AyLCAxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkNF9sYW5lX3MxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng0eDRfdCBfX3MxID0gX19wMTsgXAogIGludDE2eDR4NF90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFszXSwgX19zMS52YWxbM10sIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4NHg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0X2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgKGludDh4OF90KV9fcmV2MS52YWxbMl0sIChpbnQ4eDhfdClfX3JldjEudmFsWzNdLCBfX3AyLCAxKTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFszXSwgX19yZXQudmFsWzNdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4MTZfdCB2bWF4cV91OCh1aW50OHgxNl90IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSkgewogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkgX19idWlsdGluX25lb25fdm1heHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNDgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDE2X3Qgdm1heHFfdTgodWludDh4MTZfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEpIHsKICB1aW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92bWF4cV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNDgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZtYXhxX3UzMih1aW50MzJ4NF90IF9fcDAsIHVpbnQzMng0X3QgX19wMSkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdm1heHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNTApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMng0X3Qgdm1heHFfdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxKSB7CiAgdWludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdm1heHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDUwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDhfdCB2bWF4cV91MTYodWludDE2eDhfdCBfX3AwLCB1aW50MTZ4OF90IF9fcDEpIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZtYXhxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDQ5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4OF90IHZtYXhxX3UxNih1aW50MTZ4OF90IF9fcDAsIHVpbnQxNng4X3QgX19wMSkgewogIHVpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZtYXhxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA0OSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4MTZfdCB2bWF4cV9zOChpbnQ4eDE2X3QgX19wMCwgaW50OHgxNl90IF9fcDEpIHsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92bWF4cV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAzMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OHgxNl90IHZtYXhxX3M4KGludDh4MTZfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSkgewogIGludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4MTZfdCkgX19idWlsdGluX25lb25fdm1heHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDMyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMng0X3Qgdm1heHFfZjMyKGZsb2F0MzJ4NF90IF9fcDAsIGZsb2F0MzJ4NF90IF9fcDEpIHsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdm1heHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4NF90IHZtYXhxX2YzMihmbG9hdDMyeDRfdCBfX3AwLCBmbG9hdDMyeDRfdCBfX3AxKSB7CiAgZmxvYXQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZtYXhxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA0MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDRfdCB2bWF4cV9zMzIoaW50MzJ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkgX19idWlsdGluX25lb25fdm1heHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgMzQpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDRfdCB2bWF4cV9zMzIoaW50MzJ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxKSB7CiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92bWF4cV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgMzQpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng4X3Qgdm1heHFfczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZtYXhxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDMzKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng4X3Qgdm1heHFfczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDhfdCkgX19idWlsdGluX25lb25fdm1heHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDMzKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4OF90IHZtYXhfdTgodWludDh4OF90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxKSB7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdm1heF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMTYpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDhfdCB2bWF4X3U4KHVpbnQ4eDhfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIHVpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdm1heF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDE2KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDJfdCB2bWF4X3UzMih1aW50MzJ4Ml90IF9fcDAsIHVpbnQzMngyX3QgX19wMSkgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdm1heF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMTgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMngyX3Qgdm1heF91MzIodWludDMyeDJfdCBfX3AwLCB1aW50MzJ4Ml90IF9fcDEpIHsKICB1aW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92bWF4X3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMTgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4NF90IHZtYXhfdTE2KHVpbnQxNng0X3QgX19wMCwgdWludDE2eDRfdCBfX3AxKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92bWF4X3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAxNyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDRfdCB2bWF4X3UxNih1aW50MTZ4NF90IF9fcDAsIHVpbnQxNng0X3QgX19wMSkgewogIHVpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZtYXhfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAxNyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4OF90IHZtYXhfczgoaW50OHg4X3QgX19wMCwgaW50OHg4X3QgX19wMSkgewogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92bWF4X3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ4eDhfdCB2bWF4X3M4KGludDh4OF90IF9fcDAsIGludDh4OF90IF9fcDEpIHsKICBpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdm1heF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDJfdCB2bWF4X2YzMihmbG9hdDMyeDJfdCBfX3AwLCBmbG9hdDMyeDJfdCBfX3AxKSB7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZtYXhfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4Ml90IHZtYXhfZjMyKGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0MzJ4Ml90IF9fcDEpIHsKICBmbG9hdDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdm1heF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDkpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMngyX3Qgdm1heF9zMzIoaW50MzJ4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxKSB7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdm1heF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4Ml90IHZtYXhfczMyKGludDMyeDJfdCBfX3AwLCBpbnQzMngyX3QgX19wMSkgewogIGludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdm1heF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng0X3Qgdm1heF9zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxKSB7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdm1heF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4NF90IHZtYXhfczE2KGludDE2eDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSkgewogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdm1heF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHgxNl90IHZtaW5xX3U4KHVpbnQ4eDE2X3QgX19wMCwgdWludDh4MTZfdCBfX3AxKSB7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92bWlucV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA0OCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4MTZfdCB2bWlucV91OCh1aW50OHgxNl90IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSkgewogIHVpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZtaW5xX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA0OCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMng0X3Qgdm1pbnFfdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92bWlucV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA1MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2bWlucV91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92bWlucV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNTApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4OF90IHZtaW5xX3UxNih1aW50MTZ4OF90IF9fcDAsIHVpbnQxNng4X3QgX19wMSkgewogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkgX19idWlsdGluX25lb25fdm1pbnFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNDkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng4X3Qgdm1pbnFfdTE2KHVpbnQxNng4X3QgX19wMCwgdWludDE2eDhfdCBfX3AxKSB7CiAgdWludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkgX19idWlsdGluX25lb25fdm1pbnFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDQ5KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHgxNl90IHZtaW5xX3M4KGludDh4MTZfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSkgewogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZtaW5xX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDMyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ4eDE2X3Qgdm1pbnFfczgoaW50OHgxNl90IF9fcDAsIGludDh4MTZfdCBfX3AxKSB7CiAgaW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92bWlucV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgMzIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDRfdCB2bWlucV9mMzIoZmxvYXQzMng0X3QgX19wMCwgZmxvYXQzMng0X3QgX19wMSkgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92bWlucV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA0MSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMng0X3Qgdm1pbnFfZjMyKGZsb2F0MzJ4NF90IF9fcDAsIGZsb2F0MzJ4NF90IF9fcDEpIHsKICBmbG9hdDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdm1pbnFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDQxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4NF90IHZtaW5xX3MzMihpbnQzMng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEpIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92bWlucV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAzNCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4NF90IHZtaW5xX3MzMihpbnQzMng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEpIHsKICBpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZtaW5xX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAzNCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDhfdCB2bWlucV9zMTYoaW50MTZ4OF90IF9fcDAsIGludDE2eDhfdCBfX3AxKSB7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDhfdCkgX19idWlsdGluX25lb25fdm1pbnFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgMzMpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDhfdCB2bWlucV9zMTYoaW50MTZ4OF90IF9fcDAsIGludDE2eDhfdCBfX3AxKSB7CiAgaW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92bWlucV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgMzMpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHg4X3Qgdm1pbl91OCh1aW50OHg4X3QgX19wMCwgdWludDh4OF90IF9fcDEpIHsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92bWluX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAxNik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4OF90IHZtaW5fdTgodWludDh4OF90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxKSB7CiAgdWludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92bWluX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMTYpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4Ml90IHZtaW5fdTMyKHVpbnQzMngyX3QgX19wMCwgdWludDMyeDJfdCBfX3AxKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92bWluX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAxOCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDJfdCB2bWluX3UzMih1aW50MzJ4Ml90IF9fcDAsIHVpbnQzMngyX3QgX19wMSkgewogIHVpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZtaW5fdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAxOCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng0X3Qgdm1pbl91MTYodWludDE2eDRfdCBfX3AwLCB1aW50MTZ4NF90IF9fcDEpIHsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZtaW5fdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDE3KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4NF90IHZtaW5fdTE2KHVpbnQxNng0X3QgX19wMCwgdWludDE2eDRfdCBfX3AxKSB7CiAgdWludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdm1pbl92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDE3KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHg4X3Qgdm1pbl9zOChpbnQ4eDhfdCBfX3AwLCBpbnQ4eDhfdCBfX3AxKSB7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZtaW5fdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4OF90IHZtaW5fczgoaW50OHg4X3QgX19wMCwgaW50OHg4X3QgX19wMSkgewogIGludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92bWluX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4Ml90IHZtaW5fZjMyKGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0MzJ4Ml90IF9fcDEpIHsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdm1pbl92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgOSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMngyX3Qgdm1pbl9mMzIoZmxvYXQzMngyX3QgX19wMCwgZmxvYXQzMngyX3QgX19wMSkgewogIGZsb2F0MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92bWluX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgOSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDJfdCB2bWluX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEpIHsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92bWluX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMngyX3Qgdm1pbl9zMzIoaW50MzJ4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxKSB7CiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92bWluX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDRfdCB2bWluX3MxNihpbnQxNng0X3QgX19wMCwgaW50MTZ4NF90IF9fcDEpIHsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92bWluX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng0X3Qgdm1pbl9zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxKSB7CiAgaW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92bWluX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDE2X3Qgdm1sYXFfdTgodWludDh4MTZfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEsIHVpbnQ4eDE2X3QgX19wMikgewogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICsgX19wMSAqIF9fcDI7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4MTZfdCB2bWxhcV91OCh1aW50OHgxNl90IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSwgdWludDh4MTZfdCBfX3AyKSB7CiAgdWludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCArIF9fcmV2MSAqIF9fcmV2MjsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDRfdCB2bWxhcV91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEsIHVpbnQzMng0X3QgX19wMikgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICsgX19wMSAqIF9fcDI7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2bWxhcV91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEsIHVpbnQzMng0X3QgX19wMikgewogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgKyBfX3JldjEgKiBfX3JldjI7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng4X3Qgdm1sYXFfdTE2KHVpbnQxNng4X3QgX19wMCwgdWludDE2eDhfdCBfX3AxLCB1aW50MTZ4OF90IF9fcDIpIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCArIF9fcDEgKiBfX3AyOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng4X3Qgdm1sYXFfdTE2KHVpbnQxNng4X3QgX19wMCwgdWludDE2eDhfdCBfX3AxLCB1aW50MTZ4OF90IF9fcDIpIHsKICB1aW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICsgX19yZXYxICogX19yZXYyOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDE2X3Qgdm1sYXFfczgoaW50OHgxNl90IF9fcDAsIGludDh4MTZfdCBfX3AxLCBpbnQ4eDE2X3QgX19wMikgewogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgKyBfX3AxICogX19wMjsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ4eDE2X3Qgdm1sYXFfczgoaW50OHgxNl90IF9fcDAsIGludDh4MTZfdCBfX3AxLCBpbnQ4eDE2X3QgX19wMikgewogIGludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCArIF9fcmV2MSAqIF9fcmV2MjsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMng0X3Qgdm1sYXFfZjMyKGZsb2F0MzJ4NF90IF9fcDAsIGZsb2F0MzJ4NF90IF9fcDEsIGZsb2F0MzJ4NF90IF9fcDIpIHsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgKyBfX3AxICogX19wMjsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDRfdCB2bWxhcV9mMzIoZmxvYXQzMng0X3QgX19wMCwgZmxvYXQzMng0X3QgX19wMSwgZmxvYXQzMng0X3QgX19wMikgewogIGZsb2F0MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGZsb2F0MzJ4NF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDMsIDIsIDEsIDApOwogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICsgX19yZXYxICogX19yZXYyOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMng0X3Qgdm1sYXFfczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSwgaW50MzJ4NF90IF9fcDIpIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICsgX19wMSAqIF9fcDI7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4NF90IHZtbGFxX3MzMihpbnQzMng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEsIGludDMyeDRfdCBfX3AyKSB7CiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICsgX19yZXYxICogX19yZXYyOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng4X3Qgdm1sYXFfczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSwgaW50MTZ4OF90IF9fcDIpIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICsgX19wMSAqIF9fcDI7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4OF90IHZtbGFxX3MxNihpbnQxNng4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEsIGludDE2eDhfdCBfX3AyKSB7CiAgaW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICsgX19yZXYxICogX19yZXYyOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHg4X3Qgdm1sYV91OCh1aW50OHg4X3QgX19wMCwgdWludDh4OF90IF9fcDEsIHVpbnQ4eDhfdCBfX3AyKSB7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCArIF9fcDEgKiBfX3AyOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDhfdCB2bWxhX3U4KHVpbnQ4eDhfdCBfX3AwLCB1aW50OHg4X3QgX19wMSwgdWludDh4OF90IF9fcDIpIHsKICB1aW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgKyBfX3JldjEgKiBfX3JldjI7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMngyX3Qgdm1sYV91MzIodWludDMyeDJfdCBfX3AwLCB1aW50MzJ4Ml90IF9fcDEsIHVpbnQzMngyX3QgX19wMikgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICsgX19wMSAqIF9fcDI7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDJfdCB2bWxhX3UzMih1aW50MzJ4Ml90IF9fcDAsIHVpbnQzMngyX3QgX19wMSwgdWludDMyeDJfdCBfX3AyKSB7CiAgdWludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCArIF9fcmV2MSAqIF9fcmV2MjsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDRfdCB2bWxhX3UxNih1aW50MTZ4NF90IF9fcDAsIHVpbnQxNng0X3QgX19wMSwgdWludDE2eDRfdCBfX3AyKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgKyBfX3AxICogX19wMjsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4NF90IHZtbGFfdTE2KHVpbnQxNng0X3QgX19wMCwgdWludDE2eDRfdCBfX3AxLCB1aW50MTZ4NF90IF9fcDIpIHsKICB1aW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICsgX19yZXYxICogX19yZXYyOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDhfdCB2bWxhX3M4KGludDh4OF90IF9fcDAsIGludDh4OF90IF9fcDEsIGludDh4OF90IF9fcDIpIHsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgKyBfX3AxICogX19wMjsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ4eDhfdCB2bWxhX3M4KGludDh4OF90IF9fcDAsIGludDh4OF90IF9fcDEsIGludDh4OF90IF9fcDIpIHsKICBpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCArIF9fcmV2MSAqIF9fcmV2MjsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMngyX3Qgdm1sYV9mMzIoZmxvYXQzMngyX3QgX19wMCwgZmxvYXQzMngyX3QgX19wMSwgZmxvYXQzMngyX3QgX19wMikgewogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19wMCArIF9fcDEgKiBfX3AyOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4Ml90IHZtbGFfZjMyKGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0MzJ4Ml90IF9fcDEsIGZsb2F0MzJ4Ml90IF9fcDIpIHsKICBmbG9hdDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBmbG9hdDMyeDJfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAxLCAwKTsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCArIF9fcmV2MSAqIF9fcmV2MjsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4Ml90IHZtbGFfczMyKGludDMyeDJfdCBfX3AwLCBpbnQzMngyX3QgX19wMSwgaW50MzJ4Ml90IF9fcDIpIHsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICsgX19wMSAqIF9fcDI7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4Ml90IHZtbGFfczMyKGludDMyeDJfdCBfX3AwLCBpbnQzMngyX3QgX19wMSwgaW50MzJ4Ml90IF9fcDIpIHsKICBpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGludDMyeDJfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgKyBfX3JldjEgKiBfX3JldjI7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDRfdCB2bWxhX3MxNihpbnQxNng0X3QgX19wMCwgaW50MTZ4NF90IF9fcDEsIGludDE2eDRfdCBfX3AyKSB7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCArIF9fcDEgKiBfX3AyOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDRfdCB2bWxhX3MxNihpbnQxNng0X3QgX19wMCwgaW50MTZ4NF90IF9fcDEsIGludDE2eDRfdCBfX3AyKSB7CiAgaW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICsgX19yZXYxICogX19yZXYyOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bWxhcV9sYW5lX3UzMihfX3AwXzQyLCBfX3AxXzQyLCBfX3AyXzQyLCBfX3AzXzQyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NF90IF9fczBfNDIgPSBfX3AwXzQyOyBcCiAgdWludDMyeDRfdCBfX3MxXzQyID0gX19wMV80MjsgXAogIHVpbnQzMngyX3QgX19zMl80MiA9IF9fcDJfNDI7IFwKICB1aW50MzJ4NF90IF9fcmV0XzQyOyBcCiAgX19yZXRfNDIgPSBfX3MwXzQyICsgX19zMV80MiAqIHNwbGF0cV9sYW5lX3UzMihfX3MyXzQyLCBfX3AzXzQyKTsgXAogIF9fcmV0XzQyOyBcCn0pCiNlbHNlCiNkZWZpbmUgdm1sYXFfbGFuZV91MzIoX19wMF80MywgX19wMV80MywgX19wMl80MywgX19wM180MykgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDRfdCBfX3MwXzQzID0gX19wMF80MzsgXAogIHVpbnQzMng0X3QgX19zMV80MyA9IF9fcDFfNDM7IFwKICB1aW50MzJ4Ml90IF9fczJfNDMgPSBfX3AyXzQzOyBcCiAgdWludDMyeDRfdCBfX3JldjBfNDM7ICBfX3JldjBfNDMgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzQzLCBfX3MwXzQzLCAzLCAyLCAxLCAwKTsgXAogIHVpbnQzMng0X3QgX19yZXYxXzQzOyAgX19yZXYxXzQzID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV80MywgX19zMV80MywgMywgMiwgMSwgMCk7IFwKICB1aW50MzJ4Ml90IF9fcmV2Ml80MzsgIF9fcmV2Ml80MyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfNDMsIF9fczJfNDMsIDEsIDApOyBcCiAgdWludDMyeDRfdCBfX3JldF80MzsgXAogIF9fcmV0XzQzID0gX19yZXYwXzQzICsgX19yZXYxXzQzICogX19ub3N3YXBfc3BsYXRxX2xhbmVfdTMyKF9fcmV2Ml80MywgX19wM180Myk7IFwKICBfX3JldF80MyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzQzLCBfX3JldF80MywgMywgMiwgMSwgMCk7IFwKICBfX3JldF80MzsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtbGFxX2xhbmVfdTE2KF9fcDBfNDQsIF9fcDFfNDQsIF9fcDJfNDQsIF9fcDNfNDQpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng4X3QgX19zMF80NCA9IF9fcDBfNDQ7IFwKICB1aW50MTZ4OF90IF9fczFfNDQgPSBfX3AxXzQ0OyBcCiAgdWludDE2eDRfdCBfX3MyXzQ0ID0gX19wMl80NDsgXAogIHVpbnQxNng4X3QgX19yZXRfNDQ7IFwKICBfX3JldF80NCA9IF9fczBfNDQgKyBfX3MxXzQ0ICogc3BsYXRxX2xhbmVfdTE2KF9fczJfNDQsIF9fcDNfNDQpOyBcCiAgX19yZXRfNDQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bWxhcV9sYW5lX3UxNihfX3AwXzQ1LCBfX3AxXzQ1LCBfX3AyXzQ1LCBfX3AzXzQ1KSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4OF90IF9fczBfNDUgPSBfX3AwXzQ1OyBcCiAgdWludDE2eDhfdCBfX3MxXzQ1ID0gX19wMV80NTsgXAogIHVpbnQxNng0X3QgX19zMl80NSA9IF9fcDJfNDU7IFwKICB1aW50MTZ4OF90IF9fcmV2MF80NTsgIF9fcmV2MF80NSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNDUsIF9fczBfNDUsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDhfdCBfX3JldjFfNDU7ICBfX3JldjFfNDUgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzQ1LCBfX3MxXzQ1LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQxNng0X3QgX19yZXYyXzQ1OyAgX19yZXYyXzQ1ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl80NSwgX19zMl80NSwgMywgMiwgMSwgMCk7IFwKICB1aW50MTZ4OF90IF9fcmV0XzQ1OyBcCiAgX19yZXRfNDUgPSBfX3JldjBfNDUgKyBfX3JldjFfNDUgKiBfX25vc3dhcF9zcGxhdHFfbGFuZV91MTYoX19yZXYyXzQ1LCBfX3AzXzQ1KTsgXAogIF9fcmV0XzQ1ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNDUsIF9fcmV0XzQ1LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzQ1OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm1sYXFfbGFuZV9mMzIoX19wMF80NiwgX19wMV80NiwgX19wMl80NiwgX19wM180NikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0X3QgX19zMF80NiA9IF9fcDBfNDY7IFwKICBmbG9hdDMyeDRfdCBfX3MxXzQ2ID0gX19wMV80NjsgXAogIGZsb2F0MzJ4Ml90IF9fczJfNDYgPSBfX3AyXzQ2OyBcCiAgZmxvYXQzMng0X3QgX19yZXRfNDY7IFwKICBfX3JldF80NiA9IF9fczBfNDYgKyBfX3MxXzQ2ICogc3BsYXRxX2xhbmVfZjMyKF9fczJfNDYsIF9fcDNfNDYpOyBcCiAgX19yZXRfNDY7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bWxhcV9sYW5lX2YzMihfX3AwXzQ3LCBfX3AxXzQ3LCBfX3AyXzQ3LCBfX3AzXzQ3KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDRfdCBfX3MwXzQ3ID0gX19wMF80NzsgXAogIGZsb2F0MzJ4NF90IF9fczFfNDcgPSBfX3AxXzQ3OyBcCiAgZmxvYXQzMngyX3QgX19zMl80NyA9IF9fcDJfNDc7IFwKICBmbG9hdDMyeDRfdCBfX3JldjBfNDc7ICBfX3JldjBfNDcgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzQ3LCBfX3MwXzQ3LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MzJ4NF90IF9fcmV2MV80NzsgIF9fcmV2MV80NyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNDcsIF9fczFfNDcsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQzMngyX3QgX19yZXYyXzQ3OyAgX19yZXYyXzQ3ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl80NywgX19zMl80NywgMSwgMCk7IFwKICBmbG9hdDMyeDRfdCBfX3JldF80NzsgXAogIF9fcmV0XzQ3ID0gX19yZXYwXzQ3ICsgX19yZXYxXzQ3ICogX19ub3N3YXBfc3BsYXRxX2xhbmVfZjMyKF9fcmV2Ml80NywgX19wM180Nyk7IFwKICBfX3JldF80NyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzQ3LCBfX3JldF80NywgMywgMiwgMSwgMCk7IFwKICBfX3JldF80NzsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtbGFxX2xhbmVfczMyKF9fcDBfNDgsIF9fcDFfNDgsIF9fcDJfNDgsIF9fcDNfNDgpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDRfdCBfX3MwXzQ4ID0gX19wMF80ODsgXAogIGludDMyeDRfdCBfX3MxXzQ4ID0gX19wMV80ODsgXAogIGludDMyeDJfdCBfX3MyXzQ4ID0gX19wMl80ODsgXAogIGludDMyeDRfdCBfX3JldF80ODsgXAogIF9fcmV0XzQ4ID0gX19zMF80OCArIF9fczFfNDggKiBzcGxhdHFfbGFuZV9zMzIoX19zMl80OCwgX19wM180OCk7IFwKICBfX3JldF80ODsgXAp9KQojZWxzZQojZGVmaW5lIHZtbGFxX2xhbmVfczMyKF9fcDBfNDksIF9fcDFfNDksIF9fcDJfNDksIF9fcDNfNDkpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDRfdCBfX3MwXzQ5ID0gX19wMF80OTsgXAogIGludDMyeDRfdCBfX3MxXzQ5ID0gX19wMV80OTsgXAogIGludDMyeDJfdCBfX3MyXzQ5ID0gX19wMl80OTsgXAogIGludDMyeDRfdCBfX3JldjBfNDk7ICBfX3JldjBfNDkgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzQ5LCBfX3MwXzQ5LCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDRfdCBfX3JldjFfNDk7ICBfX3JldjFfNDkgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzQ5LCBfX3MxXzQ5LCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDJfdCBfX3JldjJfNDk7ICBfX3JldjJfNDkgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzQ5LCBfX3MyXzQ5LCAxLCAwKTsgXAogIGludDMyeDRfdCBfX3JldF80OTsgXAogIF9fcmV0XzQ5ID0gX19yZXYwXzQ5ICsgX19yZXYxXzQ5ICogX19ub3N3YXBfc3BsYXRxX2xhbmVfczMyKF9fcmV2Ml80OSwgX19wM180OSk7IFwKICBfX3JldF80OSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzQ5LCBfX3JldF80OSwgMywgMiwgMSwgMCk7IFwKICBfX3JldF80OTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtbGFxX2xhbmVfczE2KF9fcDBfNTAsIF9fcDFfNTAsIF9fcDJfNTAsIF9fcDNfNTApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDhfdCBfX3MwXzUwID0gX19wMF81MDsgXAogIGludDE2eDhfdCBfX3MxXzUwID0gX19wMV81MDsgXAogIGludDE2eDRfdCBfX3MyXzUwID0gX19wMl81MDsgXAogIGludDE2eDhfdCBfX3JldF81MDsgXAogIF9fcmV0XzUwID0gX19zMF81MCArIF9fczFfNTAgKiBzcGxhdHFfbGFuZV9zMTYoX19zMl81MCwgX19wM181MCk7IFwKICBfX3JldF81MDsgXAp9KQojZWxzZQojZGVmaW5lIHZtbGFxX2xhbmVfczE2KF9fcDBfNTEsIF9fcDFfNTEsIF9fcDJfNTEsIF9fcDNfNTEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDhfdCBfX3MwXzUxID0gX19wMF81MTsgXAogIGludDE2eDhfdCBfX3MxXzUxID0gX19wMV81MTsgXAogIGludDE2eDRfdCBfX3MyXzUxID0gX19wMl81MTsgXAogIGludDE2eDhfdCBfX3JldjBfNTE7ICBfX3JldjBfNTEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzUxLCBfX3MwXzUxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDhfdCBfX3JldjFfNTE7ICBfX3JldjFfNTEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzUxLCBfX3MxXzUxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDRfdCBfX3JldjJfNTE7ICBfX3JldjJfNTEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzUxLCBfX3MyXzUxLCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDhfdCBfX3JldF81MTsgXAogIF9fcmV0XzUxID0gX19yZXYwXzUxICsgX19yZXYxXzUxICogX19ub3N3YXBfc3BsYXRxX2xhbmVfczE2KF9fcmV2Ml81MSwgX19wM181MSk7IFwKICBfX3JldF81MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzUxLCBfX3JldF81MSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF81MTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtbGFfbGFuZV91MzIoX19wMF81MiwgX19wMV81MiwgX19wMl81MiwgX19wM181MikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDJfdCBfX3MwXzUyID0gX19wMF81MjsgXAogIHVpbnQzMngyX3QgX19zMV81MiA9IF9fcDFfNTI7IFwKICB1aW50MzJ4Ml90IF9fczJfNTIgPSBfX3AyXzUyOyBcCiAgdWludDMyeDJfdCBfX3JldF81MjsgXAogIF9fcmV0XzUyID0gX19zMF81MiArIF9fczFfNTIgKiBzcGxhdF9sYW5lX3UzMihfX3MyXzUyLCBfX3AzXzUyKTsgXAogIF9fcmV0XzUyOyBcCn0pCiNlbHNlCiNkZWZpbmUgdm1sYV9sYW5lX3UzMihfX3AwXzUzLCBfX3AxXzUzLCBfX3AyXzUzLCBfX3AzXzUzKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4Ml90IF9fczBfNTMgPSBfX3AwXzUzOyBcCiAgdWludDMyeDJfdCBfX3MxXzUzID0gX19wMV81MzsgXAogIHVpbnQzMngyX3QgX19zMl81MyA9IF9fcDJfNTM7IFwKICB1aW50MzJ4Ml90IF9fcmV2MF81MzsgIF9fcmV2MF81MyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNTMsIF9fczBfNTMsIDEsIDApOyBcCiAgdWludDMyeDJfdCBfX3JldjFfNTM7ICBfX3JldjFfNTMgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzUzLCBfX3MxXzUzLCAxLCAwKTsgXAogIHVpbnQzMngyX3QgX19yZXYyXzUzOyAgX19yZXYyXzUzID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl81MywgX19zMl81MywgMSwgMCk7IFwKICB1aW50MzJ4Ml90IF9fcmV0XzUzOyBcCiAgX19yZXRfNTMgPSBfX3JldjBfNTMgKyBfX3JldjFfNTMgKiBfX25vc3dhcF9zcGxhdF9sYW5lX3UzMihfX3JldjJfNTMsIF9fcDNfNTMpOyBcCiAgX19yZXRfNTMgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF81MywgX19yZXRfNTMsIDEsIDApOyBcCiAgX19yZXRfNTM7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bWxhX2xhbmVfdTE2KF9fcDBfNTQsIF9fcDFfNTQsIF9fcDJfNTQsIF9fcDNfNTQpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng0X3QgX19zMF81NCA9IF9fcDBfNTQ7IFwKICB1aW50MTZ4NF90IF9fczFfNTQgPSBfX3AxXzU0OyBcCiAgdWludDE2eDRfdCBfX3MyXzU0ID0gX19wMl81NDsgXAogIHVpbnQxNng0X3QgX19yZXRfNTQ7IFwKICBfX3JldF81NCA9IF9fczBfNTQgKyBfX3MxXzU0ICogc3BsYXRfbGFuZV91MTYoX19zMl81NCwgX19wM181NCk7IFwKICBfX3JldF81NDsgXAp9KQojZWxzZQojZGVmaW5lIHZtbGFfbGFuZV91MTYoX19wMF81NSwgX19wMV81NSwgX19wMl81NSwgX19wM181NSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDRfdCBfX3MwXzU1ID0gX19wMF81NTsgXAogIHVpbnQxNng0X3QgX19zMV81NSA9IF9fcDFfNTU7IFwKICB1aW50MTZ4NF90IF9fczJfNTUgPSBfX3AyXzU1OyBcCiAgdWludDE2eDRfdCBfX3JldjBfNTU7ICBfX3JldjBfNTUgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzU1LCBfX3MwXzU1LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQxNng0X3QgX19yZXYxXzU1OyAgX19yZXYxXzU1ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV81NSwgX19zMV81NSwgMywgMiwgMSwgMCk7IFwKICB1aW50MTZ4NF90IF9fcmV2Ml81NTsgIF9fcmV2Ml81NSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfNTUsIF9fczJfNTUsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDRfdCBfX3JldF81NTsgXAogIF9fcmV0XzU1ID0gX19yZXYwXzU1ICsgX19yZXYxXzU1ICogX19ub3N3YXBfc3BsYXRfbGFuZV91MTYoX19yZXYyXzU1LCBfX3AzXzU1KTsgXAogIF9fcmV0XzU1ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNTUsIF9fcmV0XzU1LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzU1OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm1sYV9sYW5lX2YzMihfX3AwXzU2LCBfX3AxXzU2LCBfX3AyXzU2LCBfX3AzXzU2KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJfdCBfX3MwXzU2ID0gX19wMF81NjsgXAogIGZsb2F0MzJ4Ml90IF9fczFfNTYgPSBfX3AxXzU2OyBcCiAgZmxvYXQzMngyX3QgX19zMl81NiA9IF9fcDJfNTY7IFwKICBmbG9hdDMyeDJfdCBfX3JldF81NjsgXAogIF9fcmV0XzU2ID0gX19zMF81NiArIF9fczFfNTYgKiBzcGxhdF9sYW5lX2YzMihfX3MyXzU2LCBfX3AzXzU2KTsgXAogIF9fcmV0XzU2OyBcCn0pCiNlbHNlCiNkZWZpbmUgdm1sYV9sYW5lX2YzMihfX3AwXzU3LCBfX3AxXzU3LCBfX3AyXzU3LCBfX3AzXzU3KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJfdCBfX3MwXzU3ID0gX19wMF81NzsgXAogIGZsb2F0MzJ4Ml90IF9fczFfNTcgPSBfX3AxXzU3OyBcCiAgZmxvYXQzMngyX3QgX19zMl81NyA9IF9fcDJfNTc7IFwKICBmbG9hdDMyeDJfdCBfX3JldjBfNTc7ICBfX3JldjBfNTcgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzU3LCBfX3MwXzU3LCAxLCAwKTsgXAogIGZsb2F0MzJ4Ml90IF9fcmV2MV81NzsgIF9fcmV2MV81NyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNTcsIF9fczFfNTcsIDEsIDApOyBcCiAgZmxvYXQzMngyX3QgX19yZXYyXzU3OyAgX19yZXYyXzU3ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl81NywgX19zMl81NywgMSwgMCk7IFwKICBmbG9hdDMyeDJfdCBfX3JldF81NzsgXAogIF9fcmV0XzU3ID0gX19yZXYwXzU3ICsgX19yZXYxXzU3ICogX19ub3N3YXBfc3BsYXRfbGFuZV9mMzIoX19yZXYyXzU3LCBfX3AzXzU3KTsgXAogIF9fcmV0XzU3ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNTcsIF9fcmV0XzU3LCAxLCAwKTsgXAogIF9fcmV0XzU3OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm1sYV9sYW5lX3MzMihfX3AwXzU4LCBfX3AxXzU4LCBfX3AyXzU4LCBfX3AzXzU4KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMngyX3QgX19zMF81OCA9IF9fcDBfNTg7IFwKICBpbnQzMngyX3QgX19zMV81OCA9IF9fcDFfNTg7IFwKICBpbnQzMngyX3QgX19zMl81OCA9IF9fcDJfNTg7IFwKICBpbnQzMngyX3QgX19yZXRfNTg7IFwKICBfX3JldF81OCA9IF9fczBfNTggKyBfX3MxXzU4ICogc3BsYXRfbGFuZV9zMzIoX19zMl81OCwgX19wM181OCk7IFwKICBfX3JldF81ODsgXAp9KQojZWxzZQojZGVmaW5lIHZtbGFfbGFuZV9zMzIoX19wMF81OSwgX19wMV81OSwgX19wMl81OSwgX19wM181OSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Ml90IF9fczBfNTkgPSBfX3AwXzU5OyBcCiAgaW50MzJ4Ml90IF9fczFfNTkgPSBfX3AxXzU5OyBcCiAgaW50MzJ4Ml90IF9fczJfNTkgPSBfX3AyXzU5OyBcCiAgaW50MzJ4Ml90IF9fcmV2MF81OTsgIF9fcmV2MF81OSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNTksIF9fczBfNTksIDEsIDApOyBcCiAgaW50MzJ4Ml90IF9fcmV2MV81OTsgIF9fcmV2MV81OSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNTksIF9fczFfNTksIDEsIDApOyBcCiAgaW50MzJ4Ml90IF9fcmV2Ml81OTsgIF9fcmV2Ml81OSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfNTksIF9fczJfNTksIDEsIDApOyBcCiAgaW50MzJ4Ml90IF9fcmV0XzU5OyBcCiAgX19yZXRfNTkgPSBfX3JldjBfNTkgKyBfX3JldjFfNTkgKiBfX25vc3dhcF9zcGxhdF9sYW5lX3MzMihfX3JldjJfNTksIF9fcDNfNTkpOyBcCiAgX19yZXRfNTkgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF81OSwgX19yZXRfNTksIDEsIDApOyBcCiAgX19yZXRfNTk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bWxhX2xhbmVfczE2KF9fcDBfNjAsIF9fcDFfNjAsIF9fcDJfNjAsIF9fcDNfNjApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDRfdCBfX3MwXzYwID0gX19wMF82MDsgXAogIGludDE2eDRfdCBfX3MxXzYwID0gX19wMV82MDsgXAogIGludDE2eDRfdCBfX3MyXzYwID0gX19wMl82MDsgXAogIGludDE2eDRfdCBfX3JldF82MDsgXAogIF9fcmV0XzYwID0gX19zMF82MCArIF9fczFfNjAgKiBzcGxhdF9sYW5lX3MxNihfX3MyXzYwLCBfX3AzXzYwKTsgXAogIF9fcmV0XzYwOyBcCn0pCiNlbHNlCiNkZWZpbmUgdm1sYV9sYW5lX3MxNihfX3AwXzYxLCBfX3AxXzYxLCBfX3AyXzYxLCBfX3AzXzYxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng0X3QgX19zMF82MSA9IF9fcDBfNjE7IFwKICBpbnQxNng0X3QgX19zMV82MSA9IF9fcDFfNjE7IFwKICBpbnQxNng0X3QgX19zMl82MSA9IF9fcDJfNjE7IFwKICBpbnQxNng0X3QgX19yZXYwXzYxOyAgX19yZXYwXzYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF82MSwgX19zMF82MSwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng0X3QgX19yZXYxXzYxOyAgX19yZXYxXzYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV82MSwgX19zMV82MSwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng0X3QgX19yZXYyXzYxOyAgX19yZXYyXzYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl82MSwgX19zMl82MSwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng0X3QgX19yZXRfNjE7IFwKICBfX3JldF82MSA9IF9fcmV2MF82MSArIF9fcmV2MV82MSAqIF9fbm9zd2FwX3NwbGF0X2xhbmVfczE2KF9fcmV2Ml82MSwgX19wM182MSk7IFwKICBfX3JldF82MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzYxLCBfX3JldF82MSwgMywgMiwgMSwgMCk7IFwKICBfX3JldF82MTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMng0X3Qgdm1sYXFfbl91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEsIHVpbnQzMl90IF9fcDIpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCArIF9fcDEgKiAodWludDMyeDRfdCkge19fcDIsIF9fcDIsIF9fcDIsIF9fcDJ9OwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMng0X3Qgdm1sYXFfbl91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEsIHVpbnQzMl90IF9fcDIpIHsKICB1aW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCArIF9fcmV2MSAqICh1aW50MzJ4NF90KSB7X19wMiwgX19wMiwgX19wMiwgX19wMn07CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng4X3Qgdm1sYXFfbl91MTYodWludDE2eDhfdCBfX3AwLCB1aW50MTZ4OF90IF9fcDEsIHVpbnQxNl90IF9fcDIpIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCArIF9fcDEgKiAodWludDE2eDhfdCkge19fcDIsIF9fcDIsIF9fcDIsIF9fcDIsIF9fcDIsIF9fcDIsIF9fcDIsIF9fcDJ9OwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng4X3Qgdm1sYXFfbl91MTYodWludDE2eDhfdCBfX3AwLCB1aW50MTZ4OF90IF9fcDEsIHVpbnQxNl90IF9fcDIpIHsKICB1aW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCArIF9fcmV2MSAqICh1aW50MTZ4OF90KSB7X19wMiwgX19wMiwgX19wMiwgX19wMiwgX19wMiwgX19wMiwgX19wMiwgX19wMn07CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4NF90IHZtbGFxX25fZjMyKGZsb2F0MzJ4NF90IF9fcDAsIGZsb2F0MzJ4NF90IF9fcDEsIGZsb2F0MzJfdCBfX3AyKSB7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICsgX19wMSAqIChmbG9hdDMyeDRfdCkge19fcDIsIF9fcDIsIF9fcDIsIF9fcDJ9OwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4NF90IHZtbGFxX25fZjMyKGZsb2F0MzJ4NF90IF9fcDAsIGZsb2F0MzJ4NF90IF9fcDEsIGZsb2F0MzJfdCBfX3AyKSB7CiAgZmxvYXQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgKyBfX3JldjEgKiAoZmxvYXQzMng0X3QpIHtfX3AyLCBfX3AyLCBfX3AyLCBfX3AyfTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4NF90IHZtbGFxX25fczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSwgaW50MzJfdCBfX3AyKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCArIF9fcDEgKiAoaW50MzJ4NF90KSB7X19wMiwgX19wMiwgX19wMiwgX19wMn07CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4NF90IHZtbGFxX25fczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSwgaW50MzJfdCBfX3AyKSB7CiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgKyBfX3JldjEgKiAoaW50MzJ4NF90KSB7X19wMiwgX19wMiwgX19wMiwgX19wMn07CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDhfdCB2bWxhcV9uX3MxNihpbnQxNng4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEsIGludDE2X3QgX19wMikgewogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgKyBfX3AxICogKGludDE2eDhfdCkge19fcDIsIF9fcDIsIF9fcDIsIF9fcDIsIF9fcDIsIF9fcDIsIF9fcDIsIF9fcDJ9OwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDhfdCB2bWxhcV9uX3MxNihpbnQxNng4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEsIGludDE2X3QgX19wMikgewogIGludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICsgX19yZXYxICogKGludDE2eDhfdCkge19fcDIsIF9fcDIsIF9fcDIsIF9fcDIsIF9fcDIsIF9fcDIsIF9fcDIsIF9fcDJ9OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4Ml90IHZtbGFfbl91MzIodWludDMyeDJfdCBfX3AwLCB1aW50MzJ4Ml90IF9fcDEsIHVpbnQzMl90IF9fcDIpIHsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19wMCArIF9fcDEgKiAodWludDMyeDJfdCkge19fcDIsIF9fcDJ9OwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMngyX3Qgdm1sYV9uX3UzMih1aW50MzJ4Ml90IF9fcDAsIHVpbnQzMngyX3QgX19wMSwgdWludDMyX3QgX19wMikgewogIHVpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICsgX19yZXYxICogKHVpbnQzMngyX3QpIHtfX3AyLCBfX3AyfTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDRfdCB2bWxhX25fdTE2KHVpbnQxNng0X3QgX19wMCwgdWludDE2eDRfdCBfX3AxLCB1aW50MTZfdCBfX3AyKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgKyBfX3AxICogKHVpbnQxNng0X3QpIHtfX3AyLCBfX3AyLCBfX3AyLCBfX3AyfTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4NF90IHZtbGFfbl91MTYodWludDE2eDRfdCBfX3AwLCB1aW50MTZ4NF90IF9fcDEsIHVpbnQxNl90IF9fcDIpIHsKICB1aW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCArIF9fcmV2MSAqICh1aW50MTZ4NF90KSB7X19wMiwgX19wMiwgX19wMiwgX19wMn07CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4Ml90IHZtbGFfbl9mMzIoZmxvYXQzMngyX3QgX19wMCwgZmxvYXQzMngyX3QgX19wMSwgZmxvYXQzMl90IF9fcDIpIHsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgKyBfX3AxICogKGZsb2F0MzJ4Ml90KSB7X19wMiwgX19wMn07CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMngyX3Qgdm1sYV9uX2YzMihmbG9hdDMyeDJfdCBfX3AwLCBmbG9hdDMyeDJfdCBfX3AxLCBmbG9hdDMyX3QgX19wMikgewogIGZsb2F0MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICsgX19yZXYxICogKGZsb2F0MzJ4Ml90KSB7X19wMiwgX19wMn07CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDJfdCB2bWxhX25fczMyKGludDMyeDJfdCBfX3AwLCBpbnQzMngyX3QgX19wMSwgaW50MzJfdCBfX3AyKSB7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19wMCArIF9fcDEgKiAoaW50MzJ4Ml90KSB7X19wMiwgX19wMn07CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4Ml90IHZtbGFfbl9zMzIoaW50MzJ4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxLCBpbnQzMl90IF9fcDIpIHsKICBpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCArIF9fcmV2MSAqIChpbnQzMngyX3QpIHtfX3AyLCBfX3AyfTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZ4NF90IHZtbGFfbl9zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxLCBpbnQxNl90IF9fcDIpIHsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICsgX19wMSAqIChpbnQxNng0X3QpIHtfX3AyLCBfX3AyLCBfX3AyLCBfX3AyfTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng0X3Qgdm1sYV9uX3MxNihpbnQxNng0X3QgX19wMCwgaW50MTZ4NF90IF9fcDEsIGludDE2X3QgX19wMikgewogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICsgX19yZXYxICogKGludDE2eDRfdCkge19fcDIsIF9fcDIsIF9fcDIsIF9fcDJ9OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHgxNl90IHZtbHNxX3U4KHVpbnQ4eDE2X3QgX19wMCwgdWludDh4MTZfdCBfX3AxLCB1aW50OHgxNl90IF9fcDIpIHsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAtIF9fcDEgKiBfX3AyOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDE2X3Qgdm1sc3FfdTgodWludDh4MTZfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEsIHVpbnQ4eDE2X3QgX19wMikgewogIHVpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgLSBfX3JldjEgKiBfX3JldjI7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMng0X3Qgdm1sc3FfdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxLCB1aW50MzJ4NF90IF9fcDIpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAtIF9fcDEgKiBfX3AyOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMng0X3Qgdm1sc3FfdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxLCB1aW50MzJ4NF90IF9fcDIpIHsKICB1aW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwIC0gX19yZXYxICogX19yZXYyOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4OF90IHZtbHNxX3UxNih1aW50MTZ4OF90IF9fcDAsIHVpbnQxNng4X3QgX19wMSwgdWludDE2eDhfdCBfX3AyKSB7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgLSBfX3AxICogX19wMjsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4OF90IHZtbHNxX3UxNih1aW50MTZ4OF90IF9fcDAsIHVpbnQxNng4X3QgX19wMSwgdWludDE2eDhfdCBfX3AyKSB7CiAgdWludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCAtIF9fcmV2MSAqIF9fcmV2MjsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHgxNl90IHZtbHNxX3M4KGludDh4MTZfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSwgaW50OHgxNl90IF9fcDIpIHsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwIC0gX19wMSAqIF9fcDI7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OHgxNl90IHZtbHNxX3M4KGludDh4MTZfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSwgaW50OHgxNl90IF9fcDIpIHsKICBpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4MTZfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgLSBfX3JldjEgKiBfX3JldjI7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4NF90IHZtbHNxX2YzMihmbG9hdDMyeDRfdCBfX3AwLCBmbG9hdDMyeDRfdCBfX3AxLCBmbG9hdDMyeDRfdCBfX3AyKSB7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwIC0gX19wMSAqIF9fcDI7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMng0X3Qgdm1sc3FfZjMyKGZsb2F0MzJ4NF90IF9fcDAsIGZsb2F0MzJ4NF90IF9fcDEsIGZsb2F0MzJ4NF90IF9fcDIpIHsKICBmbG9hdDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCAtIF9fcmV2MSAqIF9fcmV2MjsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4NF90IHZtbHNxX3MzMihpbnQzMng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEsIGludDMyeDRfdCBfX3AyKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAtIF9fcDEgKiBfX3AyOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDRfdCB2bWxzcV9zMzIoaW50MzJ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxLCBpbnQzMng0X3QgX19wMikgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCAtIF9fcmV2MSAqIF9fcmV2MjsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZ4OF90IHZtbHNxX3MxNihpbnQxNng4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEsIGludDE2eDhfdCBfX3AyKSB7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAtIF9fcDEgKiBfX3AyOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDhfdCB2bWxzcV9zMTYoaW50MTZ4OF90IF9fcDAsIGludDE2eDhfdCBfX3AxLCBpbnQxNng4X3QgX19wMikgewogIGludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCAtIF9fcmV2MSAqIF9fcmV2MjsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4OF90IHZtbHNfdTgodWludDh4OF90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxLCB1aW50OHg4X3QgX19wMikgewogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgLSBfX3AxICogX19wMjsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHg4X3Qgdm1sc191OCh1aW50OHg4X3QgX19wMCwgdWludDh4OF90IF9fcDEsIHVpbnQ4eDhfdCBfX3AyKSB7CiAgdWludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwIC0gX19yZXYxICogX19yZXYyOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4Ml90IHZtbHNfdTMyKHVpbnQzMngyX3QgX19wMCwgdWludDMyeDJfdCBfX3AxLCB1aW50MzJ4Ml90IF9fcDIpIHsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAtIF9fcDEgKiBfX3AyOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMngyX3Qgdm1sc191MzIodWludDMyeDJfdCBfX3AwLCB1aW50MzJ4Ml90IF9fcDEsIHVpbnQzMngyX3QgX19wMikgewogIHVpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgLSBfX3JldjEgKiBfX3JldjI7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng0X3Qgdm1sc191MTYodWludDE2eDRfdCBfX3AwLCB1aW50MTZ4NF90IF9fcDEsIHVpbnQxNng0X3QgX19wMikgewogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwIC0gX19wMSAqIF9fcDI7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDRfdCB2bWxzX3UxNih1aW50MTZ4NF90IF9fcDAsIHVpbnQxNng0X3QgX19wMSwgdWludDE2eDRfdCBfX3AyKSB7CiAgdWludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCAtIF9fcmV2MSAqIF9fcmV2MjsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHg4X3Qgdm1sc19zOChpbnQ4eDhfdCBfX3AwLCBpbnQ4eDhfdCBfX3AxLCBpbnQ4eDhfdCBfX3AyKSB7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwIC0gX19wMSAqIF9fcDI7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OHg4X3Qgdm1sc19zOChpbnQ4eDhfdCBfX3AwLCBpbnQ4eDhfdCBfX3AxLCBpbnQ4eDhfdCBfX3AyKSB7CiAgaW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgLSBfX3JldjEgKiBfX3JldjI7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4Ml90IHZtbHNfZjMyKGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0MzJ4Ml90IF9fcDEsIGZsb2F0MzJ4Ml90IF9fcDIpIHsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgLSBfX3AxICogX19wMjsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDJfdCB2bWxzX2YzMihmbG9hdDMyeDJfdCBfX3AwLCBmbG9hdDMyeDJfdCBfX3AxLCBmbG9hdDMyeDJfdCBfX3AyKSB7CiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgLSBfX3JldjEgKiBfX3JldjI7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDJfdCB2bWxzX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEsIGludDMyeDJfdCBfX3AyKSB7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAtIF9fcDEgKiBfX3AyOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDJfdCB2bWxzX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEsIGludDMyeDJfdCBfX3AyKSB7CiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMSwgMCk7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwIC0gX19yZXYxICogX19yZXYyOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng0X3Qgdm1sc19zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxLCBpbnQxNng0X3QgX19wMikgewogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgLSBfX3AxICogX19wMjsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng0X3Qgdm1sc19zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxLCBpbnQxNng0X3QgX19wMikgewogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDMsIDIsIDEsIDApOwogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCAtIF9fcmV2MSAqIF9fcmV2MjsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm1sc3FfbGFuZV91MzIoX19wMF82MiwgX19wMV82MiwgX19wMl82MiwgX19wM182MikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDRfdCBfX3MwXzYyID0gX19wMF82MjsgXAogIHVpbnQzMng0X3QgX19zMV82MiA9IF9fcDFfNjI7IFwKICB1aW50MzJ4Ml90IF9fczJfNjIgPSBfX3AyXzYyOyBcCiAgdWludDMyeDRfdCBfX3JldF82MjsgXAogIF9fcmV0XzYyID0gX19zMF82MiAtIF9fczFfNjIgKiBzcGxhdHFfbGFuZV91MzIoX19zMl82MiwgX19wM182Mik7IFwKICBfX3JldF82MjsgXAp9KQojZWxzZQojZGVmaW5lIHZtbHNxX2xhbmVfdTMyKF9fcDBfNjMsIF9fcDFfNjMsIF9fcDJfNjMsIF9fcDNfNjMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0X3QgX19zMF82MyA9IF9fcDBfNjM7IFwKICB1aW50MzJ4NF90IF9fczFfNjMgPSBfX3AxXzYzOyBcCiAgdWludDMyeDJfdCBfX3MyXzYzID0gX19wMl82MzsgXAogIHVpbnQzMng0X3QgX19yZXYwXzYzOyAgX19yZXYwXzYzID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF82MywgX19zMF82MywgMywgMiwgMSwgMCk7IFwKICB1aW50MzJ4NF90IF9fcmV2MV82MzsgIF9fcmV2MV82MyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNjMsIF9fczFfNjMsIDMsIDIsIDEsIDApOyBcCiAgdWludDMyeDJfdCBfX3JldjJfNjM7ICBfX3JldjJfNjMgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzYzLCBfX3MyXzYzLCAxLCAwKTsgXAogIHVpbnQzMng0X3QgX19yZXRfNjM7IFwKICBfX3JldF82MyA9IF9fcmV2MF82MyAtIF9fcmV2MV82MyAqIF9fbm9zd2FwX3NwbGF0cV9sYW5lX3UzMihfX3JldjJfNjMsIF9fcDNfNjMpOyBcCiAgX19yZXRfNjMgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF82MywgX19yZXRfNjMsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfNjM7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bWxzcV9sYW5lX3UxNihfX3AwXzY0LCBfX3AxXzY0LCBfX3AyXzY0LCBfX3AzXzY0KSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4OF90IF9fczBfNjQgPSBfX3AwXzY0OyBcCiAgdWludDE2eDhfdCBfX3MxXzY0ID0gX19wMV82NDsgXAogIHVpbnQxNng0X3QgX19zMl82NCA9IF9fcDJfNjQ7IFwKICB1aW50MTZ4OF90IF9fcmV0XzY0OyBcCiAgX19yZXRfNjQgPSBfX3MwXzY0IC0gX19zMV82NCAqIHNwbGF0cV9sYW5lX3UxNihfX3MyXzY0LCBfX3AzXzY0KTsgXAogIF9fcmV0XzY0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdm1sc3FfbGFuZV91MTYoX19wMF82NSwgX19wMV82NSwgX19wMl82NSwgX19wM182NSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDhfdCBfX3MwXzY1ID0gX19wMF82NTsgXAogIHVpbnQxNng4X3QgX19zMV82NSA9IF9fcDFfNjU7IFwKICB1aW50MTZ4NF90IF9fczJfNjUgPSBfX3AyXzY1OyBcCiAgdWludDE2eDhfdCBfX3JldjBfNjU7ICBfX3JldjBfNjUgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzY1LCBfX3MwXzY1LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQxNng4X3QgX19yZXYxXzY1OyAgX19yZXYxXzY1ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV82NSwgX19zMV82NSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50MTZ4NF90IF9fcmV2Ml82NTsgIF9fcmV2Ml82NSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfNjUsIF9fczJfNjUsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDhfdCBfX3JldF82NTsgXAogIF9fcmV0XzY1ID0gX19yZXYwXzY1IC0gX19yZXYxXzY1ICogX19ub3N3YXBfc3BsYXRxX2xhbmVfdTE2KF9fcmV2Ml82NSwgX19wM182NSk7IFwKICBfX3JldF82NSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzY1LCBfX3JldF82NSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF82NTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtbHNxX2xhbmVfZjMyKF9fcDBfNjYsIF9fcDFfNjYsIF9fcDJfNjYsIF9fcDNfNjYpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NF90IF9fczBfNjYgPSBfX3AwXzY2OyBcCiAgZmxvYXQzMng0X3QgX19zMV82NiA9IF9fcDFfNjY7IFwKICBmbG9hdDMyeDJfdCBfX3MyXzY2ID0gX19wMl82NjsgXAogIGZsb2F0MzJ4NF90IF9fcmV0XzY2OyBcCiAgX19yZXRfNjYgPSBfX3MwXzY2IC0gX19zMV82NiAqIHNwbGF0cV9sYW5lX2YzMihfX3MyXzY2LCBfX3AzXzY2KTsgXAogIF9fcmV0XzY2OyBcCn0pCiNlbHNlCiNkZWZpbmUgdm1sc3FfbGFuZV9mMzIoX19wMF82NywgX19wMV82NywgX19wMl82NywgX19wM182NykgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0X3QgX19zMF82NyA9IF9fcDBfNjc7IFwKICBmbG9hdDMyeDRfdCBfX3MxXzY3ID0gX19wMV82NzsgXAogIGZsb2F0MzJ4Ml90IF9fczJfNjcgPSBfX3AyXzY3OyBcCiAgZmxvYXQzMng0X3QgX19yZXYwXzY3OyAgX19yZXYwXzY3ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF82NywgX19zMF82NywgMywgMiwgMSwgMCk7IFwKICBmbG9hdDMyeDRfdCBfX3JldjFfNjc7ICBfX3JldjFfNjcgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzY3LCBfX3MxXzY3LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MzJ4Ml90IF9fcmV2Ml82NzsgIF9fcmV2Ml82NyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfNjcsIF9fczJfNjcsIDEsIDApOyBcCiAgZmxvYXQzMng0X3QgX19yZXRfNjc7IFwKICBfX3JldF82NyA9IF9fcmV2MF82NyAtIF9fcmV2MV82NyAqIF9fbm9zd2FwX3NwbGF0cV9sYW5lX2YzMihfX3JldjJfNjcsIF9fcDNfNjcpOyBcCiAgX19yZXRfNjcgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF82NywgX19yZXRfNjcsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfNjc7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bWxzcV9sYW5lX3MzMihfX3AwXzY4LCBfX3AxXzY4LCBfX3AyXzY4LCBfX3AzXzY4KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMF82OCA9IF9fcDBfNjg7IFwKICBpbnQzMng0X3QgX19zMV82OCA9IF9fcDFfNjg7IFwKICBpbnQzMngyX3QgX19zMl82OCA9IF9fcDJfNjg7IFwKICBpbnQzMng0X3QgX19yZXRfNjg7IFwKICBfX3JldF82OCA9IF9fczBfNjggLSBfX3MxXzY4ICogc3BsYXRxX2xhbmVfczMyKF9fczJfNjgsIF9fcDNfNjgpOyBcCiAgX19yZXRfNjg7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bWxzcV9sYW5lX3MzMihfX3AwXzY5LCBfX3AxXzY5LCBfX3AyXzY5LCBfX3AzXzY5KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMF82OSA9IF9fcDBfNjk7IFwKICBpbnQzMng0X3QgX19zMV82OSA9IF9fcDFfNjk7IFwKICBpbnQzMngyX3QgX19zMl82OSA9IF9fcDJfNjk7IFwKICBpbnQzMng0X3QgX19yZXYwXzY5OyAgX19yZXYwXzY5ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF82OSwgX19zMF82OSwgMywgMiwgMSwgMCk7IFwKICBpbnQzMng0X3QgX19yZXYxXzY5OyAgX19yZXYxXzY5ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV82OSwgX19zMV82OSwgMywgMiwgMSwgMCk7IFwKICBpbnQzMngyX3QgX19yZXYyXzY5OyAgX19yZXYyXzY5ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl82OSwgX19zMl82OSwgMSwgMCk7IFwKICBpbnQzMng0X3QgX19yZXRfNjk7IFwKICBfX3JldF82OSA9IF9fcmV2MF82OSAtIF9fcmV2MV82OSAqIF9fbm9zd2FwX3NwbGF0cV9sYW5lX3MzMihfX3JldjJfNjksIF9fcDNfNjkpOyBcCiAgX19yZXRfNjkgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF82OSwgX19yZXRfNjksIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfNjk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bWxzcV9sYW5lX3MxNihfX3AwXzcwLCBfX3AxXzcwLCBfX3AyXzcwLCBfX3AzXzcwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4X3QgX19zMF83MCA9IF9fcDBfNzA7IFwKICBpbnQxNng4X3QgX19zMV83MCA9IF9fcDFfNzA7IFwKICBpbnQxNng0X3QgX19zMl83MCA9IF9fcDJfNzA7IFwKICBpbnQxNng4X3QgX19yZXRfNzA7IFwKICBfX3JldF83MCA9IF9fczBfNzAgLSBfX3MxXzcwICogc3BsYXRxX2xhbmVfczE2KF9fczJfNzAsIF9fcDNfNzApOyBcCiAgX19yZXRfNzA7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bWxzcV9sYW5lX3MxNihfX3AwXzcxLCBfX3AxXzcxLCBfX3AyXzcxLCBfX3AzXzcxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4X3QgX19zMF83MSA9IF9fcDBfNzE7IFwKICBpbnQxNng4X3QgX19zMV83MSA9IF9fcDFfNzE7IFwKICBpbnQxNng0X3QgX19zMl83MSA9IF9fcDJfNzE7IFwKICBpbnQxNng4X3QgX19yZXYwXzcxOyAgX19yZXYwXzcxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF83MSwgX19zMF83MSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng4X3QgX19yZXYxXzcxOyAgX19yZXYxXzcxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV83MSwgX19zMV83MSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng0X3QgX19yZXYyXzcxOyAgX19yZXYyXzcxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl83MSwgX19zMl83MSwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng4X3QgX19yZXRfNzE7IFwKICBfX3JldF83MSA9IF9fcmV2MF83MSAtIF9fcmV2MV83MSAqIF9fbm9zd2FwX3NwbGF0cV9sYW5lX3MxNihfX3JldjJfNzEsIF9fcDNfNzEpOyBcCiAgX19yZXRfNzEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF83MSwgX19yZXRfNzEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfNzE7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bWxzX2xhbmVfdTMyKF9fcDBfNzIsIF9fcDFfNzIsIF9fcDJfNzIsIF9fcDNfNzIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMngyX3QgX19zMF83MiA9IF9fcDBfNzI7IFwKICB1aW50MzJ4Ml90IF9fczFfNzIgPSBfX3AxXzcyOyBcCiAgdWludDMyeDJfdCBfX3MyXzcyID0gX19wMl83MjsgXAogIHVpbnQzMngyX3QgX19yZXRfNzI7IFwKICBfX3JldF83MiA9IF9fczBfNzIgLSBfX3MxXzcyICogc3BsYXRfbGFuZV91MzIoX19zMl83MiwgX19wM183Mik7IFwKICBfX3JldF83MjsgXAp9KQojZWxzZQojZGVmaW5lIHZtbHNfbGFuZV91MzIoX19wMF83MywgX19wMV83MywgX19wMl83MywgX19wM183MykgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDJfdCBfX3MwXzczID0gX19wMF83MzsgXAogIHVpbnQzMngyX3QgX19zMV83MyA9IF9fcDFfNzM7IFwKICB1aW50MzJ4Ml90IF9fczJfNzMgPSBfX3AyXzczOyBcCiAgdWludDMyeDJfdCBfX3JldjBfNzM7ICBfX3JldjBfNzMgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzczLCBfX3MwXzczLCAxLCAwKTsgXAogIHVpbnQzMngyX3QgX19yZXYxXzczOyAgX19yZXYxXzczID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV83MywgX19zMV83MywgMSwgMCk7IFwKICB1aW50MzJ4Ml90IF9fcmV2Ml83MzsgIF9fcmV2Ml83MyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfNzMsIF9fczJfNzMsIDEsIDApOyBcCiAgdWludDMyeDJfdCBfX3JldF83MzsgXAogIF9fcmV0XzczID0gX19yZXYwXzczIC0gX19yZXYxXzczICogX19ub3N3YXBfc3BsYXRfbGFuZV91MzIoX19yZXYyXzczLCBfX3AzXzczKTsgXAogIF9fcmV0XzczID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNzMsIF9fcmV0XzczLCAxLCAwKTsgXAogIF9fcmV0XzczOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm1sc19sYW5lX3UxNihfX3AwXzc0LCBfX3AxXzc0LCBfX3AyXzc0LCBfX3AzXzc0KSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4NF90IF9fczBfNzQgPSBfX3AwXzc0OyBcCiAgdWludDE2eDRfdCBfX3MxXzc0ID0gX19wMV83NDsgXAogIHVpbnQxNng0X3QgX19zMl83NCA9IF9fcDJfNzQ7IFwKICB1aW50MTZ4NF90IF9fcmV0Xzc0OyBcCiAgX19yZXRfNzQgPSBfX3MwXzc0IC0gX19zMV83NCAqIHNwbGF0X2xhbmVfdTE2KF9fczJfNzQsIF9fcDNfNzQpOyBcCiAgX19yZXRfNzQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bWxzX2xhbmVfdTE2KF9fcDBfNzUsIF9fcDFfNzUsIF9fcDJfNzUsIF9fcDNfNzUpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng0X3QgX19zMF83NSA9IF9fcDBfNzU7IFwKICB1aW50MTZ4NF90IF9fczFfNzUgPSBfX3AxXzc1OyBcCiAgdWludDE2eDRfdCBfX3MyXzc1ID0gX19wMl83NTsgXAogIHVpbnQxNng0X3QgX19yZXYwXzc1OyAgX19yZXYwXzc1ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF83NSwgX19zMF83NSwgMywgMiwgMSwgMCk7IFwKICB1aW50MTZ4NF90IF9fcmV2MV83NTsgIF9fcmV2MV83NSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNzUsIF9fczFfNzUsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDRfdCBfX3JldjJfNzU7ICBfX3JldjJfNzUgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzc1LCBfX3MyXzc1LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQxNng0X3QgX19yZXRfNzU7IFwKICBfX3JldF83NSA9IF9fcmV2MF83NSAtIF9fcmV2MV83NSAqIF9fbm9zd2FwX3NwbGF0X2xhbmVfdTE2KF9fcmV2Ml83NSwgX19wM183NSk7IFwKICBfX3JldF83NSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0Xzc1LCBfX3JldF83NSwgMywgMiwgMSwgMCk7IFwKICBfX3JldF83NTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtbHNfbGFuZV9mMzIoX19wMF83NiwgX19wMV83NiwgX19wMl83NiwgX19wM183NikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMngyX3QgX19zMF83NiA9IF9fcDBfNzY7IFwKICBmbG9hdDMyeDJfdCBfX3MxXzc2ID0gX19wMV83NjsgXAogIGZsb2F0MzJ4Ml90IF9fczJfNzYgPSBfX3AyXzc2OyBcCiAgZmxvYXQzMngyX3QgX19yZXRfNzY7IFwKICBfX3JldF83NiA9IF9fczBfNzYgLSBfX3MxXzc2ICogc3BsYXRfbGFuZV9mMzIoX19zMl83NiwgX19wM183Nik7IFwKICBfX3JldF83NjsgXAp9KQojZWxzZQojZGVmaW5lIHZtbHNfbGFuZV9mMzIoX19wMF83NywgX19wMV83NywgX19wMl83NywgX19wM183NykgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMngyX3QgX19zMF83NyA9IF9fcDBfNzc7IFwKICBmbG9hdDMyeDJfdCBfX3MxXzc3ID0gX19wMV83NzsgXAogIGZsb2F0MzJ4Ml90IF9fczJfNzcgPSBfX3AyXzc3OyBcCiAgZmxvYXQzMngyX3QgX19yZXYwXzc3OyAgX19yZXYwXzc3ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF83NywgX19zMF83NywgMSwgMCk7IFwKICBmbG9hdDMyeDJfdCBfX3JldjFfNzc7ICBfX3JldjFfNzcgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzc3LCBfX3MxXzc3LCAxLCAwKTsgXAogIGZsb2F0MzJ4Ml90IF9fcmV2Ml83NzsgIF9fcmV2Ml83NyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfNzcsIF9fczJfNzcsIDEsIDApOyBcCiAgZmxvYXQzMngyX3QgX19yZXRfNzc7IFwKICBfX3JldF83NyA9IF9fcmV2MF83NyAtIF9fcmV2MV83NyAqIF9fbm9zd2FwX3NwbGF0X2xhbmVfZjMyKF9fcmV2Ml83NywgX19wM183Nyk7IFwKICBfX3JldF83NyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0Xzc3LCBfX3JldF83NywgMSwgMCk7IFwKICBfX3JldF83NzsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtbHNfbGFuZV9zMzIoX19wMF83OCwgX19wMV83OCwgX19wMl83OCwgX19wM183OCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Ml90IF9fczBfNzggPSBfX3AwXzc4OyBcCiAgaW50MzJ4Ml90IF9fczFfNzggPSBfX3AxXzc4OyBcCiAgaW50MzJ4Ml90IF9fczJfNzggPSBfX3AyXzc4OyBcCiAgaW50MzJ4Ml90IF9fcmV0Xzc4OyBcCiAgX19yZXRfNzggPSBfX3MwXzc4IC0gX19zMV83OCAqIHNwbGF0X2xhbmVfczMyKF9fczJfNzgsIF9fcDNfNzgpOyBcCiAgX19yZXRfNzg7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bWxzX2xhbmVfczMyKF9fcDBfNzksIF9fcDFfNzksIF9fcDJfNzksIF9fcDNfNzkpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJfdCBfX3MwXzc5ID0gX19wMF83OTsgXAogIGludDMyeDJfdCBfX3MxXzc5ID0gX19wMV83OTsgXAogIGludDMyeDJfdCBfX3MyXzc5ID0gX19wMl83OTsgXAogIGludDMyeDJfdCBfX3JldjBfNzk7ICBfX3JldjBfNzkgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzc5LCBfX3MwXzc5LCAxLCAwKTsgXAogIGludDMyeDJfdCBfX3JldjFfNzk7ICBfX3JldjFfNzkgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzc5LCBfX3MxXzc5LCAxLCAwKTsgXAogIGludDMyeDJfdCBfX3JldjJfNzk7ICBfX3JldjJfNzkgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzc5LCBfX3MyXzc5LCAxLCAwKTsgXAogIGludDMyeDJfdCBfX3JldF83OTsgXAogIF9fcmV0Xzc5ID0gX19yZXYwXzc5IC0gX19yZXYxXzc5ICogX19ub3N3YXBfc3BsYXRfbGFuZV9zMzIoX19yZXYyXzc5LCBfX3AzXzc5KTsgXAogIF9fcmV0Xzc5ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNzksIF9fcmV0Xzc5LCAxLCAwKTsgXAogIF9fcmV0Xzc5OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm1sc19sYW5lX3MxNihfX3AwXzgwLCBfX3AxXzgwLCBfX3AyXzgwLCBfX3AzXzgwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng0X3QgX19zMF84MCA9IF9fcDBfODA7IFwKICBpbnQxNng0X3QgX19zMV84MCA9IF9fcDFfODA7IFwKICBpbnQxNng0X3QgX19zMl84MCA9IF9fcDJfODA7IFwKICBpbnQxNng0X3QgX19yZXRfODA7IFwKICBfX3JldF84MCA9IF9fczBfODAgLSBfX3MxXzgwICogc3BsYXRfbGFuZV9zMTYoX19zMl84MCwgX19wM184MCk7IFwKICBfX3JldF84MDsgXAp9KQojZWxzZQojZGVmaW5lIHZtbHNfbGFuZV9zMTYoX19wMF84MSwgX19wMV84MSwgX19wMl84MSwgX19wM184MSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NF90IF9fczBfODEgPSBfX3AwXzgxOyBcCiAgaW50MTZ4NF90IF9fczFfODEgPSBfX3AxXzgxOyBcCiAgaW50MTZ4NF90IF9fczJfODEgPSBfX3AyXzgxOyBcCiAgaW50MTZ4NF90IF9fcmV2MF84MTsgIF9fcmV2MF84MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfODEsIF9fczBfODEsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4NF90IF9fcmV2MV84MTsgIF9fcmV2MV84MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfODEsIF9fczFfODEsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4NF90IF9fcmV2Ml84MTsgIF9fcmV2Ml84MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfODEsIF9fczJfODEsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4NF90IF9fcmV0XzgxOyBcCiAgX19yZXRfODEgPSBfX3JldjBfODEgLSBfX3JldjFfODEgKiBfX25vc3dhcF9zcGxhdF9sYW5lX3MxNihfX3JldjJfODEsIF9fcDNfODEpOyBcCiAgX19yZXRfODEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF84MSwgX19yZXRfODEsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfODE7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZtbHNxX25fdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxLCB1aW50MzJfdCBfX3AyKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgLSBfX3AxICogKHVpbnQzMng0X3QpIHtfX3AyLCBfX3AyLCBfX3AyLCBfX3AyfTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4NF90IHZtbHNxX25fdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxLCB1aW50MzJfdCBfX3AyKSB7CiAgdWludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgLSBfX3JldjEgKiAodWludDMyeDRfdCkge19fcDIsIF9fcDIsIF9fcDIsIF9fcDJ9OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4OF90IHZtbHNxX25fdTE2KHVpbnQxNng4X3QgX19wMCwgdWludDE2eDhfdCBfX3AxLCB1aW50MTZfdCBfX3AyKSB7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgLSBfX3AxICogKHVpbnQxNng4X3QpIHtfX3AyLCBfX3AyLCBfX3AyLCBfX3AyLCBfX3AyLCBfX3AyLCBfX3AyLCBfX3AyfTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4OF90IHZtbHNxX25fdTE2KHVpbnQxNng4X3QgX19wMCwgdWludDE2eDhfdCBfX3AxLCB1aW50MTZfdCBfX3AyKSB7CiAgdWludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgLSBfX3JldjEgKiAodWludDE2eDhfdCkge19fcDIsIF9fcDIsIF9fcDIsIF9fcDIsIF9fcDIsIF9fcDIsIF9fcDIsIF9fcDJ9OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDRfdCB2bWxzcV9uX2YzMihmbG9hdDMyeDRfdCBfX3AwLCBmbG9hdDMyeDRfdCBfX3AxLCBmbG9hdDMyX3QgX19wMikgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAtIF9fcDEgKiAoZmxvYXQzMng0X3QpIHtfX3AyLCBfX3AyLCBfX3AyLCBfX3AyfTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDRfdCB2bWxzcV9uX2YzMihmbG9hdDMyeDRfdCBfX3AwLCBmbG9hdDMyeDRfdCBfX3AxLCBmbG9hdDMyX3QgX19wMikgewogIGZsb2F0MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwIC0gX19yZXYxICogKGZsb2F0MzJ4NF90KSB7X19wMiwgX19wMiwgX19wMiwgX19wMn07CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDRfdCB2bWxzcV9uX3MzMihpbnQzMng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEsIGludDMyX3QgX19wMikgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgLSBfX3AxICogKGludDMyeDRfdCkge19fcDIsIF9fcDIsIF9fcDIsIF9fcDJ9OwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDRfdCB2bWxzcV9uX3MzMihpbnQzMng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEsIGludDMyX3QgX19wMikgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwIC0gX19yZXYxICogKGludDMyeDRfdCkge19fcDIsIF9fcDIsIF9fcDIsIF9fcDJ9OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng4X3Qgdm1sc3Ffbl9zMTYoaW50MTZ4OF90IF9fcDAsIGludDE2eDhfdCBfX3AxLCBpbnQxNl90IF9fcDIpIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwIC0gX19wMSAqIChpbnQxNng4X3QpIHtfX3AyLCBfX3AyLCBfX3AyLCBfX3AyLCBfX3AyLCBfX3AyLCBfX3AyLCBfX3AyfTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng4X3Qgdm1sc3Ffbl9zMTYoaW50MTZ4OF90IF9fcDAsIGludDE2eDhfdCBfX3AxLCBpbnQxNl90IF9fcDIpIHsKICBpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCAtIF9fcmV2MSAqIChpbnQxNng4X3QpIHtfX3AyLCBfX3AyLCBfX3AyLCBfX3AyLCBfX3AyLCBfX3AyLCBfX3AyLCBfX3AyfTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDJfdCB2bWxzX25fdTMyKHVpbnQzMngyX3QgX19wMCwgdWludDMyeDJfdCBfX3AxLCB1aW50MzJfdCBfX3AyKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgLSBfX3AxICogKHVpbnQzMngyX3QpIHtfX3AyLCBfX3AyfTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4Ml90IHZtbHNfbl91MzIodWludDMyeDJfdCBfX3AwLCB1aW50MzJ4Ml90IF9fcDEsIHVpbnQzMl90IF9fcDIpIHsKICB1aW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCAtIF9fcmV2MSAqICh1aW50MzJ4Ml90KSB7X19wMiwgX19wMn07CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng0X3Qgdm1sc19uX3UxNih1aW50MTZ4NF90IF9fcDAsIHVpbnQxNng0X3QgX19wMSwgdWludDE2X3QgX19wMikgewogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwIC0gX19wMSAqICh1aW50MTZ4NF90KSB7X19wMiwgX19wMiwgX19wMiwgX19wMn07CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDRfdCB2bWxzX25fdTE2KHVpbnQxNng0X3QgX19wMCwgdWludDE2eDRfdCBfX3AxLCB1aW50MTZfdCBfX3AyKSB7CiAgdWludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgLSBfX3JldjEgKiAodWludDE2eDRfdCkge19fcDIsIF9fcDIsIF9fcDIsIF9fcDJ9OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDJfdCB2bWxzX25fZjMyKGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0MzJ4Ml90IF9fcDEsIGZsb2F0MzJfdCBfX3AyKSB7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwIC0gX19wMSAqIChmbG9hdDMyeDJfdCkge19fcDIsIF9fcDJ9OwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4Ml90IHZtbHNfbl9mMzIoZmxvYXQzMngyX3QgX19wMCwgZmxvYXQzMngyX3QgX19wMSwgZmxvYXQzMl90IF9fcDIpIHsKICBmbG9hdDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCAtIF9fcmV2MSAqIChmbG9hdDMyeDJfdCkge19fcDIsIF9fcDJ9OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMngyX3Qgdm1sc19uX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEsIGludDMyX3QgX19wMikgewogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgLSBfX3AxICogKGludDMyeDJfdCkge19fcDIsIF9fcDJ9OwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDJfdCB2bWxzX25fczMyKGludDMyeDJfdCBfX3AwLCBpbnQzMngyX3QgX19wMSwgaW50MzJfdCBfX3AyKSB7CiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgLSBfX3JldjEgKiAoaW50MzJ4Ml90KSB7X19wMiwgX19wMn07CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDRfdCB2bWxzX25fczE2KGludDE2eDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSwgaW50MTZfdCBfX3AyKSB7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAtIF9fcDEgKiAoaW50MTZ4NF90KSB7X19wMiwgX19wMiwgX19wMiwgX19wMn07CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4NF90IHZtbHNfbl9zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxLCBpbnQxNl90IF9fcDIpIHsKICBpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCAtIF9fcmV2MSAqIChpbnQxNng0X3QpIHtfX3AyLCBfX3AyLCBfX3AyLCBfX3AyfTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgcG9seTh4OF90IHZtb3Zfbl9wOChwb2x5OF90IF9fcDApIHsKICBwb2x5OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTh4OF90KSB7X19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMH07CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgcG9seTh4OF90IHZtb3Zfbl9wOChwb2x5OF90IF9fcDApIHsKICBwb2x5OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTh4OF90KSB7X19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMH07CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHBvbHkxNng0X3Qgdm1vdl9uX3AxNihwb2x5MTZfdCBfX3AwKSB7CiAgcG9seTE2eDRfdCBfX3JldDsKICBfX3JldCA9IChwb2x5MTZ4NF90KSB7X19wMCwgX19wMCwgX19wMCwgX19wMH07CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgcG9seTE2eDRfdCB2bW92X25fcDE2KHBvbHkxNl90IF9fcDApIHsKICBwb2x5MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHkxNng0X3QpIHtfX3AwLCBfX3AwLCBfX3AwLCBfX3AwfTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgcG9seTh4MTZfdCB2bW92cV9uX3A4KHBvbHk4X3QgX19wMCkgewogIHBvbHk4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTh4MTZfdCkge19fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDB9OwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHBvbHk4eDE2X3Qgdm1vdnFfbl9wOChwb2x5OF90IF9fcDApIHsKICBwb2x5OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk4eDE2X3QpIHtfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwfTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgcG9seTE2eDhfdCB2bW92cV9uX3AxNihwb2x5MTZfdCBfX3AwKSB7CiAgcG9seTE2eDhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5MTZ4OF90KSB7X19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMH07CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgcG9seTE2eDhfdCB2bW92cV9uX3AxNihwb2x5MTZfdCBfX3AwKSB7CiAgcG9seTE2eDhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5MTZ4OF90KSB7X19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMH07CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDE2X3Qgdm1vdnFfbl91OCh1aW50OF90IF9fcDApIHsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpIHtfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwfTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHgxNl90IHZtb3ZxX25fdTgodWludDhfdCBfX3AwKSB7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHgxNl90KSB7X19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMH07CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMng0X3Qgdm1vdnFfbl91MzIodWludDMyX3QgX19wMCkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkge19fcDAsIF9fcDAsIF9fcDAsIF9fcDB9OwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMng0X3Qgdm1vdnFfbl91MzIodWludDMyX3QgX19wMCkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkge19fcDAsIF9fcDAsIF9fcDAsIF9fcDB9OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50NjR4Ml90IHZtb3ZxX25fdTY0KHVpbnQ2NF90IF9fcDApIHsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpIHtfX3AwLCBfX3AwfTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50NjR4Ml90IHZtb3ZxX25fdTY0KHVpbnQ2NF90IF9fcDApIHsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpIHtfX3AwLCBfX3AwfTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDhfdCB2bW92cV9uX3UxNih1aW50MTZfdCBfX3AwKSB7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KSB7X19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMH07CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDhfdCB2bW92cV9uX3UxNih1aW50MTZfdCBfX3AwKSB7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KSB7X19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMH07CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4MTZfdCB2bW92cV9uX3M4KGludDhfdCBfX3AwKSB7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4MTZfdCkge19fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDB9OwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4MTZfdCB2bW92cV9uX3M4KGludDhfdCBfX3AwKSB7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4MTZfdCkge19fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDAsIF9fcDB9OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDRfdCB2bW92cV9uX2YzMihmbG9hdDMyX3QgX19wMCkgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSB7X19wMCwgX19wMCwgX19wMCwgX19wMH07CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMng0X3Qgdm1vdnFfbl9mMzIoZmxvYXQzMl90IF9fcDApIHsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDRfdCkge19fcDAsIF9fcDAsIF9fcDAsIF9fcDB9OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bW92cV9uX2YxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KSB7X19zMCwgX19zMCwgX19zMCwgX19zMCwgX19zMCwgX19zMCwgX19zMCwgX19zMH07IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZtb3ZxX25fZjE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQxNng4X3QpIHtfX3MwLCBfX3MwLCBfX3MwLCBfX3MwLCBfX3MwLCBfX3MwLCBfX3MwLCBfX3MwfTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4NF90IHZtb3ZxX25fczMyKGludDMyX3QgX19wMCkgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMng0X3QpIHtfX3AwLCBfX3AwLCBfX3AwLCBfX3AwfTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMng0X3Qgdm1vdnFfbl9zMzIoaW50MzJfdCBfX3AwKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkge19fcDAsIF9fcDAsIF9fcDAsIF9fcDB9OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ2NHgyX3Qgdm1vdnFfbl9zNjQoaW50NjRfdCBfX3AwKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDJfdCkge19fcDAsIF9fcDB9OwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDY0eDJfdCB2bW92cV9uX3M2NChpbnQ2NF90IF9fcDApIHsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50NjR4Ml90KSB7X19wMCwgX19wMH07CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDhfdCB2bW92cV9uX3MxNihpbnQxNl90IF9fcDApIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4OF90KSB7X19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMH07CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4OF90IHZtb3ZxX25fczE2KGludDE2X3QgX19wMCkgewogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng4X3QpIHtfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwfTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4OF90IHZtb3Zfbl91OCh1aW50OF90IF9fcDApIHsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KSB7X19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMH07CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4OF90IHZtb3Zfbl91OCh1aW50OF90IF9fcDApIHsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KSB7X19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMH07CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMngyX3Qgdm1vdl9uX3UzMih1aW50MzJfdCBfX3AwKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KSB7X19wMCwgX19wMH07CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDJfdCB2bW92X25fdTMyKHVpbnQzMl90IF9fcDApIHsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMngyX3QpIHtfX3AwLCBfX3AwfTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKX19haSB1aW50NjR4MV90IHZtb3Zfbl91NjQodWludDY0X3QgX19wMCkgewogIHVpbnQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDFfdCkge19fcDB9OwogIHJldHVybiBfX3JldDsKfQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4NF90IHZtb3Zfbl91MTYodWludDE2X3QgX19wMCkgewogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkge19fcDAsIF9fcDAsIF9fcDAsIF9fcDB9OwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng0X3Qgdm1vdl9uX3UxNih1aW50MTZfdCBfX3AwKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KSB7X19wMCwgX19wMCwgX19wMCwgX19wMH07CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4OF90IHZtb3Zfbl9zOChpbnQ4X3QgX19wMCkgewogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4OF90KSB7X19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMH07CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OHg4X3Qgdm1vdl9uX3M4KGludDhfdCBfX3AwKSB7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpIHtfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwLCBfX3AwfTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMngyX3Qgdm1vdl9uX2YzMihmbG9hdDMyX3QgX19wMCkgewogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KSB7X19wMCwgX19wMH07CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMngyX3Qgdm1vdl9uX2YzMihmbG9hdDMyX3QgX19wMCkgewogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KSB7X19wMCwgX19wMH07CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtb3Zfbl9mMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNl90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDE2eDRfdCkge19fczAsIF9fczAsIF9fczAsIF9fczB9OyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bW92X25fZjE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQxNng0X3QpIHtfX3MwLCBfX3MwLCBfX3MwLCBfX3MwfTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4Ml90IHZtb3Zfbl9zMzIoaW50MzJfdCBfX3AwKSB7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDJfdCkge19fcDAsIF9fcDB9OwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDJfdCB2bW92X25fczMyKGludDMyX3QgX19wMCkgewogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMngyX3QpIHtfX3AwLCBfX3AwfTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKX19haSBpbnQ2NHgxX3Qgdm1vdl9uX3M2NChpbnQ2NF90IF9fcDApIHsKICBpbnQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50NjR4MV90KSB7X19wMH07CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDRfdCB2bW92X25fczE2KGludDE2X3QgX19wMCkgewogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng0X3QpIHtfX3AwLCBfX3AwLCBfX3AwLCBfX3AwfTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng0X3Qgdm1vdl9uX3MxNihpbnQxNl90IF9fcDApIHsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4NF90KSB7X19wMCwgX19wMCwgX19wMCwgX19wMH07CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng4X3Qgdm1vdmxfdTgodWludDh4OF90IF9fcDApIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3Ztb3ZsX3YoKGludDh4OF90KV9fcDAsIDQ5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4OF90IHZtb3ZsX3U4KHVpbnQ4eDhfdCBfX3AwKSB7CiAgdWludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkgX19idWlsdGluX25lb25fdm1vdmxfdigoaW50OHg4X3QpX19yZXYwLCA0OSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQxNng4X3QgX19ub3N3YXBfdm1vdmxfdTgodWludDh4OF90IF9fcDApIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3Ztb3ZsX3YoKGludDh4OF90KV9fcDAsIDQ5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50NjR4Ml90IHZtb3ZsX3UzMih1aW50MzJ4Ml90IF9fcDApIHsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3Ztb3ZsX3YoKGludDh4OF90KV9fcDAsIDUxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50NjR4Ml90IHZtb3ZsX3UzMih1aW50MzJ4Ml90IF9fcDApIHsKICB1aW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkgX19idWlsdGluX25lb25fdm1vdmxfdigoaW50OHg4X3QpX19yZXYwLCA1MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ2NHgyX3QgX19ub3N3YXBfdm1vdmxfdTMyKHVpbnQzMngyX3QgX19wMCkgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkgX19idWlsdGluX25lb25fdm1vdmxfdigoaW50OHg4X3QpX19wMCwgNTEpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMng0X3Qgdm1vdmxfdTE2KHVpbnQxNng0X3QgX19wMCkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdm1vdmxfdigoaW50OHg4X3QpX19wMCwgNTApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMng0X3Qgdm1vdmxfdTE2KHVpbnQxNng0X3QgX19wMCkgewogIHVpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92bW92bF92KChpbnQ4eDhfdClfX3JldjAsIDUwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDMyeDRfdCBfX25vc3dhcF92bW92bF91MTYodWludDE2eDRfdCBfX3AwKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92bW92bF92KChpbnQ4eDhfdClfX3AwLCA1MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZ4OF90IHZtb3ZsX3M4KGludDh4OF90IF9fcDApIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92bW92bF92KChpbnQ4eDhfdClfX3AwLCAzMyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4OF90IHZtb3ZsX3M4KGludDh4OF90IF9fcDApIHsKICBpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92bW92bF92KChpbnQ4eDhfdClfX3JldjAsIDMzKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MTZ4OF90IF9fbm9zd2FwX3Ztb3ZsX3M4KGludDh4OF90IF9fcDApIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92bW92bF92KChpbnQ4eDhfdClfX3AwLCAzMyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50NjR4Ml90IHZtb3ZsX3MzMihpbnQzMngyX3QgX19wMCkgewogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3Ztb3ZsX3YoKGludDh4OF90KV9fcDAsIDM1KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ2NHgyX3Qgdm1vdmxfczMyKGludDMyeDJfdCBfX3AwKSB7CiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3Ztb3ZsX3YoKGludDh4OF90KV9fcmV2MCwgMzUpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQ2NHgyX3QgX19ub3N3YXBfdm1vdmxfczMyKGludDMyeDJfdCBfX3AwKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDJfdCkgX19idWlsdGluX25lb25fdm1vdmxfdigoaW50OHg4X3QpX19wMCwgMzUpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDRfdCB2bW92bF9zMTYoaW50MTZ4NF90IF9fcDApIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92bW92bF92KChpbnQ4eDhfdClfX3AwLCAzNCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4NF90IHZtb3ZsX3MxNihpbnQxNng0X3QgX19wMCkgewogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92bW92bF92KChpbnQ4eDhfdClfX3JldjAsIDM0KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MzJ4NF90IF9fbm9zd2FwX3Ztb3ZsX3MxNihpbnQxNng0X3QgX19wMCkgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3Ztb3ZsX3YoKGludDh4OF90KV9fcDAsIDM0KTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4NF90IHZtb3ZuX3UzMih1aW50MzJ4NF90IF9fcDApIHsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3Ztb3ZuX3YoKGludDh4MTZfdClfX3AwLCAxNyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDRfdCB2bW92bl91MzIodWludDMyeDRfdCBfX3AwKSB7CiAgdWludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3Ztb3ZuX3YoKGludDh4MTZfdClfX3JldjAsIDE3KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDE2eDRfdCBfX25vc3dhcF92bW92bl91MzIodWludDMyeDRfdCBfX3AwKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92bW92bl92KChpbnQ4eDE2X3QpX19wMCwgMTcpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMngyX3Qgdm1vdm5fdTY0KHVpbnQ2NHgyX3QgX19wMCkgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdm1vdm5fdigoaW50OHgxNl90KV9fcDAsIDE4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4Ml90IHZtb3ZuX3U2NCh1aW50NjR4Ml90IF9fcDApIHsKICB1aW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdm1vdm5fdigoaW50OHgxNl90KV9fcmV2MCwgMTgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MzJ4Ml90IF9fbm9zd2FwX3Ztb3ZuX3U2NCh1aW50NjR4Ml90IF9fcDApIHsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3Ztb3ZuX3YoKGludDh4MTZfdClfX3AwLCAxOCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4OF90IHZtb3ZuX3UxNih1aW50MTZ4OF90IF9fcDApIHsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92bW92bl92KChpbnQ4eDE2X3QpX19wMCwgMTYpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDhfdCB2bW92bl91MTYodWludDE2eDhfdCBfX3AwKSB7CiAgdWludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92bW92bl92KChpbnQ4eDE2X3QpX19yZXYwLCAxNik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ4eDhfdCBfX25vc3dhcF92bW92bl91MTYodWludDE2eDhfdCBfX3AwKSB7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdm1vdm5fdigoaW50OHgxNl90KV9fcDAsIDE2KTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng0X3Qgdm1vdm5fczMyKGludDMyeDRfdCBfX3AwKSB7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdm1vdm5fdigoaW50OHgxNl90KV9fcDAsIDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDRfdCB2bW92bl9zMzIoaW50MzJ4NF90IF9fcDApIHsKICBpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdm1vdm5fdigoaW50OHgxNl90KV9fcmV2MCwgMSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDE2eDRfdCBfX25vc3dhcF92bW92bl9zMzIoaW50MzJ4NF90IF9fcDApIHsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92bW92bl92KChpbnQ4eDE2X3QpX19wMCwgMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4Ml90IHZtb3ZuX3M2NChpbnQ2NHgyX3QgX19wMCkgewogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3Ztb3ZuX3YoKGludDh4MTZfdClfX3AwLCAyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMngyX3Qgdm1vdm5fczY0KGludDY0eDJfdCBfX3AwKSB7CiAgaW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3Ztb3ZuX3YoKGludDh4MTZfdClfX3JldjAsIDIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQzMngyX3QgX19ub3N3YXBfdm1vdm5fczY0KGludDY0eDJfdCBfX3AwKSB7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdm1vdm5fdigoaW50OHgxNl90KV9fcDAsIDIpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4OF90IHZtb3ZuX3MxNihpbnQxNng4X3QgX19wMCkgewogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92bW92bl92KChpbnQ4eDE2X3QpX19wMCwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OHg4X3Qgdm1vdm5fczE2KGludDE2eDhfdCBfX3AwKSB7CiAgaW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92bW92bl92KChpbnQ4eDE2X3QpX19yZXYwLCAwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50OHg4X3QgX19ub3N3YXBfdm1vdm5fczE2KGludDE2eDhfdCBfX3AwKSB7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3Ztb3ZuX3YoKGludDh4MTZfdClfX3AwLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHgxNl90IHZtdWxxX3U4KHVpbnQ4eDE2X3QgX19wMCwgdWludDh4MTZfdCBfX3AxKSB7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgKiBfX3AxOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDE2X3Qgdm11bHFfdTgodWludDh4MTZfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEpIHsKICB1aW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCAqIF9fcmV2MTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDRfdCB2bXVscV91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAqIF9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2bXVscV91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCAqIF9fcmV2MTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDhfdCB2bXVscV91MTYodWludDE2eDhfdCBfX3AwLCB1aW50MTZ4OF90IF9fcDEpIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAqIF9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDhfdCB2bXVscV91MTYodWludDE2eDhfdCBfX3AwLCB1aW50MTZ4OF90IF9fcDEpIHsKICB1aW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCAqIF9fcmV2MTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHgxNl90IHZtdWxxX3M4KGludDh4MTZfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSkgewogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgKiBfX3AxOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4MTZfdCB2bXVscV9zOChpbnQ4eDE2X3QgX19wMCwgaW50OHgxNl90IF9fcDEpIHsKICBpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCAqIF9fcmV2MTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMng0X3Qgdm11bHFfZjMyKGZsb2F0MzJ4NF90IF9fcDAsIGZsb2F0MzJ4NF90IF9fcDEpIHsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgKiBfX3AxOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4NF90IHZtdWxxX2YzMihmbG9hdDMyeDRfdCBfX3AwLCBmbG9hdDMyeDRfdCBfX3AxKSB7CiAgZmxvYXQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgKiBfX3JldjE7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDRfdCB2bXVscV9zMzIoaW50MzJ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAqIF9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4NF90IHZtdWxxX3MzMihpbnQzMng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEpIHsKICBpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCAqIF9fcmV2MTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZ4OF90IHZtdWxxX3MxNihpbnQxNng4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEpIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICogX19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng4X3Qgdm11bHFfczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICogX19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHg4X3Qgdm11bF91OCh1aW50OHg4X3QgX19wMCwgdWludDh4OF90IF9fcDEpIHsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICogX19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHg4X3Qgdm11bF91OCh1aW50OHg4X3QgX19wMCwgdWludDh4OF90IF9fcDEpIHsKICB1aW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCAqIF9fcmV2MTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDJfdCB2bXVsX3UzMih1aW50MzJ4Ml90IF9fcDAsIHVpbnQzMngyX3QgX19wMSkgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICogX19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4Ml90IHZtdWxfdTMyKHVpbnQzMngyX3QgX19wMCwgdWludDMyeDJfdCBfX3AxKSB7CiAgdWludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgKiBfX3JldjE7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng0X3Qgdm11bF91MTYodWludDE2eDRfdCBfX3AwLCB1aW50MTZ4NF90IF9fcDEpIHsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAqIF9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDRfdCB2bXVsX3UxNih1aW50MTZ4NF90IF9fcDAsIHVpbnQxNng0X3QgX19wMSkgewogIHVpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICogX19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDhfdCB2bXVsX3M4KGludDh4OF90IF9fcDAsIGludDh4OF90IF9fcDEpIHsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgKiBfX3AxOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4OF90IHZtdWxfczgoaW50OHg4X3QgX19wMCwgaW50OHg4X3QgX19wMSkgewogIGludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICogX19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDJfdCB2bXVsX2YzMihmbG9hdDMyeDJfdCBfX3AwLCBmbG9hdDMyeDJfdCBfX3AxKSB7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICogX19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDJfdCB2bXVsX2YzMihmbG9hdDMyeDJfdCBfX3AwLCBmbG9hdDMyeDJfdCBfX3AxKSB7CiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgKiBfX3JldjE7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDJfdCB2bXVsX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEpIHsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICogX19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMngyX3Qgdm11bF9zMzIoaW50MzJ4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxKSB7CiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgKiBfX3JldjE7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDRfdCB2bXVsX3MxNihpbnQxNng0X3QgX19wMCwgaW50MTZ4NF90IF9fcDEpIHsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICogX19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng0X3Qgdm11bF9zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxKSB7CiAgaW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgKiBfX3JldjE7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHBvbHk4eDhfdCB2bXVsX3A4KHBvbHk4eDhfdCBfX3AwLCBwb2x5OHg4X3QgX19wMSkgewogIHBvbHk4eDhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZtdWxfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDQpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHBvbHk4eDhfdCB2bXVsX3A4KHBvbHk4eDhfdCBfX3AwLCBwb2x5OHg4X3QgX19wMSkgewogIHBvbHk4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBwb2x5OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk4eDhfdCkgX19idWlsdGluX25lb25fdm11bF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDQpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBwb2x5OHgxNl90IHZtdWxxX3A4KHBvbHk4eDE2X3QgX19wMCwgcG9seTh4MTZfdCBfX3AxKSB7CiAgcG9seTh4MTZfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92bXVscV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAzNik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgcG9seTh4MTZfdCB2bXVscV9wOChwb2x5OHgxNl90IF9fcDAsIHBvbHk4eDE2X3QgX19wMSkgewogIHBvbHk4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBwb2x5OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZtdWxxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAzNik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtdWxxX2xhbmVfdTMyKF9fcDBfODIsIF9fcDFfODIsIF9fcDJfODIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0X3QgX19zMF84MiA9IF9fcDBfODI7IFwKICB1aW50MzJ4Ml90IF9fczFfODIgPSBfX3AxXzgyOyBcCiAgdWludDMyeDRfdCBfX3JldF84MjsgXAogIF9fcmV0XzgyID0gX19zMF84MiAqIHNwbGF0cV9sYW5lX3UzMihfX3MxXzgyLCBfX3AyXzgyKTsgXAogIF9fcmV0XzgyOyBcCn0pCiNlbHNlCiNkZWZpbmUgdm11bHFfbGFuZV91MzIoX19wMF84MywgX19wMV84MywgX19wMl84MykgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDRfdCBfX3MwXzgzID0gX19wMF84MzsgXAogIHVpbnQzMngyX3QgX19zMV84MyA9IF9fcDFfODM7IFwKICB1aW50MzJ4NF90IF9fcmV2MF84MzsgIF9fcmV2MF84MyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfODMsIF9fczBfODMsIDMsIDIsIDEsIDApOyBcCiAgdWludDMyeDJfdCBfX3JldjFfODM7ICBfX3JldjFfODMgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzgzLCBfX3MxXzgzLCAxLCAwKTsgXAogIHVpbnQzMng0X3QgX19yZXRfODM7IFwKICBfX3JldF84MyA9IF9fcmV2MF84MyAqIF9fbm9zd2FwX3NwbGF0cV9sYW5lX3UzMihfX3JldjFfODMsIF9fcDJfODMpOyBcCiAgX19yZXRfODMgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF84MywgX19yZXRfODMsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfODM7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bXVscV9sYW5lX3UxNihfX3AwXzg0LCBfX3AxXzg0LCBfX3AyXzg0KSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4OF90IF9fczBfODQgPSBfX3AwXzg0OyBcCiAgdWludDE2eDRfdCBfX3MxXzg0ID0gX19wMV84NDsgXAogIHVpbnQxNng4X3QgX19yZXRfODQ7IFwKICBfX3JldF84NCA9IF9fczBfODQgKiBzcGxhdHFfbGFuZV91MTYoX19zMV84NCwgX19wMl84NCk7IFwKICBfX3JldF84NDsgXAp9KQojZWxzZQojZGVmaW5lIHZtdWxxX2xhbmVfdTE2KF9fcDBfODUsIF9fcDFfODUsIF9fcDJfODUpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng4X3QgX19zMF84NSA9IF9fcDBfODU7IFwKICB1aW50MTZ4NF90IF9fczFfODUgPSBfX3AxXzg1OyBcCiAgdWludDE2eDhfdCBfX3JldjBfODU7ICBfX3JldjBfODUgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzg1LCBfX3MwXzg1LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQxNng0X3QgX19yZXYxXzg1OyAgX19yZXYxXzg1ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV84NSwgX19zMV84NSwgMywgMiwgMSwgMCk7IFwKICB1aW50MTZ4OF90IF9fcmV0Xzg1OyBcCiAgX19yZXRfODUgPSBfX3JldjBfODUgKiBfX25vc3dhcF9zcGxhdHFfbGFuZV91MTYoX19yZXYxXzg1LCBfX3AyXzg1KTsgXAogIF9fcmV0Xzg1ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfODUsIF9fcmV0Xzg1LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0Xzg1OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm11bHFfbGFuZV9mMzIoX19wMF84NiwgX19wMV84NiwgX19wMl84NikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0X3QgX19zMF84NiA9IF9fcDBfODY7IFwKICBmbG9hdDMyeDJfdCBfX3MxXzg2ID0gX19wMV84NjsgXAogIGZsb2F0MzJ4NF90IF9fcmV0Xzg2OyBcCiAgX19yZXRfODYgPSBfX3MwXzg2ICogc3BsYXRxX2xhbmVfZjMyKF9fczFfODYsIF9fcDJfODYpOyBcCiAgX19yZXRfODY7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bXVscV9sYW5lX2YzMihfX3AwXzg3LCBfX3AxXzg3LCBfX3AyXzg3KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDRfdCBfX3MwXzg3ID0gX19wMF84NzsgXAogIGZsb2F0MzJ4Ml90IF9fczFfODcgPSBfX3AxXzg3OyBcCiAgZmxvYXQzMng0X3QgX19yZXYwXzg3OyAgX19yZXYwXzg3ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF84NywgX19zMF84NywgMywgMiwgMSwgMCk7IFwKICBmbG9hdDMyeDJfdCBfX3JldjFfODc7ICBfX3JldjFfODcgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzg3LCBfX3MxXzg3LCAxLCAwKTsgXAogIGZsb2F0MzJ4NF90IF9fcmV0Xzg3OyBcCiAgX19yZXRfODcgPSBfX3JldjBfODcgKiBfX25vc3dhcF9zcGxhdHFfbGFuZV9mMzIoX19yZXYxXzg3LCBfX3AyXzg3KTsgXAogIF9fcmV0Xzg3ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfODcsIF9fcmV0Xzg3LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0Xzg3OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm11bHFfbGFuZV9zMzIoX19wMF84OCwgX19wMV84OCwgX19wMl84OCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczBfODggPSBfX3AwXzg4OyBcCiAgaW50MzJ4Ml90IF9fczFfODggPSBfX3AxXzg4OyBcCiAgaW50MzJ4NF90IF9fcmV0Xzg4OyBcCiAgX19yZXRfODggPSBfX3MwXzg4ICogc3BsYXRxX2xhbmVfczMyKF9fczFfODgsIF9fcDJfODgpOyBcCiAgX19yZXRfODg7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bXVscV9sYW5lX3MzMihfX3AwXzg5LCBfX3AxXzg5LCBfX3AyXzg5KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMF84OSA9IF9fcDBfODk7IFwKICBpbnQzMngyX3QgX19zMV84OSA9IF9fcDFfODk7IFwKICBpbnQzMng0X3QgX19yZXYwXzg5OyAgX19yZXYwXzg5ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF84OSwgX19zMF84OSwgMywgMiwgMSwgMCk7IFwKICBpbnQzMngyX3QgX19yZXYxXzg5OyAgX19yZXYxXzg5ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV84OSwgX19zMV84OSwgMSwgMCk7IFwKICBpbnQzMng0X3QgX19yZXRfODk7IFwKICBfX3JldF84OSA9IF9fcmV2MF84OSAqIF9fbm9zd2FwX3NwbGF0cV9sYW5lX3MzMihfX3JldjFfODksIF9fcDJfODkpOyBcCiAgX19yZXRfODkgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF84OSwgX19yZXRfODksIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfODk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bXVscV9sYW5lX3MxNihfX3AwXzkwLCBfX3AxXzkwLCBfX3AyXzkwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4X3QgX19zMF85MCA9IF9fcDBfOTA7IFwKICBpbnQxNng0X3QgX19zMV85MCA9IF9fcDFfOTA7IFwKICBpbnQxNng4X3QgX19yZXRfOTA7IFwKICBfX3JldF85MCA9IF9fczBfOTAgKiBzcGxhdHFfbGFuZV9zMTYoX19zMV85MCwgX19wMl85MCk7IFwKICBfX3JldF85MDsgXAp9KQojZWxzZQojZGVmaW5lIHZtdWxxX2xhbmVfczE2KF9fcDBfOTEsIF9fcDFfOTEsIF9fcDJfOTEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDhfdCBfX3MwXzkxID0gX19wMF85MTsgXAogIGludDE2eDRfdCBfX3MxXzkxID0gX19wMV85MTsgXAogIGludDE2eDhfdCBfX3JldjBfOTE7ICBfX3JldjBfOTEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzkxLCBfX3MwXzkxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDRfdCBfX3JldjFfOTE7ICBfX3JldjFfOTEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzkxLCBfX3MxXzkxLCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDhfdCBfX3JldF85MTsgXAogIF9fcmV0XzkxID0gX19yZXYwXzkxICogX19ub3N3YXBfc3BsYXRxX2xhbmVfczE2KF9fcmV2MV85MSwgX19wMl85MSk7IFwKICBfX3JldF85MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzkxLCBfX3JldF85MSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF85MTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtdWxfbGFuZV91MzIoX19wMF85MiwgX19wMV85MiwgX19wMl85MikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDJfdCBfX3MwXzkyID0gX19wMF85MjsgXAogIHVpbnQzMngyX3QgX19zMV85MiA9IF9fcDFfOTI7IFwKICB1aW50MzJ4Ml90IF9fcmV0XzkyOyBcCiAgX19yZXRfOTIgPSBfX3MwXzkyICogc3BsYXRfbGFuZV91MzIoX19zMV85MiwgX19wMl85Mik7IFwKICBfX3JldF85MjsgXAp9KQojZWxzZQojZGVmaW5lIHZtdWxfbGFuZV91MzIoX19wMF85MywgX19wMV85MywgX19wMl85MykgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDJfdCBfX3MwXzkzID0gX19wMF85MzsgXAogIHVpbnQzMngyX3QgX19zMV85MyA9IF9fcDFfOTM7IFwKICB1aW50MzJ4Ml90IF9fcmV2MF85MzsgIF9fcmV2MF85MyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfOTMsIF9fczBfOTMsIDEsIDApOyBcCiAgdWludDMyeDJfdCBfX3JldjFfOTM7ICBfX3JldjFfOTMgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzkzLCBfX3MxXzkzLCAxLCAwKTsgXAogIHVpbnQzMngyX3QgX19yZXRfOTM7IFwKICBfX3JldF85MyA9IF9fcmV2MF85MyAqIF9fbm9zd2FwX3NwbGF0X2xhbmVfdTMyKF9fcmV2MV85MywgX19wMl85Myk7IFwKICBfX3JldF85MyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzkzLCBfX3JldF85MywgMSwgMCk7IFwKICBfX3JldF85MzsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtdWxfbGFuZV91MTYoX19wMF85NCwgX19wMV85NCwgX19wMl85NCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDRfdCBfX3MwXzk0ID0gX19wMF85NDsgXAogIHVpbnQxNng0X3QgX19zMV85NCA9IF9fcDFfOTQ7IFwKICB1aW50MTZ4NF90IF9fcmV0Xzk0OyBcCiAgX19yZXRfOTQgPSBfX3MwXzk0ICogc3BsYXRfbGFuZV91MTYoX19zMV85NCwgX19wMl85NCk7IFwKICBfX3JldF85NDsgXAp9KQojZWxzZQojZGVmaW5lIHZtdWxfbGFuZV91MTYoX19wMF85NSwgX19wMV85NSwgX19wMl85NSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDRfdCBfX3MwXzk1ID0gX19wMF85NTsgXAogIHVpbnQxNng0X3QgX19zMV85NSA9IF9fcDFfOTU7IFwKICB1aW50MTZ4NF90IF9fcmV2MF85NTsgIF9fcmV2MF85NSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfOTUsIF9fczBfOTUsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDRfdCBfX3JldjFfOTU7ICBfX3JldjFfOTUgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzk1LCBfX3MxXzk1LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQxNng0X3QgX19yZXRfOTU7IFwKICBfX3JldF85NSA9IF9fcmV2MF85NSAqIF9fbm9zd2FwX3NwbGF0X2xhbmVfdTE2KF9fcmV2MV85NSwgX19wMl85NSk7IFwKICBfX3JldF85NSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0Xzk1LCBfX3JldF85NSwgMywgMiwgMSwgMCk7IFwKICBfX3JldF85NTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtdWxfbGFuZV9mMzIoX19wMF85NiwgX19wMV85NiwgX19wMl85NikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMngyX3QgX19zMF85NiA9IF9fcDBfOTY7IFwKICBmbG9hdDMyeDJfdCBfX3MxXzk2ID0gX19wMV85NjsgXAogIGZsb2F0MzJ4Ml90IF9fcmV0Xzk2OyBcCiAgX19yZXRfOTYgPSBfX3MwXzk2ICogc3BsYXRfbGFuZV9mMzIoX19zMV85NiwgX19wMl85Nik7IFwKICBfX3JldF85NjsgXAp9KQojZWxzZQojZGVmaW5lIHZtdWxfbGFuZV9mMzIoX19wMF85NywgX19wMV85NywgX19wMl85NykgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMngyX3QgX19zMF85NyA9IF9fcDBfOTc7IFwKICBmbG9hdDMyeDJfdCBfX3MxXzk3ID0gX19wMV85NzsgXAogIGZsb2F0MzJ4Ml90IF9fcmV2MF85NzsgIF9fcmV2MF85NyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfOTcsIF9fczBfOTcsIDEsIDApOyBcCiAgZmxvYXQzMngyX3QgX19yZXYxXzk3OyAgX19yZXYxXzk3ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV85NywgX19zMV85NywgMSwgMCk7IFwKICBmbG9hdDMyeDJfdCBfX3JldF85NzsgXAogIF9fcmV0Xzk3ID0gX19yZXYwXzk3ICogX19ub3N3YXBfc3BsYXRfbGFuZV9mMzIoX19yZXYxXzk3LCBfX3AyXzk3KTsgXAogIF9fcmV0Xzk3ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfOTcsIF9fcmV0Xzk3LCAxLCAwKTsgXAogIF9fcmV0Xzk3OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm11bF9sYW5lX3MzMihfX3AwXzk4LCBfX3AxXzk4LCBfX3AyXzk4KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMngyX3QgX19zMF85OCA9IF9fcDBfOTg7IFwKICBpbnQzMngyX3QgX19zMV85OCA9IF9fcDFfOTg7IFwKICBpbnQzMngyX3QgX19yZXRfOTg7IFwKICBfX3JldF85OCA9IF9fczBfOTggKiBzcGxhdF9sYW5lX3MzMihfX3MxXzk4LCBfX3AyXzk4KTsgXAogIF9fcmV0Xzk4OyBcCn0pCiNlbHNlCiNkZWZpbmUgdm11bF9sYW5lX3MzMihfX3AwXzk5LCBfX3AxXzk5LCBfX3AyXzk5KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMngyX3QgX19zMF85OSA9IF9fcDBfOTk7IFwKICBpbnQzMngyX3QgX19zMV85OSA9IF9fcDFfOTk7IFwKICBpbnQzMngyX3QgX19yZXYwXzk5OyAgX19yZXYwXzk5ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF85OSwgX19zMF85OSwgMSwgMCk7IFwKICBpbnQzMngyX3QgX19yZXYxXzk5OyAgX19yZXYxXzk5ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV85OSwgX19zMV85OSwgMSwgMCk7IFwKICBpbnQzMngyX3QgX19yZXRfOTk7IFwKICBfX3JldF85OSA9IF9fcmV2MF85OSAqIF9fbm9zd2FwX3NwbGF0X2xhbmVfczMyKF9fcmV2MV85OSwgX19wMl85OSk7IFwKICBfX3JldF85OSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0Xzk5LCBfX3JldF85OSwgMSwgMCk7IFwKICBfX3JldF85OTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtdWxfbGFuZV9zMTYoX19wMF8xMDAsIF9fcDFfMTAwLCBfX3AyXzEwMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NF90IF9fczBfMTAwID0gX19wMF8xMDA7IFwKICBpbnQxNng0X3QgX19zMV8xMDAgPSBfX3AxXzEwMDsgXAogIGludDE2eDRfdCBfX3JldF8xMDA7IFwKICBfX3JldF8xMDAgPSBfX3MwXzEwMCAqIHNwbGF0X2xhbmVfczE2KF9fczFfMTAwLCBfX3AyXzEwMCk7IFwKICBfX3JldF8xMDA7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bXVsX2xhbmVfczE2KF9fcDBfMTAxLCBfX3AxXzEwMSwgX19wMl8xMDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDRfdCBfX3MwXzEwMSA9IF9fcDBfMTAxOyBcCiAgaW50MTZ4NF90IF9fczFfMTAxID0gX19wMV8xMDE7IFwKICBpbnQxNng0X3QgX19yZXYwXzEwMTsgIF9fcmV2MF8xMDEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzEwMSwgX19zMF8xMDEsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4NF90IF9fcmV2MV8xMDE7ICBfX3JldjFfMTAxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV8xMDEsIF9fczFfMTAxLCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDRfdCBfX3JldF8xMDE7IFwKICBfX3JldF8xMDEgPSBfX3JldjBfMTAxICogX19ub3N3YXBfc3BsYXRfbGFuZV9zMTYoX19yZXYxXzEwMSwgX19wMl8xMDEpOyBcCiAgX19yZXRfMTAxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMTAxLCBfX3JldF8xMDEsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfMTAxOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDRfdCB2bXVscV9uX3UzMih1aW50MzJ4NF90IF9fcDAsIHVpbnQzMl90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAqICh1aW50MzJ4NF90KSB7X19wMSwgX19wMSwgX19wMSwgX19wMX07CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2bXVscV9uX3UzMih1aW50MzJ4NF90IF9fcDAsIHVpbnQzMl90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgKiAodWludDMyeDRfdCkge19fcDEsIF9fcDEsIF9fcDEsIF9fcDF9OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4OF90IHZtdWxxX25fdTE2KHVpbnQxNng4X3QgX19wMCwgdWludDE2X3QgX19wMSkgewogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICogKHVpbnQxNng4X3QpIHtfX3AxLCBfX3AxLCBfX3AxLCBfX3AxLCBfX3AxLCBfX3AxLCBfX3AxLCBfX3AxfTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4OF90IHZtdWxxX25fdTE2KHVpbnQxNng4X3QgX19wMCwgdWludDE2X3QgX19wMSkgewogIHVpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCAqICh1aW50MTZ4OF90KSB7X19wMSwgX19wMSwgX19wMSwgX19wMSwgX19wMSwgX19wMSwgX19wMSwgX19wMX07CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4NF90IHZtdWxxX25fZjMyKGZsb2F0MzJ4NF90IF9fcDAsIGZsb2F0MzJfdCBfX3AxKSB7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICogKGZsb2F0MzJ4NF90KSB7X19wMSwgX19wMSwgX19wMSwgX19wMX07CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMng0X3Qgdm11bHFfbl9mMzIoZmxvYXQzMng0X3QgX19wMCwgZmxvYXQzMl90IF9fcDEpIHsKICBmbG9hdDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCAqIChmbG9hdDMyeDRfdCkge19fcDEsIF9fcDEsIF9fcDEsIF9fcDF9OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMng0X3Qgdm11bHFfbl9zMzIoaW50MzJ4NF90IF9fcDAsIGludDMyX3QgX19wMSkgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgKiAoaW50MzJ4NF90KSB7X19wMSwgX19wMSwgX19wMSwgX19wMX07CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4NF90IHZtdWxxX25fczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMl90IF9fcDEpIHsKICBpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICogKGludDMyeDRfdCkge19fcDEsIF9fcDEsIF9fcDEsIF9fcDF9OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng4X3Qgdm11bHFfbl9zMTYoaW50MTZ4OF90IF9fcDAsIGludDE2X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgKiAoaW50MTZ4OF90KSB7X19wMSwgX19wMSwgX19wMSwgX19wMSwgX19wMSwgX19wMSwgX19wMSwgX19wMX07CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4OF90IHZtdWxxX25fczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNl90IF9fcDEpIHsKICBpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICogKGludDE2eDhfdCkge19fcDEsIF9fcDEsIF9fcDEsIF9fcDEsIF9fcDEsIF9fcDEsIF9fcDEsIF9fcDF9OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4Ml90IHZtdWxfbl91MzIodWludDMyeDJfdCBfX3AwLCB1aW50MzJfdCBfX3AxKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgKiAodWludDMyeDJfdCkge19fcDEsIF9fcDF9OwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMngyX3Qgdm11bF9uX3UzMih1aW50MzJ4Ml90IF9fcDAsIHVpbnQzMl90IF9fcDEpIHsKICB1aW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgKiAodWludDMyeDJfdCkge19fcDEsIF9fcDF9OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4NF90IHZtdWxfbl91MTYodWludDE2eDRfdCBfX3AwLCB1aW50MTZfdCBfX3AxKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgKiAodWludDE2eDRfdCkge19fcDEsIF9fcDEsIF9fcDEsIF9fcDF9OwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng0X3Qgdm11bF9uX3UxNih1aW50MTZ4NF90IF9fcDAsIHVpbnQxNl90IF9fcDEpIHsKICB1aW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgKiAodWludDE2eDRfdCkge19fcDEsIF9fcDEsIF9fcDEsIF9fcDF9OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDJfdCB2bXVsX25fZjMyKGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0MzJfdCBfX3AxKSB7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICogKGZsb2F0MzJ4Ml90KSB7X19wMSwgX19wMX07CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMngyX3Qgdm11bF9uX2YzMihmbG9hdDMyeDJfdCBfX3AwLCBmbG9hdDMyX3QgX19wMSkgewogIGZsb2F0MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICogKGZsb2F0MzJ4Ml90KSB7X19wMSwgX19wMX07CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDJfdCB2bXVsX25fczMyKGludDMyeDJfdCBfX3AwLCBpbnQzMl90IF9fcDEpIHsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICogKGludDMyeDJfdCkge19fcDEsIF9fcDF9OwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDJfdCB2bXVsX25fczMyKGludDMyeDJfdCBfX3AwLCBpbnQzMl90IF9fcDEpIHsKICBpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICogKGludDMyeDJfdCkge19fcDEsIF9fcDF9OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng0X3Qgdm11bF9uX3MxNihpbnQxNng0X3QgX19wMCwgaW50MTZfdCBfX3AxKSB7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAqIChpbnQxNng0X3QpIHtfX3AxLCBfX3AxLCBfX3AxLCBfX3AxfTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng0X3Qgdm11bF9uX3MxNihpbnQxNng0X3QgX19wMCwgaW50MTZfdCBfX3AxKSB7CiAgaW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCAqIChpbnQxNng0X3QpIHtfX3AxLCBfX3AxLCBfX3AxLCBfX3AxfTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgcG9seTE2eDhfdCB2bXVsbF9wOChwb2x5OHg4X3QgX19wMCwgcG9seTh4OF90IF9fcDEpIHsKICBwb2x5MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHkxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZtdWxsX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAzNyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgcG9seTE2eDhfdCB2bXVsbF9wOChwb2x5OHg4X3QgX19wMCwgcG9seTh4OF90IF9fcDEpIHsKICBwb2x5OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHBvbHkxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTE2eDhfdCkgX19idWlsdGluX25lb25fdm11bGxfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAzNyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHkxNng4X3QgX19ub3N3YXBfdm11bGxfcDgocG9seTh4OF90IF9fcDAsIHBvbHk4eDhfdCBfX3AxKSB7CiAgcG9seTE2eDhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92bXVsbF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMzcpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng4X3Qgdm11bGxfdTgodWludDh4OF90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxKSB7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92bXVsbF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgNDkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng4X3Qgdm11bGxfdTgodWludDh4OF90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxKSB7CiAgdWludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZtdWxsX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgNDkpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MTZ4OF90IF9fbm9zd2FwX3ZtdWxsX3U4KHVpbnQ4eDhfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkgX19idWlsdGluX25lb25fdm11bGxfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDQ5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50NjR4Ml90IHZtdWxsX3UzMih1aW50MzJ4Ml90IF9fcDAsIHVpbnQzMngyX3QgX19wMSkgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkgX19idWlsdGluX25lb25fdm11bGxfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDUxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50NjR4Ml90IHZtdWxsX3UzMih1aW50MzJ4Ml90IF9fcDAsIHVpbnQzMngyX3QgX19wMSkgewogIHVpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZtdWxsX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgNTEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50NjR4Ml90IF9fbm9zd2FwX3ZtdWxsX3UzMih1aW50MzJ4Ml90IF9fcDAsIHVpbnQzMngyX3QgX19wMSkgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkgX19idWlsdGluX25lb25fdm11bGxfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDUxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZtdWxsX3UxNih1aW50MTZ4NF90IF9fcDAsIHVpbnQxNng0X3QgX19wMSkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdm11bGxfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDUwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4NF90IHZtdWxsX3UxNih1aW50MTZ4NF90IF9fcDAsIHVpbnQxNng0X3QgX19wMSkgewogIHVpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZtdWxsX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgNTApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MzJ4NF90IF9fbm9zd2FwX3ZtdWxsX3UxNih1aW50MTZ4NF90IF9fcDAsIHVpbnQxNng0X3QgX19wMSkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdm11bGxfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDUwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng4X3Qgdm11bGxfczgoaW50OHg4X3QgX19wMCwgaW50OHg4X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZtdWxsX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAzMyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4OF90IHZtdWxsX3M4KGludDh4OF90IF9fcDAsIGludDh4OF90IF9fcDEpIHsKICBpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92bXVsbF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDMzKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MTZ4OF90IF9fbm9zd2FwX3ZtdWxsX3M4KGludDh4OF90IF9fcDAsIGludDh4OF90IF9fcDEpIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92bXVsbF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMzMpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDY0eDJfdCB2bXVsbF9zMzIoaW50MzJ4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDJfdCkgX19idWlsdGluX25lb25fdm11bGxfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDM1KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ2NHgyX3Qgdm11bGxfczMyKGludDMyeDJfdCBfX3AwLCBpbnQzMngyX3QgX19wMSkgewogIGludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDJfdCkgX19idWlsdGluX25lb25fdm11bGxfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAzNSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDY0eDJfdCBfX25vc3dhcF92bXVsbF9zMzIoaW50MzJ4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDJfdCkgX19idWlsdGluX25lb25fdm11bGxfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDM1KTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMng0X3Qgdm11bGxfczE2KGludDE2eDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSkgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZtdWxsX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAzNCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4NF90IHZtdWxsX3MxNihpbnQxNng0X3QgX19wMCwgaW50MTZ4NF90IF9fcDEpIHsKICBpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZtdWxsX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMzQpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQzMng0X3QgX19ub3N3YXBfdm11bGxfczE2KGludDE2eDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSkgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZtdWxsX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAzNCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm11bGxfbGFuZV91MzIoX19wMF8xMDIsIF9fcDFfMTAyLCBfX3AyXzEwMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDJfdCBfX3MwXzEwMiA9IF9fcDBfMTAyOyBcCiAgdWludDMyeDJfdCBfX3MxXzEwMiA9IF9fcDFfMTAyOyBcCiAgdWludDY0eDJfdCBfX3JldF8xMDI7IFwKICBfX3JldF8xMDIgPSB2bXVsbF91MzIoX19zMF8xMDIsIHNwbGF0X2xhbmVfdTMyKF9fczFfMTAyLCBfX3AyXzEwMikpOyBcCiAgX19yZXRfMTAyOyBcCn0pCiNlbHNlCiNkZWZpbmUgdm11bGxfbGFuZV91MzIoX19wMF8xMDMsIF9fcDFfMTAzLCBfX3AyXzEwMykgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDJfdCBfX3MwXzEwMyA9IF9fcDBfMTAzOyBcCiAgdWludDMyeDJfdCBfX3MxXzEwMyA9IF9fcDFfMTAzOyBcCiAgdWludDMyeDJfdCBfX3JldjBfMTAzOyAgX19yZXYwXzEwMyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfMTAzLCBfX3MwXzEwMywgMSwgMCk7IFwKICB1aW50MzJ4Ml90IF9fcmV2MV8xMDM7ICBfX3JldjFfMTAzID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV8xMDMsIF9fczFfMTAzLCAxLCAwKTsgXAogIHVpbnQ2NHgyX3QgX19yZXRfMTAzOyBcCiAgX19yZXRfMTAzID0gX19ub3N3YXBfdm11bGxfdTMyKF9fcmV2MF8xMDMsIF9fbm9zd2FwX3NwbGF0X2xhbmVfdTMyKF9fcmV2MV8xMDMsIF9fcDJfMTAzKSk7IFwKICBfX3JldF8xMDMgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8xMDMsIF9fcmV0XzEwMywgMSwgMCk7IFwKICBfX3JldF8xMDM7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bXVsbF9sYW5lX3UxNihfX3AwXzEwNCwgX19wMV8xMDQsIF9fcDJfMTA0KSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4NF90IF9fczBfMTA0ID0gX19wMF8xMDQ7IFwKICB1aW50MTZ4NF90IF9fczFfMTA0ID0gX19wMV8xMDQ7IFwKICB1aW50MzJ4NF90IF9fcmV0XzEwNDsgXAogIF9fcmV0XzEwNCA9IHZtdWxsX3UxNihfX3MwXzEwNCwgc3BsYXRfbGFuZV91MTYoX19zMV8xMDQsIF9fcDJfMTA0KSk7IFwKICBfX3JldF8xMDQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bXVsbF9sYW5lX3UxNihfX3AwXzEwNSwgX19wMV8xMDUsIF9fcDJfMTA1KSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4NF90IF9fczBfMTA1ID0gX19wMF8xMDU7IFwKICB1aW50MTZ4NF90IF9fczFfMTA1ID0gX19wMV8xMDU7IFwKICB1aW50MTZ4NF90IF9fcmV2MF8xMDU7ICBfX3JldjBfMTA1ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8xMDUsIF9fczBfMTA1LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQxNng0X3QgX19yZXYxXzEwNTsgIF9fcmV2MV8xMDUgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzEwNSwgX19zMV8xMDUsIDMsIDIsIDEsIDApOyBcCiAgdWludDMyeDRfdCBfX3JldF8xMDU7IFwKICBfX3JldF8xMDUgPSBfX25vc3dhcF92bXVsbF91MTYoX19yZXYwXzEwNSwgX19ub3N3YXBfc3BsYXRfbGFuZV91MTYoX19yZXYxXzEwNSwgX19wMl8xMDUpKTsgXAogIF9fcmV0XzEwNSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzEwNSwgX19yZXRfMTA1LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzEwNTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtdWxsX2xhbmVfczMyKF9fcDBfMTA2LCBfX3AxXzEwNiwgX19wMl8xMDYpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJfdCBfX3MwXzEwNiA9IF9fcDBfMTA2OyBcCiAgaW50MzJ4Ml90IF9fczFfMTA2ID0gX19wMV8xMDY7IFwKICBpbnQ2NHgyX3QgX19yZXRfMTA2OyBcCiAgX19yZXRfMTA2ID0gdm11bGxfczMyKF9fczBfMTA2LCBzcGxhdF9sYW5lX3MzMihfX3MxXzEwNiwgX19wMl8xMDYpKTsgXAogIF9fcmV0XzEwNjsgXAp9KQojZWxzZQojZGVmaW5lIHZtdWxsX2xhbmVfczMyKF9fcDBfMTA3LCBfX3AxXzEwNywgX19wMl8xMDcpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJfdCBfX3MwXzEwNyA9IF9fcDBfMTA3OyBcCiAgaW50MzJ4Ml90IF9fczFfMTA3ID0gX19wMV8xMDc7IFwKICBpbnQzMngyX3QgX19yZXYwXzEwNzsgIF9fcmV2MF8xMDcgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzEwNywgX19zMF8xMDcsIDEsIDApOyBcCiAgaW50MzJ4Ml90IF9fcmV2MV8xMDc7ICBfX3JldjFfMTA3ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV8xMDcsIF9fczFfMTA3LCAxLCAwKTsgXAogIGludDY0eDJfdCBfX3JldF8xMDc7IFwKICBfX3JldF8xMDcgPSBfX25vc3dhcF92bXVsbF9zMzIoX19yZXYwXzEwNywgX19ub3N3YXBfc3BsYXRfbGFuZV9zMzIoX19yZXYxXzEwNywgX19wMl8xMDcpKTsgXAogIF9fcmV0XzEwNyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzEwNywgX19yZXRfMTA3LCAxLCAwKTsgXAogIF9fcmV0XzEwNzsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtdWxsX2xhbmVfczE2KF9fcDBfMTA4LCBfX3AxXzEwOCwgX19wMl8xMDgpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDRfdCBfX3MwXzEwOCA9IF9fcDBfMTA4OyBcCiAgaW50MTZ4NF90IF9fczFfMTA4ID0gX19wMV8xMDg7IFwKICBpbnQzMng0X3QgX19yZXRfMTA4OyBcCiAgX19yZXRfMTA4ID0gdm11bGxfczE2KF9fczBfMTA4LCBzcGxhdF9sYW5lX3MxNihfX3MxXzEwOCwgX19wMl8xMDgpKTsgXAogIF9fcmV0XzEwODsgXAp9KQojZWxzZQojZGVmaW5lIHZtdWxsX2xhbmVfczE2KF9fcDBfMTA5LCBfX3AxXzEwOSwgX19wMl8xMDkpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDRfdCBfX3MwXzEwOSA9IF9fcDBfMTA5OyBcCiAgaW50MTZ4NF90IF9fczFfMTA5ID0gX19wMV8xMDk7IFwKICBpbnQxNng0X3QgX19yZXYwXzEwOTsgIF9fcmV2MF8xMDkgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzEwOSwgX19zMF8xMDksIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4NF90IF9fcmV2MV8xMDk7ICBfX3JldjFfMTA5ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV8xMDksIF9fczFfMTA5LCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDRfdCBfX3JldF8xMDk7IFwKICBfX3JldF8xMDkgPSBfX25vc3dhcF92bXVsbF9zMTYoX19yZXYwXzEwOSwgX19ub3N3YXBfc3BsYXRfbGFuZV9zMTYoX19yZXYxXzEwOSwgX19wMl8xMDkpKTsgXAogIF9fcmV0XzEwOSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzEwOSwgX19yZXRfMTA5LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzEwOTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ2NHgyX3Qgdm11bGxfbl91MzIodWludDMyeDJfdCBfX3AwLCB1aW50MzJfdCBfX3AxKSB7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IHZtdWxsX3UzMihfX3AwLCAodWludDMyeDJfdCkge19fcDEsIF9fcDF9KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50NjR4Ml90IHZtdWxsX25fdTMyKHVpbnQzMngyX3QgX19wMCwgdWludDMyX3QgX19wMSkgewogIHVpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3ZtdWxsX3UzMihfX3JldjAsICh1aW50MzJ4Ml90KSB7X19wMSwgX19wMX0pOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50NjR4Ml90IF9fbm9zd2FwX3ZtdWxsX25fdTMyKHVpbnQzMngyX3QgX19wMCwgdWludDMyX3QgX19wMSkgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92bXVsbF91MzIoX19wMCwgKHVpbnQzMngyX3QpIHtfX3AxLCBfX3AxfSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDRfdCB2bXVsbF9uX3UxNih1aW50MTZ4NF90IF9fcDAsIHVpbnQxNl90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gdm11bGxfdTE2KF9fcDAsICh1aW50MTZ4NF90KSB7X19wMSwgX19wMSwgX19wMSwgX19wMX0pOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMng0X3Qgdm11bGxfbl91MTYodWludDE2eDRfdCBfX3AwLCB1aW50MTZfdCBfX3AxKSB7CiAgdWludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdm11bGxfdTE2KF9fcmV2MCwgKHVpbnQxNng0X3QpIHtfX3AxLCBfX3AxLCBfX3AxLCBfX3AxfSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQzMng0X3QgX19ub3N3YXBfdm11bGxfbl91MTYodWludDE2eDRfdCBfX3AwLCB1aW50MTZfdCBfX3AxKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3ZtdWxsX3UxNihfX3AwLCAodWludDE2eDRfdCkge19fcDEsIF9fcDEsIF9fcDEsIF9fcDF9KTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ2NHgyX3Qgdm11bGxfbl9zMzIoaW50MzJ4Ml90IF9fcDAsIGludDMyX3QgX19wMSkgewogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IHZtdWxsX3MzMihfX3AwLCAoaW50MzJ4Ml90KSB7X19wMSwgX19wMX0pOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDY0eDJfdCB2bXVsbF9uX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJfdCBfX3AxKSB7CiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3ZtdWxsX3MzMihfX3JldjAsIChpbnQzMngyX3QpIHtfX3AxLCBfX3AxfSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDY0eDJfdCBfX25vc3dhcF92bXVsbF9uX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJfdCBfX3AxKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdm11bGxfczMyKF9fcDAsIChpbnQzMngyX3QpIHtfX3AxLCBfX3AxfSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4NF90IHZtdWxsX25fczE2KGludDE2eDRfdCBfX3AwLCBpbnQxNl90IF9fcDEpIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSB2bXVsbF9zMTYoX19wMCwgKGludDE2eDRfdCkge19fcDEsIF9fcDEsIF9fcDEsIF9fcDF9KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMng0X3Qgdm11bGxfbl9zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2X3QgX19wMSkgewogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92bXVsbF9zMTYoX19yZXYwLCAoaW50MTZ4NF90KSB7X19wMSwgX19wMSwgX19wMSwgX19wMX0pOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQzMng0X3QgX19ub3N3YXBfdm11bGxfbl9zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2X3QgX19wMSkgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3ZtdWxsX3MxNihfX3AwLCAoaW50MTZ4NF90KSB7X19wMSwgX19wMSwgX19wMSwgX19wMX0pOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHBvbHk4eDhfdCB2bXZuX3A4KHBvbHk4eDhfdCBfX3AwKSB7CiAgcG9seTh4OF90IF9fcmV0OwogIF9fcmV0ID0gfl9fcDA7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgcG9seTh4OF90IHZtdm5fcDgocG9seTh4OF90IF9fcDApIHsKICBwb2x5OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTh4OF90IF9fcmV0OwogIF9fcmV0ID0gfl9fcmV2MDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgcG9seTh4MTZfdCB2bXZucV9wOChwb2x5OHgxNl90IF9fcDApIHsKICBwb2x5OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gfl9fcDA7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgcG9seTh4MTZfdCB2bXZucV9wOChwb2x5OHgxNl90IF9fcDApIHsKICBwb2x5OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHBvbHk4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSB+X19yZXYwOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHgxNl90IHZtdm5xX3U4KHVpbnQ4eDE2X3QgX19wMCkgewogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSB+X19wMDsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHgxNl90IHZtdm5xX3U4KHVpbnQ4eDE2X3QgX19wMCkgewogIHVpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IH5fX3JldjA7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMng0X3Qgdm12bnFfdTMyKHVpbnQzMng0X3QgX19wMCkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSB+X19wMDsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4NF90IHZtdm5xX3UzMih1aW50MzJ4NF90IF9fcDApIHsKICB1aW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSB+X19yZXYwOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4OF90IHZtdm5xX3UxNih1aW50MTZ4OF90IF9fcDApIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gfl9fcDA7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDhfdCB2bXZucV91MTYodWludDE2eDhfdCBfX3AwKSB7CiAgdWludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gfl9fcmV2MDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHgxNl90IHZtdm5xX3M4KGludDh4MTZfdCBfX3AwKSB7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gfl9fcDA7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OHgxNl90IHZtdm5xX3M4KGludDh4MTZfdCBfX3AwKSB7CiAgaW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IH5fX3JldjA7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDRfdCB2bXZucV9zMzIoaW50MzJ4NF90IF9fcDApIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSB+X19wMDsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMng0X3Qgdm12bnFfczMyKGludDMyeDRfdCBfX3AwKSB7CiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IH5fX3JldjA7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDhfdCB2bXZucV9zMTYoaW50MTZ4OF90IF9fcDApIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSB+X19wMDsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng4X3Qgdm12bnFfczE2KGludDE2eDhfdCBfX3AwKSB7CiAgaW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IH5fX3JldjA7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDhfdCB2bXZuX3U4KHVpbnQ4eDhfdCBfX3AwKSB7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gfl9fcDA7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4OF90IHZtdm5fdTgodWludDh4OF90IF9fcDApIHsKICB1aW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gfl9fcmV2MDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDJfdCB2bXZuX3UzMih1aW50MzJ4Ml90IF9fcDApIHsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gfl9fcDA7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDJfdCB2bXZuX3UzMih1aW50MzJ4Ml90IF9fcDApIHsKICB1aW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSB+X19yZXYwOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4NF90IHZtdm5fdTE2KHVpbnQxNng0X3QgX19wMCkgewogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSB+X19wMDsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4NF90IHZtdm5fdTE2KHVpbnQxNng0X3QgX19wMCkgewogIHVpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IH5fX3JldjA7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4OF90IHZtdm5fczgoaW50OHg4X3QgX19wMCkgewogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gfl9fcDA7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OHg4X3Qgdm12bl9zOChpbnQ4eDhfdCBfX3AwKSB7CiAgaW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSB+X19yZXYwOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMngyX3Qgdm12bl9zMzIoaW50MzJ4Ml90IF9fcDApIHsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSB+X19wMDsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMngyX3Qgdm12bl9zMzIoaW50MzJ4Ml90IF9fcDApIHsKICBpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gfl9fcmV2MDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZ4NF90IHZtdm5fczE2KGludDE2eDRfdCBfX3AwKSB7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gfl9fcDA7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4NF90IHZtdm5fczE2KGludDE2eDRfdCBfX3AwKSB7CiAgaW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IH5fX3JldjA7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4MTZfdCB2bmVncV9zOChpbnQ4eDE2X3QgX19wMCkgewogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IC1fX3AwOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4MTZfdCB2bmVncV9zOChpbnQ4eDE2X3QgX19wMCkgewogIGludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAtX19yZXYwOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDRfdCB2bmVncV9mMzIoZmxvYXQzMng0X3QgX19wMCkgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gLV9fcDA7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMng0X3Qgdm5lZ3FfZjMyKGZsb2F0MzJ4NF90IF9fcDApIHsKICBmbG9hdDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IC1fX3JldjA7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDRfdCB2bmVncV9zMzIoaW50MzJ4NF90IF9fcDApIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAtX19wMDsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMng0X3Qgdm5lZ3FfczMyKGludDMyeDRfdCBfX3AwKSB7CiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IC1fX3JldjA7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDhfdCB2bmVncV9zMTYoaW50MTZ4OF90IF9fcDApIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAtX19wMDsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng4X3Qgdm5lZ3FfczE2KGludDE2eDhfdCBfX3AwKSB7CiAgaW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IC1fX3JldjA7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4OF90IHZuZWdfczgoaW50OHg4X3QgX19wMCkgewogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gLV9fcDA7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OHg4X3Qgdm5lZ19zOChpbnQ4eDhfdCBfX3AwKSB7CiAgaW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAtX19yZXYwOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDJfdCB2bmVnX2YzMihmbG9hdDMyeDJfdCBfX3AwKSB7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAtX19wMDsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDJfdCB2bmVnX2YzMihmbG9hdDMyeDJfdCBfX3AwKSB7CiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAtX19yZXYwOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMngyX3Qgdm5lZ19zMzIoaW50MzJ4Ml90IF9fcDApIHsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAtX19wMDsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMngyX3Qgdm5lZ19zMzIoaW50MzJ4Ml90IF9fcDApIHsKICBpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gLV9fcmV2MDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZ4NF90IHZuZWdfczE2KGludDE2eDRfdCBfX3AwKSB7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gLV9fcDA7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4NF90IHZuZWdfczE2KGludDE2eDRfdCBfX3AwKSB7CiAgaW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IC1fX3JldjA7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDE2X3Qgdm9ybnFfdTgodWludDh4MTZfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEpIHsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19wMCB8IH5fX3AxOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDE2X3Qgdm9ybnFfdTgodWludDh4MTZfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEpIHsKICB1aW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCB8IH5fX3JldjE7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMng0X3Qgdm9ybnFfdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgfCB+X19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4NF90IHZvcm5xX3UzMih1aW50MzJ4NF90IF9fcDAsIHVpbnQzMng0X3QgX19wMSkgewogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwIHwgfl9fcmV2MTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDY0eDJfdCB2b3JucV91NjQodWludDY0eDJfdCBfX3AwLCB1aW50NjR4Ml90IF9fcDEpIHsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19wMCB8IH5fX3AxOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ2NHgyX3Qgdm9ybnFfdTY0KHVpbnQ2NHgyX3QgX19wMCwgdWludDY0eDJfdCBfX3AxKSB7CiAgdWludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgfCB+X19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4OF90IHZvcm5xX3UxNih1aW50MTZ4OF90IF9fcDAsIHVpbnQxNng4X3QgX19wMSkgewogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwIHwgfl9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDhfdCB2b3JucV91MTYodWludDE2eDhfdCBfX3AwLCB1aW50MTZ4OF90IF9fcDEpIHsKICB1aW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCB8IH5fX3JldjE7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4MTZfdCB2b3JucV9zOChpbnQ4eDE2X3QgX19wMCwgaW50OHgxNl90IF9fcDEpIHsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwIHwgfl9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OHgxNl90IHZvcm5xX3M4KGludDh4MTZfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSkgewogIGludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwIHwgfl9fcmV2MTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4NF90IHZvcm5xX3MzMihpbnQzMng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEpIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwIHwgfl9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4NF90IHZvcm5xX3MzMihpbnQzMng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEpIHsKICBpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCB8IH5fX3JldjE7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDY0eDJfdCB2b3JucV9zNjQoaW50NjR4Ml90IF9fcDAsIGludDY0eDJfdCBfX3AxKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19wMCB8IH5fX3AxOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDY0eDJfdCB2b3JucV9zNjQoaW50NjR4Ml90IF9fcDAsIGludDY0eDJfdCBfX3AxKSB7CiAgaW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgfCB+X19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng4X3Qgdm9ybnFfczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgfCB+X19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng4X3Qgdm9ybnFfczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwIHwgfl9fcmV2MTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4OF90IHZvcm5fdTgodWludDh4OF90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxKSB7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCB8IH5fX3AxOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDhfdCB2b3JuX3U4KHVpbnQ4eDhfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIHVpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwIHwgfl9fcmV2MTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDJfdCB2b3JuX3UzMih1aW50MzJ4Ml90IF9fcDAsIHVpbnQzMngyX3QgX19wMSkgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwIHwgfl9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDJfdCB2b3JuX3UzMih1aW50MzJ4Ml90IF9fcDAsIHVpbnQzMngyX3QgX19wMSkgewogIHVpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwIHwgfl9fcmV2MTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKX19haSB1aW50NjR4MV90IHZvcm5fdTY0KHVpbnQ2NHgxX3QgX19wMCwgdWludDY0eDFfdCBfX3AxKSB7CiAgdWludDY0eDFfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgfCB+X19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDRfdCB2b3JuX3UxNih1aW50MTZ4NF90IF9fcDAsIHVpbnQxNng0X3QgX19wMSkgewogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwIHwgfl9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDRfdCB2b3JuX3UxNih1aW50MTZ4NF90IF9fcDAsIHVpbnQxNng0X3QgX19wMSkgewogIHVpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwIHwgfl9fcmV2MTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHg4X3Qgdm9ybl9zOChpbnQ4eDhfdCBfX3AwLCBpbnQ4eDhfdCBfX3AxKSB7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwIHwgfl9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OHg4X3Qgdm9ybl9zOChpbnQ4eDhfdCBfX3AwLCBpbnQ4eDhfdCBfX3AxKSB7CiAgaW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgfCB+X19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMngyX3Qgdm9ybl9zMzIoaW50MzJ4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxKSB7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19wMCB8IH5fX3AxOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDJfdCB2b3JuX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEpIHsKICBpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCB8IH5fX3JldjE7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCl9fYWkgaW50NjR4MV90IHZvcm5fczY0KGludDY0eDFfdCBfX3AwLCBpbnQ2NHgxX3QgX19wMSkgewogIGludDY0eDFfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgfCB+X19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZ4NF90IHZvcm5fczE2KGludDE2eDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSkgewogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgfCB+X19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng0X3Qgdm9ybl9zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxKSB7CiAgaW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgfCB+X19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHgxNl90IHZvcnJxX3U4KHVpbnQ4eDE2X3QgX19wMCwgdWludDh4MTZfdCBfX3AxKSB7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgfCBfX3AxOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDE2X3Qgdm9ycnFfdTgodWludDh4MTZfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEpIHsKICB1aW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCB8IF9fcmV2MTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDRfdCB2b3JycV91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCB8IF9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2b3JycV91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCB8IF9fcmV2MTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDY0eDJfdCB2b3JycV91NjQodWludDY0eDJfdCBfX3AwLCB1aW50NjR4Ml90IF9fcDEpIHsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19wMCB8IF9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDY0eDJfdCB2b3JycV91NjQodWludDY0eDJfdCBfX3AwLCB1aW50NjR4Ml90IF9fcDEpIHsKICB1aW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCB8IF9fcmV2MTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDhfdCB2b3JycV91MTYodWludDE2eDhfdCBfX3AwLCB1aW50MTZ4OF90IF9fcDEpIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCB8IF9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDhfdCB2b3JycV91MTYodWludDE2eDhfdCBfX3AwLCB1aW50MTZ4OF90IF9fcDEpIHsKICB1aW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCB8IF9fcmV2MTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHgxNl90IHZvcnJxX3M4KGludDh4MTZfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSkgewogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgfCBfX3AxOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4MTZfdCB2b3JycV9zOChpbnQ4eDE2X3QgX19wMCwgaW50OHgxNl90IF9fcDEpIHsKICBpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCB8IF9fcmV2MTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4NF90IHZvcnJxX3MzMihpbnQzMng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEpIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwIHwgX19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMng0X3Qgdm9ycnFfczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwIHwgX19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ2NHgyX3Qgdm9ycnFfczY0KGludDY0eDJfdCBfX3AwLCBpbnQ2NHgyX3QgX19wMSkgewogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgfCBfX3AxOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDY0eDJfdCB2b3JycV9zNjQoaW50NjR4Ml90IF9fcDAsIGludDY0eDJfdCBfX3AxKSB7CiAgaW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgfCBfX3JldjE7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDhfdCB2b3JycV9zMTYoaW50MTZ4OF90IF9fcDAsIGludDE2eDhfdCBfX3AxKSB7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCB8IF9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4OF90IHZvcnJxX3MxNihpbnQxNng4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEpIHsKICBpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCB8IF9fcmV2MTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4OF90IHZvcnJfdTgodWludDh4OF90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxKSB7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCB8IF9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4OF90IHZvcnJfdTgodWludDh4OF90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxKSB7CiAgdWludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgfCBfX3JldjE7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMngyX3Qgdm9ycl91MzIodWludDMyeDJfdCBfX3AwLCB1aW50MzJ4Ml90IF9fcDEpIHsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19wMCB8IF9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDJfdCB2b3JyX3UzMih1aW50MzJ4Ml90IF9fcDAsIHVpbnQzMngyX3QgX19wMSkgewogIHVpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwIHwgX19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgpfX2FpIHVpbnQ2NHgxX3Qgdm9ycl91NjQodWludDY0eDFfdCBfX3AwLCB1aW50NjR4MV90IF9fcDEpIHsKICB1aW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gX19wMCB8IF9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng0X3Qgdm9ycl91MTYodWludDE2eDRfdCBfX3AwLCB1aW50MTZ4NF90IF9fcDEpIHsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCB8IF9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDRfdCB2b3JyX3UxNih1aW50MTZ4NF90IF9fcDAsIHVpbnQxNng0X3QgX19wMSkgewogIHVpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwIHwgX19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDhfdCB2b3JyX3M4KGludDh4OF90IF9fcDAsIGludDh4OF90IF9fcDEpIHsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgfCBfX3AxOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4OF90IHZvcnJfczgoaW50OHg4X3QgX19wMCwgaW50OHg4X3QgX19wMSkgewogIGludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwIHwgX19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMngyX3Qgdm9ycl9zMzIoaW50MzJ4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxKSB7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19wMCB8IF9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4Ml90IHZvcnJfczMyKGludDMyeDJfdCBfX3AwLCBpbnQzMngyX3QgX19wMSkgewogIGludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwIHwgX19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgpfX2FpIGludDY0eDFfdCB2b3JyX3M2NChpbnQ2NHgxX3QgX19wMCwgaW50NjR4MV90IF9fcDEpIHsKICBpbnQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwIHwgX19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZ4NF90IHZvcnJfczE2KGludDE2eDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSkgewogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgfCBfX3AxOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDRfdCB2b3JyX3MxNihpbnQxNng0X3QgX19wMCwgaW50MTZ4NF90IF9fcDEpIHsKICBpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCB8IF9fcmV2MTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDhfdCB2cGFkYWxxX3U4KHVpbnQxNng4X3QgX19wMCwgdWludDh4MTZfdCBfX3AxKSB7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92cGFkYWxxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDQ5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4OF90IHZwYWRhbHFfdTgodWludDE2eDhfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEpIHsKICB1aW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92cGFkYWxxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA0OSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ2NHgyX3QgdnBhZGFscV91MzIodWludDY0eDJfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEpIHsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZwYWRhbHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNTEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ2NHgyX3QgdnBhZGFscV91MzIodWludDY0eDJfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEpIHsKICB1aW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92cGFkYWxxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA1MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMng0X3QgdnBhZGFscV91MTYodWludDMyeDRfdCBfX3AwLCB1aW50MTZ4OF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZwYWRhbHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNTApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMng0X3QgdnBhZGFscV91MTYodWludDMyeDRfdCBfX3AwLCB1aW50MTZ4OF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92cGFkYWxxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA1MCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDhfdCB2cGFkYWxxX3M4KGludDE2eDhfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZwYWRhbHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgMzMpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDhfdCB2cGFkYWxxX3M4KGludDE2eDhfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDhfdCkgX19idWlsdGluX25lb25fdnBhZGFscV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgMzMpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ2NHgyX3QgdnBhZGFscV9zMzIoaW50NjR4Ml90IF9fcDAsIGludDMyeDRfdCBfX3AxKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDJfdCkgX19idWlsdGluX25lb25fdnBhZGFscV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAzNSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50NjR4Ml90IHZwYWRhbHFfczMyKGludDY0eDJfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIGludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDJfdCkgX19idWlsdGluX25lb25fdnBhZGFscV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgMzUpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMng0X3QgdnBhZGFscV9zMTYoaW50MzJ4NF90IF9fcDAsIGludDE2eDhfdCBfX3AxKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkgX19idWlsdGluX25lb25fdnBhZGFscV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAzNCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4NF90IHZwYWRhbHFfczE2KGludDMyeDRfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkgX19idWlsdGluX25lb25fdnBhZGFscV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgMzQpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4NF90IHZwYWRhbF91OCh1aW50MTZ4NF90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cGFkYWxfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDE3KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4NF90IHZwYWRhbF91OCh1aW50MTZ4NF90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxKSB7CiAgdWludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cGFkYWxfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAxNyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ2NHgxX3QgdnBhZGFsX3UzMih1aW50NjR4MV90IF9fcDAsIHVpbnQzMngyX3QgX19wMSkgewogIHVpbnQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDFfdCkgX19idWlsdGluX25lb25fdnBhZGFsX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAxOSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDY0eDFfdCB2cGFkYWxfdTMyKHVpbnQ2NHgxX3QgX19wMCwgdWludDMyeDJfdCBfX3AxKSB7CiAgdWludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3ZwYWRhbF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19yZXYxLCAxOSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDJfdCB2cGFkYWxfdTE2KHVpbnQzMngyX3QgX19wMCwgdWludDE2eDRfdCBfX3AxKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cGFkYWxfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDE4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4Ml90IHZwYWRhbF91MTYodWludDMyeDJfdCBfX3AwLCB1aW50MTZ4NF90IF9fcDEpIHsKICB1aW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cGFkYWxfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAxOCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDRfdCB2cGFkYWxfczgoaW50MTZ4NF90IF9fcDAsIGludDh4OF90IF9fcDEpIHsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cGFkYWxfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDRfdCB2cGFkYWxfczgoaW50MTZ4NF90IF9fcDAsIGludDh4OF90IF9fcDEpIHsKICBpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdnBhZGFsX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDY0eDFfdCB2cGFkYWxfczMyKGludDY0eDFfdCBfX3AwLCBpbnQzMngyX3QgX19wMSkgewogIGludDY0eDFfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3ZwYWRhbF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50NjR4MV90IHZwYWRhbF9zMzIoaW50NjR4MV90IF9fcDAsIGludDMyeDJfdCBfX3AxKSB7CiAgaW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGludDY0eDFfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3ZwYWRhbF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19yZXYxLCAzKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMngyX3QgdnBhZGFsX3MxNihpbnQzMngyX3QgX19wMCwgaW50MTZ4NF90IF9fcDEpIHsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cGFkYWxfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDJfdCB2cGFkYWxfczE2KGludDMyeDJfdCBfX3AwLCBpbnQxNng0X3QgX19wMSkgewogIGludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdnBhZGFsX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDhfdCB2cGFkZF91OCh1aW50OHg4X3QgX19wMCwgdWludDh4OF90IF9fcDEpIHsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92cGFkZF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMTYpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDhfdCB2cGFkZF91OCh1aW50OHg4X3QgX19wMCwgdWludDh4OF90IF9fcDEpIHsKICB1aW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZwYWRkX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMTYpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4Ml90IHZwYWRkX3UzMih1aW50MzJ4Ml90IF9fcDAsIHVpbnQzMngyX3QgX19wMSkgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdnBhZGRfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDE4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4Ml90IHZwYWRkX3UzMih1aW50MzJ4Ml90IF9fcDAsIHVpbnQzMngyX3QgX19wMSkgewogIHVpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZwYWRkX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMTgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4NF90IHZwYWRkX3UxNih1aW50MTZ4NF90IF9fcDAsIHVpbnQxNng0X3QgX19wMSkgewogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdnBhZGRfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDE3KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4NF90IHZwYWRkX3UxNih1aW50MTZ4NF90IF9fcDAsIHVpbnQxNng0X3QgX19wMSkgewogIHVpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZwYWRkX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMTcpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDhfdCB2cGFkZF9zOChpbnQ4eDhfdCBfX3AwLCBpbnQ4eDhfdCBfX3AxKSB7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZwYWRkX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ4eDhfdCB2cGFkZF9zOChpbnQ4eDhfdCBfX3AwLCBpbnQ4eDhfdCBfX3AxKSB7CiAgaW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZwYWRkX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4Ml90IHZwYWRkX2YzMihmbG9hdDMyeDJfdCBfX3AwLCBmbG9hdDMyeDJfdCBfX3AxKSB7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZwYWRkX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCA5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDJfdCB2cGFkZF9mMzIoZmxvYXQzMngyX3QgX19wMCwgZmxvYXQzMngyX3QgX19wMSkgewogIGZsb2F0MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cGFkZF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDkpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMngyX3QgdnBhZGRfczMyKGludDMyeDJfdCBfX3AwLCBpbnQzMngyX3QgX19wMSkgewogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZwYWRkX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMngyX3QgdnBhZGRfczMyKGludDMyeDJfdCBfX3AwLCBpbnQzMngyX3QgX19wMSkgewogIGludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdnBhZGRfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZ4NF90IHZwYWRkX3MxNihpbnQxNng0X3QgX19wMCwgaW50MTZ4NF90IF9fcDEpIHsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cGFkZF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4NF90IHZwYWRkX3MxNihpbnQxNng0X3QgX19wMCwgaW50MTZ4NF90IF9fcDEpIHsKICBpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZwYWRkX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng4X3QgdnBhZGRscV91OCh1aW50OHgxNl90IF9fcDApIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZwYWRkbHFfdigoaW50OHgxNl90KV9fcDAsIDQ5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4OF90IHZwYWRkbHFfdTgodWludDh4MTZfdCBfX3AwKSB7CiAgdWludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZwYWRkbHFfdigoaW50OHgxNl90KV9fcmV2MCwgNDkpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50NjR4Ml90IHZwYWRkbHFfdTMyKHVpbnQzMng0X3QgX19wMCkgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkgX19idWlsdGluX25lb25fdnBhZGRscV92KChpbnQ4eDE2X3QpX19wMCwgNTEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ2NHgyX3QgdnBhZGRscV91MzIodWludDMyeDRfdCBfX3AwKSB7CiAgdWludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZwYWRkbHFfdigoaW50OHgxNl90KV9fcmV2MCwgNTEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZwYWRkbHFfdTE2KHVpbnQxNng4X3QgX19wMCkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdnBhZGRscV92KChpbnQ4eDE2X3QpX19wMCwgNTApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMng0X3QgdnBhZGRscV91MTYodWludDE2eDhfdCBfX3AwKSB7CiAgdWludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZwYWRkbHFfdigoaW50OHgxNl90KV9fcmV2MCwgNTApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng4X3QgdnBhZGRscV9zOChpbnQ4eDE2X3QgX19wMCkgewogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZwYWRkbHFfdigoaW50OHgxNl90KV9fcDAsIDMzKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng4X3QgdnBhZGRscV9zOChpbnQ4eDE2X3QgX19wMCkgewogIGludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92cGFkZGxxX3YoKGludDh4MTZfdClfX3JldjAsIDMzKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50NjR4Ml90IHZwYWRkbHFfczMyKGludDMyeDRfdCBfX3AwKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDJfdCkgX19idWlsdGluX25lb25fdnBhZGRscV92KChpbnQ4eDE2X3QpX19wMCwgMzUpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDY0eDJfdCB2cGFkZGxxX3MzMihpbnQzMng0X3QgX19wMCkgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92cGFkZGxxX3YoKGludDh4MTZfdClfX3JldjAsIDM1KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4NF90IHZwYWRkbHFfczE2KGludDE2eDhfdCBfX3AwKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkgX19idWlsdGluX25lb25fdnBhZGRscV92KChpbnQ4eDE2X3QpX19wMCwgMzQpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDRfdCB2cGFkZGxxX3MxNihpbnQxNng4X3QgX19wMCkgewogIGludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92cGFkZGxxX3YoKGludDh4MTZfdClfX3JldjAsIDM0KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDRfdCB2cGFkZGxfdTgodWludDh4OF90IF9fcDApIHsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZwYWRkbF92KChpbnQ4eDhfdClfX3AwLCAxNyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDRfdCB2cGFkZGxfdTgodWludDh4OF90IF9fcDApIHsKICB1aW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cGFkZGxfdigoaW50OHg4X3QpX19yZXYwLCAxNyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ2NHgxX3QgdnBhZGRsX3UzMih1aW50MzJ4Ml90IF9fcDApIHsKICB1aW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3ZwYWRkbF92KChpbnQ4eDhfdClfX3AwLCAxOSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDY0eDFfdCB2cGFkZGxfdTMyKHVpbnQzMngyX3QgX19wMCkgewogIHVpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDY0eDFfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92cGFkZGxfdigoaW50OHg4X3QpX19yZXYwLCAxOSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDJfdCB2cGFkZGxfdTE2KHVpbnQxNng0X3QgX19wMCkgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdnBhZGRsX3YoKGludDh4OF90KV9fcDAsIDE4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4Ml90IHZwYWRkbF91MTYodWludDE2eDRfdCBfX3AwKSB7CiAgdWludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZwYWRkbF92KChpbnQ4eDhfdClfX3JldjAsIDE4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZ4NF90IHZwYWRkbF9zOChpbnQ4eDhfdCBfX3AwKSB7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdnBhZGRsX3YoKGludDh4OF90KV9fcDAsIDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDRfdCB2cGFkZGxfczgoaW50OHg4X3QgX19wMCkgewogIGludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZwYWRkbF92KChpbnQ4eDhfdClfX3JldjAsIDEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ2NHgxX3QgdnBhZGRsX3MzMihpbnQzMngyX3QgX19wMCkgewogIGludDY0eDFfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3ZwYWRkbF92KChpbnQ4eDhfdClfX3AwLCAzKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ2NHgxX3QgdnBhZGRsX3MzMihpbnQzMngyX3QgX19wMCkgewogIGludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBpbnQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92cGFkZGxfdigoaW50OHg4X3QpX19yZXYwLCAzKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMngyX3QgdnBhZGRsX3MxNihpbnQxNng0X3QgX19wMCkgewogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZwYWRkbF92KChpbnQ4eDhfdClfX3AwLCAyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMngyX3QgdnBhZGRsX3MxNihpbnQxNng0X3QgX19wMCkgewogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cGFkZGxfdigoaW50OHg4X3QpX19yZXYwLCAyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4OF90IHZwbWF4X3U4KHVpbnQ4eDhfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZwbWF4X3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAxNik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4OF90IHZwbWF4X3U4KHVpbnQ4eDhfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIHVpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnBtYXhfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAxNik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMngyX3QgdnBtYXhfdTMyKHVpbnQzMngyX3QgX19wMCwgdWludDMyeDJfdCBfX3AxKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cG1heF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMTgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMngyX3QgdnBtYXhfdTMyKHVpbnQzMngyX3QgX19wMCwgdWludDMyeDJfdCBfX3AxKSB7CiAgdWludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdnBtYXhfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAxOCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng0X3QgdnBtYXhfdTE2KHVpbnQxNng0X3QgX19wMCwgdWludDE2eDRfdCBfX3AxKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cG1heF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMTcpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng0X3QgdnBtYXhfdTE2KHVpbnQxNng0X3QgX19wMCwgdWludDE2eDRfdCBfX3AxKSB7CiAgdWludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdnBtYXhfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAxNyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4OF90IHZwbWF4X3M4KGludDh4OF90IF9fcDAsIGludDh4OF90IF9fcDEpIHsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnBtYXhfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4OF90IHZwbWF4X3M4KGludDh4OF90IF9fcDAsIGludDh4OF90IF9fcDEpIHsKICBpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnBtYXhfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMngyX3QgdnBtYXhfZjMyKGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0MzJ4Ml90IF9fcDEpIHsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdnBtYXhfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4Ml90IHZwbWF4X2YzMihmbG9hdDMyeDJfdCBfX3AwLCBmbG9hdDMyeDJfdCBfX3AxKSB7CiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZwbWF4X3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgOSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDJfdCB2cG1heF9zMzIoaW50MzJ4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxKSB7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdnBtYXhfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDJfdCB2cG1heF9zMzIoaW50MzJ4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxKSB7CiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cG1heF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng0X3QgdnBtYXhfczE2KGludDE2eDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSkgewogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZwbWF4X3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng0X3QgdnBtYXhfczE2KGludDE2eDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSkgewogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdnBtYXhfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4OF90IHZwbWluX3U4KHVpbnQ4eDhfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZwbWluX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAxNik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4OF90IHZwbWluX3U4KHVpbnQ4eDhfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIHVpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnBtaW5fdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAxNik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMngyX3QgdnBtaW5fdTMyKHVpbnQzMngyX3QgX19wMCwgdWludDMyeDJfdCBfX3AxKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cG1pbl92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMTgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMngyX3QgdnBtaW5fdTMyKHVpbnQzMngyX3QgX19wMCwgdWludDMyeDJfdCBfX3AxKSB7CiAgdWludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdnBtaW5fdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAxOCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng0X3QgdnBtaW5fdTE2KHVpbnQxNng0X3QgX19wMCwgdWludDE2eDRfdCBfX3AxKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cG1pbl92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMTcpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng0X3QgdnBtaW5fdTE2KHVpbnQxNng0X3QgX19wMCwgdWludDE2eDRfdCBfX3AxKSB7CiAgdWludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdnBtaW5fdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAxNyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4OF90IHZwbWluX3M4KGludDh4OF90IF9fcDAsIGludDh4OF90IF9fcDEpIHsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnBtaW5fdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4OF90IHZwbWluX3M4KGludDh4OF90IF9fcDAsIGludDh4OF90IF9fcDEpIHsKICBpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnBtaW5fdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMngyX3QgdnBtaW5fZjMyKGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0MzJ4Ml90IF9fcDEpIHsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdnBtaW5fdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4Ml90IHZwbWluX2YzMihmbG9hdDMyeDJfdCBfX3AwLCBmbG9hdDMyeDJfdCBfX3AxKSB7CiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZwbWluX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgOSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDJfdCB2cG1pbl9zMzIoaW50MzJ4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxKSB7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdnBtaW5fdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDJfdCB2cG1pbl9zMzIoaW50MzJ4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxKSB7CiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cG1pbl92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng0X3QgdnBtaW5fczE2KGludDE2eDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSkgewogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZwbWluX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng0X3QgdnBtaW5fczE2KGludDE2eDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSkgewogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdnBtaW5fdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHgxNl90IHZxYWJzcV9zOChpbnQ4eDE2X3QgX19wMCkgewogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZxYWJzcV92KChpbnQ4eDE2X3QpX19wMCwgMzIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4MTZfdCB2cWFic3FfczgoaW50OHgxNl90IF9fcDApIHsKICBpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4MTZfdCkgX19idWlsdGluX25lb25fdnFhYnNxX3YoKGludDh4MTZfdClfX3JldjAsIDMyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4NF90IHZxYWJzcV9zMzIoaW50MzJ4NF90IF9fcDApIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92cWFic3FfdigoaW50OHgxNl90KV9fcDAsIDM0KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMng0X3QgdnFhYnNxX3MzMihpbnQzMng0X3QgX19wMCkgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92cWFic3FfdigoaW50OHgxNl90KV9fcmV2MCwgMzQpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng4X3QgdnFhYnNxX3MxNihpbnQxNng4X3QgX19wMCkgewogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZxYWJzcV92KChpbnQ4eDE2X3QpX19wMCwgMzMpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDhfdCB2cWFic3FfczE2KGludDE2eDhfdCBfX3AwKSB7CiAgaW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZxYWJzcV92KChpbnQ4eDE2X3QpX19yZXYwLCAzMyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4OF90IHZxYWJzX3M4KGludDh4OF90IF9fcDApIHsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnFhYnNfdigoaW50OHg4X3QpX19wMCwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OHg4X3QgdnFhYnNfczgoaW50OHg4X3QgX19wMCkgewogIGludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92cWFic192KChpbnQ4eDhfdClfX3JldjAsIDApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMngyX3QgdnFhYnNfczMyKGludDMyeDJfdCBfX3AwKSB7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdnFhYnNfdigoaW50OHg4X3QpX19wMCwgMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4Ml90IHZxYWJzX3MzMihpbnQzMngyX3QgX19wMCkgewogIGludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cWFic192KChpbnQ4eDhfdClfX3JldjAsIDIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng0X3QgdnFhYnNfczE2KGludDE2eDRfdCBfX3AwKSB7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdnFhYnNfdigoaW50OHg4X3QpX19wMCwgMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4NF90IHZxYWJzX3MxNihpbnQxNng0X3QgX19wMCkgewogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cWFic192KChpbnQ4eDhfdClfX3JldjAsIDEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHgxNl90IHZxYWRkcV91OCh1aW50OHgxNl90IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSkgewogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkgX19idWlsdGluX25lb25fdnFhZGRxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDQ4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHgxNl90IHZxYWRkcV91OCh1aW50OHgxNl90IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSkgewogIHVpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZxYWRkcV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNDgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZxYWRkcV91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZxYWRkcV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA1MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2cWFkZHFfdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxKSB7CiAgdWludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdnFhZGRxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA1MCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ2NHgyX3QgdnFhZGRxX3U2NCh1aW50NjR4Ml90IF9fcDAsIHVpbnQ2NHgyX3QgX19wMSkgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkgX19idWlsdGluX25lb25fdnFhZGRxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDUxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50NjR4Ml90IHZxYWRkcV91NjQodWludDY0eDJfdCBfX3AwLCB1aW50NjR4Ml90IF9fcDEpIHsKICB1aW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92cWFkZHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDUxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDhfdCB2cWFkZHFfdTE2KHVpbnQxNng4X3QgX19wMCwgdWludDE2eDhfdCBfX3AxKSB7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92cWFkZHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNDkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng4X3QgdnFhZGRxX3UxNih1aW50MTZ4OF90IF9fcDAsIHVpbnQxNng4X3QgX19wMSkgewogIHVpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZxYWRkcV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNDkpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDE2X3QgdnFhZGRxX3M4KGludDh4MTZfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSkgewogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZxYWRkcV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAzMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OHgxNl90IHZxYWRkcV9zOChpbnQ4eDE2X3QgX19wMCwgaW50OHgxNl90IF9fcDEpIHsKICBpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZxYWRkcV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgMzIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMng0X3QgdnFhZGRxX3MzMihpbnQzMng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEpIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92cWFkZHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgMzQpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDRfdCB2cWFkZHFfczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkgX19idWlsdGluX25lb25fdnFhZGRxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAzNCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDMyeDRfdCBfX25vc3dhcF92cWFkZHFfczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZxYWRkcV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAzNCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50NjR4Ml90IHZxYWRkcV9zNjQoaW50NjR4Ml90IF9fcDAsIGludDY0eDJfdCBfX3AxKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDJfdCkgX19idWlsdGluX25lb25fdnFhZGRxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDM1KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ2NHgyX3QgdnFhZGRxX3M2NChpbnQ2NHgyX3QgX19wMCwgaW50NjR4Ml90IF9fcDEpIHsKICBpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZxYWRkcV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgMzUpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng4X3QgdnFhZGRxX3MxNihpbnQxNng4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEpIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92cWFkZHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgMzMpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDhfdCB2cWFkZHFfczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDhfdCkgX19idWlsdGluX25lb25fdnFhZGRxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAzMyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDE2eDhfdCBfX25vc3dhcF92cWFkZHFfczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZxYWRkcV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAzMyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4OF90IHZxYWRkX3U4KHVpbnQ4eDhfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZxYWRkX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAxNik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4OF90IHZxYWRkX3U4KHVpbnQ4eDhfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIHVpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnFhZGRfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAxNik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMngyX3QgdnFhZGRfdTMyKHVpbnQzMngyX3QgX19wMCwgdWludDMyeDJfdCBfX3AxKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cWFkZF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMTgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMngyX3QgdnFhZGRfdTMyKHVpbnQzMngyX3QgX19wMCwgdWludDMyeDJfdCBfX3AxKSB7CiAgdWludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdnFhZGRfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAxOCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCl9fYWkgdWludDY0eDFfdCB2cWFkZF91NjQodWludDY0eDFfdCBfX3AwLCB1aW50NjR4MV90IF9fcDEpIHsKICB1aW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3ZxYWRkX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAxOSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng0X3QgdnFhZGRfdTE2KHVpbnQxNng0X3QgX19wMCwgdWludDE2eDRfdCBfX3AxKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cWFkZF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMTcpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng0X3QgdnFhZGRfdTE2KHVpbnQxNng0X3QgX19wMCwgdWludDE2eDRfdCBfX3AxKSB7CiAgdWludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdnFhZGRfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAxNyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4OF90IHZxYWRkX3M4KGludDh4OF90IF9fcDAsIGludDh4OF90IF9fcDEpIHsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnFhZGRfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4OF90IHZxYWRkX3M4KGludDh4OF90IF9fcDAsIGludDh4OF90IF9fcDEpIHsKICBpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnFhZGRfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4Ml90IHZxYWRkX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEpIHsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cWFkZF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4Ml90IHZxYWRkX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEpIHsKICBpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZxYWRkX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDMyeDJfdCBfX25vc3dhcF92cWFkZF9zMzIoaW50MzJ4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxKSB7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdnFhZGRfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDIpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCl9fYWkgaW50NjR4MV90IHZxYWRkX3M2NChpbnQ2NHgxX3QgX19wMCwgaW50NjR4MV90IF9fcDEpIHsKICBpbnQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92cWFkZF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDRfdCB2cWFkZF9zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxKSB7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdnFhZGRfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDRfdCB2cWFkZF9zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxKSB7CiAgaW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cWFkZF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQxNng0X3QgX19ub3N3YXBfdnFhZGRfczE2KGludDE2eDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSkgewogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZxYWRkX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ2NHgyX3QgdnFkbWxhbF9zMzIoaW50NjR4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxLCBpbnQzMngyX3QgX19wMikgewogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZxZG1sYWxfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAoaW50OHg4X3QpX19wMiwgMzUpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDY0eDJfdCB2cWRtbGFsX3MzMihpbnQ2NHgyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEsIGludDMyeDJfdCBfX3AyKSB7CiAgaW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMSwgMCk7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDJfdCkgX19idWlsdGluX25lb25fdnFkbWxhbF92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAoaW50OHg4X3QpX19yZXYyLCAzNSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDY0eDJfdCBfX25vc3dhcF92cWRtbGFsX3MzMihpbnQ2NHgyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEsIGludDMyeDJfdCBfX3AyKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDJfdCkgX19idWlsdGluX25lb25fdnFkbWxhbF92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4OF90KV9fcDEsIChpbnQ4eDhfdClfX3AyLCAzNSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4NF90IHZxZG1sYWxfczE2KGludDMyeDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSwgaW50MTZ4NF90IF9fcDIpIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92cWRtbGFsX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgKGludDh4OF90KV9fcDIsIDM0KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMng0X3QgdnFkbWxhbF9zMTYoaW50MzJ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxLCBpbnQxNng0X3QgX19wMikgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZxZG1sYWxfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgKGludDh4OF90KV9fcmV2MiwgMzQpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQzMng0X3QgX19ub3N3YXBfdnFkbWxhbF9zMTYoaW50MzJ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxLCBpbnQxNng0X3QgX19wMikgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZxZG1sYWxfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAoaW50OHg4X3QpX19wMiwgMzQpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZxZG1sYWxfbGFuZV9zMzIoX19wMF8xMTAsIF9fcDFfMTEwLCBfX3AyXzExMCwgX19wM18xMTApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJfdCBfX3MwXzExMCA9IF9fcDBfMTEwOyBcCiAgaW50MzJ4Ml90IF9fczFfMTEwID0gX19wMV8xMTA7IFwKICBpbnQzMngyX3QgX19zMl8xMTAgPSBfX3AyXzExMDsgXAogIGludDY0eDJfdCBfX3JldF8xMTA7IFwKICBfX3JldF8xMTAgPSB2cWRtbGFsX3MzMihfX3MwXzExMCwgX19zMV8xMTAsIHNwbGF0X2xhbmVfczMyKF9fczJfMTEwLCBfX3AzXzExMCkpOyBcCiAgX19yZXRfMTEwOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFkbWxhbF9sYW5lX3MzMihfX3AwXzExMSwgX19wMV8xMTEsIF9fcDJfMTExLCBfX3AzXzExMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4Ml90IF9fczBfMTExID0gX19wMF8xMTE7IFwKICBpbnQzMngyX3QgX19zMV8xMTEgPSBfX3AxXzExMTsgXAogIGludDMyeDJfdCBfX3MyXzExMSA9IF9fcDJfMTExOyBcCiAgaW50NjR4Ml90IF9fcmV2MF8xMTE7ICBfX3JldjBfMTExID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8xMTEsIF9fczBfMTExLCAxLCAwKTsgXAogIGludDMyeDJfdCBfX3JldjFfMTExOyAgX19yZXYxXzExMSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfMTExLCBfX3MxXzExMSwgMSwgMCk7IFwKICBpbnQzMngyX3QgX19yZXYyXzExMTsgIF9fcmV2Ml8xMTEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzExMSwgX19zMl8xMTEsIDEsIDApOyBcCiAgaW50NjR4Ml90IF9fcmV0XzExMTsgXAogIF9fcmV0XzExMSA9IF9fbm9zd2FwX3ZxZG1sYWxfczMyKF9fcmV2MF8xMTEsIF9fcmV2MV8xMTEsIF9fbm9zd2FwX3NwbGF0X2xhbmVfczMyKF9fcmV2Ml8xMTEsIF9fcDNfMTExKSk7IFwKICBfX3JldF8xMTEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8xMTEsIF9fcmV0XzExMSwgMSwgMCk7IFwKICBfX3JldF8xMTE7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cWRtbGFsX2xhbmVfczE2KF9fcDBfMTEyLCBfX3AxXzExMiwgX19wMl8xMTIsIF9fcDNfMTEyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMF8xMTIgPSBfX3AwXzExMjsgXAogIGludDE2eDRfdCBfX3MxXzExMiA9IF9fcDFfMTEyOyBcCiAgaW50MTZ4NF90IF9fczJfMTEyID0gX19wMl8xMTI7IFwKICBpbnQzMng0X3QgX19yZXRfMTEyOyBcCiAgX19yZXRfMTEyID0gdnFkbWxhbF9zMTYoX19zMF8xMTIsIF9fczFfMTEyLCBzcGxhdF9sYW5lX3MxNihfX3MyXzExMiwgX19wM18xMTIpKTsgXAogIF9fcmV0XzExMjsgXAp9KQojZWxzZQojZGVmaW5lIHZxZG1sYWxfbGFuZV9zMTYoX19wMF8xMTMsIF9fcDFfMTEzLCBfX3AyXzExMywgX19wM18xMTMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDRfdCBfX3MwXzExMyA9IF9fcDBfMTEzOyBcCiAgaW50MTZ4NF90IF9fczFfMTEzID0gX19wMV8xMTM7IFwKICBpbnQxNng0X3QgX19zMl8xMTMgPSBfX3AyXzExMzsgXAogIGludDMyeDRfdCBfX3JldjBfMTEzOyAgX19yZXYwXzExMyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfMTEzLCBfX3MwXzExMywgMywgMiwgMSwgMCk7IFwKICBpbnQxNng0X3QgX19yZXYxXzExMzsgIF9fcmV2MV8xMTMgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzExMywgX19zMV8xMTMsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4NF90IF9fcmV2Ml8xMTM7ICBfX3JldjJfMTEzID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl8xMTMsIF9fczJfMTEzLCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDRfdCBfX3JldF8xMTM7IFwKICBfX3JldF8xMTMgPSBfX25vc3dhcF92cWRtbGFsX3MxNihfX3JldjBfMTEzLCBfX3JldjFfMTEzLCBfX25vc3dhcF9zcGxhdF9sYW5lX3MxNihfX3JldjJfMTEzLCBfX3AzXzExMykpOyBcCiAgX19yZXRfMTEzID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMTEzLCBfX3JldF8xMTMsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfMTEzOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50NjR4Ml90IHZxZG1sYWxfbl9zMzIoaW50NjR4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxLCBpbnQzMl90IF9fcDIpIHsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSB2cWRtbGFsX3MzMihfX3AwLCBfX3AxLCAoaW50MzJ4Ml90KSB7X19wMiwgX19wMn0pOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDY0eDJfdCB2cWRtbGFsX25fczMyKGludDY0eDJfdCBfX3AwLCBpbnQzMngyX3QgX19wMSwgaW50MzJfdCBfX3AyKSB7CiAgaW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92cWRtbGFsX3MzMihfX3JldjAsIF9fcmV2MSwgKGludDMyeDJfdCkge19fcDIsIF9fcDJ9KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50NjR4Ml90IF9fbm9zd2FwX3ZxZG1sYWxfbl9zMzIoaW50NjR4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxLCBpbnQzMl90IF9fcDIpIHsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92cWRtbGFsX3MzMihfX3AwLCBfX3AxLCAoaW50MzJ4Ml90KSB7X19wMiwgX19wMn0pOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDRfdCB2cWRtbGFsX25fczE2KGludDMyeDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSwgaW50MTZfdCBfX3AyKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gdnFkbWxhbF9zMTYoX19wMCwgX19wMSwgKGludDE2eDRfdCkge19fcDIsIF9fcDIsIF9fcDIsIF9fcDJ9KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMng0X3QgdnFkbWxhbF9uX3MxNihpbnQzMng0X3QgX19wMCwgaW50MTZ4NF90IF9fcDEsIGludDE2X3QgX19wMikgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdnFkbWxhbF9zMTYoX19yZXYwLCBfX3JldjEsIChpbnQxNng0X3QpIHtfX3AyLCBfX3AyLCBfX3AyLCBfX3AyfSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDMyeDRfdCBfX25vc3dhcF92cWRtbGFsX25fczE2KGludDMyeDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSwgaW50MTZfdCBfX3AyKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdnFkbWxhbF9zMTYoX19wMCwgX19wMSwgKGludDE2eDRfdCkge19fcDIsIF9fcDIsIF9fcDIsIF9fcDJ9KTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ2NHgyX3QgdnFkbWxzbF9zMzIoaW50NjR4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxLCBpbnQzMngyX3QgX19wMikgewogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZxZG1sc2xfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAoaW50OHg4X3QpX19wMiwgMzUpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDY0eDJfdCB2cWRtbHNsX3MzMihpbnQ2NHgyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEsIGludDMyeDJfdCBfX3AyKSB7CiAgaW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMSwgMCk7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDJfdCkgX19idWlsdGluX25lb25fdnFkbWxzbF92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAoaW50OHg4X3QpX19yZXYyLCAzNSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDY0eDJfdCBfX25vc3dhcF92cWRtbHNsX3MzMihpbnQ2NHgyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEsIGludDMyeDJfdCBfX3AyKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDJfdCkgX19idWlsdGluX25lb25fdnFkbWxzbF92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4OF90KV9fcDEsIChpbnQ4eDhfdClfX3AyLCAzNSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4NF90IHZxZG1sc2xfczE2KGludDMyeDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSwgaW50MTZ4NF90IF9fcDIpIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92cWRtbHNsX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgKGludDh4OF90KV9fcDIsIDM0KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMng0X3QgdnFkbWxzbF9zMTYoaW50MzJ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxLCBpbnQxNng0X3QgX19wMikgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZxZG1sc2xfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgKGludDh4OF90KV9fcmV2MiwgMzQpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQzMng0X3QgX19ub3N3YXBfdnFkbWxzbF9zMTYoaW50MzJ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxLCBpbnQxNng0X3QgX19wMikgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZxZG1sc2xfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAoaW50OHg4X3QpX19wMiwgMzQpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZxZG1sc2xfbGFuZV9zMzIoX19wMF8xMTQsIF9fcDFfMTE0LCBfX3AyXzExNCwgX19wM18xMTQpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJfdCBfX3MwXzExNCA9IF9fcDBfMTE0OyBcCiAgaW50MzJ4Ml90IF9fczFfMTE0ID0gX19wMV8xMTQ7IFwKICBpbnQzMngyX3QgX19zMl8xMTQgPSBfX3AyXzExNDsgXAogIGludDY0eDJfdCBfX3JldF8xMTQ7IFwKICBfX3JldF8xMTQgPSB2cWRtbHNsX3MzMihfX3MwXzExNCwgX19zMV8xMTQsIHNwbGF0X2xhbmVfczMyKF9fczJfMTE0LCBfX3AzXzExNCkpOyBcCiAgX19yZXRfMTE0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFkbWxzbF9sYW5lX3MzMihfX3AwXzExNSwgX19wMV8xMTUsIF9fcDJfMTE1LCBfX3AzXzExNSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4Ml90IF9fczBfMTE1ID0gX19wMF8xMTU7IFwKICBpbnQzMngyX3QgX19zMV8xMTUgPSBfX3AxXzExNTsgXAogIGludDMyeDJfdCBfX3MyXzExNSA9IF9fcDJfMTE1OyBcCiAgaW50NjR4Ml90IF9fcmV2MF8xMTU7ICBfX3JldjBfMTE1ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8xMTUsIF9fczBfMTE1LCAxLCAwKTsgXAogIGludDMyeDJfdCBfX3JldjFfMTE1OyAgX19yZXYxXzExNSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfMTE1LCBfX3MxXzExNSwgMSwgMCk7IFwKICBpbnQzMngyX3QgX19yZXYyXzExNTsgIF9fcmV2Ml8xMTUgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzExNSwgX19zMl8xMTUsIDEsIDApOyBcCiAgaW50NjR4Ml90IF9fcmV0XzExNTsgXAogIF9fcmV0XzExNSA9IF9fbm9zd2FwX3ZxZG1sc2xfczMyKF9fcmV2MF8xMTUsIF9fcmV2MV8xMTUsIF9fbm9zd2FwX3NwbGF0X2xhbmVfczMyKF9fcmV2Ml8xMTUsIF9fcDNfMTE1KSk7IFwKICBfX3JldF8xMTUgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8xMTUsIF9fcmV0XzExNSwgMSwgMCk7IFwKICBfX3JldF8xMTU7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cWRtbHNsX2xhbmVfczE2KF9fcDBfMTE2LCBfX3AxXzExNiwgX19wMl8xMTYsIF9fcDNfMTE2KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMF8xMTYgPSBfX3AwXzExNjsgXAogIGludDE2eDRfdCBfX3MxXzExNiA9IF9fcDFfMTE2OyBcCiAgaW50MTZ4NF90IF9fczJfMTE2ID0gX19wMl8xMTY7IFwKICBpbnQzMng0X3QgX19yZXRfMTE2OyBcCiAgX19yZXRfMTE2ID0gdnFkbWxzbF9zMTYoX19zMF8xMTYsIF9fczFfMTE2LCBzcGxhdF9sYW5lX3MxNihfX3MyXzExNiwgX19wM18xMTYpKTsgXAogIF9fcmV0XzExNjsgXAp9KQojZWxzZQojZGVmaW5lIHZxZG1sc2xfbGFuZV9zMTYoX19wMF8xMTcsIF9fcDFfMTE3LCBfX3AyXzExNywgX19wM18xMTcpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDRfdCBfX3MwXzExNyA9IF9fcDBfMTE3OyBcCiAgaW50MTZ4NF90IF9fczFfMTE3ID0gX19wMV8xMTc7IFwKICBpbnQxNng0X3QgX19zMl8xMTcgPSBfX3AyXzExNzsgXAogIGludDMyeDRfdCBfX3JldjBfMTE3OyAgX19yZXYwXzExNyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfMTE3LCBfX3MwXzExNywgMywgMiwgMSwgMCk7IFwKICBpbnQxNng0X3QgX19yZXYxXzExNzsgIF9fcmV2MV8xMTcgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzExNywgX19zMV8xMTcsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4NF90IF9fcmV2Ml8xMTc7ICBfX3JldjJfMTE3ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl8xMTcsIF9fczJfMTE3LCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDRfdCBfX3JldF8xMTc7IFwKICBfX3JldF8xMTcgPSBfX25vc3dhcF92cWRtbHNsX3MxNihfX3JldjBfMTE3LCBfX3JldjFfMTE3LCBfX25vc3dhcF9zcGxhdF9sYW5lX3MxNihfX3JldjJfMTE3LCBfX3AzXzExNykpOyBcCiAgX19yZXRfMTE3ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMTE3LCBfX3JldF8xMTcsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfMTE3OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50NjR4Ml90IHZxZG1sc2xfbl9zMzIoaW50NjR4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxLCBpbnQzMl90IF9fcDIpIHsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSB2cWRtbHNsX3MzMihfX3AwLCBfX3AxLCAoaW50MzJ4Ml90KSB7X19wMiwgX19wMn0pOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDY0eDJfdCB2cWRtbHNsX25fczMyKGludDY0eDJfdCBfX3AwLCBpbnQzMngyX3QgX19wMSwgaW50MzJfdCBfX3AyKSB7CiAgaW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92cWRtbHNsX3MzMihfX3JldjAsIF9fcmV2MSwgKGludDMyeDJfdCkge19fcDIsIF9fcDJ9KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50NjR4Ml90IF9fbm9zd2FwX3ZxZG1sc2xfbl9zMzIoaW50NjR4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxLCBpbnQzMl90IF9fcDIpIHsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92cWRtbHNsX3MzMihfX3AwLCBfX3AxLCAoaW50MzJ4Ml90KSB7X19wMiwgX19wMn0pOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDRfdCB2cWRtbHNsX25fczE2KGludDMyeDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSwgaW50MTZfdCBfX3AyKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gdnFkbWxzbF9zMTYoX19wMCwgX19wMSwgKGludDE2eDRfdCkge19fcDIsIF9fcDIsIF9fcDIsIF9fcDJ9KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMng0X3QgdnFkbWxzbF9uX3MxNihpbnQzMng0X3QgX19wMCwgaW50MTZ4NF90IF9fcDEsIGludDE2X3QgX19wMikgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdnFkbWxzbF9zMTYoX19yZXYwLCBfX3JldjEsIChpbnQxNng0X3QpIHtfX3AyLCBfX3AyLCBfX3AyLCBfX3AyfSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDMyeDRfdCBfX25vc3dhcF92cWRtbHNsX25fczE2KGludDMyeDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSwgaW50MTZfdCBfX3AyKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdnFkbWxzbF9zMTYoX19wMCwgX19wMSwgKGludDE2eDRfdCkge19fcDIsIF9fcDIsIF9fcDIsIF9fcDJ9KTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMng0X3QgdnFkbXVsaHFfczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZxZG11bGhxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDM0KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMng0X3QgdnFkbXVsaHFfczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkgX19idWlsdGluX25lb25fdnFkbXVsaHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDM0KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MzJ4NF90IF9fbm9zd2FwX3ZxZG11bGhxX3MzMihpbnQzMng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEpIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92cWRtdWxocV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAzNCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZ4OF90IHZxZG11bGhxX3MxNihpbnQxNng4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEpIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92cWRtdWxocV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAzMyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4OF90IHZxZG11bGhxX3MxNihpbnQxNng4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEpIHsKICBpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZxZG11bGhxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAzMyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDE2eDhfdCBfX25vc3dhcF92cWRtdWxocV9zMTYoaW50MTZ4OF90IF9fcDAsIGludDE2eDhfdCBfX3AxKSB7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDhfdCkgX19idWlsdGluX25lb25fdnFkbXVsaHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgMzMpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDJfdCB2cWRtdWxoX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEpIHsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cWRtdWxoX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMngyX3QgdnFkbXVsaF9zMzIoaW50MzJ4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxKSB7CiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cWRtdWxoX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDMyeDJfdCBfX25vc3dhcF92cWRtdWxoX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEpIHsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cWRtdWxoX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng0X3QgdnFkbXVsaF9zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxKSB7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdnFkbXVsaF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4NF90IHZxZG11bGhfczE2KGludDE2eDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSkgewogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdnFkbXVsaF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQxNng0X3QgX19ub3N3YXBfdnFkbXVsaF9zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxKSB7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdnFkbXVsaF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4NF90IHZxZG11bGhxX25fczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMl90IF9fcDEpIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSB2cWRtdWxocV9zMzIoX19wMCwgKGludDMyeDRfdCkge19fcDEsIF9fcDEsIF9fcDEsIF9fcDF9KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMng0X3QgdnFkbXVsaHFfbl9zMzIoaW50MzJ4NF90IF9fcDAsIGludDMyX3QgX19wMSkgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92cWRtdWxocV9zMzIoX19yZXYwLCAoaW50MzJ4NF90KSB7X19wMSwgX19wMSwgX19wMSwgX19wMX0pOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng4X3QgdnFkbXVsaHFfbl9zMTYoaW50MTZ4OF90IF9fcDAsIGludDE2X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IHZxZG11bGhxX3MxNihfX3AwLCAoaW50MTZ4OF90KSB7X19wMSwgX19wMSwgX19wMSwgX19wMSwgX19wMSwgX19wMSwgX19wMSwgX19wMX0pOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDhfdCB2cWRtdWxocV9uX3MxNihpbnQxNng4X3QgX19wMCwgaW50MTZfdCBfX3AxKSB7CiAgaW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3ZxZG11bGhxX3MxNihfX3JldjAsIChpbnQxNng4X3QpIHtfX3AxLCBfX3AxLCBfX3AxLCBfX3AxLCBfX3AxLCBfX3AxLCBfX3AxLCBfX3AxfSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDJfdCB2cWRtdWxoX25fczMyKGludDMyeDJfdCBfX3AwLCBpbnQzMl90IF9fcDEpIHsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSB2cWRtdWxoX3MzMihfX3AwLCAoaW50MzJ4Ml90KSB7X19wMSwgX19wMX0pOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDJfdCB2cWRtdWxoX25fczMyKGludDMyeDJfdCBfX3AwLCBpbnQzMl90IF9fcDEpIHsKICBpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdnFkbXVsaF9zMzIoX19yZXYwLCAoaW50MzJ4Ml90KSB7X19wMSwgX19wMX0pOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng0X3QgdnFkbXVsaF9uX3MxNihpbnQxNng0X3QgX19wMCwgaW50MTZfdCBfX3AxKSB7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gdnFkbXVsaF9zMTYoX19wMCwgKGludDE2eDRfdCkge19fcDEsIF9fcDEsIF9fcDEsIF9fcDF9KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng0X3QgdnFkbXVsaF9uX3MxNihpbnQxNng0X3QgX19wMCwgaW50MTZfdCBfX3AxKSB7CiAgaW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3ZxZG11bGhfczE2KF9fcmV2MCwgKGludDE2eDRfdCkge19fcDEsIF9fcDEsIF9fcDEsIF9fcDF9KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50NjR4Ml90IHZxZG11bGxfczMyKGludDMyeDJfdCBfX3AwLCBpbnQzMngyX3QgX19wMSkgewogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZxZG11bGxfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDM1KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ2NHgyX3QgdnFkbXVsbF9zMzIoaW50MzJ4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxKSB7CiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92cWRtdWxsX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMzUpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQ2NHgyX3QgX19ub3N3YXBfdnFkbXVsbF9zMzIoaW50MzJ4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDJfdCkgX19idWlsdGluX25lb25fdnFkbXVsbF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMzUpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDRfdCB2cWRtdWxsX3MxNihpbnQxNng0X3QgX19wMCwgaW50MTZ4NF90IF9fcDEpIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92cWRtdWxsX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAzNCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4NF90IHZxZG11bGxfczE2KGludDE2eDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSkgewogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkgX19idWlsdGluX25lb25fdnFkbXVsbF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDM0KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MzJ4NF90IF9fbm9zd2FwX3ZxZG11bGxfczE2KGludDE2eDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSkgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZxZG11bGxfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDM0KTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cWRtdWxsX2xhbmVfczMyKF9fcDBfMTE4LCBfX3AxXzExOCwgX19wMl8xMTgpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJfdCBfX3MwXzExOCA9IF9fcDBfMTE4OyBcCiAgaW50MzJ4Ml90IF9fczFfMTE4ID0gX19wMV8xMTg7IFwKICBpbnQ2NHgyX3QgX19yZXRfMTE4OyBcCiAgX19yZXRfMTE4ID0gdnFkbXVsbF9zMzIoX19zMF8xMTgsIHNwbGF0X2xhbmVfczMyKF9fczFfMTE4LCBfX3AyXzExOCkpOyBcCiAgX19yZXRfMTE4OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFkbXVsbF9sYW5lX3MzMihfX3AwXzExOSwgX19wMV8xMTksIF9fcDJfMTE5KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMngyX3QgX19zMF8xMTkgPSBfX3AwXzExOTsgXAogIGludDMyeDJfdCBfX3MxXzExOSA9IF9fcDFfMTE5OyBcCiAgaW50MzJ4Ml90IF9fcmV2MF8xMTk7ICBfX3JldjBfMTE5ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8xMTksIF9fczBfMTE5LCAxLCAwKTsgXAogIGludDMyeDJfdCBfX3JldjFfMTE5OyAgX19yZXYxXzExOSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfMTE5LCBfX3MxXzExOSwgMSwgMCk7IFwKICBpbnQ2NHgyX3QgX19yZXRfMTE5OyBcCiAgX19yZXRfMTE5ID0gX19ub3N3YXBfdnFkbXVsbF9zMzIoX19yZXYwXzExOSwgX19ub3N3YXBfc3BsYXRfbGFuZV9zMzIoX19yZXYxXzExOSwgX19wMl8xMTkpKTsgXAogIF9fcmV0XzExOSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzExOSwgX19yZXRfMTE5LCAxLCAwKTsgXAogIF9fcmV0XzExOTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZxZG11bGxfbGFuZV9zMTYoX19wMF8xMjAsIF9fcDFfMTIwLCBfX3AyXzEyMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NF90IF9fczBfMTIwID0gX19wMF8xMjA7IFwKICBpbnQxNng0X3QgX19zMV8xMjAgPSBfX3AxXzEyMDsgXAogIGludDMyeDRfdCBfX3JldF8xMjA7IFwKICBfX3JldF8xMjAgPSB2cWRtdWxsX3MxNihfX3MwXzEyMCwgc3BsYXRfbGFuZV9zMTYoX19zMV8xMjAsIF9fcDJfMTIwKSk7IFwKICBfX3JldF8xMjA7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cWRtdWxsX2xhbmVfczE2KF9fcDBfMTIxLCBfX3AxXzEyMSwgX19wMl8xMjEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDRfdCBfX3MwXzEyMSA9IF9fcDBfMTIxOyBcCiAgaW50MTZ4NF90IF9fczFfMTIxID0gX19wMV8xMjE7IFwKICBpbnQxNng0X3QgX19yZXYwXzEyMTsgIF9fcmV2MF8xMjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzEyMSwgX19zMF8xMjEsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4NF90IF9fcmV2MV8xMjE7ICBfX3JldjFfMTIxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV8xMjEsIF9fczFfMTIxLCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDRfdCBfX3JldF8xMjE7IFwKICBfX3JldF8xMjEgPSBfX25vc3dhcF92cWRtdWxsX3MxNihfX3JldjBfMTIxLCBfX25vc3dhcF9zcGxhdF9sYW5lX3MxNihfX3JldjFfMTIxLCBfX3AyXzEyMSkpOyBcCiAgX19yZXRfMTIxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMTIxLCBfX3JldF8xMjEsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfMTIxOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50NjR4Ml90IHZxZG11bGxfbl9zMzIoaW50MzJ4Ml90IF9fcDAsIGludDMyX3QgX19wMSkgewogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IHZxZG11bGxfczMyKF9fcDAsIChpbnQzMngyX3QpIHtfX3AxLCBfX3AxfSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50NjR4Ml90IHZxZG11bGxfbl9zMzIoaW50MzJ4Ml90IF9fcDAsIGludDMyX3QgX19wMSkgewogIGludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92cWRtdWxsX3MzMihfX3JldjAsIChpbnQzMngyX3QpIHtfX3AxLCBfX3AxfSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDY0eDJfdCBfX25vc3dhcF92cWRtdWxsX25fczMyKGludDMyeDJfdCBfX3AwLCBpbnQzMl90IF9fcDEpIHsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92cWRtdWxsX3MzMihfX3AwLCAoaW50MzJ4Ml90KSB7X19wMSwgX19wMX0pOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDRfdCB2cWRtdWxsX25fczE2KGludDE2eDRfdCBfX3AwLCBpbnQxNl90IF9fcDEpIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSB2cWRtdWxsX3MxNihfX3AwLCAoaW50MTZ4NF90KSB7X19wMSwgX19wMSwgX19wMSwgX19wMX0pOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDRfdCB2cWRtdWxsX25fczE2KGludDE2eDRfdCBfX3AwLCBpbnQxNl90IF9fcDEpIHsKICBpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdnFkbXVsbF9zMTYoX19yZXYwLCAoaW50MTZ4NF90KSB7X19wMSwgX19wMSwgX19wMSwgX19wMX0pOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQzMng0X3QgX19ub3N3YXBfdnFkbXVsbF9uX3MxNihpbnQxNng0X3QgX19wMCwgaW50MTZfdCBfX3AxKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdnFkbXVsbF9zMTYoX19wMCwgKGludDE2eDRfdCkge19fcDEsIF9fcDEsIF9fcDEsIF9fcDF9KTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4NF90IHZxbW92bl91MzIodWludDMyeDRfdCBfX3AwKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cW1vdm5fdigoaW50OHgxNl90KV9fcDAsIDE3KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4NF90IHZxbW92bl91MzIodWludDMyeDRfdCBfX3AwKSB7CiAgdWludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZxbW92bl92KChpbnQ4eDE2X3QpX19yZXYwLCAxNyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQxNng0X3QgX19ub3N3YXBfdnFtb3ZuX3UzMih1aW50MzJ4NF90IF9fcDApIHsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZxbW92bl92KChpbnQ4eDE2X3QpX19wMCwgMTcpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMngyX3QgdnFtb3ZuX3U2NCh1aW50NjR4Ml90IF9fcDApIHsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZxbW92bl92KChpbnQ4eDE2X3QpX19wMCwgMTgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMngyX3QgdnFtb3ZuX3U2NCh1aW50NjR4Ml90IF9fcDApIHsKICB1aW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdnFtb3ZuX3YoKGludDh4MTZfdClfX3JldjAsIDE4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDMyeDJfdCBfX25vc3dhcF92cW1vdm5fdTY0KHVpbnQ2NHgyX3QgX19wMCkgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdnFtb3ZuX3YoKGludDh4MTZfdClfX3AwLCAxOCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4OF90IHZxbW92bl91MTYodWludDE2eDhfdCBfX3AwKSB7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnFtb3ZuX3YoKGludDh4MTZfdClfX3AwLCAxNik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4OF90IHZxbW92bl91MTYodWludDE2eDhfdCBfX3AwKSB7CiAgdWludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92cW1vdm5fdigoaW50OHgxNl90KV9fcmV2MCwgMTYpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50OHg4X3QgX19ub3N3YXBfdnFtb3ZuX3UxNih1aW50MTZ4OF90IF9fcDApIHsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92cW1vdm5fdigoaW50OHgxNl90KV9fcDAsIDE2KTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng0X3QgdnFtb3ZuX3MzMihpbnQzMng0X3QgX19wMCkgewogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZxbW92bl92KChpbnQ4eDE2X3QpX19wMCwgMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4NF90IHZxbW92bl9zMzIoaW50MzJ4NF90IF9fcDApIHsKICBpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdnFtb3ZuX3YoKGludDh4MTZfdClfX3JldjAsIDEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQxNng0X3QgX19ub3N3YXBfdnFtb3ZuX3MzMihpbnQzMng0X3QgX19wMCkgewogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZxbW92bl92KChpbnQ4eDE2X3QpX19wMCwgMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4Ml90IHZxbW92bl9zNjQoaW50NjR4Ml90IF9fcDApIHsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cW1vdm5fdigoaW50OHgxNl90KV9fcDAsIDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDJfdCB2cW1vdm5fczY0KGludDY0eDJfdCBfX3AwKSB7CiAgaW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZxbW92bl92KChpbnQ4eDE2X3QpX19yZXYwLCAyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MzJ4Ml90IF9fbm9zd2FwX3ZxbW92bl9zNjQoaW50NjR4Ml90IF9fcDApIHsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cW1vdm5fdigoaW50OHgxNl90KV9fcDAsIDIpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4OF90IHZxbW92bl9zMTYoaW50MTZ4OF90IF9fcDApIHsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnFtb3ZuX3YoKGludDh4MTZfdClfX3AwLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ4eDhfdCB2cW1vdm5fczE2KGludDE2eDhfdCBfX3AwKSB7CiAgaW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92cW1vdm5fdigoaW50OHgxNl90KV9fcmV2MCwgMCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDh4OF90IF9fbm9zd2FwX3ZxbW92bl9zMTYoaW50MTZ4OF90IF9fcDApIHsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnFtb3ZuX3YoKGludDh4MTZfdClfX3AwLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4NF90IHZxbW92dW5fczMyKGludDMyeDRfdCBfX3AwKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cW1vdnVuX3YoKGludDh4MTZfdClfX3AwLCAxNyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDRfdCB2cW1vdnVuX3MzMihpbnQzMng0X3QgX19wMCkgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZxbW92dW5fdigoaW50OHgxNl90KV9fcmV2MCwgMTcpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MTZ4NF90IF9fbm9zd2FwX3ZxbW92dW5fczMyKGludDMyeDRfdCBfX3AwKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cW1vdnVuX3YoKGludDh4MTZfdClfX3AwLCAxNyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDJfdCB2cW1vdnVuX3M2NChpbnQ2NHgyX3QgX19wMCkgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdnFtb3Z1bl92KChpbnQ4eDE2X3QpX19wMCwgMTgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMngyX3QgdnFtb3Z1bl9zNjQoaW50NjR4Ml90IF9fcDApIHsKICBpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cW1vdnVuX3YoKGludDh4MTZfdClfX3JldjAsIDE4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDMyeDJfdCBfX25vc3dhcF92cW1vdnVuX3M2NChpbnQ2NHgyX3QgX19wMCkgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdnFtb3Z1bl92KChpbnQ4eDE2X3QpX19wMCwgMTgpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDhfdCB2cW1vdnVuX3MxNihpbnQxNng4X3QgX19wMCkgewogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZxbW92dW5fdigoaW50OHgxNl90KV9fcDAsIDE2KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHg4X3QgdnFtb3Z1bl9zMTYoaW50MTZ4OF90IF9fcDApIHsKICBpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnFtb3Z1bl92KChpbnQ4eDE2X3QpX19yZXYwLCAxNik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ4eDhfdCBfX25vc3dhcF92cW1vdnVuX3MxNihpbnQxNng4X3QgX19wMCkgewogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZxbW92dW5fdigoaW50OHgxNl90KV9fcDAsIDE2KTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDE2X3QgdnFuZWdxX3M4KGludDh4MTZfdCBfX3AwKSB7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4MTZfdCkgX19idWlsdGluX25lb25fdnFuZWdxX3YoKGludDh4MTZfdClfX3AwLCAzMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OHgxNl90IHZxbmVncV9zOChpbnQ4eDE2X3QgX19wMCkgewogIGludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92cW5lZ3FfdigoaW50OHgxNl90KV9fcmV2MCwgMzIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMng0X3QgdnFuZWdxX3MzMihpbnQzMng0X3QgX19wMCkgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZxbmVncV92KChpbnQ4eDE2X3QpX19wMCwgMzQpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDRfdCB2cW5lZ3FfczMyKGludDMyeDRfdCBfX3AwKSB7CiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZxbmVncV92KChpbnQ4eDE2X3QpX19yZXYwLCAzNCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDhfdCB2cW5lZ3FfczE2KGludDE2eDhfdCBfX3AwKSB7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDhfdCkgX19idWlsdGluX25lb25fdnFuZWdxX3YoKGludDh4MTZfdClfX3AwLCAzMyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4OF90IHZxbmVncV9zMTYoaW50MTZ4OF90IF9fcDApIHsKICBpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDhfdCkgX19idWlsdGluX25lb25fdnFuZWdxX3YoKGludDh4MTZfdClfX3JldjAsIDMzKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHg4X3QgdnFuZWdfczgoaW50OHg4X3QgX19wMCkgewogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92cW5lZ192KChpbnQ4eDhfdClfX3AwLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ4eDhfdCB2cW5lZ19zOChpbnQ4eDhfdCBfX3AwKSB7CiAgaW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZxbmVnX3YoKGludDh4OF90KV9fcmV2MCwgMCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDJfdCB2cW5lZ19zMzIoaW50MzJ4Ml90IF9fcDApIHsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cW5lZ192KChpbnQ4eDhfdClfX3AwLCAyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMngyX3QgdnFuZWdfczMyKGludDMyeDJfdCBfX3AwKSB7CiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZxbmVnX3YoKGludDh4OF90KV9fcmV2MCwgMik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDRfdCB2cW5lZ19zMTYoaW50MTZ4NF90IF9fcDApIHsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cW5lZ192KChpbnQ4eDhfdClfX3AwLCAxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng0X3QgdnFuZWdfczE2KGludDE2eDRfdCBfX3AwKSB7CiAgaW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZxbmVnX3YoKGludDh4OF90KV9fcmV2MCwgMSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDRfdCB2cXJkbXVsaHFfczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZxcmRtdWxocV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAzNCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4NF90IHZxcmRtdWxocV9zMzIoaW50MzJ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxKSB7CiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92cXJkbXVsaHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDM0KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MzJ4NF90IF9fbm9zd2FwX3ZxcmRtdWxocV9zMzIoaW50MzJ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkgX19idWlsdGluX25lb25fdnFyZG11bGhxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDM0KTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng4X3QgdnFyZG11bGhxX3MxNihpbnQxNng4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEpIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92cXJkbXVsaHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgMzMpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDhfdCB2cXJkbXVsaHFfczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDhfdCkgX19idWlsdGluX25lb25fdnFyZG11bGhxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAzMyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDE2eDhfdCBfX25vc3dhcF92cXJkbXVsaHFfczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZxcmRtdWxocV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAzMyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4Ml90IHZxcmRtdWxoX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEpIHsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cXJkbXVsaF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4Ml90IHZxcmRtdWxoX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEpIHsKICBpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZxcmRtdWxoX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDMyeDJfdCBfX25vc3dhcF92cXJkbXVsaF9zMzIoaW50MzJ4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxKSB7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdnFyZG11bGhfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDIpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDRfdCB2cXJkbXVsaF9zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxKSB7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdnFyZG11bGhfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDRfdCB2cXJkbXVsaF9zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxKSB7CiAgaW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cXJkbXVsaF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQxNng0X3QgX19ub3N3YXBfdnFyZG11bGhfczE2KGludDE2eDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSkgewogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZxcmRtdWxoX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMng0X3QgdnFyZG11bGhxX25fczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMl90IF9fcDEpIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSB2cXJkbXVsaHFfczMyKF9fcDAsIChpbnQzMng0X3QpIHtfX3AxLCBfX3AxLCBfX3AxLCBfX3AxfSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4NF90IHZxcmRtdWxocV9uX3MzMihpbnQzMng0X3QgX19wMCwgaW50MzJfdCBfX3AxKSB7CiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3ZxcmRtdWxocV9zMzIoX19yZXYwLCAoaW50MzJ4NF90KSB7X19wMSwgX19wMSwgX19wMSwgX19wMX0pOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng4X3QgdnFyZG11bGhxX25fczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNl90IF9fcDEpIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSB2cXJkbXVsaHFfczE2KF9fcDAsIChpbnQxNng4X3QpIHtfX3AxLCBfX3AxLCBfX3AxLCBfX3AxLCBfX3AxLCBfX3AxLCBfX3AxLCBfX3AxfSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4OF90IHZxcmRtdWxocV9uX3MxNihpbnQxNng4X3QgX19wMCwgaW50MTZfdCBfX3AxKSB7CiAgaW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3ZxcmRtdWxocV9zMTYoX19yZXYwLCAoaW50MTZ4OF90KSB7X19wMSwgX19wMSwgX19wMSwgX19wMSwgX19wMSwgX19wMSwgX19wMSwgX19wMX0pOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMngyX3QgdnFyZG11bGhfbl9zMzIoaW50MzJ4Ml90IF9fcDAsIGludDMyX3QgX19wMSkgewogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IHZxcmRtdWxoX3MzMihfX3AwLCAoaW50MzJ4Ml90KSB7X19wMSwgX19wMX0pOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDJfdCB2cXJkbXVsaF9uX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJfdCBfX3AxKSB7CiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3ZxcmRtdWxoX3MzMihfX3JldjAsIChpbnQzMngyX3QpIHtfX3AxLCBfX3AxfSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDRfdCB2cXJkbXVsaF9uX3MxNihpbnQxNng0X3QgX19wMCwgaW50MTZfdCBfX3AxKSB7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gdnFyZG11bGhfczE2KF9fcDAsIChpbnQxNng0X3QpIHtfX3AxLCBfX3AxLCBfX3AxLCBfX3AxfSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4NF90IHZxcmRtdWxoX25fczE2KGludDE2eDRfdCBfX3AwLCBpbnQxNl90IF9fcDEpIHsKICBpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdnFyZG11bGhfczE2KF9fcmV2MCwgKGludDE2eDRfdCkge19fcDEsIF9fcDEsIF9fcDEsIF9fcDF9KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4MTZfdCB2cXJzaGxxX3U4KHVpbnQ4eDE2X3QgX19wMCwgaW50OHgxNl90IF9fcDEpIHsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZxcnNobHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNDgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDE2X3QgdnFyc2hscV91OCh1aW50OHgxNl90IF9fcDAsIGludDh4MTZfdCBfX3AxKSB7CiAgdWludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92cXJzaGxxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA0OCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMng0X3QgdnFyc2hscV91MzIodWludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdnFyc2hscV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA1MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2cXJzaGxxX3UzMih1aW50MzJ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxKSB7CiAgdWludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92cXJzaGxxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA1MCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ2NHgyX3QgdnFyc2hscV91NjQodWludDY0eDJfdCBfX3AwLCBpbnQ2NHgyX3QgX19wMSkgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkgX19idWlsdGluX25lb25fdnFyc2hscV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA1MSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDY0eDJfdCB2cXJzaGxxX3U2NCh1aW50NjR4Ml90IF9fcDAsIGludDY0eDJfdCBfX3AxKSB7CiAgdWludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBpbnQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92cXJzaGxxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA1MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng4X3QgdnFyc2hscV91MTYodWludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkgX19idWlsdGluX25lb25fdnFyc2hscV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA0OSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDhfdCB2cXJzaGxxX3UxNih1aW50MTZ4OF90IF9fcDAsIGludDE2eDhfdCBfX3AxKSB7CiAgdWludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92cXJzaGxxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA0OSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4MTZfdCB2cXJzaGxxX3M4KGludDh4MTZfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSkgewogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZxcnNobHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgMzIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4MTZfdCB2cXJzaGxxX3M4KGludDh4MTZfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSkgewogIGludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4MTZfdCkgX19idWlsdGluX25lb25fdnFyc2hscV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgMzIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMng0X3QgdnFyc2hscV9zMzIoaW50MzJ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkgX19idWlsdGluX25lb25fdnFyc2hscV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAzNCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4NF90IHZxcnNobHFfczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkgX19idWlsdGluX25lb25fdnFyc2hscV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgMzQpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ2NHgyX3QgdnFyc2hscV9zNjQoaW50NjR4Ml90IF9fcDAsIGludDY0eDJfdCBfX3AxKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDJfdCkgX19idWlsdGluX25lb25fdnFyc2hscV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAzNSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50NjR4Ml90IHZxcnNobHFfczY0KGludDY0eDJfdCBfX3AwLCBpbnQ2NHgyX3QgX19wMSkgewogIGludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBpbnQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDJfdCkgX19idWlsdGluX25lb25fdnFyc2hscV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgMzUpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng4X3QgdnFyc2hscV9zMTYoaW50MTZ4OF90IF9fcDAsIGludDE2eDhfdCBfX3AxKSB7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDhfdCkgX19idWlsdGluX25lb25fdnFyc2hscV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAzMyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4OF90IHZxcnNobHFfczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDhfdCkgX19idWlsdGluX25lb25fdnFyc2hscV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgMzMpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHg4X3QgdnFyc2hsX3U4KHVpbnQ4eDhfdCBfX3AwLCBpbnQ4eDhfdCBfX3AxKSB7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnFyc2hsX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAxNik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4OF90IHZxcnNobF91OCh1aW50OHg4X3QgX19wMCwgaW50OHg4X3QgX19wMSkgewogIHVpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92cXJzaGxfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAxNik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMngyX3QgdnFyc2hsX3UzMih1aW50MzJ4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cXJzaGxfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDE4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4Ml90IHZxcnNobF91MzIodWludDMyeDJfdCBfX3AwLCBpbnQzMngyX3QgX19wMSkgewogIHVpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdnFyc2hsX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMTgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgpfX2FpIHVpbnQ2NHgxX3QgdnFyc2hsX3U2NCh1aW50NjR4MV90IF9fcDAsIGludDY0eDFfdCBfX3AxKSB7CiAgdWludDY0eDFfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92cXJzaGxfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDE5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDRfdCB2cXJzaGxfdTE2KHVpbnQxNng0X3QgX19wMCwgaW50MTZ4NF90IF9fcDEpIHsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZxcnNobF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMTcpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng0X3QgdnFyc2hsX3UxNih1aW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxKSB7CiAgdWludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cXJzaGxfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAxNyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4OF90IHZxcnNobF9zOChpbnQ4eDhfdCBfX3AwLCBpbnQ4eDhfdCBfX3AxKSB7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZxcnNobF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OHg4X3QgdnFyc2hsX3M4KGludDh4OF90IF9fcDAsIGludDh4OF90IF9fcDEpIHsKICBpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnFyc2hsX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDJfdCB2cXJzaGxfczMyKGludDMyeDJfdCBfX3AwLCBpbnQzMngyX3QgX19wMSkgewogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZxcnNobF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4Ml90IHZxcnNobF9zMzIoaW50MzJ4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxKSB7CiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cXJzaGxfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKX19haSBpbnQ2NHgxX3QgdnFyc2hsX3M2NChpbnQ2NHgxX3QgX19wMCwgaW50NjR4MV90IF9fcDEpIHsKICBpbnQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92cXJzaGxfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDMpOwogIHJldHVybiBfX3JldDsKfQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng0X3QgdnFyc2hsX3MxNihpbnQxNng0X3QgX19wMCwgaW50MTZ4NF90IF9fcDEpIHsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cXJzaGxfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDRfdCB2cXJzaGxfczE2KGludDE2eDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSkgewogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdnFyc2hsX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZxcnNocm5fbl91MzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDRfdCBfX3MwID0gX19wMDsgXAogIHVpbnQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cXJzaHJuX25fdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDE3KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFyc2hybl9uX3UzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NF90IF9fczAgPSBfX3AwOyBcCiAgdWludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAzLCAyLCAxLCAwKTsgXAogIHVpbnQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cXJzaHJuX25fdigoaW50OHgxNl90KV9fcmV2MCwgX19wMSwgMTcpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF92cXJzaHJuX25fdTMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdnFyc2hybl9uX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCAxNyk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZxcnNocm5fbl91NjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDJfdCBfX3MwID0gX19wMDsgXAogIHVpbnQzMngyX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cXJzaHJuX25fdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDE4KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFyc2hybl9uX3U2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4Ml90IF9fczAgPSBfX3AwOyBcCiAgdWludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAxLCAwKTsgXAogIHVpbnQzMngyX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cXJzaHJuX25fdigoaW50OHgxNl90KV9fcmV2MCwgX19wMSwgMTgpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF92cXJzaHJuX25fdTY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyX3QgX19zMCA9IF9fcDA7IFwKICB1aW50MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdnFyc2hybl9uX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCAxOCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZxcnNocm5fbl91MTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDhfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ4eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnFyc2hybl9uX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCAxNik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZxcnNocm5fbl91MTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDhfdCBfX3MwID0gX19wMDsgXAogIHVpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50OHg4X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZxcnNocm5fbl92KChpbnQ4eDE2X3QpX19yZXYwLCBfX3AxLCAxNik7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3ZxcnNocm5fbl91MTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDhfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ4eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnFyc2hybl9uX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCAxNik7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZxcnNocm5fbl9zMzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczAgPSBfX3AwOyBcCiAgaW50MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cXJzaHJuX25fdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cXJzaHJuX25fczMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDRfdCBfX3MwID0gX19wMDsgXAogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdnFyc2hybl9uX3YoKGludDh4MTZfdClfX3JldjAsIF9fcDEsIDEpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF92cXJzaHJuX25fczMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDRfdCBfX3MwID0gX19wMDsgXAogIGludDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdnFyc2hybl9uX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCAxKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFyc2hybl9uX3M2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgyX3QgX19zMCA9IF9fcDA7IFwKICBpbnQzMngyX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZxcnNocm5fbl92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgMik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZxcnNocm5fbl9zNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4Ml90IF9fczAgPSBfX3AwOyBcCiAgaW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDEsIDApOyBcCiAgaW50MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cXJzaHJuX25fdigoaW50OHgxNl90KV9fcmV2MCwgX19wMSwgMik7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3ZxcnNocm5fbl9zNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4Ml90IF9fczAgPSBfX3AwOyBcCiAgaW50MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cXJzaHJuX25fdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDIpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cXJzaHJuX25fczE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDhfdCBfX3MwID0gX19wMDsgXAogIGludDh4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZxcnNocm5fbl92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZxcnNocm5fbl9zMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgaW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50OHg4X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnFyc2hybl9uX3YoKGludDh4MTZfdClfX3JldjAsIF9fcDEsIDApOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF92cXJzaHJuX25fczE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDhfdCBfX3MwID0gX19wMDsgXAogIGludDh4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZxcnNocm5fbl92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZxcnNocnVuX25fczMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDRfdCBfX3MwID0gX19wMDsgXAogIHVpbnQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cXJzaHJ1bl9uX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCAxNyk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZxcnNocnVuX25fczMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDRfdCBfX3MwID0gX19wMDsgXAogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAzLCAyLCAxLCAwKTsgXAogIHVpbnQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cXJzaHJ1bl9uX3YoKGludDh4MTZfdClfX3JldjAsIF9fcDEsIDE3KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgX19ub3N3YXBfdnFyc2hydW5fbl9zMzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczAgPSBfX3AwOyBcCiAgdWludDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZxcnNocnVuX25fdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDE3KTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFyc2hydW5fbl9zNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4Ml90IF9fczAgPSBfX3AwOyBcCiAgdWludDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZxcnNocnVuX25fdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDE4KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFyc2hydW5fbl9zNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4Ml90IF9fczAgPSBfX3AwOyBcCiAgaW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDEsIDApOyBcCiAgdWludDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZxcnNocnVuX25fdigoaW50OHgxNl90KV9fcmV2MCwgX19wMSwgMTgpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF92cXJzaHJ1bl9uX3M2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgyX3QgX19zMCA9IF9fcDA7IFwKICB1aW50MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdnFyc2hydW5fbl92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgMTgpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cXJzaHJ1bl9uX3MxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4X3QgX19zMCA9IF9fcDA7IFwKICB1aW50OHg4X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZxcnNocnVuX25fdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDE2KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFyc2hydW5fbl9zMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgaW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDh4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92cXJzaHJ1bl9uX3YoKGludDh4MTZfdClfX3JldjAsIF9fcDEsIDE2KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgX19ub3N3YXBfdnFyc2hydW5fbl9zMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgdWludDh4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92cXJzaHJ1bl9uX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCAxNik7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDE2X3QgdnFzaGxxX3U4KHVpbnQ4eDE2X3QgX19wMCwgaW50OHgxNl90IF9fcDEpIHsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hscV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA0OCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4MTZfdCB2cXNobHFfdTgodWludDh4MTZfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSkgewogIHVpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkgX19idWlsdGluX25lb25fdnFzaGxxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA0OCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMng0X3QgdnFzaGxxX3UzMih1aW50MzJ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92cXNobHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNTApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMng0X3QgdnFzaGxxX3UzMih1aW50MzJ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxKSB7CiAgdWludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92cXNobHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDUwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDY0eDJfdCB2cXNobHFfdTY0KHVpbnQ2NHgyX3QgX19wMCwgaW50NjR4Ml90IF9fcDEpIHsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hscV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA1MSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDY0eDJfdCB2cXNobHFfdTY0KHVpbnQ2NHgyX3QgX19wMCwgaW50NjR4Ml90IF9fcDEpIHsKICB1aW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hscV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNTEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4OF90IHZxc2hscV91MTYodWludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkgX19idWlsdGluX25lb25fdnFzaGxxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDQ5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4OF90IHZxc2hscV91MTYodWludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIHVpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkgX19idWlsdGluX25lb25fdnFzaGxxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA0OSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4MTZfdCB2cXNobHFfczgoaW50OHgxNl90IF9fcDAsIGludDh4MTZfdCBfX3AxKSB7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4MTZfdCkgX19idWlsdGluX25lb25fdnFzaGxxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDMyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ4eDE2X3QgdnFzaGxxX3M4KGludDh4MTZfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSkgewogIGludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4MTZfdCkgX19idWlsdGluX25lb25fdnFzaGxxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAzMik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDRfdCB2cXNobHFfczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hscV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAzNCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4NF90IHZxc2hscV9zMzIoaW50MzJ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxKSB7CiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92cXNobHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDM0KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50NjR4Ml90IHZxc2hscV9zNjQoaW50NjR4Ml90IF9fcDAsIGludDY0eDJfdCBfX3AxKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDJfdCkgX19idWlsdGluX25lb25fdnFzaGxxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDM1KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ2NHgyX3QgdnFzaGxxX3M2NChpbnQ2NHgyX3QgX19wMCwgaW50NjR4Ml90IF9fcDEpIHsKICBpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hscV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgMzUpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng4X3QgdnFzaGxxX3MxNihpbnQxNng4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEpIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92cXNobHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgMzMpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDhfdCB2cXNobHFfczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDhfdCkgX19idWlsdGluX25lb25fdnFzaGxxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAzMyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDhfdCB2cXNobF91OCh1aW50OHg4X3QgX19wMCwgaW50OHg4X3QgX19wMSkgewogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hsX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAxNik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4OF90IHZxc2hsX3U4KHVpbnQ4eDhfdCBfX3AwLCBpbnQ4eDhfdCBfX3AxKSB7CiAgdWludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hsX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMTYpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4Ml90IHZxc2hsX3UzMih1aW50MzJ4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cXNobF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMTgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMngyX3QgdnFzaGxfdTMyKHVpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEpIHsKICB1aW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hsX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMTgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgpfX2FpIHVpbnQ2NHgxX3QgdnFzaGxfdTY0KHVpbnQ2NHgxX3QgX19wMCwgaW50NjR4MV90IF9fcDEpIHsKICB1aW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hsX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAxOSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng0X3QgdnFzaGxfdTE2KHVpbnQxNng0X3QgX19wMCwgaW50MTZ4NF90IF9fcDEpIHsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hsX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAxNyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDRfdCB2cXNobF91MTYodWludDE2eDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSkgewogIHVpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdnFzaGxfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAxNyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4OF90IHZxc2hsX3M4KGludDh4OF90IF9fcDAsIGludDh4OF90IF9fcDEpIHsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnFzaGxfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4OF90IHZxc2hsX3M4KGludDh4OF90IF9fcDAsIGludDh4OF90IF9fcDEpIHsKICBpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnFzaGxfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4Ml90IHZxc2hsX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEpIHsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cXNobF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4Ml90IHZxc2hsX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEpIHsKICBpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hsX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCl9fYWkgaW50NjR4MV90IHZxc2hsX3M2NChpbnQ2NHgxX3QgX19wMCwgaW50NjR4MV90IF9fcDEpIHsKICBpbnQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92cXNobF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDRfdCB2cXNobF9zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxKSB7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdnFzaGxfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDRfdCB2cXNobF9zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxKSB7CiAgaW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cXNobF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cXNobHFfbl91OChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHgxNl90IF9fczAgPSBfX3AwOyBcCiAgdWludDh4MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hscV9uX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCA0OCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZxc2hscV9uX3U4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDE2X3QgX19zMCA9IF9fcDA7IFwKICB1aW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDh4MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hscV9uX3YoKGludDh4MTZfdClfX3JldjAsIF9fcDEsIDQ4KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFzaGxxX25fdTMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MzJ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdnFzaGxxX25fdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDUwKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFzaGxxX25fdTMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDMsIDIsIDEsIDApOyBcCiAgdWludDMyeDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hscV9uX3YoKGludDh4MTZfdClfX3JldjAsIF9fcDEsIDUwKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFzaGxxX25fdTY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyX3QgX19zMCA9IF9fcDA7IFwKICB1aW50NjR4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDY0eDJfdCkgX19idWlsdGluX25lb25fdnFzaGxxX25fdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDUxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFzaGxxX25fdTY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyX3QgX19zMCA9IF9fcDA7IFwKICB1aW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDEsIDApOyBcCiAgdWludDY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hscV9uX3YoKGludDh4MTZfdClfX3JldjAsIF9fcDEsIDUxKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFzaGxxX25fdTE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng4X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDE2eDhfdCkgX19idWlsdGluX25lb25fdnFzaGxxX25fdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDQ5KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFzaGxxX25fdTE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng4X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hscV9uX3YoKGludDh4MTZfdClfX3JldjAsIF9fcDEsIDQ5KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFzaGxxX25fczgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHgxNl90IF9fczAgPSBfX3AwOyBcCiAgaW50OHgxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92cXNobHFfbl92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgMzIpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cXNobHFfbl9zOChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDE2X3QgX19zMCA9IF9fcDA7IFwKICBpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQ4eDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hscV9uX3YoKGludDh4MTZfdClfX3JldjAsIF9fcDEsIDMyKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFzaGxxX25fczMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDRfdCBfX3MwID0gX19wMDsgXAogIGludDMyeDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDMyeDRfdCkgX19idWlsdGluX25lb25fdnFzaGxxX25fdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDM0KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFzaGxxX25fczMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDRfdCBfX3MwID0gX19wMDsgXAogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDMyeDRfdCkgX19idWlsdGluX25lb25fdnFzaGxxX25fdigoaW50OHgxNl90KV9fcmV2MCwgX19wMSwgMzQpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cXNobHFfbl9zNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4Ml90IF9fczAgPSBfX3AwOyBcCiAgaW50NjR4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92cXNobHFfbl92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgMzUpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cXNobHFfbl9zNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4Ml90IF9fczAgPSBfX3AwOyBcCiAgaW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDEsIDApOyBcCiAgaW50NjR4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92cXNobHFfbl92KChpbnQ4eDE2X3QpX19yZXYwLCBfX3AxLCAzNSk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZxc2hscV9uX3MxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4X3QgX19zMCA9IF9fcDA7IFwKICBpbnQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hscV9uX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCAzMyk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZxc2hscV9uX3MxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4X3QgX19zMCA9IF9fcDA7IFwKICBpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hscV9uX3YoKGludDh4MTZfdClfX3JldjAsIF9fcDEsIDMzKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFzaGxfbl91OChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHg4X3QgX19zMCA9IF9fcDA7IFwKICB1aW50OHg4X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hsX25fdigoaW50OHg4X3QpX19zMCwgX19wMSwgMTYpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cXNobF9uX3U4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDhfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQ4eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnFzaGxfbl92KChpbnQ4eDhfdClfX3JldjAsIF9fcDEsIDE2KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFzaGxfbl91MzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDJfdCBfX3MwID0gX19wMDsgXAogIHVpbnQzMngyX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cXNobF9uX3YoKGludDh4OF90KV9fczAsIF9fcDEsIDE4KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFzaGxfbl91MzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDJfdCBfX3MwID0gX19wMDsgXAogIHVpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMSwgMCk7IFwKICB1aW50MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdnFzaGxfbl92KChpbnQ4eDhfdClfX3JldjAsIF9fcDEsIDE4KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2cXNobF9uX3U2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4MV90IF9fczAgPSBfX3AwOyBcCiAgdWludDY0eDFfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hsX25fdigoaW50OHg4X3QpX19zMCwgX19wMSwgMTkpOyBcCiAgX19yZXQ7IFwKfSkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFzaGxfbl91MTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDRfdCBfX3MwID0gX19wMDsgXAogIHVpbnQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cXNobF9uX3YoKGludDh4OF90KV9fczAsIF9fcDEsIDE3KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFzaGxfbl91MTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDRfdCBfX3MwID0gX19wMDsgXAogIHVpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMywgMiwgMSwgMCk7IFwKICB1aW50MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdnFzaGxfbl92KChpbnQ4eDhfdClfX3JldjAsIF9fcDEsIDE3KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFzaGxfbl9zOChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDhfdCBfX3MwID0gX19wMDsgXAogIGludDh4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hsX25fdigoaW50OHg4X3QpX19zMCwgX19wMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZxc2hsX25fczgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHg4X3QgX19zMCA9IF9fcDA7IFwKICBpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDh4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hsX25fdigoaW50OHg4X3QpX19yZXYwLCBfX3AxLCAwKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFzaGxfbl9zMzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Ml90IF9fczAgPSBfX3AwOyBcCiAgaW50MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cXNobF9uX3YoKGludDh4OF90KV9fczAsIF9fcDEsIDIpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cXNobF9uX3MzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMngyX3QgX19zMCA9IF9fcDA7IFwKICBpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMSwgMCk7IFwKICBpbnQzMngyX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hsX25fdigoaW50OHg4X3QpX19yZXYwLCBfX3AxLCAyKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2cXNobF9uX3M2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgxX3QgX19zMCA9IF9fcDA7IFwKICBpbnQ2NHgxX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hsX25fdigoaW50OHg4X3QpX19zMCwgX19wMSwgMyk7IFwKICBfX3JldDsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cXNobF9uX3MxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hsX25fdigoaW50OHg4X3QpX19zMCwgX19wMSwgMSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZxc2hsX25fczE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDRfdCBfX3MwID0gX19wMDsgXAogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdnFzaGxfbl92KChpbnQ4eDhfdClfX3JldjAsIF9fcDEsIDEpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cXNobHVxX25fczgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHgxNl90IF9fczAgPSBfX3AwOyBcCiAgdWludDh4MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hsdXFfbl92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgNDgpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cXNobHVxX25fczgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHgxNl90IF9fczAgPSBfX3AwOyBcCiAgaW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDh4MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hsdXFfbl92KChpbnQ4eDE2X3QpX19yZXYwLCBfX3AxLCA0OCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZxc2hsdXFfbl9zMzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczAgPSBfX3AwOyBcCiAgdWludDMyeDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hsdXFfbl92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgNTApOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cXNobHVxX25fczMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDRfdCBfX3MwID0gX19wMDsgXAogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAzLCAyLCAxLCAwKTsgXAogIHVpbnQzMng0X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92cXNobHVxX25fdigoaW50OHgxNl90KV9fcmV2MCwgX19wMSwgNTApOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cXNobHVxX25fczY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92cXNobHVxX25fdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDUxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFzaGx1cV9uX3M2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgyX3QgX19zMCA9IF9fcDA7IFwKICBpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMSwgMCk7IFwKICB1aW50NjR4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDY0eDJfdCkgX19idWlsdGluX25lb25fdnFzaGx1cV9uX3YoKGludDh4MTZfdClfX3JldjAsIF9fcDEsIDUxKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFzaGx1cV9uX3MxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDE2eDhfdCkgX19idWlsdGluX25lb25fdnFzaGx1cV9uX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCA0OSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZxc2hsdXFfbl9zMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgaW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hsdXFfbl92KChpbnQ4eDE2X3QpX19yZXYwLCBfX3AxLCA0OSk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZxc2hsdV9uX3M4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4OF90IF9fczAgPSBfX3AwOyBcCiAgdWludDh4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92cXNobHVfbl92KChpbnQ4eDhfdClfX3MwLCBfX3AxLCAxNik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZxc2hsdV9uX3M4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4OF90IF9fczAgPSBfX3AwOyBcCiAgaW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50OHg4X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hsdV9uX3YoKGludDh4OF90KV9fcmV2MCwgX19wMSwgMTYpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cXNobHVfbl9zMzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Ml90IF9fczAgPSBfX3AwOyBcCiAgdWludDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hsdV9uX3YoKGludDh4OF90KV9fczAsIF9fcDEsIDE4KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFzaGx1X25fczMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJfdCBfX3MwID0gX19wMDsgXAogIGludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAxLCAwKTsgXAogIHVpbnQzMngyX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cXNobHVfbl92KChpbnQ4eDhfdClfX3JldjAsIF9fcDEsIDE4KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2cXNobHVfbl9zNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4MV90IF9fczAgPSBfX3AwOyBcCiAgdWludDY0eDFfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hsdV9uX3YoKGludDh4OF90KV9fczAsIF9fcDEsIDE5KTsgXAogIF9fcmV0OyBcCn0pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZxc2hsdV9uX3MxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng0X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdnFzaGx1X25fdigoaW50OHg4X3QpX19zMCwgX19wMSwgMTcpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cXNobHVfbl9zMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NF90IF9fczAgPSBfX3AwOyBcCiAgaW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hsdV9uX3YoKGludDh4OF90KV9fcmV2MCwgX19wMSwgMTcpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cXNocm5fbl91MzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDRfdCBfX3MwID0gX19wMDsgXAogIHVpbnQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cXNocm5fbl92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgMTcpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cXNocm5fbl91MzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDRfdCBfX3MwID0gX19wMDsgXAogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMywgMiwgMSwgMCk7IFwKICB1aW50MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdnFzaHJuX25fdigoaW50OHgxNl90KV9fcmV2MCwgX19wMSwgMTcpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF92cXNocm5fbl91MzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDRfdCBfX3MwID0gX19wMDsgXAogIHVpbnQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cXNocm5fbl92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgMTcpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cXNocm5fbl91NjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDJfdCBfX3MwID0gX19wMDsgXAogIHVpbnQzMngyX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cXNocm5fbl92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgMTgpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cXNocm5fbl91NjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDJfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMSwgMCk7IFwKICB1aW50MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdnFzaHJuX25fdigoaW50OHgxNl90KV9fcmV2MCwgX19wMSwgMTgpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF92cXNocm5fbl91NjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDJfdCBfX3MwID0gX19wMDsgXAogIHVpbnQzMngyX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cXNocm5fbl92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgMTgpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cXNocm5fbl91MTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDhfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ4eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnFzaHJuX25fdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDE2KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFzaHJuX25fdTE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng4X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDh4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92cXNocm5fbl92KChpbnQ4eDE2X3QpX19yZXYwLCBfX3AxLCAxNik7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3Zxc2hybl9uX3UxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgdWludDh4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92cXNocm5fbl92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgMTYpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cXNocm5fbl9zMzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczAgPSBfX3AwOyBcCiAgaW50MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cXNocm5fbl92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgMSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZxc2hybl9uX3MzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hybl9uX3YoKGludDh4MTZfdClfX3JldjAsIF9fcDEsIDEpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF92cXNocm5fbl9zMzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczAgPSBfX3AwOyBcCiAgaW50MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cXNocm5fbl92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgMSk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZxc2hybl9uX3M2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgyX3QgX19zMCA9IF9fcDA7IFwKICBpbnQzMngyX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hybl9uX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCAyKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFzaHJuX25fczY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJfdCBfX3MwID0gX19wMDsgXAogIGludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAxLCAwKTsgXAogIGludDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdnFzaHJuX25fdigoaW50OHgxNl90KV9fcmV2MCwgX19wMSwgMik7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3Zxc2hybl9uX3M2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgyX3QgX19zMCA9IF9fcDA7IFwKICBpbnQzMngyX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hybl9uX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCAyKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFzaHJuX25fczE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDhfdCBfX3MwID0gX19wMDsgXAogIGludDh4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hybl9uX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFzaHJuX25fczE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDhfdCBfX3MwID0gX19wMDsgXAogIGludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDh4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hybl9uX3YoKGludDh4MTZfdClfX3JldjAsIF9fcDEsIDApOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF92cXNocm5fbl9zMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgaW50OHg4X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnFzaHJuX25fdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cXNocnVuX25fczMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDRfdCBfX3MwID0gX19wMDsgXAogIHVpbnQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cXNocnVuX25fdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDE3KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFzaHJ1bl9uX3MzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMywgMiwgMSwgMCk7IFwKICB1aW50MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdnFzaHJ1bl9uX3YoKGludDh4MTZfdClfX3JldjAsIF9fcDEsIDE3KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgX19ub3N3YXBfdnFzaHJ1bl9uX3MzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdnFzaHJ1bl9uX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCAxNyk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZxc2hydW5fbl9zNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4Ml90IF9fczAgPSBfX3AwOyBcCiAgdWludDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hydW5fbl92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgMTgpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cXNocnVuX25fczY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJfdCBfX3MwID0gX19wMDsgXAogIGludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAxLCAwKTsgXAogIHVpbnQzMngyX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cXNocnVuX25fdigoaW50OHgxNl90KV9fcmV2MCwgX19wMSwgMTgpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF92cXNocnVuX25fczY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJfdCBfX3MwID0gX19wMDsgXAogIHVpbnQzMngyX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cXNocnVuX25fdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDE4KTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFzaHJ1bl9uX3MxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4X3QgX19zMCA9IF9fcDA7IFwKICB1aW50OHg4X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hydW5fbl92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgMTYpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cXNocnVuX25fczE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDhfdCBfX3MwID0gX19wMDsgXAogIGludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQ4eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnFzaHJ1bl9uX3YoKGludDh4MTZfdClfX3JldjAsIF9fcDEsIDE2KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgX19ub3N3YXBfdnFzaHJ1bl9uX3MxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4X3QgX19zMCA9IF9fcDA7IFwKICB1aW50OHg4X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hydW5fbl92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgMTYpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHgxNl90IHZxc3VicV91OCh1aW50OHgxNl90IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSkgewogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkgX19idWlsdGluX25lb25fdnFzdWJxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDQ4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHgxNl90IHZxc3VicV91OCh1aW50OHgxNl90IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSkgewogIHVpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3Zxc3VicV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNDgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZxc3VicV91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3Zxc3VicV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA1MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2cXN1YnFfdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxKSB7CiAgdWludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdnFzdWJxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA1MCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ2NHgyX3QgdnFzdWJxX3U2NCh1aW50NjR4Ml90IF9fcDAsIHVpbnQ2NHgyX3QgX19wMSkgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkgX19idWlsdGluX25lb25fdnFzdWJxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDUxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50NjR4Ml90IHZxc3VicV91NjQodWludDY0eDJfdCBfX3AwLCB1aW50NjR4Ml90IF9fcDEpIHsKICB1aW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92cXN1YnFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDUxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDhfdCB2cXN1YnFfdTE2KHVpbnQxNng4X3QgX19wMCwgdWludDE2eDhfdCBfX3AxKSB7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92cXN1YnFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNDkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng4X3QgdnFzdWJxX3UxNih1aW50MTZ4OF90IF9fcDAsIHVpbnQxNng4X3QgX19wMSkgewogIHVpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3Zxc3VicV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNDkpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDE2X3QgdnFzdWJxX3M4KGludDh4MTZfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSkgewogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3Zxc3VicV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAzMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OHgxNl90IHZxc3VicV9zOChpbnQ4eDE2X3QgX19wMCwgaW50OHgxNl90IF9fcDEpIHsKICBpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3Zxc3VicV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgMzIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMng0X3QgdnFzdWJxX3MzMihpbnQzMng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEpIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92cXN1YnFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgMzQpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDRfdCB2cXN1YnFfczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkgX19idWlsdGluX25lb25fdnFzdWJxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAzNCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDMyeDRfdCBfX25vc3dhcF92cXN1YnFfczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3Zxc3VicV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAzNCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50NjR4Ml90IHZxc3VicV9zNjQoaW50NjR4Ml90IF9fcDAsIGludDY0eDJfdCBfX3AxKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDJfdCkgX19idWlsdGluX25lb25fdnFzdWJxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDM1KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ2NHgyX3QgdnFzdWJxX3M2NChpbnQ2NHgyX3QgX19wMCwgaW50NjR4Ml90IF9fcDEpIHsKICBpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3Zxc3VicV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgMzUpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng4X3QgdnFzdWJxX3MxNihpbnQxNng4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEpIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92cXN1YnFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgMzMpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDhfdCB2cXN1YnFfczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDhfdCkgX19idWlsdGluX25lb25fdnFzdWJxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAzMyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDE2eDhfdCBfX25vc3dhcF92cXN1YnFfczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3Zxc3VicV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAzMyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4OF90IHZxc3ViX3U4KHVpbnQ4eDhfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3Zxc3ViX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAxNik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4OF90IHZxc3ViX3U4KHVpbnQ4eDhfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIHVpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnFzdWJfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAxNik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMngyX3QgdnFzdWJfdTMyKHVpbnQzMngyX3QgX19wMCwgdWludDMyeDJfdCBfX3AxKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cXN1Yl92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMTgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMngyX3QgdnFzdWJfdTMyKHVpbnQzMngyX3QgX19wMCwgdWludDMyeDJfdCBfX3AxKSB7CiAgdWludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdnFzdWJfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAxOCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCl9fYWkgdWludDY0eDFfdCB2cXN1Yl91NjQodWludDY0eDFfdCBfX3AwLCB1aW50NjR4MV90IF9fcDEpIHsKICB1aW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3Zxc3ViX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAxOSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng0X3QgdnFzdWJfdTE2KHVpbnQxNng0X3QgX19wMCwgdWludDE2eDRfdCBfX3AxKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cXN1Yl92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMTcpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng0X3QgdnFzdWJfdTE2KHVpbnQxNng0X3QgX19wMCwgdWludDE2eDRfdCBfX3AxKSB7CiAgdWludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdnFzdWJfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAxNyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4OF90IHZxc3ViX3M4KGludDh4OF90IF9fcDAsIGludDh4OF90IF9fcDEpIHsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnFzdWJfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4OF90IHZxc3ViX3M4KGludDh4OF90IF9fcDAsIGludDh4OF90IF9fcDEpIHsKICBpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnFzdWJfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4Ml90IHZxc3ViX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEpIHsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cXN1Yl92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4Ml90IHZxc3ViX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEpIHsKICBpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3Zxc3ViX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDMyeDJfdCBfX25vc3dhcF92cXN1Yl9zMzIoaW50MzJ4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxKSB7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdnFzdWJfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDIpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCl9fYWkgaW50NjR4MV90IHZxc3ViX3M2NChpbnQ2NHgxX3QgX19wMCwgaW50NjR4MV90IF9fcDEpIHsKICBpbnQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92cXN1Yl92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDRfdCB2cXN1Yl9zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxKSB7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdnFzdWJfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDRfdCB2cXN1Yl9zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxKSB7CiAgaW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cXN1Yl92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQxNng0X3QgX19ub3N3YXBfdnFzdWJfczE2KGludDE2eDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSkgewogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3Zxc3ViX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4NF90IHZyYWRkaG5fdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cmFkZGhuX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDE3KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4NF90IHZyYWRkaG5fdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxKSB7CiAgdWludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdnJhZGRobl92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgMTcpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MTZ4NF90IF9fbm9zd2FwX3ZyYWRkaG5fdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cmFkZGhuX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDE3KTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4Ml90IHZyYWRkaG5fdTY0KHVpbnQ2NHgyX3QgX19wMCwgdWludDY0eDJfdCBfX3AxKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cmFkZGhuX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDE4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4Ml90IHZyYWRkaG5fdTY0KHVpbnQ2NHgyX3QgX19wMCwgdWludDY0eDJfdCBfX3AxKSB7CiAgdWludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdnJhZGRobl92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgMTgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MzJ4Ml90IF9fbm9zd2FwX3ZyYWRkaG5fdTY0KHVpbnQ2NHgyX3QgX19wMCwgdWludDY0eDJfdCBfX3AxKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cmFkZGhuX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDE4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHg4X3QgdnJhZGRobl91MTYodWludDE2eDhfdCBfX3AwLCB1aW50MTZ4OF90IF9fcDEpIHsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92cmFkZGhuX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDE2KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHg4X3QgdnJhZGRobl91MTYodWludDE2eDhfdCBfX3AwLCB1aW50MTZ4OF90IF9fcDEpIHsKICB1aW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnJhZGRobl92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgMTYpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50OHg4X3QgX19ub3N3YXBfdnJhZGRobl91MTYodWludDE2eDhfdCBfX3AwLCB1aW50MTZ4OF90IF9fcDEpIHsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92cmFkZGhuX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDE2KTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng0X3QgdnJhZGRobl9zMzIoaW50MzJ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxKSB7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdnJhZGRobl92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng0X3QgdnJhZGRobl9zMzIoaW50MzJ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxKSB7CiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cmFkZGhuX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MTZ4NF90IF9fbm9zd2FwX3ZyYWRkaG5fczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZyYWRkaG5fdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4Ml90IHZyYWRkaG5fczY0KGludDY0eDJfdCBfX3AwLCBpbnQ2NHgyX3QgX19wMSkgewogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZyYWRkaG5fdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4Ml90IHZyYWRkaG5fczY0KGludDY0eDJfdCBfX3AwLCBpbnQ2NHgyX3QgX19wMSkgewogIGludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBpbnQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdnJhZGRobl92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgMik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDMyeDJfdCBfX25vc3dhcF92cmFkZGhuX3M2NChpbnQ2NHgyX3QgX19wMCwgaW50NjR4Ml90IF9fcDEpIHsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cmFkZGhuX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDIpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4OF90IHZyYWRkaG5fczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92cmFkZGhuX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4OF90IHZyYWRkaG5fczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZyYWRkaG5fdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQ4eDhfdCBfX25vc3dhcF92cmFkZGhuX3MxNihpbnQxNng4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEpIHsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnJhZGRobl92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZyZWNwZXFfdTMyKHVpbnQzMng0X3QgX19wMCkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdnJlY3BlcV92KChpbnQ4eDE2X3QpX19wMCwgNTApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMng0X3QgdnJlY3BlcV91MzIodWludDMyeDRfdCBfX3AwKSB7CiAgdWludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZyZWNwZXFfdigoaW50OHgxNl90KV9fcmV2MCwgNTApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDRfdCB2cmVjcGVxX2YzMihmbG9hdDMyeDRfdCBfX3AwKSB7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZyZWNwZXFfdigoaW50OHgxNl90KV9fcDAsIDQxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDRfdCB2cmVjcGVxX2YzMihmbG9hdDMyeDRfdCBfX3AwKSB7CiAgZmxvYXQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZyZWNwZXFfdigoaW50OHgxNl90KV9fcmV2MCwgNDEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4Ml90IHZyZWNwZV91MzIodWludDMyeDJfdCBfX3AwKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cmVjcGVfdigoaW50OHg4X3QpX19wMCwgMTgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMngyX3QgdnJlY3BlX3UzMih1aW50MzJ4Ml90IF9fcDApIHsKICB1aW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdnJlY3BlX3YoKGludDh4OF90KV9fcmV2MCwgMTgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDJfdCB2cmVjcGVfZjMyKGZsb2F0MzJ4Ml90IF9fcDApIHsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdnJlY3BlX3YoKGludDh4OF90KV9fcDAsIDkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4Ml90IHZyZWNwZV9mMzIoZmxvYXQzMngyX3QgX19wMCkgewogIGZsb2F0MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cmVjcGVfdigoaW50OHg4X3QpX19yZXYwLCA5KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMng0X3QgdnJlY3BzcV9mMzIoZmxvYXQzMng0X3QgX19wMCwgZmxvYXQzMng0X3QgX19wMSkgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92cmVjcHNxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDQxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDRfdCB2cmVjcHNxX2YzMihmbG9hdDMyeDRfdCBfX3AwLCBmbG9hdDMyeDRfdCBfX3AxKSB7CiAgZmxvYXQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZyZWNwc3FfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDQxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMngyX3QgdnJlY3BzX2YzMihmbG9hdDMyeDJfdCBfX3AwLCBmbG9hdDMyeDJfdCBfX3AxKSB7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZyZWNwc192KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgOSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMngyX3QgdnJlY3BzX2YzMihmbG9hdDMyeDJfdCBfX3AwLCBmbG9hdDMyeDJfdCBfX3AxKSB7CiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZyZWNwc192KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDkpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBwb2x5OHg4X3QgdnJldjE2X3A4KHBvbHk4eDhfdCBfX3AwKSB7CiAgcG9seTh4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCwgMywgMiwgNSwgNCwgNywgNik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgcG9seTh4OF90IHZyZXYxNl9wOChwb2x5OHg4X3QgX19wMCkgewogIHBvbHk4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBwb2x5OHg4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MCwgMSwgMCwgMywgMiwgNSwgNCwgNywgNik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHBvbHk4eDE2X3QgdnJldjE2cV9wOChwb2x5OHgxNl90IF9fcDApIHsKICBwb2x5OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCwgMywgMiwgNSwgNCwgNywgNiwgOSwgOCwgMTEsIDEwLCAxMywgMTIsIDE1LCAxNCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgcG9seTh4MTZfdCB2cmV2MTZxX3A4KHBvbHk4eDE2X3QgX19wMCkgewogIHBvbHk4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTh4MTZfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYwLCAxLCAwLCAzLCAyLCA1LCA0LCA3LCA2LCA5LCA4LCAxMSwgMTAsIDEzLCAxMiwgMTUsIDE0KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4MTZfdCB2cmV2MTZxX3U4KHVpbnQ4eDE2X3QgX19wMCkgewogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwLCAzLCAyLCA1LCA0LCA3LCA2LCA5LCA4LCAxMSwgMTAsIDEzLCAxMiwgMTUsIDE0KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHgxNl90IHZyZXYxNnFfdTgodWludDh4MTZfdCBfX3AwKSB7CiAgdWludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjAsIDEsIDAsIDMsIDIsIDUsIDQsIDcsIDYsIDksIDgsIDExLCAxMCwgMTMsIDEyLCAxNSwgMTQpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDE2X3QgdnJldjE2cV9zOChpbnQ4eDE2X3QgX19wMCkgewogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDAsIDMsIDIsIDUsIDQsIDcsIDYsIDksIDgsIDExLCAxMCwgMTMsIDEyLCAxNSwgMTQpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4MTZfdCB2cmV2MTZxX3M4KGludDh4MTZfdCBfX3AwKSB7CiAgaW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYwLCAxLCAwLCAzLCAyLCA1LCA0LCA3LCA2LCA5LCA4LCAxMSwgMTAsIDEzLCAxMiwgMTUsIDE0KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4OF90IHZyZXYxNl91OCh1aW50OHg4X3QgX19wMCkgewogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDAsIDMsIDIsIDUsIDQsIDcsIDYpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDhfdCB2cmV2MTZfdTgodWludDh4OF90IF9fcDApIHsKICB1aW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjAsIDEsIDAsIDMsIDIsIDUsIDQsIDcsIDYpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDhfdCB2cmV2MTZfczgoaW50OHg4X3QgX19wMCkgewogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCwgMywgMiwgNSwgNCwgNywgNik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OHg4X3QgdnJldjE2X3M4KGludDh4OF90IF9fcDApIHsKICBpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYwLCAxLCAwLCAzLCAyLCA1LCA0LCA3LCA2KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgcG9seTh4OF90IHZyZXYzMl9wOChwb2x5OHg4X3QgX19wMCkgewogIHBvbHk4eDhfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDAsIDcsIDYsIDUsIDQpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHBvbHk4eDhfdCB2cmV2MzJfcDgocG9seTh4OF90IF9fcDApIHsKICBwb2x5OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTh4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjAsIDMsIDIsIDEsIDAsIDcsIDYsIDUsIDQpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBwb2x5MTZ4NF90IHZyZXYzMl9wMTYocG9seTE2eDRfdCBfX3AwKSB7CiAgcG9seTE2eDRfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDAsIDMsIDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHBvbHkxNng0X3QgdnJldjMyX3AxNihwb2x5MTZ4NF90IF9fcDApIHsKICBwb2x5MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHBvbHkxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MCwgMSwgMCwgMywgMik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHBvbHk4eDE2X3QgdnJldjMycV9wOChwb2x5OHgxNl90IF9fcDApIHsKICBwb2x5OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCwgNywgNiwgNSwgNCwgMTEsIDEwLCA5LCA4LCAxNSwgMTQsIDEzLCAxMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgcG9seTh4MTZfdCB2cmV2MzJxX3A4KHBvbHk4eDE2X3QgX19wMCkgewogIHBvbHk4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTh4MTZfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYwLCAzLCAyLCAxLCAwLCA3LCA2LCA1LCA0LCAxMSwgMTAsIDksIDgsIDE1LCAxNCwgMTMsIDEyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgcG9seTE2eDhfdCB2cmV2MzJxX3AxNihwb2x5MTZ4OF90IF9fcDApIHsKICBwb2x5MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCwgMywgMiwgNSwgNCwgNywgNik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgcG9seTE2eDhfdCB2cmV2MzJxX3AxNihwb2x5MTZ4OF90IF9fcDApIHsKICBwb2x5MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHBvbHkxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MCwgMSwgMCwgMywgMiwgNSwgNCwgNywgNik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDE2X3QgdnJldjMycV91OCh1aW50OHgxNl90IF9fcDApIHsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCwgNywgNiwgNSwgNCwgMTEsIDEwLCA5LCA4LCAxNSwgMTQsIDEzLCAxMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4MTZfdCB2cmV2MzJxX3U4KHVpbnQ4eDE2X3QgX19wMCkgewogIHVpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYwLCAzLCAyLCAxLCAwLCA3LCA2LCA1LCA0LCAxMSwgMTAsIDksIDgsIDE1LCAxNCwgMTMsIDEyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDhfdCB2cmV2MzJxX3UxNih1aW50MTZ4OF90IF9fcDApIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCwgMywgMiwgNSwgNCwgNywgNik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDhfdCB2cmV2MzJxX3UxNih1aW50MTZ4OF90IF9fcDApIHsKICB1aW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MCwgMSwgMCwgMywgMiwgNSwgNCwgNywgNik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4MTZfdCB2cmV2MzJxX3M4KGludDh4MTZfdCBfX3AwKSB7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCwgNywgNiwgNSwgNCwgMTEsIDEwLCA5LCA4LCAxNSwgMTQsIDEzLCAxMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OHgxNl90IHZyZXYzMnFfczgoaW50OHgxNl90IF9fcDApIHsKICBpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjAsIDMsIDIsIDEsIDAsIDcsIDYsIDUsIDQsIDExLCAxMCwgOSwgOCwgMTUsIDE0LCAxMywgMTIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng4X3QgdnJldjMycV9zMTYoaW50MTZ4OF90IF9fcDApIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwLCAzLCAyLCA1LCA0LCA3LCA2KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng4X3QgdnJldjMycV9zMTYoaW50MTZ4OF90IF9fcDApIHsKICBpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjAsIDEsIDAsIDMsIDIsIDUsIDQsIDcsIDYpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHg4X3QgdnJldjMyX3U4KHVpbnQ4eDhfdCBfX3AwKSB7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCwgNywgNiwgNSwgNCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4OF90IHZyZXYzMl91OCh1aW50OHg4X3QgX19wMCkgewogIHVpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MCwgMywgMiwgMSwgMCwgNywgNiwgNSwgNCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng0X3QgdnJldjMyX3UxNih1aW50MTZ4NF90IF9fcDApIHsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCwgMywgMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDRfdCB2cmV2MzJfdTE2KHVpbnQxNng0X3QgX19wMCkgewogIHVpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYwLCAxLCAwLCAzLCAyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHg4X3QgdnJldjMyX3M4KGludDh4OF90IF9fcDApIHsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDAsIDcsIDYsIDUsIDQpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4OF90IHZyZXYzMl9zOChpbnQ4eDhfdCBfX3AwKSB7CiAgaW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MCwgMywgMiwgMSwgMCwgNywgNiwgNSwgNCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDRfdCB2cmV2MzJfczE2KGludDE2eDRfdCBfX3AwKSB7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCwgMywgMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4NF90IHZyZXYzMl9zMTYoaW50MTZ4NF90IF9fcDApIHsKICBpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjAsIDEsIDAsIDMsIDIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBwb2x5OHg4X3QgdnJldjY0X3A4KHBvbHk4eDhfdCBfX3AwKSB7CiAgcG9seTh4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgcG9seTh4OF90IHZyZXY2NF9wOChwb2x5OHg4X3QgX19wMCkgewogIHBvbHk4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBwb2x5OHg4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHBvbHkxNng0X3QgdnJldjY0X3AxNihwb2x5MTZ4NF90IF9fcDApIHsKICBwb2x5MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgcG9seTE2eDRfdCB2cmV2NjRfcDE2KHBvbHkxNng0X3QgX19wMCkgewogIHBvbHkxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgcG9seTE2eDRfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYwLCAzLCAyLCAxLCAwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgcG9seTh4MTZfdCB2cmV2NjRxX3A4KHBvbHk4eDE2X3QgX19wMCkgewogIHBvbHk4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBwb2x5OHgxNl90IHZyZXY2NHFfcDgocG9seTh4MTZfdCBfX3AwKSB7CiAgcG9seTh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBwb2x5OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBwb2x5MTZ4OF90IHZyZXY2NHFfcDE2KHBvbHkxNng4X3QgX19wMCkgewogIHBvbHkxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwLCA3LCA2LCA1LCA0KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBwb2x5MTZ4OF90IHZyZXY2NHFfcDE2KHBvbHkxNng4X3QgX19wMCkgewogIHBvbHkxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYwLCAzLCAyLCAxLCAwLCA3LCA2LCA1LCA0KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4MTZfdCB2cmV2NjRxX3U4KHVpbnQ4eDE2X3QgX19wMCkgewogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHgxNl90IHZyZXY2NHFfdTgodWludDh4MTZfdCBfX3AwKSB7CiAgdWludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZyZXY2NHFfdTMyKHVpbnQzMng0X3QgX19wMCkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwLCAzLCAyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4NF90IHZyZXY2NHFfdTMyKHVpbnQzMng0X3QgX19wMCkgewogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYwLCAxLCAwLCAzLCAyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDhfdCB2cmV2NjRxX3UxNih1aW50MTZ4OF90IF9fcDApIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCwgNywgNiwgNSwgNCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDhfdCB2cmV2NjRxX3UxNih1aW50MTZ4OF90IF9fcDApIHsKICB1aW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MCwgMywgMiwgMSwgMCwgNywgNiwgNSwgNCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4MTZfdCB2cmV2NjRxX3M4KGludDh4MTZfdCBfX3AwKSB7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OHgxNl90IHZyZXY2NHFfczgoaW50OHgxNl90IF9fcDApIHsKICBpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDRfdCB2cmV2NjRxX2YzMihmbG9hdDMyeDRfdCBfX3AwKSB7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwLCAzLCAyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDRfdCB2cmV2NjRxX2YzMihmbG9hdDMyeDRfdCBfX3AwKSB7CiAgZmxvYXQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MCwgMSwgMCwgMywgMik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDRfdCB2cmV2NjRxX3MzMihpbnQzMng0X3QgX19wMCkgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDAsIDMsIDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDRfdCB2cmV2NjRxX3MzMihpbnQzMng0X3QgX19wMCkgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MCwgMSwgMCwgMywgMik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDhfdCB2cmV2NjRxX3MxNihpbnQxNng4X3QgX19wMCkgewogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDAsIDcsIDYsIDUsIDQpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDhfdCB2cmV2NjRxX3MxNihpbnQxNng4X3QgX19wMCkgewogIGludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MCwgMywgMiwgMSwgMCwgNywgNiwgNSwgNCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDhfdCB2cmV2NjRfdTgodWludDh4OF90IF9fcDApIHsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHg4X3QgdnJldjY0X3U4KHVpbnQ4eDhfdCBfX3AwKSB7CiAgdWludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDJfdCB2cmV2NjRfdTMyKHVpbnQzMngyX3QgX19wMCkgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4Ml90IHZyZXY2NF91MzIodWludDMyeDJfdCBfX3AwKSB7CiAgdWludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjAsIDEsIDApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4NF90IHZyZXY2NF91MTYodWludDE2eDRfdCBfX3AwKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng0X3QgdnJldjY0X3UxNih1aW50MTZ4NF90IF9fcDApIHsKICB1aW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MCwgMywgMiwgMSwgMCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4OF90IHZyZXY2NF9zOChpbnQ4eDhfdCBfX3AwKSB7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ4eDhfdCB2cmV2NjRfczgoaW50OHg4X3QgX19wMCkgewogIGludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDJfdCB2cmV2NjRfZjMyKGZsb2F0MzJ4Ml90IF9fcDApIHsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4Ml90IHZyZXY2NF9mMzIoZmxvYXQzMngyX3QgX19wMCkgewogIGZsb2F0MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjAsIDEsIDApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMngyX3QgdnJldjY0X3MzMihpbnQzMngyX3QgX19wMCkgewogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDJfdCB2cmV2NjRfczMyKGludDMyeDJfdCBfX3AwKSB7CiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYwLCAxLCAwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZ4NF90IHZyZXY2NF9zMTYoaW50MTZ4NF90IF9fcDApIHsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng0X3QgdnJldjY0X3MxNihpbnQxNng0X3QgX19wMCkgewogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MCwgMywgMiwgMSwgMCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDE2X3QgdnJoYWRkcV91OCh1aW50OHgxNl90IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSkgewogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkgX19idWlsdGluX25lb25fdnJoYWRkcV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA0OCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4MTZfdCB2cmhhZGRxX3U4KHVpbnQ4eDE2X3QgX19wMCwgdWludDh4MTZfdCBfX3AxKSB7CiAgdWludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkgX19idWlsdGluX25lb25fdnJoYWRkcV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNDgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZyaGFkZHFfdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92cmhhZGRxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDUwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4NF90IHZyaGFkZHFfdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxKSB7CiAgdWludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdnJoYWRkcV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNTApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4OF90IHZyaGFkZHFfdTE2KHVpbnQxNng4X3QgX19wMCwgdWludDE2eDhfdCBfX3AxKSB7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92cmhhZGRxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDQ5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4OF90IHZyaGFkZHFfdTE2KHVpbnQxNng4X3QgX19wMCwgdWludDE2eDhfdCBfX3AxKSB7CiAgdWludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkgX19idWlsdGluX25lb25fdnJoYWRkcV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNDkpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDE2X3QgdnJoYWRkcV9zOChpbnQ4eDE2X3QgX19wMCwgaW50OHgxNl90IF9fcDEpIHsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92cmhhZGRxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDMyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ4eDE2X3QgdnJoYWRkcV9zOChpbnQ4eDE2X3QgX19wMCwgaW50OHgxNl90IF9fcDEpIHsKICBpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZyaGFkZHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDMyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4NF90IHZyaGFkZHFfczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZyaGFkZHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgMzQpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDRfdCB2cmhhZGRxX3MzMihpbnQzMng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEpIHsKICBpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZyaGFkZHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDM0KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZ4OF90IHZyaGFkZHFfczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZyaGFkZHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgMzMpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDhfdCB2cmhhZGRxX3MxNihpbnQxNng4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEpIHsKICBpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZyaGFkZHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDMzKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4OF90IHZyaGFkZF91OCh1aW50OHg4X3QgX19wMCwgdWludDh4OF90IF9fcDEpIHsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92cmhhZGRfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDE2KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHg4X3QgdnJoYWRkX3U4KHVpbnQ4eDhfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIHVpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnJoYWRkX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMTYpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4Ml90IHZyaGFkZF91MzIodWludDMyeDJfdCBfX3AwLCB1aW50MzJ4Ml90IF9fcDEpIHsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZyaGFkZF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMTgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMngyX3QgdnJoYWRkX3UzMih1aW50MzJ4Ml90IF9fcDAsIHVpbnQzMngyX3QgX19wMSkgewogIHVpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZyaGFkZF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDE4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDRfdCB2cmhhZGRfdTE2KHVpbnQxNng0X3QgX19wMCwgdWludDE2eDRfdCBfX3AxKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cmhhZGRfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDE3KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4NF90IHZyaGFkZF91MTYodWludDE2eDRfdCBfX3AwLCB1aW50MTZ4NF90IF9fcDEpIHsKICB1aW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cmhhZGRfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAxNyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4OF90IHZyaGFkZF9zOChpbnQ4eDhfdCBfX3AwLCBpbnQ4eDhfdCBfX3AxKSB7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZyaGFkZF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OHg4X3QgdnJoYWRkX3M4KGludDh4OF90IF9fcDAsIGludDh4OF90IF9fcDEpIHsKICBpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnJoYWRkX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDJfdCB2cmhhZGRfczMyKGludDMyeDJfdCBfX3AwLCBpbnQzMngyX3QgX19wMSkgewogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZyaGFkZF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4Ml90IHZyaGFkZF9zMzIoaW50MzJ4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxKSB7CiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cmhhZGRfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZ4NF90IHZyaGFkZF9zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxKSB7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdnJoYWRkX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng0X3QgdnJoYWRkX3MxNihpbnQxNng0X3QgX19wMCwgaW50MTZ4NF90IF9fcDEpIHsKICBpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZyaGFkZF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHgxNl90IHZyc2hscV91OCh1aW50OHgxNl90IF9fcDAsIGludDh4MTZfdCBfX3AxKSB7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92cnNobHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNDgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDE2X3QgdnJzaGxxX3U4KHVpbnQ4eDE2X3QgX19wMCwgaW50OHgxNl90IF9fcDEpIHsKICB1aW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3Zyc2hscV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNDgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZyc2hscV91MzIodWludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdnJzaGxxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDUwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4NF90IHZyc2hscV91MzIodWludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdnJzaGxxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA1MCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ2NHgyX3QgdnJzaGxxX3U2NCh1aW50NjR4Ml90IF9fcDAsIGludDY0eDJfdCBfX3AxKSB7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92cnNobHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNTEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ2NHgyX3QgdnJzaGxxX3U2NCh1aW50NjR4Ml90IF9fcDAsIGludDY0eDJfdCBfX3AxKSB7CiAgdWludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBpbnQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92cnNobHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDUxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDhfdCB2cnNobHFfdTE2KHVpbnQxNng4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEpIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3Zyc2hscV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA0OSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDhfdCB2cnNobHFfdTE2KHVpbnQxNng4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEpIHsKICB1aW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3Zyc2hscV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNDkpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDE2X3QgdnJzaGxxX3M4KGludDh4MTZfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSkgewogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3Zyc2hscV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAzMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OHgxNl90IHZyc2hscV9zOChpbnQ4eDE2X3QgX19wMCwgaW50OHgxNl90IF9fcDEpIHsKICBpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3Zyc2hscV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgMzIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMng0X3QgdnJzaGxxX3MzMihpbnQzMng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEpIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92cnNobHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgMzQpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDRfdCB2cnNobHFfczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkgX19idWlsdGluX25lb25fdnJzaGxxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAzNCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDY0eDJfdCB2cnNobHFfczY0KGludDY0eDJfdCBfX3AwLCBpbnQ2NHgyX3QgX19wMSkgewogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3Zyc2hscV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAzNSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50NjR4Ml90IHZyc2hscV9zNjQoaW50NjR4Ml90IF9fcDAsIGludDY0eDJfdCBfX3AxKSB7CiAgaW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92cnNobHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDM1KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZ4OF90IHZyc2hscV9zMTYoaW50MTZ4OF90IF9fcDAsIGludDE2eDhfdCBfX3AxKSB7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDhfdCkgX19idWlsdGluX25lb25fdnJzaGxxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDMzKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng4X3QgdnJzaGxxX3MxNihpbnQxNng4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEpIHsKICBpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3Zyc2hscV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgMzMpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHg4X3QgdnJzaGxfdTgodWludDh4OF90IF9fcDAsIGludDh4OF90IF9fcDEpIHsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92cnNobF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMTYpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDhfdCB2cnNobF91OCh1aW50OHg4X3QgX19wMCwgaW50OHg4X3QgX19wMSkgewogIHVpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92cnNobF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDE2KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDJfdCB2cnNobF91MzIodWludDMyeDJfdCBfX3AwLCBpbnQzMngyX3QgX19wMSkgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdnJzaGxfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDE4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4Ml90IHZyc2hsX3UzMih1aW50MzJ4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxKSB7CiAgdWludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cnNobF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDE4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKX19haSB1aW50NjR4MV90IHZyc2hsX3U2NCh1aW50NjR4MV90IF9fcDAsIGludDY0eDFfdCBfX3AxKSB7CiAgdWludDY0eDFfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92cnNobF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMTkpOwogIHJldHVybiBfX3JldDsKfQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4NF90IHZyc2hsX3UxNih1aW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cnNobF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMTcpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng0X3QgdnJzaGxfdTE2KHVpbnQxNng0X3QgX19wMCwgaW50MTZ4NF90IF9fcDEpIHsKICB1aW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3Zyc2hsX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMTcpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDhfdCB2cnNobF9zOChpbnQ4eDhfdCBfX3AwLCBpbnQ4eDhfdCBfX3AxKSB7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3Zyc2hsX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ4eDhfdCB2cnNobF9zOChpbnQ4eDhfdCBfX3AwLCBpbnQ4eDhfdCBfX3AxKSB7CiAgaW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3Zyc2hsX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDJfdCB2cnNobF9zMzIoaW50MzJ4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxKSB7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdnJzaGxfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDJfdCB2cnNobF9zMzIoaW50MzJ4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxKSB7CiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cnNobF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgpfX2FpIGludDY0eDFfdCB2cnNobF9zNjQoaW50NjR4MV90IF9fcDAsIGludDY0eDFfdCBfX3AxKSB7CiAgaW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDFfdCkgX19idWlsdGluX25lb25fdnJzaGxfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDMpOwogIHJldHVybiBfX3JldDsKfQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng0X3QgdnJzaGxfczE2KGludDE2eDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSkgewogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3Zyc2hsX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng0X3QgdnJzaGxfczE2KGludDE2eDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSkgewogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdnJzaGxfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnJzaHJxX25fdTgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4MTZfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ4eDE2X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92cnNocnFfbl92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgNDgpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cnNocnFfbl91OChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHgxNl90IF9fczAgPSBfX3AwOyBcCiAgdWludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQ4eDE2X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92cnNocnFfbl92KChpbnQ4eDE2X3QpX19yZXYwLCBfX3AxLCA0OCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZyc2hycV9uX3UzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NF90IF9fczAgPSBfX3AwOyBcCiAgdWludDMyeDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3Zyc2hycV9uX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCA1MCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZyc2hycV9uX3UzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NF90IF9fczAgPSBfX3AwOyBcCiAgdWludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAzLCAyLCAxLCAwKTsgXAogIHVpbnQzMng0X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92cnNocnFfbl92KChpbnQ4eDE2X3QpX19yZXYwLCBfX3AxLCA1MCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZyc2hycV9uX3U2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4Ml90IF9fczAgPSBfX3AwOyBcCiAgdWludDY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3Zyc2hycV9uX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCA1MSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZyc2hycV9uX3U2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4Ml90IF9fczAgPSBfX3AwOyBcCiAgdWludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAxLCAwKTsgXAogIHVpbnQ2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92cnNocnFfbl92KChpbnQ4eDE2X3QpX19yZXYwLCBfX3AxLCA1MSk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZyc2hycV9uX3UxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgdWludDE2eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3Zyc2hycV9uX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCA0OSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZyc2hycV9uX3UxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgdWludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92cnNocnFfbl92KChpbnQ4eDE2X3QpX19yZXYwLCBfX3AxLCA0OSk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZyc2hycV9uX3M4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4MTZfdCBfX3MwID0gX19wMDsgXAogIGludDh4MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDh4MTZfdCkgX19idWlsdGluX25lb25fdnJzaHJxX25fdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDMyKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnJzaHJxX25fczgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHgxNl90IF9fczAgPSBfX3AwOyBcCiAgaW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50OHgxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92cnNocnFfbl92KChpbnQ4eDE2X3QpX19yZXYwLCBfX3AxLCAzMik7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZyc2hycV9uX3MzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQzMng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3Zyc2hycV9uX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCAzNCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZyc2hycV9uX3MzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMywgMiwgMSwgMCk7IFwKICBpbnQzMng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3Zyc2hycV9uX3YoKGludDh4MTZfdClfX3JldjAsIF9fcDEsIDM0KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnJzaHJxX25fczY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJfdCBfX3MwID0gX19wMDsgXAogIGludDY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDY0eDJfdCkgX19idWlsdGluX25lb25fdnJzaHJxX25fdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDM1KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnJzaHJxX25fczY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJfdCBfX3MwID0gX19wMDsgXAogIGludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAxLCAwKTsgXAogIGludDY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDY0eDJfdCkgX19idWlsdGluX25lb25fdnJzaHJxX25fdigoaW50OHgxNl90KV9fcmV2MCwgX19wMSwgMzUpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cnNocnFfbl9zMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgaW50MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92cnNocnFfbl92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgMzMpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cnNocnFfbl9zMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgaW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92cnNocnFfbl92KChpbnQ4eDE2X3QpX19yZXYwLCBfX3AxLCAzMyk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZyc2hyX25fdTgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4OF90IF9fczAgPSBfX3AwOyBcCiAgdWludDh4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92cnNocl9uX3YoKGludDh4OF90KV9fczAsIF9fcDEsIDE2KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnJzaHJfbl91OChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHg4X3QgX19zMCA9IF9fcDA7IFwKICB1aW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50OHg4X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3Zyc2hyX25fdigoaW50OHg4X3QpX19yZXYwLCBfX3AxLCAxNik7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZyc2hyX25fdTMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMngyX3QgX19zMCA9IF9fcDA7IFwKICB1aW50MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdnJzaHJfbl92KChpbnQ4eDhfdClfX3MwLCBfX3AxLCAxOCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZyc2hyX25fdTMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMngyX3QgX19zMCA9IF9fcDA7IFwKICB1aW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDEsIDApOyBcCiAgdWludDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3Zyc2hyX25fdigoaW50OHg4X3QpX19yZXYwLCBfX3AxLCAxOCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNkZWZpbmUgdnJzaHJfbl91NjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDFfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ2NHgxX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92cnNocl9uX3YoKGludDh4OF90KV9fczAsIF9fcDEsIDE5KTsgXAogIF9fcmV0OyBcCn0pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZyc2hyX25fdTE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng0X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdnJzaHJfbl92KChpbnQ4eDhfdClfX3MwLCBfX3AxLCAxNyk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZyc2hyX25fdTE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng0X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3Zyc2hyX25fdigoaW50OHg4X3QpX19yZXYwLCBfX3AxLCAxNyk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZyc2hyX25fczgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHg4X3QgX19zMCA9IF9fcDA7IFwKICBpbnQ4eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92cnNocl9uX3YoKGludDh4OF90KV9fczAsIF9fcDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cnNocl9uX3M4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4OF90IF9fczAgPSBfX3AwOyBcCiAgaW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQ4eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92cnNocl9uX3YoKGludDh4OF90KV9fcmV2MCwgX19wMSwgMCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZyc2hyX25fczMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJfdCBfX3MwID0gX19wMDsgXAogIGludDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdnJzaHJfbl92KChpbnQ4eDhfdClfX3MwLCBfX3AxLCAyKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnJzaHJfbl9zMzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Ml90IF9fczAgPSBfX3AwOyBcCiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDEsIDApOyBcCiAgaW50MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cnNocl9uX3YoKGludDh4OF90KV9fcmV2MCwgX19wMSwgMik7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNkZWZpbmUgdnJzaHJfbl9zNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4MV90IF9fczAgPSBfX3AwOyBcCiAgaW50NjR4MV90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92cnNocl9uX3YoKGludDh4OF90KV9fczAsIF9fcDEsIDMpOyBcCiAgX19yZXQ7IFwKfSkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnJzaHJfbl9zMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NF90IF9fczAgPSBfX3AwOyBcCiAgaW50MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cnNocl9uX3YoKGludDh4OF90KV9fczAsIF9fcDEsIDEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cnNocl9uX3MxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3Zyc2hyX25fdigoaW50OHg4X3QpX19yZXYwLCBfX3AxLCAxKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnJzaHJuX25fdTMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdnJzaHJuX25fdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDE3KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnJzaHJuX25fdTMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3Zyc2hybl9uX3YoKGludDh4MTZfdClfX3JldjAsIF9fcDEsIDE3KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgX19ub3N3YXBfdnJzaHJuX25fdTMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdnJzaHJuX25fdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDE3KTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnJzaHJuX25fdTY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyX3QgX19zMCA9IF9fcDA7IFwKICB1aW50MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdnJzaHJuX25fdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDE4KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnJzaHJuX25fdTY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyX3QgX19zMCA9IF9fcDA7IFwKICB1aW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDEsIDApOyBcCiAgdWludDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3Zyc2hybl9uX3YoKGludDh4MTZfdClfX3JldjAsIF9fcDEsIDE4KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgX19ub3N3YXBfdnJzaHJuX25fdTY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyX3QgX19zMCA9IF9fcDA7IFwKICB1aW50MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdnJzaHJuX25fdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDE4KTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnJzaHJuX25fdTE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng4X3QgX19zMCA9IF9fcDA7IFwKICB1aW50OHg4X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3Zyc2hybl9uX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCAxNik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZyc2hybl9uX3UxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgdWludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQ4eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnJzaHJuX25fdigoaW50OHgxNl90KV9fcmV2MCwgX19wMSwgMTYpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF92cnNocm5fbl91MTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDhfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ4eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnJzaHJuX25fdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDE2KTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnJzaHJuX25fczMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDRfdCBfX3MwID0gX19wMDsgXAogIGludDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdnJzaHJuX25fdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cnNocm5fbl9zMzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczAgPSBfX3AwOyBcCiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cnNocm5fbl92KChpbnQ4eDE2X3QpX19yZXYwLCBfX3AxLCAxKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgX19ub3N3YXBfdnJzaHJuX25fczMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDRfdCBfX3MwID0gX19wMDsgXAogIGludDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdnJzaHJuX25fdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDEpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cnNocm5fbl9zNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4Ml90IF9fczAgPSBfX3AwOyBcCiAgaW50MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cnNocm5fbl92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgMik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZyc2hybl9uX3M2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgyX3QgX19zMCA9IF9fcDA7IFwKICBpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMSwgMCk7IFwKICBpbnQzMngyX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3Zyc2hybl9uX3YoKGludDh4MTZfdClfX3JldjAsIF9fcDEsIDIpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF92cnNocm5fbl9zNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4Ml90IF9fczAgPSBfX3AwOyBcCiAgaW50MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cnNocm5fbl92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgMik7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZyc2hybl9uX3MxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4X3QgX19zMCA9IF9fcDA7IFwKICBpbnQ4eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92cnNocm5fbl92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZyc2hybl9uX3MxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4X3QgX19zMCA9IF9fcDA7IFwKICBpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQ4eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92cnNocm5fbl92KChpbnQ4eDE2X3QpX19yZXYwLCBfX3AxLCAwKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgX19ub3N3YXBfdnJzaHJuX25fczE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDhfdCBfX3MwID0gX19wMDsgXAogIGludDh4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3Zyc2hybl9uX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDRfdCB2cnNxcnRlcV91MzIodWludDMyeDRfdCBfX3AwKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92cnNxcnRlcV92KChpbnQ4eDE2X3QpX19wMCwgNTApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMng0X3QgdnJzcXJ0ZXFfdTMyKHVpbnQzMng0X3QgX19wMCkgewogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92cnNxcnRlcV92KChpbnQ4eDE2X3QpX19yZXYwLCA1MCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4NF90IHZyc3FydGVxX2YzMihmbG9hdDMyeDRfdCBfX3AwKSB7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3Zyc3FydGVxX3YoKGludDh4MTZfdClfX3AwLCA0MSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMng0X3QgdnJzcXJ0ZXFfZjMyKGZsb2F0MzJ4NF90IF9fcDApIHsKICBmbG9hdDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdnJzcXJ0ZXFfdigoaW50OHgxNl90KV9fcmV2MCwgNDEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4Ml90IHZyc3FydGVfdTMyKHVpbnQzMngyX3QgX19wMCkgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdnJzcXJ0ZV92KChpbnQ4eDhfdClfX3AwLCAxOCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDJfdCB2cnNxcnRlX3UzMih1aW50MzJ4Ml90IF9fcDApIHsKICB1aW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdnJzcXJ0ZV92KChpbnQ4eDhfdClfX3JldjAsIDE4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMngyX3QgdnJzcXJ0ZV9mMzIoZmxvYXQzMngyX3QgX19wMCkgewogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cnNxcnRlX3YoKGludDh4OF90KV9fcDAsIDkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4Ml90IHZyc3FydGVfZjMyKGZsb2F0MzJ4Ml90IF9fcDApIHsKICBmbG9hdDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdnJzcXJ0ZV92KChpbnQ4eDhfdClfX3JldjAsIDkpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDRfdCB2cnNxcnRzcV9mMzIoZmxvYXQzMng0X3QgX19wMCwgZmxvYXQzMng0X3QgX19wMSkgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92cnNxcnRzcV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA0MSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMng0X3QgdnJzcXJ0c3FfZjMyKGZsb2F0MzJ4NF90IF9fcDAsIGZsb2F0MzJ4NF90IF9fcDEpIHsKICBmbG9hdDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdnJzcXJ0c3FfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDQxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMngyX3QgdnJzcXJ0c19mMzIoZmxvYXQzMngyX3QgX19wMCwgZmxvYXQzMngyX3QgX19wMSkgewogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cnNxcnRzX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCA5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDJfdCB2cnNxcnRzX2YzMihmbG9hdDMyeDJfdCBfX3AwLCBmbG9hdDMyeDJfdCBfX3AxKSB7CiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3Zyc3FydHNfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCA5KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnJzcmFxX25fdTgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4MTZfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ4eDE2X3QgX19zMSA9IF9fcDE7IFwKICB1aW50OHgxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDh4MTZfdCkgX19idWlsdGluX25lb25fdnJzcmFxX25fdigoaW50OHgxNl90KV9fczAsIChpbnQ4eDE2X3QpX19zMSwgX19wMiwgNDgpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cnNyYXFfbl91OChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHgxNl90IF9fczAgPSBfX3AwOyBcCiAgdWludDh4MTZfdCBfX3MxID0gX19wMTsgXAogIHVpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDh4MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3Zyc3JhcV9uX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCBfX3AyLCA0OCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZyc3JhcV9uX3UzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NF90IF9fczAgPSBfX3AwOyBcCiAgdWludDMyeDRfdCBfX3MxID0gX19wMTsgXAogIHVpbnQzMng0X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92cnNyYXFfbl92KChpbnQ4eDE2X3QpX19zMCwgKGludDh4MTZfdClfX3MxLCBfX3AyLCA1MCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZyc3JhcV9uX3UzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NF90IF9fczAgPSBfX3AwOyBcCiAgdWludDMyeDRfdCBfX3MxID0gX19wMTsgXAogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMywgMiwgMSwgMCk7IFwKICB1aW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDMsIDIsIDEsIDApOyBcCiAgdWludDMyeDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3Zyc3JhcV9uX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCBfX3AyLCA1MCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZyc3JhcV9uX3U2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4Ml90IF9fczAgPSBfX3AwOyBcCiAgdWludDY0eDJfdCBfX3MxID0gX19wMTsgXAogIHVpbnQ2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92cnNyYXFfbl92KChpbnQ4eDE2X3QpX19zMCwgKGludDh4MTZfdClfX3MxLCBfX3AyLCA1MSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZyc3JhcV9uX3U2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4Ml90IF9fczAgPSBfX3AwOyBcCiAgdWludDY0eDJfdCBfX3MxID0gX19wMTsgXAogIHVpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMSwgMCk7IFwKICB1aW50NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDEsIDApOyBcCiAgdWludDY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3Zyc3JhcV9uX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCBfX3AyLCA1MSk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZyc3JhcV9uX3UxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgdWludDE2eDhfdCBfX3MxID0gX19wMTsgXAogIHVpbnQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92cnNyYXFfbl92KChpbnQ4eDE2X3QpX19zMCwgKGludDh4MTZfdClfX3MxLCBfX3AyLCA0OSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZyc3JhcV9uX3UxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgdWludDE2eDhfdCBfX3MxID0gX19wMTsgXAogIHVpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3Zyc3JhcV9uX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCBfX3AyLCA0OSk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZyc3JhcV9uX3M4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4MTZfdCBfX3MwID0gX19wMDsgXAogIGludDh4MTZfdCBfX3MxID0gX19wMTsgXAogIGludDh4MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDh4MTZfdCkgX19idWlsdGluX25lb25fdnJzcmFxX25fdigoaW50OHgxNl90KV9fczAsIChpbnQ4eDE2X3QpX19zMSwgX19wMiwgMzIpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cnNyYXFfbl9zOChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDE2X3QgX19zMCA9IF9fcDA7IFwKICBpbnQ4eDE2X3QgX19zMSA9IF9fcDE7IFwKICBpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQ4eDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3Zyc3JhcV9uX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCBfX3AyLCAzMik7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZyc3JhcV9uX3MzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQzMng0X3QgX19zMSA9IF9fcDE7IFwKICBpbnQzMng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3Zyc3JhcV9uX3YoKGludDh4MTZfdClfX3MwLCAoaW50OHgxNl90KV9fczEsIF9fcDIsIDM0KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnJzcmFxX25fczMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDRfdCBfX3MwID0gX19wMDsgXAogIGludDMyeDRfdCBfX3MxID0gX19wMTsgXAogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDMyeDRfdCkgX19idWlsdGluX25lb25fdnJzcmFxX25fdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIF9fcDIsIDM0KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnJzcmFxX25fczY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJfdCBfX3MwID0gX19wMDsgXAogIGludDY0eDJfdCBfX3MxID0gX19wMTsgXAogIGludDY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDY0eDJfdCkgX19idWlsdGluX25lb25fdnJzcmFxX25fdigoaW50OHgxNl90KV9fczAsIChpbnQ4eDE2X3QpX19zMSwgX19wMiwgMzUpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cnNyYXFfbl9zNjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4Ml90IF9fczAgPSBfX3AwOyBcCiAgaW50NjR4Ml90IF9fczEgPSBfX3AxOyBcCiAgaW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDEsIDApOyBcCiAgaW50NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDEsIDApOyBcCiAgaW50NjR4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92cnNyYXFfbl92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgX19wMiwgMzUpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cnNyYXFfbl9zMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgaW50MTZ4OF90IF9fczEgPSBfX3AxOyBcCiAgaW50MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92cnNyYXFfbl92KChpbnQ4eDE2X3QpX19zMCwgKGludDh4MTZfdClfX3MxLCBfX3AyLCAzMyk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZyc3JhcV9uX3MxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4X3QgX19zMCA9IF9fcDA7IFwKICBpbnQxNng4X3QgX19zMSA9IF9fcDE7IFwKICBpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3Zyc3JhcV9uX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCBfX3AyLCAzMyk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZyc3JhX25fdTgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4OF90IF9fczAgPSBfX3AwOyBcCiAgdWludDh4OF90IF9fczEgPSBfX3AxOyBcCiAgdWludDh4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92cnNyYV9uX3YoKGludDh4OF90KV9fczAsIChpbnQ4eDhfdClfX3MxLCBfX3AyLCAxNik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZyc3JhX25fdTgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4OF90IF9fczAgPSBfX3AwOyBcCiAgdWludDh4OF90IF9fczEgPSBfX3AxOyBcCiAgdWludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDh4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92cnNyYV9uX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgX19wMiwgMTYpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cnNyYV9uX3UzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4Ml90IF9fczAgPSBfX3AwOyBcCiAgdWludDMyeDJfdCBfX3MxID0gX19wMTsgXAogIHVpbnQzMngyX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cnNyYV9uX3YoKGludDh4OF90KV9fczAsIChpbnQ4eDhfdClfX3MxLCBfX3AyLCAxOCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZyc3JhX25fdTMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMngyX3QgX19zMCA9IF9fcDA7IFwKICB1aW50MzJ4Ml90IF9fczEgPSBfX3AxOyBcCiAgdWludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAxLCAwKTsgXAogIHVpbnQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMSwgMCk7IFwKICB1aW50MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdnJzcmFfbl92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIF9fcDIsIDE4KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2cnNyYV9uX3U2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4MV90IF9fczAgPSBfX3AwOyBcCiAgdWludDY0eDFfdCBfX3MxID0gX19wMTsgXAogIHVpbnQ2NHgxX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92cnNyYV9uX3YoKGludDh4OF90KV9fczAsIChpbnQ4eDhfdClfX3MxLCBfX3AyLCAxOSk7IFwKICBfX3JldDsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cnNyYV9uX3UxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4NF90IF9fczAgPSBfX3AwOyBcCiAgdWludDE2eDRfdCBfX3MxID0gX19wMTsgXAogIHVpbnQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cnNyYV9uX3YoKGludDh4OF90KV9fczAsIChpbnQ4eDhfdClfX3MxLCBfX3AyLCAxNyk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZyc3JhX25fdTE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng0X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MTZ4NF90IF9fczEgPSBfX3AxOyBcCiAgdWludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAzLCAyLCAxLCAwKTsgXAogIHVpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMywgMiwgMSwgMCk7IFwKICB1aW50MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdnJzcmFfbl92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIF9fcDIsIDE3KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnJzcmFfbl9zOChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDhfdCBfX3MwID0gX19wMDsgXAogIGludDh4OF90IF9fczEgPSBfX3AxOyBcCiAgaW50OHg4X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnJzcmFfbl92KChpbnQ4eDhfdClfX3MwLCAoaW50OHg4X3QpX19zMSwgX19wMiwgMCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZyc3JhX25fczgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHg4X3QgX19zMCA9IF9fcDA7IFwKICBpbnQ4eDhfdCBfX3MxID0gX19wMTsgXAogIGludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQ4eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92cnNyYV9uX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgX19wMiwgMCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZyc3JhX25fczMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJfdCBfX3MwID0gX19wMDsgXAogIGludDMyeDJfdCBfX3MxID0gX19wMTsgXAogIGludDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdnJzcmFfbl92KChpbnQ4eDhfdClfX3MwLCAoaW50OHg4X3QpX19zMSwgX19wMiwgMik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZyc3JhX25fczMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJfdCBfX3MwID0gX19wMDsgXAogIGludDMyeDJfdCBfX3MxID0gX19wMTsgXAogIGludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAxLCAwKTsgXAogIGludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAxLCAwKTsgXAogIGludDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdnJzcmFfbl92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIF9fcDIsIDIpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojZGVmaW5lIHZyc3JhX25fczY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDFfdCBfX3MwID0gX19wMDsgXAogIGludDY0eDFfdCBfX3MxID0gX19wMTsgXAogIGludDY0eDFfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDY0eDFfdCkgX19idWlsdGluX25lb25fdnJzcmFfbl92KChpbnQ4eDhfdClfX3MwLCAoaW50OHg4X3QpX19zMSwgX19wMiwgMyk7IFwKICBfX3JldDsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cnNyYV9uX3MxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQxNng0X3QgX19zMSA9IF9fcDE7IFwKICBpbnQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3Zyc3JhX25fdigoaW50OHg4X3QpX19zMCwgKGludDh4OF90KV9fczEsIF9fcDIsIDEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cnNyYV9uX3MxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQxNng0X3QgX19zMSA9IF9fcDE7IFwKICBpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3Zyc3JhX25fdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCBfX3AyLCAxKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDRfdCB2cnN1YmhuX3UzMih1aW50MzJ4NF90IF9fcDAsIHVpbnQzMng0X3QgX19wMSkgewogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdnJzdWJobl92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAxNyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDRfdCB2cnN1YmhuX3UzMih1aW50MzJ4NF90IF9fcDAsIHVpbnQzMng0X3QgX19wMSkgewogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3Zyc3ViaG5fdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDE3KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDE2eDRfdCBfX25vc3dhcF92cnN1YmhuX3UzMih1aW50MzJ4NF90IF9fcDAsIHVpbnQzMng0X3QgX19wMSkgewogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdnJzdWJobl92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAxNyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDJfdCB2cnN1YmhuX3U2NCh1aW50NjR4Ml90IF9fcDAsIHVpbnQ2NHgyX3QgX19wMSkgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdnJzdWJobl92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAxOCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDJfdCB2cnN1YmhuX3U2NCh1aW50NjR4Ml90IF9fcDAsIHVpbnQ2NHgyX3QgX19wMSkgewogIHVpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3Zyc3ViaG5fdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDE4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDMyeDJfdCBfX25vc3dhcF92cnN1YmhuX3U2NCh1aW50NjR4Ml90IF9fcDAsIHVpbnQ2NHgyX3QgX19wMSkgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdnJzdWJobl92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAxOCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4OF90IHZyc3ViaG5fdTE2KHVpbnQxNng4X3QgX19wMCwgdWludDE2eDhfdCBfX3AxKSB7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnJzdWJobl92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAxNik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4OF90IHZyc3ViaG5fdTE2KHVpbnQxNng4X3QgX19wMCwgdWludDE2eDhfdCBfX3AxKSB7CiAgdWludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3Zyc3ViaG5fdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDE2KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDh4OF90IF9fbm9zd2FwX3Zyc3ViaG5fdTE2KHVpbnQxNng4X3QgX19wMCwgdWludDE2eDhfdCBfX3AxKSB7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnJzdWJobl92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAxNik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZ4NF90IHZyc3ViaG5fczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3Zyc3ViaG5fdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4NF90IHZyc3ViaG5fczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdnJzdWJobl92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgMSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDE2eDRfdCBfX25vc3dhcF92cnN1YmhuX3MzMihpbnQzMng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEpIHsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cnN1YmhuX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDEpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDJfdCB2cnN1YmhuX3M2NChpbnQ2NHgyX3QgX19wMCwgaW50NjR4Ml90IF9fcDEpIHsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cnN1YmhuX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDJfdCB2cnN1YmhuX3M2NChpbnQ2NHgyX3QgX19wMCwgaW50NjR4Ml90IF9fcDEpIHsKICBpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3Zyc3ViaG5fdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQzMngyX3QgX19ub3N3YXBfdnJzdWJobl9zNjQoaW50NjR4Ml90IF9fcDAsIGludDY0eDJfdCBfX3AxKSB7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdnJzdWJobl92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDhfdCB2cnN1YmhuX3MxNihpbnQxNng4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEpIHsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnJzdWJobl92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ4eDhfdCB2cnN1YmhuX3MxNihpbnQxNng4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEpIHsKICBpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92cnN1YmhuX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50OHg4X3QgX19ub3N3YXBfdnJzdWJobl9zMTYoaW50MTZ4OF90IF9fcDAsIGludDE2eDhfdCBfX3AxKSB7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3Zyc3ViaG5fdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNldF9sYW5lX3A4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4X3QgX19zMCA9IF9fcDA7IFwKICBwb2x5OHg4X3QgX19zMSA9IF9fcDE7IFwKICBwb2x5OHg4X3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZzZXRfbGFuZV9pOChfX3MwLCAocG9seTh4OF90KV9fczEsIF9fcDIpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c2V0X2xhbmVfcDgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seThfdCBfX3MwID0gX19wMDsgXAogIHBvbHk4eDhfdCBfX3MxID0gX19wMTsgXAogIHBvbHk4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHBvbHk4eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHBvbHk4eDhfdCkgX19idWlsdGluX25lb25fdnNldF9sYW5lX2k4KF9fczAsIChwb2x5OHg4X3QpX19yZXYxLCBfX3AyKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgX19ub3N3YXBfdnNldF9sYW5lX3A4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4X3QgX19zMCA9IF9fcDA7IFwKICBwb2x5OHg4X3QgX19zMSA9IF9fcDE7IFwKICBwb2x5OHg4X3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZzZXRfbGFuZV9pOChfX3MwLCAocG9seTh4OF90KV9fczEsIF9fcDIpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c2V0X2xhbmVfcDE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNl90IF9fczAgPSBfX3AwOyBcCiAgcG9seTE2eDRfdCBfX3MxID0gX19wMTsgXAogIHBvbHkxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92c2V0X2xhbmVfaTE2KF9fczAsIChwb2x5MTZ4NF90KV9fczEsIF9fcDIpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c2V0X2xhbmVfcDE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNl90IF9fczAgPSBfX3AwOyBcCiAgcG9seTE2eDRfdCBfX3MxID0gX19wMTsgXAogIHBvbHkxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMywgMiwgMSwgMCk7IFwKICBwb2x5MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAocG9seTE2eDRfdCkgX19idWlsdGluX25lb25fdnNldF9sYW5lX2kxNihfX3MwLCAocG9seTE2eDRfdClfX3JldjEsIF9fcDIpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF92c2V0X2xhbmVfcDE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNl90IF9fczAgPSBfX3AwOyBcCiAgcG9seTE2eDRfdCBfX3MxID0gX19wMTsgXAogIHBvbHkxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92c2V0X2xhbmVfaTE2KF9fczAsIChwb2x5MTZ4NF90KV9fczEsIF9fcDIpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c2V0cV9sYW5lX3A4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4X3QgX19zMCA9IF9fcDA7IFwKICBwb2x5OHgxNl90IF9fczEgPSBfX3AxOyBcCiAgcG9seTh4MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKHBvbHk4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZzZXRxX2xhbmVfaTgoX19zMCwgKHBvbHk4eDE2X3QpX19zMSwgX19wMik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZzZXRxX2xhbmVfcDgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seThfdCBfX3MwID0gX19wMDsgXAogIHBvbHk4eDE2X3QgX19zMSA9IF9fcDE7IFwKICBwb2x5OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgcG9seTh4MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKHBvbHk4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZzZXRxX2xhbmVfaTgoX19zMCwgKHBvbHk4eDE2X3QpX19yZXYxLCBfX3AyKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgX19ub3N3YXBfdnNldHFfbGFuZV9wOChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OF90IF9fczAgPSBfX3AwOyBcCiAgcG9seTh4MTZfdCBfX3MxID0gX19wMTsgXAogIHBvbHk4eDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92c2V0cV9sYW5lX2k4KF9fczAsIChwb2x5OHgxNl90KV9fczEsIF9fcDIpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c2V0cV9sYW5lX3AxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZfdCBfX3MwID0gX19wMDsgXAogIHBvbHkxNng4X3QgX19zMSA9IF9fcDE7IFwKICBwb2x5MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAocG9seTE2eDhfdCkgX19idWlsdGluX25lb25fdnNldHFfbGFuZV9pMTYoX19zMCwgKHBvbHkxNng4X3QpX19zMSwgX19wMik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZzZXRxX2xhbmVfcDE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNl90IF9fczAgPSBfX3AwOyBcCiAgcG9seTE2eDhfdCBfX3MxID0gX19wMTsgXAogIHBvbHkxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBwb2x5MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAocG9seTE2eDhfdCkgX19idWlsdGluX25lb25fdnNldHFfbGFuZV9pMTYoX19zMCwgKHBvbHkxNng4X3QpX19yZXYxLCBfX3AyKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgX19ub3N3YXBfdnNldHFfbGFuZV9wMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2X3QgX19zMCA9IF9fcDA7IFwKICBwb2x5MTZ4OF90IF9fczEgPSBfX3AxOyBcCiAgcG9seTE2eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHBvbHkxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZzZXRxX2xhbmVfaTE2KF9fczAsIChwb2x5MTZ4OF90KV9fczEsIF9fcDIpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c2V0cV9sYW5lX3U4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4X3QgX19zMCA9IF9fcDA7IFwKICB1aW50OHgxNl90IF9fczEgPSBfX3AxOyBcCiAgdWludDh4MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZzZXRxX2xhbmVfaTgoX19zMCwgKGludDh4MTZfdClfX3MxLCBfX3AyKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNldHFfbGFuZV91OChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OF90IF9fczAgPSBfX3AwOyBcCiAgdWludDh4MTZfdCBfX3MxID0gX19wMTsgXAogIHVpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50OHgxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDh4MTZfdCkgX19idWlsdGluX25lb25fdnNldHFfbGFuZV9pOChfX3MwLCAoaW50OHgxNl90KV9fcmV2MSwgX19wMik7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3ZzZXRxX2xhbmVfdTgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDhfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ4eDE2X3QgX19zMSA9IF9fcDE7IFwKICB1aW50OHgxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDh4MTZfdCkgX19idWlsdGluX25lb25fdnNldHFfbGFuZV9pOChfX3MwLCAoaW50OHgxNl90KV9fczEsIF9fcDIpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c2V0cV9sYW5lX3UzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJfdCBfX3MwID0gX19wMDsgXAogIHVpbnQzMng0X3QgX19zMSA9IF9fcDE7IFwKICB1aW50MzJ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdnNldHFfbGFuZV9pMzIoX19zMCwgKGludDMyeDRfdClfX3MxLCBfX3AyKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNldHFfbGFuZV91MzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyX3QgX19zMCA9IF9fcDA7IFwKICB1aW50MzJ4NF90IF9fczEgPSBfX3AxOyBcCiAgdWludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAzLCAyLCAxLCAwKTsgXAogIHVpbnQzMng0X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92c2V0cV9sYW5lX2kzMihfX3MwLCAoaW50MzJ4NF90KV9fcmV2MSwgX19wMik7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3ZzZXRxX2xhbmVfdTMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMl90IF9fczAgPSBfX3AwOyBcCiAgdWludDMyeDRfdCBfX3MxID0gX19wMTsgXAogIHVpbnQzMng0X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92c2V0cV9sYW5lX2kzMihfX3MwLCAoaW50MzJ4NF90KV9fczEsIF9fcDIpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c2V0cV9sYW5lX3U2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjRfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ2NHgyX3QgX19zMSA9IF9fcDE7IFwKICB1aW50NjR4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDY0eDJfdCkgX19idWlsdGluX25lb25fdnNldHFfbGFuZV9pNjQoX19zMCwgKGludDY0eDJfdClfX3MxLCBfX3AyKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNldHFfbGFuZV91NjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0X3QgX19zMCA9IF9fcDA7IFwKICB1aW50NjR4Ml90IF9fczEgPSBfX3AxOyBcCiAgdWludDY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAxLCAwKTsgXAogIHVpbnQ2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92c2V0cV9sYW5lX2k2NChfX3MwLCAoaW50NjR4Ml90KV9fcmV2MSwgX19wMik7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3ZzZXRxX2xhbmVfdTY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NF90IF9fczAgPSBfX3AwOyBcCiAgdWludDY0eDJfdCBfX3MxID0gX19wMTsgXAogIHVpbnQ2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92c2V0cV9sYW5lX2k2NChfX3MwLCAoaW50NjR4Ml90KV9fczEsIF9fcDIpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c2V0cV9sYW5lX3UxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZfdCBfX3MwID0gX19wMDsgXAogIHVpbnQxNng4X3QgX19zMSA9IF9fcDE7IFwKICB1aW50MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDE2eDhfdCkgX19idWlsdGluX25lb25fdnNldHFfbGFuZV9pMTYoX19zMCwgKGludDE2eDhfdClfX3MxLCBfX3AyKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNldHFfbGFuZV91MTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MTZ4OF90IF9fczEgPSBfX3AxOyBcCiAgdWludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92c2V0cV9sYW5lX2kxNihfX3MwLCAoaW50MTZ4OF90KV9fcmV2MSwgX19wMik7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3ZzZXRxX2xhbmVfdTE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNl90IF9fczAgPSBfX3AwOyBcCiAgdWludDE2eDhfdCBfX3MxID0gX19wMTsgXAogIHVpbnQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92c2V0cV9sYW5lX2kxNihfX3MwLCAoaW50MTZ4OF90KV9fczEsIF9fcDIpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c2V0cV9sYW5lX3M4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDhfdCBfX3MwID0gX19wMDsgXAogIGludDh4MTZfdCBfX3MxID0gX19wMTsgXAogIGludDh4MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDh4MTZfdCkgX19idWlsdGluX25lb25fdnNldHFfbGFuZV9pOChfX3MwLCAoaW50OHgxNl90KV9fczEsIF9fcDIpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c2V0cV9sYW5lX3M4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDhfdCBfX3MwID0gX19wMDsgXAogIGludDh4MTZfdCBfX3MxID0gX19wMTsgXAogIGludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDh4MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDh4MTZfdCkgX19idWlsdGluX25lb25fdnNldHFfbGFuZV9pOChfX3MwLCAoaW50OHgxNl90KV9fcmV2MSwgX19wMik7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3ZzZXRxX2xhbmVfczgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OF90IF9fczAgPSBfX3AwOyBcCiAgaW50OHgxNl90IF9fczEgPSBfX3AxOyBcCiAgaW50OHgxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92c2V0cV9sYW5lX2k4KF9fczAsIChpbnQ4eDE2X3QpX19zMSwgX19wMik7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzZXRxX2xhbmVfZjMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MzJ4NF90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQzMng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdnNldHFfbGFuZV9mMzIoX19zMCwgKGZsb2F0MzJ4NF90KV9fczEsIF9fcDIpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c2V0cV9sYW5lX2YzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyX3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDMyeDRfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQzMng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdnNldHFfbGFuZV9mMzIoX19zMCwgKGZsb2F0MzJ4NF90KV9fcmV2MSwgX19wMik7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3ZzZXRxX2xhbmVfZjMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MzJ4NF90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQzMng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdnNldHFfbGFuZV9mMzIoX19zMCwgKGZsb2F0MzJ4NF90KV9fczEsIF9fcDIpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c2V0cV9sYW5lX3MzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMl90IF9fczAgPSBfX3AwOyBcCiAgaW50MzJ4NF90IF9fczEgPSBfX3AxOyBcCiAgaW50MzJ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92c2V0cV9sYW5lX2kzMihfX3MwLCAoaW50MzJ4NF90KV9fczEsIF9fcDIpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c2V0cV9sYW5lX3MzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMl90IF9fczAgPSBfX3AwOyBcCiAgaW50MzJ4NF90IF9fczEgPSBfX3AxOyBcCiAgaW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDMsIDIsIDEsIDApOyBcCiAgaW50MzJ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92c2V0cV9sYW5lX2kzMihfX3MwLCAoaW50MzJ4NF90KV9fcmV2MSwgX19wMik7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3ZzZXRxX2xhbmVfczMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyX3QgX19zMCA9IF9fcDA7IFwKICBpbnQzMng0X3QgX19zMSA9IF9fcDE7IFwKICBpbnQzMng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzZXRxX2xhbmVfaTMyKF9fczAsIChpbnQzMng0X3QpX19zMSwgX19wMik7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzZXRxX2xhbmVfczY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQ2NHgyX3QgX19zMSA9IF9fcDE7IFwKICBpbnQ2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZzZXRxX2xhbmVfaTY0KF9fczAsIChpbnQ2NHgyX3QpX19zMSwgX19wMik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZzZXRxX2xhbmVfczY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQ2NHgyX3QgX19zMSA9IF9fcDE7IFwKICBpbnQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMSwgMCk7IFwKICBpbnQ2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZzZXRxX2xhbmVfaTY0KF9fczAsIChpbnQ2NHgyX3QpX19yZXYxLCBfX3AyKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgX19ub3N3YXBfdnNldHFfbGFuZV9zNjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjRfdCBfX3MwID0gX19wMDsgXAogIGludDY0eDJfdCBfX3MxID0gX19wMTsgXAogIGludDY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDY0eDJfdCkgX19idWlsdGluX25lb25fdnNldHFfbGFuZV9pNjQoX19zMCwgKGludDY0eDJfdClfX3MxLCBfX3AyKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNldHFfbGFuZV9zMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZfdCBfX3MwID0gX19wMDsgXAogIGludDE2eDhfdCBfX3MxID0gX19wMTsgXAogIGludDE2eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDE2eDhfdCkgX19idWlsdGluX25lb25fdnNldHFfbGFuZV9pMTYoX19zMCwgKGludDE2eDhfdClfX3MxLCBfX3AyKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNldHFfbGFuZV9zMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZfdCBfX3MwID0gX19wMDsgXAogIGludDE2eDhfdCBfX3MxID0gX19wMTsgXAogIGludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDE2eDhfdCkgX19idWlsdGluX25lb25fdnNldHFfbGFuZV9pMTYoX19zMCwgKGludDE2eDhfdClfX3JldjEsIF9fcDIpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF92c2V0cV9sYW5lX3MxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNl90IF9fczAgPSBfX3AwOyBcCiAgaW50MTZ4OF90IF9fczEgPSBfX3AxOyBcCiAgaW50MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92c2V0cV9sYW5lX2kxNihfX3MwLCAoaW50MTZ4OF90KV9fczEsIF9fcDIpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c2V0X2xhbmVfdTgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDhfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ4eDhfdCBfX3MxID0gX19wMTsgXAogIHVpbnQ4eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnNldF9sYW5lX2k4KF9fczAsIChpbnQ4eDhfdClfX3MxLCBfX3AyKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNldF9sYW5lX3U4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4X3QgX19zMCA9IF9fcDA7IFwKICB1aW50OHg4X3QgX19zMSA9IF9fcDE7IFwKICB1aW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50OHg4X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZzZXRfbGFuZV9pOChfX3MwLCAoaW50OHg4X3QpX19yZXYxLCBfX3AyKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgX19ub3N3YXBfdnNldF9sYW5lX3U4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4X3QgX19zMCA9IF9fcDA7IFwKICB1aW50OHg4X3QgX19zMSA9IF9fcDE7IFwKICB1aW50OHg4X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZzZXRfbGFuZV9pOChfX3MwLCAoaW50OHg4X3QpX19zMSwgX19wMik7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzZXRfbGFuZV91MzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyX3QgX19zMCA9IF9fcDA7IFwKICB1aW50MzJ4Ml90IF9fczEgPSBfX3AxOyBcCiAgdWludDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZzZXRfbGFuZV9pMzIoX19zMCwgKGludDMyeDJfdClfX3MxLCBfX3AyKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNldF9sYW5lX3UzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJfdCBfX3MwID0gX19wMDsgXAogIHVpbnQzMngyX3QgX19zMSA9IF9fcDE7IFwKICB1aW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDEsIDApOyBcCiAgdWludDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZzZXRfbGFuZV9pMzIoX19zMCwgKGludDMyeDJfdClfX3JldjEsIF9fcDIpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF92c2V0X2xhbmVfdTMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMl90IF9fczAgPSBfX3AwOyBcCiAgdWludDMyeDJfdCBfX3MxID0gX19wMTsgXAogIHVpbnQzMngyX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92c2V0X2xhbmVfaTMyKF9fczAsIChpbnQzMngyX3QpX19zMSwgX19wMik7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNkZWZpbmUgdnNldF9sYW5lX3U2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjRfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ2NHgxX3QgX19zMSA9IF9fcDE7IFwKICB1aW50NjR4MV90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDY0eDFfdCkgX19idWlsdGluX25lb25fdnNldF9sYW5lX2k2NChfX3MwLCAoaW50NjR4MV90KV9fczEsIF9fcDIpOyBcCiAgX19yZXQ7IFwKfSkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNldF9sYW5lX3UxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZfdCBfX3MwID0gX19wMDsgXAogIHVpbnQxNng0X3QgX19zMSA9IF9fcDE7IFwKICB1aW50MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdnNldF9sYW5lX2kxNihfX3MwLCAoaW50MTZ4NF90KV9fczEsIF9fcDIpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c2V0X2xhbmVfdTE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNl90IF9fczAgPSBfX3AwOyBcCiAgdWludDE2eDRfdCBfX3MxID0gX19wMTsgXAogIHVpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMywgMiwgMSwgMCk7IFwKICB1aW50MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdnNldF9sYW5lX2kxNihfX3MwLCAoaW50MTZ4NF90KV9fcmV2MSwgX19wMik7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3ZzZXRfbGFuZV91MTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MTZ4NF90IF9fczEgPSBfX3AxOyBcCiAgdWludDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzZXRfbGFuZV9pMTYoX19zMCwgKGludDE2eDRfdClfX3MxLCBfX3AyKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNldF9sYW5lX3M4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDhfdCBfX3MwID0gX19wMDsgXAogIGludDh4OF90IF9fczEgPSBfX3AxOyBcCiAgaW50OHg4X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnNldF9sYW5lX2k4KF9fczAsIChpbnQ4eDhfdClfX3MxLCBfX3AyKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNldF9sYW5lX3M4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDhfdCBfX3MwID0gX19wMDsgXAogIGludDh4OF90IF9fczEgPSBfX3AxOyBcCiAgaW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQ4eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92c2V0X2xhbmVfaTgoX19zMCwgKGludDh4OF90KV9fcmV2MSwgX19wMik7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3ZzZXRfbGFuZV9zOChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4X3QgX19zMCA9IF9fcDA7IFwKICBpbnQ4eDhfdCBfX3MxID0gX19wMTsgXAogIGludDh4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZzZXRfbGFuZV9pOChfX3MwLCAoaW50OHg4X3QpX19zMSwgX19wMik7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzZXRfbGFuZV9mMzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMl90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQzMngyX3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92c2V0X2xhbmVfZjMyKF9fczAsIChmbG9hdDMyeDJfdClfX3MxLCBfX3AyKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNldF9sYW5lX2YzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyX3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDMyeDJfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDEsIDApOyBcCiAgZmxvYXQzMngyX3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdnNldF9sYW5lX2YzMihfX3MwLCAoZmxvYXQzMngyX3QpX19yZXYxLCBfX3AyKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgX19ub3N3YXBfdnNldF9sYW5lX2YzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyX3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDMyeDJfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZzZXRfbGFuZV9mMzIoX19zMCwgKGZsb2F0MzJ4Ml90KV9fczEsIF9fcDIpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c2V0X2xhbmVfczMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyX3QgX19zMCA9IF9fcDA7IFwKICBpbnQzMngyX3QgX19zMSA9IF9fcDE7IFwKICBpbnQzMngyX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZzZXRfbGFuZV9pMzIoX19zMCwgKGludDMyeDJfdClfX3MxLCBfX3AyKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNldF9sYW5lX3MzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMl90IF9fczAgPSBfX3AwOyBcCiAgaW50MzJ4Ml90IF9fczEgPSBfX3AxOyBcCiAgaW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDEsIDApOyBcCiAgaW50MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92c2V0X2xhbmVfaTMyKF9fczAsIChpbnQzMngyX3QpX19yZXYxLCBfX3AyKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgX19ub3N3YXBfdnNldF9sYW5lX3MzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMl90IF9fczAgPSBfX3AwOyBcCiAgaW50MzJ4Ml90IF9fczEgPSBfX3AxOyBcCiAgaW50MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92c2V0X2xhbmVfaTMyKF9fczAsIChpbnQzMngyX3QpX19zMSwgX19wMik7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNkZWZpbmUgdnNldF9sYW5lX3M2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NF90IF9fczAgPSBfX3AwOyBcCiAgaW50NjR4MV90IF9fczEgPSBfX3AxOyBcCiAgaW50NjR4MV90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92c2V0X2xhbmVfaTY0KF9fczAsIChpbnQ2NHgxX3QpX19zMSwgX19wMik7IFwKICBfX3JldDsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c2V0X2xhbmVfczE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2X3QgX19zMCA9IF9fcDA7IFwKICBpbnQxNng0X3QgX19zMSA9IF9fcDE7IFwKICBpbnQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzZXRfbGFuZV9pMTYoX19zMCwgKGludDE2eDRfdClfX3MxLCBfX3AyKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNldF9sYW5lX3MxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNl90IF9fczAgPSBfX3AwOyBcCiAgaW50MTZ4NF90IF9fczEgPSBfX3AxOyBcCiAgaW50MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92c2V0X2xhbmVfaTE2KF9fczAsIChpbnQxNng0X3QpX19yZXYxLCBfX3AyKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgX19ub3N3YXBfdnNldF9sYW5lX3MxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNl90IF9fczAgPSBfX3AwOyBcCiAgaW50MTZ4NF90IF9fczEgPSBfX3AxOyBcCiAgaW50MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92c2V0X2xhbmVfaTE2KF9fczAsIChpbnQxNng0X3QpX19zMSwgX19wMik7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDE2X3QgdnNobHFfdTgodWludDh4MTZfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSkgewogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkgX19idWlsdGluX25lb25fdnNobHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNDgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDE2X3QgdnNobHFfdTgodWludDh4MTZfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSkgewogIHVpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkgX19idWlsdGluX25lb25fdnNobHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDQ4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDRfdCB2c2hscV91MzIodWludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdnNobHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNTApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMng0X3QgdnNobHFfdTMyKHVpbnQzMng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzaGxxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA1MCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ2NHgyX3QgdnNobHFfdTY0KHVpbnQ2NHgyX3QgX19wMCwgaW50NjR4Ml90IF9fcDEpIHsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZzaGxxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDUxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50NjR4Ml90IHZzaGxxX3U2NCh1aW50NjR4Ml90IF9fcDAsIGludDY0eDJfdCBfX3AxKSB7CiAgdWludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBpbnQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92c2hscV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNTEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4OF90IHZzaGxxX3UxNih1aW50MTZ4OF90IF9fcDAsIGludDE2eDhfdCBfX3AxKSB7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92c2hscV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA0OSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDhfdCB2c2hscV91MTYodWludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIHVpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkgX19idWlsdGluX25lb25fdnNobHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDQ5KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHgxNl90IHZzaGxxX3M4KGludDh4MTZfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSkgewogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZzaGxxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDMyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ4eDE2X3QgdnNobHFfczgoaW50OHgxNl90IF9fcDAsIGludDh4MTZfdCBfX3AxKSB7CiAgaW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92c2hscV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgMzIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMng0X3QgdnNobHFfczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzaGxxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDM0KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMng0X3QgdnNobHFfczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkgX19idWlsdGluX25lb25fdnNobHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDM0KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50NjR4Ml90IHZzaGxxX3M2NChpbnQ2NHgyX3QgX19wMCwgaW50NjR4Ml90IF9fcDEpIHsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92c2hscV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAzNSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50NjR4Ml90IHZzaGxxX3M2NChpbnQ2NHgyX3QgX19wMCwgaW50NjR4Ml90IF9fcDEpIHsKICBpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZzaGxxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAzNSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDhfdCB2c2hscV9zMTYoaW50MTZ4OF90IF9fcDAsIGludDE2eDhfdCBfX3AxKSB7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDhfdCkgX19idWlsdGluX25lb25fdnNobHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgMzMpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDhfdCB2c2hscV9zMTYoaW50MTZ4OF90IF9fcDAsIGludDE2eDhfdCBfX3AxKSB7CiAgaW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92c2hscV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgMzMpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHg4X3QgdnNobF91OCh1aW50OHg4X3QgX19wMCwgaW50OHg4X3QgX19wMSkgewogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZzaGxfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDE2KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHg4X3QgdnNobF91OCh1aW50OHg4X3QgX19wMCwgaW50OHg4X3QgX19wMSkgewogIHVpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92c2hsX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMTYpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4Ml90IHZzaGxfdTMyKHVpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEpIHsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZzaGxfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDE4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4Ml90IHZzaGxfdTMyKHVpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEpIHsKICB1aW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZzaGxfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAxOCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCl9fYWkgdWludDY0eDFfdCB2c2hsX3U2NCh1aW50NjR4MV90IF9fcDAsIGludDY0eDFfdCBfX3AxKSB7CiAgdWludDY0eDFfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92c2hsX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAxOSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng0X3QgdnNobF91MTYodWludDE2eDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSkgewogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdnNobF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMTcpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng0X3QgdnNobF91MTYodWludDE2eDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSkgewogIHVpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdnNobF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDE3KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHg4X3QgdnNobF9zOChpbnQ4eDhfdCBfX3AwLCBpbnQ4eDhfdCBfX3AxKSB7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZzaGxfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4OF90IHZzaGxfczgoaW50OHg4X3QgX19wMCwgaW50OHg4X3QgX19wMSkgewogIGludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92c2hsX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDJfdCB2c2hsX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEpIHsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92c2hsX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMngyX3QgdnNobF9zMzIoaW50MzJ4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxKSB7CiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92c2hsX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCl9fYWkgaW50NjR4MV90IHZzaGxfczY0KGludDY0eDFfdCBfX3AwLCBpbnQ2NHgxX3QgX19wMSkgewogIGludDY0eDFfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3ZzaGxfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDMpOwogIHJldHVybiBfX3JldDsKfQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng0X3QgdnNobF9zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxKSB7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdnNobF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4NF90IHZzaGxfczE2KGludDE2eDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSkgewogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdnNobF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c2hscV9uX3U4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDE2X3QgX19zMCA9IF9fcDA7IFwKICB1aW50OHgxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDh4MTZfdCkgX19idWlsdGluX25lb25fdnNobHFfbl92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgNDgpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c2hscV9uX3U4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDE2X3QgX19zMCA9IF9fcDA7IFwKICB1aW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDh4MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZzaGxxX25fdigoaW50OHgxNl90KV9fcmV2MCwgX19wMSwgNDgpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c2hscV9uX3UzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NF90IF9fczAgPSBfX3AwOyBcCiAgdWludDMyeDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzaGxxX25fdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDUwKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNobHFfbl91MzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDRfdCBfX3MwID0gX19wMDsgXAogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMywgMiwgMSwgMCk7IFwKICB1aW50MzJ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdnNobHFfbl92KChpbnQ4eDE2X3QpX19yZXYwLCBfX3AxLCA1MCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzaGxxX25fdTY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyX3QgX19zMCA9IF9fcDA7IFwKICB1aW50NjR4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDY0eDJfdCkgX19idWlsdGluX25lb25fdnNobHFfbl92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgNTEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c2hscV9uX3U2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4Ml90IF9fczAgPSBfX3AwOyBcCiAgdWludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAxLCAwKTsgXAogIHVpbnQ2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92c2hscV9uX3YoKGludDh4MTZfdClfX3JldjAsIF9fcDEsIDUxKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNobHFfbl91MTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDhfdCBfX3MwID0gX19wMDsgXAogIHVpbnQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92c2hscV9uX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCA0OSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZzaGxxX25fdTE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng4X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZzaGxxX25fdigoaW50OHgxNl90KV9fcmV2MCwgX19wMSwgNDkpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c2hscV9uX3M4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4MTZfdCBfX3MwID0gX19wMDsgXAogIGludDh4MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDh4MTZfdCkgX19idWlsdGluX25lb25fdnNobHFfbl92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgMzIpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c2hscV9uX3M4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4MTZfdCBfX3MwID0gX19wMDsgXAogIGludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDh4MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDh4MTZfdCkgX19idWlsdGluX25lb25fdnNobHFfbl92KChpbnQ4eDE2X3QpX19yZXYwLCBfX3AxLCAzMik7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzaGxxX25fczMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDRfdCBfX3MwID0gX19wMDsgXAogIGludDMyeDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDMyeDRfdCkgX19idWlsdGluX25lb25fdnNobHFfbl92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgMzQpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c2hscV9uX3MzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMywgMiwgMSwgMCk7IFwKICBpbnQzMng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzaGxxX25fdigoaW50OHgxNl90KV9fcmV2MCwgX19wMSwgMzQpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c2hscV9uX3M2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgyX3QgX19zMCA9IF9fcDA7IFwKICBpbnQ2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZzaGxxX25fdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDM1KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNobHFfbl9zNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4Ml90IF9fczAgPSBfX3AwOyBcCiAgaW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDEsIDApOyBcCiAgaW50NjR4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92c2hscV9uX3YoKGludDh4MTZfdClfX3JldjAsIF9fcDEsIDM1KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNobHFfbl9zMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgaW50MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92c2hscV9uX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCAzMyk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZzaGxxX25fczE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDhfdCBfX3MwID0gX19wMDsgXAogIGludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDE2eDhfdCkgX19idWlsdGluX25lb25fdnNobHFfbl92KChpbnQ4eDE2X3QpX19yZXYwLCBfX3AxLCAzMyk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzaGxfbl91OChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHg4X3QgX19zMCA9IF9fcDA7IFwKICB1aW50OHg4X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZzaGxfbl92KChpbnQ4eDhfdClfX3MwLCBfX3AxLCAxNik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZzaGxfbl91OChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHg4X3QgX19zMCA9IF9fcDA7IFwKICB1aW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50OHg4X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZzaGxfbl92KChpbnQ4eDhfdClfX3JldjAsIF9fcDEsIDE2KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNobF9uX3UzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4Ml90IF9fczAgPSBfX3AwOyBcCiAgdWludDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZzaGxfbl92KChpbnQ4eDhfdClfX3MwLCBfX3AxLCAxOCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZzaGxfbl91MzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDJfdCBfX3MwID0gX19wMDsgXAogIHVpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMSwgMCk7IFwKICB1aW50MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdnNobF9uX3YoKGludDh4OF90KV9fcmV2MCwgX19wMSwgMTgpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojZGVmaW5lIHZzaGxfbl91NjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDFfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ2NHgxX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92c2hsX25fdigoaW50OHg4X3QpX19zMCwgX19wMSwgMTkpOyBcCiAgX19yZXQ7IFwKfSkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNobF9uX3UxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4NF90IF9fczAgPSBfX3AwOyBcCiAgdWludDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzaGxfbl92KChpbnQ4eDhfdClfX3MwLCBfX3AxLCAxNyk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZzaGxfbl91MTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDRfdCBfX3MwID0gX19wMDsgXAogIHVpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMywgMiwgMSwgMCk7IFwKICB1aW50MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdnNobF9uX3YoKGludDh4OF90KV9fcmV2MCwgX19wMSwgMTcpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c2hsX25fczgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHg4X3QgX19zMCA9IF9fcDA7IFwKICBpbnQ4eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92c2hsX25fdigoaW50OHg4X3QpX19zMCwgX19wMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZzaGxfbl9zOChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDhfdCBfX3MwID0gX19wMDsgXAogIGludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50OHg4X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnNobF9uX3YoKGludDh4OF90KV9fcmV2MCwgX19wMSwgMCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzaGxfbl9zMzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Ml90IF9fczAgPSBfX3AwOyBcCiAgaW50MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92c2hsX25fdigoaW50OHg4X3QpX19zMCwgX19wMSwgMik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZzaGxfbl9zMzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Ml90IF9fczAgPSBfX3AwOyBcCiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDEsIDApOyBcCiAgaW50MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92c2hsX25fdigoaW50OHg4X3QpX19yZXYwLCBfX3AxLCAyKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2c2hsX25fczY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDFfdCBfX3MwID0gX19wMDsgXAogIGludDY0eDFfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDY0eDFfdCkgX19idWlsdGluX25lb25fdnNobF9uX3YoKGludDh4OF90KV9fczAsIF9fcDEsIDMpOyBcCiAgX19yZXQ7IFwKfSkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNobF9uX3MxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzaGxfbl92KChpbnQ4eDhfdClfX3MwLCBfX3AxLCAxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNobF9uX3MxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzaGxfbl92KChpbnQ4eDhfdClfX3JldjAsIF9fcDEsIDEpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c2hsbF9uX3U4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDhfdCBfX3MwID0gX19wMDsgXAogIHVpbnQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92c2hsbF9uX3YoKGludDh4OF90KV9fczAsIF9fcDEsIDQ5KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNobGxfbl91OChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHg4X3QgX19zMCA9IF9fcDA7IFwKICB1aW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDE2eDhfdCkgX19idWlsdGluX25lb25fdnNobGxfbl92KChpbnQ4eDhfdClfX3JldjAsIF9fcDEsIDQ5KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgX19ub3N3YXBfdnNobGxfbl91OChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHg4X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDE2eDhfdCkgX19idWlsdGluX25lb25fdnNobGxfbl92KChpbnQ4eDhfdClfX3MwLCBfX3AxLCA0OSk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzaGxsX25fdTMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMngyX3QgX19zMCA9IF9fcDA7IFwKICB1aW50NjR4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDY0eDJfdCkgX19idWlsdGluX25lb25fdnNobGxfbl92KChpbnQ4eDhfdClfX3MwLCBfX3AxLCA1MSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZzaGxsX25fdTMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMngyX3QgX19zMCA9IF9fcDA7IFwKICB1aW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDEsIDApOyBcCiAgdWludDY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZzaGxsX25fdigoaW50OHg4X3QpX19yZXYwLCBfX3AxLCA1MSk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3ZzaGxsX25fdTMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMngyX3QgX19zMCA9IF9fcDA7IFwKICB1aW50NjR4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDY0eDJfdCkgX19idWlsdGluX25lb25fdnNobGxfbl92KChpbnQ4eDhfdClfX3MwLCBfX3AxLCA1MSk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzaGxsX25fdTE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng0X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MzJ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdnNobGxfbl92KChpbnQ4eDhfdClfX3MwLCBfX3AxLCA1MCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZzaGxsX25fdTE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng0X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDMsIDIsIDEsIDApOyBcCiAgdWludDMyeDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzaGxsX25fdigoaW50OHg4X3QpX19yZXYwLCBfX3AxLCA1MCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3ZzaGxsX25fdTE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng0X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MzJ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdnNobGxfbl92KChpbnQ4eDhfdClfX3MwLCBfX3AxLCA1MCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzaGxsX25fczgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHg4X3QgX19zMCA9IF9fcDA7IFwKICBpbnQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZzaGxsX25fdigoaW50OHg4X3QpX19zMCwgX19wMSwgMzMpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c2hsbF9uX3M4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4OF90IF9fczAgPSBfX3AwOyBcCiAgaW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZzaGxsX25fdigoaW50OHg4X3QpX19yZXYwLCBfX3AxLCAzMyk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3ZzaGxsX25fczgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHg4X3QgX19zMCA9IF9fcDA7IFwKICBpbnQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZzaGxsX25fdigoaW50OHg4X3QpX19zMCwgX19wMSwgMzMpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c2hsbF9uX3MzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMngyX3QgX19zMCA9IF9fcDA7IFwKICBpbnQ2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZzaGxsX25fdigoaW50OHg4X3QpX19zMCwgX19wMSwgMzUpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c2hsbF9uX3MzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMngyX3QgX19zMCA9IF9fcDA7IFwKICBpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMSwgMCk7IFwKICBpbnQ2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZzaGxsX25fdigoaW50OHg4X3QpX19yZXYwLCBfX3AxLCAzNSk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3ZzaGxsX25fczMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJfdCBfX3MwID0gX19wMDsgXAogIGludDY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDY0eDJfdCkgX19idWlsdGluX25lb25fdnNobGxfbl92KChpbnQ4eDhfdClfX3MwLCBfX3AxLCAzNSk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzaGxsX25fczE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDRfdCBfX3MwID0gX19wMDsgXAogIGludDMyeDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDMyeDRfdCkgX19idWlsdGluX25lb25fdnNobGxfbl92KChpbnQ4eDhfdClfX3MwLCBfX3AxLCAzNCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZzaGxsX25fczE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDRfdCBfX3MwID0gX19wMDsgXAogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDMyeDRfdCkgX19idWlsdGluX25lb25fdnNobGxfbl92KChpbnQ4eDhfdClfX3JldjAsIF9fcDEsIDM0KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgX19ub3N3YXBfdnNobGxfbl9zMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NF90IF9fczAgPSBfX3AwOyBcCiAgaW50MzJ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92c2hsbF9uX3YoKGludDh4OF90KV9fczAsIF9fcDEsIDM0KTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNocnFfbl91OChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHgxNl90IF9fczAgPSBfX3AwOyBcCiAgdWludDh4MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZzaHJxX25fdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDQ4KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNocnFfbl91OChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHgxNl90IF9fczAgPSBfX3AwOyBcCiAgdWludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQ4eDE2X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92c2hycV9uX3YoKGludDh4MTZfdClfX3JldjAsIF9fcDEsIDQ4KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNocnFfbl91MzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDRfdCBfX3MwID0gX19wMDsgXAogIHVpbnQzMng0X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92c2hycV9uX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCA1MCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZzaHJxX25fdTMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDMsIDIsIDEsIDApOyBcCiAgdWludDMyeDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzaHJxX25fdigoaW50OHgxNl90KV9fcmV2MCwgX19wMSwgNTApOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c2hycV9uX3U2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4Ml90IF9fczAgPSBfX3AwOyBcCiAgdWludDY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZzaHJxX25fdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDUxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNocnFfbl91NjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDJfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMSwgMCk7IFwKICB1aW50NjR4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDY0eDJfdCkgX19idWlsdGluX25lb25fdnNocnFfbl92KChpbnQ4eDE2X3QpX19yZXYwLCBfX3AxLCA1MSk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzaHJxX25fdTE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng4X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDE2eDhfdCkgX19idWlsdGluX25lb25fdnNocnFfbl92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgNDkpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c2hycV9uX3UxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgdWludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92c2hycV9uX3YoKGludDh4MTZfdClfX3JldjAsIF9fcDEsIDQ5KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNocnFfbl9zOChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDE2X3QgX19zMCA9IF9fcDA7IFwKICBpbnQ4eDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZzaHJxX25fdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDMyKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNocnFfbl9zOChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDE2X3QgX19zMCA9IF9fcDA7IFwKICBpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQ4eDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZzaHJxX25fdigoaW50OHgxNl90KV9fcmV2MCwgX19wMSwgMzIpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c2hycV9uX3MzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQzMng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzaHJxX25fdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDM0KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNocnFfbl9zMzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczAgPSBfX3AwOyBcCiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDMsIDIsIDEsIDApOyBcCiAgaW50MzJ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92c2hycV9uX3YoKGludDh4MTZfdClfX3JldjAsIF9fcDEsIDM0KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNocnFfbl9zNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4Ml90IF9fczAgPSBfX3AwOyBcCiAgaW50NjR4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92c2hycV9uX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCAzNSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZzaHJxX25fczY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJfdCBfX3MwID0gX19wMDsgXAogIGludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAxLCAwKTsgXAogIGludDY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDY0eDJfdCkgX19idWlsdGluX25lb25fdnNocnFfbl92KChpbnQ4eDE2X3QpX19yZXYwLCBfX3AxLCAzNSk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzaHJxX25fczE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDhfdCBfX3MwID0gX19wMDsgXAogIGludDE2eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDE2eDhfdCkgX19idWlsdGluX25lb25fdnNocnFfbl92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgMzMpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c2hycV9uX3MxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4X3QgX19zMCA9IF9fcDA7IFwKICBpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZzaHJxX25fdigoaW50OHgxNl90KV9fcmV2MCwgX19wMSwgMzMpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c2hyX25fdTgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4OF90IF9fczAgPSBfX3AwOyBcCiAgdWludDh4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92c2hyX25fdigoaW50OHg4X3QpX19zMCwgX19wMSwgMTYpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c2hyX25fdTgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4OF90IF9fczAgPSBfX3AwOyBcCiAgdWludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDh4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92c2hyX25fdigoaW50OHg4X3QpX19yZXYwLCBfX3AxLCAxNik7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzaHJfbl91MzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDJfdCBfX3MwID0gX19wMDsgXAogIHVpbnQzMngyX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92c2hyX25fdigoaW50OHg4X3QpX19zMCwgX19wMSwgMTgpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c2hyX25fdTMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMngyX3QgX19zMCA9IF9fcDA7IFwKICB1aW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDEsIDApOyBcCiAgdWludDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZzaHJfbl92KChpbnQ4eDhfdClfX3JldjAsIF9fcDEsIDE4KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2c2hyX25fdTY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgxX3QgX19zMCA9IF9fcDA7IFwKICB1aW50NjR4MV90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDY0eDFfdCkgX19idWlsdGluX25lb25fdnNocl9uX3YoKGludDh4OF90KV9fczAsIF9fcDEsIDE5KTsgXAogIF9fcmV0OyBcCn0pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzaHJfbl91MTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDRfdCBfX3MwID0gX19wMDsgXAogIHVpbnQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92c2hyX25fdigoaW50OHg4X3QpX19zMCwgX19wMSwgMTcpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c2hyX25fdTE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng0X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzaHJfbl92KChpbnQ4eDhfdClfX3JldjAsIF9fcDEsIDE3KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNocl9uX3M4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4OF90IF9fczAgPSBfX3AwOyBcCiAgaW50OHg4X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnNocl9uX3YoKGludDh4OF90KV9fczAsIF9fcDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c2hyX25fczgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHg4X3QgX19zMCA9IF9fcDA7IFwKICBpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDh4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZzaHJfbl92KChpbnQ4eDhfdClfX3JldjAsIF9fcDEsIDApOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c2hyX25fczMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJfdCBfX3MwID0gX19wMDsgXAogIGludDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdnNocl9uX3YoKGludDh4OF90KV9fczAsIF9fcDEsIDIpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c2hyX25fczMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJfdCBfX3MwID0gX19wMDsgXAogIGludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAxLCAwKTsgXAogIGludDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdnNocl9uX3YoKGludDh4OF90KV9fcmV2MCwgX19wMSwgMik7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNkZWZpbmUgdnNocl9uX3M2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgxX3QgX19zMCA9IF9fcDA7IFwKICBpbnQ2NHgxX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3ZzaHJfbl92KChpbnQ4eDhfdClfX3MwLCBfX3AxLCAzKTsgXAogIF9fcmV0OyBcCn0pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzaHJfbl9zMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NF90IF9fczAgPSBfX3AwOyBcCiAgaW50MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92c2hyX25fdigoaW50OHg4X3QpX19zMCwgX19wMSwgMSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZzaHJfbl9zMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NF90IF9fczAgPSBfX3AwOyBcCiAgaW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92c2hyX25fdigoaW50OHg4X3QpX19yZXYwLCBfX3AxLCAxKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNocm5fbl91MzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDRfdCBfX3MwID0gX19wMDsgXAogIHVpbnQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92c2hybl9uX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCAxNyk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZzaHJuX25fdTMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzaHJuX25fdigoaW50OHgxNl90KV9fcmV2MCwgX19wMSwgMTcpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF92c2hybl9uX3UzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NF90IF9fczAgPSBfX3AwOyBcCiAgdWludDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzaHJuX25fdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDE3KTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNocm5fbl91NjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDJfdCBfX3MwID0gX19wMDsgXAogIHVpbnQzMngyX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92c2hybl9uX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCAxOCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZzaHJuX25fdTY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyX3QgX19zMCA9IF9fcDA7IFwKICB1aW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDEsIDApOyBcCiAgdWludDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZzaHJuX25fdigoaW50OHgxNl90KV9fcmV2MCwgX19wMSwgMTgpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF92c2hybl9uX3U2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4Ml90IF9fczAgPSBfX3AwOyBcCiAgdWludDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZzaHJuX25fdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDE4KTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNocm5fbl91MTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDhfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ4eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnNocm5fbl92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgMTYpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c2hybl9uX3UxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgdWludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQ4eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnNocm5fbl92KChpbnQ4eDE2X3QpX19yZXYwLCBfX3AxLCAxNik7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3ZzaHJuX25fdTE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng4X3QgX19zMCA9IF9fcDA7IFwKICB1aW50OHg4X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZzaHJuX25fdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDE2KTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNocm5fbl9zMzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczAgPSBfX3AwOyBcCiAgaW50MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92c2hybl9uX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCAxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNocm5fbl9zMzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczAgPSBfX3AwOyBcCiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92c2hybl9uX3YoKGludDh4MTZfdClfX3JldjAsIF9fcDEsIDEpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF92c2hybl9uX3MzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzaHJuX25fdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDEpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c2hybl9uX3M2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgyX3QgX19zMCA9IF9fcDA7IFwKICBpbnQzMngyX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZzaHJuX25fdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDIpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c2hybl9uX3M2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgyX3QgX19zMCA9IF9fcDA7IFwKICBpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMSwgMCk7IFwKICBpbnQzMngyX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZzaHJuX25fdigoaW50OHgxNl90KV9fcmV2MCwgX19wMSwgMik7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3ZzaHJuX25fczY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJfdCBfX3MwID0gX19wMDsgXAogIGludDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdnNocm5fbl92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgMik7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzaHJuX25fczE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDhfdCBfX3MwID0gX19wMDsgXAogIGludDh4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZzaHJuX25fdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c2hybl9uX3MxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4X3QgX19zMCA9IF9fcDA7IFwKICBpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQ4eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92c2hybl9uX3YoKGludDh4MTZfdClfX3JldjAsIF9fcDEsIDApOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF92c2hybl9uX3MxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4X3QgX19zMCA9IF9fcDA7IFwKICBpbnQ4eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92c2hybl9uX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNsaV9uX3A4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4eDhfdCBfX3MwID0gX19wMDsgXAogIHBvbHk4eDhfdCBfX3MxID0gX19wMTsgXAogIHBvbHk4eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHBvbHk4eDhfdCkgX19idWlsdGluX25lb25fdnNsaV9uX3YoKGludDh4OF90KV9fczAsIChpbnQ4eDhfdClfX3MxLCBfX3AyLCA0KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNsaV9uX3A4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4eDhfdCBfX3MwID0gX19wMDsgXAogIHBvbHk4eDhfdCBfX3MxID0gX19wMTsgXAogIHBvbHk4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHBvbHk4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHBvbHk4eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHBvbHk4eDhfdCkgX19idWlsdGluX25lb25fdnNsaV9uX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgX19wMiwgNCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzbGlfbl9wMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDRfdCBfX3MwID0gX19wMDsgXAogIHBvbHkxNng0X3QgX19zMSA9IF9fcDE7IFwKICBwb2x5MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAocG9seTE2eDRfdCkgX19idWlsdGluX25lb25fdnNsaV9uX3YoKGludDh4OF90KV9fczAsIChpbnQ4eDhfdClfX3MxLCBfX3AyLCA1KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNsaV9uX3AxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4NF90IF9fczAgPSBfX3AwOyBcCiAgcG9seTE2eDRfdCBfX3MxID0gX19wMTsgXAogIHBvbHkxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMywgMiwgMSwgMCk7IFwKICBwb2x5MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDMsIDIsIDEsIDApOyBcCiAgcG9seTE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHBvbHkxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzbGlfbl92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIF9fcDIsIDUpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c2xpcV9uX3A4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4eDE2X3QgX19zMCA9IF9fcDA7IFwKICBwb2x5OHgxNl90IF9fczEgPSBfX3AxOyBcCiAgcG9seTh4MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKHBvbHk4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZzbGlxX25fdigoaW50OHgxNl90KV9fczAsIChpbnQ4eDE2X3QpX19zMSwgX19wMiwgMzYpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c2xpcV9uX3A4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4eDE2X3QgX19zMCA9IF9fcDA7IFwKICBwb2x5OHgxNl90IF9fczEgPSBfX3AxOyBcCiAgcG9seTh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHBvbHk4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBwb2x5OHgxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAocG9seTh4MTZfdCkgX19idWlsdGluX25lb25fdnNsaXFfbl92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgX19wMiwgMzYpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c2xpcV9uX3AxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgcG9seTE2eDhfdCBfX3MxID0gX19wMTsgXAogIHBvbHkxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92c2xpcV9uX3YoKGludDh4MTZfdClfX3MwLCAoaW50OHgxNl90KV9fczEsIF9fcDIsIDM3KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNsaXFfbl9wMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDhfdCBfX3MwID0gX19wMDsgXAogIHBvbHkxNng4X3QgX19zMSA9IF9fcDE7IFwKICBwb2x5MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgcG9seTE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHBvbHkxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92c2xpcV9uX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCBfX3AyLCAzNyk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzbGlxX25fdTgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4MTZfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ4eDE2X3QgX19zMSA9IF9fcDE7IFwKICB1aW50OHgxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDh4MTZfdCkgX19idWlsdGluX25lb25fdnNsaXFfbl92KChpbnQ4eDE2X3QpX19zMCwgKGludDh4MTZfdClfX3MxLCBfX3AyLCA0OCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZzbGlxX25fdTgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4MTZfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ4eDE2X3QgX19zMSA9IF9fcDE7IFwKICB1aW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQ4eDE2X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92c2xpcV9uX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCBfX3AyLCA0OCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzbGlxX25fdTMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MzJ4NF90IF9fczEgPSBfX3AxOyBcCiAgdWludDMyeDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzbGlxX25fdigoaW50OHgxNl90KV9fczAsIChpbnQ4eDE2X3QpX19zMSwgX19wMiwgNTApOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c2xpcV9uX3UzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NF90IF9fczAgPSBfX3AwOyBcCiAgdWludDMyeDRfdCBfX3MxID0gX19wMTsgXAogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMywgMiwgMSwgMCk7IFwKICB1aW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDMsIDIsIDEsIDApOyBcCiAgdWludDMyeDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzbGlxX25fdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIF9fcDIsIDUwKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNsaXFfbl91NjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDJfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ2NHgyX3QgX19zMSA9IF9fcDE7IFwKICB1aW50NjR4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDY0eDJfdCkgX19idWlsdGluX25lb25fdnNsaXFfbl92KChpbnQ4eDE2X3QpX19zMCwgKGludDh4MTZfdClfX3MxLCBfX3AyLCA1MSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZzbGlxX25fdTY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyX3QgX19zMCA9IF9fcDA7IFwKICB1aW50NjR4Ml90IF9fczEgPSBfX3AxOyBcCiAgdWludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAxLCAwKTsgXAogIHVpbnQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMSwgMCk7IFwKICB1aW50NjR4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDY0eDJfdCkgX19idWlsdGluX25lb25fdnNsaXFfbl92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgX19wMiwgNTEpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c2xpcV9uX3UxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgdWludDE2eDhfdCBfX3MxID0gX19wMTsgXAogIHVpbnQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92c2xpcV9uX3YoKGludDh4MTZfdClfX3MwLCAoaW50OHgxNl90KV9fczEsIF9fcDIsIDQ5KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNsaXFfbl91MTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDhfdCBfX3MwID0gX19wMDsgXAogIHVpbnQxNng4X3QgX19zMSA9IF9fcDE7IFwKICB1aW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92c2xpcV9uX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCBfX3AyLCA0OSk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzbGlxX25fczgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHgxNl90IF9fczAgPSBfX3AwOyBcCiAgaW50OHgxNl90IF9fczEgPSBfX3AxOyBcCiAgaW50OHgxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92c2xpcV9uX3YoKGludDh4MTZfdClfX3MwLCAoaW50OHgxNl90KV9fczEsIF9fcDIsIDMyKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNsaXFfbl9zOChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDE2X3QgX19zMCA9IF9fcDA7IFwKICBpbnQ4eDE2X3QgX19zMSA9IF9fcDE7IFwKICBpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQ4eDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZzbGlxX25fdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIF9fcDIsIDMyKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNsaXFfbl9zMzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczAgPSBfX3AwOyBcCiAgaW50MzJ4NF90IF9fczEgPSBfX3AxOyBcCiAgaW50MzJ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92c2xpcV9uX3YoKGludDh4MTZfdClfX3MwLCAoaW50OHgxNl90KV9fczEsIF9fcDIsIDM0KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNsaXFfbl9zMzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczAgPSBfX3AwOyBcCiAgaW50MzJ4NF90IF9fczEgPSBfX3AxOyBcCiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDMsIDIsIDEsIDApOyBcCiAgaW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDMsIDIsIDEsIDApOyBcCiAgaW50MzJ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92c2xpcV9uX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCBfX3AyLCAzNCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzbGlxX25fczY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJfdCBfX3MwID0gX19wMDsgXAogIGludDY0eDJfdCBfX3MxID0gX19wMTsgXAogIGludDY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDY0eDJfdCkgX19idWlsdGluX25lb25fdnNsaXFfbl92KChpbnQ4eDE2X3QpX19zMCwgKGludDh4MTZfdClfX3MxLCBfX3AyLCAzNSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZzbGlxX25fczY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJfdCBfX3MwID0gX19wMDsgXAogIGludDY0eDJfdCBfX3MxID0gX19wMTsgXAogIGludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAxLCAwKTsgXAogIGludDY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAxLCAwKTsgXAogIGludDY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDY0eDJfdCkgX19idWlsdGluX25lb25fdnNsaXFfbl92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgX19wMiwgMzUpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c2xpcV9uX3MxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4X3QgX19zMCA9IF9fcDA7IFwKICBpbnQxNng4X3QgX19zMSA9IF9fcDE7IFwKICBpbnQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZzbGlxX25fdigoaW50OHgxNl90KV9fczAsIChpbnQ4eDE2X3QpX19zMSwgX19wMiwgMzMpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c2xpcV9uX3MxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4X3QgX19zMCA9IF9fcDA7IFwKICBpbnQxNng4X3QgX19zMSA9IF9fcDE7IFwKICBpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZzbGlxX25fdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIF9fcDIsIDMzKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNsaV9uX3U4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDhfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ4eDhfdCBfX3MxID0gX19wMTsgXAogIHVpbnQ4eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnNsaV9uX3YoKGludDh4OF90KV9fczAsIChpbnQ4eDhfdClfX3MxLCBfX3AyLCAxNik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZzbGlfbl91OChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHg4X3QgX19zMCA9IF9fcDA7IFwKICB1aW50OHg4X3QgX19zMSA9IF9fcDE7IFwKICB1aW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50OHg4X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZzbGlfbl92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIF9fcDIsIDE2KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNsaV9uX3UzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4Ml90IF9fczAgPSBfX3AwOyBcCiAgdWludDMyeDJfdCBfX3MxID0gX19wMTsgXAogIHVpbnQzMngyX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92c2xpX25fdigoaW50OHg4X3QpX19zMCwgKGludDh4OF90KV9fczEsIF9fcDIsIDE4KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNsaV9uX3UzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4Ml90IF9fczAgPSBfX3AwOyBcCiAgdWludDMyeDJfdCBfX3MxID0gX19wMTsgXAogIHVpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMSwgMCk7IFwKICB1aW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDEsIDApOyBcCiAgdWludDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZzbGlfbl92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIF9fcDIsIDE4KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2c2xpX25fdTY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgxX3QgX19zMCA9IF9fcDA7IFwKICB1aW50NjR4MV90IF9fczEgPSBfX3AxOyBcCiAgdWludDY0eDFfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3ZzbGlfbl92KChpbnQ4eDhfdClfX3MwLCAoaW50OHg4X3QpX19zMSwgX19wMiwgMTkpOyBcCiAgX19yZXQ7IFwKfSkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNsaV9uX3UxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4NF90IF9fczAgPSBfX3AwOyBcCiAgdWludDE2eDRfdCBfX3MxID0gX19wMTsgXAogIHVpbnQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92c2xpX25fdigoaW50OHg4X3QpX19zMCwgKGludDh4OF90KV9fczEsIF9fcDIsIDE3KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNsaV9uX3UxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4NF90IF9fczAgPSBfX3AwOyBcCiAgdWludDE2eDRfdCBfX3MxID0gX19wMTsgXAogIHVpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMywgMiwgMSwgMCk7IFwKICB1aW50MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzbGlfbl92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIF9fcDIsIDE3KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNsaV9uX3M4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4OF90IF9fczAgPSBfX3AwOyBcCiAgaW50OHg4X3QgX19zMSA9IF9fcDE7IFwKICBpbnQ4eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92c2xpX25fdigoaW50OHg4X3QpX19zMCwgKGludDh4OF90KV9fczEsIF9fcDIsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c2xpX25fczgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHg4X3QgX19zMCA9IF9fcDA7IFwKICBpbnQ4eDhfdCBfX3MxID0gX19wMTsgXAogIGludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQ4eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92c2xpX25fdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCBfX3AyLCAwKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNsaV9uX3MzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMngyX3QgX19zMCA9IF9fcDA7IFwKICBpbnQzMngyX3QgX19zMSA9IF9fcDE7IFwKICBpbnQzMngyX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZzbGlfbl92KChpbnQ4eDhfdClfX3MwLCAoaW50OHg4X3QpX19zMSwgX19wMiwgMik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZzbGlfbl9zMzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Ml90IF9fczAgPSBfX3AwOyBcCiAgaW50MzJ4Ml90IF9fczEgPSBfX3AxOyBcCiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDEsIDApOyBcCiAgaW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDEsIDApOyBcCiAgaW50MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92c2xpX25fdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCBfX3AyLCAyKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2c2xpX25fczY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDFfdCBfX3MwID0gX19wMDsgXAogIGludDY0eDFfdCBfX3MxID0gX19wMTsgXAogIGludDY0eDFfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDY0eDFfdCkgX19idWlsdGluX25lb25fdnNsaV9uX3YoKGludDh4OF90KV9fczAsIChpbnQ4eDhfdClfX3MxLCBfX3AyLCAzKTsgXAogIF9fcmV0OyBcCn0pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzbGlfbl9zMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NF90IF9fczAgPSBfX3AwOyBcCiAgaW50MTZ4NF90IF9fczEgPSBfX3AxOyBcCiAgaW50MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92c2xpX25fdigoaW50OHg4X3QpX19zMCwgKGludDh4OF90KV9fczEsIF9fcDIsIDEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c2xpX25fczE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDRfdCBfX3MwID0gX19wMDsgXAogIGludDE2eDRfdCBfX3MxID0gX19wMTsgXAogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdnNsaV9uX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgX19wMiwgMSk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzcmFxX25fdTgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4MTZfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ4eDE2X3QgX19zMSA9IF9fcDE7IFwKICB1aW50OHgxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDh4MTZfdCkgX19idWlsdGluX25lb25fdnNyYXFfbl92KChpbnQ4eDE2X3QpX19zMCwgKGludDh4MTZfdClfX3MxLCBfX3AyLCA0OCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZzcmFxX25fdTgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4MTZfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ4eDE2X3QgX19zMSA9IF9fcDE7IFwKICB1aW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQ4eDE2X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92c3JhcV9uX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCBfX3AyLCA0OCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzcmFxX25fdTMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MzJ4NF90IF9fczEgPSBfX3AxOyBcCiAgdWludDMyeDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzcmFxX25fdigoaW50OHgxNl90KV9fczAsIChpbnQ4eDE2X3QpX19zMSwgX19wMiwgNTApOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3JhcV9uX3UzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NF90IF9fczAgPSBfX3AwOyBcCiAgdWludDMyeDRfdCBfX3MxID0gX19wMTsgXAogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMywgMiwgMSwgMCk7IFwKICB1aW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDMsIDIsIDEsIDApOyBcCiAgdWludDMyeDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzcmFxX25fdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIF9fcDIsIDUwKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNyYXFfbl91NjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDJfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ2NHgyX3QgX19zMSA9IF9fcDE7IFwKICB1aW50NjR4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDY0eDJfdCkgX19idWlsdGluX25lb25fdnNyYXFfbl92KChpbnQ4eDE2X3QpX19zMCwgKGludDh4MTZfdClfX3MxLCBfX3AyLCA1MSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZzcmFxX25fdTY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyX3QgX19zMCA9IF9fcDA7IFwKICB1aW50NjR4Ml90IF9fczEgPSBfX3AxOyBcCiAgdWludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAxLCAwKTsgXAogIHVpbnQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMSwgMCk7IFwKICB1aW50NjR4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDY0eDJfdCkgX19idWlsdGluX25lb25fdnNyYXFfbl92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgX19wMiwgNTEpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3JhcV9uX3UxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgdWludDE2eDhfdCBfX3MxID0gX19wMTsgXAogIHVpbnQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92c3JhcV9uX3YoKGludDh4MTZfdClfX3MwLCAoaW50OHgxNl90KV9fczEsIF9fcDIsIDQ5KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNyYXFfbl91MTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDhfdCBfX3MwID0gX19wMDsgXAogIHVpbnQxNng4X3QgX19zMSA9IF9fcDE7IFwKICB1aW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92c3JhcV9uX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCBfX3AyLCA0OSk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzcmFxX25fczgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHgxNl90IF9fczAgPSBfX3AwOyBcCiAgaW50OHgxNl90IF9fczEgPSBfX3AxOyBcCiAgaW50OHgxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92c3JhcV9uX3YoKGludDh4MTZfdClfX3MwLCAoaW50OHgxNl90KV9fczEsIF9fcDIsIDMyKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNyYXFfbl9zOChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDE2X3QgX19zMCA9IF9fcDA7IFwKICBpbnQ4eDE2X3QgX19zMSA9IF9fcDE7IFwKICBpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQ4eDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZzcmFxX25fdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIF9fcDIsIDMyKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNyYXFfbl9zMzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczAgPSBfX3AwOyBcCiAgaW50MzJ4NF90IF9fczEgPSBfX3AxOyBcCiAgaW50MzJ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92c3JhcV9uX3YoKGludDh4MTZfdClfX3MwLCAoaW50OHgxNl90KV9fczEsIF9fcDIsIDM0KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNyYXFfbl9zMzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczAgPSBfX3AwOyBcCiAgaW50MzJ4NF90IF9fczEgPSBfX3AxOyBcCiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDMsIDIsIDEsIDApOyBcCiAgaW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDMsIDIsIDEsIDApOyBcCiAgaW50MzJ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92c3JhcV9uX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCBfX3AyLCAzNCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzcmFxX25fczY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJfdCBfX3MwID0gX19wMDsgXAogIGludDY0eDJfdCBfX3MxID0gX19wMTsgXAogIGludDY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDY0eDJfdCkgX19idWlsdGluX25lb25fdnNyYXFfbl92KChpbnQ4eDE2X3QpX19zMCwgKGludDh4MTZfdClfX3MxLCBfX3AyLCAzNSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZzcmFxX25fczY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJfdCBfX3MwID0gX19wMDsgXAogIGludDY0eDJfdCBfX3MxID0gX19wMTsgXAogIGludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAxLCAwKTsgXAogIGludDY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAxLCAwKTsgXAogIGludDY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDY0eDJfdCkgX19idWlsdGluX25lb25fdnNyYXFfbl92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgX19wMiwgMzUpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3JhcV9uX3MxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4X3QgX19zMCA9IF9fcDA7IFwKICBpbnQxNng4X3QgX19zMSA9IF9fcDE7IFwKICBpbnQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZzcmFxX25fdigoaW50OHgxNl90KV9fczAsIChpbnQ4eDE2X3QpX19zMSwgX19wMiwgMzMpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3JhcV9uX3MxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4X3QgX19zMCA9IF9fcDA7IFwKICBpbnQxNng4X3QgX19zMSA9IF9fcDE7IFwKICBpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZzcmFxX25fdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIF9fcDIsIDMzKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNyYV9uX3U4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDhfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ4eDhfdCBfX3MxID0gX19wMTsgXAogIHVpbnQ4eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnNyYV9uX3YoKGludDh4OF90KV9fczAsIChpbnQ4eDhfdClfX3MxLCBfX3AyLCAxNik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZzcmFfbl91OChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHg4X3QgX19zMCA9IF9fcDA7IFwKICB1aW50OHg4X3QgX19zMSA9IF9fcDE7IFwKICB1aW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50OHg4X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZzcmFfbl92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIF9fcDIsIDE2KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNyYV9uX3UzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4Ml90IF9fczAgPSBfX3AwOyBcCiAgdWludDMyeDJfdCBfX3MxID0gX19wMTsgXAogIHVpbnQzMngyX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92c3JhX25fdigoaW50OHg4X3QpX19zMCwgKGludDh4OF90KV9fczEsIF9fcDIsIDE4KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNyYV9uX3UzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4Ml90IF9fczAgPSBfX3AwOyBcCiAgdWludDMyeDJfdCBfX3MxID0gX19wMTsgXAogIHVpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMSwgMCk7IFwKICB1aW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDEsIDApOyBcCiAgdWludDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZzcmFfbl92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIF9fcDIsIDE4KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2c3JhX25fdTY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgxX3QgX19zMCA9IF9fcDA7IFwKICB1aW50NjR4MV90IF9fczEgPSBfX3AxOyBcCiAgdWludDY0eDFfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3ZzcmFfbl92KChpbnQ4eDhfdClfX3MwLCAoaW50OHg4X3QpX19zMSwgX19wMiwgMTkpOyBcCiAgX19yZXQ7IFwKfSkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNyYV9uX3UxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4NF90IF9fczAgPSBfX3AwOyBcCiAgdWludDE2eDRfdCBfX3MxID0gX19wMTsgXAogIHVpbnQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92c3JhX25fdigoaW50OHg4X3QpX19zMCwgKGludDh4OF90KV9fczEsIF9fcDIsIDE3KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNyYV9uX3UxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4NF90IF9fczAgPSBfX3AwOyBcCiAgdWludDE2eDRfdCBfX3MxID0gX19wMTsgXAogIHVpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMywgMiwgMSwgMCk7IFwKICB1aW50MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzcmFfbl92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIF9fcDIsIDE3KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNyYV9uX3M4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4OF90IF9fczAgPSBfX3AwOyBcCiAgaW50OHg4X3QgX19zMSA9IF9fcDE7IFwKICBpbnQ4eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92c3JhX25fdigoaW50OHg4X3QpX19zMCwgKGludDh4OF90KV9fczEsIF9fcDIsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3JhX25fczgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHg4X3QgX19zMCA9IF9fcDA7IFwKICBpbnQ4eDhfdCBfX3MxID0gX19wMTsgXAogIGludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQ4eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92c3JhX25fdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCBfX3AyLCAwKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNyYV9uX3MzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMngyX3QgX19zMCA9IF9fcDA7IFwKICBpbnQzMngyX3QgX19zMSA9IF9fcDE7IFwKICBpbnQzMngyX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZzcmFfbl92KChpbnQ4eDhfdClfX3MwLCAoaW50OHg4X3QpX19zMSwgX19wMiwgMik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZzcmFfbl9zMzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Ml90IF9fczAgPSBfX3AwOyBcCiAgaW50MzJ4Ml90IF9fczEgPSBfX3AxOyBcCiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDEsIDApOyBcCiAgaW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDEsIDApOyBcCiAgaW50MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92c3JhX25fdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCBfX3AyLCAyKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2c3JhX25fczY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDFfdCBfX3MwID0gX19wMDsgXAogIGludDY0eDFfdCBfX3MxID0gX19wMTsgXAogIGludDY0eDFfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDY0eDFfdCkgX19idWlsdGluX25lb25fdnNyYV9uX3YoKGludDh4OF90KV9fczAsIChpbnQ4eDhfdClfX3MxLCBfX3AyLCAzKTsgXAogIF9fcmV0OyBcCn0pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzcmFfbl9zMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NF90IF9fczAgPSBfX3AwOyBcCiAgaW50MTZ4NF90IF9fczEgPSBfX3AxOyBcCiAgaW50MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92c3JhX25fdigoaW50OHg4X3QpX19zMCwgKGludDh4OF90KV9fczEsIF9fcDIsIDEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3JhX25fczE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDRfdCBfX3MwID0gX19wMDsgXAogIGludDE2eDRfdCBfX3MxID0gX19wMTsgXAogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdnNyYV9uX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgX19wMiwgMSk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzcmlfbl9wOChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHg4X3QgX19zMCA9IF9fcDA7IFwKICBwb2x5OHg4X3QgX19zMSA9IF9fcDE7IFwKICBwb2x5OHg4X3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3Zzcmlfbl92KChpbnQ4eDhfdClfX3MwLCAoaW50OHg4X3QpX19zMSwgX19wMiwgNCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZzcmlfbl9wOChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHg4X3QgX19zMCA9IF9fcDA7IFwKICBwb2x5OHg4X3QgX19zMSA9IF9fcDE7IFwKICBwb2x5OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBwb2x5OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBwb2x5OHg4X3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3Zzcmlfbl92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIF9fcDIsIDQpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3JpX25fcDE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng0X3QgX19zMCA9IF9fcDA7IFwKICBwb2x5MTZ4NF90IF9fczEgPSBfX3AxOyBcCiAgcG9seTE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHBvbHkxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3Zzcmlfbl92KChpbnQ4eDhfdClfX3MwLCAoaW50OHg4X3QpX19zMSwgX19wMiwgNSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZzcmlfbl9wMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDRfdCBfX3MwID0gX19wMDsgXAogIHBvbHkxNng0X3QgX19zMSA9IF9fcDE7IFwKICBwb2x5MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDMsIDIsIDEsIDApOyBcCiAgcG9seTE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAzLCAyLCAxLCAwKTsgXAogIHBvbHkxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92c3JpX25fdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCBfX3AyLCA1KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNyaXFfbl9wOChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHgxNl90IF9fczAgPSBfX3AwOyBcCiAgcG9seTh4MTZfdCBfX3MxID0gX19wMTsgXAogIHBvbHk4eDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92c3JpcV9uX3YoKGludDh4MTZfdClfX3MwLCAoaW50OHgxNl90KV9fczEsIF9fcDIsIDM2KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNyaXFfbl9wOChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHgxNl90IF9fczAgPSBfX3AwOyBcCiAgcG9seTh4MTZfdCBfX3MxID0gX19wMTsgXAogIHBvbHk4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBwb2x5OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgcG9seTh4MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKHBvbHk4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZzcmlxX25fdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIF9fcDIsIDM2KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNyaXFfbl9wMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDhfdCBfX3MwID0gX19wMDsgXAogIHBvbHkxNng4X3QgX19zMSA9IF9fcDE7IFwKICBwb2x5MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAocG9seTE2eDhfdCkgX19idWlsdGluX25lb25fdnNyaXFfbl92KChpbnQ4eDE2X3QpX19zMCwgKGludDh4MTZfdClfX3MxLCBfX3AyLCAzNyk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZzcmlxX25fcDE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng4X3QgX19zMCA9IF9fcDA7IFwKICBwb2x5MTZ4OF90IF9fczEgPSBfX3AxOyBcCiAgcG9seTE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHBvbHkxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBwb2x5MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAocG9seTE2eDhfdCkgX19idWlsdGluX25lb25fdnNyaXFfbl92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgX19wMiwgMzcpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3JpcV9uX3U4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDE2X3QgX19zMCA9IF9fcDA7IFwKICB1aW50OHgxNl90IF9fczEgPSBfX3AxOyBcCiAgdWludDh4MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZzcmlxX25fdigoaW50OHgxNl90KV9fczAsIChpbnQ4eDE2X3QpX19zMSwgX19wMiwgNDgpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3JpcV9uX3U4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDE2X3QgX19zMCA9IF9fcDA7IFwKICB1aW50OHgxNl90IF9fczEgPSBfX3AxOyBcCiAgdWludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50OHgxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDh4MTZfdCkgX19idWlsdGluX25lb25fdnNyaXFfbl92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgX19wMiwgNDgpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3JpcV9uX3UzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NF90IF9fczAgPSBfX3AwOyBcCiAgdWludDMyeDRfdCBfX3MxID0gX19wMTsgXAogIHVpbnQzMng0X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92c3JpcV9uX3YoKGludDh4MTZfdClfX3MwLCAoaW50OHgxNl90KV9fczEsIF9fcDIsIDUwKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNyaXFfbl91MzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDRfdCBfX3MwID0gX19wMDsgXAogIHVpbnQzMng0X3QgX19zMSA9IF9fcDE7IFwKICB1aW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDMsIDIsIDEsIDApOyBcCiAgdWludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAzLCAyLCAxLCAwKTsgXAogIHVpbnQzMng0X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92c3JpcV9uX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCBfX3AyLCA1MCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzcmlxX25fdTY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyX3QgX19zMCA9IF9fcDA7IFwKICB1aW50NjR4Ml90IF9fczEgPSBfX3AxOyBcCiAgdWludDY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZzcmlxX25fdigoaW50OHgxNl90KV9fczAsIChpbnQ4eDE2X3QpX19zMSwgX19wMiwgNTEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3JpcV9uX3U2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4Ml90IF9fczAgPSBfX3AwOyBcCiAgdWludDY0eDJfdCBfX3MxID0gX19wMTsgXAogIHVpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMSwgMCk7IFwKICB1aW50NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDEsIDApOyBcCiAgdWludDY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZzcmlxX25fdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIF9fcDIsIDUxKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNyaXFfbl91MTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDhfdCBfX3MwID0gX19wMDsgXAogIHVpbnQxNng4X3QgX19zMSA9IF9fcDE7IFwKICB1aW50MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDE2eDhfdCkgX19idWlsdGluX25lb25fdnNyaXFfbl92KChpbnQ4eDE2X3QpX19zMCwgKGludDh4MTZfdClfX3MxLCBfX3AyLCA0OSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZzcmlxX25fdTE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng4X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MTZ4OF90IF9fczEgPSBfX3AxOyBcCiAgdWludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDE2eDhfdCkgX19idWlsdGluX25lb25fdnNyaXFfbl92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgX19wMiwgNDkpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3JpcV9uX3M4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4MTZfdCBfX3MwID0gX19wMDsgXAogIGludDh4MTZfdCBfX3MxID0gX19wMTsgXAogIGludDh4MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDh4MTZfdCkgX19idWlsdGluX25lb25fdnNyaXFfbl92KChpbnQ4eDE2X3QpX19zMCwgKGludDh4MTZfdClfX3MxLCBfX3AyLCAzMik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZzcmlxX25fczgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHgxNl90IF9fczAgPSBfX3AwOyBcCiAgaW50OHgxNl90IF9fczEgPSBfX3AxOyBcCiAgaW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50OHgxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92c3JpcV9uX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCBfX3AyLCAzMik7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzcmlxX25fczMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDRfdCBfX3MwID0gX19wMDsgXAogIGludDMyeDRfdCBfX3MxID0gX19wMTsgXAogIGludDMyeDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDMyeDRfdCkgX19idWlsdGluX25lb25fdnNyaXFfbl92KChpbnQ4eDE2X3QpX19zMCwgKGludDh4MTZfdClfX3MxLCBfX3AyLCAzNCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZzcmlxX25fczMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDRfdCBfX3MwID0gX19wMDsgXAogIGludDMyeDRfdCBfX3MxID0gX19wMTsgXAogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDMyeDRfdCkgX19idWlsdGluX25lb25fdnNyaXFfbl92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgX19wMiwgMzQpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3JpcV9uX3M2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgyX3QgX19zMCA9IF9fcDA7IFwKICBpbnQ2NHgyX3QgX19zMSA9IF9fcDE7IFwKICBpbnQ2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZzcmlxX25fdigoaW50OHgxNl90KV9fczAsIChpbnQ4eDE2X3QpX19zMSwgX19wMiwgMzUpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3JpcV9uX3M2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgyX3QgX19zMCA9IF9fcDA7IFwKICBpbnQ2NHgyX3QgX19zMSA9IF9fcDE7IFwKICBpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMSwgMCk7IFwKICBpbnQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMSwgMCk7IFwKICBpbnQ2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZzcmlxX25fdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIF9fcDIsIDM1KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNyaXFfbl9zMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgaW50MTZ4OF90IF9fczEgPSBfX3AxOyBcCiAgaW50MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92c3JpcV9uX3YoKGludDh4MTZfdClfX3MwLCAoaW50OHgxNl90KV9fczEsIF9fcDIsIDMzKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNyaXFfbl9zMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgaW50MTZ4OF90IF9fczEgPSBfX3AxOyBcCiAgaW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92c3JpcV9uX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCBfX3AyLCAzMyk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzcmlfbl91OChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHg4X3QgX19zMCA9IF9fcDA7IFwKICB1aW50OHg4X3QgX19zMSA9IF9fcDE7IFwKICB1aW50OHg4X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3Zzcmlfbl92KChpbnQ4eDhfdClfX3MwLCAoaW50OHg4X3QpX19zMSwgX19wMiwgMTYpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3JpX25fdTgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4OF90IF9fczAgPSBfX3AwOyBcCiAgdWludDh4OF90IF9fczEgPSBfX3AxOyBcCiAgdWludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDh4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92c3JpX25fdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCBfX3AyLCAxNik7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzcmlfbl91MzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDJfdCBfX3MwID0gX19wMDsgXAogIHVpbnQzMngyX3QgX19zMSA9IF9fcDE7IFwKICB1aW50MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdnNyaV9uX3YoKGludDh4OF90KV9fczAsIChpbnQ4eDhfdClfX3MxLCBfX3AyLCAxOCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZzcmlfbl91MzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDJfdCBfX3MwID0gX19wMDsgXAogIHVpbnQzMngyX3QgX19zMSA9IF9fcDE7IFwKICB1aW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDEsIDApOyBcCiAgdWludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAxLCAwKTsgXAogIHVpbnQzMngyX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92c3JpX25fdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCBfX3AyLCAxOCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNkZWZpbmUgdnNyaV9uX3U2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4MV90IF9fczAgPSBfX3AwOyBcCiAgdWludDY0eDFfdCBfX3MxID0gX19wMTsgXAogIHVpbnQ2NHgxX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92c3JpX25fdigoaW50OHg4X3QpX19zMCwgKGludDh4OF90KV9fczEsIF9fcDIsIDE5KTsgXAogIF9fcmV0OyBcCn0pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzcmlfbl91MTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDRfdCBfX3MwID0gX19wMDsgXAogIHVpbnQxNng0X3QgX19zMSA9IF9fcDE7IFwKICB1aW50MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdnNyaV9uX3YoKGludDh4OF90KV9fczAsIChpbnQ4eDhfdClfX3MxLCBfX3AyLCAxNyk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZzcmlfbl91MTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDRfdCBfX3MwID0gX19wMDsgXAogIHVpbnQxNng0X3QgX19zMSA9IF9fcDE7IFwKICB1aW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAzLCAyLCAxLCAwKTsgXAogIHVpbnQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92c3JpX25fdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCBfX3AyLCAxNyk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzcmlfbl9zOChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDhfdCBfX3MwID0gX19wMDsgXAogIGludDh4OF90IF9fczEgPSBfX3AxOyBcCiAgaW50OHg4X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnNyaV9uX3YoKGludDh4OF90KV9fczAsIChpbnQ4eDhfdClfX3MxLCBfX3AyLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNyaV9uX3M4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4OF90IF9fczAgPSBfX3AwOyBcCiAgaW50OHg4X3QgX19zMSA9IF9fcDE7IFwKICBpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50OHg4X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnNyaV9uX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgX19wMiwgMCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzcmlfbl9zMzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Ml90IF9fczAgPSBfX3AwOyBcCiAgaW50MzJ4Ml90IF9fczEgPSBfX3AxOyBcCiAgaW50MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92c3JpX25fdigoaW50OHg4X3QpX19zMCwgKGludDh4OF90KV9fczEsIF9fcDIsIDIpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3JpX25fczMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJfdCBfX3MwID0gX19wMDsgXAogIGludDMyeDJfdCBfX3MxID0gX19wMTsgXAogIGludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAxLCAwKTsgXAogIGludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAxLCAwKTsgXAogIGludDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdnNyaV9uX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgX19wMiwgMik7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNkZWZpbmUgdnNyaV9uX3M2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgxX3QgX19zMCA9IF9fcDA7IFwKICBpbnQ2NHgxX3QgX19zMSA9IF9fcDE7IFwKICBpbnQ2NHgxX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3Zzcmlfbl92KChpbnQ4eDhfdClfX3MwLCAoaW50OHg4X3QpX19zMSwgX19wMiwgMyk7IFwKICBfX3JldDsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3JpX25fczE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDRfdCBfX3MwID0gX19wMDsgXAogIGludDE2eDRfdCBfX3MxID0gX19wMTsgXAogIGludDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdnNyaV9uX3YoKGludDh4OF90KV9fczAsIChpbnQ4eDhfdClfX3MxLCBfX3AyLCAxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNyaV9uX3MxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQxNng0X3QgX19zMSA9IF9fcDE7IFwKICBpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3Zzcmlfbl92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIF9fcDIsIDEpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxX3A4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4eDhfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFfdihfX3AwLCAoaW50OHg4X3QpX19zMSwgNCk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxX3A4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4eDhfdCBfX3MxID0gX19wMTsgXAogIHBvbHk4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFfdihfX3AwLCAoaW50OHg4X3QpX19yZXYxLCA0KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDFfcDE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng0X3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX3YoX19wMCwgKGludDh4OF90KV9fczEsIDUpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MV9wMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDRfdCBfX3MxID0gX19wMTsgXAogIHBvbHkxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX3YoX19wMCwgKGludDh4OF90KV9fcmV2MSwgNSk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxcV9wOChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHgxNl90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfdihfX3AwLCAoaW50OHgxNl90KV9fczEsIDM2KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDFxX3A4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4eDE2X3QgX19zMSA9IF9fcDE7IFwKICBwb2x5OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MSwgMzYpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MXFfcDE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng4X3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV92KF9fcDAsIChpbnQ4eDE2X3QpX19zMSwgMzcpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MXFfcDE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng4X3QgX19zMSA9IF9fcDE7IFwKICBwb2x5MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MSwgMzcpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MXFfdTgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4MTZfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFxX3YoX19wMCwgKGludDh4MTZfdClfX3MxLCA0OCk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxcV91OChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHgxNl90IF9fczEgPSBfX3AxOyBcCiAgdWludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFxX3YoX19wMCwgKGludDh4MTZfdClfX3JldjEsIDQ4KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDFxX3UzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NF90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfdihfX3AwLCAoaW50OHgxNl90KV9fczEsIDUwKTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDFxX3UzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NF90IF9fczEgPSBfX3AxOyBcCiAgdWludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFxX3YoX19wMCwgKGludDh4MTZfdClfX3JldjEsIDUwKTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDFxX3U2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4Ml90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfdihfX3AwLCAoaW50OHgxNl90KV9fczEsIDUxKTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDFxX3U2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4Ml90IF9fczEgPSBfX3AxOyBcCiAgdWludDY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFxX3YoX19wMCwgKGludDh4MTZfdClfX3JldjEsIDUxKTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDFxX3UxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4OF90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfdihfX3AwLCAoaW50OHgxNl90KV9fczEsIDQ5KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDFxX3UxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4OF90IF9fczEgPSBfX3AxOyBcCiAgdWludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFxX3YoX19wMCwgKGludDh4MTZfdClfX3JldjEsIDQ5KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDFxX3M4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4MTZfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFxX3YoX19wMCwgKGludDh4MTZfdClfX3MxLCAzMik7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxcV9zOChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDE2X3QgX19zMSA9IF9fcDE7IFwKICBpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLCAzMik7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxcV9mMzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0X3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV92KF9fcDAsIChpbnQ4eDE2X3QpX19zMSwgNDEpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MXFfZjMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NF90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLCA0MSk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxcV9zMzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfdihfX3AwLCAoaW50OHgxNl90KV9fczEsIDM0KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDFxX3MzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMSA9IF9fcDE7IFwKICBpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLCAzNCk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxcV9zNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4Ml90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfdihfX3AwLCAoaW50OHgxNl90KV9fczEsIDM1KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDFxX3M2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgyX3QgX19zMSA9IF9fcDE7IFwKICBpbnQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLCAzNSk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxcV9zMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OF90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfdihfX3AwLCAoaW50OHgxNl90KV9fczEsIDMzKTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDFxX3MxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4X3QgX19zMSA9IF9fcDE7IFwKICBpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLCAzMyk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxX3U4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDhfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFfdihfX3AwLCAoaW50OHg4X3QpX19zMSwgMTYpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MV91OChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHg4X3QgX19zMSA9IF9fcDE7IFwKICB1aW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX3YoX19wMCwgKGludDh4OF90KV9fcmV2MSwgMTYpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MV91MzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDJfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFfdihfX3AwLCAoaW50OHg4X3QpX19zMSwgMTgpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MV91MzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDJfdCBfX3MxID0gX19wMTsgXAogIHVpbnQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX3YoX19wMCwgKGludDh4OF90KV9fcmV2MSwgMTgpOyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2c3QxX3U2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4MV90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MV92KF9fcDAsIChpbnQ4eDhfdClfX3MxLCAxOSk7IFwKfSkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MV91MTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDRfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFfdihfX3AwLCAoaW50OHg4X3QpX19zMSwgMTcpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MV91MTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDRfdCBfX3MxID0gX19wMTsgXAogIHVpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX3YoX19wMCwgKGludDh4OF90KV9fcmV2MSwgMTcpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MV9zOChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDhfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFfdihfX3AwLCAoaW50OHg4X3QpX19zMSwgMCk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxX3M4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4OF90IF9fczEgPSBfX3AxOyBcCiAgaW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX3YoX19wMCwgKGludDh4OF90KV9fcmV2MSwgMCk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxX2YzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFfdihfX3AwLCAoaW50OHg4X3QpX19zMSwgOSk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxX2YzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MV92KF9fcDAsIChpbnQ4eDhfdClfX3JldjEsIDkpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MV9zMzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Ml90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MV92KF9fcDAsIChpbnQ4eDhfdClfX3MxLCAyKTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDFfczMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJfdCBfX3MxID0gX19wMTsgXAogIGludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFfdihfX3AwLCAoaW50OHg4X3QpX19yZXYxLCAyKTsgXAp9KQojZW5kaWYKCiNkZWZpbmUgdnN0MV9zNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4MV90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MV92KF9fcDAsIChpbnQ4eDhfdClfX3MxLCAzKTsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxX3MxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng0X3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX3YoX19wMCwgKGludDh4OF90KV9fczEsIDEpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MV9zMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NF90IF9fczEgPSBfX3AxOyBcCiAgaW50MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MV92KF9fcDAsIChpbnQ4eDhfdClfX3JldjEsIDEpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MV9sYW5lX3A4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4eDhfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFfbGFuZV92KF9fcDAsIChpbnQ4eDhfdClfX3MxLCBfX3AyLCA0KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDFfbGFuZV9wOChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHg4X3QgX19zMSA9IF9fcDE7IFwKICBwb2x5OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX2xhbmVfdihfX3AwLCAoaW50OHg4X3QpX19yZXYxLCBfX3AyLCA0KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDFfbGFuZV9wMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDRfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFfbGFuZV92KF9fcDAsIChpbnQ4eDhfdClfX3MxLCBfX3AyLCA1KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDFfbGFuZV9wMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDRfdCBfX3MxID0gX19wMTsgXAogIHBvbHkxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX2xhbmVfdihfX3AwLCAoaW50OHg4X3QpX19yZXYxLCBfX3AyLCA1KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDFxX2xhbmVfcDgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4MTZfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFxX2xhbmVfdihfX3AwLCAoaW50OHgxNl90KV9fczEsIF9fcDIsIDM2KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDFxX2xhbmVfcDgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4MTZfdCBfX3MxID0gX19wMTsgXAogIHBvbHk4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV9sYW5lX3YoX19wMCwgKGludDh4MTZfdClfX3JldjEsIF9fcDIsIDM2KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDFxX2xhbmVfcDE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng4X3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV9sYW5lX3YoX19wMCwgKGludDh4MTZfdClfX3MxLCBfX3AyLCAzNyk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxcV9sYW5lX3AxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4OF90IF9fczEgPSBfX3AxOyBcCiAgcG9seTE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFxX2xhbmVfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MSwgX19wMiwgMzcpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MXFfbGFuZV91OChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHgxNl90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19zMSwgX19wMiwgNDgpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MXFfbGFuZV91OChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHgxNl90IF9fczEgPSBfX3AxOyBcCiAgdWludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFxX2xhbmVfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MSwgX19wMiwgNDgpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MXFfbGFuZV91MzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDRfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFxX2xhbmVfdihfX3AwLCAoaW50OHgxNl90KV9fczEsIF9fcDIsIDUwKTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDFxX2xhbmVfdTMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0X3QgX19zMSA9IF9fcDE7IFwKICB1aW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLCBfX3AyLCA1MCk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxcV9sYW5lX3U2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4Ml90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19zMSwgX19wMiwgNTEpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MXFfbGFuZV91NjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDJfdCBfX3MxID0gX19wMTsgXAogIHVpbnQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV9sYW5lX3YoX19wMCwgKGludDh4MTZfdClfX3JldjEsIF9fcDIsIDUxKTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDFxX2xhbmVfdTE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng4X3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV9sYW5lX3YoX19wMCwgKGludDh4MTZfdClfX3MxLCBfX3AyLCA0OSk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxcV9sYW5lX3UxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4OF90IF9fczEgPSBfX3AxOyBcCiAgdWludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFxX2xhbmVfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MSwgX19wMiwgNDkpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MXFfbGFuZV9zOChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDE2X3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV9sYW5lX3YoX19wMCwgKGludDh4MTZfdClfX3MxLCBfX3AyLCAzMik7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxcV9sYW5lX3M4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4MTZfdCBfX3MxID0gX19wMTsgXAogIGludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFxX2xhbmVfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MSwgX19wMiwgMzIpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MXFfbGFuZV9mMzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0X3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV9sYW5lX3YoX19wMCwgKGludDh4MTZfdClfX3MxLCBfX3AyLCA0MSk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxcV9sYW5lX2YzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDRfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLCBfX3AyLCA0MSk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxcV9sYW5lX3MzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV9sYW5lX3YoX19wMCwgKGludDh4MTZfdClfX3MxLCBfX3AyLCAzNCk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxcV9sYW5lX3MzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMSA9IF9fcDE7IFwKICBpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV9sYW5lX3YoX19wMCwgKGludDh4MTZfdClfX3JldjEsIF9fcDIsIDM0KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDFxX2xhbmVfczY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFxX2xhbmVfdihfX3AwLCAoaW50OHgxNl90KV9fczEsIF9fcDIsIDM1KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDFxX2xhbmVfczY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJfdCBfX3MxID0gX19wMTsgXAogIGludDY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFxX2xhbmVfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MSwgX19wMiwgMzUpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MXFfbGFuZV9zMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OF90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19zMSwgX19wMiwgMzMpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MXFfbGFuZV9zMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OF90IF9fczEgPSBfX3AxOyBcCiAgaW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLCBfX3AyLCAzMyk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxX2xhbmVfdTgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4OF90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MV9sYW5lX3YoX19wMCwgKGludDh4OF90KV9fczEsIF9fcDIsIDE2KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDFfbGFuZV91OChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHg4X3QgX19zMSA9IF9fcDE7IFwKICB1aW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX2xhbmVfdihfX3AwLCAoaW50OHg4X3QpX19yZXYxLCBfX3AyLCAxNik7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxX2xhbmVfdTMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMngyX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX2xhbmVfdihfX3AwLCAoaW50OHg4X3QpX19zMSwgX19wMiwgMTgpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MV9sYW5lX3UzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4Ml90IF9fczEgPSBfX3AxOyBcCiAgdWludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFfbGFuZV92KF9fcDAsIChpbnQ4eDhfdClfX3JldjEsIF9fcDIsIDE4KTsgXAp9KQojZW5kaWYKCiNkZWZpbmUgdnN0MV9sYW5lX3U2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4MV90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MV9sYW5lX3YoX19wMCwgKGludDh4OF90KV9fczEsIF9fcDIsIDE5KTsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxX2xhbmVfdTE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng0X3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX2xhbmVfdihfX3AwLCAoaW50OHg4X3QpX19zMSwgX19wMiwgMTcpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MV9sYW5lX3UxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4NF90IF9fczEgPSBfX3AxOyBcCiAgdWludDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFfbGFuZV92KF9fcDAsIChpbnQ4eDhfdClfX3JldjEsIF9fcDIsIDE3KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDFfbGFuZV9zOChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDhfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFfbGFuZV92KF9fcDAsIChpbnQ4eDhfdClfX3MxLCBfX3AyLCAwKTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDFfbGFuZV9zOChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDhfdCBfX3MxID0gX19wMTsgXAogIGludDh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MV9sYW5lX3YoX19wMCwgKGludDh4OF90KV9fcmV2MSwgX19wMiwgMCk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxX2xhbmVfZjMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4Ml90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MV9sYW5lX3YoX19wMCwgKGludDh4OF90KV9fczEsIF9fcDIsIDkpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MV9sYW5lX2YzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MV9sYW5lX3YoX19wMCwgKGludDh4OF90KV9fcmV2MSwgX19wMiwgOSk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxX2xhbmVfczMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFfbGFuZV92KF9fcDAsIChpbnQ4eDhfdClfX3MxLCBfX3AyLCAyKTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDFfbGFuZV9zMzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Ml90IF9fczEgPSBfX3AxOyBcCiAgaW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MV9sYW5lX3YoX19wMCwgKGludDh4OF90KV9fcmV2MSwgX19wMiwgMik7IFwKfSkKI2VuZGlmCgojZGVmaW5lIHZzdDFfbGFuZV9zNjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4MV90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MV9sYW5lX3YoX19wMCwgKGludDh4OF90KV9fczEsIF9fcDIsIDMpOyBcCn0pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDFfbGFuZV9zMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NF90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MV9sYW5lX3YoX19wMCwgKGludDh4OF90KV9fczEsIF9fcDIsIDEpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MV9sYW5lX3MxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng0X3QgX19zMSA9IF9fcDE7IFwKICBpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX2xhbmVfdihfX3AwLCAoaW50OHg4X3QpX19yZXYxLCBfX3AyLCAxKTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDFfcDhfeDIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4OHgyX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX3gyX3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIDQpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MV9wOF94MihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHg4eDJfdCBfX3MxID0gX19wMTsgXAogIHBvbHk4eDh4Ml90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX3gyX3YoX19wMCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCA0KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDFfcDE2X3gyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng0eDJfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFfeDJfdihfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgNSk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxX3AxNl94MihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4NHgyX3QgX19zMSA9IF9fcDE7IFwKICBwb2x5MTZ4NHgyX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFfeDJfdihfX3AwLCAoaW50OHg4X3QpX19yZXYxLnZhbFswXSwgKGludDh4OF90KV9fcmV2MS52YWxbMV0sIDUpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MXFfcDhfeDIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4MTZ4Ml90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfeDJfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAzNik7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxcV9wOF94MihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHgxNngyX3QgX19zMSA9IF9fcDE7IFwKICBwb2x5OHgxNngyX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFxX3gyX3YoX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIDM2KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDFxX3AxNl94MihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4OHgyX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV94Ml92KF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIDM3KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDFxX3AxNl94MihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4OHgyX3QgX19zMSA9IF9fcDE7IFwKICBwb2x5MTZ4OHgyX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFxX3gyX3YoX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIDM3KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDFxX3U4X3gyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDE2eDJfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFxX3gyX3YoX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgNDgpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MXFfdThfeDIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4MTZ4Ml90IF9fczEgPSBfX3AxOyBcCiAgdWludDh4MTZ4Ml90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV94Ml92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCA0OCk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxcV91MzJfeDIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDR4Ml90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfeDJfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCA1MCk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxcV91MzJfeDIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDR4Ml90IF9fczEgPSBfX3AxOyBcCiAgdWludDMyeDR4Ml90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV94Ml92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCA1MCk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxcV91NjRfeDIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDJ4Ml90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfeDJfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCA1MSk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxcV91NjRfeDIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDJ4Ml90IF9fczEgPSBfX3AxOyBcCiAgdWludDY0eDJ4Ml90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV94Ml92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCA1MSk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxcV91MTZfeDIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDh4Ml90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfeDJfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCA0OSk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxcV91MTZfeDIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDh4Ml90IF9fczEgPSBfX3AxOyBcCiAgdWludDE2eDh4Ml90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV94Ml92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCA0OSk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxcV9zOF94MihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDE2eDJfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFxX3gyX3YoX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgMzIpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MXFfczhfeDIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHgxNngyX3QgX19zMSA9IF9fcDE7IFwKICBpbnQ4eDE2eDJfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfeDJfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgMzIpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MXFfZjMyX3gyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NHgyX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV94Ml92KF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIDQxKTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDFxX2YzMl94MihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDR4Ml90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQzMng0eDJfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfeDJfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgNDEpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MXFfczMyX3gyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDR4Ml90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfeDJfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAzNCk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxcV9zMzJfeDIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NHgyX3QgX19zMSA9IF9fcDE7IFwKICBpbnQzMng0eDJfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfeDJfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgMzQpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MXFfczY0X3gyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJ4Ml90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfeDJfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAzNSk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxcV9zNjRfeDIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4MngyX3QgX19zMSA9IF9fcDE7IFwKICBpbnQ2NHgyeDJfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfeDJfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgMzUpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MXFfczE2X3gyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDh4Ml90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfeDJfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAzMyk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxcV9zMTZfeDIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OHgyX3QgX19zMSA9IF9fcDE7IFwKICBpbnQxNng4eDJfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfeDJfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgMzMpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MV91OF94MihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHg4eDJfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFfeDJfdihfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgMTYpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MV91OF94MihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHg4eDJfdCBfX3MxID0gX19wMTsgXAogIHVpbnQ4eDh4Ml90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX3gyX3YoX19wMCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCAxNik7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxX3UzMl94MihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4MngyX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX3gyX3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIDE4KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDFfdTMyX3gyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMngyeDJfdCBfX3MxID0gX19wMTsgXAogIHVpbnQzMngyeDJfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MV94Ml92KF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgMTgpOyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2c3QxX3U2NF94MihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4MXgyX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX3gyX3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIDE5KTsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxX3UxNl94MihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4NHgyX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX3gyX3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIDE3KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDFfdTE2X3gyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng0eDJfdCBfX3MxID0gX19wMTsgXAogIHVpbnQxNng0eDJfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MV94Ml92KF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgMTcpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MV9zOF94MihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDh4Ml90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MV94Ml92KF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCAwKTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDFfczhfeDIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHg4eDJfdCBfX3MxID0gX19wMTsgXAogIGludDh4OHgyX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFfeDJfdihfX3AwLCAoaW50OHg4X3QpX19yZXYxLnZhbFswXSwgKGludDh4OF90KV9fcmV2MS52YWxbMV0sIDApOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MV9mMzJfeDIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMngyeDJfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFfeDJfdihfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgOSk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxX2YzMl94MihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJ4Ml90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQzMngyeDJfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MV94Ml92KF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgOSk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxX3MzMl94MihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMngyeDJfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFfeDJfdihfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgMik7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxX3MzMl94MihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMngyeDJfdCBfX3MxID0gX19wMTsgXAogIGludDMyeDJ4Ml90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX3gyX3YoX19wMCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCAyKTsgXAp9KQojZW5kaWYKCiNkZWZpbmUgdnN0MV9zNjRfeDIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4MXgyX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX3gyX3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIDMpOyBcCn0pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDFfczE2X3gyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDR4Ml90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MV94Ml92KF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCAxKTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDFfczE2X3gyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDR4Ml90IF9fczEgPSBfX3AxOyBcCiAgaW50MTZ4NHgyX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFfeDJfdihfX3AwLCAoaW50OHg4X3QpX19yZXYxLnZhbFswXSwgKGludDh4OF90KV9fcmV2MS52YWxbMV0sIDEpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MV9wOF94MyhfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHg4eDNfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFfeDNfdihfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgKGludDh4OF90KV9fczEudmFsWzJdLCA0KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDFfcDhfeDMoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4OHgzX3QgX19zMSA9IF9fcDE7IFwKICBwb2x5OHg4eDNfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX3gzX3YoX19wMCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsyXSwgNCk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxX3AxNl94MyhfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4NHgzX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX3gzX3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIChpbnQ4eDhfdClfX3MxLnZhbFsyXSwgNSk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxX3AxNl94MyhfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4NHgzX3QgX19zMSA9IF9fcDE7IFwKICBwb2x5MTZ4NHgzX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MV94M192KF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgKGludDh4OF90KV9fcmV2MS52YWxbMl0sIDUpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MXFfcDhfeDMoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4MTZ4M190IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfeDNfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCAzNik7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxcV9wOF94MyhfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHgxNngzX3QgX19zMSA9IF9fcDE7IFwKICBwb2x5OHgxNngzX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfeDNfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgKGludDh4MTZfdClfX3JldjEudmFsWzJdLCAzNik7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxcV9wMTZfeDMoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDh4M190IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfeDNfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCAzNyk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxcV9wMTZfeDMoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDh4M190IF9fczEgPSBfX3AxOyBcCiAgcG9seTE2eDh4M190IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFxX3gzX3YoX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgMzcpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MXFfdThfeDMoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4MTZ4M190IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfeDNfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCA0OCk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxcV91OF94MyhfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHgxNngzX3QgX19zMSA9IF9fcDE7IFwKICB1aW50OHgxNngzX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfeDNfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgKGludDh4MTZfdClfX3JldjEudmFsWzJdLCA0OCk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxcV91MzJfeDMoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDR4M190IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfeDNfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCA1MCk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxcV91MzJfeDMoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDR4M190IF9fczEgPSBfX3AxOyBcCiAgdWludDMyeDR4M190IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFxX3gzX3YoX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgNTApOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MXFfdTY0X3gzKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyeDNfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFxX3gzX3YoX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgKGludDh4MTZfdClfX3MxLnZhbFsyXSwgNTEpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MXFfdTY0X3gzKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyeDNfdCBfX3MxID0gX19wMTsgXAogIHVpbnQ2NHgyeDNfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV94M192KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMl0sIDUxKTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDFxX3UxNl94MyhfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4OHgzX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV94M192KF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIChpbnQ4eDE2X3QpX19zMS52YWxbMl0sIDQ5KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDFxX3UxNl94MyhfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4OHgzX3QgX19zMSA9IF9fcDE7IFwKICB1aW50MTZ4OHgzX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfeDNfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgKGludDh4MTZfdClfX3JldjEudmFsWzJdLCA0OSk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxcV9zOF94MyhfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDE2eDNfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFxX3gzX3YoX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgKGludDh4MTZfdClfX3MxLnZhbFsyXSwgMzIpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MXFfczhfeDMoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHgxNngzX3QgX19zMSA9IF9fcDE7IFwKICBpbnQ4eDE2eDNfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV94M192KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMl0sIDMyKTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDFxX2YzMl94MyhfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDR4M190IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfeDNfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCA0MSk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxcV9mMzJfeDMoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0eDNfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MzJ4NHgzX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfeDNfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgKGludDh4MTZfdClfX3JldjEudmFsWzJdLCA0MSk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxcV9zMzJfeDMoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NHgzX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV94M192KF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIChpbnQ4eDE2X3QpX19zMS52YWxbMl0sIDM0KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDFxX3MzMl94MyhfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0eDNfdCBfX3MxID0gX19wMTsgXAogIGludDMyeDR4M190IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFxX3gzX3YoX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgMzQpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MXFfczY0X3gzKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJ4M190IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfeDNfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCAzNSk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxcV9zNjRfeDMoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4MngzX3QgX19zMSA9IF9fcDE7IFwKICBpbnQ2NHgyeDNfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV94M192KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMl0sIDM1KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDFxX3MxNl94MyhfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4eDNfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFxX3gzX3YoX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgKGludDh4MTZfdClfX3MxLnZhbFsyXSwgMzMpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MXFfczE2X3gzKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDh4M190IF9fczEgPSBfX3AxOyBcCiAgaW50MTZ4OHgzX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfeDNfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgKGludDh4MTZfdClfX3JldjEudmFsWzJdLCAzMyk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxX3U4X3gzKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDh4M190IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MV94M192KF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCAoaW50OHg4X3QpX19zMS52YWxbMl0sIDE2KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDFfdThfeDMoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4OHgzX3QgX19zMSA9IF9fcDE7IFwKICB1aW50OHg4eDNfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX3gzX3YoX19wMCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsyXSwgMTYpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MV91MzJfeDMoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDJ4M190IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MV94M192KF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCAoaW50OHg4X3QpX19zMS52YWxbMl0sIDE4KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDFfdTMyX3gzKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMngyeDNfdCBfX3MxID0gX19wMTsgXAogIHVpbnQzMngyeDNfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX3gzX3YoX19wMCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsyXSwgMTgpOyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2c3QxX3U2NF94MyhfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4MXgzX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX3gzX3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIChpbnQ4eDhfdClfX3MxLnZhbFsyXSwgMTkpOyBcCn0pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDFfdTE2X3gzKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng0eDNfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFfeDNfdihfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgKGludDh4OF90KV9fczEudmFsWzJdLCAxNyk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxX3UxNl94MyhfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4NHgzX3QgX19zMSA9IF9fcDE7IFwKICB1aW50MTZ4NHgzX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MV94M192KF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgKGludDh4OF90KV9fcmV2MS52YWxbMl0sIDE3KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDFfczhfeDMoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHg4eDNfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFfeDNfdihfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgKGludDh4OF90KV9fczEudmFsWzJdLCAwKTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDFfczhfeDMoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHg4eDNfdCBfX3MxID0gX19wMTsgXAogIGludDh4OHgzX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MV94M192KF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgKGludDh4OF90KV9fcmV2MS52YWxbMl0sIDApOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MV9mMzJfeDMoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMngyeDNfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFfeDNfdihfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgKGludDh4OF90KV9fczEudmFsWzJdLCA5KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDFfZjMyX3gzKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4MngzX3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDMyeDJ4M190IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFfeDNfdihfX3AwLCAoaW50OHg4X3QpX19yZXYxLnZhbFswXSwgKGludDh4OF90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDhfdClfX3JldjEudmFsWzJdLCA5KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDFfczMyX3gzKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJ4M190IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MV94M192KF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCAoaW50OHg4X3QpX19zMS52YWxbMl0sIDIpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MV9zMzJfeDMoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4MngzX3QgX19zMSA9IF9fcDE7IFwKICBpbnQzMngyeDNfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX3gzX3YoX19wMCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsyXSwgMik7IFwKfSkKI2VuZGlmCgojZGVmaW5lIHZzdDFfczY0X3gzKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDF4M190IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MV94M192KF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCAoaW50OHg4X3QpX19zMS52YWxbMl0sIDMpOyBcCn0pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDFfczE2X3gzKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDR4M190IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MV94M192KF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCAoaW50OHg4X3QpX19zMS52YWxbMl0sIDEpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MV9zMTZfeDMoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NHgzX3QgX19zMSA9IF9fcDE7IFwKICBpbnQxNng0eDNfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX3gzX3YoX19wMCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsyXSwgMSk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxX3A4X3g0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4eDh4NF90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MV94NF92KF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCAoaW50OHg4X3QpX19zMS52YWxbMl0sIChpbnQ4eDhfdClfX3MxLnZhbFszXSwgNCk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxX3A4X3g0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4eDh4NF90IF9fczEgPSBfX3AxOyBcCiAgcG9seTh4OHg0X3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzNdLCBfX3MxLnZhbFszXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX3g0X3YoX19wMCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsyXSwgKGludDh4OF90KV9fcmV2MS52YWxbM10sIDQpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MV9wMTZfeDQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDR4NF90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MV94NF92KF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCAoaW50OHg4X3QpX19zMS52YWxbMl0sIChpbnQ4eDhfdClfX3MxLnZhbFszXSwgNSk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxX3AxNl94NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4NHg0X3QgX19zMSA9IF9fcDE7IFwKICBwb2x5MTZ4NHg0X3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzNdLCBfX3MxLnZhbFszXSwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX3g0X3YoX19wMCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsyXSwgKGludDh4OF90KV9fcmV2MS52YWxbM10sIDUpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MXFfcDhfeDQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4MTZ4NF90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfeDRfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCAoaW50OHgxNl90KV9fczEudmFsWzNdLCAzNik7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxcV9wOF94NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHgxNng0X3QgX19zMSA9IF9fcDE7IFwKICBwb2x5OHgxNng0X3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzNdLCBfX3MxLnZhbFszXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV94NF92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMl0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFszXSwgMzYpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MXFfcDE2X3g0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng4eDRfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFxX3g0X3YoX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgKGludDh4MTZfdClfX3MxLnZhbFsyXSwgKGludDh4MTZfdClfX3MxLnZhbFszXSwgMzcpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MXFfcDE2X3g0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng4eDRfdCBfX3MxID0gX19wMTsgXAogIHBvbHkxNng4eDRfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbM10sIF9fczEudmFsWzNdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFxX3g0X3YoX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgKGludDh4MTZfdClfX3JldjEudmFsWzNdLCAzNyk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxcV91OF94NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHgxNng0X3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV94NF92KF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIChpbnQ4eDE2X3QpX19zMS52YWxbMl0sIChpbnQ4eDE2X3QpX19zMS52YWxbM10sIDQ4KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDFxX3U4X3g0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDE2eDRfdCBfX3MxID0gX19wMTsgXAogIHVpbnQ4eDE2eDRfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbM10sIF9fczEudmFsWzNdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFxX3g0X3YoX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgKGludDh4MTZfdClfX3JldjEudmFsWzNdLCA0OCk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxcV91MzJfeDQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDR4NF90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfeDRfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCAoaW50OHgxNl90KV9fczEudmFsWzNdLCA1MCk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxcV91MzJfeDQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDR4NF90IF9fczEgPSBfX3AxOyBcCiAgdWludDMyeDR4NF90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFszXSwgX19zMS52YWxbM10sIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfeDRfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgKGludDh4MTZfdClfX3JldjEudmFsWzJdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbM10sIDUwKTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDFxX3U2NF94NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4Mng0X3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV94NF92KF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIChpbnQ4eDE2X3QpX19zMS52YWxbMl0sIChpbnQ4eDE2X3QpX19zMS52YWxbM10sIDUxKTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDFxX3U2NF94NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4Mng0X3QgX19zMSA9IF9fcDE7IFwKICB1aW50NjR4Mng0X3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzNdLCBfX3MxLnZhbFszXSwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV94NF92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMl0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFszXSwgNTEpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MXFfdTE2X3g0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng4eDRfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFxX3g0X3YoX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgKGludDh4MTZfdClfX3MxLnZhbFsyXSwgKGludDh4MTZfdClfX3MxLnZhbFszXSwgNDkpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MXFfdTE2X3g0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng4eDRfdCBfX3MxID0gX19wMTsgXAogIHVpbnQxNng4eDRfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbM10sIF9fczEudmFsWzNdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFxX3g0X3YoX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgKGludDh4MTZfdClfX3JldjEudmFsWzNdLCA0OSk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxcV9zOF94NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDE2eDRfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFxX3g0X3YoX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgKGludDh4MTZfdClfX3MxLnZhbFsyXSwgKGludDh4MTZfdClfX3MxLnZhbFszXSwgMzIpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MXFfczhfeDQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHgxNng0X3QgX19zMSA9IF9fcDE7IFwKICBpbnQ4eDE2eDRfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbM10sIF9fczEudmFsWzNdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFxX3g0X3YoX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgKGludDh4MTZfdClfX3JldjEudmFsWzNdLCAzMik7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxcV9mMzJfeDQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0eDRfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFxX3g0X3YoX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgKGludDh4MTZfdClfX3MxLnZhbFsyXSwgKGludDh4MTZfdClfX3MxLnZhbFszXSwgNDEpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MXFfZjMyX3g0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NHg0X3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDMyeDR4NF90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFszXSwgX19zMS52YWxbM10sIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfeDRfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgKGludDh4MTZfdClfX3JldjEudmFsWzJdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbM10sIDQxKTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDFxX3MzMl94NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0eDRfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFxX3g0X3YoX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgKGludDh4MTZfdClfX3MxLnZhbFsyXSwgKGludDh4MTZfdClfX3MxLnZhbFszXSwgMzQpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MXFfczMyX3g0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDR4NF90IF9fczEgPSBfX3AxOyBcCiAgaW50MzJ4NHg0X3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzNdLCBfX3MxLnZhbFszXSwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV94NF92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMl0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFszXSwgMzQpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MXFfczY0X3g0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJ4NF90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfeDRfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCAoaW50OHgxNl90KV9fczEudmFsWzNdLCAzNSk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxcV9zNjRfeDQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4Mng0X3QgX19zMSA9IF9fcDE7IFwKICBpbnQ2NHgyeDRfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbM10sIF9fczEudmFsWzNdLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFxX3g0X3YoX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgKGludDh4MTZfdClfX3JldjEudmFsWzNdLCAzNSk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxcV9zMTZfeDQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OHg0X3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV94NF92KF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIChpbnQ4eDE2X3QpX19zMS52YWxbMl0sIChpbnQ4eDE2X3QpX19zMS52YWxbM10sIDMzKTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDFxX3MxNl94NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4eDRfdCBfX3MxID0gX19wMTsgXAogIGludDE2eDh4NF90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFszXSwgX19zMS52YWxbM10sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfeDRfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgKGludDh4MTZfdClfX3JldjEudmFsWzJdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbM10sIDMzKTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDFfdThfeDQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4OHg0X3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX3g0X3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIChpbnQ4eDhfdClfX3MxLnZhbFsyXSwgKGludDh4OF90KV9fczEudmFsWzNdLCAxNik7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxX3U4X3g0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDh4NF90IF9fczEgPSBfX3AxOyBcCiAgdWludDh4OHg0X3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzNdLCBfX3MxLnZhbFszXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX3g0X3YoX19wMCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsyXSwgKGludDh4OF90KV9fcmV2MS52YWxbM10sIDE2KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDFfdTMyX3g0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMngyeDRfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFfeDRfdihfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgKGludDh4OF90KV9fczEudmFsWzJdLCAoaW50OHg4X3QpX19zMS52YWxbM10sIDE4KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDFfdTMyX3g0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMngyeDRfdCBfX3MxID0gX19wMTsgXAogIHVpbnQzMngyeDRfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbM10sIF9fczEudmFsWzNdLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFfeDRfdihfX3AwLCAoaW50OHg4X3QpX19yZXYxLnZhbFswXSwgKGludDh4OF90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDhfdClfX3JldjEudmFsWzJdLCAoaW50OHg4X3QpX19yZXYxLnZhbFszXSwgMTgpOyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2c3QxX3U2NF94NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4MXg0X3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX3g0X3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIChpbnQ4eDhfdClfX3MxLnZhbFsyXSwgKGludDh4OF90KV9fczEudmFsWzNdLCAxOSk7IFwKfSkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MV91MTZfeDQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDR4NF90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MV94NF92KF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCAoaW50OHg4X3QpX19zMS52YWxbMl0sIChpbnQ4eDhfdClfX3MxLnZhbFszXSwgMTcpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MV91MTZfeDQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDR4NF90IF9fczEgPSBfX3AxOyBcCiAgdWludDE2eDR4NF90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFszXSwgX19zMS52YWxbM10sIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MV94NF92KF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgKGludDh4OF90KV9fcmV2MS52YWxbMl0sIChpbnQ4eDhfdClfX3JldjEudmFsWzNdLCAxNyk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxX3M4X3g0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4OHg0X3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX3g0X3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIChpbnQ4eDhfdClfX3MxLnZhbFsyXSwgKGludDh4OF90KV9fczEudmFsWzNdLCAwKTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDFfczhfeDQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHg4eDRfdCBfX3MxID0gX19wMTsgXAogIGludDh4OHg0X3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzNdLCBfX3MxLnZhbFszXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX3g0X3YoX19wMCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsyXSwgKGludDh4OF90KV9fcmV2MS52YWxbM10sIDApOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MV9mMzJfeDQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMngyeDRfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFfeDRfdihfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgKGludDh4OF90KV9fczEudmFsWzJdLCAoaW50OHg4X3QpX19zMS52YWxbM10sIDkpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MV9mMzJfeDQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMngyeDRfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MzJ4Mng0X3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzNdLCBfX3MxLnZhbFszXSwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX3g0X3YoX19wMCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsyXSwgKGludDh4OF90KV9fcmV2MS52YWxbM10sIDkpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MV9zMzJfeDQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Mng0X3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX3g0X3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIChpbnQ4eDhfdClfX3MxLnZhbFsyXSwgKGludDh4OF90KV9fczEudmFsWzNdLCAyKTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDFfczMyX3g0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJ4NF90IF9fczEgPSBfX3AxOyBcCiAgaW50MzJ4Mng0X3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzNdLCBfX3MxLnZhbFszXSwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX3g0X3YoX19wMCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsyXSwgKGludDh4OF90KV9fcmV2MS52YWxbM10sIDIpOyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2c3QxX3M2NF94NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgxeDRfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFfeDRfdihfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgKGludDh4OF90KV9fczEudmFsWzJdLCAoaW50OHg4X3QpX19zMS52YWxbM10sIDMpOyBcCn0pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDFfczE2X3g0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDR4NF90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MV94NF92KF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCAoaW50OHg4X3QpX19zMS52YWxbMl0sIChpbnQ4eDhfdClfX3MxLnZhbFszXSwgMSk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxX3MxNl94NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng0eDRfdCBfX3MxID0gX19wMTsgXAogIGludDE2eDR4NF90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFszXSwgX19zMS52YWxbM10sIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MV94NF92KF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgKGludDh4OF90KV9fcmV2MS52YWxbMl0sIChpbnQ4eDhfdClfX3JldjEudmFsWzNdLCAxKTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDJfcDgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4OHgyX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QyX3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIDQpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0Ml9wOChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHg4eDJfdCBfX3MxID0gX19wMTsgXAogIHBvbHk4eDh4Ml90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QyX3YoX19wMCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCA0KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDJfcDE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng0eDJfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDJfdihfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgNSk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QyX3AxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4NHgyX3QgX19zMSA9IF9fcDE7IFwKICBwb2x5MTZ4NHgyX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDJfdihfX3AwLCAoaW50OHg4X3QpX19yZXYxLnZhbFswXSwgKGludDh4OF90KV9fcmV2MS52YWxbMV0sIDUpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MnFfcDgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4MTZ4Ml90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MnFfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAzNik7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QycV9wOChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHgxNngyX3QgX19zMSA9IF9fcDE7IFwKICBwb2x5OHgxNngyX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDJxX3YoX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIDM2KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDJxX3AxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4OHgyX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QycV92KF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIDM3KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDJxX3AxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4OHgyX3QgX19zMSA9IF9fcDE7IFwKICBwb2x5MTZ4OHgyX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDJxX3YoX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIDM3KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDJxX3U4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDE2eDJfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDJxX3YoX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgNDgpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MnFfdTgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4MTZ4Ml90IF9fczEgPSBfX3AxOyBcCiAgdWludDh4MTZ4Ml90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QycV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCA0OCk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QycV91MzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDR4Ml90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MnFfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCA1MCk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QycV91MzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDR4Ml90IF9fczEgPSBfX3AxOyBcCiAgdWludDMyeDR4Ml90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QycV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCA1MCk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QycV91MTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDh4Ml90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MnFfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCA0OSk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QycV91MTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDh4Ml90IF9fczEgPSBfX3AxOyBcCiAgdWludDE2eDh4Ml90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QycV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCA0OSk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QycV9zOChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDE2eDJfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDJxX3YoX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgMzIpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MnFfczgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHgxNngyX3QgX19zMSA9IF9fcDE7IFwKICBpbnQ4eDE2eDJfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MnFfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgMzIpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MnFfZjMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NHgyX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QycV92KF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIDQxKTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDJxX2YzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDR4Ml90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQzMng0eDJfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MnFfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgNDEpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MnFfczMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDR4Ml90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MnFfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAzNCk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QycV9zMzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NHgyX3QgX19zMSA9IF9fcDE7IFwKICBpbnQzMng0eDJfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MnFfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgMzQpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MnFfczE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDh4Ml90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MnFfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAzMyk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QycV9zMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OHgyX3QgX19zMSA9IF9fcDE7IFwKICBpbnQxNng4eDJfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MnFfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgMzMpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0Ml91OChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHg4eDJfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDJfdihfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgMTYpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0Ml91OChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHg4eDJfdCBfX3MxID0gX19wMTsgXAogIHVpbnQ4eDh4Ml90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QyX3YoX19wMCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCAxNik7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QyX3UzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4MngyX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QyX3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIDE4KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDJfdTMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMngyeDJfdCBfX3MxID0gX19wMTsgXAogIHVpbnQzMngyeDJfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0Ml92KF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgMTgpOyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2c3QyX3U2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4MXgyX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QyX3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIDE5KTsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QyX3UxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4NHgyX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QyX3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIDE3KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDJfdTE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng0eDJfdCBfX3MxID0gX19wMTsgXAogIHVpbnQxNng0eDJfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0Ml92KF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgMTcpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0Ml9zOChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDh4Ml90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0Ml92KF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCAwKTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDJfczgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHg4eDJfdCBfX3MxID0gX19wMTsgXAogIGludDh4OHgyX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDJfdihfX3AwLCAoaW50OHg4X3QpX19yZXYxLnZhbFswXSwgKGludDh4OF90KV9fcmV2MS52YWxbMV0sIDApOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0Ml9mMzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMngyeDJfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDJfdihfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgOSk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QyX2YzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJ4Ml90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQzMngyeDJfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0Ml92KF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgOSk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QyX3MzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMngyeDJfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDJfdihfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgMik7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QyX3MzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMngyeDJfdCBfX3MxID0gX19wMTsgXAogIGludDMyeDJ4Ml90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QyX3YoX19wMCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCAyKTsgXAp9KQojZW5kaWYKCiNkZWZpbmUgdnN0Ml9zNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4MXgyX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QyX3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIDMpOyBcCn0pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDJfczE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDR4Ml90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0Ml92KF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCAxKTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDJfczE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDR4Ml90IF9fczEgPSBfX3AxOyBcCiAgaW50MTZ4NHgyX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDJfdihfX3AwLCAoaW50OHg4X3QpX19yZXYxLnZhbFswXSwgKGludDh4OF90KV9fcmV2MS52YWxbMV0sIDEpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0Ml9sYW5lX3A4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4eDh4Ml90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0Ml9sYW5lX3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIF9fcDIsIDQpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0Ml9sYW5lX3A4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4eDh4Ml90IF9fczEgPSBfX3AxOyBcCiAgcG9seTh4OHgyX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDJfbGFuZV92KF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgX19wMiwgNCk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QyX2xhbmVfcDE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng0eDJfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDJfbGFuZV92KF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCBfX3AyLCA1KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDJfbGFuZV9wMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDR4Ml90IF9fczEgPSBfX3AxOyBcCiAgcG9seTE2eDR4Ml90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QyX2xhbmVfdihfX3AwLCAoaW50OHg4X3QpX19yZXYxLnZhbFswXSwgKGludDh4OF90KV9fcmV2MS52YWxbMV0sIF9fcDIsIDUpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MnFfbGFuZV9wMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDh4Ml90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MnFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIF9fcDIsIDM3KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDJxX2xhbmVfcDE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng4eDJfdCBfX3MxID0gX19wMTsgXAogIHBvbHkxNng4eDJfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MnFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCBfX3AyLCAzNyk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QycV9sYW5lX3UzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NHgyX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QycV9sYW5lX3YoX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgX19wMiwgNTApOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MnFfbGFuZV91MzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDR4Ml90IF9fczEgPSBfX3AxOyBcCiAgdWludDMyeDR4Ml90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QycV9sYW5lX3YoX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIF9fcDIsIDUwKTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDJxX2xhbmVfdTE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng4eDJfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDJxX2xhbmVfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCBfX3AyLCA0OSk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QycV9sYW5lX3UxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4OHgyX3QgX19zMSA9IF9fcDE7IFwKICB1aW50MTZ4OHgyX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDJxX2xhbmVfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgX19wMiwgNDkpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MnFfbGFuZV9mMzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0eDJfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDJxX2xhbmVfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCBfX3AyLCA0MSk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QycV9sYW5lX2YzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDR4Ml90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQzMng0eDJfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MnFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCBfX3AyLCA0MSk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QycV9sYW5lX3MzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0eDJfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDJxX2xhbmVfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCBfX3AyLCAzNCk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QycV9sYW5lX3MzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0eDJfdCBfX3MxID0gX19wMTsgXAogIGludDMyeDR4Ml90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QycV9sYW5lX3YoX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIF9fcDIsIDM0KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDJxX2xhbmVfczE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDh4Ml90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MnFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIF9fcDIsIDMzKTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDJxX2xhbmVfczE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDh4Ml90IF9fczEgPSBfX3AxOyBcCiAgaW50MTZ4OHgyX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDJxX2xhbmVfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgX19wMiwgMzMpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0Ml9sYW5lX3U4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDh4Ml90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0Ml9sYW5lX3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIF9fcDIsIDE2KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDJfbGFuZV91OChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHg4eDJfdCBfX3MxID0gX19wMTsgXAogIHVpbnQ4eDh4Ml90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QyX2xhbmVfdihfX3AwLCAoaW50OHg4X3QpX19yZXYxLnZhbFswXSwgKGludDh4OF90KV9fcmV2MS52YWxbMV0sIF9fcDIsIDE2KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDJfbGFuZV91MzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDJ4Ml90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0Ml9sYW5lX3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIF9fcDIsIDE4KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDJfbGFuZV91MzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDJ4Ml90IF9fczEgPSBfX3AxOyBcCiAgdWludDMyeDJ4Ml90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QyX2xhbmVfdihfX3AwLCAoaW50OHg4X3QpX19yZXYxLnZhbFswXSwgKGludDh4OF90KV9fcmV2MS52YWxbMV0sIF9fcDIsIDE4KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDJfbGFuZV91MTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDR4Ml90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0Ml9sYW5lX3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIF9fcDIsIDE3KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDJfbGFuZV91MTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDR4Ml90IF9fczEgPSBfX3AxOyBcCiAgdWludDE2eDR4Ml90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QyX2xhbmVfdihfX3AwLCAoaW50OHg4X3QpX19yZXYxLnZhbFswXSwgKGludDh4OF90KV9fcmV2MS52YWxbMV0sIF9fcDIsIDE3KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDJfbGFuZV9zOChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDh4Ml90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0Ml9sYW5lX3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIF9fcDIsIDApOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0Ml9sYW5lX3M4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4OHgyX3QgX19zMSA9IF9fcDE7IFwKICBpbnQ4eDh4Ml90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QyX2xhbmVfdihfX3AwLCAoaW50OHg4X3QpX19yZXYxLnZhbFswXSwgKGludDh4OF90KV9fcmV2MS52YWxbMV0sIF9fcDIsIDApOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0Ml9sYW5lX2YzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJ4Ml90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0Ml9sYW5lX3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIF9fcDIsIDkpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0Ml9sYW5lX2YzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJ4Ml90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQzMngyeDJfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0Ml9sYW5lX3YoX19wMCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCBfX3AyLCA5KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDJfbGFuZV9zMzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4MngyX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QyX2xhbmVfdihfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgX19wMiwgMik7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QyX2xhbmVfczMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJ4Ml90IF9fczEgPSBfX3AxOyBcCiAgaW50MzJ4MngyX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDJfbGFuZV92KF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgX19wMiwgMik7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QyX2xhbmVfczE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDR4Ml90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0Ml9sYW5lX3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIF9fcDIsIDEpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0Ml9sYW5lX3MxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng0eDJfdCBfX3MxID0gX19wMTsgXAogIGludDE2eDR4Ml90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QyX2xhbmVfdihfX3AwLCAoaW50OHg4X3QpX19yZXYxLnZhbFswXSwgKGludDh4OF90KV9fcmV2MS52YWxbMV0sIF9fcDIsIDEpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0M19wOChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHg4eDNfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDNfdihfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgKGludDh4OF90KV9fczEudmFsWzJdLCA0KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDNfcDgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4OHgzX3QgX19zMSA9IF9fcDE7IFwKICBwb2x5OHg4eDNfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QzX3YoX19wMCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsyXSwgNCk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QzX3AxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4NHgzX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QzX3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIChpbnQ4eDhfdClfX3MxLnZhbFsyXSwgNSk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QzX3AxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4NHgzX3QgX19zMSA9IF9fcDE7IFwKICBwb2x5MTZ4NHgzX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0M192KF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgKGludDh4OF90KV9fcmV2MS52YWxbMl0sIDUpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0M3FfcDgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4MTZ4M190IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0M3FfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCAzNik7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QzcV9wOChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHgxNngzX3QgX19zMSA9IF9fcDE7IFwKICBwb2x5OHgxNngzX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0M3FfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgKGludDh4MTZfdClfX3JldjEudmFsWzJdLCAzNik7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QzcV9wMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDh4M190IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0M3FfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCAzNyk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QzcV9wMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDh4M190IF9fczEgPSBfX3AxOyBcCiAgcG9seTE2eDh4M190IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDNxX3YoX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgMzcpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0M3FfdTgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4MTZ4M190IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0M3FfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCA0OCk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QzcV91OChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHgxNngzX3QgX19zMSA9IF9fcDE7IFwKICB1aW50OHgxNngzX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0M3FfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgKGludDh4MTZfdClfX3JldjEudmFsWzJdLCA0OCk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QzcV91MzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDR4M190IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0M3FfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCA1MCk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QzcV91MzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDR4M190IF9fczEgPSBfX3AxOyBcCiAgdWludDMyeDR4M190IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDNxX3YoX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgNTApOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0M3FfdTE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng4eDNfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDNxX3YoX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgKGludDh4MTZfdClfX3MxLnZhbFsyXSwgNDkpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0M3FfdTE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng4eDNfdCBfX3MxID0gX19wMTsgXAogIHVpbnQxNng4eDNfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QzcV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMl0sIDQ5KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDNxX3M4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4MTZ4M190IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0M3FfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCAzMik7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QzcV9zOChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDE2eDNfdCBfX3MxID0gX19wMTsgXAogIGludDh4MTZ4M190IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDNxX3YoX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgMzIpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0M3FfZjMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NHgzX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QzcV92KF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIChpbnQ4eDE2X3QpX19zMS52YWxbMl0sIDQxKTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDNxX2YzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDR4M190IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQzMng0eDNfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QzcV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMl0sIDQxKTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDNxX3MzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0eDNfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDNxX3YoX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgKGludDh4MTZfdClfX3MxLnZhbFsyXSwgMzQpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0M3FfczMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDR4M190IF9fczEgPSBfX3AxOyBcCiAgaW50MzJ4NHgzX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0M3FfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgKGludDh4MTZfdClfX3JldjEudmFsWzJdLCAzNCk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QzcV9zMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OHgzX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QzcV92KF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIChpbnQ4eDE2X3QpX19zMS52YWxbMl0sIDMzKTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDNxX3MxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4eDNfdCBfX3MxID0gX19wMTsgXAogIGludDE2eDh4M190IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDNxX3YoX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgMzMpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0M191OChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHg4eDNfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDNfdihfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgKGludDh4OF90KV9fczEudmFsWzJdLCAxNik7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QzX3U4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDh4M190IF9fczEgPSBfX3AxOyBcCiAgdWludDh4OHgzX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0M192KF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgKGludDh4OF90KV9fcmV2MS52YWxbMl0sIDE2KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDNfdTMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMngyeDNfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDNfdihfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgKGludDh4OF90KV9fczEudmFsWzJdLCAxOCk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QzX3UzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4MngzX3QgX19zMSA9IF9fcDE7IFwKICB1aW50MzJ4MngzX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0M192KF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgKGludDh4OF90KV9fcmV2MS52YWxbMl0sIDE4KTsgXAp9KQojZW5kaWYKCiNkZWZpbmUgdnN0M191NjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDF4M190IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0M192KF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCAoaW50OHg4X3QpX19zMS52YWxbMl0sIDE5KTsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QzX3UxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4NHgzX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QzX3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIChpbnQ4eDhfdClfX3MxLnZhbFsyXSwgMTcpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0M191MTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDR4M190IF9fczEgPSBfX3AxOyBcCiAgdWludDE2eDR4M190IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDNfdihfX3AwLCAoaW50OHg4X3QpX19yZXYxLnZhbFswXSwgKGludDh4OF90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDhfdClfX3JldjEudmFsWzJdLCAxNyk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QzX3M4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4OHgzX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QzX3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIChpbnQ4eDhfdClfX3MxLnZhbFsyXSwgMCk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QzX3M4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4OHgzX3QgX19zMSA9IF9fcDE7IFwKICBpbnQ4eDh4M190IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDNfdihfX3AwLCAoaW50OHg4X3QpX19yZXYxLnZhbFswXSwgKGludDh4OF90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDhfdClfX3JldjEudmFsWzJdLCAwKTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDNfZjMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4MngzX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QzX3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIChpbnQ4eDhfdClfX3MxLnZhbFsyXSwgOSk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QzX2YzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJ4M190IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQzMngyeDNfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QzX3YoX19wMCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsyXSwgOSk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QzX3MzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMngyeDNfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDNfdihfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgKGludDh4OF90KV9fczEudmFsWzJdLCAyKTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDNfczMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJ4M190IF9fczEgPSBfX3AxOyBcCiAgaW50MzJ4MngzX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0M192KF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgKGludDh4OF90KV9fcmV2MS52YWxbMl0sIDIpOyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2c3QzX3M2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgxeDNfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDNfdihfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgKGludDh4OF90KV9fczEudmFsWzJdLCAzKTsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QzX3MxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng0eDNfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDNfdihfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgKGludDh4OF90KV9fczEudmFsWzJdLCAxKTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDNfczE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDR4M190IF9fczEgPSBfX3AxOyBcCiAgaW50MTZ4NHgzX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0M192KF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgKGludDh4OF90KV9fcmV2MS52YWxbMl0sIDEpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0M19sYW5lX3A4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4eDh4M190IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0M19sYW5lX3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIChpbnQ4eDhfdClfX3MxLnZhbFsyXSwgX19wMiwgNCk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QzX2xhbmVfcDgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4OHgzX3QgX19zMSA9IF9fcDE7IFwKICBwb2x5OHg4eDNfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QzX2xhbmVfdihfX3AwLCAoaW50OHg4X3QpX19yZXYxLnZhbFswXSwgKGludDh4OF90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDhfdClfX3JldjEudmFsWzJdLCBfX3AyLCA0KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDNfbGFuZV9wMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDR4M190IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0M19sYW5lX3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIChpbnQ4eDhfdClfX3MxLnZhbFsyXSwgX19wMiwgNSk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QzX2xhbmVfcDE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng0eDNfdCBfX3MxID0gX19wMTsgXAogIHBvbHkxNng0eDNfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QzX2xhbmVfdihfX3AwLCAoaW50OHg4X3QpX19yZXYxLnZhbFswXSwgKGludDh4OF90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDhfdClfX3JldjEudmFsWzJdLCBfX3AyLCA1KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDNxX2xhbmVfcDE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng4eDNfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDNxX2xhbmVfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCBfX3AyLCAzNyk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QzcV9sYW5lX3AxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4OHgzX3QgX19zMSA9IF9fcDE7IFwKICBwb2x5MTZ4OHgzX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0M3FfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMl0sIF9fcDIsIDM3KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDNxX2xhbmVfdTMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0eDNfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDNxX2xhbmVfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCBfX3AyLCA1MCk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QzcV9sYW5lX3UzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NHgzX3QgX19zMSA9IF9fcDE7IFwKICB1aW50MzJ4NHgzX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0M3FfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMl0sIF9fcDIsIDUwKTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDNxX2xhbmVfdTE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng4eDNfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDNxX2xhbmVfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCBfX3AyLCA0OSk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QzcV9sYW5lX3UxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4OHgzX3QgX19zMSA9IF9fcDE7IFwKICB1aW50MTZ4OHgzX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0M3FfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMl0sIF9fcDIsIDQ5KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDNxX2xhbmVfZjMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NHgzX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QzcV9sYW5lX3YoX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgKGludDh4MTZfdClfX3MxLnZhbFsyXSwgX19wMiwgNDEpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0M3FfbGFuZV9mMzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0eDNfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MzJ4NHgzX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0M3FfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMl0sIF9fcDIsIDQxKTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDNxX2xhbmVfczMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDR4M190IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0M3FfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIChpbnQ4eDE2X3QpX19zMS52YWxbMl0sIF9fcDIsIDM0KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDNxX2xhbmVfczMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDR4M190IF9fczEgPSBfX3AxOyBcCiAgaW50MzJ4NHgzX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0M3FfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMl0sIF9fcDIsIDM0KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDNxX2xhbmVfczE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDh4M190IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0M3FfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIChpbnQ4eDE2X3QpX19zMS52YWxbMl0sIF9fcDIsIDMzKTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDNxX2xhbmVfczE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDh4M190IF9fczEgPSBfX3AxOyBcCiAgaW50MTZ4OHgzX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0M3FfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMl0sIF9fcDIsIDMzKTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDNfbGFuZV91OChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHg4eDNfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDNfbGFuZV92KF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCAoaW50OHg4X3QpX19zMS52YWxbMl0sIF9fcDIsIDE2KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDNfbGFuZV91OChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHg4eDNfdCBfX3MxID0gX19wMTsgXAogIHVpbnQ4eDh4M190IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDNfbGFuZV92KF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgKGludDh4OF90KV9fcmV2MS52YWxbMl0sIF9fcDIsIDE2KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDNfbGFuZV91MzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDJ4M190IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0M19sYW5lX3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIChpbnQ4eDhfdClfX3MxLnZhbFsyXSwgX19wMiwgMTgpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0M19sYW5lX3UzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4MngzX3QgX19zMSA9IF9fcDE7IFwKICB1aW50MzJ4MngzX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0M19sYW5lX3YoX19wMCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsyXSwgX19wMiwgMTgpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0M19sYW5lX3UxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4NHgzX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QzX2xhbmVfdihfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgKGludDh4OF90KV9fczEudmFsWzJdLCBfX3AyLCAxNyk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QzX2xhbmVfdTE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng0eDNfdCBfX3MxID0gX19wMTsgXAogIHVpbnQxNng0eDNfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QzX2xhbmVfdihfX3AwLCAoaW50OHg4X3QpX19yZXYxLnZhbFswXSwgKGludDh4OF90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDhfdClfX3JldjEudmFsWzJdLCBfX3AyLCAxNyk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QzX2xhbmVfczgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHg4eDNfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDNfbGFuZV92KF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCAoaW50OHg4X3QpX19zMS52YWxbMl0sIF9fcDIsIDApOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0M19sYW5lX3M4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4OHgzX3QgX19zMSA9IF9fcDE7IFwKICBpbnQ4eDh4M190IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDNfbGFuZV92KF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgKGludDh4OF90KV9fcmV2MS52YWxbMl0sIF9fcDIsIDApOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0M19sYW5lX2YzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJ4M190IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0M19sYW5lX3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIChpbnQ4eDhfdClfX3MxLnZhbFsyXSwgX19wMiwgOSk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QzX2xhbmVfZjMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4MngzX3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDMyeDJ4M190IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDNfbGFuZV92KF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgKGludDh4OF90KV9fcmV2MS52YWxbMl0sIF9fcDIsIDkpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0M19sYW5lX3MzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMngyeDNfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDNfbGFuZV92KF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCAoaW50OHg4X3QpX19zMS52YWxbMl0sIF9fcDIsIDIpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0M19sYW5lX3MzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMngyeDNfdCBfX3MxID0gX19wMTsgXAogIGludDMyeDJ4M190IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDNfbGFuZV92KF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgKGludDh4OF90KV9fcmV2MS52YWxbMl0sIF9fcDIsIDIpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0M19sYW5lX3MxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng0eDNfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDNfbGFuZV92KF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCAoaW50OHg4X3QpX19zMS52YWxbMl0sIF9fcDIsIDEpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0M19sYW5lX3MxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng0eDNfdCBfX3MxID0gX19wMTsgXAogIGludDE2eDR4M190IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDNfbGFuZV92KF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgKGludDh4OF90KV9fcmV2MS52YWxbMl0sIF9fcDIsIDEpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0NF9wOChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHg4eDRfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDRfdihfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgKGludDh4OF90KV9fczEudmFsWzJdLCAoaW50OHg4X3QpX19zMS52YWxbM10sIDQpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0NF9wOChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHg4eDRfdCBfX3MxID0gX19wMTsgXAogIHBvbHk4eDh4NF90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFszXSwgX19zMS52YWxbM10sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0NF92KF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgKGludDh4OF90KV9fcmV2MS52YWxbMl0sIChpbnQ4eDhfdClfX3JldjEudmFsWzNdLCA0KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDRfcDE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng0eDRfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDRfdihfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgKGludDh4OF90KV9fczEudmFsWzJdLCAoaW50OHg4X3QpX19zMS52YWxbM10sIDUpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0NF9wMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDR4NF90IF9fczEgPSBfX3AxOyBcCiAgcG9seTE2eDR4NF90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFszXSwgX19zMS52YWxbM10sIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0NF92KF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgKGludDh4OF90KV9fcmV2MS52YWxbMl0sIChpbnQ4eDhfdClfX3JldjEudmFsWzNdLCA1KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDRxX3A4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4eDE2eDRfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDRxX3YoX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgKGludDh4MTZfdClfX3MxLnZhbFsyXSwgKGludDh4MTZfdClfX3MxLnZhbFszXSwgMzYpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0NHFfcDgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4MTZ4NF90IF9fczEgPSBfX3AxOyBcCiAgcG9seTh4MTZ4NF90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFszXSwgX19zMS52YWxbM10sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0NHFfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgKGludDh4MTZfdClfX3JldjEudmFsWzJdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbM10sIDM2KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDRxX3AxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4OHg0X3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3Q0cV92KF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIChpbnQ4eDE2X3QpX19zMS52YWxbMl0sIChpbnQ4eDE2X3QpX19zMS52YWxbM10sIDM3KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDRxX3AxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4OHg0X3QgX19zMSA9IF9fcDE7IFwKICBwb2x5MTZ4OHg0X3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzNdLCBfX3MxLnZhbFszXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3Q0cV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMl0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFszXSwgMzcpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0NHFfdTgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4MTZ4NF90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0NHFfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCAoaW50OHgxNl90KV9fczEudmFsWzNdLCA0OCk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3Q0cV91OChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHgxNng0X3QgX19zMSA9IF9fcDE7IFwKICB1aW50OHgxNng0X3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzNdLCBfX3MxLnZhbFszXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3Q0cV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMl0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFszXSwgNDgpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0NHFfdTMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0eDRfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDRxX3YoX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgKGludDh4MTZfdClfX3MxLnZhbFsyXSwgKGludDh4MTZfdClfX3MxLnZhbFszXSwgNTApOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0NHFfdTMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0eDRfdCBfX3MxID0gX19wMTsgXAogIHVpbnQzMng0eDRfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbM10sIF9fczEudmFsWzNdLCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDRxX3YoX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgKGludDh4MTZfdClfX3JldjEudmFsWzNdLCA1MCk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3Q0cV91MTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDh4NF90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0NHFfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCAoaW50OHgxNl90KV9fczEudmFsWzNdLCA0OSk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3Q0cV91MTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDh4NF90IF9fczEgPSBfX3AxOyBcCiAgdWludDE2eDh4NF90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFszXSwgX19zMS52YWxbM10sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0NHFfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgKGludDh4MTZfdClfX3JldjEudmFsWzJdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbM10sIDQ5KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDRxX3M4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4MTZ4NF90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0NHFfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCAoaW50OHgxNl90KV9fczEudmFsWzNdLCAzMik7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3Q0cV9zOChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDE2eDRfdCBfX3MxID0gX19wMTsgXAogIGludDh4MTZ4NF90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFszXSwgX19zMS52YWxbM10sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0NHFfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgKGludDh4MTZfdClfX3JldjEudmFsWzJdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbM10sIDMyKTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDRxX2YzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDR4NF90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0NHFfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCAoaW50OHgxNl90KV9fczEudmFsWzNdLCA0MSk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3Q0cV9mMzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0eDRfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MzJ4NHg0X3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzNdLCBfX3MxLnZhbFszXSwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3Q0cV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMl0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFszXSwgNDEpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0NHFfczMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDR4NF90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0NHFfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCAoaW50OHgxNl90KV9fczEudmFsWzNdLCAzNCk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3Q0cV9zMzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NHg0X3QgX19zMSA9IF9fcDE7IFwKICBpbnQzMng0eDRfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbM10sIF9fczEudmFsWzNdLCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDRxX3YoX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgKGludDh4MTZfdClfX3JldjEudmFsWzNdLCAzNCk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3Q0cV9zMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OHg0X3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3Q0cV92KF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIChpbnQ4eDE2X3QpX19zMS52YWxbMl0sIChpbnQ4eDE2X3QpX19zMS52YWxbM10sIDMzKTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDRxX3MxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4eDRfdCBfX3MxID0gX19wMTsgXAogIGludDE2eDh4NF90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFszXSwgX19zMS52YWxbM10sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0NHFfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgKGludDh4MTZfdClfX3JldjEudmFsWzJdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbM10sIDMzKTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDRfdTgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4OHg0X3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3Q0X3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIChpbnQ4eDhfdClfX3MxLnZhbFsyXSwgKGludDh4OF90KV9fczEudmFsWzNdLCAxNik7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3Q0X3U4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDh4NF90IF9fczEgPSBfX3AxOyBcCiAgdWludDh4OHg0X3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzNdLCBfX3MxLnZhbFszXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3Q0X3YoX19wMCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsyXSwgKGludDh4OF90KV9fcmV2MS52YWxbM10sIDE2KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDRfdTMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMngyeDRfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDRfdihfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgKGludDh4OF90KV9fczEudmFsWzJdLCAoaW50OHg4X3QpX19zMS52YWxbM10sIDE4KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDRfdTMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMngyeDRfdCBfX3MxID0gX19wMTsgXAogIHVpbnQzMngyeDRfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbM10sIF9fczEudmFsWzNdLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDRfdihfX3AwLCAoaW50OHg4X3QpX19yZXYxLnZhbFswXSwgKGludDh4OF90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDhfdClfX3JldjEudmFsWzJdLCAoaW50OHg4X3QpX19yZXYxLnZhbFszXSwgMTgpOyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2c3Q0X3U2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4MXg0X3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3Q0X3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIChpbnQ4eDhfdClfX3MxLnZhbFsyXSwgKGludDh4OF90KV9fczEudmFsWzNdLCAxOSk7IFwKfSkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0NF91MTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDR4NF90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0NF92KF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCAoaW50OHg4X3QpX19zMS52YWxbMl0sIChpbnQ4eDhfdClfX3MxLnZhbFszXSwgMTcpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0NF91MTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDR4NF90IF9fczEgPSBfX3AxOyBcCiAgdWludDE2eDR4NF90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFszXSwgX19zMS52YWxbM10sIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0NF92KF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgKGludDh4OF90KV9fcmV2MS52YWxbMl0sIChpbnQ4eDhfdClfX3JldjEudmFsWzNdLCAxNyk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3Q0X3M4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4OHg0X3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3Q0X3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIChpbnQ4eDhfdClfX3MxLnZhbFsyXSwgKGludDh4OF90KV9fczEudmFsWzNdLCAwKTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDRfczgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHg4eDRfdCBfX3MxID0gX19wMTsgXAogIGludDh4OHg0X3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzNdLCBfX3MxLnZhbFszXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3Q0X3YoX19wMCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsyXSwgKGludDh4OF90KV9fcmV2MS52YWxbM10sIDApOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0NF9mMzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMngyeDRfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDRfdihfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgKGludDh4OF90KV9fczEudmFsWzJdLCAoaW50OHg4X3QpX19zMS52YWxbM10sIDkpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0NF9mMzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMngyeDRfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MzJ4Mng0X3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzNdLCBfX3MxLnZhbFszXSwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3Q0X3YoX19wMCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsyXSwgKGludDh4OF90KV9fcmV2MS52YWxbM10sIDkpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0NF9zMzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Mng0X3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3Q0X3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIChpbnQ4eDhfdClfX3MxLnZhbFsyXSwgKGludDh4OF90KV9fczEudmFsWzNdLCAyKTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDRfczMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJ4NF90IF9fczEgPSBfX3AxOyBcCiAgaW50MzJ4Mng0X3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzNdLCBfX3MxLnZhbFszXSwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3Q0X3YoX19wMCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsyXSwgKGludDh4OF90KV9fcmV2MS52YWxbM10sIDIpOyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2c3Q0X3M2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgxeDRfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDRfdihfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgKGludDh4OF90KV9fczEudmFsWzJdLCAoaW50OHg4X3QpX19zMS52YWxbM10sIDMpOyBcCn0pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDRfczE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDR4NF90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0NF92KF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCAoaW50OHg4X3QpX19zMS52YWxbMl0sIChpbnQ4eDhfdClfX3MxLnZhbFszXSwgMSk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3Q0X3MxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng0eDRfdCBfX3MxID0gX19wMTsgXAogIGludDE2eDR4NF90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFszXSwgX19zMS52YWxbM10sIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0NF92KF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgKGludDh4OF90KV9fcmV2MS52YWxbMl0sIChpbnQ4eDhfdClfX3JldjEudmFsWzNdLCAxKTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDRfbGFuZV9wOChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHg4eDRfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDRfbGFuZV92KF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCAoaW50OHg4X3QpX19zMS52YWxbMl0sIChpbnQ4eDhfdClfX3MxLnZhbFszXSwgX19wMiwgNCk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3Q0X2xhbmVfcDgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4OHg0X3QgX19zMSA9IF9fcDE7IFwKICBwb2x5OHg4eDRfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbM10sIF9fczEudmFsWzNdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDRfbGFuZV92KF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgKGludDh4OF90KV9fcmV2MS52YWxbMl0sIChpbnQ4eDhfdClfX3JldjEudmFsWzNdLCBfX3AyLCA0KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDRfbGFuZV9wMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDR4NF90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0NF9sYW5lX3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIChpbnQ4eDhfdClfX3MxLnZhbFsyXSwgKGludDh4OF90KV9fczEudmFsWzNdLCBfX3AyLCA1KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDRfbGFuZV9wMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDR4NF90IF9fczEgPSBfX3AxOyBcCiAgcG9seTE2eDR4NF90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFszXSwgX19zMS52YWxbM10sIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0NF9sYW5lX3YoX19wMCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsyXSwgKGludDh4OF90KV9fcmV2MS52YWxbM10sIF9fcDIsIDUpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0NHFfbGFuZV9wMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDh4NF90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0NHFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIChpbnQ4eDE2X3QpX19zMS52YWxbMl0sIChpbnQ4eDE2X3QpX19zMS52YWxbM10sIF9fcDIsIDM3KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDRxX2xhbmVfcDE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng4eDRfdCBfX3MxID0gX19wMTsgXAogIHBvbHkxNng4eDRfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbM10sIF9fczEudmFsWzNdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDRxX2xhbmVfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgKGludDh4MTZfdClfX3JldjEudmFsWzJdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbM10sIF9fcDIsIDM3KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDRxX2xhbmVfdTMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0eDRfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDRxX2xhbmVfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCAoaW50OHgxNl90KV9fczEudmFsWzNdLCBfX3AyLCA1MCk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3Q0cV9sYW5lX3UzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NHg0X3QgX19zMSA9IF9fcDE7IFwKICB1aW50MzJ4NHg0X3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzNdLCBfX3MxLnZhbFszXSwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3Q0cV9sYW5lX3YoX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgKGludDh4MTZfdClfX3JldjEudmFsWzNdLCBfX3AyLCA1MCk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3Q0cV9sYW5lX3UxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4OHg0X3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3Q0cV9sYW5lX3YoX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgKGludDh4MTZfdClfX3MxLnZhbFsyXSwgKGludDh4MTZfdClfX3MxLnZhbFszXSwgX19wMiwgNDkpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0NHFfbGFuZV91MTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDh4NF90IF9fczEgPSBfX3AxOyBcCiAgdWludDE2eDh4NF90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFszXSwgX19zMS52YWxbM10sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0NHFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMl0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFszXSwgX19wMiwgNDkpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0NHFfbGFuZV9mMzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0eDRfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDRxX2xhbmVfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCAoaW50OHgxNl90KV9fczEudmFsWzNdLCBfX3AyLCA0MSk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3Q0cV9sYW5lX2YzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDR4NF90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQzMng0eDRfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbM10sIF9fczEudmFsWzNdLCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDRxX2xhbmVfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgKGludDh4MTZfdClfX3JldjEudmFsWzJdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbM10sIF9fcDIsIDQxKTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDRxX2xhbmVfczMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDR4NF90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0NHFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIChpbnQ4eDE2X3QpX19zMS52YWxbMl0sIChpbnQ4eDE2X3QpX19zMS52YWxbM10sIF9fcDIsIDM0KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDRxX2xhbmVfczMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDR4NF90IF9fczEgPSBfX3AxOyBcCiAgaW50MzJ4NHg0X3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzNdLCBfX3MxLnZhbFszXSwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3Q0cV9sYW5lX3YoX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgKGludDh4MTZfdClfX3JldjEudmFsWzNdLCBfX3AyLCAzNCk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3Q0cV9sYW5lX3MxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4eDRfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDRxX2xhbmVfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCAoaW50OHgxNl90KV9fczEudmFsWzNdLCBfX3AyLCAzMyk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3Q0cV9sYW5lX3MxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4eDRfdCBfX3MxID0gX19wMTsgXAogIGludDE2eDh4NF90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFszXSwgX19zMS52YWxbM10sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0NHFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMl0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFszXSwgX19wMiwgMzMpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0NF9sYW5lX3U4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDh4NF90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0NF9sYW5lX3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIChpbnQ4eDhfdClfX3MxLnZhbFsyXSwgKGludDh4OF90KV9fczEudmFsWzNdLCBfX3AyLCAxNik7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3Q0X2xhbmVfdTgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4OHg0X3QgX19zMSA9IF9fcDE7IFwKICB1aW50OHg4eDRfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbM10sIF9fczEudmFsWzNdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDRfbGFuZV92KF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgKGludDh4OF90KV9fcmV2MS52YWxbMl0sIChpbnQ4eDhfdClfX3JldjEudmFsWzNdLCBfX3AyLCAxNik7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3Q0X2xhbmVfdTMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMngyeDRfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDRfbGFuZV92KF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCAoaW50OHg4X3QpX19zMS52YWxbMl0sIChpbnQ4eDhfdClfX3MxLnZhbFszXSwgX19wMiwgMTgpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0NF9sYW5lX3UzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4Mng0X3QgX19zMSA9IF9fcDE7IFwKICB1aW50MzJ4Mng0X3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzNdLCBfX3MxLnZhbFszXSwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3Q0X2xhbmVfdihfX3AwLCAoaW50OHg4X3QpX19yZXYxLnZhbFswXSwgKGludDh4OF90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDhfdClfX3JldjEudmFsWzJdLCAoaW50OHg4X3QpX19yZXYxLnZhbFszXSwgX19wMiwgMTgpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0NF9sYW5lX3UxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4NHg0X3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3Q0X2xhbmVfdihfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgKGludDh4OF90KV9fczEudmFsWzJdLCAoaW50OHg4X3QpX19zMS52YWxbM10sIF9fcDIsIDE3KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDRfbGFuZV91MTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDR4NF90IF9fczEgPSBfX3AxOyBcCiAgdWludDE2eDR4NF90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFszXSwgX19zMS52YWxbM10sIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0NF9sYW5lX3YoX19wMCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsyXSwgKGludDh4OF90KV9fcmV2MS52YWxbM10sIF9fcDIsIDE3KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDRfbGFuZV9zOChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDh4NF90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0NF9sYW5lX3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIChpbnQ4eDhfdClfX3MxLnZhbFsyXSwgKGludDh4OF90KV9fczEudmFsWzNdLCBfX3AyLCAwKTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDRfbGFuZV9zOChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDh4NF90IF9fczEgPSBfX3AxOyBcCiAgaW50OHg4eDRfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbM10sIF9fczEudmFsWzNdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDRfbGFuZV92KF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgKGludDh4OF90KV9fcmV2MS52YWxbMl0sIChpbnQ4eDhfdClfX3JldjEudmFsWzNdLCBfX3AyLCAwKTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDRfbGFuZV9mMzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMngyeDRfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDRfbGFuZV92KF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCAoaW50OHg4X3QpX19zMS52YWxbMl0sIChpbnQ4eDhfdClfX3MxLnZhbFszXSwgX19wMiwgOSk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3Q0X2xhbmVfZjMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4Mng0X3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDMyeDJ4NF90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFszXSwgX19zMS52YWxbM10sIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0NF9sYW5lX3YoX19wMCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsyXSwgKGludDh4OF90KV9fcmV2MS52YWxbM10sIF9fcDIsIDkpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0NF9sYW5lX3MzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMngyeDRfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDRfbGFuZV92KF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCAoaW50OHg4X3QpX19zMS52YWxbMl0sIChpbnQ4eDhfdClfX3MxLnZhbFszXSwgX19wMiwgMik7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3Q0X2xhbmVfczMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJ4NF90IF9fczEgPSBfX3AxOyBcCiAgaW50MzJ4Mng0X3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzNdLCBfX3MxLnZhbFszXSwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3Q0X2xhbmVfdihfX3AwLCAoaW50OHg4X3QpX19yZXYxLnZhbFswXSwgKGludDh4OF90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDhfdClfX3JldjEudmFsWzJdLCAoaW50OHg4X3QpX19yZXYxLnZhbFszXSwgX19wMiwgMik7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3Q0X2xhbmVfczE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDR4NF90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0NF9sYW5lX3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIChpbnQ4eDhfdClfX3MxLnZhbFsyXSwgKGludDh4OF90KV9fczEudmFsWzNdLCBfX3AyLCAxKTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDRfbGFuZV9zMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NHg0X3QgX19zMSA9IF9fcDE7IFwKICBpbnQxNng0eDRfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbM10sIF9fczEudmFsWzNdLCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDRfbGFuZV92KF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgKGludDh4OF90KV9fcmV2MS52YWxbMl0sIChpbnQ4eDhfdClfX3JldjEudmFsWzNdLCBfX3AyLCAxKTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDE2X3QgdnN1YnFfdTgodWludDh4MTZfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEpIHsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAtIF9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4MTZfdCB2c3VicV91OCh1aW50OHgxNl90IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSkgewogIHVpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwIC0gX19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZzdWJxX3UzMih1aW50MzJ4NF90IF9fcDAsIHVpbnQzMng0X3QgX19wMSkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwIC0gX19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4NF90IHZzdWJxX3UzMih1aW50MzJ4NF90IF9fcDAsIHVpbnQzMng0X3QgX19wMSkgewogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwIC0gX19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50NjR4Ml90IHZzdWJxX3U2NCh1aW50NjR4Ml90IF9fcDAsIHVpbnQ2NHgyX3QgX19wMSkgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwIC0gX19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50NjR4Ml90IHZzdWJxX3U2NCh1aW50NjR4Ml90IF9fcDAsIHVpbnQ2NHgyX3QgX19wMSkgewogIHVpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwIC0gX19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4OF90IHZzdWJxX3UxNih1aW50MTZ4OF90IF9fcDAsIHVpbnQxNng4X3QgX19wMSkgewogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwIC0gX19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4OF90IHZzdWJxX3UxNih1aW50MTZ4OF90IF9fcDAsIHVpbnQxNng4X3QgX19wMSkgewogIHVpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwIC0gX19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDE2X3QgdnN1YnFfczgoaW50OHgxNl90IF9fcDAsIGludDh4MTZfdCBfX3AxKSB7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAtIF9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OHgxNl90IHZzdWJxX3M4KGludDh4MTZfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSkgewogIGludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwIC0gX19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDRfdCB2c3VicV9mMzIoZmxvYXQzMng0X3QgX19wMCwgZmxvYXQzMng0X3QgX19wMSkgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAtIF9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMng0X3QgdnN1YnFfZjMyKGZsb2F0MzJ4NF90IF9fcDAsIGZsb2F0MzJ4NF90IF9fcDEpIHsKICBmbG9hdDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCAtIF9fcmV2MTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4NF90IHZzdWJxX3MzMihpbnQzMng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEpIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwIC0gX19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMng0X3QgdnN1YnFfczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwIC0gX19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ2NHgyX3QgdnN1YnFfczY0KGludDY0eDJfdCBfX3AwLCBpbnQ2NHgyX3QgX19wMSkgewogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgLSBfX3AxOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDY0eDJfdCB2c3VicV9zNjQoaW50NjR4Ml90IF9fcDAsIGludDY0eDJfdCBfX3AxKSB7CiAgaW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgLSBfX3JldjE7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDhfdCB2c3VicV9zMTYoaW50MTZ4OF90IF9fcDAsIGludDE2eDhfdCBfX3AxKSB7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAtIF9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4OF90IHZzdWJxX3MxNihpbnQxNng4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEpIHsKICBpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCAtIF9fcmV2MTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4OF90IHZzdWJfdTgodWludDh4OF90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxKSB7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAtIF9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4OF90IHZzdWJfdTgodWludDh4OF90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxKSB7CiAgdWludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgLSBfX3JldjE7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMngyX3QgdnN1Yl91MzIodWludDMyeDJfdCBfX3AwLCB1aW50MzJ4Ml90IF9fcDEpIHsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAtIF9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDJfdCB2c3ViX3UzMih1aW50MzJ4Ml90IF9fcDAsIHVpbnQzMngyX3QgX19wMSkgewogIHVpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwIC0gX19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgpfX2FpIHVpbnQ2NHgxX3QgdnN1Yl91NjQodWludDY0eDFfdCBfX3AwLCB1aW50NjR4MV90IF9fcDEpIHsKICB1aW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAtIF9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng0X3QgdnN1Yl91MTYodWludDE2eDRfdCBfX3AwLCB1aW50MTZ4NF90IF9fcDEpIHsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAtIF9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDRfdCB2c3ViX3UxNih1aW50MTZ4NF90IF9fcDAsIHVpbnQxNng0X3QgX19wMSkgewogIHVpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwIC0gX19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDhfdCB2c3ViX3M4KGludDh4OF90IF9fcDAsIGludDh4OF90IF9fcDEpIHsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgLSBfX3AxOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4OF90IHZzdWJfczgoaW50OHg4X3QgX19wMCwgaW50OHg4X3QgX19wMSkgewogIGludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwIC0gX19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDJfdCB2c3ViX2YzMihmbG9hdDMyeDJfdCBfX3AwLCBmbG9hdDMyeDJfdCBfX3AxKSB7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwIC0gX19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDJfdCB2c3ViX2YzMihmbG9hdDMyeDJfdCBfX3AwLCBmbG9hdDMyeDJfdCBfX3AxKSB7CiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgLSBfX3JldjE7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDJfdCB2c3ViX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEpIHsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwIC0gX19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMngyX3QgdnN1Yl9zMzIoaW50MzJ4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxKSB7CiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgLSBfX3JldjE7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCl9fYWkgaW50NjR4MV90IHZzdWJfczY0KGludDY0eDFfdCBfX3AwLCBpbnQ2NHgxX3QgX19wMSkgewogIGludDY0eDFfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgLSBfX3AxOwogIHJldHVybiBfX3JldDsKfQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng0X3QgdnN1Yl9zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxKSB7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAtIF9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4NF90IHZzdWJfczE2KGludDE2eDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSkgewogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwIC0gX19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4NF90IHZzdWJobl91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEpIHsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzdWJobl92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAxNyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDRfdCB2c3ViaG5fdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxKSB7CiAgdWludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdnN1YmhuX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAxNyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQxNng0X3QgX19ub3N3YXBfdnN1YmhuX3UzMih1aW50MzJ4NF90IF9fcDAsIHVpbnQzMng0X3QgX19wMSkgewogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdnN1YmhuX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDE3KTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4Ml90IHZzdWJobl91NjQodWludDY0eDJfdCBfX3AwLCB1aW50NjR4Ml90IF9fcDEpIHsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZzdWJobl92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAxOCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDJfdCB2c3ViaG5fdTY0KHVpbnQ2NHgyX3QgX19wMCwgdWludDY0eDJfdCBfX3AxKSB7CiAgdWludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdnN1YmhuX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAxOCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQzMngyX3QgX19ub3N3YXBfdnN1YmhuX3U2NCh1aW50NjR4Ml90IF9fcDAsIHVpbnQ2NHgyX3QgX19wMSkgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdnN1YmhuX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDE4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHg4X3QgdnN1YmhuX3UxNih1aW50MTZ4OF90IF9fcDAsIHVpbnQxNng4X3QgX19wMSkgewogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZzdWJobl92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAxNik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4OF90IHZzdWJobl91MTYodWludDE2eDhfdCBfX3AwLCB1aW50MTZ4OF90IF9fcDEpIHsKICB1aW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnN1YmhuX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAxNik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ4eDhfdCBfX25vc3dhcF92c3ViaG5fdTE2KHVpbnQxNng4X3QgX19wMCwgdWludDE2eDhfdCBfX3AxKSB7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnN1YmhuX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDE2KTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng0X3QgdnN1YmhuX3MzMihpbnQzMng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEpIHsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92c3ViaG5fdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4NF90IHZzdWJobl9zMzIoaW50MzJ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxKSB7CiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92c3ViaG5fdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQxNng0X3QgX19ub3N3YXBfdnN1YmhuX3MzMihpbnQzMng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEpIHsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92c3ViaG5fdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4Ml90IHZzdWJobl9zNjQoaW50NjR4Ml90IF9fcDAsIGludDY0eDJfdCBfX3AxKSB7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdnN1YmhuX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDJfdCB2c3ViaG5fczY0KGludDY0eDJfdCBfX3AwLCBpbnQ2NHgyX3QgX19wMSkgewogIGludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBpbnQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdnN1YmhuX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MzJ4Ml90IF9fbm9zd2FwX3ZzdWJobl9zNjQoaW50NjR4Ml90IF9fcDAsIGludDY0eDJfdCBfX3AxKSB7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdnN1YmhuX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDIpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4OF90IHZzdWJobl9zMTYoaW50MTZ4OF90IF9fcDAsIGludDE2eDhfdCBfX3AxKSB7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZzdWJobl92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ4eDhfdCB2c3ViaG5fczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZzdWJobl92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgMCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDh4OF90IF9fbm9zd2FwX3ZzdWJobl9zMTYoaW50MTZ4OF90IF9fcDAsIGludDE2eDhfdCBfX3AxKSB7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZzdWJobl92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4OF90IHZzdWJsX3U4KHVpbnQ4eDhfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSB2bW92bF91OChfX3AwKSAtIHZtb3ZsX3U4KF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng4X3QgdnN1YmxfdTgodWludDh4OF90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxKSB7CiAgdWludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdm1vdmxfdTgoX19yZXYwKSAtIF9fbm9zd2FwX3Ztb3ZsX3U4KF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ2NHgyX3QgdnN1YmxfdTMyKHVpbnQzMngyX3QgX19wMCwgdWludDMyeDJfdCBfX3AxKSB7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IHZtb3ZsX3UzMihfX3AwKSAtIHZtb3ZsX3UzMihfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50NjR4Ml90IHZzdWJsX3UzMih1aW50MzJ4Ml90IF9fcDAsIHVpbnQzMngyX3QgX19wMSkgewogIHVpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdm1vdmxfdTMyKF9fcmV2MCkgLSBfX25vc3dhcF92bW92bF91MzIoX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDRfdCB2c3VibF91MTYodWludDE2eDRfdCBfX3AwLCB1aW50MTZ4NF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gdm1vdmxfdTE2KF9fcDApIC0gdm1vdmxfdTE2KF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMng0X3QgdnN1YmxfdTE2KHVpbnQxNng0X3QgX19wMCwgdWludDE2eDRfdCBfX3AxKSB7CiAgdWludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92bW92bF91MTYoX19yZXYwKSAtIF9fbm9zd2FwX3Ztb3ZsX3UxNihfX3JldjEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng4X3QgdnN1YmxfczgoaW50OHg4X3QgX19wMCwgaW50OHg4X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IHZtb3ZsX3M4KF9fcDApIC0gdm1vdmxfczgoX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4OF90IHZzdWJsX3M4KGludDh4OF90IF9fcDAsIGludDh4OF90IF9fcDEpIHsKICBpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92bW92bF9zOChfX3JldjApIC0gX19ub3N3YXBfdm1vdmxfczgoX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50NjR4Ml90IHZzdWJsX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEpIHsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSB2bW92bF9zMzIoX19wMCkgLSB2bW92bF9zMzIoX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50NjR4Ml90IHZzdWJsX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEpIHsKICBpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3Ztb3ZsX3MzMihfX3JldjApIC0gX19ub3N3YXBfdm1vdmxfczMyKF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDRfdCB2c3VibF9zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gdm1vdmxfczE2KF9fcDApIC0gdm1vdmxfczE2KF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDRfdCB2c3VibF9zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxKSB7CiAgaW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92bW92bF9zMTYoX19yZXYwKSAtIF9fbm9zd2FwX3Ztb3ZsX3MxNihfX3JldjEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4OF90IHZzdWJ3X3U4KHVpbnQxNng4X3QgX19wMCwgdWludDh4OF90IF9fcDEpIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAtIHZtb3ZsX3U4KF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng4X3QgdnN1YndfdTgodWludDE2eDhfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIHVpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgLSBfX25vc3dhcF92bW92bF91OChfX3JldjEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50NjR4Ml90IHZzdWJ3X3UzMih1aW50NjR4Ml90IF9fcDAsIHVpbnQzMngyX3QgX19wMSkgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwIC0gdm1vdmxfdTMyKF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ2NHgyX3QgdnN1YndfdTMyKHVpbnQ2NHgyX3QgX19wMCwgdWludDMyeDJfdCBfX3AxKSB7CiAgdWludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgLSBfX25vc3dhcF92bW92bF91MzIoX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDRfdCB2c3Vid191MTYodWludDMyeDRfdCBfX3AwLCB1aW50MTZ4NF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAtIHZtb3ZsX3UxNihfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4NF90IHZzdWJ3X3UxNih1aW50MzJ4NF90IF9fcDAsIHVpbnQxNng0X3QgX19wMSkgewogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwIC0gX19ub3N3YXBfdm1vdmxfdTE2KF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDhfdCB2c3Vid19zOChpbnQxNng4X3QgX19wMCwgaW50OHg4X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgLSB2bW92bF9zOChfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng4X3QgdnN1YndfczgoaW50MTZ4OF90IF9fcDAsIGludDh4OF90IF9fcDEpIHsKICBpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwIC0gX19ub3N3YXBfdm1vdmxfczgoX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50NjR4Ml90IHZzdWJ3X3MzMihpbnQ2NHgyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEpIHsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwIC0gdm1vdmxfczMyKF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDY0eDJfdCB2c3Vid19zMzIoaW50NjR4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxKSB7CiAgaW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgLSBfX25vc3dhcF92bW92bF9zMzIoX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4NF90IHZzdWJ3X3MxNihpbnQzMng0X3QgX19wMCwgaW50MTZ4NF90IF9fcDEpIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwIC0gdm1vdmxfczE2KF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDRfdCB2c3Vid19zMTYoaW50MzJ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxKSB7CiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgLSBfX25vc3dhcF92bW92bF9zMTYoX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgcG9seTh4OF90IHZ0YmwxX3A4KHBvbHk4eDhfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIHBvbHk4eDhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3Z0YmwxX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCA0KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBwb2x5OHg4X3QgdnRibDFfcDgocG9seTh4OF90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxKSB7CiAgcG9seTh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBwb2x5OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTh4OF90KSBfX2J1aWx0aW5fbmVvbl92dGJsMV92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDQpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHg4X3QgdnRibDFfdTgodWludDh4OF90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxKSB7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnRibDFfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDE2KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHg4X3QgdnRibDFfdTgodWludDh4OF90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxKSB7CiAgdWludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92dGJsMV92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDE2KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHg4X3QgdnRibDFfczgoaW50OHg4X3QgX19wMCwgaW50OHg4X3QgX19wMSkgewogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92dGJsMV92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OHg4X3QgdnRibDFfczgoaW50OHg4X3QgX19wMCwgaW50OHg4X3QgX19wMSkgewogIGludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92dGJsMV92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBwb2x5OHg4X3QgdnRibDJfcDgocG9seTh4OHgyX3QgX19wMCwgdWludDh4OF90IF9fcDEpIHsKICBwb2x5OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTh4OF90KSBfX2J1aWx0aW5fbmVvbl92dGJsMl92KChpbnQ4eDhfdClfX3AwLnZhbFswXSwgKGludDh4OF90KV9fcDAudmFsWzFdLCAoaW50OHg4X3QpX19wMSwgNCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgcG9seTh4OF90IHZ0YmwyX3A4KHBvbHk4eDh4Ml90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxKSB7CiAgcG9seTh4OHgyX3QgX19yZXYwOwogIF9fcmV2MC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLnZhbFswXSwgX19wMC52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV2MC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLnZhbFsxXSwgX19wMC52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBwb2x5OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTh4OF90KSBfX2J1aWx0aW5fbmVvbl92dGJsMl92KChpbnQ4eDhfdClfX3JldjAudmFsWzBdLCAoaW50OHg4X3QpX19yZXYwLnZhbFsxXSwgKGludDh4OF90KV9fcmV2MSwgNCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDhfdCB2dGJsMl91OCh1aW50OHg4eDJfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3Z0YmwyX3YoKGludDh4OF90KV9fcDAudmFsWzBdLCAoaW50OHg4X3QpX19wMC52YWxbMV0sIChpbnQ4eDhfdClfX3AxLCAxNik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4OF90IHZ0YmwyX3U4KHVpbnQ4eDh4Ml90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxKSB7CiAgdWludDh4OHgyX3QgX19yZXYwOwogIF9fcmV2MC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLnZhbFswXSwgX19wMC52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV2MC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLnZhbFsxXSwgX19wMC52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92dGJsMl92KChpbnQ4eDhfdClfX3JldjAudmFsWzBdLCAoaW50OHg4X3QpX19yZXYwLnZhbFsxXSwgKGludDh4OF90KV9fcmV2MSwgMTYpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDhfdCB2dGJsMl9zOChpbnQ4eDh4Ml90IF9fcDAsIGludDh4OF90IF9fcDEpIHsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnRibDJfdigoaW50OHg4X3QpX19wMC52YWxbMF0sIChpbnQ4eDhfdClfX3AwLnZhbFsxXSwgKGludDh4OF90KV9fcDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4OF90IHZ0YmwyX3M4KGludDh4OHgyX3QgX19wMCwgaW50OHg4X3QgX19wMSkgewogIGludDh4OHgyX3QgX19yZXYwOwogIF9fcmV2MC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLnZhbFswXSwgX19wMC52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV2MC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLnZhbFsxXSwgX19wMC52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92dGJsMl92KChpbnQ4eDhfdClfX3JldjAudmFsWzBdLCAoaW50OHg4X3QpX19yZXYwLnZhbFsxXSwgKGludDh4OF90KV9fcmV2MSwgMCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHBvbHk4eDhfdCB2dGJsM19wOChwb2x5OHg4eDNfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIHBvbHk4eDhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3Z0YmwzX3YoKGludDh4OF90KV9fcDAudmFsWzBdLCAoaW50OHg4X3QpX19wMC52YWxbMV0sIChpbnQ4eDhfdClfX3AwLnZhbFsyXSwgKGludDh4OF90KV9fcDEsIDQpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHBvbHk4eDhfdCB2dGJsM19wOChwb2x5OHg4eDNfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIHBvbHk4eDh4M190IF9fcmV2MDsKICBfX3JldjAudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMC52YWxbMF0sIF9fcDAudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldjAudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMC52YWxbMV0sIF9fcDAudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldjAudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMC52YWxbMl0sIF9fcDAudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk4eDhfdCkgX19idWlsdGluX25lb25fdnRibDNfdigoaW50OHg4X3QpX19yZXYwLnZhbFswXSwgKGludDh4OF90KV9fcmV2MC52YWxbMV0sIChpbnQ4eDhfdClfX3JldjAudmFsWzJdLCAoaW50OHg4X3QpX19yZXYxLCA0KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4OF90IHZ0YmwzX3U4KHVpbnQ4eDh4M190IF9fcDAsIHVpbnQ4eDhfdCBfX3AxKSB7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnRibDNfdigoaW50OHg4X3QpX19wMC52YWxbMF0sIChpbnQ4eDhfdClfX3AwLnZhbFsxXSwgKGludDh4OF90KV9fcDAudmFsWzJdLCAoaW50OHg4X3QpX19wMSwgMTYpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDhfdCB2dGJsM191OCh1aW50OHg4eDNfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIHVpbnQ4eDh4M190IF9fcmV2MDsKICBfX3JldjAudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMC52YWxbMF0sIF9fcDAudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldjAudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMC52YWxbMV0sIF9fcDAudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldjAudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMC52YWxbMl0sIF9fcDAudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnRibDNfdigoaW50OHg4X3QpX19yZXYwLnZhbFswXSwgKGludDh4OF90KV9fcmV2MC52YWxbMV0sIChpbnQ4eDhfdClfX3JldjAudmFsWzJdLCAoaW50OHg4X3QpX19yZXYxLCAxNik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4OF90IHZ0YmwzX3M4KGludDh4OHgzX3QgX19wMCwgaW50OHg4X3QgX19wMSkgewogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92dGJsM192KChpbnQ4eDhfdClfX3AwLnZhbFswXSwgKGludDh4OF90KV9fcDAudmFsWzFdLCAoaW50OHg4X3QpX19wMC52YWxbMl0sIChpbnQ4eDhfdClfX3AxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ4eDhfdCB2dGJsM19zOChpbnQ4eDh4M190IF9fcDAsIGludDh4OF90IF9fcDEpIHsKICBpbnQ4eDh4M190IF9fcmV2MDsKICBfX3JldjAudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMC52YWxbMF0sIF9fcDAudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldjAudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMC52YWxbMV0sIF9fcDAudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldjAudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMC52YWxbMl0sIF9fcDAudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnRibDNfdigoaW50OHg4X3QpX19yZXYwLnZhbFswXSwgKGludDh4OF90KV9fcmV2MC52YWxbMV0sIChpbnQ4eDhfdClfX3JldjAudmFsWzJdLCAoaW50OHg4X3QpX19yZXYxLCAwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgcG9seTh4OF90IHZ0Ymw0X3A4KHBvbHk4eDh4NF90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxKSB7CiAgcG9seTh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk4eDhfdCkgX19idWlsdGluX25lb25fdnRibDRfdigoaW50OHg4X3QpX19wMC52YWxbMF0sIChpbnQ4eDhfdClfX3AwLnZhbFsxXSwgKGludDh4OF90KV9fcDAudmFsWzJdLCAoaW50OHg4X3QpX19wMC52YWxbM10sIChpbnQ4eDhfdClfX3AxLCA0KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBwb2x5OHg4X3QgdnRibDRfcDgocG9seTh4OHg0X3QgX19wMCwgdWludDh4OF90IF9fcDEpIHsKICBwb2x5OHg4eDRfdCBfX3JldjA7CiAgX19yZXYwLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAudmFsWzBdLCBfX3AwLnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgX19yZXYwLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAudmFsWzFdLCBfX3AwLnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgX19yZXYwLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAudmFsWzJdLCBfX3AwLnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgX19yZXYwLnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAudmFsWzNdLCBfX3AwLnZhbFszXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHBvbHk4eDhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3Z0Ymw0X3YoKGludDh4OF90KV9fcmV2MC52YWxbMF0sIChpbnQ4eDhfdClfX3JldjAudmFsWzFdLCAoaW50OHg4X3QpX19yZXYwLnZhbFsyXSwgKGludDh4OF90KV9fcmV2MC52YWxbM10sIChpbnQ4eDhfdClfX3JldjEsIDQpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHg4X3QgdnRibDRfdTgodWludDh4OHg0X3QgX19wMCwgdWludDh4OF90IF9fcDEpIHsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92dGJsNF92KChpbnQ4eDhfdClfX3AwLnZhbFswXSwgKGludDh4OF90KV9fcDAudmFsWzFdLCAoaW50OHg4X3QpX19wMC52YWxbMl0sIChpbnQ4eDhfdClfX3AwLnZhbFszXSwgKGludDh4OF90KV9fcDEsIDE2KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHg4X3QgdnRibDRfdTgodWludDh4OHg0X3QgX19wMCwgdWludDh4OF90IF9fcDEpIHsKICB1aW50OHg4eDRfdCBfX3JldjA7CiAgX19yZXYwLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAudmFsWzBdLCBfX3AwLnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgX19yZXYwLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAudmFsWzFdLCBfX3AwLnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgX19yZXYwLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAudmFsWzJdLCBfX3AwLnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgX19yZXYwLnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAudmFsWzNdLCBfX3AwLnZhbFszXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3Z0Ymw0X3YoKGludDh4OF90KV9fcmV2MC52YWxbMF0sIChpbnQ4eDhfdClfX3JldjAudmFsWzFdLCAoaW50OHg4X3QpX19yZXYwLnZhbFsyXSwgKGludDh4OF90KV9fcmV2MC52YWxbM10sIChpbnQ4eDhfdClfX3JldjEsIDE2KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHg4X3QgdnRibDRfczgoaW50OHg4eDRfdCBfX3AwLCBpbnQ4eDhfdCBfX3AxKSB7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3Z0Ymw0X3YoKGludDh4OF90KV9fcDAudmFsWzBdLCAoaW50OHg4X3QpX19wMC52YWxbMV0sIChpbnQ4eDhfdClfX3AwLnZhbFsyXSwgKGludDh4OF90KV9fcDAudmFsWzNdLCAoaW50OHg4X3QpX19wMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OHg4X3QgdnRibDRfczgoaW50OHg4eDRfdCBfX3AwLCBpbnQ4eDhfdCBfX3AxKSB7CiAgaW50OHg4eDRfdCBfX3JldjA7CiAgX19yZXYwLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAudmFsWzBdLCBfX3AwLnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgX19yZXYwLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAudmFsWzFdLCBfX3AwLnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgX19yZXYwLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAudmFsWzJdLCBfX3AwLnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgX19yZXYwLnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAudmFsWzNdLCBfX3AwLnZhbFszXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3Z0Ymw0X3YoKGludDh4OF90KV9fcmV2MC52YWxbMF0sIChpbnQ4eDhfdClfX3JldjAudmFsWzFdLCAoaW50OHg4X3QpX19yZXYwLnZhbFsyXSwgKGludDh4OF90KV9fcmV2MC52YWxbM10sIChpbnQ4eDhfdClfX3JldjEsIDApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBwb2x5OHg4X3QgdnRieDFfcDgocG9seTh4OF90IF9fcDAsIHBvbHk4eDhfdCBfX3AxLCB1aW50OHg4X3QgX19wMikgewogIHBvbHk4eDhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3Z0YngxX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAoaW50OHg4X3QpX19wMiwgNCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgcG9seTh4OF90IHZ0YngxX3A4KHBvbHk4eDhfdCBfX3AwLCBwb2x5OHg4X3QgX19wMSwgdWludDh4OF90IF9fcDIpIHsKICBwb2x5OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBwb2x5OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTh4OF90KSBfX2J1aWx0aW5fbmVvbl92dGJ4MV92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIChpbnQ4eDhfdClfX3JldjIsIDQpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHg4X3QgdnRieDFfdTgodWludDh4OF90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxLCB1aW50OHg4X3QgX19wMikgewogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3Z0YngxX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAoaW50OHg4X3QpX19wMiwgMTYpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDhfdCB2dGJ4MV91OCh1aW50OHg4X3QgX19wMCwgdWludDh4OF90IF9fcDEsIHVpbnQ4eDhfdCBfX3AyKSB7CiAgdWludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnRieDFfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAoaW50OHg4X3QpX19yZXYyLCAxNik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4OF90IHZ0YngxX3M4KGludDh4OF90IF9fcDAsIGludDh4OF90IF9fcDEsIGludDh4OF90IF9fcDIpIHsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnRieDFfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIChpbnQ4eDhfdClfX3AyLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ4eDhfdCB2dGJ4MV9zOChpbnQ4eDhfdCBfX3AwLCBpbnQ4eDhfdCBfX3AxLCBpbnQ4eDhfdCBfX3AyKSB7CiAgaW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3Z0YngxX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgKGludDh4OF90KV9fcmV2MiwgMCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHBvbHk4eDhfdCB2dGJ4Ml9wOChwb2x5OHg4X3QgX19wMCwgcG9seTh4OHgyX3QgX19wMSwgdWludDh4OF90IF9fcDIpIHsKICBwb2x5OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTh4OF90KSBfX2J1aWx0aW5fbmVvbl92dGJ4Ml92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMS52YWxbMF0sIChpbnQ4eDhfdClfX3AxLnZhbFsxXSwgKGludDh4OF90KV9fcDIsIDQpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHBvbHk4eDhfdCB2dGJ4Ml9wOChwb2x5OHg4X3QgX19wMCwgcG9seTh4OHgyX3QgX19wMSwgdWludDh4OF90IF9fcDIpIHsKICBwb2x5OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTh4OHgyX3QgX19yZXYxOwogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLnZhbFswXSwgX19wMS52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLnZhbFsxXSwgX19wMS52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBwb2x5OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTh4OF90KSBfX2J1aWx0aW5fbmVvbl92dGJ4Ml92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgKGludDh4OF90KV9fcmV2MiwgNCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDhfdCB2dGJ4Ml91OCh1aW50OHg4X3QgX19wMCwgdWludDh4OHgyX3QgX19wMSwgdWludDh4OF90IF9fcDIpIHsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92dGJ4Ml92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMS52YWxbMF0sIChpbnQ4eDhfdClfX3AxLnZhbFsxXSwgKGludDh4OF90KV9fcDIsIDE2KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHg4X3QgdnRieDJfdTgodWludDh4OF90IF9fcDAsIHVpbnQ4eDh4Ml90IF9fcDEsIHVpbnQ4eDhfdCBfX3AyKSB7CiAgdWludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDh4Ml90IF9fcmV2MTsKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMS52YWxbMF0sIF9fcDEudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMS52YWxbMV0sIF9fcDEudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnRieDJfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLnZhbFswXSwgKGludDh4OF90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDhfdClfX3JldjIsIDE2KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHg4X3QgdnRieDJfczgoaW50OHg4X3QgX19wMCwgaW50OHg4eDJfdCBfX3AxLCBpbnQ4eDhfdCBfX3AyKSB7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3Z0YngyX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLnZhbFswXSwgKGludDh4OF90KV9fcDEudmFsWzFdLCAoaW50OHg4X3QpX19wMiwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OHg4X3QgdnRieDJfczgoaW50OHg4X3QgX19wMCwgaW50OHg4eDJfdCBfX3AxLCBpbnQ4eDhfdCBfX3AyKSB7CiAgaW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4eDJfdCBfX3JldjE7CiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEudmFsWzBdLCBfX3AxLnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEudmFsWzFdLCBfX3AxLnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3Z0YngyX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCAoaW50OHg4X3QpX19yZXYyLCAwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgcG9seTh4OF90IHZ0YngzX3A4KHBvbHk4eDhfdCBfX3AwLCBwb2x5OHg4eDNfdCBfX3AxLCB1aW50OHg4X3QgX19wMikgewogIHBvbHk4eDhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3Z0YngzX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLnZhbFswXSwgKGludDh4OF90KV9fcDEudmFsWzFdLCAoaW50OHg4X3QpX19wMS52YWxbMl0sIChpbnQ4eDhfdClfX3AyLCA0KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBwb2x5OHg4X3QgdnRieDNfcDgocG9seTh4OF90IF9fcDAsIHBvbHk4eDh4M190IF9fcDEsIHVpbnQ4eDhfdCBfX3AyKSB7CiAgcG9seTh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHBvbHk4eDh4M190IF9fcmV2MTsKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMS52YWxbMF0sIF9fcDEudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMS52YWxbMV0sIF9fcDEudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMS52YWxbMl0sIF9fcDEudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk4eDhfdCkgX19idWlsdGluX25lb25fdnRieDNfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLnZhbFswXSwgKGludDh4OF90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDhfdClfX3JldjEudmFsWzJdLCAoaW50OHg4X3QpX19yZXYyLCA0KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4OF90IHZ0YngzX3U4KHVpbnQ4eDhfdCBfX3AwLCB1aW50OHg4eDNfdCBfX3AxLCB1aW50OHg4X3QgX19wMikgewogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3Z0YngzX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLnZhbFswXSwgKGludDh4OF90KV9fcDEudmFsWzFdLCAoaW50OHg4X3QpX19wMS52YWxbMl0sIChpbnQ4eDhfdClfX3AyLCAxNik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4OF90IHZ0YngzX3U4KHVpbnQ4eDhfdCBfX3AwLCB1aW50OHg4eDNfdCBfX3AxLCB1aW50OHg4X3QgX19wMikgewogIHVpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4eDNfdCBfX3JldjE7CiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEudmFsWzBdLCBfX3AxLnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEudmFsWzFdLCBfX3AxLnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEudmFsWzJdLCBfX3AxLnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3Z0YngzX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsyXSwgKGludDh4OF90KV9fcmV2MiwgMTYpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDhfdCB2dGJ4M19zOChpbnQ4eDhfdCBfX3AwLCBpbnQ4eDh4M190IF9fcDEsIGludDh4OF90IF9fcDIpIHsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnRieDNfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEudmFsWzBdLCAoaW50OHg4X3QpX19wMS52YWxbMV0sIChpbnQ4eDhfdClfX3AxLnZhbFsyXSwgKGludDh4OF90KV9fcDIsIDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4OF90IHZ0YngzX3M4KGludDh4OF90IF9fcDAsIGludDh4OHgzX3QgX19wMSwgaW50OHg4X3QgX19wMikgewogIGludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OHgzX3QgX19yZXYxOwogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLnZhbFswXSwgX19wMS52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLnZhbFsxXSwgX19wMS52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLnZhbFsyXSwgX19wMS52YWxbMl0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92dGJ4M192KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgKGludDh4OF90KV9fcmV2MS52YWxbMl0sIChpbnQ4eDhfdClfX3JldjIsIDApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBwb2x5OHg4X3QgdnRieDRfcDgocG9seTh4OF90IF9fcDAsIHBvbHk4eDh4NF90IF9fcDEsIHVpbnQ4eDhfdCBfX3AyKSB7CiAgcG9seTh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk4eDhfdCkgX19idWlsdGluX25lb25fdnRieDRfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEudmFsWzBdLCAoaW50OHg4X3QpX19wMS52YWxbMV0sIChpbnQ4eDhfdClfX3AxLnZhbFsyXSwgKGludDh4OF90KV9fcDEudmFsWzNdLCAoaW50OHg4X3QpX19wMiwgNCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgcG9seTh4OF90IHZ0Yng0X3A4KHBvbHk4eDhfdCBfX3AwLCBwb2x5OHg4eDRfdCBfX3AxLCB1aW50OHg4X3QgX19wMikgewogIHBvbHk4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBwb2x5OHg4eDRfdCBfX3JldjE7CiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEudmFsWzBdLCBfX3AxLnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEudmFsWzFdLCBfX3AxLnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEudmFsWzJdLCBfX3AxLnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgX19yZXYxLnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEudmFsWzNdLCBfX3AxLnZhbFszXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHBvbHk4eDhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3Z0Yng0X3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsyXSwgKGludDh4OF90KV9fcmV2MS52YWxbM10sIChpbnQ4eDhfdClfX3JldjIsIDQpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHg4X3QgdnRieDRfdTgodWludDh4OF90IF9fcDAsIHVpbnQ4eDh4NF90IF9fcDEsIHVpbnQ4eDhfdCBfX3AyKSB7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnRieDRfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEudmFsWzBdLCAoaW50OHg4X3QpX19wMS52YWxbMV0sIChpbnQ4eDhfdClfX3AxLnZhbFsyXSwgKGludDh4OF90KV9fcDEudmFsWzNdLCAoaW50OHg4X3QpX19wMiwgMTYpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDhfdCB2dGJ4NF91OCh1aW50OHg4X3QgX19wMCwgdWludDh4OHg0X3QgX19wMSwgdWludDh4OF90IF9fcDIpIHsKICB1aW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OHg0X3QgX19yZXYxOwogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLnZhbFswXSwgX19wMS52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLnZhbFsxXSwgX19wMS52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLnZhbFsyXSwgX19wMS52YWxbMl0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV2MS52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLnZhbFszXSwgX19wMS52YWxbM10sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92dGJ4NF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgKGludDh4OF90KV9fcmV2MS52YWxbMl0sIChpbnQ4eDhfdClfX3JldjEudmFsWzNdLCAoaW50OHg4X3QpX19yZXYyLCAxNik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4OF90IHZ0Yng0X3M4KGludDh4OF90IF9fcDAsIGludDh4OHg0X3QgX19wMSwgaW50OHg4X3QgX19wMikgewogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92dGJ4NF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMS52YWxbMF0sIChpbnQ4eDhfdClfX3AxLnZhbFsxXSwgKGludDh4OF90KV9fcDEudmFsWzJdLCAoaW50OHg4X3QpX19wMS52YWxbM10sIChpbnQ4eDhfdClfX3AyLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ4eDhfdCB2dGJ4NF9zOChpbnQ4eDhfdCBfX3AwLCBpbnQ4eDh4NF90IF9fcDEsIGludDh4OF90IF9fcDIpIHsKICBpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDh4NF90IF9fcmV2MTsKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMS52YWxbMF0sIF9fcDEudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMS52YWxbMV0sIF9fcDEudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMS52YWxbMl0sIF9fcDEudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldjEudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMS52YWxbM10sIF9fcDEudmFsWzNdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnRieDRfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLnZhbFswXSwgKGludDh4OF90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDhfdClfX3JldjEudmFsWzJdLCAoaW50OHg4X3QpX19yZXYxLnZhbFszXSwgKGludDh4OF90KV9fcmV2MiwgMCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHBvbHk4eDh4Ml90IHZ0cm5fcDgocG9seTh4OF90IF9fcDAsIHBvbHk4eDhfdCBfX3AxKSB7CiAgcG9seTh4OHgyX3QgX19yZXQ7CiAgX19idWlsdGluX25lb25fdnRybl92KCZfX3JldCwgKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCA0KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBwb2x5OHg4eDJfdCB2dHJuX3A4KHBvbHk4eDhfdCBfX3AwLCBwb2x5OHg4X3QgX19wMSkgewogIHBvbHk4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBwb2x5OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTh4OHgyX3QgX19yZXQ7CiAgX19idWlsdGluX25lb25fdnRybl92KCZfX3JldCwgKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgNCk7CgogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgcG9seTE2eDR4Ml90IHZ0cm5fcDE2KHBvbHkxNng0X3QgX19wMCwgcG9seTE2eDRfdCBfX3AxKSB7CiAgcG9seTE2eDR4Ml90IF9fcmV0OwogIF9fYnVpbHRpbl9uZW9uX3Z0cm5fdigmX19yZXQsIChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgNSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgcG9seTE2eDR4Ml90IHZ0cm5fcDE2KHBvbHkxNng0X3QgX19wMCwgcG9seTE2eDRfdCBfX3AxKSB7CiAgcG9seTE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBwb2x5MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHBvbHkxNng0eDJfdCBfX3JldDsKICBfX2J1aWx0aW5fbmVvbl92dHJuX3YoJl9fcmV0LCAoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCA1KTsKCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDMsIDIsIDEsIDApOwogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBwb2x5OHgxNngyX3QgdnRybnFfcDgocG9seTh4MTZfdCBfX3AwLCBwb2x5OHgxNl90IF9fcDEpIHsKICBwb2x5OHgxNngyX3QgX19yZXQ7CiAgX19idWlsdGluX25lb25fdnRybnFfdigmX19yZXQsIChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAzNik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgcG9seTh4MTZ4Ml90IHZ0cm5xX3A4KHBvbHk4eDE2X3QgX19wMCwgcG9seTh4MTZfdCBfX3AxKSB7CiAgcG9seTh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBwb2x5OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHBvbHk4eDE2eDJfdCBfX3JldDsKICBfX2J1aWx0aW5fbmVvbl92dHJucV92KCZfX3JldCwgKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAzNik7CgogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgcG9seTE2eDh4Ml90IHZ0cm5xX3AxNihwb2x5MTZ4OF90IF9fcDAsIHBvbHkxNng4X3QgX19wMSkgewogIHBvbHkxNng4eDJfdCBfX3JldDsKICBfX2J1aWx0aW5fbmVvbl92dHJucV92KCZfX3JldCwgKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDM3KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBwb2x5MTZ4OHgyX3QgdnRybnFfcDE2KHBvbHkxNng4X3QgX19wMCwgcG9seTE2eDhfdCBfX3AxKSB7CiAgcG9seTE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBwb2x5MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHBvbHkxNng4eDJfdCBfX3JldDsKICBfX2J1aWx0aW5fbmVvbl92dHJucV92KCZfX3JldCwgKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAzNyk7CgogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4MTZ4Ml90IHZ0cm5xX3U4KHVpbnQ4eDE2X3QgX19wMCwgdWludDh4MTZfdCBfX3AxKSB7CiAgdWludDh4MTZ4Ml90IF9fcmV0OwogIF9fYnVpbHRpbl9uZW9uX3Z0cm5xX3YoJl9fcmV0LCAoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNDgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDE2eDJfdCB2dHJucV91OCh1aW50OHgxNl90IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSkgewogIHVpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNngyX3QgX19yZXQ7CiAgX19idWlsdGluX25lb25fdnRybnFfdigmX19yZXQsIChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNDgpOwoKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMng0eDJfdCB2dHJucV91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEpIHsKICB1aW50MzJ4NHgyX3QgX19yZXQ7CiAgX19idWlsdGluX25lb25fdnRybnFfdigmX19yZXQsIChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA1MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDR4Ml90IHZ0cm5xX3UzMih1aW50MzJ4NF90IF9fcDAsIHVpbnQzMng0X3QgX19wMSkgewogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NHgyX3QgX19yZXQ7CiAgX19idWlsdGluX25lb25fdnRybnFfdigmX19yZXQsIChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNTApOwoKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMywgMiwgMSwgMCk7CiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng4eDJfdCB2dHJucV91MTYodWludDE2eDhfdCBfX3AwLCB1aW50MTZ4OF90IF9fcDEpIHsKICB1aW50MTZ4OHgyX3QgX19yZXQ7CiAgX19idWlsdGluX25lb25fdnRybnFfdigmX19yZXQsIChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA0OSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDh4Ml90IHZ0cm5xX3UxNih1aW50MTZ4OF90IF9fcDAsIHVpbnQxNng4X3QgX19wMSkgewogIHVpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OHgyX3QgX19yZXQ7CiAgX19idWlsdGluX25lb25fdnRybnFfdigmX19yZXQsIChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNDkpOwoKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4MTZ4Ml90IHZ0cm5xX3M4KGludDh4MTZfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSkgewogIGludDh4MTZ4Ml90IF9fcmV0OwogIF9fYnVpbHRpbl9uZW9uX3Z0cm5xX3YoJl9fcmV0LCAoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgMzIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4MTZ4Ml90IHZ0cm5xX3M4KGludDh4MTZfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSkgewogIGludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNngyX3QgX19yZXQ7CiAgX19idWlsdGluX25lb25fdnRybnFfdigmX19yZXQsIChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgMzIpOwoKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4NHgyX3QgdnRybnFfZjMyKGZsb2F0MzJ4NF90IF9fcDAsIGZsb2F0MzJ4NF90IF9fcDEpIHsKICBmbG9hdDMyeDR4Ml90IF9fcmV0OwogIF9fYnVpbHRpbl9uZW9uX3Z0cm5xX3YoJl9fcmV0LCAoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4NHgyX3QgdnRybnFfZjMyKGZsb2F0MzJ4NF90IF9fcDAsIGZsb2F0MzJ4NF90IF9fcDEpIHsKICBmbG9hdDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDR4Ml90IF9fcmV0OwogIF9fYnVpbHRpbl9uZW9uX3Z0cm5xX3YoJl9fcmV0LCAoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDQxKTsKCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDMsIDIsIDEsIDApOwogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMng0eDJfdCB2dHJucV9zMzIoaW50MzJ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxKSB7CiAgaW50MzJ4NHgyX3QgX19yZXQ7CiAgX19idWlsdGluX25lb25fdnRybnFfdigmX19yZXQsIChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAzNCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4NHgyX3QgdnRybnFfczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NHgyX3QgX19yZXQ7CiAgX19idWlsdGluX25lb25fdnRybnFfdigmX19yZXQsIChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgMzQpOwoKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMywgMiwgMSwgMCk7CiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDh4Ml90IHZ0cm5xX3MxNihpbnQxNng4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEpIHsKICBpbnQxNng4eDJfdCBfX3JldDsKICBfX2J1aWx0aW5fbmVvbl92dHJucV92KCZfX3JldCwgKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDMzKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng4eDJfdCB2dHJucV9zMTYoaW50MTZ4OF90IF9fcDAsIGludDE2eDhfdCBfX3AxKSB7CiAgaW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4eDJfdCBfX3JldDsKICBfX2J1aWx0aW5fbmVvbl92dHJucV92KCZfX3JldCwgKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAzMyk7CgogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4OHgyX3QgdnRybl91OCh1aW50OHg4X3QgX19wMCwgdWludDh4OF90IF9fcDEpIHsKICB1aW50OHg4eDJfdCBfX3JldDsKICBfX2J1aWx0aW5fbmVvbl92dHJuX3YoJl9fcmV0LCAoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDE2KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHg4eDJfdCB2dHJuX3U4KHVpbnQ4eDhfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIHVpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OHgyX3QgX19yZXQ7CiAgX19idWlsdGluX25lb25fdnRybl92KCZfX3JldCwgKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMTYpOwoKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMngyeDJfdCB2dHJuX3UzMih1aW50MzJ4Ml90IF9fcDAsIHVpbnQzMngyX3QgX19wMSkgewogIHVpbnQzMngyeDJfdCBfX3JldDsKICBfX2J1aWx0aW5fbmVvbl92dHJuX3YoJl9fcmV0LCAoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDE4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4MngyX3QgdnRybl91MzIodWludDMyeDJfdCBfX3AwLCB1aW50MzJ4Ml90IF9fcDEpIHsKICB1aW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgdWludDMyeDJ4Ml90IF9fcmV0OwogIF9fYnVpbHRpbl9uZW9uX3Z0cm5fdigmX19yZXQsIChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDE4KTsKCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDEsIDApOwogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4NHgyX3QgdnRybl91MTYodWludDE2eDRfdCBfX3AwLCB1aW50MTZ4NF90IF9fcDEpIHsKICB1aW50MTZ4NHgyX3QgX19yZXQ7CiAgX19idWlsdGluX25lb25fdnRybl92KCZfX3JldCwgKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAxNyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDR4Ml90IHZ0cm5fdTE2KHVpbnQxNng0X3QgX19wMCwgdWludDE2eDRfdCBfX3AxKSB7CiAgdWludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0eDJfdCBfX3JldDsKICBfX2J1aWx0aW5fbmVvbl92dHJuX3YoJl9fcmV0LCAoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAxNyk7CgogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAzLCAyLCAxLCAwKTsKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHg4eDJfdCB2dHJuX3M4KGludDh4OF90IF9fcDAsIGludDh4OF90IF9fcDEpIHsKICBpbnQ4eDh4Ml90IF9fcmV0OwogIF9fYnVpbHRpbl9uZW9uX3Z0cm5fdigmX19yZXQsIChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OHg4eDJfdCB2dHJuX3M4KGludDh4OF90IF9fcDAsIGludDh4OF90IF9fcDEpIHsKICBpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDh4Ml90IF9fcmV0OwogIF9fYnVpbHRpbl9uZW9uX3Z0cm5fdigmX19yZXQsIChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDApOwoKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4MngyX3QgdnRybl9mMzIoZmxvYXQzMngyX3QgX19wMCwgZmxvYXQzMngyX3QgX19wMSkgewogIGZsb2F0MzJ4MngyX3QgX19yZXQ7CiAgX19idWlsdGluX25lb25fdnRybl92KCZfX3JldCwgKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCA5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDJ4Ml90IHZ0cm5fZjMyKGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0MzJ4Ml90IF9fcDEpIHsKICBmbG9hdDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBmbG9hdDMyeDJ4Ml90IF9fcmV0OwogIF9fYnVpbHRpbl9uZW9uX3Z0cm5fdigmX19yZXQsIChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDkpOwoKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMSwgMCk7CiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDJ4Ml90IHZ0cm5fczMyKGludDMyeDJfdCBfX3AwLCBpbnQzMngyX3QgX19wMSkgewogIGludDMyeDJ4Ml90IF9fcmV0OwogIF9fYnVpbHRpbl9uZW9uX3Z0cm5fdigmX19yZXQsIChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4MngyX3QgdnRybl9zMzIoaW50MzJ4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxKSB7CiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBpbnQzMngyeDJfdCBfX3JldDsKICBfX2J1aWx0aW5fbmVvbl92dHJuX3YoJl9fcmV0LCAoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAyKTsKCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDEsIDApOwogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng0eDJfdCB2dHJuX3MxNihpbnQxNng0X3QgX19wMCwgaW50MTZ4NF90IF9fcDEpIHsKICBpbnQxNng0eDJfdCBfX3JldDsKICBfX2J1aWx0aW5fbmVvbl92dHJuX3YoJl9fcmV0LCAoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDR4Ml90IHZ0cm5fczE2KGludDE2eDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSkgewogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NHgyX3QgX19yZXQ7CiAgX19idWlsdGluX25lb25fdnRybl92KCZfX3JldCwgKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMSk7CgogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAzLCAyLCAxLCAwKTsKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4OF90IHZ0c3RfcDgocG9seTh4OF90IF9fcDAsIHBvbHk4eDhfdCBfX3AxKSB7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnRzdF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMTYpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDhfdCB2dHN0X3A4KHBvbHk4eDhfdCBfX3AwLCBwb2x5OHg4X3QgX19wMSkgewogIHBvbHk4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBwb2x5OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnRzdF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDE2KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDRfdCB2dHN0X3AxNihwb2x5MTZ4NF90IF9fcDAsIHBvbHkxNng0X3QgX19wMSkgewogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdnRzdF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMTcpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng0X3QgdnRzdF9wMTYocG9seTE2eDRfdCBfX3AwLCBwb2x5MTZ4NF90IF9fcDEpIHsKICBwb2x5MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHBvbHkxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92dHN0X3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMTcpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHgxNl90IHZ0c3RxX3A4KHBvbHk4eDE2X3QgX19wMCwgcG9seTh4MTZfdCBfX3AxKSB7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92dHN0cV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA0OCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4MTZfdCB2dHN0cV9wOChwb2x5OHgxNl90IF9fcDAsIHBvbHk4eDE2X3QgX19wMSkgewogIHBvbHk4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3Z0c3RxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA0OCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng4X3QgdnRzdHFfcDE2KHBvbHkxNng4X3QgX19wMCwgcG9seTE2eDhfdCBfX3AxKSB7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92dHN0cV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA0OSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDhfdCB2dHN0cV9wMTYocG9seTE2eDhfdCBfX3AwLCBwb2x5MTZ4OF90IF9fcDEpIHsKICBwb2x5MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHBvbHkxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92dHN0cV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNDkpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHgxNl90IHZ0c3RxX3U4KHVpbnQ4eDE2X3QgX19wMCwgdWludDh4MTZfdCBfX3AxKSB7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92dHN0cV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA0OCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4MTZfdCB2dHN0cV91OCh1aW50OHgxNl90IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSkgewogIHVpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3Z0c3RxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA0OCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMng0X3QgdnRzdHFfdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92dHN0cV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA1MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2dHN0cV91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92dHN0cV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNTApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4OF90IHZ0c3RxX3UxNih1aW50MTZ4OF90IF9fcDAsIHVpbnQxNng4X3QgX19wMSkgewogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkgX19idWlsdGluX25lb25fdnRzdHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNDkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng4X3QgdnRzdHFfdTE2KHVpbnQxNng4X3QgX19wMCwgdWludDE2eDhfdCBfX3AxKSB7CiAgdWludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkgX19idWlsdGluX25lb25fdnRzdHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDQ5KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4MTZfdCB2dHN0cV9zOChpbnQ4eDE2X3QgX19wMCwgaW50OHgxNl90IF9fcDEpIHsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3Z0c3RxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDQ4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHgxNl90IHZ0c3RxX3M4KGludDh4MTZfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSkgewogIGludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92dHN0cV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNDgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZ0c3RxX3MzMihpbnQzMng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3Z0c3RxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDUwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4NF90IHZ0c3RxX3MzMihpbnQzMng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEpIHsKICBpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdnRzdHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDUwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDhfdCB2dHN0cV9zMTYoaW50MTZ4OF90IF9fcDAsIGludDE2eDhfdCBfX3AxKSB7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92dHN0cV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA0OSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDhfdCB2dHN0cV9zMTYoaW50MTZ4OF90IF9fcDAsIGludDE2eDhfdCBfX3AxKSB7CiAgaW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3Z0c3RxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA0OSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDhfdCB2dHN0X3U4KHVpbnQ4eDhfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3Z0c3RfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDE2KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHg4X3QgdnRzdF91OCh1aW50OHg4X3QgX19wMCwgdWludDh4OF90IF9fcDEpIHsKICB1aW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3Z0c3RfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAxNik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMngyX3QgdnRzdF91MzIodWludDMyeDJfdCBfX3AwLCB1aW50MzJ4Ml90IF9fcDEpIHsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3Z0c3RfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDE4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4Ml90IHZ0c3RfdTMyKHVpbnQzMngyX3QgX19wMCwgdWludDMyeDJfdCBfX3AxKSB7CiAgdWludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdnRzdF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDE4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDRfdCB2dHN0X3UxNih1aW50MTZ4NF90IF9fcDAsIHVpbnQxNng0X3QgX19wMSkgewogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdnRzdF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMTcpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng0X3QgdnRzdF91MTYodWludDE2eDRfdCBfX3AwLCB1aW50MTZ4NF90IF9fcDEpIHsKICB1aW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92dHN0X3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMTcpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHg4X3QgdnRzdF9zOChpbnQ4eDhfdCBfX3AwLCBpbnQ4eDhfdCBfX3AxKSB7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnRzdF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMTYpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDhfdCB2dHN0X3M4KGludDh4OF90IF9fcDAsIGludDh4OF90IF9fcDEpIHsKICBpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92dHN0X3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMTYpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4Ml90IHZ0c3RfczMyKGludDMyeDJfdCBfX3AwLCBpbnQzMngyX3QgX19wMSkgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdnRzdF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMTgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMngyX3QgdnRzdF9zMzIoaW50MzJ4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxKSB7CiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3Z0c3RfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAxOCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng0X3QgdnRzdF9zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92dHN0X3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAxNyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDRfdCB2dHN0X3MxNihpbnQxNng0X3QgX19wMCwgaW50MTZ4NF90IF9fcDEpIHsKICBpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdnRzdF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDE3KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgcG9seTh4OHgyX3QgdnV6cF9wOChwb2x5OHg4X3QgX19wMCwgcG9seTh4OF90IF9fcDEpIHsKICBwb2x5OHg4eDJfdCBfX3JldDsKICBfX2J1aWx0aW5fbmVvbl92dXpwX3YoJl9fcmV0LCAoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDQpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHBvbHk4eDh4Ml90IHZ1enBfcDgocG9seTh4OF90IF9fcDAsIHBvbHk4eDhfdCBfX3AxKSB7CiAgcG9seTh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHBvbHk4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBwb2x5OHg4eDJfdCBfX3JldDsKICBfX2J1aWx0aW5fbmVvbl92dXpwX3YoJl9fcmV0LCAoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCA0KTsKCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBwb2x5MTZ4NHgyX3QgdnV6cF9wMTYocG9seTE2eDRfdCBfX3AwLCBwb2x5MTZ4NF90IF9fcDEpIHsKICBwb2x5MTZ4NHgyX3QgX19yZXQ7CiAgX19idWlsdGluX25lb25fdnV6cF92KCZfX3JldCwgKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCA1KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBwb2x5MTZ4NHgyX3QgdnV6cF9wMTYocG9seTE2eDRfdCBfX3AwLCBwb2x5MTZ4NF90IF9fcDEpIHsKICBwb2x5MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHBvbHkxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgcG9seTE2eDR4Ml90IF9fcmV0OwogIF9fYnVpbHRpbl9uZW9uX3Z1enBfdigmX19yZXQsIChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDUpOwoKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMywgMiwgMSwgMCk7CiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHBvbHk4eDE2eDJfdCB2dXpwcV9wOChwb2x5OHgxNl90IF9fcDAsIHBvbHk4eDE2X3QgX19wMSkgewogIHBvbHk4eDE2eDJfdCBfX3JldDsKICBfX2J1aWx0aW5fbmVvbl92dXpwcV92KCZfX3JldCwgKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDM2KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBwb2x5OHgxNngyX3QgdnV6cHFfcDgocG9seTh4MTZfdCBfX3AwLCBwb2x5OHgxNl90IF9fcDEpIHsKICBwb2x5OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHBvbHk4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTh4MTZ4Ml90IF9fcmV0OwogIF9fYnVpbHRpbl9uZW9uX3Z1enBxX3YoJl9fcmV0LCAoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDM2KTsKCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBwb2x5MTZ4OHgyX3QgdnV6cHFfcDE2KHBvbHkxNng4X3QgX19wMCwgcG9seTE2eDhfdCBfX3AxKSB7CiAgcG9seTE2eDh4Ml90IF9fcmV0OwogIF9fYnVpbHRpbl9uZW9uX3Z1enBxX3YoJl9fcmV0LCAoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgMzcpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHBvbHkxNng4eDJfdCB2dXpwcV9wMTYocG9seTE2eDhfdCBfX3AwLCBwb2x5MTZ4OF90IF9fcDEpIHsKICBwb2x5MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHBvbHkxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTE2eDh4Ml90IF9fcmV0OwogIF9fYnVpbHRpbl9uZW9uX3Z1enBxX3YoJl9fcmV0LCAoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDM3KTsKCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHgxNngyX3QgdnV6cHFfdTgodWludDh4MTZfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEpIHsKICB1aW50OHgxNngyX3QgX19yZXQ7CiAgX19idWlsdGluX25lb25fdnV6cHFfdigmX19yZXQsIChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA0OCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4MTZ4Ml90IHZ1enBxX3U4KHVpbnQ4eDE2X3QgX19wMCwgdWludDh4MTZfdCBfX3AxKSB7CiAgdWludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2eDJfdCBfX3JldDsKICBfX2J1aWx0aW5fbmVvbl92dXpwcV92KCZfX3JldCwgKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA0OCk7CgogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDR4Ml90IHZ1enBxX3UzMih1aW50MzJ4NF90IF9fcDAsIHVpbnQzMng0X3QgX19wMSkgewogIHVpbnQzMng0eDJfdCBfX3JldDsKICBfX2J1aWx0aW5fbmVvbl92dXpwcV92KCZfX3JldCwgKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDUwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4NHgyX3QgdnV6cHFfdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxKSB7CiAgdWludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0eDJfdCBfX3JldDsKICBfX2J1aWx0aW5fbmVvbl92dXpwcV92KCZfX3JldCwgKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA1MCk7CgogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAzLCAyLCAxLCAwKTsKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDh4Ml90IHZ1enBxX3UxNih1aW50MTZ4OF90IF9fcDAsIHVpbnQxNng4X3QgX19wMSkgewogIHVpbnQxNng4eDJfdCBfX3JldDsKICBfX2J1aWx0aW5fbmVvbl92dXpwcV92KCZfX3JldCwgKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDQ5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4OHgyX3QgdnV6cHFfdTE2KHVpbnQxNng4X3QgX19wMCwgdWludDE2eDhfdCBfX3AxKSB7CiAgdWludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4eDJfdCBfX3JldDsKICBfX2J1aWx0aW5fbmVvbl92dXpwcV92KCZfX3JldCwgKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA0OSk7CgogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHgxNngyX3QgdnV6cHFfczgoaW50OHgxNl90IF9fcDAsIGludDh4MTZfdCBfX3AxKSB7CiAgaW50OHgxNngyX3QgX19yZXQ7CiAgX19idWlsdGluX25lb25fdnV6cHFfdigmX19yZXQsIChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAzMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OHgxNngyX3QgdnV6cHFfczgoaW50OHgxNl90IF9fcDAsIGludDh4MTZfdCBfX3AxKSB7CiAgaW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2eDJfdCBfX3JldDsKICBfX2J1aWx0aW5fbmVvbl92dXpwcV92KCZfX3JldCwgKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAzMik7CgogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMng0eDJfdCB2dXpwcV9mMzIoZmxvYXQzMng0X3QgX19wMCwgZmxvYXQzMng0X3QgX19wMSkgewogIGZsb2F0MzJ4NHgyX3QgX19yZXQ7CiAgX19idWlsdGluX25lb25fdnV6cHFfdigmX19yZXQsIChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA0MSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMng0eDJfdCB2dXpwcV9mMzIoZmxvYXQzMng0X3QgX19wMCwgZmxvYXQzMng0X3QgX19wMSkgewogIGZsb2F0MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGZsb2F0MzJ4NHgyX3QgX19yZXQ7CiAgX19idWlsdGluX25lb25fdnV6cHFfdigmX19yZXQsIChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNDEpOwoKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMywgMiwgMSwgMCk7CiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDR4Ml90IHZ1enBxX3MzMihpbnQzMng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEpIHsKICBpbnQzMng0eDJfdCBfX3JldDsKICBfX2J1aWx0aW5fbmVvbl92dXpwcV92KCZfX3JldCwgKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDM0KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMng0eDJfdCB2dXpwcV9zMzIoaW50MzJ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxKSB7CiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0eDJfdCBfX3JldDsKICBfX2J1aWx0aW5fbmVvbl92dXpwcV92KCZfX3JldCwgKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAzNCk7CgogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAzLCAyLCAxLCAwKTsKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZ4OHgyX3QgdnV6cHFfczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIGludDE2eDh4Ml90IF9fcmV0OwogIF9fYnVpbHRpbl9uZW9uX3Z1enBxX3YoJl9fcmV0LCAoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgMzMpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDh4Ml90IHZ1enBxX3MxNihpbnQxNng4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEpIHsKICBpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDh4Ml90IF9fcmV0OwogIF9fYnVpbHRpbl9uZW9uX3Z1enBxX3YoJl9fcmV0LCAoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDMzKTsKCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHg4eDJfdCB2dXpwX3U4KHVpbnQ4eDhfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIHVpbnQ4eDh4Ml90IF9fcmV0OwogIF9fYnVpbHRpbl9uZW9uX3Z1enBfdigmX19yZXQsIChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMTYpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDh4Ml90IHZ1enBfdTgodWludDh4OF90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxKSB7CiAgdWludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4eDJfdCBfX3JldDsKICBfX2J1aWx0aW5fbmVvbl92dXpwX3YoJl9fcmV0LCAoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAxNik7CgogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDJ4Ml90IHZ1enBfdTMyKHVpbnQzMngyX3QgX19wMCwgdWludDMyeDJfdCBfX3AxKSB7CiAgdWludDMyeDJ4Ml90IF9fcmV0OwogIF9fYnVpbHRpbl9uZW9uX3Z1enBfdigmX19yZXQsIChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMTgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMngyeDJfdCB2dXpwX3UzMih1aW50MzJ4Ml90IF9fcDAsIHVpbnQzMngyX3QgX19wMSkgewogIHVpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50MzJ4MngyX3QgX19yZXQ7CiAgX19idWlsdGluX25lb25fdnV6cF92KCZfX3JldCwgKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMTgpOwoKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMSwgMCk7CiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng0eDJfdCB2dXpwX3UxNih1aW50MTZ4NF90IF9fcDAsIHVpbnQxNng0X3QgX19wMSkgewogIHVpbnQxNng0eDJfdCBfX3JldDsKICBfX2J1aWx0aW5fbmVvbl92dXpwX3YoJl9fcmV0LCAoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDE3KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4NHgyX3QgdnV6cF91MTYodWludDE2eDRfdCBfX3AwLCB1aW50MTZ4NF90IF9fcDEpIHsKICB1aW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDE2eDR4Ml90IF9fcmV0OwogIF9fYnVpbHRpbl9uZW9uX3Z1enBfdigmX19yZXQsIChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDE3KTsKCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDMsIDIsIDEsIDApOwogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDh4Ml90IHZ1enBfczgoaW50OHg4X3QgX19wMCwgaW50OHg4X3QgX19wMSkgewogIGludDh4OHgyX3QgX19yZXQ7CiAgX19idWlsdGluX25lb25fdnV6cF92KCZfX3JldCwgKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ4eDh4Ml90IHZ1enBfczgoaW50OHg4X3QgX19wMCwgaW50OHg4X3QgX19wMSkgewogIGludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OHgyX3QgX19yZXQ7CiAgX19idWlsdGluX25lb25fdnV6cF92KCZfX3JldCwgKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMCk7CgogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMngyeDJfdCB2dXpwX2YzMihmbG9hdDMyeDJfdCBfX3AwLCBmbG9hdDMyeDJfdCBfX3AxKSB7CiAgZmxvYXQzMngyeDJfdCBfX3JldDsKICBfX2J1aWx0aW5fbmVvbl92dXpwX3YoJl9fcmV0LCAoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4MngyX3QgdnV6cF9mMzIoZmxvYXQzMngyX3QgX19wMCwgZmxvYXQzMngyX3QgX19wMSkgewogIGZsb2F0MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGZsb2F0MzJ4MngyX3QgX19yZXQ7CiAgX19idWlsdGluX25lb25fdnV6cF92KCZfX3JldCwgKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgOSk7CgogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAxLCAwKTsKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4MngyX3QgdnV6cF9zMzIoaW50MzJ4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxKSB7CiAgaW50MzJ4MngyX3QgX19yZXQ7CiAgX19idWlsdGluX25lb25fdnV6cF92KCZfX3JldCwgKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMngyeDJfdCB2dXpwX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEpIHsKICBpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGludDMyeDJ4Ml90IF9fcmV0OwogIF9fYnVpbHRpbl9uZW9uX3Z1enBfdigmX19yZXQsIChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDIpOwoKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMSwgMCk7CiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDR4Ml90IHZ1enBfczE2KGludDE2eDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSkgewogIGludDE2eDR4Ml90IF9fcmV0OwogIF9fYnVpbHRpbl9uZW9uX3Z1enBfdigmX19yZXQsIChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4NHgyX3QgdnV6cF9zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxKSB7CiAgaW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0eDJfdCBfX3JldDsKICBfX2J1aWx0aW5fbmVvbl92dXpwX3YoJl9fcmV0LCAoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAxKTsKCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDMsIDIsIDEsIDApOwogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBwb2x5OHg4eDJfdCB2emlwX3A4KHBvbHk4eDhfdCBfX3AwLCBwb2x5OHg4X3QgX19wMSkgewogIHBvbHk4eDh4Ml90IF9fcmV0OwogIF9fYnVpbHRpbl9uZW9uX3Z6aXBfdigmX19yZXQsIChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgNCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgcG9seTh4OHgyX3QgdnppcF9wOChwb2x5OHg4X3QgX19wMCwgcG9seTh4OF90IF9fcDEpIHsKICBwb2x5OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHBvbHk4eDh4Ml90IF9fcmV0OwogIF9fYnVpbHRpbl9uZW9uX3Z6aXBfdigmX19yZXQsIChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDQpOwoKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHBvbHkxNng0eDJfdCB2emlwX3AxNihwb2x5MTZ4NF90IF9fcDAsIHBvbHkxNng0X3QgX19wMSkgewogIHBvbHkxNng0eDJfdCBfX3JldDsKICBfX2J1aWx0aW5fbmVvbl92emlwX3YoJl9fcmV0LCAoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDUpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHBvbHkxNng0eDJfdCB2emlwX3AxNihwb2x5MTZ4NF90IF9fcDAsIHBvbHkxNng0X3QgX19wMSkgewogIHBvbHkxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgcG9seTE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBwb2x5MTZ4NHgyX3QgX19yZXQ7CiAgX19idWlsdGluX25lb25fdnppcF92KCZfX3JldCwgKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgNSk7CgogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAzLCAyLCAxLCAwKTsKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgcG9seTh4MTZ4Ml90IHZ6aXBxX3A4KHBvbHk4eDE2X3QgX19wMCwgcG9seTh4MTZfdCBfX3AxKSB7CiAgcG9seTh4MTZ4Ml90IF9fcmV0OwogIF9fYnVpbHRpbl9uZW9uX3Z6aXBxX3YoJl9fcmV0LCAoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgMzYpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHBvbHk4eDE2eDJfdCB2emlwcV9wOChwb2x5OHgxNl90IF9fcDAsIHBvbHk4eDE2X3QgX19wMSkgewogIHBvbHk4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBwb2x5OHgxNngyX3QgX19yZXQ7CiAgX19idWlsdGluX25lb25fdnppcHFfdigmX19yZXQsIChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgMzYpOwoKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHBvbHkxNng4eDJfdCB2emlwcV9wMTYocG9seTE2eDhfdCBfX3AwLCBwb2x5MTZ4OF90IF9fcDEpIHsKICBwb2x5MTZ4OHgyX3QgX19yZXQ7CiAgX19idWlsdGluX25lb25fdnppcHFfdigmX19yZXQsIChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAzNyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgcG9seTE2eDh4Ml90IHZ6aXBxX3AxNihwb2x5MTZ4OF90IF9fcDAsIHBvbHkxNng4X3QgX19wMSkgewogIHBvbHkxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBwb2x5MTZ4OHgyX3QgX19yZXQ7CiAgX19idWlsdGluX25lb25fdnppcHFfdigmX19yZXQsIChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgMzcpOwoKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDE2eDJfdCB2emlwcV91OCh1aW50OHgxNl90IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSkgewogIHVpbnQ4eDE2eDJfdCBfX3JldDsKICBfX2J1aWx0aW5fbmVvbl92emlwcV92KCZfX3JldCwgKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDQ4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHgxNngyX3QgdnppcHFfdTgodWludDh4MTZfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEpIHsKICB1aW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZ4Ml90IF9fcmV0OwogIF9fYnVpbHRpbl9uZW9uX3Z6aXBxX3YoJl9fcmV0LCAoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDQ4KTsKCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NHgyX3QgdnppcHFfdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxKSB7CiAgdWludDMyeDR4Ml90IF9fcmV0OwogIF9fYnVpbHRpbl9uZW9uX3Z6aXBxX3YoJl9fcmV0LCAoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNTApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMng0eDJfdCB2emlwcV91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDMyeDR4Ml90IF9fcmV0OwogIF9fYnVpbHRpbl9uZW9uX3Z6aXBxX3YoJl9fcmV0LCAoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDUwKTsKCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDMsIDIsIDEsIDApOwogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4OHgyX3QgdnppcHFfdTE2KHVpbnQxNng4X3QgX19wMCwgdWludDE2eDhfdCBfX3AxKSB7CiAgdWludDE2eDh4Ml90IF9fcmV0OwogIF9fYnVpbHRpbl9uZW9uX3Z6aXBxX3YoJl9fcmV0LCAoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNDkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng4eDJfdCB2emlwcV91MTYodWludDE2eDhfdCBfX3AwLCB1aW50MTZ4OF90IF9fcDEpIHsKICB1aW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDh4Ml90IF9fcmV0OwogIF9fYnVpbHRpbl9uZW9uX3Z6aXBxX3YoJl9fcmV0LCAoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDQ5KTsKCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDE2eDJfdCB2emlwcV9zOChpbnQ4eDE2X3QgX19wMCwgaW50OHgxNl90IF9fcDEpIHsKICBpbnQ4eDE2eDJfdCBfX3JldDsKICBfX2J1aWx0aW5fbmVvbl92emlwcV92KCZfX3JldCwgKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDMyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ4eDE2eDJfdCB2emlwcV9zOChpbnQ4eDE2X3QgX19wMCwgaW50OHgxNl90IF9fcDEpIHsKICBpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4MTZ4Ml90IF9fcmV0OwogIF9fYnVpbHRpbl9uZW9uX3Z6aXBxX3YoJl9fcmV0LCAoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDMyKTsKCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDR4Ml90IHZ6aXBxX2YzMihmbG9hdDMyeDRfdCBfX3AwLCBmbG9hdDMyeDRfdCBfX3AxKSB7CiAgZmxvYXQzMng0eDJfdCBfX3JldDsKICBfX2J1aWx0aW5fbmVvbl92emlwcV92KCZfX3JldCwgKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDQxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDR4Ml90IHZ6aXBxX2YzMihmbG9hdDMyeDRfdCBfX3AwLCBmbG9hdDMyeDRfdCBfX3AxKSB7CiAgZmxvYXQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMng0eDJfdCBfX3JldDsKICBfX2J1aWx0aW5fbmVvbl92emlwcV92KCZfX3JldCwgKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA0MSk7CgogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAzLCAyLCAxLCAwKTsKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4NHgyX3QgdnppcHFfczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIGludDMyeDR4Ml90IF9fcmV0OwogIF9fYnVpbHRpbl9uZW9uX3Z6aXBxX3YoJl9fcmV0LCAoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgMzQpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDR4Ml90IHZ6aXBxX3MzMihpbnQzMng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEpIHsKICBpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGludDMyeDR4Ml90IF9fcmV0OwogIF9fYnVpbHRpbl9uZW9uX3Z6aXBxX3YoJl9fcmV0LCAoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDM0KTsKCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDMsIDIsIDEsIDApOwogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng4eDJfdCB2emlwcV9zMTYoaW50MTZ4OF90IF9fcDAsIGludDE2eDhfdCBfX3AxKSB7CiAgaW50MTZ4OHgyX3QgX19yZXQ7CiAgX19idWlsdGluX25lb25fdnppcHFfdigmX19yZXQsIChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAzMyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4OHgyX3QgdnppcHFfczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OHgyX3QgX19yZXQ7CiAgX19idWlsdGluX25lb25fdnppcHFfdigmX19yZXQsIChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgMzMpOwoKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDh4Ml90IHZ6aXBfdTgodWludDh4OF90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxKSB7CiAgdWludDh4OHgyX3QgX19yZXQ7CiAgX19idWlsdGluX25lb25fdnppcF92KCZfX3JldCwgKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAxNik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4OHgyX3QgdnppcF91OCh1aW50OHg4X3QgX19wMCwgdWludDh4OF90IF9fcDEpIHsKICB1aW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDh4Ml90IF9fcmV0OwogIF9fYnVpbHRpbl9uZW9uX3Z6aXBfdigmX19yZXQsIChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDE2KTsKCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4MngyX3QgdnppcF91MzIodWludDMyeDJfdCBfX3AwLCB1aW50MzJ4Ml90IF9fcDEpIHsKICB1aW50MzJ4MngyX3QgX19yZXQ7CiAgX19idWlsdGluX25lb25fdnppcF92KCZfX3JldCwgKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAxOCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDJ4Ml90IHZ6aXBfdTMyKHVpbnQzMngyX3QgX19wMCwgdWludDMyeDJfdCBfX3AxKSB7CiAgdWludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQzMngyeDJfdCBfX3JldDsKICBfX2J1aWx0aW5fbmVvbl92emlwX3YoJl9fcmV0LCAoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAxOCk7CgogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAxLCAwKTsKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDR4Ml90IHZ6aXBfdTE2KHVpbnQxNng0X3QgX19wMCwgdWludDE2eDRfdCBfX3AxKSB7CiAgdWludDE2eDR4Ml90IF9fcmV0OwogIF9fYnVpbHRpbl9uZW9uX3Z6aXBfdigmX19yZXQsIChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMTcpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng0eDJfdCB2emlwX3UxNih1aW50MTZ4NF90IF9fcDAsIHVpbnQxNng0X3QgX19wMSkgewogIHVpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NHgyX3QgX19yZXQ7CiAgX19idWlsdGluX25lb25fdnppcF92KCZfX3JldCwgKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMTcpOwoKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMywgMiwgMSwgMCk7CiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4OHgyX3QgdnppcF9zOChpbnQ4eDhfdCBfX3AwLCBpbnQ4eDhfdCBfX3AxKSB7CiAgaW50OHg4eDJfdCBfX3JldDsKICBfX2J1aWx0aW5fbmVvbl92emlwX3YoJl9fcmV0LCAoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4OHgyX3QgdnppcF9zOChpbnQ4eDhfdCBfX3AwLCBpbnQ4eDhfdCBfX3AxKSB7CiAgaW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4eDJfdCBfX3JldDsKICBfX2J1aWx0aW5fbmVvbl92emlwX3YoJl9fcmV0LCAoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAwKTsKCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDJ4Ml90IHZ6aXBfZjMyKGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0MzJ4Ml90IF9fcDEpIHsKICBmbG9hdDMyeDJ4Ml90IF9fcmV0OwogIF9fYnVpbHRpbl9uZW9uX3Z6aXBfdigmX19yZXQsIChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgOSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMngyeDJfdCB2emlwX2YzMihmbG9hdDMyeDJfdCBfX3AwLCBmbG9hdDMyeDJfdCBfX3AxKSB7CiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgZmxvYXQzMngyeDJfdCBfX3JldDsKICBfX2J1aWx0aW5fbmVvbl92emlwX3YoJl9fcmV0LCAoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCA5KTsKCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDEsIDApOwogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMngyeDJfdCB2emlwX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEpIHsKICBpbnQzMngyeDJfdCBfX3JldDsKICBfX2J1aWx0aW5fbmVvbl92emlwX3YoJl9fcmV0LCAoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDJ4Ml90IHZ6aXBfczMyKGludDMyeDJfdCBfX3AwLCBpbnQzMngyX3QgX19wMSkgewogIGludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgaW50MzJ4MngyX3QgX19yZXQ7CiAgX19idWlsdGluX25lb25fdnppcF92KCZfX3JldCwgKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMik7CgogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAxLCAwKTsKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZ4NHgyX3QgdnppcF9zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxKSB7CiAgaW50MTZ4NHgyX3QgX19yZXQ7CiAgX19idWlsdGluX25lb25fdnppcF92KCZfX3JldCwgKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng0eDJfdCB2emlwX3MxNihpbnQxNng0X3QgX19wMCwgaW50MTZ4NF90IF9fcDEpIHsKICBpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGludDE2eDR4Ml90IF9fcmV0OwogIF9fYnVpbHRpbl9uZW9uX3Z6aXBfdigmX19yZXQsIChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDEpOwoKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMywgMiwgMSwgMCk7CiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmR1cHFfbGFuZV9mMTYoX19wMF8xMjIsIF9fcDFfMTIyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDRfdCBfX3MwXzEyMiA9IF9fcDBfMTIyOyBcCiAgZmxvYXQxNng4X3QgX19yZXRfMTIyOyBcCiAgX19yZXRfMTIyID0gc3BsYXRxX2xhbmVfZjE2KF9fczBfMTIyLCBfX3AxXzEyMik7IFwKICBfX3JldF8xMjI7IFwKfSkKI2Vsc2UKI2RlZmluZSB2ZHVwcV9sYW5lX2YxNihfX3AwXzEyMywgX19wMV8xMjMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4NF90IF9fczBfMTIzID0gX19wMF8xMjM7IFwKICBmbG9hdDE2eDRfdCBfX3JldjBfMTIzOyAgX19yZXYwXzEyMyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfMTIzLCBfX3MwXzEyMywgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2eDhfdCBfX3JldF8xMjM7IFwKICBfX3JldF8xMjMgPSBfX25vc3dhcF9zcGxhdHFfbGFuZV9mMTYoX19yZXYwXzEyMywgX19wMV8xMjMpOyBcCiAgX19yZXRfMTIzID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMTIzLCBfX3JldF8xMjMsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfMTIzOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmR1cF9sYW5lX2YxNihfX3AwXzEyNCwgX19wMV8xMjQpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4NF90IF9fczBfMTI0ID0gX19wMF8xMjQ7IFwKICBmbG9hdDE2eDRfdCBfX3JldF8xMjQ7IFwKICBfX3JldF8xMjQgPSBzcGxhdF9sYW5lX2YxNihfX3MwXzEyNCwgX19wMV8xMjQpOyBcCiAgX19yZXRfMTI0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmR1cF9sYW5lX2YxNihfX3AwXzEyNSwgX19wMV8xMjUpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4NF90IF9fczBfMTI1ID0gX19wMF8xMjU7IFwKICBmbG9hdDE2eDRfdCBfX3JldjBfMTI1OyAgX19yZXYwXzEyNSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfMTI1LCBfX3MwXzEyNSwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2eDRfdCBfX3JldF8xMjU7IFwKICBfX3JldF8xMjUgPSBfX25vc3dhcF9zcGxhdF9sYW5lX2YxNihfX3JldjBfMTI1LCBfX3AxXzEyNSk7IFwKICBfX3JldF8xMjUgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8xMjUsIF9fcmV0XzEyNSwgMywgMiwgMSwgMCk7IFwKICBfX3JldF8xMjU7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2ZHVwcV9uX2YxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KSB7X19zMCwgX19zMCwgX19zMCwgX19zMCwgX19zMCwgX19zMCwgX19zMCwgX19zMH07IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZkdXBxX25fZjE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQxNng4X3QpIHtfX3MwLCBfX3MwLCBfX3MwLCBfX3MwLCBfX3MwLCBfX3MwLCBfX3MwLCBfX3MwfTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmR1cF9uX2YxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KSB7X19zMCwgX19zMCwgX19zMCwgX19zMH07IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZkdXBfbl9mMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNl90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDE2eDRfdCkge19fczAsIF9fczAsIF9fczAsIF9fczB9OyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bW92cV9uX2YxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KSB7X19zMCwgX19zMCwgX19zMCwgX19zMCwgX19zMCwgX19zMCwgX19zMCwgX19zMH07IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZtb3ZxX25fZjE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQxNng4X3QpIHtfX3MwLCBfX3MwLCBfX3MwLCBfX3MwLCBfX3MwLCBfX3MwLCBfX3MwLCBfX3MwfTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm1vdl9uX2YxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KSB7X19zMCwgX19zMCwgX19zMCwgX19zMH07IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZtb3Zfbl9mMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNl90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDE2eDRfdCkge19fczAsIF9fczAsIF9fczAsIF9fczB9OyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cWRtdWxocV9sYW5lX3MzMihfX3AwXzEyNiwgX19wMV8xMjYsIF9fcDJfMTI2KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMF8xMjYgPSBfX3AwXzEyNjsgXAogIGludDMyeDJfdCBfX3MxXzEyNiA9IF9fcDFfMTI2OyBcCiAgaW50MzJ4NF90IF9fcmV0XzEyNjsgXAogIF9fcmV0XzEyNiA9IHZxZG11bGhxX3MzMihfX3MwXzEyNiwgc3BsYXRxX2xhbmVfczMyKF9fczFfMTI2LCBfX3AyXzEyNikpOyBcCiAgX19yZXRfMTI2OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFkbXVsaHFfbGFuZV9zMzIoX19wMF8xMjcsIF9fcDFfMTI3LCBfX3AyXzEyNykgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczBfMTI3ID0gX19wMF8xMjc7IFwKICBpbnQzMngyX3QgX19zMV8xMjcgPSBfX3AxXzEyNzsgXAogIGludDMyeDRfdCBfX3JldjBfMTI3OyAgX19yZXYwXzEyNyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfMTI3LCBfX3MwXzEyNywgMywgMiwgMSwgMCk7IFwKICBpbnQzMngyX3QgX19yZXYxXzEyNzsgIF9fcmV2MV8xMjcgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzEyNywgX19zMV8xMjcsIDEsIDApOyBcCiAgaW50MzJ4NF90IF9fcmV0XzEyNzsgXAogIF9fcmV0XzEyNyA9IF9fbm9zd2FwX3ZxZG11bGhxX3MzMihfX3JldjBfMTI3LCBfX25vc3dhcF9zcGxhdHFfbGFuZV9zMzIoX19yZXYxXzEyNywgX19wMl8xMjcpKTsgXAogIF9fcmV0XzEyNyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzEyNywgX19yZXRfMTI3LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzEyNzsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZxZG11bGhxX2xhbmVfczE2KF9fcDBfMTI4LCBfX3AxXzEyOCwgX19wMl8xMjgpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDhfdCBfX3MwXzEyOCA9IF9fcDBfMTI4OyBcCiAgaW50MTZ4NF90IF9fczFfMTI4ID0gX19wMV8xMjg7IFwKICBpbnQxNng4X3QgX19yZXRfMTI4OyBcCiAgX19yZXRfMTI4ID0gdnFkbXVsaHFfczE2KF9fczBfMTI4LCBzcGxhdHFfbGFuZV9zMTYoX19zMV8xMjgsIF9fcDJfMTI4KSk7IFwKICBfX3JldF8xMjg7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cWRtdWxocV9sYW5lX3MxNihfX3AwXzEyOSwgX19wMV8xMjksIF9fcDJfMTI5KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4X3QgX19zMF8xMjkgPSBfX3AwXzEyOTsgXAogIGludDE2eDRfdCBfX3MxXzEyOSA9IF9fcDFfMTI5OyBcCiAgaW50MTZ4OF90IF9fcmV2MF8xMjk7ICBfX3JldjBfMTI5ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8xMjksIF9fczBfMTI5LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDRfdCBfX3JldjFfMTI5OyAgX19yZXYxXzEyOSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfMTI5LCBfX3MxXzEyOSwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng4X3QgX19yZXRfMTI5OyBcCiAgX19yZXRfMTI5ID0gX19ub3N3YXBfdnFkbXVsaHFfczE2KF9fcmV2MF8xMjksIF9fbm9zd2FwX3NwbGF0cV9sYW5lX3MxNihfX3JldjFfMTI5LCBfX3AyXzEyOSkpOyBcCiAgX19yZXRfMTI5ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMTI5LCBfX3JldF8xMjksIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfMTI5OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFkbXVsaF9sYW5lX3MzMihfX3AwXzEzMCwgX19wMV8xMzAsIF9fcDJfMTMwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMngyX3QgX19zMF8xMzAgPSBfX3AwXzEzMDsgXAogIGludDMyeDJfdCBfX3MxXzEzMCA9IF9fcDFfMTMwOyBcCiAgaW50MzJ4Ml90IF9fcmV0XzEzMDsgXAogIF9fcmV0XzEzMCA9IHZxZG11bGhfczMyKF9fczBfMTMwLCBzcGxhdF9sYW5lX3MzMihfX3MxXzEzMCwgX19wMl8xMzApKTsgXAogIF9fcmV0XzEzMDsgXAp9KQojZWxzZQojZGVmaW5lIHZxZG11bGhfbGFuZV9zMzIoX19wMF8xMzEsIF9fcDFfMTMxLCBfX3AyXzEzMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Ml90IF9fczBfMTMxID0gX19wMF8xMzE7IFwKICBpbnQzMngyX3QgX19zMV8xMzEgPSBfX3AxXzEzMTsgXAogIGludDMyeDJfdCBfX3JldjBfMTMxOyAgX19yZXYwXzEzMSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfMTMxLCBfX3MwXzEzMSwgMSwgMCk7IFwKICBpbnQzMngyX3QgX19yZXYxXzEzMTsgIF9fcmV2MV8xMzEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzEzMSwgX19zMV8xMzEsIDEsIDApOyBcCiAgaW50MzJ4Ml90IF9fcmV0XzEzMTsgXAogIF9fcmV0XzEzMSA9IF9fbm9zd2FwX3ZxZG11bGhfczMyKF9fcmV2MF8xMzEsIF9fbm9zd2FwX3NwbGF0X2xhbmVfczMyKF9fcmV2MV8xMzEsIF9fcDJfMTMxKSk7IFwKICBfX3JldF8xMzEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8xMzEsIF9fcmV0XzEzMSwgMSwgMCk7IFwKICBfX3JldF8xMzE7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cWRtdWxoX2xhbmVfczE2KF9fcDBfMTMyLCBfX3AxXzEzMiwgX19wMl8xMzIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDRfdCBfX3MwXzEzMiA9IF9fcDBfMTMyOyBcCiAgaW50MTZ4NF90IF9fczFfMTMyID0gX19wMV8xMzI7IFwKICBpbnQxNng0X3QgX19yZXRfMTMyOyBcCiAgX19yZXRfMTMyID0gdnFkbXVsaF9zMTYoX19zMF8xMzIsIHNwbGF0X2xhbmVfczE2KF9fczFfMTMyLCBfX3AyXzEzMikpOyBcCiAgX19yZXRfMTMyOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFkbXVsaF9sYW5lX3MxNihfX3AwXzEzMywgX19wMV8xMzMsIF9fcDJfMTMzKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng0X3QgX19zMF8xMzMgPSBfX3AwXzEzMzsgXAogIGludDE2eDRfdCBfX3MxXzEzMyA9IF9fcDFfMTMzOyBcCiAgaW50MTZ4NF90IF9fcmV2MF8xMzM7ICBfX3JldjBfMTMzID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8xMzMsIF9fczBfMTMzLCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDRfdCBfX3JldjFfMTMzOyAgX19yZXYxXzEzMyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfMTMzLCBfX3MxXzEzMywgMywgMiwgMSwgMCk7IFwKICBpbnQxNng0X3QgX19yZXRfMTMzOyBcCiAgX19yZXRfMTMzID0gX19ub3N3YXBfdnFkbXVsaF9zMTYoX19yZXYwXzEzMywgX19ub3N3YXBfc3BsYXRfbGFuZV9zMTYoX19yZXYxXzEzMywgX19wMl8xMzMpKTsgXAogIF9fcmV0XzEzMyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzEzMywgX19yZXRfMTMzLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzEzMzsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZxcmRtdWxocV9sYW5lX3MzMihfX3AwXzEzNCwgX19wMV8xMzQsIF9fcDJfMTM0KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMF8xMzQgPSBfX3AwXzEzNDsgXAogIGludDMyeDJfdCBfX3MxXzEzNCA9IF9fcDFfMTM0OyBcCiAgaW50MzJ4NF90IF9fcmV0XzEzNDsgXAogIF9fcmV0XzEzNCA9IHZxcmRtdWxocV9zMzIoX19zMF8xMzQsIHNwbGF0cV9sYW5lX3MzMihfX3MxXzEzNCwgX19wMl8xMzQpKTsgXAogIF9fcmV0XzEzNDsgXAp9KQojZWxzZQojZGVmaW5lIHZxcmRtdWxocV9sYW5lX3MzMihfX3AwXzEzNSwgX19wMV8xMzUsIF9fcDJfMTM1KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMF8xMzUgPSBfX3AwXzEzNTsgXAogIGludDMyeDJfdCBfX3MxXzEzNSA9IF9fcDFfMTM1OyBcCiAgaW50MzJ4NF90IF9fcmV2MF8xMzU7ICBfX3JldjBfMTM1ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8xMzUsIF9fczBfMTM1LCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDJfdCBfX3JldjFfMTM1OyAgX19yZXYxXzEzNSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfMTM1LCBfX3MxXzEzNSwgMSwgMCk7IFwKICBpbnQzMng0X3QgX19yZXRfMTM1OyBcCiAgX19yZXRfMTM1ID0gX19ub3N3YXBfdnFyZG11bGhxX3MzMihfX3JldjBfMTM1LCBfX25vc3dhcF9zcGxhdHFfbGFuZV9zMzIoX19yZXYxXzEzNSwgX19wMl8xMzUpKTsgXAogIF9fcmV0XzEzNSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzEzNSwgX19yZXRfMTM1LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzEzNTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZxcmRtdWxocV9sYW5lX3MxNihfX3AwXzEzNiwgX19wMV8xMzYsIF9fcDJfMTM2KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4X3QgX19zMF8xMzYgPSBfX3AwXzEzNjsgXAogIGludDE2eDRfdCBfX3MxXzEzNiA9IF9fcDFfMTM2OyBcCiAgaW50MTZ4OF90IF9fcmV0XzEzNjsgXAogIF9fcmV0XzEzNiA9IHZxcmRtdWxocV9zMTYoX19zMF8xMzYsIHNwbGF0cV9sYW5lX3MxNihfX3MxXzEzNiwgX19wMl8xMzYpKTsgXAogIF9fcmV0XzEzNjsgXAp9KQojZWxzZQojZGVmaW5lIHZxcmRtdWxocV9sYW5lX3MxNihfX3AwXzEzNywgX19wMV8xMzcsIF9fcDJfMTM3KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4X3QgX19zMF8xMzcgPSBfX3AwXzEzNzsgXAogIGludDE2eDRfdCBfX3MxXzEzNyA9IF9fcDFfMTM3OyBcCiAgaW50MTZ4OF90IF9fcmV2MF8xMzc7ICBfX3JldjBfMTM3ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8xMzcsIF9fczBfMTM3LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDRfdCBfX3JldjFfMTM3OyAgX19yZXYxXzEzNyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfMTM3LCBfX3MxXzEzNywgMywgMiwgMSwgMCk7IFwKICBpbnQxNng4X3QgX19yZXRfMTM3OyBcCiAgX19yZXRfMTM3ID0gX19ub3N3YXBfdnFyZG11bGhxX3MxNihfX3JldjBfMTM3LCBfX25vc3dhcF9zcGxhdHFfbGFuZV9zMTYoX19yZXYxXzEzNywgX19wMl8xMzcpKTsgXAogIF9fcmV0XzEzNyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzEzNywgX19yZXRfMTM3LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzEzNzsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZxcmRtdWxoX2xhbmVfczMyKF9fcDBfMTM4LCBfX3AxXzEzOCwgX19wMl8xMzgpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJfdCBfX3MwXzEzOCA9IF9fcDBfMTM4OyBcCiAgaW50MzJ4Ml90IF9fczFfMTM4ID0gX19wMV8xMzg7IFwKICBpbnQzMngyX3QgX19yZXRfMTM4OyBcCiAgX19yZXRfMTM4ID0gdnFyZG11bGhfczMyKF9fczBfMTM4LCBzcGxhdF9sYW5lX3MzMihfX3MxXzEzOCwgX19wMl8xMzgpKTsgXAogIF9fcmV0XzEzODsgXAp9KQojZWxzZQojZGVmaW5lIHZxcmRtdWxoX2xhbmVfczMyKF9fcDBfMTM5LCBfX3AxXzEzOSwgX19wMl8xMzkpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJfdCBfX3MwXzEzOSA9IF9fcDBfMTM5OyBcCiAgaW50MzJ4Ml90IF9fczFfMTM5ID0gX19wMV8xMzk7IFwKICBpbnQzMngyX3QgX19yZXYwXzEzOTsgIF9fcmV2MF8xMzkgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzEzOSwgX19zMF8xMzksIDEsIDApOyBcCiAgaW50MzJ4Ml90IF9fcmV2MV8xMzk7ICBfX3JldjFfMTM5ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV8xMzksIF9fczFfMTM5LCAxLCAwKTsgXAogIGludDMyeDJfdCBfX3JldF8xMzk7IFwKICBfX3JldF8xMzkgPSBfX25vc3dhcF92cXJkbXVsaF9zMzIoX19yZXYwXzEzOSwgX19ub3N3YXBfc3BsYXRfbGFuZV9zMzIoX19yZXYxXzEzOSwgX19wMl8xMzkpKTsgXAogIF9fcmV0XzEzOSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzEzOSwgX19yZXRfMTM5LCAxLCAwKTsgXAogIF9fcmV0XzEzOTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZxcmRtdWxoX2xhbmVfczE2KF9fcDBfMTQwLCBfX3AxXzE0MCwgX19wMl8xNDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDRfdCBfX3MwXzE0MCA9IF9fcDBfMTQwOyBcCiAgaW50MTZ4NF90IF9fczFfMTQwID0gX19wMV8xNDA7IFwKICBpbnQxNng0X3QgX19yZXRfMTQwOyBcCiAgX19yZXRfMTQwID0gdnFyZG11bGhfczE2KF9fczBfMTQwLCBzcGxhdF9sYW5lX3MxNihfX3MxXzE0MCwgX19wMl8xNDApKTsgXAogIF9fcmV0XzE0MDsgXAp9KQojZWxzZQojZGVmaW5lIHZxcmRtdWxoX2xhbmVfczE2KF9fcDBfMTQxLCBfX3AxXzE0MSwgX19wMl8xNDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDRfdCBfX3MwXzE0MSA9IF9fcDBfMTQxOyBcCiAgaW50MTZ4NF90IF9fczFfMTQxID0gX19wMV8xNDE7IFwKICBpbnQxNng0X3QgX19yZXYwXzE0MTsgIF9fcmV2MF8xNDEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzE0MSwgX19zMF8xNDEsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4NF90IF9fcmV2MV8xNDE7ICBfX3JldjFfMTQxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV8xNDEsIF9fczFfMTQxLCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDRfdCBfX3JldF8xNDE7IFwKICBfX3JldF8xNDEgPSBfX25vc3dhcF92cXJkbXVsaF9zMTYoX19yZXYwXzE0MSwgX19ub3N3YXBfc3BsYXRfbGFuZV9zMTYoX19yZXYxXzE0MSwgX19wMl8xNDEpKTsgXAogIF9fcmV0XzE0MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzE0MSwgX19yZXRfMTQxLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzE0MTsgXAp9KQojZW5kaWYKCl9fYWkgcG9seTh4OF90IHZyZWludGVycHJldF9wOF9wMTYocG9seTE2eDRfdCBfX3AwKSB7CiAgcG9seTh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk4eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTh4OF90IHZyZWludGVycHJldF9wOF91OCh1aW50OHg4X3QgX19wMCkgewogIHBvbHk4eDhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHg4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHk4eDhfdCB2cmVpbnRlcnByZXRfcDhfdTMyKHVpbnQzMngyX3QgX19wMCkgewogIHBvbHk4eDhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHg4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHk4eDhfdCB2cmVpbnRlcnByZXRfcDhfdTY0KHVpbnQ2NHgxX3QgX19wMCkgewogIHBvbHk4eDhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHg4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHk4eDhfdCB2cmVpbnRlcnByZXRfcDhfdTE2KHVpbnQxNng0X3QgX19wMCkgewogIHBvbHk4eDhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHg4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHk4eDhfdCB2cmVpbnRlcnByZXRfcDhfczgoaW50OHg4X3QgX19wMCkgewogIHBvbHk4eDhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHg4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHk4eDhfdCB2cmVpbnRlcnByZXRfcDhfZjMyKGZsb2F0MzJ4Ml90IF9fcDApIHsKICBwb2x5OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTh4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBwb2x5OHg4X3QgdnJlaW50ZXJwcmV0X3A4X2YxNihmbG9hdDE2eDRfdCBfX3AwKSB7CiAgcG9seTh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk4eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTh4OF90IHZyZWludGVycHJldF9wOF9zMzIoaW50MzJ4Ml90IF9fcDApIHsKICBwb2x5OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTh4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBwb2x5OHg4X3QgdnJlaW50ZXJwcmV0X3A4X3M2NChpbnQ2NHgxX3QgX19wMCkgewogIHBvbHk4eDhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHg4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHk4eDhfdCB2cmVpbnRlcnByZXRfcDhfczE2KGludDE2eDRfdCBfX3AwKSB7CiAgcG9seTh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk4eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTE2eDRfdCB2cmVpbnRlcnByZXRfcDE2X3A4KHBvbHk4eDhfdCBfX3AwKSB7CiAgcG9seTE2eDRfdCBfX3JldDsKICBfX3JldCA9IChwb2x5MTZ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBwb2x5MTZ4NF90IHZyZWludGVycHJldF9wMTZfdTgodWludDh4OF90IF9fcDApIHsKICBwb2x5MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHkxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHkxNng0X3QgdnJlaW50ZXJwcmV0X3AxNl91MzIodWludDMyeDJfdCBfX3AwKSB7CiAgcG9seTE2eDRfdCBfX3JldDsKICBfX3JldCA9IChwb2x5MTZ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBwb2x5MTZ4NF90IHZyZWludGVycHJldF9wMTZfdTY0KHVpbnQ2NHgxX3QgX19wMCkgewogIHBvbHkxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTE2eDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTE2eDRfdCB2cmVpbnRlcnByZXRfcDE2X3UxNih1aW50MTZ4NF90IF9fcDApIHsKICBwb2x5MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHkxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHkxNng0X3QgdnJlaW50ZXJwcmV0X3AxNl9zOChpbnQ4eDhfdCBfX3AwKSB7CiAgcG9seTE2eDRfdCBfX3JldDsKICBfX3JldCA9IChwb2x5MTZ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBwb2x5MTZ4NF90IHZyZWludGVycHJldF9wMTZfZjMyKGZsb2F0MzJ4Ml90IF9fcDApIHsKICBwb2x5MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHkxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHkxNng0X3QgdnJlaW50ZXJwcmV0X3AxNl9mMTYoZmxvYXQxNng0X3QgX19wMCkgewogIHBvbHkxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTE2eDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTE2eDRfdCB2cmVpbnRlcnByZXRfcDE2X3MzMihpbnQzMngyX3QgX19wMCkgewogIHBvbHkxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTE2eDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTE2eDRfdCB2cmVpbnRlcnByZXRfcDE2X3M2NChpbnQ2NHgxX3QgX19wMCkgewogIHBvbHkxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTE2eDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTE2eDRfdCB2cmVpbnRlcnByZXRfcDE2X3MxNihpbnQxNng0X3QgX19wMCkgewogIHBvbHkxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTE2eDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTh4MTZfdCB2cmVpbnRlcnByZXRxX3A4X3AxNihwb2x5MTZ4OF90IF9fcDApIHsKICBwb2x5OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk4eDE2X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHk4eDE2X3QgdnJlaW50ZXJwcmV0cV9wOF91OCh1aW50OHgxNl90IF9fcDApIHsKICBwb2x5OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk4eDE2X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHk4eDE2X3QgdnJlaW50ZXJwcmV0cV9wOF91MzIodWludDMyeDRfdCBfX3AwKSB7CiAgcG9seTh4MTZfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHgxNl90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBwb2x5OHgxNl90IHZyZWludGVycHJldHFfcDhfdTY0KHVpbnQ2NHgyX3QgX19wMCkgewogIHBvbHk4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTh4MTZfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTh4MTZfdCB2cmVpbnRlcnByZXRxX3A4X3UxNih1aW50MTZ4OF90IF9fcDApIHsKICBwb2x5OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk4eDE2X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHk4eDE2X3QgdnJlaW50ZXJwcmV0cV9wOF9zOChpbnQ4eDE2X3QgX19wMCkgewogIHBvbHk4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTh4MTZfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTh4MTZfdCB2cmVpbnRlcnByZXRxX3A4X2YzMihmbG9hdDMyeDRfdCBfX3AwKSB7CiAgcG9seTh4MTZfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHgxNl90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBwb2x5OHgxNl90IHZyZWludGVycHJldHFfcDhfZjE2KGZsb2F0MTZ4OF90IF9fcDApIHsKICBwb2x5OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk4eDE2X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHk4eDE2X3QgdnJlaW50ZXJwcmV0cV9wOF9zMzIoaW50MzJ4NF90IF9fcDApIHsKICBwb2x5OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk4eDE2X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHk4eDE2X3QgdnJlaW50ZXJwcmV0cV9wOF9zNjQoaW50NjR4Ml90IF9fcDApIHsKICBwb2x5OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk4eDE2X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHk4eDE2X3QgdnJlaW50ZXJwcmV0cV9wOF9zMTYoaW50MTZ4OF90IF9fcDApIHsKICBwb2x5OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk4eDE2X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHkxNng4X3QgdnJlaW50ZXJwcmV0cV9wMTZfcDgocG9seTh4MTZfdCBfX3AwKSB7CiAgcG9seTE2eDhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBwb2x5MTZ4OF90IHZyZWludGVycHJldHFfcDE2X3U4KHVpbnQ4eDE2X3QgX19wMCkgewogIHBvbHkxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTE2eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTE2eDhfdCB2cmVpbnRlcnByZXRxX3AxNl91MzIodWludDMyeDRfdCBfX3AwKSB7CiAgcG9seTE2eDhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBwb2x5MTZ4OF90IHZyZWludGVycHJldHFfcDE2X3U2NCh1aW50NjR4Ml90IF9fcDApIHsKICBwb2x5MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHkxNng4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHkxNng4X3QgdnJlaW50ZXJwcmV0cV9wMTZfdTE2KHVpbnQxNng4X3QgX19wMCkgewogIHBvbHkxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTE2eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTE2eDhfdCB2cmVpbnRlcnByZXRxX3AxNl9zOChpbnQ4eDE2X3QgX19wMCkgewogIHBvbHkxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTE2eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTE2eDhfdCB2cmVpbnRlcnByZXRxX3AxNl9mMzIoZmxvYXQzMng0X3QgX19wMCkgewogIHBvbHkxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTE2eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTE2eDhfdCB2cmVpbnRlcnByZXRxX3AxNl9mMTYoZmxvYXQxNng4X3QgX19wMCkgewogIHBvbHkxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTE2eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTE2eDhfdCB2cmVpbnRlcnByZXRxX3AxNl9zMzIoaW50MzJ4NF90IF9fcDApIHsKICBwb2x5MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHkxNng4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHkxNng4X3QgdnJlaW50ZXJwcmV0cV9wMTZfczY0KGludDY0eDJfdCBfX3AwKSB7CiAgcG9seTE2eDhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBwb2x5MTZ4OF90IHZyZWludGVycHJldHFfcDE2X3MxNihpbnQxNng4X3QgX19wMCkgewogIHBvbHkxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTE2eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDh4MTZfdCB2cmVpbnRlcnByZXRxX3U4X3A4KHBvbHk4eDE2X3QgX19wMCkgewogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDh4MTZfdCB2cmVpbnRlcnByZXRxX3U4X3AxNihwb2x5MTZ4OF90IF9fcDApIHsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ4eDE2X3QgdnJlaW50ZXJwcmV0cV91OF91MzIodWludDMyeDRfdCBfX3AwKSB7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHgxNl90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50OHgxNl90IHZyZWludGVycHJldHFfdThfdTY0KHVpbnQ2NHgyX3QgX19wMCkgewogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDh4MTZfdCB2cmVpbnRlcnByZXRxX3U4X3UxNih1aW50MTZ4OF90IF9fcDApIHsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ4eDE2X3QgdnJlaW50ZXJwcmV0cV91OF9zOChpbnQ4eDE2X3QgX19wMCkgewogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDh4MTZfdCB2cmVpbnRlcnByZXRxX3U4X2YzMihmbG9hdDMyeDRfdCBfX3AwKSB7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHgxNl90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50OHgxNl90IHZyZWludGVycHJldHFfdThfZjE2KGZsb2F0MTZ4OF90IF9fcDApIHsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ4eDE2X3QgdnJlaW50ZXJwcmV0cV91OF9zMzIoaW50MzJ4NF90IF9fcDApIHsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ4eDE2X3QgdnJlaW50ZXJwcmV0cV91OF9zNjQoaW50NjR4Ml90IF9fcDApIHsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ4eDE2X3QgdnJlaW50ZXJwcmV0cV91OF9zMTYoaW50MTZ4OF90IF9fcDApIHsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQzMng0X3QgdnJlaW50ZXJwcmV0cV91MzJfcDgocG9seTh4MTZfdCBfX3AwKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MzJ4NF90IHZyZWludGVycHJldHFfdTMyX3AxNihwb2x5MTZ4OF90IF9fcDApIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQzMng0X3QgdnJlaW50ZXJwcmV0cV91MzJfdTgodWludDh4MTZfdCBfX3AwKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MzJ4NF90IHZyZWludGVycHJldHFfdTMyX3U2NCh1aW50NjR4Ml90IF9fcDApIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQzMng0X3QgdnJlaW50ZXJwcmV0cV91MzJfdTE2KHVpbnQxNng4X3QgX19wMCkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDMyeDRfdCB2cmVpbnRlcnByZXRxX3UzMl9zOChpbnQ4eDE2X3QgX19wMCkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDMyeDRfdCB2cmVpbnRlcnByZXRxX3UzMl9mMzIoZmxvYXQzMng0X3QgX19wMCkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDMyeDRfdCB2cmVpbnRlcnByZXRxX3UzMl9mMTYoZmxvYXQxNng4X3QgX19wMCkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDMyeDRfdCB2cmVpbnRlcnByZXRxX3UzMl9zMzIoaW50MzJ4NF90IF9fcDApIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQzMng0X3QgdnJlaW50ZXJwcmV0cV91MzJfczY0KGludDY0eDJfdCBfX3AwKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MzJ4NF90IHZyZWludGVycHJldHFfdTMyX3MxNihpbnQxNng4X3QgX19wMCkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDY0eDJfdCB2cmVpbnRlcnByZXRxX3U2NF9wOChwb2x5OHgxNl90IF9fcDApIHsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ2NHgyX3QgdnJlaW50ZXJwcmV0cV91NjRfcDE2KHBvbHkxNng4X3QgX19wMCkgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDY0eDJfdCB2cmVpbnRlcnByZXRxX3U2NF91OCh1aW50OHgxNl90IF9fcDApIHsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ2NHgyX3QgdnJlaW50ZXJwcmV0cV91NjRfdTMyKHVpbnQzMng0X3QgX19wMCkgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDY0eDJfdCB2cmVpbnRlcnByZXRxX3U2NF91MTYodWludDE2eDhfdCBfX3AwKSB7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50NjR4Ml90IHZyZWludGVycHJldHFfdTY0X3M4KGludDh4MTZfdCBfX3AwKSB7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50NjR4Ml90IHZyZWludGVycHJldHFfdTY0X2YzMihmbG9hdDMyeDRfdCBfX3AwKSB7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50NjR4Ml90IHZyZWludGVycHJldHFfdTY0X2YxNihmbG9hdDE2eDhfdCBfX3AwKSB7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50NjR4Ml90IHZyZWludGVycHJldHFfdTY0X3MzMihpbnQzMng0X3QgX19wMCkgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDY0eDJfdCB2cmVpbnRlcnByZXRxX3U2NF9zNjQoaW50NjR4Ml90IF9fcDApIHsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ2NHgyX3QgdnJlaW50ZXJwcmV0cV91NjRfczE2KGludDE2eDhfdCBfX3AwKSB7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MTZ4OF90IHZyZWludGVycHJldHFfdTE2X3A4KHBvbHk4eDE2X3QgX19wMCkgewogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDE2eDhfdCB2cmVpbnRlcnByZXRxX3UxNl9wMTYocG9seTE2eDhfdCBfX3AwKSB7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MTZ4OF90IHZyZWludGVycHJldHFfdTE2X3U4KHVpbnQ4eDE2X3QgX19wMCkgewogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDE2eDhfdCB2cmVpbnRlcnByZXRxX3UxNl91MzIodWludDMyeDRfdCBfX3AwKSB7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MTZ4OF90IHZyZWludGVycHJldHFfdTE2X3U2NCh1aW50NjR4Ml90IF9fcDApIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQxNng4X3QgdnJlaW50ZXJwcmV0cV91MTZfczgoaW50OHgxNl90IF9fcDApIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQxNng4X3QgdnJlaW50ZXJwcmV0cV91MTZfZjMyKGZsb2F0MzJ4NF90IF9fcDApIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQxNng4X3QgdnJlaW50ZXJwcmV0cV91MTZfZjE2KGZsb2F0MTZ4OF90IF9fcDApIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQxNng4X3QgdnJlaW50ZXJwcmV0cV91MTZfczMyKGludDMyeDRfdCBfX3AwKSB7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MTZ4OF90IHZyZWludGVycHJldHFfdTE2X3M2NChpbnQ2NHgyX3QgX19wMCkgewogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDE2eDhfdCB2cmVpbnRlcnByZXRxX3UxNl9zMTYoaW50MTZ4OF90IF9fcDApIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDh4MTZfdCB2cmVpbnRlcnByZXRxX3M4X3A4KHBvbHk4eDE2X3QgX19wMCkgewogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDE2X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDh4MTZfdCB2cmVpbnRlcnByZXRxX3M4X3AxNihwb2x5MTZ4OF90IF9fcDApIHsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHgxNl90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQ4eDE2X3QgdnJlaW50ZXJwcmV0cV9zOF91OCh1aW50OHgxNl90IF9fcDApIHsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHgxNl90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQ4eDE2X3QgdnJlaW50ZXJwcmV0cV9zOF91MzIodWludDMyeDRfdCBfX3AwKSB7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4MTZfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50OHgxNl90IHZyZWludGVycHJldHFfczhfdTY0KHVpbnQ2NHgyX3QgX19wMCkgewogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDE2X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDh4MTZfdCB2cmVpbnRlcnByZXRxX3M4X3UxNih1aW50MTZ4OF90IF9fcDApIHsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHgxNl90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQ4eDE2X3QgdnJlaW50ZXJwcmV0cV9zOF9mMzIoZmxvYXQzMng0X3QgX19wMCkgewogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDE2X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDh4MTZfdCB2cmVpbnRlcnByZXRxX3M4X2YxNihmbG9hdDE2eDhfdCBfX3AwKSB7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4MTZfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50OHgxNl90IHZyZWludGVycHJldHFfczhfczMyKGludDMyeDRfdCBfX3AwKSB7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4MTZfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50OHgxNl90IHZyZWludGVycHJldHFfczhfczY0KGludDY0eDJfdCBfX3AwKSB7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4MTZfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50OHgxNl90IHZyZWludGVycHJldHFfczhfczE2KGludDE2eDhfdCBfX3AwKSB7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4MTZfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQzMng0X3QgdnJlaW50ZXJwcmV0cV9mMzJfcDgocG9seTh4MTZfdCBfX3AwKSB7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MzJ4NF90IHZyZWludGVycHJldHFfZjMyX3AxNihwb2x5MTZ4OF90IF9fcDApIHsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQzMng0X3QgdnJlaW50ZXJwcmV0cV9mMzJfdTgodWludDh4MTZfdCBfX3AwKSB7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MzJ4NF90IHZyZWludGVycHJldHFfZjMyX3UzMih1aW50MzJ4NF90IF9fcDApIHsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQzMng0X3QgdnJlaW50ZXJwcmV0cV9mMzJfdTY0KHVpbnQ2NHgyX3QgX19wMCkgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDMyeDRfdCB2cmVpbnRlcnByZXRxX2YzMl91MTYodWludDE2eDhfdCBfX3AwKSB7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MzJ4NF90IHZyZWludGVycHJldHFfZjMyX3M4KGludDh4MTZfdCBfX3AwKSB7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MzJ4NF90IHZyZWludGVycHJldHFfZjMyX2YxNihmbG9hdDE2eDhfdCBfX3AwKSB7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MzJ4NF90IHZyZWludGVycHJldHFfZjMyX3MzMihpbnQzMng0X3QgX19wMCkgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDMyeDRfdCB2cmVpbnRlcnByZXRxX2YzMl9zNjQoaW50NjR4Ml90IF9fcDApIHsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQzMng0X3QgdnJlaW50ZXJwcmV0cV9mMzJfczE2KGludDE2eDhfdCBfX3AwKSB7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MTZ4OF90IHZyZWludGVycHJldHFfZjE2X3A4KHBvbHk4eDE2X3QgX19wMCkgewogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDE2eDhfdCB2cmVpbnRlcnByZXRxX2YxNl9wMTYocG9seTE2eDhfdCBfX3AwKSB7CiAgZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MTZ4OF90IHZyZWludGVycHJldHFfZjE2X3U4KHVpbnQ4eDE2X3QgX19wMCkgewogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDE2eDhfdCB2cmVpbnRlcnByZXRxX2YxNl91MzIodWludDMyeDRfdCBfX3AwKSB7CiAgZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MTZ4OF90IHZyZWludGVycHJldHFfZjE2X3U2NCh1aW50NjR4Ml90IF9fcDApIHsKICBmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQxNng4X3QgdnJlaW50ZXJwcmV0cV9mMTZfdTE2KHVpbnQxNng4X3QgX19wMCkgewogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDE2eDhfdCB2cmVpbnRlcnByZXRxX2YxNl9zOChpbnQ4eDE2X3QgX19wMCkgewogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDE2eDhfdCB2cmVpbnRlcnByZXRxX2YxNl9mMzIoZmxvYXQzMng0X3QgX19wMCkgewogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDE2eDhfdCB2cmVpbnRlcnByZXRxX2YxNl9zMzIoaW50MzJ4NF90IF9fcDApIHsKICBmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQxNng4X3QgdnJlaW50ZXJwcmV0cV9mMTZfczY0KGludDY0eDJfdCBfX3AwKSB7CiAgZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MTZ4OF90IHZyZWludGVycHJldHFfZjE2X3MxNihpbnQxNng4X3QgX19wMCkgewogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQzMng0X3QgdnJlaW50ZXJwcmV0cV9zMzJfcDgocG9seTh4MTZfdCBfX3AwKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MzJ4NF90IHZyZWludGVycHJldHFfczMyX3AxNihwb2x5MTZ4OF90IF9fcDApIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQzMng0X3QgdnJlaW50ZXJwcmV0cV9zMzJfdTgodWludDh4MTZfdCBfX3AwKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MzJ4NF90IHZyZWludGVycHJldHFfczMyX3UzMih1aW50MzJ4NF90IF9fcDApIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQzMng0X3QgdnJlaW50ZXJwcmV0cV9zMzJfdTY0KHVpbnQ2NHgyX3QgX19wMCkgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDMyeDRfdCB2cmVpbnRlcnByZXRxX3MzMl91MTYodWludDE2eDhfdCBfX3AwKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MzJ4NF90IHZyZWludGVycHJldHFfczMyX3M4KGludDh4MTZfdCBfX3AwKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MzJ4NF90IHZyZWludGVycHJldHFfczMyX2YzMihmbG9hdDMyeDRfdCBfX3AwKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MzJ4NF90IHZyZWludGVycHJldHFfczMyX2YxNihmbG9hdDE2eDhfdCBfX3AwKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MzJ4NF90IHZyZWludGVycHJldHFfczMyX3M2NChpbnQ2NHgyX3QgX19wMCkgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDMyeDRfdCB2cmVpbnRlcnByZXRxX3MzMl9zMTYoaW50MTZ4OF90IF9fcDApIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQ2NHgyX3QgdnJlaW50ZXJwcmV0cV9zNjRfcDgocG9seTh4MTZfdCBfX3AwKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50NjR4Ml90IHZyZWludGVycHJldHFfczY0X3AxNihwb2x5MTZ4OF90IF9fcDApIHsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50NjR4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQ2NHgyX3QgdnJlaW50ZXJwcmV0cV9zNjRfdTgodWludDh4MTZfdCBfX3AwKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50NjR4Ml90IHZyZWludGVycHJldHFfczY0X3UzMih1aW50MzJ4NF90IF9fcDApIHsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50NjR4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQ2NHgyX3QgdnJlaW50ZXJwcmV0cV9zNjRfdTY0KHVpbnQ2NHgyX3QgX19wMCkgewogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NHgyX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDY0eDJfdCB2cmVpbnRlcnByZXRxX3M2NF91MTYodWludDE2eDhfdCBfX3AwKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50NjR4Ml90IHZyZWludGVycHJldHFfczY0X3M4KGludDh4MTZfdCBfX3AwKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50NjR4Ml90IHZyZWludGVycHJldHFfczY0X2YzMihmbG9hdDMyeDRfdCBfX3AwKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50NjR4Ml90IHZyZWludGVycHJldHFfczY0X2YxNihmbG9hdDE2eDhfdCBfX3AwKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50NjR4Ml90IHZyZWludGVycHJldHFfczY0X3MzMihpbnQzMng0X3QgX19wMCkgewogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NHgyX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDY0eDJfdCB2cmVpbnRlcnByZXRxX3M2NF9zMTYoaW50MTZ4OF90IF9fcDApIHsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50NjR4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQxNng4X3QgdnJlaW50ZXJwcmV0cV9zMTZfcDgocG9seTh4MTZfdCBfX3AwKSB7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MTZ4OF90IHZyZWludGVycHJldHFfczE2X3AxNihwb2x5MTZ4OF90IF9fcDApIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQxNng4X3QgdnJlaW50ZXJwcmV0cV9zMTZfdTgodWludDh4MTZfdCBfX3AwKSB7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MTZ4OF90IHZyZWludGVycHJldHFfczE2X3UzMih1aW50MzJ4NF90IF9fcDApIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQxNng4X3QgdnJlaW50ZXJwcmV0cV9zMTZfdTY0KHVpbnQ2NHgyX3QgX19wMCkgewogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDE2eDhfdCB2cmVpbnRlcnByZXRxX3MxNl91MTYodWludDE2eDhfdCBfX3AwKSB7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MTZ4OF90IHZyZWludGVycHJldHFfczE2X3M4KGludDh4MTZfdCBfX3AwKSB7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MTZ4OF90IHZyZWludGVycHJldHFfczE2X2YzMihmbG9hdDMyeDRfdCBfX3AwKSB7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MTZ4OF90IHZyZWludGVycHJldHFfczE2X2YxNihmbG9hdDE2eDhfdCBfX3AwKSB7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MTZ4OF90IHZyZWludGVycHJldHFfczE2X3MzMihpbnQzMng0X3QgX19wMCkgewogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDE2eDhfdCB2cmVpbnRlcnByZXRxX3MxNl9zNjQoaW50NjR4Ml90IF9fcDApIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50OHg4X3QgdnJlaW50ZXJwcmV0X3U4X3A4KHBvbHk4eDhfdCBfX3AwKSB7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDh4OF90IHZyZWludGVycHJldF91OF9wMTYocG9seTE2eDRfdCBfX3AwKSB7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDh4OF90IHZyZWludGVycHJldF91OF91MzIodWludDMyeDJfdCBfX3AwKSB7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDh4OF90IHZyZWludGVycHJldF91OF91NjQodWludDY0eDFfdCBfX3AwKSB7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDh4OF90IHZyZWludGVycHJldF91OF91MTYodWludDE2eDRfdCBfX3AwKSB7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDh4OF90IHZyZWludGVycHJldF91OF9zOChpbnQ4eDhfdCBfX3AwKSB7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDh4OF90IHZyZWludGVycHJldF91OF9mMzIoZmxvYXQzMngyX3QgX19wMCkgewogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ4eDhfdCB2cmVpbnRlcnByZXRfdThfZjE2KGZsb2F0MTZ4NF90IF9fcDApIHsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50OHg4X3QgdnJlaW50ZXJwcmV0X3U4X3MzMihpbnQzMngyX3QgX19wMCkgewogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ4eDhfdCB2cmVpbnRlcnByZXRfdThfczY0KGludDY0eDFfdCBfX3AwKSB7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDh4OF90IHZyZWludGVycHJldF91OF9zMTYoaW50MTZ4NF90IF9fcDApIHsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MzJ4Ml90IHZyZWludGVycHJldF91MzJfcDgocG9seTh4OF90IF9fcDApIHsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMngyX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQzMngyX3QgdnJlaW50ZXJwcmV0X3UzMl9wMTYocG9seTE2eDRfdCBfX3AwKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MzJ4Ml90IHZyZWludGVycHJldF91MzJfdTgodWludDh4OF90IF9fcDApIHsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMngyX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQzMngyX3QgdnJlaW50ZXJwcmV0X3UzMl91NjQodWludDY0eDFfdCBfX3AwKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MzJ4Ml90IHZyZWludGVycHJldF91MzJfdTE2KHVpbnQxNng0X3QgX19wMCkgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDMyeDJfdCB2cmVpbnRlcnByZXRfdTMyX3M4KGludDh4OF90IF9fcDApIHsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMngyX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQzMngyX3QgdnJlaW50ZXJwcmV0X3UzMl9mMzIoZmxvYXQzMngyX3QgX19wMCkgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDMyeDJfdCB2cmVpbnRlcnByZXRfdTMyX2YxNihmbG9hdDE2eDRfdCBfX3AwKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MzJ4Ml90IHZyZWludGVycHJldF91MzJfczMyKGludDMyeDJfdCBfX3AwKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MzJ4Ml90IHZyZWludGVycHJldF91MzJfczY0KGludDY0eDFfdCBfX3AwKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MzJ4Ml90IHZyZWludGVycHJldF91MzJfczE2KGludDE2eDRfdCBfX3AwKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50NjR4MV90IHZyZWludGVycHJldF91NjRfcDgocG9seTh4OF90IF9fcDApIHsKICB1aW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgxX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ2NHgxX3QgdnJlaW50ZXJwcmV0X3U2NF9wMTYocG9seTE2eDRfdCBfX3AwKSB7CiAgdWludDY0eDFfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4MV90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50NjR4MV90IHZyZWludGVycHJldF91NjRfdTgodWludDh4OF90IF9fcDApIHsKICB1aW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgxX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ2NHgxX3QgdnJlaW50ZXJwcmV0X3U2NF91MzIodWludDMyeDJfdCBfX3AwKSB7CiAgdWludDY0eDFfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4MV90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50NjR4MV90IHZyZWludGVycHJldF91NjRfdTE2KHVpbnQxNng0X3QgX19wMCkgewogIHVpbnQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDFfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDY0eDFfdCB2cmVpbnRlcnByZXRfdTY0X3M4KGludDh4OF90IF9fcDApIHsKICB1aW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgxX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ2NHgxX3QgdnJlaW50ZXJwcmV0X3U2NF9mMzIoZmxvYXQzMngyX3QgX19wMCkgewogIHVpbnQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDFfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDY0eDFfdCB2cmVpbnRlcnByZXRfdTY0X2YxNihmbG9hdDE2eDRfdCBfX3AwKSB7CiAgdWludDY0eDFfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4MV90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50NjR4MV90IHZyZWludGVycHJldF91NjRfczMyKGludDMyeDJfdCBfX3AwKSB7CiAgdWludDY0eDFfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4MV90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50NjR4MV90IHZyZWludGVycHJldF91NjRfczY0KGludDY0eDFfdCBfX3AwKSB7CiAgdWludDY0eDFfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4MV90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50NjR4MV90IHZyZWludGVycHJldF91NjRfczE2KGludDE2eDRfdCBfX3AwKSB7CiAgdWludDY0eDFfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4MV90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MTZ4NF90IHZyZWludGVycHJldF91MTZfcDgocG9seTh4OF90IF9fcDApIHsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQxNng0X3QgdnJlaW50ZXJwcmV0X3UxNl9wMTYocG9seTE2eDRfdCBfX3AwKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MTZ4NF90IHZyZWludGVycHJldF91MTZfdTgodWludDh4OF90IF9fcDApIHsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQxNng0X3QgdnJlaW50ZXJwcmV0X3UxNl91MzIodWludDMyeDJfdCBfX3AwKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MTZ4NF90IHZyZWludGVycHJldF91MTZfdTY0KHVpbnQ2NHgxX3QgX19wMCkgewogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDE2eDRfdCB2cmVpbnRlcnByZXRfdTE2X3M4KGludDh4OF90IF9fcDApIHsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQxNng0X3QgdnJlaW50ZXJwcmV0X3UxNl9mMzIoZmxvYXQzMngyX3QgX19wMCkgewogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDE2eDRfdCB2cmVpbnRlcnByZXRfdTE2X2YxNihmbG9hdDE2eDRfdCBfX3AwKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MTZ4NF90IHZyZWludGVycHJldF91MTZfczMyKGludDMyeDJfdCBfX3AwKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MTZ4NF90IHZyZWludGVycHJldF91MTZfczY0KGludDY0eDFfdCBfX3AwKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MTZ4NF90IHZyZWludGVycHJldF91MTZfczE2KGludDE2eDRfdCBfX3AwKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQ4eDhfdCB2cmVpbnRlcnByZXRfczhfcDgocG9seTh4OF90IF9fcDApIHsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50OHg4X3QgdnJlaW50ZXJwcmV0X3M4X3AxNihwb2x5MTZ4NF90IF9fcDApIHsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50OHg4X3QgdnJlaW50ZXJwcmV0X3M4X3U4KHVpbnQ4eDhfdCBfX3AwKSB7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDh4OF90IHZyZWludGVycHJldF9zOF91MzIodWludDMyeDJfdCBfX3AwKSB7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDh4OF90IHZyZWludGVycHJldF9zOF91NjQodWludDY0eDFfdCBfX3AwKSB7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDh4OF90IHZyZWludGVycHJldF9zOF91MTYodWludDE2eDRfdCBfX3AwKSB7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDh4OF90IHZyZWludGVycHJldF9zOF9mMzIoZmxvYXQzMngyX3QgX19wMCkgewogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQ4eDhfdCB2cmVpbnRlcnByZXRfczhfZjE2KGZsb2F0MTZ4NF90IF9fcDApIHsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50OHg4X3QgdnJlaW50ZXJwcmV0X3M4X3MzMihpbnQzMngyX3QgX19wMCkgewogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQ4eDhfdCB2cmVpbnRlcnByZXRfczhfczY0KGludDY0eDFfdCBfX3AwKSB7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDh4OF90IHZyZWludGVycHJldF9zOF9zMTYoaW50MTZ4NF90IF9fcDApIHsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQzMngyX3QgdnJlaW50ZXJwcmV0X2YzMl9wOChwb2x5OHg4X3QgX19wMCkgewogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDMyeDJfdCB2cmVpbnRlcnByZXRfZjMyX3AxNihwb2x5MTZ4NF90IF9fcDApIHsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQzMngyX3QgdnJlaW50ZXJwcmV0X2YzMl91OCh1aW50OHg4X3QgX19wMCkgewogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDMyeDJfdCB2cmVpbnRlcnByZXRfZjMyX3UzMih1aW50MzJ4Ml90IF9fcDApIHsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQzMngyX3QgdnJlaW50ZXJwcmV0X2YzMl91NjQodWludDY0eDFfdCBfX3AwKSB7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMngyX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MzJ4Ml90IHZyZWludGVycHJldF9mMzJfdTE2KHVpbnQxNng0X3QgX19wMCkgewogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDMyeDJfdCB2cmVpbnRlcnByZXRfZjMyX3M4KGludDh4OF90IF9fcDApIHsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQzMngyX3QgdnJlaW50ZXJwcmV0X2YzMl9mMTYoZmxvYXQxNng0X3QgX19wMCkgewogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDMyeDJfdCB2cmVpbnRlcnByZXRfZjMyX3MzMihpbnQzMngyX3QgX19wMCkgewogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDMyeDJfdCB2cmVpbnRlcnByZXRfZjMyX3M2NChpbnQ2NHgxX3QgX19wMCkgewogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDMyeDJfdCB2cmVpbnRlcnByZXRfZjMyX3MxNihpbnQxNng0X3QgX19wMCkgewogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDE2eDRfdCB2cmVpbnRlcnByZXRfZjE2X3A4KHBvbHk4eDhfdCBfX3AwKSB7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MTZ4NF90IHZyZWludGVycHJldF9mMTZfcDE2KHBvbHkxNng0X3QgX19wMCkgewogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDE2eDRfdCB2cmVpbnRlcnByZXRfZjE2X3U4KHVpbnQ4eDhfdCBfX3AwKSB7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MTZ4NF90IHZyZWludGVycHJldF9mMTZfdTMyKHVpbnQzMngyX3QgX19wMCkgewogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDE2eDRfdCB2cmVpbnRlcnByZXRfZjE2X3U2NCh1aW50NjR4MV90IF9fcDApIHsKICBmbG9hdDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQxNng0X3QgdnJlaW50ZXJwcmV0X2YxNl91MTYodWludDE2eDRfdCBfX3AwKSB7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MTZ4NF90IHZyZWludGVycHJldF9mMTZfczgoaW50OHg4X3QgX19wMCkgewogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDE2eDRfdCB2cmVpbnRlcnByZXRfZjE2X2YzMihmbG9hdDMyeDJfdCBfX3AwKSB7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MTZ4NF90IHZyZWludGVycHJldF9mMTZfczMyKGludDMyeDJfdCBfX3AwKSB7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MTZ4NF90IHZyZWludGVycHJldF9mMTZfczY0KGludDY0eDFfdCBfX3AwKSB7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MTZ4NF90IHZyZWludGVycHJldF9mMTZfczE2KGludDE2eDRfdCBfX3AwKSB7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDMyeDJfdCB2cmVpbnRlcnByZXRfczMyX3A4KHBvbHk4eDhfdCBfX3AwKSB7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MzJ4Ml90IHZyZWludGVycHJldF9zMzJfcDE2KHBvbHkxNng0X3QgX19wMCkgewogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMngyX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDMyeDJfdCB2cmVpbnRlcnByZXRfczMyX3U4KHVpbnQ4eDhfdCBfX3AwKSB7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MzJ4Ml90IHZyZWludGVycHJldF9zMzJfdTMyKHVpbnQzMngyX3QgX19wMCkgewogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMngyX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDMyeDJfdCB2cmVpbnRlcnByZXRfczMyX3U2NCh1aW50NjR4MV90IF9fcDApIHsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQzMngyX3QgdnJlaW50ZXJwcmV0X3MzMl91MTYodWludDE2eDRfdCBfX3AwKSB7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MzJ4Ml90IHZyZWludGVycHJldF9zMzJfczgoaW50OHg4X3QgX19wMCkgewogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMngyX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDMyeDJfdCB2cmVpbnRlcnByZXRfczMyX2YzMihmbG9hdDMyeDJfdCBfX3AwKSB7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MzJ4Ml90IHZyZWludGVycHJldF9zMzJfZjE2KGZsb2F0MTZ4NF90IF9fcDApIHsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQzMngyX3QgdnJlaW50ZXJwcmV0X3MzMl9zNjQoaW50NjR4MV90IF9fcDApIHsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQzMngyX3QgdnJlaW50ZXJwcmV0X3MzMl9zMTYoaW50MTZ4NF90IF9fcDApIHsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQ2NHgxX3QgdnJlaW50ZXJwcmV0X3M2NF9wOChwb2x5OHg4X3QgX19wMCkgewogIGludDY0eDFfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NHgxX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDY0eDFfdCB2cmVpbnRlcnByZXRfczY0X3AxNihwb2x5MTZ4NF90IF9fcDApIHsKICBpbnQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50NjR4MV90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQ2NHgxX3QgdnJlaW50ZXJwcmV0X3M2NF91OCh1aW50OHg4X3QgX19wMCkgewogIGludDY0eDFfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NHgxX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDY0eDFfdCB2cmVpbnRlcnByZXRfczY0X3UzMih1aW50MzJ4Ml90IF9fcDApIHsKICBpbnQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50NjR4MV90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQ2NHgxX3QgdnJlaW50ZXJwcmV0X3M2NF91NjQodWludDY0eDFfdCBfX3AwKSB7CiAgaW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDFfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50NjR4MV90IHZyZWludGVycHJldF9zNjRfdTE2KHVpbnQxNng0X3QgX19wMCkgewogIGludDY0eDFfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NHgxX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDY0eDFfdCB2cmVpbnRlcnByZXRfczY0X3M4KGludDh4OF90IF9fcDApIHsKICBpbnQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50NjR4MV90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQ2NHgxX3QgdnJlaW50ZXJwcmV0X3M2NF9mMzIoZmxvYXQzMngyX3QgX19wMCkgewogIGludDY0eDFfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NHgxX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDY0eDFfdCB2cmVpbnRlcnByZXRfczY0X2YxNihmbG9hdDE2eDRfdCBfX3AwKSB7CiAgaW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDFfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50NjR4MV90IHZyZWludGVycHJldF9zNjRfczMyKGludDMyeDJfdCBfX3AwKSB7CiAgaW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDFfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50NjR4MV90IHZyZWludGVycHJldF9zNjRfczE2KGludDE2eDRfdCBfX3AwKSB7CiAgaW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDFfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MTZ4NF90IHZyZWludGVycHJldF9zMTZfcDgocG9seTh4OF90IF9fcDApIHsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQxNng0X3QgdnJlaW50ZXJwcmV0X3MxNl9wMTYocG9seTE2eDRfdCBfX3AwKSB7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MTZ4NF90IHZyZWludGVycHJldF9zMTZfdTgodWludDh4OF90IF9fcDApIHsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQxNng0X3QgdnJlaW50ZXJwcmV0X3MxNl91MzIodWludDMyeDJfdCBfX3AwKSB7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MTZ4NF90IHZyZWludGVycHJldF9zMTZfdTY0KHVpbnQ2NHgxX3QgX19wMCkgewogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDE2eDRfdCB2cmVpbnRlcnByZXRfczE2X3UxNih1aW50MTZ4NF90IF9fcDApIHsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQxNng0X3QgdnJlaW50ZXJwcmV0X3MxNl9zOChpbnQ4eDhfdCBfX3AwKSB7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MTZ4NF90IHZyZWludGVycHJldF9zMTZfZjMyKGZsb2F0MzJ4Ml90IF9fcDApIHsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQxNng0X3QgdnJlaW50ZXJwcmV0X3MxNl9mMTYoZmxvYXQxNng0X3QgX19wMCkgewogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDE2eDRfdCB2cmVpbnRlcnByZXRfczE2X3MzMihpbnQzMngyX3QgX19wMCkgewogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDE2eDRfdCB2cmVpbnRlcnByZXRfczE2X3M2NChpbnQ2NHgxX3QgX19wMCkgewogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKI2lmIChfX0FSTV9GUCAmIDIpCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MTZ4NF90IHZjdnRfZjE2X2YzMihmbG9hdDMyeDRfdCBfX3AwKSB7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRfZjE2X2YzMigoaW50OHgxNl90KV9fcDAsIDQxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDE2eDRfdCB2Y3Z0X2YxNl9mMzIoZmxvYXQzMng0X3QgX19wMCkgewogIGZsb2F0MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0X2YxNl9mMzIoKGludDh4MTZfdClfX3JldjAsIDQxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQxNng0X3QgX19ub3N3YXBfdmN2dF9mMTZfZjMyKGZsb2F0MzJ4NF90IF9fcDApIHsKICBmbG9hdDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDRfdCkgX19idWlsdGluX25lb25fdmN2dF9mMTZfZjMyKChpbnQ4eDE2X3QpX19wMCwgNDEpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4NF90IHZjdnRfZjMyX2YxNihmbG9hdDE2eDRfdCBfX3AwKSB7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRfZjMyX2YxNigoaW50OHg4X3QpX19wMCwgOCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMng0X3QgdmN2dF9mMzJfZjE2KGZsb2F0MTZ4NF90IF9fcDApIHsKICBmbG9hdDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdmN2dF9mMzJfZjE2KChpbnQ4eDhfdClfX3JldjAsIDgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDMyeDRfdCBfX25vc3dhcF92Y3Z0X2YzMl9mMTYoZmxvYXQxNng0X3QgX19wMCkgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0X2YzMl9mMTYoKGludDh4OF90KV9fcDAsIDgpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFxX2YxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92bGQxcV92KF9fcDAsIDQwKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMXFfZjE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3YoX19wMCwgNDApOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxX2YxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92bGQxX3YoX19wMCwgOCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFfZjE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFfdihfX3AwLCA4KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMXFfZHVwX2YxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92bGQxcV9kdXBfdihfX3AwLCA0MCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFxX2R1cF9mMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDE2eDhfdCkgX19idWlsdGluX25lb25fdmxkMXFfZHVwX3YoX19wMCwgNDApOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxX2R1cF9mMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDE2eDRfdCkgX19idWlsdGluX25lb25fdmxkMV9kdXBfdihfX3AwLCA4KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMV9kdXBfZjE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFfZHVwX3YoX19wMCwgOCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFxX2xhbmVfZjE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4OF90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDE2eDhfdCkgX19idWlsdGluX25lb25fdmxkMXFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19zMSwgX19wMiwgNDApOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxcV9sYW5lX2YxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDhfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDE2eDhfdCkgX19idWlsdGluX25lb25fdmxkMXFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLCBfX3AyLCA0MCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFfbGFuZV9mMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng0X3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92bGQxX2xhbmVfdihfX3AwLCAoaW50OHg4X3QpX19zMSwgX19wMiwgOCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFfbGFuZV9mMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng0X3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFfbGFuZV92KF9fcDAsIChpbnQ4eDhfdClfX3JldjEsIF9fcDIsIDgpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxcV9mMTZfeDIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3gyX3YoJl9fcmV0LCBfX3AwLCA0MCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFxX2YxNl94MihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDh4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMXFfeDJfdigmX19yZXQsIF9fcDAsIDQwKTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMV9mMTZfeDIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng0eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFfeDJfdigmX19yZXQsIF9fcDAsIDgpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxX2YxNl94MihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDR4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMV94Ml92KCZfX3JldCwgX19wMCwgOCk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFxX2YxNl94MyhfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDh4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMXFfeDNfdigmX19yZXQsIF9fcDAsIDQwKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMXFfZjE2X3gzKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4OHgzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxcV94M192KCZfX3JldCwgX19wMCwgNDApOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxX2YxNl94MyhfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDR4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMV94M192KCZfX3JldCwgX19wMCwgOCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFfZjE2X3gzKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4NHgzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxX3gzX3YoJl9fcmV0LCBfX3AwLCA4KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMXFfZjE2X3g0KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4OHg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxcV94NF92KCZfX3JldCwgX19wMCwgNDApOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxcV9mMTZfeDQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3g0X3YoJl9fcmV0LCBfX3AwLCA0MCk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbM10sIF9fcmV0LnZhbFszXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFfZjE2X3g0KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4NHg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxX3g0X3YoJl9fcmV0LCBfX3AwLCA4KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMV9mMTZfeDQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng0eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFfeDRfdigmX19yZXQsIF9fcDAsIDgpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzNdLCBfX3JldC52YWxbM10sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQycV9mMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJxX3YoJl9fcmV0LCBfX3AwLCA0MCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDJxX2YxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDh4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMnFfdigmX19yZXQsIF9fcDAsIDQwKTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMl9mMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng0eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJfdigmX19yZXQsIF9fcDAsIDgpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQyX2YxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDR4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMl92KCZfX3JldCwgX19wMCwgOCk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDJxX2R1cF9mMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJxX2R1cF92KCZfX3JldCwgX19wMCwgNDApOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQycV9kdXBfZjE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4OHgyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQycV9kdXBfdigmX19yZXQsIF9fcDAsIDQwKTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMl9kdXBfZjE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4NHgyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQyX2R1cF92KCZfX3JldCwgX19wMCwgOCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDJfZHVwX2YxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDR4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMl9kdXBfdigmX19yZXQsIF9fcDAsIDgpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQycV9sYW5lX2YxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDh4Ml90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQxNng4eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJxX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIF9fcDIsIDQwKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMnFfbGFuZV9mMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4eDJfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MTZ4OHgyX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4OHgyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQycV9sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgX19wMiwgNDApOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQyX2xhbmVfZjE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4NHgyX3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDE2eDR4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMl9sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgX19wMiwgOCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDJfbGFuZV9mMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng0eDJfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MTZ4NHgyX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4NHgyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQyX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgX19wMiwgOCk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDNxX2YxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDh4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM3FfdigmX19yZXQsIF9fcDAsIDQwKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkM3FfZjE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4OHgzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzcV92KCZfX3JldCwgX19wMCwgNDApOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQzX2YxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDR4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM192KCZfX3JldCwgX19wMCwgOCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDNfZjE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4NHgzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzX3YoJl9fcmV0LCBfX3AwLCA4KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkM3FfZHVwX2YxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDh4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM3FfZHVwX3YoJl9fcmV0LCBfX3AwLCA0MCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDNxX2R1cF9mMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNxX2R1cF92KCZfX3JldCwgX19wMCwgNDApOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQzX2R1cF9mMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng0eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNfZHVwX3YoJl9fcmV0LCBfX3AwLCA4KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkM19kdXBfZjE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4NHgzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzX2R1cF92KCZfX3JldCwgX19wMCwgOCk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDNxX2xhbmVfZjE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4OHgzX3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDE2eDh4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM3FfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgKGludDh4MTZfdClfX3MxLnZhbFsyXSwgX19wMiwgNDApOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQzcV9sYW5lX2YxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDh4M190IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQxNng4eDNfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2eDh4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM3FfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgX19wMiwgNDApOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQzX2xhbmVfZjE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4NHgzX3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDE2eDR4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM19sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgKGludDh4OF90KV9fczEudmFsWzJdLCBfX3AyLCA4KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkM19sYW5lX2YxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDR4M190IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQxNng0eDNfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2eDR4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM19sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHg4X3QpX19yZXYxLnZhbFswXSwgKGludDh4OF90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDhfdClfX3JldjEudmFsWzJdLCBfX3AyLCA4KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkNHFfZjE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4OHg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0cV92KCZfX3JldCwgX19wMCwgNDApOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQ0cV9mMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRxX3YoJl9fcmV0LCBfX3AwLCA0MCk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbM10sIF9fcmV0LnZhbFszXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDRfZjE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4NHg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0X3YoJl9fcmV0LCBfX3AwLCA4KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkNF9mMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng0eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRfdigmX19yZXQsIF9fcDAsIDgpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzNdLCBfX3JldC52YWxbM10sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQ0cV9kdXBfZjE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4OHg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0cV9kdXBfdigmX19yZXQsIF9fcDAsIDQwKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkNHFfZHVwX2YxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDh4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNHFfZHVwX3YoJl9fcmV0LCBfX3AwLCA0MCk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbM10sIF9fcmV0LnZhbFszXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDRfZHVwX2YxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDR4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNF9kdXBfdigmX19yZXQsIF9fcDAsIDgpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQ0X2R1cF9mMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng0eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRfZHVwX3YoJl9fcmV0LCBfX3AwLCA4KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFszXSwgX19yZXQudmFsWzNdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkNHFfbGFuZV9mMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4eDRfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MTZ4OHg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0cV9sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCAoaW50OHgxNl90KV9fczEudmFsWzNdLCBfX3AyLCA0MCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDRxX2xhbmVfZjE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4OHg0X3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDE2eDh4NF90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFszXSwgX19zMS52YWxbM10sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng4eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRxX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMl0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFszXSwgX19wMiwgNDApOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzNdLCBfX3JldC52YWxbM10sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQ0X2xhbmVfZjE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4NHg0X3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDE2eDR4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNF9sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgKGludDh4OF90KV9fczEudmFsWzJdLCAoaW50OHg4X3QpX19zMS52YWxbM10sIF9fcDIsIDgpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQ0X2xhbmVfZjE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4NHg0X3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDE2eDR4NF90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFszXSwgX19zMS52YWxbM10sIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng0eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsyXSwgKGludDh4OF90KV9fcmV2MS52YWxbM10sIF9fcDIsIDgpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzNdLCBfX3JldC52YWxbM10sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxcV9mMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4X3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV92KF9fcDAsIChpbnQ4eDE2X3QpX19zMSwgNDApOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MXFfZjE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4OF90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLCA0MCk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxX2YxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDRfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFfdihfX3AwLCAoaW50OHg4X3QpX19zMSwgOCk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxX2YxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDRfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MV92KF9fcDAsIChpbnQ4eDhfdClfX3JldjEsIDgpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MXFfbGFuZV9mMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4X3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV9sYW5lX3YoX19wMCwgKGludDh4MTZfdClfX3MxLCBfX3AyLCA0MCk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxcV9sYW5lX2YxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDhfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLCBfX3AyLCA0MCk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxX2xhbmVfZjE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4NF90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MV9sYW5lX3YoX19wMCwgKGludDh4OF90KV9fczEsIF9fcDIsIDgpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MV9sYW5lX2YxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDRfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MV9sYW5lX3YoX19wMCwgKGludDh4OF90KV9fcmV2MSwgX19wMiwgOCk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxcV9mMTZfeDIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4eDJfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFxX3gyX3YoX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgNDApOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MXFfZjE2X3gyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4OHgyX3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDE2eDh4Ml90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV94Ml92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCA0MCk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxX2YxNl94MihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDR4Ml90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MV94Ml92KF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCA4KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDFfZjE2X3gyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4NHgyX3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDE2eDR4Ml90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX3gyX3YoX19wMCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCA4KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDFxX2YxNl94MyhfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDh4M190IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfeDNfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCA0MCk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxcV9mMTZfeDMoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4eDNfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MTZ4OHgzX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfeDNfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgKGludDh4MTZfdClfX3JldjEudmFsWzJdLCA0MCk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxX2YxNl94MyhfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDR4M190IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MV94M192KF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCAoaW50OHg4X3QpX19zMS52YWxbMl0sIDgpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MV9mMTZfeDMoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng0eDNfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MTZ4NHgzX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MV94M192KF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgKGludDh4OF90KV9fcmV2MS52YWxbMl0sIDgpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MXFfZjE2X3g0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4OHg0X3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV94NF92KF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIChpbnQ4eDE2X3QpX19zMS52YWxbMl0sIChpbnQ4eDE2X3QpX19zMS52YWxbM10sIDQwKTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDFxX2YxNl94NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDh4NF90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQxNng4eDRfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbM10sIF9fczEudmFsWzNdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFxX3g0X3YoX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgKGludDh4MTZfdClfX3JldjEudmFsWzNdLCA0MCk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxX2YxNl94NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDR4NF90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MV94NF92KF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCAoaW50OHg4X3QpX19zMS52YWxbMl0sIChpbnQ4eDhfdClfX3MxLnZhbFszXSwgOCk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxX2YxNl94NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDR4NF90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQxNng0eDRfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbM10sIF9fczEudmFsWzNdLCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFfeDRfdihfX3AwLCAoaW50OHg4X3QpX19yZXYxLnZhbFswXSwgKGludDh4OF90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDhfdClfX3JldjEudmFsWzJdLCAoaW50OHg4X3QpX19yZXYxLnZhbFszXSwgOCk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QycV9mMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4eDJfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDJxX3YoX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgNDApOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MnFfZjE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4OHgyX3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDE2eDh4Ml90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QycV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCA0MCk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QyX2YxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDR4Ml90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0Ml92KF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCA4KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDJfZjE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4NHgyX3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDE2eDR4Ml90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QyX3YoX19wMCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCA4KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDJxX2xhbmVfZjE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4OHgyX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QycV9sYW5lX3YoX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgX19wMiwgNDApOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MnFfbGFuZV9mMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4eDJfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MTZ4OHgyX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDJxX2xhbmVfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgX19wMiwgNDApOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0Ml9sYW5lX2YxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDR4Ml90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0Ml9sYW5lX3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIF9fcDIsIDgpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0Ml9sYW5lX2YxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDR4Ml90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQxNng0eDJfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0Ml9sYW5lX3YoX19wMCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCBfX3AyLCA4KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDNxX2YxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDh4M190IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0M3FfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCA0MCk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QzcV9mMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4eDNfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MTZ4OHgzX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0M3FfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgKGludDh4MTZfdClfX3JldjEudmFsWzJdLCA0MCk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QzX2YxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDR4M190IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0M192KF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCAoaW50OHg4X3QpX19zMS52YWxbMl0sIDgpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0M19mMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng0eDNfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MTZ4NHgzX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0M192KF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgKGludDh4OF90KV9fcmV2MS52YWxbMl0sIDgpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0M3FfbGFuZV9mMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4eDNfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDNxX2xhbmVfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCBfX3AyLCA0MCk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QzcV9sYW5lX2YxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDh4M190IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQxNng4eDNfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QzcV9sYW5lX3YoX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgX19wMiwgNDApOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0M19sYW5lX2YxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDR4M190IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0M19sYW5lX3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIChpbnQ4eDhfdClfX3MxLnZhbFsyXSwgX19wMiwgOCk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QzX2xhbmVfZjE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4NHgzX3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDE2eDR4M190IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDNfbGFuZV92KF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgKGludDh4OF90KV9fcmV2MS52YWxbMl0sIF9fcDIsIDgpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0NHFfZjE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4OHg0X3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3Q0cV92KF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIChpbnQ4eDE2X3QpX19zMS52YWxbMl0sIChpbnQ4eDE2X3QpX19zMS52YWxbM10sIDQwKTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDRxX2YxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDh4NF90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQxNng4eDRfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbM10sIF9fczEudmFsWzNdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDRxX3YoX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgKGludDh4MTZfdClfX3JldjEudmFsWzNdLCA0MCk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3Q0X2YxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDR4NF90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0NF92KF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCAoaW50OHg4X3QpX19zMS52YWxbMl0sIChpbnQ4eDhfdClfX3MxLnZhbFszXSwgOCk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3Q0X2YxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDR4NF90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQxNng0eDRfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbM10sIF9fczEudmFsWzNdLCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDRfdihfX3AwLCAoaW50OHg4X3QpX19yZXYxLnZhbFswXSwgKGludDh4OF90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDhfdClfX3JldjEudmFsWzJdLCAoaW50OHg4X3QpX19yZXYxLnZhbFszXSwgOCk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3Q0cV9sYW5lX2YxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDh4NF90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0NHFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIChpbnQ4eDE2X3QpX19zMS52YWxbMl0sIChpbnQ4eDE2X3QpX19zMS52YWxbM10sIF9fcDIsIDQwKTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDRxX2xhbmVfZjE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4OHg0X3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDE2eDh4NF90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFszXSwgX19zMS52YWxbM10sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0NHFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMl0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFszXSwgX19wMiwgNDApOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0NF9sYW5lX2YxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDR4NF90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0NF9sYW5lX3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIChpbnQ4eDhfdClfX3MxLnZhbFsyXSwgKGludDh4OF90KV9fczEudmFsWzNdLCBfX3AyLCA4KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDRfbGFuZV9mMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng0eDRfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MTZ4NHg0X3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzNdLCBfX3MxLnZhbFszXSwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3Q0X2xhbmVfdihfX3AwLCAoaW50OHg4X3QpX19yZXYxLnZhbFswXSwgKGludDh4OF90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDhfdClfX3JldjEudmFsWzJdLCAoaW50OHg4X3QpX19yZXYxLnZhbFszXSwgX19wMiwgOCk7IFwKfSkKI2VuZGlmCgojZW5kaWYKI2lmIF9fQVJNX0FSQ0ggPj0gOAojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMng0X3QgdmN2dGFxX3MzMl9mMzIoZmxvYXQzMng0X3QgX19wMCkgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRhcV9zMzJfdigoaW50OHgxNl90KV9fcDAsIDM0KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMng0X3QgdmN2dGFxX3MzMl9mMzIoZmxvYXQzMng0X3QgX19wMCkgewogIGZsb2F0MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRhcV9zMzJfdigoaW50OHgxNl90KV9fcmV2MCwgMzQpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMngyX3QgdmN2dGFfczMyX2YzMihmbG9hdDMyeDJfdCBfX3AwKSB7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdmN2dGFfczMyX3YoKGludDh4OF90KV9fcDAsIDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDJfdCB2Y3Z0YV9zMzJfZjMyKGZsb2F0MzJ4Ml90IF9fcDApIHsKICBmbG9hdDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0YV9zMzJfdigoaW50OHg4X3QpX19yZXYwLCAyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDRfdCB2Y3Z0YXFfdTMyX2YzMihmbG9hdDMyeDRfdCBfX3AwKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0YXFfdTMyX3YoKGludDh4MTZfdClfX3AwLCA1MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2Y3Z0YXFfdTMyX2YzMihmbG9hdDMyeDRfdCBfX3AwKSB7CiAgZmxvYXQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0YXFfdTMyX3YoKGludDh4MTZfdClfX3JldjAsIDUwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDJfdCB2Y3Z0YV91MzJfZjMyKGZsb2F0MzJ4Ml90IF9fcDApIHsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRhX3UzMl92KChpbnQ4eDhfdClfX3AwLCAxOCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDJfdCB2Y3Z0YV91MzJfZjMyKGZsb2F0MzJ4Ml90IF9fcDApIHsKICBmbG9hdDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRhX3UzMl92KChpbnQ4eDhfdClfX3JldjAsIDE4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4NF90IHZjdnRtcV9zMzJfZjMyKGZsb2F0MzJ4NF90IF9fcDApIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0bXFfczMyX3YoKGludDh4MTZfdClfX3AwLCAzNCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4NF90IHZjdnRtcV9zMzJfZjMyKGZsb2F0MzJ4NF90IF9fcDApIHsKICBmbG9hdDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0bXFfczMyX3YoKGludDh4MTZfdClfX3JldjAsIDM0KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4Ml90IHZjdnRtX3MzMl9mMzIoZmxvYXQzMngyX3QgX19wMCkgewogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRtX3MzMl92KChpbnQ4eDhfdClfX3AwLCAyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMngyX3QgdmN2dG1fczMyX2YzMihmbG9hdDMyeDJfdCBfX3AwKSB7CiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdmN2dG1fczMyX3YoKGludDh4OF90KV9fcmV2MCwgMik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMng0X3QgdmN2dG1xX3UzMl9mMzIoZmxvYXQzMng0X3QgX19wMCkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdmN2dG1xX3UzMl92KChpbnQ4eDE2X3QpX19wMCwgNTApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMng0X3QgdmN2dG1xX3UzMl9mMzIoZmxvYXQzMng0X3QgX19wMCkgewogIGZsb2F0MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdmN2dG1xX3UzMl92KChpbnQ4eDE2X3QpX19yZXYwLCA1MCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMngyX3QgdmN2dG1fdTMyX2YzMihmbG9hdDMyeDJfdCBfX3AwKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0bV91MzJfdigoaW50OHg4X3QpX19wMCwgMTgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMngyX3QgdmN2dG1fdTMyX2YzMihmbG9hdDMyeDJfdCBfX3AwKSB7CiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0bV91MzJfdigoaW50OHg4X3QpX19yZXYwLCAxOCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDRfdCB2Y3Z0bnFfczMyX2YzMihmbG9hdDMyeDRfdCBfX3AwKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkgX19idWlsdGluX25lb25fdmN2dG5xX3MzMl92KChpbnQ4eDE2X3QpX19wMCwgMzQpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDRfdCB2Y3Z0bnFfczMyX2YzMihmbG9hdDMyeDRfdCBfX3AwKSB7CiAgZmxvYXQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkgX19idWlsdGluX25lb25fdmN2dG5xX3MzMl92KChpbnQ4eDE2X3QpX19yZXYwLCAzNCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDJfdCB2Y3Z0bl9zMzJfZjMyKGZsb2F0MzJ4Ml90IF9fcDApIHsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0bl9zMzJfdigoaW50OHg4X3QpX19wMCwgMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4Ml90IHZjdnRuX3MzMl9mMzIoZmxvYXQzMngyX3QgX19wMCkgewogIGZsb2F0MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRuX3MzMl92KChpbnQ4eDhfdClfX3JldjAsIDIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZjdnRucV91MzJfZjMyKGZsb2F0MzJ4NF90IF9fcDApIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRucV91MzJfdigoaW50OHgxNl90KV9fcDAsIDUwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4NF90IHZjdnRucV91MzJfZjMyKGZsb2F0MzJ4NF90IF9fcDApIHsKICBmbG9hdDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRucV91MzJfdigoaW50OHgxNl90KV9fcmV2MCwgNTApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4Ml90IHZjdnRuX3UzMl9mMzIoZmxvYXQzMngyX3QgX19wMCkgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdmN2dG5fdTMyX3YoKGludDh4OF90KV9fcDAsIDE4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4Ml90IHZjdnRuX3UzMl9mMzIoZmxvYXQzMngyX3QgX19wMCkgewogIGZsb2F0MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdmN2dG5fdTMyX3YoKGludDh4OF90KV9fcmV2MCwgMTgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMng0X3QgdmN2dHBxX3MzMl9mMzIoZmxvYXQzMng0X3QgX19wMCkgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRwcV9zMzJfdigoaW50OHgxNl90KV9fcDAsIDM0KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMng0X3QgdmN2dHBxX3MzMl9mMzIoZmxvYXQzMng0X3QgX19wMCkgewogIGZsb2F0MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRwcV9zMzJfdigoaW50OHgxNl90KV9fcmV2MCwgMzQpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMngyX3QgdmN2dHBfczMyX2YzMihmbG9hdDMyeDJfdCBfX3AwKSB7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdmN2dHBfczMyX3YoKGludDh4OF90KV9fcDAsIDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDJfdCB2Y3Z0cF9zMzJfZjMyKGZsb2F0MzJ4Ml90IF9fcDApIHsKICBmbG9hdDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0cF9zMzJfdigoaW50OHg4X3QpX19yZXYwLCAyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDRfdCB2Y3Z0cHFfdTMyX2YzMihmbG9hdDMyeDRfdCBfX3AwKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0cHFfdTMyX3YoKGludDh4MTZfdClfX3AwLCA1MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2Y3Z0cHFfdTMyX2YzMihmbG9hdDMyeDRfdCBfX3AwKSB7CiAgZmxvYXQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0cHFfdTMyX3YoKGludDh4MTZfdClfX3JldjAsIDUwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDJfdCB2Y3Z0cF91MzJfZjMyKGZsb2F0MzJ4Ml90IF9fcDApIHsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRwX3UzMl92KChpbnQ4eDhfdClfX3AwLCAxOCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDJfdCB2Y3Z0cF91MzJfZjMyKGZsb2F0MzJ4Ml90IF9fcDApIHsKICBmbG9hdDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRwX3UzMl92KChpbnQ4eDhfdClfX3JldjAsIDE4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2VuZGlmCiNpZiBfX0FSTV9BUkNIID49IDggJiYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX0FFUykKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4MTZfdCB2YWVzZHFfdTgodWludDh4MTZfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEpIHsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZhZXNkcV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA0OCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4MTZfdCB2YWVzZHFfdTgodWludDh4MTZfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEpIHsKICB1aW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92YWVzZHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDQ4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4MTZfdCB2YWVzZXFfdTgodWludDh4MTZfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEpIHsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZhZXNlcV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA0OCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4MTZfdCB2YWVzZXFfdTgodWludDh4MTZfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEpIHsKICB1aW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92YWVzZXFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDQ4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4MTZfdCB2YWVzaW1jcV91OCh1aW50OHgxNl90IF9fcDApIHsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZhZXNpbWNxX3YoKGludDh4MTZfdClfX3AwLCA0OCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4MTZfdCB2YWVzaW1jcV91OCh1aW50OHgxNl90IF9fcDApIHsKICB1aW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkgX19idWlsdGluX25lb25fdmFlc2ltY3FfdigoaW50OHgxNl90KV9fcmV2MCwgNDgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHgxNl90IHZhZXNtY3FfdTgodWludDh4MTZfdCBfX3AwKSB7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92YWVzbWNxX3YoKGludDh4MTZfdClfX3AwLCA0OCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4MTZfdCB2YWVzbWNxX3U4KHVpbnQ4eDE2X3QgX19wMCkgewogIHVpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92YWVzbWNxX3YoKGludDh4MTZfdClfX3JldjAsIDQ4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2VuZGlmCiNpZiBfX0FSTV9BUkNIID49IDggJiYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX0RJUkVDVEVEX1JPVU5ESU5HKQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDRfdCB2cm5kcV9mMzIoZmxvYXQzMng0X3QgX19wMCkgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92cm5kcV92KChpbnQ4eDE2X3QpX19wMCwgNDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4NF90IHZybmRxX2YzMihmbG9hdDMyeDRfdCBfX3AwKSB7CiAgZmxvYXQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZybmRxX3YoKGludDh4MTZfdClfX3JldjAsIDQxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMngyX3QgdnJuZF9mMzIoZmxvYXQzMngyX3QgX19wMCkgewogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cm5kX3YoKGludDh4OF90KV9fcDAsIDkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4Ml90IHZybmRfZjMyKGZsb2F0MzJ4Ml90IF9fcDApIHsKICBmbG9hdDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdnJuZF92KChpbnQ4eDhfdClfX3JldjAsIDkpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDRfdCB2cm5kYXFfZjMyKGZsb2F0MzJ4NF90IF9fcDApIHsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdnJuZGFxX3YoKGludDh4MTZfdClfX3AwLCA0MSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMng0X3QgdnJuZGFxX2YzMihmbG9hdDMyeDRfdCBfX3AwKSB7CiAgZmxvYXQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZybmRhcV92KChpbnQ4eDE2X3QpX19yZXYwLCA0MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4Ml90IHZybmRhX2YzMihmbG9hdDMyeDJfdCBfX3AwKSB7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZybmRhX3YoKGludDh4OF90KV9fcDAsIDkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4Ml90IHZybmRhX2YzMihmbG9hdDMyeDJfdCBfX3AwKSB7CiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZybmRhX3YoKGludDh4OF90KV9fcmV2MCwgOSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4NF90IHZybmRpcV9mMzIoZmxvYXQzMng0X3QgX19wMCkgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92cm5kaXFfdigoaW50OHgxNl90KV9fcDAsIDQxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDRfdCB2cm5kaXFfZjMyKGZsb2F0MzJ4NF90IF9fcDApIHsKICBmbG9hdDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdnJuZGlxX3YoKGludDh4MTZfdClfX3JldjAsIDQxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMngyX3QgdnJuZGlfZjMyKGZsb2F0MzJ4Ml90IF9fcDApIHsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdnJuZGlfdigoaW50OHg4X3QpX19wMCwgOSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMngyX3QgdnJuZGlfZjMyKGZsb2F0MzJ4Ml90IF9fcDApIHsKICBmbG9hdDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdnJuZGlfdigoaW50OHg4X3QpX19yZXYwLCA5KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMng0X3QgdnJuZG1xX2YzMihmbG9hdDMyeDRfdCBfX3AwKSB7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZybmRtcV92KChpbnQ4eDE2X3QpX19wMCwgNDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4NF90IHZybmRtcV9mMzIoZmxvYXQzMng0X3QgX19wMCkgewogIGZsb2F0MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92cm5kbXFfdigoaW50OHgxNl90KV9fcmV2MCwgNDEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDJfdCB2cm5kbV9mMzIoZmxvYXQzMngyX3QgX19wMCkgewogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cm5kbV92KChpbnQ4eDhfdClfX3AwLCA5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDJfdCB2cm5kbV9mMzIoZmxvYXQzMngyX3QgX19wMCkgewogIGZsb2F0MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cm5kbV92KChpbnQ4eDhfdClfX3JldjAsIDkpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDRfdCB2cm5kbnFfZjMyKGZsb2F0MzJ4NF90IF9fcDApIHsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdnJuZG5xX3YoKGludDh4MTZfdClfX3AwLCA0MSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMng0X3QgdnJuZG5xX2YzMihmbG9hdDMyeDRfdCBfX3AwKSB7CiAgZmxvYXQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZybmRucV92KChpbnQ4eDE2X3QpX19yZXYwLCA0MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4Ml90IHZybmRuX2YzMihmbG9hdDMyeDJfdCBfX3AwKSB7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZybmRuX3YoKGludDh4OF90KV9fcDAsIDkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4Ml90IHZybmRuX2YzMihmbG9hdDMyeDJfdCBfX3AwKSB7CiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZybmRuX3YoKGludDh4OF90KV9fcmV2MCwgOSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCl9fYWkgZmxvYXQzMl90IHZybmRuc19mMzIoZmxvYXQzMl90IF9fcDApIHsKICBmbG9hdDMyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMl90KSBfX2J1aWx0aW5fbmVvbl92cm5kbnNfZjMyKF9fcDApOwogIHJldHVybiBfX3JldDsKfQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDRfdCB2cm5kcHFfZjMyKGZsb2F0MzJ4NF90IF9fcDApIHsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdnJuZHBxX3YoKGludDh4MTZfdClfX3AwLCA0MSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMng0X3QgdnJuZHBxX2YzMihmbG9hdDMyeDRfdCBfX3AwKSB7CiAgZmxvYXQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZybmRwcV92KChpbnQ4eDE2X3QpX19yZXYwLCA0MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4Ml90IHZybmRwX2YzMihmbG9hdDMyeDJfdCBfX3AwKSB7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZybmRwX3YoKGludDh4OF90KV9fcDAsIDkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4Ml90IHZybmRwX2YzMihmbG9hdDMyeDJfdCBfX3AwKSB7CiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZybmRwX3YoKGludDh4OF90KV9fcmV2MCwgOSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4NF90IHZybmR4cV9mMzIoZmxvYXQzMng0X3QgX19wMCkgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92cm5keHFfdigoaW50OHgxNl90KV9fcDAsIDQxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDRfdCB2cm5keHFfZjMyKGZsb2F0MzJ4NF90IF9fcDApIHsKICBmbG9hdDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdnJuZHhxX3YoKGludDh4MTZfdClfX3JldjAsIDQxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMngyX3QgdnJuZHhfZjMyKGZsb2F0MzJ4Ml90IF9fcDApIHsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdnJuZHhfdigoaW50OHg4X3QpX19wMCwgOSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMngyX3QgdnJuZHhfZjMyKGZsb2F0MzJ4Ml90IF9fcDApIHsKICBmbG9hdDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdnJuZHhfdigoaW50OHg4X3QpX19yZXYwLCA5KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2VuZGlmCiNpZiBfX0FSTV9BUkNIID49IDggJiYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX0RJUkVDVEVEX1JPVU5ESU5HKSAmJiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfRlAxNl9WRUNUT1JfQVJJVEhNRVRJQykKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQxNng4X3QgdnJuZHFfZjE2KGZsb2F0MTZ4OF90IF9fcDApIHsKICBmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDhfdCkgX19idWlsdGluX25lb25fdnJuZHFfdigoaW50OHgxNl90KV9fcDAsIDQwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDE2eDhfdCB2cm5kcV9mMTYoZmxvYXQxNng4X3QgX19wMCkgewogIGZsb2F0MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92cm5kcV92KChpbnQ4eDE2X3QpX19yZXYwLCA0MCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MTZ4NF90IHZybmRfZjE2KGZsb2F0MTZ4NF90IF9fcDApIHsKICBmbG9hdDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDRfdCkgX19idWlsdGluX25lb25fdnJuZF92KChpbnQ4eDhfdClfX3AwLCA4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDE2eDRfdCB2cm5kX2YxNihmbG9hdDE2eDRfdCBfX3AwKSB7CiAgZmxvYXQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZybmRfdigoaW50OHg4X3QpX19yZXYwLCA4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQxNng4X3QgdnJuZGFxX2YxNihmbG9hdDE2eDhfdCBfX3AwKSB7CiAgZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZybmRhcV92KChpbnQ4eDE2X3QpX19wMCwgNDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MTZ4OF90IHZybmRhcV9mMTYoZmxvYXQxNng4X3QgX19wMCkgewogIGZsb2F0MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92cm5kYXFfdigoaW50OHgxNl90KV9fcmV2MCwgNDApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDE2eDRfdCB2cm5kYV9mMTYoZmxvYXQxNng0X3QgX19wMCkgewogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cm5kYV92KChpbnQ4eDhfdClfX3AwLCA4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDE2eDRfdCB2cm5kYV9mMTYoZmxvYXQxNng0X3QgX19wMCkgewogIGZsb2F0MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cm5kYV92KChpbnQ4eDhfdClfX3JldjAsIDgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDE2eDhfdCB2cm5kbXFfZjE2KGZsb2F0MTZ4OF90IF9fcDApIHsKICBmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDhfdCkgX19idWlsdGluX25lb25fdnJuZG1xX3YoKGludDh4MTZfdClfX3AwLCA0MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQxNng4X3QgdnJuZG1xX2YxNihmbG9hdDE2eDhfdCBfX3AwKSB7CiAgZmxvYXQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZybmRtcV92KChpbnQ4eDE2X3QpX19yZXYwLCA0MCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MTZ4NF90IHZybmRtX2YxNihmbG9hdDE2eDRfdCBfX3AwKSB7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZybmRtX3YoKGludDh4OF90KV9fcDAsIDgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MTZ4NF90IHZybmRtX2YxNihmbG9hdDE2eDRfdCBfX3AwKSB7CiAgZmxvYXQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZybmRtX3YoKGludDh4OF90KV9fcmV2MCwgOCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MTZ4OF90IHZybmRucV9mMTYoZmxvYXQxNng4X3QgX19wMCkgewogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92cm5kbnFfdigoaW50OHgxNl90KV9fcDAsIDQwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDE2eDhfdCB2cm5kbnFfZjE2KGZsb2F0MTZ4OF90IF9fcDApIHsKICBmbG9hdDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDhfdCkgX19idWlsdGluX25lb25fdnJuZG5xX3YoKGludDh4MTZfdClfX3JldjAsIDQwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQxNng0X3QgdnJuZG5fZjE2KGZsb2F0MTZ4NF90IF9fcDApIHsKICBmbG9hdDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDRfdCkgX19idWlsdGluX25lb25fdnJuZG5fdigoaW50OHg4X3QpX19wMCwgOCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQxNng0X3QgdnJuZG5fZjE2KGZsb2F0MTZ4NF90IF9fcDApIHsKICBmbG9hdDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDRfdCkgX19idWlsdGluX25lb25fdnJuZG5fdigoaW50OHg4X3QpX19yZXYwLCA4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQxNng4X3QgdnJuZHBxX2YxNihmbG9hdDE2eDhfdCBfX3AwKSB7CiAgZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZybmRwcV92KChpbnQ4eDE2X3QpX19wMCwgNDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MTZ4OF90IHZybmRwcV9mMTYoZmxvYXQxNng4X3QgX19wMCkgewogIGZsb2F0MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92cm5kcHFfdigoaW50OHgxNl90KV9fcmV2MCwgNDApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDE2eDRfdCB2cm5kcF9mMTYoZmxvYXQxNng0X3QgX19wMCkgewogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cm5kcF92KChpbnQ4eDhfdClfX3AwLCA4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDE2eDRfdCB2cm5kcF9mMTYoZmxvYXQxNng0X3QgX19wMCkgewogIGZsb2F0MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cm5kcF92KChpbnQ4eDhfdClfX3JldjAsIDgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDE2eDhfdCB2cm5keHFfZjE2KGZsb2F0MTZ4OF90IF9fcDApIHsKICBmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDhfdCkgX19idWlsdGluX25lb25fdnJuZHhxX3YoKGludDh4MTZfdClfX3AwLCA0MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQxNng4X3QgdnJuZHhxX2YxNihmbG9hdDE2eDhfdCBfX3AwKSB7CiAgZmxvYXQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZybmR4cV92KChpbnQ4eDE2X3QpX19yZXYwLCA0MCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MTZ4NF90IHZybmR4X2YxNihmbG9hdDE2eDRfdCBfX3AwKSB7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZybmR4X3YoKGludDh4OF90KV9fcDAsIDgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MTZ4NF90IHZybmR4X2YxNihmbG9hdDE2eDRfdCBfX3AwKSB7CiAgZmxvYXQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZybmR4X3YoKGludDh4OF90KV9fcmV2MCwgOCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNlbmRpZgojaWYgX19BUk1fQVJDSCA+PSA4ICYmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9OVU1FUklDX01BWE1JTikKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMng0X3Qgdm1heG5tcV9mMzIoZmxvYXQzMng0X3QgX19wMCwgZmxvYXQzMng0X3QgX19wMSkgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92bWF4bm1xX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDQxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDRfdCB2bWF4bm1xX2YzMihmbG9hdDMyeDRfdCBfX3AwLCBmbG9hdDMyeDRfdCBfX3AxKSB7CiAgZmxvYXQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZtYXhubXFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDQxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMngyX3Qgdm1heG5tX2YzMihmbG9hdDMyeDJfdCBfX3AwLCBmbG9hdDMyeDJfdCBfX3AxKSB7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZtYXhubV92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgOSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMngyX3Qgdm1heG5tX2YzMihmbG9hdDMyeDJfdCBfX3AwLCBmbG9hdDMyeDJfdCBfX3AxKSB7CiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZtYXhubV92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDkpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDRfdCB2bWlubm1xX2YzMihmbG9hdDMyeDRfdCBfX3AwLCBmbG9hdDMyeDRfdCBfX3AxKSB7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZtaW5ubXFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4NF90IHZtaW5ubXFfZjMyKGZsb2F0MzJ4NF90IF9fcDAsIGZsb2F0MzJ4NF90IF9fcDEpIHsKICBmbG9hdDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdm1pbm5tcV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNDEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDJfdCB2bWlubm1fZjMyKGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0MzJ4Ml90IF9fcDEpIHsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdm1pbm5tX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCA5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDJfdCB2bWlubm1fZjMyKGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0MzJ4Ml90IF9fcDEpIHsKICBmbG9hdDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdm1pbm5tX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgOSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNlbmRpZgojaWYgX19BUk1fQVJDSCA+PSA4ICYmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9OVU1FUklDX01BWE1JTikgJiYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX0ZQMTZfVkVDVE9SX0FSSVRITUVUSUMpCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MTZ4OF90IHZtYXhubXFfZjE2KGZsb2F0MTZ4OF90IF9fcDAsIGZsb2F0MTZ4OF90IF9fcDEpIHsKICBmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDhfdCkgX19idWlsdGluX25lb25fdm1heG5tcV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA0MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQxNng4X3Qgdm1heG5tcV9mMTYoZmxvYXQxNng4X3QgX19wMCwgZmxvYXQxNng4X3QgX19wMSkgewogIGZsb2F0MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92bWF4bm1xX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA0MCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MTZ4NF90IHZtYXhubV9mMTYoZmxvYXQxNng0X3QgX19wMCwgZmxvYXQxNng0X3QgX19wMSkgewogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92bWF4bm1fdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MTZ4NF90IHZtYXhubV9mMTYoZmxvYXQxNng0X3QgX19wMCwgZmxvYXQxNng0X3QgX19wMSkgewogIGZsb2F0MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92bWF4bm1fdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCA4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQxNng4X3Qgdm1pbm5tcV9mMTYoZmxvYXQxNng4X3QgX19wMCwgZmxvYXQxNng4X3QgX19wMSkgewogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92bWlubm1xX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDQwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDE2eDhfdCB2bWlubm1xX2YxNihmbG9hdDE2eDhfdCBfX3AwLCBmbG9hdDE2eDhfdCBfX3AxKSB7CiAgZmxvYXQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZtaW5ubXFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDQwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQxNng0X3Qgdm1pbm5tX2YxNihmbG9hdDE2eDRfdCBfX3AwLCBmbG9hdDE2eDRfdCBfX3AxKSB7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZtaW5ubV92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgOCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQxNng0X3Qgdm1pbm5tX2YxNihmbG9hdDE2eDRfdCBfX3AwLCBmbG9hdDE2eDRfdCBfX3AxKSB7CiAgZmxvYXQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZtaW5ubV92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojZW5kaWYKI2lmIF9fQVJNX0FSQ0ggPj0gOCAmJiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfU0hBMikKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDRfdCB2c2hhMWNxX3UzMih1aW50MzJ4NF90IF9fcDAsIHVpbnQzMl90IF9fcDEsIHVpbnQzMng0X3QgX19wMikgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdnNoYTFjcV91MzIoX19wMCwgX19wMSwgX19wMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2c2hhMWNxX3UzMih1aW50MzJ4NF90IF9fcDAsIHVpbnQzMl90IF9fcDEsIHVpbnQzMng0X3QgX19wMikgewogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzaGExY3FfdTMyKF9fcmV2MCwgX19wMSwgX19yZXYyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKX19haSB1aW50MzJfdCB2c2hhMWhfdTMyKHVpbnQzMl90IF9fcDApIHsKICB1aW50MzJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJfdCkgX19idWlsdGluX25lb25fdnNoYTFoX3UzMihfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDRfdCB2c2hhMW1xX3UzMih1aW50MzJ4NF90IF9fcDAsIHVpbnQzMl90IF9fcDEsIHVpbnQzMng0X3QgX19wMikgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdnNoYTFtcV91MzIoX19wMCwgX19wMSwgX19wMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2c2hhMW1xX3UzMih1aW50MzJ4NF90IF9fcDAsIHVpbnQzMl90IF9fcDEsIHVpbnQzMng0X3QgX19wMikgewogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzaGExbXFfdTMyKF9fcmV2MCwgX19wMSwgX19yZXYyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDRfdCB2c2hhMXBxX3UzMih1aW50MzJ4NF90IF9fcDAsIHVpbnQzMl90IF9fcDEsIHVpbnQzMng0X3QgX19wMikgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdnNoYTFwcV91MzIoX19wMCwgX19wMSwgX19wMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2c2hhMXBxX3UzMih1aW50MzJ4NF90IF9fcDAsIHVpbnQzMl90IF9fcDEsIHVpbnQzMng0X3QgX19wMikgewogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzaGExcHFfdTMyKF9fcmV2MCwgX19wMSwgX19yZXYyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDRfdCB2c2hhMXN1MHFfdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxLCB1aW50MzJ4NF90IF9fcDIpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzaGExc3UwcV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAoaW50OHgxNl90KV9fcDIsIDUwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4NF90IHZzaGExc3UwcV91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEsIHVpbnQzMng0X3QgX19wMikgewogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdnNoYTFzdTBxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAoaW50OHgxNl90KV9fcmV2MiwgNTApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZzaGExc3UxcV91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzaGExc3UxcV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA1MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2c2hhMXN1MXFfdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxKSB7CiAgdWludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdnNoYTFzdTFxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA1MCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMng0X3QgdnNoYTI1NmhxX3UzMih1aW50MzJ4NF90IF9fcDAsIHVpbnQzMng0X3QgX19wMSwgdWludDMyeDRfdCBfX3AyKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92c2hhMjU2aHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgKGludDh4MTZfdClfX3AyLCA1MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2c2hhMjU2aHFfdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxLCB1aW50MzJ4NF90IF9fcDIpIHsKICB1aW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzaGEyNTZocV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgKGludDh4MTZfdClfX3JldjIsIDUwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDRfdCB2c2hhMjU2aDJxX3UzMih1aW50MzJ4NF90IF9fcDAsIHVpbnQzMng0X3QgX19wMSwgdWludDMyeDRfdCBfX3AyKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92c2hhMjU2aDJxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIChpbnQ4eDE2X3QpX19wMiwgNTApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMng0X3QgdnNoYTI1NmgycV91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEsIHVpbnQzMng0X3QgX19wMikgewogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdnNoYTI1NmgycV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgKGludDh4MTZfdClfX3JldjIsIDUwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDRfdCB2c2hhMjU2c3UwcV91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzaGEyNTZzdTBxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDUwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4NF90IHZzaGEyNTZzdTBxX3UzMih1aW50MzJ4NF90IF9fcDAsIHVpbnQzMng0X3QgX19wMSkgewogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzaGEyNTZzdTBxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA1MCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMng0X3QgdnNoYTI1NnN1MXFfdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxLCB1aW50MzJ4NF90IF9fcDIpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzaGEyNTZzdTFxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIChpbnQ4eDE2X3QpX19wMiwgNTApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMng0X3QgdnNoYTI1NnN1MXFfdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxLCB1aW50MzJ4NF90IF9fcDIpIHsKICB1aW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzaGEyNTZzdTFxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAoaW50OHgxNl90KV9fcmV2MiwgNTApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojZW5kaWYKI2lmIF9fQVJNX0FSQ0ggPj0gOCAmJiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfU0hBMykgJiYgZGVmaW5lZChfX2FhcmNoNjRfXykKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4MTZfdCB2YmNheHFfdTgodWludDh4MTZfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEsIHVpbnQ4eDE2X3QgX19wMikgewogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkgX19idWlsdGluX25lb25fdmJjYXhxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIChpbnQ4eDE2X3QpX19wMiwgNDgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDE2X3QgdmJjYXhxX3U4KHVpbnQ4eDE2X3QgX19wMCwgdWludDh4MTZfdCBfX3AxLCB1aW50OHgxNl90IF9fcDIpIHsKICB1aW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZiY2F4cV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgKGludDh4MTZfdClfX3JldjIsIDQ4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDRfdCB2YmNheHFfdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxLCB1aW50MzJ4NF90IF9fcDIpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZiY2F4cV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAoaW50OHgxNl90KV9fcDIsIDUwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4NF90IHZiY2F4cV91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEsIHVpbnQzMng0X3QgX19wMikgewogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdmJjYXhxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAoaW50OHgxNl90KV9fcmV2MiwgNTApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50NjR4Ml90IHZiY2F4cV91NjQodWludDY0eDJfdCBfX3AwLCB1aW50NjR4Ml90IF9fcDEsIHVpbnQ2NHgyX3QgX19wMikgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkgX19idWlsdGluX25lb25fdmJjYXhxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIChpbnQ4eDE2X3QpX19wMiwgNTEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ2NHgyX3QgdmJjYXhxX3U2NCh1aW50NjR4Ml90IF9fcDAsIHVpbnQ2NHgyX3QgX19wMSwgdWludDY0eDJfdCBfX3AyKSB7CiAgdWludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92YmNheHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIChpbnQ4eDE2X3QpX19yZXYyLCA1MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng4X3QgdmJjYXhxX3UxNih1aW50MTZ4OF90IF9fcDAsIHVpbnQxNng4X3QgX19wMSwgdWludDE2eDhfdCBfX3AyKSB7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92YmNheHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgKGludDh4MTZfdClfX3AyLCA0OSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDhfdCB2YmNheHFfdTE2KHVpbnQxNng4X3QgX19wMCwgdWludDE2eDhfdCBfX3AxLCB1aW50MTZ4OF90IF9fcDIpIHsKICB1aW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZiY2F4cV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgKGludDh4MTZfdClfX3JldjIsIDQ5KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHgxNl90IHZiY2F4cV9zOChpbnQ4eDE2X3QgX19wMCwgaW50OHgxNl90IF9fcDEsIGludDh4MTZfdCBfX3AyKSB7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4MTZfdCkgX19idWlsdGluX25lb25fdmJjYXhxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIChpbnQ4eDE2X3QpX19wMiwgMzIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4MTZfdCB2YmNheHFfczgoaW50OHgxNl90IF9fcDAsIGludDh4MTZfdCBfX3AxLCBpbnQ4eDE2X3QgX19wMikgewogIGludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZiY2F4cV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgKGludDh4MTZfdClfX3JldjIsIDMyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4NF90IHZiY2F4cV9zMzIoaW50MzJ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxLCBpbnQzMng0X3QgX19wMikgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZiY2F4cV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAoaW50OHgxNl90KV9fcDIsIDM0KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMng0X3QgdmJjYXhxX3MzMihpbnQzMng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEsIGludDMyeDRfdCBfX3AyKSB7CiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkgX19idWlsdGluX25lb25fdmJjYXhxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAoaW50OHgxNl90KV9fcmV2MiwgMzQpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ2NHgyX3QgdmJjYXhxX3M2NChpbnQ2NHgyX3QgX19wMCwgaW50NjR4Ml90IF9fcDEsIGludDY0eDJfdCBfX3AyKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDJfdCkgX19idWlsdGluX25lb25fdmJjYXhxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIChpbnQ4eDE2X3QpX19wMiwgMzUpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDY0eDJfdCB2YmNheHFfczY0KGludDY0eDJfdCBfX3AwLCBpbnQ2NHgyX3QgX19wMSwgaW50NjR4Ml90IF9fcDIpIHsKICBpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGludDY0eDJfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAxLCAwKTsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92YmNheHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIChpbnQ4eDE2X3QpX19yZXYyLCAzNSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDhfdCB2YmNheHFfczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSwgaW50MTZ4OF90IF9fcDIpIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92YmNheHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgKGludDh4MTZfdClfX3AyLCAzMyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4OF90IHZiY2F4cV9zMTYoaW50MTZ4OF90IF9fcDAsIGludDE2eDhfdCBfX3AxLCBpbnQxNng4X3QgX19wMikgewogIGludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZiY2F4cV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgKGludDh4MTZfdClfX3JldjIsIDMzKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4MTZfdCB2ZW9yM3FfdTgodWludDh4MTZfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEsIHVpbnQ4eDE2X3QgX19wMikgewogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkgX19idWlsdGluX25lb25fdmVvcjNxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIChpbnQ4eDE2X3QpX19wMiwgNDgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDE2X3QgdmVvcjNxX3U4KHVpbnQ4eDE2X3QgX19wMCwgdWludDh4MTZfdCBfX3AxLCB1aW50OHgxNl90IF9fcDIpIHsKICB1aW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3Zlb3IzcV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgKGludDh4MTZfdClfX3JldjIsIDQ4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDRfdCB2ZW9yM3FfdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxLCB1aW50MzJ4NF90IF9fcDIpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3Zlb3IzcV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAoaW50OHgxNl90KV9fcDIsIDUwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4NF90IHZlb3IzcV91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEsIHVpbnQzMng0X3QgX19wMikgewogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdmVvcjNxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAoaW50OHgxNl90KV9fcmV2MiwgNTApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50NjR4Ml90IHZlb3IzcV91NjQodWludDY0eDJfdCBfX3AwLCB1aW50NjR4Ml90IF9fcDEsIHVpbnQ2NHgyX3QgX19wMikgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkgX19idWlsdGluX25lb25fdmVvcjNxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIChpbnQ4eDE2X3QpX19wMiwgNTEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ2NHgyX3QgdmVvcjNxX3U2NCh1aW50NjR4Ml90IF9fcDAsIHVpbnQ2NHgyX3QgX19wMSwgdWludDY0eDJfdCBfX3AyKSB7CiAgdWludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92ZW9yM3FfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIChpbnQ4eDE2X3QpX19yZXYyLCA1MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng4X3QgdmVvcjNxX3UxNih1aW50MTZ4OF90IF9fcDAsIHVpbnQxNng4X3QgX19wMSwgdWludDE2eDhfdCBfX3AyKSB7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92ZW9yM3FfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgKGludDh4MTZfdClfX3AyLCA0OSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDhfdCB2ZW9yM3FfdTE2KHVpbnQxNng4X3QgX19wMCwgdWludDE2eDhfdCBfX3AxLCB1aW50MTZ4OF90IF9fcDIpIHsKICB1aW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3Zlb3IzcV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgKGludDh4MTZfdClfX3JldjIsIDQ5KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHgxNl90IHZlb3IzcV9zOChpbnQ4eDE2X3QgX19wMCwgaW50OHgxNl90IF9fcDEsIGludDh4MTZfdCBfX3AyKSB7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4MTZfdCkgX19idWlsdGluX25lb25fdmVvcjNxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIChpbnQ4eDE2X3QpX19wMiwgMzIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4MTZfdCB2ZW9yM3FfczgoaW50OHgxNl90IF9fcDAsIGludDh4MTZfdCBfX3AxLCBpbnQ4eDE2X3QgX19wMikgewogIGludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3Zlb3IzcV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgKGludDh4MTZfdClfX3JldjIsIDMyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4NF90IHZlb3IzcV9zMzIoaW50MzJ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxLCBpbnQzMng0X3QgX19wMikgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3Zlb3IzcV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAoaW50OHgxNl90KV9fcDIsIDM0KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMng0X3QgdmVvcjNxX3MzMihpbnQzMng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEsIGludDMyeDRfdCBfX3AyKSB7CiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkgX19idWlsdGluX25lb25fdmVvcjNxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAoaW50OHgxNl90KV9fcmV2MiwgMzQpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ2NHgyX3QgdmVvcjNxX3M2NChpbnQ2NHgyX3QgX19wMCwgaW50NjR4Ml90IF9fcDEsIGludDY0eDJfdCBfX3AyKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDJfdCkgX19idWlsdGluX25lb25fdmVvcjNxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIChpbnQ4eDE2X3QpX19wMiwgMzUpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDY0eDJfdCB2ZW9yM3FfczY0KGludDY0eDJfdCBfX3AwLCBpbnQ2NHgyX3QgX19wMSwgaW50NjR4Ml90IF9fcDIpIHsKICBpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGludDY0eDJfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAxLCAwKTsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92ZW9yM3FfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIChpbnQ4eDE2X3QpX19yZXYyLCAzNSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDhfdCB2ZW9yM3FfczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSwgaW50MTZ4OF90IF9fcDIpIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92ZW9yM3FfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgKGludDh4MTZfdClfX3AyLCAzMyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4OF90IHZlb3IzcV9zMTYoaW50MTZ4OF90IF9fcDAsIGludDE2eDhfdCBfX3AxLCBpbnQxNng4X3QgX19wMikgewogIGludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3Zlb3IzcV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgKGludDh4MTZfdClfX3JldjIsIDMzKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDY0eDJfdCB2cmF4MXFfdTY0KHVpbnQ2NHgyX3QgX19wMCwgdWludDY0eDJfdCBfX3AxKSB7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92cmF4MXFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNTEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ2NHgyX3QgdnJheDFxX3U2NCh1aW50NjR4Ml90IF9fcDAsIHVpbnQ2NHgyX3QgX19wMSkgewogIHVpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZyYXgxcV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNTEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2eGFycV91NjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDJfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ2NHgyX3QgX19zMSA9IF9fcDE7IFwKICB1aW50NjR4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDY0eDJfdCkgX19idWlsdGluX25lb25fdnhhcnFfdigoaW50OHgxNl90KV9fczAsIChpbnQ4eDE2X3QpX19zMSwgX19wMiwgNTEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2eGFycV91NjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDJfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ2NHgyX3QgX19zMSA9IF9fcDE7IFwKICB1aW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDEsIDApOyBcCiAgdWludDY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAxLCAwKTsgXAogIHVpbnQ2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92eGFycV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgX19wMiwgNTEpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojZW5kaWYKI2lmIF9fQVJNX0FSQ0ggPj0gOCAmJiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfU0hBNTEyKSAmJiBkZWZpbmVkKF9fYWFyY2g2NF9fKQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50NjR4Ml90IHZzaGE1MTJocV91NjQodWludDY0eDJfdCBfX3AwLCB1aW50NjR4Ml90IF9fcDEsIHVpbnQ2NHgyX3QgX19wMikgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkgX19idWlsdGluX25lb25fdnNoYTUxMmhxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIChpbnQ4eDE2X3QpX19wMiwgNTEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ2NHgyX3QgdnNoYTUxMmhxX3U2NCh1aW50NjR4Ml90IF9fcDAsIHVpbnQ2NHgyX3QgX19wMSwgdWludDY0eDJfdCBfX3AyKSB7CiAgdWludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92c2hhNTEyaHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIChpbnQ4eDE2X3QpX19yZXYyLCA1MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ2NHgyX3QgdnNoYTUxMmgycV91NjQodWludDY0eDJfdCBfX3AwLCB1aW50NjR4Ml90IF9fcDEsIHVpbnQ2NHgyX3QgX19wMikgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkgX19idWlsdGluX25lb25fdnNoYTUxMmgycV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAoaW50OHgxNl90KV9fcDIsIDUxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50NjR4Ml90IHZzaGE1MTJoMnFfdTY0KHVpbnQ2NHgyX3QgX19wMCwgdWludDY0eDJfdCBfX3AxLCB1aW50NjR4Ml90IF9fcDIpIHsKICB1aW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZzaGE1MTJoMnFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIChpbnQ4eDE2X3QpX19yZXYyLCA1MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ2NHgyX3QgdnNoYTUxMnN1MHFfdTY0KHVpbnQ2NHgyX3QgX19wMCwgdWludDY0eDJfdCBfX3AxKSB7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92c2hhNTEyc3UwcV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA1MSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDY0eDJfdCB2c2hhNTEyc3UwcV91NjQodWludDY0eDJfdCBfX3AwLCB1aW50NjR4Ml90IF9fcDEpIHsKICB1aW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92c2hhNTEyc3UwcV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNTEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50NjR4Ml90IHZzaGE1MTJzdTFxX3U2NCh1aW50NjR4Ml90IF9fcDAsIHVpbnQ2NHgyX3QgX19wMSwgdWludDY0eDJfdCBfX3AyKSB7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92c2hhNTEyc3UxcV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAoaW50OHgxNl90KV9fcDIsIDUxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50NjR4Ml90IHZzaGE1MTJzdTFxX3U2NCh1aW50NjR4Ml90IF9fcDAsIHVpbnQ2NHgyX3QgX19wMSwgdWludDY0eDJfdCBfX3AyKSB7CiAgdWludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92c2hhNTEyc3UxcV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgKGludDh4MTZfdClfX3JldjIsIDUxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2VuZGlmCiNpZiBfX0FSTV9BUkNIID49IDggJiYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX1NNMykgJiYgZGVmaW5lZChfX2FhcmNoNjRfXykKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDRfdCB2c20zcGFydHcxcV91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEsIHVpbnQzMng0X3QgX19wMikgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdnNtM3BhcnR3MXFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgKGludDh4MTZfdClfX3AyLCA1MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2c20zcGFydHcxcV91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEsIHVpbnQzMng0X3QgX19wMikgewogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdnNtM3BhcnR3MXFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIChpbnQ4eDE2X3QpX19yZXYyLCA1MCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMng0X3QgdnNtM3BhcnR3MnFfdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxLCB1aW50MzJ4NF90IF9fcDIpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzbTNwYXJ0dzJxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIChpbnQ4eDE2X3QpX19wMiwgNTApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMng0X3QgdnNtM3BhcnR3MnFfdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxLCB1aW50MzJ4NF90IF9fcDIpIHsKICB1aW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzbTNwYXJ0dzJxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAoaW50OHgxNl90KV9fcmV2MiwgNTApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZzbTNzczFxX3UzMih1aW50MzJ4NF90IF9fcDAsIHVpbnQzMng0X3QgX19wMSwgdWludDMyeDRfdCBfX3AyKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92c20zc3MxcV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAoaW50OHgxNl90KV9fcDIsIDUwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4NF90IHZzbTNzczFxX3UzMih1aW50MzJ4NF90IF9fcDAsIHVpbnQzMng0X3QgX19wMSwgdWludDMyeDRfdCBfX3AyKSB7CiAgdWludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92c20zc3MxcV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgKGludDh4MTZfdClfX3JldjIsIDUwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNtM3R0MWFxX3UzMihfX3AwLCBfX3AxLCBfX3AyLCBfX3AzKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NF90IF9fczAgPSBfX3AwOyBcCiAgdWludDMyeDRfdCBfX3MxID0gX19wMTsgXAogIHVpbnQzMng0X3QgX19zMiA9IF9fcDI7IFwKICB1aW50MzJ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdnNtM3R0MWFxX3YoKGludDh4MTZfdClfX3MwLCAoaW50OHgxNl90KV9fczEsIChpbnQ4eDE2X3QpX19zMiwgX19wMywgNTApOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c20zdHQxYXFfdTMyKF9fcDAsIF9fcDEsIF9fcDIsIF9fcDMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MzJ4NF90IF9fczEgPSBfX3AxOyBcCiAgdWludDMyeDRfdCBfX3MyID0gX19wMjsgXAogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMywgMiwgMSwgMCk7IFwKICB1aW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDMsIDIsIDEsIDApOyBcCiAgdWludDMyeDRfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyLCBfX3MyLCAzLCAyLCAxLCAwKTsgXAogIHVpbnQzMng0X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92c20zdHQxYXFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIChpbnQ4eDE2X3QpX19yZXYyLCBfX3AzLCA1MCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzbTN0dDFicV91MzIoX19wMCwgX19wMSwgX19wMiwgX19wMykgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDRfdCBfX3MwID0gX19wMDsgXAogIHVpbnQzMng0X3QgX19zMSA9IF9fcDE7IFwKICB1aW50MzJ4NF90IF9fczIgPSBfX3AyOyBcCiAgdWludDMyeDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzbTN0dDFicV92KChpbnQ4eDE2X3QpX19zMCwgKGludDh4MTZfdClfX3MxLCAoaW50OHgxNl90KV9fczIsIF9fcDMsIDUwKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNtM3R0MWJxX3UzMihfX3AwLCBfX3AxLCBfX3AyLCBfX3AzKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NF90IF9fczAgPSBfX3AwOyBcCiAgdWludDMyeDRfdCBfX3MxID0gX19wMTsgXAogIHVpbnQzMng0X3QgX19zMiA9IF9fcDI7IFwKICB1aW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDMsIDIsIDEsIDApOyBcCiAgdWludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAzLCAyLCAxLCAwKTsgXAogIHVpbnQzMng0X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMiwgX19zMiwgMywgMiwgMSwgMCk7IFwKICB1aW50MzJ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdnNtM3R0MWJxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAoaW50OHgxNl90KV9fcmV2MiwgX19wMywgNTApOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c20zdHQyYXFfdTMyKF9fcDAsIF9fcDEsIF9fcDIsIF9fcDMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MzJ4NF90IF9fczEgPSBfX3AxOyBcCiAgdWludDMyeDRfdCBfX3MyID0gX19wMjsgXAogIHVpbnQzMng0X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92c20zdHQyYXFfdigoaW50OHgxNl90KV9fczAsIChpbnQ4eDE2X3QpX19zMSwgKGludDh4MTZfdClfX3MyLCBfX3AzLCA1MCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZzbTN0dDJhcV91MzIoX19wMCwgX19wMSwgX19wMiwgX19wMykgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDRfdCBfX3MwID0gX19wMDsgXAogIHVpbnQzMng0X3QgX19zMSA9IF9fcDE7IFwKICB1aW50MzJ4NF90IF9fczIgPSBfX3AyOyBcCiAgdWludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAzLCAyLCAxLCAwKTsgXAogIHVpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMywgMiwgMSwgMCk7IFwKICB1aW50MzJ4NF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczIsIF9fczIsIDMsIDIsIDEsIDApOyBcCiAgdWludDMyeDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzbTN0dDJhcV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgKGludDh4MTZfdClfX3JldjIsIF9fcDMsIDUwKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNtM3R0MmJxX3UzMihfX3AwLCBfX3AxLCBfX3AyLCBfX3AzKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NF90IF9fczAgPSBfX3AwOyBcCiAgdWludDMyeDRfdCBfX3MxID0gX19wMTsgXAogIHVpbnQzMng0X3QgX19zMiA9IF9fcDI7IFwKICB1aW50MzJ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdnNtM3R0MmJxX3YoKGludDh4MTZfdClfX3MwLCAoaW50OHgxNl90KV9fczEsIChpbnQ4eDE2X3QpX19zMiwgX19wMywgNTApOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c20zdHQyYnFfdTMyKF9fcDAsIF9fcDEsIF9fcDIsIF9fcDMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MzJ4NF90IF9fczEgPSBfX3AxOyBcCiAgdWludDMyeDRfdCBfX3MyID0gX19wMjsgXAogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMywgMiwgMSwgMCk7IFwKICB1aW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDMsIDIsIDEsIDApOyBcCiAgdWludDMyeDRfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyLCBfX3MyLCAzLCAyLCAxLCAwKTsgXAogIHVpbnQzMng0X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92c20zdHQyYnFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIChpbnQ4eDE2X3QpX19yZXYyLCBfX3AzLCA1MCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNlbmRpZgojaWYgX19BUk1fQVJDSCA+PSA4ICYmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9TTTQpICYmIGRlZmluZWQoX19hYXJjaDY0X18pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMng0X3QgdnNtNGVxX3UzMih1aW50MzJ4NF90IF9fcDAsIHVpbnQzMng0X3QgX19wMSkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdnNtNGVxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDUwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4NF90IHZzbTRlcV91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92c200ZXFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDUwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDRfdCB2c200ZWtleXFfdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92c200ZWtleXFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNTApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMng0X3QgdnNtNGVrZXlxX3UzMih1aW50MzJ4NF90IF9fcDAsIHVpbnQzMng0X3QgX19wMSkgewogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzbTRla2V5cV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNTApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojZW5kaWYKI2lmIF9fQVJNX0FSQ0ggPj0gOCAmJiBkZWZpbmVkKF9fYWFyY2g2NF9fKQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ2NHgyX3QgdmN2dGFxX3M2NF9mNjQoZmxvYXQ2NHgyX3QgX19wMCkgewogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRhcV9zNjRfdigoaW50OHgxNl90KV9fcDAsIDM1KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ2NHgyX3QgdmN2dGFxX3M2NF9mNjQoZmxvYXQ2NHgyX3QgX19wMCkgewogIGZsb2F0NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRhcV9zNjRfdigoaW50OHgxNl90KV9fcmV2MCwgMzUpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgpfX2FpIGludDY0eDFfdCB2Y3Z0YV9zNjRfZjY0KGZsb2F0NjR4MV90IF9fcDApIHsKICBpbnQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0YV9zNjRfdigoaW50OHg4X3QpX19wMCwgMyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ2NHgyX3QgdmN2dGFxX3U2NF9mNjQoZmxvYXQ2NHgyX3QgX19wMCkgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkgX19idWlsdGluX25lb25fdmN2dGFxX3U2NF92KChpbnQ4eDE2X3QpX19wMCwgNTEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ2NHgyX3QgdmN2dGFxX3U2NF9mNjQoZmxvYXQ2NHgyX3QgX19wMCkgewogIGZsb2F0NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkgX19idWlsdGluX25lb25fdmN2dGFxX3U2NF92KChpbnQ4eDE2X3QpX19yZXYwLCA1MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCl9fYWkgdWludDY0eDFfdCB2Y3Z0YV91NjRfZjY0KGZsb2F0NjR4MV90IF9fcDApIHsKICB1aW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRhX3U2NF92KChpbnQ4eDhfdClfX3AwLCAxOSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDY0eDJfdCB2Y3Z0bXFfczY0X2Y2NChmbG9hdDY0eDJfdCBfX3AwKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDJfdCkgX19idWlsdGluX25lb25fdmN2dG1xX3M2NF92KChpbnQ4eDE2X3QpX19wMCwgMzUpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDY0eDJfdCB2Y3Z0bXFfczY0X2Y2NChmbG9hdDY0eDJfdCBfX3AwKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDJfdCkgX19idWlsdGluX25lb25fdmN2dG1xX3M2NF92KChpbnQ4eDE2X3QpX19yZXYwLCAzNSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCl9fYWkgaW50NjR4MV90IHZjdnRtX3M2NF9mNjQoZmxvYXQ2NHgxX3QgX19wMCkgewogIGludDY0eDFfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRtX3M2NF92KChpbnQ4eDhfdClfX3AwLCAzKTsKICByZXR1cm4gX19yZXQ7Cn0KI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDY0eDJfdCB2Y3Z0bXFfdTY0X2Y2NChmbG9hdDY0eDJfdCBfX3AwKSB7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0bXFfdTY0X3YoKGludDh4MTZfdClfX3AwLCA1MSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDY0eDJfdCB2Y3Z0bXFfdTY0X2Y2NChmbG9hdDY0eDJfdCBfX3AwKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0bXFfdTY0X3YoKGludDh4MTZfdClfX3JldjAsIDUxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKX19haSB1aW50NjR4MV90IHZjdnRtX3U2NF9mNjQoZmxvYXQ2NHgxX3QgX19wMCkgewogIHVpbnQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDFfdCkgX19idWlsdGluX25lb25fdmN2dG1fdTY0X3YoKGludDh4OF90KV9fcDAsIDE5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50NjR4Ml90IHZjdnRucV9zNjRfZjY0KGZsb2F0NjR4Ml90IF9fcDApIHsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0bnFfczY0X3YoKGludDh4MTZfdClfX3AwLCAzNSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50NjR4Ml90IHZjdnRucV9zNjRfZjY0KGZsb2F0NjR4Ml90IF9fcDApIHsKICBmbG9hdDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0bnFfczY0X3YoKGludDh4MTZfdClfX3JldjAsIDM1KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKX19haSBpbnQ2NHgxX3QgdmN2dG5fczY0X2Y2NChmbG9hdDY0eDFfdCBfX3AwKSB7CiAgaW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDFfdCkgX19idWlsdGluX25lb25fdmN2dG5fczY0X3YoKGludDh4OF90KV9fcDAsIDMpOwogIHJldHVybiBfX3JldDsKfQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50NjR4Ml90IHZjdnRucV91NjRfZjY0KGZsb2F0NjR4Ml90IF9fcDApIHsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRucV91NjRfdigoaW50OHgxNl90KV9fcDAsIDUxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50NjR4Ml90IHZjdnRucV91NjRfZjY0KGZsb2F0NjR4Ml90IF9fcDApIHsKICBmbG9hdDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRucV91NjRfdigoaW50OHgxNl90KV9fcmV2MCwgNTEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgpfX2FpIHVpbnQ2NHgxX3QgdmN2dG5fdTY0X2Y2NChmbG9hdDY0eDFfdCBfX3AwKSB7CiAgdWludDY0eDFfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0bl91NjRfdigoaW50OHg4X3QpX19wMCwgMTkpOwogIHJldHVybiBfX3JldDsKfQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ2NHgyX3QgdmN2dHBxX3M2NF9mNjQoZmxvYXQ2NHgyX3QgX19wMCkgewogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRwcV9zNjRfdigoaW50OHgxNl90KV9fcDAsIDM1KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ2NHgyX3QgdmN2dHBxX3M2NF9mNjQoZmxvYXQ2NHgyX3QgX19wMCkgewogIGZsb2F0NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRwcV9zNjRfdigoaW50OHgxNl90KV9fcmV2MCwgMzUpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgpfX2FpIGludDY0eDFfdCB2Y3Z0cF9zNjRfZjY0KGZsb2F0NjR4MV90IF9fcDApIHsKICBpbnQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0cF9zNjRfdigoaW50OHg4X3QpX19wMCwgMyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ2NHgyX3QgdmN2dHBxX3U2NF9mNjQoZmxvYXQ2NHgyX3QgX19wMCkgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkgX19idWlsdGluX25lb25fdmN2dHBxX3U2NF92KChpbnQ4eDE2X3QpX19wMCwgNTEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ2NHgyX3QgdmN2dHBxX3U2NF9mNjQoZmxvYXQ2NHgyX3QgX19wMCkgewogIGZsb2F0NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkgX19idWlsdGluX25lb25fdmN2dHBxX3U2NF92KChpbnQ4eDE2X3QpX19yZXYwLCA1MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCl9fYWkgdWludDY0eDFfdCB2Y3Z0cF91NjRfZjY0KGZsb2F0NjR4MV90IF9fcDApIHsKICB1aW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRwX3U2NF92KChpbnQ4eDhfdClfX3AwLCAxOSk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTh4OF90IHZyZWludGVycHJldF9wOF9wNjQocG9seTY0eDFfdCBfX3AwKSB7CiAgcG9seTh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk4eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTh4OF90IHZyZWludGVycHJldF9wOF9wMTYocG9seTE2eDRfdCBfX3AwKSB7CiAgcG9seTh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk4eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTh4OF90IHZyZWludGVycHJldF9wOF91OCh1aW50OHg4X3QgX19wMCkgewogIHBvbHk4eDhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHg4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHk4eDhfdCB2cmVpbnRlcnByZXRfcDhfdTMyKHVpbnQzMngyX3QgX19wMCkgewogIHBvbHk4eDhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHg4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHk4eDhfdCB2cmVpbnRlcnByZXRfcDhfdTY0KHVpbnQ2NHgxX3QgX19wMCkgewogIHBvbHk4eDhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHg4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHk4eDhfdCB2cmVpbnRlcnByZXRfcDhfdTE2KHVpbnQxNng0X3QgX19wMCkgewogIHBvbHk4eDhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHg4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHk4eDhfdCB2cmVpbnRlcnByZXRfcDhfczgoaW50OHg4X3QgX19wMCkgewogIHBvbHk4eDhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHg4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHk4eDhfdCB2cmVpbnRlcnByZXRfcDhfZjY0KGZsb2F0NjR4MV90IF9fcDApIHsKICBwb2x5OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTh4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBwb2x5OHg4X3QgdnJlaW50ZXJwcmV0X3A4X2YzMihmbG9hdDMyeDJfdCBfX3AwKSB7CiAgcG9seTh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk4eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTh4OF90IHZyZWludGVycHJldF9wOF9mMTYoZmxvYXQxNng0X3QgX19wMCkgewogIHBvbHk4eDhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHg4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHk4eDhfdCB2cmVpbnRlcnByZXRfcDhfczMyKGludDMyeDJfdCBfX3AwKSB7CiAgcG9seTh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk4eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTh4OF90IHZyZWludGVycHJldF9wOF9zNjQoaW50NjR4MV90IF9fcDApIHsKICBwb2x5OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTh4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBwb2x5OHg4X3QgdnJlaW50ZXJwcmV0X3A4X3MxNihpbnQxNng0X3QgX19wMCkgewogIHBvbHk4eDhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHg4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHk2NHgxX3QgdnJlaW50ZXJwcmV0X3A2NF9wOChwb2x5OHg4X3QgX19wMCkgewogIHBvbHk2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTY0eDFfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTY0eDFfdCB2cmVpbnRlcnByZXRfcDY0X3AxNihwb2x5MTZ4NF90IF9fcDApIHsKICBwb2x5NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk2NHgxX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHk2NHgxX3QgdnJlaW50ZXJwcmV0X3A2NF91OCh1aW50OHg4X3QgX19wMCkgewogIHBvbHk2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTY0eDFfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTY0eDFfdCB2cmVpbnRlcnByZXRfcDY0X3UzMih1aW50MzJ4Ml90IF9fcDApIHsKICBwb2x5NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk2NHgxX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHk2NHgxX3QgdnJlaW50ZXJwcmV0X3A2NF91NjQodWludDY0eDFfdCBfX3AwKSB7CiAgcG9seTY0eDFfdCBfX3JldDsKICBfX3JldCA9IChwb2x5NjR4MV90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBwb2x5NjR4MV90IHZyZWludGVycHJldF9wNjRfdTE2KHVpbnQxNng0X3QgX19wMCkgewogIHBvbHk2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTY0eDFfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTY0eDFfdCB2cmVpbnRlcnByZXRfcDY0X3M4KGludDh4OF90IF9fcDApIHsKICBwb2x5NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk2NHgxX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHk2NHgxX3QgdnJlaW50ZXJwcmV0X3A2NF9mNjQoZmxvYXQ2NHgxX3QgX19wMCkgewogIHBvbHk2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTY0eDFfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTY0eDFfdCB2cmVpbnRlcnByZXRfcDY0X2YzMihmbG9hdDMyeDJfdCBfX3AwKSB7CiAgcG9seTY0eDFfdCBfX3JldDsKICBfX3JldCA9IChwb2x5NjR4MV90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBwb2x5NjR4MV90IHZyZWludGVycHJldF9wNjRfZjE2KGZsb2F0MTZ4NF90IF9fcDApIHsKICBwb2x5NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk2NHgxX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHk2NHgxX3QgdnJlaW50ZXJwcmV0X3A2NF9zMzIoaW50MzJ4Ml90IF9fcDApIHsKICBwb2x5NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk2NHgxX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHk2NHgxX3QgdnJlaW50ZXJwcmV0X3A2NF9zNjQoaW50NjR4MV90IF9fcDApIHsKICBwb2x5NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk2NHgxX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHk2NHgxX3QgdnJlaW50ZXJwcmV0X3A2NF9zMTYoaW50MTZ4NF90IF9fcDApIHsKICBwb2x5NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk2NHgxX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHkxNng0X3QgdnJlaW50ZXJwcmV0X3AxNl9wOChwb2x5OHg4X3QgX19wMCkgewogIHBvbHkxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTE2eDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTE2eDRfdCB2cmVpbnRlcnByZXRfcDE2X3A2NChwb2x5NjR4MV90IF9fcDApIHsKICBwb2x5MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHkxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHkxNng0X3QgdnJlaW50ZXJwcmV0X3AxNl91OCh1aW50OHg4X3QgX19wMCkgewogIHBvbHkxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTE2eDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTE2eDRfdCB2cmVpbnRlcnByZXRfcDE2X3UzMih1aW50MzJ4Ml90IF9fcDApIHsKICBwb2x5MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHkxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHkxNng0X3QgdnJlaW50ZXJwcmV0X3AxNl91NjQodWludDY0eDFfdCBfX3AwKSB7CiAgcG9seTE2eDRfdCBfX3JldDsKICBfX3JldCA9IChwb2x5MTZ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBwb2x5MTZ4NF90IHZyZWludGVycHJldF9wMTZfdTE2KHVpbnQxNng0X3QgX19wMCkgewogIHBvbHkxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTE2eDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTE2eDRfdCB2cmVpbnRlcnByZXRfcDE2X3M4KGludDh4OF90IF9fcDApIHsKICBwb2x5MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHkxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHkxNng0X3QgdnJlaW50ZXJwcmV0X3AxNl9mNjQoZmxvYXQ2NHgxX3QgX19wMCkgewogIHBvbHkxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTE2eDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTE2eDRfdCB2cmVpbnRlcnByZXRfcDE2X2YzMihmbG9hdDMyeDJfdCBfX3AwKSB7CiAgcG9seTE2eDRfdCBfX3JldDsKICBfX3JldCA9IChwb2x5MTZ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBwb2x5MTZ4NF90IHZyZWludGVycHJldF9wMTZfZjE2KGZsb2F0MTZ4NF90IF9fcDApIHsKICBwb2x5MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHkxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHkxNng0X3QgdnJlaW50ZXJwcmV0X3AxNl9zMzIoaW50MzJ4Ml90IF9fcDApIHsKICBwb2x5MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHkxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHkxNng0X3QgdnJlaW50ZXJwcmV0X3AxNl9zNjQoaW50NjR4MV90IF9fcDApIHsKICBwb2x5MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHkxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHkxNng0X3QgdnJlaW50ZXJwcmV0X3AxNl9zMTYoaW50MTZ4NF90IF9fcDApIHsKICBwb2x5MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHkxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHk4eDE2X3QgdnJlaW50ZXJwcmV0cV9wOF9wMTI4KHBvbHkxMjhfdCBfX3AwKSB7CiAgcG9seTh4MTZfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHgxNl90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBwb2x5OHgxNl90IHZyZWludGVycHJldHFfcDhfcDY0KHBvbHk2NHgyX3QgX19wMCkgewogIHBvbHk4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTh4MTZfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTh4MTZfdCB2cmVpbnRlcnByZXRxX3A4X3AxNihwb2x5MTZ4OF90IF9fcDApIHsKICBwb2x5OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk4eDE2X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHk4eDE2X3QgdnJlaW50ZXJwcmV0cV9wOF91OCh1aW50OHgxNl90IF9fcDApIHsKICBwb2x5OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk4eDE2X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHk4eDE2X3QgdnJlaW50ZXJwcmV0cV9wOF91MzIodWludDMyeDRfdCBfX3AwKSB7CiAgcG9seTh4MTZfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHgxNl90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBwb2x5OHgxNl90IHZyZWludGVycHJldHFfcDhfdTY0KHVpbnQ2NHgyX3QgX19wMCkgewogIHBvbHk4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTh4MTZfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTh4MTZfdCB2cmVpbnRlcnByZXRxX3A4X3UxNih1aW50MTZ4OF90IF9fcDApIHsKICBwb2x5OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk4eDE2X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHk4eDE2X3QgdnJlaW50ZXJwcmV0cV9wOF9zOChpbnQ4eDE2X3QgX19wMCkgewogIHBvbHk4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTh4MTZfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTh4MTZfdCB2cmVpbnRlcnByZXRxX3A4X2Y2NChmbG9hdDY0eDJfdCBfX3AwKSB7CiAgcG9seTh4MTZfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHgxNl90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBwb2x5OHgxNl90IHZyZWludGVycHJldHFfcDhfZjMyKGZsb2F0MzJ4NF90IF9fcDApIHsKICBwb2x5OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk4eDE2X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHk4eDE2X3QgdnJlaW50ZXJwcmV0cV9wOF9mMTYoZmxvYXQxNng4X3QgX19wMCkgewogIHBvbHk4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTh4MTZfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTh4MTZfdCB2cmVpbnRlcnByZXRxX3A4X3MzMihpbnQzMng0X3QgX19wMCkgewogIHBvbHk4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTh4MTZfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTh4MTZfdCB2cmVpbnRlcnByZXRxX3A4X3M2NChpbnQ2NHgyX3QgX19wMCkgewogIHBvbHk4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTh4MTZfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTh4MTZfdCB2cmVpbnRlcnByZXRxX3A4X3MxNihpbnQxNng4X3QgX19wMCkgewogIHBvbHk4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTh4MTZfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTEyOF90IHZyZWludGVycHJldHFfcDEyOF9wOChwb2x5OHgxNl90IF9fcDApIHsKICBwb2x5MTI4X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTEyOF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBwb2x5MTI4X3QgdnJlaW50ZXJwcmV0cV9wMTI4X3A2NChwb2x5NjR4Ml90IF9fcDApIHsKICBwb2x5MTI4X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTEyOF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBwb2x5MTI4X3QgdnJlaW50ZXJwcmV0cV9wMTI4X3AxNihwb2x5MTZ4OF90IF9fcDApIHsKICBwb2x5MTI4X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTEyOF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBwb2x5MTI4X3QgdnJlaW50ZXJwcmV0cV9wMTI4X3U4KHVpbnQ4eDE2X3QgX19wMCkgewogIHBvbHkxMjhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5MTI4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHkxMjhfdCB2cmVpbnRlcnByZXRxX3AxMjhfdTMyKHVpbnQzMng0X3QgX19wMCkgewogIHBvbHkxMjhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5MTI4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHkxMjhfdCB2cmVpbnRlcnByZXRxX3AxMjhfdTY0KHVpbnQ2NHgyX3QgX19wMCkgewogIHBvbHkxMjhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5MTI4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHkxMjhfdCB2cmVpbnRlcnByZXRxX3AxMjhfdTE2KHVpbnQxNng4X3QgX19wMCkgewogIHBvbHkxMjhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5MTI4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHkxMjhfdCB2cmVpbnRlcnByZXRxX3AxMjhfczgoaW50OHgxNl90IF9fcDApIHsKICBwb2x5MTI4X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTEyOF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBwb2x5MTI4X3QgdnJlaW50ZXJwcmV0cV9wMTI4X2Y2NChmbG9hdDY0eDJfdCBfX3AwKSB7CiAgcG9seTEyOF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHkxMjhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTEyOF90IHZyZWludGVycHJldHFfcDEyOF9mMzIoZmxvYXQzMng0X3QgX19wMCkgewogIHBvbHkxMjhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5MTI4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHkxMjhfdCB2cmVpbnRlcnByZXRxX3AxMjhfZjE2KGZsb2F0MTZ4OF90IF9fcDApIHsKICBwb2x5MTI4X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTEyOF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBwb2x5MTI4X3QgdnJlaW50ZXJwcmV0cV9wMTI4X3MzMihpbnQzMng0X3QgX19wMCkgewogIHBvbHkxMjhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5MTI4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHkxMjhfdCB2cmVpbnRlcnByZXRxX3AxMjhfczY0KGludDY0eDJfdCBfX3AwKSB7CiAgcG9seTEyOF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHkxMjhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTEyOF90IHZyZWludGVycHJldHFfcDEyOF9zMTYoaW50MTZ4OF90IF9fcDApIHsKICBwb2x5MTI4X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTEyOF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBwb2x5NjR4Ml90IHZyZWludGVycHJldHFfcDY0X3A4KHBvbHk4eDE2X3QgX19wMCkgewogIHBvbHk2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTY0eDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTY0eDJfdCB2cmVpbnRlcnByZXRxX3A2NF9wMTI4KHBvbHkxMjhfdCBfX3AwKSB7CiAgcG9seTY0eDJfdCBfX3JldDsKICBfX3JldCA9IChwb2x5NjR4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBwb2x5NjR4Ml90IHZyZWludGVycHJldHFfcDY0X3AxNihwb2x5MTZ4OF90IF9fcDApIHsKICBwb2x5NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk2NHgyX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHk2NHgyX3QgdnJlaW50ZXJwcmV0cV9wNjRfdTgodWludDh4MTZfdCBfX3AwKSB7CiAgcG9seTY0eDJfdCBfX3JldDsKICBfX3JldCA9IChwb2x5NjR4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBwb2x5NjR4Ml90IHZyZWludGVycHJldHFfcDY0X3UzMih1aW50MzJ4NF90IF9fcDApIHsKICBwb2x5NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk2NHgyX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHk2NHgyX3QgdnJlaW50ZXJwcmV0cV9wNjRfdTY0KHVpbnQ2NHgyX3QgX19wMCkgewogIHBvbHk2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTY0eDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTY0eDJfdCB2cmVpbnRlcnByZXRxX3A2NF91MTYodWludDE2eDhfdCBfX3AwKSB7CiAgcG9seTY0eDJfdCBfX3JldDsKICBfX3JldCA9IChwb2x5NjR4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBwb2x5NjR4Ml90IHZyZWludGVycHJldHFfcDY0X3M4KGludDh4MTZfdCBfX3AwKSB7CiAgcG9seTY0eDJfdCBfX3JldDsKICBfX3JldCA9IChwb2x5NjR4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBwb2x5NjR4Ml90IHZyZWludGVycHJldHFfcDY0X2Y2NChmbG9hdDY0eDJfdCBfX3AwKSB7CiAgcG9seTY0eDJfdCBfX3JldDsKICBfX3JldCA9IChwb2x5NjR4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBwb2x5NjR4Ml90IHZyZWludGVycHJldHFfcDY0X2YzMihmbG9hdDMyeDRfdCBfX3AwKSB7CiAgcG9seTY0eDJfdCBfX3JldDsKICBfX3JldCA9IChwb2x5NjR4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBwb2x5NjR4Ml90IHZyZWludGVycHJldHFfcDY0X2YxNihmbG9hdDE2eDhfdCBfX3AwKSB7CiAgcG9seTY0eDJfdCBfX3JldDsKICBfX3JldCA9IChwb2x5NjR4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBwb2x5NjR4Ml90IHZyZWludGVycHJldHFfcDY0X3MzMihpbnQzMng0X3QgX19wMCkgewogIHBvbHk2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTY0eDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTY0eDJfdCB2cmVpbnRlcnByZXRxX3A2NF9zNjQoaW50NjR4Ml90IF9fcDApIHsKICBwb2x5NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk2NHgyX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHk2NHgyX3QgdnJlaW50ZXJwcmV0cV9wNjRfczE2KGludDE2eDhfdCBfX3AwKSB7CiAgcG9seTY0eDJfdCBfX3JldDsKICBfX3JldCA9IChwb2x5NjR4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBwb2x5MTZ4OF90IHZyZWludGVycHJldHFfcDE2X3A4KHBvbHk4eDE2X3QgX19wMCkgewogIHBvbHkxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTE2eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTE2eDhfdCB2cmVpbnRlcnByZXRxX3AxNl9wMTI4KHBvbHkxMjhfdCBfX3AwKSB7CiAgcG9seTE2eDhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBwb2x5MTZ4OF90IHZyZWludGVycHJldHFfcDE2X3A2NChwb2x5NjR4Ml90IF9fcDApIHsKICBwb2x5MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHkxNng4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHkxNng4X3QgdnJlaW50ZXJwcmV0cV9wMTZfdTgodWludDh4MTZfdCBfX3AwKSB7CiAgcG9seTE2eDhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBwb2x5MTZ4OF90IHZyZWludGVycHJldHFfcDE2X3UzMih1aW50MzJ4NF90IF9fcDApIHsKICBwb2x5MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHkxNng4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHkxNng4X3QgdnJlaW50ZXJwcmV0cV9wMTZfdTY0KHVpbnQ2NHgyX3QgX19wMCkgewogIHBvbHkxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTE2eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTE2eDhfdCB2cmVpbnRlcnByZXRxX3AxNl91MTYodWludDE2eDhfdCBfX3AwKSB7CiAgcG9seTE2eDhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBwb2x5MTZ4OF90IHZyZWludGVycHJldHFfcDE2X3M4KGludDh4MTZfdCBfX3AwKSB7CiAgcG9seTE2eDhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBwb2x5MTZ4OF90IHZyZWludGVycHJldHFfcDE2X2Y2NChmbG9hdDY0eDJfdCBfX3AwKSB7CiAgcG9seTE2eDhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBwb2x5MTZ4OF90IHZyZWludGVycHJldHFfcDE2X2YzMihmbG9hdDMyeDRfdCBfX3AwKSB7CiAgcG9seTE2eDhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBwb2x5MTZ4OF90IHZyZWludGVycHJldHFfcDE2X2YxNihmbG9hdDE2eDhfdCBfX3AwKSB7CiAgcG9seTE2eDhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBwb2x5MTZ4OF90IHZyZWludGVycHJldHFfcDE2X3MzMihpbnQzMng0X3QgX19wMCkgewogIHBvbHkxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTE2eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTE2eDhfdCB2cmVpbnRlcnByZXRxX3AxNl9zNjQoaW50NjR4Ml90IF9fcDApIHsKICBwb2x5MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHkxNng4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHkxNng4X3QgdnJlaW50ZXJwcmV0cV9wMTZfczE2KGludDE2eDhfdCBfX3AwKSB7CiAgcG9seTE2eDhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50OHgxNl90IHZyZWludGVycHJldHFfdThfcDgocG9seTh4MTZfdCBfX3AwKSB7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHgxNl90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50OHgxNl90IHZyZWludGVycHJldHFfdThfcDEyOChwb2x5MTI4X3QgX19wMCkgewogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDh4MTZfdCB2cmVpbnRlcnByZXRxX3U4X3A2NChwb2x5NjR4Ml90IF9fcDApIHsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ4eDE2X3QgdnJlaW50ZXJwcmV0cV91OF9wMTYocG9seTE2eDhfdCBfX3AwKSB7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHgxNl90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50OHgxNl90IHZyZWludGVycHJldHFfdThfdTMyKHVpbnQzMng0X3QgX19wMCkgewogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDh4MTZfdCB2cmVpbnRlcnByZXRxX3U4X3U2NCh1aW50NjR4Ml90IF9fcDApIHsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ4eDE2X3QgdnJlaW50ZXJwcmV0cV91OF91MTYodWludDE2eDhfdCBfX3AwKSB7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHgxNl90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50OHgxNl90IHZyZWludGVycHJldHFfdThfczgoaW50OHgxNl90IF9fcDApIHsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ4eDE2X3QgdnJlaW50ZXJwcmV0cV91OF9mNjQoZmxvYXQ2NHgyX3QgX19wMCkgewogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDh4MTZfdCB2cmVpbnRlcnByZXRxX3U4X2YzMihmbG9hdDMyeDRfdCBfX3AwKSB7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHgxNl90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50OHgxNl90IHZyZWludGVycHJldHFfdThfZjE2KGZsb2F0MTZ4OF90IF9fcDApIHsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ4eDE2X3QgdnJlaW50ZXJwcmV0cV91OF9zMzIoaW50MzJ4NF90IF9fcDApIHsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ4eDE2X3QgdnJlaW50ZXJwcmV0cV91OF9zNjQoaW50NjR4Ml90IF9fcDApIHsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ4eDE2X3QgdnJlaW50ZXJwcmV0cV91OF9zMTYoaW50MTZ4OF90IF9fcDApIHsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQzMng0X3QgdnJlaW50ZXJwcmV0cV91MzJfcDgocG9seTh4MTZfdCBfX3AwKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MzJ4NF90IHZyZWludGVycHJldHFfdTMyX3AxMjgocG9seTEyOF90IF9fcDApIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQzMng0X3QgdnJlaW50ZXJwcmV0cV91MzJfcDY0KHBvbHk2NHgyX3QgX19wMCkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDMyeDRfdCB2cmVpbnRlcnByZXRxX3UzMl9wMTYocG9seTE2eDhfdCBfX3AwKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MzJ4NF90IHZyZWludGVycHJldHFfdTMyX3U4KHVpbnQ4eDE2X3QgX19wMCkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDMyeDRfdCB2cmVpbnRlcnByZXRxX3UzMl91NjQodWludDY0eDJfdCBfX3AwKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MzJ4NF90IHZyZWludGVycHJldHFfdTMyX3UxNih1aW50MTZ4OF90IF9fcDApIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQzMng0X3QgdnJlaW50ZXJwcmV0cV91MzJfczgoaW50OHgxNl90IF9fcDApIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQzMng0X3QgdnJlaW50ZXJwcmV0cV91MzJfZjY0KGZsb2F0NjR4Ml90IF9fcDApIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQzMng0X3QgdnJlaW50ZXJwcmV0cV91MzJfZjMyKGZsb2F0MzJ4NF90IF9fcDApIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQzMng0X3QgdnJlaW50ZXJwcmV0cV91MzJfZjE2KGZsb2F0MTZ4OF90IF9fcDApIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQzMng0X3QgdnJlaW50ZXJwcmV0cV91MzJfczMyKGludDMyeDRfdCBfX3AwKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MzJ4NF90IHZyZWludGVycHJldHFfdTMyX3M2NChpbnQ2NHgyX3QgX19wMCkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDMyeDRfdCB2cmVpbnRlcnByZXRxX3UzMl9zMTYoaW50MTZ4OF90IF9fcDApIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ2NHgyX3QgdnJlaW50ZXJwcmV0cV91NjRfcDgocG9seTh4MTZfdCBfX3AwKSB7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50NjR4Ml90IHZyZWludGVycHJldHFfdTY0X3AxMjgocG9seTEyOF90IF9fcDApIHsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ2NHgyX3QgdnJlaW50ZXJwcmV0cV91NjRfcDY0KHBvbHk2NHgyX3QgX19wMCkgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDY0eDJfdCB2cmVpbnRlcnByZXRxX3U2NF9wMTYocG9seTE2eDhfdCBfX3AwKSB7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50NjR4Ml90IHZyZWludGVycHJldHFfdTY0X3U4KHVpbnQ4eDE2X3QgX19wMCkgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDY0eDJfdCB2cmVpbnRlcnByZXRxX3U2NF91MzIodWludDMyeDRfdCBfX3AwKSB7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50NjR4Ml90IHZyZWludGVycHJldHFfdTY0X3UxNih1aW50MTZ4OF90IF9fcDApIHsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ2NHgyX3QgdnJlaW50ZXJwcmV0cV91NjRfczgoaW50OHgxNl90IF9fcDApIHsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ2NHgyX3QgdnJlaW50ZXJwcmV0cV91NjRfZjY0KGZsb2F0NjR4Ml90IF9fcDApIHsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ2NHgyX3QgdnJlaW50ZXJwcmV0cV91NjRfZjMyKGZsb2F0MzJ4NF90IF9fcDApIHsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ2NHgyX3QgdnJlaW50ZXJwcmV0cV91NjRfZjE2KGZsb2F0MTZ4OF90IF9fcDApIHsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ2NHgyX3QgdnJlaW50ZXJwcmV0cV91NjRfczMyKGludDMyeDRfdCBfX3AwKSB7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50NjR4Ml90IHZyZWludGVycHJldHFfdTY0X3M2NChpbnQ2NHgyX3QgX19wMCkgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDY0eDJfdCB2cmVpbnRlcnByZXRxX3U2NF9zMTYoaW50MTZ4OF90IF9fcDApIHsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQxNng4X3QgdnJlaW50ZXJwcmV0cV91MTZfcDgocG9seTh4MTZfdCBfX3AwKSB7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MTZ4OF90IHZyZWludGVycHJldHFfdTE2X3AxMjgocG9seTEyOF90IF9fcDApIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQxNng4X3QgdnJlaW50ZXJwcmV0cV91MTZfcDY0KHBvbHk2NHgyX3QgX19wMCkgewogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDE2eDhfdCB2cmVpbnRlcnByZXRxX3UxNl9wMTYocG9seTE2eDhfdCBfX3AwKSB7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MTZ4OF90IHZyZWludGVycHJldHFfdTE2X3U4KHVpbnQ4eDE2X3QgX19wMCkgewogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDE2eDhfdCB2cmVpbnRlcnByZXRxX3UxNl91MzIodWludDMyeDRfdCBfX3AwKSB7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MTZ4OF90IHZyZWludGVycHJldHFfdTE2X3U2NCh1aW50NjR4Ml90IF9fcDApIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQxNng4X3QgdnJlaW50ZXJwcmV0cV91MTZfczgoaW50OHgxNl90IF9fcDApIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQxNng4X3QgdnJlaW50ZXJwcmV0cV91MTZfZjY0KGZsb2F0NjR4Ml90IF9fcDApIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQxNng4X3QgdnJlaW50ZXJwcmV0cV91MTZfZjMyKGZsb2F0MzJ4NF90IF9fcDApIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQxNng4X3QgdnJlaW50ZXJwcmV0cV91MTZfZjE2KGZsb2F0MTZ4OF90IF9fcDApIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQxNng4X3QgdnJlaW50ZXJwcmV0cV91MTZfczMyKGludDMyeDRfdCBfX3AwKSB7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MTZ4OF90IHZyZWludGVycHJldHFfdTE2X3M2NChpbnQ2NHgyX3QgX19wMCkgewogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDE2eDhfdCB2cmVpbnRlcnByZXRxX3UxNl9zMTYoaW50MTZ4OF90IF9fcDApIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDh4MTZfdCB2cmVpbnRlcnByZXRxX3M4X3A4KHBvbHk4eDE2X3QgX19wMCkgewogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDE2X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDh4MTZfdCB2cmVpbnRlcnByZXRxX3M4X3AxMjgocG9seTEyOF90IF9fcDApIHsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHgxNl90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQ4eDE2X3QgdnJlaW50ZXJwcmV0cV9zOF9wNjQocG9seTY0eDJfdCBfX3AwKSB7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4MTZfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50OHgxNl90IHZyZWludGVycHJldHFfczhfcDE2KHBvbHkxNng4X3QgX19wMCkgewogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDE2X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDh4MTZfdCB2cmVpbnRlcnByZXRxX3M4X3U4KHVpbnQ4eDE2X3QgX19wMCkgewogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDE2X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDh4MTZfdCB2cmVpbnRlcnByZXRxX3M4X3UzMih1aW50MzJ4NF90IF9fcDApIHsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHgxNl90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQ4eDE2X3QgdnJlaW50ZXJwcmV0cV9zOF91NjQodWludDY0eDJfdCBfX3AwKSB7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4MTZfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50OHgxNl90IHZyZWludGVycHJldHFfczhfdTE2KHVpbnQxNng4X3QgX19wMCkgewogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDE2X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDh4MTZfdCB2cmVpbnRlcnByZXRxX3M4X2Y2NChmbG9hdDY0eDJfdCBfX3AwKSB7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4MTZfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50OHgxNl90IHZyZWludGVycHJldHFfczhfZjMyKGZsb2F0MzJ4NF90IF9fcDApIHsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHgxNl90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQ4eDE2X3QgdnJlaW50ZXJwcmV0cV9zOF9mMTYoZmxvYXQxNng4X3QgX19wMCkgewogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDE2X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDh4MTZfdCB2cmVpbnRlcnByZXRxX3M4X3MzMihpbnQzMng0X3QgX19wMCkgewogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDE2X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDh4MTZfdCB2cmVpbnRlcnByZXRxX3M4X3M2NChpbnQ2NHgyX3QgX19wMCkgewogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDE2X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDh4MTZfdCB2cmVpbnRlcnByZXRxX3M4X3MxNihpbnQxNng4X3QgX19wMCkgewogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDE2X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0NjR4Ml90IHZyZWludGVycHJldHFfZjY0X3A4KHBvbHk4eDE2X3QgX19wMCkgewogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDY0eDJfdCB2cmVpbnRlcnByZXRxX2Y2NF9wMTI4KHBvbHkxMjhfdCBfX3AwKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQ2NHgyX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0NjR4Ml90IHZyZWludGVycHJldHFfZjY0X3A2NChwb2x5NjR4Ml90IF9fcDApIHsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQ2NHgyX3QgdnJlaW50ZXJwcmV0cV9mNjRfcDE2KHBvbHkxNng4X3QgX19wMCkgewogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDY0eDJfdCB2cmVpbnRlcnByZXRxX2Y2NF91OCh1aW50OHgxNl90IF9fcDApIHsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQ2NHgyX3QgdnJlaW50ZXJwcmV0cV9mNjRfdTMyKHVpbnQzMng0X3QgX19wMCkgewogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDY0eDJfdCB2cmVpbnRlcnByZXRxX2Y2NF91NjQodWludDY0eDJfdCBfX3AwKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQ2NHgyX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0NjR4Ml90IHZyZWludGVycHJldHFfZjY0X3UxNih1aW50MTZ4OF90IF9fcDApIHsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQ2NHgyX3QgdnJlaW50ZXJwcmV0cV9mNjRfczgoaW50OHgxNl90IF9fcDApIHsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQ2NHgyX3QgdnJlaW50ZXJwcmV0cV9mNjRfZjMyKGZsb2F0MzJ4NF90IF9fcDApIHsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQ2NHgyX3QgdnJlaW50ZXJwcmV0cV9mNjRfZjE2KGZsb2F0MTZ4OF90IF9fcDApIHsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQ2NHgyX3QgdnJlaW50ZXJwcmV0cV9mNjRfczMyKGludDMyeDRfdCBfX3AwKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQ2NHgyX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0NjR4Ml90IHZyZWludGVycHJldHFfZjY0X3M2NChpbnQ2NHgyX3QgX19wMCkgewogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDY0eDJfdCB2cmVpbnRlcnByZXRxX2Y2NF9zMTYoaW50MTZ4OF90IF9fcDApIHsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQzMng0X3QgdnJlaW50ZXJwcmV0cV9mMzJfcDgocG9seTh4MTZfdCBfX3AwKSB7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MzJ4NF90IHZyZWludGVycHJldHFfZjMyX3AxMjgocG9seTEyOF90IF9fcDApIHsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQzMng0X3QgdnJlaW50ZXJwcmV0cV9mMzJfcDY0KHBvbHk2NHgyX3QgX19wMCkgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDMyeDRfdCB2cmVpbnRlcnByZXRxX2YzMl9wMTYocG9seTE2eDhfdCBfX3AwKSB7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MzJ4NF90IHZyZWludGVycHJldHFfZjMyX3U4KHVpbnQ4eDE2X3QgX19wMCkgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDMyeDRfdCB2cmVpbnRlcnByZXRxX2YzMl91MzIodWludDMyeDRfdCBfX3AwKSB7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MzJ4NF90IHZyZWludGVycHJldHFfZjMyX3U2NCh1aW50NjR4Ml90IF9fcDApIHsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQzMng0X3QgdnJlaW50ZXJwcmV0cV9mMzJfdTE2KHVpbnQxNng4X3QgX19wMCkgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDMyeDRfdCB2cmVpbnRlcnByZXRxX2YzMl9zOChpbnQ4eDE2X3QgX19wMCkgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDMyeDRfdCB2cmVpbnRlcnByZXRxX2YzMl9mNjQoZmxvYXQ2NHgyX3QgX19wMCkgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDMyeDRfdCB2cmVpbnRlcnByZXRxX2YzMl9mMTYoZmxvYXQxNng4X3QgX19wMCkgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDMyeDRfdCB2cmVpbnRlcnByZXRxX2YzMl9zMzIoaW50MzJ4NF90IF9fcDApIHsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQzMng0X3QgdnJlaW50ZXJwcmV0cV9mMzJfczY0KGludDY0eDJfdCBfX3AwKSB7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MzJ4NF90IHZyZWludGVycHJldHFfZjMyX3MxNihpbnQxNng4X3QgX19wMCkgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDE2eDhfdCB2cmVpbnRlcnByZXRxX2YxNl9wOChwb2x5OHgxNl90IF9fcDApIHsKICBmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQxNng4X3QgdnJlaW50ZXJwcmV0cV9mMTZfcDEyOChwb2x5MTI4X3QgX19wMCkgewogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDE2eDhfdCB2cmVpbnRlcnByZXRxX2YxNl9wNjQocG9seTY0eDJfdCBfX3AwKSB7CiAgZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MTZ4OF90IHZyZWludGVycHJldHFfZjE2X3AxNihwb2x5MTZ4OF90IF9fcDApIHsKICBmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQxNng4X3QgdnJlaW50ZXJwcmV0cV9mMTZfdTgodWludDh4MTZfdCBfX3AwKSB7CiAgZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MTZ4OF90IHZyZWludGVycHJldHFfZjE2X3UzMih1aW50MzJ4NF90IF9fcDApIHsKICBmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQxNng4X3QgdnJlaW50ZXJwcmV0cV9mMTZfdTY0KHVpbnQ2NHgyX3QgX19wMCkgewogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDE2eDhfdCB2cmVpbnRlcnByZXRxX2YxNl91MTYodWludDE2eDhfdCBfX3AwKSB7CiAgZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MTZ4OF90IHZyZWludGVycHJldHFfZjE2X3M4KGludDh4MTZfdCBfX3AwKSB7CiAgZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MTZ4OF90IHZyZWludGVycHJldHFfZjE2X2Y2NChmbG9hdDY0eDJfdCBfX3AwKSB7CiAgZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MTZ4OF90IHZyZWludGVycHJldHFfZjE2X2YzMihmbG9hdDMyeDRfdCBfX3AwKSB7CiAgZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MTZ4OF90IHZyZWludGVycHJldHFfZjE2X3MzMihpbnQzMng0X3QgX19wMCkgewogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDE2eDhfdCB2cmVpbnRlcnByZXRxX2YxNl9zNjQoaW50NjR4Ml90IF9fcDApIHsKICBmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQxNng4X3QgdnJlaW50ZXJwcmV0cV9mMTZfczE2KGludDE2eDhfdCBfX3AwKSB7CiAgZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDMyeDRfdCB2cmVpbnRlcnByZXRxX3MzMl9wOChwb2x5OHgxNl90IF9fcDApIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQzMng0X3QgdnJlaW50ZXJwcmV0cV9zMzJfcDEyOChwb2x5MTI4X3QgX19wMCkgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDMyeDRfdCB2cmVpbnRlcnByZXRxX3MzMl9wNjQocG9seTY0eDJfdCBfX3AwKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MzJ4NF90IHZyZWludGVycHJldHFfczMyX3AxNihwb2x5MTZ4OF90IF9fcDApIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQzMng0X3QgdnJlaW50ZXJwcmV0cV9zMzJfdTgodWludDh4MTZfdCBfX3AwKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MzJ4NF90IHZyZWludGVycHJldHFfczMyX3UzMih1aW50MzJ4NF90IF9fcDApIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQzMng0X3QgdnJlaW50ZXJwcmV0cV9zMzJfdTY0KHVpbnQ2NHgyX3QgX19wMCkgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDMyeDRfdCB2cmVpbnRlcnByZXRxX3MzMl91MTYodWludDE2eDhfdCBfX3AwKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MzJ4NF90IHZyZWludGVycHJldHFfczMyX3M4KGludDh4MTZfdCBfX3AwKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MzJ4NF90IHZyZWludGVycHJldHFfczMyX2Y2NChmbG9hdDY0eDJfdCBfX3AwKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MzJ4NF90IHZyZWludGVycHJldHFfczMyX2YzMihmbG9hdDMyeDRfdCBfX3AwKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MzJ4NF90IHZyZWludGVycHJldHFfczMyX2YxNihmbG9hdDE2eDhfdCBfX3AwKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MzJ4NF90IHZyZWludGVycHJldHFfczMyX3M2NChpbnQ2NHgyX3QgX19wMCkgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDMyeDRfdCB2cmVpbnRlcnByZXRxX3MzMl9zMTYoaW50MTZ4OF90IF9fcDApIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQ2NHgyX3QgdnJlaW50ZXJwcmV0cV9zNjRfcDgocG9seTh4MTZfdCBfX3AwKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50NjR4Ml90IHZyZWludGVycHJldHFfczY0X3AxMjgocG9seTEyOF90IF9fcDApIHsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50NjR4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQ2NHgyX3QgdnJlaW50ZXJwcmV0cV9zNjRfcDY0KHBvbHk2NHgyX3QgX19wMCkgewogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NHgyX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDY0eDJfdCB2cmVpbnRlcnByZXRxX3M2NF9wMTYocG9seTE2eDhfdCBfX3AwKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50NjR4Ml90IHZyZWludGVycHJldHFfczY0X3U4KHVpbnQ4eDE2X3QgX19wMCkgewogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NHgyX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDY0eDJfdCB2cmVpbnRlcnByZXRxX3M2NF91MzIodWludDMyeDRfdCBfX3AwKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50NjR4Ml90IHZyZWludGVycHJldHFfczY0X3U2NCh1aW50NjR4Ml90IF9fcDApIHsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50NjR4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQ2NHgyX3QgdnJlaW50ZXJwcmV0cV9zNjRfdTE2KHVpbnQxNng4X3QgX19wMCkgewogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NHgyX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDY0eDJfdCB2cmVpbnRlcnByZXRxX3M2NF9zOChpbnQ4eDE2X3QgX19wMCkgewogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NHgyX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDY0eDJfdCB2cmVpbnRlcnByZXRxX3M2NF9mNjQoZmxvYXQ2NHgyX3QgX19wMCkgewogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NHgyX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDY0eDJfdCB2cmVpbnRlcnByZXRxX3M2NF9mMzIoZmxvYXQzMng0X3QgX19wMCkgewogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NHgyX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDY0eDJfdCB2cmVpbnRlcnByZXRxX3M2NF9mMTYoZmxvYXQxNng4X3QgX19wMCkgewogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NHgyX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDY0eDJfdCB2cmVpbnRlcnByZXRxX3M2NF9zMzIoaW50MzJ4NF90IF9fcDApIHsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50NjR4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQ2NHgyX3QgdnJlaW50ZXJwcmV0cV9zNjRfczE2KGludDE2eDhfdCBfX3AwKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MTZ4OF90IHZyZWludGVycHJldHFfczE2X3A4KHBvbHk4eDE2X3QgX19wMCkgewogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDE2eDhfdCB2cmVpbnRlcnByZXRxX3MxNl9wMTI4KHBvbHkxMjhfdCBfX3AwKSB7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MTZ4OF90IHZyZWludGVycHJldHFfczE2X3A2NChwb2x5NjR4Ml90IF9fcDApIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQxNng4X3QgdnJlaW50ZXJwcmV0cV9zMTZfcDE2KHBvbHkxNng4X3QgX19wMCkgewogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDE2eDhfdCB2cmVpbnRlcnByZXRxX3MxNl91OCh1aW50OHgxNl90IF9fcDApIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQxNng4X3QgdnJlaW50ZXJwcmV0cV9zMTZfdTMyKHVpbnQzMng0X3QgX19wMCkgewogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDE2eDhfdCB2cmVpbnRlcnByZXRxX3MxNl91NjQodWludDY0eDJfdCBfX3AwKSB7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MTZ4OF90IHZyZWludGVycHJldHFfczE2X3UxNih1aW50MTZ4OF90IF9fcDApIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQxNng4X3QgdnJlaW50ZXJwcmV0cV9zMTZfczgoaW50OHgxNl90IF9fcDApIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQxNng4X3QgdnJlaW50ZXJwcmV0cV9zMTZfZjY0KGZsb2F0NjR4Ml90IF9fcDApIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQxNng4X3QgdnJlaW50ZXJwcmV0cV9zMTZfZjMyKGZsb2F0MzJ4NF90IF9fcDApIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQxNng4X3QgdnJlaW50ZXJwcmV0cV9zMTZfZjE2KGZsb2F0MTZ4OF90IF9fcDApIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQxNng4X3QgdnJlaW50ZXJwcmV0cV9zMTZfczMyKGludDMyeDRfdCBfX3AwKSB7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MTZ4OF90IHZyZWludGVycHJldHFfczE2X3M2NChpbnQ2NHgyX3QgX19wMCkgewogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ4eDhfdCB2cmVpbnRlcnByZXRfdThfcDgocG9seTh4OF90IF9fcDApIHsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50OHg4X3QgdnJlaW50ZXJwcmV0X3U4X3A2NChwb2x5NjR4MV90IF9fcDApIHsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50OHg4X3QgdnJlaW50ZXJwcmV0X3U4X3AxNihwb2x5MTZ4NF90IF9fcDApIHsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50OHg4X3QgdnJlaW50ZXJwcmV0X3U4X3UzMih1aW50MzJ4Ml90IF9fcDApIHsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50OHg4X3QgdnJlaW50ZXJwcmV0X3U4X3U2NCh1aW50NjR4MV90IF9fcDApIHsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50OHg4X3QgdnJlaW50ZXJwcmV0X3U4X3UxNih1aW50MTZ4NF90IF9fcDApIHsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50OHg4X3QgdnJlaW50ZXJwcmV0X3U4X3M4KGludDh4OF90IF9fcDApIHsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50OHg4X3QgdnJlaW50ZXJwcmV0X3U4X2Y2NChmbG9hdDY0eDFfdCBfX3AwKSB7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDh4OF90IHZyZWludGVycHJldF91OF9mMzIoZmxvYXQzMngyX3QgX19wMCkgewogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ4eDhfdCB2cmVpbnRlcnByZXRfdThfZjE2KGZsb2F0MTZ4NF90IF9fcDApIHsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50OHg4X3QgdnJlaW50ZXJwcmV0X3U4X3MzMihpbnQzMngyX3QgX19wMCkgewogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ4eDhfdCB2cmVpbnRlcnByZXRfdThfczY0KGludDY0eDFfdCBfX3AwKSB7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDh4OF90IHZyZWludGVycHJldF91OF9zMTYoaW50MTZ4NF90IF9fcDApIHsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MzJ4Ml90IHZyZWludGVycHJldF91MzJfcDgocG9seTh4OF90IF9fcDApIHsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMngyX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQzMngyX3QgdnJlaW50ZXJwcmV0X3UzMl9wNjQocG9seTY0eDFfdCBfX3AwKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MzJ4Ml90IHZyZWludGVycHJldF91MzJfcDE2KHBvbHkxNng0X3QgX19wMCkgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDMyeDJfdCB2cmVpbnRlcnByZXRfdTMyX3U4KHVpbnQ4eDhfdCBfX3AwKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MzJ4Ml90IHZyZWludGVycHJldF91MzJfdTY0KHVpbnQ2NHgxX3QgX19wMCkgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDMyeDJfdCB2cmVpbnRlcnByZXRfdTMyX3UxNih1aW50MTZ4NF90IF9fcDApIHsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMngyX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQzMngyX3QgdnJlaW50ZXJwcmV0X3UzMl9zOChpbnQ4eDhfdCBfX3AwKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MzJ4Ml90IHZyZWludGVycHJldF91MzJfZjY0KGZsb2F0NjR4MV90IF9fcDApIHsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMngyX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQzMngyX3QgdnJlaW50ZXJwcmV0X3UzMl9mMzIoZmxvYXQzMngyX3QgX19wMCkgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDMyeDJfdCB2cmVpbnRlcnByZXRfdTMyX2YxNihmbG9hdDE2eDRfdCBfX3AwKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MzJ4Ml90IHZyZWludGVycHJldF91MzJfczMyKGludDMyeDJfdCBfX3AwKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MzJ4Ml90IHZyZWludGVycHJldF91MzJfczY0KGludDY0eDFfdCBfX3AwKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MzJ4Ml90IHZyZWludGVycHJldF91MzJfczE2KGludDE2eDRfdCBfX3AwKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50NjR4MV90IHZyZWludGVycHJldF91NjRfcDgocG9seTh4OF90IF9fcDApIHsKICB1aW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgxX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ2NHgxX3QgdnJlaW50ZXJwcmV0X3U2NF9wNjQocG9seTY0eDFfdCBfX3AwKSB7CiAgdWludDY0eDFfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4MV90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50NjR4MV90IHZyZWludGVycHJldF91NjRfcDE2KHBvbHkxNng0X3QgX19wMCkgewogIHVpbnQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDFfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDY0eDFfdCB2cmVpbnRlcnByZXRfdTY0X3U4KHVpbnQ4eDhfdCBfX3AwKSB7CiAgdWludDY0eDFfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4MV90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50NjR4MV90IHZyZWludGVycHJldF91NjRfdTMyKHVpbnQzMngyX3QgX19wMCkgewogIHVpbnQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDFfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDY0eDFfdCB2cmVpbnRlcnByZXRfdTY0X3UxNih1aW50MTZ4NF90IF9fcDApIHsKICB1aW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgxX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ2NHgxX3QgdnJlaW50ZXJwcmV0X3U2NF9zOChpbnQ4eDhfdCBfX3AwKSB7CiAgdWludDY0eDFfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4MV90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50NjR4MV90IHZyZWludGVycHJldF91NjRfZjY0KGZsb2F0NjR4MV90IF9fcDApIHsKICB1aW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgxX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ2NHgxX3QgdnJlaW50ZXJwcmV0X3U2NF9mMzIoZmxvYXQzMngyX3QgX19wMCkgewogIHVpbnQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDFfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDY0eDFfdCB2cmVpbnRlcnByZXRfdTY0X2YxNihmbG9hdDE2eDRfdCBfX3AwKSB7CiAgdWludDY0eDFfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4MV90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50NjR4MV90IHZyZWludGVycHJldF91NjRfczMyKGludDMyeDJfdCBfX3AwKSB7CiAgdWludDY0eDFfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4MV90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50NjR4MV90IHZyZWludGVycHJldF91NjRfczY0KGludDY0eDFfdCBfX3AwKSB7CiAgdWludDY0eDFfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4MV90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50NjR4MV90IHZyZWludGVycHJldF91NjRfczE2KGludDE2eDRfdCBfX3AwKSB7CiAgdWludDY0eDFfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4MV90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MTZ4NF90IHZyZWludGVycHJldF91MTZfcDgocG9seTh4OF90IF9fcDApIHsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQxNng0X3QgdnJlaW50ZXJwcmV0X3UxNl9wNjQocG9seTY0eDFfdCBfX3AwKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MTZ4NF90IHZyZWludGVycHJldF91MTZfcDE2KHBvbHkxNng0X3QgX19wMCkgewogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDE2eDRfdCB2cmVpbnRlcnByZXRfdTE2X3U4KHVpbnQ4eDhfdCBfX3AwKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MTZ4NF90IHZyZWludGVycHJldF91MTZfdTMyKHVpbnQzMngyX3QgX19wMCkgewogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDE2eDRfdCB2cmVpbnRlcnByZXRfdTE2X3U2NCh1aW50NjR4MV90IF9fcDApIHsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQxNng0X3QgdnJlaW50ZXJwcmV0X3UxNl9zOChpbnQ4eDhfdCBfX3AwKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MTZ4NF90IHZyZWludGVycHJldF91MTZfZjY0KGZsb2F0NjR4MV90IF9fcDApIHsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQxNng0X3QgdnJlaW50ZXJwcmV0X3UxNl9mMzIoZmxvYXQzMngyX3QgX19wMCkgewogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDE2eDRfdCB2cmVpbnRlcnByZXRfdTE2X2YxNihmbG9hdDE2eDRfdCBfX3AwKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MTZ4NF90IHZyZWludGVycHJldF91MTZfczMyKGludDMyeDJfdCBfX3AwKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MTZ4NF90IHZyZWludGVycHJldF91MTZfczY0KGludDY0eDFfdCBfX3AwKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MTZ4NF90IHZyZWludGVycHJldF91MTZfczE2KGludDE2eDRfdCBfX3AwKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQ4eDhfdCB2cmVpbnRlcnByZXRfczhfcDgocG9seTh4OF90IF9fcDApIHsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50OHg4X3QgdnJlaW50ZXJwcmV0X3M4X3A2NChwb2x5NjR4MV90IF9fcDApIHsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50OHg4X3QgdnJlaW50ZXJwcmV0X3M4X3AxNihwb2x5MTZ4NF90IF9fcDApIHsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50OHg4X3QgdnJlaW50ZXJwcmV0X3M4X3U4KHVpbnQ4eDhfdCBfX3AwKSB7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDh4OF90IHZyZWludGVycHJldF9zOF91MzIodWludDMyeDJfdCBfX3AwKSB7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDh4OF90IHZyZWludGVycHJldF9zOF91NjQodWludDY0eDFfdCBfX3AwKSB7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDh4OF90IHZyZWludGVycHJldF9zOF91MTYodWludDE2eDRfdCBfX3AwKSB7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDh4OF90IHZyZWludGVycHJldF9zOF9mNjQoZmxvYXQ2NHgxX3QgX19wMCkgewogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQ4eDhfdCB2cmVpbnRlcnByZXRfczhfZjMyKGZsb2F0MzJ4Ml90IF9fcDApIHsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50OHg4X3QgdnJlaW50ZXJwcmV0X3M4X2YxNihmbG9hdDE2eDRfdCBfX3AwKSB7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDh4OF90IHZyZWludGVycHJldF9zOF9zMzIoaW50MzJ4Ml90IF9fcDApIHsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50OHg4X3QgdnJlaW50ZXJwcmV0X3M4X3M2NChpbnQ2NHgxX3QgX19wMCkgewogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQ4eDhfdCB2cmVpbnRlcnByZXRfczhfczE2KGludDE2eDRfdCBfX3AwKSB7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0NjR4MV90IHZyZWludGVycHJldF9mNjRfcDgocG9seTh4OF90IF9fcDApIHsKICBmbG9hdDY0eDFfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDFfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQ2NHgxX3QgdnJlaW50ZXJwcmV0X2Y2NF9wNjQocG9seTY0eDFfdCBfX3AwKSB7CiAgZmxvYXQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQ2NHgxX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0NjR4MV90IHZyZWludGVycHJldF9mNjRfcDE2KHBvbHkxNng0X3QgX19wMCkgewogIGZsb2F0NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4MV90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDY0eDFfdCB2cmVpbnRlcnByZXRfZjY0X3U4KHVpbnQ4eDhfdCBfX3AwKSB7CiAgZmxvYXQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQ2NHgxX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0NjR4MV90IHZyZWludGVycHJldF9mNjRfdTMyKHVpbnQzMngyX3QgX19wMCkgewogIGZsb2F0NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4MV90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDY0eDFfdCB2cmVpbnRlcnByZXRfZjY0X3U2NCh1aW50NjR4MV90IF9fcDApIHsKICBmbG9hdDY0eDFfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDFfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQ2NHgxX3QgdnJlaW50ZXJwcmV0X2Y2NF91MTYodWludDE2eDRfdCBfX3AwKSB7CiAgZmxvYXQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQ2NHgxX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0NjR4MV90IHZyZWludGVycHJldF9mNjRfczgoaW50OHg4X3QgX19wMCkgewogIGZsb2F0NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4MV90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDY0eDFfdCB2cmVpbnRlcnByZXRfZjY0X2YzMihmbG9hdDMyeDJfdCBfX3AwKSB7CiAgZmxvYXQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQ2NHgxX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0NjR4MV90IHZyZWludGVycHJldF9mNjRfZjE2KGZsb2F0MTZ4NF90IF9fcDApIHsKICBmbG9hdDY0eDFfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDFfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQ2NHgxX3QgdnJlaW50ZXJwcmV0X2Y2NF9zMzIoaW50MzJ4Ml90IF9fcDApIHsKICBmbG9hdDY0eDFfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDFfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQ2NHgxX3QgdnJlaW50ZXJwcmV0X2Y2NF9zNjQoaW50NjR4MV90IF9fcDApIHsKICBmbG9hdDY0eDFfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDFfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQ2NHgxX3QgdnJlaW50ZXJwcmV0X2Y2NF9zMTYoaW50MTZ4NF90IF9fcDApIHsKICBmbG9hdDY0eDFfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDFfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQzMngyX3QgdnJlaW50ZXJwcmV0X2YzMl9wOChwb2x5OHg4X3QgX19wMCkgewogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDMyeDJfdCB2cmVpbnRlcnByZXRfZjMyX3A2NChwb2x5NjR4MV90IF9fcDApIHsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQzMngyX3QgdnJlaW50ZXJwcmV0X2YzMl9wMTYocG9seTE2eDRfdCBfX3AwKSB7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMngyX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MzJ4Ml90IHZyZWludGVycHJldF9mMzJfdTgodWludDh4OF90IF9fcDApIHsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQzMngyX3QgdnJlaW50ZXJwcmV0X2YzMl91MzIodWludDMyeDJfdCBfX3AwKSB7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMngyX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MzJ4Ml90IHZyZWludGVycHJldF9mMzJfdTY0KHVpbnQ2NHgxX3QgX19wMCkgewogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDMyeDJfdCB2cmVpbnRlcnByZXRfZjMyX3UxNih1aW50MTZ4NF90IF9fcDApIHsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQzMngyX3QgdnJlaW50ZXJwcmV0X2YzMl9zOChpbnQ4eDhfdCBfX3AwKSB7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMngyX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MzJ4Ml90IHZyZWludGVycHJldF9mMzJfZjY0KGZsb2F0NjR4MV90IF9fcDApIHsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQzMngyX3QgdnJlaW50ZXJwcmV0X2YzMl9mMTYoZmxvYXQxNng0X3QgX19wMCkgewogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDMyeDJfdCB2cmVpbnRlcnByZXRfZjMyX3MzMihpbnQzMngyX3QgX19wMCkgewogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDMyeDJfdCB2cmVpbnRlcnByZXRfZjMyX3M2NChpbnQ2NHgxX3QgX19wMCkgewogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDMyeDJfdCB2cmVpbnRlcnByZXRfZjMyX3MxNihpbnQxNng0X3QgX19wMCkgewogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDE2eDRfdCB2cmVpbnRlcnByZXRfZjE2X3A4KHBvbHk4eDhfdCBfX3AwKSB7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MTZ4NF90IHZyZWludGVycHJldF9mMTZfcDY0KHBvbHk2NHgxX3QgX19wMCkgewogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDE2eDRfdCB2cmVpbnRlcnByZXRfZjE2X3AxNihwb2x5MTZ4NF90IF9fcDApIHsKICBmbG9hdDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQxNng0X3QgdnJlaW50ZXJwcmV0X2YxNl91OCh1aW50OHg4X3QgX19wMCkgewogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDE2eDRfdCB2cmVpbnRlcnByZXRfZjE2X3UzMih1aW50MzJ4Ml90IF9fcDApIHsKICBmbG9hdDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQxNng0X3QgdnJlaW50ZXJwcmV0X2YxNl91NjQodWludDY0eDFfdCBfX3AwKSB7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MTZ4NF90IHZyZWludGVycHJldF9mMTZfdTE2KHVpbnQxNng0X3QgX19wMCkgewogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDE2eDRfdCB2cmVpbnRlcnByZXRfZjE2X3M4KGludDh4OF90IF9fcDApIHsKICBmbG9hdDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQxNng0X3QgdnJlaW50ZXJwcmV0X2YxNl9mNjQoZmxvYXQ2NHgxX3QgX19wMCkgewogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDE2eDRfdCB2cmVpbnRlcnByZXRfZjE2X2YzMihmbG9hdDMyeDJfdCBfX3AwKSB7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MTZ4NF90IHZyZWludGVycHJldF9mMTZfczMyKGludDMyeDJfdCBfX3AwKSB7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MTZ4NF90IHZyZWludGVycHJldF9mMTZfczY0KGludDY0eDFfdCBfX3AwKSB7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MTZ4NF90IHZyZWludGVycHJldF9mMTZfczE2KGludDE2eDRfdCBfX3AwKSB7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDMyeDJfdCB2cmVpbnRlcnByZXRfczMyX3A4KHBvbHk4eDhfdCBfX3AwKSB7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MzJ4Ml90IHZyZWludGVycHJldF9zMzJfcDY0KHBvbHk2NHgxX3QgX19wMCkgewogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMngyX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDMyeDJfdCB2cmVpbnRlcnByZXRfczMyX3AxNihwb2x5MTZ4NF90IF9fcDApIHsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQzMngyX3QgdnJlaW50ZXJwcmV0X3MzMl91OCh1aW50OHg4X3QgX19wMCkgewogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMngyX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDMyeDJfdCB2cmVpbnRlcnByZXRfczMyX3UzMih1aW50MzJ4Ml90IF9fcDApIHsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQzMngyX3QgdnJlaW50ZXJwcmV0X3MzMl91NjQodWludDY0eDFfdCBfX3AwKSB7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MzJ4Ml90IHZyZWludGVycHJldF9zMzJfdTE2KHVpbnQxNng0X3QgX19wMCkgewogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMngyX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDMyeDJfdCB2cmVpbnRlcnByZXRfczMyX3M4KGludDh4OF90IF9fcDApIHsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQzMngyX3QgdnJlaW50ZXJwcmV0X3MzMl9mNjQoZmxvYXQ2NHgxX3QgX19wMCkgewogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMngyX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDMyeDJfdCB2cmVpbnRlcnByZXRfczMyX2YzMihmbG9hdDMyeDJfdCBfX3AwKSB7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MzJ4Ml90IHZyZWludGVycHJldF9zMzJfZjE2KGZsb2F0MTZ4NF90IF9fcDApIHsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQzMngyX3QgdnJlaW50ZXJwcmV0X3MzMl9zNjQoaW50NjR4MV90IF9fcDApIHsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQzMngyX3QgdnJlaW50ZXJwcmV0X3MzMl9zMTYoaW50MTZ4NF90IF9fcDApIHsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQ2NHgxX3QgdnJlaW50ZXJwcmV0X3M2NF9wOChwb2x5OHg4X3QgX19wMCkgewogIGludDY0eDFfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NHgxX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDY0eDFfdCB2cmVpbnRlcnByZXRfczY0X3A2NChwb2x5NjR4MV90IF9fcDApIHsKICBpbnQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50NjR4MV90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQ2NHgxX3QgdnJlaW50ZXJwcmV0X3M2NF9wMTYocG9seTE2eDRfdCBfX3AwKSB7CiAgaW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDFfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50NjR4MV90IHZyZWludGVycHJldF9zNjRfdTgodWludDh4OF90IF9fcDApIHsKICBpbnQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50NjR4MV90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQ2NHgxX3QgdnJlaW50ZXJwcmV0X3M2NF91MzIodWludDMyeDJfdCBfX3AwKSB7CiAgaW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDFfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50NjR4MV90IHZyZWludGVycHJldF9zNjRfdTY0KHVpbnQ2NHgxX3QgX19wMCkgewogIGludDY0eDFfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NHgxX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDY0eDFfdCB2cmVpbnRlcnByZXRfczY0X3UxNih1aW50MTZ4NF90IF9fcDApIHsKICBpbnQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50NjR4MV90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQ2NHgxX3QgdnJlaW50ZXJwcmV0X3M2NF9zOChpbnQ4eDhfdCBfX3AwKSB7CiAgaW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDFfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50NjR4MV90IHZyZWludGVycHJldF9zNjRfZjY0KGZsb2F0NjR4MV90IF9fcDApIHsKICBpbnQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50NjR4MV90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQ2NHgxX3QgdnJlaW50ZXJwcmV0X3M2NF9mMzIoZmxvYXQzMngyX3QgX19wMCkgewogIGludDY0eDFfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NHgxX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDY0eDFfdCB2cmVpbnRlcnByZXRfczY0X2YxNihmbG9hdDE2eDRfdCBfX3AwKSB7CiAgaW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDFfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50NjR4MV90IHZyZWludGVycHJldF9zNjRfczMyKGludDMyeDJfdCBfX3AwKSB7CiAgaW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDFfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50NjR4MV90IHZyZWludGVycHJldF9zNjRfczE2KGludDE2eDRfdCBfX3AwKSB7CiAgaW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDFfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MTZ4NF90IHZyZWludGVycHJldF9zMTZfcDgocG9seTh4OF90IF9fcDApIHsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQxNng0X3QgdnJlaW50ZXJwcmV0X3MxNl9wNjQocG9seTY0eDFfdCBfX3AwKSB7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MTZ4NF90IHZyZWludGVycHJldF9zMTZfcDE2KHBvbHkxNng0X3QgX19wMCkgewogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDE2eDRfdCB2cmVpbnRlcnByZXRfczE2X3U4KHVpbnQ4eDhfdCBfX3AwKSB7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MTZ4NF90IHZyZWludGVycHJldF9zMTZfdTMyKHVpbnQzMngyX3QgX19wMCkgewogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDE2eDRfdCB2cmVpbnRlcnByZXRfczE2X3U2NCh1aW50NjR4MV90IF9fcDApIHsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQxNng0X3QgdnJlaW50ZXJwcmV0X3MxNl91MTYodWludDE2eDRfdCBfX3AwKSB7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MTZ4NF90IHZyZWludGVycHJldF9zMTZfczgoaW50OHg4X3QgX19wMCkgewogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDE2eDRfdCB2cmVpbnRlcnByZXRfczE2X2Y2NChmbG9hdDY0eDFfdCBfX3AwKSB7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MTZ4NF90IHZyZWludGVycHJldF9zMTZfZjMyKGZsb2F0MzJ4Ml90IF9fcDApIHsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQxNng0X3QgdnJlaW50ZXJwcmV0X3MxNl9mMTYoZmxvYXQxNng0X3QgX19wMCkgewogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDE2eDRfdCB2cmVpbnRlcnByZXRfczE2X3MzMihpbnQzMngyX3QgX19wMCkgewogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDE2eDRfdCB2cmVpbnRlcnByZXRfczE2X3M2NChpbnQ2NHgxX3QgX19wMCkgewogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKI2lmIF9fQVJNX0FSQ0ggPj0gOCAmJiBkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfRElSRUNURURfUk9VTkRJTkcpCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0NjR4Ml90IHZybmRxX2Y2NChmbG9hdDY0eDJfdCBfX3AwKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZybmRxX3YoKGludDh4MTZfdClfX3AwLCA0Mik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQ2NHgyX3QgdnJuZHFfZjY0KGZsb2F0NjR4Ml90IF9fcDApIHsKICBmbG9hdDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDJfdCkgX19idWlsdGluX25lb25fdnJuZHFfdigoaW50OHgxNl90KV9fcmV2MCwgNDIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgpfX2FpIGZsb2F0NjR4MV90IHZybmRfZjY0KGZsb2F0NjR4MV90IF9fcDApIHsKICBmbG9hdDY0eDFfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDFfdCkgX19idWlsdGluX25lb25fdnJuZF92KChpbnQ4eDhfdClfX3AwLCAxMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0NjR4Ml90IHZybmRhcV9mNjQoZmxvYXQ2NHgyX3QgX19wMCkgewogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92cm5kYXFfdigoaW50OHgxNl90KV9fcDAsIDQyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDY0eDJfdCB2cm5kYXFfZjY0KGZsb2F0NjR4Ml90IF9fcDApIHsKICBmbG9hdDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDJfdCkgX19idWlsdGluX25lb25fdnJuZGFxX3YoKGludDh4MTZfdClfX3JldjAsIDQyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKX19haSBmbG9hdDY0eDFfdCB2cm5kYV9mNjQoZmxvYXQ2NHgxX3QgX19wMCkgewogIGZsb2F0NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92cm5kYV92KChpbnQ4eDhfdClfX3AwLCAxMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0NjR4Ml90IHZybmRpcV9mNjQoZmxvYXQ2NHgyX3QgX19wMCkgewogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92cm5kaXFfdigoaW50OHgxNl90KV9fcDAsIDQyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDY0eDJfdCB2cm5kaXFfZjY0KGZsb2F0NjR4Ml90IF9fcDApIHsKICBmbG9hdDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDJfdCkgX19idWlsdGluX25lb25fdnJuZGlxX3YoKGludDh4MTZfdClfX3JldjAsIDQyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKX19haSBmbG9hdDY0eDFfdCB2cm5kaV9mNjQoZmxvYXQ2NHgxX3QgX19wMCkgewogIGZsb2F0NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92cm5kaV92KChpbnQ4eDhfdClfX3AwLCAxMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0NjR4Ml90IHZybmRtcV9mNjQoZmxvYXQ2NHgyX3QgX19wMCkgewogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92cm5kbXFfdigoaW50OHgxNl90KV9fcDAsIDQyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDY0eDJfdCB2cm5kbXFfZjY0KGZsb2F0NjR4Ml90IF9fcDApIHsKICBmbG9hdDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDJfdCkgX19idWlsdGluX25lb25fdnJuZG1xX3YoKGludDh4MTZfdClfX3JldjAsIDQyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKX19haSBmbG9hdDY0eDFfdCB2cm5kbV9mNjQoZmxvYXQ2NHgxX3QgX19wMCkgewogIGZsb2F0NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92cm5kbV92KChpbnQ4eDhfdClfX3AwLCAxMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0NjR4Ml90IHZybmRucV9mNjQoZmxvYXQ2NHgyX3QgX19wMCkgewogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92cm5kbnFfdigoaW50OHgxNl90KV9fcDAsIDQyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDY0eDJfdCB2cm5kbnFfZjY0KGZsb2F0NjR4Ml90IF9fcDApIHsKICBmbG9hdDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDJfdCkgX19idWlsdGluX25lb25fdnJuZG5xX3YoKGludDh4MTZfdClfX3JldjAsIDQyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKX19haSBmbG9hdDY0eDFfdCB2cm5kbl9mNjQoZmxvYXQ2NHgxX3QgX19wMCkgewogIGZsb2F0NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92cm5kbl92KChpbnQ4eDhfdClfX3AwLCAxMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0NjR4Ml90IHZybmRwcV9mNjQoZmxvYXQ2NHgyX3QgX19wMCkgewogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92cm5kcHFfdigoaW50OHgxNl90KV9fcDAsIDQyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDY0eDJfdCB2cm5kcHFfZjY0KGZsb2F0NjR4Ml90IF9fcDApIHsKICBmbG9hdDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDJfdCkgX19idWlsdGluX25lb25fdnJuZHBxX3YoKGludDh4MTZfdClfX3JldjAsIDQyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKX19haSBmbG9hdDY0eDFfdCB2cm5kcF9mNjQoZmxvYXQ2NHgxX3QgX19wMCkgewogIGZsb2F0NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92cm5kcF92KChpbnQ4eDhfdClfX3AwLCAxMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0NjR4Ml90IHZybmR4cV9mNjQoZmxvYXQ2NHgyX3QgX19wMCkgewogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92cm5keHFfdigoaW50OHgxNl90KV9fcDAsIDQyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDY0eDJfdCB2cm5keHFfZjY0KGZsb2F0NjR4Ml90IF9fcDApIHsKICBmbG9hdDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDJfdCkgX19idWlsdGluX25lb25fdnJuZHhxX3YoKGludDh4MTZfdClfX3JldjAsIDQyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKX19haSBmbG9hdDY0eDFfdCB2cm5keF9mNjQoZmxvYXQ2NHgxX3QgX19wMCkgewogIGZsb2F0NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92cm5keF92KChpbnQ4eDhfdClfX3AwLCAxMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgojaWYgX19BUk1fQVJDSCA+PSA4ICYmIGRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9GUklOVCkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMng0X3QgdnJuZDMyeHFfZjMyKGZsb2F0MzJ4NF90IF9fcDApIHsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdnJuZDMyeHFfdigoaW50OHgxNl90KV9fcDAsIDQxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDRfdCB2cm5kMzJ4cV9mMzIoZmxvYXQzMng0X3QgX19wMCkgewogIGZsb2F0MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92cm5kMzJ4cV92KChpbnQ4eDE2X3QpX19yZXYwLCA0MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4Ml90IHZybmQzMnhfZjMyKGZsb2F0MzJ4Ml90IF9fcDApIHsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdnJuZDMyeF92KChpbnQ4eDhfdClfX3AwLCA5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDJfdCB2cm5kMzJ4X2YzMihmbG9hdDMyeDJfdCBfX3AwKSB7CiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZybmQzMnhfdigoaW50OHg4X3QpX19yZXYwLCA5KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMng0X3QgdnJuZDMyenFfZjMyKGZsb2F0MzJ4NF90IF9fcDApIHsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdnJuZDMyenFfdigoaW50OHgxNl90KV9fcDAsIDQxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDRfdCB2cm5kMzJ6cV9mMzIoZmxvYXQzMng0X3QgX19wMCkgewogIGZsb2F0MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92cm5kMzJ6cV92KChpbnQ4eDE2X3QpX19yZXYwLCA0MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4Ml90IHZybmQzMnpfZjMyKGZsb2F0MzJ4Ml90IF9fcDApIHsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdnJuZDMyel92KChpbnQ4eDhfdClfX3AwLCA5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDJfdCB2cm5kMzJ6X2YzMihmbG9hdDMyeDJfdCBfX3AwKSB7CiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZybmQzMnpfdigoaW50OHg4X3QpX19yZXYwLCA5KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMng0X3QgdnJuZDY0eHFfZjMyKGZsb2F0MzJ4NF90IF9fcDApIHsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdnJuZDY0eHFfdigoaW50OHgxNl90KV9fcDAsIDQxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDRfdCB2cm5kNjR4cV9mMzIoZmxvYXQzMng0X3QgX19wMCkgewogIGZsb2F0MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92cm5kNjR4cV92KChpbnQ4eDE2X3QpX19yZXYwLCA0MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4Ml90IHZybmQ2NHhfZjMyKGZsb2F0MzJ4Ml90IF9fcDApIHsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdnJuZDY0eF92KChpbnQ4eDhfdClfX3AwLCA5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDJfdCB2cm5kNjR4X2YzMihmbG9hdDMyeDJfdCBfX3AwKSB7CiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZybmQ2NHhfdigoaW50OHg4X3QpX19yZXYwLCA5KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMng0X3QgdnJuZDY0enFfZjMyKGZsb2F0MzJ4NF90IF9fcDApIHsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdnJuZDY0enFfdigoaW50OHgxNl90KV9fcDAsIDQxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDRfdCB2cm5kNjR6cV9mMzIoZmxvYXQzMng0X3QgX19wMCkgewogIGZsb2F0MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92cm5kNjR6cV92KChpbnQ4eDE2X3QpX19yZXYwLCA0MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4Ml90IHZybmQ2NHpfZjMyKGZsb2F0MzJ4Ml90IF9fcDApIHsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdnJuZDY0el92KChpbnQ4eDhfdClfX3AwLCA5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDJfdCB2cm5kNjR6X2YzMihmbG9hdDMyeDJfdCBfX3AwKSB7CiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZybmQ2NHpfdigoaW50OHg4X3QpX19yZXYwLCA5KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2VuZGlmCiNpZiBfX0FSTV9BUkNIID49IDggJiYgZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX05VTUVSSUNfTUFYTUlOKQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDY0eDJfdCB2bWF4bm1xX2Y2NChmbG9hdDY0eDJfdCBfX3AwLCBmbG9hdDY0eDJfdCBfX3AxKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZtYXhubXFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0NjR4Ml90IHZtYXhubXFfZjY0KGZsb2F0NjR4Ml90IF9fcDAsIGZsb2F0NjR4Ml90IF9fcDEpIHsKICBmbG9hdDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDJfdCkgX19idWlsdGluX25lb25fdm1heG5tcV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNDIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgpfX2FpIGZsb2F0NjR4MV90IHZtYXhubV9mNjQoZmxvYXQ2NHgxX3QgX19wMCwgZmxvYXQ2NHgxX3QgX19wMSkgewogIGZsb2F0NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92bWF4bm1fdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDEwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQ2NHgyX3Qgdm1pbm5tcV9mNjQoZmxvYXQ2NHgyX3QgX19wMCwgZmxvYXQ2NHgyX3QgX19wMSkgewogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92bWlubm1xX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDQyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDY0eDJfdCB2bWlubm1xX2Y2NChmbG9hdDY0eDJfdCBfX3AwLCBmbG9hdDY0eDJfdCBfX3AxKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgZmxvYXQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZtaW5ubXFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDQyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKX19haSBmbG9hdDY0eDFfdCB2bWlubm1fZjY0KGZsb2F0NjR4MV90IF9fcDAsIGZsb2F0NjR4MV90IF9fcDEpIHsKICBmbG9hdDY0eDFfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDFfdCkgX19idWlsdGluX25lb25fdm1pbm5tX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAxMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgojaWYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX0JGMTYpICYmICFkZWZpbmVkKF9fYWFyY2g2NF9fKQpfX2FpIHBvbHk4eDhfdCB2cmVpbnRlcnByZXRfcDhfYmYxNihiZmxvYXQxNng0X3QgX19wMCkgewogIHBvbHk4eDhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHg4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHk2NHgxX3QgdnJlaW50ZXJwcmV0X3A2NF9iZjE2KGJmbG9hdDE2eDRfdCBfX3AwKSB7CiAgcG9seTY0eDFfdCBfX3JldDsKICBfX3JldCA9IChwb2x5NjR4MV90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBwb2x5MTZ4NF90IHZyZWludGVycHJldF9wMTZfYmYxNihiZmxvYXQxNng0X3QgX19wMCkgewogIHBvbHkxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTE2eDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTh4MTZfdCB2cmVpbnRlcnByZXRxX3A4X2JmMTYoYmZsb2F0MTZ4OF90IF9fcDApIHsKICBwb2x5OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk4eDE2X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHk2NHgyX3QgdnJlaW50ZXJwcmV0cV9wNjRfYmYxNihiZmxvYXQxNng4X3QgX19wMCkgewogIHBvbHk2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTY0eDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTE2eDhfdCB2cmVpbnRlcnByZXRxX3AxNl9iZjE2KGJmbG9hdDE2eDhfdCBfX3AwKSB7CiAgcG9seTE2eDhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50OHgxNl90IHZyZWludGVycHJldHFfdThfYmYxNihiZmxvYXQxNng4X3QgX19wMCkgewogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDMyeDRfdCB2cmVpbnRlcnByZXRxX3UzMl9iZjE2KGJmbG9hdDE2eDhfdCBfX3AwKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50NjR4Ml90IHZyZWludGVycHJldHFfdTY0X2JmMTYoYmZsb2F0MTZ4OF90IF9fcDApIHsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQxNng4X3QgdnJlaW50ZXJwcmV0cV91MTZfYmYxNihiZmxvYXQxNng4X3QgX19wMCkgewogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50OHgxNl90IHZyZWludGVycHJldHFfczhfYmYxNihiZmxvYXQxNng4X3QgX19wMCkgewogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDE2X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MzJ4NF90IHZyZWludGVycHJldHFfZjMyX2JmMTYoYmZsb2F0MTZ4OF90IF9fcDApIHsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQxNng4X3QgdnJlaW50ZXJwcmV0cV9mMTZfYmYxNihiZmxvYXQxNng4X3QgX19wMCkgewogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQzMng0X3QgdnJlaW50ZXJwcmV0cV9zMzJfYmYxNihiZmxvYXQxNng4X3QgX19wMCkgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDY0eDJfdCB2cmVpbnRlcnByZXRxX3M2NF9iZjE2KGJmbG9hdDE2eDhfdCBfX3AwKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MTZ4OF90IHZyZWludGVycHJldHFfczE2X2JmMTYoYmZsb2F0MTZ4OF90IF9fcDApIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50OHg4X3QgdnJlaW50ZXJwcmV0X3U4X2JmMTYoYmZsb2F0MTZ4NF90IF9fcDApIHsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MzJ4Ml90IHZyZWludGVycHJldF91MzJfYmYxNihiZmxvYXQxNng0X3QgX19wMCkgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDY0eDFfdCB2cmVpbnRlcnByZXRfdTY0X2JmMTYoYmZsb2F0MTZ4NF90IF9fcDApIHsKICB1aW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgxX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQxNng0X3QgdnJlaW50ZXJwcmV0X3UxNl9iZjE2KGJmbG9hdDE2eDRfdCBfX3AwKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQ4eDhfdCB2cmVpbnRlcnByZXRfczhfYmYxNihiZmxvYXQxNng0X3QgX19wMCkgewogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDMyeDJfdCB2cmVpbnRlcnByZXRfZjMyX2JmMTYoYmZsb2F0MTZ4NF90IF9fcDApIHsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQxNng0X3QgdnJlaW50ZXJwcmV0X2YxNl9iZjE2KGJmbG9hdDE2eDRfdCBfX3AwKSB7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDMyeDJfdCB2cmVpbnRlcnByZXRfczMyX2JmMTYoYmZsb2F0MTZ4NF90IF9fcDApIHsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQ2NHgxX3QgdnJlaW50ZXJwcmV0X3M2NF9iZjE2KGJmbG9hdDE2eDRfdCBfX3AwKSB7CiAgaW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDFfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MTZ4NF90IHZyZWludGVycHJldF9zMTZfYmYxNihiZmxvYXQxNng0X3QgX19wMCkgewogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGJmbG9hdDE2eDhfdCB2cmVpbnRlcnByZXRxX2JmMTZfcDgocG9seTh4MTZfdCBfX3AwKSB7CiAgYmZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGJmbG9hdDE2eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgYmZsb2F0MTZ4OF90IHZyZWludGVycHJldHFfYmYxNl9wNjQocG9seTY0eDJfdCBfX3AwKSB7CiAgYmZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGJmbG9hdDE2eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgYmZsb2F0MTZ4OF90IHZyZWludGVycHJldHFfYmYxNl9wMTYocG9seTE2eDhfdCBfX3AwKSB7CiAgYmZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGJmbG9hdDE2eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgYmZsb2F0MTZ4OF90IHZyZWludGVycHJldHFfYmYxNl91OCh1aW50OHgxNl90IF9fcDApIHsKICBiZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoYmZsb2F0MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBiZmxvYXQxNng4X3QgdnJlaW50ZXJwcmV0cV9iZjE2X3UzMih1aW50MzJ4NF90IF9fcDApIHsKICBiZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoYmZsb2F0MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBiZmxvYXQxNng4X3QgdnJlaW50ZXJwcmV0cV9iZjE2X3U2NCh1aW50NjR4Ml90IF9fcDApIHsKICBiZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoYmZsb2F0MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBiZmxvYXQxNng4X3QgdnJlaW50ZXJwcmV0cV9iZjE2X3UxNih1aW50MTZ4OF90IF9fcDApIHsKICBiZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoYmZsb2F0MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBiZmxvYXQxNng4X3QgdnJlaW50ZXJwcmV0cV9iZjE2X3M4KGludDh4MTZfdCBfX3AwKSB7CiAgYmZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGJmbG9hdDE2eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgYmZsb2F0MTZ4OF90IHZyZWludGVycHJldHFfYmYxNl9mMzIoZmxvYXQzMng0X3QgX19wMCkgewogIGJmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChiZmxvYXQxNng4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGJmbG9hdDE2eDhfdCB2cmVpbnRlcnByZXRxX2JmMTZfZjE2KGZsb2F0MTZ4OF90IF9fcDApIHsKICBiZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoYmZsb2F0MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBiZmxvYXQxNng4X3QgdnJlaW50ZXJwcmV0cV9iZjE2X3MzMihpbnQzMng0X3QgX19wMCkgewogIGJmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChiZmxvYXQxNng4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGJmbG9hdDE2eDhfdCB2cmVpbnRlcnByZXRxX2JmMTZfczY0KGludDY0eDJfdCBfX3AwKSB7CiAgYmZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGJmbG9hdDE2eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgYmZsb2F0MTZ4OF90IHZyZWludGVycHJldHFfYmYxNl9zMTYoaW50MTZ4OF90IF9fcDApIHsKICBiZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoYmZsb2F0MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBiZmxvYXQxNng0X3QgdnJlaW50ZXJwcmV0X2JmMTZfcDgocG9seTh4OF90IF9fcDApIHsKICBiZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoYmZsb2F0MTZ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBiZmxvYXQxNng0X3QgdnJlaW50ZXJwcmV0X2JmMTZfcDY0KHBvbHk2NHgxX3QgX19wMCkgewogIGJmbG9hdDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChiZmxvYXQxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGJmbG9hdDE2eDRfdCB2cmVpbnRlcnByZXRfYmYxNl9wMTYocG9seTE2eDRfdCBfX3AwKSB7CiAgYmZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGJmbG9hdDE2eDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgYmZsb2F0MTZ4NF90IHZyZWludGVycHJldF9iZjE2X3U4KHVpbnQ4eDhfdCBfX3AwKSB7CiAgYmZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGJmbG9hdDE2eDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgYmZsb2F0MTZ4NF90IHZyZWludGVycHJldF9iZjE2X3UzMih1aW50MzJ4Ml90IF9fcDApIHsKICBiZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoYmZsb2F0MTZ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBiZmxvYXQxNng0X3QgdnJlaW50ZXJwcmV0X2JmMTZfdTY0KHVpbnQ2NHgxX3QgX19wMCkgewogIGJmbG9hdDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChiZmxvYXQxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGJmbG9hdDE2eDRfdCB2cmVpbnRlcnByZXRfYmYxNl91MTYodWludDE2eDRfdCBfX3AwKSB7CiAgYmZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGJmbG9hdDE2eDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgYmZsb2F0MTZ4NF90IHZyZWludGVycHJldF9iZjE2X3M4KGludDh4OF90IF9fcDApIHsKICBiZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoYmZsb2F0MTZ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBiZmxvYXQxNng0X3QgdnJlaW50ZXJwcmV0X2JmMTZfZjMyKGZsb2F0MzJ4Ml90IF9fcDApIHsKICBiZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoYmZsb2F0MTZ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBiZmxvYXQxNng0X3QgdnJlaW50ZXJwcmV0X2JmMTZfZjE2KGZsb2F0MTZ4NF90IF9fcDApIHsKICBiZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoYmZsb2F0MTZ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBiZmxvYXQxNng0X3QgdnJlaW50ZXJwcmV0X2JmMTZfczMyKGludDMyeDJfdCBfX3AwKSB7CiAgYmZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGJmbG9hdDE2eDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgYmZsb2F0MTZ4NF90IHZyZWludGVycHJldF9iZjE2X3M2NChpbnQ2NHgxX3QgX19wMCkgewogIGJmbG9hdDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChiZmxvYXQxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGJmbG9hdDE2eDRfdCB2cmVpbnRlcnByZXRfYmYxNl9zMTYoaW50MTZ4NF90IF9fcDApIHsKICBiZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoYmZsb2F0MTZ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCiNpZiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfQkYxNikgJiYgZGVmaW5lZChfX2FhcmNoNjRfXykKX19haSBwb2x5OHg4X3QgdnJlaW50ZXJwcmV0X3A4X2JmMTYoYmZsb2F0MTZ4NF90IF9fcDApIHsKICBwb2x5OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTh4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBwb2x5NjR4MV90IHZyZWludGVycHJldF9wNjRfYmYxNihiZmxvYXQxNng0X3QgX19wMCkgewogIHBvbHk2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTY0eDFfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTE2eDRfdCB2cmVpbnRlcnByZXRfcDE2X2JmMTYoYmZsb2F0MTZ4NF90IF9fcDApIHsKICBwb2x5MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHkxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHk4eDE2X3QgdnJlaW50ZXJwcmV0cV9wOF9iZjE2KGJmbG9hdDE2eDhfdCBfX3AwKSB7CiAgcG9seTh4MTZfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHgxNl90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBwb2x5MTI4X3QgdnJlaW50ZXJwcmV0cV9wMTI4X2JmMTYoYmZsb2F0MTZ4OF90IF9fcDApIHsKICBwb2x5MTI4X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTEyOF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBwb2x5NjR4Ml90IHZyZWludGVycHJldHFfcDY0X2JmMTYoYmZsb2F0MTZ4OF90IF9fcDApIHsKICBwb2x5NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk2NHgyX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHkxNng4X3QgdnJlaW50ZXJwcmV0cV9wMTZfYmYxNihiZmxvYXQxNng4X3QgX19wMCkgewogIHBvbHkxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTE2eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDh4MTZfdCB2cmVpbnRlcnByZXRxX3U4X2JmMTYoYmZsb2F0MTZ4OF90IF9fcDApIHsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQzMng0X3QgdnJlaW50ZXJwcmV0cV91MzJfYmYxNihiZmxvYXQxNng4X3QgX19wMCkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDY0eDJfdCB2cmVpbnRlcnByZXRxX3U2NF9iZjE2KGJmbG9hdDE2eDhfdCBfX3AwKSB7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MTZ4OF90IHZyZWludGVycHJldHFfdTE2X2JmMTYoYmZsb2F0MTZ4OF90IF9fcDApIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDh4MTZfdCB2cmVpbnRlcnByZXRxX3M4X2JmMTYoYmZsb2F0MTZ4OF90IF9fcDApIHsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHgxNl90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDY0eDJfdCB2cmVpbnRlcnByZXRxX2Y2NF9iZjE2KGJmbG9hdDE2eDhfdCBfX3AwKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQ2NHgyX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MzJ4NF90IHZyZWludGVycHJldHFfZjMyX2JmMTYoYmZsb2F0MTZ4OF90IF9fcDApIHsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQxNng4X3QgdnJlaW50ZXJwcmV0cV9mMTZfYmYxNihiZmxvYXQxNng4X3QgX19wMCkgewogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQzMng0X3QgdnJlaW50ZXJwcmV0cV9zMzJfYmYxNihiZmxvYXQxNng4X3QgX19wMCkgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDY0eDJfdCB2cmVpbnRlcnByZXRxX3M2NF9iZjE2KGJmbG9hdDE2eDhfdCBfX3AwKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MTZ4OF90IHZyZWludGVycHJldHFfczE2X2JmMTYoYmZsb2F0MTZ4OF90IF9fcDApIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50OHg4X3QgdnJlaW50ZXJwcmV0X3U4X2JmMTYoYmZsb2F0MTZ4NF90IF9fcDApIHsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MzJ4Ml90IHZyZWludGVycHJldF91MzJfYmYxNihiZmxvYXQxNng0X3QgX19wMCkgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDY0eDFfdCB2cmVpbnRlcnByZXRfdTY0X2JmMTYoYmZsb2F0MTZ4NF90IF9fcDApIHsKICB1aW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgxX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQxNng0X3QgdnJlaW50ZXJwcmV0X3UxNl9iZjE2KGJmbG9hdDE2eDRfdCBfX3AwKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQ4eDhfdCB2cmVpbnRlcnByZXRfczhfYmYxNihiZmxvYXQxNng0X3QgX19wMCkgewogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDY0eDFfdCB2cmVpbnRlcnByZXRfZjY0X2JmMTYoYmZsb2F0MTZ4NF90IF9fcDApIHsKICBmbG9hdDY0eDFfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDFfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQzMngyX3QgdnJlaW50ZXJwcmV0X2YzMl9iZjE2KGJmbG9hdDE2eDRfdCBfX3AwKSB7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMngyX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MTZ4NF90IHZyZWludGVycHJldF9mMTZfYmYxNihiZmxvYXQxNng0X3QgX19wMCkgewogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQzMngyX3QgdnJlaW50ZXJwcmV0X3MzMl9iZjE2KGJmbG9hdDE2eDRfdCBfX3AwKSB7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDJfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50NjR4MV90IHZyZWludGVycHJldF9zNjRfYmYxNihiZmxvYXQxNng0X3QgX19wMCkgewogIGludDY0eDFfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NHgxX3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDE2eDRfdCB2cmVpbnRlcnByZXRfczE2X2JmMTYoYmZsb2F0MTZ4NF90IF9fcDApIHsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBiZmxvYXQxNng4X3QgdnJlaW50ZXJwcmV0cV9iZjE2X3A4KHBvbHk4eDE2X3QgX19wMCkgewogIGJmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChiZmxvYXQxNng4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGJmbG9hdDE2eDhfdCB2cmVpbnRlcnByZXRxX2JmMTZfcDEyOChwb2x5MTI4X3QgX19wMCkgewogIGJmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChiZmxvYXQxNng4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGJmbG9hdDE2eDhfdCB2cmVpbnRlcnByZXRxX2JmMTZfcDY0KHBvbHk2NHgyX3QgX19wMCkgewogIGJmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChiZmxvYXQxNng4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGJmbG9hdDE2eDhfdCB2cmVpbnRlcnByZXRxX2JmMTZfcDE2KHBvbHkxNng4X3QgX19wMCkgewogIGJmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChiZmxvYXQxNng4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGJmbG9hdDE2eDhfdCB2cmVpbnRlcnByZXRxX2JmMTZfdTgodWludDh4MTZfdCBfX3AwKSB7CiAgYmZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGJmbG9hdDE2eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgYmZsb2F0MTZ4OF90IHZyZWludGVycHJldHFfYmYxNl91MzIodWludDMyeDRfdCBfX3AwKSB7CiAgYmZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGJmbG9hdDE2eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgYmZsb2F0MTZ4OF90IHZyZWludGVycHJldHFfYmYxNl91NjQodWludDY0eDJfdCBfX3AwKSB7CiAgYmZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGJmbG9hdDE2eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgYmZsb2F0MTZ4OF90IHZyZWludGVycHJldHFfYmYxNl91MTYodWludDE2eDhfdCBfX3AwKSB7CiAgYmZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGJmbG9hdDE2eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgYmZsb2F0MTZ4OF90IHZyZWludGVycHJldHFfYmYxNl9zOChpbnQ4eDE2X3QgX19wMCkgewogIGJmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChiZmxvYXQxNng4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGJmbG9hdDE2eDhfdCB2cmVpbnRlcnByZXRxX2JmMTZfZjY0KGZsb2F0NjR4Ml90IF9fcDApIHsKICBiZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoYmZsb2F0MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBiZmxvYXQxNng4X3QgdnJlaW50ZXJwcmV0cV9iZjE2X2YzMihmbG9hdDMyeDRfdCBfX3AwKSB7CiAgYmZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGJmbG9hdDE2eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgYmZsb2F0MTZ4OF90IHZyZWludGVycHJldHFfYmYxNl9mMTYoZmxvYXQxNng4X3QgX19wMCkgewogIGJmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChiZmxvYXQxNng4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGJmbG9hdDE2eDhfdCB2cmVpbnRlcnByZXRxX2JmMTZfczMyKGludDMyeDRfdCBfX3AwKSB7CiAgYmZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGJmbG9hdDE2eDhfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgYmZsb2F0MTZ4OF90IHZyZWludGVycHJldHFfYmYxNl9zNjQoaW50NjR4Ml90IF9fcDApIHsKICBiZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoYmZsb2F0MTZ4OF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBiZmxvYXQxNng4X3QgdnJlaW50ZXJwcmV0cV9iZjE2X3MxNihpbnQxNng4X3QgX19wMCkgewogIGJmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChiZmxvYXQxNng4X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGJmbG9hdDE2eDRfdCB2cmVpbnRlcnByZXRfYmYxNl9wOChwb2x5OHg4X3QgX19wMCkgewogIGJmbG9hdDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChiZmxvYXQxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGJmbG9hdDE2eDRfdCB2cmVpbnRlcnByZXRfYmYxNl9wNjQocG9seTY0eDFfdCBfX3AwKSB7CiAgYmZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGJmbG9hdDE2eDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgYmZsb2F0MTZ4NF90IHZyZWludGVycHJldF9iZjE2X3AxNihwb2x5MTZ4NF90IF9fcDApIHsKICBiZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoYmZsb2F0MTZ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBiZmxvYXQxNng0X3QgdnJlaW50ZXJwcmV0X2JmMTZfdTgodWludDh4OF90IF9fcDApIHsKICBiZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoYmZsb2F0MTZ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBiZmxvYXQxNng0X3QgdnJlaW50ZXJwcmV0X2JmMTZfdTMyKHVpbnQzMngyX3QgX19wMCkgewogIGJmbG9hdDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChiZmxvYXQxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGJmbG9hdDE2eDRfdCB2cmVpbnRlcnByZXRfYmYxNl91NjQodWludDY0eDFfdCBfX3AwKSB7CiAgYmZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGJmbG9hdDE2eDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgYmZsb2F0MTZ4NF90IHZyZWludGVycHJldF9iZjE2X3UxNih1aW50MTZ4NF90IF9fcDApIHsKICBiZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoYmZsb2F0MTZ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBiZmxvYXQxNng0X3QgdnJlaW50ZXJwcmV0X2JmMTZfczgoaW50OHg4X3QgX19wMCkgewogIGJmbG9hdDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChiZmxvYXQxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGJmbG9hdDE2eDRfdCB2cmVpbnRlcnByZXRfYmYxNl9mNjQoZmxvYXQ2NHgxX3QgX19wMCkgewogIGJmbG9hdDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChiZmxvYXQxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGJmbG9hdDE2eDRfdCB2cmVpbnRlcnByZXRfYmYxNl9mMzIoZmxvYXQzMngyX3QgX19wMCkgewogIGJmbG9hdDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChiZmxvYXQxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGJmbG9hdDE2eDRfdCB2cmVpbnRlcnByZXRfYmYxNl9mMTYoZmxvYXQxNng0X3QgX19wMCkgewogIGJmbG9hdDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChiZmxvYXQxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGJmbG9hdDE2eDRfdCB2cmVpbnRlcnByZXRfYmYxNl9zMzIoaW50MzJ4Ml90IF9fcDApIHsKICBiZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoYmZsb2F0MTZ4NF90KShfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBiZmxvYXQxNng0X3QgdnJlaW50ZXJwcmV0X2JmMTZfczY0KGludDY0eDFfdCBfX3AwKSB7CiAgYmZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGJmbG9hdDE2eDRfdCkoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgYmZsb2F0MTZ4NF90IHZyZWludGVycHJldF9iZjE2X3MxNihpbnQxNng0X3QgX19wMCkgewogIGJmbG9hdDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChiZmxvYXQxNng0X3QpKF9fcDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9CRjE2X1ZFQ1RPUl9BUklUSE1FVElDKQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSBzcGxhdHFfbGFuZV9iZjE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGJmbG9hdDE2eDRfdCBfX3MwID0gX19wMDsgXAogIGJmbG9hdDE2eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGJmbG9hdDE2eDhfdCkgX19idWlsdGluX25lb25fc3BsYXRxX2xhbmVfdigoaW50OHg4X3QpX19zMCwgX19wMSwgMTEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSBzcGxhdHFfbGFuZV9iZjE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGJmbG9hdDE2eDRfdCBfX3MwID0gX19wMDsgXAogIGJmbG9hdDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAzLCAyLCAxLCAwKTsgXAogIGJmbG9hdDE2eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGJmbG9hdDE2eDhfdCkgX19idWlsdGluX25lb25fc3BsYXRxX2xhbmVfdigoaW50OHg4X3QpX19yZXYwLCBfX3AxLCAxMSk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3NwbGF0cV9sYW5lX2JmMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4NF90IF9fczAgPSBfX3AwOyBcCiAgYmZsb2F0MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoYmZsb2F0MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdHFfbGFuZV92KChpbnQ4eDhfdClfX3MwLCBfX3AxLCAxMSk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHNwbGF0X2xhbmVfYmYxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng0X3QgX19zMCA9IF9fcDA7IFwKICBiZmxvYXQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChiZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0X2xhbmVfdigoaW50OHg4X3QpX19zMCwgX19wMSwgMTEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSBzcGxhdF9sYW5lX2JmMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4NF90IF9fczAgPSBfX3AwOyBcCiAgYmZsb2F0MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDMsIDIsIDEsIDApOyBcCiAgYmZsb2F0MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoYmZsb2F0MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdF9sYW5lX3YoKGludDh4OF90KV9fcmV2MCwgX19wMSwgMTEpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF9zcGxhdF9sYW5lX2JmMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4NF90IF9fczAgPSBfX3AwOyBcCiAgYmZsb2F0MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoYmZsb2F0MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdF9sYW5lX3YoKGludDh4OF90KV9fczAsIF9fcDEsIDExKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgc3BsYXRxX2xhbmVxX2JmMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgYmZsb2F0MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoYmZsb2F0MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdHFfbGFuZXFfdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDQzKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgc3BsYXRxX2xhbmVxX2JmMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgYmZsb2F0MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgYmZsb2F0MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoYmZsb2F0MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl9zcGxhdHFfbGFuZXFfdigoaW50OHgxNl90KV9fcmV2MCwgX19wMSwgNDMpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF9zcGxhdHFfbGFuZXFfYmYxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng4X3QgX19zMCA9IF9fcDA7IFwKICBiZmxvYXQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9IChiZmxvYXQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0cV9sYW5lcV92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgNDMpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSBzcGxhdF9sYW5lcV9iZjE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGJmbG9hdDE2eDhfdCBfX3MwID0gX19wMDsgXAogIGJmbG9hdDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGJmbG9hdDE2eDRfdCkgX19idWlsdGluX25lb25fc3BsYXRfbGFuZXFfdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDQzKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgc3BsYXRfbGFuZXFfYmYxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng4X3QgX19zMCA9IF9fcDA7IFwKICBiZmxvYXQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBiZmxvYXQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChiZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0X2xhbmVxX3YoKGludDh4MTZfdClfX3JldjAsIF9fcDEsIDQzKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgX19ub3N3YXBfc3BsYXRfbGFuZXFfYmYxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng4X3QgX19zMCA9IF9fcDA7IFwKICBiZmxvYXQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChiZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3NwbGF0X2xhbmVxX3YoKGludDh4MTZfdClfX3MwLCBfX3AxLCA0Myk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4NF90IHZiZmRvdHFfZjMyKGZsb2F0MzJ4NF90IF9fcDAsIGJmbG9hdDE2eDhfdCBfX3AxLCBiZmxvYXQxNng4X3QgX19wMikgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92YmZkb3RxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIChpbnQ4eDE2X3QpX19wMiwgNDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4NF90IHZiZmRvdHFfZjMyKGZsb2F0MzJ4NF90IF9fcDAsIGJmbG9hdDE2eDhfdCBfX3AxLCBiZmxvYXQxNng4X3QgX19wMikgewogIGZsb2F0MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGJmbG9hdDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBiZmxvYXQxNng4X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZiZmRvdHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIChpbnQ4eDE2X3QpX19yZXYyLCA0MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MzJ4NF90IF9fbm9zd2FwX3ZiZmRvdHFfZjMyKGZsb2F0MzJ4NF90IF9fcDAsIGJmbG9hdDE2eDhfdCBfX3AxLCBiZmxvYXQxNng4X3QgX19wMikgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92YmZkb3RxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIChpbnQ4eDE2X3QpX19wMiwgNDEpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4Ml90IHZiZmRvdF9mMzIoZmxvYXQzMngyX3QgX19wMCwgYmZsb2F0MTZ4NF90IF9fcDEsIGJmbG9hdDE2eDRfdCBfX3AyKSB7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZiZmRvdF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgKGludDh4OF90KV9fcDIsIDkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4Ml90IHZiZmRvdF9mMzIoZmxvYXQzMngyX3QgX19wMCwgYmZsb2F0MTZ4NF90IF9fcDEsIGJmbG9hdDE2eDRfdCBfX3AyKSB7CiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgYmZsb2F0MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGJmbG9hdDE2eDRfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdmJmZG90X3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgKGludDh4OF90KV9fcmV2MiwgOSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MzJ4Ml90IF9fbm9zd2FwX3ZiZmRvdF9mMzIoZmxvYXQzMngyX3QgX19wMCwgYmZsb2F0MTZ4NF90IF9fcDEsIGJmbG9hdDE2eDRfdCBfX3AyKSB7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZiZmRvdF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgKGludDh4OF90KV9fcDIsIDkpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZiZmRvdHFfbGFuZV9mMzIoX19wMF8xNDIsIF9fcDFfMTQyLCBfX3AyXzE0MiwgX19wM18xNDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NF90IF9fczBfMTQyID0gX19wMF8xNDI7IFwKICBiZmxvYXQxNng4X3QgX19zMV8xNDIgPSBfX3AxXzE0MjsgXAogIGJmbG9hdDE2eDRfdCBfX3MyXzE0MiA9IF9fcDJfMTQyOyBcCiAgZmxvYXQzMng0X3QgX19yZXRfMTQyOyBcCmJmbG9hdDE2eDRfdCBfX3JlaW50XzE0MiA9IF9fczJfMTQyOyBcCmZsb2F0MzJ4NF90IF9fcmVpbnQxXzE0MiA9IHNwbGF0cV9sYW5lX2YzMigqKGZsb2F0MzJ4Ml90ICopICZfX3JlaW50XzE0MiwgX19wM18xNDIpOyBcCiAgX19yZXRfMTQyID0gdmJmZG90cV9mMzIoX19zMF8xNDIsIF9fczFfMTQyLCAqKGJmbG9hdDE2eDhfdCAqKSAmX19yZWludDFfMTQyKTsgXAogIF9fcmV0XzE0MjsgXAp9KQojZWxzZQojZGVmaW5lIHZiZmRvdHFfbGFuZV9mMzIoX19wMF8xNDMsIF9fcDFfMTQzLCBfX3AyXzE0MywgX19wM18xNDMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NF90IF9fczBfMTQzID0gX19wMF8xNDM7IFwKICBiZmxvYXQxNng4X3QgX19zMV8xNDMgPSBfX3AxXzE0MzsgXAogIGJmbG9hdDE2eDRfdCBfX3MyXzE0MyA9IF9fcDJfMTQzOyBcCiAgZmxvYXQzMng0X3QgX19yZXYwXzE0MzsgIF9fcmV2MF8xNDMgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzE0MywgX19zMF8xNDMsIDMsIDIsIDEsIDApOyBcCiAgYmZsb2F0MTZ4OF90IF9fcmV2MV8xNDM7ICBfX3JldjFfMTQzID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV8xNDMsIF9fczFfMTQzLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGJmbG9hdDE2eDRfdCBfX3JldjJfMTQzOyAgX19yZXYyXzE0MyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfMTQzLCBfX3MyXzE0MywgMywgMiwgMSwgMCk7IFwKICBmbG9hdDMyeDRfdCBfX3JldF8xNDM7IFwKYmZsb2F0MTZ4NF90IF9fcmVpbnRfMTQzID0gX19yZXYyXzE0MzsgXApmbG9hdDMyeDRfdCBfX3JlaW50MV8xNDMgPSBfX25vc3dhcF9zcGxhdHFfbGFuZV9mMzIoKihmbG9hdDMyeDJfdCAqKSAmX19yZWludF8xNDMsIF9fcDNfMTQzKTsgXAogIF9fcmV0XzE0MyA9IF9fbm9zd2FwX3ZiZmRvdHFfZjMyKF9fcmV2MF8xNDMsIF9fcmV2MV8xNDMsICooYmZsb2F0MTZ4OF90ICopICZfX3JlaW50MV8xNDMpOyBcCiAgX19yZXRfMTQzID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMTQzLCBfX3JldF8xNDMsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfMTQzOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmJmZG90X2xhbmVfZjMyKF9fcDBfMTQ0LCBfX3AxXzE0NCwgX19wMl8xNDQsIF9fcDNfMTQ0KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJfdCBfX3MwXzE0NCA9IF9fcDBfMTQ0OyBcCiAgYmZsb2F0MTZ4NF90IF9fczFfMTQ0ID0gX19wMV8xNDQ7IFwKICBiZmxvYXQxNng0X3QgX19zMl8xNDQgPSBfX3AyXzE0NDsgXAogIGZsb2F0MzJ4Ml90IF9fcmV0XzE0NDsgXApiZmxvYXQxNng0X3QgX19yZWludF8xNDQgPSBfX3MyXzE0NDsgXApmbG9hdDMyeDJfdCBfX3JlaW50MV8xNDQgPSBzcGxhdF9sYW5lX2YzMigqKGZsb2F0MzJ4Ml90ICopICZfX3JlaW50XzE0NCwgX19wM18xNDQpOyBcCiAgX19yZXRfMTQ0ID0gdmJmZG90X2YzMihfX3MwXzE0NCwgX19zMV8xNDQsICooYmZsb2F0MTZ4NF90ICopICZfX3JlaW50MV8xNDQpOyBcCiAgX19yZXRfMTQ0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmJmZG90X2xhbmVfZjMyKF9fcDBfMTQ1LCBfX3AxXzE0NSwgX19wMl8xNDUsIF9fcDNfMTQ1KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJfdCBfX3MwXzE0NSA9IF9fcDBfMTQ1OyBcCiAgYmZsb2F0MTZ4NF90IF9fczFfMTQ1ID0gX19wMV8xNDU7IFwKICBiZmxvYXQxNng0X3QgX19zMl8xNDUgPSBfX3AyXzE0NTsgXAogIGZsb2F0MzJ4Ml90IF9fcmV2MF8xNDU7ICBfX3JldjBfMTQ1ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8xNDUsIF9fczBfMTQ1LCAxLCAwKTsgXAogIGJmbG9hdDE2eDRfdCBfX3JldjFfMTQ1OyAgX19yZXYxXzE0NSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfMTQ1LCBfX3MxXzE0NSwgMywgMiwgMSwgMCk7IFwKICBiZmxvYXQxNng0X3QgX19yZXYyXzE0NTsgIF9fcmV2Ml8xNDUgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzE0NSwgX19zMl8xNDUsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQzMngyX3QgX19yZXRfMTQ1OyBcCmJmbG9hdDE2eDRfdCBfX3JlaW50XzE0NSA9IF9fcmV2Ml8xNDU7IFwKZmxvYXQzMngyX3QgX19yZWludDFfMTQ1ID0gX19ub3N3YXBfc3BsYXRfbGFuZV9mMzIoKihmbG9hdDMyeDJfdCAqKSAmX19yZWludF8xNDUsIF9fcDNfMTQ1KTsgXAogIF9fcmV0XzE0NSA9IF9fbm9zd2FwX3ZiZmRvdF9mMzIoX19yZXYwXzE0NSwgX19yZXYxXzE0NSwgKihiZmxvYXQxNng0X3QgKikgJl9fcmVpbnQxXzE0NSk7IFwKICBfX3JldF8xNDUgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8xNDUsIF9fcmV0XzE0NSwgMSwgMCk7IFwKICBfX3JldF8xNDU7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2YmZkb3RxX2xhbmVxX2YzMihfX3AwXzE0NiwgX19wMV8xNDYsIF9fcDJfMTQ2LCBfX3AzXzE0NikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0X3QgX19zMF8xNDYgPSBfX3AwXzE0NjsgXAogIGJmbG9hdDE2eDhfdCBfX3MxXzE0NiA9IF9fcDFfMTQ2OyBcCiAgYmZsb2F0MTZ4OF90IF9fczJfMTQ2ID0gX19wMl8xNDY7IFwKICBmbG9hdDMyeDRfdCBfX3JldF8xNDY7IFwKYmZsb2F0MTZ4OF90IF9fcmVpbnRfMTQ2ID0gX19zMl8xNDY7IFwKZmxvYXQzMng0X3QgX19yZWludDFfMTQ2ID0gc3BsYXRxX2xhbmVxX2YzMigqKGZsb2F0MzJ4NF90ICopICZfX3JlaW50XzE0NiwgX19wM18xNDYpOyBcCiAgX19yZXRfMTQ2ID0gdmJmZG90cV9mMzIoX19zMF8xNDYsIF9fczFfMTQ2LCAqKGJmbG9hdDE2eDhfdCAqKSAmX19yZWludDFfMTQ2KTsgXAogIF9fcmV0XzE0NjsgXAp9KQojZWxzZQojZGVmaW5lIHZiZmRvdHFfbGFuZXFfZjMyKF9fcDBfMTQ3LCBfX3AxXzE0NywgX19wMl8xNDcsIF9fcDNfMTQ3KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDRfdCBfX3MwXzE0NyA9IF9fcDBfMTQ3OyBcCiAgYmZsb2F0MTZ4OF90IF9fczFfMTQ3ID0gX19wMV8xNDc7IFwKICBiZmxvYXQxNng4X3QgX19zMl8xNDcgPSBfX3AyXzE0NzsgXAogIGZsb2F0MzJ4NF90IF9fcmV2MF8xNDc7ICBfX3JldjBfMTQ3ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8xNDcsIF9fczBfMTQ3LCAzLCAyLCAxLCAwKTsgXAogIGJmbG9hdDE2eDhfdCBfX3JldjFfMTQ3OyAgX19yZXYxXzE0NyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfMTQ3LCBfX3MxXzE0NywgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBiZmxvYXQxNng4X3QgX19yZXYyXzE0NzsgIF9fcmV2Ml8xNDcgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzE0NywgX19zMl8xNDcsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQzMng0X3QgX19yZXRfMTQ3OyBcCmJmbG9hdDE2eDhfdCBfX3JlaW50XzE0NyA9IF9fcmV2Ml8xNDc7IFwKZmxvYXQzMng0X3QgX19yZWludDFfMTQ3ID0gX19ub3N3YXBfc3BsYXRxX2xhbmVxX2YzMigqKGZsb2F0MzJ4NF90ICopICZfX3JlaW50XzE0NywgX19wM18xNDcpOyBcCiAgX19yZXRfMTQ3ID0gX19ub3N3YXBfdmJmZG90cV9mMzIoX19yZXYwXzE0NywgX19yZXYxXzE0NywgKihiZmxvYXQxNng4X3QgKikgJl9fcmVpbnQxXzE0Nyk7IFwKICBfX3JldF8xNDcgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8xNDcsIF9fcmV0XzE0NywgMywgMiwgMSwgMCk7IFwKICBfX3JldF8xNDc7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2YmZkb3RfbGFuZXFfZjMyKF9fcDBfMTQ4LCBfX3AxXzE0OCwgX19wMl8xNDgsIF9fcDNfMTQ4KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJfdCBfX3MwXzE0OCA9IF9fcDBfMTQ4OyBcCiAgYmZsb2F0MTZ4NF90IF9fczFfMTQ4ID0gX19wMV8xNDg7IFwKICBiZmxvYXQxNng4X3QgX19zMl8xNDggPSBfX3AyXzE0ODsgXAogIGZsb2F0MzJ4Ml90IF9fcmV0XzE0ODsgXApiZmxvYXQxNng4X3QgX19yZWludF8xNDggPSBfX3MyXzE0ODsgXApmbG9hdDMyeDJfdCBfX3JlaW50MV8xNDggPSBzcGxhdF9sYW5lcV9mMzIoKihmbG9hdDMyeDRfdCAqKSAmX19yZWludF8xNDgsIF9fcDNfMTQ4KTsgXAogIF9fcmV0XzE0OCA9IHZiZmRvdF9mMzIoX19zMF8xNDgsIF9fczFfMTQ4LCAqKGJmbG9hdDE2eDRfdCAqKSAmX19yZWludDFfMTQ4KTsgXAogIF9fcmV0XzE0ODsgXAp9KQojZWxzZQojZGVmaW5lIHZiZmRvdF9sYW5lcV9mMzIoX19wMF8xNDksIF9fcDFfMTQ5LCBfX3AyXzE0OSwgX19wM18xNDkpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4Ml90IF9fczBfMTQ5ID0gX19wMF8xNDk7IFwKICBiZmxvYXQxNng0X3QgX19zMV8xNDkgPSBfX3AxXzE0OTsgXAogIGJmbG9hdDE2eDhfdCBfX3MyXzE0OSA9IF9fcDJfMTQ5OyBcCiAgZmxvYXQzMngyX3QgX19yZXYwXzE0OTsgIF9fcmV2MF8xNDkgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzE0OSwgX19zMF8xNDksIDEsIDApOyBcCiAgYmZsb2F0MTZ4NF90IF9fcmV2MV8xNDk7ICBfX3JldjFfMTQ5ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV8xNDksIF9fczFfMTQ5LCAzLCAyLCAxLCAwKTsgXAogIGJmbG9hdDE2eDhfdCBfX3JldjJfMTQ5OyAgX19yZXYyXzE0OSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfMTQ5LCBfX3MyXzE0OSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDMyeDJfdCBfX3JldF8xNDk7IFwKYmZsb2F0MTZ4OF90IF9fcmVpbnRfMTQ5ID0gX19yZXYyXzE0OTsgXApmbG9hdDMyeDJfdCBfX3JlaW50MV8xNDkgPSBfX25vc3dhcF9zcGxhdF9sYW5lcV9mMzIoKihmbG9hdDMyeDRfdCAqKSAmX19yZWludF8xNDksIF9fcDNfMTQ5KTsgXAogIF9fcmV0XzE0OSA9IF9fbm9zd2FwX3ZiZmRvdF9mMzIoX19yZXYwXzE0OSwgX19yZXYxXzE0OSwgKihiZmxvYXQxNng0X3QgKikgJl9fcmVpbnQxXzE0OSk7IFwKICBfX3JldF8xNDkgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8xNDksIF9fcmV0XzE0OSwgMSwgMCk7IFwKICBfX3JldF8xNDk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDRfdCB2YmZtbGFsYnFfZjMyKGZsb2F0MzJ4NF90IF9fcDAsIGJmbG9hdDE2eDhfdCBfX3AxLCBiZmxvYXQxNng4X3QgX19wMikgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92YmZtbGFsYnFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgKGludDh4MTZfdClfX3AyLCA0MSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMng0X3QgdmJmbWxhbGJxX2YzMihmbG9hdDMyeDRfdCBfX3AwLCBiZmxvYXQxNng4X3QgX19wMSwgYmZsb2F0MTZ4OF90IF9fcDIpIHsKICBmbG9hdDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBiZmxvYXQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgYmZsb2F0MTZ4OF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92YmZtbGFsYnFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIChpbnQ4eDE2X3QpX19yZXYyLCA0MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MzJ4NF90IF9fbm9zd2FwX3ZiZm1sYWxicV9mMzIoZmxvYXQzMng0X3QgX19wMCwgYmZsb2F0MTZ4OF90IF9fcDEsIGJmbG9hdDE2eDhfdCBfX3AyKSB7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZiZm1sYWxicV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAoaW50OHgxNl90KV9fcDIsIDQxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDRfdCB2YmZtbGFsdHFfZjMyKGZsb2F0MzJ4NF90IF9fcDAsIGJmbG9hdDE2eDhfdCBfX3AxLCBiZmxvYXQxNng4X3QgX19wMikgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92YmZtbGFsdHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgKGludDh4MTZfdClfX3AyLCA0MSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMng0X3QgdmJmbWxhbHRxX2YzMihmbG9hdDMyeDRfdCBfX3AwLCBiZmxvYXQxNng4X3QgX19wMSwgYmZsb2F0MTZ4OF90IF9fcDIpIHsKICBmbG9hdDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBiZmxvYXQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgYmZsb2F0MTZ4OF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92YmZtbGFsdHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIChpbnQ4eDE2X3QpX19yZXYyLCA0MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MzJ4NF90IF9fbm9zd2FwX3ZiZm1sYWx0cV9mMzIoZmxvYXQzMng0X3QgX19wMCwgYmZsb2F0MTZ4OF90IF9fcDEsIGJmbG9hdDE2eDhfdCBfX3AyKSB7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZiZm1sYWx0cV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAoaW50OHgxNl90KV9fcDIsIDQxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDRfdCB2YmZtbWxhcV9mMzIoZmxvYXQzMng0X3QgX19wMCwgYmZsb2F0MTZ4OF90IF9fcDEsIGJmbG9hdDE2eDhfdCBfX3AyKSB7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZiZm1tbGFxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIChpbnQ4eDE2X3QpX19wMiwgNDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4NF90IHZiZm1tbGFxX2YzMihmbG9hdDMyeDRfdCBfX3AwLCBiZmxvYXQxNng4X3QgX19wMSwgYmZsb2F0MTZ4OF90IF9fcDIpIHsKICBmbG9hdDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBiZmxvYXQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgYmZsb2F0MTZ4OF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92YmZtbWxhcV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgKGludDh4MTZfdClfX3JldjIsIDQxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgYmZsb2F0MTZ4OF90IHZjb21iaW5lX2JmMTYoYmZsb2F0MTZ4NF90IF9fcDAsIGJmbG9hdDE2eDRfdCBfX3AxKSB7CiAgYmZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMCwgMSwgMiwgMywgNCwgNSwgNiwgNyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgYmZsb2F0MTZ4OF90IHZjb21iaW5lX2JmMTYoYmZsb2F0MTZ4NF90IF9fcDAsIGJmbG9hdDE2eDRfdCBfX3AxKSB7CiAgYmZsb2F0MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGJmbG9hdDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBiZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMCwgMSwgMiwgMywgNCwgNSwgNiwgNyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGJmbG9hdDE2eDhfdCBfX25vc3dhcF92Y29tYmluZV9iZjE2KGJmbG9hdDE2eDRfdCBfX3AwLCBiZmxvYXQxNng0X3QgX19wMSkgewogIGJmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNkZWZpbmUgdmNyZWF0ZV9iZjE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGJmbG9hdDE2eDRfdCBfX3JldDsgXAogIHVpbnQ2NF90IF9fcHJvbW90ZSA9IF9fcDA7IFwKICBfX3JldCA9IChiZmxvYXQxNng0X3QpKF9fcHJvbW90ZSk7IFwKICBfX3JldDsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDRfdCB2Y3Z0X2YzMl9iZjE2KGJmbG9hdDE2eDRfdCBfX3AwXzE1MCkgewogIGZsb2F0MzJ4NF90IF9fcmV0XzE1MDsKYmZsb2F0MTZ4NF90IF9fcmVpbnRfMTUwID0gX19wMF8xNTA7CmludDMyeDRfdCBfX3JlaW50MV8xNTAgPSB2c2hsbF9uX3MxNigqKGludDE2eDRfdCAqKSAmX19yZWludF8xNTAsIDE2KTsKICBfX3JldF8xNTAgPSAqKGZsb2F0MzJ4NF90ICopICZfX3JlaW50MV8xNTA7CiAgcmV0dXJuIF9fcmV0XzE1MDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4NF90IHZjdnRfZjMyX2JmMTYoYmZsb2F0MTZ4NF90IF9fcDBfMTUxKSB7CiAgYmZsb2F0MTZ4NF90IF9fcmV2MF8xNTE7ICBfX3JldjBfMTUxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMF8xNTEsIF9fcDBfMTUxLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldF8xNTE7CmJmbG9hdDE2eDRfdCBfX3JlaW50XzE1MSA9IF9fcmV2MF8xNTE7CmludDMyeDRfdCBfX3JlaW50MV8xNTEgPSBfX25vc3dhcF92c2hsbF9uX3MxNigqKGludDE2eDRfdCAqKSAmX19yZWludF8xNTEsIDE2KTsKICBfX3JldF8xNTEgPSAqKGZsb2F0MzJ4NF90ICopICZfX3JlaW50MV8xNTE7CiAgX19yZXRfMTUxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMTUxLCBfX3JldF8xNTEsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldF8xNTE7Cn0KX19haSBmbG9hdDMyeDRfdCBfX25vc3dhcF92Y3Z0X2YzMl9iZjE2KGJmbG9hdDE2eDRfdCBfX3AwXzE1MikgewogIGZsb2F0MzJ4NF90IF9fcmV0XzE1MjsKYmZsb2F0MTZ4NF90IF9fcmVpbnRfMTUyID0gX19wMF8xNTI7CmludDMyeDRfdCBfX3JlaW50MV8xNTIgPSBfX25vc3dhcF92c2hsbF9uX3MxNigqKGludDE2eDRfdCAqKSAmX19yZWludF8xNTIsIDE2KTsKICBfX3JldF8xNTIgPSAqKGZsb2F0MzJ4NF90ICopICZfX3JlaW50MV8xNTI7CiAgcmV0dXJuIF9fcmV0XzE1MjsKfQojZW5kaWYKCl9fYWkgZmxvYXQzMl90IHZjdnRhaF9mMzJfYmYxNihiZmxvYXQxNl90IF9fcDApIHsKICBmbG9hdDMyX3QgX19yZXQ7CmJmbG9hdDE2X3QgX19yZWludCA9IF9fcDA7CmludDMyX3QgX19yZWludDEgPSAqKGludDMyX3QgKikgJl9fcmVpbnQgPDwgMTY7CiAgX19yZXQgPSAqKGZsb2F0MzJfdCAqKSAmX19yZWludDE7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgYmZsb2F0MTZfdCB2Y3Z0aF9iZjE2X2YzMihmbG9hdDMyX3QgX19wMCkgewogIGJmbG9hdDE2X3QgX19yZXQ7CiAgX19yZXQgPSAoYmZsb2F0MTZfdCkgX19idWlsdGluX25lb25fdmN2dGhfYmYxNl9mMzIoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZkdXBoX2xhbmVfYmYxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng0X3QgX19zMCA9IF9fcDA7IFwKICBiZmxvYXQxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAoYmZsb2F0MTZfdCkgX19idWlsdGluX25lb25fdmR1cGhfbGFuZV9iZjE2KChiZmxvYXQxNng0X3QpX19zMCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZkdXBoX2xhbmVfYmYxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng0X3QgX19zMCA9IF9fcDA7IFwKICBiZmxvYXQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMywgMiwgMSwgMCk7IFwKICBiZmxvYXQxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAoYmZsb2F0MTZfdCkgX19idWlsdGluX25lb25fdmR1cGhfbGFuZV9iZjE2KChiZmxvYXQxNng0X3QpX19yZXYwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmR1cHFfbGFuZV9iZjE2KF9fcDBfMTUzLCBfX3AxXzE1MykgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4NF90IF9fczBfMTUzID0gX19wMF8xNTM7IFwKICBiZmxvYXQxNng4X3QgX19yZXRfMTUzOyBcCiAgX19yZXRfMTUzID0gc3BsYXRxX2xhbmVfYmYxNihfX3MwXzE1MywgX19wMV8xNTMpOyBcCiAgX19yZXRfMTUzOyBcCn0pCiNlbHNlCiNkZWZpbmUgdmR1cHFfbGFuZV9iZjE2KF9fcDBfMTU0LCBfX3AxXzE1NCkgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4NF90IF9fczBfMTU0ID0gX19wMF8xNTQ7IFwKICBiZmxvYXQxNng0X3QgX19yZXYwXzE1NDsgIF9fcmV2MF8xNTQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzE1NCwgX19zMF8xNTQsIDMsIDIsIDEsIDApOyBcCiAgYmZsb2F0MTZ4OF90IF9fcmV0XzE1NDsgXAogIF9fcmV0XzE1NCA9IF9fbm9zd2FwX3NwbGF0cV9sYW5lX2JmMTYoX19yZXYwXzE1NCwgX19wMV8xNTQpOyBcCiAgX19yZXRfMTU0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMTU0LCBfX3JldF8xNTQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfMTU0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmR1cF9sYW5lX2JmMTYoX19wMF8xNTUsIF9fcDFfMTU1KSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng0X3QgX19zMF8xNTUgPSBfX3AwXzE1NTsgXAogIGJmbG9hdDE2eDRfdCBfX3JldF8xNTU7IFwKICBfX3JldF8xNTUgPSBzcGxhdF9sYW5lX2JmMTYoX19zMF8xNTUsIF9fcDFfMTU1KTsgXAogIF9fcmV0XzE1NTsgXAp9KQojZWxzZQojZGVmaW5lIHZkdXBfbGFuZV9iZjE2KF9fcDBfMTU2LCBfX3AxXzE1NikgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4NF90IF9fczBfMTU2ID0gX19wMF8xNTY7IFwKICBiZmxvYXQxNng0X3QgX19yZXYwXzE1NjsgIF9fcmV2MF8xNTYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzE1NiwgX19zMF8xNTYsIDMsIDIsIDEsIDApOyBcCiAgYmZsb2F0MTZ4NF90IF9fcmV0XzE1NjsgXAogIF9fcmV0XzE1NiA9IF9fbm9zd2FwX3NwbGF0X2xhbmVfYmYxNihfX3JldjBfMTU2LCBfX3AxXzE1Nik7IFwKICBfX3JldF8xNTYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8xNTYsIF9fcmV0XzE1NiwgMywgMiwgMSwgMCk7IFwKICBfX3JldF8xNTY7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2ZHVwaF9sYW5lcV9iZjE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGJmbG9hdDE2eDhfdCBfX3MwID0gX19wMDsgXAogIGJmbG9hdDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChiZmxvYXQxNl90KSBfX2J1aWx0aW5fbmVvbl92ZHVwaF9sYW5lcV9iZjE2KChiZmxvYXQxNng4X3QpX19zMCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZkdXBoX2xhbmVxX2JmMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgYmZsb2F0MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgYmZsb2F0MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGJmbG9hdDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZkdXBoX2xhbmVxX2JmMTYoKGJmbG9hdDE2eDhfdClfX3JldjAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2ZHVwcV9sYW5lcV9iZjE2KF9fcDBfMTU3LCBfX3AxXzE1NykgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4OF90IF9fczBfMTU3ID0gX19wMF8xNTc7IFwKICBiZmxvYXQxNng4X3QgX19yZXRfMTU3OyBcCiAgX19yZXRfMTU3ID0gc3BsYXRxX2xhbmVxX2JmMTYoX19zMF8xNTcsIF9fcDFfMTU3KTsgXAogIF9fcmV0XzE1NzsgXAp9KQojZWxzZQojZGVmaW5lIHZkdXBxX2xhbmVxX2JmMTYoX19wMF8xNTgsIF9fcDFfMTU4KSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng4X3QgX19zMF8xNTggPSBfX3AwXzE1ODsgXAogIGJmbG9hdDE2eDhfdCBfX3JldjBfMTU4OyAgX19yZXYwXzE1OCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfMTU4LCBfX3MwXzE1OCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBiZmxvYXQxNng4X3QgX19yZXRfMTU4OyBcCiAgX19yZXRfMTU4ID0gX19ub3N3YXBfc3BsYXRxX2xhbmVxX2JmMTYoX19yZXYwXzE1OCwgX19wMV8xNTgpOyBcCiAgX19yZXRfMTU4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMTU4LCBfX3JldF8xNTgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfMTU4OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmR1cF9sYW5lcV9iZjE2KF9fcDBfMTU5LCBfX3AxXzE1OSkgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4OF90IF9fczBfMTU5ID0gX19wMF8xNTk7IFwKICBiZmxvYXQxNng0X3QgX19yZXRfMTU5OyBcCiAgX19yZXRfMTU5ID0gc3BsYXRfbGFuZXFfYmYxNihfX3MwXzE1OSwgX19wMV8xNTkpOyBcCiAgX19yZXRfMTU5OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmR1cF9sYW5lcV9iZjE2KF9fcDBfMTYwLCBfX3AxXzE2MCkgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4OF90IF9fczBfMTYwID0gX19wMF8xNjA7IFwKICBiZmxvYXQxNng4X3QgX19yZXYwXzE2MDsgIF9fcmV2MF8xNjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzE2MCwgX19zMF8xNjAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgYmZsb2F0MTZ4NF90IF9fcmV0XzE2MDsgXAogIF9fcmV0XzE2MCA9IF9fbm9zd2FwX3NwbGF0X2xhbmVxX2JmMTYoX19yZXYwXzE2MCwgX19wMV8xNjApOyBcCiAgX19yZXRfMTYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMTYwLCBfX3JldF8xNjAsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfMTYwOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgYmZsb2F0MTZ4OF90IHZkdXBxX25fYmYxNihiZmxvYXQxNl90IF9fcDApIHsKICBiZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoYmZsb2F0MTZ4OF90KSB7X19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMH07CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgYmZsb2F0MTZ4OF90IHZkdXBxX25fYmYxNihiZmxvYXQxNl90IF9fcDApIHsKICBiZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoYmZsb2F0MTZ4OF90KSB7X19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMCwgX19wMH07CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGJmbG9hdDE2eDRfdCB2ZHVwX25fYmYxNihiZmxvYXQxNl90IF9fcDApIHsKICBiZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoYmZsb2F0MTZ4NF90KSB7X19wMCwgX19wMCwgX19wMCwgX19wMH07CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgYmZsb2F0MTZ4NF90IHZkdXBfbl9iZjE2KGJmbG9hdDE2X3QgX19wMCkgewogIGJmbG9hdDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChiZmxvYXQxNng0X3QpIHtfX3AwLCBfX3AwLCBfX3AwLCBfX3AwfTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgYmZsb2F0MTZ4NF90IHZnZXRfaGlnaF9iZjE2KGJmbG9hdDE2eDhfdCBfX3AwKSB7CiAgYmZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNCwgNSwgNiwgNyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgYmZsb2F0MTZ4NF90IHZnZXRfaGlnaF9iZjE2KGJmbG9hdDE2eDhfdCBfX3AwKSB7CiAgYmZsb2F0MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGJmbG9hdDE2eDRfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYwLCA0LCA1LCA2LCA3KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgYmZsb2F0MTZ4NF90IF9fbm9zd2FwX3ZnZXRfaGlnaF9iZjE2KGJmbG9hdDE2eDhfdCBfX3AwKSB7CiAgYmZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNCwgNSwgNiwgNyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmdldHFfbGFuZV9iZjE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGJmbG9hdDE2eDhfdCBfX3MwID0gX19wMDsgXAogIGJmbG9hdDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChiZmxvYXQxNl90KSBfX2J1aWx0aW5fbmVvbl92Z2V0cV9sYW5lX2JmMTYoKGJmbG9hdDE2eDhfdClfX3MwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmdldHFfbGFuZV9iZjE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGJmbG9hdDE2eDhfdCBfX3MwID0gX19wMDsgXAogIGJmbG9hdDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGJmbG9hdDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChiZmxvYXQxNl90KSBfX2J1aWx0aW5fbmVvbl92Z2V0cV9sYW5lX2JmMTYoKGJmbG9hdDE2eDhfdClfX3JldjAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF92Z2V0cV9sYW5lX2JmMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgYmZsb2F0MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGJmbG9hdDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZnZXRxX2xhbmVfYmYxNigoYmZsb2F0MTZ4OF90KV9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Z2V0X2xhbmVfYmYxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng0X3QgX19zMCA9IF9fcDA7IFwKICBiZmxvYXQxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAoYmZsb2F0MTZfdCkgX19idWlsdGluX25lb25fdmdldF9sYW5lX2JmMTYoKGJmbG9hdDE2eDRfdClfX3MwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmdldF9sYW5lX2JmMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4NF90IF9fczAgPSBfX3AwOyBcCiAgYmZsb2F0MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDMsIDIsIDEsIDApOyBcCiAgYmZsb2F0MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGJmbG9hdDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZnZXRfbGFuZV9iZjE2KChiZmxvYXQxNng0X3QpX19yZXYwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgX19ub3N3YXBfdmdldF9sYW5lX2JmMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4NF90IF9fczAgPSBfX3AwOyBcCiAgYmZsb2F0MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGJmbG9hdDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZnZXRfbGFuZV9iZjE2KChiZmxvYXQxNng0X3QpX19zMCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGJmbG9hdDE2eDRfdCB2Z2V0X2xvd19iZjE2KGJmbG9hdDE2eDhfdCBfX3AwKSB7CiAgYmZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMCwgMSwgMiwgMyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgYmZsb2F0MTZ4NF90IHZnZXRfbG93X2JmMTYoYmZsb2F0MTZ4OF90IF9fcDApIHsKICBiZmxvYXQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgYmZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjAsIDAsIDEsIDIsIDMpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBiZmxvYXQxNng0X3QgX19ub3N3YXBfdmdldF9sb3dfYmYxNihiZmxvYXQxNng4X3QgX19wMCkgewogIGJmbG9hdDE2eDRfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDAsIDEsIDIsIDMpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFxX2JmMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoYmZsb2F0MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92bGQxcV92KF9fcDAsIDQzKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMXFfYmYxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9IChiZmxvYXQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3YoX19wMCwgNDMpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxX2JmMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoYmZsb2F0MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92bGQxX3YoX19wMCwgMTEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxX2JmMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoYmZsb2F0MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92bGQxX3YoX19wMCwgMTEpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxcV9kdXBfYmYxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9IChiZmxvYXQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX2R1cF92KF9fcDAsIDQzKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMXFfZHVwX2JmMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoYmZsb2F0MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92bGQxcV9kdXBfdihfX3AwLCA0Myk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFfZHVwX2JmMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoYmZsb2F0MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92bGQxX2R1cF92KF9fcDAsIDExKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMV9kdXBfYmYxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChiZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFfZHVwX3YoX19wMCwgMTEpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxcV9sYW5lX2JmMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4OF90IF9fczEgPSBfX3AxOyBcCiAgYmZsb2F0MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoYmZsb2F0MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92bGQxcV9sYW5lX3YoX19wMCwgKGludDh4MTZfdClfX3MxLCBfX3AyLCA0Myk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFxX2xhbmVfYmYxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng4X3QgX19zMSA9IF9fcDE7IFwKICBiZmxvYXQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBiZmxvYXQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9IChiZmxvYXQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX2xhbmVfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MSwgX19wMiwgNDMpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxX2xhbmVfYmYxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng0X3QgX19zMSA9IF9fcDE7IFwKICBiZmxvYXQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChiZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFfbGFuZV92KF9fcDAsIChpbnQ4eDhfdClfX3MxLCBfX3AyLCAxMSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFfbGFuZV9iZjE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGJmbG9hdDE2eDRfdCBfX3MxID0gX19wMTsgXAogIGJmbG9hdDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAzLCAyLCAxLCAwKTsgXAogIGJmbG9hdDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGJmbG9hdDE2eDRfdCkgX19idWlsdGluX25lb25fdmxkMV9sYW5lX3YoX19wMCwgKGludDh4OF90KV9fcmV2MSwgX19wMiwgMTEpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxcV9iZjE2X3gyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGJmbG9hdDE2eDh4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMXFfeDJfdigmX19yZXQsIF9fcDAsIDQzKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMXFfYmYxNl94MihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng4eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3gyX3YoJl9fcmV0LCBfX3AwLCA0Myk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFfYmYxNl94MihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng0eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFfeDJfdigmX19yZXQsIF9fcDAsIDExKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMV9iZjE2X3gyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGJmbG9hdDE2eDR4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMV94Ml92KCZfX3JldCwgX19wMCwgMTEpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxcV9iZjE2X3gzKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGJmbG9hdDE2eDh4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMXFfeDNfdigmX19yZXQsIF9fcDAsIDQzKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMXFfYmYxNl94MyhfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng4eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3gzX3YoJl9fcmV0LCBfX3AwLCA0Myk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFfYmYxNl94MyhfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng0eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFfeDNfdigmX19yZXQsIF9fcDAsIDExKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMV9iZjE2X3gzKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGJmbG9hdDE2eDR4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMV94M192KCZfX3JldCwgX19wMCwgMTEpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxcV9iZjE2X3g0KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGJmbG9hdDE2eDh4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMXFfeDRfdigmX19yZXQsIF9fcDAsIDQzKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMXFfYmYxNl94NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng4eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3g0X3YoJl9fcmV0LCBfX3AwLCA0Myk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbM10sIF9fcmV0LnZhbFszXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFfYmYxNl94NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng0eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFfeDRfdigmX19yZXQsIF9fcDAsIDExKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMV9iZjE2X3g0KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGJmbG9hdDE2eDR4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMV94NF92KCZfX3JldCwgX19wMCwgMTEpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzNdLCBfX3JldC52YWxbM10sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQycV9iZjE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGJmbG9hdDE2eDh4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMnFfdigmX19yZXQsIF9fcDAsIDQzKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMnFfYmYxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng4eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJxX3YoJl9fcmV0LCBfX3AwLCA0Myk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDJfYmYxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng0eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJfdigmX19yZXQsIF9fcDAsIDExKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMl9iZjE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGJmbG9hdDE2eDR4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMl92KCZfX3JldCwgX19wMCwgMTEpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQycV9kdXBfYmYxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng4eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJxX2R1cF92KCZfX3JldCwgX19wMCwgNDMpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQycV9kdXBfYmYxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng4eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJxX2R1cF92KCZfX3JldCwgX19wMCwgNDMpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQyX2R1cF9iZjE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGJmbG9hdDE2eDR4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMl9kdXBfdigmX19yZXQsIF9fcDAsIDExKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMl9kdXBfYmYxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng0eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJfZHVwX3YoJl9fcmV0LCBfX3AwLCAxMSk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDJxX2xhbmVfYmYxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng4eDJfdCBfX3MxID0gX19wMTsgXAogIGJmbG9hdDE2eDh4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMnFfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgX19wMiwgNDMpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQycV9sYW5lX2JmMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4OHgyX3QgX19zMSA9IF9fcDE7IFwKICBiZmxvYXQxNng4eDJfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgYmZsb2F0MTZ4OHgyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQycV9sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgX19wMiwgNDMpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQyX2xhbmVfYmYxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng0eDJfdCBfX3MxID0gX19wMTsgXAogIGJmbG9hdDE2eDR4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMl9sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgX19wMiwgMTEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQyX2xhbmVfYmYxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng0eDJfdCBfX3MxID0gX19wMTsgXAogIGJmbG9hdDE2eDR4Ml90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBiZmxvYXQxNng0eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCBfX3AyLCAxMSk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDNxX2JmMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4OHgzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzcV92KCZfX3JldCwgX19wMCwgNDMpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQzcV9iZjE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGJmbG9hdDE2eDh4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM3FfdigmX19yZXQsIF9fcDAsIDQzKTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkM19iZjE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGJmbG9hdDE2eDR4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM192KCZfX3JldCwgX19wMCwgMTEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQzX2JmMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4NHgzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzX3YoJl9fcmV0LCBfX3AwLCAxMSk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDNxX2R1cF9iZjE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGJmbG9hdDE2eDh4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM3FfZHVwX3YoJl9fcmV0LCBfX3AwLCA0Myk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDNxX2R1cF9iZjE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGJmbG9hdDE2eDh4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM3FfZHVwX3YoJl9fcmV0LCBfX3AwLCA0Myk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDNfZHVwX2JmMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4NHgzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzX2R1cF92KCZfX3JldCwgX19wMCwgMTEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQzX2R1cF9iZjE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGJmbG9hdDE2eDR4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM19kdXBfdigmX19yZXQsIF9fcDAsIDExKTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkM3FfbGFuZV9iZjE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGJmbG9hdDE2eDh4M190IF9fczEgPSBfX3AxOyBcCiAgYmZsb2F0MTZ4OHgzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzcV9sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCBfX3AyLCA0Myk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDNxX2xhbmVfYmYxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng4eDNfdCBfX3MxID0gX19wMTsgXAogIGJmbG9hdDE2eDh4M190IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGJmbG9hdDE2eDh4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM3FfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgX19wMiwgNDMpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQzX2xhbmVfYmYxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng0eDNfdCBfX3MxID0gX19wMTsgXAogIGJmbG9hdDE2eDR4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM19sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgKGludDh4OF90KV9fczEudmFsWzJdLCBfX3AyLCAxMSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDNfbGFuZV9iZjE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGJmbG9hdDE2eDR4M190IF9fczEgPSBfX3AxOyBcCiAgYmZsb2F0MTZ4NHgzX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDMsIDIsIDEsIDApOyBcCiAgYmZsb2F0MTZ4NHgzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgKGludDh4OF90KV9fcmV2MS52YWxbMl0sIF9fcDIsIDExKTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkNHFfYmYxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng4eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRxX3YoJl9fcmV0LCBfX3AwLCA0Myk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDRxX2JmMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4OHg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0cV92KCZfX3JldCwgX19wMCwgNDMpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzNdLCBfX3JldC52YWxbM10sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQ0X2JmMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4NHg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0X3YoJl9fcmV0LCBfX3AwLCAxMSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDRfYmYxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng0eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRfdigmX19yZXQsIF9fcDAsIDExKTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFszXSwgX19yZXQudmFsWzNdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkNHFfZHVwX2JmMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4OHg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0cV9kdXBfdigmX19yZXQsIF9fcDAsIDQzKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkNHFfZHVwX2JmMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4OHg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0cV9kdXBfdigmX19yZXQsIF9fcDAsIDQzKTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFszXSwgX19yZXQudmFsWzNdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkNF9kdXBfYmYxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng0eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRfZHVwX3YoJl9fcmV0LCBfX3AwLCAxMSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDRfZHVwX2JmMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4NHg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0X2R1cF92KCZfX3JldCwgX19wMCwgMTEpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzNdLCBfX3JldC52YWxbM10sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQ0cV9sYW5lX2JmMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4OHg0X3QgX19zMSA9IF9fcDE7IFwKICBiZmxvYXQxNng4eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRxX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIChpbnQ4eDE2X3QpX19zMS52YWxbMl0sIChpbnQ4eDE2X3QpX19zMS52YWxbM10sIF9fcDIsIDQzKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkNHFfbGFuZV9iZjE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGJmbG9hdDE2eDh4NF90IF9fczEgPSBfX3AxOyBcCiAgYmZsb2F0MTZ4OHg0X3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzNdLCBfX3MxLnZhbFszXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBiZmxvYXQxNng4eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRxX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMl0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFszXSwgX19wMiwgNDMpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzNdLCBfX3JldC52YWxbM10sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQ0X2xhbmVfYmYxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng0eDRfdCBfX3MxID0gX19wMTsgXAogIGJmbG9hdDE2eDR4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNF9sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgKGludDh4OF90KV9fczEudmFsWzJdLCAoaW50OHg4X3QpX19zMS52YWxbM10sIF9fcDIsIDExKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkNF9sYW5lX2JmMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4NHg0X3QgX19zMSA9IF9fcDE7IFwKICBiZmxvYXQxNng0eDRfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbM10sIF9fczEudmFsWzNdLCAzLCAyLCAxLCAwKTsgXAogIGJmbG9hdDE2eDR4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNF9sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHg4X3QpX19yZXYxLnZhbFswXSwgKGludDh4OF90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDhfdClfX3JldjEudmFsWzJdLCAoaW50OHg4X3QpX19yZXYxLnZhbFszXSwgX19wMiwgMTEpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzNdLCBfX3JldC52YWxbM10sIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c2V0cV9sYW5lX2JmMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZfdCBfX3MwID0gX19wMDsgXAogIGJmbG9hdDE2eDhfdCBfX3MxID0gX19wMTsgXAogIGJmbG9hdDE2eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGJmbG9hdDE2eDhfdCkgX19idWlsdGluX25lb25fdnNldHFfbGFuZV9iZjE2KF9fczAsIChiZmxvYXQxNng4X3QpX19zMSwgX19wMik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZzZXRxX2xhbmVfYmYxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNl90IF9fczAgPSBfX3AwOyBcCiAgYmZsb2F0MTZ4OF90IF9fczEgPSBfX3AxOyBcCiAgYmZsb2F0MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgYmZsb2F0MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoYmZsb2F0MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92c2V0cV9sYW5lX2JmMTYoX19zMCwgKGJmbG9hdDE2eDhfdClfX3JldjEsIF9fcDIpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF92c2V0cV9sYW5lX2JmMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZfdCBfX3MwID0gX19wMDsgXAogIGJmbG9hdDE2eDhfdCBfX3MxID0gX19wMTsgXAogIGJmbG9hdDE2eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGJmbG9hdDE2eDhfdCkgX19idWlsdGluX25lb25fdnNldHFfbGFuZV9iZjE2KF9fczAsIChiZmxvYXQxNng4X3QpX19zMSwgX19wMik7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzZXRfbGFuZV9iZjE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGJmbG9hdDE2X3QgX19zMCA9IF9fcDA7IFwKICBiZmxvYXQxNng0X3QgX19zMSA9IF9fcDE7IFwKICBiZmxvYXQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChiZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzZXRfbGFuZV9iZjE2KF9fczAsIChiZmxvYXQxNng0X3QpX19zMSwgX19wMik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZzZXRfbGFuZV9iZjE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGJmbG9hdDE2X3QgX19zMCA9IF9fcDA7IFwKICBiZmxvYXQxNng0X3QgX19zMSA9IF9fcDE7IFwKICBiZmxvYXQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMywgMiwgMSwgMCk7IFwKICBiZmxvYXQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChiZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzZXRfbGFuZV9iZjE2KF9fczAsIChiZmxvYXQxNng0X3QpX19yZXYxLCBfX3AyKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgX19ub3N3YXBfdnNldF9sYW5lX2JmMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZfdCBfX3MwID0gX19wMDsgXAogIGJmbG9hdDE2eDRfdCBfX3MxID0gX19wMTsgXAogIGJmbG9hdDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGJmbG9hdDE2eDRfdCkgX19idWlsdGluX25lb25fdnNldF9sYW5lX2JmMTYoX19zMCwgKGJmbG9hdDE2eDRfdClfX3MxLCBfX3AyKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MXFfYmYxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng4X3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV92KF9fcDAsIChpbnQ4eDE2X3QpX19zMSwgNDMpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MXFfYmYxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng4X3QgX19zMSA9IF9fcDE7IFwKICBiZmxvYXQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLCA0Myk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxX2JmMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4NF90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MV92KF9fcDAsIChpbnQ4eDhfdClfX3MxLCAxMSk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxX2JmMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4NF90IF9fczEgPSBfX3AxOyBcCiAgYmZsb2F0MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MV92KF9fcDAsIChpbnQ4eDhfdClfX3JldjEsIDExKTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDFxX2xhbmVfYmYxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng4X3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV9sYW5lX3YoX19wMCwgKGludDh4MTZfdClfX3MxLCBfX3AyLCA0Myk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxcV9sYW5lX2JmMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4OF90IF9fczEgPSBfX3AxOyBcCiAgYmZsb2F0MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLCBfX3AyLCA0Myk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxX2xhbmVfYmYxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng0X3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX2xhbmVfdihfX3AwLCAoaW50OHg4X3QpX19zMSwgX19wMiwgMTEpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MV9sYW5lX2JmMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4NF90IF9fczEgPSBfX3AxOyBcCiAgYmZsb2F0MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MV9sYW5lX3YoX19wMCwgKGludDh4OF90KV9fcmV2MSwgX19wMiwgMTEpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MXFfYmYxNl94MihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng4eDJfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFxX3gyX3YoX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgNDMpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MXFfYmYxNl94MihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng4eDJfdCBfX3MxID0gX19wMTsgXAogIGJmbG9hdDE2eDh4Ml90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV94Ml92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCA0Myk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxX2JmMTZfeDIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4NHgyX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX3gyX3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIDExKTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDFfYmYxNl94MihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng0eDJfdCBfX3MxID0gX19wMTsgXAogIGJmbG9hdDE2eDR4Ml90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX3gyX3YoX19wMCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCAxMSk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxcV9iZjE2X3gzKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGJmbG9hdDE2eDh4M190IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfeDNfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCA0Myk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxcV9iZjE2X3gzKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGJmbG9hdDE2eDh4M190IF9fczEgPSBfX3AxOyBcCiAgYmZsb2F0MTZ4OHgzX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfeDNfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgKGludDh4MTZfdClfX3JldjEudmFsWzJdLCA0Myk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxX2JmMTZfeDMoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4NHgzX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX3gzX3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIChpbnQ4eDhfdClfX3MxLnZhbFsyXSwgMTEpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MV9iZjE2X3gzKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGJmbG9hdDE2eDR4M190IF9fczEgPSBfX3AxOyBcCiAgYmZsb2F0MTZ4NHgzX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MV94M192KF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgKGludDh4OF90KV9fcmV2MS52YWxbMl0sIDExKTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDFxX2JmMTZfeDQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4OHg0X3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV94NF92KF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIChpbnQ4eDE2X3QpX19zMS52YWxbMl0sIChpbnQ4eDE2X3QpX19zMS52YWxbM10sIDQzKTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDFxX2JmMTZfeDQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4OHg0X3QgX19zMSA9IF9fcDE7IFwKICBiZmxvYXQxNng4eDRfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbM10sIF9fczEudmFsWzNdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFxX3g0X3YoX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgKGludDh4MTZfdClfX3JldjEudmFsWzNdLCA0Myk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxX2JmMTZfeDQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4NHg0X3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX3g0X3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIChpbnQ4eDhfdClfX3MxLnZhbFsyXSwgKGludDh4OF90KV9fczEudmFsWzNdLCAxMSk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxX2JmMTZfeDQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4NHg0X3QgX19zMSA9IF9fcDE7IFwKICBiZmxvYXQxNng0eDRfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbM10sIF9fczEudmFsWzNdLCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFfeDRfdihfX3AwLCAoaW50OHg4X3QpX19yZXYxLnZhbFswXSwgKGludDh4OF90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDhfdClfX3JldjEudmFsWzJdLCAoaW50OHg4X3QpX19yZXYxLnZhbFszXSwgMTEpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MnFfYmYxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng4eDJfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDJxX3YoX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgNDMpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MnFfYmYxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng4eDJfdCBfX3MxID0gX19wMTsgXAogIGJmbG9hdDE2eDh4Ml90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QycV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCA0Myk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QyX2JmMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4NHgyX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QyX3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIDExKTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDJfYmYxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng0eDJfdCBfX3MxID0gX19wMTsgXAogIGJmbG9hdDE2eDR4Ml90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QyX3YoX19wMCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCAxMSk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QycV9sYW5lX2JmMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4OHgyX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QycV9sYW5lX3YoX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgX19wMiwgNDMpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MnFfbGFuZV9iZjE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGJmbG9hdDE2eDh4Ml90IF9fczEgPSBfX3AxOyBcCiAgYmZsb2F0MTZ4OHgyX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDJxX2xhbmVfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgX19wMiwgNDMpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0Ml9sYW5lX2JmMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4NHgyX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QyX2xhbmVfdihfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgX19wMiwgMTEpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0Ml9sYW5lX2JmMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4NHgyX3QgX19zMSA9IF9fcDE7IFwKICBiZmxvYXQxNng0eDJfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0Ml9sYW5lX3YoX19wMCwgKGludDh4OF90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDhfdClfX3JldjEudmFsWzFdLCBfX3AyLCAxMSk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QzcV9iZjE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGJmbG9hdDE2eDh4M190IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0M3FfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCA0Myk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QzcV9iZjE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGJmbG9hdDE2eDh4M190IF9fczEgPSBfX3AxOyBcCiAgYmZsb2F0MTZ4OHgzX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0M3FfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgKGludDh4MTZfdClfX3JldjEudmFsWzJdLCA0Myk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QzX2JmMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4NHgzX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QzX3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIChpbnQ4eDhfdClfX3MxLnZhbFsyXSwgMTEpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0M19iZjE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGJmbG9hdDE2eDR4M190IF9fczEgPSBfX3AxOyBcCiAgYmZsb2F0MTZ4NHgzX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0M192KF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgKGludDh4OF90KV9fcmV2MS52YWxbMl0sIDExKTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDNxX2xhbmVfYmYxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng4eDNfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDNxX2xhbmVfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCBfX3AyLCA0Myk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QzcV9sYW5lX2JmMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4OHgzX3QgX19zMSA9IF9fcDE7IFwKICBiZmxvYXQxNng4eDNfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QzcV9sYW5lX3YoX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgX19wMiwgNDMpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0M19sYW5lX2JmMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4NHgzX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QzX2xhbmVfdihfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgKGludDh4OF90KV9fczEudmFsWzJdLCBfX3AyLCAxMSk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QzX2xhbmVfYmYxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng0eDNfdCBfX3MxID0gX19wMTsgXAogIGJmbG9hdDE2eDR4M190IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDNfbGFuZV92KF9fcDAsIChpbnQ4eDhfdClfX3JldjEudmFsWzBdLCAoaW50OHg4X3QpX19yZXYxLnZhbFsxXSwgKGludDh4OF90KV9fcmV2MS52YWxbMl0sIF9fcDIsIDExKTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDRxX2JmMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4OHg0X3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3Q0cV92KF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIChpbnQ4eDE2X3QpX19zMS52YWxbMl0sIChpbnQ4eDE2X3QpX19zMS52YWxbM10sIDQzKTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDRxX2JmMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4OHg0X3QgX19zMSA9IF9fcDE7IFwKICBiZmxvYXQxNng4eDRfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbM10sIF9fczEudmFsWzNdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDRxX3YoX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgKGludDh4MTZfdClfX3JldjEudmFsWzNdLCA0Myk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3Q0X2JmMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4NHg0X3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3Q0X3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIChpbnQ4eDhfdClfX3MxLnZhbFsyXSwgKGludDh4OF90KV9fczEudmFsWzNdLCAxMSk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3Q0X2JmMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4NHg0X3QgX19zMSA9IF9fcDE7IFwKICBiZmxvYXQxNng0eDRfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbM10sIF9fczEudmFsWzNdLCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDRfdihfX3AwLCAoaW50OHg4X3QpX19yZXYxLnZhbFswXSwgKGludDh4OF90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDhfdClfX3JldjEudmFsWzJdLCAoaW50OHg4X3QpX19yZXYxLnZhbFszXSwgMTEpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0NHFfbGFuZV9iZjE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGJmbG9hdDE2eDh4NF90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0NHFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIChpbnQ4eDE2X3QpX19zMS52YWxbMl0sIChpbnQ4eDE2X3QpX19zMS52YWxbM10sIF9fcDIsIDQzKTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDRxX2xhbmVfYmYxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBiZmxvYXQxNng4eDRfdCBfX3MxID0gX19wMTsgXAogIGJmbG9hdDE2eDh4NF90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFszXSwgX19zMS52YWxbM10sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0NHFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMl0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFszXSwgX19wMiwgNDMpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0NF9sYW5lX2JmMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4NHg0X3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3Q0X2xhbmVfdihfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgKGludDh4OF90KV9fczEudmFsWzJdLCAoaW50OHg4X3QpX19zMS52YWxbM10sIF9fcDIsIDExKTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDRfbGFuZV9iZjE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGJmbG9hdDE2eDR4NF90IF9fczEgPSBfX3AxOyBcCiAgYmZsb2F0MTZ4NHg0X3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzNdLCBfX3MxLnZhbFszXSwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3Q0X2xhbmVfdihfX3AwLCAoaW50OHg4X3QpX19yZXYxLnZhbFswXSwgKGludDh4OF90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDhfdClfX3JldjEudmFsWzJdLCAoaW50OHg4X3QpX19yZXYxLnZhbFszXSwgX19wMiwgMTEpOyBcCn0pCiNlbmRpZgoKI2VuZGlmCiNpZiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfQkYxNl9WRUNUT1JfQVJJVEhNRVRJQykgJiYgIWRlZmluZWQoX19hYXJjaDY0X18pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGJmbG9hdDE2eDRfdCBfX2EzMl92Y3Z0X2JmMTZfZjMyKGZsb2F0MzJ4NF90IF9fcDApIHsKICBiZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoYmZsb2F0MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl9fX2EzMl92Y3Z0X2JmMTZfdigoaW50OHgxNl90KV9fcDAsIDExKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBiZmxvYXQxNng0X3QgX19hMzJfdmN2dF9iZjE2X2YzMihmbG9hdDMyeDRfdCBfX3AwKSB7CiAgZmxvYXQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgYmZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGJmbG9hdDE2eDRfdCkgX19idWlsdGluX25lb25fX19hMzJfdmN2dF9iZjE2X3YoKGludDh4MTZfdClfX3JldjAsIDExKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgYmZsb2F0MTZ4NF90IF9fbm9zd2FwX19fYTMyX3ZjdnRfYmYxNl9mMzIoZmxvYXQzMng0X3QgX19wMCkgewogIGJmbG9hdDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChiZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX19fYTMyX3ZjdnRfYmYxNl92KChpbnQ4eDE2X3QpX19wMCwgMTEpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGJmbG9hdDE2eDRfdCB2Y3Z0X2JmMTZfZjMyKGZsb2F0MzJ4NF90IF9fcDApIHsKICBiZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2EzMl92Y3Z0X2JmMTZfZjMyKF9fcDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGJmbG9hdDE2eDRfdCB2Y3Z0X2JmMTZfZjMyKGZsb2F0MzJ4NF90IF9fcDApIHsKICBmbG9hdDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBiZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF9fX2EzMl92Y3Z0X2JmMTZfZjMyKF9fcmV2MCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGJmbG9hdDE2eDhfdCB2Y3Z0cV9oaWdoX2JmMTZfZjMyKGJmbG9hdDE2eDhfdCBfX3AwLCBmbG9hdDMyeDRfdCBfX3AxKSB7CiAgYmZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gdmNvbWJpbmVfYmYxNihfX2EzMl92Y3Z0X2JmMTZfZjMyKF9fcDEpLCB2Z2V0X2xvd19iZjE2KF9fcDApKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBiZmxvYXQxNng4X3QgdmN2dHFfaGlnaF9iZjE2X2YzMihiZmxvYXQxNng4X3QgX19wMCwgZmxvYXQzMng0X3QgX19wMSkgewogIGJmbG9hdDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBiZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92Y29tYmluZV9iZjE2KF9fbm9zd2FwX19fYTMyX3ZjdnRfYmYxNl9mMzIoX19yZXYxKSwgX19ub3N3YXBfdmdldF9sb3dfYmYxNihfX3JldjApKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgYmZsb2F0MTZ4OF90IHZjdnRxX2xvd19iZjE2X2YzMihmbG9hdDMyeDRfdCBfX3AwKSB7CiAgYmZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gdmNvbWJpbmVfYmYxNigoYmZsb2F0MTZ4NF90KSgwVUxMKSwgX19hMzJfdmN2dF9iZjE2X2YzMihfX3AwKSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgYmZsb2F0MTZ4OF90IHZjdnRxX2xvd19iZjE2X2YzMihmbG9hdDMyeDRfdCBfX3AwKSB7CiAgZmxvYXQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgYmZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdmNvbWJpbmVfYmYxNigoYmZsb2F0MTZ4NF90KSgwVUxMKSwgX19ub3N3YXBfX19hMzJfdmN2dF9iZjE2X2YzMihfX3JldjApKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2VuZGlmCiNpZiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfQkYxNl9WRUNUT1JfQVJJVEhNRVRJQykgJiYgZGVmaW5lZChfX2FhcmNoNjRfXykKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgYmZsb2F0MTZ4OF90IF9fYTY0X3ZjdnRxX2xvd19iZjE2X2YzMihmbG9hdDMyeDRfdCBfX3AwKSB7CiAgYmZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGJmbG9hdDE2eDhfdCkgX19idWlsdGluX25lb25fX19hNjRfdmN2dHFfbG93X2JmMTZfdigoaW50OHgxNl90KV9fcDAsIDQzKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBiZmxvYXQxNng4X3QgX19hNjRfdmN2dHFfbG93X2JmMTZfZjMyKGZsb2F0MzJ4NF90IF9fcDApIHsKICBmbG9hdDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBiZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoYmZsb2F0MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl9fX2E2NF92Y3Z0cV9sb3dfYmYxNl92KChpbnQ4eDE2X3QpX19yZXYwLCA0Myk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGJmbG9hdDE2eDhfdCBfX25vc3dhcF9fX2E2NF92Y3Z0cV9sb3dfYmYxNl9mMzIoZmxvYXQzMng0X3QgX19wMCkgewogIGJmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChiZmxvYXQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX19fYTY0X3ZjdnRxX2xvd19iZjE2X3YoKGludDh4MTZfdClfX3AwLCA0Myk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmNvcHlxX2xhbmVfYmYxNihfX3AwXzE2MSwgX19wMV8xNjEsIF9fcDJfMTYxLCBfX3AzXzE2MSkgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4OF90IF9fczBfMTYxID0gX19wMF8xNjE7IFwKICBiZmxvYXQxNng0X3QgX19zMl8xNjEgPSBfX3AyXzE2MTsgXAogIGJmbG9hdDE2eDhfdCBfX3JldF8xNjE7IFwKICBfX3JldF8xNjEgPSB2c2V0cV9sYW5lX2JmMTYodmdldF9sYW5lX2JmMTYoX19zMl8xNjEsIF9fcDNfMTYxKSwgX19zMF8xNjEsIF9fcDFfMTYxKTsgXAogIF9fcmV0XzE2MTsgXAp9KQojZWxzZQojZGVmaW5lIHZjb3B5cV9sYW5lX2JmMTYoX19wMF8xNjIsIF9fcDFfMTYyLCBfX3AyXzE2MiwgX19wM18xNjIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGJmbG9hdDE2eDhfdCBfX3MwXzE2MiA9IF9fcDBfMTYyOyBcCiAgYmZsb2F0MTZ4NF90IF9fczJfMTYyID0gX19wMl8xNjI7IFwKICBiZmxvYXQxNng4X3QgX19yZXYwXzE2MjsgIF9fcmV2MF8xNjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzE2MiwgX19zMF8xNjIsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgYmZsb2F0MTZ4NF90IF9fcmV2Ml8xNjI7ICBfX3JldjJfMTYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl8xNjIsIF9fczJfMTYyLCAzLCAyLCAxLCAwKTsgXAogIGJmbG9hdDE2eDhfdCBfX3JldF8xNjI7IFwKICBfX3JldF8xNjIgPSBfX25vc3dhcF92c2V0cV9sYW5lX2JmMTYoX19ub3N3YXBfdmdldF9sYW5lX2JmMTYoX19yZXYyXzE2MiwgX19wM18xNjIpLCBfX3JldjBfMTYyLCBfX3AxXzE2Mik7IFwKICBfX3JldF8xNjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8xNjIsIF9fcmV0XzE2MiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF8xNjI7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Y29weV9sYW5lX2JmMTYoX19wMF8xNjMsIF9fcDFfMTYzLCBfX3AyXzE2MywgX19wM18xNjMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGJmbG9hdDE2eDRfdCBfX3MwXzE2MyA9IF9fcDBfMTYzOyBcCiAgYmZsb2F0MTZ4NF90IF9fczJfMTYzID0gX19wMl8xNjM7IFwKICBiZmxvYXQxNng0X3QgX19yZXRfMTYzOyBcCiAgX19yZXRfMTYzID0gdnNldF9sYW5lX2JmMTYodmdldF9sYW5lX2JmMTYoX19zMl8xNjMsIF9fcDNfMTYzKSwgX19zMF8xNjMsIF9fcDFfMTYzKTsgXAogIF9fcmV0XzE2MzsgXAp9KQojZWxzZQojZGVmaW5lIHZjb3B5X2xhbmVfYmYxNihfX3AwXzE2NCwgX19wMV8xNjQsIF9fcDJfMTY0LCBfX3AzXzE2NCkgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4NF90IF9fczBfMTY0ID0gX19wMF8xNjQ7IFwKICBiZmxvYXQxNng0X3QgX19zMl8xNjQgPSBfX3AyXzE2NDsgXAogIGJmbG9hdDE2eDRfdCBfX3JldjBfMTY0OyAgX19yZXYwXzE2NCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfMTY0LCBfX3MwXzE2NCwgMywgMiwgMSwgMCk7IFwKICBiZmxvYXQxNng0X3QgX19yZXYyXzE2NDsgIF9fcmV2Ml8xNjQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzE2NCwgX19zMl8xNjQsIDMsIDIsIDEsIDApOyBcCiAgYmZsb2F0MTZ4NF90IF9fcmV0XzE2NDsgXAogIF9fcmV0XzE2NCA9IF9fbm9zd2FwX3ZzZXRfbGFuZV9iZjE2KF9fbm9zd2FwX3ZnZXRfbGFuZV9iZjE2KF9fcmV2Ml8xNjQsIF9fcDNfMTY0KSwgX19yZXYwXzE2NCwgX19wMV8xNjQpOyBcCiAgX19yZXRfMTY0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMTY0LCBfX3JldF8xNjQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfMTY0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmNvcHlxX2xhbmVxX2JmMTYoX19wMF8xNjUsIF9fcDFfMTY1LCBfX3AyXzE2NSwgX19wM18xNjUpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGJmbG9hdDE2eDhfdCBfX3MwXzE2NSA9IF9fcDBfMTY1OyBcCiAgYmZsb2F0MTZ4OF90IF9fczJfMTY1ID0gX19wMl8xNjU7IFwKICBiZmxvYXQxNng4X3QgX19yZXRfMTY1OyBcCiAgX19yZXRfMTY1ID0gdnNldHFfbGFuZV9iZjE2KHZnZXRxX2xhbmVfYmYxNihfX3MyXzE2NSwgX19wM18xNjUpLCBfX3MwXzE2NSwgX19wMV8xNjUpOyBcCiAgX19yZXRfMTY1OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmNvcHlxX2xhbmVxX2JmMTYoX19wMF8xNjYsIF9fcDFfMTY2LCBfX3AyXzE2NiwgX19wM18xNjYpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGJmbG9hdDE2eDhfdCBfX3MwXzE2NiA9IF9fcDBfMTY2OyBcCiAgYmZsb2F0MTZ4OF90IF9fczJfMTY2ID0gX19wMl8xNjY7IFwKICBiZmxvYXQxNng4X3QgX19yZXYwXzE2NjsgIF9fcmV2MF8xNjYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzE2NiwgX19zMF8xNjYsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgYmZsb2F0MTZ4OF90IF9fcmV2Ml8xNjY7ICBfX3JldjJfMTY2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl8xNjYsIF9fczJfMTY2LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGJmbG9hdDE2eDhfdCBfX3JldF8xNjY7IFwKICBfX3JldF8xNjYgPSBfX25vc3dhcF92c2V0cV9sYW5lX2JmMTYoX19ub3N3YXBfdmdldHFfbGFuZV9iZjE2KF9fcmV2Ml8xNjYsIF9fcDNfMTY2KSwgX19yZXYwXzE2NiwgX19wMV8xNjYpOyBcCiAgX19yZXRfMTY2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMTY2LCBfX3JldF8xNjYsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfMTY2OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmNvcHlfbGFuZXFfYmYxNihfX3AwXzE2NywgX19wMV8xNjcsIF9fcDJfMTY3LCBfX3AzXzE2NykgX19leHRlbnNpb25fXyAoeyBcCiAgYmZsb2F0MTZ4NF90IF9fczBfMTY3ID0gX19wMF8xNjc7IFwKICBiZmxvYXQxNng4X3QgX19zMl8xNjcgPSBfX3AyXzE2NzsgXAogIGJmbG9hdDE2eDRfdCBfX3JldF8xNjc7IFwKICBfX3JldF8xNjcgPSB2c2V0X2xhbmVfYmYxNih2Z2V0cV9sYW5lX2JmMTYoX19zMl8xNjcsIF9fcDNfMTY3KSwgX19zMF8xNjcsIF9fcDFfMTY3KTsgXAogIF9fcmV0XzE2NzsgXAp9KQojZWxzZQojZGVmaW5lIHZjb3B5X2xhbmVxX2JmMTYoX19wMF8xNjgsIF9fcDFfMTY4LCBfX3AyXzE2OCwgX19wM18xNjgpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGJmbG9hdDE2eDRfdCBfX3MwXzE2OCA9IF9fcDBfMTY4OyBcCiAgYmZsb2F0MTZ4OF90IF9fczJfMTY4ID0gX19wMl8xNjg7IFwKICBiZmxvYXQxNng0X3QgX19yZXYwXzE2ODsgIF9fcmV2MF8xNjggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzE2OCwgX19zMF8xNjgsIDMsIDIsIDEsIDApOyBcCiAgYmZsb2F0MTZ4OF90IF9fcmV2Ml8xNjg7ICBfX3JldjJfMTY4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl8xNjgsIF9fczJfMTY4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGJmbG9hdDE2eDRfdCBfX3JldF8xNjg7IFwKICBfX3JldF8xNjggPSBfX25vc3dhcF92c2V0X2xhbmVfYmYxNihfX25vc3dhcF92Z2V0cV9sYW5lX2JmMTYoX19yZXYyXzE2OCwgX19wM18xNjgpLCBfX3JldjBfMTY4LCBfX3AxXzE2OCk7IFwKICBfX3JldF8xNjggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8xNjgsIF9fcmV0XzE2OCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF8xNjg7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBiZmxvYXQxNng0X3QgdmN2dF9iZjE2X2YzMihmbG9hdDMyeDRfdCBfX3AwKSB7CiAgYmZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gdmdldF9sb3dfYmYxNihfX2E2NF92Y3Z0cV9sb3dfYmYxNl9mMzIoX19wMCkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGJmbG9hdDE2eDRfdCB2Y3Z0X2JmMTZfZjMyKGZsb2F0MzJ4NF90IF9fcDApIHsKICBmbG9hdDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBiZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92Z2V0X2xvd19iZjE2KF9fbm9zd2FwX19fYTY0X3ZjdnRxX2xvd19iZjE2X2YzMihfX3JldjApKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgYmZsb2F0MTZ4OF90IHZjdnRxX2hpZ2hfYmYxNl9mMzIoYmZsb2F0MTZ4OF90IF9fcDAsIGZsb2F0MzJ4NF90IF9fcDEpIHsKICBiZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoYmZsb2F0MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0cV9oaWdoX2JmMTZfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNDMpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGJmbG9hdDE2eDhfdCB2Y3Z0cV9oaWdoX2JmMTZfZjMyKGJmbG9hdDE2eDhfdCBfX3AwLCBmbG9hdDMyeDRfdCBfX3AxKSB7CiAgYmZsb2F0MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGZsb2F0MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGJmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChiZmxvYXQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRxX2hpZ2hfYmYxNl92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNDMpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBiZmxvYXQxNng4X3QgdmN2dHFfbG93X2JmMTZfZjMyKGZsb2F0MzJ4NF90IF9fcDApIHsKICBiZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2E2NF92Y3Z0cV9sb3dfYmYxNl9mMzIoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgYmZsb2F0MTZ4OF90IHZjdnRxX2xvd19iZjE2X2YzMihmbG9hdDMyeDRfdCBfX3AwKSB7CiAgZmxvYXQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgYmZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfX19hNjRfdmN2dHFfbG93X2JmMTZfZjMyKF9fcmV2MCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNlbmRpZgojaWYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX0NPTVBMRVgpCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4Ml90IHZjYWRkX3JvdDI3MF9mMzIoZmxvYXQzMngyX3QgX19wMCwgZmxvYXQzMngyX3QgX19wMSkgewogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y2FkZF9yb3QyNzBfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4Ml90IHZjYWRkX3JvdDI3MF9mMzIoZmxvYXQzMngyX3QgX19wMCwgZmxvYXQzMngyX3QgX19wMSkgewogIGZsb2F0MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y2FkZF9yb3QyNzBfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCA5KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMngyX3QgdmNhZGRfcm90OTBfZjMyKGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0MzJ4Ml90IF9fcDEpIHsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdmNhZGRfcm90OTBfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4Ml90IHZjYWRkX3JvdDkwX2YzMihmbG9hdDMyeDJfdCBfX3AwLCBmbG9hdDMyeDJfdCBfX3AxKSB7CiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjYWRkX3JvdDkwX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgOSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4NF90IHZjYWRkcV9yb3QyNzBfZjMyKGZsb2F0MzJ4NF90IF9fcDAsIGZsb2F0MzJ4NF90IF9fcDEpIHsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdmNhZGRxX3JvdDI3MF92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA0MSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMng0X3QgdmNhZGRxX3JvdDI3MF9mMzIoZmxvYXQzMng0X3QgX19wMCwgZmxvYXQzMng0X3QgX19wMSkgewogIGZsb2F0MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y2FkZHFfcm90MjcwX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA0MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4NF90IHZjYWRkcV9yb3Q5MF9mMzIoZmxvYXQzMng0X3QgX19wMCwgZmxvYXQzMng0X3QgX19wMSkgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y2FkZHFfcm90OTBfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4NF90IHZjYWRkcV9yb3Q5MF9mMzIoZmxvYXQzMng0X3QgX19wMCwgZmxvYXQzMng0X3QgX19wMSkgewogIGZsb2F0MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y2FkZHFfcm90OTBfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDQxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMng0X3QgdmNtbGFxX2YzMihmbG9hdDMyeDRfdCBfX3AwLCBmbG9hdDMyeDRfdCBfX3AxLCBmbG9hdDMyeDRfdCBfX3AyKSB7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbWxhcV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAoaW50OHgxNl90KV9fcDIsIDQxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDRfdCB2Y21sYXFfZjMyKGZsb2F0MzJ4NF90IF9fcDAsIGZsb2F0MzJ4NF90IF9fcDEsIGZsb2F0MzJ4NF90IF9fcDIpIHsKICBmbG9hdDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdmNtbGFxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAoaW50OHgxNl90KV9fcmV2MiwgNDEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDMyeDRfdCBfX25vc3dhcF92Y21sYXFfZjMyKGZsb2F0MzJ4NF90IF9fcDAsIGZsb2F0MzJ4NF90IF9fcDEsIGZsb2F0MzJ4NF90IF9fcDIpIHsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdmNtbGFxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIChpbnQ4eDE2X3QpX19wMiwgNDEpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4Ml90IHZjbWxhX2YzMihmbG9hdDMyeDJfdCBfX3AwLCBmbG9hdDMyeDJfdCBfX3AxLCBmbG9hdDMyeDJfdCBfX3AyKSB7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjbWxhX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAoaW50OHg4X3QpX19wMiwgOSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMngyX3QgdmNtbGFfZjMyKGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0MzJ4Ml90IF9fcDEsIGZsb2F0MzJ4Ml90IF9fcDIpIHsKICBmbG9hdDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBmbG9hdDMyeDJfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAxLCAwKTsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdmNtbGFfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAoaW50OHg4X3QpX19yZXYyLCA5KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQzMngyX3QgX19ub3N3YXBfdmNtbGFfZjMyKGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0MzJ4Ml90IF9fcDEsIGZsb2F0MzJ4Ml90IF9fcDIpIHsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdmNtbGFfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIChpbnQ4eDhfdClfX3AyLCA5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Y21sYV9sYW5lX2YzMihfX3AwXzE2OSwgX19wMV8xNjksIF9fcDJfMTY5LCBfX3AzXzE2OSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMngyX3QgX19zMF8xNjkgPSBfX3AwXzE2OTsgXAogIGZsb2F0MzJ4Ml90IF9fczFfMTY5ID0gX19wMV8xNjk7IFwKICBmbG9hdDMyeDJfdCBfX3MyXzE2OSA9IF9fcDJfMTY5OyBcCiAgZmxvYXQzMngyX3QgX19yZXRfMTY5OyBcCmZsb2F0MzJ4Ml90IF9fcmVpbnRfMTY5ID0gX19zMl8xNjk7IFwKdWludDY0eDFfdCBfX3JlaW50MV8xNjkgPSAodWludDY0eDFfdCkge3ZnZXRfbGFuZV91NjQoKih1aW50NjR4MV90ICopICZfX3JlaW50XzE2OSwgX19wM18xNjkpfTsgXAogIF9fcmV0XzE2OSA9IHZjbWxhX2YzMihfX3MwXzE2OSwgX19zMV8xNjksICooZmxvYXQzMngyX3QgKikgJl9fcmVpbnQxXzE2OSk7IFwKICBfX3JldF8xNjk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Y21sYV9sYW5lX2YzMihfX3AwXzE3MCwgX19wMV8xNzAsIF9fcDJfMTcwLCBfX3AzXzE3MCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMngyX3QgX19zMF8xNzAgPSBfX3AwXzE3MDsgXAogIGZsb2F0MzJ4Ml90IF9fczFfMTcwID0gX19wMV8xNzA7IFwKICBmbG9hdDMyeDJfdCBfX3MyXzE3MCA9IF9fcDJfMTcwOyBcCiAgZmxvYXQzMngyX3QgX19yZXYwXzE3MDsgIF9fcmV2MF8xNzAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzE3MCwgX19zMF8xNzAsIDEsIDApOyBcCiAgZmxvYXQzMngyX3QgX19yZXYxXzE3MDsgIF9fcmV2MV8xNzAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzE3MCwgX19zMV8xNzAsIDEsIDApOyBcCiAgZmxvYXQzMngyX3QgX19yZXYyXzE3MDsgIF9fcmV2Ml8xNzAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzE3MCwgX19zMl8xNzAsIDEsIDApOyBcCiAgZmxvYXQzMngyX3QgX19yZXRfMTcwOyBcCmZsb2F0MzJ4Ml90IF9fcmVpbnRfMTcwID0gX19yZXYyXzE3MDsgXAp1aW50NjR4MV90IF9fcmVpbnQxXzE3MCA9ICh1aW50NjR4MV90KSB7dmdldF9sYW5lX3U2NCgqKHVpbnQ2NHgxX3QgKikgJl9fcmVpbnRfMTcwLCBfX3AzXzE3MCl9OyBcCiAgX19yZXRfMTcwID0gX19ub3N3YXBfdmNtbGFfZjMyKF9fcmV2MF8xNzAsIF9fcmV2MV8xNzAsICooZmxvYXQzMngyX3QgKikgJl9fcmVpbnQxXzE3MCk7IFwKICBfX3JldF8xNzAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8xNzAsIF9fcmV0XzE3MCwgMSwgMCk7IFwKICBfX3JldF8xNzA7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Y21sYXFfbGFuZV9mMzIoX19wMF8xNzEsIF9fcDFfMTcxLCBfX3AyXzE3MSwgX19wM18xNzEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NF90IF9fczBfMTcxID0gX19wMF8xNzE7IFwKICBmbG9hdDMyeDRfdCBfX3MxXzE3MSA9IF9fcDFfMTcxOyBcCiAgZmxvYXQzMngyX3QgX19zMl8xNzEgPSBfX3AyXzE3MTsgXAogIGZsb2F0MzJ4NF90IF9fcmV0XzE3MTsgXApmbG9hdDMyeDJfdCBfX3JlaW50XzE3MSA9IF9fczJfMTcxOyBcCnVpbnQ2NHgyX3QgX19yZWludDFfMTcxID0gKHVpbnQ2NHgyX3QpIHt2Z2V0X2xhbmVfdTY0KCoodWludDY0eDFfdCAqKSAmX19yZWludF8xNzEsIF9fcDNfMTcxKSwgdmdldF9sYW5lX3U2NCgqKHVpbnQ2NHgxX3QgKikgJl9fcmVpbnRfMTcxLCBfX3AzXzE3MSl9OyBcCiAgX19yZXRfMTcxID0gdmNtbGFxX2YzMihfX3MwXzE3MSwgX19zMV8xNzEsICooZmxvYXQzMng0X3QgKikgJl9fcmVpbnQxXzE3MSk7IFwKICBfX3JldF8xNzE7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Y21sYXFfbGFuZV9mMzIoX19wMF8xNzIsIF9fcDFfMTcyLCBfX3AyXzE3MiwgX19wM18xNzIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NF90IF9fczBfMTcyID0gX19wMF8xNzI7IFwKICBmbG9hdDMyeDRfdCBfX3MxXzE3MiA9IF9fcDFfMTcyOyBcCiAgZmxvYXQzMngyX3QgX19zMl8xNzIgPSBfX3AyXzE3MjsgXAogIGZsb2F0MzJ4NF90IF9fcmV2MF8xNzI7ICBfX3JldjBfMTcyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8xNzIsIF9fczBfMTcyLCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MzJ4NF90IF9fcmV2MV8xNzI7ICBfX3JldjFfMTcyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV8xNzIsIF9fczFfMTcyLCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MzJ4Ml90IF9fcmV2Ml8xNzI7ICBfX3JldjJfMTcyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl8xNzIsIF9fczJfMTcyLCAxLCAwKTsgXAogIGZsb2F0MzJ4NF90IF9fcmV0XzE3MjsgXApmbG9hdDMyeDJfdCBfX3JlaW50XzE3MiA9IF9fcmV2Ml8xNzI7IFwKdWludDY0eDJfdCBfX3JlaW50MV8xNzIgPSAodWludDY0eDJfdCkge3ZnZXRfbGFuZV91NjQoKih1aW50NjR4MV90ICopICZfX3JlaW50XzE3MiwgX19wM18xNzIpLCB2Z2V0X2xhbmVfdTY0KCoodWludDY0eDFfdCAqKSAmX19yZWludF8xNzIsIF9fcDNfMTcyKX07IFwKICBfX3JldF8xNzIgPSBfX25vc3dhcF92Y21sYXFfZjMyKF9fcmV2MF8xNzIsIF9fcmV2MV8xNzIsICooZmxvYXQzMng0X3QgKikgJl9fcmVpbnQxXzE3Mik7IFwKICBfX3JldF8xNzIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8xNzIsIF9fcmV0XzE3MiwgMywgMiwgMSwgMCk7IFwKICBfX3JldF8xNzI7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Y21sYV9sYW5lcV9mMzIoX19wMF8xNzMsIF9fcDFfMTczLCBfX3AyXzE3MywgX19wM18xNzMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4Ml90IF9fczBfMTczID0gX19wMF8xNzM7IFwKICBmbG9hdDMyeDJfdCBfX3MxXzE3MyA9IF9fcDFfMTczOyBcCiAgZmxvYXQzMng0X3QgX19zMl8xNzMgPSBfX3AyXzE3MzsgXAogIGZsb2F0MzJ4Ml90IF9fcmV0XzE3MzsgXApmbG9hdDMyeDRfdCBfX3JlaW50XzE3MyA9IF9fczJfMTczOyBcCnVpbnQ2NHgxX3QgX19yZWludDFfMTczID0gKHVpbnQ2NHgxX3QpIHt2Z2V0cV9sYW5lX3U2NCgqKHVpbnQ2NHgyX3QgKikgJl9fcmVpbnRfMTczLCBfX3AzXzE3Myl9OyBcCiAgX19yZXRfMTczID0gdmNtbGFfZjMyKF9fczBfMTczLCBfX3MxXzE3MywgKihmbG9hdDMyeDJfdCAqKSAmX19yZWludDFfMTczKTsgXAogIF9fcmV0XzE3MzsgXAp9KQojZWxzZQojZGVmaW5lIHZjbWxhX2xhbmVxX2YzMihfX3AwXzE3NCwgX19wMV8xNzQsIF9fcDJfMTc0LCBfX3AzXzE3NCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMngyX3QgX19zMF8xNzQgPSBfX3AwXzE3NDsgXAogIGZsb2F0MzJ4Ml90IF9fczFfMTc0ID0gX19wMV8xNzQ7IFwKICBmbG9hdDMyeDRfdCBfX3MyXzE3NCA9IF9fcDJfMTc0OyBcCiAgZmxvYXQzMngyX3QgX19yZXYwXzE3NDsgIF9fcmV2MF8xNzQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzE3NCwgX19zMF8xNzQsIDEsIDApOyBcCiAgZmxvYXQzMngyX3QgX19yZXYxXzE3NDsgIF9fcmV2MV8xNzQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzE3NCwgX19zMV8xNzQsIDEsIDApOyBcCiAgZmxvYXQzMng0X3QgX19yZXYyXzE3NDsgIF9fcmV2Ml8xNzQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzE3NCwgX19zMl8xNzQsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQzMngyX3QgX19yZXRfMTc0OyBcCmZsb2F0MzJ4NF90IF9fcmVpbnRfMTc0ID0gX19yZXYyXzE3NDsgXAp1aW50NjR4MV90IF9fcmVpbnQxXzE3NCA9ICh1aW50NjR4MV90KSB7X19ub3N3YXBfdmdldHFfbGFuZV91NjQoKih1aW50NjR4Ml90ICopICZfX3JlaW50XzE3NCwgX19wM18xNzQpfTsgXAogIF9fcmV0XzE3NCA9IF9fbm9zd2FwX3ZjbWxhX2YzMihfX3JldjBfMTc0LCBfX3JldjFfMTc0LCAqKGZsb2F0MzJ4Ml90ICopICZfX3JlaW50MV8xNzQpOyBcCiAgX19yZXRfMTc0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMTc0LCBfX3JldF8xNzQsIDEsIDApOyBcCiAgX19yZXRfMTc0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmNtbGFxX2xhbmVxX2YzMihfX3AwXzE3NSwgX19wMV8xNzUsIF9fcDJfMTc1LCBfX3AzXzE3NSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0X3QgX19zMF8xNzUgPSBfX3AwXzE3NTsgXAogIGZsb2F0MzJ4NF90IF9fczFfMTc1ID0gX19wMV8xNzU7IFwKICBmbG9hdDMyeDRfdCBfX3MyXzE3NSA9IF9fcDJfMTc1OyBcCiAgZmxvYXQzMng0X3QgX19yZXRfMTc1OyBcCmZsb2F0MzJ4NF90IF9fcmVpbnRfMTc1ID0gX19zMl8xNzU7IFwKdWludDY0eDJfdCBfX3JlaW50MV8xNzUgPSAodWludDY0eDJfdCkge3ZnZXRxX2xhbmVfdTY0KCoodWludDY0eDJfdCAqKSAmX19yZWludF8xNzUsIF9fcDNfMTc1KSwgdmdldHFfbGFuZV91NjQoKih1aW50NjR4Ml90ICopICZfX3JlaW50XzE3NSwgX19wM18xNzUpfTsgXAogIF9fcmV0XzE3NSA9IHZjbWxhcV9mMzIoX19zMF8xNzUsIF9fczFfMTc1LCAqKGZsb2F0MzJ4NF90ICopICZfX3JlaW50MV8xNzUpOyBcCiAgX19yZXRfMTc1OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmNtbGFxX2xhbmVxX2YzMihfX3AwXzE3NiwgX19wMV8xNzYsIF9fcDJfMTc2LCBfX3AzXzE3NikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0X3QgX19zMF8xNzYgPSBfX3AwXzE3NjsgXAogIGZsb2F0MzJ4NF90IF9fczFfMTc2ID0gX19wMV8xNzY7IFwKICBmbG9hdDMyeDRfdCBfX3MyXzE3NiA9IF9fcDJfMTc2OyBcCiAgZmxvYXQzMng0X3QgX19yZXYwXzE3NjsgIF9fcmV2MF8xNzYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzE3NiwgX19zMF8xNzYsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQzMng0X3QgX19yZXYxXzE3NjsgIF9fcmV2MV8xNzYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzE3NiwgX19zMV8xNzYsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQzMng0X3QgX19yZXYyXzE3NjsgIF9fcmV2Ml8xNzYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzE3NiwgX19zMl8xNzYsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQzMng0X3QgX19yZXRfMTc2OyBcCmZsb2F0MzJ4NF90IF9fcmVpbnRfMTc2ID0gX19yZXYyXzE3NjsgXAp1aW50NjR4Ml90IF9fcmVpbnQxXzE3NiA9ICh1aW50NjR4Ml90KSB7X19ub3N3YXBfdmdldHFfbGFuZV91NjQoKih1aW50NjR4Ml90ICopICZfX3JlaW50XzE3NiwgX19wM18xNzYpLCBfX25vc3dhcF92Z2V0cV9sYW5lX3U2NCgqKHVpbnQ2NHgyX3QgKikgJl9fcmVpbnRfMTc2LCBfX3AzXzE3Nil9OyBcCiAgX19yZXRfMTc2ID0gX19ub3N3YXBfdmNtbGFxX2YzMihfX3JldjBfMTc2LCBfX3JldjFfMTc2LCAqKGZsb2F0MzJ4NF90ICopICZfX3JlaW50MV8xNzYpOyBcCiAgX19yZXRfMTc2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMTc2LCBfX3JldF8xNzYsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfMTc2OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMng0X3QgdmNtbGFxX3JvdDE4MF9mMzIoZmxvYXQzMng0X3QgX19wMCwgZmxvYXQzMng0X3QgX19wMSwgZmxvYXQzMng0X3QgX19wMikgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y21sYXFfcm90MTgwX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIChpbnQ4eDE2X3QpX19wMiwgNDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4NF90IHZjbWxhcV9yb3QxODBfZjMyKGZsb2F0MzJ4NF90IF9fcDAsIGZsb2F0MzJ4NF90IF9fcDEsIGZsb2F0MzJ4NF90IF9fcDIpIHsKICBmbG9hdDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdmNtbGFxX3JvdDE4MF92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgKGludDh4MTZfdClfX3JldjIsIDQxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQzMng0X3QgX19ub3N3YXBfdmNtbGFxX3JvdDE4MF9mMzIoZmxvYXQzMng0X3QgX19wMCwgZmxvYXQzMng0X3QgX19wMSwgZmxvYXQzMng0X3QgX19wMikgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y21sYXFfcm90MTgwX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIChpbnQ4eDE2X3QpX19wMiwgNDEpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4Ml90IHZjbWxhX3JvdDE4MF9mMzIoZmxvYXQzMngyX3QgX19wMCwgZmxvYXQzMngyX3QgX19wMSwgZmxvYXQzMngyX3QgX19wMikgewogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y21sYV9yb3QxODBfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIChpbnQ4eDhfdClfX3AyLCA5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDJfdCB2Y21sYV9yb3QxODBfZjMyKGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0MzJ4Ml90IF9fcDEsIGZsb2F0MzJ4Ml90IF9fcDIpIHsKICBmbG9hdDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBmbG9hdDMyeDJfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAxLCAwKTsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdmNtbGFfcm90MTgwX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgKGludDh4OF90KV9fcmV2MiwgOSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MzJ4Ml90IF9fbm9zd2FwX3ZjbWxhX3JvdDE4MF9mMzIoZmxvYXQzMngyX3QgX19wMCwgZmxvYXQzMngyX3QgX19wMSwgZmxvYXQzMngyX3QgX19wMikgewogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y21sYV9yb3QxODBfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIChpbnQ4eDhfdClfX3AyLCA5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Y21sYV9yb3QxODBfbGFuZV9mMzIoX19wMF8xNzcsIF9fcDFfMTc3LCBfX3AyXzE3NywgX19wM18xNzcpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4Ml90IF9fczBfMTc3ID0gX19wMF8xNzc7IFwKICBmbG9hdDMyeDJfdCBfX3MxXzE3NyA9IF9fcDFfMTc3OyBcCiAgZmxvYXQzMngyX3QgX19zMl8xNzcgPSBfX3AyXzE3NzsgXAogIGZsb2F0MzJ4Ml90IF9fcmV0XzE3NzsgXApmbG9hdDMyeDJfdCBfX3JlaW50XzE3NyA9IF9fczJfMTc3OyBcCnVpbnQ2NHgxX3QgX19yZWludDFfMTc3ID0gKHVpbnQ2NHgxX3QpIHt2Z2V0X2xhbmVfdTY0KCoodWludDY0eDFfdCAqKSAmX19yZWludF8xNzcsIF9fcDNfMTc3KX07IFwKICBfX3JldF8xNzcgPSB2Y21sYV9yb3QxODBfZjMyKF9fczBfMTc3LCBfX3MxXzE3NywgKihmbG9hdDMyeDJfdCAqKSAmX19yZWludDFfMTc3KTsgXAogIF9fcmV0XzE3NzsgXAp9KQojZWxzZQojZGVmaW5lIHZjbWxhX3JvdDE4MF9sYW5lX2YzMihfX3AwXzE3OCwgX19wMV8xNzgsIF9fcDJfMTc4LCBfX3AzXzE3OCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMngyX3QgX19zMF8xNzggPSBfX3AwXzE3ODsgXAogIGZsb2F0MzJ4Ml90IF9fczFfMTc4ID0gX19wMV8xNzg7IFwKICBmbG9hdDMyeDJfdCBfX3MyXzE3OCA9IF9fcDJfMTc4OyBcCiAgZmxvYXQzMngyX3QgX19yZXYwXzE3ODsgIF9fcmV2MF8xNzggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzE3OCwgX19zMF8xNzgsIDEsIDApOyBcCiAgZmxvYXQzMngyX3QgX19yZXYxXzE3ODsgIF9fcmV2MV8xNzggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzE3OCwgX19zMV8xNzgsIDEsIDApOyBcCiAgZmxvYXQzMngyX3QgX19yZXYyXzE3ODsgIF9fcmV2Ml8xNzggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzE3OCwgX19zMl8xNzgsIDEsIDApOyBcCiAgZmxvYXQzMngyX3QgX19yZXRfMTc4OyBcCmZsb2F0MzJ4Ml90IF9fcmVpbnRfMTc4ID0gX19yZXYyXzE3ODsgXAp1aW50NjR4MV90IF9fcmVpbnQxXzE3OCA9ICh1aW50NjR4MV90KSB7dmdldF9sYW5lX3U2NCgqKHVpbnQ2NHgxX3QgKikgJl9fcmVpbnRfMTc4LCBfX3AzXzE3OCl9OyBcCiAgX19yZXRfMTc4ID0gX19ub3N3YXBfdmNtbGFfcm90MTgwX2YzMihfX3JldjBfMTc4LCBfX3JldjFfMTc4LCAqKGZsb2F0MzJ4Ml90ICopICZfX3JlaW50MV8xNzgpOyBcCiAgX19yZXRfMTc4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMTc4LCBfX3JldF8xNzgsIDEsIDApOyBcCiAgX19yZXRfMTc4OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmNtbGFxX3JvdDE4MF9sYW5lX2YzMihfX3AwXzE3OSwgX19wMV8xNzksIF9fcDJfMTc5LCBfX3AzXzE3OSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0X3QgX19zMF8xNzkgPSBfX3AwXzE3OTsgXAogIGZsb2F0MzJ4NF90IF9fczFfMTc5ID0gX19wMV8xNzk7IFwKICBmbG9hdDMyeDJfdCBfX3MyXzE3OSA9IF9fcDJfMTc5OyBcCiAgZmxvYXQzMng0X3QgX19yZXRfMTc5OyBcCmZsb2F0MzJ4Ml90IF9fcmVpbnRfMTc5ID0gX19zMl8xNzk7IFwKdWludDY0eDJfdCBfX3JlaW50MV8xNzkgPSAodWludDY0eDJfdCkge3ZnZXRfbGFuZV91NjQoKih1aW50NjR4MV90ICopICZfX3JlaW50XzE3OSwgX19wM18xNzkpLCB2Z2V0X2xhbmVfdTY0KCoodWludDY0eDFfdCAqKSAmX19yZWludF8xNzksIF9fcDNfMTc5KX07IFwKICBfX3JldF8xNzkgPSB2Y21sYXFfcm90MTgwX2YzMihfX3MwXzE3OSwgX19zMV8xNzksICooZmxvYXQzMng0X3QgKikgJl9fcmVpbnQxXzE3OSk7IFwKICBfX3JldF8xNzk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Y21sYXFfcm90MTgwX2xhbmVfZjMyKF9fcDBfMTgwLCBfX3AxXzE4MCwgX19wMl8xODAsIF9fcDNfMTgwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDRfdCBfX3MwXzE4MCA9IF9fcDBfMTgwOyBcCiAgZmxvYXQzMng0X3QgX19zMV8xODAgPSBfX3AxXzE4MDsgXAogIGZsb2F0MzJ4Ml90IF9fczJfMTgwID0gX19wMl8xODA7IFwKICBmbG9hdDMyeDRfdCBfX3JldjBfMTgwOyAgX19yZXYwXzE4MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfMTgwLCBfX3MwXzE4MCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDMyeDRfdCBfX3JldjFfMTgwOyAgX19yZXYxXzE4MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfMTgwLCBfX3MxXzE4MCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDMyeDJfdCBfX3JldjJfMTgwOyAgX19yZXYyXzE4MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfMTgwLCBfX3MyXzE4MCwgMSwgMCk7IFwKICBmbG9hdDMyeDRfdCBfX3JldF8xODA7IFwKZmxvYXQzMngyX3QgX19yZWludF8xODAgPSBfX3JldjJfMTgwOyBcCnVpbnQ2NHgyX3QgX19yZWludDFfMTgwID0gKHVpbnQ2NHgyX3QpIHt2Z2V0X2xhbmVfdTY0KCoodWludDY0eDFfdCAqKSAmX19yZWludF8xODAsIF9fcDNfMTgwKSwgdmdldF9sYW5lX3U2NCgqKHVpbnQ2NHgxX3QgKikgJl9fcmVpbnRfMTgwLCBfX3AzXzE4MCl9OyBcCiAgX19yZXRfMTgwID0gX19ub3N3YXBfdmNtbGFxX3JvdDE4MF9mMzIoX19yZXYwXzE4MCwgX19yZXYxXzE4MCwgKihmbG9hdDMyeDRfdCAqKSAmX19yZWludDFfMTgwKTsgXAogIF9fcmV0XzE4MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzE4MCwgX19yZXRfMTgwLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzE4MDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZjbWxhX3JvdDE4MF9sYW5lcV9mMzIoX19wMF8xODEsIF9fcDFfMTgxLCBfX3AyXzE4MSwgX19wM18xODEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4Ml90IF9fczBfMTgxID0gX19wMF8xODE7IFwKICBmbG9hdDMyeDJfdCBfX3MxXzE4MSA9IF9fcDFfMTgxOyBcCiAgZmxvYXQzMng0X3QgX19zMl8xODEgPSBfX3AyXzE4MTsgXAogIGZsb2F0MzJ4Ml90IF9fcmV0XzE4MTsgXApmbG9hdDMyeDRfdCBfX3JlaW50XzE4MSA9IF9fczJfMTgxOyBcCnVpbnQ2NHgxX3QgX19yZWludDFfMTgxID0gKHVpbnQ2NHgxX3QpIHt2Z2V0cV9sYW5lX3U2NCgqKHVpbnQ2NHgyX3QgKikgJl9fcmVpbnRfMTgxLCBfX3AzXzE4MSl9OyBcCiAgX19yZXRfMTgxID0gdmNtbGFfcm90MTgwX2YzMihfX3MwXzE4MSwgX19zMV8xODEsICooZmxvYXQzMngyX3QgKikgJl9fcmVpbnQxXzE4MSk7IFwKICBfX3JldF8xODE7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Y21sYV9yb3QxODBfbGFuZXFfZjMyKF9fcDBfMTgyLCBfX3AxXzE4MiwgX19wMl8xODIsIF9fcDNfMTgyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJfdCBfX3MwXzE4MiA9IF9fcDBfMTgyOyBcCiAgZmxvYXQzMngyX3QgX19zMV8xODIgPSBfX3AxXzE4MjsgXAogIGZsb2F0MzJ4NF90IF9fczJfMTgyID0gX19wMl8xODI7IFwKICBmbG9hdDMyeDJfdCBfX3JldjBfMTgyOyAgX19yZXYwXzE4MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfMTgyLCBfX3MwXzE4MiwgMSwgMCk7IFwKICBmbG9hdDMyeDJfdCBfX3JldjFfMTgyOyAgX19yZXYxXzE4MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfMTgyLCBfX3MxXzE4MiwgMSwgMCk7IFwKICBmbG9hdDMyeDRfdCBfX3JldjJfMTgyOyAgX19yZXYyXzE4MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfMTgyLCBfX3MyXzE4MiwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDMyeDJfdCBfX3JldF8xODI7IFwKZmxvYXQzMng0X3QgX19yZWludF8xODIgPSBfX3JldjJfMTgyOyBcCnVpbnQ2NHgxX3QgX19yZWludDFfMTgyID0gKHVpbnQ2NHgxX3QpIHtfX25vc3dhcF92Z2V0cV9sYW5lX3U2NCgqKHVpbnQ2NHgyX3QgKikgJl9fcmVpbnRfMTgyLCBfX3AzXzE4Mil9OyBcCiAgX19yZXRfMTgyID0gX19ub3N3YXBfdmNtbGFfcm90MTgwX2YzMihfX3JldjBfMTgyLCBfX3JldjFfMTgyLCAqKGZsb2F0MzJ4Ml90ICopICZfX3JlaW50MV8xODIpOyBcCiAgX19yZXRfMTgyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMTgyLCBfX3JldF8xODIsIDEsIDApOyBcCiAgX19yZXRfMTgyOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmNtbGFxX3JvdDE4MF9sYW5lcV9mMzIoX19wMF8xODMsIF9fcDFfMTgzLCBfX3AyXzE4MywgX19wM18xODMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NF90IF9fczBfMTgzID0gX19wMF8xODM7IFwKICBmbG9hdDMyeDRfdCBfX3MxXzE4MyA9IF9fcDFfMTgzOyBcCiAgZmxvYXQzMng0X3QgX19zMl8xODMgPSBfX3AyXzE4MzsgXAogIGZsb2F0MzJ4NF90IF9fcmV0XzE4MzsgXApmbG9hdDMyeDRfdCBfX3JlaW50XzE4MyA9IF9fczJfMTgzOyBcCnVpbnQ2NHgyX3QgX19yZWludDFfMTgzID0gKHVpbnQ2NHgyX3QpIHt2Z2V0cV9sYW5lX3U2NCgqKHVpbnQ2NHgyX3QgKikgJl9fcmVpbnRfMTgzLCBfX3AzXzE4MyksIHZnZXRxX2xhbmVfdTY0KCoodWludDY0eDJfdCAqKSAmX19yZWludF8xODMsIF9fcDNfMTgzKX07IFwKICBfX3JldF8xODMgPSB2Y21sYXFfcm90MTgwX2YzMihfX3MwXzE4MywgX19zMV8xODMsICooZmxvYXQzMng0X3QgKikgJl9fcmVpbnQxXzE4Myk7IFwKICBfX3JldF8xODM7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Y21sYXFfcm90MTgwX2xhbmVxX2YzMihfX3AwXzE4NCwgX19wMV8xODQsIF9fcDJfMTg0LCBfX3AzXzE4NCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0X3QgX19zMF8xODQgPSBfX3AwXzE4NDsgXAogIGZsb2F0MzJ4NF90IF9fczFfMTg0ID0gX19wMV8xODQ7IFwKICBmbG9hdDMyeDRfdCBfX3MyXzE4NCA9IF9fcDJfMTg0OyBcCiAgZmxvYXQzMng0X3QgX19yZXYwXzE4NDsgIF9fcmV2MF8xODQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzE4NCwgX19zMF8xODQsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQzMng0X3QgX19yZXYxXzE4NDsgIF9fcmV2MV8xODQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzE4NCwgX19zMV8xODQsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQzMng0X3QgX19yZXYyXzE4NDsgIF9fcmV2Ml8xODQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzE4NCwgX19zMl8xODQsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQzMng0X3QgX19yZXRfMTg0OyBcCmZsb2F0MzJ4NF90IF9fcmVpbnRfMTg0ID0gX19yZXYyXzE4NDsgXAp1aW50NjR4Ml90IF9fcmVpbnQxXzE4NCA9ICh1aW50NjR4Ml90KSB7X19ub3N3YXBfdmdldHFfbGFuZV91NjQoKih1aW50NjR4Ml90ICopICZfX3JlaW50XzE4NCwgX19wM18xODQpLCBfX25vc3dhcF92Z2V0cV9sYW5lX3U2NCgqKHVpbnQ2NHgyX3QgKikgJl9fcmVpbnRfMTg0LCBfX3AzXzE4NCl9OyBcCiAgX19yZXRfMTg0ID0gX19ub3N3YXBfdmNtbGFxX3JvdDE4MF9mMzIoX19yZXYwXzE4NCwgX19yZXYxXzE4NCwgKihmbG9hdDMyeDRfdCAqKSAmX19yZWludDFfMTg0KTsgXAogIF9fcmV0XzE4NCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzE4NCwgX19yZXRfMTg0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzE4NDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4NF90IHZjbWxhcV9yb3QyNzBfZjMyKGZsb2F0MzJ4NF90IF9fcDAsIGZsb2F0MzJ4NF90IF9fcDEsIGZsb2F0MzJ4NF90IF9fcDIpIHsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdmNtbGFxX3JvdDI3MF92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAoaW50OHgxNl90KV9fcDIsIDQxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDRfdCB2Y21sYXFfcm90MjcwX2YzMihmbG9hdDMyeDRfdCBfX3AwLCBmbG9hdDMyeDRfdCBfX3AxLCBmbG9hdDMyeDRfdCBfX3AyKSB7CiAgZmxvYXQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMng0X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbWxhcV9yb3QyNzBfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIChpbnQ4eDE2X3QpX19yZXYyLCA0MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MzJ4NF90IF9fbm9zd2FwX3ZjbWxhcV9yb3QyNzBfZjMyKGZsb2F0MzJ4NF90IF9fcDAsIGZsb2F0MzJ4NF90IF9fcDEsIGZsb2F0MzJ4NF90IF9fcDIpIHsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdmNtbGFxX3JvdDI3MF92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAoaW50OHgxNl90KV9fcDIsIDQxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDJfdCB2Y21sYV9yb3QyNzBfZjMyKGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0MzJ4Ml90IF9fcDEsIGZsb2F0MzJ4Ml90IF9fcDIpIHsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdmNtbGFfcm90MjcwX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAoaW50OHg4X3QpX19wMiwgOSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMngyX3QgdmNtbGFfcm90MjcwX2YzMihmbG9hdDMyeDJfdCBfX3AwLCBmbG9hdDMyeDJfdCBfX3AxLCBmbG9hdDMyeDJfdCBfX3AyKSB7CiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjbWxhX3JvdDI3MF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIChpbnQ4eDhfdClfX3JldjIsIDkpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDMyeDJfdCBfX25vc3dhcF92Y21sYV9yb3QyNzBfZjMyKGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0MzJ4Ml90IF9fcDEsIGZsb2F0MzJ4Ml90IF9fcDIpIHsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdmNtbGFfcm90MjcwX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAoaW50OHg4X3QpX19wMiwgOSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmNtbGFfcm90MjcwX2xhbmVfZjMyKF9fcDBfMTg1LCBfX3AxXzE4NSwgX19wMl8xODUsIF9fcDNfMTg1KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJfdCBfX3MwXzE4NSA9IF9fcDBfMTg1OyBcCiAgZmxvYXQzMngyX3QgX19zMV8xODUgPSBfX3AxXzE4NTsgXAogIGZsb2F0MzJ4Ml90IF9fczJfMTg1ID0gX19wMl8xODU7IFwKICBmbG9hdDMyeDJfdCBfX3JldF8xODU7IFwKZmxvYXQzMngyX3QgX19yZWludF8xODUgPSBfX3MyXzE4NTsgXAp1aW50NjR4MV90IF9fcmVpbnQxXzE4NSA9ICh1aW50NjR4MV90KSB7dmdldF9sYW5lX3U2NCgqKHVpbnQ2NHgxX3QgKikgJl9fcmVpbnRfMTg1LCBfX3AzXzE4NSl9OyBcCiAgX19yZXRfMTg1ID0gdmNtbGFfcm90MjcwX2YzMihfX3MwXzE4NSwgX19zMV8xODUsICooZmxvYXQzMngyX3QgKikgJl9fcmVpbnQxXzE4NSk7IFwKICBfX3JldF8xODU7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Y21sYV9yb3QyNzBfbGFuZV9mMzIoX19wMF8xODYsIF9fcDFfMTg2LCBfX3AyXzE4NiwgX19wM18xODYpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4Ml90IF9fczBfMTg2ID0gX19wMF8xODY7IFwKICBmbG9hdDMyeDJfdCBfX3MxXzE4NiA9IF9fcDFfMTg2OyBcCiAgZmxvYXQzMngyX3QgX19zMl8xODYgPSBfX3AyXzE4NjsgXAogIGZsb2F0MzJ4Ml90IF9fcmV2MF8xODY7ICBfX3JldjBfMTg2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8xODYsIF9fczBfMTg2LCAxLCAwKTsgXAogIGZsb2F0MzJ4Ml90IF9fcmV2MV8xODY7ICBfX3JldjFfMTg2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV8xODYsIF9fczFfMTg2LCAxLCAwKTsgXAogIGZsb2F0MzJ4Ml90IF9fcmV2Ml8xODY7ICBfX3JldjJfMTg2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl8xODYsIF9fczJfMTg2LCAxLCAwKTsgXAogIGZsb2F0MzJ4Ml90IF9fcmV0XzE4NjsgXApmbG9hdDMyeDJfdCBfX3JlaW50XzE4NiA9IF9fcmV2Ml8xODY7IFwKdWludDY0eDFfdCBfX3JlaW50MV8xODYgPSAodWludDY0eDFfdCkge3ZnZXRfbGFuZV91NjQoKih1aW50NjR4MV90ICopICZfX3JlaW50XzE4NiwgX19wM18xODYpfTsgXAogIF9fcmV0XzE4NiA9IF9fbm9zd2FwX3ZjbWxhX3JvdDI3MF9mMzIoX19yZXYwXzE4NiwgX19yZXYxXzE4NiwgKihmbG9hdDMyeDJfdCAqKSAmX19yZWludDFfMTg2KTsgXAogIF9fcmV0XzE4NiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzE4NiwgX19yZXRfMTg2LCAxLCAwKTsgXAogIF9fcmV0XzE4NjsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZjbWxhcV9yb3QyNzBfbGFuZV9mMzIoX19wMF8xODcsIF9fcDFfMTg3LCBfX3AyXzE4NywgX19wM18xODcpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NF90IF9fczBfMTg3ID0gX19wMF8xODc7IFwKICBmbG9hdDMyeDRfdCBfX3MxXzE4NyA9IF9fcDFfMTg3OyBcCiAgZmxvYXQzMngyX3QgX19zMl8xODcgPSBfX3AyXzE4NzsgXAogIGZsb2F0MzJ4NF90IF9fcmV0XzE4NzsgXApmbG9hdDMyeDJfdCBfX3JlaW50XzE4NyA9IF9fczJfMTg3OyBcCnVpbnQ2NHgyX3QgX19yZWludDFfMTg3ID0gKHVpbnQ2NHgyX3QpIHt2Z2V0X2xhbmVfdTY0KCoodWludDY0eDFfdCAqKSAmX19yZWludF8xODcsIF9fcDNfMTg3KSwgdmdldF9sYW5lX3U2NCgqKHVpbnQ2NHgxX3QgKikgJl9fcmVpbnRfMTg3LCBfX3AzXzE4Nyl9OyBcCiAgX19yZXRfMTg3ID0gdmNtbGFxX3JvdDI3MF9mMzIoX19zMF8xODcsIF9fczFfMTg3LCAqKGZsb2F0MzJ4NF90ICopICZfX3JlaW50MV8xODcpOyBcCiAgX19yZXRfMTg3OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmNtbGFxX3JvdDI3MF9sYW5lX2YzMihfX3AwXzE4OCwgX19wMV8xODgsIF9fcDJfMTg4LCBfX3AzXzE4OCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0X3QgX19zMF8xODggPSBfX3AwXzE4ODsgXAogIGZsb2F0MzJ4NF90IF9fczFfMTg4ID0gX19wMV8xODg7IFwKICBmbG9hdDMyeDJfdCBfX3MyXzE4OCA9IF9fcDJfMTg4OyBcCiAgZmxvYXQzMng0X3QgX19yZXYwXzE4ODsgIF9fcmV2MF8xODggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzE4OCwgX19zMF8xODgsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQzMng0X3QgX19yZXYxXzE4ODsgIF9fcmV2MV8xODggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzE4OCwgX19zMV8xODgsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQzMngyX3QgX19yZXYyXzE4ODsgIF9fcmV2Ml8xODggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzE4OCwgX19zMl8xODgsIDEsIDApOyBcCiAgZmxvYXQzMng0X3QgX19yZXRfMTg4OyBcCmZsb2F0MzJ4Ml90IF9fcmVpbnRfMTg4ID0gX19yZXYyXzE4ODsgXAp1aW50NjR4Ml90IF9fcmVpbnQxXzE4OCA9ICh1aW50NjR4Ml90KSB7dmdldF9sYW5lX3U2NCgqKHVpbnQ2NHgxX3QgKikgJl9fcmVpbnRfMTg4LCBfX3AzXzE4OCksIHZnZXRfbGFuZV91NjQoKih1aW50NjR4MV90ICopICZfX3JlaW50XzE4OCwgX19wM18xODgpfTsgXAogIF9fcmV0XzE4OCA9IF9fbm9zd2FwX3ZjbWxhcV9yb3QyNzBfZjMyKF9fcmV2MF8xODgsIF9fcmV2MV8xODgsICooZmxvYXQzMng0X3QgKikgJl9fcmVpbnQxXzE4OCk7IFwKICBfX3JldF8xODggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8xODgsIF9fcmV0XzE4OCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF8xODg7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Y21sYV9yb3QyNzBfbGFuZXFfZjMyKF9fcDBfMTg5LCBfX3AxXzE4OSwgX19wMl8xODksIF9fcDNfMTg5KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJfdCBfX3MwXzE4OSA9IF9fcDBfMTg5OyBcCiAgZmxvYXQzMngyX3QgX19zMV8xODkgPSBfX3AxXzE4OTsgXAogIGZsb2F0MzJ4NF90IF9fczJfMTg5ID0gX19wMl8xODk7IFwKICBmbG9hdDMyeDJfdCBfX3JldF8xODk7IFwKZmxvYXQzMng0X3QgX19yZWludF8xODkgPSBfX3MyXzE4OTsgXAp1aW50NjR4MV90IF9fcmVpbnQxXzE4OSA9ICh1aW50NjR4MV90KSB7dmdldHFfbGFuZV91NjQoKih1aW50NjR4Ml90ICopICZfX3JlaW50XzE4OSwgX19wM18xODkpfTsgXAogIF9fcmV0XzE4OSA9IHZjbWxhX3JvdDI3MF9mMzIoX19zMF8xODksIF9fczFfMTg5LCAqKGZsb2F0MzJ4Ml90ICopICZfX3JlaW50MV8xODkpOyBcCiAgX19yZXRfMTg5OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmNtbGFfcm90MjcwX2xhbmVxX2YzMihfX3AwXzE5MCwgX19wMV8xOTAsIF9fcDJfMTkwLCBfX3AzXzE5MCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMngyX3QgX19zMF8xOTAgPSBfX3AwXzE5MDsgXAogIGZsb2F0MzJ4Ml90IF9fczFfMTkwID0gX19wMV8xOTA7IFwKICBmbG9hdDMyeDRfdCBfX3MyXzE5MCA9IF9fcDJfMTkwOyBcCiAgZmxvYXQzMngyX3QgX19yZXYwXzE5MDsgIF9fcmV2MF8xOTAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzE5MCwgX19zMF8xOTAsIDEsIDApOyBcCiAgZmxvYXQzMngyX3QgX19yZXYxXzE5MDsgIF9fcmV2MV8xOTAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzE5MCwgX19zMV8xOTAsIDEsIDApOyBcCiAgZmxvYXQzMng0X3QgX19yZXYyXzE5MDsgIF9fcmV2Ml8xOTAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzE5MCwgX19zMl8xOTAsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQzMngyX3QgX19yZXRfMTkwOyBcCmZsb2F0MzJ4NF90IF9fcmVpbnRfMTkwID0gX19yZXYyXzE5MDsgXAp1aW50NjR4MV90IF9fcmVpbnQxXzE5MCA9ICh1aW50NjR4MV90KSB7X19ub3N3YXBfdmdldHFfbGFuZV91NjQoKih1aW50NjR4Ml90ICopICZfX3JlaW50XzE5MCwgX19wM18xOTApfTsgXAogIF9fcmV0XzE5MCA9IF9fbm9zd2FwX3ZjbWxhX3JvdDI3MF9mMzIoX19yZXYwXzE5MCwgX19yZXYxXzE5MCwgKihmbG9hdDMyeDJfdCAqKSAmX19yZWludDFfMTkwKTsgXAogIF9fcmV0XzE5MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzE5MCwgX19yZXRfMTkwLCAxLCAwKTsgXAogIF9fcmV0XzE5MDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZjbWxhcV9yb3QyNzBfbGFuZXFfZjMyKF9fcDBfMTkxLCBfX3AxXzE5MSwgX19wMl8xOTEsIF9fcDNfMTkxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDRfdCBfX3MwXzE5MSA9IF9fcDBfMTkxOyBcCiAgZmxvYXQzMng0X3QgX19zMV8xOTEgPSBfX3AxXzE5MTsgXAogIGZsb2F0MzJ4NF90IF9fczJfMTkxID0gX19wMl8xOTE7IFwKICBmbG9hdDMyeDRfdCBfX3JldF8xOTE7IFwKZmxvYXQzMng0X3QgX19yZWludF8xOTEgPSBfX3MyXzE5MTsgXAp1aW50NjR4Ml90IF9fcmVpbnQxXzE5MSA9ICh1aW50NjR4Ml90KSB7dmdldHFfbGFuZV91NjQoKih1aW50NjR4Ml90ICopICZfX3JlaW50XzE5MSwgX19wM18xOTEpLCB2Z2V0cV9sYW5lX3U2NCgqKHVpbnQ2NHgyX3QgKikgJl9fcmVpbnRfMTkxLCBfX3AzXzE5MSl9OyBcCiAgX19yZXRfMTkxID0gdmNtbGFxX3JvdDI3MF9mMzIoX19zMF8xOTEsIF9fczFfMTkxLCAqKGZsb2F0MzJ4NF90ICopICZfX3JlaW50MV8xOTEpOyBcCiAgX19yZXRfMTkxOyBcCn0pCiNlbHNlCiNkZWZpbmUgdmNtbGFxX3JvdDI3MF9sYW5lcV9mMzIoX19wMF8xOTIsIF9fcDFfMTkyLCBfX3AyXzE5MiwgX19wM18xOTIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NF90IF9fczBfMTkyID0gX19wMF8xOTI7IFwKICBmbG9hdDMyeDRfdCBfX3MxXzE5MiA9IF9fcDFfMTkyOyBcCiAgZmxvYXQzMng0X3QgX19zMl8xOTIgPSBfX3AyXzE5MjsgXAogIGZsb2F0MzJ4NF90IF9fcmV2MF8xOTI7ICBfX3JldjBfMTkyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8xOTIsIF9fczBfMTkyLCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MzJ4NF90IF9fcmV2MV8xOTI7ICBfX3JldjFfMTkyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV8xOTIsIF9fczFfMTkyLCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MzJ4NF90IF9fcmV2Ml8xOTI7ICBfX3JldjJfMTkyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl8xOTIsIF9fczJfMTkyLCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MzJ4NF90IF9fcmV0XzE5MjsgXApmbG9hdDMyeDRfdCBfX3JlaW50XzE5MiA9IF9fcmV2Ml8xOTI7IFwKdWludDY0eDJfdCBfX3JlaW50MV8xOTIgPSAodWludDY0eDJfdCkge19fbm9zd2FwX3ZnZXRxX2xhbmVfdTY0KCoodWludDY0eDJfdCAqKSAmX19yZWludF8xOTIsIF9fcDNfMTkyKSwgX19ub3N3YXBfdmdldHFfbGFuZV91NjQoKih1aW50NjR4Ml90ICopICZfX3JlaW50XzE5MiwgX19wM18xOTIpfTsgXAogIF9fcmV0XzE5MiA9IF9fbm9zd2FwX3ZjbWxhcV9yb3QyNzBfZjMyKF9fcmV2MF8xOTIsIF9fcmV2MV8xOTIsICooZmxvYXQzMng0X3QgKikgJl9fcmVpbnQxXzE5Mik7IFwKICBfX3JldF8xOTIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8xOTIsIF9fcmV0XzE5MiwgMywgMiwgMSwgMCk7IFwKICBfX3JldF8xOTI7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDRfdCB2Y21sYXFfcm90OTBfZjMyKGZsb2F0MzJ4NF90IF9fcDAsIGZsb2F0MzJ4NF90IF9fcDEsIGZsb2F0MzJ4NF90IF9fcDIpIHsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdmNtbGFxX3JvdDkwX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIChpbnQ4eDE2X3QpX19wMiwgNDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4NF90IHZjbWxhcV9yb3Q5MF9mMzIoZmxvYXQzMng0X3QgX19wMCwgZmxvYXQzMng0X3QgX19wMSwgZmxvYXQzMng0X3QgX19wMikgewogIGZsb2F0MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGZsb2F0MzJ4NF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDMsIDIsIDEsIDApOwogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y21sYXFfcm90OTBfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIChpbnQ4eDE2X3QpX19yZXYyLCA0MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MzJ4NF90IF9fbm9zd2FwX3ZjbWxhcV9yb3Q5MF9mMzIoZmxvYXQzMng0X3QgX19wMCwgZmxvYXQzMng0X3QgX19wMSwgZmxvYXQzMng0X3QgX19wMikgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y21sYXFfcm90OTBfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgKGludDh4MTZfdClfX3AyLCA0MSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMngyX3QgdmNtbGFfcm90OTBfZjMyKGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0MzJ4Ml90IF9fcDEsIGZsb2F0MzJ4Ml90IF9fcDIpIHsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdmNtbGFfcm90OTBfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIChpbnQ4eDhfdClfX3AyLCA5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDJfdCB2Y21sYV9yb3Q5MF9mMzIoZmxvYXQzMngyX3QgX19wMCwgZmxvYXQzMngyX3QgX19wMSwgZmxvYXQzMngyX3QgX19wMikgewogIGZsb2F0MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGZsb2F0MzJ4Ml90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDEsIDApOwogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y21sYV9yb3Q5MF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIChpbnQ4eDhfdClfX3JldjIsIDkpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDMyeDJfdCBfX25vc3dhcF92Y21sYV9yb3Q5MF9mMzIoZmxvYXQzMngyX3QgX19wMCwgZmxvYXQzMngyX3QgX19wMSwgZmxvYXQzMngyX3QgX19wMikgewogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y21sYV9yb3Q5MF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgKGludDh4OF90KV9fcDIsIDkpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZjbWxhX3JvdDkwX2xhbmVfZjMyKF9fcDBfMTkzLCBfX3AxXzE5MywgX19wMl8xOTMsIF9fcDNfMTkzKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJfdCBfX3MwXzE5MyA9IF9fcDBfMTkzOyBcCiAgZmxvYXQzMngyX3QgX19zMV8xOTMgPSBfX3AxXzE5MzsgXAogIGZsb2F0MzJ4Ml90IF9fczJfMTkzID0gX19wMl8xOTM7IFwKICBmbG9hdDMyeDJfdCBfX3JldF8xOTM7IFwKZmxvYXQzMngyX3QgX19yZWludF8xOTMgPSBfX3MyXzE5MzsgXAp1aW50NjR4MV90IF9fcmVpbnQxXzE5MyA9ICh1aW50NjR4MV90KSB7dmdldF9sYW5lX3U2NCgqKHVpbnQ2NHgxX3QgKikgJl9fcmVpbnRfMTkzLCBfX3AzXzE5Myl9OyBcCiAgX19yZXRfMTkzID0gdmNtbGFfcm90OTBfZjMyKF9fczBfMTkzLCBfX3MxXzE5MywgKihmbG9hdDMyeDJfdCAqKSAmX19yZWludDFfMTkzKTsgXAogIF9fcmV0XzE5MzsgXAp9KQojZWxzZQojZGVmaW5lIHZjbWxhX3JvdDkwX2xhbmVfZjMyKF9fcDBfMTk0LCBfX3AxXzE5NCwgX19wMl8xOTQsIF9fcDNfMTk0KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJfdCBfX3MwXzE5NCA9IF9fcDBfMTk0OyBcCiAgZmxvYXQzMngyX3QgX19zMV8xOTQgPSBfX3AxXzE5NDsgXAogIGZsb2F0MzJ4Ml90IF9fczJfMTk0ID0gX19wMl8xOTQ7IFwKICBmbG9hdDMyeDJfdCBfX3JldjBfMTk0OyAgX19yZXYwXzE5NCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfMTk0LCBfX3MwXzE5NCwgMSwgMCk7IFwKICBmbG9hdDMyeDJfdCBfX3JldjFfMTk0OyAgX19yZXYxXzE5NCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfMTk0LCBfX3MxXzE5NCwgMSwgMCk7IFwKICBmbG9hdDMyeDJfdCBfX3JldjJfMTk0OyAgX19yZXYyXzE5NCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfMTk0LCBfX3MyXzE5NCwgMSwgMCk7IFwKICBmbG9hdDMyeDJfdCBfX3JldF8xOTQ7IFwKZmxvYXQzMngyX3QgX19yZWludF8xOTQgPSBfX3JldjJfMTk0OyBcCnVpbnQ2NHgxX3QgX19yZWludDFfMTk0ID0gKHVpbnQ2NHgxX3QpIHt2Z2V0X2xhbmVfdTY0KCoodWludDY0eDFfdCAqKSAmX19yZWludF8xOTQsIF9fcDNfMTk0KX07IFwKICBfX3JldF8xOTQgPSBfX25vc3dhcF92Y21sYV9yb3Q5MF9mMzIoX19yZXYwXzE5NCwgX19yZXYxXzE5NCwgKihmbG9hdDMyeDJfdCAqKSAmX19yZWludDFfMTk0KTsgXAogIF9fcmV0XzE5NCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzE5NCwgX19yZXRfMTk0LCAxLCAwKTsgXAogIF9fcmV0XzE5NDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZjbWxhcV9yb3Q5MF9sYW5lX2YzMihfX3AwXzE5NSwgX19wMV8xOTUsIF9fcDJfMTk1LCBfX3AzXzE5NSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0X3QgX19zMF8xOTUgPSBfX3AwXzE5NTsgXAogIGZsb2F0MzJ4NF90IF9fczFfMTk1ID0gX19wMV8xOTU7IFwKICBmbG9hdDMyeDJfdCBfX3MyXzE5NSA9IF9fcDJfMTk1OyBcCiAgZmxvYXQzMng0X3QgX19yZXRfMTk1OyBcCmZsb2F0MzJ4Ml90IF9fcmVpbnRfMTk1ID0gX19zMl8xOTU7IFwKdWludDY0eDJfdCBfX3JlaW50MV8xOTUgPSAodWludDY0eDJfdCkge3ZnZXRfbGFuZV91NjQoKih1aW50NjR4MV90ICopICZfX3JlaW50XzE5NSwgX19wM18xOTUpLCB2Z2V0X2xhbmVfdTY0KCoodWludDY0eDFfdCAqKSAmX19yZWludF8xOTUsIF9fcDNfMTk1KX07IFwKICBfX3JldF8xOTUgPSB2Y21sYXFfcm90OTBfZjMyKF9fczBfMTk1LCBfX3MxXzE5NSwgKihmbG9hdDMyeDRfdCAqKSAmX19yZWludDFfMTk1KTsgXAogIF9fcmV0XzE5NTsgXAp9KQojZWxzZQojZGVmaW5lIHZjbWxhcV9yb3Q5MF9sYW5lX2YzMihfX3AwXzE5NiwgX19wMV8xOTYsIF9fcDJfMTk2LCBfX3AzXzE5NikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0X3QgX19zMF8xOTYgPSBfX3AwXzE5NjsgXAogIGZsb2F0MzJ4NF90IF9fczFfMTk2ID0gX19wMV8xOTY7IFwKICBmbG9hdDMyeDJfdCBfX3MyXzE5NiA9IF9fcDJfMTk2OyBcCiAgZmxvYXQzMng0X3QgX19yZXYwXzE5NjsgIF9fcmV2MF8xOTYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzE5NiwgX19zMF8xOTYsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQzMng0X3QgX19yZXYxXzE5NjsgIF9fcmV2MV8xOTYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzE5NiwgX19zMV8xOTYsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQzMngyX3QgX19yZXYyXzE5NjsgIF9fcmV2Ml8xOTYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzE5NiwgX19zMl8xOTYsIDEsIDApOyBcCiAgZmxvYXQzMng0X3QgX19yZXRfMTk2OyBcCmZsb2F0MzJ4Ml90IF9fcmVpbnRfMTk2ID0gX19yZXYyXzE5NjsgXAp1aW50NjR4Ml90IF9fcmVpbnQxXzE5NiA9ICh1aW50NjR4Ml90KSB7dmdldF9sYW5lX3U2NCgqKHVpbnQ2NHgxX3QgKikgJl9fcmVpbnRfMTk2LCBfX3AzXzE5NiksIHZnZXRfbGFuZV91NjQoKih1aW50NjR4MV90ICopICZfX3JlaW50XzE5NiwgX19wM18xOTYpfTsgXAogIF9fcmV0XzE5NiA9IF9fbm9zd2FwX3ZjbWxhcV9yb3Q5MF9mMzIoX19yZXYwXzE5NiwgX19yZXYxXzE5NiwgKihmbG9hdDMyeDRfdCAqKSAmX19yZWludDFfMTk2KTsgXAogIF9fcmV0XzE5NiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzE5NiwgX19yZXRfMTk2LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzE5NjsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZjbWxhX3JvdDkwX2xhbmVxX2YzMihfX3AwXzE5NywgX19wMV8xOTcsIF9fcDJfMTk3LCBfX3AzXzE5NykgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMngyX3QgX19zMF8xOTcgPSBfX3AwXzE5NzsgXAogIGZsb2F0MzJ4Ml90IF9fczFfMTk3ID0gX19wMV8xOTc7IFwKICBmbG9hdDMyeDRfdCBfX3MyXzE5NyA9IF9fcDJfMTk3OyBcCiAgZmxvYXQzMngyX3QgX19yZXRfMTk3OyBcCmZsb2F0MzJ4NF90IF9fcmVpbnRfMTk3ID0gX19zMl8xOTc7IFwKdWludDY0eDFfdCBfX3JlaW50MV8xOTcgPSAodWludDY0eDFfdCkge3ZnZXRxX2xhbmVfdTY0KCoodWludDY0eDJfdCAqKSAmX19yZWludF8xOTcsIF9fcDNfMTk3KX07IFwKICBfX3JldF8xOTcgPSB2Y21sYV9yb3Q5MF9mMzIoX19zMF8xOTcsIF9fczFfMTk3LCAqKGZsb2F0MzJ4Ml90ICopICZfX3JlaW50MV8xOTcpOyBcCiAgX19yZXRfMTk3OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmNtbGFfcm90OTBfbGFuZXFfZjMyKF9fcDBfMTk4LCBfX3AxXzE5OCwgX19wMl8xOTgsIF9fcDNfMTk4KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJfdCBfX3MwXzE5OCA9IF9fcDBfMTk4OyBcCiAgZmxvYXQzMngyX3QgX19zMV8xOTggPSBfX3AxXzE5ODsgXAogIGZsb2F0MzJ4NF90IF9fczJfMTk4ID0gX19wMl8xOTg7IFwKICBmbG9hdDMyeDJfdCBfX3JldjBfMTk4OyAgX19yZXYwXzE5OCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfMTk4LCBfX3MwXzE5OCwgMSwgMCk7IFwKICBmbG9hdDMyeDJfdCBfX3JldjFfMTk4OyAgX19yZXYxXzE5OCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfMTk4LCBfX3MxXzE5OCwgMSwgMCk7IFwKICBmbG9hdDMyeDRfdCBfX3JldjJfMTk4OyAgX19yZXYyXzE5OCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfMTk4LCBfX3MyXzE5OCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDMyeDJfdCBfX3JldF8xOTg7IFwKZmxvYXQzMng0X3QgX19yZWludF8xOTggPSBfX3JldjJfMTk4OyBcCnVpbnQ2NHgxX3QgX19yZWludDFfMTk4ID0gKHVpbnQ2NHgxX3QpIHtfX25vc3dhcF92Z2V0cV9sYW5lX3U2NCgqKHVpbnQ2NHgyX3QgKikgJl9fcmVpbnRfMTk4LCBfX3AzXzE5OCl9OyBcCiAgX19yZXRfMTk4ID0gX19ub3N3YXBfdmNtbGFfcm90OTBfZjMyKF9fcmV2MF8xOTgsIF9fcmV2MV8xOTgsICooZmxvYXQzMngyX3QgKikgJl9fcmVpbnQxXzE5OCk7IFwKICBfX3JldF8xOTggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8xOTgsIF9fcmV0XzE5OCwgMSwgMCk7IFwKICBfX3JldF8xOTg7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Y21sYXFfcm90OTBfbGFuZXFfZjMyKF9fcDBfMTk5LCBfX3AxXzE5OSwgX19wMl8xOTksIF9fcDNfMTk5KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDRfdCBfX3MwXzE5OSA9IF9fcDBfMTk5OyBcCiAgZmxvYXQzMng0X3QgX19zMV8xOTkgPSBfX3AxXzE5OTsgXAogIGZsb2F0MzJ4NF90IF9fczJfMTk5ID0gX19wMl8xOTk7IFwKICBmbG9hdDMyeDRfdCBfX3JldF8xOTk7IFwKZmxvYXQzMng0X3QgX19yZWludF8xOTkgPSBfX3MyXzE5OTsgXAp1aW50NjR4Ml90IF9fcmVpbnQxXzE5OSA9ICh1aW50NjR4Ml90KSB7dmdldHFfbGFuZV91NjQoKih1aW50NjR4Ml90ICopICZfX3JlaW50XzE5OSwgX19wM18xOTkpLCB2Z2V0cV9sYW5lX3U2NCgqKHVpbnQ2NHgyX3QgKikgJl9fcmVpbnRfMTk5LCBfX3AzXzE5OSl9OyBcCiAgX19yZXRfMTk5ID0gdmNtbGFxX3JvdDkwX2YzMihfX3MwXzE5OSwgX19zMV8xOTksICooZmxvYXQzMng0X3QgKikgJl9fcmVpbnQxXzE5OSk7IFwKICBfX3JldF8xOTk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Y21sYXFfcm90OTBfbGFuZXFfZjMyKF9fcDBfMjAwLCBfX3AxXzIwMCwgX19wMl8yMDAsIF9fcDNfMjAwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDRfdCBfX3MwXzIwMCA9IF9fcDBfMjAwOyBcCiAgZmxvYXQzMng0X3QgX19zMV8yMDAgPSBfX3AxXzIwMDsgXAogIGZsb2F0MzJ4NF90IF9fczJfMjAwID0gX19wMl8yMDA7IFwKICBmbG9hdDMyeDRfdCBfX3JldjBfMjAwOyAgX19yZXYwXzIwMCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfMjAwLCBfX3MwXzIwMCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDMyeDRfdCBfX3JldjFfMjAwOyAgX19yZXYxXzIwMCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfMjAwLCBfX3MxXzIwMCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDMyeDRfdCBfX3JldjJfMjAwOyAgX19yZXYyXzIwMCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfMjAwLCBfX3MyXzIwMCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDMyeDRfdCBfX3JldF8yMDA7IFwKZmxvYXQzMng0X3QgX19yZWludF8yMDAgPSBfX3JldjJfMjAwOyBcCnVpbnQ2NHgyX3QgX19yZWludDFfMjAwID0gKHVpbnQ2NHgyX3QpIHtfX25vc3dhcF92Z2V0cV9sYW5lX3U2NCgqKHVpbnQ2NHgyX3QgKikgJl9fcmVpbnRfMjAwLCBfX3AzXzIwMCksIF9fbm9zd2FwX3ZnZXRxX2xhbmVfdTY0KCoodWludDY0eDJfdCAqKSAmX19yZWludF8yMDAsIF9fcDNfMjAwKX07IFwKICBfX3JldF8yMDAgPSBfX25vc3dhcF92Y21sYXFfcm90OTBfZjMyKF9fcmV2MF8yMDAsIF9fcmV2MV8yMDAsICooZmxvYXQzMng0X3QgKikgJl9fcmVpbnQxXzIwMCk7IFwKICBfX3JldF8yMDAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8yMDAsIF9fcmV0XzIwMCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF8yMDA7IFwKfSkKI2VuZGlmCgojZW5kaWYKI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9DT01QTEVYKSAmJiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfRlAxNl9WRUNUT1JfQVJJVEhNRVRJQykKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQxNng0X3QgdmNhZGRfcm90MjcwX2YxNihmbG9hdDE2eDRfdCBfX3AwLCBmbG9hdDE2eDRfdCBfX3AxKSB7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjYWRkX3JvdDI3MF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgOCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQxNng0X3QgdmNhZGRfcm90MjcwX2YxNihmbG9hdDE2eDRfdCBfX3AwLCBmbG9hdDE2eDRfdCBfX3AxKSB7CiAgZmxvYXQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjYWRkX3JvdDI3MF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDE2eDRfdCB2Y2FkZF9yb3Q5MF9mMTYoZmxvYXQxNng0X3QgX19wMCwgZmxvYXQxNng0X3QgX19wMSkgewogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y2FkZF9yb3Q5MF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgOCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQxNng0X3QgdmNhZGRfcm90OTBfZjE2KGZsb2F0MTZ4NF90IF9fcDAsIGZsb2F0MTZ4NF90IF9fcDEpIHsKICBmbG9hdDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDRfdCkgX19idWlsdGluX25lb25fdmNhZGRfcm90OTBfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCA4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQxNng4X3QgdmNhZGRxX3JvdDI3MF9mMTYoZmxvYXQxNng4X3QgX19wMCwgZmxvYXQxNng4X3QgX19wMSkgewogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92Y2FkZHFfcm90MjcwX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDQwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDE2eDhfdCB2Y2FkZHFfcm90MjcwX2YxNihmbG9hdDE2eDhfdCBfX3AwLCBmbG9hdDE2eDhfdCBfX3AxKSB7CiAgZmxvYXQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjYWRkcV9yb3QyNzBfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDQwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQxNng4X3QgdmNhZGRxX3JvdDkwX2YxNihmbG9hdDE2eDhfdCBfX3AwLCBmbG9hdDE2eDhfdCBfX3AxKSB7CiAgZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjYWRkcV9yb3Q5MF92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA0MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQxNng4X3QgdmNhZGRxX3JvdDkwX2YxNihmbG9hdDE2eDhfdCBfX3AwLCBmbG9hdDE2eDhfdCBfX3AxKSB7CiAgZmxvYXQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjYWRkcV9yb3Q5MF92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNDApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDE2eDhfdCB2Y21sYXFfZjE2KGZsb2F0MTZ4OF90IF9fcDAsIGZsb2F0MTZ4OF90IF9fcDEsIGZsb2F0MTZ4OF90IF9fcDIpIHsKICBmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDhfdCkgX19idWlsdGluX25lb25fdmNtbGFxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIChpbnQ4eDE2X3QpX19wMiwgNDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MTZ4OF90IHZjbWxhcV9mMTYoZmxvYXQxNng4X3QgX19wMCwgZmxvYXQxNng4X3QgX19wMSwgZmxvYXQxNng4X3QgX19wMikgewogIGZsb2F0MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4OF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92Y21sYXFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIChpbnQ4eDE2X3QpX19yZXYyLCA0MCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MTZ4OF90IF9fbm9zd2FwX3ZjbWxhcV9mMTYoZmxvYXQxNng4X3QgX19wMCwgZmxvYXQxNng4X3QgX19wMSwgZmxvYXQxNng4X3QgX19wMikgewogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92Y21sYXFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgKGludDh4MTZfdClfX3AyLCA0MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQxNng0X3QgdmNtbGFfZjE2KGZsb2F0MTZ4NF90IF9fcDAsIGZsb2F0MTZ4NF90IF9fcDEsIGZsb2F0MTZ4NF90IF9fcDIpIHsKICBmbG9hdDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDRfdCkgX19idWlsdGluX25lb25fdmNtbGFfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIChpbnQ4eDhfdClfX3AyLCA4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDE2eDRfdCB2Y21sYV9mMTYoZmxvYXQxNng0X3QgX19wMCwgZmxvYXQxNng0X3QgX19wMSwgZmxvYXQxNng0X3QgX19wMikgewogIGZsb2F0MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4NF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y21sYV92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIChpbnQ4eDhfdClfX3JldjIsIDgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDE2eDRfdCBfX25vc3dhcF92Y21sYV9mMTYoZmxvYXQxNng0X3QgX19wMCwgZmxvYXQxNng0X3QgX19wMSwgZmxvYXQxNng0X3QgX19wMikgewogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y21sYV92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgKGludDh4OF90KV9fcDIsIDgpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZjbWxhX2xhbmVfZjE2KF9fcDBfMjAxLCBfX3AxXzIwMSwgX19wMl8yMDEsIF9fcDNfMjAxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDRfdCBfX3MwXzIwMSA9IF9fcDBfMjAxOyBcCiAgZmxvYXQxNng0X3QgX19zMV8yMDEgPSBfX3AxXzIwMTsgXAogIGZsb2F0MTZ4NF90IF9fczJfMjAxID0gX19wMl8yMDE7IFwKICBmbG9hdDE2eDRfdCBfX3JldF8yMDE7IFwKZmxvYXQxNng0X3QgX19yZWludF8yMDEgPSBfX3MyXzIwMTsgXAp1aW50MzJ4Ml90IF9fcmVpbnQxXzIwMSA9ICh1aW50MzJ4Ml90KSB7dmdldF9sYW5lX3UzMigqKHVpbnQzMngyX3QgKikgJl9fcmVpbnRfMjAxLCBfX3AzXzIwMSksIHZnZXRfbGFuZV91MzIoKih1aW50MzJ4Ml90ICopICZfX3JlaW50XzIwMSwgX19wM18yMDEpfTsgXAogIF9fcmV0XzIwMSA9IHZjbWxhX2YxNihfX3MwXzIwMSwgX19zMV8yMDEsICooZmxvYXQxNng0X3QgKikgJl9fcmVpbnQxXzIwMSk7IFwKICBfX3JldF8yMDE7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Y21sYV9sYW5lX2YxNihfX3AwXzIwMiwgX19wMV8yMDIsIF9fcDJfMjAyLCBfX3AzXzIwMikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng0X3QgX19zMF8yMDIgPSBfX3AwXzIwMjsgXAogIGZsb2F0MTZ4NF90IF9fczFfMjAyID0gX19wMV8yMDI7IFwKICBmbG9hdDE2eDRfdCBfX3MyXzIwMiA9IF9fcDJfMjAyOyBcCiAgZmxvYXQxNng0X3QgX19yZXYwXzIwMjsgIF9fcmV2MF8yMDIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzIwMiwgX19zMF8yMDIsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng0X3QgX19yZXYxXzIwMjsgIF9fcmV2MV8yMDIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzIwMiwgX19zMV8yMDIsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng0X3QgX19yZXYyXzIwMjsgIF9fcmV2Ml8yMDIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzIwMiwgX19zMl8yMDIsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng0X3QgX19yZXRfMjAyOyBcCmZsb2F0MTZ4NF90IF9fcmVpbnRfMjAyID0gX19yZXYyXzIwMjsgXAp1aW50MzJ4Ml90IF9fcmVpbnQxXzIwMiA9ICh1aW50MzJ4Ml90KSB7X19ub3N3YXBfdmdldF9sYW5lX3UzMigqKHVpbnQzMngyX3QgKikgJl9fcmVpbnRfMjAyLCBfX3AzXzIwMiksIF9fbm9zd2FwX3ZnZXRfbGFuZV91MzIoKih1aW50MzJ4Ml90ICopICZfX3JlaW50XzIwMiwgX19wM18yMDIpfTsgXAogIF9fcmV0XzIwMiA9IF9fbm9zd2FwX3ZjbWxhX2YxNihfX3JldjBfMjAyLCBfX3JldjFfMjAyLCAqKGZsb2F0MTZ4NF90ICopICZfX3JlaW50MV8yMDIpOyBcCiAgX19yZXRfMjAyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMjAyLCBfX3JldF8yMDIsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfMjAyOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmNtbGFxX2xhbmVfZjE2KF9fcDBfMjAzLCBfX3AxXzIwMywgX19wMl8yMDMsIF9fcDNfMjAzKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDhfdCBfX3MwXzIwMyA9IF9fcDBfMjAzOyBcCiAgZmxvYXQxNng4X3QgX19zMV8yMDMgPSBfX3AxXzIwMzsgXAogIGZsb2F0MTZ4NF90IF9fczJfMjAzID0gX19wMl8yMDM7IFwKICBmbG9hdDE2eDhfdCBfX3JldF8yMDM7IFwKZmxvYXQxNng0X3QgX19yZWludF8yMDMgPSBfX3MyXzIwMzsgXAp1aW50MzJ4NF90IF9fcmVpbnQxXzIwMyA9ICh1aW50MzJ4NF90KSB7dmdldF9sYW5lX3UzMigqKHVpbnQzMngyX3QgKikgJl9fcmVpbnRfMjAzLCBfX3AzXzIwMyksIHZnZXRfbGFuZV91MzIoKih1aW50MzJ4Ml90ICopICZfX3JlaW50XzIwMywgX19wM18yMDMpLCB2Z2V0X2xhbmVfdTMyKCoodWludDMyeDJfdCAqKSAmX19yZWludF8yMDMsIF9fcDNfMjAzKSwgdmdldF9sYW5lX3UzMigqKHVpbnQzMngyX3QgKikgJl9fcmVpbnRfMjAzLCBfX3AzXzIwMyl9OyBcCiAgX19yZXRfMjAzID0gdmNtbGFxX2YxNihfX3MwXzIwMywgX19zMV8yMDMsICooZmxvYXQxNng4X3QgKikgJl9fcmVpbnQxXzIwMyk7IFwKICBfX3JldF8yMDM7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Y21sYXFfbGFuZV9mMTYoX19wMF8yMDQsIF9fcDFfMjA0LCBfX3AyXzIwNCwgX19wM18yMDQpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4OF90IF9fczBfMjA0ID0gX19wMF8yMDQ7IFwKICBmbG9hdDE2eDhfdCBfX3MxXzIwNCA9IF9fcDFfMjA0OyBcCiAgZmxvYXQxNng0X3QgX19zMl8yMDQgPSBfX3AyXzIwNDsgXAogIGZsb2F0MTZ4OF90IF9fcmV2MF8yMDQ7ICBfX3JldjBfMjA0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8yMDQsIF9fczBfMjA0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4OF90IF9fcmV2MV8yMDQ7ICBfX3JldjFfMjA0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV8yMDQsIF9fczFfMjA0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4NF90IF9fcmV2Ml8yMDQ7ICBfX3JldjJfMjA0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl8yMDQsIF9fczJfMjA0LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4OF90IF9fcmV0XzIwNDsgXApmbG9hdDE2eDRfdCBfX3JlaW50XzIwNCA9IF9fcmV2Ml8yMDQ7IFwKdWludDMyeDRfdCBfX3JlaW50MV8yMDQgPSAodWludDMyeDRfdCkge19fbm9zd2FwX3ZnZXRfbGFuZV91MzIoKih1aW50MzJ4Ml90ICopICZfX3JlaW50XzIwNCwgX19wM18yMDQpLCBfX25vc3dhcF92Z2V0X2xhbmVfdTMyKCoodWludDMyeDJfdCAqKSAmX19yZWludF8yMDQsIF9fcDNfMjA0KSwgX19ub3N3YXBfdmdldF9sYW5lX3UzMigqKHVpbnQzMngyX3QgKikgJl9fcmVpbnRfMjA0LCBfX3AzXzIwNCksIF9fbm9zd2FwX3ZnZXRfbGFuZV91MzIoKih1aW50MzJ4Ml90ICopICZfX3JlaW50XzIwNCwgX19wM18yMDQpfTsgXAogIF9fcmV0XzIwNCA9IF9fbm9zd2FwX3ZjbWxhcV9mMTYoX19yZXYwXzIwNCwgX19yZXYxXzIwNCwgKihmbG9hdDE2eDhfdCAqKSAmX19yZWludDFfMjA0KTsgXAogIF9fcmV0XzIwNCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzIwNCwgX19yZXRfMjA0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzIwNDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZjbWxhX2xhbmVxX2YxNihfX3AwXzIwNSwgX19wMV8yMDUsIF9fcDJfMjA1LCBfX3AzXzIwNSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng0X3QgX19zMF8yMDUgPSBfX3AwXzIwNTsgXAogIGZsb2F0MTZ4NF90IF9fczFfMjA1ID0gX19wMV8yMDU7IFwKICBmbG9hdDE2eDhfdCBfX3MyXzIwNSA9IF9fcDJfMjA1OyBcCiAgZmxvYXQxNng0X3QgX19yZXRfMjA1OyBcCmZsb2F0MTZ4OF90IF9fcmVpbnRfMjA1ID0gX19zMl8yMDU7IFwKdWludDMyeDJfdCBfX3JlaW50MV8yMDUgPSAodWludDMyeDJfdCkge3ZnZXRxX2xhbmVfdTMyKCoodWludDMyeDRfdCAqKSAmX19yZWludF8yMDUsIF9fcDNfMjA1KSwgdmdldHFfbGFuZV91MzIoKih1aW50MzJ4NF90ICopICZfX3JlaW50XzIwNSwgX19wM18yMDUpfTsgXAogIF9fcmV0XzIwNSA9IHZjbWxhX2YxNihfX3MwXzIwNSwgX19zMV8yMDUsICooZmxvYXQxNng0X3QgKikgJl9fcmVpbnQxXzIwNSk7IFwKICBfX3JldF8yMDU7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Y21sYV9sYW5lcV9mMTYoX19wMF8yMDYsIF9fcDFfMjA2LCBfX3AyXzIwNiwgX19wM18yMDYpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4NF90IF9fczBfMjA2ID0gX19wMF8yMDY7IFwKICBmbG9hdDE2eDRfdCBfX3MxXzIwNiA9IF9fcDFfMjA2OyBcCiAgZmxvYXQxNng4X3QgX19zMl8yMDYgPSBfX3AyXzIwNjsgXAogIGZsb2F0MTZ4NF90IF9fcmV2MF8yMDY7ICBfX3JldjBfMjA2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8yMDYsIF9fczBfMjA2LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4NF90IF9fcmV2MV8yMDY7ICBfX3JldjFfMjA2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV8yMDYsIF9fczFfMjA2LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4OF90IF9fcmV2Ml8yMDY7ICBfX3JldjJfMjA2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl8yMDYsIF9fczJfMjA2LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4NF90IF9fcmV0XzIwNjsgXApmbG9hdDE2eDhfdCBfX3JlaW50XzIwNiA9IF9fcmV2Ml8yMDY7IFwKdWludDMyeDJfdCBfX3JlaW50MV8yMDYgPSAodWludDMyeDJfdCkge19fbm9zd2FwX3ZnZXRxX2xhbmVfdTMyKCoodWludDMyeDRfdCAqKSAmX19yZWludF8yMDYsIF9fcDNfMjA2KSwgX19ub3N3YXBfdmdldHFfbGFuZV91MzIoKih1aW50MzJ4NF90ICopICZfX3JlaW50XzIwNiwgX19wM18yMDYpfTsgXAogIF9fcmV0XzIwNiA9IF9fbm9zd2FwX3ZjbWxhX2YxNihfX3JldjBfMjA2LCBfX3JldjFfMjA2LCAqKGZsb2F0MTZ4NF90ICopICZfX3JlaW50MV8yMDYpOyBcCiAgX19yZXRfMjA2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMjA2LCBfX3JldF8yMDYsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfMjA2OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmNtbGFxX2xhbmVxX2YxNihfX3AwXzIwNywgX19wMV8yMDcsIF9fcDJfMjA3LCBfX3AzXzIwNykgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4X3QgX19zMF8yMDcgPSBfX3AwXzIwNzsgXAogIGZsb2F0MTZ4OF90IF9fczFfMjA3ID0gX19wMV8yMDc7IFwKICBmbG9hdDE2eDhfdCBfX3MyXzIwNyA9IF9fcDJfMjA3OyBcCiAgZmxvYXQxNng4X3QgX19yZXRfMjA3OyBcCmZsb2F0MTZ4OF90IF9fcmVpbnRfMjA3ID0gX19zMl8yMDc7IFwKdWludDMyeDRfdCBfX3JlaW50MV8yMDcgPSAodWludDMyeDRfdCkge3ZnZXRxX2xhbmVfdTMyKCoodWludDMyeDRfdCAqKSAmX19yZWludF8yMDcsIF9fcDNfMjA3KSwgdmdldHFfbGFuZV91MzIoKih1aW50MzJ4NF90ICopICZfX3JlaW50XzIwNywgX19wM18yMDcpLCB2Z2V0cV9sYW5lX3UzMigqKHVpbnQzMng0X3QgKikgJl9fcmVpbnRfMjA3LCBfX3AzXzIwNyksIHZnZXRxX2xhbmVfdTMyKCoodWludDMyeDRfdCAqKSAmX19yZWludF8yMDcsIF9fcDNfMjA3KX07IFwKICBfX3JldF8yMDcgPSB2Y21sYXFfZjE2KF9fczBfMjA3LCBfX3MxXzIwNywgKihmbG9hdDE2eDhfdCAqKSAmX19yZWludDFfMjA3KTsgXAogIF9fcmV0XzIwNzsgXAp9KQojZWxzZQojZGVmaW5lIHZjbWxhcV9sYW5lcV9mMTYoX19wMF8yMDgsIF9fcDFfMjA4LCBfX3AyXzIwOCwgX19wM18yMDgpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4OF90IF9fczBfMjA4ID0gX19wMF8yMDg7IFwKICBmbG9hdDE2eDhfdCBfX3MxXzIwOCA9IF9fcDFfMjA4OyBcCiAgZmxvYXQxNng4X3QgX19zMl8yMDggPSBfX3AyXzIwODsgXAogIGZsb2F0MTZ4OF90IF9fcmV2MF8yMDg7ICBfX3JldjBfMjA4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8yMDgsIF9fczBfMjA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4OF90IF9fcmV2MV8yMDg7ICBfX3JldjFfMjA4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV8yMDgsIF9fczFfMjA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4OF90IF9fcmV2Ml8yMDg7ICBfX3JldjJfMjA4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl8yMDgsIF9fczJfMjA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4OF90IF9fcmV0XzIwODsgXApmbG9hdDE2eDhfdCBfX3JlaW50XzIwOCA9IF9fcmV2Ml8yMDg7IFwKdWludDMyeDRfdCBfX3JlaW50MV8yMDggPSAodWludDMyeDRfdCkge19fbm9zd2FwX3ZnZXRxX2xhbmVfdTMyKCoodWludDMyeDRfdCAqKSAmX19yZWludF8yMDgsIF9fcDNfMjA4KSwgX19ub3N3YXBfdmdldHFfbGFuZV91MzIoKih1aW50MzJ4NF90ICopICZfX3JlaW50XzIwOCwgX19wM18yMDgpLCBfX25vc3dhcF92Z2V0cV9sYW5lX3UzMigqKHVpbnQzMng0X3QgKikgJl9fcmVpbnRfMjA4LCBfX3AzXzIwOCksIF9fbm9zd2FwX3ZnZXRxX2xhbmVfdTMyKCoodWludDMyeDRfdCAqKSAmX19yZWludF8yMDgsIF9fcDNfMjA4KX07IFwKICBfX3JldF8yMDggPSBfX25vc3dhcF92Y21sYXFfZjE2KF9fcmV2MF8yMDgsIF9fcmV2MV8yMDgsICooZmxvYXQxNng4X3QgKikgJl9fcmVpbnQxXzIwOCk7IFwKICBfX3JldF8yMDggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8yMDgsIF9fcmV0XzIwOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF8yMDg7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDE2eDhfdCB2Y21sYXFfcm90MTgwX2YxNihmbG9hdDE2eDhfdCBfX3AwLCBmbG9hdDE2eDhfdCBfX3AxLCBmbG9hdDE2eDhfdCBfX3AyKSB7CiAgZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbWxhcV9yb3QxODBfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgKGludDh4MTZfdClfX3AyLCA0MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQxNng4X3QgdmNtbGFxX3JvdDE4MF9mMTYoZmxvYXQxNng4X3QgX19wMCwgZmxvYXQxNng4X3QgX19wMSwgZmxvYXQxNng4X3QgX19wMikgewogIGZsb2F0MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4OF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92Y21sYXFfcm90MTgwX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAoaW50OHgxNl90KV9fcmV2MiwgNDApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDE2eDhfdCBfX25vc3dhcF92Y21sYXFfcm90MTgwX2YxNihmbG9hdDE2eDhfdCBfX3AwLCBmbG9hdDE2eDhfdCBfX3AxLCBmbG9hdDE2eDhfdCBfX3AyKSB7CiAgZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbWxhcV9yb3QxODBfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgKGludDh4MTZfdClfX3AyLCA0MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQxNng0X3QgdmNtbGFfcm90MTgwX2YxNihmbG9hdDE2eDRfdCBfX3AwLCBmbG9hdDE2eDRfdCBfX3AxLCBmbG9hdDE2eDRfdCBfX3AyKSB7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbWxhX3JvdDE4MF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgKGludDh4OF90KV9fcDIsIDgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MTZ4NF90IHZjbWxhX3JvdDE4MF9mMTYoZmxvYXQxNng0X3QgX19wMCwgZmxvYXQxNng0X3QgX19wMSwgZmxvYXQxNng0X3QgX19wMikgewogIGZsb2F0MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4NF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y21sYV9yb3QxODBfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAoaW50OHg4X3QpX19yZXYyLCA4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQxNng0X3QgX19ub3N3YXBfdmNtbGFfcm90MTgwX2YxNihmbG9hdDE2eDRfdCBfX3AwLCBmbG9hdDE2eDRfdCBfX3AxLCBmbG9hdDE2eDRfdCBfX3AyKSB7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbWxhX3JvdDE4MF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgKGludDh4OF90KV9fcDIsIDgpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZjbWxhX3JvdDE4MF9sYW5lX2YxNihfX3AwXzIwOSwgX19wMV8yMDksIF9fcDJfMjA5LCBfX3AzXzIwOSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng0X3QgX19zMF8yMDkgPSBfX3AwXzIwOTsgXAogIGZsb2F0MTZ4NF90IF9fczFfMjA5ID0gX19wMV8yMDk7IFwKICBmbG9hdDE2eDRfdCBfX3MyXzIwOSA9IF9fcDJfMjA5OyBcCiAgZmxvYXQxNng0X3QgX19yZXRfMjA5OyBcCmZsb2F0MTZ4NF90IF9fcmVpbnRfMjA5ID0gX19zMl8yMDk7IFwKdWludDMyeDJfdCBfX3JlaW50MV8yMDkgPSAodWludDMyeDJfdCkge3ZnZXRfbGFuZV91MzIoKih1aW50MzJ4Ml90ICopICZfX3JlaW50XzIwOSwgX19wM18yMDkpLCB2Z2V0X2xhbmVfdTMyKCoodWludDMyeDJfdCAqKSAmX19yZWludF8yMDksIF9fcDNfMjA5KX07IFwKICBfX3JldF8yMDkgPSB2Y21sYV9yb3QxODBfZjE2KF9fczBfMjA5LCBfX3MxXzIwOSwgKihmbG9hdDE2eDRfdCAqKSAmX19yZWludDFfMjA5KTsgXAogIF9fcmV0XzIwOTsgXAp9KQojZWxzZQojZGVmaW5lIHZjbWxhX3JvdDE4MF9sYW5lX2YxNihfX3AwXzIxMCwgX19wMV8yMTAsIF9fcDJfMjEwLCBfX3AzXzIxMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng0X3QgX19zMF8yMTAgPSBfX3AwXzIxMDsgXAogIGZsb2F0MTZ4NF90IF9fczFfMjEwID0gX19wMV8yMTA7IFwKICBmbG9hdDE2eDRfdCBfX3MyXzIxMCA9IF9fcDJfMjEwOyBcCiAgZmxvYXQxNng0X3QgX19yZXYwXzIxMDsgIF9fcmV2MF8yMTAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzIxMCwgX19zMF8yMTAsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng0X3QgX19yZXYxXzIxMDsgIF9fcmV2MV8yMTAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzIxMCwgX19zMV8yMTAsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng0X3QgX19yZXYyXzIxMDsgIF9fcmV2Ml8yMTAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzIxMCwgX19zMl8yMTAsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng0X3QgX19yZXRfMjEwOyBcCmZsb2F0MTZ4NF90IF9fcmVpbnRfMjEwID0gX19yZXYyXzIxMDsgXAp1aW50MzJ4Ml90IF9fcmVpbnQxXzIxMCA9ICh1aW50MzJ4Ml90KSB7X19ub3N3YXBfdmdldF9sYW5lX3UzMigqKHVpbnQzMngyX3QgKikgJl9fcmVpbnRfMjEwLCBfX3AzXzIxMCksIF9fbm9zd2FwX3ZnZXRfbGFuZV91MzIoKih1aW50MzJ4Ml90ICopICZfX3JlaW50XzIxMCwgX19wM18yMTApfTsgXAogIF9fcmV0XzIxMCA9IF9fbm9zd2FwX3ZjbWxhX3JvdDE4MF9mMTYoX19yZXYwXzIxMCwgX19yZXYxXzIxMCwgKihmbG9hdDE2eDRfdCAqKSAmX19yZWludDFfMjEwKTsgXAogIF9fcmV0XzIxMCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzIxMCwgX19yZXRfMjEwLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzIxMDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZjbWxhcV9yb3QxODBfbGFuZV9mMTYoX19wMF8yMTEsIF9fcDFfMjExLCBfX3AyXzIxMSwgX19wM18yMTEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4OF90IF9fczBfMjExID0gX19wMF8yMTE7IFwKICBmbG9hdDE2eDhfdCBfX3MxXzIxMSA9IF9fcDFfMjExOyBcCiAgZmxvYXQxNng0X3QgX19zMl8yMTEgPSBfX3AyXzIxMTsgXAogIGZsb2F0MTZ4OF90IF9fcmV0XzIxMTsgXApmbG9hdDE2eDRfdCBfX3JlaW50XzIxMSA9IF9fczJfMjExOyBcCnVpbnQzMng0X3QgX19yZWludDFfMjExID0gKHVpbnQzMng0X3QpIHt2Z2V0X2xhbmVfdTMyKCoodWludDMyeDJfdCAqKSAmX19yZWludF8yMTEsIF9fcDNfMjExKSwgdmdldF9sYW5lX3UzMigqKHVpbnQzMngyX3QgKikgJl9fcmVpbnRfMjExLCBfX3AzXzIxMSksIHZnZXRfbGFuZV91MzIoKih1aW50MzJ4Ml90ICopICZfX3JlaW50XzIxMSwgX19wM18yMTEpLCB2Z2V0X2xhbmVfdTMyKCoodWludDMyeDJfdCAqKSAmX19yZWludF8yMTEsIF9fcDNfMjExKX07IFwKICBfX3JldF8yMTEgPSB2Y21sYXFfcm90MTgwX2YxNihfX3MwXzIxMSwgX19zMV8yMTEsICooZmxvYXQxNng4X3QgKikgJl9fcmVpbnQxXzIxMSk7IFwKICBfX3JldF8yMTE7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Y21sYXFfcm90MTgwX2xhbmVfZjE2KF9fcDBfMjEyLCBfX3AxXzIxMiwgX19wMl8yMTIsIF9fcDNfMjEyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDhfdCBfX3MwXzIxMiA9IF9fcDBfMjEyOyBcCiAgZmxvYXQxNng4X3QgX19zMV8yMTIgPSBfX3AxXzIxMjsgXAogIGZsb2F0MTZ4NF90IF9fczJfMjEyID0gX19wMl8yMTI7IFwKICBmbG9hdDE2eDhfdCBfX3JldjBfMjEyOyAgX19yZXYwXzIxMiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfMjEyLCBfX3MwXzIxMiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2eDhfdCBfX3JldjFfMjEyOyAgX19yZXYxXzIxMiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfMjEyLCBfX3MxXzIxMiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2eDRfdCBfX3JldjJfMjEyOyAgX19yZXYyXzIxMiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfMjEyLCBfX3MyXzIxMiwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2eDhfdCBfX3JldF8yMTI7IFwKZmxvYXQxNng0X3QgX19yZWludF8yMTIgPSBfX3JldjJfMjEyOyBcCnVpbnQzMng0X3QgX19yZWludDFfMjEyID0gKHVpbnQzMng0X3QpIHtfX25vc3dhcF92Z2V0X2xhbmVfdTMyKCoodWludDMyeDJfdCAqKSAmX19yZWludF8yMTIsIF9fcDNfMjEyKSwgX19ub3N3YXBfdmdldF9sYW5lX3UzMigqKHVpbnQzMngyX3QgKikgJl9fcmVpbnRfMjEyLCBfX3AzXzIxMiksIF9fbm9zd2FwX3ZnZXRfbGFuZV91MzIoKih1aW50MzJ4Ml90ICopICZfX3JlaW50XzIxMiwgX19wM18yMTIpLCBfX25vc3dhcF92Z2V0X2xhbmVfdTMyKCoodWludDMyeDJfdCAqKSAmX19yZWludF8yMTIsIF9fcDNfMjEyKX07IFwKICBfX3JldF8yMTIgPSBfX25vc3dhcF92Y21sYXFfcm90MTgwX2YxNihfX3JldjBfMjEyLCBfX3JldjFfMjEyLCAqKGZsb2F0MTZ4OF90ICopICZfX3JlaW50MV8yMTIpOyBcCiAgX19yZXRfMjEyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMjEyLCBfX3JldF8yMTIsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfMjEyOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmNtbGFfcm90MTgwX2xhbmVxX2YxNihfX3AwXzIxMywgX19wMV8yMTMsIF9fcDJfMjEzLCBfX3AzXzIxMykgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng0X3QgX19zMF8yMTMgPSBfX3AwXzIxMzsgXAogIGZsb2F0MTZ4NF90IF9fczFfMjEzID0gX19wMV8yMTM7IFwKICBmbG9hdDE2eDhfdCBfX3MyXzIxMyA9IF9fcDJfMjEzOyBcCiAgZmxvYXQxNng0X3QgX19yZXRfMjEzOyBcCmZsb2F0MTZ4OF90IF9fcmVpbnRfMjEzID0gX19zMl8yMTM7IFwKdWludDMyeDJfdCBfX3JlaW50MV8yMTMgPSAodWludDMyeDJfdCkge3ZnZXRxX2xhbmVfdTMyKCoodWludDMyeDRfdCAqKSAmX19yZWludF8yMTMsIF9fcDNfMjEzKSwgdmdldHFfbGFuZV91MzIoKih1aW50MzJ4NF90ICopICZfX3JlaW50XzIxMywgX19wM18yMTMpfTsgXAogIF9fcmV0XzIxMyA9IHZjbWxhX3JvdDE4MF9mMTYoX19zMF8yMTMsIF9fczFfMjEzLCAqKGZsb2F0MTZ4NF90ICopICZfX3JlaW50MV8yMTMpOyBcCiAgX19yZXRfMjEzOyBcCn0pCiNlbHNlCiNkZWZpbmUgdmNtbGFfcm90MTgwX2xhbmVxX2YxNihfX3AwXzIxNCwgX19wMV8yMTQsIF9fcDJfMjE0LCBfX3AzXzIxNCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng0X3QgX19zMF8yMTQgPSBfX3AwXzIxNDsgXAogIGZsb2F0MTZ4NF90IF9fczFfMjE0ID0gX19wMV8yMTQ7IFwKICBmbG9hdDE2eDhfdCBfX3MyXzIxNCA9IF9fcDJfMjE0OyBcCiAgZmxvYXQxNng0X3QgX19yZXYwXzIxNDsgIF9fcmV2MF8yMTQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzIxNCwgX19zMF8yMTQsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng0X3QgX19yZXYxXzIxNDsgIF9fcmV2MV8yMTQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzIxNCwgX19zMV8yMTQsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng4X3QgX19yZXYyXzIxNDsgIF9fcmV2Ml8yMTQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzIxNCwgX19zMl8yMTQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng0X3QgX19yZXRfMjE0OyBcCmZsb2F0MTZ4OF90IF9fcmVpbnRfMjE0ID0gX19yZXYyXzIxNDsgXAp1aW50MzJ4Ml90IF9fcmVpbnQxXzIxNCA9ICh1aW50MzJ4Ml90KSB7X19ub3N3YXBfdmdldHFfbGFuZV91MzIoKih1aW50MzJ4NF90ICopICZfX3JlaW50XzIxNCwgX19wM18yMTQpLCBfX25vc3dhcF92Z2V0cV9sYW5lX3UzMigqKHVpbnQzMng0X3QgKikgJl9fcmVpbnRfMjE0LCBfX3AzXzIxNCl9OyBcCiAgX19yZXRfMjE0ID0gX19ub3N3YXBfdmNtbGFfcm90MTgwX2YxNihfX3JldjBfMjE0LCBfX3JldjFfMjE0LCAqKGZsb2F0MTZ4NF90ICopICZfX3JlaW50MV8yMTQpOyBcCiAgX19yZXRfMjE0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMjE0LCBfX3JldF8yMTQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfMjE0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmNtbGFxX3JvdDE4MF9sYW5lcV9mMTYoX19wMF8yMTUsIF9fcDFfMjE1LCBfX3AyXzIxNSwgX19wM18yMTUpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4OF90IF9fczBfMjE1ID0gX19wMF8yMTU7IFwKICBmbG9hdDE2eDhfdCBfX3MxXzIxNSA9IF9fcDFfMjE1OyBcCiAgZmxvYXQxNng4X3QgX19zMl8yMTUgPSBfX3AyXzIxNTsgXAogIGZsb2F0MTZ4OF90IF9fcmV0XzIxNTsgXApmbG9hdDE2eDhfdCBfX3JlaW50XzIxNSA9IF9fczJfMjE1OyBcCnVpbnQzMng0X3QgX19yZWludDFfMjE1ID0gKHVpbnQzMng0X3QpIHt2Z2V0cV9sYW5lX3UzMigqKHVpbnQzMng0X3QgKikgJl9fcmVpbnRfMjE1LCBfX3AzXzIxNSksIHZnZXRxX2xhbmVfdTMyKCoodWludDMyeDRfdCAqKSAmX19yZWludF8yMTUsIF9fcDNfMjE1KSwgdmdldHFfbGFuZV91MzIoKih1aW50MzJ4NF90ICopICZfX3JlaW50XzIxNSwgX19wM18yMTUpLCB2Z2V0cV9sYW5lX3UzMigqKHVpbnQzMng0X3QgKikgJl9fcmVpbnRfMjE1LCBfX3AzXzIxNSl9OyBcCiAgX19yZXRfMjE1ID0gdmNtbGFxX3JvdDE4MF9mMTYoX19zMF8yMTUsIF9fczFfMjE1LCAqKGZsb2F0MTZ4OF90ICopICZfX3JlaW50MV8yMTUpOyBcCiAgX19yZXRfMjE1OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmNtbGFxX3JvdDE4MF9sYW5lcV9mMTYoX19wMF8yMTYsIF9fcDFfMjE2LCBfX3AyXzIxNiwgX19wM18yMTYpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4OF90IF9fczBfMjE2ID0gX19wMF8yMTY7IFwKICBmbG9hdDE2eDhfdCBfX3MxXzIxNiA9IF9fcDFfMjE2OyBcCiAgZmxvYXQxNng4X3QgX19zMl8yMTYgPSBfX3AyXzIxNjsgXAogIGZsb2F0MTZ4OF90IF9fcmV2MF8yMTY7ICBfX3JldjBfMjE2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8yMTYsIF9fczBfMjE2LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4OF90IF9fcmV2MV8yMTY7ICBfX3JldjFfMjE2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV8yMTYsIF9fczFfMjE2LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4OF90IF9fcmV2Ml8yMTY7ICBfX3JldjJfMjE2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl8yMTYsIF9fczJfMjE2LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4OF90IF9fcmV0XzIxNjsgXApmbG9hdDE2eDhfdCBfX3JlaW50XzIxNiA9IF9fcmV2Ml8yMTY7IFwKdWludDMyeDRfdCBfX3JlaW50MV8yMTYgPSAodWludDMyeDRfdCkge19fbm9zd2FwX3ZnZXRxX2xhbmVfdTMyKCoodWludDMyeDRfdCAqKSAmX19yZWludF8yMTYsIF9fcDNfMjE2KSwgX19ub3N3YXBfdmdldHFfbGFuZV91MzIoKih1aW50MzJ4NF90ICopICZfX3JlaW50XzIxNiwgX19wM18yMTYpLCBfX25vc3dhcF92Z2V0cV9sYW5lX3UzMigqKHVpbnQzMng0X3QgKikgJl9fcmVpbnRfMjE2LCBfX3AzXzIxNiksIF9fbm9zd2FwX3ZnZXRxX2xhbmVfdTMyKCoodWludDMyeDRfdCAqKSAmX19yZWludF8yMTYsIF9fcDNfMjE2KX07IFwKICBfX3JldF8yMTYgPSBfX25vc3dhcF92Y21sYXFfcm90MTgwX2YxNihfX3JldjBfMjE2LCBfX3JldjFfMjE2LCAqKGZsb2F0MTZ4OF90ICopICZfX3JlaW50MV8yMTYpOyBcCiAgX19yZXRfMjE2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMjE2LCBfX3JldF8yMTYsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfMjE2OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQxNng4X3QgdmNtbGFxX3JvdDI3MF9mMTYoZmxvYXQxNng4X3QgX19wMCwgZmxvYXQxNng4X3QgX19wMSwgZmxvYXQxNng4X3QgX19wMikgewogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92Y21sYXFfcm90MjcwX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIChpbnQ4eDE2X3QpX19wMiwgNDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MTZ4OF90IHZjbWxhcV9yb3QyNzBfZjE2KGZsb2F0MTZ4OF90IF9fcDAsIGZsb2F0MTZ4OF90IF9fcDEsIGZsb2F0MTZ4OF90IF9fcDIpIHsKICBmbG9hdDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDhfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDhfdCkgX19idWlsdGluX25lb25fdmNtbGFxX3JvdDI3MF92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgKGludDh4MTZfdClfX3JldjIsIDQwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQxNng4X3QgX19ub3N3YXBfdmNtbGFxX3JvdDI3MF9mMTYoZmxvYXQxNng4X3QgX19wMCwgZmxvYXQxNng4X3QgX19wMSwgZmxvYXQxNng4X3QgX19wMikgewogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92Y21sYXFfcm90MjcwX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIChpbnQ4eDE2X3QpX19wMiwgNDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MTZ4NF90IHZjbWxhX3JvdDI3MF9mMTYoZmxvYXQxNng0X3QgX19wMCwgZmxvYXQxNng0X3QgX19wMSwgZmxvYXQxNng0X3QgX19wMikgewogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y21sYV9yb3QyNzBfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIChpbnQ4eDhfdClfX3AyLCA4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDE2eDRfdCB2Y21sYV9yb3QyNzBfZjE2KGZsb2F0MTZ4NF90IF9fcDAsIGZsb2F0MTZ4NF90IF9fcDEsIGZsb2F0MTZ4NF90IF9fcDIpIHsKICBmbG9hdDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDRfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDRfdCkgX19idWlsdGluX25lb25fdmNtbGFfcm90MjcwX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgKGludDh4OF90KV9fcmV2MiwgOCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MTZ4NF90IF9fbm9zd2FwX3ZjbWxhX3JvdDI3MF9mMTYoZmxvYXQxNng0X3QgX19wMCwgZmxvYXQxNng0X3QgX19wMSwgZmxvYXQxNng0X3QgX19wMikgewogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y21sYV9yb3QyNzBfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIChpbnQ4eDhfdClfX3AyLCA4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Y21sYV9yb3QyNzBfbGFuZV9mMTYoX19wMF8yMTcsIF9fcDFfMjE3LCBfX3AyXzIxNywgX19wM18yMTcpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4NF90IF9fczBfMjE3ID0gX19wMF8yMTc7IFwKICBmbG9hdDE2eDRfdCBfX3MxXzIxNyA9IF9fcDFfMjE3OyBcCiAgZmxvYXQxNng0X3QgX19zMl8yMTcgPSBfX3AyXzIxNzsgXAogIGZsb2F0MTZ4NF90IF9fcmV0XzIxNzsgXApmbG9hdDE2eDRfdCBfX3JlaW50XzIxNyA9IF9fczJfMjE3OyBcCnVpbnQzMngyX3QgX19yZWludDFfMjE3ID0gKHVpbnQzMngyX3QpIHt2Z2V0X2xhbmVfdTMyKCoodWludDMyeDJfdCAqKSAmX19yZWludF8yMTcsIF9fcDNfMjE3KSwgdmdldF9sYW5lX3UzMigqKHVpbnQzMngyX3QgKikgJl9fcmVpbnRfMjE3LCBfX3AzXzIxNyl9OyBcCiAgX19yZXRfMjE3ID0gdmNtbGFfcm90MjcwX2YxNihfX3MwXzIxNywgX19zMV8yMTcsICooZmxvYXQxNng0X3QgKikgJl9fcmVpbnQxXzIxNyk7IFwKICBfX3JldF8yMTc7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Y21sYV9yb3QyNzBfbGFuZV9mMTYoX19wMF8yMTgsIF9fcDFfMjE4LCBfX3AyXzIxOCwgX19wM18yMTgpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4NF90IF9fczBfMjE4ID0gX19wMF8yMTg7IFwKICBmbG9hdDE2eDRfdCBfX3MxXzIxOCA9IF9fcDFfMjE4OyBcCiAgZmxvYXQxNng0X3QgX19zMl8yMTggPSBfX3AyXzIxODsgXAogIGZsb2F0MTZ4NF90IF9fcmV2MF8yMTg7ICBfX3JldjBfMjE4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8yMTgsIF9fczBfMjE4LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4NF90IF9fcmV2MV8yMTg7ICBfX3JldjFfMjE4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV8yMTgsIF9fczFfMjE4LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4NF90IF9fcmV2Ml8yMTg7ICBfX3JldjJfMjE4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl8yMTgsIF9fczJfMjE4LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4NF90IF9fcmV0XzIxODsgXApmbG9hdDE2eDRfdCBfX3JlaW50XzIxOCA9IF9fcmV2Ml8yMTg7IFwKdWludDMyeDJfdCBfX3JlaW50MV8yMTggPSAodWludDMyeDJfdCkge19fbm9zd2FwX3ZnZXRfbGFuZV91MzIoKih1aW50MzJ4Ml90ICopICZfX3JlaW50XzIxOCwgX19wM18yMTgpLCBfX25vc3dhcF92Z2V0X2xhbmVfdTMyKCoodWludDMyeDJfdCAqKSAmX19yZWludF8yMTgsIF9fcDNfMjE4KX07IFwKICBfX3JldF8yMTggPSBfX25vc3dhcF92Y21sYV9yb3QyNzBfZjE2KF9fcmV2MF8yMTgsIF9fcmV2MV8yMTgsICooZmxvYXQxNng0X3QgKikgJl9fcmVpbnQxXzIxOCk7IFwKICBfX3JldF8yMTggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8yMTgsIF9fcmV0XzIxOCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF8yMTg7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Y21sYXFfcm90MjcwX2xhbmVfZjE2KF9fcDBfMjE5LCBfX3AxXzIxOSwgX19wMl8yMTksIF9fcDNfMjE5KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDhfdCBfX3MwXzIxOSA9IF9fcDBfMjE5OyBcCiAgZmxvYXQxNng4X3QgX19zMV8yMTkgPSBfX3AxXzIxOTsgXAogIGZsb2F0MTZ4NF90IF9fczJfMjE5ID0gX19wMl8yMTk7IFwKICBmbG9hdDE2eDhfdCBfX3JldF8yMTk7IFwKZmxvYXQxNng0X3QgX19yZWludF8yMTkgPSBfX3MyXzIxOTsgXAp1aW50MzJ4NF90IF9fcmVpbnQxXzIxOSA9ICh1aW50MzJ4NF90KSB7dmdldF9sYW5lX3UzMigqKHVpbnQzMngyX3QgKikgJl9fcmVpbnRfMjE5LCBfX3AzXzIxOSksIHZnZXRfbGFuZV91MzIoKih1aW50MzJ4Ml90ICopICZfX3JlaW50XzIxOSwgX19wM18yMTkpLCB2Z2V0X2xhbmVfdTMyKCoodWludDMyeDJfdCAqKSAmX19yZWludF8yMTksIF9fcDNfMjE5KSwgdmdldF9sYW5lX3UzMigqKHVpbnQzMngyX3QgKikgJl9fcmVpbnRfMjE5LCBfX3AzXzIxOSl9OyBcCiAgX19yZXRfMjE5ID0gdmNtbGFxX3JvdDI3MF9mMTYoX19zMF8yMTksIF9fczFfMjE5LCAqKGZsb2F0MTZ4OF90ICopICZfX3JlaW50MV8yMTkpOyBcCiAgX19yZXRfMjE5OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmNtbGFxX3JvdDI3MF9sYW5lX2YxNihfX3AwXzIyMCwgX19wMV8yMjAsIF9fcDJfMjIwLCBfX3AzXzIyMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4X3QgX19zMF8yMjAgPSBfX3AwXzIyMDsgXAogIGZsb2F0MTZ4OF90IF9fczFfMjIwID0gX19wMV8yMjA7IFwKICBmbG9hdDE2eDRfdCBfX3MyXzIyMCA9IF9fcDJfMjIwOyBcCiAgZmxvYXQxNng4X3QgX19yZXYwXzIyMDsgIF9fcmV2MF8yMjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzIyMCwgX19zMF8yMjAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng4X3QgX19yZXYxXzIyMDsgIF9fcmV2MV8yMjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzIyMCwgX19zMV8yMjAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng0X3QgX19yZXYyXzIyMDsgIF9fcmV2Ml8yMjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzIyMCwgX19zMl8yMjAsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng4X3QgX19yZXRfMjIwOyBcCmZsb2F0MTZ4NF90IF9fcmVpbnRfMjIwID0gX19yZXYyXzIyMDsgXAp1aW50MzJ4NF90IF9fcmVpbnQxXzIyMCA9ICh1aW50MzJ4NF90KSB7X19ub3N3YXBfdmdldF9sYW5lX3UzMigqKHVpbnQzMngyX3QgKikgJl9fcmVpbnRfMjIwLCBfX3AzXzIyMCksIF9fbm9zd2FwX3ZnZXRfbGFuZV91MzIoKih1aW50MzJ4Ml90ICopICZfX3JlaW50XzIyMCwgX19wM18yMjApLCBfX25vc3dhcF92Z2V0X2xhbmVfdTMyKCoodWludDMyeDJfdCAqKSAmX19yZWludF8yMjAsIF9fcDNfMjIwKSwgX19ub3N3YXBfdmdldF9sYW5lX3UzMigqKHVpbnQzMngyX3QgKikgJl9fcmVpbnRfMjIwLCBfX3AzXzIyMCl9OyBcCiAgX19yZXRfMjIwID0gX19ub3N3YXBfdmNtbGFxX3JvdDI3MF9mMTYoX19yZXYwXzIyMCwgX19yZXYxXzIyMCwgKihmbG9hdDE2eDhfdCAqKSAmX19yZWludDFfMjIwKTsgXAogIF9fcmV0XzIyMCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzIyMCwgX19yZXRfMjIwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzIyMDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZjbWxhX3JvdDI3MF9sYW5lcV9mMTYoX19wMF8yMjEsIF9fcDFfMjIxLCBfX3AyXzIyMSwgX19wM18yMjEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4NF90IF9fczBfMjIxID0gX19wMF8yMjE7IFwKICBmbG9hdDE2eDRfdCBfX3MxXzIyMSA9IF9fcDFfMjIxOyBcCiAgZmxvYXQxNng4X3QgX19zMl8yMjEgPSBfX3AyXzIyMTsgXAogIGZsb2F0MTZ4NF90IF9fcmV0XzIyMTsgXApmbG9hdDE2eDhfdCBfX3JlaW50XzIyMSA9IF9fczJfMjIxOyBcCnVpbnQzMngyX3QgX19yZWludDFfMjIxID0gKHVpbnQzMngyX3QpIHt2Z2V0cV9sYW5lX3UzMigqKHVpbnQzMng0X3QgKikgJl9fcmVpbnRfMjIxLCBfX3AzXzIyMSksIHZnZXRxX2xhbmVfdTMyKCoodWludDMyeDRfdCAqKSAmX19yZWludF8yMjEsIF9fcDNfMjIxKX07IFwKICBfX3JldF8yMjEgPSB2Y21sYV9yb3QyNzBfZjE2KF9fczBfMjIxLCBfX3MxXzIyMSwgKihmbG9hdDE2eDRfdCAqKSAmX19yZWludDFfMjIxKTsgXAogIF9fcmV0XzIyMTsgXAp9KQojZWxzZQojZGVmaW5lIHZjbWxhX3JvdDI3MF9sYW5lcV9mMTYoX19wMF8yMjIsIF9fcDFfMjIyLCBfX3AyXzIyMiwgX19wM18yMjIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4NF90IF9fczBfMjIyID0gX19wMF8yMjI7IFwKICBmbG9hdDE2eDRfdCBfX3MxXzIyMiA9IF9fcDFfMjIyOyBcCiAgZmxvYXQxNng4X3QgX19zMl8yMjIgPSBfX3AyXzIyMjsgXAogIGZsb2F0MTZ4NF90IF9fcmV2MF8yMjI7ICBfX3JldjBfMjIyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8yMjIsIF9fczBfMjIyLCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4NF90IF9fcmV2MV8yMjI7ICBfX3JldjFfMjIyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV8yMjIsIF9fczFfMjIyLCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4OF90IF9fcmV2Ml8yMjI7ICBfX3JldjJfMjIyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl8yMjIsIF9fczJfMjIyLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4NF90IF9fcmV0XzIyMjsgXApmbG9hdDE2eDhfdCBfX3JlaW50XzIyMiA9IF9fcmV2Ml8yMjI7IFwKdWludDMyeDJfdCBfX3JlaW50MV8yMjIgPSAodWludDMyeDJfdCkge19fbm9zd2FwX3ZnZXRxX2xhbmVfdTMyKCoodWludDMyeDRfdCAqKSAmX19yZWludF8yMjIsIF9fcDNfMjIyKSwgX19ub3N3YXBfdmdldHFfbGFuZV91MzIoKih1aW50MzJ4NF90ICopICZfX3JlaW50XzIyMiwgX19wM18yMjIpfTsgXAogIF9fcmV0XzIyMiA9IF9fbm9zd2FwX3ZjbWxhX3JvdDI3MF9mMTYoX19yZXYwXzIyMiwgX19yZXYxXzIyMiwgKihmbG9hdDE2eDRfdCAqKSAmX19yZWludDFfMjIyKTsgXAogIF9fcmV0XzIyMiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzIyMiwgX19yZXRfMjIyLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzIyMjsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZjbWxhcV9yb3QyNzBfbGFuZXFfZjE2KF9fcDBfMjIzLCBfX3AxXzIyMywgX19wMl8yMjMsIF9fcDNfMjIzKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDhfdCBfX3MwXzIyMyA9IF9fcDBfMjIzOyBcCiAgZmxvYXQxNng4X3QgX19zMV8yMjMgPSBfX3AxXzIyMzsgXAogIGZsb2F0MTZ4OF90IF9fczJfMjIzID0gX19wMl8yMjM7IFwKICBmbG9hdDE2eDhfdCBfX3JldF8yMjM7IFwKZmxvYXQxNng4X3QgX19yZWludF8yMjMgPSBfX3MyXzIyMzsgXAp1aW50MzJ4NF90IF9fcmVpbnQxXzIyMyA9ICh1aW50MzJ4NF90KSB7dmdldHFfbGFuZV91MzIoKih1aW50MzJ4NF90ICopICZfX3JlaW50XzIyMywgX19wM18yMjMpLCB2Z2V0cV9sYW5lX3UzMigqKHVpbnQzMng0X3QgKikgJl9fcmVpbnRfMjIzLCBfX3AzXzIyMyksIHZnZXRxX2xhbmVfdTMyKCoodWludDMyeDRfdCAqKSAmX19yZWludF8yMjMsIF9fcDNfMjIzKSwgdmdldHFfbGFuZV91MzIoKih1aW50MzJ4NF90ICopICZfX3JlaW50XzIyMywgX19wM18yMjMpfTsgXAogIF9fcmV0XzIyMyA9IHZjbWxhcV9yb3QyNzBfZjE2KF9fczBfMjIzLCBfX3MxXzIyMywgKihmbG9hdDE2eDhfdCAqKSAmX19yZWludDFfMjIzKTsgXAogIF9fcmV0XzIyMzsgXAp9KQojZWxzZQojZGVmaW5lIHZjbWxhcV9yb3QyNzBfbGFuZXFfZjE2KF9fcDBfMjI0LCBfX3AxXzIyNCwgX19wMl8yMjQsIF9fcDNfMjI0KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDhfdCBfX3MwXzIyNCA9IF9fcDBfMjI0OyBcCiAgZmxvYXQxNng4X3QgX19zMV8yMjQgPSBfX3AxXzIyNDsgXAogIGZsb2F0MTZ4OF90IF9fczJfMjI0ID0gX19wMl8yMjQ7IFwKICBmbG9hdDE2eDhfdCBfX3JldjBfMjI0OyAgX19yZXYwXzIyNCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfMjI0LCBfX3MwXzIyNCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2eDhfdCBfX3JldjFfMjI0OyAgX19yZXYxXzIyNCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfMjI0LCBfX3MxXzIyNCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2eDhfdCBfX3JldjJfMjI0OyAgX19yZXYyXzIyNCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfMjI0LCBfX3MyXzIyNCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2eDhfdCBfX3JldF8yMjQ7IFwKZmxvYXQxNng4X3QgX19yZWludF8yMjQgPSBfX3JldjJfMjI0OyBcCnVpbnQzMng0X3QgX19yZWludDFfMjI0ID0gKHVpbnQzMng0X3QpIHtfX25vc3dhcF92Z2V0cV9sYW5lX3UzMigqKHVpbnQzMng0X3QgKikgJl9fcmVpbnRfMjI0LCBfX3AzXzIyNCksIF9fbm9zd2FwX3ZnZXRxX2xhbmVfdTMyKCoodWludDMyeDRfdCAqKSAmX19yZWludF8yMjQsIF9fcDNfMjI0KSwgX19ub3N3YXBfdmdldHFfbGFuZV91MzIoKih1aW50MzJ4NF90ICopICZfX3JlaW50XzIyNCwgX19wM18yMjQpLCBfX25vc3dhcF92Z2V0cV9sYW5lX3UzMigqKHVpbnQzMng0X3QgKikgJl9fcmVpbnRfMjI0LCBfX3AzXzIyNCl9OyBcCiAgX19yZXRfMjI0ID0gX19ub3N3YXBfdmNtbGFxX3JvdDI3MF9mMTYoX19yZXYwXzIyNCwgX19yZXYxXzIyNCwgKihmbG9hdDE2eDhfdCAqKSAmX19yZWludDFfMjI0KTsgXAogIF9fcmV0XzIyNCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzIyNCwgX19yZXRfMjI0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzIyNDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MTZ4OF90IHZjbWxhcV9yb3Q5MF9mMTYoZmxvYXQxNng4X3QgX19wMCwgZmxvYXQxNng4X3QgX19wMSwgZmxvYXQxNng4X3QgX19wMikgewogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92Y21sYXFfcm90OTBfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgKGludDh4MTZfdClfX3AyLCA0MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQxNng4X3QgdmNtbGFxX3JvdDkwX2YxNihmbG9hdDE2eDhfdCBfX3AwLCBmbG9hdDE2eDhfdCBfX3AxLCBmbG9hdDE2eDhfdCBfX3AyKSB7CiAgZmxvYXQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng4X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbWxhcV9yb3Q5MF92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgKGludDh4MTZfdClfX3JldjIsIDQwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQxNng4X3QgX19ub3N3YXBfdmNtbGFxX3JvdDkwX2YxNihmbG9hdDE2eDhfdCBfX3AwLCBmbG9hdDE2eDhfdCBfX3AxLCBmbG9hdDE2eDhfdCBfX3AyKSB7CiAgZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbWxhcV9yb3Q5MF92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAoaW50OHgxNl90KV9fcDIsIDQwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDE2eDRfdCB2Y21sYV9yb3Q5MF9mMTYoZmxvYXQxNng0X3QgX19wMCwgZmxvYXQxNng0X3QgX19wMSwgZmxvYXQxNng0X3QgX19wMikgewogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y21sYV9yb3Q5MF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgKGludDh4OF90KV9fcDIsIDgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MTZ4NF90IHZjbWxhX3JvdDkwX2YxNihmbG9hdDE2eDRfdCBfX3AwLCBmbG9hdDE2eDRfdCBfX3AxLCBmbG9hdDE2eDRfdCBfX3AyKSB7CiAgZmxvYXQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng0X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbWxhX3JvdDkwX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgKGludDh4OF90KV9fcmV2MiwgOCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MTZ4NF90IF9fbm9zd2FwX3ZjbWxhX3JvdDkwX2YxNihmbG9hdDE2eDRfdCBfX3AwLCBmbG9hdDE2eDRfdCBfX3AxLCBmbG9hdDE2eDRfdCBfX3AyKSB7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbWxhX3JvdDkwX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAoaW50OHg4X3QpX19wMiwgOCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmNtbGFfcm90OTBfbGFuZV9mMTYoX19wMF8yMjUsIF9fcDFfMjI1LCBfX3AyXzIyNSwgX19wM18yMjUpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4NF90IF9fczBfMjI1ID0gX19wMF8yMjU7IFwKICBmbG9hdDE2eDRfdCBfX3MxXzIyNSA9IF9fcDFfMjI1OyBcCiAgZmxvYXQxNng0X3QgX19zMl8yMjUgPSBfX3AyXzIyNTsgXAogIGZsb2F0MTZ4NF90IF9fcmV0XzIyNTsgXApmbG9hdDE2eDRfdCBfX3JlaW50XzIyNSA9IF9fczJfMjI1OyBcCnVpbnQzMngyX3QgX19yZWludDFfMjI1ID0gKHVpbnQzMngyX3QpIHt2Z2V0X2xhbmVfdTMyKCoodWludDMyeDJfdCAqKSAmX19yZWludF8yMjUsIF9fcDNfMjI1KSwgdmdldF9sYW5lX3UzMigqKHVpbnQzMngyX3QgKikgJl9fcmVpbnRfMjI1LCBfX3AzXzIyNSl9OyBcCiAgX19yZXRfMjI1ID0gdmNtbGFfcm90OTBfZjE2KF9fczBfMjI1LCBfX3MxXzIyNSwgKihmbG9hdDE2eDRfdCAqKSAmX19yZWludDFfMjI1KTsgXAogIF9fcmV0XzIyNTsgXAp9KQojZWxzZQojZGVmaW5lIHZjbWxhX3JvdDkwX2xhbmVfZjE2KF9fcDBfMjI2LCBfX3AxXzIyNiwgX19wMl8yMjYsIF9fcDNfMjI2KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDRfdCBfX3MwXzIyNiA9IF9fcDBfMjI2OyBcCiAgZmxvYXQxNng0X3QgX19zMV8yMjYgPSBfX3AxXzIyNjsgXAogIGZsb2F0MTZ4NF90IF9fczJfMjI2ID0gX19wMl8yMjY7IFwKICBmbG9hdDE2eDRfdCBfX3JldjBfMjI2OyAgX19yZXYwXzIyNiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfMjI2LCBfX3MwXzIyNiwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2eDRfdCBfX3JldjFfMjI2OyAgX19yZXYxXzIyNiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfMjI2LCBfX3MxXzIyNiwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2eDRfdCBfX3JldjJfMjI2OyAgX19yZXYyXzIyNiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfMjI2LCBfX3MyXzIyNiwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2eDRfdCBfX3JldF8yMjY7IFwKZmxvYXQxNng0X3QgX19yZWludF8yMjYgPSBfX3JldjJfMjI2OyBcCnVpbnQzMngyX3QgX19yZWludDFfMjI2ID0gKHVpbnQzMngyX3QpIHtfX25vc3dhcF92Z2V0X2xhbmVfdTMyKCoodWludDMyeDJfdCAqKSAmX19yZWludF8yMjYsIF9fcDNfMjI2KSwgX19ub3N3YXBfdmdldF9sYW5lX3UzMigqKHVpbnQzMngyX3QgKikgJl9fcmVpbnRfMjI2LCBfX3AzXzIyNil9OyBcCiAgX19yZXRfMjI2ID0gX19ub3N3YXBfdmNtbGFfcm90OTBfZjE2KF9fcmV2MF8yMjYsIF9fcmV2MV8yMjYsICooZmxvYXQxNng0X3QgKikgJl9fcmVpbnQxXzIyNik7IFwKICBfX3JldF8yMjYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8yMjYsIF9fcmV0XzIyNiwgMywgMiwgMSwgMCk7IFwKICBfX3JldF8yMjY7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Y21sYXFfcm90OTBfbGFuZV9mMTYoX19wMF8yMjcsIF9fcDFfMjI3LCBfX3AyXzIyNywgX19wM18yMjcpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4OF90IF9fczBfMjI3ID0gX19wMF8yMjc7IFwKICBmbG9hdDE2eDhfdCBfX3MxXzIyNyA9IF9fcDFfMjI3OyBcCiAgZmxvYXQxNng0X3QgX19zMl8yMjcgPSBfX3AyXzIyNzsgXAogIGZsb2F0MTZ4OF90IF9fcmV0XzIyNzsgXApmbG9hdDE2eDRfdCBfX3JlaW50XzIyNyA9IF9fczJfMjI3OyBcCnVpbnQzMng0X3QgX19yZWludDFfMjI3ID0gKHVpbnQzMng0X3QpIHt2Z2V0X2xhbmVfdTMyKCoodWludDMyeDJfdCAqKSAmX19yZWludF8yMjcsIF9fcDNfMjI3KSwgdmdldF9sYW5lX3UzMigqKHVpbnQzMngyX3QgKikgJl9fcmVpbnRfMjI3LCBfX3AzXzIyNyksIHZnZXRfbGFuZV91MzIoKih1aW50MzJ4Ml90ICopICZfX3JlaW50XzIyNywgX19wM18yMjcpLCB2Z2V0X2xhbmVfdTMyKCoodWludDMyeDJfdCAqKSAmX19yZWludF8yMjcsIF9fcDNfMjI3KX07IFwKICBfX3JldF8yMjcgPSB2Y21sYXFfcm90OTBfZjE2KF9fczBfMjI3LCBfX3MxXzIyNywgKihmbG9hdDE2eDhfdCAqKSAmX19yZWludDFfMjI3KTsgXAogIF9fcmV0XzIyNzsgXAp9KQojZWxzZQojZGVmaW5lIHZjbWxhcV9yb3Q5MF9sYW5lX2YxNihfX3AwXzIyOCwgX19wMV8yMjgsIF9fcDJfMjI4LCBfX3AzXzIyOCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4X3QgX19zMF8yMjggPSBfX3AwXzIyODsgXAogIGZsb2F0MTZ4OF90IF9fczFfMjI4ID0gX19wMV8yMjg7IFwKICBmbG9hdDE2eDRfdCBfX3MyXzIyOCA9IF9fcDJfMjI4OyBcCiAgZmxvYXQxNng4X3QgX19yZXYwXzIyODsgIF9fcmV2MF8yMjggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzIyOCwgX19zMF8yMjgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng4X3QgX19yZXYxXzIyODsgIF9fcmV2MV8yMjggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzIyOCwgX19zMV8yMjgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng0X3QgX19yZXYyXzIyODsgIF9fcmV2Ml8yMjggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzIyOCwgX19zMl8yMjgsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng4X3QgX19yZXRfMjI4OyBcCmZsb2F0MTZ4NF90IF9fcmVpbnRfMjI4ID0gX19yZXYyXzIyODsgXAp1aW50MzJ4NF90IF9fcmVpbnQxXzIyOCA9ICh1aW50MzJ4NF90KSB7X19ub3N3YXBfdmdldF9sYW5lX3UzMigqKHVpbnQzMngyX3QgKikgJl9fcmVpbnRfMjI4LCBfX3AzXzIyOCksIF9fbm9zd2FwX3ZnZXRfbGFuZV91MzIoKih1aW50MzJ4Ml90ICopICZfX3JlaW50XzIyOCwgX19wM18yMjgpLCBfX25vc3dhcF92Z2V0X2xhbmVfdTMyKCoodWludDMyeDJfdCAqKSAmX19yZWludF8yMjgsIF9fcDNfMjI4KSwgX19ub3N3YXBfdmdldF9sYW5lX3UzMigqKHVpbnQzMngyX3QgKikgJl9fcmVpbnRfMjI4LCBfX3AzXzIyOCl9OyBcCiAgX19yZXRfMjI4ID0gX19ub3N3YXBfdmNtbGFxX3JvdDkwX2YxNihfX3JldjBfMjI4LCBfX3JldjFfMjI4LCAqKGZsb2F0MTZ4OF90ICopICZfX3JlaW50MV8yMjgpOyBcCiAgX19yZXRfMjI4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMjI4LCBfX3JldF8yMjgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfMjI4OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmNtbGFfcm90OTBfbGFuZXFfZjE2KF9fcDBfMjI5LCBfX3AxXzIyOSwgX19wMl8yMjksIF9fcDNfMjI5KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDRfdCBfX3MwXzIyOSA9IF9fcDBfMjI5OyBcCiAgZmxvYXQxNng0X3QgX19zMV8yMjkgPSBfX3AxXzIyOTsgXAogIGZsb2F0MTZ4OF90IF9fczJfMjI5ID0gX19wMl8yMjk7IFwKICBmbG9hdDE2eDRfdCBfX3JldF8yMjk7IFwKZmxvYXQxNng4X3QgX19yZWludF8yMjkgPSBfX3MyXzIyOTsgXAp1aW50MzJ4Ml90IF9fcmVpbnQxXzIyOSA9ICh1aW50MzJ4Ml90KSB7dmdldHFfbGFuZV91MzIoKih1aW50MzJ4NF90ICopICZfX3JlaW50XzIyOSwgX19wM18yMjkpLCB2Z2V0cV9sYW5lX3UzMigqKHVpbnQzMng0X3QgKikgJl9fcmVpbnRfMjI5LCBfX3AzXzIyOSl9OyBcCiAgX19yZXRfMjI5ID0gdmNtbGFfcm90OTBfZjE2KF9fczBfMjI5LCBfX3MxXzIyOSwgKihmbG9hdDE2eDRfdCAqKSAmX19yZWludDFfMjI5KTsgXAogIF9fcmV0XzIyOTsgXAp9KQojZWxzZQojZGVmaW5lIHZjbWxhX3JvdDkwX2xhbmVxX2YxNihfX3AwXzIzMCwgX19wMV8yMzAsIF9fcDJfMjMwLCBfX3AzXzIzMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng0X3QgX19zMF8yMzAgPSBfX3AwXzIzMDsgXAogIGZsb2F0MTZ4NF90IF9fczFfMjMwID0gX19wMV8yMzA7IFwKICBmbG9hdDE2eDhfdCBfX3MyXzIzMCA9IF9fcDJfMjMwOyBcCiAgZmxvYXQxNng0X3QgX19yZXYwXzIzMDsgIF9fcmV2MF8yMzAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzIzMCwgX19zMF8yMzAsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng0X3QgX19yZXYxXzIzMDsgIF9fcmV2MV8yMzAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzIzMCwgX19zMV8yMzAsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng4X3QgX19yZXYyXzIzMDsgIF9fcmV2Ml8yMzAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzIzMCwgX19zMl8yMzAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng0X3QgX19yZXRfMjMwOyBcCmZsb2F0MTZ4OF90IF9fcmVpbnRfMjMwID0gX19yZXYyXzIzMDsgXAp1aW50MzJ4Ml90IF9fcmVpbnQxXzIzMCA9ICh1aW50MzJ4Ml90KSB7X19ub3N3YXBfdmdldHFfbGFuZV91MzIoKih1aW50MzJ4NF90ICopICZfX3JlaW50XzIzMCwgX19wM18yMzApLCBfX25vc3dhcF92Z2V0cV9sYW5lX3UzMigqKHVpbnQzMng0X3QgKikgJl9fcmVpbnRfMjMwLCBfX3AzXzIzMCl9OyBcCiAgX19yZXRfMjMwID0gX19ub3N3YXBfdmNtbGFfcm90OTBfZjE2KF9fcmV2MF8yMzAsIF9fcmV2MV8yMzAsICooZmxvYXQxNng0X3QgKikgJl9fcmVpbnQxXzIzMCk7IFwKICBfX3JldF8yMzAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8yMzAsIF9fcmV0XzIzMCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF8yMzA7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Y21sYXFfcm90OTBfbGFuZXFfZjE2KF9fcDBfMjMxLCBfX3AxXzIzMSwgX19wMl8yMzEsIF9fcDNfMjMxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDhfdCBfX3MwXzIzMSA9IF9fcDBfMjMxOyBcCiAgZmxvYXQxNng4X3QgX19zMV8yMzEgPSBfX3AxXzIzMTsgXAogIGZsb2F0MTZ4OF90IF9fczJfMjMxID0gX19wMl8yMzE7IFwKICBmbG9hdDE2eDhfdCBfX3JldF8yMzE7IFwKZmxvYXQxNng4X3QgX19yZWludF8yMzEgPSBfX3MyXzIzMTsgXAp1aW50MzJ4NF90IF9fcmVpbnQxXzIzMSA9ICh1aW50MzJ4NF90KSB7dmdldHFfbGFuZV91MzIoKih1aW50MzJ4NF90ICopICZfX3JlaW50XzIzMSwgX19wM18yMzEpLCB2Z2V0cV9sYW5lX3UzMigqKHVpbnQzMng0X3QgKikgJl9fcmVpbnRfMjMxLCBfX3AzXzIzMSksIHZnZXRxX2xhbmVfdTMyKCoodWludDMyeDRfdCAqKSAmX19yZWludF8yMzEsIF9fcDNfMjMxKSwgdmdldHFfbGFuZV91MzIoKih1aW50MzJ4NF90ICopICZfX3JlaW50XzIzMSwgX19wM18yMzEpfTsgXAogIF9fcmV0XzIzMSA9IHZjbWxhcV9yb3Q5MF9mMTYoX19zMF8yMzEsIF9fczFfMjMxLCAqKGZsb2F0MTZ4OF90ICopICZfX3JlaW50MV8yMzEpOyBcCiAgX19yZXRfMjMxOyBcCn0pCiNlbHNlCiNkZWZpbmUgdmNtbGFxX3JvdDkwX2xhbmVxX2YxNihfX3AwXzIzMiwgX19wMV8yMzIsIF9fcDJfMjMyLCBfX3AzXzIzMikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4X3QgX19zMF8yMzIgPSBfX3AwXzIzMjsgXAogIGZsb2F0MTZ4OF90IF9fczFfMjMyID0gX19wMV8yMzI7IFwKICBmbG9hdDE2eDhfdCBfX3MyXzIzMiA9IF9fcDJfMjMyOyBcCiAgZmxvYXQxNng4X3QgX19yZXYwXzIzMjsgIF9fcmV2MF8yMzIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzIzMiwgX19zMF8yMzIsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng4X3QgX19yZXYxXzIzMjsgIF9fcmV2MV8yMzIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzIzMiwgX19zMV8yMzIsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng4X3QgX19yZXYyXzIzMjsgIF9fcmV2Ml8yMzIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzIzMiwgX19zMl8yMzIsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng4X3QgX19yZXRfMjMyOyBcCmZsb2F0MTZ4OF90IF9fcmVpbnRfMjMyID0gX19yZXYyXzIzMjsgXAp1aW50MzJ4NF90IF9fcmVpbnQxXzIzMiA9ICh1aW50MzJ4NF90KSB7X19ub3N3YXBfdmdldHFfbGFuZV91MzIoKih1aW50MzJ4NF90ICopICZfX3JlaW50XzIzMiwgX19wM18yMzIpLCBfX25vc3dhcF92Z2V0cV9sYW5lX3UzMigqKHVpbnQzMng0X3QgKikgJl9fcmVpbnRfMjMyLCBfX3AzXzIzMiksIF9fbm9zd2FwX3ZnZXRxX2xhbmVfdTMyKCoodWludDMyeDRfdCAqKSAmX19yZWludF8yMzIsIF9fcDNfMjMyKSwgX19ub3N3YXBfdmdldHFfbGFuZV91MzIoKih1aW50MzJ4NF90ICopICZfX3JlaW50XzIzMiwgX19wM18yMzIpfTsgXAogIF9fcmV0XzIzMiA9IF9fbm9zd2FwX3ZjbWxhcV9yb3Q5MF9mMTYoX19yZXYwXzIzMiwgX19yZXYxXzIzMiwgKihmbG9hdDE2eDhfdCAqKSAmX19yZWludDFfMjMyKTsgXAogIF9fcmV0XzIzMiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzIzMiwgX19yZXRfMjMyLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzIzMjsgXAp9KQojZW5kaWYKCiNlbmRpZgojaWYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX0NPTVBMRVgpICYmIGRlZmluZWQoX19hYXJjaDY0X18pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0NjR4Ml90IHZjYWRkcV9yb3QyNzBfZjY0KGZsb2F0NjR4Ml90IF9fcDAsIGZsb2F0NjR4Ml90IF9fcDEpIHsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDJfdCkgX19idWlsdGluX25lb25fdmNhZGRxX3JvdDI3MF92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA0Mik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQ2NHgyX3QgdmNhZGRxX3JvdDI3MF9mNjQoZmxvYXQ2NHgyX3QgX19wMCwgZmxvYXQ2NHgyX3QgX19wMSkgewogIGZsb2F0NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y2FkZHFfcm90MjcwX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA0Mik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0NjR4Ml90IHZjYWRkcV9yb3Q5MF9mNjQoZmxvYXQ2NHgyX3QgX19wMCwgZmxvYXQ2NHgyX3QgX19wMSkgewogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y2FkZHFfcm90OTBfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0NjR4Ml90IHZjYWRkcV9yb3Q5MF9mNjQoZmxvYXQ2NHgyX3QgX19wMCwgZmxvYXQ2NHgyX3QgX19wMSkgewogIGZsb2F0NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y2FkZHFfcm90OTBfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDQyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQ2NHgyX3QgdmNtbGFxX2Y2NChmbG9hdDY0eDJfdCBfX3AwLCBmbG9hdDY0eDJfdCBfX3AxLCBmbG9hdDY0eDJfdCBfX3AyKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjbWxhcV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAoaW50OHgxNl90KV9fcDIsIDQyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDY0eDJfdCB2Y21sYXFfZjY0KGZsb2F0NjR4Ml90IF9fcDAsIGZsb2F0NjR4Ml90IF9fcDEsIGZsb2F0NjR4Ml90IF9fcDIpIHsKICBmbG9hdDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBmbG9hdDY0eDJfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAxLCAwKTsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDJfdCkgX19idWlsdGluX25lb25fdmNtbGFxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAoaW50OHgxNl90KV9fcmV2MiwgNDIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDY0eDJfdCBfX25vc3dhcF92Y21sYXFfZjY0KGZsb2F0NjR4Ml90IF9fcDAsIGZsb2F0NjR4Ml90IF9fcDEsIGZsb2F0NjR4Ml90IF9fcDIpIHsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDJfdCkgX19idWlsdGluX25lb25fdmNtbGFxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIChpbnQ4eDE2X3QpX19wMiwgNDIpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCl9fYWkgZmxvYXQ2NHgxX3QgdmNtbGFfZjY0KGZsb2F0NjR4MV90IF9fcDAsIGZsb2F0NjR4MV90IF9fcDEsIGZsb2F0NjR4MV90IF9fcDIpIHsKICBmbG9hdDY0eDFfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDFfdCkgX19idWlsdGluX25lb25fdmNtbGFfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIChpbnQ4eDhfdClfX3AyLCAxMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNkZWZpbmUgdmNtbGFfbGFuZV9mNjQoX19wMF8yMzMsIF9fcDFfMjMzLCBfX3AyXzIzMywgX19wM18yMzMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4MV90IF9fczBfMjMzID0gX19wMF8yMzM7IFwKICBmbG9hdDY0eDFfdCBfX3MxXzIzMyA9IF9fcDFfMjMzOyBcCiAgZmxvYXQ2NHgxX3QgX19zMl8yMzMgPSBfX3AyXzIzMzsgXAogIGZsb2F0NjR4MV90IF9fcmV0XzIzMzsgXApmbG9hdDY0eDFfdCBfX3JlaW50XzIzMyA9IF9fczJfMjMzOyBcCnVpbnQ2NHgyX3QgX19yZWludDFfMjMzID0gKHVpbnQ2NHgyX3QpIHt2Z2V0cV9sYW5lX3U2NCgqKHVpbnQ2NHgyX3QgKikgJl9fcmVpbnRfMjMzLCBfX3AzXzIzMyksIHZnZXRxX2xhbmVfdTY0KCoodWludDY0eDJfdCAqKSAmX19yZWludF8yMzMsIF9fcDNfMjMzKX07IFwKICBfX3JldF8yMzMgPSB2Y21sYV9mNjQoX19zMF8yMzMsIF9fczFfMjMzLCAqKGZsb2F0NjR4MV90ICopICZfX3JlaW50MV8yMzMpOyBcCiAgX19yZXRfMjMzOyBcCn0pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZjbWxhcV9sYW5lX2Y2NChfX3AwXzIzNCwgX19wMV8yMzQsIF9fcDJfMjM0LCBfX3AzXzIzNCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgyX3QgX19zMF8yMzQgPSBfX3AwXzIzNDsgXAogIGZsb2F0NjR4Ml90IF9fczFfMjM0ID0gX19wMV8yMzQ7IFwKICBmbG9hdDY0eDFfdCBfX3MyXzIzNCA9IF9fcDJfMjM0OyBcCiAgZmxvYXQ2NHgyX3QgX19yZXRfMjM0OyBcCmZsb2F0NjR4MV90IF9fcmVpbnRfMjM0ID0gX19zMl8yMzQ7IFwKdWludDY0eDJfdCBfX3JlaW50MV8yMzQgPSAodWludDY0eDJfdCkge3ZnZXRxX2xhbmVfdTY0KCoodWludDY0eDJfdCAqKSAmX19yZWludF8yMzQsIF9fcDNfMjM0KSwgdmdldHFfbGFuZV91NjQoKih1aW50NjR4Ml90ICopICZfX3JlaW50XzIzNCwgX19wM18yMzQpfTsgXAogIF9fcmV0XzIzNCA9IHZjbWxhcV9mNjQoX19zMF8yMzQsIF9fczFfMjM0LCAqKGZsb2F0NjR4Ml90ICopICZfX3JlaW50MV8yMzQpOyBcCiAgX19yZXRfMjM0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmNtbGFxX2xhbmVfZjY0KF9fcDBfMjM1LCBfX3AxXzIzNSwgX19wMl8yMzUsIF9fcDNfMjM1KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDJfdCBfX3MwXzIzNSA9IF9fcDBfMjM1OyBcCiAgZmxvYXQ2NHgyX3QgX19zMV8yMzUgPSBfX3AxXzIzNTsgXAogIGZsb2F0NjR4MV90IF9fczJfMjM1ID0gX19wMl8yMzU7IFwKICBmbG9hdDY0eDJfdCBfX3JldjBfMjM1OyAgX19yZXYwXzIzNSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfMjM1LCBfX3MwXzIzNSwgMSwgMCk7IFwKICBmbG9hdDY0eDJfdCBfX3JldjFfMjM1OyAgX19yZXYxXzIzNSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfMjM1LCBfX3MxXzIzNSwgMSwgMCk7IFwKICBmbG9hdDY0eDJfdCBfX3JldF8yMzU7IFwKZmxvYXQ2NHgxX3QgX19yZWludF8yMzUgPSBfX3MyXzIzNTsgXAp1aW50NjR4Ml90IF9fcmVpbnQxXzIzNSA9ICh1aW50NjR4Ml90KSB7X19ub3N3YXBfdmdldHFfbGFuZV91NjQoKih1aW50NjR4Ml90ICopICZfX3JlaW50XzIzNSwgX19wM18yMzUpLCBfX25vc3dhcF92Z2V0cV9sYW5lX3U2NCgqKHVpbnQ2NHgyX3QgKikgJl9fcmVpbnRfMjM1LCBfX3AzXzIzNSl9OyBcCiAgX19yZXRfMjM1ID0gX19ub3N3YXBfdmNtbGFxX2Y2NChfX3JldjBfMjM1LCBfX3JldjFfMjM1LCAqKGZsb2F0NjR4Ml90ICopICZfX3JlaW50MV8yMzUpOyBcCiAgX19yZXRfMjM1ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMjM1LCBfX3JldF8yMzUsIDEsIDApOyBcCiAgX19yZXRfMjM1OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmNtbGFfbGFuZXFfZjY0KF9fcDBfMjM2LCBfX3AxXzIzNiwgX19wMl8yMzYsIF9fcDNfMjM2KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDFfdCBfX3MwXzIzNiA9IF9fcDBfMjM2OyBcCiAgZmxvYXQ2NHgxX3QgX19zMV8yMzYgPSBfX3AxXzIzNjsgXAogIGZsb2F0NjR4Ml90IF9fczJfMjM2ID0gX19wMl8yMzY7IFwKICBmbG9hdDY0eDFfdCBfX3JldF8yMzY7IFwKZmxvYXQ2NHgyX3QgX19yZWludF8yMzYgPSBfX3MyXzIzNjsgXAp1aW50NjR4Ml90IF9fcmVpbnQxXzIzNiA9ICh1aW50NjR4Ml90KSB7dmdldHFfbGFuZV91NjQoKih1aW50NjR4Ml90ICopICZfX3JlaW50XzIzNiwgX19wM18yMzYpLCB2Z2V0cV9sYW5lX3U2NCgqKHVpbnQ2NHgyX3QgKikgJl9fcmVpbnRfMjM2LCBfX3AzXzIzNil9OyBcCiAgX19yZXRfMjM2ID0gdmNtbGFfZjY0KF9fczBfMjM2LCBfX3MxXzIzNiwgKihmbG9hdDY0eDFfdCAqKSAmX19yZWludDFfMjM2KTsgXAogIF9fcmV0XzIzNjsgXAp9KQojZWxzZQojZGVmaW5lIHZjbWxhX2xhbmVxX2Y2NChfX3AwXzIzNywgX19wMV8yMzcsIF9fcDJfMjM3LCBfX3AzXzIzNykgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgxX3QgX19zMF8yMzcgPSBfX3AwXzIzNzsgXAogIGZsb2F0NjR4MV90IF9fczFfMjM3ID0gX19wMV8yMzc7IFwKICBmbG9hdDY0eDJfdCBfX3MyXzIzNyA9IF9fcDJfMjM3OyBcCiAgZmxvYXQ2NHgyX3QgX19yZXYyXzIzNzsgIF9fcmV2Ml8yMzcgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzIzNywgX19zMl8yMzcsIDEsIDApOyBcCiAgZmxvYXQ2NHgxX3QgX19yZXRfMjM3OyBcCmZsb2F0NjR4Ml90IF9fcmVpbnRfMjM3ID0gX19yZXYyXzIzNzsgXAp1aW50NjR4Ml90IF9fcmVpbnQxXzIzNyA9ICh1aW50NjR4Ml90KSB7X19ub3N3YXBfdmdldHFfbGFuZV91NjQoKih1aW50NjR4Ml90ICopICZfX3JlaW50XzIzNywgX19wM18yMzcpLCBfX25vc3dhcF92Z2V0cV9sYW5lX3U2NCgqKHVpbnQ2NHgyX3QgKikgJl9fcmVpbnRfMjM3LCBfX3AzXzIzNyl9OyBcCiAgX19yZXRfMjM3ID0gdmNtbGFfZjY0KF9fczBfMjM3LCBfX3MxXzIzNywgKihmbG9hdDY0eDFfdCAqKSAmX19yZWludDFfMjM3KTsgXAogIF9fcmV0XzIzNzsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZjbWxhcV9sYW5lcV9mNjQoX19wMF8yMzgsIF9fcDFfMjM4LCBfX3AyXzIzOCwgX19wM18yMzgpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4Ml90IF9fczBfMjM4ID0gX19wMF8yMzg7IFwKICBmbG9hdDY0eDJfdCBfX3MxXzIzOCA9IF9fcDFfMjM4OyBcCiAgZmxvYXQ2NHgyX3QgX19zMl8yMzggPSBfX3AyXzIzODsgXAogIGZsb2F0NjR4Ml90IF9fcmV0XzIzODsgXApmbG9hdDY0eDJfdCBfX3JlaW50XzIzOCA9IF9fczJfMjM4OyBcCnVpbnQ2NHgyX3QgX19yZWludDFfMjM4ID0gKHVpbnQ2NHgyX3QpIHt2Z2V0cV9sYW5lX3U2NCgqKHVpbnQ2NHgyX3QgKikgJl9fcmVpbnRfMjM4LCBfX3AzXzIzOCksIHZnZXRxX2xhbmVfdTY0KCoodWludDY0eDJfdCAqKSAmX19yZWludF8yMzgsIF9fcDNfMjM4KX07IFwKICBfX3JldF8yMzggPSB2Y21sYXFfZjY0KF9fczBfMjM4LCBfX3MxXzIzOCwgKihmbG9hdDY0eDJfdCAqKSAmX19yZWludDFfMjM4KTsgXAogIF9fcmV0XzIzODsgXAp9KQojZWxzZQojZGVmaW5lIHZjbWxhcV9sYW5lcV9mNjQoX19wMF8yMzksIF9fcDFfMjM5LCBfX3AyXzIzOSwgX19wM18yMzkpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4Ml90IF9fczBfMjM5ID0gX19wMF8yMzk7IFwKICBmbG9hdDY0eDJfdCBfX3MxXzIzOSA9IF9fcDFfMjM5OyBcCiAgZmxvYXQ2NHgyX3QgX19zMl8yMzkgPSBfX3AyXzIzOTsgXAogIGZsb2F0NjR4Ml90IF9fcmV2MF8yMzk7ICBfX3JldjBfMjM5ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8yMzksIF9fczBfMjM5LCAxLCAwKTsgXAogIGZsb2F0NjR4Ml90IF9fcmV2MV8yMzk7ICBfX3JldjFfMjM5ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV8yMzksIF9fczFfMjM5LCAxLCAwKTsgXAogIGZsb2F0NjR4Ml90IF9fcmV2Ml8yMzk7ICBfX3JldjJfMjM5ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl8yMzksIF9fczJfMjM5LCAxLCAwKTsgXAogIGZsb2F0NjR4Ml90IF9fcmV0XzIzOTsgXApmbG9hdDY0eDJfdCBfX3JlaW50XzIzOSA9IF9fcmV2Ml8yMzk7IFwKdWludDY0eDJfdCBfX3JlaW50MV8yMzkgPSAodWludDY0eDJfdCkge19fbm9zd2FwX3ZnZXRxX2xhbmVfdTY0KCoodWludDY0eDJfdCAqKSAmX19yZWludF8yMzksIF9fcDNfMjM5KSwgX19ub3N3YXBfdmdldHFfbGFuZV91NjQoKih1aW50NjR4Ml90ICopICZfX3JlaW50XzIzOSwgX19wM18yMzkpfTsgXAogIF9fcmV0XzIzOSA9IF9fbm9zd2FwX3ZjbWxhcV9mNjQoX19yZXYwXzIzOSwgX19yZXYxXzIzOSwgKihmbG9hdDY0eDJfdCAqKSAmX19yZWludDFfMjM5KTsgXAogIF9fcmV0XzIzOSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzIzOSwgX19yZXRfMjM5LCAxLCAwKTsgXAogIF9fcmV0XzIzOTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0NjR4Ml90IHZjbWxhcV9yb3QxODBfZjY0KGZsb2F0NjR4Ml90IF9fcDAsIGZsb2F0NjR4Ml90IF9fcDEsIGZsb2F0NjR4Ml90IF9fcDIpIHsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDJfdCkgX19idWlsdGluX25lb25fdmNtbGFxX3JvdDE4MF92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAoaW50OHgxNl90KV9fcDIsIDQyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDY0eDJfdCB2Y21sYXFfcm90MTgwX2Y2NChmbG9hdDY0eDJfdCBfX3AwLCBmbG9hdDY0eDJfdCBfX3AxLCBmbG9hdDY0eDJfdCBfX3AyKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgZmxvYXQ2NHgyX3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMSwgMCk7CiAgZmxvYXQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjbWxhcV9yb3QxODBfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIChpbnQ4eDE2X3QpX19yZXYyLCA0Mik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0NjR4Ml90IF9fbm9zd2FwX3ZjbWxhcV9yb3QxODBfZjY0KGZsb2F0NjR4Ml90IF9fcDAsIGZsb2F0NjR4Ml90IF9fcDEsIGZsb2F0NjR4Ml90IF9fcDIpIHsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDJfdCkgX19idWlsdGluX25lb25fdmNtbGFxX3JvdDE4MF92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAoaW50OHgxNl90KV9fcDIsIDQyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgpfX2FpIGZsb2F0NjR4MV90IHZjbWxhX3JvdDE4MF9mNjQoZmxvYXQ2NHgxX3QgX19wMCwgZmxvYXQ2NHgxX3QgX19wMSwgZmxvYXQ2NHgxX3QgX19wMikgewogIGZsb2F0NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92Y21sYV9yb3QxODBfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIChpbnQ4eDhfdClfX3AyLCAxMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNkZWZpbmUgdmNtbGFfcm90MTgwX2xhbmVfZjY0KF9fcDBfMjQwLCBfX3AxXzI0MCwgX19wMl8yNDAsIF9fcDNfMjQwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDFfdCBfX3MwXzI0MCA9IF9fcDBfMjQwOyBcCiAgZmxvYXQ2NHgxX3QgX19zMV8yNDAgPSBfX3AxXzI0MDsgXAogIGZsb2F0NjR4MV90IF9fczJfMjQwID0gX19wMl8yNDA7IFwKICBmbG9hdDY0eDFfdCBfX3JldF8yNDA7IFwKZmxvYXQ2NHgxX3QgX19yZWludF8yNDAgPSBfX3MyXzI0MDsgXAp1aW50NjR4Ml90IF9fcmVpbnQxXzI0MCA9ICh1aW50NjR4Ml90KSB7dmdldHFfbGFuZV91NjQoKih1aW50NjR4Ml90ICopICZfX3JlaW50XzI0MCwgX19wM18yNDApLCB2Z2V0cV9sYW5lX3U2NCgqKHVpbnQ2NHgyX3QgKikgJl9fcmVpbnRfMjQwLCBfX3AzXzI0MCl9OyBcCiAgX19yZXRfMjQwID0gdmNtbGFfcm90MTgwX2Y2NChfX3MwXzI0MCwgX19zMV8yNDAsICooZmxvYXQ2NHgxX3QgKikgJl9fcmVpbnQxXzI0MCk7IFwKICBfX3JldF8yNDA7IFwKfSkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmNtbGFxX3JvdDE4MF9sYW5lX2Y2NChfX3AwXzI0MSwgX19wMV8yNDEsIF9fcDJfMjQxLCBfX3AzXzI0MSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgyX3QgX19zMF8yNDEgPSBfX3AwXzI0MTsgXAogIGZsb2F0NjR4Ml90IF9fczFfMjQxID0gX19wMV8yNDE7IFwKICBmbG9hdDY0eDFfdCBfX3MyXzI0MSA9IF9fcDJfMjQxOyBcCiAgZmxvYXQ2NHgyX3QgX19yZXRfMjQxOyBcCmZsb2F0NjR4MV90IF9fcmVpbnRfMjQxID0gX19zMl8yNDE7IFwKdWludDY0eDJfdCBfX3JlaW50MV8yNDEgPSAodWludDY0eDJfdCkge3ZnZXRxX2xhbmVfdTY0KCoodWludDY0eDJfdCAqKSAmX19yZWludF8yNDEsIF9fcDNfMjQxKSwgdmdldHFfbGFuZV91NjQoKih1aW50NjR4Ml90ICopICZfX3JlaW50XzI0MSwgX19wM18yNDEpfTsgXAogIF9fcmV0XzI0MSA9IHZjbWxhcV9yb3QxODBfZjY0KF9fczBfMjQxLCBfX3MxXzI0MSwgKihmbG9hdDY0eDJfdCAqKSAmX19yZWludDFfMjQxKTsgXAogIF9fcmV0XzI0MTsgXAp9KQojZWxzZQojZGVmaW5lIHZjbWxhcV9yb3QxODBfbGFuZV9mNjQoX19wMF8yNDIsIF9fcDFfMjQyLCBfX3AyXzI0MiwgX19wM18yNDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4Ml90IF9fczBfMjQyID0gX19wMF8yNDI7IFwKICBmbG9hdDY0eDJfdCBfX3MxXzI0MiA9IF9fcDFfMjQyOyBcCiAgZmxvYXQ2NHgxX3QgX19zMl8yNDIgPSBfX3AyXzI0MjsgXAogIGZsb2F0NjR4Ml90IF9fcmV2MF8yNDI7ICBfX3JldjBfMjQyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8yNDIsIF9fczBfMjQyLCAxLCAwKTsgXAogIGZsb2F0NjR4Ml90IF9fcmV2MV8yNDI7ICBfX3JldjFfMjQyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV8yNDIsIF9fczFfMjQyLCAxLCAwKTsgXAogIGZsb2F0NjR4Ml90IF9fcmV0XzI0MjsgXApmbG9hdDY0eDFfdCBfX3JlaW50XzI0MiA9IF9fczJfMjQyOyBcCnVpbnQ2NHgyX3QgX19yZWludDFfMjQyID0gKHVpbnQ2NHgyX3QpIHtfX25vc3dhcF92Z2V0cV9sYW5lX3U2NCgqKHVpbnQ2NHgyX3QgKikgJl9fcmVpbnRfMjQyLCBfX3AzXzI0MiksIF9fbm9zd2FwX3ZnZXRxX2xhbmVfdTY0KCoodWludDY0eDJfdCAqKSAmX19yZWludF8yNDIsIF9fcDNfMjQyKX07IFwKICBfX3JldF8yNDIgPSBfX25vc3dhcF92Y21sYXFfcm90MTgwX2Y2NChfX3JldjBfMjQyLCBfX3JldjFfMjQyLCAqKGZsb2F0NjR4Ml90ICopICZfX3JlaW50MV8yNDIpOyBcCiAgX19yZXRfMjQyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMjQyLCBfX3JldF8yNDIsIDEsIDApOyBcCiAgX19yZXRfMjQyOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmNtbGFfcm90MTgwX2xhbmVxX2Y2NChfX3AwXzI0MywgX19wMV8yNDMsIF9fcDJfMjQzLCBfX3AzXzI0MykgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgxX3QgX19zMF8yNDMgPSBfX3AwXzI0MzsgXAogIGZsb2F0NjR4MV90IF9fczFfMjQzID0gX19wMV8yNDM7IFwKICBmbG9hdDY0eDJfdCBfX3MyXzI0MyA9IF9fcDJfMjQzOyBcCiAgZmxvYXQ2NHgxX3QgX19yZXRfMjQzOyBcCmZsb2F0NjR4Ml90IF9fcmVpbnRfMjQzID0gX19zMl8yNDM7IFwKdWludDY0eDJfdCBfX3JlaW50MV8yNDMgPSAodWludDY0eDJfdCkge3ZnZXRxX2xhbmVfdTY0KCoodWludDY0eDJfdCAqKSAmX19yZWludF8yNDMsIF9fcDNfMjQzKSwgdmdldHFfbGFuZV91NjQoKih1aW50NjR4Ml90ICopICZfX3JlaW50XzI0MywgX19wM18yNDMpfTsgXAogIF9fcmV0XzI0MyA9IHZjbWxhX3JvdDE4MF9mNjQoX19zMF8yNDMsIF9fczFfMjQzLCAqKGZsb2F0NjR4MV90ICopICZfX3JlaW50MV8yNDMpOyBcCiAgX19yZXRfMjQzOyBcCn0pCiNlbHNlCiNkZWZpbmUgdmNtbGFfcm90MTgwX2xhbmVxX2Y2NChfX3AwXzI0NCwgX19wMV8yNDQsIF9fcDJfMjQ0LCBfX3AzXzI0NCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgxX3QgX19zMF8yNDQgPSBfX3AwXzI0NDsgXAogIGZsb2F0NjR4MV90IF9fczFfMjQ0ID0gX19wMV8yNDQ7IFwKICBmbG9hdDY0eDJfdCBfX3MyXzI0NCA9IF9fcDJfMjQ0OyBcCiAgZmxvYXQ2NHgyX3QgX19yZXYyXzI0NDsgIF9fcmV2Ml8yNDQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzI0NCwgX19zMl8yNDQsIDEsIDApOyBcCiAgZmxvYXQ2NHgxX3QgX19yZXRfMjQ0OyBcCmZsb2F0NjR4Ml90IF9fcmVpbnRfMjQ0ID0gX19yZXYyXzI0NDsgXAp1aW50NjR4Ml90IF9fcmVpbnQxXzI0NCA9ICh1aW50NjR4Ml90KSB7X19ub3N3YXBfdmdldHFfbGFuZV91NjQoKih1aW50NjR4Ml90ICopICZfX3JlaW50XzI0NCwgX19wM18yNDQpLCBfX25vc3dhcF92Z2V0cV9sYW5lX3U2NCgqKHVpbnQ2NHgyX3QgKikgJl9fcmVpbnRfMjQ0LCBfX3AzXzI0NCl9OyBcCiAgX19yZXRfMjQ0ID0gdmNtbGFfcm90MTgwX2Y2NChfX3MwXzI0NCwgX19zMV8yNDQsICooZmxvYXQ2NHgxX3QgKikgJl9fcmVpbnQxXzI0NCk7IFwKICBfX3JldF8yNDQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Y21sYXFfcm90MTgwX2xhbmVxX2Y2NChfX3AwXzI0NSwgX19wMV8yNDUsIF9fcDJfMjQ1LCBfX3AzXzI0NSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgyX3QgX19zMF8yNDUgPSBfX3AwXzI0NTsgXAogIGZsb2F0NjR4Ml90IF9fczFfMjQ1ID0gX19wMV8yNDU7IFwKICBmbG9hdDY0eDJfdCBfX3MyXzI0NSA9IF9fcDJfMjQ1OyBcCiAgZmxvYXQ2NHgyX3QgX19yZXRfMjQ1OyBcCmZsb2F0NjR4Ml90IF9fcmVpbnRfMjQ1ID0gX19zMl8yNDU7IFwKdWludDY0eDJfdCBfX3JlaW50MV8yNDUgPSAodWludDY0eDJfdCkge3ZnZXRxX2xhbmVfdTY0KCoodWludDY0eDJfdCAqKSAmX19yZWludF8yNDUsIF9fcDNfMjQ1KSwgdmdldHFfbGFuZV91NjQoKih1aW50NjR4Ml90ICopICZfX3JlaW50XzI0NSwgX19wM18yNDUpfTsgXAogIF9fcmV0XzI0NSA9IHZjbWxhcV9yb3QxODBfZjY0KF9fczBfMjQ1LCBfX3MxXzI0NSwgKihmbG9hdDY0eDJfdCAqKSAmX19yZWludDFfMjQ1KTsgXAogIF9fcmV0XzI0NTsgXAp9KQojZWxzZQojZGVmaW5lIHZjbWxhcV9yb3QxODBfbGFuZXFfZjY0KF9fcDBfMjQ2LCBfX3AxXzI0NiwgX19wMl8yNDYsIF9fcDNfMjQ2KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDJfdCBfX3MwXzI0NiA9IF9fcDBfMjQ2OyBcCiAgZmxvYXQ2NHgyX3QgX19zMV8yNDYgPSBfX3AxXzI0NjsgXAogIGZsb2F0NjR4Ml90IF9fczJfMjQ2ID0gX19wMl8yNDY7IFwKICBmbG9hdDY0eDJfdCBfX3JldjBfMjQ2OyAgX19yZXYwXzI0NiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfMjQ2LCBfX3MwXzI0NiwgMSwgMCk7IFwKICBmbG9hdDY0eDJfdCBfX3JldjFfMjQ2OyAgX19yZXYxXzI0NiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfMjQ2LCBfX3MxXzI0NiwgMSwgMCk7IFwKICBmbG9hdDY0eDJfdCBfX3JldjJfMjQ2OyAgX19yZXYyXzI0NiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfMjQ2LCBfX3MyXzI0NiwgMSwgMCk7IFwKICBmbG9hdDY0eDJfdCBfX3JldF8yNDY7IFwKZmxvYXQ2NHgyX3QgX19yZWludF8yNDYgPSBfX3JldjJfMjQ2OyBcCnVpbnQ2NHgyX3QgX19yZWludDFfMjQ2ID0gKHVpbnQ2NHgyX3QpIHtfX25vc3dhcF92Z2V0cV9sYW5lX3U2NCgqKHVpbnQ2NHgyX3QgKikgJl9fcmVpbnRfMjQ2LCBfX3AzXzI0NiksIF9fbm9zd2FwX3ZnZXRxX2xhbmVfdTY0KCoodWludDY0eDJfdCAqKSAmX19yZWludF8yNDYsIF9fcDNfMjQ2KX07IFwKICBfX3JldF8yNDYgPSBfX25vc3dhcF92Y21sYXFfcm90MTgwX2Y2NChfX3JldjBfMjQ2LCBfX3JldjFfMjQ2LCAqKGZsb2F0NjR4Ml90ICopICZfX3JlaW50MV8yNDYpOyBcCiAgX19yZXRfMjQ2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMjQ2LCBfX3JldF8yNDYsIDEsIDApOyBcCiAgX19yZXRfMjQ2OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQ2NHgyX3QgdmNtbGFxX3JvdDI3MF9mNjQoZmxvYXQ2NHgyX3QgX19wMCwgZmxvYXQ2NHgyX3QgX19wMSwgZmxvYXQ2NHgyX3QgX19wMikgewogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y21sYXFfcm90MjcwX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIChpbnQ4eDE2X3QpX19wMiwgNDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0NjR4Ml90IHZjbWxhcV9yb3QyNzBfZjY0KGZsb2F0NjR4Ml90IF9fcDAsIGZsb2F0NjR4Ml90IF9fcDEsIGZsb2F0NjR4Ml90IF9fcDIpIHsKICBmbG9hdDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBmbG9hdDY0eDJfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAxLCAwKTsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDJfdCkgX19idWlsdGluX25lb25fdmNtbGFxX3JvdDI3MF92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgKGludDh4MTZfdClfX3JldjIsIDQyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQ2NHgyX3QgX19ub3N3YXBfdmNtbGFxX3JvdDI3MF9mNjQoZmxvYXQ2NHgyX3QgX19wMCwgZmxvYXQ2NHgyX3QgX19wMSwgZmxvYXQ2NHgyX3QgX19wMikgewogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y21sYXFfcm90MjcwX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIChpbnQ4eDE2X3QpX19wMiwgNDIpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCl9fYWkgZmxvYXQ2NHgxX3QgdmNtbGFfcm90MjcwX2Y2NChmbG9hdDY0eDFfdCBfX3AwLCBmbG9hdDY0eDFfdCBfX3AxLCBmbG9hdDY0eDFfdCBfX3AyKSB7CiAgZmxvYXQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3ZjbWxhX3JvdDI3MF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgKGludDh4OF90KV9fcDIsIDEwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2RlZmluZSB2Y21sYV9yb3QyNzBfbGFuZV9mNjQoX19wMF8yNDcsIF9fcDFfMjQ3LCBfX3AyXzI0NywgX19wM18yNDcpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4MV90IF9fczBfMjQ3ID0gX19wMF8yNDc7IFwKICBmbG9hdDY0eDFfdCBfX3MxXzI0NyA9IF9fcDFfMjQ3OyBcCiAgZmxvYXQ2NHgxX3QgX19zMl8yNDcgPSBfX3AyXzI0NzsgXAogIGZsb2F0NjR4MV90IF9fcmV0XzI0NzsgXApmbG9hdDY0eDFfdCBfX3JlaW50XzI0NyA9IF9fczJfMjQ3OyBcCnVpbnQ2NHgyX3QgX19yZWludDFfMjQ3ID0gKHVpbnQ2NHgyX3QpIHt2Z2V0cV9sYW5lX3U2NCgqKHVpbnQ2NHgyX3QgKikgJl9fcmVpbnRfMjQ3LCBfX3AzXzI0NyksIHZnZXRxX2xhbmVfdTY0KCoodWludDY0eDJfdCAqKSAmX19yZWludF8yNDcsIF9fcDNfMjQ3KX07IFwKICBfX3JldF8yNDcgPSB2Y21sYV9yb3QyNzBfZjY0KF9fczBfMjQ3LCBfX3MxXzI0NywgKihmbG9hdDY0eDFfdCAqKSAmX19yZWludDFfMjQ3KTsgXAogIF9fcmV0XzI0NzsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Y21sYXFfcm90MjcwX2xhbmVfZjY0KF9fcDBfMjQ4LCBfX3AxXzI0OCwgX19wMl8yNDgsIF9fcDNfMjQ4KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDJfdCBfX3MwXzI0OCA9IF9fcDBfMjQ4OyBcCiAgZmxvYXQ2NHgyX3QgX19zMV8yNDggPSBfX3AxXzI0ODsgXAogIGZsb2F0NjR4MV90IF9fczJfMjQ4ID0gX19wMl8yNDg7IFwKICBmbG9hdDY0eDJfdCBfX3JldF8yNDg7IFwKZmxvYXQ2NHgxX3QgX19yZWludF8yNDggPSBfX3MyXzI0ODsgXAp1aW50NjR4Ml90IF9fcmVpbnQxXzI0OCA9ICh1aW50NjR4Ml90KSB7dmdldHFfbGFuZV91NjQoKih1aW50NjR4Ml90ICopICZfX3JlaW50XzI0OCwgX19wM18yNDgpLCB2Z2V0cV9sYW5lX3U2NCgqKHVpbnQ2NHgyX3QgKikgJl9fcmVpbnRfMjQ4LCBfX3AzXzI0OCl9OyBcCiAgX19yZXRfMjQ4ID0gdmNtbGFxX3JvdDI3MF9mNjQoX19zMF8yNDgsIF9fczFfMjQ4LCAqKGZsb2F0NjR4Ml90ICopICZfX3JlaW50MV8yNDgpOyBcCiAgX19yZXRfMjQ4OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmNtbGFxX3JvdDI3MF9sYW5lX2Y2NChfX3AwXzI0OSwgX19wMV8yNDksIF9fcDJfMjQ5LCBfX3AzXzI0OSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgyX3QgX19zMF8yNDkgPSBfX3AwXzI0OTsgXAogIGZsb2F0NjR4Ml90IF9fczFfMjQ5ID0gX19wMV8yNDk7IFwKICBmbG9hdDY0eDFfdCBfX3MyXzI0OSA9IF9fcDJfMjQ5OyBcCiAgZmxvYXQ2NHgyX3QgX19yZXYwXzI0OTsgIF9fcmV2MF8yNDkgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzI0OSwgX19zMF8yNDksIDEsIDApOyBcCiAgZmxvYXQ2NHgyX3QgX19yZXYxXzI0OTsgIF9fcmV2MV8yNDkgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzI0OSwgX19zMV8yNDksIDEsIDApOyBcCiAgZmxvYXQ2NHgyX3QgX19yZXRfMjQ5OyBcCmZsb2F0NjR4MV90IF9fcmVpbnRfMjQ5ID0gX19zMl8yNDk7IFwKdWludDY0eDJfdCBfX3JlaW50MV8yNDkgPSAodWludDY0eDJfdCkge19fbm9zd2FwX3ZnZXRxX2xhbmVfdTY0KCoodWludDY0eDJfdCAqKSAmX19yZWludF8yNDksIF9fcDNfMjQ5KSwgX19ub3N3YXBfdmdldHFfbGFuZV91NjQoKih1aW50NjR4Ml90ICopICZfX3JlaW50XzI0OSwgX19wM18yNDkpfTsgXAogIF9fcmV0XzI0OSA9IF9fbm9zd2FwX3ZjbWxhcV9yb3QyNzBfZjY0KF9fcmV2MF8yNDksIF9fcmV2MV8yNDksICooZmxvYXQ2NHgyX3QgKikgJl9fcmVpbnQxXzI0OSk7IFwKICBfX3JldF8yNDkgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8yNDksIF9fcmV0XzI0OSwgMSwgMCk7IFwKICBfX3JldF8yNDk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Y21sYV9yb3QyNzBfbGFuZXFfZjY0KF9fcDBfMjUwLCBfX3AxXzI1MCwgX19wMl8yNTAsIF9fcDNfMjUwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDFfdCBfX3MwXzI1MCA9IF9fcDBfMjUwOyBcCiAgZmxvYXQ2NHgxX3QgX19zMV8yNTAgPSBfX3AxXzI1MDsgXAogIGZsb2F0NjR4Ml90IF9fczJfMjUwID0gX19wMl8yNTA7IFwKICBmbG9hdDY0eDFfdCBfX3JldF8yNTA7IFwKZmxvYXQ2NHgyX3QgX19yZWludF8yNTAgPSBfX3MyXzI1MDsgXAp1aW50NjR4Ml90IF9fcmVpbnQxXzI1MCA9ICh1aW50NjR4Ml90KSB7dmdldHFfbGFuZV91NjQoKih1aW50NjR4Ml90ICopICZfX3JlaW50XzI1MCwgX19wM18yNTApLCB2Z2V0cV9sYW5lX3U2NCgqKHVpbnQ2NHgyX3QgKikgJl9fcmVpbnRfMjUwLCBfX3AzXzI1MCl9OyBcCiAgX19yZXRfMjUwID0gdmNtbGFfcm90MjcwX2Y2NChfX3MwXzI1MCwgX19zMV8yNTAsICooZmxvYXQ2NHgxX3QgKikgJl9fcmVpbnQxXzI1MCk7IFwKICBfX3JldF8yNTA7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Y21sYV9yb3QyNzBfbGFuZXFfZjY0KF9fcDBfMjUxLCBfX3AxXzI1MSwgX19wMl8yNTEsIF9fcDNfMjUxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDFfdCBfX3MwXzI1MSA9IF9fcDBfMjUxOyBcCiAgZmxvYXQ2NHgxX3QgX19zMV8yNTEgPSBfX3AxXzI1MTsgXAogIGZsb2F0NjR4Ml90IF9fczJfMjUxID0gX19wMl8yNTE7IFwKICBmbG9hdDY0eDJfdCBfX3JldjJfMjUxOyAgX19yZXYyXzI1MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfMjUxLCBfX3MyXzI1MSwgMSwgMCk7IFwKICBmbG9hdDY0eDFfdCBfX3JldF8yNTE7IFwKZmxvYXQ2NHgyX3QgX19yZWludF8yNTEgPSBfX3JldjJfMjUxOyBcCnVpbnQ2NHgyX3QgX19yZWludDFfMjUxID0gKHVpbnQ2NHgyX3QpIHtfX25vc3dhcF92Z2V0cV9sYW5lX3U2NCgqKHVpbnQ2NHgyX3QgKikgJl9fcmVpbnRfMjUxLCBfX3AzXzI1MSksIF9fbm9zd2FwX3ZnZXRxX2xhbmVfdTY0KCoodWludDY0eDJfdCAqKSAmX19yZWludF8yNTEsIF9fcDNfMjUxKX07IFwKICBfX3JldF8yNTEgPSB2Y21sYV9yb3QyNzBfZjY0KF9fczBfMjUxLCBfX3MxXzI1MSwgKihmbG9hdDY0eDFfdCAqKSAmX19yZWludDFfMjUxKTsgXAogIF9fcmV0XzI1MTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZjbWxhcV9yb3QyNzBfbGFuZXFfZjY0KF9fcDBfMjUyLCBfX3AxXzI1MiwgX19wMl8yNTIsIF9fcDNfMjUyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDJfdCBfX3MwXzI1MiA9IF9fcDBfMjUyOyBcCiAgZmxvYXQ2NHgyX3QgX19zMV8yNTIgPSBfX3AxXzI1MjsgXAogIGZsb2F0NjR4Ml90IF9fczJfMjUyID0gX19wMl8yNTI7IFwKICBmbG9hdDY0eDJfdCBfX3JldF8yNTI7IFwKZmxvYXQ2NHgyX3QgX19yZWludF8yNTIgPSBfX3MyXzI1MjsgXAp1aW50NjR4Ml90IF9fcmVpbnQxXzI1MiA9ICh1aW50NjR4Ml90KSB7dmdldHFfbGFuZV91NjQoKih1aW50NjR4Ml90ICopICZfX3JlaW50XzI1MiwgX19wM18yNTIpLCB2Z2V0cV9sYW5lX3U2NCgqKHVpbnQ2NHgyX3QgKikgJl9fcmVpbnRfMjUyLCBfX3AzXzI1Mil9OyBcCiAgX19yZXRfMjUyID0gdmNtbGFxX3JvdDI3MF9mNjQoX19zMF8yNTIsIF9fczFfMjUyLCAqKGZsb2F0NjR4Ml90ICopICZfX3JlaW50MV8yNTIpOyBcCiAgX19yZXRfMjUyOyBcCn0pCiNlbHNlCiNkZWZpbmUgdmNtbGFxX3JvdDI3MF9sYW5lcV9mNjQoX19wMF8yNTMsIF9fcDFfMjUzLCBfX3AyXzI1MywgX19wM18yNTMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4Ml90IF9fczBfMjUzID0gX19wMF8yNTM7IFwKICBmbG9hdDY0eDJfdCBfX3MxXzI1MyA9IF9fcDFfMjUzOyBcCiAgZmxvYXQ2NHgyX3QgX19zMl8yNTMgPSBfX3AyXzI1MzsgXAogIGZsb2F0NjR4Ml90IF9fcmV2MF8yNTM7ICBfX3JldjBfMjUzID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8yNTMsIF9fczBfMjUzLCAxLCAwKTsgXAogIGZsb2F0NjR4Ml90IF9fcmV2MV8yNTM7ICBfX3JldjFfMjUzID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV8yNTMsIF9fczFfMjUzLCAxLCAwKTsgXAogIGZsb2F0NjR4Ml90IF9fcmV2Ml8yNTM7ICBfX3JldjJfMjUzID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl8yNTMsIF9fczJfMjUzLCAxLCAwKTsgXAogIGZsb2F0NjR4Ml90IF9fcmV0XzI1MzsgXApmbG9hdDY0eDJfdCBfX3JlaW50XzI1MyA9IF9fcmV2Ml8yNTM7IFwKdWludDY0eDJfdCBfX3JlaW50MV8yNTMgPSAodWludDY0eDJfdCkge19fbm9zd2FwX3ZnZXRxX2xhbmVfdTY0KCoodWludDY0eDJfdCAqKSAmX19yZWludF8yNTMsIF9fcDNfMjUzKSwgX19ub3N3YXBfdmdldHFfbGFuZV91NjQoKih1aW50NjR4Ml90ICopICZfX3JlaW50XzI1MywgX19wM18yNTMpfTsgXAogIF9fcmV0XzI1MyA9IF9fbm9zd2FwX3ZjbWxhcV9yb3QyNzBfZjY0KF9fcmV2MF8yNTMsIF9fcmV2MV8yNTMsICooZmxvYXQ2NHgyX3QgKikgJl9fcmVpbnQxXzI1Myk7IFwKICBfX3JldF8yNTMgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8yNTMsIF9fcmV0XzI1MywgMSwgMCk7IFwKICBfX3JldF8yNTM7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDY0eDJfdCB2Y21sYXFfcm90OTBfZjY0KGZsb2F0NjR4Ml90IF9fcDAsIGZsb2F0NjR4Ml90IF9fcDEsIGZsb2F0NjR4Ml90IF9fcDIpIHsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDJfdCkgX19idWlsdGluX25lb25fdmNtbGFxX3JvdDkwX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIChpbnQ4eDE2X3QpX19wMiwgNDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0NjR4Ml90IHZjbWxhcV9yb3Q5MF9mNjQoZmxvYXQ2NHgyX3QgX19wMCwgZmxvYXQ2NHgyX3QgX19wMSwgZmxvYXQ2NHgyX3QgX19wMikgewogIGZsb2F0NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGZsb2F0NjR4Ml90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDEsIDApOwogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y21sYXFfcm90OTBfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIChpbnQ4eDE2X3QpX19yZXYyLCA0Mik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0NjR4Ml90IF9fbm9zd2FwX3ZjbWxhcV9yb3Q5MF9mNjQoZmxvYXQ2NHgyX3QgX19wMCwgZmxvYXQ2NHgyX3QgX19wMSwgZmxvYXQ2NHgyX3QgX19wMikgewogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y21sYXFfcm90OTBfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgKGludDh4MTZfdClfX3AyLCA0Mik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKX19haSBmbG9hdDY0eDFfdCB2Y21sYV9yb3Q5MF9mNjQoZmxvYXQ2NHgxX3QgX19wMCwgZmxvYXQ2NHgxX3QgX19wMSwgZmxvYXQ2NHgxX3QgX19wMikgewogIGZsb2F0NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92Y21sYV9yb3Q5MF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgKGludDh4OF90KV9fcDIsIDEwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2RlZmluZSB2Y21sYV9yb3Q5MF9sYW5lX2Y2NChfX3AwXzI1NCwgX19wMV8yNTQsIF9fcDJfMjU0LCBfX3AzXzI1NCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgxX3QgX19zMF8yNTQgPSBfX3AwXzI1NDsgXAogIGZsb2F0NjR4MV90IF9fczFfMjU0ID0gX19wMV8yNTQ7IFwKICBmbG9hdDY0eDFfdCBfX3MyXzI1NCA9IF9fcDJfMjU0OyBcCiAgZmxvYXQ2NHgxX3QgX19yZXRfMjU0OyBcCmZsb2F0NjR4MV90IF9fcmVpbnRfMjU0ID0gX19zMl8yNTQ7IFwKdWludDY0eDJfdCBfX3JlaW50MV8yNTQgPSAodWludDY0eDJfdCkge3ZnZXRxX2xhbmVfdTY0KCoodWludDY0eDJfdCAqKSAmX19yZWludF8yNTQsIF9fcDNfMjU0KSwgdmdldHFfbGFuZV91NjQoKih1aW50NjR4Ml90ICopICZfX3JlaW50XzI1NCwgX19wM18yNTQpfTsgXAogIF9fcmV0XzI1NCA9IHZjbWxhX3JvdDkwX2Y2NChfX3MwXzI1NCwgX19zMV8yNTQsICooZmxvYXQ2NHgxX3QgKikgJl9fcmVpbnQxXzI1NCk7IFwKICBfX3JldF8yNTQ7IFwKfSkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmNtbGFxX3JvdDkwX2xhbmVfZjY0KF9fcDBfMjU1LCBfX3AxXzI1NSwgX19wMl8yNTUsIF9fcDNfMjU1KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDJfdCBfX3MwXzI1NSA9IF9fcDBfMjU1OyBcCiAgZmxvYXQ2NHgyX3QgX19zMV8yNTUgPSBfX3AxXzI1NTsgXAogIGZsb2F0NjR4MV90IF9fczJfMjU1ID0gX19wMl8yNTU7IFwKICBmbG9hdDY0eDJfdCBfX3JldF8yNTU7IFwKZmxvYXQ2NHgxX3QgX19yZWludF8yNTUgPSBfX3MyXzI1NTsgXAp1aW50NjR4Ml90IF9fcmVpbnQxXzI1NSA9ICh1aW50NjR4Ml90KSB7dmdldHFfbGFuZV91NjQoKih1aW50NjR4Ml90ICopICZfX3JlaW50XzI1NSwgX19wM18yNTUpLCB2Z2V0cV9sYW5lX3U2NCgqKHVpbnQ2NHgyX3QgKikgJl9fcmVpbnRfMjU1LCBfX3AzXzI1NSl9OyBcCiAgX19yZXRfMjU1ID0gdmNtbGFxX3JvdDkwX2Y2NChfX3MwXzI1NSwgX19zMV8yNTUsICooZmxvYXQ2NHgyX3QgKikgJl9fcmVpbnQxXzI1NSk7IFwKICBfX3JldF8yNTU7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Y21sYXFfcm90OTBfbGFuZV9mNjQoX19wMF8yNTYsIF9fcDFfMjU2LCBfX3AyXzI1NiwgX19wM18yNTYpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4Ml90IF9fczBfMjU2ID0gX19wMF8yNTY7IFwKICBmbG9hdDY0eDJfdCBfX3MxXzI1NiA9IF9fcDFfMjU2OyBcCiAgZmxvYXQ2NHgxX3QgX19zMl8yNTYgPSBfX3AyXzI1NjsgXAogIGZsb2F0NjR4Ml90IF9fcmV2MF8yNTY7ICBfX3JldjBfMjU2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8yNTYsIF9fczBfMjU2LCAxLCAwKTsgXAogIGZsb2F0NjR4Ml90IF9fcmV2MV8yNTY7ICBfX3JldjFfMjU2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV8yNTYsIF9fczFfMjU2LCAxLCAwKTsgXAogIGZsb2F0NjR4Ml90IF9fcmV0XzI1NjsgXApmbG9hdDY0eDFfdCBfX3JlaW50XzI1NiA9IF9fczJfMjU2OyBcCnVpbnQ2NHgyX3QgX19yZWludDFfMjU2ID0gKHVpbnQ2NHgyX3QpIHtfX25vc3dhcF92Z2V0cV9sYW5lX3U2NCgqKHVpbnQ2NHgyX3QgKikgJl9fcmVpbnRfMjU2LCBfX3AzXzI1NiksIF9fbm9zd2FwX3ZnZXRxX2xhbmVfdTY0KCoodWludDY0eDJfdCAqKSAmX19yZWludF8yNTYsIF9fcDNfMjU2KX07IFwKICBfX3JldF8yNTYgPSBfX25vc3dhcF92Y21sYXFfcm90OTBfZjY0KF9fcmV2MF8yNTYsIF9fcmV2MV8yNTYsICooZmxvYXQ2NHgyX3QgKikgJl9fcmVpbnQxXzI1Nik7IFwKICBfX3JldF8yNTYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8yNTYsIF9fcmV0XzI1NiwgMSwgMCk7IFwKICBfX3JldF8yNTY7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Y21sYV9yb3Q5MF9sYW5lcV9mNjQoX19wMF8yNTcsIF9fcDFfMjU3LCBfX3AyXzI1NywgX19wM18yNTcpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4MV90IF9fczBfMjU3ID0gX19wMF8yNTc7IFwKICBmbG9hdDY0eDFfdCBfX3MxXzI1NyA9IF9fcDFfMjU3OyBcCiAgZmxvYXQ2NHgyX3QgX19zMl8yNTcgPSBfX3AyXzI1NzsgXAogIGZsb2F0NjR4MV90IF9fcmV0XzI1NzsgXApmbG9hdDY0eDJfdCBfX3JlaW50XzI1NyA9IF9fczJfMjU3OyBcCnVpbnQ2NHgyX3QgX19yZWludDFfMjU3ID0gKHVpbnQ2NHgyX3QpIHt2Z2V0cV9sYW5lX3U2NCgqKHVpbnQ2NHgyX3QgKikgJl9fcmVpbnRfMjU3LCBfX3AzXzI1NyksIHZnZXRxX2xhbmVfdTY0KCoodWludDY0eDJfdCAqKSAmX19yZWludF8yNTcsIF9fcDNfMjU3KX07IFwKICBfX3JldF8yNTcgPSB2Y21sYV9yb3Q5MF9mNjQoX19zMF8yNTcsIF9fczFfMjU3LCAqKGZsb2F0NjR4MV90ICopICZfX3JlaW50MV8yNTcpOyBcCiAgX19yZXRfMjU3OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmNtbGFfcm90OTBfbGFuZXFfZjY0KF9fcDBfMjU4LCBfX3AxXzI1OCwgX19wMl8yNTgsIF9fcDNfMjU4KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDFfdCBfX3MwXzI1OCA9IF9fcDBfMjU4OyBcCiAgZmxvYXQ2NHgxX3QgX19zMV8yNTggPSBfX3AxXzI1ODsgXAogIGZsb2F0NjR4Ml90IF9fczJfMjU4ID0gX19wMl8yNTg7IFwKICBmbG9hdDY0eDJfdCBfX3JldjJfMjU4OyAgX19yZXYyXzI1OCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfMjU4LCBfX3MyXzI1OCwgMSwgMCk7IFwKICBmbG9hdDY0eDFfdCBfX3JldF8yNTg7IFwKZmxvYXQ2NHgyX3QgX19yZWludF8yNTggPSBfX3JldjJfMjU4OyBcCnVpbnQ2NHgyX3QgX19yZWludDFfMjU4ID0gKHVpbnQ2NHgyX3QpIHtfX25vc3dhcF92Z2V0cV9sYW5lX3U2NCgqKHVpbnQ2NHgyX3QgKikgJl9fcmVpbnRfMjU4LCBfX3AzXzI1OCksIF9fbm9zd2FwX3ZnZXRxX2xhbmVfdTY0KCoodWludDY0eDJfdCAqKSAmX19yZWludF8yNTgsIF9fcDNfMjU4KX07IFwKICBfX3JldF8yNTggPSB2Y21sYV9yb3Q5MF9mNjQoX19zMF8yNTgsIF9fczFfMjU4LCAqKGZsb2F0NjR4MV90ICopICZfX3JlaW50MV8yNTgpOyBcCiAgX19yZXRfMjU4OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmNtbGFxX3JvdDkwX2xhbmVxX2Y2NChfX3AwXzI1OSwgX19wMV8yNTksIF9fcDJfMjU5LCBfX3AzXzI1OSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgyX3QgX19zMF8yNTkgPSBfX3AwXzI1OTsgXAogIGZsb2F0NjR4Ml90IF9fczFfMjU5ID0gX19wMV8yNTk7IFwKICBmbG9hdDY0eDJfdCBfX3MyXzI1OSA9IF9fcDJfMjU5OyBcCiAgZmxvYXQ2NHgyX3QgX19yZXRfMjU5OyBcCmZsb2F0NjR4Ml90IF9fcmVpbnRfMjU5ID0gX19zMl8yNTk7IFwKdWludDY0eDJfdCBfX3JlaW50MV8yNTkgPSAodWludDY0eDJfdCkge3ZnZXRxX2xhbmVfdTY0KCoodWludDY0eDJfdCAqKSAmX19yZWludF8yNTksIF9fcDNfMjU5KSwgdmdldHFfbGFuZV91NjQoKih1aW50NjR4Ml90ICopICZfX3JlaW50XzI1OSwgX19wM18yNTkpfTsgXAogIF9fcmV0XzI1OSA9IHZjbWxhcV9yb3Q5MF9mNjQoX19zMF8yNTksIF9fczFfMjU5LCAqKGZsb2F0NjR4Ml90ICopICZfX3JlaW50MV8yNTkpOyBcCiAgX19yZXRfMjU5OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmNtbGFxX3JvdDkwX2xhbmVxX2Y2NChfX3AwXzI2MCwgX19wMV8yNjAsIF9fcDJfMjYwLCBfX3AzXzI2MCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgyX3QgX19zMF8yNjAgPSBfX3AwXzI2MDsgXAogIGZsb2F0NjR4Ml90IF9fczFfMjYwID0gX19wMV8yNjA7IFwKICBmbG9hdDY0eDJfdCBfX3MyXzI2MCA9IF9fcDJfMjYwOyBcCiAgZmxvYXQ2NHgyX3QgX19yZXYwXzI2MDsgIF9fcmV2MF8yNjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzI2MCwgX19zMF8yNjAsIDEsIDApOyBcCiAgZmxvYXQ2NHgyX3QgX19yZXYxXzI2MDsgIF9fcmV2MV8yNjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzI2MCwgX19zMV8yNjAsIDEsIDApOyBcCiAgZmxvYXQ2NHgyX3QgX19yZXYyXzI2MDsgIF9fcmV2Ml8yNjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzI2MCwgX19zMl8yNjAsIDEsIDApOyBcCiAgZmxvYXQ2NHgyX3QgX19yZXRfMjYwOyBcCmZsb2F0NjR4Ml90IF9fcmVpbnRfMjYwID0gX19yZXYyXzI2MDsgXAp1aW50NjR4Ml90IF9fcmVpbnQxXzI2MCA9ICh1aW50NjR4Ml90KSB7X19ub3N3YXBfdmdldHFfbGFuZV91NjQoKih1aW50NjR4Ml90ICopICZfX3JlaW50XzI2MCwgX19wM18yNjApLCBfX25vc3dhcF92Z2V0cV9sYW5lX3U2NCgqKHVpbnQ2NHgyX3QgKikgJl9fcmVpbnRfMjYwLCBfX3AzXzI2MCl9OyBcCiAgX19yZXRfMjYwID0gX19ub3N3YXBfdmNtbGFxX3JvdDkwX2Y2NChfX3JldjBfMjYwLCBfX3JldjFfMjYwLCAqKGZsb2F0NjR4Ml90ICopICZfX3JlaW50MV8yNjApOyBcCiAgX19yZXRfMjYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMjYwLCBfX3JldF8yNjAsIDEsIDApOyBcCiAgX19yZXRfMjYwOyBcCn0pCiNlbmRpZgoKI2VuZGlmCiNpZiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfRE9UUFJPRCkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDRfdCB2ZG90cV91MzIodWludDMyeDRfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEsIHVpbnQ4eDE2X3QgX19wMikgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdmRvdHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgKGludDh4MTZfdClfX3AyLCA1MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2ZG90cV91MzIodWludDMyeDRfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEsIHVpbnQ4eDE2X3QgX19wMikgewogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdmRvdHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIChpbnQ4eDE2X3QpX19yZXYyLCA1MCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQzMng0X3QgX19ub3N3YXBfdmRvdHFfdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDh4MTZfdCBfX3AxLCB1aW50OHgxNl90IF9fcDIpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3Zkb3RxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIChpbnQ4eDE2X3QpX19wMiwgNTApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDRfdCB2ZG90cV9zMzIoaW50MzJ4NF90IF9fcDAsIGludDh4MTZfdCBfX3AxLCBpbnQ4eDE2X3QgX19wMikgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3Zkb3RxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIChpbnQ4eDE2X3QpX19wMiwgMzQpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDRfdCB2ZG90cV9zMzIoaW50MzJ4NF90IF9fcDAsIGludDh4MTZfdCBfX3AxLCBpbnQ4eDE2X3QgX19wMikgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3Zkb3RxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAoaW50OHgxNl90KV9fcmV2MiwgMzQpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQzMng0X3QgX19ub3N3YXBfdmRvdHFfczMyKGludDMyeDRfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSwgaW50OHgxNl90IF9fcDIpIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92ZG90cV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAoaW50OHgxNl90KV9fcDIsIDM0KTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4Ml90IHZkb3RfdTMyKHVpbnQzMngyX3QgX19wMCwgdWludDh4OF90IF9fcDEsIHVpbnQ4eDhfdCBfX3AyKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92ZG90X3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAoaW50OHg4X3QpX19wMiwgMTgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMngyX3QgdmRvdF91MzIodWludDMyeDJfdCBfX3AwLCB1aW50OHg4X3QgX19wMSwgdWludDh4OF90IF9fcDIpIHsKICB1aW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92ZG90X3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgKGludDh4OF90KV9fcmV2MiwgMTgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MzJ4Ml90IF9fbm9zd2FwX3Zkb3RfdTMyKHVpbnQzMngyX3QgX19wMCwgdWludDh4OF90IF9fcDEsIHVpbnQ4eDhfdCBfX3AyKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92ZG90X3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAoaW50OHg4X3QpX19wMiwgMTgpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDJfdCB2ZG90X3MzMihpbnQzMngyX3QgX19wMCwgaW50OHg4X3QgX19wMSwgaW50OHg4X3QgX19wMikgewogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3Zkb3RfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIChpbnQ4eDhfdClfX3AyLCAyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMngyX3QgdmRvdF9zMzIoaW50MzJ4Ml90IF9fcDAsIGludDh4OF90IF9fcDEsIGludDh4OF90IF9fcDIpIHsKICBpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdmRvdF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIChpbnQ4eDhfdClfX3JldjIsIDIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQzMngyX3QgX19ub3N3YXBfdmRvdF9zMzIoaW50MzJ4Ml90IF9fcDAsIGludDh4OF90IF9fcDEsIGludDh4OF90IF9fcDIpIHsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92ZG90X3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAoaW50OHg4X3QpX19wMiwgMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmRvdHFfbGFuZV91MzIoX19wMF8yNjEsIF9fcDFfMjYxLCBfX3AyXzI2MSwgX19wM18yNjEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0X3QgX19zMF8yNjEgPSBfX3AwXzI2MTsgXAogIHVpbnQ4eDE2X3QgX19zMV8yNjEgPSBfX3AxXzI2MTsgXAogIHVpbnQ4eDhfdCBfX3MyXzI2MSA9IF9fcDJfMjYxOyBcCiAgdWludDMyeDRfdCBfX3JldF8yNjE7IFwKdWludDh4OF90IF9fcmVpbnRfMjYxID0gX19zMl8yNjE7IFwKdWludDMyeDRfdCBfX3JlaW50MV8yNjEgPSBzcGxhdHFfbGFuZV91MzIoKih1aW50MzJ4Ml90ICopICZfX3JlaW50XzI2MSwgX19wM18yNjEpOyBcCiAgX19yZXRfMjYxID0gdmRvdHFfdTMyKF9fczBfMjYxLCBfX3MxXzI2MSwgKih1aW50OHgxNl90ICopICZfX3JlaW50MV8yNjEpOyBcCiAgX19yZXRfMjYxOyBcCn0pCiNlbHNlCiNkZWZpbmUgdmRvdHFfbGFuZV91MzIoX19wMF8yNjIsIF9fcDFfMjYyLCBfX3AyXzI2MiwgX19wM18yNjIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0X3QgX19zMF8yNjIgPSBfX3AwXzI2MjsgXAogIHVpbnQ4eDE2X3QgX19zMV8yNjIgPSBfX3AxXzI2MjsgXAogIHVpbnQ4eDhfdCBfX3MyXzI2MiA9IF9fcDJfMjYyOyBcCiAgdWludDMyeDRfdCBfX3JldjBfMjYyOyAgX19yZXYwXzI2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfMjYyLCBfX3MwXzI2MiwgMywgMiwgMSwgMCk7IFwKICB1aW50OHgxNl90IF9fcmV2MV8yNjI7ICBfX3JldjFfMjYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV8yNjIsIF9fczFfMjYyLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQ4eDhfdCBfX3JldjJfMjYyOyAgX19yZXYyXzI2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfMjYyLCBfX3MyXzI2MiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50MzJ4NF90IF9fcmV0XzI2MjsgXAp1aW50OHg4X3QgX19yZWludF8yNjIgPSBfX3JldjJfMjYyOyBcCnVpbnQzMng0X3QgX19yZWludDFfMjYyID0gX19ub3N3YXBfc3BsYXRxX2xhbmVfdTMyKCoodWludDMyeDJfdCAqKSAmX19yZWludF8yNjIsIF9fcDNfMjYyKTsgXAogIF9fcmV0XzI2MiA9IF9fbm9zd2FwX3Zkb3RxX3UzMihfX3JldjBfMjYyLCBfX3JldjFfMjYyLCAqKHVpbnQ4eDE2X3QgKikgJl9fcmVpbnQxXzI2Mik7IFwKICBfX3JldF8yNjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8yNjIsIF9fcmV0XzI2MiwgMywgMiwgMSwgMCk7IFwKICBfX3JldF8yNjI7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2ZG90cV9sYW5lX3MzMihfX3AwXzI2MywgX19wMV8yNjMsIF9fcDJfMjYzLCBfX3AzXzI2MykgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczBfMjYzID0gX19wMF8yNjM7IFwKICBpbnQ4eDE2X3QgX19zMV8yNjMgPSBfX3AxXzI2MzsgXAogIGludDh4OF90IF9fczJfMjYzID0gX19wMl8yNjM7IFwKICBpbnQzMng0X3QgX19yZXRfMjYzOyBcCmludDh4OF90IF9fcmVpbnRfMjYzID0gX19zMl8yNjM7IFwKaW50MzJ4NF90IF9fcmVpbnQxXzI2MyA9IHNwbGF0cV9sYW5lX3MzMigqKGludDMyeDJfdCAqKSAmX19yZWludF8yNjMsIF9fcDNfMjYzKTsgXAogIF9fcmV0XzI2MyA9IHZkb3RxX3MzMihfX3MwXzI2MywgX19zMV8yNjMsICooaW50OHgxNl90ICopICZfX3JlaW50MV8yNjMpOyBcCiAgX19yZXRfMjYzOyBcCn0pCiNlbHNlCiNkZWZpbmUgdmRvdHFfbGFuZV9zMzIoX19wMF8yNjQsIF9fcDFfMjY0LCBfX3AyXzI2NCwgX19wM18yNjQpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDRfdCBfX3MwXzI2NCA9IF9fcDBfMjY0OyBcCiAgaW50OHgxNl90IF9fczFfMjY0ID0gX19wMV8yNjQ7IFwKICBpbnQ4eDhfdCBfX3MyXzI2NCA9IF9fcDJfMjY0OyBcCiAgaW50MzJ4NF90IF9fcmV2MF8yNjQ7ICBfX3JldjBfMjY0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8yNjQsIF9fczBfMjY0LCAzLCAyLCAxLCAwKTsgXAogIGludDh4MTZfdCBfX3JldjFfMjY0OyAgX19yZXYxXzI2NCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfMjY0LCBfX3MxXzI2NCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQ4eDhfdCBfX3JldjJfMjY0OyAgX19yZXYyXzI2NCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfMjY0LCBfX3MyXzI2NCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQzMng0X3QgX19yZXRfMjY0OyBcCmludDh4OF90IF9fcmVpbnRfMjY0ID0gX19yZXYyXzI2NDsgXAppbnQzMng0X3QgX19yZWludDFfMjY0ID0gX19ub3N3YXBfc3BsYXRxX2xhbmVfczMyKCooaW50MzJ4Ml90ICopICZfX3JlaW50XzI2NCwgX19wM18yNjQpOyBcCiAgX19yZXRfMjY0ID0gX19ub3N3YXBfdmRvdHFfczMyKF9fcmV2MF8yNjQsIF9fcmV2MV8yNjQsICooaW50OHgxNl90ICopICZfX3JlaW50MV8yNjQpOyBcCiAgX19yZXRfMjY0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMjY0LCBfX3JldF8yNjQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfMjY0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmRvdF9sYW5lX3UzMihfX3AwXzI2NSwgX19wMV8yNjUsIF9fcDJfMjY1LCBfX3AzXzI2NSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDJfdCBfX3MwXzI2NSA9IF9fcDBfMjY1OyBcCiAgdWludDh4OF90IF9fczFfMjY1ID0gX19wMV8yNjU7IFwKICB1aW50OHg4X3QgX19zMl8yNjUgPSBfX3AyXzI2NTsgXAogIHVpbnQzMngyX3QgX19yZXRfMjY1OyBcCnVpbnQ4eDhfdCBfX3JlaW50XzI2NSA9IF9fczJfMjY1OyBcCnVpbnQzMngyX3QgX19yZWludDFfMjY1ID0gc3BsYXRfbGFuZV91MzIoKih1aW50MzJ4Ml90ICopICZfX3JlaW50XzI2NSwgX19wM18yNjUpOyBcCiAgX19yZXRfMjY1ID0gdmRvdF91MzIoX19zMF8yNjUsIF9fczFfMjY1LCAqKHVpbnQ4eDhfdCAqKSAmX19yZWludDFfMjY1KTsgXAogIF9fcmV0XzI2NTsgXAp9KQojZWxzZQojZGVmaW5lIHZkb3RfbGFuZV91MzIoX19wMF8yNjYsIF9fcDFfMjY2LCBfX3AyXzI2NiwgX19wM18yNjYpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMngyX3QgX19zMF8yNjYgPSBfX3AwXzI2NjsgXAogIHVpbnQ4eDhfdCBfX3MxXzI2NiA9IF9fcDFfMjY2OyBcCiAgdWludDh4OF90IF9fczJfMjY2ID0gX19wMl8yNjY7IFwKICB1aW50MzJ4Ml90IF9fcmV2MF8yNjY7ICBfX3JldjBfMjY2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8yNjYsIF9fczBfMjY2LCAxLCAwKTsgXAogIHVpbnQ4eDhfdCBfX3JldjFfMjY2OyAgX19yZXYxXzI2NiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfMjY2LCBfX3MxXzI2NiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50OHg4X3QgX19yZXYyXzI2NjsgIF9fcmV2Ml8yNjYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzI2NiwgX19zMl8yNjYsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDMyeDJfdCBfX3JldF8yNjY7IFwKdWludDh4OF90IF9fcmVpbnRfMjY2ID0gX19yZXYyXzI2NjsgXAp1aW50MzJ4Ml90IF9fcmVpbnQxXzI2NiA9IF9fbm9zd2FwX3NwbGF0X2xhbmVfdTMyKCoodWludDMyeDJfdCAqKSAmX19yZWludF8yNjYsIF9fcDNfMjY2KTsgXAogIF9fcmV0XzI2NiA9IF9fbm9zd2FwX3Zkb3RfdTMyKF9fcmV2MF8yNjYsIF9fcmV2MV8yNjYsICoodWludDh4OF90ICopICZfX3JlaW50MV8yNjYpOyBcCiAgX19yZXRfMjY2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMjY2LCBfX3JldF8yNjYsIDEsIDApOyBcCiAgX19yZXRfMjY2OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmRvdF9sYW5lX3MzMihfX3AwXzI2NywgX19wMV8yNjcsIF9fcDJfMjY3LCBfX3AzXzI2NykgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Ml90IF9fczBfMjY3ID0gX19wMF8yNjc7IFwKICBpbnQ4eDhfdCBfX3MxXzI2NyA9IF9fcDFfMjY3OyBcCiAgaW50OHg4X3QgX19zMl8yNjcgPSBfX3AyXzI2NzsgXAogIGludDMyeDJfdCBfX3JldF8yNjc7IFwKaW50OHg4X3QgX19yZWludF8yNjcgPSBfX3MyXzI2NzsgXAppbnQzMngyX3QgX19yZWludDFfMjY3ID0gc3BsYXRfbGFuZV9zMzIoKihpbnQzMngyX3QgKikgJl9fcmVpbnRfMjY3LCBfX3AzXzI2Nyk7IFwKICBfX3JldF8yNjcgPSB2ZG90X3MzMihfX3MwXzI2NywgX19zMV8yNjcsICooaW50OHg4X3QgKikgJl9fcmVpbnQxXzI2Nyk7IFwKICBfX3JldF8yNjc7IFwKfSkKI2Vsc2UKI2RlZmluZSB2ZG90X2xhbmVfczMyKF9fcDBfMjY4LCBfX3AxXzI2OCwgX19wMl8yNjgsIF9fcDNfMjY4KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMngyX3QgX19zMF8yNjggPSBfX3AwXzI2ODsgXAogIGludDh4OF90IF9fczFfMjY4ID0gX19wMV8yNjg7IFwKICBpbnQ4eDhfdCBfX3MyXzI2OCA9IF9fcDJfMjY4OyBcCiAgaW50MzJ4Ml90IF9fcmV2MF8yNjg7ICBfX3JldjBfMjY4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8yNjgsIF9fczBfMjY4LCAxLCAwKTsgXAogIGludDh4OF90IF9fcmV2MV8yNjg7ICBfX3JldjFfMjY4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV8yNjgsIF9fczFfMjY4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDh4OF90IF9fcmV2Ml8yNjg7ICBfX3JldjJfMjY4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl8yNjgsIF9fczJfMjY4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDJfdCBfX3JldF8yNjg7IFwKaW50OHg4X3QgX19yZWludF8yNjggPSBfX3JldjJfMjY4OyBcCmludDMyeDJfdCBfX3JlaW50MV8yNjggPSBfX25vc3dhcF9zcGxhdF9sYW5lX3MzMigqKGludDMyeDJfdCAqKSAmX19yZWludF8yNjgsIF9fcDNfMjY4KTsgXAogIF9fcmV0XzI2OCA9IF9fbm9zd2FwX3Zkb3RfczMyKF9fcmV2MF8yNjgsIF9fcmV2MV8yNjgsICooaW50OHg4X3QgKikgJl9fcmVpbnQxXzI2OCk7IFwKICBfX3JldF8yNjggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8yNjgsIF9fcmV0XzI2OCwgMSwgMCk7IFwKICBfX3JldF8yNjg7IFwKfSkKI2VuZGlmCgojZW5kaWYKI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9ET1RQUk9EKSAmJiBkZWZpbmVkKF9fYWFyY2g2NF9fKQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2ZG90cV9sYW5lcV91MzIoX19wMF8yNjksIF9fcDFfMjY5LCBfX3AyXzI2OSwgX19wM18yNjkpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0X3QgX19zMF8yNjkgPSBfX3AwXzI2OTsgXAogIHVpbnQ4eDE2X3QgX19zMV8yNjkgPSBfX3AxXzI2OTsgXAogIHVpbnQ4eDE2X3QgX19zMl8yNjkgPSBfX3AyXzI2OTsgXAogIHVpbnQzMng0X3QgX19yZXRfMjY5OyBcCnVpbnQ4eDE2X3QgX19yZWludF8yNjkgPSBfX3MyXzI2OTsgXAp1aW50MzJ4NF90IF9fcmVpbnQxXzI2OSA9IHNwbGF0cV9sYW5lcV91MzIoKih1aW50MzJ4NF90ICopICZfX3JlaW50XzI2OSwgX19wM18yNjkpOyBcCiAgX19yZXRfMjY5ID0gdmRvdHFfdTMyKF9fczBfMjY5LCBfX3MxXzI2OSwgKih1aW50OHgxNl90ICopICZfX3JlaW50MV8yNjkpOyBcCiAgX19yZXRfMjY5OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmRvdHFfbGFuZXFfdTMyKF9fcDBfMjcwLCBfX3AxXzI3MCwgX19wMl8yNzAsIF9fcDNfMjcwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NF90IF9fczBfMjcwID0gX19wMF8yNzA7IFwKICB1aW50OHgxNl90IF9fczFfMjcwID0gX19wMV8yNzA7IFwKICB1aW50OHgxNl90IF9fczJfMjcwID0gX19wMl8yNzA7IFwKICB1aW50MzJ4NF90IF9fcmV2MF8yNzA7ICBfX3JldjBfMjcwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8yNzAsIF9fczBfMjcwLCAzLCAyLCAxLCAwKTsgXAogIHVpbnQ4eDE2X3QgX19yZXYxXzI3MDsgIF9fcmV2MV8yNzAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzI3MCwgX19zMV8yNzAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDh4MTZfdCBfX3JldjJfMjcwOyAgX19yZXYyXzI3MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfMjcwLCBfX3MyXzI3MCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50MzJ4NF90IF9fcmV0XzI3MDsgXAp1aW50OHgxNl90IF9fcmVpbnRfMjcwID0gX19yZXYyXzI3MDsgXAp1aW50MzJ4NF90IF9fcmVpbnQxXzI3MCA9IF9fbm9zd2FwX3NwbGF0cV9sYW5lcV91MzIoKih1aW50MzJ4NF90ICopICZfX3JlaW50XzI3MCwgX19wM18yNzApOyBcCiAgX19yZXRfMjcwID0gX19ub3N3YXBfdmRvdHFfdTMyKF9fcmV2MF8yNzAsIF9fcmV2MV8yNzAsICoodWludDh4MTZfdCAqKSAmX19yZWludDFfMjcwKTsgXAogIF9fcmV0XzI3MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzI3MCwgX19yZXRfMjcwLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzI3MDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZkb3RxX2xhbmVxX3MzMihfX3AwXzI3MSwgX19wMV8yNzEsIF9fcDJfMjcxLCBfX3AzXzI3MSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczBfMjcxID0gX19wMF8yNzE7IFwKICBpbnQ4eDE2X3QgX19zMV8yNzEgPSBfX3AxXzI3MTsgXAogIGludDh4MTZfdCBfX3MyXzI3MSA9IF9fcDJfMjcxOyBcCiAgaW50MzJ4NF90IF9fcmV0XzI3MTsgXAppbnQ4eDE2X3QgX19yZWludF8yNzEgPSBfX3MyXzI3MTsgXAppbnQzMng0X3QgX19yZWludDFfMjcxID0gc3BsYXRxX2xhbmVxX3MzMigqKGludDMyeDRfdCAqKSAmX19yZWludF8yNzEsIF9fcDNfMjcxKTsgXAogIF9fcmV0XzI3MSA9IHZkb3RxX3MzMihfX3MwXzI3MSwgX19zMV8yNzEsICooaW50OHgxNl90ICopICZfX3JlaW50MV8yNzEpOyBcCiAgX19yZXRfMjcxOyBcCn0pCiNlbHNlCiNkZWZpbmUgdmRvdHFfbGFuZXFfczMyKF9fcDBfMjcyLCBfX3AxXzI3MiwgX19wMl8yNzIsIF9fcDNfMjcyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMF8yNzIgPSBfX3AwXzI3MjsgXAogIGludDh4MTZfdCBfX3MxXzI3MiA9IF9fcDFfMjcyOyBcCiAgaW50OHgxNl90IF9fczJfMjcyID0gX19wMl8yNzI7IFwKICBpbnQzMng0X3QgX19yZXYwXzI3MjsgIF9fcmV2MF8yNzIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzI3MiwgX19zMF8yNzIsIDMsIDIsIDEsIDApOyBcCiAgaW50OHgxNl90IF9fcmV2MV8yNzI7ICBfX3JldjFfMjcyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV8yNzIsIF9fczFfMjcyLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDh4MTZfdCBfX3JldjJfMjcyOyAgX19yZXYyXzI3MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfMjcyLCBfX3MyXzI3MiwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQzMng0X3QgX19yZXRfMjcyOyBcCmludDh4MTZfdCBfX3JlaW50XzI3MiA9IF9fcmV2Ml8yNzI7IFwKaW50MzJ4NF90IF9fcmVpbnQxXzI3MiA9IF9fbm9zd2FwX3NwbGF0cV9sYW5lcV9zMzIoKihpbnQzMng0X3QgKikgJl9fcmVpbnRfMjcyLCBfX3AzXzI3Mik7IFwKICBfX3JldF8yNzIgPSBfX25vc3dhcF92ZG90cV9zMzIoX19yZXYwXzI3MiwgX19yZXYxXzI3MiwgKihpbnQ4eDE2X3QgKikgJl9fcmVpbnQxXzI3Mik7IFwKICBfX3JldF8yNzIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8yNzIsIF9fcmV0XzI3MiwgMywgMiwgMSwgMCk7IFwKICBfX3JldF8yNzI7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2ZG90X2xhbmVxX3UzMihfX3AwXzI3MywgX19wMV8yNzMsIF9fcDJfMjczLCBfX3AzXzI3MykgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDJfdCBfX3MwXzI3MyA9IF9fcDBfMjczOyBcCiAgdWludDh4OF90IF9fczFfMjczID0gX19wMV8yNzM7IFwKICB1aW50OHgxNl90IF9fczJfMjczID0gX19wMl8yNzM7IFwKICB1aW50MzJ4Ml90IF9fcmV0XzI3MzsgXAp1aW50OHgxNl90IF9fcmVpbnRfMjczID0gX19zMl8yNzM7IFwKdWludDMyeDJfdCBfX3JlaW50MV8yNzMgPSBzcGxhdF9sYW5lcV91MzIoKih1aW50MzJ4NF90ICopICZfX3JlaW50XzI3MywgX19wM18yNzMpOyBcCiAgX19yZXRfMjczID0gdmRvdF91MzIoX19zMF8yNzMsIF9fczFfMjczLCAqKHVpbnQ4eDhfdCAqKSAmX19yZWludDFfMjczKTsgXAogIF9fcmV0XzI3MzsgXAp9KQojZWxzZQojZGVmaW5lIHZkb3RfbGFuZXFfdTMyKF9fcDBfMjc0LCBfX3AxXzI3NCwgX19wMl8yNzQsIF9fcDNfMjc0KSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4Ml90IF9fczBfMjc0ID0gX19wMF8yNzQ7IFwKICB1aW50OHg4X3QgX19zMV8yNzQgPSBfX3AxXzI3NDsgXAogIHVpbnQ4eDE2X3QgX19zMl8yNzQgPSBfX3AyXzI3NDsgXAogIHVpbnQzMngyX3QgX19yZXYwXzI3NDsgIF9fcmV2MF8yNzQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzI3NCwgX19zMF8yNzQsIDEsIDApOyBcCiAgdWludDh4OF90IF9fcmV2MV8yNzQ7ICBfX3JldjFfMjc0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV8yNzQsIF9fczFfMjc0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQ4eDE2X3QgX19yZXYyXzI3NDsgIF9fcmV2Ml8yNzQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzI3NCwgX19zMl8yNzQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDMyeDJfdCBfX3JldF8yNzQ7IFwKdWludDh4MTZfdCBfX3JlaW50XzI3NCA9IF9fcmV2Ml8yNzQ7IFwKdWludDMyeDJfdCBfX3JlaW50MV8yNzQgPSBfX25vc3dhcF9zcGxhdF9sYW5lcV91MzIoKih1aW50MzJ4NF90ICopICZfX3JlaW50XzI3NCwgX19wM18yNzQpOyBcCiAgX19yZXRfMjc0ID0gX19ub3N3YXBfdmRvdF91MzIoX19yZXYwXzI3NCwgX19yZXYxXzI3NCwgKih1aW50OHg4X3QgKikgJl9fcmVpbnQxXzI3NCk7IFwKICBfX3JldF8yNzQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8yNzQsIF9fcmV0XzI3NCwgMSwgMCk7IFwKICBfX3JldF8yNzQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2ZG90X2xhbmVxX3MzMihfX3AwXzI3NSwgX19wMV8yNzUsIF9fcDJfMjc1LCBfX3AzXzI3NSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Ml90IF9fczBfMjc1ID0gX19wMF8yNzU7IFwKICBpbnQ4eDhfdCBfX3MxXzI3NSA9IF9fcDFfMjc1OyBcCiAgaW50OHgxNl90IF9fczJfMjc1ID0gX19wMl8yNzU7IFwKICBpbnQzMngyX3QgX19yZXRfMjc1OyBcCmludDh4MTZfdCBfX3JlaW50XzI3NSA9IF9fczJfMjc1OyBcCmludDMyeDJfdCBfX3JlaW50MV8yNzUgPSBzcGxhdF9sYW5lcV9zMzIoKihpbnQzMng0X3QgKikgJl9fcmVpbnRfMjc1LCBfX3AzXzI3NSk7IFwKICBfX3JldF8yNzUgPSB2ZG90X3MzMihfX3MwXzI3NSwgX19zMV8yNzUsICooaW50OHg4X3QgKikgJl9fcmVpbnQxXzI3NSk7IFwKICBfX3JldF8yNzU7IFwKfSkKI2Vsc2UKI2RlZmluZSB2ZG90X2xhbmVxX3MzMihfX3AwXzI3NiwgX19wMV8yNzYsIF9fcDJfMjc2LCBfX3AzXzI3NikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Ml90IF9fczBfMjc2ID0gX19wMF8yNzY7IFwKICBpbnQ4eDhfdCBfX3MxXzI3NiA9IF9fcDFfMjc2OyBcCiAgaW50OHgxNl90IF9fczJfMjc2ID0gX19wMl8yNzY7IFwKICBpbnQzMngyX3QgX19yZXYwXzI3NjsgIF9fcmV2MF8yNzYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzI3NiwgX19zMF8yNzYsIDEsIDApOyBcCiAgaW50OHg4X3QgX19yZXYxXzI3NjsgIF9fcmV2MV8yNzYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzI3NiwgX19zMV8yNzYsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50OHgxNl90IF9fcmV2Ml8yNzY7ICBfX3JldjJfMjc2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl8yNzYsIF9fczJfMjc2LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDJfdCBfX3JldF8yNzY7IFwKaW50OHgxNl90IF9fcmVpbnRfMjc2ID0gX19yZXYyXzI3NjsgXAppbnQzMngyX3QgX19yZWludDFfMjc2ID0gX19ub3N3YXBfc3BsYXRfbGFuZXFfczMyKCooaW50MzJ4NF90ICopICZfX3JlaW50XzI3NiwgX19wM18yNzYpOyBcCiAgX19yZXRfMjc2ID0gX19ub3N3YXBfdmRvdF9zMzIoX19yZXYwXzI3NiwgX19yZXYxXzI3NiwgKihpbnQ4eDhfdCAqKSAmX19yZWludDFfMjc2KTsgXAogIF9fcmV0XzI3NiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzI3NiwgX19yZXRfMjc2LCAxLCAwKTsgXAogIF9fcmV0XzI3NjsgXAp9KQojZW5kaWYKCiNlbmRpZgojaWYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX0ZNQSkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMng0X3QgdmZtYXFfZjMyKGZsb2F0MzJ4NF90IF9fcDAsIGZsb2F0MzJ4NF90IF9fcDEsIGZsb2F0MzJ4NF90IF9fcDIpIHsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdmZtYXFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgKGludDh4MTZfdClfX3AyLCA0MSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMng0X3QgdmZtYXFfZjMyKGZsb2F0MzJ4NF90IF9fcDAsIGZsb2F0MzJ4NF90IF9fcDEsIGZsb2F0MzJ4NF90IF9fcDIpIHsKICBmbG9hdDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdmZtYXFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIChpbnQ4eDE2X3QpX19yZXYyLCA0MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MzJ4NF90IF9fbm9zd2FwX3ZmbWFxX2YzMihmbG9hdDMyeDRfdCBfX3AwLCBmbG9hdDMyeDRfdCBfX3AxLCBmbG9hdDMyeDRfdCBfX3AyKSB7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZmbWFxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIChpbnQ4eDE2X3QpX19wMiwgNDEpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4Ml90IHZmbWFfZjMyKGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0MzJ4Ml90IF9fcDEsIGZsb2F0MzJ4Ml90IF9fcDIpIHsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdmZtYV92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgKGludDh4OF90KV9fcDIsIDkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4Ml90IHZmbWFfZjMyKGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0MzJ4Ml90IF9fcDEsIGZsb2F0MzJ4Ml90IF9fcDIpIHsKICBmbG9hdDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBmbG9hdDMyeDJfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAxLCAwKTsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdmZtYV92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIChpbnQ4eDhfdClfX3JldjIsIDkpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDMyeDJfdCBfX25vc3dhcF92Zm1hX2YzMihmbG9hdDMyeDJfdCBfX3AwLCBmbG9hdDMyeDJfdCBfX3AxLCBmbG9hdDMyeDJfdCBfX3AyKSB7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZmbWFfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIChpbnQ4eDhfdClfX3AyLCA5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDRfdCB2Zm1hcV9uX2YzMihmbG9hdDMyeDRfdCBfX3AwLCBmbG9hdDMyeDRfdCBfX3AxLCBmbG9hdDMyX3QgX19wMikgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gdmZtYXFfZjMyKF9fcDAsIF9fcDEsIChmbG9hdDMyeDRfdCkge19fcDIsIF9fcDIsIF9fcDIsIF9fcDJ9KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDRfdCB2Zm1hcV9uX2YzMihmbG9hdDMyeDRfdCBfX3AwLCBmbG9hdDMyeDRfdCBfX3AxLCBmbG9hdDMyX3QgX19wMikgewogIGZsb2F0MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdmZtYXFfZjMyKF9fcmV2MCwgX19yZXYxLCAoZmxvYXQzMng0X3QpIHtfX3AyLCBfX3AyLCBfX3AyLCBfX3AyfSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4Ml90IHZmbWFfbl9mMzIoZmxvYXQzMngyX3QgX19wMCwgZmxvYXQzMngyX3QgX19wMSwgZmxvYXQzMl90IF9fcDIpIHsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IHZmbWFfZjMyKF9fcDAsIF9fcDEsIChmbG9hdDMyeDJfdCkge19fcDIsIF9fcDJ9KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDJfdCB2Zm1hX25fZjMyKGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0MzJ4Ml90IF9fcDEsIGZsb2F0MzJfdCBfX3AyKSB7CiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92Zm1hX2YzMihfX3JldjAsIF9fcmV2MSwgKGZsb2F0MzJ4Ml90KSB7X19wMiwgX19wMn0pOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDRfdCB2Zm1zcV9mMzIoZmxvYXQzMng0X3QgX19wMCwgZmxvYXQzMng0X3QgX19wMSwgZmxvYXQzMng0X3QgX19wMikgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gdmZtYXFfZjMyKF9fcDAsIC1fX3AxLCBfX3AyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDRfdCB2Zm1zcV9mMzIoZmxvYXQzMng0X3QgX19wMCwgZmxvYXQzMng0X3QgX19wMSwgZmxvYXQzMng0X3QgX19wMikgewogIGZsb2F0MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGZsb2F0MzJ4NF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDMsIDIsIDEsIDApOwogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdmZtYXFfZjMyKF9fcmV2MCwgLV9fcmV2MSwgX19yZXYyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMngyX3QgdmZtc19mMzIoZmxvYXQzMngyX3QgX19wMCwgZmxvYXQzMngyX3QgX19wMSwgZmxvYXQzMngyX3QgX19wMikgewogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gdmZtYV9mMzIoX19wMCwgLV9fcDEsIF9fcDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4Ml90IHZmbXNfZjMyKGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0MzJ4Ml90IF9fcDEsIGZsb2F0MzJ4Ml90IF9fcDIpIHsKICBmbG9hdDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBmbG9hdDMyeDJfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAxLCAwKTsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3ZmbWFfZjMyKF9fcmV2MCwgLV9fcmV2MSwgX19yZXYyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2VuZGlmCiNpZiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfRlAxNl9GTUwpICYmIGRlZmluZWQoX19hYXJjaDY0X18pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4NF90IHZmbWxhbHFfaGlnaF9mMTYoZmxvYXQzMng0X3QgX19wMCwgZmxvYXQxNng4X3QgX19wMSwgZmxvYXQxNng4X3QgX19wMikgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92Zm1sYWxxX2hpZ2hfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgKGludDh4MTZfdClfX3AyLCA0MSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMng0X3QgdmZtbGFscV9oaWdoX2YxNihmbG9hdDMyeDRfdCBfX3AwLCBmbG9hdDE2eDhfdCBfX3AxLCBmbG9hdDE2eDhfdCBfX3AyKSB7CiAgZmxvYXQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng4X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZmbWxhbHFfaGlnaF92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgKGludDh4MTZfdClfX3JldjIsIDQxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQzMng0X3QgX19ub3N3YXBfdmZtbGFscV9oaWdoX2YxNihmbG9hdDMyeDRfdCBfX3AwLCBmbG9hdDE2eDhfdCBfX3AxLCBmbG9hdDE2eDhfdCBfX3AyKSB7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZmbWxhbHFfaGlnaF92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAoaW50OHgxNl90KV9fcDIsIDQxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDJfdCB2Zm1sYWxfaGlnaF9mMTYoZmxvYXQzMngyX3QgX19wMCwgZmxvYXQxNng0X3QgX19wMSwgZmxvYXQxNng0X3QgX19wMikgewogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92Zm1sYWxfaGlnaF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgKGludDh4OF90KV9fcDIsIDkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4Ml90IHZmbWxhbF9oaWdoX2YxNihmbG9hdDMyeDJfdCBfX3AwLCBmbG9hdDE2eDRfdCBfX3AxLCBmbG9hdDE2eDRfdCBfX3AyKSB7CiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng0X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZmbWxhbF9oaWdoX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgKGludDh4OF90KV9fcmV2MiwgOSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MzJ4Ml90IF9fbm9zd2FwX3ZmbWxhbF9oaWdoX2YxNihmbG9hdDMyeDJfdCBfX3AwLCBmbG9hdDE2eDRfdCBfX3AxLCBmbG9hdDE2eDRfdCBfX3AyKSB7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZmbWxhbF9oaWdoX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAoaW50OHg4X3QpX19wMiwgOSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMng0X3QgdmZtbGFscV9sb3dfZjE2KGZsb2F0MzJ4NF90IF9fcDAsIGZsb2F0MTZ4OF90IF9fcDEsIGZsb2F0MTZ4OF90IF9fcDIpIHsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdmZtbGFscV9sb3dfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgKGludDh4MTZfdClfX3AyLCA0MSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMng0X3QgdmZtbGFscV9sb3dfZjE2KGZsb2F0MzJ4NF90IF9fcDAsIGZsb2F0MTZ4OF90IF9fcDEsIGZsb2F0MTZ4OF90IF9fcDIpIHsKICBmbG9hdDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDhfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdmZtbGFscV9sb3dfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIChpbnQ4eDE2X3QpX19yZXYyLCA0MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MzJ4NF90IF9fbm9zd2FwX3ZmbWxhbHFfbG93X2YxNihmbG9hdDMyeDRfdCBfX3AwLCBmbG9hdDE2eDhfdCBfX3AxLCBmbG9hdDE2eDhfdCBfX3AyKSB7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZmbWxhbHFfbG93X3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIChpbnQ4eDE2X3QpX19wMiwgNDEpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4Ml90IHZmbWxhbF9sb3dfZjE2KGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0MTZ4NF90IF9fcDEsIGZsb2F0MTZ4NF90IF9fcDIpIHsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdmZtbGFsX2xvd192KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgKGludDh4OF90KV9fcDIsIDkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4Ml90IHZmbWxhbF9sb3dfZjE2KGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0MTZ4NF90IF9fcDEsIGZsb2F0MTZ4NF90IF9fcDIpIHsKICBmbG9hdDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDRfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdmZtbGFsX2xvd192KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIChpbnQ4eDhfdClfX3JldjIsIDkpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDMyeDJfdCBfX25vc3dhcF92Zm1sYWxfbG93X2YxNihmbG9hdDMyeDJfdCBfX3AwLCBmbG9hdDE2eDRfdCBfX3AxLCBmbG9hdDE2eDRfdCBfX3AyKSB7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZmbWxhbF9sb3dfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIChpbnQ4eDhfdClfX3AyLCA5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDRfdCB2Zm1sc2xxX2hpZ2hfZjE2KGZsb2F0MzJ4NF90IF9fcDAsIGZsb2F0MTZ4OF90IF9fcDEsIGZsb2F0MTZ4OF90IF9fcDIpIHsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdmZtbHNscV9oaWdoX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIChpbnQ4eDE2X3QpX19wMiwgNDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4NF90IHZmbWxzbHFfaGlnaF9mMTYoZmxvYXQzMng0X3QgX19wMCwgZmxvYXQxNng4X3QgX19wMSwgZmxvYXQxNng4X3QgX19wMikgewogIGZsb2F0MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4OF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92Zm1sc2xxX2hpZ2hfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIChpbnQ4eDE2X3QpX19yZXYyLCA0MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MzJ4NF90IF9fbm9zd2FwX3ZmbWxzbHFfaGlnaF9mMTYoZmxvYXQzMng0X3QgX19wMCwgZmxvYXQxNng4X3QgX19wMSwgZmxvYXQxNng4X3QgX19wMikgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92Zm1sc2xxX2hpZ2hfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgKGludDh4MTZfdClfX3AyLCA0MSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMngyX3QgdmZtbHNsX2hpZ2hfZjE2KGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0MTZ4NF90IF9fcDEsIGZsb2F0MTZ4NF90IF9fcDIpIHsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdmZtbHNsX2hpZ2hfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIChpbnQ4eDhfdClfX3AyLCA5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDJfdCB2Zm1sc2xfaGlnaF9mMTYoZmxvYXQzMngyX3QgX19wMCwgZmxvYXQxNng0X3QgX19wMSwgZmxvYXQxNng0X3QgX19wMikgewogIGZsb2F0MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4NF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDMsIDIsIDEsIDApOwogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92Zm1sc2xfaGlnaF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIChpbnQ4eDhfdClfX3JldjIsIDkpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDMyeDJfdCBfX25vc3dhcF92Zm1sc2xfaGlnaF9mMTYoZmxvYXQzMngyX3QgX19wMCwgZmxvYXQxNng0X3QgX19wMSwgZmxvYXQxNng0X3QgX19wMikgewogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92Zm1sc2xfaGlnaF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgKGludDh4OF90KV9fcDIsIDkpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4NF90IHZmbWxzbHFfbG93X2YxNihmbG9hdDMyeDRfdCBfX3AwLCBmbG9hdDE2eDhfdCBfX3AxLCBmbG9hdDE2eDhfdCBfX3AyKSB7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZmbWxzbHFfbG93X3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIChpbnQ4eDE2X3QpX19wMiwgNDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4NF90IHZmbWxzbHFfbG93X2YxNihmbG9hdDMyeDRfdCBfX3AwLCBmbG9hdDE2eDhfdCBfX3AxLCBmbG9hdDE2eDhfdCBfX3AyKSB7CiAgZmxvYXQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng4X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZmbWxzbHFfbG93X3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAoaW50OHgxNl90KV9fcmV2MiwgNDEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDMyeDRfdCBfX25vc3dhcF92Zm1sc2xxX2xvd19mMTYoZmxvYXQzMng0X3QgX19wMCwgZmxvYXQxNng4X3QgX19wMSwgZmxvYXQxNng4X3QgX19wMikgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92Zm1sc2xxX2xvd192KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAoaW50OHgxNl90KV9fcDIsIDQxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDJfdCB2Zm1sc2xfbG93X2YxNihmbG9hdDMyeDJfdCBfX3AwLCBmbG9hdDE2eDRfdCBfX3AxLCBmbG9hdDE2eDRfdCBfX3AyKSB7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZmbWxzbF9sb3dfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIChpbnQ4eDhfdClfX3AyLCA5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDJfdCB2Zm1sc2xfbG93X2YxNihmbG9hdDMyeDJfdCBfX3AwLCBmbG9hdDE2eDRfdCBfX3AxLCBmbG9hdDE2eDRfdCBfX3AyKSB7CiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng0X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZmbWxzbF9sb3dfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAoaW50OHg4X3QpX19yZXYyLCA5KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQzMngyX3QgX19ub3N3YXBfdmZtbHNsX2xvd19mMTYoZmxvYXQzMngyX3QgX19wMCwgZmxvYXQxNng0X3QgX19wMSwgZmxvYXQxNng0X3QgX19wMikgewogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92Zm1sc2xfbG93X3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAoaW50OHg4X3QpX19wMiwgOSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2VuZGlmCiNpZiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfRlAxNl9WRUNUT1JfQVJJVEhNRVRJQykKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQxNng4X3QgdmFiZHFfZjE2KGZsb2F0MTZ4OF90IF9fcDAsIGZsb2F0MTZ4OF90IF9fcDEpIHsKICBmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDhfdCkgX19idWlsdGluX25lb25fdmFiZHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MTZ4OF90IHZhYmRxX2YxNihmbG9hdDE2eDhfdCBfX3AwLCBmbG9hdDE2eDhfdCBfX3AxKSB7CiAgZmxvYXQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZhYmRxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA0MCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MTZ4NF90IHZhYmRfZjE2KGZsb2F0MTZ4NF90IF9fcDAsIGZsb2F0MTZ4NF90IF9fcDEpIHsKICBmbG9hdDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDRfdCkgX19idWlsdGluX25lb25fdmFiZF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgOCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQxNng0X3QgdmFiZF9mMTYoZmxvYXQxNng0X3QgX19wMCwgZmxvYXQxNng0X3QgX19wMSkgewogIGZsb2F0MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92YWJkX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgOCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MTZ4OF90IHZhYnNxX2YxNihmbG9hdDE2eDhfdCBfX3AwKSB7CiAgZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZhYnNxX3YoKGludDh4MTZfdClfX3AwLCA0MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQxNng4X3QgdmFic3FfZjE2KGZsb2F0MTZ4OF90IF9fcDApIHsKICBmbG9hdDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDhfdCkgX19idWlsdGluX25lb25fdmFic3FfdigoaW50OHgxNl90KV9fcmV2MCwgNDApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDE2eDRfdCB2YWJzX2YxNihmbG9hdDE2eDRfdCBfX3AwKSB7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZhYnNfdigoaW50OHg4X3QpX19wMCwgOCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQxNng0X3QgdmFic19mMTYoZmxvYXQxNng0X3QgX19wMCkgewogIGZsb2F0MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92YWJzX3YoKGludDh4OF90KV9fcmV2MCwgOCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MTZ4OF90IHZhZGRxX2YxNihmbG9hdDE2eDhfdCBfX3AwLCBmbG9hdDE2eDhfdCBfX3AxKSB7CiAgZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICsgX19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDE2eDhfdCB2YWRkcV9mMTYoZmxvYXQxNng4X3QgX19wMCwgZmxvYXQxNng4X3QgX19wMSkgewogIGZsb2F0MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICsgX19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDE2eDRfdCB2YWRkX2YxNihmbG9hdDE2eDRfdCBfX3AwLCBmbG9hdDE2eDRfdCBfX3AxKSB7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICsgX19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDE2eDRfdCB2YWRkX2YxNihmbG9hdDE2eDRfdCBfX3AwLCBmbG9hdDE2eDRfdCBfX3AxKSB7CiAgZmxvYXQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgKyBfX3JldjE7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MTZ4OF90IHZic2xxX2YxNih1aW50MTZ4OF90IF9fcDAsIGZsb2F0MTZ4OF90IF9fcDEsIGZsb2F0MTZ4OF90IF9fcDIpIHsKICBmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDhfdCkgX19idWlsdGluX25lb25fdmJzbHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgKGludDh4MTZfdClfX3AyLCA0MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQxNng4X3QgdmJzbHFfZjE2KHVpbnQxNng4X3QgX19wMCwgZmxvYXQxNng4X3QgX19wMSwgZmxvYXQxNng4X3QgX19wMikgewogIHVpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng4X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3Zic2xxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAoaW50OHgxNl90KV9fcmV2MiwgNDApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDE2eDRfdCB2YnNsX2YxNih1aW50MTZ4NF90IF9fcDAsIGZsb2F0MTZ4NF90IF9fcDEsIGZsb2F0MTZ4NF90IF9fcDIpIHsKICBmbG9hdDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDRfdCkgX19idWlsdGluX25lb25fdmJzbF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgKGludDh4OF90KV9fcDIsIDgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MTZ4NF90IHZic2xfZjE2KHVpbnQxNng0X3QgX19wMCwgZmxvYXQxNng0X3QgX19wMSwgZmxvYXQxNng0X3QgX19wMikgewogIHVpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng0X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3Zic2xfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAoaW50OHg4X3QpX19yZXYyLCA4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDhfdCB2Y2FnZXFfZjE2KGZsb2F0MTZ4OF90IF9fcDAsIGZsb2F0MTZ4OF90IF9fcDEpIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjYWdlcV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA0OSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDhfdCB2Y2FnZXFfZjE2KGZsb2F0MTZ4OF90IF9fcDAsIGZsb2F0MTZ4OF90IF9fcDEpIHsKICBmbG9hdDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjYWdlcV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNDkpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4NF90IHZjYWdlX2YxNihmbG9hdDE2eDRfdCBfX3AwLCBmbG9hdDE2eDRfdCBfX3AxKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y2FnZV92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMTcpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng0X3QgdmNhZ2VfZjE2KGZsb2F0MTZ4NF90IF9fcDAsIGZsb2F0MTZ4NF90IF9fcDEpIHsKICBmbG9hdDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjYWdlX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMTcpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4OF90IHZjYWd0cV9mMTYoZmxvYXQxNng4X3QgX19wMCwgZmxvYXQxNng4X3QgX19wMSkgewogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkgX19idWlsdGluX25lb25fdmNhZ3RxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDQ5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4OF90IHZjYWd0cV9mMTYoZmxvYXQxNng4X3QgX19wMCwgZmxvYXQxNng4X3QgX19wMSkgewogIGZsb2F0MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkgX19idWlsdGluX25lb25fdmNhZ3RxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA0OSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng0X3QgdmNhZ3RfZjE2KGZsb2F0MTZ4NF90IF9fcDAsIGZsb2F0MTZ4NF90IF9fcDEpIHsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjYWd0X3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAxNyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDRfdCB2Y2FndF9mMTYoZmxvYXQxNng0X3QgX19wMCwgZmxvYXQxNng0X3QgX19wMSkgewogIGZsb2F0MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdmNhZ3RfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAxNyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng4X3QgdmNhbGVxX2YxNihmbG9hdDE2eDhfdCBfX3AwLCBmbG9hdDE2eDhfdCBfX3AxKSB7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92Y2FsZXFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNDkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng4X3QgdmNhbGVxX2YxNihmbG9hdDE2eDhfdCBfX3AwLCBmbG9hdDE2eDhfdCBfX3AxKSB7CiAgZmxvYXQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92Y2FsZXFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDQ5KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDRfdCB2Y2FsZV9mMTYoZmxvYXQxNng0X3QgX19wMCwgZmxvYXQxNng0X3QgX19wMSkgewogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdmNhbGVfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDE3KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4NF90IHZjYWxlX2YxNihmbG9hdDE2eDRfdCBfX3AwLCBmbG9hdDE2eDRfdCBfX3AxKSB7CiAgZmxvYXQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y2FsZV92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDE3KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDhfdCB2Y2FsdHFfZjE2KGZsb2F0MTZ4OF90IF9fcDAsIGZsb2F0MTZ4OF90IF9fcDEpIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjYWx0cV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA0OSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDhfdCB2Y2FsdHFfZjE2KGZsb2F0MTZ4OF90IF9fcDAsIGZsb2F0MTZ4OF90IF9fcDEpIHsKICBmbG9hdDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjYWx0cV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNDkpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4NF90IHZjYWx0X2YxNihmbG9hdDE2eDRfdCBfX3AwLCBmbG9hdDE2eDRfdCBfX3AxKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y2FsdF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMTcpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng0X3QgdmNhbHRfZjE2KGZsb2F0MTZ4NF90IF9fcDAsIGZsb2F0MTZ4NF90IF9fcDEpIHsKICBmbG9hdDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjYWx0X3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMTcpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4OF90IHZjZXFxX2YxNihmbG9hdDE2eDhfdCBfX3AwLCBmbG9hdDE2eDhfdCBfX3AxKSB7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KShfX3AwID09IF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng4X3QgdmNlcXFfZjE2KGZsb2F0MTZ4OF90IF9fcDAsIGZsb2F0MTZ4OF90IF9fcDEpIHsKICBmbG9hdDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpKF9fcmV2MCA9PSBfX3JldjEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4NF90IHZjZXFfZjE2KGZsb2F0MTZ4NF90IF9fcDAsIGZsb2F0MTZ4NF90IF9fcDEpIHsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpKF9fcDAgPT0gX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDRfdCB2Y2VxX2YxNihmbG9hdDE2eDRfdCBfX3AwLCBmbG9hdDE2eDRfdCBfX3AxKSB7CiAgZmxvYXQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KShfX3JldjAgPT0gX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDhfdCB2Y2VxenFfZjE2KGZsb2F0MTZ4OF90IF9fcDApIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjZXF6cV92KChpbnQ4eDE2X3QpX19wMCwgNDkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng4X3QgdmNlcXpxX2YxNihmbG9hdDE2eDhfdCBfX3AwKSB7CiAgZmxvYXQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92Y2VxenFfdigoaW50OHgxNl90KV9fcmV2MCwgNDkpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4NF90IHZjZXF6X2YxNihmbG9hdDE2eDRfdCBfX3AwKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y2Vxel92KChpbnQ4eDhfdClfX3AwLCAxNyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDRfdCB2Y2Vxel9mMTYoZmxvYXQxNng0X3QgX19wMCkgewogIGZsb2F0MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdmNlcXpfdigoaW50OHg4X3QpX19yZXYwLCAxNyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng4X3QgdmNnZXFfZjE2KGZsb2F0MTZ4OF90IF9fcDAsIGZsb2F0MTZ4OF90IF9fcDEpIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpKF9fcDAgPj0gX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDhfdCB2Y2dlcV9mMTYoZmxvYXQxNng4X3QgX19wMCwgZmxvYXQxNng4X3QgX19wMSkgewogIGZsb2F0MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkoX19yZXYwID49IF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng0X3QgdmNnZV9mMTYoZmxvYXQxNng0X3QgX19wMCwgZmxvYXQxNng0X3QgX19wMSkgewogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkoX19wMCA+PSBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4NF90IHZjZ2VfZjE2KGZsb2F0MTZ4NF90IF9fcDAsIGZsb2F0MTZ4NF90IF9fcDEpIHsKICBmbG9hdDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpKF9fcmV2MCA+PSBfX3JldjEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4OF90IHZjZ2V6cV9mMTYoZmxvYXQxNng4X3QgX19wMCkgewogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkgX19idWlsdGluX25lb25fdmNnZXpxX3YoKGludDh4MTZfdClfX3AwLCA0OSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDhfdCB2Y2dlenFfZjE2KGZsb2F0MTZ4OF90IF9fcDApIHsKICBmbG9hdDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjZ2V6cV92KChpbnQ4eDE2X3QpX19yZXYwLCA0OSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng0X3QgdmNnZXpfZjE2KGZsb2F0MTZ4NF90IF9fcDApIHsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjZ2V6X3YoKGludDh4OF90KV9fcDAsIDE3KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4NF90IHZjZ2V6X2YxNihmbG9hdDE2eDRfdCBfX3AwKSB7CiAgZmxvYXQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y2dlel92KChpbnQ4eDhfdClfX3JldjAsIDE3KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDhfdCB2Y2d0cV9mMTYoZmxvYXQxNng4X3QgX19wMCwgZmxvYXQxNng4X3QgX19wMSkgewogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkoX19wMCA+IF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng4X3QgdmNndHFfZjE2KGZsb2F0MTZ4OF90IF9fcDAsIGZsb2F0MTZ4OF90IF9fcDEpIHsKICBmbG9hdDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpKF9fcmV2MCA+IF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng0X3QgdmNndF9mMTYoZmxvYXQxNng0X3QgX19wMCwgZmxvYXQxNng0X3QgX19wMSkgewogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkoX19wMCA+IF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng0X3QgdmNndF9mMTYoZmxvYXQxNng0X3QgX19wMCwgZmxvYXQxNng0X3QgX19wMSkgewogIGZsb2F0MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkoX19yZXYwID4gX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDhfdCB2Y2d0enFfZjE2KGZsb2F0MTZ4OF90IF9fcDApIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjZ3R6cV92KChpbnQ4eDE2X3QpX19wMCwgNDkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng4X3QgdmNndHpxX2YxNihmbG9hdDE2eDhfdCBfX3AwKSB7CiAgZmxvYXQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92Y2d0enFfdigoaW50OHgxNl90KV9fcmV2MCwgNDkpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4NF90IHZjZ3R6X2YxNihmbG9hdDE2eDRfdCBfX3AwKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y2d0el92KChpbnQ4eDhfdClfX3AwLCAxNyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDRfdCB2Y2d0el9mMTYoZmxvYXQxNng0X3QgX19wMCkgewogIGZsb2F0MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdmNndHpfdigoaW50OHg4X3QpX19yZXYwLCAxNyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng4X3QgdmNsZXFfZjE2KGZsb2F0MTZ4OF90IF9fcDAsIGZsb2F0MTZ4OF90IF9fcDEpIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpKF9fcDAgPD0gX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDhfdCB2Y2xlcV9mMTYoZmxvYXQxNng4X3QgX19wMCwgZmxvYXQxNng4X3QgX19wMSkgewogIGZsb2F0MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkoX19yZXYwIDw9IF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng0X3QgdmNsZV9mMTYoZmxvYXQxNng0X3QgX19wMCwgZmxvYXQxNng0X3QgX19wMSkgewogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkoX19wMCA8PSBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4NF90IHZjbGVfZjE2KGZsb2F0MTZ4NF90IF9fcDAsIGZsb2F0MTZ4NF90IF9fcDEpIHsKICBmbG9hdDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpKF9fcmV2MCA8PSBfX3JldjEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4OF90IHZjbGV6cV9mMTYoZmxvYXQxNng4X3QgX19wMCkgewogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkgX19idWlsdGluX25lb25fdmNsZXpxX3YoKGludDh4MTZfdClfX3AwLCA0OSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDhfdCB2Y2xlenFfZjE2KGZsb2F0MTZ4OF90IF9fcDApIHsKICBmbG9hdDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbGV6cV92KChpbnQ4eDE2X3QpX19yZXYwLCA0OSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng0X3QgdmNsZXpfZjE2KGZsb2F0MTZ4NF90IF9fcDApIHsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbGV6X3YoKGludDh4OF90KV9fcDAsIDE3KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4NF90IHZjbGV6X2YxNihmbG9hdDE2eDRfdCBfX3AwKSB7CiAgZmxvYXQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y2xlel92KChpbnQ4eDhfdClfX3JldjAsIDE3KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDhfdCB2Y2x0cV9mMTYoZmxvYXQxNng4X3QgX19wMCwgZmxvYXQxNng4X3QgX19wMSkgewogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkoX19wMCA8IF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng4X3QgdmNsdHFfZjE2KGZsb2F0MTZ4OF90IF9fcDAsIGZsb2F0MTZ4OF90IF9fcDEpIHsKICBmbG9hdDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpKF9fcmV2MCA8IF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng0X3QgdmNsdF9mMTYoZmxvYXQxNng0X3QgX19wMCwgZmxvYXQxNng0X3QgX19wMSkgewogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkoX19wMCA8IF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng0X3QgdmNsdF9mMTYoZmxvYXQxNng0X3QgX19wMCwgZmxvYXQxNng0X3QgX19wMSkgewogIGZsb2F0MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkoX19yZXYwIDwgX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDhfdCB2Y2x0enFfZjE2KGZsb2F0MTZ4OF90IF9fcDApIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbHR6cV92KChpbnQ4eDE2X3QpX19wMCwgNDkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng4X3QgdmNsdHpxX2YxNihmbG9hdDE2eDhfdCBfX3AwKSB7CiAgZmxvYXQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92Y2x0enFfdigoaW50OHgxNl90KV9fcmV2MCwgNDkpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4NF90IHZjbHR6X2YxNihmbG9hdDE2eDRfdCBfX3AwKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y2x0el92KChpbnQ4eDhfdClfX3AwLCAxNyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDRfdCB2Y2x0el9mMTYoZmxvYXQxNng0X3QgX19wMCkgewogIGZsb2F0MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdmNsdHpfdigoaW50OHg4X3QpX19yZXYwLCAxNyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MTZ4OF90IHZjdnRxX2YxNl91MTYodWludDE2eDhfdCBfX3AwKSB7CiAgZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRxX2YxNl92KChpbnQ4eDE2X3QpX19wMCwgNDkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MTZ4OF90IHZjdnRxX2YxNl91MTYodWludDE2eDhfdCBfX3AwKSB7CiAgdWludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDhfdCkgX19idWlsdGluX25lb25fdmN2dHFfZjE2X3YoKGludDh4MTZfdClfX3JldjAsIDQ5KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQxNng4X3QgdmN2dHFfZjE2X3MxNihpbnQxNng4X3QgX19wMCkgewogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0cV9mMTZfdigoaW50OHgxNl90KV9fcDAsIDMzKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDE2eDhfdCB2Y3Z0cV9mMTZfczE2KGludDE2eDhfdCBfX3AwKSB7CiAgaW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0cV9mMTZfdigoaW50OHgxNl90KV9fcmV2MCwgMzMpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDE2eDRfdCB2Y3Z0X2YxNl91MTYodWludDE2eDRfdCBfX3AwKSB7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRfZjE2X3YoKGludDh4OF90KV9fcDAsIDE3KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDE2eDRfdCB2Y3Z0X2YxNl91MTYodWludDE2eDRfdCBfX3AwKSB7CiAgdWludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDRfdCkgX19idWlsdGluX25lb25fdmN2dF9mMTZfdigoaW50OHg4X3QpX19yZXYwLCAxNyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MTZ4NF90IHZjdnRfZjE2X3MxNihpbnQxNng0X3QgX19wMCkgewogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0X2YxNl92KChpbnQ4eDhfdClfX3AwLCAxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDE2eDRfdCB2Y3Z0X2YxNl9zMTYoaW50MTZ4NF90IF9fcDApIHsKICBpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRfZjE2X3YoKGludDh4OF90KV9fcmV2MCwgMSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZjdnRxX25fZjE2X3UxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDE2eDhfdCkgX19idWlsdGluX25lb25fdmN2dHFfbl9mMTZfdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDQ5KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmN2dHFfbl9mMTZfdTE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng4X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDE2eDhfdCkgX19idWlsdGluX25lb25fdmN2dHFfbl9mMTZfdigoaW50OHgxNl90KV9fcmV2MCwgX19wMSwgNDkpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Y3Z0cV9uX2YxNl9zMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDE2eDhfdCkgX19idWlsdGluX25lb25fdmN2dHFfbl9mMTZfdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDMzKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmN2dHFfbl9mMTZfczE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDhfdCBfX3MwID0gX19wMDsgXAogIGludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRxX25fZjE2X3YoKGludDh4MTZfdClfX3JldjAsIF9fcDEsIDMzKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmN2dF9uX2YxNl91MTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDRfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRfbl9mMTZfdigoaW50OHg4X3QpX19zMCwgX19wMSwgMTcpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Y3Z0X25fZjE2X3UxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4NF90IF9fczAgPSBfX3AwOyBcCiAgdWludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRfbl9mMTZfdigoaW50OHg4X3QpX19yZXYwLCBfX3AxLCAxNyk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZjdnRfbl9mMTZfczE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDRfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRfbl9mMTZfdigoaW50OHg4X3QpX19zMCwgX19wMSwgMSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZjdnRfbl9mMTZfczE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDRfdCBfX3MwID0gX19wMDsgXAogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRfbl9mMTZfdigoaW50OHg4X3QpX19yZXYwLCBfX3AxLCAxKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmN2dHFfbl9zMTZfZjE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgaW50MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0cV9uX3MxNl92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgMzMpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Y3Z0cV9uX3MxNl9mMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDE2eDhfdCkgX19idWlsdGluX25lb25fdmN2dHFfbl9zMTZfdigoaW50OHgxNl90KV9fcmV2MCwgX19wMSwgMzMpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Y3Z0X25fczE2X2YxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDRfdCBfX3MwID0gX19wMDsgXAogIGludDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdmN2dF9uX3MxNl92KChpbnQ4eDhfdClfX3MwLCBfX3AxLCAxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmN2dF9uX3MxNl9mMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng0X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdmN2dF9uX3MxNl92KChpbnQ4eDhfdClfX3JldjAsIF9fcDEsIDEpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Y3Z0cV9uX3UxNl9mMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDE2eDhfdCkgX19idWlsdGluX25lb25fdmN2dHFfbl91MTZfdigoaW50OHgxNl90KV9fczAsIF9fcDEsIDQ5KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmN2dHFfbl91MTZfZjE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDE2eDhfdCkgX19idWlsdGluX25lb25fdmN2dHFfbl91MTZfdigoaW50OHgxNl90KV9fcmV2MCwgX19wMSwgNDkpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Y3Z0X25fdTE2X2YxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDRfdCBfX3MwID0gX19wMDsgXAogIHVpbnQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0X25fdTE2X3YoKGludDh4OF90KV9fczAsIF9fcDEsIDE3KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmN2dF9uX3UxNl9mMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng0X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAzLCAyLCAxLCAwKTsgXAogIHVpbnQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0X25fdTE2X3YoKGludDh4OF90KV9fcmV2MCwgX19wMSwgMTcpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng4X3QgdmN2dHFfczE2X2YxNihmbG9hdDE2eDhfdCBfX3AwKSB7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDhfdCkgX19idWlsdGluX25lb25fdmN2dHFfczE2X3YoKGludDh4MTZfdClfX3AwLCAzMyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4OF90IHZjdnRxX3MxNl9mMTYoZmxvYXQxNng4X3QgX19wMCkgewogIGZsb2F0MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRxX3MxNl92KChpbnQ4eDE2X3QpX19yZXYwLCAzMyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDRfdCB2Y3Z0X3MxNl9mMTYoZmxvYXQxNng0X3QgX19wMCkgewogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRfczE2X3YoKGludDh4OF90KV9fcDAsIDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDRfdCB2Y3Z0X3MxNl9mMTYoZmxvYXQxNng0X3QgX19wMCkgewogIGZsb2F0MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRfczE2X3YoKGludDh4OF90KV9fcmV2MCwgMSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng4X3QgdmN2dHFfdTE2X2YxNihmbG9hdDE2eDhfdCBfX3AwKSB7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0cV91MTZfdigoaW50OHgxNl90KV9fcDAsIDQ5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4OF90IHZjdnRxX3UxNl9mMTYoZmxvYXQxNng4X3QgX19wMCkgewogIGZsb2F0MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkgX19idWlsdGluX25lb25fdmN2dHFfdTE2X3YoKGludDh4MTZfdClfX3JldjAsIDQ5KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDRfdCB2Y3Z0X3UxNl9mMTYoZmxvYXQxNng0X3QgX19wMCkgewogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdmN2dF91MTZfdigoaW50OHg4X3QpX19wMCwgMTcpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng0X3QgdmN2dF91MTZfZjE2KGZsb2F0MTZ4NF90IF9fcDApIHsKICBmbG9hdDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRfdTE2X3YoKGludDh4OF90KV9fcmV2MCwgMTcpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng4X3QgdmN2dGFxX3MxNl9mMTYoZmxvYXQxNng4X3QgX19wMCkgewogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRhcV9zMTZfdigoaW50OHgxNl90KV9fcDAsIDMzKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng4X3QgdmN2dGFxX3MxNl9mMTYoZmxvYXQxNng4X3QgX19wMCkgewogIGZsb2F0MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRhcV9zMTZfdigoaW50OHgxNl90KV9fcmV2MCwgMzMpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng0X3QgdmN2dGFfczE2X2YxNihmbG9hdDE2eDRfdCBfX3AwKSB7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdmN2dGFfczE2X3YoKGludDh4OF90KV9fcDAsIDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDRfdCB2Y3Z0YV9zMTZfZjE2KGZsb2F0MTZ4NF90IF9fcDApIHsKICBmbG9hdDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0YV9zMTZfdigoaW50OHg4X3QpX19yZXYwLCAxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDhfdCB2Y3Z0YXFfdTE2X2YxNihmbG9hdDE2eDhfdCBfX3AwKSB7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0YXFfdTE2X3YoKGludDh4MTZfdClfX3AwLCA0OSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDhfdCB2Y3Z0YXFfdTE2X2YxNihmbG9hdDE2eDhfdCBfX3AwKSB7CiAgZmxvYXQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0YXFfdTE2X3YoKGludDh4MTZfdClfX3JldjAsIDQ5KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDRfdCB2Y3Z0YV91MTZfZjE2KGZsb2F0MTZ4NF90IF9fcDApIHsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRhX3UxNl92KChpbnQ4eDhfdClfX3AwLCAxNyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDRfdCB2Y3Z0YV91MTZfZjE2KGZsb2F0MTZ4NF90IF9fcDApIHsKICBmbG9hdDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRhX3UxNl92KChpbnQ4eDhfdClfX3JldjAsIDE3KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZ4OF90IHZjdnRtcV9zMTZfZjE2KGZsb2F0MTZ4OF90IF9fcDApIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0bXFfczE2X3YoKGludDh4MTZfdClfX3AwLCAzMyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4OF90IHZjdnRtcV9zMTZfZjE2KGZsb2F0MTZ4OF90IF9fcDApIHsKICBmbG9hdDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0bXFfczE2X3YoKGludDh4MTZfdClfX3JldjAsIDMzKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZ4NF90IHZjdnRtX3MxNl9mMTYoZmxvYXQxNng0X3QgX19wMCkgewogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRtX3MxNl92KChpbnQ4eDhfdClfX3AwLCAxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng0X3QgdmN2dG1fczE2X2YxNihmbG9hdDE2eDRfdCBfX3AwKSB7CiAgZmxvYXQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdmN2dG1fczE2X3YoKGludDh4OF90KV9fcmV2MCwgMSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng4X3QgdmN2dG1xX3UxNl9mMTYoZmxvYXQxNng4X3QgX19wMCkgewogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkgX19idWlsdGluX25lb25fdmN2dG1xX3UxNl92KChpbnQ4eDE2X3QpX19wMCwgNDkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng4X3QgdmN2dG1xX3UxNl9mMTYoZmxvYXQxNng4X3QgX19wMCkgewogIGZsb2F0MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkgX19idWlsdGluX25lb25fdmN2dG1xX3UxNl92KChpbnQ4eDE2X3QpX19yZXYwLCA0OSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng0X3QgdmN2dG1fdTE2X2YxNihmbG9hdDE2eDRfdCBfX3AwKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0bV91MTZfdigoaW50OHg4X3QpX19wMCwgMTcpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng0X3QgdmN2dG1fdTE2X2YxNihmbG9hdDE2eDRfdCBfX3AwKSB7CiAgZmxvYXQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0bV91MTZfdigoaW50OHg4X3QpX19yZXYwLCAxNyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDhfdCB2Y3Z0bnFfczE2X2YxNihmbG9hdDE2eDhfdCBfX3AwKSB7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDhfdCkgX19idWlsdGluX25lb25fdmN2dG5xX3MxNl92KChpbnQ4eDE2X3QpX19wMCwgMzMpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDhfdCB2Y3Z0bnFfczE2X2YxNihmbG9hdDE2eDhfdCBfX3AwKSB7CiAgZmxvYXQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDhfdCkgX19idWlsdGluX25lb25fdmN2dG5xX3MxNl92KChpbnQ4eDE2X3QpX19yZXYwLCAzMyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDRfdCB2Y3Z0bl9zMTZfZjE2KGZsb2F0MTZ4NF90IF9fcDApIHsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0bl9zMTZfdigoaW50OHg4X3QpX19wMCwgMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4NF90IHZjdnRuX3MxNl9mMTYoZmxvYXQxNng0X3QgX19wMCkgewogIGZsb2F0MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRuX3MxNl92KChpbnQ4eDhfdClfX3JldjAsIDEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4OF90IHZjdnRucV91MTZfZjE2KGZsb2F0MTZ4OF90IF9fcDApIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRucV91MTZfdigoaW50OHgxNl90KV9fcDAsIDQ5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4OF90IHZjdnRucV91MTZfZjE2KGZsb2F0MTZ4OF90IF9fcDApIHsKICBmbG9hdDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRucV91MTZfdigoaW50OHgxNl90KV9fcmV2MCwgNDkpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4NF90IHZjdnRuX3UxNl9mMTYoZmxvYXQxNng0X3QgX19wMCkgewogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdmN2dG5fdTE2X3YoKGludDh4OF90KV9fcDAsIDE3KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4NF90IHZjdnRuX3UxNl9mMTYoZmxvYXQxNng0X3QgX19wMCkgewogIGZsb2F0MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdmN2dG5fdTE2X3YoKGludDh4OF90KV9fcmV2MCwgMTcpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng4X3QgdmN2dHBxX3MxNl9mMTYoZmxvYXQxNng4X3QgX19wMCkgewogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRwcV9zMTZfdigoaW50OHgxNl90KV9fcDAsIDMzKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng4X3QgdmN2dHBxX3MxNl9mMTYoZmxvYXQxNng4X3QgX19wMCkgewogIGZsb2F0MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRwcV9zMTZfdigoaW50OHgxNl90KV9fcmV2MCwgMzMpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng0X3QgdmN2dHBfczE2X2YxNihmbG9hdDE2eDRfdCBfX3AwKSB7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdmN2dHBfczE2X3YoKGludDh4OF90KV9fcDAsIDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDRfdCB2Y3Z0cF9zMTZfZjE2KGZsb2F0MTZ4NF90IF9fcDApIHsKICBmbG9hdDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0cF9zMTZfdigoaW50OHg4X3QpX19yZXYwLCAxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDhfdCB2Y3Z0cHFfdTE2X2YxNihmbG9hdDE2eDhfdCBfX3AwKSB7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0cHFfdTE2X3YoKGludDh4MTZfdClfX3AwLCA0OSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDhfdCB2Y3Z0cHFfdTE2X2YxNihmbG9hdDE2eDhfdCBfX3AwKSB7CiAgZmxvYXQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0cHFfdTE2X3YoKGludDh4MTZfdClfX3JldjAsIDQ5KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDRfdCB2Y3Z0cF91MTZfZjE2KGZsb2F0MTZ4NF90IF9fcDApIHsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRwX3UxNl92KChpbnQ4eDhfdClfX3AwLCAxNyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDRfdCB2Y3Z0cF91MTZfZjE2KGZsb2F0MTZ4NF90IF9fcDApIHsKICBmbG9hdDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRwX3UxNl92KChpbnQ4eDhfdClfX3JldjAsIDE3KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmV4dHFfZjE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQxNng4X3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDE2eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92ZXh0cV92KChpbnQ4eDE2X3QpX19zMCwgKGludDh4MTZfdClfX3MxLCBfX3AyLCA0MCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZleHRxX2YxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDhfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZ4OF90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZleHRxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCBfX3AyLCA0MCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZleHRfZjE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4NF90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQxNng0X3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92ZXh0X3YoKGludDh4OF90KV9fczAsIChpbnQ4eDhfdClfX3MxLCBfX3AyLCA4KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmV4dF9mMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng0X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2eDRfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92ZXh0X3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgX19wMiwgOCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MTZ4OF90IHZmbWFxX2YxNihmbG9hdDE2eDhfdCBfX3AwLCBmbG9hdDE2eDhfdCBfX3AxLCBmbG9hdDE2eDhfdCBfX3AyKSB7CiAgZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZmbWFxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIChpbnQ4eDE2X3QpX19wMiwgNDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MTZ4OF90IHZmbWFxX2YxNihmbG9hdDE2eDhfdCBfX3AwLCBmbG9hdDE2eDhfdCBfX3AxLCBmbG9hdDE2eDhfdCBfX3AyKSB7CiAgZmxvYXQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng4X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZmbWFxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAoaW50OHgxNl90KV9fcmV2MiwgNDApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDE2eDhfdCBfX25vc3dhcF92Zm1hcV9mMTYoZmxvYXQxNng4X3QgX19wMCwgZmxvYXQxNng4X3QgX19wMSwgZmxvYXQxNng4X3QgX19wMikgewogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92Zm1hcV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAoaW50OHgxNl90KV9fcDIsIDQwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDE2eDRfdCB2Zm1hX2YxNihmbG9hdDE2eDRfdCBfX3AwLCBmbG9hdDE2eDRfdCBfX3AxLCBmbG9hdDE2eDRfdCBfX3AyKSB7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZmbWFfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIChpbnQ4eDhfdClfX3AyLCA4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDE2eDRfdCB2Zm1hX2YxNihmbG9hdDE2eDRfdCBfX3AwLCBmbG9hdDE2eDRfdCBfX3AxLCBmbG9hdDE2eDRfdCBfX3AyKSB7CiAgZmxvYXQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng0X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZmbWFfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAoaW50OHg4X3QpX19yZXYyLCA4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQxNng0X3QgX19ub3N3YXBfdmZtYV9mMTYoZmxvYXQxNng0X3QgX19wMCwgZmxvYXQxNng0X3QgX19wMSwgZmxvYXQxNng0X3QgX19wMikgewogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92Zm1hX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAoaW50OHg4X3QpX19wMiwgOCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQxNng4X3QgdmZtc3FfZjE2KGZsb2F0MTZ4OF90IF9fcDAsIGZsb2F0MTZ4OF90IF9fcDEsIGZsb2F0MTZ4OF90IF9fcDIpIHsKICBmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IHZmbWFxX2YxNihfX3AwLCAtX19wMSwgX19wMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQxNng4X3QgdmZtc3FfZjE2KGZsb2F0MTZ4OF90IF9fcDAsIGZsb2F0MTZ4OF90IF9fcDEsIGZsb2F0MTZ4OF90IF9fcDIpIHsKICBmbG9hdDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDhfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3ZmbWFxX2YxNihfX3JldjAsIC1fX3JldjEsIF9fcmV2Mik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MTZ4NF90IHZmbXNfZjE2KGZsb2F0MTZ4NF90IF9fcDAsIGZsb2F0MTZ4NF90IF9fcDEsIGZsb2F0MTZ4NF90IF9fcDIpIHsKICBmbG9hdDE2eDRfdCBfX3JldDsKICBfX3JldCA9IHZmbWFfZjE2KF9fcDAsIC1fX3AxLCBfX3AyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDE2eDRfdCB2Zm1zX2YxNihmbG9hdDE2eDRfdCBfX3AwLCBmbG9hdDE2eDRfdCBfX3AxLCBmbG9hdDE2eDRfdCBfX3AyKSB7CiAgZmxvYXQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng0X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92Zm1hX2YxNihfX3JldjAsIC1fX3JldjEsIF9fcmV2Mik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MTZ4OF90IHZtYXhxX2YxNihmbG9hdDE2eDhfdCBfX3AwLCBmbG9hdDE2eDhfdCBfX3AxKSB7CiAgZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZtYXhxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDQwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDE2eDhfdCB2bWF4cV9mMTYoZmxvYXQxNng4X3QgX19wMCwgZmxvYXQxNng4X3QgX19wMSkgewogIGZsb2F0MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92bWF4cV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNDApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDE2eDRfdCB2bWF4X2YxNihmbG9hdDE2eDRfdCBfX3AwLCBmbG9hdDE2eDRfdCBfX3AxKSB7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZtYXhfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MTZ4NF90IHZtYXhfZjE2KGZsb2F0MTZ4NF90IF9fcDAsIGZsb2F0MTZ4NF90IF9fcDEpIHsKICBmbG9hdDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDRfdCkgX19idWlsdGluX25lb25fdm1heF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDE2eDhfdCB2bWlucV9mMTYoZmxvYXQxNng4X3QgX19wMCwgZmxvYXQxNng4X3QgX19wMSkgewogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92bWlucV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA0MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQxNng4X3Qgdm1pbnFfZjE2KGZsb2F0MTZ4OF90IF9fcDAsIGZsb2F0MTZ4OF90IF9fcDEpIHsKICBmbG9hdDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDhfdCkgX19idWlsdGluX25lb25fdm1pbnFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDQwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQxNng0X3Qgdm1pbl9mMTYoZmxvYXQxNng0X3QgX19wMCwgZmxvYXQxNng0X3QgX19wMSkgewogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92bWluX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCA4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDE2eDRfdCB2bWluX2YxNihmbG9hdDE2eDRfdCBfX3AwLCBmbG9hdDE2eDRfdCBfX3AxKSB7CiAgZmxvYXQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZtaW5fdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCA4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQxNng4X3Qgdm11bHFfZjE2KGZsb2F0MTZ4OF90IF9fcDAsIGZsb2F0MTZ4OF90IF9fcDEpIHsKICBmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgKiBfX3AxOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MTZ4OF90IHZtdWxxX2YxNihmbG9hdDE2eDhfdCBfX3AwLCBmbG9hdDE2eDhfdCBfX3AxKSB7CiAgZmxvYXQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgKiBfX3JldjE7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MTZ4NF90IHZtdWxfZjE2KGZsb2F0MTZ4NF90IF9fcDAsIGZsb2F0MTZ4NF90IF9fcDEpIHsKICBmbG9hdDE2eDRfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgKiBfX3AxOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MTZ4NF90IHZtdWxfZjE2KGZsb2F0MTZ4NF90IF9fcDAsIGZsb2F0MTZ4NF90IF9fcDEpIHsKICBmbG9hdDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDRfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCAqIF9fcmV2MTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm11bHFfbGFuZV9mMTYoX19wMF8yNzcsIF9fcDFfMjc3LCBfX3AyXzI3NykgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4X3QgX19zMF8yNzcgPSBfX3AwXzI3NzsgXAogIGZsb2F0MTZ4NF90IF9fczFfMjc3ID0gX19wMV8yNzc7IFwKICBmbG9hdDE2eDhfdCBfX3JldF8yNzc7IFwKICBfX3JldF8yNzcgPSBfX3MwXzI3NyAqIHNwbGF0cV9sYW5lX2YxNihfX3MxXzI3NywgX19wMl8yNzcpOyBcCiAgX19yZXRfMjc3OyBcCn0pCiNlbHNlCiNkZWZpbmUgdm11bHFfbGFuZV9mMTYoX19wMF8yNzgsIF9fcDFfMjc4LCBfX3AyXzI3OCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4X3QgX19zMF8yNzggPSBfX3AwXzI3ODsgXAogIGZsb2F0MTZ4NF90IF9fczFfMjc4ID0gX19wMV8yNzg7IFwKICBmbG9hdDE2eDhfdCBfX3JldjBfMjc4OyAgX19yZXYwXzI3OCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfMjc4LCBfX3MwXzI3OCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2eDRfdCBfX3JldjFfMjc4OyAgX19yZXYxXzI3OCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfMjc4LCBfX3MxXzI3OCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2eDhfdCBfX3JldF8yNzg7IFwKICBfX3JldF8yNzggPSBfX3JldjBfMjc4ICogX19ub3N3YXBfc3BsYXRxX2xhbmVfZjE2KF9fcmV2MV8yNzgsIF9fcDJfMjc4KTsgXAogIF9fcmV0XzI3OCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzI3OCwgX19yZXRfMjc4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzI3ODsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtdWxfbGFuZV9mMTYoX19wMF8yNzksIF9fcDFfMjc5LCBfX3AyXzI3OSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng0X3QgX19zMF8yNzkgPSBfX3AwXzI3OTsgXAogIGZsb2F0MTZ4NF90IF9fczFfMjc5ID0gX19wMV8yNzk7IFwKICBmbG9hdDE2eDRfdCBfX3JldF8yNzk7IFwKICBfX3JldF8yNzkgPSBfX3MwXzI3OSAqIHNwbGF0X2xhbmVfZjE2KF9fczFfMjc5LCBfX3AyXzI3OSk7IFwKICBfX3JldF8yNzk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bXVsX2xhbmVfZjE2KF9fcDBfMjgwLCBfX3AxXzI4MCwgX19wMl8yODApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4NF90IF9fczBfMjgwID0gX19wMF8yODA7IFwKICBmbG9hdDE2eDRfdCBfX3MxXzI4MCA9IF9fcDFfMjgwOyBcCiAgZmxvYXQxNng0X3QgX19yZXYwXzI4MDsgIF9fcmV2MF8yODAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzI4MCwgX19zMF8yODAsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng0X3QgX19yZXYxXzI4MDsgIF9fcmV2MV8yODAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzI4MCwgX19zMV8yODAsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng0X3QgX19yZXRfMjgwOyBcCiAgX19yZXRfMjgwID0gX19yZXYwXzI4MCAqIF9fbm9zd2FwX3NwbGF0X2xhbmVfZjE2KF9fcmV2MV8yODAsIF9fcDJfMjgwKTsgXAogIF9fcmV0XzI4MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzI4MCwgX19yZXRfMjgwLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzI4MDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtdWxxX25fZjE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQxNl90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9IF9fczAgKiAoZmxvYXQxNng4X3QpIHtfX3MxLCBfX3MxLCBfX3MxLCBfX3MxLCBfX3MxLCBfX3MxLCBfX3MxLCBfX3MxfTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdm11bHFfbl9mMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2X3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSBfX3JldjAgKiAoZmxvYXQxNng4X3QpIHtfX3MxLCBfX3MxLCBfX3MxLCBfX3MxLCBfX3MxLCBfX3MxLCBfX3MxLCBfX3MxfTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm11bF9uX2YxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDRfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSBfX3MwICogKGZsb2F0MTZ4NF90KSB7X19zMSwgX19zMSwgX19zMSwgX19zMX07IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZtdWxfbl9mMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng0X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2X3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSBfX3JldjAgKiAoZmxvYXQxNng0X3QpIHtfX3MxLCBfX3MxLCBfX3MxLCBfX3MxfTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQxNng4X3Qgdm5lZ3FfZjE2KGZsb2F0MTZ4OF90IF9fcDApIHsKICBmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IC1fX3AwOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MTZ4OF90IHZuZWdxX2YxNihmbG9hdDE2eDhfdCBfX3AwKSB7CiAgZmxvYXQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAtX19yZXYwOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDE2eDRfdCB2bmVnX2YxNihmbG9hdDE2eDRfdCBfX3AwKSB7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAtX19wMDsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDE2eDRfdCB2bmVnX2YxNihmbG9hdDE2eDRfdCBfX3AwKSB7CiAgZmxvYXQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAtX19yZXYwOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDE2eDRfdCB2cGFkZF9mMTYoZmxvYXQxNng0X3QgX19wMCwgZmxvYXQxNng0X3QgX19wMSkgewogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cGFkZF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgOCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQxNng0X3QgdnBhZGRfZjE2KGZsb2F0MTZ4NF90IF9fcDAsIGZsb2F0MTZ4NF90IF9fcDEpIHsKICBmbG9hdDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDRfdCkgX19idWlsdGluX25lb25fdnBhZGRfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCA4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQxNng0X3QgdnBtYXhfZjE2KGZsb2F0MTZ4NF90IF9fcDAsIGZsb2F0MTZ4NF90IF9fcDEpIHsKICBmbG9hdDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDRfdCkgX19idWlsdGluX25lb25fdnBtYXhfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MTZ4NF90IHZwbWF4X2YxNihmbG9hdDE2eDRfdCBfX3AwLCBmbG9hdDE2eDRfdCBfX3AxKSB7CiAgZmxvYXQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZwbWF4X3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgOCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MTZ4NF90IHZwbWluX2YxNihmbG9hdDE2eDRfdCBfX3AwLCBmbG9hdDE2eDRfdCBfX3AxKSB7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZwbWluX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCA4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDE2eDRfdCB2cG1pbl9mMTYoZmxvYXQxNng0X3QgX19wMCwgZmxvYXQxNng0X3QgX19wMSkgewogIGZsb2F0MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cG1pbl92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDE2eDhfdCB2cmVjcGVxX2YxNihmbG9hdDE2eDhfdCBfX3AwKSB7CiAgZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZyZWNwZXFfdigoaW50OHgxNl90KV9fcDAsIDQwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDE2eDhfdCB2cmVjcGVxX2YxNihmbG9hdDE2eDhfdCBfX3AwKSB7CiAgZmxvYXQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZyZWNwZXFfdigoaW50OHgxNl90KV9fcmV2MCwgNDApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDE2eDRfdCB2cmVjcGVfZjE2KGZsb2F0MTZ4NF90IF9fcDApIHsKICBmbG9hdDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDRfdCkgX19idWlsdGluX25lb25fdnJlY3BlX3YoKGludDh4OF90KV9fcDAsIDgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MTZ4NF90IHZyZWNwZV9mMTYoZmxvYXQxNng0X3QgX19wMCkgewogIGZsb2F0MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cmVjcGVfdigoaW50OHg4X3QpX19yZXYwLCA4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQxNng4X3QgdnJlY3BzcV9mMTYoZmxvYXQxNng4X3QgX19wMCwgZmxvYXQxNng4X3QgX19wMSkgewogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92cmVjcHNxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDQwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDE2eDhfdCB2cmVjcHNxX2YxNihmbG9hdDE2eDhfdCBfX3AwLCBmbG9hdDE2eDhfdCBfX3AxKSB7CiAgZmxvYXQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZyZWNwc3FfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDQwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQxNng0X3QgdnJlY3BzX2YxNihmbG9hdDE2eDRfdCBfX3AwLCBmbG9hdDE2eDRfdCBfX3AxKSB7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZyZWNwc192KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgOCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQxNng0X3QgdnJlY3BzX2YxNihmbG9hdDE2eDRfdCBfX3AwLCBmbG9hdDE2eDRfdCBfX3AxKSB7CiAgZmxvYXQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZyZWNwc192KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDE2eDhfdCB2cmV2NjRxX2YxNihmbG9hdDE2eDhfdCBfX3AwKSB7CiAgZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwLCA3LCA2LCA1LCA0KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDE2eDhfdCB2cmV2NjRxX2YxNihmbG9hdDE2eDhfdCBfX3AwKSB7CiAgZmxvYXQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MCwgMywgMiwgMSwgMCwgNywgNiwgNSwgNCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MTZ4NF90IHZyZXY2NF9mMTYoZmxvYXQxNng0X3QgX19wMCkgewogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQxNng0X3QgdnJldjY0X2YxNihmbG9hdDE2eDRfdCBfX3AwKSB7CiAgZmxvYXQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MCwgMywgMiwgMSwgMCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MTZ4OF90IHZyc3FydGVxX2YxNihmbG9hdDE2eDhfdCBfX3AwKSB7CiAgZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3Zyc3FydGVxX3YoKGludDh4MTZfdClfX3AwLCA0MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQxNng4X3QgdnJzcXJ0ZXFfZjE2KGZsb2F0MTZ4OF90IF9fcDApIHsKICBmbG9hdDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDhfdCkgX19idWlsdGluX25lb25fdnJzcXJ0ZXFfdigoaW50OHgxNl90KV9fcmV2MCwgNDApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDE2eDRfdCB2cnNxcnRlX2YxNihmbG9hdDE2eDRfdCBfX3AwKSB7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3Zyc3FydGVfdigoaW50OHg4X3QpX19wMCwgOCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQxNng0X3QgdnJzcXJ0ZV9mMTYoZmxvYXQxNng0X3QgX19wMCkgewogIGZsb2F0MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cnNxcnRlX3YoKGludDh4OF90KV9fcmV2MCwgOCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MTZ4OF90IHZyc3FydHNxX2YxNihmbG9hdDE2eDhfdCBfX3AwLCBmbG9hdDE2eDhfdCBfX3AxKSB7CiAgZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3Zyc3FydHNxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDQwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDE2eDhfdCB2cnNxcnRzcV9mMTYoZmxvYXQxNng4X3QgX19wMCwgZmxvYXQxNng4X3QgX19wMSkgewogIGZsb2F0MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92cnNxcnRzcV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNDApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDE2eDRfdCB2cnNxcnRzX2YxNihmbG9hdDE2eDRfdCBfX3AwLCBmbG9hdDE2eDRfdCBfX3AxKSB7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3Zyc3FydHNfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MTZ4NF90IHZyc3FydHNfZjE2KGZsb2F0MTZ4NF90IF9fcDAsIGZsb2F0MTZ4NF90IF9fcDEpIHsKICBmbG9hdDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDRfdCkgX19idWlsdGluX25lb25fdnJzcXJ0c192KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDE2eDhfdCB2c3VicV9mMTYoZmxvYXQxNng4X3QgX19wMCwgZmxvYXQxNng4X3QgX19wMSkgewogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAtIF9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQxNng4X3QgdnN1YnFfZjE2KGZsb2F0MTZ4OF90IF9fcDAsIGZsb2F0MTZ4OF90IF9fcDEpIHsKICBmbG9hdDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCAtIF9fcmV2MTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQxNng0X3QgdnN1Yl9mMTYoZmxvYXQxNng0X3QgX19wMCwgZmxvYXQxNng0X3QgX19wMSkgewogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAtIF9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQxNng0X3QgdnN1Yl9mMTYoZmxvYXQxNng0X3QgX19wMCwgZmxvYXQxNng0X3QgX19wMSkgewogIGZsb2F0MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwIC0gX19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDE2eDh4Ml90IHZ0cm5xX2YxNihmbG9hdDE2eDhfdCBfX3AwLCBmbG9hdDE2eDhfdCBfX3AxKSB7CiAgZmxvYXQxNng4eDJfdCBfX3JldDsKICBfX2J1aWx0aW5fbmVvbl92dHJucV92KCZfX3JldCwgKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDQwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDE2eDh4Ml90IHZ0cm5xX2YxNihmbG9hdDE2eDhfdCBfX3AwLCBmbG9hdDE2eDhfdCBfX3AxKSB7CiAgZmxvYXQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng4eDJfdCBfX3JldDsKICBfX2J1aWx0aW5fbmVvbl92dHJucV92KCZfX3JldCwgKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA0MCk7CgogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQxNng0eDJfdCB2dHJuX2YxNihmbG9hdDE2eDRfdCBfX3AwLCBmbG9hdDE2eDRfdCBfX3AxKSB7CiAgZmxvYXQxNng0eDJfdCBfX3JldDsKICBfX2J1aWx0aW5fbmVvbl92dHJuX3YoJl9fcmV0LCAoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MTZ4NHgyX3QgdnRybl9mMTYoZmxvYXQxNng0X3QgX19wMCwgZmxvYXQxNng0X3QgX19wMSkgewogIGZsb2F0MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4NHgyX3QgX19yZXQ7CiAgX19idWlsdGluX25lb25fdnRybl92KCZfX3JldCwgKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgOCk7CgogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAzLCAyLCAxLCAwKTsKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQxNng4eDJfdCB2dXpwcV9mMTYoZmxvYXQxNng4X3QgX19wMCwgZmxvYXQxNng4X3QgX19wMSkgewogIGZsb2F0MTZ4OHgyX3QgX19yZXQ7CiAgX19idWlsdGluX25lb25fdnV6cHFfdigmX19yZXQsIChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA0MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQxNng4eDJfdCB2dXpwcV9mMTYoZmxvYXQxNng4X3QgX19wMCwgZmxvYXQxNng4X3QgX19wMSkgewogIGZsb2F0MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4OHgyX3QgX19yZXQ7CiAgX19idWlsdGluX25lb25fdnV6cHFfdigmX19yZXQsIChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNDApOwoKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MTZ4NHgyX3QgdnV6cF9mMTYoZmxvYXQxNng0X3QgX19wMCwgZmxvYXQxNng0X3QgX19wMSkgewogIGZsb2F0MTZ4NHgyX3QgX19yZXQ7CiAgX19idWlsdGluX25lb25fdnV6cF92KCZfX3JldCwgKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCA4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDE2eDR4Ml90IHZ1enBfZjE2KGZsb2F0MTZ4NF90IF9fcDAsIGZsb2F0MTZ4NF90IF9fcDEpIHsKICBmbG9hdDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDR4Ml90IF9fcmV0OwogIF9fYnVpbHRpbl9uZW9uX3Z1enBfdigmX19yZXQsIChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDgpOwoKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMywgMiwgMSwgMCk7CiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MTZ4OHgyX3QgdnppcHFfZjE2KGZsb2F0MTZ4OF90IF9fcDAsIGZsb2F0MTZ4OF90IF9fcDEpIHsKICBmbG9hdDE2eDh4Ml90IF9fcmV0OwogIF9fYnVpbHRpbl9uZW9uX3Z6aXBxX3YoJl9fcmV0LCAoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MTZ4OHgyX3QgdnppcHFfZjE2KGZsb2F0MTZ4OF90IF9fcDAsIGZsb2F0MTZ4OF90IF9fcDEpIHsKICBmbG9hdDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDh4Ml90IF9fcmV0OwogIF9fYnVpbHRpbl9uZW9uX3Z6aXBxX3YoJl9fcmV0LCAoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDQwKTsKCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDE2eDR4Ml90IHZ6aXBfZjE2KGZsb2F0MTZ4NF90IF9fcDAsIGZsb2F0MTZ4NF90IF9fcDEpIHsKICBmbG9hdDE2eDR4Ml90IF9fcmV0OwogIF9fYnVpbHRpbl9uZW9uX3Z6aXBfdigmX19yZXQsIChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgOCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQxNng0eDJfdCB2emlwX2YxNihmbG9hdDE2eDRfdCBfX3AwLCBmbG9hdDE2eDRfdCBfX3AxKSB7CiAgZmxvYXQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng0eDJfdCBfX3JldDsKICBfX2J1aWx0aW5fbmVvbl92emlwX3YoJl9fcmV0LCAoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCA4KTsKCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDMsIDIsIDEsIDApOwogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojZW5kaWYKI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9GUDE2X1ZFQ1RPUl9BUklUSE1FVElDKSAmJiBkZWZpbmVkKF9fYWFyY2g2NF9fKQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDE2eDhfdCB2ZGl2cV9mMTYoZmxvYXQxNng4X3QgX19wMCwgZmxvYXQxNng4X3QgX19wMSkgewogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAvIF9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQxNng4X3QgdmRpdnFfZjE2KGZsb2F0MTZ4OF90IF9fcDAsIGZsb2F0MTZ4OF90IF9fcDEpIHsKICBmbG9hdDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCAvIF9fcmV2MTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQxNng0X3QgdmRpdl9mMTYoZmxvYXQxNng0X3QgX19wMCwgZmxvYXQxNng0X3QgX19wMSkgewogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAvIF9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQxNng0X3QgdmRpdl9mMTYoZmxvYXQxNng0X3QgX19wMCwgZmxvYXQxNng0X3QgX19wMSkgewogIGZsb2F0MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwIC8gX19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2ZHVwaF9sYW5lX2YxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDRfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZfdCkgX19idWlsdGluX25lb25fdmR1cGhfbGFuZV9mMTYoKGZsb2F0MTZ4NF90KV9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2ZHVwaF9sYW5lX2YxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDRfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQxNl90KSBfX2J1aWx0aW5fbmVvbl92ZHVwaF9sYW5lX2YxNigoZmxvYXQxNng0X3QpX19yZXYwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmR1cGhfbGFuZXFfZjE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQxNl90KSBfX2J1aWx0aW5fbmVvbl92ZHVwaF9sYW5lcV9mMTYoKGZsb2F0MTZ4OF90KV9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2ZHVwaF9sYW5lcV9mMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZfdCkgX19idWlsdGluX25lb25fdmR1cGhfbGFuZXFfZjE2KChmbG9hdDE2eDhfdClfX3JldjAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Zm1haF9sYW5lX2YxNihfX3AwLCBfX3AxLCBfX3AyLCBfX3AzKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2X3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDE2eDRfdCBfX3MyID0gX19wMjsgXAogIGZsb2F0MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZfdCkgX19idWlsdGluX25lb25fdmZtYWhfbGFuZV9mMTYoX19zMCwgX19zMSwgKGZsb2F0MTZ4NF90KV9fczIsIF9fcDMpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Zm1haF9sYW5lX2YxNihfX3AwLCBfX3AxLCBfX3AyLCBfX3AzKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2X3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDE2eDRfdCBfX3MyID0gX19wMjsgXAogIGZsb2F0MTZ4NF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczIsIF9fczIsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQxNl90KSBfX2J1aWx0aW5fbmVvbl92Zm1haF9sYW5lX2YxNihfX3MwLCBfX3MxLCAoZmxvYXQxNng0X3QpX19yZXYyLCBfX3AzKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgX19ub3N3YXBfdmZtYWhfbGFuZV9mMTYoX19wMCwgX19wMSwgX19wMiwgX19wMykgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNl90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQxNl90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQxNng0X3QgX19zMiA9IF9fcDI7IFwKICBmbG9hdDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZmbWFoX2xhbmVfZjE2KF9fczAsIF9fczEsIChmbG9hdDE2eDRfdClfX3MyLCBfX3AzKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmZtYXFfbGFuZV9mMTYoX19wMCwgX19wMSwgX19wMiwgX19wMykgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2eDhfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MTZ4NF90IF9fczIgPSBfX3AyOyBcCiAgZmxvYXQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDE2eDhfdCkgX19idWlsdGluX25lb25fdmZtYXFfbGFuZV92KChpbnQ4eDE2X3QpX19zMCwgKGludDh4MTZfdClfX3MxLCAoaW50OHg4X3QpX19zMiwgX19wMywgNDApOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Zm1hcV9sYW5lX2YxNihfX3AwLCBfX3AxLCBfX3AyLCBfX3AzKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDhfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZ4OF90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQxNng0X3QgX19zMiA9IF9fcDI7IFwKICBmbG9hdDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng0X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMiwgX19zMiwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92Zm1hcV9sYW5lX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAoaW50OHg4X3QpX19yZXYyLCBfX3AzLCA0MCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3ZmbWFxX2xhbmVfZjE2KF9fcDAsIF9fcDEsIF9fcDIsIF9fcDMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQxNng4X3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDE2eDRfdCBfX3MyID0gX19wMjsgXAogIGZsb2F0MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZmbWFxX2xhbmVfdigoaW50OHgxNl90KV9fczAsIChpbnQ4eDE2X3QpX19zMSwgKGludDh4OF90KV9fczIsIF9fcDMsIDQwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmZtYV9sYW5lX2YxNihfX3AwLCBfX3AxLCBfX3AyLCBfX3AzKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDRfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZ4NF90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQxNng0X3QgX19zMiA9IF9fcDI7IFwKICBmbG9hdDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92Zm1hX2xhbmVfdigoaW50OHg4X3QpX19zMCwgKGludDh4OF90KV9fczEsIChpbnQ4eDhfdClfX3MyLCBfX3AzLCA4KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmZtYV9sYW5lX2YxNihfX3AwLCBfX3AxLCBfX3AyLCBfX3AzKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDRfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZ4NF90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQxNng0X3QgX19zMiA9IF9fcDI7IFwKICBmbG9hdDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng0X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMiwgX19zMiwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92Zm1hX2xhbmVfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAoaW50OHg4X3QpX19yZXYyLCBfX3AzLCA4KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgX19ub3N3YXBfdmZtYV9sYW5lX2YxNihfX3AwLCBfX3AxLCBfX3AyLCBfX3AzKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDRfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZ4NF90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQxNng0X3QgX19zMiA9IF9fcDI7IFwKICBmbG9hdDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92Zm1hX2xhbmVfdigoaW50OHg4X3QpX19zMCwgKGludDh4OF90KV9fczEsIChpbnQ4eDhfdClfX3MyLCBfX3AzLCA4KTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmZtYWhfbGFuZXFfZjE2KF9fcDAsIF9fcDEsIF9fcDIsIF9fcDMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MTZ4OF90IF9fczIgPSBfX3AyOyBcCiAgZmxvYXQxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQxNl90KSBfX2J1aWx0aW5fbmVvbl92Zm1haF9sYW5lcV9mMTYoX19zMCwgX19zMSwgKGZsb2F0MTZ4OF90KV9fczIsIF9fcDMpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Zm1haF9sYW5lcV9mMTYoX19wMCwgX19wMSwgX19wMiwgX19wMykgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNl90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQxNl90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQxNng4X3QgX19zMiA9IF9fcDI7IFwKICBmbG9hdDE2eDhfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyLCBfX3MyLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZfdCkgX19idWlsdGluX25lb25fdmZtYWhfbGFuZXFfZjE2KF9fczAsIF9fczEsIChmbG9hdDE2eDhfdClfX3JldjIsIF9fcDMpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF92Zm1haF9sYW5lcV9mMTYoX19wMCwgX19wMSwgX19wMiwgX19wMykgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNl90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQxNl90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQxNng4X3QgX19zMiA9IF9fcDI7IFwKICBmbG9hdDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZmbWFoX2xhbmVxX2YxNihfX3MwLCBfX3MxLCAoZmxvYXQxNng4X3QpX19zMiwgX19wMyk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZmbWFxX2xhbmVxX2YxNihfX3AwLCBfX3AxLCBfX3AyLCBfX3AzKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDhfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZ4OF90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQxNng4X3QgX19zMiA9IF9fcDI7IFwKICBmbG9hdDE2eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92Zm1hcV9sYW5lcV92KChpbnQ4eDE2X3QpX19zMCwgKGludDh4MTZfdClfX3MxLCAoaW50OHgxNl90KV9fczIsIF9fcDMsIDQwKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmZtYXFfbGFuZXFfZjE2KF9fcDAsIF9fcDEsIF9fcDIsIF9fcDMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQxNng4X3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDE2eDhfdCBfX3MyID0gX19wMjsgXAogIGZsb2F0MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2eDhfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyLCBfX3MyLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZmbWFxX2xhbmVxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAoaW50OHgxNl90KV9fcmV2MiwgX19wMywgNDApOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF92Zm1hcV9sYW5lcV9mMTYoX19wMCwgX19wMSwgX19wMiwgX19wMykgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2eDhfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MTZ4OF90IF9fczIgPSBfX3AyOyBcCiAgZmxvYXQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDE2eDhfdCkgX19idWlsdGluX25lb25fdmZtYXFfbGFuZXFfdigoaW50OHgxNl90KV9fczAsIChpbnQ4eDE2X3QpX19zMSwgKGludDh4MTZfdClfX3MyLCBfX3AzLCA0MCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZmbWFfbGFuZXFfZjE2KF9fcDAsIF9fcDEsIF9fcDIsIF9fcDMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4NF90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQxNng0X3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDE2eDhfdCBfX3MyID0gX19wMjsgXAogIGZsb2F0MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZmbWFfbGFuZXFfdigoaW50OHg4X3QpX19zMCwgKGludDh4OF90KV9fczEsIChpbnQ4eDE2X3QpX19zMiwgX19wMywgOCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZmbWFfbGFuZXFfZjE2KF9fcDAsIF9fcDEsIF9fcDIsIF9fcDMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4NF90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQxNng0X3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDE2eDhfdCBfX3MyID0gX19wMjsgXAogIGZsb2F0MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2eDhfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyLCBfX3MyLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZmbWFfbGFuZXFfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAoaW50OHgxNl90KV9fcmV2MiwgX19wMywgOCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3ZmbWFfbGFuZXFfZjE2KF9fcDAsIF9fcDEsIF9fcDIsIF9fcDMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4NF90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQxNng0X3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDE2eDhfdCBfX3MyID0gX19wMjsgXAogIGZsb2F0MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZmbWFfbGFuZXFfdigoaW50OHg4X3QpX19zMCwgKGludDh4OF90KV9fczEsIChpbnQ4eDE2X3QpX19zMiwgX19wMywgOCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZmbWFxX25fZjE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQxNng4X3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDE2X3QgX19zMiA9IF9fcDI7IFwKICBmbG9hdDE2eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gdmZtYXFfZjE2KF9fczAsIF9fczEsIChmbG9hdDE2eDhfdCkge19fczIsIF9fczIsIF9fczIsIF9fczIsIF9fczIsIF9fczIsIF9fczIsIF9fczJ9KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmZtYXFfbl9mMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2eDhfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MTZfdCBfX3MyID0gX19wMjsgXAogIGZsb2F0MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gX19ub3N3YXBfdmZtYXFfZjE2KF9fcmV2MCwgX19yZXYxLCAoZmxvYXQxNng4X3QpIHtfX3MyLCBfX3MyLCBfX3MyLCBfX3MyLCBfX3MyLCBfX3MyLCBfX3MyLCBfX3MyfSk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZmbWFfbl9mMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng0X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2eDRfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MTZfdCBfX3MyID0gX19wMjsgXAogIGZsb2F0MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSB2Zm1hX2YxNihfX3MwLCBfX3MxLCAoZmxvYXQxNng0X3QpIHtfX3MyLCBfX3MyLCBfX3MyLCBfX3MyfSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZmbWFfbl9mMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng0X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2eDRfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MTZfdCBfX3MyID0gX19wMjsgXAogIGZsb2F0MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gX19ub3N3YXBfdmZtYV9mMTYoX19yZXYwLCBfX3JldjEsIChmbG9hdDE2eDRfdCkge19fczIsIF9fczIsIF9fczIsIF9fczJ9KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmZtc2hfbGFuZV9mMTYoX19wMF8yODEsIF9fcDFfMjgxLCBfX3AyXzI4MSwgX19wM18yODEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZfdCBfX3MwXzI4MSA9IF9fcDBfMjgxOyBcCiAgZmxvYXQxNl90IF9fczFfMjgxID0gX19wMV8yODE7IFwKICBmbG9hdDE2eDRfdCBfX3MyXzI4MSA9IF9fcDJfMjgxOyBcCiAgZmxvYXQxNl90IF9fcmV0XzI4MTsgXAogIF9fcmV0XzI4MSA9IHZmbWFoX2xhbmVfZjE2KF9fczBfMjgxLCAtX19zMV8yODEsIF9fczJfMjgxLCBfX3AzXzI4MSk7IFwKICBfX3JldF8yODE7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Zm1zaF9sYW5lX2YxNihfX3AwXzI4MiwgX19wMV8yODIsIF9fcDJfMjgyLCBfX3AzXzI4MikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNl90IF9fczBfMjgyID0gX19wMF8yODI7IFwKICBmbG9hdDE2X3QgX19zMV8yODIgPSBfX3AxXzI4MjsgXAogIGZsb2F0MTZ4NF90IF9fczJfMjgyID0gX19wMl8yODI7IFwKICBmbG9hdDE2eDRfdCBfX3JldjJfMjgyOyAgX19yZXYyXzI4MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfMjgyLCBfX3MyXzI4MiwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2X3QgX19yZXRfMjgyOyBcCiAgX19yZXRfMjgyID0gX19ub3N3YXBfdmZtYWhfbGFuZV9mMTYoX19zMF8yODIsIC1fX3MxXzI4MiwgX19yZXYyXzI4MiwgX19wM18yODIpOyBcCiAgX19yZXRfMjgyOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmZtc3FfbGFuZV9mMTYoX19wMF8yODMsIF9fcDFfMjgzLCBfX3AyXzI4MywgX19wM18yODMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4OF90IF9fczBfMjgzID0gX19wMF8yODM7IFwKICBmbG9hdDE2eDhfdCBfX3MxXzI4MyA9IF9fcDFfMjgzOyBcCiAgZmxvYXQxNng0X3QgX19zMl8yODMgPSBfX3AyXzI4MzsgXAogIGZsb2F0MTZ4OF90IF9fcmV0XzI4MzsgXAogIF9fcmV0XzI4MyA9IHZmbWFxX2xhbmVfZjE2KF9fczBfMjgzLCAtX19zMV8yODMsIF9fczJfMjgzLCBfX3AzXzI4Myk7IFwKICBfX3JldF8yODM7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Zm1zcV9sYW5lX2YxNihfX3AwXzI4NCwgX19wMV8yODQsIF9fcDJfMjg0LCBfX3AzXzI4NCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4X3QgX19zMF8yODQgPSBfX3AwXzI4NDsgXAogIGZsb2F0MTZ4OF90IF9fczFfMjg0ID0gX19wMV8yODQ7IFwKICBmbG9hdDE2eDRfdCBfX3MyXzI4NCA9IF9fcDJfMjg0OyBcCiAgZmxvYXQxNng4X3QgX19yZXYwXzI4NDsgIF9fcmV2MF8yODQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzI4NCwgX19zMF8yODQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng4X3QgX19yZXYxXzI4NDsgIF9fcmV2MV8yODQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzI4NCwgX19zMV8yODQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng0X3QgX19yZXYyXzI4NDsgIF9fcmV2Ml8yODQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzI4NCwgX19zMl8yODQsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng4X3QgX19yZXRfMjg0OyBcCiAgX19yZXRfMjg0ID0gX19ub3N3YXBfdmZtYXFfbGFuZV9mMTYoX19yZXYwXzI4NCwgLV9fcmV2MV8yODQsIF9fcmV2Ml8yODQsIF9fcDNfMjg0KTsgXAogIF9fcmV0XzI4NCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzI4NCwgX19yZXRfMjg0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzI4NDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZmbXNfbGFuZV9mMTYoX19wMF8yODUsIF9fcDFfMjg1LCBfX3AyXzI4NSwgX19wM18yODUpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4NF90IF9fczBfMjg1ID0gX19wMF8yODU7IFwKICBmbG9hdDE2eDRfdCBfX3MxXzI4NSA9IF9fcDFfMjg1OyBcCiAgZmxvYXQxNng0X3QgX19zMl8yODUgPSBfX3AyXzI4NTsgXAogIGZsb2F0MTZ4NF90IF9fcmV0XzI4NTsgXAogIF9fcmV0XzI4NSA9IHZmbWFfbGFuZV9mMTYoX19zMF8yODUsIC1fX3MxXzI4NSwgX19zMl8yODUsIF9fcDNfMjg1KTsgXAogIF9fcmV0XzI4NTsgXAp9KQojZWxzZQojZGVmaW5lIHZmbXNfbGFuZV9mMTYoX19wMF8yODYsIF9fcDFfMjg2LCBfX3AyXzI4NiwgX19wM18yODYpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4NF90IF9fczBfMjg2ID0gX19wMF8yODY7IFwKICBmbG9hdDE2eDRfdCBfX3MxXzI4NiA9IF9fcDFfMjg2OyBcCiAgZmxvYXQxNng0X3QgX19zMl8yODYgPSBfX3AyXzI4NjsgXAogIGZsb2F0MTZ4NF90IF9fcmV2MF8yODY7ICBfX3JldjBfMjg2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8yODYsIF9fczBfMjg2LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4NF90IF9fcmV2MV8yODY7ICBfX3JldjFfMjg2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV8yODYsIF9fczFfMjg2LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4NF90IF9fcmV2Ml8yODY7ICBfX3JldjJfMjg2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl8yODYsIF9fczJfMjg2LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4NF90IF9fcmV0XzI4NjsgXAogIF9fcmV0XzI4NiA9IF9fbm9zd2FwX3ZmbWFfbGFuZV9mMTYoX19yZXYwXzI4NiwgLV9fcmV2MV8yODYsIF9fcmV2Ml8yODYsIF9fcDNfMjg2KTsgXAogIF9fcmV0XzI4NiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzI4NiwgX19yZXRfMjg2LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzI4NjsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZmbXNoX2xhbmVxX2YxNihfX3AwXzI4NywgX19wMV8yODcsIF9fcDJfMjg3LCBfX3AzXzI4NykgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNl90IF9fczBfMjg3ID0gX19wMF8yODc7IFwKICBmbG9hdDE2X3QgX19zMV8yODcgPSBfX3AxXzI4NzsgXAogIGZsb2F0MTZ4OF90IF9fczJfMjg3ID0gX19wMl8yODc7IFwKICBmbG9hdDE2X3QgX19yZXRfMjg3OyBcCiAgX19yZXRfMjg3ID0gdmZtYWhfbGFuZXFfZjE2KF9fczBfMjg3LCAtX19zMV8yODcsIF9fczJfMjg3LCBfX3AzXzI4Nyk7IFwKICBfX3JldF8yODc7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Zm1zaF9sYW5lcV9mMTYoX19wMF8yODgsIF9fcDFfMjg4LCBfX3AyXzI4OCwgX19wM18yODgpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZfdCBfX3MwXzI4OCA9IF9fcDBfMjg4OyBcCiAgZmxvYXQxNl90IF9fczFfMjg4ID0gX19wMV8yODg7IFwKICBmbG9hdDE2eDhfdCBfX3MyXzI4OCA9IF9fcDJfMjg4OyBcCiAgZmxvYXQxNng4X3QgX19yZXYyXzI4ODsgIF9fcmV2Ml8yODggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzI4OCwgX19zMl8yODgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNl90IF9fcmV0XzI4ODsgXAogIF9fcmV0XzI4OCA9IF9fbm9zd2FwX3ZmbWFoX2xhbmVxX2YxNihfX3MwXzI4OCwgLV9fczFfMjg4LCBfX3JldjJfMjg4LCBfX3AzXzI4OCk7IFwKICBfX3JldF8yODg7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Zm1zcV9sYW5lcV9mMTYoX19wMF8yODksIF9fcDFfMjg5LCBfX3AyXzI4OSwgX19wM18yODkpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4OF90IF9fczBfMjg5ID0gX19wMF8yODk7IFwKICBmbG9hdDE2eDhfdCBfX3MxXzI4OSA9IF9fcDFfMjg5OyBcCiAgZmxvYXQxNng4X3QgX19zMl8yODkgPSBfX3AyXzI4OTsgXAogIGZsb2F0MTZ4OF90IF9fcmV0XzI4OTsgXAogIF9fcmV0XzI4OSA9IHZmbWFxX2xhbmVxX2YxNihfX3MwXzI4OSwgLV9fczFfMjg5LCBfX3MyXzI4OSwgX19wM18yODkpOyBcCiAgX19yZXRfMjg5OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmZtc3FfbGFuZXFfZjE2KF9fcDBfMjkwLCBfX3AxXzI5MCwgX19wMl8yOTAsIF9fcDNfMjkwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDhfdCBfX3MwXzI5MCA9IF9fcDBfMjkwOyBcCiAgZmxvYXQxNng4X3QgX19zMV8yOTAgPSBfX3AxXzI5MDsgXAogIGZsb2F0MTZ4OF90IF9fczJfMjkwID0gX19wMl8yOTA7IFwKICBmbG9hdDE2eDhfdCBfX3JldjBfMjkwOyAgX19yZXYwXzI5MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfMjkwLCBfX3MwXzI5MCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2eDhfdCBfX3JldjFfMjkwOyAgX19yZXYxXzI5MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfMjkwLCBfX3MxXzI5MCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2eDhfdCBfX3JldjJfMjkwOyAgX19yZXYyXzI5MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfMjkwLCBfX3MyXzI5MCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2eDhfdCBfX3JldF8yOTA7IFwKICBfX3JldF8yOTAgPSBfX25vc3dhcF92Zm1hcV9sYW5lcV9mMTYoX19yZXYwXzI5MCwgLV9fcmV2MV8yOTAsIF9fcmV2Ml8yOTAsIF9fcDNfMjkwKTsgXAogIF9fcmV0XzI5MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzI5MCwgX19yZXRfMjkwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzI5MDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZmbXNfbGFuZXFfZjE2KF9fcDBfMjkxLCBfX3AxXzI5MSwgX19wMl8yOTEsIF9fcDNfMjkxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDRfdCBfX3MwXzI5MSA9IF9fcDBfMjkxOyBcCiAgZmxvYXQxNng0X3QgX19zMV8yOTEgPSBfX3AxXzI5MTsgXAogIGZsb2F0MTZ4OF90IF9fczJfMjkxID0gX19wMl8yOTE7IFwKICBmbG9hdDE2eDRfdCBfX3JldF8yOTE7IFwKICBfX3JldF8yOTEgPSB2Zm1hX2xhbmVxX2YxNihfX3MwXzI5MSwgLV9fczFfMjkxLCBfX3MyXzI5MSwgX19wM18yOTEpOyBcCiAgX19yZXRfMjkxOyBcCn0pCiNlbHNlCiNkZWZpbmUgdmZtc19sYW5lcV9mMTYoX19wMF8yOTIsIF9fcDFfMjkyLCBfX3AyXzI5MiwgX19wM18yOTIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4NF90IF9fczBfMjkyID0gX19wMF8yOTI7IFwKICBmbG9hdDE2eDRfdCBfX3MxXzI5MiA9IF9fcDFfMjkyOyBcCiAgZmxvYXQxNng4X3QgX19zMl8yOTIgPSBfX3AyXzI5MjsgXAogIGZsb2F0MTZ4NF90IF9fcmV2MF8yOTI7ICBfX3JldjBfMjkyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8yOTIsIF9fczBfMjkyLCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4NF90IF9fcmV2MV8yOTI7ICBfX3JldjFfMjkyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV8yOTIsIF9fczFfMjkyLCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4OF90IF9fcmV2Ml8yOTI7ICBfX3JldjJfMjkyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl8yOTIsIF9fczJfMjkyLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4NF90IF9fcmV0XzI5MjsgXAogIF9fcmV0XzI5MiA9IF9fbm9zd2FwX3ZmbWFfbGFuZXFfZjE2KF9fcmV2MF8yOTIsIC1fX3JldjFfMjkyLCBfX3JldjJfMjkyLCBfX3AzXzI5Mik7IFwKICBfX3JldF8yOTIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8yOTIsIF9fcmV0XzI5MiwgMywgMiwgMSwgMCk7IFwKICBfX3JldF8yOTI7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Zm1zcV9uX2YxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDhfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZ4OF90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQxNl90IF9fczIgPSBfX3AyOyBcCiAgZmxvYXQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9IHZmbWFxX2YxNihfX3MwLCAtX19zMSwgKGZsb2F0MTZ4OF90KSB7X19zMiwgX19zMiwgX19zMiwgX19zMiwgX19zMiwgX19zMiwgX19zMiwgX19zMn0pOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Zm1zcV9uX2YxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDhfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZ4OF90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQxNl90IF9fczIgPSBfX3AyOyBcCiAgZmxvYXQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSBfX25vc3dhcF92Zm1hcV9mMTYoX19yZXYwLCAtX19yZXYxLCAoZmxvYXQxNng4X3QpIHtfX3MyLCBfX3MyLCBfX3MyLCBfX3MyLCBfX3MyLCBfX3MyLCBfX3MyLCBfX3MyfSk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZmbXNfbl9mMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng0X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2eDRfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MTZfdCBfX3MyID0gX19wMjsgXAogIGZsb2F0MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSB2Zm1hX2YxNihfX3MwLCAtX19zMSwgKGZsb2F0MTZ4NF90KSB7X19zMiwgX19zMiwgX19zMiwgX19zMn0pOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Zm1zX25fZjE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4NF90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQxNng0X3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDE2X3QgX19zMiA9IF9fcDI7IFwKICBmbG9hdDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9IF9fbm9zd2FwX3ZmbWFfZjE2KF9fcmV2MCwgLV9fcmV2MSwgKGZsb2F0MTZ4NF90KSB7X19zMiwgX19zMiwgX19zMiwgX19zMn0pOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bWF4bm12cV9mMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZtYXhubXZxX2YxNigoaW50OHgxNl90KV9fczApOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bWF4bm12cV9mMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZfdCkgX19idWlsdGluX25lb25fdm1heG5tdnFfZjE2KChpbnQ4eDE2X3QpX19yZXYwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm1heG5tdl9mMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng0X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZtYXhubXZfZjE2KChpbnQ4eDhfdClfX3MwKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdm1heG5tdl9mMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng0X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZfdCkgX19idWlsdGluX25lb25fdm1heG5tdl9mMTYoKGludDh4OF90KV9fcmV2MCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtYXh2cV9mMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZtYXh2cV9mMTYoKGludDh4MTZfdClfX3MwKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdm1heHZxX2YxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDhfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQxNl90KSBfX2J1aWx0aW5fbmVvbl92bWF4dnFfZjE2KChpbnQ4eDE2X3QpX19yZXYwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm1heHZfZjE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4NF90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQxNl90KSBfX2J1aWx0aW5fbmVvbl92bWF4dl9mMTYoKGludDh4OF90KV9fczApOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bWF4dl9mMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng0X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZfdCkgX19idWlsdGluX25lb25fdm1heHZfZjE2KChpbnQ4eDhfdClfX3JldjApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bWlubm12cV9mMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZtaW5ubXZxX2YxNigoaW50OHgxNl90KV9fczApOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bWlubm12cV9mMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZfdCkgX19idWlsdGluX25lb25fdm1pbm5tdnFfZjE2KChpbnQ4eDE2X3QpX19yZXYwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm1pbm5tdl9mMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng0X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZtaW5ubXZfZjE2KChpbnQ4eDhfdClfX3MwKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdm1pbm5tdl9mMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng0X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZfdCkgX19idWlsdGluX25lb25fdm1pbm5tdl9mMTYoKGludDh4OF90KV9fcmV2MCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtaW52cV9mMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZtaW52cV9mMTYoKGludDh4MTZfdClfX3MwKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdm1pbnZxX2YxNihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDhfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQxNl90KSBfX2J1aWx0aW5fbmVvbl92bWludnFfZjE2KChpbnQ4eDE2X3QpX19yZXYwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm1pbnZfZjE2KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4NF90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQxNl90KSBfX2J1aWx0aW5fbmVvbl92bWludl9mMTYoKGludDh4OF90KV9fczApOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bWludl9mMTYoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng0X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZfdCkgX19idWlsdGluX25lb25fdm1pbnZfZjE2KChpbnQ4eDhfdClfX3JldjApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bXVscV9sYW5lcV9mMTYoX19wMF8yOTMsIF9fcDFfMjkzLCBfX3AyXzI5MykgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4X3QgX19zMF8yOTMgPSBfX3AwXzI5MzsgXAogIGZsb2F0MTZ4OF90IF9fczFfMjkzID0gX19wMV8yOTM7IFwKICBmbG9hdDE2eDhfdCBfX3JldF8yOTM7IFwKICBfX3JldF8yOTMgPSBfX3MwXzI5MyAqIHNwbGF0cV9sYW5lcV9mMTYoX19zMV8yOTMsIF9fcDJfMjkzKTsgXAogIF9fcmV0XzI5MzsgXAp9KQojZWxzZQojZGVmaW5lIHZtdWxxX2xhbmVxX2YxNihfX3AwXzI5NCwgX19wMV8yOTQsIF9fcDJfMjk0KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDhfdCBfX3MwXzI5NCA9IF9fcDBfMjk0OyBcCiAgZmxvYXQxNng4X3QgX19zMV8yOTQgPSBfX3AxXzI5NDsgXAogIGZsb2F0MTZ4OF90IF9fcmV2MF8yOTQ7ICBfX3JldjBfMjk0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8yOTQsIF9fczBfMjk0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4OF90IF9fcmV2MV8yOTQ7ICBfX3JldjFfMjk0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV8yOTQsIF9fczFfMjk0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4OF90IF9fcmV0XzI5NDsgXAogIF9fcmV0XzI5NCA9IF9fcmV2MF8yOTQgKiBfX25vc3dhcF9zcGxhdHFfbGFuZXFfZjE2KF9fcmV2MV8yOTQsIF9fcDJfMjk0KTsgXAogIF9fcmV0XzI5NCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzI5NCwgX19yZXRfMjk0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzI5NDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtdWxfbGFuZXFfZjE2KF9fcDBfMjk1LCBfX3AxXzI5NSwgX19wMl8yOTUpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4NF90IF9fczBfMjk1ID0gX19wMF8yOTU7IFwKICBmbG9hdDE2eDhfdCBfX3MxXzI5NSA9IF9fcDFfMjk1OyBcCiAgZmxvYXQxNng0X3QgX19yZXRfMjk1OyBcCiAgX19yZXRfMjk1ID0gX19zMF8yOTUgKiBzcGxhdF9sYW5lcV9mMTYoX19zMV8yOTUsIF9fcDJfMjk1KTsgXAogIF9fcmV0XzI5NTsgXAp9KQojZWxzZQojZGVmaW5lIHZtdWxfbGFuZXFfZjE2KF9fcDBfMjk2LCBfX3AxXzI5NiwgX19wMl8yOTYpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4NF90IF9fczBfMjk2ID0gX19wMF8yOTY7IFwKICBmbG9hdDE2eDhfdCBfX3MxXzI5NiA9IF9fcDFfMjk2OyBcCiAgZmxvYXQxNng0X3QgX19yZXYwXzI5NjsgIF9fcmV2MF8yOTYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzI5NiwgX19zMF8yOTYsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng4X3QgX19yZXYxXzI5NjsgIF9fcmV2MV8yOTYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzI5NiwgX19zMV8yOTYsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng0X3QgX19yZXRfMjk2OyBcCiAgX19yZXRfMjk2ID0gX19yZXYwXzI5NiAqIF9fbm9zd2FwX3NwbGF0X2xhbmVxX2YxNihfX3JldjFfMjk2LCBfX3AyXzI5Nik7IFwKICBfX3JldF8yOTYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8yOTYsIF9fcmV0XzI5NiwgMywgMiwgMSwgMCk7IFwKICBfX3JldF8yOTY7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDE2eDhfdCB2bXVseHFfZjE2KGZsb2F0MTZ4OF90IF9fcDAsIGZsb2F0MTZ4OF90IF9fcDEpIHsKICBmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDhfdCkgX19idWlsdGluX25lb25fdm11bHhxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDQwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDE2eDhfdCB2bXVseHFfZjE2KGZsb2F0MTZ4OF90IF9fcDAsIGZsb2F0MTZ4OF90IF9fcDEpIHsKICBmbG9hdDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDhfdCkgX19idWlsdGluX25lb25fdm11bHhxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA0MCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MTZ4OF90IF9fbm9zd2FwX3ZtdWx4cV9mMTYoZmxvYXQxNng4X3QgX19wMCwgZmxvYXQxNng4X3QgX19wMSkgewogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92bXVseHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MTZ4NF90IHZtdWx4X2YxNihmbG9hdDE2eDRfdCBfX3AwLCBmbG9hdDE2eDRfdCBfX3AxKSB7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZtdWx4X3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCA4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDE2eDRfdCB2bXVseF9mMTYoZmxvYXQxNng0X3QgX19wMCwgZmxvYXQxNng0X3QgX19wMSkgewogIGZsb2F0MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92bXVseF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDE2eDRfdCBfX25vc3dhcF92bXVseF9mMTYoZmxvYXQxNng0X3QgX19wMCwgZmxvYXQxNng0X3QgX19wMSkgewogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92bXVseF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgOCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm11bHhoX2xhbmVfZjE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZ4NF90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQxNl90KSBfX2J1aWx0aW5fbmVvbl92bXVseGhfbGFuZV9mMTYoX19zMCwgKGZsb2F0MTZ4NF90KV9fczEsIF9fcDIpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bXVseGhfbGFuZV9mMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNl90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQxNng0X3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MTZfdCkgX19idWlsdGluX25lb25fdm11bHhoX2xhbmVfZjE2KF9fczAsIChmbG9hdDE2eDRfdClfX3JldjEsIF9fcDIpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bXVseHFfbGFuZV9mMTYoX19wMF8yOTcsIF9fcDFfMjk3LCBfX3AyXzI5NykgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4X3QgX19zMF8yOTcgPSBfX3AwXzI5NzsgXAogIGZsb2F0MTZ4NF90IF9fczFfMjk3ID0gX19wMV8yOTc7IFwKICBmbG9hdDE2eDhfdCBfX3JldF8yOTc7IFwKICBfX3JldF8yOTcgPSB2bXVseHFfZjE2KF9fczBfMjk3LCBzcGxhdHFfbGFuZV9mMTYoX19zMV8yOTcsIF9fcDJfMjk3KSk7IFwKICBfX3JldF8yOTc7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bXVseHFfbGFuZV9mMTYoX19wMF8yOTgsIF9fcDFfMjk4LCBfX3AyXzI5OCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4X3QgX19zMF8yOTggPSBfX3AwXzI5ODsgXAogIGZsb2F0MTZ4NF90IF9fczFfMjk4ID0gX19wMV8yOTg7IFwKICBmbG9hdDE2eDhfdCBfX3JldjBfMjk4OyAgX19yZXYwXzI5OCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfMjk4LCBfX3MwXzI5OCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2eDRfdCBfX3JldjFfMjk4OyAgX19yZXYxXzI5OCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfMjk4LCBfX3MxXzI5OCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2eDhfdCBfX3JldF8yOTg7IFwKICBfX3JldF8yOTggPSBfX25vc3dhcF92bXVseHFfZjE2KF9fcmV2MF8yOTgsIF9fbm9zd2FwX3NwbGF0cV9sYW5lX2YxNihfX3JldjFfMjk4LCBfX3AyXzI5OCkpOyBcCiAgX19yZXRfMjk4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMjk4LCBfX3JldF8yOTgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfMjk4OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm11bHhfbGFuZV9mMTYoX19wMF8yOTksIF9fcDFfMjk5LCBfX3AyXzI5OSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng0X3QgX19zMF8yOTkgPSBfX3AwXzI5OTsgXAogIGZsb2F0MTZ4NF90IF9fczFfMjk5ID0gX19wMV8yOTk7IFwKICBmbG9hdDE2eDRfdCBfX3JldF8yOTk7IFwKICBfX3JldF8yOTkgPSB2bXVseF9mMTYoX19zMF8yOTksIHNwbGF0X2xhbmVfZjE2KF9fczFfMjk5LCBfX3AyXzI5OSkpOyBcCiAgX19yZXRfMjk5OyBcCn0pCiNlbHNlCiNkZWZpbmUgdm11bHhfbGFuZV9mMTYoX19wMF8zMDAsIF9fcDFfMzAwLCBfX3AyXzMwMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng0X3QgX19zMF8zMDAgPSBfX3AwXzMwMDsgXAogIGZsb2F0MTZ4NF90IF9fczFfMzAwID0gX19wMV8zMDA7IFwKICBmbG9hdDE2eDRfdCBfX3JldjBfMzAwOyAgX19yZXYwXzMwMCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfMzAwLCBfX3MwXzMwMCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2eDRfdCBfX3JldjFfMzAwOyAgX19yZXYxXzMwMCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfMzAwLCBfX3MxXzMwMCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2eDRfdCBfX3JldF8zMDA7IFwKICBfX3JldF8zMDAgPSBfX25vc3dhcF92bXVseF9mMTYoX19yZXYwXzMwMCwgX19ub3N3YXBfc3BsYXRfbGFuZV9mMTYoX19yZXYxXzMwMCwgX19wMl8zMDApKTsgXAogIF9fcmV0XzMwMCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzMwMCwgX19yZXRfMzAwLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzMwMDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtdWx4aF9sYW5lcV9mMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNl90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQxNng4X3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZtdWx4aF9sYW5lcV9mMTYoX19zMCwgKGZsb2F0MTZ4OF90KV9fczEsIF9fcDIpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bXVseGhfbGFuZXFfZjE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZ4OF90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZtdWx4aF9sYW5lcV9mMTYoX19zMCwgKGZsb2F0MTZ4OF90KV9fcmV2MSwgX19wMik7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtdWx4cV9sYW5lcV9mMTYoX19wMF8zMDEsIF9fcDFfMzAxLCBfX3AyXzMwMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4X3QgX19zMF8zMDEgPSBfX3AwXzMwMTsgXAogIGZsb2F0MTZ4OF90IF9fczFfMzAxID0gX19wMV8zMDE7IFwKICBmbG9hdDE2eDhfdCBfX3JldF8zMDE7IFwKICBfX3JldF8zMDEgPSB2bXVseHFfZjE2KF9fczBfMzAxLCBzcGxhdHFfbGFuZXFfZjE2KF9fczFfMzAxLCBfX3AyXzMwMSkpOyBcCiAgX19yZXRfMzAxOyBcCn0pCiNlbHNlCiNkZWZpbmUgdm11bHhxX2xhbmVxX2YxNihfX3AwXzMwMiwgX19wMV8zMDIsIF9fcDJfMzAyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDhfdCBfX3MwXzMwMiA9IF9fcDBfMzAyOyBcCiAgZmxvYXQxNng4X3QgX19zMV8zMDIgPSBfX3AxXzMwMjsgXAogIGZsb2F0MTZ4OF90IF9fcmV2MF8zMDI7ICBfX3JldjBfMzAyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8zMDIsIF9fczBfMzAyLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4OF90IF9fcmV2MV8zMDI7ICBfX3JldjFfMzAyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV8zMDIsIF9fczFfMzAyLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4OF90IF9fcmV0XzMwMjsgXAogIF9fcmV0XzMwMiA9IF9fbm9zd2FwX3ZtdWx4cV9mMTYoX19yZXYwXzMwMiwgX19ub3N3YXBfc3BsYXRxX2xhbmVxX2YxNihfX3JldjFfMzAyLCBfX3AyXzMwMikpOyBcCiAgX19yZXRfMzAyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMzAyLCBfX3JldF8zMDIsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfMzAyOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm11bHhfbGFuZXFfZjE2KF9fcDBfMzAzLCBfX3AxXzMwMywgX19wMl8zMDMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4NF90IF9fczBfMzAzID0gX19wMF8zMDM7IFwKICBmbG9hdDE2eDhfdCBfX3MxXzMwMyA9IF9fcDFfMzAzOyBcCiAgZmxvYXQxNng0X3QgX19yZXRfMzAzOyBcCiAgX19yZXRfMzAzID0gdm11bHhfZjE2KF9fczBfMzAzLCBzcGxhdF9sYW5lcV9mMTYoX19zMV8zMDMsIF9fcDJfMzAzKSk7IFwKICBfX3JldF8zMDM7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bXVseF9sYW5lcV9mMTYoX19wMF8zMDQsIF9fcDFfMzA0LCBfX3AyXzMwNCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng0X3QgX19zMF8zMDQgPSBfX3AwXzMwNDsgXAogIGZsb2F0MTZ4OF90IF9fczFfMzA0ID0gX19wMV8zMDQ7IFwKICBmbG9hdDE2eDRfdCBfX3JldjBfMzA0OyAgX19yZXYwXzMwNCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfMzA0LCBfX3MwXzMwNCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2eDhfdCBfX3JldjFfMzA0OyAgX19yZXYxXzMwNCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfMzA0LCBfX3MxXzMwNCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2eDRfdCBfX3JldF8zMDQ7IFwKICBfX3JldF8zMDQgPSBfX25vc3dhcF92bXVseF9mMTYoX19yZXYwXzMwNCwgX19ub3N3YXBfc3BsYXRfbGFuZXFfZjE2KF9fcmV2MV8zMDQsIF9fcDJfMzA0KSk7IFwKICBfX3JldF8zMDQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8zMDQsIF9fcmV0XzMwNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF8zMDQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bXVseHFfbl9mMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDE2X3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDE2eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gdm11bHhxX2YxNihfX3MwLCAoZmxvYXQxNng4X3QpIHtfX3MxLCBfX3MxLCBfX3MxLCBfX3MxLCBfX3MxLCBfX3MxLCBfX3MxLCBfX3MxfSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZtdWx4cV9uX2YxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDhfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MTZfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9IF9fbm9zd2FwX3ZtdWx4cV9mMTYoX19yZXYwLCAoZmxvYXQxNng4X3QpIHtfX3MxLCBfX3MxLCBfX3MxLCBfX3MxLCBfX3MxLCBfX3MxLCBfX3MxLCBfX3MxfSk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtdWx4X25fZjE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4NF90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQxNl90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9IHZtdWx4X2YxNihfX3MwLCAoZmxvYXQxNng0X3QpIHtfX3MxLCBfX3MxLCBfX3MxLCBfX3MxfSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZtdWx4X25fZjE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4NF90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQxNl90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gX19ub3N3YXBfdm11bHhfZjE2KF9fcmV2MCwgKGZsb2F0MTZ4NF90KSB7X19zMSwgX19zMSwgX19zMSwgX19zMX0pOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDE2eDhfdCB2cGFkZHFfZjE2KGZsb2F0MTZ4OF90IF9fcDAsIGZsb2F0MTZ4OF90IF9fcDEpIHsKICBmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDhfdCkgX19idWlsdGluX25lb25fdnBhZGRxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDQwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDE2eDhfdCB2cGFkZHFfZjE2KGZsb2F0MTZ4OF90IF9fcDAsIGZsb2F0MTZ4OF90IF9fcDEpIHsKICBmbG9hdDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDhfdCkgX19idWlsdGluX25lb25fdnBhZGRxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA0MCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MTZ4OF90IHZwbWF4cV9mMTYoZmxvYXQxNng4X3QgX19wMCwgZmxvYXQxNng4X3QgX19wMSkgewogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92cG1heHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MTZ4OF90IHZwbWF4cV9mMTYoZmxvYXQxNng4X3QgX19wMCwgZmxvYXQxNng4X3QgX19wMSkgewogIGZsb2F0MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92cG1heHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDQwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQxNng4X3QgdnBtYXhubXFfZjE2KGZsb2F0MTZ4OF90IF9fcDAsIGZsb2F0MTZ4OF90IF9fcDEpIHsKICBmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDhfdCkgX19idWlsdGluX25lb25fdnBtYXhubXFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MTZ4OF90IHZwbWF4bm1xX2YxNihmbG9hdDE2eDhfdCBfX3AwLCBmbG9hdDE2eDhfdCBfX3AxKSB7CiAgZmxvYXQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZwbWF4bm1xX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA0MCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MTZ4NF90IHZwbWF4bm1fZjE2KGZsb2F0MTZ4NF90IF9fcDAsIGZsb2F0MTZ4NF90IF9fcDEpIHsKICBmbG9hdDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDRfdCkgX19idWlsdGluX25lb25fdnBtYXhubV92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgOCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQxNng0X3QgdnBtYXhubV9mMTYoZmxvYXQxNng0X3QgX19wMCwgZmxvYXQxNng0X3QgX19wMSkgewogIGZsb2F0MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cG1heG5tX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgOCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MTZ4OF90IHZwbWlucV9mMTYoZmxvYXQxNng4X3QgX19wMCwgZmxvYXQxNng4X3QgX19wMSkgewogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92cG1pbnFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MTZ4OF90IHZwbWlucV9mMTYoZmxvYXQxNng4X3QgX19wMCwgZmxvYXQxNng4X3QgX19wMSkgewogIGZsb2F0MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92cG1pbnFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDQwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQxNng4X3QgdnBtaW5ubXFfZjE2KGZsb2F0MTZ4OF90IF9fcDAsIGZsb2F0MTZ4OF90IF9fcDEpIHsKICBmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDhfdCkgX19idWlsdGluX25lb25fdnBtaW5ubXFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MTZ4OF90IHZwbWlubm1xX2YxNihmbG9hdDE2eDhfdCBfX3AwLCBmbG9hdDE2eDhfdCBfX3AxKSB7CiAgZmxvYXQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZwbWlubm1xX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA0MCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MTZ4NF90IHZwbWlubm1fZjE2KGZsb2F0MTZ4NF90IF9fcDAsIGZsb2F0MTZ4NF90IF9fcDEpIHsKICBmbG9hdDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDRfdCkgX19idWlsdGluX25lb25fdnBtaW5ubV92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgOCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQxNng0X3QgdnBtaW5ubV9mMTYoZmxvYXQxNng0X3QgX19wMCwgZmxvYXQxNng0X3QgX19wMSkgewogIGZsb2F0MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cG1pbm5tX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgOCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MTZ4OF90IHZybmRpcV9mMTYoZmxvYXQxNng4X3QgX19wMCkgewogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92cm5kaXFfdigoaW50OHgxNl90KV9fcDAsIDQwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDE2eDhfdCB2cm5kaXFfZjE2KGZsb2F0MTZ4OF90IF9fcDApIHsKICBmbG9hdDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDhfdCkgX19idWlsdGluX25lb25fdnJuZGlxX3YoKGludDh4MTZfdClfX3JldjAsIDQwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQxNng0X3QgdnJuZGlfZjE2KGZsb2F0MTZ4NF90IF9fcDApIHsKICBmbG9hdDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDRfdCkgX19idWlsdGluX25lb25fdnJuZGlfdigoaW50OHg4X3QpX19wMCwgOCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQxNng0X3QgdnJuZGlfZjE2KGZsb2F0MTZ4NF90IF9fcDApIHsKICBmbG9hdDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDE2eDRfdCkgX19idWlsdGluX25lb25fdnJuZGlfdigoaW50OHg4X3QpX19yZXYwLCA4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQxNng4X3QgdnNxcnRxX2YxNihmbG9hdDE2eDhfdCBfX3AwKSB7CiAgZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZzcXJ0cV92KChpbnQ4eDE2X3QpX19wMCwgNDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MTZ4OF90IHZzcXJ0cV9mMTYoZmxvYXQxNng4X3QgX19wMCkgewogIGZsb2F0MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92c3FydHFfdigoaW50OHgxNl90KV9fcmV2MCwgNDApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDE2eDRfdCB2c3FydF9mMTYoZmxvYXQxNng0X3QgX19wMCkgewogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92c3FydF92KChpbnQ4eDhfdClfX3AwLCA4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDE2eDRfdCB2c3FydF9mMTYoZmxvYXQxNng0X3QgX19wMCkgewogIGZsb2F0MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92c3FydF92KChpbnQ4eDhfdClfX3JldjAsIDgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDE2eDhfdCB2dHJuMXFfZjE2KGZsb2F0MTZ4OF90IF9fcDAsIGZsb2F0MTZ4OF90IF9fcDEpIHsKICBmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDAsIDgsIDIsIDEwLCA0LCAxMiwgNiwgMTQpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MTZ4OF90IHZ0cm4xcV9mMTYoZmxvYXQxNng4X3QgX19wMCwgZmxvYXQxNng4X3QgX19wMSkgewogIGZsb2F0MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDAsIDgsIDIsIDEwLCA0LCAxMiwgNiwgMTQpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDE2eDRfdCB2dHJuMV9mMTYoZmxvYXQxNng0X3QgX19wMCwgZmxvYXQxNng0X3QgX19wMSkgewogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMCwgNCwgMiwgNik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQxNng0X3QgdnRybjFfZjE2KGZsb2F0MTZ4NF90IF9fcDAsIGZsb2F0MTZ4NF90IF9fcDEpIHsKICBmbG9hdDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDRfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAwLCA0LCAyLCA2KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQxNng4X3QgdnRybjJxX2YxNihmbG9hdDE2eDhfdCBfX3AwLCBmbG9hdDE2eDhfdCBfX3AxKSB7CiAgZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAxLCA5LCAzLCAxMSwgNSwgMTMsIDcsIDE1KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDE2eDhfdCB2dHJuMnFfZjE2KGZsb2F0MTZ4OF90IF9fcDAsIGZsb2F0MTZ4OF90IF9fcDEpIHsKICBmbG9hdDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAxLCA5LCAzLCAxMSwgNSwgMTMsIDcsIDE1KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQxNng0X3QgdnRybjJfZjE2KGZsb2F0MTZ4NF90IF9fcDAsIGZsb2F0MTZ4NF90IF9fcDEpIHsKICBmbG9hdDE2eDRfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDEsIDUsIDMsIDcpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MTZ4NF90IHZ0cm4yX2YxNihmbG9hdDE2eDRfdCBfX3AwLCBmbG9hdDE2eDRfdCBfX3AxKSB7CiAgZmxvYXQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMSwgNSwgMywgNyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MTZ4OF90IHZ1enAxcV9mMTYoZmxvYXQxNng4X3QgX19wMCwgZmxvYXQxNng4X3QgX19wMSkgewogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMCwgMiwgNCwgNiwgOCwgMTAsIDEyLCAxNCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQxNng4X3QgdnV6cDFxX2YxNihmbG9hdDE2eDhfdCBfX3AwLCBmbG9hdDE2eDhfdCBfX3AxKSB7CiAgZmxvYXQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMCwgMiwgNCwgNiwgOCwgMTAsIDEyLCAxNCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MTZ4NF90IHZ1enAxX2YxNihmbG9hdDE2eDRfdCBfX3AwLCBmbG9hdDE2eDRfdCBfX3AxKSB7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAwLCAyLCA0LCA2KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDE2eDRfdCB2dXpwMV9mMTYoZmxvYXQxNng0X3QgX19wMCwgZmxvYXQxNng0X3QgX19wMSkgewogIGZsb2F0MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDAsIDIsIDQsIDYpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDE2eDhfdCB2dXpwMnFfZjE2KGZsb2F0MTZ4OF90IF9fcDAsIGZsb2F0MTZ4OF90IF9fcDEpIHsKICBmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDEsIDMsIDUsIDcsIDksIDExLCAxMywgMTUpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MTZ4OF90IHZ1enAycV9mMTYoZmxvYXQxNng4X3QgX19wMCwgZmxvYXQxNng4X3QgX19wMSkgewogIGZsb2F0MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDEsIDMsIDUsIDcsIDksIDExLCAxMywgMTUpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDE2eDRfdCB2dXpwMl9mMTYoZmxvYXQxNng0X3QgX19wMCwgZmxvYXQxNng0X3QgX19wMSkgewogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMSwgMywgNSwgNyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQxNng0X3QgdnV6cDJfZjE2KGZsb2F0MTZ4NF90IF9fcDAsIGZsb2F0MTZ4NF90IF9fcDEpIHsKICBmbG9hdDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDRfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAxLCAzLCA1LCA3KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQxNng4X3QgdnppcDFxX2YxNihmbG9hdDE2eDhfdCBfX3AwLCBmbG9hdDE2eDhfdCBfX3AxKSB7CiAgZmxvYXQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAwLCA4LCAxLCA5LCAyLCAxMCwgMywgMTEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MTZ4OF90IHZ6aXAxcV9mMTYoZmxvYXQxNng4X3QgX19wMCwgZmxvYXQxNng4X3QgX19wMSkgewogIGZsb2F0MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDAsIDgsIDEsIDksIDIsIDEwLCAzLCAxMSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MTZ4NF90IHZ6aXAxX2YxNihmbG9hdDE2eDRfdCBfX3AwLCBmbG9hdDE2eDRfdCBfX3AxKSB7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAwLCA0LCAxLCA1KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDE2eDRfdCB2emlwMV9mMTYoZmxvYXQxNng0X3QgX19wMCwgZmxvYXQxNng0X3QgX19wMSkgewogIGZsb2F0MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDAsIDQsIDEsIDUpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDE2eDhfdCB2emlwMnFfZjE2KGZsb2F0MTZ4OF90IF9fcDAsIGZsb2F0MTZ4OF90IF9fcDEpIHsKICBmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDQsIDEyLCA1LCAxMywgNiwgMTQsIDcsIDE1KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDE2eDhfdCB2emlwMnFfZjE2KGZsb2F0MTZ4OF90IF9fcDAsIGZsb2F0MTZ4OF90IF9fcDEpIHsKICBmbG9hdDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBmbG9hdDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCA0LCAxMiwgNSwgMTMsIDYsIDE0LCA3LCAxNSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MTZ4NF90IHZ6aXAyX2YxNihmbG9hdDE2eDRfdCBfX3AwLCBmbG9hdDE2eDRfdCBfX3AxKSB7CiAgZmxvYXQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAyLCA2LCAzLCA3KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDE2eDRfdCB2emlwMl9mMTYoZmxvYXQxNng0X3QgX19wMCwgZmxvYXQxNng0X3QgX19wMSkgewogIGZsb2F0MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDIsIDYsIDMsIDcpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojZW5kaWYKI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9NQVRNVUxfSU5UOCkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDRfdCB2bW1sYXFfdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDh4MTZfdCBfX3AxLCB1aW50OHgxNl90IF9fcDIpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZtbWxhcV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAoaW50OHgxNl90KV9fcDIsIDUwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4NF90IHZtbWxhcV91MzIodWludDMyeDRfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEsIHVpbnQ4eDE2X3QgX19wMikgewogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdm1tbGFxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAoaW50OHgxNl90KV9fcmV2MiwgNTApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMng0X3Qgdm1tbGFxX3MzMihpbnQzMng0X3QgX19wMCwgaW50OHgxNl90IF9fcDEsIGludDh4MTZfdCBfX3AyKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkgX19idWlsdGluX25lb25fdm1tbGFxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIChpbnQ4eDE2X3QpX19wMiwgMzQpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDRfdCB2bW1sYXFfczMyKGludDMyeDRfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSwgaW50OHgxNl90IF9fcDIpIHsKICBpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4MTZfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92bW1sYXFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIChpbnQ4eDE2X3QpX19yZXYyLCAzNCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDRfdCB2dXNkb3RxX3MzMihpbnQzMng0X3QgX19wMCwgdWludDh4MTZfdCBfX3AxLCBpbnQ4eDE2X3QgX19wMikgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3Z1c2RvdHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgKGludDh4MTZfdClfX3AyLCAzNCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4NF90IHZ1c2RvdHFfczMyKGludDMyeDRfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEsIGludDh4MTZfdCBfX3AyKSB7CiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3Z1c2RvdHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIChpbnQ4eDE2X3QpX19yZXYyLCAzNCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDMyeDRfdCBfX25vc3dhcF92dXNkb3RxX3MzMihpbnQzMng0X3QgX19wMCwgdWludDh4MTZfdCBfX3AxLCBpbnQ4eDE2X3QgX19wMikgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3Z1c2RvdHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgKGludDh4MTZfdClfX3AyLCAzNCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4Ml90IHZ1c2RvdF9zMzIoaW50MzJ4Ml90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxLCBpbnQ4eDhfdCBfX3AyKSB7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdnVzZG90X3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAoaW50OHg4X3QpX19wMiwgMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4Ml90IHZ1c2RvdF9zMzIoaW50MzJ4Ml90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxLCBpbnQ4eDhfdCBfX3AyKSB7CiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92dXNkb3RfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAoaW50OHg4X3QpX19yZXYyLCAyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MzJ4Ml90IF9fbm9zd2FwX3Z1c2RvdF9zMzIoaW50MzJ4Ml90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxLCBpbnQ4eDhfdCBfX3AyKSB7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdnVzZG90X3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAoaW50OHg4X3QpX19wMiwgMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnVzZG90cV9sYW5lX3MzMihfX3AwXzMwNSwgX19wMV8zMDUsIF9fcDJfMzA1LCBfX3AzXzMwNSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczBfMzA1ID0gX19wMF8zMDU7IFwKICB1aW50OHgxNl90IF9fczFfMzA1ID0gX19wMV8zMDU7IFwKICBpbnQ4eDhfdCBfX3MyXzMwNSA9IF9fcDJfMzA1OyBcCiAgaW50MzJ4NF90IF9fcmV0XzMwNTsgXAppbnQ4eDhfdCBfX3JlaW50XzMwNSA9IF9fczJfMzA1OyBcCiAgX19yZXRfMzA1ID0gdnVzZG90cV9zMzIoX19zMF8zMDUsIF9fczFfMzA1LCAoaW50OHgxNl90KShzcGxhdHFfbGFuZV9zMzIoKihpbnQzMngyX3QgKikgJl9fcmVpbnRfMzA1LCBfX3AzXzMwNSkpKTsgXAogIF9fcmV0XzMwNTsgXAp9KQojZWxzZQojZGVmaW5lIHZ1c2RvdHFfbGFuZV9zMzIoX19wMF8zMDYsIF9fcDFfMzA2LCBfX3AyXzMwNiwgX19wM18zMDYpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDRfdCBfX3MwXzMwNiA9IF9fcDBfMzA2OyBcCiAgdWludDh4MTZfdCBfX3MxXzMwNiA9IF9fcDFfMzA2OyBcCiAgaW50OHg4X3QgX19zMl8zMDYgPSBfX3AyXzMwNjsgXAogIGludDMyeDRfdCBfX3JldjBfMzA2OyAgX19yZXYwXzMwNiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfMzA2LCBfX3MwXzMwNiwgMywgMiwgMSwgMCk7IFwKICB1aW50OHgxNl90IF9fcmV2MV8zMDY7ICBfX3JldjFfMzA2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV8zMDYsIF9fczFfMzA2LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDh4OF90IF9fcmV2Ml8zMDY7ICBfX3JldjJfMzA2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl8zMDYsIF9fczJfMzA2LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDRfdCBfX3JldF8zMDY7IFwKaW50OHg4X3QgX19yZWludF8zMDYgPSBfX3JldjJfMzA2OyBcCiAgX19yZXRfMzA2ID0gX19ub3N3YXBfdnVzZG90cV9zMzIoX19yZXYwXzMwNiwgX19yZXYxXzMwNiwgKGludDh4MTZfdCkoX19ub3N3YXBfc3BsYXRxX2xhbmVfczMyKCooaW50MzJ4Ml90ICopICZfX3JlaW50XzMwNiwgX19wM18zMDYpKSk7IFwKICBfX3JldF8zMDYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8zMDYsIF9fcmV0XzMwNiwgMywgMiwgMSwgMCk7IFwKICBfX3JldF8zMDY7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2dXNkb3RfbGFuZV9zMzIoX19wMF8zMDcsIF9fcDFfMzA3LCBfX3AyXzMwNywgX19wM18zMDcpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJfdCBfX3MwXzMwNyA9IF9fcDBfMzA3OyBcCiAgdWludDh4OF90IF9fczFfMzA3ID0gX19wMV8zMDc7IFwKICBpbnQ4eDhfdCBfX3MyXzMwNyA9IF9fcDJfMzA3OyBcCiAgaW50MzJ4Ml90IF9fcmV0XzMwNzsgXAppbnQ4eDhfdCBfX3JlaW50XzMwNyA9IF9fczJfMzA3OyBcCiAgX19yZXRfMzA3ID0gdnVzZG90X3MzMihfX3MwXzMwNywgX19zMV8zMDcsIChpbnQ4eDhfdCkoc3BsYXRfbGFuZV9zMzIoKihpbnQzMngyX3QgKikgJl9fcmVpbnRfMzA3LCBfX3AzXzMwNykpKTsgXAogIF9fcmV0XzMwNzsgXAp9KQojZWxzZQojZGVmaW5lIHZ1c2RvdF9sYW5lX3MzMihfX3AwXzMwOCwgX19wMV8zMDgsIF9fcDJfMzA4LCBfX3AzXzMwOCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Ml90IF9fczBfMzA4ID0gX19wMF8zMDg7IFwKICB1aW50OHg4X3QgX19zMV8zMDggPSBfX3AxXzMwODsgXAogIGludDh4OF90IF9fczJfMzA4ID0gX19wMl8zMDg7IFwKICBpbnQzMngyX3QgX19yZXYwXzMwODsgIF9fcmV2MF8zMDggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzMwOCwgX19zMF8zMDgsIDEsIDApOyBcCiAgdWludDh4OF90IF9fcmV2MV8zMDg7ICBfX3JldjFfMzA4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV8zMDgsIF9fczFfMzA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDh4OF90IF9fcmV2Ml8zMDg7ICBfX3JldjJfMzA4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl8zMDgsIF9fczJfMzA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDJfdCBfX3JldF8zMDg7IFwKaW50OHg4X3QgX19yZWludF8zMDggPSBfX3JldjJfMzA4OyBcCiAgX19yZXRfMzA4ID0gX19ub3N3YXBfdnVzZG90X3MzMihfX3JldjBfMzA4LCBfX3JldjFfMzA4LCAoaW50OHg4X3QpKF9fbm9zd2FwX3NwbGF0X2xhbmVfczMyKCooaW50MzJ4Ml90ICopICZfX3JlaW50XzMwOCwgX19wM18zMDgpKSk7IFwKICBfX3JldF8zMDggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8zMDgsIF9fcmV0XzMwOCwgMSwgMCk7IFwKICBfX3JldF8zMDg7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMng0X3QgdnVzbW1sYXFfczMyKGludDMyeDRfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEsIGludDh4MTZfdCBfX3AyKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkgX19idWlsdGluX25lb25fdnVzbW1sYXFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgKGludDh4MTZfdClfX3AyLCAzNCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4NF90IHZ1c21tbGFxX3MzMihpbnQzMng0X3QgX19wMCwgdWludDh4MTZfdCBfX3AxLCBpbnQ4eDE2X3QgX19wMikgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4MTZfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92dXNtbWxhcV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgKGludDh4MTZfdClfX3JldjIsIDM0KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2VuZGlmCiNpZiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfUVJETVgpCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDRfdCB2cXJkbWxhaHFfczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSwgaW50MzJ4NF90IF9fcDIpIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSB2cWFkZHFfczMyKF9fcDAsIHZxcmRtdWxocV9zMzIoX19wMSwgX19wMikpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDRfdCB2cXJkbWxhaHFfczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSwgaW50MzJ4NF90IF9fcDIpIHsKICBpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92cWFkZHFfczMyKF9fcmV2MCwgX19ub3N3YXBfdnFyZG11bGhxX3MzMihfX3JldjEsIF9fcmV2MikpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng4X3QgdnFyZG1sYWhxX3MxNihpbnQxNng4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEsIGludDE2eDhfdCBfX3AyKSB7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gdnFhZGRxX3MxNihfX3AwLCB2cXJkbXVsaHFfczE2KF9fcDEsIF9fcDIpKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng4X3QgdnFyZG1sYWhxX3MxNihpbnQxNng4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEsIGludDE2eDhfdCBfX3AyKSB7CiAgaW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdnFhZGRxX3MxNihfX3JldjAsIF9fbm9zd2FwX3ZxcmRtdWxocV9zMTYoX19yZXYxLCBfX3JldjIpKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4Ml90IHZxcmRtbGFoX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEsIGludDMyeDJfdCBfX3AyKSB7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gdnFhZGRfczMyKF9fcDAsIHZxcmRtdWxoX3MzMihfX3AxLCBfX3AyKSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4Ml90IHZxcmRtbGFoX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEsIGludDMyeDJfdCBfX3AyKSB7CiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMSwgMCk7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdnFhZGRfczMyKF9fcmV2MCwgX19ub3N3YXBfdnFyZG11bGhfczMyKF9fcmV2MSwgX19yZXYyKSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDRfdCB2cXJkbWxhaF9zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxLCBpbnQxNng0X3QgX19wMikgewogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IHZxYWRkX3MxNihfX3AwLCB2cXJkbXVsaF9zMTYoX19wMSwgX19wMikpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDRfdCB2cXJkbWxhaF9zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxLCBpbnQxNng0X3QgX19wMikgewogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDMsIDIsIDEsIDApOwogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3ZxYWRkX3MxNihfX3JldjAsIF9fbm9zd2FwX3ZxcmRtdWxoX3MxNihfX3JldjEsIF9fcmV2MikpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cXJkbWxhaHFfbGFuZV9zMzIoX19wMF8zMDksIF9fcDFfMzA5LCBfX3AyXzMwOSwgX19wM18zMDkpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDRfdCBfX3MwXzMwOSA9IF9fcDBfMzA5OyBcCiAgaW50MzJ4NF90IF9fczFfMzA5ID0gX19wMV8zMDk7IFwKICBpbnQzMngyX3QgX19zMl8zMDkgPSBfX3AyXzMwOTsgXAogIGludDMyeDRfdCBfX3JldF8zMDk7IFwKICBfX3JldF8zMDkgPSB2cWFkZHFfczMyKF9fczBfMzA5LCB2cXJkbXVsaHFfczMyKF9fczFfMzA5LCBzcGxhdHFfbGFuZV9zMzIoX19zMl8zMDksIF9fcDNfMzA5KSkpOyBcCiAgX19yZXRfMzA5OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFyZG1sYWhxX2xhbmVfczMyKF9fcDBfMzEwLCBfX3AxXzMxMCwgX19wMl8zMTAsIF9fcDNfMzEwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMF8zMTAgPSBfX3AwXzMxMDsgXAogIGludDMyeDRfdCBfX3MxXzMxMCA9IF9fcDFfMzEwOyBcCiAgaW50MzJ4Ml90IF9fczJfMzEwID0gX19wMl8zMTA7IFwKICBpbnQzMng0X3QgX19yZXYwXzMxMDsgIF9fcmV2MF8zMTAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzMxMCwgX19zMF8zMTAsIDMsIDIsIDEsIDApOyBcCiAgaW50MzJ4NF90IF9fcmV2MV8zMTA7ICBfX3JldjFfMzEwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV8zMTAsIF9fczFfMzEwLCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDJfdCBfX3JldjJfMzEwOyAgX19yZXYyXzMxMCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfMzEwLCBfX3MyXzMxMCwgMSwgMCk7IFwKICBpbnQzMng0X3QgX19yZXRfMzEwOyBcCiAgX19yZXRfMzEwID0gX19ub3N3YXBfdnFhZGRxX3MzMihfX3JldjBfMzEwLCBfX25vc3dhcF92cXJkbXVsaHFfczMyKF9fcmV2MV8zMTAsIF9fbm9zd2FwX3NwbGF0cV9sYW5lX3MzMihfX3JldjJfMzEwLCBfX3AzXzMxMCkpKTsgXAogIF9fcmV0XzMxMCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzMxMCwgX19yZXRfMzEwLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzMxMDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZxcmRtbGFocV9sYW5lX3MxNihfX3AwXzMxMSwgX19wMV8zMTEsIF9fcDJfMzExLCBfX3AzXzMxMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OF90IF9fczBfMzExID0gX19wMF8zMTE7IFwKICBpbnQxNng4X3QgX19zMV8zMTEgPSBfX3AxXzMxMTsgXAogIGludDE2eDRfdCBfX3MyXzMxMSA9IF9fcDJfMzExOyBcCiAgaW50MTZ4OF90IF9fcmV0XzMxMTsgXAogIF9fcmV0XzMxMSA9IHZxYWRkcV9zMTYoX19zMF8zMTEsIHZxcmRtdWxocV9zMTYoX19zMV8zMTEsIHNwbGF0cV9sYW5lX3MxNihfX3MyXzMxMSwgX19wM18zMTEpKSk7IFwKICBfX3JldF8zMTE7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cXJkbWxhaHFfbGFuZV9zMTYoX19wMF8zMTIsIF9fcDFfMzEyLCBfX3AyXzMxMiwgX19wM18zMTIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDhfdCBfX3MwXzMxMiA9IF9fcDBfMzEyOyBcCiAgaW50MTZ4OF90IF9fczFfMzEyID0gX19wMV8zMTI7IFwKICBpbnQxNng0X3QgX19zMl8zMTIgPSBfX3AyXzMxMjsgXAogIGludDE2eDhfdCBfX3JldjBfMzEyOyAgX19yZXYwXzMxMiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfMzEyLCBfX3MwXzMxMiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng4X3QgX19yZXYxXzMxMjsgIF9fcmV2MV8zMTIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzMxMiwgX19zMV8zMTIsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4NF90IF9fcmV2Ml8zMTI7ICBfX3JldjJfMzEyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl8zMTIsIF9fczJfMzEyLCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDhfdCBfX3JldF8zMTI7IFwKICBfX3JldF8zMTIgPSBfX25vc3dhcF92cWFkZHFfczE2KF9fcmV2MF8zMTIsIF9fbm9zd2FwX3ZxcmRtdWxocV9zMTYoX19yZXYxXzMxMiwgX19ub3N3YXBfc3BsYXRxX2xhbmVfczE2KF9fcmV2Ml8zMTIsIF9fcDNfMzEyKSkpOyBcCiAgX19yZXRfMzEyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMzEyLCBfX3JldF8zMTIsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfMzEyOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFyZG1sYWhfbGFuZV9zMzIoX19wMF8zMTMsIF9fcDFfMzEzLCBfX3AyXzMxMywgX19wM18zMTMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJfdCBfX3MwXzMxMyA9IF9fcDBfMzEzOyBcCiAgaW50MzJ4Ml90IF9fczFfMzEzID0gX19wMV8zMTM7IFwKICBpbnQzMngyX3QgX19zMl8zMTMgPSBfX3AyXzMxMzsgXAogIGludDMyeDJfdCBfX3JldF8zMTM7IFwKICBfX3JldF8zMTMgPSB2cWFkZF9zMzIoX19zMF8zMTMsIHZxcmRtdWxoX3MzMihfX3MxXzMxMywgc3BsYXRfbGFuZV9zMzIoX19zMl8zMTMsIF9fcDNfMzEzKSkpOyBcCiAgX19yZXRfMzEzOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFyZG1sYWhfbGFuZV9zMzIoX19wMF8zMTQsIF9fcDFfMzE0LCBfX3AyXzMxNCwgX19wM18zMTQpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJfdCBfX3MwXzMxNCA9IF9fcDBfMzE0OyBcCiAgaW50MzJ4Ml90IF9fczFfMzE0ID0gX19wMV8zMTQ7IFwKICBpbnQzMngyX3QgX19zMl8zMTQgPSBfX3AyXzMxNDsgXAogIGludDMyeDJfdCBfX3JldjBfMzE0OyAgX19yZXYwXzMxNCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfMzE0LCBfX3MwXzMxNCwgMSwgMCk7IFwKICBpbnQzMngyX3QgX19yZXYxXzMxNDsgIF9fcmV2MV8zMTQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzMxNCwgX19zMV8zMTQsIDEsIDApOyBcCiAgaW50MzJ4Ml90IF9fcmV2Ml8zMTQ7ICBfX3JldjJfMzE0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl8zMTQsIF9fczJfMzE0LCAxLCAwKTsgXAogIGludDMyeDJfdCBfX3JldF8zMTQ7IFwKICBfX3JldF8zMTQgPSBfX25vc3dhcF92cWFkZF9zMzIoX19yZXYwXzMxNCwgX19ub3N3YXBfdnFyZG11bGhfczMyKF9fcmV2MV8zMTQsIF9fbm9zd2FwX3NwbGF0X2xhbmVfczMyKF9fcmV2Ml8zMTQsIF9fcDNfMzE0KSkpOyBcCiAgX19yZXRfMzE0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMzE0LCBfX3JldF8zMTQsIDEsIDApOyBcCiAgX19yZXRfMzE0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFyZG1sYWhfbGFuZV9zMTYoX19wMF8zMTUsIF9fcDFfMzE1LCBfX3AyXzMxNSwgX19wM18zMTUpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDRfdCBfX3MwXzMxNSA9IF9fcDBfMzE1OyBcCiAgaW50MTZ4NF90IF9fczFfMzE1ID0gX19wMV8zMTU7IFwKICBpbnQxNng0X3QgX19zMl8zMTUgPSBfX3AyXzMxNTsgXAogIGludDE2eDRfdCBfX3JldF8zMTU7IFwKICBfX3JldF8zMTUgPSB2cWFkZF9zMTYoX19zMF8zMTUsIHZxcmRtdWxoX3MxNihfX3MxXzMxNSwgc3BsYXRfbGFuZV9zMTYoX19zMl8zMTUsIF9fcDNfMzE1KSkpOyBcCiAgX19yZXRfMzE1OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFyZG1sYWhfbGFuZV9zMTYoX19wMF8zMTYsIF9fcDFfMzE2LCBfX3AyXzMxNiwgX19wM18zMTYpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDRfdCBfX3MwXzMxNiA9IF9fcDBfMzE2OyBcCiAgaW50MTZ4NF90IF9fczFfMzE2ID0gX19wMV8zMTY7IFwKICBpbnQxNng0X3QgX19zMl8zMTYgPSBfX3AyXzMxNjsgXAogIGludDE2eDRfdCBfX3JldjBfMzE2OyAgX19yZXYwXzMxNiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfMzE2LCBfX3MwXzMxNiwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng0X3QgX19yZXYxXzMxNjsgIF9fcmV2MV8zMTYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzMxNiwgX19zMV8zMTYsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4NF90IF9fcmV2Ml8zMTY7ICBfX3JldjJfMzE2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl8zMTYsIF9fczJfMzE2LCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDRfdCBfX3JldF8zMTY7IFwKICBfX3JldF8zMTYgPSBfX25vc3dhcF92cWFkZF9zMTYoX19yZXYwXzMxNiwgX19ub3N3YXBfdnFyZG11bGhfczE2KF9fcmV2MV8zMTYsIF9fbm9zd2FwX3NwbGF0X2xhbmVfczE2KF9fcmV2Ml8zMTYsIF9fcDNfMzE2KSkpOyBcCiAgX19yZXRfMzE2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMzE2LCBfX3JldF8zMTYsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfMzE2OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4NF90IHZxcmRtbHNocV9zMzIoaW50MzJ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxLCBpbnQzMng0X3QgX19wMikgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IHZxc3VicV9zMzIoX19wMCwgdnFyZG11bGhxX3MzMihfX3AxLCBfX3AyKSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4NF90IHZxcmRtbHNocV9zMzIoaW50MzJ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxLCBpbnQzMng0X3QgX19wMikgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3Zxc3VicV9zMzIoX19yZXYwLCBfX25vc3dhcF92cXJkbXVsaHFfczMyKF9fcmV2MSwgX19yZXYyKSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDhfdCB2cXJkbWxzaHFfczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSwgaW50MTZ4OF90IF9fcDIpIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSB2cXN1YnFfczE2KF9fcDAsIHZxcmRtdWxocV9zMTYoX19wMSwgX19wMikpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDhfdCB2cXJkbWxzaHFfczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSwgaW50MTZ4OF90IF9fcDIpIHsKICBpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92cXN1YnFfczE2KF9fcmV2MCwgX19ub3N3YXBfdnFyZG11bGhxX3MxNihfX3JldjEsIF9fcmV2MikpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMngyX3QgdnFyZG1sc2hfczMyKGludDMyeDJfdCBfX3AwLCBpbnQzMngyX3QgX19wMSwgaW50MzJ4Ml90IF9fcDIpIHsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSB2cXN1Yl9zMzIoX19wMCwgdnFyZG11bGhfczMyKF9fcDEsIF9fcDIpKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMngyX3QgdnFyZG1sc2hfczMyKGludDMyeDJfdCBfX3AwLCBpbnQzMngyX3QgX19wMSwgaW50MzJ4Ml90IF9fcDIpIHsKICBpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGludDMyeDJfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92cXN1Yl9zMzIoX19yZXYwLCBfX25vc3dhcF92cXJkbXVsaF9zMzIoX19yZXYxLCBfX3JldjIpKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZ4NF90IHZxcmRtbHNoX3MxNihpbnQxNng0X3QgX19wMCwgaW50MTZ4NF90IF9fcDEsIGludDE2eDRfdCBfX3AyKSB7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gdnFzdWJfczE2KF9fcDAsIHZxcmRtdWxoX3MxNihfX3AxLCBfX3AyKSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4NF90IHZxcmRtbHNoX3MxNihpbnQxNng0X3QgX19wMCwgaW50MTZ4NF90IF9fcDEsIGludDE2eDRfdCBfX3AyKSB7CiAgaW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdnFzdWJfczE2KF9fcmV2MCwgX19ub3N3YXBfdnFyZG11bGhfczE2KF9fcmV2MSwgX19yZXYyKSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZxcmRtbHNocV9sYW5lX3MzMihfX3AwXzMxNywgX19wMV8zMTcsIF9fcDJfMzE3LCBfX3AzXzMxNykgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczBfMzE3ID0gX19wMF8zMTc7IFwKICBpbnQzMng0X3QgX19zMV8zMTcgPSBfX3AxXzMxNzsgXAogIGludDMyeDJfdCBfX3MyXzMxNyA9IF9fcDJfMzE3OyBcCiAgaW50MzJ4NF90IF9fcmV0XzMxNzsgXAogIF9fcmV0XzMxNyA9IHZxc3VicV9zMzIoX19zMF8zMTcsIHZxcmRtdWxocV9zMzIoX19zMV8zMTcsIHNwbGF0cV9sYW5lX3MzMihfX3MyXzMxNywgX19wM18zMTcpKSk7IFwKICBfX3JldF8zMTc7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cXJkbWxzaHFfbGFuZV9zMzIoX19wMF8zMTgsIF9fcDFfMzE4LCBfX3AyXzMxOCwgX19wM18zMTgpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDRfdCBfX3MwXzMxOCA9IF9fcDBfMzE4OyBcCiAgaW50MzJ4NF90IF9fczFfMzE4ID0gX19wMV8zMTg7IFwKICBpbnQzMngyX3QgX19zMl8zMTggPSBfX3AyXzMxODsgXAogIGludDMyeDRfdCBfX3JldjBfMzE4OyAgX19yZXYwXzMxOCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfMzE4LCBfX3MwXzMxOCwgMywgMiwgMSwgMCk7IFwKICBpbnQzMng0X3QgX19yZXYxXzMxODsgIF9fcmV2MV8zMTggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzMxOCwgX19zMV8zMTgsIDMsIDIsIDEsIDApOyBcCiAgaW50MzJ4Ml90IF9fcmV2Ml8zMTg7ICBfX3JldjJfMzE4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl8zMTgsIF9fczJfMzE4LCAxLCAwKTsgXAogIGludDMyeDRfdCBfX3JldF8zMTg7IFwKICBfX3JldF8zMTggPSBfX25vc3dhcF92cXN1YnFfczMyKF9fcmV2MF8zMTgsIF9fbm9zd2FwX3ZxcmRtdWxocV9zMzIoX19yZXYxXzMxOCwgX19ub3N3YXBfc3BsYXRxX2xhbmVfczMyKF9fcmV2Ml8zMTgsIF9fcDNfMzE4KSkpOyBcCiAgX19yZXRfMzE4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMzE4LCBfX3JldF8zMTgsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfMzE4OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFyZG1sc2hxX2xhbmVfczE2KF9fcDBfMzE5LCBfX3AxXzMxOSwgX19wMl8zMTksIF9fcDNfMzE5KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4X3QgX19zMF8zMTkgPSBfX3AwXzMxOTsgXAogIGludDE2eDhfdCBfX3MxXzMxOSA9IF9fcDFfMzE5OyBcCiAgaW50MTZ4NF90IF9fczJfMzE5ID0gX19wMl8zMTk7IFwKICBpbnQxNng4X3QgX19yZXRfMzE5OyBcCiAgX19yZXRfMzE5ID0gdnFzdWJxX3MxNihfX3MwXzMxOSwgdnFyZG11bGhxX3MxNihfX3MxXzMxOSwgc3BsYXRxX2xhbmVfczE2KF9fczJfMzE5LCBfX3AzXzMxOSkpKTsgXAogIF9fcmV0XzMxOTsgXAp9KQojZWxzZQojZGVmaW5lIHZxcmRtbHNocV9sYW5lX3MxNihfX3AwXzMyMCwgX19wMV8zMjAsIF9fcDJfMzIwLCBfX3AzXzMyMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OF90IF9fczBfMzIwID0gX19wMF8zMjA7IFwKICBpbnQxNng4X3QgX19zMV8zMjAgPSBfX3AxXzMyMDsgXAogIGludDE2eDRfdCBfX3MyXzMyMCA9IF9fcDJfMzIwOyBcCiAgaW50MTZ4OF90IF9fcmV2MF8zMjA7ICBfX3JldjBfMzIwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8zMjAsIF9fczBfMzIwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDhfdCBfX3JldjFfMzIwOyAgX19yZXYxXzMyMCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfMzIwLCBfX3MxXzMyMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng0X3QgX19yZXYyXzMyMDsgIF9fcmV2Ml8zMjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzMyMCwgX19zMl8zMjAsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4OF90IF9fcmV0XzMyMDsgXAogIF9fcmV0XzMyMCA9IF9fbm9zd2FwX3Zxc3VicV9zMTYoX19yZXYwXzMyMCwgX19ub3N3YXBfdnFyZG11bGhxX3MxNihfX3JldjFfMzIwLCBfX25vc3dhcF9zcGxhdHFfbGFuZV9zMTYoX19yZXYyXzMyMCwgX19wM18zMjApKSk7IFwKICBfX3JldF8zMjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8zMjAsIF9fcmV0XzMyMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF8zMjA7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cXJkbWxzaF9sYW5lX3MzMihfX3AwXzMyMSwgX19wMV8zMjEsIF9fcDJfMzIxLCBfX3AzXzMyMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Ml90IF9fczBfMzIxID0gX19wMF8zMjE7IFwKICBpbnQzMngyX3QgX19zMV8zMjEgPSBfX3AxXzMyMTsgXAogIGludDMyeDJfdCBfX3MyXzMyMSA9IF9fcDJfMzIxOyBcCiAgaW50MzJ4Ml90IF9fcmV0XzMyMTsgXAogIF9fcmV0XzMyMSA9IHZxc3ViX3MzMihfX3MwXzMyMSwgdnFyZG11bGhfczMyKF9fczFfMzIxLCBzcGxhdF9sYW5lX3MzMihfX3MyXzMyMSwgX19wM18zMjEpKSk7IFwKICBfX3JldF8zMjE7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cXJkbWxzaF9sYW5lX3MzMihfX3AwXzMyMiwgX19wMV8zMjIsIF9fcDJfMzIyLCBfX3AzXzMyMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Ml90IF9fczBfMzIyID0gX19wMF8zMjI7IFwKICBpbnQzMngyX3QgX19zMV8zMjIgPSBfX3AxXzMyMjsgXAogIGludDMyeDJfdCBfX3MyXzMyMiA9IF9fcDJfMzIyOyBcCiAgaW50MzJ4Ml90IF9fcmV2MF8zMjI7ICBfX3JldjBfMzIyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8zMjIsIF9fczBfMzIyLCAxLCAwKTsgXAogIGludDMyeDJfdCBfX3JldjFfMzIyOyAgX19yZXYxXzMyMiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfMzIyLCBfX3MxXzMyMiwgMSwgMCk7IFwKICBpbnQzMngyX3QgX19yZXYyXzMyMjsgIF9fcmV2Ml8zMjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzMyMiwgX19zMl8zMjIsIDEsIDApOyBcCiAgaW50MzJ4Ml90IF9fcmV0XzMyMjsgXAogIF9fcmV0XzMyMiA9IF9fbm9zd2FwX3Zxc3ViX3MzMihfX3JldjBfMzIyLCBfX25vc3dhcF92cXJkbXVsaF9zMzIoX19yZXYxXzMyMiwgX19ub3N3YXBfc3BsYXRfbGFuZV9zMzIoX19yZXYyXzMyMiwgX19wM18zMjIpKSk7IFwKICBfX3JldF8zMjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8zMjIsIF9fcmV0XzMyMiwgMSwgMCk7IFwKICBfX3JldF8zMjI7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cXJkbWxzaF9sYW5lX3MxNihfX3AwXzMyMywgX19wMV8zMjMsIF9fcDJfMzIzLCBfX3AzXzMyMykgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NF90IF9fczBfMzIzID0gX19wMF8zMjM7IFwKICBpbnQxNng0X3QgX19zMV8zMjMgPSBfX3AxXzMyMzsgXAogIGludDE2eDRfdCBfX3MyXzMyMyA9IF9fcDJfMzIzOyBcCiAgaW50MTZ4NF90IF9fcmV0XzMyMzsgXAogIF9fcmV0XzMyMyA9IHZxc3ViX3MxNihfX3MwXzMyMywgdnFyZG11bGhfczE2KF9fczFfMzIzLCBzcGxhdF9sYW5lX3MxNihfX3MyXzMyMywgX19wM18zMjMpKSk7IFwKICBfX3JldF8zMjM7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cXJkbWxzaF9sYW5lX3MxNihfX3AwXzMyNCwgX19wMV8zMjQsIF9fcDJfMzI0LCBfX3AzXzMyNCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NF90IF9fczBfMzI0ID0gX19wMF8zMjQ7IFwKICBpbnQxNng0X3QgX19zMV8zMjQgPSBfX3AxXzMyNDsgXAogIGludDE2eDRfdCBfX3MyXzMyNCA9IF9fcDJfMzI0OyBcCiAgaW50MTZ4NF90IF9fcmV2MF8zMjQ7ICBfX3JldjBfMzI0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8zMjQsIF9fczBfMzI0LCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDRfdCBfX3JldjFfMzI0OyAgX19yZXYxXzMyNCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfMzI0LCBfX3MxXzMyNCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng0X3QgX19yZXYyXzMyNDsgIF9fcmV2Ml8zMjQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzMyNCwgX19zMl8zMjQsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4NF90IF9fcmV0XzMyNDsgXAogIF9fcmV0XzMyNCA9IF9fbm9zd2FwX3Zxc3ViX3MxNihfX3JldjBfMzI0LCBfX25vc3dhcF92cXJkbXVsaF9zMTYoX19yZXYxXzMyNCwgX19ub3N3YXBfc3BsYXRfbGFuZV9zMTYoX19yZXYyXzMyNCwgX19wM18zMjQpKSk7IFwKICBfX3JldF8zMjQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8zMjQsIF9fcmV0XzMyNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF8zMjQ7IFwKfSkKI2VuZGlmCgojZW5kaWYKI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9RUkRNWCkgJiYgZGVmaW5lZChfX2FhcmNoNjRfXykKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFyZG1sYWhxX2xhbmVxX3MzMihfX3AwXzMyNSwgX19wMV8zMjUsIF9fcDJfMzI1LCBfX3AzXzMyNSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczBfMzI1ID0gX19wMF8zMjU7IFwKICBpbnQzMng0X3QgX19zMV8zMjUgPSBfX3AxXzMyNTsgXAogIGludDMyeDRfdCBfX3MyXzMyNSA9IF9fcDJfMzI1OyBcCiAgaW50MzJ4NF90IF9fcmV0XzMyNTsgXAogIF9fcmV0XzMyNSA9IHZxYWRkcV9zMzIoX19zMF8zMjUsIHZxcmRtdWxocV9zMzIoX19zMV8zMjUsIHNwbGF0cV9sYW5lcV9zMzIoX19zMl8zMjUsIF9fcDNfMzI1KSkpOyBcCiAgX19yZXRfMzI1OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFyZG1sYWhxX2xhbmVxX3MzMihfX3AwXzMyNiwgX19wMV8zMjYsIF9fcDJfMzI2LCBfX3AzXzMyNikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczBfMzI2ID0gX19wMF8zMjY7IFwKICBpbnQzMng0X3QgX19zMV8zMjYgPSBfX3AxXzMyNjsgXAogIGludDMyeDRfdCBfX3MyXzMyNiA9IF9fcDJfMzI2OyBcCiAgaW50MzJ4NF90IF9fcmV2MF8zMjY7ICBfX3JldjBfMzI2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8zMjYsIF9fczBfMzI2LCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDRfdCBfX3JldjFfMzI2OyAgX19yZXYxXzMyNiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfMzI2LCBfX3MxXzMyNiwgMywgMiwgMSwgMCk7IFwKICBpbnQzMng0X3QgX19yZXYyXzMyNjsgIF9fcmV2Ml8zMjYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzMyNiwgX19zMl8zMjYsIDMsIDIsIDEsIDApOyBcCiAgaW50MzJ4NF90IF9fcmV0XzMyNjsgXAogIF9fcmV0XzMyNiA9IF9fbm9zd2FwX3ZxYWRkcV9zMzIoX19yZXYwXzMyNiwgX19ub3N3YXBfdnFyZG11bGhxX3MzMihfX3JldjFfMzI2LCBfX25vc3dhcF9zcGxhdHFfbGFuZXFfczMyKF9fcmV2Ml8zMjYsIF9fcDNfMzI2KSkpOyBcCiAgX19yZXRfMzI2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMzI2LCBfX3JldF8zMjYsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfMzI2OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFyZG1sYWhxX2xhbmVxX3MxNihfX3AwXzMyNywgX19wMV8zMjcsIF9fcDJfMzI3LCBfX3AzXzMyNykgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OF90IF9fczBfMzI3ID0gX19wMF8zMjc7IFwKICBpbnQxNng4X3QgX19zMV8zMjcgPSBfX3AxXzMyNzsgXAogIGludDE2eDhfdCBfX3MyXzMyNyA9IF9fcDJfMzI3OyBcCiAgaW50MTZ4OF90IF9fcmV0XzMyNzsgXAogIF9fcmV0XzMyNyA9IHZxYWRkcV9zMTYoX19zMF8zMjcsIHZxcmRtdWxocV9zMTYoX19zMV8zMjcsIHNwbGF0cV9sYW5lcV9zMTYoX19zMl8zMjcsIF9fcDNfMzI3KSkpOyBcCiAgX19yZXRfMzI3OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFyZG1sYWhxX2xhbmVxX3MxNihfX3AwXzMyOCwgX19wMV8zMjgsIF9fcDJfMzI4LCBfX3AzXzMyOCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OF90IF9fczBfMzI4ID0gX19wMF8zMjg7IFwKICBpbnQxNng4X3QgX19zMV8zMjggPSBfX3AxXzMyODsgXAogIGludDE2eDhfdCBfX3MyXzMyOCA9IF9fcDJfMzI4OyBcCiAgaW50MTZ4OF90IF9fcmV2MF8zMjg7ICBfX3JldjBfMzI4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8zMjgsIF9fczBfMzI4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDhfdCBfX3JldjFfMzI4OyAgX19yZXYxXzMyOCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfMzI4LCBfX3MxXzMyOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng4X3QgX19yZXYyXzMyODsgIF9fcmV2Ml8zMjggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzMyOCwgX19zMl8zMjgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4OF90IF9fcmV0XzMyODsgXAogIF9fcmV0XzMyOCA9IF9fbm9zd2FwX3ZxYWRkcV9zMTYoX19yZXYwXzMyOCwgX19ub3N3YXBfdnFyZG11bGhxX3MxNihfX3JldjFfMzI4LCBfX25vc3dhcF9zcGxhdHFfbGFuZXFfczE2KF9fcmV2Ml8zMjgsIF9fcDNfMzI4KSkpOyBcCiAgX19yZXRfMzI4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMzI4LCBfX3JldF8zMjgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfMzI4OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFyZG1sYWhfbGFuZXFfczMyKF9fcDBfMzI5LCBfX3AxXzMyOSwgX19wMl8zMjksIF9fcDNfMzI5KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMngyX3QgX19zMF8zMjkgPSBfX3AwXzMyOTsgXAogIGludDMyeDJfdCBfX3MxXzMyOSA9IF9fcDFfMzI5OyBcCiAgaW50MzJ4NF90IF9fczJfMzI5ID0gX19wMl8zMjk7IFwKICBpbnQzMngyX3QgX19yZXRfMzI5OyBcCiAgX19yZXRfMzI5ID0gdnFhZGRfczMyKF9fczBfMzI5LCB2cXJkbXVsaF9zMzIoX19zMV8zMjksIHNwbGF0X2xhbmVxX3MzMihfX3MyXzMyOSwgX19wM18zMjkpKSk7IFwKICBfX3JldF8zMjk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cXJkbWxhaF9sYW5lcV9zMzIoX19wMF8zMzAsIF9fcDFfMzMwLCBfX3AyXzMzMCwgX19wM18zMzApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJfdCBfX3MwXzMzMCA9IF9fcDBfMzMwOyBcCiAgaW50MzJ4Ml90IF9fczFfMzMwID0gX19wMV8zMzA7IFwKICBpbnQzMng0X3QgX19zMl8zMzAgPSBfX3AyXzMzMDsgXAogIGludDMyeDJfdCBfX3JldjBfMzMwOyAgX19yZXYwXzMzMCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfMzMwLCBfX3MwXzMzMCwgMSwgMCk7IFwKICBpbnQzMngyX3QgX19yZXYxXzMzMDsgIF9fcmV2MV8zMzAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzMzMCwgX19zMV8zMzAsIDEsIDApOyBcCiAgaW50MzJ4NF90IF9fcmV2Ml8zMzA7ICBfX3JldjJfMzMwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl8zMzAsIF9fczJfMzMwLCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDJfdCBfX3JldF8zMzA7IFwKICBfX3JldF8zMzAgPSBfX25vc3dhcF92cWFkZF9zMzIoX19yZXYwXzMzMCwgX19ub3N3YXBfdnFyZG11bGhfczMyKF9fcmV2MV8zMzAsIF9fbm9zd2FwX3NwbGF0X2xhbmVxX3MzMihfX3JldjJfMzMwLCBfX3AzXzMzMCkpKTsgXAogIF9fcmV0XzMzMCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzMzMCwgX19yZXRfMzMwLCAxLCAwKTsgXAogIF9fcmV0XzMzMDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZxcmRtbGFoX2xhbmVxX3MxNihfX3AwXzMzMSwgX19wMV8zMzEsIF9fcDJfMzMxLCBfX3AzXzMzMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NF90IF9fczBfMzMxID0gX19wMF8zMzE7IFwKICBpbnQxNng0X3QgX19zMV8zMzEgPSBfX3AxXzMzMTsgXAogIGludDE2eDhfdCBfX3MyXzMzMSA9IF9fcDJfMzMxOyBcCiAgaW50MTZ4NF90IF9fcmV0XzMzMTsgXAogIF9fcmV0XzMzMSA9IHZxYWRkX3MxNihfX3MwXzMzMSwgdnFyZG11bGhfczE2KF9fczFfMzMxLCBzcGxhdF9sYW5lcV9zMTYoX19zMl8zMzEsIF9fcDNfMzMxKSkpOyBcCiAgX19yZXRfMzMxOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFyZG1sYWhfbGFuZXFfczE2KF9fcDBfMzMyLCBfX3AxXzMzMiwgX19wMl8zMzIsIF9fcDNfMzMyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng0X3QgX19zMF8zMzIgPSBfX3AwXzMzMjsgXAogIGludDE2eDRfdCBfX3MxXzMzMiA9IF9fcDFfMzMyOyBcCiAgaW50MTZ4OF90IF9fczJfMzMyID0gX19wMl8zMzI7IFwKICBpbnQxNng0X3QgX19yZXYwXzMzMjsgIF9fcmV2MF8zMzIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzMzMiwgX19zMF8zMzIsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4NF90IF9fcmV2MV8zMzI7ICBfX3JldjFfMzMyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV8zMzIsIF9fczFfMzMyLCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDhfdCBfX3JldjJfMzMyOyAgX19yZXYyXzMzMiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfMzMyLCBfX3MyXzMzMiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng0X3QgX19yZXRfMzMyOyBcCiAgX19yZXRfMzMyID0gX19ub3N3YXBfdnFhZGRfczE2KF9fcmV2MF8zMzIsIF9fbm9zd2FwX3ZxcmRtdWxoX3MxNihfX3JldjFfMzMyLCBfX25vc3dhcF9zcGxhdF9sYW5lcV9zMTYoX19yZXYyXzMzMiwgX19wM18zMzIpKSk7IFwKICBfX3JldF8zMzIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8zMzIsIF9fcmV0XzMzMiwgMywgMiwgMSwgMCk7IFwKICBfX3JldF8zMzI7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cXJkbWxzaHFfbGFuZXFfczMyKF9fcDBfMzMzLCBfX3AxXzMzMywgX19wMl8zMzMsIF9fcDNfMzMzKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMF8zMzMgPSBfX3AwXzMzMzsgXAogIGludDMyeDRfdCBfX3MxXzMzMyA9IF9fcDFfMzMzOyBcCiAgaW50MzJ4NF90IF9fczJfMzMzID0gX19wMl8zMzM7IFwKICBpbnQzMng0X3QgX19yZXRfMzMzOyBcCiAgX19yZXRfMzMzID0gdnFzdWJxX3MzMihfX3MwXzMzMywgdnFyZG11bGhxX3MzMihfX3MxXzMzMywgc3BsYXRxX2xhbmVxX3MzMihfX3MyXzMzMywgX19wM18zMzMpKSk7IFwKICBfX3JldF8zMzM7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cXJkbWxzaHFfbGFuZXFfczMyKF9fcDBfMzM0LCBfX3AxXzMzNCwgX19wMl8zMzQsIF9fcDNfMzM0KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMF8zMzQgPSBfX3AwXzMzNDsgXAogIGludDMyeDRfdCBfX3MxXzMzNCA9IF9fcDFfMzM0OyBcCiAgaW50MzJ4NF90IF9fczJfMzM0ID0gX19wMl8zMzQ7IFwKICBpbnQzMng0X3QgX19yZXYwXzMzNDsgIF9fcmV2MF8zMzQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzMzNCwgX19zMF8zMzQsIDMsIDIsIDEsIDApOyBcCiAgaW50MzJ4NF90IF9fcmV2MV8zMzQ7ICBfX3JldjFfMzM0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV8zMzQsIF9fczFfMzM0LCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDRfdCBfX3JldjJfMzM0OyAgX19yZXYyXzMzNCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfMzM0LCBfX3MyXzMzNCwgMywgMiwgMSwgMCk7IFwKICBpbnQzMng0X3QgX19yZXRfMzM0OyBcCiAgX19yZXRfMzM0ID0gX19ub3N3YXBfdnFzdWJxX3MzMihfX3JldjBfMzM0LCBfX25vc3dhcF92cXJkbXVsaHFfczMyKF9fcmV2MV8zMzQsIF9fbm9zd2FwX3NwbGF0cV9sYW5lcV9zMzIoX19yZXYyXzMzNCwgX19wM18zMzQpKSk7IFwKICBfX3JldF8zMzQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8zMzQsIF9fcmV0XzMzNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF8zMzQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cXJkbWxzaHFfbGFuZXFfczE2KF9fcDBfMzM1LCBfX3AxXzMzNSwgX19wMl8zMzUsIF9fcDNfMzM1KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4X3QgX19zMF8zMzUgPSBfX3AwXzMzNTsgXAogIGludDE2eDhfdCBfX3MxXzMzNSA9IF9fcDFfMzM1OyBcCiAgaW50MTZ4OF90IF9fczJfMzM1ID0gX19wMl8zMzU7IFwKICBpbnQxNng4X3QgX19yZXRfMzM1OyBcCiAgX19yZXRfMzM1ID0gdnFzdWJxX3MxNihfX3MwXzMzNSwgdnFyZG11bGhxX3MxNihfX3MxXzMzNSwgc3BsYXRxX2xhbmVxX3MxNihfX3MyXzMzNSwgX19wM18zMzUpKSk7IFwKICBfX3JldF8zMzU7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cXJkbWxzaHFfbGFuZXFfczE2KF9fcDBfMzM2LCBfX3AxXzMzNiwgX19wMl8zMzYsIF9fcDNfMzM2KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4X3QgX19zMF8zMzYgPSBfX3AwXzMzNjsgXAogIGludDE2eDhfdCBfX3MxXzMzNiA9IF9fcDFfMzM2OyBcCiAgaW50MTZ4OF90IF9fczJfMzM2ID0gX19wMl8zMzY7IFwKICBpbnQxNng4X3QgX19yZXYwXzMzNjsgIF9fcmV2MF8zMzYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzMzNiwgX19zMF8zMzYsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4OF90IF9fcmV2MV8zMzY7ICBfX3JldjFfMzM2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV8zMzYsIF9fczFfMzM2LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDhfdCBfX3JldjJfMzM2OyAgX19yZXYyXzMzNiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfMzM2LCBfX3MyXzMzNiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng4X3QgX19yZXRfMzM2OyBcCiAgX19yZXRfMzM2ID0gX19ub3N3YXBfdnFzdWJxX3MxNihfX3JldjBfMzM2LCBfX25vc3dhcF92cXJkbXVsaHFfczE2KF9fcmV2MV8zMzYsIF9fbm9zd2FwX3NwbGF0cV9sYW5lcV9zMTYoX19yZXYyXzMzNiwgX19wM18zMzYpKSk7IFwKICBfX3JldF8zMzYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8zMzYsIF9fcmV0XzMzNiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF8zMzY7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cXJkbWxzaF9sYW5lcV9zMzIoX19wMF8zMzcsIF9fcDFfMzM3LCBfX3AyXzMzNywgX19wM18zMzcpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJfdCBfX3MwXzMzNyA9IF9fcDBfMzM3OyBcCiAgaW50MzJ4Ml90IF9fczFfMzM3ID0gX19wMV8zMzc7IFwKICBpbnQzMng0X3QgX19zMl8zMzcgPSBfX3AyXzMzNzsgXAogIGludDMyeDJfdCBfX3JldF8zMzc7IFwKICBfX3JldF8zMzcgPSB2cXN1Yl9zMzIoX19zMF8zMzcsIHZxcmRtdWxoX3MzMihfX3MxXzMzNywgc3BsYXRfbGFuZXFfczMyKF9fczJfMzM3LCBfX3AzXzMzNykpKTsgXAogIF9fcmV0XzMzNzsgXAp9KQojZWxzZQojZGVmaW5lIHZxcmRtbHNoX2xhbmVxX3MzMihfX3AwXzMzOCwgX19wMV8zMzgsIF9fcDJfMzM4LCBfX3AzXzMzOCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Ml90IF9fczBfMzM4ID0gX19wMF8zMzg7IFwKICBpbnQzMngyX3QgX19zMV8zMzggPSBfX3AxXzMzODsgXAogIGludDMyeDRfdCBfX3MyXzMzOCA9IF9fcDJfMzM4OyBcCiAgaW50MzJ4Ml90IF9fcmV2MF8zMzg7ICBfX3JldjBfMzM4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8zMzgsIF9fczBfMzM4LCAxLCAwKTsgXAogIGludDMyeDJfdCBfX3JldjFfMzM4OyAgX19yZXYxXzMzOCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfMzM4LCBfX3MxXzMzOCwgMSwgMCk7IFwKICBpbnQzMng0X3QgX19yZXYyXzMzODsgIF9fcmV2Ml8zMzggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzMzOCwgX19zMl8zMzgsIDMsIDIsIDEsIDApOyBcCiAgaW50MzJ4Ml90IF9fcmV0XzMzODsgXAogIF9fcmV0XzMzOCA9IF9fbm9zd2FwX3Zxc3ViX3MzMihfX3JldjBfMzM4LCBfX25vc3dhcF92cXJkbXVsaF9zMzIoX19yZXYxXzMzOCwgX19ub3N3YXBfc3BsYXRfbGFuZXFfczMyKF9fcmV2Ml8zMzgsIF9fcDNfMzM4KSkpOyBcCiAgX19yZXRfMzM4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMzM4LCBfX3JldF8zMzgsIDEsIDApOyBcCiAgX19yZXRfMzM4OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFyZG1sc2hfbGFuZXFfczE2KF9fcDBfMzM5LCBfX3AxXzMzOSwgX19wMl8zMzksIF9fcDNfMzM5KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng0X3QgX19zMF8zMzkgPSBfX3AwXzMzOTsgXAogIGludDE2eDRfdCBfX3MxXzMzOSA9IF9fcDFfMzM5OyBcCiAgaW50MTZ4OF90IF9fczJfMzM5ID0gX19wMl8zMzk7IFwKICBpbnQxNng0X3QgX19yZXRfMzM5OyBcCiAgX19yZXRfMzM5ID0gdnFzdWJfczE2KF9fczBfMzM5LCB2cXJkbXVsaF9zMTYoX19zMV8zMzksIHNwbGF0X2xhbmVxX3MxNihfX3MyXzMzOSwgX19wM18zMzkpKSk7IFwKICBfX3JldF8zMzk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cXJkbWxzaF9sYW5lcV9zMTYoX19wMF8zNDAsIF9fcDFfMzQwLCBfX3AyXzM0MCwgX19wM18zNDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDRfdCBfX3MwXzM0MCA9IF9fcDBfMzQwOyBcCiAgaW50MTZ4NF90IF9fczFfMzQwID0gX19wMV8zNDA7IFwKICBpbnQxNng4X3QgX19zMl8zNDAgPSBfX3AyXzM0MDsgXAogIGludDE2eDRfdCBfX3JldjBfMzQwOyAgX19yZXYwXzM0MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfMzQwLCBfX3MwXzM0MCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng0X3QgX19yZXYxXzM0MDsgIF9fcmV2MV8zNDAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzM0MCwgX19zMV8zNDAsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4OF90IF9fcmV2Ml8zNDA7ICBfX3JldjJfMzQwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl8zNDAsIF9fczJfMzQwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDRfdCBfX3JldF8zNDA7IFwKICBfX3JldF8zNDAgPSBfX25vc3dhcF92cXN1Yl9zMTYoX19yZXYwXzM0MCwgX19ub3N3YXBfdnFyZG11bGhfczE2KF9fcmV2MV8zNDAsIF9fbm9zd2FwX3NwbGF0X2xhbmVxX3MxNihfX3JldjJfMzQwLCBfX3AzXzM0MCkpKTsgXAogIF9fcmV0XzM0MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzM0MCwgX19yZXRfMzQwLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzM0MDsgXAp9KQojZW5kaWYKCiNlbmRpZgojaWYgZGVmaW5lZChfX2FhcmNoNjRfXykKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQ2NHgyX3QgdmFiZHFfZjY0KGZsb2F0NjR4Ml90IF9fcDAsIGZsb2F0NjR4Ml90IF9fcDEpIHsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDJfdCkgX19idWlsdGluX25lb25fdmFiZHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0NjR4Ml90IHZhYmRxX2Y2NChmbG9hdDY0eDJfdCBfX3AwLCBmbG9hdDY0eDJfdCBfX3AxKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgZmxvYXQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZhYmRxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA0Mik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCl9fYWkgZmxvYXQ2NHgxX3QgdmFiZF9mNjQoZmxvYXQ2NHgxX3QgX19wMCwgZmxvYXQ2NHgxX3QgX19wMSkgewogIGZsb2F0NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92YWJkX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAxMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQ2NF90IHZhYmRkX2Y2NChmbG9hdDY0X3QgX19wMCwgZmxvYXQ2NF90IF9fcDEpIHsKICBmbG9hdDY0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQ2NF90KSBfX2J1aWx0aW5fbmVvbl92YWJkZF9mNjQoX19wMCwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQzMl90IHZhYmRzX2YzMihmbG9hdDMyX3QgX19wMCwgZmxvYXQzMl90IF9fcDEpIHsKICBmbG9hdDMyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMl90KSBfX2J1aWx0aW5fbmVvbl92YWJkc19mMzIoX19wMCwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0NjR4Ml90IHZhYnNxX2Y2NChmbG9hdDY0eDJfdCBfX3AwKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZhYnNxX3YoKGludDh4MTZfdClfX3AwLCA0Mik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQ2NHgyX3QgdmFic3FfZjY0KGZsb2F0NjR4Ml90IF9fcDApIHsKICBmbG9hdDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDJfdCkgX19idWlsdGluX25lb25fdmFic3FfdigoaW50OHgxNl90KV9fcmV2MCwgNDIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ2NHgyX3QgdmFic3FfczY0KGludDY0eDJfdCBfX3AwKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDJfdCkgX19idWlsdGluX25lb25fdmFic3FfdigoaW50OHgxNl90KV9fcDAsIDM1KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ2NHgyX3QgdmFic3FfczY0KGludDY0eDJfdCBfX3AwKSB7CiAgaW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZhYnNxX3YoKGludDh4MTZfdClfX3JldjAsIDM1KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKX19haSBmbG9hdDY0eDFfdCB2YWJzX2Y2NChmbG9hdDY0eDFfdCBfX3AwKSB7CiAgZmxvYXQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3ZhYnNfdigoaW50OHg4X3QpX19wMCwgMTApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDY0eDFfdCB2YWJzX3M2NChpbnQ2NHgxX3QgX19wMCkgewogIGludDY0eDFfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3ZhYnNfdigoaW50OHg4X3QpX19wMCwgMyk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50NjRfdCB2YWJzZF9zNjQoaW50NjRfdCBfX3AwKSB7CiAgaW50NjRfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NF90KSBfX2J1aWx0aW5fbmVvbl92YWJzZF9zNjQoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0NjR4Ml90IHZhZGRxX2Y2NChmbG9hdDY0eDJfdCBfX3AwLCBmbG9hdDY0eDJfdCBfX3AxKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICsgX19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDY0eDJfdCB2YWRkcV9mNjQoZmxvYXQ2NHgyX3QgX19wMCwgZmxvYXQ2NHgyX3QgX19wMSkgewogIGZsb2F0NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICsgX19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgpfX2FpIGZsb2F0NjR4MV90IHZhZGRfZjY0KGZsb2F0NjR4MV90IF9fcDAsIGZsb2F0NjR4MV90IF9fcDEpIHsKICBmbG9hdDY0eDFfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgKyBfX3AxOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ2NF90IHZhZGRkX3U2NCh1aW50NjRfdCBfX3AwLCB1aW50NjRfdCBfX3AxKSB7CiAgdWludDY0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZhZGRkX3U2NChfX3AwLCBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQ2NF90IHZhZGRkX3M2NChpbnQ2NF90IF9fcDAsIGludDY0X3QgX19wMSkgewogIGludDY0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50NjRfdCkgX19idWlsdGluX25lb25fdmFkZGRfczY0KF9fcDAsIF9fcDEpOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHBvbHkxMjhfdCB2YWRkcV9wMTI4KHBvbHkxMjhfdCBfX3AwLCBwb2x5MTI4X3QgX19wMSkgewogIHBvbHkxMjhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5MTI4X3QpIF9fYnVpbHRpbl9uZW9uX3ZhZGRxX3AxMjgoX19wMCwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng4X3QgdmFkZGhuX2hpZ2hfdTMyKHVpbnQxNng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxLCB1aW50MzJ4NF90IF9fcDIpIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gdmNvbWJpbmVfdTE2KF9fcDAsIHZhZGRobl91MzIoX19wMSwgX19wMikpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng4X3QgdmFkZGhuX2hpZ2hfdTMyKHVpbnQxNng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxLCB1aW50MzJ4NF90IF9fcDIpIHsKICB1aW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdmNvbWJpbmVfdTE2KF9fcmV2MCwgX19ub3N3YXBfdmFkZGhuX3UzMihfX3JldjEsIF9fcmV2MikpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZhZGRobl9oaWdoX3U2NCh1aW50MzJ4Ml90IF9fcDAsIHVpbnQ2NHgyX3QgX19wMSwgdWludDY0eDJfdCBfX3AyKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IHZjb21iaW5lX3UzMihfX3AwLCB2YWRkaG5fdTY0KF9fcDEsIF9fcDIpKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4NF90IHZhZGRobl9oaWdoX3U2NCh1aW50MzJ4Ml90IF9fcDAsIHVpbnQ2NHgyX3QgX19wMSwgdWludDY0eDJfdCBfX3AyKSB7CiAgdWludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3Zjb21iaW5lX3UzMihfX3JldjAsIF9fbm9zd2FwX3ZhZGRobl91NjQoX19yZXYxLCBfX3JldjIpKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4MTZfdCB2YWRkaG5faGlnaF91MTYodWludDh4OF90IF9fcDAsIHVpbnQxNng4X3QgX19wMSwgdWludDE2eDhfdCBfX3AyKSB7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IHZjb21iaW5lX3U4KF9fcDAsIHZhZGRobl91MTYoX19wMSwgX19wMikpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDE2X3QgdmFkZGhuX2hpZ2hfdTE2KHVpbnQ4eDhfdCBfX3AwLCB1aW50MTZ4OF90IF9fcDEsIHVpbnQxNng4X3QgX19wMikgewogIHVpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3Zjb21iaW5lX3U4KF9fcmV2MCwgX19ub3N3YXBfdmFkZGhuX3UxNihfX3JldjEsIF9fcmV2MikpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng4X3QgdmFkZGhuX2hpZ2hfczMyKGludDE2eDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSwgaW50MzJ4NF90IF9fcDIpIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSB2Y29tYmluZV9zMTYoX19wMCwgdmFkZGhuX3MzMihfX3AxLCBfX3AyKSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4OF90IHZhZGRobl9oaWdoX3MzMihpbnQxNng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEsIGludDMyeDRfdCBfX3AyKSB7CiAgaW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdmNvbWJpbmVfczE2KF9fcmV2MCwgX19ub3N3YXBfdmFkZGhuX3MzMihfX3JldjEsIF9fcmV2MikpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMng0X3QgdmFkZGhuX2hpZ2hfczY0KGludDMyeDJfdCBfX3AwLCBpbnQ2NHgyX3QgX19wMSwgaW50NjR4Ml90IF9fcDIpIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSB2Y29tYmluZV9zMzIoX19wMCwgdmFkZGhuX3M2NChfX3AxLCBfX3AyKSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4NF90IHZhZGRobl9oaWdoX3M2NChpbnQzMngyX3QgX19wMCwgaW50NjR4Ml90IF9fcDEsIGludDY0eDJfdCBfX3AyKSB7CiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBpbnQ2NHgyX3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdmNvbWJpbmVfczMyKF9fcmV2MCwgX19ub3N3YXBfdmFkZGhuX3M2NChfX3JldjEsIF9fcmV2MikpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDE2X3QgdmFkZGhuX2hpZ2hfczE2KGludDh4OF90IF9fcDAsIGludDE2eDhfdCBfX3AxLCBpbnQxNng4X3QgX19wMikgewogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IHZjb21iaW5lX3M4KF9fcDAsIHZhZGRobl9zMTYoX19wMSwgX19wMikpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4MTZfdCB2YWRkaG5faGlnaF9zMTYoaW50OHg4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEsIGludDE2eDhfdCBfX3AyKSB7CiAgaW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92Y29tYmluZV9zOChfX3JldjAsIF9fbm9zd2FwX3ZhZGRobl9zMTYoX19yZXYxLCBfX3JldjIpKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2X3QgdmFkZGx2cV91OCh1aW50OHgxNl90IF9fcDApIHsKICB1aW50MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZfdCkgX19idWlsdGluX25lb25fdmFkZGx2cV91OChfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZfdCB2YWRkbHZxX3U4KHVpbnQ4eDE2X3QgX19wMCkgewogIHVpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZhZGRsdnFfdTgoX19yZXYwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50NjRfdCB2YWRkbHZxX3UzMih1aW50MzJ4NF90IF9fcDApIHsKICB1aW50NjRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjRfdCkgX19idWlsdGluX25lb25fdmFkZGx2cV91MzIoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDY0X3QgdmFkZGx2cV91MzIodWludDMyeDRfdCBfX3AwKSB7CiAgdWludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50NjRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjRfdCkgX19idWlsdGluX25lb25fdmFkZGx2cV91MzIoX19yZXYwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJfdCB2YWRkbHZxX3UxNih1aW50MTZ4OF90IF9fcDApIHsKICB1aW50MzJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJfdCkgX19idWlsdGluX25lb25fdmFkZGx2cV91MTYoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyX3QgdmFkZGx2cV91MTYodWludDE2eDhfdCBfX3AwKSB7CiAgdWludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MzJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJfdCkgX19idWlsdGluX25lb25fdmFkZGx2cV91MTYoX19yZXYwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNl90IHZhZGRsdnFfczgoaW50OHgxNl90IF9fcDApIHsKICBpbnQxNl90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZhZGRsdnFfczgoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZfdCB2YWRkbHZxX3M4KGludDh4MTZfdCBfX3AwKSB7CiAgaW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZfdCkgX19idWlsdGluX25lb25fdmFkZGx2cV9zOChfX3JldjApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDY0X3QgdmFkZGx2cV9zMzIoaW50MzJ4NF90IF9fcDApIHsKICBpbnQ2NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZhZGRsdnFfczMyKF9fcDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDY0X3QgdmFkZGx2cV9zMzIoaW50MzJ4NF90IF9fcDApIHsKICBpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50NjRfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NF90KSBfX2J1aWx0aW5fbmVvbl92YWRkbHZxX3MzMihfX3JldjApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyX3QgdmFkZGx2cV9zMTYoaW50MTZ4OF90IF9fcDApIHsKICBpbnQzMl90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZhZGRsdnFfczE2KF9fcDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyX3QgdmFkZGx2cV9zMTYoaW50MTZ4OF90IF9fcDApIHsKICBpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MzJfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMl90KSBfX2J1aWx0aW5fbmVvbl92YWRkbHZxX3MxNihfX3JldjApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNl90IHZhZGRsdl91OCh1aW50OHg4X3QgX19wMCkgewogIHVpbnQxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNl90KSBfX2J1aWx0aW5fbmVvbl92YWRkbHZfdTgoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2X3QgdmFkZGx2X3U4KHVpbnQ4eDhfdCBfX3AwKSB7CiAgdWludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNl90KSBfX2J1aWx0aW5fbmVvbl92YWRkbHZfdTgoX19yZXYwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50NjRfdCB2YWRkbHZfdTMyKHVpbnQzMngyX3QgX19wMCkgewogIHVpbnQ2NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NF90KSBfX2J1aWx0aW5fbmVvbl92YWRkbHZfdTMyKF9fcDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ2NF90IHZhZGRsdl91MzIodWludDMyeDJfdCBfX3AwKSB7CiAgdWludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50NjRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjRfdCkgX19idWlsdGluX25lb25fdmFkZGx2X3UzMihfX3JldjApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMl90IHZhZGRsdl91MTYodWludDE2eDRfdCBfX3AwKSB7CiAgdWludDMyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZhZGRsdl91MTYoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyX3QgdmFkZGx2X3UxNih1aW50MTZ4NF90IF9fcDApIHsKICB1aW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQzMl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMl90KSBfX2J1aWx0aW5fbmVvbl92YWRkbHZfdTE2KF9fcmV2MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZfdCB2YWRkbHZfczgoaW50OHg4X3QgX19wMCkgewogIGludDE2X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZfdCkgX19idWlsdGluX25lb25fdmFkZGx2X3M4KF9fcDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2X3QgdmFkZGx2X3M4KGludDh4OF90IF9fcDApIHsKICBpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNl90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZhZGRsdl9zOChfX3JldjApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDY0X3QgdmFkZGx2X3MzMihpbnQzMngyX3QgX19wMCkgewogIGludDY0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50NjRfdCkgX19idWlsdGluX25lb25fdmFkZGx2X3MzMihfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ2NF90IHZhZGRsdl9zMzIoaW50MzJ4Ml90IF9fcDApIHsKICBpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50NjRfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NF90KSBfX2J1aWx0aW5fbmVvbl92YWRkbHZfczMyKF9fcmV2MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJfdCB2YWRkbHZfczE2KGludDE2eDRfdCBfX3AwKSB7CiAgaW50MzJfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMl90KSBfX2J1aWx0aW5fbmVvbl92YWRkbHZfczE2KF9fcDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyX3QgdmFkZGx2X3MxNihpbnQxNng0X3QgX19wMCkgewogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQzMl90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZhZGRsdl9zMTYoX19yZXYwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OF90IHZhZGR2cV91OCh1aW50OHgxNl90IF9fcDApIHsKICB1aW50OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4X3QpIF9fYnVpbHRpbl9uZW9uX3ZhZGR2cV91OChfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OF90IHZhZGR2cV91OCh1aW50OHgxNl90IF9fcDApIHsKICB1aW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDhfdCkgX19idWlsdGluX25lb25fdmFkZHZxX3U4KF9fcmV2MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyX3QgdmFkZHZxX3UzMih1aW50MzJ4NF90IF9fcDApIHsKICB1aW50MzJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJfdCkgX19idWlsdGluX25lb25fdmFkZHZxX3UzMihfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJfdCB2YWRkdnFfdTMyKHVpbnQzMng0X3QgX19wMCkgewogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDMyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZhZGR2cV91MzIoX19yZXYwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50NjRfdCB2YWRkdnFfdTY0KHVpbnQ2NHgyX3QgX19wMCkgewogIHVpbnQ2NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NF90KSBfX2J1aWx0aW5fbmVvbl92YWRkdnFfdTY0KF9fcDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ2NF90IHZhZGR2cV91NjQodWludDY0eDJfdCBfX3AwKSB7CiAgdWludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50NjRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjRfdCkgX19idWlsdGluX25lb25fdmFkZHZxX3U2NChfX3JldjApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNl90IHZhZGR2cV91MTYodWludDE2eDhfdCBfX3AwKSB7CiAgdWludDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZhZGR2cV91MTYoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2X3QgdmFkZHZxX3UxNih1aW50MTZ4OF90IF9fcDApIHsKICB1aW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNl90KSBfX2J1aWx0aW5fbmVvbl92YWRkdnFfdTE2KF9fcmV2MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OF90IHZhZGR2cV9zOChpbnQ4eDE2X3QgX19wMCkgewogIGludDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4X3QpIF9fYnVpbHRpbl9uZW9uX3ZhZGR2cV9zOChfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ4X3QgdmFkZHZxX3M4KGludDh4MTZfdCBfX3AwKSB7CiAgaW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4X3QpIF9fYnVpbHRpbl9uZW9uX3ZhZGR2cV9zOChfX3JldjApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0NjRfdCB2YWRkdnFfZjY0KGZsb2F0NjR4Ml90IF9fcDApIHsKICBmbG9hdDY0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQ2NF90KSBfX2J1aWx0aW5fbmVvbl92YWRkdnFfZjY0KF9fcDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0NjRfdCB2YWRkdnFfZjY0KGZsb2F0NjR4Ml90IF9fcDApIHsKICBmbG9hdDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDY0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQ2NF90KSBfX2J1aWx0aW5fbmVvbl92YWRkdnFfZjY0KF9fcmV2MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMl90IHZhZGR2cV9mMzIoZmxvYXQzMng0X3QgX19wMCkgewogIGZsb2F0MzJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZhZGR2cV9mMzIoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMl90IHZhZGR2cV9mMzIoZmxvYXQzMng0X3QgX19wMCkgewogIGZsb2F0MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MzJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZhZGR2cV9mMzIoX19yZXYwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMl90IHZhZGR2cV9zMzIoaW50MzJ4NF90IF9fcDApIHsKICBpbnQzMl90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZhZGR2cV9zMzIoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJfdCB2YWRkdnFfczMyKGludDMyeDRfdCBfX3AwKSB7CiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDMyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJfdCkgX19idWlsdGluX25lb25fdmFkZHZxX3MzMihfX3JldjApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDY0X3QgdmFkZHZxX3M2NChpbnQ2NHgyX3QgX19wMCkgewogIGludDY0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50NjRfdCkgX19idWlsdGluX25lb25fdmFkZHZxX3M2NChfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ2NF90IHZhZGR2cV9zNjQoaW50NjR4Ml90IF9fcDApIHsKICBpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50NjRfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NF90KSBfX2J1aWx0aW5fbmVvbl92YWRkdnFfczY0KF9fcmV2MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZfdCB2YWRkdnFfczE2KGludDE2eDhfdCBfX3AwKSB7CiAgaW50MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNl90KSBfX2J1aWx0aW5fbmVvbl92YWRkdnFfczE2KF9fcDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2X3QgdmFkZHZxX3MxNihpbnQxNng4X3QgX19wMCkgewogIGludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNl90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZhZGR2cV9zMTYoX19yZXYwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OF90IHZhZGR2X3U4KHVpbnQ4eDhfdCBfX3AwKSB7CiAgdWludDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OF90KSBfX2J1aWx0aW5fbmVvbl92YWRkdl91OChfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OF90IHZhZGR2X3U4KHVpbnQ4eDhfdCBfX3AwKSB7CiAgdWludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDhfdCkgX19idWlsdGluX25lb25fdmFkZHZfdTgoX19yZXYwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJfdCB2YWRkdl91MzIodWludDMyeDJfdCBfX3AwKSB7CiAgdWludDMyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZhZGR2X3UzMihfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJfdCB2YWRkdl91MzIodWludDMyeDJfdCBfX3AwKSB7CiAgdWludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50MzJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJfdCkgX19idWlsdGluX25lb25fdmFkZHZfdTMyKF9fcmV2MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2X3QgdmFkZHZfdTE2KHVpbnQxNng0X3QgX19wMCkgewogIHVpbnQxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNl90KSBfX2J1aWx0aW5fbmVvbl92YWRkdl91MTYoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2X3QgdmFkZHZfdTE2KHVpbnQxNng0X3QgX19wMCkgewogIHVpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZhZGR2X3UxNihfX3JldjApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDhfdCB2YWRkdl9zOChpbnQ4eDhfdCBfX3AwKSB7CiAgaW50OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDhfdCkgX19idWlsdGluX25lb25fdmFkZHZfczgoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OF90IHZhZGR2X3M4KGludDh4OF90IF9fcDApIHsKICBpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OF90KSBfX2J1aWx0aW5fbmVvbl92YWRkdl9zOChfX3JldjApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJfdCB2YWRkdl9mMzIoZmxvYXQzMngyX3QgX19wMCkgewogIGZsb2F0MzJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZhZGR2X2YzMihfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyX3QgdmFkZHZfZjMyKGZsb2F0MzJ4Ml90IF9fcDApIHsKICBmbG9hdDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDMyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMl90KSBfX2J1aWx0aW5fbmVvbl92YWRkdl9mMzIoX19yZXYwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMl90IHZhZGR2X3MzMihpbnQzMngyX3QgX19wMCkgewogIGludDMyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJfdCkgX19idWlsdGluX25lb25fdmFkZHZfczMyKF9fcDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyX3QgdmFkZHZfczMyKGludDMyeDJfdCBfX3AwKSB7CiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJfdCkgX19idWlsdGluX25lb25fdmFkZHZfczMyKF9fcmV2MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZfdCB2YWRkdl9zMTYoaW50MTZ4NF90IF9fcDApIHsKICBpbnQxNl90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZhZGR2X3MxNihfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNl90IHZhZGR2X3MxNihpbnQxNng0X3QgX19wMCkgewogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNl90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZhZGR2X3MxNihfX3JldjApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCl9fYWkgcG9seTY0eDFfdCB2YnNsX3A2NCh1aW50NjR4MV90IF9fcDAsIHBvbHk2NHgxX3QgX19wMSwgcG9seTY0eDFfdCBfX3AyKSB7CiAgcG9seTY0eDFfdCBfX3JldDsKICBfX3JldCA9IChwb2x5NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92YnNsX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAoaW50OHg4X3QpX19wMiwgNik7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHBvbHk2NHgyX3QgdmJzbHFfcDY0KHVpbnQ2NHgyX3QgX19wMCwgcG9seTY0eDJfdCBfX3AxLCBwb2x5NjR4Ml90IF9fcDIpIHsKICBwb2x5NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3Zic2xxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIChpbnQ4eDE2X3QpX19wMiwgMzgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHBvbHk2NHgyX3QgdmJzbHFfcDY0KHVpbnQ2NHgyX3QgX19wMCwgcG9seTY0eDJfdCBfX3AxLCBwb2x5NjR4Ml90IF9fcDIpIHsKICB1aW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHBvbHk2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgcG9seTY0eDJfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAxLCAwKTsKICBwb2x5NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3Zic2xxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAoaW50OHgxNl90KV9fcmV2MiwgMzgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDY0eDJfdCB2YnNscV9mNjQodWludDY0eDJfdCBfX3AwLCBmbG9hdDY0eDJfdCBfX3AxLCBmbG9hdDY0eDJfdCBfX3AyKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3Zic2xxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIChpbnQ4eDE2X3QpX19wMiwgNDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0NjR4Ml90IHZic2xxX2Y2NCh1aW50NjR4Ml90IF9fcDAsIGZsb2F0NjR4Ml90IF9fcDEsIGZsb2F0NjR4Ml90IF9fcDIpIHsKICB1aW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGZsb2F0NjR4Ml90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDEsIDApOwogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92YnNscV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgKGludDh4MTZfdClfX3JldjIsIDQyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKX19haSBmbG9hdDY0eDFfdCB2YnNsX2Y2NCh1aW50NjR4MV90IF9fcDAsIGZsb2F0NjR4MV90IF9fcDEsIGZsb2F0NjR4MV90IF9fcDIpIHsKICBmbG9hdDY0eDFfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDFfdCkgX19idWlsdGluX25lb25fdmJzbF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgKGludDh4OF90KV9fcDIsIDEwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDY0eDJfdCB2Y2FnZXFfZjY0KGZsb2F0NjR4Ml90IF9fcDAsIGZsb2F0NjR4Ml90IF9fcDEpIHsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjYWdlcV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA1MSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDY0eDJfdCB2Y2FnZXFfZjY0KGZsb2F0NjR4Ml90IF9fcDAsIGZsb2F0NjR4Ml90IF9fcDEpIHsKICBmbG9hdDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjYWdlcV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNTEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgpfX2FpIHVpbnQ2NHgxX3QgdmNhZ2VfZjY0KGZsb2F0NjR4MV90IF9fcDAsIGZsb2F0NjR4MV90IF9fcDEpIHsKICB1aW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3ZjYWdlX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAxOSk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDY0X3QgdmNhZ2VkX2Y2NChmbG9hdDY0X3QgX19wMCwgZmxvYXQ2NF90IF9fcDEpIHsKICB1aW50NjRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjRfdCkgX19idWlsdGluX25lb25fdmNhZ2VkX2Y2NChfX3AwLCBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MzJfdCB2Y2FnZXNfZjMyKGZsb2F0MzJfdCBfX3AwLCBmbG9hdDMyX3QgX19wMSkgewogIHVpbnQzMl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMl90KSBfX2J1aWx0aW5fbmVvbl92Y2FnZXNfZjMyKF9fcDAsIF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50NjR4Ml90IHZjYWd0cV9mNjQoZmxvYXQ2NHgyX3QgX19wMCwgZmxvYXQ2NHgyX3QgX19wMSkgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkgX19idWlsdGluX25lb25fdmNhZ3RxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDUxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50NjR4Ml90IHZjYWd0cV9mNjQoZmxvYXQ2NHgyX3QgX19wMCwgZmxvYXQ2NHgyX3QgX19wMSkgewogIGZsb2F0NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkgX19idWlsdGluX25lb25fdmNhZ3RxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA1MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCl9fYWkgdWludDY0eDFfdCB2Y2FndF9mNjQoZmxvYXQ2NHgxX3QgX19wMCwgZmxvYXQ2NHgxX3QgX19wMSkgewogIHVpbnQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDFfdCkgX19idWlsdGluX25lb25fdmNhZ3RfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDE5KTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50NjRfdCB2Y2FndGRfZjY0KGZsb2F0NjRfdCBfX3AwLCBmbG9hdDY0X3QgX19wMSkgewogIHVpbnQ2NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NF90KSBfX2J1aWx0aW5fbmVvbl92Y2FndGRfZjY0KF9fcDAsIF9fcDEpOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQzMl90IHZjYWd0c19mMzIoZmxvYXQzMl90IF9fcDAsIGZsb2F0MzJfdCBfX3AxKSB7CiAgdWludDMyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjYWd0c19mMzIoX19wMCwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ2NHgyX3QgdmNhbGVxX2Y2NChmbG9hdDY0eDJfdCBfX3AwLCBmbG9hdDY0eDJfdCBfX3AxKSB7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y2FsZXFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNTEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ2NHgyX3QgdmNhbGVxX2Y2NChmbG9hdDY0eDJfdCBfX3AwLCBmbG9hdDY0eDJfdCBfX3AxKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y2FsZXFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDUxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKX19haSB1aW50NjR4MV90IHZjYWxlX2Y2NChmbG9hdDY0eDFfdCBfX3AwLCBmbG9hdDY0eDFfdCBfX3AxKSB7CiAgdWludDY0eDFfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92Y2FsZV92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMTkpOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ2NF90IHZjYWxlZF9mNjQoZmxvYXQ2NF90IF9fcDAsIGZsb2F0NjRfdCBfX3AxKSB7CiAgdWludDY0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjYWxlZF9mNjQoX19wMCwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDMyX3QgdmNhbGVzX2YzMihmbG9hdDMyX3QgX19wMCwgZmxvYXQzMl90IF9fcDEpIHsKICB1aW50MzJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJfdCkgX19idWlsdGluX25lb25fdmNhbGVzX2YzMihfX3AwLCBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDY0eDJfdCB2Y2FsdHFfZjY0KGZsb2F0NjR4Ml90IF9fcDAsIGZsb2F0NjR4Ml90IF9fcDEpIHsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjYWx0cV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA1MSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDY0eDJfdCB2Y2FsdHFfZjY0KGZsb2F0NjR4Ml90IF9fcDAsIGZsb2F0NjR4Ml90IF9fcDEpIHsKICBmbG9hdDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjYWx0cV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNTEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgpfX2FpIHVpbnQ2NHgxX3QgdmNhbHRfZjY0KGZsb2F0NjR4MV90IF9fcDAsIGZsb2F0NjR4MV90IF9fcDEpIHsKICB1aW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3ZjYWx0X3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAxOSk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDY0X3QgdmNhbHRkX2Y2NChmbG9hdDY0X3QgX19wMCwgZmxvYXQ2NF90IF9fcDEpIHsKICB1aW50NjRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjRfdCkgX19idWlsdGluX25lb25fdmNhbHRkX2Y2NChfX3AwLCBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MzJfdCB2Y2FsdHNfZjMyKGZsb2F0MzJfdCBfX3AwLCBmbG9hdDMyX3QgX19wMSkgewogIHVpbnQzMl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMl90KSBfX2J1aWx0aW5fbmVvbl92Y2FsdHNfZjMyKF9fcDAsIF9fcDEpOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ2NHgxX3QgdmNlcV9wNjQocG9seTY0eDFfdCBfX3AwLCBwb2x5NjR4MV90IF9fcDEpIHsKICB1aW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgxX3QpKF9fcDAgPT0gX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ2NHgyX3QgdmNlcXFfcDY0KHBvbHk2NHgyX3QgX19wMCwgcG9seTY0eDJfdCBfX3AxKSB7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KShfX3AwID09IF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ2NHgyX3QgdmNlcXFfcDY0KHBvbHk2NHgyX3QgX19wMCwgcG9seTY0eDJfdCBfX3AxKSB7CiAgcG9seTY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBwb2x5NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkoX19yZXYwID09IF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ2NHgyX3QgdmNlcXFfdTY0KHVpbnQ2NHgyX3QgX19wMCwgdWludDY0eDJfdCBfX3AxKSB7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KShfX3AwID09IF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ2NHgyX3QgdmNlcXFfdTY0KHVpbnQ2NHgyX3QgX19wMCwgdWludDY0eDJfdCBfX3AxKSB7CiAgdWludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkoX19yZXYwID09IF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ2NHgyX3QgdmNlcXFfZjY0KGZsb2F0NjR4Ml90IF9fcDAsIGZsb2F0NjR4Ml90IF9fcDEpIHsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpKF9fcDAgPT0gX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDY0eDJfdCB2Y2VxcV9mNjQoZmxvYXQ2NHgyX3QgX19wMCwgZmxvYXQ2NHgyX3QgX19wMSkgewogIGZsb2F0NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkoX19yZXYwID09IF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ2NHgyX3QgdmNlcXFfczY0KGludDY0eDJfdCBfX3AwLCBpbnQ2NHgyX3QgX19wMSkgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkoX19wMCA9PSBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50NjR4Ml90IHZjZXFxX3M2NChpbnQ2NHgyX3QgX19wMCwgaW50NjR4Ml90IF9fcDEpIHsKICBpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkoX19yZXYwID09IF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCl9fYWkgdWludDY0eDFfdCB2Y2VxX3U2NCh1aW50NjR4MV90IF9fcDAsIHVpbnQ2NHgxX3QgX19wMSkgewogIHVpbnQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDFfdCkoX19wMCA9PSBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50NjR4MV90IHZjZXFfZjY0KGZsb2F0NjR4MV90IF9fcDAsIGZsb2F0NjR4MV90IF9fcDEpIHsKICB1aW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgxX3QpKF9fcDAgPT0gX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDY0eDFfdCB2Y2VxX3M2NChpbnQ2NHgxX3QgX19wMCwgaW50NjR4MV90IF9fcDEpIHsKICB1aW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgxX3QpKF9fcDAgPT0gX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDY0X3QgdmNlcWRfdTY0KHVpbnQ2NF90IF9fcDAsIHVpbnQ2NF90IF9fcDEpIHsKICB1aW50NjRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjRfdCkgX19idWlsdGluX25lb25fdmNlcWRfdTY0KF9fcDAsIF9fcDEpOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ2NF90IHZjZXFkX3M2NChpbnQ2NF90IF9fcDAsIGludDY0X3QgX19wMSkgewogIHVpbnQ2NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NF90KSBfX2J1aWx0aW5fbmVvbl92Y2VxZF9zNjQoX19wMCwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDY0X3QgdmNlcWRfZjY0KGZsb2F0NjRfdCBfX3AwLCBmbG9hdDY0X3QgX19wMSkgewogIHVpbnQ2NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NF90KSBfX2J1aWx0aW5fbmVvbl92Y2VxZF9mNjQoX19wMCwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDMyX3QgdmNlcXNfZjMyKGZsb2F0MzJfdCBfX3AwLCBmbG9hdDMyX3QgX19wMSkgewogIHVpbnQzMl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMl90KSBfX2J1aWx0aW5fbmVvbl92Y2Vxc19mMzIoX19wMCwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDhfdCB2Y2Vxel9wOChwb2x5OHg4X3QgX19wMCkgewogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjZXF6X3YoKGludDh4OF90KV9fcDAsIDE2KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHg4X3QgdmNlcXpfcDgocG9seTh4OF90IF9fcDApIHsKICBwb2x5OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdmNlcXpfdigoaW50OHg4X3QpX19yZXYwLCAxNik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCl9fYWkgdWludDY0eDFfdCB2Y2Vxel9wNjQocG9seTY0eDFfdCBfX3AwKSB7CiAgdWludDY0eDFfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92Y2Vxel92KChpbnQ4eDhfdClfX3AwLCAxOSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDE2X3QgdmNlcXpxX3A4KHBvbHk4eDE2X3QgX19wMCkgewogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkgX19idWlsdGluX25lb25fdmNlcXpxX3YoKGludDh4MTZfdClfX3AwLCA0OCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4MTZfdCB2Y2VxenFfcDgocG9seTh4MTZfdCBfX3AwKSB7CiAgcG9seTh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZjZXF6cV92KChpbnQ4eDE2X3QpX19yZXYwLCA0OCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ2NHgyX3QgdmNlcXpxX3A2NChwb2x5NjR4Ml90IF9fcDApIHsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjZXF6cV92KChpbnQ4eDE2X3QpX19wMCwgNTEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ2NHgyX3QgdmNlcXpxX3A2NChwb2x5NjR4Ml90IF9fcDApIHsKICBwb2x5NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkgX19idWlsdGluX25lb25fdmNlcXpxX3YoKGludDh4MTZfdClfX3JldjAsIDUxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4MTZfdCB2Y2VxenFfdTgodWludDh4MTZfdCBfX3AwKSB7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92Y2VxenFfdigoaW50OHgxNl90KV9fcDAsIDQ4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHgxNl90IHZjZXF6cV91OCh1aW50OHgxNl90IF9fcDApIHsKICB1aW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkgX19idWlsdGluX25lb25fdmNlcXpxX3YoKGludDh4MTZfdClfX3JldjAsIDQ4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDRfdCB2Y2VxenFfdTMyKHVpbnQzMng0X3QgX19wMCkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdmNlcXpxX3YoKGludDh4MTZfdClfX3AwLCA1MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2Y2VxenFfdTMyKHVpbnQzMng0X3QgX19wMCkgewogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y2VxenFfdigoaW50OHgxNl90KV9fcmV2MCwgNTApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50NjR4Ml90IHZjZXF6cV91NjQodWludDY0eDJfdCBfX3AwKSB7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y2VxenFfdigoaW50OHgxNl90KV9fcDAsIDUxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50NjR4Ml90IHZjZXF6cV91NjQodWludDY0eDJfdCBfX3AwKSB7CiAgdWludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjZXF6cV92KChpbnQ4eDE2X3QpX19yZXYwLCA1MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng4X3QgdmNlcXpxX3UxNih1aW50MTZ4OF90IF9fcDApIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjZXF6cV92KChpbnQ4eDE2X3QpX19wMCwgNDkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng4X3QgdmNlcXpxX3UxNih1aW50MTZ4OF90IF9fcDApIHsKICB1aW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkgX19idWlsdGluX25lb25fdmNlcXpxX3YoKGludDh4MTZfdClfX3JldjAsIDQ5KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4MTZfdCB2Y2VxenFfczgoaW50OHgxNl90IF9fcDApIHsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZjZXF6cV92KChpbnQ4eDE2X3QpX19wMCwgNDgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDE2X3QgdmNlcXpxX3M4KGludDh4MTZfdCBfX3AwKSB7CiAgaW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkgX19idWlsdGluX25lb25fdmNlcXpxX3YoKGludDh4MTZfdClfX3JldjAsIDQ4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDY0eDJfdCB2Y2VxenFfZjY0KGZsb2F0NjR4Ml90IF9fcDApIHsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjZXF6cV92KChpbnQ4eDE2X3QpX19wMCwgNTEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ2NHgyX3QgdmNlcXpxX2Y2NChmbG9hdDY0eDJfdCBfX3AwKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y2VxenFfdigoaW50OHgxNl90KV9fcmV2MCwgNTEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZjZXF6cV9mMzIoZmxvYXQzMng0X3QgX19wMCkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdmNlcXpxX3YoKGludDh4MTZfdClfX3AwLCA1MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2Y2VxenFfZjMyKGZsb2F0MzJ4NF90IF9fcDApIHsKICBmbG9hdDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjZXF6cV92KChpbnQ4eDE2X3QpX19yZXYwLCA1MCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMng0X3QgdmNlcXpxX3MzMihpbnQzMng0X3QgX19wMCkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdmNlcXpxX3YoKGludDh4MTZfdClfX3AwLCA1MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2Y2VxenFfczMyKGludDMyeDRfdCBfX3AwKSB7CiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdmNlcXpxX3YoKGludDh4MTZfdClfX3JldjAsIDUwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDY0eDJfdCB2Y2VxenFfczY0KGludDY0eDJfdCBfX3AwKSB7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y2VxenFfdigoaW50OHgxNl90KV9fcDAsIDUxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50NjR4Ml90IHZjZXF6cV9zNjQoaW50NjR4Ml90IF9fcDApIHsKICBpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y2VxenFfdigoaW50OHgxNl90KV9fcmV2MCwgNTEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4OF90IHZjZXF6cV9zMTYoaW50MTZ4OF90IF9fcDApIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjZXF6cV92KChpbnQ4eDE2X3QpX19wMCwgNDkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng4X3QgdmNlcXpxX3MxNihpbnQxNng4X3QgX19wMCkgewogIGludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjZXF6cV92KChpbnQ4eDE2X3QpX19yZXYwLCA0OSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDhfdCB2Y2Vxel91OCh1aW50OHg4X3QgX19wMCkgewogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjZXF6X3YoKGludDh4OF90KV9fcDAsIDE2KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHg4X3QgdmNlcXpfdTgodWludDh4OF90IF9fcDApIHsKICB1aW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdmNlcXpfdigoaW50OHg4X3QpX19yZXYwLCAxNik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMngyX3QgdmNlcXpfdTMyKHVpbnQzMngyX3QgX19wMCkgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdmNlcXpfdigoaW50OHg4X3QpX19wMCwgMTgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMngyX3QgdmNlcXpfdTMyKHVpbnQzMngyX3QgX19wMCkgewogIHVpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y2Vxel92KChpbnQ4eDhfdClfX3JldjAsIDE4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKX19haSB1aW50NjR4MV90IHZjZXF6X3U2NCh1aW50NjR4MV90IF9fcDApIHsKICB1aW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3ZjZXF6X3YoKGludDh4OF90KV9fcDAsIDE5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDRfdCB2Y2Vxel91MTYodWludDE2eDRfdCBfX3AwKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y2Vxel92KChpbnQ4eDhfdClfX3AwLCAxNyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDRfdCB2Y2Vxel91MTYodWludDE2eDRfdCBfX3AwKSB7CiAgdWludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjZXF6X3YoKGludDh4OF90KV9fcmV2MCwgMTcpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHg4X3QgdmNlcXpfczgoaW50OHg4X3QgX19wMCkgewogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjZXF6X3YoKGludDh4OF90KV9fcDAsIDE2KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHg4X3QgdmNlcXpfczgoaW50OHg4X3QgX19wMCkgewogIGludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjZXF6X3YoKGludDh4OF90KV9fcmV2MCwgMTYpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgpfX2FpIHVpbnQ2NHgxX3QgdmNlcXpfZjY0KGZsb2F0NjR4MV90IF9fcDApIHsKICB1aW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3ZjZXF6X3YoKGludDh4OF90KV9fcDAsIDE5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDJfdCB2Y2Vxel9mMzIoZmxvYXQzMngyX3QgX19wMCkgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdmNlcXpfdigoaW50OHg4X3QpX19wMCwgMTgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMngyX3QgdmNlcXpfZjMyKGZsb2F0MzJ4Ml90IF9fcDApIHsKICBmbG9hdDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjZXF6X3YoKGludDh4OF90KV9fcmV2MCwgMTgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4Ml90IHZjZXF6X3MzMihpbnQzMngyX3QgX19wMCkgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdmNlcXpfdigoaW50OHg4X3QpX19wMCwgMTgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMngyX3QgdmNlcXpfczMyKGludDMyeDJfdCBfX3AwKSB7CiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdmNlcXpfdigoaW50OHg4X3QpX19yZXYwLCAxOCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCl9fYWkgdWludDY0eDFfdCB2Y2Vxel9zNjQoaW50NjR4MV90IF9fcDApIHsKICB1aW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3ZjZXF6X3YoKGludDh4OF90KV9fcDAsIDE5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDRfdCB2Y2Vxel9zMTYoaW50MTZ4NF90IF9fcDApIHsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjZXF6X3YoKGludDh4OF90KV9fcDAsIDE3KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4NF90IHZjZXF6X3MxNihpbnQxNng0X3QgX19wMCkgewogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjZXF6X3YoKGludDh4OF90KV9fcmV2MCwgMTcpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgpfX2FpIHVpbnQ2NF90IHZjZXF6ZF91NjQodWludDY0X3QgX19wMCkgewogIHVpbnQ2NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NF90KSBfX2J1aWx0aW5fbmVvbl92Y2VxemRfdTY0KF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ2NF90IHZjZXF6ZF9zNjQoaW50NjRfdCBfX3AwKSB7CiAgdWludDY0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjZXF6ZF9zNjQoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDY0X3QgdmNlcXpkX2Y2NChmbG9hdDY0X3QgX19wMCkgewogIHVpbnQ2NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NF90KSBfX2J1aWx0aW5fbmVvbl92Y2VxemRfZjY0KF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQzMl90IHZjZXF6c19mMzIoZmxvYXQzMl90IF9fcDApIHsKICB1aW50MzJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJfdCkgX19idWlsdGluX25lb25fdmNlcXpzX2YzMihfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDY0eDJfdCB2Y2dlcV91NjQodWludDY0eDJfdCBfX3AwLCB1aW50NjR4Ml90IF9fcDEpIHsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpKF9fcDAgPj0gX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDY0eDJfdCB2Y2dlcV91NjQodWludDY0eDJfdCBfX3AwLCB1aW50NjR4Ml90IF9fcDEpIHsKICB1aW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KShfX3JldjAgPj0gX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDY0eDJfdCB2Y2dlcV9mNjQoZmxvYXQ2NHgyX3QgX19wMCwgZmxvYXQ2NHgyX3QgX19wMSkgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkoX19wMCA+PSBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50NjR4Ml90IHZjZ2VxX2Y2NChmbG9hdDY0eDJfdCBfX3AwLCBmbG9hdDY0eDJfdCBfX3AxKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KShfX3JldjAgPj0gX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDY0eDJfdCB2Y2dlcV9zNjQoaW50NjR4Ml90IF9fcDAsIGludDY0eDJfdCBfX3AxKSB7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KShfX3AwID49IF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ2NHgyX3QgdmNnZXFfczY0KGludDY0eDJfdCBfX3AwLCBpbnQ2NHgyX3QgX19wMSkgewogIGludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBpbnQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KShfX3JldjAgPj0gX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKX19haSB1aW50NjR4MV90IHZjZ2VfdTY0KHVpbnQ2NHgxX3QgX19wMCwgdWludDY0eDFfdCBfX3AxKSB7CiAgdWludDY0eDFfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4MV90KShfX3AwID49IF9fcDEpOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ2NHgxX3QgdmNnZV9mNjQoZmxvYXQ2NHgxX3QgX19wMCwgZmxvYXQ2NHgxX3QgX19wMSkgewogIHVpbnQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDFfdCkoX19wMCA+PSBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50NjR4MV90IHZjZ2VfczY0KGludDY0eDFfdCBfX3AwLCBpbnQ2NHgxX3QgX19wMSkgewogIHVpbnQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDFfdCkoX19wMCA+PSBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50NjRfdCB2Y2dlZF9zNjQoaW50NjRfdCBfX3AwLCBpbnQ2NF90IF9fcDEpIHsKICB1aW50NjRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjRfdCkgX19idWlsdGluX25lb25fdmNnZWRfczY0KF9fcDAsIF9fcDEpOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ2NF90IHZjZ2VkX3U2NCh1aW50NjRfdCBfX3AwLCB1aW50NjRfdCBfX3AxKSB7CiAgdWludDY0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjZ2VkX3U2NChfX3AwLCBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50NjRfdCB2Y2dlZF9mNjQoZmxvYXQ2NF90IF9fcDAsIGZsb2F0NjRfdCBfX3AxKSB7CiAgdWludDY0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjZ2VkX2Y2NChfX3AwLCBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MzJfdCB2Y2dlc19mMzIoZmxvYXQzMl90IF9fcDAsIGZsb2F0MzJfdCBfX3AxKSB7CiAgdWludDMyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjZ2VzX2YzMihfX3AwLCBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4MTZfdCB2Y2dlenFfczgoaW50OHgxNl90IF9fcDApIHsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZjZ2V6cV92KChpbnQ4eDE2X3QpX19wMCwgNDgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDE2X3QgdmNnZXpxX3M4KGludDh4MTZfdCBfX3AwKSB7CiAgaW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkgX19idWlsdGluX25lb25fdmNnZXpxX3YoKGludDh4MTZfdClfX3JldjAsIDQ4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDY0eDJfdCB2Y2dlenFfZjY0KGZsb2F0NjR4Ml90IF9fcDApIHsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjZ2V6cV92KChpbnQ4eDE2X3QpX19wMCwgNTEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ2NHgyX3QgdmNnZXpxX2Y2NChmbG9hdDY0eDJfdCBfX3AwKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y2dlenFfdigoaW50OHgxNl90KV9fcmV2MCwgNTEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZjZ2V6cV9mMzIoZmxvYXQzMng0X3QgX19wMCkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdmNnZXpxX3YoKGludDh4MTZfdClfX3AwLCA1MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2Y2dlenFfZjMyKGZsb2F0MzJ4NF90IF9fcDApIHsKICBmbG9hdDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjZ2V6cV92KChpbnQ4eDE2X3QpX19yZXYwLCA1MCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMng0X3QgdmNnZXpxX3MzMihpbnQzMng0X3QgX19wMCkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdmNnZXpxX3YoKGludDh4MTZfdClfX3AwLCA1MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2Y2dlenFfczMyKGludDMyeDRfdCBfX3AwKSB7CiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdmNnZXpxX3YoKGludDh4MTZfdClfX3JldjAsIDUwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDY0eDJfdCB2Y2dlenFfczY0KGludDY0eDJfdCBfX3AwKSB7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y2dlenFfdigoaW50OHgxNl90KV9fcDAsIDUxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50NjR4Ml90IHZjZ2V6cV9zNjQoaW50NjR4Ml90IF9fcDApIHsKICBpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y2dlenFfdigoaW50OHgxNl90KV9fcmV2MCwgNTEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4OF90IHZjZ2V6cV9zMTYoaW50MTZ4OF90IF9fcDApIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjZ2V6cV92KChpbnQ4eDE2X3QpX19wMCwgNDkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng4X3QgdmNnZXpxX3MxNihpbnQxNng4X3QgX19wMCkgewogIGludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjZ2V6cV92KChpbnQ4eDE2X3QpX19yZXYwLCA0OSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDhfdCB2Y2dlel9zOChpbnQ4eDhfdCBfX3AwKSB7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdmNnZXpfdigoaW50OHg4X3QpX19wMCwgMTYpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDhfdCB2Y2dlel9zOChpbnQ4eDhfdCBfX3AwKSB7CiAgaW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdmNnZXpfdigoaW50OHg4X3QpX19yZXYwLCAxNik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCl9fYWkgdWludDY0eDFfdCB2Y2dlel9mNjQoZmxvYXQ2NHgxX3QgX19wMCkgewogIHVpbnQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDFfdCkgX19idWlsdGluX25lb25fdmNnZXpfdigoaW50OHg4X3QpX19wMCwgMTkpOwogIHJldHVybiBfX3JldDsKfQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4Ml90IHZjZ2V6X2YzMihmbG9hdDMyeDJfdCBfX3AwKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y2dlel92KChpbnQ4eDhfdClfX3AwLCAxOCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDJfdCB2Y2dlel9mMzIoZmxvYXQzMngyX3QgX19wMCkgewogIGZsb2F0MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdmNnZXpfdigoaW50OHg4X3QpX19yZXYwLCAxOCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMngyX3QgdmNnZXpfczMyKGludDMyeDJfdCBfX3AwKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y2dlel92KChpbnQ4eDhfdClfX3AwLCAxOCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDJfdCB2Y2dlel9zMzIoaW50MzJ4Ml90IF9fcDApIHsKICBpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y2dlel92KChpbnQ4eDhfdClfX3JldjAsIDE4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKX19haSB1aW50NjR4MV90IHZjZ2V6X3M2NChpbnQ2NHgxX3QgX19wMCkgewogIHVpbnQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDFfdCkgX19idWlsdGluX25lb25fdmNnZXpfdigoaW50OHg4X3QpX19wMCwgMTkpOwogIHJldHVybiBfX3JldDsKfQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4NF90IHZjZ2V6X3MxNihpbnQxNng0X3QgX19wMCkgewogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdmNnZXpfdigoaW50OHg4X3QpX19wMCwgMTcpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng0X3QgdmNnZXpfczE2KGludDE2eDRfdCBfX3AwKSB7CiAgaW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdmNnZXpfdigoaW50OHg4X3QpX19yZXYwLCAxNyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCl9fYWkgdWludDY0X3QgdmNnZXpkX3M2NChpbnQ2NF90IF9fcDApIHsKICB1aW50NjRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjRfdCkgX19idWlsdGluX25lb25fdmNnZXpkX3M2NChfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50NjRfdCB2Y2dlemRfZjY0KGZsb2F0NjRfdCBfX3AwKSB7CiAgdWludDY0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjZ2V6ZF9mNjQoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDMyX3QgdmNnZXpzX2YzMihmbG9hdDMyX3QgX19wMCkgewogIHVpbnQzMl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMl90KSBfX2J1aWx0aW5fbmVvbl92Y2dlenNfZjMyKF9fcDApOwogIHJldHVybiBfX3JldDsKfQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50NjR4Ml90IHZjZ3RxX3U2NCh1aW50NjR4Ml90IF9fcDAsIHVpbnQ2NHgyX3QgX19wMSkgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkoX19wMCA+IF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ2NHgyX3QgdmNndHFfdTY0KHVpbnQ2NHgyX3QgX19wMCwgdWludDY0eDJfdCBfX3AxKSB7CiAgdWludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkoX19yZXYwID4gX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDY0eDJfdCB2Y2d0cV9mNjQoZmxvYXQ2NHgyX3QgX19wMCwgZmxvYXQ2NHgyX3QgX19wMSkgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkoX19wMCA+IF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ2NHgyX3QgdmNndHFfZjY0KGZsb2F0NjR4Ml90IF9fcDAsIGZsb2F0NjR4Ml90IF9fcDEpIHsKICBmbG9hdDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpKF9fcmV2MCA+IF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ2NHgyX3QgdmNndHFfczY0KGludDY0eDJfdCBfX3AwLCBpbnQ2NHgyX3QgX19wMSkgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkoX19wMCA+IF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ2NHgyX3QgdmNndHFfczY0KGludDY0eDJfdCBfX3AwLCBpbnQ2NHgyX3QgX19wMSkgewogIGludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBpbnQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KShfX3JldjAgPiBfX3JldjEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgpfX2FpIHVpbnQ2NHgxX3QgdmNndF91NjQodWludDY0eDFfdCBfX3AwLCB1aW50NjR4MV90IF9fcDEpIHsKICB1aW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgxX3QpKF9fcDAgPiBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50NjR4MV90IHZjZ3RfZjY0KGZsb2F0NjR4MV90IF9fcDAsIGZsb2F0NjR4MV90IF9fcDEpIHsKICB1aW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgxX3QpKF9fcDAgPiBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50NjR4MV90IHZjZ3RfczY0KGludDY0eDFfdCBfX3AwLCBpbnQ2NHgxX3QgX19wMSkgewogIHVpbnQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDFfdCkoX19wMCA+IF9fcDEpOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ2NF90IHZjZ3RkX3M2NChpbnQ2NF90IF9fcDAsIGludDY0X3QgX19wMSkgewogIHVpbnQ2NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NF90KSBfX2J1aWx0aW5fbmVvbl92Y2d0ZF9zNjQoX19wMCwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDY0X3QgdmNndGRfdTY0KHVpbnQ2NF90IF9fcDAsIHVpbnQ2NF90IF9fcDEpIHsKICB1aW50NjRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjRfdCkgX19idWlsdGluX25lb25fdmNndGRfdTY0KF9fcDAsIF9fcDEpOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ2NF90IHZjZ3RkX2Y2NChmbG9hdDY0X3QgX19wMCwgZmxvYXQ2NF90IF9fcDEpIHsKICB1aW50NjRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjRfdCkgX19idWlsdGluX25lb25fdmNndGRfZjY0KF9fcDAsIF9fcDEpOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQzMl90IHZjZ3RzX2YzMihmbG9hdDMyX3QgX19wMCwgZmxvYXQzMl90IF9fcDEpIHsKICB1aW50MzJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJfdCkgX19idWlsdGluX25lb25fdmNndHNfZjMyKF9fcDAsIF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHgxNl90IHZjZ3R6cV9zOChpbnQ4eDE2X3QgX19wMCkgewogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkgX19idWlsdGluX25lb25fdmNndHpxX3YoKGludDh4MTZfdClfX3AwLCA0OCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4MTZfdCB2Y2d0enFfczgoaW50OHgxNl90IF9fcDApIHsKICBpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92Y2d0enFfdigoaW50OHgxNl90KV9fcmV2MCwgNDgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50NjR4Ml90IHZjZ3R6cV9mNjQoZmxvYXQ2NHgyX3QgX19wMCkgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkgX19idWlsdGluX25lb25fdmNndHpxX3YoKGludDh4MTZfdClfX3AwLCA1MSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDY0eDJfdCB2Y2d0enFfZjY0KGZsb2F0NjR4Ml90IF9fcDApIHsKICBmbG9hdDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjZ3R6cV92KChpbnQ4eDE2X3QpX19yZXYwLCA1MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMng0X3QgdmNndHpxX2YzMihmbG9hdDMyeDRfdCBfX3AwKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y2d0enFfdigoaW50OHgxNl90KV9fcDAsIDUwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4NF90IHZjZ3R6cV9mMzIoZmxvYXQzMng0X3QgX19wMCkgewogIGZsb2F0MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdmNndHpxX3YoKGludDh4MTZfdClfX3JldjAsIDUwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDRfdCB2Y2d0enFfczMyKGludDMyeDRfdCBfX3AwKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y2d0enFfdigoaW50OHgxNl90KV9fcDAsIDUwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4NF90IHZjZ3R6cV9zMzIoaW50MzJ4NF90IF9fcDApIHsKICBpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y2d0enFfdigoaW50OHgxNl90KV9fcmV2MCwgNTApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50NjR4Ml90IHZjZ3R6cV9zNjQoaW50NjR4Ml90IF9fcDApIHsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjZ3R6cV92KChpbnQ4eDE2X3QpX19wMCwgNTEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ2NHgyX3QgdmNndHpxX3M2NChpbnQ2NHgyX3QgX19wMCkgewogIGludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjZ3R6cV92KChpbnQ4eDE2X3QpX19yZXYwLCA1MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng4X3QgdmNndHpxX3MxNihpbnQxNng4X3QgX19wMCkgewogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkgX19idWlsdGluX25lb25fdmNndHpxX3YoKGludDh4MTZfdClfX3AwLCA0OSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDhfdCB2Y2d0enFfczE2KGludDE2eDhfdCBfX3AwKSB7CiAgaW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkgX19idWlsdGluX25lb25fdmNndHpxX3YoKGludDh4MTZfdClfX3JldjAsIDQ5KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4OF90IHZjZ3R6X3M4KGludDh4OF90IF9fcDApIHsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92Y2d0el92KChpbnQ4eDhfdClfX3AwLCAxNik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4OF90IHZjZ3R6X3M4KGludDh4OF90IF9fcDApIHsKICBpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92Y2d0el92KChpbnQ4eDhfdClfX3JldjAsIDE2KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKX19haSB1aW50NjR4MV90IHZjZ3R6X2Y2NChmbG9hdDY0eDFfdCBfX3AwKSB7CiAgdWludDY0eDFfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92Y2d0el92KChpbnQ4eDhfdClfX3AwLCAxOSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMngyX3QgdmNndHpfZjMyKGZsb2F0MzJ4Ml90IF9fcDApIHsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjZ3R6X3YoKGludDh4OF90KV9fcDAsIDE4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4Ml90IHZjZ3R6X2YzMihmbG9hdDMyeDJfdCBfX3AwKSB7CiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y2d0el92KChpbnQ4eDhfdClfX3JldjAsIDE4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDJfdCB2Y2d0el9zMzIoaW50MzJ4Ml90IF9fcDApIHsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjZ3R6X3YoKGludDh4OF90KV9fcDAsIDE4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4Ml90IHZjZ3R6X3MzMihpbnQzMngyX3QgX19wMCkgewogIGludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjZ3R6X3YoKGludDh4OF90KV9fcmV2MCwgMTgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgpfX2FpIHVpbnQ2NHgxX3QgdmNndHpfczY0KGludDY0eDFfdCBfX3AwKSB7CiAgdWludDY0eDFfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92Y2d0el92KChpbnQ4eDhfdClfX3AwLCAxOSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng0X3QgdmNndHpfczE2KGludDE2eDRfdCBfX3AwKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y2d0el92KChpbnQ4eDhfdClfX3AwLCAxNyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDRfdCB2Y2d0el9zMTYoaW50MTZ4NF90IF9fcDApIHsKICBpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y2d0el92KChpbnQ4eDhfdClfX3JldjAsIDE3KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKX19haSB1aW50NjRfdCB2Y2d0emRfczY0KGludDY0X3QgX19wMCkgewogIHVpbnQ2NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NF90KSBfX2J1aWx0aW5fbmVvbl92Y2d0emRfczY0KF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ2NF90IHZjZ3R6ZF9mNjQoZmxvYXQ2NF90IF9fcDApIHsKICB1aW50NjRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjRfdCkgX19idWlsdGluX25lb25fdmNndHpkX2Y2NChfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MzJfdCB2Y2d0enNfZjMyKGZsb2F0MzJfdCBfX3AwKSB7CiAgdWludDMyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjZ3R6c19mMzIoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ2NHgyX3QgdmNsZXFfdTY0KHVpbnQ2NHgyX3QgX19wMCwgdWludDY0eDJfdCBfX3AxKSB7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KShfX3AwIDw9IF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ2NHgyX3QgdmNsZXFfdTY0KHVpbnQ2NHgyX3QgX19wMCwgdWludDY0eDJfdCBfX3AxKSB7CiAgdWludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkoX19yZXYwIDw9IF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ2NHgyX3QgdmNsZXFfZjY0KGZsb2F0NjR4Ml90IF9fcDAsIGZsb2F0NjR4Ml90IF9fcDEpIHsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpKF9fcDAgPD0gX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDY0eDJfdCB2Y2xlcV9mNjQoZmxvYXQ2NHgyX3QgX19wMCwgZmxvYXQ2NHgyX3QgX19wMSkgewogIGZsb2F0NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkoX19yZXYwIDw9IF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ2NHgyX3QgdmNsZXFfczY0KGludDY0eDJfdCBfX3AwLCBpbnQ2NHgyX3QgX19wMSkgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkoX19wMCA8PSBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50NjR4Ml90IHZjbGVxX3M2NChpbnQ2NHgyX3QgX19wMCwgaW50NjR4Ml90IF9fcDEpIHsKICBpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkoX19yZXYwIDw9IF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCl9fYWkgdWludDY0eDFfdCB2Y2xlX3U2NCh1aW50NjR4MV90IF9fcDAsIHVpbnQ2NHgxX3QgX19wMSkgewogIHVpbnQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDFfdCkoX19wMCA8PSBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50NjR4MV90IHZjbGVfZjY0KGZsb2F0NjR4MV90IF9fcDAsIGZsb2F0NjR4MV90IF9fcDEpIHsKICB1aW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgxX3QpKF9fcDAgPD0gX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDY0eDFfdCB2Y2xlX3M2NChpbnQ2NHgxX3QgX19wMCwgaW50NjR4MV90IF9fcDEpIHsKICB1aW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgxX3QpKF9fcDAgPD0gX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDY0X3QgdmNsZWRfdTY0KHVpbnQ2NF90IF9fcDAsIHVpbnQ2NF90IF9fcDEpIHsKICB1aW50NjRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjRfdCkgX19idWlsdGluX25lb25fdmNsZWRfdTY0KF9fcDAsIF9fcDEpOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ2NF90IHZjbGVkX3M2NChpbnQ2NF90IF9fcDAsIGludDY0X3QgX19wMSkgewogIHVpbnQ2NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NF90KSBfX2J1aWx0aW5fbmVvbl92Y2xlZF9zNjQoX19wMCwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDY0X3QgdmNsZWRfZjY0KGZsb2F0NjRfdCBfX3AwLCBmbG9hdDY0X3QgX19wMSkgewogIHVpbnQ2NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NF90KSBfX2J1aWx0aW5fbmVvbl92Y2xlZF9mNjQoX19wMCwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDMyX3QgdmNsZXNfZjMyKGZsb2F0MzJfdCBfX3AwLCBmbG9hdDMyX3QgX19wMSkgewogIHVpbnQzMl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMl90KSBfX2J1aWx0aW5fbmVvbl92Y2xlc19mMzIoX19wMCwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDE2X3QgdmNsZXpxX3M4KGludDh4MTZfdCBfX3AwKSB7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92Y2xlenFfdigoaW50OHgxNl90KV9fcDAsIDQ4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHgxNl90IHZjbGV6cV9zOChpbnQ4eDE2X3QgX19wMCkgewogIGludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbGV6cV92KChpbnQ4eDE2X3QpX19yZXYwLCA0OCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ2NHgyX3QgdmNsZXpxX2Y2NChmbG9hdDY0eDJfdCBfX3AwKSB7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y2xlenFfdigoaW50OHgxNl90KV9fcDAsIDUxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50NjR4Ml90IHZjbGV6cV9mNjQoZmxvYXQ2NHgyX3QgX19wMCkgewogIGZsb2F0NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkgX19idWlsdGluX25lb25fdmNsZXpxX3YoKGludDh4MTZfdClfX3JldjAsIDUxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDRfdCB2Y2xlenFfZjMyKGZsb2F0MzJ4NF90IF9fcDApIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbGV6cV92KChpbnQ4eDE2X3QpX19wMCwgNTApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMng0X3QgdmNsZXpxX2YzMihmbG9hdDMyeDRfdCBfX3AwKSB7CiAgZmxvYXQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92Y2xlenFfdigoaW50OHgxNl90KV9fcmV2MCwgNTApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZjbGV6cV9zMzIoaW50MzJ4NF90IF9fcDApIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbGV6cV92KChpbnQ4eDE2X3QpX19wMCwgNTApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMng0X3QgdmNsZXpxX3MzMihpbnQzMng0X3QgX19wMCkgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbGV6cV92KChpbnQ4eDE2X3QpX19yZXYwLCA1MCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ2NHgyX3QgdmNsZXpxX3M2NChpbnQ2NHgyX3QgX19wMCkgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkgX19idWlsdGluX25lb25fdmNsZXpxX3YoKGludDh4MTZfdClfX3AwLCA1MSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDY0eDJfdCB2Y2xlenFfczY0KGludDY0eDJfdCBfX3AwKSB7CiAgaW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkgX19idWlsdGluX25lb25fdmNsZXpxX3YoKGludDh4MTZfdClfX3JldjAsIDUxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDhfdCB2Y2xlenFfczE2KGludDE2eDhfdCBfX3AwKSB7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92Y2xlenFfdigoaW50OHgxNl90KV9fcDAsIDQ5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4OF90IHZjbGV6cV9zMTYoaW50MTZ4OF90IF9fcDApIHsKICBpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92Y2xlenFfdigoaW50OHgxNl90KV9fcmV2MCwgNDkpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHg4X3QgdmNsZXpfczgoaW50OHg4X3QgX19wMCkgewogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbGV6X3YoKGludDh4OF90KV9fcDAsIDE2KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHg4X3QgdmNsZXpfczgoaW50OHg4X3QgX19wMCkgewogIGludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbGV6X3YoKGludDh4OF90KV9fcmV2MCwgMTYpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgpfX2FpIHVpbnQ2NHgxX3QgdmNsZXpfZjY0KGZsb2F0NjR4MV90IF9fcDApIHsKICB1aW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3ZjbGV6X3YoKGludDh4OF90KV9fcDAsIDE5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDJfdCB2Y2xlel9mMzIoZmxvYXQzMngyX3QgX19wMCkgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdmNsZXpfdigoaW50OHg4X3QpX19wMCwgMTgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMngyX3QgdmNsZXpfZjMyKGZsb2F0MzJ4Ml90IF9fcDApIHsKICBmbG9hdDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjbGV6X3YoKGludDh4OF90KV9fcmV2MCwgMTgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4Ml90IHZjbGV6X3MzMihpbnQzMngyX3QgX19wMCkgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdmNsZXpfdigoaW50OHg4X3QpX19wMCwgMTgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMngyX3QgdmNsZXpfczMyKGludDMyeDJfdCBfX3AwKSB7CiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdmNsZXpfdigoaW50OHg4X3QpX19yZXYwLCAxOCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCl9fYWkgdWludDY0eDFfdCB2Y2xlel9zNjQoaW50NjR4MV90IF9fcDApIHsKICB1aW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3ZjbGV6X3YoKGludDh4OF90KV9fcDAsIDE5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDRfdCB2Y2xlel9zMTYoaW50MTZ4NF90IF9fcDApIHsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbGV6X3YoKGludDh4OF90KV9fcDAsIDE3KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4NF90IHZjbGV6X3MxNihpbnQxNng0X3QgX19wMCkgewogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbGV6X3YoKGludDh4OF90KV9fcmV2MCwgMTcpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgpfX2FpIHVpbnQ2NF90IHZjbGV6ZF9zNjQoaW50NjRfdCBfX3AwKSB7CiAgdWludDY0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbGV6ZF9zNjQoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDY0X3QgdmNsZXpkX2Y2NChmbG9hdDY0X3QgX19wMCkgewogIHVpbnQ2NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NF90KSBfX2J1aWx0aW5fbmVvbl92Y2xlemRfZjY0KF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQzMl90IHZjbGV6c19mMzIoZmxvYXQzMl90IF9fcDApIHsKICB1aW50MzJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJfdCkgX19idWlsdGluX25lb25fdmNsZXpzX2YzMihfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDY0eDJfdCB2Y2x0cV91NjQodWludDY0eDJfdCBfX3AwLCB1aW50NjR4Ml90IF9fcDEpIHsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpKF9fcDAgPCBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50NjR4Ml90IHZjbHRxX3U2NCh1aW50NjR4Ml90IF9fcDAsIHVpbnQ2NHgyX3QgX19wMSkgewogIHVpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpKF9fcmV2MCA8IF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ2NHgyX3QgdmNsdHFfZjY0KGZsb2F0NjR4Ml90IF9fcDAsIGZsb2F0NjR4Ml90IF9fcDEpIHsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpKF9fcDAgPCBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50NjR4Ml90IHZjbHRxX2Y2NChmbG9hdDY0eDJfdCBfX3AwLCBmbG9hdDY0eDJfdCBfX3AxKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KShfX3JldjAgPCBfX3JldjEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50NjR4Ml90IHZjbHRxX3M2NChpbnQ2NHgyX3QgX19wMCwgaW50NjR4Ml90IF9fcDEpIHsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpKF9fcDAgPCBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50NjR4Ml90IHZjbHRxX3M2NChpbnQ2NHgyX3QgX19wMCwgaW50NjR4Ml90IF9fcDEpIHsKICBpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkoX19yZXYwIDwgX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKX19haSB1aW50NjR4MV90IHZjbHRfdTY0KHVpbnQ2NHgxX3QgX19wMCwgdWludDY0eDFfdCBfX3AxKSB7CiAgdWludDY0eDFfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4MV90KShfX3AwIDwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDY0eDFfdCB2Y2x0X2Y2NChmbG9hdDY0eDFfdCBfX3AwLCBmbG9hdDY0eDFfdCBfX3AxKSB7CiAgdWludDY0eDFfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4MV90KShfX3AwIDwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDY0eDFfdCB2Y2x0X3M2NChpbnQ2NHgxX3QgX19wMCwgaW50NjR4MV90IF9fcDEpIHsKICB1aW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgxX3QpKF9fcDAgPCBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50NjRfdCB2Y2x0ZF91NjQodWludDY0X3QgX19wMCwgdWludDY0X3QgX19wMSkgewogIHVpbnQ2NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NF90KSBfX2J1aWx0aW5fbmVvbl92Y2x0ZF91NjQoX19wMCwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDY0X3QgdmNsdGRfczY0KGludDY0X3QgX19wMCwgaW50NjRfdCBfX3AxKSB7CiAgdWludDY0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbHRkX3M2NChfX3AwLCBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50NjRfdCB2Y2x0ZF9mNjQoZmxvYXQ2NF90IF9fcDAsIGZsb2F0NjRfdCBfX3AxKSB7CiAgdWludDY0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbHRkX2Y2NChfX3AwLCBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MzJfdCB2Y2x0c19mMzIoZmxvYXQzMl90IF9fcDAsIGZsb2F0MzJfdCBfX3AxKSB7CiAgdWludDMyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjbHRzX2YzMihfX3AwLCBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4MTZfdCB2Y2x0enFfczgoaW50OHgxNl90IF9fcDApIHsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbHR6cV92KChpbnQ4eDE2X3QpX19wMCwgNDgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDE2X3QgdmNsdHpxX3M4KGludDh4MTZfdCBfX3AwKSB7CiAgaW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkgX19idWlsdGluX25lb25fdmNsdHpxX3YoKGludDh4MTZfdClfX3JldjAsIDQ4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDY0eDJfdCB2Y2x0enFfZjY0KGZsb2F0NjR4Ml90IF9fcDApIHsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjbHR6cV92KChpbnQ4eDE2X3QpX19wMCwgNTEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ2NHgyX3QgdmNsdHpxX2Y2NChmbG9hdDY0eDJfdCBfX3AwKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y2x0enFfdigoaW50OHgxNl90KV9fcmV2MCwgNTEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZjbHR6cV9mMzIoZmxvYXQzMng0X3QgX19wMCkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdmNsdHpxX3YoKGludDh4MTZfdClfX3AwLCA1MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2Y2x0enFfZjMyKGZsb2F0MzJ4NF90IF9fcDApIHsKICBmbG9hdDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbHR6cV92KChpbnQ4eDE2X3QpX19yZXYwLCA1MCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMng0X3QgdmNsdHpxX3MzMihpbnQzMng0X3QgX19wMCkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdmNsdHpxX3YoKGludDh4MTZfdClfX3AwLCA1MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2Y2x0enFfczMyKGludDMyeDRfdCBfX3AwKSB7CiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdmNsdHpxX3YoKGludDh4MTZfdClfX3JldjAsIDUwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDY0eDJfdCB2Y2x0enFfczY0KGludDY0eDJfdCBfX3AwKSB7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y2x0enFfdigoaW50OHgxNl90KV9fcDAsIDUxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50NjR4Ml90IHZjbHR6cV9zNjQoaW50NjR4Ml90IF9fcDApIHsKICBpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y2x0enFfdigoaW50OHgxNl90KV9fcmV2MCwgNTEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4OF90IHZjbHR6cV9zMTYoaW50MTZ4OF90IF9fcDApIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbHR6cV92KChpbnQ4eDE2X3QpX19wMCwgNDkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng4X3QgdmNsdHpxX3MxNihpbnQxNng4X3QgX19wMCkgewogIGludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbHR6cV92KChpbnQ4eDE2X3QpX19yZXYwLCA0OSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDhfdCB2Y2x0el9zOChpbnQ4eDhfdCBfX3AwKSB7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdmNsdHpfdigoaW50OHg4X3QpX19wMCwgMTYpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDhfdCB2Y2x0el9zOChpbnQ4eDhfdCBfX3AwKSB7CiAgaW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdmNsdHpfdigoaW50OHg4X3QpX19yZXYwLCAxNik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCl9fYWkgdWludDY0eDFfdCB2Y2x0el9mNjQoZmxvYXQ2NHgxX3QgX19wMCkgewogIHVpbnQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDFfdCkgX19idWlsdGluX25lb25fdmNsdHpfdigoaW50OHg4X3QpX19wMCwgMTkpOwogIHJldHVybiBfX3JldDsKfQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4Ml90IHZjbHR6X2YzMihmbG9hdDMyeDJfdCBfX3AwKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y2x0el92KChpbnQ4eDhfdClfX3AwLCAxOCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDJfdCB2Y2x0el9mMzIoZmxvYXQzMngyX3QgX19wMCkgewogIGZsb2F0MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdmNsdHpfdigoaW50OHg4X3QpX19yZXYwLCAxOCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMngyX3QgdmNsdHpfczMyKGludDMyeDJfdCBfX3AwKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y2x0el92KChpbnQ4eDhfdClfX3AwLCAxOCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDJfdCB2Y2x0el9zMzIoaW50MzJ4Ml90IF9fcDApIHsKICBpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y2x0el92KChpbnQ4eDhfdClfX3JldjAsIDE4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKX19haSB1aW50NjR4MV90IHZjbHR6X3M2NChpbnQ2NHgxX3QgX19wMCkgewogIHVpbnQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDFfdCkgX19idWlsdGluX25lb25fdmNsdHpfdigoaW50OHg4X3QpX19wMCwgMTkpOwogIHJldHVybiBfX3JldDsKfQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4NF90IHZjbHR6X3MxNihpbnQxNng0X3QgX19wMCkgewogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdmNsdHpfdigoaW50OHg4X3QpX19wMCwgMTcpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng0X3QgdmNsdHpfczE2KGludDE2eDRfdCBfX3AwKSB7CiAgaW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDRfdCkgX19idWlsdGluX25lb25fdmNsdHpfdigoaW50OHg4X3QpX19yZXYwLCAxNyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCl9fYWkgdWludDY0X3QgdmNsdHpkX3M2NChpbnQ2NF90IF9fcDApIHsKICB1aW50NjRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjRfdCkgX19idWlsdGluX25lb25fdmNsdHpkX3M2NChfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50NjRfdCB2Y2x0emRfZjY0KGZsb2F0NjRfdCBfX3AwKSB7CiAgdWludDY0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjbHR6ZF9mNjQoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDMyX3QgdmNsdHpzX2YzMihmbG9hdDMyX3QgX19wMCkgewogIHVpbnQzMl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMl90KSBfX2J1aWx0aW5fbmVvbl92Y2x0enNfZjMyKF9fcDApOwogIHJldHVybiBfX3JldDsKfQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBwb2x5NjR4Ml90IHZjb21iaW5lX3A2NChwb2x5NjR4MV90IF9fcDAsIHBvbHk2NHgxX3QgX19wMSkgewogIHBvbHk2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAwLCAxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBwb2x5NjR4Ml90IHZjb21iaW5lX3A2NChwb2x5NjR4MV90IF9fcDAsIHBvbHk2NHgxX3QgX19wMSkgewogIHBvbHk2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAwLCAxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQ2NHgyX3QgdmNvbWJpbmVfZjY0KGZsb2F0NjR4MV90IF9fcDAsIGZsb2F0NjR4MV90IF9fcDEpIHsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDAsIDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0NjR4Ml90IHZjb21iaW5lX2Y2NChmbG9hdDY0eDFfdCBfX3AwLCBmbG9hdDY0eDFfdCBfX3AxKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAwLCAxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmNvcHlxX2xhbmVfcDgoX19wMF8zNDEsIF9fcDFfMzQxLCBfX3AyXzM0MSwgX19wM18zNDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4eDE2X3QgX19zMF8zNDEgPSBfX3AwXzM0MTsgXAogIHBvbHk4eDhfdCBfX3MyXzM0MSA9IF9fcDJfMzQxOyBcCiAgcG9seTh4MTZfdCBfX3JldF8zNDE7IFwKICBfX3JldF8zNDEgPSB2c2V0cV9sYW5lX3A4KHZnZXRfbGFuZV9wOChfX3MyXzM0MSwgX19wM18zNDEpLCBfX3MwXzM0MSwgX19wMV8zNDEpOyBcCiAgX19yZXRfMzQxOyBcCn0pCiNlbHNlCiNkZWZpbmUgdmNvcHlxX2xhbmVfcDgoX19wMF8zNDIsIF9fcDFfMzQyLCBfX3AyXzM0MiwgX19wM18zNDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4eDE2X3QgX19zMF8zNDIgPSBfX3AwXzM0MjsgXAogIHBvbHk4eDhfdCBfX3MyXzM0MiA9IF9fcDJfMzQyOyBcCiAgcG9seTh4MTZfdCBfX3JldjBfMzQyOyAgX19yZXYwXzM0MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfMzQyLCBfX3MwXzM0MiwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBwb2x5OHg4X3QgX19yZXYyXzM0MjsgIF9fcmV2Ml8zNDIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzM0MiwgX19zMl8zNDIsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgcG9seTh4MTZfdCBfX3JldF8zNDI7IFwKICBfX3JldF8zNDIgPSBfX25vc3dhcF92c2V0cV9sYW5lX3A4KF9fbm9zd2FwX3ZnZXRfbGFuZV9wOChfX3JldjJfMzQyLCBfX3AzXzM0MiksIF9fcmV2MF8zNDIsIF9fcDFfMzQyKTsgXAogIF9fcmV0XzM0MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzM0MiwgX19yZXRfMzQyLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzM0MjsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZjb3B5cV9sYW5lX3AxNihfX3AwXzM0MywgX19wMV8zNDMsIF9fcDJfMzQzLCBfX3AzXzM0MykgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDhfdCBfX3MwXzM0MyA9IF9fcDBfMzQzOyBcCiAgcG9seTE2eDRfdCBfX3MyXzM0MyA9IF9fcDJfMzQzOyBcCiAgcG9seTE2eDhfdCBfX3JldF8zNDM7IFwKICBfX3JldF8zNDMgPSB2c2V0cV9sYW5lX3AxNih2Z2V0X2xhbmVfcDE2KF9fczJfMzQzLCBfX3AzXzM0MyksIF9fczBfMzQzLCBfX3AxXzM0Myk7IFwKICBfX3JldF8zNDM7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Y29weXFfbGFuZV9wMTYoX19wMF8zNDQsIF9fcDFfMzQ0LCBfX3AyXzM0NCwgX19wM18zNDQpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng4X3QgX19zMF8zNDQgPSBfX3AwXzM0NDsgXAogIHBvbHkxNng0X3QgX19zMl8zNDQgPSBfX3AyXzM0NDsgXAogIHBvbHkxNng4X3QgX19yZXYwXzM0NDsgIF9fcmV2MF8zNDQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzM0NCwgX19zMF8zNDQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgcG9seTE2eDRfdCBfX3JldjJfMzQ0OyAgX19yZXYyXzM0NCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfMzQ0LCBfX3MyXzM0NCwgMywgMiwgMSwgMCk7IFwKICBwb2x5MTZ4OF90IF9fcmV0XzM0NDsgXAogIF9fcmV0XzM0NCA9IF9fbm9zd2FwX3ZzZXRxX2xhbmVfcDE2KF9fbm9zd2FwX3ZnZXRfbGFuZV9wMTYoX19yZXYyXzM0NCwgX19wM18zNDQpLCBfX3JldjBfMzQ0LCBfX3AxXzM0NCk7IFwKICBfX3JldF8zNDQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8zNDQsIF9fcmV0XzM0NCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF8zNDQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Y29weXFfbGFuZV91OChfX3AwXzM0NSwgX19wMV8zNDUsIF9fcDJfMzQ1LCBfX3AzXzM0NSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4MTZfdCBfX3MwXzM0NSA9IF9fcDBfMzQ1OyBcCiAgdWludDh4OF90IF9fczJfMzQ1ID0gX19wMl8zNDU7IFwKICB1aW50OHgxNl90IF9fcmV0XzM0NTsgXAogIF9fcmV0XzM0NSA9IHZzZXRxX2xhbmVfdTgodmdldF9sYW5lX3U4KF9fczJfMzQ1LCBfX3AzXzM0NSksIF9fczBfMzQ1LCBfX3AxXzM0NSk7IFwKICBfX3JldF8zNDU7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Y29weXFfbGFuZV91OChfX3AwXzM0NiwgX19wMV8zNDYsIF9fcDJfMzQ2LCBfX3AzXzM0NikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4MTZfdCBfX3MwXzM0NiA9IF9fcDBfMzQ2OyBcCiAgdWludDh4OF90IF9fczJfMzQ2ID0gX19wMl8zNDY7IFwKICB1aW50OHgxNl90IF9fcmV2MF8zNDY7ICBfX3JldjBfMzQ2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8zNDYsIF9fczBfMzQ2LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQ4eDhfdCBfX3JldjJfMzQ2OyAgX19yZXYyXzM0NiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfMzQ2LCBfX3MyXzM0NiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50OHgxNl90IF9fcmV0XzM0NjsgXAogIF9fcmV0XzM0NiA9IF9fbm9zd2FwX3ZzZXRxX2xhbmVfdTgoX19ub3N3YXBfdmdldF9sYW5lX3U4KF9fcmV2Ml8zNDYsIF9fcDNfMzQ2KSwgX19yZXYwXzM0NiwgX19wMV8zNDYpOyBcCiAgX19yZXRfMzQ2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMzQ2LCBfX3JldF8zNDYsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfMzQ2OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmNvcHlxX2xhbmVfdTMyKF9fcDBfMzQ3LCBfX3AxXzM0NywgX19wMl8zNDcsIF9fcDNfMzQ3KSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NF90IF9fczBfMzQ3ID0gX19wMF8zNDc7IFwKICB1aW50MzJ4Ml90IF9fczJfMzQ3ID0gX19wMl8zNDc7IFwKICB1aW50MzJ4NF90IF9fcmV0XzM0NzsgXAogIF9fcmV0XzM0NyA9IHZzZXRxX2xhbmVfdTMyKHZnZXRfbGFuZV91MzIoX19zMl8zNDcsIF9fcDNfMzQ3KSwgX19zMF8zNDcsIF9fcDFfMzQ3KTsgXAogIF9fcmV0XzM0NzsgXAp9KQojZWxzZQojZGVmaW5lIHZjb3B5cV9sYW5lX3UzMihfX3AwXzM0OCwgX19wMV8zNDgsIF9fcDJfMzQ4LCBfX3AzXzM0OCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDRfdCBfX3MwXzM0OCA9IF9fcDBfMzQ4OyBcCiAgdWludDMyeDJfdCBfX3MyXzM0OCA9IF9fcDJfMzQ4OyBcCiAgdWludDMyeDRfdCBfX3JldjBfMzQ4OyAgX19yZXYwXzM0OCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfMzQ4LCBfX3MwXzM0OCwgMywgMiwgMSwgMCk7IFwKICB1aW50MzJ4Ml90IF9fcmV2Ml8zNDg7ICBfX3JldjJfMzQ4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl8zNDgsIF9fczJfMzQ4LCAxLCAwKTsgXAogIHVpbnQzMng0X3QgX19yZXRfMzQ4OyBcCiAgX19yZXRfMzQ4ID0gX19ub3N3YXBfdnNldHFfbGFuZV91MzIoX19ub3N3YXBfdmdldF9sYW5lX3UzMihfX3JldjJfMzQ4LCBfX3AzXzM0OCksIF9fcmV2MF8zNDgsIF9fcDFfMzQ4KTsgXAogIF9fcmV0XzM0OCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzM0OCwgX19yZXRfMzQ4LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzM0ODsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZjb3B5cV9sYW5lX3U2NChfX3AwXzM0OSwgX19wMV8zNDksIF9fcDJfMzQ5LCBfX3AzXzM0OSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDJfdCBfX3MwXzM0OSA9IF9fcDBfMzQ5OyBcCiAgdWludDY0eDFfdCBfX3MyXzM0OSA9IF9fcDJfMzQ5OyBcCiAgdWludDY0eDJfdCBfX3JldF8zNDk7IFwKICBfX3JldF8zNDkgPSB2c2V0cV9sYW5lX3U2NCh2Z2V0X2xhbmVfdTY0KF9fczJfMzQ5LCBfX3AzXzM0OSksIF9fczBfMzQ5LCBfX3AxXzM0OSk7IFwKICBfX3JldF8zNDk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Y29weXFfbGFuZV91NjQoX19wMF8zNTAsIF9fcDFfMzUwLCBfX3AyXzM1MCwgX19wM18zNTApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyX3QgX19zMF8zNTAgPSBfX3AwXzM1MDsgXAogIHVpbnQ2NHgxX3QgX19zMl8zNTAgPSBfX3AyXzM1MDsgXAogIHVpbnQ2NHgyX3QgX19yZXYwXzM1MDsgIF9fcmV2MF8zNTAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzM1MCwgX19zMF8zNTAsIDEsIDApOyBcCiAgdWludDY0eDJfdCBfX3JldF8zNTA7IFwKICBfX3JldF8zNTAgPSBfX25vc3dhcF92c2V0cV9sYW5lX3U2NCh2Z2V0X2xhbmVfdTY0KF9fczJfMzUwLCBfX3AzXzM1MCksIF9fcmV2MF8zNTAsIF9fcDFfMzUwKTsgXAogIF9fcmV0XzM1MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzM1MCwgX19yZXRfMzUwLCAxLCAwKTsgXAogIF9fcmV0XzM1MDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZjb3B5cV9sYW5lX3UxNihfX3AwXzM1MSwgX19wMV8zNTEsIF9fcDJfMzUxLCBfX3AzXzM1MSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDhfdCBfX3MwXzM1MSA9IF9fcDBfMzUxOyBcCiAgdWludDE2eDRfdCBfX3MyXzM1MSA9IF9fcDJfMzUxOyBcCiAgdWludDE2eDhfdCBfX3JldF8zNTE7IFwKICBfX3JldF8zNTEgPSB2c2V0cV9sYW5lX3UxNih2Z2V0X2xhbmVfdTE2KF9fczJfMzUxLCBfX3AzXzM1MSksIF9fczBfMzUxLCBfX3AxXzM1MSk7IFwKICBfX3JldF8zNTE7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Y29weXFfbGFuZV91MTYoX19wMF8zNTIsIF9fcDFfMzUyLCBfX3AyXzM1MiwgX19wM18zNTIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng4X3QgX19zMF8zNTIgPSBfX3AwXzM1MjsgXAogIHVpbnQxNng0X3QgX19zMl8zNTIgPSBfX3AyXzM1MjsgXAogIHVpbnQxNng4X3QgX19yZXYwXzM1MjsgIF9fcmV2MF8zNTIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzM1MiwgX19zMF8zNTIsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDRfdCBfX3JldjJfMzUyOyAgX19yZXYyXzM1MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfMzUyLCBfX3MyXzM1MiwgMywgMiwgMSwgMCk7IFwKICB1aW50MTZ4OF90IF9fcmV0XzM1MjsgXAogIF9fcmV0XzM1MiA9IF9fbm9zd2FwX3ZzZXRxX2xhbmVfdTE2KF9fbm9zd2FwX3ZnZXRfbGFuZV91MTYoX19yZXYyXzM1MiwgX19wM18zNTIpLCBfX3JldjBfMzUyLCBfX3AxXzM1Mik7IFwKICBfX3JldF8zNTIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8zNTIsIF9fcmV0XzM1MiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF8zNTI7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Y29weXFfbGFuZV9zOChfX3AwXzM1MywgX19wMV8zNTMsIF9fcDJfMzUzLCBfX3AzXzM1MykgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHgxNl90IF9fczBfMzUzID0gX19wMF8zNTM7IFwKICBpbnQ4eDhfdCBfX3MyXzM1MyA9IF9fcDJfMzUzOyBcCiAgaW50OHgxNl90IF9fcmV0XzM1MzsgXAogIF9fcmV0XzM1MyA9IHZzZXRxX2xhbmVfczgodmdldF9sYW5lX3M4KF9fczJfMzUzLCBfX3AzXzM1MyksIF9fczBfMzUzLCBfX3AxXzM1Myk7IFwKICBfX3JldF8zNTM7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Y29weXFfbGFuZV9zOChfX3AwXzM1NCwgX19wMV8zNTQsIF9fcDJfMzU0LCBfX3AzXzM1NCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHgxNl90IF9fczBfMzU0ID0gX19wMF8zNTQ7IFwKICBpbnQ4eDhfdCBfX3MyXzM1NCA9IF9fcDJfMzU0OyBcCiAgaW50OHgxNl90IF9fcmV2MF8zNTQ7ICBfX3JldjBfMzU0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8zNTQsIF9fczBfMzU0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDh4OF90IF9fcmV2Ml8zNTQ7ICBfX3JldjJfMzU0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl8zNTQsIF9fczJfMzU0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDh4MTZfdCBfX3JldF8zNTQ7IFwKICBfX3JldF8zNTQgPSBfX25vc3dhcF92c2V0cV9sYW5lX3M4KF9fbm9zd2FwX3ZnZXRfbGFuZV9zOChfX3JldjJfMzU0LCBfX3AzXzM1NCksIF9fcmV2MF8zNTQsIF9fcDFfMzU0KTsgXAogIF9fcmV0XzM1NCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzM1NCwgX19yZXRfMzU0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzM1NDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZjb3B5cV9sYW5lX2YzMihfX3AwXzM1NSwgX19wMV8zNTUsIF9fcDJfMzU1LCBfX3AzXzM1NSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0X3QgX19zMF8zNTUgPSBfX3AwXzM1NTsgXAogIGZsb2F0MzJ4Ml90IF9fczJfMzU1ID0gX19wMl8zNTU7IFwKICBmbG9hdDMyeDRfdCBfX3JldF8zNTU7IFwKICBfX3JldF8zNTUgPSB2c2V0cV9sYW5lX2YzMih2Z2V0X2xhbmVfZjMyKF9fczJfMzU1LCBfX3AzXzM1NSksIF9fczBfMzU1LCBfX3AxXzM1NSk7IFwKICBfX3JldF8zNTU7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Y29weXFfbGFuZV9mMzIoX19wMF8zNTYsIF9fcDFfMzU2LCBfX3AyXzM1NiwgX19wM18zNTYpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NF90IF9fczBfMzU2ID0gX19wMF8zNTY7IFwKICBmbG9hdDMyeDJfdCBfX3MyXzM1NiA9IF9fcDJfMzU2OyBcCiAgZmxvYXQzMng0X3QgX19yZXYwXzM1NjsgIF9fcmV2MF8zNTYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzM1NiwgX19zMF8zNTYsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQzMngyX3QgX19yZXYyXzM1NjsgIF9fcmV2Ml8zNTYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzM1NiwgX19zMl8zNTYsIDEsIDApOyBcCiAgZmxvYXQzMng0X3QgX19yZXRfMzU2OyBcCiAgX19yZXRfMzU2ID0gX19ub3N3YXBfdnNldHFfbGFuZV9mMzIoX19ub3N3YXBfdmdldF9sYW5lX2YzMihfX3JldjJfMzU2LCBfX3AzXzM1NiksIF9fcmV2MF8zNTYsIF9fcDFfMzU2KTsgXAogIF9fcmV0XzM1NiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzM1NiwgX19yZXRfMzU2LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzM1NjsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZjb3B5cV9sYW5lX3MzMihfX3AwXzM1NywgX19wMV8zNTcsIF9fcDJfMzU3LCBfX3AzXzM1NykgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczBfMzU3ID0gX19wMF8zNTc7IFwKICBpbnQzMngyX3QgX19zMl8zNTcgPSBfX3AyXzM1NzsgXAogIGludDMyeDRfdCBfX3JldF8zNTc7IFwKICBfX3JldF8zNTcgPSB2c2V0cV9sYW5lX3MzMih2Z2V0X2xhbmVfczMyKF9fczJfMzU3LCBfX3AzXzM1NyksIF9fczBfMzU3LCBfX3AxXzM1Nyk7IFwKICBfX3JldF8zNTc7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Y29weXFfbGFuZV9zMzIoX19wMF8zNTgsIF9fcDFfMzU4LCBfX3AyXzM1OCwgX19wM18zNTgpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDRfdCBfX3MwXzM1OCA9IF9fcDBfMzU4OyBcCiAgaW50MzJ4Ml90IF9fczJfMzU4ID0gX19wMl8zNTg7IFwKICBpbnQzMng0X3QgX19yZXYwXzM1ODsgIF9fcmV2MF8zNTggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzM1OCwgX19zMF8zNTgsIDMsIDIsIDEsIDApOyBcCiAgaW50MzJ4Ml90IF9fcmV2Ml8zNTg7ICBfX3JldjJfMzU4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl8zNTgsIF9fczJfMzU4LCAxLCAwKTsgXAogIGludDMyeDRfdCBfX3JldF8zNTg7IFwKICBfX3JldF8zNTggPSBfX25vc3dhcF92c2V0cV9sYW5lX3MzMihfX25vc3dhcF92Z2V0X2xhbmVfczMyKF9fcmV2Ml8zNTgsIF9fcDNfMzU4KSwgX19yZXYwXzM1OCwgX19wMV8zNTgpOyBcCiAgX19yZXRfMzU4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMzU4LCBfX3JldF8zNTgsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfMzU4OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmNvcHlxX2xhbmVfczY0KF9fcDBfMzU5LCBfX3AxXzM1OSwgX19wMl8zNTksIF9fcDNfMzU5KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgyX3QgX19zMF8zNTkgPSBfX3AwXzM1OTsgXAogIGludDY0eDFfdCBfX3MyXzM1OSA9IF9fcDJfMzU5OyBcCiAgaW50NjR4Ml90IF9fcmV0XzM1OTsgXAogIF9fcmV0XzM1OSA9IHZzZXRxX2xhbmVfczY0KHZnZXRfbGFuZV9zNjQoX19zMl8zNTksIF9fcDNfMzU5KSwgX19zMF8zNTksIF9fcDFfMzU5KTsgXAogIF9fcmV0XzM1OTsgXAp9KQojZWxzZQojZGVmaW5lIHZjb3B5cV9sYW5lX3M2NChfX3AwXzM2MCwgX19wMV8zNjAsIF9fcDJfMzYwLCBfX3AzXzM2MCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4Ml90IF9fczBfMzYwID0gX19wMF8zNjA7IFwKICBpbnQ2NHgxX3QgX19zMl8zNjAgPSBfX3AyXzM2MDsgXAogIGludDY0eDJfdCBfX3JldjBfMzYwOyAgX19yZXYwXzM2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfMzYwLCBfX3MwXzM2MCwgMSwgMCk7IFwKICBpbnQ2NHgyX3QgX19yZXRfMzYwOyBcCiAgX19yZXRfMzYwID0gX19ub3N3YXBfdnNldHFfbGFuZV9zNjQodmdldF9sYW5lX3M2NChfX3MyXzM2MCwgX19wM18zNjApLCBfX3JldjBfMzYwLCBfX3AxXzM2MCk7IFwKICBfX3JldF8zNjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8zNjAsIF9fcmV0XzM2MCwgMSwgMCk7IFwKICBfX3JldF8zNjA7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Y29weXFfbGFuZV9zMTYoX19wMF8zNjEsIF9fcDFfMzYxLCBfX3AyXzM2MSwgX19wM18zNjEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDhfdCBfX3MwXzM2MSA9IF9fcDBfMzYxOyBcCiAgaW50MTZ4NF90IF9fczJfMzYxID0gX19wMl8zNjE7IFwKICBpbnQxNng4X3QgX19yZXRfMzYxOyBcCiAgX19yZXRfMzYxID0gdnNldHFfbGFuZV9zMTYodmdldF9sYW5lX3MxNihfX3MyXzM2MSwgX19wM18zNjEpLCBfX3MwXzM2MSwgX19wMV8zNjEpOyBcCiAgX19yZXRfMzYxOyBcCn0pCiNlbHNlCiNkZWZpbmUgdmNvcHlxX2xhbmVfczE2KF9fcDBfMzYyLCBfX3AxXzM2MiwgX19wMl8zNjIsIF9fcDNfMzYyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4X3QgX19zMF8zNjIgPSBfX3AwXzM2MjsgXAogIGludDE2eDRfdCBfX3MyXzM2MiA9IF9fcDJfMzYyOyBcCiAgaW50MTZ4OF90IF9fcmV2MF8zNjI7ICBfX3JldjBfMzYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8zNjIsIF9fczBfMzYyLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDRfdCBfX3JldjJfMzYyOyAgX19yZXYyXzM2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfMzYyLCBfX3MyXzM2MiwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng4X3QgX19yZXRfMzYyOyBcCiAgX19yZXRfMzYyID0gX19ub3N3YXBfdnNldHFfbGFuZV9zMTYoX19ub3N3YXBfdmdldF9sYW5lX3MxNihfX3JldjJfMzYyLCBfX3AzXzM2MiksIF9fcmV2MF8zNjIsIF9fcDFfMzYyKTsgXAogIF9fcmV0XzM2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzM2MiwgX19yZXRfMzYyLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzM2MjsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZjb3B5X2xhbmVfcDgoX19wMF8zNjMsIF9fcDFfMzYzLCBfX3AyXzM2MywgX19wM18zNjMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4eDhfdCBfX3MwXzM2MyA9IF9fcDBfMzYzOyBcCiAgcG9seTh4OF90IF9fczJfMzYzID0gX19wMl8zNjM7IFwKICBwb2x5OHg4X3QgX19yZXRfMzYzOyBcCiAgX19yZXRfMzYzID0gdnNldF9sYW5lX3A4KHZnZXRfbGFuZV9wOChfX3MyXzM2MywgX19wM18zNjMpLCBfX3MwXzM2MywgX19wMV8zNjMpOyBcCiAgX19yZXRfMzYzOyBcCn0pCiNlbHNlCiNkZWZpbmUgdmNvcHlfbGFuZV9wOChfX3AwXzM2NCwgX19wMV8zNjQsIF9fcDJfMzY0LCBfX3AzXzM2NCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4OF90IF9fczBfMzY0ID0gX19wMF8zNjQ7IFwKICBwb2x5OHg4X3QgX19zMl8zNjQgPSBfX3AyXzM2NDsgXAogIHBvbHk4eDhfdCBfX3JldjBfMzY0OyAgX19yZXYwXzM2NCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfMzY0LCBfX3MwXzM2NCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBwb2x5OHg4X3QgX19yZXYyXzM2NDsgIF9fcmV2Ml8zNjQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzM2NCwgX19zMl8zNjQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgcG9seTh4OF90IF9fcmV0XzM2NDsgXAogIF9fcmV0XzM2NCA9IF9fbm9zd2FwX3ZzZXRfbGFuZV9wOChfX25vc3dhcF92Z2V0X2xhbmVfcDgoX19yZXYyXzM2NCwgX19wM18zNjQpLCBfX3JldjBfMzY0LCBfX3AxXzM2NCk7IFwKICBfX3JldF8zNjQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8zNjQsIF9fcmV0XzM2NCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF8zNjQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Y29weV9sYW5lX3AxNihfX3AwXzM2NSwgX19wMV8zNjUsIF9fcDJfMzY1LCBfX3AzXzM2NSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDRfdCBfX3MwXzM2NSA9IF9fcDBfMzY1OyBcCiAgcG9seTE2eDRfdCBfX3MyXzM2NSA9IF9fcDJfMzY1OyBcCiAgcG9seTE2eDRfdCBfX3JldF8zNjU7IFwKICBfX3JldF8zNjUgPSB2c2V0X2xhbmVfcDE2KHZnZXRfbGFuZV9wMTYoX19zMl8zNjUsIF9fcDNfMzY1KSwgX19zMF8zNjUsIF9fcDFfMzY1KTsgXAogIF9fcmV0XzM2NTsgXAp9KQojZWxzZQojZGVmaW5lIHZjb3B5X2xhbmVfcDE2KF9fcDBfMzY2LCBfX3AxXzM2NiwgX19wMl8zNjYsIF9fcDNfMzY2KSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4NF90IF9fczBfMzY2ID0gX19wMF8zNjY7IFwKICBwb2x5MTZ4NF90IF9fczJfMzY2ID0gX19wMl8zNjY7IFwKICBwb2x5MTZ4NF90IF9fcmV2MF8zNjY7ICBfX3JldjBfMzY2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8zNjYsIF9fczBfMzY2LCAzLCAyLCAxLCAwKTsgXAogIHBvbHkxNng0X3QgX19yZXYyXzM2NjsgIF9fcmV2Ml8zNjYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzM2NiwgX19zMl8zNjYsIDMsIDIsIDEsIDApOyBcCiAgcG9seTE2eDRfdCBfX3JldF8zNjY7IFwKICBfX3JldF8zNjYgPSBfX25vc3dhcF92c2V0X2xhbmVfcDE2KF9fbm9zd2FwX3ZnZXRfbGFuZV9wMTYoX19yZXYyXzM2NiwgX19wM18zNjYpLCBfX3JldjBfMzY2LCBfX3AxXzM2Nik7IFwKICBfX3JldF8zNjYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8zNjYsIF9fcmV0XzM2NiwgMywgMiwgMSwgMCk7IFwKICBfX3JldF8zNjY7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Y29weV9sYW5lX3U4KF9fcDBfMzY3LCBfX3AxXzM2NywgX19wMl8zNjcsIF9fcDNfMzY3KSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHg4X3QgX19zMF8zNjcgPSBfX3AwXzM2NzsgXAogIHVpbnQ4eDhfdCBfX3MyXzM2NyA9IF9fcDJfMzY3OyBcCiAgdWludDh4OF90IF9fcmV0XzM2NzsgXAogIF9fcmV0XzM2NyA9IHZzZXRfbGFuZV91OCh2Z2V0X2xhbmVfdTgoX19zMl8zNjcsIF9fcDNfMzY3KSwgX19zMF8zNjcsIF9fcDFfMzY3KTsgXAogIF9fcmV0XzM2NzsgXAp9KQojZWxzZQojZGVmaW5lIHZjb3B5X2xhbmVfdTgoX19wMF8zNjgsIF9fcDFfMzY4LCBfX3AyXzM2OCwgX19wM18zNjgpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDhfdCBfX3MwXzM2OCA9IF9fcDBfMzY4OyBcCiAgdWludDh4OF90IF9fczJfMzY4ID0gX19wMl8zNjg7IFwKICB1aW50OHg4X3QgX19yZXYwXzM2ODsgIF9fcmV2MF8zNjggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzM2OCwgX19zMF8zNjgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDh4OF90IF9fcmV2Ml8zNjg7ICBfX3JldjJfMzY4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl8zNjgsIF9fczJfMzY4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQ4eDhfdCBfX3JldF8zNjg7IFwKICBfX3JldF8zNjggPSBfX25vc3dhcF92c2V0X2xhbmVfdTgoX19ub3N3YXBfdmdldF9sYW5lX3U4KF9fcmV2Ml8zNjgsIF9fcDNfMzY4KSwgX19yZXYwXzM2OCwgX19wMV8zNjgpOyBcCiAgX19yZXRfMzY4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMzY4LCBfX3JldF8zNjgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfMzY4OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmNvcHlfbGFuZV91MzIoX19wMF8zNjksIF9fcDFfMzY5LCBfX3AyXzM2OSwgX19wM18zNjkpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMngyX3QgX19zMF8zNjkgPSBfX3AwXzM2OTsgXAogIHVpbnQzMngyX3QgX19zMl8zNjkgPSBfX3AyXzM2OTsgXAogIHVpbnQzMngyX3QgX19yZXRfMzY5OyBcCiAgX19yZXRfMzY5ID0gdnNldF9sYW5lX3UzMih2Z2V0X2xhbmVfdTMyKF9fczJfMzY5LCBfX3AzXzM2OSksIF9fczBfMzY5LCBfX3AxXzM2OSk7IFwKICBfX3JldF8zNjk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Y29weV9sYW5lX3UzMihfX3AwXzM3MCwgX19wMV8zNzAsIF9fcDJfMzcwLCBfX3AzXzM3MCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDJfdCBfX3MwXzM3MCA9IF9fcDBfMzcwOyBcCiAgdWludDMyeDJfdCBfX3MyXzM3MCA9IF9fcDJfMzcwOyBcCiAgdWludDMyeDJfdCBfX3JldjBfMzcwOyAgX19yZXYwXzM3MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfMzcwLCBfX3MwXzM3MCwgMSwgMCk7IFwKICB1aW50MzJ4Ml90IF9fcmV2Ml8zNzA7ICBfX3JldjJfMzcwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl8zNzAsIF9fczJfMzcwLCAxLCAwKTsgXAogIHVpbnQzMngyX3QgX19yZXRfMzcwOyBcCiAgX19yZXRfMzcwID0gX19ub3N3YXBfdnNldF9sYW5lX3UzMihfX25vc3dhcF92Z2V0X2xhbmVfdTMyKF9fcmV2Ml8zNzAsIF9fcDNfMzcwKSwgX19yZXYwXzM3MCwgX19wMV8zNzApOyBcCiAgX19yZXRfMzcwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMzcwLCBfX3JldF8zNzAsIDEsIDApOyBcCiAgX19yZXRfMzcwOyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2Y29weV9sYW5lX3U2NChfX3AwXzM3MSwgX19wMV8zNzEsIF9fcDJfMzcxLCBfX3AzXzM3MSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDFfdCBfX3MwXzM3MSA9IF9fcDBfMzcxOyBcCiAgdWludDY0eDFfdCBfX3MyXzM3MSA9IF9fcDJfMzcxOyBcCiAgdWludDY0eDFfdCBfX3JldF8zNzE7IFwKICBfX3JldF8zNzEgPSB2c2V0X2xhbmVfdTY0KHZnZXRfbGFuZV91NjQoX19zMl8zNzEsIF9fcDNfMzcxKSwgX19zMF8zNzEsIF9fcDFfMzcxKTsgXAogIF9fcmV0XzM3MTsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Y29weV9sYW5lX3UxNihfX3AwXzM3MiwgX19wMV8zNzIsIF9fcDJfMzcyLCBfX3AzXzM3MikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDRfdCBfX3MwXzM3MiA9IF9fcDBfMzcyOyBcCiAgdWludDE2eDRfdCBfX3MyXzM3MiA9IF9fcDJfMzcyOyBcCiAgdWludDE2eDRfdCBfX3JldF8zNzI7IFwKICBfX3JldF8zNzIgPSB2c2V0X2xhbmVfdTE2KHZnZXRfbGFuZV91MTYoX19zMl8zNzIsIF9fcDNfMzcyKSwgX19zMF8zNzIsIF9fcDFfMzcyKTsgXAogIF9fcmV0XzM3MjsgXAp9KQojZWxzZQojZGVmaW5lIHZjb3B5X2xhbmVfdTE2KF9fcDBfMzczLCBfX3AxXzM3MywgX19wMl8zNzMsIF9fcDNfMzczKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4NF90IF9fczBfMzczID0gX19wMF8zNzM7IFwKICB1aW50MTZ4NF90IF9fczJfMzczID0gX19wMl8zNzM7IFwKICB1aW50MTZ4NF90IF9fcmV2MF8zNzM7ICBfX3JldjBfMzczID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8zNzMsIF9fczBfMzczLCAzLCAyLCAxLCAwKTsgXAogIHVpbnQxNng0X3QgX19yZXYyXzM3MzsgIF9fcmV2Ml8zNzMgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzM3MywgX19zMl8zNzMsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDRfdCBfX3JldF8zNzM7IFwKICBfX3JldF8zNzMgPSBfX25vc3dhcF92c2V0X2xhbmVfdTE2KF9fbm9zd2FwX3ZnZXRfbGFuZV91MTYoX19yZXYyXzM3MywgX19wM18zNzMpLCBfX3JldjBfMzczLCBfX3AxXzM3Myk7IFwKICBfX3JldF8zNzMgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8zNzMsIF9fcmV0XzM3MywgMywgMiwgMSwgMCk7IFwKICBfX3JldF8zNzM7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Y29weV9sYW5lX3M4KF9fcDBfMzc0LCBfX3AxXzM3NCwgX19wMl8zNzQsIF9fcDNfMzc0KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDhfdCBfX3MwXzM3NCA9IF9fcDBfMzc0OyBcCiAgaW50OHg4X3QgX19zMl8zNzQgPSBfX3AyXzM3NDsgXAogIGludDh4OF90IF9fcmV0XzM3NDsgXAogIF9fcmV0XzM3NCA9IHZzZXRfbGFuZV9zOCh2Z2V0X2xhbmVfczgoX19zMl8zNzQsIF9fcDNfMzc0KSwgX19zMF8zNzQsIF9fcDFfMzc0KTsgXAogIF9fcmV0XzM3NDsgXAp9KQojZWxzZQojZGVmaW5lIHZjb3B5X2xhbmVfczgoX19wMF8zNzUsIF9fcDFfMzc1LCBfX3AyXzM3NSwgX19wM18zNzUpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4OF90IF9fczBfMzc1ID0gX19wMF8zNzU7IFwKICBpbnQ4eDhfdCBfX3MyXzM3NSA9IF9fcDJfMzc1OyBcCiAgaW50OHg4X3QgX19yZXYwXzM3NTsgIF9fcmV2MF8zNzUgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzM3NSwgX19zMF8zNzUsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50OHg4X3QgX19yZXYyXzM3NTsgIF9fcmV2Ml8zNzUgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzM3NSwgX19zMl8zNzUsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50OHg4X3QgX19yZXRfMzc1OyBcCiAgX19yZXRfMzc1ID0gX19ub3N3YXBfdnNldF9sYW5lX3M4KF9fbm9zd2FwX3ZnZXRfbGFuZV9zOChfX3JldjJfMzc1LCBfX3AzXzM3NSksIF9fcmV2MF8zNzUsIF9fcDFfMzc1KTsgXAogIF9fcmV0XzM3NSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzM3NSwgX19yZXRfMzc1LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzM3NTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZjb3B5X2xhbmVfZjMyKF9fcDBfMzc2LCBfX3AxXzM3NiwgX19wMl8zNzYsIF9fcDNfMzc2KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJfdCBfX3MwXzM3NiA9IF9fcDBfMzc2OyBcCiAgZmxvYXQzMngyX3QgX19zMl8zNzYgPSBfX3AyXzM3NjsgXAogIGZsb2F0MzJ4Ml90IF9fcmV0XzM3NjsgXAogIF9fcmV0XzM3NiA9IHZzZXRfbGFuZV9mMzIodmdldF9sYW5lX2YzMihfX3MyXzM3NiwgX19wM18zNzYpLCBfX3MwXzM3NiwgX19wMV8zNzYpOyBcCiAgX19yZXRfMzc2OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmNvcHlfbGFuZV9mMzIoX19wMF8zNzcsIF9fcDFfMzc3LCBfX3AyXzM3NywgX19wM18zNzcpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4Ml90IF9fczBfMzc3ID0gX19wMF8zNzc7IFwKICBmbG9hdDMyeDJfdCBfX3MyXzM3NyA9IF9fcDJfMzc3OyBcCiAgZmxvYXQzMngyX3QgX19yZXYwXzM3NzsgIF9fcmV2MF8zNzcgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzM3NywgX19zMF8zNzcsIDEsIDApOyBcCiAgZmxvYXQzMngyX3QgX19yZXYyXzM3NzsgIF9fcmV2Ml8zNzcgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzM3NywgX19zMl8zNzcsIDEsIDApOyBcCiAgZmxvYXQzMngyX3QgX19yZXRfMzc3OyBcCiAgX19yZXRfMzc3ID0gX19ub3N3YXBfdnNldF9sYW5lX2YzMihfX25vc3dhcF92Z2V0X2xhbmVfZjMyKF9fcmV2Ml8zNzcsIF9fcDNfMzc3KSwgX19yZXYwXzM3NywgX19wMV8zNzcpOyBcCiAgX19yZXRfMzc3ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMzc3LCBfX3JldF8zNzcsIDEsIDApOyBcCiAgX19yZXRfMzc3OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmNvcHlfbGFuZV9zMzIoX19wMF8zNzgsIF9fcDFfMzc4LCBfX3AyXzM3OCwgX19wM18zNzgpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJfdCBfX3MwXzM3OCA9IF9fcDBfMzc4OyBcCiAgaW50MzJ4Ml90IF9fczJfMzc4ID0gX19wMl8zNzg7IFwKICBpbnQzMngyX3QgX19yZXRfMzc4OyBcCiAgX19yZXRfMzc4ID0gdnNldF9sYW5lX3MzMih2Z2V0X2xhbmVfczMyKF9fczJfMzc4LCBfX3AzXzM3OCksIF9fczBfMzc4LCBfX3AxXzM3OCk7IFwKICBfX3JldF8zNzg7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Y29weV9sYW5lX3MzMihfX3AwXzM3OSwgX19wMV8zNzksIF9fcDJfMzc5LCBfX3AzXzM3OSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Ml90IF9fczBfMzc5ID0gX19wMF8zNzk7IFwKICBpbnQzMngyX3QgX19zMl8zNzkgPSBfX3AyXzM3OTsgXAogIGludDMyeDJfdCBfX3JldjBfMzc5OyAgX19yZXYwXzM3OSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfMzc5LCBfX3MwXzM3OSwgMSwgMCk7IFwKICBpbnQzMngyX3QgX19yZXYyXzM3OTsgIF9fcmV2Ml8zNzkgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzM3OSwgX19zMl8zNzksIDEsIDApOyBcCiAgaW50MzJ4Ml90IF9fcmV0XzM3OTsgXAogIF9fcmV0XzM3OSA9IF9fbm9zd2FwX3ZzZXRfbGFuZV9zMzIoX19ub3N3YXBfdmdldF9sYW5lX3MzMihfX3JldjJfMzc5LCBfX3AzXzM3OSksIF9fcmV2MF8zNzksIF9fcDFfMzc5KTsgXAogIF9fcmV0XzM3OSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzM3OSwgX19yZXRfMzc5LCAxLCAwKTsgXAogIF9fcmV0XzM3OTsgXAp9KQojZW5kaWYKCiNkZWZpbmUgdmNvcHlfbGFuZV9zNjQoX19wMF8zODAsIF9fcDFfMzgwLCBfX3AyXzM4MCwgX19wM18zODApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDFfdCBfX3MwXzM4MCA9IF9fcDBfMzgwOyBcCiAgaW50NjR4MV90IF9fczJfMzgwID0gX19wMl8zODA7IFwKICBpbnQ2NHgxX3QgX19yZXRfMzgwOyBcCiAgX19yZXRfMzgwID0gdnNldF9sYW5lX3M2NCh2Z2V0X2xhbmVfczY0KF9fczJfMzgwLCBfX3AzXzM4MCksIF9fczBfMzgwLCBfX3AxXzM4MCk7IFwKICBfX3JldF8zODA7IFwKfSkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmNvcHlfbGFuZV9zMTYoX19wMF8zODEsIF9fcDFfMzgxLCBfX3AyXzM4MSwgX19wM18zODEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDRfdCBfX3MwXzM4MSA9IF9fcDBfMzgxOyBcCiAgaW50MTZ4NF90IF9fczJfMzgxID0gX19wMl8zODE7IFwKICBpbnQxNng0X3QgX19yZXRfMzgxOyBcCiAgX19yZXRfMzgxID0gdnNldF9sYW5lX3MxNih2Z2V0X2xhbmVfczE2KF9fczJfMzgxLCBfX3AzXzM4MSksIF9fczBfMzgxLCBfX3AxXzM4MSk7IFwKICBfX3JldF8zODE7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Y29weV9sYW5lX3MxNihfX3AwXzM4MiwgX19wMV8zODIsIF9fcDJfMzgyLCBfX3AzXzM4MikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NF90IF9fczBfMzgyID0gX19wMF8zODI7IFwKICBpbnQxNng0X3QgX19zMl8zODIgPSBfX3AyXzM4MjsgXAogIGludDE2eDRfdCBfX3JldjBfMzgyOyAgX19yZXYwXzM4MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfMzgyLCBfX3MwXzM4MiwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng0X3QgX19yZXYyXzM4MjsgIF9fcmV2Ml8zODIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzM4MiwgX19zMl8zODIsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4NF90IF9fcmV0XzM4MjsgXAogIF9fcmV0XzM4MiA9IF9fbm9zd2FwX3ZzZXRfbGFuZV9zMTYoX19ub3N3YXBfdmdldF9sYW5lX3MxNihfX3JldjJfMzgyLCBfX3AzXzM4MiksIF9fcmV2MF8zODIsIF9fcDFfMzgyKTsgXAogIF9fcmV0XzM4MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzM4MiwgX19yZXRfMzgyLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzM4MjsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZjb3B5cV9sYW5lcV9wOChfX3AwXzM4MywgX19wMV8zODMsIF9fcDJfMzgzLCBfX3AzXzM4MykgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4MTZfdCBfX3MwXzM4MyA9IF9fcDBfMzgzOyBcCiAgcG9seTh4MTZfdCBfX3MyXzM4MyA9IF9fcDJfMzgzOyBcCiAgcG9seTh4MTZfdCBfX3JldF8zODM7IFwKICBfX3JldF8zODMgPSB2c2V0cV9sYW5lX3A4KHZnZXRxX2xhbmVfcDgoX19zMl8zODMsIF9fcDNfMzgzKSwgX19zMF8zODMsIF9fcDFfMzgzKTsgXAogIF9fcmV0XzM4MzsgXAp9KQojZWxzZQojZGVmaW5lIHZjb3B5cV9sYW5lcV9wOChfX3AwXzM4NCwgX19wMV8zODQsIF9fcDJfMzg0LCBfX3AzXzM4NCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4MTZfdCBfX3MwXzM4NCA9IF9fcDBfMzg0OyBcCiAgcG9seTh4MTZfdCBfX3MyXzM4NCA9IF9fcDJfMzg0OyBcCiAgcG9seTh4MTZfdCBfX3JldjBfMzg0OyAgX19yZXYwXzM4NCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfMzg0LCBfX3MwXzM4NCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBwb2x5OHgxNl90IF9fcmV2Ml8zODQ7ICBfX3JldjJfMzg0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl8zODQsIF9fczJfMzg0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHBvbHk4eDE2X3QgX19yZXRfMzg0OyBcCiAgX19yZXRfMzg0ID0gX19ub3N3YXBfdnNldHFfbGFuZV9wOChfX25vc3dhcF92Z2V0cV9sYW5lX3A4KF9fcmV2Ml8zODQsIF9fcDNfMzg0KSwgX19yZXYwXzM4NCwgX19wMV8zODQpOyBcCiAgX19yZXRfMzg0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMzg0LCBfX3JldF8zODQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfMzg0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmNvcHlxX2xhbmVxX3AxNihfX3AwXzM4NSwgX19wMV8zODUsIF9fcDJfMzg1LCBfX3AzXzM4NSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDhfdCBfX3MwXzM4NSA9IF9fcDBfMzg1OyBcCiAgcG9seTE2eDhfdCBfX3MyXzM4NSA9IF9fcDJfMzg1OyBcCiAgcG9seTE2eDhfdCBfX3JldF8zODU7IFwKICBfX3JldF8zODUgPSB2c2V0cV9sYW5lX3AxNih2Z2V0cV9sYW5lX3AxNihfX3MyXzM4NSwgX19wM18zODUpLCBfX3MwXzM4NSwgX19wMV8zODUpOyBcCiAgX19yZXRfMzg1OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmNvcHlxX2xhbmVxX3AxNihfX3AwXzM4NiwgX19wMV8zODYsIF9fcDJfMzg2LCBfX3AzXzM4NikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDhfdCBfX3MwXzM4NiA9IF9fcDBfMzg2OyBcCiAgcG9seTE2eDhfdCBfX3MyXzM4NiA9IF9fcDJfMzg2OyBcCiAgcG9seTE2eDhfdCBfX3JldjBfMzg2OyAgX19yZXYwXzM4NiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfMzg2LCBfX3MwXzM4NiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBwb2x5MTZ4OF90IF9fcmV2Ml8zODY7ICBfX3JldjJfMzg2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl8zODYsIF9fczJfMzg2LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHBvbHkxNng4X3QgX19yZXRfMzg2OyBcCiAgX19yZXRfMzg2ID0gX19ub3N3YXBfdnNldHFfbGFuZV9wMTYoX19ub3N3YXBfdmdldHFfbGFuZV9wMTYoX19yZXYyXzM4NiwgX19wM18zODYpLCBfX3JldjBfMzg2LCBfX3AxXzM4Nik7IFwKICBfX3JldF8zODYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8zODYsIF9fcmV0XzM4NiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF8zODY7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Y29weXFfbGFuZXFfdTgoX19wMF8zODcsIF9fcDFfMzg3LCBfX3AyXzM4NywgX19wM18zODcpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDE2X3QgX19zMF8zODcgPSBfX3AwXzM4NzsgXAogIHVpbnQ4eDE2X3QgX19zMl8zODcgPSBfX3AyXzM4NzsgXAogIHVpbnQ4eDE2X3QgX19yZXRfMzg3OyBcCiAgX19yZXRfMzg3ID0gdnNldHFfbGFuZV91OCh2Z2V0cV9sYW5lX3U4KF9fczJfMzg3LCBfX3AzXzM4NyksIF9fczBfMzg3LCBfX3AxXzM4Nyk7IFwKICBfX3JldF8zODc7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Y29weXFfbGFuZXFfdTgoX19wMF8zODgsIF9fcDFfMzg4LCBfX3AyXzM4OCwgX19wM18zODgpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDE2X3QgX19zMF8zODggPSBfX3AwXzM4ODsgXAogIHVpbnQ4eDE2X3QgX19zMl8zODggPSBfX3AyXzM4ODsgXAogIHVpbnQ4eDE2X3QgX19yZXYwXzM4ODsgIF9fcmV2MF8zODggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzM4OCwgX19zMF8zODgsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDh4MTZfdCBfX3JldjJfMzg4OyAgX19yZXYyXzM4OCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfMzg4LCBfX3MyXzM4OCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50OHgxNl90IF9fcmV0XzM4ODsgXAogIF9fcmV0XzM4OCA9IF9fbm9zd2FwX3ZzZXRxX2xhbmVfdTgoX19ub3N3YXBfdmdldHFfbGFuZV91OChfX3JldjJfMzg4LCBfX3AzXzM4OCksIF9fcmV2MF8zODgsIF9fcDFfMzg4KTsgXAogIF9fcmV0XzM4OCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzM4OCwgX19yZXRfMzg4LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzM4ODsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZjb3B5cV9sYW5lcV91MzIoX19wMF8zODksIF9fcDFfMzg5LCBfX3AyXzM4OSwgX19wM18zODkpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0X3QgX19zMF8zODkgPSBfX3AwXzM4OTsgXAogIHVpbnQzMng0X3QgX19zMl8zODkgPSBfX3AyXzM4OTsgXAogIHVpbnQzMng0X3QgX19yZXRfMzg5OyBcCiAgX19yZXRfMzg5ID0gdnNldHFfbGFuZV91MzIodmdldHFfbGFuZV91MzIoX19zMl8zODksIF9fcDNfMzg5KSwgX19zMF8zODksIF9fcDFfMzg5KTsgXAogIF9fcmV0XzM4OTsgXAp9KQojZWxzZQojZGVmaW5lIHZjb3B5cV9sYW5lcV91MzIoX19wMF8zOTAsIF9fcDFfMzkwLCBfX3AyXzM5MCwgX19wM18zOTApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0X3QgX19zMF8zOTAgPSBfX3AwXzM5MDsgXAogIHVpbnQzMng0X3QgX19zMl8zOTAgPSBfX3AyXzM5MDsgXAogIHVpbnQzMng0X3QgX19yZXYwXzM5MDsgIF9fcmV2MF8zOTAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzM5MCwgX19zMF8zOTAsIDMsIDIsIDEsIDApOyBcCiAgdWludDMyeDRfdCBfX3JldjJfMzkwOyAgX19yZXYyXzM5MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfMzkwLCBfX3MyXzM5MCwgMywgMiwgMSwgMCk7IFwKICB1aW50MzJ4NF90IF9fcmV0XzM5MDsgXAogIF9fcmV0XzM5MCA9IF9fbm9zd2FwX3ZzZXRxX2xhbmVfdTMyKF9fbm9zd2FwX3ZnZXRxX2xhbmVfdTMyKF9fcmV2Ml8zOTAsIF9fcDNfMzkwKSwgX19yZXYwXzM5MCwgX19wMV8zOTApOyBcCiAgX19yZXRfMzkwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfMzkwLCBfX3JldF8zOTAsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfMzkwOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmNvcHlxX2xhbmVxX3U2NChfX3AwXzM5MSwgX19wMV8zOTEsIF9fcDJfMzkxLCBfX3AzXzM5MSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDJfdCBfX3MwXzM5MSA9IF9fcDBfMzkxOyBcCiAgdWludDY0eDJfdCBfX3MyXzM5MSA9IF9fcDJfMzkxOyBcCiAgdWludDY0eDJfdCBfX3JldF8zOTE7IFwKICBfX3JldF8zOTEgPSB2c2V0cV9sYW5lX3U2NCh2Z2V0cV9sYW5lX3U2NChfX3MyXzM5MSwgX19wM18zOTEpLCBfX3MwXzM5MSwgX19wMV8zOTEpOyBcCiAgX19yZXRfMzkxOyBcCn0pCiNlbHNlCiNkZWZpbmUgdmNvcHlxX2xhbmVxX3U2NChfX3AwXzM5MiwgX19wMV8zOTIsIF9fcDJfMzkyLCBfX3AzXzM5MikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDJfdCBfX3MwXzM5MiA9IF9fcDBfMzkyOyBcCiAgdWludDY0eDJfdCBfX3MyXzM5MiA9IF9fcDJfMzkyOyBcCiAgdWludDY0eDJfdCBfX3JldjBfMzkyOyAgX19yZXYwXzM5MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfMzkyLCBfX3MwXzM5MiwgMSwgMCk7IFwKICB1aW50NjR4Ml90IF9fcmV2Ml8zOTI7ICBfX3JldjJfMzkyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl8zOTIsIF9fczJfMzkyLCAxLCAwKTsgXAogIHVpbnQ2NHgyX3QgX19yZXRfMzkyOyBcCiAgX19yZXRfMzkyID0gX19ub3N3YXBfdnNldHFfbGFuZV91NjQoX19ub3N3YXBfdmdldHFfbGFuZV91NjQoX19yZXYyXzM5MiwgX19wM18zOTIpLCBfX3JldjBfMzkyLCBfX3AxXzM5Mik7IFwKICBfX3JldF8zOTIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8zOTIsIF9fcmV0XzM5MiwgMSwgMCk7IFwKICBfX3JldF8zOTI7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Y29weXFfbGFuZXFfdTE2KF9fcDBfMzkzLCBfX3AxXzM5MywgX19wMl8zOTMsIF9fcDNfMzkzKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4OF90IF9fczBfMzkzID0gX19wMF8zOTM7IFwKICB1aW50MTZ4OF90IF9fczJfMzkzID0gX19wMl8zOTM7IFwKICB1aW50MTZ4OF90IF9fcmV0XzM5MzsgXAogIF9fcmV0XzM5MyA9IHZzZXRxX2xhbmVfdTE2KHZnZXRxX2xhbmVfdTE2KF9fczJfMzkzLCBfX3AzXzM5MyksIF9fczBfMzkzLCBfX3AxXzM5Myk7IFwKICBfX3JldF8zOTM7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Y29weXFfbGFuZXFfdTE2KF9fcDBfMzk0LCBfX3AxXzM5NCwgX19wMl8zOTQsIF9fcDNfMzk0KSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4OF90IF9fczBfMzk0ID0gX19wMF8zOTQ7IFwKICB1aW50MTZ4OF90IF9fczJfMzk0ID0gX19wMl8zOTQ7IFwKICB1aW50MTZ4OF90IF9fcmV2MF8zOTQ7ICBfX3JldjBfMzk0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF8zOTQsIF9fczBfMzk0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQxNng4X3QgX19yZXYyXzM5NDsgIF9fcmV2Ml8zOTQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzM5NCwgX19zMl8zOTQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDhfdCBfX3JldF8zOTQ7IFwKICBfX3JldF8zOTQgPSBfX25vc3dhcF92c2V0cV9sYW5lX3UxNihfX25vc3dhcF92Z2V0cV9sYW5lX3UxNihfX3JldjJfMzk0LCBfX3AzXzM5NCksIF9fcmV2MF8zOTQsIF9fcDFfMzk0KTsgXAogIF9fcmV0XzM5NCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzM5NCwgX19yZXRfMzk0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzM5NDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZjb3B5cV9sYW5lcV9zOChfX3AwXzM5NSwgX19wMV8zOTUsIF9fcDJfMzk1LCBfX3AzXzM5NSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHgxNl90IF9fczBfMzk1ID0gX19wMF8zOTU7IFwKICBpbnQ4eDE2X3QgX19zMl8zOTUgPSBfX3AyXzM5NTsgXAogIGludDh4MTZfdCBfX3JldF8zOTU7IFwKICBfX3JldF8zOTUgPSB2c2V0cV9sYW5lX3M4KHZnZXRxX2xhbmVfczgoX19zMl8zOTUsIF9fcDNfMzk1KSwgX19zMF8zOTUsIF9fcDFfMzk1KTsgXAogIF9fcmV0XzM5NTsgXAp9KQojZWxzZQojZGVmaW5lIHZjb3B5cV9sYW5lcV9zOChfX3AwXzM5NiwgX19wMV8zOTYsIF9fcDJfMzk2LCBfX3AzXzM5NikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHgxNl90IF9fczBfMzk2ID0gX19wMF8zOTY7IFwKICBpbnQ4eDE2X3QgX19zMl8zOTYgPSBfX3AyXzM5NjsgXAogIGludDh4MTZfdCBfX3JldjBfMzk2OyAgX19yZXYwXzM5NiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfMzk2LCBfX3MwXzM5NiwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQ4eDE2X3QgX19yZXYyXzM5NjsgIF9fcmV2Ml8zOTYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzM5NiwgX19zMl8zOTYsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50OHgxNl90IF9fcmV0XzM5NjsgXAogIF9fcmV0XzM5NiA9IF9fbm9zd2FwX3ZzZXRxX2xhbmVfczgoX19ub3N3YXBfdmdldHFfbGFuZV9zOChfX3JldjJfMzk2LCBfX3AzXzM5NiksIF9fcmV2MF8zOTYsIF9fcDFfMzk2KTsgXAogIF9fcmV0XzM5NiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzM5NiwgX19yZXRfMzk2LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzM5NjsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZjb3B5cV9sYW5lcV9mMzIoX19wMF8zOTcsIF9fcDFfMzk3LCBfX3AyXzM5NywgX19wM18zOTcpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NF90IF9fczBfMzk3ID0gX19wMF8zOTc7IFwKICBmbG9hdDMyeDRfdCBfX3MyXzM5NyA9IF9fcDJfMzk3OyBcCiAgZmxvYXQzMng0X3QgX19yZXRfMzk3OyBcCiAgX19yZXRfMzk3ID0gdnNldHFfbGFuZV9mMzIodmdldHFfbGFuZV9mMzIoX19zMl8zOTcsIF9fcDNfMzk3KSwgX19zMF8zOTcsIF9fcDFfMzk3KTsgXAogIF9fcmV0XzM5NzsgXAp9KQojZWxzZQojZGVmaW5lIHZjb3B5cV9sYW5lcV9mMzIoX19wMF8zOTgsIF9fcDFfMzk4LCBfX3AyXzM5OCwgX19wM18zOTgpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NF90IF9fczBfMzk4ID0gX19wMF8zOTg7IFwKICBmbG9hdDMyeDRfdCBfX3MyXzM5OCA9IF9fcDJfMzk4OyBcCiAgZmxvYXQzMng0X3QgX19yZXYwXzM5ODsgIF9fcmV2MF8zOTggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzM5OCwgX19zMF8zOTgsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQzMng0X3QgX19yZXYyXzM5ODsgIF9fcmV2Ml8zOTggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzM5OCwgX19zMl8zOTgsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQzMng0X3QgX19yZXRfMzk4OyBcCiAgX19yZXRfMzk4ID0gX19ub3N3YXBfdnNldHFfbGFuZV9mMzIoX19ub3N3YXBfdmdldHFfbGFuZV9mMzIoX19yZXYyXzM5OCwgX19wM18zOTgpLCBfX3JldjBfMzk4LCBfX3AxXzM5OCk7IFwKICBfX3JldF8zOTggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF8zOTgsIF9fcmV0XzM5OCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF8zOTg7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Y29weXFfbGFuZXFfczMyKF9fcDBfMzk5LCBfX3AxXzM5OSwgX19wMl8zOTksIF9fcDNfMzk5KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMF8zOTkgPSBfX3AwXzM5OTsgXAogIGludDMyeDRfdCBfX3MyXzM5OSA9IF9fcDJfMzk5OyBcCiAgaW50MzJ4NF90IF9fcmV0XzM5OTsgXAogIF9fcmV0XzM5OSA9IHZzZXRxX2xhbmVfczMyKHZnZXRxX2xhbmVfczMyKF9fczJfMzk5LCBfX3AzXzM5OSksIF9fczBfMzk5LCBfX3AxXzM5OSk7IFwKICBfX3JldF8zOTk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Y29weXFfbGFuZXFfczMyKF9fcDBfNDAwLCBfX3AxXzQwMCwgX19wMl80MDAsIF9fcDNfNDAwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMF80MDAgPSBfX3AwXzQwMDsgXAogIGludDMyeDRfdCBfX3MyXzQwMCA9IF9fcDJfNDAwOyBcCiAgaW50MzJ4NF90IF9fcmV2MF80MDA7ICBfX3JldjBfNDAwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF80MDAsIF9fczBfNDAwLCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDRfdCBfX3JldjJfNDAwOyAgX19yZXYyXzQwMCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfNDAwLCBfX3MyXzQwMCwgMywgMiwgMSwgMCk7IFwKICBpbnQzMng0X3QgX19yZXRfNDAwOyBcCiAgX19yZXRfNDAwID0gX19ub3N3YXBfdnNldHFfbGFuZV9zMzIoX19ub3N3YXBfdmdldHFfbGFuZV9zMzIoX19yZXYyXzQwMCwgX19wM180MDApLCBfX3JldjBfNDAwLCBfX3AxXzQwMCk7IFwKICBfX3JldF80MDAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF80MDAsIF9fcmV0XzQwMCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF80MDA7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Y29weXFfbGFuZXFfczY0KF9fcDBfNDAxLCBfX3AxXzQwMSwgX19wMl80MDEsIF9fcDNfNDAxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgyX3QgX19zMF80MDEgPSBfX3AwXzQwMTsgXAogIGludDY0eDJfdCBfX3MyXzQwMSA9IF9fcDJfNDAxOyBcCiAgaW50NjR4Ml90IF9fcmV0XzQwMTsgXAogIF9fcmV0XzQwMSA9IHZzZXRxX2xhbmVfczY0KHZnZXRxX2xhbmVfczY0KF9fczJfNDAxLCBfX3AzXzQwMSksIF9fczBfNDAxLCBfX3AxXzQwMSk7IFwKICBfX3JldF80MDE7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Y29weXFfbGFuZXFfczY0KF9fcDBfNDAyLCBfX3AxXzQwMiwgX19wMl80MDIsIF9fcDNfNDAyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgyX3QgX19zMF80MDIgPSBfX3AwXzQwMjsgXAogIGludDY0eDJfdCBfX3MyXzQwMiA9IF9fcDJfNDAyOyBcCiAgaW50NjR4Ml90IF9fcmV2MF80MDI7ICBfX3JldjBfNDAyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF80MDIsIF9fczBfNDAyLCAxLCAwKTsgXAogIGludDY0eDJfdCBfX3JldjJfNDAyOyAgX19yZXYyXzQwMiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfNDAyLCBfX3MyXzQwMiwgMSwgMCk7IFwKICBpbnQ2NHgyX3QgX19yZXRfNDAyOyBcCiAgX19yZXRfNDAyID0gX19ub3N3YXBfdnNldHFfbGFuZV9zNjQoX19ub3N3YXBfdmdldHFfbGFuZV9zNjQoX19yZXYyXzQwMiwgX19wM180MDIpLCBfX3JldjBfNDAyLCBfX3AxXzQwMik7IFwKICBfX3JldF80MDIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF80MDIsIF9fcmV0XzQwMiwgMSwgMCk7IFwKICBfX3JldF80MDI7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Y29weXFfbGFuZXFfczE2KF9fcDBfNDAzLCBfX3AxXzQwMywgX19wMl80MDMsIF9fcDNfNDAzKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4X3QgX19zMF80MDMgPSBfX3AwXzQwMzsgXAogIGludDE2eDhfdCBfX3MyXzQwMyA9IF9fcDJfNDAzOyBcCiAgaW50MTZ4OF90IF9fcmV0XzQwMzsgXAogIF9fcmV0XzQwMyA9IHZzZXRxX2xhbmVfczE2KHZnZXRxX2xhbmVfczE2KF9fczJfNDAzLCBfX3AzXzQwMyksIF9fczBfNDAzLCBfX3AxXzQwMyk7IFwKICBfX3JldF80MDM7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Y29weXFfbGFuZXFfczE2KF9fcDBfNDA0LCBfX3AxXzQwNCwgX19wMl80MDQsIF9fcDNfNDA0KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4X3QgX19zMF80MDQgPSBfX3AwXzQwNDsgXAogIGludDE2eDhfdCBfX3MyXzQwNCA9IF9fcDJfNDA0OyBcCiAgaW50MTZ4OF90IF9fcmV2MF80MDQ7ICBfX3JldjBfNDA0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF80MDQsIF9fczBfNDA0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDhfdCBfX3JldjJfNDA0OyAgX19yZXYyXzQwNCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfNDA0LCBfX3MyXzQwNCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng4X3QgX19yZXRfNDA0OyBcCiAgX19yZXRfNDA0ID0gX19ub3N3YXBfdnNldHFfbGFuZV9zMTYoX19ub3N3YXBfdmdldHFfbGFuZV9zMTYoX19yZXYyXzQwNCwgX19wM180MDQpLCBfX3JldjBfNDA0LCBfX3AxXzQwNCk7IFwKICBfX3JldF80MDQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF80MDQsIF9fcmV0XzQwNCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF80MDQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Y29weV9sYW5lcV9wOChfX3AwXzQwNSwgX19wMV80MDUsIF9fcDJfNDA1LCBfX3AzXzQwNSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4OF90IF9fczBfNDA1ID0gX19wMF80MDU7IFwKICBwb2x5OHgxNl90IF9fczJfNDA1ID0gX19wMl80MDU7IFwKICBwb2x5OHg4X3QgX19yZXRfNDA1OyBcCiAgX19yZXRfNDA1ID0gdnNldF9sYW5lX3A4KHZnZXRxX2xhbmVfcDgoX19zMl80MDUsIF9fcDNfNDA1KSwgX19zMF80MDUsIF9fcDFfNDA1KTsgXAogIF9fcmV0XzQwNTsgXAp9KQojZWxzZQojZGVmaW5lIHZjb3B5X2xhbmVxX3A4KF9fcDBfNDA2LCBfX3AxXzQwNiwgX19wMl80MDYsIF9fcDNfNDA2KSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHg4X3QgX19zMF80MDYgPSBfX3AwXzQwNjsgXAogIHBvbHk4eDE2X3QgX19zMl80MDYgPSBfX3AyXzQwNjsgXAogIHBvbHk4eDhfdCBfX3JldjBfNDA2OyAgX19yZXYwXzQwNiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNDA2LCBfX3MwXzQwNiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBwb2x5OHgxNl90IF9fcmV2Ml80MDY7ICBfX3JldjJfNDA2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl80MDYsIF9fczJfNDA2LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHBvbHk4eDhfdCBfX3JldF80MDY7IFwKICBfX3JldF80MDYgPSBfX25vc3dhcF92c2V0X2xhbmVfcDgoX19ub3N3YXBfdmdldHFfbGFuZV9wOChfX3JldjJfNDA2LCBfX3AzXzQwNiksIF9fcmV2MF80MDYsIF9fcDFfNDA2KTsgXAogIF9fcmV0XzQwNiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzQwNiwgX19yZXRfNDA2LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzQwNjsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZjb3B5X2xhbmVxX3AxNihfX3AwXzQwNywgX19wMV80MDcsIF9fcDJfNDA3LCBfX3AzXzQwNykgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDRfdCBfX3MwXzQwNyA9IF9fcDBfNDA3OyBcCiAgcG9seTE2eDhfdCBfX3MyXzQwNyA9IF9fcDJfNDA3OyBcCiAgcG9seTE2eDRfdCBfX3JldF80MDc7IFwKICBfX3JldF80MDcgPSB2c2V0X2xhbmVfcDE2KHZnZXRxX2xhbmVfcDE2KF9fczJfNDA3LCBfX3AzXzQwNyksIF9fczBfNDA3LCBfX3AxXzQwNyk7IFwKICBfX3JldF80MDc7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Y29weV9sYW5lcV9wMTYoX19wMF80MDgsIF9fcDFfNDA4LCBfX3AyXzQwOCwgX19wM180MDgpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng0X3QgX19zMF80MDggPSBfX3AwXzQwODsgXAogIHBvbHkxNng4X3QgX19zMl80MDggPSBfX3AyXzQwODsgXAogIHBvbHkxNng0X3QgX19yZXYwXzQwODsgIF9fcmV2MF80MDggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzQwOCwgX19zMF80MDgsIDMsIDIsIDEsIDApOyBcCiAgcG9seTE2eDhfdCBfX3JldjJfNDA4OyAgX19yZXYyXzQwOCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfNDA4LCBfX3MyXzQwOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBwb2x5MTZ4NF90IF9fcmV0XzQwODsgXAogIF9fcmV0XzQwOCA9IF9fbm9zd2FwX3ZzZXRfbGFuZV9wMTYoX19ub3N3YXBfdmdldHFfbGFuZV9wMTYoX19yZXYyXzQwOCwgX19wM180MDgpLCBfX3JldjBfNDA4LCBfX3AxXzQwOCk7IFwKICBfX3JldF80MDggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF80MDgsIF9fcmV0XzQwOCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF80MDg7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Y29weV9sYW5lcV91OChfX3AwXzQwOSwgX19wMV80MDksIF9fcDJfNDA5LCBfX3AzXzQwOSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4OF90IF9fczBfNDA5ID0gX19wMF80MDk7IFwKICB1aW50OHgxNl90IF9fczJfNDA5ID0gX19wMl80MDk7IFwKICB1aW50OHg4X3QgX19yZXRfNDA5OyBcCiAgX19yZXRfNDA5ID0gdnNldF9sYW5lX3U4KHZnZXRxX2xhbmVfdTgoX19zMl80MDksIF9fcDNfNDA5KSwgX19zMF80MDksIF9fcDFfNDA5KTsgXAogIF9fcmV0XzQwOTsgXAp9KQojZWxzZQojZGVmaW5lIHZjb3B5X2xhbmVxX3U4KF9fcDBfNDEwLCBfX3AxXzQxMCwgX19wMl80MTAsIF9fcDNfNDEwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHg4X3QgX19zMF80MTAgPSBfX3AwXzQxMDsgXAogIHVpbnQ4eDE2X3QgX19zMl80MTAgPSBfX3AyXzQxMDsgXAogIHVpbnQ4eDhfdCBfX3JldjBfNDEwOyAgX19yZXYwXzQxMCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNDEwLCBfX3MwXzQxMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50OHgxNl90IF9fcmV2Ml80MTA7ICBfX3JldjJfNDEwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl80MTAsIF9fczJfNDEwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQ4eDhfdCBfX3JldF80MTA7IFwKICBfX3JldF80MTAgPSBfX25vc3dhcF92c2V0X2xhbmVfdTgoX19ub3N3YXBfdmdldHFfbGFuZV91OChfX3JldjJfNDEwLCBfX3AzXzQxMCksIF9fcmV2MF80MTAsIF9fcDFfNDEwKTsgXAogIF9fcmV0XzQxMCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzQxMCwgX19yZXRfNDEwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzQxMDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZjb3B5X2xhbmVxX3UzMihfX3AwXzQxMSwgX19wMV80MTEsIF9fcDJfNDExLCBfX3AzXzQxMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDJfdCBfX3MwXzQxMSA9IF9fcDBfNDExOyBcCiAgdWludDMyeDRfdCBfX3MyXzQxMSA9IF9fcDJfNDExOyBcCiAgdWludDMyeDJfdCBfX3JldF80MTE7IFwKICBfX3JldF80MTEgPSB2c2V0X2xhbmVfdTMyKHZnZXRxX2xhbmVfdTMyKF9fczJfNDExLCBfX3AzXzQxMSksIF9fczBfNDExLCBfX3AxXzQxMSk7IFwKICBfX3JldF80MTE7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Y29weV9sYW5lcV91MzIoX19wMF80MTIsIF9fcDFfNDEyLCBfX3AyXzQxMiwgX19wM180MTIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMngyX3QgX19zMF80MTIgPSBfX3AwXzQxMjsgXAogIHVpbnQzMng0X3QgX19zMl80MTIgPSBfX3AyXzQxMjsgXAogIHVpbnQzMngyX3QgX19yZXYwXzQxMjsgIF9fcmV2MF80MTIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzQxMiwgX19zMF80MTIsIDEsIDApOyBcCiAgdWludDMyeDRfdCBfX3JldjJfNDEyOyAgX19yZXYyXzQxMiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfNDEyLCBfX3MyXzQxMiwgMywgMiwgMSwgMCk7IFwKICB1aW50MzJ4Ml90IF9fcmV0XzQxMjsgXAogIF9fcmV0XzQxMiA9IF9fbm9zd2FwX3ZzZXRfbGFuZV91MzIoX19ub3N3YXBfdmdldHFfbGFuZV91MzIoX19yZXYyXzQxMiwgX19wM180MTIpLCBfX3JldjBfNDEyLCBfX3AxXzQxMik7IFwKICBfX3JldF80MTIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF80MTIsIF9fcmV0XzQxMiwgMSwgMCk7IFwKICBfX3JldF80MTI7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Y29weV9sYW5lcV91NjQoX19wMF80MTMsIF9fcDFfNDEzLCBfX3AyXzQxMywgX19wM180MTMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgxX3QgX19zMF80MTMgPSBfX3AwXzQxMzsgXAogIHVpbnQ2NHgyX3QgX19zMl80MTMgPSBfX3AyXzQxMzsgXAogIHVpbnQ2NHgxX3QgX19yZXRfNDEzOyBcCiAgX19yZXRfNDEzID0gdnNldF9sYW5lX3U2NCh2Z2V0cV9sYW5lX3U2NChfX3MyXzQxMywgX19wM180MTMpLCBfX3MwXzQxMywgX19wMV80MTMpOyBcCiAgX19yZXRfNDEzOyBcCn0pCiNlbHNlCiNkZWZpbmUgdmNvcHlfbGFuZXFfdTY0KF9fcDBfNDE0LCBfX3AxXzQxNCwgX19wMl80MTQsIF9fcDNfNDE0KSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4MV90IF9fczBfNDE0ID0gX19wMF80MTQ7IFwKICB1aW50NjR4Ml90IF9fczJfNDE0ID0gX19wMl80MTQ7IFwKICB1aW50NjR4Ml90IF9fcmV2Ml80MTQ7ICBfX3JldjJfNDE0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl80MTQsIF9fczJfNDE0LCAxLCAwKTsgXAogIHVpbnQ2NHgxX3QgX19yZXRfNDE0OyBcCiAgX19yZXRfNDE0ID0gdnNldF9sYW5lX3U2NChfX25vc3dhcF92Z2V0cV9sYW5lX3U2NChfX3JldjJfNDE0LCBfX3AzXzQxNCksIF9fczBfNDE0LCBfX3AxXzQxNCk7IFwKICBfX3JldF80MTQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Y29weV9sYW5lcV91MTYoX19wMF80MTUsIF9fcDFfNDE1LCBfX3AyXzQxNSwgX19wM180MTUpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng0X3QgX19zMF80MTUgPSBfX3AwXzQxNTsgXAogIHVpbnQxNng4X3QgX19zMl80MTUgPSBfX3AyXzQxNTsgXAogIHVpbnQxNng0X3QgX19yZXRfNDE1OyBcCiAgX19yZXRfNDE1ID0gdnNldF9sYW5lX3UxNih2Z2V0cV9sYW5lX3UxNihfX3MyXzQxNSwgX19wM180MTUpLCBfX3MwXzQxNSwgX19wMV80MTUpOyBcCiAgX19yZXRfNDE1OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmNvcHlfbGFuZXFfdTE2KF9fcDBfNDE2LCBfX3AxXzQxNiwgX19wMl80MTYsIF9fcDNfNDE2KSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4NF90IF9fczBfNDE2ID0gX19wMF80MTY7IFwKICB1aW50MTZ4OF90IF9fczJfNDE2ID0gX19wMl80MTY7IFwKICB1aW50MTZ4NF90IF9fcmV2MF80MTY7ICBfX3JldjBfNDE2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF80MTYsIF9fczBfNDE2LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQxNng4X3QgX19yZXYyXzQxNjsgIF9fcmV2Ml80MTYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzQxNiwgX19zMl80MTYsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDRfdCBfX3JldF80MTY7IFwKICBfX3JldF80MTYgPSBfX25vc3dhcF92c2V0X2xhbmVfdTE2KF9fbm9zd2FwX3ZnZXRxX2xhbmVfdTE2KF9fcmV2Ml80MTYsIF9fcDNfNDE2KSwgX19yZXYwXzQxNiwgX19wMV80MTYpOyBcCiAgX19yZXRfNDE2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNDE2LCBfX3JldF80MTYsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfNDE2OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmNvcHlfbGFuZXFfczgoX19wMF80MTcsIF9fcDFfNDE3LCBfX3AyXzQxNywgX19wM180MTcpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4OF90IF9fczBfNDE3ID0gX19wMF80MTc7IFwKICBpbnQ4eDE2X3QgX19zMl80MTcgPSBfX3AyXzQxNzsgXAogIGludDh4OF90IF9fcmV0XzQxNzsgXAogIF9fcmV0XzQxNyA9IHZzZXRfbGFuZV9zOCh2Z2V0cV9sYW5lX3M4KF9fczJfNDE3LCBfX3AzXzQxNyksIF9fczBfNDE3LCBfX3AxXzQxNyk7IFwKICBfX3JldF80MTc7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Y29weV9sYW5lcV9zOChfX3AwXzQxOCwgX19wMV80MTgsIF9fcDJfNDE4LCBfX3AzXzQxOCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHg4X3QgX19zMF80MTggPSBfX3AwXzQxODsgXAogIGludDh4MTZfdCBfX3MyXzQxOCA9IF9fcDJfNDE4OyBcCiAgaW50OHg4X3QgX19yZXYwXzQxODsgIF9fcmV2MF80MTggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzQxOCwgX19zMF80MTgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50OHgxNl90IF9fcmV2Ml80MTg7ICBfX3JldjJfNDE4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl80MTgsIF9fczJfNDE4LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDh4OF90IF9fcmV0XzQxODsgXAogIF9fcmV0XzQxOCA9IF9fbm9zd2FwX3ZzZXRfbGFuZV9zOChfX25vc3dhcF92Z2V0cV9sYW5lX3M4KF9fcmV2Ml80MTgsIF9fcDNfNDE4KSwgX19yZXYwXzQxOCwgX19wMV80MTgpOyBcCiAgX19yZXRfNDE4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNDE4LCBfX3JldF80MTgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfNDE4OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmNvcHlfbGFuZXFfZjMyKF9fcDBfNDE5LCBfX3AxXzQxOSwgX19wMl80MTksIF9fcDNfNDE5KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJfdCBfX3MwXzQxOSA9IF9fcDBfNDE5OyBcCiAgZmxvYXQzMng0X3QgX19zMl80MTkgPSBfX3AyXzQxOTsgXAogIGZsb2F0MzJ4Ml90IF9fcmV0XzQxOTsgXAogIF9fcmV0XzQxOSA9IHZzZXRfbGFuZV9mMzIodmdldHFfbGFuZV9mMzIoX19zMl80MTksIF9fcDNfNDE5KSwgX19zMF80MTksIF9fcDFfNDE5KTsgXAogIF9fcmV0XzQxOTsgXAp9KQojZWxzZQojZGVmaW5lIHZjb3B5X2xhbmVxX2YzMihfX3AwXzQyMCwgX19wMV80MjAsIF9fcDJfNDIwLCBfX3AzXzQyMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMngyX3QgX19zMF80MjAgPSBfX3AwXzQyMDsgXAogIGZsb2F0MzJ4NF90IF9fczJfNDIwID0gX19wMl80MjA7IFwKICBmbG9hdDMyeDJfdCBfX3JldjBfNDIwOyAgX19yZXYwXzQyMCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNDIwLCBfX3MwXzQyMCwgMSwgMCk7IFwKICBmbG9hdDMyeDRfdCBfX3JldjJfNDIwOyAgX19yZXYyXzQyMCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfNDIwLCBfX3MyXzQyMCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDMyeDJfdCBfX3JldF80MjA7IFwKICBfX3JldF80MjAgPSBfX25vc3dhcF92c2V0X2xhbmVfZjMyKF9fbm9zd2FwX3ZnZXRxX2xhbmVfZjMyKF9fcmV2Ml80MjAsIF9fcDNfNDIwKSwgX19yZXYwXzQyMCwgX19wMV80MjApOyBcCiAgX19yZXRfNDIwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNDIwLCBfX3JldF80MjAsIDEsIDApOyBcCiAgX19yZXRfNDIwOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmNvcHlfbGFuZXFfczMyKF9fcDBfNDIxLCBfX3AxXzQyMSwgX19wMl80MjEsIF9fcDNfNDIxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMngyX3QgX19zMF80MjEgPSBfX3AwXzQyMTsgXAogIGludDMyeDRfdCBfX3MyXzQyMSA9IF9fcDJfNDIxOyBcCiAgaW50MzJ4Ml90IF9fcmV0XzQyMTsgXAogIF9fcmV0XzQyMSA9IHZzZXRfbGFuZV9zMzIodmdldHFfbGFuZV9zMzIoX19zMl80MjEsIF9fcDNfNDIxKSwgX19zMF80MjEsIF9fcDFfNDIxKTsgXAogIF9fcmV0XzQyMTsgXAp9KQojZWxzZQojZGVmaW5lIHZjb3B5X2xhbmVxX3MzMihfX3AwXzQyMiwgX19wMV80MjIsIF9fcDJfNDIyLCBfX3AzXzQyMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Ml90IF9fczBfNDIyID0gX19wMF80MjI7IFwKICBpbnQzMng0X3QgX19zMl80MjIgPSBfX3AyXzQyMjsgXAogIGludDMyeDJfdCBfX3JldjBfNDIyOyAgX19yZXYwXzQyMiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNDIyLCBfX3MwXzQyMiwgMSwgMCk7IFwKICBpbnQzMng0X3QgX19yZXYyXzQyMjsgIF9fcmV2Ml80MjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzQyMiwgX19zMl80MjIsIDMsIDIsIDEsIDApOyBcCiAgaW50MzJ4Ml90IF9fcmV0XzQyMjsgXAogIF9fcmV0XzQyMiA9IF9fbm9zd2FwX3ZzZXRfbGFuZV9zMzIoX19ub3N3YXBfdmdldHFfbGFuZV9zMzIoX19yZXYyXzQyMiwgX19wM180MjIpLCBfX3JldjBfNDIyLCBfX3AxXzQyMik7IFwKICBfX3JldF80MjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF80MjIsIF9fcmV0XzQyMiwgMSwgMCk7IFwKICBfX3JldF80MjI7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Y29weV9sYW5lcV9zNjQoX19wMF80MjMsIF9fcDFfNDIzLCBfX3AyXzQyMywgX19wM180MjMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDFfdCBfX3MwXzQyMyA9IF9fcDBfNDIzOyBcCiAgaW50NjR4Ml90IF9fczJfNDIzID0gX19wMl80MjM7IFwKICBpbnQ2NHgxX3QgX19yZXRfNDIzOyBcCiAgX19yZXRfNDIzID0gdnNldF9sYW5lX3M2NCh2Z2V0cV9sYW5lX3M2NChfX3MyXzQyMywgX19wM180MjMpLCBfX3MwXzQyMywgX19wMV80MjMpOyBcCiAgX19yZXRfNDIzOyBcCn0pCiNlbHNlCiNkZWZpbmUgdmNvcHlfbGFuZXFfczY0KF9fcDBfNDI0LCBfX3AxXzQyNCwgX19wMl80MjQsIF9fcDNfNDI0KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgxX3QgX19zMF80MjQgPSBfX3AwXzQyNDsgXAogIGludDY0eDJfdCBfX3MyXzQyNCA9IF9fcDJfNDI0OyBcCiAgaW50NjR4Ml90IF9fcmV2Ml80MjQ7ICBfX3JldjJfNDI0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl80MjQsIF9fczJfNDI0LCAxLCAwKTsgXAogIGludDY0eDFfdCBfX3JldF80MjQ7IFwKICBfX3JldF80MjQgPSB2c2V0X2xhbmVfczY0KF9fbm9zd2FwX3ZnZXRxX2xhbmVfczY0KF9fcmV2Ml80MjQsIF9fcDNfNDI0KSwgX19zMF80MjQsIF9fcDFfNDI0KTsgXAogIF9fcmV0XzQyNDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZjb3B5X2xhbmVxX3MxNihfX3AwXzQyNSwgX19wMV80MjUsIF9fcDJfNDI1LCBfX3AzXzQyNSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NF90IF9fczBfNDI1ID0gX19wMF80MjU7IFwKICBpbnQxNng4X3QgX19zMl80MjUgPSBfX3AyXzQyNTsgXAogIGludDE2eDRfdCBfX3JldF80MjU7IFwKICBfX3JldF80MjUgPSB2c2V0X2xhbmVfczE2KHZnZXRxX2xhbmVfczE2KF9fczJfNDI1LCBfX3AzXzQyNSksIF9fczBfNDI1LCBfX3AxXzQyNSk7IFwKICBfX3JldF80MjU7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Y29weV9sYW5lcV9zMTYoX19wMF80MjYsIF9fcDFfNDI2LCBfX3AyXzQyNiwgX19wM180MjYpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDRfdCBfX3MwXzQyNiA9IF9fcDBfNDI2OyBcCiAgaW50MTZ4OF90IF9fczJfNDI2ID0gX19wMl80MjY7IFwKICBpbnQxNng0X3QgX19yZXYwXzQyNjsgIF9fcmV2MF80MjYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzQyNiwgX19zMF80MjYsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4OF90IF9fcmV2Ml80MjY7ICBfX3JldjJfNDI2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl80MjYsIF9fczJfNDI2LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDRfdCBfX3JldF80MjY7IFwKICBfX3JldF80MjYgPSBfX25vc3dhcF92c2V0X2xhbmVfczE2KF9fbm9zd2FwX3ZnZXRxX2xhbmVfczE2KF9fcmV2Ml80MjYsIF9fcDNfNDI2KSwgX19yZXYwXzQyNiwgX19wMV80MjYpOyBcCiAgX19yZXRfNDI2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNDI2LCBfX3JldF80MjYsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfNDI2OyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2Y3JlYXRlX3A2NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5NjR4MV90IF9fcmV0OyBcCiAgdWludDY0X3QgX19wcm9tb3RlID0gX19wMDsgXAogIF9fcmV0ID0gKHBvbHk2NHgxX3QpKF9fcHJvbW90ZSk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZjcmVhdGVfZjY0KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4MV90IF9fcmV0OyBcCiAgdWludDY0X3QgX19wcm9tb3RlID0gX19wMDsgXAogIF9fcmV0ID0gKGZsb2F0NjR4MV90KShfX3Byb21vdGUpOyBcCiAgX19yZXQ7IFwKfSkKX19haSBmbG9hdDMyX3QgdmN2dHNfZjMyX3MzMihpbnQzMl90IF9fcDApIHsKICBmbG9hdDMyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMl90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0c19mMzJfczMyKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MzJfdCB2Y3Z0c19mMzJfdTMyKHVpbnQzMl90IF9fcDApIHsKICBmbG9hdDMyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMl90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0c19mMzJfdTMyKF9fcDApOwogIHJldHVybiBfX3JldDsKfQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDJfdCB2Y3Z0X2YzMl9mNjQoZmxvYXQ2NHgyX3QgX19wMCkgewogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0X2YzMl9mNjQoKGludDh4MTZfdClfX3AwLCA5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDJfdCB2Y3Z0X2YzMl9mNjQoZmxvYXQ2NHgyX3QgX19wMCkgewogIGZsb2F0NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0X2YzMl9mNjQoKGludDh4MTZfdClfX3JldjAsIDkpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDMyeDJfdCBfX25vc3dhcF92Y3Z0X2YzMl9mNjQoZmxvYXQ2NHgyX3QgX19wMCkgewogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0X2YzMl9mNjQoKGludDh4MTZfdClfX3AwLCA5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgpfX2FpIGZsb2F0NjRfdCB2Y3Z0ZF9mNjRfczY0KGludDY0X3QgX19wMCkgewogIGZsb2F0NjRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRkX2Y2NF9zNjQoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQ2NF90IHZjdnRkX2Y2NF91NjQodWludDY0X3QgX19wMCkgewogIGZsb2F0NjRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRkX2Y2NF91NjQoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0NjR4Ml90IHZjdnRxX2Y2NF91NjQodWludDY0eDJfdCBfX3AwKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRxX2Y2NF92KChpbnQ4eDE2X3QpX19wMCwgNTEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0NjR4Ml90IHZjdnRxX2Y2NF91NjQodWludDY0eDJfdCBfX3AwKSB7CiAgdWludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDJfdCkgX19idWlsdGluX25lb25fdmN2dHFfZjY0X3YoKGludDh4MTZfdClfX3JldjAsIDUxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQ2NHgyX3QgdmN2dHFfZjY0X3M2NChpbnQ2NHgyX3QgX19wMCkgewogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0cV9mNjRfdigoaW50OHgxNl90KV9fcDAsIDM1KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDY0eDJfdCB2Y3Z0cV9mNjRfczY0KGludDY0eDJfdCBfX3AwKSB7CiAgaW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0cV9mNjRfdigoaW50OHgxNl90KV9fcmV2MCwgMzUpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgpfX2FpIGZsb2F0NjR4MV90IHZjdnRfZjY0X3U2NCh1aW50NjR4MV90IF9fcDApIHsKICBmbG9hdDY0eDFfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDFfdCkgX19idWlsdGluX25lb25fdmN2dF9mNjRfdigoaW50OHg4X3QpX19wMCwgMTkpOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0NjR4MV90IHZjdnRfZjY0X3M2NChpbnQ2NHgxX3QgX19wMCkgewogIGZsb2F0NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0X2Y2NF92KChpbnQ4eDhfdClfX3AwLCAzKTsKICByZXR1cm4gX19yZXQ7Cn0KI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQ2NHgyX3QgdmN2dF9mNjRfZjMyKGZsb2F0MzJ4Ml90IF9fcDApIHsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDJfdCkgX19idWlsdGluX25lb25fdmN2dF9mNjRfZjMyKChpbnQ4eDhfdClfX3AwLCA0Mik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQ2NHgyX3QgdmN2dF9mNjRfZjMyKGZsb2F0MzJ4Ml90IF9fcDApIHsKICBmbG9hdDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDJfdCkgX19idWlsdGluX25lb25fdmN2dF9mNjRfZjMyKChpbnQ4eDhfdClfX3JldjAsIDQyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQ2NHgyX3QgX19ub3N3YXBfdmN2dF9mNjRfZjMyKGZsb2F0MzJ4Ml90IF9fcDApIHsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDJfdCkgX19idWlsdGluX25lb25fdmN2dF9mNjRfZjMyKChpbnQ4eDhfdClfX3AwLCA0Mik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQxNng4X3QgdmN2dF9oaWdoX2YxNl9mMzIoZmxvYXQxNng0X3QgX19wMCwgZmxvYXQzMng0X3QgX19wMSkgewogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gdmNvbWJpbmVfZjE2KF9fcDAsIHZjdnRfZjE2X2YzMihfX3AxKSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQxNng4X3QgdmN2dF9oaWdoX2YxNl9mMzIoZmxvYXQxNng0X3QgX19wMCwgZmxvYXQzMng0X3QgX19wMSkgewogIGZsb2F0MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGZsb2F0MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdmNvbWJpbmVfZjE2KF9fcmV2MCwgX19ub3N3YXBfdmN2dF9mMTZfZjMyKF9fcmV2MSkpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDRfdCB2Y3Z0X2hpZ2hfZjMyX2YxNihmbG9hdDE2eDhfdCBfX3AwKSB7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSB2Y3Z0X2YzMl9mMTYodmdldF9oaWdoX2YxNihfX3AwKSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMng0X3QgdmN2dF9oaWdoX2YzMl9mMTYoZmxvYXQxNng4X3QgX19wMCkgewogIGZsb2F0MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdmN2dF9mMzJfZjE2KF9fbm9zd2FwX3ZnZXRfaGlnaF9mMTYoX19yZXYwKSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4NF90IHZjdnRfaGlnaF9mMzJfZjY0KGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0NjR4Ml90IF9fcDEpIHsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IHZjb21iaW5lX2YzMihfX3AwLCB2Y3Z0X2YzMl9mNjQoX19wMSkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4NF90IHZjdnRfaGlnaF9mMzJfZjY0KGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0NjR4Ml90IF9fcDEpIHsKICBmbG9hdDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3Zjb21iaW5lX2YzMihfX3JldjAsIF9fbm9zd2FwX3ZjdnRfZjMyX2Y2NChfX3JldjEpKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQ2NHgyX3QgdmN2dF9oaWdoX2Y2NF9mMzIoZmxvYXQzMng0X3QgX19wMCkgewogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gdmN2dF9mNjRfZjMyKHZnZXRfaGlnaF9mMzIoX19wMCkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0NjR4Ml90IHZjdnRfaGlnaF9mNjRfZjMyKGZsb2F0MzJ4NF90IF9fcDApIHsKICBmbG9hdDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3ZjdnRfZjY0X2YzMihfX25vc3dhcF92Z2V0X2hpZ2hfZjMyKF9fcmV2MCkpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojZGVmaW5lIHZjdnRzX25fZjMyX3UzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MzJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MzJfdCkgX19idWlsdGluX25lb25fdmN2dHNfbl9mMzJfdTMyKF9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2Y3Z0c19uX2YzMl9zMzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MzJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MzJfdCkgX19idWlsdGluX25lb25fdmN2dHNfbl9mMzJfczMyKF9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmN2dHFfbl9mNjRfdTY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyX3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0cV9uX2Y2NF92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgNTEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Y3Z0cV9uX2Y2NF91NjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDJfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMSwgMCk7IFwKICBmbG9hdDY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0cV9uX2Y2NF92KChpbnQ4eDE2X3QpX19yZXYwLCBfX3AxLCA1MSk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZjdnRxX25fZjY0X3M2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgyX3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0cV9uX2Y2NF92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgMzUpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Y3Z0cV9uX2Y2NF9zNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4Ml90IF9fczAgPSBfX3AwOyBcCiAgaW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDEsIDApOyBcCiAgZmxvYXQ2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDY0eDJfdCkgX19idWlsdGluX25lb25fdmN2dHFfbl9mNjRfdigoaW50OHgxNl90KV9fcmV2MCwgX19wMSwgMzUpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojZGVmaW5lIHZjdnRfbl9mNjRfdTY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgxX3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDY0eDFfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0X25fZjY0X3YoKGludDh4OF90KV9fczAsIF9fcDEsIDE5KTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdmN2dF9uX2Y2NF9zNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4MV90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQ2NHgxX3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDY0eDFfdCkgX19idWlsdGluX25lb25fdmN2dF9uX2Y2NF92KChpbnQ4eDhfdClfX3MwLCBfX3AxLCAzKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdmN2dGRfbl9mNjRfdTY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NF90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQ2NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQ2NF90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0ZF9uX2Y2NF91NjQoX19zMCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZjdnRkX25fZjY0X3M2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NF90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQ2NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQ2NF90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0ZF9uX2Y2NF9zNjQoX19zMCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZjdnRzX25fczMyX2YzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyX3QgX19zMCA9IF9fcDA7IFwKICBpbnQzMl90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJfdCkgX19idWlsdGluX25lb25fdmN2dHNfbl9zMzJfZjMyKF9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmN2dHFfbl9zNjRfZjY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4Ml90IF9fczAgPSBfX3AwOyBcCiAgaW50NjR4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0cV9uX3M2NF92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgMzUpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Y3Z0cV9uX3M2NF9mNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgyX3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAxLCAwKTsgXAogIGludDY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDY0eDJfdCkgX19idWlsdGluX25lb25fdmN2dHFfbl9zNjRfdigoaW50OHgxNl90KV9fcmV2MCwgX19wMSwgMzUpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojZGVmaW5lIHZjdnRfbl9zNjRfZjY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4MV90IF9fczAgPSBfX3AwOyBcCiAgaW50NjR4MV90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0X25fczY0X3YoKGludDh4OF90KV9fczAsIF9fcDEsIDMpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2Y3Z0ZF9uX3M2NF9mNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NF90IF9fczAgPSBfX3AwOyBcCiAgaW50NjRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRkX25fczY0X2Y2NChfX3MwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdmN2dHNfbl91MzJfZjMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJfdCBfX3MwID0gX19wMDsgXAogIHVpbnQzMl90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRzX25fdTMyX2YzMihfX3MwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZjdnRxX25fdTY0X2Y2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDJfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0cV9uX3U2NF92KChpbnQ4eDE2X3QpX19zMCwgX19wMSwgNTEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Y3Z0cV9uX3U2NF9mNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgyX3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAxLCAwKTsgXAogIHVpbnQ2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0cV9uX3U2NF92KChpbnQ4eDE2X3QpX19yZXYwLCBfX3AxLCA1MSk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNkZWZpbmUgdmN2dF9uX3U2NF9mNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgxX3QgX19zMCA9IF9fcDA7IFwKICB1aW50NjR4MV90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDY0eDFfdCkgX19idWlsdGluX25lb25fdmN2dF9uX3U2NF92KChpbnQ4eDhfdClfX3MwLCBfX3AxLCAxOSk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZjdnRkX25fdTY0X2Y2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0X3QgX19zMCA9IF9fcDA7IFwKICB1aW50NjRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ2NF90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0ZF9uX3U2NF9mNjQoX19zMCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQpfX2FpIGludDMyX3QgdmN2dHNfczMyX2YzMihmbG9hdDMyX3QgX19wMCkgewogIGludDMyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJfdCkgX19idWlsdGluX25lb25fdmN2dHNfczMyX2YzMihfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQ2NF90IHZjdnRkX3M2NF9mNjQoZmxvYXQ2NF90IF9fcDApIHsKICBpbnQ2NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRkX3M2NF9mNjQoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDY0eDJfdCB2Y3Z0cV9zNjRfZjY0KGZsb2F0NjR4Ml90IF9fcDApIHsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0cV9zNjRfdigoaW50OHgxNl90KV9fcDAsIDM1KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ2NHgyX3QgdmN2dHFfczY0X2Y2NChmbG9hdDY0eDJfdCBfX3AwKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDJfdCkgX19idWlsdGluX25lb25fdmN2dHFfczY0X3YoKGludDh4MTZfdClfX3JldjAsIDM1KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKX19haSBpbnQ2NHgxX3QgdmN2dF9zNjRfZjY0KGZsb2F0NjR4MV90IF9fcDApIHsKICBpbnQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0X3M2NF92KChpbnQ4eDhfdClfX3AwLCAzKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MzJfdCB2Y3Z0c191MzJfZjMyKGZsb2F0MzJfdCBfX3AwKSB7CiAgdWludDMyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRzX3UzMl9mMzIoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDY0X3QgdmN2dGRfdTY0X2Y2NChmbG9hdDY0X3QgX19wMCkgewogIHVpbnQ2NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NF90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0ZF91NjRfZjY0KF9fcDApOwogIHJldHVybiBfX3JldDsKfQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50NjR4Ml90IHZjdnRxX3U2NF9mNjQoZmxvYXQ2NHgyX3QgX19wMCkgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkgX19idWlsdGluX25lb25fdmN2dHFfdTY0X3YoKGludDh4MTZfdClfX3AwLCA1MSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDY0eDJfdCB2Y3Z0cV91NjRfZjY0KGZsb2F0NjR4Ml90IF9fcDApIHsKICBmbG9hdDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRxX3U2NF92KChpbnQ4eDE2X3QpX19yZXYwLCA1MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCl9fYWkgdWludDY0eDFfdCB2Y3Z0X3U2NF9mNjQoZmxvYXQ2NHgxX3QgX19wMCkgewogIHVpbnQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDFfdCkgX19idWlsdGluX25lb25fdmN2dF91NjRfdigoaW50OHg4X3QpX19wMCwgMTkpOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDMyX3QgdmN2dGFzX3MzMl9mMzIoZmxvYXQzMl90IF9fcDApIHsKICBpbnQzMl90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRhc19zMzJfZjMyKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDY0X3QgdmN2dGFkX3M2NF9mNjQoZmxvYXQ2NF90IF9fcDApIHsKICBpbnQ2NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRhZF9zNjRfZjY0KF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQzMl90IHZjdnRhc191MzJfZjMyKGZsb2F0MzJfdCBfX3AwKSB7CiAgdWludDMyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRhc191MzJfZjMyKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ2NF90IHZjdnRhZF91NjRfZjY0KGZsb2F0NjRfdCBfX3AwKSB7CiAgdWludDY0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRhZF91NjRfZjY0KF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDMyX3QgdmN2dG1zX3MzMl9mMzIoZmxvYXQzMl90IF9fcDApIHsKICBpbnQzMl90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRtc19zMzJfZjMyKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDY0X3QgdmN2dG1kX3M2NF9mNjQoZmxvYXQ2NF90IF9fcDApIHsKICBpbnQ2NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRtZF9zNjRfZjY0KF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQzMl90IHZjdnRtc191MzJfZjMyKGZsb2F0MzJfdCBfX3AwKSB7CiAgdWludDMyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRtc191MzJfZjMyKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ2NF90IHZjdnRtZF91NjRfZjY0KGZsb2F0NjRfdCBfX3AwKSB7CiAgdWludDY0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRtZF91NjRfZjY0KF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDMyX3QgdmN2dG5zX3MzMl9mMzIoZmxvYXQzMl90IF9fcDApIHsKICBpbnQzMl90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRuc19zMzJfZjMyKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDY0X3QgdmN2dG5kX3M2NF9mNjQoZmxvYXQ2NF90IF9fcDApIHsKICBpbnQ2NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRuZF9zNjRfZjY0KF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQzMl90IHZjdnRuc191MzJfZjMyKGZsb2F0MzJfdCBfX3AwKSB7CiAgdWludDMyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRuc191MzJfZjMyKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ2NF90IHZjdnRuZF91NjRfZjY0KGZsb2F0NjRfdCBfX3AwKSB7CiAgdWludDY0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRuZF91NjRfZjY0KF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDMyX3QgdmN2dHBzX3MzMl9mMzIoZmxvYXQzMl90IF9fcDApIHsKICBpbnQzMl90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRwc19zMzJfZjMyKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDY0X3QgdmN2dHBkX3M2NF9mNjQoZmxvYXQ2NF90IF9fcDApIHsKICBpbnQ2NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRwZF9zNjRfZjY0KF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQzMl90IHZjdnRwc191MzJfZjMyKGZsb2F0MzJfdCBfX3AwKSB7CiAgdWludDMyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRwc191MzJfZjMyKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ2NF90IHZjdnRwZF91NjRfZjY0KGZsb2F0NjRfdCBfX3AwKSB7CiAgdWludDY0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnRwZF91NjRfZjY0KF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MzJfdCB2Y3Z0eGRfZjMyX2Y2NChmbG9hdDY0X3QgX19wMCkgewogIGZsb2F0MzJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnR4ZF9mMzJfZjY0KF9fcDApOwogIHJldHVybiBfX3JldDsKfQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDJfdCB2Y3Z0eF9mMzJfZjY0KGZsb2F0NjR4Ml90IF9fcDApIHsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdmN2dHhfZjMyX3YoKGludDh4MTZfdClfX3AwLCA0Mik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMngyX3QgdmN2dHhfZjMyX2Y2NChmbG9hdDY0eDJfdCBfX3AwKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZjdnR4X2YzMl92KChpbnQ4eDE2X3QpX19yZXYwLCA0Mik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MzJ4Ml90IF9fbm9zd2FwX3ZjdnR4X2YzMl9mNjQoZmxvYXQ2NHgyX3QgX19wMCkgewogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92Y3Z0eF9mMzJfdigoaW50OHgxNl90KV9fcDAsIDQyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDRfdCB2Y3Z0eF9oaWdoX2YzMl9mNjQoZmxvYXQzMngyX3QgX19wMCwgZmxvYXQ2NHgyX3QgX19wMSkgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gdmNvbWJpbmVfZjMyKF9fcDAsIHZjdnR4X2YzMl9mNjQoX19wMSkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4NF90IHZjdnR4X2hpZ2hfZjMyX2Y2NChmbG9hdDMyeDJfdCBfX3AwLCBmbG9hdDY0eDJfdCBfX3AxKSB7CiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92Y29tYmluZV9mMzIoX19yZXYwLCBfX25vc3dhcF92Y3Z0eF9mMzJfZjY0KF9fcmV2MSkpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDY0eDJfdCB2ZGl2cV9mNjQoZmxvYXQ2NHgyX3QgX19wMCwgZmxvYXQ2NHgyX3QgX19wMSkgewogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAvIF9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQ2NHgyX3QgdmRpdnFfZjY0KGZsb2F0NjR4Ml90IF9fcDAsIGZsb2F0NjR4Ml90IF9fcDEpIHsKICBmbG9hdDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCAvIF9fcmV2MTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMng0X3QgdmRpdnFfZjMyKGZsb2F0MzJ4NF90IF9fcDAsIGZsb2F0MzJ4NF90IF9fcDEpIHsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgLyBfX3AxOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4NF90IHZkaXZxX2YzMihmbG9hdDMyeDRfdCBfX3AwLCBmbG9hdDMyeDRfdCBfX3AxKSB7CiAgZmxvYXQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgLyBfX3JldjE7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCl9fYWkgZmxvYXQ2NHgxX3QgdmRpdl9mNjQoZmxvYXQ2NHgxX3QgX19wMCwgZmxvYXQ2NHgxX3QgX19wMSkgewogIGZsb2F0NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAvIF9fcDE7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4Ml90IHZkaXZfZjMyKGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0MzJ4Ml90IF9fcDEpIHsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgLyBfX3AxOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4Ml90IHZkaXZfZjMyKGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0MzJ4Ml90IF9fcDEpIHsKICBmbG9hdDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCAvIF9fcmV2MTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmR1cGJfbGFuZV9wOChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHg4X3QgX19zMCA9IF9fcDA7IFwKICBwb2x5OF90IF9fcmV0OyBcCiAgX19yZXQgPSAocG9seThfdCkgX19idWlsdGluX25lb25fdmR1cGJfbGFuZV9pOCgocG9seTh4OF90KV9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2ZHVwYl9sYW5lX3A4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4eDhfdCBfX3MwID0gX19wMDsgXAogIHBvbHk4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHBvbHk4X3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5OF90KSBfX2J1aWx0aW5fbmVvbl92ZHVwYl9sYW5lX2k4KChwb2x5OHg4X3QpX19yZXYwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmR1cGhfbGFuZV9wMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDRfdCBfX3MwID0gX19wMDsgXAogIHBvbHkxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAocG9seTE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZkdXBoX2xhbmVfaTE2KChwb2x5MTZ4NF90KV9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2ZHVwaF9sYW5lX3AxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4NF90IF9fczAgPSBfX3AwOyBcCiAgcG9seTE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAzLCAyLCAxLCAwKTsgXAogIHBvbHkxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAocG9seTE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZkdXBoX2xhbmVfaTE2KChwb2x5MTZ4NF90KV9fcmV2MCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZkdXBiX2xhbmVfdTgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4OF90IF9fczAgPSBfX3AwOyBcCiAgdWludDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ4X3QpIF9fYnVpbHRpbl9uZW9uX3ZkdXBiX2xhbmVfaTgoKGludDh4OF90KV9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2ZHVwYl9sYW5lX3U4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDhfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQ4X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50OF90KSBfX2J1aWx0aW5fbmVvbl92ZHVwYl9sYW5lX2k4KChpbnQ4eDhfdClfX3JldjAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2ZHVwc19sYW5lX3UzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4Ml90IF9fczAgPSBfX3AwOyBcCiAgdWludDMyX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MzJfdCkgX19idWlsdGluX25lb25fdmR1cHNfbGFuZV9pMzIoKGludDMyeDJfdClfX3MwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmR1cHNfbGFuZV91MzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDJfdCBfX3MwID0gX19wMDsgXAogIHVpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMSwgMCk7IFwKICB1aW50MzJfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQzMl90KSBfX2J1aWx0aW5fbmVvbl92ZHVwc19sYW5lX2kzMigoaW50MzJ4Ml90KV9fcmV2MCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNkZWZpbmUgdmR1cGRfbGFuZV91NjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDFfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ2NF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZkdXBkX2xhbmVfaTY0KChpbnQ2NHgxX3QpX19zMCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2ZHVwaF9sYW5lX3UxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4NF90IF9fczAgPSBfX3AwOyBcCiAgdWludDE2X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MTZfdCkgX19idWlsdGluX25lb25fdmR1cGhfbGFuZV9pMTYoKGludDE2eDRfdClfX3MwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmR1cGhfbGFuZV91MTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDRfdCBfX3MwID0gX19wMDsgXAogIHVpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMywgMiwgMSwgMCk7IFwKICB1aW50MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQxNl90KSBfX2J1aWx0aW5fbmVvbl92ZHVwaF9sYW5lX2kxNigoaW50MTZ4NF90KV9fcmV2MCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZkdXBiX2xhbmVfczgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHg4X3QgX19zMCA9IF9fcDA7IFwKICBpbnQ4X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ4X3QpIF9fYnVpbHRpbl9uZW9uX3ZkdXBiX2xhbmVfaTgoKGludDh4OF90KV9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2ZHVwYl9sYW5lX3M4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4OF90IF9fczAgPSBfX3AwOyBcCiAgaW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQ4X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ4X3QpIF9fYnVpbHRpbl9uZW9uX3ZkdXBiX2xhbmVfaTgoKGludDh4OF90KV9fcmV2MCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNkZWZpbmUgdmR1cGRfbGFuZV9mNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgxX3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDY0X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZkdXBkX2xhbmVfZjY0KChmbG9hdDY0eDFfdClfX3MwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZkdXBzX2xhbmVfZjMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4Ml90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQzMl90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQzMl90KSBfX2J1aWx0aW5fbmVvbl92ZHVwc19sYW5lX2YzMigoZmxvYXQzMngyX3QpX19zMCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZkdXBzX2xhbmVfZjMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4Ml90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMSwgMCk7IFwKICBmbG9hdDMyX3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZkdXBzX2xhbmVfZjMyKChmbG9hdDMyeDJfdClfX3JldjAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2ZHVwc19sYW5lX3MzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMngyX3QgX19zMCA9IF9fcDA7IFwKICBpbnQzMl90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJfdCkgX19idWlsdGluX25lb25fdmR1cHNfbGFuZV9pMzIoKGludDMyeDJfdClfX3MwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmR1cHNfbGFuZV9zMzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Ml90IF9fczAgPSBfX3AwOyBcCiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDEsIDApOyBcCiAgaW50MzJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZkdXBzX2xhbmVfaTMyKChpbnQzMngyX3QpX19yZXYwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2ZHVwZF9sYW5lX3M2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgxX3QgX19zMCA9IF9fcDA7IFwKICBpbnQ2NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50NjRfdCkgX19idWlsdGluX25lb25fdmR1cGRfbGFuZV9pNjQoKGludDY0eDFfdClfX3MwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZkdXBoX2xhbmVfczE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDRfdCBfX3MwID0gX19wMDsgXAogIGludDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQxNl90KSBfX2J1aWx0aW5fbmVvbl92ZHVwaF9sYW5lX2kxNigoaW50MTZ4NF90KV9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2ZHVwaF9sYW5lX3MxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MTZfdCkgX19idWlsdGluX25lb25fdmR1cGhfbGFuZV9pMTYoKGludDE2eDRfdClfX3JldjAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojZGVmaW5lIHZkdXBfbGFuZV9wNjQoX19wMF80MjcsIF9fcDFfNDI3KSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5NjR4MV90IF9fczBfNDI3ID0gX19wMF80Mjc7IFwKICBwb2x5NjR4MV90IF9fcmV0XzQyNzsgXAogIF9fcmV0XzQyNyA9IHNwbGF0X2xhbmVfcDY0KF9fczBfNDI3LCBfX3AxXzQyNyk7IFwKICBfX3JldF80Mjc7IFwKfSkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmR1cHFfbGFuZV9wNjQoX19wMF80MjgsIF9fcDFfNDI4KSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5NjR4MV90IF9fczBfNDI4ID0gX19wMF80Mjg7IFwKICBwb2x5NjR4Ml90IF9fcmV0XzQyODsgXAogIF9fcmV0XzQyOCA9IHNwbGF0cV9sYW5lX3A2NChfX3MwXzQyOCwgX19wMV80MjgpOyBcCiAgX19yZXRfNDI4OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmR1cHFfbGFuZV9wNjQoX19wMF80MjksIF9fcDFfNDI5KSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5NjR4MV90IF9fczBfNDI5ID0gX19wMF80Mjk7IFwKICBwb2x5NjR4Ml90IF9fcmV0XzQyOTsgXAogIF9fcmV0XzQyOSA9IF9fbm9zd2FwX3NwbGF0cV9sYW5lX3A2NChfX3MwXzQyOSwgX19wMV80MjkpOyBcCiAgX19yZXRfNDI5ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNDI5LCBfX3JldF80MjksIDEsIDApOyBcCiAgX19yZXRfNDI5OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmR1cHFfbGFuZV9mNjQoX19wMF80MzAsIF9fcDFfNDMwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDFfdCBfX3MwXzQzMCA9IF9fcDBfNDMwOyBcCiAgZmxvYXQ2NHgyX3QgX19yZXRfNDMwOyBcCiAgX19yZXRfNDMwID0gc3BsYXRxX2xhbmVfZjY0KF9fczBfNDMwLCBfX3AxXzQzMCk7IFwKICBfX3JldF80MzA7IFwKfSkKI2Vsc2UKI2RlZmluZSB2ZHVwcV9sYW5lX2Y2NChfX3AwXzQzMSwgX19wMV80MzEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4MV90IF9fczBfNDMxID0gX19wMF80MzE7IFwKICBmbG9hdDY0eDJfdCBfX3JldF80MzE7IFwKICBfX3JldF80MzEgPSBfX25vc3dhcF9zcGxhdHFfbGFuZV9mNjQoX19zMF80MzEsIF9fcDFfNDMxKTsgXAogIF9fcmV0XzQzMSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzQzMSwgX19yZXRfNDMxLCAxLCAwKTsgXAogIF9fcmV0XzQzMTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZkdXBxX2xhbmVfZjE2KF9fcDBfNDMyLCBfX3AxXzQzMikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng0X3QgX19zMF80MzIgPSBfX3AwXzQzMjsgXAogIGZsb2F0MTZ4OF90IF9fcmV0XzQzMjsgXAogIF9fcmV0XzQzMiA9IHNwbGF0cV9sYW5lX2YxNihfX3MwXzQzMiwgX19wMV80MzIpOyBcCiAgX19yZXRfNDMyOyBcCn0pCiNlbHNlCiNkZWZpbmUgdmR1cHFfbGFuZV9mMTYoX19wMF80MzMsIF9fcDFfNDMzKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDRfdCBfX3MwXzQzMyA9IF9fcDBfNDMzOyBcCiAgZmxvYXQxNng0X3QgX19yZXYwXzQzMzsgIF9fcmV2MF80MzMgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzQzMywgX19zMF80MzMsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng4X3QgX19yZXRfNDMzOyBcCiAgX19yZXRfNDMzID0gX19ub3N3YXBfc3BsYXRxX2xhbmVfZjE2KF9fcmV2MF80MzMsIF9fcDFfNDMzKTsgXAogIF9fcmV0XzQzMyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzQzMywgX19yZXRfNDMzLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzQzMzsgXAp9KQojZW5kaWYKCiNkZWZpbmUgdmR1cF9sYW5lX2Y2NChfX3AwXzQzNCwgX19wMV80MzQpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4MV90IF9fczBfNDM0ID0gX19wMF80MzQ7IFwKICBmbG9hdDY0eDFfdCBfX3JldF80MzQ7IFwKICBfX3JldF80MzQgPSBzcGxhdF9sYW5lX2Y2NChfX3MwXzQzNCwgX19wMV80MzQpOyBcCiAgX19yZXRfNDM0OyBcCn0pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZkdXBfbGFuZV9mMTYoX19wMF80MzUsIF9fcDFfNDM1KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDRfdCBfX3MwXzQzNSA9IF9fcDBfNDM1OyBcCiAgZmxvYXQxNng0X3QgX19yZXRfNDM1OyBcCiAgX19yZXRfNDM1ID0gc3BsYXRfbGFuZV9mMTYoX19zMF80MzUsIF9fcDFfNDM1KTsgXAogIF9fcmV0XzQzNTsgXAp9KQojZWxzZQojZGVmaW5lIHZkdXBfbGFuZV9mMTYoX19wMF80MzYsIF9fcDFfNDM2KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDRfdCBfX3MwXzQzNiA9IF9fcDBfNDM2OyBcCiAgZmxvYXQxNng0X3QgX19yZXYwXzQzNjsgIF9fcmV2MF80MzYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzQzNiwgX19zMF80MzYsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng0X3QgX19yZXRfNDM2OyBcCiAgX19yZXRfNDM2ID0gX19ub3N3YXBfc3BsYXRfbGFuZV9mMTYoX19yZXYwXzQzNiwgX19wMV80MzYpOyBcCiAgX19yZXRfNDM2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNDM2LCBfX3JldF80MzYsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfNDM2OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmR1cGJfbGFuZXFfcDgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4MTZfdCBfX3MwID0gX19wMDsgXAogIHBvbHk4X3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5OF90KSBfX2J1aWx0aW5fbmVvbl92ZHVwYl9sYW5lcV9pOCgocG9seTh4MTZfdClfX3MwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmR1cGJfbGFuZXFfcDgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4MTZfdCBfX3MwID0gX19wMDsgXAogIHBvbHk4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBwb2x5OF90IF9fcmV0OyBcCiAgX19yZXQgPSAocG9seThfdCkgX19idWlsdGluX25lb25fdmR1cGJfbGFuZXFfaTgoKHBvbHk4eDE2X3QpX19yZXYwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmR1cGhfbGFuZXFfcDE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng4X3QgX19zMCA9IF9fcDA7IFwKICBwb2x5MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKHBvbHkxNl90KSBfX2J1aWx0aW5fbmVvbl92ZHVwaF9sYW5lcV9pMTYoKHBvbHkxNng4X3QpX19zMCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZkdXBoX2xhbmVxX3AxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgcG9seTE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHBvbHkxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAocG9seTE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZkdXBoX2xhbmVxX2kxNigocG9seTE2eDhfdClfX3JldjAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2ZHVwYl9sYW5lcV91OChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHgxNl90IF9fczAgPSBfX3AwOyBcCiAgdWludDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ4X3QpIF9fYnVpbHRpbl9uZW9uX3ZkdXBiX2xhbmVxX2k4KChpbnQ4eDE2X3QpX19zMCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZkdXBiX2xhbmVxX3U4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDE2X3QgX19zMCA9IF9fcDA7IFwKICB1aW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ4X3QpIF9fYnVpbHRpbl9uZW9uX3ZkdXBiX2xhbmVxX2k4KChpbnQ4eDE2X3QpX19yZXYwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmR1cHNfbGFuZXFfdTMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MzJfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQzMl90KSBfX2J1aWx0aW5fbmVvbl92ZHVwc19sYW5lcV9pMzIoKGludDMyeDRfdClfX3MwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmR1cHNfbGFuZXFfdTMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDMsIDIsIDEsIDApOyBcCiAgdWludDMyX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MzJfdCkgX19idWlsdGluX25lb25fdmR1cHNfbGFuZXFfaTMyKChpbnQzMng0X3QpX19yZXYwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmR1cGRfbGFuZXFfdTY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyX3QgX19zMCA9IF9fcDA7IFwKICB1aW50NjRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ2NF90KSBfX2J1aWx0aW5fbmVvbl92ZHVwZF9sYW5lcV9pNjQoKGludDY0eDJfdClfX3MwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmR1cGRfbGFuZXFfdTY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyX3QgX19zMCA9IF9fcDA7IFwKICB1aW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDEsIDApOyBcCiAgdWludDY0X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50NjRfdCkgX19idWlsdGluX25lb25fdmR1cGRfbGFuZXFfaTY0KChpbnQ2NHgyX3QpX19yZXYwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmR1cGhfbGFuZXFfdTE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng4X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQxNl90KSBfX2J1aWx0aW5fbmVvbl92ZHVwaF9sYW5lcV9pMTYoKGludDE2eDhfdClfX3MwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmR1cGhfbGFuZXFfdTE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng4X3QgX19zMCA9IF9fcDA7IFwKICB1aW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MTZfdCkgX19idWlsdGluX25lb25fdmR1cGhfbGFuZXFfaTE2KChpbnQxNng4X3QpX19yZXYwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmR1cGJfbGFuZXFfczgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHgxNl90IF9fczAgPSBfX3AwOyBcCiAgaW50OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50OF90KSBfX2J1aWx0aW5fbmVvbl92ZHVwYl9sYW5lcV9pOCgoaW50OHgxNl90KV9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2ZHVwYl9sYW5lcV9zOChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDE2X3QgX19zMCA9IF9fcDA7IFwKICBpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQ4X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ4X3QpIF9fYnVpbHRpbl9uZW9uX3ZkdXBiX2xhbmVxX2k4KChpbnQ4eDE2X3QpX19yZXYwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmR1cGRfbGFuZXFfZjY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4Ml90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQ2NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQ2NF90KSBfX2J1aWx0aW5fbmVvbl92ZHVwZF9sYW5lcV9mNjQoKGZsb2F0NjR4Ml90KV9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2ZHVwZF9sYW5lcV9mNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgyX3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAxLCAwKTsgXAogIGZsb2F0NjRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0NjRfdCkgX19idWlsdGluX25lb25fdmR1cGRfbGFuZXFfZjY0KChmbG9hdDY0eDJfdClfX3JldjAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2ZHVwc19sYW5lcV9mMzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDMyX3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZkdXBzX2xhbmVxX2YzMigoZmxvYXQzMng0X3QpX19zMCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZkdXBzX2xhbmVxX2YzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDRfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQzMl90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQzMl90KSBfX2J1aWx0aW5fbmVvbl92ZHVwc19sYW5lcV9mMzIoKGZsb2F0MzJ4NF90KV9fcmV2MCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZkdXBzX2xhbmVxX3MzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQzMl90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJfdCkgX19idWlsdGluX25lb25fdmR1cHNfbGFuZXFfaTMyKChpbnQzMng0X3QpX19zMCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZkdXBzX2xhbmVxX3MzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMywgMiwgMSwgMCk7IFwKICBpbnQzMl90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJfdCkgX19idWlsdGluX25lb25fdmR1cHNfbGFuZXFfaTMyKChpbnQzMng0X3QpX19yZXYwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmR1cGRfbGFuZXFfczY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJfdCBfX3MwID0gX19wMDsgXAogIGludDY0X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ2NF90KSBfX2J1aWx0aW5fbmVvbl92ZHVwZF9sYW5lcV9pNjQoKGludDY0eDJfdClfX3MwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmR1cGRfbGFuZXFfczY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJfdCBfX3MwID0gX19wMDsgXAogIGludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAxLCAwKTsgXAogIGludDY0X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ2NF90KSBfX2J1aWx0aW5fbmVvbl92ZHVwZF9sYW5lcV9pNjQoKGludDY0eDJfdClfX3JldjAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2ZHVwaF9sYW5lcV9zMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgaW50MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZkdXBoX2xhbmVxX2kxNigoaW50MTZ4OF90KV9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2ZHVwaF9sYW5lcV9zMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgaW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZkdXBoX2xhbmVxX2kxNigoaW50MTZ4OF90KV9fcmV2MCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZkdXBfbGFuZXFfcDgoX19wMF80MzcsIF9fcDFfNDM3KSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHgxNl90IF9fczBfNDM3ID0gX19wMF80Mzc7IFwKICBwb2x5OHg4X3QgX19yZXRfNDM3OyBcCiAgX19yZXRfNDM3ID0gc3BsYXRfbGFuZXFfcDgoX19zMF80MzcsIF9fcDFfNDM3KTsgXAogIF9fcmV0XzQzNzsgXAp9KQojZWxzZQojZGVmaW5lIHZkdXBfbGFuZXFfcDgoX19wMF80MzgsIF9fcDFfNDM4KSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHgxNl90IF9fczBfNDM4ID0gX19wMF80Mzg7IFwKICBwb2x5OHgxNl90IF9fcmV2MF80Mzg7ICBfX3JldjBfNDM4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF80MzgsIF9fczBfNDM4LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHBvbHk4eDhfdCBfX3JldF80Mzg7IFwKICBfX3JldF80MzggPSBfX25vc3dhcF9zcGxhdF9sYW5lcV9wOChfX3JldjBfNDM4LCBfX3AxXzQzOCk7IFwKICBfX3JldF80MzggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF80MzgsIF9fcmV0XzQzOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF80Mzg7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2ZHVwX2xhbmVxX3A2NChfX3AwXzQzOSwgX19wMV80MzkpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk2NHgyX3QgX19zMF80MzkgPSBfX3AwXzQzOTsgXAogIHBvbHk2NHgxX3QgX19yZXRfNDM5OyBcCiAgX19yZXRfNDM5ID0gc3BsYXRfbGFuZXFfcDY0KF9fczBfNDM5LCBfX3AxXzQzOSk7IFwKICBfX3JldF80Mzk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2ZHVwX2xhbmVxX3A2NChfX3AwXzQ0MCwgX19wMV80NDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk2NHgyX3QgX19zMF80NDAgPSBfX3AwXzQ0MDsgXAogIHBvbHk2NHgyX3QgX19yZXYwXzQ0MDsgIF9fcmV2MF80NDAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzQ0MCwgX19zMF80NDAsIDEsIDApOyBcCiAgcG9seTY0eDFfdCBfX3JldF80NDA7IFwKICBfX3JldF80NDAgPSBfX25vc3dhcF9zcGxhdF9sYW5lcV9wNjQoX19yZXYwXzQ0MCwgX19wMV80NDApOyBcCiAgX19yZXRfNDQwOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmR1cF9sYW5lcV9wMTYoX19wMF80NDEsIF9fcDFfNDQxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4OF90IF9fczBfNDQxID0gX19wMF80NDE7IFwKICBwb2x5MTZ4NF90IF9fcmV0XzQ0MTsgXAogIF9fcmV0XzQ0MSA9IHNwbGF0X2xhbmVxX3AxNihfX3MwXzQ0MSwgX19wMV80NDEpOyBcCiAgX19yZXRfNDQxOyBcCn0pCiNlbHNlCiNkZWZpbmUgdmR1cF9sYW5lcV9wMTYoX19wMF80NDIsIF9fcDFfNDQyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTZ4OF90IF9fczBfNDQyID0gX19wMF80NDI7IFwKICBwb2x5MTZ4OF90IF9fcmV2MF80NDI7ICBfX3JldjBfNDQyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF80NDIsIF9fczBfNDQyLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHBvbHkxNng0X3QgX19yZXRfNDQyOyBcCiAgX19yZXRfNDQyID0gX19ub3N3YXBfc3BsYXRfbGFuZXFfcDE2KF9fcmV2MF80NDIsIF9fcDFfNDQyKTsgXAogIF9fcmV0XzQ0MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzQ0MiwgX19yZXRfNDQyLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzQ0MjsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZkdXBxX2xhbmVxX3A4KF9fcDBfNDQzLCBfX3AxXzQ0MykgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4MTZfdCBfX3MwXzQ0MyA9IF9fcDBfNDQzOyBcCiAgcG9seTh4MTZfdCBfX3JldF80NDM7IFwKICBfX3JldF80NDMgPSBzcGxhdHFfbGFuZXFfcDgoX19zMF80NDMsIF9fcDFfNDQzKTsgXAogIF9fcmV0XzQ0MzsgXAp9KQojZWxzZQojZGVmaW5lIHZkdXBxX2xhbmVxX3A4KF9fcDBfNDQ0LCBfX3AxXzQ0NCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4MTZfdCBfX3MwXzQ0NCA9IF9fcDBfNDQ0OyBcCiAgcG9seTh4MTZfdCBfX3JldjBfNDQ0OyAgX19yZXYwXzQ0NCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNDQ0LCBfX3MwXzQ0NCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBwb2x5OHgxNl90IF9fcmV0XzQ0NDsgXAogIF9fcmV0XzQ0NCA9IF9fbm9zd2FwX3NwbGF0cV9sYW5lcV9wOChfX3JldjBfNDQ0LCBfX3AxXzQ0NCk7IFwKICBfX3JldF80NDQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF80NDQsIF9fcmV0XzQ0NCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF80NDQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2ZHVwcV9sYW5lcV9wNjQoX19wMF80NDUsIF9fcDFfNDQ1KSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5NjR4Ml90IF9fczBfNDQ1ID0gX19wMF80NDU7IFwKICBwb2x5NjR4Ml90IF9fcmV0XzQ0NTsgXAogIF9fcmV0XzQ0NSA9IHNwbGF0cV9sYW5lcV9wNjQoX19zMF80NDUsIF9fcDFfNDQ1KTsgXAogIF9fcmV0XzQ0NTsgXAp9KQojZWxzZQojZGVmaW5lIHZkdXBxX2xhbmVxX3A2NChfX3AwXzQ0NiwgX19wMV80NDYpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk2NHgyX3QgX19zMF80NDYgPSBfX3AwXzQ0NjsgXAogIHBvbHk2NHgyX3QgX19yZXYwXzQ0NjsgIF9fcmV2MF80NDYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzQ0NiwgX19zMF80NDYsIDEsIDApOyBcCiAgcG9seTY0eDJfdCBfX3JldF80NDY7IFwKICBfX3JldF80NDYgPSBfX25vc3dhcF9zcGxhdHFfbGFuZXFfcDY0KF9fcmV2MF80NDYsIF9fcDFfNDQ2KTsgXAogIF9fcmV0XzQ0NiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzQ0NiwgX19yZXRfNDQ2LCAxLCAwKTsgXAogIF9fcmV0XzQ0NjsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZkdXBxX2xhbmVxX3AxNihfX3AwXzQ0NywgX19wMV80NDcpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHkxNng4X3QgX19zMF80NDcgPSBfX3AwXzQ0NzsgXAogIHBvbHkxNng4X3QgX19yZXRfNDQ3OyBcCiAgX19yZXRfNDQ3ID0gc3BsYXRxX2xhbmVxX3AxNihfX3MwXzQ0NywgX19wMV80NDcpOyBcCiAgX19yZXRfNDQ3OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmR1cHFfbGFuZXFfcDE2KF9fcDBfNDQ4LCBfX3AxXzQ0OCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTE2eDhfdCBfX3MwXzQ0OCA9IF9fcDBfNDQ4OyBcCiAgcG9seTE2eDhfdCBfX3JldjBfNDQ4OyAgX19yZXYwXzQ0OCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNDQ4LCBfX3MwXzQ0OCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBwb2x5MTZ4OF90IF9fcmV0XzQ0ODsgXAogIF9fcmV0XzQ0OCA9IF9fbm9zd2FwX3NwbGF0cV9sYW5lcV9wMTYoX19yZXYwXzQ0OCwgX19wMV80NDgpOyBcCiAgX19yZXRfNDQ4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNDQ4LCBfX3JldF80NDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfNDQ4OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmR1cHFfbGFuZXFfdTgoX19wMF80NDksIF9fcDFfNDQ5KSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHgxNl90IF9fczBfNDQ5ID0gX19wMF80NDk7IFwKICB1aW50OHgxNl90IF9fcmV0XzQ0OTsgXAogIF9fcmV0XzQ0OSA9IHNwbGF0cV9sYW5lcV91OChfX3MwXzQ0OSwgX19wMV80NDkpOyBcCiAgX19yZXRfNDQ5OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmR1cHFfbGFuZXFfdTgoX19wMF80NTAsIF9fcDFfNDUwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHgxNl90IF9fczBfNDUwID0gX19wMF80NTA7IFwKICB1aW50OHgxNl90IF9fcmV2MF80NTA7ICBfX3JldjBfNDUwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF80NTAsIF9fczBfNDUwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQ4eDE2X3QgX19yZXRfNDUwOyBcCiAgX19yZXRfNDUwID0gX19ub3N3YXBfc3BsYXRxX2xhbmVxX3U4KF9fcmV2MF80NTAsIF9fcDFfNDUwKTsgXAogIF9fcmV0XzQ1MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzQ1MCwgX19yZXRfNDUwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzQ1MDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZkdXBxX2xhbmVxX3UzMihfX3AwXzQ1MSwgX19wMV80NTEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0X3QgX19zMF80NTEgPSBfX3AwXzQ1MTsgXAogIHVpbnQzMng0X3QgX19yZXRfNDUxOyBcCiAgX19yZXRfNDUxID0gc3BsYXRxX2xhbmVxX3UzMihfX3MwXzQ1MSwgX19wMV80NTEpOyBcCiAgX19yZXRfNDUxOyBcCn0pCiNlbHNlCiNkZWZpbmUgdmR1cHFfbGFuZXFfdTMyKF9fcDBfNDUyLCBfX3AxXzQ1MikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDRfdCBfX3MwXzQ1MiA9IF9fcDBfNDUyOyBcCiAgdWludDMyeDRfdCBfX3JldjBfNDUyOyAgX19yZXYwXzQ1MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNDUyLCBfX3MwXzQ1MiwgMywgMiwgMSwgMCk7IFwKICB1aW50MzJ4NF90IF9fcmV0XzQ1MjsgXAogIF9fcmV0XzQ1MiA9IF9fbm9zd2FwX3NwbGF0cV9sYW5lcV91MzIoX19yZXYwXzQ1MiwgX19wMV80NTIpOyBcCiAgX19yZXRfNDUyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNDUyLCBfX3JldF80NTIsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfNDUyOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmR1cHFfbGFuZXFfdTY0KF9fcDBfNDUzLCBfX3AxXzQ1MykgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDJfdCBfX3MwXzQ1MyA9IF9fcDBfNDUzOyBcCiAgdWludDY0eDJfdCBfX3JldF80NTM7IFwKICBfX3JldF80NTMgPSBzcGxhdHFfbGFuZXFfdTY0KF9fczBfNDUzLCBfX3AxXzQ1Myk7IFwKICBfX3JldF80NTM7IFwKfSkKI2Vsc2UKI2RlZmluZSB2ZHVwcV9sYW5lcV91NjQoX19wMF80NTQsIF9fcDFfNDU0KSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4Ml90IF9fczBfNDU0ID0gX19wMF80NTQ7IFwKICB1aW50NjR4Ml90IF9fcmV2MF80NTQ7ICBfX3JldjBfNDU0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF80NTQsIF9fczBfNDU0LCAxLCAwKTsgXAogIHVpbnQ2NHgyX3QgX19yZXRfNDU0OyBcCiAgX19yZXRfNDU0ID0gX19ub3N3YXBfc3BsYXRxX2xhbmVxX3U2NChfX3JldjBfNDU0LCBfX3AxXzQ1NCk7IFwKICBfX3JldF80NTQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF80NTQsIF9fcmV0XzQ1NCwgMSwgMCk7IFwKICBfX3JldF80NTQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2ZHVwcV9sYW5lcV91MTYoX19wMF80NTUsIF9fcDFfNDU1KSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4OF90IF9fczBfNDU1ID0gX19wMF80NTU7IFwKICB1aW50MTZ4OF90IF9fcmV0XzQ1NTsgXAogIF9fcmV0XzQ1NSA9IHNwbGF0cV9sYW5lcV91MTYoX19zMF80NTUsIF9fcDFfNDU1KTsgXAogIF9fcmV0XzQ1NTsgXAp9KQojZWxzZQojZGVmaW5lIHZkdXBxX2xhbmVxX3UxNihfX3AwXzQ1NiwgX19wMV80NTYpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng4X3QgX19zMF80NTYgPSBfX3AwXzQ1NjsgXAogIHVpbnQxNng4X3QgX19yZXYwXzQ1NjsgIF9fcmV2MF80NTYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzQ1NiwgX19zMF80NTYsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDhfdCBfX3JldF80NTY7IFwKICBfX3JldF80NTYgPSBfX25vc3dhcF9zcGxhdHFfbGFuZXFfdTE2KF9fcmV2MF80NTYsIF9fcDFfNDU2KTsgXAogIF9fcmV0XzQ1NiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzQ1NiwgX19yZXRfNDU2LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzQ1NjsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZkdXBxX2xhbmVxX3M4KF9fcDBfNDU3LCBfX3AxXzQ1NykgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHgxNl90IF9fczBfNDU3ID0gX19wMF80NTc7IFwKICBpbnQ4eDE2X3QgX19yZXRfNDU3OyBcCiAgX19yZXRfNDU3ID0gc3BsYXRxX2xhbmVxX3M4KF9fczBfNDU3LCBfX3AxXzQ1Nyk7IFwKICBfX3JldF80NTc7IFwKfSkKI2Vsc2UKI2RlZmluZSB2ZHVwcV9sYW5lcV9zOChfX3AwXzQ1OCwgX19wMV80NTgpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4MTZfdCBfX3MwXzQ1OCA9IF9fcDBfNDU4OyBcCiAgaW50OHgxNl90IF9fcmV2MF80NTg7ICBfX3JldjBfNDU4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF80NTgsIF9fczBfNDU4LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDh4MTZfdCBfX3JldF80NTg7IFwKICBfX3JldF80NTggPSBfX25vc3dhcF9zcGxhdHFfbGFuZXFfczgoX19yZXYwXzQ1OCwgX19wMV80NTgpOyBcCiAgX19yZXRfNDU4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNDU4LCBfX3JldF80NTgsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfNDU4OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmR1cHFfbGFuZXFfZjY0KF9fcDBfNDU5LCBfX3AxXzQ1OSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgyX3QgX19zMF80NTkgPSBfX3AwXzQ1OTsgXAogIGZsb2F0NjR4Ml90IF9fcmV0XzQ1OTsgXAogIF9fcmV0XzQ1OSA9IHNwbGF0cV9sYW5lcV9mNjQoX19zMF80NTksIF9fcDFfNDU5KTsgXAogIF9fcmV0XzQ1OTsgXAp9KQojZWxzZQojZGVmaW5lIHZkdXBxX2xhbmVxX2Y2NChfX3AwXzQ2MCwgX19wMV80NjApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4Ml90IF9fczBfNDYwID0gX19wMF80NjA7IFwKICBmbG9hdDY0eDJfdCBfX3JldjBfNDYwOyAgX19yZXYwXzQ2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNDYwLCBfX3MwXzQ2MCwgMSwgMCk7IFwKICBmbG9hdDY0eDJfdCBfX3JldF80NjA7IFwKICBfX3JldF80NjAgPSBfX25vc3dhcF9zcGxhdHFfbGFuZXFfZjY0KF9fcmV2MF80NjAsIF9fcDFfNDYwKTsgXAogIF9fcmV0XzQ2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzQ2MCwgX19yZXRfNDYwLCAxLCAwKTsgXAogIF9fcmV0XzQ2MDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZkdXBxX2xhbmVxX2YzMihfX3AwXzQ2MSwgX19wMV80NjEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NF90IF9fczBfNDYxID0gX19wMF80NjE7IFwKICBmbG9hdDMyeDRfdCBfX3JldF80NjE7IFwKICBfX3JldF80NjEgPSBzcGxhdHFfbGFuZXFfZjMyKF9fczBfNDYxLCBfX3AxXzQ2MSk7IFwKICBfX3JldF80NjE7IFwKfSkKI2Vsc2UKI2RlZmluZSB2ZHVwcV9sYW5lcV9mMzIoX19wMF80NjIsIF9fcDFfNDYyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDRfdCBfX3MwXzQ2MiA9IF9fcDBfNDYyOyBcCiAgZmxvYXQzMng0X3QgX19yZXYwXzQ2MjsgIF9fcmV2MF80NjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzQ2MiwgX19zMF80NjIsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQzMng0X3QgX19yZXRfNDYyOyBcCiAgX19yZXRfNDYyID0gX19ub3N3YXBfc3BsYXRxX2xhbmVxX2YzMihfX3JldjBfNDYyLCBfX3AxXzQ2Mik7IFwKICBfX3JldF80NjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF80NjIsIF9fcmV0XzQ2MiwgMywgMiwgMSwgMCk7IFwKICBfX3JldF80NjI7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2ZHVwcV9sYW5lcV9mMTYoX19wMF80NjMsIF9fcDFfNDYzKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDhfdCBfX3MwXzQ2MyA9IF9fcDBfNDYzOyBcCiAgZmxvYXQxNng4X3QgX19yZXRfNDYzOyBcCiAgX19yZXRfNDYzID0gc3BsYXRxX2xhbmVxX2YxNihfX3MwXzQ2MywgX19wMV80NjMpOyBcCiAgX19yZXRfNDYzOyBcCn0pCiNlbHNlCiNkZWZpbmUgdmR1cHFfbGFuZXFfZjE2KF9fcDBfNDY0LCBfX3AxXzQ2NCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4X3QgX19zMF80NjQgPSBfX3AwXzQ2NDsgXAogIGZsb2F0MTZ4OF90IF9fcmV2MF80NjQ7ICBfX3JldjBfNDY0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF80NjQsIF9fczBfNDY0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4OF90IF9fcmV0XzQ2NDsgXAogIF9fcmV0XzQ2NCA9IF9fbm9zd2FwX3NwbGF0cV9sYW5lcV9mMTYoX19yZXYwXzQ2NCwgX19wMV80NjQpOyBcCiAgX19yZXRfNDY0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNDY0LCBfX3JldF80NjQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfNDY0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmR1cHFfbGFuZXFfczMyKF9fcDBfNDY1LCBfX3AxXzQ2NSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczBfNDY1ID0gX19wMF80NjU7IFwKICBpbnQzMng0X3QgX19yZXRfNDY1OyBcCiAgX19yZXRfNDY1ID0gc3BsYXRxX2xhbmVxX3MzMihfX3MwXzQ2NSwgX19wMV80NjUpOyBcCiAgX19yZXRfNDY1OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmR1cHFfbGFuZXFfczMyKF9fcDBfNDY2LCBfX3AxXzQ2NikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczBfNDY2ID0gX19wMF80NjY7IFwKICBpbnQzMng0X3QgX19yZXYwXzQ2NjsgIF9fcmV2MF80NjYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzQ2NiwgX19zMF80NjYsIDMsIDIsIDEsIDApOyBcCiAgaW50MzJ4NF90IF9fcmV0XzQ2NjsgXAogIF9fcmV0XzQ2NiA9IF9fbm9zd2FwX3NwbGF0cV9sYW5lcV9zMzIoX19yZXYwXzQ2NiwgX19wMV80NjYpOyBcCiAgX19yZXRfNDY2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNDY2LCBfX3JldF80NjYsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfNDY2OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmR1cHFfbGFuZXFfczY0KF9fcDBfNDY3LCBfX3AxXzQ2NykgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4Ml90IF9fczBfNDY3ID0gX19wMF80Njc7IFwKICBpbnQ2NHgyX3QgX19yZXRfNDY3OyBcCiAgX19yZXRfNDY3ID0gc3BsYXRxX2xhbmVxX3M2NChfX3MwXzQ2NywgX19wMV80NjcpOyBcCiAgX19yZXRfNDY3OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmR1cHFfbGFuZXFfczY0KF9fcDBfNDY4LCBfX3AxXzQ2OCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4Ml90IF9fczBfNDY4ID0gX19wMF80Njg7IFwKICBpbnQ2NHgyX3QgX19yZXYwXzQ2ODsgIF9fcmV2MF80NjggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzQ2OCwgX19zMF80NjgsIDEsIDApOyBcCiAgaW50NjR4Ml90IF9fcmV0XzQ2ODsgXAogIF9fcmV0XzQ2OCA9IF9fbm9zd2FwX3NwbGF0cV9sYW5lcV9zNjQoX19yZXYwXzQ2OCwgX19wMV80NjgpOyBcCiAgX19yZXRfNDY4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNDY4LCBfX3JldF80NjgsIDEsIDApOyBcCiAgX19yZXRfNDY4OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmR1cHFfbGFuZXFfczE2KF9fcDBfNDY5LCBfX3AxXzQ2OSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OF90IF9fczBfNDY5ID0gX19wMF80Njk7IFwKICBpbnQxNng4X3QgX19yZXRfNDY5OyBcCiAgX19yZXRfNDY5ID0gc3BsYXRxX2xhbmVxX3MxNihfX3MwXzQ2OSwgX19wMV80NjkpOyBcCiAgX19yZXRfNDY5OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmR1cHFfbGFuZXFfczE2KF9fcDBfNDcwLCBfX3AxXzQ3MCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OF90IF9fczBfNDcwID0gX19wMF80NzA7IFwKICBpbnQxNng4X3QgX19yZXYwXzQ3MDsgIF9fcmV2MF80NzAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzQ3MCwgX19zMF80NzAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4OF90IF9fcmV0XzQ3MDsgXAogIF9fcmV0XzQ3MCA9IF9fbm9zd2FwX3NwbGF0cV9sYW5lcV9zMTYoX19yZXYwXzQ3MCwgX19wMV80NzApOyBcCiAgX19yZXRfNDcwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNDcwLCBfX3JldF80NzAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfNDcwOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmR1cF9sYW5lcV91OChfX3AwXzQ3MSwgX19wMV80NzEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDE2X3QgX19zMF80NzEgPSBfX3AwXzQ3MTsgXAogIHVpbnQ4eDhfdCBfX3JldF80NzE7IFwKICBfX3JldF80NzEgPSBzcGxhdF9sYW5lcV91OChfX3MwXzQ3MSwgX19wMV80NzEpOyBcCiAgX19yZXRfNDcxOyBcCn0pCiNlbHNlCiNkZWZpbmUgdmR1cF9sYW5lcV91OChfX3AwXzQ3MiwgX19wMV80NzIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDE2X3QgX19zMF80NzIgPSBfX3AwXzQ3MjsgXAogIHVpbnQ4eDE2X3QgX19yZXYwXzQ3MjsgIF9fcmV2MF80NzIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzQ3MiwgX19zMF80NzIsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDh4OF90IF9fcmV0XzQ3MjsgXAogIF9fcmV0XzQ3MiA9IF9fbm9zd2FwX3NwbGF0X2xhbmVxX3U4KF9fcmV2MF80NzIsIF9fcDFfNDcyKTsgXAogIF9fcmV0XzQ3MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzQ3MiwgX19yZXRfNDcyLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzQ3MjsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZkdXBfbGFuZXFfdTMyKF9fcDBfNDczLCBfX3AxXzQ3MykgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDRfdCBfX3MwXzQ3MyA9IF9fcDBfNDczOyBcCiAgdWludDMyeDJfdCBfX3JldF80NzM7IFwKICBfX3JldF80NzMgPSBzcGxhdF9sYW5lcV91MzIoX19zMF80NzMsIF9fcDFfNDczKTsgXAogIF9fcmV0XzQ3MzsgXAp9KQojZWxzZQojZGVmaW5lIHZkdXBfbGFuZXFfdTMyKF9fcDBfNDc0LCBfX3AxXzQ3NCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDRfdCBfX3MwXzQ3NCA9IF9fcDBfNDc0OyBcCiAgdWludDMyeDRfdCBfX3JldjBfNDc0OyAgX19yZXYwXzQ3NCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNDc0LCBfX3MwXzQ3NCwgMywgMiwgMSwgMCk7IFwKICB1aW50MzJ4Ml90IF9fcmV0XzQ3NDsgXAogIF9fcmV0XzQ3NCA9IF9fbm9zd2FwX3NwbGF0X2xhbmVxX3UzMihfX3JldjBfNDc0LCBfX3AxXzQ3NCk7IFwKICBfX3JldF80NzQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF80NzQsIF9fcmV0XzQ3NCwgMSwgMCk7IFwKICBfX3JldF80NzQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2ZHVwX2xhbmVxX3U2NChfX3AwXzQ3NSwgX19wMV80NzUpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyX3QgX19zMF80NzUgPSBfX3AwXzQ3NTsgXAogIHVpbnQ2NHgxX3QgX19yZXRfNDc1OyBcCiAgX19yZXRfNDc1ID0gc3BsYXRfbGFuZXFfdTY0KF9fczBfNDc1LCBfX3AxXzQ3NSk7IFwKICBfX3JldF80NzU7IFwKfSkKI2Vsc2UKI2RlZmluZSB2ZHVwX2xhbmVxX3U2NChfX3AwXzQ3NiwgX19wMV80NzYpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyX3QgX19zMF80NzYgPSBfX3AwXzQ3NjsgXAogIHVpbnQ2NHgyX3QgX19yZXYwXzQ3NjsgIF9fcmV2MF80NzYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzQ3NiwgX19zMF80NzYsIDEsIDApOyBcCiAgdWludDY0eDFfdCBfX3JldF80NzY7IFwKICBfX3JldF80NzYgPSBfX25vc3dhcF9zcGxhdF9sYW5lcV91NjQoX19yZXYwXzQ3NiwgX19wMV80NzYpOyBcCiAgX19yZXRfNDc2OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmR1cF9sYW5lcV91MTYoX19wMF80NzcsIF9fcDFfNDc3KSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4OF90IF9fczBfNDc3ID0gX19wMF80Nzc7IFwKICB1aW50MTZ4NF90IF9fcmV0XzQ3NzsgXAogIF9fcmV0XzQ3NyA9IHNwbGF0X2xhbmVxX3UxNihfX3MwXzQ3NywgX19wMV80NzcpOyBcCiAgX19yZXRfNDc3OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmR1cF9sYW5lcV91MTYoX19wMF80NzgsIF9fcDFfNDc4KSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4OF90IF9fczBfNDc4ID0gX19wMF80Nzg7IFwKICB1aW50MTZ4OF90IF9fcmV2MF80Nzg7ICBfX3JldjBfNDc4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF80NzgsIF9fczBfNDc4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQxNng0X3QgX19yZXRfNDc4OyBcCiAgX19yZXRfNDc4ID0gX19ub3N3YXBfc3BsYXRfbGFuZXFfdTE2KF9fcmV2MF80NzgsIF9fcDFfNDc4KTsgXAogIF9fcmV0XzQ3OCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzQ3OCwgX19yZXRfNDc4LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzQ3ODsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZkdXBfbGFuZXFfczgoX19wMF80NzksIF9fcDFfNDc5KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDE2X3QgX19zMF80NzkgPSBfX3AwXzQ3OTsgXAogIGludDh4OF90IF9fcmV0XzQ3OTsgXAogIF9fcmV0XzQ3OSA9IHNwbGF0X2xhbmVxX3M4KF9fczBfNDc5LCBfX3AxXzQ3OSk7IFwKICBfX3JldF80Nzk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2ZHVwX2xhbmVxX3M4KF9fcDBfNDgwLCBfX3AxXzQ4MCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHgxNl90IF9fczBfNDgwID0gX19wMF80ODA7IFwKICBpbnQ4eDE2X3QgX19yZXYwXzQ4MDsgIF9fcmV2MF80ODAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzQ4MCwgX19zMF80ODAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50OHg4X3QgX19yZXRfNDgwOyBcCiAgX19yZXRfNDgwID0gX19ub3N3YXBfc3BsYXRfbGFuZXFfczgoX19yZXYwXzQ4MCwgX19wMV80ODApOyBcCiAgX19yZXRfNDgwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNDgwLCBfX3JldF80ODAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfNDgwOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmR1cF9sYW5lcV9mNjQoX19wMF80ODEsIF9fcDFfNDgxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDJfdCBfX3MwXzQ4MSA9IF9fcDBfNDgxOyBcCiAgZmxvYXQ2NHgxX3QgX19yZXRfNDgxOyBcCiAgX19yZXRfNDgxID0gc3BsYXRfbGFuZXFfZjY0KF9fczBfNDgxLCBfX3AxXzQ4MSk7IFwKICBfX3JldF80ODE7IFwKfSkKI2Vsc2UKI2RlZmluZSB2ZHVwX2xhbmVxX2Y2NChfX3AwXzQ4MiwgX19wMV80ODIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4Ml90IF9fczBfNDgyID0gX19wMF80ODI7IFwKICBmbG9hdDY0eDJfdCBfX3JldjBfNDgyOyAgX19yZXYwXzQ4MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNDgyLCBfX3MwXzQ4MiwgMSwgMCk7IFwKICBmbG9hdDY0eDFfdCBfX3JldF80ODI7IFwKICBfX3JldF80ODIgPSBfX25vc3dhcF9zcGxhdF9sYW5lcV9mNjQoX19yZXYwXzQ4MiwgX19wMV80ODIpOyBcCiAgX19yZXRfNDgyOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmR1cF9sYW5lcV9mMzIoX19wMF80ODMsIF9fcDFfNDgzKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDRfdCBfX3MwXzQ4MyA9IF9fcDBfNDgzOyBcCiAgZmxvYXQzMngyX3QgX19yZXRfNDgzOyBcCiAgX19yZXRfNDgzID0gc3BsYXRfbGFuZXFfZjMyKF9fczBfNDgzLCBfX3AxXzQ4Myk7IFwKICBfX3JldF80ODM7IFwKfSkKI2Vsc2UKI2RlZmluZSB2ZHVwX2xhbmVxX2YzMihfX3AwXzQ4NCwgX19wMV80ODQpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NF90IF9fczBfNDg0ID0gX19wMF80ODQ7IFwKICBmbG9hdDMyeDRfdCBfX3JldjBfNDg0OyAgX19yZXYwXzQ4NCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNDg0LCBfX3MwXzQ4NCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDMyeDJfdCBfX3JldF80ODQ7IFwKICBfX3JldF80ODQgPSBfX25vc3dhcF9zcGxhdF9sYW5lcV9mMzIoX19yZXYwXzQ4NCwgX19wMV80ODQpOyBcCiAgX19yZXRfNDg0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNDg0LCBfX3JldF80ODQsIDEsIDApOyBcCiAgX19yZXRfNDg0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmR1cF9sYW5lcV9mMTYoX19wMF80ODUsIF9fcDFfNDg1KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDhfdCBfX3MwXzQ4NSA9IF9fcDBfNDg1OyBcCiAgZmxvYXQxNng0X3QgX19yZXRfNDg1OyBcCiAgX19yZXRfNDg1ID0gc3BsYXRfbGFuZXFfZjE2KF9fczBfNDg1LCBfX3AxXzQ4NSk7IFwKICBfX3JldF80ODU7IFwKfSkKI2Vsc2UKI2RlZmluZSB2ZHVwX2xhbmVxX2YxNihfX3AwXzQ4NiwgX19wMV80ODYpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4OF90IF9fczBfNDg2ID0gX19wMF80ODY7IFwKICBmbG9hdDE2eDhfdCBfX3JldjBfNDg2OyAgX19yZXYwXzQ4NiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNDg2LCBfX3MwXzQ4NiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2eDRfdCBfX3JldF80ODY7IFwKICBfX3JldF80ODYgPSBfX25vc3dhcF9zcGxhdF9sYW5lcV9mMTYoX19yZXYwXzQ4NiwgX19wMV80ODYpOyBcCiAgX19yZXRfNDg2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNDg2LCBfX3JldF80ODYsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfNDg2OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmR1cF9sYW5lcV9zMzIoX19wMF80ODcsIF9fcDFfNDg3KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMF80ODcgPSBfX3AwXzQ4NzsgXAogIGludDMyeDJfdCBfX3JldF80ODc7IFwKICBfX3JldF80ODcgPSBzcGxhdF9sYW5lcV9zMzIoX19zMF80ODcsIF9fcDFfNDg3KTsgXAogIF9fcmV0XzQ4NzsgXAp9KQojZWxzZQojZGVmaW5lIHZkdXBfbGFuZXFfczMyKF9fcDBfNDg4LCBfX3AxXzQ4OCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczBfNDg4ID0gX19wMF80ODg7IFwKICBpbnQzMng0X3QgX19yZXYwXzQ4ODsgIF9fcmV2MF80ODggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzQ4OCwgX19zMF80ODgsIDMsIDIsIDEsIDApOyBcCiAgaW50MzJ4Ml90IF9fcmV0XzQ4ODsgXAogIF9fcmV0XzQ4OCA9IF9fbm9zd2FwX3NwbGF0X2xhbmVxX3MzMihfX3JldjBfNDg4LCBfX3AxXzQ4OCk7IFwKICBfX3JldF80ODggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF80ODgsIF9fcmV0XzQ4OCwgMSwgMCk7IFwKICBfX3JldF80ODg7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2ZHVwX2xhbmVxX3M2NChfX3AwXzQ4OSwgX19wMV80ODkpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJfdCBfX3MwXzQ4OSA9IF9fcDBfNDg5OyBcCiAgaW50NjR4MV90IF9fcmV0XzQ4OTsgXAogIF9fcmV0XzQ4OSA9IHNwbGF0X2xhbmVxX3M2NChfX3MwXzQ4OSwgX19wMV80ODkpOyBcCiAgX19yZXRfNDg5OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmR1cF9sYW5lcV9zNjQoX19wMF80OTAsIF9fcDFfNDkwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgyX3QgX19zMF80OTAgPSBfX3AwXzQ5MDsgXAogIGludDY0eDJfdCBfX3JldjBfNDkwOyAgX19yZXYwXzQ5MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNDkwLCBfX3MwXzQ5MCwgMSwgMCk7IFwKICBpbnQ2NHgxX3QgX19yZXRfNDkwOyBcCiAgX19yZXRfNDkwID0gX19ub3N3YXBfc3BsYXRfbGFuZXFfczY0KF9fcmV2MF80OTAsIF9fcDFfNDkwKTsgXAogIF9fcmV0XzQ5MDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZkdXBfbGFuZXFfczE2KF9fcDBfNDkxLCBfX3AxXzQ5MSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OF90IF9fczBfNDkxID0gX19wMF80OTE7IFwKICBpbnQxNng0X3QgX19yZXRfNDkxOyBcCiAgX19yZXRfNDkxID0gc3BsYXRfbGFuZXFfczE2KF9fczBfNDkxLCBfX3AxXzQ5MSk7IFwKICBfX3JldF80OTE7IFwKfSkKI2Vsc2UKI2RlZmluZSB2ZHVwX2xhbmVxX3MxNihfX3AwXzQ5MiwgX19wMV80OTIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDhfdCBfX3MwXzQ5MiA9IF9fcDBfNDkyOyBcCiAgaW50MTZ4OF90IF9fcmV2MF80OTI7ICBfX3JldjBfNDkyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF80OTIsIF9fczBfNDkyLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDRfdCBfX3JldF80OTI7IFwKICBfX3JldF80OTIgPSBfX25vc3dhcF9zcGxhdF9sYW5lcV9zMTYoX19yZXYwXzQ5MiwgX19wMV80OTIpOyBcCiAgX19yZXRfNDkyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNDkyLCBfX3JldF80OTIsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfNDkyOyBcCn0pCiNlbmRpZgoKX19haSBwb2x5NjR4MV90IHZkdXBfbl9wNjQocG9seTY0X3QgX19wMCkgewogIHBvbHk2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTY0eDFfdCkge19fcDB9OwogIHJldHVybiBfX3JldDsKfQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBwb2x5NjR4Ml90IHZkdXBxX25fcDY0KHBvbHk2NF90IF9fcDApIHsKICBwb2x5NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk2NHgyX3QpIHtfX3AwLCBfX3AwfTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBwb2x5NjR4Ml90IHZkdXBxX25fcDY0KHBvbHk2NF90IF9fcDApIHsKICBwb2x5NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk2NHgyX3QpIHtfX3AwLCBfX3AwfTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQ2NHgyX3QgdmR1cHFfbl9mNjQoZmxvYXQ2NF90IF9fcDApIHsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDJfdCkge19fcDAsIF9fcDB9OwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0NjR4Ml90IHZkdXBxX25fZjY0KGZsb2F0NjRfdCBfX3AwKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQ2NHgyX3QpIHtfX3AwLCBfX3AwfTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKX19haSBmbG9hdDY0eDFfdCB2ZHVwX25fZjY0KGZsb2F0NjRfdCBfX3AwKSB7CiAgZmxvYXQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQ2NHgxX3QpIHtfX3AwfTsKICByZXR1cm4gX19yZXQ7Cn0KI2RlZmluZSB2ZXh0X3A2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5NjR4MV90IF9fczAgPSBfX3AwOyBcCiAgcG9seTY0eDFfdCBfX3MxID0gX19wMTsgXAogIHBvbHk2NHgxX3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92ZXh0X3YoKGludDh4OF90KV9fczAsIChpbnQ4eDhfdClfX3MxLCBfX3AyLCA2KTsgXAogIF9fcmV0OyBcCn0pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZleHRxX3A2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5NjR4Ml90IF9fczAgPSBfX3AwOyBcCiAgcG9seTY0eDJfdCBfX3MxID0gX19wMTsgXAogIHBvbHk2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92ZXh0cV92KChpbnQ4eDE2X3QpX19zMCwgKGludDh4MTZfdClfX3MxLCBfX3AyLCAzOCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZleHRxX3A2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5NjR4Ml90IF9fczAgPSBfX3AwOyBcCiAgcG9seTY0eDJfdCBfX3MxID0gX19wMTsgXAogIHBvbHk2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMSwgMCk7IFwKICBwb2x5NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDEsIDApOyBcCiAgcG9seTY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKHBvbHk2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZleHRxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCBfX3AyLCAzOCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZleHRxX2Y2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDJfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0NjR4Ml90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQ2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDY0eDJfdCkgX19idWlsdGluX25lb25fdmV4dHFfdigoaW50OHgxNl90KV9fczAsIChpbnQ4eDE2X3QpX19zMSwgX19wMiwgNDIpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2ZXh0cV9mNjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgyX3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDY0eDJfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDEsIDApOyBcCiAgZmxvYXQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMSwgMCk7IFwKICBmbG9hdDY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92ZXh0cV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgX19wMiwgNDIpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojZGVmaW5lIHZleHRfZjY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4MV90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQ2NHgxX3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDY0eDFfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92ZXh0X3YoKGludDh4OF90KV9fczAsIChpbnQ4eDhfdClfX3MxLCBfX3AyLCAxMCk7IFwKICBfX3JldDsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDY0eDJfdCB2Zm1hcV9mNjQoZmxvYXQ2NHgyX3QgX19wMCwgZmxvYXQ2NHgyX3QgX19wMSwgZmxvYXQ2NHgyX3QgX19wMikgewogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92Zm1hcV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAoaW50OHgxNl90KV9fcDIsIDQyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDY0eDJfdCB2Zm1hcV9mNjQoZmxvYXQ2NHgyX3QgX19wMCwgZmxvYXQ2NHgyX3QgX19wMSwgZmxvYXQ2NHgyX3QgX19wMikgewogIGZsb2F0NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGZsb2F0NjR4Ml90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDEsIDApOwogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92Zm1hcV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgKGludDh4MTZfdClfX3JldjIsIDQyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQ2NHgyX3QgX19ub3N3YXBfdmZtYXFfZjY0KGZsb2F0NjR4Ml90IF9fcDAsIGZsb2F0NjR4Ml90IF9fcDEsIGZsb2F0NjR4Ml90IF9fcDIpIHsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDJfdCkgX19idWlsdGluX25lb25fdmZtYXFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgKGludDh4MTZfdClfX3AyLCA0Mik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKX19haSBmbG9hdDY0eDFfdCB2Zm1hX2Y2NChmbG9hdDY0eDFfdCBfX3AwLCBmbG9hdDY0eDFfdCBfX3AxLCBmbG9hdDY0eDFfdCBfX3AyKSB7CiAgZmxvYXQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3ZmbWFfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIChpbnQ4eDhfdClfX3AyLCAxMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNkZWZpbmUgdmZtYWRfbGFuZV9mNjQoX19wMCwgX19wMSwgX19wMiwgX19wMykgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NF90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQ2NF90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQ2NHgxX3QgX19zMiA9IF9fcDI7IFwKICBmbG9hdDY0X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZmbWFkX2xhbmVfZjY0KF9fczAsIF9fczEsIChmbG9hdDY0eDFfdClfX3MyLCBfX3AzKTsgXAogIF9fcmV0OyBcCn0pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZmbWFzX2xhbmVfZjMyKF9fcDAsIF9fcDEsIF9fcDIsIF9fcDMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MzJfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MzJ4Ml90IF9fczIgPSBfX3AyOyBcCiAgZmxvYXQzMl90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQzMl90KSBfX2J1aWx0aW5fbmVvbl92Zm1hc19sYW5lX2YzMihfX3MwLCBfX3MxLCAoZmxvYXQzMngyX3QpX19zMiwgX19wMyk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZmbWFzX2xhbmVfZjMyKF9fcDAsIF9fcDEsIF9fcDIsIF9fcDMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MzJfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MzJ4Ml90IF9fczIgPSBfX3AyOyBcCiAgZmxvYXQzMngyX3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMiwgX19zMiwgMSwgMCk7IFwKICBmbG9hdDMyX3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZmbWFzX2xhbmVfZjMyKF9fczAsIF9fczEsIChmbG9hdDMyeDJfdClfX3JldjIsIF9fcDMpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF92Zm1hc19sYW5lX2YzMihfX3AwLCBfX3AxLCBfX3AyLCBfX3AzKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyX3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDMyX3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDMyeDJfdCBfX3MyID0gX19wMjsgXAogIGZsb2F0MzJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MzJfdCkgX19idWlsdGluX25lb25fdmZtYXNfbGFuZV9mMzIoX19zMCwgX19zMSwgKGZsb2F0MzJ4Ml90KV9fczIsIF9fcDMpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Zm1hcV9sYW5lX2Y2NChfX3AwLCBfX3AxLCBfX3AyLCBfX3AzKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDJfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0NjR4Ml90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQ2NHgxX3QgX19zMiA9IF9fcDI7IFwKICBmbG9hdDY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92Zm1hcV9sYW5lX3YoKGludDh4MTZfdClfX3MwLCAoaW50OHgxNl90KV9fczEsIChpbnQ4eDhfdClfX3MyLCBfX3AzLCA0Mik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZmbWFxX2xhbmVfZjY0KF9fcDAsIF9fcDEsIF9fcDIsIF9fcDMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4Ml90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQ2NHgyX3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDY0eDFfdCBfX3MyID0gX19wMjsgXAogIGZsb2F0NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDEsIDApOyBcCiAgZmxvYXQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMSwgMCk7IFwKICBmbG9hdDY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92Zm1hcV9sYW5lX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAoaW50OHg4X3QpX19zMiwgX19wMywgNDIpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF92Zm1hcV9sYW5lX2Y2NChfX3AwLCBfX3AxLCBfX3AyLCBfX3AzKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDJfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0NjR4Ml90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQ2NHgxX3QgX19zMiA9IF9fcDI7IFwKICBmbG9hdDY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92Zm1hcV9sYW5lX3YoKGludDh4MTZfdClfX3MwLCAoaW50OHgxNl90KV9fczEsIChpbnQ4eDhfdClfX3MyLCBfX3AzLCA0Mik7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZmbWFxX2xhbmVfZjMyKF9fcDAsIF9fcDEsIF9fcDIsIF9fcDMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NF90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQzMng0X3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDMyeDJfdCBfX3MyID0gX19wMjsgXAogIGZsb2F0MzJ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZmbWFxX2xhbmVfdigoaW50OHgxNl90KV9fczAsIChpbnQ4eDE2X3QpX19zMSwgKGludDh4OF90KV9fczIsIF9fcDMsIDQxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmZtYXFfbGFuZV9mMzIoX19wMCwgX19wMSwgX19wMiwgX19wMykgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDMyeDRfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MzJ4Ml90IF9fczIgPSBfX3AyOyBcCiAgZmxvYXQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MzJ4Ml90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczIsIF9fczIsIDEsIDApOyBcCiAgZmxvYXQzMng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdmZtYXFfbGFuZV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgKGludDh4OF90KV9fcmV2MiwgX19wMywgNDEpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF92Zm1hcV9sYW5lX2YzMihfX3AwLCBfX3AxLCBfX3AyLCBfX3AzKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDRfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MzJ4NF90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQzMngyX3QgX19zMiA9IF9fcDI7IFwKICBmbG9hdDMyeDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92Zm1hcV9sYW5lX3YoKGludDh4MTZfdClfX3MwLCAoaW50OHgxNl90KV9fczEsIChpbnQ4eDhfdClfX3MyLCBfX3AzLCA0MSk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNkZWZpbmUgdmZtYV9sYW5lX2Y2NChfX3AwLCBfX3AxLCBfX3AyLCBfX3AzKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDFfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0NjR4MV90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQ2NHgxX3QgX19zMiA9IF9fcDI7IFwKICBmbG9hdDY0eDFfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92Zm1hX2xhbmVfdigoaW50OHg4X3QpX19zMCwgKGludDh4OF90KV9fczEsIChpbnQ4eDhfdClfX3MyLCBfX3AzLCAxMCk7IFwKICBfX3JldDsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Zm1hX2xhbmVfZjMyKF9fcDAsIF9fcDEsIF9fcDIsIF9fcDMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4Ml90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQzMngyX3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDMyeDJfdCBfX3MyID0gX19wMjsgXAogIGZsb2F0MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZmbWFfbGFuZV92KChpbnQ4eDhfdClfX3MwLCAoaW50OHg4X3QpX19zMSwgKGludDh4OF90KV9fczIsIF9fcDMsIDkpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Zm1hX2xhbmVfZjMyKF9fcDAsIF9fcDEsIF9fcDIsIF9fcDMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4Ml90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQzMngyX3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDMyeDJfdCBfX3MyID0gX19wMjsgXAogIGZsb2F0MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDEsIDApOyBcCiAgZmxvYXQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMSwgMCk7IFwKICBmbG9hdDMyeDJfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyLCBfX3MyLCAxLCAwKTsgXAogIGZsb2F0MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZmbWFfbGFuZV92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIChpbnQ4eDhfdClfX3JldjIsIF9fcDMsIDkpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF92Zm1hX2xhbmVfZjMyKF9fcDAsIF9fcDEsIF9fcDIsIF9fcDMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4Ml90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQzMngyX3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDMyeDJfdCBfX3MyID0gX19wMjsgXAogIGZsb2F0MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZmbWFfbGFuZV92KChpbnQ4eDhfdClfX3MwLCAoaW50OHg4X3QpX19zMSwgKGludDh4OF90KV9fczIsIF9fcDMsIDkpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Zm1hZF9sYW5lcV9mNjQoX19wMCwgX19wMSwgX19wMiwgX19wMykgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NF90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQ2NF90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQ2NHgyX3QgX19zMiA9IF9fcDI7IFwKICBmbG9hdDY0X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZmbWFkX2xhbmVxX2Y2NChfX3MwLCBfX3MxLCAoZmxvYXQ2NHgyX3QpX19zMiwgX19wMyk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZmbWFkX2xhbmVxX2Y2NChfX3AwLCBfX3AxLCBfX3AyLCBfX3AzKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDY0X3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDY0eDJfdCBfX3MyID0gX19wMjsgXAogIGZsb2F0NjR4Ml90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczIsIF9fczIsIDEsIDApOyBcCiAgZmxvYXQ2NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQ2NF90KSBfX2J1aWx0aW5fbmVvbl92Zm1hZF9sYW5lcV9mNjQoX19zMCwgX19zMSwgKGZsb2F0NjR4Ml90KV9fcmV2MiwgX19wMyk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3ZmbWFkX2xhbmVxX2Y2NChfX3AwLCBfX3AxLCBfX3AyLCBfX3AzKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDY0X3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDY0eDJfdCBfX3MyID0gX19wMjsgXAogIGZsb2F0NjRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0NjRfdCkgX19idWlsdGluX25lb25fdmZtYWRfbGFuZXFfZjY0KF9fczAsIF9fczEsIChmbG9hdDY0eDJfdClfX3MyLCBfX3AzKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmZtYXNfbGFuZXFfZjMyKF9fcDAsIF9fcDEsIF9fcDIsIF9fcDMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MzJfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MzJ4NF90IF9fczIgPSBfX3AyOyBcCiAgZmxvYXQzMl90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQzMl90KSBfX2J1aWx0aW5fbmVvbl92Zm1hc19sYW5lcV9mMzIoX19zMCwgX19zMSwgKGZsb2F0MzJ4NF90KV9fczIsIF9fcDMpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Zm1hc19sYW5lcV9mMzIoX19wMCwgX19wMSwgX19wMiwgX19wMykgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMl90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQzMl90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQzMng0X3QgX19zMiA9IF9fcDI7IFwKICBmbG9hdDMyeDRfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyLCBfX3MyLCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MzJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MzJfdCkgX19idWlsdGluX25lb25fdmZtYXNfbGFuZXFfZjMyKF9fczAsIF9fczEsIChmbG9hdDMyeDRfdClfX3JldjIsIF9fcDMpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF92Zm1hc19sYW5lcV9mMzIoX19wMCwgX19wMSwgX19wMiwgX19wMykgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMl90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQzMl90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQzMng0X3QgX19zMiA9IF9fcDI7IFwKICBmbG9hdDMyX3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZmbWFzX2xhbmVxX2YzMihfX3MwLCBfX3MxLCAoZmxvYXQzMng0X3QpX19zMiwgX19wMyk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZmbWFxX2xhbmVxX2Y2NChfX3AwLCBfX3AxLCBfX3AyLCBfX3AzKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDJfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0NjR4Ml90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQ2NHgyX3QgX19zMiA9IF9fcDI7IFwKICBmbG9hdDY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92Zm1hcV9sYW5lcV92KChpbnQ4eDE2X3QpX19zMCwgKGludDh4MTZfdClfX3MxLCAoaW50OHgxNl90KV9fczIsIF9fcDMsIDQyKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmZtYXFfbGFuZXFfZjY0KF9fcDAsIF9fcDEsIF9fcDIsIF9fcDMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4Ml90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQ2NHgyX3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDY0eDJfdCBfX3MyID0gX19wMjsgXAogIGZsb2F0NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDEsIDApOyBcCiAgZmxvYXQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMSwgMCk7IFwKICBmbG9hdDY0eDJfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyLCBfX3MyLCAxLCAwKTsgXAogIGZsb2F0NjR4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZmbWFxX2xhbmVxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAoaW50OHgxNl90KV9fcmV2MiwgX19wMywgNDIpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF92Zm1hcV9sYW5lcV9mNjQoX19wMCwgX19wMSwgX19wMiwgX19wMykgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgyX3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDY0eDJfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0NjR4Ml90IF9fczIgPSBfX3AyOyBcCiAgZmxvYXQ2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDY0eDJfdCkgX19idWlsdGluX25lb25fdmZtYXFfbGFuZXFfdigoaW50OHgxNl90KV9fczAsIChpbnQ4eDE2X3QpX19zMSwgKGludDh4MTZfdClfX3MyLCBfX3AzLCA0Mik7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZmbWFxX2xhbmVxX2YzMihfX3AwLCBfX3AxLCBfX3AyLCBfX3AzKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDRfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MzJ4NF90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQzMng0X3QgX19zMiA9IF9fcDI7IFwKICBmbG9hdDMyeDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92Zm1hcV9sYW5lcV92KChpbnQ4eDE2X3QpX19zMCwgKGludDh4MTZfdClfX3MxLCAoaW50OHgxNl90KV9fczIsIF9fcDMsIDQxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmZtYXFfbGFuZXFfZjMyKF9fcDAsIF9fcDEsIF9fcDIsIF9fcDMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NF90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQzMng0X3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDMyeDRfdCBfX3MyID0gX19wMjsgXAogIGZsb2F0MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDMyeDRfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyLCBfX3MyLCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MzJ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZmbWFxX2xhbmVxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAoaW50OHgxNl90KV9fcmV2MiwgX19wMywgNDEpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF92Zm1hcV9sYW5lcV9mMzIoX19wMCwgX19wMSwgX19wMiwgX19wMykgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDMyeDRfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0MzJ4NF90IF9fczIgPSBfX3AyOyBcCiAgZmxvYXQzMng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdmZtYXFfbGFuZXFfdigoaW50OHgxNl90KV9fczAsIChpbnQ4eDE2X3QpX19zMSwgKGludDh4MTZfdClfX3MyLCBfX3AzLCA0MSk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZmbWFfbGFuZXFfZjY0KF9fcDAsIF9fcDEsIF9fcDIsIF9fcDMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4MV90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQ2NHgxX3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDY0eDJfdCBfX3MyID0gX19wMjsgXAogIGZsb2F0NjR4MV90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3ZmbWFfbGFuZXFfdigoaW50OHg4X3QpX19zMCwgKGludDh4OF90KV9fczEsIChpbnQ4eDE2X3QpX19zMiwgX19wMywgMTApOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Zm1hX2xhbmVxX2Y2NChfX3AwLCBfX3AxLCBfX3AyLCBfX3AzKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDFfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0NjR4MV90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQ2NHgyX3QgX19zMiA9IF9fcDI7IFwKICBmbG9hdDY0eDJfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyLCBfX3MyLCAxLCAwKTsgXAogIGZsb2F0NjR4MV90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3ZmbWFfbGFuZXFfdigoaW50OHg4X3QpX19zMCwgKGludDh4OF90KV9fczEsIChpbnQ4eDE2X3QpX19yZXYyLCBfX3AzLCAxMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3ZmbWFfbGFuZXFfZjY0KF9fcDAsIF9fcDEsIF9fcDIsIF9fcDMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4MV90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQ2NHgxX3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDY0eDJfdCBfX3MyID0gX19wMjsgXAogIGZsb2F0NjR4MV90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3ZmbWFfbGFuZXFfdigoaW50OHg4X3QpX19zMCwgKGludDh4OF90KV9fczEsIChpbnQ4eDE2X3QpX19zMiwgX19wMywgMTApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Zm1hX2xhbmVxX2YzMihfX3AwLCBfX3AxLCBfX3AyLCBfX3AzKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MzJ4Ml90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQzMng0X3QgX19zMiA9IF9fcDI7IFwKICBmbG9hdDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92Zm1hX2xhbmVxX3YoKGludDh4OF90KV9fczAsIChpbnQ4eDhfdClfX3MxLCAoaW50OHgxNl90KV9fczIsIF9fcDMsIDkpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Zm1hX2xhbmVxX2YzMihfX3AwLCBfX3AxLCBfX3AyLCBfX3AzKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MzJ4Ml90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQzMng0X3QgX19zMiA9IF9fcDI7IFwKICBmbG9hdDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAxLCAwKTsgXAogIGZsb2F0MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDEsIDApOyBcCiAgZmxvYXQzMng0X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMiwgX19zMiwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92Zm1hX2xhbmVxX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgKGludDh4MTZfdClfX3JldjIsIF9fcDMsIDkpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF92Zm1hX2xhbmVxX2YzMihfX3AwLCBfX3AxLCBfX3AyLCBfX3AzKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0MzJ4Ml90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQzMng0X3QgX19zMiA9IF9fcDI7IFwKICBmbG9hdDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92Zm1hX2xhbmVxX3YoKGludDh4OF90KV9fczAsIChpbnQ4eDhfdClfX3MxLCAoaW50OHgxNl90KV9fczIsIF9fcDMsIDkpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDY0eDJfdCB2Zm1hcV9uX2Y2NChmbG9hdDY0eDJfdCBfX3AwLCBmbG9hdDY0eDJfdCBfX3AxLCBmbG9hdDY0X3QgX19wMikgewogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gdmZtYXFfZjY0KF9fcDAsIF9fcDEsIChmbG9hdDY0eDJfdCkge19fcDIsIF9fcDJ9KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDY0eDJfdCB2Zm1hcV9uX2Y2NChmbG9hdDY0eDJfdCBfX3AwLCBmbG9hdDY0eDJfdCBfX3AxLCBmbG9hdDY0X3QgX19wMikgewogIGZsb2F0NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdmZtYXFfZjY0KF9fcmV2MCwgX19yZXYxLCAoZmxvYXQ2NHgyX3QpIHtfX3AyLCBfX3AyfSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCl9fYWkgZmxvYXQ2NHgxX3QgdmZtYV9uX2Y2NChmbG9hdDY0eDFfdCBfX3AwLCBmbG9hdDY0eDFfdCBfX3AxLCBmbG9hdDY0X3QgX19wMikgewogIGZsb2F0NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gdmZtYV9mNjQoX19wMCwgX19wMSwgKGZsb2F0NjR4MV90KSB7X19wMn0pOwogIHJldHVybiBfX3JldDsKfQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDY0eDJfdCB2Zm1zcV9mNjQoZmxvYXQ2NHgyX3QgX19wMCwgZmxvYXQ2NHgyX3QgX19wMSwgZmxvYXQ2NHgyX3QgX19wMikgewogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gdmZtYXFfZjY0KF9fcDAsIC1fX3AxLCBfX3AyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDY0eDJfdCB2Zm1zcV9mNjQoZmxvYXQ2NHgyX3QgX19wMCwgZmxvYXQ2NHgyX3QgX19wMSwgZmxvYXQ2NHgyX3QgX19wMikgewogIGZsb2F0NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGZsb2F0NjR4Ml90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDEsIDApOwogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdmZtYXFfZjY0KF9fcmV2MCwgLV9fcmV2MSwgX19yZXYyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKX19haSBmbG9hdDY0eDFfdCB2Zm1zX2Y2NChmbG9hdDY0eDFfdCBfX3AwLCBmbG9hdDY0eDFfdCBfX3AxLCBmbG9hdDY0eDFfdCBfX3AyKSB7CiAgZmxvYXQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSB2Zm1hX2Y2NChfX3AwLCAtX19wMSwgX19wMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNkZWZpbmUgdmZtc2RfbGFuZV9mNjQoX19wMF80OTMsIF9fcDFfNDkzLCBfX3AyXzQ5MywgX19wM180OTMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjRfdCBfX3MwXzQ5MyA9IF9fcDBfNDkzOyBcCiAgZmxvYXQ2NF90IF9fczFfNDkzID0gX19wMV80OTM7IFwKICBmbG9hdDY0eDFfdCBfX3MyXzQ5MyA9IF9fcDJfNDkzOyBcCiAgZmxvYXQ2NF90IF9fcmV0XzQ5MzsgXAogIF9fcmV0XzQ5MyA9IHZmbWFkX2xhbmVfZjY0KF9fczBfNDkzLCAtX19zMV80OTMsIF9fczJfNDkzLCBfX3AzXzQ5Myk7IFwKICBfX3JldF80OTM7IFwKfSkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmZtc3NfbGFuZV9mMzIoX19wMF80OTQsIF9fcDFfNDk0LCBfX3AyXzQ5NCwgX19wM180OTQpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJfdCBfX3MwXzQ5NCA9IF9fcDBfNDk0OyBcCiAgZmxvYXQzMl90IF9fczFfNDk0ID0gX19wMV80OTQ7IFwKICBmbG9hdDMyeDJfdCBfX3MyXzQ5NCA9IF9fcDJfNDk0OyBcCiAgZmxvYXQzMl90IF9fcmV0XzQ5NDsgXAogIF9fcmV0XzQ5NCA9IHZmbWFzX2xhbmVfZjMyKF9fczBfNDk0LCAtX19zMV80OTQsIF9fczJfNDk0LCBfX3AzXzQ5NCk7IFwKICBfX3JldF80OTQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Zm1zc19sYW5lX2YzMihfX3AwXzQ5NSwgX19wMV80OTUsIF9fcDJfNDk1LCBfX3AzXzQ5NSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMl90IF9fczBfNDk1ID0gX19wMF80OTU7IFwKICBmbG9hdDMyX3QgX19zMV80OTUgPSBfX3AxXzQ5NTsgXAogIGZsb2F0MzJ4Ml90IF9fczJfNDk1ID0gX19wMl80OTU7IFwKICBmbG9hdDMyeDJfdCBfX3JldjJfNDk1OyAgX19yZXYyXzQ5NSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfNDk1LCBfX3MyXzQ5NSwgMSwgMCk7IFwKICBmbG9hdDMyX3QgX19yZXRfNDk1OyBcCiAgX19yZXRfNDk1ID0gX19ub3N3YXBfdmZtYXNfbGFuZV9mMzIoX19zMF80OTUsIC1fX3MxXzQ5NSwgX19yZXYyXzQ5NSwgX19wM180OTUpOyBcCiAgX19yZXRfNDk1OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmZtc3FfbGFuZV9mNjQoX19wMF80OTYsIF9fcDFfNDk2LCBfX3AyXzQ5NiwgX19wM180OTYpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4Ml90IF9fczBfNDk2ID0gX19wMF80OTY7IFwKICBmbG9hdDY0eDJfdCBfX3MxXzQ5NiA9IF9fcDFfNDk2OyBcCiAgZmxvYXQ2NHgxX3QgX19zMl80OTYgPSBfX3AyXzQ5NjsgXAogIGZsb2F0NjR4Ml90IF9fcmV0XzQ5NjsgXAogIF9fcmV0XzQ5NiA9IHZmbWFxX2xhbmVfZjY0KF9fczBfNDk2LCAtX19zMV80OTYsIF9fczJfNDk2LCBfX3AzXzQ5Nik7IFwKICBfX3JldF80OTY7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Zm1zcV9sYW5lX2Y2NChfX3AwXzQ5NywgX19wMV80OTcsIF9fcDJfNDk3LCBfX3AzXzQ5NykgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgyX3QgX19zMF80OTcgPSBfX3AwXzQ5NzsgXAogIGZsb2F0NjR4Ml90IF9fczFfNDk3ID0gX19wMV80OTc7IFwKICBmbG9hdDY0eDFfdCBfX3MyXzQ5NyA9IF9fcDJfNDk3OyBcCiAgZmxvYXQ2NHgyX3QgX19yZXYwXzQ5NzsgIF9fcmV2MF80OTcgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzQ5NywgX19zMF80OTcsIDEsIDApOyBcCiAgZmxvYXQ2NHgyX3QgX19yZXYxXzQ5NzsgIF9fcmV2MV80OTcgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzQ5NywgX19zMV80OTcsIDEsIDApOyBcCiAgZmxvYXQ2NHgyX3QgX19yZXRfNDk3OyBcCiAgX19yZXRfNDk3ID0gX19ub3N3YXBfdmZtYXFfbGFuZV9mNjQoX19yZXYwXzQ5NywgLV9fcmV2MV80OTcsIF9fczJfNDk3LCBfX3AzXzQ5Nyk7IFwKICBfX3JldF80OTcgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF80OTcsIF9fcmV0XzQ5NywgMSwgMCk7IFwKICBfX3JldF80OTc7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Zm1zcV9sYW5lX2YzMihfX3AwXzQ5OCwgX19wMV80OTgsIF9fcDJfNDk4LCBfX3AzXzQ5OCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0X3QgX19zMF80OTggPSBfX3AwXzQ5ODsgXAogIGZsb2F0MzJ4NF90IF9fczFfNDk4ID0gX19wMV80OTg7IFwKICBmbG9hdDMyeDJfdCBfX3MyXzQ5OCA9IF9fcDJfNDk4OyBcCiAgZmxvYXQzMng0X3QgX19yZXRfNDk4OyBcCiAgX19yZXRfNDk4ID0gdmZtYXFfbGFuZV9mMzIoX19zMF80OTgsIC1fX3MxXzQ5OCwgX19zMl80OTgsIF9fcDNfNDk4KTsgXAogIF9fcmV0XzQ5ODsgXAp9KQojZWxzZQojZGVmaW5lIHZmbXNxX2xhbmVfZjMyKF9fcDBfNDk5LCBfX3AxXzQ5OSwgX19wMl80OTksIF9fcDNfNDk5KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDRfdCBfX3MwXzQ5OSA9IF9fcDBfNDk5OyBcCiAgZmxvYXQzMng0X3QgX19zMV80OTkgPSBfX3AxXzQ5OTsgXAogIGZsb2F0MzJ4Ml90IF9fczJfNDk5ID0gX19wMl80OTk7IFwKICBmbG9hdDMyeDRfdCBfX3JldjBfNDk5OyAgX19yZXYwXzQ5OSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNDk5LCBfX3MwXzQ5OSwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDMyeDRfdCBfX3JldjFfNDk5OyAgX19yZXYxXzQ5OSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNDk5LCBfX3MxXzQ5OSwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDMyeDJfdCBfX3JldjJfNDk5OyAgX19yZXYyXzQ5OSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfNDk5LCBfX3MyXzQ5OSwgMSwgMCk7IFwKICBmbG9hdDMyeDRfdCBfX3JldF80OTk7IFwKICBfX3JldF80OTkgPSBfX25vc3dhcF92Zm1hcV9sYW5lX2YzMihfX3JldjBfNDk5LCAtX19yZXYxXzQ5OSwgX19yZXYyXzQ5OSwgX19wM180OTkpOyBcCiAgX19yZXRfNDk5ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNDk5LCBfX3JldF80OTksIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfNDk5OyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2Zm1zX2xhbmVfZjY0KF9fcDBfNTAwLCBfX3AxXzUwMCwgX19wMl81MDAsIF9fcDNfNTAwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDFfdCBfX3MwXzUwMCA9IF9fcDBfNTAwOyBcCiAgZmxvYXQ2NHgxX3QgX19zMV81MDAgPSBfX3AxXzUwMDsgXAogIGZsb2F0NjR4MV90IF9fczJfNTAwID0gX19wMl81MDA7IFwKICBmbG9hdDY0eDFfdCBfX3JldF81MDA7IFwKICBfX3JldF81MDAgPSB2Zm1hX2xhbmVfZjY0KF9fczBfNTAwLCAtX19zMV81MDAsIF9fczJfNTAwLCBfX3AzXzUwMCk7IFwKICBfX3JldF81MDA7IFwKfSkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmZtc19sYW5lX2YzMihfX3AwXzUwMSwgX19wMV81MDEsIF9fcDJfNTAxLCBfX3AzXzUwMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMngyX3QgX19zMF81MDEgPSBfX3AwXzUwMTsgXAogIGZsb2F0MzJ4Ml90IF9fczFfNTAxID0gX19wMV81MDE7IFwKICBmbG9hdDMyeDJfdCBfX3MyXzUwMSA9IF9fcDJfNTAxOyBcCiAgZmxvYXQzMngyX3QgX19yZXRfNTAxOyBcCiAgX19yZXRfNTAxID0gdmZtYV9sYW5lX2YzMihfX3MwXzUwMSwgLV9fczFfNTAxLCBfX3MyXzUwMSwgX19wM181MDEpOyBcCiAgX19yZXRfNTAxOyBcCn0pCiNlbHNlCiNkZWZpbmUgdmZtc19sYW5lX2YzMihfX3AwXzUwMiwgX19wMV81MDIsIF9fcDJfNTAyLCBfX3AzXzUwMikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMngyX3QgX19zMF81MDIgPSBfX3AwXzUwMjsgXAogIGZsb2F0MzJ4Ml90IF9fczFfNTAyID0gX19wMV81MDI7IFwKICBmbG9hdDMyeDJfdCBfX3MyXzUwMiA9IF9fcDJfNTAyOyBcCiAgZmxvYXQzMngyX3QgX19yZXYwXzUwMjsgIF9fcmV2MF81MDIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzUwMiwgX19zMF81MDIsIDEsIDApOyBcCiAgZmxvYXQzMngyX3QgX19yZXYxXzUwMjsgIF9fcmV2MV81MDIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzUwMiwgX19zMV81MDIsIDEsIDApOyBcCiAgZmxvYXQzMngyX3QgX19yZXYyXzUwMjsgIF9fcmV2Ml81MDIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzUwMiwgX19zMl81MDIsIDEsIDApOyBcCiAgZmxvYXQzMngyX3QgX19yZXRfNTAyOyBcCiAgX19yZXRfNTAyID0gX19ub3N3YXBfdmZtYV9sYW5lX2YzMihfX3JldjBfNTAyLCAtX19yZXYxXzUwMiwgX19yZXYyXzUwMiwgX19wM181MDIpOyBcCiAgX19yZXRfNTAyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNTAyLCBfX3JldF81MDIsIDEsIDApOyBcCiAgX19yZXRfNTAyOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmZtc2RfbGFuZXFfZjY0KF9fcDBfNTAzLCBfX3AxXzUwMywgX19wMl81MDMsIF9fcDNfNTAzKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0X3QgX19zMF81MDMgPSBfX3AwXzUwMzsgXAogIGZsb2F0NjRfdCBfX3MxXzUwMyA9IF9fcDFfNTAzOyBcCiAgZmxvYXQ2NHgyX3QgX19zMl81MDMgPSBfX3AyXzUwMzsgXAogIGZsb2F0NjRfdCBfX3JldF81MDM7IFwKICBfX3JldF81MDMgPSB2Zm1hZF9sYW5lcV9mNjQoX19zMF81MDMsIC1fX3MxXzUwMywgX19zMl81MDMsIF9fcDNfNTAzKTsgXAogIF9fcmV0XzUwMzsgXAp9KQojZWxzZQojZGVmaW5lIHZmbXNkX2xhbmVxX2Y2NChfX3AwXzUwNCwgX19wMV81MDQsIF9fcDJfNTA0LCBfX3AzXzUwNCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NF90IF9fczBfNTA0ID0gX19wMF81MDQ7IFwKICBmbG9hdDY0X3QgX19zMV81MDQgPSBfX3AxXzUwNDsgXAogIGZsb2F0NjR4Ml90IF9fczJfNTA0ID0gX19wMl81MDQ7IFwKICBmbG9hdDY0eDJfdCBfX3JldjJfNTA0OyAgX19yZXYyXzUwNCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfNTA0LCBfX3MyXzUwNCwgMSwgMCk7IFwKICBmbG9hdDY0X3QgX19yZXRfNTA0OyBcCiAgX19yZXRfNTA0ID0gX19ub3N3YXBfdmZtYWRfbGFuZXFfZjY0KF9fczBfNTA0LCAtX19zMV81MDQsIF9fcmV2Ml81MDQsIF9fcDNfNTA0KTsgXAogIF9fcmV0XzUwNDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZmbXNzX2xhbmVxX2YzMihfX3AwXzUwNSwgX19wMV81MDUsIF9fcDJfNTA1LCBfX3AzXzUwNSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMl90IF9fczBfNTA1ID0gX19wMF81MDU7IFwKICBmbG9hdDMyX3QgX19zMV81MDUgPSBfX3AxXzUwNTsgXAogIGZsb2F0MzJ4NF90IF9fczJfNTA1ID0gX19wMl81MDU7IFwKICBmbG9hdDMyX3QgX19yZXRfNTA1OyBcCiAgX19yZXRfNTA1ID0gdmZtYXNfbGFuZXFfZjMyKF9fczBfNTA1LCAtX19zMV81MDUsIF9fczJfNTA1LCBfX3AzXzUwNSk7IFwKICBfX3JldF81MDU7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Zm1zc19sYW5lcV9mMzIoX19wMF81MDYsIF9fcDFfNTA2LCBfX3AyXzUwNiwgX19wM181MDYpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJfdCBfX3MwXzUwNiA9IF9fcDBfNTA2OyBcCiAgZmxvYXQzMl90IF9fczFfNTA2ID0gX19wMV81MDY7IFwKICBmbG9hdDMyeDRfdCBfX3MyXzUwNiA9IF9fcDJfNTA2OyBcCiAgZmxvYXQzMng0X3QgX19yZXYyXzUwNjsgIF9fcmV2Ml81MDYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzUwNiwgX19zMl81MDYsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQzMl90IF9fcmV0XzUwNjsgXAogIF9fcmV0XzUwNiA9IF9fbm9zd2FwX3ZmbWFzX2xhbmVxX2YzMihfX3MwXzUwNiwgLV9fczFfNTA2LCBfX3JldjJfNTA2LCBfX3AzXzUwNik7IFwKICBfX3JldF81MDY7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Zm1zcV9sYW5lcV9mNjQoX19wMF81MDcsIF9fcDFfNTA3LCBfX3AyXzUwNywgX19wM181MDcpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4Ml90IF9fczBfNTA3ID0gX19wMF81MDc7IFwKICBmbG9hdDY0eDJfdCBfX3MxXzUwNyA9IF9fcDFfNTA3OyBcCiAgZmxvYXQ2NHgyX3QgX19zMl81MDcgPSBfX3AyXzUwNzsgXAogIGZsb2F0NjR4Ml90IF9fcmV0XzUwNzsgXAogIF9fcmV0XzUwNyA9IHZmbWFxX2xhbmVxX2Y2NChfX3MwXzUwNywgLV9fczFfNTA3LCBfX3MyXzUwNywgX19wM181MDcpOyBcCiAgX19yZXRfNTA3OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmZtc3FfbGFuZXFfZjY0KF9fcDBfNTA4LCBfX3AxXzUwOCwgX19wMl81MDgsIF9fcDNfNTA4KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDJfdCBfX3MwXzUwOCA9IF9fcDBfNTA4OyBcCiAgZmxvYXQ2NHgyX3QgX19zMV81MDggPSBfX3AxXzUwODsgXAogIGZsb2F0NjR4Ml90IF9fczJfNTA4ID0gX19wMl81MDg7IFwKICBmbG9hdDY0eDJfdCBfX3JldjBfNTA4OyAgX19yZXYwXzUwOCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNTA4LCBfX3MwXzUwOCwgMSwgMCk7IFwKICBmbG9hdDY0eDJfdCBfX3JldjFfNTA4OyAgX19yZXYxXzUwOCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNTA4LCBfX3MxXzUwOCwgMSwgMCk7IFwKICBmbG9hdDY0eDJfdCBfX3JldjJfNTA4OyAgX19yZXYyXzUwOCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfNTA4LCBfX3MyXzUwOCwgMSwgMCk7IFwKICBmbG9hdDY0eDJfdCBfX3JldF81MDg7IFwKICBfX3JldF81MDggPSBfX25vc3dhcF92Zm1hcV9sYW5lcV9mNjQoX19yZXYwXzUwOCwgLV9fcmV2MV81MDgsIF9fcmV2Ml81MDgsIF9fcDNfNTA4KTsgXAogIF9fcmV0XzUwOCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzUwOCwgX19yZXRfNTA4LCAxLCAwKTsgXAogIF9fcmV0XzUwODsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZmbXNxX2xhbmVxX2YzMihfX3AwXzUwOSwgX19wMV81MDksIF9fcDJfNTA5LCBfX3AzXzUwOSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0X3QgX19zMF81MDkgPSBfX3AwXzUwOTsgXAogIGZsb2F0MzJ4NF90IF9fczFfNTA5ID0gX19wMV81MDk7IFwKICBmbG9hdDMyeDRfdCBfX3MyXzUwOSA9IF9fcDJfNTA5OyBcCiAgZmxvYXQzMng0X3QgX19yZXRfNTA5OyBcCiAgX19yZXRfNTA5ID0gdmZtYXFfbGFuZXFfZjMyKF9fczBfNTA5LCAtX19zMV81MDksIF9fczJfNTA5LCBfX3AzXzUwOSk7IFwKICBfX3JldF81MDk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Zm1zcV9sYW5lcV9mMzIoX19wMF81MTAsIF9fcDFfNTEwLCBfX3AyXzUxMCwgX19wM181MTApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NF90IF9fczBfNTEwID0gX19wMF81MTA7IFwKICBmbG9hdDMyeDRfdCBfX3MxXzUxMCA9IF9fcDFfNTEwOyBcCiAgZmxvYXQzMng0X3QgX19zMl81MTAgPSBfX3AyXzUxMDsgXAogIGZsb2F0MzJ4NF90IF9fcmV2MF81MTA7ICBfX3JldjBfNTEwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF81MTAsIF9fczBfNTEwLCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MzJ4NF90IF9fcmV2MV81MTA7ICBfX3JldjFfNTEwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV81MTAsIF9fczFfNTEwLCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MzJ4NF90IF9fcmV2Ml81MTA7ICBfX3JldjJfNTEwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl81MTAsIF9fczJfNTEwLCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MzJ4NF90IF9fcmV0XzUxMDsgXAogIF9fcmV0XzUxMCA9IF9fbm9zd2FwX3ZmbWFxX2xhbmVxX2YzMihfX3JldjBfNTEwLCAtX19yZXYxXzUxMCwgX19yZXYyXzUxMCwgX19wM181MTApOyBcCiAgX19yZXRfNTEwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNTEwLCBfX3JldF81MTAsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfNTEwOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmZtc19sYW5lcV9mNjQoX19wMF81MTEsIF9fcDFfNTExLCBfX3AyXzUxMSwgX19wM181MTEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4MV90IF9fczBfNTExID0gX19wMF81MTE7IFwKICBmbG9hdDY0eDFfdCBfX3MxXzUxMSA9IF9fcDFfNTExOyBcCiAgZmxvYXQ2NHgyX3QgX19zMl81MTEgPSBfX3AyXzUxMTsgXAogIGZsb2F0NjR4MV90IF9fcmV0XzUxMTsgXAogIF9fcmV0XzUxMSA9IHZmbWFfbGFuZXFfZjY0KF9fczBfNTExLCAtX19zMV81MTEsIF9fczJfNTExLCBfX3AzXzUxMSk7IFwKICBfX3JldF81MTE7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Zm1zX2xhbmVxX2Y2NChfX3AwXzUxMiwgX19wMV81MTIsIF9fcDJfNTEyLCBfX3AzXzUxMikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgxX3QgX19zMF81MTIgPSBfX3AwXzUxMjsgXAogIGZsb2F0NjR4MV90IF9fczFfNTEyID0gX19wMV81MTI7IFwKICBmbG9hdDY0eDJfdCBfX3MyXzUxMiA9IF9fcDJfNTEyOyBcCiAgZmxvYXQ2NHgyX3QgX19yZXYyXzUxMjsgIF9fcmV2Ml81MTIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzUxMiwgX19zMl81MTIsIDEsIDApOyBcCiAgZmxvYXQ2NHgxX3QgX19yZXRfNTEyOyBcCiAgX19yZXRfNTEyID0gX19ub3N3YXBfdmZtYV9sYW5lcV9mNjQoX19zMF81MTIsIC1fX3MxXzUxMiwgX19yZXYyXzUxMiwgX19wM181MTIpOyBcCiAgX19yZXRfNTEyOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmZtc19sYW5lcV9mMzIoX19wMF81MTMsIF9fcDFfNTEzLCBfX3AyXzUxMywgX19wM181MTMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4Ml90IF9fczBfNTEzID0gX19wMF81MTM7IFwKICBmbG9hdDMyeDJfdCBfX3MxXzUxMyA9IF9fcDFfNTEzOyBcCiAgZmxvYXQzMng0X3QgX19zMl81MTMgPSBfX3AyXzUxMzsgXAogIGZsb2F0MzJ4Ml90IF9fcmV0XzUxMzsgXAogIF9fcmV0XzUxMyA9IHZmbWFfbGFuZXFfZjMyKF9fczBfNTEzLCAtX19zMV81MTMsIF9fczJfNTEzLCBfX3AzXzUxMyk7IFwKICBfX3JldF81MTM7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Zm1zX2xhbmVxX2YzMihfX3AwXzUxNCwgX19wMV81MTQsIF9fcDJfNTE0LCBfX3AzXzUxNCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMngyX3QgX19zMF81MTQgPSBfX3AwXzUxNDsgXAogIGZsb2F0MzJ4Ml90IF9fczFfNTE0ID0gX19wMV81MTQ7IFwKICBmbG9hdDMyeDRfdCBfX3MyXzUxNCA9IF9fcDJfNTE0OyBcCiAgZmxvYXQzMngyX3QgX19yZXYwXzUxNDsgIF9fcmV2MF81MTQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzUxNCwgX19zMF81MTQsIDEsIDApOyBcCiAgZmxvYXQzMngyX3QgX19yZXYxXzUxNDsgIF9fcmV2MV81MTQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzUxNCwgX19zMV81MTQsIDEsIDApOyBcCiAgZmxvYXQzMng0X3QgX19yZXYyXzUxNDsgIF9fcmV2Ml81MTQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzUxNCwgX19zMl81MTQsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQzMngyX3QgX19yZXRfNTE0OyBcCiAgX19yZXRfNTE0ID0gX19ub3N3YXBfdmZtYV9sYW5lcV9mMzIoX19yZXYwXzUxNCwgLV9fcmV2MV81MTQsIF9fcmV2Ml81MTQsIF9fcDNfNTE0KTsgXAogIF9fcmV0XzUxNCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzUxNCwgX19yZXRfNTE0LCAxLCAwKTsgXAogIF9fcmV0XzUxNDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0NjR4Ml90IHZmbXNxX25fZjY0KGZsb2F0NjR4Ml90IF9fcDAsIGZsb2F0NjR4Ml90IF9fcDEsIGZsb2F0NjRfdCBfX3AyKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSB2Zm1hcV9mNjQoX19wMCwgLV9fcDEsIChmbG9hdDY0eDJfdCkge19fcDIsIF9fcDJ9KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDY0eDJfdCB2Zm1zcV9uX2Y2NChmbG9hdDY0eDJfdCBfX3AwLCBmbG9hdDY0eDJfdCBfX3AxLCBmbG9hdDY0X3QgX19wMikgewogIGZsb2F0NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdmZtYXFfZjY0KF9fcmV2MCwgLV9fcmV2MSwgKGZsb2F0NjR4Ml90KSB7X19wMiwgX19wMn0pOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDRfdCB2Zm1zcV9uX2YzMihmbG9hdDMyeDRfdCBfX3AwLCBmbG9hdDMyeDRfdCBfX3AxLCBmbG9hdDMyX3QgX19wMikgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gdmZtYXFfZjMyKF9fcDAsIC1fX3AxLCAoZmxvYXQzMng0X3QpIHtfX3AyLCBfX3AyLCBfX3AyLCBfX3AyfSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMng0X3QgdmZtc3Ffbl9mMzIoZmxvYXQzMng0X3QgX19wMCwgZmxvYXQzMng0X3QgX19wMSwgZmxvYXQzMl90IF9fcDIpIHsKICBmbG9hdDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3ZmbWFxX2YzMihfX3JldjAsIC1fX3JldjEsIChmbG9hdDMyeDRfdCkge19fcDIsIF9fcDIsIF9fcDIsIF9fcDJ9KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKX19haSBmbG9hdDY0eDFfdCB2Zm1zX25fZjY0KGZsb2F0NjR4MV90IF9fcDAsIGZsb2F0NjR4MV90IF9fcDEsIGZsb2F0NjRfdCBfX3AyKSB7CiAgZmxvYXQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSB2Zm1hX2Y2NChfX3AwLCAtX19wMSwgKGZsb2F0NjR4MV90KSB7X19wMn0pOwogIHJldHVybiBfX3JldDsKfQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDJfdCB2Zm1zX25fZjMyKGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0MzJ4Ml90IF9fcDEsIGZsb2F0MzJfdCBfX3AyKSB7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSB2Zm1hX2YzMihfX3AwLCAtX19wMSwgKGZsb2F0MzJ4Ml90KSB7X19wMiwgX19wMn0pOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4Ml90IHZmbXNfbl9mMzIoZmxvYXQzMngyX3QgX19wMCwgZmxvYXQzMngyX3QgX19wMSwgZmxvYXQzMl90IF9fcDIpIHsKICBmbG9hdDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3ZmbWFfZjMyKF9fcmV2MCwgLV9fcmV2MSwgKGZsb2F0MzJ4Ml90KSB7X19wMiwgX19wMn0pOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBwb2x5NjR4MV90IHZnZXRfaGlnaF9wNjQocG9seTY0eDJfdCBfX3AwKSB7CiAgcG9seTY0eDFfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHBvbHk2NHgxX3QgdmdldF9oaWdoX3A2NChwb2x5NjR4Ml90IF9fcDApIHsKICBwb2x5NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHBvbHk2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MCwgMSk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgcG9seTY0eDFfdCBfX25vc3dhcF92Z2V0X2hpZ2hfcDY0KHBvbHk2NHgyX3QgX19wMCkgewogIHBvbHk2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDY0eDFfdCB2Z2V0X2hpZ2hfZjY0KGZsb2F0NjR4Ml90IF9fcDApIHsKICBmbG9hdDY0eDFfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0NjR4MV90IHZnZXRfaGlnaF9mNjQoZmxvYXQ2NHgyX3QgX19wMCkgewogIGZsb2F0NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjAsIDEpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNkZWZpbmUgdmdldF9sYW5lX3A2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5NjR4MV90IF9fczAgPSBfX3AwOyBcCiAgcG9seTY0X3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5NjRfdCkgX19idWlsdGluX25lb25fdmdldF9sYW5lX2k2NCgocG9seTY0eDFfdClfX3MwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZnZXRxX2xhbmVfcDY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk2NHgyX3QgX19zMCA9IF9fcDA7IFwKICBwb2x5NjRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHBvbHk2NF90KSBfX2J1aWx0aW5fbmVvbl92Z2V0cV9sYW5lX2k2NCgocG9seTY0eDJfdClfX3MwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmdldHFfbGFuZV9wNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTY0eDJfdCBfX3MwID0gX19wMDsgXAogIHBvbHk2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMSwgMCk7IFwKICBwb2x5NjRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHBvbHk2NF90KSBfX2J1aWx0aW5fbmVvbl92Z2V0cV9sYW5lX2k2NCgocG9seTY0eDJfdClfX3JldjAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF92Z2V0cV9sYW5lX3A2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5NjR4Ml90IF9fczAgPSBfX3AwOyBcCiAgcG9seTY0X3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5NjRfdCkgX19idWlsdGluX25lb25fdmdldHFfbGFuZV9pNjQoKHBvbHk2NHgyX3QpX19zMCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZnZXRxX2xhbmVfZjY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4Ml90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQ2NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoZmxvYXQ2NF90KSBfX2J1aWx0aW5fbmVvbl92Z2V0cV9sYW5lX2Y2NCgoZmxvYXQ2NHgyX3QpX19zMCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZnZXRxX2xhbmVfZjY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4Ml90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMSwgMCk7IFwKICBmbG9hdDY0X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZnZXRxX2xhbmVfZjY0KChmbG9hdDY0eDJfdClfX3JldjAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF92Z2V0cV9sYW5lX2Y2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDJfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0NjRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0NjRfdCkgX19idWlsdGluX25lb25fdmdldHFfbGFuZV9mNjQoKGZsb2F0NjR4Ml90KV9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojZGVmaW5lIHZnZXRfbGFuZV9mNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgxX3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDY0X3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZnZXRfbGFuZV9mNjQoKGZsb2F0NjR4MV90KV9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgcG9seTY0eDFfdCB2Z2V0X2xvd19wNjQocG9seTY0eDJfdCBfX3AwKSB7CiAgcG9seTY0eDFfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHBvbHk2NHgxX3QgdmdldF9sb3dfcDY0KHBvbHk2NHgyX3QgX19wMCkgewogIHBvbHk2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgcG9seTY0eDFfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYwLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDY0eDFfdCB2Z2V0X2xvd19mNjQoZmxvYXQ2NHgyX3QgX19wMCkgewogIGZsb2F0NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQ2NHgxX3QgdmdldF9sb3dfZjY0KGZsb2F0NjR4Ml90IF9fcDApIHsKICBmbG9hdDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDY0eDFfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYwLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojZGVmaW5lIHZsZDFfcDY0KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk2NHgxX3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92bGQxX3YoX19wMCwgNik7IFwKICBfX3JldDsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxcV9wNjQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKHBvbHk2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3YoX19wMCwgMzgpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxcV9wNjQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKHBvbHk2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3YoX19wMCwgMzgpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxcV9mNjQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDY0eDJfdCkgX19idWlsdGluX25lb25fdmxkMXFfdihfX3AwLCA0Mik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFxX2Y2NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92bGQxcV92KF9fcDAsIDQyKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2bGQxX2Y2NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDFfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92bGQxX3YoX19wMCwgMTApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2bGQxX2R1cF9wNjQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTY0eDFfdCBfX3JldDsgXAogIF9fcmV0ID0gKHBvbHk2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFfZHVwX3YoX19wMCwgNik7IFwKICBfX3JldDsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxcV9kdXBfcDY0KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92bGQxcV9kdXBfdihfX3AwLCAzOCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFxX2R1cF9wNjQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKHBvbHk2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX2R1cF92KF9fcDAsIDM4KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMXFfZHVwX2Y2NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92bGQxcV9kdXBfdihfX3AwLCA0Mik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFxX2R1cF9mNjQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDY0eDJfdCkgX19idWlsdGluX25lb25fdmxkMXFfZHVwX3YoX19wMCwgNDIpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojZGVmaW5lIHZsZDFfZHVwX2Y2NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDFfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92bGQxX2R1cF92KF9fcDAsIDEwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdmxkMV9sYW5lX3A2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5NjR4MV90IF9fczEgPSBfX3AxOyBcCiAgcG9seTY0eDFfdCBfX3JldDsgXAogIF9fcmV0ID0gKHBvbHk2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3ZsZDFfbGFuZV92KF9fcDAsIChpbnQ4eDhfdClfX3MxLCBfX3AyLCA2KTsgXAogIF9fcmV0OyBcCn0pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFxX2xhbmVfcDY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk2NHgyX3QgX19zMSA9IF9fcDE7IFwKICBwb2x5NjR4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAocG9seTY0eDJfdCkgX19idWlsdGluX25lb25fdmxkMXFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19zMSwgX19wMiwgMzgpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxcV9sYW5lX3A2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5NjR4Ml90IF9fczEgPSBfX3AxOyBcCiAgcG9seTY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAxLCAwKTsgXAogIHBvbHk2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92bGQxcV9sYW5lX3YoX19wMCwgKGludDh4MTZfdClfX3JldjEsIF9fcDIsIDM4KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMXFfbGFuZV9mNjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgyX3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92bGQxcV9sYW5lX3YoX19wMCwgKGludDh4MTZfdClfX3MxLCBfX3AyLCA0Mik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFxX2xhbmVfZjY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4Ml90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMSwgMCk7IFwKICBmbG9hdDY0eDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92bGQxcV9sYW5lX3YoX19wMCwgKGludDh4MTZfdClfX3JldjEsIF9fcDIsIDQyKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2bGQxX2xhbmVfZjY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4MV90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQ2NHgxX3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDY0eDFfdCkgX19idWlsdGluX25lb25fdmxkMV9sYW5lX3YoX19wMCwgKGludDh4OF90KV9fczEsIF9fcDIsIDEwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdmxkMV9wNjRfeDIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTY0eDF4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMV94Ml92KCZfX3JldCwgX19wMCwgNik7IFwKICBfX3JldDsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxcV9wNjRfeDIoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTY0eDJ4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMXFfeDJfdigmX19yZXQsIF9fcDAsIDM4KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMXFfcDY0X3gyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk2NHgyeDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3gyX3YoJl9fcmV0LCBfX3AwLCAzOCk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFxX2Y2NF94MihfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDJ4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMXFfeDJfdigmX19yZXQsIF9fcDAsIDQyKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMXFfZjY0X3gyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4MngyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxcV94Ml92KCZfX3JldCwgX19wMCwgNDIpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojZGVmaW5lIHZsZDFfZjY0X3gyKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4MXgyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxX3gyX3YoJl9fcmV0LCBfX3AwLCAxMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZsZDFfcDY0X3gzKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk2NHgxeDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFfeDNfdigmX19yZXQsIF9fcDAsIDYpOyBcCiAgX19yZXQ7IFwKfSkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMXFfcDY0X3gzKF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk2NHgyeDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3gzX3YoJl9fcmV0LCBfX3AwLCAzOCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFxX3A2NF94MyhfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5NjR4MngzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxcV94M192KCZfX3JldCwgX19wMCwgMzgpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQxcV9mNjRfeDMoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgyeDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3gzX3YoJl9fcmV0LCBfX3AwLCA0Mik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDFxX2Y2NF94MyhfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDJ4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMXFfeDNfdigmX19yZXQsIF9fcDAsIDQyKTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2bGQxX2Y2NF94MyhfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDF4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMV94M192KCZfX3JldCwgX19wMCwgMTApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2bGQxX3A2NF94NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5NjR4MXg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxX3g0X3YoJl9fcmV0LCBfX3AwLCA2KTsgXAogIF9fcmV0OyBcCn0pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDFxX3A2NF94NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5NjR4Mng0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxcV94NF92KCZfX3JldCwgX19wMCwgMzgpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxcV9wNjRfeDQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTY0eDJ4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMXFfeDRfdigmX19yZXQsIF9fcDAsIDM4KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFszXSwgX19yZXQudmFsWzNdLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMXFfZjY0X3g0KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4Mng0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQxcV94NF92KCZfX3JldCwgX19wMCwgNDIpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQxcV9mNjRfeDQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgyeDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFxX3g0X3YoJl9fcmV0LCBfX3AwLCA0Mik7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMSwgMCk7IFwKICBfX3JldC52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbM10sIF9fcmV0LnZhbFszXSwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNkZWZpbmUgdmxkMV9mNjRfeDQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgxeDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDFfeDRfdigmX19yZXQsIF9fcDAsIDEwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdmxkMl9wNjQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTY0eDF4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMl92KCZfX3JldCwgX19wMCwgNik7IFwKICBfX3JldDsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQycV9wNjQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTY0eDJ4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMnFfdigmX19yZXQsIF9fcDAsIDM4KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMnFfcDY0KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk2NHgyeDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJxX3YoJl9fcmV0LCBfX3AwLCAzOCk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDJxX3U2NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4MngyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQycV92KCZfX3JldCwgX19wMCwgNTEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQycV91NjQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDJ4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMnFfdigmX19yZXQsIF9fcDAsIDUxKTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkMnFfZjY0KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4MngyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQycV92KCZfX3JldCwgX19wMCwgNDIpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQycV9mNjQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgyeDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJxX3YoJl9fcmV0LCBfX3AwLCA0Mik7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDJxX3M2NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgyeDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJxX3YoJl9fcmV0LCBfX3AwLCAzNSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDJxX3M2NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgyeDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJxX3YoJl9fcmV0LCBfX3AwLCAzNSk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNkZWZpbmUgdmxkMl9mNjQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgxeDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJfdigmX19yZXQsIF9fcDAsIDEwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdmxkMl9kdXBfcDY0KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk2NHgxeDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJfZHVwX3YoJl9fcmV0LCBfX3AwLCA2KTsgXAogIF9fcmV0OyBcCn0pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDJxX2R1cF9wNjQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTY0eDJ4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMnFfZHVwX3YoJl9fcmV0LCBfX3AwLCAzOCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDJxX2R1cF9wNjQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTY0eDJ4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMnFfZHVwX3YoJl9fcmV0LCBfX3AwLCAzOCk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDJxX2R1cF9mNjQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgyeDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJxX2R1cF92KCZfX3JldCwgX19wMCwgNDIpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQycV9kdXBfZjY0KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4MngyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQycV9kdXBfdigmX19yZXQsIF9fcDAsIDQyKTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2bGQyX2R1cF9mNjQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgxeDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJfZHVwX3YoJl9fcmV0LCBfX3AwLCAxMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZsZDJfbGFuZV9wNjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTY0eDF4Ml90IF9fczEgPSBfX3AxOyBcCiAgcG9seTY0eDF4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMl9sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgX19wMiwgNik7IFwKICBfX3JldDsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQycV9sYW5lX3A4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4eDE2eDJfdCBfX3MxID0gX19wMTsgXAogIHBvbHk4eDE2eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJxX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIF9fcDIsIDM2KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMnFfbGFuZV9wOChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHgxNngyX3QgX19zMSA9IF9fcDE7IFwKICBwb2x5OHgxNngyX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHBvbHk4eDE2eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJxX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCBfX3AyLCAzNik7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDJxX2xhbmVfcDY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk2NHgyeDJfdCBfX3MxID0gX19wMTsgXAogIHBvbHk2NHgyeDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJxX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIF9fcDIsIDM4KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMnFfbGFuZV9wNjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTY0eDJ4Ml90IF9fczEgPSBfX3AxOyBcCiAgcG9seTY0eDJ4Ml90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMSwgMCk7IFwKICBwb2x5NjR4MngyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQycV9sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgX19wMiwgMzgpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQycV9sYW5lX3U4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDE2eDJfdCBfX3MxID0gX19wMTsgXAogIHVpbnQ4eDE2eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJxX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIF9fcDIsIDQ4KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMnFfbGFuZV91OChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHgxNngyX3QgX19zMSA9IF9fcDE7IFwKICB1aW50OHgxNngyX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQ4eDE2eDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJxX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCBfX3AyLCA0OCk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDJxX2xhbmVfdTY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyeDJfdCBfX3MxID0gX19wMTsgXAogIHVpbnQ2NHgyeDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJxX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIF9fcDIsIDUxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMnFfbGFuZV91NjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDJ4Ml90IF9fczEgPSBfX3AxOyBcCiAgdWludDY0eDJ4Ml90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMSwgMCk7IFwKICB1aW50NjR4MngyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQycV9sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgX19wMiwgNTEpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQycV9sYW5lX3M4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4MTZ4Ml90IF9fczEgPSBfX3AxOyBcCiAgaW50OHgxNngyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQycV9sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCBfX3AyLCAzMik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDJxX2xhbmVfczgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHgxNngyX3QgX19zMSA9IF9fcDE7IFwKICBpbnQ4eDE2eDJfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50OHgxNngyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQycV9sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgX19wMiwgMzIpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQycV9sYW5lX2Y2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDJ4Ml90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQ2NHgyeDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJxX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIF9fcDIsIDQyKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkMnFfbGFuZV9mNjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgyeDJfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0NjR4MngyX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAxLCAwKTsgXAogIGZsb2F0NjR4MngyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQycV9sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgX19wMiwgNDIpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQycV9sYW5lX3M2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgyeDJfdCBfX3MxID0gX19wMTsgXAogIGludDY0eDJ4Ml90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkMnFfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgX19wMiwgMzUpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQycV9sYW5lX3M2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgyeDJfdCBfX3MxID0gX19wMTsgXAogIGludDY0eDJ4Ml90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMSwgMCk7IFwKICBpbnQ2NHgyeDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJxX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCBfX3AyLCAzNSk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNkZWZpbmUgdmxkMl9sYW5lX3U2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4MXgyX3QgX19zMSA9IF9fcDE7IFwKICB1aW50NjR4MXgyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQyX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCBfX3AyLCAxOSk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZsZDJfbGFuZV9mNjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgxeDJfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0NjR4MXgyX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQyX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCBfX3AyLCAxMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZsZDJfbGFuZV9zNjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4MXgyX3QgX19zMSA9IF9fcDE7IFwKICBpbnQ2NHgxeDJfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDJfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIF9fcDIsIDMpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2bGQzX3A2NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5NjR4MXgzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzX3YoJl9fcmV0LCBfX3AwLCA2KTsgXAogIF9fcmV0OyBcCn0pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDNxX3A2NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5NjR4MngzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzcV92KCZfX3JldCwgX19wMCwgMzgpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQzcV9wNjQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTY0eDJ4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM3FfdigmX19yZXQsIF9fcDAsIDM4KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkM3FfdTY0KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyeDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNxX3YoJl9fcmV0LCBfX3AwLCA1MSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDNxX3U2NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4MngzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzcV92KCZfX3JldCwgX19wMCwgNTEpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQzcV9mNjQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgyeDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNxX3YoJl9fcmV0LCBfX3AwLCA0Mik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDNxX2Y2NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDJ4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM3FfdigmX19yZXQsIF9fcDAsIDQyKTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkM3FfczY0KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJ4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM3FfdigmX19yZXQsIF9fcDAsIDM1KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkM3FfczY0KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJ4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM3FfdigmX19yZXQsIF9fcDAsIDM1KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2bGQzX2Y2NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDF4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM192KCZfX3JldCwgX19wMCwgMTApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2bGQzX2R1cF9wNjQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTY0eDF4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM19kdXBfdigmX19yZXQsIF9fcDAsIDYpOyBcCiAgX19yZXQ7IFwKfSkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkM3FfZHVwX3A2NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5NjR4MngzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzcV9kdXBfdigmX19yZXQsIF9fcDAsIDM4KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkM3FfZHVwX3A2NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5NjR4MngzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzcV9kdXBfdigmX19yZXQsIF9fcDAsIDM4KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkM3FfZHVwX2Y2NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDJ4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM3FfZHVwX3YoJl9fcmV0LCBfX3AwLCA0Mik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDNxX2R1cF9mNjQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgyeDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNxX2R1cF92KCZfX3JldCwgX19wMCwgNDIpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojZGVmaW5lIHZsZDNfZHVwX2Y2NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDF4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM19kdXBfdigmX19yZXQsIF9fcDAsIDEwKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdmxkM19sYW5lX3A2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5NjR4MXgzX3QgX19zMSA9IF9fcDE7IFwKICBwb2x5NjR4MXgzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCAoaW50OHg4X3QpX19zMS52YWxbMl0sIF9fcDIsIDYpOyBcCiAgX19yZXQ7IFwKfSkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkM3FfbGFuZV9wOChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHgxNngzX3QgX19zMSA9IF9fcDE7IFwKICBwb2x5OHgxNngzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzcV9sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCBfX3AyLCAzNik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDNxX2xhbmVfcDgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4MTZ4M190IF9fczEgPSBfX3AxOyBcCiAgcG9seTh4MTZ4M190IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHBvbHk4eDE2eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNxX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMl0sIF9fcDIsIDM2KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkM3FfbGFuZV9wNjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTY0eDJ4M190IF9fczEgPSBfX3AxOyBcCiAgcG9seTY0eDJ4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM3FfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgKGludDh4MTZfdClfX3MxLnZhbFsyXSwgX19wMiwgMzgpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQzcV9sYW5lX3A2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5NjR4MngzX3QgX19zMSA9IF9fcDE7IFwKICBwb2x5NjR4MngzX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDEsIDApOyBcCiAgcG9seTY0eDJ4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM3FfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgX19wMiwgMzgpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQzcV9sYW5lX3U4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDE2eDNfdCBfX3MxID0gX19wMTsgXAogIHVpbnQ4eDE2eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNxX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIChpbnQ4eDE2X3QpX19zMS52YWxbMl0sIF9fcDIsIDQ4KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkM3FfbGFuZV91OChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHgxNngzX3QgX19zMSA9IF9fcDE7IFwKICB1aW50OHgxNngzX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDh4MTZ4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM3FfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgX19wMiwgNDgpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQzcV9sYW5lX3U2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4MngzX3QgX19zMSA9IF9fcDE7IFwKICB1aW50NjR4MngzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzcV9sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCBfX3AyLCA1MSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDNxX2xhbmVfdTY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyeDNfdCBfX3MxID0gX19wMTsgXAogIHVpbnQ2NHgyeDNfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgMSwgMCk7IFwKICB1aW50NjR4MngzX3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQzcV9sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgKGludDh4MTZfdClfX3JldjEudmFsWzJdLCBfX3AyLCA1MSk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDNxX2xhbmVfczgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHgxNngzX3QgX19zMSA9IF9fcDE7IFwKICBpbnQ4eDE2eDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNxX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIChpbnQ4eDE2X3QpX19zMS52YWxbMl0sIF9fcDIsIDMyKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkM3FfbGFuZV9zOChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDE2eDNfdCBfX3MxID0gX19wMTsgXAogIGludDh4MTZ4M190IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDh4MTZ4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM3FfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgX19wMiwgMzIpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQzcV9sYW5lX2Y2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDJ4M190IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQ2NHgyeDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNxX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIChpbnQ4eDE2X3QpX19zMS52YWxbMl0sIF9fcDIsIDQyKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkM3FfbGFuZV9mNjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgyeDNfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0NjR4MngzX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDEsIDApOyBcCiAgZmxvYXQ2NHgyeDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNxX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMl0sIF9fcDIsIDQyKTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkM3FfbGFuZV9zNjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4MngzX3QgX19zMSA9IF9fcDE7IFwKICBpbnQ2NHgyeDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNxX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIChpbnQ4eDE2X3QpX19zMS52YWxbMl0sIF9fcDIsIDM1KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkM3FfbGFuZV9zNjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4MngzX3QgX19zMSA9IF9fcDE7IFwKICBpbnQ2NHgyeDNfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgMSwgMCk7IFwKICBpbnQ2NHgyeDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNxX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMl0sIF9fcDIsIDM1KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2bGQzX2xhbmVfdTY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgxeDNfdCBfX3MxID0gX19wMTsgXAogIHVpbnQ2NHgxeDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIChpbnQ4eDhfdClfX3MxLnZhbFsyXSwgX19wMiwgMTkpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2bGQzX2xhbmVfZjY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4MXgzX3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDY0eDF4M190IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkM19sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgKGludDh4OF90KV9fczEudmFsWzJdLCBfX3AyLCAxMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZsZDNfbGFuZV9zNjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4MXgzX3QgX19zMSA9IF9fcDE7IFwKICBpbnQ2NHgxeDNfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDNfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIChpbnQ4eDhfdClfX3MxLnZhbFsyXSwgX19wMiwgMyk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZsZDRfcDY0KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk2NHgxeDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRfdigmX19yZXQsIF9fcDAsIDYpOyBcCiAgX19yZXQ7IFwKfSkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkNHFfcDY0KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk2NHgyeDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRxX3YoJl9fcmV0LCBfX3AwLCAzOCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDRxX3A2NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5NjR4Mng0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0cV92KCZfX3JldCwgX19wMCwgMzgpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDEsIDApOyBcCiAgX19yZXQudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzNdLCBfX3JldC52YWxbM10sIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQ0cV91NjQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDJ4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNHFfdigmX19yZXQsIF9fcDAsIDUxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkNHFfdTY0KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyeDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRxX3YoJl9fcmV0LCBfX3AwLCA1MSk7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMSwgMCk7IFwKICBfX3JldC52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbM10sIF9fcmV0LnZhbFszXSwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDRxX2Y2NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDJ4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNHFfdigmX19yZXQsIF9fcDAsIDQyKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkNHFfZjY0KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4Mng0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0cV92KCZfX3JldCwgX19wMCwgNDIpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDEsIDApOyBcCiAgX19yZXQudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzNdLCBfX3JldC52YWxbM10sIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQ0cV9zNjQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4Mng0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0cV92KCZfX3JldCwgX19wMCwgMzUpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQ0cV9zNjQoX19wMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4Mng0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0cV92KCZfX3JldCwgX19wMCwgMzUpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDEsIDApOyBcCiAgX19yZXQudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzNdLCBfX3JldC52YWxbM10sIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojZGVmaW5lIHZsZDRfZjY0KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4MXg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0X3YoJl9fcmV0LCBfX3AwLCAxMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZsZDRfZHVwX3A2NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5NjR4MXg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0X2R1cF92KCZfX3JldCwgX19wMCwgNik7IFwKICBfX3JldDsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQ0cV9kdXBfcDY0KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk2NHgyeDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRxX2R1cF92KCZfX3JldCwgX19wMCwgMzgpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQ0cV9kdXBfcDY0KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk2NHgyeDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRxX2R1cF92KCZfX3JldCwgX19wMCwgMzgpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDEsIDApOyBcCiAgX19yZXQudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzNdLCBfX3JldC52YWxbM10sIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQ0cV9kdXBfZjY0KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4Mng0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0cV9kdXBfdigmX19yZXQsIF9fcDAsIDQyKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkNHFfZHVwX2Y2NChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDJ4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNHFfZHVwX3YoJl9fcmV0LCBfX3AwLCA0Mik7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMSwgMCk7IFwKICBfX3JldC52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbM10sIF9fcmV0LnZhbFszXSwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNkZWZpbmUgdmxkNF9kdXBfZjY0KF9fcDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4MXg0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0X2R1cF92KCZfX3JldCwgX19wMCwgMTApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2bGQ0X2xhbmVfcDY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk2NHgxeDRfdCBfX3MxID0gX19wMTsgXAogIHBvbHk2NHgxeDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIChpbnQ4eDhfdClfX3MxLnZhbFsyXSwgKGludDh4OF90KV9fczEudmFsWzNdLCBfX3AyLCA2KTsgXAogIF9fcmV0OyBcCn0pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDRxX2xhbmVfcDgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4MTZ4NF90IF9fczEgPSBfX3AxOyBcCiAgcG9seTh4MTZ4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNHFfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgKGludDh4MTZfdClfX3MxLnZhbFsyXSwgKGludDh4MTZfdClfX3MxLnZhbFszXSwgX19wMiwgMzYpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQ0cV9sYW5lX3A4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk4eDE2eDRfdCBfX3MxID0gX19wMTsgXAogIHBvbHk4eDE2eDRfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbM10sIF9fczEudmFsWzNdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHBvbHk4eDE2eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRxX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMl0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFszXSwgX19wMiwgMzYpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzNdLCBfX3JldC52YWxbM10sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQ0cV9sYW5lX3A2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5NjR4Mng0X3QgX19zMSA9IF9fcDE7IFwKICBwb2x5NjR4Mng0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0cV9sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCAoaW50OHgxNl90KV9fczEudmFsWzNdLCBfX3AyLCAzOCk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDRxX2xhbmVfcDY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk2NHgyeDRfdCBfX3MxID0gX19wMTsgXAogIHBvbHk2NHgyeDRfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbM10sIF9fczEudmFsWzNdLCAxLCAwKTsgXAogIHBvbHk2NHgyeDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRxX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMl0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFszXSwgX19wMiwgMzgpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDEsIDApOyBcCiAgX19yZXQudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzNdLCBfX3JldC52YWxbM10sIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQ0cV9sYW5lX3U4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDE2eDRfdCBfX3MxID0gX19wMTsgXAogIHVpbnQ4eDE2eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRxX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIChpbnQ4eDE2X3QpX19zMS52YWxbMl0sIChpbnQ4eDE2X3QpX19zMS52YWxbM10sIF9fcDIsIDQ4KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkNHFfbGFuZV91OChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHgxNng0X3QgX19zMSA9IF9fcDE7IFwKICB1aW50OHgxNng0X3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzNdLCBfX3MxLnZhbFszXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50OHgxNng0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0cV9sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgKGludDh4MTZfdClfX3JldjEudmFsWzJdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbM10sIF9fcDIsIDQ4KTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0LnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFszXSwgX19yZXQudmFsWzNdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkNHFfbGFuZV91NjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDJ4NF90IF9fczEgPSBfX3AxOyBcCiAgdWludDY0eDJ4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNHFfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgKGludDh4MTZfdClfX3MxLnZhbFsyXSwgKGludDh4MTZfdClfX3MxLnZhbFszXSwgX19wMiwgNTEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQ0cV9sYW5lX3U2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4Mng0X3QgX19zMSA9IF9fcDE7IFwKICB1aW50NjR4Mng0X3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzNdLCBfX3MxLnZhbFszXSwgMSwgMCk7IFwKICB1aW50NjR4Mng0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0cV9sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgKGludDh4MTZfdClfX3JldjEudmFsWzJdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbM10sIF9fcDIsIDUxKTsgXAogXAogIF9fcmV0LnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFswXSwgX19yZXQudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsxXSwgX19yZXQudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFsyXSwgX19yZXQudmFsWzJdLCAxLCAwKTsgXAogIF9fcmV0LnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LnZhbFszXSwgX19yZXQudmFsWzNdLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmxkNHFfbGFuZV9zOChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDE2eDRfdCBfX3MxID0gX19wMTsgXAogIGludDh4MTZ4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNHFfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgKGludDh4MTZfdClfX3MxLnZhbFsyXSwgKGludDh4MTZfdClfX3MxLnZhbFszXSwgX19wMiwgMzIpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bGQ0cV9sYW5lX3M4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4MTZ4NF90IF9fczEgPSBfX3AxOyBcCiAgaW50OHgxNng0X3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzNdLCBfX3MxLnZhbFszXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQ4eDE2eDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRxX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMl0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFszXSwgX19wMiwgMzIpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzNdLCBfX3JldC52YWxbM10sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bGQ0cV9sYW5lX2Y2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDJ4NF90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQ2NHgyeDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRxX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIChpbnQ4eDE2X3QpX19zMS52YWxbMl0sIChpbnQ4eDE2X3QpX19zMS52YWxbM10sIF9fcDIsIDQyKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmxkNHFfbGFuZV9mNjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgyeDRfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0NjR4Mng0X3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzNdLCBfX3MxLnZhbFszXSwgMSwgMCk7IFwKICBmbG9hdDY0eDJ4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNHFfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgKGludDh4MTZfdClfX3JldjEudmFsWzNdLCBfX3AyLCA0Mik7IFwKIFwKICBfX3JldC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMF0sIF9fcmV0LnZhbFswXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMV0sIF9fcmV0LnZhbFsxXSwgMSwgMCk7IFwKICBfX3JldC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbMl0sIF9fcmV0LnZhbFsyXSwgMSwgMCk7IFwKICBfX3JldC52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldC52YWxbM10sIF9fcmV0LnZhbFszXSwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZsZDRxX2xhbmVfczY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJ4NF90IF9fczEgPSBfX3AxOyBcCiAgaW50NjR4Mng0X3QgX19yZXQ7IFwKICBfX2J1aWx0aW5fbmVvbl92bGQ0cV9sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCAoaW50OHgxNl90KV9fczEudmFsWzNdLCBfX3AyLCAzNSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZsZDRxX2xhbmVfczY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJ4NF90IF9fczEgPSBfX3AxOyBcCiAgaW50NjR4Mng0X3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzNdLCBfX3MxLnZhbFszXSwgMSwgMCk7IFwKICBpbnQ2NHgyeDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRxX2xhbmVfdigmX19yZXQsIF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMl0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFszXSwgX19wMiwgMzUpOyBcCiBcCiAgX19yZXQudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzBdLCBfX3JldC52YWxbMF0sIDEsIDApOyBcCiAgX19yZXQudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzFdLCBfX3JldC52YWxbMV0sIDEsIDApOyBcCiAgX19yZXQudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzJdLCBfX3JldC52YWxbMl0sIDEsIDApOyBcCiAgX19yZXQudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQudmFsWzNdLCBfX3JldC52YWxbM10sIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojZGVmaW5lIHZsZDRfbGFuZV91NjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDF4NF90IF9fczEgPSBfX3AxOyBcCiAgdWludDY0eDF4NF90IF9fcmV0OyBcCiAgX19idWlsdGluX25lb25fdmxkNF9sYW5lX3YoJl9fcmV0LCBfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgKGludDh4OF90KV9fczEudmFsWzJdLCAoaW50OHg4X3QpX19zMS52YWxbM10sIF9fcDIsIDE5KTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdmxkNF9sYW5lX2Y2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDF4NF90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQ2NHgxeDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIChpbnQ4eDhfdClfX3MxLnZhbFsyXSwgKGludDh4OF90KV9fczEudmFsWzNdLCBfX3AyLCAxMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZsZDRfbGFuZV9zNjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4MXg0X3QgX19zMSA9IF9fcDE7IFwKICBpbnQ2NHgxeDRfdCBfX3JldDsgXAogIF9fYnVpbHRpbl9uZW9uX3ZsZDRfbGFuZV92KCZfX3JldCwgX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIChpbnQ4eDhfdClfX3MxLnZhbFsyXSwgKGludDh4OF90KV9fczEudmFsWzNdLCBfX3AyLCAzKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdmxkcnFfcDEyOChfX3AwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTI4X3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5MTI4X3QpIF9fYnVpbHRpbl9uZW9uX3ZsZHJxX3AxMjgoX19wMCk7IFwKICBfX3JldDsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDY0eDJfdCB2bWF4cV9mNjQoZmxvYXQ2NHgyX3QgX19wMCwgZmxvYXQ2NHgyX3QgX19wMSkgewogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92bWF4cV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA0Mik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQ2NHgyX3Qgdm1heHFfZjY0KGZsb2F0NjR4Ml90IF9fcDAsIGZsb2F0NjR4Ml90IF9fcDEpIHsKICBmbG9hdDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDJfdCkgX19idWlsdGluX25lb25fdm1heHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDQyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKX19haSBmbG9hdDY0eDFfdCB2bWF4X2Y2NChmbG9hdDY0eDFfdCBfX3AwLCBmbG9hdDY0eDFfdCBfX3AxKSB7CiAgZmxvYXQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3ZtYXhfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDEwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQ2NF90IHZtYXhubXZxX2Y2NChmbG9hdDY0eDJfdCBfX3AwKSB7CiAgZmxvYXQ2NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjRfdCkgX19idWlsdGluX25lb25fdm1heG5tdnFfZjY0KF9fcDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0NjRfdCB2bWF4bm12cV9mNjQoZmxvYXQ2NHgyX3QgX19wMCkgewogIGZsb2F0NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0NjRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZtYXhubXZxX2Y2NChfX3JldjApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJfdCB2bWF4bm12cV9mMzIoZmxvYXQzMng0X3QgX19wMCkgewogIGZsb2F0MzJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZtYXhubXZxX2YzMihfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyX3Qgdm1heG5tdnFfZjMyKGZsb2F0MzJ4NF90IF9fcDApIHsKICBmbG9hdDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMl90KSBfX2J1aWx0aW5fbmVvbl92bWF4bm12cV9mMzIoX19yZXYwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyX3Qgdm1heG5tdl9mMzIoZmxvYXQzMngyX3QgX19wMCkgewogIGZsb2F0MzJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZtYXhubXZfZjMyKF9fcDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJfdCB2bWF4bm12X2YzMihmbG9hdDMyeDJfdCBfX3AwKSB7CiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQzMl90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJfdCkgX19idWlsdGluX25lb25fdm1heG5tdl9mMzIoX19yZXYwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OF90IHZtYXh2cV91OCh1aW50OHgxNl90IF9fcDApIHsKICB1aW50OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4X3QpIF9fYnVpbHRpbl9uZW9uX3ZtYXh2cV91OChfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OF90IHZtYXh2cV91OCh1aW50OHgxNl90IF9fcDApIHsKICB1aW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDhfdCkgX19idWlsdGluX25lb25fdm1heHZxX3U4KF9fcmV2MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyX3Qgdm1heHZxX3UzMih1aW50MzJ4NF90IF9fcDApIHsKICB1aW50MzJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJfdCkgX19idWlsdGluX25lb25fdm1heHZxX3UzMihfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJfdCB2bWF4dnFfdTMyKHVpbnQzMng0X3QgX19wMCkgewogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDMyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZtYXh2cV91MzIoX19yZXYwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZfdCB2bWF4dnFfdTE2KHVpbnQxNng4X3QgX19wMCkgewogIHVpbnQxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNl90KSBfX2J1aWx0aW5fbmVvbl92bWF4dnFfdTE2KF9fcDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNl90IHZtYXh2cV91MTYodWludDE2eDhfdCBfX3AwKSB7CiAgdWludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZfdCkgX19idWlsdGluX25lb25fdm1heHZxX3UxNihfX3JldjApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDhfdCB2bWF4dnFfczgoaW50OHgxNl90IF9fcDApIHsKICBpbnQ4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OF90KSBfX2J1aWx0aW5fbmVvbl92bWF4dnFfczgoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OF90IHZtYXh2cV9zOChpbnQ4eDE2X3QgX19wMCkgewogIGludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OF90KSBfX2J1aWx0aW5fbmVvbl92bWF4dnFfczgoX19yZXYwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDY0X3Qgdm1heHZxX2Y2NChmbG9hdDY0eDJfdCBfX3AwKSB7CiAgZmxvYXQ2NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjRfdCkgX19idWlsdGluX25lb25fdm1heHZxX2Y2NChfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDY0X3Qgdm1heHZxX2Y2NChmbG9hdDY0eDJfdCBfX3AwKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQ2NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjRfdCkgX19idWlsdGluX25lb25fdm1heHZxX2Y2NChfX3JldjApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJfdCB2bWF4dnFfZjMyKGZsb2F0MzJ4NF90IF9fcDApIHsKICBmbG9hdDMyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMl90KSBfX2J1aWx0aW5fbmVvbl92bWF4dnFfZjMyKF9fcDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJfdCB2bWF4dnFfZjMyKGZsb2F0MzJ4NF90IF9fcDApIHsKICBmbG9hdDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMl90KSBfX2J1aWx0aW5fbmVvbl92bWF4dnFfZjMyKF9fcmV2MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJfdCB2bWF4dnFfczMyKGludDMyeDRfdCBfX3AwKSB7CiAgaW50MzJfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMl90KSBfX2J1aWx0aW5fbmVvbl92bWF4dnFfczMyKF9fcDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyX3Qgdm1heHZxX3MzMihpbnQzMng0X3QgX19wMCkgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQzMl90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZtYXh2cV9zMzIoX19yZXYwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNl90IHZtYXh2cV9zMTYoaW50MTZ4OF90IF9fcDApIHsKICBpbnQxNl90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZtYXh2cV9zMTYoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZfdCB2bWF4dnFfczE2KGludDE2eDhfdCBfX3AwKSB7CiAgaW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZfdCkgX19idWlsdGluX25lb25fdm1heHZxX3MxNihfX3JldjApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4X3Qgdm1heHZfdTgodWludDh4OF90IF9fcDApIHsKICB1aW50OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4X3QpIF9fYnVpbHRpbl9uZW9uX3ZtYXh2X3U4KF9fcDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4X3Qgdm1heHZfdTgodWludDh4OF90IF9fcDApIHsKICB1aW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OF90KSBfX2J1aWx0aW5fbmVvbl92bWF4dl91OChfX3JldjApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMl90IHZtYXh2X3UzMih1aW50MzJ4Ml90IF9fcDApIHsKICB1aW50MzJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJfdCkgX19idWlsdGluX25lb25fdm1heHZfdTMyKF9fcDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMl90IHZtYXh2X3UzMih1aW50MzJ4Ml90IF9fcDApIHsKICB1aW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQzMl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMl90KSBfX2J1aWx0aW5fbmVvbl92bWF4dl91MzIoX19yZXYwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZfdCB2bWF4dl91MTYodWludDE2eDRfdCBfX3AwKSB7CiAgdWludDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZtYXh2X3UxNihfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZfdCB2bWF4dl91MTYodWludDE2eDRfdCBfX3AwKSB7CiAgdWludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZfdCkgX19idWlsdGluX25lb25fdm1heHZfdTE2KF9fcmV2MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OF90IHZtYXh2X3M4KGludDh4OF90IF9fcDApIHsKICBpbnQ4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OF90KSBfX2J1aWx0aW5fbmVvbl92bWF4dl9zOChfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ4X3Qgdm1heHZfczgoaW50OHg4X3QgX19wMCkgewogIGludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4X3QpIF9fYnVpbHRpbl9uZW9uX3ZtYXh2X3M4KF9fcmV2MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMl90IHZtYXh2X2YzMihmbG9hdDMyeDJfdCBfX3AwKSB7CiAgZmxvYXQzMl90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJfdCkgX19idWlsdGluX25lb25fdm1heHZfZjMyKF9fcDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJfdCB2bWF4dl9mMzIoZmxvYXQzMngyX3QgX19wMCkgewogIGZsb2F0MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0MzJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZtYXh2X2YzMihfX3JldjApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyX3Qgdm1heHZfczMyKGludDMyeDJfdCBfX3AwKSB7CiAgaW50MzJfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMl90KSBfX2J1aWx0aW5fbmVvbl92bWF4dl9zMzIoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJfdCB2bWF4dl9zMzIoaW50MzJ4Ml90IF9fcDApIHsKICBpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50MzJfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMl90KSBfX2J1aWx0aW5fbmVvbl92bWF4dl9zMzIoX19yZXYwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNl90IHZtYXh2X3MxNihpbnQxNng0X3QgX19wMCkgewogIGludDE2X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZfdCkgX19idWlsdGluX25lb25fdm1heHZfczE2KF9fcDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2X3Qgdm1heHZfczE2KGludDE2eDRfdCBfX3AwKSB7CiAgaW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDE2X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZfdCkgX19idWlsdGluX25lb25fdm1heHZfczE2KF9fcmV2MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQ2NHgyX3Qgdm1pbnFfZjY0KGZsb2F0NjR4Ml90IF9fcDAsIGZsb2F0NjR4Ml90IF9fcDEpIHsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDJfdCkgX19idWlsdGluX25lb25fdm1pbnFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0NjR4Ml90IHZtaW5xX2Y2NChmbG9hdDY0eDJfdCBfX3AwLCBmbG9hdDY0eDJfdCBfX3AxKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgZmxvYXQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZtaW5xX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA0Mik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCl9fYWkgZmxvYXQ2NHgxX3Qgdm1pbl9mNjQoZmxvYXQ2NHgxX3QgX19wMCwgZmxvYXQ2NHgxX3QgX19wMSkgewogIGZsb2F0NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92bWluX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAxMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0NjRfdCB2bWlubm12cV9mNjQoZmxvYXQ2NHgyX3QgX19wMCkgewogIGZsb2F0NjRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZtaW5ubXZxX2Y2NChfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDY0X3Qgdm1pbm5tdnFfZjY0KGZsb2F0NjR4Ml90IF9fcDApIHsKICBmbG9hdDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDY0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQ2NF90KSBfX2J1aWx0aW5fbmVvbl92bWlubm12cV9mNjQoX19yZXYwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyX3Qgdm1pbm5tdnFfZjMyKGZsb2F0MzJ4NF90IF9fcDApIHsKICBmbG9hdDMyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMl90KSBfX2J1aWx0aW5fbmVvbl92bWlubm12cV9mMzIoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMl90IHZtaW5ubXZxX2YzMihmbG9hdDMyeDRfdCBfX3AwKSB7CiAgZmxvYXQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMl90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJfdCkgX19idWlsdGluX25lb25fdm1pbm5tdnFfZjMyKF9fcmV2MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMl90IHZtaW5ubXZfZjMyKGZsb2F0MzJ4Ml90IF9fcDApIHsKICBmbG9hdDMyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMl90KSBfX2J1aWx0aW5fbmVvbl92bWlubm12X2YzMihfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyX3Qgdm1pbm5tdl9mMzIoZmxvYXQzMngyX3QgX19wMCkgewogIGZsb2F0MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0MzJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZtaW5ubXZfZjMyKF9fcmV2MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDhfdCB2bWludnFfdTgodWludDh4MTZfdCBfX3AwKSB7CiAgdWludDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OF90KSBfX2J1aWx0aW5fbmVvbl92bWludnFfdTgoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDhfdCB2bWludnFfdTgodWludDh4MTZfdCBfX3AwKSB7CiAgdWludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4X3QpIF9fYnVpbHRpbl9uZW9uX3ZtaW52cV91OChfX3JldjApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMl90IHZtaW52cV91MzIodWludDMyeDRfdCBfX3AwKSB7CiAgdWludDMyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZtaW52cV91MzIoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyX3Qgdm1pbnZxX3UzMih1aW50MzJ4NF90IF9fcDApIHsKICB1aW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQzMl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMl90KSBfX2J1aWx0aW5fbmVvbl92bWludnFfdTMyKF9fcmV2MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2X3Qgdm1pbnZxX3UxNih1aW50MTZ4OF90IF9fcDApIHsKICB1aW50MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZfdCkgX19idWlsdGluX25lb25fdm1pbnZxX3UxNihfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZfdCB2bWludnFfdTE2KHVpbnQxNng4X3QgX19wMCkgewogIHVpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZtaW52cV91MTYoX19yZXYwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4X3Qgdm1pbnZxX3M4KGludDh4MTZfdCBfX3AwKSB7CiAgaW50OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDhfdCkgX19idWlsdGluX25lb25fdm1pbnZxX3M4KF9fcDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDhfdCB2bWludnFfczgoaW50OHgxNl90IF9fcDApIHsKICBpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDhfdCkgX19idWlsdGluX25lb25fdm1pbnZxX3M4KF9fcmV2MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQ2NF90IHZtaW52cV9mNjQoZmxvYXQ2NHgyX3QgX19wMCkgewogIGZsb2F0NjRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZtaW52cV9mNjQoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQ2NF90IHZtaW52cV9mNjQoZmxvYXQ2NHgyX3QgX19wMCkgewogIGZsb2F0NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0NjRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZtaW52cV9mNjQoX19yZXYwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyX3Qgdm1pbnZxX2YzMihmbG9hdDMyeDRfdCBfX3AwKSB7CiAgZmxvYXQzMl90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJfdCkgX19idWlsdGluX25lb25fdm1pbnZxX2YzMihfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyX3Qgdm1pbnZxX2YzMihmbG9hdDMyeDRfdCBfX3AwKSB7CiAgZmxvYXQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMl90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJfdCkgX19idWlsdGluX25lb25fdm1pbnZxX2YzMihfX3JldjApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyX3Qgdm1pbnZxX3MzMihpbnQzMng0X3QgX19wMCkgewogIGludDMyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJfdCkgX19idWlsdGluX25lb25fdm1pbnZxX3MzMihfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMl90IHZtaW52cV9zMzIoaW50MzJ4NF90IF9fcDApIHsKICBpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MzJfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMl90KSBfX2J1aWx0aW5fbmVvbl92bWludnFfczMyKF9fcmV2MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZfdCB2bWludnFfczE2KGludDE2eDhfdCBfX3AwKSB7CiAgaW50MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNl90KSBfX2J1aWx0aW5fbmVvbl92bWludnFfczE2KF9fcDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2X3Qgdm1pbnZxX3MxNihpbnQxNng4X3QgX19wMCkgewogIGludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNl90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZtaW52cV9zMTYoX19yZXYwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OF90IHZtaW52X3U4KHVpbnQ4eDhfdCBfX3AwKSB7CiAgdWludDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OF90KSBfX2J1aWx0aW5fbmVvbl92bWludl91OChfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OF90IHZtaW52X3U4KHVpbnQ4eDhfdCBfX3AwKSB7CiAgdWludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDhfdCkgX19idWlsdGluX25lb25fdm1pbnZfdTgoX19yZXYwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJfdCB2bWludl91MzIodWludDMyeDJfdCBfX3AwKSB7CiAgdWludDMyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZtaW52X3UzMihfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJfdCB2bWludl91MzIodWludDMyeDJfdCBfX3AwKSB7CiAgdWludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50MzJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJfdCkgX19idWlsdGluX25lb25fdm1pbnZfdTMyKF9fcmV2MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2X3Qgdm1pbnZfdTE2KHVpbnQxNng0X3QgX19wMCkgewogIHVpbnQxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNl90KSBfX2J1aWx0aW5fbmVvbl92bWludl91MTYoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2X3Qgdm1pbnZfdTE2KHVpbnQxNng0X3QgX19wMCkgewogIHVpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZtaW52X3UxNihfX3JldjApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDhfdCB2bWludl9zOChpbnQ4eDhfdCBfX3AwKSB7CiAgaW50OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDhfdCkgX19idWlsdGluX25lb25fdm1pbnZfczgoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OF90IHZtaW52X3M4KGludDh4OF90IF9fcDApIHsKICBpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OF90KSBfX2J1aWx0aW5fbmVvbl92bWludl9zOChfX3JldjApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJfdCB2bWludl9mMzIoZmxvYXQzMngyX3QgX19wMCkgewogIGZsb2F0MzJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZtaW52X2YzMihfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyX3Qgdm1pbnZfZjMyKGZsb2F0MzJ4Ml90IF9fcDApIHsKICBmbG9hdDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDMyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMl90KSBfX2J1aWx0aW5fbmVvbl92bWludl9mMzIoX19yZXYwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMl90IHZtaW52X3MzMihpbnQzMngyX3QgX19wMCkgewogIGludDMyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJfdCkgX19idWlsdGluX25lb25fdm1pbnZfczMyKF9fcDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyX3Qgdm1pbnZfczMyKGludDMyeDJfdCBfX3AwKSB7CiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJfdCkgX19idWlsdGluX25lb25fdm1pbnZfczMyKF9fcmV2MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZfdCB2bWludl9zMTYoaW50MTZ4NF90IF9fcDApIHsKICBpbnQxNl90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZtaW52X3MxNihfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNl90IHZtaW52X3MxNihpbnQxNng0X3QgX19wMCkgewogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNl90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZtaW52X3MxNihfX3JldjApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0NjR4Ml90IHZtbGFxX2Y2NChmbG9hdDY0eDJfdCBfX3AwLCBmbG9hdDY0eDJfdCBfX3AxLCBmbG9hdDY0eDJfdCBfX3AyKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICsgX19wMSAqIF9fcDI7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQ2NHgyX3Qgdm1sYXFfZjY0KGZsb2F0NjR4Ml90IF9fcDAsIGZsb2F0NjR4Ml90IF9fcDEsIGZsb2F0NjR4Ml90IF9fcDIpIHsKICBmbG9hdDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBmbG9hdDY0eDJfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAxLCAwKTsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCArIF9fcmV2MSAqIF9fcmV2MjsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKX19haSBmbG9hdDY0eDFfdCB2bWxhX2Y2NChmbG9hdDY0eDFfdCBfX3AwLCBmbG9hdDY0eDFfdCBfX3AxLCBmbG9hdDY0eDFfdCBfX3AyKSB7CiAgZmxvYXQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICsgX19wMSAqIF9fcDI7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtbGFxX2xhbmVxX3UzMihfX3AwXzUxNSwgX19wMV81MTUsIF9fcDJfNTE1LCBfX3AzXzUxNSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDRfdCBfX3MwXzUxNSA9IF9fcDBfNTE1OyBcCiAgdWludDMyeDRfdCBfX3MxXzUxNSA9IF9fcDFfNTE1OyBcCiAgdWludDMyeDRfdCBfX3MyXzUxNSA9IF9fcDJfNTE1OyBcCiAgdWludDMyeDRfdCBfX3JldF81MTU7IFwKICBfX3JldF81MTUgPSBfX3MwXzUxNSArIF9fczFfNTE1ICogc3BsYXRxX2xhbmVxX3UzMihfX3MyXzUxNSwgX19wM181MTUpOyBcCiAgX19yZXRfNTE1OyBcCn0pCiNlbHNlCiNkZWZpbmUgdm1sYXFfbGFuZXFfdTMyKF9fcDBfNTE2LCBfX3AxXzUxNiwgX19wMl81MTYsIF9fcDNfNTE2KSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NF90IF9fczBfNTE2ID0gX19wMF81MTY7IFwKICB1aW50MzJ4NF90IF9fczFfNTE2ID0gX19wMV81MTY7IFwKICB1aW50MzJ4NF90IF9fczJfNTE2ID0gX19wMl81MTY7IFwKICB1aW50MzJ4NF90IF9fcmV2MF81MTY7ICBfX3JldjBfNTE2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF81MTYsIF9fczBfNTE2LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQzMng0X3QgX19yZXYxXzUxNjsgIF9fcmV2MV81MTYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzUxNiwgX19zMV81MTYsIDMsIDIsIDEsIDApOyBcCiAgdWludDMyeDRfdCBfX3JldjJfNTE2OyAgX19yZXYyXzUxNiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfNTE2LCBfX3MyXzUxNiwgMywgMiwgMSwgMCk7IFwKICB1aW50MzJ4NF90IF9fcmV0XzUxNjsgXAogIF9fcmV0XzUxNiA9IF9fcmV2MF81MTYgKyBfX3JldjFfNTE2ICogX19ub3N3YXBfc3BsYXRxX2xhbmVxX3UzMihfX3JldjJfNTE2LCBfX3AzXzUxNik7IFwKICBfX3JldF81MTYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF81MTYsIF9fcmV0XzUxNiwgMywgMiwgMSwgMCk7IFwKICBfX3JldF81MTY7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bWxhcV9sYW5lcV91MTYoX19wMF81MTcsIF9fcDFfNTE3LCBfX3AyXzUxNywgX19wM181MTcpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng4X3QgX19zMF81MTcgPSBfX3AwXzUxNzsgXAogIHVpbnQxNng4X3QgX19zMV81MTcgPSBfX3AxXzUxNzsgXAogIHVpbnQxNng4X3QgX19zMl81MTcgPSBfX3AyXzUxNzsgXAogIHVpbnQxNng4X3QgX19yZXRfNTE3OyBcCiAgX19yZXRfNTE3ID0gX19zMF81MTcgKyBfX3MxXzUxNyAqIHNwbGF0cV9sYW5lcV91MTYoX19zMl81MTcsIF9fcDNfNTE3KTsgXAogIF9fcmV0XzUxNzsgXAp9KQojZWxzZQojZGVmaW5lIHZtbGFxX2xhbmVxX3UxNihfX3AwXzUxOCwgX19wMV81MTgsIF9fcDJfNTE4LCBfX3AzXzUxOCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDhfdCBfX3MwXzUxOCA9IF9fcDBfNTE4OyBcCiAgdWludDE2eDhfdCBfX3MxXzUxOCA9IF9fcDFfNTE4OyBcCiAgdWludDE2eDhfdCBfX3MyXzUxOCA9IF9fcDJfNTE4OyBcCiAgdWludDE2eDhfdCBfX3JldjBfNTE4OyAgX19yZXYwXzUxOCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNTE4LCBfX3MwXzUxOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50MTZ4OF90IF9fcmV2MV81MTg7ICBfX3JldjFfNTE4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV81MTgsIF9fczFfNTE4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQxNng4X3QgX19yZXYyXzUxODsgIF9fcmV2Ml81MTggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzUxOCwgX19zMl81MTgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDhfdCBfX3JldF81MTg7IFwKICBfX3JldF81MTggPSBfX3JldjBfNTE4ICsgX19yZXYxXzUxOCAqIF9fbm9zd2FwX3NwbGF0cV9sYW5lcV91MTYoX19yZXYyXzUxOCwgX19wM181MTgpOyBcCiAgX19yZXRfNTE4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNTE4LCBfX3JldF81MTgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfNTE4OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm1sYXFfbGFuZXFfZjMyKF9fcDBfNTE5LCBfX3AxXzUxOSwgX19wMl81MTksIF9fcDNfNTE5KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDRfdCBfX3MwXzUxOSA9IF9fcDBfNTE5OyBcCiAgZmxvYXQzMng0X3QgX19zMV81MTkgPSBfX3AxXzUxOTsgXAogIGZsb2F0MzJ4NF90IF9fczJfNTE5ID0gX19wMl81MTk7IFwKICBmbG9hdDMyeDRfdCBfX3JldF81MTk7IFwKICBfX3JldF81MTkgPSBfX3MwXzUxOSArIF9fczFfNTE5ICogc3BsYXRxX2xhbmVxX2YzMihfX3MyXzUxOSwgX19wM181MTkpOyBcCiAgX19yZXRfNTE5OyBcCn0pCiNlbHNlCiNkZWZpbmUgdm1sYXFfbGFuZXFfZjMyKF9fcDBfNTIwLCBfX3AxXzUyMCwgX19wMl81MjAsIF9fcDNfNTIwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDRfdCBfX3MwXzUyMCA9IF9fcDBfNTIwOyBcCiAgZmxvYXQzMng0X3QgX19zMV81MjAgPSBfX3AxXzUyMDsgXAogIGZsb2F0MzJ4NF90IF9fczJfNTIwID0gX19wMl81MjA7IFwKICBmbG9hdDMyeDRfdCBfX3JldjBfNTIwOyAgX19yZXYwXzUyMCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNTIwLCBfX3MwXzUyMCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDMyeDRfdCBfX3JldjFfNTIwOyAgX19yZXYxXzUyMCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNTIwLCBfX3MxXzUyMCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDMyeDRfdCBfX3JldjJfNTIwOyAgX19yZXYyXzUyMCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfNTIwLCBfX3MyXzUyMCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDMyeDRfdCBfX3JldF81MjA7IFwKICBfX3JldF81MjAgPSBfX3JldjBfNTIwICsgX19yZXYxXzUyMCAqIF9fbm9zd2FwX3NwbGF0cV9sYW5lcV9mMzIoX19yZXYyXzUyMCwgX19wM181MjApOyBcCiAgX19yZXRfNTIwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNTIwLCBfX3JldF81MjAsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfNTIwOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm1sYXFfbGFuZXFfczMyKF9fcDBfNTIxLCBfX3AxXzUyMSwgX19wMl81MjEsIF9fcDNfNTIxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMF81MjEgPSBfX3AwXzUyMTsgXAogIGludDMyeDRfdCBfX3MxXzUyMSA9IF9fcDFfNTIxOyBcCiAgaW50MzJ4NF90IF9fczJfNTIxID0gX19wMl81MjE7IFwKICBpbnQzMng0X3QgX19yZXRfNTIxOyBcCiAgX19yZXRfNTIxID0gX19zMF81MjEgKyBfX3MxXzUyMSAqIHNwbGF0cV9sYW5lcV9zMzIoX19zMl81MjEsIF9fcDNfNTIxKTsgXAogIF9fcmV0XzUyMTsgXAp9KQojZWxzZQojZGVmaW5lIHZtbGFxX2xhbmVxX3MzMihfX3AwXzUyMiwgX19wMV81MjIsIF9fcDJfNTIyLCBfX3AzXzUyMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczBfNTIyID0gX19wMF81MjI7IFwKICBpbnQzMng0X3QgX19zMV81MjIgPSBfX3AxXzUyMjsgXAogIGludDMyeDRfdCBfX3MyXzUyMiA9IF9fcDJfNTIyOyBcCiAgaW50MzJ4NF90IF9fcmV2MF81MjI7ICBfX3JldjBfNTIyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF81MjIsIF9fczBfNTIyLCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDRfdCBfX3JldjFfNTIyOyAgX19yZXYxXzUyMiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNTIyLCBfX3MxXzUyMiwgMywgMiwgMSwgMCk7IFwKICBpbnQzMng0X3QgX19yZXYyXzUyMjsgIF9fcmV2Ml81MjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzUyMiwgX19zMl81MjIsIDMsIDIsIDEsIDApOyBcCiAgaW50MzJ4NF90IF9fcmV0XzUyMjsgXAogIF9fcmV0XzUyMiA9IF9fcmV2MF81MjIgKyBfX3JldjFfNTIyICogX19ub3N3YXBfc3BsYXRxX2xhbmVxX3MzMihfX3JldjJfNTIyLCBfX3AzXzUyMik7IFwKICBfX3JldF81MjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF81MjIsIF9fcmV0XzUyMiwgMywgMiwgMSwgMCk7IFwKICBfX3JldF81MjI7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bWxhcV9sYW5lcV9zMTYoX19wMF81MjMsIF9fcDFfNTIzLCBfX3AyXzUyMywgX19wM181MjMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDhfdCBfX3MwXzUyMyA9IF9fcDBfNTIzOyBcCiAgaW50MTZ4OF90IF9fczFfNTIzID0gX19wMV81MjM7IFwKICBpbnQxNng4X3QgX19zMl81MjMgPSBfX3AyXzUyMzsgXAogIGludDE2eDhfdCBfX3JldF81MjM7IFwKICBfX3JldF81MjMgPSBfX3MwXzUyMyArIF9fczFfNTIzICogc3BsYXRxX2xhbmVxX3MxNihfX3MyXzUyMywgX19wM181MjMpOyBcCiAgX19yZXRfNTIzOyBcCn0pCiNlbHNlCiNkZWZpbmUgdm1sYXFfbGFuZXFfczE2KF9fcDBfNTI0LCBfX3AxXzUyNCwgX19wMl81MjQsIF9fcDNfNTI0KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4X3QgX19zMF81MjQgPSBfX3AwXzUyNDsgXAogIGludDE2eDhfdCBfX3MxXzUyNCA9IF9fcDFfNTI0OyBcCiAgaW50MTZ4OF90IF9fczJfNTI0ID0gX19wMl81MjQ7IFwKICBpbnQxNng4X3QgX19yZXYwXzUyNDsgIF9fcmV2MF81MjQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzUyNCwgX19zMF81MjQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4OF90IF9fcmV2MV81MjQ7ICBfX3JldjFfNTI0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV81MjQsIF9fczFfNTI0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDhfdCBfX3JldjJfNTI0OyAgX19yZXYyXzUyNCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfNTI0LCBfX3MyXzUyNCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng4X3QgX19yZXRfNTI0OyBcCiAgX19yZXRfNTI0ID0gX19yZXYwXzUyNCArIF9fcmV2MV81MjQgKiBfX25vc3dhcF9zcGxhdHFfbGFuZXFfczE2KF9fcmV2Ml81MjQsIF9fcDNfNTI0KTsgXAogIF9fcmV0XzUyNCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzUyNCwgX19yZXRfNTI0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzUyNDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtbGFfbGFuZXFfdTMyKF9fcDBfNTI1LCBfX3AxXzUyNSwgX19wMl81MjUsIF9fcDNfNTI1KSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4Ml90IF9fczBfNTI1ID0gX19wMF81MjU7IFwKICB1aW50MzJ4Ml90IF9fczFfNTI1ID0gX19wMV81MjU7IFwKICB1aW50MzJ4NF90IF9fczJfNTI1ID0gX19wMl81MjU7IFwKICB1aW50MzJ4Ml90IF9fcmV0XzUyNTsgXAogIF9fcmV0XzUyNSA9IF9fczBfNTI1ICsgX19zMV81MjUgKiBzcGxhdF9sYW5lcV91MzIoX19zMl81MjUsIF9fcDNfNTI1KTsgXAogIF9fcmV0XzUyNTsgXAp9KQojZWxzZQojZGVmaW5lIHZtbGFfbGFuZXFfdTMyKF9fcDBfNTI2LCBfX3AxXzUyNiwgX19wMl81MjYsIF9fcDNfNTI2KSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4Ml90IF9fczBfNTI2ID0gX19wMF81MjY7IFwKICB1aW50MzJ4Ml90IF9fczFfNTI2ID0gX19wMV81MjY7IFwKICB1aW50MzJ4NF90IF9fczJfNTI2ID0gX19wMl81MjY7IFwKICB1aW50MzJ4Ml90IF9fcmV2MF81MjY7ICBfX3JldjBfNTI2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF81MjYsIF9fczBfNTI2LCAxLCAwKTsgXAogIHVpbnQzMngyX3QgX19yZXYxXzUyNjsgIF9fcmV2MV81MjYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzUyNiwgX19zMV81MjYsIDEsIDApOyBcCiAgdWludDMyeDRfdCBfX3JldjJfNTI2OyAgX19yZXYyXzUyNiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfNTI2LCBfX3MyXzUyNiwgMywgMiwgMSwgMCk7IFwKICB1aW50MzJ4Ml90IF9fcmV0XzUyNjsgXAogIF9fcmV0XzUyNiA9IF9fcmV2MF81MjYgKyBfX3JldjFfNTI2ICogX19ub3N3YXBfc3BsYXRfbGFuZXFfdTMyKF9fcmV2Ml81MjYsIF9fcDNfNTI2KTsgXAogIF9fcmV0XzUyNiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzUyNiwgX19yZXRfNTI2LCAxLCAwKTsgXAogIF9fcmV0XzUyNjsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtbGFfbGFuZXFfdTE2KF9fcDBfNTI3LCBfX3AxXzUyNywgX19wMl81MjcsIF9fcDNfNTI3KSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4NF90IF9fczBfNTI3ID0gX19wMF81Mjc7IFwKICB1aW50MTZ4NF90IF9fczFfNTI3ID0gX19wMV81Mjc7IFwKICB1aW50MTZ4OF90IF9fczJfNTI3ID0gX19wMl81Mjc7IFwKICB1aW50MTZ4NF90IF9fcmV0XzUyNzsgXAogIF9fcmV0XzUyNyA9IF9fczBfNTI3ICsgX19zMV81MjcgKiBzcGxhdF9sYW5lcV91MTYoX19zMl81MjcsIF9fcDNfNTI3KTsgXAogIF9fcmV0XzUyNzsgXAp9KQojZWxzZQojZGVmaW5lIHZtbGFfbGFuZXFfdTE2KF9fcDBfNTI4LCBfX3AxXzUyOCwgX19wMl81MjgsIF9fcDNfNTI4KSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4NF90IF9fczBfNTI4ID0gX19wMF81Mjg7IFwKICB1aW50MTZ4NF90IF9fczFfNTI4ID0gX19wMV81Mjg7IFwKICB1aW50MTZ4OF90IF9fczJfNTI4ID0gX19wMl81Mjg7IFwKICB1aW50MTZ4NF90IF9fcmV2MF81Mjg7ICBfX3JldjBfNTI4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF81MjgsIF9fczBfNTI4LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQxNng0X3QgX19yZXYxXzUyODsgIF9fcmV2MV81MjggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzUyOCwgX19zMV81MjgsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDhfdCBfX3JldjJfNTI4OyAgX19yZXYyXzUyOCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfNTI4LCBfX3MyXzUyOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50MTZ4NF90IF9fcmV0XzUyODsgXAogIF9fcmV0XzUyOCA9IF9fcmV2MF81MjggKyBfX3JldjFfNTI4ICogX19ub3N3YXBfc3BsYXRfbGFuZXFfdTE2KF9fcmV2Ml81MjgsIF9fcDNfNTI4KTsgXAogIF9fcmV0XzUyOCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzUyOCwgX19yZXRfNTI4LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzUyODsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtbGFfbGFuZXFfZjMyKF9fcDBfNTI5LCBfX3AxXzUyOSwgX19wMl81MjksIF9fcDNfNTI5KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJfdCBfX3MwXzUyOSA9IF9fcDBfNTI5OyBcCiAgZmxvYXQzMngyX3QgX19zMV81MjkgPSBfX3AxXzUyOTsgXAogIGZsb2F0MzJ4NF90IF9fczJfNTI5ID0gX19wMl81Mjk7IFwKICBmbG9hdDMyeDJfdCBfX3JldF81Mjk7IFwKICBfX3JldF81MjkgPSBfX3MwXzUyOSArIF9fczFfNTI5ICogc3BsYXRfbGFuZXFfZjMyKF9fczJfNTI5LCBfX3AzXzUyOSk7IFwKICBfX3JldF81Mjk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bWxhX2xhbmVxX2YzMihfX3AwXzUzMCwgX19wMV81MzAsIF9fcDJfNTMwLCBfX3AzXzUzMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMngyX3QgX19zMF81MzAgPSBfX3AwXzUzMDsgXAogIGZsb2F0MzJ4Ml90IF9fczFfNTMwID0gX19wMV81MzA7IFwKICBmbG9hdDMyeDRfdCBfX3MyXzUzMCA9IF9fcDJfNTMwOyBcCiAgZmxvYXQzMngyX3QgX19yZXYwXzUzMDsgIF9fcmV2MF81MzAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzUzMCwgX19zMF81MzAsIDEsIDApOyBcCiAgZmxvYXQzMngyX3QgX19yZXYxXzUzMDsgIF9fcmV2MV81MzAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzUzMCwgX19zMV81MzAsIDEsIDApOyBcCiAgZmxvYXQzMng0X3QgX19yZXYyXzUzMDsgIF9fcmV2Ml81MzAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzUzMCwgX19zMl81MzAsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQzMngyX3QgX19yZXRfNTMwOyBcCiAgX19yZXRfNTMwID0gX19yZXYwXzUzMCArIF9fcmV2MV81MzAgKiBfX25vc3dhcF9zcGxhdF9sYW5lcV9mMzIoX19yZXYyXzUzMCwgX19wM181MzApOyBcCiAgX19yZXRfNTMwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNTMwLCBfX3JldF81MzAsIDEsIDApOyBcCiAgX19yZXRfNTMwOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm1sYV9sYW5lcV9zMzIoX19wMF81MzEsIF9fcDFfNTMxLCBfX3AyXzUzMSwgX19wM181MzEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJfdCBfX3MwXzUzMSA9IF9fcDBfNTMxOyBcCiAgaW50MzJ4Ml90IF9fczFfNTMxID0gX19wMV81MzE7IFwKICBpbnQzMng0X3QgX19zMl81MzEgPSBfX3AyXzUzMTsgXAogIGludDMyeDJfdCBfX3JldF81MzE7IFwKICBfX3JldF81MzEgPSBfX3MwXzUzMSArIF9fczFfNTMxICogc3BsYXRfbGFuZXFfczMyKF9fczJfNTMxLCBfX3AzXzUzMSk7IFwKICBfX3JldF81MzE7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bWxhX2xhbmVxX3MzMihfX3AwXzUzMiwgX19wMV81MzIsIF9fcDJfNTMyLCBfX3AzXzUzMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Ml90IF9fczBfNTMyID0gX19wMF81MzI7IFwKICBpbnQzMngyX3QgX19zMV81MzIgPSBfX3AxXzUzMjsgXAogIGludDMyeDRfdCBfX3MyXzUzMiA9IF9fcDJfNTMyOyBcCiAgaW50MzJ4Ml90IF9fcmV2MF81MzI7ICBfX3JldjBfNTMyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF81MzIsIF9fczBfNTMyLCAxLCAwKTsgXAogIGludDMyeDJfdCBfX3JldjFfNTMyOyAgX19yZXYxXzUzMiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNTMyLCBfX3MxXzUzMiwgMSwgMCk7IFwKICBpbnQzMng0X3QgX19yZXYyXzUzMjsgIF9fcmV2Ml81MzIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzUzMiwgX19zMl81MzIsIDMsIDIsIDEsIDApOyBcCiAgaW50MzJ4Ml90IF9fcmV0XzUzMjsgXAogIF9fcmV0XzUzMiA9IF9fcmV2MF81MzIgKyBfX3JldjFfNTMyICogX19ub3N3YXBfc3BsYXRfbGFuZXFfczMyKF9fcmV2Ml81MzIsIF9fcDNfNTMyKTsgXAogIF9fcmV0XzUzMiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzUzMiwgX19yZXRfNTMyLCAxLCAwKTsgXAogIF9fcmV0XzUzMjsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtbGFfbGFuZXFfczE2KF9fcDBfNTMzLCBfX3AxXzUzMywgX19wMl81MzMsIF9fcDNfNTMzKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng0X3QgX19zMF81MzMgPSBfX3AwXzUzMzsgXAogIGludDE2eDRfdCBfX3MxXzUzMyA9IF9fcDFfNTMzOyBcCiAgaW50MTZ4OF90IF9fczJfNTMzID0gX19wMl81MzM7IFwKICBpbnQxNng0X3QgX19yZXRfNTMzOyBcCiAgX19yZXRfNTMzID0gX19zMF81MzMgKyBfX3MxXzUzMyAqIHNwbGF0X2xhbmVxX3MxNihfX3MyXzUzMywgX19wM181MzMpOyBcCiAgX19yZXRfNTMzOyBcCn0pCiNlbHNlCiNkZWZpbmUgdm1sYV9sYW5lcV9zMTYoX19wMF81MzQsIF9fcDFfNTM0LCBfX3AyXzUzNCwgX19wM181MzQpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDRfdCBfX3MwXzUzNCA9IF9fcDBfNTM0OyBcCiAgaW50MTZ4NF90IF9fczFfNTM0ID0gX19wMV81MzQ7IFwKICBpbnQxNng4X3QgX19zMl81MzQgPSBfX3AyXzUzNDsgXAogIGludDE2eDRfdCBfX3JldjBfNTM0OyAgX19yZXYwXzUzNCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNTM0LCBfX3MwXzUzNCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng0X3QgX19yZXYxXzUzNDsgIF9fcmV2MV81MzQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzUzNCwgX19zMV81MzQsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4OF90IF9fcmV2Ml81MzQ7ICBfX3JldjJfNTM0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl81MzQsIF9fczJfNTM0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDRfdCBfX3JldF81MzQ7IFwKICBfX3JldF81MzQgPSBfX3JldjBfNTM0ICsgX19yZXYxXzUzNCAqIF9fbm9zd2FwX3NwbGF0X2xhbmVxX3MxNihfX3JldjJfNTM0LCBfX3AzXzUzNCk7IFwKICBfX3JldF81MzQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF81MzQsIF9fcmV0XzUzNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF81MzQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bWxhbF9oaWdoX2xhbmVfdTMyKF9fcDBfNTM1LCBfX3AxXzUzNSwgX19wMl81MzUsIF9fcDNfNTM1KSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4Ml90IF9fczBfNTM1ID0gX19wMF81MzU7IFwKICB1aW50MzJ4NF90IF9fczFfNTM1ID0gX19wMV81MzU7IFwKICB1aW50MzJ4Ml90IF9fczJfNTM1ID0gX19wMl81MzU7IFwKICB1aW50NjR4Ml90IF9fcmV0XzUzNTsgXAogIF9fcmV0XzUzNSA9IF9fczBfNTM1ICsgdm11bGxfdTMyKHZnZXRfaGlnaF91MzIoX19zMV81MzUpLCBzcGxhdF9sYW5lX3UzMihfX3MyXzUzNSwgX19wM181MzUpKTsgXAogIF9fcmV0XzUzNTsgXAp9KQojZWxzZQojZGVmaW5lIHZtbGFsX2hpZ2hfbGFuZV91MzIoX19wMF81MzYsIF9fcDFfNTM2LCBfX3AyXzUzNiwgX19wM181MzYpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyX3QgX19zMF81MzYgPSBfX3AwXzUzNjsgXAogIHVpbnQzMng0X3QgX19zMV81MzYgPSBfX3AxXzUzNjsgXAogIHVpbnQzMngyX3QgX19zMl81MzYgPSBfX3AyXzUzNjsgXAogIHVpbnQ2NHgyX3QgX19yZXYwXzUzNjsgIF9fcmV2MF81MzYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzUzNiwgX19zMF81MzYsIDEsIDApOyBcCiAgdWludDMyeDRfdCBfX3JldjFfNTM2OyAgX19yZXYxXzUzNiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNTM2LCBfX3MxXzUzNiwgMywgMiwgMSwgMCk7IFwKICB1aW50MzJ4Ml90IF9fcmV2Ml81MzY7ICBfX3JldjJfNTM2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl81MzYsIF9fczJfNTM2LCAxLCAwKTsgXAogIHVpbnQ2NHgyX3QgX19yZXRfNTM2OyBcCiAgX19yZXRfNTM2ID0gX19yZXYwXzUzNiArIF9fbm9zd2FwX3ZtdWxsX3UzMihfX25vc3dhcF92Z2V0X2hpZ2hfdTMyKF9fcmV2MV81MzYpLCBfX25vc3dhcF9zcGxhdF9sYW5lX3UzMihfX3JldjJfNTM2LCBfX3AzXzUzNikpOyBcCiAgX19yZXRfNTM2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNTM2LCBfX3JldF81MzYsIDEsIDApOyBcCiAgX19yZXRfNTM2OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm1sYWxfaGlnaF9sYW5lX3UxNihfX3AwXzUzNywgX19wMV81MzcsIF9fcDJfNTM3LCBfX3AzXzUzNykgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDRfdCBfX3MwXzUzNyA9IF9fcDBfNTM3OyBcCiAgdWludDE2eDhfdCBfX3MxXzUzNyA9IF9fcDFfNTM3OyBcCiAgdWludDE2eDRfdCBfX3MyXzUzNyA9IF9fcDJfNTM3OyBcCiAgdWludDMyeDRfdCBfX3JldF81Mzc7IFwKICBfX3JldF81MzcgPSBfX3MwXzUzNyArIHZtdWxsX3UxNih2Z2V0X2hpZ2hfdTE2KF9fczFfNTM3KSwgc3BsYXRfbGFuZV91MTYoX19zMl81MzcsIF9fcDNfNTM3KSk7IFwKICBfX3JldF81Mzc7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bWxhbF9oaWdoX2xhbmVfdTE2KF9fcDBfNTM4LCBfX3AxXzUzOCwgX19wMl81MzgsIF9fcDNfNTM4KSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NF90IF9fczBfNTM4ID0gX19wMF81Mzg7IFwKICB1aW50MTZ4OF90IF9fczFfNTM4ID0gX19wMV81Mzg7IFwKICB1aW50MTZ4NF90IF9fczJfNTM4ID0gX19wMl81Mzg7IFwKICB1aW50MzJ4NF90IF9fcmV2MF81Mzg7ICBfX3JldjBfNTM4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF81MzgsIF9fczBfNTM4LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQxNng4X3QgX19yZXYxXzUzODsgIF9fcmV2MV81MzggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzUzOCwgX19zMV81MzgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDRfdCBfX3JldjJfNTM4OyAgX19yZXYyXzUzOCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfNTM4LCBfX3MyXzUzOCwgMywgMiwgMSwgMCk7IFwKICB1aW50MzJ4NF90IF9fcmV0XzUzODsgXAogIF9fcmV0XzUzOCA9IF9fcmV2MF81MzggKyBfX25vc3dhcF92bXVsbF91MTYoX19ub3N3YXBfdmdldF9oaWdoX3UxNihfX3JldjFfNTM4KSwgX19ub3N3YXBfc3BsYXRfbGFuZV91MTYoX19yZXYyXzUzOCwgX19wM181MzgpKTsgXAogIF9fcmV0XzUzOCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzUzOCwgX19yZXRfNTM4LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzUzODsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtbGFsX2hpZ2hfbGFuZV9zMzIoX19wMF81MzksIF9fcDFfNTM5LCBfX3AyXzUzOSwgX19wM181MzkpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJfdCBfX3MwXzUzOSA9IF9fcDBfNTM5OyBcCiAgaW50MzJ4NF90IF9fczFfNTM5ID0gX19wMV81Mzk7IFwKICBpbnQzMngyX3QgX19zMl81MzkgPSBfX3AyXzUzOTsgXAogIGludDY0eDJfdCBfX3JldF81Mzk7IFwKICBfX3JldF81MzkgPSBfX3MwXzUzOSArIHZtdWxsX3MzMih2Z2V0X2hpZ2hfczMyKF9fczFfNTM5KSwgc3BsYXRfbGFuZV9zMzIoX19zMl81MzksIF9fcDNfNTM5KSk7IFwKICBfX3JldF81Mzk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bWxhbF9oaWdoX2xhbmVfczMyKF9fcDBfNTQwLCBfX3AxXzU0MCwgX19wMl81NDAsIF9fcDNfNTQwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgyX3QgX19zMF81NDAgPSBfX3AwXzU0MDsgXAogIGludDMyeDRfdCBfX3MxXzU0MCA9IF9fcDFfNTQwOyBcCiAgaW50MzJ4Ml90IF9fczJfNTQwID0gX19wMl81NDA7IFwKICBpbnQ2NHgyX3QgX19yZXYwXzU0MDsgIF9fcmV2MF81NDAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzU0MCwgX19zMF81NDAsIDEsIDApOyBcCiAgaW50MzJ4NF90IF9fcmV2MV81NDA7ICBfX3JldjFfNTQwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV81NDAsIF9fczFfNTQwLCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDJfdCBfX3JldjJfNTQwOyAgX19yZXYyXzU0MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfNTQwLCBfX3MyXzU0MCwgMSwgMCk7IFwKICBpbnQ2NHgyX3QgX19yZXRfNTQwOyBcCiAgX19yZXRfNTQwID0gX19yZXYwXzU0MCArIF9fbm9zd2FwX3ZtdWxsX3MzMihfX25vc3dhcF92Z2V0X2hpZ2hfczMyKF9fcmV2MV81NDApLCBfX25vc3dhcF9zcGxhdF9sYW5lX3MzMihfX3JldjJfNTQwLCBfX3AzXzU0MCkpOyBcCiAgX19yZXRfNTQwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNTQwLCBfX3JldF81NDAsIDEsIDApOyBcCiAgX19yZXRfNTQwOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm1sYWxfaGlnaF9sYW5lX3MxNihfX3AwXzU0MSwgX19wMV81NDEsIF9fcDJfNTQxLCBfX3AzXzU0MSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczBfNTQxID0gX19wMF81NDE7IFwKICBpbnQxNng4X3QgX19zMV81NDEgPSBfX3AxXzU0MTsgXAogIGludDE2eDRfdCBfX3MyXzU0MSA9IF9fcDJfNTQxOyBcCiAgaW50MzJ4NF90IF9fcmV0XzU0MTsgXAogIF9fcmV0XzU0MSA9IF9fczBfNTQxICsgdm11bGxfczE2KHZnZXRfaGlnaF9zMTYoX19zMV81NDEpLCBzcGxhdF9sYW5lX3MxNihfX3MyXzU0MSwgX19wM181NDEpKTsgXAogIF9fcmV0XzU0MTsgXAp9KQojZWxzZQojZGVmaW5lIHZtbGFsX2hpZ2hfbGFuZV9zMTYoX19wMF81NDIsIF9fcDFfNTQyLCBfX3AyXzU0MiwgX19wM181NDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDRfdCBfX3MwXzU0MiA9IF9fcDBfNTQyOyBcCiAgaW50MTZ4OF90IF9fczFfNTQyID0gX19wMV81NDI7IFwKICBpbnQxNng0X3QgX19zMl81NDIgPSBfX3AyXzU0MjsgXAogIGludDMyeDRfdCBfX3JldjBfNTQyOyAgX19yZXYwXzU0MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNTQyLCBfX3MwXzU0MiwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng4X3QgX19yZXYxXzU0MjsgIF9fcmV2MV81NDIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzU0MiwgX19zMV81NDIsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4NF90IF9fcmV2Ml81NDI7ICBfX3JldjJfNTQyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl81NDIsIF9fczJfNTQyLCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDRfdCBfX3JldF81NDI7IFwKICBfX3JldF81NDIgPSBfX3JldjBfNTQyICsgX19ub3N3YXBfdm11bGxfczE2KF9fbm9zd2FwX3ZnZXRfaGlnaF9zMTYoX19yZXYxXzU0MiksIF9fbm9zd2FwX3NwbGF0X2xhbmVfczE2KF9fcmV2Ml81NDIsIF9fcDNfNTQyKSk7IFwKICBfX3JldF81NDIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF81NDIsIF9fcmV0XzU0MiwgMywgMiwgMSwgMCk7IFwKICBfX3JldF81NDI7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bWxhbF9oaWdoX2xhbmVxX3UzMihfX3AwXzU0MywgX19wMV81NDMsIF9fcDJfNTQzLCBfX3AzXzU0MykgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDJfdCBfX3MwXzU0MyA9IF9fcDBfNTQzOyBcCiAgdWludDMyeDRfdCBfX3MxXzU0MyA9IF9fcDFfNTQzOyBcCiAgdWludDMyeDRfdCBfX3MyXzU0MyA9IF9fcDJfNTQzOyBcCiAgdWludDY0eDJfdCBfX3JldF81NDM7IFwKICBfX3JldF81NDMgPSBfX3MwXzU0MyArIHZtdWxsX3UzMih2Z2V0X2hpZ2hfdTMyKF9fczFfNTQzKSwgc3BsYXRfbGFuZXFfdTMyKF9fczJfNTQzLCBfX3AzXzU0MykpOyBcCiAgX19yZXRfNTQzOyBcCn0pCiNlbHNlCiNkZWZpbmUgdm1sYWxfaGlnaF9sYW5lcV91MzIoX19wMF81NDQsIF9fcDFfNTQ0LCBfX3AyXzU0NCwgX19wM181NDQpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyX3QgX19zMF81NDQgPSBfX3AwXzU0NDsgXAogIHVpbnQzMng0X3QgX19zMV81NDQgPSBfX3AxXzU0NDsgXAogIHVpbnQzMng0X3QgX19zMl81NDQgPSBfX3AyXzU0NDsgXAogIHVpbnQ2NHgyX3QgX19yZXYwXzU0NDsgIF9fcmV2MF81NDQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzU0NCwgX19zMF81NDQsIDEsIDApOyBcCiAgdWludDMyeDRfdCBfX3JldjFfNTQ0OyAgX19yZXYxXzU0NCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNTQ0LCBfX3MxXzU0NCwgMywgMiwgMSwgMCk7IFwKICB1aW50MzJ4NF90IF9fcmV2Ml81NDQ7ICBfX3JldjJfNTQ0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl81NDQsIF9fczJfNTQ0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQ2NHgyX3QgX19yZXRfNTQ0OyBcCiAgX19yZXRfNTQ0ID0gX19yZXYwXzU0NCArIF9fbm9zd2FwX3ZtdWxsX3UzMihfX25vc3dhcF92Z2V0X2hpZ2hfdTMyKF9fcmV2MV81NDQpLCBfX25vc3dhcF9zcGxhdF9sYW5lcV91MzIoX19yZXYyXzU0NCwgX19wM181NDQpKTsgXAogIF9fcmV0XzU0NCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzU0NCwgX19yZXRfNTQ0LCAxLCAwKTsgXAogIF9fcmV0XzU0NDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtbGFsX2hpZ2hfbGFuZXFfdTE2KF9fcDBfNTQ1LCBfX3AxXzU0NSwgX19wMl81NDUsIF9fcDNfNTQ1KSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NF90IF9fczBfNTQ1ID0gX19wMF81NDU7IFwKICB1aW50MTZ4OF90IF9fczFfNTQ1ID0gX19wMV81NDU7IFwKICB1aW50MTZ4OF90IF9fczJfNTQ1ID0gX19wMl81NDU7IFwKICB1aW50MzJ4NF90IF9fcmV0XzU0NTsgXAogIF9fcmV0XzU0NSA9IF9fczBfNTQ1ICsgdm11bGxfdTE2KHZnZXRfaGlnaF91MTYoX19zMV81NDUpLCBzcGxhdF9sYW5lcV91MTYoX19zMl81NDUsIF9fcDNfNTQ1KSk7IFwKICBfX3JldF81NDU7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bWxhbF9oaWdoX2xhbmVxX3UxNihfX3AwXzU0NiwgX19wMV81NDYsIF9fcDJfNTQ2LCBfX3AzXzU0NikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDRfdCBfX3MwXzU0NiA9IF9fcDBfNTQ2OyBcCiAgdWludDE2eDhfdCBfX3MxXzU0NiA9IF9fcDFfNTQ2OyBcCiAgdWludDE2eDhfdCBfX3MyXzU0NiA9IF9fcDJfNTQ2OyBcCiAgdWludDMyeDRfdCBfX3JldjBfNTQ2OyAgX19yZXYwXzU0NiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNTQ2LCBfX3MwXzU0NiwgMywgMiwgMSwgMCk7IFwKICB1aW50MTZ4OF90IF9fcmV2MV81NDY7ICBfX3JldjFfNTQ2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV81NDYsIF9fczFfNTQ2LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQxNng4X3QgX19yZXYyXzU0NjsgIF9fcmV2Ml81NDYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzU0NiwgX19zMl81NDYsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDMyeDRfdCBfX3JldF81NDY7IFwKICBfX3JldF81NDYgPSBfX3JldjBfNTQ2ICsgX19ub3N3YXBfdm11bGxfdTE2KF9fbm9zd2FwX3ZnZXRfaGlnaF91MTYoX19yZXYxXzU0NiksIF9fbm9zd2FwX3NwbGF0X2xhbmVxX3UxNihfX3JldjJfNTQ2LCBfX3AzXzU0NikpOyBcCiAgX19yZXRfNTQ2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNTQ2LCBfX3JldF81NDYsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfNTQ2OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm1sYWxfaGlnaF9sYW5lcV9zMzIoX19wMF81NDcsIF9fcDFfNTQ3LCBfX3AyXzU0NywgX19wM181NDcpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJfdCBfX3MwXzU0NyA9IF9fcDBfNTQ3OyBcCiAgaW50MzJ4NF90IF9fczFfNTQ3ID0gX19wMV81NDc7IFwKICBpbnQzMng0X3QgX19zMl81NDcgPSBfX3AyXzU0NzsgXAogIGludDY0eDJfdCBfX3JldF81NDc7IFwKICBfX3JldF81NDcgPSBfX3MwXzU0NyArIHZtdWxsX3MzMih2Z2V0X2hpZ2hfczMyKF9fczFfNTQ3KSwgc3BsYXRfbGFuZXFfczMyKF9fczJfNTQ3LCBfX3AzXzU0NykpOyBcCiAgX19yZXRfNTQ3OyBcCn0pCiNlbHNlCiNkZWZpbmUgdm1sYWxfaGlnaF9sYW5lcV9zMzIoX19wMF81NDgsIF9fcDFfNTQ4LCBfX3AyXzU0OCwgX19wM181NDgpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJfdCBfX3MwXzU0OCA9IF9fcDBfNTQ4OyBcCiAgaW50MzJ4NF90IF9fczFfNTQ4ID0gX19wMV81NDg7IFwKICBpbnQzMng0X3QgX19zMl81NDggPSBfX3AyXzU0ODsgXAogIGludDY0eDJfdCBfX3JldjBfNTQ4OyAgX19yZXYwXzU0OCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNTQ4LCBfX3MwXzU0OCwgMSwgMCk7IFwKICBpbnQzMng0X3QgX19yZXYxXzU0ODsgIF9fcmV2MV81NDggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzU0OCwgX19zMV81NDgsIDMsIDIsIDEsIDApOyBcCiAgaW50MzJ4NF90IF9fcmV2Ml81NDg7ICBfX3JldjJfNTQ4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl81NDgsIF9fczJfNTQ4LCAzLCAyLCAxLCAwKTsgXAogIGludDY0eDJfdCBfX3JldF81NDg7IFwKICBfX3JldF81NDggPSBfX3JldjBfNTQ4ICsgX19ub3N3YXBfdm11bGxfczMyKF9fbm9zd2FwX3ZnZXRfaGlnaF9zMzIoX19yZXYxXzU0OCksIF9fbm9zd2FwX3NwbGF0X2xhbmVxX3MzMihfX3JldjJfNTQ4LCBfX3AzXzU0OCkpOyBcCiAgX19yZXRfNTQ4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNTQ4LCBfX3JldF81NDgsIDEsIDApOyBcCiAgX19yZXRfNTQ4OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm1sYWxfaGlnaF9sYW5lcV9zMTYoX19wMF81NDksIF9fcDFfNTQ5LCBfX3AyXzU0OSwgX19wM181NDkpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDRfdCBfX3MwXzU0OSA9IF9fcDBfNTQ5OyBcCiAgaW50MTZ4OF90IF9fczFfNTQ5ID0gX19wMV81NDk7IFwKICBpbnQxNng4X3QgX19zMl81NDkgPSBfX3AyXzU0OTsgXAogIGludDMyeDRfdCBfX3JldF81NDk7IFwKICBfX3JldF81NDkgPSBfX3MwXzU0OSArIHZtdWxsX3MxNih2Z2V0X2hpZ2hfczE2KF9fczFfNTQ5KSwgc3BsYXRfbGFuZXFfczE2KF9fczJfNTQ5LCBfX3AzXzU0OSkpOyBcCiAgX19yZXRfNTQ5OyBcCn0pCiNlbHNlCiNkZWZpbmUgdm1sYWxfaGlnaF9sYW5lcV9zMTYoX19wMF81NTAsIF9fcDFfNTUwLCBfX3AyXzU1MCwgX19wM181NTApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDRfdCBfX3MwXzU1MCA9IF9fcDBfNTUwOyBcCiAgaW50MTZ4OF90IF9fczFfNTUwID0gX19wMV81NTA7IFwKICBpbnQxNng4X3QgX19zMl81NTAgPSBfX3AyXzU1MDsgXAogIGludDMyeDRfdCBfX3JldjBfNTUwOyAgX19yZXYwXzU1MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNTUwLCBfX3MwXzU1MCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng4X3QgX19yZXYxXzU1MDsgIF9fcmV2MV81NTAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzU1MCwgX19zMV81NTAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4OF90IF9fcmV2Ml81NTA7ICBfX3JldjJfNTUwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl81NTAsIF9fczJfNTUwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDRfdCBfX3JldF81NTA7IFwKICBfX3JldF81NTAgPSBfX3JldjBfNTUwICsgX19ub3N3YXBfdm11bGxfczE2KF9fbm9zd2FwX3ZnZXRfaGlnaF9zMTYoX19yZXYxXzU1MCksIF9fbm9zd2FwX3NwbGF0X2xhbmVxX3MxNihfX3JldjJfNTUwLCBfX3AzXzU1MCkpOyBcCiAgX19yZXRfNTUwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNTUwLCBfX3JldF81NTAsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfNTUwOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm1sYWxfbGFuZXFfdTMyKF9fcDBfNTUxLCBfX3AxXzU1MSwgX19wMl81NTEsIF9fcDNfNTUxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4Ml90IF9fczBfNTUxID0gX19wMF81NTE7IFwKICB1aW50MzJ4Ml90IF9fczFfNTUxID0gX19wMV81NTE7IFwKICB1aW50MzJ4NF90IF9fczJfNTUxID0gX19wMl81NTE7IFwKICB1aW50NjR4Ml90IF9fcmV0XzU1MTsgXAogIF9fcmV0XzU1MSA9IF9fczBfNTUxICsgdm11bGxfdTMyKF9fczFfNTUxLCBzcGxhdF9sYW5lcV91MzIoX19zMl81NTEsIF9fcDNfNTUxKSk7IFwKICBfX3JldF81NTE7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bWxhbF9sYW5lcV91MzIoX19wMF81NTIsIF9fcDFfNTUyLCBfX3AyXzU1MiwgX19wM181NTIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyX3QgX19zMF81NTIgPSBfX3AwXzU1MjsgXAogIHVpbnQzMngyX3QgX19zMV81NTIgPSBfX3AxXzU1MjsgXAogIHVpbnQzMng0X3QgX19zMl81NTIgPSBfX3AyXzU1MjsgXAogIHVpbnQ2NHgyX3QgX19yZXYwXzU1MjsgIF9fcmV2MF81NTIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzU1MiwgX19zMF81NTIsIDEsIDApOyBcCiAgdWludDMyeDJfdCBfX3JldjFfNTUyOyAgX19yZXYxXzU1MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNTUyLCBfX3MxXzU1MiwgMSwgMCk7IFwKICB1aW50MzJ4NF90IF9fcmV2Ml81NTI7ICBfX3JldjJfNTUyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl81NTIsIF9fczJfNTUyLCAzLCAyLCAxLCAwKTsgXAogIHVpbnQ2NHgyX3QgX19yZXRfNTUyOyBcCiAgX19yZXRfNTUyID0gX19yZXYwXzU1MiArIF9fbm9zd2FwX3ZtdWxsX3UzMihfX3JldjFfNTUyLCBfX25vc3dhcF9zcGxhdF9sYW5lcV91MzIoX19yZXYyXzU1MiwgX19wM181NTIpKTsgXAogIF9fcmV0XzU1MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzU1MiwgX19yZXRfNTUyLCAxLCAwKTsgXAogIF9fcmV0XzU1MjsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtbGFsX2xhbmVxX3UxNihfX3AwXzU1MywgX19wMV81NTMsIF9fcDJfNTUzLCBfX3AzXzU1MykgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDRfdCBfX3MwXzU1MyA9IF9fcDBfNTUzOyBcCiAgdWludDE2eDRfdCBfX3MxXzU1MyA9IF9fcDFfNTUzOyBcCiAgdWludDE2eDhfdCBfX3MyXzU1MyA9IF9fcDJfNTUzOyBcCiAgdWludDMyeDRfdCBfX3JldF81NTM7IFwKICBfX3JldF81NTMgPSBfX3MwXzU1MyArIHZtdWxsX3UxNihfX3MxXzU1Mywgc3BsYXRfbGFuZXFfdTE2KF9fczJfNTUzLCBfX3AzXzU1MykpOyBcCiAgX19yZXRfNTUzOyBcCn0pCiNlbHNlCiNkZWZpbmUgdm1sYWxfbGFuZXFfdTE2KF9fcDBfNTU0LCBfX3AxXzU1NCwgX19wMl81NTQsIF9fcDNfNTU0KSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NF90IF9fczBfNTU0ID0gX19wMF81NTQ7IFwKICB1aW50MTZ4NF90IF9fczFfNTU0ID0gX19wMV81NTQ7IFwKICB1aW50MTZ4OF90IF9fczJfNTU0ID0gX19wMl81NTQ7IFwKICB1aW50MzJ4NF90IF9fcmV2MF81NTQ7ICBfX3JldjBfNTU0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF81NTQsIF9fczBfNTU0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQxNng0X3QgX19yZXYxXzU1NDsgIF9fcmV2MV81NTQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzU1NCwgX19zMV81NTQsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDhfdCBfX3JldjJfNTU0OyAgX19yZXYyXzU1NCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfNTU0LCBfX3MyXzU1NCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50MzJ4NF90IF9fcmV0XzU1NDsgXAogIF9fcmV0XzU1NCA9IF9fcmV2MF81NTQgKyBfX25vc3dhcF92bXVsbF91MTYoX19yZXYxXzU1NCwgX19ub3N3YXBfc3BsYXRfbGFuZXFfdTE2KF9fcmV2Ml81NTQsIF9fcDNfNTU0KSk7IFwKICBfX3JldF81NTQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF81NTQsIF9fcmV0XzU1NCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF81NTQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bWxhbF9sYW5lcV9zMzIoX19wMF81NTUsIF9fcDFfNTU1LCBfX3AyXzU1NSwgX19wM181NTUpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJfdCBfX3MwXzU1NSA9IF9fcDBfNTU1OyBcCiAgaW50MzJ4Ml90IF9fczFfNTU1ID0gX19wMV81NTU7IFwKICBpbnQzMng0X3QgX19zMl81NTUgPSBfX3AyXzU1NTsgXAogIGludDY0eDJfdCBfX3JldF81NTU7IFwKICBfX3JldF81NTUgPSBfX3MwXzU1NSArIHZtdWxsX3MzMihfX3MxXzU1NSwgc3BsYXRfbGFuZXFfczMyKF9fczJfNTU1LCBfX3AzXzU1NSkpOyBcCiAgX19yZXRfNTU1OyBcCn0pCiNlbHNlCiNkZWZpbmUgdm1sYWxfbGFuZXFfczMyKF9fcDBfNTU2LCBfX3AxXzU1NiwgX19wMl81NTYsIF9fcDNfNTU2KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgyX3QgX19zMF81NTYgPSBfX3AwXzU1NjsgXAogIGludDMyeDJfdCBfX3MxXzU1NiA9IF9fcDFfNTU2OyBcCiAgaW50MzJ4NF90IF9fczJfNTU2ID0gX19wMl81NTY7IFwKICBpbnQ2NHgyX3QgX19yZXYwXzU1NjsgIF9fcmV2MF81NTYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzU1NiwgX19zMF81NTYsIDEsIDApOyBcCiAgaW50MzJ4Ml90IF9fcmV2MV81NTY7ICBfX3JldjFfNTU2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV81NTYsIF9fczFfNTU2LCAxLCAwKTsgXAogIGludDMyeDRfdCBfX3JldjJfNTU2OyAgX19yZXYyXzU1NiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfNTU2LCBfX3MyXzU1NiwgMywgMiwgMSwgMCk7IFwKICBpbnQ2NHgyX3QgX19yZXRfNTU2OyBcCiAgX19yZXRfNTU2ID0gX19yZXYwXzU1NiArIF9fbm9zd2FwX3ZtdWxsX3MzMihfX3JldjFfNTU2LCBfX25vc3dhcF9zcGxhdF9sYW5lcV9zMzIoX19yZXYyXzU1NiwgX19wM181NTYpKTsgXAogIF9fcmV0XzU1NiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzU1NiwgX19yZXRfNTU2LCAxLCAwKTsgXAogIF9fcmV0XzU1NjsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtbGFsX2xhbmVxX3MxNihfX3AwXzU1NywgX19wMV81NTcsIF9fcDJfNTU3LCBfX3AzXzU1NykgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczBfNTU3ID0gX19wMF81NTc7IFwKICBpbnQxNng0X3QgX19zMV81NTcgPSBfX3AxXzU1NzsgXAogIGludDE2eDhfdCBfX3MyXzU1NyA9IF9fcDJfNTU3OyBcCiAgaW50MzJ4NF90IF9fcmV0XzU1NzsgXAogIF9fcmV0XzU1NyA9IF9fczBfNTU3ICsgdm11bGxfczE2KF9fczFfNTU3LCBzcGxhdF9sYW5lcV9zMTYoX19zMl81NTcsIF9fcDNfNTU3KSk7IFwKICBfX3JldF81NTc7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bWxhbF9sYW5lcV9zMTYoX19wMF81NTgsIF9fcDFfNTU4LCBfX3AyXzU1OCwgX19wM181NTgpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDRfdCBfX3MwXzU1OCA9IF9fcDBfNTU4OyBcCiAgaW50MTZ4NF90IF9fczFfNTU4ID0gX19wMV81NTg7IFwKICBpbnQxNng4X3QgX19zMl81NTggPSBfX3AyXzU1ODsgXAogIGludDMyeDRfdCBfX3JldjBfNTU4OyAgX19yZXYwXzU1OCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNTU4LCBfX3MwXzU1OCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng0X3QgX19yZXYxXzU1ODsgIF9fcmV2MV81NTggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzU1OCwgX19zMV81NTgsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4OF90IF9fcmV2Ml81NTg7ICBfX3JldjJfNTU4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl81NTgsIF9fczJfNTU4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDRfdCBfX3JldF81NTg7IFwKICBfX3JldF81NTggPSBfX3JldjBfNTU4ICsgX19ub3N3YXBfdm11bGxfczE2KF9fcmV2MV81NTgsIF9fbm9zd2FwX3NwbGF0X2xhbmVxX3MxNihfX3JldjJfNTU4LCBfX3AzXzU1OCkpOyBcCiAgX19yZXRfNTU4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNTU4LCBfX3JldF81NTgsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfNTU4OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQ2NHgyX3Qgdm1sc3FfZjY0KGZsb2F0NjR4Ml90IF9fcDAsIGZsb2F0NjR4Ml90IF9fcDEsIGZsb2F0NjR4Ml90IF9fcDIpIHsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgLSBfX3AxICogX19wMjsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDY0eDJfdCB2bWxzcV9mNjQoZmxvYXQ2NHgyX3QgX19wMCwgZmxvYXQ2NHgyX3QgX19wMSwgZmxvYXQ2NHgyX3QgX19wMikgewogIGZsb2F0NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGZsb2F0NjR4Ml90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDEsIDApOwogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwIC0gX19yZXYxICogX19yZXYyOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgpfX2FpIGZsb2F0NjR4MV90IHZtbHNfZjY0KGZsb2F0NjR4MV90IF9fcDAsIGZsb2F0NjR4MV90IF9fcDEsIGZsb2F0NjR4MV90IF9fcDIpIHsKICBmbG9hdDY0eDFfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgLSBfX3AxICogX19wMjsKICByZXR1cm4gX19yZXQ7Cn0KI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm1sc3FfbGFuZXFfdTMyKF9fcDBfNTU5LCBfX3AxXzU1OSwgX19wMl81NTksIF9fcDNfNTU5KSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NF90IF9fczBfNTU5ID0gX19wMF81NTk7IFwKICB1aW50MzJ4NF90IF9fczFfNTU5ID0gX19wMV81NTk7IFwKICB1aW50MzJ4NF90IF9fczJfNTU5ID0gX19wMl81NTk7IFwKICB1aW50MzJ4NF90IF9fcmV0XzU1OTsgXAogIF9fcmV0XzU1OSA9IF9fczBfNTU5IC0gX19zMV81NTkgKiBzcGxhdHFfbGFuZXFfdTMyKF9fczJfNTU5LCBfX3AzXzU1OSk7IFwKICBfX3JldF81NTk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bWxzcV9sYW5lcV91MzIoX19wMF81NjAsIF9fcDFfNTYwLCBfX3AyXzU2MCwgX19wM181NjApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0X3QgX19zMF81NjAgPSBfX3AwXzU2MDsgXAogIHVpbnQzMng0X3QgX19zMV81NjAgPSBfX3AxXzU2MDsgXAogIHVpbnQzMng0X3QgX19zMl81NjAgPSBfX3AyXzU2MDsgXAogIHVpbnQzMng0X3QgX19yZXYwXzU2MDsgIF9fcmV2MF81NjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzU2MCwgX19zMF81NjAsIDMsIDIsIDEsIDApOyBcCiAgdWludDMyeDRfdCBfX3JldjFfNTYwOyAgX19yZXYxXzU2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNTYwLCBfX3MxXzU2MCwgMywgMiwgMSwgMCk7IFwKICB1aW50MzJ4NF90IF9fcmV2Ml81NjA7ICBfX3JldjJfNTYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl81NjAsIF9fczJfNTYwLCAzLCAyLCAxLCAwKTsgXAogIHVpbnQzMng0X3QgX19yZXRfNTYwOyBcCiAgX19yZXRfNTYwID0gX19yZXYwXzU2MCAtIF9fcmV2MV81NjAgKiBfX25vc3dhcF9zcGxhdHFfbGFuZXFfdTMyKF9fcmV2Ml81NjAsIF9fcDNfNTYwKTsgXAogIF9fcmV0XzU2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzU2MCwgX19yZXRfNTYwLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzU2MDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtbHNxX2xhbmVxX3UxNihfX3AwXzU2MSwgX19wMV81NjEsIF9fcDJfNTYxLCBfX3AzXzU2MSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDhfdCBfX3MwXzU2MSA9IF9fcDBfNTYxOyBcCiAgdWludDE2eDhfdCBfX3MxXzU2MSA9IF9fcDFfNTYxOyBcCiAgdWludDE2eDhfdCBfX3MyXzU2MSA9IF9fcDJfNTYxOyBcCiAgdWludDE2eDhfdCBfX3JldF81NjE7IFwKICBfX3JldF81NjEgPSBfX3MwXzU2MSAtIF9fczFfNTYxICogc3BsYXRxX2xhbmVxX3UxNihfX3MyXzU2MSwgX19wM181NjEpOyBcCiAgX19yZXRfNTYxOyBcCn0pCiNlbHNlCiNkZWZpbmUgdm1sc3FfbGFuZXFfdTE2KF9fcDBfNTYyLCBfX3AxXzU2MiwgX19wMl81NjIsIF9fcDNfNTYyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4OF90IF9fczBfNTYyID0gX19wMF81NjI7IFwKICB1aW50MTZ4OF90IF9fczFfNTYyID0gX19wMV81NjI7IFwKICB1aW50MTZ4OF90IF9fczJfNTYyID0gX19wMl81NjI7IFwKICB1aW50MTZ4OF90IF9fcmV2MF81NjI7ICBfX3JldjBfNTYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF81NjIsIF9fczBfNTYyLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQxNng4X3QgX19yZXYxXzU2MjsgIF9fcmV2MV81NjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzU2MiwgX19zMV81NjIsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDhfdCBfX3JldjJfNTYyOyAgX19yZXYyXzU2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfNTYyLCBfX3MyXzU2MiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50MTZ4OF90IF9fcmV0XzU2MjsgXAogIF9fcmV0XzU2MiA9IF9fcmV2MF81NjIgLSBfX3JldjFfNTYyICogX19ub3N3YXBfc3BsYXRxX2xhbmVxX3UxNihfX3JldjJfNTYyLCBfX3AzXzU2Mik7IFwKICBfX3JldF81NjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF81NjIsIF9fcmV0XzU2MiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF81NjI7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bWxzcV9sYW5lcV9mMzIoX19wMF81NjMsIF9fcDFfNTYzLCBfX3AyXzU2MywgX19wM181NjMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NF90IF9fczBfNTYzID0gX19wMF81NjM7IFwKICBmbG9hdDMyeDRfdCBfX3MxXzU2MyA9IF9fcDFfNTYzOyBcCiAgZmxvYXQzMng0X3QgX19zMl81NjMgPSBfX3AyXzU2MzsgXAogIGZsb2F0MzJ4NF90IF9fcmV0XzU2MzsgXAogIF9fcmV0XzU2MyA9IF9fczBfNTYzIC0gX19zMV81NjMgKiBzcGxhdHFfbGFuZXFfZjMyKF9fczJfNTYzLCBfX3AzXzU2Myk7IFwKICBfX3JldF81NjM7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bWxzcV9sYW5lcV9mMzIoX19wMF81NjQsIF9fcDFfNTY0LCBfX3AyXzU2NCwgX19wM181NjQpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NF90IF9fczBfNTY0ID0gX19wMF81NjQ7IFwKICBmbG9hdDMyeDRfdCBfX3MxXzU2NCA9IF9fcDFfNTY0OyBcCiAgZmxvYXQzMng0X3QgX19zMl81NjQgPSBfX3AyXzU2NDsgXAogIGZsb2F0MzJ4NF90IF9fcmV2MF81NjQ7ICBfX3JldjBfNTY0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF81NjQsIF9fczBfNTY0LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MzJ4NF90IF9fcmV2MV81NjQ7ICBfX3JldjFfNTY0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV81NjQsIF9fczFfNTY0LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MzJ4NF90IF9fcmV2Ml81NjQ7ICBfX3JldjJfNTY0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl81NjQsIF9fczJfNTY0LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MzJ4NF90IF9fcmV0XzU2NDsgXAogIF9fcmV0XzU2NCA9IF9fcmV2MF81NjQgLSBfX3JldjFfNTY0ICogX19ub3N3YXBfc3BsYXRxX2xhbmVxX2YzMihfX3JldjJfNTY0LCBfX3AzXzU2NCk7IFwKICBfX3JldF81NjQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF81NjQsIF9fcmV0XzU2NCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF81NjQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bWxzcV9sYW5lcV9zMzIoX19wMF81NjUsIF9fcDFfNTY1LCBfX3AyXzU2NSwgX19wM181NjUpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDRfdCBfX3MwXzU2NSA9IF9fcDBfNTY1OyBcCiAgaW50MzJ4NF90IF9fczFfNTY1ID0gX19wMV81NjU7IFwKICBpbnQzMng0X3QgX19zMl81NjUgPSBfX3AyXzU2NTsgXAogIGludDMyeDRfdCBfX3JldF81NjU7IFwKICBfX3JldF81NjUgPSBfX3MwXzU2NSAtIF9fczFfNTY1ICogc3BsYXRxX2xhbmVxX3MzMihfX3MyXzU2NSwgX19wM181NjUpOyBcCiAgX19yZXRfNTY1OyBcCn0pCiNlbHNlCiNkZWZpbmUgdm1sc3FfbGFuZXFfczMyKF9fcDBfNTY2LCBfX3AxXzU2NiwgX19wMl81NjYsIF9fcDNfNTY2KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMF81NjYgPSBfX3AwXzU2NjsgXAogIGludDMyeDRfdCBfX3MxXzU2NiA9IF9fcDFfNTY2OyBcCiAgaW50MzJ4NF90IF9fczJfNTY2ID0gX19wMl81NjY7IFwKICBpbnQzMng0X3QgX19yZXYwXzU2NjsgIF9fcmV2MF81NjYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzU2NiwgX19zMF81NjYsIDMsIDIsIDEsIDApOyBcCiAgaW50MzJ4NF90IF9fcmV2MV81NjY7ICBfX3JldjFfNTY2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV81NjYsIF9fczFfNTY2LCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDRfdCBfX3JldjJfNTY2OyAgX19yZXYyXzU2NiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfNTY2LCBfX3MyXzU2NiwgMywgMiwgMSwgMCk7IFwKICBpbnQzMng0X3QgX19yZXRfNTY2OyBcCiAgX19yZXRfNTY2ID0gX19yZXYwXzU2NiAtIF9fcmV2MV81NjYgKiBfX25vc3dhcF9zcGxhdHFfbGFuZXFfczMyKF9fcmV2Ml81NjYsIF9fcDNfNTY2KTsgXAogIF9fcmV0XzU2NiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzU2NiwgX19yZXRfNTY2LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzU2NjsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtbHNxX2xhbmVxX3MxNihfX3AwXzU2NywgX19wMV81NjcsIF9fcDJfNTY3LCBfX3AzXzU2NykgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OF90IF9fczBfNTY3ID0gX19wMF81Njc7IFwKICBpbnQxNng4X3QgX19zMV81NjcgPSBfX3AxXzU2NzsgXAogIGludDE2eDhfdCBfX3MyXzU2NyA9IF9fcDJfNTY3OyBcCiAgaW50MTZ4OF90IF9fcmV0XzU2NzsgXAogIF9fcmV0XzU2NyA9IF9fczBfNTY3IC0gX19zMV81NjcgKiBzcGxhdHFfbGFuZXFfczE2KF9fczJfNTY3LCBfX3AzXzU2Nyk7IFwKICBfX3JldF81Njc7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bWxzcV9sYW5lcV9zMTYoX19wMF81NjgsIF9fcDFfNTY4LCBfX3AyXzU2OCwgX19wM181NjgpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDhfdCBfX3MwXzU2OCA9IF9fcDBfNTY4OyBcCiAgaW50MTZ4OF90IF9fczFfNTY4ID0gX19wMV81Njg7IFwKICBpbnQxNng4X3QgX19zMl81NjggPSBfX3AyXzU2ODsgXAogIGludDE2eDhfdCBfX3JldjBfNTY4OyAgX19yZXYwXzU2OCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNTY4LCBfX3MwXzU2OCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng4X3QgX19yZXYxXzU2ODsgIF9fcmV2MV81NjggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzU2OCwgX19zMV81NjgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4OF90IF9fcmV2Ml81Njg7ICBfX3JldjJfNTY4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl81NjgsIF9fczJfNTY4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDhfdCBfX3JldF81Njg7IFwKICBfX3JldF81NjggPSBfX3JldjBfNTY4IC0gX19yZXYxXzU2OCAqIF9fbm9zd2FwX3NwbGF0cV9sYW5lcV9zMTYoX19yZXYyXzU2OCwgX19wM181NjgpOyBcCiAgX19yZXRfNTY4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNTY4LCBfX3JldF81NjgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfNTY4OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm1sc19sYW5lcV91MzIoX19wMF81NjksIF9fcDFfNTY5LCBfX3AyXzU2OSwgX19wM181NjkpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMngyX3QgX19zMF81NjkgPSBfX3AwXzU2OTsgXAogIHVpbnQzMngyX3QgX19zMV81NjkgPSBfX3AxXzU2OTsgXAogIHVpbnQzMng0X3QgX19zMl81NjkgPSBfX3AyXzU2OTsgXAogIHVpbnQzMngyX3QgX19yZXRfNTY5OyBcCiAgX19yZXRfNTY5ID0gX19zMF81NjkgLSBfX3MxXzU2OSAqIHNwbGF0X2xhbmVxX3UzMihfX3MyXzU2OSwgX19wM181NjkpOyBcCiAgX19yZXRfNTY5OyBcCn0pCiNlbHNlCiNkZWZpbmUgdm1sc19sYW5lcV91MzIoX19wMF81NzAsIF9fcDFfNTcwLCBfX3AyXzU3MCwgX19wM181NzApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMngyX3QgX19zMF81NzAgPSBfX3AwXzU3MDsgXAogIHVpbnQzMngyX3QgX19zMV81NzAgPSBfX3AxXzU3MDsgXAogIHVpbnQzMng0X3QgX19zMl81NzAgPSBfX3AyXzU3MDsgXAogIHVpbnQzMngyX3QgX19yZXYwXzU3MDsgIF9fcmV2MF81NzAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzU3MCwgX19zMF81NzAsIDEsIDApOyBcCiAgdWludDMyeDJfdCBfX3JldjFfNTcwOyAgX19yZXYxXzU3MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNTcwLCBfX3MxXzU3MCwgMSwgMCk7IFwKICB1aW50MzJ4NF90IF9fcmV2Ml81NzA7ICBfX3JldjJfNTcwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl81NzAsIF9fczJfNTcwLCAzLCAyLCAxLCAwKTsgXAogIHVpbnQzMngyX3QgX19yZXRfNTcwOyBcCiAgX19yZXRfNTcwID0gX19yZXYwXzU3MCAtIF9fcmV2MV81NzAgKiBfX25vc3dhcF9zcGxhdF9sYW5lcV91MzIoX19yZXYyXzU3MCwgX19wM181NzApOyBcCiAgX19yZXRfNTcwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNTcwLCBfX3JldF81NzAsIDEsIDApOyBcCiAgX19yZXRfNTcwOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm1sc19sYW5lcV91MTYoX19wMF81NzEsIF9fcDFfNTcxLCBfX3AyXzU3MSwgX19wM181NzEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng0X3QgX19zMF81NzEgPSBfX3AwXzU3MTsgXAogIHVpbnQxNng0X3QgX19zMV81NzEgPSBfX3AxXzU3MTsgXAogIHVpbnQxNng4X3QgX19zMl81NzEgPSBfX3AyXzU3MTsgXAogIHVpbnQxNng0X3QgX19yZXRfNTcxOyBcCiAgX19yZXRfNTcxID0gX19zMF81NzEgLSBfX3MxXzU3MSAqIHNwbGF0X2xhbmVxX3UxNihfX3MyXzU3MSwgX19wM181NzEpOyBcCiAgX19yZXRfNTcxOyBcCn0pCiNlbHNlCiNkZWZpbmUgdm1sc19sYW5lcV91MTYoX19wMF81NzIsIF9fcDFfNTcyLCBfX3AyXzU3MiwgX19wM181NzIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng0X3QgX19zMF81NzIgPSBfX3AwXzU3MjsgXAogIHVpbnQxNng0X3QgX19zMV81NzIgPSBfX3AxXzU3MjsgXAogIHVpbnQxNng4X3QgX19zMl81NzIgPSBfX3AyXzU3MjsgXAogIHVpbnQxNng0X3QgX19yZXYwXzU3MjsgIF9fcmV2MF81NzIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzU3MiwgX19zMF81NzIsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDRfdCBfX3JldjFfNTcyOyAgX19yZXYxXzU3MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNTcyLCBfX3MxXzU3MiwgMywgMiwgMSwgMCk7IFwKICB1aW50MTZ4OF90IF9fcmV2Ml81NzI7ICBfX3JldjJfNTcyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl81NzIsIF9fczJfNTcyLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQxNng0X3QgX19yZXRfNTcyOyBcCiAgX19yZXRfNTcyID0gX19yZXYwXzU3MiAtIF9fcmV2MV81NzIgKiBfX25vc3dhcF9zcGxhdF9sYW5lcV91MTYoX19yZXYyXzU3MiwgX19wM181NzIpOyBcCiAgX19yZXRfNTcyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNTcyLCBfX3JldF81NzIsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfNTcyOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm1sc19sYW5lcV9mMzIoX19wMF81NzMsIF9fcDFfNTczLCBfX3AyXzU3MywgX19wM181NzMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4Ml90IF9fczBfNTczID0gX19wMF81NzM7IFwKICBmbG9hdDMyeDJfdCBfX3MxXzU3MyA9IF9fcDFfNTczOyBcCiAgZmxvYXQzMng0X3QgX19zMl81NzMgPSBfX3AyXzU3MzsgXAogIGZsb2F0MzJ4Ml90IF9fcmV0XzU3MzsgXAogIF9fcmV0XzU3MyA9IF9fczBfNTczIC0gX19zMV81NzMgKiBzcGxhdF9sYW5lcV9mMzIoX19zMl81NzMsIF9fcDNfNTczKTsgXAogIF9fcmV0XzU3MzsgXAp9KQojZWxzZQojZGVmaW5lIHZtbHNfbGFuZXFfZjMyKF9fcDBfNTc0LCBfX3AxXzU3NCwgX19wMl81NzQsIF9fcDNfNTc0KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJfdCBfX3MwXzU3NCA9IF9fcDBfNTc0OyBcCiAgZmxvYXQzMngyX3QgX19zMV81NzQgPSBfX3AxXzU3NDsgXAogIGZsb2F0MzJ4NF90IF9fczJfNTc0ID0gX19wMl81NzQ7IFwKICBmbG9hdDMyeDJfdCBfX3JldjBfNTc0OyAgX19yZXYwXzU3NCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNTc0LCBfX3MwXzU3NCwgMSwgMCk7IFwKICBmbG9hdDMyeDJfdCBfX3JldjFfNTc0OyAgX19yZXYxXzU3NCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNTc0LCBfX3MxXzU3NCwgMSwgMCk7IFwKICBmbG9hdDMyeDRfdCBfX3JldjJfNTc0OyAgX19yZXYyXzU3NCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfNTc0LCBfX3MyXzU3NCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDMyeDJfdCBfX3JldF81NzQ7IFwKICBfX3JldF81NzQgPSBfX3JldjBfNTc0IC0gX19yZXYxXzU3NCAqIF9fbm9zd2FwX3NwbGF0X2xhbmVxX2YzMihfX3JldjJfNTc0LCBfX3AzXzU3NCk7IFwKICBfX3JldF81NzQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF81NzQsIF9fcmV0XzU3NCwgMSwgMCk7IFwKICBfX3JldF81NzQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bWxzX2xhbmVxX3MzMihfX3AwXzU3NSwgX19wMV81NzUsIF9fcDJfNTc1LCBfX3AzXzU3NSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Ml90IF9fczBfNTc1ID0gX19wMF81NzU7IFwKICBpbnQzMngyX3QgX19zMV81NzUgPSBfX3AxXzU3NTsgXAogIGludDMyeDRfdCBfX3MyXzU3NSA9IF9fcDJfNTc1OyBcCiAgaW50MzJ4Ml90IF9fcmV0XzU3NTsgXAogIF9fcmV0XzU3NSA9IF9fczBfNTc1IC0gX19zMV81NzUgKiBzcGxhdF9sYW5lcV9zMzIoX19zMl81NzUsIF9fcDNfNTc1KTsgXAogIF9fcmV0XzU3NTsgXAp9KQojZWxzZQojZGVmaW5lIHZtbHNfbGFuZXFfczMyKF9fcDBfNTc2LCBfX3AxXzU3NiwgX19wMl81NzYsIF9fcDNfNTc2KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMngyX3QgX19zMF81NzYgPSBfX3AwXzU3NjsgXAogIGludDMyeDJfdCBfX3MxXzU3NiA9IF9fcDFfNTc2OyBcCiAgaW50MzJ4NF90IF9fczJfNTc2ID0gX19wMl81NzY7IFwKICBpbnQzMngyX3QgX19yZXYwXzU3NjsgIF9fcmV2MF81NzYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzU3NiwgX19zMF81NzYsIDEsIDApOyBcCiAgaW50MzJ4Ml90IF9fcmV2MV81NzY7ICBfX3JldjFfNTc2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV81NzYsIF9fczFfNTc2LCAxLCAwKTsgXAogIGludDMyeDRfdCBfX3JldjJfNTc2OyAgX19yZXYyXzU3NiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfNTc2LCBfX3MyXzU3NiwgMywgMiwgMSwgMCk7IFwKICBpbnQzMngyX3QgX19yZXRfNTc2OyBcCiAgX19yZXRfNTc2ID0gX19yZXYwXzU3NiAtIF9fcmV2MV81NzYgKiBfX25vc3dhcF9zcGxhdF9sYW5lcV9zMzIoX19yZXYyXzU3NiwgX19wM181NzYpOyBcCiAgX19yZXRfNTc2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNTc2LCBfX3JldF81NzYsIDEsIDApOyBcCiAgX19yZXRfNTc2OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm1sc19sYW5lcV9zMTYoX19wMF81NzcsIF9fcDFfNTc3LCBfX3AyXzU3NywgX19wM181NzcpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDRfdCBfX3MwXzU3NyA9IF9fcDBfNTc3OyBcCiAgaW50MTZ4NF90IF9fczFfNTc3ID0gX19wMV81Nzc7IFwKICBpbnQxNng4X3QgX19zMl81NzcgPSBfX3AyXzU3NzsgXAogIGludDE2eDRfdCBfX3JldF81Nzc7IFwKICBfX3JldF81NzcgPSBfX3MwXzU3NyAtIF9fczFfNTc3ICogc3BsYXRfbGFuZXFfczE2KF9fczJfNTc3LCBfX3AzXzU3Nyk7IFwKICBfX3JldF81Nzc7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bWxzX2xhbmVxX3MxNihfX3AwXzU3OCwgX19wMV81NzgsIF9fcDJfNTc4LCBfX3AzXzU3OCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NF90IF9fczBfNTc4ID0gX19wMF81Nzg7IFwKICBpbnQxNng0X3QgX19zMV81NzggPSBfX3AxXzU3ODsgXAogIGludDE2eDhfdCBfX3MyXzU3OCA9IF9fcDJfNTc4OyBcCiAgaW50MTZ4NF90IF9fcmV2MF81Nzg7ICBfX3JldjBfNTc4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF81NzgsIF9fczBfNTc4LCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDRfdCBfX3JldjFfNTc4OyAgX19yZXYxXzU3OCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNTc4LCBfX3MxXzU3OCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng4X3QgX19yZXYyXzU3ODsgIF9fcmV2Ml81NzggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzU3OCwgX19zMl81NzgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4NF90IF9fcmV0XzU3ODsgXAogIF9fcmV0XzU3OCA9IF9fcmV2MF81NzggLSBfX3JldjFfNTc4ICogX19ub3N3YXBfc3BsYXRfbGFuZXFfczE2KF9fcmV2Ml81NzgsIF9fcDNfNTc4KTsgXAogIF9fcmV0XzU3OCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzU3OCwgX19yZXRfNTc4LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzU3ODsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtbHNsX2hpZ2hfbGFuZV91MzIoX19wMF81NzksIF9fcDFfNTc5LCBfX3AyXzU3OSwgX19wM181NzkpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyX3QgX19zMF81NzkgPSBfX3AwXzU3OTsgXAogIHVpbnQzMng0X3QgX19zMV81NzkgPSBfX3AxXzU3OTsgXAogIHVpbnQzMngyX3QgX19zMl81NzkgPSBfX3AyXzU3OTsgXAogIHVpbnQ2NHgyX3QgX19yZXRfNTc5OyBcCiAgX19yZXRfNTc5ID0gX19zMF81NzkgLSB2bXVsbF91MzIodmdldF9oaWdoX3UzMihfX3MxXzU3OSksIHNwbGF0X2xhbmVfdTMyKF9fczJfNTc5LCBfX3AzXzU3OSkpOyBcCiAgX19yZXRfNTc5OyBcCn0pCiNlbHNlCiNkZWZpbmUgdm1sc2xfaGlnaF9sYW5lX3UzMihfX3AwXzU4MCwgX19wMV81ODAsIF9fcDJfNTgwLCBfX3AzXzU4MCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDJfdCBfX3MwXzU4MCA9IF9fcDBfNTgwOyBcCiAgdWludDMyeDRfdCBfX3MxXzU4MCA9IF9fcDFfNTgwOyBcCiAgdWludDMyeDJfdCBfX3MyXzU4MCA9IF9fcDJfNTgwOyBcCiAgdWludDY0eDJfdCBfX3JldjBfNTgwOyAgX19yZXYwXzU4MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNTgwLCBfX3MwXzU4MCwgMSwgMCk7IFwKICB1aW50MzJ4NF90IF9fcmV2MV81ODA7ICBfX3JldjFfNTgwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV81ODAsIF9fczFfNTgwLCAzLCAyLCAxLCAwKTsgXAogIHVpbnQzMngyX3QgX19yZXYyXzU4MDsgIF9fcmV2Ml81ODAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzU4MCwgX19zMl81ODAsIDEsIDApOyBcCiAgdWludDY0eDJfdCBfX3JldF81ODA7IFwKICBfX3JldF81ODAgPSBfX3JldjBfNTgwIC0gX19ub3N3YXBfdm11bGxfdTMyKF9fbm9zd2FwX3ZnZXRfaGlnaF91MzIoX19yZXYxXzU4MCksIF9fbm9zd2FwX3NwbGF0X2xhbmVfdTMyKF9fcmV2Ml81ODAsIF9fcDNfNTgwKSk7IFwKICBfX3JldF81ODAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF81ODAsIF9fcmV0XzU4MCwgMSwgMCk7IFwKICBfX3JldF81ODA7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bWxzbF9oaWdoX2xhbmVfdTE2KF9fcDBfNTgxLCBfX3AxXzU4MSwgX19wMl81ODEsIF9fcDNfNTgxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NF90IF9fczBfNTgxID0gX19wMF81ODE7IFwKICB1aW50MTZ4OF90IF9fczFfNTgxID0gX19wMV81ODE7IFwKICB1aW50MTZ4NF90IF9fczJfNTgxID0gX19wMl81ODE7IFwKICB1aW50MzJ4NF90IF9fcmV0XzU4MTsgXAogIF9fcmV0XzU4MSA9IF9fczBfNTgxIC0gdm11bGxfdTE2KHZnZXRfaGlnaF91MTYoX19zMV81ODEpLCBzcGxhdF9sYW5lX3UxNihfX3MyXzU4MSwgX19wM181ODEpKTsgXAogIF9fcmV0XzU4MTsgXAp9KQojZWxzZQojZGVmaW5lIHZtbHNsX2hpZ2hfbGFuZV91MTYoX19wMF81ODIsIF9fcDFfNTgyLCBfX3AyXzU4MiwgX19wM181ODIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0X3QgX19zMF81ODIgPSBfX3AwXzU4MjsgXAogIHVpbnQxNng4X3QgX19zMV81ODIgPSBfX3AxXzU4MjsgXAogIHVpbnQxNng0X3QgX19zMl81ODIgPSBfX3AyXzU4MjsgXAogIHVpbnQzMng0X3QgX19yZXYwXzU4MjsgIF9fcmV2MF81ODIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzU4MiwgX19zMF81ODIsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDhfdCBfX3JldjFfNTgyOyAgX19yZXYxXzU4MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNTgyLCBfX3MxXzU4MiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50MTZ4NF90IF9fcmV2Ml81ODI7ICBfX3JldjJfNTgyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl81ODIsIF9fczJfNTgyLCAzLCAyLCAxLCAwKTsgXAogIHVpbnQzMng0X3QgX19yZXRfNTgyOyBcCiAgX19yZXRfNTgyID0gX19yZXYwXzU4MiAtIF9fbm9zd2FwX3ZtdWxsX3UxNihfX25vc3dhcF92Z2V0X2hpZ2hfdTE2KF9fcmV2MV81ODIpLCBfX25vc3dhcF9zcGxhdF9sYW5lX3UxNihfX3JldjJfNTgyLCBfX3AzXzU4MikpOyBcCiAgX19yZXRfNTgyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNTgyLCBfX3JldF81ODIsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfNTgyOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm1sc2xfaGlnaF9sYW5lX3MzMihfX3AwXzU4MywgX19wMV81ODMsIF9fcDJfNTgzLCBfX3AzXzU4MykgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4Ml90IF9fczBfNTgzID0gX19wMF81ODM7IFwKICBpbnQzMng0X3QgX19zMV81ODMgPSBfX3AxXzU4MzsgXAogIGludDMyeDJfdCBfX3MyXzU4MyA9IF9fcDJfNTgzOyBcCiAgaW50NjR4Ml90IF9fcmV0XzU4MzsgXAogIF9fcmV0XzU4MyA9IF9fczBfNTgzIC0gdm11bGxfczMyKHZnZXRfaGlnaF9zMzIoX19zMV81ODMpLCBzcGxhdF9sYW5lX3MzMihfX3MyXzU4MywgX19wM181ODMpKTsgXAogIF9fcmV0XzU4MzsgXAp9KQojZWxzZQojZGVmaW5lIHZtbHNsX2hpZ2hfbGFuZV9zMzIoX19wMF81ODQsIF9fcDFfNTg0LCBfX3AyXzU4NCwgX19wM181ODQpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJfdCBfX3MwXzU4NCA9IF9fcDBfNTg0OyBcCiAgaW50MzJ4NF90IF9fczFfNTg0ID0gX19wMV81ODQ7IFwKICBpbnQzMngyX3QgX19zMl81ODQgPSBfX3AyXzU4NDsgXAogIGludDY0eDJfdCBfX3JldjBfNTg0OyAgX19yZXYwXzU4NCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNTg0LCBfX3MwXzU4NCwgMSwgMCk7IFwKICBpbnQzMng0X3QgX19yZXYxXzU4NDsgIF9fcmV2MV81ODQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzU4NCwgX19zMV81ODQsIDMsIDIsIDEsIDApOyBcCiAgaW50MzJ4Ml90IF9fcmV2Ml81ODQ7ICBfX3JldjJfNTg0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl81ODQsIF9fczJfNTg0LCAxLCAwKTsgXAogIGludDY0eDJfdCBfX3JldF81ODQ7IFwKICBfX3JldF81ODQgPSBfX3JldjBfNTg0IC0gX19ub3N3YXBfdm11bGxfczMyKF9fbm9zd2FwX3ZnZXRfaGlnaF9zMzIoX19yZXYxXzU4NCksIF9fbm9zd2FwX3NwbGF0X2xhbmVfczMyKF9fcmV2Ml81ODQsIF9fcDNfNTg0KSk7IFwKICBfX3JldF81ODQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF81ODQsIF9fcmV0XzU4NCwgMSwgMCk7IFwKICBfX3JldF81ODQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bWxzbF9oaWdoX2xhbmVfczE2KF9fcDBfNTg1LCBfX3AxXzU4NSwgX19wMl81ODUsIF9fcDNfNTg1KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMF81ODUgPSBfX3AwXzU4NTsgXAogIGludDE2eDhfdCBfX3MxXzU4NSA9IF9fcDFfNTg1OyBcCiAgaW50MTZ4NF90IF9fczJfNTg1ID0gX19wMl81ODU7IFwKICBpbnQzMng0X3QgX19yZXRfNTg1OyBcCiAgX19yZXRfNTg1ID0gX19zMF81ODUgLSB2bXVsbF9zMTYodmdldF9oaWdoX3MxNihfX3MxXzU4NSksIHNwbGF0X2xhbmVfczE2KF9fczJfNTg1LCBfX3AzXzU4NSkpOyBcCiAgX19yZXRfNTg1OyBcCn0pCiNlbHNlCiNkZWZpbmUgdm1sc2xfaGlnaF9sYW5lX3MxNihfX3AwXzU4NiwgX19wMV81ODYsIF9fcDJfNTg2LCBfX3AzXzU4NikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczBfNTg2ID0gX19wMF81ODY7IFwKICBpbnQxNng4X3QgX19zMV81ODYgPSBfX3AxXzU4NjsgXAogIGludDE2eDRfdCBfX3MyXzU4NiA9IF9fcDJfNTg2OyBcCiAgaW50MzJ4NF90IF9fcmV2MF81ODY7ICBfX3JldjBfNTg2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF81ODYsIF9fczBfNTg2LCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDhfdCBfX3JldjFfNTg2OyAgX19yZXYxXzU4NiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNTg2LCBfX3MxXzU4NiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng0X3QgX19yZXYyXzU4NjsgIF9fcmV2Ml81ODYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzU4NiwgX19zMl81ODYsIDMsIDIsIDEsIDApOyBcCiAgaW50MzJ4NF90IF9fcmV0XzU4NjsgXAogIF9fcmV0XzU4NiA9IF9fcmV2MF81ODYgLSBfX25vc3dhcF92bXVsbF9zMTYoX19ub3N3YXBfdmdldF9oaWdoX3MxNihfX3JldjFfNTg2KSwgX19ub3N3YXBfc3BsYXRfbGFuZV9zMTYoX19yZXYyXzU4NiwgX19wM181ODYpKTsgXAogIF9fcmV0XzU4NiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzU4NiwgX19yZXRfNTg2LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzU4NjsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtbHNsX2hpZ2hfbGFuZXFfdTMyKF9fcDBfNTg3LCBfX3AxXzU4NywgX19wMl81ODcsIF9fcDNfNTg3KSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4Ml90IF9fczBfNTg3ID0gX19wMF81ODc7IFwKICB1aW50MzJ4NF90IF9fczFfNTg3ID0gX19wMV81ODc7IFwKICB1aW50MzJ4NF90IF9fczJfNTg3ID0gX19wMl81ODc7IFwKICB1aW50NjR4Ml90IF9fcmV0XzU4NzsgXAogIF9fcmV0XzU4NyA9IF9fczBfNTg3IC0gdm11bGxfdTMyKHZnZXRfaGlnaF91MzIoX19zMV81ODcpLCBzcGxhdF9sYW5lcV91MzIoX19zMl81ODcsIF9fcDNfNTg3KSk7IFwKICBfX3JldF81ODc7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bWxzbF9oaWdoX2xhbmVxX3UzMihfX3AwXzU4OCwgX19wMV81ODgsIF9fcDJfNTg4LCBfX3AzXzU4OCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDJfdCBfX3MwXzU4OCA9IF9fcDBfNTg4OyBcCiAgdWludDMyeDRfdCBfX3MxXzU4OCA9IF9fcDFfNTg4OyBcCiAgdWludDMyeDRfdCBfX3MyXzU4OCA9IF9fcDJfNTg4OyBcCiAgdWludDY0eDJfdCBfX3JldjBfNTg4OyAgX19yZXYwXzU4OCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNTg4LCBfX3MwXzU4OCwgMSwgMCk7IFwKICB1aW50MzJ4NF90IF9fcmV2MV81ODg7ICBfX3JldjFfNTg4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV81ODgsIF9fczFfNTg4LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQzMng0X3QgX19yZXYyXzU4ODsgIF9fcmV2Ml81ODggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzU4OCwgX19zMl81ODgsIDMsIDIsIDEsIDApOyBcCiAgdWludDY0eDJfdCBfX3JldF81ODg7IFwKICBfX3JldF81ODggPSBfX3JldjBfNTg4IC0gX19ub3N3YXBfdm11bGxfdTMyKF9fbm9zd2FwX3ZnZXRfaGlnaF91MzIoX19yZXYxXzU4OCksIF9fbm9zd2FwX3NwbGF0X2xhbmVxX3UzMihfX3JldjJfNTg4LCBfX3AzXzU4OCkpOyBcCiAgX19yZXRfNTg4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNTg4LCBfX3JldF81ODgsIDEsIDApOyBcCiAgX19yZXRfNTg4OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm1sc2xfaGlnaF9sYW5lcV91MTYoX19wMF81ODksIF9fcDFfNTg5LCBfX3AyXzU4OSwgX19wM181ODkpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0X3QgX19zMF81ODkgPSBfX3AwXzU4OTsgXAogIHVpbnQxNng4X3QgX19zMV81ODkgPSBfX3AxXzU4OTsgXAogIHVpbnQxNng4X3QgX19zMl81ODkgPSBfX3AyXzU4OTsgXAogIHVpbnQzMng0X3QgX19yZXRfNTg5OyBcCiAgX19yZXRfNTg5ID0gX19zMF81ODkgLSB2bXVsbF91MTYodmdldF9oaWdoX3UxNihfX3MxXzU4OSksIHNwbGF0X2xhbmVxX3UxNihfX3MyXzU4OSwgX19wM181ODkpKTsgXAogIF9fcmV0XzU4OTsgXAp9KQojZWxzZQojZGVmaW5lIHZtbHNsX2hpZ2hfbGFuZXFfdTE2KF9fcDBfNTkwLCBfX3AxXzU5MCwgX19wMl81OTAsIF9fcDNfNTkwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NF90IF9fczBfNTkwID0gX19wMF81OTA7IFwKICB1aW50MTZ4OF90IF9fczFfNTkwID0gX19wMV81OTA7IFwKICB1aW50MTZ4OF90IF9fczJfNTkwID0gX19wMl81OTA7IFwKICB1aW50MzJ4NF90IF9fcmV2MF81OTA7ICBfX3JldjBfNTkwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF81OTAsIF9fczBfNTkwLCAzLCAyLCAxLCAwKTsgXAogIHVpbnQxNng4X3QgX19yZXYxXzU5MDsgIF9fcmV2MV81OTAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzU5MCwgX19zMV81OTAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDhfdCBfX3JldjJfNTkwOyAgX19yZXYyXzU5MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfNTkwLCBfX3MyXzU5MCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50MzJ4NF90IF9fcmV0XzU5MDsgXAogIF9fcmV0XzU5MCA9IF9fcmV2MF81OTAgLSBfX25vc3dhcF92bXVsbF91MTYoX19ub3N3YXBfdmdldF9oaWdoX3UxNihfX3JldjFfNTkwKSwgX19ub3N3YXBfc3BsYXRfbGFuZXFfdTE2KF9fcmV2Ml81OTAsIF9fcDNfNTkwKSk7IFwKICBfX3JldF81OTAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF81OTAsIF9fcmV0XzU5MCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF81OTA7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bWxzbF9oaWdoX2xhbmVxX3MzMihfX3AwXzU5MSwgX19wMV81OTEsIF9fcDJfNTkxLCBfX3AzXzU5MSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4Ml90IF9fczBfNTkxID0gX19wMF81OTE7IFwKICBpbnQzMng0X3QgX19zMV81OTEgPSBfX3AxXzU5MTsgXAogIGludDMyeDRfdCBfX3MyXzU5MSA9IF9fcDJfNTkxOyBcCiAgaW50NjR4Ml90IF9fcmV0XzU5MTsgXAogIF9fcmV0XzU5MSA9IF9fczBfNTkxIC0gdm11bGxfczMyKHZnZXRfaGlnaF9zMzIoX19zMV81OTEpLCBzcGxhdF9sYW5lcV9zMzIoX19zMl81OTEsIF9fcDNfNTkxKSk7IFwKICBfX3JldF81OTE7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bWxzbF9oaWdoX2xhbmVxX3MzMihfX3AwXzU5MiwgX19wMV81OTIsIF9fcDJfNTkyLCBfX3AzXzU5MikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4Ml90IF9fczBfNTkyID0gX19wMF81OTI7IFwKICBpbnQzMng0X3QgX19zMV81OTIgPSBfX3AxXzU5MjsgXAogIGludDMyeDRfdCBfX3MyXzU5MiA9IF9fcDJfNTkyOyBcCiAgaW50NjR4Ml90IF9fcmV2MF81OTI7ICBfX3JldjBfNTkyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF81OTIsIF9fczBfNTkyLCAxLCAwKTsgXAogIGludDMyeDRfdCBfX3JldjFfNTkyOyAgX19yZXYxXzU5MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNTkyLCBfX3MxXzU5MiwgMywgMiwgMSwgMCk7IFwKICBpbnQzMng0X3QgX19yZXYyXzU5MjsgIF9fcmV2Ml81OTIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzU5MiwgX19zMl81OTIsIDMsIDIsIDEsIDApOyBcCiAgaW50NjR4Ml90IF9fcmV0XzU5MjsgXAogIF9fcmV0XzU5MiA9IF9fcmV2MF81OTIgLSBfX25vc3dhcF92bXVsbF9zMzIoX19ub3N3YXBfdmdldF9oaWdoX3MzMihfX3JldjFfNTkyKSwgX19ub3N3YXBfc3BsYXRfbGFuZXFfczMyKF9fcmV2Ml81OTIsIF9fcDNfNTkyKSk7IFwKICBfX3JldF81OTIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF81OTIsIF9fcmV0XzU5MiwgMSwgMCk7IFwKICBfX3JldF81OTI7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bWxzbF9oaWdoX2xhbmVxX3MxNihfX3AwXzU5MywgX19wMV81OTMsIF9fcDJfNTkzLCBfX3AzXzU5MykgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczBfNTkzID0gX19wMF81OTM7IFwKICBpbnQxNng4X3QgX19zMV81OTMgPSBfX3AxXzU5MzsgXAogIGludDE2eDhfdCBfX3MyXzU5MyA9IF9fcDJfNTkzOyBcCiAgaW50MzJ4NF90IF9fcmV0XzU5MzsgXAogIF9fcmV0XzU5MyA9IF9fczBfNTkzIC0gdm11bGxfczE2KHZnZXRfaGlnaF9zMTYoX19zMV81OTMpLCBzcGxhdF9sYW5lcV9zMTYoX19zMl81OTMsIF9fcDNfNTkzKSk7IFwKICBfX3JldF81OTM7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bWxzbF9oaWdoX2xhbmVxX3MxNihfX3AwXzU5NCwgX19wMV81OTQsIF9fcDJfNTk0LCBfX3AzXzU5NCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczBfNTk0ID0gX19wMF81OTQ7IFwKICBpbnQxNng4X3QgX19zMV81OTQgPSBfX3AxXzU5NDsgXAogIGludDE2eDhfdCBfX3MyXzU5NCA9IF9fcDJfNTk0OyBcCiAgaW50MzJ4NF90IF9fcmV2MF81OTQ7ICBfX3JldjBfNTk0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF81OTQsIF9fczBfNTk0LCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDhfdCBfX3JldjFfNTk0OyAgX19yZXYxXzU5NCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNTk0LCBfX3MxXzU5NCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng4X3QgX19yZXYyXzU5NDsgIF9fcmV2Ml81OTQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzU5NCwgX19zMl81OTQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50MzJ4NF90IF9fcmV0XzU5NDsgXAogIF9fcmV0XzU5NCA9IF9fcmV2MF81OTQgLSBfX25vc3dhcF92bXVsbF9zMTYoX19ub3N3YXBfdmdldF9oaWdoX3MxNihfX3JldjFfNTk0KSwgX19ub3N3YXBfc3BsYXRfbGFuZXFfczE2KF9fcmV2Ml81OTQsIF9fcDNfNTk0KSk7IFwKICBfX3JldF81OTQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF81OTQsIF9fcmV0XzU5NCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF81OTQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bWxzbF9sYW5lcV91MzIoX19wMF81OTUsIF9fcDFfNTk1LCBfX3AyXzU5NSwgX19wM181OTUpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyX3QgX19zMF81OTUgPSBfX3AwXzU5NTsgXAogIHVpbnQzMngyX3QgX19zMV81OTUgPSBfX3AxXzU5NTsgXAogIHVpbnQzMng0X3QgX19zMl81OTUgPSBfX3AyXzU5NTsgXAogIHVpbnQ2NHgyX3QgX19yZXRfNTk1OyBcCiAgX19yZXRfNTk1ID0gX19zMF81OTUgLSB2bXVsbF91MzIoX19zMV81OTUsIHNwbGF0X2xhbmVxX3UzMihfX3MyXzU5NSwgX19wM181OTUpKTsgXAogIF9fcmV0XzU5NTsgXAp9KQojZWxzZQojZGVmaW5lIHZtbHNsX2xhbmVxX3UzMihfX3AwXzU5NiwgX19wMV81OTYsIF9fcDJfNTk2LCBfX3AzXzU5NikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDJfdCBfX3MwXzU5NiA9IF9fcDBfNTk2OyBcCiAgdWludDMyeDJfdCBfX3MxXzU5NiA9IF9fcDFfNTk2OyBcCiAgdWludDMyeDRfdCBfX3MyXzU5NiA9IF9fcDJfNTk2OyBcCiAgdWludDY0eDJfdCBfX3JldjBfNTk2OyAgX19yZXYwXzU5NiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNTk2LCBfX3MwXzU5NiwgMSwgMCk7IFwKICB1aW50MzJ4Ml90IF9fcmV2MV81OTY7ICBfX3JldjFfNTk2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV81OTYsIF9fczFfNTk2LCAxLCAwKTsgXAogIHVpbnQzMng0X3QgX19yZXYyXzU5NjsgIF9fcmV2Ml81OTYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzU5NiwgX19zMl81OTYsIDMsIDIsIDEsIDApOyBcCiAgdWludDY0eDJfdCBfX3JldF81OTY7IFwKICBfX3JldF81OTYgPSBfX3JldjBfNTk2IC0gX19ub3N3YXBfdm11bGxfdTMyKF9fcmV2MV81OTYsIF9fbm9zd2FwX3NwbGF0X2xhbmVxX3UzMihfX3JldjJfNTk2LCBfX3AzXzU5NikpOyBcCiAgX19yZXRfNTk2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNTk2LCBfX3JldF81OTYsIDEsIDApOyBcCiAgX19yZXRfNTk2OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm1sc2xfbGFuZXFfdTE2KF9fcDBfNTk3LCBfX3AxXzU5NywgX19wMl81OTcsIF9fcDNfNTk3KSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NF90IF9fczBfNTk3ID0gX19wMF81OTc7IFwKICB1aW50MTZ4NF90IF9fczFfNTk3ID0gX19wMV81OTc7IFwKICB1aW50MTZ4OF90IF9fczJfNTk3ID0gX19wMl81OTc7IFwKICB1aW50MzJ4NF90IF9fcmV0XzU5NzsgXAogIF9fcmV0XzU5NyA9IF9fczBfNTk3IC0gdm11bGxfdTE2KF9fczFfNTk3LCBzcGxhdF9sYW5lcV91MTYoX19zMl81OTcsIF9fcDNfNTk3KSk7IFwKICBfX3JldF81OTc7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bWxzbF9sYW5lcV91MTYoX19wMF81OTgsIF9fcDFfNTk4LCBfX3AyXzU5OCwgX19wM181OTgpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0X3QgX19zMF81OTggPSBfX3AwXzU5ODsgXAogIHVpbnQxNng0X3QgX19zMV81OTggPSBfX3AxXzU5ODsgXAogIHVpbnQxNng4X3QgX19zMl81OTggPSBfX3AyXzU5ODsgXAogIHVpbnQzMng0X3QgX19yZXYwXzU5ODsgIF9fcmV2MF81OTggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzU5OCwgX19zMF81OTgsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDRfdCBfX3JldjFfNTk4OyAgX19yZXYxXzU5OCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNTk4LCBfX3MxXzU5OCwgMywgMiwgMSwgMCk7IFwKICB1aW50MTZ4OF90IF9fcmV2Ml81OTg7ICBfX3JldjJfNTk4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl81OTgsIF9fczJfNTk4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQzMng0X3QgX19yZXRfNTk4OyBcCiAgX19yZXRfNTk4ID0gX19yZXYwXzU5OCAtIF9fbm9zd2FwX3ZtdWxsX3UxNihfX3JldjFfNTk4LCBfX25vc3dhcF9zcGxhdF9sYW5lcV91MTYoX19yZXYyXzU5OCwgX19wM181OTgpKTsgXAogIF9fcmV0XzU5OCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzU5OCwgX19yZXRfNTk4LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzU5ODsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtbHNsX2xhbmVxX3MzMihfX3AwXzU5OSwgX19wMV81OTksIF9fcDJfNTk5LCBfX3AzXzU5OSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4Ml90IF9fczBfNTk5ID0gX19wMF81OTk7IFwKICBpbnQzMngyX3QgX19zMV81OTkgPSBfX3AxXzU5OTsgXAogIGludDMyeDRfdCBfX3MyXzU5OSA9IF9fcDJfNTk5OyBcCiAgaW50NjR4Ml90IF9fcmV0XzU5OTsgXAogIF9fcmV0XzU5OSA9IF9fczBfNTk5IC0gdm11bGxfczMyKF9fczFfNTk5LCBzcGxhdF9sYW5lcV9zMzIoX19zMl81OTksIF9fcDNfNTk5KSk7IFwKICBfX3JldF81OTk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bWxzbF9sYW5lcV9zMzIoX19wMF82MDAsIF9fcDFfNjAwLCBfX3AyXzYwMCwgX19wM182MDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJfdCBfX3MwXzYwMCA9IF9fcDBfNjAwOyBcCiAgaW50MzJ4Ml90IF9fczFfNjAwID0gX19wMV82MDA7IFwKICBpbnQzMng0X3QgX19zMl82MDAgPSBfX3AyXzYwMDsgXAogIGludDY0eDJfdCBfX3JldjBfNjAwOyAgX19yZXYwXzYwMCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNjAwLCBfX3MwXzYwMCwgMSwgMCk7IFwKICBpbnQzMngyX3QgX19yZXYxXzYwMDsgIF9fcmV2MV82MDAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzYwMCwgX19zMV82MDAsIDEsIDApOyBcCiAgaW50MzJ4NF90IF9fcmV2Ml82MDA7ICBfX3JldjJfNjAwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl82MDAsIF9fczJfNjAwLCAzLCAyLCAxLCAwKTsgXAogIGludDY0eDJfdCBfX3JldF82MDA7IFwKICBfX3JldF82MDAgPSBfX3JldjBfNjAwIC0gX19ub3N3YXBfdm11bGxfczMyKF9fcmV2MV82MDAsIF9fbm9zd2FwX3NwbGF0X2xhbmVxX3MzMihfX3JldjJfNjAwLCBfX3AzXzYwMCkpOyBcCiAgX19yZXRfNjAwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNjAwLCBfX3JldF82MDAsIDEsIDApOyBcCiAgX19yZXRfNjAwOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm1sc2xfbGFuZXFfczE2KF9fcDBfNjAxLCBfX3AxXzYwMSwgX19wMl82MDEsIF9fcDNfNjAxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMF82MDEgPSBfX3AwXzYwMTsgXAogIGludDE2eDRfdCBfX3MxXzYwMSA9IF9fcDFfNjAxOyBcCiAgaW50MTZ4OF90IF9fczJfNjAxID0gX19wMl82MDE7IFwKICBpbnQzMng0X3QgX19yZXRfNjAxOyBcCiAgX19yZXRfNjAxID0gX19zMF82MDEgLSB2bXVsbF9zMTYoX19zMV82MDEsIHNwbGF0X2xhbmVxX3MxNihfX3MyXzYwMSwgX19wM182MDEpKTsgXAogIF9fcmV0XzYwMTsgXAp9KQojZWxzZQojZGVmaW5lIHZtbHNsX2xhbmVxX3MxNihfX3AwXzYwMiwgX19wMV82MDIsIF9fcDJfNjAyLCBfX3AzXzYwMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczBfNjAyID0gX19wMF82MDI7IFwKICBpbnQxNng0X3QgX19zMV82MDIgPSBfX3AxXzYwMjsgXAogIGludDE2eDhfdCBfX3MyXzYwMiA9IF9fcDJfNjAyOyBcCiAgaW50MzJ4NF90IF9fcmV2MF82MDI7ICBfX3JldjBfNjAyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF82MDIsIF9fczBfNjAyLCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDRfdCBfX3JldjFfNjAyOyAgX19yZXYxXzYwMiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNjAyLCBfX3MxXzYwMiwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng4X3QgX19yZXYyXzYwMjsgIF9fcmV2Ml82MDIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzYwMiwgX19zMl82MDIsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50MzJ4NF90IF9fcmV0XzYwMjsgXAogIF9fcmV0XzYwMiA9IF9fcmV2MF82MDIgLSBfX25vc3dhcF92bXVsbF9zMTYoX19yZXYxXzYwMiwgX19ub3N3YXBfc3BsYXRfbGFuZXFfczE2KF9fcmV2Ml82MDIsIF9fcDNfNjAyKSk7IFwKICBfX3JldF82MDIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF82MDIsIF9fcmV0XzYwMiwgMywgMiwgMSwgMCk7IFwKICBfX3JldF82MDI7IFwKfSkKI2VuZGlmCgpfX2FpIHBvbHk2NHgxX3Qgdm1vdl9uX3A2NChwb2x5NjRfdCBfX3AwKSB7CiAgcG9seTY0eDFfdCBfX3JldDsKICBfX3JldCA9IChwb2x5NjR4MV90KSB7X19wMH07CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHBvbHk2NHgyX3Qgdm1vdnFfbl9wNjQocG9seTY0X3QgX19wMCkgewogIHBvbHk2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTY0eDJfdCkge19fcDAsIF9fcDB9OwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHBvbHk2NHgyX3Qgdm1vdnFfbl9wNjQocG9seTY0X3QgX19wMCkgewogIHBvbHk2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTY0eDJfdCkge19fcDAsIF9fcDB9OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDY0eDJfdCB2bW92cV9uX2Y2NChmbG9hdDY0X3QgX19wMCkgewogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4Ml90KSB7X19wMCwgX19wMH07CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQ2NHgyX3Qgdm1vdnFfbl9mNjQoZmxvYXQ2NF90IF9fcDApIHsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDJfdCkge19fcDAsIF9fcDB9OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgpfX2FpIGZsb2F0NjR4MV90IHZtb3Zfbl9mNjQoZmxvYXQ2NF90IF9fcDApIHsKICBmbG9hdDY0eDFfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDFfdCkge19fcDB9OwogIHJldHVybiBfX3JldDsKfQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4OF90IHZtb3ZsX2hpZ2hfdTgodWludDh4MTZfdCBfX3AwXzYwMykgewogIHVpbnQxNng4X3QgX19yZXRfNjAzOwogIHVpbnQ4eDhfdCBfX2ExXzYwMyA9IHZnZXRfaGlnaF91OChfX3AwXzYwMyk7CiAgX19yZXRfNjAzID0gKHVpbnQxNng4X3QpKHZzaGxsX25fdTgoX19hMV82MDMsIDApKTsKICByZXR1cm4gX19yZXRfNjAzOwp9CiNlbHNlCl9fYWkgdWludDE2eDhfdCB2bW92bF9oaWdoX3U4KHVpbnQ4eDE2X3QgX19wMF82MDQpIHsKICB1aW50OHgxNl90IF9fcmV2MF82MDQ7ICBfX3JldjBfNjA0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMF82MDQsIF9fcDBfNjA0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV0XzYwNDsKICB1aW50OHg4X3QgX19hMV82MDQgPSBfX25vc3dhcF92Z2V0X2hpZ2hfdTgoX19yZXYwXzYwNCk7CiAgX19yZXRfNjA0ID0gKHVpbnQxNng4X3QpKF9fbm9zd2FwX3ZzaGxsX25fdTgoX19hMV82MDQsIDApKTsKICBfX3JldF82MDQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF82MDQsIF9fcmV0XzYwNCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0XzYwNDsKfQpfX2FpIHVpbnQxNng4X3QgX19ub3N3YXBfdm1vdmxfaGlnaF91OCh1aW50OHgxNl90IF9fcDBfNjA1KSB7CiAgdWludDE2eDhfdCBfX3JldF82MDU7CiAgdWludDh4OF90IF9fYTFfNjA1ID0gX19ub3N3YXBfdmdldF9oaWdoX3U4KF9fcDBfNjA1KTsKICBfX3JldF82MDUgPSAodWludDE2eDhfdCkoX19ub3N3YXBfdnNobGxfbl91OChfX2ExXzYwNSwgMCkpOwogIHJldHVybiBfX3JldF82MDU7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50NjR4Ml90IHZtb3ZsX2hpZ2hfdTMyKHVpbnQzMng0X3QgX19wMF82MDYpIHsKICB1aW50NjR4Ml90IF9fcmV0XzYwNjsKICB1aW50MzJ4Ml90IF9fYTFfNjA2ID0gdmdldF9oaWdoX3UzMihfX3AwXzYwNik7CiAgX19yZXRfNjA2ID0gKHVpbnQ2NHgyX3QpKHZzaGxsX25fdTMyKF9fYTFfNjA2LCAwKSk7CiAgcmV0dXJuIF9fcmV0XzYwNjsKfQojZWxzZQpfX2FpIHVpbnQ2NHgyX3Qgdm1vdmxfaGlnaF91MzIodWludDMyeDRfdCBfX3AwXzYwNykgewogIHVpbnQzMng0X3QgX19yZXYwXzYwNzsgIF9fcmV2MF82MDcgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwXzYwNywgX19wMF82MDcsIDMsIDIsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXRfNjA3OwogIHVpbnQzMngyX3QgX19hMV82MDcgPSBfX25vc3dhcF92Z2V0X2hpZ2hfdTMyKF9fcmV2MF82MDcpOwogIF9fcmV0XzYwNyA9ICh1aW50NjR4Ml90KShfX25vc3dhcF92c2hsbF9uX3UzMihfX2ExXzYwNywgMCkpOwogIF9fcmV0XzYwNyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzYwNywgX19yZXRfNjA3LCAxLCAwKTsKICByZXR1cm4gX19yZXRfNjA3Owp9Cl9fYWkgdWludDY0eDJfdCBfX25vc3dhcF92bW92bF9oaWdoX3UzMih1aW50MzJ4NF90IF9fcDBfNjA4KSB7CiAgdWludDY0eDJfdCBfX3JldF82MDg7CiAgdWludDMyeDJfdCBfX2ExXzYwOCA9IF9fbm9zd2FwX3ZnZXRfaGlnaF91MzIoX19wMF82MDgpOwogIF9fcmV0XzYwOCA9ICh1aW50NjR4Ml90KShfX25vc3dhcF92c2hsbF9uX3UzMihfX2ExXzYwOCwgMCkpOwogIHJldHVybiBfX3JldF82MDg7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZtb3ZsX2hpZ2hfdTE2KHVpbnQxNng4X3QgX19wMF82MDkpIHsKICB1aW50MzJ4NF90IF9fcmV0XzYwOTsKICB1aW50MTZ4NF90IF9fYTFfNjA5ID0gdmdldF9oaWdoX3UxNihfX3AwXzYwOSk7CiAgX19yZXRfNjA5ID0gKHVpbnQzMng0X3QpKHZzaGxsX25fdTE2KF9fYTFfNjA5LCAwKSk7CiAgcmV0dXJuIF9fcmV0XzYwOTsKfQojZWxzZQpfX2FpIHVpbnQzMng0X3Qgdm1vdmxfaGlnaF91MTYodWludDE2eDhfdCBfX3AwXzYxMCkgewogIHVpbnQxNng4X3QgX19yZXYwXzYxMDsgIF9fcmV2MF82MTAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwXzYxMCwgX19wMF82MTAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXRfNjEwOwogIHVpbnQxNng0X3QgX19hMV82MTAgPSBfX25vc3dhcF92Z2V0X2hpZ2hfdTE2KF9fcmV2MF82MTApOwogIF9fcmV0XzYxMCA9ICh1aW50MzJ4NF90KShfX25vc3dhcF92c2hsbF9uX3UxNihfX2ExXzYxMCwgMCkpOwogIF9fcmV0XzYxMCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzYxMCwgX19yZXRfNjEwLCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXRfNjEwOwp9Cl9fYWkgdWludDMyeDRfdCBfX25vc3dhcF92bW92bF9oaWdoX3UxNih1aW50MTZ4OF90IF9fcDBfNjExKSB7CiAgdWludDMyeDRfdCBfX3JldF82MTE7CiAgdWludDE2eDRfdCBfX2ExXzYxMSA9IF9fbm9zd2FwX3ZnZXRfaGlnaF91MTYoX19wMF82MTEpOwogIF9fcmV0XzYxMSA9ICh1aW50MzJ4NF90KShfX25vc3dhcF92c2hsbF9uX3UxNihfX2ExXzYxMSwgMCkpOwogIHJldHVybiBfX3JldF82MTE7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng4X3Qgdm1vdmxfaGlnaF9zOChpbnQ4eDE2X3QgX19wMF82MTIpIHsKICBpbnQxNng4X3QgX19yZXRfNjEyOwogIGludDh4OF90IF9fYTFfNjEyID0gdmdldF9oaWdoX3M4KF9fcDBfNjEyKTsKICBfX3JldF82MTIgPSAoaW50MTZ4OF90KSh2c2hsbF9uX3M4KF9fYTFfNjEyLCAwKSk7CiAgcmV0dXJuIF9fcmV0XzYxMjsKfQojZWxzZQpfX2FpIGludDE2eDhfdCB2bW92bF9oaWdoX3M4KGludDh4MTZfdCBfX3AwXzYxMykgewogIGludDh4MTZfdCBfX3JldjBfNjEzOyAgX19yZXYwXzYxMyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDBfNjEzLCBfX3AwXzYxMywgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV0XzYxMzsKICBpbnQ4eDhfdCBfX2ExXzYxMyA9IF9fbm9zd2FwX3ZnZXRfaGlnaF9zOChfX3JldjBfNjEzKTsKICBfX3JldF82MTMgPSAoaW50MTZ4OF90KShfX25vc3dhcF92c2hsbF9uX3M4KF9fYTFfNjEzLCAwKSk7CiAgX19yZXRfNjEzID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNjEzLCBfX3JldF82MTMsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldF82MTM7Cn0KX19haSBpbnQxNng4X3QgX19ub3N3YXBfdm1vdmxfaGlnaF9zOChpbnQ4eDE2X3QgX19wMF82MTQpIHsKICBpbnQxNng4X3QgX19yZXRfNjE0OwogIGludDh4OF90IF9fYTFfNjE0ID0gX19ub3N3YXBfdmdldF9oaWdoX3M4KF9fcDBfNjE0KTsKICBfX3JldF82MTQgPSAoaW50MTZ4OF90KShfX25vc3dhcF92c2hsbF9uX3M4KF9fYTFfNjE0LCAwKSk7CiAgcmV0dXJuIF9fcmV0XzYxNDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDY0eDJfdCB2bW92bF9oaWdoX3MzMihpbnQzMng0X3QgX19wMF82MTUpIHsKICBpbnQ2NHgyX3QgX19yZXRfNjE1OwogIGludDMyeDJfdCBfX2ExXzYxNSA9IHZnZXRfaGlnaF9zMzIoX19wMF82MTUpOwogIF9fcmV0XzYxNSA9IChpbnQ2NHgyX3QpKHZzaGxsX25fczMyKF9fYTFfNjE1LCAwKSk7CiAgcmV0dXJuIF9fcmV0XzYxNTsKfQojZWxzZQpfX2FpIGludDY0eDJfdCB2bW92bF9oaWdoX3MzMihpbnQzMng0X3QgX19wMF82MTYpIHsKICBpbnQzMng0X3QgX19yZXYwXzYxNjsgIF9fcmV2MF82MTYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwXzYxNiwgX19wMF82MTYsIDMsIDIsIDEsIDApOwogIGludDY0eDJfdCBfX3JldF82MTY7CiAgaW50MzJ4Ml90IF9fYTFfNjE2ID0gX19ub3N3YXBfdmdldF9oaWdoX3MzMihfX3JldjBfNjE2KTsKICBfX3JldF82MTYgPSAoaW50NjR4Ml90KShfX25vc3dhcF92c2hsbF9uX3MzMihfX2ExXzYxNiwgMCkpOwogIF9fcmV0XzYxNiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzYxNiwgX19yZXRfNjE2LCAxLCAwKTsKICByZXR1cm4gX19yZXRfNjE2Owp9Cl9fYWkgaW50NjR4Ml90IF9fbm9zd2FwX3Ztb3ZsX2hpZ2hfczMyKGludDMyeDRfdCBfX3AwXzYxNykgewogIGludDY0eDJfdCBfX3JldF82MTc7CiAgaW50MzJ4Ml90IF9fYTFfNjE3ID0gX19ub3N3YXBfdmdldF9oaWdoX3MzMihfX3AwXzYxNyk7CiAgX19yZXRfNjE3ID0gKGludDY0eDJfdCkoX19ub3N3YXBfdnNobGxfbl9zMzIoX19hMV82MTcsIDApKTsKICByZXR1cm4gX19yZXRfNjE3Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4NF90IHZtb3ZsX2hpZ2hfczE2KGludDE2eDhfdCBfX3AwXzYxOCkgewogIGludDMyeDRfdCBfX3JldF82MTg7CiAgaW50MTZ4NF90IF9fYTFfNjE4ID0gdmdldF9oaWdoX3MxNihfX3AwXzYxOCk7CiAgX19yZXRfNjE4ID0gKGludDMyeDRfdCkodnNobGxfbl9zMTYoX19hMV82MTgsIDApKTsKICByZXR1cm4gX19yZXRfNjE4Owp9CiNlbHNlCl9fYWkgaW50MzJ4NF90IHZtb3ZsX2hpZ2hfczE2KGludDE2eDhfdCBfX3AwXzYxOSkgewogIGludDE2eDhfdCBfX3JldjBfNjE5OyAgX19yZXYwXzYxOSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDBfNjE5LCBfX3AwXzYxOSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV0XzYxOTsKICBpbnQxNng0X3QgX19hMV82MTkgPSBfX25vc3dhcF92Z2V0X2hpZ2hfczE2KF9fcmV2MF82MTkpOwogIF9fcmV0XzYxOSA9IChpbnQzMng0X3QpKF9fbm9zd2FwX3ZzaGxsX25fczE2KF9fYTFfNjE5LCAwKSk7CiAgX19yZXRfNjE5ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNjE5LCBfX3JldF82MTksIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldF82MTk7Cn0KX19haSBpbnQzMng0X3QgX19ub3N3YXBfdm1vdmxfaGlnaF9zMTYoaW50MTZ4OF90IF9fcDBfNjIwKSB7CiAgaW50MzJ4NF90IF9fcmV0XzYyMDsKICBpbnQxNng0X3QgX19hMV82MjAgPSBfX25vc3dhcF92Z2V0X2hpZ2hfczE2KF9fcDBfNjIwKTsKICBfX3JldF82MjAgPSAoaW50MzJ4NF90KShfX25vc3dhcF92c2hsbF9uX3MxNihfX2ExXzYyMCwgMCkpOwogIHJldHVybiBfX3JldF82MjA7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4OF90IHZtb3ZuX2hpZ2hfdTMyKHVpbnQxNng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxKSB7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IHZjb21iaW5lX3UxNihfX3AwLCB2bW92bl91MzIoX19wMSkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng4X3Qgdm1vdm5faGlnaF91MzIodWludDE2eDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEpIHsKICB1aW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3Zjb21iaW5lX3UxNihfX3JldjAsIF9fbm9zd2FwX3Ztb3ZuX3UzMihfX3JldjEpKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDRfdCB2bW92bl9oaWdoX3U2NCh1aW50MzJ4Ml90IF9fcDAsIHVpbnQ2NHgyX3QgX19wMSkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSB2Y29tYmluZV91MzIoX19wMCwgdm1vdm5fdTY0KF9fcDEpKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4NF90IHZtb3ZuX2hpZ2hfdTY0KHVpbnQzMngyX3QgX19wMCwgdWludDY0eDJfdCBfX3AxKSB7CiAgdWludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92Y29tYmluZV91MzIoX19yZXYwLCBfX25vc3dhcF92bW92bl91NjQoX19yZXYxKSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDE2X3Qgdm1vdm5faGlnaF91MTYodWludDh4OF90IF9fcDAsIHVpbnQxNng4X3QgX19wMSkgewogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSB2Y29tYmluZV91OChfX3AwLCB2bW92bl91MTYoX19wMSkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDE2X3Qgdm1vdm5faGlnaF91MTYodWludDh4OF90IF9fcDAsIHVpbnQxNng4X3QgX19wMSkgewogIHVpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92Y29tYmluZV91OChfX3JldjAsIF9fbm9zd2FwX3Ztb3ZuX3UxNihfX3JldjEpKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZ4OF90IHZtb3ZuX2hpZ2hfczMyKGludDE2eDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IHZjb21iaW5lX3MxNihfX3AwLCB2bW92bl9zMzIoX19wMSkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDhfdCB2bW92bl9oaWdoX3MzMihpbnQxNng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEpIHsKICBpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3Zjb21iaW5lX3MxNihfX3JldjAsIF9fbm9zd2FwX3Ztb3ZuX3MzMihfX3JldjEpKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4NF90IHZtb3ZuX2hpZ2hfczY0KGludDMyeDJfdCBfX3AwLCBpbnQ2NHgyX3QgX19wMSkgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IHZjb21iaW5lX3MzMihfX3AwLCB2bW92bl9zNjQoX19wMSkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDRfdCB2bW92bl9oaWdoX3M2NChpbnQzMngyX3QgX19wMCwgaW50NjR4Ml90IF9fcDEpIHsKICBpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3Zjb21iaW5lX3MzMihfX3JldjAsIF9fbm9zd2FwX3Ztb3ZuX3M2NChfX3JldjEpKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHgxNl90IHZtb3ZuX2hpZ2hfczE2KGludDh4OF90IF9fcDAsIGludDE2eDhfdCBfX3AxKSB7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gdmNvbWJpbmVfczgoX19wMCwgdm1vdm5fczE2KF9fcDEpKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ4eDE2X3Qgdm1vdm5faGlnaF9zMTYoaW50OHg4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEpIHsKICBpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdmNvbWJpbmVfczgoX19yZXYwLCBfX25vc3dhcF92bW92bl9zMTYoX19yZXYxKSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0NjR4Ml90IHZtdWxxX2Y2NChmbG9hdDY0eDJfdCBfX3AwLCBmbG9hdDY0eDJfdCBfX3AxKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICogX19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDY0eDJfdCB2bXVscV9mNjQoZmxvYXQ2NHgyX3QgX19wMCwgZmxvYXQ2NHgyX3QgX19wMSkgewogIGZsb2F0NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICogX19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgpfX2FpIGZsb2F0NjR4MV90IHZtdWxfZjY0KGZsb2F0NjR4MV90IF9fcDAsIGZsb2F0NjR4MV90IF9fcDEpIHsKICBmbG9hdDY0eDFfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgKiBfX3AxOwogIHJldHVybiBfX3JldDsKfQojZGVmaW5lIHZtdWxkX2xhbmVfZjY0KF9fcDBfNjIxLCBfX3AxXzYyMSwgX19wMl82MjEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjRfdCBfX3MwXzYyMSA9IF9fcDBfNjIxOyBcCiAgZmxvYXQ2NHgxX3QgX19zMV82MjEgPSBfX3AxXzYyMTsgXAogIGZsb2F0NjRfdCBfX3JldF82MjE7IFwKICBfX3JldF82MjEgPSBfX3MwXzYyMSAqIHZnZXRfbGFuZV9mNjQoX19zMV82MjEsIF9fcDJfNjIxKTsgXAogIF9fcmV0XzYyMTsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bXVsc19sYW5lX2YzMihfX3AwXzYyMiwgX19wMV82MjIsIF9fcDJfNjIyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyX3QgX19zMF82MjIgPSBfX3AwXzYyMjsgXAogIGZsb2F0MzJ4Ml90IF9fczFfNjIyID0gX19wMV82MjI7IFwKICBmbG9hdDMyX3QgX19yZXRfNjIyOyBcCiAgX19yZXRfNjIyID0gX19zMF82MjIgKiB2Z2V0X2xhbmVfZjMyKF9fczFfNjIyLCBfX3AyXzYyMik7IFwKICBfX3JldF82MjI7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bXVsc19sYW5lX2YzMihfX3AwXzYyMywgX19wMV82MjMsIF9fcDJfNjIzKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyX3QgX19zMF82MjMgPSBfX3AwXzYyMzsgXAogIGZsb2F0MzJ4Ml90IF9fczFfNjIzID0gX19wMV82MjM7IFwKICBmbG9hdDMyeDJfdCBfX3JldjFfNjIzOyAgX19yZXYxXzYyMyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNjIzLCBfX3MxXzYyMywgMSwgMCk7IFwKICBmbG9hdDMyX3QgX19yZXRfNjIzOyBcCiAgX19yZXRfNjIzID0gX19zMF82MjMgKiBfX25vc3dhcF92Z2V0X2xhbmVfZjMyKF9fcmV2MV82MjMsIF9fcDJfNjIzKTsgXAogIF9fcmV0XzYyMzsgXAp9KQojZW5kaWYKCiNkZWZpbmUgdm11bF9sYW5lX2Y2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDFfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0NjR4MV90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQ2NHgxX3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDY0eDFfdCkgX19idWlsdGluX25lb25fdm11bF9sYW5lX3YoKGludDh4OF90KV9fczAsIChpbnQ4eDhfdClfX3MxLCBfX3AyLCAxMCk7IFwKICBfX3JldDsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bXVscV9sYW5lX2Y2NChfX3AwXzYyNCwgX19wMV82MjQsIF9fcDJfNjI0KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDJfdCBfX3MwXzYyNCA9IF9fcDBfNjI0OyBcCiAgZmxvYXQ2NHgxX3QgX19zMV82MjQgPSBfX3AxXzYyNDsgXAogIGZsb2F0NjR4Ml90IF9fcmV0XzYyNDsgXAogIF9fcmV0XzYyNCA9IF9fczBfNjI0ICogc3BsYXRxX2xhbmVfZjY0KF9fczFfNjI0LCBfX3AyXzYyNCk7IFwKICBfX3JldF82MjQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bXVscV9sYW5lX2Y2NChfX3AwXzYyNSwgX19wMV82MjUsIF9fcDJfNjI1KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDJfdCBfX3MwXzYyNSA9IF9fcDBfNjI1OyBcCiAgZmxvYXQ2NHgxX3QgX19zMV82MjUgPSBfX3AxXzYyNTsgXAogIGZsb2F0NjR4Ml90IF9fcmV2MF82MjU7ICBfX3JldjBfNjI1ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF82MjUsIF9fczBfNjI1LCAxLCAwKTsgXAogIGZsb2F0NjR4Ml90IF9fcmV0XzYyNTsgXAogIF9fcmV0XzYyNSA9IF9fcmV2MF82MjUgKiBfX25vc3dhcF9zcGxhdHFfbGFuZV9mNjQoX19zMV82MjUsIF9fcDJfNjI1KTsgXAogIF9fcmV0XzYyNSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzYyNSwgX19yZXRfNjI1LCAxLCAwKTsgXAogIF9fcmV0XzYyNTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtdWxkX2xhbmVxX2Y2NChfX3AwXzYyNiwgX19wMV82MjYsIF9fcDJfNjI2KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0X3QgX19zMF82MjYgPSBfX3AwXzYyNjsgXAogIGZsb2F0NjR4Ml90IF9fczFfNjI2ID0gX19wMV82MjY7IFwKICBmbG9hdDY0X3QgX19yZXRfNjI2OyBcCiAgX19yZXRfNjI2ID0gX19zMF82MjYgKiB2Z2V0cV9sYW5lX2Y2NChfX3MxXzYyNiwgX19wMl82MjYpOyBcCiAgX19yZXRfNjI2OyBcCn0pCiNlbHNlCiNkZWZpbmUgdm11bGRfbGFuZXFfZjY0KF9fcDBfNjI3LCBfX3AxXzYyNywgX19wMl82MjcpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjRfdCBfX3MwXzYyNyA9IF9fcDBfNjI3OyBcCiAgZmxvYXQ2NHgyX3QgX19zMV82MjcgPSBfX3AxXzYyNzsgXAogIGZsb2F0NjR4Ml90IF9fcmV2MV82Mjc7ICBfX3JldjFfNjI3ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV82MjcsIF9fczFfNjI3LCAxLCAwKTsgXAogIGZsb2F0NjRfdCBfX3JldF82Mjc7IFwKICBfX3JldF82MjcgPSBfX3MwXzYyNyAqIF9fbm9zd2FwX3ZnZXRxX2xhbmVfZjY0KF9fcmV2MV82MjcsIF9fcDJfNjI3KTsgXAogIF9fcmV0XzYyNzsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtdWxzX2xhbmVxX2YzMihfX3AwXzYyOCwgX19wMV82MjgsIF9fcDJfNjI4KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyX3QgX19zMF82MjggPSBfX3AwXzYyODsgXAogIGZsb2F0MzJ4NF90IF9fczFfNjI4ID0gX19wMV82Mjg7IFwKICBmbG9hdDMyX3QgX19yZXRfNjI4OyBcCiAgX19yZXRfNjI4ID0gX19zMF82MjggKiB2Z2V0cV9sYW5lX2YzMihfX3MxXzYyOCwgX19wMl82MjgpOyBcCiAgX19yZXRfNjI4OyBcCn0pCiNlbHNlCiNkZWZpbmUgdm11bHNfbGFuZXFfZjMyKF9fcDBfNjI5LCBfX3AxXzYyOSwgX19wMl82MjkpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJfdCBfX3MwXzYyOSA9IF9fcDBfNjI5OyBcCiAgZmxvYXQzMng0X3QgX19zMV82MjkgPSBfX3AxXzYyOTsgXAogIGZsb2F0MzJ4NF90IF9fcmV2MV82Mjk7ICBfX3JldjFfNjI5ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV82MjksIF9fczFfNjI5LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MzJfdCBfX3JldF82Mjk7IFwKICBfX3JldF82MjkgPSBfX3MwXzYyOSAqIF9fbm9zd2FwX3ZnZXRxX2xhbmVfZjMyKF9fcmV2MV82MjksIF9fcDJfNjI5KTsgXAogIF9fcmV0XzYyOTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtdWxfbGFuZXFfZjY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4MV90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQ2NHgyX3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDY0eDFfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92bXVsX2xhbmVxX3YoKGludDh4OF90KV9fczAsIChpbnQ4eDE2X3QpX19zMSwgX19wMiwgMTApOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bXVsX2xhbmVxX2Y2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDFfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0NjR4Ml90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMSwgMCk7IFwKICBmbG9hdDY0eDFfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92bXVsX2xhbmVxX3YoKGludDh4OF90KV9fczAsIChpbnQ4eDE2X3QpX19yZXYxLCBfX3AyLCAxMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtdWxxX2xhbmVxX3UzMihfX3AwXzYzMCwgX19wMV82MzAsIF9fcDJfNjMwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NF90IF9fczBfNjMwID0gX19wMF82MzA7IFwKICB1aW50MzJ4NF90IF9fczFfNjMwID0gX19wMV82MzA7IFwKICB1aW50MzJ4NF90IF9fcmV0XzYzMDsgXAogIF9fcmV0XzYzMCA9IF9fczBfNjMwICogc3BsYXRxX2xhbmVxX3UzMihfX3MxXzYzMCwgX19wMl82MzApOyBcCiAgX19yZXRfNjMwOyBcCn0pCiNlbHNlCiNkZWZpbmUgdm11bHFfbGFuZXFfdTMyKF9fcDBfNjMxLCBfX3AxXzYzMSwgX19wMl82MzEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0X3QgX19zMF82MzEgPSBfX3AwXzYzMTsgXAogIHVpbnQzMng0X3QgX19zMV82MzEgPSBfX3AxXzYzMTsgXAogIHVpbnQzMng0X3QgX19yZXYwXzYzMTsgIF9fcmV2MF82MzEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzYzMSwgX19zMF82MzEsIDMsIDIsIDEsIDApOyBcCiAgdWludDMyeDRfdCBfX3JldjFfNjMxOyAgX19yZXYxXzYzMSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNjMxLCBfX3MxXzYzMSwgMywgMiwgMSwgMCk7IFwKICB1aW50MzJ4NF90IF9fcmV0XzYzMTsgXAogIF9fcmV0XzYzMSA9IF9fcmV2MF82MzEgKiBfX25vc3dhcF9zcGxhdHFfbGFuZXFfdTMyKF9fcmV2MV82MzEsIF9fcDJfNjMxKTsgXAogIF9fcmV0XzYzMSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzYzMSwgX19yZXRfNjMxLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzYzMTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtdWxxX2xhbmVxX3UxNihfX3AwXzYzMiwgX19wMV82MzIsIF9fcDJfNjMyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4OF90IF9fczBfNjMyID0gX19wMF82MzI7IFwKICB1aW50MTZ4OF90IF9fczFfNjMyID0gX19wMV82MzI7IFwKICB1aW50MTZ4OF90IF9fcmV0XzYzMjsgXAogIF9fcmV0XzYzMiA9IF9fczBfNjMyICogc3BsYXRxX2xhbmVxX3UxNihfX3MxXzYzMiwgX19wMl82MzIpOyBcCiAgX19yZXRfNjMyOyBcCn0pCiNlbHNlCiNkZWZpbmUgdm11bHFfbGFuZXFfdTE2KF9fcDBfNjMzLCBfX3AxXzYzMywgX19wMl82MzMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng4X3QgX19zMF82MzMgPSBfX3AwXzYzMzsgXAogIHVpbnQxNng4X3QgX19zMV82MzMgPSBfX3AxXzYzMzsgXAogIHVpbnQxNng4X3QgX19yZXYwXzYzMzsgIF9fcmV2MF82MzMgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzYzMywgX19zMF82MzMsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDhfdCBfX3JldjFfNjMzOyAgX19yZXYxXzYzMyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNjMzLCBfX3MxXzYzMywgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50MTZ4OF90IF9fcmV0XzYzMzsgXAogIF9fcmV0XzYzMyA9IF9fcmV2MF82MzMgKiBfX25vc3dhcF9zcGxhdHFfbGFuZXFfdTE2KF9fcmV2MV82MzMsIF9fcDJfNjMzKTsgXAogIF9fcmV0XzYzMyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzYzMywgX19yZXRfNjMzLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzYzMzsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtdWxxX2xhbmVxX2Y2NChfX3AwXzYzNCwgX19wMV82MzQsIF9fcDJfNjM0KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDJfdCBfX3MwXzYzNCA9IF9fcDBfNjM0OyBcCiAgZmxvYXQ2NHgyX3QgX19zMV82MzQgPSBfX3AxXzYzNDsgXAogIGZsb2F0NjR4Ml90IF9fcmV0XzYzNDsgXAogIF9fcmV0XzYzNCA9IF9fczBfNjM0ICogc3BsYXRxX2xhbmVxX2Y2NChfX3MxXzYzNCwgX19wMl82MzQpOyBcCiAgX19yZXRfNjM0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdm11bHFfbGFuZXFfZjY0KF9fcDBfNjM1LCBfX3AxXzYzNSwgX19wMl82MzUpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4Ml90IF9fczBfNjM1ID0gX19wMF82MzU7IFwKICBmbG9hdDY0eDJfdCBfX3MxXzYzNSA9IF9fcDFfNjM1OyBcCiAgZmxvYXQ2NHgyX3QgX19yZXYwXzYzNTsgIF9fcmV2MF82MzUgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzYzNSwgX19zMF82MzUsIDEsIDApOyBcCiAgZmxvYXQ2NHgyX3QgX19yZXYxXzYzNTsgIF9fcmV2MV82MzUgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzYzNSwgX19zMV82MzUsIDEsIDApOyBcCiAgZmxvYXQ2NHgyX3QgX19yZXRfNjM1OyBcCiAgX19yZXRfNjM1ID0gX19yZXYwXzYzNSAqIF9fbm9zd2FwX3NwbGF0cV9sYW5lcV9mNjQoX19yZXYxXzYzNSwgX19wMl82MzUpOyBcCiAgX19yZXRfNjM1ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNjM1LCBfX3JldF82MzUsIDEsIDApOyBcCiAgX19yZXRfNjM1OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm11bHFfbGFuZXFfZjMyKF9fcDBfNjM2LCBfX3AxXzYzNiwgX19wMl82MzYpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NF90IF9fczBfNjM2ID0gX19wMF82MzY7IFwKICBmbG9hdDMyeDRfdCBfX3MxXzYzNiA9IF9fcDFfNjM2OyBcCiAgZmxvYXQzMng0X3QgX19yZXRfNjM2OyBcCiAgX19yZXRfNjM2ID0gX19zMF82MzYgKiBzcGxhdHFfbGFuZXFfZjMyKF9fczFfNjM2LCBfX3AyXzYzNik7IFwKICBfX3JldF82MzY7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bXVscV9sYW5lcV9mMzIoX19wMF82MzcsIF9fcDFfNjM3LCBfX3AyXzYzNykgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0X3QgX19zMF82MzcgPSBfX3AwXzYzNzsgXAogIGZsb2F0MzJ4NF90IF9fczFfNjM3ID0gX19wMV82Mzc7IFwKICBmbG9hdDMyeDRfdCBfX3JldjBfNjM3OyAgX19yZXYwXzYzNyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNjM3LCBfX3MwXzYzNywgMywgMiwgMSwgMCk7IFwKICBmbG9hdDMyeDRfdCBfX3JldjFfNjM3OyAgX19yZXYxXzYzNyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNjM3LCBfX3MxXzYzNywgMywgMiwgMSwgMCk7IFwKICBmbG9hdDMyeDRfdCBfX3JldF82Mzc7IFwKICBfX3JldF82MzcgPSBfX3JldjBfNjM3ICogX19ub3N3YXBfc3BsYXRxX2xhbmVxX2YzMihfX3JldjFfNjM3LCBfX3AyXzYzNyk7IFwKICBfX3JldF82MzcgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF82MzcsIF9fcmV0XzYzNywgMywgMiwgMSwgMCk7IFwKICBfX3JldF82Mzc7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bXVscV9sYW5lcV9zMzIoX19wMF82MzgsIF9fcDFfNjM4LCBfX3AyXzYzOCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczBfNjM4ID0gX19wMF82Mzg7IFwKICBpbnQzMng0X3QgX19zMV82MzggPSBfX3AxXzYzODsgXAogIGludDMyeDRfdCBfX3JldF82Mzg7IFwKICBfX3JldF82MzggPSBfX3MwXzYzOCAqIHNwbGF0cV9sYW5lcV9zMzIoX19zMV82MzgsIF9fcDJfNjM4KTsgXAogIF9fcmV0XzYzODsgXAp9KQojZWxzZQojZGVmaW5lIHZtdWxxX2xhbmVxX3MzMihfX3AwXzYzOSwgX19wMV82MzksIF9fcDJfNjM5KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMF82MzkgPSBfX3AwXzYzOTsgXAogIGludDMyeDRfdCBfX3MxXzYzOSA9IF9fcDFfNjM5OyBcCiAgaW50MzJ4NF90IF9fcmV2MF82Mzk7ICBfX3JldjBfNjM5ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF82MzksIF9fczBfNjM5LCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDRfdCBfX3JldjFfNjM5OyAgX19yZXYxXzYzOSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNjM5LCBfX3MxXzYzOSwgMywgMiwgMSwgMCk7IFwKICBpbnQzMng0X3QgX19yZXRfNjM5OyBcCiAgX19yZXRfNjM5ID0gX19yZXYwXzYzOSAqIF9fbm9zd2FwX3NwbGF0cV9sYW5lcV9zMzIoX19yZXYxXzYzOSwgX19wMl82MzkpOyBcCiAgX19yZXRfNjM5ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNjM5LCBfX3JldF82MzksIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfNjM5OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm11bHFfbGFuZXFfczE2KF9fcDBfNjQwLCBfX3AxXzY0MCwgX19wMl82NDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDhfdCBfX3MwXzY0MCA9IF9fcDBfNjQwOyBcCiAgaW50MTZ4OF90IF9fczFfNjQwID0gX19wMV82NDA7IFwKICBpbnQxNng4X3QgX19yZXRfNjQwOyBcCiAgX19yZXRfNjQwID0gX19zMF82NDAgKiBzcGxhdHFfbGFuZXFfczE2KF9fczFfNjQwLCBfX3AyXzY0MCk7IFwKICBfX3JldF82NDA7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bXVscV9sYW5lcV9zMTYoX19wMF82NDEsIF9fcDFfNjQxLCBfX3AyXzY0MSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OF90IF9fczBfNjQxID0gX19wMF82NDE7IFwKICBpbnQxNng4X3QgX19zMV82NDEgPSBfX3AxXzY0MTsgXAogIGludDE2eDhfdCBfX3JldjBfNjQxOyAgX19yZXYwXzY0MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNjQxLCBfX3MwXzY0MSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng4X3QgX19yZXYxXzY0MTsgIF9fcmV2MV82NDEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzY0MSwgX19zMV82NDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4OF90IF9fcmV0XzY0MTsgXAogIF9fcmV0XzY0MSA9IF9fcmV2MF82NDEgKiBfX25vc3dhcF9zcGxhdHFfbGFuZXFfczE2KF9fcmV2MV82NDEsIF9fcDJfNjQxKTsgXAogIF9fcmV0XzY0MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzY0MSwgX19yZXRfNjQxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzY0MTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtdWxfbGFuZXFfdTMyKF9fcDBfNjQyLCBfX3AxXzY0MiwgX19wMl82NDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMngyX3QgX19zMF82NDIgPSBfX3AwXzY0MjsgXAogIHVpbnQzMng0X3QgX19zMV82NDIgPSBfX3AxXzY0MjsgXAogIHVpbnQzMngyX3QgX19yZXRfNjQyOyBcCiAgX19yZXRfNjQyID0gX19zMF82NDIgKiBzcGxhdF9sYW5lcV91MzIoX19zMV82NDIsIF9fcDJfNjQyKTsgXAogIF9fcmV0XzY0MjsgXAp9KQojZWxzZQojZGVmaW5lIHZtdWxfbGFuZXFfdTMyKF9fcDBfNjQzLCBfX3AxXzY0MywgX19wMl82NDMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMngyX3QgX19zMF82NDMgPSBfX3AwXzY0MzsgXAogIHVpbnQzMng0X3QgX19zMV82NDMgPSBfX3AxXzY0MzsgXAogIHVpbnQzMngyX3QgX19yZXYwXzY0MzsgIF9fcmV2MF82NDMgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzY0MywgX19zMF82NDMsIDEsIDApOyBcCiAgdWludDMyeDRfdCBfX3JldjFfNjQzOyAgX19yZXYxXzY0MyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNjQzLCBfX3MxXzY0MywgMywgMiwgMSwgMCk7IFwKICB1aW50MzJ4Ml90IF9fcmV0XzY0MzsgXAogIF9fcmV0XzY0MyA9IF9fcmV2MF82NDMgKiBfX25vc3dhcF9zcGxhdF9sYW5lcV91MzIoX19yZXYxXzY0MywgX19wMl82NDMpOyBcCiAgX19yZXRfNjQzID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNjQzLCBfX3JldF82NDMsIDEsIDApOyBcCiAgX19yZXRfNjQzOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm11bF9sYW5lcV91MTYoX19wMF82NDQsIF9fcDFfNjQ0LCBfX3AyXzY0NCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDRfdCBfX3MwXzY0NCA9IF9fcDBfNjQ0OyBcCiAgdWludDE2eDhfdCBfX3MxXzY0NCA9IF9fcDFfNjQ0OyBcCiAgdWludDE2eDRfdCBfX3JldF82NDQ7IFwKICBfX3JldF82NDQgPSBfX3MwXzY0NCAqIHNwbGF0X2xhbmVxX3UxNihfX3MxXzY0NCwgX19wMl82NDQpOyBcCiAgX19yZXRfNjQ0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdm11bF9sYW5lcV91MTYoX19wMF82NDUsIF9fcDFfNjQ1LCBfX3AyXzY0NSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDRfdCBfX3MwXzY0NSA9IF9fcDBfNjQ1OyBcCiAgdWludDE2eDhfdCBfX3MxXzY0NSA9IF9fcDFfNjQ1OyBcCiAgdWludDE2eDRfdCBfX3JldjBfNjQ1OyAgX19yZXYwXzY0NSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNjQ1LCBfX3MwXzY0NSwgMywgMiwgMSwgMCk7IFwKICB1aW50MTZ4OF90IF9fcmV2MV82NDU7ICBfX3JldjFfNjQ1ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV82NDUsIF9fczFfNjQ1LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQxNng0X3QgX19yZXRfNjQ1OyBcCiAgX19yZXRfNjQ1ID0gX19yZXYwXzY0NSAqIF9fbm9zd2FwX3NwbGF0X2xhbmVxX3UxNihfX3JldjFfNjQ1LCBfX3AyXzY0NSk7IFwKICBfX3JldF82NDUgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF82NDUsIF9fcmV0XzY0NSwgMywgMiwgMSwgMCk7IFwKICBfX3JldF82NDU7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bXVsX2xhbmVxX2YzMihfX3AwXzY0NiwgX19wMV82NDYsIF9fcDJfNjQ2KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJfdCBfX3MwXzY0NiA9IF9fcDBfNjQ2OyBcCiAgZmxvYXQzMng0X3QgX19zMV82NDYgPSBfX3AxXzY0NjsgXAogIGZsb2F0MzJ4Ml90IF9fcmV0XzY0NjsgXAogIF9fcmV0XzY0NiA9IF9fczBfNjQ2ICogc3BsYXRfbGFuZXFfZjMyKF9fczFfNjQ2LCBfX3AyXzY0Nik7IFwKICBfX3JldF82NDY7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bXVsX2xhbmVxX2YzMihfX3AwXzY0NywgX19wMV82NDcsIF9fcDJfNjQ3KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJfdCBfX3MwXzY0NyA9IF9fcDBfNjQ3OyBcCiAgZmxvYXQzMng0X3QgX19zMV82NDcgPSBfX3AxXzY0NzsgXAogIGZsb2F0MzJ4Ml90IF9fcmV2MF82NDc7ICBfX3JldjBfNjQ3ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF82NDcsIF9fczBfNjQ3LCAxLCAwKTsgXAogIGZsb2F0MzJ4NF90IF9fcmV2MV82NDc7ICBfX3JldjFfNjQ3ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV82NDcsIF9fczFfNjQ3LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MzJ4Ml90IF9fcmV0XzY0NzsgXAogIF9fcmV0XzY0NyA9IF9fcmV2MF82NDcgKiBfX25vc3dhcF9zcGxhdF9sYW5lcV9mMzIoX19yZXYxXzY0NywgX19wMl82NDcpOyBcCiAgX19yZXRfNjQ3ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNjQ3LCBfX3JldF82NDcsIDEsIDApOyBcCiAgX19yZXRfNjQ3OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm11bF9sYW5lcV9zMzIoX19wMF82NDgsIF9fcDFfNjQ4LCBfX3AyXzY0OCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Ml90IF9fczBfNjQ4ID0gX19wMF82NDg7IFwKICBpbnQzMng0X3QgX19zMV82NDggPSBfX3AxXzY0ODsgXAogIGludDMyeDJfdCBfX3JldF82NDg7IFwKICBfX3JldF82NDggPSBfX3MwXzY0OCAqIHNwbGF0X2xhbmVxX3MzMihfX3MxXzY0OCwgX19wMl82NDgpOyBcCiAgX19yZXRfNjQ4OyBcCn0pCiNlbHNlCiNkZWZpbmUgdm11bF9sYW5lcV9zMzIoX19wMF82NDksIF9fcDFfNjQ5LCBfX3AyXzY0OSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Ml90IF9fczBfNjQ5ID0gX19wMF82NDk7IFwKICBpbnQzMng0X3QgX19zMV82NDkgPSBfX3AxXzY0OTsgXAogIGludDMyeDJfdCBfX3JldjBfNjQ5OyAgX19yZXYwXzY0OSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNjQ5LCBfX3MwXzY0OSwgMSwgMCk7IFwKICBpbnQzMng0X3QgX19yZXYxXzY0OTsgIF9fcmV2MV82NDkgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzY0OSwgX19zMV82NDksIDMsIDIsIDEsIDApOyBcCiAgaW50MzJ4Ml90IF9fcmV0XzY0OTsgXAogIF9fcmV0XzY0OSA9IF9fcmV2MF82NDkgKiBfX25vc3dhcF9zcGxhdF9sYW5lcV9zMzIoX19yZXYxXzY0OSwgX19wMl82NDkpOyBcCiAgX19yZXRfNjQ5ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNjQ5LCBfX3JldF82NDksIDEsIDApOyBcCiAgX19yZXRfNjQ5OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm11bF9sYW5lcV9zMTYoX19wMF82NTAsIF9fcDFfNjUwLCBfX3AyXzY1MCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NF90IF9fczBfNjUwID0gX19wMF82NTA7IFwKICBpbnQxNng4X3QgX19zMV82NTAgPSBfX3AxXzY1MDsgXAogIGludDE2eDRfdCBfX3JldF82NTA7IFwKICBfX3JldF82NTAgPSBfX3MwXzY1MCAqIHNwbGF0X2xhbmVxX3MxNihfX3MxXzY1MCwgX19wMl82NTApOyBcCiAgX19yZXRfNjUwOyBcCn0pCiNlbHNlCiNkZWZpbmUgdm11bF9sYW5lcV9zMTYoX19wMF82NTEsIF9fcDFfNjUxLCBfX3AyXzY1MSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NF90IF9fczBfNjUxID0gX19wMF82NTE7IFwKICBpbnQxNng4X3QgX19zMV82NTEgPSBfX3AxXzY1MTsgXAogIGludDE2eDRfdCBfX3JldjBfNjUxOyAgX19yZXYwXzY1MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNjUxLCBfX3MwXzY1MSwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng4X3QgX19yZXYxXzY1MTsgIF9fcmV2MV82NTEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzY1MSwgX19zMV82NTEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4NF90IF9fcmV0XzY1MTsgXAogIF9fcmV0XzY1MSA9IF9fcmV2MF82NTEgKiBfX25vc3dhcF9zcGxhdF9sYW5lcV9zMTYoX19yZXYxXzY1MSwgX19wMl82NTEpOyBcCiAgX19yZXRfNjUxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNjUxLCBfX3JldF82NTEsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfNjUxOyBcCn0pCiNlbmRpZgoKX19haSBmbG9hdDY0eDFfdCB2bXVsX25fZjY0KGZsb2F0NjR4MV90IF9fcDAsIGZsb2F0NjRfdCBfX3AxKSB7CiAgZmxvYXQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3ZtdWxfbl9mNjQoKGZsb2F0NjR4MV90KV9fcDAsIF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDY0eDJfdCB2bXVscV9uX2Y2NChmbG9hdDY0eDJfdCBfX3AwLCBmbG9hdDY0X3QgX19wMSkgewogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAqIChmbG9hdDY0eDJfdCkge19fcDEsIF9fcDF9OwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0NjR4Ml90IHZtdWxxX25fZjY0KGZsb2F0NjR4Ml90IF9fcDAsIGZsb2F0NjRfdCBfX3AxKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgKiAoZmxvYXQ2NHgyX3QpIHtfX3AxLCBfX3AxfTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKX19haSBwb2x5MTI4X3Qgdm11bGxfcDY0KHBvbHk2NF90IF9fcDAsIHBvbHk2NF90IF9fcDEpIHsKICBwb2x5MTI4X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTEyOF90KSBfX2J1aWx0aW5fbmVvbl92bXVsbF9wNjQoX19wMCwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHBvbHkxNng4X3Qgdm11bGxfaGlnaF9wOChwb2x5OHgxNl90IF9fcDAsIHBvbHk4eDE2X3QgX19wMSkgewogIHBvbHkxNng4X3QgX19yZXQ7CiAgX19yZXQgPSB2bXVsbF9wOCh2Z2V0X2hpZ2hfcDgoX19wMCksIHZnZXRfaGlnaF9wOChfX3AxKSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgcG9seTE2eDhfdCB2bXVsbF9oaWdoX3A4KHBvbHk4eDE2X3QgX19wMCwgcG9seTh4MTZfdCBfX3AxKSB7CiAgcG9seTh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBwb2x5OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHBvbHkxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92bXVsbF9wOChfX25vc3dhcF92Z2V0X2hpZ2hfcDgoX19yZXYwKSwgX19ub3N3YXBfdmdldF9oaWdoX3A4KF9fcmV2MSkpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4OF90IHZtdWxsX2hpZ2hfdTgodWludDh4MTZfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEpIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gdm11bGxfdTgodmdldF9oaWdoX3U4KF9fcDApLCB2Z2V0X2hpZ2hfdTgoX19wMSkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng4X3Qgdm11bGxfaGlnaF91OCh1aW50OHgxNl90IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSkgewogIHVpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdm11bGxfdTgoX19ub3N3YXBfdmdldF9oaWdoX3U4KF9fcmV2MCksIF9fbm9zd2FwX3ZnZXRfaGlnaF91OChfX3JldjEpKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDY0eDJfdCB2bXVsbF9oaWdoX3UzMih1aW50MzJ4NF90IF9fcDAsIHVpbnQzMng0X3QgX19wMSkgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSB2bXVsbF91MzIodmdldF9oaWdoX3UzMihfX3AwKSwgdmdldF9oaWdoX3UzMihfX3AxKSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDY0eDJfdCB2bXVsbF9oaWdoX3UzMih1aW50MzJ4NF90IF9fcDAsIHVpbnQzMng0X3QgX19wMSkgewogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdm11bGxfdTMyKF9fbm9zd2FwX3ZnZXRfaGlnaF91MzIoX19yZXYwKSwgX19ub3N3YXBfdmdldF9oaWdoX3UzMihfX3JldjEpKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDRfdCB2bXVsbF9oaWdoX3UxNih1aW50MTZ4OF90IF9fcDAsIHVpbnQxNng4X3QgX19wMSkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSB2bXVsbF91MTYodmdldF9oaWdoX3UxNihfX3AwKSwgdmdldF9oaWdoX3UxNihfX3AxKSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2bXVsbF9oaWdoX3UxNih1aW50MTZ4OF90IF9fcDAsIHVpbnQxNng4X3QgX19wMSkgewogIHVpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdm11bGxfdTE2KF9fbm9zd2FwX3ZnZXRfaGlnaF91MTYoX19yZXYwKSwgX19ub3N3YXBfdmdldF9oaWdoX3UxNihfX3JldjEpKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZ4OF90IHZtdWxsX2hpZ2hfczgoaW50OHgxNl90IF9fcDAsIGludDh4MTZfdCBfX3AxKSB7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gdm11bGxfczgodmdldF9oaWdoX3M4KF9fcDApLCB2Z2V0X2hpZ2hfczgoX19wMSkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDhfdCB2bXVsbF9oaWdoX3M4KGludDh4MTZfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSkgewogIGludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdm11bGxfczgoX19ub3N3YXBfdmdldF9oaWdoX3M4KF9fcmV2MCksIF9fbm9zd2FwX3ZnZXRfaGlnaF9zOChfX3JldjEpKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50NjR4Ml90IHZtdWxsX2hpZ2hfczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IHZtdWxsX3MzMih2Z2V0X2hpZ2hfczMyKF9fcDApLCB2Z2V0X2hpZ2hfczMyKF9fcDEpKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ2NHgyX3Qgdm11bGxfaGlnaF9zMzIoaW50MzJ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxKSB7CiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92bXVsbF9zMzIoX19ub3N3YXBfdmdldF9oaWdoX3MzMihfX3JldjApLCBfX25vc3dhcF92Z2V0X2hpZ2hfczMyKF9fcmV2MSkpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMng0X3Qgdm11bGxfaGlnaF9zMTYoaW50MTZ4OF90IF9fcDAsIGludDE2eDhfdCBfX3AxKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gdm11bGxfczE2KHZnZXRfaGlnaF9zMTYoX19wMCksIHZnZXRfaGlnaF9zMTYoX19wMSkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDRfdCB2bXVsbF9oaWdoX3MxNihpbnQxNng4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEpIHsKICBpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3ZtdWxsX3MxNihfX25vc3dhcF92Z2V0X2hpZ2hfczE2KF9fcmV2MCksIF9fbm9zd2FwX3ZnZXRfaGlnaF9zMTYoX19yZXYxKSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHBvbHkxMjhfdCB2bXVsbF9oaWdoX3A2NChwb2x5NjR4Ml90IF9fcDAsIHBvbHk2NHgyX3QgX19wMSkgewogIHBvbHkxMjhfdCBfX3JldDsKICBfX3JldCA9IHZtdWxsX3A2NCgocG9seTY0X3QpKHZnZXRfaGlnaF9wNjQoX19wMCkpLCAocG9seTY0X3QpKHZnZXRfaGlnaF9wNjQoX19wMSkpKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBwb2x5MTI4X3Qgdm11bGxfaGlnaF9wNjQocG9seTY0eDJfdCBfX3AwLCBwb2x5NjR4Ml90IF9fcDEpIHsKICBwb2x5NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHBvbHk2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgcG9seTEyOF90IF9fcmV0OwogIF9fcmV0ID0gdm11bGxfcDY0KChwb2x5NjRfdCkoX19ub3N3YXBfdmdldF9oaWdoX3A2NChfX3JldjApKSwgKHBvbHk2NF90KShfX25vc3dhcF92Z2V0X2hpZ2hfcDY0KF9fcmV2MSkpKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bXVsbF9oaWdoX2xhbmVfdTMyKF9fcDBfNjUyLCBfX3AxXzY1MiwgX19wMl82NTIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0X3QgX19zMF82NTIgPSBfX3AwXzY1MjsgXAogIHVpbnQzMngyX3QgX19zMV82NTIgPSBfX3AxXzY1MjsgXAogIHVpbnQ2NHgyX3QgX19yZXRfNjUyOyBcCiAgX19yZXRfNjUyID0gdm11bGxfdTMyKHZnZXRfaGlnaF91MzIoX19zMF82NTIpLCBzcGxhdF9sYW5lX3UzMihfX3MxXzY1MiwgX19wMl82NTIpKTsgXAogIF9fcmV0XzY1MjsgXAp9KQojZWxzZQojZGVmaW5lIHZtdWxsX2hpZ2hfbGFuZV91MzIoX19wMF82NTMsIF9fcDFfNjUzLCBfX3AyXzY1MykgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDRfdCBfX3MwXzY1MyA9IF9fcDBfNjUzOyBcCiAgdWludDMyeDJfdCBfX3MxXzY1MyA9IF9fcDFfNjUzOyBcCiAgdWludDMyeDRfdCBfX3JldjBfNjUzOyAgX19yZXYwXzY1MyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNjUzLCBfX3MwXzY1MywgMywgMiwgMSwgMCk7IFwKICB1aW50MzJ4Ml90IF9fcmV2MV82NTM7ICBfX3JldjFfNjUzID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV82NTMsIF9fczFfNjUzLCAxLCAwKTsgXAogIHVpbnQ2NHgyX3QgX19yZXRfNjUzOyBcCiAgX19yZXRfNjUzID0gX19ub3N3YXBfdm11bGxfdTMyKF9fbm9zd2FwX3ZnZXRfaGlnaF91MzIoX19yZXYwXzY1MyksIF9fbm9zd2FwX3NwbGF0X2xhbmVfdTMyKF9fcmV2MV82NTMsIF9fcDJfNjUzKSk7IFwKICBfX3JldF82NTMgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF82NTMsIF9fcmV0XzY1MywgMSwgMCk7IFwKICBfX3JldF82NTM7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bXVsbF9oaWdoX2xhbmVfdTE2KF9fcDBfNjU0LCBfX3AxXzY1NCwgX19wMl82NTQpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng4X3QgX19zMF82NTQgPSBfX3AwXzY1NDsgXAogIHVpbnQxNng0X3QgX19zMV82NTQgPSBfX3AxXzY1NDsgXAogIHVpbnQzMng0X3QgX19yZXRfNjU0OyBcCiAgX19yZXRfNjU0ID0gdm11bGxfdTE2KHZnZXRfaGlnaF91MTYoX19zMF82NTQpLCBzcGxhdF9sYW5lX3UxNihfX3MxXzY1NCwgX19wMl82NTQpKTsgXAogIF9fcmV0XzY1NDsgXAp9KQojZWxzZQojZGVmaW5lIHZtdWxsX2hpZ2hfbGFuZV91MTYoX19wMF82NTUsIF9fcDFfNjU1LCBfX3AyXzY1NSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDhfdCBfX3MwXzY1NSA9IF9fcDBfNjU1OyBcCiAgdWludDE2eDRfdCBfX3MxXzY1NSA9IF9fcDFfNjU1OyBcCiAgdWludDE2eDhfdCBfX3JldjBfNjU1OyAgX19yZXYwXzY1NSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNjU1LCBfX3MwXzY1NSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50MTZ4NF90IF9fcmV2MV82NTU7ICBfX3JldjFfNjU1ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV82NTUsIF9fczFfNjU1LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQzMng0X3QgX19yZXRfNjU1OyBcCiAgX19yZXRfNjU1ID0gX19ub3N3YXBfdm11bGxfdTE2KF9fbm9zd2FwX3ZnZXRfaGlnaF91MTYoX19yZXYwXzY1NSksIF9fbm9zd2FwX3NwbGF0X2xhbmVfdTE2KF9fcmV2MV82NTUsIF9fcDJfNjU1KSk7IFwKICBfX3JldF82NTUgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF82NTUsIF9fcmV0XzY1NSwgMywgMiwgMSwgMCk7IFwKICBfX3JldF82NTU7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bXVsbF9oaWdoX2xhbmVfczMyKF9fcDBfNjU2LCBfX3AxXzY1NiwgX19wMl82NTYpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDRfdCBfX3MwXzY1NiA9IF9fcDBfNjU2OyBcCiAgaW50MzJ4Ml90IF9fczFfNjU2ID0gX19wMV82NTY7IFwKICBpbnQ2NHgyX3QgX19yZXRfNjU2OyBcCiAgX19yZXRfNjU2ID0gdm11bGxfczMyKHZnZXRfaGlnaF9zMzIoX19zMF82NTYpLCBzcGxhdF9sYW5lX3MzMihfX3MxXzY1NiwgX19wMl82NTYpKTsgXAogIF9fcmV0XzY1NjsgXAp9KQojZWxzZQojZGVmaW5lIHZtdWxsX2hpZ2hfbGFuZV9zMzIoX19wMF82NTcsIF9fcDFfNjU3LCBfX3AyXzY1NykgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczBfNjU3ID0gX19wMF82NTc7IFwKICBpbnQzMngyX3QgX19zMV82NTcgPSBfX3AxXzY1NzsgXAogIGludDMyeDRfdCBfX3JldjBfNjU3OyAgX19yZXYwXzY1NyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNjU3LCBfX3MwXzY1NywgMywgMiwgMSwgMCk7IFwKICBpbnQzMngyX3QgX19yZXYxXzY1NzsgIF9fcmV2MV82NTcgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzY1NywgX19zMV82NTcsIDEsIDApOyBcCiAgaW50NjR4Ml90IF9fcmV0XzY1NzsgXAogIF9fcmV0XzY1NyA9IF9fbm9zd2FwX3ZtdWxsX3MzMihfX25vc3dhcF92Z2V0X2hpZ2hfczMyKF9fcmV2MF82NTcpLCBfX25vc3dhcF9zcGxhdF9sYW5lX3MzMihfX3JldjFfNjU3LCBfX3AyXzY1NykpOyBcCiAgX19yZXRfNjU3ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNjU3LCBfX3JldF82NTcsIDEsIDApOyBcCiAgX19yZXRfNjU3OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm11bGxfaGlnaF9sYW5lX3MxNihfX3AwXzY1OCwgX19wMV82NTgsIF9fcDJfNjU4KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4X3QgX19zMF82NTggPSBfX3AwXzY1ODsgXAogIGludDE2eDRfdCBfX3MxXzY1OCA9IF9fcDFfNjU4OyBcCiAgaW50MzJ4NF90IF9fcmV0XzY1ODsgXAogIF9fcmV0XzY1OCA9IHZtdWxsX3MxNih2Z2V0X2hpZ2hfczE2KF9fczBfNjU4KSwgc3BsYXRfbGFuZV9zMTYoX19zMV82NTgsIF9fcDJfNjU4KSk7IFwKICBfX3JldF82NTg7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bXVsbF9oaWdoX2xhbmVfczE2KF9fcDBfNjU5LCBfX3AxXzY1OSwgX19wMl82NTkpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDhfdCBfX3MwXzY1OSA9IF9fcDBfNjU5OyBcCiAgaW50MTZ4NF90IF9fczFfNjU5ID0gX19wMV82NTk7IFwKICBpbnQxNng4X3QgX19yZXYwXzY1OTsgIF9fcmV2MF82NTkgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzY1OSwgX19zMF82NTksIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4NF90IF9fcmV2MV82NTk7ICBfX3JldjFfNjU5ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV82NTksIF9fczFfNjU5LCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDRfdCBfX3JldF82NTk7IFwKICBfX3JldF82NTkgPSBfX25vc3dhcF92bXVsbF9zMTYoX19ub3N3YXBfdmdldF9oaWdoX3MxNihfX3JldjBfNjU5KSwgX19ub3N3YXBfc3BsYXRfbGFuZV9zMTYoX19yZXYxXzY1OSwgX19wMl82NTkpKTsgXAogIF9fcmV0XzY1OSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzY1OSwgX19yZXRfNjU5LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzY1OTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtdWxsX2hpZ2hfbGFuZXFfdTMyKF9fcDBfNjYwLCBfX3AxXzY2MCwgX19wMl82NjApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0X3QgX19zMF82NjAgPSBfX3AwXzY2MDsgXAogIHVpbnQzMng0X3QgX19zMV82NjAgPSBfX3AxXzY2MDsgXAogIHVpbnQ2NHgyX3QgX19yZXRfNjYwOyBcCiAgX19yZXRfNjYwID0gdm11bGxfdTMyKHZnZXRfaGlnaF91MzIoX19zMF82NjApLCBzcGxhdF9sYW5lcV91MzIoX19zMV82NjAsIF9fcDJfNjYwKSk7IFwKICBfX3JldF82NjA7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bXVsbF9oaWdoX2xhbmVxX3UzMihfX3AwXzY2MSwgX19wMV82NjEsIF9fcDJfNjYxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NF90IF9fczBfNjYxID0gX19wMF82NjE7IFwKICB1aW50MzJ4NF90IF9fczFfNjYxID0gX19wMV82NjE7IFwKICB1aW50MzJ4NF90IF9fcmV2MF82NjE7ICBfX3JldjBfNjYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF82NjEsIF9fczBfNjYxLCAzLCAyLCAxLCAwKTsgXAogIHVpbnQzMng0X3QgX19yZXYxXzY2MTsgIF9fcmV2MV82NjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzY2MSwgX19zMV82NjEsIDMsIDIsIDEsIDApOyBcCiAgdWludDY0eDJfdCBfX3JldF82NjE7IFwKICBfX3JldF82NjEgPSBfX25vc3dhcF92bXVsbF91MzIoX19ub3N3YXBfdmdldF9oaWdoX3UzMihfX3JldjBfNjYxKSwgX19ub3N3YXBfc3BsYXRfbGFuZXFfdTMyKF9fcmV2MV82NjEsIF9fcDJfNjYxKSk7IFwKICBfX3JldF82NjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF82NjEsIF9fcmV0XzY2MSwgMSwgMCk7IFwKICBfX3JldF82NjE7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bXVsbF9oaWdoX2xhbmVxX3UxNihfX3AwXzY2MiwgX19wMV82NjIsIF9fcDJfNjYyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4OF90IF9fczBfNjYyID0gX19wMF82NjI7IFwKICB1aW50MTZ4OF90IF9fczFfNjYyID0gX19wMV82NjI7IFwKICB1aW50MzJ4NF90IF9fcmV0XzY2MjsgXAogIF9fcmV0XzY2MiA9IHZtdWxsX3UxNih2Z2V0X2hpZ2hfdTE2KF9fczBfNjYyKSwgc3BsYXRfbGFuZXFfdTE2KF9fczFfNjYyLCBfX3AyXzY2MikpOyBcCiAgX19yZXRfNjYyOyBcCn0pCiNlbHNlCiNkZWZpbmUgdm11bGxfaGlnaF9sYW5lcV91MTYoX19wMF82NjMsIF9fcDFfNjYzLCBfX3AyXzY2MykgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDhfdCBfX3MwXzY2MyA9IF9fcDBfNjYzOyBcCiAgdWludDE2eDhfdCBfX3MxXzY2MyA9IF9fcDFfNjYzOyBcCiAgdWludDE2eDhfdCBfX3JldjBfNjYzOyAgX19yZXYwXzY2MyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNjYzLCBfX3MwXzY2MywgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50MTZ4OF90IF9fcmV2MV82NjM7ICBfX3JldjFfNjYzID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV82NjMsIF9fczFfNjYzLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQzMng0X3QgX19yZXRfNjYzOyBcCiAgX19yZXRfNjYzID0gX19ub3N3YXBfdm11bGxfdTE2KF9fbm9zd2FwX3ZnZXRfaGlnaF91MTYoX19yZXYwXzY2MyksIF9fbm9zd2FwX3NwbGF0X2xhbmVxX3UxNihfX3JldjFfNjYzLCBfX3AyXzY2MykpOyBcCiAgX19yZXRfNjYzID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNjYzLCBfX3JldF82NjMsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfNjYzOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm11bGxfaGlnaF9sYW5lcV9zMzIoX19wMF82NjQsIF9fcDFfNjY0LCBfX3AyXzY2NCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczBfNjY0ID0gX19wMF82NjQ7IFwKICBpbnQzMng0X3QgX19zMV82NjQgPSBfX3AxXzY2NDsgXAogIGludDY0eDJfdCBfX3JldF82NjQ7IFwKICBfX3JldF82NjQgPSB2bXVsbF9zMzIodmdldF9oaWdoX3MzMihfX3MwXzY2NCksIHNwbGF0X2xhbmVxX3MzMihfX3MxXzY2NCwgX19wMl82NjQpKTsgXAogIF9fcmV0XzY2NDsgXAp9KQojZWxzZQojZGVmaW5lIHZtdWxsX2hpZ2hfbGFuZXFfczMyKF9fcDBfNjY1LCBfX3AxXzY2NSwgX19wMl82NjUpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDRfdCBfX3MwXzY2NSA9IF9fcDBfNjY1OyBcCiAgaW50MzJ4NF90IF9fczFfNjY1ID0gX19wMV82NjU7IFwKICBpbnQzMng0X3QgX19yZXYwXzY2NTsgIF9fcmV2MF82NjUgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzY2NSwgX19zMF82NjUsIDMsIDIsIDEsIDApOyBcCiAgaW50MzJ4NF90IF9fcmV2MV82NjU7ICBfX3JldjFfNjY1ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV82NjUsIF9fczFfNjY1LCAzLCAyLCAxLCAwKTsgXAogIGludDY0eDJfdCBfX3JldF82NjU7IFwKICBfX3JldF82NjUgPSBfX25vc3dhcF92bXVsbF9zMzIoX19ub3N3YXBfdmdldF9oaWdoX3MzMihfX3JldjBfNjY1KSwgX19ub3N3YXBfc3BsYXRfbGFuZXFfczMyKF9fcmV2MV82NjUsIF9fcDJfNjY1KSk7IFwKICBfX3JldF82NjUgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF82NjUsIF9fcmV0XzY2NSwgMSwgMCk7IFwKICBfX3JldF82NjU7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bXVsbF9oaWdoX2xhbmVxX3MxNihfX3AwXzY2NiwgX19wMV82NjYsIF9fcDJfNjY2KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4X3QgX19zMF82NjYgPSBfX3AwXzY2NjsgXAogIGludDE2eDhfdCBfX3MxXzY2NiA9IF9fcDFfNjY2OyBcCiAgaW50MzJ4NF90IF9fcmV0XzY2NjsgXAogIF9fcmV0XzY2NiA9IHZtdWxsX3MxNih2Z2V0X2hpZ2hfczE2KF9fczBfNjY2KSwgc3BsYXRfbGFuZXFfczE2KF9fczFfNjY2LCBfX3AyXzY2NikpOyBcCiAgX19yZXRfNjY2OyBcCn0pCiNlbHNlCiNkZWZpbmUgdm11bGxfaGlnaF9sYW5lcV9zMTYoX19wMF82NjcsIF9fcDFfNjY3LCBfX3AyXzY2NykgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OF90IF9fczBfNjY3ID0gX19wMF82Njc7IFwKICBpbnQxNng4X3QgX19zMV82NjcgPSBfX3AxXzY2NzsgXAogIGludDE2eDhfdCBfX3JldjBfNjY3OyAgX19yZXYwXzY2NyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNjY3LCBfX3MwXzY2NywgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng4X3QgX19yZXYxXzY2NzsgIF9fcmV2MV82NjcgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzY2NywgX19zMV82NjcsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50MzJ4NF90IF9fcmV0XzY2NzsgXAogIF9fcmV0XzY2NyA9IF9fbm9zd2FwX3ZtdWxsX3MxNihfX25vc3dhcF92Z2V0X2hpZ2hfczE2KF9fcmV2MF82NjcpLCBfX25vc3dhcF9zcGxhdF9sYW5lcV9zMTYoX19yZXYxXzY2NywgX19wMl82NjcpKTsgXAogIF9fcmV0XzY2NyA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzY2NywgX19yZXRfNjY3LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzY2NzsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ2NHgyX3Qgdm11bGxfaGlnaF9uX3UzMih1aW50MzJ4NF90IF9fcDAsIHVpbnQzMl90IF9fcDEpIHsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gdm11bGxfbl91MzIodmdldF9oaWdoX3UzMihfX3AwKSwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDY0eDJfdCB2bXVsbF9oaWdoX25fdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDMyX3QgX19wMSkgewogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3ZtdWxsX25fdTMyKF9fbm9zd2FwX3ZnZXRfaGlnaF91MzIoX19yZXYwKSwgX19wMSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMng0X3Qgdm11bGxfaGlnaF9uX3UxNih1aW50MTZ4OF90IF9fcDAsIHVpbnQxNl90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gdm11bGxfbl91MTYodmdldF9oaWdoX3UxNihfX3AwKSwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2bXVsbF9oaWdoX25fdTE2KHVpbnQxNng4X3QgX19wMCwgdWludDE2X3QgX19wMSkgewogIHVpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3ZtdWxsX25fdTE2KF9fbm9zd2FwX3ZnZXRfaGlnaF91MTYoX19yZXYwKSwgX19wMSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDY0eDJfdCB2bXVsbF9oaWdoX25fczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMl90IF9fcDEpIHsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSB2bXVsbF9uX3MzMih2Z2V0X2hpZ2hfczMyKF9fcDApLCBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ2NHgyX3Qgdm11bGxfaGlnaF9uX3MzMihpbnQzMng0X3QgX19wMCwgaW50MzJfdCBfX3AxKSB7CiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3ZtdWxsX25fczMyKF9fbm9zd2FwX3ZnZXRfaGlnaF9zMzIoX19yZXYwKSwgX19wMSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDRfdCB2bXVsbF9oaWdoX25fczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNl90IF9fcDEpIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSB2bXVsbF9uX3MxNih2Z2V0X2hpZ2hfczE2KF9fcDApLCBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMng0X3Qgdm11bGxfaGlnaF9uX3MxNihpbnQxNng4X3QgX19wMCwgaW50MTZfdCBfX3AxKSB7CiAgaW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3ZtdWxsX25fczE2KF9fbm9zd2FwX3ZnZXRfaGlnaF9zMTYoX19yZXYwKSwgX19wMSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtdWxsX2xhbmVxX3UzMihfX3AwXzY2OCwgX19wMV82NjgsIF9fcDJfNjY4KSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4Ml90IF9fczBfNjY4ID0gX19wMF82Njg7IFwKICB1aW50MzJ4NF90IF9fczFfNjY4ID0gX19wMV82Njg7IFwKICB1aW50NjR4Ml90IF9fcmV0XzY2ODsgXAogIF9fcmV0XzY2OCA9IHZtdWxsX3UzMihfX3MwXzY2OCwgc3BsYXRfbGFuZXFfdTMyKF9fczFfNjY4LCBfX3AyXzY2OCkpOyBcCiAgX19yZXRfNjY4OyBcCn0pCiNlbHNlCiNkZWZpbmUgdm11bGxfbGFuZXFfdTMyKF9fcDBfNjY5LCBfX3AxXzY2OSwgX19wMl82NjkpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMngyX3QgX19zMF82NjkgPSBfX3AwXzY2OTsgXAogIHVpbnQzMng0X3QgX19zMV82NjkgPSBfX3AxXzY2OTsgXAogIHVpbnQzMngyX3QgX19yZXYwXzY2OTsgIF9fcmV2MF82NjkgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzY2OSwgX19zMF82NjksIDEsIDApOyBcCiAgdWludDMyeDRfdCBfX3JldjFfNjY5OyAgX19yZXYxXzY2OSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNjY5LCBfX3MxXzY2OSwgMywgMiwgMSwgMCk7IFwKICB1aW50NjR4Ml90IF9fcmV0XzY2OTsgXAogIF9fcmV0XzY2OSA9IF9fbm9zd2FwX3ZtdWxsX3UzMihfX3JldjBfNjY5LCBfX25vc3dhcF9zcGxhdF9sYW5lcV91MzIoX19yZXYxXzY2OSwgX19wMl82NjkpKTsgXAogIF9fcmV0XzY2OSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzY2OSwgX19yZXRfNjY5LCAxLCAwKTsgXAogIF9fcmV0XzY2OTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtdWxsX2xhbmVxX3UxNihfX3AwXzY3MCwgX19wMV82NzAsIF9fcDJfNjcwKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4NF90IF9fczBfNjcwID0gX19wMF82NzA7IFwKICB1aW50MTZ4OF90IF9fczFfNjcwID0gX19wMV82NzA7IFwKICB1aW50MzJ4NF90IF9fcmV0XzY3MDsgXAogIF9fcmV0XzY3MCA9IHZtdWxsX3UxNihfX3MwXzY3MCwgc3BsYXRfbGFuZXFfdTE2KF9fczFfNjcwLCBfX3AyXzY3MCkpOyBcCiAgX19yZXRfNjcwOyBcCn0pCiNlbHNlCiNkZWZpbmUgdm11bGxfbGFuZXFfdTE2KF9fcDBfNjcxLCBfX3AxXzY3MSwgX19wMl82NzEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng0X3QgX19zMF82NzEgPSBfX3AwXzY3MTsgXAogIHVpbnQxNng4X3QgX19zMV82NzEgPSBfX3AxXzY3MTsgXAogIHVpbnQxNng0X3QgX19yZXYwXzY3MTsgIF9fcmV2MF82NzEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzY3MSwgX19zMF82NzEsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDhfdCBfX3JldjFfNjcxOyAgX19yZXYxXzY3MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNjcxLCBfX3MxXzY3MSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50MzJ4NF90IF9fcmV0XzY3MTsgXAogIF9fcmV0XzY3MSA9IF9fbm9zd2FwX3ZtdWxsX3UxNihfX3JldjBfNjcxLCBfX25vc3dhcF9zcGxhdF9sYW5lcV91MTYoX19yZXYxXzY3MSwgX19wMl82NzEpKTsgXAogIF9fcmV0XzY3MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzY3MSwgX19yZXRfNjcxLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzY3MTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtdWxsX2xhbmVxX3MzMihfX3AwXzY3MiwgX19wMV82NzIsIF9fcDJfNjcyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMngyX3QgX19zMF82NzIgPSBfX3AwXzY3MjsgXAogIGludDMyeDRfdCBfX3MxXzY3MiA9IF9fcDFfNjcyOyBcCiAgaW50NjR4Ml90IF9fcmV0XzY3MjsgXAogIF9fcmV0XzY3MiA9IHZtdWxsX3MzMihfX3MwXzY3Miwgc3BsYXRfbGFuZXFfczMyKF9fczFfNjcyLCBfX3AyXzY3MikpOyBcCiAgX19yZXRfNjcyOyBcCn0pCiNlbHNlCiNkZWZpbmUgdm11bGxfbGFuZXFfczMyKF9fcDBfNjczLCBfX3AxXzY3MywgX19wMl82NzMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJfdCBfX3MwXzY3MyA9IF9fcDBfNjczOyBcCiAgaW50MzJ4NF90IF9fczFfNjczID0gX19wMV82NzM7IFwKICBpbnQzMngyX3QgX19yZXYwXzY3MzsgIF9fcmV2MF82NzMgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzY3MywgX19zMF82NzMsIDEsIDApOyBcCiAgaW50MzJ4NF90IF9fcmV2MV82NzM7ICBfX3JldjFfNjczID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV82NzMsIF9fczFfNjczLCAzLCAyLCAxLCAwKTsgXAogIGludDY0eDJfdCBfX3JldF82NzM7IFwKICBfX3JldF82NzMgPSBfX25vc3dhcF92bXVsbF9zMzIoX19yZXYwXzY3MywgX19ub3N3YXBfc3BsYXRfbGFuZXFfczMyKF9fcmV2MV82NzMsIF9fcDJfNjczKSk7IFwKICBfX3JldF82NzMgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF82NzMsIF9fcmV0XzY3MywgMSwgMCk7IFwKICBfX3JldF82NzM7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bXVsbF9sYW5lcV9zMTYoX19wMF82NzQsIF9fcDFfNjc0LCBfX3AyXzY3NCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NF90IF9fczBfNjc0ID0gX19wMF82NzQ7IFwKICBpbnQxNng4X3QgX19zMV82NzQgPSBfX3AxXzY3NDsgXAogIGludDMyeDRfdCBfX3JldF82NzQ7IFwKICBfX3JldF82NzQgPSB2bXVsbF9zMTYoX19zMF82NzQsIHNwbGF0X2xhbmVxX3MxNihfX3MxXzY3NCwgX19wMl82NzQpKTsgXAogIF9fcmV0XzY3NDsgXAp9KQojZWxzZQojZGVmaW5lIHZtdWxsX2xhbmVxX3MxNihfX3AwXzY3NSwgX19wMV82NzUsIF9fcDJfNjc1KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng0X3QgX19zMF82NzUgPSBfX3AwXzY3NTsgXAogIGludDE2eDhfdCBfX3MxXzY3NSA9IF9fcDFfNjc1OyBcCiAgaW50MTZ4NF90IF9fcmV2MF82NzU7ICBfX3JldjBfNjc1ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF82NzUsIF9fczBfNjc1LCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDhfdCBfX3JldjFfNjc1OyAgX19yZXYxXzY3NSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNjc1LCBfX3MxXzY3NSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQzMng0X3QgX19yZXRfNjc1OyBcCiAgX19yZXRfNjc1ID0gX19ub3N3YXBfdm11bGxfczE2KF9fcmV2MF82NzUsIF9fbm9zd2FwX3NwbGF0X2xhbmVxX3MxNihfX3JldjFfNjc1LCBfX3AyXzY3NSkpOyBcCiAgX19yZXRfNjc1ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNjc1LCBfX3JldF82NzUsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfNjc1OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQ2NHgyX3Qgdm11bHhxX2Y2NChmbG9hdDY0eDJfdCBfX3AwLCBmbG9hdDY0eDJfdCBfX3AxKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZtdWx4cV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA0Mik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQ2NHgyX3Qgdm11bHhxX2Y2NChmbG9hdDY0eDJfdCBfX3AwLCBmbG9hdDY0eDJfdCBfX3AxKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgZmxvYXQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZtdWx4cV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNDIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDY0eDJfdCBfX25vc3dhcF92bXVseHFfZjY0KGZsb2F0NjR4Ml90IF9fcDAsIGZsb2F0NjR4Ml90IF9fcDEpIHsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDJfdCkgX19idWlsdGluX25lb25fdm11bHhxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDQyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDRfdCB2bXVseHFfZjMyKGZsb2F0MzJ4NF90IF9fcDAsIGZsb2F0MzJ4NF90IF9fcDEpIHsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdm11bHhxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDQxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDRfdCB2bXVseHFfZjMyKGZsb2F0MzJ4NF90IF9fcDAsIGZsb2F0MzJ4NF90IF9fcDEpIHsKICBmbG9hdDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdm11bHhxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA0MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MzJ4NF90IF9fbm9zd2FwX3ZtdWx4cV9mMzIoZmxvYXQzMng0X3QgX19wMCwgZmxvYXQzMng0X3QgX19wMSkgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92bXVseHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNDEpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCl9fYWkgZmxvYXQ2NHgxX3Qgdm11bHhfZjY0KGZsb2F0NjR4MV90IF9fcDAsIGZsb2F0NjR4MV90IF9fcDEpIHsKICBmbG9hdDY0eDFfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDFfdCkgX19idWlsdGluX25lb25fdm11bHhfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDEwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMngyX3Qgdm11bHhfZjMyKGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0MzJ4Ml90IF9fcDEpIHsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdm11bHhfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4Ml90IHZtdWx4X2YzMihmbG9hdDMyeDJfdCBfX3AwLCBmbG9hdDMyeDJfdCBfX3AxKSB7CiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZtdWx4X3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgOSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0MzJ4Ml90IF9fbm9zd2FwX3ZtdWx4X2YzMihmbG9hdDMyeDJfdCBfX3AwLCBmbG9hdDMyeDJfdCBfX3AxKSB7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZtdWx4X3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCA5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgpfX2FpIGZsb2F0NjRfdCB2bXVseGRfZjY0KGZsb2F0NjRfdCBfX3AwLCBmbG9hdDY0X3QgX19wMSkgewogIGZsb2F0NjRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZtdWx4ZF9mNjQoX19wMCwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQzMl90IHZtdWx4c19mMzIoZmxvYXQzMl90IF9fcDAsIGZsb2F0MzJfdCBfX3AxKSB7CiAgZmxvYXQzMl90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJfdCkgX19idWlsdGluX25lb25fdm11bHhzX2YzMihfX3AwLCBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2RlZmluZSB2bXVseGRfbGFuZV9mNjQoX19wMF82NzYsIF9fcDFfNjc2LCBfX3AyXzY3NikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NF90IF9fczBfNjc2ID0gX19wMF82NzY7IFwKICBmbG9hdDY0eDFfdCBfX3MxXzY3NiA9IF9fcDFfNjc2OyBcCiAgZmxvYXQ2NF90IF9fcmV0XzY3NjsgXAogIF9fcmV0XzY3NiA9IHZtdWx4ZF9mNjQoX19zMF82NzYsIHZnZXRfbGFuZV9mNjQoX19zMV82NzYsIF9fcDJfNjc2KSk7IFwKICBfX3JldF82NzY7IFwKfSkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm11bHhzX2xhbmVfZjMyKF9fcDBfNjc3LCBfX3AxXzY3NywgX19wMl82NzcpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJfdCBfX3MwXzY3NyA9IF9fcDBfNjc3OyBcCiAgZmxvYXQzMngyX3QgX19zMV82NzcgPSBfX3AxXzY3NzsgXAogIGZsb2F0MzJfdCBfX3JldF82Nzc7IFwKICBfX3JldF82NzcgPSB2bXVseHNfZjMyKF9fczBfNjc3LCB2Z2V0X2xhbmVfZjMyKF9fczFfNjc3LCBfX3AyXzY3NykpOyBcCiAgX19yZXRfNjc3OyBcCn0pCiNlbHNlCiNkZWZpbmUgdm11bHhzX2xhbmVfZjMyKF9fcDBfNjc4LCBfX3AxXzY3OCwgX19wMl82NzgpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJfdCBfX3MwXzY3OCA9IF9fcDBfNjc4OyBcCiAgZmxvYXQzMngyX3QgX19zMV82NzggPSBfX3AxXzY3ODsgXAogIGZsb2F0MzJ4Ml90IF9fcmV2MV82Nzg7ICBfX3JldjFfNjc4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV82NzgsIF9fczFfNjc4LCAxLCAwKTsgXAogIGZsb2F0MzJfdCBfX3JldF82Nzg7IFwKICBfX3JldF82NzggPSB2bXVseHNfZjMyKF9fczBfNjc4LCBfX25vc3dhcF92Z2V0X2xhbmVfZjMyKF9fcmV2MV82NzgsIF9fcDJfNjc4KSk7IFwKICBfX3JldF82Nzg7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bXVseHFfbGFuZV9mNjQoX19wMF82NzksIF9fcDFfNjc5LCBfX3AyXzY3OSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgyX3QgX19zMF82NzkgPSBfX3AwXzY3OTsgXAogIGZsb2F0NjR4MV90IF9fczFfNjc5ID0gX19wMV82Nzk7IFwKICBmbG9hdDY0eDJfdCBfX3JldF82Nzk7IFwKICBfX3JldF82NzkgPSB2bXVseHFfZjY0KF9fczBfNjc5LCBzcGxhdHFfbGFuZV9mNjQoX19zMV82NzksIF9fcDJfNjc5KSk7IFwKICBfX3JldF82Nzk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bXVseHFfbGFuZV9mNjQoX19wMF82ODAsIF9fcDFfNjgwLCBfX3AyXzY4MCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgyX3QgX19zMF82ODAgPSBfX3AwXzY4MDsgXAogIGZsb2F0NjR4MV90IF9fczFfNjgwID0gX19wMV82ODA7IFwKICBmbG9hdDY0eDJfdCBfX3JldjBfNjgwOyAgX19yZXYwXzY4MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNjgwLCBfX3MwXzY4MCwgMSwgMCk7IFwKICBmbG9hdDY0eDJfdCBfX3JldF82ODA7IFwKICBfX3JldF82ODAgPSBfX25vc3dhcF92bXVseHFfZjY0KF9fcmV2MF82ODAsIF9fbm9zd2FwX3NwbGF0cV9sYW5lX2Y2NChfX3MxXzY4MCwgX19wMl82ODApKTsgXAogIF9fcmV0XzY4MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzY4MCwgX19yZXRfNjgwLCAxLCAwKTsgXAogIF9fcmV0XzY4MDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtdWx4cV9sYW5lX2YzMihfX3AwXzY4MSwgX19wMV82ODEsIF9fcDJfNjgxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDRfdCBfX3MwXzY4MSA9IF9fcDBfNjgxOyBcCiAgZmxvYXQzMngyX3QgX19zMV82ODEgPSBfX3AxXzY4MTsgXAogIGZsb2F0MzJ4NF90IF9fcmV0XzY4MTsgXAogIF9fcmV0XzY4MSA9IHZtdWx4cV9mMzIoX19zMF82ODEsIHNwbGF0cV9sYW5lX2YzMihfX3MxXzY4MSwgX19wMl82ODEpKTsgXAogIF9fcmV0XzY4MTsgXAp9KQojZWxzZQojZGVmaW5lIHZtdWx4cV9sYW5lX2YzMihfX3AwXzY4MiwgX19wMV82ODIsIF9fcDJfNjgyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDRfdCBfX3MwXzY4MiA9IF9fcDBfNjgyOyBcCiAgZmxvYXQzMngyX3QgX19zMV82ODIgPSBfX3AxXzY4MjsgXAogIGZsb2F0MzJ4NF90IF9fcmV2MF82ODI7ICBfX3JldjBfNjgyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF82ODIsIF9fczBfNjgyLCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MzJ4Ml90IF9fcmV2MV82ODI7ICBfX3JldjFfNjgyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV82ODIsIF9fczFfNjgyLCAxLCAwKTsgXAogIGZsb2F0MzJ4NF90IF9fcmV0XzY4MjsgXAogIF9fcmV0XzY4MiA9IF9fbm9zd2FwX3ZtdWx4cV9mMzIoX19yZXYwXzY4MiwgX19ub3N3YXBfc3BsYXRxX2xhbmVfZjMyKF9fcmV2MV82ODIsIF9fcDJfNjgyKSk7IFwKICBfX3JldF82ODIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF82ODIsIF9fcmV0XzY4MiwgMywgMiwgMSwgMCk7IFwKICBfX3JldF82ODI7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bXVseF9sYW5lX2YzMihfX3AwXzY4MywgX19wMV82ODMsIF9fcDJfNjgzKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJfdCBfX3MwXzY4MyA9IF9fcDBfNjgzOyBcCiAgZmxvYXQzMngyX3QgX19zMV82ODMgPSBfX3AxXzY4MzsgXAogIGZsb2F0MzJ4Ml90IF9fcmV0XzY4MzsgXAogIF9fcmV0XzY4MyA9IHZtdWx4X2YzMihfX3MwXzY4Mywgc3BsYXRfbGFuZV9mMzIoX19zMV82ODMsIF9fcDJfNjgzKSk7IFwKICBfX3JldF82ODM7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bXVseF9sYW5lX2YzMihfX3AwXzY4NCwgX19wMV82ODQsIF9fcDJfNjg0KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJfdCBfX3MwXzY4NCA9IF9fcDBfNjg0OyBcCiAgZmxvYXQzMngyX3QgX19zMV82ODQgPSBfX3AxXzY4NDsgXAogIGZsb2F0MzJ4Ml90IF9fcmV2MF82ODQ7ICBfX3JldjBfNjg0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF82ODQsIF9fczBfNjg0LCAxLCAwKTsgXAogIGZsb2F0MzJ4Ml90IF9fcmV2MV82ODQ7ICBfX3JldjFfNjg0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV82ODQsIF9fczFfNjg0LCAxLCAwKTsgXAogIGZsb2F0MzJ4Ml90IF9fcmV0XzY4NDsgXAogIF9fcmV0XzY4NCA9IF9fbm9zd2FwX3ZtdWx4X2YzMihfX3JldjBfNjg0LCBfX25vc3dhcF9zcGxhdF9sYW5lX2YzMihfX3JldjFfNjg0LCBfX3AyXzY4NCkpOyBcCiAgX19yZXRfNjg0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNjg0LCBfX3JldF82ODQsIDEsIDApOyBcCiAgX19yZXRfNjg0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm11bHhkX2xhbmVxX2Y2NChfX3AwXzY4NSwgX19wMV82ODUsIF9fcDJfNjg1KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0X3QgX19zMF82ODUgPSBfX3AwXzY4NTsgXAogIGZsb2F0NjR4Ml90IF9fczFfNjg1ID0gX19wMV82ODU7IFwKICBmbG9hdDY0X3QgX19yZXRfNjg1OyBcCiAgX19yZXRfNjg1ID0gdm11bHhkX2Y2NChfX3MwXzY4NSwgdmdldHFfbGFuZV9mNjQoX19zMV82ODUsIF9fcDJfNjg1KSk7IFwKICBfX3JldF82ODU7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bXVseGRfbGFuZXFfZjY0KF9fcDBfNjg2LCBfX3AxXzY4NiwgX19wMl82ODYpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjRfdCBfX3MwXzY4NiA9IF9fcDBfNjg2OyBcCiAgZmxvYXQ2NHgyX3QgX19zMV82ODYgPSBfX3AxXzY4NjsgXAogIGZsb2F0NjR4Ml90IF9fcmV2MV82ODY7ICBfX3JldjFfNjg2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV82ODYsIF9fczFfNjg2LCAxLCAwKTsgXAogIGZsb2F0NjRfdCBfX3JldF82ODY7IFwKICBfX3JldF82ODYgPSB2bXVseGRfZjY0KF9fczBfNjg2LCBfX25vc3dhcF92Z2V0cV9sYW5lX2Y2NChfX3JldjFfNjg2LCBfX3AyXzY4NikpOyBcCiAgX19yZXRfNjg2OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm11bHhzX2xhbmVxX2YzMihfX3AwXzY4NywgX19wMV82ODcsIF9fcDJfNjg3KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyX3QgX19zMF82ODcgPSBfX3AwXzY4NzsgXAogIGZsb2F0MzJ4NF90IF9fczFfNjg3ID0gX19wMV82ODc7IFwKICBmbG9hdDMyX3QgX19yZXRfNjg3OyBcCiAgX19yZXRfNjg3ID0gdm11bHhzX2YzMihfX3MwXzY4NywgdmdldHFfbGFuZV9mMzIoX19zMV82ODcsIF9fcDJfNjg3KSk7IFwKICBfX3JldF82ODc7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bXVseHNfbGFuZXFfZjMyKF9fcDBfNjg4LCBfX3AxXzY4OCwgX19wMl82ODgpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJfdCBfX3MwXzY4OCA9IF9fcDBfNjg4OyBcCiAgZmxvYXQzMng0X3QgX19zMV82ODggPSBfX3AxXzY4ODsgXAogIGZsb2F0MzJ4NF90IF9fcmV2MV82ODg7ICBfX3JldjFfNjg4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV82ODgsIF9fczFfNjg4LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MzJfdCBfX3JldF82ODg7IFwKICBfX3JldF82ODggPSB2bXVseHNfZjMyKF9fczBfNjg4LCBfX25vc3dhcF92Z2V0cV9sYW5lX2YzMihfX3JldjFfNjg4LCBfX3AyXzY4OCkpOyBcCiAgX19yZXRfNjg4OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm11bHhxX2xhbmVxX2Y2NChfX3AwXzY4OSwgX19wMV82ODksIF9fcDJfNjg5KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDJfdCBfX3MwXzY4OSA9IF9fcDBfNjg5OyBcCiAgZmxvYXQ2NHgyX3QgX19zMV82ODkgPSBfX3AxXzY4OTsgXAogIGZsb2F0NjR4Ml90IF9fcmV0XzY4OTsgXAogIF9fcmV0XzY4OSA9IHZtdWx4cV9mNjQoX19zMF82ODksIHNwbGF0cV9sYW5lcV9mNjQoX19zMV82ODksIF9fcDJfNjg5KSk7IFwKICBfX3JldF82ODk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bXVseHFfbGFuZXFfZjY0KF9fcDBfNjkwLCBfX3AxXzY5MCwgX19wMl82OTApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4Ml90IF9fczBfNjkwID0gX19wMF82OTA7IFwKICBmbG9hdDY0eDJfdCBfX3MxXzY5MCA9IF9fcDFfNjkwOyBcCiAgZmxvYXQ2NHgyX3QgX19yZXYwXzY5MDsgIF9fcmV2MF82OTAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzY5MCwgX19zMF82OTAsIDEsIDApOyBcCiAgZmxvYXQ2NHgyX3QgX19yZXYxXzY5MDsgIF9fcmV2MV82OTAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzY5MCwgX19zMV82OTAsIDEsIDApOyBcCiAgZmxvYXQ2NHgyX3QgX19yZXRfNjkwOyBcCiAgX19yZXRfNjkwID0gX19ub3N3YXBfdm11bHhxX2Y2NChfX3JldjBfNjkwLCBfX25vc3dhcF9zcGxhdHFfbGFuZXFfZjY0KF9fcmV2MV82OTAsIF9fcDJfNjkwKSk7IFwKICBfX3JldF82OTAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF82OTAsIF9fcmV0XzY5MCwgMSwgMCk7IFwKICBfX3JldF82OTA7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bXVseHFfbGFuZXFfZjMyKF9fcDBfNjkxLCBfX3AxXzY5MSwgX19wMl82OTEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NF90IF9fczBfNjkxID0gX19wMF82OTE7IFwKICBmbG9hdDMyeDRfdCBfX3MxXzY5MSA9IF9fcDFfNjkxOyBcCiAgZmxvYXQzMng0X3QgX19yZXRfNjkxOyBcCiAgX19yZXRfNjkxID0gdm11bHhxX2YzMihfX3MwXzY5MSwgc3BsYXRxX2xhbmVxX2YzMihfX3MxXzY5MSwgX19wMl82OTEpKTsgXAogIF9fcmV0XzY5MTsgXAp9KQojZWxzZQojZGVmaW5lIHZtdWx4cV9sYW5lcV9mMzIoX19wMF82OTIsIF9fcDFfNjkyLCBfX3AyXzY5MikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0X3QgX19zMF82OTIgPSBfX3AwXzY5MjsgXAogIGZsb2F0MzJ4NF90IF9fczFfNjkyID0gX19wMV82OTI7IFwKICBmbG9hdDMyeDRfdCBfX3JldjBfNjkyOyAgX19yZXYwXzY5MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNjkyLCBfX3MwXzY5MiwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDMyeDRfdCBfX3JldjFfNjkyOyAgX19yZXYxXzY5MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNjkyLCBfX3MxXzY5MiwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDMyeDRfdCBfX3JldF82OTI7IFwKICBfX3JldF82OTIgPSBfX25vc3dhcF92bXVseHFfZjMyKF9fcmV2MF82OTIsIF9fbm9zd2FwX3NwbGF0cV9sYW5lcV9mMzIoX19yZXYxXzY5MiwgX19wMl82OTIpKTsgXAogIF9fcmV0XzY5MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzY5MiwgX19yZXRfNjkyLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzY5MjsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtdWx4X2xhbmVxX2YzMihfX3AwXzY5MywgX19wMV82OTMsIF9fcDJfNjkzKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJfdCBfX3MwXzY5MyA9IF9fcDBfNjkzOyBcCiAgZmxvYXQzMng0X3QgX19zMV82OTMgPSBfX3AxXzY5MzsgXAogIGZsb2F0MzJ4Ml90IF9fcmV0XzY5MzsgXAogIF9fcmV0XzY5MyA9IHZtdWx4X2YzMihfX3MwXzY5Mywgc3BsYXRfbGFuZXFfZjMyKF9fczFfNjkzLCBfX3AyXzY5MykpOyBcCiAgX19yZXRfNjkzOyBcCn0pCiNlbHNlCiNkZWZpbmUgdm11bHhfbGFuZXFfZjMyKF9fcDBfNjk0LCBfX3AxXzY5NCwgX19wMl82OTQpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4Ml90IF9fczBfNjk0ID0gX19wMF82OTQ7IFwKICBmbG9hdDMyeDRfdCBfX3MxXzY5NCA9IF9fcDFfNjk0OyBcCiAgZmxvYXQzMngyX3QgX19yZXYwXzY5NDsgIF9fcmV2MF82OTQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzY5NCwgX19zMF82OTQsIDEsIDApOyBcCiAgZmxvYXQzMng0X3QgX19yZXYxXzY5NDsgIF9fcmV2MV82OTQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzY5NCwgX19zMV82OTQsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQzMngyX3QgX19yZXRfNjk0OyBcCiAgX19yZXRfNjk0ID0gX19ub3N3YXBfdm11bHhfZjMyKF9fcmV2MF82OTQsIF9fbm9zd2FwX3NwbGF0X2xhbmVxX2YzMihfX3JldjFfNjk0LCBfX3AyXzY5NCkpOyBcCiAgX19yZXRfNjk0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNjk0LCBfX3JldF82OTQsIDEsIDApOyBcCiAgX19yZXRfNjk0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQ2NHgyX3Qgdm5lZ3FfZjY0KGZsb2F0NjR4Ml90IF9fcDApIHsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IC1fX3AwOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0NjR4Ml90IHZuZWdxX2Y2NChmbG9hdDY0eDJfdCBfX3AwKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAtX19yZXYwOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ2NHgyX3Qgdm5lZ3FfczY0KGludDY0eDJfdCBfX3AwKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gLV9fcDA7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50NjR4Ml90IHZuZWdxX3M2NChpbnQ2NHgyX3QgX19wMCkgewogIGludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAtX19yZXYwOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgpfX2FpIGZsb2F0NjR4MV90IHZuZWdfZjY0KGZsb2F0NjR4MV90IF9fcDApIHsKICBmbG9hdDY0eDFfdCBfX3JldDsKICBfX3JldCA9IC1fX3AwOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDY0eDFfdCB2bmVnX3M2NChpbnQ2NHgxX3QgX19wMCkgewogIGludDY0eDFfdCBfX3JldDsKICBfX3JldCA9IC1fX3AwOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDY0X3Qgdm5lZ2RfczY0KGludDY0X3QgX19wMCkgewogIGludDY0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50NjRfdCkgX19idWlsdGluX25lb25fdm5lZ2RfczY0KF9fcDApOwogIHJldHVybiBfX3JldDsKfQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHgxNl90IHZwYWRkcV91OCh1aW50OHgxNl90IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSkgewogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkgX19idWlsdGluX25lb25fdnBhZGRxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDQ4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHgxNl90IHZwYWRkcV91OCh1aW50OHgxNl90IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSkgewogIHVpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZwYWRkcV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNDgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZwYWRkcV91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZwYWRkcV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA1MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2cGFkZHFfdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxKSB7CiAgdWludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdnBhZGRxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA1MCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ2NHgyX3QgdnBhZGRxX3U2NCh1aW50NjR4Ml90IF9fcDAsIHVpbnQ2NHgyX3QgX19wMSkgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkgX19idWlsdGluX25lb25fdnBhZGRxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDUxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50NjR4Ml90IHZwYWRkcV91NjQodWludDY0eDJfdCBfX3AwLCB1aW50NjR4Ml90IF9fcDEpIHsKICB1aW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92cGFkZHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDUxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDhfdCB2cGFkZHFfdTE2KHVpbnQxNng4X3QgX19wMCwgdWludDE2eDhfdCBfX3AxKSB7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92cGFkZHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNDkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng4X3QgdnBhZGRxX3UxNih1aW50MTZ4OF90IF9fcDAsIHVpbnQxNng4X3QgX19wMSkgewogIHVpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZwYWRkcV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNDkpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDE2X3QgdnBhZGRxX3M4KGludDh4MTZfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSkgewogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZwYWRkcV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAzMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OHgxNl90IHZwYWRkcV9zOChpbnQ4eDE2X3QgX19wMCwgaW50OHgxNl90IF9fcDEpIHsKICBpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZwYWRkcV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgMzIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDY0eDJfdCB2cGFkZHFfZjY0KGZsb2F0NjR4Ml90IF9fcDAsIGZsb2F0NjR4Ml90IF9fcDEpIHsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDJfdCkgX19idWlsdGluX25lb25fdnBhZGRxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDQyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDY0eDJfdCB2cGFkZHFfZjY0KGZsb2F0NjR4Ml90IF9fcDAsIGZsb2F0NjR4Ml90IF9fcDEpIHsKICBmbG9hdDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDJfdCkgX19idWlsdGluX25lb25fdnBhZGRxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA0Mik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4NF90IHZwYWRkcV9mMzIoZmxvYXQzMng0X3QgX19wMCwgZmxvYXQzMng0X3QgX19wMSkgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92cGFkZHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4NF90IHZwYWRkcV9mMzIoZmxvYXQzMng0X3QgX19wMCwgZmxvYXQzMng0X3QgX19wMSkgewogIGZsb2F0MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92cGFkZHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDQxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4NF90IHZwYWRkcV9zMzIoaW50MzJ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkgX19idWlsdGluX25lb25fdnBhZGRxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDM0KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMng0X3QgdnBhZGRxX3MzMihpbnQzMng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEpIHsKICBpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZwYWRkcV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgMzQpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ2NHgyX3QgdnBhZGRxX3M2NChpbnQ2NHgyX3QgX19wMCwgaW50NjR4Ml90IF9fcDEpIHsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92cGFkZHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgMzUpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDY0eDJfdCB2cGFkZHFfczY0KGludDY0eDJfdCBfX3AwLCBpbnQ2NHgyX3QgX19wMSkgewogIGludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBpbnQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDJfdCkgX19idWlsdGluX25lb25fdnBhZGRxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAzNSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDhfdCB2cGFkZHFfczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZwYWRkcV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAzMyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4OF90IHZwYWRkcV9zMTYoaW50MTZ4OF90IF9fcDAsIGludDE2eDhfdCBfX3AxKSB7CiAgaW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92cGFkZHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDMzKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDY0X3QgdnBhZGRkX3U2NCh1aW50NjR4Ml90IF9fcDApIHsKICB1aW50NjRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjRfdCkgX19idWlsdGluX25lb25fdnBhZGRkX3U2NChfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50NjRfdCB2cGFkZGRfdTY0KHVpbnQ2NHgyX3QgX19wMCkgewogIHVpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDY0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZwYWRkZF91NjQoX19yZXYwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDY0X3QgdnBhZGRkX2Y2NChmbG9hdDY0eDJfdCBfX3AwKSB7CiAgZmxvYXQ2NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjRfdCkgX19idWlsdGluX25lb25fdnBhZGRkX2Y2NChfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDY0X3QgdnBhZGRkX2Y2NChmbG9hdDY0eDJfdCBfX3AwKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQ2NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjRfdCkgX19idWlsdGluX25lb25fdnBhZGRkX2Y2NChfX3JldjApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDY0X3QgdnBhZGRkX3M2NChpbnQ2NHgyX3QgX19wMCkgewogIGludDY0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50NjRfdCkgX19idWlsdGluX25lb25fdnBhZGRkX3M2NChfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ2NF90IHZwYWRkZF9zNjQoaW50NjR4Ml90IF9fcDApIHsKICBpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50NjRfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NF90KSBfX2J1aWx0aW5fbmVvbl92cGFkZGRfczY0KF9fcmV2MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMl90IHZwYWRkc19mMzIoZmxvYXQzMngyX3QgX19wMCkgewogIGZsb2F0MzJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZwYWRkc19mMzIoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMl90IHZwYWRkc19mMzIoZmxvYXQzMngyX3QgX19wMCkgewogIGZsb2F0MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0MzJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZwYWRkc19mMzIoX19yZXYwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHgxNl90IHZwbWF4cV91OCh1aW50OHgxNl90IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSkgewogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkgX19idWlsdGluX25lb25fdnBtYXhxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDQ4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHgxNl90IHZwbWF4cV91OCh1aW50OHgxNl90IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSkgewogIHVpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZwbWF4cV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNDgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZwbWF4cV91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZwbWF4cV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA1MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2cG1heHFfdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxKSB7CiAgdWludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdnBtYXhxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA1MCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng4X3QgdnBtYXhxX3UxNih1aW50MTZ4OF90IF9fcDAsIHVpbnQxNng4X3QgX19wMSkgewogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkgX19idWlsdGluX25lb25fdnBtYXhxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDQ5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4OF90IHZwbWF4cV91MTYodWludDE2eDhfdCBfX3AwLCB1aW50MTZ4OF90IF9fcDEpIHsKICB1aW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92cG1heHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDQ5KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHgxNl90IHZwbWF4cV9zOChpbnQ4eDE2X3QgX19wMCwgaW50OHgxNl90IF9fcDEpIHsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92cG1heHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgMzIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4MTZfdCB2cG1heHFfczgoaW50OHgxNl90IF9fcDAsIGludDh4MTZfdCBfX3AxKSB7CiAgaW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92cG1heHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDMyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQ2NHgyX3QgdnBtYXhxX2Y2NChmbG9hdDY0eDJfdCBfX3AwLCBmbG9hdDY0eDJfdCBfX3AxKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZwbWF4cV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA0Mik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQ2NHgyX3QgdnBtYXhxX2Y2NChmbG9hdDY0eDJfdCBfX3AwLCBmbG9hdDY0eDJfdCBfX3AxKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgZmxvYXQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZwbWF4cV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNDIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDRfdCB2cG1heHFfZjMyKGZsb2F0MzJ4NF90IF9fcDAsIGZsb2F0MzJ4NF90IF9fcDEpIHsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdnBtYXhxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDQxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDRfdCB2cG1heHFfZjMyKGZsb2F0MzJ4NF90IF9fcDAsIGZsb2F0MzJ4NF90IF9fcDEpIHsKICBmbG9hdDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdnBtYXhxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA0MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDRfdCB2cG1heHFfczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZwbWF4cV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAzNCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4NF90IHZwbWF4cV9zMzIoaW50MzJ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxKSB7CiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92cG1heHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDM0KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZ4OF90IHZwbWF4cV9zMTYoaW50MTZ4OF90IF9fcDAsIGludDE2eDhfdCBfX3AxKSB7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDhfdCkgX19idWlsdGluX25lb25fdnBtYXhxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDMzKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng4X3QgdnBtYXhxX3MxNihpbnQxNng4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEpIHsKICBpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZwbWF4cV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgMzMpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDY0X3QgdnBtYXhxZF9mNjQoZmxvYXQ2NHgyX3QgX19wMCkgewogIGZsb2F0NjRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZwbWF4cWRfZjY0KF9fcDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0NjRfdCB2cG1heHFkX2Y2NChmbG9hdDY0eDJfdCBfX3AwKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQ2NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjRfdCkgX19idWlsdGluX25lb25fdnBtYXhxZF9mNjQoX19yZXYwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyX3QgdnBtYXhzX2YzMihmbG9hdDMyeDJfdCBfX3AwKSB7CiAgZmxvYXQzMl90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJfdCkgX19idWlsdGluX25lb25fdnBtYXhzX2YzMihfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyX3QgdnBtYXhzX2YzMihmbG9hdDMyeDJfdCBfX3AwKSB7CiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQzMl90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJfdCkgX19idWlsdGluX25lb25fdnBtYXhzX2YzMihfX3JldjApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0NjR4Ml90IHZwbWF4bm1xX2Y2NChmbG9hdDY0eDJfdCBfX3AwLCBmbG9hdDY0eDJfdCBfX3AxKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZwbWF4bm1xX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDQyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDY0eDJfdCB2cG1heG5tcV9mNjQoZmxvYXQ2NHgyX3QgX19wMCwgZmxvYXQ2NHgyX3QgX19wMSkgewogIGZsb2F0NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92cG1heG5tcV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNDIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDRfdCB2cG1heG5tcV9mMzIoZmxvYXQzMng0X3QgX19wMCwgZmxvYXQzMng0X3QgX19wMSkgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92cG1heG5tcV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA0MSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMng0X3QgdnBtYXhubXFfZjMyKGZsb2F0MzJ4NF90IF9fcDAsIGZsb2F0MzJ4NF90IF9fcDEpIHsKICBmbG9hdDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdnBtYXhubXFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDQxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMngyX3QgdnBtYXhubV9mMzIoZmxvYXQzMngyX3QgX19wMCwgZmxvYXQzMngyX3QgX19wMSkgewogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cG1heG5tX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCA5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDJfdCB2cG1heG5tX2YzMihmbG9hdDMyeDJfdCBfX3AwLCBmbG9hdDMyeDJfdCBfX3AxKSB7CiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZwbWF4bm1fdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCA5KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQ2NF90IHZwbWF4bm1xZF9mNjQoZmxvYXQ2NHgyX3QgX19wMCkgewogIGZsb2F0NjRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZwbWF4bm1xZF9mNjQoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQ2NF90IHZwbWF4bm1xZF9mNjQoZmxvYXQ2NHgyX3QgX19wMCkgewogIGZsb2F0NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0NjRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZwbWF4bm1xZF9mNjQoX19yZXYwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyX3QgdnBtYXhubXNfZjMyKGZsb2F0MzJ4Ml90IF9fcDApIHsKICBmbG9hdDMyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMl90KSBfX2J1aWx0aW5fbmVvbl92cG1heG5tc19mMzIoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMl90IHZwbWF4bm1zX2YzMihmbG9hdDMyeDJfdCBfX3AwKSB7CiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQzMl90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJfdCkgX19idWlsdGluX25lb25fdnBtYXhubXNfZjMyKF9fcmV2MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4MTZfdCB2cG1pbnFfdTgodWludDh4MTZfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEpIHsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZwbWlucV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA0OCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4MTZfdCB2cG1pbnFfdTgodWludDh4MTZfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEpIHsKICB1aW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92cG1pbnFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDQ4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDRfdCB2cG1pbnFfdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92cG1pbnFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNTApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMng0X3QgdnBtaW5xX3UzMih1aW50MzJ4NF90IF9fcDAsIHVpbnQzMng0X3QgX19wMSkgewogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZwbWlucV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNTApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4OF90IHZwbWlucV91MTYodWludDE2eDhfdCBfX3AwLCB1aW50MTZ4OF90IF9fcDEpIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZwbWlucV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA0OSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDhfdCB2cG1pbnFfdTE2KHVpbnQxNng4X3QgX19wMCwgdWludDE2eDhfdCBfX3AxKSB7CiAgdWludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkgX19idWlsdGluX25lb25fdnBtaW5xX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA0OSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4MTZfdCB2cG1pbnFfczgoaW50OHgxNl90IF9fcDAsIGludDh4MTZfdCBfX3AxKSB7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4MTZfdCkgX19idWlsdGluX25lb25fdnBtaW5xX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDMyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ4eDE2X3QgdnBtaW5xX3M4KGludDh4MTZfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSkgewogIGludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4MTZfdCkgX19idWlsdGluX25lb25fdnBtaW5xX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAzMik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0NjR4Ml90IHZwbWlucV9mNjQoZmxvYXQ2NHgyX3QgX19wMCwgZmxvYXQ2NHgyX3QgX19wMSkgewogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92cG1pbnFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0NjR4Ml90IHZwbWlucV9mNjQoZmxvYXQ2NHgyX3QgX19wMCwgZmxvYXQ2NHgyX3QgX19wMSkgewogIGZsb2F0NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92cG1pbnFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDQyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMng0X3QgdnBtaW5xX2YzMihmbG9hdDMyeDRfdCBfX3AwLCBmbG9hdDMyeDRfdCBfX3AxKSB7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZwbWlucV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA0MSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMng0X3QgdnBtaW5xX2YzMihmbG9hdDMyeDRfdCBfX3AwLCBmbG9hdDMyeDRfdCBfX3AxKSB7CiAgZmxvYXQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZwbWlucV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNDEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMng0X3QgdnBtaW5xX3MzMihpbnQzMng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEpIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92cG1pbnFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgMzQpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDRfdCB2cG1pbnFfczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkgX19idWlsdGluX25lb25fdnBtaW5xX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAzNCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDhfdCB2cG1pbnFfczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZwbWlucV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAzMyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4OF90IHZwbWlucV9zMTYoaW50MTZ4OF90IF9fcDAsIGludDE2eDhfdCBfX3AxKSB7CiAgaW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92cG1pbnFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDMzKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQ2NF90IHZwbWlucWRfZjY0KGZsb2F0NjR4Ml90IF9fcDApIHsKICBmbG9hdDY0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQ2NF90KSBfX2J1aWx0aW5fbmVvbl92cG1pbnFkX2Y2NChfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDY0X3QgdnBtaW5xZF9mNjQoZmxvYXQ2NHgyX3QgX19wMCkgewogIGZsb2F0NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0NjRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZwbWlucWRfZjY0KF9fcmV2MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMl90IHZwbWluc19mMzIoZmxvYXQzMngyX3QgX19wMCkgewogIGZsb2F0MzJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZwbWluc19mMzIoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMl90IHZwbWluc19mMzIoZmxvYXQzMngyX3QgX19wMCkgewogIGZsb2F0MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0MzJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZwbWluc19mMzIoX19yZXYwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDY0eDJfdCB2cG1pbm5tcV9mNjQoZmxvYXQ2NHgyX3QgX19wMCwgZmxvYXQ2NHgyX3QgX19wMSkgewogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92cG1pbm5tcV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA0Mik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQ2NHgyX3QgdnBtaW5ubXFfZjY0KGZsb2F0NjR4Ml90IF9fcDAsIGZsb2F0NjR4Ml90IF9fcDEpIHsKICBmbG9hdDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDJfdCkgX19idWlsdGluX25lb25fdnBtaW5ubXFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDQyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMng0X3QgdnBtaW5ubXFfZjMyKGZsb2F0MzJ4NF90IF9fcDAsIGZsb2F0MzJ4NF90IF9fcDEpIHsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDRfdCkgX19idWlsdGluX25lb25fdnBtaW5ubXFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4NF90IHZwbWlubm1xX2YzMihmbG9hdDMyeDRfdCBfX3AwLCBmbG9hdDMyeDRfdCBfX3AxKSB7CiAgZmxvYXQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZwbWlubm1xX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA0MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4Ml90IHZwbWlubm1fZjMyKGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0MzJ4Ml90IF9fcDEpIHsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdnBtaW5ubV92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgOSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMngyX3QgdnBtaW5ubV9mMzIoZmxvYXQzMngyX3QgX19wMCwgZmxvYXQzMngyX3QgX19wMSkgewogIGZsb2F0MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cG1pbm5tX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgOSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0NjRfdCB2cG1pbm5tcWRfZjY0KGZsb2F0NjR4Ml90IF9fcDApIHsKICBmbG9hdDY0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQ2NF90KSBfX2J1aWx0aW5fbmVvbl92cG1pbm5tcWRfZjY0KF9fcDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0NjRfdCB2cG1pbm5tcWRfZjY0KGZsb2F0NjR4Ml90IF9fcDApIHsKICBmbG9hdDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDY0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQ2NF90KSBfX2J1aWx0aW5fbmVvbl92cG1pbm5tcWRfZjY0KF9fcmV2MCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMl90IHZwbWlubm1zX2YzMihmbG9hdDMyeDJfdCBfX3AwKSB7CiAgZmxvYXQzMl90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJfdCkgX19idWlsdGluX25lb25fdnBtaW5ubXNfZjMyKF9fcDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJfdCB2cG1pbm5tc19mMzIoZmxvYXQzMngyX3QgX19wMCkgewogIGZsb2F0MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0MzJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZwbWlubm1zX2YzMihfX3JldjApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDY0eDJfdCB2cWFic3FfczY0KGludDY0eDJfdCBfX3AwKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDJfdCkgX19idWlsdGluX25lb25fdnFhYnNxX3YoKGludDh4MTZfdClfX3AwLCAzNSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50NjR4Ml90IHZxYWJzcV9zNjQoaW50NjR4Ml90IF9fcDApIHsKICBpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDJfdCkgX19idWlsdGluX25lb25fdnFhYnNxX3YoKGludDh4MTZfdClfX3JldjAsIDM1KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKX19haSBpbnQ2NHgxX3QgdnFhYnNfczY0KGludDY0eDFfdCBfX3AwKSB7CiAgaW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDFfdCkgX19idWlsdGluX25lb25fdnFhYnNfdigoaW50OHg4X3QpX19wMCwgMyk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50OF90IHZxYWJzYl9zOChpbnQ4X3QgX19wMCkgewogIGludDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4X3QpIF9fYnVpbHRpbl9uZW9uX3ZxYWJzYl9zOChfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQzMl90IHZxYWJzc19zMzIoaW50MzJfdCBfX3AwKSB7CiAgaW50MzJfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMl90KSBfX2J1aWx0aW5fbmVvbl92cWFic3NfczMyKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDY0X3QgdnFhYnNkX3M2NChpbnQ2NF90IF9fcDApIHsKICBpbnQ2NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZxYWJzZF9zNjQoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MTZfdCB2cWFic2hfczE2KGludDE2X3QgX19wMCkgewogIGludDE2X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZfdCkgX19idWlsdGluX25lb25fdnFhYnNoX3MxNihfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50OF90IHZxYWRkYl91OCh1aW50OF90IF9fcDAsIHVpbnQ4X3QgX19wMSkgewogIHVpbnQ4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDhfdCkgX19idWlsdGluX25lb25fdnFhZGRiX3U4KF9fcDAsIF9fcDEpOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQzMl90IHZxYWRkc191MzIodWludDMyX3QgX19wMCwgdWludDMyX3QgX19wMSkgewogIHVpbnQzMl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMl90KSBfX2J1aWx0aW5fbmVvbl92cWFkZHNfdTMyKF9fcDAsIF9fcDEpOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ2NF90IHZxYWRkZF91NjQodWludDY0X3QgX19wMCwgdWludDY0X3QgX19wMSkgewogIHVpbnQ2NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NF90KSBfX2J1aWx0aW5fbmVvbl92cWFkZGRfdTY0KF9fcDAsIF9fcDEpOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQxNl90IHZxYWRkaF91MTYodWludDE2X3QgX19wMCwgdWludDE2X3QgX19wMSkgewogIHVpbnQxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNl90KSBfX2J1aWx0aW5fbmVvbl92cWFkZGhfdTE2KF9fcDAsIF9fcDEpOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDhfdCB2cWFkZGJfczgoaW50OF90IF9fcDAsIGludDhfdCBfX3AxKSB7CiAgaW50OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDhfdCkgX19idWlsdGluX25lb25fdnFhZGRiX3M4KF9fcDAsIF9fcDEpOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDMyX3QgdnFhZGRzX3MzMihpbnQzMl90IF9fcDAsIGludDMyX3QgX19wMSkgewogIGludDMyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJfdCkgX19idWlsdGluX25lb25fdnFhZGRzX3MzMihfX3AwLCBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQ2NF90IHZxYWRkZF9zNjQoaW50NjRfdCBfX3AwLCBpbnQ2NF90IF9fcDEpIHsKICBpbnQ2NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZxYWRkZF9zNjQoX19wMCwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MTZfdCB2cWFkZGhfczE2KGludDE2X3QgX19wMCwgaW50MTZfdCBfX3AxKSB7CiAgaW50MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNl90KSBfX2J1aWx0aW5fbmVvbl92cWFkZGhfczE2KF9fcDAsIF9fcDEpOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDY0X3QgdnFkbWxhbHNfczMyKGludDY0X3QgX19wMCwgaW50MzJfdCBfX3AxLCBpbnQzMl90IF9fcDIpIHsKICBpbnQ2NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZxZG1sYWxzX3MzMihfX3AwLCBfX3AxLCBfX3AyKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQzMl90IHZxZG1sYWxoX3MxNihpbnQzMl90IF9fcDAsIGludDE2X3QgX19wMSwgaW50MTZfdCBfX3AyKSB7CiAgaW50MzJfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMl90KSBfX2J1aWx0aW5fbmVvbl92cWRtbGFsaF9zMTYoX19wMCwgX19wMSwgX19wMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDY0eDJfdCB2cWRtbGFsX2hpZ2hfczMyKGludDY0eDJfdCBfX3AwLCBpbnQzMng0X3QgX19wMSwgaW50MzJ4NF90IF9fcDIpIHsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSB2cWRtbGFsX3MzMihfX3AwLCB2Z2V0X2hpZ2hfczMyKF9fcDEpLCB2Z2V0X2hpZ2hfczMyKF9fcDIpKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ2NHgyX3QgdnFkbWxhbF9oaWdoX3MzMihpbnQ2NHgyX3QgX19wMCwgaW50MzJ4NF90IF9fcDEsIGludDMyeDRfdCBfX3AyKSB7CiAgaW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMywgMiwgMSwgMCk7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdnFkbWxhbF9zMzIoX19yZXYwLCBfX25vc3dhcF92Z2V0X2hpZ2hfczMyKF9fcmV2MSksIF9fbm9zd2FwX3ZnZXRfaGlnaF9zMzIoX19yZXYyKSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDRfdCB2cWRtbGFsX2hpZ2hfczE2KGludDMyeDRfdCBfX3AwLCBpbnQxNng4X3QgX19wMSwgaW50MTZ4OF90IF9fcDIpIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSB2cWRtbGFsX3MxNihfX3AwLCB2Z2V0X2hpZ2hfczE2KF9fcDEpLCB2Z2V0X2hpZ2hfczE2KF9fcDIpKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMng0X3QgdnFkbWxhbF9oaWdoX3MxNihpbnQzMng0X3QgX19wMCwgaW50MTZ4OF90IF9fcDEsIGludDE2eDhfdCBfX3AyKSB7CiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdnFkbWxhbF9zMTYoX19yZXYwLCBfX25vc3dhcF92Z2V0X2hpZ2hfczE2KF9fcmV2MSksIF9fbm9zd2FwX3ZnZXRfaGlnaF9zMTYoX19yZXYyKSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZxZG1sYWxfaGlnaF9sYW5lX3MzMihfX3AwXzY5NSwgX19wMV82OTUsIF9fcDJfNjk1LCBfX3AzXzY5NSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4Ml90IF9fczBfNjk1ID0gX19wMF82OTU7IFwKICBpbnQzMng0X3QgX19zMV82OTUgPSBfX3AxXzY5NTsgXAogIGludDMyeDJfdCBfX3MyXzY5NSA9IF9fcDJfNjk1OyBcCiAgaW50NjR4Ml90IF9fcmV0XzY5NTsgXAogIF9fcmV0XzY5NSA9IHZxZG1sYWxfczMyKF9fczBfNjk1LCB2Z2V0X2hpZ2hfczMyKF9fczFfNjk1KSwgc3BsYXRfbGFuZV9zMzIoX19zMl82OTUsIF9fcDNfNjk1KSk7IFwKICBfX3JldF82OTU7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cWRtbGFsX2hpZ2hfbGFuZV9zMzIoX19wMF82OTYsIF9fcDFfNjk2LCBfX3AyXzY5NiwgX19wM182OTYpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJfdCBfX3MwXzY5NiA9IF9fcDBfNjk2OyBcCiAgaW50MzJ4NF90IF9fczFfNjk2ID0gX19wMV82OTY7IFwKICBpbnQzMngyX3QgX19zMl82OTYgPSBfX3AyXzY5NjsgXAogIGludDY0eDJfdCBfX3JldjBfNjk2OyAgX19yZXYwXzY5NiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNjk2LCBfX3MwXzY5NiwgMSwgMCk7IFwKICBpbnQzMng0X3QgX19yZXYxXzY5NjsgIF9fcmV2MV82OTYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzY5NiwgX19zMV82OTYsIDMsIDIsIDEsIDApOyBcCiAgaW50MzJ4Ml90IF9fcmV2Ml82OTY7ICBfX3JldjJfNjk2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl82OTYsIF9fczJfNjk2LCAxLCAwKTsgXAogIGludDY0eDJfdCBfX3JldF82OTY7IFwKICBfX3JldF82OTYgPSBfX25vc3dhcF92cWRtbGFsX3MzMihfX3JldjBfNjk2LCBfX25vc3dhcF92Z2V0X2hpZ2hfczMyKF9fcmV2MV82OTYpLCBfX25vc3dhcF9zcGxhdF9sYW5lX3MzMihfX3JldjJfNjk2LCBfX3AzXzY5NikpOyBcCiAgX19yZXRfNjk2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNjk2LCBfX3JldF82OTYsIDEsIDApOyBcCiAgX19yZXRfNjk2OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFkbWxhbF9oaWdoX2xhbmVfczE2KF9fcDBfNjk3LCBfX3AxXzY5NywgX19wMl82OTcsIF9fcDNfNjk3KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMF82OTcgPSBfX3AwXzY5NzsgXAogIGludDE2eDhfdCBfX3MxXzY5NyA9IF9fcDFfNjk3OyBcCiAgaW50MTZ4NF90IF9fczJfNjk3ID0gX19wMl82OTc7IFwKICBpbnQzMng0X3QgX19yZXRfNjk3OyBcCiAgX19yZXRfNjk3ID0gdnFkbWxhbF9zMTYoX19zMF82OTcsIHZnZXRfaGlnaF9zMTYoX19zMV82OTcpLCBzcGxhdF9sYW5lX3MxNihfX3MyXzY5NywgX19wM182OTcpKTsgXAogIF9fcmV0XzY5NzsgXAp9KQojZWxzZQojZGVmaW5lIHZxZG1sYWxfaGlnaF9sYW5lX3MxNihfX3AwXzY5OCwgX19wMV82OTgsIF9fcDJfNjk4LCBfX3AzXzY5OCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczBfNjk4ID0gX19wMF82OTg7IFwKICBpbnQxNng4X3QgX19zMV82OTggPSBfX3AxXzY5ODsgXAogIGludDE2eDRfdCBfX3MyXzY5OCA9IF9fcDJfNjk4OyBcCiAgaW50MzJ4NF90IF9fcmV2MF82OTg7ICBfX3JldjBfNjk4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF82OTgsIF9fczBfNjk4LCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDhfdCBfX3JldjFfNjk4OyAgX19yZXYxXzY5OCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNjk4LCBfX3MxXzY5OCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng0X3QgX19yZXYyXzY5ODsgIF9fcmV2Ml82OTggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzY5OCwgX19zMl82OTgsIDMsIDIsIDEsIDApOyBcCiAgaW50MzJ4NF90IF9fcmV0XzY5ODsgXAogIF9fcmV0XzY5OCA9IF9fbm9zd2FwX3ZxZG1sYWxfczE2KF9fcmV2MF82OTgsIF9fbm9zd2FwX3ZnZXRfaGlnaF9zMTYoX19yZXYxXzY5OCksIF9fbm9zd2FwX3NwbGF0X2xhbmVfczE2KF9fcmV2Ml82OTgsIF9fcDNfNjk4KSk7IFwKICBfX3JldF82OTggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF82OTgsIF9fcmV0XzY5OCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF82OTg7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cWRtbGFsX2hpZ2hfbGFuZXFfczMyKF9fcDBfNjk5LCBfX3AxXzY5OSwgX19wMl82OTksIF9fcDNfNjk5KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgyX3QgX19zMF82OTkgPSBfX3AwXzY5OTsgXAogIGludDMyeDRfdCBfX3MxXzY5OSA9IF9fcDFfNjk5OyBcCiAgaW50MzJ4NF90IF9fczJfNjk5ID0gX19wMl82OTk7IFwKICBpbnQ2NHgyX3QgX19yZXRfNjk5OyBcCiAgX19yZXRfNjk5ID0gdnFkbWxhbF9zMzIoX19zMF82OTksIHZnZXRfaGlnaF9zMzIoX19zMV82OTkpLCBzcGxhdF9sYW5lcV9zMzIoX19zMl82OTksIF9fcDNfNjk5KSk7IFwKICBfX3JldF82OTk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cWRtbGFsX2hpZ2hfbGFuZXFfczMyKF9fcDBfNzAwLCBfX3AxXzcwMCwgX19wMl83MDAsIF9fcDNfNzAwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgyX3QgX19zMF83MDAgPSBfX3AwXzcwMDsgXAogIGludDMyeDRfdCBfX3MxXzcwMCA9IF9fcDFfNzAwOyBcCiAgaW50MzJ4NF90IF9fczJfNzAwID0gX19wMl83MDA7IFwKICBpbnQ2NHgyX3QgX19yZXYwXzcwMDsgIF9fcmV2MF83MDAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzcwMCwgX19zMF83MDAsIDEsIDApOyBcCiAgaW50MzJ4NF90IF9fcmV2MV83MDA7ICBfX3JldjFfNzAwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV83MDAsIF9fczFfNzAwLCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDRfdCBfX3JldjJfNzAwOyAgX19yZXYyXzcwMCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfNzAwLCBfX3MyXzcwMCwgMywgMiwgMSwgMCk7IFwKICBpbnQ2NHgyX3QgX19yZXRfNzAwOyBcCiAgX19yZXRfNzAwID0gX19ub3N3YXBfdnFkbWxhbF9zMzIoX19yZXYwXzcwMCwgX19ub3N3YXBfdmdldF9oaWdoX3MzMihfX3JldjFfNzAwKSwgX19ub3N3YXBfc3BsYXRfbGFuZXFfczMyKF9fcmV2Ml83MDAsIF9fcDNfNzAwKSk7IFwKICBfX3JldF83MDAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF83MDAsIF9fcmV0XzcwMCwgMSwgMCk7IFwKICBfX3JldF83MDA7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cWRtbGFsX2hpZ2hfbGFuZXFfczE2KF9fcDBfNzAxLCBfX3AxXzcwMSwgX19wMl83MDEsIF9fcDNfNzAxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMF83MDEgPSBfX3AwXzcwMTsgXAogIGludDE2eDhfdCBfX3MxXzcwMSA9IF9fcDFfNzAxOyBcCiAgaW50MTZ4OF90IF9fczJfNzAxID0gX19wMl83MDE7IFwKICBpbnQzMng0X3QgX19yZXRfNzAxOyBcCiAgX19yZXRfNzAxID0gdnFkbWxhbF9zMTYoX19zMF83MDEsIHZnZXRfaGlnaF9zMTYoX19zMV83MDEpLCBzcGxhdF9sYW5lcV9zMTYoX19zMl83MDEsIF9fcDNfNzAxKSk7IFwKICBfX3JldF83MDE7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cWRtbGFsX2hpZ2hfbGFuZXFfczE2KF9fcDBfNzAyLCBfX3AxXzcwMiwgX19wMl83MDIsIF9fcDNfNzAyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMF83MDIgPSBfX3AwXzcwMjsgXAogIGludDE2eDhfdCBfX3MxXzcwMiA9IF9fcDFfNzAyOyBcCiAgaW50MTZ4OF90IF9fczJfNzAyID0gX19wMl83MDI7IFwKICBpbnQzMng0X3QgX19yZXYwXzcwMjsgIF9fcmV2MF83MDIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzcwMiwgX19zMF83MDIsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4OF90IF9fcmV2MV83MDI7ICBfX3JldjFfNzAyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV83MDIsIF9fczFfNzAyLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDhfdCBfX3JldjJfNzAyOyAgX19yZXYyXzcwMiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfNzAyLCBfX3MyXzcwMiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQzMng0X3QgX19yZXRfNzAyOyBcCiAgX19yZXRfNzAyID0gX19ub3N3YXBfdnFkbWxhbF9zMTYoX19yZXYwXzcwMiwgX19ub3N3YXBfdmdldF9oaWdoX3MxNihfX3JldjFfNzAyKSwgX19ub3N3YXBfc3BsYXRfbGFuZXFfczE2KF9fcmV2Ml83MDIsIF9fcDNfNzAyKSk7IFwKICBfX3JldF83MDIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF83MDIsIF9fcmV0XzcwMiwgMywgMiwgMSwgMCk7IFwKICBfX3JldF83MDI7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ2NHgyX3QgdnFkbWxhbF9oaWdoX25fczMyKGludDY0eDJfdCBfX3AwLCBpbnQzMng0X3QgX19wMSwgaW50MzJfdCBfX3AyKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gdnFkbWxhbF9uX3MzMihfX3AwLCB2Z2V0X2hpZ2hfczMyKF9fcDEpLCBfX3AyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ2NHgyX3QgdnFkbWxhbF9oaWdoX25fczMyKGludDY0eDJfdCBfX3AwLCBpbnQzMng0X3QgX19wMSwgaW50MzJfdCBfX3AyKSB7CiAgaW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92cWRtbGFsX25fczMyKF9fcmV2MCwgX19ub3N3YXBfdmdldF9oaWdoX3MzMihfX3JldjEpLCBfX3AyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4NF90IHZxZG1sYWxfaGlnaF9uX3MxNihpbnQzMng0X3QgX19wMCwgaW50MTZ4OF90IF9fcDEsIGludDE2X3QgX19wMikgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IHZxZG1sYWxfbl9zMTYoX19wMCwgdmdldF9oaWdoX3MxNihfX3AxKSwgX19wMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4NF90IHZxZG1sYWxfaGlnaF9uX3MxNihpbnQzMng0X3QgX19wMCwgaW50MTZ4OF90IF9fcDEsIGludDE2X3QgX19wMikgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdnFkbWxhbF9uX3MxNihfX3JldjAsIF9fbm9zd2FwX3ZnZXRfaGlnaF9zMTYoX19yZXYxKSwgX19wMik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZxZG1sYWxzX2xhbmVfczMyKF9fcDAsIF9fcDEsIF9fcDIsIF9fcDMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQzMl90IF9fczEgPSBfX3AxOyBcCiAgaW50MzJ4Ml90IF9fczIgPSBfX3AyOyBcCiAgaW50NjRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZxZG1sYWxzX2xhbmVfczMyKF9fczAsIF9fczEsIF9fczIsIF9fcDMpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cWRtbGFsc19sYW5lX3MzMihfX3AwLCBfX3AxLCBfX3AyLCBfX3AzKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NF90IF9fczAgPSBfX3AwOyBcCiAgaW50MzJfdCBfX3MxID0gX19wMTsgXAogIGludDMyeDJfdCBfX3MyID0gX19wMjsgXAogIGludDMyeDJfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyLCBfX3MyLCAxLCAwKTsgXAogIGludDY0X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ2NF90KSBfX2J1aWx0aW5fbmVvbl92cWRtbGFsc19sYW5lX3MzMihfX3MwLCBfX3MxLCBfX3JldjIsIF9fcDMpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cWRtbGFsaF9sYW5lX3MxNihfX3AwLCBfX3AxLCBfX3AyLCBfX3AzKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMl90IF9fczAgPSBfX3AwOyBcCiAgaW50MTZfdCBfX3MxID0gX19wMTsgXAogIGludDE2eDRfdCBfX3MyID0gX19wMjsgXAogIGludDMyX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQzMl90KSBfX2J1aWx0aW5fbmVvbl92cWRtbGFsaF9sYW5lX3MxNihfX3MwLCBfX3MxLCBfX3MyLCBfX3AzKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFkbWxhbGhfbGFuZV9zMTYoX19wMCwgX19wMSwgX19wMiwgX19wMykgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJfdCBfX3MwID0gX19wMDsgXAogIGludDE2X3QgX19zMSA9IF9fcDE7IFwKICBpbnQxNng0X3QgX19zMiA9IF9fcDI7IFwKICBpbnQxNng0X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMiwgX19zMiwgMywgMiwgMSwgMCk7IFwKICBpbnQzMl90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJfdCkgX19idWlsdGluX25lb25fdnFkbWxhbGhfbGFuZV9zMTYoX19zMCwgX19zMSwgX19yZXYyLCBfX3AzKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFkbWxhbHNfbGFuZXFfczMyKF9fcDAsIF9fcDEsIF9fcDIsIF9fcDMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQzMl90IF9fczEgPSBfX3AxOyBcCiAgaW50MzJ4NF90IF9fczIgPSBfX3AyOyBcCiAgaW50NjRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZxZG1sYWxzX2xhbmVxX3MzMihfX3MwLCBfX3MxLCBfX3MyLCBfX3AzKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFkbWxhbHNfbGFuZXFfczMyKF9fcDAsIF9fcDEsIF9fcDIsIF9fcDMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQzMl90IF9fczEgPSBfX3AxOyBcCiAgaW50MzJ4NF90IF9fczIgPSBfX3AyOyBcCiAgaW50MzJ4NF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczIsIF9fczIsIDMsIDIsIDEsIDApOyBcCiAgaW50NjRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZxZG1sYWxzX2xhbmVxX3MzMihfX3MwLCBfX3MxLCBfX3JldjIsIF9fcDMpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cWRtbGFsaF9sYW5lcV9zMTYoX19wMCwgX19wMSwgX19wMiwgX19wMykgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJfdCBfX3MwID0gX19wMDsgXAogIGludDE2X3QgX19zMSA9IF9fcDE7IFwKICBpbnQxNng4X3QgX19zMiA9IF9fcDI7IFwKICBpbnQzMl90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJfdCkgX19idWlsdGluX25lb25fdnFkbWxhbGhfbGFuZXFfczE2KF9fczAsIF9fczEsIF9fczIsIF9fcDMpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cWRtbGFsaF9sYW5lcV9zMTYoX19wMCwgX19wMSwgX19wMiwgX19wMykgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJfdCBfX3MwID0gX19wMDsgXAogIGludDE2X3QgX19zMSA9IF9fcDE7IFwKICBpbnQxNng4X3QgX19zMiA9IF9fcDI7IFwKICBpbnQxNng4X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMiwgX19zMiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQzMl90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJfdCkgX19idWlsdGluX25lb25fdnFkbWxhbGhfbGFuZXFfczE2KF9fczAsIF9fczEsIF9fcmV2MiwgX19wMyk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZxZG1sYWxfbGFuZXFfczMyKF9fcDBfNzAzLCBfX3AxXzcwMywgX19wMl83MDMsIF9fcDNfNzAzKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgyX3QgX19zMF83MDMgPSBfX3AwXzcwMzsgXAogIGludDMyeDJfdCBfX3MxXzcwMyA9IF9fcDFfNzAzOyBcCiAgaW50MzJ4NF90IF9fczJfNzAzID0gX19wMl83MDM7IFwKICBpbnQ2NHgyX3QgX19yZXRfNzAzOyBcCiAgX19yZXRfNzAzID0gdnFkbWxhbF9zMzIoX19zMF83MDMsIF9fczFfNzAzLCBzcGxhdF9sYW5lcV9zMzIoX19zMl83MDMsIF9fcDNfNzAzKSk7IFwKICBfX3JldF83MDM7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cWRtbGFsX2xhbmVxX3MzMihfX3AwXzcwNCwgX19wMV83MDQsIF9fcDJfNzA0LCBfX3AzXzcwNCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4Ml90IF9fczBfNzA0ID0gX19wMF83MDQ7IFwKICBpbnQzMngyX3QgX19zMV83MDQgPSBfX3AxXzcwNDsgXAogIGludDMyeDRfdCBfX3MyXzcwNCA9IF9fcDJfNzA0OyBcCiAgaW50NjR4Ml90IF9fcmV2MF83MDQ7ICBfX3JldjBfNzA0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF83MDQsIF9fczBfNzA0LCAxLCAwKTsgXAogIGludDMyeDJfdCBfX3JldjFfNzA0OyAgX19yZXYxXzcwNCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNzA0LCBfX3MxXzcwNCwgMSwgMCk7IFwKICBpbnQzMng0X3QgX19yZXYyXzcwNDsgIF9fcmV2Ml83MDQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzcwNCwgX19zMl83MDQsIDMsIDIsIDEsIDApOyBcCiAgaW50NjR4Ml90IF9fcmV0XzcwNDsgXAogIF9fcmV0XzcwNCA9IF9fbm9zd2FwX3ZxZG1sYWxfczMyKF9fcmV2MF83MDQsIF9fcmV2MV83MDQsIF9fbm9zd2FwX3NwbGF0X2xhbmVxX3MzMihfX3JldjJfNzA0LCBfX3AzXzcwNCkpOyBcCiAgX19yZXRfNzA0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNzA0LCBfX3JldF83MDQsIDEsIDApOyBcCiAgX19yZXRfNzA0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFkbWxhbF9sYW5lcV9zMTYoX19wMF83MDUsIF9fcDFfNzA1LCBfX3AyXzcwNSwgX19wM183MDUpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDRfdCBfX3MwXzcwNSA9IF9fcDBfNzA1OyBcCiAgaW50MTZ4NF90IF9fczFfNzA1ID0gX19wMV83MDU7IFwKICBpbnQxNng4X3QgX19zMl83MDUgPSBfX3AyXzcwNTsgXAogIGludDMyeDRfdCBfX3JldF83MDU7IFwKICBfX3JldF83MDUgPSB2cWRtbGFsX3MxNihfX3MwXzcwNSwgX19zMV83MDUsIHNwbGF0X2xhbmVxX3MxNihfX3MyXzcwNSwgX19wM183MDUpKTsgXAogIF9fcmV0XzcwNTsgXAp9KQojZWxzZQojZGVmaW5lIHZxZG1sYWxfbGFuZXFfczE2KF9fcDBfNzA2LCBfX3AxXzcwNiwgX19wMl83MDYsIF9fcDNfNzA2KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMF83MDYgPSBfX3AwXzcwNjsgXAogIGludDE2eDRfdCBfX3MxXzcwNiA9IF9fcDFfNzA2OyBcCiAgaW50MTZ4OF90IF9fczJfNzA2ID0gX19wMl83MDY7IFwKICBpbnQzMng0X3QgX19yZXYwXzcwNjsgIF9fcmV2MF83MDYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzcwNiwgX19zMF83MDYsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4NF90IF9fcmV2MV83MDY7ICBfX3JldjFfNzA2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV83MDYsIF9fczFfNzA2LCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDhfdCBfX3JldjJfNzA2OyAgX19yZXYyXzcwNiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfNzA2LCBfX3MyXzcwNiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQzMng0X3QgX19yZXRfNzA2OyBcCiAgX19yZXRfNzA2ID0gX19ub3N3YXBfdnFkbWxhbF9zMTYoX19yZXYwXzcwNiwgX19yZXYxXzcwNiwgX19ub3N3YXBfc3BsYXRfbGFuZXFfczE2KF9fcmV2Ml83MDYsIF9fcDNfNzA2KSk7IFwKICBfX3JldF83MDYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF83MDYsIF9fcmV0XzcwNiwgMywgMiwgMSwgMCk7IFwKICBfX3JldF83MDY7IFwKfSkKI2VuZGlmCgpfX2FpIGludDY0X3QgdnFkbWxzbHNfczMyKGludDY0X3QgX19wMCwgaW50MzJfdCBfX3AxLCBpbnQzMl90IF9fcDIpIHsKICBpbnQ2NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZxZG1sc2xzX3MzMihfX3AwLCBfX3AxLCBfX3AyKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQzMl90IHZxZG1sc2xoX3MxNihpbnQzMl90IF9fcDAsIGludDE2X3QgX19wMSwgaW50MTZfdCBfX3AyKSB7CiAgaW50MzJfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMl90KSBfX2J1aWx0aW5fbmVvbl92cWRtbHNsaF9zMTYoX19wMCwgX19wMSwgX19wMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDY0eDJfdCB2cWRtbHNsX2hpZ2hfczMyKGludDY0eDJfdCBfX3AwLCBpbnQzMng0X3QgX19wMSwgaW50MzJ4NF90IF9fcDIpIHsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSB2cWRtbHNsX3MzMihfX3AwLCB2Z2V0X2hpZ2hfczMyKF9fcDEpLCB2Z2V0X2hpZ2hfczMyKF9fcDIpKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ2NHgyX3QgdnFkbWxzbF9oaWdoX3MzMihpbnQ2NHgyX3QgX19wMCwgaW50MzJ4NF90IF9fcDEsIGludDMyeDRfdCBfX3AyKSB7CiAgaW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMywgMiwgMSwgMCk7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdnFkbWxzbF9zMzIoX19yZXYwLCBfX25vc3dhcF92Z2V0X2hpZ2hfczMyKF9fcmV2MSksIF9fbm9zd2FwX3ZnZXRfaGlnaF9zMzIoX19yZXYyKSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDRfdCB2cWRtbHNsX2hpZ2hfczE2KGludDMyeDRfdCBfX3AwLCBpbnQxNng4X3QgX19wMSwgaW50MTZ4OF90IF9fcDIpIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSB2cWRtbHNsX3MxNihfX3AwLCB2Z2V0X2hpZ2hfczE2KF9fcDEpLCB2Z2V0X2hpZ2hfczE2KF9fcDIpKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMng0X3QgdnFkbWxzbF9oaWdoX3MxNihpbnQzMng0X3QgX19wMCwgaW50MTZ4OF90IF9fcDEsIGludDE2eDhfdCBfX3AyKSB7CiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdnFkbWxzbF9zMTYoX19yZXYwLCBfX25vc3dhcF92Z2V0X2hpZ2hfczE2KF9fcmV2MSksIF9fbm9zd2FwX3ZnZXRfaGlnaF9zMTYoX19yZXYyKSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZxZG1sc2xfaGlnaF9sYW5lX3MzMihfX3AwXzcwNywgX19wMV83MDcsIF9fcDJfNzA3LCBfX3AzXzcwNykgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4Ml90IF9fczBfNzA3ID0gX19wMF83MDc7IFwKICBpbnQzMng0X3QgX19zMV83MDcgPSBfX3AxXzcwNzsgXAogIGludDMyeDJfdCBfX3MyXzcwNyA9IF9fcDJfNzA3OyBcCiAgaW50NjR4Ml90IF9fcmV0XzcwNzsgXAogIF9fcmV0XzcwNyA9IHZxZG1sc2xfczMyKF9fczBfNzA3LCB2Z2V0X2hpZ2hfczMyKF9fczFfNzA3KSwgc3BsYXRfbGFuZV9zMzIoX19zMl83MDcsIF9fcDNfNzA3KSk7IFwKICBfX3JldF83MDc7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cWRtbHNsX2hpZ2hfbGFuZV9zMzIoX19wMF83MDgsIF9fcDFfNzA4LCBfX3AyXzcwOCwgX19wM183MDgpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJfdCBfX3MwXzcwOCA9IF9fcDBfNzA4OyBcCiAgaW50MzJ4NF90IF9fczFfNzA4ID0gX19wMV83MDg7IFwKICBpbnQzMngyX3QgX19zMl83MDggPSBfX3AyXzcwODsgXAogIGludDY0eDJfdCBfX3JldjBfNzA4OyAgX19yZXYwXzcwOCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNzA4LCBfX3MwXzcwOCwgMSwgMCk7IFwKICBpbnQzMng0X3QgX19yZXYxXzcwODsgIF9fcmV2MV83MDggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzcwOCwgX19zMV83MDgsIDMsIDIsIDEsIDApOyBcCiAgaW50MzJ4Ml90IF9fcmV2Ml83MDg7ICBfX3JldjJfNzA4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl83MDgsIF9fczJfNzA4LCAxLCAwKTsgXAogIGludDY0eDJfdCBfX3JldF83MDg7IFwKICBfX3JldF83MDggPSBfX25vc3dhcF92cWRtbHNsX3MzMihfX3JldjBfNzA4LCBfX25vc3dhcF92Z2V0X2hpZ2hfczMyKF9fcmV2MV83MDgpLCBfX25vc3dhcF9zcGxhdF9sYW5lX3MzMihfX3JldjJfNzA4LCBfX3AzXzcwOCkpOyBcCiAgX19yZXRfNzA4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNzA4LCBfX3JldF83MDgsIDEsIDApOyBcCiAgX19yZXRfNzA4OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFkbWxzbF9oaWdoX2xhbmVfczE2KF9fcDBfNzA5LCBfX3AxXzcwOSwgX19wMl83MDksIF9fcDNfNzA5KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMF83MDkgPSBfX3AwXzcwOTsgXAogIGludDE2eDhfdCBfX3MxXzcwOSA9IF9fcDFfNzA5OyBcCiAgaW50MTZ4NF90IF9fczJfNzA5ID0gX19wMl83MDk7IFwKICBpbnQzMng0X3QgX19yZXRfNzA5OyBcCiAgX19yZXRfNzA5ID0gdnFkbWxzbF9zMTYoX19zMF83MDksIHZnZXRfaGlnaF9zMTYoX19zMV83MDkpLCBzcGxhdF9sYW5lX3MxNihfX3MyXzcwOSwgX19wM183MDkpKTsgXAogIF9fcmV0XzcwOTsgXAp9KQojZWxzZQojZGVmaW5lIHZxZG1sc2xfaGlnaF9sYW5lX3MxNihfX3AwXzcxMCwgX19wMV83MTAsIF9fcDJfNzEwLCBfX3AzXzcxMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczBfNzEwID0gX19wMF83MTA7IFwKICBpbnQxNng4X3QgX19zMV83MTAgPSBfX3AxXzcxMDsgXAogIGludDE2eDRfdCBfX3MyXzcxMCA9IF9fcDJfNzEwOyBcCiAgaW50MzJ4NF90IF9fcmV2MF83MTA7ICBfX3JldjBfNzEwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF83MTAsIF9fczBfNzEwLCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDhfdCBfX3JldjFfNzEwOyAgX19yZXYxXzcxMCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNzEwLCBfX3MxXzcxMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng0X3QgX19yZXYyXzcxMDsgIF9fcmV2Ml83MTAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzcxMCwgX19zMl83MTAsIDMsIDIsIDEsIDApOyBcCiAgaW50MzJ4NF90IF9fcmV0XzcxMDsgXAogIF9fcmV0XzcxMCA9IF9fbm9zd2FwX3ZxZG1sc2xfczE2KF9fcmV2MF83MTAsIF9fbm9zd2FwX3ZnZXRfaGlnaF9zMTYoX19yZXYxXzcxMCksIF9fbm9zd2FwX3NwbGF0X2xhbmVfczE2KF9fcmV2Ml83MTAsIF9fcDNfNzEwKSk7IFwKICBfX3JldF83MTAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF83MTAsIF9fcmV0XzcxMCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF83MTA7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cWRtbHNsX2hpZ2hfbGFuZXFfczMyKF9fcDBfNzExLCBfX3AxXzcxMSwgX19wMl83MTEsIF9fcDNfNzExKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgyX3QgX19zMF83MTEgPSBfX3AwXzcxMTsgXAogIGludDMyeDRfdCBfX3MxXzcxMSA9IF9fcDFfNzExOyBcCiAgaW50MzJ4NF90IF9fczJfNzExID0gX19wMl83MTE7IFwKICBpbnQ2NHgyX3QgX19yZXRfNzExOyBcCiAgX19yZXRfNzExID0gdnFkbWxzbF9zMzIoX19zMF83MTEsIHZnZXRfaGlnaF9zMzIoX19zMV83MTEpLCBzcGxhdF9sYW5lcV9zMzIoX19zMl83MTEsIF9fcDNfNzExKSk7IFwKICBfX3JldF83MTE7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cWRtbHNsX2hpZ2hfbGFuZXFfczMyKF9fcDBfNzEyLCBfX3AxXzcxMiwgX19wMl83MTIsIF9fcDNfNzEyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgyX3QgX19zMF83MTIgPSBfX3AwXzcxMjsgXAogIGludDMyeDRfdCBfX3MxXzcxMiA9IF9fcDFfNzEyOyBcCiAgaW50MzJ4NF90IF9fczJfNzEyID0gX19wMl83MTI7IFwKICBpbnQ2NHgyX3QgX19yZXYwXzcxMjsgIF9fcmV2MF83MTIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzcxMiwgX19zMF83MTIsIDEsIDApOyBcCiAgaW50MzJ4NF90IF9fcmV2MV83MTI7ICBfX3JldjFfNzEyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV83MTIsIF9fczFfNzEyLCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDRfdCBfX3JldjJfNzEyOyAgX19yZXYyXzcxMiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfNzEyLCBfX3MyXzcxMiwgMywgMiwgMSwgMCk7IFwKICBpbnQ2NHgyX3QgX19yZXRfNzEyOyBcCiAgX19yZXRfNzEyID0gX19ub3N3YXBfdnFkbWxzbF9zMzIoX19yZXYwXzcxMiwgX19ub3N3YXBfdmdldF9oaWdoX3MzMihfX3JldjFfNzEyKSwgX19ub3N3YXBfc3BsYXRfbGFuZXFfczMyKF9fcmV2Ml83MTIsIF9fcDNfNzEyKSk7IFwKICBfX3JldF83MTIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF83MTIsIF9fcmV0XzcxMiwgMSwgMCk7IFwKICBfX3JldF83MTI7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cWRtbHNsX2hpZ2hfbGFuZXFfczE2KF9fcDBfNzEzLCBfX3AxXzcxMywgX19wMl83MTMsIF9fcDNfNzEzKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMF83MTMgPSBfX3AwXzcxMzsgXAogIGludDE2eDhfdCBfX3MxXzcxMyA9IF9fcDFfNzEzOyBcCiAgaW50MTZ4OF90IF9fczJfNzEzID0gX19wMl83MTM7IFwKICBpbnQzMng0X3QgX19yZXRfNzEzOyBcCiAgX19yZXRfNzEzID0gdnFkbWxzbF9zMTYoX19zMF83MTMsIHZnZXRfaGlnaF9zMTYoX19zMV83MTMpLCBzcGxhdF9sYW5lcV9zMTYoX19zMl83MTMsIF9fcDNfNzEzKSk7IFwKICBfX3JldF83MTM7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cWRtbHNsX2hpZ2hfbGFuZXFfczE2KF9fcDBfNzE0LCBfX3AxXzcxNCwgX19wMl83MTQsIF9fcDNfNzE0KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMF83MTQgPSBfX3AwXzcxNDsgXAogIGludDE2eDhfdCBfX3MxXzcxNCA9IF9fcDFfNzE0OyBcCiAgaW50MTZ4OF90IF9fczJfNzE0ID0gX19wMl83MTQ7IFwKICBpbnQzMng0X3QgX19yZXYwXzcxNDsgIF9fcmV2MF83MTQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzcxNCwgX19zMF83MTQsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4OF90IF9fcmV2MV83MTQ7ICBfX3JldjFfNzE0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV83MTQsIF9fczFfNzE0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDhfdCBfX3JldjJfNzE0OyAgX19yZXYyXzcxNCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfNzE0LCBfX3MyXzcxNCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQzMng0X3QgX19yZXRfNzE0OyBcCiAgX19yZXRfNzE0ID0gX19ub3N3YXBfdnFkbWxzbF9zMTYoX19yZXYwXzcxNCwgX19ub3N3YXBfdmdldF9oaWdoX3MxNihfX3JldjFfNzE0KSwgX19ub3N3YXBfc3BsYXRfbGFuZXFfczE2KF9fcmV2Ml83MTQsIF9fcDNfNzE0KSk7IFwKICBfX3JldF83MTQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF83MTQsIF9fcmV0XzcxNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF83MTQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ2NHgyX3QgdnFkbWxzbF9oaWdoX25fczMyKGludDY0eDJfdCBfX3AwLCBpbnQzMng0X3QgX19wMSwgaW50MzJfdCBfX3AyKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gdnFkbWxzbF9uX3MzMihfX3AwLCB2Z2V0X2hpZ2hfczMyKF9fcDEpLCBfX3AyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ2NHgyX3QgdnFkbWxzbF9oaWdoX25fczMyKGludDY0eDJfdCBfX3AwLCBpbnQzMng0X3QgX19wMSwgaW50MzJfdCBfX3AyKSB7CiAgaW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92cWRtbHNsX25fczMyKF9fcmV2MCwgX19ub3N3YXBfdmdldF9oaWdoX3MzMihfX3JldjEpLCBfX3AyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4NF90IHZxZG1sc2xfaGlnaF9uX3MxNihpbnQzMng0X3QgX19wMCwgaW50MTZ4OF90IF9fcDEsIGludDE2X3QgX19wMikgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IHZxZG1sc2xfbl9zMTYoX19wMCwgdmdldF9oaWdoX3MxNihfX3AxKSwgX19wMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4NF90IHZxZG1sc2xfaGlnaF9uX3MxNihpbnQzMng0X3QgX19wMCwgaW50MTZ4OF90IF9fcDEsIGludDE2X3QgX19wMikgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdnFkbWxzbF9uX3MxNihfX3JldjAsIF9fbm9zd2FwX3ZnZXRfaGlnaF9zMTYoX19yZXYxKSwgX19wMik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZxZG1sc2xzX2xhbmVfczMyKF9fcDAsIF9fcDEsIF9fcDIsIF9fcDMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQzMl90IF9fczEgPSBfX3AxOyBcCiAgaW50MzJ4Ml90IF9fczIgPSBfX3AyOyBcCiAgaW50NjRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZxZG1sc2xzX2xhbmVfczMyKF9fczAsIF9fczEsIF9fczIsIF9fcDMpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cWRtbHNsc19sYW5lX3MzMihfX3AwLCBfX3AxLCBfX3AyLCBfX3AzKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NF90IF9fczAgPSBfX3AwOyBcCiAgaW50MzJfdCBfX3MxID0gX19wMTsgXAogIGludDMyeDJfdCBfX3MyID0gX19wMjsgXAogIGludDMyeDJfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyLCBfX3MyLCAxLCAwKTsgXAogIGludDY0X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ2NF90KSBfX2J1aWx0aW5fbmVvbl92cWRtbHNsc19sYW5lX3MzMihfX3MwLCBfX3MxLCBfX3JldjIsIF9fcDMpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cWRtbHNsaF9sYW5lX3MxNihfX3AwLCBfX3AxLCBfX3AyLCBfX3AzKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMl90IF9fczAgPSBfX3AwOyBcCiAgaW50MTZfdCBfX3MxID0gX19wMTsgXAogIGludDE2eDRfdCBfX3MyID0gX19wMjsgXAogIGludDMyX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQzMl90KSBfX2J1aWx0aW5fbmVvbl92cWRtbHNsaF9sYW5lX3MxNihfX3MwLCBfX3MxLCBfX3MyLCBfX3AzKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFkbWxzbGhfbGFuZV9zMTYoX19wMCwgX19wMSwgX19wMiwgX19wMykgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJfdCBfX3MwID0gX19wMDsgXAogIGludDE2X3QgX19zMSA9IF9fcDE7IFwKICBpbnQxNng0X3QgX19zMiA9IF9fcDI7IFwKICBpbnQxNng0X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMiwgX19zMiwgMywgMiwgMSwgMCk7IFwKICBpbnQzMl90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJfdCkgX19idWlsdGluX25lb25fdnFkbWxzbGhfbGFuZV9zMTYoX19zMCwgX19zMSwgX19yZXYyLCBfX3AzKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFkbWxzbHNfbGFuZXFfczMyKF9fcDAsIF9fcDEsIF9fcDIsIF9fcDMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQzMl90IF9fczEgPSBfX3AxOyBcCiAgaW50MzJ4NF90IF9fczIgPSBfX3AyOyBcCiAgaW50NjRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZxZG1sc2xzX2xhbmVxX3MzMihfX3MwLCBfX3MxLCBfX3MyLCBfX3AzKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFkbWxzbHNfbGFuZXFfczMyKF9fcDAsIF9fcDEsIF9fcDIsIF9fcDMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQzMl90IF9fczEgPSBfX3AxOyBcCiAgaW50MzJ4NF90IF9fczIgPSBfX3AyOyBcCiAgaW50MzJ4NF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczIsIF9fczIsIDMsIDIsIDEsIDApOyBcCiAgaW50NjRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZxZG1sc2xzX2xhbmVxX3MzMihfX3MwLCBfX3MxLCBfX3JldjIsIF9fcDMpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cWRtbHNsaF9sYW5lcV9zMTYoX19wMCwgX19wMSwgX19wMiwgX19wMykgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJfdCBfX3MwID0gX19wMDsgXAogIGludDE2X3QgX19zMSA9IF9fcDE7IFwKICBpbnQxNng4X3QgX19zMiA9IF9fcDI7IFwKICBpbnQzMl90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJfdCkgX19idWlsdGluX25lb25fdnFkbWxzbGhfbGFuZXFfczE2KF9fczAsIF9fczEsIF9fczIsIF9fcDMpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cWRtbHNsaF9sYW5lcV9zMTYoX19wMCwgX19wMSwgX19wMiwgX19wMykgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJfdCBfX3MwID0gX19wMDsgXAogIGludDE2X3QgX19zMSA9IF9fcDE7IFwKICBpbnQxNng4X3QgX19zMiA9IF9fcDI7IFwKICBpbnQxNng4X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMiwgX19zMiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQzMl90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJfdCkgX19idWlsdGluX25lb25fdnFkbWxzbGhfbGFuZXFfczE2KF9fczAsIF9fczEsIF9fcmV2MiwgX19wMyk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZxZG1sc2xfbGFuZXFfczMyKF9fcDBfNzE1LCBfX3AxXzcxNSwgX19wMl83MTUsIF9fcDNfNzE1KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgyX3QgX19zMF83MTUgPSBfX3AwXzcxNTsgXAogIGludDMyeDJfdCBfX3MxXzcxNSA9IF9fcDFfNzE1OyBcCiAgaW50MzJ4NF90IF9fczJfNzE1ID0gX19wMl83MTU7IFwKICBpbnQ2NHgyX3QgX19yZXRfNzE1OyBcCiAgX19yZXRfNzE1ID0gdnFkbWxzbF9zMzIoX19zMF83MTUsIF9fczFfNzE1LCBzcGxhdF9sYW5lcV9zMzIoX19zMl83MTUsIF9fcDNfNzE1KSk7IFwKICBfX3JldF83MTU7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cWRtbHNsX2xhbmVxX3MzMihfX3AwXzcxNiwgX19wMV83MTYsIF9fcDJfNzE2LCBfX3AzXzcxNikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4Ml90IF9fczBfNzE2ID0gX19wMF83MTY7IFwKICBpbnQzMngyX3QgX19zMV83MTYgPSBfX3AxXzcxNjsgXAogIGludDMyeDRfdCBfX3MyXzcxNiA9IF9fcDJfNzE2OyBcCiAgaW50NjR4Ml90IF9fcmV2MF83MTY7ICBfX3JldjBfNzE2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF83MTYsIF9fczBfNzE2LCAxLCAwKTsgXAogIGludDMyeDJfdCBfX3JldjFfNzE2OyAgX19yZXYxXzcxNiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNzE2LCBfX3MxXzcxNiwgMSwgMCk7IFwKICBpbnQzMng0X3QgX19yZXYyXzcxNjsgIF9fcmV2Ml83MTYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzcxNiwgX19zMl83MTYsIDMsIDIsIDEsIDApOyBcCiAgaW50NjR4Ml90IF9fcmV0XzcxNjsgXAogIF9fcmV0XzcxNiA9IF9fbm9zd2FwX3ZxZG1sc2xfczMyKF9fcmV2MF83MTYsIF9fcmV2MV83MTYsIF9fbm9zd2FwX3NwbGF0X2xhbmVxX3MzMihfX3JldjJfNzE2LCBfX3AzXzcxNikpOyBcCiAgX19yZXRfNzE2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNzE2LCBfX3JldF83MTYsIDEsIDApOyBcCiAgX19yZXRfNzE2OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFkbWxzbF9sYW5lcV9zMTYoX19wMF83MTcsIF9fcDFfNzE3LCBfX3AyXzcxNywgX19wM183MTcpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDRfdCBfX3MwXzcxNyA9IF9fcDBfNzE3OyBcCiAgaW50MTZ4NF90IF9fczFfNzE3ID0gX19wMV83MTc7IFwKICBpbnQxNng4X3QgX19zMl83MTcgPSBfX3AyXzcxNzsgXAogIGludDMyeDRfdCBfX3JldF83MTc7IFwKICBfX3JldF83MTcgPSB2cWRtbHNsX3MxNihfX3MwXzcxNywgX19zMV83MTcsIHNwbGF0X2xhbmVxX3MxNihfX3MyXzcxNywgX19wM183MTcpKTsgXAogIF9fcmV0XzcxNzsgXAp9KQojZWxzZQojZGVmaW5lIHZxZG1sc2xfbGFuZXFfczE2KF9fcDBfNzE4LCBfX3AxXzcxOCwgX19wMl83MTgsIF9fcDNfNzE4KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMF83MTggPSBfX3AwXzcxODsgXAogIGludDE2eDRfdCBfX3MxXzcxOCA9IF9fcDFfNzE4OyBcCiAgaW50MTZ4OF90IF9fczJfNzE4ID0gX19wMl83MTg7IFwKICBpbnQzMng0X3QgX19yZXYwXzcxODsgIF9fcmV2MF83MTggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzcxOCwgX19zMF83MTgsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4NF90IF9fcmV2MV83MTg7ICBfX3JldjFfNzE4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV83MTgsIF9fczFfNzE4LCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDhfdCBfX3JldjJfNzE4OyAgX19yZXYyXzcxOCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfNzE4LCBfX3MyXzcxOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQzMng0X3QgX19yZXRfNzE4OyBcCiAgX19yZXRfNzE4ID0gX19ub3N3YXBfdnFkbWxzbF9zMTYoX19yZXYwXzcxOCwgX19yZXYxXzcxOCwgX19ub3N3YXBfc3BsYXRfbGFuZXFfczE2KF9fcmV2Ml83MTgsIF9fcDNfNzE4KSk7IFwKICBfX3JldF83MTggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF83MTgsIF9fcmV0XzcxOCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF83MTg7IFwKfSkKI2VuZGlmCgpfX2FpIGludDMyX3QgdnFkbXVsaHNfczMyKGludDMyX3QgX19wMCwgaW50MzJfdCBfX3AxKSB7CiAgaW50MzJfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMl90KSBfX2J1aWx0aW5fbmVvbl92cWRtdWxoc19zMzIoX19wMCwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MTZfdCB2cWRtdWxoaF9zMTYoaW50MTZfdCBfX3AwLCBpbnQxNl90IF9fcDEpIHsKICBpbnQxNl90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZxZG11bGhoX3MxNihfX3AwLCBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFkbXVsaHFfbGFuZV9zMzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczAgPSBfX3AwOyBcCiAgaW50MzJ4Ml90IF9fczEgPSBfX3AxOyBcCiAgaW50MzJ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92cWRtdWxocV9sYW5lX3YoKGludDh4MTZfdClfX3MwLCAoaW50OHg4X3QpX19zMSwgX19wMiwgMik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZxZG11bGhxX2xhbmVfczMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDRfdCBfX3MwID0gX19wMDsgXAogIGludDMyeDJfdCBfX3MxID0gX19wMTsgXAogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAxLCAwKTsgXAogIGludDMyeDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDMyeDRfdCkgX19idWlsdGluX25lb25fdnFkbXVsaHFfbGFuZV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCBfX3AyLCAyKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFkbXVsaHFfbGFuZV9zMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgaW50MTZ4NF90IF9fczEgPSBfX3AxOyBcCiAgaW50MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92cWRtdWxocV9sYW5lX3YoKGludDh4MTZfdClfX3MwLCAoaW50OHg4X3QpX19zMSwgX19wMiwgMSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZxZG11bGhxX2xhbmVfczE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDhfdCBfX3MwID0gX19wMDsgXAogIGludDE2eDRfdCBfX3MxID0gX19wMTsgXAogIGludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDE2eDhfdCkgX19idWlsdGluX25lb25fdnFkbXVsaHFfbGFuZV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCBfX3AyLCAxKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFkbXVsaF9sYW5lX3MzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMngyX3QgX19zMCA9IF9fcDA7IFwKICBpbnQzMngyX3QgX19zMSA9IF9fcDE7IFwKICBpbnQzMngyX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZxZG11bGhfbGFuZV92KChpbnQ4eDhfdClfX3MwLCAoaW50OHg4X3QpX19zMSwgX19wMiwgMik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZxZG11bGhfbGFuZV9zMzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Ml90IF9fczAgPSBfX3AwOyBcCiAgaW50MzJ4Ml90IF9fczEgPSBfX3AxOyBcCiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDEsIDApOyBcCiAgaW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDEsIDApOyBcCiAgaW50MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cWRtdWxoX2xhbmVfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCBfX3AyLCAyKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFkbXVsaF9sYW5lX3MxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQxNng0X3QgX19zMSA9IF9fcDE7IFwKICBpbnQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZxZG11bGhfbGFuZV92KChpbnQ4eDhfdClfX3MwLCAoaW50OHg4X3QpX19zMSwgX19wMiwgMSk7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZxZG11bGhfbGFuZV9zMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NF90IF9fczAgPSBfX3AwOyBcCiAgaW50MTZ4NF90IF9fczEgPSBfX3AxOyBcCiAgaW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cWRtdWxoX2xhbmVfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCBfX3AyLCAxKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFkbXVsaHNfbGFuZV9zMzIoX19wMF83MTksIF9fcDFfNzE5LCBfX3AyXzcxOSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJfdCBfX3MwXzcxOSA9IF9fcDBfNzE5OyBcCiAgaW50MzJ4Ml90IF9fczFfNzE5ID0gX19wMV83MTk7IFwKICBpbnQzMl90IF9fcmV0XzcxOTsgXAogIF9fcmV0XzcxOSA9IHZxZG11bGhzX3MzMihfX3MwXzcxOSwgdmdldF9sYW5lX3MzMihfX3MxXzcxOSwgX19wMl83MTkpKTsgXAogIF9fcmV0XzcxOTsgXAp9KQojZWxzZQojZGVmaW5lIHZxZG11bGhzX2xhbmVfczMyKF9fcDBfNzIwLCBfX3AxXzcyMCwgX19wMl83MjApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyX3QgX19zMF83MjAgPSBfX3AwXzcyMDsgXAogIGludDMyeDJfdCBfX3MxXzcyMCA9IF9fcDFfNzIwOyBcCiAgaW50MzJ4Ml90IF9fcmV2MV83MjA7ICBfX3JldjFfNzIwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV83MjAsIF9fczFfNzIwLCAxLCAwKTsgXAogIGludDMyX3QgX19yZXRfNzIwOyBcCiAgX19yZXRfNzIwID0gdnFkbXVsaHNfczMyKF9fczBfNzIwLCBfX25vc3dhcF92Z2V0X2xhbmVfczMyKF9fcmV2MV83MjAsIF9fcDJfNzIwKSk7IFwKICBfX3JldF83MjA7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cWRtdWxoaF9sYW5lX3MxNihfX3AwXzcyMSwgX19wMV83MjEsIF9fcDJfNzIxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNl90IF9fczBfNzIxID0gX19wMF83MjE7IFwKICBpbnQxNng0X3QgX19zMV83MjEgPSBfX3AxXzcyMTsgXAogIGludDE2X3QgX19yZXRfNzIxOyBcCiAgX19yZXRfNzIxID0gdnFkbXVsaGhfczE2KF9fczBfNzIxLCB2Z2V0X2xhbmVfczE2KF9fczFfNzIxLCBfX3AyXzcyMSkpOyBcCiAgX19yZXRfNzIxOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFkbXVsaGhfbGFuZV9zMTYoX19wMF83MjIsIF9fcDFfNzIyLCBfX3AyXzcyMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZfdCBfX3MwXzcyMiA9IF9fcDBfNzIyOyBcCiAgaW50MTZ4NF90IF9fczFfNzIyID0gX19wMV83MjI7IFwKICBpbnQxNng0X3QgX19yZXYxXzcyMjsgIF9fcmV2MV83MjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzcyMiwgX19zMV83MjIsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZfdCBfX3JldF83MjI7IFwKICBfX3JldF83MjIgPSB2cWRtdWxoaF9zMTYoX19zMF83MjIsIF9fbm9zd2FwX3ZnZXRfbGFuZV9zMTYoX19yZXYxXzcyMiwgX19wMl83MjIpKTsgXAogIF9fcmV0XzcyMjsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZxZG11bGhzX2xhbmVxX3MzMihfX3AwXzcyMywgX19wMV83MjMsIF9fcDJfNzIzKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMl90IF9fczBfNzIzID0gX19wMF83MjM7IFwKICBpbnQzMng0X3QgX19zMV83MjMgPSBfX3AxXzcyMzsgXAogIGludDMyX3QgX19yZXRfNzIzOyBcCiAgX19yZXRfNzIzID0gdnFkbXVsaHNfczMyKF9fczBfNzIzLCB2Z2V0cV9sYW5lX3MzMihfX3MxXzcyMywgX19wMl83MjMpKTsgXAogIF9fcmV0XzcyMzsgXAp9KQojZWxzZQojZGVmaW5lIHZxZG11bGhzX2xhbmVxX3MzMihfX3AwXzcyNCwgX19wMV83MjQsIF9fcDJfNzI0KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMl90IF9fczBfNzI0ID0gX19wMF83MjQ7IFwKICBpbnQzMng0X3QgX19zMV83MjQgPSBfX3AxXzcyNDsgXAogIGludDMyeDRfdCBfX3JldjFfNzI0OyAgX19yZXYxXzcyNCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNzI0LCBfX3MxXzcyNCwgMywgMiwgMSwgMCk7IFwKICBpbnQzMl90IF9fcmV0XzcyNDsgXAogIF9fcmV0XzcyNCA9IHZxZG11bGhzX3MzMihfX3MwXzcyNCwgX19ub3N3YXBfdmdldHFfbGFuZV9zMzIoX19yZXYxXzcyNCwgX19wMl83MjQpKTsgXAogIF9fcmV0XzcyNDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZxZG11bGhoX2xhbmVxX3MxNihfX3AwXzcyNSwgX19wMV83MjUsIF9fcDJfNzI1KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNl90IF9fczBfNzI1ID0gX19wMF83MjU7IFwKICBpbnQxNng4X3QgX19zMV83MjUgPSBfX3AxXzcyNTsgXAogIGludDE2X3QgX19yZXRfNzI1OyBcCiAgX19yZXRfNzI1ID0gdnFkbXVsaGhfczE2KF9fczBfNzI1LCB2Z2V0cV9sYW5lX3MxNihfX3MxXzcyNSwgX19wMl83MjUpKTsgXAogIF9fcmV0XzcyNTsgXAp9KQojZWxzZQojZGVmaW5lIHZxZG11bGhoX2xhbmVxX3MxNihfX3AwXzcyNiwgX19wMV83MjYsIF9fcDJfNzI2KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNl90IF9fczBfNzI2ID0gX19wMF83MjY7IFwKICBpbnQxNng4X3QgX19zMV83MjYgPSBfX3AxXzcyNjsgXAogIGludDE2eDhfdCBfX3JldjFfNzI2OyAgX19yZXYxXzcyNiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNzI2LCBfX3MxXzcyNiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNl90IF9fcmV0XzcyNjsgXAogIF9fcmV0XzcyNiA9IHZxZG11bGhoX3MxNihfX3MwXzcyNiwgX19ub3N3YXBfdmdldHFfbGFuZV9zMTYoX19yZXYxXzcyNiwgX19wMl83MjYpKTsgXAogIF9fcmV0XzcyNjsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZxZG11bGhxX2xhbmVxX3MzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQzMng0X3QgX19zMSA9IF9fcDE7IFwKICBpbnQzMng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZxZG11bGhxX2xhbmVxX3YoKGludDh4MTZfdClfX3MwLCAoaW50OHgxNl90KV9fczEsIF9fcDIsIDM0KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFkbXVsaHFfbGFuZXFfczMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDRfdCBfX3MwID0gX19wMDsgXAogIGludDMyeDRfdCBfX3MxID0gX19wMTsgXAogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDMyeDRfdCkgX19idWlsdGluX25lb25fdnFkbXVsaHFfbGFuZXFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIF9fcDIsIDM0KTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFkbXVsaHFfbGFuZXFfczE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDhfdCBfX3MwID0gX19wMDsgXAogIGludDE2eDhfdCBfX3MxID0gX19wMTsgXAogIGludDE2eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDE2eDhfdCkgX19idWlsdGluX25lb25fdnFkbXVsaHFfbGFuZXFfdigoaW50OHgxNl90KV9fczAsIChpbnQ4eDE2X3QpX19zMSwgX19wMiwgMzMpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cWRtdWxocV9sYW5lcV9zMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OF90IF9fczAgPSBfX3AwOyBcCiAgaW50MTZ4OF90IF9fczEgPSBfX3AxOyBcCiAgaW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92cWRtdWxocV9sYW5lcV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgX19wMiwgMzMpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cWRtdWxoX2xhbmVxX3MzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMngyX3QgX19zMCA9IF9fcDA7IFwKICBpbnQzMng0X3QgX19zMSA9IF9fcDE7IFwKICBpbnQzMngyX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQzMngyX3QpIF9fYnVpbHRpbl9uZW9uX3ZxZG11bGhfbGFuZXFfdigoaW50OHg4X3QpX19zMCwgKGludDh4MTZfdClfX3MxLCBfX3AyLCAyKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFkbXVsaF9sYW5lcV9zMzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Ml90IF9fczAgPSBfX3AwOyBcCiAgaW50MzJ4NF90IF9fczEgPSBfX3AxOyBcCiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDEsIDApOyBcCiAgaW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDMsIDIsIDEsIDApOyBcCiAgaW50MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cWRtdWxoX2xhbmVxX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIF9fcDIsIDIpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cWRtdWxoX2xhbmVxX3MxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQxNng4X3QgX19zMSA9IF9fcDE7IFwKICBpbnQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZxZG11bGhfbGFuZXFfdigoaW50OHg4X3QpX19zMCwgKGludDh4MTZfdClfX3MxLCBfX3AyLCAxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFkbXVsaF9sYW5lcV9zMTYoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NF90IF9fczAgPSBfX3AwOyBcCiAgaW50MTZ4OF90IF9fczEgPSBfX3AxOyBcCiAgaW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92cWRtdWxoX2xhbmVxX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIF9fcDIsIDEpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgpfX2FpIGludDY0X3QgdnFkbXVsbHNfczMyKGludDMyX3QgX19wMCwgaW50MzJfdCBfX3AxKSB7CiAgaW50NjRfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NF90KSBfX2J1aWx0aW5fbmVvbl92cWRtdWxsc19zMzIoX19wMCwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MzJfdCB2cWRtdWxsaF9zMTYoaW50MTZfdCBfX3AwLCBpbnQxNl90IF9fcDEpIHsKICBpbnQzMl90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZxZG11bGxoX3MxNihfX3AwLCBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50NjR4Ml90IHZxZG11bGxfaGlnaF9zMzIoaW50MzJ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gdnFkbXVsbF9zMzIodmdldF9oaWdoX3MzMihfX3AwKSwgdmdldF9oaWdoX3MzMihfX3AxKSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50NjR4Ml90IHZxZG11bGxfaGlnaF9zMzIoaW50MzJ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxKSB7CiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92cWRtdWxsX3MzMihfX25vc3dhcF92Z2V0X2hpZ2hfczMyKF9fcmV2MCksIF9fbm9zd2FwX3ZnZXRfaGlnaF9zMzIoX19yZXYxKSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDRfdCB2cWRtdWxsX2hpZ2hfczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IHZxZG11bGxfczE2KHZnZXRfaGlnaF9zMTYoX19wMCksIHZnZXRfaGlnaF9zMTYoX19wMSkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDRfdCB2cWRtdWxsX2hpZ2hfczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdnFkbXVsbF9zMTYoX19ub3N3YXBfdmdldF9oaWdoX3MxNihfX3JldjApLCBfX25vc3dhcF92Z2V0X2hpZ2hfczE2KF9fcmV2MSkpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cWRtdWxsX2hpZ2hfbGFuZV9zMzIoX19wMF83MjcsIF9fcDFfNzI3LCBfX3AyXzcyNykgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczBfNzI3ID0gX19wMF83Mjc7IFwKICBpbnQzMngyX3QgX19zMV83MjcgPSBfX3AxXzcyNzsgXAogIGludDY0eDJfdCBfX3JldF83Mjc7IFwKICBfX3JldF83MjcgPSB2cWRtdWxsX3MzMih2Z2V0X2hpZ2hfczMyKF9fczBfNzI3KSwgc3BsYXRfbGFuZV9zMzIoX19zMV83MjcsIF9fcDJfNzI3KSk7IFwKICBfX3JldF83Mjc7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cWRtdWxsX2hpZ2hfbGFuZV9zMzIoX19wMF83MjgsIF9fcDFfNzI4LCBfX3AyXzcyOCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczBfNzI4ID0gX19wMF83Mjg7IFwKICBpbnQzMngyX3QgX19zMV83MjggPSBfX3AxXzcyODsgXAogIGludDMyeDRfdCBfX3JldjBfNzI4OyAgX19yZXYwXzcyOCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNzI4LCBfX3MwXzcyOCwgMywgMiwgMSwgMCk7IFwKICBpbnQzMngyX3QgX19yZXYxXzcyODsgIF9fcmV2MV83MjggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzcyOCwgX19zMV83MjgsIDEsIDApOyBcCiAgaW50NjR4Ml90IF9fcmV0XzcyODsgXAogIF9fcmV0XzcyOCA9IF9fbm9zd2FwX3ZxZG11bGxfczMyKF9fbm9zd2FwX3ZnZXRfaGlnaF9zMzIoX19yZXYwXzcyOCksIF9fbm9zd2FwX3NwbGF0X2xhbmVfczMyKF9fcmV2MV83MjgsIF9fcDJfNzI4KSk7IFwKICBfX3JldF83MjggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF83MjgsIF9fcmV0XzcyOCwgMSwgMCk7IFwKICBfX3JldF83Mjg7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cWRtdWxsX2hpZ2hfbGFuZV9zMTYoX19wMF83MjksIF9fcDFfNzI5LCBfX3AyXzcyOSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OF90IF9fczBfNzI5ID0gX19wMF83Mjk7IFwKICBpbnQxNng0X3QgX19zMV83MjkgPSBfX3AxXzcyOTsgXAogIGludDMyeDRfdCBfX3JldF83Mjk7IFwKICBfX3JldF83MjkgPSB2cWRtdWxsX3MxNih2Z2V0X2hpZ2hfczE2KF9fczBfNzI5KSwgc3BsYXRfbGFuZV9zMTYoX19zMV83MjksIF9fcDJfNzI5KSk7IFwKICBfX3JldF83Mjk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cWRtdWxsX2hpZ2hfbGFuZV9zMTYoX19wMF83MzAsIF9fcDFfNzMwLCBfX3AyXzczMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4OF90IF9fczBfNzMwID0gX19wMF83MzA7IFwKICBpbnQxNng0X3QgX19zMV83MzAgPSBfX3AxXzczMDsgXAogIGludDE2eDhfdCBfX3JldjBfNzMwOyAgX19yZXYwXzczMCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNzMwLCBfX3MwXzczMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng0X3QgX19yZXYxXzczMDsgIF9fcmV2MV83MzAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzczMCwgX19zMV83MzAsIDMsIDIsIDEsIDApOyBcCiAgaW50MzJ4NF90IF9fcmV0XzczMDsgXAogIF9fcmV0XzczMCA9IF9fbm9zd2FwX3ZxZG11bGxfczE2KF9fbm9zd2FwX3ZnZXRfaGlnaF9zMTYoX19yZXYwXzczMCksIF9fbm9zd2FwX3NwbGF0X2xhbmVfczE2KF9fcmV2MV83MzAsIF9fcDJfNzMwKSk7IFwKICBfX3JldF83MzAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF83MzAsIF9fcmV0XzczMCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF83MzA7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cWRtdWxsX2hpZ2hfbGFuZXFfczMyKF9fcDBfNzMxLCBfX3AxXzczMSwgX19wMl83MzEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDRfdCBfX3MwXzczMSA9IF9fcDBfNzMxOyBcCiAgaW50MzJ4NF90IF9fczFfNzMxID0gX19wMV83MzE7IFwKICBpbnQ2NHgyX3QgX19yZXRfNzMxOyBcCiAgX19yZXRfNzMxID0gdnFkbXVsbF9zMzIodmdldF9oaWdoX3MzMihfX3MwXzczMSksIHNwbGF0X2xhbmVxX3MzMihfX3MxXzczMSwgX19wMl83MzEpKTsgXAogIF9fcmV0XzczMTsgXAp9KQojZWxzZQojZGVmaW5lIHZxZG11bGxfaGlnaF9sYW5lcV9zMzIoX19wMF83MzIsIF9fcDFfNzMyLCBfX3AyXzczMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczBfNzMyID0gX19wMF83MzI7IFwKICBpbnQzMng0X3QgX19zMV83MzIgPSBfX3AxXzczMjsgXAogIGludDMyeDRfdCBfX3JldjBfNzMyOyAgX19yZXYwXzczMiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNzMyLCBfX3MwXzczMiwgMywgMiwgMSwgMCk7IFwKICBpbnQzMng0X3QgX19yZXYxXzczMjsgIF9fcmV2MV83MzIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzczMiwgX19zMV83MzIsIDMsIDIsIDEsIDApOyBcCiAgaW50NjR4Ml90IF9fcmV0XzczMjsgXAogIF9fcmV0XzczMiA9IF9fbm9zd2FwX3ZxZG11bGxfczMyKF9fbm9zd2FwX3ZnZXRfaGlnaF9zMzIoX19yZXYwXzczMiksIF9fbm9zd2FwX3NwbGF0X2xhbmVxX3MzMihfX3JldjFfNzMyLCBfX3AyXzczMikpOyBcCiAgX19yZXRfNzMyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNzMyLCBfX3JldF83MzIsIDEsIDApOyBcCiAgX19yZXRfNzMyOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFkbXVsbF9oaWdoX2xhbmVxX3MxNihfX3AwXzczMywgX19wMV83MzMsIF9fcDJfNzMzKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4X3QgX19zMF83MzMgPSBfX3AwXzczMzsgXAogIGludDE2eDhfdCBfX3MxXzczMyA9IF9fcDFfNzMzOyBcCiAgaW50MzJ4NF90IF9fcmV0XzczMzsgXAogIF9fcmV0XzczMyA9IHZxZG11bGxfczE2KHZnZXRfaGlnaF9zMTYoX19zMF83MzMpLCBzcGxhdF9sYW5lcV9zMTYoX19zMV83MzMsIF9fcDJfNzMzKSk7IFwKICBfX3JldF83MzM7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cWRtdWxsX2hpZ2hfbGFuZXFfczE2KF9fcDBfNzM0LCBfX3AxXzczNCwgX19wMl83MzQpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDhfdCBfX3MwXzczNCA9IF9fcDBfNzM0OyBcCiAgaW50MTZ4OF90IF9fczFfNzM0ID0gX19wMV83MzQ7IFwKICBpbnQxNng4X3QgX19yZXYwXzczNDsgIF9fcmV2MF83MzQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzczNCwgX19zMF83MzQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4OF90IF9fcmV2MV83MzQ7ICBfX3JldjFfNzM0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV83MzQsIF9fczFfNzM0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDRfdCBfX3JldF83MzQ7IFwKICBfX3JldF83MzQgPSBfX25vc3dhcF92cWRtdWxsX3MxNihfX25vc3dhcF92Z2V0X2hpZ2hfczE2KF9fcmV2MF83MzQpLCBfX25vc3dhcF9zcGxhdF9sYW5lcV9zMTYoX19yZXYxXzczNCwgX19wMl83MzQpKTsgXAogIF9fcmV0XzczNCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzczNCwgX19yZXRfNzM0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzczNDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDY0eDJfdCB2cWRtdWxsX2hpZ2hfbl9zMzIoaW50MzJ4NF90IF9fcDAsIGludDMyX3QgX19wMSkgewogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IHZxZG11bGxfbl9zMzIodmdldF9oaWdoX3MzMihfX3AwKSwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50NjR4Ml90IHZxZG11bGxfaGlnaF9uX3MzMihpbnQzMng0X3QgX19wMCwgaW50MzJfdCBfX3AxKSB7CiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3ZxZG11bGxfbl9zMzIoX19ub3N3YXBfdmdldF9oaWdoX3MzMihfX3JldjApLCBfX3AxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4NF90IHZxZG11bGxfaGlnaF9uX3MxNihpbnQxNng4X3QgX19wMCwgaW50MTZfdCBfX3AxKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gdnFkbXVsbF9uX3MxNih2Z2V0X2hpZ2hfczE2KF9fcDApLCBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMng0X3QgdnFkbXVsbF9oaWdoX25fczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNl90IF9fcDEpIHsKICBpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdnFkbXVsbF9uX3MxNihfX25vc3dhcF92Z2V0X2hpZ2hfczE2KF9fcmV2MCksIF9fcDEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cWRtdWxsc19sYW5lX3MzMihfX3AwXzczNSwgX19wMV83MzUsIF9fcDJfNzM1KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMl90IF9fczBfNzM1ID0gX19wMF83MzU7IFwKICBpbnQzMngyX3QgX19zMV83MzUgPSBfX3AxXzczNTsgXAogIGludDY0X3QgX19yZXRfNzM1OyBcCiAgX19yZXRfNzM1ID0gdnFkbXVsbHNfczMyKF9fczBfNzM1LCB2Z2V0X2xhbmVfczMyKF9fczFfNzM1LCBfX3AyXzczNSkpOyBcCiAgX19yZXRfNzM1OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFkbXVsbHNfbGFuZV9zMzIoX19wMF83MzYsIF9fcDFfNzM2LCBfX3AyXzczNikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJfdCBfX3MwXzczNiA9IF9fcDBfNzM2OyBcCiAgaW50MzJ4Ml90IF9fczFfNzM2ID0gX19wMV83MzY7IFwKICBpbnQzMngyX3QgX19yZXYxXzczNjsgIF9fcmV2MV83MzYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzczNiwgX19zMV83MzYsIDEsIDApOyBcCiAgaW50NjRfdCBfX3JldF83MzY7IFwKICBfX3JldF83MzYgPSB2cWRtdWxsc19zMzIoX19zMF83MzYsIF9fbm9zd2FwX3ZnZXRfbGFuZV9zMzIoX19yZXYxXzczNiwgX19wMl83MzYpKTsgXAogIF9fcmV0XzczNjsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZxZG11bGxoX2xhbmVfczE2KF9fcDBfNzM3LCBfX3AxXzczNywgX19wMl83MzcpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2X3QgX19zMF83MzcgPSBfX3AwXzczNzsgXAogIGludDE2eDRfdCBfX3MxXzczNyA9IF9fcDFfNzM3OyBcCiAgaW50MzJfdCBfX3JldF83Mzc7IFwKICBfX3JldF83MzcgPSB2cWRtdWxsaF9zMTYoX19zMF83MzcsIHZnZXRfbGFuZV9zMTYoX19zMV83MzcsIF9fcDJfNzM3KSk7IFwKICBfX3JldF83Mzc7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cWRtdWxsaF9sYW5lX3MxNihfX3AwXzczOCwgX19wMV83MzgsIF9fcDJfNzM4KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNl90IF9fczBfNzM4ID0gX19wMF83Mzg7IFwKICBpbnQxNng0X3QgX19zMV83MzggPSBfX3AxXzczODsgXAogIGludDE2eDRfdCBfX3JldjFfNzM4OyAgX19yZXYxXzczOCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNzM4LCBfX3MxXzczOCwgMywgMiwgMSwgMCk7IFwKICBpbnQzMl90IF9fcmV0XzczODsgXAogIF9fcmV0XzczOCA9IHZxZG11bGxoX3MxNihfX3MwXzczOCwgX19ub3N3YXBfdmdldF9sYW5lX3MxNihfX3JldjFfNzM4LCBfX3AyXzczOCkpOyBcCiAgX19yZXRfNzM4OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFkbXVsbHNfbGFuZXFfczMyKF9fcDBfNzM5LCBfX3AxXzczOSwgX19wMl83MzkpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyX3QgX19zMF83MzkgPSBfX3AwXzczOTsgXAogIGludDMyeDRfdCBfX3MxXzczOSA9IF9fcDFfNzM5OyBcCiAgaW50NjRfdCBfX3JldF83Mzk7IFwKICBfX3JldF83MzkgPSB2cWRtdWxsc19zMzIoX19zMF83MzksIHZnZXRxX2xhbmVfczMyKF9fczFfNzM5LCBfX3AyXzczOSkpOyBcCiAgX19yZXRfNzM5OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFkbXVsbHNfbGFuZXFfczMyKF9fcDBfNzQwLCBfX3AxXzc0MCwgX19wMl83NDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyX3QgX19zMF83NDAgPSBfX3AwXzc0MDsgXAogIGludDMyeDRfdCBfX3MxXzc0MCA9IF9fcDFfNzQwOyBcCiAgaW50MzJ4NF90IF9fcmV2MV83NDA7ICBfX3JldjFfNzQwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV83NDAsIF9fczFfNzQwLCAzLCAyLCAxLCAwKTsgXAogIGludDY0X3QgX19yZXRfNzQwOyBcCiAgX19yZXRfNzQwID0gdnFkbXVsbHNfczMyKF9fczBfNzQwLCBfX25vc3dhcF92Z2V0cV9sYW5lX3MzMihfX3JldjFfNzQwLCBfX3AyXzc0MCkpOyBcCiAgX19yZXRfNzQwOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFkbXVsbGhfbGFuZXFfczE2KF9fcDBfNzQxLCBfX3AxXzc0MSwgX19wMl83NDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2X3QgX19zMF83NDEgPSBfX3AwXzc0MTsgXAogIGludDE2eDhfdCBfX3MxXzc0MSA9IF9fcDFfNzQxOyBcCiAgaW50MzJfdCBfX3JldF83NDE7IFwKICBfX3JldF83NDEgPSB2cWRtdWxsaF9zMTYoX19zMF83NDEsIHZnZXRxX2xhbmVfczE2KF9fczFfNzQxLCBfX3AyXzc0MSkpOyBcCiAgX19yZXRfNzQxOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFkbXVsbGhfbGFuZXFfczE2KF9fcDBfNzQyLCBfX3AxXzc0MiwgX19wMl83NDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2X3QgX19zMF83NDIgPSBfX3AwXzc0MjsgXAogIGludDE2eDhfdCBfX3MxXzc0MiA9IF9fcDFfNzQyOyBcCiAgaW50MTZ4OF90IF9fcmV2MV83NDI7ICBfX3JldjFfNzQyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV83NDIsIF9fczFfNzQyLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDMyX3QgX19yZXRfNzQyOyBcCiAgX19yZXRfNzQyID0gdnFkbXVsbGhfczE2KF9fczBfNzQyLCBfX25vc3dhcF92Z2V0cV9sYW5lX3MxNihfX3JldjFfNzQyLCBfX3AyXzc0MikpOyBcCiAgX19yZXRfNzQyOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFkbXVsbF9sYW5lcV9zMzIoX19wMF83NDMsIF9fcDFfNzQzLCBfX3AyXzc0MykgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Ml90IF9fczBfNzQzID0gX19wMF83NDM7IFwKICBpbnQzMng0X3QgX19zMV83NDMgPSBfX3AxXzc0MzsgXAogIGludDY0eDJfdCBfX3JldF83NDM7IFwKICBfX3JldF83NDMgPSB2cWRtdWxsX3MzMihfX3MwXzc0Mywgc3BsYXRfbGFuZXFfczMyKF9fczFfNzQzLCBfX3AyXzc0MykpOyBcCiAgX19yZXRfNzQzOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFkbXVsbF9sYW5lcV9zMzIoX19wMF83NDQsIF9fcDFfNzQ0LCBfX3AyXzc0NCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Ml90IF9fczBfNzQ0ID0gX19wMF83NDQ7IFwKICBpbnQzMng0X3QgX19zMV83NDQgPSBfX3AxXzc0NDsgXAogIGludDMyeDJfdCBfX3JldjBfNzQ0OyAgX19yZXYwXzc0NCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNzQ0LCBfX3MwXzc0NCwgMSwgMCk7IFwKICBpbnQzMng0X3QgX19yZXYxXzc0NDsgIF9fcmV2MV83NDQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzc0NCwgX19zMV83NDQsIDMsIDIsIDEsIDApOyBcCiAgaW50NjR4Ml90IF9fcmV0Xzc0NDsgXAogIF9fcmV0Xzc0NCA9IF9fbm9zd2FwX3ZxZG11bGxfczMyKF9fcmV2MF83NDQsIF9fbm9zd2FwX3NwbGF0X2xhbmVxX3MzMihfX3JldjFfNzQ0LCBfX3AyXzc0NCkpOyBcCiAgX19yZXRfNzQ0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNzQ0LCBfX3JldF83NDQsIDEsIDApOyBcCiAgX19yZXRfNzQ0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFkbXVsbF9sYW5lcV9zMTYoX19wMF83NDUsIF9fcDFfNzQ1LCBfX3AyXzc0NSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NF90IF9fczBfNzQ1ID0gX19wMF83NDU7IFwKICBpbnQxNng4X3QgX19zMV83NDUgPSBfX3AxXzc0NTsgXAogIGludDMyeDRfdCBfX3JldF83NDU7IFwKICBfX3JldF83NDUgPSB2cWRtdWxsX3MxNihfX3MwXzc0NSwgc3BsYXRfbGFuZXFfczE2KF9fczFfNzQ1LCBfX3AyXzc0NSkpOyBcCiAgX19yZXRfNzQ1OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFkbXVsbF9sYW5lcV9zMTYoX19wMF83NDYsIF9fcDFfNzQ2LCBfX3AyXzc0NikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NF90IF9fczBfNzQ2ID0gX19wMF83NDY7IFwKICBpbnQxNng4X3QgX19zMV83NDYgPSBfX3AxXzc0NjsgXAogIGludDE2eDRfdCBfX3JldjBfNzQ2OyAgX19yZXYwXzc0NiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNzQ2LCBfX3MwXzc0NiwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng4X3QgX19yZXYxXzc0NjsgIF9fcmV2MV83NDYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzc0NiwgX19zMV83NDYsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50MzJ4NF90IF9fcmV0Xzc0NjsgXAogIF9fcmV0Xzc0NiA9IF9fbm9zd2FwX3ZxZG11bGxfczE2KF9fcmV2MF83NDYsIF9fbm9zd2FwX3NwbGF0X2xhbmVxX3MxNihfX3JldjFfNzQ2LCBfX3AyXzc0NikpOyBcCiAgX19yZXRfNzQ2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNzQ2LCBfX3JldF83NDYsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfNzQ2OyBcCn0pCiNlbmRpZgoKX19haSBpbnQxNl90IHZxbW92bnNfczMyKGludDMyX3QgX19wMCkgewogIGludDE2X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZfdCkgX19idWlsdGluX25lb25fdnFtb3Zuc19zMzIoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MzJfdCB2cW1vdm5kX3M2NChpbnQ2NF90IF9fcDApIHsKICBpbnQzMl90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZxbW92bmRfczY0KF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDhfdCB2cW1vdm5oX3MxNihpbnQxNl90IF9fcDApIHsKICBpbnQ4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OF90KSBfX2J1aWx0aW5fbmVvbl92cW1vdm5oX3MxNihfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MTZfdCB2cW1vdm5zX3UzMih1aW50MzJfdCBfX3AwKSB7CiAgdWludDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZxbW92bnNfdTMyKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQzMl90IHZxbW92bmRfdTY0KHVpbnQ2NF90IF9fcDApIHsKICB1aW50MzJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJfdCkgX19idWlsdGluX25lb25fdnFtb3ZuZF91NjQoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDhfdCB2cW1vdm5oX3UxNih1aW50MTZfdCBfX3AwKSB7CiAgdWludDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OF90KSBfX2J1aWx0aW5fbmVvbl92cW1vdm5oX3UxNihfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDhfdCB2cW1vdm5faGlnaF91MzIodWludDE2eDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEpIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gdmNvbWJpbmVfdTE2KF9fcDAsIHZxbW92bl91MzIoX19wMSkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng4X3QgdnFtb3ZuX2hpZ2hfdTMyKHVpbnQxNng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxKSB7CiAgdWludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92Y29tYmluZV91MTYoX19yZXYwLCBfX25vc3dhcF92cW1vdm5fdTMyKF9fcmV2MSkpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZxbW92bl9oaWdoX3U2NCh1aW50MzJ4Ml90IF9fcDAsIHVpbnQ2NHgyX3QgX19wMSkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSB2Y29tYmluZV91MzIoX19wMCwgdnFtb3ZuX3U2NChfX3AxKSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2cW1vdm5faGlnaF91NjQodWludDMyeDJfdCBfX3AwLCB1aW50NjR4Ml90IF9fcDEpIHsKICB1aW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3Zjb21iaW5lX3UzMihfX3JldjAsIF9fbm9zd2FwX3ZxbW92bl91NjQoX19yZXYxKSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDE2X3QgdnFtb3ZuX2hpZ2hfdTE2KHVpbnQ4eDhfdCBfX3AwLCB1aW50MTZ4OF90IF9fcDEpIHsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gdmNvbWJpbmVfdTgoX19wMCwgdnFtb3ZuX3UxNihfX3AxKSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4MTZfdCB2cW1vdm5faGlnaF91MTYodWludDh4OF90IF9fcDAsIHVpbnQxNng4X3QgX19wMSkgewogIHVpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92Y29tYmluZV91OChfX3JldjAsIF9fbm9zd2FwX3ZxbW92bl91MTYoX19yZXYxKSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDhfdCB2cW1vdm5faGlnaF9zMzIoaW50MTZ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxKSB7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gdmNvbWJpbmVfczE2KF9fcDAsIHZxbW92bl9zMzIoX19wMSkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDhfdCB2cW1vdm5faGlnaF9zMzIoaW50MTZ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxKSB7CiAgaW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92Y29tYmluZV9zMTYoX19yZXYwLCBfX25vc3dhcF92cW1vdm5fczMyKF9fcmV2MSkpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMng0X3QgdnFtb3ZuX2hpZ2hfczY0KGludDMyeDJfdCBfX3AwLCBpbnQ2NHgyX3QgX19wMSkgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IHZjb21iaW5lX3MzMihfX3AwLCB2cW1vdm5fczY0KF9fcDEpKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMng0X3QgdnFtb3ZuX2hpZ2hfczY0KGludDMyeDJfdCBfX3AwLCBpbnQ2NHgyX3QgX19wMSkgewogIGludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBpbnQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdmNvbWJpbmVfczMyKF9fcmV2MCwgX19ub3N3YXBfdnFtb3ZuX3M2NChfX3JldjEpKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHgxNl90IHZxbW92bl9oaWdoX3MxNihpbnQ4eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IHZjb21iaW5lX3M4KF9fcDAsIHZxbW92bl9zMTYoX19wMSkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4MTZfdCB2cW1vdm5faGlnaF9zMTYoaW50OHg4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEpIHsKICBpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdmNvbWJpbmVfczgoX19yZXYwLCBfX25vc3dhcF92cW1vdm5fczE2KF9fcmV2MSkpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgpfX2FpIHVpbnQxNl90IHZxbW92dW5zX3MzMihpbnQzMl90IF9fcDApIHsKICB1aW50MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZfdCkgX19idWlsdGluX25lb25fdnFtb3Z1bnNfczMyKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQzMl90IHZxbW92dW5kX3M2NChpbnQ2NF90IF9fcDApIHsKICB1aW50MzJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJfdCkgX19idWlsdGluX25lb25fdnFtb3Z1bmRfczY0KF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ4X3QgdnFtb3Z1bmhfczE2KGludDE2X3QgX19wMCkgewogIHVpbnQ4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDhfdCkgX19idWlsdGluX25lb25fdnFtb3Z1bmhfczE2KF9fcDApOwogIHJldHVybiBfX3JldDsKfQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4OF90IHZxbW92dW5faGlnaF9zMzIodWludDE2eDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSB2Y29tYmluZV91MTYoKHVpbnQxNng0X3QpKF9fcDApLCB2cW1vdnVuX3MzMihfX3AxKSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDhfdCB2cW1vdnVuX2hpZ2hfczMyKHVpbnQxNng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEpIHsKICB1aW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdmNvbWJpbmVfdTE2KCh1aW50MTZ4NF90KShfX3JldjApLCBfX25vc3dhcF92cW1vdnVuX3MzMihfX3JldjEpKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDRfdCB2cW1vdnVuX2hpZ2hfczY0KHVpbnQzMngyX3QgX19wMCwgaW50NjR4Ml90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gdmNvbWJpbmVfdTMyKCh1aW50MzJ4Ml90KShfX3AwKSwgdnFtb3Z1bl9zNjQoX19wMSkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMng0X3QgdnFtb3Z1bl9oaWdoX3M2NCh1aW50MzJ4Ml90IF9fcDAsIGludDY0eDJfdCBfX3AxKSB7CiAgdWludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBpbnQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3Zjb21iaW5lX3UzMigodWludDMyeDJfdCkoX19yZXYwKSwgX19ub3N3YXBfdnFtb3Z1bl9zNjQoX19yZXYxKSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDE2X3QgdnFtb3Z1bl9oaWdoX3MxNih1aW50OHg4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEpIHsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gdmNvbWJpbmVfdTgoKHVpbnQ4eDhfdCkoX19wMCksIHZxbW92dW5fczE2KF9fcDEpKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHgxNl90IHZxbW92dW5faGlnaF9zMTYodWludDh4OF90IF9fcDAsIGludDE2eDhfdCBfX3AxKSB7CiAgdWludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdmNvbWJpbmVfdTgoKHVpbnQ4eDhfdCkoX19yZXYwKSwgX19ub3N3YXBfdnFtb3Z1bl9zMTYoX19yZXYxKSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDY0eDJfdCB2cW5lZ3FfczY0KGludDY0eDJfdCBfX3AwKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDJfdCkgX19idWlsdGluX25lb25fdnFuZWdxX3YoKGludDh4MTZfdClfX3AwLCAzNSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50NjR4Ml90IHZxbmVncV9zNjQoaW50NjR4Ml90IF9fcDApIHsKICBpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDJfdCkgX19idWlsdGluX25lb25fdnFuZWdxX3YoKGludDh4MTZfdClfX3JldjAsIDM1KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKX19haSBpbnQ2NHgxX3QgdnFuZWdfczY0KGludDY0eDFfdCBfX3AwKSB7CiAgaW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDFfdCkgX19idWlsdGluX25lb25fdnFuZWdfdigoaW50OHg4X3QpX19wMCwgMyk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50OF90IHZxbmVnYl9zOChpbnQ4X3QgX19wMCkgewogIGludDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4X3QpIF9fYnVpbHRpbl9uZW9uX3ZxbmVnYl9zOChfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQzMl90IHZxbmVnc19zMzIoaW50MzJfdCBfX3AwKSB7CiAgaW50MzJfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMl90KSBfX2J1aWx0aW5fbmVvbl92cW5lZ3NfczMyKF9fcDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDY0X3QgdnFuZWdkX3M2NChpbnQ2NF90IF9fcDApIHsKICBpbnQ2NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZxbmVnZF9zNjQoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MTZfdCB2cW5lZ2hfczE2KGludDE2X3QgX19wMCkgewogIGludDE2X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZfdCkgX19idWlsdGluX25lb25fdnFuZWdoX3MxNihfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQzMl90IHZxcmRtdWxoc19zMzIoaW50MzJfdCBfX3AwLCBpbnQzMl90IF9fcDEpIHsKICBpbnQzMl90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZxcmRtdWxoc19zMzIoX19wMCwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MTZfdCB2cXJkbXVsaGhfczE2KGludDE2X3QgX19wMCwgaW50MTZfdCBfX3AxKSB7CiAgaW50MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNl90KSBfX2J1aWx0aW5fbmVvbl92cXJkbXVsaGhfczE2KF9fcDAsIF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cXJkbXVsaHFfbGFuZV9zMzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczAgPSBfX3AwOyBcCiAgaW50MzJ4Ml90IF9fczEgPSBfX3AxOyBcCiAgaW50MzJ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92cXJkbXVsaHFfbGFuZV92KChpbnQ4eDE2X3QpX19zMCwgKGludDh4OF90KV9fczEsIF9fcDIsIDIpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cXJkbXVsaHFfbGFuZV9zMzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczAgPSBfX3AwOyBcCiAgaW50MzJ4Ml90IF9fczEgPSBfX3AxOyBcCiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDMsIDIsIDEsIDApOyBcCiAgaW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDEsIDApOyBcCiAgaW50MzJ4NF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92cXJkbXVsaHFfbGFuZV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCBfX3AyLCAyKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFyZG11bGhxX2xhbmVfczE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDhfdCBfX3MwID0gX19wMDsgXAogIGludDE2eDRfdCBfX3MxID0gX19wMTsgXAogIGludDE2eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDE2eDhfdCkgX19idWlsdGluX25lb25fdnFyZG11bGhxX2xhbmVfdigoaW50OHgxNl90KV9fczAsIChpbnQ4eDhfdClfX3MxLCBfX3AyLCAxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFyZG11bGhxX2xhbmVfczE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDhfdCBfX3MwID0gX19wMDsgXAogIGludDE2eDRfdCBfX3MxID0gX19wMTsgXAogIGludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDE2eDhfdCkgX19idWlsdGluX25lb25fdnFyZG11bGhxX2xhbmVfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgX19wMiwgMSk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZxcmRtdWxoX2xhbmVfczMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJfdCBfX3MwID0gX19wMDsgXAogIGludDMyeDJfdCBfX3MxID0gX19wMTsgXAogIGludDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdnFyZG11bGhfbGFuZV92KChpbnQ4eDhfdClfX3MwLCAoaW50OHg4X3QpX19zMSwgX19wMiwgMik7IFwKICBfX3JldDsgXAp9KQojZWxzZQojZGVmaW5lIHZxcmRtdWxoX2xhbmVfczMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJfdCBfX3MwID0gX19wMDsgXAogIGludDMyeDJfdCBfX3MxID0gX19wMTsgXAogIGludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAxLCAwKTsgXAogIGludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAxLCAwKTsgXAogIGludDMyeDJfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDMyeDJfdCkgX19idWlsdGluX25lb25fdnFyZG11bGhfbGFuZV92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIF9fcDIsIDIpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cXJkbXVsaF9sYW5lX3MxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQxNng0X3QgX19zMSA9IF9fcDE7IFwKICBpbnQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZxcmRtdWxoX2xhbmVfdigoaW50OHg4X3QpX19zMCwgKGludDh4OF90KV9fczEsIF9fcDIsIDEpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cXJkbXVsaF9sYW5lX3MxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQxNng0X3QgX19zMSA9IF9fcDE7IFwKICBpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZxcmRtdWxoX2xhbmVfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCBfX3AyLCAxKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFyZG11bGhzX2xhbmVfczMyKF9fcDBfNzQ3LCBfX3AxXzc0NywgX19wMl83NDcpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyX3QgX19zMF83NDcgPSBfX3AwXzc0NzsgXAogIGludDMyeDJfdCBfX3MxXzc0NyA9IF9fcDFfNzQ3OyBcCiAgaW50MzJfdCBfX3JldF83NDc7IFwKICBfX3JldF83NDcgPSB2cXJkbXVsaHNfczMyKF9fczBfNzQ3LCB2Z2V0X2xhbmVfczMyKF9fczFfNzQ3LCBfX3AyXzc0NykpOyBcCiAgX19yZXRfNzQ3OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFyZG11bGhzX2xhbmVfczMyKF9fcDBfNzQ4LCBfX3AxXzc0OCwgX19wMl83NDgpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyX3QgX19zMF83NDggPSBfX3AwXzc0ODsgXAogIGludDMyeDJfdCBfX3MxXzc0OCA9IF9fcDFfNzQ4OyBcCiAgaW50MzJ4Ml90IF9fcmV2MV83NDg7ICBfX3JldjFfNzQ4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV83NDgsIF9fczFfNzQ4LCAxLCAwKTsgXAogIGludDMyX3QgX19yZXRfNzQ4OyBcCiAgX19yZXRfNzQ4ID0gdnFyZG11bGhzX3MzMihfX3MwXzc0OCwgX19ub3N3YXBfdmdldF9sYW5lX3MzMihfX3JldjFfNzQ4LCBfX3AyXzc0OCkpOyBcCiAgX19yZXRfNzQ4OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFyZG11bGhoX2xhbmVfczE2KF9fcDBfNzQ5LCBfX3AxXzc0OSwgX19wMl83NDkpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2X3QgX19zMF83NDkgPSBfX3AwXzc0OTsgXAogIGludDE2eDRfdCBfX3MxXzc0OSA9IF9fcDFfNzQ5OyBcCiAgaW50MTZfdCBfX3JldF83NDk7IFwKICBfX3JldF83NDkgPSB2cXJkbXVsaGhfczE2KF9fczBfNzQ5LCB2Z2V0X2xhbmVfczE2KF9fczFfNzQ5LCBfX3AyXzc0OSkpOyBcCiAgX19yZXRfNzQ5OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFyZG11bGhoX2xhbmVfczE2KF9fcDBfNzUwLCBfX3AxXzc1MCwgX19wMl83NTApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2X3QgX19zMF83NTAgPSBfX3AwXzc1MDsgXAogIGludDE2eDRfdCBfX3MxXzc1MCA9IF9fcDFfNzUwOyBcCiAgaW50MTZ4NF90IF9fcmV2MV83NTA7ICBfX3JldjFfNzUwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV83NTAsIF9fczFfNzUwLCAzLCAyLCAxLCAwKTsgXAogIGludDE2X3QgX19yZXRfNzUwOyBcCiAgX19yZXRfNzUwID0gdnFyZG11bGhoX3MxNihfX3MwXzc1MCwgX19ub3N3YXBfdmdldF9sYW5lX3MxNihfX3JldjFfNzUwLCBfX3AyXzc1MCkpOyBcCiAgX19yZXRfNzUwOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFyZG11bGhzX2xhbmVxX3MzMihfX3AwXzc1MSwgX19wMV83NTEsIF9fcDJfNzUxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMl90IF9fczBfNzUxID0gX19wMF83NTE7IFwKICBpbnQzMng0X3QgX19zMV83NTEgPSBfX3AxXzc1MTsgXAogIGludDMyX3QgX19yZXRfNzUxOyBcCiAgX19yZXRfNzUxID0gdnFyZG11bGhzX3MzMihfX3MwXzc1MSwgdmdldHFfbGFuZV9zMzIoX19zMV83NTEsIF9fcDJfNzUxKSk7IFwKICBfX3JldF83NTE7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cXJkbXVsaHNfbGFuZXFfczMyKF9fcDBfNzUyLCBfX3AxXzc1MiwgX19wMl83NTIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyX3QgX19zMF83NTIgPSBfX3AwXzc1MjsgXAogIGludDMyeDRfdCBfX3MxXzc1MiA9IF9fcDFfNzUyOyBcCiAgaW50MzJ4NF90IF9fcmV2MV83NTI7ICBfX3JldjFfNzUyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV83NTIsIF9fczFfNzUyLCAzLCAyLCAxLCAwKTsgXAogIGludDMyX3QgX19yZXRfNzUyOyBcCiAgX19yZXRfNzUyID0gdnFyZG11bGhzX3MzMihfX3MwXzc1MiwgX19ub3N3YXBfdmdldHFfbGFuZV9zMzIoX19yZXYxXzc1MiwgX19wMl83NTIpKTsgXAogIF9fcmV0Xzc1MjsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZxcmRtdWxoaF9sYW5lcV9zMTYoX19wMF83NTMsIF9fcDFfNzUzLCBfX3AyXzc1MykgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZfdCBfX3MwXzc1MyA9IF9fcDBfNzUzOyBcCiAgaW50MTZ4OF90IF9fczFfNzUzID0gX19wMV83NTM7IFwKICBpbnQxNl90IF9fcmV0Xzc1MzsgXAogIF9fcmV0Xzc1MyA9IHZxcmRtdWxoaF9zMTYoX19zMF83NTMsIHZnZXRxX2xhbmVfczE2KF9fczFfNzUzLCBfX3AyXzc1MykpOyBcCiAgX19yZXRfNzUzOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFyZG11bGhoX2xhbmVxX3MxNihfX3AwXzc1NCwgX19wMV83NTQsIF9fcDJfNzU0KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNl90IF9fczBfNzU0ID0gX19wMF83NTQ7IFwKICBpbnQxNng4X3QgX19zMV83NTQgPSBfX3AxXzc1NDsgXAogIGludDE2eDhfdCBfX3JldjFfNzU0OyAgX19yZXYxXzc1NCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNzU0LCBfX3MxXzc1NCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNl90IF9fcmV0Xzc1NDsgXAogIF9fcmV0Xzc1NCA9IHZxcmRtdWxoaF9zMTYoX19zMF83NTQsIF9fbm9zd2FwX3ZnZXRxX2xhbmVfczE2KF9fcmV2MV83NTQsIF9fcDJfNzU0KSk7IFwKICBfX3JldF83NTQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cXJkbXVsaHFfbGFuZXFfczMyKF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDRfdCBfX3MwID0gX19wMDsgXAogIGludDMyeDRfdCBfX3MxID0gX19wMTsgXAogIGludDMyeDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDMyeDRfdCkgX19idWlsdGluX25lb25fdnFyZG11bGhxX2xhbmVxX3YoKGludDh4MTZfdClfX3MwLCAoaW50OHgxNl90KV9fczEsIF9fcDIsIDM0KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFyZG11bGhxX2xhbmVxX3MzMihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQzMng0X3QgX19zMSA9IF9fcDE7IFwKICBpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgMywgMiwgMSwgMCk7IFwKICBpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgMywgMiwgMSwgMCk7IFwKICBpbnQzMng0X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZxcmRtdWxocV9sYW5lcV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgX19wMiwgMzQpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cXJkbXVsaHFfbGFuZXFfczE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDhfdCBfX3MwID0gX19wMDsgXAogIGludDE2eDhfdCBfX3MxID0gX19wMTsgXAogIGludDE2eDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDE2eDhfdCkgX19idWlsdGluX25lb25fdnFyZG11bGhxX2xhbmVxX3YoKGludDh4MTZfdClfX3MwLCAoaW50OHgxNl90KV9fczEsIF9fcDIsIDMzKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFyZG11bGhxX2xhbmVxX3MxNihfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng4X3QgX19zMCA9IF9fcDA7IFwKICBpbnQxNng4X3QgX19zMSA9IF9fcDE7IFwKICBpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMCwgX19zMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMSwgX19zMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng4X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZxcmRtdWxocV9sYW5lcV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgX19wMiwgMzMpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cXJkbXVsaF9sYW5lcV9zMzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Ml90IF9fczAgPSBfX3AwOyBcCiAgaW50MzJ4NF90IF9fczEgPSBfX3AxOyBcCiAgaW50MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cXJkbXVsaF9sYW5lcV92KChpbnQ4eDhfdClfX3MwLCAoaW50OHgxNl90KV9fczEsIF9fcDIsIDIpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cXJkbXVsaF9sYW5lcV9zMzIoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Ml90IF9fczAgPSBfX3AwOyBcCiAgaW50MzJ4NF90IF9fczEgPSBfX3AxOyBcCiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDEsIDApOyBcCiAgaW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDMsIDIsIDEsIDApOyBcCiAgaW50MzJ4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92cXJkbXVsaF9sYW5lcV92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCBfX3AyLCAyKTsgXAogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsgXAogIF9fcmV0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFyZG11bGhfbGFuZXFfczE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDRfdCBfX3MwID0gX19wMDsgXAogIGludDE2eDhfdCBfX3MxID0gX19wMTsgXAogIGludDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdnFyZG11bGhfbGFuZXFfdigoaW50OHg4X3QpX19zMCwgKGludDh4MTZfdClfX3MxLCBfX3AyLCAxKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFyZG11bGhfbGFuZXFfczE2KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDRfdCBfX3MwID0gX19wMDsgXAogIGludDE2eDhfdCBfX3MxID0gX19wMTsgXAogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwLCBfX3MwLCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDE2eDRfdCkgX19idWlsdGluX25lb25fdnFyZG11bGhfbGFuZXFfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgX19wMiwgMSk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCl9fYWkgdWludDhfdCB2cXJzaGxiX3U4KHVpbnQ4X3QgX19wMCwgaW50OF90IF9fcDEpIHsKICB1aW50OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4X3QpIF9fYnVpbHRpbl9uZW9uX3ZxcnNobGJfdTgoX19wMCwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDMyX3QgdnFyc2hsc191MzIodWludDMyX3QgX19wMCwgaW50MzJfdCBfX3AxKSB7CiAgdWludDMyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZxcnNobHNfdTMyKF9fcDAsIF9fcDEpOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ2NF90IHZxcnNobGRfdTY0KHVpbnQ2NF90IF9fcDAsIGludDY0X3QgX19wMSkgewogIHVpbnQ2NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NF90KSBfX2J1aWx0aW5fbmVvbl92cXJzaGxkX3U2NChfX3AwLCBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MTZfdCB2cXJzaGxoX3UxNih1aW50MTZfdCBfX3AwLCBpbnQxNl90IF9fcDEpIHsKICB1aW50MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZfdCkgX19idWlsdGluX25lb25fdnFyc2hsaF91MTYoX19wMCwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50OF90IHZxcnNobGJfczgoaW50OF90IF9fcDAsIGludDhfdCBfX3AxKSB7CiAgaW50OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDhfdCkgX19idWlsdGluX25lb25fdnFyc2hsYl9zOChfX3AwLCBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQzMl90IHZxcnNobHNfczMyKGludDMyX3QgX19wMCwgaW50MzJfdCBfX3AxKSB7CiAgaW50MzJfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMl90KSBfX2J1aWx0aW5fbmVvbl92cXJzaGxzX3MzMihfX3AwLCBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQ2NF90IHZxcnNobGRfczY0KGludDY0X3QgX19wMCwgaW50NjRfdCBfX3AxKSB7CiAgaW50NjRfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NF90KSBfX2J1aWx0aW5fbmVvbl92cXJzaGxkX3M2NChfX3AwLCBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQxNl90IHZxcnNobGhfczE2KGludDE2X3QgX19wMCwgaW50MTZfdCBfX3AxKSB7CiAgaW50MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNl90KSBfX2J1aWx0aW5fbmVvbl92cXJzaGxoX3MxNihfX3AwLCBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFyc2hybl9oaWdoX25fdTMyKF9fcDBfNzU1LCBfX3AxXzc1NSwgX19wMl83NTUpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng0X3QgX19zMF83NTUgPSBfX3AwXzc1NTsgXAogIHVpbnQzMng0X3QgX19zMV83NTUgPSBfX3AxXzc1NTsgXAogIHVpbnQxNng4X3QgX19yZXRfNzU1OyBcCiAgX19yZXRfNzU1ID0gKHVpbnQxNng4X3QpKHZjb21iaW5lX3UxNigodWludDE2eDRfdCkoX19zMF83NTUpLCAodWludDE2eDRfdCkodnFyc2hybl9uX3UzMihfX3MxXzc1NSwgX19wMl83NTUpKSkpOyBcCiAgX19yZXRfNzU1OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFyc2hybl9oaWdoX25fdTMyKF9fcDBfNzU2LCBfX3AxXzc1NiwgX19wMl83NTYpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng0X3QgX19zMF83NTYgPSBfX3AwXzc1NjsgXAogIHVpbnQzMng0X3QgX19zMV83NTYgPSBfX3AxXzc1NjsgXAogIHVpbnQxNng0X3QgX19yZXYwXzc1NjsgIF9fcmV2MF83NTYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzc1NiwgX19zMF83NTYsIDMsIDIsIDEsIDApOyBcCiAgdWludDMyeDRfdCBfX3JldjFfNzU2OyAgX19yZXYxXzc1NiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNzU2LCBfX3MxXzc1NiwgMywgMiwgMSwgMCk7IFwKICB1aW50MTZ4OF90IF9fcmV0Xzc1NjsgXAogIF9fcmV0Xzc1NiA9ICh1aW50MTZ4OF90KShfX25vc3dhcF92Y29tYmluZV91MTYoKHVpbnQxNng0X3QpKF9fcmV2MF83NTYpLCAodWludDE2eDRfdCkoX19ub3N3YXBfdnFyc2hybl9uX3UzMihfX3JldjFfNzU2LCBfX3AyXzc1NikpKSk7IFwKICBfX3JldF83NTYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF83NTYsIF9fcmV0Xzc1NiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF83NTY7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cXJzaHJuX2hpZ2hfbl91NjQoX19wMF83NTcsIF9fcDFfNzU3LCBfX3AyXzc1NykgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDJfdCBfX3MwXzc1NyA9IF9fcDBfNzU3OyBcCiAgdWludDY0eDJfdCBfX3MxXzc1NyA9IF9fcDFfNzU3OyBcCiAgdWludDMyeDRfdCBfX3JldF83NTc7IFwKICBfX3JldF83NTcgPSAodWludDMyeDRfdCkodmNvbWJpbmVfdTMyKCh1aW50MzJ4Ml90KShfX3MwXzc1NyksICh1aW50MzJ4Ml90KSh2cXJzaHJuX25fdTY0KF9fczFfNzU3LCBfX3AyXzc1NykpKSk7IFwKICBfX3JldF83NTc7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cXJzaHJuX2hpZ2hfbl91NjQoX19wMF83NTgsIF9fcDFfNzU4LCBfX3AyXzc1OCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDJfdCBfX3MwXzc1OCA9IF9fcDBfNzU4OyBcCiAgdWludDY0eDJfdCBfX3MxXzc1OCA9IF9fcDFfNzU4OyBcCiAgdWludDMyeDJfdCBfX3JldjBfNzU4OyAgX19yZXYwXzc1OCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNzU4LCBfX3MwXzc1OCwgMSwgMCk7IFwKICB1aW50NjR4Ml90IF9fcmV2MV83NTg7ICBfX3JldjFfNzU4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV83NTgsIF9fczFfNzU4LCAxLCAwKTsgXAogIHVpbnQzMng0X3QgX19yZXRfNzU4OyBcCiAgX19yZXRfNzU4ID0gKHVpbnQzMng0X3QpKF9fbm9zd2FwX3Zjb21iaW5lX3UzMigodWludDMyeDJfdCkoX19yZXYwXzc1OCksICh1aW50MzJ4Ml90KShfX25vc3dhcF92cXJzaHJuX25fdTY0KF9fcmV2MV83NTgsIF9fcDJfNzU4KSkpKTsgXAogIF9fcmV0Xzc1OCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0Xzc1OCwgX19yZXRfNzU4LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0Xzc1ODsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZxcnNocm5faGlnaF9uX3UxNihfX3AwXzc1OSwgX19wMV83NTksIF9fcDJfNzU5KSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHg4X3QgX19zMF83NTkgPSBfX3AwXzc1OTsgXAogIHVpbnQxNng4X3QgX19zMV83NTkgPSBfX3AxXzc1OTsgXAogIHVpbnQ4eDE2X3QgX19yZXRfNzU5OyBcCiAgX19yZXRfNzU5ID0gKHVpbnQ4eDE2X3QpKHZjb21iaW5lX3U4KCh1aW50OHg4X3QpKF9fczBfNzU5KSwgKHVpbnQ4eDhfdCkodnFyc2hybl9uX3UxNihfX3MxXzc1OSwgX19wMl83NTkpKSkpOyBcCiAgX19yZXRfNzU5OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFyc2hybl9oaWdoX25fdTE2KF9fcDBfNzYwLCBfX3AxXzc2MCwgX19wMl83NjApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDhfdCBfX3MwXzc2MCA9IF9fcDBfNzYwOyBcCiAgdWludDE2eDhfdCBfX3MxXzc2MCA9IF9fcDFfNzYwOyBcCiAgdWludDh4OF90IF9fcmV2MF83NjA7ICBfX3JldjBfNzYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF83NjAsIF9fczBfNzYwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQxNng4X3QgX19yZXYxXzc2MDsgIF9fcmV2MV83NjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzc2MCwgX19zMV83NjAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDh4MTZfdCBfX3JldF83NjA7IFwKICBfX3JldF83NjAgPSAodWludDh4MTZfdCkoX19ub3N3YXBfdmNvbWJpbmVfdTgoKHVpbnQ4eDhfdCkoX19yZXYwXzc2MCksICh1aW50OHg4X3QpKF9fbm9zd2FwX3ZxcnNocm5fbl91MTYoX19yZXYxXzc2MCwgX19wMl83NjApKSkpOyBcCiAgX19yZXRfNzYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNzYwLCBfX3JldF83NjAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfNzYwOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFyc2hybl9oaWdoX25fczMyKF9fcDBfNzYxLCBfX3AxXzc2MSwgX19wMl83NjEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDRfdCBfX3MwXzc2MSA9IF9fcDBfNzYxOyBcCiAgaW50MzJ4NF90IF9fczFfNzYxID0gX19wMV83NjE7IFwKICBpbnQxNng4X3QgX19yZXRfNzYxOyBcCiAgX19yZXRfNzYxID0gKGludDE2eDhfdCkodmNvbWJpbmVfczE2KChpbnQxNng0X3QpKF9fczBfNzYxKSwgKGludDE2eDRfdCkodnFyc2hybl9uX3MzMihfX3MxXzc2MSwgX19wMl83NjEpKSkpOyBcCiAgX19yZXRfNzYxOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFyc2hybl9oaWdoX25fczMyKF9fcDBfNzYyLCBfX3AxXzc2MiwgX19wMl83NjIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDRfdCBfX3MwXzc2MiA9IF9fcDBfNzYyOyBcCiAgaW50MzJ4NF90IF9fczFfNzYyID0gX19wMV83NjI7IFwKICBpbnQxNng0X3QgX19yZXYwXzc2MjsgIF9fcmV2MF83NjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzc2MiwgX19zMF83NjIsIDMsIDIsIDEsIDApOyBcCiAgaW50MzJ4NF90IF9fcmV2MV83NjI7ICBfX3JldjFfNzYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV83NjIsIF9fczFfNzYyLCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDhfdCBfX3JldF83NjI7IFwKICBfX3JldF83NjIgPSAoaW50MTZ4OF90KShfX25vc3dhcF92Y29tYmluZV9zMTYoKGludDE2eDRfdCkoX19yZXYwXzc2MiksIChpbnQxNng0X3QpKF9fbm9zd2FwX3ZxcnNocm5fbl9zMzIoX19yZXYxXzc2MiwgX19wMl83NjIpKSkpOyBcCiAgX19yZXRfNzYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNzYyLCBfX3JldF83NjIsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfNzYyOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFyc2hybl9oaWdoX25fczY0KF9fcDBfNzYzLCBfX3AxXzc2MywgX19wMl83NjMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJfdCBfX3MwXzc2MyA9IF9fcDBfNzYzOyBcCiAgaW50NjR4Ml90IF9fczFfNzYzID0gX19wMV83NjM7IFwKICBpbnQzMng0X3QgX19yZXRfNzYzOyBcCiAgX19yZXRfNzYzID0gKGludDMyeDRfdCkodmNvbWJpbmVfczMyKChpbnQzMngyX3QpKF9fczBfNzYzKSwgKGludDMyeDJfdCkodnFyc2hybl9uX3M2NChfX3MxXzc2MywgX19wMl83NjMpKSkpOyBcCiAgX19yZXRfNzYzOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFyc2hybl9oaWdoX25fczY0KF9fcDBfNzY0LCBfX3AxXzc2NCwgX19wMl83NjQpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJfdCBfX3MwXzc2NCA9IF9fcDBfNzY0OyBcCiAgaW50NjR4Ml90IF9fczFfNzY0ID0gX19wMV83NjQ7IFwKICBpbnQzMngyX3QgX19yZXYwXzc2NDsgIF9fcmV2MF83NjQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzc2NCwgX19zMF83NjQsIDEsIDApOyBcCiAgaW50NjR4Ml90IF9fcmV2MV83NjQ7ICBfX3JldjFfNzY0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV83NjQsIF9fczFfNzY0LCAxLCAwKTsgXAogIGludDMyeDRfdCBfX3JldF83NjQ7IFwKICBfX3JldF83NjQgPSAoaW50MzJ4NF90KShfX25vc3dhcF92Y29tYmluZV9zMzIoKGludDMyeDJfdCkoX19yZXYwXzc2NCksIChpbnQzMngyX3QpKF9fbm9zd2FwX3ZxcnNocm5fbl9zNjQoX19yZXYxXzc2NCwgX19wMl83NjQpKSkpOyBcCiAgX19yZXRfNzY0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNzY0LCBfX3JldF83NjQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfNzY0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFyc2hybl9oaWdoX25fczE2KF9fcDBfNzY1LCBfX3AxXzc2NSwgX19wMl83NjUpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4OF90IF9fczBfNzY1ID0gX19wMF83NjU7IFwKICBpbnQxNng4X3QgX19zMV83NjUgPSBfX3AxXzc2NTsgXAogIGludDh4MTZfdCBfX3JldF83NjU7IFwKICBfX3JldF83NjUgPSAoaW50OHgxNl90KSh2Y29tYmluZV9zOCgoaW50OHg4X3QpKF9fczBfNzY1KSwgKGludDh4OF90KSh2cXJzaHJuX25fczE2KF9fczFfNzY1LCBfX3AyXzc2NSkpKSk7IFwKICBfX3JldF83NjU7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cXJzaHJuX2hpZ2hfbl9zMTYoX19wMF83NjYsIF9fcDFfNzY2LCBfX3AyXzc2NikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHg4X3QgX19zMF83NjYgPSBfX3AwXzc2NjsgXAogIGludDE2eDhfdCBfX3MxXzc2NiA9IF9fcDFfNzY2OyBcCiAgaW50OHg4X3QgX19yZXYwXzc2NjsgIF9fcmV2MF83NjYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzc2NiwgX19zMF83NjYsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4OF90IF9fcmV2MV83NjY7ICBfX3JldjFfNzY2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV83NjYsIF9fczFfNzY2LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDh4MTZfdCBfX3JldF83NjY7IFwKICBfX3JldF83NjYgPSAoaW50OHgxNl90KShfX25vc3dhcF92Y29tYmluZV9zOCgoaW50OHg4X3QpKF9fcmV2MF83NjYpLCAoaW50OHg4X3QpKF9fbm9zd2FwX3ZxcnNocm5fbl9zMTYoX19yZXYxXzc2NiwgX19wMl83NjYpKSkpOyBcCiAgX19yZXRfNzY2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNzY2LCBfX3JldF83NjYsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfNzY2OyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2cXJzaHJuc19uX3UzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJfdCBfX3MwID0gX19wMDsgXAogIHVpbnQxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZxcnNocm5zX25fdTMyKF9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2cXJzaHJuZF9uX3U2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjRfdCBfX3MwID0gX19wMDsgXAogIHVpbnQzMl90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZxcnNocm5kX25fdTY0KF9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2cXJzaHJuaF9uX3UxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ4X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50OF90KSBfX2J1aWx0aW5fbmVvbl92cXJzaHJuaF9uX3UxNihfX3MwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdnFyc2hybnNfbl9zMzIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJfdCBfX3MwID0gX19wMDsgXAogIGludDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQxNl90KSBfX2J1aWx0aW5fbmVvbl92cXJzaHJuc19uX3MzMihfX3MwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdnFyc2hybmRfbl9zNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjRfdCBfX3MwID0gX19wMDsgXAogIGludDMyX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQzMl90KSBfX2J1aWx0aW5fbmVvbl92cXJzaHJuZF9uX3M2NChfX3MwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdnFyc2hybmhfbl9zMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZfdCBfX3MwID0gX19wMDsgXAogIGludDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDhfdCkgX19idWlsdGluX25lb25fdnFyc2hybmhfbl9zMTYoX19zMCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cXJzaHJ1bl9oaWdoX25fczMyKF9fcDBfNzY3LCBfX3AxXzc2NywgX19wMl83NjcpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDRfdCBfX3MwXzc2NyA9IF9fcDBfNzY3OyBcCiAgaW50MzJ4NF90IF9fczFfNzY3ID0gX19wMV83Njc7IFwKICBpbnQxNng4X3QgX19yZXRfNzY3OyBcCiAgX19yZXRfNzY3ID0gKGludDE2eDhfdCkodmNvbWJpbmVfczE2KChpbnQxNng0X3QpKF9fczBfNzY3KSwgKGludDE2eDRfdCkodnFyc2hydW5fbl9zMzIoX19zMV83NjcsIF9fcDJfNzY3KSkpKTsgXAogIF9fcmV0Xzc2NzsgXAp9KQojZWxzZQojZGVmaW5lIHZxcnNocnVuX2hpZ2hfbl9zMzIoX19wMF83NjgsIF9fcDFfNzY4LCBfX3AyXzc2OCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NF90IF9fczBfNzY4ID0gX19wMF83Njg7IFwKICBpbnQzMng0X3QgX19zMV83NjggPSBfX3AxXzc2ODsgXAogIGludDE2eDRfdCBfX3JldjBfNzY4OyAgX19yZXYwXzc2OCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNzY4LCBfX3MwXzc2OCwgMywgMiwgMSwgMCk7IFwKICBpbnQzMng0X3QgX19yZXYxXzc2ODsgIF9fcmV2MV83NjggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzc2OCwgX19zMV83NjgsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4OF90IF9fcmV0Xzc2ODsgXAogIF9fcmV0Xzc2OCA9IChpbnQxNng4X3QpKF9fbm9zd2FwX3Zjb21iaW5lX3MxNigoaW50MTZ4NF90KShfX3JldjBfNzY4KSwgKGludDE2eDRfdCkoX19ub3N3YXBfdnFyc2hydW5fbl9zMzIoX19yZXYxXzc2OCwgX19wMl83NjgpKSkpOyBcCiAgX19yZXRfNzY4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNzY4LCBfX3JldF83NjgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfNzY4OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFyc2hydW5faGlnaF9uX3M2NChfX3AwXzc2OSwgX19wMV83NjksIF9fcDJfNzY5KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMngyX3QgX19zMF83NjkgPSBfX3AwXzc2OTsgXAogIGludDY0eDJfdCBfX3MxXzc2OSA9IF9fcDFfNzY5OyBcCiAgaW50MzJ4NF90IF9fcmV0Xzc2OTsgXAogIF9fcmV0Xzc2OSA9IChpbnQzMng0X3QpKHZjb21iaW5lX3MzMigoaW50MzJ4Ml90KShfX3MwXzc2OSksIChpbnQzMngyX3QpKHZxcnNocnVuX25fczY0KF9fczFfNzY5LCBfX3AyXzc2OSkpKSk7IFwKICBfX3JldF83Njk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cXJzaHJ1bl9oaWdoX25fczY0KF9fcDBfNzcwLCBfX3AxXzc3MCwgX19wMl83NzApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJfdCBfX3MwXzc3MCA9IF9fcDBfNzcwOyBcCiAgaW50NjR4Ml90IF9fczFfNzcwID0gX19wMV83NzA7IFwKICBpbnQzMngyX3QgX19yZXYwXzc3MDsgIF9fcmV2MF83NzAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzc3MCwgX19zMF83NzAsIDEsIDApOyBcCiAgaW50NjR4Ml90IF9fcmV2MV83NzA7ICBfX3JldjFfNzcwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV83NzAsIF9fczFfNzcwLCAxLCAwKTsgXAogIGludDMyeDRfdCBfX3JldF83NzA7IFwKICBfX3JldF83NzAgPSAoaW50MzJ4NF90KShfX25vc3dhcF92Y29tYmluZV9zMzIoKGludDMyeDJfdCkoX19yZXYwXzc3MCksIChpbnQzMngyX3QpKF9fbm9zd2FwX3ZxcnNocnVuX25fczY0KF9fcmV2MV83NzAsIF9fcDJfNzcwKSkpKTsgXAogIF9fcmV0Xzc3MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0Xzc3MCwgX19yZXRfNzcwLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0Xzc3MDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZxcnNocnVuX2hpZ2hfbl9zMTYoX19wMF83NzEsIF9fcDFfNzcxLCBfX3AyXzc3MSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHg4X3QgX19zMF83NzEgPSBfX3AwXzc3MTsgXAogIGludDE2eDhfdCBfX3MxXzc3MSA9IF9fcDFfNzcxOyBcCiAgaW50OHgxNl90IF9fcmV0Xzc3MTsgXAogIF9fcmV0Xzc3MSA9IChpbnQ4eDE2X3QpKHZjb21iaW5lX3M4KChpbnQ4eDhfdCkoX19zMF83NzEpLCAoaW50OHg4X3QpKHZxcnNocnVuX25fczE2KF9fczFfNzcxLCBfX3AyXzc3MSkpKSk7IFwKICBfX3JldF83NzE7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cXJzaHJ1bl9oaWdoX25fczE2KF9fcDBfNzcyLCBfX3AxXzc3MiwgX19wMl83NzIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4OF90IF9fczBfNzcyID0gX19wMF83NzI7IFwKICBpbnQxNng4X3QgX19zMV83NzIgPSBfX3AxXzc3MjsgXAogIGludDh4OF90IF9fcmV2MF83NzI7ICBfX3JldjBfNzcyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF83NzIsIF9fczBfNzcyLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDhfdCBfX3JldjFfNzcyOyAgX19yZXYxXzc3MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNzcyLCBfX3MxXzc3MiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQ4eDE2X3QgX19yZXRfNzcyOyBcCiAgX19yZXRfNzcyID0gKGludDh4MTZfdCkoX19ub3N3YXBfdmNvbWJpbmVfczgoKGludDh4OF90KShfX3JldjBfNzcyKSwgKGludDh4OF90KShfX25vc3dhcF92cXJzaHJ1bl9uX3MxNihfX3JldjFfNzcyLCBfX3AyXzc3MikpKSk7IFwKICBfX3JldF83NzIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF83NzIsIF9fcmV0Xzc3MiwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF83NzI7IFwKfSkKI2VuZGlmCgojZGVmaW5lIHZxcnNocnVuc19uX3MzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMl90IF9fczAgPSBfX3AwOyBcCiAgaW50MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZxcnNocnVuc19uX3MzMihfX3MwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdnFyc2hydW5kX25fczY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQzMl90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJfdCkgX19idWlsdGluX25lb25fdnFyc2hydW5kX25fczY0KF9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2cXJzaHJ1bmhfbl9zMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZfdCBfX3MwID0gX19wMDsgXAogIGludDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDhfdCkgX19idWlsdGluX25lb25fdnFyc2hydW5oX25fczE2KF9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKX19haSB1aW50OF90IHZxc2hsYl91OCh1aW50OF90IF9fcDAsIGludDhfdCBfX3AxKSB7CiAgdWludDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OF90KSBfX2J1aWx0aW5fbmVvbl92cXNobGJfdTgoX19wMCwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDMyX3QgdnFzaGxzX3UzMih1aW50MzJfdCBfX3AwLCBpbnQzMl90IF9fcDEpIHsKICB1aW50MzJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJfdCkgX19idWlsdGluX25lb25fdnFzaGxzX3UzMihfX3AwLCBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50NjRfdCB2cXNobGRfdTY0KHVpbnQ2NF90IF9fcDAsIGludDY0X3QgX19wMSkgewogIHVpbnQ2NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NF90KSBfX2J1aWx0aW5fbmVvbl92cXNobGRfdTY0KF9fcDAsIF9fcDEpOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQxNl90IHZxc2hsaF91MTYodWludDE2X3QgX19wMCwgaW50MTZfdCBfX3AxKSB7CiAgdWludDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2X3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hsaF91MTYoX19wMCwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50OF90IHZxc2hsYl9zOChpbnQ4X3QgX19wMCwgaW50OF90IF9fcDEpIHsKICBpbnQ4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OF90KSBfX2J1aWx0aW5fbmVvbl92cXNobGJfczgoX19wMCwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MzJfdCB2cXNobHNfczMyKGludDMyX3QgX19wMCwgaW50MzJfdCBfX3AxKSB7CiAgaW50MzJfdCBfX3JldDsKICBfX3JldCA9IChpbnQzMl90KSBfX2J1aWx0aW5fbmVvbl92cXNobHNfczMyKF9fcDAsIF9fcDEpOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDY0X3QgdnFzaGxkX3M2NChpbnQ2NF90IF9fcDAsIGludDY0X3QgX19wMSkgewogIGludDY0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50NjRfdCkgX19idWlsdGluX25lb25fdnFzaGxkX3M2NChfX3AwLCBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQxNl90IHZxc2hsaF9zMTYoaW50MTZfdCBfX3AwLCBpbnQxNl90IF9fcDEpIHsKICBpbnQxNl90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2X3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hsaF9zMTYoX19wMCwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNkZWZpbmUgdnFzaGxiX25fdTgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDhfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ4X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50OF90KSBfX2J1aWx0aW5fbmVvbl92cXNobGJfbl91OChfX3MwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdnFzaGxzX25fdTMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMl90IF9fczAgPSBfX3AwOyBcCiAgdWludDMyX3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MzJfdCkgX19idWlsdGluX25lb25fdnFzaGxzX25fdTMyKF9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2cXNobGRfbl91NjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0X3QgX19zMCA9IF9fcDA7IFwKICB1aW50NjRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ2NF90KSBfX2J1aWx0aW5fbmVvbl92cXNobGRfbl91NjQoX19zMCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZxc2hsaF9uX3UxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZfdCBfX3MwID0gX19wMDsgXAogIHVpbnQxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDE2X3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hsaF9uX3UxNihfX3MwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdnFzaGxiX25fczgoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OF90IF9fczAgPSBfX3AwOyBcCiAgaW50OF90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50OF90KSBfX2J1aWx0aW5fbmVvbl92cXNobGJfbl9zOChfX3MwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdnFzaGxzX25fczMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyX3QgX19zMCA9IF9fcDA7IFwKICBpbnQzMl90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJfdCkgX19idWlsdGluX25lb25fdnFzaGxzX25fczMyKF9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2cXNobGRfbl9zNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjRfdCBfX3MwID0gX19wMDsgXAogIGludDY0X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ2NF90KSBfX2J1aWx0aW5fbmVvbl92cXNobGRfbl9zNjQoX19zMCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZxc2hsaF9uX3MxNihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNl90IF9fczAgPSBfX3AwOyBcCiAgaW50MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDE2X3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hsaF9uX3MxNihfX3MwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdnFzaGx1Yl9uX3M4KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDhfdCBfX3MwID0gX19wMDsgXAogIGludDhfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDhfdCkgX19idWlsdGluX25lb25fdnFzaGx1Yl9uX3M4KF9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2cXNobHVzX25fczMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyX3QgX19zMCA9IF9fcDA7IFwKICBpbnQzMl90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJfdCkgX19idWlsdGluX25lb25fdnFzaGx1c19uX3MzMihfX3MwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdnFzaGx1ZF9uX3M2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NF90IF9fczAgPSBfX3AwOyBcCiAgaW50NjRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hsdWRfbl9zNjQoX19zMCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZxc2hsdWhfbl9zMTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZfdCBfX3MwID0gX19wMDsgXAogIGludDE2X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQxNl90KSBfX2J1aWx0aW5fbmVvbl92cXNobHVoX25fczE2KF9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFzaHJuX2hpZ2hfbl91MzIoX19wMF83NzMsIF9fcDFfNzczLCBfX3AyXzc3MykgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDRfdCBfX3MwXzc3MyA9IF9fcDBfNzczOyBcCiAgdWludDMyeDRfdCBfX3MxXzc3MyA9IF9fcDFfNzczOyBcCiAgdWludDE2eDhfdCBfX3JldF83NzM7IFwKICBfX3JldF83NzMgPSAodWludDE2eDhfdCkodmNvbWJpbmVfdTE2KCh1aW50MTZ4NF90KShfX3MwXzc3MyksICh1aW50MTZ4NF90KSh2cXNocm5fbl91MzIoX19zMV83NzMsIF9fcDJfNzczKSkpKTsgXAogIF9fcmV0Xzc3MzsgXAp9KQojZWxzZQojZGVmaW5lIHZxc2hybl9oaWdoX25fdTMyKF9fcDBfNzc0LCBfX3AxXzc3NCwgX19wMl83NzQpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng0X3QgX19zMF83NzQgPSBfX3AwXzc3NDsgXAogIHVpbnQzMng0X3QgX19zMV83NzQgPSBfX3AxXzc3NDsgXAogIHVpbnQxNng0X3QgX19yZXYwXzc3NDsgIF9fcmV2MF83NzQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzc3NCwgX19zMF83NzQsIDMsIDIsIDEsIDApOyBcCiAgdWludDMyeDRfdCBfX3JldjFfNzc0OyAgX19yZXYxXzc3NCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNzc0LCBfX3MxXzc3NCwgMywgMiwgMSwgMCk7IFwKICB1aW50MTZ4OF90IF9fcmV0Xzc3NDsgXAogIF9fcmV0Xzc3NCA9ICh1aW50MTZ4OF90KShfX25vc3dhcF92Y29tYmluZV91MTYoKHVpbnQxNng0X3QpKF9fcmV2MF83NzQpLCAodWludDE2eDRfdCkoX19ub3N3YXBfdnFzaHJuX25fdTMyKF9fcmV2MV83NzQsIF9fcDJfNzc0KSkpKTsgXAogIF9fcmV0Xzc3NCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0Xzc3NCwgX19yZXRfNzc0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0Xzc3NDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZxc2hybl9oaWdoX25fdTY0KF9fcDBfNzc1LCBfX3AxXzc3NSwgX19wMl83NzUpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMngyX3QgX19zMF83NzUgPSBfX3AwXzc3NTsgXAogIHVpbnQ2NHgyX3QgX19zMV83NzUgPSBfX3AxXzc3NTsgXAogIHVpbnQzMng0X3QgX19yZXRfNzc1OyBcCiAgX19yZXRfNzc1ID0gKHVpbnQzMng0X3QpKHZjb21iaW5lX3UzMigodWludDMyeDJfdCkoX19zMF83NzUpLCAodWludDMyeDJfdCkodnFzaHJuX25fdTY0KF9fczFfNzc1LCBfX3AyXzc3NSkpKSk7IFwKICBfX3JldF83NzU7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cXNocm5faGlnaF9uX3U2NChfX3AwXzc3NiwgX19wMV83NzYsIF9fcDJfNzc2KSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4Ml90IF9fczBfNzc2ID0gX19wMF83NzY7IFwKICB1aW50NjR4Ml90IF9fczFfNzc2ID0gX19wMV83NzY7IFwKICB1aW50MzJ4Ml90IF9fcmV2MF83NzY7ICBfX3JldjBfNzc2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF83NzYsIF9fczBfNzc2LCAxLCAwKTsgXAogIHVpbnQ2NHgyX3QgX19yZXYxXzc3NjsgIF9fcmV2MV83NzYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzc3NiwgX19zMV83NzYsIDEsIDApOyBcCiAgdWludDMyeDRfdCBfX3JldF83NzY7IFwKICBfX3JldF83NzYgPSAodWludDMyeDRfdCkoX19ub3N3YXBfdmNvbWJpbmVfdTMyKCh1aW50MzJ4Ml90KShfX3JldjBfNzc2KSwgKHVpbnQzMngyX3QpKF9fbm9zd2FwX3Zxc2hybl9uX3U2NChfX3JldjFfNzc2LCBfX3AyXzc3NikpKSk7IFwKICBfX3JldF83NzYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF83NzYsIF9fcmV0Xzc3NiwgMywgMiwgMSwgMCk7IFwKICBfX3JldF83NzY7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cXNocm5faGlnaF9uX3UxNihfX3AwXzc3NywgX19wMV83NzcsIF9fcDJfNzc3KSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHg4X3QgX19zMF83NzcgPSBfX3AwXzc3NzsgXAogIHVpbnQxNng4X3QgX19zMV83NzcgPSBfX3AxXzc3NzsgXAogIHVpbnQ4eDE2X3QgX19yZXRfNzc3OyBcCiAgX19yZXRfNzc3ID0gKHVpbnQ4eDE2X3QpKHZjb21iaW5lX3U4KCh1aW50OHg4X3QpKF9fczBfNzc3KSwgKHVpbnQ4eDhfdCkodnFzaHJuX25fdTE2KF9fczFfNzc3LCBfX3AyXzc3NykpKSk7IFwKICBfX3JldF83Nzc7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cXNocm5faGlnaF9uX3UxNihfX3AwXzc3OCwgX19wMV83NzgsIF9fcDJfNzc4KSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHg4X3QgX19zMF83NzggPSBfX3AwXzc3ODsgXAogIHVpbnQxNng4X3QgX19zMV83NzggPSBfX3AxXzc3ODsgXAogIHVpbnQ4eDhfdCBfX3JldjBfNzc4OyAgX19yZXYwXzc3OCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNzc4LCBfX3MwXzc3OCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50MTZ4OF90IF9fcmV2MV83Nzg7ICBfX3JldjFfNzc4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV83NzgsIF9fczFfNzc4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQ4eDE2X3QgX19yZXRfNzc4OyBcCiAgX19yZXRfNzc4ID0gKHVpbnQ4eDE2X3QpKF9fbm9zd2FwX3Zjb21iaW5lX3U4KCh1aW50OHg4X3QpKF9fcmV2MF83NzgpLCAodWludDh4OF90KShfX25vc3dhcF92cXNocm5fbl91MTYoX19yZXYxXzc3OCwgX19wMl83NzgpKSkpOyBcCiAgX19yZXRfNzc4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNzc4LCBfX3JldF83NzgsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfNzc4OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFzaHJuX2hpZ2hfbl9zMzIoX19wMF83NzksIF9fcDFfNzc5LCBfX3AyXzc3OSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NF90IF9fczBfNzc5ID0gX19wMF83Nzk7IFwKICBpbnQzMng0X3QgX19zMV83NzkgPSBfX3AxXzc3OTsgXAogIGludDE2eDhfdCBfX3JldF83Nzk7IFwKICBfX3JldF83NzkgPSAoaW50MTZ4OF90KSh2Y29tYmluZV9zMTYoKGludDE2eDRfdCkoX19zMF83NzkpLCAoaW50MTZ4NF90KSh2cXNocm5fbl9zMzIoX19zMV83NzksIF9fcDJfNzc5KSkpKTsgXAogIF9fcmV0Xzc3OTsgXAp9KQojZWxzZQojZGVmaW5lIHZxc2hybl9oaWdoX25fczMyKF9fcDBfNzgwLCBfX3AxXzc4MCwgX19wMl83ODApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDRfdCBfX3MwXzc4MCA9IF9fcDBfNzgwOyBcCiAgaW50MzJ4NF90IF9fczFfNzgwID0gX19wMV83ODA7IFwKICBpbnQxNng0X3QgX19yZXYwXzc4MDsgIF9fcmV2MF83ODAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzc4MCwgX19zMF83ODAsIDMsIDIsIDEsIDApOyBcCiAgaW50MzJ4NF90IF9fcmV2MV83ODA7ICBfX3JldjFfNzgwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV83ODAsIF9fczFfNzgwLCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDhfdCBfX3JldF83ODA7IFwKICBfX3JldF83ODAgPSAoaW50MTZ4OF90KShfX25vc3dhcF92Y29tYmluZV9zMTYoKGludDE2eDRfdCkoX19yZXYwXzc4MCksIChpbnQxNng0X3QpKF9fbm9zd2FwX3Zxc2hybl9uX3MzMihfX3JldjFfNzgwLCBfX3AyXzc4MCkpKSk7IFwKICBfX3JldF83ODAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF83ODAsIF9fcmV0Xzc4MCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF83ODA7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cXNocm5faGlnaF9uX3M2NChfX3AwXzc4MSwgX19wMV83ODEsIF9fcDJfNzgxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMngyX3QgX19zMF83ODEgPSBfX3AwXzc4MTsgXAogIGludDY0eDJfdCBfX3MxXzc4MSA9IF9fcDFfNzgxOyBcCiAgaW50MzJ4NF90IF9fcmV0Xzc4MTsgXAogIF9fcmV0Xzc4MSA9IChpbnQzMng0X3QpKHZjb21iaW5lX3MzMigoaW50MzJ4Ml90KShfX3MwXzc4MSksIChpbnQzMngyX3QpKHZxc2hybl9uX3M2NChfX3MxXzc4MSwgX19wMl83ODEpKSkpOyBcCiAgX19yZXRfNzgxOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFzaHJuX2hpZ2hfbl9zNjQoX19wMF83ODIsIF9fcDFfNzgyLCBfX3AyXzc4MikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Ml90IF9fczBfNzgyID0gX19wMF83ODI7IFwKICBpbnQ2NHgyX3QgX19zMV83ODIgPSBfX3AxXzc4MjsgXAogIGludDMyeDJfdCBfX3JldjBfNzgyOyAgX19yZXYwXzc4MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNzgyLCBfX3MwXzc4MiwgMSwgMCk7IFwKICBpbnQ2NHgyX3QgX19yZXYxXzc4MjsgIF9fcmV2MV83ODIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzc4MiwgX19zMV83ODIsIDEsIDApOyBcCiAgaW50MzJ4NF90IF9fcmV0Xzc4MjsgXAogIF9fcmV0Xzc4MiA9IChpbnQzMng0X3QpKF9fbm9zd2FwX3Zjb21iaW5lX3MzMigoaW50MzJ4Ml90KShfX3JldjBfNzgyKSwgKGludDMyeDJfdCkoX19ub3N3YXBfdnFzaHJuX25fczY0KF9fcmV2MV83ODIsIF9fcDJfNzgyKSkpKTsgXAogIF9fcmV0Xzc4MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0Xzc4MiwgX19yZXRfNzgyLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0Xzc4MjsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZxc2hybl9oaWdoX25fczE2KF9fcDBfNzgzLCBfX3AxXzc4MywgX19wMl83ODMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4OF90IF9fczBfNzgzID0gX19wMF83ODM7IFwKICBpbnQxNng4X3QgX19zMV83ODMgPSBfX3AxXzc4MzsgXAogIGludDh4MTZfdCBfX3JldF83ODM7IFwKICBfX3JldF83ODMgPSAoaW50OHgxNl90KSh2Y29tYmluZV9zOCgoaW50OHg4X3QpKF9fczBfNzgzKSwgKGludDh4OF90KSh2cXNocm5fbl9zMTYoX19zMV83ODMsIF9fcDJfNzgzKSkpKTsgXAogIF9fcmV0Xzc4MzsgXAp9KQojZWxzZQojZGVmaW5lIHZxc2hybl9oaWdoX25fczE2KF9fcDBfNzg0LCBfX3AxXzc4NCwgX19wMl83ODQpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4OF90IF9fczBfNzg0ID0gX19wMF83ODQ7IFwKICBpbnQxNng4X3QgX19zMV83ODQgPSBfX3AxXzc4NDsgXAogIGludDh4OF90IF9fcmV2MF83ODQ7ICBfX3JldjBfNzg0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF83ODQsIF9fczBfNzg0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDhfdCBfX3JldjFfNzg0OyAgX19yZXYxXzc4NCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNzg0LCBfX3MxXzc4NCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQ4eDE2X3QgX19yZXRfNzg0OyBcCiAgX19yZXRfNzg0ID0gKGludDh4MTZfdCkoX19ub3N3YXBfdmNvbWJpbmVfczgoKGludDh4OF90KShfX3JldjBfNzg0KSwgKGludDh4OF90KShfX25vc3dhcF92cXNocm5fbl9zMTYoX19yZXYxXzc4NCwgX19wMl83ODQpKSkpOyBcCiAgX19yZXRfNzg0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNzg0LCBfX3JldF83ODQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfNzg0OyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2cXNocm5zX25fdTMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMl90IF9fczAgPSBfX3AwOyBcCiAgdWludDE2X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50MTZfdCkgX19idWlsdGluX25lb25fdnFzaHJuc19uX3UzMihfX3MwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdnFzaHJuZF9uX3U2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjRfdCBfX3MwID0gX19wMDsgXAogIHVpbnQzMl90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDMyX3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hybmRfbl91NjQoX19zMCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZxc2hybmhfbl91MTYoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2X3QgX19zMCA9IF9fcDA7IFwKICB1aW50OF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDhfdCkgX19idWlsdGluX25lb25fdnFzaHJuaF9uX3UxNihfX3MwLCBfX3AxKTsgXAogIF9fcmV0OyBcCn0pCiNkZWZpbmUgdnFzaHJuc19uX3MzMihfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMl90IF9fczAgPSBfX3AwOyBcCiAgaW50MTZfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDE2X3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hybnNfbl9zMzIoX19zMCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZxc2hybmRfbl9zNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjRfdCBfX3MwID0gX19wMDsgXAogIGludDMyX3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQzMl90KSBfX2J1aWx0aW5fbmVvbl92cXNocm5kX25fczY0KF9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2cXNocm5oX25fczE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2X3QgX19zMCA9IF9fcDA7IFwKICBpbnQ4X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ4X3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hybmhfbl9zMTYoX19zMCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cXNocnVuX2hpZ2hfbl9zMzIoX19wMF83ODUsIF9fcDFfNzg1LCBfX3AyXzc4NSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NF90IF9fczBfNzg1ID0gX19wMF83ODU7IFwKICBpbnQzMng0X3QgX19zMV83ODUgPSBfX3AxXzc4NTsgXAogIGludDE2eDhfdCBfX3JldF83ODU7IFwKICBfX3JldF83ODUgPSAoaW50MTZ4OF90KSh2Y29tYmluZV9zMTYoKGludDE2eDRfdCkoX19zMF83ODUpLCAoaW50MTZ4NF90KSh2cXNocnVuX25fczMyKF9fczFfNzg1LCBfX3AyXzc4NSkpKSk7IFwKICBfX3JldF83ODU7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cXNocnVuX2hpZ2hfbl9zMzIoX19wMF83ODYsIF9fcDFfNzg2LCBfX3AyXzc4NikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NF90IF9fczBfNzg2ID0gX19wMF83ODY7IFwKICBpbnQzMng0X3QgX19zMV83ODYgPSBfX3AxXzc4NjsgXAogIGludDE2eDRfdCBfX3JldjBfNzg2OyAgX19yZXYwXzc4NiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNzg2LCBfX3MwXzc4NiwgMywgMiwgMSwgMCk7IFwKICBpbnQzMng0X3QgX19yZXYxXzc4NjsgIF9fcmV2MV83ODYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzc4NiwgX19zMV83ODYsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4OF90IF9fcmV0Xzc4NjsgXAogIF9fcmV0Xzc4NiA9IChpbnQxNng4X3QpKF9fbm9zd2FwX3Zjb21iaW5lX3MxNigoaW50MTZ4NF90KShfX3JldjBfNzg2KSwgKGludDE2eDRfdCkoX19ub3N3YXBfdnFzaHJ1bl9uX3MzMihfX3JldjFfNzg2LCBfX3AyXzc4NikpKSk7IFwKICBfX3JldF83ODYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF83ODYsIF9fcmV0Xzc4NiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF83ODY7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cXNocnVuX2hpZ2hfbl9zNjQoX19wMF83ODcsIF9fcDFfNzg3LCBfX3AyXzc4NykgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Ml90IF9fczBfNzg3ID0gX19wMF83ODc7IFwKICBpbnQ2NHgyX3QgX19zMV83ODcgPSBfX3AxXzc4NzsgXAogIGludDMyeDRfdCBfX3JldF83ODc7IFwKICBfX3JldF83ODcgPSAoaW50MzJ4NF90KSh2Y29tYmluZV9zMzIoKGludDMyeDJfdCkoX19zMF83ODcpLCAoaW50MzJ4Ml90KSh2cXNocnVuX25fczY0KF9fczFfNzg3LCBfX3AyXzc4NykpKSk7IFwKICBfX3JldF83ODc7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cXNocnVuX2hpZ2hfbl9zNjQoX19wMF83ODgsIF9fcDFfNzg4LCBfX3AyXzc4OCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Ml90IF9fczBfNzg4ID0gX19wMF83ODg7IFwKICBpbnQ2NHgyX3QgX19zMV83ODggPSBfX3AxXzc4ODsgXAogIGludDMyeDJfdCBfX3JldjBfNzg4OyAgX19yZXYwXzc4OCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNzg4LCBfX3MwXzc4OCwgMSwgMCk7IFwKICBpbnQ2NHgyX3QgX19yZXYxXzc4ODsgIF9fcmV2MV83ODggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzc4OCwgX19zMV83ODgsIDEsIDApOyBcCiAgaW50MzJ4NF90IF9fcmV0Xzc4ODsgXAogIF9fcmV0Xzc4OCA9IChpbnQzMng0X3QpKF9fbm9zd2FwX3Zjb21iaW5lX3MzMigoaW50MzJ4Ml90KShfX3JldjBfNzg4KSwgKGludDMyeDJfdCkoX19ub3N3YXBfdnFzaHJ1bl9uX3M2NChfX3JldjFfNzg4LCBfX3AyXzc4OCkpKSk7IFwKICBfX3JldF83ODggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF83ODgsIF9fcmV0Xzc4OCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF83ODg7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cXNocnVuX2hpZ2hfbl9zMTYoX19wMF83ODksIF9fcDFfNzg5LCBfX3AyXzc4OSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHg4X3QgX19zMF83ODkgPSBfX3AwXzc4OTsgXAogIGludDE2eDhfdCBfX3MxXzc4OSA9IF9fcDFfNzg5OyBcCiAgaW50OHgxNl90IF9fcmV0Xzc4OTsgXAogIF9fcmV0Xzc4OSA9IChpbnQ4eDE2X3QpKHZjb21iaW5lX3M4KChpbnQ4eDhfdCkoX19zMF83ODkpLCAoaW50OHg4X3QpKHZxc2hydW5fbl9zMTYoX19zMV83ODksIF9fcDJfNzg5KSkpKTsgXAogIF9fcmV0Xzc4OTsgXAp9KQojZWxzZQojZGVmaW5lIHZxc2hydW5faGlnaF9uX3MxNihfX3AwXzc5MCwgX19wMV83OTAsIF9fcDJfNzkwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDhfdCBfX3MwXzc5MCA9IF9fcDBfNzkwOyBcCiAgaW50MTZ4OF90IF9fczFfNzkwID0gX19wMV83OTA7IFwKICBpbnQ4eDhfdCBfX3JldjBfNzkwOyAgX19yZXYwXzc5MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNzkwLCBfX3MwXzc5MCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng4X3QgX19yZXYxXzc5MDsgIF9fcmV2MV83OTAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzc5MCwgX19zMV83OTAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50OHgxNl90IF9fcmV0Xzc5MDsgXAogIF9fcmV0Xzc5MCA9IChpbnQ4eDE2X3QpKF9fbm9zd2FwX3Zjb21iaW5lX3M4KChpbnQ4eDhfdCkoX19yZXYwXzc5MCksIChpbnQ4eDhfdCkoX19ub3N3YXBfdnFzaHJ1bl9uX3MxNihfX3JldjFfNzkwLCBfX3AyXzc5MCkpKSk7IFwKICBfX3JldF83OTAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF83OTAsIF9fcmV0Xzc5MCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF83OTA7IFwKfSkKI2VuZGlmCgojZGVmaW5lIHZxc2hydW5zX25fczMyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyX3QgX19zMCA9IF9fcDA7IFwKICBpbnQxNl90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MTZfdCkgX19idWlsdGluX25lb25fdnFzaHJ1bnNfbl9zMzIoX19zMCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZxc2hydW5kX25fczY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQzMl90IF9fcmV0OyBcCiAgX19yZXQgPSAoaW50MzJfdCkgX19idWlsdGluX25lb25fdnFzaHJ1bmRfbl9zNjQoX19zMCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZxc2hydW5oX25fczE2KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2X3QgX19zMCA9IF9fcDA7IFwKICBpbnQ4X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ4X3QpIF9fYnVpbHRpbl9uZW9uX3Zxc2hydW5oX25fczE2KF9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKX19haSB1aW50OF90IHZxc3ViYl91OCh1aW50OF90IF9fcDAsIHVpbnQ4X3QgX19wMSkgewogIHVpbnQ4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDhfdCkgX19idWlsdGluX25lb25fdnFzdWJiX3U4KF9fcDAsIF9fcDEpOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQzMl90IHZxc3Vic191MzIodWludDMyX3QgX19wMCwgdWludDMyX3QgX19wMSkgewogIHVpbnQzMl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMl90KSBfX2J1aWx0aW5fbmVvbl92cXN1YnNfdTMyKF9fcDAsIF9fcDEpOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ2NF90IHZxc3ViZF91NjQodWludDY0X3QgX19wMCwgdWludDY0X3QgX19wMSkgewogIHVpbnQ2NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NF90KSBfX2J1aWx0aW5fbmVvbl92cXN1YmRfdTY0KF9fcDAsIF9fcDEpOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQxNl90IHZxc3ViaF91MTYodWludDE2X3QgX19wMCwgdWludDE2X3QgX19wMSkgewogIHVpbnQxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNl90KSBfX2J1aWx0aW5fbmVvbl92cXN1YmhfdTE2KF9fcDAsIF9fcDEpOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDhfdCB2cXN1YmJfczgoaW50OF90IF9fcDAsIGludDhfdCBfX3AxKSB7CiAgaW50OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDhfdCkgX19idWlsdGluX25lb25fdnFzdWJiX3M4KF9fcDAsIF9fcDEpOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDMyX3QgdnFzdWJzX3MzMihpbnQzMl90IF9fcDAsIGludDMyX3QgX19wMSkgewogIGludDMyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJfdCkgX19idWlsdGluX25lb25fdnFzdWJzX3MzMihfX3AwLCBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQ2NF90IHZxc3ViZF9zNjQoaW50NjRfdCBfX3AwLCBpbnQ2NF90IF9fcDEpIHsKICBpbnQ2NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3Zxc3ViZF9zNjQoX19wMCwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MTZfdCB2cXN1YmhfczE2KGludDE2X3QgX19wMCwgaW50MTZfdCBfX3AxKSB7CiAgaW50MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNl90KSBfX2J1aWx0aW5fbmVvbl92cXN1YmhfczE2KF9fcDAsIF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBwb2x5OHg4X3QgdnF0YmwxX3A4KHBvbHk4eDE2X3QgX19wMCwgdWludDh4OF90IF9fcDEpIHsKICBwb2x5OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTh4OF90KSBfX2J1aWx0aW5fbmVvbl92cXRibDFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCA0KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBwb2x5OHg4X3QgdnF0YmwxX3A4KHBvbHk4eDE2X3QgX19wMCwgdWludDh4OF90IF9fcDEpIHsKICBwb2x5OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBwb2x5OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTh4OF90KSBfX2J1aWx0aW5fbmVvbl92cXRibDFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgNCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHBvbHk4eDE2X3QgdnF0YmwxcV9wOChwb2x5OHgxNl90IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSkgewogIHBvbHk4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTh4MTZfdCkgX19idWlsdGluX25lb25fdnF0YmwxcV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAzNik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgcG9seTh4MTZfdCB2cXRibDFxX3A4KHBvbHk4eDE2X3QgX19wMCwgdWludDh4MTZfdCBfX3AxKSB7CiAgcG9seTh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHBvbHk4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTh4MTZfdCkgX19idWlsdGluX25lb25fdnF0YmwxcV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgMzYpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHgxNl90IHZxdGJsMXFfdTgodWludDh4MTZfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEpIHsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZxdGJsMXFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNDgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDE2X3QgdnF0YmwxcV91OCh1aW50OHgxNl90IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSkgewogIHVpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZxdGJsMXFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDQ4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHgxNl90IHZxdGJsMXFfczgoaW50OHgxNl90IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSkgewogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZxdGJsMXFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgMzIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4MTZfdCB2cXRibDFxX3M4KGludDh4MTZfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEpIHsKICBpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92cXRibDFxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAzMik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDhfdCB2cXRibDFfdTgodWludDh4MTZfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZxdGJsMV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDE2KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHg4X3QgdnF0YmwxX3U4KHVpbnQ4eDE2X3QgX19wMCwgdWludDh4OF90IF9fcDEpIHsKICB1aW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92cXRibDFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMTYpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDhfdCB2cXRibDFfczgoaW50OHgxNl90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxKSB7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZxdGJsMV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4OF90IHZxdGJsMV9zOChpbnQ4eDE2X3QgX19wMCwgdWludDh4OF90IF9fcDEpIHsKICBpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92cXRibDFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHBvbHk4eDhfdCB2cXRibDJfcDgocG9seTh4MTZ4Ml90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxKSB7CiAgcG9seTh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk4eDhfdCkgX19idWlsdGluX25lb25fdnF0YmwyX3YoKGludDh4MTZfdClfX3AwLnZhbFswXSwgKGludDh4MTZfdClfX3AwLnZhbFsxXSwgKGludDh4OF90KV9fcDEsIDQpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHBvbHk4eDhfdCB2cXRibDJfcDgocG9seTh4MTZ4Ml90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxKSB7CiAgcG9seTh4MTZ4Ml90IF9fcmV2MDsKICBfX3JldjAudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMC52YWxbMF0sIF9fcDAudmFsWzBdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldjAudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMC52YWxbMV0sIF9fcDAudmFsWzFdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk4eDhfdCkgX19idWlsdGluX25lb25fdnF0YmwyX3YoKGludDh4MTZfdClfX3JldjAudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MC52YWxbMV0sIChpbnQ4eDhfdClfX3JldjEsIDQpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBwb2x5OHgxNl90IHZxdGJsMnFfcDgocG9seTh4MTZ4Ml90IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSkgewogIHBvbHk4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTh4MTZfdCkgX19idWlsdGluX25lb25fdnF0YmwycV92KChpbnQ4eDE2X3QpX19wMC52YWxbMF0sIChpbnQ4eDE2X3QpX19wMC52YWxbMV0sIChpbnQ4eDE2X3QpX19wMSwgMzYpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHBvbHk4eDE2X3QgdnF0YmwycV9wOChwb2x5OHgxNngyX3QgX19wMCwgdWludDh4MTZfdCBfX3AxKSB7CiAgcG9seTh4MTZ4Ml90IF9fcmV2MDsKICBfX3JldjAudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMC52YWxbMF0sIF9fcDAudmFsWzBdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldjAudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMC52YWxbMV0sIF9fcDAudmFsWzFdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHBvbHk4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTh4MTZfdCkgX19idWlsdGluX25lb25fdnF0YmwycV92KChpbnQ4eDE2X3QpX19yZXYwLnZhbFswXSwgKGludDh4MTZfdClfX3JldjAudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MSwgMzYpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHgxNl90IHZxdGJsMnFfdTgodWludDh4MTZ4Ml90IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSkgewogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkgX19idWlsdGluX25lb25fdnF0YmwycV92KChpbnQ4eDE2X3QpX19wMC52YWxbMF0sIChpbnQ4eDE2X3QpX19wMC52YWxbMV0sIChpbnQ4eDE2X3QpX19wMSwgNDgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDE2X3QgdnF0YmwycV91OCh1aW50OHgxNngyX3QgX19wMCwgdWludDh4MTZfdCBfX3AxKSB7CiAgdWludDh4MTZ4Ml90IF9fcmV2MDsKICBfX3JldjAudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMC52YWxbMF0sIF9fcDAudmFsWzBdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldjAudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMC52YWxbMV0sIF9fcDAudmFsWzFdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkgX19idWlsdGluX25lb25fdnF0YmwycV92KChpbnQ4eDE2X3QpX19yZXYwLnZhbFswXSwgKGludDh4MTZfdClfX3JldjAudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MSwgNDgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDE2X3QgdnF0YmwycV9zOChpbnQ4eDE2eDJfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEpIHsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92cXRibDJxX3YoKGludDh4MTZfdClfX3AwLnZhbFswXSwgKGludDh4MTZfdClfX3AwLnZhbFsxXSwgKGludDh4MTZfdClfX3AxLCAzMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OHgxNl90IHZxdGJsMnFfczgoaW50OHgxNngyX3QgX19wMCwgdWludDh4MTZfdCBfX3AxKSB7CiAgaW50OHgxNngyX3QgX19yZXYwOwogIF9fcmV2MC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLnZhbFswXSwgX19wMC52YWxbMF0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV2MC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLnZhbFsxXSwgX19wMC52YWxbMV0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4MTZfdCkgX19idWlsdGluX25lb25fdnF0YmwycV92KChpbnQ4eDE2X3QpX19yZXYwLnZhbFswXSwgKGludDh4MTZfdClfX3JldjAudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MSwgMzIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHg4X3QgdnF0YmwyX3U4KHVpbnQ4eDE2eDJfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZxdGJsMl92KChpbnQ4eDE2X3QpX19wMC52YWxbMF0sIChpbnQ4eDE2X3QpX19wMC52YWxbMV0sIChpbnQ4eDhfdClfX3AxLCAxNik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4OF90IHZxdGJsMl91OCh1aW50OHgxNngyX3QgX19wMCwgdWludDh4OF90IF9fcDEpIHsKICB1aW50OHgxNngyX3QgX19yZXYwOwogIF9fcmV2MC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLnZhbFswXSwgX19wMC52YWxbMF0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV2MC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLnZhbFsxXSwgX19wMC52YWxbMV0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92cXRibDJfdigoaW50OHgxNl90KV9fcmV2MC52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYwLnZhbFsxXSwgKGludDh4OF90KV9fcmV2MSwgMTYpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDhfdCB2cXRibDJfczgoaW50OHgxNngyX3QgX19wMCwgdWludDh4OF90IF9fcDEpIHsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnF0YmwyX3YoKGludDh4MTZfdClfX3AwLnZhbFswXSwgKGludDh4MTZfdClfX3AwLnZhbFsxXSwgKGludDh4OF90KV9fcDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4OF90IHZxdGJsMl9zOChpbnQ4eDE2eDJfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIGludDh4MTZ4Ml90IF9fcmV2MDsKICBfX3JldjAudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMC52YWxbMF0sIF9fcDAudmFsWzBdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldjAudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMC52YWxbMV0sIF9fcDAudmFsWzFdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZxdGJsMl92KChpbnQ4eDE2X3QpX19yZXYwLnZhbFswXSwgKGludDh4MTZfdClfX3JldjAudmFsWzFdLCAoaW50OHg4X3QpX19yZXYxLCAwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgcG9seTh4OF90IHZxdGJsM19wOChwb2x5OHgxNngzX3QgX19wMCwgdWludDh4OF90IF9fcDEpIHsKICBwb2x5OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTh4OF90KSBfX2J1aWx0aW5fbmVvbl92cXRibDNfdigoaW50OHgxNl90KV9fcDAudmFsWzBdLCAoaW50OHgxNl90KV9fcDAudmFsWzFdLCAoaW50OHgxNl90KV9fcDAudmFsWzJdLCAoaW50OHg4X3QpX19wMSwgNCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgcG9seTh4OF90IHZxdGJsM19wOChwb2x5OHgxNngzX3QgX19wMCwgdWludDh4OF90IF9fcDEpIHsKICBwb2x5OHgxNngzX3QgX19yZXYwOwogIF9fcmV2MC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLnZhbFswXSwgX19wMC52YWxbMF0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV2MC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLnZhbFsxXSwgX19wMC52YWxbMV0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV2MC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLnZhbFsyXSwgX19wMC52YWxbMl0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBwb2x5OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTh4OF90KSBfX2J1aWx0aW5fbmVvbl92cXRibDNfdigoaW50OHgxNl90KV9fcmV2MC52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYwLnZhbFsxXSwgKGludDh4MTZfdClfX3JldjAudmFsWzJdLCAoaW50OHg4X3QpX19yZXYxLCA0KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgcG9seTh4MTZfdCB2cXRibDNxX3A4KHBvbHk4eDE2eDNfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEpIHsKICBwb2x5OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZxdGJsM3FfdigoaW50OHgxNl90KV9fcDAudmFsWzBdLCAoaW50OHgxNl90KV9fcDAudmFsWzFdLCAoaW50OHgxNl90KV9fcDAudmFsWzJdLCAoaW50OHgxNl90KV9fcDEsIDM2KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBwb2x5OHgxNl90IHZxdGJsM3FfcDgocG9seTh4MTZ4M190IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSkgewogIHBvbHk4eDE2eDNfdCBfX3JldjA7CiAgX19yZXYwLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAudmFsWzBdLCBfX3AwLnZhbFswXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgX19yZXYwLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAudmFsWzFdLCBfX3AwLnZhbFsxXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgX19yZXYwLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAudmFsWzJdLCBfX3AwLnZhbFsyXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBwb2x5OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZxdGJsM3FfdigoaW50OHgxNl90KV9fcmV2MC52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYwLnZhbFsxXSwgKGludDh4MTZfdClfX3JldjAudmFsWzJdLCAoaW50OHgxNl90KV9fcmV2MSwgMzYpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHgxNl90IHZxdGJsM3FfdTgodWludDh4MTZ4M190IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSkgewogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkgX19idWlsdGluX25lb25fdnF0YmwzcV92KChpbnQ4eDE2X3QpX19wMC52YWxbMF0sIChpbnQ4eDE2X3QpX19wMC52YWxbMV0sIChpbnQ4eDE2X3QpX19wMC52YWxbMl0sIChpbnQ4eDE2X3QpX19wMSwgNDgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDE2X3QgdnF0YmwzcV91OCh1aW50OHgxNngzX3QgX19wMCwgdWludDh4MTZfdCBfX3AxKSB7CiAgdWludDh4MTZ4M190IF9fcmV2MDsKICBfX3JldjAudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMC52YWxbMF0sIF9fcDAudmFsWzBdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldjAudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMC52YWxbMV0sIF9fcDAudmFsWzFdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldjAudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMC52YWxbMl0sIF9fcDAudmFsWzJdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkgX19idWlsdGluX25lb25fdnF0YmwzcV92KChpbnQ4eDE2X3QpX19yZXYwLnZhbFswXSwgKGludDh4MTZfdClfX3JldjAudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MC52YWxbMl0sIChpbnQ4eDE2X3QpX19yZXYxLCA0OCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4MTZfdCB2cXRibDNxX3M4KGludDh4MTZ4M190IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSkgewogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZxdGJsM3FfdigoaW50OHgxNl90KV9fcDAudmFsWzBdLCAoaW50OHgxNl90KV9fcDAudmFsWzFdLCAoaW50OHgxNl90KV9fcDAudmFsWzJdLCAoaW50OHgxNl90KV9fcDEsIDMyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ4eDE2X3QgdnF0YmwzcV9zOChpbnQ4eDE2eDNfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEpIHsKICBpbnQ4eDE2eDNfdCBfX3JldjA7CiAgX19yZXYwLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAudmFsWzBdLCBfX3AwLnZhbFswXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgX19yZXYwLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAudmFsWzFdLCBfX3AwLnZhbFsxXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgX19yZXYwLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAudmFsWzJdLCBfX3AwLnZhbFsyXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92cXRibDNxX3YoKGludDh4MTZfdClfX3JldjAudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MC52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYwLnZhbFsyXSwgKGludDh4MTZfdClfX3JldjEsIDMyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4OF90IHZxdGJsM191OCh1aW50OHgxNngzX3QgX19wMCwgdWludDh4OF90IF9fcDEpIHsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92cXRibDNfdigoaW50OHgxNl90KV9fcDAudmFsWzBdLCAoaW50OHgxNl90KV9fcDAudmFsWzFdLCAoaW50OHgxNl90KV9fcDAudmFsWzJdLCAoaW50OHg4X3QpX19wMSwgMTYpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDhfdCB2cXRibDNfdTgodWludDh4MTZ4M190IF9fcDAsIHVpbnQ4eDhfdCBfX3AxKSB7CiAgdWludDh4MTZ4M190IF9fcmV2MDsKICBfX3JldjAudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMC52YWxbMF0sIF9fcDAudmFsWzBdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldjAudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMC52YWxbMV0sIF9fcDAudmFsWzFdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldjAudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMC52YWxbMl0sIF9fcDAudmFsWzJdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnF0YmwzX3YoKGludDh4MTZfdClfX3JldjAudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MC52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYwLnZhbFsyXSwgKGludDh4OF90KV9fcmV2MSwgMTYpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDhfdCB2cXRibDNfczgoaW50OHgxNngzX3QgX19wMCwgdWludDh4OF90IF9fcDEpIHsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnF0YmwzX3YoKGludDh4MTZfdClfX3AwLnZhbFswXSwgKGludDh4MTZfdClfX3AwLnZhbFsxXSwgKGludDh4MTZfdClfX3AwLnZhbFsyXSwgKGludDh4OF90KV9fcDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4OF90IHZxdGJsM19zOChpbnQ4eDE2eDNfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIGludDh4MTZ4M190IF9fcmV2MDsKICBfX3JldjAudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMC52YWxbMF0sIF9fcDAudmFsWzBdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldjAudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMC52YWxbMV0sIF9fcDAudmFsWzFdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldjAudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMC52YWxbMl0sIF9fcDAudmFsWzJdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZxdGJsM192KChpbnQ4eDE2X3QpX19yZXYwLnZhbFswXSwgKGludDh4MTZfdClfX3JldjAudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MC52YWxbMl0sIChpbnQ4eDhfdClfX3JldjEsIDApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBwb2x5OHg4X3QgdnF0Ymw0X3A4KHBvbHk4eDE2eDRfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIHBvbHk4eDhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZxdGJsNF92KChpbnQ4eDE2X3QpX19wMC52YWxbMF0sIChpbnQ4eDE2X3QpX19wMC52YWxbMV0sIChpbnQ4eDE2X3QpX19wMC52YWxbMl0sIChpbnQ4eDE2X3QpX19wMC52YWxbM10sIChpbnQ4eDhfdClfX3AxLCA0KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBwb2x5OHg4X3QgdnF0Ymw0X3A4KHBvbHk4eDE2eDRfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIHBvbHk4eDE2eDRfdCBfX3JldjA7CiAgX19yZXYwLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAudmFsWzBdLCBfX3AwLnZhbFswXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgX19yZXYwLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAudmFsWzFdLCBfX3AwLnZhbFsxXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgX19yZXYwLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAudmFsWzJdLCBfX3AwLnZhbFsyXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgX19yZXYwLnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAudmFsWzNdLCBfX3AwLnZhbFszXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHBvbHk4eDhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZxdGJsNF92KChpbnQ4eDE2X3QpX19yZXYwLnZhbFswXSwgKGludDh4MTZfdClfX3JldjAudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MC52YWxbMl0sIChpbnQ4eDE2X3QpX19yZXYwLnZhbFszXSwgKGludDh4OF90KV9fcmV2MSwgNCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHBvbHk4eDE2X3QgdnF0Ymw0cV9wOChwb2x5OHgxNng0X3QgX19wMCwgdWludDh4MTZfdCBfX3AxKSB7CiAgcG9seTh4MTZfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92cXRibDRxX3YoKGludDh4MTZfdClfX3AwLnZhbFswXSwgKGludDh4MTZfdClfX3AwLnZhbFsxXSwgKGludDh4MTZfdClfX3AwLnZhbFsyXSwgKGludDh4MTZfdClfX3AwLnZhbFszXSwgKGludDh4MTZfdClfX3AxLCAzNik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgcG9seTh4MTZfdCB2cXRibDRxX3A4KHBvbHk4eDE2eDRfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEpIHsKICBwb2x5OHgxNng0X3QgX19yZXYwOwogIF9fcmV2MC52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLnZhbFswXSwgX19wMC52YWxbMF0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV2MC52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLnZhbFsxXSwgX19wMC52YWxbMV0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV2MC52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLnZhbFsyXSwgX19wMC52YWxbMl0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV2MC52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLnZhbFszXSwgX19wMC52YWxbM10sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTh4MTZfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92cXRibDRxX3YoKGludDh4MTZfdClfX3JldjAudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MC52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYwLnZhbFsyXSwgKGludDh4MTZfdClfX3JldjAudmFsWzNdLCAoaW50OHgxNl90KV9fcmV2MSwgMzYpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHgxNl90IHZxdGJsNHFfdTgodWludDh4MTZ4NF90IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSkgewogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkgX19idWlsdGluX25lb25fdnF0Ymw0cV92KChpbnQ4eDE2X3QpX19wMC52YWxbMF0sIChpbnQ4eDE2X3QpX19wMC52YWxbMV0sIChpbnQ4eDE2X3QpX19wMC52YWxbMl0sIChpbnQ4eDE2X3QpX19wMC52YWxbM10sIChpbnQ4eDE2X3QpX19wMSwgNDgpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDE2X3QgdnF0Ymw0cV91OCh1aW50OHgxNng0X3QgX19wMCwgdWludDh4MTZfdCBfX3AxKSB7CiAgdWludDh4MTZ4NF90IF9fcmV2MDsKICBfX3JldjAudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMC52YWxbMF0sIF9fcDAudmFsWzBdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldjAudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMC52YWxbMV0sIF9fcDAudmFsWzFdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldjAudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMC52YWxbMl0sIF9fcDAudmFsWzJdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldjAudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMC52YWxbM10sIF9fcDAudmFsWzNdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkgX19idWlsdGluX25lb25fdnF0Ymw0cV92KChpbnQ4eDE2X3QpX19yZXYwLnZhbFswXSwgKGludDh4MTZfdClfX3JldjAudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MC52YWxbMl0sIChpbnQ4eDE2X3QpX19yZXYwLnZhbFszXSwgKGludDh4MTZfdClfX3JldjEsIDQ4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHgxNl90IHZxdGJsNHFfczgoaW50OHgxNng0X3QgX19wMCwgdWludDh4MTZfdCBfX3AxKSB7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4MTZfdCkgX19idWlsdGluX25lb25fdnF0Ymw0cV92KChpbnQ4eDE2X3QpX19wMC52YWxbMF0sIChpbnQ4eDE2X3QpX19wMC52YWxbMV0sIChpbnQ4eDE2X3QpX19wMC52YWxbMl0sIChpbnQ4eDE2X3QpX19wMC52YWxbM10sIChpbnQ4eDE2X3QpX19wMSwgMzIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4MTZfdCB2cXRibDRxX3M4KGludDh4MTZ4NF90IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSkgewogIGludDh4MTZ4NF90IF9fcmV2MDsKICBfX3JldjAudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMC52YWxbMF0sIF9fcDAudmFsWzBdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldjAudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMC52YWxbMV0sIF9fcDAudmFsWzFdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldjAudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMC52YWxbMl0sIF9fcDAudmFsWzJdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldjAudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMC52YWxbM10sIF9fcDAudmFsWzNdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZxdGJsNHFfdigoaW50OHgxNl90KV9fcmV2MC52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYwLnZhbFsxXSwgKGludDh4MTZfdClfX3JldjAudmFsWzJdLCAoaW50OHgxNl90KV9fcmV2MC52YWxbM10sIChpbnQ4eDE2X3QpX19yZXYxLCAzMik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDhfdCB2cXRibDRfdTgodWludDh4MTZ4NF90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxKSB7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnF0Ymw0X3YoKGludDh4MTZfdClfX3AwLnZhbFswXSwgKGludDh4MTZfdClfX3AwLnZhbFsxXSwgKGludDh4MTZfdClfX3AwLnZhbFsyXSwgKGludDh4MTZfdClfX3AwLnZhbFszXSwgKGludDh4OF90KV9fcDEsIDE2KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHg4X3QgdnF0Ymw0X3U4KHVpbnQ4eDE2eDRfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIHVpbnQ4eDE2eDRfdCBfX3JldjA7CiAgX19yZXYwLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAudmFsWzBdLCBfX3AwLnZhbFswXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgX19yZXYwLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAudmFsWzFdLCBfX3AwLnZhbFsxXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgX19yZXYwLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAudmFsWzJdLCBfX3AwLnZhbFsyXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgX19yZXYwLnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAudmFsWzNdLCBfX3AwLnZhbFszXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZxdGJsNF92KChpbnQ4eDE2X3QpX19yZXYwLnZhbFswXSwgKGludDh4MTZfdClfX3JldjAudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MC52YWxbMl0sIChpbnQ4eDE2X3QpX19yZXYwLnZhbFszXSwgKGludDh4OF90KV9fcmV2MSwgMTYpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDhfdCB2cXRibDRfczgoaW50OHgxNng0X3QgX19wMCwgdWludDh4OF90IF9fcDEpIHsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnF0Ymw0X3YoKGludDh4MTZfdClfX3AwLnZhbFswXSwgKGludDh4MTZfdClfX3AwLnZhbFsxXSwgKGludDh4MTZfdClfX3AwLnZhbFsyXSwgKGludDh4MTZfdClfX3AwLnZhbFszXSwgKGludDh4OF90KV9fcDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4OF90IHZxdGJsNF9zOChpbnQ4eDE2eDRfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIGludDh4MTZ4NF90IF9fcmV2MDsKICBfX3JldjAudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMC52YWxbMF0sIF9fcDAudmFsWzBdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldjAudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMC52YWxbMV0sIF9fcDAudmFsWzFdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldjAudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMC52YWxbMl0sIF9fcDAudmFsWzJdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldjAudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMC52YWxbM10sIF9fcDAudmFsWzNdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZxdGJsNF92KChpbnQ4eDE2X3QpX19yZXYwLnZhbFswXSwgKGludDh4MTZfdClfX3JldjAudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MC52YWxbMl0sIChpbnQ4eDE2X3QpX19yZXYwLnZhbFszXSwgKGludDh4OF90KV9fcmV2MSwgMCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHBvbHk4eDhfdCB2cXRieDFfcDgocG9seTh4OF90IF9fcDAsIHBvbHk4eDE2X3QgX19wMSwgdWludDh4OF90IF9fcDIpIHsKICBwb2x5OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTh4OF90KSBfX2J1aWx0aW5fbmVvbl92cXRieDFfdigoaW50OHg4X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAoaW50OHg4X3QpX19wMiwgNCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgcG9seTh4OF90IHZxdGJ4MV9wOChwb2x5OHg4X3QgX19wMCwgcG9seTh4MTZfdCBfX3AxLCB1aW50OHg4X3QgX19wMikgewogIHBvbHk4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBwb2x5OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBwb2x5OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTh4OF90KSBfX2J1aWx0aW5fbmVvbl92cXRieDFfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgKGludDh4OF90KV9fcmV2MiwgNCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHBvbHk4eDE2X3QgdnF0YngxcV9wOChwb2x5OHgxNl90IF9fcDAsIHBvbHk4eDE2X3QgX19wMSwgdWludDh4MTZfdCBfX3AyKSB7CiAgcG9seTh4MTZfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92cXRieDFxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIChpbnQ4eDE2X3QpX19wMiwgMzYpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHBvbHk4eDE2X3QgdnF0YngxcV9wOChwb2x5OHgxNl90IF9fcDAsIHBvbHk4eDE2X3QgX19wMSwgdWludDh4MTZfdCBfX3AyKSB7CiAgcG9seTh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBwb2x5OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTh4MTZfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92cXRieDFxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAoaW50OHgxNl90KV9fcmV2MiwgMzYpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHgxNl90IHZxdGJ4MXFfdTgodWludDh4MTZfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEsIHVpbnQ4eDE2X3QgX19wMikgewogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkgX19idWlsdGluX25lb25fdnF0YngxcV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAoaW50OHgxNl90KV9fcDIsIDQ4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHgxNl90IHZxdGJ4MXFfdTgodWludDh4MTZfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEsIHVpbnQ4eDE2X3QgX19wMikgewogIHVpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkgX19idWlsdGluX25lb25fdnF0YngxcV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgKGludDh4MTZfdClfX3JldjIsIDQ4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHgxNl90IHZxdGJ4MXFfczgoaW50OHgxNl90IF9fcDAsIGludDh4MTZfdCBfX3AxLCB1aW50OHgxNl90IF9fcDIpIHsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92cXRieDFxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIChpbnQ4eDE2X3QpX19wMiwgMzIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4MTZfdCB2cXRieDFxX3M4KGludDh4MTZfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSwgdWludDh4MTZfdCBfX3AyKSB7CiAgaW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZxdGJ4MXFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIChpbnQ4eDE2X3QpX19yZXYyLCAzMik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDhfdCB2cXRieDFfdTgodWludDh4OF90IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSwgdWludDh4OF90IF9fcDIpIHsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92cXRieDFfdigoaW50OHg4X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAoaW50OHg4X3QpX19wMiwgMTYpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDhfdCB2cXRieDFfdTgodWludDh4OF90IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSwgdWludDh4OF90IF9fcDIpIHsKICB1aW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnF0YngxX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIChpbnQ4eDhfdClfX3JldjIsIDE2KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHg4X3QgdnF0YngxX3M4KGludDh4OF90IF9fcDAsIGludDh4MTZfdCBfX3AxLCB1aW50OHg4X3QgX19wMikgewogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92cXRieDFfdigoaW50OHg4X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAoaW50OHg4X3QpX19wMiwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OHg4X3QgdnF0YngxX3M4KGludDh4OF90IF9fcDAsIGludDh4MTZfdCBfX3AxLCB1aW50OHg4X3QgX19wMikgewogIGludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZxdGJ4MV92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAoaW50OHg4X3QpX19yZXYyLCAwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgcG9seTh4OF90IHZxdGJ4Ml9wOChwb2x5OHg4X3QgX19wMCwgcG9seTh4MTZ4Ml90IF9fcDEsIHVpbnQ4eDhfdCBfX3AyKSB7CiAgcG9seTh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk4eDhfdCkgX19idWlsdGluX25lb25fdnF0YngyX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDE2X3QpX19wMS52YWxbMF0sIChpbnQ4eDE2X3QpX19wMS52YWxbMV0sIChpbnQ4eDhfdClfX3AyLCA0KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBwb2x5OHg4X3QgdnF0YngyX3A4KHBvbHk4eDhfdCBfX3AwLCBwb2x5OHgxNngyX3QgX19wMSwgdWludDh4OF90IF9fcDIpIHsKICBwb2x5OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTh4MTZ4Ml90IF9fcmV2MTsKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMS52YWxbMF0sIF9fcDEudmFsWzBdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMS52YWxbMV0sIF9fcDEudmFsWzFdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk4eDhfdCkgX19idWlsdGluX25lb25fdnF0YngyX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDhfdClfX3JldjIsIDQpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBwb2x5OHgxNl90IHZxdGJ4MnFfcDgocG9seTh4MTZfdCBfX3AwLCBwb2x5OHgxNngyX3QgX19wMSwgdWludDh4MTZfdCBfX3AyKSB7CiAgcG9seTh4MTZfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92cXRieDJxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEudmFsWzBdLCAoaW50OHgxNl90KV9fcDEudmFsWzFdLCAoaW50OHgxNl90KV9fcDIsIDM2KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBwb2x5OHgxNl90IHZxdGJ4MnFfcDgocG9seTh4MTZfdCBfX3AwLCBwb2x5OHgxNngyX3QgX19wMSwgdWludDh4MTZfdCBfX3AyKSB7CiAgcG9seTh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBwb2x5OHgxNngyX3QgX19yZXYxOwogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLnZhbFswXSwgX19wMS52YWxbMF0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLnZhbFsxXSwgX19wMS52YWxbMV0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTh4MTZfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92cXRieDJxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MiwgMzYpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHgxNl90IHZxdGJ4MnFfdTgodWludDh4MTZfdCBfX3AwLCB1aW50OHgxNngyX3QgX19wMSwgdWludDh4MTZfdCBfX3AyKSB7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92cXRieDJxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEudmFsWzBdLCAoaW50OHgxNl90KV9fcDEudmFsWzFdLCAoaW50OHgxNl90KV9fcDIsIDQ4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHgxNl90IHZxdGJ4MnFfdTgodWludDh4MTZfdCBfX3AwLCB1aW50OHgxNngyX3QgX19wMSwgdWludDh4MTZfdCBfX3AyKSB7CiAgdWludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNngyX3QgX19yZXYxOwogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLnZhbFswXSwgX19wMS52YWxbMF0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLnZhbFsxXSwgX19wMS52YWxbMV0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92cXRieDJxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MiwgNDgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDE2X3QgdnF0YngycV9zOChpbnQ4eDE2X3QgX19wMCwgaW50OHgxNngyX3QgX19wMSwgdWludDh4MTZfdCBfX3AyKSB7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4MTZfdCkgX19idWlsdGluX25lb25fdnF0YngycV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLnZhbFswXSwgKGludDh4MTZfdClfX3AxLnZhbFsxXSwgKGludDh4MTZfdClfX3AyLCAzMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OHgxNl90IHZxdGJ4MnFfczgoaW50OHgxNl90IF9fcDAsIGludDh4MTZ4Ml90IF9fcDEsIHVpbnQ4eDE2X3QgX19wMikgewogIGludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2eDJfdCBfX3JldjE7CiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEudmFsWzBdLCBfX3AxLnZhbFswXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEudmFsWzFdLCBfX3AxLnZhbFsxXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92cXRieDJxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MiwgMzIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHg4X3QgdnF0YngyX3U4KHVpbnQ4eDhfdCBfX3AwLCB1aW50OHgxNngyX3QgX19wMSwgdWludDh4OF90IF9fcDIpIHsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92cXRieDJfdigoaW50OHg4X3QpX19wMCwgKGludDh4MTZfdClfX3AxLnZhbFswXSwgKGludDh4MTZfdClfX3AxLnZhbFsxXSwgKGludDh4OF90KV9fcDIsIDE2KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHg4X3QgdnF0YngyX3U4KHVpbnQ4eDhfdCBfX3AwLCB1aW50OHgxNngyX3QgX19wMSwgdWludDh4OF90IF9fcDIpIHsKICB1aW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZ4Ml90IF9fcmV2MTsKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMS52YWxbMF0sIF9fcDEudmFsWzBdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMS52YWxbMV0sIF9fcDEudmFsWzFdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnF0YngyX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDhfdClfX3JldjIsIDE2KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHg4X3QgdnF0YngyX3M4KGludDh4OF90IF9fcDAsIGludDh4MTZ4Ml90IF9fcDEsIHVpbnQ4eDhfdCBfX3AyKSB7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZxdGJ4Ml92KChpbnQ4eDhfdClfX3AwLCAoaW50OHgxNl90KV9fcDEudmFsWzBdLCAoaW50OHgxNl90KV9fcDEudmFsWzFdLCAoaW50OHg4X3QpX19wMiwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OHg4X3QgdnF0YngyX3M4KGludDh4OF90IF9fcDAsIGludDh4MTZ4Ml90IF9fcDEsIHVpbnQ4eDhfdCBfX3AyKSB7CiAgaW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNngyX3QgX19yZXYxOwogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLnZhbFswXSwgX19wMS52YWxbMF0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLnZhbFsxXSwgX19wMS52YWxbMV0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnF0YngyX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDhfdClfX3JldjIsIDApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBwb2x5OHg4X3QgdnF0YngzX3A4KHBvbHk4eDhfdCBfX3AwLCBwb2x5OHgxNngzX3QgX19wMSwgdWludDh4OF90IF9fcDIpIHsKICBwb2x5OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTh4OF90KSBfX2J1aWx0aW5fbmVvbl92cXRieDNfdigoaW50OHg4X3QpX19wMCwgKGludDh4MTZfdClfX3AxLnZhbFswXSwgKGludDh4MTZfdClfX3AxLnZhbFsxXSwgKGludDh4MTZfdClfX3AxLnZhbFsyXSwgKGludDh4OF90KV9fcDIsIDQpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHBvbHk4eDhfdCB2cXRieDNfcDgocG9seTh4OF90IF9fcDAsIHBvbHk4eDE2eDNfdCBfX3AxLCB1aW50OHg4X3QgX19wMikgewogIHBvbHk4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBwb2x5OHgxNngzX3QgX19yZXYxOwogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLnZhbFswXSwgX19wMS52YWxbMF0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLnZhbFsxXSwgX19wMS52YWxbMV0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLnZhbFsyXSwgX19wMS52YWxbMl0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBwb2x5OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTh4OF90KSBfX2J1aWx0aW5fbmVvbl92cXRieDNfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgKGludDh4MTZfdClfX3JldjEudmFsWzJdLCAoaW50OHg4X3QpX19yZXYyLCA0KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgcG9seTh4MTZfdCB2cXRieDNxX3A4KHBvbHk4eDE2X3QgX19wMCwgcG9seTh4MTZ4M190IF9fcDEsIHVpbnQ4eDE2X3QgX19wMikgewogIHBvbHk4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTh4MTZfdCkgX19idWlsdGluX25lb25fdnF0YngzcV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLnZhbFswXSwgKGludDh4MTZfdClfX3AxLnZhbFsxXSwgKGludDh4MTZfdClfX3AxLnZhbFsyXSwgKGludDh4MTZfdClfX3AyLCAzNik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgcG9seTh4MTZfdCB2cXRieDNxX3A4KHBvbHk4eDE2X3QgX19wMCwgcG9seTh4MTZ4M190IF9fcDEsIHVpbnQ4eDE2X3QgX19wMikgewogIHBvbHk4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTh4MTZ4M190IF9fcmV2MTsKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMS52YWxbMF0sIF9fcDEudmFsWzBdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMS52YWxbMV0sIF9fcDEudmFsWzFdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMS52YWxbMl0sIF9fcDEudmFsWzJdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHBvbHk4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTh4MTZfdCkgX19idWlsdGluX25lb25fdnF0YngzcV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgKGludDh4MTZfdClfX3JldjEudmFsWzJdLCAoaW50OHgxNl90KV9fcmV2MiwgMzYpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHgxNl90IHZxdGJ4M3FfdTgodWludDh4MTZfdCBfX3AwLCB1aW50OHgxNngzX3QgX19wMSwgdWludDh4MTZfdCBfX3AyKSB7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92cXRieDNxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEudmFsWzBdLCAoaW50OHgxNl90KV9fcDEudmFsWzFdLCAoaW50OHgxNl90KV9fcDEudmFsWzJdLCAoaW50OHgxNl90KV9fcDIsIDQ4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHgxNl90IHZxdGJ4M3FfdTgodWludDh4MTZfdCBfX3AwLCB1aW50OHgxNngzX3QgX19wMSwgdWludDh4MTZfdCBfX3AyKSB7CiAgdWludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNngzX3QgX19yZXYxOwogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLnZhbFswXSwgX19wMS52YWxbMF0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLnZhbFsxXSwgX19wMS52YWxbMV0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLnZhbFsyXSwgX19wMS52YWxbMl0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92cXRieDNxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMl0sIChpbnQ4eDE2X3QpX19yZXYyLCA0OCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4MTZfdCB2cXRieDNxX3M4KGludDh4MTZfdCBfX3AwLCBpbnQ4eDE2eDNfdCBfX3AxLCB1aW50OHgxNl90IF9fcDIpIHsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92cXRieDNxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEudmFsWzBdLCAoaW50OHgxNl90KV9fcDEudmFsWzFdLCAoaW50OHgxNl90KV9fcDEudmFsWzJdLCAoaW50OHgxNl90KV9fcDIsIDMyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ4eDE2X3QgdnF0YngzcV9zOChpbnQ4eDE2X3QgX19wMCwgaW50OHgxNngzX3QgX19wMSwgdWludDh4MTZfdCBfX3AyKSB7CiAgaW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4MTZ4M190IF9fcmV2MTsKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMS52YWxbMF0sIF9fcDEudmFsWzBdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMS52YWxbMV0sIF9fcDEudmFsWzFdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMS52YWxbMl0sIF9fcDEudmFsWzJdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZxdGJ4M3FfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgKGludDh4MTZfdClfX3JldjIsIDMyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4OF90IHZxdGJ4M191OCh1aW50OHg4X3QgX19wMCwgdWludDh4MTZ4M190IF9fcDEsIHVpbnQ4eDhfdCBfX3AyKSB7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnF0YngzX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDE2X3QpX19wMS52YWxbMF0sIChpbnQ4eDE2X3QpX19wMS52YWxbMV0sIChpbnQ4eDE2X3QpX19wMS52YWxbMl0sIChpbnQ4eDhfdClfX3AyLCAxNik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4OF90IHZxdGJ4M191OCh1aW50OHg4X3QgX19wMCwgdWludDh4MTZ4M190IF9fcDEsIHVpbnQ4eDhfdCBfX3AyKSB7CiAgdWludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2eDNfdCBfX3JldjE7CiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEudmFsWzBdLCBfX3AxLnZhbFswXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEudmFsWzFdLCBfX3AxLnZhbFsxXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEudmFsWzJdLCBfX3AxLnZhbFsyXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZxdGJ4M192KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMl0sIChpbnQ4eDhfdClfX3JldjIsIDE2KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHg4X3QgdnF0YngzX3M4KGludDh4OF90IF9fcDAsIGludDh4MTZ4M190IF9fcDEsIHVpbnQ4eDhfdCBfX3AyKSB7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZxdGJ4M192KChpbnQ4eDhfdClfX3AwLCAoaW50OHgxNl90KV9fcDEudmFsWzBdLCAoaW50OHgxNl90KV9fcDEudmFsWzFdLCAoaW50OHgxNl90KV9fcDEudmFsWzJdLCAoaW50OHg4X3QpX19wMiwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OHg4X3QgdnF0YngzX3M4KGludDh4OF90IF9fcDAsIGludDh4MTZ4M190IF9fcDEsIHVpbnQ4eDhfdCBfX3AyKSB7CiAgaW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNngzX3QgX19yZXYxOwogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLnZhbFswXSwgX19wMS52YWxbMF0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLnZhbFsxXSwgX19wMS52YWxbMV0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLnZhbFsyXSwgX19wMS52YWxbMl0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnF0YngzX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgKGludDh4OF90KV9fcmV2MiwgMCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHBvbHk4eDhfdCB2cXRieDRfcDgocG9seTh4OF90IF9fcDAsIHBvbHk4eDE2eDRfdCBfX3AxLCB1aW50OHg4X3QgX19wMikgewogIHBvbHk4eDhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZxdGJ4NF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHgxNl90KV9fcDEudmFsWzBdLCAoaW50OHgxNl90KV9fcDEudmFsWzFdLCAoaW50OHgxNl90KV9fcDEudmFsWzJdLCAoaW50OHgxNl90KV9fcDEudmFsWzNdLCAoaW50OHg4X3QpX19wMiwgNCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgcG9seTh4OF90IHZxdGJ4NF9wOChwb2x5OHg4X3QgX19wMCwgcG9seTh4MTZ4NF90IF9fcDEsIHVpbnQ4eDhfdCBfX3AyKSB7CiAgcG9seTh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHBvbHk4eDE2eDRfdCBfX3JldjE7CiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEudmFsWzBdLCBfX3AxLnZhbFswXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEudmFsWzFdLCBfX3AxLnZhbFsxXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEudmFsWzJdLCBfX3AxLnZhbFsyXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgX19yZXYxLnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEudmFsWzNdLCBfX3AxLnZhbFszXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHBvbHk4eDhfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZxdGJ4NF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMl0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFszXSwgKGludDh4OF90KV9fcmV2MiwgNCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHBvbHk4eDE2X3QgdnF0Yng0cV9wOChwb2x5OHgxNl90IF9fcDAsIHBvbHk4eDE2eDRfdCBfX3AxLCB1aW50OHgxNl90IF9fcDIpIHsKICBwb2x5OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZxdGJ4NHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMS52YWxbMF0sIChpbnQ4eDE2X3QpX19wMS52YWxbMV0sIChpbnQ4eDE2X3QpX19wMS52YWxbMl0sIChpbnQ4eDE2X3QpX19wMS52YWxbM10sIChpbnQ4eDE2X3QpX19wMiwgMzYpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHBvbHk4eDE2X3QgdnF0Yng0cV9wOChwb2x5OHgxNl90IF9fcDAsIHBvbHk4eDE2eDRfdCBfX3AxLCB1aW50OHgxNl90IF9fcDIpIHsKICBwb2x5OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHBvbHk4eDE2eDRfdCBfX3JldjE7CiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEudmFsWzBdLCBfX3AxLnZhbFswXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEudmFsWzFdLCBfX3AxLnZhbFsxXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEudmFsWzJdLCBfX3AxLnZhbFsyXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgX19yZXYxLnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEudmFsWzNdLCBfX3AxLnZhbFszXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBwb2x5OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZxdGJ4NHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgKGludDh4MTZfdClfX3JldjEudmFsWzNdLCAoaW50OHgxNl90KV9fcmV2MiwgMzYpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHgxNl90IHZxdGJ4NHFfdTgodWludDh4MTZfdCBfX3AwLCB1aW50OHgxNng0X3QgX19wMSwgdWludDh4MTZfdCBfX3AyKSB7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92cXRieDRxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEudmFsWzBdLCAoaW50OHgxNl90KV9fcDEudmFsWzFdLCAoaW50OHgxNl90KV9fcDEudmFsWzJdLCAoaW50OHgxNl90KV9fcDEudmFsWzNdLCAoaW50OHgxNl90KV9fcDIsIDQ4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHgxNl90IHZxdGJ4NHFfdTgodWludDh4MTZfdCBfX3AwLCB1aW50OHgxNng0X3QgX19wMSwgdWludDh4MTZfdCBfX3AyKSB7CiAgdWludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNng0X3QgX19yZXYxOwogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLnZhbFswXSwgX19wMS52YWxbMF0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLnZhbFsxXSwgX19wMS52YWxbMV0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLnZhbFsyXSwgX19wMS52YWxbMl0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV2MS52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLnZhbFszXSwgX19wMS52YWxbM10sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92cXRieDRxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMl0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFszXSwgKGludDh4MTZfdClfX3JldjIsIDQ4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHgxNl90IHZxdGJ4NHFfczgoaW50OHgxNl90IF9fcDAsIGludDh4MTZ4NF90IF9fcDEsIHVpbnQ4eDE2X3QgX19wMikgewogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZxdGJ4NHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMS52YWxbMF0sIChpbnQ4eDE2X3QpX19wMS52YWxbMV0sIChpbnQ4eDE2X3QpX19wMS52YWxbMl0sIChpbnQ4eDE2X3QpX19wMS52YWxbM10sIChpbnQ4eDE2X3QpX19wMiwgMzIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4MTZfdCB2cXRieDRxX3M4KGludDh4MTZfdCBfX3AwLCBpbnQ4eDE2eDRfdCBfX3AxLCB1aW50OHgxNl90IF9fcDIpIHsKICBpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNng0X3QgX19yZXYxOwogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLnZhbFswXSwgX19wMS52YWxbMF0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLnZhbFsxXSwgX19wMS52YWxbMV0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLnZhbFsyXSwgX19wMS52YWxbMl0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV2MS52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLnZhbFszXSwgX19wMS52YWxbM10sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4MTZfdCkgX19idWlsdGluX25lb25fdnF0Yng0cV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgKGludDh4MTZfdClfX3JldjEudmFsWzJdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbM10sIChpbnQ4eDE2X3QpX19yZXYyLCAzMik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDhfdCB2cXRieDRfdTgodWludDh4OF90IF9fcDAsIHVpbnQ4eDE2eDRfdCBfX3AxLCB1aW50OHg4X3QgX19wMikgewogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZxdGJ4NF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHgxNl90KV9fcDEudmFsWzBdLCAoaW50OHgxNl90KV9fcDEudmFsWzFdLCAoaW50OHgxNl90KV9fcDEudmFsWzJdLCAoaW50OHgxNl90KV9fcDEudmFsWzNdLCAoaW50OHg4X3QpX19wMiwgMTYpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDhfdCB2cXRieDRfdTgodWludDh4OF90IF9fcDAsIHVpbnQ4eDE2eDRfdCBfX3AxLCB1aW50OHg4X3QgX19wMikgewogIHVpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNng0X3QgX19yZXYxOwogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLnZhbFswXSwgX19wMS52YWxbMF0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLnZhbFsxXSwgX19wMS52YWxbMV0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLnZhbFsyXSwgX19wMS52YWxbMl0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV2MS52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLnZhbFszXSwgX19wMS52YWxbM10sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92cXRieDRfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgKGludDh4MTZfdClfX3JldjEudmFsWzJdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbM10sIChpbnQ4eDhfdClfX3JldjIsIDE2KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHg4X3QgdnF0Yng0X3M4KGludDh4OF90IF9fcDAsIGludDh4MTZ4NF90IF9fcDEsIHVpbnQ4eDhfdCBfX3AyKSB7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZxdGJ4NF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHgxNl90KV9fcDEudmFsWzBdLCAoaW50OHgxNl90KV9fcDEudmFsWzFdLCAoaW50OHgxNl90KV9fcDEudmFsWzJdLCAoaW50OHgxNl90KV9fcDEudmFsWzNdLCAoaW50OHg4X3QpX19wMiwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OHg4X3QgdnF0Yng0X3M4KGludDh4OF90IF9fcDAsIGludDh4MTZ4NF90IF9fcDEsIHVpbnQ4eDhfdCBfX3AyKSB7CiAgaW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNng0X3QgX19yZXYxOwogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLnZhbFswXSwgX19wMS52YWxbMF0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLnZhbFsxXSwgX19wMS52YWxbMV0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLnZhbFsyXSwgX19wMS52YWxbMl0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIF9fcmV2MS52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLnZhbFszXSwgX19wMS52YWxbM10sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnF0Yng0X3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgKGludDh4MTZfdClfX3JldjEudmFsWzNdLCAoaW50OHg4X3QpX19yZXYyLCAwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDhfdCB2cmFkZGhuX2hpZ2hfdTMyKHVpbnQxNng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxLCB1aW50MzJ4NF90IF9fcDIpIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gdmNvbWJpbmVfdTE2KF9fcDAsIHZyYWRkaG5fdTMyKF9fcDEsIF9fcDIpKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4OF90IHZyYWRkaG5faGlnaF91MzIodWludDE2eDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEsIHVpbnQzMng0X3QgX19wMikgewogIHVpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92Y29tYmluZV91MTYoX19yZXYwLCBfX25vc3dhcF92cmFkZGhuX3UzMihfX3JldjEsIF9fcmV2MikpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZyYWRkaG5faGlnaF91NjQodWludDMyeDJfdCBfX3AwLCB1aW50NjR4Ml90IF9fcDEsIHVpbnQ2NHgyX3QgX19wMikgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSB2Y29tYmluZV91MzIoX19wMCwgdnJhZGRobl91NjQoX19wMSwgX19wMikpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMng0X3QgdnJhZGRobl9oaWdoX3U2NCh1aW50MzJ4Ml90IF9fcDAsIHVpbnQ2NHgyX3QgX19wMSwgdWludDY0eDJfdCBfX3AyKSB7CiAgdWludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3Zjb21iaW5lX3UzMihfX3JldjAsIF9fbm9zd2FwX3ZyYWRkaG5fdTY0KF9fcmV2MSwgX19yZXYyKSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDE2X3QgdnJhZGRobl9oaWdoX3UxNih1aW50OHg4X3QgX19wMCwgdWludDE2eDhfdCBfX3AxLCB1aW50MTZ4OF90IF9fcDIpIHsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gdmNvbWJpbmVfdTgoX19wMCwgdnJhZGRobl91MTYoX19wMSwgX19wMikpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDE2X3QgdnJhZGRobl9oaWdoX3UxNih1aW50OHg4X3QgX19wMCwgdWludDE2eDhfdCBfX3AxLCB1aW50MTZ4OF90IF9fcDIpIHsKICB1aW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92Y29tYmluZV91OChfX3JldjAsIF9fbm9zd2FwX3ZyYWRkaG5fdTE2KF9fcmV2MSwgX19yZXYyKSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDhfdCB2cmFkZGhuX2hpZ2hfczMyKGludDE2eDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSwgaW50MzJ4NF90IF9fcDIpIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSB2Y29tYmluZV9zMTYoX19wMCwgdnJhZGRobl9zMzIoX19wMSwgX19wMikpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDhfdCB2cmFkZGhuX2hpZ2hfczMyKGludDE2eDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSwgaW50MzJ4NF90IF9fcDIpIHsKICBpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92Y29tYmluZV9zMTYoX19yZXYwLCBfX25vc3dhcF92cmFkZGhuX3MzMihfX3JldjEsIF9fcmV2MikpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMng0X3QgdnJhZGRobl9oaWdoX3M2NChpbnQzMngyX3QgX19wMCwgaW50NjR4Ml90IF9fcDEsIGludDY0eDJfdCBfX3AyKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gdmNvbWJpbmVfczMyKF9fcDAsIHZyYWRkaG5fczY0KF9fcDEsIF9fcDIpKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMng0X3QgdnJhZGRobl9oaWdoX3M2NChpbnQzMngyX3QgX19wMCwgaW50NjR4Ml90IF9fcDEsIGludDY0eDJfdCBfX3AyKSB7CiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBpbnQ2NHgyX3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdmNvbWJpbmVfczMyKF9fcmV2MCwgX19ub3N3YXBfdnJhZGRobl9zNjQoX19yZXYxLCBfX3JldjIpKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHgxNl90IHZyYWRkaG5faGlnaF9zMTYoaW50OHg4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEsIGludDE2eDhfdCBfX3AyKSB7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gdmNvbWJpbmVfczgoX19wMCwgdnJhZGRobl9zMTYoX19wMSwgX19wMikpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4MTZfdCB2cmFkZGhuX2hpZ2hfczE2KGludDh4OF90IF9fcDAsIGludDE2eDhfdCBfX3AxLCBpbnQxNng4X3QgX19wMikgewogIGludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdmNvbWJpbmVfczgoX19yZXYwLCBfX25vc3dhcF92cmFkZGhuX3MxNihfX3JldjEsIF9fcmV2MikpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBwb2x5OHg4X3QgdnJiaXRfcDgocG9seTh4OF90IF9fcDApIHsKICBwb2x5OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTh4OF90KSBfX2J1aWx0aW5fbmVvbl92cmJpdF92KChpbnQ4eDhfdClfX3AwLCA0KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBwb2x5OHg4X3QgdnJiaXRfcDgocG9seTh4OF90IF9fcDApIHsKICBwb2x5OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHBvbHk4eDhfdCkgX19idWlsdGluX25lb25fdnJiaXRfdigoaW50OHg4X3QpX19yZXYwLCA0KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgcG9seTh4MTZfdCB2cmJpdHFfcDgocG9seTh4MTZfdCBfX3AwKSB7CiAgcG9seTh4MTZfdCBfX3JldDsKICBfX3JldCA9IChwb2x5OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92cmJpdHFfdigoaW50OHgxNl90KV9fcDAsIDM2KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBwb2x5OHgxNl90IHZyYml0cV9wOChwb2x5OHgxNl90IF9fcDApIHsKICBwb2x5OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHBvbHk4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAocG9seTh4MTZfdCkgX19idWlsdGluX25lb25fdnJiaXRxX3YoKGludDh4MTZfdClfX3JldjAsIDM2KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4MTZfdCB2cmJpdHFfdTgodWludDh4MTZfdCBfX3AwKSB7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92cmJpdHFfdigoaW50OHgxNl90KV9fcDAsIDQ4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHgxNl90IHZyYml0cV91OCh1aW50OHgxNl90IF9fcDApIHsKICB1aW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkgX19idWlsdGluX25lb25fdnJiaXRxX3YoKGludDh4MTZfdClfX3JldjAsIDQ4KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHgxNl90IHZyYml0cV9zOChpbnQ4eDE2X3QgX19wMCkgewogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3ZyYml0cV92KChpbnQ4eDE2X3QpX19wMCwgMzIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4MTZfdCB2cmJpdHFfczgoaW50OHgxNl90IF9fcDApIHsKICBpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4MTZfdCkgX19idWlsdGluX25lb25fdnJiaXRxX3YoKGludDh4MTZfdClfX3JldjAsIDMyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4OF90IHZyYml0X3U4KHVpbnQ4eDhfdCBfX3AwKSB7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnJiaXRfdigoaW50OHg4X3QpX19wMCwgMTYpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDhfdCB2cmJpdF91OCh1aW50OHg4X3QgX19wMCkgewogIHVpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92cmJpdF92KChpbnQ4eDhfdClfX3JldjAsIDE2KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHg4X3QgdnJiaXRfczgoaW50OHg4X3QgX19wMCkgewogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92cmJpdF92KChpbnQ4eDhfdClfX3AwLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ4eDhfdCB2cmJpdF9zOChpbnQ4eDhfdCBfX3AwKSB7CiAgaW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHg4X3QpIF9fYnVpbHRpbl9uZW9uX3ZyYml0X3YoKGludDh4OF90KV9fcmV2MCwgMCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0NjR4Ml90IHZyZWNwZXFfZjY0KGZsb2F0NjR4Ml90IF9fcDApIHsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDJfdCkgX19idWlsdGluX25lb25fdnJlY3BlcV92KChpbnQ4eDE2X3QpX19wMCwgNDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0NjR4Ml90IHZyZWNwZXFfZjY0KGZsb2F0NjR4Ml90IF9fcDApIHsKICBmbG9hdDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDJfdCkgX19idWlsdGluX25lb25fdnJlY3BlcV92KChpbnQ4eDE2X3QpX19yZXYwLCA0Mik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCl9fYWkgZmxvYXQ2NHgxX3QgdnJlY3BlX2Y2NChmbG9hdDY0eDFfdCBfX3AwKSB7CiAgZmxvYXQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3ZyZWNwZV92KChpbnQ4eDhfdClfX3AwLCAxMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQ2NF90IHZyZWNwZWRfZjY0KGZsb2F0NjRfdCBfX3AwKSB7CiAgZmxvYXQ2NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjRfdCkgX19idWlsdGluX25lb25fdnJlY3BlZF9mNjQoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQzMl90IHZyZWNwZXNfZjMyKGZsb2F0MzJfdCBfX3AwKSB7CiAgZmxvYXQzMl90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJfdCkgX19idWlsdGluX25lb25fdnJlY3Blc19mMzIoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0NjR4Ml90IHZyZWNwc3FfZjY0KGZsb2F0NjR4Ml90IF9fcDAsIGZsb2F0NjR4Ml90IF9fcDEpIHsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDJfdCkgX19idWlsdGluX25lb25fdnJlY3BzcV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA0Mik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQ2NHgyX3QgdnJlY3BzcV9mNjQoZmxvYXQ2NHgyX3QgX19wMCwgZmxvYXQ2NHgyX3QgX19wMSkgewogIGZsb2F0NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92cmVjcHNxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA0Mik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCl9fYWkgZmxvYXQ2NHgxX3QgdnJlY3BzX2Y2NChmbG9hdDY0eDFfdCBfX3AwLCBmbG9hdDY0eDFfdCBfX3AxKSB7CiAgZmxvYXQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3ZyZWNwc192KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMTApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0NjRfdCB2cmVjcHNkX2Y2NChmbG9hdDY0X3QgX19wMCwgZmxvYXQ2NF90IF9fcDEpIHsKICBmbG9hdDY0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQ2NF90KSBfX2J1aWx0aW5fbmVvbl92cmVjcHNkX2Y2NChfX3AwLCBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBmbG9hdDMyX3QgdnJlY3Bzc19mMzIoZmxvYXQzMl90IF9fcDAsIGZsb2F0MzJfdCBfX3AxKSB7CiAgZmxvYXQzMl90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJfdCkgX19idWlsdGluX25lb25fdnJlY3Bzc19mMzIoX19wMCwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQ2NF90IHZyZWNweGRfZjY0KGZsb2F0NjRfdCBfX3AwKSB7CiAgZmxvYXQ2NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjRfdCkgX19idWlsdGluX25lb25fdnJlY3B4ZF9mNjQoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQzMl90IHZyZWNweHNfZjMyKGZsb2F0MzJfdCBfX3AwKSB7CiAgZmxvYXQzMl90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJfdCkgX19idWlsdGluX25lb25fdnJlY3B4c19mMzIoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDY0X3QgdnJzaGxkX3U2NCh1aW50NjRfdCBfX3AwLCBpbnQ2NF90IF9fcDEpIHsKICB1aW50NjRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjRfdCkgX19idWlsdGluX25lb25fdnJzaGxkX3U2NChfX3AwLCBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQ2NF90IHZyc2hsZF9zNjQoaW50NjRfdCBfX3AwLCBpbnQ2NF90IF9fcDEpIHsKICBpbnQ2NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3Zyc2hsZF9zNjQoX19wMCwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNkZWZpbmUgdnJzaHJkX25fdTY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NF90IF9fczAgPSBfX3AwOyBcCiAgdWludDY0X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50NjRfdCkgX19idWlsdGluX25lb25fdnJzaHJkX25fdTY0KF9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2cnNocmRfbl9zNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjRfdCBfX3MwID0gX19wMDsgXAogIGludDY0X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ2NF90KSBfX2J1aWx0aW5fbmVvbl92cnNocmRfbl9zNjQoX19zMCwgX19wMSk7IFwKICBfX3JldDsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cnNocm5faGlnaF9uX3UzMihfX3AwXzc5MSwgX19wMV83OTEsIF9fcDJfNzkxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4NF90IF9fczBfNzkxID0gX19wMF83OTE7IFwKICB1aW50MzJ4NF90IF9fczFfNzkxID0gX19wMV83OTE7IFwKICB1aW50MTZ4OF90IF9fcmV0Xzc5MTsgXAogIF9fcmV0Xzc5MSA9ICh1aW50MTZ4OF90KSh2Y29tYmluZV91MTYoKHVpbnQxNng0X3QpKF9fczBfNzkxKSwgKHVpbnQxNng0X3QpKHZyc2hybl9uX3UzMihfX3MxXzc5MSwgX19wMl83OTEpKSkpOyBcCiAgX19yZXRfNzkxOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnJzaHJuX2hpZ2hfbl91MzIoX19wMF83OTIsIF9fcDFfNzkyLCBfX3AyXzc5MikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDRfdCBfX3MwXzc5MiA9IF9fcDBfNzkyOyBcCiAgdWludDMyeDRfdCBfX3MxXzc5MiA9IF9fcDFfNzkyOyBcCiAgdWludDE2eDRfdCBfX3JldjBfNzkyOyAgX19yZXYwXzc5MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNzkyLCBfX3MwXzc5MiwgMywgMiwgMSwgMCk7IFwKICB1aW50MzJ4NF90IF9fcmV2MV83OTI7ICBfX3JldjFfNzkyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV83OTIsIF9fczFfNzkyLCAzLCAyLCAxLCAwKTsgXAogIHVpbnQxNng4X3QgX19yZXRfNzkyOyBcCiAgX19yZXRfNzkyID0gKHVpbnQxNng4X3QpKF9fbm9zd2FwX3Zjb21iaW5lX3UxNigodWludDE2eDRfdCkoX19yZXYwXzc5MiksICh1aW50MTZ4NF90KShfX25vc3dhcF92cnNocm5fbl91MzIoX19yZXYxXzc5MiwgX19wMl83OTIpKSkpOyBcCiAgX19yZXRfNzkyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfNzkyLCBfX3JldF83OTIsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfNzkyOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnJzaHJuX2hpZ2hfbl91NjQoX19wMF83OTMsIF9fcDFfNzkzLCBfX3AyXzc5MykgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDMyeDJfdCBfX3MwXzc5MyA9IF9fcDBfNzkzOyBcCiAgdWludDY0eDJfdCBfX3MxXzc5MyA9IF9fcDFfNzkzOyBcCiAgdWludDMyeDRfdCBfX3JldF83OTM7IFwKICBfX3JldF83OTMgPSAodWludDMyeDRfdCkodmNvbWJpbmVfdTMyKCh1aW50MzJ4Ml90KShfX3MwXzc5MyksICh1aW50MzJ4Ml90KSh2cnNocm5fbl91NjQoX19zMV83OTMsIF9fcDJfNzkzKSkpKTsgXAogIF9fcmV0Xzc5MzsgXAp9KQojZWxzZQojZGVmaW5lIHZyc2hybl9oaWdoX25fdTY0KF9fcDBfNzk0LCBfX3AxXzc5NCwgX19wMl83OTQpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMngyX3QgX19zMF83OTQgPSBfX3AwXzc5NDsgXAogIHVpbnQ2NHgyX3QgX19zMV83OTQgPSBfX3AxXzc5NDsgXAogIHVpbnQzMngyX3QgX19yZXYwXzc5NDsgIF9fcmV2MF83OTQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzc5NCwgX19zMF83OTQsIDEsIDApOyBcCiAgdWludDY0eDJfdCBfX3JldjFfNzk0OyAgX19yZXYxXzc5NCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfNzk0LCBfX3MxXzc5NCwgMSwgMCk7IFwKICB1aW50MzJ4NF90IF9fcmV0Xzc5NDsgXAogIF9fcmV0Xzc5NCA9ICh1aW50MzJ4NF90KShfX25vc3dhcF92Y29tYmluZV91MzIoKHVpbnQzMngyX3QpKF9fcmV2MF83OTQpLCAodWludDMyeDJfdCkoX19ub3N3YXBfdnJzaHJuX25fdTY0KF9fcmV2MV83OTQsIF9fcDJfNzk0KSkpKTsgXAogIF9fcmV0Xzc5NCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0Xzc5NCwgX19yZXRfNzk0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0Xzc5NDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZyc2hybl9oaWdoX25fdTE2KF9fcDBfNzk1LCBfX3AxXzc5NSwgX19wMl83OTUpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDhfdCBfX3MwXzc5NSA9IF9fcDBfNzk1OyBcCiAgdWludDE2eDhfdCBfX3MxXzc5NSA9IF9fcDFfNzk1OyBcCiAgdWludDh4MTZfdCBfX3JldF83OTU7IFwKICBfX3JldF83OTUgPSAodWludDh4MTZfdCkodmNvbWJpbmVfdTgoKHVpbnQ4eDhfdCkoX19zMF83OTUpLCAodWludDh4OF90KSh2cnNocm5fbl91MTYoX19zMV83OTUsIF9fcDJfNzk1KSkpKTsgXAogIF9fcmV0Xzc5NTsgXAp9KQojZWxzZQojZGVmaW5lIHZyc2hybl9oaWdoX25fdTE2KF9fcDBfNzk2LCBfX3AxXzc5NiwgX19wMl83OTYpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ4eDhfdCBfX3MwXzc5NiA9IF9fcDBfNzk2OyBcCiAgdWludDE2eDhfdCBfX3MxXzc5NiA9IF9fcDFfNzk2OyBcCiAgdWludDh4OF90IF9fcmV2MF83OTY7ICBfX3JldjBfNzk2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF83OTYsIF9fczBfNzk2LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQxNng4X3QgX19yZXYxXzc5NjsgIF9fcmV2MV83OTYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzc5NiwgX19zMV83OTYsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDh4MTZfdCBfX3JldF83OTY7IFwKICBfX3JldF83OTYgPSAodWludDh4MTZfdCkoX19ub3N3YXBfdmNvbWJpbmVfdTgoKHVpbnQ4eDhfdCkoX19yZXYwXzc5NiksICh1aW50OHg4X3QpKF9fbm9zd2FwX3Zyc2hybl9uX3UxNihfX3JldjFfNzk2LCBfX3AyXzc5NikpKSk7IFwKICBfX3JldF83OTYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF83OTYsIF9fcmV0Xzc5NiwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF83OTY7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cnNocm5faGlnaF9uX3MzMihfX3AwXzc5NywgX19wMV83OTcsIF9fcDJfNzk3KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng0X3QgX19zMF83OTcgPSBfX3AwXzc5NzsgXAogIGludDMyeDRfdCBfX3MxXzc5NyA9IF9fcDFfNzk3OyBcCiAgaW50MTZ4OF90IF9fcmV0Xzc5NzsgXAogIF9fcmV0Xzc5NyA9IChpbnQxNng4X3QpKHZjb21iaW5lX3MxNigoaW50MTZ4NF90KShfX3MwXzc5NyksIChpbnQxNng0X3QpKHZyc2hybl9uX3MzMihfX3MxXzc5NywgX19wMl83OTcpKSkpOyBcCiAgX19yZXRfNzk3OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnJzaHJuX2hpZ2hfbl9zMzIoX19wMF83OTgsIF9fcDFfNzk4LCBfX3AyXzc5OCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZ4NF90IF9fczBfNzk4ID0gX19wMF83OTg7IFwKICBpbnQzMng0X3QgX19zMV83OTggPSBfX3AxXzc5ODsgXAogIGludDE2eDRfdCBfX3JldjBfNzk4OyAgX19yZXYwXzc5OCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfNzk4LCBfX3MwXzc5OCwgMywgMiwgMSwgMCk7IFwKICBpbnQzMng0X3QgX19yZXYxXzc5ODsgIF9fcmV2MV83OTggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzc5OCwgX19zMV83OTgsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4OF90IF9fcmV0Xzc5ODsgXAogIF9fcmV0Xzc5OCA9IChpbnQxNng4X3QpKF9fbm9zd2FwX3Zjb21iaW5lX3MxNigoaW50MTZ4NF90KShfX3JldjBfNzk4KSwgKGludDE2eDRfdCkoX19ub3N3YXBfdnJzaHJuX25fczMyKF9fcmV2MV83OTgsIF9fcDJfNzk4KSkpKTsgXAogIF9fcmV0Xzc5OCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0Xzc5OCwgX19yZXRfNzk4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0Xzc5ODsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZyc2hybl9oaWdoX25fczY0KF9fcDBfNzk5LCBfX3AxXzc5OSwgX19wMl83OTkpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJfdCBfX3MwXzc5OSA9IF9fcDBfNzk5OyBcCiAgaW50NjR4Ml90IF9fczFfNzk5ID0gX19wMV83OTk7IFwKICBpbnQzMng0X3QgX19yZXRfNzk5OyBcCiAgX19yZXRfNzk5ID0gKGludDMyeDRfdCkodmNvbWJpbmVfczMyKChpbnQzMngyX3QpKF9fczBfNzk5KSwgKGludDMyeDJfdCkodnJzaHJuX25fczY0KF9fczFfNzk5LCBfX3AyXzc5OSkpKSk7IFwKICBfX3JldF83OTk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cnNocm5faGlnaF9uX3M2NChfX3AwXzgwMCwgX19wMV84MDAsIF9fcDJfODAwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMngyX3QgX19zMF84MDAgPSBfX3AwXzgwMDsgXAogIGludDY0eDJfdCBfX3MxXzgwMCA9IF9fcDFfODAwOyBcCiAgaW50MzJ4Ml90IF9fcmV2MF84MDA7ICBfX3JldjBfODAwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF84MDAsIF9fczBfODAwLCAxLCAwKTsgXAogIGludDY0eDJfdCBfX3JldjFfODAwOyAgX19yZXYxXzgwMCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfODAwLCBfX3MxXzgwMCwgMSwgMCk7IFwKICBpbnQzMng0X3QgX19yZXRfODAwOyBcCiAgX19yZXRfODAwID0gKGludDMyeDRfdCkoX19ub3N3YXBfdmNvbWJpbmVfczMyKChpbnQzMngyX3QpKF9fcmV2MF84MDApLCAoaW50MzJ4Ml90KShfX25vc3dhcF92cnNocm5fbl9zNjQoX19yZXYxXzgwMCwgX19wMl84MDApKSkpOyBcCiAgX19yZXRfODAwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfODAwLCBfX3JldF84MDAsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfODAwOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnJzaHJuX2hpZ2hfbl9zMTYoX19wMF84MDEsIF9fcDFfODAxLCBfX3AyXzgwMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHg4X3QgX19zMF84MDEgPSBfX3AwXzgwMTsgXAogIGludDE2eDhfdCBfX3MxXzgwMSA9IF9fcDFfODAxOyBcCiAgaW50OHgxNl90IF9fcmV0XzgwMTsgXAogIF9fcmV0XzgwMSA9IChpbnQ4eDE2X3QpKHZjb21iaW5lX3M4KChpbnQ4eDhfdCkoX19zMF84MDEpLCAoaW50OHg4X3QpKHZyc2hybl9uX3MxNihfX3MxXzgwMSwgX19wMl84MDEpKSkpOyBcCiAgX19yZXRfODAxOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnJzaHJuX2hpZ2hfbl9zMTYoX19wMF84MDIsIF9fcDFfODAyLCBfX3AyXzgwMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHg4X3QgX19zMF84MDIgPSBfX3AwXzgwMjsgXAogIGludDE2eDhfdCBfX3MxXzgwMiA9IF9fcDFfODAyOyBcCiAgaW50OHg4X3QgX19yZXYwXzgwMjsgIF9fcmV2MF84MDIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzgwMiwgX19zMF84MDIsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4OF90IF9fcmV2MV84MDI7ICBfX3JldjFfODAyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV84MDIsIF9fczFfODAyLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDh4MTZfdCBfX3JldF84MDI7IFwKICBfX3JldF84MDIgPSAoaW50OHgxNl90KShfX25vc3dhcF92Y29tYmluZV9zOCgoaW50OHg4X3QpKF9fcmV2MF84MDIpLCAoaW50OHg4X3QpKF9fbm9zd2FwX3Zyc2hybl9uX3MxNihfX3JldjFfODAyLCBfX3AyXzgwMikpKSk7IFwKICBfX3JldF84MDIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF84MDIsIF9fcmV0XzgwMiwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF84MDI7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDY0eDJfdCB2cnNxcnRlcV9mNjQoZmxvYXQ2NHgyX3QgX19wMCkgewogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92cnNxcnRlcV92KChpbnQ4eDE2X3QpX19wMCwgNDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0NjR4Ml90IHZyc3FydGVxX2Y2NChmbG9hdDY0eDJfdCBfX3AwKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3Zyc3FydGVxX3YoKGludDh4MTZfdClfX3JldjAsIDQyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKX19haSBmbG9hdDY0eDFfdCB2cnNxcnRlX2Y2NChmbG9hdDY0eDFfdCBfX3AwKSB7CiAgZmxvYXQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3Zyc3FydGVfdigoaW50OHg4X3QpX19wMCwgMTApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGZsb2F0NjRfdCB2cnNxcnRlZF9mNjQoZmxvYXQ2NF90IF9fcDApIHsKICBmbG9hdDY0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQ2NF90KSBfX2J1aWx0aW5fbmVvbl92cnNxcnRlZF9mNjQoX19wMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQzMl90IHZyc3FydGVzX2YzMihmbG9hdDMyX3QgX19wMCkgewogIGZsb2F0MzJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyX3QpIF9fYnVpbHRpbl9uZW9uX3Zyc3FydGVzX2YzMihfX3AwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQ2NHgyX3QgdnJzcXJ0c3FfZjY0KGZsb2F0NjR4Ml90IF9fcDAsIGZsb2F0NjR4Ml90IF9fcDEpIHsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDJfdCkgX19idWlsdGluX25lb25fdnJzcXJ0c3FfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0NjR4Ml90IHZyc3FydHNxX2Y2NChmbG9hdDY0eDJfdCBfX3AwLCBmbG9hdDY0eDJfdCBfX3AxKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgZmxvYXQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3Zyc3FydHNxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA0Mik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCl9fYWkgZmxvYXQ2NHgxX3QgdnJzcXJ0c19mNjQoZmxvYXQ2NHgxX3QgX19wMCwgZmxvYXQ2NHgxX3QgX19wMSkgewogIGZsb2F0NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92cnNxcnRzX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAxMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQ2NF90IHZyc3FydHNkX2Y2NChmbG9hdDY0X3QgX19wMCwgZmxvYXQ2NF90IF9fcDEpIHsKICBmbG9hdDY0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQ2NF90KSBfX2J1aWx0aW5fbmVvbl92cnNxcnRzZF9mNjQoX19wMCwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgZmxvYXQzMl90IHZyc3FydHNzX2YzMihmbG9hdDMyX3QgX19wMCwgZmxvYXQzMl90IF9fcDEpIHsKICBmbG9hdDMyX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMl90KSBfX2J1aWx0aW5fbmVvbl92cnNxcnRzc19mMzIoX19wMCwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNkZWZpbmUgdnJzcmFkX25fdTY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NF90IF9fczAgPSBfX3AwOyBcCiAgdWludDY0X3QgX19zMSA9IF9fcDE7IFwKICB1aW50NjRfdCBfX3JldDsgXAogIF9fcmV0ID0gKHVpbnQ2NF90KSBfX2J1aWx0aW5fbmVvbl92cnNyYWRfbl91NjQoX19zMCwgX19zMSwgX19wMik7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZyc3JhZF9uX3M2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NF90IF9fczAgPSBfX3AwOyBcCiAgaW50NjRfdCBfX3MxID0gX19wMTsgXAogIGludDY0X3QgX19yZXQ7IFwKICBfX3JldCA9IChpbnQ2NF90KSBfX2J1aWx0aW5fbmVvbl92cnNyYWRfbl9zNjQoX19zMCwgX19zMSwgX19wMik7IFwKICBfX3JldDsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4OF90IHZyc3ViaG5faGlnaF91MzIodWludDE2eDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEsIHVpbnQzMng0X3QgX19wMikgewogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSB2Y29tYmluZV91MTYoX19wMCwgdnJzdWJobl91MzIoX19wMSwgX19wMikpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng4X3QgdnJzdWJobl9oaWdoX3UzMih1aW50MTZ4NF90IF9fcDAsIHVpbnQzMng0X3QgX19wMSwgdWludDMyeDRfdCBfX3AyKSB7CiAgdWludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3Zjb21iaW5lX3UxNihfX3JldjAsIF9fbm9zd2FwX3Zyc3ViaG5fdTMyKF9fcmV2MSwgX19yZXYyKSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMng0X3QgdnJzdWJobl9oaWdoX3U2NCh1aW50MzJ4Ml90IF9fcDAsIHVpbnQ2NHgyX3QgX19wMSwgdWludDY0eDJfdCBfX3AyKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IHZjb21iaW5lX3UzMihfX3AwLCB2cnN1YmhuX3U2NChfX3AxLCBfX3AyKSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2cnN1YmhuX2hpZ2hfdTY0KHVpbnQzMngyX3QgX19wMCwgdWludDY0eDJfdCBfX3AxLCB1aW50NjR4Ml90IF9fcDIpIHsKICB1aW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdmNvbWJpbmVfdTMyKF9fcmV2MCwgX19ub3N3YXBfdnJzdWJobl91NjQoX19yZXYxLCBfX3JldjIpKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4MTZfdCB2cnN1YmhuX2hpZ2hfdTE2KHVpbnQ4eDhfdCBfX3AwLCB1aW50MTZ4OF90IF9fcDEsIHVpbnQxNng4X3QgX19wMikgewogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSB2Y29tYmluZV91OChfX3AwLCB2cnN1YmhuX3UxNihfX3AxLCBfX3AyKSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4MTZfdCB2cnN1YmhuX2hpZ2hfdTE2KHVpbnQ4eDhfdCBfX3AwLCB1aW50MTZ4OF90IF9fcDEsIHVpbnQxNng4X3QgX19wMikgewogIHVpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3Zjb21iaW5lX3U4KF9fcmV2MCwgX19ub3N3YXBfdnJzdWJobl91MTYoX19yZXYxLCBfX3JldjIpKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZ4OF90IHZyc3ViaG5faGlnaF9zMzIoaW50MTZ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxLCBpbnQzMng0X3QgX19wMikgewogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IHZjb21iaW5lX3MxNihfX3AwLCB2cnN1YmhuX3MzMihfX3AxLCBfX3AyKSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4OF90IHZyc3ViaG5faGlnaF9zMzIoaW50MTZ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxLCBpbnQzMng0X3QgX19wMikgewogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3Zjb21iaW5lX3MxNihfX3JldjAsIF9fbm9zd2FwX3Zyc3ViaG5fczMyKF9fcmV2MSwgX19yZXYyKSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDRfdCB2cnN1YmhuX2hpZ2hfczY0KGludDMyeDJfdCBfX3AwLCBpbnQ2NHgyX3QgX19wMSwgaW50NjR4Ml90IF9fcDIpIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSB2Y29tYmluZV9zMzIoX19wMCwgdnJzdWJobl9zNjQoX19wMSwgX19wMikpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDRfdCB2cnN1YmhuX2hpZ2hfczY0KGludDMyeDJfdCBfX3AwLCBpbnQ2NHgyX3QgX19wMSwgaW50NjR4Ml90IF9fcDIpIHsKICBpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGludDY0eDJfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92Y29tYmluZV9zMzIoX19yZXYwLCBfX25vc3dhcF92cnN1YmhuX3M2NChfX3JldjEsIF9fcmV2MikpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDE2X3QgdnJzdWJobl9oaWdoX3MxNihpbnQ4eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSwgaW50MTZ4OF90IF9fcDIpIHsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSB2Y29tYmluZV9zOChfX3AwLCB2cnN1YmhuX3MxNihfX3AxLCBfX3AyKSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OHgxNl90IHZyc3ViaG5faGlnaF9zMTYoaW50OHg4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEsIGludDE2eDhfdCBfX3AyKSB7CiAgaW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92Y29tYmluZV9zOChfX3JldjAsIF9fbm9zd2FwX3Zyc3ViaG5fczE2KF9fcmV2MSwgX19yZXYyKSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNkZWZpbmUgdnNldF9sYW5lX3A2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5NjRfdCBfX3MwID0gX19wMDsgXAogIHBvbHk2NHgxX3QgX19zMSA9IF9fcDE7IFwKICBwb2x5NjR4MV90IF9fcmV0OyBcCiAgX19yZXQgPSAocG9seTY0eDFfdCkgX19idWlsdGluX25lb25fdnNldF9sYW5lX2k2NChfX3MwLCAocG9seTY0eDFfdClfX3MxLCBfX3AyKTsgXAogIF9fcmV0OyBcCn0pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzZXRxX2xhbmVfcDY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk2NF90IF9fczAgPSBfX3AwOyBcCiAgcG9seTY0eDJfdCBfX3MxID0gX19wMTsgXAogIHBvbHk2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92c2V0cV9sYW5lX2k2NChfX3MwLCAocG9seTY0eDJfdClfX3MxLCBfX3AyKTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNldHFfbGFuZV9wNjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTY0X3QgX19zMCA9IF9fcDA7IFwKICBwb2x5NjR4Ml90IF9fczEgPSBfX3AxOyBcCiAgcG9seTY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAxLCAwKTsgXAogIHBvbHk2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92c2V0cV9sYW5lX2k2NChfX3MwLCAocG9seTY0eDJfdClfX3JldjEsIF9fcDIpOyBcCiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSBfX25vc3dhcF92c2V0cV9sYW5lX3A2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5NjRfdCBfX3MwID0gX19wMDsgXAogIHBvbHk2NHgyX3QgX19zMSA9IF9fcDE7IFwKICBwb2x5NjR4Ml90IF9fcmV0OyBcCiAgX19yZXQgPSAocG9seTY0eDJfdCkgX19idWlsdGluX25lb25fdnNldHFfbGFuZV9pNjQoX19zMCwgKHBvbHk2NHgyX3QpX19zMSwgX19wMik7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzZXRxX2xhbmVfZjY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjRfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0NjR4Ml90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQ2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDY0eDJfdCkgX19idWlsdGluX25lb25fdnNldHFfbGFuZV9mNjQoX19zMCwgKGZsb2F0NjR4Ml90KV9fczEsIF9fcDIpOyBcCiAgX19yZXQ7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c2V0cV9sYW5lX2Y2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0X3QgX19zMCA9IF9fcDA7IFwKICBmbG9hdDY0eDJfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDEsIDApOyBcCiAgZmxvYXQ2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDY0eDJfdCkgX19idWlsdGluX25lb25fdnNldHFfbGFuZV9mNjQoX19zMCwgKGZsb2F0NjR4Ml90KV9fcmV2MSwgX19wMik7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3ZzZXRxX2xhbmVfZjY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjRfdCBfX3MwID0gX19wMDsgXAogIGZsb2F0NjR4Ml90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQ2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9IChmbG9hdDY0eDJfdCkgX19idWlsdGluX25lb25fdnNldHFfbGFuZV9mNjQoX19zMCwgKGZsb2F0NjR4Ml90KV9fczEsIF9fcDIpOyBcCiAgX19yZXQ7IFwKfSkKI2VuZGlmCgojZGVmaW5lIHZzZXRfbGFuZV9mNjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NF90IF9fczAgPSBfX3AwOyBcCiAgZmxvYXQ2NHgxX3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDY0eDFfdCBfX3JldDsgXAogIF9fcmV0ID0gKGZsb2F0NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92c2V0X2xhbmVfZjY0KF9fczAsIChmbG9hdDY0eDFfdClfX3MxLCBfX3AyKTsgXAogIF9fcmV0OyBcCn0pCl9fYWkgdWludDY0X3QgdnNobGRfdTY0KHVpbnQ2NF90IF9fcDAsIGludDY0X3QgX19wMSkgewogIHVpbnQ2NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NF90KSBfX2J1aWx0aW5fbmVvbl92c2hsZF91NjQoX19wMCwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50NjRfdCB2c2hsZF9zNjQoaW50NjRfdCBfX3AwLCBpbnQ2NF90IF9fcDEpIHsKICBpbnQ2NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzaGxkX3M2NChfX3AwLCBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2RlZmluZSB2c2hsZF9uX3U2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjRfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ2NF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzaGxkX25fdTY0KF9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2c2hsZF9uX3M2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NF90IF9fczAgPSBfX3AwOyBcCiAgaW50NjRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzaGxkX25fczY0KF9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNobGxfaGlnaF9uX3U4KF9fcDBfODAzLCBfX3AxXzgwMykgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4MTZfdCBfX3MwXzgwMyA9IF9fcDBfODAzOyBcCiAgdWludDE2eDhfdCBfX3JldF84MDM7IFwKICBfX3JldF84MDMgPSAodWludDE2eDhfdCkodnNobGxfbl91OCh2Z2V0X2hpZ2hfdTgoX19zMF84MDMpLCBfX3AxXzgwMykpOyBcCiAgX19yZXRfODAzOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNobGxfaGlnaF9uX3U4KF9fcDBfODA0LCBfX3AxXzgwNCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4MTZfdCBfX3MwXzgwNCA9IF9fcDBfODA0OyBcCiAgdWludDh4MTZfdCBfX3JldjBfODA0OyAgX19yZXYwXzgwNCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfODA0LCBfX3MwXzgwNCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50MTZ4OF90IF9fcmV0XzgwNDsgXAogIF9fcmV0XzgwNCA9ICh1aW50MTZ4OF90KShfX25vc3dhcF92c2hsbF9uX3U4KF9fbm9zd2FwX3ZnZXRfaGlnaF91OChfX3JldjBfODA0KSwgX19wMV84MDQpKTsgXAogIF9fcmV0XzgwNCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzgwNCwgX19yZXRfODA0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzgwNDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzaGxsX2hpZ2hfbl91MzIoX19wMF84MDUsIF9fcDFfODA1KSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NF90IF9fczBfODA1ID0gX19wMF84MDU7IFwKICB1aW50NjR4Ml90IF9fcmV0XzgwNTsgXAogIF9fcmV0XzgwNSA9ICh1aW50NjR4Ml90KSh2c2hsbF9uX3UzMih2Z2V0X2hpZ2hfdTMyKF9fczBfODA1KSwgX19wMV84MDUpKTsgXAogIF9fcmV0XzgwNTsgXAp9KQojZWxzZQojZGVmaW5lIHZzaGxsX2hpZ2hfbl91MzIoX19wMF84MDYsIF9fcDFfODA2KSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4NF90IF9fczBfODA2ID0gX19wMF84MDY7IFwKICB1aW50MzJ4NF90IF9fcmV2MF84MDY7ICBfX3JldjBfODA2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF84MDYsIF9fczBfODA2LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQ2NHgyX3QgX19yZXRfODA2OyBcCiAgX19yZXRfODA2ID0gKHVpbnQ2NHgyX3QpKF9fbm9zd2FwX3ZzaGxsX25fdTMyKF9fbm9zd2FwX3ZnZXRfaGlnaF91MzIoX19yZXYwXzgwNiksIF9fcDFfODA2KSk7IFwKICBfX3JldF84MDYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF84MDYsIF9fcmV0XzgwNiwgMSwgMCk7IFwKICBfX3JldF84MDY7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c2hsbF9oaWdoX25fdTE2KF9fcDBfODA3LCBfX3AxXzgwNykgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDhfdCBfX3MwXzgwNyA9IF9fcDBfODA3OyBcCiAgdWludDMyeDRfdCBfX3JldF84MDc7IFwKICBfX3JldF84MDcgPSAodWludDMyeDRfdCkodnNobGxfbl91MTYodmdldF9oaWdoX3UxNihfX3MwXzgwNyksIF9fcDFfODA3KSk7IFwKICBfX3JldF84MDc7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c2hsbF9oaWdoX25fdTE2KF9fcDBfODA4LCBfX3AxXzgwOCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDE2eDhfdCBfX3MwXzgwOCA9IF9fcDBfODA4OyBcCiAgdWludDE2eDhfdCBfX3JldjBfODA4OyAgX19yZXYwXzgwOCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfODA4LCBfX3MwXzgwOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50MzJ4NF90IF9fcmV0XzgwODsgXAogIF9fcmV0XzgwOCA9ICh1aW50MzJ4NF90KShfX25vc3dhcF92c2hsbF9uX3UxNihfX25vc3dhcF92Z2V0X2hpZ2hfdTE2KF9fcmV2MF84MDgpLCBfX3AxXzgwOCkpOyBcCiAgX19yZXRfODA4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfODA4LCBfX3JldF84MDgsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfODA4OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNobGxfaGlnaF9uX3M4KF9fcDBfODA5LCBfX3AxXzgwOSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHgxNl90IF9fczBfODA5ID0gX19wMF84MDk7IFwKICBpbnQxNng4X3QgX19yZXRfODA5OyBcCiAgX19yZXRfODA5ID0gKGludDE2eDhfdCkodnNobGxfbl9zOCh2Z2V0X2hpZ2hfczgoX19zMF84MDkpLCBfX3AxXzgwOSkpOyBcCiAgX19yZXRfODA5OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNobGxfaGlnaF9uX3M4KF9fcDBfODEwLCBfX3AxXzgxMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHgxNl90IF9fczBfODEwID0gX19wMF84MTA7IFwKICBpbnQ4eDE2X3QgX19yZXYwXzgxMDsgIF9fcmV2MF84MTAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzgxMCwgX19zMF84MTAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4OF90IF9fcmV0XzgxMDsgXAogIF9fcmV0XzgxMCA9IChpbnQxNng4X3QpKF9fbm9zd2FwX3ZzaGxsX25fczgoX19ub3N3YXBfdmdldF9oaWdoX3M4KF9fcmV2MF84MTApLCBfX3AxXzgxMCkpOyBcCiAgX19yZXRfODEwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfODEwLCBfX3JldF84MTAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfODEwOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNobGxfaGlnaF9uX3MzMihfX3AwXzgxMSwgX19wMV84MTEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDRfdCBfX3MwXzgxMSA9IF9fcDBfODExOyBcCiAgaW50NjR4Ml90IF9fcmV0XzgxMTsgXAogIF9fcmV0XzgxMSA9IChpbnQ2NHgyX3QpKHZzaGxsX25fczMyKHZnZXRfaGlnaF9zMzIoX19zMF84MTEpLCBfX3AxXzgxMSkpOyBcCiAgX19yZXRfODExOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNobGxfaGlnaF9uX3MzMihfX3AwXzgxMiwgX19wMV84MTIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDRfdCBfX3MwXzgxMiA9IF9fcDBfODEyOyBcCiAgaW50MzJ4NF90IF9fcmV2MF84MTI7ICBfX3JldjBfODEyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF84MTIsIF9fczBfODEyLCAzLCAyLCAxLCAwKTsgXAogIGludDY0eDJfdCBfX3JldF84MTI7IFwKICBfX3JldF84MTIgPSAoaW50NjR4Ml90KShfX25vc3dhcF92c2hsbF9uX3MzMihfX25vc3dhcF92Z2V0X2hpZ2hfczMyKF9fcmV2MF84MTIpLCBfX3AxXzgxMikpOyBcCiAgX19yZXRfODEyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfODEyLCBfX3JldF84MTIsIDEsIDApOyBcCiAgX19yZXRfODEyOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNobGxfaGlnaF9uX3MxNihfX3AwXzgxMywgX19wMV84MTMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDhfdCBfX3MwXzgxMyA9IF9fcDBfODEzOyBcCiAgaW50MzJ4NF90IF9fcmV0XzgxMzsgXAogIF9fcmV0XzgxMyA9IChpbnQzMng0X3QpKHZzaGxsX25fczE2KHZnZXRfaGlnaF9zMTYoX19zMF84MTMpLCBfX3AxXzgxMykpOyBcCiAgX19yZXRfODEzOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNobGxfaGlnaF9uX3MxNihfX3AwXzgxNCwgX19wMV84MTQpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDhfdCBfX3MwXzgxNCA9IF9fcDBfODE0OyBcCiAgaW50MTZ4OF90IF9fcmV2MF84MTQ7ICBfX3JldjBfODE0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF84MTQsIF9fczBfODE0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDRfdCBfX3JldF84MTQ7IFwKICBfX3JldF84MTQgPSAoaW50MzJ4NF90KShfX25vc3dhcF92c2hsbF9uX3MxNihfX25vc3dhcF92Z2V0X2hpZ2hfczE2KF9fcmV2MF84MTQpLCBfX3AxXzgxNCkpOyBcCiAgX19yZXRfODE0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfODE0LCBfX3JldF84MTQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfODE0OyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2c2hyZF9uX3U2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjRfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ2NF90IF9fcmV0OyBcCiAgX19yZXQgPSAodWludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzaHJkX25fdTY0KF9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2c2hyZF9uX3M2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NF90IF9fczAgPSBfX3AwOyBcCiAgaW50NjRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzaHJkX25fczY0KF9fczAsIF9fcDEpOyBcCiAgX19yZXQ7IFwKfSkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNocm5faGlnaF9uX3UzMihfX3AwXzgxNSwgX19wMV84MTUsIF9fcDJfODE1KSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MTZ4NF90IF9fczBfODE1ID0gX19wMF84MTU7IFwKICB1aW50MzJ4NF90IF9fczFfODE1ID0gX19wMV84MTU7IFwKICB1aW50MTZ4OF90IF9fcmV0XzgxNTsgXAogIF9fcmV0XzgxNSA9ICh1aW50MTZ4OF90KSh2Y29tYmluZV91MTYoKHVpbnQxNng0X3QpKF9fczBfODE1KSwgKHVpbnQxNng0X3QpKHZzaHJuX25fdTMyKF9fczFfODE1LCBfX3AyXzgxNSkpKSk7IFwKICBfX3JldF84MTU7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c2hybl9oaWdoX25fdTMyKF9fcDBfODE2LCBfX3AxXzgxNiwgX19wMl84MTYpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQxNng0X3QgX19zMF84MTYgPSBfX3AwXzgxNjsgXAogIHVpbnQzMng0X3QgX19zMV84MTYgPSBfX3AxXzgxNjsgXAogIHVpbnQxNng0X3QgX19yZXYwXzgxNjsgIF9fcmV2MF84MTYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzgxNiwgX19zMF84MTYsIDMsIDIsIDEsIDApOyBcCiAgdWludDMyeDRfdCBfX3JldjFfODE2OyAgX19yZXYxXzgxNiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfODE2LCBfX3MxXzgxNiwgMywgMiwgMSwgMCk7IFwKICB1aW50MTZ4OF90IF9fcmV0XzgxNjsgXAogIF9fcmV0XzgxNiA9ICh1aW50MTZ4OF90KShfX25vc3dhcF92Y29tYmluZV91MTYoKHVpbnQxNng0X3QpKF9fcmV2MF84MTYpLCAodWludDE2eDRfdCkoX19ub3N3YXBfdnNocm5fbl91MzIoX19yZXYxXzgxNiwgX19wMl84MTYpKSkpOyBcCiAgX19yZXRfODE2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfODE2LCBfX3JldF84MTYsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfODE2OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNocm5faGlnaF9uX3U2NChfX3AwXzgxNywgX19wMV84MTcsIF9fcDJfODE3KSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50MzJ4Ml90IF9fczBfODE3ID0gX19wMF84MTc7IFwKICB1aW50NjR4Ml90IF9fczFfODE3ID0gX19wMV84MTc7IFwKICB1aW50MzJ4NF90IF9fcmV0XzgxNzsgXAogIF9fcmV0XzgxNyA9ICh1aW50MzJ4NF90KSh2Y29tYmluZV91MzIoKHVpbnQzMngyX3QpKF9fczBfODE3KSwgKHVpbnQzMngyX3QpKHZzaHJuX25fdTY0KF9fczFfODE3LCBfX3AyXzgxNykpKSk7IFwKICBfX3JldF84MTc7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c2hybl9oaWdoX25fdTY0KF9fcDBfODE4LCBfX3AxXzgxOCwgX19wMl84MTgpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMngyX3QgX19zMF84MTggPSBfX3AwXzgxODsgXAogIHVpbnQ2NHgyX3QgX19zMV84MTggPSBfX3AxXzgxODsgXAogIHVpbnQzMngyX3QgX19yZXYwXzgxODsgIF9fcmV2MF84MTggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzgxOCwgX19zMF84MTgsIDEsIDApOyBcCiAgdWludDY0eDJfdCBfX3JldjFfODE4OyAgX19yZXYxXzgxOCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfODE4LCBfX3MxXzgxOCwgMSwgMCk7IFwKICB1aW50MzJ4NF90IF9fcmV0XzgxODsgXAogIF9fcmV0XzgxOCA9ICh1aW50MzJ4NF90KShfX25vc3dhcF92Y29tYmluZV91MzIoKHVpbnQzMngyX3QpKF9fcmV2MF84MTgpLCAodWludDMyeDJfdCkoX19ub3N3YXBfdnNocm5fbl91NjQoX19yZXYxXzgxOCwgX19wMl84MTgpKSkpOyBcCiAgX19yZXRfODE4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfODE4LCBfX3JldF84MTgsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfODE4OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNocm5faGlnaF9uX3UxNihfX3AwXzgxOSwgX19wMV84MTksIF9fcDJfODE5KSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHg4X3QgX19zMF84MTkgPSBfX3AwXzgxOTsgXAogIHVpbnQxNng4X3QgX19zMV84MTkgPSBfX3AxXzgxOTsgXAogIHVpbnQ4eDE2X3QgX19yZXRfODE5OyBcCiAgX19yZXRfODE5ID0gKHVpbnQ4eDE2X3QpKHZjb21iaW5lX3U4KCh1aW50OHg4X3QpKF9fczBfODE5KSwgKHVpbnQ4eDhfdCkodnNocm5fbl91MTYoX19zMV84MTksIF9fcDJfODE5KSkpKTsgXAogIF9fcmV0XzgxOTsgXAp9KQojZWxzZQojZGVmaW5lIHZzaHJuX2hpZ2hfbl91MTYoX19wMF84MjAsIF9fcDFfODIwLCBfX3AyXzgyMCkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4OF90IF9fczBfODIwID0gX19wMF84MjA7IFwKICB1aW50MTZ4OF90IF9fczFfODIwID0gX19wMV84MjA7IFwKICB1aW50OHg4X3QgX19yZXYwXzgyMDsgIF9fcmV2MF84MjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzgyMCwgX19zMF84MjAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDhfdCBfX3JldjFfODIwOyAgX19yZXYxXzgyMCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfODIwLCBfX3MxXzgyMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50OHgxNl90IF9fcmV0XzgyMDsgXAogIF9fcmV0XzgyMCA9ICh1aW50OHgxNl90KShfX25vc3dhcF92Y29tYmluZV91OCgodWludDh4OF90KShfX3JldjBfODIwKSwgKHVpbnQ4eDhfdCkoX19ub3N3YXBfdnNocm5fbl91MTYoX19yZXYxXzgyMCwgX19wMl84MjApKSkpOyBcCiAgX19yZXRfODIwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfODIwLCBfX3JldF84MjAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfODIwOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNocm5faGlnaF9uX3MzMihfX3AwXzgyMSwgX19wMV84MjEsIF9fcDJfODIxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNng0X3QgX19zMF84MjEgPSBfX3AwXzgyMTsgXAogIGludDMyeDRfdCBfX3MxXzgyMSA9IF9fcDFfODIxOyBcCiAgaW50MTZ4OF90IF9fcmV0XzgyMTsgXAogIF9fcmV0XzgyMSA9IChpbnQxNng4X3QpKHZjb21iaW5lX3MxNigoaW50MTZ4NF90KShfX3MwXzgyMSksIChpbnQxNng0X3QpKHZzaHJuX25fczMyKF9fczFfODIxLCBfX3AyXzgyMSkpKSk7IFwKICBfX3JldF84MjE7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c2hybl9oaWdoX25fczMyKF9fcDBfODIyLCBfX3AxXzgyMiwgX19wMl84MjIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2eDRfdCBfX3MwXzgyMiA9IF9fcDBfODIyOyBcCiAgaW50MzJ4NF90IF9fczFfODIyID0gX19wMV84MjI7IFwKICBpbnQxNng0X3QgX19yZXYwXzgyMjsgIF9fcmV2MF84MjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzgyMiwgX19zMF84MjIsIDMsIDIsIDEsIDApOyBcCiAgaW50MzJ4NF90IF9fcmV2MV84MjI7ICBfX3JldjFfODIyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV84MjIsIF9fczFfODIyLCAzLCAyLCAxLCAwKTsgXAogIGludDE2eDhfdCBfX3JldF84MjI7IFwKICBfX3JldF84MjIgPSAoaW50MTZ4OF90KShfX25vc3dhcF92Y29tYmluZV9zMTYoKGludDE2eDRfdCkoX19yZXYwXzgyMiksIChpbnQxNng0X3QpKF9fbm9zd2FwX3ZzaHJuX25fczMyKF9fcmV2MV84MjIsIF9fcDJfODIyKSkpKTsgXAogIF9fcmV0XzgyMiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzgyMiwgX19yZXRfODIyLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzgyMjsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzaHJuX2hpZ2hfbl9zNjQoX19wMF84MjMsIF9fcDFfODIzLCBfX3AyXzgyMykgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Ml90IF9fczBfODIzID0gX19wMF84MjM7IFwKICBpbnQ2NHgyX3QgX19zMV84MjMgPSBfX3AxXzgyMzsgXAogIGludDMyeDRfdCBfX3JldF84MjM7IFwKICBfX3JldF84MjMgPSAoaW50MzJ4NF90KSh2Y29tYmluZV9zMzIoKGludDMyeDJfdCkoX19zMF84MjMpLCAoaW50MzJ4Ml90KSh2c2hybl9uX3M2NChfX3MxXzgyMywgX19wMl84MjMpKSkpOyBcCiAgX19yZXRfODIzOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNocm5faGlnaF9uX3M2NChfX3AwXzgyNCwgX19wMV84MjQsIF9fcDJfODI0KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMngyX3QgX19zMF84MjQgPSBfX3AwXzgyNDsgXAogIGludDY0eDJfdCBfX3MxXzgyNCA9IF9fcDFfODI0OyBcCiAgaW50MzJ4Ml90IF9fcmV2MF84MjQ7ICBfX3JldjBfODI0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF84MjQsIF9fczBfODI0LCAxLCAwKTsgXAogIGludDY0eDJfdCBfX3JldjFfODI0OyAgX19yZXYxXzgyNCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfODI0LCBfX3MxXzgyNCwgMSwgMCk7IFwKICBpbnQzMng0X3QgX19yZXRfODI0OyBcCiAgX19yZXRfODI0ID0gKGludDMyeDRfdCkoX19ub3N3YXBfdmNvbWJpbmVfczMyKChpbnQzMngyX3QpKF9fcmV2MF84MjQpLCAoaW50MzJ4Ml90KShfX25vc3dhcF92c2hybl9uX3M2NChfX3JldjFfODI0LCBfX3AyXzgyNCkpKSk7IFwKICBfX3JldF84MjQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF84MjQsIF9fcmV0XzgyNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF84MjQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c2hybl9oaWdoX25fczE2KF9fcDBfODI1LCBfX3AxXzgyNSwgX19wMl84MjUpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4OF90IF9fczBfODI1ID0gX19wMF84MjU7IFwKICBpbnQxNng4X3QgX19zMV84MjUgPSBfX3AxXzgyNTsgXAogIGludDh4MTZfdCBfX3JldF84MjU7IFwKICBfX3JldF84MjUgPSAoaW50OHgxNl90KSh2Y29tYmluZV9zOCgoaW50OHg4X3QpKF9fczBfODI1KSwgKGludDh4OF90KSh2c2hybl9uX3MxNihfX3MxXzgyNSwgX19wMl84MjUpKSkpOyBcCiAgX19yZXRfODI1OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNocm5faGlnaF9uX3MxNihfX3AwXzgyNiwgX19wMV84MjYsIF9fcDJfODI2KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDhfdCBfX3MwXzgyNiA9IF9fcDBfODI2OyBcCiAgaW50MTZ4OF90IF9fczFfODI2ID0gX19wMV84MjY7IFwKICBpbnQ4eDhfdCBfX3JldjBfODI2OyAgX19yZXYwXzgyNiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfODI2LCBfX3MwXzgyNiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng4X3QgX19yZXYxXzgyNjsgIF9fcmV2MV84MjYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzgyNiwgX19zMV84MjYsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50OHgxNl90IF9fcmV0XzgyNjsgXAogIF9fcmV0XzgyNiA9IChpbnQ4eDE2X3QpKF9fbm9zd2FwX3Zjb21iaW5lX3M4KChpbnQ4eDhfdCkoX19yZXYwXzgyNiksIChpbnQ4eDhfdCkoX19ub3N3YXBfdnNocm5fbl9zMTYoX19yZXYxXzgyNiwgX19wMl84MjYpKSkpOyBcCiAgX19yZXRfODI2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfODI2LCBfX3JldF84MjYsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfODI2OyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2c2xpZF9uX3U2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjRfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ2NF90IF9fczEgPSBfX3AxOyBcCiAgdWludDY0X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50NjRfdCkgX19idWlsdGluX25lb25fdnNsaWRfbl91NjQoX19zMCwgX19zMSwgX19wMik7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZzbGlkX25fczY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQ2NF90IF9fczEgPSBfX3AxOyBcCiAgaW50NjRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzbGlkX25fczY0KF9fczAsIF9fczEsIF9fcDIpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2c2xpX25fcDY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk2NHgxX3QgX19zMCA9IF9fcDA7IFwKICBwb2x5NjR4MV90IF9fczEgPSBfX3AxOyBcCiAgcG9seTY0eDFfdCBfX3JldDsgXAogIF9fcmV0ID0gKHBvbHk2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3ZzbGlfbl92KChpbnQ4eDhfdClfX3MwLCAoaW50OHg4X3QpX19zMSwgX19wMiwgNik7IFwKICBfX3JldDsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c2xpcV9uX3A2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5NjR4Ml90IF9fczAgPSBfX3AwOyBcCiAgcG9seTY0eDJfdCBfX3MxID0gX19wMTsgXAogIHBvbHk2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92c2xpcV9uX3YoKGludDh4MTZfdClfX3MwLCAoaW50OHgxNl90KV9fczEsIF9fcDIsIDM4KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNsaXFfbl9wNjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTY0eDJfdCBfX3MwID0gX19wMDsgXAogIHBvbHk2NHgyX3QgX19zMSA9IF9fcDE7IFwKICBwb2x5NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDEsIDApOyBcCiAgcG9seTY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAxLCAwKTsgXAogIHBvbHk2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92c2xpcV9uX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCBfX3AyLCAzOCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCl9fYWkgdWludDhfdCB2c3FhZGRiX3U4KHVpbnQ4X3QgX19wMCwgaW50OF90IF9fcDEpIHsKICB1aW50OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4X3QpIF9fYnVpbHRpbl9uZW9uX3ZzcWFkZGJfdTgoX19wMCwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDMyX3QgdnNxYWRkc191MzIodWludDMyX3QgX19wMCwgaW50MzJfdCBfX3AxKSB7CiAgdWludDMyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyX3QpIF9fYnVpbHRpbl9uZW9uX3ZzcWFkZHNfdTMyKF9fcDAsIF9fcDEpOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ2NF90IHZzcWFkZGRfdTY0KHVpbnQ2NF90IF9fcDAsIGludDY0X3QgX19wMSkgewogIHVpbnQ2NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NF90KSBfX2J1aWx0aW5fbmVvbl92c3FhZGRkX3U2NChfX3AwLCBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50MTZfdCB2c3FhZGRoX3UxNih1aW50MTZfdCBfX3AwLCBpbnQxNl90IF9fcDEpIHsKICB1aW50MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZfdCkgX19idWlsdGluX25lb25fdnNxYWRkaF91MTYoX19wMCwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDE2X3QgdnNxYWRkcV91OCh1aW50OHgxNl90IF9fcDAsIGludDh4MTZfdCBfX3AxKSB7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9ICh1aW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92c3FhZGRxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDQ4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHgxNl90IHZzcWFkZHFfdTgodWludDh4MTZfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSkgewogIHVpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4MTZfdCkgX19idWlsdGluX25lb25fdnNxYWRkcV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNDgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZzcWFkZHFfdTMyKHVpbnQzMng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzcWFkZHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNTApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMng0X3QgdnNxYWRkcV91MzIodWludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkgX19idWlsdGluX25lb25fdnNxYWRkcV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNTApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50NjR4Ml90IHZzcWFkZHFfdTY0KHVpbnQ2NHgyX3QgX19wMCwgaW50NjR4Ml90IF9fcDEpIHsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3ZzcWFkZHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNTEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ2NHgyX3QgdnNxYWRkcV91NjQodWludDY0eDJfdCBfX3AwLCBpbnQ2NHgyX3QgX19wMSkgewogIHVpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkgX19idWlsdGluX25lb25fdnNxYWRkcV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNTEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4OF90IHZzcWFkZHFfdTE2KHVpbnQxNng4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEpIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpIF9fYnVpbHRpbl9uZW9uX3ZzcWFkZHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgNDkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng4X3QgdnNxYWRkcV91MTYodWludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIHVpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkgX19idWlsdGluX25lb25fdnNxYWRkcV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNDkpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHg4X3QgdnNxYWRkX3U4KHVpbnQ4eDhfdCBfX3AwLCBpbnQ4eDhfdCBfX3AxKSB7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnNxYWRkX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAxNik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4OF90IHZzcWFkZF91OCh1aW50OHg4X3QgX19wMCwgaW50OHg4X3QgX19wMSkgewogIHVpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92c3FhZGRfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAxNik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMngyX3QgdnNxYWRkX3UzMih1aW50MzJ4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92c3FhZGRfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDE4KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4Ml90IHZzcWFkZF91MzIodWludDMyeDJfdCBfX3AwLCBpbnQzMngyX3QgX19wMSkgewogIHVpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDJfdCkgX19idWlsdGluX25lb25fdnNxYWRkX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMTgpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgpfX2FpIHVpbnQ2NHgxX3QgdnNxYWRkX3U2NCh1aW50NjR4MV90IF9fcDAsIGludDY0eDFfdCBfX3AxKSB7CiAgdWludDY0eDFfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92c3FhZGRfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDE5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDRfdCB2c3FhZGRfdTE2KHVpbnQxNng0X3QgX19wMCwgaW50MTZ4NF90IF9fcDEpIHsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzcWFkZF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMTcpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng0X3QgdnNxYWRkX3UxNih1aW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxKSB7CiAgdWludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4NF90KSBfX2J1aWx0aW5fbmVvbl92c3FhZGRfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAxNyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0NjR4Ml90IHZzcXJ0cV9mNjQoZmxvYXQ2NHgyX3QgX19wMCkgewogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92c3FydHFfdigoaW50OHgxNl90KV9fcDAsIDQyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDY0eDJfdCB2c3FydHFfZjY0KGZsb2F0NjR4Ml90IF9fcDApIHsKICBmbG9hdDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDY0eDJfdCkgX19idWlsdGluX25lb25fdnNxcnRxX3YoKGludDh4MTZfdClfX3JldjAsIDQyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMng0X3QgdnNxcnRxX2YzMihmbG9hdDMyeDRfdCBfX3AwKSB7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQzMng0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzcXJ0cV92KChpbnQ4eDE2X3QpX19wMCwgNDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4NF90IHZzcXJ0cV9mMzIoZmxvYXQzMng0X3QgX19wMCkgewogIGZsb2F0MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGZsb2F0MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92c3FydHFfdigoaW50OHgxNl90KV9fcmV2MCwgNDEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgpfX2FpIGZsb2F0NjR4MV90IHZzcXJ0X2Y2NChmbG9hdDY0eDFfdCBfX3AwKSB7CiAgZmxvYXQ2NHgxX3QgX19yZXQ7CiAgX19yZXQgPSAoZmxvYXQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3ZzcXJ0X3YoKGludDh4OF90KV9fcDAsIDEwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMngyX3QgdnNxcnRfZjMyKGZsb2F0MzJ4Ml90IF9fcDApIHsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdnNxcnRfdigoaW50OHg4X3QpX19wMCwgOSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMngyX3QgdnNxcnRfZjMyKGZsb2F0MzJ4Ml90IF9fcDApIHsKICBmbG9hdDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IChmbG9hdDMyeDJfdCkgX19idWlsdGluX25lb25fdnNxcnRfdigoaW50OHg4X3QpX19yZXYwLCA5KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2RlZmluZSB2c3JhZF9uX3U2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjRfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ2NF90IF9fczEgPSBfX3AxOyBcCiAgdWludDY0X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50NjRfdCkgX19idWlsdGluX25lb25fdnNyYWRfbl91NjQoX19zMCwgX19zMSwgX19wMik7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZzcmFkX25fczY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQ2NF90IF9fczEgPSBfX3AxOyBcCiAgaW50NjRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzcmFkX25fczY0KF9fczAsIF9fczEsIF9fcDIpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2c3JpZF9uX3U2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjRfdCBfX3MwID0gX19wMDsgXAogIHVpbnQ2NF90IF9fczEgPSBfX3AxOyBcCiAgdWludDY0X3QgX19yZXQ7IFwKICBfX3JldCA9ICh1aW50NjRfdCkgX19idWlsdGluX25lb25fdnNyaWRfbl91NjQoX19zMCwgX19zMSwgX19wMik7IFwKICBfX3JldDsgXAp9KQojZGVmaW5lIHZzcmlkX25fczY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0X3QgX19zMCA9IF9fcDA7IFwKICBpbnQ2NF90IF9fczEgPSBfX3AxOyBcCiAgaW50NjRfdCBfX3JldDsgXAogIF9fcmV0ID0gKGludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3ZzcmlkX25fczY0KF9fczAsIF9fczEsIF9fcDIpOyBcCiAgX19yZXQ7IFwKfSkKI2RlZmluZSB2c3JpX25fcDY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk2NHgxX3QgX19zMCA9IF9fcDA7IFwKICBwb2x5NjR4MV90IF9fczEgPSBfX3AxOyBcCiAgcG9seTY0eDFfdCBfX3JldDsgXAogIF9fcmV0ID0gKHBvbHk2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3Zzcmlfbl92KChpbnQ4eDhfdClfX3MwLCAoaW50OHg4X3QpX19zMSwgX19wMiwgNik7IFwKICBfX3JldDsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3JpcV9uX3A2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5NjR4Ml90IF9fczAgPSBfX3AwOyBcCiAgcG9seTY0eDJfdCBfX3MxID0gX19wMTsgXAogIHBvbHk2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92c3JpcV9uX3YoKGludDh4MTZfdClfX3MwLCAoaW50OHgxNl90KV9fczEsIF9fcDIsIDM4KTsgXAogIF9fcmV0OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnNyaXFfbl9wNjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTY0eDJfdCBfX3MwID0gX19wMDsgXAogIHBvbHk2NHgyX3QgX19zMSA9IF9fcDE7IFwKICBwb2x5NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczAsIF9fczAsIDEsIDApOyBcCiAgcG9seTY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAxLCAwKTsgXAogIHBvbHk2NHgyX3QgX19yZXQ7IFwKICBfX3JldCA9IChwb2x5NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92c3JpcV9uX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCBfX3AyLCAzOCk7IFwKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7IFwKICBfX3JldDsgXAp9KQojZW5kaWYKCiNkZWZpbmUgdnN0MV9wNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTY0eDFfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFfdihfX3AwLCAoaW50OHg4X3QpX19zMSwgNik7IFwKfSkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MXFfcDY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk2NHgyX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV92KF9fcDAsIChpbnQ4eDE2X3QpX19zMSwgMzgpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MXFfcDY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk2NHgyX3QgX19zMSA9IF9fcDE7IFwKICBwb2x5NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MSwgMzgpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MXFfZjY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4Ml90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfdihfX3AwLCAoaW50OHgxNl90KV9fczEsIDQyKTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDFxX2Y2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDJfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MSwgNDIpOyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2c3QxX2Y2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDFfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFfdihfX3AwLCAoaW50OHg4X3QpX19zMSwgMTApOyBcCn0pCiNkZWZpbmUgdnN0MV9sYW5lX3A2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5NjR4MV90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MV9sYW5lX3YoX19wMCwgKGludDh4OF90KV9fczEsIF9fcDIsIDYpOyBcCn0pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDFxX2xhbmVfcDY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk2NHgyX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV9sYW5lX3YoX19wMCwgKGludDh4MTZfdClfX3MxLCBfX3AyLCAzOCk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxcV9sYW5lX3A2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5NjR4Ml90IF9fczEgPSBfX3AxOyBcCiAgcG9seTY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLCBfX3MxLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFxX2xhbmVfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MSwgX19wMiwgMzgpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MXFfbGFuZV9mNjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgyX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV9sYW5lX3YoX19wMCwgKGludDh4MTZfdClfX3MxLCBfX3AyLCA0Mik7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxcV9sYW5lX2Y2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDJfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEsIF9fczEsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLCBfX3AyLCA0Mik7IFwKfSkKI2VuZGlmCgojZGVmaW5lIHZzdDFfbGFuZV9mNjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgxX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX2xhbmVfdihfX3AwLCAoaW50OHg4X3QpX19zMSwgX19wMiwgMTApOyBcCn0pCiNkZWZpbmUgdnN0MV9wNjRfeDIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTY0eDF4Ml90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MV94Ml92KF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCA2KTsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxcV9wNjRfeDIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTY0eDJ4Ml90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfeDJfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAzOCk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxcV9wNjRfeDIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTY0eDJ4Ml90IF9fczEgPSBfX3AxOyBcCiAgcG9seTY0eDJ4Ml90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV94Ml92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAzOCk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxcV9mNjRfeDIoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgyeDJfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFxX3gyX3YoX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgNDIpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MXFfZjY0X3gyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4MngyX3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDY0eDJ4Ml90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV94Ml92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCA0Mik7IFwKfSkKI2VuZGlmCgojZGVmaW5lIHZzdDFfZjY0X3gyKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4MXgyX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX3gyX3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIDEwKTsgXAp9KQojZGVmaW5lIHZzdDFfcDY0X3gzKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk2NHgxeDNfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFfeDNfdihfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgKGludDh4OF90KV9fczEudmFsWzJdLCA2KTsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxcV9wNjRfeDMoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTY0eDJ4M190IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfeDNfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCAzOCk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxcV9wNjRfeDMoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTY0eDJ4M190IF9fczEgPSBfX3AxOyBcCiAgcG9seTY0eDJ4M190IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFxX3gzX3YoX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgMzgpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MXFfZjY0X3gzKF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4MngzX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV94M192KF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIChpbnQ4eDE2X3QpX19zMS52YWxbMl0sIDQyKTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDFxX2Y2NF94MyhfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDJ4M190IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQ2NHgyeDNfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV94M192KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMl0sIDQyKTsgXAp9KQojZW5kaWYKCiNkZWZpbmUgdnN0MV9mNjRfeDMoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgxeDNfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDFfeDNfdihfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgKGludDh4OF90KV9fczEudmFsWzJdLCAxMCk7IFwKfSkKI2RlZmluZSB2c3QxX3A2NF94NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5NjR4MXg0X3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxX3g0X3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIChpbnQ4eDhfdClfX3MxLnZhbFsyXSwgKGludDh4OF90KV9fczEudmFsWzNdLCA2KTsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QxcV9wNjRfeDQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTY0eDJ4NF90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfeDRfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCAoaW50OHgxNl90KV9fczEudmFsWzNdLCAzOCk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxcV9wNjRfeDQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTY0eDJ4NF90IF9fczEgPSBfX3AxOyBcCiAgcG9seTY0eDJ4NF90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFszXSwgX19zMS52YWxbM10sIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfeDRfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgKGludDh4MTZfdClfX3JldjEudmFsWzJdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbM10sIDM4KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDFxX2Y2NF94NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDJ4NF90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MXFfeDRfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCAoaW50OHgxNl90KV9fczEudmFsWzNdLCA0Mik7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QxcV9mNjRfeDQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgyeDRfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0NjR4Mng0X3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzNdLCBfX3MxLnZhbFszXSwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QxcV94NF92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMl0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFszXSwgNDIpOyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2c3QxX2Y2NF94NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDF4NF90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MV94NF92KF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCAoaW50OHg4X3QpX19zMS52YWxbMl0sIChpbnQ4eDhfdClfX3MxLnZhbFszXSwgMTApOyBcCn0pCiNkZWZpbmUgdnN0Ml9wNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTY0eDF4Ml90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0Ml92KF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCA2KTsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QycV9wNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTY0eDJ4Ml90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MnFfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAzOCk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QycV9wNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTY0eDJ4Ml90IF9fczEgPSBfX3AxOyBcCiAgcG9seTY0eDJ4Ml90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QycV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAzOCk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QycV91NjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDJ4Ml90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MnFfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCA1MSk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QycV91NjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDJ4Ml90IF9fczEgPSBfX3AxOyBcCiAgdWludDY0eDJ4Ml90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QycV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCA1MSk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QycV9mNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgyeDJfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDJxX3YoX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgNDIpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MnFfZjY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4MngyX3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDY0eDJ4Ml90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QycV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCA0Mik7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QycV9zNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4MngyX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QycV92KF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIDM1KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDJxX3M2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgyeDJfdCBfX3MxID0gX19wMTsgXAogIGludDY0eDJ4Ml90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QycV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAzNSk7IFwKfSkKI2VuZGlmCgojZGVmaW5lIHZzdDJfZjY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4MXgyX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QyX3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIDEwKTsgXAp9KQojZGVmaW5lIHZzdDJfbGFuZV9wNjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTY0eDF4Ml90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0Ml9sYW5lX3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIF9fcDIsIDYpOyBcCn0pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDJxX2xhbmVfcDgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4MTZ4Ml90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MnFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIF9fcDIsIDM2KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDJxX2xhbmVfcDgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4MTZ4Ml90IF9fczEgPSBfX3AxOyBcCiAgcG9seTh4MTZ4Ml90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QycV9sYW5lX3YoX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIF9fcDIsIDM2KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDJxX2xhbmVfcDY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk2NHgyeDJfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDJxX2xhbmVfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCBfX3AyLCAzOCk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QycV9sYW5lX3A2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5NjR4MngyX3QgX19zMSA9IF9fcDE7IFwKICBwb2x5NjR4MngyX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDJxX2xhbmVfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgX19wMiwgMzgpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MnFfbGFuZV91OChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHgxNngyX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QycV9sYW5lX3YoX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgX19wMiwgNDgpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0MnFfbGFuZV91OChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50OHgxNngyX3QgX19zMSA9IF9fcDE7IFwKICB1aW50OHgxNngyX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDJxX2xhbmVfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgX19wMiwgNDgpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0MnFfbGFuZV91NjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDJ4Ml90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MnFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIF9fcDIsIDUxKTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDJxX2xhbmVfdTY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyeDJfdCBfX3MxID0gX19wMTsgXAogIHVpbnQ2NHgyeDJfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MnFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCBfX3AyLCA1MSk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QycV9sYW5lX3M4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4MTZ4Ml90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MnFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIF9fcDIsIDMyKTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDJxX2xhbmVfczgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHgxNngyX3QgX19zMSA9IF9fcDE7IFwKICBpbnQ4eDE2eDJfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0MnFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCBfX3AyLCAzMik7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QycV9sYW5lX2Y2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDJ4Ml90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MnFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIF9fcDIsIDQyKTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDJxX2xhbmVfZjY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4MngyX3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDY0eDJ4Ml90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QycV9sYW5lX3YoX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIF9fcDIsIDQyKTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDJxX2xhbmVfczY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJ4Ml90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0MnFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIF9fcDIsIDM1KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDJxX2xhbmVfczY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJ4Ml90IF9fczEgPSBfX3AxOyBcCiAgaW50NjR4MngyX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDJxX2xhbmVfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgX19wMiwgMzUpOyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2c3QyX2xhbmVfdTY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgxeDJfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDJfbGFuZV92KF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCBfX3AyLCAxOSk7IFwKfSkKI2RlZmluZSB2c3QyX2xhbmVfZjY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4MXgyX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QyX2xhbmVfdihfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgX19wMiwgMTApOyBcCn0pCiNkZWZpbmUgdnN0Ml9sYW5lX3M2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgxeDJfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDJfbGFuZV92KF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCBfX3AyLCAzKTsgXAp9KQojZGVmaW5lIHZzdDNfcDY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk2NHgxeDNfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDNfdihfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgKGludDh4OF90KV9fczEudmFsWzJdLCA2KTsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QzcV9wNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTY0eDJ4M190IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0M3FfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCAzOCk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QzcV9wNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTY0eDJ4M190IF9fczEgPSBfX3AxOyBcCiAgcG9seTY0eDJ4M190IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDNxX3YoX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgMzgpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0M3FfdTY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyeDNfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDNxX3YoX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgKGludDh4MTZfdClfX3MxLnZhbFsyXSwgNTEpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0M3FfdTY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyeDNfdCBfX3MxID0gX19wMTsgXAogIHVpbnQ2NHgyeDNfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QzcV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMl0sIDUxKTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDNxX2Y2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDJ4M190IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0M3FfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCA0Mik7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QzcV9mNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgyeDNfdCBfX3MxID0gX19wMTsgXAogIGZsb2F0NjR4MngzX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0M3FfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgKGludDh4MTZfdClfX3JldjEudmFsWzJdLCA0Mik7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QzcV9zNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4MngzX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QzcV92KF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIChpbnQ4eDE2X3QpX19zMS52YWxbMl0sIDM1KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDNxX3M2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgyeDNfdCBfX3MxID0gX19wMTsgXAogIGludDY0eDJ4M190IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDNxX3YoX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgMzUpOyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2c3QzX2Y2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDF4M190IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0M192KF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCAoaW50OHg4X3QpX19zMS52YWxbMl0sIDEwKTsgXAp9KQojZGVmaW5lIHZzdDNfbGFuZV9wNjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTY0eDF4M190IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0M19sYW5lX3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIChpbnQ4eDhfdClfX3MxLnZhbFsyXSwgX19wMiwgNik7IFwKfSkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0M3FfbGFuZV9wOChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHgxNngzX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QzcV9sYW5lX3YoX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgKGludDh4MTZfdClfX3MxLnZhbFsyXSwgX19wMiwgMzYpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0M3FfbGFuZV9wOChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5OHgxNngzX3QgX19zMSA9IF9fcDE7IFwKICBwb2x5OHgxNngzX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0M3FfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMl0sIF9fcDIsIDM2KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDNxX2xhbmVfcDY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk2NHgyeDNfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDNxX2xhbmVfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCBfX3AyLCAzOCk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QzcV9sYW5lX3A2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5NjR4MngzX3QgX19zMSA9IF9fcDE7IFwKICBwb2x5NjR4MngzX3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0M3FfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMl0sIF9fcDIsIDM4KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDNxX2xhbmVfdTgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4MTZ4M190IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0M3FfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIChpbnQ4eDE2X3QpX19zMS52YWxbMl0sIF9fcDIsIDQ4KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDNxX2xhbmVfdTgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4MTZ4M190IF9fczEgPSBfX3AxOyBcCiAgdWludDh4MTZ4M190IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDNxX2xhbmVfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgKGludDh4MTZfdClfX3JldjEudmFsWzJdLCBfX3AyLCA0OCk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QzcV9sYW5lX3U2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICB1aW50NjR4MngzX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QzcV9sYW5lX3YoX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgKGludDh4MTZfdClfX3MxLnZhbFsyXSwgX19wMiwgNTEpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0M3FfbGFuZV91NjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDJ4M190IF9fczEgPSBfX3AxOyBcCiAgdWludDY0eDJ4M190IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDNxX2xhbmVfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgKGludDh4MTZfdClfX3JldjEudmFsWzJdLCBfX3AyLCA1MSk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3QzcV9sYW5lX3M4KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDh4MTZ4M190IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0M3FfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIChpbnQ4eDE2X3QpX19zMS52YWxbMl0sIF9fcDIsIDMyKTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDNxX2xhbmVfczgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHgxNngzX3QgX19zMSA9IF9fcDE7IFwKICBpbnQ4eDE2eDNfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QzcV9sYW5lX3YoX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgX19wMiwgMzIpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0M3FfbGFuZV9mNjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgyeDNfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDNxX2xhbmVfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCBfX3AyLCA0Mik7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3QzcV9sYW5lX2Y2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDJ4M190IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQ2NHgyeDNfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QzcV9sYW5lX3YoX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgX19wMiwgNDIpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0M3FfbGFuZV9zNjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4MngzX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QzcV9sYW5lX3YoX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgKGludDh4MTZfdClfX3MxLnZhbFsyXSwgX19wMiwgMzUpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0M3FfbGFuZV9zNjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4MngzX3QgX19zMSA9IF9fcDE7IFwKICBpbnQ2NHgyeDNfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QzcV9sYW5lX3YoX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgX19wMiwgMzUpOyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2c3QzX2xhbmVfdTY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgxeDNfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDNfbGFuZV92KF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCAoaW50OHg4X3QpX19zMS52YWxbMl0sIF9fcDIsIDE5KTsgXAp9KQojZGVmaW5lIHZzdDNfbGFuZV9mNjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgxeDNfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDNfbGFuZV92KF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCAoaW50OHg4X3QpX19zMS52YWxbMl0sIF9fcDIsIDEwKTsgXAp9KQojZGVmaW5lIHZzdDNfbGFuZV9zNjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4MXgzX3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3QzX2xhbmVfdihfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgKGludDh4OF90KV9fczEudmFsWzJdLCBfX3AyLCAzKTsgXAp9KQojZGVmaW5lIHZzdDRfcDY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk2NHgxeDRfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDRfdihfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgKGludDh4OF90KV9fczEudmFsWzJdLCAoaW50OHg4X3QpX19zMS52YWxbM10sIDYpOyBcCn0pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDRxX3A2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5NjR4Mng0X3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3Q0cV92KF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIChpbnQ4eDE2X3QpX19zMS52YWxbMl0sIChpbnQ4eDE2X3QpX19zMS52YWxbM10sIDM4KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDRxX3A2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5NjR4Mng0X3QgX19zMSA9IF9fcDE7IFwKICBwb2x5NjR4Mng0X3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzNdLCBfX3MxLnZhbFszXSwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3Q0cV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMl0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFszXSwgMzgpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0NHFfdTY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyeDRfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDRxX3YoX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgKGludDh4MTZfdClfX3MxLnZhbFsyXSwgKGludDh4MTZfdClfX3MxLnZhbFszXSwgNTEpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0NHFfdTY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyeDRfdCBfX3MxID0gX19wMTsgXAogIHVpbnQ2NHgyeDRfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbM10sIF9fczEudmFsWzNdLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDRxX3YoX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgKGludDh4MTZfdClfX3JldjEudmFsWzNdLCA1MSk7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3Q0cV9mNjQoX19wMCwgX19wMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgyeDRfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDRxX3YoX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgKGludDh4MTZfdClfX3MxLnZhbFsyXSwgKGludDh4MTZfdClfX3MxLnZhbFszXSwgNDIpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0NHFfZjY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4Mng0X3QgX19zMSA9IF9fcDE7IFwKICBmbG9hdDY0eDJ4NF90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFszXSwgX19zMS52YWxbM10sIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0NHFfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgKGludDh4MTZfdClfX3JldjEudmFsWzJdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbM10sIDQyKTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDRxX3M2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ2NHgyeDRfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDRxX3YoX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgKGludDh4MTZfdClfX3MxLnZhbFsyXSwgKGludDh4MTZfdClfX3MxLnZhbFszXSwgMzUpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0NHFfczY0KF9fcDAsIF9fcDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJ4NF90IF9fczEgPSBfX3AxOyBcCiAgaW50NjR4Mng0X3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzNdLCBfX3MxLnZhbFszXSwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3Q0cV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMl0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFszXSwgMzUpOyBcCn0pCiNlbmRpZgoKI2RlZmluZSB2c3Q0X2Y2NChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDF4NF90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0NF92KF9fcDAsIChpbnQ4eDhfdClfX3MxLnZhbFswXSwgKGludDh4OF90KV9fczEudmFsWzFdLCAoaW50OHg4X3QpX19zMS52YWxbMl0sIChpbnQ4eDhfdClfX3MxLnZhbFszXSwgMTApOyBcCn0pCiNkZWZpbmUgdnN0NF9sYW5lX3A2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5NjR4MXg0X3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3Q0X2xhbmVfdihfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgKGludDh4OF90KV9fczEudmFsWzJdLCAoaW50OHg4X3QpX19zMS52YWxbM10sIF9fcDIsIDYpOyBcCn0pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDRxX2xhbmVfcDgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4MTZ4NF90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0NHFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIChpbnQ4eDE2X3QpX19zMS52YWxbMl0sIChpbnQ4eDE2X3QpX19zMS52YWxbM10sIF9fcDIsIDM2KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDRxX2xhbmVfcDgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTh4MTZ4NF90IF9fczEgPSBfX3AxOyBcCiAgcG9seTh4MTZ4NF90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFszXSwgX19zMS52YWxbM10sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0NHFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMl0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFszXSwgX19wMiwgMzYpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0NHFfbGFuZV9wNjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTY0eDJ4NF90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0NHFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIChpbnQ4eDE2X3QpX19zMS52YWxbMl0sIChpbnQ4eDE2X3QpX19zMS52YWxbM10sIF9fcDIsIDM4KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDRxX2xhbmVfcDY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk2NHgyeDRfdCBfX3MxID0gX19wMTsgXAogIHBvbHk2NHgyeDRfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbM10sIF9fczEudmFsWzNdLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDRxX2xhbmVfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgKGludDh4MTZfdClfX3JldjEudmFsWzJdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbM10sIF9fcDIsIDM4KTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDRxX2xhbmVfdTgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4MTZ4NF90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0NHFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIChpbnQ4eDE2X3QpX19zMS52YWxbMl0sIChpbnQ4eDE2X3QpX19zMS52YWxbM10sIF9fcDIsIDQ4KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDRxX2xhbmVfdTgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDh4MTZ4NF90IF9fczEgPSBfX3AxOyBcCiAgdWludDh4MTZ4NF90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFszXSwgX19zMS52YWxbM10sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0NHFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMl0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFszXSwgX19wMiwgNDgpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0NHFfbGFuZV91NjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDJ4NF90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0NHFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIChpbnQ4eDE2X3QpX19zMS52YWxbMl0sIChpbnQ4eDE2X3QpX19zMS52YWxbM10sIF9fcDIsIDUxKTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDRxX2xhbmVfdTY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyeDRfdCBfX3MxID0gX19wMTsgXAogIHVpbnQ2NHgyeDRfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbM10sIF9fczEudmFsWzNdLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDRxX2xhbmVfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgKGludDh4MTZfdClfX3JldjEudmFsWzJdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbM10sIF9fcDIsIDUxKTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDRxX2xhbmVfczgoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50OHgxNng0X3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3Q0cV9sYW5lX3YoX19wMCwgKGludDh4MTZfdClfX3MxLnZhbFswXSwgKGludDh4MTZfdClfX3MxLnZhbFsxXSwgKGludDh4MTZfdClfX3MxLnZhbFsyXSwgKGludDh4MTZfdClfX3MxLnZhbFszXSwgX19wMiwgMzIpOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN0NHFfbGFuZV9zOChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQ4eDE2eDRfdCBfX3MxID0gX19wMTsgXAogIGludDh4MTZ4NF90IF9fcmV2MTsgXAogIF9fcmV2MS52YWxbMF0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFswXSwgX19zMS52YWxbMF0sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXYxLnZhbFsxXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzFdLCBfX3MxLnZhbFsxXSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBfX3JldjEudmFsWzJdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMl0sIF9fczEudmFsWzJdLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbM10gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFszXSwgX19zMS52YWxbM10sIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19idWlsdGluX25lb25fdnN0NHFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19yZXYxLnZhbFswXSwgKGludDh4MTZfdClfX3JldjEudmFsWzFdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMl0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFszXSwgX19wMiwgMzIpOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN0NHFfbGFuZV9mNjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgyeDRfdCBfX3MxID0gX19wMTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDRxX2xhbmVfdihfX3AwLCAoaW50OHgxNl90KV9fczEudmFsWzBdLCAoaW50OHgxNl90KV9fczEudmFsWzFdLCAoaW50OHgxNl90KV9fczEudmFsWzJdLCAoaW50OHgxNl90KV9fczEudmFsWzNdLCBfX3AyLCA0Mik7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c3Q0cV9sYW5lX2Y2NChfX3AwLCBfX3AxLCBfX3AyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDJ4NF90IF9fczEgPSBfX3AxOyBcCiAgZmxvYXQ2NHgyeDRfdCBfX3JldjE7IFwKICBfX3JldjEudmFsWzBdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMF0sIF9fczEudmFsWzBdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMV0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsxXSwgX19zMS52YWxbMV0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFsyXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzJdLCBfX3MxLnZhbFsyXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzNdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbM10sIF9fczEudmFsWzNdLCAxLCAwKTsgXAogIF9fYnVpbHRpbl9uZW9uX3ZzdDRxX2xhbmVfdihfX3AwLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMF0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsxXSwgKGludDh4MTZfdClfX3JldjEudmFsWzJdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbM10sIF9fcDIsIDQyKTsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzdDRxX2xhbmVfczY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJ4NF90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0NHFfbGFuZV92KF9fcDAsIChpbnQ4eDE2X3QpX19zMS52YWxbMF0sIChpbnQ4eDE2X3QpX19zMS52YWxbMV0sIChpbnQ4eDE2X3QpX19zMS52YWxbMl0sIChpbnQ4eDE2X3QpX19zMS52YWxbM10sIF9fcDIsIDM1KTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdDRxX2xhbmVfczY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJ4NF90IF9fczEgPSBfX3AxOyBcCiAgaW50NjR4Mng0X3QgX19yZXYxOyBcCiAgX19yZXYxLnZhbFswXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzBdLCBfX3MxLnZhbFswXSwgMSwgMCk7IFwKICBfX3JldjEudmFsWzFdID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMS52YWxbMV0sIF9fczEudmFsWzFdLCAxLCAwKTsgXAogIF9fcmV2MS52YWxbMl0gPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxLnZhbFsyXSwgX19zMS52YWxbMl0sIDEsIDApOyBcCiAgX19yZXYxLnZhbFszXSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczEudmFsWzNdLCBfX3MxLnZhbFszXSwgMSwgMCk7IFwKICBfX2J1aWx0aW5fbmVvbl92c3Q0cV9sYW5lX3YoX19wMCwgKGludDh4MTZfdClfX3JldjEudmFsWzBdLCAoaW50OHgxNl90KV9fcmV2MS52YWxbMV0sIChpbnQ4eDE2X3QpX19yZXYxLnZhbFsyXSwgKGludDh4MTZfdClfX3JldjEudmFsWzNdLCBfX3AyLCAzNSk7IFwKfSkKI2VuZGlmCgojZGVmaW5lIHZzdDRfbGFuZV91NjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgdWludDY0eDF4NF90IF9fczEgPSBfX3AxOyBcCiAgX19idWlsdGluX25lb25fdnN0NF9sYW5lX3YoX19wMCwgKGludDh4OF90KV9fczEudmFsWzBdLCAoaW50OHg4X3QpX19zMS52YWxbMV0sIChpbnQ4eDhfdClfX3MxLnZhbFsyXSwgKGludDh4OF90KV9fczEudmFsWzNdLCBfX3AyLCAxOSk7IFwKfSkKI2RlZmluZSB2c3Q0X2xhbmVfZjY0KF9fcDAsIF9fcDEsIF9fcDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4MXg0X3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3Q0X2xhbmVfdihfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgKGludDh4OF90KV9fczEudmFsWzJdLCAoaW50OHg4X3QpX19zMS52YWxbM10sIF9fcDIsIDEwKTsgXAp9KQojZGVmaW5lIHZzdDRfbGFuZV9zNjQoX19wMCwgX19wMSwgX19wMikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4MXg0X3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3Q0X2xhbmVfdihfX3AwLCAoaW50OHg4X3QpX19zMS52YWxbMF0sIChpbnQ4eDhfdClfX3MxLnZhbFsxXSwgKGludDh4OF90KV9fczEudmFsWzJdLCAoaW50OHg4X3QpX19zMS52YWxbM10sIF9fcDIsIDMpOyBcCn0pCiNkZWZpbmUgdnN0cnFfcDEyOChfX3AwLCBfX3AxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5MTI4X3QgX19zMSA9IF9fcDE7IFwKICBfX2J1aWx0aW5fbmVvbl92c3RycV9wMTI4KF9fcDAsIF9fczEpOyBcCn0pCl9fYWkgdWludDY0X3QgdnN1YmRfdTY0KHVpbnQ2NF90IF9fcDAsIHVpbnQ2NF90IF9fcDEpIHsKICB1aW50NjRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjRfdCkgX19idWlsdGluX25lb25fdnN1YmRfdTY0KF9fcDAsIF9fcDEpOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDY0X3QgdnN1YmRfczY0KGludDY0X3QgX19wMCwgaW50NjRfdCBfX3AxKSB7CiAgaW50NjRfdCBfX3JldDsKICBfX3JldCA9IChpbnQ2NF90KSBfX2J1aWx0aW5fbmVvbl92c3ViZF9zNjQoX19wMCwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0NjR4Ml90IHZzdWJxX2Y2NChmbG9hdDY0eDJfdCBfX3AwLCBmbG9hdDY0eDJfdCBfX3AxKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwIC0gX19wMTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDY0eDJfdCB2c3VicV9mNjQoZmxvYXQ2NHgyX3QgX19wMCwgZmxvYXQ2NHgyX3QgX19wMSkgewogIGZsb2F0NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwIC0gX19yZXYxOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgpfX2FpIGZsb2F0NjR4MV90IHZzdWJfZjY0KGZsb2F0NjR4MV90IF9fcDAsIGZsb2F0NjR4MV90IF9fcDEpIHsKICBmbG9hdDY0eDFfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgLSBfX3AxOwogIHJldHVybiBfX3JldDsKfQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4OF90IHZzdWJobl9oaWdoX3UzMih1aW50MTZ4NF90IF9fcDAsIHVpbnQzMng0X3QgX19wMSwgdWludDMyeDRfdCBfX3AyKSB7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IHZjb21iaW5lX3UxNihfX3AwLCB2c3ViaG5fdTMyKF9fcDEsIF9fcDIpKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4OF90IHZzdWJobl9oaWdoX3UzMih1aW50MTZ4NF90IF9fcDAsIHVpbnQzMng0X3QgX19wMSwgdWludDMyeDRfdCBfX3AyKSB7CiAgdWludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3Zjb21iaW5lX3UxNihfX3JldjAsIF9fbm9zd2FwX3ZzdWJobl91MzIoX19yZXYxLCBfX3JldjIpKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDRfdCB2c3ViaG5faGlnaF91NjQodWludDMyeDJfdCBfX3AwLCB1aW50NjR4Ml90IF9fcDEsIHVpbnQ2NHgyX3QgX19wMikgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSB2Y29tYmluZV91MzIoX19wMCwgdnN1YmhuX3U2NChfX3AxLCBfX3AyKSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2c3ViaG5faGlnaF91NjQodWludDMyeDJfdCBfX3AwLCB1aW50NjR4Ml90IF9fcDEsIHVpbnQ2NHgyX3QgX19wMikgewogIHVpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92Y29tYmluZV91MzIoX19yZXYwLCBfX25vc3dhcF92c3ViaG5fdTY0KF9fcmV2MSwgX19yZXYyKSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDE2X3QgdnN1YmhuX2hpZ2hfdTE2KHVpbnQ4eDhfdCBfX3AwLCB1aW50MTZ4OF90IF9fcDEsIHVpbnQxNng4X3QgX19wMikgewogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSB2Y29tYmluZV91OChfX3AwLCB2c3ViaG5fdTE2KF9fcDEsIF9fcDIpKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHgxNl90IHZzdWJobl9oaWdoX3UxNih1aW50OHg4X3QgX19wMCwgdWludDE2eDhfdCBfX3AxLCB1aW50MTZ4OF90IF9fcDIpIHsKICB1aW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92Y29tYmluZV91OChfX3JldjAsIF9fbm9zd2FwX3ZzdWJobl91MTYoX19yZXYxLCBfX3JldjIpKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZ4OF90IHZzdWJobl9oaWdoX3MzMihpbnQxNng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEsIGludDMyeDRfdCBfX3AyKSB7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gdmNvbWJpbmVfczE2KF9fcDAsIHZzdWJobl9zMzIoX19wMSwgX19wMikpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDhfdCB2c3ViaG5faGlnaF9zMzIoaW50MTZ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxLCBpbnQzMng0X3QgX19wMikgewogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3Zjb21iaW5lX3MxNihfX3JldjAsIF9fbm9zd2FwX3ZzdWJobl9zMzIoX19yZXYxLCBfX3JldjIpKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4NF90IHZzdWJobl9oaWdoX3M2NChpbnQzMngyX3QgX19wMCwgaW50NjR4Ml90IF9fcDEsIGludDY0eDJfdCBfX3AyKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gdmNvbWJpbmVfczMyKF9fcDAsIHZzdWJobl9zNjQoX19wMSwgX19wMikpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDRfdCB2c3ViaG5faGlnaF9zNjQoaW50MzJ4Ml90IF9fcDAsIGludDY0eDJfdCBfX3AxLCBpbnQ2NHgyX3QgX19wMikgewogIGludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBpbnQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgaW50NjR4Ml90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3Zjb21iaW5lX3MzMihfX3JldjAsIF9fbm9zd2FwX3ZzdWJobl9zNjQoX19yZXYxLCBfX3JldjIpKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHgxNl90IHZzdWJobl9oaWdoX3MxNihpbnQ4eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSwgaW50MTZ4OF90IF9fcDIpIHsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSB2Y29tYmluZV9zOChfX3AwLCB2c3ViaG5fczE2KF9fcDEsIF9fcDIpKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ4eDE2X3QgdnN1YmhuX2hpZ2hfczE2KGludDh4OF90IF9fcDAsIGludDE2eDhfdCBfX3AxLCBpbnQxNng4X3QgX19wMikgewogIGludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdmNvbWJpbmVfczgoX19yZXYwLCBfX25vc3dhcF92c3ViaG5fczE2KF9fcmV2MSwgX19yZXYyKSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng4X3QgdnN1YmxfaGlnaF91OCh1aW50OHgxNl90IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSkgewogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSB2bW92bF9oaWdoX3U4KF9fcDApIC0gdm1vdmxfaGlnaF91OChfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4OF90IHZzdWJsX2hpZ2hfdTgodWludDh4MTZfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEpIHsKICB1aW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3Ztb3ZsX2hpZ2hfdTgoX19yZXYwKSAtIF9fbm9zd2FwX3Ztb3ZsX2hpZ2hfdTgoX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDY0eDJfdCB2c3VibF9oaWdoX3UzMih1aW50MzJ4NF90IF9fcDAsIHVpbnQzMng0X3QgX19wMSkgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSB2bW92bF9oaWdoX3UzMihfX3AwKSAtIHZtb3ZsX2hpZ2hfdTMyKF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ2NHgyX3QgdnN1YmxfaGlnaF91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3Ztb3ZsX2hpZ2hfdTMyKF9fcmV2MCkgLSBfX25vc3dhcF92bW92bF9oaWdoX3UzMihfX3JldjEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZzdWJsX2hpZ2hfdTE2KHVpbnQxNng4X3QgX19wMCwgdWludDE2eDhfdCBfX3AxKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IHZtb3ZsX2hpZ2hfdTE2KF9fcDApIC0gdm1vdmxfaGlnaF91MTYoX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2c3VibF9oaWdoX3UxNih1aW50MTZ4OF90IF9fcDAsIHVpbnQxNng4X3QgX19wMSkgewogIHVpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdm1vdmxfaGlnaF91MTYoX19yZXYwKSAtIF9fbm9zd2FwX3Ztb3ZsX2hpZ2hfdTE2KF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDhfdCB2c3VibF9oaWdoX3M4KGludDh4MTZfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IHZtb3ZsX2hpZ2hfczgoX19wMCkgLSB2bW92bF9oaWdoX3M4KF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDhfdCB2c3VibF9oaWdoX3M4KGludDh4MTZfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSkgewogIGludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdm1vdmxfaGlnaF9zOChfX3JldjApIC0gX19ub3N3YXBfdm1vdmxfaGlnaF9zOChfX3JldjEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ2NHgyX3QgdnN1YmxfaGlnaF9zMzIoaW50MzJ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gdm1vdmxfaGlnaF9zMzIoX19wMCkgLSB2bW92bF9oaWdoX3MzMihfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ2NHgyX3QgdnN1YmxfaGlnaF9zMzIoaW50MzJ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxKSB7CiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92bW92bF9oaWdoX3MzMihfX3JldjApIC0gX19ub3N3YXBfdm1vdmxfaGlnaF9zMzIoX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4NF90IHZzdWJsX2hpZ2hfczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IHZtb3ZsX2hpZ2hfczE2KF9fcDApIC0gdm1vdmxfaGlnaF9zMTYoX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4NF90IHZzdWJsX2hpZ2hfczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdm1vdmxfaGlnaF9zMTYoX19yZXYwKSAtIF9fbm9zd2FwX3Ztb3ZsX2hpZ2hfczE2KF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng4X3QgdnN1YndfaGlnaF91OCh1aW50MTZ4OF90IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSkgewogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwIC0gdm1vdmxfaGlnaF91OChfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4OF90IHZzdWJ3X2hpZ2hfdTgodWludDE2eDhfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEpIHsKICB1aW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCAtIF9fbm9zd2FwX3Ztb3ZsX2hpZ2hfdTgoX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDY0eDJfdCB2c3Vid19oaWdoX3UzMih1aW50NjR4Ml90IF9fcDAsIHVpbnQzMng0X3QgX19wMSkgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwIC0gdm1vdmxfaGlnaF91MzIoX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDY0eDJfdCB2c3Vid19oaWdoX3UzMih1aW50NjR4Ml90IF9fcDAsIHVpbnQzMng0X3QgX19wMSkgewogIHVpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwIC0gX19ub3N3YXBfdm1vdmxfaGlnaF91MzIoX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDRfdCB2c3Vid19oaWdoX3UxNih1aW50MzJ4NF90IF9fcDAsIHVpbnQxNng4X3QgX19wMSkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwIC0gdm1vdmxfaGlnaF91MTYoX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2c3Vid19oaWdoX3UxNih1aW50MzJ4NF90IF9fcDAsIHVpbnQxNng4X3QgX19wMSkgewogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwIC0gX19ub3N3YXBfdm1vdmxfaGlnaF91MTYoX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZ4OF90IHZzdWJ3X2hpZ2hfczgoaW50MTZ4OF90IF9fcDAsIGludDh4MTZfdCBfX3AxKSB7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAtIHZtb3ZsX2hpZ2hfczgoX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4OF90IHZzdWJ3X2hpZ2hfczgoaW50MTZ4OF90IF9fcDAsIGludDh4MTZfdCBfX3AxKSB7CiAgaW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgLSBfX25vc3dhcF92bW92bF9oaWdoX3M4KF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDY0eDJfdCB2c3Vid19oaWdoX3MzMihpbnQ2NHgyX3QgX19wMCwgaW50MzJ4NF90IF9fcDEpIHsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwIC0gdm1vdmxfaGlnaF9zMzIoX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50NjR4Ml90IHZzdWJ3X2hpZ2hfczMyKGludDY0eDJfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIGludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwIC0gX19ub3N3YXBfdm1vdmxfaGlnaF9zMzIoX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4NF90IHZzdWJ3X2hpZ2hfczE2KGludDMyeDRfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgLSB2bW92bF9oaWdoX3MxNihfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMng0X3QgdnN1YndfaGlnaF9zMTYoaW50MzJ4NF90IF9fcDAsIGludDE2eDhfdCBfX3AxKSB7CiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgLSBfX25vc3dhcF92bW92bF9oaWdoX3MxNihfX3JldjEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3Vkb3RxX2xhbmVxX3MzMihfX3AwXzgyNywgX19wMV84MjcsIF9fcDJfODI3LCBfX3AzXzgyNykgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczBfODI3ID0gX19wMF84Mjc7IFwKICBpbnQ4eDE2X3QgX19zMV84MjcgPSBfX3AxXzgyNzsgXAogIHVpbnQ4eDE2X3QgX19zMl84MjcgPSBfX3AyXzgyNzsgXAogIGludDMyeDRfdCBfX3JldF84Mjc7IFwKdWludDh4MTZfdCBfX3JlaW50XzgyNyA9IF9fczJfODI3OyBcCiAgX19yZXRfODI3ID0gdnVzZG90cV9zMzIoX19zMF84MjcsICh1aW50OHgxNl90KShzcGxhdHFfbGFuZXFfczMyKCooaW50MzJ4NF90ICopICZfX3JlaW50XzgyNywgX19wM184MjcpKSwgX19zMV84MjcpOyBcCiAgX19yZXRfODI3OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN1ZG90cV9sYW5lcV9zMzIoX19wMF84MjgsIF9fcDFfODI4LCBfX3AyXzgyOCwgX19wM184MjgpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDRfdCBfX3MwXzgyOCA9IF9fcDBfODI4OyBcCiAgaW50OHgxNl90IF9fczFfODI4ID0gX19wMV84Mjg7IFwKICB1aW50OHgxNl90IF9fczJfODI4ID0gX19wMl84Mjg7IFwKICBpbnQzMng0X3QgX19yZXYwXzgyODsgIF9fcmV2MF84MjggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzgyOCwgX19zMF84MjgsIDMsIDIsIDEsIDApOyBcCiAgaW50OHgxNl90IF9fcmV2MV84Mjg7ICBfX3JldjFfODI4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV84MjgsIF9fczFfODI4LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQ4eDE2X3QgX19yZXYyXzgyODsgIF9fcmV2Ml84MjggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzgyOCwgX19zMl84MjgsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50MzJ4NF90IF9fcmV0XzgyODsgXAp1aW50OHgxNl90IF9fcmVpbnRfODI4ID0gX19yZXYyXzgyODsgXAogIF9fcmV0XzgyOCA9IF9fbm9zd2FwX3Z1c2RvdHFfczMyKF9fcmV2MF84MjgsICh1aW50OHgxNl90KShfX25vc3dhcF9zcGxhdHFfbGFuZXFfczMyKCooaW50MzJ4NF90ICopICZfX3JlaW50XzgyOCwgX19wM184MjgpKSwgX19yZXYxXzgyOCk7IFwKICBfX3JldF84MjggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF84MjgsIF9fcmV0XzgyOCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF84Mjg7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2c3Vkb3RfbGFuZXFfczMyKF9fcDBfODI5LCBfX3AxXzgyOSwgX19wMl84MjksIF9fcDNfODI5KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMngyX3QgX19zMF84MjkgPSBfX3AwXzgyOTsgXAogIGludDh4OF90IF9fczFfODI5ID0gX19wMV84Mjk7IFwKICB1aW50OHgxNl90IF9fczJfODI5ID0gX19wMl84Mjk7IFwKICBpbnQzMngyX3QgX19yZXRfODI5OyBcCnVpbnQ4eDE2X3QgX19yZWludF84MjkgPSBfX3MyXzgyOTsgXAogIF9fcmV0XzgyOSA9IHZ1c2RvdF9zMzIoX19zMF84MjksICh1aW50OHg4X3QpKHNwbGF0X2xhbmVxX3MzMigqKGludDMyeDRfdCAqKSAmX19yZWludF84MjksIF9fcDNfODI5KSksIF9fczFfODI5KTsgXAogIF9fcmV0XzgyOTsgXAp9KQojZWxzZQojZGVmaW5lIHZzdWRvdF9sYW5lcV9zMzIoX19wMF84MzAsIF9fcDFfODMwLCBfX3AyXzgzMCwgX19wM184MzApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJfdCBfX3MwXzgzMCA9IF9fcDBfODMwOyBcCiAgaW50OHg4X3QgX19zMV84MzAgPSBfX3AxXzgzMDsgXAogIHVpbnQ4eDE2X3QgX19zMl84MzAgPSBfX3AyXzgzMDsgXAogIGludDMyeDJfdCBfX3JldjBfODMwOyAgX19yZXYwXzgzMCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfODMwLCBfX3MwXzgzMCwgMSwgMCk7IFwKICBpbnQ4eDhfdCBfX3JldjFfODMwOyAgX19yZXYxXzgzMCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfODMwLCBfX3MxXzgzMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50OHgxNl90IF9fcmV2Ml84MzA7ICBfX3JldjJfODMwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl84MzAsIF9fczJfODMwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDJfdCBfX3JldF84MzA7IFwKdWludDh4MTZfdCBfX3JlaW50XzgzMCA9IF9fcmV2Ml84MzA7IFwKICBfX3JldF84MzAgPSBfX25vc3dhcF92dXNkb3RfczMyKF9fcmV2MF84MzAsICh1aW50OHg4X3QpKF9fbm9zd2FwX3NwbGF0X2xhbmVxX3MzMigqKGludDMyeDRfdCAqKSAmX19yZWludF84MzAsIF9fcDNfODMwKSksIF9fcmV2MV84MzApOyBcCiAgX19yZXRfODMwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfODMwLCBfX3JldF84MzAsIDEsIDApOyBcCiAgX19yZXRfODMwOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgcG9seTh4OF90IHZ0cm4xX3A4KHBvbHk4eDhfdCBfX3AwLCBwb2x5OHg4X3QgX19wMSkgewogIHBvbHk4eDhfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDAsIDgsIDIsIDEwLCA0LCAxMiwgNiwgMTQpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHBvbHk4eDhfdCB2dHJuMV9wOChwb2x5OHg4X3QgX19wMCwgcG9seTh4OF90IF9fcDEpIHsKICBwb2x5OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHBvbHk4eDhfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAwLCA4LCAyLCAxMCwgNCwgMTIsIDYsIDE0KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgcG9seTE2eDRfdCB2dHJuMV9wMTYocG9seTE2eDRfdCBfX3AwLCBwb2x5MTZ4NF90IF9fcDEpIHsKICBwb2x5MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMCwgNCwgMiwgNik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgcG9seTE2eDRfdCB2dHJuMV9wMTYocG9seTE2eDRfdCBfX3AwLCBwb2x5MTZ4NF90IF9fcDEpIHsKICBwb2x5MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHBvbHkxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgcG9seTE2eDRfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAwLCA0LCAyLCA2KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgcG9seTh4MTZfdCB2dHJuMXFfcDgocG9seTh4MTZfdCBfX3AwLCBwb2x5OHgxNl90IF9fcDEpIHsKICBwb2x5OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMCwgMTYsIDIsIDE4LCA0LCAyMCwgNiwgMjIsIDgsIDI0LCAxMCwgMjYsIDEyLCAyOCwgMTQsIDMwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBwb2x5OHgxNl90IHZ0cm4xcV9wOChwb2x5OHgxNl90IF9fcDAsIHBvbHk4eDE2X3QgX19wMSkgewogIHBvbHk4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBwb2x5OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDAsIDE2LCAyLCAxOCwgNCwgMjAsIDYsIDIyLCA4LCAyNCwgMTAsIDI2LCAxMiwgMjgsIDE0LCAzMCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHBvbHk2NHgyX3QgdnRybjFxX3A2NChwb2x5NjR4Ml90IF9fcDAsIHBvbHk2NHgyX3QgX19wMSkgewogIHBvbHk2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAwLCAyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBwb2x5NjR4Ml90IHZ0cm4xcV9wNjQocG9seTY0eDJfdCBfX3AwLCBwb2x5NjR4Ml90IF9fcDEpIHsKICBwb2x5NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHBvbHk2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgcG9seTY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAwLCAyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgcG9seTE2eDhfdCB2dHJuMXFfcDE2KHBvbHkxNng4X3QgX19wMCwgcG9seTE2eDhfdCBfX3AxKSB7CiAgcG9seTE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDAsIDgsIDIsIDEwLCA0LCAxMiwgNiwgMTQpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHBvbHkxNng4X3QgdnRybjFxX3AxNihwb2x5MTZ4OF90IF9fcDAsIHBvbHkxNng4X3QgX19wMSkgewogIHBvbHkxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBwb2x5MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDAsIDgsIDIsIDEwLCA0LCAxMiwgNiwgMTQpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHgxNl90IHZ0cm4xcV91OCh1aW50OHgxNl90IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSkgewogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAwLCAxNiwgMiwgMTgsIDQsIDIwLCA2LCAyMiwgOCwgMjQsIDEwLCAyNiwgMTIsIDI4LCAxNCwgMzApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDE2X3QgdnRybjFxX3U4KHVpbnQ4eDE2X3QgX19wMCwgdWludDh4MTZfdCBfX3AxKSB7CiAgdWludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMCwgMTYsIDIsIDE4LCA0LCAyMCwgNiwgMjIsIDgsIDI0LCAxMCwgMjYsIDEyLCAyOCwgMTQsIDMwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDRfdCB2dHJuMXFfdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDAsIDQsIDIsIDYpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMng0X3QgdnRybjFxX3UzMih1aW50MzJ4NF90IF9fcDAsIHVpbnQzMng0X3QgX19wMSkgewogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDAsIDQsIDIsIDYpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50NjR4Ml90IHZ0cm4xcV91NjQodWludDY0eDJfdCBfX3AwLCB1aW50NjR4Ml90IF9fcDEpIHsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMCwgMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDY0eDJfdCB2dHJuMXFfdTY0KHVpbnQ2NHgyX3QgX19wMCwgdWludDY0eDJfdCBfX3AxKSB7CiAgdWludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMCwgMik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng4X3QgdnRybjFxX3UxNih1aW50MTZ4OF90IF9fcDAsIHVpbnQxNng4X3QgX19wMSkgewogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAwLCA4LCAyLCAxMCwgNCwgMTIsIDYsIDE0KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4OF90IHZ0cm4xcV91MTYodWludDE2eDhfdCBfX3AwLCB1aW50MTZ4OF90IF9fcDEpIHsKICB1aW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAwLCA4LCAyLCAxMCwgNCwgMTIsIDYsIDE0KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHgxNl90IHZ0cm4xcV9zOChpbnQ4eDE2X3QgX19wMCwgaW50OHgxNl90IF9fcDEpIHsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAwLCAxNiwgMiwgMTgsIDQsIDIwLCA2LCAyMiwgOCwgMjQsIDEwLCAyNiwgMTIsIDI4LCAxNCwgMzApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4MTZfdCB2dHJuMXFfczgoaW50OHgxNl90IF9fcDAsIGludDh4MTZfdCBfX3AxKSB7CiAgaW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMCwgMTYsIDIsIDE4LCA0LCAyMCwgNiwgMjIsIDgsIDI0LCAxMCwgMjYsIDEyLCAyOCwgMTQsIDMwKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQ2NHgyX3QgdnRybjFxX2Y2NChmbG9hdDY0eDJfdCBfX3AwLCBmbG9hdDY0eDJfdCBfX3AxKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAwLCAyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDY0eDJfdCB2dHJuMXFfZjY0KGZsb2F0NjR4Ml90IF9fcDAsIGZsb2F0NjR4Ml90IF9fcDEpIHsKICBmbG9hdDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAwLCAyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMng0X3QgdnRybjFxX2YzMihmbG9hdDMyeDRfdCBfX3AwLCBmbG9hdDMyeDRfdCBfX3AxKSB7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAwLCA0LCAyLCA2KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDRfdCB2dHJuMXFfZjMyKGZsb2F0MzJ4NF90IF9fcDAsIGZsb2F0MzJ4NF90IF9fcDEpIHsKICBmbG9hdDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAwLCA0LCAyLCA2KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4NF90IHZ0cm4xcV9zMzIoaW50MzJ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMCwgNCwgMiwgNik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4NF90IHZ0cm4xcV9zMzIoaW50MzJ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxKSB7CiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMCwgNCwgMiwgNik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDY0eDJfdCB2dHJuMXFfczY0KGludDY0eDJfdCBfX3AwLCBpbnQ2NHgyX3QgX19wMSkgewogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDAsIDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDY0eDJfdCB2dHJuMXFfczY0KGludDY0eDJfdCBfX3AwLCBpbnQ2NHgyX3QgX19wMSkgewogIGludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBpbnQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDAsIDIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng4X3QgdnRybjFxX3MxNihpbnQxNng4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEpIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAwLCA4LCAyLCAxMCwgNCwgMTIsIDYsIDE0KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng4X3QgdnRybjFxX3MxNihpbnQxNng4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEpIHsKICBpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAwLCA4LCAyLCAxMCwgNCwgMTIsIDYsIDE0KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4OF90IHZ0cm4xX3U4KHVpbnQ4eDhfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDAsIDgsIDIsIDEwLCA0LCAxMiwgNiwgMTQpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDhfdCB2dHJuMV91OCh1aW50OHg4X3QgX19wMCwgdWludDh4OF90IF9fcDEpIHsKICB1aW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAwLCA4LCAyLCAxMCwgNCwgMTIsIDYsIDE0KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDJfdCB2dHJuMV91MzIodWludDMyeDJfdCBfX3AwLCB1aW50MzJ4Ml90IF9fcDEpIHsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMCwgMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDJfdCB2dHJuMV91MzIodWludDMyeDJfdCBfX3AwLCB1aW50MzJ4Ml90IF9fcDEpIHsKICB1aW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAwLCAyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDRfdCB2dHJuMV91MTYodWludDE2eDRfdCBfX3AwLCB1aW50MTZ4NF90IF9fcDEpIHsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMCwgNCwgMiwgNik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDRfdCB2dHJuMV91MTYodWludDE2eDRfdCBfX3AwLCB1aW50MTZ4NF90IF9fcDEpIHsKICB1aW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAwLCA0LCAyLCA2KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHg4X3QgdnRybjFfczgoaW50OHg4X3QgX19wMCwgaW50OHg4X3QgX19wMSkgewogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMCwgOCwgMiwgMTAsIDQsIDEyLCA2LCAxNCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OHg4X3QgdnRybjFfczgoaW50OHg4X3QgX19wMCwgaW50OHg4X3QgX19wMSkgewogIGludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDAsIDgsIDIsIDEwLCA0LCAxMiwgNiwgMTQpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDJfdCB2dHJuMV9mMzIoZmxvYXQzMngyX3QgX19wMCwgZmxvYXQzMngyX3QgX19wMSkgewogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMCwgMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMngyX3QgdnRybjFfZjMyKGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0MzJ4Ml90IF9fcDEpIHsKICBmbG9hdDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAwLCAyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4Ml90IHZ0cm4xX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEpIHsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAwLCAyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMngyX3QgdnRybjFfczMyKGludDMyeDJfdCBfX3AwLCBpbnQzMngyX3QgX19wMSkgewogIGludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDAsIDIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng0X3QgdnRybjFfczE2KGludDE2eDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSkgewogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDAsIDQsIDIsIDYpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDRfdCB2dHJuMV9zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxKSB7CiAgaW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMCwgNCwgMiwgNik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHBvbHk4eDhfdCB2dHJuMl9wOChwb2x5OHg4X3QgX19wMCwgcG9seTh4OF90IF9fcDEpIHsKICBwb2x5OHg4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAxLCA5LCAzLCAxMSwgNSwgMTMsIDcsIDE1KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBwb2x5OHg4X3QgdnRybjJfcDgocG9seTh4OF90IF9fcDAsIHBvbHk4eDhfdCBfX3AxKSB7CiAgcG9seTh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHBvbHk4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBwb2x5OHg4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMSwgOSwgMywgMTEsIDUsIDEzLCA3LCAxNSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHBvbHkxNng0X3QgdnRybjJfcDE2KHBvbHkxNng0X3QgX19wMCwgcG9seTE2eDRfdCBfX3AxKSB7CiAgcG9seTE2eDRfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDEsIDUsIDMsIDcpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHBvbHkxNng0X3QgdnRybjJfcDE2KHBvbHkxNng0X3QgX19wMCwgcG9seTE2eDRfdCBfX3AxKSB7CiAgcG9seTE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBwb2x5MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHBvbHkxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMSwgNSwgMywgNyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHBvbHk4eDE2X3QgdnRybjJxX3A4KHBvbHk4eDE2X3QgX19wMCwgcG9seTh4MTZfdCBfX3AxKSB7CiAgcG9seTh4MTZfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDEsIDE3LCAzLCAxOSwgNSwgMjEsIDcsIDIzLCA5LCAyNSwgMTEsIDI3LCAxMywgMjksIDE1LCAzMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgcG9seTh4MTZfdCB2dHJuMnFfcDgocG9seTh4MTZfdCBfX3AwLCBwb2x5OHgxNl90IF9fcDEpIHsKICBwb2x5OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHBvbHk4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTh4MTZfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAxLCAxNywgMywgMTksIDUsIDIxLCA3LCAyMywgOSwgMjUsIDExLCAyNywgMTMsIDI5LCAxNSwgMzEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBwb2x5NjR4Ml90IHZ0cm4ycV9wNjQocG9seTY0eDJfdCBfX3AwLCBwb2x5NjR4Ml90IF9fcDEpIHsKICBwb2x5NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMSwgMyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgcG9seTY0eDJfdCB2dHJuMnFfcDY0KHBvbHk2NHgyX3QgX19wMCwgcG9seTY0eDJfdCBfX3AxKSB7CiAgcG9seTY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBwb2x5NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHBvbHk2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMSwgMyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHBvbHkxNng4X3QgdnRybjJxX3AxNihwb2x5MTZ4OF90IF9fcDAsIHBvbHkxNng4X3QgX19wMSkgewogIHBvbHkxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAxLCA5LCAzLCAxMSwgNSwgMTMsIDcsIDE1KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBwb2x5MTZ4OF90IHZ0cm4ycV9wMTYocG9seTE2eDhfdCBfX3AwLCBwb2x5MTZ4OF90IF9fcDEpIHsKICBwb2x5MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHBvbHkxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAxLCA5LCAzLCAxMSwgNSwgMTMsIDcsIDE1KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4MTZfdCB2dHJuMnFfdTgodWludDh4MTZfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEpIHsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMSwgMTcsIDMsIDE5LCA1LCAyMSwgNywgMjMsIDksIDI1LCAxMSwgMjcsIDEzLCAyOSwgMTUsIDMxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHgxNl90IHZ0cm4ycV91OCh1aW50OHgxNl90IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSkgewogIHVpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDEsIDE3LCAzLCAxOSwgNSwgMjEsIDcsIDIzLCA5LCAyNSwgMTEsIDI3LCAxMywgMjksIDE1LCAzMSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMng0X3QgdnRybjJxX3UzMih1aW50MzJ4NF90IF9fcDAsIHVpbnQzMng0X3QgX19wMSkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAxLCA1LCAzLCA3KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4NF90IHZ0cm4ycV91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAxLCA1LCAzLCA3KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDY0eDJfdCB2dHJuMnFfdTY0KHVpbnQ2NHgyX3QgX19wMCwgdWludDY0eDJfdCBfX3AxKSB7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDEsIDMpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ2NHgyX3QgdnRybjJxX3U2NCh1aW50NjR4Ml90IF9fcDAsIHVpbnQ2NHgyX3QgX19wMSkgewogIHVpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDEsIDMpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4OF90IHZ0cm4ycV91MTYodWludDE2eDhfdCBfX3AwLCB1aW50MTZ4OF90IF9fcDEpIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMSwgOSwgMywgMTEsIDUsIDEzLCA3LCAxNSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDhfdCB2dHJuMnFfdTE2KHVpbnQxNng4X3QgX19wMCwgdWludDE2eDhfdCBfX3AxKSB7CiAgdWludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMSwgOSwgMywgMTEsIDUsIDEzLCA3LCAxNSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4MTZfdCB2dHJuMnFfczgoaW50OHgxNl90IF9fcDAsIGludDh4MTZfdCBfX3AxKSB7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMSwgMTcsIDMsIDE5LCA1LCAyMSwgNywgMjMsIDksIDI1LCAxMSwgMjcsIDEzLCAyOSwgMTUsIDMxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ4eDE2X3QgdnRybjJxX3M4KGludDh4MTZfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSkgewogIGludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDEsIDE3LCAzLCAxOSwgNSwgMjEsIDcsIDIzLCA5LCAyNSwgMTEsIDI3LCAxMywgMjksIDE1LCAzMSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0NjR4Ml90IHZ0cm4ycV9mNjQoZmxvYXQ2NHgyX3QgX19wMCwgZmxvYXQ2NHgyX3QgX19wMSkgewogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMSwgMyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQ2NHgyX3QgdnRybjJxX2Y2NChmbG9hdDY0eDJfdCBfX3AwLCBmbG9hdDY0eDJfdCBfX3AxKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgZmxvYXQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMSwgMyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4NF90IHZ0cm4ycV9mMzIoZmxvYXQzMng0X3QgX19wMCwgZmxvYXQzMng0X3QgX19wMSkgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMSwgNSwgMywgNyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMng0X3QgdnRybjJxX2YzMihmbG9hdDMyeDRfdCBfX3AwLCBmbG9hdDMyeDRfdCBfX3AxKSB7CiAgZmxvYXQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMSwgNSwgMywgNyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDRfdCB2dHJuMnFfczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDEsIDUsIDMsIDcpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDRfdCB2dHJuMnFfczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDEsIDUsIDMsIDcpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ2NHgyX3QgdnRybjJxX3M2NChpbnQ2NHgyX3QgX19wMCwgaW50NjR4Ml90IF9fcDEpIHsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAxLCAzKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ2NHgyX3QgdnRybjJxX3M2NChpbnQ2NHgyX3QgX19wMCwgaW50NjR4Ml90IF9fcDEpIHsKICBpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAxLCAzKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZ4OF90IHZ0cm4ycV9zMTYoaW50MTZ4OF90IF9fcDAsIGludDE2eDhfdCBfX3AxKSB7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMSwgOSwgMywgMTEsIDUsIDEzLCA3LCAxNSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4OF90IHZ0cm4ycV9zMTYoaW50MTZ4OF90IF9fcDAsIGludDE2eDhfdCBfX3AxKSB7CiAgaW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMSwgOSwgMywgMTEsIDUsIDEzLCA3LCAxNSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDhfdCB2dHJuMl91OCh1aW50OHg4X3QgX19wMCwgdWludDh4OF90IF9fcDEpIHsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAxLCA5LCAzLCAxMSwgNSwgMTMsIDcsIDE1KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHg4X3QgdnRybjJfdTgodWludDh4OF90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxKSB7CiAgdWludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMSwgOSwgMywgMTEsIDUsIDEzLCA3LCAxNSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMngyX3QgdnRybjJfdTMyKHVpbnQzMngyX3QgX19wMCwgdWludDMyeDJfdCBfX3AxKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDEsIDMpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMngyX3QgdnRybjJfdTMyKHVpbnQzMngyX3QgX19wMCwgdWludDMyeDJfdCBfX3AxKSB7CiAgdWludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMSwgMyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng0X3QgdnRybjJfdTE2KHVpbnQxNng0X3QgX19wMCwgdWludDE2eDRfdCBfX3AxKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDEsIDUsIDMsIDcpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng0X3QgdnRybjJfdTE2KHVpbnQxNng0X3QgX19wMCwgdWludDE2eDRfdCBfX3AxKSB7CiAgdWludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMSwgNSwgMywgNyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4OF90IHZ0cm4yX3M4KGludDh4OF90IF9fcDAsIGludDh4OF90IF9fcDEpIHsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDEsIDksIDMsIDExLCA1LCAxMywgNywgMTUpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4OF90IHZ0cm4yX3M4KGludDh4OF90IF9fcDAsIGludDh4OF90IF9fcDEpIHsKICBpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAxLCA5LCAzLCAxMSwgNSwgMTMsIDcsIDE1KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMngyX3QgdnRybjJfZjMyKGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0MzJ4Ml90IF9fcDEpIHsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDEsIDMpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4Ml90IHZ0cm4yX2YzMihmbG9hdDMyeDJfdCBfX3AwLCBmbG9hdDMyeDJfdCBfX3AxKSB7CiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMSwgMyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDJfdCB2dHJuMl9zMzIoaW50MzJ4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxKSB7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMSwgMyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4Ml90IHZ0cm4yX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEpIHsKICBpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAxLCAzKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZ4NF90IHZ0cm4yX3MxNihpbnQxNng0X3QgX19wMCwgaW50MTZ4NF90IF9fcDEpIHsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAxLCA1LCAzLCA3KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng0X3QgdnRybjJfczE2KGludDE2eDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSkgewogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDEsIDUsIDMsIDcpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgpfX2FpIHVpbnQ2NHgxX3QgdnRzdF9wNjQocG9seTY0eDFfdCBfX3AwLCBwb2x5NjR4MV90IF9fcDEpIHsKICB1aW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3Z0c3RfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDE5KTsKICByZXR1cm4gX19yZXQ7Cn0KI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDY0eDJfdCB2dHN0cV9wNjQocG9seTY0eDJfdCBfX3AwLCBwb2x5NjR4Ml90IF9fcDEpIHsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3Z0c3RxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDUxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50NjR4Ml90IHZ0c3RxX3A2NChwb2x5NjR4Ml90IF9fcDAsIHBvbHk2NHgyX3QgX19wMSkgewogIHBvbHk2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgcG9seTY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3Z0c3RxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCA1MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ2NHgyX3QgdnRzdHFfdTY0KHVpbnQ2NHgyX3QgX19wMCwgdWludDY0eDJfdCBfX3AxKSB7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92dHN0cV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCA1MSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDY0eDJfdCB2dHN0cV91NjQodWludDY0eDJfdCBfX3AwLCB1aW50NjR4Ml90IF9fcDEpIHsKICB1aW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92dHN0cV92KChpbnQ4eDE2X3QpX19yZXYwLCAoaW50OHgxNl90KV9fcmV2MSwgNTEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50NjR4Ml90IHZ0c3RxX3M2NChpbnQ2NHgyX3QgX19wMCwgaW50NjR4Ml90IF9fcDEpIHsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgyX3QpIF9fYnVpbHRpbl9uZW9uX3Z0c3RxX3YoKGludDh4MTZfdClfX3AwLCAoaW50OHgxNl90KV9fcDEsIDUxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50NjR4Ml90IHZ0c3RxX3M2NChpbnQ2NHgyX3QgX19wMCwgaW50NjR4Ml90IF9fcDEpIHsKICBpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkgX19idWlsdGluX25lb25fdnRzdHFfdigoaW50OHgxNl90KV9fcmV2MCwgKGludDh4MTZfdClfX3JldjEsIDUxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKX19haSB1aW50NjR4MV90IHZ0c3RfdTY0KHVpbnQ2NHgxX3QgX19wMCwgdWludDY0eDFfdCBfX3AxKSB7CiAgdWludDY0eDFfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4MV90KSBfX2J1aWx0aW5fbmVvbl92dHN0X3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAxOSk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDY0eDFfdCB2dHN0X3M2NChpbnQ2NHgxX3QgX19wMCwgaW50NjR4MV90IF9fcDEpIHsKICB1aW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NHgxX3QpIF9fYnVpbHRpbl9uZW9uX3Z0c3RfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDE5KTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSB1aW50NjRfdCB2dHN0ZF91NjQodWludDY0X3QgX19wMCwgdWludDY0X3QgX19wMSkgewogIHVpbnQ2NF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQ2NF90KSBfX2J1aWx0aW5fbmVvbl92dHN0ZF91NjQoX19wMCwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDY0X3QgdnRzdGRfczY0KGludDY0X3QgX19wMCwgaW50NjRfdCBfX3AxKSB7CiAgdWludDY0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3Z0c3RkX3M2NChfX3AwLCBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQ4X3QgdnVxYWRkYl9zOChpbnQ4X3QgX19wMCwgdWludDhfdCBfX3AxKSB7CiAgaW50OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDhfdCkgX19idWlsdGluX25lb25fdnVxYWRkYl9zOChfX3AwLCBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQzMl90IHZ1cWFkZHNfczMyKGludDMyX3QgX19wMCwgdWludDMyX3QgX19wMSkgewogIGludDMyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJfdCkgX19idWlsdGluX25lb25fdnVxYWRkc19zMzIoX19wMCwgX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50NjRfdCB2dXFhZGRkX3M2NChpbnQ2NF90IF9fcDAsIHVpbnQ2NF90IF9fcDEpIHsKICBpbnQ2NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0X3QpIF9fYnVpbHRpbl9uZW9uX3Z1cWFkZGRfczY0KF9fcDAsIF9fcDEpOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDE2X3QgdnVxYWRkaF9zMTYoaW50MTZfdCBfX3AwLCB1aW50MTZfdCBfX3AxKSB7CiAgaW50MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNl90KSBfX2J1aWx0aW5fbmVvbl92dXFhZGRoX3MxNihfX3AwLCBfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHgxNl90IHZ1cWFkZHFfczgoaW50OHgxNl90IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSkgewogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDE2X3QpIF9fYnVpbHRpbl9uZW9uX3Z1cWFkZHFfdigoaW50OHgxNl90KV9fcDAsIChpbnQ4eDE2X3QpX19wMSwgMzIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4MTZfdCB2dXFhZGRxX3M4KGludDh4MTZfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEpIHsKICBpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50OHgxNl90KSBfX2J1aWx0aW5fbmVvbl92dXFhZGRxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAzMik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDRfdCB2dXFhZGRxX3MzMihpbnQzMng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkgX19idWlsdGluX25lb25fdnVxYWRkcV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAzNCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4NF90IHZ1cWFkZHFfczMyKGludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEpIHsKICBpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4NF90KSBfX2J1aWx0aW5fbmVvbl92dXFhZGRxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAzNCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDY0eDJfdCB2dXFhZGRxX3M2NChpbnQ2NHgyX3QgX19wMCwgdWludDY0eDJfdCBfX3AxKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDJfdCkgX19idWlsdGluX25lb25fdnVxYWRkcV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAzNSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50NjR4Ml90IHZ1cWFkZHFfczY0KGludDY0eDJfdCBfX3AwLCB1aW50NjR4Ml90IF9fcDEpIHsKICBpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50NjR4Ml90KSBfX2J1aWx0aW5fbmVvbl92dXFhZGRxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAzNSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDhfdCB2dXFhZGRxX3MxNihpbnQxNng4X3QgX19wMCwgdWludDE2eDhfdCBfX3AxKSB7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDhfdCkgX19idWlsdGluX25lb25fdnVxYWRkcV92KChpbnQ4eDE2X3QpX19wMCwgKGludDh4MTZfdClfX3AxLCAzMyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4OF90IHZ1cWFkZHFfczE2KGludDE2eDhfdCBfX3AwLCB1aW50MTZ4OF90IF9fcDEpIHsKICBpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MTZ4OF90KSBfX2J1aWx0aW5fbmVvbl92dXFhZGRxX3YoKGludDh4MTZfdClfX3JldjAsIChpbnQ4eDE2X3QpX19yZXYxLCAzMyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4OF90IHZ1cWFkZF9zOChpbnQ4eDhfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDh4OF90KSBfX2J1aWx0aW5fbmVvbl92dXFhZGRfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4OF90IHZ1cWFkZF9zOChpbnQ4eDhfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIGludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQ4eDhfdCkgX19idWlsdGluX25lb25fdnVxYWRkX3YoKGludDh4OF90KV9fcmV2MCwgKGludDh4OF90KV9fcmV2MSwgMCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDJfdCB2dXFhZGRfczMyKGludDMyeDJfdCBfX3AwLCB1aW50MzJ4Ml90IF9fcDEpIHsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92dXFhZGRfdigoaW50OHg4X3QpX19wMCwgKGludDh4OF90KV9fcDEsIDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDJfdCB2dXFhZGRfczMyKGludDMyeDJfdCBfX3AwLCB1aW50MzJ4Ml90IF9fcDEpIHsKICBpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50MzJ4Ml90KSBfX2J1aWx0aW5fbmVvbl92dXFhZGRfdigoaW50OHg4X3QpX19yZXYwLCAoaW50OHg4X3QpX19yZXYxLCAyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKX19haSBpbnQ2NHgxX3QgdnVxYWRkX3M2NChpbnQ2NHgxX3QgX19wMCwgdWludDY0eDFfdCBfX3AxKSB7CiAgaW50NjR4MV90IF9fcmV0OwogIF9fcmV0ID0gKGludDY0eDFfdCkgX19idWlsdGluX25lb25fdnVxYWRkX3YoKGludDh4OF90KV9fcDAsIChpbnQ4eDhfdClfX3AxLCAzKTsKICByZXR1cm4gX19yZXQ7Cn0KI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZ4NF90IHZ1cWFkZF9zMTYoaW50MTZ4NF90IF9fcDAsIHVpbnQxNng0X3QgX19wMSkgewogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3Z1cWFkZF92KChpbnQ4eDhfdClfX3AwLCAoaW50OHg4X3QpX19wMSwgMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4NF90IHZ1cWFkZF9zMTYoaW50MTZ4NF90IF9fcDAsIHVpbnQxNng0X3QgX19wMSkgewogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng0X3QpIF9fYnVpbHRpbl9uZW9uX3Z1cWFkZF92KChpbnQ4eDhfdClfX3JldjAsIChpbnQ4eDhfdClfX3JldjEsIDEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2dXNkb3RxX2xhbmVxX3MzMihfX3AwXzgzMSwgX19wMV84MzEsIF9fcDJfODMxLCBfX3AzXzgzMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczBfODMxID0gX19wMF84MzE7IFwKICB1aW50OHgxNl90IF9fczFfODMxID0gX19wMV84MzE7IFwKICBpbnQ4eDE2X3QgX19zMl84MzEgPSBfX3AyXzgzMTsgXAogIGludDMyeDRfdCBfX3JldF84MzE7IFwKaW50OHgxNl90IF9fcmVpbnRfODMxID0gX19zMl84MzE7IFwKICBfX3JldF84MzEgPSB2dXNkb3RxX3MzMihfX3MwXzgzMSwgX19zMV84MzEsIChpbnQ4eDE2X3QpKHNwbGF0cV9sYW5lcV9zMzIoKihpbnQzMng0X3QgKikgJl9fcmVpbnRfODMxLCBfX3AzXzgzMSkpKTsgXAogIF9fcmV0XzgzMTsgXAp9KQojZWxzZQojZGVmaW5lIHZ1c2RvdHFfbGFuZXFfczMyKF9fcDBfODMyLCBfX3AxXzgzMiwgX19wMl84MzIsIF9fcDNfODMyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMF84MzIgPSBfX3AwXzgzMjsgXAogIHVpbnQ4eDE2X3QgX19zMV84MzIgPSBfX3AxXzgzMjsgXAogIGludDh4MTZfdCBfX3MyXzgzMiA9IF9fcDJfODMyOyBcCiAgaW50MzJ4NF90IF9fcmV2MF84MzI7ICBfX3JldjBfODMyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF84MzIsIF9fczBfODMyLCAzLCAyLCAxLCAwKTsgXAogIHVpbnQ4eDE2X3QgX19yZXYxXzgzMjsgIF9fcmV2MV84MzIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzgzMiwgX19zMV84MzIsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50OHgxNl90IF9fcmV2Ml84MzI7ICBfX3JldjJfODMyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl84MzIsIF9fczJfODMyLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDRfdCBfX3JldF84MzI7IFwKaW50OHgxNl90IF9fcmVpbnRfODMyID0gX19yZXYyXzgzMjsgXAogIF9fcmV0XzgzMiA9IF9fbm9zd2FwX3Z1c2RvdHFfczMyKF9fcmV2MF84MzIsIF9fcmV2MV84MzIsIChpbnQ4eDE2X3QpKF9fbm9zd2FwX3NwbGF0cV9sYW5lcV9zMzIoKihpbnQzMng0X3QgKikgJl9fcmVpbnRfODMyLCBfX3AzXzgzMikpKTsgXAogIF9fcmV0XzgzMiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzgzMiwgX19yZXRfODMyLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0XzgzMjsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZ1c2RvdF9sYW5lcV9zMzIoX19wMF84MzMsIF9fcDFfODMzLCBfX3AyXzgzMywgX19wM184MzMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJfdCBfX3MwXzgzMyA9IF9fcDBfODMzOyBcCiAgdWludDh4OF90IF9fczFfODMzID0gX19wMV84MzM7IFwKICBpbnQ4eDE2X3QgX19zMl84MzMgPSBfX3AyXzgzMzsgXAogIGludDMyeDJfdCBfX3JldF84MzM7IFwKaW50OHgxNl90IF9fcmVpbnRfODMzID0gX19zMl84MzM7IFwKICBfX3JldF84MzMgPSB2dXNkb3RfczMyKF9fczBfODMzLCBfX3MxXzgzMywgKGludDh4OF90KShzcGxhdF9sYW5lcV9zMzIoKihpbnQzMng0X3QgKikgJl9fcmVpbnRfODMzLCBfX3AzXzgzMykpKTsgXAogIF9fcmV0XzgzMzsgXAp9KQojZWxzZQojZGVmaW5lIHZ1c2RvdF9sYW5lcV9zMzIoX19wMF84MzQsIF9fcDFfODM0LCBfX3AyXzgzNCwgX19wM184MzQpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDJfdCBfX3MwXzgzNCA9IF9fcDBfODM0OyBcCiAgdWludDh4OF90IF9fczFfODM0ID0gX19wMV84MzQ7IFwKICBpbnQ4eDE2X3QgX19zMl84MzQgPSBfX3AyXzgzNDsgXAogIGludDMyeDJfdCBfX3JldjBfODM0OyAgX19yZXYwXzgzNCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfODM0LCBfX3MwXzgzNCwgMSwgMCk7IFwKICB1aW50OHg4X3QgX19yZXYxXzgzNDsgIF9fcmV2MV84MzQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzgzNCwgX19zMV84MzQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50OHgxNl90IF9fcmV2Ml84MzQ7ICBfX3JldjJfODM0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl84MzQsIF9fczJfODM0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDJfdCBfX3JldF84MzQ7IFwKaW50OHgxNl90IF9fcmVpbnRfODM0ID0gX19yZXYyXzgzNDsgXAogIF9fcmV0XzgzNCA9IF9fbm9zd2FwX3Z1c2RvdF9zMzIoX19yZXYwXzgzNCwgX19yZXYxXzgzNCwgKGludDh4OF90KShfX25vc3dhcF9zcGxhdF9sYW5lcV9zMzIoKihpbnQzMng0X3QgKikgJl9fcmVpbnRfODM0LCBfX3AzXzgzNCkpKTsgXAogIF9fcmV0XzgzNCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzgzNCwgX19yZXRfODM0LCAxLCAwKTsgXAogIF9fcmV0XzgzNDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHBvbHk4eDhfdCB2dXpwMV9wOChwb2x5OHg4X3QgX19wMCwgcG9seTh4OF90IF9fcDEpIHsKICBwb2x5OHg4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAwLCAyLCA0LCA2LCA4LCAxMCwgMTIsIDE0KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBwb2x5OHg4X3QgdnV6cDFfcDgocG9seTh4OF90IF9fcDAsIHBvbHk4eDhfdCBfX3AxKSB7CiAgcG9seTh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHBvbHk4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBwb2x5OHg4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMCwgMiwgNCwgNiwgOCwgMTAsIDEyLCAxNCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHBvbHkxNng0X3QgdnV6cDFfcDE2KHBvbHkxNng0X3QgX19wMCwgcG9seTE2eDRfdCBfX3AxKSB7CiAgcG9seTE2eDRfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDAsIDIsIDQsIDYpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHBvbHkxNng0X3QgdnV6cDFfcDE2KHBvbHkxNng0X3QgX19wMCwgcG9seTE2eDRfdCBfX3AxKSB7CiAgcG9seTE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBwb2x5MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHBvbHkxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMCwgMiwgNCwgNik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHBvbHk4eDE2X3QgdnV6cDFxX3A4KHBvbHk4eDE2X3QgX19wMCwgcG9seTh4MTZfdCBfX3AxKSB7CiAgcG9seTh4MTZfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDAsIDIsIDQsIDYsIDgsIDEwLCAxMiwgMTQsIDE2LCAxOCwgMjAsIDIyLCAyNCwgMjYsIDI4LCAzMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgcG9seTh4MTZfdCB2dXpwMXFfcDgocG9seTh4MTZfdCBfX3AwLCBwb2x5OHgxNl90IF9fcDEpIHsKICBwb2x5OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHBvbHk4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTh4MTZfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAwLCAyLCA0LCA2LCA4LCAxMCwgMTIsIDE0LCAxNiwgMTgsIDIwLCAyMiwgMjQsIDI2LCAyOCwgMzApOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBwb2x5NjR4Ml90IHZ1enAxcV9wNjQocG9seTY0eDJfdCBfX3AwLCBwb2x5NjR4Ml90IF9fcDEpIHsKICBwb2x5NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMCwgMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgcG9seTY0eDJfdCB2dXpwMXFfcDY0KHBvbHk2NHgyX3QgX19wMCwgcG9seTY0eDJfdCBfX3AxKSB7CiAgcG9seTY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBwb2x5NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHBvbHk2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMCwgMik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHBvbHkxNng4X3QgdnV6cDFxX3AxNihwb2x5MTZ4OF90IF9fcDAsIHBvbHkxNng4X3QgX19wMSkgewogIHBvbHkxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAwLCAyLCA0LCA2LCA4LCAxMCwgMTIsIDE0KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBwb2x5MTZ4OF90IHZ1enAxcV9wMTYocG9seTE2eDhfdCBfX3AwLCBwb2x5MTZ4OF90IF9fcDEpIHsKICBwb2x5MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHBvbHkxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAwLCAyLCA0LCA2LCA4LCAxMCwgMTIsIDE0KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4MTZfdCB2dXpwMXFfdTgodWludDh4MTZfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEpIHsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMCwgMiwgNCwgNiwgOCwgMTAsIDEyLCAxNCwgMTYsIDE4LCAyMCwgMjIsIDI0LCAyNiwgMjgsIDMwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHgxNl90IHZ1enAxcV91OCh1aW50OHgxNl90IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSkgewogIHVpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDAsIDIsIDQsIDYsIDgsIDEwLCAxMiwgMTQsIDE2LCAxOCwgMjAsIDIyLCAyNCwgMjYsIDI4LCAzMCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMng0X3QgdnV6cDFxX3UzMih1aW50MzJ4NF90IF9fcDAsIHVpbnQzMng0X3QgX19wMSkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAwLCAyLCA0LCA2KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4NF90IHZ1enAxcV91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAwLCAyLCA0LCA2KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDY0eDJfdCB2dXpwMXFfdTY0KHVpbnQ2NHgyX3QgX19wMCwgdWludDY0eDJfdCBfX3AxKSB7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDAsIDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ2NHgyX3QgdnV6cDFxX3U2NCh1aW50NjR4Ml90IF9fcDAsIHVpbnQ2NHgyX3QgX19wMSkgewogIHVpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDAsIDIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4OF90IHZ1enAxcV91MTYodWludDE2eDhfdCBfX3AwLCB1aW50MTZ4OF90IF9fcDEpIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMCwgMiwgNCwgNiwgOCwgMTAsIDEyLCAxNCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDhfdCB2dXpwMXFfdTE2KHVpbnQxNng4X3QgX19wMCwgdWludDE2eDhfdCBfX3AxKSB7CiAgdWludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMCwgMiwgNCwgNiwgOCwgMTAsIDEyLCAxNCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4MTZfdCB2dXpwMXFfczgoaW50OHgxNl90IF9fcDAsIGludDh4MTZfdCBfX3AxKSB7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMCwgMiwgNCwgNiwgOCwgMTAsIDEyLCAxNCwgMTYsIDE4LCAyMCwgMjIsIDI0LCAyNiwgMjgsIDMwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ4eDE2X3QgdnV6cDFxX3M4KGludDh4MTZfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSkgewogIGludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDAsIDIsIDQsIDYsIDgsIDEwLCAxMiwgMTQsIDE2LCAxOCwgMjAsIDIyLCAyNCwgMjYsIDI4LCAzMCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0NjR4Ml90IHZ1enAxcV9mNjQoZmxvYXQ2NHgyX3QgX19wMCwgZmxvYXQ2NHgyX3QgX19wMSkgewogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMCwgMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQ2NHgyX3QgdnV6cDFxX2Y2NChmbG9hdDY0eDJfdCBfX3AwLCBmbG9hdDY0eDJfdCBfX3AxKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgZmxvYXQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMCwgMik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4NF90IHZ1enAxcV9mMzIoZmxvYXQzMng0X3QgX19wMCwgZmxvYXQzMng0X3QgX19wMSkgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMCwgMiwgNCwgNik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMng0X3QgdnV6cDFxX2YzMihmbG9hdDMyeDRfdCBfX3AwLCBmbG9hdDMyeDRfdCBfX3AxKSB7CiAgZmxvYXQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMCwgMiwgNCwgNik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDRfdCB2dXpwMXFfczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDAsIDIsIDQsIDYpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDRfdCB2dXpwMXFfczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDAsIDIsIDQsIDYpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ2NHgyX3QgdnV6cDFxX3M2NChpbnQ2NHgyX3QgX19wMCwgaW50NjR4Ml90IF9fcDEpIHsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAwLCAyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ2NHgyX3QgdnV6cDFxX3M2NChpbnQ2NHgyX3QgX19wMCwgaW50NjR4Ml90IF9fcDEpIHsKICBpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAwLCAyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZ4OF90IHZ1enAxcV9zMTYoaW50MTZ4OF90IF9fcDAsIGludDE2eDhfdCBfX3AxKSB7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMCwgMiwgNCwgNiwgOCwgMTAsIDEyLCAxNCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4OF90IHZ1enAxcV9zMTYoaW50MTZ4OF90IF9fcDAsIGludDE2eDhfdCBfX3AxKSB7CiAgaW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMCwgMiwgNCwgNiwgOCwgMTAsIDEyLCAxNCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDhfdCB2dXpwMV91OCh1aW50OHg4X3QgX19wMCwgdWludDh4OF90IF9fcDEpIHsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAwLCAyLCA0LCA2LCA4LCAxMCwgMTIsIDE0KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHg4X3QgdnV6cDFfdTgodWludDh4OF90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxKSB7CiAgdWludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMCwgMiwgNCwgNiwgOCwgMTAsIDEyLCAxNCk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMngyX3QgdnV6cDFfdTMyKHVpbnQzMngyX3QgX19wMCwgdWludDMyeDJfdCBfX3AxKSB7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDAsIDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMngyX3QgdnV6cDFfdTMyKHVpbnQzMngyX3QgX19wMCwgdWludDMyeDJfdCBfX3AxKSB7CiAgdWludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMCwgMik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng0X3QgdnV6cDFfdTE2KHVpbnQxNng0X3QgX19wMCwgdWludDE2eDRfdCBfX3AxKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDAsIDIsIDQsIDYpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng0X3QgdnV6cDFfdTE2KHVpbnQxNng0X3QgX19wMCwgdWludDE2eDRfdCBfX3AxKSB7CiAgdWludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMCwgMiwgNCwgNik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4OF90IHZ1enAxX3M4KGludDh4OF90IF9fcDAsIGludDh4OF90IF9fcDEpIHsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDAsIDIsIDQsIDYsIDgsIDEwLCAxMiwgMTQpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4OF90IHZ1enAxX3M4KGludDh4OF90IF9fcDAsIGludDh4OF90IF9fcDEpIHsKICBpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAwLCAyLCA0LCA2LCA4LCAxMCwgMTIsIDE0KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMngyX3QgdnV6cDFfZjMyKGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0MzJ4Ml90IF9fcDEpIHsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDAsIDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4Ml90IHZ1enAxX2YzMihmbG9hdDMyeDJfdCBfX3AwLCBmbG9hdDMyeDJfdCBfX3AxKSB7CiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMCwgMik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDJfdCB2dXpwMV9zMzIoaW50MzJ4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxKSB7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMCwgMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4Ml90IHZ1enAxX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEpIHsKICBpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAwLCAyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZ4NF90IHZ1enAxX3MxNihpbnQxNng0X3QgX19wMCwgaW50MTZ4NF90IF9fcDEpIHsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAwLCAyLCA0LCA2KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng0X3QgdnV6cDFfczE2KGludDE2eDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSkgewogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDAsIDIsIDQsIDYpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBwb2x5OHg4X3QgdnV6cDJfcDgocG9seTh4OF90IF9fcDAsIHBvbHk4eDhfdCBfX3AxKSB7CiAgcG9seTh4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMSwgMywgNSwgNywgOSwgMTEsIDEzLCAxNSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgcG9seTh4OF90IHZ1enAyX3A4KHBvbHk4eDhfdCBfX3AwLCBwb2x5OHg4X3QgX19wMSkgewogIHBvbHk4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBwb2x5OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTh4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDEsIDMsIDUsIDcsIDksIDExLCAxMywgMTUpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBwb2x5MTZ4NF90IHZ1enAyX3AxNihwb2x5MTZ4NF90IF9fcDAsIHBvbHkxNng0X3QgX19wMSkgewogIHBvbHkxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAxLCAzLCA1LCA3KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBwb2x5MTZ4NF90IHZ1enAyX3AxNihwb2x5MTZ4NF90IF9fcDAsIHBvbHkxNng0X3QgX19wMSkgewogIHBvbHkxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgcG9seTE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBwb2x5MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDEsIDMsIDUsIDcpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBwb2x5OHgxNl90IHZ1enAycV9wOChwb2x5OHgxNl90IF9fcDAsIHBvbHk4eDE2X3QgX19wMSkgewogIHBvbHk4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAxLCAzLCA1LCA3LCA5LCAxMSwgMTMsIDE1LCAxNywgMTksIDIxLCAyMywgMjUsIDI3LCAyOSwgMzEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHBvbHk4eDE2X3QgdnV6cDJxX3A4KHBvbHk4eDE2X3QgX19wMCwgcG9seTh4MTZfdCBfX3AxKSB7CiAgcG9seTh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBwb2x5OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHBvbHk4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMSwgMywgNSwgNywgOSwgMTEsIDEzLCAxNSwgMTcsIDE5LCAyMSwgMjMsIDI1LCAyNywgMjksIDMxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgcG9seTY0eDJfdCB2dXpwMnFfcDY0KHBvbHk2NHgyX3QgX19wMCwgcG9seTY0eDJfdCBfX3AxKSB7CiAgcG9seTY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDEsIDMpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHBvbHk2NHgyX3QgdnV6cDJxX3A2NChwb2x5NjR4Ml90IF9fcDAsIHBvbHk2NHgyX3QgX19wMSkgewogIHBvbHk2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgcG9seTY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBwb2x5NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDEsIDMpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBwb2x5MTZ4OF90IHZ1enAycV9wMTYocG9seTE2eDhfdCBfX3AwLCBwb2x5MTZ4OF90IF9fcDEpIHsKICBwb2x5MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMSwgMywgNSwgNywgOSwgMTEsIDEzLCAxNSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgcG9seTE2eDhfdCB2dXpwMnFfcDE2KHBvbHkxNng4X3QgX19wMCwgcG9seTE2eDhfdCBfX3AxKSB7CiAgcG9seTE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBwb2x5MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHBvbHkxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMSwgMywgNSwgNywgOSwgMTEsIDEzLCAxNSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDE2X3QgdnV6cDJxX3U4KHVpbnQ4eDE2X3QgX19wMCwgdWludDh4MTZfdCBfX3AxKSB7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDEsIDMsIDUsIDcsIDksIDExLCAxMywgMTUsIDE3LCAxOSwgMjEsIDIzLCAyNSwgMjcsIDI5LCAzMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4MTZfdCB2dXpwMnFfdTgodWludDh4MTZfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEpIHsKICB1aW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAxLCAzLCA1LCA3LCA5LCAxMSwgMTMsIDE1LCAxNywgMTksIDIxLCAyMywgMjUsIDI3LCAyOSwgMzEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZ1enAycV91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMSwgMywgNSwgNyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2dXpwMnFfdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxKSB7CiAgdWludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMSwgMywgNSwgNyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ2NHgyX3QgdnV6cDJxX3U2NCh1aW50NjR4Ml90IF9fcDAsIHVpbnQ2NHgyX3QgX19wMSkgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAxLCAzKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50NjR4Ml90IHZ1enAycV91NjQodWludDY0eDJfdCBfX3AwLCB1aW50NjR4Ml90IF9fcDEpIHsKICB1aW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAxLCAzKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDhfdCB2dXpwMnFfdTE2KHVpbnQxNng4X3QgX19wMCwgdWludDE2eDhfdCBfX3AxKSB7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDEsIDMsIDUsIDcsIDksIDExLCAxMywgMTUpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng4X3QgdnV6cDJxX3UxNih1aW50MTZ4OF90IF9fcDAsIHVpbnQxNng4X3QgX19wMSkgewogIHVpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDEsIDMsIDUsIDcsIDksIDExLCAxMywgMTUpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDE2X3QgdnV6cDJxX3M4KGludDh4MTZfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSkgewogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDEsIDMsIDUsIDcsIDksIDExLCAxMywgMTUsIDE3LCAxOSwgMjEsIDIzLCAyNSwgMjcsIDI5LCAzMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OHgxNl90IHZ1enAycV9zOChpbnQ4eDE2X3QgX19wMCwgaW50OHgxNl90IF9fcDEpIHsKICBpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAxLCAzLCA1LCA3LCA5LCAxMSwgMTMsIDE1LCAxNywgMTksIDIxLCAyMywgMjUsIDI3LCAyOSwgMzEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDY0eDJfdCB2dXpwMnFfZjY0KGZsb2F0NjR4Ml90IF9fcDAsIGZsb2F0NjR4Ml90IF9fcDEpIHsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDEsIDMpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0NjR4Ml90IHZ1enAycV9mNjQoZmxvYXQ2NHgyX3QgX19wMCwgZmxvYXQ2NHgyX3QgX19wMSkgewogIGZsb2F0NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDEsIDMpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDRfdCB2dXpwMnFfZjMyKGZsb2F0MzJ4NF90IF9fcDAsIGZsb2F0MzJ4NF90IF9fcDEpIHsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDEsIDMsIDUsIDcpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4NF90IHZ1enAycV9mMzIoZmxvYXQzMng0X3QgX19wMCwgZmxvYXQzMng0X3QgX19wMSkgewogIGZsb2F0MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGZsb2F0MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDEsIDMsIDUsIDcpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMng0X3QgdnV6cDJxX3MzMihpbnQzMng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEpIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAxLCAzLCA1LCA3KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMng0X3QgdnV6cDJxX3MzMihpbnQzMng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEpIHsKICBpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAxLCAzLCA1LCA3KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50NjR4Ml90IHZ1enAycV9zNjQoaW50NjR4Ml90IF9fcDAsIGludDY0eDJfdCBfX3AxKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMSwgMyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50NjR4Ml90IHZ1enAycV9zNjQoaW50NjR4Ml90IF9fcDAsIGludDY0eDJfdCBfX3AxKSB7CiAgaW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMSwgMyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDhfdCB2dXpwMnFfczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDEsIDMsIDUsIDcsIDksIDExLCAxMywgMTUpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDhfdCB2dXpwMnFfczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDEsIDMsIDUsIDcsIDksIDExLCAxMywgMTUpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50OHg4X3QgdnV6cDJfdTgodWludDh4OF90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxKSB7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMSwgMywgNSwgNywgOSwgMTEsIDEzLCAxNSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4OF90IHZ1enAyX3U4KHVpbnQ4eDhfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIHVpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDEsIDMsIDUsIDcsIDksIDExLCAxMywgMTUpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4Ml90IHZ1enAyX3UzMih1aW50MzJ4Ml90IF9fcDAsIHVpbnQzMngyX3QgX19wMSkgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAxLCAzKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4Ml90IHZ1enAyX3UzMih1aW50MzJ4Ml90IF9fcDAsIHVpbnQzMngyX3QgX19wMSkgewogIHVpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDEsIDMpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4NF90IHZ1enAyX3UxNih1aW50MTZ4NF90IF9fcDAsIHVpbnQxNng0X3QgX19wMSkgewogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAxLCAzLCA1LCA3KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4NF90IHZ1enAyX3UxNih1aW50MTZ4NF90IF9fcDAsIHVpbnQxNng0X3QgX19wMSkgewogIHVpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDEsIDMsIDUsIDcpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDhfdCB2dXpwMl9zOChpbnQ4eDhfdCBfX3AwLCBpbnQ4eDhfdCBfX3AxKSB7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAxLCAzLCA1LCA3LCA5LCAxMSwgMTMsIDE1KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ4eDhfdCB2dXpwMl9zOChpbnQ4eDhfdCBfX3AwLCBpbnQ4eDhfdCBfX3AxKSB7CiAgaW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMSwgMywgNSwgNywgOSwgMTEsIDEzLCAxNSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4Ml90IHZ1enAyX2YzMihmbG9hdDMyeDJfdCBfX3AwLCBmbG9hdDMyeDJfdCBfX3AxKSB7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAxLCAzKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDJfdCB2dXpwMl9mMzIoZmxvYXQzMngyX3QgX19wMCwgZmxvYXQzMngyX3QgX19wMSkgewogIGZsb2F0MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGZsb2F0MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDEsIDMpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMngyX3QgdnV6cDJfczMyKGludDMyeDJfdCBfX3AwLCBpbnQzMngyX3QgX19wMSkgewogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDEsIDMpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDJfdCB2dXpwMl9zMzIoaW50MzJ4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxKSB7CiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMSwgMyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDRfdCB2dXpwMl9zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxKSB7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMSwgMywgNSwgNyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4NF90IHZ1enAyX3MxNihpbnQxNng0X3QgX19wMCwgaW50MTZ4NF90IF9fcDEpIHsKICBpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAxLCAzLCA1LCA3KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgcG9seTh4OF90IHZ6aXAxX3A4KHBvbHk4eDhfdCBfX3AwLCBwb2x5OHg4X3QgX19wMSkgewogIHBvbHk4eDhfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDAsIDgsIDEsIDksIDIsIDEwLCAzLCAxMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgcG9seTh4OF90IHZ6aXAxX3A4KHBvbHk4eDhfdCBfX3AwLCBwb2x5OHg4X3QgX19wMSkgewogIHBvbHk4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBwb2x5OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTh4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDAsIDgsIDEsIDksIDIsIDEwLCAzLCAxMSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHBvbHkxNng0X3QgdnppcDFfcDE2KHBvbHkxNng0X3QgX19wMCwgcG9seTE2eDRfdCBfX3AxKSB7CiAgcG9seTE2eDRfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDAsIDQsIDEsIDUpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHBvbHkxNng0X3QgdnppcDFfcDE2KHBvbHkxNng0X3QgX19wMCwgcG9seTE2eDRfdCBfX3AxKSB7CiAgcG9seTE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBwb2x5MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHBvbHkxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMCwgNCwgMSwgNSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHBvbHk4eDE2X3QgdnppcDFxX3A4KHBvbHk4eDE2X3QgX19wMCwgcG9seTh4MTZfdCBfX3AxKSB7CiAgcG9seTh4MTZfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDAsIDE2LCAxLCAxNywgMiwgMTgsIDMsIDE5LCA0LCAyMCwgNSwgMjEsIDYsIDIyLCA3LCAyMyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgcG9seTh4MTZfdCB2emlwMXFfcDgocG9seTh4MTZfdCBfX3AwLCBwb2x5OHgxNl90IF9fcDEpIHsKICBwb2x5OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHBvbHk4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTh4MTZfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAwLCAxNiwgMSwgMTcsIDIsIDE4LCAzLCAxOSwgNCwgMjAsIDUsIDIxLCA2LCAyMiwgNywgMjMpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBwb2x5NjR4Ml90IHZ6aXAxcV9wNjQocG9seTY0eDJfdCBfX3AwLCBwb2x5NjR4Ml90IF9fcDEpIHsKICBwb2x5NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMCwgMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgcG9seTY0eDJfdCB2emlwMXFfcDY0KHBvbHk2NHgyX3QgX19wMCwgcG9seTY0eDJfdCBfX3AxKSB7CiAgcG9seTY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBwb2x5NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHBvbHk2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMCwgMik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHBvbHkxNng4X3QgdnppcDFxX3AxNihwb2x5MTZ4OF90IF9fcDAsIHBvbHkxNng4X3QgX19wMSkgewogIHBvbHkxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAwLCA4LCAxLCA5LCAyLCAxMCwgMywgMTEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHBvbHkxNng4X3QgdnppcDFxX3AxNihwb2x5MTZ4OF90IF9fcDAsIHBvbHkxNng4X3QgX19wMSkgewogIHBvbHkxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBwb2x5MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDAsIDgsIDEsIDksIDIsIDEwLCAzLCAxMSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDE2X3QgdnppcDFxX3U4KHVpbnQ4eDE2X3QgX19wMCwgdWludDh4MTZfdCBfX3AxKSB7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDAsIDE2LCAxLCAxNywgMiwgMTgsIDMsIDE5LCA0LCAyMCwgNSwgMjEsIDYsIDIyLCA3LCAyMyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4MTZfdCB2emlwMXFfdTgodWludDh4MTZfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEpIHsKICB1aW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAwLCAxNiwgMSwgMTcsIDIsIDE4LCAzLCAxOSwgNCwgMjAsIDUsIDIxLCA2LCAyMiwgNywgMjMpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZ6aXAxcV91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMCwgNCwgMSwgNSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2emlwMXFfdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxKSB7CiAgdWludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMCwgNCwgMSwgNSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ2NHgyX3QgdnppcDFxX3U2NCh1aW50NjR4Ml90IF9fcDAsIHVpbnQ2NHgyX3QgX19wMSkgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAwLCAyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50NjR4Ml90IHZ6aXAxcV91NjQodWludDY0eDJfdCBfX3AwLCB1aW50NjR4Ml90IF9fcDEpIHsKICB1aW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAwLCAyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDhfdCB2emlwMXFfdTE2KHVpbnQxNng4X3QgX19wMCwgdWludDE2eDhfdCBfX3AxKSB7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDAsIDgsIDEsIDksIDIsIDEwLCAzLCAxMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDhfdCB2emlwMXFfdTE2KHVpbnQxNng4X3QgX19wMCwgdWludDE2eDhfdCBfX3AxKSB7CiAgdWludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMCwgOCwgMSwgOSwgMiwgMTAsIDMsIDExKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50OHgxNl90IHZ6aXAxcV9zOChpbnQ4eDE2X3QgX19wMCwgaW50OHgxNl90IF9fcDEpIHsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAwLCAxNiwgMSwgMTcsIDIsIDE4LCAzLCAxOSwgNCwgMjAsIDUsIDIxLCA2LCAyMiwgNywgMjMpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4MTZfdCB2emlwMXFfczgoaW50OHgxNl90IF9fcDAsIGludDh4MTZfdCBfX3AxKSB7CiAgaW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMCwgMTYsIDEsIDE3LCAyLCAxOCwgMywgMTksIDQsIDIwLCA1LCAyMSwgNiwgMjIsIDcsIDIzKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQ2NHgyX3QgdnppcDFxX2Y2NChmbG9hdDY0eDJfdCBfX3AwLCBmbG9hdDY0eDJfdCBfX3AxKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAwLCAyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDY0eDJfdCB2emlwMXFfZjY0KGZsb2F0NjR4Ml90IF9fcDAsIGZsb2F0NjR4Ml90IF9fcDEpIHsKICBmbG9hdDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDY0eDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBmbG9hdDY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAwLCAyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMng0X3QgdnppcDFxX2YzMihmbG9hdDMyeDRfdCBfX3AwLCBmbG9hdDMyeDRfdCBfX3AxKSB7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAwLCA0LCAxLCA1KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDRfdCB2emlwMXFfZjMyKGZsb2F0MzJ4NF90IF9fcDAsIGZsb2F0MzJ4NF90IF9fcDEpIHsKICBmbG9hdDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAwLCA0LCAxLCA1KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4NF90IHZ6aXAxcV9zMzIoaW50MzJ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMCwgNCwgMSwgNSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4NF90IHZ6aXAxcV9zMzIoaW50MzJ4NF90IF9fcDAsIGludDMyeDRfdCBfX3AxKSB7CiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMCwgNCwgMSwgNSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDY0eDJfdCB2emlwMXFfczY0KGludDY0eDJfdCBfX3AwLCBpbnQ2NHgyX3QgX19wMSkgewogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDAsIDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDY0eDJfdCB2emlwMXFfczY0KGludDY0eDJfdCBfX3AwLCBpbnQ2NHgyX3QgX19wMSkgewogIGludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBpbnQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDAsIDIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng4X3QgdnppcDFxX3MxNihpbnQxNng4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEpIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAwLCA4LCAxLCA5LCAyLCAxMCwgMywgMTEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDhfdCB2emlwMXFfczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDAsIDgsIDEsIDksIDIsIDEwLCAzLCAxMSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDhfdCB2emlwMV91OCh1aW50OHg4X3QgX19wMCwgdWludDh4OF90IF9fcDEpIHsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAwLCA4LCAxLCA5LCAyLCAxMCwgMywgMTEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ4eDhfdCB2emlwMV91OCh1aW50OHg4X3QgX19wMCwgdWludDh4OF90IF9fcDEpIHsKICB1aW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAwLCA4LCAxLCA5LCAyLCAxMCwgMywgMTEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4Ml90IHZ6aXAxX3UzMih1aW50MzJ4Ml90IF9fcDAsIHVpbnQzMngyX3QgX19wMSkgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAwLCAyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4Ml90IHZ6aXAxX3UzMih1aW50MzJ4Ml90IF9fcDAsIHVpbnQzMngyX3QgX19wMSkgewogIHVpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDAsIDIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4NF90IHZ6aXAxX3UxNih1aW50MTZ4NF90IF9fcDAsIHVpbnQxNng0X3QgX19wMSkgewogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAwLCA0LCAxLCA1KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4NF90IHZ6aXAxX3UxNih1aW50MTZ4NF90IF9fcDAsIHVpbnQxNng0X3QgX19wMSkgewogIHVpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDAsIDQsIDEsIDUpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDhfdCB2emlwMV9zOChpbnQ4eDhfdCBfX3AwLCBpbnQ4eDhfdCBfX3AxKSB7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAwLCA4LCAxLCA5LCAyLCAxMCwgMywgMTEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4OF90IHZ6aXAxX3M4KGludDh4OF90IF9fcDAsIGludDh4OF90IF9fcDEpIHsKICBpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAwLCA4LCAxLCA5LCAyLCAxMCwgMywgMTEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBmbG9hdDMyeDJfdCB2emlwMV9mMzIoZmxvYXQzMngyX3QgX19wMCwgZmxvYXQzMngyX3QgX19wMSkgewogIGZsb2F0MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMCwgMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMngyX3QgdnppcDFfZjMyKGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0MzJ4Ml90IF9fcDEpIHsKICBmbG9hdDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBmbG9hdDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAwLCAyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4Ml90IHZ6aXAxX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEpIHsKICBpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAwLCAyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMngyX3QgdnppcDFfczMyKGludDMyeDJfdCBfX3AwLCBpbnQzMngyX3QgX19wMSkgewogIGludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDAsIDIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng0X3QgdnppcDFfczE2KGludDE2eDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSkgewogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDAsIDQsIDEsIDUpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDRfdCB2emlwMV9zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxKSB7CiAgaW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMCwgNCwgMSwgNSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHBvbHk4eDhfdCB2emlwMl9wOChwb2x5OHg4X3QgX19wMCwgcG9seTh4OF90IF9fcDEpIHsKICBwb2x5OHg4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCA0LCAxMiwgNSwgMTMsIDYsIDE0LCA3LCAxNSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgcG9seTh4OF90IHZ6aXAyX3A4KHBvbHk4eDhfdCBfX3AwLCBwb2x5OHg4X3QgX19wMSkgewogIHBvbHk4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBwb2x5OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTh4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDQsIDEyLCA1LCAxMywgNiwgMTQsIDcsIDE1KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgcG9seTE2eDRfdCB2emlwMl9wMTYocG9seTE2eDRfdCBfX3AwLCBwb2x5MTZ4NF90IF9fcDEpIHsKICBwb2x5MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMiwgNiwgMywgNyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgcG9seTE2eDRfdCB2emlwMl9wMTYocG9seTE2eDRfdCBfX3AwLCBwb2x5MTZ4NF90IF9fcDEpIHsKICBwb2x5MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHBvbHkxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgcG9seTE2eDRfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAyLCA2LCAzLCA3KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgcG9seTh4MTZfdCB2emlwMnFfcDgocG9seTh4MTZfdCBfX3AwLCBwb2x5OHgxNl90IF9fcDEpIHsKICBwb2x5OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgOCwgMjQsIDksIDI1LCAxMCwgMjYsIDExLCAyNywgMTIsIDI4LCAxMywgMjksIDE0LCAzMCwgMTUsIDMxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBwb2x5OHgxNl90IHZ6aXAycV9wOChwb2x5OHgxNl90IF9fcDAsIHBvbHk4eDE2X3QgX19wMSkgewogIHBvbHk4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBwb2x5OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDgsIDI0LCA5LCAyNSwgMTAsIDI2LCAxMSwgMjcsIDEyLCAyOCwgMTMsIDI5LCAxNCwgMzAsIDE1LCAzMSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHBvbHk2NHgyX3QgdnppcDJxX3A2NChwb2x5NjR4Ml90IF9fcDAsIHBvbHk2NHgyX3QgX19wMSkgewogIHBvbHk2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAxLCAzKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBwb2x5NjR4Ml90IHZ6aXAycV9wNjQocG9seTY0eDJfdCBfX3AwLCBwb2x5NjR4Ml90IF9fcDEpIHsKICBwb2x5NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHBvbHk2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgcG9seTY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAxLCAzKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgcG9seTE2eDhfdCB2emlwMnFfcDE2KHBvbHkxNng4X3QgX19wMCwgcG9seTE2eDhfdCBfX3AxKSB7CiAgcG9seTE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDQsIDEyLCA1LCAxMywgNiwgMTQsIDcsIDE1KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBwb2x5MTZ4OF90IHZ6aXAycV9wMTYocG9seTE2eDhfdCBfX3AwLCBwb2x5MTZ4OF90IF9fcDEpIHsKICBwb2x5MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHBvbHkxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcG9seTE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCA0LCAxMiwgNSwgMTMsIDYsIDE0LCA3LCAxNSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDE2X3QgdnppcDJxX3U4KHVpbnQ4eDE2X3QgX19wMCwgdWludDh4MTZfdCBfX3AxKSB7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDgsIDI0LCA5LCAyNSwgMTAsIDI2LCAxMSwgMjcsIDEyLCAyOCwgMTMsIDI5LCAxNCwgMzAsIDE1LCAzMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDh4MTZfdCB2emlwMnFfdTgodWludDh4MTZfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEpIHsKICB1aW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCA4LCAyNCwgOSwgMjUsIDEwLCAyNiwgMTEsIDI3LCAxMiwgMjgsIDEzLCAyOSwgMTQsIDMwLCAxNSwgMzEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZ6aXAycV91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMiwgNiwgMywgNyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2emlwMnFfdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxKSB7CiAgdWludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMiwgNiwgMywgNyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ2NHgyX3QgdnppcDJxX3U2NCh1aW50NjR4Ml90IF9fcDAsIHVpbnQ2NHgyX3QgX19wMSkgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAxLCAzKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50NjR4Ml90IHZ6aXAycV91NjQodWludDY0eDJfdCBfX3AwLCB1aW50NjR4Ml90IF9fcDEpIHsKICB1aW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAxLCAzKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDhfdCB2emlwMnFfdTE2KHVpbnQxNng4X3QgX19wMCwgdWludDE2eDhfdCBfX3AxKSB7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDQsIDEyLCA1LCAxMywgNiwgMTQsIDcsIDE1KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4OF90IHZ6aXAycV91MTYodWludDE2eDhfdCBfX3AwLCB1aW50MTZ4OF90IF9fcDEpIHsKICB1aW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCA0LCAxMiwgNSwgMTMsIDYsIDE0LCA3LCAxNSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDh4MTZfdCB2emlwMnFfczgoaW50OHgxNl90IF9fcDAsIGludDh4MTZfdCBfX3AxKSB7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgOCwgMjQsIDksIDI1LCAxMCwgMjYsIDExLCAyNywgMTIsIDI4LCAxMywgMjksIDE0LCAzMCwgMTUsIDMxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ4eDE2X3QgdnppcDJxX3M4KGludDh4MTZfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSkgewogIGludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDgsIDI0LCA5LCAyNSwgMTAsIDI2LCAxMSwgMjcsIDEyLCAyOCwgMTMsIDI5LCAxNCwgMzAsIDE1LCAzMSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0NjR4Ml90IHZ6aXAycV9mNjQoZmxvYXQ2NHgyX3QgX19wMCwgZmxvYXQ2NHgyX3QgX19wMSkgewogIGZsb2F0NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMSwgMyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQ2NHgyX3QgdnppcDJxX2Y2NChmbG9hdDY0eDJfdCBfX3AwLCBmbG9hdDY0eDJfdCBfX3AxKSB7CiAgZmxvYXQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQ2NHgyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgZmxvYXQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMSwgMyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4NF90IHZ6aXAycV9mMzIoZmxvYXQzMng0X3QgX19wMCwgZmxvYXQzMng0X3QgX19wMSkgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMiwgNiwgMywgNyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMng0X3QgdnppcDJxX2YzMihmbG9hdDMyeDRfdCBfX3AwLCBmbG9hdDMyeDRfdCBfX3AxKSB7CiAgZmxvYXQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMiwgNiwgMywgNyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDRfdCB2emlwMnFfczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDIsIDYsIDMsIDcpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDRfdCB2emlwMnFfczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDIsIDYsIDMsIDcpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ2NHgyX3QgdnppcDJxX3M2NChpbnQ2NHgyX3QgX19wMCwgaW50NjR4Ml90IF9fcDEpIHsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAxLCAzKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ2NHgyX3QgdnppcDJxX3M2NChpbnQ2NHgyX3QgX19wMCwgaW50NjR4Ml90IF9fcDEpIHsKICBpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50NjR4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAxLCAzKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZ4OF90IHZ6aXAycV9zMTYoaW50MTZ4OF90IF9fcDAsIGludDE2eDhfdCBfX3AxKSB7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgNCwgMTIsIDUsIDEzLCA2LCAxNCwgNywgMTUpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDhfdCB2emlwMnFfczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDQsIDEyLCA1LCAxMywgNiwgMTQsIDcsIDE1KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4OF90IHZ6aXAyX3U4KHVpbnQ4eDhfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIHVpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDQsIDEyLCA1LCAxMywgNiwgMTQsIDcsIDE1KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHg4X3QgdnppcDJfdTgodWludDh4OF90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxKSB7CiAgdWludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgNCwgMTIsIDUsIDEzLCA2LCAxNCwgNywgMTUpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4Ml90IHZ6aXAyX3UzMih1aW50MzJ4Ml90IF9fcDAsIHVpbnQzMngyX3QgX19wMSkgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAxLCAzKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4Ml90IHZ6aXAyX3UzMih1aW50MzJ4Ml90IF9fcDAsIHVpbnQzMngyX3QgX19wMSkgewogIHVpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDEsIDMpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4NF90IHZ6aXAyX3UxNih1aW50MTZ4NF90IF9fcDAsIHVpbnQxNng0X3QgX19wMSkgewogIHVpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAyLCA2LCAzLCA3KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4NF90IHZ6aXAyX3UxNih1aW50MTZ4NF90IF9fcDAsIHVpbnQxNng0X3QgX19wMSkgewogIHVpbnQxNng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDIsIDYsIDMsIDcpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDhfdCB2emlwMl9zOChpbnQ4eDhfdCBfX3AwLCBpbnQ4eDhfdCBfX3AxKSB7CiAgaW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCA0LCAxMiwgNSwgMTMsIDYsIDE0LCA3LCAxNSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50OHg4X3QgdnppcDJfczgoaW50OHg4X3QgX19wMCwgaW50OHg4X3QgX19wMSkgewogIGludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDQsIDEyLCA1LCAxMywgNiwgMTQsIDcsIDE1KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMngyX3QgdnppcDJfZjMyKGZsb2F0MzJ4Ml90IF9fcDAsIGZsb2F0MzJ4Ml90IF9fcDEpIHsKICBmbG9hdDMyeDJfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDEsIDEsIDMpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGZsb2F0MzJ4Ml90IHZ6aXAyX2YzMihmbG9hdDMyeDJfdCBfX3AwLCBmbG9hdDMyeDJfdCBfX3AxKSB7CiAgZmxvYXQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgZmxvYXQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldjAsIF9fcmV2MSwgMSwgMyk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDJfdCB2emlwMl9zMzIoaW50MzJ4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxKSB7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMSwgMSwgMyk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4Ml90IHZ6aXAyX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEpIHsKICBpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV2MCwgX19yZXYxLCAxLCAzKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MTZ4NF90IHZ6aXAyX3MxNihpbnQxNng0X3QgX19wMCwgaW50MTZ4NF90IF9fcDEpIHsKICBpbnQxNng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AxLCAyLCA2LCAzLCA3KTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng0X3QgdnppcDJfczE2KGludDE2eDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSkgewogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXYwLCBfX3JldjEsIDIsIDYsIDMsIDcpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojZW5kaWYKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDh4MTZfdCB2YWJhcV91OCh1aW50OHgxNl90IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSwgdWludDh4MTZfdCBfX3AyKSB7CiAgdWludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgKyB2YWJkcV91OChfX3AxLCBfX3AyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHgxNl90IHZhYmFxX3U4KHVpbnQ4eDE2X3QgX19wMCwgdWludDh4MTZfdCBfX3AxLCB1aW50OHgxNl90IF9fcDIpIHsKICB1aW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICsgX19ub3N3YXBfdmFiZHFfdTgoX19yZXYxLCBfX3JldjIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZhYmFxX3UzMih1aW50MzJ4NF90IF9fcDAsIHVpbnQzMng0X3QgX19wMSwgdWludDMyeDRfdCBfX3AyKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgKyB2YWJkcV91MzIoX19wMSwgX19wMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2YWJhcV91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEsIHVpbnQzMng0X3QgX19wMikgewogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgKyBfX25vc3dhcF92YWJkcV91MzIoX19yZXYxLCBfX3JldjIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4OF90IHZhYmFxX3UxNih1aW50MTZ4OF90IF9fcDAsIHVpbnQxNng4X3QgX19wMSwgdWludDE2eDhfdCBfX3AyKSB7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgKyB2YWJkcV91MTYoX19wMSwgX19wMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDhfdCB2YWJhcV91MTYodWludDE2eDhfdCBfX3AwLCB1aW50MTZ4OF90IF9fcDEsIHVpbnQxNng4X3QgX19wMikgewogIHVpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgKyBfX25vc3dhcF92YWJkcV91MTYoX19yZXYxLCBfX3JldjIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDE2X3QgdmFiYXFfczgoaW50OHgxNl90IF9fcDAsIGludDh4MTZfdCBfX3AxLCBpbnQ4eDE2X3QgX19wMikgewogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgKyB2YWJkcV9zOChfX3AxLCBfX3AyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ4eDE2X3QgdmFiYXFfczgoaW50OHgxNl90IF9fcDAsIGludDh4MTZfdCBfX3AxLCBpbnQ4eDE2X3QgX19wMikgewogIGludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4MTZfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCArIF9fbm9zd2FwX3ZhYmRxX3M4KF9fcmV2MSwgX19yZXYyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4NF90IHZhYmFxX3MzMihpbnQzMng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEsIGludDMyeDRfdCBfX3AyKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCArIHZhYmRxX3MzMihfX3AxLCBfX3AyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMng0X3QgdmFiYXFfczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSwgaW50MzJ4NF90IF9fcDIpIHsKICBpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgKyBfX25vc3dhcF92YWJkcV9zMzIoX19yZXYxLCBfX3JldjIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng4X3QgdmFiYXFfczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSwgaW50MTZ4OF90IF9fcDIpIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICsgdmFiZHFfczE2KF9fcDEsIF9fcDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDhfdCB2YWJhcV9zMTYoaW50MTZ4OF90IF9fcDAsIGludDE2eDhfdCBfX3AxLCBpbnQxNng4X3QgX19wMikgewogIGludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCArIF9fbm9zd2FwX3ZhYmRxX3MxNihfX3JldjEsIF9fcmV2Mik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ4eDhfdCB2YWJhX3U4KHVpbnQ4eDhfdCBfX3AwLCB1aW50OHg4X3QgX19wMSwgdWludDh4OF90IF9fcDIpIHsKICB1aW50OHg4X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICsgdmFiZF91OChfX3AxLCBfX3AyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50OHg4X3QgdmFiYV91OCh1aW50OHg4X3QgX19wMCwgdWludDh4OF90IF9fcDEsIHVpbnQ4eDhfdCBfX3AyKSB7CiAgdWludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICsgX19ub3N3YXBfdmFiZF91OChfX3JldjEsIF9fcmV2Mik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMngyX3QgdmFiYV91MzIodWludDMyeDJfdCBfX3AwLCB1aW50MzJ4Ml90IF9fcDEsIHVpbnQzMngyX3QgX19wMikgewogIHVpbnQzMngyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICsgdmFiZF91MzIoX19wMSwgX19wMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDJfdCB2YWJhX3UzMih1aW50MzJ4Ml90IF9fcDAsIHVpbnQzMngyX3QgX19wMSwgdWludDMyeDJfdCBfX3AyKSB7CiAgdWludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCArIF9fbm9zd2FwX3ZhYmRfdTMyKF9fcmV2MSwgX19yZXYyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDRfdCB2YWJhX3UxNih1aW50MTZ4NF90IF9fcDAsIHVpbnQxNng0X3QgX19wMSwgdWludDE2eDRfdCBfX3AyKSB7CiAgdWludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgKyB2YWJkX3UxNihfX3AxLCBfX3AyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4NF90IHZhYmFfdTE2KHVpbnQxNng0X3QgX19wMCwgdWludDE2eDRfdCBfX3AxLCB1aW50MTZ4NF90IF9fcDIpIHsKICB1aW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICsgX19ub3N3YXBfdmFiZF91MTYoX19yZXYxLCBfX3JldjIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ4eDhfdCB2YWJhX3M4KGludDh4OF90IF9fcDAsIGludDh4OF90IF9fcDEsIGludDh4OF90IF9fcDIpIHsKICBpbnQ4eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgKyB2YWJkX3M4KF9fcDEsIF9fcDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDh4OF90IHZhYmFfczgoaW50OHg4X3QgX19wMCwgaW50OHg4X3QgX19wMSwgaW50OHg4X3QgX19wMikgewogIGludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICsgX19ub3N3YXBfdmFiZF9zOChfX3JldjEsIF9fcmV2Mik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDJfdCB2YWJhX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEsIGludDMyeDJfdCBfX3AyKSB7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19wMCArIHZhYmRfczMyKF9fcDEsIF9fcDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDJfdCB2YWJhX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEsIGludDMyeDJfdCBfX3AyKSB7CiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMSwgMCk7CiAgaW50MzJ4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICsgX19ub3N3YXBfdmFiZF9zMzIoX19yZXYxLCBfX3JldjIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng0X3QgdmFiYV9zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxLCBpbnQxNng0X3QgX19wMikgewogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgKyB2YWJkX3MxNihfX3AxLCBfX3AyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng0X3QgdmFiYV9zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxLCBpbnQxNng0X3QgX19wMikgewogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDMsIDIsIDEsIDApOwogIGludDE2eDRfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCArIF9fbm9zd2FwX3ZhYmRfczE2KF9fcmV2MSwgX19yZXYyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDhfdCB2YWJkbF91OCh1aW50OHg4X3QgX19wMCwgdWludDh4OF90IF9fcDEpIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKHVpbnQxNng4X3QpKHZtb3ZsX3U4KCh1aW50OHg4X3QpKHZhYmRfdTgoX19wMCwgX19wMSkpKSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDhfdCB2YWJkbF91OCh1aW50OHg4X3QgX19wMCwgdWludDh4OF90IF9fcDEpIHsKICB1aW50OHg4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDE2eDhfdCkoX19ub3N3YXBfdm1vdmxfdTgoKHVpbnQ4eDhfdCkoX19ub3N3YXBfdmFiZF91OChfX3JldjAsIF9fcmV2MSkpKSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQxNng4X3QgX19ub3N3YXBfdmFiZGxfdTgodWludDh4OF90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxKSB7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MTZ4OF90KShfX25vc3dhcF92bW92bF91OCgodWludDh4OF90KShfX25vc3dhcF92YWJkX3U4KF9fcDAsIF9fcDEpKSkpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ2NHgyX3QgdmFiZGxfdTMyKHVpbnQzMngyX3QgX19wMCwgdWludDMyeDJfdCBfX3AxKSB7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KSh2bW92bF91MzIoKHVpbnQzMngyX3QpKHZhYmRfdTMyKF9fcDAsIF9fcDEpKSkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ2NHgyX3QgdmFiZGxfdTMyKHVpbnQzMngyX3QgX19wMCwgdWludDMyeDJfdCBfX3AxKSB7CiAgdWludDMyeDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAodWludDY0eDJfdCkoX19ub3N3YXBfdm1vdmxfdTMyKCh1aW50MzJ4Ml90KShfX25vc3dhcF92YWJkX3UzMihfX3JldjAsIF9fcmV2MSkpKSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ2NHgyX3QgX19ub3N3YXBfdmFiZGxfdTMyKHVpbnQzMngyX3QgX19wMCwgdWludDMyeDJfdCBfX3AxKSB7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9ICh1aW50NjR4Ml90KShfX25vc3dhcF92bW92bF91MzIoKHVpbnQzMngyX3QpKF9fbm9zd2FwX3ZhYmRfdTMyKF9fcDAsIF9fcDEpKSkpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMng0X3QgdmFiZGxfdTE2KHVpbnQxNng0X3QgX19wMCwgdWludDE2eDRfdCBfX3AxKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KSh2bW92bF91MTYoKHVpbnQxNng0X3QpKHZhYmRfdTE2KF9fcDAsIF9fcDEpKSkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMng0X3QgdmFiZGxfdTE2KHVpbnQxNng0X3QgX19wMCwgdWludDE2eDRfdCBfX3AxKSB7CiAgdWludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSAodWludDMyeDRfdCkoX19ub3N3YXBfdm1vdmxfdTE2KCh1aW50MTZ4NF90KShfX25vc3dhcF92YWJkX3UxNihfX3JldjAsIF9fcmV2MSkpKSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQzMng0X3QgX19ub3N3YXBfdmFiZGxfdTE2KHVpbnQxNng0X3QgX19wMCwgdWludDE2eDRfdCBfX3AxKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9ICh1aW50MzJ4NF90KShfX25vc3dhcF92bW92bF91MTYoKHVpbnQxNng0X3QpKF9fbm9zd2FwX3ZhYmRfdTE2KF9fcDAsIF9fcDEpKSkpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDhfdCB2YWJkbF9zOChpbnQ4eDhfdCBfX3AwLCBpbnQ4eDhfdCBfX3AxKSB7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gKGludDE2eDhfdCkodm1vdmxfdTgoKHVpbnQ4eDhfdCkodmFiZF9zOChfX3AwLCBfX3AxKSkpKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng4X3QgdmFiZGxfczgoaW50OHg4X3QgX19wMCwgaW50OHg4X3QgX19wMSkgewogIGludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng4X3QpKF9fbm9zd2FwX3Ztb3ZsX3U4KCh1aW50OHg4X3QpKF9fbm9zd2FwX3ZhYmRfczgoX19yZXYwLCBfX3JldjEpKSkpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQxNng4X3QgX19ub3N3YXBfdmFiZGxfczgoaW50OHg4X3QgX19wMCwgaW50OHg4X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IChpbnQxNng4X3QpKF9fbm9zd2FwX3Ztb3ZsX3U4KCh1aW50OHg4X3QpKF9fbm9zd2FwX3ZhYmRfczgoX19wMCwgX19wMSkpKSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50NjR4Ml90IHZhYmRsX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEpIHsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50NjR4Ml90KSh2bW92bF91MzIoKHVpbnQzMngyX3QpKHZhYmRfczMyKF9fcDAsIF9fcDEpKSkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDY0eDJfdCB2YWJkbF9zMzIoaW50MzJ4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxKSB7CiAgaW50MzJ4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50NjR4Ml90KShfX25vc3dhcF92bW92bF91MzIoKHVpbnQzMngyX3QpKF9fbm9zd2FwX3ZhYmRfczMyKF9fcmV2MCwgX19yZXYxKSkpKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50NjR4Ml90IF9fbm9zd2FwX3ZhYmRsX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEpIHsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSAoaW50NjR4Ml90KShfX25vc3dhcF92bW92bF91MzIoKHVpbnQzMngyX3QpKF9fbm9zd2FwX3ZhYmRfczMyKF9fcDAsIF9fcDEpKSkpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDRfdCB2YWJkbF9zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkodm1vdmxfdTE2KCh1aW50MTZ4NF90KSh2YWJkX3MxNihfX3AwLCBfX3AxKSkpKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMng0X3QgdmFiZGxfczE2KGludDE2eDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSkgewogIGludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkoX19ub3N3YXBfdm1vdmxfdTE2KCh1aW50MTZ4NF90KShfX25vc3dhcF92YWJkX3MxNihfX3JldjAsIF9fcmV2MSkpKSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDMyeDRfdCBfX25vc3dhcF92YWJkbF9zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gKGludDMyeDRfdCkoX19ub3N3YXBfdm1vdmxfdTE2KCh1aW50MTZ4NF90KShfX25vc3dhcF92YWJkX3MxNihfX3AwLCBfX3AxKSkpKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4OF90IHZhZGRsX3U4KHVpbnQ4eDhfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSB2bW92bF91OChfX3AwKSArIHZtb3ZsX3U4KF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng4X3QgdmFkZGxfdTgodWludDh4OF90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxKSB7CiAgdWludDh4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdm1vdmxfdTgoX19yZXYwKSArIF9fbm9zd2FwX3Ztb3ZsX3U4KF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ2NHgyX3QgdmFkZGxfdTMyKHVpbnQzMngyX3QgX19wMCwgdWludDMyeDJfdCBfX3AxKSB7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IHZtb3ZsX3UzMihfX3AwKSArIHZtb3ZsX3UzMihfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50NjR4Ml90IHZhZGRsX3UzMih1aW50MzJ4Ml90IF9fcDAsIHVpbnQzMngyX3QgX19wMSkgewogIHVpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdm1vdmxfdTMyKF9fcmV2MCkgKyBfX25vc3dhcF92bW92bF91MzIoX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDRfdCB2YWRkbF91MTYodWludDE2eDRfdCBfX3AwLCB1aW50MTZ4NF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gdm1vdmxfdTE2KF9fcDApICsgdm1vdmxfdTE2KF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMng0X3QgdmFkZGxfdTE2KHVpbnQxNng0X3QgX19wMCwgdWludDE2eDRfdCBfX3AxKSB7CiAgdWludDE2eDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92bW92bF91MTYoX19yZXYwKSArIF9fbm9zd2FwX3Ztb3ZsX3UxNihfX3JldjEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng4X3QgdmFkZGxfczgoaW50OHg4X3QgX19wMCwgaW50OHg4X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IHZtb3ZsX3M4KF9fcDApICsgdm1vdmxfczgoX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4OF90IHZhZGRsX3M4KGludDh4OF90IF9fcDAsIGludDh4OF90IF9fcDEpIHsKICBpbnQ4eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92bW92bF9zOChfX3JldjApICsgX19ub3N3YXBfdm1vdmxfczgoX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50NjR4Ml90IHZhZGRsX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEpIHsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSB2bW92bF9zMzIoX19wMCkgKyB2bW92bF9zMzIoX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50NjR4Ml90IHZhZGRsX3MzMihpbnQzMngyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEpIHsKICBpbnQzMngyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3Ztb3ZsX3MzMihfX3JldjApICsgX19ub3N3YXBfdm1vdmxfczMyKF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDRfdCB2YWRkbF9zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gdm1vdmxfczE2KF9fcDApICsgdm1vdmxfczE2KF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDRfdCB2YWRkbF9zMTYoaW50MTZ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxKSB7CiAgaW50MTZ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92bW92bF9zMTYoX19yZXYwKSArIF9fbm9zd2FwX3Ztb3ZsX3MxNihfX3JldjEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4OF90IHZhZGR3X3U4KHVpbnQxNng4X3QgX19wMCwgdWludDh4OF90IF9fcDEpIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCArIHZtb3ZsX3U4KF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng4X3QgdmFkZHdfdTgodWludDE2eDhfdCBfX3AwLCB1aW50OHg4X3QgX19wMSkgewogIHVpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgKyBfX25vc3dhcF92bW92bF91OChfX3JldjEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50NjR4Ml90IHZhZGR3X3UzMih1aW50NjR4Ml90IF9fcDAsIHVpbnQzMngyX3QgX19wMSkgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICsgdm1vdmxfdTMyKF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ2NHgyX3QgdmFkZHdfdTMyKHVpbnQ2NHgyX3QgX19wMCwgdWludDMyeDJfdCBfX3AxKSB7CiAgdWludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50MzJ4Ml90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgKyBfX25vc3dhcF92bW92bF91MzIoX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDRfdCB2YWRkd191MTYodWludDMyeDRfdCBfX3AwLCB1aW50MTZ4NF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCArIHZtb3ZsX3UxNihfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4NF90IHZhZGR3X3UxNih1aW50MzJ4NF90IF9fcDAsIHVpbnQxNng0X3QgX19wMSkgewogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICsgX19ub3N3YXBfdm1vdmxfdTE2KF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDhfdCB2YWRkd19zOChpbnQxNng4X3QgX19wMCwgaW50OHg4X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgKyB2bW92bF9zOChfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng4X3QgdmFkZHdfczgoaW50MTZ4OF90IF9fcDAsIGludDh4OF90IF9fcDEpIHsKICBpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHg4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICsgX19ub3N3YXBfdm1vdmxfczgoX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50NjR4Ml90IHZhZGR3X3MzMihpbnQ2NHgyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEpIHsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICsgdm1vdmxfczMyKF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDY0eDJfdCB2YWRkd19zMzIoaW50NjR4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxKSB7CiAgaW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgKyBfX25vc3dhcF92bW92bF9zMzIoX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4NF90IHZhZGR3X3MxNihpbnQzMng0X3QgX19wMCwgaW50MTZ4NF90IF9fcDEpIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICsgdm1vdmxfczE2KF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDRfdCB2YWRkd19zMTYoaW50MzJ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxKSB7CiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgKyBfX25vc3dhcF92bW92bF9zMTYoX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmdldF9sYW5lX2YxNihfX3AwXzgzNSwgX19wMV84MzUpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4NF90IF9fczBfODM1ID0gX19wMF84MzU7IFwKICBmbG9hdDE2X3QgX19yZXRfODM1OyBcCmZsb2F0MTZ4NF90IF9fcmVpbnRfODM1ID0gX19zMF84MzU7IFwKaW50MTZfdCBfX3JlaW50MV84MzUgPSB2Z2V0X2xhbmVfczE2KCooaW50MTZ4NF90ICopICZfX3JlaW50XzgzNSwgX19wMV84MzUpOyBcCiAgX19yZXRfODM1ID0gKihmbG9hdDE2X3QgKikgJl9fcmVpbnQxXzgzNTsgXAogIF9fcmV0XzgzNTsgXAp9KQojZWxzZQojZGVmaW5lIHZnZXRfbGFuZV9mMTYoX19wMF84MzYsIF9fcDFfODM2KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDRfdCBfX3MwXzgzNiA9IF9fcDBfODM2OyBcCiAgZmxvYXQxNng0X3QgX19yZXYwXzgzNjsgIF9fcmV2MF84MzYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzgzNiwgX19zMF84MzYsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNl90IF9fcmV0XzgzNjsgXApmbG9hdDE2eDRfdCBfX3JlaW50XzgzNiA9IF9fcmV2MF84MzY7IFwKaW50MTZfdCBfX3JlaW50MV84MzYgPSBfX25vc3dhcF92Z2V0X2xhbmVfczE2KCooaW50MTZ4NF90ICopICZfX3JlaW50XzgzNiwgX19wMV84MzYpOyBcCiAgX19yZXRfODM2ID0gKihmbG9hdDE2X3QgKikgJl9fcmVpbnQxXzgzNjsgXAogIF9fcmV0XzgzNjsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3ZnZXRfbGFuZV9mMTYoX19wMF84MzcsIF9fcDFfODM3KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2eDRfdCBfX3MwXzgzNyA9IF9fcDBfODM3OyBcCiAgZmxvYXQxNl90IF9fcmV0XzgzNzsgXApmbG9hdDE2eDRfdCBfX3JlaW50XzgzNyA9IF9fczBfODM3OyBcCmludDE2X3QgX19yZWludDFfODM3ID0gX19ub3N3YXBfdmdldF9sYW5lX3MxNigqKGludDE2eDRfdCAqKSAmX19yZWludF84MzcsIF9fcDFfODM3KTsgXAogIF9fcmV0XzgzNyA9ICooZmxvYXQxNl90ICopICZfX3JlaW50MV84Mzc7IFwKICBfX3JldF84Mzc7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Z2V0cV9sYW5lX2YxNihfX3AwXzgzOCwgX19wMV84MzgpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4OF90IF9fczBfODM4ID0gX19wMF84Mzg7IFwKICBmbG9hdDE2X3QgX19yZXRfODM4OyBcCmZsb2F0MTZ4OF90IF9fcmVpbnRfODM4ID0gX19zMF84Mzg7IFwKaW50MTZfdCBfX3JlaW50MV84MzggPSB2Z2V0cV9sYW5lX3MxNigqKGludDE2eDhfdCAqKSAmX19yZWludF84MzgsIF9fcDFfODM4KTsgXAogIF9fcmV0XzgzOCA9ICooZmxvYXQxNl90ICopICZfX3JlaW50MV84Mzg7IFwKICBfX3JldF84Mzg7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Z2V0cV9sYW5lX2YxNihfX3AwXzgzOSwgX19wMV84MzkpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MTZ4OF90IF9fczBfODM5ID0gX19wMF84Mzk7IFwKICBmbG9hdDE2eDhfdCBfX3JldjBfODM5OyAgX19yZXYwXzgzOSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfODM5LCBfX3MwXzgzOSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2X3QgX19yZXRfODM5OyBcCmZsb2F0MTZ4OF90IF9fcmVpbnRfODM5ID0gX19yZXYwXzgzOTsgXAppbnQxNl90IF9fcmVpbnQxXzgzOSA9IF9fbm9zd2FwX3ZnZXRxX2xhbmVfczE2KCooaW50MTZ4OF90ICopICZfX3JlaW50XzgzOSwgX19wMV84MzkpOyBcCiAgX19yZXRfODM5ID0gKihmbG9hdDE2X3QgKikgJl9fcmVpbnQxXzgzOTsgXAogIF9fcmV0XzgzOTsgXAp9KQojZGVmaW5lIF9fbm9zd2FwX3ZnZXRxX2xhbmVfZjE2KF9fcDBfODQwLCBfX3AxXzg0MCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNng4X3QgX19zMF84NDAgPSBfX3AwXzg0MDsgXAogIGZsb2F0MTZfdCBfX3JldF84NDA7IFwKZmxvYXQxNng4X3QgX19yZWludF84NDAgPSBfX3MwXzg0MDsgXAppbnQxNl90IF9fcmVpbnQxXzg0MCA9IF9fbm9zd2FwX3ZnZXRxX2xhbmVfczE2KCooaW50MTZ4OF90ICopICZfX3JlaW50Xzg0MCwgX19wMV84NDApOyBcCiAgX19yZXRfODQwID0gKihmbG9hdDE2X3QgKikgJl9fcmVpbnQxXzg0MDsgXAogIF9fcmV0Xzg0MDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng4X3Qgdm1sYWxfdTgodWludDE2eDhfdCBfX3AwLCB1aW50OHg4X3QgX19wMSwgdWludDh4OF90IF9fcDIpIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCArIHZtdWxsX3U4KF9fcDEsIF9fcDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng4X3Qgdm1sYWxfdTgodWludDE2eDhfdCBfX3AwLCB1aW50OHg4X3QgX19wMSwgdWludDh4OF90IF9fcDIpIHsKICB1aW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCArIF9fbm9zd2FwX3ZtdWxsX3U4KF9fcmV2MSwgX19yZXYyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDE2eDhfdCBfX25vc3dhcF92bWxhbF91OCh1aW50MTZ4OF90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxLCB1aW50OHg4X3QgX19wMikgewogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICsgX19ub3N3YXBfdm11bGxfdTgoX19wMSwgX19wMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDY0eDJfdCB2bWxhbF91MzIodWludDY0eDJfdCBfX3AwLCB1aW50MzJ4Ml90IF9fcDEsIHVpbnQzMngyX3QgX19wMikgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICsgdm11bGxfdTMyKF9fcDEsIF9fcDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ2NHgyX3Qgdm1sYWxfdTMyKHVpbnQ2NHgyX3QgX19wMCwgdWludDMyeDJfdCBfX3AxLCB1aW50MzJ4Ml90IF9fcDIpIHsKICB1aW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICsgX19ub3N3YXBfdm11bGxfdTMyKF9fcmV2MSwgX19yZXYyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDY0eDJfdCBfX25vc3dhcF92bWxhbF91MzIodWludDY0eDJfdCBfX3AwLCB1aW50MzJ4Ml90IF9fcDEsIHVpbnQzMngyX3QgX19wMikgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICsgX19ub3N3YXBfdm11bGxfdTMyKF9fcDEsIF9fcDIpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMng0X3Qgdm1sYWxfdTE2KHVpbnQzMng0X3QgX19wMCwgdWludDE2eDRfdCBfX3AxLCB1aW50MTZ4NF90IF9fcDIpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCArIHZtdWxsX3UxNihfX3AxLCBfX3AyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4NF90IHZtbGFsX3UxNih1aW50MzJ4NF90IF9fcDAsIHVpbnQxNng0X3QgX19wMSwgdWludDE2eDRfdCBfX3AyKSB7CiAgdWludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCArIF9fbm9zd2FwX3ZtdWxsX3UxNihfX3JldjEsIF9fcmV2Mik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQzMng0X3QgX19ub3N3YXBfdm1sYWxfdTE2KHVpbnQzMng0X3QgX19wMCwgdWludDE2eDRfdCBfX3AxLCB1aW50MTZ4NF90IF9fcDIpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCArIF9fbm9zd2FwX3ZtdWxsX3UxNihfX3AxLCBfX3AyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng4X3Qgdm1sYWxfczgoaW50MTZ4OF90IF9fcDAsIGludDh4OF90IF9fcDEsIGludDh4OF90IF9fcDIpIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICsgdm11bGxfczgoX19wMSwgX19wMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4OF90IHZtbGFsX3M4KGludDE2eDhfdCBfX3AwLCBpbnQ4eDhfdCBfX3AxLCBpbnQ4eDhfdCBfX3AyKSB7CiAgaW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCArIF9fbm9zd2FwX3ZtdWxsX3M4KF9fcmV2MSwgX19yZXYyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MTZ4OF90IF9fbm9zd2FwX3ZtbGFsX3M4KGludDE2eDhfdCBfX3AwLCBpbnQ4eDhfdCBfX3AxLCBpbnQ4eDhfdCBfX3AyKSB7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCArIF9fbm9zd2FwX3ZtdWxsX3M4KF9fcDEsIF9fcDIpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDY0eDJfdCB2bWxhbF9zMzIoaW50NjR4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxLCBpbnQzMngyX3QgX19wMikgewogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgKyB2bXVsbF9zMzIoX19wMSwgX19wMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50NjR4Ml90IHZtbGFsX3MzMihpbnQ2NHgyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEsIGludDMyeDJfdCBfX3AyKSB7CiAgaW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMSwgMCk7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICsgX19ub3N3YXBfdm11bGxfczMyKF9fcmV2MSwgX19yZXYyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50NjR4Ml90IF9fbm9zd2FwX3ZtbGFsX3MzMihpbnQ2NHgyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEsIGludDMyeDJfdCBfX3AyKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19wMCArIF9fbm9zd2FwX3ZtdWxsX3MzMihfX3AxLCBfX3AyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMng0X3Qgdm1sYWxfczE2KGludDMyeDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSwgaW50MTZ4NF90IF9fcDIpIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICsgdm11bGxfczE2KF9fcDEsIF9fcDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDRfdCB2bWxhbF9zMTYoaW50MzJ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxLCBpbnQxNng0X3QgX19wMikgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCArIF9fbm9zd2FwX3ZtdWxsX3MxNihfX3JldjEsIF9fcmV2Mik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDMyeDRfdCBfX25vc3dhcF92bWxhbF9zMTYoaW50MzJ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxLCBpbnQxNng0X3QgX19wMikgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgKyBfX25vc3dhcF92bXVsbF9zMTYoX19wMSwgX19wMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm1sYWxfbGFuZV91MzIoX19wMF84NDEsIF9fcDFfODQxLCBfX3AyXzg0MSwgX19wM184NDEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyX3QgX19zMF84NDEgPSBfX3AwXzg0MTsgXAogIHVpbnQzMngyX3QgX19zMV84NDEgPSBfX3AxXzg0MTsgXAogIHVpbnQzMngyX3QgX19zMl84NDEgPSBfX3AyXzg0MTsgXAogIHVpbnQ2NHgyX3QgX19yZXRfODQxOyBcCiAgX19yZXRfODQxID0gX19zMF84NDEgKyB2bXVsbF91MzIoX19zMV84NDEsIHNwbGF0X2xhbmVfdTMyKF9fczJfODQxLCBfX3AzXzg0MSkpOyBcCiAgX19yZXRfODQxOyBcCn0pCiNlbHNlCiNkZWZpbmUgdm1sYWxfbGFuZV91MzIoX19wMF84NDIsIF9fcDFfODQyLCBfX3AyXzg0MiwgX19wM184NDIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyX3QgX19zMF84NDIgPSBfX3AwXzg0MjsgXAogIHVpbnQzMngyX3QgX19zMV84NDIgPSBfX3AxXzg0MjsgXAogIHVpbnQzMngyX3QgX19zMl84NDIgPSBfX3AyXzg0MjsgXAogIHVpbnQ2NHgyX3QgX19yZXYwXzg0MjsgIF9fcmV2MF84NDIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzg0MiwgX19zMF84NDIsIDEsIDApOyBcCiAgdWludDMyeDJfdCBfX3JldjFfODQyOyAgX19yZXYxXzg0MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfODQyLCBfX3MxXzg0MiwgMSwgMCk7IFwKICB1aW50MzJ4Ml90IF9fcmV2Ml84NDI7ICBfX3JldjJfODQyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl84NDIsIF9fczJfODQyLCAxLCAwKTsgXAogIHVpbnQ2NHgyX3QgX19yZXRfODQyOyBcCiAgX19yZXRfODQyID0gX19yZXYwXzg0MiArIF9fbm9zd2FwX3ZtdWxsX3UzMihfX3JldjFfODQyLCBfX25vc3dhcF9zcGxhdF9sYW5lX3UzMihfX3JldjJfODQyLCBfX3AzXzg0MikpOyBcCiAgX19yZXRfODQyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfODQyLCBfX3JldF84NDIsIDEsIDApOyBcCiAgX19yZXRfODQyOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm1sYWxfbGFuZV91MTYoX19wMF84NDMsIF9fcDFfODQzLCBfX3AyXzg0MywgX19wM184NDMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0X3QgX19zMF84NDMgPSBfX3AwXzg0MzsgXAogIHVpbnQxNng0X3QgX19zMV84NDMgPSBfX3AxXzg0MzsgXAogIHVpbnQxNng0X3QgX19zMl84NDMgPSBfX3AyXzg0MzsgXAogIHVpbnQzMng0X3QgX19yZXRfODQzOyBcCiAgX19yZXRfODQzID0gX19zMF84NDMgKyB2bXVsbF91MTYoX19zMV84NDMsIHNwbGF0X2xhbmVfdTE2KF9fczJfODQzLCBfX3AzXzg0MykpOyBcCiAgX19yZXRfODQzOyBcCn0pCiNlbHNlCiNkZWZpbmUgdm1sYWxfbGFuZV91MTYoX19wMF84NDQsIF9fcDFfODQ0LCBfX3AyXzg0NCwgX19wM184NDQpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0X3QgX19zMF84NDQgPSBfX3AwXzg0NDsgXAogIHVpbnQxNng0X3QgX19zMV84NDQgPSBfX3AxXzg0NDsgXAogIHVpbnQxNng0X3QgX19zMl84NDQgPSBfX3AyXzg0NDsgXAogIHVpbnQzMng0X3QgX19yZXYwXzg0NDsgIF9fcmV2MF84NDQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzg0NCwgX19zMF84NDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDRfdCBfX3JldjFfODQ0OyAgX19yZXYxXzg0NCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfODQ0LCBfX3MxXzg0NCwgMywgMiwgMSwgMCk7IFwKICB1aW50MTZ4NF90IF9fcmV2Ml84NDQ7ICBfX3JldjJfODQ0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl84NDQsIF9fczJfODQ0LCAzLCAyLCAxLCAwKTsgXAogIHVpbnQzMng0X3QgX19yZXRfODQ0OyBcCiAgX19yZXRfODQ0ID0gX19yZXYwXzg0NCArIF9fbm9zd2FwX3ZtdWxsX3UxNihfX3JldjFfODQ0LCBfX25vc3dhcF9zcGxhdF9sYW5lX3UxNihfX3JldjJfODQ0LCBfX3AzXzg0NCkpOyBcCiAgX19yZXRfODQ0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfODQ0LCBfX3JldF84NDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfODQ0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm1sYWxfbGFuZV9zMzIoX19wMF84NDUsIF9fcDFfODQ1LCBfX3AyXzg0NSwgX19wM184NDUpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJfdCBfX3MwXzg0NSA9IF9fcDBfODQ1OyBcCiAgaW50MzJ4Ml90IF9fczFfODQ1ID0gX19wMV84NDU7IFwKICBpbnQzMngyX3QgX19zMl84NDUgPSBfX3AyXzg0NTsgXAogIGludDY0eDJfdCBfX3JldF84NDU7IFwKICBfX3JldF84NDUgPSBfX3MwXzg0NSArIHZtdWxsX3MzMihfX3MxXzg0NSwgc3BsYXRfbGFuZV9zMzIoX19zMl84NDUsIF9fcDNfODQ1KSk7IFwKICBfX3JldF84NDU7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bWxhbF9sYW5lX3MzMihfX3AwXzg0NiwgX19wMV84NDYsIF9fcDJfODQ2LCBfX3AzXzg0NikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4Ml90IF9fczBfODQ2ID0gX19wMF84NDY7IFwKICBpbnQzMngyX3QgX19zMV84NDYgPSBfX3AxXzg0NjsgXAogIGludDMyeDJfdCBfX3MyXzg0NiA9IF9fcDJfODQ2OyBcCiAgaW50NjR4Ml90IF9fcmV2MF84NDY7ICBfX3JldjBfODQ2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF84NDYsIF9fczBfODQ2LCAxLCAwKTsgXAogIGludDMyeDJfdCBfX3JldjFfODQ2OyAgX19yZXYxXzg0NiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfODQ2LCBfX3MxXzg0NiwgMSwgMCk7IFwKICBpbnQzMngyX3QgX19yZXYyXzg0NjsgIF9fcmV2Ml84NDYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzg0NiwgX19zMl84NDYsIDEsIDApOyBcCiAgaW50NjR4Ml90IF9fcmV0Xzg0NjsgXAogIF9fcmV0Xzg0NiA9IF9fcmV2MF84NDYgKyBfX25vc3dhcF92bXVsbF9zMzIoX19yZXYxXzg0NiwgX19ub3N3YXBfc3BsYXRfbGFuZV9zMzIoX19yZXYyXzg0NiwgX19wM184NDYpKTsgXAogIF9fcmV0Xzg0NiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0Xzg0NiwgX19yZXRfODQ2LCAxLCAwKTsgXAogIF9fcmV0Xzg0NjsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtbGFsX2xhbmVfczE2KF9fcDBfODQ3LCBfX3AxXzg0NywgX19wMl84NDcsIF9fcDNfODQ3KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMF84NDcgPSBfX3AwXzg0NzsgXAogIGludDE2eDRfdCBfX3MxXzg0NyA9IF9fcDFfODQ3OyBcCiAgaW50MTZ4NF90IF9fczJfODQ3ID0gX19wMl84NDc7IFwKICBpbnQzMng0X3QgX19yZXRfODQ3OyBcCiAgX19yZXRfODQ3ID0gX19zMF84NDcgKyB2bXVsbF9zMTYoX19zMV84NDcsIHNwbGF0X2xhbmVfczE2KF9fczJfODQ3LCBfX3AzXzg0NykpOyBcCiAgX19yZXRfODQ3OyBcCn0pCiNlbHNlCiNkZWZpbmUgdm1sYWxfbGFuZV9zMTYoX19wMF84NDgsIF9fcDFfODQ4LCBfX3AyXzg0OCwgX19wM184NDgpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDRfdCBfX3MwXzg0OCA9IF9fcDBfODQ4OyBcCiAgaW50MTZ4NF90IF9fczFfODQ4ID0gX19wMV84NDg7IFwKICBpbnQxNng0X3QgX19zMl84NDggPSBfX3AyXzg0ODsgXAogIGludDMyeDRfdCBfX3JldjBfODQ4OyAgX19yZXYwXzg0OCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfODQ4LCBfX3MwXzg0OCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng0X3QgX19yZXYxXzg0ODsgIF9fcmV2MV84NDggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzg0OCwgX19zMV84NDgsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4NF90IF9fcmV2Ml84NDg7ICBfX3JldjJfODQ4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl84NDgsIF9fczJfODQ4LCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDRfdCBfX3JldF84NDg7IFwKICBfX3JldF84NDggPSBfX3JldjBfODQ4ICsgX19ub3N3YXBfdm11bGxfczE2KF9fcmV2MV84NDgsIF9fbm9zd2FwX3NwbGF0X2xhbmVfczE2KF9fcmV2Ml84NDgsIF9fcDNfODQ4KSk7IFwKICBfX3JldF84NDggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF84NDgsIF9fcmV0Xzg0OCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF84NDg7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50NjR4Ml90IHZtbGFsX25fdTMyKHVpbnQ2NHgyX3QgX19wMCwgdWludDMyeDJfdCBfX3AxLCB1aW50MzJfdCBfX3AyKSB7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgKyB2bXVsbF91MzIoX19wMSwgKHVpbnQzMngyX3QpIHtfX3AyLCBfX3AyfSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDY0eDJfdCB2bWxhbF9uX3UzMih1aW50NjR4Ml90IF9fcDAsIHVpbnQzMngyX3QgX19wMSwgdWludDMyX3QgX19wMikgewogIHVpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICsgX19ub3N3YXBfdm11bGxfdTMyKF9fcmV2MSwgKHVpbnQzMngyX3QpIHtfX3AyLCBfX3AyfSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ2NHgyX3QgX19ub3N3YXBfdm1sYWxfbl91MzIodWludDY0eDJfdCBfX3AwLCB1aW50MzJ4Ml90IF9fcDEsIHVpbnQzMl90IF9fcDIpIHsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19wMCArIF9fbm9zd2FwX3ZtdWxsX3UzMihfX3AxLCAodWludDMyeDJfdCkge19fcDIsIF9fcDJ9KTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZtbGFsX25fdTE2KHVpbnQzMng0X3QgX19wMCwgdWludDE2eDRfdCBfX3AxLCB1aW50MTZfdCBfX3AyKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgKyB2bXVsbF91MTYoX19wMSwgKHVpbnQxNng0X3QpIHtfX3AyLCBfX3AyLCBfX3AyLCBfX3AyfSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2bWxhbF9uX3UxNih1aW50MzJ4NF90IF9fcDAsIHVpbnQxNng0X3QgX19wMSwgdWludDE2X3QgX19wMikgewogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICsgX19ub3N3YXBfdm11bGxfdTE2KF9fcmV2MSwgKHVpbnQxNng0X3QpIHtfX3AyLCBfX3AyLCBfX3AyLCBfX3AyfSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQzMng0X3QgX19ub3N3YXBfdm1sYWxfbl91MTYodWludDMyeDRfdCBfX3AwLCB1aW50MTZ4NF90IF9fcDEsIHVpbnQxNl90IF9fcDIpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCArIF9fbm9zd2FwX3ZtdWxsX3UxNihfX3AxLCAodWludDE2eDRfdCkge19fcDIsIF9fcDIsIF9fcDIsIF9fcDJ9KTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ2NHgyX3Qgdm1sYWxfbl9zMzIoaW50NjR4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxLCBpbnQzMl90IF9fcDIpIHsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICsgdm11bGxfczMyKF9fcDEsIChpbnQzMngyX3QpIHtfX3AyLCBfX3AyfSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50NjR4Ml90IHZtbGFsX25fczMyKGludDY0eDJfdCBfX3AwLCBpbnQzMngyX3QgX19wMSwgaW50MzJfdCBfX3AyKSB7CiAgaW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgKyBfX25vc3dhcF92bXVsbF9zMzIoX19yZXYxLCAoaW50MzJ4Ml90KSB7X19wMiwgX19wMn0pOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQ2NHgyX3QgX19ub3N3YXBfdm1sYWxfbl9zMzIoaW50NjR4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxLCBpbnQzMl90IF9fcDIpIHsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICsgX19ub3N3YXBfdm11bGxfczMyKF9fcDEsIChpbnQzMngyX3QpIHtfX3AyLCBfX3AyfSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4NF90IHZtbGFsX25fczE2KGludDMyeDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSwgaW50MTZfdCBfX3AyKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCArIHZtdWxsX3MxNihfX3AxLCAoaW50MTZ4NF90KSB7X19wMiwgX19wMiwgX19wMiwgX19wMn0pOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDRfdCB2bWxhbF9uX3MxNihpbnQzMng0X3QgX19wMCwgaW50MTZ4NF90IF9fcDEsIGludDE2X3QgX19wMikgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICsgX19ub3N3YXBfdm11bGxfczE2KF9fcmV2MSwgKGludDE2eDRfdCkge19fcDIsIF9fcDIsIF9fcDIsIF9fcDJ9KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MzJ4NF90IF9fbm9zd2FwX3ZtbGFsX25fczE2KGludDMyeDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSwgaW50MTZfdCBfX3AyKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCArIF9fbm9zd2FwX3ZtdWxsX3MxNihfX3AxLCAoaW50MTZ4NF90KSB7X19wMiwgX19wMiwgX19wMiwgX19wMn0pOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng4X3Qgdm1sc2xfdTgodWludDE2eDhfdCBfX3AwLCB1aW50OHg4X3QgX19wMSwgdWludDh4OF90IF9fcDIpIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAtIHZtdWxsX3U4KF9fcDEsIF9fcDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng4X3Qgdm1sc2xfdTgodWludDE2eDhfdCBfX3AwLCB1aW50OHg4X3QgX19wMSwgdWludDh4OF90IF9fcDIpIHsKICB1aW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCAtIF9fbm9zd2FwX3ZtdWxsX3U4KF9fcmV2MSwgX19yZXYyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDE2eDhfdCBfX25vc3dhcF92bWxzbF91OCh1aW50MTZ4OF90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxLCB1aW50OHg4X3QgX19wMikgewogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwIC0gX19ub3N3YXBfdm11bGxfdTgoX19wMSwgX19wMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDY0eDJfdCB2bWxzbF91MzIodWludDY0eDJfdCBfX3AwLCB1aW50MzJ4Ml90IF9fcDEsIHVpbnQzMngyX3QgX19wMikgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwIC0gdm11bGxfdTMyKF9fcDEsIF9fcDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ2NHgyX3Qgdm1sc2xfdTMyKHVpbnQ2NHgyX3QgX19wMCwgdWludDMyeDJfdCBfX3AxLCB1aW50MzJ4Ml90IF9fcDIpIHsKICB1aW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwIC0gX19ub3N3YXBfdm11bGxfdTMyKF9fcmV2MSwgX19yZXYyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDY0eDJfdCBfX25vc3dhcF92bWxzbF91MzIodWludDY0eDJfdCBfX3AwLCB1aW50MzJ4Ml90IF9fcDEsIHVpbnQzMngyX3QgX19wMikgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwIC0gX19ub3N3YXBfdm11bGxfdTMyKF9fcDEsIF9fcDIpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMng0X3Qgdm1sc2xfdTE2KHVpbnQzMng0X3QgX19wMCwgdWludDE2eDRfdCBfX3AxLCB1aW50MTZ4NF90IF9fcDIpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAtIHZtdWxsX3UxNihfX3AxLCBfX3AyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4NF90IHZtbHNsX3UxNih1aW50MzJ4NF90IF9fcDAsIHVpbnQxNng0X3QgX19wMSwgdWludDE2eDRfdCBfX3AyKSB7CiAgdWludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCAtIF9fbm9zd2FwX3ZtdWxsX3UxNihfX3JldjEsIF9fcmV2Mik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQzMng0X3QgX19ub3N3YXBfdm1sc2xfdTE2KHVpbnQzMng0X3QgX19wMCwgdWludDE2eDRfdCBfX3AxLCB1aW50MTZ4NF90IF9fcDIpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAtIF9fbm9zd2FwX3ZtdWxsX3UxNihfX3AxLCBfX3AyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng4X3Qgdm1sc2xfczgoaW50MTZ4OF90IF9fcDAsIGludDh4OF90IF9fcDEsIGludDh4OF90IF9fcDIpIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwIC0gdm11bGxfczgoX19wMSwgX19wMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4OF90IHZtbHNsX3M4KGludDE2eDhfdCBfX3AwLCBpbnQ4eDhfdCBfX3AxLCBpbnQ4eDhfdCBfX3AyKSB7CiAgaW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCAtIF9fbm9zd2FwX3ZtdWxsX3M4KF9fcmV2MSwgX19yZXYyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MTZ4OF90IF9fbm9zd2FwX3ZtbHNsX3M4KGludDE2eDhfdCBfX3AwLCBpbnQ4eDhfdCBfX3AxLCBpbnQ4eDhfdCBfX3AyKSB7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAtIF9fbm9zd2FwX3ZtdWxsX3M4KF9fcDEsIF9fcDIpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDY0eDJfdCB2bWxzbF9zMzIoaW50NjR4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxLCBpbnQzMngyX3QgX19wMikgewogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgLSB2bXVsbF9zMzIoX19wMSwgX19wMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50NjR4Ml90IHZtbHNsX3MzMihpbnQ2NHgyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEsIGludDMyeDJfdCBfX3AyKSB7CiAgaW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMSwgMCk7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwIC0gX19ub3N3YXBfdm11bGxfczMyKF9fcmV2MSwgX19yZXYyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50NjR4Ml90IF9fbm9zd2FwX3ZtbHNsX3MzMihpbnQ2NHgyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEsIGludDMyeDJfdCBfX3AyKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAtIF9fbm9zd2FwX3ZtdWxsX3MzMihfX3AxLCBfX3AyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMng0X3Qgdm1sc2xfczE2KGludDMyeDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSwgaW50MTZ4NF90IF9fcDIpIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwIC0gdm11bGxfczE2KF9fcDEsIF9fcDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDRfdCB2bWxzbF9zMTYoaW50MzJ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxLCBpbnQxNng0X3QgX19wMikgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCAtIF9fbm9zd2FwX3ZtdWxsX3MxNihfX3JldjEsIF9fcmV2Mik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDMyeDRfdCBfX25vc3dhcF92bWxzbF9zMTYoaW50MzJ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxLCBpbnQxNng0X3QgX19wMikgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgLSBfX25vc3dhcF92bXVsbF9zMTYoX19wMSwgX19wMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm1sc2xfbGFuZV91MzIoX19wMF84NDksIF9fcDFfODQ5LCBfX3AyXzg0OSwgX19wM184NDkpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyX3QgX19zMF84NDkgPSBfX3AwXzg0OTsgXAogIHVpbnQzMngyX3QgX19zMV84NDkgPSBfX3AxXzg0OTsgXAogIHVpbnQzMngyX3QgX19zMl84NDkgPSBfX3AyXzg0OTsgXAogIHVpbnQ2NHgyX3QgX19yZXRfODQ5OyBcCiAgX19yZXRfODQ5ID0gX19zMF84NDkgLSB2bXVsbF91MzIoX19zMV84NDksIHNwbGF0X2xhbmVfdTMyKF9fczJfODQ5LCBfX3AzXzg0OSkpOyBcCiAgX19yZXRfODQ5OyBcCn0pCiNlbHNlCiNkZWZpbmUgdm1sc2xfbGFuZV91MzIoX19wMF84NTAsIF9fcDFfODUwLCBfX3AyXzg1MCwgX19wM184NTApIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQ2NHgyX3QgX19zMF84NTAgPSBfX3AwXzg1MDsgXAogIHVpbnQzMngyX3QgX19zMV84NTAgPSBfX3AxXzg1MDsgXAogIHVpbnQzMngyX3QgX19zMl84NTAgPSBfX3AyXzg1MDsgXAogIHVpbnQ2NHgyX3QgX19yZXYwXzg1MDsgIF9fcmV2MF84NTAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzg1MCwgX19zMF84NTAsIDEsIDApOyBcCiAgdWludDMyeDJfdCBfX3JldjFfODUwOyAgX19yZXYxXzg1MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfODUwLCBfX3MxXzg1MCwgMSwgMCk7IFwKICB1aW50MzJ4Ml90IF9fcmV2Ml84NTA7ICBfX3JldjJfODUwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl84NTAsIF9fczJfODUwLCAxLCAwKTsgXAogIHVpbnQ2NHgyX3QgX19yZXRfODUwOyBcCiAgX19yZXRfODUwID0gX19yZXYwXzg1MCAtIF9fbm9zd2FwX3ZtdWxsX3UzMihfX3JldjFfODUwLCBfX25vc3dhcF9zcGxhdF9sYW5lX3UzMihfX3JldjJfODUwLCBfX3AzXzg1MCkpOyBcCiAgX19yZXRfODUwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfODUwLCBfX3JldF84NTAsIDEsIDApOyBcCiAgX19yZXRfODUwOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm1sc2xfbGFuZV91MTYoX19wMF84NTEsIF9fcDFfODUxLCBfX3AyXzg1MSwgX19wM184NTEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0X3QgX19zMF84NTEgPSBfX3AwXzg1MTsgXAogIHVpbnQxNng0X3QgX19zMV84NTEgPSBfX3AxXzg1MTsgXAogIHVpbnQxNng0X3QgX19zMl84NTEgPSBfX3AyXzg1MTsgXAogIHVpbnQzMng0X3QgX19yZXRfODUxOyBcCiAgX19yZXRfODUxID0gX19zMF84NTEgLSB2bXVsbF91MTYoX19zMV84NTEsIHNwbGF0X2xhbmVfdTE2KF9fczJfODUxLCBfX3AzXzg1MSkpOyBcCiAgX19yZXRfODUxOyBcCn0pCiNlbHNlCiNkZWZpbmUgdm1sc2xfbGFuZV91MTYoX19wMF84NTIsIF9fcDFfODUyLCBfX3AyXzg1MiwgX19wM184NTIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHVpbnQzMng0X3QgX19zMF84NTIgPSBfX3AwXzg1MjsgXAogIHVpbnQxNng0X3QgX19zMV84NTIgPSBfX3AxXzg1MjsgXAogIHVpbnQxNng0X3QgX19zMl84NTIgPSBfX3AyXzg1MjsgXAogIHVpbnQzMng0X3QgX19yZXYwXzg1MjsgIF9fcmV2MF84NTIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzg1MiwgX19zMF84NTIsIDMsIDIsIDEsIDApOyBcCiAgdWludDE2eDRfdCBfX3JldjFfODUyOyAgX19yZXYxXzg1MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfODUyLCBfX3MxXzg1MiwgMywgMiwgMSwgMCk7IFwKICB1aW50MTZ4NF90IF9fcmV2Ml84NTI7ICBfX3JldjJfODUyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl84NTIsIF9fczJfODUyLCAzLCAyLCAxLCAwKTsgXAogIHVpbnQzMng0X3QgX19yZXRfODUyOyBcCiAgX19yZXRfODUyID0gX19yZXYwXzg1MiAtIF9fbm9zd2FwX3ZtdWxsX3UxNihfX3JldjFfODUyLCBfX25vc3dhcF9zcGxhdF9sYW5lX3UxNihfX3JldjJfODUyLCBfX3AzXzg1MikpOyBcCiAgX19yZXRfODUyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfODUyLCBfX3JldF84NTIsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfODUyOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm1sc2xfbGFuZV9zMzIoX19wMF84NTMsIF9fcDFfODUzLCBfX3AyXzg1MywgX19wM184NTMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDY0eDJfdCBfX3MwXzg1MyA9IF9fcDBfODUzOyBcCiAgaW50MzJ4Ml90IF9fczFfODUzID0gX19wMV84NTM7IFwKICBpbnQzMngyX3QgX19zMl84NTMgPSBfX3AyXzg1MzsgXAogIGludDY0eDJfdCBfX3JldF84NTM7IFwKICBfX3JldF84NTMgPSBfX3MwXzg1MyAtIHZtdWxsX3MzMihfX3MxXzg1Mywgc3BsYXRfbGFuZV9zMzIoX19zMl84NTMsIF9fcDNfODUzKSk7IFwKICBfX3JldF84NTM7IFwKfSkKI2Vsc2UKI2RlZmluZSB2bWxzbF9sYW5lX3MzMihfX3AwXzg1NCwgX19wMV84NTQsIF9fcDJfODU0LCBfX3AzXzg1NCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50NjR4Ml90IF9fczBfODU0ID0gX19wMF84NTQ7IFwKICBpbnQzMngyX3QgX19zMV84NTQgPSBfX3AxXzg1NDsgXAogIGludDMyeDJfdCBfX3MyXzg1NCA9IF9fcDJfODU0OyBcCiAgaW50NjR4Ml90IF9fcmV2MF84NTQ7ICBfX3JldjBfODU0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF84NTQsIF9fczBfODU0LCAxLCAwKTsgXAogIGludDMyeDJfdCBfX3JldjFfODU0OyAgX19yZXYxXzg1NCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfODU0LCBfX3MxXzg1NCwgMSwgMCk7IFwKICBpbnQzMngyX3QgX19yZXYyXzg1NDsgIF9fcmV2Ml84NTQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzg1NCwgX19zMl84NTQsIDEsIDApOyBcCiAgaW50NjR4Ml90IF9fcmV0Xzg1NDsgXAogIF9fcmV0Xzg1NCA9IF9fcmV2MF84NTQgLSBfX25vc3dhcF92bXVsbF9zMzIoX19yZXYxXzg1NCwgX19ub3N3YXBfc3BsYXRfbGFuZV9zMzIoX19yZXYyXzg1NCwgX19wM184NTQpKTsgXAogIF9fcmV0Xzg1NCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0Xzg1NCwgX19yZXRfODU0LCAxLCAwKTsgXAogIF9fcmV0Xzg1NDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtbHNsX2xhbmVfczE2KF9fcDBfODU1LCBfX3AxXzg1NSwgX19wMl84NTUsIF9fcDNfODU1KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMng0X3QgX19zMF84NTUgPSBfX3AwXzg1NTsgXAogIGludDE2eDRfdCBfX3MxXzg1NSA9IF9fcDFfODU1OyBcCiAgaW50MTZ4NF90IF9fczJfODU1ID0gX19wMl84NTU7IFwKICBpbnQzMng0X3QgX19yZXRfODU1OyBcCiAgX19yZXRfODU1ID0gX19zMF84NTUgLSB2bXVsbF9zMTYoX19zMV84NTUsIHNwbGF0X2xhbmVfczE2KF9fczJfODU1LCBfX3AzXzg1NSkpOyBcCiAgX19yZXRfODU1OyBcCn0pCiNlbHNlCiNkZWZpbmUgdm1sc2xfbGFuZV9zMTYoX19wMF84NTYsIF9fcDFfODU2LCBfX3AyXzg1NiwgX19wM184NTYpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyeDRfdCBfX3MwXzg1NiA9IF9fcDBfODU2OyBcCiAgaW50MTZ4NF90IF9fczFfODU2ID0gX19wMV84NTY7IFwKICBpbnQxNng0X3QgX19zMl84NTYgPSBfX3AyXzg1NjsgXAogIGludDMyeDRfdCBfX3JldjBfODU2OyAgX19yZXYwXzg1NiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfODU2LCBfX3MwXzg1NiwgMywgMiwgMSwgMCk7IFwKICBpbnQxNng0X3QgX19yZXYxXzg1NjsgIF9fcmV2MV84NTYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzg1NiwgX19zMV84NTYsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZ4NF90IF9fcmV2Ml84NTY7ICBfX3JldjJfODU2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl84NTYsIF9fczJfODU2LCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDRfdCBfX3JldF84NTY7IFwKICBfX3JldF84NTYgPSBfX3JldjBfODU2IC0gX19ub3N3YXBfdm11bGxfczE2KF9fcmV2MV84NTYsIF9fbm9zd2FwX3NwbGF0X2xhbmVfczE2KF9fcmV2Ml84NTYsIF9fcDNfODU2KSk7IFwKICBfX3JldF84NTYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF84NTYsIF9fcmV0Xzg1NiwgMywgMiwgMSwgMCk7IFwKICBfX3JldF84NTY7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50NjR4Ml90IHZtbHNsX25fdTMyKHVpbnQ2NHgyX3QgX19wMCwgdWludDMyeDJfdCBfX3AxLCB1aW50MzJfdCBfX3AyKSB7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgLSB2bXVsbF91MzIoX19wMSwgKHVpbnQzMngyX3QpIHtfX3AyLCBfX3AyfSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDY0eDJfdCB2bWxzbF9uX3UzMih1aW50NjR4Ml90IF9fcDAsIHVpbnQzMngyX3QgX19wMSwgdWludDMyX3QgX19wMikgewogIHVpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwIC0gX19ub3N3YXBfdm11bGxfdTMyKF9fcmV2MSwgKHVpbnQzMngyX3QpIHtfX3AyLCBfX3AyfSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQ2NHgyX3QgX19ub3N3YXBfdm1sc2xfbl91MzIodWludDY0eDJfdCBfX3AwLCB1aW50MzJ4Ml90IF9fcDEsIHVpbnQzMl90IF9fcDIpIHsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAtIF9fbm9zd2FwX3ZtdWxsX3UzMihfX3AxLCAodWludDMyeDJfdCkge19fcDIsIF9fcDJ9KTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZtbHNsX25fdTE2KHVpbnQzMng0X3QgX19wMCwgdWludDE2eDRfdCBfX3AxLCB1aW50MTZfdCBfX3AyKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgLSB2bXVsbF91MTYoX19wMSwgKHVpbnQxNng0X3QpIHtfX3AyLCBfX3AyLCBfX3AyLCBfX3AyfSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2bWxzbF9uX3UxNih1aW50MzJ4NF90IF9fcDAsIHVpbnQxNng0X3QgX19wMSwgdWludDE2X3QgX19wMikgewogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwIC0gX19ub3N3YXBfdm11bGxfdTE2KF9fcmV2MSwgKHVpbnQxNng0X3QpIHtfX3AyLCBfX3AyLCBfX3AyLCBfX3AyfSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQzMng0X3QgX19ub3N3YXBfdm1sc2xfbl91MTYodWludDMyeDRfdCBfX3AwLCB1aW50MTZ4NF90IF9fcDEsIHVpbnQxNl90IF9fcDIpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAtIF9fbm9zd2FwX3ZtdWxsX3UxNihfX3AxLCAodWludDE2eDRfdCkge19fcDIsIF9fcDIsIF9fcDIsIF9fcDJ9KTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ2NHgyX3Qgdm1sc2xfbl9zMzIoaW50NjR4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxLCBpbnQzMl90IF9fcDIpIHsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwIC0gdm11bGxfczMyKF9fcDEsIChpbnQzMngyX3QpIHtfX3AyLCBfX3AyfSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50NjR4Ml90IHZtbHNsX25fczMyKGludDY0eDJfdCBfX3AwLCBpbnQzMngyX3QgX19wMSwgaW50MzJfdCBfX3AyKSB7CiAgaW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgLSBfX25vc3dhcF92bXVsbF9zMzIoX19yZXYxLCAoaW50MzJ4Ml90KSB7X19wMiwgX19wMn0pOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KX19haSBpbnQ2NHgyX3QgX19ub3N3YXBfdm1sc2xfbl9zMzIoaW50NjR4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxLCBpbnQzMl90IF9fcDIpIHsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwIC0gX19ub3N3YXBfdm11bGxfczMyKF9fcDEsIChpbnQzMngyX3QpIHtfX3AyLCBfX3AyfSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4NF90IHZtbHNsX25fczE2KGludDMyeDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSwgaW50MTZfdCBfX3AyKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAtIHZtdWxsX3MxNihfX3AxLCAoaW50MTZ4NF90KSB7X19wMiwgX19wMiwgX19wMiwgX19wMn0pOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDRfdCB2bWxzbF9uX3MxNihpbnQzMng0X3QgX19wMCwgaW50MTZ4NF90IF9fcDEsIGludDE2X3QgX19wMikgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwIC0gX19ub3N3YXBfdm11bGxfczE2KF9fcmV2MSwgKGludDE2eDRfdCkge19fcDIsIF9fcDIsIF9fcDIsIF9fcDJ9KTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MzJ4NF90IF9fbm9zd2FwX3ZtbHNsX25fczE2KGludDMyeDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSwgaW50MTZfdCBfX3AyKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCAtIF9fbm9zd2FwX3ZtdWxsX3MxNihfX3AxLCAoaW50MTZ4NF90KSB7X19wMiwgX19wMiwgX19wMiwgX19wMn0pOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZzZXRfbGFuZV9mMTYoX19wMF84NTcsIF9fcDFfODU3LCBfX3AyXzg1NykgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNl90IF9fczBfODU3ID0gX19wMF84NTc7IFwKICBmbG9hdDE2eDRfdCBfX3MxXzg1NyA9IF9fcDFfODU3OyBcCiAgZmxvYXQxNng0X3QgX19yZXRfODU3OyBcCmZsb2F0MTZfdCBfX3JlaW50Xzg1NyA9IF9fczBfODU3OyBcCmZsb2F0MTZ4NF90IF9fcmVpbnQxXzg1NyA9IF9fczFfODU3OyBcCmludDE2eDRfdCBfX3JlaW50Ml84NTcgPSB2c2V0X2xhbmVfczE2KCooaW50MTZfdCAqKSAmX19yZWludF84NTcsICooaW50MTZ4NF90ICopICZfX3JlaW50MV84NTcsIF9fcDJfODU3KTsgXAogIF9fcmV0Xzg1NyA9ICooZmxvYXQxNng0X3QgKikgJl9fcmVpbnQyXzg1NzsgXAogIF9fcmV0Xzg1NzsgXAp9KQojZWxzZQojZGVmaW5lIHZzZXRfbGFuZV9mMTYoX19wMF84NTgsIF9fcDFfODU4LCBfX3AyXzg1OCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNl90IF9fczBfODU4ID0gX19wMF84NTg7IFwKICBmbG9hdDE2eDRfdCBfX3MxXzg1OCA9IF9fcDFfODU4OyBcCiAgZmxvYXQxNng0X3QgX19yZXYxXzg1ODsgIF9fcmV2MV84NTggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzg1OCwgX19zMV84NTgsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng0X3QgX19yZXRfODU4OyBcCmZsb2F0MTZfdCBfX3JlaW50Xzg1OCA9IF9fczBfODU4OyBcCmZsb2F0MTZ4NF90IF9fcmVpbnQxXzg1OCA9IF9fcmV2MV84NTg7IFwKaW50MTZ4NF90IF9fcmVpbnQyXzg1OCA9IF9fbm9zd2FwX3ZzZXRfbGFuZV9zMTYoKihpbnQxNl90ICopICZfX3JlaW50Xzg1OCwgKihpbnQxNng0X3QgKikgJl9fcmVpbnQxXzg1OCwgX19wMl84NTgpOyBcCiAgX19yZXRfODU4ID0gKihmbG9hdDE2eDRfdCAqKSAmX19yZWludDJfODU4OyBcCiAgX19yZXRfODU4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfODU4LCBfX3JldF84NTgsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfODU4OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnNldHFfbGFuZV9mMTYoX19wMF84NTksIF9fcDFfODU5LCBfX3AyXzg1OSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNl90IF9fczBfODU5ID0gX19wMF84NTk7IFwKICBmbG9hdDE2eDhfdCBfX3MxXzg1OSA9IF9fcDFfODU5OyBcCiAgZmxvYXQxNng4X3QgX19yZXRfODU5OyBcCmZsb2F0MTZfdCBfX3JlaW50Xzg1OSA9IF9fczBfODU5OyBcCmZsb2F0MTZ4OF90IF9fcmVpbnQxXzg1OSA9IF9fczFfODU5OyBcCmludDE2eDhfdCBfX3JlaW50Ml84NTkgPSB2c2V0cV9sYW5lX3MxNigqKGludDE2X3QgKikgJl9fcmVpbnRfODU5LCAqKGludDE2eDhfdCAqKSAmX19yZWludDFfODU5LCBfX3AyXzg1OSk7IFwKICBfX3JldF84NTkgPSAqKGZsb2F0MTZ4OF90ICopICZfX3JlaW50Ml84NTk7IFwKICBfX3JldF84NTk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2c2V0cV9sYW5lX2YxNihfX3AwXzg2MCwgX19wMV84NjAsIF9fcDJfODYwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2X3QgX19zMF84NjAgPSBfX3AwXzg2MDsgXAogIGZsb2F0MTZ4OF90IF9fczFfODYwID0gX19wMV84NjA7IFwKICBmbG9hdDE2eDhfdCBfX3JldjFfODYwOyAgX19yZXYxXzg2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfODYwLCBfX3MxXzg2MCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2eDhfdCBfX3JldF84NjA7IFwKZmxvYXQxNl90IF9fcmVpbnRfODYwID0gX19zMF84NjA7IFwKZmxvYXQxNng4X3QgX19yZWludDFfODYwID0gX19yZXYxXzg2MDsgXAppbnQxNng4X3QgX19yZWludDJfODYwID0gX19ub3N3YXBfdnNldHFfbGFuZV9zMTYoKihpbnQxNl90ICopICZfX3JlaW50Xzg2MCwgKihpbnQxNng4X3QgKikgJl9fcmVpbnQxXzg2MCwgX19wMl84NjApOyBcCiAgX19yZXRfODYwID0gKihmbG9hdDE2eDhfdCAqKSAmX19yZWludDJfODYwOyBcCiAgX19yZXRfODYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfODYwLCBfX3JldF84NjAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfODYwOyBcCn0pCiNlbmRpZgoKI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9CRjE2X1ZFQ1RPUl9BUklUSE1FVElDKQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2YmZtbGFsYnFfbGFuZV9mMzIoX19wMF84NjEsIF9fcDFfODYxLCBfX3AyXzg2MSwgX19wM184NjEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NF90IF9fczBfODYxID0gX19wMF84NjE7IFwKICBiZmxvYXQxNng4X3QgX19zMV84NjEgPSBfX3AxXzg2MTsgXAogIGJmbG9hdDE2eDRfdCBfX3MyXzg2MSA9IF9fcDJfODYxOyBcCiAgZmxvYXQzMng0X3QgX19yZXRfODYxOyBcCiAgX19yZXRfODYxID0gdmJmbWxhbGJxX2YzMihfX3MwXzg2MSwgX19zMV84NjEsIChiZmxvYXQxNng4X3QpIHt2Z2V0X2xhbmVfYmYxNihfX3MyXzg2MSwgX19wM184NjEpLCB2Z2V0X2xhbmVfYmYxNihfX3MyXzg2MSwgX19wM184NjEpLCB2Z2V0X2xhbmVfYmYxNihfX3MyXzg2MSwgX19wM184NjEpLCB2Z2V0X2xhbmVfYmYxNihfX3MyXzg2MSwgX19wM184NjEpLCB2Z2V0X2xhbmVfYmYxNihfX3MyXzg2MSwgX19wM184NjEpLCB2Z2V0X2xhbmVfYmYxNihfX3MyXzg2MSwgX19wM184NjEpLCB2Z2V0X2xhbmVfYmYxNihfX3MyXzg2MSwgX19wM184NjEpLCB2Z2V0X2xhbmVfYmYxNihfX3MyXzg2MSwgX19wM184NjEpfSk7IFwKICBfX3JldF84NjE7IFwKfSkKI2Vsc2UKI2RlZmluZSB2YmZtbGFsYnFfbGFuZV9mMzIoX19wMF84NjIsIF9fcDFfODYyLCBfX3AyXzg2MiwgX19wM184NjIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NF90IF9fczBfODYyID0gX19wMF84NjI7IFwKICBiZmxvYXQxNng4X3QgX19zMV84NjIgPSBfX3AxXzg2MjsgXAogIGJmbG9hdDE2eDRfdCBfX3MyXzg2MiA9IF9fcDJfODYyOyBcCiAgZmxvYXQzMng0X3QgX19yZXYwXzg2MjsgIF9fcmV2MF84NjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzg2MiwgX19zMF84NjIsIDMsIDIsIDEsIDApOyBcCiAgYmZsb2F0MTZ4OF90IF9fcmV2MV84NjI7ICBfX3JldjFfODYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV84NjIsIF9fczFfODYyLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGJmbG9hdDE2eDRfdCBfX3JldjJfODYyOyAgX19yZXYyXzg2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfODYyLCBfX3MyXzg2MiwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDMyeDRfdCBfX3JldF84NjI7IFwKICBfX3JldF84NjIgPSBfX25vc3dhcF92YmZtbGFsYnFfZjMyKF9fcmV2MF84NjIsIF9fcmV2MV84NjIsIChiZmxvYXQxNng4X3QpIHtfX25vc3dhcF92Z2V0X2xhbmVfYmYxNihfX3JldjJfODYyLCBfX3AzXzg2MiksIF9fbm9zd2FwX3ZnZXRfbGFuZV9iZjE2KF9fcmV2Ml84NjIsIF9fcDNfODYyKSwgX19ub3N3YXBfdmdldF9sYW5lX2JmMTYoX19yZXYyXzg2MiwgX19wM184NjIpLCBfX25vc3dhcF92Z2V0X2xhbmVfYmYxNihfX3JldjJfODYyLCBfX3AzXzg2MiksIF9fbm9zd2FwX3ZnZXRfbGFuZV9iZjE2KF9fcmV2Ml84NjIsIF9fcDNfODYyKSwgX19ub3N3YXBfdmdldF9sYW5lX2JmMTYoX19yZXYyXzg2MiwgX19wM184NjIpLCBfX25vc3dhcF92Z2V0X2xhbmVfYmYxNihfX3JldjJfODYyLCBfX3AzXzg2MiksIF9fbm9zd2FwX3ZnZXRfbGFuZV9iZjE2KF9fcmV2Ml84NjIsIF9fcDNfODYyKX0pOyBcCiAgX19yZXRfODYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfODYyLCBfX3JldF84NjIsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfODYyOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmJmbWxhbGJxX2xhbmVxX2YzMihfX3AwXzg2MywgX19wMV84NjMsIF9fcDJfODYzLCBfX3AzXzg2MykgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0X3QgX19zMF84NjMgPSBfX3AwXzg2MzsgXAogIGJmbG9hdDE2eDhfdCBfX3MxXzg2MyA9IF9fcDFfODYzOyBcCiAgYmZsb2F0MTZ4OF90IF9fczJfODYzID0gX19wMl84NjM7IFwKICBmbG9hdDMyeDRfdCBfX3JldF84NjM7IFwKICBfX3JldF84NjMgPSB2YmZtbGFsYnFfZjMyKF9fczBfODYzLCBfX3MxXzg2MywgKGJmbG9hdDE2eDhfdCkge3ZnZXRxX2xhbmVfYmYxNihfX3MyXzg2MywgX19wM184NjMpLCB2Z2V0cV9sYW5lX2JmMTYoX19zMl84NjMsIF9fcDNfODYzKSwgdmdldHFfbGFuZV9iZjE2KF9fczJfODYzLCBfX3AzXzg2MyksIHZnZXRxX2xhbmVfYmYxNihfX3MyXzg2MywgX19wM184NjMpLCB2Z2V0cV9sYW5lX2JmMTYoX19zMl84NjMsIF9fcDNfODYzKSwgdmdldHFfbGFuZV9iZjE2KF9fczJfODYzLCBfX3AzXzg2MyksIHZnZXRxX2xhbmVfYmYxNihfX3MyXzg2MywgX19wM184NjMpLCB2Z2V0cV9sYW5lX2JmMTYoX19zMl84NjMsIF9fcDNfODYzKX0pOyBcCiAgX19yZXRfODYzOyBcCn0pCiNlbHNlCiNkZWZpbmUgdmJmbWxhbGJxX2xhbmVxX2YzMihfX3AwXzg2NCwgX19wMV84NjQsIF9fcDJfODY0LCBfX3AzXzg2NCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0X3QgX19zMF84NjQgPSBfX3AwXzg2NDsgXAogIGJmbG9hdDE2eDhfdCBfX3MxXzg2NCA9IF9fcDFfODY0OyBcCiAgYmZsb2F0MTZ4OF90IF9fczJfODY0ID0gX19wMl84NjQ7IFwKICBmbG9hdDMyeDRfdCBfX3JldjBfODY0OyAgX19yZXYwXzg2NCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfODY0LCBfX3MwXzg2NCwgMywgMiwgMSwgMCk7IFwKICBiZmxvYXQxNng4X3QgX19yZXYxXzg2NDsgIF9fcmV2MV84NjQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzg2NCwgX19zMV84NjQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgYmZsb2F0MTZ4OF90IF9fcmV2Ml84NjQ7ICBfX3JldjJfODY0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl84NjQsIF9fczJfODY0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MzJ4NF90IF9fcmV0Xzg2NDsgXAogIF9fcmV0Xzg2NCA9IF9fbm9zd2FwX3ZiZm1sYWxicV9mMzIoX19yZXYwXzg2NCwgX19yZXYxXzg2NCwgKGJmbG9hdDE2eDhfdCkge19fbm9zd2FwX3ZnZXRxX2xhbmVfYmYxNihfX3JldjJfODY0LCBfX3AzXzg2NCksIF9fbm9zd2FwX3ZnZXRxX2xhbmVfYmYxNihfX3JldjJfODY0LCBfX3AzXzg2NCksIF9fbm9zd2FwX3ZnZXRxX2xhbmVfYmYxNihfX3JldjJfODY0LCBfX3AzXzg2NCksIF9fbm9zd2FwX3ZnZXRxX2xhbmVfYmYxNihfX3JldjJfODY0LCBfX3AzXzg2NCksIF9fbm9zd2FwX3ZnZXRxX2xhbmVfYmYxNihfX3JldjJfODY0LCBfX3AzXzg2NCksIF9fbm9zd2FwX3ZnZXRxX2xhbmVfYmYxNihfX3JldjJfODY0LCBfX3AzXzg2NCksIF9fbm9zd2FwX3ZnZXRxX2xhbmVfYmYxNihfX3JldjJfODY0LCBfX3AzXzg2NCksIF9fbm9zd2FwX3ZnZXRxX2xhbmVfYmYxNihfX3JldjJfODY0LCBfX3AzXzg2NCl9KTsgXAogIF9fcmV0Xzg2NCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0Xzg2NCwgX19yZXRfODY0LCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0Xzg2NDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZiZm1sYWx0cV9sYW5lX2YzMihfX3AwXzg2NSwgX19wMV84NjUsIF9fcDJfODY1LCBfX3AzXzg2NSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0X3QgX19zMF84NjUgPSBfX3AwXzg2NTsgXAogIGJmbG9hdDE2eDhfdCBfX3MxXzg2NSA9IF9fcDFfODY1OyBcCiAgYmZsb2F0MTZ4NF90IF9fczJfODY1ID0gX19wMl84NjU7IFwKICBmbG9hdDMyeDRfdCBfX3JldF84NjU7IFwKICBfX3JldF84NjUgPSB2YmZtbGFsdHFfZjMyKF9fczBfODY1LCBfX3MxXzg2NSwgKGJmbG9hdDE2eDhfdCkge3ZnZXRfbGFuZV9iZjE2KF9fczJfODY1LCBfX3AzXzg2NSksIHZnZXRfbGFuZV9iZjE2KF9fczJfODY1LCBfX3AzXzg2NSksIHZnZXRfbGFuZV9iZjE2KF9fczJfODY1LCBfX3AzXzg2NSksIHZnZXRfbGFuZV9iZjE2KF9fczJfODY1LCBfX3AzXzg2NSksIHZnZXRfbGFuZV9iZjE2KF9fczJfODY1LCBfX3AzXzg2NSksIHZnZXRfbGFuZV9iZjE2KF9fczJfODY1LCBfX3AzXzg2NSksIHZnZXRfbGFuZV9iZjE2KF9fczJfODY1LCBfX3AzXzg2NSksIHZnZXRfbGFuZV9iZjE2KF9fczJfODY1LCBfX3AzXzg2NSl9KTsgXAogIF9fcmV0Xzg2NTsgXAp9KQojZWxzZQojZGVmaW5lIHZiZm1sYWx0cV9sYW5lX2YzMihfX3AwXzg2NiwgX19wMV84NjYsIF9fcDJfODY2LCBfX3AzXzg2NikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0X3QgX19zMF84NjYgPSBfX3AwXzg2NjsgXAogIGJmbG9hdDE2eDhfdCBfX3MxXzg2NiA9IF9fcDFfODY2OyBcCiAgYmZsb2F0MTZ4NF90IF9fczJfODY2ID0gX19wMl84NjY7IFwKICBmbG9hdDMyeDRfdCBfX3JldjBfODY2OyAgX19yZXYwXzg2NiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfODY2LCBfX3MwXzg2NiwgMywgMiwgMSwgMCk7IFwKICBiZmxvYXQxNng4X3QgX19yZXYxXzg2NjsgIF9fcmV2MV84NjYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzg2NiwgX19zMV84NjYsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgYmZsb2F0MTZ4NF90IF9fcmV2Ml84NjY7ICBfX3JldjJfODY2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl84NjYsIF9fczJfODY2LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MzJ4NF90IF9fcmV0Xzg2NjsgXAogIF9fcmV0Xzg2NiA9IF9fbm9zd2FwX3ZiZm1sYWx0cV9mMzIoX19yZXYwXzg2NiwgX19yZXYxXzg2NiwgKGJmbG9hdDE2eDhfdCkge19fbm9zd2FwX3ZnZXRfbGFuZV9iZjE2KF9fcmV2Ml84NjYsIF9fcDNfODY2KSwgX19ub3N3YXBfdmdldF9sYW5lX2JmMTYoX19yZXYyXzg2NiwgX19wM184NjYpLCBfX25vc3dhcF92Z2V0X2xhbmVfYmYxNihfX3JldjJfODY2LCBfX3AzXzg2NiksIF9fbm9zd2FwX3ZnZXRfbGFuZV9iZjE2KF9fcmV2Ml84NjYsIF9fcDNfODY2KSwgX19ub3N3YXBfdmdldF9sYW5lX2JmMTYoX19yZXYyXzg2NiwgX19wM184NjYpLCBfX25vc3dhcF92Z2V0X2xhbmVfYmYxNihfX3JldjJfODY2LCBfX3AzXzg2NiksIF9fbm9zd2FwX3ZnZXRfbGFuZV9iZjE2KF9fcmV2Ml84NjYsIF9fcDNfODY2KSwgX19ub3N3YXBfdmdldF9sYW5lX2JmMTYoX19yZXYyXzg2NiwgX19wM184NjYpfSk7IFwKICBfX3JldF84NjYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF84NjYsIF9fcmV0Xzg2NiwgMywgMiwgMSwgMCk7IFwKICBfX3JldF84NjY7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2YmZtbGFsdHFfbGFuZXFfZjMyKF9fcDBfODY3LCBfX3AxXzg2NywgX19wMl84NjcsIF9fcDNfODY3KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDRfdCBfX3MwXzg2NyA9IF9fcDBfODY3OyBcCiAgYmZsb2F0MTZ4OF90IF9fczFfODY3ID0gX19wMV84Njc7IFwKICBiZmxvYXQxNng4X3QgX19zMl84NjcgPSBfX3AyXzg2NzsgXAogIGZsb2F0MzJ4NF90IF9fcmV0Xzg2NzsgXAogIF9fcmV0Xzg2NyA9IHZiZm1sYWx0cV9mMzIoX19zMF84NjcsIF9fczFfODY3LCAoYmZsb2F0MTZ4OF90KSB7dmdldHFfbGFuZV9iZjE2KF9fczJfODY3LCBfX3AzXzg2NyksIHZnZXRxX2xhbmVfYmYxNihfX3MyXzg2NywgX19wM184NjcpLCB2Z2V0cV9sYW5lX2JmMTYoX19zMl84NjcsIF9fcDNfODY3KSwgdmdldHFfbGFuZV9iZjE2KF9fczJfODY3LCBfX3AzXzg2NyksIHZnZXRxX2xhbmVfYmYxNihfX3MyXzg2NywgX19wM184NjcpLCB2Z2V0cV9sYW5lX2JmMTYoX19zMl84NjcsIF9fcDNfODY3KSwgdmdldHFfbGFuZV9iZjE2KF9fczJfODY3LCBfX3AzXzg2NyksIHZnZXRxX2xhbmVfYmYxNihfX3MyXzg2NywgX19wM184NjcpfSk7IFwKICBfX3JldF84Njc7IFwKfSkKI2Vsc2UKI2RlZmluZSB2YmZtbGFsdHFfbGFuZXFfZjMyKF9fcDBfODY4LCBfX3AxXzg2OCwgX19wMl84NjgsIF9fcDNfODY4KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDRfdCBfX3MwXzg2OCA9IF9fcDBfODY4OyBcCiAgYmZsb2F0MTZ4OF90IF9fczFfODY4ID0gX19wMV84Njg7IFwKICBiZmxvYXQxNng4X3QgX19zMl84NjggPSBfX3AyXzg2ODsgXAogIGZsb2F0MzJ4NF90IF9fcmV2MF84Njg7ICBfX3JldjBfODY4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF84NjgsIF9fczBfODY4LCAzLCAyLCAxLCAwKTsgXAogIGJmbG9hdDE2eDhfdCBfX3JldjFfODY4OyAgX19yZXYxXzg2OCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfODY4LCBfX3MxXzg2OCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBiZmxvYXQxNng4X3QgX19yZXYyXzg2ODsgIF9fcmV2Ml84NjggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzg2OCwgX19zMl84NjgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQzMng0X3QgX19yZXRfODY4OyBcCiAgX19yZXRfODY4ID0gX19ub3N3YXBfdmJmbWxhbHRxX2YzMihfX3JldjBfODY4LCBfX3JldjFfODY4LCAoYmZsb2F0MTZ4OF90KSB7X19ub3N3YXBfdmdldHFfbGFuZV9iZjE2KF9fcmV2Ml84NjgsIF9fcDNfODY4KSwgX19ub3N3YXBfdmdldHFfbGFuZV9iZjE2KF9fcmV2Ml84NjgsIF9fcDNfODY4KSwgX19ub3N3YXBfdmdldHFfbGFuZV9iZjE2KF9fcmV2Ml84NjgsIF9fcDNfODY4KSwgX19ub3N3YXBfdmdldHFfbGFuZV9iZjE2KF9fcmV2Ml84NjgsIF9fcDNfODY4KSwgX19ub3N3YXBfdmdldHFfbGFuZV9iZjE2KF9fcmV2Ml84NjgsIF9fcDNfODY4KSwgX19ub3N3YXBfdmdldHFfbGFuZV9iZjE2KF9fcmV2Ml84NjgsIF9fcDNfODY4KSwgX19ub3N3YXBfdmdldHFfbGFuZV9iZjE2KF9fcmV2Ml84NjgsIF9fcDNfODY4KSwgX19ub3N3YXBfdmdldHFfbGFuZV9iZjE2KF9fcmV2Ml84NjgsIF9fcDNfODY4KX0pOyBcCiAgX19yZXRfODY4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfODY4LCBfX3JldF84NjgsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfODY4OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgZmxvYXQzMng0X3QgdmN2dHFfaGlnaF9mMzJfYmYxNihiZmxvYXQxNng4X3QgX19wMCkgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gdmN2dF9mMzJfYmYxNih2Z2V0X2hpZ2hfYmYxNihfX3AwKSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgZmxvYXQzMng0X3QgdmN2dHFfaGlnaF9mMzJfYmYxNihiZmxvYXQxNng4X3QgX19wMCkgewogIGJmbG9hdDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBmbG9hdDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3ZjdnRfZjMyX2JmMTYoX19ub3N3YXBfdmdldF9oaWdoX2JmMTYoX19yZXYwKSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGZsb2F0MzJ4NF90IHZjdnRxX2xvd19mMzJfYmYxNihiZmxvYXQxNng4X3QgX19wMCkgewogIGZsb2F0MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gdmN2dF9mMzJfYmYxNih2Z2V0X2xvd19iZjE2KF9fcDApKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBmbG9hdDMyeDRfdCB2Y3Z0cV9sb3dfZjMyX2JmMTYoYmZsb2F0MTZ4OF90IF9fcDApIHsKICBiZmxvYXQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgZmxvYXQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92Y3Z0X2YzMl9iZjE2KF9fbm9zd2FwX3ZnZXRfbG93X2JmMTYoX19yZXYwKSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNlbmRpZgojaWYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX0ZQMTZfRk1MKSAmJiBkZWZpbmVkKF9fYWFyY2g2NF9fKQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Zm1sYWxxX2xhbmVfaGlnaF9mMTYoX19wMF84NjksIF9fcDFfODY5LCBfX3AyXzg2OSwgX19wM184NjkpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NF90IF9fczBfODY5ID0gX19wMF84Njk7IFwKICBmbG9hdDE2eDhfdCBfX3MxXzg2OSA9IF9fcDFfODY5OyBcCiAgZmxvYXQxNng0X3QgX19zMl84NjkgPSBfX3AyXzg2OTsgXAogIGZsb2F0MzJ4NF90IF9fcmV0Xzg2OTsgXAogIF9fcmV0Xzg2OSA9IHZmbWxhbHFfaGlnaF9mMTYoX19zMF84NjksIF9fczFfODY5LCAoZmxvYXQxNng4X3QpIHt2Z2V0X2xhbmVfZjE2KF9fczJfODY5LCBfX3AzXzg2OSksIHZnZXRfbGFuZV9mMTYoX19zMl84NjksIF9fcDNfODY5KSwgdmdldF9sYW5lX2YxNihfX3MyXzg2OSwgX19wM184NjkpLCB2Z2V0X2xhbmVfZjE2KF9fczJfODY5LCBfX3AzXzg2OSksIHZnZXRfbGFuZV9mMTYoX19zMl84NjksIF9fcDNfODY5KSwgdmdldF9sYW5lX2YxNihfX3MyXzg2OSwgX19wM184NjkpLCB2Z2V0X2xhbmVfZjE2KF9fczJfODY5LCBfX3AzXzg2OSksIHZnZXRfbGFuZV9mMTYoX19zMl84NjksIF9fcDNfODY5KX0pOyBcCiAgX19yZXRfODY5OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmZtbGFscV9sYW5lX2hpZ2hfZjE2KF9fcDBfODcwLCBfX3AxXzg3MCwgX19wMl84NzAsIF9fcDNfODcwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDRfdCBfX3MwXzg3MCA9IF9fcDBfODcwOyBcCiAgZmxvYXQxNng4X3QgX19zMV84NzAgPSBfX3AxXzg3MDsgXAogIGZsb2F0MTZ4NF90IF9fczJfODcwID0gX19wMl84NzA7IFwKICBmbG9hdDMyeDRfdCBfX3JldjBfODcwOyAgX19yZXYwXzg3MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfODcwLCBfX3MwXzg3MCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2eDhfdCBfX3JldjFfODcwOyAgX19yZXYxXzg3MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfODcwLCBfX3MxXzg3MCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2eDRfdCBfX3JldjJfODcwOyAgX19yZXYyXzg3MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfODcwLCBfX3MyXzg3MCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDMyeDRfdCBfX3JldF84NzA7IFwKICBfX3JldF84NzAgPSBfX25vc3dhcF92Zm1sYWxxX2hpZ2hfZjE2KF9fcmV2MF84NzAsIF9fcmV2MV84NzAsIChmbG9hdDE2eDhfdCkge19fbm9zd2FwX3ZnZXRfbGFuZV9mMTYoX19yZXYyXzg3MCwgX19wM184NzApLCBfX25vc3dhcF92Z2V0X2xhbmVfZjE2KF9fcmV2Ml84NzAsIF9fcDNfODcwKSwgX19ub3N3YXBfdmdldF9sYW5lX2YxNihfX3JldjJfODcwLCBfX3AzXzg3MCksIF9fbm9zd2FwX3ZnZXRfbGFuZV9mMTYoX19yZXYyXzg3MCwgX19wM184NzApLCBfX25vc3dhcF92Z2V0X2xhbmVfZjE2KF9fcmV2Ml84NzAsIF9fcDNfODcwKSwgX19ub3N3YXBfdmdldF9sYW5lX2YxNihfX3JldjJfODcwLCBfX3AzXzg3MCksIF9fbm9zd2FwX3ZnZXRfbGFuZV9mMTYoX19yZXYyXzg3MCwgX19wM184NzApLCBfX25vc3dhcF92Z2V0X2xhbmVfZjE2KF9fcmV2Ml84NzAsIF9fcDNfODcwKX0pOyBcCiAgX19yZXRfODcwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfODcwLCBfX3JldF84NzAsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfODcwOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmZtbGFsX2xhbmVfaGlnaF9mMTYoX19wMF84NzEsIF9fcDFfODcxLCBfX3AyXzg3MSwgX19wM184NzEpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4Ml90IF9fczBfODcxID0gX19wMF84NzE7IFwKICBmbG9hdDE2eDRfdCBfX3MxXzg3MSA9IF9fcDFfODcxOyBcCiAgZmxvYXQxNng0X3QgX19zMl84NzEgPSBfX3AyXzg3MTsgXAogIGZsb2F0MzJ4Ml90IF9fcmV0Xzg3MTsgXAogIF9fcmV0Xzg3MSA9IHZmbWxhbF9oaWdoX2YxNihfX3MwXzg3MSwgX19zMV84NzEsIChmbG9hdDE2eDRfdCkge3ZnZXRfbGFuZV9mMTYoX19zMl84NzEsIF9fcDNfODcxKSwgdmdldF9sYW5lX2YxNihfX3MyXzg3MSwgX19wM184NzEpLCB2Z2V0X2xhbmVfZjE2KF9fczJfODcxLCBfX3AzXzg3MSksIHZnZXRfbGFuZV9mMTYoX19zMl84NzEsIF9fcDNfODcxKX0pOyBcCiAgX19yZXRfODcxOyBcCn0pCiNlbHNlCiNkZWZpbmUgdmZtbGFsX2xhbmVfaGlnaF9mMTYoX19wMF84NzIsIF9fcDFfODcyLCBfX3AyXzg3MiwgX19wM184NzIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4Ml90IF9fczBfODcyID0gX19wMF84NzI7IFwKICBmbG9hdDE2eDRfdCBfX3MxXzg3MiA9IF9fcDFfODcyOyBcCiAgZmxvYXQxNng0X3QgX19zMl84NzIgPSBfX3AyXzg3MjsgXAogIGZsb2F0MzJ4Ml90IF9fcmV2MF84NzI7ICBfX3JldjBfODcyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF84NzIsIF9fczBfODcyLCAxLCAwKTsgXAogIGZsb2F0MTZ4NF90IF9fcmV2MV84NzI7ICBfX3JldjFfODcyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV84NzIsIF9fczFfODcyLCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4NF90IF9fcmV2Ml84NzI7ICBfX3JldjJfODcyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl84NzIsIF9fczJfODcyLCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MzJ4Ml90IF9fcmV0Xzg3MjsgXAogIF9fcmV0Xzg3MiA9IF9fbm9zd2FwX3ZmbWxhbF9oaWdoX2YxNihfX3JldjBfODcyLCBfX3JldjFfODcyLCAoZmxvYXQxNng0X3QpIHtfX25vc3dhcF92Z2V0X2xhbmVfZjE2KF9fcmV2Ml84NzIsIF9fcDNfODcyKSwgX19ub3N3YXBfdmdldF9sYW5lX2YxNihfX3JldjJfODcyLCBfX3AzXzg3MiksIF9fbm9zd2FwX3ZnZXRfbGFuZV9mMTYoX19yZXYyXzg3MiwgX19wM184NzIpLCBfX25vc3dhcF92Z2V0X2xhbmVfZjE2KF9fcmV2Ml84NzIsIF9fcDNfODcyKX0pOyBcCiAgX19yZXRfODcyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfODcyLCBfX3JldF84NzIsIDEsIDApOyBcCiAgX19yZXRfODcyOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmZtbGFscV9sYW5lX2xvd19mMTYoX19wMF84NzMsIF9fcDFfODczLCBfX3AyXzg3MywgX19wM184NzMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NF90IF9fczBfODczID0gX19wMF84NzM7IFwKICBmbG9hdDE2eDhfdCBfX3MxXzg3MyA9IF9fcDFfODczOyBcCiAgZmxvYXQxNng0X3QgX19zMl84NzMgPSBfX3AyXzg3MzsgXAogIGZsb2F0MzJ4NF90IF9fcmV0Xzg3MzsgXAogIF9fcmV0Xzg3MyA9IHZmbWxhbHFfbG93X2YxNihfX3MwXzg3MywgX19zMV84NzMsIChmbG9hdDE2eDhfdCkge3ZnZXRfbGFuZV9mMTYoX19zMl84NzMsIF9fcDNfODczKSwgdmdldF9sYW5lX2YxNihfX3MyXzg3MywgX19wM184NzMpLCB2Z2V0X2xhbmVfZjE2KF9fczJfODczLCBfX3AzXzg3MyksIHZnZXRfbGFuZV9mMTYoX19zMl84NzMsIF9fcDNfODczKSwgdmdldF9sYW5lX2YxNihfX3MyXzg3MywgX19wM184NzMpLCB2Z2V0X2xhbmVfZjE2KF9fczJfODczLCBfX3AzXzg3MyksIHZnZXRfbGFuZV9mMTYoX19zMl84NzMsIF9fcDNfODczKSwgdmdldF9sYW5lX2YxNihfX3MyXzg3MywgX19wM184NzMpfSk7IFwKICBfX3JldF84NzM7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Zm1sYWxxX2xhbmVfbG93X2YxNihfX3AwXzg3NCwgX19wMV84NzQsIF9fcDJfODc0LCBfX3AzXzg3NCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0X3QgX19zMF84NzQgPSBfX3AwXzg3NDsgXAogIGZsb2F0MTZ4OF90IF9fczFfODc0ID0gX19wMV84NzQ7IFwKICBmbG9hdDE2eDRfdCBfX3MyXzg3NCA9IF9fcDJfODc0OyBcCiAgZmxvYXQzMng0X3QgX19yZXYwXzg3NDsgIF9fcmV2MF84NzQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzg3NCwgX19zMF84NzQsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng4X3QgX19yZXYxXzg3NDsgIF9fcmV2MV84NzQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzg3NCwgX19zMV84NzQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng0X3QgX19yZXYyXzg3NDsgIF9fcmV2Ml84NzQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzg3NCwgX19zMl84NzQsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQzMng0X3QgX19yZXRfODc0OyBcCiAgX19yZXRfODc0ID0gX19ub3N3YXBfdmZtbGFscV9sb3dfZjE2KF9fcmV2MF84NzQsIF9fcmV2MV84NzQsIChmbG9hdDE2eDhfdCkge19fbm9zd2FwX3ZnZXRfbGFuZV9mMTYoX19yZXYyXzg3NCwgX19wM184NzQpLCBfX25vc3dhcF92Z2V0X2xhbmVfZjE2KF9fcmV2Ml84NzQsIF9fcDNfODc0KSwgX19ub3N3YXBfdmdldF9sYW5lX2YxNihfX3JldjJfODc0LCBfX3AzXzg3NCksIF9fbm9zd2FwX3ZnZXRfbGFuZV9mMTYoX19yZXYyXzg3NCwgX19wM184NzQpLCBfX25vc3dhcF92Z2V0X2xhbmVfZjE2KF9fcmV2Ml84NzQsIF9fcDNfODc0KSwgX19ub3N3YXBfdmdldF9sYW5lX2YxNihfX3JldjJfODc0LCBfX3AzXzg3NCksIF9fbm9zd2FwX3ZnZXRfbGFuZV9mMTYoX19yZXYyXzg3NCwgX19wM184NzQpLCBfX25vc3dhcF92Z2V0X2xhbmVfZjE2KF9fcmV2Ml84NzQsIF9fcDNfODc0KX0pOyBcCiAgX19yZXRfODc0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfODc0LCBfX3JldF84NzQsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfODc0OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmZtbGFsX2xhbmVfbG93X2YxNihfX3AwXzg3NSwgX19wMV84NzUsIF9fcDJfODc1LCBfX3AzXzg3NSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMngyX3QgX19zMF84NzUgPSBfX3AwXzg3NTsgXAogIGZsb2F0MTZ4NF90IF9fczFfODc1ID0gX19wMV84NzU7IFwKICBmbG9hdDE2eDRfdCBfX3MyXzg3NSA9IF9fcDJfODc1OyBcCiAgZmxvYXQzMngyX3QgX19yZXRfODc1OyBcCiAgX19yZXRfODc1ID0gdmZtbGFsX2xvd19mMTYoX19zMF84NzUsIF9fczFfODc1LCAoZmxvYXQxNng0X3QpIHt2Z2V0X2xhbmVfZjE2KF9fczJfODc1LCBfX3AzXzg3NSksIHZnZXRfbGFuZV9mMTYoX19zMl84NzUsIF9fcDNfODc1KSwgdmdldF9sYW5lX2YxNihfX3MyXzg3NSwgX19wM184NzUpLCB2Z2V0X2xhbmVfZjE2KF9fczJfODc1LCBfX3AzXzg3NSl9KTsgXAogIF9fcmV0Xzg3NTsgXAp9KQojZWxzZQojZGVmaW5lIHZmbWxhbF9sYW5lX2xvd19mMTYoX19wMF84NzYsIF9fcDFfODc2LCBfX3AyXzg3NiwgX19wM184NzYpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4Ml90IF9fczBfODc2ID0gX19wMF84NzY7IFwKICBmbG9hdDE2eDRfdCBfX3MxXzg3NiA9IF9fcDFfODc2OyBcCiAgZmxvYXQxNng0X3QgX19zMl84NzYgPSBfX3AyXzg3NjsgXAogIGZsb2F0MzJ4Ml90IF9fcmV2MF84NzY7ICBfX3JldjBfODc2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF84NzYsIF9fczBfODc2LCAxLCAwKTsgXAogIGZsb2F0MTZ4NF90IF9fcmV2MV84NzY7ICBfX3JldjFfODc2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV84NzYsIF9fczFfODc2LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4NF90IF9fcmV2Ml84NzY7ICBfX3JldjJfODc2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl84NzYsIF9fczJfODc2LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MzJ4Ml90IF9fcmV0Xzg3NjsgXAogIF9fcmV0Xzg3NiA9IF9fbm9zd2FwX3ZmbWxhbF9sb3dfZjE2KF9fcmV2MF84NzYsIF9fcmV2MV84NzYsIChmbG9hdDE2eDRfdCkge19fbm9zd2FwX3ZnZXRfbGFuZV9mMTYoX19yZXYyXzg3NiwgX19wM184NzYpLCBfX25vc3dhcF92Z2V0X2xhbmVfZjE2KF9fcmV2Ml84NzYsIF9fcDNfODc2KSwgX19ub3N3YXBfdmdldF9sYW5lX2YxNihfX3JldjJfODc2LCBfX3AzXzg3NiksIF9fbm9zd2FwX3ZnZXRfbGFuZV9mMTYoX19yZXYyXzg3NiwgX19wM184NzYpfSk7IFwKICBfX3JldF84NzYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF84NzYsIF9fcmV0Xzg3NiwgMSwgMCk7IFwKICBfX3JldF84NzY7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Zm1sYWxxX2xhbmVxX2hpZ2hfZjE2KF9fcDBfODc3LCBfX3AxXzg3NywgX19wMl84NzcsIF9fcDNfODc3KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDRfdCBfX3MwXzg3NyA9IF9fcDBfODc3OyBcCiAgZmxvYXQxNng4X3QgX19zMV84NzcgPSBfX3AxXzg3NzsgXAogIGZsb2F0MTZ4OF90IF9fczJfODc3ID0gX19wMl84Nzc7IFwKICBmbG9hdDMyeDRfdCBfX3JldF84Nzc7IFwKICBfX3JldF84NzcgPSB2Zm1sYWxxX2hpZ2hfZjE2KF9fczBfODc3LCBfX3MxXzg3NywgKGZsb2F0MTZ4OF90KSB7dmdldHFfbGFuZV9mMTYoX19zMl84NzcsIF9fcDNfODc3KSwgdmdldHFfbGFuZV9mMTYoX19zMl84NzcsIF9fcDNfODc3KSwgdmdldHFfbGFuZV9mMTYoX19zMl84NzcsIF9fcDNfODc3KSwgdmdldHFfbGFuZV9mMTYoX19zMl84NzcsIF9fcDNfODc3KSwgdmdldHFfbGFuZV9mMTYoX19zMl84NzcsIF9fcDNfODc3KSwgdmdldHFfbGFuZV9mMTYoX19zMl84NzcsIF9fcDNfODc3KSwgdmdldHFfbGFuZV9mMTYoX19zMl84NzcsIF9fcDNfODc3KSwgdmdldHFfbGFuZV9mMTYoX19zMl84NzcsIF9fcDNfODc3KX0pOyBcCiAgX19yZXRfODc3OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmZtbGFscV9sYW5lcV9oaWdoX2YxNihfX3AwXzg3OCwgX19wMV84NzgsIF9fcDJfODc4LCBfX3AzXzg3OCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0X3QgX19zMF84NzggPSBfX3AwXzg3ODsgXAogIGZsb2F0MTZ4OF90IF9fczFfODc4ID0gX19wMV84Nzg7IFwKICBmbG9hdDE2eDhfdCBfX3MyXzg3OCA9IF9fcDJfODc4OyBcCiAgZmxvYXQzMng0X3QgX19yZXYwXzg3ODsgIF9fcmV2MF84NzggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzg3OCwgX19zMF84NzgsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng4X3QgX19yZXYxXzg3ODsgIF9fcmV2MV84NzggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzg3OCwgX19zMV84NzgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng4X3QgX19yZXYyXzg3ODsgIF9fcmV2Ml84NzggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzg3OCwgX19zMl84NzgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQzMng0X3QgX19yZXRfODc4OyBcCiAgX19yZXRfODc4ID0gX19ub3N3YXBfdmZtbGFscV9oaWdoX2YxNihfX3JldjBfODc4LCBfX3JldjFfODc4LCAoZmxvYXQxNng4X3QpIHtfX25vc3dhcF92Z2V0cV9sYW5lX2YxNihfX3JldjJfODc4LCBfX3AzXzg3OCksIF9fbm9zd2FwX3ZnZXRxX2xhbmVfZjE2KF9fcmV2Ml84NzgsIF9fcDNfODc4KSwgX19ub3N3YXBfdmdldHFfbGFuZV9mMTYoX19yZXYyXzg3OCwgX19wM184NzgpLCBfX25vc3dhcF92Z2V0cV9sYW5lX2YxNihfX3JldjJfODc4LCBfX3AzXzg3OCksIF9fbm9zd2FwX3ZnZXRxX2xhbmVfZjE2KF9fcmV2Ml84NzgsIF9fcDNfODc4KSwgX19ub3N3YXBfdmdldHFfbGFuZV9mMTYoX19yZXYyXzg3OCwgX19wM184NzgpLCBfX25vc3dhcF92Z2V0cV9sYW5lX2YxNihfX3JldjJfODc4LCBfX3AzXzg3OCksIF9fbm9zd2FwX3ZnZXRxX2xhbmVfZjE2KF9fcmV2Ml84NzgsIF9fcDNfODc4KX0pOyBcCiAgX19yZXRfODc4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfODc4LCBfX3JldF84NzgsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfODc4OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmZtbGFsX2xhbmVxX2hpZ2hfZjE2KF9fcDBfODc5LCBfX3AxXzg3OSwgX19wMl84NzksIF9fcDNfODc5KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJfdCBfX3MwXzg3OSA9IF9fcDBfODc5OyBcCiAgZmxvYXQxNng0X3QgX19zMV84NzkgPSBfX3AxXzg3OTsgXAogIGZsb2F0MTZ4OF90IF9fczJfODc5ID0gX19wMl84Nzk7IFwKICBmbG9hdDMyeDJfdCBfX3JldF84Nzk7IFwKICBfX3JldF84NzkgPSB2Zm1sYWxfaGlnaF9mMTYoX19zMF84NzksIF9fczFfODc5LCAoZmxvYXQxNng0X3QpIHt2Z2V0cV9sYW5lX2YxNihfX3MyXzg3OSwgX19wM184NzkpLCB2Z2V0cV9sYW5lX2YxNihfX3MyXzg3OSwgX19wM184NzkpLCB2Z2V0cV9sYW5lX2YxNihfX3MyXzg3OSwgX19wM184NzkpLCB2Z2V0cV9sYW5lX2YxNihfX3MyXzg3OSwgX19wM184NzkpfSk7IFwKICBfX3JldF84Nzk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Zm1sYWxfbGFuZXFfaGlnaF9mMTYoX19wMF84ODAsIF9fcDFfODgwLCBfX3AyXzg4MCwgX19wM184ODApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4Ml90IF9fczBfODgwID0gX19wMF84ODA7IFwKICBmbG9hdDE2eDRfdCBfX3MxXzg4MCA9IF9fcDFfODgwOyBcCiAgZmxvYXQxNng4X3QgX19zMl84ODAgPSBfX3AyXzg4MDsgXAogIGZsb2F0MzJ4Ml90IF9fcmV2MF84ODA7ICBfX3JldjBfODgwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF84ODAsIF9fczBfODgwLCAxLCAwKTsgXAogIGZsb2F0MTZ4NF90IF9fcmV2MV84ODA7ICBfX3JldjFfODgwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV84ODAsIF9fczFfODgwLCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4OF90IF9fcmV2Ml84ODA7ICBfX3JldjJfODgwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl84ODAsIF9fczJfODgwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MzJ4Ml90IF9fcmV0Xzg4MDsgXAogIF9fcmV0Xzg4MCA9IF9fbm9zd2FwX3ZmbWxhbF9oaWdoX2YxNihfX3JldjBfODgwLCBfX3JldjFfODgwLCAoZmxvYXQxNng0X3QpIHtfX25vc3dhcF92Z2V0cV9sYW5lX2YxNihfX3JldjJfODgwLCBfX3AzXzg4MCksIF9fbm9zd2FwX3ZnZXRxX2xhbmVfZjE2KF9fcmV2Ml84ODAsIF9fcDNfODgwKSwgX19ub3N3YXBfdmdldHFfbGFuZV9mMTYoX19yZXYyXzg4MCwgX19wM184ODApLCBfX25vc3dhcF92Z2V0cV9sYW5lX2YxNihfX3JldjJfODgwLCBfX3AzXzg4MCl9KTsgXAogIF9fcmV0Xzg4MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0Xzg4MCwgX19yZXRfODgwLCAxLCAwKTsgXAogIF9fcmV0Xzg4MDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZmbWxhbHFfbGFuZXFfbG93X2YxNihfX3AwXzg4MSwgX19wMV84ODEsIF9fcDJfODgxLCBfX3AzXzg4MSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0X3QgX19zMF84ODEgPSBfX3AwXzg4MTsgXAogIGZsb2F0MTZ4OF90IF9fczFfODgxID0gX19wMV84ODE7IFwKICBmbG9hdDE2eDhfdCBfX3MyXzg4MSA9IF9fcDJfODgxOyBcCiAgZmxvYXQzMng0X3QgX19yZXRfODgxOyBcCiAgX19yZXRfODgxID0gdmZtbGFscV9sb3dfZjE2KF9fczBfODgxLCBfX3MxXzg4MSwgKGZsb2F0MTZ4OF90KSB7dmdldHFfbGFuZV9mMTYoX19zMl84ODEsIF9fcDNfODgxKSwgdmdldHFfbGFuZV9mMTYoX19zMl84ODEsIF9fcDNfODgxKSwgdmdldHFfbGFuZV9mMTYoX19zMl84ODEsIF9fcDNfODgxKSwgdmdldHFfbGFuZV9mMTYoX19zMl84ODEsIF9fcDNfODgxKSwgdmdldHFfbGFuZV9mMTYoX19zMl84ODEsIF9fcDNfODgxKSwgdmdldHFfbGFuZV9mMTYoX19zMl84ODEsIF9fcDNfODgxKSwgdmdldHFfbGFuZV9mMTYoX19zMl84ODEsIF9fcDNfODgxKSwgdmdldHFfbGFuZV9mMTYoX19zMl84ODEsIF9fcDNfODgxKX0pOyBcCiAgX19yZXRfODgxOyBcCn0pCiNlbHNlCiNkZWZpbmUgdmZtbGFscV9sYW5lcV9sb3dfZjE2KF9fcDBfODgyLCBfX3AxXzg4MiwgX19wMl84ODIsIF9fcDNfODgyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDRfdCBfX3MwXzg4MiA9IF9fcDBfODgyOyBcCiAgZmxvYXQxNng4X3QgX19zMV84ODIgPSBfX3AxXzg4MjsgXAogIGZsb2F0MTZ4OF90IF9fczJfODgyID0gX19wMl84ODI7IFwKICBmbG9hdDMyeDRfdCBfX3JldjBfODgyOyAgX19yZXYwXzg4MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfODgyLCBfX3MwXzg4MiwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2eDhfdCBfX3JldjFfODgyOyAgX19yZXYxXzg4MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfODgyLCBfX3MxXzg4MiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2eDhfdCBfX3JldjJfODgyOyAgX19yZXYyXzg4MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfODgyLCBfX3MyXzg4MiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDMyeDRfdCBfX3JldF84ODI7IFwKICBfX3JldF84ODIgPSBfX25vc3dhcF92Zm1sYWxxX2xvd19mMTYoX19yZXYwXzg4MiwgX19yZXYxXzg4MiwgKGZsb2F0MTZ4OF90KSB7X19ub3N3YXBfdmdldHFfbGFuZV9mMTYoX19yZXYyXzg4MiwgX19wM184ODIpLCBfX25vc3dhcF92Z2V0cV9sYW5lX2YxNihfX3JldjJfODgyLCBfX3AzXzg4MiksIF9fbm9zd2FwX3ZnZXRxX2xhbmVfZjE2KF9fcmV2Ml84ODIsIF9fcDNfODgyKSwgX19ub3N3YXBfdmdldHFfbGFuZV9mMTYoX19yZXYyXzg4MiwgX19wM184ODIpLCBfX25vc3dhcF92Z2V0cV9sYW5lX2YxNihfX3JldjJfODgyLCBfX3AzXzg4MiksIF9fbm9zd2FwX3ZnZXRxX2xhbmVfZjE2KF9fcmV2Ml84ODIsIF9fcDNfODgyKSwgX19ub3N3YXBfdmdldHFfbGFuZV9mMTYoX19yZXYyXzg4MiwgX19wM184ODIpLCBfX25vc3dhcF92Z2V0cV9sYW5lX2YxNihfX3JldjJfODgyLCBfX3AzXzg4Mil9KTsgXAogIF9fcmV0Xzg4MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0Xzg4MiwgX19yZXRfODgyLCAzLCAyLCAxLCAwKTsgXAogIF9fcmV0Xzg4MjsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZmbWxhbF9sYW5lcV9sb3dfZjE2KF9fcDBfODgzLCBfX3AxXzg4MywgX19wMl84ODMsIF9fcDNfODgzKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJfdCBfX3MwXzg4MyA9IF9fcDBfODgzOyBcCiAgZmxvYXQxNng0X3QgX19zMV84ODMgPSBfX3AxXzg4MzsgXAogIGZsb2F0MTZ4OF90IF9fczJfODgzID0gX19wMl84ODM7IFwKICBmbG9hdDMyeDJfdCBfX3JldF84ODM7IFwKICBfX3JldF84ODMgPSB2Zm1sYWxfbG93X2YxNihfX3MwXzg4MywgX19zMV84ODMsIChmbG9hdDE2eDRfdCkge3ZnZXRxX2xhbmVfZjE2KF9fczJfODgzLCBfX3AzXzg4MyksIHZnZXRxX2xhbmVfZjE2KF9fczJfODgzLCBfX3AzXzg4MyksIHZnZXRxX2xhbmVfZjE2KF9fczJfODgzLCBfX3AzXzg4MyksIHZnZXRxX2xhbmVfZjE2KF9fczJfODgzLCBfX3AzXzg4Myl9KTsgXAogIF9fcmV0Xzg4MzsgXAp9KQojZWxzZQojZGVmaW5lIHZmbWxhbF9sYW5lcV9sb3dfZjE2KF9fcDBfODg0LCBfX3AxXzg4NCwgX19wMl84ODQsIF9fcDNfODg0KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJfdCBfX3MwXzg4NCA9IF9fcDBfODg0OyBcCiAgZmxvYXQxNng0X3QgX19zMV84ODQgPSBfX3AxXzg4NDsgXAogIGZsb2F0MTZ4OF90IF9fczJfODg0ID0gX19wMl84ODQ7IFwKICBmbG9hdDMyeDJfdCBfX3JldjBfODg0OyAgX19yZXYwXzg4NCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfODg0LCBfX3MwXzg4NCwgMSwgMCk7IFwKICBmbG9hdDE2eDRfdCBfX3JldjFfODg0OyAgX19yZXYxXzg4NCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfODg0LCBfX3MxXzg4NCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2eDhfdCBfX3JldjJfODg0OyAgX19yZXYyXzg4NCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfODg0LCBfX3MyXzg4NCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDMyeDJfdCBfX3JldF84ODQ7IFwKICBfX3JldF84ODQgPSBfX25vc3dhcF92Zm1sYWxfbG93X2YxNihfX3JldjBfODg0LCBfX3JldjFfODg0LCAoZmxvYXQxNng0X3QpIHtfX25vc3dhcF92Z2V0cV9sYW5lX2YxNihfX3JldjJfODg0LCBfX3AzXzg4NCksIF9fbm9zd2FwX3ZnZXRxX2xhbmVfZjE2KF9fcmV2Ml84ODQsIF9fcDNfODg0KSwgX19ub3N3YXBfdmdldHFfbGFuZV9mMTYoX19yZXYyXzg4NCwgX19wM184ODQpLCBfX25vc3dhcF92Z2V0cV9sYW5lX2YxNihfX3JldjJfODg0LCBfX3AzXzg4NCl9KTsgXAogIF9fcmV0Xzg4NCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0Xzg4NCwgX19yZXRfODg0LCAxLCAwKTsgXAogIF9fcmV0Xzg4NDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZmbWxzbHFfbGFuZV9oaWdoX2YxNihfX3AwXzg4NSwgX19wMV84ODUsIF9fcDJfODg1LCBfX3AzXzg4NSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0X3QgX19zMF84ODUgPSBfX3AwXzg4NTsgXAogIGZsb2F0MTZ4OF90IF9fczFfODg1ID0gX19wMV84ODU7IFwKICBmbG9hdDE2eDRfdCBfX3MyXzg4NSA9IF9fcDJfODg1OyBcCiAgZmxvYXQzMng0X3QgX19yZXRfODg1OyBcCiAgX19yZXRfODg1ID0gdmZtbHNscV9oaWdoX2YxNihfX3MwXzg4NSwgX19zMV84ODUsIChmbG9hdDE2eDhfdCkge3ZnZXRfbGFuZV9mMTYoX19zMl84ODUsIF9fcDNfODg1KSwgdmdldF9sYW5lX2YxNihfX3MyXzg4NSwgX19wM184ODUpLCB2Z2V0X2xhbmVfZjE2KF9fczJfODg1LCBfX3AzXzg4NSksIHZnZXRfbGFuZV9mMTYoX19zMl84ODUsIF9fcDNfODg1KSwgdmdldF9sYW5lX2YxNihfX3MyXzg4NSwgX19wM184ODUpLCB2Z2V0X2xhbmVfZjE2KF9fczJfODg1LCBfX3AzXzg4NSksIHZnZXRfbGFuZV9mMTYoX19zMl84ODUsIF9fcDNfODg1KSwgdmdldF9sYW5lX2YxNihfX3MyXzg4NSwgX19wM184ODUpfSk7IFwKICBfX3JldF84ODU7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Zm1sc2xxX2xhbmVfaGlnaF9mMTYoX19wMF84ODYsIF9fcDFfODg2LCBfX3AyXzg4NiwgX19wM184ODYpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NF90IF9fczBfODg2ID0gX19wMF84ODY7IFwKICBmbG9hdDE2eDhfdCBfX3MxXzg4NiA9IF9fcDFfODg2OyBcCiAgZmxvYXQxNng0X3QgX19zMl84ODYgPSBfX3AyXzg4NjsgXAogIGZsb2F0MzJ4NF90IF9fcmV2MF84ODY7ICBfX3JldjBfODg2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF84ODYsIF9fczBfODg2LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4OF90IF9fcmV2MV84ODY7ICBfX3JldjFfODg2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV84ODYsIF9fczFfODg2LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4NF90IF9fcmV2Ml84ODY7ICBfX3JldjJfODg2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl84ODYsIF9fczJfODg2LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MzJ4NF90IF9fcmV0Xzg4NjsgXAogIF9fcmV0Xzg4NiA9IF9fbm9zd2FwX3ZmbWxzbHFfaGlnaF9mMTYoX19yZXYwXzg4NiwgX19yZXYxXzg4NiwgKGZsb2F0MTZ4OF90KSB7X19ub3N3YXBfdmdldF9sYW5lX2YxNihfX3JldjJfODg2LCBfX3AzXzg4NiksIF9fbm9zd2FwX3ZnZXRfbGFuZV9mMTYoX19yZXYyXzg4NiwgX19wM184ODYpLCBfX25vc3dhcF92Z2V0X2xhbmVfZjE2KF9fcmV2Ml84ODYsIF9fcDNfODg2KSwgX19ub3N3YXBfdmdldF9sYW5lX2YxNihfX3JldjJfODg2LCBfX3AzXzg4NiksIF9fbm9zd2FwX3ZnZXRfbGFuZV9mMTYoX19yZXYyXzg4NiwgX19wM184ODYpLCBfX25vc3dhcF92Z2V0X2xhbmVfZjE2KF9fcmV2Ml84ODYsIF9fcDNfODg2KSwgX19ub3N3YXBfdmdldF9sYW5lX2YxNihfX3JldjJfODg2LCBfX3AzXzg4NiksIF9fbm9zd2FwX3ZnZXRfbGFuZV9mMTYoX19yZXYyXzg4NiwgX19wM184ODYpfSk7IFwKICBfX3JldF84ODYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF84ODYsIF9fcmV0Xzg4NiwgMywgMiwgMSwgMCk7IFwKICBfX3JldF84ODY7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Zm1sc2xfbGFuZV9oaWdoX2YxNihfX3AwXzg4NywgX19wMV84ODcsIF9fcDJfODg3LCBfX3AzXzg4NykgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMngyX3QgX19zMF84ODcgPSBfX3AwXzg4NzsgXAogIGZsb2F0MTZ4NF90IF9fczFfODg3ID0gX19wMV84ODc7IFwKICBmbG9hdDE2eDRfdCBfX3MyXzg4NyA9IF9fcDJfODg3OyBcCiAgZmxvYXQzMngyX3QgX19yZXRfODg3OyBcCiAgX19yZXRfODg3ID0gdmZtbHNsX2hpZ2hfZjE2KF9fczBfODg3LCBfX3MxXzg4NywgKGZsb2F0MTZ4NF90KSB7dmdldF9sYW5lX2YxNihfX3MyXzg4NywgX19wM184ODcpLCB2Z2V0X2xhbmVfZjE2KF9fczJfODg3LCBfX3AzXzg4NyksIHZnZXRfbGFuZV9mMTYoX19zMl84ODcsIF9fcDNfODg3KSwgdmdldF9sYW5lX2YxNihfX3MyXzg4NywgX19wM184ODcpfSk7IFwKICBfX3JldF84ODc7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Zm1sc2xfbGFuZV9oaWdoX2YxNihfX3AwXzg4OCwgX19wMV84ODgsIF9fcDJfODg4LCBfX3AzXzg4OCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMngyX3QgX19zMF84ODggPSBfX3AwXzg4ODsgXAogIGZsb2F0MTZ4NF90IF9fczFfODg4ID0gX19wMV84ODg7IFwKICBmbG9hdDE2eDRfdCBfX3MyXzg4OCA9IF9fcDJfODg4OyBcCiAgZmxvYXQzMngyX3QgX19yZXYwXzg4ODsgIF9fcmV2MF84ODggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzg4OCwgX19zMF84ODgsIDEsIDApOyBcCiAgZmxvYXQxNng0X3QgX19yZXYxXzg4ODsgIF9fcmV2MV84ODggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzg4OCwgX19zMV84ODgsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng0X3QgX19yZXYyXzg4ODsgIF9fcmV2Ml84ODggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzg4OCwgX19zMl84ODgsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQzMngyX3QgX19yZXRfODg4OyBcCiAgX19yZXRfODg4ID0gX19ub3N3YXBfdmZtbHNsX2hpZ2hfZjE2KF9fcmV2MF84ODgsIF9fcmV2MV84ODgsIChmbG9hdDE2eDRfdCkge19fbm9zd2FwX3ZnZXRfbGFuZV9mMTYoX19yZXYyXzg4OCwgX19wM184ODgpLCBfX25vc3dhcF92Z2V0X2xhbmVfZjE2KF9fcmV2Ml84ODgsIF9fcDNfODg4KSwgX19ub3N3YXBfdmdldF9sYW5lX2YxNihfX3JldjJfODg4LCBfX3AzXzg4OCksIF9fbm9zd2FwX3ZnZXRfbGFuZV9mMTYoX19yZXYyXzg4OCwgX19wM184ODgpfSk7IFwKICBfX3JldF84ODggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF84ODgsIF9fcmV0Xzg4OCwgMSwgMCk7IFwKICBfX3JldF84ODg7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Zm1sc2xxX2xhbmVfbG93X2YxNihfX3AwXzg4OSwgX19wMV84ODksIF9fcDJfODg5LCBfX3AzXzg4OSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMng0X3QgX19zMF84ODkgPSBfX3AwXzg4OTsgXAogIGZsb2F0MTZ4OF90IF9fczFfODg5ID0gX19wMV84ODk7IFwKICBmbG9hdDE2eDRfdCBfX3MyXzg4OSA9IF9fcDJfODg5OyBcCiAgZmxvYXQzMng0X3QgX19yZXRfODg5OyBcCiAgX19yZXRfODg5ID0gdmZtbHNscV9sb3dfZjE2KF9fczBfODg5LCBfX3MxXzg4OSwgKGZsb2F0MTZ4OF90KSB7dmdldF9sYW5lX2YxNihfX3MyXzg4OSwgX19wM184ODkpLCB2Z2V0X2xhbmVfZjE2KF9fczJfODg5LCBfX3AzXzg4OSksIHZnZXRfbGFuZV9mMTYoX19zMl84ODksIF9fcDNfODg5KSwgdmdldF9sYW5lX2YxNihfX3MyXzg4OSwgX19wM184ODkpLCB2Z2V0X2xhbmVfZjE2KF9fczJfODg5LCBfX3AzXzg4OSksIHZnZXRfbGFuZV9mMTYoX19zMl84ODksIF9fcDNfODg5KSwgdmdldF9sYW5lX2YxNihfX3MyXzg4OSwgX19wM184ODkpLCB2Z2V0X2xhbmVfZjE2KF9fczJfODg5LCBfX3AzXzg4OSl9KTsgXAogIF9fcmV0Xzg4OTsgXAp9KQojZWxzZQojZGVmaW5lIHZmbWxzbHFfbGFuZV9sb3dfZjE2KF9fcDBfODkwLCBfX3AxXzg5MCwgX19wMl84OTAsIF9fcDNfODkwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDRfdCBfX3MwXzg5MCA9IF9fcDBfODkwOyBcCiAgZmxvYXQxNng4X3QgX19zMV84OTAgPSBfX3AxXzg5MDsgXAogIGZsb2F0MTZ4NF90IF9fczJfODkwID0gX19wMl84OTA7IFwKICBmbG9hdDMyeDRfdCBfX3JldjBfODkwOyAgX19yZXYwXzg5MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfODkwLCBfX3MwXzg5MCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2eDhfdCBfX3JldjFfODkwOyAgX19yZXYxXzg5MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfODkwLCBfX3MxXzg5MCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2eDRfdCBfX3JldjJfODkwOyAgX19yZXYyXzg5MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfODkwLCBfX3MyXzg5MCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDMyeDRfdCBfX3JldF84OTA7IFwKICBfX3JldF84OTAgPSBfX25vc3dhcF92Zm1sc2xxX2xvd19mMTYoX19yZXYwXzg5MCwgX19yZXYxXzg5MCwgKGZsb2F0MTZ4OF90KSB7X19ub3N3YXBfdmdldF9sYW5lX2YxNihfX3JldjJfODkwLCBfX3AzXzg5MCksIF9fbm9zd2FwX3ZnZXRfbGFuZV9mMTYoX19yZXYyXzg5MCwgX19wM184OTApLCBfX25vc3dhcF92Z2V0X2xhbmVfZjE2KF9fcmV2Ml84OTAsIF9fcDNfODkwKSwgX19ub3N3YXBfdmdldF9sYW5lX2YxNihfX3JldjJfODkwLCBfX3AzXzg5MCksIF9fbm9zd2FwX3ZnZXRfbGFuZV9mMTYoX19yZXYyXzg5MCwgX19wM184OTApLCBfX25vc3dhcF92Z2V0X2xhbmVfZjE2KF9fcmV2Ml84OTAsIF9fcDNfODkwKSwgX19ub3N3YXBfdmdldF9sYW5lX2YxNihfX3JldjJfODkwLCBfX3AzXzg5MCksIF9fbm9zd2FwX3ZnZXRfbGFuZV9mMTYoX19yZXYyXzg5MCwgX19wM184OTApfSk7IFwKICBfX3JldF84OTAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF84OTAsIF9fcmV0Xzg5MCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF84OTA7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Zm1sc2xfbGFuZV9sb3dfZjE2KF9fcDBfODkxLCBfX3AxXzg5MSwgX19wMl84OTEsIF9fcDNfODkxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDJfdCBfX3MwXzg5MSA9IF9fcDBfODkxOyBcCiAgZmxvYXQxNng0X3QgX19zMV84OTEgPSBfX3AxXzg5MTsgXAogIGZsb2F0MTZ4NF90IF9fczJfODkxID0gX19wMl84OTE7IFwKICBmbG9hdDMyeDJfdCBfX3JldF84OTE7IFwKICBfX3JldF84OTEgPSB2Zm1sc2xfbG93X2YxNihfX3MwXzg5MSwgX19zMV84OTEsIChmbG9hdDE2eDRfdCkge3ZnZXRfbGFuZV9mMTYoX19zMl84OTEsIF9fcDNfODkxKSwgdmdldF9sYW5lX2YxNihfX3MyXzg5MSwgX19wM184OTEpLCB2Z2V0X2xhbmVfZjE2KF9fczJfODkxLCBfX3AzXzg5MSksIHZnZXRfbGFuZV9mMTYoX19zMl84OTEsIF9fcDNfODkxKX0pOyBcCiAgX19yZXRfODkxOyBcCn0pCiNlbHNlCiNkZWZpbmUgdmZtbHNsX2xhbmVfbG93X2YxNihfX3AwXzg5MiwgX19wMV84OTIsIF9fcDJfODkyLCBfX3AzXzg5MikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMngyX3QgX19zMF84OTIgPSBfX3AwXzg5MjsgXAogIGZsb2F0MTZ4NF90IF9fczFfODkyID0gX19wMV84OTI7IFwKICBmbG9hdDE2eDRfdCBfX3MyXzg5MiA9IF9fcDJfODkyOyBcCiAgZmxvYXQzMngyX3QgX19yZXYwXzg5MjsgIF9fcmV2MF84OTIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzg5MiwgX19zMF84OTIsIDEsIDApOyBcCiAgZmxvYXQxNng0X3QgX19yZXYxXzg5MjsgIF9fcmV2MV84OTIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzg5MiwgX19zMV84OTIsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng0X3QgX19yZXYyXzg5MjsgIF9fcmV2Ml84OTIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzg5MiwgX19zMl84OTIsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQzMngyX3QgX19yZXRfODkyOyBcCiAgX19yZXRfODkyID0gX19ub3N3YXBfdmZtbHNsX2xvd19mMTYoX19yZXYwXzg5MiwgX19yZXYxXzg5MiwgKGZsb2F0MTZ4NF90KSB7X19ub3N3YXBfdmdldF9sYW5lX2YxNihfX3JldjJfODkyLCBfX3AzXzg5MiksIF9fbm9zd2FwX3ZnZXRfbGFuZV9mMTYoX19yZXYyXzg5MiwgX19wM184OTIpLCBfX25vc3dhcF92Z2V0X2xhbmVfZjE2KF9fcmV2Ml84OTIsIF9fcDNfODkyKSwgX19ub3N3YXBfdmdldF9sYW5lX2YxNihfX3JldjJfODkyLCBfX3AzXzg5Mil9KTsgXAogIF9fcmV0Xzg5MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0Xzg5MiwgX19yZXRfODkyLCAxLCAwKTsgXAogIF9fcmV0Xzg5MjsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZmbWxzbHFfbGFuZXFfaGlnaF9mMTYoX19wMF84OTMsIF9fcDFfODkzLCBfX3AyXzg5MywgX19wM184OTMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NF90IF9fczBfODkzID0gX19wMF84OTM7IFwKICBmbG9hdDE2eDhfdCBfX3MxXzg5MyA9IF9fcDFfODkzOyBcCiAgZmxvYXQxNng4X3QgX19zMl84OTMgPSBfX3AyXzg5MzsgXAogIGZsb2F0MzJ4NF90IF9fcmV0Xzg5MzsgXAogIF9fcmV0Xzg5MyA9IHZmbWxzbHFfaGlnaF9mMTYoX19zMF84OTMsIF9fczFfODkzLCAoZmxvYXQxNng4X3QpIHt2Z2V0cV9sYW5lX2YxNihfX3MyXzg5MywgX19wM184OTMpLCB2Z2V0cV9sYW5lX2YxNihfX3MyXzg5MywgX19wM184OTMpLCB2Z2V0cV9sYW5lX2YxNihfX3MyXzg5MywgX19wM184OTMpLCB2Z2V0cV9sYW5lX2YxNihfX3MyXzg5MywgX19wM184OTMpLCB2Z2V0cV9sYW5lX2YxNihfX3MyXzg5MywgX19wM184OTMpLCB2Z2V0cV9sYW5lX2YxNihfX3MyXzg5MywgX19wM184OTMpLCB2Z2V0cV9sYW5lX2YxNihfX3MyXzg5MywgX19wM184OTMpLCB2Z2V0cV9sYW5lX2YxNihfX3MyXzg5MywgX19wM184OTMpfSk7IFwKICBfX3JldF84OTM7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Zm1sc2xxX2xhbmVxX2hpZ2hfZjE2KF9fcDBfODk0LCBfX3AxXzg5NCwgX19wMl84OTQsIF9fcDNfODk0KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDRfdCBfX3MwXzg5NCA9IF9fcDBfODk0OyBcCiAgZmxvYXQxNng4X3QgX19zMV84OTQgPSBfX3AxXzg5NDsgXAogIGZsb2F0MTZ4OF90IF9fczJfODk0ID0gX19wMl84OTQ7IFwKICBmbG9hdDMyeDRfdCBfX3JldjBfODk0OyAgX19yZXYwXzg5NCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfODk0LCBfX3MwXzg5NCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2eDhfdCBfX3JldjFfODk0OyAgX19yZXYxXzg5NCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfODk0LCBfX3MxXzg5NCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2eDhfdCBfX3JldjJfODk0OyAgX19yZXYyXzg5NCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfODk0LCBfX3MyXzg5NCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDMyeDRfdCBfX3JldF84OTQ7IFwKICBfX3JldF84OTQgPSBfX25vc3dhcF92Zm1sc2xxX2hpZ2hfZjE2KF9fcmV2MF84OTQsIF9fcmV2MV84OTQsIChmbG9hdDE2eDhfdCkge19fbm9zd2FwX3ZnZXRxX2xhbmVfZjE2KF9fcmV2Ml84OTQsIF9fcDNfODk0KSwgX19ub3N3YXBfdmdldHFfbGFuZV9mMTYoX19yZXYyXzg5NCwgX19wM184OTQpLCBfX25vc3dhcF92Z2V0cV9sYW5lX2YxNihfX3JldjJfODk0LCBfX3AzXzg5NCksIF9fbm9zd2FwX3ZnZXRxX2xhbmVfZjE2KF9fcmV2Ml84OTQsIF9fcDNfODk0KSwgX19ub3N3YXBfdmdldHFfbGFuZV9mMTYoX19yZXYyXzg5NCwgX19wM184OTQpLCBfX25vc3dhcF92Z2V0cV9sYW5lX2YxNihfX3JldjJfODk0LCBfX3AzXzg5NCksIF9fbm9zd2FwX3ZnZXRxX2xhbmVfZjE2KF9fcmV2Ml84OTQsIF9fcDNfODk0KSwgX19ub3N3YXBfdmdldHFfbGFuZV9mMTYoX19yZXYyXzg5NCwgX19wM184OTQpfSk7IFwKICBfX3JldF84OTQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF84OTQsIF9fcmV0Xzg5NCwgMywgMiwgMSwgMCk7IFwKICBfX3JldF84OTQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Zm1sc2xfbGFuZXFfaGlnaF9mMTYoX19wMF84OTUsIF9fcDFfODk1LCBfX3AyXzg5NSwgX19wM184OTUpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4Ml90IF9fczBfODk1ID0gX19wMF84OTU7IFwKICBmbG9hdDE2eDRfdCBfX3MxXzg5NSA9IF9fcDFfODk1OyBcCiAgZmxvYXQxNng4X3QgX19zMl84OTUgPSBfX3AyXzg5NTsgXAogIGZsb2F0MzJ4Ml90IF9fcmV0Xzg5NTsgXAogIF9fcmV0Xzg5NSA9IHZmbWxzbF9oaWdoX2YxNihfX3MwXzg5NSwgX19zMV84OTUsIChmbG9hdDE2eDRfdCkge3ZnZXRxX2xhbmVfZjE2KF9fczJfODk1LCBfX3AzXzg5NSksIHZnZXRxX2xhbmVfZjE2KF9fczJfODk1LCBfX3AzXzg5NSksIHZnZXRxX2xhbmVfZjE2KF9fczJfODk1LCBfX3AzXzg5NSksIHZnZXRxX2xhbmVfZjE2KF9fczJfODk1LCBfX3AzXzg5NSl9KTsgXAogIF9fcmV0Xzg5NTsgXAp9KQojZWxzZQojZGVmaW5lIHZmbWxzbF9sYW5lcV9oaWdoX2YxNihfX3AwXzg5NiwgX19wMV84OTYsIF9fcDJfODk2LCBfX3AzXzg5NikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQzMngyX3QgX19zMF84OTYgPSBfX3AwXzg5NjsgXAogIGZsb2F0MTZ4NF90IF9fczFfODk2ID0gX19wMV84OTY7IFwKICBmbG9hdDE2eDhfdCBfX3MyXzg5NiA9IF9fcDJfODk2OyBcCiAgZmxvYXQzMngyX3QgX19yZXYwXzg5NjsgIF9fcmV2MF84OTYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzg5NiwgX19zMF84OTYsIDEsIDApOyBcCiAgZmxvYXQxNng0X3QgX19yZXYxXzg5NjsgIF9fcmV2MV84OTYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzg5NiwgX19zMV84OTYsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNng4X3QgX19yZXYyXzg5NjsgIF9fcmV2Ml84OTYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzg5NiwgX19zMl84OTYsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQzMngyX3QgX19yZXRfODk2OyBcCiAgX19yZXRfODk2ID0gX19ub3N3YXBfdmZtbHNsX2hpZ2hfZjE2KF9fcmV2MF84OTYsIF9fcmV2MV84OTYsIChmbG9hdDE2eDRfdCkge19fbm9zd2FwX3ZnZXRxX2xhbmVfZjE2KF9fcmV2Ml84OTYsIF9fcDNfODk2KSwgX19ub3N3YXBfdmdldHFfbGFuZV9mMTYoX19yZXYyXzg5NiwgX19wM184OTYpLCBfX25vc3dhcF92Z2V0cV9sYW5lX2YxNihfX3JldjJfODk2LCBfX3AzXzg5NiksIF9fbm9zd2FwX3ZnZXRxX2xhbmVfZjE2KF9fcmV2Ml84OTYsIF9fcDNfODk2KX0pOyBcCiAgX19yZXRfODk2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfODk2LCBfX3JldF84OTYsIDEsIDApOyBcCiAgX19yZXRfODk2OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmZtbHNscV9sYW5lcV9sb3dfZjE2KF9fcDBfODk3LCBfX3AxXzg5NywgX19wMl84OTcsIF9fcDNfODk3KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDMyeDRfdCBfX3MwXzg5NyA9IF9fcDBfODk3OyBcCiAgZmxvYXQxNng4X3QgX19zMV84OTcgPSBfX3AxXzg5NzsgXAogIGZsb2F0MTZ4OF90IF9fczJfODk3ID0gX19wMl84OTc7IFwKICBmbG9hdDMyeDRfdCBfX3JldF84OTc7IFwKICBfX3JldF84OTcgPSB2Zm1sc2xxX2xvd19mMTYoX19zMF84OTcsIF9fczFfODk3LCAoZmxvYXQxNng4X3QpIHt2Z2V0cV9sYW5lX2YxNihfX3MyXzg5NywgX19wM184OTcpLCB2Z2V0cV9sYW5lX2YxNihfX3MyXzg5NywgX19wM184OTcpLCB2Z2V0cV9sYW5lX2YxNihfX3MyXzg5NywgX19wM184OTcpLCB2Z2V0cV9sYW5lX2YxNihfX3MyXzg5NywgX19wM184OTcpLCB2Z2V0cV9sYW5lX2YxNihfX3MyXzg5NywgX19wM184OTcpLCB2Z2V0cV9sYW5lX2YxNihfX3MyXzg5NywgX19wM184OTcpLCB2Z2V0cV9sYW5lX2YxNihfX3MyXzg5NywgX19wM184OTcpLCB2Z2V0cV9sYW5lX2YxNihfX3MyXzg5NywgX19wM184OTcpfSk7IFwKICBfX3JldF84OTc7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Zm1sc2xxX2xhbmVxX2xvd19mMTYoX19wMF84OTgsIF9fcDFfODk4LCBfX3AyXzg5OCwgX19wM184OTgpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4NF90IF9fczBfODk4ID0gX19wMF84OTg7IFwKICBmbG9hdDE2eDhfdCBfX3MxXzg5OCA9IF9fcDFfODk4OyBcCiAgZmxvYXQxNng4X3QgX19zMl84OTggPSBfX3AyXzg5ODsgXAogIGZsb2F0MzJ4NF90IF9fcmV2MF84OTg7ICBfX3JldjBfODk4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF84OTgsIF9fczBfODk4LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4OF90IF9fcmV2MV84OTg7ICBfX3JldjFfODk4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV84OTgsIF9fczFfODk4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4OF90IF9fcmV2Ml84OTg7ICBfX3JldjJfODk4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl84OTgsIF9fczJfODk4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MzJ4NF90IF9fcmV0Xzg5ODsgXAogIF9fcmV0Xzg5OCA9IF9fbm9zd2FwX3ZmbWxzbHFfbG93X2YxNihfX3JldjBfODk4LCBfX3JldjFfODk4LCAoZmxvYXQxNng4X3QpIHtfX25vc3dhcF92Z2V0cV9sYW5lX2YxNihfX3JldjJfODk4LCBfX3AzXzg5OCksIF9fbm9zd2FwX3ZnZXRxX2xhbmVfZjE2KF9fcmV2Ml84OTgsIF9fcDNfODk4KSwgX19ub3N3YXBfdmdldHFfbGFuZV9mMTYoX19yZXYyXzg5OCwgX19wM184OTgpLCBfX25vc3dhcF92Z2V0cV9sYW5lX2YxNihfX3JldjJfODk4LCBfX3AzXzg5OCksIF9fbm9zd2FwX3ZnZXRxX2xhbmVfZjE2KF9fcmV2Ml84OTgsIF9fcDNfODk4KSwgX19ub3N3YXBfdmdldHFfbGFuZV9mMTYoX19yZXYyXzg5OCwgX19wM184OTgpLCBfX25vc3dhcF92Z2V0cV9sYW5lX2YxNihfX3JldjJfODk4LCBfX3AzXzg5OCksIF9fbm9zd2FwX3ZnZXRxX2xhbmVfZjE2KF9fcmV2Ml84OTgsIF9fcDNfODk4KX0pOyBcCiAgX19yZXRfODk4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfODk4LCBfX3JldF84OTgsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfODk4OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmZtbHNsX2xhbmVxX2xvd19mMTYoX19wMF84OTksIF9fcDFfODk5LCBfX3AyXzg5OSwgX19wM184OTkpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4Ml90IF9fczBfODk5ID0gX19wMF84OTk7IFwKICBmbG9hdDE2eDRfdCBfX3MxXzg5OSA9IF9fcDFfODk5OyBcCiAgZmxvYXQxNng4X3QgX19zMl84OTkgPSBfX3AyXzg5OTsgXAogIGZsb2F0MzJ4Ml90IF9fcmV0Xzg5OTsgXAogIF9fcmV0Xzg5OSA9IHZmbWxzbF9sb3dfZjE2KF9fczBfODk5LCBfX3MxXzg5OSwgKGZsb2F0MTZ4NF90KSB7dmdldHFfbGFuZV9mMTYoX19zMl84OTksIF9fcDNfODk5KSwgdmdldHFfbGFuZV9mMTYoX19zMl84OTksIF9fcDNfODk5KSwgdmdldHFfbGFuZV9mMTYoX19zMl84OTksIF9fcDNfODk5KSwgdmdldHFfbGFuZV9mMTYoX19zMl84OTksIF9fcDNfODk5KX0pOyBcCiAgX19yZXRfODk5OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmZtbHNsX2xhbmVxX2xvd19mMTYoX19wMF85MDAsIF9fcDFfOTAwLCBfX3AyXzkwMCwgX19wM185MDApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0MzJ4Ml90IF9fczBfOTAwID0gX19wMF85MDA7IFwKICBmbG9hdDE2eDRfdCBfX3MxXzkwMCA9IF9fcDFfOTAwOyBcCiAgZmxvYXQxNng4X3QgX19zMl85MDAgPSBfX3AyXzkwMDsgXAogIGZsb2F0MzJ4Ml90IF9fcmV2MF85MDA7ICBfX3JldjBfOTAwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF85MDAsIF9fczBfOTAwLCAxLCAwKTsgXAogIGZsb2F0MTZ4NF90IF9fcmV2MV85MDA7ICBfX3JldjFfOTAwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV85MDAsIF9fczFfOTAwLCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MTZ4OF90IF9fcmV2Ml85MDA7ICBfX3JldjJfOTAwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl85MDAsIF9fczJfOTAwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGZsb2F0MzJ4Ml90IF9fcmV0XzkwMDsgXAogIF9fcmV0XzkwMCA9IF9fbm9zd2FwX3ZmbWxzbF9sb3dfZjE2KF9fcmV2MF85MDAsIF9fcmV2MV85MDAsIChmbG9hdDE2eDRfdCkge19fbm9zd2FwX3ZnZXRxX2xhbmVfZjE2KF9fcmV2Ml85MDAsIF9fcDNfOTAwKSwgX19ub3N3YXBfdmdldHFfbGFuZV9mMTYoX19yZXYyXzkwMCwgX19wM185MDApLCBfX25vc3dhcF92Z2V0cV9sYW5lX2YxNihfX3JldjJfOTAwLCBfX3AzXzkwMCksIF9fbm9zd2FwX3ZnZXRxX2xhbmVfZjE2KF9fcmV2Ml85MDAsIF9fcDNfOTAwKX0pOyBcCiAgX19yZXRfOTAwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfOTAwLCBfX3JldF85MDAsIDEsIDApOyBcCiAgX19yZXRfOTAwOyBcCn0pCiNlbmRpZgoKI2VuZGlmCiNpZiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfRlAxNl9WRUNUT1JfQVJJVEhNRVRJQykgJiYgZGVmaW5lZChfX2FhcmNoNjRfXykKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdm11bGhfbGFuZV9mMTYoX19wMF85MDEsIF9fcDFfOTAxLCBfX3AyXzkwMSkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNl90IF9fczBfOTAxID0gX19wMF85MDE7IFwKICBmbG9hdDE2eDRfdCBfX3MxXzkwMSA9IF9fcDFfOTAxOyBcCiAgZmxvYXQxNl90IF9fcmV0XzkwMTsgXAogIF9fcmV0XzkwMSA9IF9fczBfOTAxICogdmdldF9sYW5lX2YxNihfX3MxXzkwMSwgX19wMl85MDEpOyBcCiAgX19yZXRfOTAxOyBcCn0pCiNlbHNlCiNkZWZpbmUgdm11bGhfbGFuZV9mMTYoX19wMF85MDIsIF9fcDFfOTAyLCBfX3AyXzkwMikgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNl90IF9fczBfOTAyID0gX19wMF85MDI7IFwKICBmbG9hdDE2eDRfdCBfX3MxXzkwMiA9IF9fcDFfOTAyOyBcCiAgZmxvYXQxNng0X3QgX19yZXYxXzkwMjsgIF9fcmV2MV85MDIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzkwMiwgX19zMV85MDIsIDMsIDIsIDEsIDApOyBcCiAgZmxvYXQxNl90IF9fcmV0XzkwMjsgXAogIF9fcmV0XzkwMiA9IF9fczBfOTAyICogX19ub3N3YXBfdmdldF9sYW5lX2YxNihfX3JldjFfOTAyLCBfX3AyXzkwMik7IFwKICBfX3JldF85MDI7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2bXVsaF9sYW5lcV9mMTYoX19wMF85MDMsIF9fcDFfOTAzLCBfX3AyXzkwMykgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQxNl90IF9fczBfOTAzID0gX19wMF85MDM7IFwKICBmbG9hdDE2eDhfdCBfX3MxXzkwMyA9IF9fcDFfOTAzOyBcCiAgZmxvYXQxNl90IF9fcmV0XzkwMzsgXAogIF9fcmV0XzkwMyA9IF9fczBfOTAzICogdmdldHFfbGFuZV9mMTYoX19zMV85MDMsIF9fcDJfOTAzKTsgXAogIF9fcmV0XzkwMzsgXAp9KQojZWxzZQojZGVmaW5lIHZtdWxoX2xhbmVxX2YxNihfX3AwXzkwNCwgX19wMV85MDQsIF9fcDJfOTA0KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDE2X3QgX19zMF85MDQgPSBfX3AwXzkwNDsgXAogIGZsb2F0MTZ4OF90IF9fczFfOTA0ID0gX19wMV85MDQ7IFwKICBmbG9hdDE2eDhfdCBfX3JldjFfOTA0OyAgX19yZXYxXzkwNCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfOTA0LCBfX3MxXzkwNCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBmbG9hdDE2X3QgX19yZXRfOTA0OyBcCiAgX19yZXRfOTA0ID0gX19zMF85MDQgKiBfX25vc3dhcF92Z2V0cV9sYW5lX2YxNihfX3JldjFfOTA0LCBfX3AyXzkwNCk7IFwKICBfX3JldF85MDQ7IFwKfSkKI2VuZGlmCgojZW5kaWYKI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9NQVRNVUxfSU5UOCkKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN1ZG90cV9sYW5lX3MzMihfX3AwXzkwNSwgX19wMV85MDUsIF9fcDJfOTA1LCBfX3AzXzkwNSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczBfOTA1ID0gX19wMF85MDU7IFwKICBpbnQ4eDE2X3QgX19zMV85MDUgPSBfX3AxXzkwNTsgXAogIHVpbnQ4eDhfdCBfX3MyXzkwNSA9IF9fcDJfOTA1OyBcCiAgaW50MzJ4NF90IF9fcmV0XzkwNTsgXAp1aW50OHg4X3QgX19yZWludF85MDUgPSBfX3MyXzkwNTsgXAogIF9fcmV0XzkwNSA9IHZ1c2RvdHFfczMyKF9fczBfOTA1LCAodWludDh4MTZfdCkoc3BsYXRxX2xhbmVfczMyKCooaW50MzJ4Ml90ICopICZfX3JlaW50XzkwNSwgX19wM185MDUpKSwgX19zMV85MDUpOyBcCiAgX19yZXRfOTA1OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnN1ZG90cV9sYW5lX3MzMihfX3AwXzkwNiwgX19wMV85MDYsIF9fcDJfOTA2LCBfX3AzXzkwNikgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4NF90IF9fczBfOTA2ID0gX19wMF85MDY7IFwKICBpbnQ4eDE2X3QgX19zMV85MDYgPSBfX3AxXzkwNjsgXAogIHVpbnQ4eDhfdCBfX3MyXzkwNiA9IF9fcDJfOTA2OyBcCiAgaW50MzJ4NF90IF9fcmV2MF85MDY7ICBfX3JldjBfOTA2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF85MDYsIF9fczBfOTA2LCAzLCAyLCAxLCAwKTsgXAogIGludDh4MTZfdCBfX3JldjFfOTA2OyAgX19yZXYxXzkwNiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczFfOTA2LCBfX3MxXzkwNiwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICB1aW50OHg4X3QgX19yZXYyXzkwNjsgIF9fcmV2Ml85MDYgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzkwNiwgX19zMl85MDYsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50MzJ4NF90IF9fcmV0XzkwNjsgXAp1aW50OHg4X3QgX19yZWludF85MDYgPSBfX3JldjJfOTA2OyBcCiAgX19yZXRfOTA2ID0gX19ub3N3YXBfdnVzZG90cV9zMzIoX19yZXYwXzkwNiwgKHVpbnQ4eDE2X3QpKF9fbm9zd2FwX3NwbGF0cV9sYW5lX3MzMigqKGludDMyeDJfdCAqKSAmX19yZWludF85MDYsIF9fcDNfOTA2KSksIF9fcmV2MV85MDYpOyBcCiAgX19yZXRfOTA2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfOTA2LCBfX3JldF85MDYsIDMsIDIsIDEsIDApOyBcCiAgX19yZXRfOTA2OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnN1ZG90X2xhbmVfczMyKF9fcDBfOTA3LCBfX3AxXzkwNywgX19wMl85MDcsIF9fcDNfOTA3KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMngyX3QgX19zMF85MDcgPSBfX3AwXzkwNzsgXAogIGludDh4OF90IF9fczFfOTA3ID0gX19wMV85MDc7IFwKICB1aW50OHg4X3QgX19zMl85MDcgPSBfX3AyXzkwNzsgXAogIGludDMyeDJfdCBfX3JldF85MDc7IFwKdWludDh4OF90IF9fcmVpbnRfOTA3ID0gX19zMl85MDc7IFwKICBfX3JldF85MDcgPSB2dXNkb3RfczMyKF9fczBfOTA3LCAodWludDh4OF90KShzcGxhdF9sYW5lX3MzMigqKGludDMyeDJfdCAqKSAmX19yZWludF85MDcsIF9fcDNfOTA3KSksIF9fczFfOTA3KTsgXAogIF9fcmV0XzkwNzsgXAp9KQojZWxzZQojZGVmaW5lIHZzdWRvdF9sYW5lX3MzMihfX3AwXzkwOCwgX19wMV85MDgsIF9fcDJfOTA4LCBfX3AzXzkwOCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJ4Ml90IF9fczBfOTA4ID0gX19wMF85MDg7IFwKICBpbnQ4eDhfdCBfX3MxXzkwOCA9IF9fcDFfOTA4OyBcCiAgdWludDh4OF90IF9fczJfOTA4ID0gX19wMl85MDg7IFwKICBpbnQzMngyX3QgX19yZXYwXzkwODsgIF9fcmV2MF85MDggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzkwOCwgX19zMF85MDgsIDEsIDApOyBcCiAgaW50OHg4X3QgX19yZXYxXzkwODsgIF9fcmV2MV85MDggPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MxXzkwOCwgX19zMV85MDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgdWludDh4OF90IF9fcmV2Ml85MDg7ICBfX3JldjJfOTA4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl85MDgsIF9fczJfOTA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsgXAogIGludDMyeDJfdCBfX3JldF85MDg7IFwKdWludDh4OF90IF9fcmVpbnRfOTA4ID0gX19yZXYyXzkwODsgXAogIF9fcmV0XzkwOCA9IF9fbm9zd2FwX3Z1c2RvdF9zMzIoX19yZXYwXzkwOCwgKHVpbnQ4eDhfdCkoX19ub3N3YXBfc3BsYXRfbGFuZV9zMzIoKihpbnQzMngyX3QgKikgJl9fcmVpbnRfOTA4LCBfX3AzXzkwOCkpLCBfX3JldjFfOTA4KTsgXAogIF9fcmV0XzkwOCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzkwOCwgX19yZXRfOTA4LCAxLCAwKTsgXAogIF9fcmV0XzkwODsgXAp9KQojZW5kaWYKCiNlbmRpZgojaWYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX1FSRE1YKSAmJiBkZWZpbmVkKF9fYWFyY2g2NF9fKQpfX2FpIGludDMyX3QgdnFyZG1sYWhzX3MzMihpbnQzMl90IF9fcDAsIGludDMyX3QgX19wMSwgaW50MzJfdCBfX3AyKSB7CiAgaW50MzJfdCBfX3JldDsKICBfX3JldCA9IHZxYWRkc19zMzIoX19wMCwgdnFyZG11bGhzX3MzMihfX3AxLCBfX3AyKSk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MTZfdCB2cXJkbWxhaGhfczE2KGludDE2X3QgX19wMCwgaW50MTZfdCBfX3AxLCBpbnQxNl90IF9fcDIpIHsKICBpbnQxNl90IF9fcmV0OwogIF9fcmV0ID0gdnFhZGRoX3MxNihfX3AwLCB2cXJkbXVsaGhfczE2KF9fcDEsIF9fcDIpKTsKICByZXR1cm4gX19yZXQ7Cn0KI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFyZG1sYWhzX2xhbmVfczMyKF9fcDBfOTA5LCBfX3AxXzkwOSwgX19wMl85MDksIF9fcDNfOTA5KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMl90IF9fczBfOTA5ID0gX19wMF85MDk7IFwKICBpbnQzMl90IF9fczFfOTA5ID0gX19wMV85MDk7IFwKICBpbnQzMngyX3QgX19zMl85MDkgPSBfX3AyXzkwOTsgXAogIGludDMyX3QgX19yZXRfOTA5OyBcCiAgX19yZXRfOTA5ID0gdnFhZGRzX3MzMihfX3MwXzkwOSwgdnFyZG11bGhzX3MzMihfX3MxXzkwOSwgdmdldF9sYW5lX3MzMihfX3MyXzkwOSwgX19wM185MDkpKSk7IFwKICBfX3JldF85MDk7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cXJkbWxhaHNfbGFuZV9zMzIoX19wMF85MTAsIF9fcDFfOTEwLCBfX3AyXzkxMCwgX19wM185MTApIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyX3QgX19zMF85MTAgPSBfX3AwXzkxMDsgXAogIGludDMyX3QgX19zMV85MTAgPSBfX3AxXzkxMDsgXAogIGludDMyeDJfdCBfX3MyXzkxMCA9IF9fcDJfOTEwOyBcCiAgaW50MzJ4Ml90IF9fcmV2Ml85MTA7ICBfX3JldjJfOTEwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl85MTAsIF9fczJfOTEwLCAxLCAwKTsgXAogIGludDMyX3QgX19yZXRfOTEwOyBcCiAgX19yZXRfOTEwID0gdnFhZGRzX3MzMihfX3MwXzkxMCwgdnFyZG11bGhzX3MzMihfX3MxXzkxMCwgX19ub3N3YXBfdmdldF9sYW5lX3MzMihfX3JldjJfOTEwLCBfX3AzXzkxMCkpKTsgXAogIF9fcmV0XzkxMDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZxcmRtbGFoaF9sYW5lX3MxNihfX3AwXzkxMSwgX19wMV85MTEsIF9fcDJfOTExLCBfX3AzXzkxMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZfdCBfX3MwXzkxMSA9IF9fcDBfOTExOyBcCiAgaW50MTZfdCBfX3MxXzkxMSA9IF9fcDFfOTExOyBcCiAgaW50MTZ4NF90IF9fczJfOTExID0gX19wMl85MTE7IFwKICBpbnQxNl90IF9fcmV0XzkxMTsgXAogIF9fcmV0XzkxMSA9IHZxYWRkaF9zMTYoX19zMF85MTEsIHZxcmRtdWxoaF9zMTYoX19zMV85MTEsIHZnZXRfbGFuZV9zMTYoX19zMl85MTEsIF9fcDNfOTExKSkpOyBcCiAgX19yZXRfOTExOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFyZG1sYWhoX2xhbmVfczE2KF9fcDBfOTEyLCBfX3AxXzkxMiwgX19wMl85MTIsIF9fcDNfOTEyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNl90IF9fczBfOTEyID0gX19wMF85MTI7IFwKICBpbnQxNl90IF9fczFfOTEyID0gX19wMV85MTI7IFwKICBpbnQxNng0X3QgX19zMl85MTIgPSBfX3AyXzkxMjsgXAogIGludDE2eDRfdCBfX3JldjJfOTEyOyAgX19yZXYyXzkxMiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfOTEyLCBfX3MyXzkxMiwgMywgMiwgMSwgMCk7IFwKICBpbnQxNl90IF9fcmV0XzkxMjsgXAogIF9fcmV0XzkxMiA9IHZxYWRkaF9zMTYoX19zMF85MTIsIHZxcmRtdWxoaF9zMTYoX19zMV85MTIsIF9fbm9zd2FwX3ZnZXRfbGFuZV9zMTYoX19yZXYyXzkxMiwgX19wM185MTIpKSk7IFwKICBfX3JldF85MTI7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cXJkbWxhaHNfbGFuZXFfczMyKF9fcDBfOTEzLCBfX3AxXzkxMywgX19wMl85MTMsIF9fcDNfOTEzKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMl90IF9fczBfOTEzID0gX19wMF85MTM7IFwKICBpbnQzMl90IF9fczFfOTEzID0gX19wMV85MTM7IFwKICBpbnQzMng0X3QgX19zMl85MTMgPSBfX3AyXzkxMzsgXAogIGludDMyX3QgX19yZXRfOTEzOyBcCiAgX19yZXRfOTEzID0gdnFhZGRzX3MzMihfX3MwXzkxMywgdnFyZG11bGhzX3MzMihfX3MxXzkxMywgdmdldHFfbGFuZV9zMzIoX19zMl85MTMsIF9fcDNfOTEzKSkpOyBcCiAgX19yZXRfOTEzOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFyZG1sYWhzX2xhbmVxX3MzMihfX3AwXzkxNCwgX19wMV85MTQsIF9fcDJfOTE0LCBfX3AzXzkxNCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJfdCBfX3MwXzkxNCA9IF9fcDBfOTE0OyBcCiAgaW50MzJfdCBfX3MxXzkxNCA9IF9fcDFfOTE0OyBcCiAgaW50MzJ4NF90IF9fczJfOTE0ID0gX19wMl85MTQ7IFwKICBpbnQzMng0X3QgX19yZXYyXzkxNDsgIF9fcmV2Ml85MTQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzkxNCwgX19zMl85MTQsIDMsIDIsIDEsIDApOyBcCiAgaW50MzJfdCBfX3JldF85MTQ7IFwKICBfX3JldF85MTQgPSB2cWFkZHNfczMyKF9fczBfOTE0LCB2cXJkbXVsaHNfczMyKF9fczFfOTE0LCBfX25vc3dhcF92Z2V0cV9sYW5lX3MzMihfX3JldjJfOTE0LCBfX3AzXzkxNCkpKTsgXAogIF9fcmV0XzkxNDsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZxcmRtbGFoaF9sYW5lcV9zMTYoX19wMF85MTUsIF9fcDFfOTE1LCBfX3AyXzkxNSwgX19wM185MTUpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2X3QgX19zMF85MTUgPSBfX3AwXzkxNTsgXAogIGludDE2X3QgX19zMV85MTUgPSBfX3AxXzkxNTsgXAogIGludDE2eDhfdCBfX3MyXzkxNSA9IF9fcDJfOTE1OyBcCiAgaW50MTZfdCBfX3JldF85MTU7IFwKICBfX3JldF85MTUgPSB2cWFkZGhfczE2KF9fczBfOTE1LCB2cXJkbXVsaGhfczE2KF9fczFfOTE1LCB2Z2V0cV9sYW5lX3MxNihfX3MyXzkxNSwgX19wM185MTUpKSk7IFwKICBfX3JldF85MTU7IFwKfSkKI2Vsc2UKI2RlZmluZSB2cXJkbWxhaGhfbGFuZXFfczE2KF9fcDBfOTE2LCBfX3AxXzkxNiwgX19wMl85MTYsIF9fcDNfOTE2KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNl90IF9fczBfOTE2ID0gX19wMF85MTY7IFwKICBpbnQxNl90IF9fczFfOTE2ID0gX19wMV85MTY7IFwKICBpbnQxNng4X3QgX19zMl85MTYgPSBfX3AyXzkxNjsgXAogIGludDE2eDhfdCBfX3JldjJfOTE2OyAgX19yZXYyXzkxNiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfOTE2LCBfX3MyXzkxNiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7IFwKICBpbnQxNl90IF9fcmV0XzkxNjsgXAogIF9fcmV0XzkxNiA9IHZxYWRkaF9zMTYoX19zMF85MTYsIHZxcmRtdWxoaF9zMTYoX19zMV85MTYsIF9fbm9zd2FwX3ZnZXRxX2xhbmVfczE2KF9fcmV2Ml85MTYsIF9fcDNfOTE2KSkpOyBcCiAgX19yZXRfOTE2OyBcCn0pCiNlbmRpZgoKX19haSBpbnQzMl90IHZxcmRtbHNoc19zMzIoaW50MzJfdCBfX3AwLCBpbnQzMl90IF9fcDEsIGludDMyX3QgX19wMikgewogIGludDMyX3QgX19yZXQ7CiAgX19yZXQgPSB2cXN1YnNfczMyKF9fcDAsIHZxcmRtdWxoc19zMzIoX19wMSwgX19wMikpOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDE2X3QgdnFyZG1sc2hoX3MxNihpbnQxNl90IF9fcDAsIGludDE2X3QgX19wMSwgaW50MTZfdCBfX3AyKSB7CiAgaW50MTZfdCBfX3JldDsKICBfX3JldCA9IHZxc3ViaF9zMTYoX19wMCwgdnFyZG11bGhoX3MxNihfX3AxLCBfX3AyKSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZxcmRtbHNoc19sYW5lX3MzMihfX3AwXzkxNywgX19wMV85MTcsIF9fcDJfOTE3LCBfX3AzXzkxNykgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJfdCBfX3MwXzkxNyA9IF9fcDBfOTE3OyBcCiAgaW50MzJfdCBfX3MxXzkxNyA9IF9fcDFfOTE3OyBcCiAgaW50MzJ4Ml90IF9fczJfOTE3ID0gX19wMl85MTc7IFwKICBpbnQzMl90IF9fcmV0XzkxNzsgXAogIF9fcmV0XzkxNyA9IHZxc3Vic19zMzIoX19zMF85MTcsIHZxcmRtdWxoc19zMzIoX19zMV85MTcsIHZnZXRfbGFuZV9zMzIoX19zMl85MTcsIF9fcDNfOTE3KSkpOyBcCiAgX19yZXRfOTE3OyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFyZG1sc2hzX2xhbmVfczMyKF9fcDBfOTE4LCBfX3AxXzkxOCwgX19wMl85MTgsIF9fcDNfOTE4KSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQzMl90IF9fczBfOTE4ID0gX19wMF85MTg7IFwKICBpbnQzMl90IF9fczFfOTE4ID0gX19wMV85MTg7IFwKICBpbnQzMngyX3QgX19zMl85MTggPSBfX3AyXzkxODsgXAogIGludDMyeDJfdCBfX3JldjJfOTE4OyAgX19yZXYyXzkxOCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczJfOTE4LCBfX3MyXzkxOCwgMSwgMCk7IFwKICBpbnQzMl90IF9fcmV0XzkxODsgXAogIF9fcmV0XzkxOCA9IHZxc3Vic19zMzIoX19zMF85MTgsIHZxcmRtdWxoc19zMzIoX19zMV85MTgsIF9fbm9zd2FwX3ZnZXRfbGFuZV9zMzIoX19yZXYyXzkxOCwgX19wM185MTgpKSk7IFwKICBfX3JldF85MTg7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cXJkbWxzaGhfbGFuZV9zMTYoX19wMF85MTksIF9fcDFfOTE5LCBfX3AyXzkxOSwgX19wM185MTkpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDE2X3QgX19zMF85MTkgPSBfX3AwXzkxOTsgXAogIGludDE2X3QgX19zMV85MTkgPSBfX3AxXzkxOTsgXAogIGludDE2eDRfdCBfX3MyXzkxOSA9IF9fcDJfOTE5OyBcCiAgaW50MTZfdCBfX3JldF85MTk7IFwKICBfX3JldF85MTkgPSB2cXN1YmhfczE2KF9fczBfOTE5LCB2cXJkbXVsaGhfczE2KF9fczFfOTE5LCB2Z2V0X2xhbmVfczE2KF9fczJfOTE5LCBfX3AzXzkxOSkpKTsgXAogIF9fcmV0XzkxOTsgXAp9KQojZWxzZQojZGVmaW5lIHZxcmRtbHNoaF9sYW5lX3MxNihfX3AwXzkyMCwgX19wMV85MjAsIF9fcDJfOTIwLCBfX3AzXzkyMCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZfdCBfX3MwXzkyMCA9IF9fcDBfOTIwOyBcCiAgaW50MTZfdCBfX3MxXzkyMCA9IF9fcDFfOTIwOyBcCiAgaW50MTZ4NF90IF9fczJfOTIwID0gX19wMl85MjA7IFwKICBpbnQxNng0X3QgX19yZXYyXzkyMDsgIF9fcmV2Ml85MjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzkyMCwgX19zMl85MjAsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZfdCBfX3JldF85MjA7IFwKICBfX3JldF85MjAgPSB2cXN1YmhfczE2KF9fczBfOTIwLCB2cXJkbXVsaGhfczE2KF9fczFfOTIwLCBfX25vc3dhcF92Z2V0X2xhbmVfczE2KF9fcmV2Ml85MjAsIF9fcDNfOTIwKSkpOyBcCiAgX19yZXRfOTIwOyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdnFyZG1sc2hzX2xhbmVxX3MzMihfX3AwXzkyMSwgX19wMV85MjEsIF9fcDJfOTIxLCBfX3AzXzkyMSkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MzJfdCBfX3MwXzkyMSA9IF9fcDBfOTIxOyBcCiAgaW50MzJfdCBfX3MxXzkyMSA9IF9fcDFfOTIxOyBcCiAgaW50MzJ4NF90IF9fczJfOTIxID0gX19wMl85MjE7IFwKICBpbnQzMl90IF9fcmV0XzkyMTsgXAogIF9fcmV0XzkyMSA9IHZxc3Vic19zMzIoX19zMF85MjEsIHZxcmRtdWxoc19zMzIoX19zMV85MjEsIHZnZXRxX2xhbmVfczMyKF9fczJfOTIxLCBfX3AzXzkyMSkpKTsgXAogIF9fcmV0XzkyMTsgXAp9KQojZWxzZQojZGVmaW5lIHZxcmRtbHNoc19sYW5lcV9zMzIoX19wMF85MjIsIF9fcDFfOTIyLCBfX3AyXzkyMiwgX19wM185MjIpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGludDMyX3QgX19zMF85MjIgPSBfX3AwXzkyMjsgXAogIGludDMyX3QgX19zMV85MjIgPSBfX3AxXzkyMjsgXAogIGludDMyeDRfdCBfX3MyXzkyMiA9IF9fcDJfOTIyOyBcCiAgaW50MzJ4NF90IF9fcmV2Ml85MjI7ICBfX3JldjJfOTIyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl85MjIsIF9fczJfOTIyLCAzLCAyLCAxLCAwKTsgXAogIGludDMyX3QgX19yZXRfOTIyOyBcCiAgX19yZXRfOTIyID0gdnFzdWJzX3MzMihfX3MwXzkyMiwgdnFyZG11bGhzX3MzMihfX3MxXzkyMiwgX19ub3N3YXBfdmdldHFfbGFuZV9zMzIoX19yZXYyXzkyMiwgX19wM185MjIpKSk7IFwKICBfX3JldF85MjI7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2cXJkbWxzaGhfbGFuZXFfczE2KF9fcDBfOTIzLCBfX3AxXzkyMywgX19wMl85MjMsIF9fcDNfOTIzKSBfX2V4dGVuc2lvbl9fICh7IFwKICBpbnQxNl90IF9fczBfOTIzID0gX19wMF85MjM7IFwKICBpbnQxNl90IF9fczFfOTIzID0gX19wMV85MjM7IFwKICBpbnQxNng4X3QgX19zMl85MjMgPSBfX3AyXzkyMzsgXAogIGludDE2X3QgX19yZXRfOTIzOyBcCiAgX19yZXRfOTIzID0gdnFzdWJoX3MxNihfX3MwXzkyMywgdnFyZG11bGhoX3MxNihfX3MxXzkyMywgdmdldHFfbGFuZV9zMTYoX19zMl85MjMsIF9fcDNfOTIzKSkpOyBcCiAgX19yZXRfOTIzOyBcCn0pCiNlbHNlCiNkZWZpbmUgdnFyZG1sc2hoX2xhbmVxX3MxNihfX3AwXzkyNCwgX19wMV85MjQsIF9fcDJfOTI0LCBfX3AzXzkyNCkgX19leHRlbnNpb25fXyAoeyBcCiAgaW50MTZfdCBfX3MwXzkyNCA9IF9fcDBfOTI0OyBcCiAgaW50MTZfdCBfX3MxXzkyNCA9IF9fcDFfOTI0OyBcCiAgaW50MTZ4OF90IF9fczJfOTI0ID0gX19wMl85MjQ7IFwKICBpbnQxNng4X3QgX19yZXYyXzkyNDsgIF9fcmV2Ml85MjQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzkyNCwgX19zMl85MjQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOyBcCiAgaW50MTZfdCBfX3JldF85MjQ7IFwKICBfX3JldF85MjQgPSB2cXN1YmhfczE2KF9fczBfOTI0LCB2cXJkbXVsaGhfczE2KF9fczFfOTI0LCBfX25vc3dhcF92Z2V0cV9sYW5lX3MxNihfX3JldjJfOTI0LCBfX3AzXzkyNCkpKTsgXAogIF9fcmV0XzkyNDsgXAp9KQojZW5kaWYKCiNlbmRpZgojaWYgZGVmaW5lZChfX2FhcmNoNjRfXykKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDhfdCB2YWJkbF9oaWdoX3U4KHVpbnQ4eDE2X3QgX19wMCwgdWludDh4MTZfdCBfX3AxKSB7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IHZhYmRsX3U4KHZnZXRfaGlnaF91OChfX3AwKSwgdmdldF9oaWdoX3U4KF9fcDEpKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4OF90IHZhYmRsX2hpZ2hfdTgodWludDh4MTZfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEpIHsKICB1aW50OHgxNl90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3ZhYmRsX3U4KF9fbm9zd2FwX3ZnZXRfaGlnaF91OChfX3JldjApLCBfX25vc3dhcF92Z2V0X2hpZ2hfdTgoX19yZXYxKSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ2NHgyX3QgdmFiZGxfaGlnaF91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEpIHsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gdmFiZGxfdTMyKHZnZXRfaGlnaF91MzIoX19wMCksIHZnZXRfaGlnaF91MzIoX19wMSkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ2NHgyX3QgdmFiZGxfaGlnaF91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3ZhYmRsX3UzMihfX25vc3dhcF92Z2V0X2hpZ2hfdTMyKF9fcmV2MCksIF9fbm9zd2FwX3ZnZXRfaGlnaF91MzIoX19yZXYxKSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMng0X3QgdmFiZGxfaGlnaF91MTYodWludDE2eDhfdCBfX3AwLCB1aW50MTZ4OF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gdmFiZGxfdTE2KHZnZXRfaGlnaF91MTYoX19wMCksIHZnZXRfaGlnaF91MTYoX19wMSkpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMng0X3QgdmFiZGxfaGlnaF91MTYodWludDE2eDhfdCBfX3AwLCB1aW50MTZ4OF90IF9fcDEpIHsKICB1aW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3ZhYmRsX3UxNihfX25vc3dhcF92Z2V0X2hpZ2hfdTE2KF9fcmV2MCksIF9fbm9zd2FwX3ZnZXRfaGlnaF91MTYoX19yZXYxKSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDhfdCB2YWJkbF9oaWdoX3M4KGludDh4MTZfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IHZhYmRsX3M4KHZnZXRfaGlnaF9zOChfX3AwKSwgdmdldF9oaWdoX3M4KF9fcDEpKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng4X3QgdmFiZGxfaGlnaF9zOChpbnQ4eDE2X3QgX19wMCwgaW50OHgxNl90IF9fcDEpIHsKICBpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3ZhYmRsX3M4KF9fbm9zd2FwX3ZnZXRfaGlnaF9zOChfX3JldjApLCBfX25vc3dhcF92Z2V0X2hpZ2hfczgoX19yZXYxKSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDY0eDJfdCB2YWJkbF9oaWdoX3MzMihpbnQzMng0X3QgX19wMCwgaW50MzJ4NF90IF9fcDEpIHsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSB2YWJkbF9zMzIodmdldF9oaWdoX3MzMihfX3AwKSwgdmdldF9oaWdoX3MzMihfX3AxKSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50NjR4Ml90IHZhYmRsX2hpZ2hfczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdmFiZGxfczMyKF9fbm9zd2FwX3ZnZXRfaGlnaF9zMzIoX19yZXYwKSwgX19ub3N3YXBfdmdldF9oaWdoX3MzMihfX3JldjEpKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4NF90IHZhYmRsX2hpZ2hfczE2KGludDE2eDhfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IHZhYmRsX3MxNih2Z2V0X2hpZ2hfczE2KF9fcDApLCB2Z2V0X2hpZ2hfczE2KF9fcDEpKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMng0X3QgdmFiZGxfaGlnaF9zMTYoaW50MTZ4OF90IF9fcDAsIGludDE2eDhfdCBfX3AxKSB7CiAgaW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92YWJkbF9zMTYoX19ub3N3YXBfdmdldF9oaWdoX3MxNihfX3JldjApLCBfX25vc3dhcF92Z2V0X2hpZ2hfczE2KF9fcmV2MSkpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4OF90IHZhZGRsX2hpZ2hfdTgodWludDh4MTZfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEpIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gdm1vdmxfaGlnaF91OChfX3AwKSArIHZtb3ZsX2hpZ2hfdTgoX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDhfdCB2YWRkbF9oaWdoX3U4KHVpbnQ4eDE2X3QgX19wMCwgdWludDh4MTZfdCBfX3AxKSB7CiAgdWludDh4MTZfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92bW92bF9oaWdoX3U4KF9fcmV2MCkgKyBfX25vc3dhcF92bW92bF9oaWdoX3U4KF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ2NHgyX3QgdmFkZGxfaGlnaF91MzIodWludDMyeDRfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEpIHsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gdm1vdmxfaGlnaF91MzIoX19wMCkgKyB2bW92bF9oaWdoX3UzMihfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50NjR4Ml90IHZhZGRsX2hpZ2hfdTMyKHVpbnQzMng0X3QgX19wMCwgdWludDMyeDRfdCBfX3AxKSB7CiAgdWludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92bW92bF9oaWdoX3UzMihfX3JldjApICsgX19ub3N3YXBfdm1vdmxfaGlnaF91MzIoX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDRfdCB2YWRkbF9oaWdoX3UxNih1aW50MTZ4OF90IF9fcDAsIHVpbnQxNng4X3QgX19wMSkgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSB2bW92bF9oaWdoX3UxNihfX3AwKSArIHZtb3ZsX2hpZ2hfdTE2KF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMng0X3QgdmFkZGxfaGlnaF91MTYodWludDE2eDhfdCBfX3AwLCB1aW50MTZ4OF90IF9fcDEpIHsKICB1aW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3Ztb3ZsX2hpZ2hfdTE2KF9fcmV2MCkgKyBfX25vc3dhcF92bW92bF9oaWdoX3UxNihfX3JldjEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng4X3QgdmFkZGxfaGlnaF9zOChpbnQ4eDE2X3QgX19wMCwgaW50OHgxNl90IF9fcDEpIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSB2bW92bF9oaWdoX3M4KF9fcDApICsgdm1vdmxfaGlnaF9zOChfX3AxKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQxNng4X3QgdmFkZGxfaGlnaF9zOChpbnQ4eDE2X3QgX19wMCwgaW50OHgxNl90IF9fcDEpIHsKICBpbnQ4eDE2X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3Ztb3ZsX2hpZ2hfczgoX19yZXYwKSArIF9fbm9zd2FwX3Ztb3ZsX2hpZ2hfczgoX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50NjR4Ml90IHZhZGRsX2hpZ2hfczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IHZtb3ZsX2hpZ2hfczMyKF9fcDApICsgdm1vdmxfaGlnaF9zMzIoX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50NjR4Ml90IHZhZGRsX2hpZ2hfczMyKGludDMyeDRfdCBfX3AwLCBpbnQzMng0X3QgX19wMSkgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdm1vdmxfaGlnaF9zMzIoX19yZXYwKSArIF9fbm9zd2FwX3Ztb3ZsX2hpZ2hfczMyKF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDRfdCB2YWRkbF9oaWdoX3MxNihpbnQxNng4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEpIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSB2bW92bF9oaWdoX3MxNihfX3AwKSArIHZtb3ZsX2hpZ2hfczE2KF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDRfdCB2YWRkbF9oaWdoX3MxNihpbnQxNng4X3QgX19wMCwgaW50MTZ4OF90IF9fcDEpIHsKICBpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3Ztb3ZsX2hpZ2hfczE2KF9fcmV2MCkgKyBfX25vc3dhcF92bW92bF9oaWdoX3MxNihfX3JldjEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MTZ4OF90IHZhZGR3X2hpZ2hfdTgodWludDE2eDhfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEpIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCArIHZtb3ZsX2hpZ2hfdTgoX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDE2eDhfdCB2YWRkd19oaWdoX3U4KHVpbnQxNng4X3QgX19wMCwgdWludDh4MTZfdCBfX3AxKSB7CiAgdWludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX3JldjAgKyBfX25vc3dhcF92bW92bF9oaWdoX3U4KF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ2NHgyX3QgdmFkZHdfaGlnaF91MzIodWludDY0eDJfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEpIHsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19wMCArIHZtb3ZsX2hpZ2hfdTMyKF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ2NHgyX3QgdmFkZHdfaGlnaF91MzIodWludDY0eDJfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEpIHsKICB1aW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCArIF9fbm9zd2FwX3Ztb3ZsX2hpZ2hfdTMyKF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMng0X3QgdmFkZHdfaGlnaF91MTYodWludDMyeDRfdCBfX3AwLCB1aW50MTZ4OF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCArIHZtb3ZsX2hpZ2hfdTE2KF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMng0X3QgdmFkZHdfaGlnaF91MTYodWludDMyeDRfdCBfX3AwLCB1aW50MTZ4OF90IF9fcDEpIHsKICB1aW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCArIF9fbm9zd2FwX3Ztb3ZsX2hpZ2hfdTE2KF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDhfdCB2YWRkd19oaWdoX3M4KGludDE2eDhfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgKyB2bW92bF9oaWdoX3M4KF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDhfdCB2YWRkd19oaWdoX3M4KGludDE2eDhfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSkgewogIGludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICsgX19ub3N3YXBfdm1vdmxfaGlnaF9zOChfX3JldjEpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQ2NHgyX3QgdmFkZHdfaGlnaF9zMzIoaW50NjR4Ml90IF9fcDAsIGludDMyeDRfdCBfX3AxKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19wMCArIHZtb3ZsX2hpZ2hfczMyKF9fcDEpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDY0eDJfdCB2YWRkd19oaWdoX3MzMihpbnQ2NHgyX3QgX19wMCwgaW50MzJ4NF90IF9fcDEpIHsKICBpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCArIF9fbm9zd2FwX3Ztb3ZsX2hpZ2hfczMyKF9fcmV2MSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDRfdCB2YWRkd19oaWdoX3MxNihpbnQzMng0X3QgX19wMCwgaW50MTZ4OF90IF9fcDEpIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICsgdm1vdmxfaGlnaF9zMTYoX19wMSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MzJ4NF90IHZhZGR3X2hpZ2hfczE2KGludDMyeDRfdCBfX3AwLCBpbnQxNng4X3QgX19wMSkgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICsgX19ub3N3YXBfdm1vdmxfaGlnaF9zMTYoX19yZXYxKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmNvcHlxX2xhbmVfcDY0KF9fcDBfOTI1LCBfX3AxXzkyNSwgX19wMl85MjUsIF9fcDNfOTI1KSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5NjR4Ml90IF9fczBfOTI1ID0gX19wMF85MjU7IFwKICBwb2x5NjR4MV90IF9fczJfOTI1ID0gX19wMl85MjU7IFwKICBwb2x5NjR4Ml90IF9fcmV0XzkyNTsgXAogIF9fcmV0XzkyNSA9IHZzZXRxX2xhbmVfcDY0KHZnZXRfbGFuZV9wNjQoX19zMl85MjUsIF9fcDNfOTI1KSwgX19zMF85MjUsIF9fcDFfOTI1KTsgXAogIF9fcmV0XzkyNTsgXAp9KQojZWxzZQojZGVmaW5lIHZjb3B5cV9sYW5lX3A2NChfX3AwXzkyNiwgX19wMV85MjYsIF9fcDJfOTI2LCBfX3AzXzkyNikgX19leHRlbnNpb25fXyAoeyBcCiAgcG9seTY0eDJfdCBfX3MwXzkyNiA9IF9fcDBfOTI2OyBcCiAgcG9seTY0eDFfdCBfX3MyXzkyNiA9IF9fcDJfOTI2OyBcCiAgcG9seTY0eDJfdCBfX3JldjBfOTI2OyAgX19yZXYwXzkyNiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfOTI2LCBfX3MwXzkyNiwgMSwgMCk7IFwKICBwb2x5NjR4Ml90IF9fcmV0XzkyNjsgXAogIF9fcmV0XzkyNiA9IF9fbm9zd2FwX3ZzZXRxX2xhbmVfcDY0KHZnZXRfbGFuZV9wNjQoX19zMl85MjYsIF9fcDNfOTI2KSwgX19yZXYwXzkyNiwgX19wMV85MjYpOyBcCiAgX19yZXRfOTI2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXRfOTI2LCBfX3JldF85MjYsIDEsIDApOyBcCiAgX19yZXRfOTI2OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCiNkZWZpbmUgdmNvcHlxX2xhbmVfZjY0KF9fcDBfOTI3LCBfX3AxXzkyNywgX19wMl85MjcsIF9fcDNfOTI3KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDJfdCBfX3MwXzkyNyA9IF9fcDBfOTI3OyBcCiAgZmxvYXQ2NHgxX3QgX19zMl85MjcgPSBfX3AyXzkyNzsgXAogIGZsb2F0NjR4Ml90IF9fcmV0XzkyNzsgXAogIF9fcmV0XzkyNyA9IHZzZXRxX2xhbmVfZjY0KHZnZXRfbGFuZV9mNjQoX19zMl85MjcsIF9fcDNfOTI3KSwgX19zMF85MjcsIF9fcDFfOTI3KTsgXAogIF9fcmV0XzkyNzsgXAp9KQojZWxzZQojZGVmaW5lIHZjb3B5cV9sYW5lX2Y2NChfX3AwXzkyOCwgX19wMV85MjgsIF9fcDJfOTI4LCBfX3AzXzkyOCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgyX3QgX19zMF85MjggPSBfX3AwXzkyODsgXAogIGZsb2F0NjR4MV90IF9fczJfOTI4ID0gX19wMl85Mjg7IFwKICBmbG9hdDY0eDJfdCBfX3JldjBfOTI4OyAgX19yZXYwXzkyOCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fczBfOTI4LCBfX3MwXzkyOCwgMSwgMCk7IFwKICBmbG9hdDY0eDJfdCBfX3JldF85Mjg7IFwKICBfX3JldF85MjggPSBfX25vc3dhcF92c2V0cV9sYW5lX2Y2NCh2Z2V0X2xhbmVfZjY0KF9fczJfOTI4LCBfX3AzXzkyOCksIF9fcmV2MF85MjgsIF9fcDFfOTI4KTsgXAogIF9fcmV0XzkyOCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzkyOCwgX19yZXRfOTI4LCAxLCAwKTsgXAogIF9fcmV0XzkyODsgXAp9KQojZW5kaWYKCiNkZWZpbmUgdmNvcHlfbGFuZV9wNjQoX19wMF85MjksIF9fcDFfOTI5LCBfX3AyXzkyOSwgX19wM185MjkpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk2NHgxX3QgX19zMF85MjkgPSBfX3AwXzkyOTsgXAogIHBvbHk2NHgxX3QgX19zMl85MjkgPSBfX3AyXzkyOTsgXAogIHBvbHk2NHgxX3QgX19yZXRfOTI5OyBcCiAgX19yZXRfOTI5ID0gdnNldF9sYW5lX3A2NCh2Z2V0X2xhbmVfcDY0KF9fczJfOTI5LCBfX3AzXzkyOSksIF9fczBfOTI5LCBfX3AxXzkyOSk7IFwKICBfX3JldF85Mjk7IFwKfSkKI2RlZmluZSB2Y29weV9sYW5lX2Y2NChfX3AwXzkzMCwgX19wMV85MzAsIF9fcDJfOTMwLCBfX3AzXzkzMCkgX19leHRlbnNpb25fXyAoeyBcCiAgZmxvYXQ2NHgxX3QgX19zMF85MzAgPSBfX3AwXzkzMDsgXAogIGZsb2F0NjR4MV90IF9fczJfOTMwID0gX19wMl85MzA7IFwKICBmbG9hdDY0eDFfdCBfX3JldF85MzA7IFwKICBfX3JldF85MzAgPSB2c2V0X2xhbmVfZjY0KHZnZXRfbGFuZV9mNjQoX19zMl85MzAsIF9fcDNfOTMwKSwgX19zMF85MzAsIF9fcDFfOTMwKTsgXAogIF9fcmV0XzkzMDsgXAp9KQojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Y29weXFfbGFuZXFfcDY0KF9fcDBfOTMxLCBfX3AxXzkzMSwgX19wMl85MzEsIF9fcDNfOTMxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5NjR4Ml90IF9fczBfOTMxID0gX19wMF85MzE7IFwKICBwb2x5NjR4Ml90IF9fczJfOTMxID0gX19wMl85MzE7IFwKICBwb2x5NjR4Ml90IF9fcmV0XzkzMTsgXAogIF9fcmV0XzkzMSA9IHZzZXRxX2xhbmVfcDY0KHZnZXRxX2xhbmVfcDY0KF9fczJfOTMxLCBfX3AzXzkzMSksIF9fczBfOTMxLCBfX3AxXzkzMSk7IFwKICBfX3JldF85MzE7IFwKfSkKI2Vsc2UKI2RlZmluZSB2Y29weXFfbGFuZXFfcDY0KF9fcDBfOTMyLCBfX3AxXzkzMiwgX19wMl85MzIsIF9fcDNfOTMyKSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5NjR4Ml90IF9fczBfOTMyID0gX19wMF85MzI7IFwKICBwb2x5NjR4Ml90IF9fczJfOTMyID0gX19wMl85MzI7IFwKICBwb2x5NjR4Ml90IF9fcmV2MF85MzI7ICBfX3JldjBfOTMyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMF85MzIsIF9fczBfOTMyLCAxLCAwKTsgXAogIHBvbHk2NHgyX3QgX19yZXYyXzkzMjsgIF9fcmV2Ml85MzIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzkzMiwgX19zMl85MzIsIDEsIDApOyBcCiAgcG9seTY0eDJfdCBfX3JldF85MzI7IFwKICBfX3JldF85MzIgPSBfX25vc3dhcF92c2V0cV9sYW5lX3A2NChfX25vc3dhcF92Z2V0cV9sYW5lX3A2NChfX3JldjJfOTMyLCBfX3AzXzkzMiksIF9fcmV2MF85MzIsIF9fcDFfOTMyKTsgXAogIF9fcmV0XzkzMiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0XzkzMiwgX19yZXRfOTMyLCAxLCAwKTsgXAogIF9fcmV0XzkzMjsgXAp9KQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZjb3B5cV9sYW5lcV9mNjQoX19wMF85MzMsIF9fcDFfOTMzLCBfX3AyXzkzMywgX19wM185MzMpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4Ml90IF9fczBfOTMzID0gX19wMF85MzM7IFwKICBmbG9hdDY0eDJfdCBfX3MyXzkzMyA9IF9fcDJfOTMzOyBcCiAgZmxvYXQ2NHgyX3QgX19yZXRfOTMzOyBcCiAgX19yZXRfOTMzID0gdnNldHFfbGFuZV9mNjQodmdldHFfbGFuZV9mNjQoX19zMl85MzMsIF9fcDNfOTMzKSwgX19zMF85MzMsIF9fcDFfOTMzKTsgXAogIF9fcmV0XzkzMzsgXAp9KQojZWxzZQojZGVmaW5lIHZjb3B5cV9sYW5lcV9mNjQoX19wMF85MzQsIF9fcDFfOTM0LCBfX3AyXzkzNCwgX19wM185MzQpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4Ml90IF9fczBfOTM0ID0gX19wMF85MzQ7IFwKICBmbG9hdDY0eDJfdCBfX3MyXzkzNCA9IF9fcDJfOTM0OyBcCiAgZmxvYXQ2NHgyX3QgX19yZXYwXzkzNDsgIF9fcmV2MF85MzQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MwXzkzNCwgX19zMF85MzQsIDEsIDApOyBcCiAgZmxvYXQ2NHgyX3QgX19yZXYyXzkzNDsgIF9fcmV2Ml85MzQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3MyXzkzNCwgX19zMl85MzQsIDEsIDApOyBcCiAgZmxvYXQ2NHgyX3QgX19yZXRfOTM0OyBcCiAgX19yZXRfOTM0ID0gX19ub3N3YXBfdnNldHFfbGFuZV9mNjQoX19ub3N3YXBfdmdldHFfbGFuZV9mNjQoX19yZXYyXzkzNCwgX19wM185MzQpLCBfX3JldjBfOTM0LCBfX3AxXzkzNCk7IFwKICBfX3JldF85MzQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldF85MzQsIF9fcmV0XzkzNCwgMSwgMCk7IFwKICBfX3JldF85MzQ7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Y29weV9sYW5lcV9wNjQoX19wMF85MzUsIF9fcDFfOTM1LCBfX3AyXzkzNSwgX19wM185MzUpIF9fZXh0ZW5zaW9uX18gKHsgXAogIHBvbHk2NHgxX3QgX19zMF85MzUgPSBfX3AwXzkzNTsgXAogIHBvbHk2NHgyX3QgX19zMl85MzUgPSBfX3AyXzkzNTsgXAogIHBvbHk2NHgxX3QgX19yZXRfOTM1OyBcCiAgX19yZXRfOTM1ID0gdnNldF9sYW5lX3A2NCh2Z2V0cV9sYW5lX3A2NChfX3MyXzkzNSwgX19wM185MzUpLCBfX3MwXzkzNSwgX19wMV85MzUpOyBcCiAgX19yZXRfOTM1OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmNvcHlfbGFuZXFfcDY0KF9fcDBfOTM2LCBfX3AxXzkzNiwgX19wMl85MzYsIF9fcDNfOTM2KSBfX2V4dGVuc2lvbl9fICh7IFwKICBwb2x5NjR4MV90IF9fczBfOTM2ID0gX19wMF85MzY7IFwKICBwb2x5NjR4Ml90IF9fczJfOTM2ID0gX19wMl85MzY7IFwKICBwb2x5NjR4Ml90IF9fcmV2Ml85MzY7ICBfX3JldjJfOTM2ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl85MzYsIF9fczJfOTM2LCAxLCAwKTsgXAogIHBvbHk2NHgxX3QgX19yZXRfOTM2OyBcCiAgX19yZXRfOTM2ID0gdnNldF9sYW5lX3A2NChfX25vc3dhcF92Z2V0cV9sYW5lX3A2NChfX3JldjJfOTM2LCBfX3AzXzkzNiksIF9fczBfOTM2LCBfX3AxXzkzNik7IFwKICBfX3JldF85MzY7IFwKfSkKI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KI2RlZmluZSB2Y29weV9sYW5lcV9mNjQoX19wMF85MzcsIF9fcDFfOTM3LCBfX3AyXzkzNywgX19wM185MzcpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4MV90IF9fczBfOTM3ID0gX19wMF85Mzc7IFwKICBmbG9hdDY0eDJfdCBfX3MyXzkzNyA9IF9fcDJfOTM3OyBcCiAgZmxvYXQ2NHgxX3QgX19yZXRfOTM3OyBcCiAgX19yZXRfOTM3ID0gdnNldF9sYW5lX2Y2NCh2Z2V0cV9sYW5lX2Y2NChfX3MyXzkzNywgX19wM185MzcpLCBfX3MwXzkzNywgX19wMV85MzcpOyBcCiAgX19yZXRfOTM3OyBcCn0pCiNlbHNlCiNkZWZpbmUgdmNvcHlfbGFuZXFfZjY0KF9fcDBfOTM4LCBfX3AxXzkzOCwgX19wMl85MzgsIF9fcDNfOTM4KSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDFfdCBfX3MwXzkzOCA9IF9fcDBfOTM4OyBcCiAgZmxvYXQ2NHgyX3QgX19zMl85MzggPSBfX3AyXzkzODsgXAogIGZsb2F0NjR4Ml90IF9fcmV2Ml85Mzg7ICBfX3JldjJfOTM4ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMl85MzgsIF9fczJfOTM4LCAxLCAwKTsgXAogIGZsb2F0NjR4MV90IF9fcmV0XzkzODsgXAogIF9fcmV0XzkzOCA9IHZzZXRfbGFuZV9mNjQoX19ub3N3YXBfdmdldHFfbGFuZV9mNjQoX19yZXYyXzkzOCwgX19wM185MzgpLCBfX3MwXzkzOCwgX19wMV85MzgpOyBcCiAgX19yZXRfOTM4OyBcCn0pCiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDE2eDhfdCB2bWxhbF9oaWdoX3U4KHVpbnQxNng4X3QgX19wMCwgdWludDh4MTZfdCBfX3AxLCB1aW50OHgxNl90IF9fcDIpIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gdm1sYWxfdTgoX19wMCwgdmdldF9oaWdoX3U4KF9fcDEpLCB2Z2V0X2hpZ2hfdTgoX19wMikpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng4X3Qgdm1sYWxfaGlnaF91OCh1aW50MTZ4OF90IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSwgdWludDh4MTZfdCBfX3AyKSB7CiAgdWludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDE2X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3ZtbGFsX3U4KF9fcmV2MCwgX19ub3N3YXBfdmdldF9oaWdoX3U4KF9fcmV2MSksIF9fbm9zd2FwX3ZnZXRfaGlnaF91OChfX3JldjIpKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDY0eDJfdCB2bWxhbF9oaWdoX3UzMih1aW50NjR4Ml90IF9fcDAsIHVpbnQzMng0X3QgX19wMSwgdWludDMyeDRfdCBfX3AyKSB7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IHZtbGFsX3UzMihfX3AwLCB2Z2V0X2hpZ2hfdTMyKF9fcDEpLCB2Z2V0X2hpZ2hfdTMyKF9fcDIpKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50NjR4Ml90IHZtbGFsX2hpZ2hfdTMyKHVpbnQ2NHgyX3QgX19wMCwgdWludDMyeDRfdCBfX3AxLCB1aW50MzJ4NF90IF9fcDIpIHsKICB1aW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAzLCAyLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdm1sYWxfdTMyKF9fcmV2MCwgX19ub3N3YXBfdmdldF9oaWdoX3UzMihfX3JldjEpLCBfX25vc3dhcF92Z2V0X2hpZ2hfdTMyKF9fcmV2MikpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZtbGFsX2hpZ2hfdTE2KHVpbnQzMng0X3QgX19wMCwgdWludDE2eDhfdCBfX3AxLCB1aW50MTZ4OF90IF9fcDIpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gdm1sYWxfdTE2KF9fcDAsIHZnZXRfaGlnaF91MTYoX19wMSksIHZnZXRfaGlnaF91MTYoX19wMikpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQzMng0X3Qgdm1sYWxfaGlnaF91MTYodWludDMyeDRfdCBfX3AwLCB1aW50MTZ4OF90IF9fcDEsIHVpbnQxNng4X3QgX19wMikgewogIHVpbnQzMng0X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92bWxhbF91MTYoX19yZXYwLCBfX25vc3dhcF92Z2V0X2hpZ2hfdTE2KF9fcmV2MSksIF9fbm9zd2FwX3ZnZXRfaGlnaF91MTYoX19yZXYyKSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDE2eDhfdCB2bWxhbF9oaWdoX3M4KGludDE2eDhfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSwgaW50OHgxNl90IF9fcDIpIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSB2bWxhbF9zOChfX3AwLCB2Z2V0X2hpZ2hfczgoX19wMSksIHZnZXRfaGlnaF9zOChfX3AyKSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4OF90IHZtbGFsX2hpZ2hfczgoaW50MTZ4OF90IF9fcDAsIGludDh4MTZfdCBfX3AxLCBpbnQ4eDE2X3QgX19wMikgewogIGludDE2eDhfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQ4eDE2X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3ZtbGFsX3M4KF9fcmV2MCwgX19ub3N3YXBfdmdldF9oaWdoX3M4KF9fcmV2MSksIF9fbm9zd2FwX3ZnZXRfaGlnaF9zOChfX3JldjIpKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50NjR4Ml90IHZtbGFsX2hpZ2hfczMyKGludDY0eDJfdCBfX3AwLCBpbnQzMng0X3QgX19wMSwgaW50MzJ4NF90IF9fcDIpIHsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSB2bWxhbF9zMzIoX19wMCwgdmdldF9oaWdoX3MzMihfX3AxKSwgdmdldF9oaWdoX3MzMihfX3AyKSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50NjR4Ml90IHZtbGFsX2hpZ2hfczMyKGludDY0eDJfdCBfX3AwLCBpbnQzMng0X3QgX19wMSwgaW50MzJ4NF90IF9fcDIpIHsKICBpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAzLCAyLCAxLCAwKTsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92bWxhbF9zMzIoX19yZXYwLCBfX25vc3dhcF92Z2V0X2hpZ2hfczMyKF9fcmV2MSksIF9fbm9zd2FwX3ZnZXRfaGlnaF9zMzIoX19yZXYyKSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDMyeDRfdCB2bWxhbF9oaWdoX3MxNihpbnQzMng0X3QgX19wMCwgaW50MTZ4OF90IF9fcDEsIGludDE2eDhfdCBfX3AyKSB7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gdm1sYWxfczE2KF9fcDAsIHZnZXRfaGlnaF9zMTYoX19wMSksIHZnZXRfaGlnaF9zMTYoX19wMikpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDRfdCB2bWxhbF9oaWdoX3MxNihpbnQzMng0X3QgX19wMCwgaW50MTZ4OF90IF9fcDEsIGludDE2eDhfdCBfX3AyKSB7CiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdm1sYWxfczE2KF9fcmV2MCwgX19ub3N3YXBfdmdldF9oaWdoX3MxNihfX3JldjEpLCBfX25vc3dhcF92Z2V0X2hpZ2hfczE2KF9fcmV2MikpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50NjR4Ml90IHZtbGFsX2hpZ2hfbl91MzIodWludDY0eDJfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEsIHVpbnQzMl90IF9fcDIpIHsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gdm1sYWxfbl91MzIoX19wMCwgdmdldF9oaWdoX3UzMihfX3AxKSwgX19wMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDY0eDJfdCB2bWxhbF9oaWdoX25fdTMyKHVpbnQ2NHgyX3QgX19wMCwgdWludDMyeDRfdCBfX3AxLCB1aW50MzJfdCBfX3AyKSB7CiAgdWludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92bWxhbF9uX3UzMihfX3JldjAsIF9fbm9zd2FwX3ZnZXRfaGlnaF91MzIoX19yZXYxKSwgX19wMik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMng0X3Qgdm1sYWxfaGlnaF9uX3UxNih1aW50MzJ4NF90IF9fcDAsIHVpbnQxNng4X3QgX19wMSwgdWludDE2X3QgX19wMikgewogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSB2bWxhbF9uX3UxNihfX3AwLCB2Z2V0X2hpZ2hfdTE2KF9fcDEpLCBfX3AyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4NF90IHZtbGFsX2hpZ2hfbl91MTYodWludDMyeDRfdCBfX3AwLCB1aW50MTZ4OF90IF9fcDEsIHVpbnQxNl90IF9fcDIpIHsKICB1aW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3ZtbGFsX25fdTE2KF9fcmV2MCwgX19ub3N3YXBfdmdldF9oaWdoX3UxNihfX3JldjEpLCBfX3AyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50NjR4Ml90IHZtbGFsX2hpZ2hfbl9zMzIoaW50NjR4Ml90IF9fcDAsIGludDMyeDRfdCBfX3AxLCBpbnQzMl90IF9fcDIpIHsKICBpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSB2bWxhbF9uX3MzMihfX3AwLCB2Z2V0X2hpZ2hfczMyKF9fcDEpLCBfX3AyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQ2NHgyX3Qgdm1sYWxfaGlnaF9uX3MzMihpbnQ2NHgyX3QgX19wMCwgaW50MzJ4NF90IF9fcDEsIGludDMyX3QgX19wMikgewogIGludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdm1sYWxfbl9zMzIoX19yZXYwLCBfX25vc3dhcF92Z2V0X2hpZ2hfczMyKF9fcmV2MSksIF9fcDIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMng0X3Qgdm1sYWxfaGlnaF9uX3MxNihpbnQzMng0X3QgX19wMCwgaW50MTZ4OF90IF9fcDEsIGludDE2X3QgX19wMikgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IHZtbGFsX25fczE2KF9fcDAsIHZnZXRfaGlnaF9zMTYoX19wMSksIF9fcDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDRfdCB2bWxhbF9oaWdoX25fczE2KGludDMyeDRfdCBfX3AwLCBpbnQxNng4X3QgX19wMSwgaW50MTZfdCBfX3AyKSB7CiAgaW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92bWxhbF9uX3MxNihfX3JldjAsIF9fbm9zd2FwX3ZnZXRfaGlnaF9zMTYoX19yZXYxKSwgX19wMik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng4X3Qgdm1sc2xfaGlnaF91OCh1aW50MTZ4OF90IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSwgdWludDh4MTZfdCBfX3AyKSB7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IHZtbHNsX3U4KF9fcDAsIHZnZXRfaGlnaF91OChfX3AxKSwgdmdldF9oaWdoX3U4KF9fcDIpKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4OF90IHZtbHNsX2hpZ2hfdTgodWludDE2eDhfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEsIHVpbnQ4eDE2X3QgX19wMikgewogIHVpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92bWxzbF91OChfX3JldjAsIF9fbm9zd2FwX3ZnZXRfaGlnaF91OChfX3JldjEpLCBfX25vc3dhcF92Z2V0X2hpZ2hfdTgoX19yZXYyKSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ2NHgyX3Qgdm1sc2xfaGlnaF91MzIodWludDY0eDJfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEsIHVpbnQzMng0X3QgX19wMikgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSB2bWxzbF91MzIoX19wMCwgdmdldF9oaWdoX3UzMihfX3AxKSwgdmdldF9oaWdoX3UzMihfX3AyKSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDY0eDJfdCB2bWxzbF9oaWdoX3UzMih1aW50NjR4Ml90IF9fcDAsIHVpbnQzMng0X3QgX19wMSwgdWludDMyeDRfdCBfX3AyKSB7CiAgdWludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMywgMiwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3ZtbHNsX3UzMihfX3JldjAsIF9fbm9zd2FwX3ZnZXRfaGlnaF91MzIoX19yZXYxKSwgX19ub3N3YXBfdmdldF9oaWdoX3UzMihfX3JldjIpKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDRfdCB2bWxzbF9oaWdoX3UxNih1aW50MzJ4NF90IF9fcDAsIHVpbnQxNng4X3QgX19wMSwgdWludDE2eDhfdCBfX3AyKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IHZtbHNsX3UxNihfX3AwLCB2Z2V0X2hpZ2hfdTE2KF9fcDEpLCB2Z2V0X2hpZ2hfdTE2KF9fcDIpKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4NF90IHZtbHNsX2hpZ2hfdTE2KHVpbnQzMng0X3QgX19wMCwgdWludDE2eDhfdCBfX3AxLCB1aW50MTZ4OF90IF9fcDIpIHsKICB1aW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdm1sc2xfdTE2KF9fcmV2MCwgX19ub3N3YXBfdmdldF9oaWdoX3UxNihfX3JldjEpLCBfX25vc3dhcF92Z2V0X2hpZ2hfdTE2KF9fcmV2MikpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng4X3Qgdm1sc2xfaGlnaF9zOChpbnQxNng4X3QgX19wMCwgaW50OHgxNl90IF9fcDEsIGludDh4MTZfdCBfX3AyKSB7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gdm1sc2xfczgoX19wMCwgdmdldF9oaWdoX3M4KF9fcDEpLCB2Z2V0X2hpZ2hfczgoX19wMikpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDhfdCB2bWxzbF9oaWdoX3M4KGludDE2eDhfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSwgaW50OHgxNl90IF9fcDIpIHsKICBpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4MTZfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92bWxzbF9zOChfX3JldjAsIF9fbm9zd2FwX3ZnZXRfaGlnaF9zOChfX3JldjEpLCBfX25vc3dhcF92Z2V0X2hpZ2hfczgoX19yZXYyKSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDY0eDJfdCB2bWxzbF9oaWdoX3MzMihpbnQ2NHgyX3QgX19wMCwgaW50MzJ4NF90IF9fcDEsIGludDMyeDRfdCBfX3AyKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gdm1sc2xfczMyKF9fcDAsIHZnZXRfaGlnaF9zMzIoX19wMSksIHZnZXRfaGlnaF9zMzIoX19wMikpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDY0eDJfdCB2bWxzbF9oaWdoX3MzMihpbnQ2NHgyX3QgX19wMCwgaW50MzJ4NF90IF9fcDEsIGludDMyeDRfdCBfX3AyKSB7CiAgaW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMywgMiwgMSwgMCk7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdm1sc2xfczMyKF9fcmV2MCwgX19ub3N3YXBfdmdldF9oaWdoX3MzMihfX3JldjEpLCBfX25vc3dhcF92Z2V0X2hpZ2hfczMyKF9fcmV2MikpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMng0X3Qgdm1sc2xfaGlnaF9zMTYoaW50MzJ4NF90IF9fcDAsIGludDE2eDhfdCBfX3AxLCBpbnQxNng4X3QgX19wMikgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IHZtbHNsX3MxNihfX3AwLCB2Z2V0X2hpZ2hfczE2KF9fcDEpLCB2Z2V0X2hpZ2hfczE2KF9fcDIpKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMng0X3Qgdm1sc2xfaGlnaF9zMTYoaW50MzJ4NF90IF9fcDAsIGludDE2eDhfdCBfX3AxLCBpbnQxNng4X3QgX19wMikgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3ZtbHNsX3MxNihfX3JldjAsIF9fbm9zd2FwX3ZnZXRfaGlnaF9zMTYoX19yZXYxKSwgX19ub3N3YXBfdmdldF9oaWdoX3MxNihfX3JldjIpKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDY0eDJfdCB2bWxzbF9oaWdoX25fdTMyKHVpbnQ2NHgyX3QgX19wMCwgdWludDMyeDRfdCBfX3AxLCB1aW50MzJfdCBfX3AyKSB7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IHZtbHNsX25fdTMyKF9fcDAsIHZnZXRfaGlnaF91MzIoX19wMSksIF9fcDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ2NHgyX3Qgdm1sc2xfaGlnaF9uX3UzMih1aW50NjR4Ml90IF9fcDAsIHVpbnQzMng0X3QgX19wMSwgdWludDMyX3QgX19wMikgewogIHVpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdm1sc2xfbl91MzIoX19yZXYwLCBfX25vc3dhcF92Z2V0X2hpZ2hfdTMyKF9fcmV2MSksIF9fcDIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSB1aW50MzJ4NF90IHZtbHNsX2hpZ2hfbl91MTYodWludDMyeDRfdCBfX3AwLCB1aW50MTZ4OF90IF9fcDEsIHVpbnQxNl90IF9fcDIpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gdm1sc2xfbl91MTYoX19wMCwgdmdldF9oaWdoX3UxNihfX3AxKSwgX19wMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDMyeDRfdCB2bWxzbF9oaWdoX25fdTE2KHVpbnQzMng0X3QgX19wMCwgdWludDE2eDhfdCBfX3AxLCB1aW50MTZfdCBfX3AyKSB7CiAgdWludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92bWxzbF9uX3UxNihfX3JldjAsIF9fbm9zd2FwX3ZnZXRfaGlnaF91MTYoX19yZXYxKSwgX19wMik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDY0eDJfdCB2bWxzbF9oaWdoX25fczMyKGludDY0eDJfdCBfX3AwLCBpbnQzMng0X3QgX19wMSwgaW50MzJfdCBfX3AyKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gdm1sc2xfbl9zMzIoX19wMCwgdmdldF9oaWdoX3MzMihfX3AxKSwgX19wMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50NjR4Ml90IHZtbHNsX2hpZ2hfbl9zMzIoaW50NjR4Ml90IF9fcDAsIGludDMyeDRfdCBfX3AxLCBpbnQzMl90IF9fcDIpIHsKICBpbnQ2NHgyX3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3ZtbHNsX25fczMyKF9fcmV2MCwgX19ub3N3YXBfdmdldF9oaWdoX3MzMihfX3JldjEpLCBfX3AyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgaW50MzJ4NF90IHZtbHNsX2hpZ2hfbl9zMTYoaW50MzJ4NF90IF9fcDAsIGludDE2eDhfdCBfX3AxLCBpbnQxNl90IF9fcDIpIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSB2bWxzbF9uX3MxNihfX3AwLCB2Z2V0X2hpZ2hfczE2KF9fcDEpLCBfX3AyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMng0X3Qgdm1sc2xfaGlnaF9uX3MxNihpbnQzMng0X3QgX19wMCwgaW50MTZ4OF90IF9fcDEsIGludDE2X3QgX19wMikgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdm1sc2xfbl9zMTYoX19yZXYwLCBfX25vc3dhcF92Z2V0X2hpZ2hfczE2KF9fcmV2MSksIF9fcDIpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojZGVmaW5lIHZtdWx4X2xhbmVfZjY0KF9fcDBfOTM5LCBfX3AxXzkzOSwgX19wMl85MzkpIF9fZXh0ZW5zaW9uX18gKHsgXAogIGZsb2F0NjR4MV90IF9fczBfOTM5ID0gX19wMF85Mzk7IFwKICBmbG9hdDY0eDFfdCBfX3MxXzkzOSA9IF9fcDFfOTM5OyBcCiAgZmxvYXQ2NHgxX3QgX19yZXRfOTM5OyBcCiAgZmxvYXQ2NF90IF9feF85MzkgPSB2Z2V0X2xhbmVfZjY0KF9fczBfOTM5LCAwKTsgXAogIGZsb2F0NjRfdCBfX3lfOTM5ID0gdmdldF9sYW5lX2Y2NChfX3MxXzkzOSwgX19wMl85MzkpOyBcCiAgZmxvYXQ2NF90IF9fel85MzkgPSB2bXVseGRfZjY0KF9feF85MzksIF9feV85MzkpOyBcCiAgX19yZXRfOTM5ID0gdnNldF9sYW5lX2Y2NChfX3pfOTM5LCBfX3MwXzkzOSwgX19wMl85MzkpOyBcCiAgX19yZXRfOTM5OyBcCn0pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwojZGVmaW5lIHZtdWx4X2xhbmVxX2Y2NChfX3AwXzk0MCwgX19wMV85NDAsIF9fcDJfOTQwKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDFfdCBfX3MwXzk0MCA9IF9fcDBfOTQwOyBcCiAgZmxvYXQ2NHgyX3QgX19zMV85NDAgPSBfX3AxXzk0MDsgXAogIGZsb2F0NjR4MV90IF9fcmV0Xzk0MDsgXAogIGZsb2F0NjRfdCBfX3hfOTQwID0gdmdldF9sYW5lX2Y2NChfX3MwXzk0MCwgMCk7IFwKICBmbG9hdDY0X3QgX195Xzk0MCA9IHZnZXRxX2xhbmVfZjY0KF9fczFfOTQwLCBfX3AyXzk0MCk7IFwKICBmbG9hdDY0X3QgX196Xzk0MCA9IHZtdWx4ZF9mNjQoX194Xzk0MCwgX195Xzk0MCk7IFwKICBfX3JldF85NDAgPSB2c2V0X2xhbmVfZjY0KF9fel85NDAsIF9fczBfOTQwLCAwKTsgXAogIF9fcmV0Xzk0MDsgXAp9KQojZWxzZQojZGVmaW5lIHZtdWx4X2xhbmVxX2Y2NChfX3AwXzk0MSwgX19wMV85NDEsIF9fcDJfOTQxKSBfX2V4dGVuc2lvbl9fICh7IFwKICBmbG9hdDY0eDFfdCBfX3MwXzk0MSA9IF9fcDBfOTQxOyBcCiAgZmxvYXQ2NHgyX3QgX19zMV85NDEgPSBfX3AxXzk0MTsgXAogIGZsb2F0NjR4Ml90IF9fcmV2MV85NDE7ICBfX3JldjFfOTQxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19zMV85NDEsIF9fczFfOTQxLCAxLCAwKTsgXAogIGZsb2F0NjR4MV90IF9fcmV0Xzk0MTsgXAogIGZsb2F0NjRfdCBfX3hfOTQxID0gdmdldF9sYW5lX2Y2NChfX3MwXzk0MSwgMCk7IFwKICBmbG9hdDY0X3QgX195Xzk0MSA9IF9fbm9zd2FwX3ZnZXRxX2xhbmVfZjY0KF9fcmV2MV85NDEsIF9fcDJfOTQxKTsgXAogIGZsb2F0NjRfdCBfX3pfOTQxID0gdm11bHhkX2Y2NChfX3hfOTQxLCBfX3lfOTQxKTsgXAogIF9fcmV0Xzk0MSA9IHZzZXRfbGFuZV9mNjQoX196Xzk0MSwgX19zMF85NDEsIDApOyBcCiAgX19yZXRfOTQxOyBcCn0pCiNlbmRpZgoKI2VuZGlmCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng4X3QgdmFiYWxfdTgodWludDE2eDhfdCBfX3AwLCB1aW50OHg4X3QgX19wMSwgdWludDh4OF90IF9fcDIpIHsKICB1aW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCArIHZhYmRsX3U4KF9fcDEsIF9fcDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQxNng4X3QgdmFiYWxfdTgodWludDE2eDhfdCBfX3AwLCB1aW50OHg4X3QgX19wMSwgdWludDh4OF90IF9fcDIpIHsKICB1aW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQ4eDhfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHg4X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCArIF9fbm9zd2FwX3ZhYmRsX3U4KF9fcmV2MSwgX19yZXYyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDE2eDhfdCBfX25vc3dhcF92YWJhbF91OCh1aW50MTZ4OF90IF9fcDAsIHVpbnQ4eDhfdCBfX3AxLCB1aW50OHg4X3QgX19wMikgewogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICsgX19ub3N3YXBfdmFiZGxfdTgoX19wMSwgX19wMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDY0eDJfdCB2YWJhbF91MzIodWludDY0eDJfdCBfX3AwLCB1aW50MzJ4Ml90IF9fcDEsIHVpbnQzMngyX3QgX19wMikgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICsgdmFiZGxfdTMyKF9fcDEsIF9fcDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIHVpbnQ2NHgyX3QgdmFiYWxfdTMyKHVpbnQ2NHgyX3QgX19wMCwgdWludDMyeDJfdCBfX3AxLCB1aW50MzJ4Ml90IF9fcDIpIHsKICB1aW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIHVpbnQzMngyX3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMSwgMCk7CiAgdWludDMyeDJfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAxLCAwKTsKICB1aW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICsgX19ub3N3YXBfdmFiZGxfdTMyKF9fcmV2MSwgX19yZXYyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgdWludDY0eDJfdCBfX25vc3dhcF92YWJhbF91MzIodWludDY0eDJfdCBfX3AwLCB1aW50MzJ4Ml90IF9fcDEsIHVpbnQzMngyX3QgX19wMikgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICsgX19ub3N3YXBfdmFiZGxfdTMyKF9fcDEsIF9fcDIpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQzMng0X3QgdmFiYWxfdTE2KHVpbnQzMng0X3QgX19wMCwgdWludDE2eDRfdCBfX3AxLCB1aW50MTZ4NF90IF9fcDIpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCArIHZhYmRsX3UxNihfX3AxLCBfX3AyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4NF90IHZhYmFsX3UxNih1aW50MzJ4NF90IF9fcDAsIHVpbnQxNng0X3QgX19wMSwgdWludDE2eDRfdCBfX3AyKSB7CiAgdWludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICB1aW50MTZ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQxNng0X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMywgMiwgMSwgMCk7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCArIF9fbm9zd2FwX3ZhYmRsX3UxNihfX3JldjEsIF9fcmV2Mik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIHVpbnQzMng0X3QgX19ub3N3YXBfdmFiYWxfdTE2KHVpbnQzMng0X3QgX19wMCwgdWludDE2eDRfdCBfX3AxLCB1aW50MTZ4NF90IF9fcDIpIHsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCArIF9fbm9zd2FwX3ZhYmRsX3UxNihfX3AxLCBfX3AyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng4X3QgdmFiYWxfczgoaW50MTZ4OF90IF9fcDAsIGludDh4OF90IF9fcDEsIGludDh4OF90IF9fcDIpIHsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICsgdmFiZGxfczgoX19wMSwgX19wMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50MTZ4OF90IHZhYmFsX3M4KGludDE2eDhfdCBfX3AwLCBpbnQ4eDhfdCBfX3AxLCBpbnQ4eDhfdCBfX3AyKSB7CiAgaW50MTZ4OF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4OF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCArIF9fbm9zd2FwX3ZhYmRsX3M4KF9fcmV2MSwgX19yZXYyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50MTZ4OF90IF9fbm9zd2FwX3ZhYmFsX3M4KGludDE2eDhfdCBfX3AwLCBpbnQ4eDhfdCBfX3AxLCBpbnQ4eDhfdCBfX3AyKSB7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gX19wMCArIF9fbm9zd2FwX3ZhYmRsX3M4KF9fcDEsIF9fcDIpOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDY0eDJfdCB2YWJhbF9zMzIoaW50NjR4Ml90IF9fcDAsIGludDMyeDJfdCBfX3AxLCBpbnQzMngyX3QgX19wMikgewogIGludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgKyB2YWJkbF9zMzIoX19wMSwgX19wMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgaW50NjR4Ml90IHZhYmFsX3MzMihpbnQ2NHgyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEsIGludDMyeDJfdCBfX3AyKSB7CiAgaW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDJfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxLCAwKTsKICBpbnQzMngyX3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMSwgMCk7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19yZXYwICsgX19ub3N3YXBfdmFiZGxfczMyKF9fcmV2MSwgX19yZXYyKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9Cl9fYWkgaW50NjR4Ml90IF9fbm9zd2FwX3ZhYmFsX3MzMihpbnQ2NHgyX3QgX19wMCwgaW50MzJ4Ml90IF9fcDEsIGludDMyeDJfdCBfX3AyKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19wMCArIF9fbm9zd2FwX3ZhYmRsX3MzMihfX3AxLCBfX3AyKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMng0X3QgdmFiYWxfczE2KGludDMyeDRfdCBfX3AwLCBpbnQxNng0X3QgX19wMSwgaW50MTZ4NF90IF9fcDIpIHsKICBpbnQzMng0X3QgX19yZXQ7CiAgX19yZXQgPSBfX3AwICsgdmFiZGxfczE2KF9fcDEsIF9fcDIpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDMyeDRfdCB2YWJhbF9zMTYoaW50MzJ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxLCBpbnQxNng0X3QgX19wMikgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng0X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgMywgMiwgMSwgMCk7CiAgaW50MTZ4NF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fcmV2MCArIF9fbm9zd2FwX3ZhYmRsX3MxNihfX3JldjEsIF9fcmV2Mik7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQpfX2FpIGludDMyeDRfdCBfX25vc3dhcF92YWJhbF9zMTYoaW50MzJ4NF90IF9fcDAsIGludDE2eDRfdCBfX3AxLCBpbnQxNng0X3QgX19wMikgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fcDAgKyBfX25vc3dhcF92YWJkbF9zMTYoX19wMSwgX19wMik7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmIGRlZmluZWQoX19hYXJjaDY0X18pCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQxNng4X3QgdmFiYWxfaGlnaF91OCh1aW50MTZ4OF90IF9fcDAsIHVpbnQ4eDE2X3QgX19wMSwgdWludDh4MTZfdCBfX3AyKSB7CiAgdWludDE2eDhfdCBfX3JldDsKICBfX3JldCA9IHZhYmFsX3U4KF9fcDAsIHZnZXRfaGlnaF91OChfX3AxKSwgdmdldF9oaWdoX3U4KF9fcDIpKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MTZ4OF90IHZhYmFsX2hpZ2hfdTgodWludDE2eDhfdCBfX3AwLCB1aW50OHgxNl90IF9fcDEsIHVpbnQ4eDE2X3QgX19wMikgewogIHVpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDh4MTZfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50OHgxNl90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92YWJhbF91OChfX3JldjAsIF9fbm9zd2FwX3ZnZXRfaGlnaF91OChfX3JldjEpLCBfX25vc3dhcF92Z2V0X2hpZ2hfdTgoX19yZXYyKSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIHVpbnQ2NHgyX3QgdmFiYWxfaGlnaF91MzIodWludDY0eDJfdCBfX3AwLCB1aW50MzJ4NF90IF9fcDEsIHVpbnQzMng0X3QgX19wMikgewogIHVpbnQ2NHgyX3QgX19yZXQ7CiAgX19yZXQgPSB2YWJhbF91MzIoX19wMCwgdmdldF9oaWdoX3UzMihfX3AxKSwgdmdldF9oaWdoX3UzMihfX3AyKSk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbHNlCl9fYWkgdWludDY0eDJfdCB2YWJhbF9oaWdoX3UzMih1aW50NjR4Ml90IF9fcDAsIHVpbnQzMng0X3QgX19wMSwgdWludDMyeDRfdCBfX3AyKSB7CiAgdWludDY0eDJfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDMsIDIsIDEsIDApOwogIHVpbnQzMng0X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMywgMiwgMSwgMCk7CiAgdWludDY0eDJfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3ZhYmFsX3UzMihfX3JldjAsIF9fbm9zd2FwX3ZnZXRfaGlnaF91MzIoX19yZXYxKSwgX19ub3N3YXBfdmdldF9oaWdoX3UzMihfX3JldjIpKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2lmZGVmIF9fTElUVExFX0VORElBTl9fCl9fYWkgdWludDMyeDRfdCB2YWJhbF9oaWdoX3UxNih1aW50MzJ4NF90IF9fcDAsIHVpbnQxNng4X3QgX19wMSwgdWludDE2eDhfdCBfX3AyKSB7CiAgdWludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IHZhYmFsX3UxNihfX3AwLCB2Z2V0X2hpZ2hfdTE2KF9fcDEpLCB2Z2V0X2hpZ2hfdTE2KF9fcDIpKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSB1aW50MzJ4NF90IHZhYmFsX2hpZ2hfdTE2KHVpbnQzMng0X3QgX19wMCwgdWludDE2eDhfdCBfX3AxLCB1aW50MTZ4OF90IF9fcDIpIHsKICB1aW50MzJ4NF90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDMsIDIsIDEsIDApOwogIHVpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgdWludDE2eDhfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICB1aW50MzJ4NF90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdmFiYWxfdTE2KF9fcmV2MCwgX19ub3N3YXBfdmdldF9oaWdoX3UxNihfX3JldjEpLCBfX25vc3dhcF92Z2V0X2hpZ2hfdTE2KF9fcmV2MikpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAzLCAyLCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQxNng4X3QgdmFiYWxfaGlnaF9zOChpbnQxNng4X3QgX19wMCwgaW50OHgxNl90IF9fcDEsIGludDh4MTZfdCBfX3AyKSB7CiAgaW50MTZ4OF90IF9fcmV0OwogIF9fcmV0ID0gdmFiYWxfczgoX19wMCwgdmdldF9oaWdoX3M4KF9fcDEpLCB2Z2V0X2hpZ2hfczgoX19wMikpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDE2eDhfdCB2YWJhbF9oaWdoX3M4KGludDE2eDhfdCBfX3AwLCBpbnQ4eDE2X3QgX19wMSwgaW50OHgxNl90IF9fcDIpIHsKICBpbnQxNng4X3QgX19yZXYwOyAgX19yZXYwID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMCwgX19wMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50OHgxNl90IF9fcmV2MTsgIF9fcmV2MSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDEsIF9fcDEsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDh4MTZfdCBfX3JldjI7ICBfX3JldjIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AyLCBfX3AyLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXQ7CiAgX19yZXQgPSBfX25vc3dhcF92YWJhbF9zOChfX3JldjAsIF9fbm9zd2FwX3ZnZXRfaGlnaF9zOChfX3JldjEpLCBfX25vc3dhcF92Z2V0X2hpZ2hfczgoX19yZXYyKSk7CiAgX19yZXQgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3JldCwgX19yZXQsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIHJldHVybiBfX3JldDsKfQojZW5kaWYKCiNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwpfX2FpIGludDY0eDJfdCB2YWJhbF9oaWdoX3MzMihpbnQ2NHgyX3QgX19wMCwgaW50MzJ4NF90IF9fcDEsIGludDMyeDRfdCBfX3AyKSB7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gdmFiYWxfczMyKF9fcDAsIHZnZXRfaGlnaF9zMzIoX19wMSksIHZnZXRfaGlnaF9zMzIoX19wMikpOwogIHJldHVybiBfX3JldDsKfQojZWxzZQpfX2FpIGludDY0eDJfdCB2YWJhbF9oaWdoX3MzMihpbnQ2NHgyX3QgX19wMCwgaW50MzJ4NF90IF9fcDEsIGludDMyeDRfdCBfX3AyKSB7CiAgaW50NjR4Ml90IF9fcmV2MDsgIF9fcmV2MCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDAsIF9fcDAsIDEsIDApOwogIGludDMyeDRfdCBfX3JldjE7ICBfX3JldjEgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AxLCBfX3AxLCAzLCAyLCAxLCAwKTsKICBpbnQzMng0X3QgX19yZXYyOyAgX19yZXYyID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMiwgX19wMiwgMywgMiwgMSwgMCk7CiAgaW50NjR4Ml90IF9fcmV0OwogIF9fcmV0ID0gX19ub3N3YXBfdmFiYWxfczMyKF9fcmV2MCwgX19ub3N3YXBfdmdldF9oaWdoX3MzMihfX3JldjEpLCBfX25vc3dhcF92Z2V0X2hpZ2hfczMyKF9fcmV2MikpOwogIF9fcmV0ID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19yZXQsIF9fcmV0LCAxLCAwKTsKICByZXR1cm4gX19yZXQ7Cn0KI2VuZGlmCgojaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KX19haSBpbnQzMng0X3QgdmFiYWxfaGlnaF9zMTYoaW50MzJ4NF90IF9fcDAsIGludDE2eDhfdCBfX3AxLCBpbnQxNng4X3QgX19wMikgewogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IHZhYmFsX3MxNihfX3AwLCB2Z2V0X2hpZ2hfczE2KF9fcDEpLCB2Z2V0X2hpZ2hfczE2KF9fcDIpKTsKICByZXR1cm4gX19yZXQ7Cn0KI2Vsc2UKX19haSBpbnQzMng0X3QgdmFiYWxfaGlnaF9zMTYoaW50MzJ4NF90IF9fcDAsIGludDE2eDhfdCBfX3AxLCBpbnQxNng4X3QgX19wMikgewogIGludDMyeDRfdCBfX3JldjA7ICBfX3JldjAgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX3AwLCBfX3AwLCAzLCAyLCAxLCAwKTsKICBpbnQxNng4X3QgX19yZXYxOyAgX19yZXYxID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19wMSwgX19wMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCk7CiAgaW50MTZ4OF90IF9fcmV2MjsgIF9fcmV2MiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcDIsIF9fcDIsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApOwogIGludDMyeDRfdCBfX3JldDsKICBfX3JldCA9IF9fbm9zd2FwX3ZhYmFsX3MxNihfX3JldjAsIF9fbm9zd2FwX3ZnZXRfaGlnaF9zMTYoX19yZXYxKSwgX19ub3N3YXBfdmdldF9oaWdoX3MxNihfX3JldjIpKTsKICBfX3JldCA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fcmV0LCBfX3JldCwgMywgMiwgMSwgMCk7CiAgcmV0dXJuIF9fcmV0Owp9CiNlbmRpZgoKI2VuZGlmCgojdW5kZWYgX19haQoKI2VuZGlmIC8qIGlmICFkZWZpbmVkKF9fQVJNX05FT04pICovCiNlbmRpZiAvKiBpZm5kZWYgX19BUk1fRlAgKi8KI2VuZGlmIC8qIF9fQVJNX05FT05fSCAqLwoALyo9PT0tLS0tLS0tLS0tLS0tIGF2eDUxMmJpdGFsZ2ludHJpbi5oIC0gQklUQUxHIGludHJpbnNpY3MgLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqCiAqCiAqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCiAqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCiNpZm5kZWYgX19JTU1JTlRSSU5fSAojZXJyb3IgIk5ldmVyIHVzZSA8YXZ4NTEyYml0YWxnaW50cmluLmg+IGRpcmVjdGx5OyBpbmNsdWRlIDxpbW1pbnRyaW4uaD4gaW5zdGVhZC4iCiNlbmRpZgoKI2lmbmRlZiBfX0FWWDUxMkJJVEFMR0lOVFJJTl9ICiNkZWZpbmUgX19BVlg1MTJCSVRBTEdJTlRSSU5fSAoKLyogRGVmaW5lIHRoZSBkZWZhdWx0IGF0dHJpYnV0ZXMgZm9yIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlLiAqLwojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUyBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oImF2eDUxMmJpdGFsZyIpLCBfX21pbl92ZWN0b3Jfd2lkdGhfXyg1MTIpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTUxMl9wb3BjbnRfZXBpMTYoX19tNTEyaSBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmkpIF9fYnVpbHRpbl9pYTMyX3Zwb3BjbnR3XzUxMigoX192MzJoaSkgX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tNTEyX21hc2tfcG9wY250X2VwaTE2KF9fbTUxMmkgX19BLCBfX21tYXNrMzIgX19VLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSkgX19idWlsdGluX2lhMzJfc2VsZWN0d181MTIoKF9fbW1hc2szMikgX19VLAogICAgICAgICAgICAgIChfX3YzMmhpKSBfbW01MTJfcG9wY250X2VwaTE2KF9fQiksCiAgICAgICAgICAgICAgKF9fdjMyaGkpIF9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbTUxMl9tYXNrel9wb3BjbnRfZXBpMTYoX19tbWFzazMyIF9fVSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gX21tNTEyX21hc2tfcG9wY250X2VwaTE2KChfX201MTJpKSBfbW01MTJfc2V0emVyb19zaTUxMigpLAogICAgICAgICAgICAgIF9fVSwKICAgICAgICAgICAgICBfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW01MTJfcG9wY250X2VwaTgoX19tNTEyaSBfX0EpCnsKICByZXR1cm4gKF9fbTUxMmkpIF9fYnVpbHRpbl9pYTMyX3Zwb3BjbnRiXzUxMigoX192NjRxaSkgX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tNTEyX21hc2tfcG9wY250X2VwaTgoX19tNTEyaSBfX0EsIF9fbW1hc2s2NCBfX1UsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKSBfX2J1aWx0aW5faWEzMl9zZWxlY3RiXzUxMigoX19tbWFzazY0KSBfX1UsCiAgICAgICAgICAgICAgKF9fdjY0cWkpIF9tbTUxMl9wb3BjbnRfZXBpOChfX0IpLAogICAgICAgICAgICAgIChfX3Y2NHFpKSBfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW01MTJfbWFza3pfcG9wY250X2VwaTgoX19tbWFzazY0IF9fVSwgX19tNTEyaSBfX0IpCnsKICByZXR1cm4gX21tNTEyX21hc2tfcG9wY250X2VwaTgoKF9fbTUxMmkpIF9tbTUxMl9zZXR6ZXJvX3NpNTEyKCksCiAgICAgICAgICAgICAgX19VLAogICAgICAgICAgICAgIF9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbW1hc2s2NCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tNTEyX21hc2tfYml0c2h1ZmZsZV9lcGk2NF9tYXNrKF9fbW1hc2s2NCBfX1UsIF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tbWFzazY0KSBfX2J1aWx0aW5faWEzMl92cHNodWZiaXRxbWI1MTJfbWFzaygoX192NjRxaSkgX19BLAogICAgICAgICAgICAgIChfX3Y2NHFpKSBfX0IsCiAgICAgICAgICAgICAgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tbWFzazY0IF9fREVGQVVMVF9GTl9BVFRSUwpfbW01MTJfYml0c2h1ZmZsZV9lcGk2NF9tYXNrKF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiBfbW01MTJfbWFza19iaXRzaHVmZmxlX2VwaTY0X21hc2soKF9fbW1hc2s2NCkgLTEsCiAgICAgICAgICAgICAgX19BLAogICAgICAgICAgICAgIF9fQik7Cn0KCgojdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTCgojZW5kaWYKAGF2eDUxMnZsdm5uaWludHJpbi5oAGZ4c3JpbnRyaW4uaAAvKiA9PT0tLS0tLS0tLSBpYTMyaW50cmluLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqCiAqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCiAqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCgojaWZuZGVmIF9fWDg2SU5UUklOX0gKI2Vycm9yICJOZXZlciB1c2UgPGlhMzJpbnRyaW4uaD4gZGlyZWN0bHk7IGluY2x1ZGUgPHg4NmludHJpbi5oPiBpbnN0ZWFkLiIKI2VuZGlmCgojaWZuZGVmIF9fSUEzMklOVFJJTl9ICiNkZWZpbmUgX19JQTMySU5UUklOX0gKCi8qIERlZmluZSB0aGUgZGVmYXVsdCBhdHRyaWJ1dGVzIGZvciB0aGUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZS4gKi8KI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlNfQ1JDMzIgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJjcmMzMiIpKSkKCiNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKSAmJiAoX19jcGx1c3BsdXMgPj0gMjAxMTAzTCkKI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlNfQ0FTVCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGNvbnN0ZXhwcgojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSU19DT05TVEVYUFIgX19ERUZBVUxUX0ZOX0FUVFJTIGNvbnN0ZXhwcgojZWxzZQojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSU19DQVNUIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlNfQ09OU1RFWFBSIF9fREVGQVVMVF9GTl9BVFRSUwojZW5kaWYKCi8qKiBGaW5kIHRoZSBmaXJzdCBzZXQgYml0IHN0YXJ0aW5nIGZyb20gdGhlIGxzYi4gUmVzdWx0IGlzIHVuZGVmaW5lZCBpZgogKiAgaW5wdXQgaXMgMC4KICoKICogIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KICoKICogIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gQlNGIDwvYz4gaW5zdHJ1Y3Rpb24gb3IgdGhlCiAqICA8Yz4gVFpDTlQgPC9jPiBpbnN0cnVjdGlvbi4KICoKICogIFxwYXJhbSBfX0EKICogICAgIEEgMzItYml0IGludGVnZXIgb3BlcmFuZC4KICogIFxyZXR1cm5zIEEgMzItYml0IGludGVnZXIgY29udGFpbmluZyB0aGUgYml0IG51bWJlci4KICovCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlNfQ09OU1RFWFBSCl9fYnNmZChpbnQgX19BKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9jdHooX19BKTsKfQoKLyoqIEZpbmQgdGhlIGZpcnN0IHNldCBiaXQgc3RhcnRpbmcgZnJvbSB0aGUgbXNiLiBSZXN1bHQgaXMgdW5kZWZpbmVkIGlmCiAqICBpbnB1dCBpcyAwLgogKgogKiAgXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgogKgogKiAgVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBCU1IgPC9jPiBpbnN0cnVjdGlvbiBvciB0aGUKICogIDxjPiBMWkNOVCA8L2M+IGluc3RydWN0aW9uIGFuZCBhbiA8Yz4gWE9SIDwvYz4uCiAqCiAqICBccGFyYW0gX19BCiAqICAgICBBIDMyLWJpdCBpbnRlZ2VyIG9wZXJhbmQuCiAqICBccmV0dXJucyBBIDMyLWJpdCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGJpdCBudW1iZXIuCiAqLwpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTX0NPTlNURVhQUgpfX2JzcmQoaW50IF9fQSkgewogIHJldHVybiAzMSAtIF9fYnVpbHRpbl9jbHooX19BKTsKfQoKLyoqIFN3YXBzIHRoZSBieXRlcyBpbiB0aGUgaW5wdXQuIENvbnZlcnRpbmcgbGl0dGxlIGVuZGlhbiB0byBiaWcgZW5kaWFuIG9yCiAqICB2aWNlIHZlcnNhLgogKgogKiAgXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgogKgogKiAgVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBCU1dBUCA8L2M+IGluc3RydWN0aW9uLgogKgogKiAgXHBhcmFtIF9fQQogKiAgICAgQSAzMi1iaXQgaW50ZWdlciBvcGVyYW5kLgogKiAgXHJldHVybnMgQSAzMi1iaXQgaW50ZWdlciBjb250YWluaW5nIHRoZSBzd2FwcGVkIGJ5dGVzLgogKi8Kc3RhdGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRSU19DT05TVEVYUFIKX19ic3dhcGQoaW50IF9fQSkgewogIHJldHVybiBfX2J1aWx0aW5fYnN3YXAzMihfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTX0NPTlNURVhQUgpfYnN3YXAoaW50IF9fQSkgewogIHJldHVybiBfX2J1aWx0aW5fYnN3YXAzMihfX0EpOwp9CgojZGVmaW5lIF9iaXRfc2Nhbl9mb3J3YXJkKEEpIF9fYnNmZCgoQSkpCiNkZWZpbmUgX2JpdF9zY2FuX3JldmVyc2UoQSkgX19ic3JkKChBKSkKCiNpZmRlZiBfX3g4Nl82NF9fCi8qKiBGaW5kIHRoZSBmaXJzdCBzZXQgYml0IHN0YXJ0aW5nIGZyb20gdGhlIGxzYi4gUmVzdWx0IGlzIHVuZGVmaW5lZCBpZgogKiAgaW5wdXQgaXMgMC4KICoKICogIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KICoKICogIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gQlNGIDwvYz4gaW5zdHJ1Y3Rpb24gb3IgdGhlCiAqICA8Yz4gVFpDTlQgPC9jPiBpbnN0cnVjdGlvbi4KICoKICogIFxwYXJhbSBfX0EKICogICAgIEEgNjQtYml0IGludGVnZXIgb3BlcmFuZC4KICogIFxyZXR1cm5zIEEgMzItYml0IGludGVnZXIgY29udGFpbmluZyB0aGUgYml0IG51bWJlci4KICovCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlNfQ09OU1RFWFBSCl9fYnNmcShsb25nIGxvbmcgX19BKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9jdHpsbChfX0EpOwp9CgovKiogRmluZCB0aGUgZmlyc3Qgc2V0IGJpdCBzdGFydGluZyBmcm9tIHRoZSBtc2IuIFJlc3VsdCBpcyB1bmRlZmluZWQgaWYKICogIGlucHV0IGlzIDAuCiAqCiAqICBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+CiAqCiAqICBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IEJTUiA8L2M+IGluc3RydWN0aW9uIG9yIHRoZQogKiAgPGM+IExaQ05UIDwvYz4gaW5zdHJ1Y3Rpb24gYW5kIGFuIDxjPiBYT1IgPC9jPi4KICoKICogIFxwYXJhbSBfX0EKICogICAgIEEgNjQtYml0IGludGVnZXIgb3BlcmFuZC4KICogIFxyZXR1cm5zIEEgMzItYml0IGludGVnZXIgY29udGFpbmluZyB0aGUgYml0IG51bWJlci4KICovCnN0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlNfQ09OU1RFWFBSCl9fYnNycShsb25nIGxvbmcgX19BKSB7CiAgcmV0dXJuIDYzIC0gX19idWlsdGluX2NsemxsKF9fQSk7Cn0KCi8qKiBTd2FwcyB0aGUgYnl0ZXMgaW4gdGhlIGlucHV0LiBDb252ZXJ0aW5nIGxpdHRsZSBlbmRpYW4gdG8gYmlnIGVuZGlhbiBvcgogKiAgdmljZSB2ZXJzYS4KICoKICogIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KICoKICogIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gQlNXQVAgPC9jPiBpbnN0cnVjdGlvbi4KICoKICogIFxwYXJhbSBfX0EKICogICAgIEEgNjQtYml0IGludGVnZXIgb3BlcmFuZC4KICogIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgY29udGFpbmluZyB0aGUgc3dhcHBlZCBieXRlcy4KICovCnN0YXRpYyBfX2lubGluZV9fIGxvbmcgbG9uZyBfX0RFRkFVTFRfRk5fQVRUUlNfQ09OU1RFWFBSCl9fYnN3YXBxKGxvbmcgbG9uZyBfX0EpIHsKICByZXR1cm4gX19idWlsdGluX2Jzd2FwNjQoX19BKTsKfQoKI2RlZmluZSBfYnN3YXA2NChBKSBfX2Jzd2FwcSgoQSkpCiNlbmRpZgoKLyoqIENvdW50cyB0aGUgbnVtYmVyIG9mIGJpdHMgaW4gdGhlIHNvdXJjZSBvcGVyYW5kIGhhdmluZyBhIHZhbHVlIG9mIDEuCiAqCiAqICBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+CiAqCiAqICBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBPUENOVCA8L2M+IGluc3RydWN0aW9uIG9yIGEKICogIGEgc2VxdWVuY2Ugb2YgYXJpdGhtZXRpYyBhbmQgbG9naWMgb3BzIHRvIGNhbGN1bGF0ZSBpdC4KICoKICogIFxwYXJhbSBfX0EKICogICAgIEFuIHVuc2lnbmVkIDMyLWJpdCBpbnRlZ2VyIG9wZXJhbmQuCiAqICBccmV0dXJucyBBIDMyLWJpdCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIG51bWJlciBvZiBiaXRzIHdpdGggdmFsdWUgMSBpbiB0aGUKICogICAgIHNvdXJjZSBvcGVyYW5kLgogKi8Kc3RhdGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRSU19DT05TVEVYUFIKX19wb3BjbnRkKHVuc2lnbmVkIGludCBfX0EpCnsKICByZXR1cm4gX19idWlsdGluX3BvcGNvdW50KF9fQSk7Cn0KCiNkZWZpbmUgX3BvcGNudDMyKEEpIF9fcG9wY250ZCgoQSkpCgojaWZkZWYgX194ODZfNjRfXwovKiogQ291bnRzIHRoZSBudW1iZXIgb2YgYml0cyBpbiB0aGUgc291cmNlIG9wZXJhbmQgaGF2aW5nIGEgdmFsdWUgb2YgMS4KICoKICogIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KICoKICogIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUE9QQ05UIDwvYz4gaW5zdHJ1Y3Rpb24gb3IgYQogKiAgYSBzZXF1ZW5jZSBvZiBhcml0aG1ldGljIGFuZCBsb2dpYyBvcHMgdG8gY2FsY3VsYXRlIGl0LgogKgogKiAgXHBhcmFtIF9fQQogKiAgICAgQW4gdW5zaWduZWQgNjQtYml0IGludGVnZXIgb3BlcmFuZC4KICogIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgY29udGFpbmluZyB0aGUgbnVtYmVyIG9mIGJpdHMgd2l0aCB2YWx1ZSAxIGluIHRoZQogKiAgICAgc291cmNlIG9wZXJhbmQuCiAqLwpzdGF0aWMgX19pbmxpbmVfXyBsb25nIGxvbmcgX19ERUZBVUxUX0ZOX0FUVFJTX0NPTlNURVhQUgpfX3BvcGNudHEodW5zaWduZWQgbG9uZyBsb25nIF9fQSkKewogIHJldHVybiBfX2J1aWx0aW5fcG9wY291bnRsbChfX0EpOwp9CgojZGVmaW5lIF9wb3BjbnQ2NChBKSBfX3BvcGNudHEoKEEpKQojZW5kaWYgLyogX194ODZfNjRfXyAqLwoKI2lmZGVmIF9feDg2XzY0X18Kc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgbG9uZyBsb25nIF9fREVGQVVMVF9GTl9BVFRSUwpfX3JlYWRlZmxhZ3Modm9pZCkKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9yZWFkZWZsYWdzX3U2NCgpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUwpfX3dyaXRlZWZsYWdzKHVuc2lnbmVkIGxvbmcgbG9uZyBfX2YpCnsKICBfX2J1aWx0aW5faWEzMl93cml0ZWVmbGFnc191NjQoX19mKTsKfQoKI2Vsc2UgLyogIV9feDg2XzY0X18gKi8Kc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgaW50IF9fREVGQVVMVF9GTl9BVFRSUwpfX3JlYWRlZmxhZ3Modm9pZCkKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9yZWFkZWZsYWdzX3UzMigpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUwpfX3dyaXRlZWZsYWdzKHVuc2lnbmVkIGludCBfX2YpCnsKICBfX2J1aWx0aW5faWEzMl93cml0ZWVmbGFnc191MzIoX19mKTsKfQojZW5kaWYgLyogIV9feDg2XzY0X18gKi8KCi8qKiBDYXN0IGEgMzItYml0IGZsb2F0IHZhbHVlIHRvIGEgMzItYml0IHVuc2lnbmVkIGludGVnZXIgdmFsdWUKICoKICogIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KICogIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVkQgLyBNT1ZEIDwvYz4gaW5zdHJ1Y3Rpb24gaW4geDg2XzY0LAogKiAgYW5kIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVkwgLyBNT1ZMIDwvYz4gaW5zdHJ1Y3Rpb24gaW4gaWEzMi4KICoKICogIFxwYXJhbSBfX0EKICogICAgIEEgMzItYml0IGZsb2F0IHZhbHVlLgogKiAgXHJldHVybnMgYSAzMi1iaXQgdW5zaWduZWQgaW50ZWdlciBjb250YWluaW5nIHRoZSBjb252ZXJ0ZWQgdmFsdWUuCiAqLwpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTX0NBU1QKX2Nhc3RmMzJfdTMyKGZsb2F0IF9fQSkgewogIHJldHVybiBfX2J1aWx0aW5fYml0X2Nhc3QodW5zaWduZWQgaW50LCBfX0EpOwp9CgovKiogQ2FzdCBhIDY0LWJpdCBmbG9hdCB2YWx1ZSB0byBhIDY0LWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlCiAqCiAqICBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+CiAqICBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZRIC8gTU9WUSA8L2M+IGluc3RydWN0aW9uIGluIHg4Nl82NCwKICogIGFuZCBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZMIC8gTU9WTCA8L2M+IGluc3RydWN0aW9uIGluIGlhMzIuCiAqCiAqICBccGFyYW0gX19BCiAqICAgICBBIDY0LWJpdCBmbG9hdCB2YWx1ZS4KICogIFxyZXR1cm5zIGEgNjQtYml0IHVuc2lnbmVkIGludGVnZXIgY29udGFpbmluZyB0aGUgY29udmVydGVkIHZhbHVlLgogKi8Kc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgbG9uZyBsb25nIF9fREVGQVVMVF9GTl9BVFRSU19DQVNUCl9jYXN0ZjY0X3U2NChkb3VibGUgX19BKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9iaXRfY2FzdCh1bnNpZ25lZCBsb25nIGxvbmcsIF9fQSk7Cn0KCi8qKiBDYXN0IGEgMzItYml0IHVuc2lnbmVkIGludGVnZXIgdmFsdWUgdG8gYSAzMi1iaXQgZmxvYXQgdmFsdWUKICoKICogIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KICogIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVlEgLyBNT1ZRIDwvYz4gaW5zdHJ1Y3Rpb24gaW4geDg2XzY0LAogKiAgYW5kIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gRkxEUyA8L2M+IGluc3RydWN0aW9uIGluIGlhMzIuCiAqCiAqICBccGFyYW0gX19BCiAqICAgICBBIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlLgogKiAgXHJldHVybnMgYSAzMi1iaXQgZmxvYXQgdmFsdWUgY29udGFpbmluZyB0aGUgY29udmVydGVkIHZhbHVlLgogKi8Kc3RhdGljIF9faW5saW5lX18gZmxvYXQgX19ERUZBVUxUX0ZOX0FUVFJTX0NBU1QKX2Nhc3R1MzJfZjMyKHVuc2lnbmVkIGludCBfX0EpIHsKICByZXR1cm4gX19idWlsdGluX2JpdF9jYXN0KGZsb2F0LCBfX0EpOwp9CgovKiogQ2FzdCBhIDY0LWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlIHRvIGEgNjQtYml0IGZsb2F0IHZhbHVlCiAqCiAqICBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+CiAqICBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZRIC8gTU9WUSA8L2M+IGluc3RydWN0aW9uIGluIHg4Nl82NCwKICogIGFuZCBjb3JyZXNwb25kcyB0byB0aGUgPGM+IEZMREwgPC9jPiBpbnN0cnVjdGlvbiBpbiBpYTMyLgogKgogKiAgXHBhcmFtIF9fQQogKiAgICAgQSA2NC1iaXQgdW5zaWduZWQgaW50ZWdlciB2YWx1ZS4KICogIFxyZXR1cm5zIGEgNjQtYml0IGZsb2F0IHZhbHVlIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRlZCB2YWx1ZS4KICovCnN0YXRpYyBfX2lubGluZV9fIGRvdWJsZSBfX0RFRkFVTFRfRk5fQVRUUlNfQ0FTVApfY2FzdHU2NF9mNjQodW5zaWduZWQgbG9uZyBsb25nIF9fQSkgewogIHJldHVybiBfX2J1aWx0aW5fYml0X2Nhc3QoZG91YmxlLCBfX0EpOwp9CgovKiogQWRkcyB0aGUgdW5zaWduZWQgaW50ZWdlciBvcGVyYW5kIHRvIHRoZSBDUkMtMzJDIGNoZWNrc3VtIG9mIHRoZQogKiAgICAgdW5zaWduZWQgY2hhciBvcGVyYW5kLgogKgogKiAgXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgogKgogKiAgVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBDUkMzMkIgPC9jPiBpbnN0cnVjdGlvbi4KICoKICogIFxwYXJhbSBfX0MKICogICAgIEFuIHVuc2lnbmVkIGludGVnZXIgb3BlcmFuZCB0byBhZGQgdG8gdGhlIENSQy0zMkMgY2hlY2tzdW0gb2Ygb3BlcmFuZAogKiAgICAgXGEgIF9fRC4KICogIFxwYXJhbSBfX0QKICogICAgIEFuIHVuc2lnbmVkIDgtYml0IGludGVnZXIgb3BlcmFuZCB1c2VkIHRvIGNvbXB1dGUgdGhlIENSQy0zMkMgY2hlY2tzdW0uCiAqICBccmV0dXJucyBUaGUgcmVzdWx0IG9mIGFkZGluZyBvcGVyYW5kIFxhIF9fQyB0byB0aGUgQ1JDLTMyQyBjaGVja3N1bSBvZgogKiAgICAgb3BlcmFuZCBcYSBfX0QuCiAqLwpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTX0NSQzMyCl9fY3JjMzJiKHVuc2lnbmVkIGludCBfX0MsIHVuc2lnbmVkIGNoYXIgX19EKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2NyYzMycWkoX19DLCBfX0QpOwp9CgovKiogQWRkcyB0aGUgdW5zaWduZWQgaW50ZWdlciBvcGVyYW5kIHRvIHRoZSBDUkMtMzJDIGNoZWNrc3VtIG9mIHRoZQogKiAgICAgdW5zaWduZWQgc2hvcnQgb3BlcmFuZC4KICoKICogIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KICoKICogIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gQ1JDMzJXIDwvYz4gaW5zdHJ1Y3Rpb24uCiAqCiAqICBccGFyYW0gX19DCiAqICAgICBBbiB1bnNpZ25lZCBpbnRlZ2VyIG9wZXJhbmQgdG8gYWRkIHRvIHRoZSBDUkMtMzJDIGNoZWNrc3VtIG9mIG9wZXJhbmQKICogICAgIFxhICBfX0QuCiAqICBccGFyYW0gX19ECiAqICAgICBBbiB1bnNpZ25lZCAxNi1iaXQgaW50ZWdlciBvcGVyYW5kIHVzZWQgdG8gY29tcHV0ZSB0aGUgQ1JDLTMyQyBjaGVja3N1bS4KICogIFxyZXR1cm5zIFRoZSByZXN1bHQgb2YgYWRkaW5nIG9wZXJhbmQgXGEgX19DIHRvIHRoZSBDUkMtMzJDIGNoZWNrc3VtIG9mCiAqICAgICBvcGVyYW5kIFxhIF9fRC4KICovCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGludCBfX0RFRkFVTFRfRk5fQVRUUlNfQ1JDMzIKX19jcmMzMncodW5zaWduZWQgaW50IF9fQywgdW5zaWduZWQgc2hvcnQgX19EKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2NyYzMyaGkoX19DLCBfX0QpOwp9CgovKiogQWRkcyB0aGUgdW5zaWduZWQgaW50ZWdlciBvcGVyYW5kIHRvIHRoZSBDUkMtMzJDIGNoZWNrc3VtIG9mIHRoZQogKiAgICAgc2Vjb25kIHVuc2lnbmVkIGludGVnZXIgb3BlcmFuZC4KICoKICogIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KICoKICogIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gQ1JDMzJEIDwvYz4gaW5zdHJ1Y3Rpb24uCiAqCiAqICBccGFyYW0gX19DCiAqICAgICBBbiB1bnNpZ25lZCBpbnRlZ2VyIG9wZXJhbmQgdG8gYWRkIHRvIHRoZSBDUkMtMzJDIGNoZWNrc3VtIG9mIG9wZXJhbmQKICogICAgIFxhICBfX0QuCiAqICBccGFyYW0gX19ECiAqICAgICBBbiB1bnNpZ25lZCAzMi1iaXQgaW50ZWdlciBvcGVyYW5kIHVzZWQgdG8gY29tcHV0ZSB0aGUgQ1JDLTMyQyBjaGVja3N1bS4KICogIFxyZXR1cm5zIFRoZSByZXN1bHQgb2YgYWRkaW5nIG9wZXJhbmQgXGEgX19DIHRvIHRoZSBDUkMtMzJDIGNoZWNrc3VtIG9mCiAqICAgICBvcGVyYW5kIFxhIF9fRC4KICovCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGludCBfX0RFRkFVTFRfRk5fQVRUUlNfQ1JDMzIKX19jcmMzMmQodW5zaWduZWQgaW50IF9fQywgdW5zaWduZWQgaW50IF9fRCkKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9jcmMzMnNpKF9fQywgX19EKTsKfQoKI2lmZGVmIF9feDg2XzY0X18KLyoqIEFkZHMgdGhlIHVuc2lnbmVkIGludGVnZXIgb3BlcmFuZCB0byB0aGUgQ1JDLTMyQyBjaGVja3N1bSBvZiB0aGUKICogICAgIHVuc2lnbmVkIDY0LWJpdCBpbnRlZ2VyIG9wZXJhbmQuCiAqCiAqICBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+CiAqCiAqICBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IENSQzMyUSA8L2M+IGluc3RydWN0aW9uLgogKgogKiAgXHBhcmFtIF9fQwogKiAgICAgQW4gdW5zaWduZWQgaW50ZWdlciBvcGVyYW5kIHRvIGFkZCB0byB0aGUgQ1JDLTMyQyBjaGVja3N1bSBvZiBvcGVyYW5kCiAqICAgICBcYSAgX19ELgogKiAgXHBhcmFtIF9fRAogKiAgICAgQW4gdW5zaWduZWQgNjQtYml0IGludGVnZXIgb3BlcmFuZCB1c2VkIHRvIGNvbXB1dGUgdGhlIENSQy0zMkMgY2hlY2tzdW0uCiAqICBccmV0dXJucyBUaGUgcmVzdWx0IG9mIGFkZGluZyBvcGVyYW5kIFxhIF9fQyB0byB0aGUgQ1JDLTMyQyBjaGVja3N1bSBvZgogKiAgICAgb3BlcmFuZCBcYSBfX0QuCiAqLwpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nIGxvbmcgX19ERUZBVUxUX0ZOX0FUVFJTX0NSQzMyCl9fY3JjMzJxKHVuc2lnbmVkIGxvbmcgbG9uZyBfX0MsIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0QpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfY3JjMzJkaShfX0MsIF9fRCk7Cn0KI2VuZGlmIC8qIF9feDg2XzY0X18gKi8KCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0RFRkFVTFRfRk5fQVRUUlMKX19yZHBtYyhpbnQgX19BKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3JkcG1jKF9fQSk7Cn0KCi8qIF9fcmR0c2NwICovCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0RFRkFVTFRfRk5fQVRUUlMKX19yZHRzY3AodW5zaWduZWQgaW50ICpfX0EpIHsKICByZXR1cm4gX19idWlsdGluX2lhMzJfcmR0c2NwKF9fQSk7Cn0KCiNkZWZpbmUgX3JkdHNjKCkgX19yZHRzYygpCgojZGVmaW5lIF9yZHBtYyhBKSBfX3JkcG1jKEEpCgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUwpfd2JpbnZkKHZvaWQpIHsKICBfX2J1aWx0aW5faWEzMl93YmludmQoKTsKfQoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgY2hhciBfX0RFRkFVTFRfRk5fQVRUUlNfQ09OU1RFWFBSCl9fcm9sYih1bnNpZ25lZCBjaGFyIF9fWCwgaW50IF9fQykgewogIHJldHVybiBfX2J1aWx0aW5fcm90YXRlbGVmdDgoX19YLCBfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBjaGFyIF9fREVGQVVMVF9GTl9BVFRSU19DT05TVEVYUFIKX19yb3JiKHVuc2lnbmVkIGNoYXIgX19YLCBpbnQgX19DKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9yb3RhdGVyaWdodDgoX19YLCBfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBzaG9ydCBfX0RFRkFVTFRfRk5fQVRUUlNfQ09OU1RFWFBSCl9fcm9sdyh1bnNpZ25lZCBzaG9ydCBfX1gsIGludCBfX0MpIHsKICByZXR1cm4gX19idWlsdGluX3JvdGF0ZWxlZnQxNihfX1gsIF9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIHNob3J0IF9fREVGQVVMVF9GTl9BVFRSU19DT05TVEVYUFIKX19yb3J3KHVuc2lnbmVkIHNob3J0IF9fWCwgaW50IF9fQykgewogIHJldHVybiBfX2J1aWx0aW5fcm90YXRlcmlnaHQxNihfX1gsIF9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGludCBfX0RFRkFVTFRfRk5fQVRUUlNfQ09OU1RFWFBSCl9fcm9sZCh1bnNpZ25lZCBpbnQgX19YLCBpbnQgX19DKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9yb3RhdGVsZWZ0MzIoX19YLCBfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTX0NPTlNURVhQUgpfX3JvcmQodW5zaWduZWQgaW50IF9fWCwgaW50IF9fQykgewogIHJldHVybiBfX2J1aWx0aW5fcm90YXRlcmlnaHQzMihfX1gsIF9fQyk7Cn0KCiNpZmRlZiBfX3g4Nl82NF9fCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0RFRkFVTFRfRk5fQVRUUlNfQ09OU1RFWFBSCl9fcm9scSh1bnNpZ25lZCBsb25nIGxvbmcgX19YLCBpbnQgX19DKSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9yb3RhdGVsZWZ0NjQoX19YLCBfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nIGxvbmcgX19ERUZBVUxUX0ZOX0FUVFJTX0NPTlNURVhQUgpfX3JvcnEodW5zaWduZWQgbG9uZyBsb25nIF9fWCwgaW50IF9fQykgewogIHJldHVybiBfX2J1aWx0aW5fcm90YXRlcmlnaHQ2NChfX1gsIF9fQyk7Cn0KI2VuZGlmIC8qIF9feDg2XzY0X18gKi8KCiNpZm5kZWYgX01TQ19WRVIKLyogVGhlc2UgYXJlIGFscmVhZHkgcHJvdmlkZWQgYXMgYnVpbHRpbnMgZm9yIE1TVkMuICovCi8qIFNlbGVjdCB0aGUgY29ycmVjdCBmdW5jdGlvbiBiYXNlZCBvbiB0aGUgc2l6ZSBvZiBsb25nLiAqLwojaWZkZWYgX19MUDY0X18KI2RlZmluZSBfbHJvdGwoYSxiKSBfX3JvbHEoKGEpLCAoYikpCiNkZWZpbmUgX2xyb3RyKGEsYikgX19yb3JxKChhKSwgKGIpKQojZWxzZQojZGVmaW5lIF9scm90bChhLGIpIF9fcm9sZCgoYSksIChiKSkKI2RlZmluZSBfbHJvdHIoYSxiKSBfX3JvcmQoKGEpLCAoYikpCiNlbmRpZgojZGVmaW5lIF9yb3RsKGEsYikgX19yb2xkKChhKSwgKGIpKQojZGVmaW5lIF9yb3RyKGEsYikgX19yb3JkKChhKSwgKGIpKQojZW5kaWYgLy8gX01TQ19WRVIKCi8qIFRoZXNlIGFyZSBub3QgYnVpbHRpbnMgc28gbmVlZCB0byBiZSBwcm92aWRlZCBpbiBhbGwgbW9kZXMuICovCiNkZWZpbmUgX3JvdHdsKGEsYikgX19yb2x3KChhKSwgKGIpKQojZGVmaW5lIF9yb3R3cihhLGIpIF9fcm9ydygoYSksIChiKSkKCiN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlMKI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSU19DQVNUCiN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlNfQ1JDMzIKI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSU19DT05TVEVYUFIKCiNlbmRpZiAvKiBfX0lBMzJJTlRSSU5fSCAqLwoALyo9PT0tLS0tIG1tM2Rub3cuaCAtIDNETm93ISBpbnRyaW5zaWNzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwoKI2lmbmRlZiBfTU0zRE5PV19IX0lOQ0xVREVECiNkZWZpbmUgX01NM0ROT1dfSF9JTkNMVURFRAoKI2luY2x1ZGUgPG1taW50cmluLmg+CiNpbmNsdWRlIDxwcmZjaHdpbnRyaW4uaD4KCnR5cGVkZWYgZmxvYXQgX192MnNmIF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXyg4KSkpOwoKLyogRGVmaW5lIHRoZSBkZWZhdWx0IGF0dHJpYnV0ZXMgZm9yIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlLiAqLwojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUyBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oIjNkbm93IiksIF9fbWluX3ZlY3Rvcl93aWR0aF9fKDY0KSkpCgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygiM2Rub3ciKSkpCl9tX2ZlbW1zKHZvaWQpIHsKICBfX2J1aWx0aW5faWEzMl9mZW1tcygpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMKX21fcGF2Z3VzYihfX202NCBfX20xLCBfX202NCBfX20yKSB7CiAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wYXZndXNiKChfX3Y4cWkpX19tMSwgKF9fdjhxaSlfX20yKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tX3BmMmlkKF9fbTY0IF9fbSkgewogIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcGYyaWQoKF9fdjJzZilfX20pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMKX21fcGZhY2MoX19tNjQgX19tMSwgX19tNjQgX19tMikgewogIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcGZhY2MoKF9fdjJzZilfX20xLCAoX192MnNmKV9fbTIpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMKX21fcGZhZGQoX19tNjQgX19tMSwgX19tNjQgX19tMikgewogIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcGZhZGQoKF9fdjJzZilfX20xLCAoX192MnNmKV9fbTIpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMKX21fcGZjbXBlcShfX202NCBfX20xLCBfX202NCBfX20yKSB7CiAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wZmNtcGVxKChfX3Yyc2YpX19tMSwgKF9fdjJzZilfX20yKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tX3BmY21wZ2UoX19tNjQgX19tMSwgX19tNjQgX19tMikgewogIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcGZjbXBnZSgoX192MnNmKV9fbTEsIChfX3Yyc2YpX19tMik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUwpfbV9wZmNtcGd0KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpIHsKICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BmY21wZ3QoKF9fdjJzZilfX20xLCAoX192MnNmKV9fbTIpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMKX21fcGZtYXgoX19tNjQgX19tMSwgX19tNjQgX19tMikgewogIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcGZtYXgoKF9fdjJzZilfX20xLCAoX192MnNmKV9fbTIpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMKX21fcGZtaW4oX19tNjQgX19tMSwgX19tNjQgX19tMikgewogIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcGZtaW4oKF9fdjJzZilfX20xLCAoX192MnNmKV9fbTIpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMKX21fcGZtdWwoX19tNjQgX19tMSwgX19tNjQgX19tMikgewogIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcGZtdWwoKF9fdjJzZilfX20xLCAoX192MnNmKV9fbTIpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMKX21fcGZyY3AoX19tNjQgX19tKSB7CiAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wZnJjcCgoX192MnNmKV9fbSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUwpfbV9wZnJjcGl0MShfX202NCBfX20xLCBfX202NCBfX20yKSB7CiAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wZnJjcGl0MSgoX192MnNmKV9fbTEsIChfX3Yyc2YpX19tMik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUwpfbV9wZnJjcGl0MihfX202NCBfX20xLCBfX202NCBfX20yKSB7CiAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wZnJjcGl0MigoX192MnNmKV9fbTEsIChfX3Yyc2YpX19tMik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUwpfbV9wZnJzcXJ0KF9fbTY0IF9fbSkgewogIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcGZyc3FydCgoX192MnNmKV9fbSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUwpfbV9wZnJzcXJ0aXQxKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpIHsKICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BmcnNxaXQxKChfX3Yyc2YpX19tMSwgKF9fdjJzZilfX20yKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tX3Bmc3ViKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpIHsKICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3Bmc3ViKChfX3Yyc2YpX19tMSwgKF9fdjJzZilfX20yKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tX3Bmc3VicihfX202NCBfX20xLCBfX202NCBfX20yKSB7CiAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wZnN1YnIoKF9fdjJzZilfX20xLCAoX192MnNmKV9fbTIpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMKX21fcGkyZmQoX19tNjQgX19tKSB7CiAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9waTJmZCgoX192MnNpKV9fbSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUwpfbV9wbXVsaHJ3KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpIHsKICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BtdWxocncoKF9fdjRoaSlfX20xLCAoX192NGhpKV9fbTIpOwp9CgovKiBIYW5kbGUgdGhlIDNkbm93YSBpbnN0cnVjdGlvbnMgaGVyZS4gKi8KI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUwojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUyBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oIjNkbm93YSIpLCBfX21pbl92ZWN0b3Jfd2lkdGhfXyg2NCkpKQoKc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tX3BmMml3KF9fbTY0IF9fbSkgewogIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcGYyaXcoKF9fdjJzZilfX20pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMKX21fcGZuYWNjKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpIHsKICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BmbmFjYygoX192MnNmKV9fbTEsIChfX3Yyc2YpX19tMik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUwpfbV9wZnBuYWNjKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpIHsKICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BmcG5hY2MoKF9fdjJzZilfX20xLCAoX192MnNmKV9fbTIpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMKX21fcGkyZncoX19tNjQgX19tKSB7CiAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9waTJmdygoX192MnNpKV9fbSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUwpfbV9wc3dhcGRzZihfX202NCBfX20pIHsKICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3Bzd2FwZHNmKChfX3Yyc2YpX19tKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tX3Bzd2FwZHNpKF9fbTY0IF9fbSkgewogIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcHN3YXBkc2koKF9fdjJzaSlfX20pOwp9CgojdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTCgojZW5kaWYKAC8qPT09LS0tLSBzdGRkZWYuaCAtIEJhc2ljIHR5cGUgZGVmaW5pdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKi8KCiNpZiAhZGVmaW5lZChfX1NURERFRl9IKSB8fCBkZWZpbmVkKF9fbmVlZF9wdHJkaWZmX3QpIHx8ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBkZWZpbmVkKF9fbmVlZF9zaXplX3QpIHx8IGRlZmluZWQoX19uZWVkX3djaGFyX3QpIHx8ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBkZWZpbmVkKF9fbmVlZF9OVUxMKSB8fCBkZWZpbmVkKF9fbmVlZF93aW50X3QpCgojaWYgIWRlZmluZWQoX19uZWVkX3B0cmRpZmZfdCkgJiYgIWRlZmluZWQoX19uZWVkX3NpemVfdCkgJiYgICAgICAgICAgICAgICAgICAgXAogICAgIWRlZmluZWQoX19uZWVkX3djaGFyX3QpICYmICFkZWZpbmVkKF9fbmVlZF9OVUxMKSAmJiAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIWRlZmluZWQoX19uZWVkX3dpbnRfdCkKLyogQWx3YXlzIGRlZmluZSBtaXNjZWxsYW5lb3VzIHBpZWNlcyB3aGVuIG1vZHVsZXMgYXJlIGF2YWlsYWJsZS4gKi8KI2lmICFfX2hhc19mZWF0dXJlKG1vZHVsZXMpCiNkZWZpbmUgX19TVERERUZfSAojZW5kaWYKI2RlZmluZSBfX25lZWRfcHRyZGlmZl90CiNkZWZpbmUgX19uZWVkX3NpemVfdAojZGVmaW5lIF9fbmVlZF93Y2hhcl90CiNkZWZpbmUgX19uZWVkX05VTEwKI2RlZmluZSBfX25lZWRfU1REREVGX0hfbWlzYwovKiBfX25lZWRfd2ludF90IGlzIGludGVudGlvbmFsbHkgbm90IGRlZmluZWQgaGVyZS4gKi8KI2VuZGlmCgojaWYgZGVmaW5lZChfX25lZWRfcHRyZGlmZl90KQojaWYgIWRlZmluZWQoX1BUUkRJRkZfVCkgfHwgX19oYXNfZmVhdHVyZShtb2R1bGVzKQovKiBBbHdheXMgZGVmaW5lIHB0cmRpZmZfdCB3aGVuIG1vZHVsZXMgYXJlIGF2YWlsYWJsZS4gKi8KI2lmICFfX2hhc19mZWF0dXJlKG1vZHVsZXMpCiNkZWZpbmUgX1BUUkRJRkZfVAojZW5kaWYKdHlwZWRlZiBfX1BUUkRJRkZfVFlQRV9fIHB0cmRpZmZfdDsKI2VuZGlmCiN1bmRlZiBfX25lZWRfcHRyZGlmZl90CiNlbmRpZiAvKiBkZWZpbmVkKF9fbmVlZF9wdHJkaWZmX3QpICovCgojaWYgZGVmaW5lZChfX25lZWRfc2l6ZV90KQojaWYgIWRlZmluZWQoX1NJWkVfVCkgfHwgX19oYXNfZmVhdHVyZShtb2R1bGVzKQovKiBBbHdheXMgZGVmaW5lIHNpemVfdCB3aGVuIG1vZHVsZXMgYXJlIGF2YWlsYWJsZS4gKi8KI2lmICFfX2hhc19mZWF0dXJlKG1vZHVsZXMpCiNkZWZpbmUgX1NJWkVfVAojZW5kaWYKdHlwZWRlZiBfX1NJWkVfVFlQRV9fIHNpemVfdDsKI2VuZGlmCiN1bmRlZiBfX25lZWRfc2l6ZV90CiNlbmRpZiAvKmRlZmluZWQoX19uZWVkX3NpemVfdCkgKi8KCiNpZiBkZWZpbmVkKF9fbmVlZF9TVERERUZfSF9taXNjKQovKiBJU085ODk5OjIwMTEgNy4yMCAoQzExIEFubmV4IEspOiBEZWZpbmUgcnNpemVfdCBpZiBfX1NURENfV0FOVF9MSUJfRVhUMV9fIGlzCiAqIGVuYWJsZWQuICovCiNpZiAoZGVmaW5lZChfX1NURENfV0FOVF9MSUJfRVhUMV9fKSAmJiBfX1NURENfV0FOVF9MSUJfRVhUMV9fID49IDEgJiYgXAogICAgICFkZWZpbmVkKF9SU0laRV9UKSkgfHwgX19oYXNfZmVhdHVyZShtb2R1bGVzKQovKiBBbHdheXMgZGVmaW5lIHJzaXplX3Qgd2hlbiBtb2R1bGVzIGFyZSBhdmFpbGFibGUuICovCiNpZiAhX19oYXNfZmVhdHVyZShtb2R1bGVzKQojZGVmaW5lIF9SU0laRV9UCiNlbmRpZgp0eXBlZGVmIF9fU0laRV9UWVBFX18gcnNpemVfdDsKI2VuZGlmCiNlbmRpZiAvKiBkZWZpbmVkKF9fbmVlZF9TVERERUZfSF9taXNjKSAqLwoKI2lmIGRlZmluZWQoX19uZWVkX3djaGFyX3QpCiNpZm5kZWYgX19jcGx1c3BsdXMKLyogQWx3YXlzIGRlZmluZSB3Y2hhcl90IHdoZW4gbW9kdWxlcyBhcmUgYXZhaWxhYmxlLiAqLwojaWYgIWRlZmluZWQoX1dDSEFSX1QpIHx8IF9faGFzX2ZlYXR1cmUobW9kdWxlcykKI2lmICFfX2hhc19mZWF0dXJlKG1vZHVsZXMpCiNkZWZpbmUgX1dDSEFSX1QKI2lmIGRlZmluZWQoX01TQ19FWFRFTlNJT05TKQojZGVmaW5lIF9XQ0hBUl9UX0RFRklORUQKI2VuZGlmCiNlbmRpZgp0eXBlZGVmIF9fV0NIQVJfVFlQRV9fIHdjaGFyX3Q7CiNlbmRpZgojZW5kaWYKI3VuZGVmIF9fbmVlZF93Y2hhcl90CiNlbmRpZiAvKiBkZWZpbmVkKF9fbmVlZF93Y2hhcl90KSAqLwoKI2lmIGRlZmluZWQoX19uZWVkX05VTEwpCiN1bmRlZiBOVUxMCiNpZmRlZiBfX2NwbHVzcGx1cwojICBpZiAhZGVmaW5lZChfX01JTkdXMzJfXykgJiYgIWRlZmluZWQoX01TQ19WRVIpCiMgICAgZGVmaW5lIE5VTEwgX19udWxsCiMgIGVsc2UKIyAgICBkZWZpbmUgTlVMTCAwCiMgIGVuZGlmCiNlbHNlCiMgIGRlZmluZSBOVUxMICgodm9pZCopMCkKI2VuZGlmCiNpZmRlZiBfX2NwbHVzcGx1cwojaWYgZGVmaW5lZChfTVNDX0VYVEVOU0lPTlMpICYmIGRlZmluZWQoX05BVElWRV9OVUxMUFRSX1NVUFBPUlRFRCkKbmFtZXNwYWNlIHN0ZCB7IHR5cGVkZWYgZGVjbHR5cGUobnVsbHB0cikgbnVsbHB0cl90OyB9CnVzaW5nIDo6c3RkOjpudWxscHRyX3Q7CiNlbmRpZgojZW5kaWYKI3VuZGVmIF9fbmVlZF9OVUxMCiNlbmRpZiAvKiBkZWZpbmVkKF9fbmVlZF9OVUxMKSAqLwoKI2lmIGRlZmluZWQoX19uZWVkX1NURERFRl9IX21pc2MpCiNpZiBfX1NURENfVkVSU0lPTl9fID49IDIwMTExMkwgfHwgX19jcGx1c3BsdXMgPj0gMjAxMTAzTAojaW5jbHVkZSAiX19zdGRkZWZfbWF4X2FsaWduX3QuaCIKI2VuZGlmCiNkZWZpbmUgb2Zmc2V0b2YodCwgZCkgX19idWlsdGluX29mZnNldG9mKHQsIGQpCiN1bmRlZiBfX25lZWRfU1REREVGX0hfbWlzYwojZW5kaWYgIC8qIGRlZmluZWQoX19uZWVkX1NURERFRl9IX21pc2MpICovCgovKiBTb21lIEMgbGlicmFyaWVzIGV4cGVjdCB0byBzZWUgYSB3aW50X3QgaGVyZS4gT3RoZXJzIChub3RhYmx5IE1pbkdXKSB3aWxsIHVzZQpfX1dJTlRfVFlQRV9fIGRpcmVjdGx5OyBhY2NvbW1vZGF0ZSBib3RoIGJ5IHJlcXVpcmluZyBfX25lZWRfd2ludF90ICovCiNpZiBkZWZpbmVkKF9fbmVlZF93aW50X3QpCi8qIEFsd2F5cyBkZWZpbmUgd2ludF90IHdoZW4gbW9kdWxlcyBhcmUgYXZhaWxhYmxlLiAqLwojaWYgIWRlZmluZWQoX1dJTlRfVCkgfHwgX19oYXNfZmVhdHVyZShtb2R1bGVzKQojaWYgIV9faGFzX2ZlYXR1cmUobW9kdWxlcykKI2RlZmluZSBfV0lOVF9UCiNlbmRpZgp0eXBlZGVmIF9fV0lOVF9UWVBFX18gd2ludF90OwojZW5kaWYKI3VuZGVmIF9fbmVlZF93aW50X3QKI2VuZGlmIC8qIF9fbmVlZF93aW50X3QgKi8KCiNlbmRpZgoALyo9PT0tLS0tLS0tLS0tLS0tLS0tLS0gdmFlc2ludHJpbi5oIC0gVkFFUyBpbnRyaW5zaWNzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKgogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwojaWZuZGVmIF9fSU1NSU5UUklOX0gKI2Vycm9yICJOZXZlciB1c2UgPHZhZXNpbnRyaW4uaD4gZGlyZWN0bHk7IGluY2x1ZGUgPGltbWludHJpbi5oPiBpbnN0ZWFkLiIKI2VuZGlmCgojaWZuZGVmIF9fVkFFU0lOVFJJTl9ICiNkZWZpbmUgX19WQUVTSU5UUklOX0gKCi8qIERlZmF1bHQgYXR0cmlidXRlcyBmb3IgWU1NIGZvcm1zLiAqLwojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUyBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oInZhZXMiKSwgX19taW5fdmVjdG9yX3dpZHRoX18oMjU2KSkpCgovKiBEZWZhdWx0IGF0dHJpYnV0ZXMgZm9yIFpNTSBmb3Jtcy4gKi8KI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlNfRiBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oImF2eDUxMmYsdmFlcyIpLCBfX21pbl92ZWN0b3Jfd2lkdGhfXyg1MTIpKSkKCgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUwogX21tMjU2X2Flc2VuY19lcGkxMjgoX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl9hZXNlbmMyNTYoKF9fdjRkaSkgX19BLAogICAgICAgICAgICAgIChfX3Y0ZGkpIF9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTCiBfbW0yNTZfYWVzZGVjX2VwaTEyOChfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX2Flc2RlYzI1NigoX192NGRpKSBfX0EsCiAgICAgICAgICAgICAgKF9fdjRkaSkgX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMKIF9tbTI1Nl9hZXNlbmNsYXN0X2VwaTEyOChfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpCnsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX2Flc2VuY2xhc3QyNTYoKF9fdjRkaSkgX19BLAogICAgICAgICAgICAgIChfX3Y0ZGkpIF9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTCiBfbW0yNTZfYWVzZGVjbGFzdF9lcGkxMjgoX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKQp7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl9hZXNkZWNsYXN0MjU2KChfX3Y0ZGkpIF9fQSwKICAgICAgICAgICAgICAoX192NGRpKSBfX0IpOwp9CgojaWZkZWYgX19BVlg1MTJGSU5UUklOX0gKc3RhdGljIF9faW5saW5lX18gX19tNTEyaSBfX0RFRkFVTFRfRk5fQVRUUlNfRgogX21tNTEyX2Flc2VuY19lcGkxMjgoX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKSBfX2J1aWx0aW5faWEzMl9hZXNlbmM1MTIoKF9fdjhkaSkgX19BLAogICAgICAgICAgICAgIChfX3Y4ZGkpIF9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTUxMmkgX19ERUZBVUxUX0ZOX0FUVFJTX0YKIF9tbTUxMl9hZXNkZWNfZXBpMTI4KF9fbTUxMmkgX19BLCBfX201MTJpIF9fQikKewogIHJldHVybiAoX19tNTEyaSkgX19idWlsdGluX2lhMzJfYWVzZGVjNTEyKChfX3Y4ZGkpIF9fQSwKICAgICAgICAgICAgICAoX192OGRpKSBfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSU19GCiBfbW01MTJfYWVzZW5jbGFzdF9lcGkxMjgoX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKSBfX2J1aWx0aW5faWEzMl9hZXNlbmNsYXN0NTEyKChfX3Y4ZGkpIF9fQSwKICAgICAgICAgICAgICAoX192OGRpKSBfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX201MTJpIF9fREVGQVVMVF9GTl9BVFRSU19GCiBfbW01MTJfYWVzZGVjbGFzdF9lcGkxMjgoX19tNTEyaSBfX0EsIF9fbTUxMmkgX19CKQp7CiAgcmV0dXJuIChfX201MTJpKSBfX2J1aWx0aW5faWEzMl9hZXNkZWNsYXN0NTEyKChfX3Y4ZGkpIF9fQSwKICAgICAgICAgICAgICAoX192OGRpKSBfX0IpOwp9CiNlbmRpZiAvLyBfX0FWWDUxMkZJTlRSSU5fSAoKI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUwojdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTX0YKCiNlbmRpZgoAdmVjaW50cmluLmgALyo9PT0tLS0tLS0tLS0tLS0tLS0geDg2Z3ByaW50cmluLmggLSBYODYgR1BSIGludHJpbnNpY3MgLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqCiAqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCiAqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCgojaWZuZGVmIF9fWDg2R1BSSU5UUklOX0gKI2RlZmluZSBfX1g4NkdQUklOVFJJTl9ICgojaWYgIShkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fU0NFX18pKSB8fCBfX2hhc19mZWF0dXJlKG1vZHVsZXMpIHx8ICAgICAgXAogICAgZGVmaW5lZChfX0hSRVNFVF9fKQojaW5jbHVkZSA8aHJlc2V0aW50cmluLmg+CiNlbmRpZgoKI2lmICEoZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX1NDRV9fKSkgfHwgX19oYXNfZmVhdHVyZShtb2R1bGVzKSB8fCAgICAgIFwKICAgIGRlZmluZWQoX19VSU5UUl9fKQojaW5jbHVkZSA8dWludHJpbnRyaW4uaD4KI2VuZGlmCgojaWYgIShkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fU0NFX18pKSB8fCBfX2hhc19mZWF0dXJlKG1vZHVsZXMpIHx8ICAgICAgXAogICAgZGVmaW5lZChfX0NSQzMyX18pCiNpbmNsdWRlIDxjcmMzMmludHJpbi5oPgojZW5kaWYKCiNkZWZpbmUgX19TU0NfTUFSSyhUYWcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19hc21fXyBfX3ZvbGF0aWxlX18oIm1vdiB7JSVlYngsICUlZWF4fGVheCwgZWJ4fTsgIiAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgIm1vdiB7JTAsICUlZWJ4fGVieCwgJTB9OyAiICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgIi5ieXRlIDB4NjQsIDB4NjcsIDB4OTA7ICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgIm1vdiB7JSVlYXgsICUlZWJ4fGVieCwgZWF4fTsiIDo6ImkiKFRhZykgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgOiAiJWVheCIpOwoKI2VuZGlmIC8qIF9fWDg2R1BSSU5UUklOX0ggKi8KAHBhdGgATWlzcyBleHBvbmVudCBpbiBudW1iZXIuAGV4dGVybmFsL3JlZ2V4LXJlMi9yZTIvcmUyLmNjAEVycm9yIGNvbXBpbGluZyAnAFxTAFs6d29yZDpdAGFsdCAtPiAlZCB8ICVkAFVuZXhwZWN0ZWQgc3BlY2lhbCBzdGF0ZSBpbiBSdW5TdGF0ZU9uQnl0ZQBubyBhcmd1bWVudCBmb3IgcmVwZXRpdGlvbiBvcGVyYXRvcgBleHRlcm5hbC9yZWdleC1yZTIvcmUyL3NpbXBsaWZ5LmNjAFNpbXBsaWZ5IGZhaWxlZCBvbiAAJABcegBceCUwMngAQnJhaWxsZQBJbnNjcmlwdGlvbmFsX1BhaGxhdmkASW5zY3JpcHRpb25hbF9QYXJ0aGlhbgBNZW5kZV9LaWtha3VpAEZhaWxlZCB0byBjcmVhdGUgcGlwZSwgZXJybm89JWQAU2VjdGlvbiBuYW1lICclcycgaXMgdG9vIGxvbmcgKCV6dSk7IHNlY3Rpb24gd2lsbCBub3QgYmUgZm91bmQgKGV2ZW4gaWYgcHJlc2VudCkuAGJhZCBtYWdpYyBudW1iZXIgaW4gQWRkVG9GcmVlbGlzdCgpAF9HTE9CQUxfX05fAGRlY2ltYWwzMgAtLQBjbQBVTkFVVEhFTlRJQ0FURUQAdHJlZS0+aGVpZ2h0KCkgPD0ga01heEhlaWdodAAgZG9lcyBub3QgbWF0Y2ggcG9zaXRpb25hbCBsZW5ndGggAGRldGVjdGVkIGlsbGVnYWwgcmVjdXJzaW9uIGluIE11dGV4IGNvZGUALTI1NjIwNDc3ODgwMTUyMTVoMzBtOHMAL2NvbmZpZy9kYXRhL3R6ZGF0YS8AUC01MjEAQUVTLUdDTSBFbmNyeXB0aW9uIEtBVABEQlJHIEdlbmVyYXRlIEtBVAAlczogZ2V0cmFuZG9tIGluZGljYXRlcyB0aGF0IHRoZSBlbnRyb3B5IHBvb2wgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkLiBSYXRoZXIgdGhhbiBjb250aW51ZSB3aXRoIHBvb3IgZW50cm9weSwgdGhpcyBwcm9jZXNzIHdpbGwgYmxvY2sgdW50aWwgZW50cm9weSBpcyBhdmFpbGFibGUuCgBreXRoZS9wcm90by9hbmFseXNpcy5wcm90bwAgdHlwZSBkb2VzIG5vdCBtYXRjaAoAa3l0aGUucHJvdG8uQ3h4Q29tcGlsYXRpb25Vbml0RGV0YWlscy5TdGF0UGF0aC5wYXRoAC1jAGMrKwBPdXRwdXQgZmlsZSBtdXN0IGhhdmUgJy5remlwJyBleHRlbnNpb24ALyo9PT0tLS0tIF9fY2xhbmdfaGlwX2NtYXRoLmggLSBISVAgY21hdGggZGVjbHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKi8KCiNpZm5kZWYgX19DTEFOR19ISVBfQ01BVEhfSF9fCiNkZWZpbmUgX19DTEFOR19ISVBfQ01BVEhfSF9fCgojaWYgIWRlZmluZWQoX19ISVBfXykgJiYgIWRlZmluZWQoX19PUEVOTVBfQU1ER0NOX18pCiNlcnJvciAiVGhpcyBmaWxlIGlzIGZvciBISVAgYW5kIE9wZW5NUCBBTURHQ04gZGV2aWNlIGNvbXBpbGF0aW9uIG9ubHkuIgojZW5kaWYKCiNpZiAhZGVmaW5lZChfX0hJUENDX1JUQ19fKQojaWYgZGVmaW5lZChfX2NwbHVzcGx1cykKI2luY2x1ZGUgPGxpbWl0cz4KI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgojaW5jbHVkZSA8dXRpbGl0eT4KI2VuZGlmCiNpbmNsdWRlIDxsaW1pdHMuaD4KI2luY2x1ZGUgPHN0ZGludC5oPgojZW5kaWYgLy8gIWRlZmluZWQoX19ISVBDQ19SVENfXykKCiNwcmFnbWEgcHVzaF9tYWNybygiX19ERVZJQ0VfXyIpCiNwcmFnbWEgcHVzaF9tYWNybygiX19DT05TVEVYUFJfXyIpCiNpZmRlZiBfX09QRU5NUF9BTURHQ05fXwojZGVmaW5lIF9fREVWSUNFX18gc3RhdGljIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUsIG5vdGhyb3cpKQojZGVmaW5lIF9fQ09OU1RFWFBSX18gY29uc3RleHByCiNlbHNlCiNkZWZpbmUgX19ERVZJQ0VfXyBzdGF0aWMgX19kZXZpY2VfXyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpCiNkZWZpbmUgX19DT05TVEVYUFJfXwojZW5kaWYgLy8gX19PUEVOTVBfQU1ER0NOX18KCi8vIFN0YXJ0IHdpdGggZnVuY3Rpb25zIHRoYXQgY2Fubm90IGJlIGRlZmluZWQgYnkgREVGIG1hY3JvcyBiZWxvdy4KI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpCiNpZiBkZWZpbmVkIF9fT1BFTk1QX0FNREdDTl9fCl9fREVWSUNFX18gX19DT05TVEVYUFJfXyBmbG9hdCBmYWJzKGZsb2F0IF9feCkgeyByZXR1cm4gOjpmYWJzZihfX3gpOyB9Cl9fREVWSUNFX18gX19DT05TVEVYUFJfXyBmbG9hdCBzaW4oZmxvYXQgX194KSB7IHJldHVybiA6OnNpbmYoX194KTsgfQpfX0RFVklDRV9fIF9fQ09OU1RFWFBSX18gZmxvYXQgY29zKGZsb2F0IF9feCkgeyByZXR1cm4gOjpjb3NmKF9feCk7IH0KI2VuZGlmCl9fREVWSUNFX18gX19DT05TVEVYUFJfXyBkb3VibGUgYWJzKGRvdWJsZSBfX3gpIHsgcmV0dXJuIDo6ZmFicyhfX3gpOyB9Cl9fREVWSUNFX18gX19DT05TVEVYUFJfXyBmbG9hdCBhYnMoZmxvYXQgX194KSB7IHJldHVybiA6OmZhYnNmKF9feCk7IH0KX19ERVZJQ0VfXyBfX0NPTlNURVhQUl9fIGxvbmcgbG9uZyBhYnMobG9uZyBsb25nIF9fbikgeyByZXR1cm4gOjpsbGFicyhfX24pOyB9Cl9fREVWSUNFX18gX19DT05TVEVYUFJfXyBsb25nIGFicyhsb25nIF9fbikgeyByZXR1cm4gOjpsYWJzKF9fbik7IH0KX19ERVZJQ0VfXyBfX0NPTlNURVhQUl9fIGZsb2F0IGZtYShmbG9hdCBfX3gsIGZsb2F0IF9feSwgZmxvYXQgX196KSB7CiAgcmV0dXJuIDo6Zm1hZihfX3gsIF9feSwgX196KTsKfQojaWYgIWRlZmluZWQoX19ISVBDQ19SVENfXykKLy8gVGhlIHZhbHVlIHJldHVybmVkIGJ5IGZwY2xhc3NpZnkgaXMgcGxhdGZvcm0gZGVwZW5kZW50LCB0aGVyZWZvcmUgaXQgaXMgbm90Ci8vIHN1cHBvcnRlZCBieSBoaXBSVEMuCl9fREVWSUNFX18gX19DT05TVEVYUFJfXyBpbnQgZnBjbGFzc2lmeShmbG9hdCBfX3gpIHsKICByZXR1cm4gX19idWlsdGluX2ZwY2xhc3NpZnkoRlBfTkFOLCBGUF9JTkZJTklURSwgRlBfTk9STUFMLCBGUF9TVUJOT1JNQUwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZQX1pFUk8sIF9feCk7Cn0KX19ERVZJQ0VfXyBfX0NPTlNURVhQUl9fIGludCBmcGNsYXNzaWZ5KGRvdWJsZSBfX3gpIHsKICByZXR1cm4gX19idWlsdGluX2ZwY2xhc3NpZnkoRlBfTkFOLCBGUF9JTkZJTklURSwgRlBfTk9STUFMLCBGUF9TVUJOT1JNQUwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZQX1pFUk8sIF9feCk7Cn0KI2VuZGlmIC8vICFkZWZpbmVkKF9fSElQQ0NfUlRDX18pCgpfX0RFVklDRV9fIF9fQ09OU1RFWFBSX18gZmxvYXQgZnJleHAoZmxvYXQgX19hcmcsIGludCAqX19leHApIHsKICByZXR1cm4gOjpmcmV4cGYoX19hcmcsIF9fZXhwKTsKfQoKI2lmIGRlZmluZWQoX19PUEVOTVBfQU1ER0NOX18pCi8vIEZvciBPcGVuTVAgd2Ugd29yayBhcm91bmQgc29tZSBvbGQgc3lzdGVtIGhlYWRlcnMgdGhhdCBoYXZlIG5vbi1jb25mb3JtaW5nCi8vIGBpc2luZihmbG9hdClgIGFuZCBgaXNuYW4oZmxvYXQpYCBpbXBsZW1lbnRhdGlvbnMgdGhhdCByZXR1cm4gYW4gYGludGAuIFdlIGRvCi8vIHRoaXMgYnkgcHJvdmlkaW5nIHR3byB2ZXJzaW9ucyBvZiB0aGVzZSBmdW5jdGlvbnMsIGRpZmZlcmluZyBvbmx5IGluIHRoZQovLyByZXR1cm4gdHlwZS4gVG8gYXZvaWQgY29uZmxpY3RpbmcgZGVmaW5pdGlvbnMgd2UgZGlzYWJsZSBpbXBsaWNpdCBiYXNlCi8vIGZ1bmN0aW9uIGdlbmVyYXRpb24uIFRoYXQgbWVhbnMgd2Ugd2lsbCBlbmQgdXAgd2l0aCB0d28gc3BlY2lhbGl6YXRpb25zLCBvbmUKLy8gcGVyIHR5cGUsIGJ1dCBvbmx5IG9uZSBoYXMgYSBiYXNlIGZ1bmN0aW9uIGRlZmluZWQgYnkgdGhlIHN5c3RlbSBoZWFkZXIuCiNwcmFnbWEgb21wIGJlZ2luIGRlY2xhcmUgdmFyaWFudCBtYXRjaCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBpbXBsZW1lbnRhdGlvbiA9IHtleHRlbnNpb24oZGlzYWJsZV9pbXBsaWNpdF9iYXNlKX0pCgovLyBGSVhNRTogV2UgbGFjayBhbiBleHRlbnNpb24gdG8gY3VzdG9taXplIHRoZSBtYW5nbGluZyBvZiB0aGUgdmFyaWFudHMsIGUuZy4sCi8vICAgICAgICBhZGQgYSBzdWZmaXguIFRoaXMgbWVhbnMgd2Ugd291bGQgY2xhc2ggd2l0aCB0aGUgbmFtZXMgb2YgdGhlIHZhcmlhbnRzCi8vICAgICAgICAobm90ZSB0aGF0IHdlIGRvIG5vdCBjcmVhdGUgaW1wbGljaXQgYmFzZSBmdW5jdGlvbnMgaGVyZSkuIFRvIGF2b2lkCi8vICAgICAgICB0aGlzIGNsYXNoIHdlIGFkZCBhIG5ldyB0cmFpdCB0byBzb21lIG9mIHRoZW0gdGhhdCBpcyBhbHdheXMgdHJ1ZQovLyAgICAgICAgKHRoaXMgaXMgTExWTSBhZnRlciBhbGwgOykpLiBJdCB3aWxsIG9ubHkgaW5mbHVlbmNlIHRoZSBtYW5nbGVkIG5hbWUKLy8gICAgICAgIG9mIHRoZSB2YXJpYW50cyBpbnNpZGUgdGhlIGlubmVyIHJlZ2lvbiBhbmQgYXZvaWQgdGhlIGNsYXNoLgojcHJhZ21hIG9tcCBiZWdpbiBkZWNsYXJlIHZhcmlhbnQgbWF0Y2goaW1wbGVtZW50YXRpb24gPSB7dmVuZG9yKGxsdm0pfSkKCl9fREVWSUNFX18gX19DT05TVEVYUFJfXyBpbnQgaXNpbmYoZmxvYXQgX194KSB7IHJldHVybiA6Ol9faXNpbmZmKF9feCk7IH0KX19ERVZJQ0VfXyBfX0NPTlNURVhQUl9fIGludCBpc2luZihkb3VibGUgX194KSB7IHJldHVybiA6Ol9faXNpbmYoX194KTsgfQpfX0RFVklDRV9fIF9fQ09OU1RFWFBSX18gaW50IGlzZmluaXRlKGZsb2F0IF9feCkgeyByZXR1cm4gOjpfX2Zpbml0ZWYoX194KTsgfQpfX0RFVklDRV9fIF9fQ09OU1RFWFBSX18gaW50IGlzZmluaXRlKGRvdWJsZSBfX3gpIHsgcmV0dXJuIDo6X19maW5pdGUoX194KTsgfQpfX0RFVklDRV9fIF9fQ09OU1RFWFBSX18gaW50IGlzbmFuKGZsb2F0IF9feCkgeyByZXR1cm4gOjpfX2lzbmFuZihfX3gpOyB9Cl9fREVWSUNFX18gX19DT05TVEVYUFJfXyBpbnQgaXNuYW4oZG91YmxlIF9feCkgeyByZXR1cm4gOjpfX2lzbmFuKF9feCk7IH0KCiNwcmFnbWEgb21wIGVuZCBkZWNsYXJlIHZhcmlhbnQKI2VuZGlmIC8vIGRlZmluZWQoX19PUEVOTVBfQU1ER0NOX18pCgpfX0RFVklDRV9fIF9fQ09OU1RFWFBSX18gYm9vbCBpc2luZihmbG9hdCBfX3gpIHsgcmV0dXJuIDo6X19pc2luZmYoX194KTsgfQpfX0RFVklDRV9fIF9fQ09OU1RFWFBSX18gYm9vbCBpc2luZihkb3VibGUgX194KSB7IHJldHVybiA6Ol9faXNpbmYoX194KTsgfQpfX0RFVklDRV9fIF9fQ09OU1RFWFBSX18gYm9vbCBpc2Zpbml0ZShmbG9hdCBfX3gpIHsgcmV0dXJuIDo6X19maW5pdGVmKF9feCk7IH0KX19ERVZJQ0VfXyBfX0NPTlNURVhQUl9fIGJvb2wgaXNmaW5pdGUoZG91YmxlIF9feCkgeyByZXR1cm4gOjpfX2Zpbml0ZShfX3gpOyB9Cl9fREVWSUNFX18gX19DT05TVEVYUFJfXyBib29sIGlzbmFuKGZsb2F0IF9feCkgeyByZXR1cm4gOjpfX2lzbmFuZihfX3gpOyB9Cl9fREVWSUNFX18gX19DT05TVEVYUFJfXyBib29sIGlzbmFuKGRvdWJsZSBfX3gpIHsgcmV0dXJuIDo6X19pc25hbihfX3gpOyB9CgojaWYgZGVmaW5lZChfX09QRU5NUF9BTURHQ05fXykKI3ByYWdtYSBvbXAgZW5kIGRlY2xhcmUgdmFyaWFudAojZW5kaWYgLy8gZGVmaW5lZChfX09QRU5NUF9BTURHQ05fXykKCl9fREVWSUNFX18gX19DT05TVEVYUFJfXyBib29sIGlzZ3JlYXRlcihmbG9hdCBfX3gsIGZsb2F0IF9feSkgewogIHJldHVybiBfX2J1aWx0aW5faXNncmVhdGVyKF9feCwgX195KTsKfQpfX0RFVklDRV9fIF9fQ09OU1RFWFBSX18gYm9vbCBpc2dyZWF0ZXIoZG91YmxlIF9feCwgZG91YmxlIF9feSkgewogIHJldHVybiBfX2J1aWx0aW5faXNncmVhdGVyKF9feCwgX195KTsKfQpfX0RFVklDRV9fIF9fQ09OU1RFWFBSX18gYm9vbCBpc2dyZWF0ZXJlcXVhbChmbG9hdCBfX3gsIGZsb2F0IF9feSkgewogIHJldHVybiBfX2J1aWx0aW5faXNncmVhdGVyZXF1YWwoX194LCBfX3kpOwp9Cl9fREVWSUNFX18gX19DT05TVEVYUFJfXyBib29sIGlzZ3JlYXRlcmVxdWFsKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHsKICByZXR1cm4gX19idWlsdGluX2lzZ3JlYXRlcmVxdWFsKF9feCwgX195KTsKfQpfX0RFVklDRV9fIF9fQ09OU1RFWFBSX18gYm9vbCBpc2xlc3MoZmxvYXQgX194LCBmbG9hdCBfX3kpIHsKICByZXR1cm4gX19idWlsdGluX2lzbGVzcyhfX3gsIF9feSk7Cn0KX19ERVZJQ0VfXyBfX0NPTlNURVhQUl9fIGJvb2wgaXNsZXNzKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHsKICByZXR1cm4gX19idWlsdGluX2lzbGVzcyhfX3gsIF9feSk7Cn0KX19ERVZJQ0VfXyBfX0NPTlNURVhQUl9fIGJvb2wgaXNsZXNzZXF1YWwoZmxvYXQgX194LCBmbG9hdCBfX3kpIHsKICByZXR1cm4gX19idWlsdGluX2lzbGVzc2VxdWFsKF9feCwgX195KTsKfQpfX0RFVklDRV9fIF9fQ09OU1RFWFBSX18gYm9vbCBpc2xlc3NlcXVhbChkb3VibGUgX194LCBkb3VibGUgX195KSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9pc2xlc3NlcXVhbChfX3gsIF9feSk7Cn0KX19ERVZJQ0VfXyBfX0NPTlNURVhQUl9fIGJvb2wgaXNsZXNzZ3JlYXRlcihmbG9hdCBfX3gsIGZsb2F0IF9feSkgewogIHJldHVybiBfX2J1aWx0aW5faXNsZXNzZ3JlYXRlcihfX3gsIF9feSk7Cn0KX19ERVZJQ0VfXyBfX0NPTlNURVhQUl9fIGJvb2wgaXNsZXNzZ3JlYXRlcihkb3VibGUgX194LCBkb3VibGUgX195KSB7CiAgcmV0dXJuIF9fYnVpbHRpbl9pc2xlc3NncmVhdGVyKF9feCwgX195KTsKfQpfX0RFVklDRV9fIF9fQ09OU1RFWFBSX18gYm9vbCBpc25vcm1hbChmbG9hdCBfX3gpIHsKICByZXR1cm4gX19idWlsdGluX2lzbm9ybWFsKF9feCk7Cn0KX19ERVZJQ0VfXyBfX0NPTlNURVhQUl9fIGJvb2wgaXNub3JtYWwoZG91YmxlIF9feCkgewogIHJldHVybiBfX2J1aWx0aW5faXNub3JtYWwoX194KTsKfQpfX0RFVklDRV9fIF9fQ09OU1RFWFBSX18gYm9vbCBpc3Vub3JkZXJlZChmbG9hdCBfX3gsIGZsb2F0IF9feSkgewogIHJldHVybiBfX2J1aWx0aW5faXN1bm9yZGVyZWQoX194LCBfX3kpOwp9Cl9fREVWSUNFX18gX19DT05TVEVYUFJfXyBib29sIGlzdW5vcmRlcmVkKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHsKICByZXR1cm4gX19idWlsdGluX2lzdW5vcmRlcmVkKF9feCwgX195KTsKfQpfX0RFVklDRV9fIF9fQ09OU1RFWFBSX18gZmxvYXQgbW9kZihmbG9hdCBfX3gsIGZsb2F0ICpfX2lwdHIpIHsKICByZXR1cm4gOjptb2RmZihfX3gsIF9faXB0cik7Cn0KX19ERVZJQ0VfXyBfX0NPTlNURVhQUl9fIGZsb2F0IHBvdyhmbG9hdCBfX2Jhc2UsIGludCBfX2lleHApIHsKICByZXR1cm4gOjpwb3dpZihfX2Jhc2UsIF9faWV4cCk7Cn0KX19ERVZJQ0VfXyBfX0NPTlNURVhQUl9fIGRvdWJsZSBwb3coZG91YmxlIF9fYmFzZSwgaW50IF9faWV4cCkgewogIHJldHVybiA6OnBvd2koX19iYXNlLCBfX2lleHApOwp9Cl9fREVWSUNFX18gX19DT05TVEVYUFJfXyBmbG9hdCByZW1xdW8oZmxvYXQgX194LCBmbG9hdCBfX3ksIGludCAqX19xdW8pIHsKICByZXR1cm4gOjpyZW1xdW9mKF9feCwgX195LCBfX3F1byk7Cn0KX19ERVZJQ0VfXyBfX0NPTlNURVhQUl9fIGZsb2F0IHNjYWxibG4oZmxvYXQgX194LCBsb25nIGludCBfX24pIHsKICByZXR1cm4gOjpzY2FsYmxuZihfX3gsIF9fbik7Cn0KX19ERVZJQ0VfXyBfX0NPTlNURVhQUl9fIGJvb2wgc2lnbmJpdChmbG9hdCBfX3gpIHsgcmV0dXJuIDo6X19zaWduYml0ZihfX3gpOyB9Cl9fREVWSUNFX18gX19DT05TVEVYUFJfXyBib29sIHNpZ25iaXQoZG91YmxlIF9feCkgeyByZXR1cm4gOjpfX3NpZ25iaXQoX194KTsgfQoKLy8gTm90YWJseSBtaXNzaW5nIGFib3ZlIGlzIG5leHR0b3dhcmQuICBXZSBvbWl0IGl0IGJlY2F1c2UKLy8gb2NtbCBkb2Vzbid0IHByb3ZpZGUgYW4gaW1wbGVtZW50YXRpb24sIGFuZCB3ZSBkb24ndCB3YW50IHRvIGJlIGluIHRoZQovLyBidXNpbmVzcyBvZiBpbXBsZW1lbnRpbmcgdHJpY2t5IGxpYm0gZnVuY3Rpb25zIGluIHRoaXMgaGVhZGVyLgoKLy8gT3RoZXIgZnVuY3Rpb25zLgpfX0RFVklDRV9fIF9fQ09OU1RFWFBSX18gX0Zsb2F0MTYgZm1hKF9GbG9hdDE2IF9feCwgX0Zsb2F0MTYgX195LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9GbG9hdDE2IF9feikgewogIHJldHVybiBfX29jbWxfZm1hX2YxNihfX3gsIF9feSwgX196KTsKfQpfX0RFVklDRV9fIF9fQ09OU1RFWFBSX18gX0Zsb2F0MTYgcG93KF9GbG9hdDE2IF9fYmFzZSwgaW50IF9faWV4cCkgewogIHJldHVybiBfX29jbWxfcG93bl9mMTYoX19iYXNlLCBfX2lleHApOwp9CgojaWZuZGVmIF9fT1BFTk1QX0FNREdDTl9fCi8vIEJFR0lOIERFRl9GVU4gYW5kIEhJUF9PVkVSTE9BRAoKLy8gQkVHSU4gREVGX0ZVTgoKI3ByYWdtYSBwdXNoX21hY3JvKCJfX0RFRl9GVU4xIikKI3ByYWdtYSBwdXNoX21hY3JvKCJfX0RFRl9GVU4yIikKI3ByYWdtYSBwdXNoX21hY3JvKCJfX0RFRl9GVU4yX0ZJIikKCi8vIERlZmluZSBjbWF0aCBmdW5jdGlvbnMgd2l0aCBmbG9hdCBhcmd1bWVudCBhbmQgcmV0dXJucyBfX3JldHR5LgojZGVmaW5lIF9fREVGX0ZVTjEoX19yZXR0eSwgX19mdW5jKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fREVWSUNFX18gX19DT05TVEVYUFJfXyBfX3JldHR5IF9fZnVuYyhmbG9hdCBfX3gpIHsgcmV0dXJuIF9fZnVuYyMjZihfX3gpOyB9CgovLyBEZWZpbmUgY21hdGggZnVuY3Rpb25zIHdpdGggdHdvIGZsb2F0IGFyZ3VtZW50cyBhbmQgcmV0dXJucyBfX3JldHR5LgojZGVmaW5lIF9fREVGX0ZVTjIoX19yZXR0eSwgX19mdW5jKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fREVWSUNFX18gX19DT05TVEVYUFJfXyBfX3JldHR5IF9fZnVuYyhmbG9hdCBfX3gsIGZsb2F0IF9feSkgeyAgICAgICAgICAgICAgXAogICAgcmV0dXJuIF9fZnVuYyMjZihfX3gsIF9feSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0KCi8vIERlZmluZSBjbWF0aCBmdW5jdGlvbnMgd2l0aCBhIGZsb2F0IGFuZCBhbiBpbnQgYXJndW1lbnQgYW5kIHJldHVybnMgX19yZXR0eS4KI2RlZmluZSBfX0RFRl9GVU4yX0ZJKF9fcmV0dHksIF9fZnVuYykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX0RFVklDRV9fIF9fQ09OU1RFWFBSX18gX19yZXR0eSBfX2Z1bmMoZmxvYXQgX194LCBpbnQgX195KSB7ICAgICAgICAgICAgICAgIFwKICAgIHJldHVybiBfX2Z1bmMjI2YoX194LCBfX3kpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9CgpfX0RFRl9GVU4xKGZsb2F0LCBhY29zKQpfX0RFRl9GVU4xKGZsb2F0LCBhY29zaCkKX19ERUZfRlVOMShmbG9hdCwgYXNpbikKX19ERUZfRlVOMShmbG9hdCwgYXNpbmgpCl9fREVGX0ZVTjEoZmxvYXQsIGF0YW4pCl9fREVGX0ZVTjIoZmxvYXQsIGF0YW4yKQpfX0RFRl9GVU4xKGZsb2F0LCBhdGFuaCkKX19ERUZfRlVOMShmbG9hdCwgY2JydCkKX19ERUZfRlVOMShmbG9hdCwgY2VpbCkKX19ERUZfRlVOMihmbG9hdCwgY29weXNpZ24pCl9fREVGX0ZVTjEoZmxvYXQsIGNvcykKX19ERUZfRlVOMShmbG9hdCwgY29zaCkKX19ERUZfRlVOMShmbG9hdCwgZXJmKQpfX0RFRl9GVU4xKGZsb2F0LCBlcmZjKQpfX0RFRl9GVU4xKGZsb2F0LCBleHApCl9fREVGX0ZVTjEoZmxvYXQsIGV4cDIpCl9fREVGX0ZVTjEoZmxvYXQsIGV4cG0xKQpfX0RFRl9GVU4xKGZsb2F0LCBmYWJzKQpfX0RFRl9GVU4yKGZsb2F0LCBmZGltKQpfX0RFRl9GVU4xKGZsb2F0LCBmbG9vcikKX19ERUZfRlVOMihmbG9hdCwgZm1heCkKX19ERUZfRlVOMihmbG9hdCwgZm1pbikKX19ERUZfRlVOMihmbG9hdCwgZm1vZCkKX19ERUZfRlVOMihmbG9hdCwgaHlwb3QpCl9fREVGX0ZVTjEoaW50LCBpbG9nYikKX19ERUZfRlVOMl9GSShmbG9hdCwgbGRleHApCl9fREVGX0ZVTjEoZmxvYXQsIGxnYW1tYSkKX19ERUZfRlVOMShmbG9hdCwgbG9nKQpfX0RFRl9GVU4xKGZsb2F0LCBsb2cxMCkKX19ERUZfRlVOMShmbG9hdCwgbG9nMXApCl9fREVGX0ZVTjEoZmxvYXQsIGxvZzIpCl9fREVGX0ZVTjEoZmxvYXQsIGxvZ2IpCl9fREVGX0ZVTjEobG9uZyBsb25nLCBsbHJpbnQpCl9fREVGX0ZVTjEobG9uZyBsb25nLCBsbHJvdW5kKQpfX0RFRl9GVU4xKGxvbmcsIGxyaW50KQpfX0RFRl9GVU4xKGxvbmcsIGxyb3VuZCkKX19ERUZfRlVOMShmbG9hdCwgbmVhcmJ5aW50KQpfX0RFRl9GVU4yKGZsb2F0LCBuZXh0YWZ0ZXIpCl9fREVGX0ZVTjIoZmxvYXQsIHBvdykKX19ERUZfRlVOMihmbG9hdCwgcmVtYWluZGVyKQpfX0RFRl9GVU4xKGZsb2F0LCByaW50KQpfX0RFRl9GVU4xKGZsb2F0LCByb3VuZCkKX19ERUZfRlVOMl9GSShmbG9hdCwgc2NhbGJuKQpfX0RFRl9GVU4xKGZsb2F0LCBzaW4pCl9fREVGX0ZVTjEoZmxvYXQsIHNpbmgpCl9fREVGX0ZVTjEoZmxvYXQsIHNxcnQpCl9fREVGX0ZVTjEoZmxvYXQsIHRhbikKX19ERUZfRlVOMShmbG9hdCwgdGFuaCkKX19ERUZfRlVOMShmbG9hdCwgdGdhbW1hKQpfX0RFRl9GVU4xKGZsb2F0LCB0cnVuYykKCiNwcmFnbWEgcG9wX21hY3JvKCJfX0RFRl9GVU4xIikKI3ByYWdtYSBwb3BfbWFjcm8oIl9fREVGX0ZVTjIiKQojcHJhZ21hIHBvcF9tYWNybygiX19ERUZfRlVOMl9GSSIpCgovLyBFTkQgREVGX0ZVTgoKLy8gQkVHSU4gSElQX09WRVJMT0FECgojcHJhZ21hIHB1c2hfbWFjcm8oIl9fSElQX09WRVJMT0FEMSIpCiNwcmFnbWEgcHVzaF9tYWNybygiX19ISVBfT1ZFUkxPQUQyIikKCi8vIF9faGlwX2VuYWJsZV9pZjo6dHlwZSBpcyBhIHR5cGUgZnVuY3Rpb24gd2hpY2ggcmV0dXJucyBfX1QgaWYgX19CIGlzIHRydWUuCnRlbXBsYXRlIDxib29sIF9fQiwgY2xhc3MgX19UID0gdm9pZD4gc3RydWN0IF9faGlwX2VuYWJsZV9pZiB7fTsKCnRlbXBsYXRlIDxjbGFzcyBfX1Q+IHN0cnVjdCBfX2hpcF9lbmFibGVfaWY8dHJ1ZSwgX19UPiB7IHR5cGVkZWYgX19UIHR5cGU7IH07CgpuYW1lc3BhY2UgX19oaXAgewp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPiBzdHJ1Y3QgaXNfaW50ZWdyYWwgewogIGVudW0geyB2YWx1ZSA9IDAgfTsKfTsKdGVtcGxhdGUgPD4gc3RydWN0IGlzX2ludGVncmFsPGJvb2w+IHsKICBlbnVtIHsgdmFsdWUgPSAxIH07Cn07CnRlbXBsYXRlIDw+IHN0cnVjdCBpc19pbnRlZ3JhbDxjaGFyPiB7CiAgZW51bSB7IHZhbHVlID0gMSB9Owp9Owp0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfaW50ZWdyYWw8c2lnbmVkIGNoYXI+IHsKICBlbnVtIHsgdmFsdWUgPSAxIH07Cn07CnRlbXBsYXRlIDw+IHN0cnVjdCBpc19pbnRlZ3JhbDx1bnNpZ25lZCBjaGFyPiB7CiAgZW51bSB7IHZhbHVlID0gMSB9Owp9Owp0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfaW50ZWdyYWw8d2NoYXJfdD4gewogIGVudW0geyB2YWx1ZSA9IDEgfTsKfTsKdGVtcGxhdGUgPD4gc3RydWN0IGlzX2ludGVncmFsPHNob3J0PiB7CiAgZW51bSB7IHZhbHVlID0gMSB9Owp9Owp0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfaW50ZWdyYWw8dW5zaWduZWQgc2hvcnQ+IHsKICBlbnVtIHsgdmFsdWUgPSAxIH07Cn07CnRlbXBsYXRlIDw+IHN0cnVjdCBpc19pbnRlZ3JhbDxpbnQ+IHsKICBlbnVtIHsgdmFsdWUgPSAxIH07Cn07CnRlbXBsYXRlIDw+IHN0cnVjdCBpc19pbnRlZ3JhbDx1bnNpZ25lZCBpbnQ+IHsKICBlbnVtIHsgdmFsdWUgPSAxIH07Cn07CnRlbXBsYXRlIDw+IHN0cnVjdCBpc19pbnRlZ3JhbDxsb25nPiB7CiAgZW51bSB7IHZhbHVlID0gMSB9Owp9Owp0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfaW50ZWdyYWw8dW5zaWduZWQgbG9uZz4gewogIGVudW0geyB2YWx1ZSA9IDEgfTsKfTsKdGVtcGxhdGUgPD4gc3RydWN0IGlzX2ludGVncmFsPGxvbmcgbG9uZz4gewogIGVudW0geyB2YWx1ZSA9IDEgfTsKfTsKdGVtcGxhdGUgPD4gc3RydWN0IGlzX2ludGVncmFsPHVuc2lnbmVkIGxvbmcgbG9uZz4gewogIGVudW0geyB2YWx1ZSA9IDEgfTsKfTsKCi8vIFRvRG86IHNwZWNpYWxpemVzIGlzX2FyaXRobWV0aWM8X0Zsb2F0MTY+CnRlbXBsYXRlIDxjbGFzcyBfVHA+IHN0cnVjdCBpc19hcml0aG1ldGljIHsKICBlbnVtIHsgdmFsdWUgPSAwIH07Cn07CnRlbXBsYXRlIDw+IHN0cnVjdCBpc19hcml0aG1ldGljPGJvb2w+IHsKICBlbnVtIHsgdmFsdWUgPSAxIH07Cn07CnRlbXBsYXRlIDw+IHN0cnVjdCBpc19hcml0aG1ldGljPGNoYXI+IHsKICBlbnVtIHsgdmFsdWUgPSAxIH07Cn07CnRlbXBsYXRlIDw+IHN0cnVjdCBpc19hcml0aG1ldGljPHNpZ25lZCBjaGFyPiB7CiAgZW51bSB7IHZhbHVlID0gMSB9Owp9Owp0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfYXJpdGhtZXRpYzx1bnNpZ25lZCBjaGFyPiB7CiAgZW51bSB7IHZhbHVlID0gMSB9Owp9Owp0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfYXJpdGhtZXRpYzx3Y2hhcl90PiB7CiAgZW51bSB7IHZhbHVlID0gMSB9Owp9Owp0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfYXJpdGhtZXRpYzxzaG9ydD4gewogIGVudW0geyB2YWx1ZSA9IDEgfTsKfTsKdGVtcGxhdGUgPD4gc3RydWN0IGlzX2FyaXRobWV0aWM8dW5zaWduZWQgc2hvcnQ+IHsKICBlbnVtIHsgdmFsdWUgPSAxIH07Cn07CnRlbXBsYXRlIDw+IHN0cnVjdCBpc19hcml0aG1ldGljPGludD4gewogIGVudW0geyB2YWx1ZSA9IDEgfTsKfTsKdGVtcGxhdGUgPD4gc3RydWN0IGlzX2FyaXRobWV0aWM8dW5zaWduZWQgaW50PiB7CiAgZW51bSB7IHZhbHVlID0gMSB9Owp9Owp0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfYXJpdGhtZXRpYzxsb25nPiB7CiAgZW51bSB7IHZhbHVlID0gMSB9Owp9Owp0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfYXJpdGhtZXRpYzx1bnNpZ25lZCBsb25nPiB7CiAgZW51bSB7IHZhbHVlID0gMSB9Owp9Owp0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfYXJpdGhtZXRpYzxsb25nIGxvbmc+IHsKICBlbnVtIHsgdmFsdWUgPSAxIH07Cn07CnRlbXBsYXRlIDw+IHN0cnVjdCBpc19hcml0aG1ldGljPHVuc2lnbmVkIGxvbmcgbG9uZz4gewogIGVudW0geyB2YWx1ZSA9IDEgfTsKfTsKdGVtcGxhdGUgPD4gc3RydWN0IGlzX2FyaXRobWV0aWM8ZmxvYXQ+IHsKICBlbnVtIHsgdmFsdWUgPSAxIH07Cn07CnRlbXBsYXRlIDw+IHN0cnVjdCBpc19hcml0aG1ldGljPGRvdWJsZT4gewogIGVudW0geyB2YWx1ZSA9IDEgfTsKfTsKCnN0cnVjdCB0cnVlX3R5cGUgewogIHN0YXRpYyBjb25zdCBfX2NvbnN0YW50X18gYm9vbCB2YWx1ZSA9IHRydWU7Cn07CnN0cnVjdCBmYWxzZV90eXBlIHsKICBzdGF0aWMgY29uc3QgX19jb25zdGFudF9fIGJvb2wgdmFsdWUgPSBmYWxzZTsKfTsKCnRlbXBsYXRlIDx0eXBlbmFtZSBfX1QsIHR5cGVuYW1lIF9fVT4gc3RydWN0IGlzX3NhbWUgOiBwdWJsaWMgZmFsc2VfdHlwZSB7fTsKdGVtcGxhdGUgPHR5cGVuYW1lIF9fVD4gc3RydWN0IGlzX3NhbWU8X19ULCBfX1Q+IDogcHVibGljIHRydWVfdHlwZSB7fTsKCnRlbXBsYXRlIDx0eXBlbmFtZSBfX1Q+IHN0cnVjdCBhZGRfcnZhbHVlX3JlZmVyZW5jZSB7IHR5cGVkZWYgX19UICYmdHlwZTsgfTsKCnRlbXBsYXRlIDx0eXBlbmFtZSBfX1Q+IHR5cGVuYW1lIGFkZF9ydmFsdWVfcmVmZXJlbmNlPF9fVD46OnR5cGUgZGVjbHZhbCgpOwoKLy8gZGVjbHR5cGUgaXMgb25seSBhdmFpbGFibGUgaW4gQysrMTEgYW5kIGFib3ZlLgojaWYgX19jcGx1c3BsdXMgPj0gMjAxMTAzTAovLyBfX2hpcF9wcm9tb3RlCnRlbXBsYXRlIDxjbGFzcyBfVHA+IHN0cnVjdCBfX251bWVyaWNfdHlwZSB7CiAgc3RhdGljIHZvaWQgX190ZXN0KC4uLik7CiAgc3RhdGljIF9GbG9hdDE2IF9fdGVzdChfRmxvYXQxNik7CiAgc3RhdGljIGZsb2F0IF9fdGVzdChmbG9hdCk7CiAgc3RhdGljIGRvdWJsZSBfX3Rlc3QoY2hhcik7CiAgc3RhdGljIGRvdWJsZSBfX3Rlc3QoaW50KTsKICBzdGF0aWMgZG91YmxlIF9fdGVzdCh1bnNpZ25lZCk7CiAgc3RhdGljIGRvdWJsZSBfX3Rlc3QobG9uZyk7CiAgc3RhdGljIGRvdWJsZSBfX3Rlc3QodW5zaWduZWQgbG9uZyk7CiAgc3RhdGljIGRvdWJsZSBfX3Rlc3QobG9uZyBsb25nKTsKICBzdGF0aWMgZG91YmxlIF9fdGVzdCh1bnNpZ25lZCBsb25nIGxvbmcpOwogIHN0YXRpYyBkb3VibGUgX190ZXN0KGRvdWJsZSk7CiAgLy8gTm8gc3VwcG9ydCBmb3IgbG9uZyBkb3VibGUsIHVzZSBkb3VibGUgaW5zdGVhZC4KICBzdGF0aWMgZG91YmxlIF9fdGVzdChsb25nIGRvdWJsZSk7CgogIHR5cGVkZWYgZGVjbHR5cGUoX190ZXN0KGRlY2x2YWw8X1RwPigpKSkgdHlwZTsKICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9ICFpc19zYW1lPHR5cGUsIHZvaWQ+Ojp2YWx1ZTsKfTsKCnRlbXBsYXRlIDw+IHN0cnVjdCBfX251bWVyaWNfdHlwZTx2b2lkPiB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsKCnRlbXBsYXRlIDxjbGFzcyBfQTEsIGNsYXNzIF9BMiA9IHZvaWQsIGNsYXNzIF9BMyA9IHZvaWQsCiAgICAgICAgICBib29sID0gX19udW1lcmljX3R5cGU8X0ExPjo6dmFsdWUgJiZfX251bWVyaWNfdHlwZTxfQTI+Ojp2YWx1ZQogICAgICAgICAgICAgICYmX19udW1lcmljX3R5cGU8X0EzPjo6dmFsdWU+CmNsYXNzIF9fcHJvbW90ZV9pbXAgewpwdWJsaWM6CiAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBmYWxzZTsKfTsKCnRlbXBsYXRlIDxjbGFzcyBfQTEsIGNsYXNzIF9BMiwgY2xhc3MgX0EzPgpjbGFzcyBfX3Byb21vdGVfaW1wPF9BMSwgX0EyLCBfQTMsIHRydWU+IHsKcHJpdmF0ZToKICB0eXBlZGVmIHR5cGVuYW1lIF9fcHJvbW90ZV9pbXA8X0ExPjo6dHlwZSBfX3R5cGUxOwogIHR5cGVkZWYgdHlwZW5hbWUgX19wcm9tb3RlX2ltcDxfQTI+Ojp0eXBlIF9fdHlwZTI7CiAgdHlwZWRlZiB0eXBlbmFtZSBfX3Byb21vdGVfaW1wPF9BMz46OnR5cGUgX190eXBlMzsKCnB1YmxpYzoKICB0eXBlZGVmIGRlY2x0eXBlKF9fdHlwZTEoKSArIF9fdHlwZTIoKSArIF9fdHlwZTMoKSkgdHlwZTsKICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ExLCBjbGFzcyBfQTI+IGNsYXNzIF9fcHJvbW90ZV9pbXA8X0ExLCBfQTIsIHZvaWQsIHRydWU+IHsKcHJpdmF0ZToKICB0eXBlZGVmIHR5cGVuYW1lIF9fcHJvbW90ZV9pbXA8X0ExPjo6dHlwZSBfX3R5cGUxOwogIHR5cGVkZWYgdHlwZW5hbWUgX19wcm9tb3RlX2ltcDxfQTI+Ojp0eXBlIF9fdHlwZTI7CgpwdWJsaWM6CiAgdHlwZWRlZiBkZWNsdHlwZShfX3R5cGUxKCkgKyBfX3R5cGUyKCkpIHR5cGU7CiAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOwp9OwoKdGVtcGxhdGUgPGNsYXNzIF9BMT4gY2xhc3MgX19wcm9tb3RlX2ltcDxfQTEsIHZvaWQsIHZvaWQsIHRydWU+IHsKcHVibGljOgogIHR5cGVkZWYgdHlwZW5hbWUgX19udW1lcmljX3R5cGU8X0ExPjo6dHlwZSB0eXBlOwogIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsKfTsKCnRlbXBsYXRlIDxjbGFzcyBfQTEsIGNsYXNzIF9BMiA9IHZvaWQsIGNsYXNzIF9BMyA9IHZvaWQ+CmNsYXNzIF9fcHJvbW90ZSA6IHB1YmxpYyBfX3Byb21vdGVfaW1wPF9BMSwgX0EyLCBfQTM+IHt9OwojZW5kaWYgLy9fX2NwbHVzcGx1cyA+PSAyMDExMDNMCn0gLy8gbmFtZXNwYWNlIF9faGlwCgovLyBfX0hJUF9PVkVSTE9BRDEgaXMgdXNlZCB0byByZXNvbHZlIGZ1bmN0aW9uIGNhbGxzIHdpdGggaW50ZWdlciBhcmd1bWVudCB0bwovLyBhdm9pZCBjb21waWxhdGlvbiBlcnJvciBkdWUgdG8gYW1iaWJ1aXR5LiBlLmcuIGZsb29yKDUpIGlzIHJlc29sdmVkIHdpdGgKLy8gZmxvb3IoZG91YmxlKS4KI2RlZmluZSBfX0hJUF9PVkVSTE9BRDEoX19yZXR0eSwgX19mbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB0ZW1wbGF0ZSA8dHlwZW5hbWUgX19UPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBfX0RFVklDRV9fIF9fQ09OU1RFWFBSX18gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgdHlwZW5hbWUgX19oaXBfZW5hYmxlX2lmPF9faGlwOjppc19pbnRlZ3JhbDxfX1Q+Ojp2YWx1ZSwgX19yZXR0eT46OnR5cGUgIFwKICAgICAgX19mbihfX1QgX194KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHJldHVybiA6Ol9fZm4oKGRvdWJsZSlfX3gpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9CgovLyBfX0hJUF9PVkVSTE9BRDIgaXMgdXNlZCB0byByZXNvbHZlIGZ1bmN0aW9uIGNhbGxzIHdpdGggbWl4ZWQgZmxvYXQvZG91YmxlCi8vIG9yIGludGVnZXIgYXJndW1lbnQgdG8gYXZvaWQgY29tcGlsYXRpb24gZXJyb3IgZHVlIHRvIGFtYmlidWl0eS4gZS5nLgovLyBtYXgoNS4wZiwgNi4wKSBpcyByZXNvbHZlZCB3aXRoIG1heChkb3VibGUsIGRvdWJsZSkuCiNpZiBfX2NwbHVzcGx1cyA+PSAyMDExMDNMCiNkZWZpbmUgX19ISVBfT1ZFUkxPQUQyKF9fcmV0dHksIF9fZm4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgdGVtcGxhdGUgPHR5cGVuYW1lIF9fVDEsIHR5cGVuYW1lIF9fVDI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19ERVZJQ0VfXyBfX0NPTlNURVhQUl9fIHR5cGVuYW1lIF9faGlwX2VuYWJsZV9pZjwgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIF9faGlwOjppc19hcml0aG1ldGljPF9fVDE+Ojp2YWx1ZSAmJiBfX2hpcDo6aXNfYXJpdGhtZXRpYzxfX1QyPjo6dmFsdWUsICBcCiAgICAgIHR5cGVuYW1lIF9faGlwOjpfX3Byb21vdGU8X19UMSwgX19UMj46OnR5cGU+Ojp0eXBlICAgICAgICAgICAgICAgICAgICAgICBcCiAgX19mbihfX1QxIF9feCwgX19UMiBfX3kpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB0eXBlZGVmIHR5cGVuYW1lIF9faGlwOjpfX3Byb21vdGU8X19UMSwgX19UMj46OnR5cGUgX19yZXN1bHRfdHlwZTsgICAgICAgICBcCiAgICByZXR1cm4gX19mbigoX19yZXN1bHRfdHlwZSlfX3gsIChfX3Jlc3VsdF90eXBlKV9feSk7ICAgICAgICAgICAgICAgICAgICAgICBcCiAgfQojZWxzZQojZGVmaW5lIF9fSElQX09WRVJMT0FEMihfX3JldHR5LCBfX2ZuKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIHRlbXBsYXRlIDx0eXBlbmFtZSBfX1QxLCB0eXBlbmFtZSBfX1QyPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIF9fREVWSUNFX18gX19DT05TVEVYUFJfXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICB0eXBlbmFtZSBfX2hpcF9lbmFibGVfaWY8X19oaXA6OmlzX2FyaXRobWV0aWM8X19UMT46OnZhbHVlICYmICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faGlwOjppc19hcml0aG1ldGljPF9fVDI+Ojp2YWx1ZSwgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19yZXR0eT46OnR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBfX2ZuKF9fVDEgX194LCBfX1QyIF9feSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgcmV0dXJuIF9fZm4oKGRvdWJsZSlfX3gsIChkb3VibGUpX195KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIH0KI2VuZGlmCgpfX0hJUF9PVkVSTE9BRDEoZG91YmxlLCBhY29zKQpfX0hJUF9PVkVSTE9BRDEoZG91YmxlLCBhY29zaCkKX19ISVBfT1ZFUkxPQUQxKGRvdWJsZSwgYXNpbikKX19ISVBfT1ZFUkxPQUQxKGRvdWJsZSwgYXNpbmgpCl9fSElQX09WRVJMT0FEMShkb3VibGUsIGF0YW4pCl9fSElQX09WRVJMT0FEMihkb3VibGUsIGF0YW4yKQpfX0hJUF9PVkVSTE9BRDEoZG91YmxlLCBhdGFuaCkKX19ISVBfT1ZFUkxPQUQxKGRvdWJsZSwgY2JydCkKX19ISVBfT1ZFUkxPQUQxKGRvdWJsZSwgY2VpbCkKX19ISVBfT1ZFUkxPQUQyKGRvdWJsZSwgY29weXNpZ24pCl9fSElQX09WRVJMT0FEMShkb3VibGUsIGNvcykKX19ISVBfT1ZFUkxPQUQxKGRvdWJsZSwgY29zaCkKX19ISVBfT1ZFUkxPQUQxKGRvdWJsZSwgZXJmKQpfX0hJUF9PVkVSTE9BRDEoZG91YmxlLCBlcmZjKQpfX0hJUF9PVkVSTE9BRDEoZG91YmxlLCBleHApCl9fSElQX09WRVJMT0FEMShkb3VibGUsIGV4cDIpCl9fSElQX09WRVJMT0FEMShkb3VibGUsIGV4cG0xKQpfX0hJUF9PVkVSTE9BRDEoZG91YmxlLCBmYWJzKQpfX0hJUF9PVkVSTE9BRDIoZG91YmxlLCBmZGltKQpfX0hJUF9PVkVSTE9BRDEoZG91YmxlLCBmbG9vcikKX19ISVBfT1ZFUkxPQUQyKGRvdWJsZSwgZm1heCkKX19ISVBfT1ZFUkxPQUQyKGRvdWJsZSwgZm1pbikKX19ISVBfT1ZFUkxPQUQyKGRvdWJsZSwgZm1vZCkKI2lmICFkZWZpbmVkKF9fSElQQ0NfUlRDX18pCl9fSElQX09WRVJMT0FEMShpbnQsIGZwY2xhc3NpZnkpCiNlbmRpZiAvLyAhZGVmaW5lZChfX0hJUENDX1JUQ19fKQpfX0hJUF9PVkVSTE9BRDIoZG91YmxlLCBoeXBvdCkKX19ISVBfT1ZFUkxPQUQxKGludCwgaWxvZ2IpCl9fSElQX09WRVJMT0FEMShib29sLCBpc2Zpbml0ZSkKX19ISVBfT1ZFUkxPQUQyKGJvb2wsIGlzZ3JlYXRlcikKX19ISVBfT1ZFUkxPQUQyKGJvb2wsIGlzZ3JlYXRlcmVxdWFsKQpfX0hJUF9PVkVSTE9BRDEoYm9vbCwgaXNpbmYpCl9fSElQX09WRVJMT0FEMihib29sLCBpc2xlc3MpCl9fSElQX09WRVJMT0FEMihib29sLCBpc2xlc3NlcXVhbCkKX19ISVBfT1ZFUkxPQUQyKGJvb2wsIGlzbGVzc2dyZWF0ZXIpCl9fSElQX09WRVJMT0FEMShib29sLCBpc25hbikKX19ISVBfT1ZFUkxPQUQxKGJvb2wsIGlzbm9ybWFsKQpfX0hJUF9PVkVSTE9BRDIoYm9vbCwgaXN1bm9yZGVyZWQpCl9fSElQX09WRVJMT0FEMShkb3VibGUsIGxnYW1tYSkKX19ISVBfT1ZFUkxPQUQxKGRvdWJsZSwgbG9nKQpfX0hJUF9PVkVSTE9BRDEoZG91YmxlLCBsb2cxMCkKX19ISVBfT1ZFUkxPQUQxKGRvdWJsZSwgbG9nMXApCl9fSElQX09WRVJMT0FEMShkb3VibGUsIGxvZzIpCl9fSElQX09WRVJMT0FEMShkb3VibGUsIGxvZ2IpCl9fSElQX09WRVJMT0FEMShsb25nIGxvbmcsIGxscmludCkKX19ISVBfT1ZFUkxPQUQxKGxvbmcgbG9uZywgbGxyb3VuZCkKX19ISVBfT1ZFUkxPQUQxKGxvbmcsIGxyaW50KQpfX0hJUF9PVkVSTE9BRDEobG9uZywgbHJvdW5kKQpfX0hJUF9PVkVSTE9BRDEoZG91YmxlLCBuZWFyYnlpbnQpCl9fSElQX09WRVJMT0FEMihkb3VibGUsIG5leHRhZnRlcikKX19ISVBfT1ZFUkxPQUQyKGRvdWJsZSwgcG93KQpfX0hJUF9PVkVSTE9BRDIoZG91YmxlLCByZW1haW5kZXIpCl9fSElQX09WRVJMT0FEMShkb3VibGUsIHJpbnQpCl9fSElQX09WRVJMT0FEMShkb3VibGUsIHJvdW5kKQpfX0hJUF9PVkVSTE9BRDEoYm9vbCwgc2lnbmJpdCkKX19ISVBfT1ZFUkxPQUQxKGRvdWJsZSwgc2luKQpfX0hJUF9PVkVSTE9BRDEoZG91YmxlLCBzaW5oKQpfX0hJUF9PVkVSTE9BRDEoZG91YmxlLCBzcXJ0KQpfX0hJUF9PVkVSTE9BRDEoZG91YmxlLCB0YW4pCl9fSElQX09WRVJMT0FEMShkb3VibGUsIHRhbmgpCl9fSElQX09WRVJMT0FEMShkb3VibGUsIHRnYW1tYSkKX19ISVBfT1ZFUkxPQUQxKGRvdWJsZSwgdHJ1bmMpCgovLyBPdmVybG9hZCB0aGVzZSBidXQgZG9uJ3QgYWRkIHRoZW0gdG8gc3RkLCB0aGV5IGFyZSBub3QgcGFydCBvZiBjbWF0aC4KX19ISVBfT1ZFUkxPQUQyKGRvdWJsZSwgbWF4KQpfX0hJUF9PVkVSTE9BRDIoZG91YmxlLCBtaW4pCgovLyBBZGRpdGlvbmFsIE92ZXJsb2FkcyB0aGF0IGRvbid0IHF1aXRlIG1hdGNoIEhJUF9PVkVSTE9BRC4KI2lmIF9fY3BsdXNwbHVzID49IDIwMTEwM0wKdGVtcGxhdGUgPHR5cGVuYW1lIF9fVDEsIHR5cGVuYW1lIF9fVDIsIHR5cGVuYW1lIF9fVDM+Cl9fREVWSUNFX18gX19DT05TVEVYUFJfXyB0eXBlbmFtZSBfX2hpcF9lbmFibGVfaWY8CiAgICBfX2hpcDo6aXNfYXJpdGhtZXRpYzxfX1QxPjo6dmFsdWUgJiYgX19oaXA6OmlzX2FyaXRobWV0aWM8X19UMj46OnZhbHVlICYmCiAgICAgICAgX19oaXA6OmlzX2FyaXRobWV0aWM8X19UMz46OnZhbHVlLAogICAgdHlwZW5hbWUgX19oaXA6Ol9fcHJvbW90ZTxfX1QxLCBfX1QyLCBfX1QzPjo6dHlwZT46OnR5cGUKZm1hKF9fVDEgX194LCBfX1QyIF9feSwgX19UMyBfX3opIHsKICB0eXBlZGVmIHR5cGVuYW1lIF9faGlwOjpfX3Byb21vdGU8X19UMSwgX19UMiwgX19UMz46OnR5cGUgX19yZXN1bHRfdHlwZTsKICByZXR1cm4gOjpmbWEoKF9fcmVzdWx0X3R5cGUpX194LCAoX19yZXN1bHRfdHlwZSlfX3ksIChfX3Jlc3VsdF90eXBlKV9feik7Cn0KI2Vsc2UKdGVtcGxhdGUgPHR5cGVuYW1lIF9fVDEsIHR5cGVuYW1lIF9fVDIsIHR5cGVuYW1lIF9fVDM+Cl9fREVWSUNFX18gX19DT05TVEVYUFJfXwogICAgdHlwZW5hbWUgX19oaXBfZW5hYmxlX2lmPF9faGlwOjppc19hcml0aG1ldGljPF9fVDE+Ojp2YWx1ZSAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2hpcDo6aXNfYXJpdGhtZXRpYzxfX1QyPjo6dmFsdWUgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19oaXA6OmlzX2FyaXRobWV0aWM8X19UMz46OnZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZT46OnR5cGUKICAgIGZtYShfX1QxIF9feCwgX19UMiBfX3ksIF9fVDMgX196KSB7CiAgcmV0dXJuIDo6Zm1hKChkb3VibGUpX194LCAoZG91YmxlKV9feSwgKGRvdWJsZSlfX3opOwp9CiNlbmRpZgoKdGVtcGxhdGUgPHR5cGVuYW1lIF9fVD4KX19ERVZJQ0VfXyBfX0NPTlNURVhQUl9fCiAgICB0eXBlbmFtZSBfX2hpcF9lbmFibGVfaWY8X19oaXA6OmlzX2ludGVncmFsPF9fVD46OnZhbHVlLCBkb3VibGU+Ojp0eXBlCiAgICBmcmV4cChfX1QgX194LCBpbnQgKl9fZXhwKSB7CiAgcmV0dXJuIDo6ZnJleHAoKGRvdWJsZSlfX3gsIF9fZXhwKTsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIF9fVD4KX19ERVZJQ0VfXyBfX0NPTlNURVhQUl9fCiAgICB0eXBlbmFtZSBfX2hpcF9lbmFibGVfaWY8X19oaXA6OmlzX2ludGVncmFsPF9fVD46OnZhbHVlLCBkb3VibGU+Ojp0eXBlCiAgICBsZGV4cChfX1QgX194LCBpbnQgX19leHApIHsKICByZXR1cm4gOjpsZGV4cCgoZG91YmxlKV9feCwgX19leHApOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgX19UPgpfX0RFVklDRV9fIF9fQ09OU1RFWFBSX18KICAgIHR5cGVuYW1lIF9faGlwX2VuYWJsZV9pZjxfX2hpcDo6aXNfaW50ZWdyYWw8X19UPjo6dmFsdWUsIGRvdWJsZT46OnR5cGUKICAgIG1vZGYoX19UIF9feCwgZG91YmxlICpfX2V4cCkgewogIHJldHVybiA6Om1vZGYoKGRvdWJsZSlfX3gsIF9fZXhwKTsKfQoKI2lmIF9fY3BsdXNwbHVzID49IDIwMTEwM0wKdGVtcGxhdGUgPHR5cGVuYW1lIF9fVDEsIHR5cGVuYW1lIF9fVDI+Cl9fREVWSUNFX18gX19DT05TVEVYUFJfXwogICAgdHlwZW5hbWUgX19oaXBfZW5hYmxlX2lmPF9faGlwOjppc19hcml0aG1ldGljPF9fVDE+Ojp2YWx1ZSAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2hpcDo6aXNfYXJpdGhtZXRpYzxfX1QyPjo6dmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgX19oaXA6Ol9fcHJvbW90ZTxfX1QxLCBfX1QyPjo6dHlwZT46OnR5cGUKICAgIHJlbXF1byhfX1QxIF9feCwgX19UMiBfX3ksIGludCAqX19xdW8pIHsKICB0eXBlZGVmIHR5cGVuYW1lIF9faGlwOjpfX3Byb21vdGU8X19UMSwgX19UMj46OnR5cGUgX19yZXN1bHRfdHlwZTsKICByZXR1cm4gOjpyZW1xdW8oKF9fcmVzdWx0X3R5cGUpX194LCAoX19yZXN1bHRfdHlwZSlfX3ksIF9fcXVvKTsKfQojZWxzZQp0ZW1wbGF0ZSA8dHlwZW5hbWUgX19UMSwgdHlwZW5hbWUgX19UMj4KX19ERVZJQ0VfXyBfX0NPTlNURVhQUl9fCiAgICB0eXBlbmFtZSBfX2hpcF9lbmFibGVfaWY8X19oaXA6OmlzX2FyaXRobWV0aWM8X19UMT46OnZhbHVlICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faGlwOjppc19hcml0aG1ldGljPF9fVDI+Ojp2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGU+Ojp0eXBlCiAgICByZW1xdW8oX19UMSBfX3gsIF9fVDIgX195LCBpbnQgKl9fcXVvKSB7CiAgcmV0dXJuIDo6cmVtcXVvKChkb3VibGUpX194LCAoZG91YmxlKV9feSwgX19xdW8pOwp9CiNlbmRpZgoKdGVtcGxhdGUgPHR5cGVuYW1lIF9fVD4KX19ERVZJQ0VfXyBfX0NPTlNURVhQUl9fCiAgICB0eXBlbmFtZSBfX2hpcF9lbmFibGVfaWY8X19oaXA6OmlzX2ludGVncmFsPF9fVD46OnZhbHVlLCBkb3VibGU+Ojp0eXBlCiAgICBzY2FsYmxuKF9fVCBfX3gsIGxvbmcgaW50IF9fZXhwKSB7CiAgcmV0dXJuIDo6c2NhbGJsbigoZG91YmxlKV9feCwgX19leHApOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgX19UPgpfX0RFVklDRV9fIF9fQ09OU1RFWFBSX18KICAgIHR5cGVuYW1lIF9faGlwX2VuYWJsZV9pZjxfX2hpcDo6aXNfaW50ZWdyYWw8X19UPjo6dmFsdWUsIGRvdWJsZT46OnR5cGUKICAgIHNjYWxibihfX1QgX194LCBpbnQgX19leHApIHsKICByZXR1cm4gOjpzY2FsYm4oKGRvdWJsZSlfX3gsIF9fZXhwKTsKfQoKI3ByYWdtYSBwb3BfbWFjcm8oIl9fSElQX09WRVJMT0FEMSIpCiNwcmFnbWEgcG9wX21hY3JvKCJfX0hJUF9PVkVSTE9BRDIiKQoKLy8gRU5EIEhJUF9PVkVSTE9BRAoKLy8gRU5EIERFRl9GVU4gYW5kIEhJUF9PVkVSTE9BRAoKI2VuZGlmIC8vIGlmbmRlZiBfX09QRU5NUF9BTURHQ05fXwojZW5kaWYgLy8gZGVmaW5lZChfX2NwbHVzcGx1cykKCiNpZm5kZWYgX19PUEVOTVBfQU1ER0NOX18KLy8gRGVmaW5lIHRoZXNlIG92ZXJsb2FkcyBpbnNpZGUgdGhlIG5hbWVzcGFjZSBvdXIgc3RhbmRhcmQgbGlicmFyeSB1c2VzLgojaWYgIWRlZmluZWQoX19ISVBDQ19SVENfXykKI2lmZGVmIF9MSUJDUFBfQkVHSU5fTkFNRVNQQUNFX1NURApfTElCQ1BQX0JFR0lOX05BTUVTUEFDRV9TVEQKI2Vsc2UKbmFtZXNwYWNlIHN0ZCB7CiNpZmRlZiBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgpfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgojZW5kaWYgLy8gX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KI2VuZGlmIC8vIF9MSUJDUFBfQkVHSU5fTkFNRVNQQUNFX1NURAoKLy8gUHVsbCB0aGUgbmV3IG92ZXJsb2FkcyB3ZSBkZWZpbmVkIGFib3ZlIGludG8gbmFtZXNwYWNlIHN0ZC4KLy8gdXNpbmcgOjphYnM7IC0gVGhpcyBtYXkgYmUgY29uc2lkZXJlZCBmb3IgQysrLgp1c2luZyA6OmFjb3M7CnVzaW5nIDo6YWNvc2g7CnVzaW5nIDo6YXNpbjsKdXNpbmcgOjphc2luaDsKdXNpbmcgOjphdGFuOwp1c2luZyA6OmF0YW4yOwp1c2luZyA6OmF0YW5oOwp1c2luZyA6OmNicnQ7CnVzaW5nIDo6Y2VpbDsKdXNpbmcgOjpjb3B5c2lnbjsKdXNpbmcgOjpjb3M7CnVzaW5nIDo6Y29zaDsKdXNpbmcgOjplcmY7CnVzaW5nIDo6ZXJmYzsKdXNpbmcgOjpleHA7CnVzaW5nIDo6ZXhwMjsKdXNpbmcgOjpleHBtMTsKdXNpbmcgOjpmYWJzOwp1c2luZyA6OmZkaW07CnVzaW5nIDo6Zmxvb3I7CnVzaW5nIDo6Zm1hOwp1c2luZyA6OmZtYXg7CnVzaW5nIDo6Zm1pbjsKdXNpbmcgOjpmbW9kOwp1c2luZyA6OmZwY2xhc3NpZnk7CnVzaW5nIDo6ZnJleHA7CnVzaW5nIDo6aHlwb3Q7CnVzaW5nIDo6aWxvZ2I7CnVzaW5nIDo6aXNmaW5pdGU7CnVzaW5nIDo6aXNncmVhdGVyOwp1c2luZyA6OmlzZ3JlYXRlcmVxdWFsOwp1c2luZyA6OmlzbGVzczsKdXNpbmcgOjppc2xlc3NlcXVhbDsKdXNpbmcgOjppc2xlc3NncmVhdGVyOwp1c2luZyA6Omlzbm9ybWFsOwp1c2luZyA6OmlzdW5vcmRlcmVkOwp1c2luZyA6OmxkZXhwOwp1c2luZyA6OmxnYW1tYTsKdXNpbmcgOjpsbHJpbnQ7CnVzaW5nIDo6bGxyb3VuZDsKdXNpbmcgOjpsb2c7CnVzaW5nIDo6bG9nMTA7CnVzaW5nIDo6bG9nMXA7CnVzaW5nIDo6bG9nMjsKdXNpbmcgOjpsb2diOwp1c2luZyA6OmxyaW50Owp1c2luZyA6Omxyb3VuZDsKdXNpbmcgOjptb2RmOwovLyB1c2luZyA6Om5hbjsgLSBUaGlzIG1heSBiZSBjb25zaWRlcmVkIGZvciBDKysuCi8vIHVzaW5nIDo6bmFuZjsgLSBUaGlzIG1heSBiZSBjb25zaWRlcmVkIGZvciBDKysuCi8vIHVzaW5nIDo6bmFubDsgLSBUaGlzIGlzIG5vdCB5ZXQgZGVmaW5lZC4KdXNpbmcgOjpuZWFyYnlpbnQ7CnVzaW5nIDo6bmV4dGFmdGVyOwovLyB1c2luZyA6Om5leHR0b3dhcmQ7IC0gT21pdCB0aGlzIHNpbmNlIHdlIGRvIG5vdCBoYXZlIGEgZGVmaW5pdGlvbi4KdXNpbmcgOjpwb3c7CnVzaW5nIDo6cmVtYWluZGVyOwp1c2luZyA6OnJlbXF1bzsKdXNpbmcgOjpyaW50Owp1c2luZyA6OnJvdW5kOwp1c2luZyA6OnNjYWxibG47CnVzaW5nIDo6c2NhbGJuOwp1c2luZyA6OnNpZ25iaXQ7CnVzaW5nIDo6c2luOwp1c2luZyA6OnNpbmg7CnVzaW5nIDo6c3FydDsKdXNpbmcgOjp0YW47CnVzaW5nIDo6dGFuaDsKdXNpbmcgOjp0Z2FtbWE7CnVzaW5nIDo6dHJ1bmM7CgovLyBXZWxsIHRoaXMgaXMgZnVuOiBXZSBuZWVkIHRvIHB1bGwgdGhlc2Ugc3ltYm9scyBpbiBmb3IgbGliYysrLCBidXQgd2UgY2FuJ3QKLy8gcHVsbCB0aGVtIGluIHdpdGggbGlic3RkYysrLCBiZWNhdXNlIGl0cyA6OmlzaW5mIGFuZCA6OmlzbmFuIGFyZSBkaWZmZXJlbnQKLy8gdGhhbiBpdHMgc3RkOjppc2luZiBhbmQgc3RkOjppc25hbi4KI2lmbmRlZiBfX0dMSUJDWFhfXwp1c2luZyA6OmlzaW5mOwp1c2luZyA6OmlzbmFuOwojZW5kaWYKCi8vIEZpbmFsbHksIHB1bGwgdGhlICJmb29iYXJmIiBmdW5jdGlvbnMgdGhhdCBISVAgZGVmaW5lcyBpbnRvIHN0ZC4KdXNpbmcgOjphY29zZjsKdXNpbmcgOjphY29zaGY7CnVzaW5nIDo6YXNpbmY7CnVzaW5nIDo6YXNpbmhmOwp1c2luZyA6OmF0YW4yZjsKdXNpbmcgOjphdGFuZjsKdXNpbmcgOjphdGFuaGY7CnVzaW5nIDo6Y2JydGY7CnVzaW5nIDo6Y2VpbGY7CnVzaW5nIDo6Y29weXNpZ25mOwp1c2luZyA6OmNvc2Y7CnVzaW5nIDo6Y29zaGY7CnVzaW5nIDo6ZXJmY2Y7CnVzaW5nIDo6ZXJmZjsKdXNpbmcgOjpleHAyZjsKdXNpbmcgOjpleHBmOwp1c2luZyA6OmV4cG0xZjsKdXNpbmcgOjpmYWJzZjsKdXNpbmcgOjpmZGltZjsKdXNpbmcgOjpmbG9vcmY7CnVzaW5nIDo6Zm1hZjsKdXNpbmcgOjpmbWF4ZjsKdXNpbmcgOjpmbWluZjsKdXNpbmcgOjpmbW9kZjsKdXNpbmcgOjpmcmV4cGY7CnVzaW5nIDo6aHlwb3RmOwp1c2luZyA6Omlsb2diZjsKdXNpbmcgOjpsZGV4cGY7CnVzaW5nIDo6bGdhbW1hZjsKdXNpbmcgOjpsbHJpbnRmOwp1c2luZyA6Omxscm91bmRmOwp1c2luZyA6OmxvZzEwZjsKdXNpbmcgOjpsb2cxcGY7CnVzaW5nIDo6bG9nMmY7CnVzaW5nIDo6bG9nYmY7CnVzaW5nIDo6bG9nZjsKdXNpbmcgOjpscmludGY7CnVzaW5nIDo6bHJvdW5kZjsKdXNpbmcgOjptb2RmZjsKdXNpbmcgOjpuZWFyYnlpbnRmOwp1c2luZyA6Om5leHRhZnRlcmY7Ci8vIHVzaW5nIDo6bmV4dHRvd2FyZGY7IC0gT21pdCB0aGlzIHNpbmNlIHdlIGRvIG5vdCBoYXZlIGEgZGVmaW5pdGlvbi4KdXNpbmcgOjpwb3dmOwp1c2luZyA6OnJlbWFpbmRlcmY7CnVzaW5nIDo6cmVtcXVvZjsKdXNpbmcgOjpyaW50ZjsKdXNpbmcgOjpyb3VuZGY7CnVzaW5nIDo6c2NhbGJsbmY7CnVzaW5nIDo6c2NhbGJuZjsKdXNpbmcgOjpzaW5mOwp1c2luZyA6OnNpbmhmOwp1c2luZyA6OnNxcnRmOwp1c2luZyA6OnRhbmY7CnVzaW5nIDo6dGFuaGY7CnVzaW5nIDo6dGdhbW1hZjsKdXNpbmcgOjp0cnVuY2Y7CgojaWZkZWYgX0xJQkNQUF9FTkRfTkFNRVNQQUNFX1NURApfTElCQ1BQX0VORF9OQU1FU1BBQ0VfU1RECiNlbHNlCiNpZmRlZiBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgpfR0xJQkNYWF9FTkRfTkFNRVNQQUNFX1ZFUlNJT04KI2VuZGlmIC8vIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCn0gLy8gbmFtZXNwYWNlIHN0ZAojZW5kaWYgLy8gX0xJQkNQUF9FTkRfTkFNRVNQQUNFX1NURAojZW5kaWYgLy8gIWRlZmluZWQoX19ISVBDQ19SVENfXykKCi8vIERlZmluZSBkZXZpY2Utc2lkZSBtYXRoIGZ1bmN0aW9ucyBmcm9tIDx5bWF0aC5oPiBvbiBNU1ZDLgojaWYgIWRlZmluZWQoX19ISVBDQ19SVENfXykKI2lmIGRlZmluZWQoX01TQ19WRVIpCgovLyBCZWZvcmUgVlMyMDE5LCBgPHltYXRoLmg+YCBpcyBhbHNvIGluY2x1ZGVkIGluIGA8bGltaXRzPmAgYW5kIG90aGVyIGhlYWRlcnMuCi8vIEJ1dCwgZnJvbSBWUzIwMTksIGl0J3Mgb25seSBpbmNsdWRlZCBpbiBgPGNvbXBsZXg+YC4gTmVlZCB0byBpbmNsdWRlCi8vIGA8eW1hdGguaD5gIGhlcmUgdG8gZW5zdXJlIEMgZnVuY3Rpb25zIGRlY2xhcmVkIHRoZXJlIHdvbid0IGJlIG1hcmtkZWQgYXMKLy8gYF9faG9zdF9fYCBhbmQgYF9fZGV2aWNlX19gIHRocm91Z2ggYDxjb21wbGV4PmAgd3JhcHBlci4KI2luY2x1ZGUgPHltYXRoLmg+CgojaWYgZGVmaW5lZChfX2NwbHVzcGx1cykKZXh0ZXJuICJDIiB7CiNlbmRpZiAvLyBkZWZpbmVkKF9fY3BsdXNwbHVzKQpfX0RFVklDRV9fIF9fQ09OU1RFWFBSX18gX19hdHRyaWJ1dGVfXygob3ZlcmxvYWRhYmxlKSkgZG91YmxlIF9Db3NoKGRvdWJsZSB4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSB5KSB7CiAgcmV0dXJuIGNvc2goeCkgKiB5Owp9Cl9fREVWSUNFX18gX19DT05TVEVYUFJfXyBfX2F0dHJpYnV0ZV9fKChvdmVybG9hZGFibGUpKSBmbG9hdCBfRkNvc2goZmxvYXQgeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB5KSB7CiAgcmV0dXJuIGNvc2hmKHgpICogeTsKfQpfX0RFVklDRV9fIF9fQ09OU1RFWFBSX18gX19hdHRyaWJ1dGVfXygob3ZlcmxvYWRhYmxlKSkgc2hvcnQgX0R0ZXN0KGRvdWJsZSAqcCkgewogIHJldHVybiBmcGNsYXNzaWZ5KCpwKTsKfQpfX0RFVklDRV9fIF9fQ09OU1RFWFBSX18gX19hdHRyaWJ1dGVfXygob3ZlcmxvYWRhYmxlKSkgc2hvcnQgX0ZEdGVzdChmbG9hdCAqcCkgewogIHJldHVybiBmcGNsYXNzaWZ5KCpwKTsKfQpfX0RFVklDRV9fIF9fQ09OU1RFWFBSX18gX19hdHRyaWJ1dGVfXygob3ZlcmxvYWRhYmxlKSkgZG91YmxlIF9TaW5oKGRvdWJsZSB4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSB5KSB7CiAgcmV0dXJuIHNpbmgoeCkgKiB5Owp9Cl9fREVWSUNFX18gX19DT05TVEVYUFJfXyBfX2F0dHJpYnV0ZV9fKChvdmVybG9hZGFibGUpKSBmbG9hdCBfRlNpbmgoZmxvYXQgeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB5KSB7CiAgcmV0dXJuIHNpbmhmKHgpICogeTsKfQojaWYgZGVmaW5lZChfX2NwbHVzcGx1cykKfQojZW5kaWYgLy8gZGVmaW5lZChfX2NwbHVzcGx1cykKI2VuZGlmIC8vIGRlZmluZWQoX01TQ19WRVIpCiNlbmRpZiAvLyAhZGVmaW5lZChfX0hJUENDX1JUQ19fKQojZW5kaWYgLy8gaWZuZGVmIF9fT1BFTk1QX0FNREdDTl9fCgojcHJhZ21hIHBvcF9tYWNybygiX19ERVZJQ0VfXyIpCiNwcmFnbWEgcG9wX21hY3JvKCJfX0NPTlNURVhQUl9fIikKCiNlbmRpZiAvLyBfX0NMQU5HX0hJUF9DTUFUSF9IX18KAC8qPT09LS0tLSBhdng1MTJ2bGRxaW50cmluLmggLSBBVlg1MTJWTCBhbmQgQVZYNTEyRFEgaW50cmluc2ljcyAtLS0tLS0tLS0tLS09PT0KICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKi8KCiNpZm5kZWYgX19JTU1JTlRSSU5fSAojZXJyb3IgIk5ldmVyIHVzZSA8YXZ4NTEydmxkcWludHJpbi5oPiBkaXJlY3RseTsgaW5jbHVkZSA8aW1taW50cmluLmg+IGluc3RlYWQuIgojZW5kaWYKCiNpZm5kZWYgX19BVlg1MTJWTERRSU5UUklOX0gKI2RlZmluZSBfX0FWWDUxMlZMRFFJTlRSSU5fSAoKLyogRGVmaW5lIHRoZSBkZWZhdWx0IGF0dHJpYnV0ZXMgZm9yIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlLiAqLwojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oImF2eDUxMnZsLGF2eDUxMmRxIiksIF9fbWluX3ZlY3Rvcl93aWR0aF9fKDEyOCkpKQojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUzI1NiBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oImF2eDUxMnZsLGF2eDUxMmRxIiksIF9fbWluX3ZlY3Rvcl93aWR0aF9fKDI1NikpKQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X211bGxvX2VwaTY0IChfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpIHsKICByZXR1cm4gKF9fbTI1NmkpICgoX192NGR1KSBfX0EgKiAoX192NGR1KSBfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19tdWxsb19lcGk2NChfX20yNTZpIF9fVywgX19tbWFzazggX19VLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpIHsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfbXVsbG9fZXBpNjQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9tdWxsb19lcGk2NChfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikgewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKV9tbTI1Nl9tdWxsb19lcGk2NChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX21tMjU2X3NldHplcm9fc2kyNTYoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tdWxsb19lcGk2NCAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKSB7CiAgcmV0dXJuIChfX20xMjhpKSAoKF9fdjJkdSkgX19BICogKF9fdjJkdSkgX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfbXVsbG9fZXBpNjQoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKSB7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX21tX211bGxvX2VwaTY0KF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfbXVsbG9fZXBpNjQoX19tbWFzazggX19VLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpIHsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfbW1fbXVsbG9fZXBpNjQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19hbmRub3RfcGQoX19tMjU2ZCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2ZCBfX0EsIF9fbTI1NmQgX19CKSB7CiAgcmV0dXJuIChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZilfbW0yNTZfYW5kbm90X3BkKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2FuZG5vdF9wZChfX21tYXNrOCBfX1UsIF9fbTI1NmQgX19BLCBfX20yNTZkIF9fQikgewogIHJldHVybiAoX19tMjU2ZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF8yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpX21tMjU2X2FuZG5vdF9wZChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9tbTI1Nl9zZXR6ZXJvX3BkKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19hbmRub3RfcGQoX19tMTI4ZCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKSB7CiAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfbW1fYW5kbm90X3BkKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2FuZG5vdF9wZChfX21tYXNrOCBfX1UsIF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikgewogIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX2FuZG5vdF9wZChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9tbV9zZXR6ZXJvX3BkKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2FuZG5vdF9wcyhfX20yNTYgX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NiBfX0EsIF9fbTI1NiBfX0IpIHsKICByZXR1cm4gKF9fbTI1NilfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZilfbW0yNTZfYW5kbm90X3BzKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9hbmRub3RfcHMoX19tbWFzazggX19VLCBfX20yNTYgX19BLCBfX20yNTYgX19CKSB7CiAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX21tMjU2X2FuZG5vdF9wcyhfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX21tMjU2X3NldHplcm9fcHMoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfYW5kbm90X3BzKF9fbTEyOCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4IF9fQSwgX19tMTI4IF9fQikgewogIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9tbV9hbmRub3RfcHMoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2FuZG5vdF9wcyhfX21tYXNrOCBfX1UsIF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpIHsKICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfbW1fYW5kbm90X3BzKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfbW1fc2V0emVyb19wcygpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfYW5kX3BkKF9fbTI1NmQgX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NmQgX19BLCBfX20yNTZkIF9fQikgewogIHJldHVybiAoX19tMjU2ZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF8yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpX21tMjU2X2FuZF9wZChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9hbmRfcGQoX19tbWFzazggX19VLCBfX20yNTZkIF9fQSwgX19tMjU2ZCBfX0IpIHsKICByZXR1cm4gKF9fbTI1NmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9tbTI1Nl9hbmRfcGQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZilfbW0yNTZfc2V0emVyb19wZCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfYW5kX3BkKF9fbTEyOGQgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikgewogIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX2FuZF9wZChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9hbmRfcGQoX19tbWFzazggX19VLCBfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpIHsKICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9tbV9hbmRfcGQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfbW1fc2V0emVyb19wZCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19hbmRfcHMoX19tMjU2IF9fVywgX19tbWFzazggX19VLCBfX20yNTYgX19BLCBfX20yNTYgX19CKSB7CiAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX21tMjU2X2FuZF9wcyhfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfYW5kX3BzKF9fbW1hc2s4IF9fVSwgX19tMjU2IF9fQSwgX19tMjU2IF9fQikgewogIHJldHVybiAoX19tMjU2KV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKV9tbTI1Nl9hbmRfcHMoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKV9tbTI1Nl9zZXR6ZXJvX3BzKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2FuZF9wcyhfX20xMjggX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpIHsKICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfbW1fYW5kX3BzKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9hbmRfcHMoX19tbWFzazggX19VLCBfX20xMjggX19BLCBfX20xMjggX19CKSB7CiAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX2FuZF9wcyhfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX3NldHplcm9fcHMoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX3hvcl9wZChfX20yNTZkIF9fVywgX19tbWFzazggX19VLCBfX20yNTZkIF9fQSwgX19tMjU2ZCBfX0IpIHsKICByZXR1cm4gKF9fbTI1NmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9tbTI1Nl94b3JfcGQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfeG9yX3BkKF9fbW1hc2s4IF9fVSwgX19tMjU2ZCBfX0EsIF9fbTI1NmQgX19CKSB7CiAgcmV0dXJuIChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZilfbW0yNTZfeG9yX3BkKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpX21tMjU2X3NldHplcm9fcGQoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX3hvcl9wZChfX20xMjhkIF9fVywgX19tbWFzazggX19VLCBfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpIHsKICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9tbV94b3JfcGQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfeG9yX3BkIChfX21tYXNrOCBfX1UsIF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikgewogIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX3hvcl9wZChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9tbV9zZXR6ZXJvX3BkKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX3hvcl9wcyhfX20yNTYgX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NiBfX0EsIF9fbTI1NiBfX0IpIHsKICByZXR1cm4gKF9fbTI1NilfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZilfbW0yNTZfeG9yX3BzKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel94b3JfcHMoX19tbWFzazggX19VLCBfX20yNTYgX19BLCBfX20yNTYgX19CKSB7CiAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX21tMjU2X3hvcl9wcyhfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX21tMjU2X3NldHplcm9fcHMoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfeG9yX3BzKF9fbTEyOCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4IF9fQSwgX19tMTI4IF9fQikgewogIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9tbV94b3JfcHMoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X3hvcl9wcyhfX21tYXNrOCBfX1UsIF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpIHsKICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfbW1feG9yX3BzKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfbW1fc2V0emVyb19wcygpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfb3JfcGQoX19tMjU2ZCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2ZCBfX0EsIF9fbTI1NmQgX19CKSB7CiAgcmV0dXJuIChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzI1NigoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZilfbW0yNTZfb3JfcGQoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfb3JfcGQoX19tbWFzazggX19VLCBfX20yNTZkIF9fQSwgX19tMjU2ZCBfX0IpIHsKICByZXR1cm4gKF9fbTI1NmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9tbTI1Nl9vcl9wZChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9tbTI1Nl9zZXR6ZXJvX3BkKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19vcl9wZChfX20xMjhkIF9fVywgX19tbWFzazggX19VLCBfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpIHsKICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9tbV9vcl9wZChfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9vcl9wZChfX21tYXNrOCBfX1UsIF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikgewogIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX29yX3BkKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX3NldHplcm9fcGQoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfb3JfcHMoX19tMjU2IF9fVywgX19tbWFzazggX19VLCBfX20yNTYgX19BLCBfX20yNTYgX19CKSB7CiAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX21tMjU2X29yX3BzKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9vcl9wcyhfX21tYXNrOCBfX1UsIF9fbTI1NiBfX0EsIF9fbTI1NiBfX0IpIHsKICByZXR1cm4gKF9fbTI1NilfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZilfbW0yNTZfb3JfcHMoX19BLCBfX0IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKV9tbTI1Nl9zZXR6ZXJvX3BzKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX29yX3BzKF9fbTEyOCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4IF9fQSwgX19tMTI4IF9fQikgewogIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBzXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9tbV9vcl9wcyhfX0EsIF9fQiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfb3JfcHMoX19tbWFzazggX19VLCBfX20xMjggX19BLCBfX20xMjggX19CKSB7CiAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX29yX3BzKF9fQSwgX19CKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfbW1fc2V0emVyb19wcygpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX2N2dHBkX2VwaTY0IChfX20xMjhkIF9fQSkgewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfY3Z0cGQycXExMjhfbWFzayAoKF9fdjJkZikgX19BLAogICAgICAgICAgICAgICAgKF9fdjJkaSkgX21tX3NldHplcm9fc2kxMjgoKSwKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19jdnRwZF9lcGk2NCAoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4ZCBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX2N2dHBkMnFxMTI4X21hc2sgKChfX3YyZGYpIF9fQSwKICAgICAgICAgICAgICAgIChfX3YyZGkpIF9fVywKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2N2dHBkX2VwaTY0IChfX21tYXNrOCBfX1UsIF9fbTEyOGQgX19BKSB7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9jdnRwZDJxcTEyOF9tYXNrICgoX192MmRmKSBfX0EsCiAgICAgICAgICAgICAgICAoX192MmRpKSBfbW1fc2V0emVyb19zaTEyOCgpLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfY3Z0cGRfZXBpNjQgKF9fbTI1NmQgX19BKSB7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl9jdnRwZDJxcTI1Nl9tYXNrICgoX192NGRmKSBfX0EsCiAgICAgICAgICAgICAgICAoX192NGRpKSBfbW0yNTZfc2V0emVyb19zaTI1NigpLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSAtMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2N2dHBkX2VwaTY0IChfX20yNTZpIF9fVywgX19tbWFzazggX19VLCBfX20yNTZkIF9fQSkgewogIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfY3Z0cGQycXEyNTZfbWFzayAoKF9fdjRkZikgX19BLAogICAgICAgICAgICAgICAgKF9fdjRkaSkgX19XLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfY3Z0cGRfZXBpNjQgKF9fbW1hc2s4IF9fVSwgX19tMjU2ZCBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX2N2dHBkMnFxMjU2X21hc2sgKChfX3Y0ZGYpIF9fQSwKICAgICAgICAgICAgICAgIChfX3Y0ZGkpIF9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCksCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9jdnRwZF9lcHU2NCAoX19tMTI4ZCBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX2N2dHBkMnVxcTEyOF9tYXNrICgoX192MmRmKSBfX0EsCiAgICAgICAgICAgICAgICAoX192MmRpKSBfbW1fc2V0emVyb19zaTEyOCgpLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSAtMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2N2dHBkX2VwdTY0IChfX20xMjhpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhkIF9fQSkgewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfY3Z0cGQydXFxMTI4X21hc2sgKChfX3YyZGYpIF9fQSwKICAgICAgICAgICAgICAgIChfX3YyZGkpIF9fVywKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2N2dHBkX2VwdTY0IChfX21tYXNrOCBfX1UsIF9fbTEyOGQgX19BKSB7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9jdnRwZDJ1cXExMjhfbWFzayAoKF9fdjJkZikgX19BLAogICAgICAgICAgICAgICAgKF9fdjJkaSkgX21tX3NldHplcm9fc2kxMjgoKSwKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2N2dHBkX2VwdTY0IChfX20yNTZkIF9fQSkgewogIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfY3Z0cGQydXFxMjU2X21hc2sgKChfX3Y0ZGYpIF9fQSwKICAgICAgICAgICAgICAgIChfX3Y0ZGkpIF9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCksCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIC0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfY3Z0cGRfZXB1NjQgKF9fbTI1NmkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NmQgX19BKSB7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl9jdnRwZDJ1cXEyNTZfbWFzayAoKF9fdjRkZikgX19BLAogICAgICAgICAgICAgICAgKF9fdjRkaSkgX19XLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfY3Z0cGRfZXB1NjQgKF9fbW1hc2s4IF9fVSwgX19tMjU2ZCBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX2N2dHBkMnVxcTI1Nl9tYXNrICgoX192NGRmKSBfX0EsCiAgICAgICAgICAgICAgICAoX192NGRpKSBfbW0yNTZfc2V0emVyb19zaTI1NigpLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fY3Z0cHNfZXBpNjQgKF9fbTEyOCBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX2N2dHBzMnFxMTI4X21hc2sgKChfX3Y0c2YpIF9fQSwKICAgICAgICAgICAgICAgIChfX3YyZGkpIF9tbV9zZXR6ZXJvX3NpMTI4KCksCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIC0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfY3Z0cHNfZXBpNjQgKF9fbTEyOGkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOCBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX2N2dHBzMnFxMTI4X21hc2sgKChfX3Y0c2YpIF9fQSwKICAgICAgICAgICAgICAgIChfX3YyZGkpIF9fVywKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2N2dHBzX2VwaTY0IChfX21tYXNrOCBfX1UsIF9fbTEyOCBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX2N2dHBzMnFxMTI4X21hc2sgKChfX3Y0c2YpIF9fQSwKICAgICAgICAgICAgICAgIChfX3YyZGkpIF9tbV9zZXR6ZXJvX3NpMTI4KCksCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9jdnRwc19lcGk2NCAoX19tMTI4IF9fQSkgewogIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfY3Z0cHMycXEyNTZfbWFzayAoKF9fdjRzZikgX19BLAogICAgICAgICAgICAgICAgKF9fdjRkaSkgX21tMjU2X3NldHplcm9fc2kyNTYoKSwKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19jdnRwc19lcGk2NCAoX19tMjU2aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4IF9fQSkgewogIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfY3Z0cHMycXEyNTZfbWFzayAoKF9fdjRzZikgX19BLAogICAgICAgICAgICAgICAgKF9fdjRkaSkgX19XLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfY3Z0cHNfZXBpNjQgKF9fbW1hc2s4IF9fVSwgX19tMTI4IF9fQSkgewogIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfY3Z0cHMycXEyNTZfbWFzayAoKF9fdjRzZikgX19BLAogICAgICAgICAgICAgICAgKF9fdjRkaSkgX21tMjU2X3NldHplcm9fc2kyNTYoKSwKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX2N2dHBzX2VwdTY0IChfX20xMjggX19BKSB7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9jdnRwczJ1cXExMjhfbWFzayAoKF9fdjRzZikgX19BLAogICAgICAgICAgICAgICAgKF9fdjJkaSkgX21tX3NldHplcm9fc2kxMjgoKSwKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19jdnRwc19lcHU2NCAoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4IF9fQSkgewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfY3Z0cHMydXFxMTI4X21hc2sgKChfX3Y0c2YpIF9fQSwKICAgICAgICAgICAgICAgIChfX3YyZGkpIF9fVywKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2N2dHBzX2VwdTY0IChfX21tYXNrOCBfX1UsIF9fbTEyOCBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX2N2dHBzMnVxcTEyOF9tYXNrICgoX192NHNmKSBfX0EsCiAgICAgICAgICAgICAgICAoX192MmRpKSBfbW1fc2V0emVyb19zaTEyOCgpLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfY3Z0cHNfZXB1NjQgKF9fbTEyOCBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX2N2dHBzMnVxcTI1Nl9tYXNrICgoX192NHNmKSBfX0EsCiAgICAgICAgICAgICAgICAoX192NGRpKSBfbW0yNTZfc2V0emVyb19zaTI1NigpLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSAtMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2N2dHBzX2VwdTY0IChfX20yNTZpIF9fVywgX19tbWFzazggX19VLCBfX20xMjggX19BKSB7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl9jdnRwczJ1cXEyNTZfbWFzayAoKF9fdjRzZikgX19BLAogICAgICAgICAgICAgICAgKF9fdjRkaSkgX19XLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfY3Z0cHNfZXB1NjQgKF9fbW1hc2s4IF9fVSwgX19tMTI4IF9fQSkgewogIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfY3Z0cHMydXFxMjU2X21hc2sgKChfX3Y0c2YpIF9fQSwKICAgICAgICAgICAgICAgIChfX3Y0ZGkpIF9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCksCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9jdnRlcGk2NF9wZCAoX19tMTI4aSBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoKF9fdjJkaSlfX0EsIF9fdjJkZik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2N2dGVwaTY0X3BkIChfX20xMjhkIF9fVywgX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkgewogIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX2N2dGVwaTY0X3BkKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9jdnRlcGk2NF9wZCAoX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkgewogIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX2N2dGVwaTY0X3BkKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9tbV9zZXR6ZXJvX3BkKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfY3Z0ZXBpNjRfcGQgKF9fbTI1NmkgX19BKSB7CiAgcmV0dXJuIChfX20yNTZkKV9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKChfX3Y0ZGkpX19BLCBfX3Y0ZGYpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19jdnRlcGk2NF9wZCAoX19tMjU2ZCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9tbTI1Nl9jdnRlcGk2NF9wZChfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfY3Z0ZXBpNjRfcGQgKF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9tbTI1Nl9jdnRlcGk2NF9wZChfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZilfbW0yNTZfc2V0emVyb19wZCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fY3Z0ZXBpNjRfcHMgKF9fbTEyOGkgX19BKSB7CiAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX2N2dHFxMnBzMTI4X21hc2sgKChfX3YyZGkpIF9fQSwKICAgICAgICAgICAgICAgIChfX3Y0c2YpIF9tbV9zZXR6ZXJvX3BzKCksCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIC0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19jdnRlcGk2NF9wcyAoX19tMTI4IF9fVywgX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkgewogIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9jdnRxcTJwczEyOF9tYXNrICgoX192MmRpKSBfX0EsCiAgICAgICAgICAgICAgICAoX192NHNmKSBfX1csCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2t6X2N2dGVwaTY0X3BzIChfX21tYXNrOCBfX1UsIF9fbTEyOGkgX19BKSB7CiAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX2N2dHFxMnBzMTI4X21hc2sgKChfX3YyZGkpIF9fQSwKICAgICAgICAgICAgICAgIChfX3Y0c2YpIF9tbV9zZXR6ZXJvX3BzKCksCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2N2dGVwaTY0X3BzIChfX20yNTZpIF9fQSkgewogIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKChfX3Y0ZGkpX19BLCBfX3Y0c2YpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2N2dGVwaTY0X3BzIChfX20xMjggX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19BKSB7CiAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tMjU2X2N2dGVwaTY0X3BzKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfY3Z0ZXBpNjRfcHMgKF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EpIHsKICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfbW0yNTZfY3Z0ZXBpNjRfcHMoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfbW1fc2V0emVyb19wcygpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX2N2dHRwZF9lcGk2NCAoX19tMTI4ZCBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX2N2dHRwZDJxcTEyOF9tYXNrICgoX192MmRmKSBfX0EsCiAgICAgICAgICAgICAgICAoX192MmRpKSBfbW1fc2V0emVyb19zaTEyOCgpLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSAtMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2N2dHRwZF9lcGk2NCAoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4ZCBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX2N2dHRwZDJxcTEyOF9tYXNrICgoX192MmRmKSBfX0EsCiAgICAgICAgICAgICAgICAoX192MmRpKSBfX1csCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9jdnR0cGRfZXBpNjQgKF9fbW1hc2s4IF9fVSwgX19tMTI4ZCBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX2N2dHRwZDJxcTEyOF9tYXNrICgoX192MmRmKSBfX0EsCiAgICAgICAgICAgICAgICAoX192MmRpKSBfbW1fc2V0emVyb19zaTEyOCgpLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfY3Z0dHBkX2VwaTY0IChfX20yNTZkIF9fQSkgewogIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfY3Z0dHBkMnFxMjU2X21hc2sgKChfX3Y0ZGYpIF9fQSwKICAgICAgICAgICAgICAgIChfX3Y0ZGkpIF9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCksCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIC0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfY3Z0dHBkX2VwaTY0IChfX20yNTZpIF9fVywgX19tbWFzazggX19VLCBfX20yNTZkIF9fQSkgewogIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfY3Z0dHBkMnFxMjU2X21hc2sgKChfX3Y0ZGYpIF9fQSwKICAgICAgICAgICAgICAgIChfX3Y0ZGkpIF9fVywKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2N2dHRwZF9lcGk2NCAoX19tbWFzazggX19VLCBfX20yNTZkIF9fQSkgewogIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfY3Z0dHBkMnFxMjU2X21hc2sgKChfX3Y0ZGYpIF9fQSwKICAgICAgICAgICAgICAgIChfX3Y0ZGkpIF9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCksCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9jdnR0cGRfZXB1NjQgKF9fbTEyOGQgX19BKSB7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9jdnR0cGQydXFxMTI4X21hc2sgKChfX3YyZGYpIF9fQSwKICAgICAgICAgICAgICAgIChfX3YyZGkpIF9tbV9zZXR6ZXJvX3NpMTI4KCksCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIC0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfY3Z0dHBkX2VwdTY0IChfX20xMjhpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhkIF9fQSkgewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfY3Z0dHBkMnVxcTEyOF9tYXNrICgoX192MmRmKSBfX0EsCiAgICAgICAgICAgICAgICAoX192MmRpKSBfX1csCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9jdnR0cGRfZXB1NjQgKF9fbW1hc2s4IF9fVSwgX19tMTI4ZCBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX2N2dHRwZDJ1cXExMjhfbWFzayAoKF9fdjJkZikgX19BLAogICAgICAgICAgICAgICAgKF9fdjJkaSkgX21tX3NldHplcm9fc2kxMjgoKSwKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2N2dHRwZF9lcHU2NCAoX19tMjU2ZCBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX2N2dHRwZDJ1cXEyNTZfbWFzayAoKF9fdjRkZikgX19BLAogICAgICAgICAgICAgICAgKF9fdjRkaSkgX21tMjU2X3NldHplcm9fc2kyNTYoKSwKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19jdnR0cGRfZXB1NjQgKF9fbTI1NmkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NmQgX19BKSB7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl9jdnR0cGQydXFxMjU2X21hc2sgKChfX3Y0ZGYpIF9fQSwKICAgICAgICAgICAgICAgIChfX3Y0ZGkpIF9fVywKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2N2dHRwZF9lcHU2NCAoX19tbWFzazggX19VLCBfX20yNTZkIF9fQSkgewogIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfY3Z0dHBkMnVxcTI1Nl9tYXNrICgoX192NGRmKSBfX0EsCiAgICAgICAgICAgICAgICAoX192NGRpKSBfbW0yNTZfc2V0emVyb19zaTI1NigpLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fY3Z0dHBzX2VwaTY0IChfX20xMjggX19BKSB7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9jdnR0cHMycXExMjhfbWFzayAoKF9fdjRzZikgX19BLAogICAgICAgICAgICAgICAgKF9fdjJkaSkgX21tX3NldHplcm9fc2kxMjgoKSwKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgLTEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19jdnR0cHNfZXBpNjQgKF9fbTEyOGkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTEyOCBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX2N2dHRwczJxcTEyOF9tYXNrICgoX192NHNmKSBfX0EsCiAgICAgICAgICAgICAgICAoX192MmRpKSBfX1csCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9jdnR0cHNfZXBpNjQgKF9fbW1hc2s4IF9fVSwgX19tMTI4IF9fQSkgewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfY3Z0dHBzMnFxMTI4X21hc2sgKChfX3Y0c2YpIF9fQSwKICAgICAgICAgICAgICAgIChfX3YyZGkpIF9tbV9zZXR6ZXJvX3NpMTI4KCksCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9jdnR0cHNfZXBpNjQgKF9fbTEyOCBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX2N2dHRwczJxcTI1Nl9tYXNrICgoX192NHNmKSBfX0EsCiAgICAgICAgICAgICAgICAoX192NGRpKSBfbW0yNTZfc2V0emVyb19zaTI1NigpLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSAtMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2N2dHRwc19lcGk2NCAoX19tMjU2aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4IF9fQSkgewogIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfY3Z0dHBzMnFxMjU2X21hc2sgKChfX3Y0c2YpIF9fQSwKICAgICAgICAgICAgICAgIChfX3Y0ZGkpIF9fVywKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2N2dHRwc19lcGk2NCAoX19tbWFzazggX19VLCBfX20xMjggX19BKSB7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl9jdnR0cHMycXEyNTZfbWFzayAoKF9fdjRzZikgX19BLAogICAgICAgICAgICAgICAgKF9fdjRkaSkgX21tMjU2X3NldHplcm9fc2kyNTYoKSwKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX2N2dHRwc19lcHU2NCAoX19tMTI4IF9fQSkgewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfY3Z0dHBzMnVxcTEyOF9tYXNrICgoX192NHNmKSBfX0EsCiAgICAgICAgICAgICAgICAoX192MmRpKSBfbW1fc2V0emVyb19zaTEyOCgpLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSAtMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2N2dHRwc19lcHU2NCAoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4IF9fQSkgewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfY3Z0dHBzMnVxcTEyOF9tYXNrICgoX192NHNmKSBfX0EsCiAgICAgICAgICAgICAgICAoX192MmRpKSBfX1csCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9jdnR0cHNfZXB1NjQgKF9fbW1hc2s4IF9fVSwgX19tMTI4IF9fQSkgewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfY3Z0dHBzMnVxcTEyOF9tYXNrICgoX192NHNmKSBfX0EsCiAgICAgICAgICAgICAgICAoX192MmRpKSBfbW1fc2V0emVyb19zaTEyOCgpLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSBfX1UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfY3Z0dHBzX2VwdTY0IChfX20xMjggX19BKSB7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl9jdnR0cHMydXFxMjU2X21hc2sgKChfX3Y0c2YpIF9fQSwKICAgICAgICAgICAgICAgIChfX3Y0ZGkpIF9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCksCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIC0xKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfY3Z0dHBzX2VwdTY0IChfX20yNTZpIF9fVywgX19tbWFzazggX19VLCBfX20xMjggX19BKSB7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl9jdnR0cHMydXFxMjU2X21hc2sgKChfX3Y0c2YpIF9fQSwKICAgICAgICAgICAgICAgIChfX3Y0ZGkpIF9fVywKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2N2dHRwc19lcHU2NCAoX19tbWFzazggX19VLCBfX20xMjggX19BKSB7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl9jdnR0cHMydXFxMjU2X21hc2sgKChfX3Y0c2YpIF9fQSwKICAgICAgICAgICAgICAgIChfX3Y0ZGkpIF9tbTI1Nl9zZXR6ZXJvX3NpMjU2KCksCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9jdnRlcHU2NF9wZCAoX19tMTI4aSBfX0EpIHsKICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoKF9fdjJkdSlfX0EsIF9fdjJkZik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2N2dGVwdTY0X3BkIChfX20xMjhkIF9fVywgX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkgewogIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX2N2dGVwdTY0X3BkKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9jdnRlcHU2NF9wZCAoX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkgewogIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX2N2dGVwdTY0X3BkKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9tbV9zZXR6ZXJvX3BkKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfY3Z0ZXB1NjRfcGQgKF9fbTI1NmkgX19BKSB7CiAgcmV0dXJuIChfX20yNTZkKV9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKChfX3Y0ZHUpX19BLCBfX3Y0ZGYpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19jdnRlcHU2NF9wZCAoX19tMjU2ZCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9tbTI1Nl9jdnRlcHU2NF9wZChfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZilfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfY3Z0ZXB1NjRfcGQgKF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EpIHsKICByZXR1cm4gKF9fbTI1NmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9tbTI1Nl9jdnRlcHU2NF9wZChfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZilfbW0yNTZfc2V0emVyb19wZCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fY3Z0ZXB1NjRfcHMgKF9fbTEyOGkgX19BKSB7CiAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX2N2dHVxcTJwczEyOF9tYXNrICgoX192MmRpKSBfX0EsCiAgICAgICAgICAgICAgICAoX192NHNmKSBfbW1fc2V0emVyb19wcygpLAogICAgICAgICAgICAgICAgKF9fbW1hc2s4KSAtMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfY3Z0ZXB1NjRfcHMgKF9fbTEyOCBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EpIHsKICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfY3Z0dXFxMnBzMTI4X21hc2sgKChfX3YyZGkpIF9fQSwKICAgICAgICAgICAgICAgIChfX3Y0c2YpIF9fVywKICAgICAgICAgICAgICAgIChfX21tYXNrOCkgX19VKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfY3Z0ZXB1NjRfcHMgKF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EpIHsKICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfY3Z0dXFxMnBzMTI4X21hc2sgKChfX3YyZGkpIF9fQSwKICAgICAgICAgICAgICAgIChfX3Y0c2YpIF9tbV9zZXR6ZXJvX3BzKCksCiAgICAgICAgICAgICAgICAoX19tbWFzazgpIF9fVSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2N2dGVwdTY0X3BzIChfX20yNTZpIF9fQSkgewogIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKChfX3Y0ZHUpX19BLCBfX3Y0c2YpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2N2dGVwdTY0X3BzIChfX20xMjggX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19BKSB7CiAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMTI4KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tMjU2X2N2dGVwdTY0X3BzKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfY3Z0ZXB1NjRfcHMgKF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EpIHsKICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl9zZWxlY3Rwc18xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfbW0yNTZfY3Z0ZXB1NjRfcHMoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfbW1fc2V0emVyb19wcygpKTsKfQoKI2RlZmluZSBfbW1fcmFuZ2VfcGQoQSwgQiwgQykgXAogICgoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9yYW5nZXBkMTI4X21hc2soKF9fdjJkZikoX19tMTI4ZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKEIpLCAoaW50KShDKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfbW1fc2V0emVyb19wZCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEpKQoKI2RlZmluZSBfbW1fbWFza19yYW5nZV9wZChXLCBVLCBBLCBCLCBDKSBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3JhbmdlcGQxMjhfbWFzaygoX192MmRmKShfX20xMjhkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikoX19tMTI4ZCkoQiksIChpbnQpKEMpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShXKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSkpCgojZGVmaW5lIF9tbV9tYXNrel9yYW5nZV9wZChVLCBBLCBCLCBDKSBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3JhbmdlcGQxMjhfbWFzaygoX192MmRmKShfX20xMjhkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikoX19tMTI4ZCkoQiksIChpbnQpKEMpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9tbV9zZXR6ZXJvX3BkKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSkpKQoKI2RlZmluZSBfbW0yNTZfcmFuZ2VfcGQoQSwgQiwgQykgXAogICgoX19tMjU2ZClfX2J1aWx0aW5faWEzMl9yYW5nZXBkMjU2X21hc2soKF9fdjRkZikoX19tMjU2ZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpKF9fbTI1NmQpKEIpLCAoaW50KShDKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZilfbW0yNTZfc2V0emVyb19wZCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEpKQoKI2RlZmluZSBfbW0yNTZfbWFza19yYW5nZV9wZChXLCBVLCBBLCBCLCBDKSBcCiAgKChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX3JhbmdlcGQyNTZfbWFzaygoX192NGRmKShfX20yNTZkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZikoX19tMjU2ZCkoQiksIChpbnQpKEMpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKShfX20yNTZkKShXKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSkpCgojZGVmaW5lIF9tbTI1Nl9tYXNrel9yYW5nZV9wZChVLCBBLCBCLCBDKSBcCiAgKChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX3JhbmdlcGQyNTZfbWFzaygoX192NGRmKShfX20yNTZkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZikoX19tMjU2ZCkoQiksIChpbnQpKEMpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9tbTI1Nl9zZXR6ZXJvX3BkKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSkpKQoKI2RlZmluZSBfbW1fcmFuZ2VfcHMoQSwgQiwgQykgXAogICgoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3JhbmdlcHMxMjhfbWFzaygoX192NHNmKShfX20xMjgpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoQiksIChpbnQpKEMpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX3NldHplcm9fcHMoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEpKQoKI2RlZmluZSBfbW1fbWFza19yYW5nZV9wcyhXLCBVLCBBLCBCLCBDKSBcCiAgKChfX20xMjgpX19idWlsdGluX2lhMzJfcmFuZ2VwczEyOF9tYXNrKChfX3Y0c2YpKF9fbTEyOCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikoX19tMTI4KShCKSwgKGludCkoQyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikoX19tMTI4KShXKSwgKF9fbW1hc2s4KShVKSkpCgojZGVmaW5lIF9tbV9tYXNrel9yYW5nZV9wcyhVLCBBLCBCLCBDKSBcCiAgKChfX20xMjgpX19idWlsdGluX2lhMzJfcmFuZ2VwczEyOF9tYXNrKChfX3Y0c2YpKF9fbTEyOCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikoX19tMTI4KShCKSwgKGludCkoQyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfbW1fc2V0emVyb19wcygpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSkpKQoKI2RlZmluZSBfbW0yNTZfcmFuZ2VfcHMoQSwgQiwgQykgXAogICgoX19tMjU2KV9fYnVpbHRpbl9pYTMyX3JhbmdlcHMyNTZfbWFzaygoX192OHNmKShfX20yNTYpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpKF9fbTI1NikoQiksIChpbnQpKEMpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX21tMjU2X3NldHplcm9fcHMoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEpKQoKI2RlZmluZSBfbW0yNTZfbWFza19yYW5nZV9wcyhXLCBVLCBBLCBCLCBDKSBcCiAgKChfX20yNTYpX19idWlsdGluX2lhMzJfcmFuZ2VwczI1Nl9tYXNrKChfX3Y4c2YpKF9fbTI1NikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZikoX19tMjU2KShCKSwgKGludCkoQyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZikoX19tMjU2KShXKSwgKF9fbW1hc2s4KShVKSkpCgojZGVmaW5lIF9tbTI1Nl9tYXNrel9yYW5nZV9wcyhVLCBBLCBCLCBDKSBcCiAgKChfX20yNTYpX19idWlsdGluX2lhMzJfcmFuZ2VwczI1Nl9tYXNrKChfX3Y4c2YpKF9fbTI1NikoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZikoX19tMjU2KShCKSwgKGludCkoQyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZilfbW0yNTZfc2V0emVyb19wcygpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSkpKQoKI2RlZmluZSBfbW1fcmVkdWNlX3BkKEEsIEIpIFwKICAoKF9fbTEyOGQpX19idWlsdGluX2lhMzJfcmVkdWNlcGQxMjhfbWFzaygoX192MmRmKShfX20xMjhkKShBKSwgKGludCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9tbV9zZXR6ZXJvX3BkKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEpKQoKI2RlZmluZSBfbW1fbWFza19yZWR1Y2VfcGQoVywgVSwgQSwgQikgXAogICgoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9yZWR1Y2VwZDEyOF9tYXNrKChfX3YyZGYpKF9fbTEyOGQpKEEpLCAoaW50KShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKFcpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSkpCgojZGVmaW5lIF9tbV9tYXNrel9yZWR1Y2VfcGQoVSwgQSwgQikgXAogICgoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9yZWR1Y2VwZDEyOF9tYXNrKChfX3YyZGYpKF9fbTEyOGQpKEEpLCAoaW50KShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX3NldHplcm9fcGQoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSkpKQoKI2RlZmluZSBfbW0yNTZfcmVkdWNlX3BkKEEsIEIpIFwKICAoKF9fbTI1NmQpX19idWlsdGluX2lhMzJfcmVkdWNlcGQyNTZfbWFzaygoX192NGRmKShfX20yNTZkKShBKSwgKGludCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9tbTI1Nl9zZXR6ZXJvX3BkKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEpKQoKI2RlZmluZSBfbW0yNTZfbWFza19yZWR1Y2VfcGQoVywgVSwgQSwgQikgXAogICgoX19tMjU2ZClfX2J1aWx0aW5faWEzMl9yZWR1Y2VwZDI1Nl9tYXNrKChfX3Y0ZGYpKF9fbTI1NmQpKEEpLCAoaW50KShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpKF9fbTI1NmQpKFcpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSkpCgojZGVmaW5lIF9tbTI1Nl9tYXNrel9yZWR1Y2VfcGQoVSwgQSwgQikgXAogICgoX19tMjU2ZClfX2J1aWx0aW5faWEzMl9yZWR1Y2VwZDI1Nl9tYXNrKChfX3Y0ZGYpKF9fbTI1NmQpKEEpLCAoaW50KShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpX21tMjU2X3NldHplcm9fcGQoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSkpKQoKI2RlZmluZSBfbW1fcmVkdWNlX3BzKEEsIEIpIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl9yZWR1Y2VwczEyOF9tYXNrKChfX3Y0c2YpKF9fbTEyOCkoQSksIChpbnQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9tbV9zZXR6ZXJvX3BzKCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSkpCgojZGVmaW5lIF9tbV9tYXNrX3JlZHVjZV9wcyhXLCBVLCBBLCBCKSBcCiAgKChfX20xMjgpX19idWlsdGluX2lhMzJfcmVkdWNlcHMxMjhfbWFzaygoX192NHNmKShfX20xMjgpKEEpLCAoaW50KShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikoX19tMTI4KShXKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSkpCgojZGVmaW5lIF9tbV9tYXNrel9yZWR1Y2VfcHMoVSwgQSwgQikgXAogICgoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3JlZHVjZXBzMTI4X21hc2soKF9fdjRzZikoX19tMTI4KShBKSwgKGludCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX21tX3NldHplcm9fcHMoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSkpCgojZGVmaW5lIF9tbTI1Nl9yZWR1Y2VfcHMoQSwgQikgXAogICgoX19tMjU2KV9fYnVpbHRpbl9pYTMyX3JlZHVjZXBzMjU2X21hc2soKF9fdjhzZikoX19tMjU2KShBKSwgKGludCkoQiksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX21tMjU2X3NldHplcm9fcHMoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xKSkKCiNkZWZpbmUgX21tMjU2X21hc2tfcmVkdWNlX3BzKFcsIFUsIEEsIEIpIFwKICAoKF9fbTI1NilfX2J1aWx0aW5faWEzMl9yZWR1Y2VwczI1Nl9tYXNrKChfX3Y4c2YpKF9fbTI1NikoQSksIChpbnQpKEIpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKShfX20yNTYpKFcpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpKSkKCiNkZWZpbmUgX21tMjU2X21hc2t6X3JlZHVjZV9wcyhVLCBBLCBCKSBcCiAgKChfX20yNTYpX19idWlsdGluX2lhMzJfcmVkdWNlcHMyNTZfbWFzaygoX192OHNmKShfX20yNTYpKEEpLCAoaW50KShCKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZilfbW0yNTZfc2V0emVyb19wcygpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpKSkKCnN0YXRpYyBfX2lubGluZV9fIF9fbW1hc2s4IF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbW92ZXBpMzJfbWFzayAoX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbW1hc2s4KSBfX2J1aWx0aW5faWEzMl9jdnRkMm1hc2sxMjggKChfX3Y0c2kpIF9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbW1hc2s4IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbW92ZXBpMzJfbWFzayAoX19tMjU2aSBfX0EpCnsKICByZXR1cm4gKF9fbW1hc2s4KSBfX2J1aWx0aW5faWEzMl9jdnRkMm1hc2syNTYgKChfX3Y4c2kpIF9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tb3ZtX2VwaTMyIChfX21tYXNrOCBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX2N2dG1hc2syZDEyOCAoX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21vdm1fZXBpMzIgKF9fbW1hc2s4IF9fQSkKewogIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfY3Z0bWFzazJkMjU2IChfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbW92bV9lcGk2NCAoX19tbWFzazggX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9jdnRtYXNrMnExMjggKF9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tb3ZtX2VwaTY0IChfX21tYXNrOCBfX0EpCnsKICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX2N2dG1hc2sycTI1NiAoX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tbWFzazggX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tb3ZlcGk2NF9tYXNrIChfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tbWFzazgpIF9fYnVpbHRpbl9pYTMyX2N2dHEybWFzazEyOCAoKF9fdjJkaSkgX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tbWFzazggX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tb3ZlcGk2NF9tYXNrIChfX20yNTZpIF9fQSkKewogIHJldHVybiAoX19tbWFzazgpIF9fYnVpbHRpbl9pYTMyX2N2dHEybWFzazI1NiAoKF9fdjRkaSkgX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfYnJvYWRjYXN0X2YzMngyIChfX20xMjggX19BKQp7CiAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjRzZilfX0EsIChfX3Y0c2YpX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDEsIDAsIDEsIDAsIDEsIDAsIDEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2Jyb2FkY2FzdF9mMzJ4MiAoX19tMjU2IF9fTywgX19tbWFzazggX19NLCBfX20xMjggX19BKQp7CiAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMjU2KChfX21tYXNrOClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX21tMjU2X2Jyb2FkY2FzdF9mMzJ4MihfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKV9fTyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2Jyb2FkY2FzdF9mMzJ4MiAoX19tbWFzazggX19NLCBfX20xMjggX19BKQp7CiAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2lhMzJfc2VsZWN0cHNfMjU2KChfX21tYXNrOClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpX21tMjU2X2Jyb2FkY2FzdF9mMzJ4MihfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKV9tbTI1Nl9zZXR6ZXJvX3BzKCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfYnJvYWRjYXN0X2Y2NHgyKF9fbTEyOGQgX19BKQp7CiAgcmV0dXJuIChfX20yNTZkKV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3YyZGYpX19BLCAoX192MmRmKV9fQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMSwgMCwgMSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrX2Jyb2FkY2FzdF9mNjR4MihfX20yNTZkIF9fTywgX19tbWFzazggX19NLCBfX20xMjhkIF9fQSkKewogIHJldHVybiAoX19tMjU2ZClfX2J1aWx0aW5faWEzMl9zZWxlY3RwZF8yNTYoKF9fbW1hc2s4KV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9tbTI1Nl9icm9hZGNhc3RfZjY0eDIoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9fTyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9icm9hZGNhc3RfZjY0eDIgKF9fbW1hc2s4IF9fTSwgX19tMTI4ZCBfX0EpCnsKICByZXR1cm4gKF9fbTI1NmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMjU2KChfX21tYXNrOClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZilfbW0yNTZfYnJvYWRjYXN0X2Y2NHgyKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZilfbW0yNTZfc2V0emVyb19wZCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX2Jyb2FkY2FzdF9pMzJ4MiAoX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjRzaSlfX0EsIChfX3Y0c2kpX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAxLCAwLCAxKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX21hc2tfYnJvYWRjYXN0X2kzMngyIChfX20xMjhpIF9fTywgX19tbWFzazggX19NLCBfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzEyOCgoX19tbWFzazgpX19NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9icm9hZGNhc3RfaTMyeDIoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfX08pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfYnJvYWRjYXN0X2kzMngyIChfX21tYXNrOCBfX00sIF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMTI4KChfX21tYXNrOClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpX21tX2Jyb2FkY2FzdF9pMzJ4MihfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfYnJvYWRjYXN0X2kzMngyIChfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192NHNpKV9fQSwgKF9fdjRzaSlfX0EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDEsIDAsIDEsIDAsIDEsIDAsIDEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19icm9hZGNhc3RfaTMyeDIgKF9fbTI1NmkgX19PLCBfX21tYXNrOCBfX00sIF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdGRfMjU2KChfX21tYXNrOClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X2Jyb2FkY2FzdF9pMzJ4MihfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNpKV9fTyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9tYXNrel9icm9hZGNhc3RfaTMyeDIgKF9fbW1hc2s4IF9fTSwgX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8yNTYoKF9fbW1hc2s4KV9fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfYnJvYWRjYXN0X2kzMngyKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2kpX21tMjU2X3NldHplcm9fc2kyNTYoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9icm9hZGNhc3RfaTY0eDIoX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjJkaSlfX0EsIChfX3YyZGkpX19BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAxLCAwLCAxKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfYnJvYWRjYXN0X2k2NHgyKF9fbTI1NmkgX19PLCBfX21tYXNrOCBfX00sIF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMjU2KChfX21tYXNrOClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfYnJvYWRjYXN0X2k2NHgyKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfX08pOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfYnJvYWRjYXN0X2k2NHgyIChfX21tYXNrOCBfX00sIF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMjU2KChfX21tYXNrOClfX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfYnJvYWRjYXN0X2k2NHgyKF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKI2RlZmluZSBfbW0yNTZfZXh0cmFjdGY2NHgyX3BkKEEsIGltbSkgXAogICgoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9leHRyYWN0ZjY0eDJfMjU2X21hc2soKF9fdjRkZikoX19tMjU2ZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKGltbSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX3VuZGVmaW5lZF9wZCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEpKQoKI2RlZmluZSBfbW0yNTZfbWFza19leHRyYWN0ZjY0eDJfcGQoVywgVSwgQSwgaW1tKSBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2V4dHJhY3RmNjR4Ml8yNTZfbWFzaygoX192NGRmKShfX20yNTZkKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoaW1tKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikoX19tMTI4ZCkoVyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCkoVSkpKQoKI2RlZmluZSBfbW0yNTZfbWFza3pfZXh0cmFjdGY2NHgyX3BkKFUsIEEsIGltbSkgXAogICgoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9leHRyYWN0ZjY0eDJfMjU2X21hc2soKF9fdjRkZikoX19tMjU2ZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKGltbSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpX21tX3NldHplcm9fcGQoKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSkpCgojZGVmaW5lIF9tbTI1Nl9leHRyYWN0aTY0eDJfZXBpNjQoQSwgaW1tKSBcCiAgKChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX2V4dHJhY3RpNjR4Ml8yNTZfbWFzaygoX192NGRpKShfX20yNTZpKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpX21tX3VuZGVmaW5lZF9zaTEyOCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSkpCgojZGVmaW5lIF9tbTI1Nl9tYXNrX2V4dHJhY3RpNjR4Ml9lcGk2NChXLCBVLCBBLCBpbW0pIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfZXh0cmFjdGk2NHgyXzI1Nl9tYXNrKChfX3Y0ZGkpKF9fbTI1NmkpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKShfX20xMjhpKShXKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSkpCgojZGVmaW5lIF9tbTI1Nl9tYXNrel9leHRyYWN0aTY0eDJfZXBpNjQoVSwgQSwgaW1tKSBcCiAgKChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX2V4dHJhY3RpNjR4Ml8yNTZfbWFzaygoX192NGRpKShfX20yNTZpKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoaW1tKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfbW1fc2V0emVyb19zaTEyOCgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpKSkKCiNkZWZpbmUgX21tMjU2X2luc2VydGY2NHgyKEEsIEIsIGltbSkgXAogICgoX19tMjU2ZClfX2J1aWx0aW5faWEzMl9pbnNlcnRmNjR4Ml8yNTYoKF9fdjRkZikoX19tMjU2ZCkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKEIpLCAoaW50KShpbW0pKSkKCiNkZWZpbmUgX21tMjU2X21hc2tfaW5zZXJ0ZjY0eDIoVywgVSwgQSwgQiwgaW1tKSBcCiAgKChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHBkXzI1NigoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9tbTI1Nl9pbnNlcnRmNjR4MigoQSksIChCKSwgKGltbSkpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKShfX20yNTZkKShXKSkpCgojZGVmaW5lIF9tbTI1Nl9tYXNrel9pbnNlcnRmNjR4MihVLCBBLCBCLCBpbW0pIFwKICAoKF9fbTI1NmQpX19idWlsdGluX2lhMzJfc2VsZWN0cGRfMjU2KChfX21tYXNrOCkoVSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpX21tMjU2X2luc2VydGY2NHgyKChBKSwgKEIpLCAoaW1tKSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpX21tMjU2X3NldHplcm9fcGQoKSkpCgojZGVmaW5lIF9tbTI1Nl9pbnNlcnRpNjR4MihBLCBCLCBpbW0pIFwKICAoKF9fbTI1NmkpX19idWlsdGluX2lhMzJfaW5zZXJ0aTY0eDJfMjU2KChfX3Y0ZGkpKF9fbTI1NmkpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKShfX20xMjhpKShCKSwgKGludCkoaW1tKSkpCgojZGVmaW5lIF9tbTI1Nl9tYXNrX2luc2VydGk2NHgyKFcsIFUsIEEsIEIsIGltbSkgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzI1NigoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfaW5zZXJ0aTY0eDIoKEEpLCAoQiksIChpbW0pKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpKF9fbTI1NmkpKFcpKSkKCiNkZWZpbmUgX21tMjU2X21hc2t6X2luc2VydGk2NHgyKFUsIEEsIEIsIGltbSkgXAogICgoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RxXzI1NigoX19tbWFzazgpKFUpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfaW5zZXJ0aTY0eDIoKEEpLCAoQiksIChpbW0pKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX21tMjU2X3NldHplcm9fc2kyNTYoKSkpCgojZGVmaW5lIF9tbV9tYXNrX2ZwY2xhc3NfcGRfbWFzayhVLCBBLCBpbW0pIFwKICAoKF9fbW1hc2s4KV9fYnVpbHRpbl9pYTMyX2ZwY2xhc3NwZDEyOF9tYXNrKChfX3YyZGYpKF9fbTEyOGQpKEEpLCAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpKSkKCiNkZWZpbmUgX21tX2ZwY2xhc3NfcGRfbWFzayhBLCBpbW0pIFwKICAoKF9fbW1hc2s4KV9fYnVpbHRpbl9pYTMyX2ZwY2xhc3NwZDEyOF9tYXNrKChfX3YyZGYpKF9fbTEyOGQpKEEpLCAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEpKQoKI2RlZmluZSBfbW0yNTZfbWFza19mcGNsYXNzX3BkX21hc2soVSwgQSwgaW1tKSBcCiAgKChfX21tYXNrOClfX2J1aWx0aW5faWEzMl9mcGNsYXNzcGQyNTZfbWFzaygoX192NGRmKShfX20yNTZkKShBKSwgKGludCkoaW1tKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSkpCgojZGVmaW5lIF9tbTI1Nl9mcGNsYXNzX3BkX21hc2soQSwgaW1tKSBcCiAgKChfX21tYXNrOClfX2J1aWx0aW5faWEzMl9mcGNsYXNzcGQyNTZfbWFzaygoX192NGRmKShfX20yNTZkKShBKSwgKGludCkoaW1tKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KS0xKSkKCiNkZWZpbmUgX21tX21hc2tfZnBjbGFzc19wc19tYXNrKFUsIEEsIGltbSkgXAogICgoX19tbWFzazgpX19idWlsdGluX2lhMzJfZnBjbGFzc3BzMTI4X21hc2soKF9fdjRzZikoX19tMTI4KShBKSwgKGludCkoaW1tKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fbW1hc2s4KShVKSkpCgojZGVmaW5lIF9tbV9mcGNsYXNzX3BzX21hc2soQSwgaW1tKSBcCiAgKChfX21tYXNrOClfX2J1aWx0aW5faWEzMl9mcGNsYXNzcHMxMjhfbWFzaygoX192NHNmKShfX20xMjgpKEEpLCAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpLTEpKQoKI2RlZmluZSBfbW0yNTZfbWFza19mcGNsYXNzX3BzX21hc2soVSwgQSwgaW1tKSBcCiAgKChfX21tYXNrOClfX2J1aWx0aW5faWEzMl9mcGNsYXNzcHMyNTZfbWFzaygoX192OHNmKShfX20yNTYpKEEpLCAoaW50KShpbW0pLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19tbWFzazgpKFUpKSkKCiNkZWZpbmUgX21tMjU2X2ZwY2xhc3NfcHNfbWFzayhBLCBpbW0pIFwKICAoKF9fbW1hc2s4KV9fYnVpbHRpbl9pYTMyX2ZwY2xhc3NwczI1Nl9tYXNrKChfX3Y4c2YpKF9fbTI1NikoQSksIChpbnQpKGltbSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX21tYXNrOCktMSkpCgojdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTMTI4CiN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKCiNlbmRpZgoAY2V0LmgAaHJlc2V0aW50cmluLmgAcmRzZWVkaW50cmluLmgALyo9PT0tLS0tIHhvcGludHJpbi5oIC0gWE9QIGludHJpbnNpY3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwoKI2lmbmRlZiBfX1g4NklOVFJJTl9ICiNlcnJvciAiTmV2ZXIgdXNlIDx4b3BpbnRyaW4uaD4gZGlyZWN0bHk7IGluY2x1ZGUgPHg4NmludHJpbi5oPiBpbnN0ZWFkLiIKI2VuZGlmCgojaWZuZGVmIF9fWE9QSU5UUklOX0gKI2RlZmluZSBfX1hPUElOVFJJTl9ICgojaW5jbHVkZSA8Zm1hNGludHJpbi5oPgoKLyogRGVmaW5lIHRoZSBkZWZhdWx0IGF0dHJpYnV0ZXMgZm9yIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlLiAqLwojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUyBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oInhvcCIpLCBfX21pbl92ZWN0b3Jfd2lkdGhfXygxMjgpKSkKI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJ4b3AiKSwgX19taW5fdmVjdG9yX3dpZHRoX18oMjU2KSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fbWFjY3NfZXBpMTYoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CLCBfX20xMjhpIF9fQykKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92cG1hY3Nzd3coKF9fdjhoaSlfX0EsIChfX3Y4aGkpX19CLCAoX192OGhpKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9tYWNjX2VwaTE2KF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQiwgX19tMTI4aSBfX0MpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdnBtYWNzd3coKF9fdjhoaSlfX0EsIChfX3Y4aGkpX19CLCAoX192OGhpKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9tYWNjc2RfZXBpMTYoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CLCBfX20xMjhpIF9fQykKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92cG1hY3Nzd2QoKF9fdjhoaSlfX0EsIChfX3Y4aGkpX19CLCAoX192NHNpKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9tYWNjZF9lcGkxNihfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IsIF9fbTEyOGkgX19DKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3ZwbWFjc3dkKChfX3Y4aGkpX19BLCAoX192OGhpKV9fQiwgKF9fdjRzaSlfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fbWFjY3NfZXBpMzIoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CLCBfX20xMjhpIF9fQykKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92cG1hY3NzZGQoKF9fdjRzaSlfX0EsIChfX3Y0c2kpX19CLCAoX192NHNpKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9tYWNjX2VwaTMyKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQiwgX19tMTI4aSBfX0MpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdnBtYWNzZGQoKF9fdjRzaSlfX0EsIChfX3Y0c2kpX19CLCAoX192NHNpKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9tYWNjc2xvX2VwaTMyKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQiwgX19tMTI4aSBfX0MpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdnBtYWNzc2RxbCgoX192NHNpKV9fQSwgKF9fdjRzaSlfX0IsIChfX3YyZGkpX19DKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX21hY2Nsb19lcGkzMihfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IsIF9fbTEyOGkgX19DKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3ZwbWFjc2RxbCgoX192NHNpKV9fQSwgKF9fdjRzaSlfX0IsIChfX3YyZGkpX19DKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX21hY2NzaGlfZXBpMzIoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CLCBfX20xMjhpIF9fQykKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92cG1hY3NzZHFoKChfX3Y0c2kpX19BLCAoX192NHNpKV9fQiwgKF9fdjJkaSlfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fbWFjY2hpX2VwaTMyKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQiwgX19tMTI4aSBfX0MpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdnBtYWNzZHFoKChfX3Y0c2kpX19BLCAoX192NHNpKV9fQiwgKF9fdjJkaSlfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fbWFkZHNkX2VwaTE2KF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQiwgX19tMTI4aSBfX0MpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdnBtYWRjc3N3ZCgoX192OGhpKV9fQSwgKF9fdjhoaSlfX0IsIChfX3Y0c2kpX19DKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX21hZGRkX2VwaTE2KF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQiwgX19tMTI4aSBfX0MpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdnBtYWRjc3dkKChfX3Y4aGkpX19BLCAoX192OGhpKV9fQiwgKF9fdjRzaSlfX0MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1faGFkZHdfZXBpOChfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92cGhhZGRidygoX192MTZxaSlfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1faGFkZGRfZXBpOChfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92cGhhZGRiZCgoX192MTZxaSlfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1faGFkZHFfZXBpOChfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92cGhhZGRicSgoX192MTZxaSlfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1faGFkZGRfZXBpMTYoX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdnBoYWRkd2QoKF9fdjhoaSlfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1faGFkZHFfZXBpMTYoX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdnBoYWRkd3EoKF9fdjhoaSlfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1faGFkZHFfZXBpMzIoX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdnBoYWRkZHEoKF9fdjRzaSlfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1faGFkZHdfZXB1OChfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92cGhhZGR1YncoKF9fdjE2cWkpX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2hhZGRkX2VwdTgoX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdnBoYWRkdWJkKChfX3YxNnFpKV9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9oYWRkcV9lcHU4KF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3ZwaGFkZHVicSgoX192MTZxaSlfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1faGFkZGRfZXB1MTYoX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdnBoYWRkdXdkKChfX3Y4aGkpX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2hhZGRxX2VwdTE2KF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3ZwaGFkZHV3cSgoX192OGhpKV9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9oYWRkcV9lcHUzMihfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92cGhhZGR1ZHEoKF9fdjRzaSlfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1faHN1YndfZXBpOChfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92cGhzdWJidygoX192MTZxaSlfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1faHN1YmRfZXBpMTYoX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdnBoc3Vid2QoKF9fdjhoaSlfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1faHN1YnFfZXBpMzIoX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdnBoc3ViZHEoKF9fdjRzaSlfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY21vdl9zaTEyOChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IsIF9fbTEyOGkgX19DKQp7CiAgcmV0dXJuIChfX20xMjhpKSgoKF9fdjJkdSlfX0EgJiAoX192MmR1KV9fQykgfCAoKF9fdjJkdSlfX0IgJiB+KF9fdjJkdSlfX0MpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2Ntb3Zfc2kyNTYoX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CLCBfX20yNTZpIF9fQykKewogIHJldHVybiAoX19tMjU2aSkoKChfX3Y0ZHUpX19BICYgKF9fdjRkdSlfX0MpIHwgKChfX3Y0ZHUpX19CICYgfihfX3Y0ZHUpX19DKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9wZXJtX2VwaTgoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CLCBfX20xMjhpIF9fQykKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92cHBlcm0oKF9fdjE2cWkpX19BLCAoX192MTZxaSlfX0IsIChfX3YxNnFpKV9fQyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9yb3RfZXBpOChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdnByb3RiKChfX3YxNnFpKV9fQSwgKF9fdjE2cWkpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3JvdF9lcGkxNihfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdnByb3R3KChfX3Y4aGkpX19BLCAoX192OGhpKV9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9yb3RfZXBpMzIoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3Zwcm90ZCgoX192NHNpKV9fQSwgKF9fdjRzaSlfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fcm90X2VwaTY0KF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92cHJvdHEoKF9fdjJkaSlfX0EsIChfX3YyZGkpX19CKTsKfQoKI2RlZmluZSBfbW1fcm90aV9lcGk4KEEsIE4pIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdnByb3RiaSgoX192MTZxaSkoX19tMTI4aSkoQSksIChOKSkpCgojZGVmaW5lIF9tbV9yb3RpX2VwaTE2KEEsIE4pIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdnByb3R3aSgoX192OGhpKShfX20xMjhpKShBKSwgKE4pKSkKCiNkZWZpbmUgX21tX3JvdGlfZXBpMzIoQSwgTikgXAogICgoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92cHJvdGRpKChfX3Y0c2kpKF9fbTEyOGkpKEEpLCAoTikpKQoKI2RlZmluZSBfbW1fcm90aV9lcGk2NChBLCBOKSBcCiAgKChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3Zwcm90cWkoKF9fdjJkaSkoX19tMTI4aSkoQSksIChOKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc2hsX2VwaTgoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3Zwc2hsYigoX192MTZxaSlfX0EsIChfX3YxNnFpKV9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zaGxfZXBpMTYoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3Zwc2hsdygoX192OGhpKV9fQSwgKF9fdjhoaSlfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc2hsX2VwaTMyKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92cHNobGQoKF9fdjRzaSlfX0EsIChfX3Y0c2kpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3NobF9lcGk2NChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdnBzaGxxKChfX3YyZGkpX19BLCAoX192MmRpKV9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zaGFfZXBpOChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdnBzaGFiKChfX3YxNnFpKV9fQSwgKF9fdjE2cWkpX19CKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX3NoYV9lcGkxNihfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdnBzaGF3KChfX3Y4aGkpX19BLCAoX192OGhpKV9fQik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9zaGFfZXBpMzIoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3Zwc2hhZCgoX192NHNpKV9fQSwgKF9fdjRzaSlfX0IpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fc2hhX2VwaTY0KF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92cHNoYXEoKF9fdjJkaSlfX0EsIChfX3YyZGkpX19CKTsKfQoKI2RlZmluZSBfbW1fY29tX2VwdTgoQSwgQiwgTikgXAogICgoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92cGNvbXViKChfX3YxNnFpKShfX20xMjhpKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKShfX20xMjhpKShCKSwgKE4pKSkKCiNkZWZpbmUgX21tX2NvbV9lcHUxNihBLCBCLCBOKSBcCiAgKChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3ZwY29tdXcoKF9fdjhoaSkoX19tMTI4aSkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKShfX20xMjhpKShCKSwgKE4pKSkKCiNkZWZpbmUgX21tX2NvbV9lcHUzMihBLCBCLCBOKSBcCiAgKChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3ZwY29tdWQoKF9fdjRzaSkoX19tMTI4aSkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKShfX20xMjhpKShCKSwgKE4pKSkKCiNkZWZpbmUgX21tX2NvbV9lcHU2NChBLCBCLCBOKSBcCiAgKChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3ZwY29tdXEoKF9fdjJkaSkoX19tMTI4aSkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRpKShfX20xMjhpKShCKSwgKE4pKSkKCiNkZWZpbmUgX21tX2NvbV9lcGk4KEEsIEIsIE4pIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdnBjb21iKChfX3YxNnFpKShfX20xMjhpKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpKF9fbTEyOGkpKEIpLCAoTikpKQoKI2RlZmluZSBfbW1fY29tX2VwaTE2KEEsIEIsIE4pIFwKICAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdnBjb213KChfX3Y4aGkpKF9fbTEyOGkpKEEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OGhpKShfX20xMjhpKShCKSwgKE4pKSkKCiNkZWZpbmUgX21tX2NvbV9lcGkzMihBLCBCLCBOKSBcCiAgKChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3ZwY29tZCgoX192NHNpKShfX20xMjhpKShBKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSkoX19tMTI4aSkoQiksIChOKSkpCgojZGVmaW5lIF9tbV9jb21fZXBpNjQoQSwgQiwgTikgXAogICgoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92cGNvbXEoKF9fdjJkaSkoX19tMTI4aSkoQSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpKF9fbTEyOGkpKEIpLCAoTikpKQoKI2RlZmluZSBfTU1fUENPTUNUUkxfTFQgICAgMAojZGVmaW5lIF9NTV9QQ09NQ1RSTF9MRSAgICAxCiNkZWZpbmUgX01NX1BDT01DVFJMX0dUICAgIDIKI2RlZmluZSBfTU1fUENPTUNUUkxfR0UgICAgMwojZGVmaW5lIF9NTV9QQ09NQ1RSTF9FUSAgICA0CiNkZWZpbmUgX01NX1BDT01DVFJMX05FUSAgIDUKI2RlZmluZSBfTU1fUENPTUNUUkxfRkFMU0UgNgojZGVmaW5lIF9NTV9QQ09NQ1RSTF9UUlVFICA3CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY29tbHRfZXB1OChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gX21tX2NvbV9lcHU4KF9fQSwgX19CLCBfTU1fUENPTUNUUkxfTFQpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY29tbGVfZXB1OChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gX21tX2NvbV9lcHU4KF9fQSwgX19CLCBfTU1fUENPTUNUUkxfTEUpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY29tZ3RfZXB1OChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gX21tX2NvbV9lcHU4KF9fQSwgX19CLCBfTU1fUENPTUNUUkxfR1QpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY29tZ2VfZXB1OChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gX21tX2NvbV9lcHU4KF9fQSwgX19CLCBfTU1fUENPTUNUUkxfR0UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY29tZXFfZXB1OChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gX21tX2NvbV9lcHU4KF9fQSwgX19CLCBfTU1fUENPTUNUUkxfRVEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY29tbmVxX2VwdTgoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIF9tbV9jb21fZXB1OChfX0EsIF9fQiwgX01NX1BDT01DVFJMX05FUSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jb21mYWxzZV9lcHU4KF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiBfbW1fY29tX2VwdTgoX19BLCBfX0IsIF9NTV9QQ09NQ1RSTF9GQUxTRSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jb210cnVlX2VwdTgoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIF9tbV9jb21fZXB1OChfX0EsIF9fQiwgX01NX1BDT01DVFJMX1RSVUUpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY29tbHRfZXB1MTYoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIF9tbV9jb21fZXB1MTYoX19BLCBfX0IsIF9NTV9QQ09NQ1RSTF9MVCk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jb21sZV9lcHUxNihfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gX21tX2NvbV9lcHUxNihfX0EsIF9fQiwgX01NX1BDT01DVFJMX0xFKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2NvbWd0X2VwdTE2KF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiBfbW1fY29tX2VwdTE2KF9fQSwgX19CLCBfTU1fUENPTUNUUkxfR1QpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY29tZ2VfZXB1MTYoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIF9tbV9jb21fZXB1MTYoX19BLCBfX0IsIF9NTV9QQ09NQ1RSTF9HRSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jb21lcV9lcHUxNihfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gX21tX2NvbV9lcHUxNihfX0EsIF9fQiwgX01NX1BDT01DVFJMX0VRKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2NvbW5lcV9lcHUxNihfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gX21tX2NvbV9lcHUxNihfX0EsIF9fQiwgX01NX1BDT01DVFJMX05FUSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jb21mYWxzZV9lcHUxNihfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gX21tX2NvbV9lcHUxNihfX0EsIF9fQiwgX01NX1BDT01DVFJMX0ZBTFNFKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2NvbXRydWVfZXB1MTYoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIF9tbV9jb21fZXB1MTYoX19BLCBfX0IsIF9NTV9QQ09NQ1RSTF9UUlVFKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2NvbWx0X2VwdTMyKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiBfbW1fY29tX2VwdTMyKF9fQSwgX19CLCBfTU1fUENPTUNUUkxfTFQpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY29tbGVfZXB1MzIoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIF9tbV9jb21fZXB1MzIoX19BLCBfX0IsIF9NTV9QQ09NQ1RSTF9MRSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jb21ndF9lcHUzMihfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gX21tX2NvbV9lcHUzMihfX0EsIF9fQiwgX01NX1BDT01DVFJMX0dUKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2NvbWdlX2VwdTMyKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiBfbW1fY29tX2VwdTMyKF9fQSwgX19CLCBfTU1fUENPTUNUUkxfR0UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY29tZXFfZXB1MzIoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIF9tbV9jb21fZXB1MzIoX19BLCBfX0IsIF9NTV9QQ09NQ1RSTF9FUSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jb21uZXFfZXB1MzIoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIF9tbV9jb21fZXB1MzIoX19BLCBfX0IsIF9NTV9QQ09NQ1RSTF9ORVEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY29tZmFsc2VfZXB1MzIoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIF9tbV9jb21fZXB1MzIoX19BLCBfX0IsIF9NTV9QQ09NQ1RSTF9GQUxTRSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jb210cnVlX2VwdTMyKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiBfbW1fY29tX2VwdTMyKF9fQSwgX19CLCBfTU1fUENPTUNUUkxfVFJVRSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jb21sdF9lcHU2NChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gX21tX2NvbV9lcHU2NChfX0EsIF9fQiwgX01NX1BDT01DVFJMX0xUKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2NvbWxlX2VwdTY0KF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiBfbW1fY29tX2VwdTY0KF9fQSwgX19CLCBfTU1fUENPTUNUUkxfTEUpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY29tZ3RfZXB1NjQoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIF9tbV9jb21fZXB1NjQoX19BLCBfX0IsIF9NTV9QQ09NQ1RSTF9HVCk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jb21nZV9lcHU2NChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gX21tX2NvbV9lcHU2NChfX0EsIF9fQiwgX01NX1BDT01DVFJMX0dFKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2NvbWVxX2VwdTY0KF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiBfbW1fY29tX2VwdTY0KF9fQSwgX19CLCBfTU1fUENPTUNUUkxfRVEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY29tbmVxX2VwdTY0KF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiBfbW1fY29tX2VwdTY0KF9fQSwgX19CLCBfTU1fUENPTUNUUkxfTkVRKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2NvbWZhbHNlX2VwdTY0KF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiBfbW1fY29tX2VwdTY0KF9fQSwgX19CLCBfTU1fUENPTUNUUkxfRkFMU0UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY29tdHJ1ZV9lcHU2NChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gX21tX2NvbV9lcHU2NChfX0EsIF9fQiwgX01NX1BDT01DVFJMX1RSVUUpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY29tbHRfZXBpOChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gX21tX2NvbV9lcGk4KF9fQSwgX19CLCBfTU1fUENPTUNUUkxfTFQpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY29tbGVfZXBpOChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gX21tX2NvbV9lcGk4KF9fQSwgX19CLCBfTU1fUENPTUNUUkxfTEUpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY29tZ3RfZXBpOChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gX21tX2NvbV9lcGk4KF9fQSwgX19CLCBfTU1fUENPTUNUUkxfR1QpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY29tZ2VfZXBpOChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gX21tX2NvbV9lcGk4KF9fQSwgX19CLCBfTU1fUENPTUNUUkxfR0UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY29tZXFfZXBpOChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gX21tX2NvbV9lcGk4KF9fQSwgX19CLCBfTU1fUENPTUNUUkxfRVEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY29tbmVxX2VwaTgoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIF9tbV9jb21fZXBpOChfX0EsIF9fQiwgX01NX1BDT01DVFJMX05FUSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jb21mYWxzZV9lcGk4KF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiBfbW1fY29tX2VwaTgoX19BLCBfX0IsIF9NTV9QQ09NQ1RSTF9GQUxTRSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jb210cnVlX2VwaTgoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIF9tbV9jb21fZXBpOChfX0EsIF9fQiwgX01NX1BDT01DVFJMX1RSVUUpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY29tbHRfZXBpMTYoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIF9tbV9jb21fZXBpMTYoX19BLCBfX0IsIF9NTV9QQ09NQ1RSTF9MVCk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jb21sZV9lcGkxNihfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gX21tX2NvbV9lcGkxNihfX0EsIF9fQiwgX01NX1BDT01DVFJMX0xFKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2NvbWd0X2VwaTE2KF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiBfbW1fY29tX2VwaTE2KF9fQSwgX19CLCBfTU1fUENPTUNUUkxfR1QpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY29tZ2VfZXBpMTYoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIF9tbV9jb21fZXBpMTYoX19BLCBfX0IsIF9NTV9QQ09NQ1RSTF9HRSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jb21lcV9lcGkxNihfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gX21tX2NvbV9lcGkxNihfX0EsIF9fQiwgX01NX1BDT01DVFJMX0VRKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2NvbW5lcV9lcGkxNihfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gX21tX2NvbV9lcGkxNihfX0EsIF9fQiwgX01NX1BDT01DVFJMX05FUSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jb21mYWxzZV9lcGkxNihfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gX21tX2NvbV9lcGkxNihfX0EsIF9fQiwgX01NX1BDT01DVFJMX0ZBTFNFKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2NvbXRydWVfZXBpMTYoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIF9tbV9jb21fZXBpMTYoX19BLCBfX0IsIF9NTV9QQ09NQ1RSTF9UUlVFKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2NvbWx0X2VwaTMyKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiBfbW1fY29tX2VwaTMyKF9fQSwgX19CLCBfTU1fUENPTUNUUkxfTFQpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY29tbGVfZXBpMzIoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIF9tbV9jb21fZXBpMzIoX19BLCBfX0IsIF9NTV9QQ09NQ1RSTF9MRSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jb21ndF9lcGkzMihfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gX21tX2NvbV9lcGkzMihfX0EsIF9fQiwgX01NX1BDT01DVFJMX0dUKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2NvbWdlX2VwaTMyKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiBfbW1fY29tX2VwaTMyKF9fQSwgX19CLCBfTU1fUENPTUNUUkxfR0UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY29tZXFfZXBpMzIoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIF9tbV9jb21fZXBpMzIoX19BLCBfX0IsIF9NTV9QQ09NQ1RSTF9FUSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jb21uZXFfZXBpMzIoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIF9tbV9jb21fZXBpMzIoX19BLCBfX0IsIF9NTV9QQ09NQ1RSTF9ORVEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY29tZmFsc2VfZXBpMzIoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIF9tbV9jb21fZXBpMzIoX19BLCBfX0IsIF9NTV9QQ09NQ1RSTF9GQUxTRSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jb210cnVlX2VwaTMyKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiBfbW1fY29tX2VwaTMyKF9fQSwgX19CLCBfTU1fUENPTUNUUkxfVFJVRSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jb21sdF9lcGk2NChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gX21tX2NvbV9lcGk2NChfX0EsIF9fQiwgX01NX1BDT01DVFJMX0xUKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2NvbWxlX2VwaTY0KF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiBfbW1fY29tX2VwaTY0KF9fQSwgX19CLCBfTU1fUENPTUNUUkxfTEUpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY29tZ3RfZXBpNjQoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIF9tbV9jb21fZXBpNjQoX19BLCBfX0IsIF9NTV9QQ09NQ1RSTF9HVCk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9jb21nZV9lcGk2NChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gX21tX2NvbV9lcGk2NChfX0EsIF9fQiwgX01NX1BDT01DVFJMX0dFKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2NvbWVxX2VwaTY0KF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiBfbW1fY29tX2VwaTY0KF9fQSwgX19CLCBfTU1fUENPTUNUUkxfRVEpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY29tbmVxX2VwaTY0KF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiBfbW1fY29tX2VwaTY0KF9fQSwgX19CLCBfTU1fUENPTUNUUkxfTkVRKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2NvbWZhbHNlX2VwaTY0KF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiBfbW1fY29tX2VwaTY0KF9fQSwgX19CLCBfTU1fUENPTUNUUkxfRkFMU0UpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fY29tdHJ1ZV9lcGk2NChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gX21tX2NvbV9lcGk2NChfX0EsIF9fQiwgX01NX1BDT01DVFJMX1RSVUUpOwp9CgojZGVmaW5lIF9tbV9wZXJtdXRlMl9wZChYLCBZLCBDLCBJKSBcCiAgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3ZwZXJtaWwycGQoKF9fdjJkZikoX19tMTI4ZCkoWCksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShZKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGkpKF9fbTEyOGkpKEMpLCAoSSkpKQoKI2RlZmluZSBfbW0yNTZfcGVybXV0ZTJfcGQoWCwgWSwgQywgSSkgXAogICgoX19tMjU2ZClfX2J1aWx0aW5faWEzMl92cGVybWlsMnBkMjU2KChfX3Y0ZGYpKF9fbTI1NmQpKFgpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZikoX19tMjU2ZCkoWSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRpKShfX20yNTZpKShDKSwgKEkpKSkKCiNkZWZpbmUgX21tX3Blcm11dGUyX3BzKFgsIFksIEMsIEkpIFwKICAoKF9fbTEyOClfX2J1aWx0aW5faWEzMl92cGVybWlsMnBzKChfX3Y0c2YpKF9fbTEyOCkoWCksIChfX3Y0c2YpKF9fbTEyOCkoWSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpKF9fbTEyOGkpKEMpLCAoSSkpKQoKI2RlZmluZSBfbW0yNTZfcGVybXV0ZTJfcHMoWCwgWSwgQywgSSkgXAogICgoX19tMjU2KV9fYnVpbHRpbl9pYTMyX3ZwZXJtaWwycHMyNTYoKF9fdjhzZikoX19tMjU2KShYKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZikoX19tMjU2KShZKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSkoX19tMjU2aSkoQyksIChJKSkpCgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTCl9tbV9mcmN6X3NzKF9fbTEyOCBfX0EpCnsKICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl92ZnJjenNzKChfX3Y0c2YpX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2ZyY3pfc2QoX19tMTI4ZCBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfdmZyY3pzZCgoX192MmRmKV9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMKX21tX2ZyY3pfcHMoX19tMTI4IF9fQSkKewogIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3ZmcmN6cHMoKF9fdjRzZilfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUwpfbW1fZnJjel9wZChfX20xMjhkIF9fQSkKewogIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl92ZnJjenBkKChfX3YyZGYpX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfZnJjel9wcyhfX20yNTYgX19BKQp7CiAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2lhMzJfdmZyY3pwczI1NigoX192OHNmKV9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9mcmN6X3BkKF9fbTI1NmQgX19BKQp7CiAgcmV0dXJuIChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX3ZmcmN6cGQyNTYoKF9fdjRkZilfX0EpOwp9CgojdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTCiN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKCiNlbmRpZiAvKiBfX1hPUElOVFJJTl9IICovCgAvKj09PS0tLS0gb3Blbm1wX3dyYXBwZXIvbWF0aC5oIC0tLS0tLS0tIE9wZW5NUCBtYXRoLmggaW50ZXJjZXB0IC0tLS0tLSBjKysgLT09PQogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwoKLy8gSWYgd2UgYXJlIGluIEMrKyBtb2RlIGFuZCBpbmNsdWRlIDxtYXRoLmg+IChub3QgPGNtYXRoPikgZmlyc3QsIHdlIHN0aWxsIG5lZWQKLy8gdG8gbWFrZSBzdXJlIDxjbWF0aD4gaXMgcmVhZCBmaXJzdC4gVGhlIHByb2JsZW0gb3RoZXJ3aXNlIGlzIHRoYXQgd2UgaGF2ZW4ndAovLyBzZWVuIHRoZSBkZWNsYXJhdGlvbnMgb2YgdGhlIG1hdGguaCBmdW5jdGlvbnMgd2hlbiB0aGUgc3lzdGVtIG1hdGguaCBpbmNsdWRlcwovLyBvdXIgY21hdGggb3ZlcmxheS4gSG93ZXZlciwgb3VyIGNtYXRoIG92ZXJsYXksIG9yIGJldHRlciB0aGUgdW5kZXJseWluZwovLyBvdmVybGF5LCBlLmcuIENVREEsIHVzZXMgdGhlIG1hdGguaCBmdW5jdGlvbnMuIFNpbmNlIHdlIGhhdmVuJ3QgZGVjbGFyZWQgdGhlbQovLyB5ZXQgd2UgZ2V0IGVycm9ycy4gQ1VEQSBhdm9pZHMgdGhpcyBieSBlYWdlcmx5IGRlY2xhcmluZyBhbGwgbWF0aCBmdW5jdGlvbnMKLy8gKGluIHRoZSBfX2RldmljZV9fIHNwYWNlKSBidXQgd2UgY2Fubm90IGRvIHRoaXMuIEluc3RlYWQgd2UgYnJlYWsgdGhlCi8vIGRlcGVuZGVuY2UgYnkgZm9yY2luZyBjbWF0aCB0byBnbyBmaXJzdC4gV2hpbGUgb3VyIGNtYXRoIHdpbGwgaW4gdHVybiBpbmNsdWRlCi8vIHRoaXMgZmlsZSwgdGhlIGNtYXRoIGd1YXJkcyB3aWxsIHByZXZlbnQgcmVjdXJzaW9uLgojaWZkZWYgX19jcGx1c3BsdXMKI2luY2x1ZGUgPGNtYXRoPgojZW5kaWYKCiNpZm5kZWYgX19DTEFOR19PUEVOTVBfTUFUSF9IX18KI2RlZmluZSBfX0NMQU5HX09QRU5NUF9NQVRIX0hfXwoKI2lmbmRlZiBfT1BFTk1QCiNlcnJvciAiVGhpcyBmaWxlIGlzIGZvciBPcGVuTVAgY29tcGlsYXRpb24gb25seS4iCiNlbmRpZgoKI2luY2x1ZGVfbmV4dCA8bWF0aC5oPgoKLy8gV2UgbmVlZCBsaW1pdHMuaCBmb3IgX19jbGFuZ19jdWRhX21hdGguaCBiZWxvdyBhbmQgYmVjYXVzZSBpdCBzaG91bGQgbm90IGh1cnQKLy8gd2UgaW5jbHVkZSBpdCBlYWdlcmx5IGhlcmUuCiNpbmNsdWRlIDxsaW1pdHMuaD4KCi8vIFdlIG5lZWQgc3RkbGliLmggYmVjYXVzZSAoZm9yIG5vdykgX19jbGFuZ19jdWRhX21hdGguaCBiZWxvdyBkZWNsYXJlcyBgYWJzYAovLyB3aGljaCBzaG91bGQgbGl2ZSBpbiBzdGRsaWIuaC4KI2luY2x1ZGUgPHN0ZGxpYi5oPgoKI3ByYWdtYSBvbXAgYmVnaW4gZGVjbGFyZSB2YXJpYW50IG1hdGNoKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIGRldmljZSA9IHthcmNoKG52cHR4LCBudnB0eDY0KX0sIGltcGxlbWVudGF0aW9uID0ge2V4dGVuc2lvbihtYXRjaF9hbnkpfSkKCiNkZWZpbmUgX19DVURBX18KI2RlZmluZSBfX09QRU5NUF9OVlBUWF9fCiNpbmNsdWRlIDxfX2NsYW5nX2N1ZGFfbWF0aC5oPgojdW5kZWYgX19PUEVOTVBfTlZQVFhfXwojdW5kZWYgX19DVURBX18KCiNwcmFnbWEgb21wIGVuZCBkZWNsYXJlIHZhcmlhbnQKCiNpZmRlZiBfX0FNREdDTl9fCiNwcmFnbWEgb21wIGJlZ2luIGRlY2xhcmUgdmFyaWFudCBtYXRjaChkZXZpY2UgPSB7YXJjaChhbWRnY24pfSkKCiNkZWZpbmUgX19PUEVOTVBfQU1ER0NOX18KI2luY2x1ZGUgPF9fY2xhbmdfaGlwX21hdGguaD4KI3VuZGVmIF9fT1BFTk1QX0FNREdDTl9fCgojcHJhZ21hIG9tcCBlbmQgZGVjbGFyZSB2YXJpYW50CiNlbmRpZgoKI2VuZGlmCgBWTmFtZSB0ZW1wbGF0ZSAAVW5rbm93biBwb2xpY3k6IABTdGFjayBub3QgZW1wdHkuAFs6Ymxhbms6XQBbOnhkaWdpdDpdAC9pACVkKyAlcwoARGVhZFN0YXRlIGluIFJ1blN0YXRlT25CeXRlAGludmFsaWQgcmVwZXRpdGlvbiBzaXplAGludmFsaWQgVVRGLTgAT2xkX1BlcnNpYW4AWmwAZXh0ZXJuYWwvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9mYWlsdXJlX3NpZ25hbF9oYW5kbGVyLmNjACVzQCAlKnAgICh1bmtub3duKQoAJXM6IGVycm5vPSVkAENvcnJ1cHQgL3Byb2Mvc2VsZi9tYXBzIGxpbmU6ICVzAGluZGV4IG91dCBvZiByYW5nZQBlbXB0eSBhcmVuYSBoYXMgbm9uLXBhZ2UtYWxpZ25lZCBibG9jayBzaXplAHoAKCkAYWxsb2NhdG9yACBbACddAENoZWNrIG5vZGUtPmNvbmNhdCgpLT5yaWdodCAhPSBudWxscHRyIGZhaWxlZDogAGV4dGVybmFsL2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2VzY2FwaW5nLmNjAF0uY2hpbGQgaGFzIGFuIGludmFsaWQgdGFnIABPdXRwdXQgcG9pbnRlciBtdXN0IG5vdCBiZSBudWxscHRyLgBpbGxlZ2FsIHNraXAgZnJvbSBoZWFkAHdhaXRwLnRocmVhZC0+d2FpdHAgIT0gbnVsbHB0cgBTaWduYWxBbGwgd2FrZXVwAGV4dGVybmFsL2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vaW50ZXJuYWwvd2FpdGVyLmNjAGV4dGVybmFsL2JvcmluZ3NzbC9zcmMvY3J5cHRvL2ZpcHNtb2R1bGUvZWMvd25hZi5jAHBhc3NlZCBhIG51bGwgcGFyYW1ldGVyAGt5dGhlL3Byb3RvL2J1aWxkaW5mby5wcm90bwBmNzcAZjk1AGdvAGV4dGVybmFsL2t5dGhlL2t5dGhlL2N4eC9leHRyYWN0b3IvY3h4X2RldGFpbHMuY2MAQ2hlY2sgZmFpbGVkOiBzb3VyY2VfZmlsZS52bmFtZS5sYW5ndWFnZSgpLmVtcHR5KCkALXRhcmdldABLWVRIRV9PVVRQVVRfRElSRUNUT1JZAENoZWNrIGZhaWxlZDogIWN1cnJlbnRfZmlsZXNfLnRvcCgpLmZpbGVfcGF0aC5lbXB0eSgpAEV4dGVybkNTeXN0ZW0AIChsb2NhdGlvbiAAX19jbGFuZ19oaXBfbWF0aC5oAC8qPT09LS0tLSBhcm1pbnRyLmggLSBBUk0gV2luZG93cyBpbnRyaW5zaWNzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKi8KCi8qIE9ubHkgaW5jbHVkZSB0aGlzIGlmIHdlJ3JlIGNvbXBpbGluZyBmb3IgdGhlIHdpbmRvd3MgcGxhdGZvcm0uICovCiNpZm5kZWYgX01TQ19WRVIKI2luY2x1ZGVfbmV4dCA8YXJtaW50ci5oPgojZWxzZQoKI2lmbmRlZiBfX0FSTUlOVFJfSAojZGVmaW5lIF9fQVJNSU5UUl9ICgp0eXBlZGVmIGVudW0KewogIF9BUk1fQkFSUklFUl9TWSAgICA9IDB4RiwKICBfQVJNX0JBUlJJRVJfU1QgICAgPSAweEUsCiAgX0FSTV9CQVJSSUVSX0lTSCAgID0gMHhCLAogIF9BUk1fQkFSUklFUl9JU0hTVCA9IDB4QSwKICBfQVJNX0JBUlJJRVJfTlNIICAgPSAweDcsCiAgX0FSTV9CQVJSSUVSX05TSFNUID0gMHg2LAogIF9BUk1fQkFSUklFUl9PU0ggICA9IDB4MywKICBfQVJNX0JBUlJJRVJfT1NIU1QgPSAweDIKfSBfQVJNSU5UUl9CQVJSSUVSX1RZUEU7CgojZW5kaWYgLyogX19BUk1JTlRSX0ggKi8KI2VuZGlmIC8qIF9NU0NfVkVSICovCgBhdng1MTJ2bGJ3aW50cmluLmgALyo9PT0tLS0tIGF2eDUxMnZsY2RpbnRyaW4uaCAtIEFWWDUxMlZMIGFuZCBBVlg1MTJDRCBpbnRyaW5zaWNzIC0tLS0tLS0tLS0tLT09PQogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgogKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CiAqLwojaWZuZGVmIF9fSU1NSU5UUklOX0gKI2Vycm9yICJOZXZlciB1c2UgPGF2eDUxMnZsY2RpbnRyaW4uaD4gZGlyZWN0bHk7IGluY2x1ZGUgPGltbWludHJpbi5oPiBpbnN0ZWFkLiIKI2VuZGlmCgojaWZuZGVmIF9fQVZYNTEyVkxDRElOVFJJTl9ICiNkZWZpbmUgX19BVlg1MTJWTENESU5UUklOX0gKCi8qIERlZmluZSB0aGUgZGVmYXVsdCBhdHRyaWJ1dGVzIGZvciB0aGUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZS4gKi8KI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJhdng1MTJ2bCxhdng1MTJjZCIpLCBfX21pbl92ZWN0b3Jfd2lkdGhfXygxMjgpKSkKI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJhdng1MTJ2bCxhdng1MTJjZCIpLCBfX21pbl92ZWN0b3Jfd2lkdGhfXygyNTYpKSkKCgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fYnJvYWRjYXN0bWJfZXBpNjQgKF9fbW1hc2s4IF9fQSkKewogIHJldHVybiAoX19tMTI4aSkgX21tX3NldDFfZXBpNjR4KChsb25nIGxvbmcpIF9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTMjU2Cl9tbTI1Nl9icm9hZGNhc3RtYl9lcGk2NCAoX19tbWFzazggX19BKQp7CiAgcmV0dXJuIChfX20yNTZpKSBfbW0yNTZfc2V0MV9lcGk2NHgoKGxvbmcgbG9uZylfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fYnJvYWRjYXN0bXdfZXBpMzIgKF9fbW1hc2sxNiBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9tbV9zZXQxX2VwaTMyKChpbnQpX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2Jyb2FkY2FzdG13X2VwaTMyIChfX21tYXNrMTYgX19BKQp7CiAgcmV0dXJuIChfX20yNTZpKSBfbW0yNTZfc2V0MV9lcGkzMigoaW50KV9fQSk7Cn0KCgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fY29uZmxpY3RfZXBpNjQgKF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl92cGNvbmZsaWN0ZGlfMTI4ICgoX192MmRpKSBfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19jb25mbGljdF9lcGk2NCAoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfbW1fY29uZmxpY3RfZXBpNjQoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfY29uZmxpY3RfZXBpNjQgKF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfbW1fY29uZmxpY3RfZXBpNjQoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2NvbmZsaWN0X2VwaTY0IChfX20yNTZpIF9fQSkKewogIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfdnBjb25mbGljdGRpXzI1NiAoKF9fdjRkaSkgX19BKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2tfY29uZmxpY3RfZXBpNjQgKF9fbTI1NmkgX19XLCBfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19BKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX21tMjU2X2NvbmZsaWN0X2VwaTY0KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX19XKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X21hc2t6X2NvbmZsaWN0X2VwaTY0IChfX21tYXNrOCBfX1UsIF9fbTI1NmkgX19BKQp7CiAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3NlbGVjdHFfMjU2KChfX21tYXNrOClfX1UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX21tMjU2X2NvbmZsaWN0X2VwaTY0KF9fQSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGkpX21tMjU2X3NldHplcm9fc2kyNTYoKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9jb25mbGljdF9lcGkzMiAoX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3ZwY29uZmxpY3RzaV8xMjggKChfX3Y0c2kpIF9fQSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrX2NvbmZsaWN0X2VwaTMyIChfX20xMjhpIF9fVywgX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9jb25mbGljdF9lcGkzMihfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9fVyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTMTI4Cl9tbV9tYXNrel9jb25mbGljdF9lcGkzMiAoX19tbWFzazggX19VLCBfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9zZWxlY3RkXzEyOCgoX19tbWFzazgpX19VLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9jb25mbGljdF9lcGkzMihfX0EpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKV9tbV9zZXR6ZXJvX3NpMTI4KCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfY29uZmxpY3RfZXBpMzIgKF9fbTI1NmkgX19BKQp7CiAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5faWEzMl92cGNvbmZsaWN0c2lfMjU2ICgoX192OHNpKSBfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19jb25mbGljdF9lcGkzMiAoX19tMjU2aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfY29uZmxpY3RfZXBpMzIoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfY29uZmxpY3RfZXBpMzIgKF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfY29uZmxpY3RfZXBpMzIoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX2x6Y250X2VwaTMyIChfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfdnBsemNudGRfMTI4ICgoX192NHNpKSBfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19semNudF9lcGkzMiAoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfbW1fbHpjbnRfZXBpMzIoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfbHpjbnRfZXBpMzIgKF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfbW1fbHpjbnRfZXBpMzIoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSlfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2x6Y250X2VwaTMyIChfX20yNTZpIF9fQSkKewogIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfdnBsemNudGRfMjU2ICgoX192OHNpKSBfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19semNudF9lcGkzMiAoX19tMjU2aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfbHpjbnRfZXBpMzIoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfbHpjbnRfZXBpMzIgKF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0ZF8yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfbHpjbnRfZXBpMzIoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMxMjgKX21tX2x6Y250X2VwaTY0IChfX20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfdnBsemNudHFfMTI4ICgoX192MmRpKSBfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza19semNudF9lcGk2NCAoX19tMTI4aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfbW1fbHpjbnRfZXBpNjQoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUzEyOApfbW1fbWFza3pfbHpjbnRfZXBpNjQgKF9fbW1hc2s4IF9fVSwgX19tMTI4aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8xMjgoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfbW1fbHpjbnRfZXBpNjQoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkaSlfbW1fc2V0emVyb19zaTEyOCgpKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMyNTYKX21tMjU2X2x6Y250X2VwaTY0IChfX20yNTZpIF9fQSkKewogIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfdnBsemNudHFfMjU2ICgoX192NGRpKSBfX0EpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza19semNudF9lcGk2NCAoX19tMjU2aSBfX1csIF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfbHpjbnRfZXBpNjQoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfX1cpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUzI1NgpfbW0yNTZfbWFza3pfbHpjbnRfZXBpNjQgKF9fbW1hc2s4IF9fVSwgX19tMjU2aSBfX0EpCnsKICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfc2VsZWN0cV8yNTYoKF9fbW1hc2s4KV9fVSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfbHpjbnRfZXBpNjQoX19BKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfbW0yNTZfc2V0emVyb19zaTI1NigpKTsKfQoKI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUzEyOAojdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTMjU2CgojZW5kaWYgLyogX19BVlg1MTJWTENESU5UUklOX0ggKi8KAGF2eDUxMnZsdmJtaTJpbnRyaW4uaABjbGZsdXNob3B0aW50cmluLmgAY2x6ZXJvaW50cmluLmgALyo9PT0tLS0tIGh0bWludHJpbi5oIC0gU3RhbmRhcmQgaGVhZGVyIGZvciBQb3dlclBDIEhUTSAtLS0tLS0tLS0tLS0tLS09PT0qXAogKgogKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgogKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogKgpcKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0qLwoKI2lmbmRlZiBfX0hUTUlOVFJJTl9ICiNkZWZpbmUgX19IVE1JTlRSSU5fSAoKI2lmbmRlZiBfX0hUTV9fCiNlcnJvciAiSFRNIGluc3RydWN0aW9uIHNldCBub3QgZW5hYmxlZCIKI2VuZGlmCgojaWZkZWYgX19wb3dlcnBjX18KCiNpbmNsdWRlIDxzdGRpbnQuaD4KCnR5cGVkZWYgdWludDY0X3QgdGV4YXNyX3Q7CnR5cGVkZWYgdWludDMyX3QgdGV4YXNydV90Owp0eXBlZGVmIHVpbnQzMl90IHRleGFzcmxfdDsKdHlwZWRlZiB1aW50cHRyX3QgdGZpYXJfdDsKdHlwZWRlZiB1aW50cHRyX3QgdGZoYXJfdDsKCiNkZWZpbmUgX0hUTV9TVEFURShDUjApICgoQ1IwID4+IDEpICYgMHgzKQojZGVmaW5lIF9IVE1fTk9OVFJBTlNBQ1RJT05BTCAweDAKI2RlZmluZSBfSFRNX1NVU1BFTkRFRCAgICAgICAgMHgxCiNkZWZpbmUgX0hUTV9UUkFOU0FDVElPTkFMICAgIDB4MgoKI2RlZmluZSBfVEVYQVNSX0VYVFJBQ1RfQklUUyhURVhBU1IsQklUTlVNLFNJWkUpIFwKICAoKChURVhBU1IpID4+ICg2My0oQklUTlVNKSkpICYgKCgxPDwoU0laRSkpLTEpKQojZGVmaW5lIF9URVhBU1JVX0VYVFJBQ1RfQklUUyhURVhBU1IsQklUTlVNLFNJWkUpIFwKICAoKChURVhBU1IpID4+ICgzMS0oQklUTlVNKSkpICYgKCgxPDwoU0laRSkpLTEpKQoKI2RlZmluZSBfVEVYQVNSX0ZBSUxVUkVfQ09ERShURVhBU1IpIFwKICBfVEVYQVNSX0VYVFJBQ1RfQklUUyhURVhBU1IsIDcsIDgpCiNkZWZpbmUgX1RFWEFTUlVfRkFJTFVSRV9DT0RFKFRFWEFTUlUpIFwKICBfVEVYQVNSVV9FWFRSQUNUX0JJVFMoVEVYQVNSVSwgNywgOCkKCiNkZWZpbmUgX1RFWEFTUl9GQUlMVVJFX1BFUlNJU1RFTlQoVEVYQVNSKSBcCiAgX1RFWEFTUl9FWFRSQUNUX0JJVFMoVEVYQVNSLCA3LCAxKQojZGVmaW5lIF9URVhBU1JVX0ZBSUxVUkVfUEVSU0lTVEVOVChURVhBU1JVKSBcCiAgX1RFWEFTUlVfRVhUUkFDVF9CSVRTKFRFWEFTUlUsIDcsIDEpCgojZGVmaW5lIF9URVhBU1JfRElTQUxMT1dFRChURVhBU1IpIFwKICBfVEVYQVNSX0VYVFJBQ1RfQklUUyhURVhBU1IsIDgsIDEpCiNkZWZpbmUgX1RFWEFTUlVfRElTQUxMT1dFRChURVhBU1JVKSBcCiAgX1RFWEFTUlVfRVhUUkFDVF9CSVRTKFRFWEFTUlUsIDgsIDEpCgojZGVmaW5lIF9URVhBU1JfTkVTVElOR19PVkVSRkxPVyhURVhBU1IpIFwKICBfVEVYQVNSX0VYVFJBQ1RfQklUUyhURVhBU1IsIDksIDEpCiNkZWZpbmUgX1RFWEFTUlVfTkVTVElOR19PVkVSRkxPVyhURVhBU1JVKSBcCiAgX1RFWEFTUlVfRVhUUkFDVF9CSVRTKFRFWEFTUlUsIDksIDEpCgojZGVmaW5lIF9URVhBU1JfRk9PVFBSSU5UX09WRVJGTE9XKFRFWEFTUikgXAogIF9URVhBU1JfRVhUUkFDVF9CSVRTKFRFWEFTUiwgMTAsIDEpCiNkZWZpbmUgX1RFWEFTUlVfRk9PVFBSSU5UX09WRVJGTE9XKFRFWEFTUlUpIFwKICBfVEVYQVNSVV9FWFRSQUNUX0JJVFMoVEVYQVNSVSwgMTAsIDEpCgojZGVmaW5lIF9URVhBU1JfU0VMRl9JTkRVQ0VEX0NPTkZMSUNUKFRFWEFTUikgXAogIF9URVhBU1JfRVhUUkFDVF9CSVRTKFRFWEFTUiwgMTEsIDEpCiNkZWZpbmUgX1RFWEFTUlVfU0VMRl9JTkRVQ0VEX0NPTkZMSUNUKFRFWEFTUlUpIFwKICBfVEVYQVNSVV9FWFRSQUNUX0JJVFMoVEVYQVNSVSwgMTEsIDEpCgojZGVmaW5lIF9URVhBU1JfTk9OX1RSQU5TQUNUSU9OQUxfQ09ORkxJQ1QoVEVYQVNSKSBcCiAgX1RFWEFTUl9FWFRSQUNUX0JJVFMoVEVYQVNSLCAxMiwgMSkKI2RlZmluZSBfVEVYQVNSVV9OT05fVFJBTlNBQ1RJT05BTF9DT05GTElDVChURVhBU1JVKSBcCiAgX1RFWEFTUlVfRVhUUkFDVF9CSVRTKFRFWEFTUlUsIDEyLCAxKQoKI2RlZmluZSBfVEVYQVNSX1RSQU5TQUNUSU9OX0NPTkZMSUNUKFRFWEFTUikgXAogIF9URVhBU1JfRVhUUkFDVF9CSVRTKFRFWEFTUiwgMTMsIDEpCiNkZWZpbmUgX1RFWEFTUlVfVFJBTlNBQ1RJT05fQ09ORkxJQ1QoVEVYQVNSVSkgXAogIF9URVhBU1JVX0VYVFJBQ1RfQklUUyhURVhBU1JVLCAxMywgMSkKCiNkZWZpbmUgX1RFWEFTUl9UUkFOU0xBVElPTl9JTlZBTElEQVRJT05fQ09ORkxJQ1QoVEVYQVNSKSBcCiAgX1RFWEFTUl9FWFRSQUNUX0JJVFMoVEVYQVNSLCAxNCwgMSkKI2RlZmluZSBfVEVYQVNSVV9UUkFOU0xBVElPTl9JTlZBTElEQVRJT05fQ09ORkxJQ1QoVEVYQVNSVSkgXAogIF9URVhBU1JVX0VYVFJBQ1RfQklUUyhURVhBU1JVLCAxNCwgMSkKCiNkZWZpbmUgX1RFWEFTUl9JTVBMRU1FTlRBSU9OX1NQRUNJRklDKFRFWEFTUikgXAogIF9URVhBU1JfRVhUUkFDVF9CSVRTKFRFWEFTUiwgMTUsIDEpCiNkZWZpbmUgX1RFWEFTUlVfSU1QTEVNRU5UQUlPTl9TUEVDSUZJQyhURVhBU1JVKSBcCiAgX1RFWEFTUlVfRVhUUkFDVF9CSVRTKFRFWEFTUlUsIDE1LCAxKQoKI2RlZmluZSBfVEVYQVNSX0lOU1RSVUNUSU9OX0ZFVENIX0NPTkZMSUNUKFRFWEFTUikgXAogIF9URVhBU1JfRVhUUkFDVF9CSVRTKFRFWEFTUiwgMTYsIDEpCiNkZWZpbmUgX1RFWEFTUlVfSU5TVFJVQ1RJT05fRkVUQ0hfQ09ORkxJQ1QoVEVYQVNSVSkgXAogIF9URVhBU1JVX0VYVFJBQ1RfQklUUyhURVhBU1JVLCAxNiwgMSkKCiNkZWZpbmUgX1RFWEFTUl9BQk9SVChURVhBU1IpIFwKICBfVEVYQVNSX0VYVFJBQ1RfQklUUyhURVhBU1IsIDMxLCAxKQojZGVmaW5lIF9URVhBU1JVX0FCT1JUKFRFWEFTUlUpIFwKICBfVEVYQVNSVV9FWFRSQUNUX0JJVFMoVEVYQVNSVSwgMzEsIDEpCgoKI2RlZmluZSBfVEVYQVNSX1NVU1BFTkRFRChURVhBU1IpIFwKICBfVEVYQVNSX0VYVFJBQ1RfQklUUyhURVhBU1IsIDMyLCAxKQoKI2RlZmluZSBfVEVYQVNSX1BSSVZJTEVHRShURVhBU1IpIFwKICBfVEVYQVNSX0VYVFJBQ1RfQklUUyhURVhBU1IsIDM1LCAyKQoKI2RlZmluZSBfVEVYQVNSX0ZBSUxVUkVfU1VNTUFSWShURVhBU1IpIFwKICBfVEVYQVNSX0VYVFJBQ1RfQklUUyhURVhBU1IsIDM2LCAxKQoKI2RlZmluZSBfVEVYQVNSX1RGSUFSX0VYQUNUKFRFWEFTUikgXAogIF9URVhBU1JfRVhUUkFDVF9CSVRTKFRFWEFTUiwgMzcsIDEpCgojZGVmaW5lIF9URVhBU1JfUk9UKFRFWEFTUikgXAogIF9URVhBU1JfRVhUUkFDVF9CSVRTKFRFWEFTUiwgMzgsIDEpCgojZGVmaW5lIF9URVhBU1JfVFJBTlNBQ1RJT05fTEVWRUwoVEVYQVNSKSBcCiAgX1RFWEFTUl9FWFRSQUNUX0JJVFMoVEVYQVNSLCA2MywgMTIpCgojZW5kaWYgLyogX19wb3dlcnBjICovCgojaWZkZWYgX19zMzkwX18KCi8qIENvbmRpdGlvbiBjb2RlcyBnZW5lcmF0ZWQgYnkgdGJlZ2luICAqLwojZGVmaW5lIF9IVE1fVEJFR0lOX1NUQVJURUQgICAgICAgMAojZGVmaW5lIF9IVE1fVEJFR0lOX0lOREVURVJNSU5BVEUgMQojZGVmaW5lIF9IVE1fVEJFR0lOX1RSQU5TSUVOVCAgICAgMgojZGVmaW5lIF9IVE1fVEJFR0lOX1BFUlNJU1RFTlQgICAgMwoKLyogVGhlIGFib3J0IGNvZGVzIGJlbG93IHRoaXMgdGhyZXNob2xkIGFyZSByZXNlcnZlZCBmb3IgbWFjaGluZSB1c2UuICAqLwojZGVmaW5lIF9IVE1fRklSU1RfVVNFUl9BQk9SVF9DT0RFIDI1NgoKLyogVGhlIHRyYW5zYWN0aW9uIGRpYWdub3N0aWMgYmxvY2sgaXMgaXQgaXMgZGVmaW5lZCBpbiB0aGUgUHJpbmNpcGxlcwogICBvZiBPcGVyYXRpb24gY2hhcHRlciA1LTkxLiAgKi8KCnN0cnVjdCBfX2h0bV90ZGIgewogIHVuc2lnbmVkIGNoYXIgZm9ybWF0OyAgICAgICAgICAgICAgICAvKiAgIDAgKi8KICB1bnNpZ25lZCBjaGFyIGZsYWdzOwogIHVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWQxWzRdOwogIHVuc2lnbmVkIHNob3J0IG5lc3RpbmdfZGVwdGg7CiAgdW5zaWduZWQgbG9uZyBsb25nIGFib3J0X2NvZGU7ICAgICAgIC8qICAgOCAqLwogIHVuc2lnbmVkIGxvbmcgbG9uZyBjb25mbGljdF90b2tlbjsgICAvKiAgMTYgKi8KICB1bnNpZ25lZCBsb25nIGxvbmcgYXRpYTsgICAgICAgICAgICAgLyogIDI0ICovCiAgdW5zaWduZWQgY2hhciBlYWlkOyAgICAgICAgICAgICAgICAgIC8qICAzMiAqLwogIHVuc2lnbmVkIGNoYXIgZHhjOwogIHVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWQyWzJdOwogIHVuc2lnbmVkIGludCBwcm9ncmFtX2ludF9pZDsKICB1bnNpZ25lZCBsb25nIGxvbmcgZXhjZXB0aW9uX2lkOyAgICAgLyogIDQwICovCiAgdW5zaWduZWQgbG9uZyBsb25nIGJlYTsgICAgICAgICAgICAgIC8qICA0OCAqLwogIHVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWQzWzcyXTsgICAgICAgICAvKiAgNTYgKi8KICB1bnNpZ25lZCBsb25nIGxvbmcgZ3Byc1sxNl07ICAgICAgICAgLyogMTI4ICovCn0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19hbGlnbmVkX18gKDgpKSk7CgoKLyogSGVscGVyIGludHJpbnNpY3MgdG8gcmV0cnkgdGJlZ2luIGluIGNhc2Ugb2YgdHJhbnNpZW50IGZhaWx1cmUuICAqLwoKc3RhdGljIF9faW5saW5lIGludCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpfX2J1aWx0aW5fdGJlZ2luX3JldHJ5X251bGwgKGludCBfX3JldHJ5KQp7CiAgaW50IGNjLCBpID0gMDsKCiAgd2hpbGUgKChjYyA9IF9fYnVpbHRpbl90YmVnaW4oMCkpID09IF9IVE1fVEJFR0lOX1RSQU5TSUVOVAogICAgICAgICAmJiBpKysgPCBfX3JldHJ5KQogICAgX19idWlsdGluX3R4X2Fzc2lzdChpKTsKCiAgcmV0dXJuIGNjOwp9CgpzdGF0aWMgX19pbmxpbmUgaW50IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCl9fYnVpbHRpbl90YmVnaW5fcmV0cnlfdGRiICh2b2lkICpfX3RkYiwgaW50IF9fcmV0cnkpCnsKICBpbnQgY2MsIGkgPSAwOwoKICB3aGlsZSAoKGNjID0gX19idWlsdGluX3RiZWdpbihfX3RkYikpID09IF9IVE1fVEJFR0lOX1RSQU5TSUVOVAogICAgICAgICAmJiBpKysgPCBfX3JldHJ5KQogICAgX19idWlsdGluX3R4X2Fzc2lzdChpKTsKCiAgcmV0dXJuIGNjOwp9CgojZGVmaW5lIF9fYnVpbHRpbl90YmVnaW5fcmV0cnkodGRiLCByZXRyeSkgXAogIChfX2J1aWx0aW5fY29uc3RhbnRfcCh0ZGIgPT0gMCkgJiYgdGRiID09IDAgPyBcCiAgIF9fYnVpbHRpbl90YmVnaW5fcmV0cnlfbnVsbChyZXRyeSkgOiBcCiAgIF9fYnVpbHRpbl90YmVnaW5fcmV0cnlfdGRiKHRkYiwgcmV0cnkpKQoKc3RhdGljIF9faW5saW5lIGludCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpfX2J1aWx0aW5fdGJlZ2luX3JldHJ5X25vZmxvYXRfbnVsbCAoaW50IF9fcmV0cnkpCnsKICBpbnQgY2MsIGkgPSAwOwoKICB3aGlsZSAoKGNjID0gX19idWlsdGluX3RiZWdpbl9ub2Zsb2F0KDApKSA9PSBfSFRNX1RCRUdJTl9UUkFOU0lFTlQKICAgICAgICAgJiYgaSsrIDwgX19yZXRyeSkKICAgIF9fYnVpbHRpbl90eF9hc3Npc3QoaSk7CgogIHJldHVybiBjYzsKfQoKc3RhdGljIF9faW5saW5lIGludCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQpfX2J1aWx0aW5fdGJlZ2luX3JldHJ5X25vZmxvYXRfdGRiICh2b2lkICpfX3RkYiwgaW50IF9fcmV0cnkpCnsKICBpbnQgY2MsIGkgPSAwOwoKICB3aGlsZSAoKGNjID0gX19idWlsdGluX3RiZWdpbl9ub2Zsb2F0KF9fdGRiKSkgPT0gX0hUTV9UQkVHSU5fVFJBTlNJRU5UCiAgICAgICAgICYmIGkrKyA8IF9fcmV0cnkpCiAgICBfX2J1aWx0aW5fdHhfYXNzaXN0KGkpOwoKICByZXR1cm4gY2M7Cn0KCiNkZWZpbmUgX19idWlsdGluX3RiZWdpbl9yZXRyeV9ub2Zsb2F0KHRkYiwgcmV0cnkpIFwKICAoX19idWlsdGluX2NvbnN0YW50X3AodGRiID09IDApICYmIHRkYiA9PSAwID8gXAogICBfX2J1aWx0aW5fdGJlZ2luX3JldHJ5X25vZmxvYXRfbnVsbChyZXRyeSkgOiBcCiAgIF9fYnVpbHRpbl90YmVnaW5fcmV0cnlfbm9mbG9hdF90ZGIodGRiLCByZXRyeSkpCgojZW5kaWYgLyogX19zMzkwX18gKi8KCiNlbmRpZiAvKiBfX0hUTUlOVFJJTl9IICovCgAvKj09PS0tLS0gc3Rkbm9yZXR1cm4uaCAtIFN0YW5kYXJkIGhlYWRlciBmb3Igbm9yZXR1cm4gbWFjcm8gLS0tLS0tLS0tLS0tLS0tPT09CiAqCiAqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCiAqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAqCiAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICovCgojaWZuZGVmIF9fU1RETk9SRVRVUk5fSAojZGVmaW5lIF9fU1RETk9SRVRVUk5fSAoKI2RlZmluZSBub3JldHVybiBfTm9yZXR1cm4KI2RlZmluZSBfX25vcmV0dXJuX2lzX2RlZmluZWQgMQoKI2VuZGlmIC8qIF9fU1RETk9SRVRVUk5fSCAqLwoALy89PT0tLSBhbGxvY2F0b3JfaW50ZXJmYWNlLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KLy8KLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KLy8KLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KLy8KLy8gUHVibGljIGludGVyZmFjZSBoZWFkZXIgZm9yIGFsbG9jYXRvciB1c2VkIGluIHNhbml0aXplcnMgKEFTYW4vVFNhbi9NU2FuKS4KLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KI2lmbmRlZiBTQU5JVElaRVJfQUxMT0NBVE9SX0lOVEVSRkFDRV9ICiNkZWZpbmUgU0FOSVRJWkVSX0FMTE9DQVRPUl9JTlRFUkZBQ0VfSAoKI2luY2x1ZGUgPHN0ZGRlZi5oPgoKI2lmZGVmIF9fY3BsdXNwbHVzCmV4dGVybiAiQyIgewojZW5kaWYKICAvKiBSZXR1cm5zIHRoZSBlc3RpbWF0ZWQgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgd2lsbCBiZSByZXNlcnZlZCBieSBhbGxvY2F0b3IKICAgICBmb3IgcmVxdWVzdCBvZiAic2l6ZSIgYnl0ZXMuIElmIGFsbG9jYXRvciBjYW4ndCBhbGxvY2F0ZSB0aGF0IG11Y2gKICAgICBtZW1vcnksIHJldHVybnMgdGhlIG1heGltYWwgcG9zc2libGUgYWxsb2NhdGlvbiBzaXplLCBvdGhlcndpc2UgcmV0dXJucwogICAgICJzaXplIi4gKi8KICBzaXplX3QgX19zYW5pdGl6ZXJfZ2V0X2VzdGltYXRlZF9hbGxvY2F0ZWRfc2l6ZShzaXplX3Qgc2l6ZSk7CgogIC8qIFJldHVybnMgdHJ1ZSBpZiBwIHdhcyByZXR1cm5lZCBieSB0aGUgYWxsb2NhdG9yIGFuZAogICAgIGlzIG5vdCB5ZXQgZnJlZWQuICovCiAgaW50IF9fc2FuaXRpemVyX2dldF9vd25lcnNoaXAoY29uc3Qgdm9sYXRpbGUgdm9pZCAqcCk7CgogIC8qIFJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyByZXNlcnZlZCBmb3IgdGhlIHBvaW50ZXIgcC4KICAgICBSZXF1aXJlcyAoZ2V0X293bmVyc2hpcChwKSA9PSB0cnVlKSBvciAocCA9PSAwKS4gKi8KICBzaXplX3QgX19zYW5pdGl6ZXJfZ2V0X2FsbG9jYXRlZF9zaXplKGNvbnN0IHZvbGF0aWxlIHZvaWQgKnApOwoKICAvKiBOdW1iZXIgb2YgYnl0ZXMsIGFsbG9jYXRlZCBhbmQgbm90IHlldCBmcmVlZCBieSB0aGUgYXBwbGljYXRpb24uICovCiAgc2l6ZV90IF9fc2FuaXRpemVyX2dldF9jdXJyZW50X2FsbG9jYXRlZF9ieXRlcyh2b2lkKTsKCiAgLyogTnVtYmVyIG9mIGJ5dGVzLCBtbWFwZWQgYnkgdGhlIGFsbG9jYXRvciB0byBmdWxmaWxsIGFsbG9jYXRpb24gcmVxdWVzdHMuCiAgICAgR2VuZXJhbGx5LCBmb3IgcmVxdWVzdCBvZiBYIGJ5dGVzLCBhbGxvY2F0b3IgY2FuIHJlc2VydmUgYW5kIGFkZCB0byBmcmVlCiAgICAgbGlzdHMgYSBsYXJnZSBudW1iZXIgb2YgY2h1bmtzIG9mIHNpemUgWCB0byB1c2UgdGhlbSBmb3IgZnV0dXJlIHJlcXVlc3RzLgogICAgIEFsbCB0aGVzZSBjaHVua3MgY291bnQgdG93YXJkIHRoZSBoZWFwIHNpemUuIEN1cnJlbnRseSwgYWxsb2NhdG9yIG5ldmVyCiAgICAgcmVsZWFzZXMgbWVtb3J5IHRvIE9TIChpbnN0ZWFkLCBpdCBqdXN0IHB1dHMgZnJlZWQgY2h1bmtzIHRvIGZyZWUKICAgICBsaXN0cykuICovCiAgc2l6ZV90IF9fc2FuaXRpemVyX2dldF9oZWFwX3NpemUodm9pZCk7CgogIC8qIE51bWJlciBvZiBieXRlcywgbW1hcGVkIGJ5IHRoZSBhbGxvY2F0b3IsIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGZ1bGZpbGwKICAgICBhbGxvY2F0aW9uIHJlcXVlc3RzLiBXaGVuIGEgdXNlciBwcm9ncmFtIGZyZWVzIG1lbW9yeSBjaHVuaywgaXQgY2FuIGZpcnN0CiAgICAgZmFsbCBpbnRvIHF1YXJhbnRpbmUgYW5kIHdpbGwgY291bnQgdG93YXJkIF9fc2FuaXRpemVyX2dldF9mcmVlX2J5dGVzKCkKICAgICBsYXRlci4gKi8KICBzaXplX3QgX19zYW5pdGl6ZXJfZ2V0X2ZyZWVfYnl0ZXModm9pZCk7CgogIC8qIE51bWJlciBvZiBieXRlcyBpbiB1bm1hcHBlZCBwYWdlcywgdGhhdCBhcmUgcmVsZWFzZWQgdG8gT1MuIEN1cnJlbnRseSwKICAgICBhbHdheXMgcmV0dXJucyAwLiAqLwogIHNpemVfdCBfX3Nhbml0aXplcl9nZXRfdW5tYXBwZWRfYnl0ZXModm9pZCk7CgogIC8qIE1hbGxvYyBob29rcyB0aGF0IG1heSBiZSBvcHRpb25hbGx5IHByb3ZpZGVkIGJ5IHVzZXIuCiAgICAgX19zYW5pdGl6ZXJfbWFsbG9jX2hvb2socHRyLCBzaXplKSBpcyBjYWxsZWQgaW1tZWRpYXRlbHkgYWZ0ZXIKICAgICAgIGFsbG9jYXRpb24gb2YgInNpemUiIGJ5dGVzLCB3aGljaCByZXR1cm5lZCAicHRyIi4KICAgICBfX3Nhbml0aXplcl9mcmVlX2hvb2socHRyKSBpcyBjYWxsZWQgaW1tZWRpYXRlbHkgYmVmb3JlCiAgICAgICBkZWFsbG9jYXRpb24gb2YgInB0ciIuICovCiAgdm9pZCBfX3Nhbml0aXplcl9tYWxsb2NfaG9vayhjb25zdCB2b2xhdGlsZSB2b2lkICpwdHIsIHNpemVfdCBzaXplKTsKICB2b2lkIF9fc2FuaXRpemVyX2ZyZWVfaG9vayhjb25zdCB2b2xhdGlsZSB2b2lkICpwdHIpOwoKICAvKiBJbnN0YWxscyBhIHBhaXIgb2YgaG9va3MgZm9yIG1hbGxvYy9mcmVlLgogICAgIFNldmVyYWwgKGN1cnJlbnRseSwgNSkgaG9vayBwYWlycyBtYXkgYmUgaW5zdGFsbGVkLCB0aGV5IGFyZSBleGVjdXRlZAogICAgIGluIHRoZSBvcmRlciB0aGV5IHdlcmUgaW5zdGFsbGVkIGFuZCBhZnRlciBjYWxsaW5nCiAgICAgX19zYW5pdGl6ZXJfbWFsbG9jX2hvb2svX19zYW5pdGl6ZXJfZnJlZV9ob29rLgogICAgIFVubGlrZSBfX3Nhbml0aXplcl9tYWxsb2NfaG9vay9fX3Nhbml0aXplcl9mcmVlX2hvb2sgdGhlc2UgaG9va3MgY2FuIGJlCiAgICAgY2hhaW5lZCBhbmQgZG8gbm90IHJlbHkgb24gd2VhayBzeW1ib2xzIHdvcmtpbmcgb24gdGhlIHBsYXRmb3JtLCBidXQKICAgICByZXF1aXJlIF9fc2FuaXRpemVyX2luc3RhbGxfbWFsbG9jX2FuZF9mcmVlX2hvb2tzIHRvIGJlIGNhbGxlZCBhdCBzdGFydHVwCiAgICAgYW5kIHRodXMgd2lsbCBub3QgYmUgY2FsbGVkIG9uIG1hbGxvYy9mcmVlIHZlcnkgZWFybHkgaW4gdGhlIHByb2Nlc3MuCiAgICAgUmV0dXJucyB0aGUgbnVtYmVyIG9mIGhvb2tzIGN1cnJlbnRseSBpbnN0YWxsZWQgb3IgMCBvbiBmYWlsdXJlLgogICAgIE5vdCB0aHJlYWQtc2FmZSwgc2hvdWxkIGJlIGNhbGxlZCBpbiB0aGUgbWFpbiB0aHJlYWQgYmVmb3JlIHN0YXJ0aW5nCiAgICAgb3RoZXIgdGhyZWFkcy4KICAqLwogIGludCBfX3Nhbml0aXplcl9pbnN0YWxsX21hbGxvY19hbmRfZnJlZV9ob29rcygKICAgICAgdm9pZCAoKm1hbGxvY19ob29rKShjb25zdCB2b2xhdGlsZSB2b2lkICosIHNpemVfdCksCiAgICAgIHZvaWQgKCpmcmVlX2hvb2spKGNvbnN0IHZvbGF0aWxlIHZvaWQgKikpOwoKICAvKiBEcmFpbnMgYWxsb2NhdG9yIHF1YXJhbnRpbmVzIChjYWxsaW5nIHRocmVhZCdzIGFuZCBnbG9iYWwgb25lcyksIHJldHVybnMKICAgICBmcmVlZCBtZW1vcnkgYmFjayB0byBPUyBhbmQgcmVsZWFzZXMgb3RoZXIgbm9uLWVzc2VudGlhbCBpbnRlcm5hbCBhbGxvY2F0b3IKICAgICByZXNvdXJjZXMgaW4gYXR0ZW1wdCB0byByZWR1Y2UgcHJvY2VzcyBSU1MuCiAgICAgQ3VycmVudGx5IGF2YWlsYWJsZSB3aXRoIEFTYW4gb25seS4KICAqLwogIHZvaWQgX19zYW5pdGl6ZXJfcHVyZ2VfYWxsb2NhdG9yKHZvaWQpOwojaWZkZWYgX19jcGx1c3BsdXMKfSAgLy8gZXh0ZXJuICJDIgojZW5kaWYKCiNlbmRpZgoAc2FuaXRpemVyL2FzYW5faW50ZXJmYWNlLmgAc2FuaXRpemVyL3RzYW5faW50ZXJmYWNlLmgAc2FuaXRpemVyL3RzYW5faW50ZXJmYWNlX2F0b21pYy5oAENvdWxkbid0IHNlZWsgADoAZXh0ZXJuYWwvcmVnZXgtcmUyL3JlMi9wYXJzZS5jYwAgaW4gUHJvZzo6RmFub3V0KCkAQ2Fubm90IHVzZSBTZWFyY2hPbmVQYXNzIGZvciB1bmFuY2hvcmVkIG1hdGNoZXMuAFJlZ2V4cCBub3QgZGVzdHJveWVkLgBDYXNlIG5vdCBoYW5kbGVkIGluIENvbXB1dGVTaW1wbGU6IABDb2FsZXNjZVdhbGtlcjo6U2hvcnRWaXNpdCBjYWxsZWQASW1wZXJpYWxfQXJhbWFpYwBMbABQYXVfQ2luX0hhdQBzaWdhbHRzdGFjaygpIGZhaWxlZCB3aXRoIGVycm5vPSVkACAgICBAIC4uLiBhbmQgYXQgbGVhc3QgJWQgbW9yZSBmcmFtZXMKAGV4dGVybmFsL2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvdmRzb19zdXBwb3J0LmNjAGV4dGVybmFsL2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvZWxmX21lbV9pbWFnZS5jYwBzeW1ib2wgJiYgdmVyc2lvbl9zeW1ib2wAZW1wdHkgYXJlbmEgaGFzIG5vbi1wYWdlLWFsaWduZWQgYmxvY2sARG4AcHQAW10AQ2hlY2sgcyA8PSBrTWF4RmxhdExlbmd0aCBmYWlsZWQ6IABTdHJpbmcgY2Fubm90IGVuZCB3aXRoIFx4AFx4IGNhbm5vdCBiZSBmb2xsb3dlZCBieSBhIG5vbi1oZXggZGlnaXQATm9kZSgAZXhjZWVkIGNhcGFjaXR5IAAgQAAlcyVwICVzICVzAHJldmlzaW9uLnR4dABvcHBvcnR1bmlzdGljIGVudHJvcHkgZmlsbCBmYWlsZWQARVZQX0FFQURfQ1RYX3NlYWwgZm9yIEFFUy0xMjgtR0NNIGZhaWxlZC4KAGV4dGVybmFsL2JvcmluZ3NzbC9zcmMvY3J5cHRvL2ZpcHNtb2R1bGUvZWMvcDI1Ni5jAEJJTyByb3V0aW5lcwBvdXQvc29vbmcvLmludGVybWVkaWF0ZXMvZXh0ZXJuYWwva3l0aGUvY3h4X2V4dHJhY3Rvci9saW51eF9nbGliY194ODZfNjQvZ2VuL3Byb3RvL2t5dGhlL3Byb3RvL2NvbW1vbi5wYi5jYwAtLXRhcmdldD0uKnwtVyhuby0pPyhlcnJvcj0pP2FtYmlndW91cy1tZW1iZXItdGVtcGxhdGV8LVcobm8tKT8oZXJyb3I9KT9iaW5kLXRvLXRlbXBvcmFyeS1jb3B5fC1XKG5vLSk/KGVycm9yPSk/Ym9vbC1jb252ZXJzaW9uc3wtVyhuby0pPyhlcnJvcj0pP2NcK1wrMHgtc3RhdGljLW5vbmludGVncmFsLWluaXR8LVcobm8tKT8oZXJyb3I9KT9jb25zdGFudC1jb252ZXJzaW9ufC1XKG5vLSk/KGVycm9yPSk/Y29uc3RhbnQtbG9naWNhbC1vcGVyYW5kfC1XKG5vLSk/KGVycm9yPSk/Z251fC1XKG5vLSk/KGVycm9yPSk/Z251LWRlc2lnbmF0b3J8LVcobm8tKT8oZXJyb3I9KT9pbml0aWFsaXplci1vdmVycmlkZXN8LVcobm8tKT8oZXJyb3I9KT9pbnZhbGlkLW5vcmV0dXJufC1XKG5vLSk/KGVycm9yPSk/bG9jYWwtdHlwZS10ZW1wbGF0ZS1hcmdzfC1XKG5vLSk/KGVycm9yPSk/bWlzbWF0Y2hlZC10YWdzfC1XKG5vLSk/KGVycm9yPSk/bnVsbC1kZXJlZmVyZW5jZXwtVyhuby0pPyhlcnJvcj0pP291dC1vZi1saW5lLWRlY2xhcmF0aW9ufC1XKG5vLSk/KGVycm9yPSk/cmVhbGx5LWRvbnQtdXNlLWNsYW5nLWRpYWdub3N0aWNzfC1XKG5vLSk/KGVycm9yPSk/dGF1dG9sb2dpY2FsLWNvbXBhcmV8LVcobm8tKT8oZXJyb3I9KT91bmtub3duLWF0dHJpYnV0ZXN8LVcobm8tKT8oZXJyb3I9KT91bm5hbWVkLXR5cGUtdGVtcGxhdGUtYXJnc3wtVyhuby0pPyhlcnJvcj0pP3RocmVhZC1zYWZldHktLip8LVhjbGFuZz0uKnwtWGNsYW5nLW9ubHk9Lip8LWYobm8tKT9hc3N1bWUtc2FuZS1vcGVyYXRvci1uZXd8LWYobm8tKT9jYXJldC1kaWFnbm9zdGljc3wtZihuby0pP2NhdGNoLXVuZGVmaW5lZC1iZWhhdmlvcnwtZihuby0pP2NvbG9yLWRpYWdub3N0aWNzfC1mKG5vLSk/ZGlhZ25vc3RpY3MtZml4aXQtaW5mb3wtZihuby0pP2RpYWdub3N0aWNzLXBhcnNlYWJsZS1maXhpdHN8LWYobm8tKT9kaWFnbm9zdGljcy1wcmludC1zb3VyY2UtcmFuZ2UtaW5mb3wtZihuby0pP2RpYWdub3N0aWNzLXNob3ctY2F0ZWdvcnkuKnwtZihuby0pP2hlaW5vdXMtZ251LWV4dGVuc2lvbnN8LWYobm8tKT9tYWNyby1iYWNrdHJhY2UtbGltaXQuKnwtZihuby0pP3Nhbml0aXplLWFkZHJlc3MtemVyby1iYXNlLXNoYWRvd3wtZihuby0pP3Nhbml0aXplLWJsYWNrbGlzdHwtZihuby0pP3Nhbml0aXplLW1lbW9yeS10cmFjay1vcmlnaW5zfC1mKG5vLSk/c2FuaXRpemUtcmVjb3ZlcnwtZihuby0pP3Nhbml0aXplPS4qfC1mKG5vLSk/c2hvdy1vdmVybG9hZHMuKnwtZihuby0pP3VzZS1pbml0LWFycmF5fC1mKG5vLSk/dGVtcGxhdGUtYmFja3RyYWNlLWxpbWl0Lip8LWZwbHVnaW49Lip8LWZwbHVnaW4tYXJnLS4qfC1nbGluZS10YWJsZXMtb25seQBFcnJvciB3cml0aW5nIGZpbGVkYXRhOiAAQ291bGRuJ3QgY29uZmlndXJlIHZuYW1lcyBmcm9tICVzCgAtcmVzb3VyY2UtZGlyAFVzaW5nIHJlYWwgd29ya2luZyBkaXJlY3RvcnkgKAApIABDaGVjayBmYWlsZWQ6ICFjdXJyZW50X2ZpbGVzXy5lbXB0eSgpAENoZWNrIGZhaWxlZDogbGx2bTo6c3lzOjpwYXRoOjppc19hYnNvbHV0ZShmaWxlX25hbWUpAGJ1aWx0aW4AX19jbGFuZ19jdWRhX21hdGhfZm9yd2FyZF9kZWNsYXJlcy5oAF9fY2xhbmdfY3VkYV9ydW50aW1lX3dyYXBwZXIuaABhZHhpbnRyaW4uaAAvKj09PS0tLS0gYXJtX2JmMTYuaCAtIEFSTSBCRjE2IGludHJpbnNpY3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICoKICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKi8KCiNpZm5kZWYgX19BUk1fQkYxNl9ICiNkZWZpbmUgX19BUk1fQkYxNl9ICgp0eXBlZGVmIF9fYmYxNiBiZmxvYXQxNl90OwojZGVmaW5lIF9fYWkgc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCgojdW5kZWYgX19haQoKI2VuZGlmCgBhdng1MTJwZmludHJpbi5oAC8qPT09LS0tLSBibWkyaW50cmluLmggLSBCTUkyIGludHJpbnNpY3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKi8KCiNpZiAhZGVmaW5lZCBfX1g4NklOVFJJTl9IICYmICFkZWZpbmVkIF9fSU1NSU5UUklOX0gKI2Vycm9yICJOZXZlciB1c2UgPGJtaTJpbnRyaW4uaD4gZGlyZWN0bHk7IGluY2x1ZGUgPHg4NmludHJpbi5oPiBpbnN0ZWFkLiIKI2VuZGlmCgojaWZuZGVmIF9fQk1JMklOVFJJTl9ICiNkZWZpbmUgX19CTUkySU5UUklOX0gKCi8qIERlZmluZSB0aGUgZGVmYXVsdCBhdHRyaWJ1dGVzIGZvciB0aGUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZS4gKi8KI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJibWkyIikpKQoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgaW50IF9fREVGQVVMVF9GTl9BVFRSUwpfYnpoaV91MzIodW5zaWduZWQgaW50IF9fWCwgdW5zaWduZWQgaW50IF9fWSkKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9iemhpX3NpKF9fWCwgX19ZKTsKfQoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgaW50IF9fREVGQVVMVF9GTl9BVFRSUwpfcGRlcF91MzIodW5zaWduZWQgaW50IF9fWCwgdW5zaWduZWQgaW50IF9fWSkKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9wZGVwX3NpKF9fWCwgX19ZKTsKfQoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgaW50IF9fREVGQVVMVF9GTl9BVFRSUwpfcGV4dF91MzIodW5zaWduZWQgaW50IF9fWCwgdW5zaWduZWQgaW50IF9fWSkKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9wZXh0X3NpKF9fWCwgX19ZKTsKfQoKI2lmZGVmICBfX3g4Nl82NF9fCgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nIGxvbmcgX19ERUZBVUxUX0ZOX0FUVFJTCl9iemhpX3U2NCh1bnNpZ25lZCBsb25nIGxvbmcgX19YLCB1bnNpZ25lZCBsb25nIGxvbmcgX19ZKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2J6aGlfZGkoX19YLCBfX1kpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nIGxvbmcgX19ERUZBVUxUX0ZOX0FUVFJTCl9wZGVwX3U2NCh1bnNpZ25lZCBsb25nIGxvbmcgX19YLCB1bnNpZ25lZCBsb25nIGxvbmcgX19ZKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3BkZXBfZGkoX19YLCBfX1kpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nIGxvbmcgX19ERUZBVUxUX0ZOX0FUVFJTCl9wZXh0X3U2NCh1bnNpZ25lZCBsb25nIGxvbmcgX19YLCB1bnNpZ25lZCBsb25nIGxvbmcgX19ZKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3BleHRfZGkoX19YLCBfX1kpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nIGxvbmcgX19ERUZBVUxUX0ZOX0FUVFJTCl9tdWx4X3U2NCAodW5zaWduZWQgbG9uZyBsb25nIF9fWCwgdW5zaWduZWQgbG9uZyBsb25nIF9fWSwKCSAgIHVuc2lnbmVkIGxvbmcgbG9uZyAqX19QKQp7CiAgdW5zaWduZWQgX19pbnQxMjggX19yZXMgPSAodW5zaWduZWQgX19pbnQxMjgpIF9fWCAqIF9fWTsKICAqX19QID0gKHVuc2lnbmVkIGxvbmcgbG9uZykgKF9fcmVzID4+IDY0KTsKICByZXR1cm4gKHVuc2lnbmVkIGxvbmcgbG9uZykgX19yZXM7Cn0KCiNlbHNlIC8qICFfX3g4Nl82NF9fICovCgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTCl9tdWx4X3UzMiAodW5zaWduZWQgaW50IF9fWCwgdW5zaWduZWQgaW50IF9fWSwgdW5zaWduZWQgaW50ICpfX1ApCnsKICB1bnNpZ25lZCBsb25nIGxvbmcgX19yZXMgPSAodW5zaWduZWQgbG9uZyBsb25nKSBfX1ggKiBfX1k7CiAgKl9fUCA9ICh1bnNpZ25lZCBpbnQpIChfX3JlcyA+PiAzMik7CiAgcmV0dXJuICh1bnNpZ25lZCBpbnQpIF9fcmVzOwp9CgojZW5kaWYgLyogIV9feDg2XzY0X18gICovCgojdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTCgojZW5kaWYgLyogX19CTUkySU5UUklOX0ggKi8KAC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCi8vCi8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCi8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgovLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCi8vCi8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCi8vIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZpbGUsIGRvIG5vdCBlZGl0IQovLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwoKCgojaWZuZGVmIF9IVlhfSEVYQUdPTl9QUk9UT1NfSF8KI2RlZmluZSBfSFZYX0hFWEFHT05fUFJPVE9TX0hfIDEKCiNpZmRlZiBfX0hWWF9fCiNpZiBfX0hWWF9MRU5HVEhfXyA9PSAxMjgKI2RlZmluZSBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoYSkgYSAjIyBfMTI4QgojZWxzZQojZGVmaW5lIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChhKSBhCiNlbmRpZgoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFJkMzI9dmV4dHJhY3QoVnUzMixSczMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IFdvcmQzMiBRNl9SX3ZleHRyYWN0X1ZSKEhWWF9WZWN0b3IgVnUsIFdvcmQzMiBScykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBMRAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1JfdmV4dHJhY3RfVlIgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X2V4dHJhY3R3KQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyPWhpKFZzczMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVl9oaV9XKEhWWF9WZWN0b3JQYWlyIFZzcykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkEKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WX2hpX1cgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X2hpKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyPWxvKFZzczMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVl9sb19XKEhWWF9WZWN0b3JQYWlyIFZzcykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkEKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WX2xvX1cgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X2xvKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyPXZzcGxhdChSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVl92c3BsYXRfUihXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZYX0xBVEUKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVl92c3BsYXRfUiBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfbHZzcGxhdHcpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFFkND1hbmQoUXM0LFF0NCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUHJlZCBRNl9RX2FuZF9RUShIVlhfVmVjdG9yUHJlZCBRcywgSFZYX1ZlY3RvclByZWQgUXQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUV9hbmRfUVEgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ByZWRfYW5kKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBRZDQ9YW5kKFFzNCwhUXQ0KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQcmVkIFE2X1FfYW5kX1FRbihIVlhfVmVjdG9yUHJlZCBRcywgSFZYX1ZlY3RvclByZWQgUXQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUV9hbmRfUVFuIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl9wcmVkX2FuZF9uKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBRZDQ9bm90KFFzNCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUHJlZCBRNl9RX25vdF9RKEhWWF9WZWN0b3JQcmVkIFFzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Ffbm90X1EgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ByZWRfbm90KQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBRZDQ9b3IoUXM0LFF0NCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUHJlZCBRNl9RX29yX1FRKEhWWF9WZWN0b3JQcmVkIFFzLCBIVlhfVmVjdG9yUHJlZCBRdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkFfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9RX29yX1FRIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl9wcmVkX29yKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBRZDQ9b3IoUXM0LCFRdDQpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclByZWQgUTZfUV9vcl9RUW4oSFZYX1ZlY3RvclByZWQgUXMsIEhWWF9WZWN0b3JQcmVkIFF0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQV9EVgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Ffb3JfUVFuIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl9wcmVkX29yX24pCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFFkND12c2V0cShSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQcmVkIFE2X1FfdnNldHFfUihXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZQCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUV92c2V0cV9SIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl9wcmVkX3NjYWxhcjIpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFFkND14b3IoUXM0LFF0NCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUHJlZCBRNl9RX3hvcl9RUShIVlhfVmVjdG9yUHJlZCBRcywgSFZYX1ZlY3RvclByZWQgUXQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUV94b3JfUVEgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ByZWRfeG9yKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBpZiAoIVF2NCkgdm1lbShSdDMyKyNzNCk9VnMzMgogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IHZvaWQgUTZfdm1lbV9RblJJVihIVlhfVmVjdG9yUHJlZCBRdiwgSFZYX1ZlY3RvciogUnQsIEhWWF9WZWN0b3IgVnMpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZNX1NUCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfdm1lbV9RblJJViBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdlMzMmJfbnFwcmVkX2FpKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBpZiAoIVF2NCkgdm1lbShSdDMyKyNzNCk6bnQ9VnMzMgogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IHZvaWQgUTZfdm1lbV9RblJJVl9udChIVlhfVmVjdG9yUHJlZCBRdiwgSFZYX1ZlY3RvciogUnQsIEhWWF9WZWN0b3IgVnMpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZNX1NUCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfdm1lbV9RblJJVl9udCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdlMzMmJfbnRfbnFwcmVkX2FpKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBpZiAoUXY0KSB2bWVtKFJ0MzIrI3M0KTpudD1WczMyCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogdm9pZCBRNl92bWVtX1FSSVZfbnQoSFZYX1ZlY3RvclByZWQgUXYsIEhWWF9WZWN0b3IqIFJ0LCBIVlhfVmVjdG9yIFZzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WTV9TVAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X3ZtZW1fUVJJVl9udCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdlMzMmJfbnRfcXByZWRfYWkpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIGlmIChRdjQpIHZtZW0oUnQzMisjczQpPVZzMzIKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiB2b2lkIFE2X3ZtZW1fUVJJVihIVlhfVmVjdG9yUHJlZCBRdiwgSFZYX1ZlY3RvciogUnQsIEhWWF9WZWN0b3IgVnMpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZNX1NUCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfdm1lbV9RUklWIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92UzMyYl9xcHJlZF9haSkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi51aD12YWJzZGlmZihWdTMyLmgsVnYzMi5oKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVnVoX3ZhYnNkaWZmX1ZoVmgoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlgKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVnVoX3ZhYnNkaWZmX1ZoVmggX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhYnNkaWZmaCkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi51Yj12YWJzZGlmZihWdTMyLnViLFZ2MzIudWIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WdWJfdmFic2RpZmZfVnViVnViKEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZYCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Z1Yl92YWJzZGlmZl9WdWJWdWIgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhYnNkaWZmdWIpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIudWg9dmFic2RpZmYoVnUzMi51aCxWdjMyLnVoKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVnVoX3ZhYnNkaWZmX1Z1aFZ1aChIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WWAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WdWhfdmFic2RpZmZfVnVoVnVoIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWJzZGlmZnVoKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLnV3PXZhYnNkaWZmKFZ1MzIudyxWdjMyLncpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WdXdfdmFic2RpZmZfVndWdyhIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WWAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WdXdfdmFic2RpZmZfVndWdyBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmFic2RpZmZ3KQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLmg9dmFicyhWdTMyLmgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WaF92YWJzX1ZoKEhWWF9WZWN0b3IgVnUpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVmhfdmFic19WaCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmFic2gpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIuaD12YWJzKFZ1MzIuaCk6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WaF92YWJzX1ZoX3NhdChIVlhfVmVjdG9yIFZ1KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1ZoX3ZhYnNfVmhfc2F0IF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWJzaF9zYXQpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIudz12YWJzKFZ1MzIudykKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1Z3X3ZhYnNfVncoSFZYX1ZlY3RvciBWdSkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkEKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9Wd192YWJzX1Z3IF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWJzdykKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi53PXZhYnMoVnUzMi53KTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1Z3X3ZhYnNfVndfc2F0KEhWWF9WZWN0b3IgVnUpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVndfdmFic19Wd19zYXQgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhYnN3X3NhdCkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi5iPXZhZGQoVnUzMi5iLFZ2MzIuYikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1ZiX3ZhZGRfVmJWYihIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1ZiX3ZhZGRfVmJWYiBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGIpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkZDMyLmI9dmFkZChWdXUzMi5iLFZ2djMyLmIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclBhaXIgUTZfV2JfdmFkZF9XYldiKEhWWF9WZWN0b3JQYWlyIFZ1dSwgSFZYX1ZlY3RvclBhaXIgVnZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQV9EVgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1diX3ZhZGRfV2JXYiBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGJfZHYpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIGlmICghUXY0KSBWeDMyLmIrPVZ1MzIuYgogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVmJfY29uZGFjY19RblZiVmIoSFZYX1ZlY3RvclByZWQgUXYsIEhWWF9WZWN0b3IgVngsIEhWWF9WZWN0b3IgVnUpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVmJfY29uZGFjY19RblZiVmIgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRibnEpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIGlmIChRdjQpIFZ4MzIuYis9VnUzMi5iCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WYl9jb25kYWNjX1FWYlZiKEhWWF9WZWN0b3JQcmVkIFF2LCBIVlhfVmVjdG9yIFZ4LCBIVlhfVmVjdG9yIFZ1KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1ZiX2NvbmRhY2NfUVZiVmIgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRicSkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi5oPXZhZGQoVnUzMi5oLFZ2MzIuaCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1ZoX3ZhZGRfVmhWaChIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1ZoX3ZhZGRfVmhWaCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGgpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkZDMyLmg9dmFkZChWdXUzMi5oLFZ2djMyLmgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclBhaXIgUTZfV2hfdmFkZF9XaFdoKEhWWF9WZWN0b3JQYWlyIFZ1dSwgSFZYX1ZlY3RvclBhaXIgVnZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQV9EVgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1doX3ZhZGRfV2hXaCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGhfZHYpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIGlmICghUXY0KSBWeDMyLmgrPVZ1MzIuaAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVmhfY29uZGFjY19RblZoVmgoSFZYX1ZlY3RvclByZWQgUXYsIEhWWF9WZWN0b3IgVngsIEhWWF9WZWN0b3IgVnUpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVmhfY29uZGFjY19RblZoVmggX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRobnEpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIGlmIChRdjQpIFZ4MzIuaCs9VnUzMi5oCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WaF9jb25kYWNjX1FWaFZoKEhWWF9WZWN0b3JQcmVkIFF2LCBIVlhfVmVjdG9yIFZ4LCBIVlhfVmVjdG9yIFZ1KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1ZoX2NvbmRhY2NfUVZoVmggX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRocSkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi5oPXZhZGQoVnUzMi5oLFZ2MzIuaCk6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WaF92YWRkX1ZoVmhfc2F0KEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVmhfdmFkZF9WaFZoX3NhdCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGhzYXQpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkZDMyLmg9dmFkZChWdXUzMi5oLFZ2djMyLmgpOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQYWlyIFE2X1doX3ZhZGRfV2hXaF9zYXQoSFZYX1ZlY3RvclBhaXIgVnV1LCBIVlhfVmVjdG9yUGFpciBWdnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfV2hfdmFkZF9XaFdoX3NhdCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGhzYXRfZHYpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkZDMyLnc9dmFkZChWdTMyLmgsVnYzMi5oKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQYWlyIFE2X1d3X3ZhZGRfVmhWaChIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WWF9EVgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9Xd192YWRkX1ZoVmggX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRodykKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmRkMzIuaD12YWRkKFZ1MzIudWIsVnYzMi51YikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUGFpciBRNl9XaF92YWRkX1Z1YlZ1YihIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WWF9EVgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9XaF92YWRkX1Z1YlZ1YiBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHViaCkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi51Yj12YWRkKFZ1MzIudWIsVnYzMi51Yik6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WdWJfdmFkZF9WdWJWdWJfc2F0KEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVnViX3ZhZGRfVnViVnViX3NhdCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHVic2F0KQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZGQzMi51Yj12YWRkKFZ1dTMyLnViLFZ2djMyLnViKTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUGFpciBRNl9XdWJfdmFkZF9XdWJXdWJfc2F0KEhWWF9WZWN0b3JQYWlyIFZ1dSwgSFZYX1ZlY3RvclBhaXIgVnZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQV9EVgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1d1Yl92YWRkX1d1Yld1Yl9zYXQgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGR1YnNhdF9kdikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi51aD12YWRkKFZ1MzIudWgsVnYzMi51aCk6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WdWhfdmFkZF9WdWhWdWhfc2F0KEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVnVoX3ZhZGRfVnVoVnVoX3NhdCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHVoc2F0KQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZGQzMi51aD12YWRkKFZ1dTMyLnVoLFZ2djMyLnVoKTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUGFpciBRNl9XdWhfdmFkZF9XdWhXdWhfc2F0KEhWWF9WZWN0b3JQYWlyIFZ1dSwgSFZYX1ZlY3RvclBhaXIgVnZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQV9EVgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1d1aF92YWRkX1d1aFd1aF9zYXQgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGR1aHNhdF9kdikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmRkMzIudz12YWRkKFZ1MzIudWgsVnYzMi51aCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUGFpciBRNl9Xd192YWRkX1Z1aFZ1aChIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WWF9EVgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9Xd192YWRkX1Z1aFZ1aCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHVodykKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi53PXZhZGQoVnUzMi53LFZ2MzIudykKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1Z3X3ZhZGRfVndWdyhIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Z3X3ZhZGRfVndWdyBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHcpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkZDMyLnc9dmFkZChWdXUzMi53LFZ2djMyLncpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclBhaXIgUTZfV3dfdmFkZF9Xd1d3KEhWWF9WZWN0b3JQYWlyIFZ1dSwgSFZYX1ZlY3RvclBhaXIgVnZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQV9EVgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1d3X3ZhZGRfV3dXdyBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHdfZHYpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIGlmICghUXY0KSBWeDMyLncrPVZ1MzIudwogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVndfY29uZGFjY19RblZ3VncoSFZYX1ZlY3RvclByZWQgUXYsIEhWWF9WZWN0b3IgVngsIEhWWF9WZWN0b3IgVnUpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVndfY29uZGFjY19RblZ3VncgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGR3bnEpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIGlmIChRdjQpIFZ4MzIudys9VnUzMi53CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9Wd19jb25kYWNjX1FWd1Z3KEhWWF9WZWN0b3JQcmVkIFF2LCBIVlhfVmVjdG9yIFZ4LCBIVlhfVmVjdG9yIFZ1KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Z3X2NvbmRhY2NfUVZ3VncgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGR3cSkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi53PXZhZGQoVnUzMi53LFZ2MzIudyk6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9Wd192YWRkX1Z3Vndfc2F0KEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVndfdmFkZF9Wd1Z3X3NhdCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHdzYXQpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkZDMyLnc9dmFkZChWdXUzMi53LFZ2djMyLncpOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQYWlyIFE2X1d3X3ZhZGRfV3dXd19zYXQoSFZYX1ZlY3RvclBhaXIgVnV1LCBIVlhfVmVjdG9yUGFpciBWdnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfV3dfdmFkZF9Xd1d3X3NhdCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHdzYXRfZHYpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzI9dmFsaWduKFZ1MzIsVnYzMixSdDgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WX3ZhbGlnbl9WVlIoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdiwgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WUAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1ZfdmFsaWduX1ZWUiBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmFsaWduYikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMj12YWxpZ24oVnUzMixWdjMyLCN1MykKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1ZfdmFsaWduX1ZWSShIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2LCBXb3JkMzIgSXUzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WUAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1ZfdmFsaWduX1ZWSSBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmFsaWduYmkpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzI9dmFuZChWdTMyLFZ2MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WX3ZhbmRfVlYoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkEKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WX3ZhbmRfVlYgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhbmQpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzI9dmFuZChRdTQsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1ZfdmFuZF9RUihIVlhfVmVjdG9yUHJlZCBRdSwgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WWF9MQVRFCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1ZfdmFuZF9RUiBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmFuZHFydCkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVngzMnw9dmFuZChRdTQsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1ZfdmFuZG9yX1ZRUihIVlhfVmVjdG9yIFZ4LCBIVlhfVmVjdG9yUHJlZCBRdSwgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WWF9MQVRFCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1ZfdmFuZG9yX1ZRUiBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmFuZHFydF9hY2MpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFFkND12YW5kKFZ1MzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUHJlZCBRNl9RX3ZhbmRfVlIoSFZYX1ZlY3RvciBWdSwgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WWF9MQVRFCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1FfdmFuZF9WUiBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmFuZHZydCkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUXg0fD12YW5kKFZ1MzIsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUHJlZCBRNl9RX3ZhbmRvcl9RVlIoSFZYX1ZlY3RvclByZWQgUXgsIEhWWF9WZWN0b3IgVnUsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlhfTEFURQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9RX3ZhbmRvcl9RVlIgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhbmR2cnRfYWNjKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLmg9dmFzbChWdTMyLmgsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1ZoX3Zhc2xfVmhSKEhWWF9WZWN0b3IgVnUsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlMKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WaF92YXNsX1ZoUiBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmFzbGgpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIuaD12YXNsKFZ1MzIuaCxWdjMyLmgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WaF92YXNsX1ZoVmgoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlMKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WaF92YXNsX1ZoVmggX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc2xodikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi53PXZhc2woVnUzMi53LFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9Wd192YXNsX1Z3UihIVlhfVmVjdG9yIFZ1LCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZTCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVndfdmFzbF9Wd1IgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc2x3KQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWeDMyLncrPXZhc2woVnUzMi53LFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9Wd192YXNsYWNjX1Z3VndSKEhWWF9WZWN0b3IgVngsIEhWWF9WZWN0b3IgVnUsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlMKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9Wd192YXNsYWNjX1Z3VndSIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNsd19hY2MpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIudz12YXNsKFZ1MzIudyxWdjMyLncpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9Wd192YXNsX1Z3VncoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlMKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9Wd192YXNsX1Z3VncgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc2x3dikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi5oPXZhc3IoVnUzMi5oLFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WaF92YXNyX1ZoUihIVlhfVmVjdG9yIFZ1LCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZTCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVmhfdmFzcl9WaFIgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3JoKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLmI9dmFzcihWdTMyLmgsVnYzMi5oLFJ0OCk6cm5kOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVmJfdmFzcl9WaFZoUl9ybmRfc2F0KEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlMKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WYl92YXNyX1ZoVmhSX3JuZF9zYXQgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3JoYnJuZHNhdCkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi51Yj12YXNyKFZ1MzIuaCxWdjMyLmgsUnQ4KTpybmQ6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WdWJfdmFzcl9WaFZoUl9ybmRfc2F0KEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlMKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WdWJfdmFzcl9WaFZoUl9ybmRfc2F0IF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNyaHVicm5kc2F0KQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLnViPXZhc3IoVnUzMi5oLFZ2MzIuaCxSdDgpOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVnViX3Zhc3JfVmhWaFJfc2F0KEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlMKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WdWJfdmFzcl9WaFZoUl9zYXQgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3JodWJzYXQpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIuaD12YXNyKFZ1MzIuaCxWdjMyLmgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WaF92YXNyX1ZoVmgoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlMKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WaF92YXNyX1ZoVmggX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3JodikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi53PXZhc3IoVnUzMi53LFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9Wd192YXNyX1Z3UihIVlhfVmVjdG9yIFZ1LCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZTCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVndfdmFzcl9Wd1IgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3J3KQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWeDMyLncrPXZhc3IoVnUzMi53LFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9Wd192YXNyYWNjX1Z3VndSKEhWWF9WZWN0b3IgVngsIEhWWF9WZWN0b3IgVnUsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlMKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9Wd192YXNyYWNjX1Z3VndSIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNyd19hY2MpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIuaD12YXNyKFZ1MzIudyxWdjMyLncsUnQ4KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVmhfdmFzcl9Wd1Z3UihIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2LCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZTCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVmhfdmFzcl9Wd1Z3UiBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmFzcndoKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLmg9dmFzcihWdTMyLncsVnYzMi53LFJ0OCk6cm5kOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVmhfdmFzcl9Wd1Z3Ul9ybmRfc2F0KEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlMKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WaF92YXNyX1Z3VndSX3JuZF9zYXQgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3J3aHJuZHNhdCkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi5oPXZhc3IoVnUzMi53LFZ2MzIudyxSdDgpOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVmhfdmFzcl9Wd1Z3Ul9zYXQoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdiwgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WUwogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1ZoX3Zhc3JfVndWd1Jfc2F0IF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNyd2hzYXQpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIudWg9dmFzcihWdTMyLncsVnYzMi53LFJ0OCk6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WdWhfdmFzcl9Wd1Z3Ul9zYXQoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdiwgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WUwogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Z1aF92YXNyX1Z3VndSX3NhdCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmFzcnd1aHNhdCkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi53PXZhc3IoVnUzMi53LFZ2MzIudykKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1Z3X3Zhc3JfVndWdyhIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WUwogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Z3X3Zhc3JfVndWdyBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmFzcnd2KQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyPVZ1MzIKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1ZfZXF1YWxzX1YoSFZYX1ZlY3RvciBWdSkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkEKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WX2VxdWFsc19WIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNzaWduKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZGQzMj1WdXUzMgogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQYWlyIFE2X1dfZXF1YWxzX1coSFZYX1ZlY3RvclBhaXIgVnV1KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQV9EVgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1dfZXF1YWxzX1cgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3NpZ25wKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLmg9dmF2ZyhWdTMyLmgsVnYzMi5oKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVmhfdmF2Z19WaFZoKEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVmhfdmF2Z19WaFZoIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXZnaCkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi5oPXZhdmcoVnUzMi5oLFZ2MzIuaCk6cm5kCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WaF92YXZnX1ZoVmhfcm5kKEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVmhfdmF2Z19WaFZoX3JuZCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmF2Z2hybmQpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIudWI9dmF2ZyhWdTMyLnViLFZ2MzIudWIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WdWJfdmF2Z19WdWJWdWIoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkEKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WdWJfdmF2Z19WdWJWdWIgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhdmd1YikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi51Yj12YXZnKFZ1MzIudWIsVnYzMi51Yik6cm5kCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WdWJfdmF2Z19WdWJWdWJfcm5kKEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVnViX3ZhdmdfVnViVnViX3JuZCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmF2Z3Vicm5kKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLnVoPXZhdmcoVnUzMi51aCxWdjMyLnVoKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVnVoX3ZhdmdfVnVoVnVoKEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVnVoX3ZhdmdfVnVoVnVoIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXZndWgpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIudWg9dmF2ZyhWdTMyLnVoLFZ2MzIudWgpOnJuZAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVnVoX3ZhdmdfVnVoVnVoX3JuZChIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Z1aF92YXZnX1Z1aFZ1aF9ybmQgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhdmd1aHJuZCkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi53PXZhdmcoVnUzMi53LFZ2MzIudykKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1Z3X3ZhdmdfVndWdyhIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Z3X3ZhdmdfVndWdyBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmF2Z3cpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIudz12YXZnKFZ1MzIudyxWdjMyLncpOnJuZAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVndfdmF2Z19Wd1Z3X3JuZChIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Z3X3ZhdmdfVndWd19ybmQgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhdmd3cm5kKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLnVoPXZjbDAoVnUzMi51aCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1Z1aF92Y2wwX1Z1aChIVlhfVmVjdG9yIFZ1KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WUwogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Z1aF92Y2wwX1Z1aCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmNsMGgpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIudXc9dmNsMChWdTMyLnV3KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVnV3X3ZjbDBfVnV3KEhWWF9WZWN0b3IgVnUpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZTCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVnV3X3ZjbDBfVnV3IF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92Y2wwdykKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmRkMzI9dmNvbWJpbmUoVnUzMixWdjMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQYWlyIFE2X1dfdmNvbWJpbmVfVlYoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkFfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9XX3Zjb21iaW5lX1ZWIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92Y29tYmluZSkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMj0jMAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVl92emVybygpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVl92emVybyBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmQwKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLmI9dmRlYWwoVnUzMi5iKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVmJfdmRlYWxfVmIoSFZYX1ZlY3RvciBWdSkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlAKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WYl92ZGVhbF9WYiBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmRlYWxiKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLmI9dmRlYWxlKFZ1MzIuYixWdjMyLmIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WYl92ZGVhbGVfVmJWYihIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WUAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1ZiX3ZkZWFsZV9WYlZiIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZGVhbGI0dykKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi5oPXZkZWFsKFZ1MzIuaCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1ZoX3ZkZWFsX1ZoKEhWWF9WZWN0b3IgVnUpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZQCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVmhfdmRlYWxfVmggX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkZWFsaCkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmRkMzI9dmRlYWwoVnUzMixWdjMyLFJ0OCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUGFpciBRNl9XX3ZkZWFsX1ZWUihIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2LCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZQX1ZTCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfV192ZGVhbF9WVlIgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkZWFsdmRkKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyPXZkZWx0YShWdTMyLFZ2MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WX3ZkZWx0YV9WVihIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WUAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1ZfdmRlbHRhX1ZWIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZGVsdGEpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIuaD12ZG1weShWdTMyLnViLFJ0MzIuYikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1ZoX3ZkbXB5X1Z1YlJiKEhWWF9WZWN0b3IgVnUsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlgKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVmhfdmRtcHlfVnViUmIgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5YnVzKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWeDMyLmgrPXZkbXB5KFZ1MzIudWIsUnQzMi5iKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVmhfdmRtcHlhY2NfVmhWdWJSYihIVlhfVmVjdG9yIFZ4LCBIVlhfVmVjdG9yIFZ1LCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZYCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1ZoX3ZkbXB5YWNjX1ZoVnViUmIgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5YnVzX2FjYykKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmRkMzIuaD12ZG1weShWdXUzMi51YixSdDMyLmIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclBhaXIgUTZfV2hfdmRtcHlfV3ViUmIoSFZYX1ZlY3RvclBhaXIgVnV1LCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZYX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1doX3ZkbXB5X1d1YlJiIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWJ1c19kdikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVnh4MzIuaCs9dmRtcHkoVnV1MzIudWIsUnQzMi5iKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQYWlyIFE2X1doX3ZkbXB5YWNjX1doV3ViUmIoSFZYX1ZlY3RvclBhaXIgVnh4LCBIVlhfVmVjdG9yUGFpciBWdXUsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlhfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfV2hfdmRtcHlhY2NfV2hXdWJSYiBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHlidXNfZHZfYWNjKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLnc9dmRtcHkoVnUzMi5oLFJ0MzIuYikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1Z3X3ZkbXB5X1ZoUmIoSFZYX1ZlY3RvciBWdSwgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WWAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9Wd192ZG1weV9WaFJiIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWhiKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWeDMyLncrPXZkbXB5KFZ1MzIuaCxSdDMyLmIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9Wd192ZG1weWFjY19Wd1ZoUmIoSFZYX1ZlY3RvciBWeCwgSFZYX1ZlY3RvciBWdSwgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WWAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9Wd192ZG1weWFjY19Wd1ZoUmIgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5aGJfYWNjKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZGQzMi53PXZkbXB5KFZ1dTMyLmgsUnQzMi5iKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQYWlyIFE2X1d3X3ZkbXB5X1doUmIoSFZYX1ZlY3RvclBhaXIgVnV1LCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZYX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1d3X3ZkbXB5X1doUmIgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5aGJfZHYpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZ4eDMyLncrPXZkbXB5KFZ1dTMyLmgsUnQzMi5iKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQYWlyIFE2X1d3X3ZkbXB5YWNjX1d3V2hSYihIVlhfVmVjdG9yUGFpciBWeHgsIEhWWF9WZWN0b3JQYWlyIFZ1dSwgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WWF9EVgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9Xd192ZG1weWFjY19Xd1doUmIgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5aGJfZHZfYWNjKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLnc9dmRtcHkoVnV1MzIuaCxSdDMyLmgpOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVndfdmRtcHlfV2hSaF9zYXQoSFZYX1ZlY3RvclBhaXIgVnV1LCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZYX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Z3X3ZkbXB5X1doUmhfc2F0IF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWhpc2F0KQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWeDMyLncrPXZkbXB5KFZ1dTMyLmgsUnQzMi5oKTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1Z3X3ZkbXB5YWNjX1Z3V2hSaF9zYXQoSFZYX1ZlY3RvciBWeCwgSFZYX1ZlY3RvclBhaXIgVnV1LCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZYX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Z3X3ZkbXB5YWNjX1Z3V2hSaF9zYXQgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5aGlzYXRfYWNjKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLnc9dmRtcHkoVnUzMi5oLFJ0MzIuaCk6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9Wd192ZG1weV9WaFJoX3NhdChIVlhfVmVjdG9yIFZ1LCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZYX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Z3X3ZkbXB5X1ZoUmhfc2F0IF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWhzYXQpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZ4MzIudys9dmRtcHkoVnUzMi5oLFJ0MzIuaCk6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9Wd192ZG1weWFjY19Wd1ZoUmhfc2F0KEhWWF9WZWN0b3IgVngsIEhWWF9WZWN0b3IgVnUsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlhfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVndfdmRtcHlhY2NfVndWaFJoX3NhdCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHloc2F0X2FjYykKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi53PXZkbXB5KFZ1dTMyLmgsUnQzMi51aCwjMSk6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9Wd192ZG1weV9XaFJ1aF9zYXQoSFZYX1ZlY3RvclBhaXIgVnV1LCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZYX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Z3X3ZkbXB5X1doUnVoX3NhdCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHloc3Vpc2F0KQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWeDMyLncrPXZkbXB5KFZ1dTMyLmgsUnQzMi51aCwjMSk6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9Wd192ZG1weWFjY19Wd1doUnVoX3NhdChIVlhfVmVjdG9yIFZ4LCBIVlhfVmVjdG9yUGFpciBWdXUsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlhfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVndfdmRtcHlhY2NfVndXaFJ1aF9zYXQgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5aHN1aXNhdF9hY2MpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIudz12ZG1weShWdTMyLmgsUnQzMi51aCk6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9Wd192ZG1weV9WaFJ1aF9zYXQoSFZYX1ZlY3RvciBWdSwgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WWF9EVgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9Wd192ZG1weV9WaFJ1aF9zYXQgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5aHN1c2F0KQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWeDMyLncrPXZkbXB5KFZ1MzIuaCxSdDMyLnVoKTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1Z3X3ZkbXB5YWNjX1Z3VmhSdWhfc2F0KEhWWF9WZWN0b3IgVngsIEhWWF9WZWN0b3IgVnUsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlhfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVndfdmRtcHlhY2NfVndWaFJ1aF9zYXQgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5aHN1c2F0X2FjYykKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi53PXZkbXB5KFZ1MzIuaCxWdjMyLmgpOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVndfdmRtcHlfVmhWaF9zYXQoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlhfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVndfdmRtcHlfVmhWaF9zYXQgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5aHZzYXQpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZ4MzIudys9dmRtcHkoVnUzMi5oLFZ2MzIuaCk6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9Wd192ZG1weWFjY19Wd1ZoVmhfc2F0KEhWWF9WZWN0b3IgVngsIEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZYX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Z3X3ZkbXB5YWNjX1Z3VmhWaF9zYXQgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5aHZzYXRfYWNjKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZGQzMi51dz12ZHNhZChWdXUzMi51aCxSdDMyLnVoKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQYWlyIFE2X1d1d192ZHNhZF9XdWhSdWgoSFZYX1ZlY3RvclBhaXIgVnV1LCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZYX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1d1d192ZHNhZF9XdWhSdWggX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zkc2FkdWgpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZ4eDMyLnV3Kz12ZHNhZChWdXUzMi51aCxSdDMyLnVoKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQYWlyIFE2X1d1d192ZHNhZGFjY19XdXdXdWhSdWgoSFZYX1ZlY3RvclBhaXIgVnh4LCBIVlhfVmVjdG9yUGFpciBWdXUsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlhfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfV3V3X3Zkc2FkYWNjX1d1d1d1aFJ1aCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmRzYWR1aF9hY2MpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFFkND12Y21wLmVxKFZ1MzIuYixWdjMyLmIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclByZWQgUTZfUV92Y21wX2VxX1ZiVmIoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkEKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9RX3ZjbXBfZXFfVmJWYiBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmVxYikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUXg0Jj12Y21wLmVxKFZ1MzIuYixWdjMyLmIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclByZWQgUTZfUV92Y21wX2VxYW5kX1FWYlZiKEhWWF9WZWN0b3JQcmVkIFF4LCBIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1FfdmNtcF9lcWFuZF9RVmJWYiBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmVxYl9hbmQpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFF4NHw9dmNtcC5lcShWdTMyLmIsVnYzMi5iKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQcmVkIFE2X1FfdmNtcF9lcW9yX1FWYlZiKEhWWF9WZWN0b3JQcmVkIFF4LCBIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1FfdmNtcF9lcW9yX1FWYlZiIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZXFiX29yKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBReDRePXZjbXAuZXEoVnUzMi5iLFZ2MzIuYikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUHJlZCBRNl9RX3ZjbXBfZXF4YWNjX1FWYlZiKEhWWF9WZWN0b3JQcmVkIFF4LCBIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1FfdmNtcF9lcXhhY2NfUVZiVmIgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZlcWJfeG9yKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBRZDQ9dmNtcC5lcShWdTMyLmgsVnYzMi5oKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQcmVkIFE2X1FfdmNtcF9lcV9WaFZoKEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUV92Y21wX2VxX1ZoVmggX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZlcWgpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFF4NCY9dmNtcC5lcShWdTMyLmgsVnYzMi5oKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQcmVkIFE2X1FfdmNtcF9lcWFuZF9RVmhWaChIVlhfVmVjdG9yUHJlZCBReCwgSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkEKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9RX3ZjbXBfZXFhbmRfUVZoVmggX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZlcWhfYW5kKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBReDR8PXZjbXAuZXEoVnUzMi5oLFZ2MzIuaCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUHJlZCBRNl9RX3ZjbXBfZXFvcl9RVmhWaChIVlhfVmVjdG9yUHJlZCBReCwgSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkEKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9RX3ZjbXBfZXFvcl9RVmhWaCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmVxaF9vcikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUXg0Xj12Y21wLmVxKFZ1MzIuaCxWdjMyLmgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclByZWQgUTZfUV92Y21wX2VxeGFjY19RVmhWaChIVlhfVmVjdG9yUHJlZCBReCwgSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkEKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9RX3ZjbXBfZXF4YWNjX1FWaFZoIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZXFoX3hvcikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUWQ0PXZjbXAuZXEoVnUzMi53LFZ2MzIudykKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUHJlZCBRNl9RX3ZjbXBfZXFfVndWdyhIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1FfdmNtcF9lcV9Wd1Z3IF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZXF3KQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBReDQmPXZjbXAuZXEoVnUzMi53LFZ2MzIudykKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUHJlZCBRNl9RX3ZjbXBfZXFhbmRfUVZ3VncoSFZYX1ZlY3RvclByZWQgUXgsIEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUV92Y21wX2VxYW5kX1FWd1Z3IF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZXF3X2FuZCkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUXg0fD12Y21wLmVxKFZ1MzIudyxWdjMyLncpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclByZWQgUTZfUV92Y21wX2Vxb3JfUVZ3VncoSFZYX1ZlY3RvclByZWQgUXgsIEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUV92Y21wX2Vxb3JfUVZ3VncgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZlcXdfb3IpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFF4NF49dmNtcC5lcShWdTMyLncsVnYzMi53KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQcmVkIFE2X1FfdmNtcF9lcXhhY2NfUVZ3VncoSFZYX1ZlY3RvclByZWQgUXgsIEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUV92Y21wX2VxeGFjY19RVndWdyBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmVxd194b3IpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFFkND12Y21wLmd0KFZ1MzIuYixWdjMyLmIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclByZWQgUTZfUV92Y21wX2d0X1ZiVmIoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkEKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9RX3ZjbXBfZ3RfVmJWYiBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmd0YikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUXg0Jj12Y21wLmd0KFZ1MzIuYixWdjMyLmIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclByZWQgUTZfUV92Y21wX2d0YW5kX1FWYlZiKEhWWF9WZWN0b3JQcmVkIFF4LCBIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1FfdmNtcF9ndGFuZF9RVmJWYiBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmd0Yl9hbmQpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFF4NHw9dmNtcC5ndChWdTMyLmIsVnYzMi5iKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQcmVkIFE2X1FfdmNtcF9ndG9yX1FWYlZiKEhWWF9WZWN0b3JQcmVkIFF4LCBIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1FfdmNtcF9ndG9yX1FWYlZiIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3RiX29yKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBReDRePXZjbXAuZ3QoVnUzMi5iLFZ2MzIuYikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUHJlZCBRNl9RX3ZjbXBfZ3R4YWNjX1FWYlZiKEhWWF9WZWN0b3JQcmVkIFF4LCBIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1FfdmNtcF9ndHhhY2NfUVZiVmIgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndGJfeG9yKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBRZDQ9dmNtcC5ndChWdTMyLmgsVnYzMi5oKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQcmVkIFE2X1FfdmNtcF9ndF9WaFZoKEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUV92Y21wX2d0X1ZoVmggX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndGgpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFF4NCY9dmNtcC5ndChWdTMyLmgsVnYzMi5oKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQcmVkIFE2X1FfdmNtcF9ndGFuZF9RVmhWaChIVlhfVmVjdG9yUHJlZCBReCwgSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkEKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9RX3ZjbXBfZ3RhbmRfUVZoVmggX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndGhfYW5kKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBReDR8PXZjbXAuZ3QoVnUzMi5oLFZ2MzIuaCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUHJlZCBRNl9RX3ZjbXBfZ3Rvcl9RVmhWaChIVlhfVmVjdG9yUHJlZCBReCwgSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkEKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9RX3ZjbXBfZ3Rvcl9RVmhWaCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmd0aF9vcikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUXg0Xj12Y21wLmd0KFZ1MzIuaCxWdjMyLmgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclByZWQgUTZfUV92Y21wX2d0eGFjY19RVmhWaChIVlhfVmVjdG9yUHJlZCBReCwgSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkEKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9RX3ZjbXBfZ3R4YWNjX1FWaFZoIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3RoX3hvcikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUWQ0PXZjbXAuZ3QoVnUzMi51YixWdjMyLnViKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQcmVkIFE2X1FfdmNtcF9ndF9WdWJWdWIoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkEKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9RX3ZjbXBfZ3RfVnViVnViIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R1YikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUXg0Jj12Y21wLmd0KFZ1MzIudWIsVnYzMi51YikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUHJlZCBRNl9RX3ZjbXBfZ3RhbmRfUVZ1YlZ1YihIVlhfVmVjdG9yUHJlZCBReCwgSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkEKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9RX3ZjbXBfZ3RhbmRfUVZ1YlZ1YiBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmd0dWJfYW5kKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBReDR8PXZjbXAuZ3QoVnUzMi51YixWdjMyLnViKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQcmVkIFE2X1FfdmNtcF9ndG9yX1FWdWJWdWIoSFZYX1ZlY3RvclByZWQgUXgsIEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUV92Y21wX2d0b3JfUVZ1YlZ1YiBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmd0dWJfb3IpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFF4NF49dmNtcC5ndChWdTMyLnViLFZ2MzIudWIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclByZWQgUTZfUV92Y21wX2d0eGFjY19RVnViVnViKEhWWF9WZWN0b3JQcmVkIFF4LCBIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1FfdmNtcF9ndHhhY2NfUVZ1YlZ1YiBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmd0dWJfeG9yKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBRZDQ9dmNtcC5ndChWdTMyLnVoLFZ2MzIudWgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclByZWQgUTZfUV92Y21wX2d0X1Z1aFZ1aChIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1FfdmNtcF9ndF9WdWhWdWggX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndHVoKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBReDQmPXZjbXAuZ3QoVnUzMi51aCxWdjMyLnVoKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQcmVkIFE2X1FfdmNtcF9ndGFuZF9RVnVoVnVoKEhWWF9WZWN0b3JQcmVkIFF4LCBIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1FfdmNtcF9ndGFuZF9RVnVoVnVoIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R1aF9hbmQpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFF4NHw9dmNtcC5ndChWdTMyLnVoLFZ2MzIudWgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclByZWQgUTZfUV92Y21wX2d0b3JfUVZ1aFZ1aChIVlhfVmVjdG9yUHJlZCBReCwgSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkEKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9RX3ZjbXBfZ3Rvcl9RVnVoVnVoIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R1aF9vcikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUXg0Xj12Y21wLmd0KFZ1MzIudWgsVnYzMi51aCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUHJlZCBRNl9RX3ZjbXBfZ3R4YWNjX1FWdWhWdWgoSFZYX1ZlY3RvclByZWQgUXgsIEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUV92Y21wX2d0eGFjY19RVnVoVnVoIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R1aF94b3IpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFFkND12Y21wLmd0KFZ1MzIudXcsVnYzMi51dykKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUHJlZCBRNl9RX3ZjbXBfZ3RfVnV3VnV3KEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUV92Y21wX2d0X1Z1d1Z1dyBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmd0dXcpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFF4NCY9dmNtcC5ndChWdTMyLnV3LFZ2MzIudXcpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclByZWQgUTZfUV92Y21wX2d0YW5kX1FWdXdWdXcoSFZYX1ZlY3RvclByZWQgUXgsIEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUV92Y21wX2d0YW5kX1FWdXdWdXcgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndHV3X2FuZCkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUXg0fD12Y21wLmd0KFZ1MzIudXcsVnYzMi51dykKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUHJlZCBRNl9RX3ZjbXBfZ3Rvcl9RVnV3VnV3KEhWWF9WZWN0b3JQcmVkIFF4LCBIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1FfdmNtcF9ndG9yX1FWdXdWdXcgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndHV3X29yKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBReDRePXZjbXAuZ3QoVnUzMi51dyxWdjMyLnV3KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQcmVkIFE2X1FfdmNtcF9ndHhhY2NfUVZ1d1Z1dyhIVlhfVmVjdG9yUHJlZCBReCwgSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkEKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9RX3ZjbXBfZ3R4YWNjX1FWdXdWdXcgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndHV3X3hvcikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUWQ0PXZjbXAuZ3QoVnUzMi53LFZ2MzIudykKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUHJlZCBRNl9RX3ZjbXBfZ3RfVndWdyhIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1FfdmNtcF9ndF9Wd1Z3IF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R3KQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBReDQmPXZjbXAuZ3QoVnUzMi53LFZ2MzIudykKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUHJlZCBRNl9RX3ZjbXBfZ3RhbmRfUVZ3VncoSFZYX1ZlY3RvclByZWQgUXgsIEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUV92Y21wX2d0YW5kX1FWd1Z3IF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R3X2FuZCkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUXg0fD12Y21wLmd0KFZ1MzIudyxWdjMyLncpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclByZWQgUTZfUV92Y21wX2d0b3JfUVZ3VncoSFZYX1ZlY3RvclByZWQgUXgsIEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUV92Y21wX2d0b3JfUVZ3VncgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndHdfb3IpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFF4NF49dmNtcC5ndChWdTMyLncsVnYzMi53KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQcmVkIFE2X1FfdmNtcF9ndHhhY2NfUVZ3VncoSFZYX1ZlY3RvclByZWQgUXgsIEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfUV92Y21wX2d0eGFjY19RVndWdyBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmd0d194b3IpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZ4MzIudz12aW5zZXJ0KFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9Wd192aW5zZXJ0X1Z3UihIVlhfVmVjdG9yIFZ4LCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZYX0xBVEUKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVndfdmluc2VydF9Wd1IgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZpbnNlcnR3cikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMj12bGFsaWduKFZ1MzIsVnYzMixSdDgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WX3ZsYWxpZ25fVlZSKEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlAKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WX3ZsYWxpZ25fVlZSIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92bGFsaWduYikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMj12bGFsaWduKFZ1MzIsVnYzMiwjdTMpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WX3ZsYWxpZ25fVlZJKEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYsIFdvcmQzMiBJdTMpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZQCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVl92bGFsaWduX1ZWSSBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmxhbGlnbmJpKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLnVoPXZsc3IoVnUzMi51aCxSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVnVoX3Zsc3JfVnVoUihIVlhfVmVjdG9yIFZ1LCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZTCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVnVoX3Zsc3JfVnVoUiBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmxzcmgpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIuaD12bHNyKFZ1MzIuaCxWdjMyLmgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WaF92bHNyX1ZoVmgoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlMKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WaF92bHNyX1ZoVmggX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zsc3JodikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi51dz12bHNyKFZ1MzIudXcsUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1Z1d192bHNyX1Z1d1IoSFZYX1ZlY3RvciBWdSwgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WUwogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Z1d192bHNyX1Z1d1IgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zsc3J3KQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLnc9dmxzcihWdTMyLncsVnYzMi53KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVndfdmxzcl9Wd1Z3KEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZTCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVndfdmxzcl9Wd1Z3IF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92bHNyd3YpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIuYj12bHV0MzIoVnUzMi5iLFZ2MzIuYixSdDgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WYl92bHV0MzJfVmJWYlIoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdiwgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WUAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1ZiX3ZsdXQzMl9WYlZiUiBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmx1dHZ2YikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVngzMi5ifD12bHV0MzIoVnUzMi5iLFZ2MzIuYixSdDgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WYl92bHV0MzJvcl9WYlZiVmJSKEhWWF9WZWN0b3IgVngsIEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlBfVlMKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WYl92bHV0MzJvcl9WYlZiVmJSIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92bHV0dnZiX29yYWNjKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZGQzMi5oPXZsdXQxNihWdTMyLmIsVnYzMi5oLFJ0OCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUGFpciBRNl9XaF92bHV0MTZfVmJWaFIoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdiwgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WUF9WUwogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1doX3ZsdXQxNl9WYlZoUiBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmx1dHZ3aCkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVnh4MzIuaHw9dmx1dDE2KFZ1MzIuYixWdjMyLmgsUnQ4KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQYWlyIFE2X1doX3ZsdXQxNm9yX1doVmJWaFIoSFZYX1ZlY3RvclBhaXIgVnh4LCBIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2LCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZQX1ZTCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfV2hfdmx1dDE2b3JfV2hWYlZoUiBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmx1dHZ3aF9vcmFjYykKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi5oPXZtYXgoVnUzMi5oLFZ2MzIuaCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1ZoX3ZtYXhfVmhWaChIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1ZoX3ZtYXhfVmhWaCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdm1heGgpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIudWI9dm1heChWdTMyLnViLFZ2MzIudWIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WdWJfdm1heF9WdWJWdWIoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkEKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WdWJfdm1heF9WdWJWdWIgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtYXh1YikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi51aD12bWF4KFZ1MzIudWgsVnYzMi51aCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1Z1aF92bWF4X1Z1aFZ1aChIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Z1aF92bWF4X1Z1aFZ1aCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdm1heHVoKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLnc9dm1heChWdTMyLncsVnYzMi53KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVndfdm1heF9Wd1Z3KEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVndfdm1heF9Wd1Z3IF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92bWF4dykKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi5oPXZtaW4oVnUzMi5oLFZ2MzIuaCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1ZoX3ZtaW5fVmhWaChIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1ZoX3ZtaW5fVmhWaCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdm1pbmgpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIudWI9dm1pbihWdTMyLnViLFZ2MzIudWIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WdWJfdm1pbl9WdWJWdWIoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkEKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WdWJfdm1pbl9WdWJWdWIgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtaW51YikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi51aD12bWluKFZ1MzIudWgsVnYzMi51aCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1Z1aF92bWluX1Z1aFZ1aChIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Z1aF92bWluX1Z1aFZ1aCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdm1pbnVoKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLnc9dm1pbihWdTMyLncsVnYzMi53KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVndfdm1pbl9Wd1Z3KEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVndfdm1pbl9Wd1Z3IF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92bWludykKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmRkMzIuaD12bXBhKFZ1dTMyLnViLFJ0MzIuYikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUGFpciBRNl9XaF92bXBhX1d1YlJiKEhWWF9WZWN0b3JQYWlyIFZ1dSwgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WWF9EVgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9XaF92bXBhX1d1YlJiIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXBhYnVzKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWeHgzMi5oKz12bXBhKFZ1dTMyLnViLFJ0MzIuYikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUGFpciBRNl9XaF92bXBhYWNjX1doV3ViUmIoSFZYX1ZlY3RvclBhaXIgVnh4LCBIVlhfVmVjdG9yUGFpciBWdXUsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlhfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfV2hfdm1wYWFjY19XaFd1YlJiIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXBhYnVzX2FjYykKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmRkMzIuaD12bXBhKFZ1dTMyLnViLFZ2djMyLmIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclBhaXIgUTZfV2hfdm1wYV9XdWJXYihIVlhfVmVjdG9yUGFpciBWdXUsIEhWWF9WZWN0b3JQYWlyIFZ2dikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlhfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfV2hfdm1wYV9XdWJXYiBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdm1wYWJ1c3YpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkZDMyLmg9dm1wYShWdXUzMi51YixWdnYzMi51YikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUGFpciBRNl9XaF92bXBhX1d1Yld1YihIVlhfVmVjdG9yUGFpciBWdXUsIEhWWF9WZWN0b3JQYWlyIFZ2dikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlhfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfV2hfdm1wYV9XdWJXdWIgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcGFidXV2KQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZGQzMi53PXZtcGEoVnV1MzIuaCxSdDMyLmIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclBhaXIgUTZfV3dfdm1wYV9XaFJiKEhWWF9WZWN0b3JQYWlyIFZ1dSwgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WWF9EVgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9Xd192bXBhX1doUmIgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcGFoYikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVnh4MzIudys9dm1wYShWdXUzMi5oLFJ0MzIuYikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUGFpciBRNl9Xd192bXBhYWNjX1d3V2hSYihIVlhfVmVjdG9yUGFpciBWeHgsIEhWWF9WZWN0b3JQYWlyIFZ1dSwgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WWF9EVgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9Xd192bXBhYWNjX1d3V2hSYiBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdm1wYWhiX2FjYykKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmRkMzIuaD12bXB5KFZ1MzIudWIsUnQzMi5iKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQYWlyIFE2X1doX3ZtcHlfVnViUmIoSFZYX1ZlY3RvciBWdSwgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WWF9EVgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9XaF92bXB5X1Z1YlJiIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5YnVzKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWeHgzMi5oKz12bXB5KFZ1MzIudWIsUnQzMi5iKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQYWlyIFE2X1doX3ZtcHlhY2NfV2hWdWJSYihIVlhfVmVjdG9yUGFpciBWeHgsIEhWWF9WZWN0b3IgVnUsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlhfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfV2hfdm1weWFjY19XaFZ1YlJiIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5YnVzX2FjYykKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmRkMzIuaD12bXB5KFZ1MzIudWIsVnYzMi5iKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQYWlyIFE2X1doX3ZtcHlfVnViVmIoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlhfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfV2hfdm1weV9WdWJWYiBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdm1weWJ1c3YpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZ4eDMyLmgrPXZtcHkoVnUzMi51YixWdjMyLmIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclBhaXIgUTZfV2hfdm1weWFjY19XaFZ1YlZiKEhWWF9WZWN0b3JQYWlyIFZ4eCwgSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlhfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfV2hfdm1weWFjY19XaFZ1YlZiIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5YnVzdl9hY2MpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkZDMyLmg9dm1weShWdTMyLmIsVnYzMi5iKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQYWlyIFE2X1doX3ZtcHlfVmJWYihIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WWF9EVgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9XaF92bXB5X1ZiVmIgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlidikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVnh4MzIuaCs9dm1weShWdTMyLmIsVnYzMi5iKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQYWlyIFE2X1doX3ZtcHlhY2NfV2hWYlZiKEhWWF9WZWN0b3JQYWlyIFZ4eCwgSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlhfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfV2hfdm1weWFjY19XaFZiVmIgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlidl9hY2MpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIudz12bXB5ZShWdTMyLncsVnYzMi51aCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1Z3X3ZtcHllX1Z3VnVoKEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZYX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Z3X3ZtcHllX1Z3VnVoIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5ZXd1aCkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmRkMzIudz12bXB5KFZ1MzIuaCxSdDMyLmgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclBhaXIgUTZfV3dfdm1weV9WaFJoKEhWWF9WZWN0b3IgVnUsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlhfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfV3dfdm1weV9WaFJoIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aCkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVnh4MzIudys9dm1weShWdTMyLmgsUnQzMi5oKTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUGFpciBRNl9Xd192bXB5YWNjX1d3VmhSaF9zYXQoSFZYX1ZlY3RvclBhaXIgVnh4LCBIVlhfVmVjdG9yIFZ1LCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZYX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1d3X3ZtcHlhY2NfV3dWaFJoX3NhdCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdm1weWhzYXRfYWNjKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLmg9dm1weShWdTMyLmgsUnQzMi5oKTo8PDE6cm5kOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVmhfdm1weV9WaFJoX3MxX3JuZF9zYXQoSFZYX1ZlY3RvciBWdSwgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WWF9EVgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WaF92bXB5X1ZoUmhfczFfcm5kX3NhdCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdm1weWhzcnMpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIuaD12bXB5KFZ1MzIuaCxSdDMyLmgpOjw8MTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1ZoX3ZtcHlfVmhSaF9zMV9zYXQoSFZYX1ZlY3RvciBWdSwgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WWF9EVgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WaF92bXB5X1ZoUmhfczFfc2F0IF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aHNzKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZGQzMi53PXZtcHkoVnUzMi5oLFZ2MzIudWgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclBhaXIgUTZfV3dfdm1weV9WaFZ1aChIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WWF9EVgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9Xd192bXB5X1ZoVnVoIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aHVzKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWeHgzMi53Kz12bXB5KFZ1MzIuaCxWdjMyLnVoKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQYWlyIFE2X1d3X3ZtcHlhY2NfV3dWaFZ1aChIVlhfVmVjdG9yUGFpciBWeHgsIEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZYX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1d3X3ZtcHlhY2NfV3dWaFZ1aCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdm1weWh1c19hY2MpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkZDMyLnc9dm1weShWdTMyLmgsVnYzMi5oKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQYWlyIFE2X1d3X3ZtcHlfVmhWaChIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WWF9EVgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9Xd192bXB5X1ZoVmggX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlodikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVnh4MzIudys9dm1weShWdTMyLmgsVnYzMi5oKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQYWlyIFE2X1d3X3ZtcHlhY2NfV3dWaFZoKEhWWF9WZWN0b3JQYWlyIFZ4eCwgSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlhfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfV3dfdm1weWFjY19Xd1ZoVmggX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlodl9hY2MpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIuaD12bXB5KFZ1MzIuaCxWdjMyLmgpOjw8MTpybmQ6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WaF92bXB5X1ZoVmhfczFfcm5kX3NhdChIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WWF9EVgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WaF92bXB5X1ZoVmhfczFfcm5kX3NhdCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdm1weWh2c3JzKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLnc9dm1weWllbyhWdTMyLmgsVnYzMi5oKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVndfdm1weWllb19WaFZoKEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZYCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Z3X3ZtcHlpZW9fVmhWaCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdm1weWllb2gpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZ4MzIudys9dm1weWllKFZ1MzIudyxWdjMyLmgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9Wd192bXB5aWVhY2NfVndWd1ZoKEhWWF9WZWN0b3IgVngsIEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZYX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Z3X3ZtcHlpZWFjY19Wd1Z3VmggX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlpZXdoX2FjYykKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi53PXZtcHlpZShWdTMyLncsVnYzMi51aCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1Z3X3ZtcHlpZV9Wd1Z1aChIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WWF9EVgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9Wd192bXB5aWVfVndWdWggX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlpZXd1aCkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVngzMi53Kz12bXB5aWUoVnUzMi53LFZ2MzIudWgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9Wd192bXB5aWVhY2NfVndWd1Z1aChIVlhfVmVjdG9yIFZ4LCBIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WWF9EVgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9Wd192bXB5aWVhY2NfVndWd1Z1aCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdm1weWlld3VoX2FjYykKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi5oPXZtcHlpKFZ1MzIuaCxWdjMyLmgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WaF92bXB5aV9WaFZoKEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZYX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1ZoX3ZtcHlpX1ZoVmggX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlpaCkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVngzMi5oKz12bXB5aShWdTMyLmgsVnYzMi5oKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVmhfdm1weWlhY2NfVmhWaFZoKEhWWF9WZWN0b3IgVngsIEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZYX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1ZoX3ZtcHlpYWNjX1ZoVmhWaCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdm1weWloX2FjYykKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi5oPXZtcHlpKFZ1MzIuaCxSdDMyLmIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WaF92bXB5aV9WaFJiKEhWWF9WZWN0b3IgVnUsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlgKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVmhfdm1weWlfVmhSYiBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdm1weWloYikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVngzMi5oKz12bXB5aShWdTMyLmgsUnQzMi5iKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVmhfdm1weWlhY2NfVmhWaFJiKEhWWF9WZWN0b3IgVngsIEhWWF9WZWN0b3IgVnUsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlgKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVmhfdm1weWlhY2NfVmhWaFJiIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aWhiX2FjYykKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi53PXZtcHlpbyhWdTMyLncsVnYzMi5oKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVndfdm1weWlvX1Z3VmgoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlhfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVndfdm1weWlvX1Z3VmggX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlpb3doKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLnc9dm1weWkoVnUzMi53LFJ0MzIuYikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1Z3X3ZtcHlpX1Z3UmIoSFZYX1ZlY3RvciBWdSwgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WWAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9Wd192bXB5aV9Wd1JiIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aXdiKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWeDMyLncrPXZtcHlpKFZ1MzIudyxSdDMyLmIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9Wd192bXB5aWFjY19Wd1Z3UmIoSFZYX1ZlY3RvciBWeCwgSFZYX1ZlY3RvciBWdSwgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WWAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9Wd192bXB5aWFjY19Wd1Z3UmIgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlpd2JfYWNjKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLnc9dm1weWkoVnUzMi53LFJ0MzIuaCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1Z3X3ZtcHlpX1Z3UmgoSFZYX1ZlY3RvciBWdSwgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WWF9EVgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9Wd192bXB5aV9Wd1JoIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aXdoKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWeDMyLncrPXZtcHlpKFZ1MzIudyxSdDMyLmgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9Wd192bXB5aWFjY19Wd1Z3UmgoSFZYX1ZlY3RvciBWeCwgSFZYX1ZlY3RvciBWdSwgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WWF9EVgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9Wd192bXB5aWFjY19Wd1Z3UmggX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlpd2hfYWNjKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLnc9dm1weW8oVnUzMi53LFZ2MzIuaCk6PDwxOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVndfdm1weW9fVndWaF9zMV9zYXQoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlhfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVndfdm1weW9fVndWaF9zMV9zYXQgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlvd2gpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIudz12bXB5byhWdTMyLncsVnYzMi5oKTo8PDE6cm5kOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVndfdm1weW9fVndWaF9zMV9ybmRfc2F0KEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZYX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Z3X3ZtcHlvX1Z3VmhfczFfcm5kX3NhdCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdm1weW93aF9ybmQpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZ4MzIudys9dm1weW8oVnUzMi53LFZ2MzIuaCk6PDwxOnJuZDpzYXQ6c2hpZnQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1Z3X3ZtcHlvYWNjX1Z3VndWaF9zMV9ybmRfc2F0X3NoaWZ0KEhWWF9WZWN0b3IgVngsIEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZYX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Z3X3ZtcHlvYWNjX1Z3VndWaF9zMV9ybmRfc2F0X3NoaWZ0IF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5b3doX3JuZF9zYWNjKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWeDMyLncrPXZtcHlvKFZ1MzIudyxWdjMyLmgpOjw8MTpzYXQ6c2hpZnQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1Z3X3ZtcHlvYWNjX1Z3VndWaF9zMV9zYXRfc2hpZnQoSFZYX1ZlY3RvciBWeCwgSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlhfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVndfdm1weW9hY2NfVndWd1ZoX3MxX3NhdF9zaGlmdCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdm1weW93aF9zYWNjKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZGQzMi51aD12bXB5KFZ1MzIudWIsUnQzMi51YikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUGFpciBRNl9XdWhfdm1weV9WdWJSdWIoSFZYX1ZlY3RvciBWdSwgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WWF9EVgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9XdWhfdm1weV9WdWJSdWIgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHl1YikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVnh4MzIudWgrPXZtcHkoVnUzMi51YixSdDMyLnViKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQYWlyIFE2X1d1aF92bXB5YWNjX1d1aFZ1YlJ1YihIVlhfVmVjdG9yUGFpciBWeHgsIEhWWF9WZWN0b3IgVnUsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlhfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfV3VoX3ZtcHlhY2NfV3VoVnViUnViIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5dWJfYWNjKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZGQzMi51aD12bXB5KFZ1MzIudWIsVnYzMi51YikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUGFpciBRNl9XdWhfdm1weV9WdWJWdWIoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlhfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfV3VoX3ZtcHlfVnViVnViIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5dWJ2KQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWeHgzMi51aCs9dm1weShWdTMyLnViLFZ2MzIudWIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclBhaXIgUTZfV3VoX3ZtcHlhY2NfV3VoVnViVnViKEhWWF9WZWN0b3JQYWlyIFZ4eCwgSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlhfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfV3VoX3ZtcHlhY2NfV3VoVnViVnViIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5dWJ2X2FjYykKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmRkMzIudXc9dm1weShWdTMyLnVoLFJ0MzIudWgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclBhaXIgUTZfV3V3X3ZtcHlfVnVoUnVoKEhWWF9WZWN0b3IgVnUsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlhfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfV3V3X3ZtcHlfVnVoUnVoIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5dWgpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZ4eDMyLnV3Kz12bXB5KFZ1MzIudWgsUnQzMi51aCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUGFpciBRNl9XdXdfdm1weWFjY19XdXdWdWhSdWgoSFZYX1ZlY3RvclBhaXIgVnh4LCBIVlhfVmVjdG9yIFZ1LCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZYX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1d1d192bXB5YWNjX1d1d1Z1aFJ1aCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdm1weXVoX2FjYykKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmRkMzIudXc9dm1weShWdTMyLnVoLFZ2MzIudWgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclBhaXIgUTZfV3V3X3ZtcHlfVnVoVnVoKEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZYX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1d1d192bXB5X1Z1aFZ1aCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdm1weXVodikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVnh4MzIudXcrPXZtcHkoVnUzMi51aCxWdjMyLnVoKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQYWlyIFE2X1d1d192bXB5YWNjX1d1d1Z1aFZ1aChIVlhfVmVjdG9yUGFpciBWeHgsIEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZYX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1d1d192bXB5YWNjX1d1d1Z1aFZ1aCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdm1weXVodl9hY2MpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzI9dm11eChRdDQsVnUzMixWdjMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVl92bXV4X1FWVihIVlhfVmVjdG9yUHJlZCBRdCwgSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkEKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WX3ZtdXhfUVZWIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXV4KQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLmg9dm5hdmcoVnUzMi5oLFZ2MzIuaCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1ZoX3ZuYXZnX1ZoVmgoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkEKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WaF92bmF2Z19WaFZoIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92bmF2Z2gpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIuYj12bmF2ZyhWdTMyLnViLFZ2MzIudWIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WYl92bmF2Z19WdWJWdWIoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkEKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WYl92bmF2Z19WdWJWdWIgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZuYXZndWIpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIudz12bmF2ZyhWdTMyLncsVnYzMi53KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVndfdm5hdmdfVndWdyhIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Z3X3ZuYXZnX1Z3VncgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZuYXZndykKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi5oPXZub3JtYW10KFZ1MzIuaCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1ZoX3Zub3JtYW10X1ZoKEhWWF9WZWN0b3IgVnUpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZTCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVmhfdm5vcm1hbXRfVmggX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zub3JtYW10aCkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi53PXZub3JtYW10KFZ1MzIudykKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1Z3X3Zub3JtYW10X1Z3KEhWWF9WZWN0b3IgVnUpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZTCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVndfdm5vcm1hbXRfVncgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zub3JtYW10dykKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMj12bm90KFZ1MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WX3Zub3RfVihIVlhfVmVjdG9yIFZ1KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Zfdm5vdF9WIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92bm90KQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyPXZvcihWdTMyLFZ2MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WX3Zvcl9WVihIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Zfdm9yX1ZWIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92b3IpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIuYj12cGFja2UoVnUzMi5oLFZ2MzIuaCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1ZiX3ZwYWNrZV9WaFZoKEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZQCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVmJfdnBhY2tlX1ZoVmggX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZwYWNrZWIpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIuaD12cGFja2UoVnUzMi53LFZ2MzIudykKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1ZoX3ZwYWNrZV9Wd1Z3KEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZQCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVmhfdnBhY2tlX1Z3VncgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZwYWNrZWgpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIuYj12cGFjayhWdTMyLmgsVnYzMi5oKTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1ZiX3ZwYWNrX1ZoVmhfc2F0KEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZQCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVmJfdnBhY2tfVmhWaF9zYXQgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZwYWNraGJfc2F0KQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLnViPXZwYWNrKFZ1MzIuaCxWdjMyLmgpOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVnViX3ZwYWNrX1ZoVmhfc2F0KEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZQCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVnViX3ZwYWNrX1ZoVmhfc2F0IF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92cGFja2h1Yl9zYXQpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIuYj12cGFja28oVnUzMi5oLFZ2MzIuaCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1ZiX3ZwYWNrb19WaFZoKEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZQCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVmJfdnBhY2tvX1ZoVmggX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZwYWNrb2IpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIuaD12cGFja28oVnUzMi53LFZ2MzIudykKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1ZoX3ZwYWNrb19Wd1Z3KEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZQCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVmhfdnBhY2tvX1Z3VncgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZwYWNrb2gpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIuaD12cGFjayhWdTMyLncsVnYzMi53KTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1ZoX3ZwYWNrX1Z3Vndfc2F0KEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZQCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVmhfdnBhY2tfVndWd19zYXQgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZwYWNrd2hfc2F0KQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLnVoPXZwYWNrKFZ1MzIudyxWdjMyLncpOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVnVoX3ZwYWNrX1Z3Vndfc2F0KEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZQCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVnVoX3ZwYWNrX1Z3Vndfc2F0IF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92cGFja3d1aF9zYXQpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIuaD12cG9wY291bnQoVnUzMi5oKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVmhfdnBvcGNvdW50X1ZoKEhWWF9WZWN0b3IgVnUpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZTCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVmhfdnBvcGNvdW50X1ZoIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92cG9wY291bnRoKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyPXZyZGVsdGEoVnUzMixWdjMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVl92cmRlbHRhX1ZWKEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZQCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVl92cmRlbHRhX1ZWIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92cmRlbHRhKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLnc9dnJtcHkoVnUzMi51YixSdDMyLmIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9Wd192cm1weV9WdWJSYihIVlhfVmVjdG9yIFZ1LCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZYCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Z3X3ZybXB5X1Z1YlJiIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weWJ1cykKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVngzMi53Kz12cm1weShWdTMyLnViLFJ0MzIuYikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1Z3X3ZybXB5YWNjX1Z3VnViUmIoSFZYX1ZlY3RvciBWeCwgSFZYX1ZlY3RvciBWdSwgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WWAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9Wd192cm1weWFjY19Wd1Z1YlJiIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weWJ1c19hY2MpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkZDMyLnc9dnJtcHkoVnV1MzIudWIsUnQzMi5iLCN1MSkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUGFpciBRNl9Xd192cm1weV9XdWJSYkkoSFZYX1ZlY3RvclBhaXIgVnV1LCBXb3JkMzIgUnQsIFdvcmQzMiBJdTEpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZYX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1d3X3ZybXB5X1d1YlJiSSBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdnJtcHlidXNpKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWeHgzMi53Kz12cm1weShWdXUzMi51YixSdDMyLmIsI3UxKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQYWlyIFE2X1d3X3ZybXB5YWNjX1d3V3ViUmJJKEhWWF9WZWN0b3JQYWlyIFZ4eCwgSFZYX1ZlY3RvclBhaXIgVnV1LCBXb3JkMzIgUnQsIFdvcmQzMiBJdTEpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZYX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1d3X3ZybXB5YWNjX1d3V3ViUmJJIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weWJ1c2lfYWNjKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLnc9dnJtcHkoVnUzMi51YixWdjMyLmIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9Wd192cm1weV9WdWJWYihIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WWAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9Wd192cm1weV9WdWJWYiBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdnJtcHlidXN2KQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWeDMyLncrPXZybXB5KFZ1MzIudWIsVnYzMi5iKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVndfdnJtcHlhY2NfVndWdWJWYihIVlhfVmVjdG9yIFZ4LCBIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WWF9EVgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9Wd192cm1weWFjY19Wd1Z1YlZiIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weWJ1c3ZfYWNjKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLnc9dnJtcHkoVnUzMi5iLFZ2MzIuYikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1Z3X3ZybXB5X1ZiVmIoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlgKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVndfdnJtcHlfVmJWYiBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdnJtcHlidikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVngzMi53Kz12cm1weShWdTMyLmIsVnYzMi5iKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVndfdnJtcHlhY2NfVndWYlZiKEhWWF9WZWN0b3IgVngsIEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZYX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Z3X3ZybXB5YWNjX1Z3VmJWYiBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdnJtcHlidl9hY2MpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIudXc9dnJtcHkoVnUzMi51YixSdDMyLnViKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVnV3X3ZybXB5X1Z1YlJ1YihIVlhfVmVjdG9yIFZ1LCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZYCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Z1d192cm1weV9WdWJSdWIgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5dWIpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZ4MzIudXcrPXZybXB5KFZ1MzIudWIsUnQzMi51YikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1Z1d192cm1weWFjY19WdXdWdWJSdWIoSFZYX1ZlY3RvciBWeCwgSFZYX1ZlY3RvciBWdSwgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WWAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WdXdfdnJtcHlhY2NfVnV3VnViUnViIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weXViX2FjYykKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmRkMzIudXc9dnJtcHkoVnV1MzIudWIsUnQzMi51YiwjdTEpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclBhaXIgUTZfV3V3X3ZybXB5X1d1YlJ1YkkoSFZYX1ZlY3RvclBhaXIgVnV1LCBXb3JkMzIgUnQsIFdvcmQzMiBJdTEpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZYX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1d1d192cm1weV9XdWJSdWJJIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weXViaSkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVnh4MzIudXcrPXZybXB5KFZ1dTMyLnViLFJ0MzIudWIsI3UxKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQYWlyIFE2X1d1d192cm1weWFjY19XdXdXdWJSdWJJKEhWWF9WZWN0b3JQYWlyIFZ4eCwgSFZYX1ZlY3RvclBhaXIgVnV1LCBXb3JkMzIgUnQsIFdvcmQzMiBJdTEpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZYX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1d1d192cm1weWFjY19XdXdXdWJSdWJJIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weXViaV9hY2MpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIudXc9dnJtcHkoVnUzMi51YixWdjMyLnViKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVnV3X3ZybXB5X1Z1YlZ1YihIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WWAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WdXdfdnJtcHlfVnViVnViIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weXVidikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVngzMi51dys9dnJtcHkoVnUzMi51YixWdjMyLnViKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVnV3X3ZybXB5YWNjX1Z1d1Z1YlZ1YihIVlhfVmVjdG9yIFZ4LCBIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WWF9EVgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WdXdfdnJtcHlhY2NfVnV3VnViVnViIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weXVidl9hY2MpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzI9dnJvcihWdTMyLFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WX3Zyb3JfVlIoSFZYX1ZlY3RvciBWdSwgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WUAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1ZfdnJvcl9WUiBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdnJvcikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi5iPXZyb3VuZChWdTMyLmgsVnYzMi5oKTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1ZiX3Zyb3VuZF9WaFZoX3NhdChIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WUwogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1ZiX3Zyb3VuZF9WaFZoX3NhdCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdnJvdW5kaGIpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIudWI9dnJvdW5kKFZ1MzIuaCxWdjMyLmgpOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVnViX3Zyb3VuZF9WaFZoX3NhdChIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WUwogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Z1Yl92cm91bmRfVmhWaF9zYXQgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zyb3VuZGh1YikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi5oPXZyb3VuZChWdTMyLncsVnYzMi53KTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1ZoX3Zyb3VuZF9Wd1Z3X3NhdChIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WUwogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1ZoX3Zyb3VuZF9Wd1Z3X3NhdCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdnJvdW5kd2gpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIudWg9dnJvdW5kKFZ1MzIudyxWdjMyLncpOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVnVoX3Zyb3VuZF9Wd1Z3X3NhdChIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WUwogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Z1aF92cm91bmRfVndWd19zYXQgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zyb3VuZHd1aCkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmRkMzIudXc9dnJzYWQoVnV1MzIudWIsUnQzMi51YiwjdTEpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclBhaXIgUTZfV3V3X3Zyc2FkX1d1YlJ1YkkoSFZYX1ZlY3RvclBhaXIgVnV1LCBXb3JkMzIgUnQsIFdvcmQzMiBJdTEpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZYX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1d1d192cnNhZF9XdWJSdWJJIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92cnNhZHViaSkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVnh4MzIudXcrPXZyc2FkKFZ1dTMyLnViLFJ0MzIudWIsI3UxKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQYWlyIFE2X1d1d192cnNhZGFjY19XdXdXdWJSdWJJKEhWWF9WZWN0b3JQYWlyIFZ4eCwgSFZYX1ZlY3RvclBhaXIgVnV1LCBXb3JkMzIgUnQsIFdvcmQzMiBJdTEpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZYX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1d1d192cnNhZGFjY19XdXdXdWJSdWJJIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92cnNhZHViaV9hY2MpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIudWI9dnNhdChWdTMyLmgsVnYzMi5oKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVnViX3ZzYXRfVmhWaChIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Z1Yl92c2F0X1ZoVmggX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzYXRodWIpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIuaD12c2F0KFZ1MzIudyxWdjMyLncpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WaF92c2F0X1Z3VncoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkEKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WaF92c2F0X1Z3VncgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzYXR3aCkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmRkMzIuaD12c3h0KFZ1MzIuYikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUGFpciBRNl9XaF92c3h0X1ZiKEhWWF9WZWN0b3IgVnUpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfV2hfdnN4dF9WYiBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdnNiKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZGQzMi53PXZzeHQoVnUzMi5oKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQYWlyIFE2X1d3X3ZzeHRfVmgoSFZYX1ZlY3RvciBWdSkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkFfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9Xd192c3h0X1ZoIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2gpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIuaD12c2h1ZmZlKFZ1MzIuaCxWdjMyLmgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WaF92c2h1ZmZlX1ZoVmgoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkEKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WaF92c2h1ZmZlX1ZoVmggX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzaHVmZWgpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIuYj12c2h1ZmYoVnUzMi5iKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVmJfdnNodWZmX1ZiKEhWWF9WZWN0b3IgVnUpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZQCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVmJfdnNodWZmX1ZiIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2h1ZmZiKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLmI9dnNodWZmZShWdTMyLmIsVnYzMi5iKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVmJfdnNodWZmZV9WYlZiKEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVmJfdnNodWZmZV9WYlZiIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2h1ZmZlYikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi5oPXZzaHVmZihWdTMyLmgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WaF92c2h1ZmZfVmgoSFZYX1ZlY3RvciBWdSkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlAKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WaF92c2h1ZmZfVmggX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzaHVmZmgpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIuYj12c2h1ZmZvKFZ1MzIuYixWdjMyLmIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WYl92c2h1ZmZvX1ZiVmIoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkEKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WYl92c2h1ZmZvX1ZiVmIgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzaHVmZm9iKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZGQzMj12c2h1ZmYoVnUzMixWdjMyLFJ0OCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUGFpciBRNl9XX3ZzaHVmZl9WVlIoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdiwgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WUF9WUwogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1dfdnNodWZmX1ZWUiBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdnNodWZmdmRkKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZGQzMi5iPXZzaHVmZm9lKFZ1MzIuYixWdjMyLmIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclBhaXIgUTZfV2JfdnNodWZmb2VfVmJWYihIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQV9EVgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1diX3ZzaHVmZm9lX1ZiVmIgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzaHVmb2ViKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZGQzMi5oPXZzaHVmZm9lKFZ1MzIuaCxWdjMyLmgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclBhaXIgUTZfV2hfdnNodWZmb2VfVmhWaChIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQV9EVgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1doX3ZzaHVmZm9lX1ZoVmggX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzaHVmb2VoKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLmg9dnNodWZmbyhWdTMyLmgsVnYzMi5oKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVmhfdnNodWZmb19WaFZoKEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVmhfdnNodWZmb19WaFZoIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2h1Zm9oKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLmI9dnN1YihWdTMyLmIsVnYzMi5iKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVmJfdnN1Yl9WYlZiKEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVmJfdnN1Yl9WYlZiIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3ViYikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmRkMzIuYj12c3ViKFZ1dTMyLmIsVnZ2MzIuYikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUGFpciBRNl9XYl92c3ViX1diV2IoSFZYX1ZlY3RvclBhaXIgVnV1LCBIVlhfVmVjdG9yUGFpciBWdnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfV2JfdnN1Yl9XYldiIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3ViYl9kdikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgaWYgKCFRdjQpIFZ4MzIuYi09VnUzMi5iCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WYl9jb25kbmFjX1FuVmJWYihIVlhfVmVjdG9yUHJlZCBRdiwgSFZYX1ZlY3RvciBWeCwgSFZYX1ZlY3RvciBWdSkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkEKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WYl9jb25kbmFjX1FuVmJWYiBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdnN1YmJucSkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgaWYgKFF2NCkgVngzMi5iLT1WdTMyLmIKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1ZiX2NvbmRuYWNfUVZiVmIoSFZYX1ZlY3RvclByZWQgUXYsIEhWWF9WZWN0b3IgVngsIEhWWF9WZWN0b3IgVnUpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVmJfY29uZG5hY19RVmJWYiBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdnN1YmJxKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLmg9dnN1YihWdTMyLmgsVnYzMi5oKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVmhfdnN1Yl9WaFZoKEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVmhfdnN1Yl9WaFZoIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3ViaCkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmRkMzIuaD12c3ViKFZ1dTMyLmgsVnZ2MzIuaCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUGFpciBRNl9XaF92c3ViX1doV2goSFZYX1ZlY3RvclBhaXIgVnV1LCBIVlhfVmVjdG9yUGFpciBWdnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfV2hfdnN1Yl9XaFdoIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3ViaF9kdikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgaWYgKCFRdjQpIFZ4MzIuaC09VnUzMi5oCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WaF9jb25kbmFjX1FuVmhWaChIVlhfVmVjdG9yUHJlZCBRdiwgSFZYX1ZlY3RvciBWeCwgSFZYX1ZlY3RvciBWdSkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkEKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WaF9jb25kbmFjX1FuVmhWaCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdnN1YmhucSkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgaWYgKFF2NCkgVngzMi5oLT1WdTMyLmgKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1ZoX2NvbmRuYWNfUVZoVmgoSFZYX1ZlY3RvclByZWQgUXYsIEhWWF9WZWN0b3IgVngsIEhWWF9WZWN0b3IgVnUpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVmhfY29uZG5hY19RVmhWaCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdnN1YmhxKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLmg9dnN1YihWdTMyLmgsVnYzMi5oKTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1ZoX3ZzdWJfVmhWaF9zYXQoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkEKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WaF92c3ViX1ZoVmhfc2F0IF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3ViaHNhdCkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmRkMzIuaD12c3ViKFZ1dTMyLmgsVnZ2MzIuaCk6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclBhaXIgUTZfV2hfdnN1Yl9XaFdoX3NhdChIVlhfVmVjdG9yUGFpciBWdXUsIEhWWF9WZWN0b3JQYWlyIFZ2dikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkFfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9XaF92c3ViX1doV2hfc2F0IF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3ViaHNhdF9kdikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmRkMzIudz12c3ViKFZ1MzIuaCxWdjMyLmgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclBhaXIgUTZfV3dfdnN1Yl9WaFZoKEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZYX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1d3X3ZzdWJfVmhWaCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdnN1Ymh3KQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZGQzMi5oPXZzdWIoVnUzMi51YixWdjMyLnViKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQYWlyIFE2X1doX3ZzdWJfVnViVnViKEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZYX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1doX3ZzdWJfVnViVnViIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3VidWJoKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLnViPXZzdWIoVnUzMi51YixWdjMyLnViKTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1Z1Yl92c3ViX1Z1YlZ1Yl9zYXQoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkEKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WdWJfdnN1Yl9WdWJWdWJfc2F0IF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3VidWJzYXQpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkZDMyLnViPXZzdWIoVnV1MzIudWIsVnZ2MzIudWIpOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQYWlyIFE2X1d1Yl92c3ViX1d1Yld1Yl9zYXQoSFZYX1ZlY3RvclBhaXIgVnV1LCBIVlhfVmVjdG9yUGFpciBWdnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfV3ViX3ZzdWJfV3ViV3ViX3NhdCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdnN1YnVic2F0X2R2KQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLnVoPXZzdWIoVnUzMi51aCxWdjMyLnVoKTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1Z1aF92c3ViX1Z1aFZ1aF9zYXQoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkEKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WdWhfdnN1Yl9WdWhWdWhfc2F0IF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3VidWhzYXQpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkZDMyLnVoPXZzdWIoVnV1MzIudWgsVnZ2MzIudWgpOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQYWlyIFE2X1d1aF92c3ViX1d1aFd1aF9zYXQoSFZYX1ZlY3RvclBhaXIgVnV1LCBIVlhfVmVjdG9yUGFpciBWdnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfV3VoX3ZzdWJfV3VoV3VoX3NhdCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdnN1YnVoc2F0X2R2KQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZGQzMi53PXZzdWIoVnUzMi51aCxWdjMyLnVoKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQYWlyIFE2X1d3X3ZzdWJfVnVoVnVoKEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZYX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1d3X3ZzdWJfVnVoVnVoIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3VidWh3KQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLnc9dnN1YihWdTMyLncsVnYzMi53KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVndfdnN1Yl9Wd1Z3KEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVndfdnN1Yl9Wd1Z3IF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3VidykKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmRkMzIudz12c3ViKFZ1dTMyLncsVnZ2MzIudykKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUGFpciBRNl9Xd192c3ViX1d3V3coSFZYX1ZlY3RvclBhaXIgVnV1LCBIVlhfVmVjdG9yUGFpciBWdnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfV3dfdnN1Yl9Xd1d3IF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3Vid19kdikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgaWYgKCFRdjQpIFZ4MzIudy09VnUzMi53CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9Wd19jb25kbmFjX1FuVndWdyhIVlhfVmVjdG9yUHJlZCBRdiwgSFZYX1ZlY3RvciBWeCwgSFZYX1ZlY3RvciBWdSkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkEKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9Wd19jb25kbmFjX1FuVndWdyBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdnN1YnducSkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgaWYgKFF2NCkgVngzMi53LT1WdTMyLncKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1Z3X2NvbmRuYWNfUVZ3VncoSFZYX1ZlY3RvclByZWQgUXYsIEhWWF9WZWN0b3IgVngsIEhWWF9WZWN0b3IgVnUpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVndfY29uZG5hY19RVndWdyBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdnN1YndxKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLnc9dnN1YihWdTMyLncsVnYzMi53KTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1Z3X3ZzdWJfVndWd19zYXQoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkEKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9Wd192c3ViX1Z3Vndfc2F0IF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3Vid3NhdCkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmRkMzIudz12c3ViKFZ1dTMyLncsVnZ2MzIudyk6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclBhaXIgUTZfV3dfdnN1Yl9Xd1d3X3NhdChIVlhfVmVjdG9yUGFpciBWdXUsIEhWWF9WZWN0b3JQYWlyIFZ2dikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkFfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9Xd192c3ViX1d3V3dfc2F0IF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3Vid3NhdF9kdikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmRkMzI9dnN3YXAoUXQ0LFZ1MzIsVnYzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUGFpciBRNl9XX3Zzd2FwX1FWVihIVlhfVmVjdG9yUHJlZCBRdCwgSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkFfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9XX3Zzd2FwX1FWViBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdnN3YXApCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkZDMyLmg9dnRtcHkoVnV1MzIuYixSdDMyLmIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclBhaXIgUTZfV2hfdnRtcHlfV2JSYihIVlhfVmVjdG9yUGFpciBWdXUsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlhfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfV2hfdnRtcHlfV2JSYiBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdnRtcHliKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWeHgzMi5oKz12dG1weShWdXUzMi5iLFJ0MzIuYikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUGFpciBRNl9XaF92dG1weWFjY19XaFdiUmIoSFZYX1ZlY3RvclBhaXIgVnh4LCBIVlhfVmVjdG9yUGFpciBWdXUsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlhfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfV2hfdnRtcHlhY2NfV2hXYlJiIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92dG1weWJfYWNjKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZGQzMi5oPXZ0bXB5KFZ1dTMyLnViLFJ0MzIuYikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUGFpciBRNl9XaF92dG1weV9XdWJSYihIVlhfVmVjdG9yUGFpciBWdXUsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlhfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfV2hfdnRtcHlfV3ViUmIgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Z0bXB5YnVzKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWeHgzMi5oKz12dG1weShWdXUzMi51YixSdDMyLmIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclBhaXIgUTZfV2hfdnRtcHlhY2NfV2hXdWJSYihIVlhfVmVjdG9yUGFpciBWeHgsIEhWWF9WZWN0b3JQYWlyIFZ1dSwgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WWF9EVgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9XaF92dG1weWFjY19XaFd1YlJiIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92dG1weWJ1c19hY2MpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkZDMyLnc9dnRtcHkoVnV1MzIuaCxSdDMyLmIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclBhaXIgUTZfV3dfdnRtcHlfV2hSYihIVlhfVmVjdG9yUGFpciBWdXUsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlhfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfV3dfdnRtcHlfV2hSYiBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdnRtcHloYikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVnh4MzIudys9dnRtcHkoVnV1MzIuaCxSdDMyLmIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclBhaXIgUTZfV3dfdnRtcHlhY2NfV3dXaFJiKEhWWF9WZWN0b3JQYWlyIFZ4eCwgSFZYX1ZlY3RvclBhaXIgVnV1LCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZYX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1d3X3Z0bXB5YWNjX1d3V2hSYiBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdnRtcHloYl9hY2MpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkZDMyLmg9dnVucGFjayhWdTMyLmIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclBhaXIgUTZfV2hfdnVucGFja19WYihIVlhfVmVjdG9yIFZ1KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WUF9WUwogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1doX3Z1bnBhY2tfVmIgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Z1bnBhY2tiKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZGQzMi53PXZ1bnBhY2soVnUzMi5oKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQYWlyIFE2X1d3X3Z1bnBhY2tfVmgoSFZYX1ZlY3RvciBWdSkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlBfVlMKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9Xd192dW5wYWNrX1ZoIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92dW5wYWNraCkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVnh4MzIuaHw9dnVucGFja28oVnUzMi5iKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQYWlyIFE2X1doX3Z1bnBhY2tvb3JfV2hWYihIVlhfVmVjdG9yUGFpciBWeHgsIEhWWF9WZWN0b3IgVnUpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZQX1ZTCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfV2hfdnVucGFja29vcl9XaFZiIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92dW5wYWNrb2IpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZ4eDMyLnd8PXZ1bnBhY2tvKFZ1MzIuaCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUGFpciBRNl9Xd192dW5wYWNrb29yX1d3VmgoSFZYX1ZlY3RvclBhaXIgVnh4LCBIVlhfVmVjdG9yIFZ1KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WUF9WUwogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1d3X3Z1bnBhY2tvb3JfV3dWaCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdnVucGFja29oKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZGQzMi51aD12dW5wYWNrKFZ1MzIudWIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclBhaXIgUTZfV3VoX3Z1bnBhY2tfVnViKEhWWF9WZWN0b3IgVnUpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZQX1ZTCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfV3VoX3Z1bnBhY2tfVnViIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92dW5wYWNrdWIpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkZDMyLnV3PXZ1bnBhY2soVnUzMi51aCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUGFpciBRNl9XdXdfdnVucGFja19WdWgoSFZYX1ZlY3RvciBWdSkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlBfVlMKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9XdXdfdnVucGFja19WdWggX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Z1bnBhY2t1aCkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMj12eG9yKFZ1MzIsVnYzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1Zfdnhvcl9WVihIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Zfdnhvcl9WViBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdnhvcikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYwICovCgojaWYgX19IVlhfQVJDSF9fID49IDYwCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmRkMzIudWg9dnp4dChWdTMyLnViKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQYWlyIFE2X1d1aF92enh0X1Z1YihIVlhfVmVjdG9yIFZ1KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQV9EVgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1d1aF92enh0X1Z1YiBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdnpiKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjAgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjAKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZGQzMi51dz12enh0KFZ1MzIudWgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclBhaXIgUTZfV3V3X3Z6eHRfVnVoKEhWWF9WZWN0b3IgVnUpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfV3V3X3Z6eHRfVnVoIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92emgpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MCAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIuYj12c3BsYXQoUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1ZiX3ZzcGxhdF9SKFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlhfTEFURQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WYl92c3BsYXRfUiBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfbHZzcGxhdGIpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MiAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIuaD12c3BsYXQoUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1ZoX3ZzcGxhdF9SKFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlhfTEFURQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WaF92c3BsYXRfUiBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfbHZzcGxhdGgpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MiAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFFkND12c2V0cTIoUnQzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUHJlZCBRNl9RX3ZzZXRxMl9SKFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlAKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9RX3ZzZXRxMl9SIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl9wcmVkX3NjYWxhcjJ2MikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYyICovCgojaWYgX19IVlhfQVJDSF9fID49IDYyCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgUWQ0LmI9dnNodWZmZShRczQuaCxRdDQuaCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUHJlZCBRNl9RYl92c2h1ZmZlX1FoUWgoSFZYX1ZlY3RvclByZWQgUXMsIEhWWF9WZWN0b3JQcmVkIFF0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQV9EVgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1FiX3ZzaHVmZmVfUWhRaCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfc2h1ZmZlcWgpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MiAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFFkNC5oPXZzaHVmZmUoUXM0LncsUXQ0LncpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclByZWQgUTZfUWhfdnNodWZmZV9Rd1F3KEhWWF9WZWN0b3JQcmVkIFFzLCBIVlhfVmVjdG9yUHJlZCBRdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkFfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9RaF92c2h1ZmZlX1F3UXcgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3NodWZmZXF3KQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjIgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjIKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLmI9dmFkZChWdTMyLmIsVnYzMi5iKTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1ZiX3ZhZGRfVmJWYl9zYXQoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkEKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WYl92YWRkX1ZiVmJfc2F0IF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkYnNhdCkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYyICovCgojaWYgX19IVlhfQVJDSF9fID49IDYyCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmRkMzIuYj12YWRkKFZ1dTMyLmIsVnZ2MzIuYik6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclBhaXIgUTZfV2JfdmFkZF9XYldiX3NhdChIVlhfVmVjdG9yUGFpciBWdXUsIEhWWF9WZWN0b3JQYWlyIFZ2dikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkFfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9XYl92YWRkX1diV2Jfc2F0IF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkYnNhdF9kdikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYyICovCgojaWYgX19IVlhfQVJDSF9fID49IDYyCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi53PXZhZGQoVnUzMi53LFZ2MzIudyxReDQpOmNhcnJ5CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9Wd192YWRkX1Z3VndRX2NhcnJ5KEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYsIEhWWF9WZWN0b3JQcmVkKiBReCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkEKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9Wd192YWRkX1Z3VndRX2NhcnJ5IF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkY2FycnkpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MiAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIuaD12YWRkKHZjbGIoVnUzMi5oKSxWdjMyLmgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WaF92YWRkX3ZjbGJfVmhWaChIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WUwogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1ZoX3ZhZGRfdmNsYl9WaFZoIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkY2xiaCkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYyICovCgojaWYgX19IVlhfQVJDSF9fID49IDYyCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi53PXZhZGQodmNsYihWdTMyLncpLFZ2MzIudykKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1Z3X3ZhZGRfdmNsYl9Wd1Z3KEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZTCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVndfdmFkZF92Y2xiX1Z3VncgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRjbGJ3KQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjIgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjIKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWeHgzMi53Kz12YWRkKFZ1MzIuaCxWdjMyLmgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclBhaXIgUTZfV3dfdmFkZGFjY19Xd1ZoVmgoSFZYX1ZlY3RvclBhaXIgVnh4LCBIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WWF9EVgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9Xd192YWRkYWNjX1d3VmhWaCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGh3X2FjYykKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYyICovCgojaWYgX19IVlhfQVJDSF9fID49IDYyCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVnh4MzIuaCs9dmFkZChWdTMyLnViLFZ2MzIudWIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclBhaXIgUTZfV2hfdmFkZGFjY19XaFZ1YlZ1YihIVlhfVmVjdG9yUGFpciBWeHgsIEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZYX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1doX3ZhZGRhY2NfV2hWdWJWdWIgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGR1YmhfYWNjKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjIgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjIKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLnViPXZhZGQoVnUzMi51YixWdjMyLmIpOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVnViX3ZhZGRfVnViVmJfc2F0KEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVnViX3ZhZGRfVnViVmJfc2F0IF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkdWJ1YmJfc2F0KQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjIgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjIKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWeHgzMi53Kz12YWRkKFZ1MzIudWgsVnYzMi51aCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUGFpciBRNl9Xd192YWRkYWNjX1d3VnVoVnVoKEhWWF9WZWN0b3JQYWlyIFZ4eCwgSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlhfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfV3dfdmFkZGFjY19Xd1Z1aFZ1aCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHVod19hY2MpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MiAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIudXc9dmFkZChWdTMyLnV3LFZ2MzIudXcpOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVnV3X3ZhZGRfVnV3VnV3X3NhdChIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Z1d192YWRkX1Z1d1Z1d19zYXQgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGR1d3NhdCkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYyICovCgojaWYgX19IVlhfQVJDSF9fID49IDYyCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmRkMzIudXc9dmFkZChWdXUzMi51dyxWdnYzMi51dyk6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclBhaXIgUTZfV3V3X3ZhZGRfV3V3V3V3X3NhdChIVlhfVmVjdG9yUGFpciBWdXUsIEhWWF9WZWN0b3JQYWlyIFZ2dikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkFfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9XdXdfdmFkZF9XdXdXdXdfc2F0IF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkdXdzYXRfZHYpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MiAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzI9dmFuZCghUXU0LFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WX3ZhbmRfUW5SKEhWWF9WZWN0b3JQcmVkIFF1LCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZYX0xBVEUKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVl92YW5kX1FuUiBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmFuZG5xcnQpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MiAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZ4MzJ8PXZhbmQoIVF1NCxSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVl92YW5kb3JfVlFuUihIVlhfVmVjdG9yIFZ4LCBIVlhfVmVjdG9yUHJlZCBRdSwgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WWF9MQVRFCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1ZfdmFuZG9yX1ZRblIgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhbmRucXJ0X2FjYykKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYyICovCgojaWYgX19IVlhfQVJDSF9fID49IDYyCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMj12YW5kKCFRdjQsVnUzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1ZfdmFuZF9RblYoSFZYX1ZlY3RvclByZWQgUXYsIEhWWF9WZWN0b3IgVnUpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVl92YW5kX1FuViBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmFuZHZucXYpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MiAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzI9dmFuZChRdjQsVnUzMikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1ZfdmFuZF9RVihIVlhfVmVjdG9yUHJlZCBRdiwgSFZYX1ZlY3RvciBWdSkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkEKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WX3ZhbmRfUVYgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhbmR2cXYpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MiAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIuYj12YXNyKFZ1MzIuaCxWdjMyLmgsUnQ4KTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1ZiX3Zhc3JfVmhWaFJfc2F0KEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlMKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WYl92YXNyX1ZoVmhSX3NhdCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmFzcmhic2F0KQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjIgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjIKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLnVoPXZhc3IoVnUzMi51dyxWdjMyLnV3LFJ0OCk6cm5kOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVnVoX3Zhc3JfVnV3VnV3Ul9ybmRfc2F0KEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlMKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WdWhfdmFzcl9WdXdWdXdSX3JuZF9zYXQgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3J1d3Vocm5kc2F0KQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjIgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjIKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLnVoPXZhc3IoVnUzMi53LFZ2MzIudyxSdDgpOnJuZDpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1Z1aF92YXNyX1Z3VndSX3JuZF9zYXQoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdiwgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WUwogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Z1aF92YXNyX1Z3VndSX3JuZF9zYXQgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3J3dWhybmRzYXQpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MiAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIudWI9dmxzcihWdTMyLnViLFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WdWJfdmxzcl9WdWJSKEhWWF9WZWN0b3IgVnUsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlMKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WdWJfdmxzcl9WdWJSIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92bHNyYikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYyICovCgojaWYgX19IVlhfQVJDSF9fID49IDYyCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi5iPXZsdXQzMihWdTMyLmIsVnYzMi5iLFJ0OCk6bm9tYXRjaAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVmJfdmx1dDMyX1ZiVmJSX25vbWF0Y2goSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdiwgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WUAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1ZiX3ZsdXQzMl9WYlZiUl9ub21hdGNoIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92bHV0dnZiX25tKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjIgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjIKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWeDMyLmJ8PXZsdXQzMihWdTMyLmIsVnYzMi5iLCN1MykKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1ZiX3ZsdXQzMm9yX1ZiVmJWYkkoSFZYX1ZlY3RvciBWeCwgSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdiwgV29yZDMyIEl1MykKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlBfVlMKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WYl92bHV0MzJvcl9WYlZiVmJJIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92bHV0dnZiX29yYWNjaSkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYyICovCgojaWYgX19IVlhfQVJDSF9fID49IDYyCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi5iPXZsdXQzMihWdTMyLmIsVnYzMi5iLCN1MykKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1ZiX3ZsdXQzMl9WYlZiSShIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2LCBXb3JkMzIgSXUzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WUAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1ZiX3ZsdXQzMl9WYlZiSSBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmx1dHZ2YmkpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MiAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkZDMyLmg9dmx1dDE2KFZ1MzIuYixWdjMyLmgsUnQ4KTpub21hdGNoCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclBhaXIgUTZfV2hfdmx1dDE2X1ZiVmhSX25vbWF0Y2goSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdiwgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WUF9WUwogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1doX3ZsdXQxNl9WYlZoUl9ub21hdGNoIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92bHV0dndoX25tKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjIgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjIKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWeHgzMi5ofD12bHV0MTYoVnUzMi5iLFZ2MzIuaCwjdTMpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclBhaXIgUTZfV2hfdmx1dDE2b3JfV2hWYlZoSShIVlhfVmVjdG9yUGFpciBWeHgsIEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYsIFdvcmQzMiBJdTMpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZQX1ZTCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfV2hfdmx1dDE2b3JfV2hWYlZoSSBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmx1dHZ3aF9vcmFjY2kpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MiAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkZDMyLmg9dmx1dDE2KFZ1MzIuYixWdjMyLmgsI3UzKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQYWlyIFE2X1doX3ZsdXQxNl9WYlZoSShIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2LCBXb3JkMzIgSXUzKQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WUF9WUwogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1doX3ZsdXQxNl9WYlZoSSBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmx1dHZ3aGkpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MiAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIuYj12bWF4KFZ1MzIuYixWdjMyLmIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WYl92bWF4X1ZiVmIoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkEKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WYl92bWF4X1ZiVmIgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtYXhiKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjIgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjIKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLmI9dm1pbihWdTMyLmIsVnYzMi5iKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVmJfdm1pbl9WYlZiKEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVmJfdm1pbl9WYlZiIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92bWluYikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYyICovCgojaWYgX19IVlhfQVJDSF9fID49IDYyCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmRkMzIudz12bXBhKFZ1dTMyLnVoLFJ0MzIuYikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUGFpciBRNl9Xd192bXBhX1d1aFJiKEhWWF9WZWN0b3JQYWlyIFZ1dSwgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WWF9EVgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9Xd192bXBhX1d1aFJiIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXBhdWhiKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjIgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjIKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWeHgzMi53Kz12bXBhKFZ1dTMyLnVoLFJ0MzIuYikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUGFpciBRNl9Xd192bXBhYWNjX1d3V3VoUmIoSFZYX1ZlY3RvclBhaXIgVnh4LCBIVlhfVmVjdG9yUGFpciBWdXUsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlhfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfV3dfdm1wYWFjY19Xd1d1aFJiIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXBhdWhiX2FjYykKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYyICovCgojaWYgX19IVlhfQVJDSF9fID49IDYyCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmRkMzI9dm1weWUoVnUzMi53LFZ2MzIudWgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclBhaXIgUTZfV192bXB5ZV9Wd1Z1aChIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WWF9EVgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9XX3ZtcHllX1Z3VnVoIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5ZXd1aF82NCkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYyICovCgojaWYgX19IVlhfQVJDSF9fID49IDYyCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi53PXZtcHlpKFZ1MzIudyxSdDMyLnViKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVndfdm1weWlfVndSdWIoSFZYX1ZlY3RvciBWdSwgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WWAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9Wd192bXB5aV9Wd1J1YiBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdm1weWl3dWIpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MiAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZ4MzIudys9dm1weWkoVnUzMi53LFJ0MzIudWIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9Wd192bXB5aWFjY19Wd1Z3UnViKEhWWF9WZWN0b3IgVngsIEhWWF9WZWN0b3IgVnUsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlgKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVndfdm1weWlhY2NfVndWd1J1YiBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdm1weWl3dWJfYWNjKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjIgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjIKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWeHgzMis9dm1weW8oVnUzMi53LFZ2MzIuaCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUGFpciBRNl9XX3ZtcHlvYWNjX1dWd1ZoKEhWWF9WZWN0b3JQYWlyIFZ4eCwgSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlhfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfV192bXB5b2FjY19XVndWaCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdm1weW93aF82NF9hY2MpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MiAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIudWI9dnJvdW5kKFZ1MzIudWgsVnYzMi51aCk6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WdWJfdnJvdW5kX1Z1aFZ1aF9zYXQoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlMKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WdWJfdnJvdW5kX1Z1aFZ1aF9zYXQgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zyb3VuZHVodWIpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MiAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIudWg9dnJvdW5kKFZ1MzIudXcsVnYzMi51dyk6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WdWhfdnJvdW5kX1Z1d1Z1d19zYXQoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlMKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WdWhfdnJvdW5kX1Z1d1Z1d19zYXQgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zyb3VuZHV3dWgpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MiAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIudWg9dnNhdChWdTMyLnV3LFZ2MzIudXcpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WdWhfdnNhdF9WdXdWdXcoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkEKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WdWhfdnNhdF9WdXdWdXcgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzYXR1d3VoKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjIgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjIKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLmI9dnN1YihWdTMyLmIsVnYzMi5iKTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1ZiX3ZzdWJfVmJWYl9zYXQoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkEKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WYl92c3ViX1ZiVmJfc2F0IF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3ViYnNhdCkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYyICovCgojaWYgX19IVlhfQVJDSF9fID49IDYyCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmRkMzIuYj12c3ViKFZ1dTMyLmIsVnZ2MzIuYik6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclBhaXIgUTZfV2JfdnN1Yl9XYldiX3NhdChIVlhfVmVjdG9yUGFpciBWdXUsIEhWWF9WZWN0b3JQYWlyIFZ2dikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkFfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9XYl92c3ViX1diV2Jfc2F0IF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3ViYnNhdF9kdikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYyICovCgojaWYgX19IVlhfQVJDSF9fID49IDYyCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi53PXZzdWIoVnUzMi53LFZ2MzIudyxReDQpOmNhcnJ5CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9Wd192c3ViX1Z3VndRX2NhcnJ5KEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYsIEhWWF9WZWN0b3JQcmVkKiBReCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkEKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9Wd192c3ViX1Z3VndRX2NhcnJ5IF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3ViY2FycnkpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MiAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIudWI9dnN1YihWdTMyLnViLFZ2MzIuYik6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WdWJfdnN1Yl9WdWJWYl9zYXQoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkEKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WdWJfdnN1Yl9WdWJWYl9zYXQgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJ1YnViYl9zYXQpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MiAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2MgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIudXc9dnN1YihWdTMyLnV3LFZ2MzIudXcpOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVnV3X3ZzdWJfVnV3VnV3X3NhdChIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Z1d192c3ViX1Z1d1Z1d19zYXQgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJ1d3NhdCkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDYyICovCgojaWYgX19IVlhfQVJDSF9fID49IDYyCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmRkMzIudXc9dnN1YihWdXUzMi51dyxWdnYzMi51dyk6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclBhaXIgUTZfV3V3X3ZzdWJfV3V3V3V3X3NhdChIVlhfVmVjdG9yUGFpciBWdXUsIEhWWF9WZWN0b3JQYWlyIFZ2dikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkFfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9XdXdfdnN1Yl9XdXdXdXdfc2F0IF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3VidXdzYXRfZHYpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2MiAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2NQovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIuYj12YWJzKFZ1MzIuYikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1ZiX3ZhYnNfVmIoSFZYX1ZlY3RvciBWdSkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkEKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WYl92YWJzX1ZiIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWJzYikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDY1ICovCgojaWYgX19IVlhfQVJDSF9fID49IDY1Ci8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi5iPXZhYnMoVnUzMi5iKTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1ZiX3ZhYnNfVmJfc2F0KEhWWF9WZWN0b3IgVnUpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVmJfdmFic19WYl9zYXQgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhYnNiX3NhdCkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDY1ICovCgojaWYgX19IVlhfQVJDSF9fID49IDY1Ci8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVngzMi5oKz12YXNsKFZ1MzIuaCxSdDMyKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVmhfdmFzbGFjY19WaFZoUihIVlhfVmVjdG9yIFZ4LCBIVlhfVmVjdG9yIFZ1LCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZTCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVmhfdmFzbGFjY19WaFZoUiBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmFzbGhfYWNjKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjUgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjUKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWeDMyLmgrPXZhc3IoVnUzMi5oLFJ0MzIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WaF92YXNyYWNjX1ZoVmhSKEhWWF9WZWN0b3IgVngsIEhWWF9WZWN0b3IgVnUsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlMKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WaF92YXNyYWNjX1ZoVmhSIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNyaF9hY2MpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2NSAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2NQovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIudWI9dmFzcihWdTMyLnVoLFZ2MzIudWgsUnQ4KTpybmQ6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WdWJfdmFzcl9WdWhWdWhSX3JuZF9zYXQoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdiwgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WUwogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Z1Yl92YXNyX1Z1aFZ1aFJfcm5kX3NhdCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmFzcnVodWJybmRzYXQpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2NSAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2NQovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIudWI9dmFzcihWdTMyLnVoLFZ2MzIudWgsUnQ4KTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1Z1Yl92YXNyX1Z1aFZ1aFJfc2F0KEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlMKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WdWJfdmFzcl9WdWhWdWhSX3NhdCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmFzcnVodWJzYXQpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2NSAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2NQovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIudWg9dmFzcihWdTMyLnV3LFZ2MzIudXcsUnQ4KTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1Z1aF92YXNyX1Z1d1Z1d1Jfc2F0KEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlMKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WdWhfdmFzcl9WdXdWdXdSX3NhdCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmFzcnV3dWhzYXQpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2NSAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2NQovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIuYj12YXZnKFZ1MzIuYixWdjMyLmIpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WYl92YXZnX1ZiVmIoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkEKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WYl92YXZnX1ZiVmIgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhdmdiKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjUgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjUKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLmI9dmF2ZyhWdTMyLmIsVnYzMi5iKTpybmQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1ZiX3ZhdmdfVmJWYl9ybmQoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkEKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WYl92YXZnX1ZiVmJfcm5kIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXZnYnJuZCkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDY1ICovCgojaWYgX19IVlhfQVJDSF9fID49IDY1Ci8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi51dz12YXZnKFZ1MzIudXcsVnYzMi51dykKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1Z1d192YXZnX1Z1d1Z1dyhIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Z1d192YXZnX1Z1d1Z1dyBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmF2Z3V3KQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjUgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjUKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLnV3PXZhdmcoVnUzMi51dyxWdjMyLnV3KTpybmQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1Z1d192YXZnX1Z1d1Z1d19ybmQoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVkEKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WdXdfdmF2Z19WdXdWdXdfcm5kIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXZndXdybmQpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2NSAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2NQovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkZDMyPSMwCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclBhaXIgUTZfV192emVybygpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgTUFQUElORwogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1dfdnplcm8gX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkZDApCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2NSAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2NQovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIHZ0bXAuaD12Z2F0aGVyKFJ0MzIsTXUyLFZ2MzIuaCkuaAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IHZvaWQgUTZfdmdhdGhlcl9BUk1WaChIVlhfVmVjdG9yKiBScywgV29yZDMyIFJ0LCBXb3JkMzIgTXUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX0dBVEhFUgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl92Z2F0aGVyX0FSTVZoIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z2F0aGVybWgpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2NSAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2NQovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIGlmIChRczQpIHZ0bXAuaD12Z2F0aGVyKFJ0MzIsTXUyLFZ2MzIuaCkuaAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IHZvaWQgUTZfdmdhdGhlcl9BUVJNVmgoSFZYX1ZlY3RvciogUnMsIEhWWF9WZWN0b3JQcmVkIFFzLCBXb3JkMzIgUnQsIFdvcmQzMiBNdSwgSFZYX1ZlY3RvciBWdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfR0FUSEVSCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X3ZnYXRoZXJfQVFSTVZoIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z2F0aGVybWhxKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjUgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjUKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICB2dG1wLmg9dmdhdGhlcihSdDMyLE11MixWdnYzMi53KS5oCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogdm9pZCBRNl92Z2F0aGVyX0FSTVd3KEhWWF9WZWN0b3IqIFJzLCBXb3JkMzIgUnQsIFdvcmQzMiBNdSwgSFZYX1ZlY3RvclBhaXIgVnZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9HQVRIRVJfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfdmdhdGhlcl9BUk1XdyBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmdhdGhlcm1odykKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDY1ICovCgojaWYgX19IVlhfQVJDSF9fID49IDY1Ci8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgaWYgKFFzNCkgdnRtcC5oPXZnYXRoZXIoUnQzMixNdTIsVnZ2MzIudykuaAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IHZvaWQgUTZfdmdhdGhlcl9BUVJNV3coSFZYX1ZlY3RvciogUnMsIEhWWF9WZWN0b3JQcmVkIFFzLCBXb3JkMzIgUnQsIFdvcmQzMiBNdSwgSFZYX1ZlY3RvclBhaXIgVnZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9HQVRIRVJfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfdmdhdGhlcl9BUVJNV3cgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZnYXRoZXJtaHdxKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjUgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjUKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICB2dG1wLnc9dmdhdGhlcihSdDMyLE11MixWdjMyLncpLncKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiB2b2lkIFE2X3ZnYXRoZXJfQVJNVncoSFZYX1ZlY3RvciogUnMsIFdvcmQzMiBSdCwgV29yZDMyIE11LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9HQVRIRVIKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfdmdhdGhlcl9BUk1WdyBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmdhdGhlcm13KQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjUgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjUKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBpZiAoUXM0KSB2dG1wLnc9dmdhdGhlcihSdDMyLE11MixWdjMyLncpLncKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiB2b2lkIFE2X3ZnYXRoZXJfQVFSTVZ3KEhWWF9WZWN0b3IqIFJzLCBIVlhfVmVjdG9yUHJlZCBRcywgV29yZDMyIFJ0LCBXb3JkMzIgTXUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX0dBVEhFUgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl92Z2F0aGVyX0FRUk1WdyBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdmdhdGhlcm13cSkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDY1ICovCgojaWYgX19IVlhfQVJDSF9fID49IDY1Ci8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi5oPXZsdXQ0KFZ1MzIudWgsUnR0MzIuaCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1ZoX3ZsdXQ0X1Z1aFBoKEhWWF9WZWN0b3IgVnUsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZYX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVmhfdmx1dDRfVnVoUGggX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZsdXQ0KQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjUgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjUKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZGQzMi5oPXZtcGEoVnV1MzIudWIsUnQzMi51YikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUGFpciBRNl9XaF92bXBhX1d1YlJ1YihIVlhfVmVjdG9yUGFpciBWdXUsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlhfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfV2hfdm1wYV9XdWJSdWIgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcGFidXUpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2NSAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2NQovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZ4eDMyLmgrPXZtcGEoVnV1MzIudWIsUnQzMi51YikKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUGFpciBRNl9XaF92bXBhYWNjX1doV3ViUnViKEhWWF9WZWN0b3JQYWlyIFZ4eCwgSFZYX1ZlY3RvclBhaXIgVnV1LCBXb3JkMzIgUnQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZYX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1doX3ZtcGFhY2NfV2hXdWJSdWIgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcGFidXVfYWNjKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjUgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjUKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWeDMyLmg9dm1wYShWeDMyLmgsVnUzMi5oLFJ0dDMyLmgpOnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVmhfdm1wYV9WaFZoVmhQaF9zYXQoSFZYX1ZlY3RvciBWeCwgSFZYX1ZlY3RvciBWdSwgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlhfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMgogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WaF92bXBhX1ZoVmhWaFBoX3NhdCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdm1wYWhoc2F0KQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjUgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjUKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWeDMyLmg9dm1wYShWeDMyLmgsVnUzMi51aCxSdHQzMi51aCk6c2F0CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WaF92bXBhX1ZoVmhWdWhQdWhfc2F0KEhWWF9WZWN0b3IgVngsIEhWWF9WZWN0b3IgVnUsIFdvcmQ2NCBSdHQpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZYX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVmhfdm1wYV9WaFZoVnVoUHVoX3NhdCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdm1wYXVodWhzYXQpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2NSAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2NQovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZ4MzIuaD12bXBzKFZ4MzIuaCxWdTMyLnVoLFJ0dDMyLnVoKTpzYXQKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1ZoX3ZtcHNfVmhWaFZ1aFB1aF9zYXQoSFZYX1ZlY3RvciBWeCwgSFZYX1ZlY3RvciBWdSwgV29yZDY0IFJ0dCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlhfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMgogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WaF92bXBzX1ZoVmhWdWhQdWhfc2F0IF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXBzdWh1aHNhdCkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDY1ICovCgojaWYgX19IVlhfQVJDSF9fID49IDY1Ci8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVnh4MzIudys9dm1weShWdTMyLmgsUnQzMi5oKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQYWlyIFE2X1d3X3ZtcHlhY2NfV3dWaFJoKEhWWF9WZWN0b3JQYWlyIFZ4eCwgSFZYX1ZlY3RvciBWdSwgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WWF9EVgogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9Xd192bXB5YWNjX1d3VmhSaCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdm1weWhfYWNjKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjUgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjUKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLnV3PXZtcHllKFZ1MzIudWgsUnQzMi51aCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1Z1d192bXB5ZV9WdWhSdWgoSFZYX1ZlY3RvciBWdSwgV29yZDMyIFJ0KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WWAogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WdXdfdm1weWVfVnVoUnVoIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5dWhlKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjUgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjUKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWeDMyLnV3Kz12bXB5ZShWdTMyLnVoLFJ0MzIudWgpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WdXdfdm1weWVhY2NfVnV3VnVoUnVoKEhWWF9WZWN0b3IgVngsIEhWWF9WZWN0b3IgVnUsIFdvcmQzMiBSdCkKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlgKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVnV3X3ZtcHllYWNjX1Z1d1Z1aFJ1aCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdm1weXVoZV9hY2MpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2NSAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2NQovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIuYj12bmF2ZyhWdTMyLmIsVnYzMi5iKQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVmJfdm5hdmdfVmJWYihIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1ZiX3ZuYXZnX1ZiVmIgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZuYXZnYikKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDY1ICovCgojaWYgX19IVlhfQVJDSF9fID49IDY1Ci8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi5iPXByZWZpeHN1bShRdjQpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9WYl9wcmVmaXhzdW1fUShIVlhfVmVjdG9yUHJlZCBRdikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlMKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMDEyMwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl9WYl9wcmVmaXhzdW1fUSBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdnByZWZpeHFiKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjUgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjUKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLmg9cHJlZml4c3VtKFF2NCkKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yIFE2X1ZoX3ByZWZpeHN1bV9RKEhWWF9WZWN0b3JQcmVkIFF2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WUwogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1ZoX3ByZWZpeHN1bV9RIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92cHJlZml4cWgpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2NSAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2NQovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIudz1wcmVmaXhzdW0oUXY0KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVndfcHJlZml4c3VtX1EoSFZYX1ZlY3RvclByZWQgUXYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZTCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVndfcHJlZml4c3VtX1EgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZwcmVmaXhxdykKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDY1ICovCgojaWYgX19IVlhfQVJDSF9fID49IDY1Ci8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgdnNjYXR0ZXIoUnQzMixNdTIsVnYzMi5oKS5oPVZ3MzIKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiB2b2lkIFE2X3ZzY2F0dGVyX1JNVmhWKFdvcmQzMiBSdCwgV29yZDMyIE11LCBIVlhfVmVjdG9yIFZ2LCBIVlhfVmVjdG9yIFZ3KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9TQ0FUVEVSCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfdnNjYXR0ZXJfUk1WaFYgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzY2F0dGVybWgpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2NSAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2NQovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIHZzY2F0dGVyKFJ0MzIsTXUyLFZ2MzIuaCkuaCs9VnczMgogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IHZvaWQgUTZfdnNjYXR0ZXJhY2NfUk1WaFYoV29yZDMyIFJ0LCBXb3JkMzIgTXUsIEhWWF9WZWN0b3IgVnYsIEhWWF9WZWN0b3IgVncpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1NDQVRURVIKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMAogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl92c2NhdHRlcmFjY19STVZoViBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdnNjYXR0ZXJtaF9hZGQpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2NSAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2NQovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIGlmIChRczQpIHZzY2F0dGVyKFJ0MzIsTXUyLFZ2MzIuaCkuaD1WdzMyCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogdm9pZCBRNl92c2NhdHRlcl9RUk1WaFYoSFZYX1ZlY3RvclByZWQgUXMsIFdvcmQzMiBSdCwgV29yZDMyIE11LCBIVlhfVmVjdG9yIFZ2LCBIVlhfVmVjdG9yIFZ3KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9TQ0FUVEVSCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfdnNjYXR0ZXJfUVJNVmhWIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2NhdHRlcm1ocSkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDY1ICovCgojaWYgX19IVlhfQVJDSF9fID49IDY1Ci8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgdnNjYXR0ZXIoUnQzMixNdTIsVnZ2MzIudykuaD1WdzMyCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogdm9pZCBRNl92c2NhdHRlcl9STVd3VihXb3JkMzIgUnQsIFdvcmQzMiBNdSwgSFZYX1ZlY3RvclBhaXIgVnZ2LCBIVlhfVmVjdG9yIFZ3KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9TQ0FUVEVSX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfdnNjYXR0ZXJfUk1Xd1YgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzY2F0dGVybWh3KQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjUgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjUKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICB2c2NhdHRlcihSdDMyLE11MixWdnYzMi53KS5oKz1WdzMyCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogdm9pZCBRNl92c2NhdHRlcmFjY19STVd3VihXb3JkMzIgUnQsIFdvcmQzMiBNdSwgSFZYX1ZlY3RvclBhaXIgVnZ2LCBIVlhfVmVjdG9yIFZ3KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9TQ0FUVEVSX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfdnNjYXR0ZXJhY2NfUk1Xd1YgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzY2F0dGVybWh3X2FkZCkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDY1ICovCgojaWYgX19IVlhfQVJDSF9fID49IDY1Ci8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgaWYgKFFzNCkgdnNjYXR0ZXIoUnQzMixNdTIsVnZ2MzIudykuaD1WdzMyCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogdm9pZCBRNl92c2NhdHRlcl9RUk1Xd1YoSFZYX1ZlY3RvclByZWQgUXMsIFdvcmQzMiBSdCwgV29yZDMyIE11LCBIVlhfVmVjdG9yUGFpciBWdnYsIEhWWF9WZWN0b3IgVncpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1NDQVRURVJfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMAogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl92c2NhdHRlcl9RUk1Xd1YgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzY2F0dGVybWh3cSkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDY1ICovCgojaWYgX19IVlhfQVJDSF9fID49IDY1Ci8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgdnNjYXR0ZXIoUnQzMixNdTIsVnYzMi53KS53PVZ3MzIKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiB2b2lkIFE2X3ZzY2F0dGVyX1JNVndWKFdvcmQzMiBSdCwgV29yZDMyIE11LCBIVlhfVmVjdG9yIFZ2LCBIVlhfVmVjdG9yIFZ3KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9TQ0FUVEVSCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfdnNjYXR0ZXJfUk1Wd1YgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzY2F0dGVybXcpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2NSAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2NQovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIHZzY2F0dGVyKFJ0MzIsTXUyLFZ2MzIudykudys9VnczMgogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IHZvaWQgUTZfdnNjYXR0ZXJhY2NfUk1Wd1YoV29yZDMyIFJ0LCBXb3JkMzIgTXUsIEhWWF9WZWN0b3IgVnYsIEhWWF9WZWN0b3IgVncpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1NDQVRURVIKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMAogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKI2RlZmluZSBRNl92c2NhdHRlcmFjY19STVZ3ViBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdnNjYXR0ZXJtd19hZGQpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2NSAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2NQovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIGlmIChRczQpIHZzY2F0dGVyKFJ0MzIsTXUyLFZ2MzIudykudz1WdzMyCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogdm9pZCBRNl92c2NhdHRlcl9RUk1Wd1YoSFZYX1ZlY3RvclByZWQgUXMsIFdvcmQzMiBSdCwgV29yZDMyIE11LCBIVlhfVmVjdG9yIFZ2LCBIVlhfVmVjdG9yIFZ3KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9TQ0FUVEVSCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfdnNjYXR0ZXJfUVJNVndWIF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2NhdHRlcm13cSkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDY1ICovCgojaWYgX19IVlhfQVJDSF9fID49IDY2Ci8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVmQzMi53PXZhZGQoVnUzMi53LFZ2MzIudyxRczQpOmNhcnJ5OnNhdAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVndfdmFkZF9Wd1Z3UV9jYXJyeV9zYXQoSFZYX1ZlY3RvciBWdSwgSFZYX1ZlY3RvciBWdiwgSFZYX1ZlY3RvclByZWQgUXMpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZBCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfVndfdmFkZF9Wd1Z3UV9jYXJyeV9zYXQgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRjYXJyeXNhdCkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDY2ICovCgojaWYgX19IVlhfQVJDSF9fID49IDY2Ci8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVnh4MzIudz12YXNyaW50byhWdTMyLncsVnYzMi53KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQYWlyIFE2X1d3X3Zhc3JpbnRvX1d3VndWdyhIVlhfVmVjdG9yUGFpciBWeHgsIEhWWF9WZWN0b3IgVnUsIEhWWF9WZWN0b3IgVnYpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZQX1ZTCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDAxMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfV3dfdmFzcmludG9fV3dWd1Z3IF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNyX2ludG8pCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2NiAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2NgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkMzIudXc9dnJvdHIoVnUzMi51dyxWdjMyLnV3KQogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3IgUTZfVnV3X3Zyb3RyX1Z1d1Z1dyhIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WUwogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Z1d192cm90cl9WdXdWdXcgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zyb3RyKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjYgKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjYKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZDMyLnc9dnNhdGR3KFZ1MzIudyxWdjMyLncpCiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvciBRNl9Wd192c2F0ZHdfVndWdyhIVlhfVmVjdG9yIFZ1LCBIVlhfVmVjdG9yIFZ2KQogICBJbnN0cnVjdGlvbiBUeXBlOiAgICAgIENWSV9WQQogICBFeGVjdXRpb24gU2xvdHM6ICAgICAgIFNMT1QwMTIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1Z3X3ZzYXRkd19Wd1Z3IF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2F0ZHcpCiNlbmRpZiAvKiBfX0hFWEFHT05fQVJDSF9fXyA+PSA2NiAqLwoKI2lmIF9fSFZYX0FSQ0hfXyA+PSA2OAovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBc3NlbWJseSBTeW50YXg6ICAgICAgIFZkZDMyLnc9djZtcHkoVnV1MzIudWIsVnZ2MzIuYiwjdTIpOmgKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUGFpciBRNl9Xd192Nm1weV9XdWJXYklfaChIVlhfVmVjdG9yUGFpciBWdXUsIEhWWF9WZWN0b3JQYWlyIFZ2diwgV29yZDMyIEl1MikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlhfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfV3dfdjZtcHlfV3ViV2JJX2ggX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Y2bXB5aHViczEwKQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjggKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjgKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWeHgzMi53Kz12Nm1weShWdXUzMi51YixWdnYzMi5iLCN1Mik6aAogICBDIEludHJpbnNpYyBQcm90b3R5cGU6IEhWWF9WZWN0b3JQYWlyIFE2X1d3X3Y2bXB5YWNjX1d3V3ViV2JJX2goSFZYX1ZlY3RvclBhaXIgVnh4LCBIVlhfVmVjdG9yUGFpciBWdXUsIEhWWF9WZWN0b3JQYWlyIFZ2diwgV29yZDMyIEl1MikKICAgSW5zdHJ1Y3Rpb24gVHlwZTogICAgICBDVklfVlhfRFYKICAgRXhlY3V0aW9uIFNsb3RzOiAgICAgICBTTE9UMjMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiNkZWZpbmUgUTZfV3dfdjZtcHlhY2NfV3dXdWJXYklfaCBfX0JVSUxUSU5fVkVDVE9SX1dSQVAoX19idWlsdGluX0hFWEFHT05fVjZfdjZtcHlodWJzMTBfdnh4KQojZW5kaWYgLyogX19IRVhBR09OX0FSQ0hfX18gPj0gNjggKi8KCiNpZiBfX0hWWF9BUkNIX18gPj0gNjgKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQXNzZW1ibHkgU3ludGF4OiAgICAgICBWZGQzMi53PXY2bXB5KFZ1dTMyLnViLFZ2djMyLmIsI3UyKTp2CiAgIEMgSW50cmluc2ljIFByb3RvdHlwZTogSFZYX1ZlY3RvclBhaXIgUTZfV3dfdjZtcHlfV3ViV2JJX3YoSFZYX1ZlY3RvclBhaXIgVnV1LCBIVlhfVmVjdG9yUGFpciBWdnYsIFdvcmQzMiBJdTIpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZYX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1d3X3Y2bXB5X1d1YldiSV92IF9fQlVJTFRJTl9WRUNUT1JfV1JBUChfX2J1aWx0aW5fSEVYQUdPTl9WNl92Nm1weXZ1YnMxMCkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDY4ICovCgojaWYgX19IVlhfQVJDSF9fID49IDY4Ci8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFzc2VtYmx5IFN5bnRheDogICAgICAgVnh4MzIudys9djZtcHkoVnV1MzIudWIsVnZ2MzIuYiwjdTIpOnYKICAgQyBJbnRyaW5zaWMgUHJvdG90eXBlOiBIVlhfVmVjdG9yUGFpciBRNl9Xd192Nm1weWFjY19Xd1d1YldiSV92KEhWWF9WZWN0b3JQYWlyIFZ4eCwgSFZYX1ZlY3RvclBhaXIgVnV1LCBIVlhfVmVjdG9yUGFpciBWdnYsIFdvcmQzMiBJdTIpCiAgIEluc3RydWN0aW9uIFR5cGU6ICAgICAgQ1ZJX1ZYX0RWCiAgIEV4ZWN1dGlvbiBTbG90czogICAgICAgU0xPVDIzCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgojZGVmaW5lIFE2X1d3X3Y2bXB5YWNjX1d3V3ViV2JJX3YgX19CVUlMVElOX1ZFQ1RPUl9XUkFQKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Y2bXB5dnViczEwX3Z4eCkKI2VuZGlmIC8qIF9fSEVYQUdPTl9BUkNIX19fID49IDY4ICovCgojZW5kaWYgLyogX19IVlhfXyAqLwoKI2VuZGlmCgBwcmZjaHdpbnRyaW4uaAAvKi0KICogQ29weXJpZ2h0IChjKSAyMDExIEVkIFNjaG91dGVuIDxlZEBGcmVlQlNELm9yZz4KICogICAgICAgICAgICAgICAgICAgIERhdmlkIENoaXNuYWxsIDx0aGVyYXZlbkBGcmVlQlNELm9yZz4KICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICoKICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwogKiBhcmUgbWV0OgogKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAogKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICoKICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAogKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCiAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCiAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgogKiBTVUNIIERBTUFHRS4KICoKICogJEZyZWVCU0QkCiAqLwoKI2lmbmRlZiBfU1REQVRPTUlDX0hfCiNkZWZpbmUJX1NUREFUT01JQ19IXwoKI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgoKI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpICYmIF9fY3BsdXNwbHVzID49IDIwMTEwM0wgJiYgX19oYXNfaW5jbHVkZSg8YXRvbWljPikKIyBpZiBfX2hhc19mZWF0dXJlKGN4eF9hdG9taWMpCiMgIGRlZmluZSBfU1REQVRPTUlDX0hBVkVfQVRPTUlDCiMgZW5kaWYKI2VuZGlmCgojaWZkZWYgX1NUREFUT01JQ19IQVZFX0FUT01JQwoKLyogV2UgaGF2ZSBhIHVzYWJsZSBDKysgPGF0b21pYz47IHVzZSBpdCBpbnN0ZWFkLiAgKi8KCiNpbmNsdWRlIDxhdG9taWM+CgojdW5kZWYgX0F0b21pYwogICAgICAgIC8qIEFsc28gZGVmaW5lZCBieSA8YXRvbWljPiBmb3IgZ2NjLiAgQnV0IG5vdCB1c2VkIGluIG1hY3Jvcy4gKi8KICAgICAgICAvKiBBbHNvIGEgY2xhbmcgaW50cmluc2ljLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAgICAgICAgLyogU2hvdWxkIG5vdCBiZSB1c2VkIGJ5IGNsaWVudCBjb2RlIGJlZm9yZSB0aGlzIGZpbGUgaXMgICAgICAqLwogICAgICAgIC8qIGluY2x1ZGVkLiAgVGhlIGRlZmluaXRpb25zIGluIDxhdG9taWM+IHRoZW1zZWx2ZXMgc2VlICAgICAgKi8KICAgICAgICAvKiB0aGUgb2xkIGRlZmluaXRpb24sIGFzIHRoZXkgc2hvdWxkLiAgICAgICAgICAgICAgICAgICAgICAgICovCiAgICAgICAgLyogQ2xpZW50IGNvZGUgc2VlcyB0aGUgZm9sbG93aW5nIGRlZmluaXRpb24uICAgICAgICAgICAgICAgICAqLwoKI2RlZmluZSBfQXRvbWljKHQpIHN0ZDo6YXRvbWljPHQ+Cgp1c2luZyBzdGQ6OmF0b21pY19pc19sb2NrX2ZyZWU7CnVzaW5nIHN0ZDo6YXRvbWljX2luaXQ7CnVzaW5nIHN0ZDo6YXRvbWljX3N0b3JlOwp1c2luZyBzdGQ6OmF0b21pY19zdG9yZV9leHBsaWNpdDsKdXNpbmcgc3RkOjphdG9taWNfbG9hZDsKdXNpbmcgc3RkOjphdG9taWNfbG9hZF9leHBsaWNpdDsKdXNpbmcgc3RkOjphdG9taWNfZXhjaGFuZ2U7CnVzaW5nIHN0ZDo6YXRvbWljX2V4Y2hhbmdlX2V4cGxpY2l0Owp1c2luZyBzdGQ6OmF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZzsKdXNpbmcgc3RkOjphdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmdfZXhwbGljaXQ7CnVzaW5nIHN0ZDo6YXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2VhazsKdXNpbmcgc3RkOjphdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrX2V4cGxpY2l0Owp1c2luZyBzdGQ6OmF0b21pY19mZXRjaF9hZGQ7CnVzaW5nIHN0ZDo6YXRvbWljX2ZldGNoX2FkZF9leHBsaWNpdDsKdXNpbmcgc3RkOjphdG9taWNfZmV0Y2hfc3ViOwp1c2luZyBzdGQ6OmF0b21pY19mZXRjaF9zdWJfZXhwbGljaXQ7CnVzaW5nIHN0ZDo6YXRvbWljX2ZldGNoX29yOwp1c2luZyBzdGQ6OmF0b21pY19mZXRjaF9vcl9leHBsaWNpdDsKdXNpbmcgc3RkOjphdG9taWNfZmV0Y2hfeG9yOwp1c2luZyBzdGQ6OmF0b21pY19mZXRjaF94b3JfZXhwbGljaXQ7CnVzaW5nIHN0ZDo6YXRvbWljX2ZldGNoX2FuZDsKdXNpbmcgc3RkOjphdG9taWNfZmV0Y2hfYW5kX2V4cGxpY2l0Owp1c2luZyBzdGQ6OmF0b21pY190aHJlYWRfZmVuY2U7CnVzaW5nIHN0ZDo6YXRvbWljX3NpZ25hbF9mZW5jZTsKCnVzaW5nIHN0ZDo6bWVtb3J5X29yZGVyOwp1c2luZyBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkOwp1c2luZyBzdGQ6Om1lbW9yeV9vcmRlcl9jb25zdW1lOwp1c2luZyBzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlOwp1c2luZyBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxlYXNlOwp1c2luZyBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVsOwp1c2luZyBzdGQ6Om1lbW9yeV9vcmRlcl9zZXFfY3N0OwoKdXNpbmcgc3RkOjphdG9taWNfYm9vbDsKdXNpbmcgc3RkOjphdG9taWNfY2hhcjsKdXNpbmcgc3RkOjphdG9taWNfc2NoYXI7CnVzaW5nIHN0ZDo6YXRvbWljX3VjaGFyOwp1c2luZyBzdGQ6OmF0b21pY19zaG9ydDsKdXNpbmcgc3RkOjphdG9taWNfdXNob3J0Owp1c2luZyBzdGQ6OmF0b21pY19pbnQ7CnVzaW5nIHN0ZDo6YXRvbWljX3VpbnQ7CnVzaW5nIHN0ZDo6YXRvbWljX2xvbmc7CnVzaW5nIHN0ZDo6YXRvbWljX3Vsb25nOwp1c2luZyBzdGQ6OmF0b21pY19sbG9uZzsKdXNpbmcgc3RkOjphdG9taWNfdWxsb25nOwp1c2luZyBzdGQ6OmF0b21pY19jaGFyMTZfdDsKdXNpbmcgc3RkOjphdG9taWNfY2hhcjMyX3Q7CnVzaW5nIHN0ZDo6YXRvbWljX3djaGFyX3Q7CnVzaW5nIHN0ZDo6YXRvbWljX2ludF9sZWFzdDhfdDsKdXNpbmcgc3RkOjphdG9taWNfdWludF9sZWFzdDhfdDsKdXNpbmcgc3RkOjphdG9taWNfaW50X2xlYXN0MTZfdDsKdXNpbmcgc3RkOjphdG9taWNfdWludF9sZWFzdDE2X3Q7CnVzaW5nIHN0ZDo6YXRvbWljX2ludF9sZWFzdDMyX3Q7CnVzaW5nIHN0ZDo6YXRvbWljX3VpbnRfbGVhc3QzMl90Owp1c2luZyBzdGQ6OmF0b21pY19pbnRfbGVhc3Q2NF90Owp1c2luZyBzdGQ6OmF0b21pY191aW50X2xlYXN0NjRfdDsKdXNpbmcgc3RkOjphdG9taWNfaW50X2Zhc3Q4X3Q7CnVzaW5nIHN0ZDo6YXRvbWljX3VpbnRfZmFzdDhfdDsKdXNpbmcgc3RkOjphdG9taWNfaW50X2Zhc3QxNl90Owp1c2luZyBzdGQ6OmF0b21pY191aW50X2Zhc3QxNl90Owp1c2luZyBzdGQ6OmF0b21pY19pbnRfZmFzdDMyX3Q7CnVzaW5nIHN0ZDo6YXRvbWljX3VpbnRfZmFzdDMyX3Q7CnVzaW5nIHN0ZDo6YXRvbWljX2ludF9mYXN0NjRfdDsKdXNpbmcgc3RkOjphdG9taWNfdWludF9mYXN0NjRfdDsKdXNpbmcgc3RkOjphdG9taWNfaW50cHRyX3Q7CnVzaW5nIHN0ZDo6YXRvbWljX3VpbnRwdHJfdDsKdXNpbmcgc3RkOjphdG9taWNfc2l6ZV90Owp1c2luZyBzdGQ6OmF0b21pY19wdHJkaWZmX3Q7CnVzaW5nIHN0ZDo6YXRvbWljX2ludG1heF90Owp1c2luZyBzdGQ6OmF0b21pY191aW50bWF4X3Q7CgojZWxzZSAvKiA8YXRvbWljPiB1bmF2YWlsYWJsZSwgcG9zc2libHkgYmVjYXVzZSB0aGlzIGlzIEMsIG5vdCBDKysgKi8KCi8qIEFjdHVhbCBpbXBsZW1lbnRhdGlvbiBpcyBpbiBiaXRzL3N0ZGF0b21pYy5oIHNpbmNlIG91ciB0ZXN0IGNvZGUgaXMgQysrLiAqLwojaW5jbHVkZSA8Yml0cy9zdGRhdG9taWMuaD4KCiNlbmRpZiAvKiA8YXRvbWljPiB1bmF2YWlsYWJsZSAqLwoKI2VuZGlmIC8qICFfU1REQVRPTUlDX0hfICovCgAvKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHdhaXRwa2dpbnRyaW4uaCAtIFdBSVRQS0cgLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KICoKICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KICoKICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQogKi8KI2lmICFkZWZpbmVkIF9fWDg2SU5UUklOX0ggJiYgIWRlZmluZWQgX19JTU1JTlRSSU5fSAojZXJyb3IgIk5ldmVyIHVzZSA8d2FpdHBrZ2ludHJpbi5oPiBkaXJlY3RseTsgaW5jbHVkZSA8eDg2aW50cmluLmg+IGluc3RlYWQuIgojZW5kaWYKCiNpZm5kZWYgX19XQUlUUEtHSU5UUklOX0gKI2RlZmluZSBfX1dBSVRQS0dJTlRSSU5fSAoKLyogRGVmaW5lIHRoZSBkZWZhdWx0IGF0dHJpYnV0ZXMgZm9yIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlLiAqLwojZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUyBcCiAgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCAgX190YXJnZXRfXygid2FpdHBrZyIpKSkKCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTCl91bW9uaXRvciAodm9pZCAqIF9fYWRkcmVzcykKewogIF9fYnVpbHRpbl9pYTMyX3Vtb25pdG9yIChfX2FkZHJlc3MpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBjaGFyIF9fREVGQVVMVF9GTl9BVFRSUwpfdW13YWl0ICh1bnNpZ25lZCBpbnQgX19jb250cm9sLCB1bnNpZ25lZCBsb25nIGxvbmcgX19jb3VudGVyKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Vtd2FpdCAoX19jb250cm9sLAogICAgKHVuc2lnbmVkIGludCkoX19jb3VudGVyID4+IDMyKSwgKHVuc2lnbmVkIGludClfX2NvdW50ZXIpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBjaGFyIF9fREVGQVVMVF9GTl9BVFRSUwpfdHBhdXNlICh1bnNpZ25lZCBpbnQgX19jb250cm9sLCB1bnNpZ25lZCBsb25nIGxvbmcgX19jb3VudGVyKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3RwYXVzZSAoX19jb250cm9sLAogICAgKHVuc2lnbmVkIGludCkoX19jb3VudGVyID4+IDMyKSwgKHVuc2lnbmVkIGludClfX2NvdW50ZXIpOwp9CgojdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTCgojZW5kaWYgLyogX19XQUlUUEtHSU5UUklOX0ggKi8KAHhzYXZlb3B0aW50cmluLmgAQ291bGRuJ3Qgb3BlbiBpbnB1dCBmaWxlIABCYWQgc2l6ZSBmb3IgACBuZWFyIG9mZnNldCAAdm5hbWUASW5jb3JyZWN0IGhleCBkaWdpdCBhZnRlciBcdSBlc2NhcGUgaW4gc3RyaW5nLgBUaGUgc3Vycm9nYXRlIHBhaXIgaW4gc3RyaW5nIGlzIGludmFsaWQuAFVua25vd24gZXJyb3IuAFs6XmFsbnVtOl0AWzpeYmxhbms6XQBpbnZhbGlkIG5hbWVkIGNhcHR1cmUgZ3JvdXAATWFsZm9ybWVkIHJlcGVhdCAAXG4AQWRsYW0AQ2F1Y2FzaWFuX0FsYmFuaWFuAFN1bmRhbmVzZQBVZ2FyaXRpYwAlczogZmFpbGVkIHRvIHJlYWQgZWxmIGhlYWRlcgBiYWQgbWFnaWMgbnVtYmVyIGluIERlbGV0ZUFyZW5hKCkAbXVzdCBwYXNzIGEgdmFsaWQgYXJlbmEAJQBzdGQ6OgBOT1RfRk9VTkQAZXh0ZXJuYWwvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvY29yZC5jYwBQcml2YXRlACBhbmQgZW50cnlbAGRldGVjdGVkIGlsbGVnYWwgcmVjdXJzaW9uIGludG8gTXV0ZXggY29kZQB3YWl0cCAhPSBudWxscHRyAG9sZF9oLT5za2lwID09IG51bGxwdHIAaC0+c2tpcCA9PSBudWxscHRyAE11dGV4OjpGZXIgd2l0aCBwZW5kaW5nIENvbmRWYXIgcXVldWVpbmcAZXh0ZXJuYWwvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvZ2V0X2N1cnJlbnRfdGltZV9wb3NpeC5pbmMARVZQX0FFQURfQ1RYX29wZW4gZm9yIEFFUy0xMjgtR0NNIGZhaWxlZC4KAGZhaWxlZCB0byBnZXQgZmxhZ3MgZnJvbSB1cmFuZG9tIGZkAFJTQSByb3V0aW5lcwBQS0NTNyByb3V0aW5lcwByYW5kb20gbnVtYmVyIGdlbmVyYXRvcgBUcnVzdCBUb2tlbiBmdW5jdGlvbnMAAAD/////CAAAAP///////////////xAAAAAYAAAAIAAAAAoba3l0aGUvcHJvdG8vYnVpbGRpbmZvLnByb3RvEgtreXRoZS5wcm90byJNCgxCdWlsZERldGFpbHMSFAoMYnVpbGRfdGFyZ2V0GAEgASgJEhEKCXJ1bGVfdHlwZRgCIAEoCRIUCgxidWlsZF9jb25maWcYAyABKAlCNQofY29tLmdvb2dsZS5kZXZ0b29scy5reXRoZS5wcm90b1oSYnVpbGRpbmZvX2dvX3Byb3RvYgZwcm90bzMAAAAAAAAAAAAAAAAAAAAAAAAAAP////8wAAAAAAAAAAAAAAAAAAAAXxgIAK4YCAC9GAgAMxkIAA1LCAA3SwgAoksIANhLCABJTAgAukwIAOpMCADBSggAwUoIABpNCAA9TQgAcW0IAH1tCADsbQgAKW4IAAAAAAD/////CAAAAP///////////////xAAAAAYAAAA/////wgAAAD///////////////8QAAAAFAAAABgAAAD/////CAAAAP///////////////xAAAAAYAAAAIAAAACgAAAD///////////////8IAAAAEAAAAAAAAAABAAAA/////wgAAAD///////////////8QAAAAeAAAAP////8IAAAA////////////////KAAAABAAAAAYAAAAIAAAAP////8IAAAA////////////////EAAAABgAAAD/////CAAAAP///////////////xAAAAAYAAAAIAAAAP////8IAAAA////////////////EAAAAP////8IAAAA////////////////WAAAAEAAAAAQAAAASAAAAFAAAABcAAAAYAAAAGQAAAAoAAAA/////wgAAAD///////////////8QAAAAGAAAAP////8IAAAA////////////////KAAAADAAAAA4AAAAEAAAAP////8IAAAA////////////////KAAAADAAAAAQAAAAAAAAAAAAAAAKGGt5dGhlL3Byb3RvL2NvbW1vbi5wcm90bxISa3l0aGUucHJvdG8uY29tbW9uGh9nb29nbGUvcHJvdG9idWYvdGltZXN0YW1wLnByb3RvIiMKBEZhY3QSDAoEbmFtZRgBIAEoCRINCgV2YWx1ZRgCIAEoDCJICgVQb2ludBITCgtieXRlX29mZnNldBgBIAEoBRITCgtsaW5lX251bWJlchgCIAEoBRIVCg1jb2x1bW5fb2Zmc2V0GAMgASgFIlgKBFNwYW4SKAoFc3RhcnQYASABKAsyGS5reXRoZS5wcm90by5jb21tb24uUG9pbnQSJgoDZW5kGAIgASgLMhkua3l0aGUucHJvdG8uY29tbW9uLlBvaW50IpIBCghOb2RlSW5mbxI2CgVmYWN0cxgCIAMoCzInLmt5dGhlLnByb3RvLmNvbW1vbi5Ob2RlSW5mby5GYWN0c0VudHJ5EhIKCmRlZmluaXRpb24YBSABKAkaLAoKRmFjdHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAw6AjgBSgQIARACUgZ0aWNrZXQiawoKRGlhZ25vc3RpYxImCgRzcGFuGAEgASgLMhgua3l0aGUucHJvdG8uY29tbW9uLlNwYW4SDwoHbWVzc2FnZRgCIAEoCRIPCgdkZXRhaWxzGAMgASgJEhMKC2NvbnRleHRfdXJsGAQgASgJIn0KElJlc29sdmVkRGlhZ25vc3RpYxIzCgtjb3JwdXNfcGF0aBgBIAEoCzIeLmt5dGhlLnByb3RvLmNvbW1vbi5Db3JwdXNQYXRoEjIKCmRpYWdub3N0aWMYAiABKAsyHi5reXRoZS5wcm90by5jb21tb24uRGlhZ25vc3RpYyI4CgpDb3JwdXNQYXRoEg4KBmNvcnB1cxgBIAEoCRIMCgRyb290GAIgASgJEgwKBHBhdGgYAyABKAkiJgoETGluaxISCgpkZWZpbml0aW9uGAMgAygJSgQIARACSgQIAhADIv0DCgxNYXJrZWRTb3VyY2USMwoEa2luZBgBIAEoDjIlLmt5dGhlLnByb3RvLmNvbW1vbi5NYXJrZWRTb3VyY2UuS2luZBIQCghwcmVfdGV4dBgCIAEoCRIvCgVjaGlsZBgDIAMoCzIgLmt5dGhlLnByb3RvLmNvbW1vbi5NYXJrZWRTb3VyY2USFwoPcG9zdF9jaGlsZF90ZXh0GAQgASgJEhEKCXBvc3RfdGV4dBgFIAEoCRIUCgxsb29rdXBfaW5kZXgYBiABKA0SHgoWZGVmYXVsdF9jaGlsZHJlbl9jb3VudBgHIAEoDRIcChRhZGRfZmluYWxfbGlzdF90b2tlbhgKIAEoCBImCgRsaW5rGAsgAygLMhgua3l0aGUucHJvdG8uY29tbW9uLkxpbmsizAEKBEtpbmQSBwoDQk9YEAASCAoEVFlQRRABEg0KCVBBUkFNRVRFUhACEg4KCklERU5USUZJRVIQAxILCgdDT05URVhUEAQSDwoLSU5JVElBTElaRVIQBRIdChlQQVJBTUVURVJfTE9PS1VQX0JZX1BBUkFNEAYSEwoPTE9PS1VQX0JZX1BBUkFNEAcSKwonUEFSQU1FVEVSX0xPT0tVUF9CWV9QQVJBTV9XSVRIX0RFRkFVTFRTEAgSEwoPTE9PS1VQX0JZX1RZUEVEEAkiNwoKU3ltYm9sSW5mbxIRCgliYXNlX25hbWUYASABKAkSFgoOcXVhbGlmaWVkX25hbWUYAiABKAkicgoGT3JpZ2luEg4KBmNvcnB1cxgBIAEoCRIQCghyZXZpc2lvbhgCIAEoCRI0ChBjb21taXRfdGltZXN0YW1wGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIQCghsYW5ndWFnZRgEIAMoCSKiAQoITGFuZ3VhZ2USDAoEbmFtZRgBIAEoCRI1CgdzdXBwb3J0GAIgASgOMiQua3l0aGUucHJvdG8uY29tbW9uLkxhbmd1YWdlLlN1cHBvcnQSGAoQYW5hbHl6ZXJfdmVyc2lvbhgDIAMoCSI3CgdTdXBwb3J0EgsKB1VOS05PV04QABIQCgxFWFBFUklNRU5UQUwQARINCglTVVBQT1JURUQQAkI0Ch9jb20uZ29vZ2xlLmRldnRvb2xzLmt5dGhlLnByb3RvUAFaD2NvbW1vbl9nb19wcm90b2IGcHJvdG8zAAAAAAAAAAAA/////ygAAAAHAAAA/////yAAAAAPAAAA/////ygAAAAWAAAAHQAAADAAAAAfAAAA/////4gAAAAmAAAA/////zgAAAAvAAAA/////ygAAAA2AAAA/////zAAAAA+AAAA/////zAAAABEAAAA/////3AAAABSAAAA/////ygAAABZAAAA/////0gAAABiAAAA/////zgAAAAeyQgAHskIAPjHCAAYyAgAP8gIAGrICAD01QgA9NUIAAbTCAA11QgAUNUIAG/VCAAAAAAA/////wgAAAD///////////////8QAAAAGAAAABwAAAD/////CAAAAP///////////////ygAAAAsAAAAEAAAAP////8IAAAA////////////////EAAAABgAAAD/////CAAAAP///////////////xAAAAD/////CAAAAP///////////////0AAAAAQAAAAKAAAAAAAAAAAAAAAAAAAAAoVa3l0aGUvcHJvdG8vY3h4LnByb3RvEgtreXRoZS5wcm90byLJBAoZQ3h4Q29tcGlsYXRpb25Vbml0RGV0YWlscxJTChJoZWFkZXJfc2VhcmNoX2luZm8YASABKAsyNy5reXRoZS5wcm90by5DeHhDb21waWxhdGlvblVuaXREZXRhaWxzLkhlYWRlclNlYXJjaEluZm8SVwoUc3lzdGVtX2hlYWRlcl9wcmVmaXgYAiADKAsyOS5reXRoZS5wcm90by5DeHhDb21waWxhdGlvblVuaXREZXRhaWxzLlN5c3RlbUhlYWRlclByZWZpeBJCCglzdGF0X3BhdGgYAyADKAsyLy5reXRoZS5wcm90by5DeHhDb21waWxhdGlvblVuaXREZXRhaWxzLlN0YXRQYXRoGlIKD0hlYWRlclNlYXJjaERpchIMCgRwYXRoGAEgASgJEhsKE2NoYXJhY3RlcmlzdGljX2tpbmQYAiABKAUSFAoMaXNfZnJhbWV3b3JrGAMgASgIGosBChBIZWFkZXJTZWFyY2hJbmZvEhgKEGZpcnN0X2FuZ2xlZF9kaXIYASABKAUSGAoQZmlyc3Rfc3lzdGVtX2RpchgCIAEoBRJDCgNkaXIYAyADKAsyNi5reXRoZS5wcm90by5DeHhDb21waWxhdGlvblVuaXREZXRhaWxzLkhlYWRlclNlYXJjaERpcho+ChJTeXN0ZW1IZWFkZXJQcmVmaXgSDgoGcHJlZml4GAEgASgJEhgKEGlzX3N5c3RlbV9oZWFkZXIYAiABKAgaGAoIU3RhdFBhdGgSDAoEcGF0aBgBIAEoCUIvCh9jb20uZ29vZ2xlLmRldnRvb2xzLmt5dGhlLnByb3RvWgxjeHhfZ29fcHJvdG9iBnByb3RvMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8oAAAACAAAAP////84AAAAEAAAAP////8gAAAAFwAAAP////8gAAAAHQAAAP////9QAAAAAAAAAP////8IAAAA////////////////GAAAABAAAAD/////CAAAAP///////////////ygAAAAQAAAAMAAAAP////8IAAAA////////////////EAAAAAAAAAAAAAAAAAAAAAoda3l0aGUvcHJvdG8vZmlsZWNvbnRleHQucHJvdG8SC2t5dGhlLnByb3RvIvYBChdDb250ZXh0RGVwZW5kZW50VmVyc2lvbhI1CgNyb3cYASADKAsyKC5reXRoZS5wcm90by5Db250ZXh0RGVwZW5kZW50VmVyc2lvbi5Sb3caMAoGQ29sdW1uEg4KBm9mZnNldBgBIAEoBRIWCg5saW5rZWRfY29udGV4dBgCIAEoCRpyCgNSb3cSFgoOc291cmNlX2NvbnRleHQYASABKAkSOwoGY29sdW1uGAIgAygLMisua3l0aGUucHJvdG8uQ29udGV4dERlcGVuZGVudFZlcnNpb24uQ29sdW1uEhYKDmFsd2F5c19wcm9jZXNzGAMgASgIQjcKH2NvbS5nb29nbGUuZGV2dG9vbHMua3l0aGUucHJvdG9aFGZpbGVjb250ZXh0X2dvX3Byb3RvYgZwcm90bzMAAAAAAAAAAAAAAAAAAP////8gAAAABwAAAP////84AAAADwAAAP////8wAAAAAAAAAAAAAAAAAAAAnVAJAMdQCQA1UQkAglEJALJRCQDiUQkAJ1IJAFdSCQCHUgkAt1IJAOdSCQAAAAAA/////wgAAAD///////////////8oAAAAEAAAAP////8IAAAA////////////////KAAAABAAAAAYAAAALAAAADAAAABEAAAAIAAAADQAAAA4AAAAPAAAAEAAAAAAAAAAChpreXRoZS9wcm90by9tZXRhZGF0YS5wcm90bxIUa3l0aGUucHJvdG8ubWV0YWRhdGEaGWt5dGhlL3Byb3RvL3N0b3JhZ2UucHJvdG8ingEKEUdlbmVyYXRlZENvZGVJbmZvEjoKBHR5cGUYASABKA4yLC5reXRoZS5wcm90by5tZXRhZGF0YS5HZW5lcmF0ZWRDb2RlSW5mby5UeXBlEi8KBG1ldGEYAiADKAsyIS5reXRoZS5wcm90by5tZXRhZGF0YS5NYXBwaW5nUnVsZSIcCgRUeXBlEggKBE5PTkUQABIKCgZLWVRIRTAQASLOAwoLTWFwcGluZ1J1bGUSNAoEdHlwZRgBIAEoDjImLmt5dGhlLnByb3RvLm1ldGFkYXRhLk1hcHBpbmdSdWxlLlR5cGUSDAoEZWRnZRgCIAEoCRIhCgV2bmFtZRgDIAEoCzISLmt5dGhlLnByb3RvLlZOYW1lEg0KBWJlZ2luGAQgASgNEgsKA2VuZBgFIAEoDRI8CghzZW1hbnRpYxgLIAEoDjIqLmt5dGhlLnByb3RvLm1ldGFkYXRhLk1hcHBpbmdSdWxlLlNlbWFudGljEigKDHNvdXJjZV92bmFtZRgGIAEoCzISLmt5dGhlLnByb3RvLlZOYW1lEhQKDHNvdXJjZV9iZWdpbhgHIAEoDRISCgpzb3VyY2VfZW5kGAggASgNEhQKDHRhcmdldF9iZWdpbhgJIAEoDRISCgp0YXJnZXRfZW5kGAogASgNIkAKBFR5cGUSCAoETk9ORRAAEgcKA05PUBABEhIKDkFOQ0hPUl9ERUZJTkVTEAISEQoNQU5DSE9SX0FOQ0hPUhADIj4KCFNlbWFudGljEg0KCVNFTUFfTk9ORRAAEg4KClNFTUFfV1JJVEUQARITCg9TRU1BX1JFQURfV1JJVEUQAkIhCh9jb20uZ29vZ2xlLmRldnRvb2xzLmt5dGhlLnByb3RvYgZwcm90bzMAAAAAAAAAAAAA/////zAAAAAHAAAA/////1AAAAAAAAAAAAAAAEBpCQBPaQkAv2kJAC9qCQCfagkA3HYJAAx3CQA8dwkAbHcJAJh3CQCZggkAzYIJAEKDCQCRgwkAE4QJAOWmCQBapwkAqacJACuoCQAAAAAA/////wgAAAD///////////////8QAAAAGAAAACAAAAAoAAAAMAAAAP////8IAAAA////////////////EAAAABEAAAASAAAAEwAAABQAAAD/////CAAAAP///////////////ygAAAAQAAAAMAAAABgAAAAgAAAA/////wgAAAD///////////////8QAAAA/////wgAAAD///////////////8YAAAAEAAAAP////8IAAAA////////////////EAAAACgAAAAYAAAAIAAAAP////8IAAAA////////////////KAAAABAAAAD/////CAAAAP////////////////////8IAAAA////////////////IAAAABAAAAAYAAAA/////wgAAAD///////////////8QAAAAGAAAAP////8IAAAA////////////////EAAAAP////8IAAAA////////////////EAAAABgAAAD/////CAAAAP///////////////xAAAAAYAAAA/////wgAAAD///////////////8QAAAAAAAAAAAAAAAAAAAAChlreXRoZS9wcm90by9zdG9yYWdlLnByb3RvEgtreXRoZS5wcm90byJYCgVWTmFtZRIRCglzaWduYXR1cmUYASABKAkSDgoGY29ycHVzGAIgASgJEgwKBHJvb3QYAyABKAkSDAoEcGF0aBgEIAEoCRIQCghsYW5ndWFnZRgFIAEoCSJcCglWTmFtZU1hc2sSEQoJc2lnbmF0dXJlGAEgASgIEg4KBmNvcnB1cxgCIAEoCBIMCgRyb290GAMgASgIEgwKBHBhdGgYBCABKAgSEAoIbGFuZ3VhZ2UYBSABKAgiiQEKBUVudHJ5EiIKBnNvdXJjZRgBIAEoCzISLmt5dGhlLnByb3RvLlZOYW1lEhEKCWVkZ2Vfa2luZBgCIAEoCRIiCgZ0YXJnZXQYAyABKAsyEi5reXRoZS5wcm90by5WTmFtZRIRCglmYWN0X25hbWUYBCABKAkSEgoKZmFjdF92YWx1ZRgFIAEoDCIuCgdFbnRyaWVzEiMKB2VudHJpZXMYASADKAsyEi5reXRoZS5wcm90by5FbnRyeSJECgtSZWFkUmVxdWVzdBIiCgZzb3VyY2UYASABKAsyEi5reXRoZS5wcm90by5WTmFtZRIRCgllZGdlX2tpbmQYAiABKAkizAEKDFdyaXRlUmVxdWVzdBIiCgZzb3VyY2UYASABKAsyEi5reXRoZS5wcm90by5WTmFtZRIwCgZ1cGRhdGUYAiADKAsyIC5reXRoZS5wcm90by5Xcml0ZVJlcXVlc3QuVXBkYXRlGmYKBlVwZGF0ZRIRCgllZGdlX2tpbmQYASABKAkSIgoGdGFyZ2V0GAIgASgLMhIua3l0aGUucHJvdG8uVk5hbWUSEQoJZmFjdF9uYW1lGAMgASgJEhIKCmZhY3RfdmFsdWUYBCABKAwiDAoKV3JpdGVSZXBseSJZCgtTY2FuUmVxdWVzdBIiCgZ0YXJnZXQYASABKAsyEi5reXRoZS5wcm90by5WTmFtZRIRCgllZGdlX2tpbmQYAiABKAkSEwoLZmFjdF9wcmVmaXgYAyABKAkiLQoMQ291bnRSZXF1ZXN0Eg0KBWluZGV4GAEgASgDEg4KBnNoYXJkcxgCIAEoAyIdCgpDb3VudFJlcGx5Eg8KB2VudHJpZXMYASABKAMiLQoMU2hhcmRSZXF1ZXN0Eg0KBWluZGV4GAEgASgDEg4KBnNoYXJkcxgCIAEoAyJOChBWTmFtZVJld3JpdGVSdWxlEg8KB3BhdHRlcm4YASABKAkSKQoGdl9uYW1lGAIgASgLMhIua3l0aGUucHJvdG8uVk5hbWVSBXZuYW1lIkAKEVZOYW1lUmV3cml0ZVJ1bGVzEisKBHJ1bGUYASADKAsyHS5reXRoZS5wcm90by5WTmFtZVJld3JpdGVSdWxlQjMKH2NvbS5nb29nbGUuZGV2dG9vbHMua3l0aGUucHJvdG9aEHN0b3JhZ2VfZ29fcHJvdG9iBnByb3RvMwAAAAAAAAAAAAAAAAAA/////0AAAAAKAAAA/////yAAAAAUAAAA/////0AAAAAeAAAA/////zAAAAAkAAAA/////ygAAAArAAAA/////zgAAAA0AAAA/////zgAAAA7AAAA/////xgAAABAAAAA/////zAAAABIAAAA/////ygAAABPAAAA/////yAAAABVAAAA/////ygAAABcAAAA/////ygAAABjAAAA/////zAAAAAAAAAAAAAAAC9reXRoZS9lZGdlL2NoaWxkb2YAAAAAAAAAAAAAAAAAL2t5dGhlL2VkZ2UvZXh0ZW5kcwAAAAAAAAAAAAAAAAAva3l0aGUvZWRnZS9leHRlbmRzL3ByaXZhdGUAAAAAAC9reXRoZS9lZGdlL2V4dGVuZHMvcHJpdmF0ZS92aXJ0dWFsAAAAAAAAAAAAAAAAAC9reXRoZS9lZGdlL2V4dGVuZHMvcHJvdGVjdGVkAAAAL2t5dGhlL2VkZ2UvZXh0ZW5kcy9wcm90ZWN0ZWQvdmlydHVhbAAAAAAAAAAAAAAAL2t5dGhlL2VkZ2UvZXh0ZW5kcy9wdWJsaWMAAAAAAAAva3l0aGUvZWRnZS9leHRlbmRzL3B1YmxpYy92aXJ0dWFsAAAAAAAAAAAAAAAAAAAva3l0aGUvZWRnZS9leHRlbmRzL3ZpcnR1YWwAAAAAAC9reXRoZS9lZGdlL2dlbmVyYXRlcwAAAAAAAAAAAAAAL2t5dGhlL2VkZ2UvbmFtZWQAAAAAAAAAAAAAAAAAAAAva3l0aGUvZWRnZS9vdmVycmlkZXMAAAAAAAAAAAAAAC9reXRoZS9lZGdlL3BhcmFtAAAAAAAAAAAAAAAAAAAAL2t5dGhlL2VkZ2Uvc2F0aXNmaWVzAAAAAAAAAAAAAAAva3l0aGUvZWRnZS90eXBlZAAAAAAAAAAAAAAAAAAAAC9reXRoZS9lZGdlL2NvbXBsZXRlcwAAAAAAAAAAAAAAL2t5dGhlL2VkZ2UvY29tcGxldGVzL3VuaXF1ZWx5AAAva3l0aGUvZWRnZS9kZWZpbmVzAAAAAAAAAAAAAAAAAC9reXRoZS9lZGdlL2RlZmluZXMvYmluZGluZwAAAAAAL2t5dGhlL2VkZ2UvZG9jdW1lbnRzAAAAAAAAAAAAAAAva3l0aGUvZWRnZS9yZWYAL2t5dGhlL2VkZ2UvcmVmL2NhbGwAAAAAAAAAAAAAAAAva3l0aGUvZWRnZS9yZWYvaW1wb3J0cwAAAAAAAAAAAC9reXRoZS9lZGdlL3JlZi9pbml0AAAAAAAAAAAAAAAAL2t5dGhlL2VkZ2UvdGFnZ2VkAAAAAAAAAAAAAAAAAABreXRoZS5pby9wcm90by9reXRoZS5wcm90by5DeHhDb21waWxhdGlvblVuaXREZXRhaWxzAAAAAAAAAAAAAAAARqIKAEaiCgCGnwoA8p8KAA+gCgAwoAoAwKsKAMCrCgCzqAoAF6kKAG2rCgBKqwoAtfsKAMj7CgDk+woAEPwKACz8CgBX/AoAdPwKAJP8CgC2/AoA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3KYMANymDADcpgwAuqcMAMOnDADMpwwACacMAMOmDADDpgwA1acMAMOmDAAPpwwAA6cMAMOmDADepwwAw6YMANymDADcpgwA7K8MAE6wDABOsAwATrAMAKavDACmrwwA+q8MABuwDABzsQwA2rEMANqxDADasQwACbEMAAmxDACOsQwAo7EMAFWyDAAtsgwAYrIMAG+yDAAtsgwAQ7IMAEOyDABDsgwAQ7IMAC2yDAB8sgwAibIMAEOyDABDsgwAlrIMAC2yDABPsgwALbIMAMeyDABDsgwA17IMAEOyDADnsgwAILMMADCzDABAswwAULMMAImzDABDsgwAwrMMAC2yDADSswwA4rMMAEOyDADyswwAK7QMAGS0DACdtAwArbQMAEOyDAC9tAwAQ7IMAEOyDABDsgwAQ7IMAEOyDAD5tAwACbUMAEOyDAAZtQwAKbUMADm1DABJtQwAQ7IMAC2yDAAtsgwAWbUMAGm1DABDsgwAQ7IMAHm1DABDsgwAQ7IMAEOyDAAtsgwAibUMAEOyDACZtQwAQ7IMAC2yDADStQwAD7YMAB+2DABDsgwAQ7IMAC+2DABDsgwAQ7IMAEOyDABDsgwAQ7IMAEOyDABPsgwAaLYMAKG2DADatgwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAK7NDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MALTNDACAzQwAgM0MALrNDACAzQwAgM0MAIDNDADAzQwAxs0MAMzNDACAzQwAgM0MANLNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDADYzQwA3s0MAOTNDADqzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAPDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAhM0MAIDNDACAzQwAgM0MAITNDACAzQwAgM0MAIDNDACAzQwAgM0MAPbNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAhM0MAIDNDACAzQwAgM0MAIDNDACAzQwAkc0MAIDNDACAzQwAgM0MAIDNDACAzQwAhM0MAPzNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAALODACAzQwAgM0MAAjODACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAkc0MAIDNDACAzQwAgM0MAIDNDACRzQwAgM0MAIDNDACAzQwAgM0MAIDNDACRzQwAhM0MAIDNDACAzQwAgM0MAIDNDAAOzgwAgM0MABTODACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MABrODACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAIM4MACbODACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAJHNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACAzQwAgM0MAIDNDACEzQwAgM0MAIDNDACAzQwAgM0MAIDNDAA4zgwAgM0MAIDNDACAzQwA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ZT0QANw8EABlPRAAh0QQALBEEACTRBAApEQQANhEEADURhAAXkcQAF5HEABvRhAASUYQAN9EEABSRhAAXkcQANhEEADYRBAAXkcQAF5HEABeRxAAXkcQAF5HEABeRxAA2EQQAF1KEABdShAAXUoQAF1KEACzShAAs0oQAIZKEACGShAAhkoQAGdMEAChTBAAXUoQAF1KEABdShAAXUoQAF1KEABdShAAXUoQAF1KEAAuTBAAXUoQAE4zcmUyMTRDb2FsZXNjZVdhbGtlckUATjNyZTIxNFNpbXBsaWZ5V2Fsa2VyRQBOM3JlMjZSZWdleHA2V2Fsa2VySVBTMF9FRQAAAAAAAAAA//////////9gcBAAYHAQAGxwEABacBAAWnAQAFpwEABacBAAsXAQAKJyEABKcxAA33IQAGVzEAD4chAArHMQAJh1EABOdRAApnUQAAdzEADodRAAznIQADlzEAD5dRAArHIQAFx1EAC9chAAbXUQAAp2EAAldhAAfnUQAMt4EADUeBAA/HgQAN14EADmeBAATjNyZTIxNFRvU3RyaW5nV2Fsa2VyRQAAAAAAAAAAAABBAAAAWgAAACAAAABhAAAAagAAAOD///9rAAAAawAAAL8gAABsAAAAcgAAAOD///9zAAAAcwAAAAwBAAB0AAAAegAAAOD///+1AAAAtQAAAOcCAADAAAAA1gAAACAAAADYAAAA3gAAACAAAADfAAAA3wAAAL8dAADgAAAA5AAAAOD////lAAAA5QAAAEYgAADmAAAA9gAAAOD////4AAAA/gAAAOD/////AAAA/wAAAHkAAAAAAQAALwEAAAEAAAAyAQAANwEAAAEAAAA5AQAASAEAAP////9KAQAAdwEAAAEAAAB4AQAAeAEAAIf///95AQAAfgEAAP////9/AQAAfwEAANT+//+AAQAAgAEAAMMAAACBAQAAgQEAANIAAACCAQAAhQEAAAEAAACGAQAAhgEAAM4AAACHAQAAiAEAAP////+JAQAAigEAAM0AAACLAQAAjAEAAP////+OAQAAjgEAAE8AAACPAQAAjwEAAMoAAACQAQAAkAEAAMsAAACRAQAAkgEAAP////+TAQAAkwEAAM0AAACUAQAAlAEAAM8AAACVAQAAlQEAAGEAAACWAQAAlgEAANMAAACXAQAAlwEAANEAAACYAQAAmQEAAAEAAACaAQAAmgEAAKMAAACcAQAAnAEAANMAAACdAQAAnQEAANUAAACeAQAAngEAAIIAAACfAQAAnwEAANYAAACgAQAApQEAAAEAAACmAQAApgEAANoAAACnAQAAqAEAAP////+pAQAAqQEAANoAAACsAQAArQEAAAEAAACuAQAArgEAANoAAACvAQAAsAEAAP////+xAQAAsgEAANkAAACzAQAAtgEAAP////+3AQAAtwEAANsAAAC4AQAAuQEAAAEAAAC8AQAAvQEAAAEAAAC/AQAAvwEAADgAAADEAQAAxAEAAAEAAADFAQAAxQEAAP/////GAQAAxgEAAP7////HAQAAxwEAAP/////IAQAAyAEAAAEAAADJAQAAyQEAAP7////KAQAAygEAAAEAAADLAQAAywEAAP/////MAQAAzAEAAP7////NAQAA3AEAAP/////dAQAA3QEAALH////eAQAA7wEAAAEAAADxAQAA8QEAAP/////yAQAA8gEAAAEAAADzAQAA8wEAAP7////0AQAA9QEAAAEAAAD2AQAA9gEAAJ/////3AQAA9wEAAMj////4AQAAHwIAAAEAAAAgAgAAIAIAAH7///8iAgAAMwIAAAEAAAA6AgAAOgIAACsqAAA7AgAAPAIAAP////89AgAAPQIAAF3///8+AgAAPgIAACgqAAA/AgAAQAIAAD8qAABBAgAAQgIAAP////9DAgAAQwIAAD3///9EAgAARAIAAEUAAABFAgAARQIAAEcAAABGAgAATwIAAAEAAABQAgAAUAIAAB8qAABRAgAAUQIAABwqAABSAgAAUgIAAB4qAABTAgAAUwIAAC7///9UAgAAVAIAADL///9WAgAAVwIAADP///9ZAgAAWQIAADb///9bAgAAWwIAADX///9cAgAAXAIAAE+lAABgAgAAYAIAADP///9hAgAAYQIAAEulAABjAgAAYwIAADH///9lAgAAZQIAACilAABmAgAAZgIAAESlAABoAgAAaAIAAC////9pAgAAaQIAAC3///9qAgAAagIAAESlAABrAgAAawIAAPcpAABsAgAAbAIAAEGlAABvAgAAbwIAAC3///9xAgAAcQIAAP0pAAByAgAAcgIAACv///91AgAAdQIAACr///99AgAAfQIAAOcpAACAAgAAgAIAACb///+DAgAAgwIAACb///+HAgAAhwIAACqlAACIAgAAiAIAACb///+JAgAAiQIAALv///+KAgAAiwIAACf///+MAgAAjAIAALn///+SAgAAkgIAACX///+dAgAAnQIAABWlAACeAgAAngIAABKlAABFAwAARQMAAFQAAABwAwAAcwMAAAEAAAB2AwAAdwMAAAEAAAB7AwAAfQMAAIIAAAB/AwAAfwMAAHQAAACGAwAAhgMAACYAAACIAwAAigMAACUAAACMAwAAjAMAAEAAAACOAwAAjwMAAD8AAACRAwAAoQMAACAAAACjAwAAowMAAB8AAACkAwAAqwMAACAAAACsAwAArAMAANr///+tAwAArwMAANv///+xAwAAsQMAAOD///+yAwAAsgMAAB4AAACzAwAAtAMAAOD///+1AwAAtQMAAEAAAAC2AwAAtwMAAOD///+4AwAAuAMAABkAAAC5AwAAuQMAAAUcAAC6AwAAugMAADYAAAC7AwAAuwMAAOD///+8AwAAvAMAAPn8//+9AwAAvwMAAOD////AAwAAwAMAABYAAADBAwAAwQMAADAAAADCAwAAwgMAAAEAAADDAwAAxQMAAOD////GAwAAxgMAAA8AAADHAwAAyAMAAOD////JAwAAyQMAAF0dAADKAwAAywMAAOD////MAwAAzAMAAMD////NAwAAzgMAAMH////PAwAAzwMAAAgAAADQAwAA0AMAAML////RAwAA0QMAACMAAADVAwAA1QMAANH////WAwAA1gMAAMr////XAwAA1wMAAPj////YAwAA7wMAAAEAAADwAwAA8AMAAKr////xAwAA8QMAALD////yAwAA8gMAAAcAAADzAwAA8wMAAIz////0AwAA9AMAAKT////1AwAA9QMAAKD////3AwAA+AMAAP/////5AwAA+QMAAPn////6AwAA+wMAAAEAAAD9AwAA/wMAAH7///8ABAAADwQAAFAAAAAQBAAALwQAACAAAAAwBAAAMQQAAOD///8yBAAAMgQAAE4YAAAzBAAAMwQAAOD///80BAAANAQAAE0YAAA1BAAAPQQAAOD///8+BAAAPgQAAEQYAAA/BAAAQAQAAOD///9BBAAAQgQAAEIYAABDBAAASQQAAOD///9KBAAASgQAADwYAABLBAAATwQAAOD///9QBAAAXwQAALD///9gBAAAYgQAAAEAAABjBAAAYwQAACQYAABkBAAAgQQAAAEAAACKBAAAvwQAAAEAAADABAAAwAQAAA8AAADBBAAAzgQAAP/////PBAAAzwQAAPH////QBAAALwUAAAEAAAAxBQAAVgUAADAAAABhBQAAhgUAAND///+gEAAAxRAAAGAcAADHEAAAxxAAAGAcAADNEAAAzRAAAGAcAADQEAAA+hAAAMALAAD9EAAA/xAAAMALAACgEwAA7xMAANCXAADwEwAA9RMAAAgAAAD4EwAA/RMAAPj///+AHAAAgBwAAJLn//+BHAAAgRwAAJPn//+CHAAAghwAAJzn//+DHAAAgxwAAJ7n//+EHAAAhBwAAAEAAACFHAAAhRwAAJ3n//+GHAAAhhwAAKTn//+HHAAAhxwAANvn//+IHAAAiBwAAMKJAACQHAAAuhwAAED0//+9HAAAvxwAAED0//95HQAAeR0AAASKAAB9HQAAfR0AAOYOAAAAHgAAYB4AAAEAAABhHgAAYR4AADoAAABiHgAAlR4AAAEAAACbHgAAmx4AAMX///+eHgAAnh4AAEHi//+gHgAA/x4AAAEAAAAAHwAABx8AAAgAAAAIHwAADx8AAPj///8QHwAAFR8AAAgAAAAYHwAAHR8AAPj///8gHwAAJx8AAAgAAAAoHwAALx8AAPj///8wHwAANx8AAAgAAAA4HwAAPx8AAPj///9AHwAARR8AAAgAAABIHwAATR8AAPj///9RHwAAUR8AAAgAAABTHwAAUx8AAAgAAABVHwAAVR8AAAgAAABXHwAAVx8AAAgAAABZHwAAWR8AAPj///9bHwAAWx8AAPj///9dHwAAXR8AAPj///9fHwAAXx8AAPj///9gHwAAZx8AAAgAAABoHwAAbx8AAPj///9wHwAAcR8AAEoAAAByHwAAdR8AAFYAAAB2HwAAdx8AAGQAAAB4HwAAeR8AAIAAAAB6HwAAex8AAHAAAAB8HwAAfR8AAH4AAACAHwAAhx8AAAgAAACIHwAAjx8AAPj///+QHwAAlx8AAAgAAACYHwAAnx8AAPj///+gHwAApx8AAAgAAACoHwAArx8AAPj///+wHwAAsR8AAAgAAACzHwAAsx8AAAkAAAC4HwAAuR8AAPj///+6HwAAux8AALb///+8HwAAvB8AAPf///++HwAAvh8AAIfj///DHwAAwx8AAAkAAADIHwAAyx8AAKr////MHwAAzB8AAPf////QHwAA0R8AAAgAAADYHwAA2R8AAPj////aHwAA2x8AAJz////gHwAA4R8AAAgAAADlHwAA5R8AAAcAAADoHwAA6R8AAPj////qHwAA6x8AAJD////sHwAA7B8AAPn////zHwAA8x8AAAkAAAD4HwAA+R8AAID////6HwAA+x8AAIL////8HwAA/B8AAPf///8mIQAAJiEAAIPi//8qIQAAKiEAACHf//8rIQAAKyEAAJrf//8yIQAAMiEAABwAAABOIQAATiEAAOT///9gIQAAbyEAABAAAABwIQAAfyEAAPD///+DIQAAhCEAAP////+2JAAAzyQAABoAAADQJAAA6SQAAOb///8ALAAALiwAADAAAAAwLAAAXiwAAND///9gLAAAYSwAAAEAAABiLAAAYiwAAAnW//9jLAAAYywAABrx//9kLAAAZCwAABnW//9lLAAAZSwAANXV//9mLAAAZiwAANjV//9nLAAAbCwAAP////9tLAAAbSwAAOTV//9uLAAAbiwAAAPW//9vLAAAbywAAOHV//9wLAAAcCwAAOLV//9yLAAAcywAAAEAAAB1LAAAdiwAAP////9+LAAAfywAAMHV//+ALAAA4ywAAAEAAADrLAAA7iwAAP/////yLAAA8ywAAAEAAAAALQAAJS0AAKDj//8nLQAAJy0AAKDj//8tLQAALS0AAKDj//9ApgAASqYAAAEAAABLpgAAS6YAAD12//9MpgAAbaYAAAEAAACApgAAm6YAAAEAAAAipwAAL6cAAAEAAAAypwAAb6cAAAEAAAB5pwAAfKcAAP////99pwAAfacAAPx1//9+pwAAh6cAAAEAAACLpwAAjKcAAP////+NpwAAjacAANha//+QpwAAk6cAAAEAAACWpwAAqacAAAEAAACqpwAAqqcAALxa//+rpwAAq6cAALFa//+spwAArKcAALVa//+tpwAAracAAL9a//+upwAArqcAALxa//+wpwAAsKcAAO5a//+xpwAAsacAANZa//+ypwAAsqcAAOta//+zpwAAs6cAAKADAAC0pwAAuacAAAEAAABTqwAAU6sAAGD8//9wqwAAv6sAADBo//8h/wAAOv8AACAAAABB/wAAWv8AAOD///8ABAEAJwQBACgAAAAoBAEATwQBANj///+wBAEA0wQBACgAAADYBAEA+wQBANj///+ADAEAsgwBAEAAAADADAEA8gwBAMD///+gGAEAvxgBACAAAADAGAEA3xgBAOD///9AbgEAX24BACAAAABgbgEAf24BAOD///8A6QEAIekBACIAAAAi6QEAQ+kBAN7///9dAQAAQQAAAFoAAAAgAAAAtQAAALUAAAAHAwAAwAAAANYAAAAgAAAA2AAAAN4AAAAgAAAAAAEAAC4BAAAAAABAMgEAADYBAAAAAABAOQEAAEcBAAABAABASgEAAHYBAAAAAABAeAEAAHgBAACH////eQEAAH0BAAABAABAfwEAAH8BAAD0/v//gQEAAIEBAADSAAAAggEAAIQBAAAAAABAhgEAAIYBAADOAAAAhwEAAIcBAAD/////iQEAAIoBAADNAAAAiwEAAIsBAAD/////jgEAAI4BAABPAAAAjwEAAI8BAADKAAAAkAEAAJABAADLAAAAkQEAAJEBAAD/////kwEAAJMBAADNAAAAlAEAAJQBAADPAAAAlgEAAJYBAADTAAAAlwEAAJcBAADRAAAAmAEAAJgBAAABAAAAnAEAAJwBAADTAAAAnQEAAJ0BAADVAAAAnwEAAJ8BAADWAAAAoAEAAKQBAAAAAABApgEAAKYBAADaAAAApwEAAKcBAAD/////qQEAAKkBAADaAAAArAEAAKwBAAABAAAArgEAAK4BAADaAAAArwEAAK8BAAD/////sQEAALIBAADZAAAAswEAALUBAAABAABAtwEAALcBAADbAAAAuAEAALgBAAABAAAAvAEAALwBAAABAAAAxAEAAMQBAAACAAAAxQEAAMUBAAD/////xwEAAMcBAAACAAAAyAEAAMgBAAABAAAAygEAAMoBAAACAAAAywEAANsBAAABAABA3gEAAO4BAAAAAABA8QEAAPEBAAACAAAA8gEAAPQBAAAAAABA9gEAAPYBAACf////9wEAAPcBAADI////+AEAAB4CAAAAAABAIAIAACACAAB+////IgIAADICAAAAAABAOgIAADoCAAArKgAAOwIAADsCAAD/////PQIAAD0CAABd////PgIAAD4CAAAoKgAAQQIAAEECAAD/////QwIAAEMCAAA9////RAIAAEQCAABFAAAARQIAAEUCAABHAAAARgIAAE4CAAAAAABARQMAAEUDAAB0AAAAcAMAAHIDAAAAAABAdgMAAHYDAAABAAAAfwMAAH8DAAB0AAAAhgMAAIYDAAAmAAAAiAMAAIoDAAAlAAAAjAMAAIwDAABAAAAAjgMAAI8DAAA/AAAAkQMAAKEDAAAgAAAAowMAAKsDAAAgAAAAwgMAAMIDAAABAAAAzwMAAM8DAAAIAAAA0AMAANADAADi////0QMAANEDAADn////1QMAANUDAADx////1gMAANYDAADq////2AMAAO4DAAAAAABA8AMAAPADAADK////8QMAAPEDAADQ////9AMAAPQDAADE////9QMAAPUDAADA////9wMAAPcDAAD/////+QMAAPkDAAD5////+gMAAPoDAAABAAAA/QMAAP8DAAB+////AAQAAA8EAABQAAAAEAQAAC8EAAAgAAAAYAQAAIAEAAAAAABAigQAAL4EAAAAAABAwAQAAMAEAAAPAAAAwQQAAM0EAAABAABA0AQAAC4FAAAAAABAMQUAAFYFAAAwAAAAoBAAAMUQAABgHAAAxxAAAMcQAABgHAAAzRAAAM0QAABgHAAA+BMAAP0TAAD4////gBwAAIAcAACy5///gRwAAIEcAACz5///ghwAAIIcAAC85///gxwAAIQcAAC+5///hRwAAIUcAAC95///hhwAAIYcAADE5///hxwAAIccAADc5///iBwAAIgcAADDiQAAkBwAALocAABA9P//vRwAAL8cAABA9P//AB4AAJQeAAAAAABAmx4AAJseAADG////nh4AAJ4eAABB4v//oB4AAP4eAAAAAABACB8AAA8fAAD4////GB8AAB0fAAD4////KB8AAC8fAAD4////OB8AAD8fAAD4////SB8AAE0fAAD4////WR8AAFkfAAD4////Wx8AAFsfAAD4////XR8AAF0fAAD4////Xx8AAF8fAAD4////aB8AAG8fAAD4////iB8AAI8fAAD4////mB8AAJ8fAAD4////qB8AAK8fAAD4////uB8AALkfAAD4////uh8AALsfAAC2////vB8AALwfAAD3////vh8AAL4fAAD74///yB8AAMsfAACq////zB8AAMwfAAD3////2B8AANkfAAD4////2h8AANsfAACc////6B8AAOkfAAD4////6h8AAOsfAACQ////7B8AAOwfAAD5////+B8AAPkfAACA////+h8AAPsfAACC/////B8AAPwfAAD3////JiEAACYhAACj4v//KiEAACohAABB3///KyEAACshAAC63///MiEAADIhAAAcAAAAYCEAAG8hAAAQAAAAgyEAAIMhAAD/////tiQAAM8kAAAaAAAAACwAAC4sAAAwAAAAYCwAAGAsAAABAAAAYiwAAGIsAAAJ1v//YywAAGMsAAAa8f//ZCwAAGQsAAAZ1v//ZywAAGssAAABAABAbSwAAG0sAADk1f//biwAAG4sAAAD1v//bywAAG8sAADh1f//cCwAAHAsAADi1f//ciwAAHIsAAABAAAAdSwAAHUsAAD/////fiwAAH8sAADB1f//gCwAAOIsAAAAAABA6ywAAO0sAAABAABA8iwAAPIsAAABAAAAQKYAAGymAAAAAABAgKYAAJqmAAAAAABAIqcAAC6nAAAAAABAMqcAAG6nAAAAAABAeacAAHunAAABAABAfacAAH2nAAD8df//fqcAAIanAAAAAABAi6cAAIunAAD/////jacAAI2nAADYWv//kKcAAJKnAAAAAABAlqcAAKinAAAAAABAqqcAAKqnAAC8Wv//q6cAAKunAACxWv//rKcAAKynAAC1Wv//racAAK2nAAC/Wv//rqcAAK6nAAC8Wv//sKcAALCnAADuWv//sacAALGnAADWWv//sqcAALKnAADrWv//s6cAALOnAACgAwAAtKcAALinAAAAAABAcKsAAL+rAAAwaP//If8AADr/AAAgAAAAAAQBACcEAQAoAAAAsAQBANMEAQAoAAAAgAwBALIMAQBAAAAAoBgBAL8YAQAgAAAAQG4BAF9uAQAgAAAAAOkBACHpAQAiAAAAwgAAAAAAAAAA6QEASukBAFDpAQBZ6QEAXukBAF/pAQAAAAAAAAAAAAAXAQAaFwEAHRcBACsXAQAwFwEAPxcBAABEAQBGRgEAAAYEBgYGCwYNBhoGHAYcBh4GHgYgBj8GQQZKBlYGbwZxBtwG3gb/BlAHfwegCLQItgi9CNMI4QjjCP8IUPvB+9P7Pf1Q/Y/9kv3H/fD9/f1w/nT+dv78/gAAAAAAAAAAYA4BAH4OAQAA7gEAA+4BAAXuAQAf7gEAIe4BACLuAQAk7gEAJO4BACfuAQAn7gEAKe4BADLuAQA07gEAN+4BADnuAQA57gEA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JQElAScBJwEpASkBKwErAS0BLQEvAS8BMQExATMBMwE1ATUBNwE4AToBOgE8ATwBPgE+AUABQAFCAUIBRAFEAUYBRgFIAUkBSwFLAU0BTQFPAU8BUQFRAVMBUwFVAVUBVwFXAVkBWQFbAVsBXQFdAV8BXwFhAWEBYwFjAWUBZQFnAWcBaQFpAWsBawFtAW0BbwFvAXEBcQFzAXMBdQF1AXcBdwF6AXoBfAF8AX4BgAGDAYMBhQGFAYgBiAGMAY0BkgGSAZUBlQGZAZsBngGeAaEBoQGjAaMBpQGlAagBqAGqAasBrQGtAbABsAG0AbQBtgG2AbkBugG9Ab8BxgHGAckByQHMAcwBzgHOAdAB0AHSAdIB1AHUAdYB1gHYAdgB2gHaAdwB3QHfAd8B4QHhAeMB4wHlAeUB5wHnAekB6QHrAesB7QHtAe8B8AHzAfMB9QH1AfkB+QH7AfsB/QH9Af8B/wEBAgECAwIDAgUCBQIHAgcCCQIJAgsCCwINAg0CDwIPAhECEQITAhMCFQIVAhcCFwIZAhkCGwIbAh0CHQIfAh8CIQIhAiMCIwIlAiUCJwInAikCKQIrAisCLQItAi8CLwIxAjECMwI5AjwCPAI/AkACQgJCAkcCRwJJAkkCSwJLAk0CTQJPApMClQKvAnEDcQNzA3MDdwN3A3sDfQOQA5ADrAPOA9AD0QPVA9cD2QPZA9sD2wPdA90D3wPfA+ED4QPjA+MD5QPlA+cD5wPpA+kD6wPrA+0D7QPvA/MD9QP1A/gD+AP7A/wDMARfBGEEYQRjBGMEZQRlBGcEZwRpBGkEawRrBG0EbQRvBG8EcQRxBHMEcwR1BHUEdwR3BHkEeQR7BHsEfQR9BH8EfwSBBIEEiwSLBI0EjQSPBI8EkQSRBJMEkwSVBJUElwSXBJkEmQSbBJsEnQSdBJ8EnwShBKEEowSjBKUEpQSnBKcEqQSpBKsEqwStBK0ErwSvBLEEsQSzBLMEtQS1BLcEtwS5BLkEuwS7BL0EvQS/BL8EwgTCBMQExATGBMYEyATIBMoEygTMBMwEzgTPBNEE0QTTBNME1QTVBNcE1wTZBNkE2wTbBN0E3QTfBN8E4QThBOME4wTlBOUE5wTnBOkE6QTrBOsE7QTtBO8E7wTxBPEE8wTzBPUE9QT3BPcE+QT5BPsE+wT9BP0E/wT/BAEFAQUDBQMFBQUFBQcFBwUJBQkFCwULBQ0FDQUPBQ8FEQURBRMFEwUVBRUFFwUXBRkFGQUbBRsFHQUdBR8FHwUhBSEFIwUjBSUFJQUnBScFKQUpBSsFKwUtBS0FLwUvBWAFiAXQEPoQ/RD/EPgT/ROAHIgcAB0rHWsddx15HZodAR4BHgMeAx4FHgUeBx4HHgkeCR4LHgseDR4NHg8eDx4RHhEeEx4THhUeFR4XHhceGR4ZHhseGx4dHh0eHx4fHiEeIR4jHiMeJR4lHiceJx4pHikeKx4rHi0eLR4vHi8eMR4xHjMeMx41HjUeNx43HjkeOR47HjsePR49Hj8ePx5BHkEeQx5DHkUeRR5HHkceSR5JHkseSx5NHk0eTx5PHlEeUR5THlMeVR5VHlceVx5ZHlkeWx5bHl0eXR5fHl8eYR5hHmMeYx5lHmUeZx5nHmkeaR5rHmsebR5tHm8ebx5xHnEecx5zHnUedR53HnceeR55Hnseex59Hn0efx5/HoEegR6DHoMehR6FHocehx6JHokeix6LHo0ejR6PHo8ekR6RHpMekx6VHp0enx6fHqEeoR6jHqMepR6lHqcepx6pHqkeqx6rHq0erR6vHq8esR6xHrMesx61HrUetx63HrkeuR67HrsevR69Hr8evx7BHsEewx7DHsUexR7HHsceyR7JHsseyx7NHs0ezx7PHtEe0R7THtMe1R7VHtce1x7ZHtke2x7bHt0e3R7fHt8e4R7hHuMe4x7lHuUe5x7nHuke6R7rHuse7R7tHu8e7x7xHvEe8x7zHvUe9R73Hvce+R75Hvse+x79Hv0e/x4HHxAfFR8gHycfMB83H0AfRR9QH1cfYB9nH3AffR+AH4cfkB+XH6Afpx+wH7Qfth+3H74fvh/CH8Qfxh/HH9Af0x/WH9cf4B/nH/If9B/2H/cfCiEKIQ4hDyETIRMhLyEvITQhNCE5ITkhPCE9IUYhSSFOIU4hhCGEITAsXixhLGEsZSxmLGgsaCxqLGosbCxsLHEscSxzLHQsdix7LIEsgSyDLIMshSyFLIcshyyJLIksiyyLLI0sjSyPLI8skSyRLJMskyyVLJUslyyXLJksmSybLJssnSydLJ8snyyhLKEsoyyjLKUspSynLKcsqSypLKssqyytLK0sryyvLLEssSyzLLMstSy1LLcstyy5LLksuyy7LL0svSy/LL8swSzBLMMswyzFLMUsxyzHLMksySzLLMsszSzNLM8szyzRLNEs0yzTLNUs1SzXLNcs2SzZLNss2yzdLN0s3yzfLOEs4SzjLOQs7CzsLO4s7izzLPMsAC0lLSctJy0tLS0tQaZBpkOmQ6ZFpkWmR6ZHpkmmSaZLpkumTaZNpk+mT6ZRplGmU6ZTplWmVaZXplemWaZZplumW6Zdpl2mX6ZfpmGmYaZjpmOmZaZlpmemZ6Zppmmma6Zrpm2mbaaBpoGmg6aDpoWmhaaHpoemiaaJpoumi6aNpo2mj6aPppGmkaaTppOmlaaVppeml6aZppmmm6abpiOnI6clpyWnJ6cnpymnKacrpyunLactpy+nMaczpzOnNac1pzenN6c5pzmnO6c7pz2nPac/pz+nQadBp0OnQ6dFp0WnR6dHp0mnSadLp0unTadNp0+nT6dRp1GnU6dTp1WnVadXp1enWadZp1unW6ddp12nX6dfp2GnYadjp2OnZadlp2enZ6dpp2mna6drp22nbadvp2+ncad4p3qneqd8p3ynf6d/p4GngaeDp4OnhaeFp4enh6eMp4ynjqeOp5GnkaeTp5Wnl6eXp5mnmaebp5unnaedp5+nn6ehp6Gno6ejp6Wnpaenp6enqaepp6+nr6e1p7Wnt6e3p7mnuaf6p/qnMKtaq2CrZatwq7+rAPsG+xP7F/tB/1r/KAQBAE8EAQDYBAEA+wQBAMAMAQDyDAEAwBgBAN8YAQBgbgEAf24BABrUAQAz1AEATtQBAFTUAQBW1AEAZ9QBAILUAQCb1AEAttQBALnUAQC71AEAu9QBAL3UAQDD1AEAxdQBAM/UAQDq1AEAA9UBAB7VAQA31QEAUtUBAGvVAQCG1QEAn9UBALrVAQDT1QEA7tUBAAfWAQAi1gEAO9YBAFbWAQBv1gEAitYBAKXWAQDC1gEA2tYBANzWAQDh1gEA/NYBABTXAQAW1wEAG9cBADbXAQBO1wEAUNcBAFXXAQBw1wEAiNcBAIrXAQCP1wEAqtcBAMLXAQDE1wEAydcBAMvXAQDL1wEAIukBAEPpAQCwAsECxgLRAuAC5ALsAuwC7gLuAnQDdAN6A3oDWQVZBUAGQAblBuYG9Af1B/oH+gcaCBoIJAgkCCgIKAhxCXEJRg5GDsYOxg78EPwQ1xfXF0MYQxinGqcaeBx9HCwdah14HXgdmx2/HXEgcSB/IH8gkCCcIHwsfSxvLW8tLy4vLgUwBTAxMDUwOzA7MJ0wnjD8MP4wFaAVoPik/aQMpgymf6Z/ppymnaYXpx+ncKdwp4iniKf4p/mnz6nPqeap5qlwqnCq3ardqvOq9Kpcq1+rcP9w/57/n/8AAAAAAAAAAEBrAQBDawEAk28BAJ9vAQDgbwEA4W8BAAAAAAAAAAAAqgCqALoAugC7AbsBwAHDAZQClALQBeoF7wXyBSAGPwZBBkoGbgZvBnEG0wbVBtUG7gbvBvoG/Ab/Bv8GEAcQBxIHLwdNB6UHsQexB8oH6gcACBUIQAhYCGAIagigCLQItgi9CAQJOQk9CT0JUAlQCVgJYQlyCYAJhQmMCY8JkAmTCagJqgmwCbIJsgm2CbkJvQm9Cc4JzgncCd0J3wnhCfAJ8Qn8CfwJBQoKCg8KEAoTCigKKgowCjIKMwo1CjYKOAo5ClkKXApeCl4Kcgp0CoUKjQqPCpEKkwqoCqoKsAqyCrMKtQq5Cr0KvQrQCtAK4ArhCvkK+QoFCwwLDwsQCxMLKAsqCzALMgszCzULOQs9Cz0LXAtdC18LYQtxC3ELgwuDC4ULiguOC5ALkguVC5kLmgucC5wLngufC6MLpAuoC6oLrgu5C9AL0AsFDAwMDgwQDBIMKAwqDDkMPQw9DFgMWgxgDGEMgAyADIUMjAyODJAMkgyoDKoMswy1DLkMvQy9DN4M3gzgDOEM8QzyDAUNDA0ODRANEg06DT0NPQ1ODU4NVA1WDV8NYQ16DX8NhQ2WDZoNsQ2zDbsNvQ29DcANxg0BDjAOMg4zDkAORQ6BDoIOhA6EDocOiA6KDooOjQ6NDpQOlw6ZDp8OoQ6jDqUOpQ6nDqcOqg6rDq0OsA6yDrMOvQ69DsAOxA7cDt8OAA8AD0APRw9JD2wPiA+MDwAQKhA/ED8QUBBVEFoQXRBhEGEQZRBmEG4QcBB1EIEQjhCOEAARSBJKEk0SUBJWElgSWBJaEl0SYBKIEooSjRKQErASshK1ErgSvhLAEsASwhLFEsgS1hLYEhATEhMVExgTWhOAE48TARRsFm8WfxaBFpoWoBbqFvEW+BYAFwwXDhcRFyAXMRdAF1EXYBdsF24XcBeAF7MX3BfcFyAYQhhEGHgYgBiEGIcYqBiqGKoYsBj1GAAZHhlQGW0ZcBl0GYAZqxmwGckZABoWGiAaVBoFGzMbRRtLG4MboBuuG68buhvlGwAcIxxNHE8cWhx3HOkc7BzuHPEc9Rz2HDUhOCEwLWctgC2WLaAtpi2oLa4tsC22Lbgtvi3ALcYtyC3OLdAt1i3YLd4tBjAGMDwwPDBBMJYwnzCfMKEw+jD/MP8wBTEvMTExjjGgMbox8DH/MQA0tU0ATu+fAKAUoBagjKTQpPekAKULphCmH6YqpiumbqZupqCm5aaPp4+n96f3p/unAagDqAWoB6gKqAyoIqhAqHOogqizqPKo96j7qPuo/aj+qAqpJakwqUapYKl8qYSpsqngqeSp56nvqfqp/qkAqiiqQKpCqkSqS6pgqm+qcap2qnqqeqp+qq+qsaqxqrWqtqq5qr2qwKrAqsKqwqrbqtyq4KrqqvKq8qoBqwarCasOqxGrFqsgqyarKKsuq8Cr4qsArKPXsNfG18vX+9cA+W36cPrZ+h37Hfsf+yj7Kvs2+zj7PPs++z77QPtB+0P7RPtG+7H70/s9/VD9j/2S/cf98P37/XD+dP52/vz+Zv9v/3H/nf+g/77/wv/H/8r/z//S/9f/2v/c/wAAAAAAAAEACwABAA0AAQAmAAEAKAABADoAAQA8AAEAPQABAD8AAQBNAAEAUAABAF0AAQCAAAEA+gABAIACAQCcAgEAoAIBANACAQAAAwEAHwMBAC0DAQBAAwEAQgMBAEkDAQBQAwEAdQMBAIADAQCdAwEAoAMBAMMDAQDIAwEAzwMBAFAEAQCdBAEAAAUBACcFAQAwBQEAYwUBAAAGAQA2BwEAQAcBAFUHAQBgBwEAZwcBAAAIAQAFCAEACAgBAAgIAQAKCAEANQgBADcIAQA4CAEAPAgBADwIAQA/CAEAVQgBAGAIAQB2CAEAgAgBAJ4IAQDgCAEA8ggBAPQIAQD1CAEAAAkBABUJAQAgCQEAOQkBAIAJAQC3CQEAvgkBAL8JAQAACgEAAAoBABAKAQATCgEAFQoBABcKAQAZCgEANQoBAGAKAQB8CgEAgAoBAJwKAQDACgEAxwoBAMkKAQDkCgEAAAsBADULAQBACwEAVQsBAGALAQByCwEAgAsBAJELAQAADAEASAwBAAANAQAjDQEAAA8BABwPAQAnDwEAJw8BADAPAQBFDwEAAxABADcQAQCDEAEArxABANAQAQDoEAEAAxEBACYRAQBEEQEARBEBAFARAQByEQEAdhEBAHYRAQCDEQEAshEBAMERAQDEEQEA2hEBANoRAQDcEQEA3BEBAAASAQAREgEAExIBACsSAQCAEgEAhhIBAIgSAQCIEgEAihIBAI0SAQCPEgEAnRIBAJ8SAQCoEgEAsBIBAN4SAQAFEwEADBMBAA8TAQAQEwEAExMBACgTAQAqEwEAMBMBADITAQAzEwEANRMBADkTAQA9EwEAPRMBAFATAQBQEwEAXRMBAGETAQAAFAEANBQBAEcUAQBKFAEAgBQBAK8UAQDEFAEAxRQBAMcUAQDHFAEAgBUBAK4VAQDYFQEA2xUBAAAWAQAvFgEARBYBAEQWAQCAFgEAqhYBAAAXAQAaFwEAABgBACsYAQD/GAEA/xgBAAAaAQAAGgEACxoBADIaAQA6GgEAOhoBAFAaAQBQGgEAXBoBAIMaAQCGGgEAiRoBAJ0aAQCdGgEAwBoBAPgaAQAAHAEACBwBAAocAQAuHAEAQBwBAEAcAQByHAEAjxwBAAAdAQAGHQEACB0BAAkdAQALHQEAMB0BAEYdAQBGHQEAYB0BAGUdAQBnHQEAaB0BAGodAQCJHQEAmB0BAJgdAQDgHgEA8h4BAAAgAQCZIwEAgCQBAEMlAQAAMAEALjQBAABEAQBGRgEAAGgBADhqAQBAagEAXmoBANBqAQDtagEAAGsBAC9rAQBjawEAd2sBAH1rAQCPawEAAG8BAERvAQBQbwEAUG8BAABwAQDxhwEAAIgBAPKKAQAAsAEAHrEBAHCxAQD7sgEAALwBAGq8AQBwvAEAfLwBAIC8AQCIvAEAkLwBAJm8AQAA6AEAxOgBAADuAQAD7gEABe4BAB/uAQAh7gEAIu4BACTuAQAk7gEAJ+4BACfuAQAp7gEAMu4BADTuAQA37gEAOe4BADnuAQA77gEAO+4BAELuAQBC7gEAR+4BAEfuAQBJ7gEASe4BAEvuAQBL7gEATe4BAE/uAQBR7gEAUu4BAFTuAQBU7gEAV+4BAFfuAQBZ7gEAWe4BAFvuAQBb7gEAXe4BAF3uAQBf7gEAX+4BAGHuAQBi7gEAZO4BAGTuAQBn7gEAau4BAGzuAQBy7gEAdO4BAHfuAQB57gEAfO4BAH7uAQB+7gEAgO4BAInuAQCL7gEAm+4BAKHuAQCj7gEApe4BAKnuAQCr7gEAu+4BAAAAAgDWpgIAAKcCADS3AgBAtwIAHbgCACC4AgChzgIAsM4CAODrAgAA+AIAHfoCAAAAAAAAAAAAxQHFAcgByAHLAcsB8gHyAYgfjx+YH58fqB+vH7wfvB/MH8wf/B/8HwAAAAAAAAAAQQBaAMAA1gDYAN4AAAEAAQIBAgEEAQQBBgEGAQgBCAEKAQoBDAEMAQ4BDgEQARABEgESARQBFAEWARYBGAEYARoBGgEcARwBHgEeASABIAEiASIBJAEkASYBJgEoASgBKgEqASwBLAEuAS4BMAEwATIBMgE0ATQBNgE2ATkBOQE7ATsBPQE9AT8BPwFBAUEBQwFDAUUBRQFHAUcBSgFKAUwBTAFOAU4BUAFQAVIBUgFUAVQBVgFWAVgBWAFaAVoBXAFcAV4BXgFgAWABYgFiAWQBZAFmAWYBaAFoAWoBagFsAWwBbgFuAXABcAFyAXIBdAF0AXYBdgF4AXkBewF7AX0BfQGBAYIBhAGEAYYBhwGJAYsBjgGRAZMBlAGWAZgBnAGdAZ8BoAGiAaIBpAGkAaYBpwGpAakBrAGsAa4BrwGxAbMBtQG1AbcBuAG8AbwBxAHEAccBxwHKAcoBzQHNAc8BzwHRAdEB0wHTAdUB1QHXAdcB2QHZAdsB2wHeAd4B4AHgAeIB4gHkAeQB5gHmAegB6AHqAeoB7AHsAe4B7gHxAfEB9AH0AfYB+AH6AfoB/AH8Af4B/gEAAgACAgICAgQCBAIGAgYCCAIIAgoCCgIMAgwCDgIOAhACEAISAhICFAIUAhYCFgIYAhgCGgIaAhwCHAIeAh4CIAIgAiICIgIkAiQCJgImAigCKAIqAioCLAIsAi4CLgIwAjACMgIyAjoCOwI9Aj4CQQJBAkMCRgJIAkgCSgJKAkwCTAJOAk4CcANwA3IDcgN2A3YDfwN/A4YDhgOIA4oDjAOMA44DjwORA6EDowOrA88DzwPSA9QD2APYA9oD2gPcA9wD3gPeA+AD4APiA+ID5APkA+YD5gPoA+gD6gPqA+wD7APuA+4D9AP0A/cD9wP5A/oD/QMvBGAEYARiBGIEZARkBGYEZgRoBGgEagRqBGwEbARuBG4EcARwBHIEcgR0BHQEdgR2BHgEeAR6BHoEfAR8BH4EfgSABIAEigSKBIwEjASOBI4EkASQBJIEkgSUBJQElgSWBJgEmASaBJoEnAScBJ4EngSgBKAEogSiBKQEpASmBKYEqASoBKoEqgSsBKwErgSuBLAEsASyBLIEtAS0BLYEtgS4BLgEugS6BLwEvAS+BL4EwATBBMMEwwTFBMUExwTHBMkEyQTLBMsEzQTNBNAE0ATSBNIE1ATUBNYE1gTYBNgE2gTaBNwE3ATeBN4E4ATgBOIE4gTkBOQE5gTmBOgE6ATqBOoE7ATsBO4E7gTwBPAE8gTyBPQE9AT2BPYE+AT4BPoE+gT8BPwE/gT+BAAFAAUCBQIFBAUEBQYFBgUIBQgFCgUKBQwFDAUOBQ4FEAUQBRIFEgUUBRQFFgUWBRgFGAUaBRoFHAUcBR4FHgUgBSAFIgUiBSQFJAUmBSYFKAUoBSoFKgUsBSwFLgUuBTEFVgWgEMUQxxDHEM0QzRCgE/UTkBy6HL0cvxwAHgAeAh4CHgQeBB4GHgYeCB4IHgoeCh4MHgweDh4OHhAeEB4SHhIeFB4UHhYeFh4YHhgeGh4aHhweHB4eHh4eIB4gHiIeIh4kHiQeJh4mHigeKB4qHioeLB4sHi4eLh4wHjAeMh4yHjQeNB42HjYeOB44HjoeOh48HjwePh4+HkAeQB5CHkIeRB5EHkYeRh5IHkgeSh5KHkweTB5OHk4eUB5QHlIeUh5UHlQeVh5WHlgeWB5aHloeXB5cHl4eXh5gHmAeYh5iHmQeZB5mHmYeaB5oHmoeah5sHmwebh5uHnAecB5yHnIedB50HnYedh54Hngeeh56HnwefB5+Hn4egB6AHoIegh6EHoQehh6GHogeiB6KHooejB6MHo4ejh6QHpAekh6SHpQelB6eHp4eoB6gHqIeoh6kHqQeph6mHqgeqB6qHqoerB6sHq4erh6wHrAesh6yHrQetB62HrYeuB64Hroeuh68Hrwevh6+HsAewB7CHsIexB7EHsYexh7IHsgeyh7KHswezB7OHs4e0B7QHtIe0h7UHtQe1h7WHtge2B7aHtoe3B7cHt4e3h7gHuAe4h7iHuQe5B7mHuYe6B7oHuoe6h7sHuwe7h7uHvAe8B7yHvIe9B70HvYe9h74Hvge+h76Hvwe/B7+Hv4eCB8PHxgfHR8oHy8fOB8/H0gfTR9ZH1kfWx9bH10fXR9fH18faB9vH7gfux/IH8sf2B/bH+gf7B/4H/sfAiECIQchByELIQ0hECESIRUhFSEZIR0hJCEkISYhJiEoISghKiEtITAhMyE+IT8hRSFFIYMhgyEALC4sYCxgLGIsZCxnLGcsaSxpLGssayxtLHAscixyLHUsdSx+LIAsgiyCLIQshCyGLIYsiCyILIosiiyMLIwsjiyOLJAskCySLJIslCyULJYsliyYLJgsmiyaLJwsnCyeLJ4soCygLKIsoiykLKQspiymLKgsqCyqLKosrCysLK4sriywLLAssiyyLLQstCy2LLYsuCy4LLosuiy8LLwsviy+LMAswCzCLMIsxCzELMYsxizILMgsyizKLMwszCzOLM4s0CzQLNIs0izULNQs1izWLNgs2CzaLNos3CzcLN4s3izgLOAs4iziLOss6yztLO0s8izyLECmQKZCpkKmRKZEpkamRqZIpkimSqZKpkymTKZOpk6mUKZQplKmUqZUplSmVqZWplimWKZaplqmXKZcpl6mXqZgpmCmYqZipmSmZKZmpmamaKZopmqmaqZspmymgKaApoKmgqaEpoSmhqaGpoimiKaKpoqmjKaMpo6mjqaQppCmkqaSppSmlKaWppammKaYppqmmqYipyKnJKckpyanJqcopyinKqcqpyynLKcupy6nMqcypzSnNKc2pzanOKc4pzqnOqc8pzynPqc+p0CnQKdCp0KnRKdEp0anRqdIp0inSqdKp0ynTKdOp06nUKdQp1KnUqdUp1SnVqdWp1inWKdap1qnXKdcp16nXqdgp2CnYqdip2SnZKdmp2anaKdop2qnaqdsp2ynbqdup3mnead7p3unfad+p4CngKeCp4KnhKeEp4anhqeLp4unjaeNp5CnkKeSp5KnlqeWp5inmKeap5qnnKecp56nnqegp6Cnoqeip6SnpKemp6anqKeop6qnrqewp7Sntqe2p7inuKch/zr/AAAAAAAAAAAABAEAJwQBALAEAQDTBAEAgAwBALIMAQCgGAEAvxgBAEBuAQBfbgEAANQBABnUAQA01AEATdQBAGjUAQCB1AEAnNQBAJzUAQCe1AEAn9QBAKLUAQCi1AEApdQBAKbUAQCp1AEArNQBAK7UAQC11AEA0NQBAOnUAQAE1QEABdUBAAfVAQAK1QEADdUBABTVAQAW1QEAHNUBADjVAQA51QEAO9UBAD7VAQBA1QEARNUBAEbVAQBG1QEAStUBAFDVAQBs1QEAhdUBAKDVAQC51QEA1NUBAO3VAQAI1gEA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8W8AAAAAAAAgtQAAAAAAABElAQAAAAAAMdoBAAAAAABC/wIAAAAAAHPZBAAAAAAAtdgHAAAAAAAosgwAAAAAAN2KFAAAAAAABT0hAAAAAADixzUAAAAAAOcEVwAAAAAAycyMAAAAAACw0eMAAAAAAHmecAEAAAAAKXBUAgAAAACiDsUDAAAAAMt+GQYAAAAAbY3eCQAAAAA4DPgPAAAAAKWZ1hkAAAAA3aXOKQAAAACCP6VDAAAAAF/lc20AAAAA4SQZsQAAAAD//////////wAAAAAAAAAA5IERAJqFEQCahREAmoURAJqFEQDtgREAmoURAJqFEQCahREAmoURAJqFEQCahREAmoURAJqFEQBCfxEAQn8RAEJ/EQBCfxEAQn8RAEJ/EQBCfxEAQn8RAJqFEQCahREAmoURAJqFEQCahREAmoURAJqFEQBggBEAmoURAJqFEQCahREAmoURAJqFEQCahREAmoURAJqFEQCahREAmoURAJqFEQCahREAmoURAJqFEQCahREAmoURAJqFEQCahREAmoURAJqFEQCahREA9oERAJqFEQCahREAuX8RAJqFEQCahREAmoURAHWEEQCahREAmoURAJqFEQCahREAbIQRAO9+EQCahREAmoURAJqFEQBRhBEAmoURAJqFEQCahREAmoURAJqFEQCahREAmoURAFeAEQCahREAmoURAJqFEQBahBEAmoURAGmAEQBygBEAY4QRAJqFEQC5fxEA6IsRAASMEQCgixEAoIsRAA+MEQCgixEAoIsRAKCLEQCgixEAoIsRAKCLEQCgixEAoIsRAKCLEQCgixEAoIsRAKCLEQCgixEAoIsRAKCLEQCgixEAoIsRAKCLEQCgixEAoIsRABqMEQCgixEAoIsRAKCLEQCgixEAKIwRAFGMEQC2jBEAeYwRAHmMEQDCjBEAeYwRAHmMEQB5jBEAeYwRAHmMEQB5jBEAeYwRAHmMEQB5jBEAeYwRAHmMEQB5jBEAeYwRAHmMEQB5jBEAeYwRAHmMEQB5jBEAeYwRAHmMEQDOjBEAeYwRAHmMEQB5jBEAeYwRANqMEQDqlREA6pYRAHuVEQCllREAAAAAAAAAAAAAAAAA/////////////////////////////////////////////////////////z7///8/NDU2Nzg5Ojs8Pf////////8AAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGf///////xobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIz/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z7//zQ1Njc4OTo7PD3/////////AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBn/////P/8aGxwdHh8gISIjJCUmJygpKissLS4vMDEyM/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9BQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OS1fAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAICBAQCBAQEBAQEBAQEBAQEBAQEBAQEAQECAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQIDBAUGBwgJAAAAAAAAAAoLDA0ODwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgsMDQ4PAAAAAAAAAAAA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H34SALp+EgAKfxIA7H0SAOx9EgDsfRIA7H0SAOx9EgDsfRIA7H0SAOx9EgDvgBIAd4MSAFOAEgBTgBIA+oESADmBEgA9ghIAnIISADSAEgA0gBIANIASADSAEgA0gBIANIASADSAEgA0gBIAa4QSAO2GEgAGhBIABoQSAHqFEgC2hBIAvYUSAByGEgCagxIAmoMSAJqDEgCagxIAmoMSAJqDEgCagxIAmoMSAGNzZGlvdXhYZkZlRWdHYUFucAABAgMEBQYHCAkKCwwNDg8QERIAAAAAAAAAAgAAAAAAAAAEAAAAAAAAAAgAAAAAAAAAEAAAAAAAAAAgAAAAAAAAAEAAAAAAAAAAgAAAAAAAAAAAAQAAAAAAAAACAAAAAAAAAAQAAAAAAAAACAAAAAAAAAAQAAAAAAAAACAAAAAAAAAAQAAAAAAAAACAAAAAAAAAAAABAAAAAAAAAAIAAAAAAAAABAAAAAAAAQAAAAAAAAD4AQAAAAAAAAD+AQAAAAAA+P8BAAAAAAAAAAQAAAAAAO2sEgBfuRIAoK4SAF+5EgAHrhIAX7kSAMyvEgDquxIA78USAKC8EgDvxRIAHbwSAO/FEgC0vRIAQtMSAI7TEgBo0xIAe9MSAFXTEgAw1RIAfNUSAFbVEgBp1RIAQ9USAGNzZGlvdXhYZkZlRWdHYUFucAAAAAAAAP////////////////////8BAAEBAAAAAAAAAAAAAAAAAAAAAAABAQCAAAAAJgAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAABAAB/AAAAJgAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAACsBEwBSARMAbgETAIYBEwCiARMAugETANIBEwACAhMA6gETAEMBEwAAAAAAAAAAAP//////////////////////////////////////////xP//yP/////////C/8H//9D/////////////////////D////wsJDf////+E//////////////8H//////////8O/wACCggMgAOF/4L/EAQRiP8BhwX//wb/hv////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9jc2Rpb3V4WGZGZUVnR2FBbnAAAKwQEwCyEBMAshATALIQEwC8EBMAwhATAMgQEwCyEBMAshATALIQEwCyEBMAshATALIQEwCyEBMAshATALIQEwCyEBMAshATALIQEwCyEBMAshATALIQEwCyEBMAzhATALIQEwCyEBMAshATALIQEwCyEBMAshATALIQEwCyEBMA1BATALIQEwC7EBMA2hATAOAQEwDmEBMA7BATALIQEwDyEBMAshATALIQEwCyEBMAshATAPgQEwD+EBMABBETALIQEwCyEBMAChETALIQEwAQERMAshATALIQEwAWERMAAAAAAAAAAAAAAAAAESUTABklEwAhJRMAKSUTAK8lEwDdJRMABiYTAEwmEwBvJhMAiiYTAAAAAAAAAAAAMAAxADIAMwA0ADUANgA3ADgAOQAAAAAAAAAAAAAAAAAwMTIzNDU2Nzg5YWJjZGVmAAAAAAAAAAAAAAAAAAAAADAwMDEwMjAzMDQwNTA2MDcwODA5MGEwYjBjMGQwZTBmMTAxMTEyMTMxNDE1MTYxNzE4MTkxYTFiMWMxZDFlMWYyMDIxMjIyMzI0MjUyNjI3MjgyOTJhMmIyYzJkMmUyZjMwMzEzMjMzMzQzNTM2MzczODM5M2EzYjNjM2QzZTNmNDA0MTQyNDM0NDQ1NDY0NzQ4NDk0YTRiNGM0ZDRlNGY1MDUxNTI1MzU0NTU1NjU3NTg1OTVhNWI1YzVkNWU1ZjYwNjE2MjYzNjQ2NTY2Njc2ODY5NmE2YjZjNmQ2ZTZmNzA3MTcyNzM3NDc1NzY3Nzc4Nzk3YTdiN2M3ZDdlN2Y4MDgxODI4Mzg0ODU4Njg3ODg4OThhOGI4YzhkOGU4ZjkwOTE5MjkzOTQ5NTk2OTc5ODk5OWE5YjljOWQ5ZTlmYTBhMWEyYTNhNGE1YTZhN2E4YTlhYWFiYWNhZGFlYWZiMGIxYjJiM2I0YjViNmI3YjhiOWJhYmJiY2JkYmViZmMwYzFjMmMzYzRjNWM2YzdjOGM5Y2FjYmNjY2RjZWNmZDBkMWQyZDNkNGQ1ZDZkN2Q4ZDlkYWRiZGNkZGRlZGZlMGUxZTJlM2U0ZTVlNmU3ZThlOWVhZWJlY2VkZWVlZmYwZjFmMmYzZjRmNWY2ZjdmOGY5ZmFmYmZjZmRmZWZmAAAAAAAAAAAAAAAAAAAAADAwMDEwMjAzMDQwNTA2MDcwODA5MTAxMTEyMTMxNDE1MTYxNzE4MTkyMDIxMjIyMzI0MjUyNjI3MjgyOTMwMzEzMjMzMzQzNTM2MzczODM5NDA0MTQyNDM0NDQ1NDY0NzQ4NDk1MDUxNTI1MzU0NTU1NjU3NTg1OTYwNjE2MjYzNjQ2NTY2Njc2ODY5NzA3MTcyNzM3NDc1NzY3Nzc4Nzk4MDgxODI4Mzg0ODU4Njg3ODg4OTkwOTE5MjkzOTQ5NTk2OTc5ODk5AAAAAAAAAAABAAAABQAAABkAAAB9AAAAcQIAADUMAAAJPQAALTEBAOH1BQBlzR0A+QKVAN0O6QJRSo0OAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAECAwQFBgcICSQkJCQkJCQKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQkJCQkJAoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAAAAAAAAAA////P6qqqir///8fmZmZGVVVVRWSJEkS////D47jOA7MzMwMuuiiC6qqqgqJndgJSZIkCYiIiAj///8Hh4eHB8dxHAevobwGZmZmBoZhGAZddNEFFrKQBVVVVQVRuB4FxE7sBC+hvQQkSZIEWO5pBERERARCCCEE////Az744APDw8MDgzqoA+M4jgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMBWVVXVAAAA4GdmZuarqqrqbtu27QAAAPByHMfxNDMz80YXXfRWVVX1d2In9rdt2/Z4d3f3AAAA+Hl4ePg5juP4UV5D+ZqZmfl6nuf5o4su+upNb/qrqqr6r0fh+jyxE/vRXkL73LZt+6gRlvu8u7v7vvfe+wAAAPzCBx/8PTw8/H3FV/wdx3H8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////8/qqqqqqqqqir/////////H5mZmZmZmZkZVVVVVVVVVRVJkiRJkiRJEv////////8POI7jOI7jOA7MzMzMzMzMDOiiiy666KILqqqqqqqqqgrYiZ3YiZ3YCSRJkiRJkiQJiIiIiIiIiAj/////////B4eHh4eHh4cHHMdxHMdxHAcaymsor6G8BmZmZmZmZmYGGIZhGIZhGAZ00UUXXXTRBQtZyEIWspAFVVVVVVVVVQW4HoXrUbgeBezETuzETuwEEtpLaC+hvQSSJEmSJEmSBITlnkZY7mkERERERERERAQIIYQQQgghBP////////8D+OCDDz744APDw8PDw8PDA6iDOqiDOqgDjuM4juM4jgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwFZVVVVVVVXVAAAAAAAAAOBnZmZmZmZm5quqqqqqqqrqt23btm3btu0AAAAAAAAA8MhxHMdxHMfxNDMzMzMzM/MYXXTRRRdd9FZVVVVVVVX1KHZiJ3ZiJ/bctm3btm3b9nh3d3d3d3f3AAAAAAAAAPh5eHh4eHh4+OQ4juM4juP45jWU11BeQ/mamZmZmZmZ+eh5nud5nuf5jC666KKLLvr1pje96U1v+quqqqqqqqr6SOF6FK5H4foUO7ETO7ET++4ltJfQXkL7btu2bdu2bft8GmG5pxGW+7y7u7u7u7v7+N5777333vsAAAAAAAAA/AgffPDBBx/8PTw8PDw8PPxYfMVXfMVX/HIcx3Ecx3H8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////////////////z+qqqqqqqqqqqqqqqqqqqoq////////////////////H5mZmZmZmZmZmZmZmZmZmRlVVVVVVVVVVVVVVVVVVVUVkiRJkiRJkiRJkiRJkiRJEv///////////////////w+O4ziO4ziO4ziO4ziO4zgOzMzMzMzMzMzMzMzMzMzMDIsuuuiiiy666KKLLrrooguqqqqqqqqqqqqqqqqqqqoKiZ3YiZ3YiZ3YiZ3YiZ3YCUmSJEmSJEmSJEmSJEmSJAmIiIiIiIiIiIiIiIiIiIgI////////////////////B4eHh4eHh4eHh4eHh4eHhwfHcRzHcRzHcRzHcRzHcRwHymsor6G8hvIaymsor6G8BmZmZmZmZmZmZmZmZmZmZgaGYRiGYRiGYRiGYRiGYRgGRRdddNFFF1100UUXXXTRBUIWspCFLGQhC1nIQhaykAVVVVVVVVVVVVVVVVVVVVUFhetRuB6F61G4HoXrUbgeBcRO7MRO7MRO7MRO7MRO7ATaS2gvob2E9hLaS2gvob0EJEmSJEmSJEmSJEmSJEmSBGmE5Z5GWO5phOWeRljuaQREREREREREREREREREREQEhBBCCCGEEEIIIYQQQgghBP///////////////////wODDz744IMPPvjggw8++OADw8PDw8PDw8PDw8PDw8PDA4M6qIM6qIM6qIM6qIM6qAPjOI7jOI7jOI7jOI7jOI4DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAVlVVVVVVVVVVVVVVVVVV1QAAAAAAAAAAAAAAAAAAAOBnZmZmZmZmZmZmZmZmZmbmq6qqqqqqqqqqqqqqqqqq6m7btm3btm3btm3btm3btu0AAAAAAAAAAAAAAAAAAADwchzHcRzHcRzHcRzHcRzH8TQzMzMzMzMzMzMzMzMzM/N10UUXXXTRRRdddNFFF130VlVVVVVVVVVVVVVVVVVV9XdiJ3ZiJ3ZiJ3ZiJ3ZiJ/a3bdu2bdu2bdu2bdu2bdv2eHd3d3d3d3d3d3d3d3d39wAAAAAAAAAAAAAAAAAAAPh5eHh4eHh4eHh4eHh4eHj4OY7jOI7jOI7jOI7jOI7j+DaU11BeQ3kN5TWU11BeQ/mamZmZmZmZmZmZmZmZmZn5ep7neZ7neZ7neZ7neZ7n+bvooosuuuiiiy666KKLLvq+6U1vetOb3vSmN73pTW/6q6qqqqqqqqqqqqqqqqqq+nsUrkfhehSuR+F6FK5H4fo8sRM7sRM7sRM7sRM7sRP7JrSX0F5CewntJbSX0F5C+9y2bdu2bdu2bdu2bdu2bfuXexphuacRlnsaYbmnEZb7vLu7u7u7u7u7u7u7u7u7+3zvvffee++9995777333vsAAAAAAAAAAAAAAAAAAAD8ffDBBx988MEHH3zwwQcf/D08PDw8PDw8PDw8PDw8PPx9xVd8xVd8xVd8xVd8xVf8HcdxHMdxHMdxHMdxHMdx/AAAAAAAAAAA////f1VVVVX///8/MzMzM6qqqiokSZIk////HxzHcRyZmZkZdNFFF1VVVRUTO7ETkiRJEhERERH///8PDw8PD47jOA5eQ3kNzMzMDAzDMAy66KILLGQhC6qqqgqjcD0KiZ3YCV5CewlJkiQJsNzTCIiIiAiEEEII////B3zwwQeHh4cHB3VQB8dxHAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////39VVVVVVVVVVf////////8/MzMzMzMzMzOqqqqqqqqqKpIkSZIkSZIk/////////x9xHMdxHMdxHJmZmZmZmZkZ0UUXXXTRRRdVVVVVVVVVFbETO7ETO7ETSZIkSZIkSRIREREREREREf////////8PDw8PDw8PDw84juM4juM4DjWU11BeQ3kNzMzMzMzMzAwwDMMwDMMwDOiiiy666KILFrKQhSxkIQuqqqqqqqqqCnA9CtejcD0K2Imd2Imd2AkltJfQXkJ7CSRJkiRJkiQJCMs9jbDc0wiIiIiIiIiICBBCCCGEEEII/////////wfwwQcffPDBB4eHh4eHh4cHUAd1UAd1UAccx3Ecx3EcBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////////////9/VVVVVVVVVVVVVVVVVVVVVf///////////////////z8zMzMzMzMzMzMzMzMzMzMzqqqqqqqqqqqqqqqqqqqqKiRJkiRJkiRJkiRJkiRJkiT///////////////////8fHMdxHMdxHMdxHMdxHMdxHJmZmZmZmZmZmZmZmZmZmRkXXXTRRRdddNFFF1100UUXVVVVVVVVVVVVVVVVVVVVFRM7sRM7sRM7sRM7sRM7sROSJEmSJEmSJEmSJEmSJEkSEREREREREREREREREREREf///////////////////w8PDw8PDw8PDw8PDw8PDw8PjuM4juM4juM4juM4juM4DpTXUF5DeQ3lNZTXUF5DeQ3MzMzMzMzMzMzMzMzMzMwMDMMwDMMwDMMwDMMwDMMwDIsuuuiiiy666KKLLrrooguFLGQhC1nIQhaykIUsZCELqqqqqqqqqqqqqqqqqqqqCgrXo3A9CtejcD0K16NwPQqJndiJndiJndiJndiJndgJ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TwFSAVYBWQFcAWABYwFmAWoBbQFwAXQBdwF6AX4BgQGEAYgBiwGOAZIBlQGYAZwBnwGiAaYBqQGsAa8BswG2AbkBvQHAAcMBxwHKAc0B0QHUAdcB2wHeAeEB5QHoAesB7wHyAfUB+QH8Af8BAwIGAgkCDAIQAhMCFgIaAh0CIAIkAicCKgIuAjECNAI4AjsCPgJCAkUCSAJMAk8CUgJWAlkCXAJgAmMCZgJpAm0CcAJzAncCegJ9AoEChAKHAosCjgKRApUCmAKbAp8CogKlAqkCrAKvArMCtgK5Ar0CwALDAscCygLNAtAC1ALXAtoC3gLhAuQC6ALrAu4C8gL1AvgC/AL/AgIDBgMJAwwDEAMTAxYDGgMdAyADJAMnAyoDLQMxAzQDNwM7Az4DQQNFA0gDSwNPA1IDVQNZA1wDXwNjA2YDaQNtA3ADcwN3A3oDfQOBA4QDhwOLA44DkQOUA5gDmwOeA6IDpQOoA6wDrwOyA7YDuQO8A8ADAAAAAAAAAAAAAO8iEwBdIxMAXSMTAF0jEwBdIxMAPyMTAF0jEwBdIxMAXSMTAF0jEwBdIxMAXSMTAF0jEwBdIxMAXSMTAF0jEwBdIxMAXSMTAF0jEwBdIxMAXSMTAF0jEwBdIxMAXSMTAF0jEwBdIxMAXSMTAF0jEwBdIxMAXSMTAF0jEwBdIxMA7yITAF0jEwBdIxMAXSMTAF0jEwA/IxMAAAAAAAAAAAD///////////////////////////////////////////////////////////////8AAQIDBAUGBwgJ/////////woLDA0OD///////////////////////////////////CgsMDQ4P////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AQAAAAUAAAAZAAAAfQAAAHECAAA1DAAACT0AAC0xAQDh9QUAZc0dAPkClQDdDukCUUqNDpVzwkgAAAAAAAAAAAEAAAAKAAAAZAAAAOgDAAAQJwAAoIYBAEBCDwCAlpgA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X3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFRTMkXzFOU0FfSVNGX0VFRk5TXzEwdW5pcXVlX3B0cklOUzVfMTRab25lSW5mb1NvdXJjZUVOU18xNGRlZmF1bHRfZGVsZXRlSVNJX0VFRUVTRV9FRUUATjRhYnNsMTJsdHNfMjAyMTExMDIxM3RpbWVfaW50ZXJuYWw0Y2N0ejEyX0dMT0JBTF9fTl8xMThGaWxlWm9uZUluZm9Tb3VyY2VFAE40YWJzbDEybHRzXzIwMjExMTAyMTN0aW1lX2ludGVybmFsNGNjdHoxMl9HTE9CQUxfX05fMTIxQW5kcm9pZFpvbmVJbmZvU291cmNlRQBONGFic2wxMmx0c18yMDIxMTEwMjEzdGltZV9pbnRlcm5hbDRjY3R6MTJfR0xPQkFMX19OXzEyMUZ1Y2hzaWFab25lSW5mb1NvdXJjZUUAWk40YWJzbDEybHRzXzIwMjExMTAyMTN0aW1lX2ludGVybmFsNGNjdHoxMlRpbWVab25lSW5mbzRMb2FkRVJLTlN0M19fMTEyYmFzaWNfc3RyaW5nSWNOUzRfMTFjaGFyX3RyYWl0c0ljRUVOUzRfOWFsbG9jYXRvckljRUVFRUUzJF8xAE5TdDNfXzExMF9fZnVuY3Rpb242X19iYXNlSUZOU18xMHVuaXF1ZV9wdHJJTjRhYnNsMTJsdHNfMjAyMTExMDIxM3RpbWVfaW50ZXJuYWw0Y2N0ejE0Wm9uZUluZm9Tb3VyY2VFTlNfMTRkZWZhdWx0X2RlbGV0ZUlTN19FRUVFUktOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFRUVFAE5TdDNfXzExNGJhc2ljX2lmc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFAE5TdDNfXzExM2Jhc2ljX2ZpbGVidWZJY05TXzExY2hhcl90cmFpdHNJY0VFRUUAMDEyMzQ1Njc4OQAwMTIzNDU2Nzg5AE40YWJzbDEybHRzXzIwMjExMTAyMTN0aW1lX2ludGVybmFsNGNjdHoxNFpvbmVJbmZvU291cmNlRQAAAAAAAAAAAAAAAAAAAABONGFic2wxMmx0c18yMDIxMTEwMjEzdGltZV9pbnRlcm5hbDRjY3R6MTJUaW1lWm9uZUxpYkNFAAAAAAAAAAAA/////x8AAAAcAAAAHwAAAB4AAAAfAAAAHgAAAB8AAAAfAAAAHgAAAB8AAAAeAAAAHwAAAAAAAAAAAAAAAAAAAPS9FgD0vRYAw70WALy9FgDkvBYA5LwWAP3/FgDt/xYA3f8WAM//FgDE/xYAtv8WAKr/FgCDARcAfAEXAHABFwBkARcAXQEXAFYBFwBKARcA9wMXAOcDFwDXAxcAyQMXAL4DFwCwAxcApAMXAKQFFwCdBRcAkQUXAIUFFwB+BRcAdwUXAGsFFwBcPBcAIz0XAA4/FwAOPxcADj8XAKY9FwAOPxcADj8XAA4/FwA5PhcAF2kZAFJpGQBZaRkAYGkZAB7+GQB6ARoAegEaAHoBGgB6ARoAegEaAHoBGgB6ARoAUv4ZAMf+GQB6ARoAegEaAHoBGgB6ARoAegEaAHoBGgAb/xkAWf8ZAJH/GQABABoAegEaAHoBGgB6ARoAegEaAF4AGgCmpqampqampqZZWaYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAIBAAACAAAAEAEAABAAAAASAQAAEgAAgAABAIAAAACAAgEAgAIAAIAQAQCAEAAAgBIBAIASAgAAAAMAAAACAAACAwAAAgIAABADAAAQAgAAEgMAABICAIAAAwCAAAIAgAIDAIACAgCAEAMAgBACAIASAwCAEgAAAIABAACAAAAAggEAAIIAAACQAQAAkAAAAJIBAACSAACAgAEAgIAAAICCAQCAggAAgJABAICQAACAkgEAgJICAACAAwAAgAIAAIIDAACCAgAAkAMAAJACAACSAwAAkgIAgIADAICAAgCAggMAgIICAICQAwCAkAIAgJIDAICSAAAAAAAAAAAgAgAAAAIAACAAAgAAAAIAIAICAAACAgAgQAAAAEAAACBCAAAAQgAAIEACAABAAgAgQgIAAEICACAAQAAAAEAAIAJAAAACQAAgAEIAAABCACACQgAAAkIAIEBAAABAQAAgQkAAAEJAACBAQgAAQEIAIEJCAABCQgAgAAABAAAAASACAAEAAgABIAACAQAAAgEgAgIBAAICASBAAAEAQAABIEIAAQBCAAEgQAIBAEACASBCAgEAQgIBIABAAQAAQAEgAkABAAJAASAAQgEAAEIBIAJCAQACQgEgQEABAEBAASBCQAEAQkABIEBCAQBAQgEgQkIBAEJCASAAAAAAEAAAAAAAQAAQAEAAAAAAEBAAABAAAEAQEABAECAAAAAwAAAAIABAADAAQAAgAAAQMAAAECAAQBAwAEAQACAAABAgAAAAIEAAECBAAAAgABAQIAAQACBAEBAgQBAgIAAAMCAAACAgQAAwIEAAICAAEDAgABAgIEAQMCBAEAAAAIAQAACAAABAgBAAQIAAAACQEAAAkAAAQJAQAECQIAAAgDAAAIAgAECAMABAgCAAAJAwAACQIABAkDAAQJAAIACAECAAgAAgQIAQIECAACAAkBAgAJAAIECQECBAkCAgAIAwIACAICBAgDAgQIAgIACQMCAAkCAgQJAwIECQAAAAAAABAAAAEAAAABEAAIAAAACAAQAAgBAAAIARAAABAAAAAQEAAAEQAAABEQAAgQAAAIEBAACBEAAAgREAAAAAAEAAAQBAABAAQAARAECAAABAgAEAQIAQAECAEQBAAQAAQAEBAEABEABAAREAQIEAAECBAQBAgRAAQIERAEAAACAAAAEgAAAQIAAAESAAgAAgAIABIACAECAAgBEgAAEAIAABASAAARAgAAERIACBACAAgQEgAIEQIACBESAAAAAgQAABIEAAECBAABEgQIAAIECAASBAgBAgQIARIEABACBAAQEgQAEQIEABESBAgQAgQIEBIECBECBAgREgQAAAAAAAAAEAAAAQAAAAEQBAAAAAQAABAEAAEABAABEAAAACAAAAAwAAABIAAAATAEAAAgBAAAMAQAASAEAAEwAAAQAAAAEBAAABEAAAAREAQAEAAEABAQBAARAAQAERAAABAgAAAQMAAAESAAABEwBAAQIAQAEDAEABEgBAARMAAQAAAAEAAQABABAAAQARAEEAAABBAAEAQQAQAEEAEQABAAIAAQADAAEAEgABABMAQQACAEEAAwBBABIAQQATAAEBAAABAQEAAQEQAAEBEQBBAQAAQQEBAEEBEABBAREAAQECAAEBAwABARIAAQETAEEBAgBBAQMAQQESAEEBEwAAAAAAAAAAgIAAAACAAACAAEAAAABAAICAQAAAgEAAgAAAIAAAACCAgAAgAIAAIIAAQCAAAEAggIBAIACAQCCAEAAAABAAAI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twG7AcEByQHNAc8B0wHfAecB6wHzAfcB/QEJAgsCHQIjAi0CMwI5AjsCQQJLAlECVwJZAl8CZQJpAmsCdwKBAoMChwKNApMClQKhAqUCqwKzAr0CxQLPAtcC3QLjAucC7wL1AvkCAQMFAxMDHQMpAysDNQM3AzsDPQNHA1UDWQNbA18DbQNxA3MDdwOLA48DlwOhA6kDrQOzA7kDxwPLA9ED1wPfA+UD8QP1A/sD/QMHBAkEDwQZBBsEJQQnBC0EPwRDBEUESQRPBFUEXQRjBGkEfwSBBIsEkwSdBKMEqQSxBL0EwQTHBM0EzwTVBOEE6wT9BP8EAwUJBQsFEQUVBRcFGwUnBSkFLwVRBVcFXQVlBXcFgQWPBZMFlQWZBZ8FpwWrBa0FswW/BckFywXPBdEF1QXbBecF8wX7BQcGDQYRBhcGHwYjBisGLwY9BkEGRwZJBk0GUwZVBlsGZQZ5Bn8GgwaFBp0GoQajBq0GuQa7BsUGzQbTBtkG3wbxBvcG+wb9BgkHEwcfBycHNwdFB0sHTwdRB1UHVwdhB20Hcwd5B4sHjQedB58HtQe7B8MHyQfNB88H0wfbB+EH6wftB/cHBQgPCBUIIQgjCCcIKQgzCD8IQQhRCFMIWQhdCF8IaQhxCIMImwifCKUIrQi9CL8IwwjLCNsI3QjhCOkI7wj1CPkIBQkHCR0JIwklCSsJLwk1CUMJSQlNCU8JVQlZCV8JawlxCXcJhQmJCY8JmwmjCakJrQnHCdkJ4wnrCe8J9Qn3Cf0JEwofCiEKMQo5Cj0KSQpXCmEKYwpnCm8KdQp7Cn8KgQqFCosKkwqXCpkKnwqpCqsKtQq9CsEKzwrZCuUK5wrtCvEK8woDCxELFQsbCyMLKQstCz8LRwtRC1cLXQtlC28LewuJC40LkwuZC5sLtwu5C8MLywvPC90L4QvpC/UL+wsHDAsMEQwlDC8MMQxBDFsMXwxhDG0Mcwx3DIMMiQyRDJUMnQyzDLUMuQy7DMcM4wzlDOsM8Qz3DPsMAQ0DDQ8NEw0fDSENKw0tDT0NPw1PDVUNaQ15DYENhQ2HDYsNjQ2jDasNtw29DccNyQ3NDdMN1Q3bDeUN5w3zDf0N/w0JDhcOHQ4hDicOLw41DjsOSw5XDlkOXQ5rDnEOdQ59DocOjw6VDpsOsQ63DrkOww7RDtUO2w7tDu8O+Q4HDwsP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AgAAAAIAAAIAAAgCAggIAgAICAAAAAgCAggAAgAAAAICCAAAAgAIAAAAAAAAAAgAAAAAAgIIAAIACAgCAgAAAAIACAIACAAAAggIABCAEEAAAAAAAIAQAAAAEEAQAABAEIAAAACAAEAAgBAAAIAAABAAEEAQAAAAAIAAQBAAEAAAgBBAAAAQQBAAAAAAABAAEIAAQBAAEEAAgAAAEIAQAAAAAEAAAAAAEAAQABCAAEAQgBAAAIAQQBAAAEAAAABAAAAQABCAAAAQgBBAEAAQAACAEEAAgABAEIAQABCAEEAQABAAEAAAQAAAAAAAAABAEIAAAAAAEAAQABBAAIAAAAAAAEAQgBAAEIAAQACAEEAAgAAAAAAAABAAAEAQAAAAEIAQQACAEAAAABBAEAAQQAAAEAAQgAAAAIAAQBCAAEAQAAAAAAAQQACAEAABAAAEAAEEBAABAAABAQAEAQAEAAAAAAQBAQAEAAEEAAABAAQAAAQAAAAEBAEAAAABAQQEAQEAAAEAAAABAAQEAAAAAAEABAAAAQQEAAEAAAEBAAABAQQEAAAEAAEAAAQBAAQEAAEABAEBBAAAAAQEAAEEAAAAAAAAAAAEAQEEAAABBAQAAQAAAQAAAAAABAABAQAAAQAEAAAABAQBAQAEAAAAAAABBAQAAQQAAQAEBAEABAAAAAAEAQEEBAEAAAABAQQAAQAABAAAAAQBAQQEAAAEAAABAAQBAQAEAAEEAAABAAQAAAAAAQAEBAEBAAABAAAEAQEEAAABAAAAAAQECBBAAAAQABAIAAAACBBAEAAAAAAAAEAQCBAAEAgAQAAAEEAQCAAAEAAAABAIEAAACAAAEAgQQAAAAEAAAAAAEAgAQBAAEEAAABAAAAgAAAAAEEAACBAAEAAAQBAAEAAACBAAAAAAAAAIAEAAABBAEAAQABAIAEAQCBBAEAAAQAAIAEAQCBAAAAAAQAAIAAAQABBAAAAQABAIAAAAAABAEAgQABAAAAAAABAAAAgAQAAAAAAACABAEAAQQBAAEAAAAAAAEAgQQBAIEEAAAABAAAgQQBAIAAAAABAAEAgQQAAIAEAAABBAAAAAQBAIEAAQCBAAAAAAABAIAAAQABBAEAAAAAgAAAEAAAQAACAEAQggAAEIAAQACCAEAQAAAAEIAAABACAAAAAgAAAIAAQBACAEAAggAAEIAAQBCAAAAAAABAEAAAAACCAAAQAgBAAAAAQACCAEAQAAAAAAIAAACCAAAAAgBAAIIAQBCCAAAQAAAAEIAAQAACAEAAAABAEIAAQBCCAEAAggAAEAAAABCAAAAQAgAAAAIAAACAAEAAgAAAAIAAQBACAEAQgAAAAAIAQBAAAAAAgABAAAIAABACAEAAgABAAAAAAAACAEAQggAAEIAAQBCCAEAAAAAAEAAAQBACAAAQgABAAIIAQAACAAAAAgBAEAAAABCCAAAAhAAACAQAAgAAAAAAAAICCAQAAgAAAgAABAIACAAAAgAEAgAABAICCAACAgAAAAAIAAIACAQAAAgAAAIIBAICAAAAAgAEAgAIBAACCAAAAAAAAgAABAAAAAACAggEAAIIBAICCAAAAggAAAAIBAIAAAQAAAAAAgIABAICAAACAAgEAgAAAAAACAACAAgEAgIAAAICCAQAAgAAAAAAAAIACAAAAAgAAgAABAACCAAAAgAEAAIABAICCAACAgAEAAAABAICCAACAgAAAAIABAIACAQAAAgAAAIIBAICAAAAAAAAAgAABAAACAQCAAgAAgIIAAACCAQCAAAEAAAABAACCAAEAAAAACAAAAAgABBAAAAQRCAAEEQAAAAEIAAAAAAAAAAAABBAIAAQQCAAAAQAABBAAAAABCAAEAQAABBAIAAAQCAAEAQAAABEAAAARCAAEAAAAAAAIAAQQAAAEAQgAABEAAAQRCAAAAQgABBAAAAARCAAAEQAABAAIAAAAAAAEEQgAAAEAAAQRAAAEEAgAAAEAAAAACAAAAAAABBEAAAQQCAAEEQgAAAEIAAAAAAAAAAgAABAAAAQQAAAAAAgABAAAAAAQCAAEAAgABAEIAAAQCAAAAQAAABEIAAQAAAAEAQgABBAAAAARAAAAEQgABBAAAAQBCAAEAQAABBEAAAIAAgCAAAIIggAACAAAAAAAAAAIggACAAAAAgCCAAIIggAAAAAAAACAAAIIAgAACAIAAggCAAAIggAAAIAAAgCAAAAIAgACCAIAAgAAAAAIggACCIIAAACAAAAAAAACCAAAAACAAAIAAgAACIIAAgCAAAIAAAAACAAAAgiCAAAAAAACAAAAAAgCAAAAggACCIIAAAgAAAAAgAAAAAAAAggCAAIAggAACIAAAAiCAAIAAAACCIIAAAACAAIAAAAACIIAAgiAAAIAAAACAIIAAACAAAIIAgAACAIAAAiAAAIAggAAAAAAAgiCAAIIAAAAAAAAAACCAAIAgAAACAIAAggArgQQAIwAAAAAAAAAAAAAAAf//////////////////////////////////////////////////////////////////////////////////////Af/////////////////////////////////////////////////////////////////////////////////////8AFGVPrlhjhyaH5KaIaC2hUDuotpyW5mzFfO4tImRjvEJ4VYZOVHsfpN7FlLAvTuxvwc1c9+IPSw08e9FH9RrUD8AAMaFjga3BATpzZ4+y2YjlbRCnGSBOQU/tSH4KK9ga009uqFLXnfv51ko/h3BJ6L/qN4zSLPBhWpCm/l+fjHC5b1mARg5KWp4mjvABFyKX7QsfRvZmPVESVebRGgXr70XJz5mLJfucple9CZAxVC5AT+tB2E1PHCGonLCQIi+lHaf0WZQAf//////////////////////////////////////////+lGGh4O/L5Zrf8wBSPcJpdA7tcm4iZxHrrtvtx6ROGQJK4EEACIAAAAAAAAAAAAAAAAAAAD//////////////////////////////////////////v////8AAAAAAAAAAP///////////////////////////////////////////////v////8AAAAAAAAAAP////yzMS+n4j7n5JiOBWvj+C0ZGB2cbv6BQRIDFAiPUBOHWsZWOY2KLtGdKoXI7dPsKu+qh8oivosFN46xxx7zIK10bh07Younm5hZ90HgglQqOFUC8l2/VSlsOlReOHJ2Crc2F95KliYsb12emL+Sktwp+PQdvSiaFHzp2jETtfC4wApgsc4dfoGdekMdfJDqDl/////////////////////////////////HY02B9Dct31gaDbJIsKd67OwZaszFKXMqhkjOPQMBBwAAAAAAAAAA/////wAAAAEAAAAAAAAAAAAAAAD/////////////////////AAAAAQAAAAAAAAAAAAAAAP///////////////FrGNdiqOpPns+u9VXaYhrxlHQawzFOw9jvOPD4n0mBLaxfR8uEsQkf4vOblY6RA8ncDfYEt6zOg9KE5RdiYwpZP40Li/hp/m47n60p8D54WK84zV2sxXs7LtkBoN79R9f////8AAAAA//////////+85vqtpxeehPO5ysL8YyVRK4EEACEAAAAAAAAAAAAAAP////////////////////8AAAAAAAAAAAAAAAH////////////////////+///////////////+tAUKhQwEs6v1QTJWUESwt9e/2LonCzlDI1X/tLcODL1rtL9/MhOQuUoDwdNWwhEiNDKA1hFcHSG9N2OItfcj+0wi3+bNQ3WgWgdHZETVgZmFAH40//////////////////8WouC48D4T3SlFXFwqPQAAAAAAAAAAPBSpGNQw53kBtu1f/JW6dRAlYncrc/t5xlU3pXZfkBgKVpXOV1Py3VzkGbrkuEqLJfMh3YiG6NKFXYglGP9xhbvSoBbFL5JPmTRiGmzBXA2LLMZXOs9Bkn9mG/1haV4vlxeg9QvHFVySYZVgTbQgPVLbHwc3G5EEew9vjRb5SPa8uzfhR2hWnuwLaoqeRjTkYzTXeWEnxLEVAD0ThQK+Wqt9TMB8g6qSBwwmQ0yfPVc3zOZ4YhWTDINzb2tbcruUJQniv0TCqGJn6NyPw5rBkWNwON3VpZZa9iTTIdSH1WHqc3GjonN26GWLd1MIgIQjPrS6BR5E+BC+7yFGEv4R+v2fsSwrH4kcIzySsVuNugGOysWKZz3Qtty+Ex9MsG5YCe3oJ+XGNQzi7RkYPKOBHvpSxlbA1o8nEU+GcAis1RnVM7XSNHdXYsDdvaH2ijtnk8Kep5p8flexZrLDUeZtu7NZUrY6MOnngHQ60NOvoNYn/Dyb0YOsxZu5GF2aYbRgHKrlGuE4ar1YNudJK2W3uO2HX+4UABMLzf/rrrInD51VCnN6MUaSyjrIu90vW5WccZoBrODfwQeNxG41bVZKJGqx+PQOQfhWaiZ7xP4aJJfBh5xtjmtAChurQs0CPj+AaezbBKgJA39f0Lo794U7qH8Zjq1zcgnGwa1nUA5El8A0q3nD8lZqhNH4HYSLBu6o72hsF1lEMSAwH1+R1TKv8VC9dV0xdcOZvGcv97r/fIM/ctdIGKQTBosc1OIw8dAjK1q+1SXik+3G8zRZg5nnb/xvYiImCRRDaiGQedm0u1A+xn7l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R19USU1FAEVYUEVDVElOR19BTl9BU04xX1NFUVVFTkNFAEVYUEVDVElOR19BTl9JTlRFR0VSAEVYUEVDVElOR19BTl9PQkpFQ1QARVhQRUNUSU5HX0FfQk9PTEVBTgBFWFBFQ1RJTkdfQV9USU1FAEVYUExJQ0lUX0xFTkdUSF9NSVNNQVRDSABFWFBMSUNJVF9UQUdfTk9UX0NPTlNUUlVDVEVEAEZJRUxEX01JU1NJTkcARklSU1RfTlVNX1RPT19MQVJHRQBIRUFERVJfVE9PX0xPTkcASUxMRUdBTF9CSVRTVFJJTkdfRk9STUFUAElMTEVHQUxfQk9PTEVBTgBJTExFR0FMX0NIQVJBQ1RFUlMASUxMRUdBTF9GT1JNQVQASUxMRUdBTF9IRVgASUxMRUdBTF9JTVBMSUNJVF9UQUcASUxMRUdBTF9JTlRFR0VSAElMTEVHQUxfTkVTVEVEX1RBR0dJTkcASUxMRUdBTF9OVUxMAElMTEVHQUxfTlVMTF9WQUxVRQBJTExFR0FMX09CSkVDVABJTExFR0FMX09QVElPTkFMX0FOWQBJTExFR0FMX09QVElPTlNfT05fSVRFTV9URU1QTEFURQBJTExFR0FMX1RBR0dFRF9BTlkASUxMRUdBTF9USU1FX1ZBTFVFAElOVEVHRVJfTk9UX0FTQ0lJX0ZPUk1BVABJTlRFR0VSX1RPT19MQVJHRV9GT1JfTE9ORwBJTlZBTElEX0JJVF9TVFJJTkdfQklUU19MRUZUAElOVkFMSURfQklUX1NUUklOR19QQURESU5HAElOVkFMSURfQk1QU1RSSU5HAElOVkFMSURfRElHSVQASU5WQUxJRF9NT0RJRklFUgBJTlZBTElEX05VTUJFUgBJTlZBTElEX09CSkVDVF9FTkNPRElORwBJTlZBTElEX1NFUEFSQVRPUgBJTlZBTElEX1RJTUVfRk9STUFUAElOVkFMSURfVU5JVkVSU0FMU1RSSU5HAElOVkFMSURfVVRGOFNUUklORwBMSVNUX0VSUk9SAE1JU1NJTkdfQVNOMV9FT1MATUlTU0lOR19FT0MATUlTU0lOR19TRUNPTkRfTlVNQkVSAE1JU1NJTkdfVkFMVUUATVNUUklOR19OT1RfVU5JVkVSU0FMAE1TVFJJTkdfV1JPTkdfVEFHAE5FU1RFRF9BU04xX0VSUk9SAE5FU1RFRF9BU04xX1NUUklORwBORVNURURfVE9PX0RFRVAATk9OX0hFWF9DSEFSQUNURVJTAE5PVF9BU0NJSV9GT1JNQVQATk9UX0VOT1VHSF9EQVRBAE5PX01BVENISU5HX0NIT0lDRV9UWVBFAE5VTExfSVNfV1JPTkdfTEVOR1RIAE9CSkVDVF9OT1RfQVNDSUlfRk9STUFUAE9ERF9OVU1CRVJfT0ZfQ0hBUlMAU0VDT05EX05VTUJFUl9UT09fTEFSR0UAU0VRVUVOQ0VfTEVOR1RIX01JU01BVENIAFNFUVVFTkNFX05PVF9DT05TVFJVQ1RFRABTRVFVRU5DRV9PUl9TRVRfTkVFRFNfQ09ORklHAFNIT1JUX0xJTkUAU1RSRUFNSU5HX05PVF9TVVBQT1JURUQAU1RSSU5HX1RPT19MT05HAFNUUklOR19UT09fU0hPUlQAVEFHX1ZBTFVFX1RPT19ISUdIAFRJTUVfTk9UX0FTQ0lJX0ZPUk1BVABUT09fTE9ORwBUWVBFX05PVF9DT05TVFJVQ1RFRABUWVBFX05PVF9QUklNSVRJVkUAVU5FWFBFQ1RFRF9FT0MAVU5JVkVSU0FMU1RSSU5HX0lTX1dST05HX0xFTkdUSABVTktOT1dOX0ZPUk1BVABVTktOT1dOX01FU1NBR0VfRElHRVNUX0FMR09SSVRITQBVTktOT1dOX1NJR05BVFVSRV9BTEdPUklUSE0AVU5LTk9XTl9UQUcAVU5TVVBQT1JURURfQU5ZX0RFRklORURfQllfVFlQRQBVTlNVUFBPUlRFRF9QVUJMSUNfS0VZX1RZUEUAVU5TVVBQT1JURURfVFlQRQBXUk9OR19QVUJMSUNfS0VZX1RZUEUAV1JPTkdfVEFHAFdST05HX1RZUEUAQkFEX0ZPUEVOX01PREUAQlJPS0VOX1BJUEUAQ09OTkVDVF9FUlJPUgBFUlJPUl9TRVRUSU5HX05CSU8ASU5WQUxJRF9BUkdVTUVOVABJTl9VU0UAS0VFUEFMSVZFAE5CSU9fQ09OTkVDVF9FUlJPUgBOT19IT1NUTkFNRV9TUEVDSUZJRUQATk9fUE9SVF9TUEVDSUZJRUQATk9fU1VDSF9GSUxFAE5VTExfUEFSQU1FVEVSAFNZU19MSUIAVU5BQkxFX1RPX0NSRUFURV9TT0NLRVQAVU5JTklUSUFMSVpFRABVTlNVUFBPUlRFRF9NRVRIT0QAV1JJVEVfVE9fUkVBRF9PTkxZX0JJTwBBUkcyX0xUX0FSRzMAQkFEX0VOQ09ESU5HAEJBRF9SRUNJUFJPQ0FMAEJJR05VTV9UT09fTE9ORwBCSVRTX1RPT19TTUFMTABDQUxMRURfV0lUSF9FVkVOX01PRFVMVVMARElWX0JZX1pFUk8ARVhQQU5EX09OX1NUQVRJQ19CSUdOVU1fREFUQQBJTlBVVF9OT1RfUkVEVUNFRABJTlZBTElEX0lOUFVUAElOVkFMSURfUkFOR0UATkVHQVRJVkVfTlVNQkVSAE5PVF9BX1NRVUFSRQBOT1RfSU5JVElBTElaRUQATk9fSU5WRVJTRQBQUklWQVRFX0tFWV9UT09fTEFSR0UAUF9JU19OT1RfUFJJTUUAVE9PX01BTllfSVRFUkFUSU9OUwBUT09fTUFOWV9URU1QT1JBUllfVkFSSUFCTEVTAEFFU19LRVlfU0VUVVBfRkFJTEVEAEJBRF9ERUNSWVBUAEJBRF9LRVlfTEVOR1RIAENUUkxfTk9UX0lNUExFTUVOVEVEAENUUkxfT1BFUkFUSU9OX05PVF9JTVBMRU1FTlRFRABEQVRBX05PVF9NVUxUSVBMRV9PRl9CTE9DS19MRU5HVEgASU5JVElBTElaQVRJT05fRVJST1IASU5QVVRfTk9UX0lOSVRJQUxJWkVEAElOVkFMSURfQURfU0laRQBJTlZBTElEX0tFWV9MRU5HVEgASU5WQUxJRF9OT05DRQBJTlZBTElEX05PTkNFX1NJWkUASU5WQUxJRF9PUEVSQVRJT04ASVZfVE9PX0xBUkdFAE5PX0NJUEhFUl9TRVQATk9fRElSRUNUSU9OX1NFVABPVVRQVVRfQUxJQVNFU19JTlBVVABUQUdfVE9PX0xBUkdFAFRPT19MQVJHRQBVTlNVUFBPUlRFRF9BRF9TSVpFAFVOU1VQUE9SVEVEX0lOUFVUX1NJWkUAVU5TVVBQT1JURURfS0VZX1NJWkUAVU5TVVBQT1JURURfTk9OQ0VfU0laRQBVTlNVUFBPUlRFRF9UQUdfU0laRQBXUk9OR19GSU5BTF9CTE9DS19MRU5HVEgATElTVF9DQU5OT1RfQkVfTlVMTABNSVNTSU5HX0NMT1NFX1NRVUFSRV9CUkFDS0VUAE1JU1NJTkdfRVFVQUxfU0lHTgBOT19DTE9TRV9CUkFDRQBVTkFCTEVfVE9fQ1JFQVRFX05FV19TRUNUSU9OAFZBUklBQkxFX0VYUEFOU0lPTl9UT09fTE9ORwBWQVJJQUJMRV9IQVNfTk9fVkFMVUUAQkFEX0dFTkVSQVRPUgBJTlZBTElEX1BVQktFWQBNT0RVTFVTX1RPT19MQVJHRQBOT19QUklWQVRFX1ZBTFVFAFVOS05PV05fSEFTSABCQURfUV9WQUxVRQBCQURfVkVSU0lPTgBJTlZBTElEX1BBUkFNRVRFUlMATUlTU0lOR19QQVJBTUVURVJTAE5FRURfTkVXX1NFVFVQX1ZBTFVFUwBCSUdOVU1fT1VUX09GX1JBTkdFAENPT1JESU5BVEVTX09VVF9PRl9SQU5HRQBEMklfRUNQS1BBUkFNRVRFUlNfRkFJTFVSRQBFQ19HUk9VUF9ORVdfQllfTkFNRV9GQUlMVVJFAEdST1VQMlBLUEFSQU1FVEVSU19GQUlMVVJFAEdST1VQX01JU01BVENIAEkyRF9FQ1BLUEFSQU1FVEVSU19GQUlMVVJFAElOQ09NUEFUSUJMRV9PQkpFQ1RTAElOVkFMSURfQ09GQUNUT1IASU5WQUxJRF9DT01QUkVTU0VEX1BPSU5UAElOVkFMSURfQ09NUFJFU1NJT05fQklUAElOVkFMSURfRU5DT0RJTkcASU5WQUxJRF9GSUVMRABJTlZBTElEX0ZPUk0ASU5WQUxJRF9HUk9VUF9PUkRFUgBJTlZBTElEX1BSSVZBVEVfS0VZAElOVkFMSURfU0NBTEFSAE1JU1NJTkdfUFJJVkFURV9LRVkATk9OX05BTUVEX0NVUlZFAFBLUEFSQU1FVEVSUzJHUk9VUF9GQUlMVVJFAFBPSU5UX0FUX0lORklOSVRZAFBPSU5UX0lTX05PVF9PTl9DVVJWRQBQVUJMSUNfS0VZX1ZBTElEQVRJT05fRkFJTEVEAFNMT1RfRlVMTABVTkRFRklORURfR0VORVJBVE9SAFVOS05PV05fR1JPVVAAVU5LTk9XTl9PUkRFUgBXUk9OR19DVVJWRV9QQVJBTUVURVJTAFdST05HX09SREVSAEtERl9GQUlMRUQAUE9JTlRfQVJJVEhNRVRJQ19GQUlMVVJFAFVOS05PV05fRElHRVNUX0xFTkdUSABCQURfU0lHTkFUVVJFAE5PVF9JTVBMRU1FTlRFRABSQU5ET01fTlVNQkVSX0dFTkVSQVRJT05fRkFJTEVEAE9QRVJBVElPTl9OT1RfU1VQUE9SVEVEAENPTU1BTkRfTk9UX1NVUFBPUlRFRABESUZGRVJFTlRfS0VZX1RZUEVTAERJRkZFUkVOVF9QQVJBTUVURVJTAEVNUFRZX1BTSwBFWFBFQ1RJTkdfQU5fRUNfS0VZX0tFWQBFWFBFQ1RJTkdfQU5fUlNBX0tFWQBFWFBFQ1RJTkdfQV9EU0FfS0VZAElMTEVHQUxfT1JfVU5TVVBQT1JURURfUEFERElOR19NT0RFAElOVkFMSURfQlVGRkVSX1NJWkUASU5WQUxJRF9ESUdFU1RfTEVOR1RIAElOVkFMSURfRElHRVNUX1RZUEUASU5WQUxJRF9LRVlCSVRTAElOVkFMSURfTUdGMV9NRABJTlZBTElEX1BBRERJTkdfTU9ERQBJTlZBTElEX1BFRVJfS0VZAElOVkFMSURfUFNTX1NBTFRMRU4ASU5WQUxJRF9TSUdOQVRVUkUAS0VZU19OT1RfU0VUAE1FTU9SWV9MSU1JVF9FWENFRURFRABOT1RfQV9QUklWQVRFX0tFWQBOT1RfWE9GX09SX0lOVkFMSURfTEVOR1RIAE5PX0RFRkFVTFRfRElHRVNUAE5PX0tFWV9TRVQATk9fTURDMl9TVVBQT1JUAE5PX05JRF9GT1JfQ1VSVkUATk9fT1BFUkFUSU9OX1NFVABOT19QQVJBTUVURVJTX1NFVABPUEVSQVRJT05fTk9UX1NVUFBPUlRFRF9GT1JfVEhJU19LRVlUWVBFAE9QRVJBVE9OX05PVF9JTklUSUFMSVpFRABVTktOT1dOX1BVQkxJQ19LRVlfVFlQRQBVTlNVUFBPUlRFRF9BTEdPUklUSE0AT1VUUFVUX1RPT19MQVJHRQBJTlZBTElEX09JRF9TVFJJTkcAVU5LTk9XTl9OSUQAQkFEX0JBU0U2NF9ERUNPREUAQkFEX0VORF9MSU5FAEJBRF9JVl9DSEFSUwBCQURfUEFTU1dPUkRfUkVBRABDSVBIRVJfSVNfTlVMTABFUlJPUl9DT05WRVJUSU5HX1BSSVZBVEVfS0VZAE5PVF9ERUtfSU5GTwBOT1RfRU5DUllQVEVEAE5PVF9QUk9DX1RZUEUATk9fU1RBUlRfTElORQBSRUFEX0tFWQBTSE9SVF9IRUFERVIAVU5TVVBQT1JURURfQ0lQSEVSAFVOU1VQUE9SVEVEX0VOQ1JZUFRJT04AQkFEX1BLQ1M3X1ZFUlNJT04ATk9UX1BLQ1M3X1NJR05FRF9EQVRBAE5PX0NFUlRJRklDQVRFU19JTkNMVURFRABOT19DUkxTX0lOQ0xVREVEAEJBRF9JVEVSQVRJT05fQ09VTlQAQkFEX1BLQ1MxMl9EQVRBAEJBRF9QS0NTMTJfVkVSU0lPTgBDSVBIRVJfSEFTX05PX09CSkVDVF9JREVOVElGSUVSAENSWVBUX0VSUk9SAEVOQ1JZUFRfRVJST1IARVJST1JfU0VUVElOR19DSVBIRVJfUEFSQU1TAElOQ09SUkVDVF9QQVNTV09SRABJTlZBTElEX0NIQVJBQ1RFUlMAS0VZR0VOX0ZBSUxVUkUAS0VZX0dFTl9FUlJPUgBNRVRIT0RfTk9UX1NVUFBPUlRFRABNSVNTSU5HX01BQwBNVUxUSVBMRV9QUklWQVRFX0tFWVNfSU5fUEtDUzEyAFBLQ1MxMl9QVUJMSUNfS0VZX0lOVEVHUklUWV9OT1RfU1VQUE9SVEVEAFBLQ1MxMl9UT09fREVFUExZX05FU1RFRABQUklWQVRFX0tFWV9ERUNPREVfRVJST1IAUFJJVkFURV9LRVlfRU5DT0RFX0VSUk9SAFVOS05PV05fQUxHT1JJVEhNAFVOS05PV05fQ0lQSEVSAFVOS05PV05fQ0lQSEVSX0FMR09SSVRITQBVTktOT1dOX0RJR0VTVABVTlNVUFBPUlRFRF9LRVlMRU5HVEgAVU5TVVBQT1JURURfS0VZX0RFUklWQVRJT05fRlVOQ1RJT04AVU5TVVBQT1JURURfT1BUSU9OUwBVTlNVUFBPUlRFRF9QUkYAVU5TVVBQT1JURURfUFJJVkFURV9LRVlfQUxHT1JJVEhNAFVOU1VQUE9SVEVEX1NBTFRfVFlQRQBCQURfRV9WQUxVRQBCQURfRklYRURfSEVBREVSX0RFQ1JZUFQAQkFEX1BBRF9CWVRFX0NPVU5UAEJBRF9SU0FfUEFSQU1FVEVSUwBCTE9DS19UWVBFX0lTX05PVF8wMQBCTE9DS19UWVBFX0lTX05PVF8wMgBCTl9OT1RfSU5JVElBTElaRUQAQ0FOTk9UX1JFQ09WRVJfTVVMVElfUFJJTUVfS0VZAENSVF9QQVJBTVNfQUxSRUFEWV9HSVZFTgBDUlRfVkFMVUVTX0lOQ09SUkVDVABEQVRBX0xFTl9OT1RfRVFVQUxfVE9fTU9EX0xFTgBEQVRBX1RPT19MQVJHRQBEQVRBX1RPT19MQVJHRV9GT1JfS0VZX1NJWkUAREFUQV9UT09fTEFSR0VfRk9SX01PRFVMVVMAREFUQV9UT09fU01BTEwAREFUQV9UT09fU01BTExfRk9SX0tFWV9TSVpFAERJR0VTVF9UT09fQklHX0ZPUl9SU0FfS0VZAERfRV9OT1RfQ09OR1JVRU5UX1RPXzEARF9PVVRfT0ZfUkFOR0UARU1QVFlfUFVCTElDX0tFWQBGSVJTVF9PQ1RFVF9JTlZBTElEAElOQ09OU0lTVEVOVF9TRVRfT0ZfQ1JUX1ZBTFVFUwBJTlRFUk5BTF9FUlJPUgBJTlZBTElEX01FU1NBR0VfTEVOR1RIAEtFWV9TSVpFX1RPT19TTUFMTABMQVNUX09DVEVUX0lOVkFMSUQATVVTVF9IQVZFX0FUX0xFQVNUX1RXT19QUklNRVMATk9fUFVCTElDX0VYUE9ORU5UAE5VTExfQkVGT1JFX0JMT0NLX01JU1NJTkcATl9OT1RfRVFVQUxfUF9RAE9BRVBfREVDT0RJTkdfRVJST1IAT05MWV9PTkVfT0ZfUF9RX0dJVkVOAE9VVFBVVF9CVUZGRVJfVE9PX1NNQUxMAFBBRERJTkdfQ0hFQ0tfRkFJTEVEAFBLQ1NfREVDT0RJTkdfRVJST1IAU0xFTl9DSEVDS19GQUlMRUQAU0xFTl9SRUNPVkVSWV9GQUlMRUQAVU5LTk9XTl9BTEdPUklUSE1fVFlQRQBVTktOT1dOX1BBRERJTkdfVFlQRQBWQUxVRV9NSVNTSU5HAFdST05HX1NJR05BVFVSRV9MRU5HVEgAQUxQTl9NSVNNQVRDSF9PTl9FQVJMWV9EQVRBAEFMUFNfTUlTTUFUQ0hfT05fRUFSTFlfREFUQQBBUFBMSUNBVElPTl9EQVRBX0lOU1RFQURfT0ZfSEFORFNIQUtFAEFQUExJQ0FUSU9OX0RBVEFfT05fU0hVVERPV04AQVBQX0RBVEFfSU5fSEFORFNIQUtFAEFUVEVNUFRfVE9fUkVVU0VfU0VTU0lPTl9JTl9ESUZGRVJFTlRfQ09OVEVYVABCQURfQUxFUlQAQkFEX0NIQU5HRV9DSVBIRVJfU1BFQwBCQURfREFUQV9SRVRVUk5FRF9CWV9DQUxMQkFDSwBCQURfREhfUF9MRU5HVEgAQkFEX0RJR0VTVF9MRU5HVEgAQkFEX0VDQ19DRVJUAEJBRF9FQ1BPSU5UAEJBRF9IQU5EU0hBS0VfUkVDT1JEAEJBRF9IRUxMT19SRVFVRVNUAEJBRF9MRU5HVEgAQkFEX1BBQ0tFVF9MRU5HVEgAQkFEX1JTQV9FTkNSWVBUAEJBRF9TUlRQX01LSV9WQUxVRQBCQURfU1JUUF9QUk9URUNUSU9OX1BST0ZJTEVfTElTVABCQURfU1NMX0ZJTEVUWVBFAEJBRF9XUklURV9SRVRSWQBCSU9fTk9UX1NFVABCTE9DS19DSVBIRVJfUEFEX0lTX1dST05HAENBTk5PVF9IQVZFX0JPVEhfUFJJVktFWV9BTkRfTUVUSE9EAENBTk5PVF9QQVJTRV9MRUFGX0NFUlQAQ0FfRE5fTEVOR1RIX01JU01BVENIAENBX0ROX1RPT19MT05HAENDU19SRUNFSVZFRF9FQVJMWQBDRVJUSUZJQ0FURV9BTkRfUFJJVkFURV9LRVlfTUlTTUFUQ0gAQ0VSVElGSUNBVEVfVkVSSUZZX0ZBSUxFRABDRVJUX0NCX0VSUk9SAENFUlRfREVDT01QUkVTU0lPTl9GQUlMRUQAQ0VSVF9MRU5HVEhfTUlTTUFUQ0gAQ0hBTk5FTF9JRF9OT1RfUDI1NgBDSEFOTkVMX0lEX1NJR05BVFVSRV9JTlZBTElEAENJUEhFUl9NSVNNQVRDSF9PTl9FQVJMWV9EQVRBAENJUEhFUl9PUl9IQVNIX1VOQVZBSUxBQkxFAENMSUVOVEhFTExPX1BBUlNFX0ZBSUxFRABDTElFTlRIRUxMT19UTFNFWFQAQ09OTkVDVElPTl9SRUpFQ1RFRABDT05ORUNUSU9OX1RZUEVfTk9UX1NFVABDT1VMRF9OT1RfUEFSU0VfSElOVFMAQ1VTVE9NX0VYVEVOU0lPTl9FUlJPUgBEQVRBX0xFTkdUSF9UT09fTE9ORwBERUNSWVBUSU9OX0ZBSUxFRABERUNSWVBUSU9OX0ZBSUxFRF9PUl9CQURfUkVDT1JEX01BQwBESF9QVUJMSUNfVkFMVUVfTEVOR1RIX0lTX1dST05HAERIX1BfVE9PX0xPTkcARElHRVNUX0NIRUNLX0ZBSUxFRABET1dOR1JBREVfREVURUNURUQARFRMU19NRVNTQUdFX1RPT19CSUcARFVQTElDQVRFX0VYVEVOU0lPTgBEVVBMSUNBVEVfS0VZX1NIQVJFAERVUExJQ0FURV9TSUdOQVRVUkVfQUxHT1JJVEhNAEVBUkxZX0RBVEFfTk9UX0lOX1VTRQBFQ0NfQ0VSVF9OT1RfRk9SX1NJR05JTkcARUNIX1JFSkVDVEVEAEVDSF9TRVJWRVJfQ09ORklHX0FORF9QUklWQVRFX0tFWV9NSVNNQVRDSABFQ0hfU0VSVkVSX0NPTkZJR19VTlNVUFBPUlRFRF9FWFRFTlNJT04ARUNIX1NFUlZFUl9XT1VMRF9IQVZFX05PX1JFVFJZX0NPTkZJR1MARU1QVFlfSEVMTE9fUkVUUllfUkVRVUVTVABFTVNfU1RBVEVfSU5DT05TSVNURU5UAEVOQ1JZUFRFRF9MRU5HVEhfVE9PX0xPTkcARVJST1JfQURESU5HX0VYVEVOU0lPTgBFUlJPUl9JTl9SRUNFSVZFRF9DSVBIRVJfTElTVABFUlJPUl9QQVJTSU5HX0VYVEVOU0lPTgBFWENFU1NJVkVfTUVTU0FHRV9TSVpFAEVYQ0VTU19IQU5EU0hBS0VfREFUQQBFWFRSQV9EQVRBX0lOX01FU1NBR0UARlJBR01FTlRfTUlTTUFUQ0gAR09UX05FWFRfUFJPVE9fV0lUSE9VVF9FWFRFTlNJT04ASEFORFNIQUtFX0ZBSUxVUkVfT05fQ0xJRU5UX0hFTExPAEhBTkRTSEFLRV9OT1RfQ09NUExFVEUASFRUUFNfUFJPWFlfUkVRVUVTVABIVFRQX1JFUVVFU1QASU5BUFBST1BSSUFURV9GQUxMQkFDSwBJTkNPTlNJU1RFTlRfQ0xJRU5UX0hFTExPAElOQ09OU0lTVEVOVF9FQ0hfTkVHT1RJQVRJT04ASU5WQUxJRF9BTFBOX1BST1RPQ09MAElOVkFMSURfQUxQTl9QUk9UT0NPTF9MSVNUAElOVkFMSURfQ0xJRU5UX0hFTExPX0lOTkVSAElOVkFMSURfQ09NTUFORABJTlZBTElEX0NPTVBSRVNTSU9OX0xJU1QASU5WQUxJRF9ERUxFR0FURURfQ1JFREVOVElBTABJTlZBTElEX0VDSF9DT05GSUdfTElTVABJTlZBTElEX0VDSF9QVUJMSUNfTkFNRQBJTlZBTElEX01FU1NBR0UASU5WQUxJRF9PVVRFUl9SRUNPUkRfVFlQRQBJTlZBTElEX1NDVF9MSVNUAElOVkFMSURfU0lHTkFUVVJFX0FMR09SSVRITQBJTlZBTElEX1NTTF9TRVNTSU9OAElOVkFMSURfVElDS0VUX0tFWVNfTEVOR1RIAEtFWV9VU0FHRV9CSVRfSU5DT1JSRUNUAExFTkdUSF9NSVNNQVRDSABNSVNTSU5HX0VYVEVOU0lPTgBNSVNTSU5HX0tFWV9TSEFSRQBNSVNTSU5HX1JTQV9DRVJUSUZJQ0FURQBNSVNTSU5HX1RNUF9ESF9LRVkATUlTU0lOR19UTVBfRUNESF9LRVkATUlYRURfU1BFQ0lBTF9PUEVSQVRPUl9XSVRIX0dST1VQUwBNVFVfVE9PX1NNQUxMAE5FR09USUFURURfQUxQU19XSVRIT1VUX0FMUE4ATkVHT1RJQVRFRF9CT1RIX05QTl9BTkRfQUxQTgBORUdPVElBVEVEX1RCX1dJVEhPVVRfRU1TX09SX1JJAE5FU1RFRF9HUk9VUABOT19BUFBMSUNBVElPTl9QUk9UT0NPTABOT19DRVJUSUZJQ0FURVNfUkVUVVJORUQATk9fQ0VSVElGSUNBVEVfQVNTSUdORUQATk9fQ0VSVElGSUNBVEVfU0VUAE5PX0NJUEhFUlNfQVZBSUxBQkxFAE5PX0NJUEhFUlNfUEFTU0VEAE5PX0NJUEhFUlNfU1BFQ0lGSUVEAE5PX0NJUEhFUl9NQVRDSABOT19DT01NT05fU0lHTkFUVVJFX0FMR09SSVRITVMATk9fQ09NUFJFU1NJT05fU1BFQ0lGSUVEAE5PX0dST1VQU19TUEVDSUZJRUQATk9fTUVUSE9EX1NQRUNJRklFRABOT19QMjU2X1NVUFBPUlQATk9fUFJJVkFURV9LRVlfQVNTSUdORUQATk9fUkVORUdPVElBVElPTgBOT19SRVFVSVJFRF9ESUdFU1QATk9fU0hBUkVEX0NJUEhFUgBOT19TSEFSRURfR1JPVVAATk9fU1VQUE9SVEVEX1ZFUlNJT05TX0VOQUJMRUQATlVMTF9TU0xfQ1RYAE5VTExfU1NMX01FVEhPRF9QQVNTRUQAT0NTUF9DQl9FUlJPUgBPTERfU0VTU0lPTl9DSVBIRVJfTk9UX1JFVFVSTkVEAE9MRF9TRVNTSU9OX1BSRl9IQVNIX01JU01BVENIAE9MRF9TRVNTSU9OX1ZFUlNJT05fTk9UX1JFVFVSTkVEAE9VVEVSX0VYVEVOU0lPTl9OT1RfRk9VTkQAUEFSU0VfVExTRVhUAFBBVEhfVE9PX0xPTkcAUEVFUl9ESURfTk9UX1JFVFVSTl9BX0NFUlRJRklDQVRFAFBFRVJfRVJST1JfVU5TVVBQT1JURURfQ0VSVElGSUNBVEVfVFlQRQBQUkVfU0hBUkVEX0tFWV9NVVNUX0JFX0xBU1QAUFJJVkFURV9LRVlfT1BFUkFUSU9OX0ZBSUxFRABQUk9UT0NPTF9JU19TSFVURE9XTgBQU0tfSURFTlRJVFlfQklOREVSX0NPVU5UX01JU01BVENIAFBTS19JREVOVElUWV9OT1RfRk9VTkQAUFNLX05PX0NMSUVOVF9DQgBQU0tfTk9fU0VSVkVSX0NCAFFVSUNfSU5URVJOQUxfRVJST1IAUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVSU19NSVNDT05GSUdVUkVEAFJFQURfVElNRU9VVF9FWFBJUkVEAFJFQ09SRF9MRU5HVEhfTUlTTUFUQ0gAUkVDT1JEX1RPT19MQVJHRQBSRU5FR09USUFUSU9OX0VNU19NSVNNQVRDSABSRU5FR09USUFUSU9OX0VOQ09ESU5HX0VSUgBSRU5FR09USUFUSU9OX01JU01BVENIAFJFUVVJUkVEX0NJUEhFUl9NSVNTSU5HAFJFU1VNRURfRU1TX1NFU1NJT05fV0lUSE9VVF9FTVNfRVhURU5TSU9OAFJFU1VNRURfTk9OX0VNU19TRVNTSU9OX1dJVEhfRU1TX0VYVEVOU0lPTgBTQ1NWX1JFQ0VJVkVEX1dIRU5fUkVORUdPVElBVElORwBTRUNPTkRfU0VSVkVSSEVMTE9fVkVSU0lPTl9NSVNNQVRDSABTRVJWRVJIRUxMT19UTFNFWFQAU0VSVkVSX0NFUlRfQ0hBTkdFRABTRVJWRVJfRUNIT0VEX0lOVkFMSURfU0VTU0lPTl9JRABTRVNTSU9OX0lEX0NPTlRFWFRfVU5JTklUSUFMSVpFRABTRVNTSU9OX01BWV9OT1RfQkVfQ1JFQVRFRABTSFVURE9XTl9XSElMRV9JTl9JTklUAFNJR05BVFVSRV9BTEdPUklUSE1TX0VYVEVOU0lPTl9TRU5UX0JZX1NFUlZFUgBTUlRQX0NPVUxEX05PVF9BTExPQ0FURV9QUk9GSUxFUwBTUlRQX1VOS05PV05fUFJPVEVDVElPTl9QUk9GSUxFAFNTTDNfRVhUX0lOVkFMSURfU0VSVkVSTkFNRQBTU0xWM19BTEVSVF9CQURfQ0VSVElGSUNBVEUAU1NMVjNfQUxFUlRfQkFEX1JFQ09SRF9NQUMAU1NMVjNfQUxFUlRfQ0VSVElGSUNBVEVfRVhQSVJFRABTU0xWM19BTEVSVF9DRVJUSUZJQ0FURV9SRVZPS0VEAFNTTFYzX0FMRVJUX0NFUlRJRklDQVRFX1VOS05PV04AU1NMVjNfQUxFUlRfQ0xPU0VfTk9USUZZAFNTTFYzX0FMRVJUX0RFQ09NUFJFU1NJT05fRkFJTFVSRQBTU0xWM19BTEVSVF9IQU5EU0hBS0VfRkFJTFVSRQBTU0xWM19BTEVSVF9JTExFR0FMX1BBUkFNRVRFUgBTU0xWM19BTEVSVF9OT19DRVJUSUZJQ0FURQBTU0xWM19BTEVSVF9VTkVYUEVDVEVEX01FU1NBR0UAU1NMVjNfQUxFUlRfVU5TVVBQT1JURURfQ0VSVElGSUNBVEUAU1NMX0NUWF9IQVNfTk9fREVGQVVMVF9TU0xfVkVSU0lPTgBTU0xfSEFORFNIQUtFX0ZBSUxVUkUAU1NMX1NFU1NJT05fSURfQ09OVEVYVF9UT09fTE9ORwBTU0xfU0VTU0lPTl9JRF9UT09fTE9ORwBUSUNLRVRfRU5DUllQVElPTl9GQUlMRUQAVExTMTNfRE9XTkdSQURFAFRMU1YxX0FMRVJUX0FDQ0VTU19ERU5JRUQAVExTVjFfQUxFUlRfQkFEX0NFUlRJRklDQVRFX0hBU0hfVkFMVUUAVExTVjFfQUxFUlRfQkFEX0NFUlRJRklDQVRFX1NUQVRVU19SRVNQT05TRQBUTFNWMV9BTEVSVF9DRVJUSUZJQ0FURV9SRVFVSVJFRABUTFNWMV9BTEVSVF9DRVJUSUZJQ0FURV9VTk9CVEFJTkFCTEUAVExTVjFfQUxFUlRfREVDT0RFX0VSUk9SAFRMU1YxX0FMRVJUX0RFQ1JZUFRJT05fRkFJTEVEAFRMU1YxX0FMRVJUX0RFQ1JZUFRfRVJST1IAVExTVjFfQUxFUlRfRUNIX1JFUVVJUkVEAFRMU1YxX0FMRVJUX0VYUE9SVF9SRVNUUklDVElPTgBUTFNWMV9BTEVSVF9JTkFQUFJPUFJJQVRFX0ZBTExCQUNLAFRMU1YxX0FMRVJUX0lOU1VGRklDSUVOVF9TRUNVUklUWQBUTFNWMV9BTEVSVF9JTlRFUk5BTF9FUlJPUgBUTFNWMV9BTEVSVF9OT19BUFBMSUNBVElPTl9QUk9UT0NPTABUTFNWMV9BTEVSVF9OT19SRU5FR09USUFUSU9OAFRMU1YxX0FMRVJUX1BST1RPQ09MX1ZFUlNJT04AVExTVjFfQUxFUlRfUkVDT1JEX09WRVJGTE9XAFRMU1YxX0FMRVJUX1VOS05PV05fQ0EAVExTVjFfQUxFUlRfVU5LTk9XTl9QU0tfSURFTlRJVFkAVExTVjFfQUxFUlRfVU5SRUNPR05JWkVEX05BTUUAVExTVjFfQUxFUlRfVU5TVVBQT1JURURfRVhURU5TSU9OAFRMU1YxX0FMRVJUX1VTRVJfQ0FOQ0VMTEVEAFRMU19QRUVSX0RJRF9OT1RfUkVTUE9ORF9XSVRIX0NFUlRJRklDQVRFX0xJU1QAVExTX1JTQV9FTkNSWVBURURfVkFMVUVfTEVOR1RIX0lTX1dST05HAFRPT19NQU5ZX0VNUFRZX0ZSQUdNRU5UUwBUT09fTUFOWV9LRVlfVVBEQVRFUwBUT09fTUFOWV9XQVJOSU5HX0FMRVJUUwBUT09fTVVDSF9SRUFEX0VBUkxZX0RBVEEAVE9PX01VQ0hfU0tJUFBFRF9FQVJMWV9EQVRBAFVOQUJMRV9UT19GSU5EX0VDREhfUEFSQU1FVEVSUwBVTkNPTVBSRVNTRURfQ0VSVF9UT09fTEFSR0UAVU5FWFBFQ1RFRF9DT01QQVRJQklMSVRZX01PREUAVU5FWFBFQ1RFRF9FWFRFTlNJT04AVU5FWFBFQ1RFRF9FWFRFTlNJT05fT05fRUFSTFlfREFUQQBVTkVYUEVDVEVEX01FU1NBR0UAVU5FWFBFQ1RFRF9PUEVSQVRPUl9JTl9HUk9VUABVTkVYUEVDVEVEX1JFQ09SRABVTktOT1dOX0FMRVJUX1RZUEUAVU5LTk9XTl9DRVJUSUZJQ0FURV9UWVBFAFVOS05PV05fQ0VSVF9DT01QUkVTU0lPTl9BTEcAVU5LTk9XTl9DSVBIRVJfUkVUVVJORUQAVU5LTk9XTl9DSVBIRVJfVFlQRQBVTktOT1dOX0tFWV9FWENIQU5HRV9UWVBFAFVOS05PV05fUFJPVE9DT0wAVU5LTk9XTl9TU0xfVkVSU0lPTgBVTktOT1dOX1NUQVRFAFVOU0FGRV9MRUdBQ1lfUkVORUdPVElBVElPTl9ESVNBQkxFRABVTlNVUFBPUlRFRF9DT01QUkVTU0lPTl9BTEdPUklUSE0AVU5TVVBQT1JURURfRUNIX1NFUlZFUl9DT05GSUcAVU5TVVBQT1JURURfRUxMSVBUSUNfQ1VSVkUAVU5TVVBQT1JURURfUFJPVE9DT0wAVU5TVVBQT1JURURfUFJPVE9DT0xfRk9SX0NVU1RPTV9LRVkAV1JPTkdfQ0VSVElGSUNBVEVfVFlQRQBXUk9OR19DSVBIRVJfUkVUVVJORUQAV1JPTkdfQ1VSVkUAV1JPTkdfRU5DUllQVElPTl9MRVZFTF9SRUNFSVZFRABXUk9OR19NRVNTQUdFX1RZUEUAV1JPTkdfU0lHTkFUVVJFX1RZUEUAV1JPTkdfU1NMX1ZFUlNJT04AV1JPTkdfVkVSU0lPTl9OVU1CRVIAV1JPTkdfVkVSU0lPTl9PTl9FQVJMWV9EQVRBAFg1MDlfTElCAFg1MDlfVkVSSUZJQ0FUSU9OX1NFVFVQX1BST0JMRU1TAEJBRF9WQUxJRElUWV9DSEVDSwBERUNPREVfRkFJTFVSRQBJTlZBTElEX0tFWV9JRABJTlZBTElEX01FVEFEQVRBAElOVkFMSURfTUVUQURBVEFfS0VZAElOVkFMSURfUFJPT0YASU5WQUxJRF9UT0tFTgBOT19LRVlTX0NPTkZJR1VSRUQATk9fU1JSX0tFWV9DT05GSUdVUkVEAE9WRVJfQkFUQ0hTSVpFAFNSUl9TSUdOQVRVUkVfRVJST1IAVE9PX01BTllfS0VZUwBBS0lEX01JU01BVENIAEJBRF9YNTA5X0ZJTEVUWVBFAEJBU0U2NF9ERUNPREVfRVJST1IAQ0FOVF9DSEVDS19ESF9LRVkAQ0VSVF9BTFJFQURZX0lOX0hBU0hfVEFCTEUAQ1JMX0FMUkVBRFlfREVMVEEAQ1JMX1ZFUklGWV9GQUlMVVJFAERFTFRBX0NSTF9XSVRIT1VUX0NSTF9OVU1CRVIASURQX01JU01BVENIAElOVkFMSURfRElSRUNUT1JZAElOVkFMSURfRklFTERfRk9SX1ZFUlNJT04ASU5WQUxJRF9GSUVMRF9OQU1FAElOVkFMSURfUEFSQU1FVEVSAElOVkFMSURfUFNTX1BBUkFNRVRFUlMASU5WQUxJRF9UUlVTVABJTlZBTElEX1ZFUlNJT04ASVNTVUVSX01JU01BVENIAEtFWV9UWVBFX01JU01BVENIAEtFWV9WQUxVRVNfTUlTTUFUQ0gATE9BRElOR19DRVJUX0RJUgBMT0FESU5HX0RFRkFVTFRTAE5BTUVfVE9PX0xPTkcATkVXRVJfQ1JMX05PVF9ORVdFUgBOT19DRVJUSUZJQ0FURV9GT1VORABOT19DRVJUSUZJQ0FURV9PUl9DUkxfRk9VTkQATk9fQ0VSVF9TRVRfRk9SX1VTX1RPX1ZFUklGWQBOT19DUkxfRk9VTkQATk9fQ1JMX05VTUJFUgBQVUJMSUNfS0VZX0RFQ09ERV9FUlJPUgBQVUJMSUNfS0VZX0VOQ09ERV9FUlJPUgBTSE9VTERfUkVUUlkAU0lHTkFUVVJFX0FMR09SSVRITV9NSVNNQVRDSABVTktOT1dOX0tFWV9UWVBFAFVOS05PV05fUFVSUE9TRV9JRABVTktOT1dOX1RSVVNUX0lEAFdST05HX0xPT0tVUF9UWVBFAEJBRF9JUF9BRERSRVNTAEJBRF9PQkpFQ1QAQk5fREVDMkJOX0VSUk9SAEJOX1RPX0FTTjFfSU5URUdFUl9FUlJPUgBDQU5OT1RfRklORF9GUkVFX0ZVTkNUSU9OAERJUk5BTUVfRVJST1IARElTVFBPSU5UX0FMUkVBRFlfU0VUAERVUExJQ0FURV9aT05FX0lEAEVSUk9SX0NPTlZFUlRJTkdfWk9ORQBFUlJPUl9DUkVBVElOR19FWFRFTlNJT04ARVJST1JfSU5fRVhURU5TSU9OAEVYUEVDVEVEX0FfU0VDVElPTl9OQU1FAEVYVEVOU0lPTl9FWElTVFMARVhURU5TSU9OX05BTUVfRVJST1IARVhURU5TSU9OX05PVF9GT1VORABFWFRFTlNJT05fU0VUVElOR19OT1RfU1VQUE9SVEVEAEVYVEVOU0lPTl9WQUxVRV9FUlJPUgBJTExFR0FMX0VNUFRZX0VYVEVOU0lPTgBJTExFR0FMX0hFWF9ESUdJVABJTkNPUlJFQ1RfUE9MSUNZX1NZTlRBWF9UQUcASU5WQUxJRF9CT09MRUFOX1NUUklORwBJTlZBTElEX0VYVEVOU0lPTl9TVFJJTkcASU5WQUxJRF9NVUxUSVBMRV9SRE5TAElOVkFMSURfTkFNRQBJTlZBTElEX05VTExfQVJHVU1FTlQASU5WQUxJRF9OVUxMX05BTUUASU5WQUxJRF9OVUxMX1ZBTFVFAElOVkFMSURfTlVNQkVSUwBJTlZBTElEX09CSkVDVF9JREVOVElGSUVSAElOVkFMSURfT1BUSU9OAElOVkFMSURfUE9MSUNZX0lERU5USUZJRVIASU5WQUxJRF9QUk9YWV9QT0xJQ1lfU0VUVElORwBJTlZBTElEX1BVUlBPU0UASU5WQUxJRF9TRUNUSU9OAElOVkFMSURfU1lOVEFYAElOVkFMSURfVkFMVUUASVNTVUVSX0RFQ09ERV9FUlJPUgBORUVEX09SR0FOSVpBVElPTl9BTkRfTlVNQkVSUwBOT19DT05GSUdfREFUQUJBU0UATk9fSVNTVUVSX0NFUlRJRklDQVRFAE5PX0lTU1VFUl9ERVRBSUxTAE5PX1BPTElDWV9JREVOVElGSUVSAE5PX1BST1hZX0NFUlRfUE9MSUNZX0xBTkdVQUdFX0RFRklORUQATk9fUFVCTElDX0tFWQBOT19TVUJKRUNUX0RFVEFJTFMAT0REX05VTUJFUl9PRl9ESUdJVFMAT1BFUkFUSU9OX05PVF9ERUZJTkVEAE9USEVSTkFNRV9FUlJPUgBQT0xJQ1lfTEFOR1VBR0VfQUxSRUFEWV9ERUZJTkVEAFBPTElDWV9QQVRIX0xF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HE8FABTmAAC8TwUAROYAAFxQBQB05gAADFEFAKTmAAC8UQUA1OYAAHxSBQAE5wAAHFMFADTnAAC8UwUA3J0AAGxUBQBMswAALFUFADS6AAAsVgUA7LoAACxXBQAcvAAAbFcFAES8AACsVwUAnLwAAAxYBQDEvAAAbFgFALy9AADcWAUA/L0AAExZBQDcvgAAfFoFAFy/AADsWwUA3L8AAJxcBQBMwQAA3FwFAHTBAAAcXQUA/MEAANxdBQAEwwAAHF4FAFzDAAB8XgUAXMQAAOxeBQA8xQAAHGAFALzFAAA8YQUAfMcAAHxhBQBk5wAAjGEFAHznAACcYQUAlOcAALxhBQCs5wAAzGEFAMTnAADcYQUA3OcAAOxhBQD05wAA/GEFAAzoAAAMYgUAJOgAACxiBQA86AAAPGIFAFToAABMYgUAbOgAAFxiBQCE6AAAbGIFAJzoAACMYgUAtOgAAJxiBQDM6AAArGIFAOToAAC8YgUA/OgAAMxiBQAU6QAA7GIFACzpAAD8YgUAROkAAAxjBQBc6QAAHGMFAHTpAAAsYwUAjOkAAExjBQCk6QAAXGMFALzpAABsYwUA1OkAAHxjBQDs6QAAjGMFAATqAACsYwUAHOoAALxjBQA06gAAzGMFAEzqAADcYwUAZOoAAOxjBQB86gAADGQFAJTqAAAcZAUArOoAACxkBQDE6gAAPGQFANzqAABMZAUA9OoAAGxkBQAM6wAAfGQFACTrAACMZAUAPOsAAJxkBQBU6wAArGQFAGzrAADMZAUAhOsAANxkBQCc6wAA7GQFALTrAAD8ZAUAzOsAAAxlBQDk6wAALGUFAPzrAAA8ZQUAFOwAAExlBQAs7AAAXGUFAETsAABsZQUAXOwAAIxlBQB07AAAnGUFAIzsAACsZQUApOwAALxlBQC87AAAzGUFANTsAADsZQUA7OwAAPxlBQAE7QAADGYFABztAAAcZgUANO0AACxmBQBM7QAATGYFAGTtAABcZgUAfO0AAGxmBQCU7QAAfGYFAKztAACMZgUAxO0AAKxmBQDc7QAAvGYFAPTtAADMZgUADO4AANxmBQAk7gAA7GYFADzuAAAMZwUAVO4AABxnBQBs7gAALGcFAITuAAA8ZwUAnO4AAExnBQC07gAAbGcFAMzuAAB8ZwUA5O4AAIxnBQD87gAArGcFABzvAADMZwUANO8AAAxoBQBM7wAAHGgFAGTvAAAsaAUAfO8AADxoBQCU7wAAnGgFALTvAACsaAUAzO8AALxoBQDk7wAAXGoFADTwAAAsawUAXPAAAHxrBQCE8AAADGwFALTwAADsbAUA7PAAAAxtBQAE8QAAHG0FABzxAAA8bQUANPEAAFxtBQBU8QAAfG0FAGzxAAC8bQUAhPEAAMxtBQCc8QAA3G0FALTxAAA8bgUA1PEAAExuBQDs8QAAXG4FAATyAAD8bwUAVPIAAMxwBQB88gAAHHEFAKTyAACscQUA1PIAAIxyBQAM8wAArHIFACTzAAC8cgUAPPMAANxyBQBU8wAA/HIFAHTzAAAccwUAjPMAAFxzBQCk8wAAbHMFALzzAAB8cwUA1PMAALxzBQD08wAAzHMFAAz0AADccwUAJPQAAHx1BQB09AAADHYFAJz0AABcdgUAxPQAAOx2BQD09AAAfHcFACT1AACcdwUAPPUAAKx3BQBU9QAAzHcFAGz1AAA8eAUAnPUAAEx4BQC09QAAvHgFANz1AAA8eQUADPYAAFx6BQBU9gAA3HoFAIT2AADsegUAnPYAAHx7BQDM9gAAnHsFAOz2AAC8ewUADPcAAOx8BQBM9wAAvH8FAJz3AAC8gQUA7PcAAOyBBQAM+AAA/IEFACT4AACsggUAZPgAANyCBQCM+AAA/IIFAKz4AAAsgwUA1PgAAJyDBQAE+QAAzIQFADz5AABMhQUAdPkAAKyHBQDE+QAAfIkFAOz5AAAciwUAPPoAAHyMBQCM+gAAnIwFAKz6AAAskAUA3PoAAHyQBQAU+wAArJIFAGT7AAC8kwUApPsAAFyUBQDU+wAAHJUFAAT8AAD8lgUATPwAACyYBQCM/AAArJkFANz8AADsmgUAJP0AAHycBQB0/QAAbJ0FALT9AADcngUABP4AAEygBQAc/gAAbKAFADT+AABMoQUAZP4AALyhBQCc/gAAnKIFANz+AAC8ogUA9P4AAMyiBQAM/wAA3KIFACT/AABMowUATP8AAMyjBQB8/wAA7KQFAMT/AABspQUA9P8AAIylBQAUAAEAvKYFAFQAAQCMqQUApAABAIyrBQD0AAEArKsFABQBAQDcqwUAPAEBAEysBQBsAQEALK0FAKwBAQBMrQUAxAEBAFytBQDcAQEAzK0FAAQCAQBMrgUANAIBAGyvBQB8AgEA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pA0CANwQCwD0DQIAfBELACwOAgCMEgsAVA4CAMwVCwCcDgIAHBYLAMwOAgBsFgsA/A4CANwWCwA0DwIATBcLAGwPAgC8FwsApA8CACwYCwDcDwIAfBgLAAwQAgDMGAsAPBACABwZCwBsEAIAjBoLALwQAgAsGwsA7BACAGwbCwAkEQIArBsLAFwRAgB8HAsArBECALwcCwDkEQIATB0LADQSAgD8HQsAdBICAEwgCwDEEgIAnCALAPQSAgDsIAsALBMCADwhCwBkEwIAzCELAJwTAgAcIgsAzBMCAPwiCwAMFAIATCMLADwUAgCcIwsAbBQCAOwjCwCcFAIAPCQLAMwUAgCMJAsA/BQCANwkCwAsFQIAzCULAHwVAgD8JgsAFBYCAEwnCwA8FgIAjCcLAGQWAgDMJwsAnBYCAFwoCwDUFgIA/CgLAAQXAgA8KQsAPBcCAHwpCwB0FwIA3CkLAKQXAgAcKgsA3BcCAFwqCwAUGAIA/CsLAGQYAgBcLAsAnBgCAJwsCwDUGAIAHC0LAAwZAgCMLQsALBkCAPwtCwBMGQIATC4LAHwZAgAMLwsAtBkCAEwvCwDsGQIAXDALACQaAgDMMAsAVBoCABwyCwCMGgIADDcLAMwaAgCMNwsABBsCAAw4CwA8GwIAjDgLAHQbAgDcOQsAtBsCACw7CwD0GwIAfDsLACwcAgDMOwsAZBwCABw8CwCcHAIAbDwLANQcAgB8PQsAFB0CAMw9CwBMHQIAHD4LAIQdAgA8QAsAzB0CAPxBCwAMHgIADEQLAEweAgBcRAsAhB4CAIxFCwDEHgIA3EULAPweAgAsRgsANB8CAHxGCwBsHwIAzEYLAKQfAgAcRwsA3B8CAMxHCwAUIAIAfEoLAGQgAgDMSgsAnCACALxMCwDkIAIADE0LABwhAgDcTQsAbCECANxOCwCsIQIAzE8LAEwiAgAMUAsAhCICAExQCwC8IgIArFALAPQiAgAMUQsALCMCAGxRCwBkIwIArFELAIQjAgAMUgsAvCMCAGxSCwD0IwIAzFILACwkAgAsUwsAZCQCAGxTCwCcJAIArFMLANQkAgAsVAsADCUCAIxUCwBEJQIAzFQLAHwlAgA8VgsAvCUCAPxWCwD8JQIAXFcLADQmAgC8VwsAbCYCADxYCwCkJgIAvFgLALwnAgAcWgsAnCgCAFxbCwDsKAIA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DKoYAIzgAwAsqhgApOADAEyqGAC84AMAjKsYAPTgAwB8rBgANOEDAKysGABU4QMArK0YAHThAwAsrhgArOEDADyuGADE4QMA3K8YABTiAwD8rxgALOIDAMywGABs4gMAHLIYAJziAwBMsxgA7OIDALy0GAAs4wMALLUYAEzjAwD8uRgAnOMDAOy7GADs4wMATMEYADzkAwBsxxgAjOQDAHzIGAC05AMAjM8YAATlAwCczxgAHOUDAAzRGABM5QMALNEYAGTlAwBs1BgAnOUDAIzUGAC05QMAfNUYAMzlAwCM1RgA5OUDAJzVGAD85QMArNUYABTmAwC81RgALOYDAMzVGABE5gMA3NUYAFzmAwDs1RgAdOYDAPzVGACM5gMALNYYAKTmAwBM1hgAvOYDAFzWGADU5gMAjNYYAOzmAwCM1xgANOcDADzYGAB05wMATNkYALznAwAM2hgABOgDAKzeGABU6AMAzN4YAHToAwB84BgAxOgDAFzhGAAM6QMAfOEYACzpAwBs4xgAfOkDAEzkGADE6QMADOUYAAzqAwCc6BgAXOoDAJzpGAB06gMAvOkYAIzqAwAc6hgArOoDACzqGADE6gMAPOoYANzqAwAc7BgALOsDAHztGAB86wMAnO4YAMzrAwBs8BgAHOwDALzxGABs7AMAnPkYALzsAwAs/BgA7OwDABz/GAA87QMAHAUZAITtAwA8BRkAnO0DACwMGQDs7QMAPAwZAATuAwBMDBkAHO4DAFwMGQA07gMArBAZAITuAwDsEhkA1O4DAPwYGQAk7wMADBkZADzvAwBsKxkArO8DAIwsGQDs7wMAvCwZAATwAwDMLBkAHPADANwsGQA08AMA7CwZAEzwAwDsQRkA7PADAAxDGQA08QMAnEMZAGTxAwCsRBkAhPEDACxGGQDE8QMADEcZAPTxAwBcSBkAdPIDAGxIGQCM8gMAnEgZAKTyAwCsSRkA5PIDAJxKGQAk8wMArEoZADzzAwDsShkAVPMDACxLGQBs8wMAPEsZAITzAwBMSxkAnPMDAFxMGQDc8wMAbEwZAPTzAwB8TBkADPQDALxNGQBM9AMAzE0ZAGT0AwAcThkAfPQDAGxOGQCU9AMAfE4ZAKz0AwCMThkAxPQDAHxPGQD09AMAjE8ZAAz1AwCcTxkAJPUDAOxQGQBU9QMA/FAZAGz1AwBsWBkA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LAAAAHxMAADgagQAtwAAAABCDhBBDhhBDiCDA44CAo0OGEEOEEIOCEEOIAAAAAAALAAAAKxMAABwawQAmgAAAABCDhBBDhhBDiCDA44CAnAOGEEOEEIOCEEOIAAAAAAALAAAANxMAADgawQAlwAAAABCDhBBDhhBDiCDA44CAm0OGEEOEEIOCEEOIAAAAAAAFAAAAAxNAAAQegQABwAAAAAAAAAAAAAAFAAAACRNAAAIegQACAAAAAAAAAAAAAAAFAAAADxNAAAAegQAFgAAAAAAAAAAAAAAFAAAAFRNAAAIegQABQAAAAAAAAAAAAAAFAAAAGxNAAAAegQABAAAAAAAAAAAAAAAFAAAAIRNAAD4eQQAAwAAAAAAAAAAAAAAFAAAAJxNAADweQQABwAAAAAAAAAAAAAAFAAAALRNAADoeQQACAAAAAAAAAAAAAAAFAAAAMxNAADgeQQAFgAAAAAAAAAAAAAAFAAAAORNAADoeQQABQAAAAAAAAAAAAAAFAAAAPxNAADgeQQABAAAAAAAAAAAAAAAFAAAABROAADYeQQABwAAAAAAAAAAAAAAFAAAACxOAADQeQQACAAAAAAAAAAAAAAAFAAAAEROAADIeQQAFgAAAAAAAAAAAAAAFAAAAFxOAADQeQQABQAAAAAAAAAAAAAAFAAAAHROAADIeQQABAAAAAAAAAAAAAAAFAAAAIxOAADAeQQABwAAAAAAAAAAAAAAFAAAAKROAAC4eQQACAAAAAAAAAAAAAAAFAAAALxOAACweQQAFgAAAAAAAAAAAAAAFAAAANROAAC4eQQABQAAAAAAAAAAAAAAFAAAAOxOAACweQQABAAAAAAAAAAAAAAAFAAAAARPAACoeQQABwAAAAAAAAAAAAAAFAAAABxPAACgeQQACAAAAAAAAAAAAAAAFAAAADRPAACYeQQAFgAAAAAAAAAAAAAAFAAAAExPAACgeQQABQAAAAAAAAAAAAAAFAAAAGRPAACYeQQABAAAAAAAAAAAAAAAFAAAAHxPAACQeQQABwAAAAAAAAAAAAAAFAAAAJRPAACIeQQACAAAAAAAAAAAAAAAFAAAAKxPAACAeQQAFgAAAAAAAAAAAAAAFAAAAMRPAACIeQQABQAAAAAAAAAAAAAAFAAAANxPAACAeQQABwAAAAAAAAAAAAAAFAAAAPRPAAB4eQQABwAAAAAAAAAAAAAAFAAAAAxQAABweQQACAAAAAAAAAAAAAAAFAAAACRQAABoeQQAFgAAAAAAAAAAAAAAFAAAADxQAABweQQABQAAAAAAAAAAAAAAFAAAAFRQAABoeQQABAAAAAAAAAAAAAAAFAAAAGxQAABgeQQABwAAAAAAAAAAAAAAFAAAAIRQAABYeQQACAAAAAAAAAAAAAAAFAAAAJxQAABQeQQAFgAAAAAAAAAAAAAAFAAAALRQAABYeQQABQAAAAAAAAAAAAAAFAAAAMxQAABQeQQABwAAAAAAAAAAAAAAFAAAAORQAABIeQQABwAAAAAAAAAAAAAAFAAAAPxQAABAeQQACAAAAAAAAAAAAAAAFAAAABRRAAA4eQQAFgAAAAAAAAAAAAAAFAAAACxRAABAeQQABQAAAAAAAAAAAAAAFAAAAERRAAA4eQQABwAAAAAAAAAAAAAAFAAAAFxRAAAweQQABwAAAAAAAAAAAAAAFAAAAHRRAAAoeQQACAAAAAAAAAAAAAAAFAAAAIxRAAAgeQQAFgAAAAAAAAAAAAAAFAAAAKRRAAAoeQQABQAAAAAAAAAAAAAAFAAAALxRAAAgeQQABAAAAAAAAAAAAAAAFAAAANRRAAAYeQQABwAAAAAAAAAAAAAAFAAAAOxRAAAQeQQACAAAAAAAAAAAAAAAFAAAAARSAAAIeQQAFgAAAAAAAAAAAAAAFAAAABxSAAAQeQQABQAAAAAAAAAAAAAAFAAAADRSAAAIeQQABAAAAAAAAAAAAAAAFAAAAExSAAAAeQQABwAAAAAAAAAAAAAAFAAAAGRSAAD4eAQACAAAAAAAAAAAAAAAFAAAAHxSAADweAQAFgAAAAAAAAAAAAAAFAAAAJRSAAD4eAQABQAAAAAAAAAAAAAAFAAAAKxSAADweAQABAAAAAAAAAAAAAAAFAAAAMRSAADoeAQABwAAAAAAAAAAAAAAFAAAANxSAADgeAQACAAAAAAAAAAAAAAAFAAAAPRSAADYeAQAFgAAAAAAAAAAAAAAFAAAAAxTAADgeAQABQAAAAAAAAAAAAAAFAAAACRTAADYeAQABAAAAAAAAAAAAAAAFAAAADxTAADQeAQABwAAAAAAAAAAAAAAFAAAAFRTAADIeAQACAAAAAAAAAAAAAAAFAAAAGxTAADAeAQAFgAAAAAAAAAAAAAA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AEEOEGgOCEEOEFsOCAAAABwAAACsCwMAMKgSAEYAAAAAQQ4QaA4IQQ4QWw4IAAAAFAAAAMwLAwBgqBIAHQAAAABBDhBbDggAFAAAAOQLAwBoqBIAbQAAAAAAAAAAAAAAFAAAAPwLAwDAqBIAHQAAAABBDhBbDggAFAAAABQMAwDIqBIAbQAAAAAAAAAAAAAAFAAAACwMAwAgqRIAHQAAAABBDhBbDggAFAAAAEQMAwAoqRIAbQAAAAAAAAAAAAAAFAAAAFwMAwCAqRIAHQAAAABBDhBbDggAFAAAAHQMAwCIqRIAbQAAAAAAAAAAAAAAFAAAAIwMAwDgqRIAHQAAAABBDhBbDggAFAAAAKQMAwDoqRIAbQAAAAAAAAAAAAAAFAAAALwMAwBAqhIAHQAAAABBDhBbDggAFAAAANQMAwBIqhIAbQAAAAAAAAAAAAAAFAAAAOwMAwCgqhIAHQAAAABBDhBbDggAFAAAAAQNAwCoqhIAbQAAAAAAAAAAAAAAFAAAABwNAwAAqxIAHQAAAABBDhBbDggAFAAAADQNAwAIqxIAbQAAAAAAAAAAAAAAFAAAAEwNAwBgqxIAHQAAAABBDhBbDggAFAAAAGQNAwBoqxIAbQAAAAAAAAAAAAAAFAAAAHwNAwDAqxIAIAAAAAAAAAAAAAAAFAAAAJQNAwDIqxIAFwAAAAAAAAAAAAAAFAAAAKwNAwDQqxIAHQAAAABBDhBbDggAFAAAAMQNAwDYqxIAWAAAAAAAAAAAAAAAFAAAANwNAwAgrBIAHQAAAABBDhBbDggAFAAAAPQNAwAorBIAWAAAAAAAAAAAAAAAFAAAAAwOAwBwrBIAHQAAAABBDhBbDggAFAAAACQOAwB4rBIAWAAAAAAAAAAAAAAAFAAAADwOAwDArBIAHQAAAABBDhBbDggAFAAAAFQOAwDIrBIAWAAAAAAAAAAAAAAAFAAAAGwOAwAQrRIAHQAAAABBDhBbDggAFAAAAIQOAwAYrRIAWAAAAAAAAAAAAAAAFAAAAJwOAwBgrRIAHQAAAABBDhBbDggAFAAAALQOAwBorRIAWAAAAAAAAAAAAAAAFAAAAMwOAwCwrRIAHQAAAABBDhBbDggAJAAAAOQOAwC4rRIA9QEAAABBDhBBDhiDA4YCA/EBDhBBDggAAAAAABQAAAAMDwMAkK8SAFYAAAAAAAAA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zMzMzEiJ9+lI9v//zMzMzMzMzMyLRxjDzMzMzMzMzMzMzMzMMf/pufb//8zMzMzMzMzMzEiJ9+mo9v//zMzMzMzMzMyLRzjDzMzMzMzMzMzMzMzMMf/pKff//8zMzMzMzMzMzEiJ9+kY9///zMzMzMzMzMyLRyjDzMzMzMzMzMzMzMzMMf/peff//8zMzMzMzMzMzEiJ9+lo9///zMzMzMzMzMyLRyDDzMzMzMzMzMzMzMzMMf/p6ff//8zMzMzMzMzMzEiJ9+nY9///zMzMzMzMzMyLRzDDzMzMzMzMzMzMzMzMMf/pWfj//8zMzMzMzMzMzEiJ9+lI+P//zMzMzMzMzMyLRzDDzMzMzMzMzMzMzMzMMf/pufj//8zMzMzMzMzMzEiJ9+mo+P//zMzMzMzMzMyLRxDDzMzMzMzMzMzMzMzMMf/p+fj//8zMzMzMzMzMzEiJ9+no+P//zMzMzMzMzMyLRyjDzMzMzMzMzMzMzMzMMf/pafn//8zMzMzMzMzMzEiJ9+lY+f//zMzMzMzMzMyLRyDDzMzMzMzMzMzMzMzMMf/pufn//8zMzMzMzMzMzEiJ9+mo+f//zMzMzMzMzMyLRxjDzMzMzMzMzMzMzMzMMf/p+fn//8zMzMzMzMzMzEiJ9+no+f//zMzMzMzMzMyLRyDDzMzMzMzMzMzMzMzMMf/pSfr//8zMzMzMzMzMzEiJ9+k4+v//zMzMzMzMzMyLRyDDzMzMzMzMzMzMzMzMMf/pufr//8zMzMzMzMzMzEiJ9+mo+v//zMzMzMzMzMyLRyjDzMzMzMzMzMzMzMzMSIn4SIn3SInG6RKC///MzEiJ+EiJ90iJxumCpf//zMxIifhIifdIicbpQuX//8zMSIsH/yDMzMzMzMzMzMzMzEiLB/8gzMzMzMzMzMzMzMxIiwf/IMzMzMzMzMzMzMzMSIsH/yDMzMzMzMzMzMzMzEiLB/8gzMzMzMzMzMzMzMxIiwf/IMzMzMzMzMzMzMzMSIsH/yDMzMzMzMzMzMzMzEiLB/8gzMzMzMzMzMzMzMxIiwf/IMzMzMzMzMzMzMzMSIsH/yDMzMzMzMzMzMzMzEiLB/8gzMzMzMzMzMzMzMxIiwf/IMzMzMzMzMzMzMzMSIsH/yDMzMzMzMzMzMzMzEiLB/8gzMzMzMzMzMzMzMxIjT2Z7RMA6bSUEwDMzMzM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/g+ENAIAAEiLTwhIichIg+D+9sEBD4UFAgAASItWCEiJ0UiD4f72wgEPhfoBAABIOcgPhP4BAADoL/YSAOn5AQAASItAGOk1////SItJGEg5yA+FRf///+h/c/v/g8MBiVwkFE2NdwhNOeYPgosAAABMifNIOetMi2QkGESLdCQUD4QqAQAASIt1AEiLE0yJ7+iGBQAAhMAPhBMBAABIiztIi3UASDn+D4T/AAAASItPCEiJyEiD4P72wQEPhdAAAABIi1YISInRSIPh/vbCAQ+FxQAAAEg5yA+EyQAAAOiI9RIA6cQAAADo7nL7/4NEJBQBSDnrSQ9E7GaQSYs2SItVAEyJ7+gRBQAASYPGCITAdelJjV74Dx9EAABJi3Qk+EmDxPhIi1UATInv6OsEAACEwHTnTDnjD4c2////SYt++EmLNCRIOf50o0iLTwhIichIg+D+9sEBdSNIi1YISInRSIPh/vbCAXUZSDnID4R1////6PP0EgDpcP///0iLQBjr10iLSRhIOch15+lX////SItAGOkn////SItJGEg5yA+FN////+gvcvv/QYPGAUWF9nU2TIn/SIneTInq6GgKAABBicZIjWsISInvSIt0JAhMieroUQoAAITAD4UsAQAARYT2D4W4/P//SInYTCn4SItMJAhIKdlIOcgPjfEAAABMif9Iid5MieroW/z//0iDwwhIid1Jid/ph/z//0iLQBjp8v3//0iLSRhIOcgPhQL+///ooXH7/0iDxQhMOeUPhKoDAABMiePrD+iKcfv/Zi4PH4QAAAAAAEmLN0iLVQBMie/osQMAAEiDxQiEwHTpTI11+A8fRAAASYs3SItT+EiDw/hMie/ojQMAAITAdelJOd5zVEiLffhIizNIOf50uEiLTwhIichIg+D+9sEBdRxIi1YISInRSIPh/vbCAXUSSDnIdITonvMSAOuMSItAGOveSItJGEg5yHXq6Wn///8PH4QAAAAAAE2J9+mz+///SI17CEiLdCQITInq6Gf7//9IiVwkCOmE+///SIlcJAhFhPYPhHb7///p0AIAAEiNBYNg9f9IYwyISAHB/+FIi0QkCEiLcPhJixdMie/o1gIAAITAD4SkAgAASYs/SItEJAhIi3D4SDn+D4SPAgAASItPCEiJyEiD4P72wQEPhWACAABIi1YISInRSIPh/vbC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EA0AAITAD4R1////6dECAABIid9MifboeBIAAITAD4Rd////6bkCAABIid9MifboQBUAAITAD4RF////6aECAABIid9MifboSBYAAITAD4Qt////6YkCAABIid9MifbowBgAAITAD4QV////6XECAABIid9MifboyBoAAITAD4T9/v//6VkCAABIid9MifbokCMAAITAD4Tl/v//6UECAABIid9MifboaCQAAITAD4TN/v//6SkCAABIid9MifbokCYAAITAD4S1/v//6RECAABIid9MifboGDYAAITAD4Sd/v//6fkBAABIid9Mifbo8DcAAITAD4SF/v//6eEBAABIid9MifboqDkAAITAD4Rt/v//6ckBAABIid9MifbokDoAAITAD4RV/v//6bEBAABIid9MifbouDsAAITAD4Q9/v//6ZkBAABIid9MifboYEAAAITAD4Ql/v//6YEBAABIid9Mifbo2EQAAITAD4QN/v//6WkBAABIid9MifboAEgAAITAD4T1/f//6VEBAABIid9Mifbo+EgAAITAD4Td/f//6TkBAABIid9MifboAEoAAITAD4TF/f//6SEBAABIid9MifboaE4AAITAD4St/f//6QkBAABIid9MifboAFAAAITAD4SV/f//6fEAAABIid9MifboCFEAAITAD4R9/f//6dkAAABIid9MifboYFMAAITAD4Rl/f//6cEAAABIid9MifboeFgAAITAD4RN/f//6akAAABIid9MifbocFsAAITAD4Q1/f//6ZEAAABIid9MifboGF0AAITAD4Qd/f//63xIid9MifboM18AAITAD4QI/f//62dIid9MifbonmAAAITAD4Tz/P//61JIid9MifboGWUAAITAD4Te/P//6z1Iid9Mifbo5GoAAITAD4TJ/P//6yhIid9Mifboz2sAAITAD4S0/P//6xNIid9Mifbo6mwAAITAD4Sf/P//QLUBgLsoAwAAAHVGQYtOHInIg+B/jVC9g/r9dyGD4X6D+SQPhb4AAABMiffoYS4SAIPA+4P4/XIZ6e8AAABMiffoXC4SAIPA+4P4/A+H2wAAAMaDKAMAAAFMiTQki0sQhcl0bUiLE0SJ8MHoBESJ9sHuCTHGg8H/Ic5IifdIwecESI0EOkiLPDpMOfd0U0G4AQAAAEUxyUiB/wDw//8PhDIFAABIgfcA4P//TAnPTA9EyEQBxkGDwAEhzkiJ90jB5wRIjQQ6SIs8Okw593QS68YxwEiJ4kiJ30iJxuhBewEAgEgIBOtNg8DGg/j6cj5Miffoyy0SAEiFwHQQiwCD4AaD+AIPhUj////rIUyJ9+huLRIASIXAdBSLQBDR6IPgA4PA/4P4Aw+DJf///0SIuygDAACLQyCDwP+JQyB0FEiLSxiJwEiNBEBIweAESINEAfgBZEiLBCUoAAAASDtEJDgPhagEAACJ6EiDxEBbQVxBXkFfXcNIid9MifbosQUAAITAD4QW+///6XL+//9Iid9MifboOQcAAITAD4T++v//6Vr+//9Iid9MifbokQkAAITAD4Tm+v//6UL+//9Iid9MifboeQoAAITAD4TO+v//6Sr+//9Iid9MifboYQsAAITAD4S2+v//6RL+//9Iid9MifboaQwAAITAD4Se+v//6fr9//9Iid9MifbocQ8AAITAD4SG+v//6eL9//9Iid9MifboiRIAAITAD4Ru+v//6cr9//9Iid9MifboERUAAITAD4RW+v//6bL9//9Iid9MifboCRcAAITAD4Q++v//6Zr9//9Iid9MifbogRcAAITAD4Qm+v//6YL9//9Iid9MifboeRgAAITAD4QO+v//6Wr9//9Iid9MifbooRkAAITAD4T2+f//6VL9//9Iid9MifboiRoAAITAD4Te+f//6Tr9//9Iid9MifbocRsAAITAD4TG+f//6SL9//9Iid9MifboWR0AAITAD4Su+f//6Qr9//9Iid9Mifbo4R8AAITAD4SW+f//6fL8//9Iid9Mifbo+SIAAITAD4R++f//6dr8//9Iid9MifbokSYAAITAD4Rm+f//6cL8//9Iid9MifboqSkAAITAD4RO+f//6ar8//9Iid9MifboMSsAAITAD4Q2+f//6ZL8//9Iid9MifboOS4AAITAD4Qe+f//6Xr8//9Iid9Mifbo8TcAAITAD4QG+f//6WL8//9Iid9Mifbo6TkAAITAD4Tu+P//6Ur8//9Iid9MifboQTwAAITAD4TW+P//6TL8//9Iid9MifboWT0AAITAD4S++P//6Rr8//9Iid9MifbokUAAAITAD4Sm+P//6QL8//9Iid9Mifbo2UkAAITAD4SO+P//6er7//9Iid9MifbocUsAAITAD4R2+P//6dL7//9Iid9MifboCU0AAITAD4Re+P//6br7//9Iid9MifbogU8AAITAD4RG+P//6aL7//9Iid9Mifbo2VAAAITAD4Qu+P//6Yr7//9Iid9MifboAVIAAITAD4QW+P//6XL7//9Iid9Mifbo2VQAAITAD4T+9///6Vr7//9Iid9Mifbo4VsAAITAD4Tm9///6UL7//9Iid9MifboWWEAAITAD4TO9///6Sr7//9Iid9MifbosUAAAITAD4S29///6RL7//9Iid9MifboeUYAAITAD4Se9///6fr6//9Iid9MifbosUcAAITAD4SG9///6eL6//9Iid9MifboSUkAAITAD4Ru9///6cr6//9Iid9MifbocVgAAITAD4RW9///6bL6//9Iid9MifboSVwAAITAD4Q+9///6Zr6//9Iid9MifbowV0AAITAD4Qm9///6YL6//9Iid9MifboCWMAAITAD4QO9///6Wr6//9MjWMYSI1RAUmLBCRIjQxJSMHhBEgBwUiJ5Ug56Q+XwUg56HcEhMl1L0mNdCQQuTAAAABMiefoASkSAOlN9v//TYXJSQ9Fwenx+v//SIX2SA9F7umY9f//SInlSCnFSY10JBC5MAAAAEyJ5+jMKBIASQMsJOkU9v//6P4fEgBmLg8fhAAAAAAADx9AAFVBV0FWU1BJifZJif9IiffoqygSAITAdHZMifforygSAEiFwHRpSInH6LIoEgBIhcB0XEiJxeslDx+EAAAAAABMif9Iie7oZfT//4TAD4StAAAASIttCEiD5fh0MotFHIPgf41I/4P5AnLog8Dag/j9cs1Ii4WAAAAASIXAdMEPtkAKweAQqQAACAB0s+vEQLUBQfZGHQF0aUyJ9+hPKBIASIsYQfZGHQF1CkUx9kw583Ua601MiffoMygSAESLcAhJweYDTAMwTDnzdDVIg8MIZi4PH4QAAAAAAA8fRAAASItz+EyJ/+h0ZAEAicWEwHQQSI1DCEw580iJw3Xi6wIx7YnoSIPECFtBXkFfXcOQVUFXQVZBVFNJifZJif9Ii1ZgSIXSdBNIizJIg8IITIn/6NonAQCEwHRYSYsGTIn3/1BATIn/SInGTIn66H9nAACEwHQ9QYtecEiF23RBTYtmaEjB4wQx7esPZg8fRAAASIPFEEg563QmSYt0LAhIhfZ07UyJ/0yJ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TIt8JCB0LESLM02F9nQkScHmAzHtSIt0KxBMif/oXsEAAITAD4QUngAASIPFCEk57nXiSI28JJAAAABMiebobaIRAA8QhCSQAAAADylEJHBIi4QkoAAAAEiJhCSAAAAASIucJKgAAABIi6wksAAAAOsGSINEJHAISItEJHBIi0wkeEg52HUJSDnpD4QwnQAA9sEDdApIjXwkcOghohEASIswTIn/TIn66APh//+EwA+EiZ0AAEiLRCR4qAN0tEiNfCRwSIP4BHMMvgEAAADo/aERAOuj6AaiEQDrnEmLXCQYSIXbTIt8JCB0LESLM02F9nQkScHmAzHtSIt0KxBMif/oesAAAITAD4QwnQAASIPFCEk57nXiSI28JJAAAABMieboiaERAA8QhCSQAAAADylEJHBIi4QkoAAAAEiJhCSAAAAASIucJKgAAABIi6wksAAAAOsGSINEJHAISItEJHBIi0wkeEg52HUJSDnpD4RMnAAA9sEDdApIjXwkcOg9oREASIswTIn/TIn66B/g//+EwA+EpZwAAEiLRCR4qAN0tEiNfCRwSIP4BHMMvgEAAADoGaERAOuj6CKhEQDrnEmLXCQYSIXbTIt8JCB0LESLM02F9nQkScHmAzHtSIt0KxBMif/olr8AAITAD4RMnAAASIPFCEk57nXiSI28JJAAAABMiebopaARAA8QhCSQAAAADylEJHBIi4QkoAAAAEiJhCSAAAAASIucJKgAAABIi6wksAAAAOsGSINEJHAISItEJHBIi0wkeEg52HUJSDnpD4RomwAA9sEDdApIjXwkcOhZoBEASIswTIn/TIn66Dvf//+EwA+EwZsAAEiLRCR4qAN0tEiNfCRwSIP4BHMMvgEAAADoNaARAOuj6D6gEQDrnEmLXCQYSIXbTIt8JCB0LESLM02F9nQkScHmAzHtSIt0KxBMif/osr4AAITAD4RomwAASIPFCEk57nXiSI28JJAAAABMiebowZ8RAA8QhCSQAAAADylEJHBIi4QkoAAAAEiJhCSAAAAASIucJKgAAABIi6wksAAAAOsGSINEJHAISItEJHBIi0wkeEg52HUJSDnpD4SEmgAA9sEDdApIjXwkcOh1nxEASIswTIn/TIn66Ffe//+EwA+E3ZoAAEiLRCR4qAN0tEiNfCRwSIP4BHMMvgEAAADoUZ8RAOuj6FqfEQDrnEmLXCQYSIXbTIt8JCB0LESLM02F9nQkScHmAzHtSIt0KxBMif/ozr0AAITAD4SEmgAASIPFCEk57nXiSI28JJAAAABMiebo3Z4RAA8QhCSQAAAADylEJHBIi4QkoAAAAEiJhCSAAAAASIucJKgAAABIi6wksAAAAOsGSINEJHAISItEJHBIi0wkeEg52HUJSDnpD4SgmQAA9sEDdApIjXwkcOiRnhEASIswTIn/TIn66HPd//+EwA+E+ZkAAEiLRCR4qAN0tEiNfCRwSIP4BHMMvgEAAADobZ4RAOuj6HaeEQDrnEmLXCQYSIXbTIt8JCB0LESLM02F9nQkScHmAzHtSIt0KxBMif/o6rwAAITAD4SgmQAASIPFCEk57nXiSI28JJAAAABMiebo+Z0RAA8QhCSQAAAADylEJHBIi4QkoAAAAEiJhCSAAAAASIucJKgAAABIi6wksAAAAOsGSINEJHAISItEJHBIi0wkeEg52HUJSDnpD4S8mAAA9sEDdApIjXwkcOitnREASIswTIn/TIn66I/c//+EwA+EFZkAAEiLRCR4qAN0tEiNfCRwSIP4BHMMvgEAAADoiZ0RAOuj6JKdEQDrnEmLXCQYSIXbTIt8JCB0LESLM02F9nQkScHmAzHtSIt0KxBMif/oBrwAAITAD4S8mAAASIPFCEk57nXiSI28JJAAAABMieboFZ0RAA8QhCSQAAAADylEJHBIi4QkoAAAAEiJhCSAAAAASIucJKgAAABIi6wksAAAAOsGSINEJHAISItEJHBIi0wkeEg52HUJSDnpD4TYlwAA9sEDdApIjXwkcOjJnBEASIswTIn/TIn66Kvb//+EwA+EMZgAAEiLRCR4qAN0tEiNfCRwSIP4BHMMvgEAAADopZwRAOuj6K6cEQDrnEiNvCSQAAAATInm6GycEQAPEIQkkAAAAA8pRCRwSIuEJKAAAABIiYQkgAAAAEiLnCSoAAAATIu0JLAAAABIi0QkcEiLTCR4SDnYSItsJCAPhCOCAADpJ4IAAEyJbCQoMfZB9kQkAgS6AAAAAHQKSYt0JCBJi1QkKEyLdCQgTIn36IeZAACEwA+EuJgAAEmLRCQQSItAKEGLTCQESYtUJBhIiUQkcIlMJHhIiZQkgAAAAEiLhCSAAAAASIlEJBAPEEQkcA8RBCRMiffo3ZkAAITAD4RumAAAQYsEJKkAAAgAdGVIicFIwekOg+EQTAHhSInCSMHqEYPiCMHoE4PgAUjB4ARFMe2DfAogAEiNNBFIjUQwIEwPReh0LUiNBApIg8Agi1gMSIXbdB1MifdMie7ox7gAAITAD4QImAAASYPFIEiDw/9140iNvCSQAAAATInm6CWbEQAPEIQkkAAAAA8pRCRQSIuEJKAAAABIiUQkYEiLnCSoAAAASIusJLAAAABIi0QkUEiLTCRYSDnYTItsJCgPhP1kAADpAWUAAEiNvCSQAAAATInm6M6aEQAPEIQkkAAAAA8pRCRwSIuEJKAAAABIiYQkgAAAAEiLnCSoAAAATIu0JLAAAABIi0QkcEiLTCR4SDnYSItsJCAPhM2JAADp0YkAAEiNvCSQAAAATInm6HSaEQAPEIQkkAAAAA8pRCRwSIuEJKAAAABIiYQkgAAAAEiLnCSoAAAATIu0JLAAAABIi0QkcEiLTCR4SDnYSItsJCAPhJ+QAADpo5AAAEiNvCSQAAAATInm6BqaEQAPEIQkkAAAAA8pRCRwSIuEJKAAAABIiYQkgAAAAEiLnCSoAAAATIu0JLAAAABIi0QkcEiLTCR4SDnYSItsJCAPhPWRAADp+ZEAAEiNvCSQAAAATInm6MCZEQAPEIQkkAAAAA8pRCRwSIuEJKAAAABIiYQkgAAAAEiLnCSoAAAATIu0JLAAAABIi0QkcEiLTCR4SDnYSItsJCAPhAeSAADpC5IAAEiNvCSQAAAATInm6GaZEQAPEIQkkAAAAA8pRCRwSIuEJKAAAABIiYQkgAAAAEiLnCSoAAAATIu0JLAAAABIi0QkcEiLTCR4SDnYSItsJCAPhIWSAADpiZIAAEiNvCSQAAAATInm6AyZEQAPEIQkkAAAAA8pRCRwSIuEJKAAAABIiYQkgAAAAEiLnCSoAAAATIu0JLAAAABIi0QkcEiLTCR4SDnYSItsJCAPhI9nAADpk2cAAEiNvCSQAAAATInm6LKYEQAPEIQkkAAAAA8pRCRwSIuEJKAAAABIiYQkgAAAAEiLnCSoAAAATIu0JLAAAABIi0QkcEiLTCR4SDnYSItsJCAPhKFnAADppWcAAEiNvCSQAAAATInm6FiYEQAPEIQkkAAAAA8pRCRwSIuEJKAAAABIiYQkgAAAAEiLnCSoAAAATIu0JLAAAABIi0QkcEiLTCR4SDnYSItsJCAPhPdoAADp+2gAAEiNvCSQAAAATInm6P6XEQAPEIQkkAAAAA8pRCRwSIuEJKAAAABIiYQkgAAAAEiLnCSoAAAATIu0JLAAAABIi0QkcEiLTCR4SDnYSItsJCAPhAlpAADpDWkAAEyJbCQoSYtEJDBIiUQkEEEPEEQkIA8RBCRMi2wkIEyJ7+i+lQAAhMAPhM2UAABJi1wkGEiF23QsRIszTYX2dCRJweYDMe1Ii3QrEEyJ7+gxtgAAhMAPhC6UAABIg8UISTnudeJIjbwkkAAAAEyJ5uhAlxEADxCEJJAAAAAPKUQkcEiLhCSgAAAASImEJIAAAABIi5wkqAAAAEiLrCSwAAAA6wZIg0QkcAhIi0QkcEiLTCR4SDnYdQlIOekPhNBeAAD2wQN0CkiNfCRw6PSWEQBIizBMie9Miero1tX//4TAD4SjkwAASItEJHioA3S0SI18JHBIg/gEcwy+AQAAAOjQlhEA66Po2ZYRAOucSYtcJBhIhdtMi3wkIHQsRIszTYX2dCRJweYDMe1Ii3QrEEyJ/+hNtQAAhMAPhAOSAABIg8UISTnudeJIjbwkkAAAAEyJ5uhclhEADxCEJJAAAAAPKUQkcEiLhCSgAAAASImEJIAAAABIi5wkqAAAAEiLrCSwAAAA6wZIg0QkcAhIi0QkcEiLTCR4SDnYdQlIOekPhB+RAAD2wQN0CkiNfCRw6BCWEQBIizBMif9Mifro8tT//4TAD4R4kQAASItEJHioA3S0SI18JHBIg/gEcwy+AQAAAOjslREA66Po9ZURAOucSYtcJBhIhdtMi3wkIHQsRIszTYX2dCRJweYDMe1Ii3QrEEyJ/+hptAAAhMAPhB+RAABIg8UISTnudeJIjbwkkAAAAEyJ5uh4lREADxCEJJAAAAAPKUQkcEiLhCSgAAAASImEJIAAAABIi5wkqAAAAEiLrCSwAAAA6wZIg0QkcAhIi0QkcEiLTCR4SDnYdQlIOekPhDuQAAD2wQN0CkiNfCRw6CyVEQBIizBMif9MifroDtT//4TAD4SUkAAASItEJHioA3S0SI18JHBIg/gEcwy+AQAAAOgIlREA66PoEZURAOucSYtcJBhIhdtMi3wkIHQsRIszTYX2dCRJweYDMe1Ii3QrEEyJ/+iFswAAhMAPhDuQAABIg8UISTnudeJIjbwkkAAAAEyJ5uiUlBEADxCEJJAAAAAPKUQkcEiLhCSgAAAASImEJIAAAABIi5wkqAAAAEiLrCSwAAAA6wZIg0QkcAhIi0QkcEiLTCR4SDnYdQlIOekPhFePAAD2wQN0CkiNfCRw6EiUEQBIizBMif9MifroKtP//4TAD4SwjwAASItEJHioA3S0SI18JHBIg/gEcwy+AQAAAOgklBEA66PoLZQRAOucSYtcJBhIhdtMi3wkIHQsRIszTYX2dCRJweYDMe1Ii3QrEEyJ/+ihsgAAhMAPhFePAABIg8UISTnudeJIjbwkkAAAAEyJ5uiwkxEADxCEJJAAAAAPKUQkcEiLhCSgAAAASImEJIAAAABIi5wkqAAAAEiLrCSwAAAA6wZIg0QkcAhIi0QkcEiLTCR4SDnYdQlIOekPhHOOAAD2wQN0CkiNfCRw6GSTEQBIizBMif9MifroRtL//4TAD4TMjgAASItEJHioA3S0SI18JHBIg/gEcwy+AQAAAOhAkxEA66PoSZMRAOucSYtcJBhIhdtMi3wkIHQsRIszTYX2dCRJweYDMe1Ii3QrEEyJ/+i9sQAAhMAPhHOOAABIg8UISTnudeJIjbwkkAAAAEyJ5ujMkhEADxCEJJAAAAAPKUQkcEiLhCSgAAAASImEJIAAAABIi5wkqAAAAEiLrCSwAAAA6wZIg0QkcAhIi0QkcEiLTCR4SDnYdQlIOekPhI+NAAD2wQN0CkiNfCRw6ICSEQBIizBMif9MifroYtH//4TAD4TojQAASItEJHioA3S0SI18JHBIg/gEcwy+AQAAAOhckhEA66PoZZIRAOucSYtcJBhIhdtMi3wkIHQsRIszTYX2dCRJweYDMe1Ii3QrEEyJ/+jZsAAAhMAPhI+NAABIg8UISTnudeJIjbwkkAAAAEyJ5ujokREADxCEJJAAAAAPKUQkcEiLhCSgAAAASImEJIAAAABIi5wkqAAAAEiLrCSwAAAA6wZIg0QkcAhIi0QkcEiLTCR4SDnYdQlIOekPhKuMAAD2wQN0CkiNfCRw6JyREQBIizBMif9MifroftD//4TAD4QEjQAASItEJHioA3S0SI18JHBIg/gEcwy+AQAAAOh4kREA66PogZERAOucSYtcJBhIhdtMi3wkIHQsRIszTYX2dCRJweYDMe1Ii3QrEEyJ/+j1rwAAhMAPhKuMAABIg8UISTnudeJIjbwkkAAAAEyJ5ugEkREADxCEJJAAAAAPKUQkcEiLhCSgAAAASImEJIAAAABIi5wkqAAAAEiLrCSwAAAA6wZIg0QkcAhIi0QkcEiLTCR4SDnYdQlIOekPhMeLAAD2wQN0CkiNfCRw6LiQEQBIizBMif9Mifroms///4TAD4QgjAAASItEJHioA3S0SI18JHBIg/gEcwy+AQAAAOiUkBEA66PonZARAOucSYtcJBhIhdtMi3wkIHQsRIszTYX2dCRJweYDMe1Ii3QrEEyJ/+gRrwAAhMAPhMeLAABIg8UISTnudeJIjbwkkAAAAEyJ5uggkBEADxCEJJAAAAAPKUQkcEiLhCSgAAAASImEJIAAAABIi5wkqAAAAEiLrCSwAAAA6wZIg0QkcAhIi0QkcEiLTCR4SDnYdQlIOekPhOOKAAD2wQN0CkiNfCRw6NSPEQBIizBMif9Mifrots7//4TAD4Q8iwAASItEJHioA3S0SI18JHBIg/gEcwy+AQAAAOiwjxEA66PouY8RAOucSYtcJBhIhdtMi3wkIHQsRIszTYX2dCRJweYDMe1Ii3QrEEyJ/+gtrgAAhMAPhOOKAABIg8UISTnudeJIjbwkkAAAAEyJ5ug8jxEADxCEJJAAAAAPKUQkcEiLhCSgAAAASImEJIAAAABIi5wkqAAAAEiLrCSwAAAA6wZIg0QkcAhIi0QkcEiLTCR4SDnYdQlIOekPhP+JAAD2wQN0CkiNfCRw6PCOEQBIizBMif9Mifro0s3//4TAD4RYigAASItEJHioA3S0SI18JHBIg/gEcwy+AQAAAOjMjhEA66Po1Y4RAOucSYtcJBhIhdtMi3wkIHQsRIszTYX2dCRJweYDMe1Ii3QrEEyJ/+hJrQAAhMAPhP+JAABIg8UISTnudeJIjbwkkAAAAEyJ5uhYjhEADxCEJJAAAAAPKUQkcEiLhCSgAAAASImEJIAAAABIi5wkqAAAAEiLrCSwAAAA6wZIg0QkcAhIi0QkcEiLTCR4SDnYdQlIOekPhBuJAAD2wQN0CkiNfCRw6AyOEQBIizBMif9Mifro7sz//4TAD4R0iQAASItEJHioA3S0SI18JHBIg/gEcwy+AQAAAOjojREA66Po8Y0RAOucSI28JJAAAABMiebor40RAA8QhCSQAAAADylEJHBIi4QkoAAAAEiJhCSAAAAASIucJKgAAABMi7QksAAAAEiLRCRwSItMJHhIOdhIi2wkIA+E/l8AAOkCYAAASI28JJAAAABMieboVY0RAA8QhCSQAAAADylEJHBIi4QkoAAAAEiJhCSAAAAASIucJKgAAABMi7QksAAAAEiLRCRwSItMJHhIOdhIi2wkIA+ELGIAAOkwYgAASI28JJAAAABMiebo+4wRAA8QhCSQAAAADylEJHBIi4QkoAAAAEiJhCSAAAAASIucJKgAAABMi7QksAAAAEiLRCRwSItMJHhIOdhIi2wkIA+EPmIAAOlCYgAASI28JJAAAABMiebooYwRAA8QhCSQAAAADylEJHBIi4QkoAAAAEiJhCSAAAAASIucJKgAAABMi7QksAAAAEiLRCRwSItMJHhIOdhIi2wkIA+EUGIAAOlUYgAASI28JJAAAABMieboR4wRAA8QhCSQAAAADylEJHBIi4QkoAAAAEiJhCSAAAAASIucJKgAAABMi7QksAAAAEiLRCRwSItMJHhIOdhIi2wkIA+EYmIAAOlmYgAASI28JJAAAABMiebo7YsRAA8QhCSQAAAADylEJHBIi4QkoAAAAEiJhCSAAAAASIucJKgAAABMi7QksAAAAEiLRCRwSItMJHhIOdhIi2wkIA+E/GQAAOkAZQAASI28JJAAAABMiebok4sRAA8QhCSQAAAADylEJHBIi4QkoAAAAEiJhCSAAAAASIucJKgAAABMi7QksAAAAEiLRCRwSItMJHhIOdhIi2wkIA+EAmgAAOkGaAAASI28JJAAAABMieboOYsRAA8QhCSQAAAADylEJHBIi4QkoAAAAEiJhCSAAAAASIucJKgAAABMi7QksAAAAEiLRCRwSItMJHhIOdhIi2wkIA+EJG0AAOkobQAASYtUJBhIizJIg8IISItcJCBIid/oFooAAITAD4SLhwAASI28JJAAAABMiebovooRAA8QhCSQAAAADylEJHBIi4QkoAAAAEiJhCSAAAAASIusJKgAAABMi7QksAAAAOsGSINEJHAISItEJHBIi0wkeEg56HUJTDnxD4SBhQAA9sEDdApIjXwkcOhyihEASIswSInfSIna6FTJ//+EwA+E2oUAAEiLRCR4qAN0tEiNfCRwSIP4BHMMvgEAAADoTooRAOuj6FeKEQDrnEmLdCQQSYtUJBhIi2wkIEiJ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RCRwSItMJHhIOdhIi2wkIA+EHkMAAOkiQwAASI28JJAAAABMieboTXERAA8QhCSQAAAADylEJHBIi4QkoAAAAEiJhCSAAAAASIucJKgAAABMi7QksAAAAEiLRCRwSItMJHhIOdhIi2wkIA+EMEMAAOk0QwAASI28JJAAAABMiebo83ARAA8QhCSQAAAADylEJHBIi4QkoAAAAEiJhCSAAAAASIucJKgAAABMi7QksAAAAEiLRCRwSItMJHhIOdhIi2wkIA+ErkMAAOmyQwAASI28JJAAAABMiebomXARAA8QhCSQAAAADylEJHBIi4QkoAAAAEiJhCSAAAAASIucJKgAAABMi7QksAAAAEiLRCRwSItMJHhIOdhIi2wkIA+EwEMAAOnEQwAASI28JJAAAABMieboP3ARAA8QhCSQAAAADylEJHBIi4QkoAAAAEiJhCSAAAAASIucJKgAAABMi7QksAAAAEiLRCRwSItMJHhIOdhIi2wkIA+E0kMAAOnWQwAASI28JJAAAABMiebo5W8RAA8QhCSQAAAADylEJHBIi4QkoAAAAEiJhCSAAAAASIucJKgAAABMi7QksAAAAEiLRCRwSItMJHhIOdhIi2wkIA+E5EMAAOnoQwAASI28JJAAAABMieboi28RAA8QhCSQAAAADylEJHBIi4QkoAAAAEiJhCSAAAAASIucJKgAAABMi7QksAAAAEiLRCRwSItMJHhIOdhIi2wkIA+EEkYAAOkWRgAASI28JJAAAABMieboMW8RAA8QhCSQAAAADylEJHBIi4QkoAAAAEiJhCSAAAAASIucJKgAAABMi7QksAAAAEiLRCRwSItMJHhIOdhIi2wkIA+EJEYAAOkoRgAASI28JJAAAABMiebo124RAA8QhCSQAAAADylEJHBIi4QkoAAAAEiJhCSAAAAASIucJKgAAABMi7QksAAAAEiLRCRwSItMJHhIOdhIi2wkIA+ENkYAAOk6RgAASI28JJAAAABMiebofW4RAA8QhCSQAAAADylEJHBIi4QkoAAAAEiJhCSAAAAASIucJKgAAABMi7QksAAAAEiLRCRwSItMJHhIOdhIi2wkIA+ESEYAAOlMRgAASYtEJBBIhcBIi1wkIHQXSItwEEiJ30iJ2ugVrf//hMAPhMpqAABIjbwkkAAAAEyJ5uj9bREADxCEJJAAAAAP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AEiLrCSwAAAA6wZIg0QkcAhIi0QkcEiLTCR4SDnYdQlIOekPhLtMAAD2wQN0CkiNfCRw6KxREQBIizBMif9MifrojpD//4TAD4QUTQAASItEJHioA3S0SI18JHBIg/gEcwy+AQAAAOiIUREA66PokVERAOucSI28JJAAAABMieboT1ERAA8QhCSQAAAADylEJHBIi4QkoAAAAEiJhCSAAAAASIucJKgAAABMi7QksAAAAEiLRCRwSItMJHhIOdhIi2wkIA+EuiUAAOm+JQAASI28JJAAAABMiebo9VARAA8QhCSQAAAADylEJHBIi4QkoAAAAEiJhCSAAAAASIucJKgAAABMi7QksAAAAEiLRCRwSItMJHhIOdhIi2wkIA+ELCkAAOkwKQAASI28JJAAAABMiebom1ARAA8QhCSQAAAADylEJHBIi4QkoAAAAEiJhCSAAAAASIucJKgAAABMi7QksAAAAEiLRCRwSItMJHhIOdhIi2wkIA+EPikAAOlCKQAASI28JJAAAABMieboQVARAA8QhCSQAAAADylEJHBIi4QkoAAAAEiJhCSAAAAASIucJKgAAABMi7QksAAAAEiLRCRwSItMJHhIOdhIi2wkIA+EvCkAAOnAKQAASYtUJDBIizJIg8IISItcJCBIid/oHk8AAITAD4STTAAASI28JJAAAABMieboxk8RAA8QhCSQAAAADylEJHBIi4QkoAAAAEiJhCSAAAAASIusJKgAAABMi7QksAAAAOsGSINEJHAISItEJHBIi0wkeEg56HUJTDnxD4SJSgAA9sEDdApIjXwkcOh6TxEASIswSInfSIna6FyO//+EwA+E4koAAEiLRCR4qAN0tEiNfCRwSIP4BHMMvgEAAADoVk8RAOuj6F9PEQDrnEiNvCSQAAAATInm6B1PEQAPEIQkkAAAAA8pRCRwSIuEJKAAAABIiYQkgAAAAEiLnCSoAAAATIu0JLAAAABIi0QkcEiLTCR4SDnYSItsJCAPhCQzAADpKDMAAEiNvCSQAAAATInm6MNOEQAPEIQkkAAAAA8pRCRwSIuEJKAAAABIiYQkgAAAAEiLnCSoAAAATIu0JLAAAABIi0QkcEiLTCR4SDnYSItsJCAPhL41AADpwjUAAEiNvCSQAAAATInm6GlOEQAPEIQkkAAAAA8pRCRwSIuEJKAAAABIiYQkgAAAAEiLnCSoAAAATIu0JLAAAABIi0QkcEiLTCR4SDnYSItsJCAPhKg2AADprDYAAEmLdCQgSIt8JCBIifroDY3//4TAD4TCSgAARYt0JBBNhfYPhAxJAABBjUYBSY0ExEiDwCBIiUQkKEnB5gMx20yJ7U2LbBwoSItEJChIixQYSIXSTIt8JCB0F0iLMkiDwghMif/o9kwAAITAD4ScSgAATIn/TInuTIn66KCM//+EwA+EhkoAAEiDwwhJOd5Jie1Mi3wkGHWn6ZdIAABIjbwkkAAAAEyJ5uhyTREADxCEJJAAAAAPKUQkcEiLhCSgAAAASImEJIAAAABIi5wkqAAAAEyLtCSwAAAASItEJHBIi0wkeEg52EiLbCQgD4SlOAAA6ak4AABIjbwkkAAAAEyJ5ugYTREADxCEJJAAAAAPKUQkcEiLhCSgAAAASImEJIAAAABIi5wkqAAAAEyLtCSwAAAASItEJHBIi0wkeEg52EiLbCQgD4S3OAAA6bs4AABIjbwkkAAAAEyJ5ui+TBEADxCEJJAAAAAPKUQkcEiLhCSgAAAASImEJIAAAABIi5wkqAAAAEyLtCSwAAAASItEJHBIi0wkeEg52EiLbCQgD4QdPwAA6SE/AABIjbwkkAAAAEyJ5uhkTBEADxCEJJAAAAAPKUQkcEiLhCSgAAAASImEJIAAAABIi5wkqAAAAEyLtCSwAAAASItEJHBIi0wkeEg52EiLbCQgD4QvPwAA6TM/AABIjbwkkAAAAEyJ5ugKTBEADxCEJJAAAAAPKUQkcEiLhCSgAAAASImEJIAAAABIi5wkqAAAAEyLtCSwAAAASItEJHBIi0wkeEg52EiLbCQgD4QBRgAA6QVGAABJi1wkGEiF20yLfCQgdCxEizNNhfZ0JEnB5gMx7UiLdCsQTIn/6GZqAACEwA+EHEcAAEiDxQhJOe514kiNvCSQAAAATInm6HVLEQAPEIQkkAAAAA8pRCRwSIuEJKAAAABIiYQkgAAAAEiLnCSoAAAASIusJLAAAADrBkiDRCRwCEiLRCRwSItMJHhIOdh1CUg56Q+EOEYAAPbBA3QKSI18JHDoKUsRAEiLMEyJ/0yJ+ugLiv//hMAPhJFGAABIi0QkeKgDdLRIjXwkcEiD+ARzDL4BAAAA6AVLEQDro+gOSxEA65xJi1wkGEiF20yLfCQgdCxEizNNhfZ0JEnB5gMx7UiLdCsQTIn/6IJpAACEwA+EOEYAAEiDxQhJOe514kiNvCSQAAAATInm6JFKEQAPEIQkkAAAAA8pRCRwSIuEJKAAAABIiYQkgAAAAEiLnCSoAAAASIusJLAAAADrBkiDRCRwCEiLRCRwSItMJHhIOdh1CUg56Q+EVEUAAPbBA3QKSI18JHDoRUoRAEiLMEyJ/0yJ+ugnif//hMAPhK1FAABIi0QkeKgDdLRIjXwkcEiD+ARzDL4BAAAA6CFKEQDro+gqShEA65xJi1wkGEiF20yLfCQgdCxEizNNhfZ0JEnB5gMx7UiLdCsQTIn/6J5oAACEwA+EVEUAAEiDxQhJOe514kiNvCSQAAAATInm6K1JEQAPEIQkkAAAAA8pRCRwSIuEJKAAAABIiYQkgAAAAEiLnCSoAAAASIusJLAAAADrBkiDRCRwCEiLRCRwSItMJHhIOdh1CUg56Q+EcEQAAPbBA3QKSI18JHDoYUkRAEiLMEyJ/0yJ+uhDiP//hMAPhMlEAABIi0QkeKgDdLRIjXwkcEiD+ARzDL4BAAAA6D1JEQDro+hGSREA65xJi1wkGEiF20yLfCQgdCxEizNNhfZ0JEnB5gMx7UiLdCsQTIn/6LpnAACEwA+EcEQAAEiDxQhJOe514kiNvCSQAAAATInm6MlIEQAPEIQkkAAAAA8pRCRwSIuEJKAAAABIiYQkgAAAAEiLnCSoAAAASIusJLAAAADrBkiDRCRwCEiLRCRwSItMJHhIOdh1CUg56Q+EjEMAAPbBA3QKSI18JHDofUgRAEiLMEyJ/0yJ+uhfh///hMAPhOVDAABIi0QkeKgDdLRIjXwkcEiD+ARzDL4BAAAA6FlIEQDro+hiSBEA65xJi1wkGEiF20yLfCQgdCxEizNNhfZ0JEnB5gMx7UiLdCsQTIn/6NZmAACEwA+EjEMAAEiDxQhJOe514kiNvCSQAAAATInm6OVHEQAPEIQkkAAAAA8pRCRwSIuEJKAAAABIiYQkgAAAAEiLnCSoAAAASIusJLAAAADrBkiDRCRwCEiLRCRwSItMJHhIOdh1CUg56Q+EqEIAAPbBA3QKSI18JHDomUcRAEiLMEyJ/0yJ+uh7hv//hMAPhAFDAABIi0QkeKgDdLRIjXwkcEiD+ARzDL4BAAAA6HVHEQDro+h+RxEA65xJi1wkGEiF20yLfCQgdCxEizNNhfZ0JEnB5gMx7UiLdCsQTIn/6PJlAACEwA+EqEIAAEiDxQhJOe514kiNvCSQAAAATInm6AFHEQAPEIQkkAAAAA8pRCRwSIuEJKAAAABIiYQkgAAAAEiLnCSoAAAASIusJLAAAADrBkiDRCRwCEiLRCRwSItMJHhIOdh1CUg56Q+ExEEAAPbBA3QKSI18JHDotUYRAEiLMEyJ/0yJ+uiXhf//hMAPhB1CAABIi0QkeKgDdLRIjXwkcEiD+ARzDL4BAAAA6JFGEQDro+iaRhEA65xJi1wkGEiF20yLfCQgdCxEizNNhfZ0JEnB5gMx7UiLdCsQTIn/6A5lAACEwA+ExEEAAEiDxQhJOe514kiNvCSQAAAATInm6B1GEQAPEIQkkAAAAA8pRCRwSIuEJKAAAABIiYQkgAAAAEiLnCSoAAAASIusJLAAAADrBkiDRCRwCEiLRCRwSItMJHhIOdh1CUg56Q+E4EAAAPbBA3QKSI18JHDo0UURAEiLMEyJ/0yJ+uizhP//hMAPhDlBAABIi0QkeKgDdLRIjXwkcEiD+ARzDL4BAAAA6K1FEQDro+i2RREA65xIjbwkkAAAAEyJ5uh0RREADxCEJJAAAAAPKUQkcEiLhCSgAAAASImEJIAAAABIi5wkqAAAAEyLtCSwAAAASItEJHBIi0wkeEg52EiLbCQgD4T3LgAA6fsuAABBgHwkGgBIi2wkIHUhSYtUJChIhdJ0F0iLMkiDwghIie/oREQAAITAD4SKQAAASI28JJAAAABMiebo7EQRAA8QhCSQAAAADylEJHBIi4QkoAAAAEiJhCSAAAAASIucJKgAAABMi7QksAAAAOsGSINEJHAISItEJHBIi0wkeEg52HUJTDnxD4SvPwAA9sEDdApIjXwkcOigRBEASIswSInvSInq6IKD//+EwA+ECEAAAEiLRCR4qAN0tEiNfCRwSIP4BHMMvgEAAADofEQRAOuj6IVEEQDrnEmLdCQoSYtUJDBMi3QkIEyJ9+jMQQAAhMAPhPFAAABMiWwkKEGLBCSpAAAEAHRSMck8xw+VwUGLVCQESMHhBEwB4YN80UAAdDhMjSzRSYPFQEGLXQxIhdt0J0jB6A6D4BBJAcVMifdMie7oZGEAAITAD4SlQAAASYPFIEiDw/9140iNvCSQAAAATInm6MJDEQAPEIQkkAAAAA8pRCRwSIuEJKAAAABIiYQkgAAAAEiLnCSoAAAASIusJLAAAABIi0QkcEiLTCR4SDnYTItsJCgPhAgOAADpDA4AAEiNvCSQAAAATInm6GhDEQAPEIQkkAAAAA8pRCRwSIuEJKAAAABIiYQkgAAAAEiLnCSoAAAATIu0JLAAAABIi0QkcEiLTCR4SDnYSItsJCAPhOM3AADp5zcAAEmLVCQYSIPi+EiLMkiDwghIi1wkIEiJ3+hBQgAAhMAPhLY/AABIjbwkkAAAAEyJ5ujpQhEADxCEJJAAAAAPKUQkcEiLhCSgAAAASImEJIAAAABIi6wkqAAAAEyLtCSwAAAA6wZIg0QkcAhIi0QkcEiLTCR4SDnodQlMOfEPhKw9AAD2wQN0CkiNfCRw6J1CEQBIizBIid9Iidrof4H//4TAD4QFPgAASItEJHioA3S0SI18JHBIg/gEcwy+AQAAAOh5QhEA66PogkIRAOucSYtcJBhIhdtMi3wkIHQsRIszTYX2dCRJweYDMe1Ii3QrEEyJ/+j2YAAAhMAPhKw9AABIg8UISTnudeJIjbwkkAAAAEyJ5ugFQhEADxCEJJAAAAAPKUQkcEiLhCSgAAAASImEJIAAAABIi5wkqAAAAEiLrCSwAAAA6wZIg0QkcAhIi0QkcEiLTCR4SDnYdQlIOekPhMg8AAD2wQN0CkiNfCRw6LlBEQBIizBMif9Mifrom4D//4TAD4QhPQAASItEJHioA3S0SI18JHBIg/gEcwy+AQAAAOiVQREA66PonkERAOucSYtcJBhIhdtMi3wkIHQsRIszTYX2dCRJweYDMe1Ii3QrEEyJ/+gSYAAAhMAPhMg8AABIg8UISTnudeJIjbwkkAAAAEyJ5ughQREADxCEJJAAAAAPKUQkcEiLhCSgAAAASImEJIAAAABIi5wkqAAAAEiLrCSwAAAA6wZIg0QkcAhIi0QkcEiLTCR4SDnYdQlIOekPhOQ7AAD2wQN0CkiNfCRw6NVAEQBIizBMif9Mifrot3///4TAD4Q9PAAASItEJHioA3S0SI18JHBIg/gEcwy+AQAAAOixQBEA66PoukARAOucSI28JJAAAABMieboeEARAA8QhCSQAAAADylEJHBIi4QkoAAAAEiJhCSAAAAASIucJKgAAABMi7QksAAAAEiLRCRwSItMJHhIOdhIi2wkIA+EOyMAAOk/IwAASYtEJDBMieaoBEiLXCQgD4QUCQAASIP4Bw+HAwkAAEiNlCTAAAAASInfTInm6SwJAABJi3QkKEmLVCQwSItcJCBIid/odT0AAITAD4SaPAAASI28JJAAAABMiebozT8RAA8QhCSQAAAADylEJHBIi4QkoAAAAEiJhCSAAAAASIusJKgAAABMi7QksAAAAOsGSINEJHAISItEJHBIi0wkeEg56HUJTDnxD4SQOgAA9sEDdApIjXwkcOiBPxEASIswSInfSIna6GN+//+EwA+E6ToAAEiLRCR4qAN0tEiNfCRwSIP4BHMMvgEAAADoXT8RAOuj6GY/EQDrnEyJbCQoMfZB9kQkAgi6AAAAAHQKSYt0JDBJi1QkOEyLdCQgTIn36Jk8AACEwA+EyjsAAEmLRCQYSYtMJCBIi0AoQYtUJChIiUQkcIlUJHhIiYwkgAAAAEiLhCSAAAAASIlEJBAPEEQkcA8RBCRMiffo7zwAAITAD4SAOwAAQYsEJKkAABAAdFuJwcHpE4PhAUiNDEnB6BSD4AFIweAERTHtQYN8zDAASY0UzEiNRBAwTA9F6HQtSY0EzEiDwDCLWAxIhdt0HUyJ90yJ7ujjWwAAhMAPhCQ7AABJg8UgSIPD/3XjSI28JJAAAABMieboQT4RAA8QhCSQAAAADylEJFBIi4QkoAAAAEiJRCRgSIucJKgAAABIi6wksAAAAEiLRCRQSItMJFhIOdhMi2wkKA+E9ggAAOn6CAAASI28JJAAAABMiebo6j0RAA8QhCSQAAAADylEJHBIi4QkoAAAAEiJhCSAAAAASIucJKgAAABMi7QksAAAAEiLRCRwSItMJHhIOdhIi2wkIA+EBS8AAOkJLwAASI28JJAAAABMiebokD0RAA8QhCSQAAAADylEJHBIi4QkoAAAAEiJhCSAAAAASIucJKgAAABMi7QksAAAAEiLRCRwSItMJHhIOdhIi2wkIA+EFy8AAOkbLwAASYtUJBhIizJIg8IISItcJCBIid/obTwAAITAD4TiOQAASI28JJAAAABMieboFT0RAA8QhCSQAAAADylEJHBIi4QkoAAAAEiJhCSAAAAASIusJKgAAABMi7QksAAAAOsGSINEJHAISItEJHBIi0wkeEg56HUJTDnxD4TYNwAA9sEDdApIjXwkcOjJPBEASIswSInfSIna6Kt7//+EwA+EMTgAAEiLRCR4qAN0tEiNfCRwSIP4BHMMvgEAAADopTwRAOuj6K48EQDrnEiNvCSQAAAATInm6Gw8EQAPEIQkkAAAAA8pRCRwSIuEJKAAAABIiYQkgAAAAEiLnCSoAAAATIu0JLAAAABIi0QkcEiLTCR4SDnYSItsJCAPhL8xAADpwzEAAEmLVCQYSIsySIPCCEiLXCQgSInf6Ek7AACEwA+EvjgAAEiNvCSQAAAATInm6PE7EQAPEIQkkAAAAA8pRCRwSIuEJKAAAABIiYQkgAAAAEiLrCSoAAAATIu0JLAAAADrBkiDRCRwCEiLRCRwSItMJHhIOeh1CUw58Q+EtDYAAPbBA3QKSI18JHDopTsRAEiLMEiJ30iJ2uiHev//hMAPhA03AABIi0QkeKgDdLRIjXwkcEiD+ARzDL4BAAAA6IE7EQDro+iKOxEA65xJi1QkGEiLMkiDwghIi1wkIEiJ3+h/OgAAhMAPhPQ3AABIjbwkkAAAAEyJ5ugnOxEADxCEJJAAAAAPKUQkcEiLhCSgAAAASImEJIAAAABIi6wkqAAAAEyLtCSwAAAA6wZIg0QkcAhIi0QkcEiLTCR4SDnodQlMOfEPhOo1AAD2wQN0CkiNfCRw6Ns6EQBIizBIid9IidrovXn//4TAD4RDNgAASItEJHioA3S0SI18JHBIg/gEcwy+AQAAAOi3OhEA66PowDoRAOucSI28JJAAAABMiebofjoRAA8QhCSQAAAADylEJHBIi4QkoAAAAEiJhCSAAAAASIucJKgAAABMi7QksAAAAEiLRCRwSItMJHhIOdhIi2wkIA+EyR8AAOnNHwAASI28JJAAAABMieboJDoRAA8QhCSQAAAADylEJHBIi4QkoAAAAEiJhCSAAAAASIucJKgAAABMi7QksAAAAEiLRCRwSItMJHhIOdhIi2wkIA+EoxsAAOmnGwAASINEJHAISItEJHBIi0wkeEg56HUJTDnxD4TMNAAA9sEDdApIjXwkcOi9OREASIswSInfSIna6J94//+EwA+EJTUAAEiLRCR4qAN0tEiNfCRwSIP4BHMMvgEAAADomTkRAOuj6KI5EQDrnEiLfCQgSIn66GN4//+EwA+EJDYAAEmDxQhJOe0PhOMBAABJi10AiwOFwHUtSIXbdCiDexABdN5Ii1MISIPi+EiLMkiDwghIi3wkIOhgOAAAhMB1wengNQAAg8D9g/j+D4LRAAAASIXbD4TIAAAAg3soAUiLfCQgdBhIi3MISIPm/EiJ+ujnd///hMAPhKg1AABMi3MYSYP+CA+Cdv///0SJ8IPgBEiFwA+FZ////0mD5vgPhF3///9JjUYQSIlEJDhBi0YMicOB4////x9IweMDSIXbdDlIiWwkQDHtTIt8JDhJizQvSIt8JCDoYAP//4TAD4RwNQAASIPFCEg563XhQYtGDEyLfCQYSItsJECpAAAAQA+E+/7//yX///8fSItMJDhIizTBSIX2D4XP/v//6d/+//9Ii3MIQPbGAg+F0f7//0iD5vzps/7//0yLfCQYTItsJCjpKTMAAEiNvCSQAAAATInm6AQ4EQAPEIQkkAAAAA8pRCRwSIuEJKAAAABIiYQkgAAAAEiLnCSoAAAATIu0JLAAAABIi0QkcEiLTCR4SDnYSItsJCAPhA8kAADpEyQAAEiJy0iD4/6LE0yNJNNJg8QISIXJSA9EwUiDwwj2wQFID0TYTDnjD4SjMgAASIszSIt8JCDoYQL//4TAD4Q2NAAASIPDCEw543Xi6YAyAABIjbwkkAAAAEyJ5uhbNxEADxCEJJAAAAAPKUQkcEiLhCSgAAAASImEJIAAAABIi5wkqAAAAEyLtCSwAAAASItEJHBIi0wkeEg52EyLbCQoSItsJCAPhL8AAADpwwAAAEiD4PhIicZIjZQkwAAAAEiJ3+iFcQAAhMAPhKozAABJi0QkMEiJxkiD5vioBEkPRfRIjZQkwAAAAEiJ3+hbcQAAhMAPhdgxAADpezMAAEg56Q+ExTEAAPbBA3QKSI18JHDotjYRAEiLMEyJ90yJ8uiYdf//hMAPhB4yAABIi0QkeKgDdBdIjXwkcEiD+ARzFL4BAAAA6JI2EQDrDUiDRCRwCOsF6JM2EQBIi0QkcEiLTCR4SDnYdJbrnUw58Q+EWTEAAPbBA3QKSI18JHDoSjYRAEiLMEiJ70iJ6ugsdf//hMAPhLIxAABIi0QkeKgDdBdIjXwkcEiD+ARzFL4BAAAA6CY2EQDrDUiDRCRwCOsF6Cc2EQBIi0QkcEiLTCR4SDnYdJbrnUg56Q+E7TAAAPbBA3QKSI18JFDo3jURAEiLMEyJ90yJ8ujAdP//hMAPhHwyAABIi0QkWKgDdBdIjXwkUEiD+ARzFL4BAAAA6Lo1EQDrDUiDRCRQCOsF6Ls1EQBMi2wkKEiLRCRQSItMJFhIOdh0keuYSDnpD4R8MAAA9sEDdApIjXwkcOhtNREASIswTIn3TIny6E90//+EwA+E1TAAAEiLRCR4qAN0F0iNfCRwSIP4BHMUvgEAAADoSTURAOsNSINEJHAI6wXoSjURAEiLRCRwSItMJHhIOdh0luudSDnpD4QQMAAA9sEDdApIjXwkUOgBNREASIswTIn3TIny6ONz//+EwA+EnzEAAEiLRCRYqAN0F0iNfCRQSIP4BHMUvgEAAADo3TQRAOsNSINEJFAI6wXo3jQRAEyLbCQoSItEJFBIi0wkWEg52HSR65hMOfEPhJ8vAAD2wQN0CkiNfCRw6JA0EQBIizBIie9IierocnP//4TAD4T4LwAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOhsNBEA6w1Ig0QkcAjrBehtNBEASItEJHBIi0wkeEg52HSW651MOfEPhDMvAAD2wQN0CkiNfCRw6CQ0EQBIizBIie9IieroBnP//4TAD4SMLwAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOgANBEA6w1Ig0QkcAjrBegBNBEASItEJHBIi0wkeEg52HSW651MOfEPhMcuAAD2wQN0CkiNfCRw6LgzEQBIizBIie9IieromnL//4TAD4QgLwAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOiUMxEA6w1Ig0QkcAjrBeiVMxEASItEJHBIi0wkeEg52HSW651MOfEPhFsuAAD2wQN0CkiNfCRw6EwzEQBIizBIie9IieroLnL//4TAD4S0LgAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOgoMxEA6w1Ig0QkcAjrBegpMxEASItEJHBIi0wkeEg52HSW651MOfEPhO8tAAD2wQN0CkiNfCRw6OAyEQBIizBIie9IierownH//4TAD4RILgAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOi8MhEA6w1Ig0QkcAjrBei9MhEASItEJHBIi0wkeEg52HSW651MOfEPhIMtAAD2wQN0CkiNfCRw6HQyEQBIizBIie9IieroVnH//4TAD4TcLQAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOhQMhEA6w1Ig0QkcAjrBehRMhEASItEJHBIi0wkeEg52HSW651MOfEPhBctAAD2wQN0CkiNfCRw6AgyEQBIizBIie9Iiero6nD//4TAD4RwLQAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOjkMREA6w1Ig0QkcAjrBejlMREASItEJHBIi0wkeEg52HSW651MOfEPhKssAAD2wQN0CkiNfCRw6JwxEQBIizBIie9IierofnD//4TAD4QELQAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOh4MREA6w1Ig0QkcAjrBeh5MREASItEJHBIi0wkeEg52HSW651MOfEPhD8sAAD2wQN0CkiNfCRw6DAxEQBIizBIie9IieroEnD//4TAD4SYLAAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOgMMREA6w1Ig0QkcAjrBegNMREASItEJHBIi0wkeEg52HSW651MOfEPhNMrAAD2wQN0CkiNfCRw6MQwEQBIizBIie9Iieropm///4TAD4QsLAAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOigMBEA6w1Ig0QkcAjrBeihMBEASItEJHBIi0wkeEg52HSW651MOfEPhGcrAAD2wQN0CkiNfCRw6FgwEQBIizBIie9IieroOm///4TAD4TAKwAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOg0MBEA6w1Ig0QkcAjrBeg1MBEASItEJHBIi0wkeEg52HSW651MOfEPhPsqAAD2wQN0CkiNfCRw6OwvEQBIizBIie9Iierozm7//4TAD4RUKwAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOjILxEA6w1Ig0QkcAjrBejJLxEASItEJHBIi0wkeEg52HSW651MOfEPhI8qAAD2wQN0CkiNfCRw6IAvEQBIizBIie9IieroYm7//4TAD4ToKgAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOhcLxEA6w1Ig0QkcAjrBehdLxEASItEJHBIi0wkeEg52HSW651MOfEPhCMqAAD2wQN0CkiNfCRw6BQvEQBIizBIie9Iiero9m3//4TAD4R8KgAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOjwLhEA6w1Ig0QkcAjrBejxLhEASItEJHBIi0wkeEg52HSW651MOfEPhLcpAAD2wQN0CkiNfCRw6KguEQBIizBIie9Iieroim3//4TAD4QQKgAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOiELhEA6w1Ig0QkcAjrBeiFLhEASItEJHBIi0wkeEg52HSW651MOfEPhEspAAD2wQN0CkiNfCRw6DwuEQBIizBIie9IieroHm3//4TAD4SkKQAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOgYLhEA6w1Ig0QkcAjrBegZLhEASItEJHBIi0wkeEg52HSW651MOfEPhN8oAAD2wQN0CkiNfCRw6NAtEQBIizBIie9Iierosmz//4TAD4Q4KQAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOisLREA6w1Ig0QkcAjrBeitLREASItEJHBIi0wkeEg52HSW651MOfEPhHMoAAD2wQN0CkiNfCRw6GQtEQBIizBIie9IieroRmz//4TAD4TMKAAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOhALREA6w1Ig0QkcAjrBehBLREASItEJHBIi0wkeEg52HSW651MOfEPhAcoAAD2wQN0CkiNfCRw6PgsEQBIizBIie9Iiero2mv//4TAD4RgKAAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOjULBEA6w1Ig0QkcAjrBejVLBEASItEJHBIi0wkeEg52HSW651MOfEPhJsnAAD2wQN0CkiNfCRw6IwsEQBIizBIie9Iierobmv//4TAD4T0JwAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOhoLBEA6w1Ig0QkcAjrBehpLBEASItEJHBIi0wkeEg52HSW651MOfEPhC8nAAD2wQN0CkiNfCRw6CAsEQBIizBIie9IieroAmv//4TAD4SIJwAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOj8KxEA6w1Ig0QkcAjrBej9KxEASItEJHBIi0wkeEg52HSW651MOfEPhMMmAAD2wQN0CkiNfCRw6LQrEQBIizBIie9Iierolmr//4TAD4QcJwAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOiQKxEA6w1Ig0QkcAjrBeiRKxEASItEJHBIi0wkeEg52HSW651MOfEPhFcmAAD2wQN0CkiNfCRw6EgrEQBIizBIie9IieroKmr//4TAD4SwJgAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOgkKxEA6w1Ig0QkcAjrBeglKxEASItEJHBIi0wkeEg52HSW651MOfEPhOslAAD2wQN0CkiNfCRw6NwqEQBIizBIie9Iierovmn//4TAD4REJgAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOi4KhEA6w1Ig0QkcAjrBei5KhEASItEJHBIi0wkeEg52HSW651MOfEPhH8lAAD2wQN0CkiNfCRw6HAqEQBIizBIie9IieroUmn//4TAD4TYJQAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOhMKhEA6w1Ig0QkcAjrBehNKhEASItEJHBIi0wkeEg52HSW651MOfEPhBMlAAD2wQN0CkiNfCRw6AQqEQBIizBIie9Iiero5mj//4TAD4RsJQAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOjgKREA6w1Ig0QkcAjrBejhKREASItEJHBIi0wkeEg52HSW651MOfEPhKckAAD2wQN0CkiNfCRw6JgpEQBIizBIie9Iieroemj//4TAD4QAJQAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOh0KREA6w1Ig0QkcAjrBeh1KREASItEJHBIi0wkeEg52HSW651MOfEPhDskAAD2wQN0CkiNfCRw6CwpEQBIizBIie9IieroDmj//4TAD4SUJAAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOgIKREA6w1Ig0QkcAjrBegJKREASItEJHBIi0wkeEg52HSW651MOfEPhM8jAAD2wQN0CkiNfCRw6MAoEQBIizBIie9Iieroomf//4TAD4QoJAAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOicKBEA6w1Ig0QkcAjrBeidKBEASItEJHBIi0wkeEg52HSW651MOfEPhGMjAAD2wQN0CkiNfCRw6FQoEQBIizBIie9IieroNmf//4TAD4S8IwAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOgwKBEA6w1Ig0QkcAjrBegxKBEASItEJHBIi0wkeEg52HSW651MOfEPhPciAAD2wQN0CkiNfCRw6OgnEQBIizBIie9Iieroymb//4TAD4RQIwAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOjEJxEA6w1Ig0QkcAjrBejFJxEASItEJHBIi0wkeEg52HSW651MOfEPhIsiAAD2wQN0CkiNfCRw6HwnEQBIizBIie9IieroXmb//4TAD4TkIgAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOhYJxEA6w1Ig0QkcAjrBehZJxEASItEJHBIi0wkeEg52HSW651MOfEPhB8iAAD2wQN0CkiNfCRw6BAnEQBIizBIie9Iiero8mX//4TAD4R4IgAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOjsJhEA6w1Ig0QkcAjrBejtJhEASItEJHBIi0wkeEg52HSW651MOfEPhLMhAAD2wQN0CkiNfCRw6KQmEQBIizBIie9IierohmX//4TAD4QMIgAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOiAJhEA6w1Ig0QkcAjrBeiBJhEASItEJHBIi0wkeEg52HSW651MOfEPhEchAAD2wQN0CkiNfCRw6DgmEQBIizBIie9IieroGmX//4TAD4SgIQAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOgUJhEA6w1Ig0QkcAjrBegVJhEASItEJHBIi0wkeEg52HSW651MOfEPhNsgAAD2wQN0CkiNfCRw6MwlEQBIizBIie9IierormT//4TAD4Q0IQAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOioJREA6w1Ig0QkcAjrBeipJREASItEJHBIi0wkeEg52HSW651MOfEPhG8gAAD2wQN0CkiNfCRw6GAlEQBIizBIie9IieroQmT//4TAD4TIIAAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOg8JREA6w1Ig0QkcAjrBeg9JREASItEJHBIi0wkeEg52HSW651MOfEPhAMgAAD2wQN0CkiNfCRw6PQkEQBIizBIie9Iiero1mP//4TAD4RcIAAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOjQJBEA6w1Ig0QkcAjrBejRJBEASItEJHBIi0wkeEg52HSW651MOfEPhJcfAAD2wQN0CkiNfCRw6IgkEQBIizBIie9IieroamP//4TAD4TwHwAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOhkJBEA6w1Ig0QkcAjrBehlJBEASItEJHBIi0wkeEg52HSW651MOfEPhCsfAAD2wQN0CkiNfCRw6BwkEQBIizBIie9Iiero/mL//4TAD4SEHwAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOj4IxEA6w1Ig0QkcAjrBej5IxEASItEJHBIi0wkeEg52HSW651MOfEPhL8eAAD2wQN0CkiNfCRw6LAjEQBIizBIie9IierokmL//4TAD4QYHwAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOiMIxEA6w1Ig0QkcAjrBeiNIxEASItEJHBIi0wkeEg52HSW651MOfEPhFMeAAD2wQN0CkiNfCRw6EQjEQBIizBIie9IieroJmL//4TAD4SsHgAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOggIxEA6w1Ig0QkcAjrBeghIxEASItEJHBIi0wkeEg52HSW651MOfEPhOcdAAD2wQN0CkiNfCRw6NgiEQBIizBIie9IieroumH//4TAD4RAHgAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOi0IhEA6w1Ig0QkcAjrBei1IhEASItEJHBIi0wkeEg52HSW651MOfEPhHsdAAD2wQN0CkiNfCRw6GwiEQBIizBIie9IieroTmH//4TAD4TUHQAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOhIIhEA6w1Ig0QkcAjrBehJIhEASItEJHBIi0wkeEg52HSW651MOfEPhA8dAAD2wQN0CkiNfCRw6AAiEQBIizBIie9Iiero4mD//4TAD4RoHQAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOjcIREA6w1Ig0QkcAjrBejdIREASItEJHBIi0wkeEg52HSW651MOfEPhKMcAAD2wQN0CkiNfCRw6JQhEQBIizBIie9IierodmD//4TAD4T8HAAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOhwIREA6w1Ig0QkcAjrBehxIREASItEJHBIi0wkeEg52HSW651MOfEPhDccAAD2wQN0CkiNfCRw6CghEQBIizBIie9IieroCmD//4TAD4SQHAAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOgEIREA6w1Ig0QkcAjrBegFIREASItEJHBIi0wkeEg52HSW651MOfEPhMsbAAD2wQN0CkiNfCRw6LwgEQBIizBIie9Iieronl///4TAD4QkHAAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOiYIBEA6w1Ig0QkcAjrBeiZIBEASItEJHBIi0wkeEg52HSW651MOfEPhF8bAAD2wQN0CkiNfCRw6FAgEQBIizBIie9IieroMl///4TAD4S4GwAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOgsIBEA6w1Ig0QkcAjrBegtIBEASItEJHBIi0wkeEg52HSW651MOfEPhPMaAAD2wQN0CkiNfCRw6OQfEQBIizBIie9Iieroxl7//4TAD4RMGwAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOjAHxEA6w1Ig0QkcAjrBejBHxEASItEJHBIi0wkeEg52HSW651MOfEPhIcaAAD2wQN0CkiNfCRw6HgfEQBIizBIie9IieroWl7//4TAD4TgGgAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOhUHxEA6w1Ig0QkcAjrBehVHxEASItEJHBIi0wkeEg52HSW651MOfEPhBsaAAD2wQN0CkiNfCRw6AwfEQBIizBIie9Iiero7l3//4TAD4R0GgAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOjoHhEA6w1Ig0QkcAjrBejpHhEASItEJHBIi0wkeEg52HSW651MOfEPhK8ZAAD2wQN0CkiNfCRw6KAeEQBIizBIie9Iierogl3//4TAD4QIGgAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOh8HhEA6w1Ig0QkcAjrBeh9HhEASItEJHBIi0wkeEg52HSW651MOfEPhEMZAAD2wQN0CkiNfCRw6DQeEQBIizBIie9IieroFl3//4TAD4ScGQAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOgQHhEA6w1Ig0QkcAjrBegRHhEASItEJHBIi0wkeEg52HSW651MOfEPhNcYAAD2wQN0CkiNfCRw6MgdEQBIizBIie9Iieroqlz//4TAD4QwGQAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOikHREA6w1Ig0QkcAjrBeilHREASItEJHBIi0wkeEg52HSW651MOfEPhGsYAAD2wQN0CkiNfCRw6FwdEQBIizBIie9IieroPlz//4TAD4TEGAAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOg4HREA6w1Ig0QkcAjrBeg5HREASItEJHBIi0wkeEg52HSW651MOfEPhP8XAAD2wQN0CkiNfCRw6PAcEQBIizBIie9Iiero0lv//4TAD4RYGAAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOjMHBEA6w1Ig0QkcAjrBejNHBEASItEJHBIi0wkeEg52HSW651MOfEPhJMXAAD2wQN0CkiNfCRw6IQcEQBIizBIie9IieroZlv//4TAD4TsFwAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOhgHBEA6w1Ig0QkcAjrBehhHBEASItEJHBIi0wkeEg52HSW651MOfEPhCcXAAD2wQN0CkiNfCRw6BgcEQBIizBIie9Iiero+lr//4TAD4SAFwAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOj0GxEA6w1Ig0QkcAjrBej1GxEASItEJHBIi0wkeEg52HSW651MOfEPhLsWAAD2wQN0CkiNfCRw6KwbEQBIizBIie9Iierojlr//4TAD4QUFwAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOiIGxEA6w1Ig0QkcAjrBeiJGxEASItEJHBIi0wkeEg52HSW651MOfEPhE8WAAD2wQN0CkiNfCRw6EAbEQBIizBIie9IieroIlr//4TAD4SoFgAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOgcGxEA6w1Ig0QkcAjrBegdGxEASItEJHBIi0wkeEg52HSW651MOfEPhOMVAAD2wQN0CkiNfCRw6NQaEQBIizBIie9Iierotln//4TAD4Q8FgAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOiwGhEA6w1Ig0QkcAjrBeixGhEASItEJHBIi0wkeEg52HSW651MOfEPhHcVAAD2wQN0CkiNfCRw6GgaEQBIizBIie9IieroSln//4TAD4TQFQAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOhEGhEA6w1Ig0QkcAjrBehFGhEASItEJHBIi0wkeEg52HSW651MOfEPhAsVAAD2wQN0CkiNfCRw6PwZEQBIizBIie9Iiero3lj//4TAD4RkFQAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOjYGREA6w1Ig0QkcAjrBejZGREASItEJHBIi0wkeEg52HSW651MOfEPhJ8UAAD2wQN0CkiNfCRw6JAZEQBIizBIie9Iieroclj//4TAD4T4FAAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOhsGREA6w1Ig0QkcAjrBehtGREASItEJHBIi0wkeEg52HSW651MOfEPhDMUAAD2wQN0CkiNfCRw6CQZEQBIizBIie9IieroBlj//4TAD4SMFAAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOgAGREA6w1Ig0QkcAjrBegBGREASItEJHBIi0wkeEg52HSW651MOfEPhMcTAAD2wQN0CkiNfCRw6LgYEQBIizBIie9Iieromlf//4TAD4QgFAAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOiUGBEA6w1Ig0QkcAjrBeiVGBEASItEJHBIi0wkeEg52HSW651MOfEPhFsTAAD2wQN0CkiNfCRw6EwYEQBIizBIie9IieroLlf//4TAD4S0EwAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOgoGBEA6w1Ig0QkcAjrBegpGBEASItEJHBIi0wkeEg52HSW651MOfEPhO8SAAD2wQN0CkiNfCRw6OAXEQBIizBIie9Iierowlb//4TAD4RIEwAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOi8FxEA6w1Ig0QkcAjrBei9FxEASItEJHBIi0wkeEg52HSW651MOfEPhIMSAAD2wQN0CkiNfCRw6HQXEQBIizBIie9IieroVlb//4TAD4TcEgAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOhQFxEA6w1Ig0QkcAjrBehRFxEASItEJHBIi0wkeEg52HSW651MOfEPhBcSAAD2wQN0CkiNfCRw6AgXEQBIizBIie9Iiero6lX//4TAD4RwEgAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOjkFhEA6w1Ig0QkcAjrBejlFhEASItEJHBIi0wkeEg52HSW651MOfEPhKsRAAD2wQN0CkiNfCRw6JwWEQBIizBIie9IieroflX//4TAD4QEEgAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOh4FhEA6w1Ig0QkcAjrBeh5FhEASItEJHBIi0wkeEg52HSW651MOfEPhD8RAAD2wQN0CkiNfCRw6DAWEQBIizBIie9IieroElX//4TAD4SYEQAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOgMFhEA6w1Ig0QkcAjrBegNFhEASItEJHBIi0wkeEg52HSW651MOfEPhNMQAAD2wQN0CkiNfCRw6MQVEQBIizBIie9IieroplT//4TAD4QsEQAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOigFREA6w1Ig0QkcAjrBeihFREASItEJHBIi0wkeEg52HSW651MOfEPhGcQAAD2wQN0CkiNfCRw6FgVEQBIizBIie9IieroOlT//4TAD4TAEAAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOg0FREA6w1Ig0QkcAjrBeg1FREASItEJHBIi0wkeEg52HSW651MOfEPhPsPAAD2wQN0CkiNfCRw6OwUEQBIizBIie9IierozlP//4TAD4RUEAAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOjIFBEA6w1Ig0QkcAjrBejJFBEASItEJHBIi0wkeEg52HSW651MOfEPhI8PAAD2wQN0CkiNfCRw6IAUEQBIizBIie9IieroYlP//4TAD4ToDwAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOhcFBEA6w1Ig0QkcAjrBehdFBEASItEJHBIi0wkeEg52HSW651MOfEPhCMPAAD2wQN0CkiNfCRw6BQUEQBIizBIie9Iiero9lL//4TAD4R8DwAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOjwExEA6w1Ig0QkcAjrBejxExEASItEJHBIi0wkeEg52HSW651MOfEPhLcOAAD2wQN0CkiNfCRw6KgTEQBIizBIie9IieroilL//4TAD4QQDwAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOiEExEA6w1Ig0QkcAjrBeiFExEASItEJHBIi0wkeEg52HSW651MOfEPhEsOAAD2wQN0CkiNfCRw6DwTEQBIizBIie9IieroHlL//4TAD4SkDgAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOgYExEA6w1Ig0QkcAjrBegZExEASItEJHBIi0wkeEg52HSW651MOfEPhN8NAAD2wQN0CkiNfCRw6NASEQBIizBIie9IieroslH//4TAD4Q4DgAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOisEhEA6w1Ig0QkcAjrBeitEhEASItEJHBIi0wkeEg52HSW651MOfEPhHMNAAD2wQN0CkiNfCRw6GQSEQBIizBIie9IieroRlH//4TAD4TMDQAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOhAEhEA6w1Ig0QkcAjrBehBEhEASItEJHBIi0wkeEg52HSW651MOfEPhAcNAAD2wQN0CkiNfCRw6PgREQBIizBIie9Iiero2lD//4TAD4RgDQAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOjUEREA6w1Ig0QkcAjrBejVEREASItEJHBIi0wkeEg52HSW651MOfEPhJsMAAD2wQN0CkiNfCRw6IwREQBIizBIie9IieroblD//4TAD4T0DAAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOhoEREA6w1Ig0QkcAjrBehpEREASItEJHBIi0wkeEg52HSW651MOfEPhC8MAAD2wQN0CkiNfCRw6CAREQBIizBIie9IieroAlD//4TAD4SIDAAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOj8EBEA6w1Ig0QkcAjrBej9EBEASItEJHBIi0wkeEg52HSW651MOfEPhMMLAAD2wQN0CkiNfCRw6LQQEQBIizBIie9Iierolk///4TAD4QcDAAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOiQEBEA6w1Ig0QkcAjrBeiREBEASItEJHBIi0wkeEg52HSW651MOfEPhFcLAAD2wQN0CkiNfCRw6EgQEQBIizBIie9IieroKk///4TAD4SwCwAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOgkEBEA6w1Ig0QkcAjrBeglEBEASItEJHBIi0wkeEg52HSW651MOfEPhOsKAAD2wQN0CkiNfCRw6NwPEQBIizBIie9Iierovk7//4TAD4RECwAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOi4DxEA6w1Ig0QkcAjrBei5DxEASItEJHBIi0wkeEg52HSW651MOfEPhH8KAAD2wQN0CkiNfCRw6HAPEQBIizBIie9IieroUk7//4TAD4TYCgAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOhMDxEA6w1Ig0QkcAjrBehNDxEASItEJHBIi0wkeEg52HSW651MOfEPhBMKAAD2wQN0CkiNfCRw6AQPEQBIizBIie9Iiero5k3//4TAD4RsCgAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOjgDhEA6w1Ig0QkcAjrBejhDhEASItEJHBIi0wkeEg52HSW651MOfEPhKcJAAD2wQN0CkiNfCRw6JgOEQBIizBIie9Iieroek3//4TAD4QACgAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOh0DhEA6w1Ig0QkcAjrBeh1DhEASItEJHBIi0wkeEg52HSW651MOfEPhDsJAAD2wQN0CkiNfCRw6CwOEQBIizBIie9IieroDk3//4TAD4SUCQAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOgIDhEA6w1Ig0QkcAjrBegJDhEASItEJHBIi0wkeEg52HSW651MOfEPhM8IAAD2wQN0CkiNfCRw6MANEQBIizBIie9Iierookz//4TAD4QoCQAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOicDREA6w1Ig0QkcAjrBeidDREASItEJHBIi0wkeEg52HSW651MOfEPhGMIAAD2wQN0CkiNfCRw6FQNEQBIizBIie9IieroNkz//4TAD4S8CAAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOgwDREA6w1Ig0QkcAjrBegxDREASItEJHBIi0wkeEg52HSW651MOfEPhPcHAAD2wQN0CkiNfCRw6OgMEQBIizBIie9Iieroykv//4TAD4RQCAAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOjEDBEA6w1Ig0QkcAjrBejFDBEASItEJHBIi0wkeEg52HSW651MOfEPhIsHAAD2wQN0CkiNfCRw6HwMEQBIizBIie9IieroXkv//4TAD4TkBwAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOhYDBEA6w1Ig0QkcAjrBehZDBEASItEJHBIi0wkeEg52HSW651MOfEPhB8HAAD2wQN0CkiNfCRw6BAMEQBIizBIie9Iiero8kr//4TAD4R4BwAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOjsCxEA6w1Ig0QkcAjrBejtCxEASItEJHBIi0wkeEg52HSW651MOfEPhLMGAAD2wQN0CkiNfCRw6KQLEQBIizBIie9Iierohkr//4TAD4QMBwAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOiACxEA6w1Ig0QkcAjrBeiBCxEASItEJHBIi0wkeEg52HSW651MOfEPhEcGAAD2wQN0CkiNfCRw6DgLEQBIizBIie9IieroGkr//4TAD4SgBgAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOgUCxEA6w1Ig0QkcAjrBegVCxEASItEJHBIi0wkeEg52HSW651MOfEPhNsFAAD2wQN0CkiNfCRw6MwKEQBIizBIie9Iierorkn//4TAD4Q0BgAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOioChEA6w1Ig0QkcAjrBeipChEASItEJHBIi0wkeEg52HSW651MOfEPhG8FAAD2wQN0CkiNfCRw6GAKEQBIizBIie9IieroQkn//4TAD4TIBQAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOg8ChEA6w1Ig0QkcAjrBeg9ChEASItEJHBIi0wkeEg52HSW651MOfEPhAMFAAD2wQN0CkiNfCRw6PQJEQBIizBIie9Iiero1kj//4TAD4RcBQAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOjQCREA6w1Ig0QkcAjrBejRCREASItEJHBIi0wkeEg52HSW651MOfEPhJcEAAD2wQN0CkiNfCRw6IgJEQBIizBIie9Iieroakj//4TAD4TwBAAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOhkCREA6w1Ig0QkcAjrBehlCREASItEJHBIi0wkeEg52HSW651MOfEPhCsEAAD2wQN0CkiNfCRw6BwJEQBIizBIie9Iiero/kf//4TAD4SEBAAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOj4CBEA6w1Ig0QkcAjrBej5CBEASItEJHBIi0wkeEg52HSW651MOfEPhL8DAAD2wQN0CkiNfCRw6LAIEQBIizBIie9Iierokkf//4TAD4QYBAAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOiMCBEA6w1Ig0QkcAjrBeiNCBEASItEJHBIi0wkeEg52HSW651MOfEPhFMDAAD2wQN0CkiNfCRw6EQIEQBIizBIie9IieroJkf//4TAD4SsAwAASItEJHioA3QXSI18JHBIg/gEcxS+AQAAAOggCBEA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/f9Iie/otpAQAOnx/v//SI1sJAhMjSXA7k//TI0tWY3v/0iNHfja8v8PH4AAAAAASInvSI01ARak/7ocAAAAuQYAAABFMcBBuf/////oTpAQAEiJ7+hWkBAAug4AAABIicdIjTXVYpj/6CIx/f+6BAAAAEiJx0iNNeRzfv/oDjH9/7oBAAAASInHTInm6P4w/f+6AgAAAEiJx0iNNa01Ov/o6jD9/7oBAAAASInHTInm6Now/f+6AQAAAEiJx0iNNaYdYP/oxjD9/7oHAAAASInHSI01g4lW/+iyMP3/SInHTIn+6HeZEAC6BAAAAEiJx0iNNbLJrf/okzD9/0iJxzH26DmSEAC6AgAAAEiJx0yJ7uh5MP3/ug0AAABIicdIid7oaTD9/0iJx0yJ9ug+Kf3/SInv6IaPEADp8f7//0GJxEiNbCQITI09je1P/0yNLSaM7/9IjR3Kgu//Dx9AAEiJ70iNNdEUpP+6HQAAALkGAAAARTHAQbn/////6B6PEABIie/oJo8QALoOAAAASInHSI01pWGY/+jyL/3/uhMAAABIicdIjTUGZlX/6N4v/f+6AQAAAEiJx0yJ/ujOL/3/ugIAAABIicdIjTWcRHz/6Lov/f+6AQAAAEiJx0yJ/uiqL/3/ugEAAABIicdIjTV2HGD/6JYv/f+6FgAAAEiJx0iNNabIrf/ogi/9/0iJx0SJ5ugnkRAAugQAAABIicdIjTWCyK3/6GMv/f9Iiccx9ugJkRAAugIAAABIicdMie7oSS/9/7oOAAAASInHSIne6Dkv/f9IicdMifboDij9/0iJ7+hWjhAA6fH+//9JicdIjWwkCEyNJV3sT/9MjS32iu//SI0djGPG/w8fQABIie9IjTWhE6T/uiAAAAC5BgAAAEUxwEG5/////+jujRAASInv6PaNEAC6DgAAAEiJx0iNNXVgmP/owi79/7ojAAAASInHSI015oJT/+iuLv3/ugEAAABIicdMieboni79/7oCAAAASInHSI01bEN8/+iKLv3/ugEAAABIicdMieboei79/7oBAAAASInHSI01skmt/+hmLv3/uiYAAABIicdIjTVb17f/6FIu/f9IicdMif7oB5AQALoEAAAASInHSI01QhNg/+gzLv3/SInHvgEAAADo1o8QALoCAAAASInHTInu6BYu/f+6DgAAAEiJx0iJ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JHAPKUQkYA8pRCRQSMeEJJgAAAAABAAAx4QkoAAAAAAAAAC/KAAAAOh3gBAASMcAAAAAAEjHQAgAAAEAD1fADxFAEEjHQCAAAAAASIlEJGBIiUQkaEiJrCSwAAAASImsJLgAAABIjUQdAEiJhCTAAAAASImcJMgAAABMjaQksAAAAEyJpCRAAQAASIXbdECAfQDvdQxIg8UBSImsJLAAAABIOcV0KYB9ALt1DEiDxQFIiawksAAAAEg5xXQSgH0Av3UMSIPFAUiJrCSwAAAASI18JFBIjbQkQAEAAOhDFQAAi4QkoAAAAIXAdCGDwP+D+BAPh8IHAABImEiNDesM8/9IYzyBSAHP6bQHAABmg3wkXgQPhV4IAABMiXwkEIN8JFAAD4RcCAAASLn///////8AAEyLfCRYSSHPSI0V7c63/0iJ0EjB6BDB+Bi+DQAAACnGiXQkDEghykiJVCQoSI0FHvcQAEiDwBBIiUQkIEyJNCSQZkGDfw4DD4UgCAAAD1fADymEJLAAAABmx4QkvgAAAAUESIuEJLgAAABIuQAAAAAAAP//SCHISI0Nfs63/0gJyEiJhCS4AAAAx4QksAAAAAcAAABNi3cISLn///////8AAEkhzki5AAAAAAAAABBIhciLRCQMQYnFuAcAAABED0ToQYsfTA9EZCQoSIXbdHJMifVIweMFSQHe6w8PH0QAAEiDxSBIg8PgdFcPt0UOqQAQAAB1C4tNAEE5zXXj6xGQD75VDbkNAAAAKdFBOc110EiLdQhIuf///////wAASCHOqQAQAABID0X1STn0dA9MiedMieroxoEQAIXAdaJJie5Ji0cISLn///////8AAEghyEGLD0jB4QVIAcFJOc4PhPUGAABB9kYfBA+E6gYAAEmNRhAPV8APKYQk8AAAAA8phCTgAAAADymEJNAAAAAPKYQkwAAAAA8phCSwAAAASMeEJAABAAAAAAAAQQ+3Th5Ji14YSLr///////8AAEgh0/fBABAAAEgPRdi/4AAAAOibfRAASInFD1fADxFACEiLRCQgSIlFAEyNdRhMifdIid7o6eQAAEyJtCSwAAAASIucJLgAAABIiawkuAAAAEiF23QjSMfA//////BID8FDCEiFwHURSIsDSInf/1AQSInf6AmFEABMi6wksAAAAEGDvYAAAAAAdCdJi3V4D7YW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mcJIuP////////9/SAHQuv/////rFEw58H0Puv////9IuP////////9/ZEiLDCUoAAAASDtMJBB1CEiDxBhbQV7D6InOCABmDx+EAAAAAABVQVdBVkFUU0iD7CBBic9JidaJ9UiJ+2RIiwQlKAAAAEiJRCQYSbwAAAAAAAAAgEiJfCQIiXQkEEyNTCQIMf9Iid6J6kyJ8UWJ+Ojx8f//g/3/dEVIi0wkCIt0JBCD/v90SUiJ2EgpyDH/Oe5AD5fHjZUAKGvuD0bVSCn4KfJIhcl4REg52H5Tuv////9IuAAAAAAAAACA60K6/////0iJ2Ew543Q/6TgBAAAx0kiFyQ+Zwki4/////////39IAdC6/////+sUSDnYfQ+6/////0i4/////////39IOdh1F0w543Ucg8UBjUoBTInjOc1yF+nsAAAASInDfw3p4gAAADnqD4baAAAATYX2dDd5OLj/////SLn/////////f0GD//8PhKMAAABFhf8PhYwAAABNOeYPhJEAAABJ994xwOmEAAAARTH2g/r/D4SKAAAAQYP//3Q1jYoAKGvuRDn6SInYTBnwRDn6D0PKicpEKfpNhfZ4Mkg52H5ouv////9IuAAAAAAAAACA61cxyU2F9g+ZwUi4/////////39IAci6/////+s7SDnYfTa6/////0i4/////////3/rJUn31rgAKGvuRCn4TInxSYnOQYnHg/r/D4V2////uv////9IidhkSIsMJSgAAABIO0wkGHUNSIPEIFtBXEFeQV9dw+h7zAgAZi4PH4QAAAAAAJBVQVdBVkFUU0iD7CBBic9JidaJ9UiJ+2RIiwQlKAAAAEiJRCQYSbwAAAAAAAAAgEiJfCQIiXQkEEyNTCQIMf9Iid6J6kyJ8UWJ+Ojh7///g/3/dEVIi1QkCIt0JBCD/v90TkiJ2Egp0DH/Oe5AD5fHjY0AKGvuD0bNSCn4KfFIhdJ4SUg52H5Yuf////9IuAAAAAAAAACA60e5/////0iJ2Lr/////TDnjdD/pGwEAADHJSIXSD5nBSLj/////////f0gByLn/////6xRIOdh9D7n/////SLj/////////f0g52HUZTDnjdSCNcQGDxQFMieOJyjnuchvpzQAAAEiJw4nKfA/pwQAAAInKOekPg7cAAABNhfZ0KHk/uP////9Iuv//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7uiePAAASInvSInu6JM8AABIie9Iie7oiDwAAEiJ70iJ7uh9PAAASInvSInu6HI8AABIie9Iie7oZzwAAEiJ70iJ7uhcPAAASInvSInu6FE8AABIie9Iie7oRjwAAEiJ70iJ7ug7PAAASInvSInu6DA8AABIie9Iie7oJTwAAEiJ70iJ7ugaPAAASInvSInu6A88AABIie9Iie7oBDwAAEiJ70iJ7uj5OwAASInvSInu6O47AABIie9Iie7o4zsAAEiJ70iJ7ujYOwAASInvSInu6M07AABIie9Iie5IjVQkMOhtNgAAu4AAAAAPH4QAAAAAAEiJ70iJ7uilOwAAg8P/dfBIjWwkUEyNdCRwSInvSInuTIny6Dg2AABIie9Iie7ofTsAAEiJ70iJ7uhyOwAASInvSInu6Gc7AABIie9Iie7oXDsAAEiJ70iJ7uhROwAASInvSInu6EY7AABIie9Iie7oOzsAAEiJ70iJ7ugwOwAASInvSInu6CU7AABIie9Iie7oGjsAAEiJ70iJ7ugPOwAASInvSInu6AQ7AABIie9Iie7o+ToAAEiJ70iJ7ujuOgAASInvSInu6OM6AABIie9Iie7o2DoAAEiJ70iJ7ujNOgAASInvSInu6MI6AABIie9Iie7otzoAAEiJ70iJ7uisOgAASInvSInu6KE6AABIie9Iie7oljoAAEiJ70iJ7uiLOgAASInvSInu6IA6AABIie9Iie7odToAAEiJ70iJ7uhqOgAASInvSInu6F86AABIie9Iie7oVDoAAEiJ70iJ7uhJOgAASInvSInu6D46AABIie9Iie7oMzoAAEiJ70iJ7ugoOgAASInvSInuTIny6Mo0AABIie9Iie7oDzoAAEiJ70iJ7ugEOgAASInvSInu6Pk5AABIie9Iie7o7jkAAEiJ70iJ7ujjOQAASInvSInu6Ng5AABIie9Iie7ozTkAAEiJ70iJ7ujCOQAASInvSInu6Lc5AABIie9Iie7orDkAAEiJ70iJ7uihOQAASInvSInu6JY5AABIie9Iie7oizkAAEiJ70iJ7uiAOQAASInvSInu6HU5AABIie9Iie7oajkAAEiJ70iJ7uhfOQAASInvSInu6FQ5AABIie9Iie7oSTkAAEiJ70iJ7ug+OQAASInvSInu6DM5AABIie9Iie7oKDkAAEiJ70iJ7ugd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AAAASYnRRIi2lwAAAEmJ0IiWmAAAAIi2mQAAAEjB6hCIlpoAAABIwesYSMHvIEjB7ShJwekwScHoOIiemwAAAEiJykCIvpwAAABIic9AiK6dAAAASInNRIiOngAAAEmJyUSIhp8AAABJiciIjqAAAACIrqEAAABIwekQiI6iAAAASMHqGEjB7yBIwe0oScHpMEnB6DiIlqMAAABIicFAiL6kAAAASInCQIiupQAAAEiJx0SIjqYAAABIicNEiIanAAAASInFiIaoAAAAiKapAAAASMHoEIiGqgAAAEjB6RiIjqsAAABIweogiJasAAAASMHvKECIvq0AAABIweswiJ6uAAAASMHtOECIrq8AAABkSIsEJSgAAABIO4Qk8AAAAHUSSIHE+AAAAFtBXEFdQV5BX13D6JIyAgBmkFVBV0FWQVVBVFNIgewIBQAATInDSInNSYnVSIl0JAhIiTwkZEiLBCUoAAAASImEJAAFAABMjaQkAAIAAEUx/7oAAwAATInnMfbogjMCAEyJ50iJ7ujnHAAATI20JCACAABIjXVITIn36NMcAABIjbwkQAIAAEiBxZAAAABIie7ovBwAAA9XwA8phCTwAQAADymEJOABAAAPKYQk0AEAAA8phCTAAQAADymEJLABAAAPKYQkoAEAAEiNtCTAAQAASI2UJOABAABIjbwkoAEAAEyJ4U2J8EiNrCRAAgAASYnp6JstAABIjbwkYAIAAEiNtCSAAgAASI2UJKACAABMieFNifBJielMjaQk4AEAAEFUTI20JMgBAABBVkiNrCSwAQAAVWoA6HYdAABIg8QgSI28JMACAABIjbQk4AIAAEiNlCQAAwAASI2MJGACAABMjYQkgAIAAEyNjCSgAgAAQVRBVlVqAOg2HQAASIPEIEiNvCQgAwAASI20JEADAABIjZQkYAMAAEiNjCTAAgAATI2EJOACAABMjYwkAAMAAEFUQVZVagDo9hwAAEiDxCBIjbwkgAMAAEiNtCSgAwAASI2UJMADAABIjYwkIAMAAEyNhCRAAwAATI2MJGADAABBVEFWVWoA6LYcAABIg8QgSI28JOADAABIjbQkAAQAAEiNlCQgBAAASI2MJIADAABMjYQkoAMAAEyNjCTAAwAAQVRBVlVqAOh2HAAASIPEIEiNvCRABAAASI20JGAEAABIjZQkgAQAAEiN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//bYD7bASInaSL4BAAAA/////0gB8r4AAAAASIPW/0gpwkiD3gBA9t5AD7b2SInISCnwvgAAAABIGfZA9t5ED7bWTInGvf////9IAe69AAAAAEiD1f9MKdZIg90AQPbdQA+27Uk5670AAAAASBntQPbdSBntSYnqTSHRSPfVSCHvTAnPTCHTSCHqSAnaTCHRSCHoSAnITSHCSCH1TAnVSIm8JIAAAABIiZQkiAAAAEiJhCSQAAAASImsJJgAAABIi1wkMEiJ30iNtCSAAAAA6Gjg//9IiwNIi0sITCnougAAAABIGdL22g+20jH2SAOUJOgAAABAD5LGSCnRvwAAAABIGfdA9t9Ii1MQQA+29zH/SAO0JPAAAABAD5LHSCnyvgAAAABIGf5A9t5AD7b2Mf9IA7Qk+AAAAEiLaxhAD5LHSCn1vgAAAABIGf5AD7b2SPfeSBn2SIn3Sb0BAAAA/////0wh70gB8In2SBHOSIPSAEgR70iJA0iJcwhIiVMQSIl7GEiLdCQITCs+uAAAAABIGcD22A+2wDHJSANGCA+SwUiLFCRIKcK4AAAAAEgZyPbYD7bAMclIA0YQD5LBSSnEuAAAAABIGcj22A+2wDHJSANGGA+SwUkpxrgAAAAASBnID7bASPfYSBnASInBTCHpSQHHicBIEdBJg9QATBHxSItUJDhMiTpIiUIITIliEEiJShhJiddMi4QkwAAAAEiLtCTIAAAATIuMJNAAAABNictJD6TzAUwPpMYBSIusJNgAAABJD6zpP0jB7T9IifJJvAAAAAD/////TAHisP8UAPbYD7bATInfSCnHuAAAAABIGcD22EQPttBNic64/////0kBxrsAAAAASIPT/00p1kiD2wD22w+220g53b0AAAAASBntS40cAED23UgZ7UuNDABIg8EBSInoSCHDSPfVSCHpSAnZSCHGSCHqSAnySSHDSCHvTAnfTCHITCH1SAnFSImMJMAAAABIiZQkyAAAAEiJvCTQAAAASImsJNgAAABIjbwkwAAAAEiJ/ugq3v//TIn/SI10JEBMifroytj//0iLvCTIAAAATIuMJNAAAABMic5ID6T+AUyLhCTAAAAATA+kxwFIi6wk2AAAAEkPrOk/SMHtP02J40kB+7D/FAD22A+22EiJ8Egp2LkAAAAASBnJS40cAPbZD7bJQbr/////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jUwBIEj32EiDwBBmDzjc0WYPONzZZg843OEPEAwBSIPAIGYPONzQZg843NhmDzjc4A8QRAHwddNmDzjc0WYPONzZZg843OFmDzjd0GYPON3YZg843eDzww8QAcHgBA8QSRAPV9APV9gPV+APEEEgSI1MASBI99hIg8AQZg843tFmDzje2WYPON7hDxAMAUiDwCBmDzje0GYPON7YZg843uAPEEQB8HXTZg843tFmDzje2WYPON7hZg8439BmDzjf2GYPON/g88MPEAHB4AQPEEkQD1fQD1fYD1fgD1foDxBBIEiNTAEgSPfYDx8ASIPAEGYPONzRZg843NlmDzjc4WYPONzpDxAMAUiDwCBmDzjc0GYPONzYZg843OBmDzjc6A8QRAHwdclmDzjc0WYPONzZZg843OFmDzjc6WYPON3QZg843dhmDzjd4GYPON3o88NmDx9EAAAPEAHB4AQPEEkQD1fQD1fYD1fgD1foDxBBIEiNTAEgSPfYDx8ASIPAEGYPON7RZg843tlmDzje4WYPON7pDxAMAUiDwCBmDzje0GYPON7YZg843uBmDzje6A8QRAHwdclmDzje0WYPON7ZZg843uFmDzje6WYPON/QZg8439hmDzjf4GYPON/o88NmDx9EAAAPEAHB4AQPEEkQD1fQZg/v2GYP7+BmDzjc0UiNTAEgSPfYZg843NlmD+/oZg/v8GYPONzhZg/v+A8QBAFIg8AQ6x1mLg8fhAAAAAAADx9AAGYPONzRZg843NlmDzjc4WYPONzpZg843PFmDzjc+Q8QDAFIg8AgZg843NBmDzjc2GYPONzgZg843OhmDzjc8GYPONz4DxBEAfB1tWYPONzRZg843NlmDzjc4WYPONzpZg843PFmDzjc+WYPON3QZg843dhmDzjd4GYPON3oZg843fBmDzjd+PPDDx+AAAAAAA8QAcHgBA8QSRAPV9BmD+/YZg/v4GYPON7RSI1MASBI99hmDzje2WYP7+hmD+/wZg843uFmD+/4DxAEAUiDwBDrHWYuDx+EAAAAAAAPH0AAZg843tFmDzje2WYPON7hZg843ulmDzje8WYPON75DxAMAUiDwCBmDzje0GYPON7YZg843uBmDzje6GYPON7wZg843vgPEEQB8HW1Zg843tFmDzje2WYPON7hZg843ulmDzje8WYPON75Zg8439BmDzjf2GYPON/gZg843+hmDzjf8GYPON/488MPH4AAAAAADxABweAEDxBJEA9X0A9X2GYP7+BmD+/oZg/v8EiNTAEgSPfYZg843NFmD+/4ZkQP78BmDzjc2WZED+/IDxAEAUiDwBDrFGYuDx+EAAAAAABmDzjc0WYPONzZZg843OFmDzjc6WYPONzxZg843PlmRA843MFmRA843MkPEAwBSIPAIGYPONzQZg843NhmDzjc4GYPONzoZg843PBmDzjc+GZEDzjcwGZEDzjcyA8QRAHwdZ1mDzjc0WYPONzZZg843OFmDzjc6WYPONzxZg843PlmRA843MFmRA843MlmDzjd0GYPON3YZg843eBmDzjd6GYPON3wZg843fhmRA843cBmRA843cjzww8fgAAAAAAPEAHB4AQPEEkQD1fQD1fYZg/v4GYP7+hmD+/wSI1MASBI99hmDzje0WYP7/hmRA/vwGYPON7ZZkQP78gPEAQBSIPAEOsUZi4PH4QAAAAAAGYPON7RZg843tlmDzje4WYPON7pZg843vFmDzje+WZEDzjewWZEDzjeyQ8QDAFIg8AgZg843tBmDzje2GYPON7gZg843uhmDzje8GYPON74ZkQPON7AZkQPON7IDxBEAfB1nWYPON7RZg843tlmDzje4WYPON7pZg843vFmDzje+WZEDzjewWZEDzjeyWYPON/QZg8439hmDzjf4GYPON/oZg843/BmDzjf+GZEDzjfwGZEDzjfyPPDDx+AAAAAAEiD4vAPhEoFAACLgfAAAAAPEAFJictBicJFhcAPhE4CAABIgfqAAAAAD4LoAAAA8w9vF/MPb18Q8w9vZyDzD29vMPMPb3dA8w9vf1DzRA9vR2DzRA9vT3BIjb+AAAAASIHqgAAAAOtmDx+EAAAAAAAPERZMidnzD28XRInQDxFeEPMPb18QDxFmIPMPb2cgDxFuMPMPb28wDxF2QPMPb3dADxF+UPMPb39QRA8RRmDzRA9vR2BEDxFOcEiNtoAAAADzRA9vT3BIjb+AAAAA6A39//9IgeqAAAAAc5QPERZMidkPEV4QRInQDxFmIA8RbjAPEXZADxF+UEQPEUZgRA8RTnBIjbaAAAAASIHCgAAAAA+EPQQAAA8QF0iD+iBycA8QXxAPhJYAAAAPEGcgSIP6QA+CqAAAAA8QbzAPhL4A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Lg8fhAAAAAAAZi4PH4QAAAAAAA8fRAAAQYPACGZED29EJGBmDzjc0UWJwWZED29MJHBmDzjc2UEPyQ8QQaBmDzjc4UEx6ZBmDzjc6USJTCQMTY1IAWYPONzxZg843PlmRA843MFmRA843MkPEEmwQQ/JZg843NBmDzjc2EEx6WaQZg843OBmDzjc6ESJTCQcTY1IAmYPONzwZg843PhmRA843MBmRA843MgPEEHAQQ/JZg843NFmDzjc2UEx6WaQZg843OFmDzjc6USJTCQsTY1IA2YPONzxZg843PlmRA843MFmRA843MkPEEnQQQ/JZg843NBmDzjc2EEx6WaQZg843OBmDzjc6ESJTCQ8TY1IBGYPONzwZg843PhmRA843MBmRA843MgPEEHgQQ/JZg843NFmDzjc2UEx6WaQZg843OFmDzjc6USJTCRMTY1IBWYPONzxZg843PlmRA843MFmRA843MkPEEnwQQ/JZg843NBmDzjc2EEx6WaQZg843OBmDzjc6ESJTCRcTY1IBmYPONzwZg843PhmRA843MBmRA843MgPEAFBD8lmDzjc0WYPONzZQTHpZpBmDzjc4WYPONzpRIlMJGxNjUgHZg843PFmDzjc+WZEDzjcwWZEDzjcyQ8QSRBBD8lmDzjc0GYPONzYZg843OBBMenzRA9vF2YPONzoRIlMJHyD+AtmDzjc8GYPONz4ZkQPONzAZkQPONzIDxBBIA+CyQAAAGYPONzRZg843NlmDzjc4WYPONzpZg843PFmDzjc+WZEDzjcwWZEDzjcyQ8QSTBmDzjc0GYPONzYZg843OBmDzjc6GYPONzwZg843PhmRA843MBmRA843MgPEEFAdGtmDzjc0WYPONzZZg843OFmDzjc6WYPONzxZg843PlmRA843MFmRA843MkPEElQZg843NBmDzjc2GYPONzgZg843OhmDzjc8GYPONz4ZkQPONzAZkQPONzIDxBBYOsNZi4PH4QAAAAAAA8fAPNED29fEGZED+/Q80QPb2cgZkQP79jzRA9vbzBmRA/v4PNED293QGZED+/o80QPb39QZkQP7/BmRA/v+GYPONzRZg843NlmDzjc4WYPONzpZg843PFmDzjc+WZEDzjcwWZEDzjcyfMPb09gSI2/gAAAAGZBDzjd0mYP78jzRA9vV/BmQQ843dtmRA/v0GZED28cJGZBDzjd5GZBDzjd7WZED29kJBBmRA9vbCQgZkEPON32ZkEPON3/ZkQPb3QkMGZED298JEBmRA843cFmD29EJFAPEEmQZkUPON3KDxEWZkEPb9MPEV4QZkEPb9wPEWYgZkEPb+UPEW4wZkEPb+4PEXZAZkEPb/cPEX5QZg9v+EQPEUZgRA8RTnBIjbaAAAAASIPqCA+D9Pv//0iDwggPhMABAABIjUmASI1JEEiD+gQPglgBAAAPhNIAAADB4ARmRA9vRCRgZkUP78kPEEEQZg843NFmDzjc2UiNTAEQSPfYZg843OFIg8AQRA8QF2YPONzpZg843PFEDxBfEEQPEGcgZg843PlmRA843MHodvH///NED29vMGZBD+/S80QPb1dAZkEP79vzD38WZkEP7+TzD39eEGZBD+/t8w9/ZiBmQQ/v8vMPf24w8w9/dkBIg/oGD4ILAQAARA8QX1BBD1f7DxF+UA+E+AAAAEQPEGdgRQ9XxEQPEUZg6eUAAABmLg8fhAAAAAAADx9EAABmDzjc0UiNSRD/yGYPONzZZg843OFmDzjc6Q8QCXXhZg843dFmDzjd2UQPEBdEDxBfEGYPON3hZg843elEDxBnIEQPEG8wQQ9X0g8RFkEPV9sPEV4QZkEP7+TzD39mIGZBD+/t8w9/bjDra2YuDx+EAAAAAABmLg8fhAAAAAAAkGYPONzRSI1JEP/IZg843NlmDzjc4Q8QCXXmZg843dFmDzjd2WYPON3hRA8QF0EPV9IPERZIg/oCchxEDxBfEEEPV9sPEV4QdA1EDxBnIEEPV+QPEWYgD1fAMe1mD+/JZg/v0mYP79tmD+/kZg/v7WYP7/ZmD+//DykEJGZFD+/ADylEJBBmRQ/vyQ8pRCQgZkUP79IPKUQkMGZFD+/bDylEJEBmRQ/v5A8pRCRQZkUP7+0PKUQkYGZFD+/2DylEJHBmRQ/v/0mLa/hJjSPzw5BIhdIPhFcJAABEi5HwAAAASYnLRYXJD4SkAAAAQQ8QEESJ0EiD+hByZkiD6hDrAZAPEB9IjX8QDxABDxBJEA9X2EiNSSAPV9NmDzjc0f/IDxAJSI1JEHXwZg843dFEidBMidkPERZIjXYQSIPqEHPASIPCEHUZZg/vwGYP78lBDxEQZg/v0mYP79vp0QgAAEiJ0UiH9/OkZpC5EAAAAEgp0THA86pmkEiNf/BEidBIif5MidlIMdLpdP///w8fQABIg/oQdVrzD28X80EPbxhmD2/iDxABDxBJEEiNSSAPV9BmDzje0UH/yg8QCUiNSRB172YPON/RZg/vwGYP78nzQQ9/IA9X02YP79sPERZmD+/S6UkIAABmDx+EAAAAAABMjRwkVUiD7BBIg+TwSInNRQ8QEESJ0EiD+lAPhv4FAAAPEAHzD28X8w9vXxBmRA9v2vMPb2cgZkQPb+PzD29vMGZED2/s8w9vd0BmRA9v9fMPb39QZkQPb/5MjQ0v8gIARYtJBEiD+nAPhgcEAABBgeEAAEAESIPqUEGB+QAAQAAPhCYFAABIg+ogSI1JcOsXZi4PH4QAAAAAAA8fRAAARA8RDkiNdhDzRA9vR2BmD+/Q80QPb09wZg/v2A8QSaBmD+/gSMfF/////0iD+nBmD+/oZg/v8GYP7/hmRA/vwGYPON7RZkQP78gPEEGwZg843tlmDzje4WYPON7pZg843vFmDzje+WZEDzjewUiD1QBIgeWAAAAAZkQPON7JSAH9DxBJwGYPON7QZg843thmDzje4GYPON7oZg843vBmDzje+GZEDzjewGZEDzjeyA8QQdCQZg843tFmDzje2WYPON7hZg843ulmDzje8WYPON75ZkQPON7BZkQPON7JDxBJ4JBmDzje0GYPON7YZg843uBmDzje6GYPON7wZg843vhmRA843sBmRA843sgPEEHwkGYPON7RZg843tlmDzje4WYPON7pZg843vFmDzje+WZEDzjewWZEDzjeyQ8QCZBmDzje0GYPON7YZg843uBmDzje6GYPON7wZg843vhmRA843sBmRA843sgPEEEQkGYPON7RZg843tlmDzje4WYPON7pZg843vFmDzje+WZEDzjewWZEDzjeyQ8QSSCD+AtmDzje0GYPON7YZg843uBmDzje6GYPON7wZg843vhmRA843sBmRA843sgPEEEwD4LMAAAAZg843tFmDzje2WYPON7hZg843ulmDzje8WYPON75ZkQPON7BZkQPON7JDxBJQJBmDzje0GYPON7YZg843uBmDzje6GYPON7wZg843vhmRA843sBmRA843sgPEEFQdG1mDzje0WYPON7ZZg843uFmDzje6WYPON7xZg843vlmRA843sFmRA843skPEElgkGYP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u//////BwAZBMcsB2EKNlBKSzAyPQQnDQTHbRAHaRItWKEG7/////8HCCkEx2wHCQo2MEX307/9BCdNBMcNEAdlEi1YEQbv/////wcEPQTHDAdFCjZwT0V2EhUEJy0Ex00QB20SLViBBu//////BwxVBMdMBy0KNhBBPfqhvQQnbQTHLRAHYRItWPEG7/////8HABkExywHYQo2UEuDmLP5BCcNBMdtEAdpEi1YYQbv/////wcIKQTHbAcJCjYwRFEMBo0EJ00Exw0QB2USLVjRBu//////BwQ9BMcMB0UKNnBOhEQhOQQnLQTHTRAHbRItWEEG7/////8HDFUEx0wHLQo2EEIJ+U/dBCdtBMctEAdhEi1YsQbv/////wcAGQTHLAdhCjZQSNfI6vUEJw0Ex20QB2kSLVghBu//////BwgpBMdsBwkKNjBG70tcqQQnTQTHDRAHZRItWJEG7/////8HBD0ExwwHRQo2cE5HThutBCctBMdNEAdtEixZBu//////BwxVBMdMBy0QBwEQBy0QB8UQB+kiDxkBIOf4Pgl73//+JRQCJXQSJTQiJVQxMizwkTIt0JAhMi2QkEEiLXCQYSItsJCBIg8Qo88PMzMzMzMzMzMzMzMz///////////////8AAAAAAAAAAAAAAAABAAAA/////wEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAEAAAAAAAAAAAAAAP////////////////7///8AAAAAUSVj/MLKufOEnhenrfrmvP//////////AAAAAP////9PvADuqsjRzGYuDx+EAAAAAABmLg8fhAAAAAAADx9AAEFUQVVNMcBNMclNMdJNMdtNMe1MKwZMG04ITBtWEEyJwEwbXhhIjTX0/v//TInKSYPdAEwDBkyJ0UwTTghME1YQTYncTBNeGE2F7UwPRMBMD0TKTIkHTA9E0UyJTwhND0TcTIlXEEyJXxhMiywkTItkJAhIjWQkEPPDZg8fRAAASI0NGcICAEiLSQiB4QABCACB+QABCAAPhEMGAABVU0FUQVVBVkFXSIsCSInTTI01DP///0yLPSX///9IicFI9yZJicBIichJ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4vP2rpAAAABmTA849tnzTA849uXE4vP2rpgAAABMicrEwuv2x2ZMDzj24fNMDzj27WZNDzj26PNNDzj2wEmD0ADEwvP2roAAAABmTA849snzTA849tXEwvP2rogAAABmTA849tHzTA849t3EwvP2rpAAAABmTA849tnzTA849uXEwvP2rpgAAABIi1MQZkwPOPbh80wPOPbtZk0POPbp800POPbBSYPQAMTi8/augAAAAGZMDzj20fNMDzj23cTi8/auiAAAAGZMDzj22fNMDzj25cTi8/aukAAAAGZMDzj24fNMDzj27cTi8/aumAAAAEyJ0sTC6/bHZkwPOPbp80wPOPbFZk0POPbB800POPbJSYPRAMTC8/augAAAAGZMDzj20fNMDzj23cTC8/auiAAAAGZMDzj22fNMDzj25cTC8/aukAAAAGZMDzj24fNMDzj27cTC8/aumAAAAEiLUxhmTA849unzTA849sVmTQ849sLzTQ849spJg9EAxOLz9q6AAAAAZkwPOPbZ80wPOPblxOLz9q6IAAAAZkwPOPbh80wPOPbtxOLz9q6QAAAAZkwPOPbp80wPOPbFxOLz9q6YAAAATInaxMLr9sdmTA849sHzTA849s1mTQ849srzTQ849tJJg9IAxMLz9q6AAAAAZkwPOPbZ80wPOPblxMLz9q6IAAAAZkwPOPbh80wPOPbtxMLz9q6QAAAAZkwPOPbp80wPOPbFxMLz9q6YAAAATY22gAAAAEyJ42ZMDzj2wfNMDzj2zUyJ6mZNDzj2y/NNDzj200mD0gBMicFNKyZNG24ITRtGEEyJzU0bThhJg9oATA9C40wPQupMD0LBTA9CzUyJJ0yJbwhMiUcQTIlPGEyLPCRMi3QkCEyLbCQQTItkJBhIi1wkIEiLbCQoSI1kJDDzw2YuDx+EAAAAAABmLg8fhAAAAAAAZg8fRAAAVVNBVEFVQVZBV0iJ00iLFkyLdghMi34QTItGGEiNNf30///rG2YuDx+EAAAAAABmLg8fhAAAAAAADx+AAAAAAMRCs/bWxELz9t9IidBmSQ9uzsRC0/bgTInySQHKZkkPbtdJEetJg9QATTHtxMLz9u9mTA849tnzTA849uXEwvP26EyJ+mZMDzj24fNMDzj27UmD1QDEQvP28EiJwmZJD27YTTH/Zk0POPbJ80wPOPbpZk0P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J8X+f28gxf5/d0DF/n9/YMV+f4eAAAAAxfh3SInoTIt40EyLcNhMi2jgTItg6EiLaPBIi1j4SI0g88NmLg8fhAAAAAAAZi4PH4QAAAAAAGYPH4QAAAAAAEiD7oBIMcBMi0aATItOiEyLVpBJweAAScHhHU2J00nB4jpJwesGTAHATAHITAHQSYPTAEiJB0yJ2EyLRphMi06gScHgF02JyknB4TRJweoMTAHATAHISYPSAEiJRwhMidBMi16oTItGsEnB4xFNicFJweAuScHpEkwB2EwBwEmD0QBIiUcQTInITItWuEyLXsBJweILTYnYScHjKEnB6BhMAdBMAdhJg9AASIlHGEyJwEyLTshMi1bQTIte2EnB4QVJweIiTYnYScHjP0nR6EwByEwB0EwB2EmD0ABIiUcgTInATItO4EyLVuhJweEcTYnTScHiOUnB6wdMAchMAdBJg9MASIlHKEyJ2EyLRvBMi074ScHgFk2JyknB4TNJweoNTAHATAHISYPSAEiJRzBMidBMix5Mi0YIScHjEE2JwUnB4C1JwekTTAHYTAHASYPRAEiJRzhMichMi1YQTIteGEnB4gpNidhJweMnScHoGUwB0EwB2EmD0ABIiUdATInATItOIEyLVihMi14wScHhBEnB4iFNidhJweM+ScHoAkwByEwB0EwB2EmD0ABIiUdITInATItOOEyLVkBJweEbTYnTScHiOEnB6whMAchMAdBJg9MASIlHUEyJ2EyLRkhMi05QScHgFU2JyknB4TJJweoOTAHATAHISYPSAEiJR1hMidBMi15YTItGYEnB4w9NicFJweAsScHpFEwB2EwBwEmD0QBIiUdgTInITItWaEyLXnBJweIJTYnYScHjJknB6BpMAdBMAdhJg9AASIlHaEyJwEyLTnhMi5aAAAAATIueiAAAAEnB4QNJweIgTYnYScHjPUnB6ANMAchMAdBMAdhJg9AASIlHcEyJwEyLjpAAAABMi5aYAAAAScHhGk2J00nB4jdJwesJTAHITAHQSYPTAEiJR3hMidjzw2aQSIPvgEyLBrj///8fTItOCE2Jw0nB6wBJIcNMiV+ATYnCScHqHUkhwkyJV4hND6zIOkkhwEyJR5BMi1YQTYnIScHoF0khwEyJR5hND6zRNEkhwUyJT6BMi14YTYnRScHpEUkhwUyJT6hND6za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JIAAAAAAAAAASImcJIgAAAD2gyQBAAACSInfdG4PKYQkAAEAAA8phCTwAAAADymEJOAAAAAPKYQk0AAAAA8phCTAAAAADymEJLAAAAAPKYQkoAAAAA8phCSQAAAATI28JJAAAABMif/o4xYAAEiNVCQIMf9Mif7o5BYAAIXAD5REJAFIi7wkiAAAAIsHqAEPhaUAAACJwYPJAfAPsQ+oAQ+FlAAAAEyJ90iJ3ui/i/P/i4MgAQAAhcAPjpMAAACDwP+JgyABAABIi7wkiAAAAIs3g+YChzeD/ghzaIB8JAEAdDdIjXQkCL8CAAAAMdLobBYAAIXAdCJIjTVj30T/SI0N+UGd/78DAAAAui0BAABBicAxwOgmJfP/ZEiLBCUoAAAASDuEJBgBAAB1XUiBxCABAABbQV5BX8PoRX/z/+li////6DmA8/+AfCQBAHWT68hIjTUJ30T/SI0NT6FB/0yNBZuMQf9MjQ0K3bX/vwMAAAC6BAIAADHA6MEk8/+LgyABAADpNf///+hBAwAAkFNIifuLBQ77AAA93QAAAHUQSI01uPkAAEiJ31vpz43z/0iNPfD6AABIjRWRgPP/MfboGpnz/+vZAAAAAAAAAAD/Ncq7AAD/Jcy7AAAPH0AA/yXKuwAAaAAAAADp4P////8lwrsAAGgBAAAA6dD/////Jbq7AABoAgAAAOnA/////yWyuwAAaAMAAADpsP////8lqrsAAGgEAAAA6aD/////JaK7AABoBQAAAOmQ/////yWauwAAaAYAAADpgP////8lkrsAAGgHAAAA6XD/////JYq7AABoCAAAAOlg/////yWCuwAAaAkAAADpUP////8lersAAGgKAAAA6UD/////JXK7AABoCwAAAOkw/////yVquwAAaAwAAADpIP////8lYrsAAGgNAAAA6RD/////JVq7AABoDgAAAOkA/////yVSuwAAaA8AAADp8P7///8lSrsAAGgQAAAA6eD+////JUK7AABoEQAAAOnQ/v///yU6uwAAaBIAAADpwP7///8lMrsAAGgTAAAA6bD+////JSq7AABoFAAAAOmg/v///yUiuwAAaBUAAADpkP7///8lGrsAAGgWAAAA6YD+////JRK7AABoFwAAAOlw/v///yUKuwAAaBgAAADpYP7///8lArsAAGgZAAAA6VD+////Jfq6AABoGgAAAOlA/v///yXyugAAaBsAAADpMP7///8l6roAAGgcAAAA6SD+////JeK6AABoHQAAAOkQ/v///yXaugAAaB4AAADpAP7///8l0roAAGgfAAAA6fD9////Jcq6AABoIAAAAOng/f///yXCugAAaCEAAADp0P3///8luroAAGgiAAAA6cD9////JbK6AABoIwAAAOmw/f///yWqugAAaCQAAADpoP3///8loroAAGglAAAA6ZD9////JZq6AABoJgAAAOmA/f///yWSugAAaCcAAADpcP3///8liroAAGgoAAAA6WD9////JYK6AABoKQAAAOlQ/f///yV6ugAAaCoAAADpQP3///8lcroAAGgrAAAA6TD9////JWq6AABoLAAAAOkg/f///yViugAAaC0AAADpEP3///8lWroAAGguAAAA6QD9////JVK6AABoLwAAAOnw/P///yVKugAAaDAAAADp4Pz///8lQroAAGgxAAAA6dD8////JTq6AABoMgAAAOnA/P///yUyugAAaDMAAADpsPz///8lKroAAGg0AAAA6aD8////JSK6AABoNQAAAOmQ/P///yUaugAAaDYAAADpgPz///8lEroAAGg3AAAA6XD8////JQq6AABoOAAAAOlg/P///yUCugAAaDkAAADpUPz///8l+rkAAGg6AAAA6UD8////JfK5AABoOwAAAOkw/P///yXquQAAaDwAAADpIPz///8l4rkAAGg9AAAA6RD8////Jdq5AABoPgAAAOkA/P///yXSuQAAaD8AAADp8Pv///8lyrkAAGhAAAAA6eD7////JcK5AABoQQAAAOnQ+////yW6uQAAaEIAAADpwPv///8lsrkAAGhDAAAA6bD7////Jaq5AABoRAAAAOmg+////yWiuQAAaEUAAADpkPv///8lmrkAAGhGAAAA6YD7////JZK5AABoRwAAAOlw+////yWKuQAAaEgAAADpYPv///8lgrkAAGhJAAAA6VD7////JXq5AABoSgAAAOlA+////yVyuQAAaEsAAADpMPv///8larkAAGhMAAAA6SD7////JWK5AABoTQAAAOkQ+////yVauQAAaE4AAADpAPv///8lUrkAAGhPAAAA6fD6////JUq5AABoUAAAAOng+v///yVCuQAAaFEAAADp0Pr///8lOrkAAGhSAAAA6cD6////JTK5AABoUwAAAOmw+v///yUquQAAaFQAAADpoPr///8lIrkAAGhVAAAA6ZD6////JRq5AABoVgAAAOmA+v///yUSuQAAaFcAAADpcPr///8lCrkAAGhYAAAA6WD6////JQK5AABoWQAAAOlQ+v///yX6uAAAaFoAAADpQPr///8l8rgAAGhbAAAA6TD6////Jeq4AABoXAAAAOkg+v///yXiuAAAaF0AAADpEPr///8l2rgAAGheAAAA6QD6////JdK4AABoXwAAAOnw+f///yXKuAAAaGAAAADp4Pn///8lwrgAAGhhAAAA6dD5////Jbq4AABoYgAAAOnA+f///yWyuAAAaGMAAADpsPn///8lqrgAAGhkAAAA6aD5////JaK4AABoZQAAAOmQ+f///yWauAAAaGYAAADpgPn///8lkrgAAGhnAAAA6XD5////JYq4AABoaAAAAOlg+f///yWCuAAAaGkAAADpUPn///8lergAAGhqAAAA6UD5////JXK4AABoawAAAOkw+f///yVquAAAaGwAAADpIPn///8lYrgAAGhtAAAA6RD5////JVq4AABobgAAAOkA+f///yVSuAAAaG8AAADp8Pj///8lSrgAAGhwAAAA6eD4////JUK4AABocQAAAOnQ+P///yU6uAAAaHIAAADpwPj///8lMrgAAGhzAAAA6bD4////JSq4AABodAAAAOmg+P///yUiuAAAaHUAAADpkPj///8lGrgAAGh2AAAA6YD4////JRK4AABodwAAAOlw+P///yUKuAAAaHgAAADpYPj///8lArgAAGh5AAAA6VD4////Jfq3AABoegAAAOlA+P///yXytwAAaHsAAADpMPj///8l6rcAAGh8AAAA6SD4////JeK3AABofQAAAOkQ+P///yXatwAAaH4AAADpAPj///8l0rcAAGh/AAAA6fD3////Jcq3AABogAAAAOng9////yXCtwAAaIEAAADp0Pf///8lurcAAGiCAAAA6cD3////JbK3AABogwAAAOmw9////yWqtwAAaIQAAADpoPf///8lorcAAGiFAAAA6ZD3////JZq3AABohgAAAOmA9////yWStwAAaIcAAADpcPf///8lircAAGiIAAAA6WD3////JYK3AABoiQAAAOlQ9////yV6twAAaIoAAADpQPf///8lcrcAAGiLAAAA6TD3////JWq3AABojAAAAOkg9////yVitwAAaI0AAADpEPf///8lWrcAAGiOAAAA6QD3////JVK3AABojwAAAOnw9v///yVKtwAAaJAAAADp4Pb///8lQrcAAGiRAAAA6dD2////JTq3AABokgAAAOnA9v///yUytwAAaJMAAADpsPb///8lKrcAAGiUAAAA6aD2////JSK3AABolQAAAOmQ9v///yUatwAAaJYAAADpgPb///8lErcAAGiXAAAA6XD2////JQq3AABomAAAAOlg9v///yUCtwAAaJkAAADpUPb///8l+rYAAGiaAAAA6UD2////JfK2AABomwAAAOkw9v///yXqtgAAaJwAAADpIPb///8l4rYAAGidAAAA6RD2////Jdq2AABongAAAOkA9v///yXStgAAaJ8AAADp8PX///8lyrYAAGigAAAA6eD1////JcK2AABooQAAAOnQ9f///yW6tgAAaKIAAADpwPX///8lsrYAAGijAAAA6bD1////Jaq2AABopAAAAOmg9f///yWitgAAaKUAAADpkPX///8lmrYAAGimAAAA6YD1////JZK2AABopwAAAOlw9f///yWKtgAAaKgAAADpYPX///8lgrYAAGipAAAA6VD1////JXq2AABoqgAAAOlA9f///yVytgAAaKsAAADpMPX///8larYAAGisAAAA6SD1////JWK2AABorQAAAOkQ9f///yVatgAAaK4AAADpAPX///8lUrYAAGivAAAA6fD0////JUq2AABosAAAAOng9P///yVCtgAAaLEAAADp0PT///8lOrYAAGiyAAAA6cD0////JTK2AABoswAAAOmw9P///yUqtgAAaLQAAADpoPT///8lIrYAAGi1AAAA6ZD0////JRq2AABotgAAAOmA9P///yUStgAAaLcAAADpcPT///8lCrYAAGi4AAAA6WD0////JQK2AABouQAAAOlQ9P///yX6tQAAaLoAAADpQPT///8l8rUAAGi7AAAA6TD0////Jeq1AABovAAAAOkg9P///yXitQAAaL0AAADpEPT///8l2rUAAGi+AAAA6QD0////JdK1AABovwAAAOnw8////yXKtQAAaMAAAADp4PP///8lwrUAAGjBAAAA6dDz////Jbq1AABowgAAAOnA8////yWytQAAaMMAAADpsPP///8lqrUAAGjEAAAA6aDz////JaK1AABoxQAAAOmQ8////yWatQAAaMYAAADpgPP///8lkrUAAGjHAAAA6XDz////JYq1AABoyAAAAOlg8////yWCtQAAaMkAAADpUPP///8lerUAAGjKAAAA6UDz////JXK1AABoywAAAOkw8////yVqtQAAaMwAAADpIPP///8lYrUAAGjNAAAA6RDz////JVq1AABozgAAAOkA8////yVStQAAaM8AAADp8PL///8lSrUAAGjQAAAA6eDy////JUK1AABo0QAAAOnQ8v///yU6tQAAaNIAAADpwPL///8lMrUAAGjTAAAA6bDy////JSq1AABo1AAAAOmg8v///yUitQAAaNUAAADpkPL///8lGrUAAGjWAAAA6YDy////JRK1AABo1wAAAOlw8v///yUKtQAAaNgAAADpYPL///8lArUAAGjZAAAA6VDy////Jfq0AABo2gAAAOlA8v///yXytAAAaNsAAADpMPL///8l6rQAAGjcAAAA6SDy////JeK0AABo3QAAAOkQ8v///yXatAAAaN4AAADpAPL///8l0rQAAGjfAAAA6fDx////Jcq0AABo4AAAAOng8f///yXCtAAAaOEAAADp0PH///8lurQAAGjiAAAA6cDx////JbK0AABo4wAAAOmw8f///yWqtAAAaOQAAADpoPH///8lorQAAGjlAAAA6ZDx////JZq0AABo5gAAAOmA8f///yWStAAAaOcAAADpcPH///8lirQAAGjoAAAA6WDx////JYK0AABo6QAAAOlQ8f///yV6tAAAaOoAAADpQPH///8lcrQAAGjrAAAA6TDx////JWq0AABo7AAAAOkg8f///yVitAAAaO0AAADpEPH///8lWrQAAGjuAAAA6QDx////JVK0AABo7wAAAOnw8P///yVKtAAAaPAAAADp4PD///8lQrQAAGjxAAAA6dDw////JTq0AABo8gAAAOnA8P///yUytAAAaPMAAADpsPD///8lKrQAAGj0AAAA6aDw////JSK0AABo9QAAAOmQ8P///yUatAAAaPYAAADpgPD///8lErQAAGj3AAAA6XDw////JQq0AABo+AAAAOlg8P///yUCtAAAaPkAAADpUPD///8l+rMAAGj6AAAA6UDw////JfKzAABo+wAAAOkw8P///yXqswAAaPwAAADpIPD///8l4rMAAGj9AAAA6RDw////JdqzAABo/gAAAOkA8P///yXSswAAaP8AAADp8O////8lyrMAAGgAAQAA6eDv////JcKzAABoAQEAAOnQ7////yW6swAAaAIBAADpwO////8lsrMAAGgDAQAA6bDv////JaqzAABoBAEAAOmg7////yWiswAAaAUBAADpkO////8lmrMAAGgGAQAA6YDv////JZKzAABoBwEAAOlw7////yWKswAAaAgBAADpYO////8lgrMAAGgJAQAA6VDv////JXqzAABoCgEAAOlA7////yVyswAAaAsBAADpMO////8larMAAGgMAQAA6SDv////JWKzAABoDQEAAOkQ7////yVaswAAaA4BAADpAO////8lUrMAAGgPAQAA6fDu////JUqzAABoEAEAAOng7v///yVCswAAaBEBAADp0O7///8lOrMAAGgSAQAA6cDu////JTKzAABoEwEAAOmw7v///yUqswAAaBQBAADpoO7///8lIrMAAGgVAQAA6ZDu////JRqzAABoFgEAAOmA7v///yUSswAAaBcBAADpcO7///8lCrMAAGgYAQAA6WDu////JQKzAABoGQEAAOlQ7v///yX6sgAAaBoBAADpQO7///8l8rIAAGgbAQAA6TDu////JeqyAABoHAEAAOkg7v///yXisgAAaB0BAADpEO7///8l2rIAAGgeAQAA6QDu////JdKyAABoHwEAAOnw7f///yXKsgAAaCABAADp4O3///8lwrIAAGghAQAA6dDt////JbqyAABoIgEAAOnA7f///yWysgAAaCMBAADpsO3///8lqrIAAGgkAQAA6aDt////JaKyAABoJQEAAOmQ7f///yWasgAAaCYBAADpgO3///8lkrIAAGgnAQAA6XDt////JYqyAABoKAEAAOlg7f///yWCsgAAaCkBAADpUO3///8lerIAAGgqAQAA6UDt////JXKyAABoKwEAAOkw7f///yVqsgAAaCwBAADpIO3///8lYrIAAGgtAQAA6RDt////JVqyAABoLgEAAOkA7f///yVSsgAAaC8BAADp8Oz///8lSrIAAGgwAQAA6eDs////JUKyAABoMQEAAOnQ7P///yU6sgAAaDIBAADpwOz///8lMrIAAGgzAQAA6bDs////JSqyAABoNAEAAOmg7P///yUisgAAaDUBAADpkOz///8lGrIAAGg2AQAA6YDs////JRKyAABoNwEAAOlw7P///yUKsgAAaDgBAADpYOz///8lArIAAGg5AQAA6VDs////JfqxAABoOgEAAOlA7P///yXysQAAaDsBAADpMOz///8l6rEAAGg8AQAA6SDs////JeKxAABoPQEAAOkQ7P///yXasQAAaD4BAADpAOz///8l0rEAAGg/AQAA6fDr////JcqxAABoQAEAAOng6////yXCsQAAaEEBAADp0Ov///8lurEAAGhCAQAA6cDr////JbKxAABoQwEAAOmw6////yWqsQAAaEQBAADpoOv///8lorEAAGhFAQAA6ZDr////JZqxAABoRgEAAOmA6////yWSsQAAaEcBAADpcOv///8lirEAAGhIAQAA6WDr////JYKxAABoSQEAAOlQ6////yV6sQAAaEoBAADpQOv///8lcrEAAGhLAQAA6TDr////JWqxAABoTAEAAOkg6////yVisQAAaE0BAADpEOv///8lWrEAAGhOAQAA6QDr////JVKxAABoTwEAAOnw6v///yVKsQAAaFABAADp4Or///8lQrEAAGhRAQAA6dDq////JTqxAABoUgEAAOnA6v///yUysQAAaFMBAADpsOr///8lKrEAAGhUAQAA6aDq////JSKxAABoVQEAAOmQ6v///yUasQAAaFYBAADpgOr///8lErEAAGhXAQAA6XDq////JQqxAABoWAEAAOlg6v///yUCsQAAaFkBAADpUOr///8l+rAAAGhaAQAA6UDq////JfKwAABoWwEAAOkw6v///yXqsAAAaFwBAADpIOr///8l4rAAAGhdAQAA6RDq////JdqwAABoXgEAAOkA6v///yXSsAAAaF8BAADp8On///8lyrAAAGhgAQAA6eDp////JcKwAABoYQEAAOnQ6f///yW6sAAAaGIBAADpwOn///8lsrAAAGhjAQAA6bDp////JaqwAABoZAEAAOmg6f///yWisAAAaGUBAADpkOn///8lmrAAAGhmAQAA6YDp////JZKwAABoZwEAAOlw6f///yWKsAAAaGgBAADpYOn///8lgrAAAGhpAQAA6VDp////JXqwAABoagEAAOlA6f///yVysAAAaGsBAADpMOn///8larAAAGhsAQAA6SDp////JWKwAABobQEAAOkQ6f///yVasAAAaG4BAADpAOn///8lUrAAAGhvAQAA6fDo////JUqwAABocAEAAOng6P///yVCsAAAaHEBAADp0Oj///8lOrAAAGhyAQAA6cDo////JTKwAABocwEAAOmw6P///yUqsAAAaHQBAADpoOj///8lIrAAAGh1AQAA6ZDo////JRqwAABodgEAAOmA6P///yUSsAAAaHcBAADpcOj///8lCrAAAGh4AQAA6WDo////JQKwAABoeQEAAOlQ6P///yX6rwAAaHoBAADpQOj///8l8q8AAGh7AQAA6TDo////JeqvAABofAEAAOkg6P///yXirwAAaH0BAADpEOj///8l2q8AAGh+AQAA6QDo////JdKvAABofwEAAOnw5////yXKrwAAaIABAADp4Of///8lwq8AAGiBAQAA6dDn////JbqvAABoggEAAOnA5////yWyrwAAaIMBAADpsOf///8lqq8AAGiEAQAA6aDn////JaKvAABohQEAAOmQ5////yWarwAAaIYBAADpgOf///8lkq8AAGiHAQAA6XDn////JYqvAABoiAEAAOlg5////yWCrwAAaIkBAADpUOf///8leq8AAGiKAQAA6UDn////JXKvAABoiwEAAOkw5////yVqrwAAaIwBAADpIOf///8lYq8AAGiNAQAA6RDn////JVqvAABojgEAAOkA5////yVSrwAAaI8BAADp8Ob///8lSq8AAGiQAQAA6eDm////JUKvAABokQEAAOnQ5v///yU6rwAAaJIBAADpwOb///8lMq8AAGiTAQAA6bDm////JSqvAABolAEAAOmg5v///////////////////////wAAAAAAAAAA//////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADjCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIsGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACpAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6gIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJD/////////kP////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQ/////////5D/////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAWAAAAAAAAAAAAAAAAAAAAIwAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAANAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAhAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAALAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAACAAQAAAAAAAAAAAAAAAAAA1wAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAABcAgAAAAAAAAAAAAAAAAAAIgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAA2AAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAnAQAAAAAAAAAAAAAAAAAArwAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAABSAgAAAAAAAAAAAAAAAAAAJQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAC7AAAAAAAAAAAAAAAAAAAAWAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAABuAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAAAAAAaQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAABDAAAAAAAAAAAAAAAAAAAAOgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAlAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAdAAAAAAAAAAAAAAAAAAAAJgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAACCAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAB/AAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAABLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAACTAAAAAAAAAAAAAAAAAAAASQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAASAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAA1AAAAAAAAAAAAAAAAAAAACwAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAPgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAAAAAAAAWUAAAAAAAAAAAAIAAAAAAAAABQAAAAAAAAAAAAAAAGr4QAAAAAAAAAAAAgAAAAAAAAAIAAAAAAAAAAAAAACE15dBAAAAAAAAAAABAAAAAAAAAAsAAAAAAAAAAAAA6HZIN0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABI/////////0j/////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASP////////9I/////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8BAAAAAAAAAAAAAAAAAAAAAAAAAP////8BAAAAAAAAAAAAAAAAAAAAAAAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAP////8BAAAAAAAAAAAAAAAAAAAAAAAAAP////8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAAAAAAAAAAAA/////wMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8BAAAAAAAAAAAAAAAAAAAAAAAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAP////8BAAAAAAAAAAAAAAAAAAAAAAAAAP////8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAAAAAAAAAAAA/////wEAAAAAAAAAAAAAAAAAAAAAAAAA/////wEAAAAAAAAAAAAAAAAAAAAAAAAA/////wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////AQAAAAAAAAAAAAAAAAAAAAAAAAD/////AQAAAAAAAAAAAAAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAD/////AQAAAAAAAAAAAAAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAD/////AQAAAAAAAAAAAAAAAAAAAAAAAAD/////AQAAAAAAAAAAAAAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAD/////AQAAAAAAAAAAAAAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAD/////AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8BAAAAAAAAAAAAAAAAAAAAAAAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAP////8DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAD/////AQAAAAAAAAAAAAAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAD/////AQAAAAAAAAAAAAAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAD/////AQAAAAAAAAAAAAAAAAAAAAAAAAD/////AQAAAAAAAAAAAAAAAAAAAAAAAAD/////AQAAAAAAAAAAAAAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAD/////AQAAAAAAAAAAAAAAAAAAAAAAAAD/////AQAAAAAAAAAAAAAAAAAAAAAAAAD/////AQAAAAAAAAAAAAAAAAAAAAAAAAD/////AQAAAAAAAAAAAAAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAD/////AQAAAAAAAAAAAAAAAAAAAAAAAAD/////AQAAAAAAAAAAAAAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAD/////AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAD//wAAAQD//xAAAQAAAAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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